From a8acb22f6a969a3db3dd1e4049c84dd8baf99379 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Mon, 7 Jun 2010 02:42:26 +0000 Subject: [PATCH 001/674] Fixed bug #22518, Segfault on loading file * Problem was a pointer not being updated after the tree was changed --- source/blender/editors/space_outliner/outliner.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c index 21da637fd7c..37e05cbc682 100644 --- a/source/blender/editors/space_outliner/outliner.c +++ b/source/blender/editors/space_outliner/outliner.c @@ -439,8 +439,8 @@ static TreeElement *outliner_add_element(SpaceOops *soops, ListBase *lb, void *i static void outliner_add_passes(SpaceOops *soops, TreeElement *tenla, ID *id, SceneRenderLayer *srl) { - TreeStoreElem *tselem= TREESTORE(tenla); - TreeElement *te; + TreeStoreElem *tselem = NULL; + TreeElement *te = NULL; /* log stuff is to convert bitflags (powers of 2) to small integers, * in order to not overflow short tselem->nr */ @@ -450,6 +450,7 @@ static void outliner_add_passes(SpaceOops *soops, TreeElement *tenla, ID *id, Sc te->directdata= &srl->passflag; /* save cpu cycles, but we add the first to invoke an open/close triangle */ + tselem = TREESTORE(tenla); if(tselem->flag & TSE_CLOSED) return; From e27756f0dcce28bd026fc35a66dde85fa491d569 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Mon, 7 Jun 2010 03:02:47 +0000 Subject: [PATCH 002/674] Fix [#22504] Fluid is completely broken in latest 2.5 build (04.06.2010) Silly typo - some other tweaks too. --- source/blender/editors/physics/physics_fluid.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/source/blender/editors/physics/physics_fluid.c b/source/blender/editors/physics/physics_fluid.c index 4d62d823345..23f604d8c12 100644 --- a/source/blender/editors/physics/physics_fluid.c +++ b/source/blender/editors/physics/physics_fluid.c @@ -770,10 +770,10 @@ static void fluidbake_endjob(void *customdata) int runSimulationCallback(void *data, int status, int frame) { FluidBakeJob *fb = (FluidBakeJob *)data; elbeemSimulationSettings *settings = fb->settings; - //printf("elbeem blender cb s%d, f%d, domainid:%d \n", status,frame, settings->domainId ); // DEBUG if (status == FLUIDSIM_CBSTATUS_NEWFRAME) { fluidbake_updatejob(fb, frame / (float)settings->noOfFrames); + //printf("elbeem blender cb s%d, f%d, domainid:%d noOfFrames: %d \n", status,frame, settings->domainId, settings->noOfFrames ); // DEBUG } if (fluidbake_breakjob(fb)) { @@ -794,8 +794,10 @@ static void fluidbake_free_data(FluidAnimChannels *channels, ListBase *fobjects, MEM_freeN(fobjects); fobjects = NULL; - MEM_freeN(fsset); - fsset = NULL; + if (fsset) { + MEM_freeN(fsset); + fsset = NULL; + } if (fb) { MEM_freeN(fb); @@ -835,7 +837,7 @@ int fluidsimBake(bContext *C, ReportList *reports, Object *fsDomain) FluidBakeJob *fb; elbeemSimulationSettings *fsset= MEM_callocN(sizeof(elbeemSimulationSettings), "Fluid sim settings"); - steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), scene, "Fluid Sim", WM_JOB_PROGRESS); + steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), scene, "Fluid Simulation", WM_JOB_PROGRESS); fb= MEM_callocN(sizeof(FluidBakeJob), "fluid bake job"); if(getenv(strEnvName)) { @@ -854,10 +856,10 @@ int fluidsimBake(bContext *C, ReportList *reports, Object *fsDomain) } /* check scene for sane object/modifier settings */ - if (!fluid_validate_scene(reports, scene, fsDomain)) + if (!fluid_validate_scene(reports, scene, fsDomain)) { fluidbake_free_data(channels, fobjects, fsset, fb); return 0; - + } /* these both have to be valid, otherwise we wouldnt be here */ fluidmd = (FluidsimModifierData *)modifiers_findByType(fsDomain, eModifierType_Fluidsim); @@ -1041,7 +1043,7 @@ int fluidsimBake(bContext *C, ReportList *reports, Object *fsDomain) WM_jobs_start(CTX_wm_manager(C), steve); /* ******** free stored animation data ******** */ - fluidbake_free_data(channels, fobjects, fsset, NULL); + fluidbake_free_data(channels, fobjects, NULL, NULL); // elbeemFree(); return 1; From 61f50707a47e6926220da6270f4d4f1eff9a88fb Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Mon, 7 Jun 2010 03:44:54 +0000 Subject: [PATCH 003/674] 'fix' [#22527] Lens angle under View in 'N' panel does not change the camera view Made the UI more clear that the Lens value is for the 3d view space data only. --- release/scripts/ui/space_view3d.py | 1 + source/blender/editors/space_view3d/view3d_view.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index ba2705331a9..e505a260d41 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -1879,6 +1879,7 @@ class VIEW3D_PT_view3d_properties(bpy.types.Panel): scene = context.scene col = layout.column() + col.active = view.region_3d.view_perspective != 'CAMERA' col.prop(view, "lens") col.label(text="Lock to Object:") col.prop(view, "lock_object", text="") diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 54cf6233cf8..84fe927f4ab 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -358,7 +358,7 @@ static int view3d_smoothview_invoke(bContext *C, wmOperator *op, wmEvent *event) v3d->lens = sms->new_lens*step + sms->orig_lens*step_inv; } - ED_region_tag_redraw(CTX_wm_region(C)); + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, v3d); return OPERATOR_FINISHED; } From 3efcdf5d475d52f4a53db2683940ba50e23163b9 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Mon, 7 Jun 2010 03:48:41 +0000 Subject: [PATCH 004/674] Fixed bug #22361, missing graphics when sculpting with pinned shape keys * Problem was that the sculpt PBVH was only used for redrawing if the derived mesh's vertices were equal the base mesh's vertices, which isn't the case when sculpting on shape keys. --- source/blender/blenkernel/intern/cdderivedmesh.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index e15e5bc9b45..cadf5f375b5 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -200,7 +200,7 @@ static struct PBVH *cdDM_getPBVH(Object *ob, DerivedMesh *dm) return NULL; if(ob->sculpt->pbvh) { cddm->pbvh= ob->sculpt->pbvh; - cddm->pbvh_draw = (cddm->mvert == me->mvert); + cddm->pbvh_draw = (cddm->mvert == me->mvert) || ob->sculpt->kb; } /* always build pbvh from original mesh, and only use it for drawing if @@ -208,7 +208,7 @@ static struct PBVH *cdDM_getPBVH(Object *ob, DerivedMesh *dm) that this is actually for, to support a pbvh on a modified mesh */ if(!cddm->pbvh && ob->type == OB_MESH) { cddm->pbvh = BLI_pbvh_new(); - cddm->pbvh_draw = (cddm->mvert == me->mvert); + cddm->pbvh_draw = (cddm->mvert == me->mvert) || ob->sculpt->kb; BLI_pbvh_build_mesh(cddm->pbvh, me->mface, me->mvert, me->totface, me->totvert); } From 876e71844b14d544b99d3c76f7cd2169cd396912 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Mon, 7 Jun 2010 03:57:49 +0000 Subject: [PATCH 005/674] Committing tom's fix that went to his student's branch instead --- source/blender/editors/mesh/editmesh_tools.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index 13656ca1b7e..b907171afb4 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -7113,6 +7113,9 @@ static int tris_convert_to_quads_exec(bContext *C, wmOperator *op) Object *obedit= CTX_data_edit_object(C); EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data); + /* recalc outside so that joining doesn't create a hole */ + EM_recalc_normal_direction(em, 0, 1); + join_triangles(em); DAG_id_flush_update(obedit->data, OB_RECALC_DATA); From 0a7d036f324e9bcf9285ff292890c940d90fbc06 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Mon, 7 Jun 2010 04:48:22 +0000 Subject: [PATCH 006/674] Fixed bug #22293, v2.49b to v2.5alpha2 incompatibility * UV data on multires meshes wasn't getting imported properly. Fixed by separately loading in all "first-level" data from the old multires data type into mesh. Note that an "incorrect" data layers might still be loaded and be active on the mesh, but the correct layers should now also show up in the UV layer selector. --- source/blender/blenkernel/intern/multires.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index 87557ea7f2e..d567e0f0408 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -1286,6 +1286,7 @@ void multires_load_old(Object *ob, Mesh *me) ModifierData *md; MultiresModifierData *mmd; DerivedMesh *dm, *orig; + CustomDataLayer *l; int i; /* Load original level into the mesh */ @@ -1331,6 +1332,14 @@ void multires_load_old(Object *ob, Mesh *me) dm->release(dm); orig->release(orig); + /* Copy the first-level data to the mesh */ + for(i = 0, l = me->mr->vdata.layers; i < me->mr->vdata.totlayer; ++i, ++l) + CustomData_add_layer(&me->vdata, l->type, CD_REFERENCE, l->data, me->totvert); + for(i = 0, l = me->mr->fdata.layers; i < me->mr->fdata.totlayer; ++i, ++l) + CustomData_add_layer(&me->fdata, l->type, CD_REFERENCE, l->data, me->totface); + memset(&me->mr->vdata, 0, sizeof(CustomData)); + memset(&me->mr->fdata, 0, sizeof(CustomData)); + /* Remove the old multires */ multires_free(me->mr); me->mr= NULL; From 8cb33327d820420c14de908b20971c72cd0e9259 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Mon, 7 Jun 2010 05:45:30 +0000 Subject: [PATCH 007/674] Fixed bug #22515, RegionView3D has weird width/height values * Changed the RNA for RegionView3D to not inherit from "Region", which is "ARegion" in DNA. As far as I know, in order to inherit like that the RegionView3D struct would need to start with an ARegion struct? --- source/blender/makesrna/intern/rna_space.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 67126d2157c..b2607a2452b 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -1161,7 +1161,7 @@ static void rna_def_space_view3d(BlenderRNA *brna) /* region */ - srna= RNA_def_struct(brna, "RegionView3D", "Region"); + srna= RNA_def_struct(brna, "RegionView3D", NULL); RNA_def_struct_sdna(srna, "RegionView3D"); RNA_def_struct_ui_text(srna, "3D View Region", "3D View region data"); From 1dd36c243d36a1493234e800e356b140e5b9eb7c Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Mon, 7 Jun 2010 06:50:56 +0000 Subject: [PATCH 008/674] Fix [#22494] Operator panel vanishes --- source/blender/editors/screen/screen_ops.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 6004820e5c8..56abff8c0b2 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -1326,6 +1326,9 @@ static int area_max_regionsize(ScrArea *sa, ARegion *scalear, char edge) * prevents dragging regions into other opposite regions */ for (ar=sa->regionbase.first; ar; ar=ar->next) { + if (ar == scalear) + continue; + if (scalear->alignment == RGN_ALIGN_TOP && ar->alignment == RGN_ALIGN_BOTTOM) dist -= ar->winy; else if (scalear->alignment == RGN_ALIGN_BOTTOM && ar->alignment == RGN_ALIGN_TOP) @@ -1334,8 +1337,15 @@ static int area_max_regionsize(ScrArea *sa, ARegion *scalear, char edge) dist -= ar->winx; else if (scalear->alignment == RGN_ALIGN_RIGHT && ar->alignment == RGN_ALIGN_LEFT) dist -= ar->winx; + + /* case of regions in regions, like operator properties panel */ + /* these can sit on top of other regions such as headers, so account for this */ + else if (edge == 'b' && scalear->alignment & RGN_ALIGN_TOP && ar->alignment == RGN_ALIGN_TOP && ar->regiontype == RGN_TYPE_HEADER) + dist -= ar->winy; + else if (edge == 't' && scalear->alignment & RGN_ALIGN_BOTTOM && ar->alignment == RGN_ALIGN_BOTTOM && ar->regiontype == RGN_TYPE_HEADER) + dist -= ar->winy; } - + return dist; } From d57ebc4ecc3b2936d081e439230d865ce6da2c05 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Mon, 7 Jun 2010 07:47:27 +0000 Subject: [PATCH 009/674] Fix [#22413] drag & drop images don't work untile you move the object --- 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 95c121e7a1f..dc81dc39488 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1658,7 +1658,7 @@ void wm_event_do_handlers(bContext *C) /* does polls for drop regions and checks uibuts */ /* need to be here to make sure region context is true */ - if(event->type==MOUSEMOVE) { + if(ELEM(event->type, MOUSEMOVE, EVT_DROP)) { wm_region_mouse_co(C, event); wm_drags_check_ops(C, event); } From ab0d12a3b6d3356ad44bca57cea23c6336fb45a4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 7 Jun 2010 14:28:37 +0000 Subject: [PATCH 010/674] minor changes to cmake, main noticable change is to disable RULE_MESSAGES which gives less output with makefiles (easier to spot warnings). --- CMakeLists.txt | 83 +++++++++++++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 35 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ab525febc57..416d4648d69 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,6 +43,10 @@ Remove the CMakeCache.txt file and try again from another folder, e.g.: ENDIF(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) CMAKE_MINIMUM_REQUIRED(VERSION 2.6) + +# quiet output for Makefiles, 'make -s' helps too +SET_PROPERTY(GLOBAL PROPERTY RULE_MESSAGES OFF) + PROJECT(Blender) #----------------------------------------------------------------------------- @@ -144,7 +148,6 @@ INCLUDE(CMake/macros.cmake) IF(UNIX AND NOT APPLE) - IF(WITH_OPENAL) FIND_PACKAGE(OpenAL) IF(NOT OPENAL_FOUND) @@ -166,20 +169,23 @@ IF(UNIX AND NOT APPLE) SET(SNDFILE_LIBPATH ${SNDFILE}/lib) ENDIF(WITH_SNDFILE) - FIND_LIBRARY(INTL_LIBRARY - NAMES intl - PATHS - /sw/lib - ) - FIND_LIBRARY(ICONV_LIBRARY - NAMES iconv - PATHS - /sw/lib - ) - - IF(INTL_LIBRARY AND ICONV_LIBRARY) - SET(GETTEXT_LIB ${INTL_LIBRARY} ${ICONV_LIBRARY}) - ENDIF(INTL_LIBRARY AND ICONV_LIBRARY) + IF(WITH_INTERNATIONAL) + FIND_LIBRARY(INTL_LIBRARY + NAMES intl + PATHS + /sw/lib + ) + + FIND_LIBRARY(ICONV_LIBRARY + NAMES iconv + PATHS + /sw/lib + ) + + IF(INTL_LIBRARY AND ICONV_LIBRARY) + SET(GETTEXT_LIB ${INTL_LIBRARY} ${ICONV_LIBRARY}) + ENDIF(INTL_LIBRARY AND ICONV_LIBRARY) + ENDIF(WITH_INTERNATIONAL) FIND_PACKAGE(Freetype) # UNSET(FREETYPE_INCLUDE_DIRS CACHE) # cant use @@ -323,10 +329,12 @@ IF(WIN32) ADD_DEFINITIONS(-DWIN32) - SET(ICONV ${LIBDIR}/iconv) - SET(ICONV_INC ${ICONV}/include) - SET(ICONV_LIB iconv) - SET(ICONV_LIBPATH ${ICONV}/lib) + IF(WITH_INTERNATIONAL) + SET(ICONV ${LIBDIR}/iconv) + SET(ICONV_INC ${ICONV}/include) + SET(ICONV_LIB iconv) + SET(ICONV_LIBPATH ${ICONV}/lib) + ENDIF(WITH_INTERNATIONAL) SET(LIBSAMPLERATE ${LIBDIR}/samplerate) SET(LIBSAMPLERATE_INC ${LIBSAMPLERATE}/include) @@ -404,14 +412,16 @@ IF(WIN32) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /openmp ") ENDIF(WITH_OPENMP) - SET(GETTEXT ${LIBDIR}/gettext) - SET(GETTEXT_INC ${GETTEXT}/include) - SET(GETTEXT_LIBPATH ${GETTEXT}/lib) - IF(CMAKE_CL_64) - SET(GETTEXT_LIB gettext) - ELSE(CMAKE_CL_64) - SET(GETTEXT_LIB gnu_gettext) - ENDIF(CMAKE_CL_64) + IF(WITH_INTERNATIONAL) + SET(GETTEXT ${LIBDIR}/gettext) + SET(GETTEXT_INC ${GETTEXT}/include) + SET(GETTEXT_LIBPATH ${GETTEXT}/lib) + IF(CMAKE_CL_64) + SET(GETTEXT_LIB gettext) + ELSE(CMAKE_CL_64) + SET(GETTEXT_LIB gnu_gettext) + ENDIF(CMAKE_CL_64) + ENDIF(WITH_INTERNATIONAL) IF(CMAKE_CL_64) SET(PNG_LIBRARIES libpng) @@ -526,10 +536,12 @@ IF(WIN32) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp") ENDIF(WITH_OPENMP) - SET(GETTEXT ${LIBDIR}/gcc/gettext) - SET(GETTEXT_INC ${GETTEXT}/include) - SET(GETTEXT_LIBPATH ${GETTEXT}/lib) - SET(GETTEXT_LIB intl) + IF(WITH_INTERNATIONAL) + SET(GETTEXT ${LIBDIR}/gcc/gettext) + SET(GETTEXT_INC ${GETTEXT}/include) + SET(GETTEXT_LIBPATH ${GETTEXT}/lib) + SET(GETTEXT_LIB intl) + ENDIF(WITH_INTERNATIONAL) SET(JPEG_LIBRARY jpeg) SET(PNG_LIBRARIES png) @@ -818,10 +830,11 @@ ENDIF(WITH_BUILDINFO) #----------------------------------------------------------------------------- # Common. - -set(OPENJPEG ${CMAKE_SOURCE_DIR}/extern/libopenjpeg) -set(OPENJPEG_INC ${OPENJPEG}) -set(OPENJPEG_LIb extern_libopenjpeg) +IF(WITH_OPENJPEG) + set(OPENJPEG ${CMAKE_SOURCE_DIR}/extern/libopenjpeg) + set(OPENJPEG_INC ${OPENJPEG}) + set(OPENJPEG_LIb extern_libopenjpeg) +ENDIF(WITH_OPENJPEG) #----------------------------------------------------------------------------- # Blender WebPlugin From ae8bba216596d58bc72f85b7c3bf5b61a9c87e8a Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Mon, 7 Jun 2010 14:38:59 +0000 Subject: [PATCH 011/674] Fix #22331: mesh deform modifier not caculate all shape keys when using 'apply shape keys in edit mode' This modifier used undeformed coordinates from emDM. Added method getVertCos to emDM, so meshdeform now could use it to get deformed coordinates form any derived mesh. --- source/blender/blenkernel/intern/DerivedMesh.c | 17 +++++++++++++++++ .../blender/modifiers/intern/MOD_meshdeform.c | 11 +++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 9d649edd81a..339326f75d5 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -1077,6 +1077,21 @@ static int emDM_getNumFaces(DerivedMesh *dm) return BLI_countlist(&emdm->em->faces); } +static void emDM_getVertCos(DerivedMesh *dm, float (*cos_r)[3]) +{ + EditMeshDerivedMesh *emdm= (EditMeshDerivedMesh*) dm; + EditVert *eve; + int i; + + for (i=0,eve= emdm->em->verts.first; eve; i++,eve=eve->next) { + if (emdm->vertexCos) { + copy_v3_v3(cos_r[i], emdm->vertexCos[i]); + } else { + copy_v3_v3(cos_r[i], eve->co); + } + } +} + static void emDM_getVert(DerivedMesh *dm, int index, MVert *vert_r) { EditVert *ev = ((EditMeshDerivedMesh *)dm)->em->verts.first; @@ -1309,6 +1324,8 @@ static DerivedMesh *getEditMeshDerivedMesh(EditMesh *em, Object *ob, emdm->dm.getNumEdges = emDM_getNumEdges; emdm->dm.getNumFaces = emDM_getNumFaces; + emdm->dm.getVertCos = emDM_getVertCos; + emdm->dm.getVert = emDM_getVert; emdm->dm.getEdge = emDM_getEdge; emdm->dm.getFace = emDM_getFace; diff --git a/source/blender/modifiers/intern/MOD_meshdeform.c b/source/blender/modifiers/intern/MOD_meshdeform.c index 83fa544690b..623f4a5ddeb 100644 --- a/source/blender/modifiers/intern/MOD_meshdeform.c +++ b/source/blender/modifiers/intern/MOD_meshdeform.c @@ -180,13 +180,13 @@ static void meshdeformModifier_do( DerivedMesh *tmpdm, *cagedm; MDeformVert *dvert = NULL; MDeformWeight *dw; - MVert *cagemvert; MDefInfluence *influences; int *offsets; float imat[4][4], cagemat[4][4], iobmat[4][4], icagemat[3][3], cmat[4][4]; float weight, totweight, fac, co[3], (*dco)[3], (*bindcagecos)[3]; int a, b, totvert, totcagevert, defgrp_index; - + float (*cagecos)[3]; + if(!mmd->object || (!mmd->bindcagecos && !mmd->bindfunc)) return; @@ -251,8 +251,10 @@ static void meshdeformModifier_do( return; } + cagecos= MEM_callocN(sizeof(*cagecos)*totcagevert, "meshdeformModifier vertCos"); + /* setup deformation data */ - cagemvert= cagedm->getVertArray(cagedm); + cagedm->getVertCos(cagedm, cagecos); influences= mmd->bindinfluences; offsets= mmd->bindoffsets; bindcagecos= (float(*)[3])mmd->bindcagecos; @@ -260,7 +262,7 @@ static void meshdeformModifier_do( dco= MEM_callocN(sizeof(*dco)*totcagevert, "MDefDco"); for(a=0; abindmat, co); @@ -331,6 +333,7 @@ static void meshdeformModifier_do( /* release cage derivedmesh */ MEM_freeN(dco); + MEM_freeN(cagecos); cagedm->release(cagedm); } From 180a9f1a81ba0ba115973ee0c10fb3a290d2a687 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 7 Jun 2010 14:54:42 +0000 Subject: [PATCH 012/674] fix for crash with the job system progress bar on load, matt you may want to check if this case should be happening at all. --- source/blender/windowmanager/intern/wm_jobs.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_jobs.c b/source/blender/windowmanager/intern/wm_jobs.c index e7df703ba79..c3ad8f96cb0 100644 --- a/source/blender/windowmanager/intern/wm_jobs.c +++ b/source/blender/windowmanager/intern/wm_jobs.c @@ -449,12 +449,15 @@ void wm_jobs_timer(const bContext *C, wmWindowManager *wm, wmTimer *wt) } } - /* if there are running jobs, set the global progress indicator */ - if (jobs_progress > 0) { - float progress = total_progress / (float)jobs_progress; - WM_progress_set(wm->winactive, progress); - } else { - WM_progress_clear(wm->winactive); + /* on file load 'winactive' can be NULL, possibly it should not happen but for now do a NULL check - campbell */ + if(wm->winactive) { + /* if there are running jobs, set the global progress indicator */ + if (jobs_progress > 0) { + float progress = total_progress / (float)jobs_progress; + WM_progress_set(wm->winactive, progress); + } else { + WM_progress_clear(wm->winactive); + } } } From c13c3d00816677692cdccebe440aadd7f1cde4c8 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Mon, 7 Jun 2010 15:28:17 +0000 Subject: [PATCH 013/674] Smoke UI: * Greying out for Smoke High Resolution Panel. * Code cleaning, removed some unnecessary declarations. --- .../scripts/ui/properties_physics_smoke.py | 41 ++++++++----------- source/blender/makesrna/intern/rna_modifier.c | 6 +-- 2 files changed, 21 insertions(+), 26 deletions(-) diff --git a/release/scripts/ui/properties_physics_smoke.py b/release/scripts/ui/properties_physics_smoke.py index f362588cd98..ec9f8fad77e 100644 --- a/release/scripts/ui/properties_physics_smoke.py +++ b/release/scripts/ui/properties_physics_smoke.py @@ -70,8 +70,7 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel): else: layout.prop(md, "smoke_type", text="") - if md.smoke_type == 'TYPE_DOMAIN': - + if md.smoke_type == 'DOMAIN': domain = md.domain_settings split = layout.split() @@ -93,8 +92,7 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel): sub.prop(domain, "dissolve_speed", text="Time") sub.prop(domain, "dissolve_smoke_log", text="Slow") - elif md.smoke_type == 'TYPE_FLOW': - + elif md.smoke_type == 'FLOW': flow = md.flow_settings split = layout.split() @@ -114,7 +112,7 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel): col.prop(flow, "temperature") col.prop(flow, "density") - #elif md.smoke_type == 'TYPE_COLL': + #elif md.smoke_type == 'COLLISION': # layout.separator() @@ -124,7 +122,7 @@ class PHYSICS_PT_smoke_groups(PhysicButtonsPanel): def poll(self, context): md = context.smoke - return md and (md.smoke_type == 'TYPE_DOMAIN') + return md and (md.smoke_type == 'DOMAIN') def draw(self, context): layout = self.layout @@ -153,19 +151,17 @@ class PHYSICS_PT_smoke_cache(PhysicButtonsPanel): def poll(self, context): md = context.smoke - return md and (md.smoke_type == 'TYPE_DOMAIN') + return md and (md.smoke_type == 'DOMAIN') def draw(self, context): layout = self.layout - domain = context.smoke.domain_settings - - layout.label(text="Compression:") - layout.prop(domain, "smoke_cache_comp", expand=True) - md = context.smoke.domain_settings cache = md.point_cache_low + layout.label(text="Compression:") + layout.prop(md, "smoke_cache_comp", expand=True) + point_cache_ui(self, context, cache, (cache.baked is False), 'SMOKE') @@ -175,18 +171,20 @@ class PHYSICS_PT_smoke_highres(PhysicButtonsPanel): def poll(self, context): md = context.smoke - return md and (md.smoke_type == 'TYPE_DOMAIN') + return md and (md.smoke_type == 'DOMAIN') def draw_header(self, context): - high = context.smoke.domain_settings + md = context.smoke.domain_settings - self.layout.prop(high, "highres", text="") + self.layout.prop(md, "highres", text="") def draw(self, context): layout = self.layout md = context.smoke.domain_settings wide_ui = context.region.width > narrowui + + layout.active = md.highres split = layout.split() @@ -208,20 +206,17 @@ class PHYSICS_PT_smoke_cache_highres(PhysicButtonsPanel): def poll(self, context): md = context.smoke - return md and (md.smoke_type == 'TYPE_DOMAIN') and md.domain_settings.highres + return md and (md.smoke_type == 'DOMAIN') and md.domain_settings.highres def draw(self, context): layout = self.layout - domain = context.smoke.domain_settings - - layout.label(text="Compression:") - layout.prop(domain, "smoke_cache_high_comp", expand=True) - - md = context.smoke.domain_settings cache = md.point_cache_high + layout.label(text="Compression:") + layout.prop(md, "smoke_cache_high_comp", expand=True) + point_cache_ui(self, context, cache, (cache.baked is False), 'SMOKE') @@ -231,7 +226,7 @@ class PHYSICS_PT_smoke_field_weights(PhysicButtonsPanel): def poll(self, context): smoke = context.smoke - return (smoke and smoke.smoke_type == 'TYPE_DOMAIN') + return (smoke and smoke.smoke_type == 'DOMAIN') def draw(self, context): domain = context.smoke.domain_settings diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index 32eb62567d0..c30cbadaf2a 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -1725,9 +1725,9 @@ static void rna_def_modifier_smoke(BlenderRNA *brna) static EnumPropertyItem prop_smoke_type_items[] = { {0, "NONE", 0, "None", ""}, - {MOD_SMOKE_TYPE_DOMAIN, "TYPE_DOMAIN", 0, "Domain", ""}, - {MOD_SMOKE_TYPE_FLOW, "TYPE_FLOW", 0, "Flow", "Inflow/Outflow"}, - {MOD_SMOKE_TYPE_COLL, "TYPE_COLL", 0, "Collision", ""}, + {MOD_SMOKE_TYPE_DOMAIN, "DOMAIN", 0, "Domain", ""}, + {MOD_SMOKE_TYPE_FLOW, "FLOW", 0, "Flow", "Inflow/Outflow"}, + {MOD_SMOKE_TYPE_COLL, "COLLISION", 0, "Collision", ""}, {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "SmokeModifier", "Modifier"); From 1a3129c40a766ced58279754d3c238da5d60711c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 7 Jun 2010 15:37:59 +0000 Subject: [PATCH 014/674] man page from debian updated for 2.5, better maintain here for other linux distros. --- doc/blender.1 | 232 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 232 insertions(+) create mode 100644 doc/blender.1 diff --git a/doc/blender.1 b/doc/blender.1 new file mode 100644 index 00000000000..68f00d8eb9b --- /dev/null +++ b/doc/blender.1 @@ -0,0 +1,232 @@ +.TH "BLENDER" "1" "June 06, 2010" "Blender 2\&.5\&.2" +.SH NAME +blender \- a 3D modelling and rendering package +.SH SYNOPSIS +.B blender [args ...] [file] [args ...] + + +.br +.SH DESCRIPTION +.PP +.B blender +is a 3D modelling and rendering package. It is the in-house software of a high quality animation studio, Blender has proven to be an extremely fast and versatile design instrument. The software has a personal touch, offering a unique approach to the world of Three Dimensions. + +Use Blender to create TV commercials, to make technical visualizations, business graphics, to do some morphing, or design user interfaces. You can easy build and manage complex environments. The renderer is versatile and extremely fast. All basic animation principles (curves & keys) are well implemented. + +http://www.blender.org +.SH OPTIONS +.SS "Render options:" + +.TP +.B \-b, \-\-background +Load in background (often used for UI-less rendering) + +.TP +.B \-a, \-\-render-anim +Render frames from start to end (inclusive) + +.TP +.B \-S, \-\-scene +Set the active scene for rendering + +.TP +.B \-f, \-\-render-frame +Render frame and save it + +.TP +.B \-s, \-\-frame-start +Set start to frame (use before the \-a argument) + +.TP +.B \-e, \-\-frame-end +Set end to frame (use before the \-a argument) + +.TP +.B \-j, \-\-frame-jump +Set number of frames to step forward after each rendered frame + +.TP +.B \-o, --render-output +Set the render path and file name. +.IP +Use // at the start of the path to render relative to the blend file. +.IP +The # characters are replaced by the frame number, and used to define zero padding. +.IP + ani_##_test.png becomes ani_01_test.png + test-######.png becomes test-000001.png + When the filename does not contain #, The suffix #### is added to the filename +.IP +The frame number will be added at the end of the filename. + eg: blender -b foobar.blend -o //render_ -F PNG -x 1 -a + //render_ becomes //render_####, writing frames as //render_0001.png// + +.HP +.B \-E, \-\-engine +Specify the render engine +use \fI\-E help\fR to list available engines + +.SS "Format options:" + +.TP +.B \-F, \-\-render-format +Set the render format, valid options are... +.IP +TGA IRIS JPEG MOVIE IRIZ RAWTGA +AVIRAW AVIJPEG PNG BMP FRAMESERVER +.IP +(formats that can be compiled into blender, not available on all systems) +.IP +HDR TIFF EXR MULTILAYER MPEG AVICODEC QUICKTIME CINEON DPX DDS + +.TP +.B \-x, \-\-use-extension +Set option to add the file extension to the end of the file + +.TP +.B \-t, \-\-threads +Use amount of for rendering in background +[1-BLENDER_MAX_THREADS], 0 for systems processor count. + +.SS "Animation options:" + +.TP +.B \-a +Playback , only operates this way when not running in background. +.IP +\-p \-\- Open with lower left corner at , +.br +\-m \-\- Read from disk (Don't buffer) +.br +\-f \-\- Specify FPS to start with +.br +\-j \-\- Set frame step to + +.SS "Window options:" + +.TP +.B \-w, \-\-window-border +Force opening with borders (default) + +.TP +.B \-W, \-\-window-borderless +Force opening with without borders + +.TP +.B \-p, --window-geometry +Open with lower left corner at , and width and height , + +.SS "Game Engine specific options:" +.TP +.B \-g fixedtime +Run on 50 hertz without dropping frames +.TP +.B \-g vertexarrays +Use Vertex Arrays for rendering (usually faster) +.TP +.B \-g nomipmap +No Texture Mipmapping +.TP +.B \-g linearmipmap +Linear Texture Mipmapping instead of Nearest (default) +.SS "Misc options:" +.TP +.B \-d, \-\-debug +Turn debugging on +.IP +Prints every operator call and their arguments +.br +Disables mouse grab (to interact with a debugger in some cases) +.br +Keeps python sys.stdin rather then setting it to None + +.TP +.B \--debug-fpe +Enable floating point exceptions + +.TP +.B \-noaudio +Disable audio on systems that support audio + +.TP +.B \-nojoystick +Disable joystick support + +.TP +.B \-noglsl +Disable GLSL shading + +.TP +.B \-y, \-\-enable-autoexec +Enable automatic python script execution (default) + +.TP +.B \-Y, \-\-disable-autoexec +Disable automatic python script execution (pydrivers, pyconstraints, pynodes) + +.TP +.B \-P +Run the given Python script (filename or Blender Text) + +.TP +.B \-\-python-console +Run blender with an interactive console + +.TP +.B \-v, \-\-version +Print Blender version and exit + +.TP +.B \-\- +Ends option processing, following arguments passed unchanged. Access via python's sys.argv + +.TP +.B \-h, \-\-help +Show a summary of options. + +.SH "ENVIRONMENT VARIABLES" + +.PP +\fIHOME\fR +.RS 4 +Store files such as .blender/ .B.blend .Bfs .Blog here. +.RE + +.PP +\fIBLENDERPATH\fR +.RS 4 +System directory to use for data files and scripts. +For this build of blender the default BLENDERPATH is... +"/usr/share/blender" +setting the $BLENDERPATH will override this +.RE + +.PP +\fITMP\fR or \fITMPDIR\fR +.RS 4 +Store temporary files here. +.RE + +.PP +\fISDL_AUDIODRIVER\fR +.RS 4 +LibSDL audio driver - alsa, esd, alsa, dma. +.RE + +.PP +\fIPYTHONHOME\fR +.RS 4 +Path to the python directory, eg. /usr/lib/python. +.RE + +.br +.SH SEE ALSO +.B yafaray(1) + +.br +.SH AUTHORS +This manpage was written for a Debian GNU/Linux system by Daniel Mester + and updated by Cyril Brulebois + and Dan Eicher . + + From f8346b1bcd28822c16fff0f25cfd00ae32ffe486 Mon Sep 17 00:00:00 2001 From: Diego Borghetti Date: Mon, 7 Jun 2010 16:24:24 +0000 Subject: [PATCH 015/674] Fix bug #22317 View reamins in camera's view after camera is deleted. The object in the view3d don't get update, so point to the delete camera and make Blender crash when you go into fly mode. --- source/blender/editors/object/object_add.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 73fbc8e2795..e0e0bb06652 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -826,6 +826,8 @@ void ED_base_object_free_and_unlink(Scene *scene, Base *base) static int object_delete_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); + View3D *v3d = CTX_wm_view3d(C); + RegionView3D *rv3d= CTX_wm_region_view3d(C); int islamp= 0; if(CTX_data_edit_object(C)) @@ -834,14 +836,24 @@ static int object_delete_exec(bContext *C, wmOperator *op) CTX_DATA_BEGIN(C, Base*, base, selected_bases) { if(base->object->type==OB_LAMP) islamp= 1; - + else if (base->object->type == OB_CAMERA) { + /* If we don't reset this, Blender crash + * in fly mode because still have the + * old object here!. + * See Bug #22317 + */ + if (v3d && rv3d && rv3d->persp == RV3D_CAMOB && base->object == v3d->camera) { + rv3d->persp= RV3D_PERSP; + v3d->camera= NULL; + } + } /* remove from current scene only */ ED_base_object_free_and_unlink(scene, base); } CTX_DATA_END; if(islamp) reshadeall_displist(scene); /* only frees displist */ - + DAG_scene_sort(scene); DAG_ids_flush_update(0); From e012fc8107e11d3bdbdc395ad399d4145cc27639 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Mon, 7 Jun 2010 17:38:52 +0000 Subject: [PATCH 016/674] Fix #22487: Shrinkwrap ignores preceding deform modifiers ShrinkwrapCalcData->vert contains verts from derivedMesh this coordinated are deformed by vertexCos only for normal projection (to get correct normals) for other cases this field contains undeformed dm's coordinates and vertexCos should be used --- source/blender/blenkernel/intern/shrinkwrap.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/source/blender/blenkernel/intern/shrinkwrap.c b/source/blender/blenkernel/intern/shrinkwrap.c index 574ec848291..bddfeb049a8 100644 --- a/source/blender/blenkernel/intern/shrinkwrap.c +++ b/source/blender/blenkernel/intern/shrinkwrap.c @@ -355,11 +355,16 @@ static void shrinkwrap_calc_normal_projection(ShrinkwrapCalcData *calc, struct S if(calc->vert) { - VECCOPY(tmp_co, calc->vert[i].co); - if(calc->smd->projAxis == MOD_SHRINKWRAP_PROJECT_OVER_NORMAL) + /* calc->vert contains verts from derivedMesh */ + /* this coordinated are deformed by vertexCos only for normal projection (to get correct normals) */ + /* for other cases calc->varts contains undeformed coordinates and vertexCos should be used */ + if(calc->smd->projAxis == MOD_SHRINKWRAP_PROJECT_OVER_NORMAL) { + VECCOPY(tmp_co, calc->vert[i].co); normal_short_to_float_v3(tmp_no, calc->vert[i].no); - else + } else { + VECCOPY(tmp_co, co); VECCOPY(tmp_no, proj_axis); + } } else { From 6a8bff9570ca3325e286694586f77d8905e47ea7 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Mon, 7 Jun 2010 18:20:59 +0000 Subject: [PATCH 017/674] Fixed bug #21540, Array Modifier Capping refresh on open problem. * Problem was that the modifier directly accessed ob->derivedFinal, but that wasn't being built if the object was on a different layer. Changed to mesh_get_derived_final. Notes: * I fixed this for array and boolean, reported in the bug; there might be other places affected by this mistake. It's an easy fix if so. * The datamask being passed in isn't especially correct. Possibly we should be accessing the datamask being used to build the array modifier DerivedMesh? Anyway, at least this will get the mesh to show up in the viewport. --- source/blender/modifiers/intern/MOD_array.c | 4 ++-- source/blender/modifiers/intern/MOD_boolean.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/blender/modifiers/intern/MOD_array.c b/source/blender/modifiers/intern/MOD_array.c index 505fcdc43d5..24615906e19 100644 --- a/source/blender/modifiers/intern/MOD_array.c +++ b/source/blender/modifiers/intern/MOD_array.c @@ -211,9 +211,9 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd, /* need to avoid infinite recursion here */ if(amd->start_cap && amd->start_cap != ob) - start_cap = amd->start_cap->derivedFinal; + start_cap = mesh_get_derived_final(scene, amd->start_cap, 0); if(amd->end_cap && amd->end_cap != ob) - end_cap = amd->end_cap->derivedFinal; + end_cap = mesh_get_derived_final(scene, amd->end_cap, 0); unit_m4(offset); diff --git a/source/blender/modifiers/intern/MOD_boolean.c b/source/blender/modifiers/intern/MOD_boolean.c index 116f5ab22d2..c23dcc5ce0a 100644 --- a/source/blender/modifiers/intern/MOD_boolean.c +++ b/source/blender/modifiers/intern/MOD_boolean.c @@ -85,7 +85,7 @@ static DerivedMesh *applyModifier( int useRenderParams, int isFinalCalc) { BooleanModifierData *bmd = (BooleanModifierData*) md; - DerivedMesh *dm = bmd->object->derivedFinal; + DerivedMesh *dm = mesh_get_derived_final(md->scene, bmd->object, 0); /* we do a quick sanity check */ if(dm && (derivedData->getNumFaces(derivedData) > 3) From 52caf71ee2febf9c697fe66ce36fb9a9597c9a44 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Mon, 7 Jun 2010 18:50:19 +0000 Subject: [PATCH 018/674] Bugfix: copying a newly-created vertex group caused a crash. --- source/blender/editors/object/object_vgroup.c | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c index 47390c19742..2235bdd8f2a 100644 --- a/source/blender/editors/object/object_vgroup.c +++ b/source/blender/editors/object/object_vgroup.c @@ -129,17 +129,8 @@ int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_tot) case ID_ME: { Mesh *me = (Mesh *)id; - *dvert_tot= me->totvert; - if (!me->edit_mesh) { - int i; - - *dvert_arr= MEM_mallocN(sizeof(void*)*me->totvert, "vgroup parray from me"); - - for (i=0; itotvert; i++) { - (*dvert_arr)[i] = me->dvert + i; - } - } else { + if(me->edit_mesh) { EditMesh *em = me->edit_mesh; EditVert *eve; int i; @@ -161,8 +152,20 @@ int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_tot) (*dvert_arr)[i] = CustomData_em_get(&em->vdata, eve->data, CD_MDEFORMVERT); } + return 1; + } + else if(me->dvert) { + int i; + + *dvert_tot= me->totvert; + *dvert_arr= MEM_mallocN(sizeof(void*)*me->totvert, "vgroup parray from me"); + + for (i=0; itotvert; i++) { + (*dvert_arr)[i] = me->dvert + i; + } + + return 1; } - return 1; } case ID_LT: { From d9690e92957beefb8c233313a040e54e06486b30 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Mon, 7 Jun 2010 19:16:56 +0000 Subject: [PATCH 019/674] Reverting commit 21540, incorrect bugfix. --- source/blender/modifiers/intern/MOD_array.c | 4 ++-- source/blender/modifiers/intern/MOD_boolean.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/blender/modifiers/intern/MOD_array.c b/source/blender/modifiers/intern/MOD_array.c index 24615906e19..505fcdc43d5 100644 --- a/source/blender/modifiers/intern/MOD_array.c +++ b/source/blender/modifiers/intern/MOD_array.c @@ -211,9 +211,9 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd, /* need to avoid infinite recursion here */ if(amd->start_cap && amd->start_cap != ob) - start_cap = mesh_get_derived_final(scene, amd->start_cap, 0); + start_cap = amd->start_cap->derivedFinal; if(amd->end_cap && amd->end_cap != ob) - end_cap = mesh_get_derived_final(scene, amd->end_cap, 0); + end_cap = amd->end_cap->derivedFinal; unit_m4(offset); diff --git a/source/blender/modifiers/intern/MOD_boolean.c b/source/blender/modifiers/intern/MOD_boolean.c index c23dcc5ce0a..116f5ab22d2 100644 --- a/source/blender/modifiers/intern/MOD_boolean.c +++ b/source/blender/modifiers/intern/MOD_boolean.c @@ -85,7 +85,7 @@ static DerivedMesh *applyModifier( int useRenderParams, int isFinalCalc) { BooleanModifierData *bmd = (BooleanModifierData*) md; - DerivedMesh *dm = mesh_get_derived_final(md->scene, bmd->object, 0); + DerivedMesh *dm = bmd->object->derivedFinal; /* we do a quick sanity check */ if(dm && (derivedData->getNumFaces(derivedData) > 3) From 416e82b022114d37cac94f4ac136ebb06a239b01 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 7 Jun 2010 20:03:40 +0000 Subject: [PATCH 020/674] node toggle preview and hidden socket key shortcuts (Ctrl+H, Shift+H) --- release/scripts/ui/space_node.py | 6 +- source/blender/editors/space_node/node_edit.c | 133 ++++++++++++++---- .../blender/editors/space_node/node_intern.h | 8 +- source/blender/editors/space_node/node_ops.c | 12 +- .../blender/editors/space_node/node_state.c | 17 ++- 5 files changed, 137 insertions(+), 39 deletions(-) diff --git a/release/scripts/ui/space_node.py b/release/scripts/ui/space_node.py index db641a48e38..365835009ba 100644 --- a/release/scripts/ui/space_node.py +++ b/release/scripts/ui/space_node.py @@ -139,8 +139,10 @@ class NODE_MT_node(bpy.types.Menu): layout.separator() - layout.operator("node.hide") - layout.operator("node.mute") + layout.operator("node.hide_toggle") + layout.operator("node.mute_toggle") + layout.operator("node.preview_toggle") + layout.operator("node.hide_socket_toggle") # XXX # layout.operator("node.rename") diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index ff93f701805..befb37a2432 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -1988,49 +1988,132 @@ void NODE_OT_group_make(wmOperatorType *ot) /* ****************** Hide operator *********************** */ +static void node_flag_toggle_exec(SpaceNode *snode, int toggle_flag) +{ + int tot_eq= 0, tot_neq= 0; + bNode *node; + + for(node= snode->edittree->nodes.first; node; node= node->next) { + if(node->flag & SELECT) { + if(node->flag & toggle_flag) + tot_eq++; + else + tot_neq++; + } + } + for(node= snode->edittree->nodes.first; node; node= node->next) { + if(node->flag & SELECT) { + if( (tot_eq && tot_neq) || tot_eq==0) + node->flag |= toggle_flag; + else + node->flag &= ~toggle_flag; + } + } +} + static int node_hide_exec(bContext *C, wmOperator *op) { SpaceNode *snode= CTX_wm_space_node(C); - bNode *node; - int nothidden=0, ishidden=0; /* sanity checking (poll callback checks this already) */ if((snode == NULL) || (snode->edittree == NULL)) return OPERATOR_CANCELLED; - for(node= snode->edittree->nodes.first; node; node= node->next) { - if(node->flag & SELECT) { - if(node->flag & NODE_HIDDEN) - ishidden++; - else - nothidden++; - } - } - for(node= snode->edittree->nodes.first; node; node= node->next) { - if(node->flag & SELECT) { - if( (ishidden && nothidden) || ishidden==0) - node->flag |= NODE_HIDDEN; - else - node->flag &= ~NODE_HIDDEN; - } - } + node_flag_toggle_exec(snode, NODE_HIDDEN); snode_notify(C, snode); return OPERATOR_FINISHED; } -void NODE_OT_hide(wmOperatorType *ot) +void NODE_OT_hide_toggle(wmOperatorType *ot) { /* identifiers */ ot->name= "Hide"; - ot->description= "Toggle hiding of the nodes"; - ot->idname= "NODE_OT_hide"; + ot->description= "Toggle hiding of selected nodes"; + ot->idname= "NODE_OT_hide_toggle"; /* callbacks */ ot->exec= node_hide_exec; ot->poll= ED_operator_node_active; - + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +static int node_preview_exec(bContext *C, wmOperator *op) +{ + SpaceNode *snode= CTX_wm_space_node(C); + + /* sanity checking (poll callback checks this already) */ + if((snode == NULL) || (snode->edittree == NULL)) + return OPERATOR_CANCELLED; + + node_flag_toggle_exec(snode, NODE_PREVIEW); + + snode_notify(C, snode); + + return OPERATOR_FINISHED; +} + +void NODE_OT_preview_toggle(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Toggle Node Preview"; + ot->description= "Toggle preview display for selected nodes"; + ot->idname= "NODE_OT_preview_toggle"; + + /* callbacks */ + ot->exec= node_preview_exec; + ot->poll= ED_operator_node_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +static int node_socket_toggle_exec(bContext *C, wmOperator *op) +{ + SpaceNode *snode= CTX_wm_space_node(C); + bNode *node; + int hidden= 0; + + /* sanity checking (poll callback checks this already) */ + if((snode == NULL) || (snode->edittree == NULL)) + return OPERATOR_CANCELLED; + + for(node= snode->edittree->nodes.first; node; node= node->next) { + if(node->flag & SELECT) { + if(node_has_hidden_sockets(node)) { + hidden= 1; + break; + } + } + } + + for(node= snode->edittree->nodes.first; node; node= node->next) { + if(node->flag & SELECT) { + node_set_hidden_sockets(snode, node, !hidden); + } + } + + node_tree_verify_groups(snode->nodetree); + + snode_notify(C, snode); + + return OPERATOR_FINISHED; +} + +void NODE_OT_hide_socket_toggle(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Toggle Hidden Node Sockets"; + ot->description= "Toggle unused node socket display"; + ot->idname= "NODE_OT_hide_socket_toggle"; + + /* callbacks */ + ot->exec= node_socket_toggle_exec; + ot->poll= ED_operator_node_active; + /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } @@ -2060,12 +2143,12 @@ static int node_mute_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void NODE_OT_mute(wmOperatorType *ot) +void NODE_OT_mute_toggle(wmOperatorType *ot) { /* identifiers */ - ot->name= "Mute"; + ot->name= "Toggle Node Mute"; ot->description= "Toggle muting of the nodes"; - ot->idname= "NODE_OT_mute"; + ot->idname= "NODE_OT_mute_toggle"; /* callbacks */ ot->exec= node_mute_exec; diff --git a/source/blender/editors/space_node/node_intern.h b/source/blender/editors/space_node/node_intern.h index 9cbd3ab87d5..77fda0627e7 100644 --- a/source/blender/editors/space_node/node_intern.h +++ b/source/blender/editors/space_node/node_intern.h @@ -90,6 +90,8 @@ bNode *node_tree_get_editgroup(bNodeTree *ntree); void node_tree_verify_groups(bNodeTree *nodetree); void snode_autoconnect(SpaceNode *snode, int allow_multiple, int replace); int node_has_hidden_sockets(bNode *node); +void node_set_hidden_sockets(SpaceNode *snode, bNode *node, int set); + void NODE_OT_duplicate(struct wmOperatorType *ot); void NODE_OT_delete(struct wmOperatorType *ot); @@ -103,8 +105,10 @@ void NODE_OT_group_make(struct wmOperatorType *ot); void NODE_OT_group_ungroup(struct wmOperatorType *ot); void NODE_OT_group_edit(struct wmOperatorType *ot); -void NODE_OT_mute(struct wmOperatorType *ot); -void NODE_OT_hide(struct wmOperatorType *ot); +void NODE_OT_mute_toggle(struct wmOperatorType *ot); +void NODE_OT_hide_toggle(struct wmOperatorType *ot); +void NODE_OT_hide_socket_toggle(struct wmOperatorType *ot); +void NODE_OT_preview_toggle(struct wmOperatorType *ot); void NODE_OT_show_cyclic_dependencies(struct wmOperatorType *ot); void NODE_OT_link_viewer(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_node/node_ops.c b/source/blender/editors/space_node/node_ops.c index 5b8e6fe852e..654fdc6800e 100644 --- a/source/blender/editors/space_node/node_ops.c +++ b/source/blender/editors/space_node/node_ops.c @@ -57,8 +57,10 @@ void node_operatortypes(void) WM_operatortype_append(NODE_OT_view_all); WM_operatortype_append(NODE_OT_visibility_toggle); - WM_operatortype_append(NODE_OT_mute); - WM_operatortype_append(NODE_OT_hide); + WM_operatortype_append(NODE_OT_mute_toggle); + WM_operatortype_append(NODE_OT_hide_toggle); + WM_operatortype_append(NODE_OT_preview_toggle); + WM_operatortype_append(NODE_OT_hide_socket_toggle); WM_operatortype_append(NODE_OT_show_cyclic_dependencies); WM_operatortype_append(NODE_OT_duplicate); @@ -143,8 +145,10 @@ void node_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_menu(keymap, "NODE_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "NODE_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "NODE_OT_hide", HKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "NODE_OT_mute", MKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "NODE_OT_hide_toggle", HKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "NODE_OT_mute_toggle", MKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "NODE_OT_preview_toggle", HKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "NODE_OT_hide_socket_toggle", HKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "NODE_OT_show_cyclic_dependencies", CKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/space_node/node_state.c b/source/blender/editors/space_node/node_state.c index 43c80f693b1..6b3cfd11135 100644 --- a/source/blender/editors/space_node/node_state.c +++ b/source/blender/editors/space_node/node_state.c @@ -51,12 +51,13 @@ /* **************** Node Header Buttons ************** */ -static void node_hide_unhide_sockets(SpaceNode *snode, bNode *node) -{ +/* note: call node_tree_verify_groups(snode->nodetree) after this + */ +void node_set_hidden_sockets(SpaceNode *snode, bNode *node, int set) +{ bNodeSocket *sock; - - /* unhide all */ - if( node_has_hidden_sockets(node) ) { + + if(set==0) { for(sock= node->inputs.first; sock; sock= sock->next) sock->flag &= ~SOCK_HIDDEN; for(sock= node->outputs.first; sock; sock= sock->next) @@ -64,7 +65,7 @@ static void node_hide_unhide_sockets(SpaceNode *snode, bNode *node) } else { bNode *gnode= node_tree_get_editgroup(snode->nodetree); - + /* hiding inside group should not break links in other group users */ if(gnode) { nodeGroupSocketUseFlags((bNodeTree *)gnode->id); @@ -89,7 +90,11 @@ static void node_hide_unhide_sockets(SpaceNode *snode, bNode *node) } } } +} +static void node_hide_unhide_sockets(SpaceNode *snode, bNode *node) +{ + node_set_hidden_sockets(snode, node, !node_has_hidden_sockets(node)); node_tree_verify_groups(snode->nodetree); } From eb50486df28ed52909736dbfa49d3ba1825aadac Mon Sep 17 00:00:00 2001 From: Arystanbek Dyussenov Date: Mon, 7 Jun 2010 20:07:31 +0000 Subject: [PATCH 021/674] Fix COLLADA build error. This was caused by the difference in OpenCollada versions between Windows and Linux/Mac. Windows uses OpenCollada revision 746, Linux/Mac - 721. --- source/blender/collada/DocumentExporter.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/blender/collada/DocumentExporter.cpp b/source/blender/collada/DocumentExporter.cpp index b474f65ac0d..01a41459a1d 100644 --- a/source/blender/collada/DocumentExporter.cpp +++ b/source/blender/collada/DocumentExporter.cpp @@ -1719,7 +1719,11 @@ public: // most widespread de-facto standard. texture.setProfileName("FCOLLADA"); texture.setChildElementName("bump"); +#ifdef WIN32 // currently, Windows builds are using revision 746 of OpenCollada while Linux and Mac are using an older revision 721 ep.addExtraTechniqueColorOrTexture(COLLADASW::ColorOrTexture(texture)); +#else + ep.setExtraTechniqueColorOrTexture(COLLADASW::ColorOrTexture(texture)); +#endif } } // performs the actual writing From 740897a69e97275758cce605b5227e6036cdcb95 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 7 Jun 2010 20:08:03 +0000 Subject: [PATCH 022/674] set the default options for new cameras to be the same as the default blend file --- source/blender/blenkernel/intern/object.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 576b3481d07..179e83fdc66 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -679,8 +679,8 @@ void *add_camera(char *name) cam->clipend= 100.0f; cam->drawsize= 0.5f; cam->ortho_scale= 6.0; - cam->flag |= CAM_SHOWTITLESAFE; - cam->passepartalpha = 0.2f; + cam->flag |= CAM_SHOWPASSEPARTOUT; + cam->passepartalpha = 0.5f; return cam; } From 8e1a63dbc9a985bd64812d0b699b02b23fc9b7ae Mon Sep 17 00:00:00 2001 From: Arystanbek Dyussenov Date: Mon, 7 Jun 2010 20:37:56 +0000 Subject: [PATCH 023/674] Merge -c 29322 from COLLADA branch into trunk. --- source/blender/collada/DocumentExporter.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/blender/collada/DocumentExporter.cpp b/source/blender/collada/DocumentExporter.cpp index 01a41459a1d..7a994d6b418 100644 --- a/source/blender/collada/DocumentExporter.cpp +++ b/source/blender/collada/DocumentExporter.cpp @@ -2482,6 +2482,9 @@ protected: } } } + + // keep the keys in ascending order + std::sort(fra.begin(), fra.end()); } void find_rotation_frames(Object *ob, std::vector &fra, const char *prefix, int rotmode) From 0cae214a781d0002ac8e913f8d9125a758a162e1 Mon Sep 17 00:00:00 2001 From: Luca Bonavita Date: Mon, 7 Jun 2010 23:50:43 +0000 Subject: [PATCH 024/674] == python api docs == bge.types --------- - removed lists if they were already available in bge.logic and crosslinked where the list contained description, moved the descriptions in bge.logic so we have useful thing in one place only - fixed a lot of bad formatting, like bad indentation and usage of TAB - changed from literal to codeblocks that smerch for the useful suggestion :) - whered appropriate I've moved code examples to the end, after notes and all it is blocking to have a big black block before actually see a method parameters or return type - have doubt about the list at bge.types.html#bge.types.SCA_MouseSensor.mode possibly tomorrow will ask Dalai bge.logic --------- - added sensor status list - cross linked with bge.types where needed - added a section "ShapeAction Actuator" because in bge.types these constants are docuemented, but in 2.5 I don't see the ShapeAction Actuator (anymore, or for now) I'll ask Dalai tomorrow or when possible (check bge.logic.html#shape-action-actuator once cambo rebuilds the docs) - moved descriptions from bge.types lists to logic page where appropriate - where possible, added custom directive :value: so we have a consistent way to show the value of constants --- source/gameengine/PyDoc/bge.events.rst | 2 + source/gameengine/PyDoc/bge.logic.rst | 200 ++++++- source/gameengine/PyDoc/bge.types.rst | 709 ++++++++++++------------- 3 files changed, 535 insertions(+), 376 deletions(-) diff --git a/source/gameengine/PyDoc/bge.events.rst b/source/gameengine/PyDoc/bge.events.rst index e166b8246b7..f642291fe97 100644 --- a/source/gameengine/PyDoc/bge.events.rst +++ b/source/gameengine/PyDoc/bge.events.rst @@ -81,6 +81,8 @@ Mouse Keys .. data:: MOUSEX .. data:: MOUSEY +.. _keyboard-keys: + ============= Keyboard Keys ============= diff --git a/source/gameengine/PyDoc/bge.logic.rst b/source/gameengine/PyDoc/bge.logic.rst index f48dc56521c..84b480e2ab9 100644 --- a/source/gameengine/PyDoc/bge.logic.rst +++ b/source/gameengine/PyDoc/bge.logic.rst @@ -337,6 +337,19 @@ Constants Sensors ======= +.. _sensor-status: + +------------- +Sensor Status +------------- + +.. data:: KX_SENSOR_INACTIVE +.. data:: KX_SENSOR_JUST_ACTIVATED +.. data:: KX_SENSOR_ACTIVE +.. data:: KX_SENSOR_JUST_DEACTIVATED + +.. _logic-property-sensor: + --------------- Property Sensor --------------- @@ -345,21 +358,31 @@ Property Sensor Activate when the property is equal to the sensor value. + :value: 1 + .. data:: KX_PROPSENSOR_NOTEQUAL Activate when the property is not equal to the sensor value. + + :value: 2 .. data:: KX_PROPSENSOR_INTERVAL Activate when the property is between the specified limits. - + + :value: 3 + .. data:: KX_PROPSENSOR_CHANGED - Activate when the property changes + Activate when the property changes + + :value: 4 .. data:: KX_PROPSENSOR_EXPRESSION Activate when the expression matches + + :value: 5 ------------ Radar Sensor @@ -392,6 +415,8 @@ See :class:`bge.types.KX_RaySensor` Actuators ========= +.. _action-actuator: + --------------- Action Actuator --------------- @@ -408,7 +433,43 @@ See :class:`bge.types.BL_ActionActuator` Constraint Actuator ------------------- -See :class:`bge.types.KX_ConstraintActuator` +.. _constraint-actuator-option: + +See :class:`bge.types.KX_ConstraintActuator.option` + +* Applicable to Distance constraint: + + .. data:: KX_ACT_CONSTRAINT_NORMAL + + Activate alignment to surface + + .. data:: KX_ACT_CONSTRAINT_DISTANCE + + Activate distance control + + .. data:: KX_ACT_CONSTRAINT_LOCAL + + Direction of the ray is along the local axis + +* Applicable to Force field constraint: + + .. data:: KX_ACT_CONSTRAINT_DOROTFH + + Force field act on rotation as well + +* Applicable to both: + + .. data:: KX_ACT_CONSTRAINT_MATERIAL + + Detect material rather than property + + .. data:: KX_ACT_CONSTRAINT_PERMANENT + + No deactivation if ray does not hit target + +.. _constraint-actuator-limit: + +See :class:`bge.types.KX_ConstraintActuator.limit` .. data:: KX_CONSTRAINTACT_LOCX @@ -493,13 +554,6 @@ See :class:`bge.types.KX_ConstraintActuator` .. data:: KX_ACT_CONSTRAINT_FHPZ Set force field along positive Z axis - -.. data:: KX_ACT_CONSTRAINT_DISTANCE -.. data:: KX_ACT_CONSTRAINT_DOROTFH -.. data:: KX_ACT_CONSTRAINT_LOCAL -.. data:: KX_ACT_CONSTRAINT_MATERIAL -.. data:: KX_ACT_CONSTRAINT_NORMAL -.. data:: KX_ACT_CONSTRAINT_PERMANENT ---------------- Dynamic Actuator @@ -513,6 +567,8 @@ See :class:`bge.types.KX_SCA_DynamicActuator` .. data:: KX_DYN_DISABLE_RIGID_BODY .. data:: KX_DYN_SET_MASS +.. _game-actuator: + ------------- Game Actuator ------------- @@ -526,6 +582,8 @@ See :class:`bge.types.KX_GameActuator` .. data:: KX_GAME_SAVECFG .. data:: KX_GAME_LOADCFG +.. _ipo-actuator: + ------------ IPO Actuator ------------ @@ -546,6 +604,8 @@ Parent Actuator .. data:: KX_PARENT_REMOVE .. data:: KX_PARENT_SET +.. _logic-random-distributions: + -------------------- Random Distributions -------------------- @@ -578,28 +638,64 @@ See :class:`bge.types.KX_SceneActuator` .. data:: KX_SCENE_SUSPEND .. data:: KX_SCENE_RESUME +.. _shape-action-actuator: + +--------------------- +Shape Action Actuator +--------------------- + +See :class:`bge.types.BL_ActionActuator` + +.. data:: KX_ACTIONACT_PLAY +.. data:: KX_ACTIONACT_FLIPPER +.. data:: KX_ACTIONACT_LOOPSTOP +.. data:: KX_ACTIONACT_LOOPEND +.. data:: KX_ACTIONACT_PROPERTY + +.. _logic-sound-actuator: + -------------- Sound Actuator -------------- - + See :class:`bge.types.KX_SoundActuator` .. data:: KX_SOUNDACT_PLAYSTOP + + :value: 1 + .. data:: KX_SOUNDACT_PLAYEND + + :value: 2 + .. data:: KX_SOUNDACT_LOOPSTOP + + :value: 3 + .. data:: KX_SOUNDACT_LOOPEND + + :value: 4 + .. data:: KX_SOUNDACT_LOOPBIDIRECTIONAL + + :value: 5 + .. data:: KX_SOUNDACT_LOOPBIDIRECTIONAL_STOP + :value: 6 + + ======= Various ======= +.. _input-status: + ------------ Input Status ------------ -See :class:`bge.types.SCA_MouseSensor` +See :class:`bge.types.SCA_PythonKeyboard`, :class:`bge.types.SCA_PythonMouse`, :class:`bge.types.SCA_MouseSensor`, :class:`bge.types.SCA_KeyboardSensor` .. data:: KX_INPUT_NONE .. data:: KX_INPUT_JUST_ACTIVATED @@ -652,31 +748,111 @@ See :class:`bge.types.KX_StateActuator` .. data:: KX_STATE28 .. data:: KX_STATE29 .. data:: KX_STATE30 + +.. _state-actuator-operation: + +See :class:`bge.types.KX_StateActuator.operation` + .. data:: KX_STATE_OP_CLR + + Substract bits to state mask + + :value: 0 + .. data:: KX_STATE_OP_CPY + + Copy state mask + + :value: 1 + .. data:: KX_STATE_OP_NEG + + Invert bits to state mask + + :value: 2 + .. data:: KX_STATE_OP_SET + Add bits to state mask + + :value: 3 + +.. _Two-D-FilterActuator-mode: + --------- 2D Filter --------- .. data:: RAS_2DFILTER_BLUR + + :value: 2 + .. data:: RAS_2DFILTER_CUSTOMFILTER + + Customer filter, the code code is set via shaderText property. + + :value: 12 + .. data:: RAS_2DFILTER_DILATION + + :value: 4 + .. data:: RAS_2DFILTER_DISABLED + + Disable the filter that is currently active + + :value: -1 + .. data:: RAS_2DFILTER_ENABLED + + Enable the filter that was previously disabled + + :value: -2 + .. data:: RAS_2DFILTER_EROSION + + :value: 5 + .. data:: RAS_2DFILTER_GRAYSCALE + + :value: 9 + .. data:: RAS_2DFILTER_INVERT + + :value: 11 + .. data:: RAS_2DFILTER_LAPLACIAN + + :value: 6 + .. data:: RAS_2DFILTER_MOTIONBLUR + + Create and enable preset filters + + :value: 1 + .. data:: RAS_2DFILTER_NOFILTER + + Disable and destroy the filter that is currently active + + :value: 0 + .. data:: RAS_2DFILTER_PREWITT + + :value: 8 + .. data:: RAS_2DFILTER_SEPIA + + :value: 10 + .. data:: RAS_2DFILTER_SHARPEN + + :value: 3 + .. data:: RAS_2DFILTER_SOBEL + :value: 7 + ------ Shader ------ diff --git a/source/gameengine/PyDoc/bge.types.rst b/source/gameengine/PyDoc/bge.types.rst index cbf46ebacf0..1800ea0db2d 100644 --- a/source/gameengine/PyDoc/bge.types.rst +++ b/source/gameengine/PyDoc/bge.types.rst @@ -163,14 +163,9 @@ Game Engine bge.types Module .. attribute:: status - The status of the sensor. (read-only). - - :type: int from 0-3. + The status of the sensor (read-only): can be one of :ref:`these constants`. - * KX_SENSOR_INACTIVE - * KX_SENSOR_JUST_ACTIVATED - * KX_SENSOR_ACTIVE - * KX_SENSOR_JUST_DEACTIVATED + :type: int .. note:: @@ -294,7 +289,7 @@ Game Engine bge.types Module .. attribute:: mode - The operation mode of the actuator. KX_ACTIONACT_PLAY, KX_ACTIONACT_PROPERTY, KX_ACTIONACT_FLIPPER, KX_ACTIONACT_LOOPSTOP, KX_ACTIONACT_LOOPEND. + The operation mode of the actuator. Can be one of :ref:`these constants`. :type: integer @@ -597,7 +592,7 @@ Game Engine bge.types Module .. attribute:: mode - The operation mode of the actuator in [KX_ACTIONACT_PLAY, KX_ACTIONACT_PROPERTY, KX_ACTIONACT_FLIPPER, KX_ACTIONACT_LOOPSTOP, KX_ACTIONACT_LOOPEND]. + The operation mode of the actuator. Can be one of :ref:`these constants`. :type: integer @@ -653,12 +648,14 @@ Game Engine bge.types Module Since object names are not always unique, the id of an object can be used to get an object from the CValueList. - Example. + Example: - ``myObID=id(gameObject)`` - ``ob= scene.objects.from_id(myObID)`` + .. code-block:: python + + myObID=id(gameObject) + ob= scene.objects.from_id(myObID) - Where myObID is an int or long from the id function. + Where ``myObID`` is an int or long from the id function. This has the advantage that you can store the id in places you could not store a gameObject. @@ -752,14 +749,10 @@ Game Engine bge.types Module :type: :class:`KX_GameObject` or None - @author: snail - .. class:: KX_ConstraintActuator(SCA_IActuator) A constraint actuator limits the position, rotation, distance or orientation of an object. - Properties: - .. attribute:: damp Time constant of the constraint expressed in frame (not use by Force field constraint). @@ -780,20 +773,10 @@ Game Engine bge.types Module .. attribute:: option - Binary combination of the following values. + Binary combination of :ref:`these constants ` :type: integer - * Applicable to Distance constraint - * KX_ACT_CONSTRAINT_NORMAL ( 64) : Activate alignment to surface - * KX_ACT_CONSTRAINT_DISTANCE ( 512) : Activate distance control - * KX_ACT_CONSTRAINT_LOCAL (1024) : direction of the ray is along the local axis - * Applicable to Force field constraint: - * KX_ACT_CONSTRAINT_DOROTFH (2048) : Force field act on rotation as well - * Applicable to both: - * KX_ACT_CONSTRAINT_MATERIAL ( 128) : Detect material rather than property - * KX_ACT_CONSTRAINT_PERMANENT ( 256) : No deactivation if ray does not hit target - .. attribute:: time activation time of the actuator. The actuator disables itself after this many frame. If set to 0, the actuator is not limited in time. @@ -832,22 +815,7 @@ Game Engine bge.types Module .. attribute:: limit - type of constraint. - - Use one of the following constant: :data:`~bge.logic.KX_CONSTRAINTACT_LOCX`, - :data:`~bge.logic.KX_CONSTRAINTACT_LOCY`, :data:`~bge.logic.KX_CONSTRAINTACT_LOCZ`, - :data:`~bge.logic.KX_CONSTRAINTACT_ROTX`, :data:`~bge.logic.KX_CONSTRAINTACT_ROTY`, - :data:`~bge.logic.KX_CONSTRAINTACT_ROTZ`, :data:`~bge.logic.KX_CONSTRAINTACT_DIRPX`, - :data:`~bge.logic.KX_CONSTRAINTACT_DIRPY`, :data:`~bge.logic.KX_CONSTRAINTACT_DIRPZ`, - :data:`~bge.logic.KX_CONSTRAINTACT_DIRNX`, :data:`~bge.logic.KX_CONSTRAINTACT_DIRNY`, - :data:`~bge.logic.KX_CONSTRAINTACT_DIRNZ`, :data:`~bge.logic.KX_CONSTRAINTACT_ORIX`, - :data:`~bge.logic.KX_CONSTRAINTACT_ORIY`, :data:`~bge.logic.KX_CONSTRAINTACT_ORIZ`, - :data:`~bge.logic.KX_ACT_CONSTRAINT_FHPX`, :data:`~bge.logic.KX_ACT_CONSTRAINT_FHPY`, - :data:`~bge.logic.KX_ACT_CONSTRAINT_FHPZ`, :data:`~bge.logic.KX_ACT_CONSTRAINT_FHNX`, - :data:`~bge.logic.KX_ACT_CONSTRAINT_FHNY`, :data:`~bge.logic.KX_ACT_CONSTRAINT_FHNZ`, - :data:`~bge.logic.KX_ACT_CONSTRAINT_DISTANCE`, :data:`~bge.logic.KX_ACT_CONSTRAINT_DOROTFH`, - :data:`~bge.logic.KX_ACT_CONSTRAINT_LOCAL`, :data:`~bge.logic.KX_ACT_CONSTRAINT_MATERIAL`, - :data:`~bge.logic.KX_ACT_CONSTRAINT_NORMAL`, :data:`~bge.logic.KX_ACT_CONSTRAINT_PERMANENT` + type of constraint. Use one of the :ref:`these constants ` :type: integer. @@ -867,8 +835,6 @@ Game Engine bge.types Module The game actuator loads a new .blend file, restarts the current .blend file or quits the game. - Properties: - .. attribute:: fileName the new .blend file to load. @@ -877,11 +843,9 @@ Game Engine bge.types Module .. attribute:: mode - The mode of this actuator. + The mode of this actuator. Can be on of :ref:`these constants ` - :type: Constant in :data:`~bge.logic.KX_GAME_LOAD`, :data:`~bge.logic.KX_GAME_START`, - :data:`~bge.logic.KX_GAME_RESTART`, :data:`~bge.logic.KX_GAME_QUIT`, - :data:`~bge.logic.KX_GAME_SAVECFG`, :data:`~bge.logic.KX_GAME_LOADCFG` + :type: Int .. class:: KX_GameObject(SCA_IObject) @@ -1584,7 +1548,7 @@ Game Engine bge.types Module .. attribute:: mode - Play mode for the ipo. (In GameLogic.KX_IPOACT_PLAY, KX_IPOACT_PINGPONG, KX_IPOACT_FLIPPER, KX_IPOACT_LOOPSTOP, KX_IPOACT_LOOPEND, KX_IPOACT_FROM_PROP). + Play mode for the ipo. Can be on of :ref:`these constants ` :type: integer @@ -1822,8 +1786,6 @@ Game Engine bge.types Module Mouse Sensor logic brick. - Properties: - .. attribute:: position current [x, y] coordinates of the mouse, in frame coordinates (pixels). @@ -1846,11 +1808,11 @@ Game Engine bge.types Module .. method:: getButtonStatus(button) Get the mouse button status. - - :arg button: value in GameLogic members KX_MOUSE_BUT_LEFT, KX_MOUSE_BUT_MIDDLE, KX_MOUSE_BUT_RIGHT - :type button: integer - :return: value in GameLogic members KX_INPUT_NONE, KX_INPUT_NONE, KX_INPUT_JUST_ACTIVATED, KX_INPUT_ACTIVE, KX_INPUT_JUST_RELEASED - :rtype: integer + + :arg button: The code that represents the key you want to get the state of, use one of :ref:`these constants` + :type button: int + :return: The state of the given key, can be one of :ref:`these constants` + :rtype: int .. class:: KX_MouseFocusSensor(SCA_MouseSensor) @@ -2167,8 +2129,8 @@ Game Engine bge.types Module .. attribute:: ghost - whether the object should be made ghost when parenting - Effective only if the shape is not added to the parent compound shape. + Whether the object should be made ghost when parenting + Effective only if the shape is not added to the parent compound shape. :type: boolean @@ -2267,8 +2229,8 @@ Game Engine bge.types Module .. attribute:: v4 - vertex index of the fourth vertex of the polygon, 0 if polygon has only 3 vertex - use this to retrieve vertex proxy from mesh proxy. + Vertex index of the fourth vertex of the polygon, 0 if polygon has only 3 vertex + Use this to retrieve vertex proxy from mesh proxy. :type: integer @@ -2603,26 +2565,26 @@ Game Engine bge.types Module Sets texture render state. - .. code-block:: python - - mat.setTexture(mat.tface) - :arg tface: Texture face :type tface: CObject + .. code-block:: python + + mat.setTexture(mat.tface) + .. method:: activate(rasty, cachingInfo) Sets material parameters for this object for rendering. Material Parameters set: - #. Texture - #. Backface culling - #. Line drawing - #. Specular Colour - #. Shininess - #. Diffuse Colour - #. Polygon Offset. + #. Texture + #. Backface culling + #. Line drawing + #. Specular Colour + #. Shininess + #. Diffuse Colour + #. Polygon Offset. :arg rasty: Rasterizer instance. :type rasty: CObject @@ -2642,45 +2604,48 @@ Game Engine bge.types Module It should return True to render the mesh, or False if you are finished. You should clean up any state Blender does not set before returning False. - Activate Method Definition:: - `def activate(self, rasty, cachingInfo, material):` + Activate Method Definition: - .. code-block:: python - - class PyMaterial: - def __init__(self): - self.pass_no = -1 - - def activate(self, rasty, cachingInfo, material): - # Activate the material here. - # - # The activate method will be called until it returns False. - # Every time the activate method returns True the mesh will - # be rendered. - # - # rasty is a CObject for passing to material.updateTexture() - # and material.activate() - # cachingInfo is a CObject for passing to material.activate() - # material is the KX_PolygonMaterial instance this material - # was added to - - # default material properties: - self.pass_no += 1 - if self.pass_no == 0: - material.activate(rasty, cachingInfo) - # Return True to do this pass - return True - - # clean up and return False to finish. - self.pass_no = -1 - return False - - # Create a new Python Material and pass it to the renderer. - mat.setCustomMaterial(PyMaterial()) + .. code-block:: python + + def activate(self, rasty, cachingInfo, material): :arg material: The material object. :type material: instance + .. code-block:: python + + class PyMaterial: + def __init__(self): + self.pass_no = -1 + + def activate(self, rasty, cachingInfo, material): + # Activate the material here. + # + # The activate method will be called until it returns False. + # Every time the activate method returns True the mesh will + # be rendered. + # + # rasty is a CObject for passing to material.updateTexture() + # and material.activate() + # cachingInfo is a CObject for passing to material.activate() + # material is the KX_PolygonMaterial instance this material + # was added to + + # default material properties: + self.pass_no += 1 + if self.pass_no == 0: + material.activate(rasty, cachingInfo) + # Return True to do this pass + return True + + # clean up and return False to finish. + self.pass_no = -1 + return False + + # Create a new Python Material and pass it to the renderer. + mat.setCustomMaterial(PyMaterial()) + .. class:: KX_RadarSensor(KX_NearSensor) Radar sensor is a near sensor with a conical sensor object. @@ -2796,9 +2761,9 @@ Game Engine bge.types Module An Add Object actuator will be ignored if at game start, the linked object doesn't exist (or is empty) or the linked object is in an active layer. - This will genereate a warning in the console: + .. code-block:: none - ``Error: GameObject 'Name' has a AddObjectActuator 'ActuatorName' without object (in 'nonactive' layer)`` + Error: GameObject 'Name' has a AddObjectActuator 'ActuatorName' without object (in 'nonactive' layer) .. attribute:: object @@ -2873,51 +2838,53 @@ Game Engine bge.types Module This will generate a warning in the console - ``Error: GameObject 'Name' ReplaceMeshActuator 'ActuatorName' without object`` + .. code-block:: none + + Error: GameObject 'Name' ReplaceMeshActuator 'ActuatorName' without object .. code-block:: python - # Level-of-detail - # Switch a game object's mesh based on its depth in the camera view. - # +----------+ +-----------+ +-------------------------------------+ - # | Always +-----+ Python +-----+ Edit Object (Replace Mesh) LOD.Mesh | - # +----------+ +-----------+ +-------------------------------------+ - import GameLogic + # Level-of-detail + # Switch a game object's mesh based on its depth in the camera view. + # +----------+ +-----------+ +-------------------------------------+ + # | Always +-----+ Python +-----+ Edit Object (Replace Mesh) LOD.Mesh | + # +----------+ +-----------+ +-------------------------------------+ + import GameLogic - # List detail meshes here - # Mesh (name, near, far) - # Meshes overlap so that they don't 'pop' when on the edge of the distance. - meshes = ((".Hi", 0.0, -20.0), - (".Med", -15.0, -50.0), - (".Lo", -40.0, -100.0) - ) - - co = GameLogic.getCurrentController() - obj = co.owner - act = co.actuators["LOD." + obj.name] - cam = GameLogic.getCurrentScene().active_camera - - def Depth(pos, plane): - return pos[0]*plane[0] + pos[1]*plane[1] + pos[2]*plane[2] + plane[3] - - # Depth is negative and decreasing further from the camera - depth = Depth(obj.position, cam.world_to_camera[2]) - - newmesh = None - curmesh = None - # Find the lowest detail mesh for depth - for mesh in meshes: - if depth < mesh[1] and depth > mesh[2]: - newmesh = mesh - if "ME" + obj.name + mesh[0] == act.getMesh(): - curmesh = mesh - - if newmesh != None and "ME" + obj.name + newmesh[0] != act.getMesh(): - # The mesh is a different mesh - switch it. - # Check the current mesh is not a better fit. - if curmesh == None or curmesh[1] < depth or curmesh[2] > depth: - act.mesh = obj.getName() + newmesh[0] - GameLogic.addActiveActuator(act, True) + # List detail meshes here + # Mesh (name, near, far) + # Meshes overlap so that they don't 'pop' when on the edge of the distance. + meshes = ((".Hi", 0.0, -20.0), + (".Med", -15.0, -50.0), + (".Lo", -40.0, -100.0) + ) + + co = GameLogic.getCurrentController() + obj = co.owner + act = co.actuators["LOD." + obj.name] + cam = GameLogic.getCurrentScene().active_camera + + def Depth(pos, plane): + return pos[0]*plane[0] + pos[1]*plane[1] + pos[2]*plane[2] + plane[3] + + # Depth is negative and decreasing further from the camera + depth = Depth(obj.position, cam.world_to_camera[2]) + + newmesh = None + curmesh = None + # Find the lowest detail mesh for depth + for mesh in meshes: + if depth < mesh[1] and depth > mesh[2]: + newmesh = mesh + if "ME" + obj.name + mesh[0] == act.getMesh(): + curmesh = mesh + + if newmesh != None and "ME" + obj.name + newmesh[0] != act.getMesh(): + # The mesh is a different mesh - switch it. + # Check the current mesh is not a better fit. + if curmesh == None or curmesh[1] < depth or curmesh[2] > depth: + act.mesh = obj.getName() + newmesh[0] + GameLogic.addActiveActuator(act, True) .. attribute:: mesh @@ -3108,7 +3075,9 @@ Game Engine bge.types Module This will generate a warning in the console: - ``Error: GameObject 'Name' has a SceneActuator 'ActuatorName' (SetScene) without scene`` + .. code-block:: none + + Error: GameObject 'Name' has a SceneActuator 'ActuatorName' (SetScene) without scene .. attribute:: scene @@ -3194,43 +3163,29 @@ Game Engine bge.types Module .. attribute:: mode - The operation mode of the actuator. + The operation mode of the actuator. Can be one of :ref:`these constants` :type: integer - - You can use one of the following constants: - * KX_SOUNDACT_PLAYSTOP (1) - * KX_SOUNDACT_PLAYEND (2) - * KX_SOUNDACT_LOOPSTOP (3) - * KX_SOUNDACT_LOOPEND (4) - * KX_SOUNDACT_LOOPBIDIRECTIONAL (5) - * KX_SOUNDACT_LOOPBIDIRECTIONAL_STOP (6) .. class:: KX_StateActuator(SCA_IActuator) State actuator changes the state mask of parent object. - Property: - .. attribute:: operation - type of bit operation to be applied on object state mask. - - You can use one of the following constant: - - * KX_STATE_OP_CPY (0) : Copy state mask - * KX_STATE_OP_SET (1) : Add bits to state mask - * KX_STATE_OP_CLR (2) : Substract bits to state mask - * KX_STATE_OP_NEG (3) : Invert bits to state mask. + Type of bit operation to be applied on object state mask. + + You can use one of :ref:`these constants ` :type: integer .. attribute:: mask - value that defines the bits that will be modified by the operation. - The bits that are 1 in the mask will be updated in the object state, - the bits that are 0 are will be left unmodified expect for the Copy operation - which copies the mask to the object state. + Value that defines the bits that will be modified by the operation. + + The bits that are 1 in the mask will be updated in the object state. + + The bits that are 0 are will be left unmodified expect for the Copy operation which copies the mask to the object state. :type: integer @@ -3244,7 +3199,9 @@ Game Engine bge.types Module This will generate a warning in the console: - ``Error: GameObject 'Name' no object in EditObjectActuator 'ActuatorName'`` + .. code-block:: none + + GameObject 'Name' no object in EditObjectActuator 'ActuatorName' .. attribute:: object @@ -3650,13 +3607,11 @@ Game Engine bge.types Module Create, enable and disable 2D filters - Properties: - The following properties don't have an immediate effect. You must active the actuator to get the result. The actuator is not persistent: it automatically stops itself after setting up the filter but the filter remains active. To stop a filter you must activate the actuator with 'type' - set to RAS_2DFILTER_DISABLED or RAS_2DFILTER_NOFILTER. + set to :data:`~bge.logic.RAS_2DFILTER_DISABLED` or :data:`~bge.logic.RAS_2DFILTER_NOFILTER`. .. attribute:: shaderText @@ -3672,23 +3627,7 @@ Game Engine bge.types Module .. attribute:: mode - type of 2D filter, use one of the following constants: - - * RAS_2DFILTER_ENABLED (-2) : enable the filter that was previously disabled - * RAS_2DFILTER_DISABLED (-1) : disable the filter that is currently active - * RAS_2DFILTER_NOFILTER (0) : disable and destroy the filter that is currently active - * RAS_2DFILTER_MOTIONBLUR (1) : create and enable preset filters - * RAS_2DFILTER_BLUR (2) - * RAS_2DFILTER_SHARPEN (3) - * RAS_2DFILTER_DILATION (4) - * RAS_2DFILTER_EROSION (5) - * RAS_2DFILTER_LAPLACIAN (6) - * RAS_2DFILTER_SOBEL (7) - * RAS_2DFILTER_PREWITT (8) - * RAS_2DFILTER_GRAYSCALE (9) - * RAS_2DFILTER_SEPIA (10) - * RAS_2DFILTER_INVERT (11) - * RAS_2DFILTER_CUSTOMFILTER (12) : customer filter, the code code is set via shaderText property. + Type of 2D filter, use one of :ref:`these constants ` :type: integer @@ -3718,8 +3657,6 @@ Game Engine bge.types Module It generates a positive pulse if the corresponding actuator is activated and a negative pulse if the actuator is deactivated. - Properties: - .. attribute:: actuator the name of the actuator that the sensor is monitoring. @@ -3742,8 +3679,6 @@ Game Engine bge.types Module Use :class:`SCA_ISensor.reset` at any time to restart sensor. - Properties: - .. attribute:: delay length of the initial OFF period as number of frame, 0 for immediate trigger. @@ -3768,8 +3703,6 @@ Game Engine bge.types Module This sensor detects player joystick events. - Properties: - .. attribute:: axisValues The state of the joysticks axis as a list of values :data:`numAxis` long. (read-only). @@ -3938,24 +3871,16 @@ Game Engine bge.types Module a list of pressed keys that have either been pressed, or just released, or are active this frame. (read-only). - :type: list [[keycode, status], ...] - - * 'keycode' matches the values in :mod:`bge.keys`. - * 'status' uses... - - * :mod:`bge.logic.KX_INPUT_NONE` - * :mod:`bge.logic.KX_INPUT_JUST_ACTIVATED` - * :mod:`bge.logic.KX_INPUT_ACTIVE` - * :mod:`bge.logic.KX_INPUT_JUST_RELEASED` + :type: list [[:ref:`keycode`, :ref:`status`], ...] .. method:: getKeyStatus(keycode) Get the status of a key. - :arg keycode: The code that represents the key you want to get the state of + :arg keycode: The code that represents the key you want to get the state of, use one of :ref:`these constants` :type keycode: integer - :return: The state of the given key - :rtype: key state :mod:`bge.logic` members (KX_INPUT_NONE, KX_INPUT_JUST_ACTIVATED, KX_INPUT_ACTIVE, KX_INPUT_JUST_RELEASED) + :return: The state of the given key, can be one of :ref:`these constants` + :rtype: int .. class:: SCA_NANDController(SCA_IController) @@ -3979,8 +3904,6 @@ Game Engine bge.types Module Property Actuator - Properties: - .. attribute:: propName the property on which to operate. @@ -4003,19 +3926,11 @@ Game Engine bge.types Module Activates when the game object property matches. - Properties: - .. attribute:: mode - Type of check on the property. + Type of check on the property. Can be one of :ref:`these constants ` - :type: integer - - * KX_PROPSENSOR_EQUAL(1) - * KX_PROPSENSOR_NOTEQUAL(2) - * KX_PROPSENSOR_INTERVAL(3) - * KX_PROPSENSOR_CHANGED(4) - * KX_PROPSENSOR_EXPRESSION(5) + :type: integer. .. attribute:: propName @@ -4046,8 +3961,6 @@ Game Engine bge.types Module A Python controller uses a Python script to activate it's actuators, based on it's sensors. - Properties: - .. attribute:: script The value of this variable depends on the execution methid. @@ -4088,8 +4001,6 @@ Game Engine bge.types Module Random Actuator - Properties: - .. attribute:: seed Seed of the random number generator. @@ -4116,21 +4027,10 @@ Game Engine bge.types Module .. attribute:: distribution - distribution type. (read-only). + Distribution type. (read-only). Can be one of :ref:`these constants ` :type: integer - * KX_RANDOMACT_BOOL_CONST - * KX_RANDOMACT_BOOL_UNIFORM - * KX_RANDOMACT_BOOL_BERNOUILLI - * KX_RANDOMACT_INT_CONST - * KX_RANDOMACT_INT_UNIFORM - * KX_RANDOMACT_INT_POISSON - * KX_RANDOMACT_FLOAT_CONST - * KX_RANDOMACT_FLOAT_UNIFORM - * KX_RANDOMACT_FLOAT_NORMAL - * KX_RANDOMACT_FLOAT_NEGATIVE_EXPONENTIAL - .. attribute:: propName the name of the property to set with the random value. @@ -4267,17 +4167,17 @@ Game Engine bge.types Module A Camera object. - .. attribute:: INSIDE + .. data:: INSIDE - see :data:`sphereInsideFrustum` and :data:`boxInsideFrustum` + See :data:`sphereInsideFrustum` and :data:`boxInsideFrustum` - .. attribute:: INTERSECT + .. data:: INTERSECT - see :data:`sphereInsideFrustum` and :data:`boxInsideFrustum` + See :data:`sphereInsideFrustum` and :data:`boxInsideFrustum` - .. attribute:: OUTSIDE + .. data:: OUTSIDE - see :data:`sphereInsideFrustum` and :data:`boxInsideFrustum` + See :data:`sphereInsideFrustum` and :data:`boxInsideFrustum` .. attribute:: lens @@ -4363,78 +4263,65 @@ Game Engine bge.types Module :type centre: list [x, y, z] :arg radius: the radius of the sphere :type radius: float - :return: INSIDE, OUTSIDE or INTERSECT + :return: :data:`~bge.types.KX_Camera.INSIDE`, :data:`~bge.types.KX_Camera.OUTSIDE` or :data:`~bge.types.KX_Camera.INTERSECT` :rtype: integer + .. note:: + + When the camera is first initialized the result will be invalid because the projection matrix has not been set. + .. code-block:: python - import GameLogic - co = GameLogic.getCurrentController() - cam = co.owner - - # A sphere of radius 4.0 located at [x, y, z] = [1.0, 1.0, 1.0] - if (cam.sphereInsideFrustum([1.0, 1.0, 1.0], 4) != cam.OUTSIDE): - # Sphere is inside frustum ! - # Do something useful ! - else: - # Sphere is outside frustum - - .. note:: - - When the camera is first initialized the result will be invalid because the projection matrix has not been set. + import GameLogic + co = GameLogic.getCurrentController() + cam = co.owner + + # A sphere of radius 4.0 located at [x, y, z] = [1.0, 1.0, 1.0] + if (cam.sphereInsideFrustum([1.0, 1.0, 1.0], 4) != cam.OUTSIDE): + # Sphere is inside frustum ! + # Do something useful ! + else: + # Sphere is outside frustum .. method:: boxInsideFrustum(box) Tests the given box against the view frustum. - .. code-block:: python - - import GameLogic - co = GameLogic.getCurrentController() - cam = co.owner - - # Box to test... - box = [] - box.append([-1.0, -1.0, -1.0]) - box.append([-1.0, -1.0, 1.0]) - box.append([-1.0, 1.0, -1.0]) - box.append([-1.0, 1.0, 1.0]) - box.append([ 1.0, -1.0, -1.0]) - box.append([ 1.0, -1.0, 1.0]) - box.append([ 1.0, 1.0, -1.0]) - box.append([ 1.0, 1.0, 1.0]) - - if (cam.boxInsideFrustum(box) != cam.OUTSIDE): - # Box is inside/intersects frustum ! - # Do something useful ! - else: - # Box is outside the frustum ! - :arg box: Eight (8) corner points of the box (in world coordinates.) :type box: list of lists - :return: INSIDE, OUTSIDE or INTERSECT + :return: :data:`~bge.types.KX_Camera.INSIDE`, :data:`~bge.types.KX_Camera.OUTSIDE` or :data:`~bge.types.KX_Camera.INTERSECT` .. note:: When the camera is first initialized the result will be invalid because the projection matrix has not been set. + .. code-block:: python + + import GameLogic + co = GameLogic.getCurrentController() + cam = co.owner + + # Box to test... + box = [] + box.append([-1.0, -1.0, -1.0]) + box.append([-1.0, -1.0, 1.0]) + box.append([-1.0, 1.0, -1.0]) + box.append([-1.0, 1.0, 1.0]) + box.append([ 1.0, -1.0, -1.0]) + box.append([ 1.0, -1.0, 1.0]) + box.append([ 1.0, 1.0, -1.0]) + box.append([ 1.0, 1.0, 1.0]) + + if (cam.boxInsideFrustum(box) != cam.OUTSIDE): + # Box is inside/intersects frustum ! + # Do something useful ! + else: + # Box is outside the frustum ! + .. method:: pointInsideFrustum(point) Tests the given point against the view frustum. - .. code-block:: python - - import GameLogic - co = GameLogic.getCurrentController() - cam = co.owner - - # Test point [0.0, 0.0, 0.0] - if (cam.pointInsideFrustum([0.0, 0.0, 0.0])): - # Point is inside frustum ! - # Do something useful ! - else: - # Box is outside the frustum ! - :arg point: The point to test (in world coordinates.) :type point: 3D Vector :return: True if the given point is inside this camera's viewing frustum. @@ -4444,6 +4331,19 @@ Game Engine bge.types Module When the camera is first initialized the result will be invalid because the projection matrix has not been set. + .. code-block:: python + + import GameLogic + co = GameLogic.getCurrentController() + cam = co.owner + + # Test point [0.0, 0.0, 0.0] + if (cam.pointInsideFrustum([0.0, 0.0, 0.0])): + # Point is inside frustum ! + # Do something useful ! + else: + # Box is outside the frustum ! + .. method:: getCameraToWorld() Returns the camera-to-world transform. @@ -4497,12 +4397,6 @@ Game Engine bge.types Module Gets the vector from the camera position in the screen coordinate direction. - .. code-block:: python - - # Gets the vector of the camera front direction: - m_vect = camera.getScreenVect(0.5, 0.5) - - :arg x: X Axis :type x: float :arg y: Y Axis @@ -4510,16 +4404,16 @@ Game Engine bge.types Module :rtype: 3D Vector :return: The vector from screen coordinate. + .. code-block:: python + + # Gets the vector of the camera front direction: + m_vect = camera.getScreenVect(0.5, 0.5) + .. method:: getScreenRay(x, y, dist=inf, property=None) Look towards a screen coordinate (x, y) and find first object hit within dist that matches prop. The ray is similar to KX_GameObject->rayCastTo. - .. code-block:: python - - # Gets an object with a property "wall" in front of the camera within a distance of 100: - target = camera.getScreenRay(0.5, 0.5, 100, "wall") - :arg x: X Axis :type x: float :arg y: Y Axis @@ -4531,6 +4425,11 @@ Game Engine bge.types Module :rtype: :class:`KX_GameObject` :return: the first object hit or None if no object or object does not match prop + .. code-block:: python + + # Gets an object with a property "wall" in front of the camera within a distance of 100: + target = camera.getScreenRay(0.5, 0.5, 100, "wall") + .. class:: BL_ArmatureObject(KX_GameObject) An armature object. @@ -4562,35 +4461,45 @@ Game Engine bge.types Module Armature Actuators change constraint condition on armatures. - .. attribute:: KX_ACT_ARMATURE_RUN + .. _armatureactuator-constants-type: + + Constants related to :data:`~bge.types.BL_ArmatureActuator.type` + + .. data:: KX_ACT_ARMATURE_RUN - see type + Just make sure the armature will be updated on the next graphic frame. This is the only persistent mode of the actuator: it executes automatically once per frame until stopped by a controller + + :value: 0 - .. attribute:: KX_ACT_ARMATURE_ENABLE + .. data:: KX_ACT_ARMATURE_ENABLE - see type + Enable the constraint. + + :value: 1 - .. attribute:: KX_ACT_ARMATURE_DISABLE + .. data:: KX_ACT_ARMATURE_DISABLE - see type + Disable the constraint (runtime constraint values are not updated). + + :value: 2 - .. attribute:: KX_ACT_ARMATURE_SETTARGET + .. data:: KX_ACT_ARMATURE_SETTARGET - see type + Change target and subtarget of constraint. + + :value: 3 - .. attribute:: KX_ACT_ARMATURE_SETWEIGHT + .. data:: KX_ACT_ARMATURE_SETWEIGHT - see type + Change weight of (only for IK constraint). - .. attribute:: type + :value: 4 + + .. attribute:: type The type of action that the actuator executes when it is active. - * KX_ACT_ARMATURE_RUN(0) just make sure the armature will be updated on the next graphic frame. This is the only persistent mode of the actuator: it executes automatically once per frame until stopped by a controller - * KX_ACT_ARMATURE_ENABLE(1) enable the constraint. - * KX_ACT_ARMATURE_DISABLE(2) disable the constraint (runtime constraint values are not updated). - * KX_ACT_ARMATURE_SETTARGET(3) change target and subtarget of constraint. - * KX_ACT_ARMATURE_SETWEIGHT(4) change weight of (only for IK constraint). + Can be one of :ref:`these constants ` :type: integer @@ -4634,26 +4543,48 @@ Game Engine bge.types Module Armature sensor detect conditions on armatures. - See :data:`type` + .. _armaturesensor-type: + + Constants related to :data:`type` .. data:: KX_ARMSENSOR_STATE_CHANGED - .. data:: KX_ARMSENSOR_LIN_ERROR_BELOW - .. data:: KX_ARMSENSOR_LIN_ERROR_ABOVE - .. data:: KX_ARMSENSOR_ROT_ERROR_BELOW - .. data:: KX_ARMSENSOR_ROT_ERROR_ABOVE + + Detect that the constraint is changing state (active/inactive) + :value: 0 + + .. data:: KX_ARMSENSOR_LIN_ERROR_BELOW + + Detect that the constraint linear error is above a threshold + + :value: 1 + + .. data:: KX_ARMSENSOR_LIN_ERROR_ABOVE + + Detect that the constraint linear error is below a threshold + + :value: 2 + + .. data:: KX_ARMSENSOR_ROT_ERROR_BELOW + + Detect that the constraint rotation error is above a threshold + + :value: 3 + + .. data:: KX_ARMSENSOR_ROT_ERROR_ABOVE + + Detect that the constraint rotation error is below a threshold + + :value: 4 + .. attribute:: type The type of measurement that the sensor make when it is active. + + Can be one of :ref:`these constants ` :type: integer. - * KX_ARMSENSOR_STATE_CHANGED(0) detect that the constraint is changing state (active/inactive) - * KX_ARMSENSOR_LIN_ERROR_BELOW(1) detect that the constraint linear error is above a threshold - * KX_ARMSENSOR_LIN_ERROR_ABOVE(2) detect that the constraint linear error is below a threshold - * KX_ARMSENSOR_ROT_ERROR_BELOW(3) detect that the constraint rotation error is above a threshold - * KX_ARMSENSOR_ROT_ERROR_ABOVE(4) detect that the constraint rotation error is below a threshold - .. attribute:: constraint The constraint object this sensor is watching. @@ -4662,8 +4593,6 @@ Game Engine bge.types Module .. attribute:: value - :type: float - The threshold used in the comparison with the constraint error The linear error is only updated on CopyPose/Distance IK constraint with iTaSC solver The rotation error is only updated on CopyPose+rotation IK constraint with iTaSC solver @@ -4671,6 +4600,8 @@ Game Engine bge.types Module The rotation error on CopyPose is always >= 0: it is the norm of the equivalent rotation vector between the bone and the target orientations The linear error on Distance can be positive if the distance between the bone and the target is greater than the desired distance, and negative if the distance is smaller. + :type: float + .. class:: BL_ArmatureConstraint(PyObjectPlus) Proxy to Armature Constraint. Allows to change constraint on the fly. @@ -4680,8 +4611,9 @@ Game Engine bge.types Module Not all armature constraints are supported in the GE. + .. _armatureconstraint-constants-type: - Constants related to see :data:`type` + Constants related to :data:`type` .. data:: CONSTRAINT_TYPE_TRACKTO .. data:: CONSTRAINT_TYPE_KINEMATIC @@ -4695,23 +4627,78 @@ Game Engine bge.types Module .. data:: CONSTRAINT_TYPE_TRANSFORM .. data:: CONSTRAINT_TYPE_DISTLIMIT + .. _armatureconstraint-constants-ik-type: - Constants related to see :data:`ik_type` - + Constants related to :data:`ik_type` + .. data:: CONSTRAINT_IK_COPYPOSE + + constraint is trying to match the position and eventually the rotation of the target. + + :value: 0 + .. data:: CONSTRAINT_IK_DISTANCE - .. data:: CONSTRAINT_IK_MODE_INSIDE - .. data:: CONSTRAINT_IK_MODE_OUTSIDE - .. data:: CONSTRAINT_IK_MODE_ONSURFACE - .. data:: CONSTRAINT_IK_FLAG_TIP - .. data:: CONSTRAINT_IK_FLAG_ROT - .. data:: CONSTRAINT_IK_FLAG_STRETCH - .. data:: CONSTRAINT_IK_FLAG_POS + + Constraint is maintaining a certain distance to target subject to ik_mode + + :value: 1 + .. _armatureconstraint-constants-ik-flag: + + Constants related to :data:`ik_flag` + + .. data:: CONSTRAINT_IK_FLAG_TIP + + Set when the constraint operates on the head of the bone and not the tail + + :value: 1 + + .. data:: CONSTRAINT_IK_FLAG_ROT + + Set when the constraint tries to match the orientation of the target + + :value: 2 + + .. data:: CONSTRAINT_IK_FLAG_STRETCH + + Set when the armature is allowed to stretch (only the bones with stretch factor > 0.0) + + :value: 16 + + .. data:: CONSTRAINT_IK_FLAG_POS + + Set when the constraint tries to match the position of the target. + + :value: 32 + + .. _armatureconstraint-constants-ik-mode: + + Constants related to :data:`ik_mode` + + .. data:: CONSTRAINT_IK_MODE_INSIDE + + The constraint tries to keep the bone within ik_dist of target + + :value: 0 + + .. data:: CONSTRAINT_IK_MODE_OUTSIDE + + The constraint tries to keep the bone outside ik_dist of the target + + :value: 1 + + .. data:: CONSTRAINT_IK_MODE_ONSURFACE + + The constraint tries to keep the bone exactly at ik_dist of the target. + + :value: 2 + .. attribute:: type Type of constraint, (read-only). + Use one of :ref:`these constants`. + :type: integer, one of CONSTRAINT_TYPE_* constants .. attribute:: name @@ -4792,19 +4779,15 @@ Game Engine bge.types Module Type of IK constraint, (read-only). + Use one of :ref:`these constants`. + :type: integer. - * CONSTRAINT_IK_COPYPOSE(0) constraint is trying to match the position and eventually the rotation of the target. - * CONSTRAINT_IK_DISTANCE(1) constraint is maintaining a certain distance to target subject to ik_mode - .. attribute:: ik_flag - Combination of IK constraint option flags, read-only - - * CONSTRAINT_IK_FLAG_TIP(1) : set when the constraint operates on the head of the bone and not the tail - * CONSTRAINT_IK_FLAG_ROT(2) : set when the constraint tries to match the orientation of the target - * CONSTRAINT_IK_FLAG_STRETCH(16) : set when the armature is allowed to stretch (only the bones with stretch factor > 0.0) - * CONSTRAINT_IK_FLAG_POS(32) : set when the constraint tries to match the position of the target. + Combination of IK constraint option flags, read-only. + + Use one of :ref:`these constants`. :type: integer @@ -4816,12 +4799,10 @@ Game Engine bge.types Module .. attribute:: ik_mode + Use one of :ref:`these constants`. + Additional mode for IK constraint. Currently only used for Distance constraint: - * CONSTRAINT_IK_MODE_INSIDE(0) : the constraint tries to keep the bone within ik_dist of target - * CONSTRAINT_IK_MODE_OUTSIDE(1) : the constraint tries to keep the bone outside ik_dist of the target - * CONSTRAINT_IK_MODE_ONSURFACE(2) : the constraint tries to keep the bone exactly at ik_dist of the target. - :type: integer .. class:: BL_ArmatureChannel(PyObjectPlus) @@ -5086,8 +5067,6 @@ Game Engine bge.types Module Control bone rotation in term of joint angle (for robotic applications), read-write. - :type: vector [x, y, z] - When writing to this attribute, you pass a [x, y, z] vector and an appropriate set of euler angles or quaternion is calculated according to the rotation_mode. When you read this attribute, the current pose matrix is converted into a [x, y, z] vector representing the joint angles. @@ -5099,6 +5078,8 @@ Game Engine bge.types Module * 2DoF joint X+Z: treated as a 2DoF joint with rotation axis on the X/Z plane. The x and z values are used as the coordinates of the rotation vector in the X/Z plane. * 3DoF joint X+Y+Z: treated as a revolute joint. The [x, y, z] vector represents the equivalent rotation vector to bring the joint from the rest pose to the new pose. + :type: vector [x, y, z] + .. note:: The bone must be part of an IK chain if you want to set the ik_dof_x/ik_dof_y/ik_dof_z attributes via the UI, but this will interfere with this attribute since the IK solver will overwrite the pose. You can stay in control of the armature if you create an IK constraint but do not finalize it (e.g. don't set a target) the IK solver will not run but the IK panel will show up on the UI for each bone in the chain. From 920850e6300735cd17ef7e73127a8b4c2503d229 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Tue, 8 Jun 2010 00:08:45 +0000 Subject: [PATCH 025/674] Bugfix #22453: Jump to Next keyframe doesn't work on some frame Jump to keyframe would get 'stuck' if it encountered a keyframe on "fraction" frames. Now, it will try multiple times until it finds one. --- source/blender/editors/screen/screen_ops.c | 29 ++++++++++++++++------ 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 56abff8c0b2..592f40d26b6 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -1571,6 +1571,7 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op) ActKeyColumn *ak; float cfra= (scene)? (float)(CFRA) : 0.0f; short next= RNA_boolean_get(op->ptr, "next"); + short done = 0; /* sanity checks */ if (scene == NULL) @@ -1589,15 +1590,27 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op) BLI_dlrbTree_linkedlist_sync(&keys); /* find matching keyframe in the right direction */ - if (next) - ak= (ActKeyColumn *)BLI_dlrbTree_search_next(&keys, compare_ak_cfraPtr, &cfra); - else - ak= (ActKeyColumn *)BLI_dlrbTree_search_prev(&keys, compare_ak_cfraPtr, &cfra); + do { + if (next) + ak= (ActKeyColumn *)BLI_dlrbTree_search_next(&keys, compare_ak_cfraPtr, &cfra); + else + ak= (ActKeyColumn *)BLI_dlrbTree_search_prev(&keys, compare_ak_cfraPtr, &cfra); + + if (ak) { + if (CFRA != (int)ak->cfra) { + /* this changes the frame, so set the frame and we're done */ + CFRA= (int)ak->cfra; + done = 1; + } + else { + /* make this the new starting point for the search */ + cfra = ak->cfra; + } + } + } while ((ak != NULL) && (done == 0)); - /* set the new frame (if keyframe found) */ - if (ak) - CFRA= (int)ak->cfra; - else + /* any success? */ + if (done == 0) BKE_report(op->reports, RPT_INFO, "No more keyframes to jump to in this direction"); /* free temp stuff */ From c5605c10d65a22ac6ccb15cbdb0facf121329b85 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Tue, 8 Jun 2010 00:51:57 +0000 Subject: [PATCH 026/674] Assorted View2D formatting tidyups... --- source/blender/editors/interface/view2d_ops.c | 83 +++++++++---------- 1 file changed, 41 insertions(+), 42 deletions(-) diff --git a/source/blender/editors/interface/view2d_ops.c b/source/blender/editors/interface/view2d_ops.c index 3e66521f77d..a5ed57a9ee8 100644 --- a/source/blender/editors/interface/view2d_ops.c +++ b/source/blender/editors/interface/view2d_ops.c @@ -151,7 +151,8 @@ static void view_pan_apply(bContext *C, wmOperator *op) WM_event_add_mousemove(C); /* exceptions */ - if(vpd->sa->spacetype==SPACE_OUTLINER) { + if (vpd->sa->spacetype==SPACE_OUTLINER) { + /* don't rebuild full tree, since we're just changing our view */ SpaceOops *soops= vpd->sa->spacedata.first; soops->storeflag |= SO_TREESTORE_REDRAW; } @@ -292,7 +293,7 @@ void VIEW2D_OT_pan(wmOperatorType *ot) ot->modal= view_pan_modal; ot->cancel= view_pan_cancel; - /* operator is repeatable */ + /* operator is modal */ ot->flag= OPTYPE_BLOCKING|OPTYPE_GRAB_POINTER; /* rna - must keep these in sync with the other operators */ @@ -339,9 +340,6 @@ void VIEW2D_OT_scroll_right(wmOperatorType *ot) /* api callbacks */ ot->exec= view_scrollright_exec; - /* operator is repeatable */ - // ot->flag= OPTYPE_REGISTER; - /* rna - must keep these in sync with the other operators */ RNA_def_int(ot->srna, "deltax", 0, INT_MIN, INT_MAX, "Delta X", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "deltay", 0, INT_MIN, INT_MAX, "Delta Y", "", INT_MIN, INT_MAX); @@ -386,9 +384,6 @@ void VIEW2D_OT_scroll_left(wmOperatorType *ot) /* api callbacks */ ot->exec= view_scrollleft_exec; - /* operator is repeatable */ - // ot->flag= OPTYPE_REGISTER; - /* rna - must keep these in sync with the other operators */ RNA_def_int(ot->srna, "deltax", 0, INT_MIN, INT_MAX, "Delta X", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "deltay", 0, INT_MIN, INT_MAX, "Delta Y", "", INT_MIN, INT_MAX); @@ -432,9 +427,6 @@ void VIEW2D_OT_scroll_down(wmOperatorType *ot) /* api callbacks */ ot->exec= view_scrolldown_exec; - /* operator is repeatable */ - // ot->flag= OPTYPE_REGISTER; - /* rna - must keep these in sync with the other operators */ RNA_def_int(ot->srna, "deltax", 0, INT_MIN, INT_MAX, "Delta X", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "deltay", 0, INT_MIN, INT_MAX, "Delta Y", "", INT_MIN, INT_MAX); @@ -479,9 +471,6 @@ void VIEW2D_OT_scroll_up(wmOperatorType *ot) /* api callbacks */ ot->exec= view_scrollup_exec; - /* operator is repeatable */ - // ot->flag= OPTYPE_REGISTER; - /* rna - must keep these in sync with the other operators */ RNA_def_int(ot->srna, "deltax", 0, INT_MIN, INT_MAX, "Delta X", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "deltay", 0, INT_MIN, INT_MAX, "Delta Y", "", INT_MIN, INT_MAX); @@ -569,11 +558,12 @@ static void view_zoomstep_apply(bContext *C, wmOperator *op) float dx, dy, facx, facy; /* calculate amount to move view by, ensuring symmetry so the - * old zoom level is restored after zooming back the same amount */ + * old zoom level is restored after zooming back the same amount + */ facx= RNA_float_get(op->ptr, "zoomfacx"); facy= RNA_float_get(op->ptr, "zoomfacy"); - if(facx >= 0.0f) { + if (facx >= 0.0f) { dx= (v2d->cur.xmax - v2d->cur.xmin) * facx; dy= (v2d->cur.ymax - v2d->cur.ymin) * facy; } @@ -588,16 +578,17 @@ static void view_zoomstep_apply(bContext *C, wmOperator *op) v2d->cur.xmax -= 2*dx; } else if (v2d->keepofs & V2D_KEEPOFS_X) { - if(v2d->align & V2D_ALIGN_NO_POS_X) + if (v2d->align & V2D_ALIGN_NO_POS_X) v2d->cur.xmin += 2*dx; else v2d->cur.xmax -= 2*dx; } else { - if(U.uiflag & USER_ZOOM_TO_MOUSEPOS) { + if (U.uiflag & USER_ZOOM_TO_MOUSEPOS) { float mval_fac = (vzd->mx_2d - v2d->cur.xmin) / (v2d->cur.xmax-v2d->cur.xmin); float mval_faci = 1.0 - mval_fac; float ofs= (mval_fac * dx) - (mval_faci * dx); + v2d->cur.xmin += ofs + dx; v2d->cur.xmax += ofs - dx; } @@ -612,19 +603,21 @@ static void view_zoomstep_apply(bContext *C, wmOperator *op) v2d->cur.ymax -= 2*dy; } else if (v2d->keepofs & V2D_KEEPOFS_Y) { - if(v2d->align & V2D_ALIGN_NO_POS_Y) + if (v2d->align & V2D_ALIGN_NO_POS_Y) v2d->cur.ymin += 2*dy; else v2d->cur.ymax -= 2*dy; } else { - if(U.uiflag & USER_ZOOM_TO_MOUSEPOS) { + if (U.uiflag & USER_ZOOM_TO_MOUSEPOS) { float mval_fac = (vzd->my_2d - v2d->cur.ymin) / (v2d->cur.ymax-v2d->cur.ymin); float mval_faci = 1.0 - mval_fac; float ofs= (mval_fac * dy) - (mval_faci * dy); + v2d->cur.ymin += ofs + dy; v2d->cur.ymax += ofs - dy; - } else { + } + else { v2d->cur.ymin += dy; v2d->cur.ymax -= dy; } @@ -679,9 +672,13 @@ static int view_zoomin_invoke(bContext *C, wmOperator *op, wmEvent *event) vzd= op->customdata; - if(U.uiflag & USER_ZOOM_TO_MOUSEPOS) { + if (U.uiflag & USER_ZOOM_TO_MOUSEPOS) { ARegion *ar= CTX_wm_region(C); - UI_view2d_region_to_view(&ar->v2d, event->x - ar->winrct.xmin, event->y - ar->winrct.ymin, &vzd->mx_2d, &vzd->my_2d); + + /* store initial mouse position (in view space) */ + UI_view2d_region_to_view(&ar->v2d, + event->x - ar->winrct.xmin, event->y - ar->winrct.ymin, + &vzd->mx_2d, &vzd->my_2d); } return view_zoomin_exec(C, op); @@ -699,9 +696,6 @@ void VIEW2D_OT_zoom_in(wmOperatorType *ot) ot->exec= view_zoomin_exec; ot->poll= view_zoom_poll; - /* operator is repeatable */ - // ot->flag= OPTYPE_REGISTER; - /* rna - must keep these in sync with the other operators */ RNA_def_float(ot->srna, "zoomfacx", 0, -FLT_MAX, FLT_MAX, "Zoom Factor X", "", -FLT_MAX, FLT_MAX); RNA_def_float(ot->srna, "zoomfacy", 0, -FLT_MAX, FLT_MAX, "Zoom Factor Y", "", -FLT_MAX, FLT_MAX); @@ -737,7 +731,11 @@ static int view_zoomout_invoke(bContext *C, wmOperator *op, wmEvent *event) if(U.uiflag & USER_ZOOM_TO_MOUSEPOS) { ARegion *ar= CTX_wm_region(C); - UI_view2d_region_to_view(&ar->v2d, event->x - ar->winrct.xmin, event->y - ar->winrct.ymin, &vzd->mx_2d, &vzd->my_2d); + + /* store initial mouse position (in view space) */ + UI_view2d_region_to_view(&ar->v2d, + event->x - ar->winrct.xmin, event->y - ar->winrct.ymin, + &vzd->mx_2d, &vzd->my_2d); } return view_zoomout_exec(C, op); @@ -755,9 +753,6 @@ void VIEW2D_OT_zoom_out(wmOperatorType *ot) ot->exec= view_zoomout_exec; ot->poll= view_zoom_poll; - /* operator is repeatable */ - // ot->flag= OPTYPE_REGISTER; - /* rna - must keep these in sync with the other operators */ RNA_def_float(ot->srna, "zoomfacx", 0, -FLT_MAX, FLT_MAX, "Zoom Factor X", "", -FLT_MAX, FLT_MAX); RNA_def_float(ot->srna, "zoomfacy", 0, -FLT_MAX, FLT_MAX, "Zoom Factor Y", "", -FLT_MAX, FLT_MAX); @@ -789,10 +784,11 @@ static void view_zoomdrag_apply(bContext *C, wmOperator *op) v2d->cur.xmax -= 2*dx; } else { - if(U.uiflag & USER_ZOOM_TO_MOUSEPOS) { + if (U.uiflag & USER_ZOOM_TO_MOUSEPOS) { float mval_fac = (vzd->mx_2d - v2d->cur.xmin) / (v2d->cur.xmax-v2d->cur.xmin); float mval_faci = 1.0 - mval_fac; float ofs= (mval_fac * dx) - (mval_faci * dx); + v2d->cur.xmin += ofs + dx; v2d->cur.xmax += ofs - dx; } @@ -807,10 +803,11 @@ static void view_zoomdrag_apply(bContext *C, wmOperator *op) v2d->cur.ymax -= 2*dy; } else { - if(U.uiflag & USER_ZOOM_TO_MOUSEPOS) { + if (U.uiflag & USER_ZOOM_TO_MOUSEPOS) { float mval_fac = (vzd->my_2d - v2d->cur.ymin) / (v2d->cur.ymax-v2d->cur.ymin); float mval_faci = 1.0 - mval_fac; float ofs= (mval_fac * dy) - (mval_faci * dy); + v2d->cur.ymin += ofs + dy; v2d->cur.ymax += ofs - dy; } @@ -871,7 +868,8 @@ static int view_zoomdrag_invoke(bContext *C, wmOperator *op, wmEvent *event) vzd->lasty= event->prevy; /* As we have only 1D information (magnify value), feed both axes - with magnify information that is stored in x axis */ + * with magnify information that is stored in x axis + */ fac= 0.01f * (event->x - event->prevx); dx= fac * (v2d->cur.xmax - v2d->cur.xmin) / 10.0f; dy= fac * (v2d->cur.ymax - v2d->cur.ymin) / 10.0f; @@ -890,9 +888,13 @@ static int view_zoomdrag_invoke(bContext *C, wmOperator *op, wmEvent *event) RNA_float_set(op->ptr, "deltax", 0); RNA_float_set(op->ptr, "deltay", 0); - if(U.uiflag & USER_ZOOM_TO_MOUSEPOS) { + if (U.uiflag & USER_ZOOM_TO_MOUSEPOS) { ARegion *ar= CTX_wm_region(C); - UI_view2d_region_to_view(&ar->v2d, event->x - ar->winrct.xmin, event->y - ar->winrct.ymin, &vzd->mx_2d, &vzd->my_2d); + + /* store initial mouse position (in view space) */ + UI_view2d_region_to_view(&ar->v2d, + event->x - ar->winrct.xmin, event->y - ar->winrct.ymin, + &vzd->mx_2d, &vzd->my_2d); } if (v2d->keepofs & V2D_LOCKOFS_X) @@ -1014,7 +1016,7 @@ void VIEW2D_OT_zoom(wmOperatorType *ot) ot->poll= view_zoom_poll; /* operator is repeatable */ - // ot->flag= OPTYPE_REGISTER|OPTYPE_BLOCKING; + // ot->flag= OPTYPE_BLOCKING; /* rna - must keep these in sync with the other operators */ RNA_def_float(ot->srna, "deltax", 0, -FLT_MAX, FLT_MAX, "Delta X", "", -FLT_MAX, FLT_MAX); @@ -1202,6 +1204,7 @@ static short mouse_in_scroller_handle(int mouse, int sc_min, int sc_max, int sh_ } /* check if mouse is in or past either handle */ + // TODO: check if these extents are still valid or not in_max= ( (mouse >= (sh_max - V2D_SCROLLER_HANDLE_SIZE)) && (mouse <= (sh_max + V2D_SCROLLER_HANDLE_SIZE)) ); in_min= ( (mouse <= (sh_min + V2D_SCROLLER_HANDLE_SIZE)) && (mouse >= (sh_min - V2D_SCROLLER_HANDLE_SIZE)) ); in_bar= ( (mouse < (sh_max - V2D_SCROLLER_HANDLE_SIZE)) && (mouse > (sh_min + V2D_SCROLLER_HANDLE_SIZE)) ); @@ -1400,8 +1403,7 @@ static int scroller_activate_modal(bContext *C, wmOperator *op, wmEvent *event) case LEFTMOUSE: if (event->val==KM_RELEASE) { - - /* click was in empty space outside scroll bar */ + /* single-click was in empty space outside bubble, so scroll by 1 'page' */ if (ELEM(vsm->zone, SCROLLHANDLE_MIN_OUTSIDE, SCROLLHANDLE_MAX_OUTSIDE)) { if (vsm->zone == SCROLLHANDLE_MIN_OUTSIDE) vsm->delta = -vsm->scrollbarwidth * 0.8; @@ -1532,7 +1534,7 @@ static int reset_exec(bContext *C, wmOperator *op) v2d->cur.ymax= v2d->cur.ymin + winy; /* align */ - if(v2d->align) { + if (v2d->align) { /* posx and negx flags are mutually exclusive, so watch out */ if ((v2d->align & V2D_ALIGN_NO_POS_X) && !(v2d->align & V2D_ALIGN_NO_NEG_X)) { v2d->cur.xmax= 0.0f; @@ -1575,9 +1577,6 @@ void VIEW2D_OT_reset(wmOperatorType *ot) /* api callbacks */ ot->exec= reset_exec; ot->poll= view2d_poll; - - /* flags */ - // ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } /* ********************************************************* */ From 7caae1104eb2ed39d361f43b720ad99e6042db8a Mon Sep 17 00:00:00 2001 From: Daniel Salazar Date: Tue, 8 Jun 2010 10:42:35 +0000 Subject: [PATCH 027/674] Reverting Tom's change to Merge to Quad in Trunk too --- source/blender/editors/mesh/editmesh_tools.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index b907171afb4..13656ca1b7e 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -7113,9 +7113,6 @@ static int tris_convert_to_quads_exec(bContext *C, wmOperator *op) Object *obedit= CTX_data_edit_object(C); EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data); - /* recalc outside so that joining doesn't create a hole */ - EM_recalc_normal_direction(em, 0, 1); - join_triangles(em); DAG_id_flush_update(obedit->data, OB_RECALC_DATA); From c5cee166309d3e334a3565b081173a151e554bb6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 8 Jun 2010 10:56:59 +0000 Subject: [PATCH 028/674] better not have an instant crash key, script reload currently disabled ubless running in debug mode. removing keying sets and netrender makes reloading work so probably a problem with how rna works with these classes. --- source/blender/editors/space_script/script_edit.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/space_script/script_edit.c b/source/blender/editors/space_script/script_edit.c index 064e2295006..90867712322 100644 --- a/source/blender/editors/space_script/script_edit.c +++ b/source/blender/editors/space_script/script_edit.c @@ -38,6 +38,7 @@ #include "BKE_global.h" #include "BKE_screen.h" #include "BKE_utildefines.h" +#include "BKE_report.h" #include "WM_api.h" #include "WM_types.h" @@ -87,7 +88,15 @@ void SCRIPT_OT_python_file_run(wmOperatorType *ot) static int script_reload_exec(bContext *C, wmOperator *op) { #ifndef DISABLE_PYTHON - BPY_eval_string(C, "__import__('bpy').utils.load_scripts(reload_scripts=True)"); + /* TODO, this crashes on netrender and keying sets, need to look into why + * disable for now unless running in debug mode */ + if(G.f & G_DEBUG) { + BPY_eval_string(C, "__import__('bpy').utils.load_scripts(reload_scripts=True)"); + } + else { + BKE_reportf(op->reports, RPT_ERROR, "reloading is currently unstable, only operates in debug mode.\n"); + return OPERATOR_CANCELLED; + } return OPERATOR_FINISHED; #endif return OPERATOR_CANCELLED; From 728799e0d87e93522b68bacdcf064f514171ede5 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 8 Jun 2010 13:03:49 +0000 Subject: [PATCH 029/674] texture user attributes, users_material, users_object_modifier --- release/scripts/modules/bpy_types.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 28a30c232a9..d33b43f2e58 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -38,6 +38,22 @@ class Context(StructRNA): return new_context +class Texture(bpy_types.ID): + __slots__ = () + + @property + def users_material(self): + """Materials that use this texture""" + import bpy + return tuple(mat for mat in bpy.data.materials if self in [slot.texture for slot in mat.texture_slots if slot]) + + @property + def users_object_modifier(self): + """Object modifiers that use this texture""" + import bpy + return tuple(obj for obj in bpy.data.objects if self in [mod.texture for mod in obj.modifiers if mod.type == 'DISPLACE']) + + class Group(bpy_types.ID): __slots__ = () From d4518ca79e217b2f850b21097fc5dd1f464cfa4f Mon Sep 17 00:00:00 2001 From: Diego Borghetti Date: Tue, 8 Jun 2010 20:24:28 +0000 Subject: [PATCH 030/674] Fix #22534 linking object data for two forces results in crash. This is because the make_links_data_exec don't check for the object type like before, so try to access the obdata of an empty and blender crash. The solution is not the best, we have a new function allow_make_links_data to check if we can links data from one object to another. The real solution is build the menu like the 2.4x, so only show the options that we allow for the object type that we have select/active. Matt, any suggestion ? --- .../blender/editors/object/object_relations.c | 91 ++++++++++++------- 1 file changed, 58 insertions(+), 33 deletions(-) diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index 1f970b50716..28eb919dbe7 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -1188,6 +1188,29 @@ enum { MAKE_LINKS_MODIFIERS }; +/* Return 1 if make link data is allow, zero otherwise */ +static int allow_make_links_data(int ev, Object *ob, Object *obt) +{ + if (ev == MAKE_LINKS_OBDATA) { + if (ob->type == OB_MESH && obt->type == OB_MESH) + return(1); + } + else if (ev == MAKE_LINKS_MATERIALS) { + if ((ob->type == OB_MESH || ob->type == OB_CURVE || ob->type == OB_FONT || ob->type == OB_SURF || ob->type == OB_MBALL) && + (obt->type == OB_MESH || obt->type == OB_CURVE || obt->type == OB_FONT || obt->type == OB_SURF || obt->type == OB_MBALL)) + return(1); + } + else if (ev == MAKE_LINKS_ANIMDATA) + return(1); + else if (ev == MAKE_LINKS_DUPLIGROUP) + return(1); + else if (ev == MAKE_LINKS_MODIFIERS) { + if (ob->type != OB_EMPTY && obt->type != OB_EMPTY) + return(1); + } + return(0); +} + static int make_links_data_exec(bContext *C, wmOperator *op) { int event = RNA_int_get(op->ptr, "type"); @@ -1199,43 +1222,45 @@ static int make_links_data_exec(bContext *C, wmOperator *op) CTX_DATA_BEGIN(C, Object*, obt, selected_editable_objects) { if(ob != obt) { - switch(event) { - case MAKE_LINKS_OBDATA: /* obdata */ - id= obt->data; - id->us--; + if (allow_make_links_data(event, ob, obt)) { + switch(event) { + case MAKE_LINKS_OBDATA: /* obdata */ + id= obt->data; + id->us--; - id= ob->data; - id_us_plus(id); - obt->data= id; + id= ob->data; + id_us_plus(id); + obt->data= id; - /* if amount of material indices changed: */ - test_object_materials(obt->data); + /* if amount of material indices changed: */ + test_object_materials(obt->data); - obt->recalc |= OB_RECALC_DATA; - break; - case MAKE_LINKS_MATERIALS: - /* new approach, using functions from kernel */ - for(a=0; atotcol; a++) { - Material *ma= give_current_material(ob, a+1); - assign_material(obt, ma, a+1); /* also works with ma==NULL */ + obt->recalc |= OB_RECALC_DATA; + break; + case MAKE_LINKS_MATERIALS: + /* new approach, using functions from kernel */ + for(a=0; atotcol; a++) { + Material *ma= give_current_material(ob, a+1); + assign_material(obt, ma, a+1); /* also works with ma==NULL */ + } + break; + case MAKE_LINKS_ANIMDATA: + BKE_copy_animdata_id((ID *)obt, (ID *)ob); + BKE_copy_animdata_id((ID *)obt->data, (ID *)ob->data); + break; + case MAKE_LINKS_DUPLIGROUP: + if(ob->dup_group) ob->dup_group->id.us--; + obt->dup_group= ob->dup_group; + if(obt->dup_group) { + id_us_plus((ID *)obt->dup_group); + obt->transflag |= OB_DUPLIGROUP; + } + break; + case MAKE_LINKS_MODIFIERS: + object_link_modifiers(obt, ob); + obt->recalc |= OB_RECALC; + break; } - break; - case MAKE_LINKS_ANIMDATA: - BKE_copy_animdata_id((ID *)obt, (ID *)ob); - BKE_copy_animdata_id((ID *)obt->data, (ID *)ob->data); - break; - case MAKE_LINKS_DUPLIGROUP: - if(ob->dup_group) ob->dup_group->id.us--; - obt->dup_group= ob->dup_group; - if(obt->dup_group) { - id_us_plus((ID *)obt->dup_group); - obt->transflag |= OB_DUPLIGROUP; - } - break; - case MAKE_LINKS_MODIFIERS: - object_link_modifiers(obt, ob); - obt->recalc |= OB_RECALC; - break; } } } From 23d68fed88fa69b41d4a5c64d4ad7c9c5626bdbf Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 9 Jun 2010 01:17:51 +0000 Subject: [PATCH 031/674] Changed the HairKey location rna prop to give a location in object space, rather than in its own internally used emitting-face-coordinate-system (which is how the data is stored in DNA - that data now exists in rna as hairkey.location_hairspace) Basically this makes the hair information that's in rna a lot more useful, making it possible to export hair strands to external renderers for example. --- source/blender/makesrna/intern/rna_particle.c | 57 +++++++++++++++++-- 1 file changed, 53 insertions(+), 4 deletions(-) diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c index b115febd741..ac1f27704d8 100644 --- a/source/blender/makesrna/intern/rna_particle.c +++ b/source/blender/makesrna/intern/rna_particle.c @@ -106,6 +106,48 @@ EnumPropertyItem part_hair_ren_as_items[] = { #include "BLI_math.h" #include "BLI_listbase.h" +static void rna_ParticleHairKey_location_object_get(PointerRNA *ptr, float *values) +{ + HairKey *hkey= (HairKey *)ptr->data; + Object *ob = (Object *)ptr->id.data; + ModifierData *md; + ParticleSystemModifierData *psmd=NULL; + ParticleSystem *psys; + ParticleData *pa; + int i; + float hairmat[4][4]; + + for (md = ob->modifiers.first; md; md=md->next) { + if (md->type == eModifierType_ParticleSystem) + psmd= (ParticleSystemModifierData*) md; + } + + psys = psmd->psys; + + if (!psmd || !psmd->dm || !psys) { + values[0] = values[1] = values[2] = 0.f; + return; + } + + /* not a very efficient way of getting hair key location data, + * but it's the best we've got at the present */ + + /* find the particle that corresponds with this HairKey */ + for(i=0, pa=psys->particles; itotpart; i++, pa++) { + + /* hairkeys are stored sequentially in memory, so we can find if + * it's the same particle by comparing pointers, without having + * to iterate over them all */ + if ((hkey >= pa->hair) && (hkey < pa->hair + pa->totkey)) + break; + } + + psys_mat_hair_to_object(ob, psmd->dm, psys->part->from, pa, hairmat); + + copy_v3_v3(values, hkey->co); + mul_m4_v3(hairmat, values); +} + /* property update functions */ static void particle_recalc(Main *bmain, Scene *scene, PointerRNA *ptr, short flag) { @@ -637,6 +679,7 @@ static void rna_ParticleVGroup_name_set_9(PointerRNA *ptr, const char *value) { static void rna_ParticleVGroup_name_set_10(PointerRNA *ptr, const char *value) { psys_vg_name_set__internal(ptr, value, 10); } static void rna_ParticleVGroup_name_set_11(PointerRNA *ptr, const char *value) { psys_vg_name_set__internal(ptr, value, 11); } + #else static void rna_def_particle_hair_key(BlenderRNA *brna) @@ -648,16 +691,22 @@ static void rna_def_particle_hair_key(BlenderRNA *brna) RNA_def_struct_sdna(srna, "HairKey"); RNA_def_struct_ui_text(srna, "Particle Hair Key", "Particle key for hair particle system"); - prop= RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION); - RNA_def_property_float_sdna(prop, NULL, "co"); - RNA_def_property_ui_text(prop, "Location", "Key location"); - prop= RNA_def_property(srna, "time", PROP_FLOAT, PROP_UNSIGNED); RNA_def_property_ui_text(prop, "Time", "Relative time of key over hair length"); prop= RNA_def_property(srna, "weight", PROP_FLOAT, PROP_UNSIGNED); RNA_def_property_range(prop, 0.0, 1.0); RNA_def_property_ui_text(prop, "Weight", "Weight for cloth simulation"); + + prop= RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Location (Object Space)", "Location of the hair key in object space"); + RNA_def_property_float_funcs(prop, "rna_ParticleHairKey_location_object_get", NULL, NULL); + + prop= RNA_def_property(srna, "location_hairspace", PROP_FLOAT, PROP_TRANSLATION); + RNA_def_property_float_sdna(prop, NULL, "co"); + RNA_def_property_ui_text(prop, "Location", "Location of the hair key in its internal coordinate system, relative to the emitting face"); } static void rna_def_particle_key(BlenderRNA *brna) From 1c693079a212a85b6d380ce06bf1bba27b3b6de8 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 9 Jun 2010 02:42:20 +0000 Subject: [PATCH 032/674] Fix [#22538] Crash when Selecting Particle Properties Tab (File-dependant) psys->parent pointer wasn't getting handled in lib_link_particlesystems() --- source/blender/blenloader/intern/readfile.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index b9be5e66106..3ec253f1003 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -3074,6 +3074,7 @@ static void lib_link_particlesystems(FileData *fd, Object *ob, ID *id, ListBase for(; pt; pt=pt->next) pt->ob=newlibadr(fd, id->lib, pt->ob); + psys->parent= newlibadr_us(fd, id->lib, psys->parent); psys->target_ob = newlibadr(fd, id->lib, psys->target_ob); if(psys->clmd) { @@ -3143,7 +3144,7 @@ static void direct_link_particlesystems(FileData *fd, ListBase *particles) psys->childcachebufs.first = psys->childcachebufs.last = NULL; psys->frand = NULL; psys->pdd = NULL; - + direct_link_pointcache_list(fd, &psys->ptcaches, &psys->pointcache); if(psys->clmd) { From 6d49d7043a27f0a2ad8f36f1ccc145f7366c912d Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 9 Jun 2010 04:54:10 +0000 Subject: [PATCH 033/674] Fix [#22111] Quad View panes have wrong view when switching between Global/Local View Joe already committed this to render branch in r28545, but it's not in trunk. The code that was committed doesn't seem to work properly, either, needs braces. --- source/blender/editors/screen/screen_ops.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 592f40d26b6..4d644cecf66 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -2172,18 +2172,22 @@ static int region_quadview_exec(bContext *C, wmOperator *op) rv3d= ar->regiondata; rv3d->viewlock= RV3D_LOCKED; rv3d->view= RV3D_VIEW_FRONT; rv3d->persp= RV3D_ORTHO; + if (rv3d->localvd) { rv3d->localvd->view = rv3d->view; rv3d->localvd->persp = rv3d->persp; } ar= ar->next; rv3d= ar->regiondata; rv3d->viewlock= RV3D_LOCKED; rv3d->view= RV3D_VIEW_TOP; rv3d->persp= RV3D_ORTHO; + if (rv3d->localvd) { rv3d->localvd->view = rv3d->view; rv3d->localvd->persp = rv3d->persp; } ar= ar->next; rv3d= ar->regiondata; rv3d->viewlock= RV3D_LOCKED; rv3d->view= RV3D_VIEW_RIGHT; rv3d->persp= RV3D_ORTHO; + if (rv3d->localvd) { rv3d->localvd->view = rv3d->view; rv3d->localvd->persp = rv3d->persp; } ar= ar->next; rv3d= ar->regiondata; rv3d->view= RV3D_VIEW_CAMERA; rv3d->persp= RV3D_CAMOB; + if (rv3d->localvd) {rv3d->localvd->view = rv3d->view; rv3d->localvd->persp = rv3d->persp; } } #ifdef WM_FAST_DRAW From d36da839b190be792923d26dd1072a1d7685fece Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Jun 2010 06:21:07 +0000 Subject: [PATCH 034/674] reverting own recent change to switch off RULE_MESSAGES since you cant see which files are rebuilding. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 416d4648d69..60543e1939a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,7 +45,7 @@ ENDIF(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) CMAKE_MINIMUM_REQUIRED(VERSION 2.6) # quiet output for Makefiles, 'make -s' helps too -SET_PROPERTY(GLOBAL PROPERTY RULE_MESSAGES OFF) +# SET_PROPERTY(GLOBAL PROPERTY RULE_MESSAGES OFF) PROJECT(Blender) From 668a5156cd67bfc45f308afa712d87849ddd66d7 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 9 Jun 2010 07:55:49 +0000 Subject: [PATCH 035/674] Fix [#22188] Minor UI bug with panels in the properties window. This prevents header-less panels (such as object name in object properties) from being re-sorted when dragging other panels. Also minor tweak, make the 'a' key shortcut to open and close panels only work with there are no other modifier keys (like alt). --- source/blender/editors/interface/interface_panel.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c index 20b7901beef..e598574ed24 100644 --- a/source/blender/editors/interface/interface_panel.c +++ b/source/blender/editors/interface/interface_panel.c @@ -656,6 +656,10 @@ static int find_highest_panel(const void *a1, const void *a2) { const PanelSort *ps1=a1, *ps2=a2; + /* stick uppermost header-less panels to the top of the region - + * prevent them from being sorted */ + if (ps1->pa->sortorder < ps2->pa->sortorder && ps1->pa->type->flag & PNL_NO_HEADER) return -1; + if(ps1->pa->ofsy+ps1->pa->sizey < ps2->pa->ofsy+ps2->pa->sizey) return 1; else if(ps1->pa->ofsy+ps1->pa->sizey > ps2->pa->ofsy+ps2->pa->sizey) return -1; else if(ps1->pa->sortorder > ps2->pa->sortorder) return 1; @@ -1055,7 +1059,7 @@ int ui_handler_panel_region(bContext *C, wmEvent *event) inside= 1; if(inside && event->val==KM_PRESS) { - if(event->type == AKEY) { + if(event->type == AKEY && !ELEM3(1, event->ctrl, event->oskey, event->shift)) { if(pa->flag & PNL_CLOSEDY) { if((block->maxy <= my) && (block->maxy+PNL_HEADER >= my)) From 3e56c4dda180103f71cf20ccaa76a2d70f363bb7 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Wed, 9 Jun 2010 08:00:45 +0000 Subject: [PATCH 036/674] Logic Editor: bugfix for "Unable to Add Controllers sometimes" (reported in IRC by Daniel Salazar (ZanQdo) What was happening; if the old code (2.49) was changing the status from 0 to 1 inside the interface code. e.g. if (!ob->status) ob->status = 1; Initializing it properly (in blenkernel) and making sure the new status is ever 0 (in rna_object.c) should fix it. And yes, the log is bigger than the patch ! --- source/blender/blenkernel/intern/object.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 179e83fdc66..c544e27a102 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1026,6 +1026,8 @@ Object *add_only_object(int type, char *name) ob->anisotropicFriction[2] = 1.0f; ob->gameflag= OB_PROP|OB_COLLISION; ob->margin = 0.0; + ob->init_state=1; + ob->state=1; /* ob->pad3 == Contact Processing Threshold */ ob->m_contactProcessingThreshold = 1.; From eb081dd9918a2047c2beab1daecda42bb482ebe7 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Jun 2010 08:24:31 +0000 Subject: [PATCH 037/674] rename rna function obj.make_display_list(scene) --> obj.update(scene) also added 3 optional bool arguments, 'object', 'data' & 'time', matching the object recalc flags. --- release/scripts/io/export_fbx.py | 9 +- source/blender/makesrna/intern/rna_internal.h | 5 +- source/blender/makesrna/intern/rna_object.c | 82 +++++++++---------- .../blender/makesrna/intern/rna_object_api.c | 20 +++-- 4 files changed, 62 insertions(+), 54 deletions(-) diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index 5fe7f519b1d..c2a93a5089e 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -2011,9 +2011,8 @@ def write(filename, batch_objects = None, \ if ob_arms_orig_rest: for ob_base in bpy.data.objects: - #if ob_base.type == 'Armature': - ob_base.make_display_list(scene) -# ob_base.makeDisplayList() + if ob_base.type == 'ARMATURE': + ob_base.update(scene) # This causes the makeDisplayList command to effect the mesh scene.set_frame(scene.frame_current) @@ -2187,9 +2186,7 @@ def write(filename, batch_objects = None, \ if ob_arms_orig_rest: for ob_base in bpy.data.objects: if ob_base.type == 'ARMATURE': -# if ob_base.type == 'Armature': - ob_base.make_display_list(scene) -# ob_base.makeDisplayList() + ob_base.update(scene) # This causes the makeDisplayList command to effect the mesh scene.set_frame(scene.frame_current) # Blender.Set('curframe', Blender.Get('curframe')) diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h index 0dcfc773d19..3f2bb60fba1 100644 --- a/source/blender/makesrna/intern/rna_internal.h +++ b/source/blender/makesrna/intern/rna_internal.h @@ -204,8 +204,9 @@ void rna_object_vcollayer_name_set(struct PointerRNA *ptr, const char *value, ch PointerRNA rna_object_shapekey_index_get(struct ID *id, int value); int rna_object_shapekey_index_set(struct ID *id, PointerRNA value, int current); -void rna_Object_update(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr); -void rna_Object_update_data(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr); +/* named internal so as not to conflict with obj.update() rna func */ +void rna_Object_internal_update(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr); +void rna_Object_internal_update_data(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr); void rna_Mesh_update_draw(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr); void rna_TextureSlot_update(struct Main *bmain, struct Scene *scene, struct PointerRNA *ptr); diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 633af83f603..5b97545c330 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -129,7 +129,7 @@ EnumPropertyItem object_type_curve_items[] = { #include "ED_object.h" #include "ED_particle.h" -void rna_Object_update(Main *bmain, Scene *scene, PointerRNA *ptr) +void rna_Object_internal_update(Main *bmain, Scene *scene, PointerRNA *ptr) { DAG_id_flush_update(ptr->id.data, OB_RECALC_OB); } @@ -137,10 +137,10 @@ void rna_Object_update(Main *bmain, Scene *scene, PointerRNA *ptr) void rna_Object_matrix_update(Main *bmain, Scene *scene, PointerRNA *ptr) { object_apply_mat4(ptr->id.data, ((Object *)ptr->id.data)->obmat); - rna_Object_update(bmain, scene, ptr); + rna_Object_internal_update(bmain, scene, ptr); } -void rna_Object_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) +void rna_Object_internal_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) { DAG_id_flush_update(ptr->id.data, OB_RECALC_DATA); WM_main_add_notifier(NC_OBJECT|ND_DRAW, ptr->id.data); @@ -157,7 +157,7 @@ void rna_Object_active_shape_update(Main *bmain, Scene *scene, PointerRNA *ptr) make_editMesh(scene, ob); } - rna_Object_update_data(bmain, scene, ptr); + rna_Object_internal_update_data(bmain, scene, ptr); } static void rna_Object_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr) @@ -1065,13 +1065,13 @@ static void rna_def_material_slot(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_pointer_funcs(prop, "rna_MaterialSlot_material_get", "rna_MaterialSlot_material_set", NULL); RNA_def_property_ui_text(prop, "Material", "Material datablock used by this material slot"); - RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_internal_update"); prop= RNA_def_property(srna, "link", PROP_ENUM, PROP_NONE); RNA_def_property_enum_items(prop, link_items); RNA_def_property_enum_funcs(prop, "rna_MaterialSlot_link_get", "rna_MaterialSlot_link_set", NULL); RNA_def_property_ui_text(prop, "Link", "Link material to object or the object's data"); - RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_internal_update"); prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); RNA_def_property_string_funcs(prop, "rna_MaterialSlot_name_get", "rna_MaterialSlot_name_length", NULL); @@ -1483,7 +1483,7 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_editable_func(prop, "rna_Object_data_editable"); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Data", "Object data"); - RNA_def_property_update(prop, 0, "rna_Object_update_data"); + RNA_def_property_update(prop, 0, "rna_Object_internal_update_data"); prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "type"); @@ -1536,7 +1536,7 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_array(prop, 3); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Parent Vertices", "Indices of vertices in cases of a vertex parenting relation"); - RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_internal_update"); prop= RNA_def_property(srna, "parent_bone", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "parsubstr"); @@ -1550,13 +1550,13 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_enum_sdna(prop, NULL, "trackflag"); RNA_def_property_enum_items(prop, track_items); RNA_def_property_ui_text(prop, "Track Axis", "Axis that points in 'forward' direction"); - RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_internal_update"); prop= RNA_def_property(srna, "up_axis", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "upflag"); RNA_def_property_enum_items(prop, up_items); RNA_def_property_ui_text(prop, "Up Axis", "Axis that points in the upward direction"); - RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_internal_update"); /* proxy */ prop= RNA_def_property(srna, "proxy", PROP_POINTER, PROP_NONE); @@ -1577,7 +1577,7 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_pointer_funcs(prop, "rna_Object_active_material_get", "rna_Object_active_material_set", NULL); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Active Material", "Active material being displayed"); - RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_internal_update"); prop= RNA_def_property(srna, "active_material_index", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_sdna(prop, NULL, "actcol"); @@ -1590,14 +1590,14 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_float_sdna(prop, NULL, "loc"); RNA_def_property_editable_array_func(prop, "rna_Object_location_editable"); RNA_def_property_ui_text(prop, "Location", "Location of the object"); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); prop= RNA_def_property(srna, "rotation_quaternion", PROP_FLOAT, PROP_QUATERNION); RNA_def_property_float_sdna(prop, NULL, "quat"); RNA_def_property_editable_array_func(prop, "rna_Object_rotation_4d_editable"); RNA_def_property_float_array_default(prop, default_quat); RNA_def_property_ui_text(prop, "Quaternion Rotation", "Rotation in Quaternions"); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); /* XXX: for axis-angle, it would have been nice to have 2 separate fields for UI purposes, but * having a single one is better for Keyframing and other property-management situations... @@ -1608,64 +1608,64 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_editable_array_func(prop, "rna_Object_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"); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); prop= RNA_def_property(srna, "rotation_euler", PROP_FLOAT, PROP_EULER); RNA_def_property_float_sdna(prop, NULL, "rot"); RNA_def_property_editable_array_func(prop, "rna_Object_rotation_euler_editable"); RNA_def_property_ui_text(prop, "Euler Rotation", "Rotation in Eulers"); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); prop= RNA_def_property(srna, "rotation_mode", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "rotmode"); RNA_def_property_enum_items(prop, prop_rotmode_items); // XXX move to using a single define of this someday RNA_def_property_enum_funcs(prop, NULL, "rna_Object_rotation_mode_set", NULL); RNA_def_property_ui_text(prop, "Rotation Mode", ""); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); prop= RNA_def_property(srna, "scale", PROP_FLOAT, PROP_XYZ); RNA_def_property_float_sdna(prop, NULL, "size"); RNA_def_property_editable_array_func(prop, "rna_Object_scale_editable"); RNA_def_property_float_array_default(prop, default_scale); RNA_def_property_ui_text(prop, "Scale", "Scaling of the object"); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); prop= RNA_def_property(srna, "dimensions", PROP_FLOAT, PROP_XYZ_LENGTH); RNA_def_property_array(prop, 3); RNA_def_property_float_funcs(prop, "rna_Object_dimensions_get", "rna_Object_dimensions_set", NULL); RNA_def_property_ui_text(prop, "Dimensions", "Absolute bounding box dimensions of the object"); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); /* delta transforms */ prop= RNA_def_property(srna, "delta_location", PROP_FLOAT, PROP_TRANSLATION); RNA_def_property_float_sdna(prop, NULL, "dloc"); RNA_def_property_ui_text(prop, "Delta Location", "Extra translation added to the location of the object"); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); prop= RNA_def_property(srna, "delta_rotation_euler", PROP_FLOAT, PROP_EULER); RNA_def_property_float_sdna(prop, NULL, "drot"); RNA_def_property_ui_text(prop, "Delta Rotation (Euler)", "Extra rotation added to the rotation of the object (when using Euler rotations)"); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); prop= RNA_def_property(srna, "delta_rotation_quaternion", PROP_FLOAT, PROP_QUATERNION); RNA_def_property_float_sdna(prop, NULL, "dquat"); RNA_def_property_float_array_default(prop, default_quat); RNA_def_property_ui_text(prop, "Delta Rotation (Quaternion)", "Extra rotation added to the rotation of the object (when using Quaternion rotations)"); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); #if 0 // XXX not supported well yet... prop= RNA_def_property(srna, "delta_rotation_axis_angle", PROP_FLOAT, PROP_AXISANGLE); RNA_def_property_float_sdna(prop, NULL, "dquat"); // FIXME: this is not a single field any more! (drotAxis and drotAngle) RNA_def_property_float_array_default(prop, default_axisAngle); RNA_def_property_ui_text(prop, "Delta Rotation (Axis Angle)", "Extra rotation added to the rotation of the object (when using Axis-Angle rotations)"); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); #endif prop= RNA_def_property(srna, "delta_scale", PROP_FLOAT, PROP_XYZ); RNA_def_property_float_sdna(prop, NULL, "dsize"); RNA_def_property_ui_text(prop, "Delta Scale", "Extra scaling added to the scale of the object"); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); /* transform locks */ prop= RNA_def_property(srna, "lock_location", PROP_BOOLEAN, PROP_XYZ); @@ -1673,14 +1673,14 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Lock Location", "Lock editing of location in the interface"); RNA_def_property_ui_icon(prop, ICON_UNLOCKED, 1); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); prop= RNA_def_property(srna, "lock_rotation", PROP_BOOLEAN, PROP_XYZ); RNA_def_property_boolean_sdna(prop, NULL, "protectflag", OB_LOCK_ROTX); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Lock Rotation", "Lock editing of rotation in the interface"); RNA_def_property_ui_icon(prop, ICON_UNLOCKED, 1); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); // 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); @@ -1697,7 +1697,7 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Lock Scale", "Lock editing of scale in the interface"); RNA_def_property_ui_icon(prop, ICON_UNLOCKED, 1); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); /* matrix */ prop= RNA_def_property(srna, "matrix", PROP_FLOAT, PROP_MATRIX); @@ -1735,13 +1735,13 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_struct_type(prop, "VertexGroup"); RNA_def_property_pointer_funcs(prop, "rna_Object_active_vertex_group_get", "rna_Object_active_vertex_group_set", NULL); RNA_def_property_ui_text(prop, "Active Vertex Group", "Vertex groups of the object"); - RNA_def_property_update(prop, NC_GEOM|ND_DATA, "rna_Object_update_data"); + RNA_def_property_update(prop, NC_GEOM|ND_DATA, "rna_Object_internal_update_data"); prop= RNA_def_property(srna, "active_vertex_group_index", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "actdef"); RNA_def_property_int_funcs(prop, "rna_Object_active_vertex_group_index_get", "rna_Object_active_vertex_group_index_set", "rna_Object_active_vertex_group_index_range"); RNA_def_property_ui_text(prop, "Active Vertex Group Index", "Active index in vertex group array"); - RNA_def_property_update(prop, NC_GEOM|ND_DATA, "rna_Object_update_data"); + RNA_def_property_update(prop, NC_GEOM|ND_DATA, "rna_Object_internal_update_data"); /* empty */ prop= RNA_def_property(srna, "empty_draw_type", PROP_ENUM, PROP_NONE); @@ -1832,7 +1832,7 @@ static void rna_def_object(BlenderRNA *brna) prop= RNA_def_property(srna, "slow_parent", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "partype", PARSLOW); RNA_def_property_ui_text(prop, "Slow Parent", "Create a delay in the parent relationship"); - RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_internal_update"); prop= RNA_def_property(srna, "dupli_type", PROP_ENUM, PROP_NONE); RNA_def_property_enum_bitflag_sdna(prop, NULL, "transflag"); @@ -1843,7 +1843,7 @@ static void rna_def_object(BlenderRNA *brna) prop= RNA_def_property(srna, "use_dupli_frames_speed", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "transflag", OB_DUPLINOSPEED); RNA_def_property_ui_text(prop, "Dupli Frames Speed", "Set dupliframes to use the frame"); // TODO, better descriptio! - RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_internal_update"); prop= RNA_def_property(srna, "use_dupli_verts_rotation", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "transflag", OB_DUPLIROT); @@ -1853,7 +1853,7 @@ static void rna_def_object(BlenderRNA *brna) prop= RNA_def_property(srna, "use_dupli_faces_scale", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "transflag", OB_DUPLIFACES_SCALE); RNA_def_property_ui_text(prop, "Dupli Faces Inherit Scale", "Scale dupli based on face size"); - RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_internal_update"); prop= RNA_def_property(srna, "dupli_faces_scale", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "dupfacesca"); @@ -1871,27 +1871,27 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_int_sdna(prop, NULL, "dupsta"); RNA_def_property_range(prop, MINAFRAME, MAXFRAME); RNA_def_property_ui_text(prop, "Dupli Frames Start", "Start frame for DupliFrames"); - RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_internal_update"); prop= RNA_def_property(srna, "dupli_frames_end", PROP_INT, PROP_NONE|PROP_UNIT_TIME); RNA_def_property_int_sdna(prop, NULL, "dupend"); RNA_def_property_range(prop, MINAFRAME, MAXFRAME); RNA_def_property_ui_text(prop, "Dupli Frames End", "End frame for DupliFrames"); - RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_internal_update"); prop= RNA_def_property(srna, "dupli_frames_on", PROP_INT, PROP_NONE|PROP_UNIT_TIME); RNA_def_property_int_sdna(prop, NULL, "dupon"); RNA_def_property_range(prop, MINFRAME, MAXFRAME); RNA_def_property_ui_range(prop, 1, 1500, 1, 0); RNA_def_property_ui_text(prop, "Dupli Frames On", "Number of frames to use between DupOff frames"); - RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_internal_update"); prop= RNA_def_property(srna, "dupli_frames_off", PROP_INT, PROP_NONE|PROP_UNIT_TIME); RNA_def_property_int_sdna(prop, NULL, "dupoff"); RNA_def_property_range(prop, 0, MAXFRAME); RNA_def_property_ui_range(prop, 0, 1500, 1, 0); RNA_def_property_ui_text(prop, "Dupli Frames Off", "Recurring frames to exclude from the Dupliframes"); - RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_internal_update"); prop= RNA_def_property(srna, "dupli_list", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "duplilist", NULL); @@ -1907,7 +1907,7 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_float_sdna(prop, NULL, "sf"); RNA_def_property_range(prop, MINAFRAMEF, MAXFRAMEF); RNA_def_property_ui_text(prop, "Time Offset", "Animation offset in frames for F-Curve and dupligroup instances"); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); prop= RNA_def_property(srna, "time_offset_edit", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "ipoflag", OB_OFFS_OB); @@ -1916,17 +1916,17 @@ static void rna_def_object(BlenderRNA *brna) prop= RNA_def_property(srna, "time_offset_parent", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "ipoflag", OB_OFFS_PARENT); RNA_def_property_ui_text(prop, "Time Offset Parent", "Apply the time offset to this objects parent relationship"); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); prop= RNA_def_property(srna, "time_offset_particle", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "ipoflag", OB_OFFS_PARTICLE); RNA_def_property_ui_text(prop, "Time Offset Particle", "Let the time offset work on the particle effect"); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); prop= RNA_def_property(srna, "time_offset_add_parent", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "ipoflag", OB_OFFS_PARENTADD); RNA_def_property_ui_text(prop, "Time Offset Add Parent", "Add the parents time offset value"); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); /* drawing */ prop= RNA_def_property(srna, "max_draw_type", PROP_ENUM, PROP_NONE); @@ -1999,13 +1999,13 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "shapeflag", OB_SHAPE_LOCK); RNA_def_property_ui_text(prop, "Shape Key Lock", "Always show the current Shape for this Object"); RNA_def_property_ui_icon(prop, ICON_UNPINNED, 1); - RNA_def_property_update(prop, 0, "rna_Object_update_data"); + RNA_def_property_update(prop, 0, "rna_Object_internal_update_data"); prop= RNA_def_property(srna, "shape_key_edit_mode", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "shapeflag", OB_SHAPE_EDIT_MODE); RNA_def_property_ui_text(prop, "Shape Key Edit Mode", "Apply shape keys in edit mode (for Meshes only)"); RNA_def_property_ui_icon(prop, ICON_EDITMODE_HLT, 0); - RNA_def_property_update(prop, 0, "rna_Object_update_data"); + RNA_def_property_update(prop, 0, "rna_Object_internal_update_data"); prop= RNA_def_property(srna, "active_shape_key", PROP_POINTER, PROP_NONE); RNA_def_property_struct_type(prop, "ShapeKey"); diff --git a/source/blender/makesrna/intern/rna_object_api.c b/source/blender/makesrna/intern/rna_object_api.c index 7b4cd3bed6a..17e6630a48a 100644 --- a/source/blender/makesrna/intern/rna_object_api.c +++ b/source/blender/makesrna/intern/rna_object_api.c @@ -272,16 +272,23 @@ static void rna_Object_add_vertex_to_group(Object *ob, int vertex_index, bDeform ED_vgroup_vert_add(ob, def, vertex_index, weight, assignmode); } -/* copied from old API Object.makeDisplayList (Object.c) */ -static void rna_Object_make_display_list(Object *ob, Scene *sce) +/* copied from old API Object.makeDisplayList (Object.c) + * use _ suffix because this exists for internal rna */ +static void rna_Object_update(Object *ob, Scene *sce, int object, int data, int time) { + int flag= 0; + if (ob->type == OB_FONT) { Curve *cu = ob->data; freedisplist(&cu->disp); BKE_text_to_curve(sce, ob, CU_LEFT); } - DAG_id_flush_update(&ob->id, OB_RECALC_DATA); + if(object) flag |= OB_RECALC_OB; + if(data) flag |= OB_RECALC_DATA; + if(time) flag |= OB_RECALC_TIME; + + DAG_id_flush_update(&ob->id, flag); } static Object *rna_Object_find_armature(Object *ob) @@ -515,10 +522,13 @@ void RNA_api_object(StructRNA *srna) /* DAG */ - func= RNA_def_function(srna, "make_display_list", "rna_Object_make_display_list"); - RNA_def_function_ui_description(func, "Update object's display data."); /* XXX describe better */ + func= RNA_def_function(srna, "update", "rna_Object_update"); + RNA_def_function_ui_description(func, "Tag the object to update its display data."); parm= RNA_def_pointer(func, "scene", "Scene", "", ""); RNA_def_property_flag(parm, PROP_REQUIRED|PROP_NEVER_NULL); + RNA_def_boolean(func, "object", 1, "", "Tag the object for updating"); + RNA_def_boolean(func, "data", 1, "", "Tag the objects display data for updating"); + RNA_def_boolean(func, "time", 1, "", "Tag the object time related data for updating"); /* View */ func= RNA_def_function(srna, "is_visible", "rna_Object_is_visible"); From c023cd20fc5d6c03b389a197fdb2c081155e4a3e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Jun 2010 08:33:22 +0000 Subject: [PATCH 038/674] attempt to fix problem with quicktime on MSVC --- source/blender/editors/render/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/render/CMakeLists.txt b/source/blender/editors/render/CMakeLists.txt index 47c286f1744..2ecdc14a497 100644 --- a/source/blender/editors/render/CMakeLists.txt +++ b/source/blender/editors/render/CMakeLists.txt @@ -39,7 +39,7 @@ SET(INC ) IF(WITH_QUICKTIME) - SET(INC ${INC} ../quicktime ${QUICKTIME_INC}) + SET(INC ${INC} ../../quicktime ${QUICKTIME_INC}) ADD_DEFINITIONS(-DWITH_QUICKTIME) ENDIF(WITH_QUICKTIME) From 0ef243122032307f225033bc5454b6fe20fe09ad Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Jun 2010 09:48:41 +0000 Subject: [PATCH 039/674] python utility property library.users_id: returns a tuple of all ID datablocks which use this library. --- release/scripts/modules/bpy_types.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index d33b43f2e58..bec127138af 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -38,6 +38,24 @@ class Context(StructRNA): return new_context +class Library(bpy_types.ID): + __slots__ = () + + @property + def users_id(self): + """ID datablocks which use this library""" + import bpy + + # See: readblenentry.c, IDTYPE_FLAGS_ISLINKABLE, we could make this an attribute in rna. + attr_links = "actions", "armatures", "brushes", "cameras", \ + "curves", "gpencil", "groups", "images", \ + "lamps", "lattices", "materials", "metaballs", \ + "meshes", "node_groups", "objects", "scenes", \ + "sounds", "textures", "texts", "fonts", "worlds" + + return tuple(id_block for attr in attr_links for id_block in getattr(bpy.data, attr) if id_block.library == self) + + class Texture(bpy_types.ID): __slots__ = () From 6cc6f8495f0dbf69afea98cbcde94ebb453b0783 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Jun 2010 14:04:34 +0000 Subject: [PATCH 040/674] - added a flag argument to WM_operator_properties_filesel() currently only used for relative path option. - added relative option to saving external multires data - renamed multires external functiosn to have save / pack as suffix. - added TODO's for file select operators that should support relative paths but dont. - also disable openmp on linux cross compile, mingw currently isnt linking -lgomp --- config/linuxcross-config.py | 2 +- .../scripts/ui/properties_data_modifier.py | 4 +-- source/blender/editors/curve/editfont.c | 4 +-- source/blender/editors/object/object_intern.h | 4 +-- .../blender/editors/object/object_modifier.c | 31 +++++++++++-------- source/blender/editors/object/object_ops.c | 4 +-- .../blender/editors/render/render_shading.c | 4 +-- source/blender/editors/screen/screendump.c | 2 +- source/blender/editors/sound/sound_ops.c | 3 +- .../editors/space_buttons/buttons_ops.c | 2 +- .../blender/editors/space_graph/graph_edit.c | 2 +- .../blender/editors/space_image/image_ops.c | 9 ++---- source/blender/editors/space_info/info_ops.c | 4 +-- source/blender/editors/space_node/node_edit.c | 2 +- .../editors/space_sequencer/sequencer_add.c | 8 ++--- source/blender/editors/space_text/text_ops.c | 4 +-- source/blender/windowmanager/WM_api.h | 2 +- .../windowmanager/intern/wm_operators.c | 20 ++++++------ 18 files changed, 56 insertions(+), 55 deletions(-) diff --git a/config/linuxcross-config.py b/config/linuxcross-config.py index 3cedf6cfd9a..8533c8ac9c7 100644 --- a/config/linuxcross-config.py +++ b/config/linuxcross-config.py @@ -153,7 +153,7 @@ BF_OPENGL_LIBINC = '${BF_OPENGL}/lib' BF_OPENGL_LIB = 'opengl32 glu32' BF_OPENGL_LIB_STATIC = [ '${BF_OPENGL}/lib/libGL.a', '${BF_OPENGL}/lib/libGLU.a'] -WITH_BF_OPENMP = True +WITH_BF_OPENMP = False BF_OPENMP = LIBDIR + '/gcc/gomp' BF_OPENMP_INC = '${BF_OPENMP}/include' BF_OPENMP_LIBPATH = '${BF_OPENMP}/lib' diff --git a/release/scripts/ui/properties_data_modifier.py b/release/scripts/ui/properties_data_modifier.py index cd80d3e9c91..8e85b7dfb97 100644 --- a/release/scripts/ui/properties_data_modifier.py +++ b/release/scripts/ui/properties_data_modifier.py @@ -452,12 +452,12 @@ class DATA_PT_modifiers(DataButtonsPanel): col = layout.column() row = col.row() if md.external: - row.operator("object.multires_pack_external", text="Pack External") + row.operator("object.multires_external_pack", text="Pack External") row.label() row = col.row() row.prop(md, "filepath", text="") else: - row.operator("object.multires_save_external", text="Save External...") + row.operator("object.multires_external_save", text="Save External...") row.label() def PARTICLE_INSTANCE(self, layout, ob, md, wide_ui): diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c index 37e695cf823..767c2c82594 100644 --- a/source/blender/editors/curve/editfont.c +++ b/source/blender/editors/curve/editfont.c @@ -417,7 +417,7 @@ void FONT_OT_file_paste(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE, FILE_SPECIAL, FILE_OPENFILE, 0); } /******************* paste buffer operator ********************/ @@ -1639,7 +1639,7 @@ void FONT_OT_open(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|FTFONTFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|FTFONTFILE, FILE_SPECIAL, FILE_OPENFILE, 0); } /******************* delete operator *********************/ diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h index f82b4e0324f..c6164fef8a8 100644 --- a/source/blender/editors/object/object_intern.h +++ b/source/blender/editors/object/object_intern.h @@ -157,8 +157,8 @@ void OBJECT_OT_modifier_copy(struct wmOperatorType *ot); void OBJECT_OT_multires_subdivide(struct wmOperatorType *ot); void OBJECT_OT_multires_reshape(struct wmOperatorType *ot); void OBJECT_OT_multires_higher_levels_delete(struct wmOperatorType *ot); -void OBJECT_OT_multires_save_external(struct wmOperatorType *ot); -void OBJECT_OT_multires_pack_external(struct wmOperatorType *ot); +void OBJECT_OT_multires_external_save(struct wmOperatorType *ot); +void OBJECT_OT_multires_external_pack(struct wmOperatorType *ot); void OBJECT_OT_meshdeform_bind(struct wmOperatorType *ot); void OBJECT_OT_explode_refresh(struct wmOperatorType *ot); diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index 697373ea923..c5c7d49d0a4 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -1009,11 +1009,12 @@ void OBJECT_OT_multires_reshape(wmOperatorType *ot) /****************** multires save external operator *********************/ -static int multires_save_external_exec(bContext *C, wmOperator *op) +static int multires_external_save_exec(bContext *C, wmOperator *op) { Object *ob = ED_object_active_context(C); Mesh *me= (ob)? ob->data: op->customdata; char path[FILE_MAX]; + int relative= RNA_boolean_get(op->ptr, "relative_path"); if(!me) return OPERATOR_CANCELLED; @@ -1023,7 +1024,8 @@ static int multires_save_external_exec(bContext *C, wmOperator *op) RNA_string_get(op->ptr, "path", path); - /* BLI_path_rel(path, G.sce); */ /* TODO, relative path operator option */ + if(relative) + BLI_path_rel(path, G.sce); CustomData_external_add(&me->fdata, &me->id, CD_MDISPS, me->totface, path); CustomData_external_write(&me->fdata, &me->id, CD_MASK_MESH, me->totface, 0); @@ -1031,7 +1033,7 @@ static int multires_save_external_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -static int multires_save_external_invoke(bContext *C, wmOperator *op, wmEvent *event) +static int multires_external_save_invoke(bContext *C, wmOperator *op, wmEvent *event) { Object *ob = ED_object_active_context(C); MultiresModifierData *mmd; @@ -1049,8 +1051,11 @@ static int multires_save_external_invoke(bContext *C, wmOperator *op, wmEvent *e if(CustomData_external_test(&me->fdata, CD_MDISPS)) return OPERATOR_CANCELLED; + if(!RNA_property_is_set(op->ptr, "relative_path")) + RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + if(RNA_property_is_set(op->ptr, "path")) - return multires_save_external_exec(C, op); + return multires_external_save_exec(C, op); op->customdata= me; @@ -1062,27 +1067,27 @@ static int multires_save_external_invoke(bContext *C, wmOperator *op, wmEvent *e return OPERATOR_RUNNING_MODAL; } -void OBJECT_OT_multires_save_external(wmOperatorType *ot) +void OBJECT_OT_multires_external_save(wmOperatorType *ot) { ot->name= "Multires Save External"; ot->description= "Save displacements to an external file"; - ot->idname= "OBJECT_OT_multires_save_external"; + ot->idname= "OBJECT_OT_multires_external_save"; // XXX modifier no longer in context after file browser .. ot->poll= multires_poll; - ot->exec= multires_save_external_exec; - ot->invoke= multires_save_external_invoke; + ot->exec= multires_external_save_exec; + ot->invoke= multires_external_save_invoke; ot->poll= multires_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|BTXFILE, FILE_SPECIAL, FILE_SAVE); + WM_operator_properties_filesel(ot, FOLDERFILE|BTXFILE, FILE_SPECIAL, FILE_SAVE, FILE_RELPATH); edit_modifier_properties(ot); } /****************** multires pack operator *********************/ -static int multires_pack_external_exec(bContext *C, wmOperator *op) +static int multires_external_pack_exec(bContext *C, wmOperator *op) { Object *ob = ED_object_active_context(C); Mesh *me= ob->data; @@ -1096,14 +1101,14 @@ static int multires_pack_external_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void OBJECT_OT_multires_pack_external(wmOperatorType *ot) +void OBJECT_OT_multires_external_pack(wmOperatorType *ot) { ot->name= "Multires Pack External"; ot->description= "Pack displacements from an external file"; - ot->idname= "OBJECT_OT_multires_pack_external"; + ot->idname= "OBJECT_OT_multires_external_pack"; ot->poll= multires_poll; - ot->exec= multires_pack_external_exec; + ot->exec= multires_external_pack_exec; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index 274e8ff2d73..09fcd9432de 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -138,8 +138,8 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_multires_subdivide); WM_operatortype_append(OBJECT_OT_multires_reshape); WM_operatortype_append(OBJECT_OT_multires_higher_levels_delete); - WM_operatortype_append(OBJECT_OT_multires_save_external); - WM_operatortype_append(OBJECT_OT_multires_pack_external); + WM_operatortype_append(OBJECT_OT_multires_external_save); + WM_operatortype_append(OBJECT_OT_multires_external_pack); WM_operatortype_append(OBJECT_OT_meshdeform_bind); WM_operatortype_append(OBJECT_OT_explode_refresh); diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c index b6d819801c5..2a12b16be7c 100644 --- a/source/blender/editors/render/render_shading.c +++ b/source/blender/editors/render/render_shading.c @@ -913,9 +913,7 @@ void TEXTURE_OT_envmap_save(wmOperatorType *ot) /* properties */ //RNA_def_enum(ot->srna, "file_type", image_file_type_items, R_PNG, "File Type", "File type to save image as."); - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_SAVE); - - RNA_def_boolean(ot->srna, "relative_path", 0, "Relative Path", "Save image with relative path to current .blend file"); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_SAVE, FILE_RELPATH); } static int envmap_clear_exec(bContext *C, wmOperator *op) diff --git a/source/blender/editors/screen/screendump.c b/source/blender/editors/screen/screendump.c index 394f8b4fbcd..141a7c1c050 100644 --- a/source/blender/editors/screen/screendump.c +++ b/source/blender/editors/screen/screendump.c @@ -171,7 +171,7 @@ void SCREEN_OT_screenshot(wmOperatorType *ot) ot->flag= 0; - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_SAVE); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_SAVE, 0); RNA_def_boolean(ot->srna, "full", 1, "Full Screen", ""); } diff --git a/source/blender/editors/sound/sound_ops.c b/source/blender/editors/sound/sound_ops.c index 8f195b819ea..b4109692a4c 100644 --- a/source/blender/editors/sound/sound_ops.c +++ b/source/blender/editors/sound/sound_ops.c @@ -150,9 +150,8 @@ void SOUND_OT_open(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, FILE_RELPATH); RNA_def_boolean(ot->srna, "cache", FALSE, "Cache", "Cache the sound in memory."); - RNA_def_boolean(ot->srna, "relative_path", FALSE, "Relative Path", "Load image with relative path to current .blend file"); } /* ******************************************************* */ diff --git a/source/blender/editors/space_buttons/buttons_ops.c b/source/blender/editors/space_buttons/buttons_ops.c index 9261e28cd6a..ef7b3ce6d2a 100644 --- a/source/blender/editors/space_buttons/buttons_ops.c +++ b/source/blender/editors/space_buttons/buttons_ops.c @@ -147,6 +147,6 @@ void BUTTONS_OT_file_browse(wmOperatorType *ot) ot->cancel= file_browse_cancel; /* properties */ - WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, 0); } diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index 9322bae13c9..c59b4783708 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -1117,7 +1117,7 @@ void GRAPH_OT_sound_bake (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, 0); RNA_def_float(ot->srna, "low", 0.0f, 0.0, 100000.0, "Lowest frequency", "", 0.1, 1000.00); RNA_def_float(ot->srna, "high", 100000.0, 0.0, 100000.0, "Highest frequency", "", 0.1, 1000.00); RNA_def_float(ot->srna, "attack", 0.005, 0.0, 2.0, "Attack time", "", 0.01, 0.1); diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index fb9548001dc..3eeeb865ae4 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -754,9 +754,7 @@ void IMAGE_OT_open(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE); - - RNA_def_boolean(ot->srna, "relative_path", 0, "Relative Path", "Load image with relative path to current .blend file"); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, FILE_RELPATH); } /******************** replace image operator ********************/ @@ -809,7 +807,7 @@ void IMAGE_OT_replace(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, 0); //XXX TODO, relative_path } /******************** save image as operator ********************/ @@ -997,9 +995,8 @@ void IMAGE_OT_save_as(wmOperatorType *ot) /* properties */ RNA_def_enum(ot->srna, "file_type", image_file_type_items, R_PNG, "File Type", "File type to save image as."); - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_SAVE); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_SAVE, FILE_RELPATH); - RNA_def_boolean(ot->srna, "relative_path", 0, "Relative Path", "Save image with relative path to current .blend file"); RNA_def_boolean(ot->srna, "copy", 0, "Copy", "Create a new image file without modifying the current image in blender"); } diff --git a/source/blender/editors/space_info/info_ops.c b/source/blender/editors/space_info/info_ops.c index 64d2c6138c7..86d7d6bf014 100644 --- a/source/blender/editors/space_info/info_ops.c +++ b/source/blender/editors/space_info/info_ops.c @@ -299,7 +299,7 @@ void FILE_OT_find_missing_files(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, 0); } /********************* report box operator *********************/ @@ -397,4 +397,4 @@ void INFO_OT_reports_display_update(wmOperatorType *ot) ot->flag= 0; /* properties */ -} \ No newline at end of file +} diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index befb37a2432..2fae8274951 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -2304,7 +2304,7 @@ void NODE_OT_add_file(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, 0); //XXX TODO, relative_path RNA_def_string(ot->srna, "name", "Image", 24, "Name", "Datablock name to assign."); } diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index f36461ab7e0..7bd00e6081f 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -336,7 +336,7 @@ void SEQUENCER_OT_movie_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, 0); //XXX TODO, relative_path sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES); RNA_def_boolean(ot->srna, "sound", TRUE, "Sound", "Load sound with the movie"); } @@ -378,7 +378,7 @@ void SEQUENCER_OT_sound_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE, FILE_SPECIAL, FILE_OPENFILE, 0); //XXX TODO, relative_path sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES); RNA_def_boolean(ot->srna, "cache", FALSE, "Cache", "Cache the sound in memory."); } @@ -469,7 +469,7 @@ void SEQUENCER_OT_image_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, 0); //XXX TODO, relative_path sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_ENDFRAME|SEQPROP_FILES); } @@ -617,7 +617,7 @@ void SEQUENCER_OT_effect_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, 0); //XXX TODO, relative_path sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_ENDFRAME); RNA_def_enum(ot->srna, "type", sequencer_prop_effect_types, SEQ_CROSS, "Type", "Sequencer effect type"); RNA_def_float_vector(ot->srna, "color", 3, NULL, 0.0f, 1.0f, "Color", "Initialize the strip with this color (only used when type='COLOR')", 0.0f, 1.0f); diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c index 8382e963523..d3c197506b9 100644 --- a/source/blender/editors/space_text/text_ops.c +++ b/source/blender/editors/space_text/text_ops.c @@ -295,7 +295,7 @@ void TEXT_OT_open(wmOperatorType *ot) ot->flag= OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE|PYSCRIPTFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE|PYSCRIPTFILE, FILE_SPECIAL, FILE_OPENFILE, 0); //XXX TODO, relative_path RNA_def_boolean(ot->srna, "internal", 0, "Make internal", "Make text file internal after loading"); } @@ -542,7 +542,7 @@ void TEXT_OT_save_as(wmOperatorType *ot) ot->poll= text_edit_poll; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE|PYSCRIPTFILE, FILE_SPECIAL, FILE_SAVE); + WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE|PYSCRIPTFILE, FILE_SPECIAL, FILE_SAVE, 0); //XXX TODO, relative_path } /******************* run script operator *********************/ diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index 2b159daf6a1..6668cbf5dd8 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -223,7 +223,7 @@ void WM_operator_properties_sanitize(struct PointerRNA *ptr, int val); /* make void WM_operator_properties_create(struct PointerRNA *ptr, const char *opstring); void WM_operator_properties_create_ptr(struct PointerRNA *ptr, struct wmOperatorType *ot); void WM_operator_properties_free(struct PointerRNA *ptr); -void WM_operator_properties_filesel(struct wmOperatorType *ot, int filter, short type, short action); +void WM_operator_properties_filesel(struct wmOperatorType *ot, int filter, short type, short action, short flag); void WM_operator_properties_gesture_border(struct wmOperatorType *ot, int extend); void WM_operator_properties_gesture_straightline(struct wmOperatorType *ot, int cursor); void WM_operator_properties_select_all(struct wmOperatorType *ot); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 4ab110cc275..c43f362ceaa 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -784,7 +784,7 @@ int WM_operator_filesel(bContext *C, wmOperator *op, wmEvent *event) } /* default properties for fileselect */ -void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type, short action) +void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type, short action, short flag) { PropertyRNA *prop; @@ -822,6 +822,9 @@ void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type, "File Browser Mode", "The setting for the file browser mode to load a .blend file, a library or a special file", FILE_LOADLIB, FILE_SPECIAL); RNA_def_property_flag(prop, PROP_HIDDEN); + + if(flag & FILE_RELPATH) + RNA_def_boolean(ot->srna, "relative_path", 0, "Relative Path", "Select the file relative to the blend file"); } void WM_operator_properties_select_all(wmOperatorType *ot) { @@ -1472,7 +1475,7 @@ static void WM_OT_open_mainfile(wmOperatorType *ot) ot->exec= wm_open_mainfile_exec; ot->poll= WM_operator_winactive; - WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER, FILE_OPENFILE, 0); RNA_def_boolean(ot->srna, "load_ui", 1, "Load UI", "Load user interface setup in the .blend file"); RNA_def_boolean(ot->srna, "use_scripts", 1, "Trusted Source", "Allow blend file execute scripts automatically, default available from system preferences"); @@ -1643,13 +1646,12 @@ static void WM_OT_link_append(wmOperatorType *ot) ot->flag |= OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_LOADLIB, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_LOADLIB, FILE_OPENFILE, FILE_RELPATH); RNA_def_boolean(ot->srna, "link", 1, "Link", "Link the objects or datablocks rather than appending"); RNA_def_boolean(ot->srna, "autoselect", 1, "Select", "Select the linked objects"); RNA_def_boolean(ot->srna, "active_layer", 1, "Active Layer", "Put the linked objects on the active layer"); RNA_def_boolean(ot->srna, "instance_groups", 1, "Instance Groups", "Create instances for each group as a DupliGroup"); - RNA_def_boolean(ot->srna, "relative_path", 1, "Relative Paths", "Store the library path as a relative path to current .blend file"); RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", ""); } @@ -1728,7 +1730,7 @@ static void WM_OT_recover_auto_save(wmOperatorType *ot) ot->invoke= wm_recover_auto_save_invoke; ot->poll= WM_operator_winactive; - WM_operator_properties_filesel(ot, BLENDERFILE, FILE_BLENDER, FILE_OPENFILE); + WM_operator_properties_filesel(ot, BLENDERFILE, FILE_BLENDER, FILE_OPENFILE, 0); } /* *************** save file as **************** */ @@ -1811,7 +1813,7 @@ static void WM_OT_save_as_mainfile(wmOperatorType *ot) ot->exec= wm_save_as_mainfile_exec; ot->poll= WM_operator_winactive; - WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER, FILE_SAVE); + WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER, FILE_SAVE, 0); RNA_def_boolean(ot->srna, "compress", 0, "Compress", "Write compressed .blend file"); RNA_def_boolean(ot->srna, "relative_remap", 0, "Remap Relative", "Remap relative paths when saving in a different directory"); } @@ -1860,7 +1862,7 @@ static void WM_OT_save_mainfile(wmOperatorType *ot) ot->exec= wm_save_as_mainfile_exec; ot->poll= NULL; - WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER, FILE_SAVE); + WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER, FILE_SAVE, 0); RNA_def_boolean(ot->srna, "compress", 0, "Compress", "Write compressed .blend file"); RNA_def_boolean(ot->srna, "relative_remap", 0, "Remap Relative", "Remap relative paths when saving in a different directory"); } @@ -1909,7 +1911,7 @@ static void WM_OT_collada_export(wmOperatorType *ot) ot->exec= wm_collada_export_exec; ot->poll= WM_operator_winactive; - WM_operator_properties_filesel(ot, FOLDERFILE|COLLADAFILE, FILE_BLENDER, FILE_SAVE); + WM_operator_properties_filesel(ot, FOLDERFILE|COLLADAFILE, FILE_BLENDER, FILE_SAVE, 0); } /* function used for WM_OT_save_mainfile too */ @@ -1937,7 +1939,7 @@ static void WM_OT_collada_import(wmOperatorType *ot) ot->exec= wm_collada_import_exec; ot->poll= WM_operator_winactive; - WM_operator_properties_filesel(ot, FOLDERFILE|COLLADAFILE, FILE_BLENDER, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|COLLADAFILE, FILE_BLENDER, FILE_OPENFILE, 0); } #endif From 1a3686701736cd60defc2e034f5e3806845291bf Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Jun 2010 14:17:22 +0000 Subject: [PATCH 041/674] recent addition: Shift+H in node editor was switching the preview of node types that didnt support it. --- source/blender/editors/space_node/node_edit.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 2fae8274951..97e2eba7b64 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -1995,6 +1995,10 @@ static void node_flag_toggle_exec(SpaceNode *snode, int toggle_flag) for(node= snode->edittree->nodes.first; node; node= node->next) { if(node->flag & SELECT) { + + if(toggle_flag== NODE_PREVIEW && (node->typeinfo->flag & NODE_PREVIEW)==0) + continue; + if(node->flag & toggle_flag) tot_eq++; else @@ -2003,6 +2007,10 @@ static void node_flag_toggle_exec(SpaceNode *snode, int toggle_flag) } for(node= snode->edittree->nodes.first; node; node= node->next) { if(node->flag & SELECT) { + + if(toggle_flag== NODE_PREVIEW && (node->typeinfo->flag & NODE_PREVIEW)==0) + continue; + if( (tot_eq && tot_neq) || tot_eq==0) node->flag |= toggle_flag; else From e2bc4ca9cee0c66c10efb9cf552c1135f30e7a4b Mon Sep 17 00:00:00 2001 From: Diego Borghetti Date: Wed, 9 Jun 2010 15:35:10 +0000 Subject: [PATCH 042/674] Fix #22317 View reamins in camera's view after camera is deleted (again) The problem was not in the editors, the code in blenkernel have a XXX in the perspective value. Now unlink_object also update the ARegion. --- source/blender/blenkernel/intern/object.c | 17 +++++++++++++++-- source/blender/editors/object/object_add.c | 13 ------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index c544e27a102..ac4fd28bd28 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -320,6 +320,7 @@ static void unlink_object__unlinkModifierLinks(void *userData, Object *ob, Objec ob->recalc |= OB_RECALC; } } + void unlink_object(Scene *scene, Object *ob) { Object *obt; @@ -334,6 +335,8 @@ void unlink_object(Scene *scene, Object *ob) bConstraint *con; //bActionStrip *strip; // XXX animsys ModifierData *md; + ARegion *ar; + RegionView3D *rv3d; int a; unlink_controllers(&ob->controllers); @@ -606,17 +609,27 @@ void unlink_object(Scene *scene, Object *ob) while(sa) { SpaceLink *sl; + if (sa->spacetype == SPACE_VIEW3D) { + for (ar= sa->regionbase.first; ar; ar= ar->next) { + if (ar->regiontype==RGN_TYPE_WINDOW) { + rv3d= (RegionView3D *)ar->regiondata; + if (rv3d->persp == RV3D_CAMOB) + rv3d->persp= RV3D_PERSP; + if (rv3d->localvd && rv3d->localvd->persp == RV3D_CAMOB) + rv3d->localvd->persp= RV3D_PERSP; + } + } + } + for (sl= sa->spacedata.first; sl; sl= sl->next) { if(sl->spacetype==SPACE_VIEW3D) { View3D *v3d= (View3D*) sl; if(v3d->camera==ob) { v3d->camera= NULL; - // XXX if(v3d->persp==V3D_CAMOB) v3d->persp= V3D_PERSP; } if(v3d->localvd && v3d->localvd->camera==ob ) { v3d->localvd->camera= NULL; - // XXX if(v3d->localvd->persp==V3D_CAMOB) v3d->localvd->persp= V3D_PERSP; } } else if(sl->spacetype==SPACE_OUTLINER) { diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index e0e0bb06652..77c373c93e2 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -826,8 +826,6 @@ void ED_base_object_free_and_unlink(Scene *scene, Base *base) static int object_delete_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); - View3D *v3d = CTX_wm_view3d(C); - RegionView3D *rv3d= CTX_wm_region_view3d(C); int islamp= 0; if(CTX_data_edit_object(C)) @@ -836,17 +834,6 @@ static int object_delete_exec(bContext *C, wmOperator *op) CTX_DATA_BEGIN(C, Base*, base, selected_bases) { if(base->object->type==OB_LAMP) islamp= 1; - else if (base->object->type == OB_CAMERA) { - /* If we don't reset this, Blender crash - * in fly mode because still have the - * old object here!. - * See Bug #22317 - */ - if (v3d && rv3d && rv3d->persp == RV3D_CAMOB && base->object == v3d->camera) { - rv3d->persp= RV3D_PERSP; - v3d->camera= NULL; - } - } /* remove from current scene only */ ED_base_object_free_and_unlink(scene, base); } From e3daab158c1f45f4ee23da0f1b0e5a61bcae3e87 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Jun 2010 15:56:50 +0000 Subject: [PATCH 043/674] fix for crash setting the objects layers --- source/blender/makesrna/intern/rna_object.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 5b97545c330..f77e984cd37 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -210,7 +210,7 @@ static void rna_Object_layer_update(Main *bmain, Scene *scene, PointerRNA *ptr) static void rna_Base_layer_update(Main *bmain, Scene *scene, PointerRNA *ptr) { - Base *base= (Base*)ptr->id.data; + Base *base= (Base*)ptr->data; Object *ob= (Object*)base->object; rna_Object_layer_update__internal(scene, base, ob); From 1028284301d7a5d45bf968e12bc094e3393e56f9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Jun 2010 19:12:03 +0000 Subject: [PATCH 044/674] pep8, whitespace edits --- release/scripts/modules/add_object_utils.py | 1 + release/scripts/modules/bpy/utils.py | 4 ++-- release/scripts/modules/bpy_types.py | 13 ++++++------- release/scripts/op/console_python.py | 4 ++-- release/scripts/op/object.py | 4 ++-- release/scripts/op/sequencer.py | 2 +- release/scripts/op/uv.py | 2 +- release/scripts/op/wm.py | 2 +- release/scripts/ui/properties_object_constraint.py | 3 ++- release/scripts/ui/properties_physics_smoke.py | 2 +- release/scripts/ui/properties_render.py | 2 +- release/scripts/ui/space_info.py | 4 +++- release/scripts/ui/space_logic.py | 1 + release/scripts/ui/space_sequencer.py | 2 +- release/scripts/ui/space_userpref.py | 8 ++++---- release/scripts/ui/space_view3d.py | 6 +++--- 16 files changed, 32 insertions(+), 28 deletions(-) diff --git a/release/scripts/modules/add_object_utils.py b/release/scripts/modules/add_object_utils.py index 350191af807..ed64cf9ae2b 100644 --- a/release/scripts/modules/add_object_utils.py +++ b/release/scripts/modules/add_object_utils.py @@ -21,6 +21,7 @@ import bpy import mathutils + def add_object_align_init(context, operator): if operator and operator.properties.is_property_set("location") and operator.properties.is_property_set("rotation"): diff --git a/release/scripts/modules/bpy/utils.py b/release/scripts/modules/bpy/utils.py index 9b411945da6..5cde7091257 100644 --- a/release/scripts/modules/bpy/utils.py +++ b/release/scripts/modules/bpy/utils.py @@ -144,7 +144,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False): _loaded.append(mod) if reload_scripts: - + # TODO, this is broken but should work, needs looking into ''' # reload modules that may not be directly included @@ -369,7 +369,7 @@ def smpte_from_seconds(time, fps=None): time = time % 60.0 seconds = int(time) - frames= int(round(math.floor(((time - seconds) * fps)))) + frames = int(round(math.floor(((time - seconds) * fps)))) return "%s%02d:%02d:%02d:%02d" % (neg, hours, minutes, seconds, frames) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index bec127138af..2640288b3c5 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -433,7 +433,7 @@ class Mesh(bpy_types.ID): closed loops have matching start and end values. """ line_polys = [] - + # Get edges not used by a face if edges is None: edges = self.edges @@ -441,10 +441,10 @@ class Mesh(bpy_types.ID): if not hasattr(edges, "pop"): edges = edges[:] - edge_dict= dict((ed.key, ed) for ed in self.edges if ed.selected) - + edge_dict = dict((ed.key, ed) for ed in self.edges if ed.selected) + while edges: - current_edge= edges.pop() + current_edge = edges.pop() vert_end, vert_start = current_edge.verts[:] line_poly = [vert_start, vert_end] @@ -462,7 +462,7 @@ class Mesh(bpy_types.ID): vert_end = line_poly[-1] ok = 1 del edges[i] - #break + # break elif v2 == vert_end: line_poly.append(v1) vert_end = line_poly[-1] @@ -474,7 +474,7 @@ class Mesh(bpy_types.ID): vert_start = line_poly[0] ok = 1 del edges[i] - #break + # break elif v2 == vert_start: line_poly.insert(0, v1) vert_start = line_poly[0] @@ -486,7 +486,6 @@ class Mesh(bpy_types.ID): return line_polys - class MeshEdge(StructRNA): __slots__ = () diff --git a/release/scripts/op/console_python.py b/release/scripts/op/console_python.py index 1f0d9dbde60..385dd832537 100644 --- a/release/scripts/op/console_python.py +++ b/release/scripts/op/console_python.py @@ -121,7 +121,7 @@ def execute(context): # unlikely, but this can happen with unicode errors for example. import traceback stderr.write(traceback.format_exc()) - + stdout.seek(0) stderr.seek(0) @@ -180,7 +180,7 @@ def autocomplete(context): # note: unlikely stdin would be used for autocomp. but its possible. stdin_backup = sys.stdin sys.stdin = None - + scrollback = "" scrollback_error = "" diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index a6e0930e69c..9d240fee5c6 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -515,9 +515,9 @@ class IsolateTypeRender(bpy.types.Operator): def execute(self, context): act_type = context.object.type - + for obj in context.visible_objects: - + if obj.selected: obj.restrict_render = False else: diff --git a/release/scripts/op/sequencer.py b/release/scripts/op/sequencer.py index 48f83613147..13668498aae 100644 --- a/release/scripts/op/sequencer.py +++ b/release/scripts/op/sequencer.py @@ -138,6 +138,7 @@ def register(): register(SequencerCutMulticam) register(SequencerDeinterlaceSelectedMovies) + def unregister(): unregister = bpy.types.unregister @@ -145,7 +146,6 @@ def unregister(): unregister(SequencerCutMulticam) unregister(SequencerDeinterlaceSelectedMovies) - if __name__ == "__main__": register() diff --git a/release/scripts/op/uv.py b/release/scripts/op/uv.py index 1a64f61a11a..cd0b7086a70 100644 --- a/release/scripts/op/uv.py +++ b/release/scripts/op/uv.py @@ -178,7 +178,7 @@ class ExportUVLayout(bpy.types.Operator): fw('stroke\n') fw('} def\n') fw('newpath\n') - + firstline = True for i, uvs in self._face_uv_iter(context): for j, uv in enumerate(uvs): diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py index d04d6c7a1dd..4a587f41aa7 100644 --- a/release/scripts/op/wm.py +++ b/release/scripts/op/wm.py @@ -16,7 +16,7 @@ # # ##### END GPL LICENSE BLOCK ##### -# +# import bpy diff --git a/release/scripts/ui/properties_object_constraint.py b/release/scripts/ui/properties_object_constraint.py index 11527ad9bda..6288b51020a 100644 --- a/release/scripts/ui/properties_object_constraint.py +++ b/release/scripts/ui/properties_object_constraint.py @@ -739,7 +739,7 @@ class ConstraintButtonsPanel(bpy.types.Panel): else: col = layout.column() col.prop(con, "use_relative_position") - if con.use_relative_position: + if con.use_relative_position: col.prop(con, "offset", text="Relative Pivot Point") else: col.prop(con, "offset", text="Absolute Pivot Point") @@ -747,6 +747,7 @@ class ConstraintButtonsPanel(bpy.types.Panel): col = layout.column() col.prop(con, "enabled_rotation_range", text="Pivot When") + class OBJECT_PT_constraints(ConstraintButtonsPanel): bl_label = "Object Constraints" bl_context = "constraint" diff --git a/release/scripts/ui/properties_physics_smoke.py b/release/scripts/ui/properties_physics_smoke.py index ec9f8fad77e..c5357c515de 100644 --- a/release/scripts/ui/properties_physics_smoke.py +++ b/release/scripts/ui/properties_physics_smoke.py @@ -183,7 +183,7 @@ class PHYSICS_PT_smoke_highres(PhysicButtonsPanel): md = context.smoke.domain_settings wide_ui = context.region.width > narrowui - + layout.active = md.highres split = layout.split() diff --git a/release/scripts/ui/properties_render.py b/release/scripts/ui/properties_render.py index 3166023a83a..8bbe11a5f90 100644 --- a/release/scripts/ui/properties_render.py +++ b/release/scripts/ui/properties_render.py @@ -313,7 +313,7 @@ class RENDER_PT_output(RenderButtonsPanel): if rd.file_format in ('AVI_JPEG', 'JPEG'): split = layout.split() split.prop(rd, "file_quality", slider=True) - + elif rd.file_format == 'MULTILAYER': split = layout.split() diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index 7d28b5a883c..d37190eb5eb 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -66,7 +66,7 @@ class INFO_HT_header(bpy.types.Header): layout.template_running_jobs() layout.template_reports_banner() - + layout.label(text=scene.statistics()) # XXX: this should be right-aligned to the RHS of the region @@ -198,6 +198,7 @@ class INFO_MT_mesh_add(bpy.types.Menu): layout.operator("mesh.primitive_grid_add", icon='MESH_GRID', text="Grid") layout.operator("mesh.primitive_monkey_add", icon='MESH_MONKEY', text="Monkey") + class INFO_MT_curve_add(bpy.types.Menu): bl_idname = "INFO_MT_curve_add" bl_label = "Curve" @@ -211,6 +212,7 @@ class INFO_MT_curve_add(bpy.types.Menu): layout.operator("curve.primitive_nurbs_circle_add", icon='CURVE_NCIRCLE', text="Nurbs Circle") layout.operator("curve.primitive_nurbs_path_add", icon='CURVE_PATH', text="Path") + class INFO_MT_armature_add(bpy.types.Menu): bl_idname = "INFO_MT_armature_add" bl_label = "Armature" diff --git a/release/scripts/ui/space_logic.py b/release/scripts/ui/space_logic.py index 0dcdbbb1def..c6b5092b636 100644 --- a/release/scripts/ui/space_logic.py +++ b/release/scripts/ui/space_logic.py @@ -46,6 +46,7 @@ class LOGIC_PT_properties(bpy.types.Panel): row.prop(prop, "debug", text="", toggle=True, icon='INFO') row.operator("object.game_property_remove", text="", icon='X').index = i + class LOGIC_MT_logicbricks_add(bpy.types.Menu): bl_label = "Add" diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index b94acf6f3ad..befb05cff44 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -457,7 +457,7 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel): row = layout.row(align=True) sub = row.row() sub.scale_x = 2.0 - + if not context.screen.animation_playing: sub.operator("screen.animation_play", text="", icon='PLAY') else: diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index d0d91c2accf..a55d60eb55c 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -165,11 +165,11 @@ class USERPREF_PT_interface(bpy.types.Panel): sub.enabled = view.show_mini_axis sub.prop(view, "mini_axis_size", text="Size") sub.prop(view, "mini_axis_brightness", text="Brightness") - + col.separator() col.separator() col.separator() - + col.label(text="Properties Window:") col.prop(view, "properties_width_check") @@ -554,7 +554,7 @@ class USERPREF_PT_theme(bpy.types.Panel): ui = theme.user_interface.wcol_scroll col.label(text="Scroll Bar:") ui_items_general(col, ui) - + ui = theme.user_interface.wcol_progress col.label(text="Progress Bar:") ui_items_general(col, ui) @@ -1227,7 +1227,7 @@ class USERPREF_PT_addons(bpy.types.Panel): split.operator("wm.url_open", text="Link to the Wiki", icon='HELP').url = info["wiki_url"] if info["tracker_url"]: split.operator("wm.url_open", text="Report a Bug", icon='URL').url = info["tracker_url"] - + if info["wiki_url"] and info["tracker_url"]: split.separator() else: diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index e505a260d41..8404ee83f16 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -38,7 +38,7 @@ class VIEW3D_HT_header(bpy.types.Header): # Menus if context.area.show_menus: sub = row.row(align=True) - + sub.menu("VIEW3D_MT_view") # Select Menu @@ -855,8 +855,8 @@ class VIEW3D_MT_object_game_properties(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.operator("object.game_property_copy", text="Replace").operation="REPLACE" - layout.operator("object.game_property_copy", text="Merge").operation="MERGE" + layout.operator("object.game_property_copy", text="Replace").operation = 'REPLACE' + layout.operator("object.game_property_copy", text="Merge").operation = 'MERGE' layout.operator_menu_enum("object.game_property_copy", "property", text="Copy...") layout.separator() layout.operator("object.game_property_clear") From 6b21085ed5d8bcd827859345105d7b37e1049d4b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Jun 2010 19:20:05 +0000 Subject: [PATCH 045/674] enable adding objects in background mode by not using the context to get the object added. --- source/blender/editors/curve/editcurve.c | 2 +- source/blender/editors/include/ED_object.h | 2 +- source/blender/editors/mesh/editmesh_add.c | 7 +++++-- source/blender/editors/object/object_add.c | 13 ++++++------- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 1b1af31095a..274b51f03b2 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -5283,7 +5283,7 @@ static int curve_prim_add(bContext *C, wmOperator *op, int type){ } else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); - ED_object_new_primitive_matrix(C, loc, rot, mat); + ED_object_new_primitive_matrix(C, obedit, loc, rot, mat); nu= add_nurbs_primitive(C, mat, type, newob); editnurb= curve_get_editcurve(obedit); diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h index 4e0973fe77a..da4896b3435 100644 --- a/source/blender/editors/include/ED_object.h +++ b/source/blender/editors/include/ED_object.h @@ -84,7 +84,7 @@ void ED_object_enter_editmode(struct bContext *C, int flag); void ED_object_location_from_view(struct bContext *C, float *loc); void ED_object_rotation_from_view(struct bContext *C, float *rot); void ED_object_base_init_transform(struct bContext *C, struct Base *base, float *loc, float *rot); -float ED_object_new_primitive_matrix(struct bContext *C, float *loc, float *rot, float primmat[][4]); +float ED_object_new_primitive_matrix(struct bContext *C, struct Object *editob, float *loc, float *rot, float primmat[][4]); void ED_object_add_generic_props(struct wmOperatorType *ot, int do_editmode); int ED_object_add_generic_invoke(struct bContext *C, struct wmOperator *op, struct wmEvent *event); diff --git a/source/blender/editors/mesh/editmesh_add.c b/source/blender/editors/mesh/editmesh_add.c index 857423f8ab3..f0e6f40af30 100644 --- a/source/blender/editors/mesh/editmesh_add.c +++ b/source/blender/editors/mesh/editmesh_add.c @@ -1269,6 +1269,7 @@ static void make_prim_ext(bContext *C, float *loc, float *rot, int enter_editmod Object *obedit= CTX_data_edit_object(C); int newob = 0; float mat[4][4]; + int scale; if(obedit==NULL || obedit->type!=OB_MESH) { obedit= ED_object_add_type(C, OB_MESH, loc, rot, FALSE, layer); @@ -1279,8 +1280,10 @@ static void make_prim_ext(bContext *C, float *loc, float *rot, int enter_editmod } else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); - dia *= ED_object_new_primitive_matrix(C, loc, rot, mat); - depth *= ED_object_new_primitive_matrix(C, loc, rot, mat); + scale= ED_object_new_primitive_matrix(C, obedit, loc, rot, mat); + + dia *= scale; + depth *= scale; make_prim(obedit, type, mat, tot, seg, subdiv, dia, depth, ext, fill); diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 77c373c93e2..9f8fe7ba0f2 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -137,9 +137,8 @@ void ED_object_base_init_transform(bContext *C, Base *base, float *loc, float *r /* uses context to figure out transform for primitive */ /* returns standard diameter */ -float ED_object_new_primitive_matrix(bContext *C, float *loc, float *rot, float primmat[][4]) +float ED_object_new_primitive_matrix(bContext *C, Object *obedit, float *loc, float *rot, float primmat[][4]) { - Object *obedit= CTX_data_edit_object(C); View3D *v3d =CTX_wm_view3d(C); float mat[3][3], rmat[3][3], cmat[3][3], imat[3][3]; @@ -155,8 +154,8 @@ float ED_object_new_primitive_matrix(bContext *C, float *loc, float *rot, float copy_m4_m3(primmat, imat); /* center */ - VECCOPY(primmat[3], loc); - VECSUB(primmat[3], primmat[3], obedit->obmat[3]); + copy_v3_v3(primmat[3], loc); + sub_v3_v3v3(primmat[3], primmat[3], obedit->obmat[3]); invert_m3_m3(imat, mat); mul_m3_v3(imat, primmat[3]); @@ -366,7 +365,7 @@ static Object *effector_add_type(bContext *C, wmOperator *op, int type) ((Curve*)ob->data)->flag |= CU_PATH|CU_3D; ED_object_enter_editmode(C, 0); - ED_object_new_primitive_matrix(C, loc, rot, mat); + ED_object_new_primitive_matrix(C, ob, loc, rot, mat); BLI_addtail(curve_get_editcurve(ob), add_nurbs_primitive(C, mat, CU_NURBS|CU_PRIM_PATH, 1)); if(!enter_editmode) @@ -498,7 +497,7 @@ static int object_add_surface_exec(bContext *C, wmOperator *op) } else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); - ED_object_new_primitive_matrix(C, loc, rot, mat); + ED_object_new_primitive_matrix(C, obedit, loc, rot, mat); nu= add_nurbs_primitive(C, mat, RNA_enum_get(op->ptr, "type"), newob); editnurb= curve_get_editcurve(obedit); @@ -563,7 +562,7 @@ static int object_metaball_add_exec(bContext *C, wmOperator *op) } else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); - ED_object_new_primitive_matrix(C, loc, rot, mat); + ED_object_new_primitive_matrix(C, obedit, loc, rot, mat); elem= (MetaElem*)add_metaball_primitive(C, mat, RNA_enum_get(op->ptr, "type"), newob); mball= (MetaBall*)obedit->data; From dd72ffe3ff6871960f644d6c4b16c1661c7b4e03 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Jun 2010 19:31:10 +0000 Subject: [PATCH 046/674] py/rna api: - bpy.context wasnt being created from the python bpy.types.Context type defined in bpy_types.py (bpy.context.copy() failed for eg.) - bpy.context.copy() was returning C defined methods like FloatProperty(), which are not useful in this case, removed. --- release/scripts/modules/bpy_types.py | 5 ++++- source/blender/python/intern/bpy.c | 10 +++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 2640288b3c5..c8153ce9b74 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -29,11 +29,14 @@ class Context(StructRNA): __slots__ = () def copy(self): + import types new_context = {} generic_keys = StructRNA.__dict__.keys() for item in dir(self): if item not in generic_keys: - new_context[item] = getattr(self, item) + value = getattr(self, item) + if type(value) != types.BuiltinMethodType: + new_context[item] = getattr(self, item) return new_context diff --git a/source/blender/python/intern/bpy.c b/source/blender/python/intern/bpy.c index 0d532a61ce7..4e1a0abc517 100644 --- a/source/blender/python/intern/bpy.c +++ b/source/blender/python/intern/bpy.c @@ -141,6 +141,7 @@ static void bpy_import_test(char *modname) void BPy_init_modules( void ) { extern BPy_StructRNA *bpy_context_module; + PointerRNA ctx_ptr; PyObject *mod; /* Needs to be first since this dir is needed for future modules */ @@ -181,9 +182,12 @@ void BPy_init_modules( void ) PyModule_AddObject( mod, "app", BPY_app_struct() ); /* bpy context */ - bpy_context_module= ( BPy_StructRNA * ) PyObject_NEW( BPy_StructRNA, &pyrna_struct_Type ); - RNA_pointer_create(NULL, &RNA_Context, BPy_GetContext(), &bpy_context_module->ptr); - bpy_context_module->freeptr= 0; + RNA_pointer_create(NULL, &RNA_Context, BPy_GetContext(), &ctx_ptr); + bpy_context_module= (BPy_StructRNA *)pyrna_struct_CreatePyObject(&ctx_ptr); + /* odd that this is needed, 1 ref on creation and another for the module + * but without we get a crash on exit */ + Py_INCREF(bpy_context_module); + PyModule_AddObject(mod, "context", (PyObject *)bpy_context_module); /* utility func's that have nowhere else to go */ From 006d5e82e8494ef19759f28d92088ebc27dedd3d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 9 Jun 2010 19:44:06 +0000 Subject: [PATCH 047/674] more cleanup to bpy.context.copy(), exclude rna values and its self. --- release/scripts/modules/bpy_types.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index c8153ce9b74..0ba36a7c092 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -29,14 +29,14 @@ class Context(StructRNA): __slots__ = () def copy(self): - import types + from types import BuiltinMethodType new_context = {} - generic_keys = StructRNA.__dict__.keys() - for item in dir(self): - if item not in generic_keys: - value = getattr(self, item) - if type(value) != types.BuiltinMethodType: - new_context[item] = getattr(self, item) + generic_attrs = list(StructRNA.__dict__.keys()) + ["bl_rna", "rna_type", "copy"] + for attr in dir(self): + if not (attr.startswith("_") or attr in generic_attrs): + value = getattr(self, attr) + if type(value) != BuiltinMethodType: + new_context[attr] = value return new_context From 0cfdb63499075e8ff70b986e6f80df31f2457a4d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Jun 2010 07:57:25 +0000 Subject: [PATCH 048/674] lamp drawing clip start request by venomgfx, with wide lamps its hard to tell where clip start is at the edge of a lamp. --- .../blender/editors/space_view3d/drawobject.c | 43 +++++++++++++------ 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index d3b70f4553a..b4e9b227a91 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -773,9 +773,7 @@ static void drawshadbuflimits(Lamp *la, float mat[][4]) { float sta[3], end[3], lavec[3]; - lavec[0]= -mat[2][0]; - lavec[1]= -mat[2][1]; - lavec[2]= -mat[2][2]; + negate_v3_v3(lavec, mat[2]); normalize_v3(lavec); sta[0]= mat[3][0]+ la->clipsta*lavec[0]; @@ -1077,17 +1075,20 @@ static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, /* draw the circle/square at the end of the cone */ glTranslatef(0.0, 0.0 , x); if(la->mode & LA_SQUARE) { - vvec[0]= fabs(z); - vvec[1]= fabs(z); - vvec[2]= 0.0; + float tvec[3]; + float z_abs= fabs(z); + + tvec[0]= tvec[1]= z_abs; + tvec[2]= 0.0; + glBegin(GL_LINE_LOOP); - glVertex3fv(vvec); - vvec[1]= -fabs(z); - glVertex3fv(vvec); - vvec[0]= -fabs(z); - glVertex3fv(vvec); - vvec[1]= fabs(z); - glVertex3fv(vvec); + glVertex3fv(tvec); + tvec[1]= -z_abs; /* neg */ + glVertex3fv(tvec); + tvec[0]= -z_abs; /* neg */ + glVertex3fv(tvec); + tvec[1]= z_abs; /* pos */ + glVertex3fv(tvec); glEnd(); } else circ(0.0, 0.0, fabs(z)); @@ -1104,6 +1105,22 @@ static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, if(drawcone) draw_transp_spot_volume(la, x, z); + + /* draw clip start, useful for wide cones where its not obvious where the start is */ + glTranslatef(0.0, 0.0 , -x); /* reverse translation above */ + if(la->type==LA_SPOT && (la->mode & LA_SHAD_BUF) ) { + float lvec_clip[3]; + float vvec_clip[3]; + float clipsta_fac= la->clipsta / -x; + + interp_v3_v3v3(lvec_clip, vec, lvec, clipsta_fac); + interp_v3_v3v3(vvec_clip, vec, vvec, clipsta_fac); + + glBegin(GL_LINE_STRIP); + glVertex3fv(lvec_clip); + glVertex3fv(vvec_clip); + glEnd(); + } } else if ELEM(la->type, LA_HEMI, LA_SUN) { From 64fbe2ee215821ad99b2554dd49cb16b20f867e3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Jun 2010 14:42:24 +0000 Subject: [PATCH 049/674] Minor modification to how objects are selected for animation baking, Rather then only baking parent objects. Only bake objects which are have no parents in the original scene. This allows for parenting and unparenting within the game engine without gaps in the animation curves. --- source/gameengine/Converter/KX_BlenderSceneConverter.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp index 3a5bb92b4fa..0575c55846b 100644 --- a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp +++ b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp @@ -752,22 +752,21 @@ void KX_BlenderSceneConverter::WritePhysicsObjectToAnimationIpo(int frameNumber) { KX_Scene* scene = scenes->at(i); //PHY_IPhysicsEnvironment* physEnv = scene->GetPhysicsEnvironment(); - CListValue* parentList = scene->GetRootParentList(); + CListValue* parentList = scene->GetObjectList(); int numObjects = parentList->GetCount(); int g; for (g=0;gGetValue(g); - if (gameObj->IsDynamic()) + Object* blenderObject = gameObj->GetBlenderObject(); + if (blenderObject && blenderObject->parent==NULL && gameObj->GetPhysicsController() != NULL) { //KX_IPhysicsController* physCtrl = gameObj->GetPhysicsController(); - - Object* blenderObject = gameObj->GetBlenderObject(); if(blenderObject->adt==NULL) BKE_id_add_animdata(&blenderObject->id); - if (blenderObject && blenderObject->adt) + if (blenderObject->adt) { const MT_Point3& position = gameObj->NodeGetWorldPosition(); //const MT_Vector3& scale = gameObj->NodeGetWorldScaling(); From 7e21cede8f9a392db31889b398233f7b4ed829f0 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Jun 2010 15:41:01 +0000 Subject: [PATCH 050/674] setting the sequencer strip filepath for sound strips would rename the strip path but not the sounds, resulting in sounds that didnt play in the sequencer unless you removed and replaced them with a strip that pointed to the new path. The way these 2 datablocks work together is a bit odd, I think this is OK for now but should be better defined. --- source/blender/blenkernel/intern/sequencer.c | 2 +- source/blender/makesrna/intern/rna_sequencer.c | 11 +++++++++++ source/blender/makesrna/intern/rna_sound.c | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index f1e60ee2cfd..3ff7370a443 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -566,7 +566,7 @@ void calc_sequence(Scene *scene, Sequence *seq) } } -/* note: caller should run calc_sequence(scene, seq) */ +/* note: caller should run calc_sequence(scene, seq) after */ void reload_sequence_new_file(Scene *scene, Sequence * seq, int lock_range) { char str[FILE_MAXDIR+FILE_MAXFILE]; diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index f1f4a252c16..b4d7b5559a4 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -348,11 +348,22 @@ static PointerRNA rna_SequenceEditor_meta_stack_get(CollectionPropertyIterator * return rna_pointer_inherit_refine(&iter->parent, &RNA_Sequence, ms->parseq); } +/* TODO, expose seq path setting as a higher level sequencer BKE function */ 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. + * arguably, this could load in a new sound rather then modify an existing one. + * but while using the sequencer its most likely your not using the sound in the game engine too. + */ + PointerRNA id_ptr; + RNA_id_pointer_create((ID *)seq->sound, &id_ptr); + RNA_string_set(&id_ptr, "filepath", value); + } + 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)); diff --git a/source/blender/makesrna/intern/rna_sound.c b/source/blender/makesrna/intern/rna_sound.c index b3c9e36e7b9..9048a3c3072 100644 --- a/source/blender/makesrna/intern/rna_sound.c +++ b/source/blender/makesrna/intern/rna_sound.c @@ -72,7 +72,7 @@ static void rna_def_sound(BlenderRNA *brna) prop= RNA_def_property(srna, "filepath", PROP_STRING, PROP_FILEPATH); RNA_def_property_string_sdna(prop, NULL, "name"); - RNA_def_property_ui_text(prop, "Filename", "Sound sample file used by this Sound datablock"); + RNA_def_property_ui_text(prop, "File Path", "Sound sample file used by this Sound datablock"); RNA_def_property_update(prop, 0, "rna_Sound_filepath_update"); prop= RNA_def_property(srna, "packed_file", PROP_POINTER, PROP_NONE); From ac59cad93fb200fc88c2e062dda058b78deb9fd9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Jun 2010 18:56:52 +0000 Subject: [PATCH 051/674] bugfix [#22561] Make Dupliface Memory Leak --- source/blender/makesrna/intern/rna_scene.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index cf3c8c31121..545369727e4 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -212,15 +212,20 @@ static void rna_Scene_object_unlink(Scene *scene, ReportList *reports, Object *o { Base *base= object_in_scene(ob, scene); if (!base) { - BKE_report(reports, RPT_ERROR, "Object is not in this scene."); + BKE_reportf(reports, RPT_ERROR, "Object '%s' is not in this scene '%s'.", ob->id.name+2, scene->id.name+2); return; } if (base==scene->basact && ob->mode != OB_MODE_OBJECT) { - BKE_report(reports, RPT_ERROR, "Object must be in 'Object Mode' to unlink."); + BKE_reportf(reports, RPT_ERROR, "Object '%s' must be in 'Object Mode' to unlink.", ob->id.name+2); return; } + if(scene->basact==base) { + scene->basact= NULL; + } BLI_remlink(&scene->base, base); + MEM_freeN(base); + ob->id.us--; /* needed otherwise the depgraph will contain free'd objects which can crash, see [#20958] */ From 7d841b2f8327160f0adcd76c2f4a1aa65dd1089a Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Thu, 10 Jun 2010 19:35:37 +0000 Subject: [PATCH 052/674] Fixed bug #22558, Show Cone & Square look strange * Fixed a couple things: for triangle fans, you have to put an extra vert to make them closed, and also flipped the draw order so that the normals went the same as for circle cones. --- .../blender/editors/space_view3d/drawobject.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index b4e9b227a91..7172da55744 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -868,25 +868,17 @@ static void spotvolume(float *lvec, float *vvec, float inp) static void draw_spot_cone(Lamp *la, float x, float z) { - float vec[3]; - z= fabs(z); glBegin(GL_TRIANGLE_FAN); glVertex3f(0.0f, 0.0f, -x); if(la->mode & LA_SQUARE) { - vec[0]= z; - vec[1]= z; - vec[2]= 0.0; - - glVertex3fv(vec); - vec[1]= -z; - glVertex3fv(vec); - vec[0]= -z; - glVertex3fv(vec); - vec[1]= z; - glVertex3fv(vec); + glVertex3f(z, z, 0); + glVertex3f(-z, z, 0); + glVertex3f(-z, -z, 0); + glVertex3f(z, -z, 0); + glVertex3f(z, z, 0); } else { float angle; From 0d36ce3252d00b03df873a14d9edac31041d3343 Mon Sep 17 00:00:00 2001 From: Diego Borghetti Date: Thu, 10 Jun 2010 21:12:22 +0000 Subject: [PATCH 053/674] Fix bug #22563 Two modifers with same name on one object The copy_object function don't call modifier_unique_name so every modifier (in this case, the array) get the same name. --- source/blender/blenkernel/intern/object.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index ac4fd28bd28..6e5afcbd1ec 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1280,6 +1280,7 @@ Object *copy_object(Object *ob) for (md=ob->modifiers.first; md; md=md->next) { ModifierData *nmd = modifier_new(md->type); + modifier_unique_name(&obn->modifiers, nmd); modifier_copyData(md, nmd); BLI_addtail(&obn->modifiers, nmd); } From 6aaf55eee5a2a7fb4482ecb5eead0b3b92e24caa Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Thu, 10 Jun 2010 21:23:09 +0000 Subject: [PATCH 054/674] Copy name from original modifier rather than generate new unique in copy_object --- source/blender/blenkernel/intern/object.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 6e5afcbd1ec..972c07eb272 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1280,7 +1280,7 @@ Object *copy_object(Object *ob) for (md=ob->modifiers.first; md; md=md->next) { ModifierData *nmd = modifier_new(md->type); - modifier_unique_name(&obn->modifiers, nmd); + BLI_strncpy(nmd->name, md->name, sizeof(nmd->name)); modifier_copyData(md, nmd); BLI_addtail(&obn->modifiers, nmd); } From 1022ec3fe4b5c7491eaf271652dd7b64a7355224 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Jun 2010 21:31:39 +0000 Subject: [PATCH 055/674] clear python console namespace when used with a new window manager, otherwise old python objects are kept around between opening different blend files (leaking memory). ideally loading a new file would clear the namespace but practically its unliekly to be a problem. --- release/scripts/op/console_python.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/release/scripts/op/console_python.py b/release/scripts/op/console_python.py index 385dd832537..83a3130f80e 100644 --- a/release/scripts/op/console_python.py +++ b/release/scripts/op/console_python.py @@ -33,7 +33,7 @@ def get_console(console_id): ''' helper function for console operators currently each text datablock gets its own - console - bpython_code.InteractiveConsole() + console - code.InteractiveConsole() ...which is stored in this function. console_id can be any hashable type @@ -44,21 +44,24 @@ def get_console(console_id): if consoles is None: consoles = get_console.consoles = {} + else: + # check if clearning 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. + hash_prev = getattr(get_console, "consoles_namespace_hash", 0) + hash_next = hash(bpy.context.manager) - # clear all dead consoles, use text names as IDs - # TODO, find a way to clear IDs - ''' - for console_id in list(consoles.keys()): - if console_id not in bpy.data.texts: - del consoles[id] - ''' + if hash_prev != hash_next: + get_console.consoles_namespace_hash = hash_next + consoles.clear() console_data = consoles.get(console_id) if console_data: console, stdout, stderr = console_data - # XXX, bug in python 3.1.2 ? + # XXX, bug in python 3.1.2 ? (worked in 3.1.1) # seems there is no way to clear StringIO objects for writing, have to make new ones each time. import io stdout = io.StringIO() From 8480b21d4ac1e892b928f9c21a1a2e8594a944b3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Jun 2010 22:11:41 +0000 Subject: [PATCH 056/674] bugfix [#22569] Bezier splines.points segfault --- source/blender/makesrna/intern/rna_curve.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index 563fdbf8236..f7404d2656b 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -215,10 +215,10 @@ static void rna_Curve_dimension_set(PointerRNA *ptr, int value) } - static int rna_Nurb_length(PointerRNA *ptr) { Nurb *nu= (Nurb*)ptr->data; + if(nu->type == CU_BEZIER) return 0; return nu->pntsv>0 ? nu->pntsu*nu->pntsv : nu->pntsu; } From b45b0512c8825ad2cca3eadee2e8679d08af59ef Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Thu, 10 Jun 2010 23:53:13 +0000 Subject: [PATCH 057/674] create COMPAT_ENGINE in game panels to allow external game engines - patch from Xavier Thomas(xat) --- release/scripts/ui/properties_game.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/release/scripts/ui/properties_game.py b/release/scripts/ui/properties_game.py index a5b443a461b..371cc0014f9 100644 --- a/release/scripts/ui/properties_game.py +++ b/release/scripts/ui/properties_game.py @@ -30,11 +30,12 @@ class PhysicsButtonsPanel(bpy.types.Panel): def poll(self, context): ob = context.active_object rd = context.scene.render - return ob and ob.game and (rd.engine == 'BLENDER_GAME') + return ob and ob.game and (rd.engine in self.COMPAT_ENGINES) class PHYSICS_PT_game_physics(PhysicsButtonsPanel): bl_label = "Physics" + COMPAT_ENGINES = {'BLENDER_GAME'} def draw(self, context): layout = self.layout @@ -163,11 +164,12 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel): class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel): bl_label = "Collision Bounds" + COMPAT_ENGINES = {'BLENDER_GAME'} def poll(self, context): game = context.object.game rd = context.scene.render - return (game.physics_type in ('DYNAMIC', 'RIGID_BODY', 'SENSOR', 'SOFT_BODY', 'STATIC')) and (rd.engine == 'BLENDER_GAME') + return (game.physics_type in ('DYNAMIC', 'RIGID_BODY', 'SENSOR', 'SOFT_BODY', 'STATIC')) and (rd.engine in self.COMPAT_ENGINES) def draw_header(self, context): game = context.active_object.game @@ -203,11 +205,12 @@ class RenderButtonsPanel(bpy.types.Panel): def poll(self, context): rd = context.scene.render - return (rd.engine == 'BLENDER_GAME') + return (rd.engine in self.COMPAT_ENGINES) class RENDER_PT_game(RenderButtonsPanel): bl_label = "Game" + COMPAT_ENGINES = {'BLENDER_GAME'} def draw(self, context): layout = self.layout @@ -219,6 +222,7 @@ class RENDER_PT_game(RenderButtonsPanel): class RENDER_PT_game_player(RenderButtonsPanel): bl_label = "Standalone Player" + COMPAT_ENGINES = {'BLENDER_GAME'} def draw(self, context): layout = self.layout @@ -256,6 +260,7 @@ class RENDER_PT_game_player(RenderButtonsPanel): class RENDER_PT_game_stereo(RenderButtonsPanel): bl_label = "Stereo" + COMPAT_ENGINES = {'BLENDER_GAME'} def draw(self, context): layout = self.layout @@ -315,6 +320,7 @@ class RENDER_PT_game_stereo(RenderButtonsPanel): class RENDER_PT_game_shading(RenderButtonsPanel): bl_label = "Shading" + COMPAT_ENGINES = {'BLENDER_GAME'} def draw(self, context): layout = self.layout @@ -343,6 +349,7 @@ class RENDER_PT_game_shading(RenderButtonsPanel): class RENDER_PT_game_performance(RenderButtonsPanel): bl_label = "Performance" + COMPAT_ENGINES = {'BLENDER_GAME'} def draw(self, context): layout = self.layout @@ -368,6 +375,7 @@ class RENDER_PT_game_performance(RenderButtonsPanel): class RENDER_PT_game_sound(RenderButtonsPanel): bl_label = "Sound" + COMPAT_ENGINES = {'BLENDER_GAME'} def draw(self, context): layout = self.layout @@ -390,12 +398,13 @@ class WorldButtonsPanel(bpy.types.Panel): def poll(self, context): scene = context.scene - return (scene.render.engine == 'BLENDER_GAME') and (scene.world is not None) + return (scene.render.engine in self.COMPAT_ENGINES) and (scene.world is not None) class WORLD_PT_game_context_world(WorldButtonsPanel): bl_label = "" bl_show_header = False + COMPAT_ENGINES = {'BLENDER_GAME'} def poll(self, context): rd = context.scene.render @@ -424,6 +433,7 @@ class WORLD_PT_game_context_world(WorldButtonsPanel): class WORLD_PT_game_world(WorldButtonsPanel): bl_label = "World" + COMPAT_ENGINES = {'BLENDER_GAME'} def draw(self, context): layout = self.layout @@ -443,6 +453,7 @@ class WORLD_PT_game_world(WorldButtonsPanel): class WORLD_PT_game_mist(WorldButtonsPanel): bl_label = "Mist" + COMPAT_ENGINES = {'BLENDER_GAME'} def draw_header(self, context): world = context.world @@ -468,6 +479,7 @@ class WORLD_PT_game_mist(WorldButtonsPanel): class WORLD_PT_game_physics(WorldButtonsPanel): bl_label = "Physics" + COMPAT_ENGINES = {'BLENDER_GAME'} def draw(self, context): layout = self.layout From 2980d902b94bddac0a9ebcb6023343b18f1a482e Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Fri, 11 Jun 2010 07:57:43 +0000 Subject: [PATCH 058/674] Fixed bug #21348, Hide selection in Edit Mode not working with some modifiers (VBOs) Was actually a couple bugs: * VBO bug was that hidden faces weren't being skipped correctly. Fixed that and rewrote this bit of VBO drawing code more clearly (less duplication, less unecessary state, and comments even) * Second bug was that CCGDerivedMesh wasn't outputing ORIGINDEX data for faces. (it's not doing it for edges or verts either, but I don't know that we need it to.) At any rate, we do need this data for faces so that additional DerivedMeshes on top of subsurf know what faces in the editmesh are hidden. --- .../blender/blenkernel/intern/cdderivedmesh.c | 44 ++++++++----------- .../blender/blenkernel/intern/subsurf_ccg.c | 5 +++ 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index cadf5f375b5..80f39531b34 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -853,47 +853,41 @@ static void cdDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *us } } else { /* use OpenGL VBOs or Vertex Arrays instead for better, faster rendering */ - int state = 1; - int prevstate = 1; int prevstart = 0; GPU_vertex_setup(dm); GPU_normal_setup(dm); if( useColors && mc ) GPU_color_setup(dm); if( !GPU_buffer_legacy(dm) ) { + int tottri = dm->drawObject->nelements/3; glShadeModel(GL_SMOOTH); - for( i = 0; i < dm->drawObject->nelements/3; i++ ) { + + for( i = 0; i < tottri; i++ ) { int actualFace = dm->drawObject->faceRemap[i]; int drawSmooth = (mf[actualFace].flag & ME_SMOOTH); - int dontdraw = 0; + int draw = 1; + if(index) { orig = index[actualFace]; if(setDrawOptions && orig == ORIGINDEX_NONE) - dontdraw = 1; + draw = 0; } else orig = actualFace; - if( dontdraw ) { - state = 0; + + if(setDrawOptions && !setDrawOptions(userData, orig, &drawSmooth)) + draw = 0; + + /* Goal is to draw as long of a contiguous triangle + array as possible, so draw when we hit either an + invisible triangle or at the end of the array */ + if(!draw || i == tottri - 1) { + if(prevstart != i) + /* Add one to the length (via `draw') + if we're drawing at the end of the array */ + glDrawArrays(GL_TRIANGLES,prevstart*3, (i-prevstart+draw)*3); + prevstart = i + 1; } - else { - if(!setDrawOptions || setDrawOptions(userData, orig, &drawSmooth)) { - state = 1; - } - else { - state = 0; - } - } - if( prevstate != state && prevstate == 1 ) { - if( i-prevstart > 0 ) { - glDrawArrays(GL_TRIANGLES,prevstart*3,(i-prevstart)*3); - } - prevstart = i; - } - prevstate = state; - } - if(state==1) { - glDrawArrays(GL_TRIANGLES,prevstart*3,dm->drawObject->nelements-prevstart*3); } glShadeModel(GL_FLAT); } diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index 53206bb3970..0d7738353df 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -2328,6 +2328,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, int gridInternalEdges; MEdge *medge = NULL; MFace *mface = NULL; + int *orig_indices; FaceVertWeight *qweight, *tweight; DM_from_template(&ccgdm->dm, dm, DM_TYPE_CCGDM, @@ -2437,6 +2438,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, faceFlags = ccgdm->faceFlags = MEM_callocN(sizeof(char)*2*totface, "faceFlags"); + orig_indices = (int*)ccgdm->dm.getFaceDataArray(&ccgdm->dm, CD_ORIGINDEX); for(index = 0; index < totface; ++index) { CCGFace *f = ccgdm->faceMap[index].face; int numVerts = ccgSubSurf_getFaceNumVerts(f); @@ -2450,6 +2452,9 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, ccgdm->faceMap[index].startEdge = edgeNum; ccgdm->faceMap[index].startFace = faceNum; + if(orig_indices) + orig_indices[faceNum] = origIndex; + /* set the face base vert */ *((int*)ccgSubSurf_getFaceUserData(ss, f)) = vertNum; From 4aa2ad003b5a71fefbce5c89907d74c73b5d93da Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 11 Jun 2010 09:09:57 +0000 Subject: [PATCH 059/674] game world buttons had old property name for mist toggle --- release/scripts/ui/properties_game.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release/scripts/ui/properties_game.py b/release/scripts/ui/properties_game.py index 371cc0014f9..9ec7168f834 100644 --- a/release/scripts/ui/properties_game.py +++ b/release/scripts/ui/properties_game.py @@ -458,7 +458,7 @@ class WORLD_PT_game_mist(WorldButtonsPanel): def draw_header(self, context): world = context.world - self.layout.prop(world.mist, "enabled", text="") + self.layout.prop(world.mist, "use_mist", text="") def draw(self, context): layout = self.layout @@ -466,7 +466,7 @@ class WORLD_PT_game_mist(WorldButtonsPanel): world = context.world wide_ui = context.region.width > narrowui - layout.active = world.mist.enabled + layout.active = world.mist.use_mist split = layout.split() col = split.column() From eb3220fa835b8f4be8f5512214cded92c4544833 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 11 Jun 2010 10:46:47 +0000 Subject: [PATCH 060/674] rna api - ParticleHairKey.location can now be set (object space location). - Library.parent was set to ID type. --- source/blender/makesrna/intern/rna_ID.c | 2 +- source/blender/makesrna/intern/rna_particle.c | 85 ++++++++++++++----- 2 files changed, 65 insertions(+), 22 deletions(-) diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c index 467eb237b9a..009afec2ded 100644 --- a/source/blender/makesrna/intern/rna_ID.c +++ b/source/blender/makesrna/intern/rna_ID.c @@ -405,7 +405,7 @@ static void rna_def_library(BlenderRNA *brna) /* TODO - lib->filename isnt updated, however the outliner also skips this, probably only needed on read. */ prop= RNA_def_property(srna, "parent", PROP_POINTER, PROP_NONE); - RNA_def_property_struct_type(prop, "ID"); + RNA_def_property_struct_type(prop, "Library"); RNA_def_property_ui_text(prop, "Parent", ""); } void RNA_def_ID(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c index ac1f27704d8..7b8d4830d5c 100644 --- a/source/blender/makesrna/intern/rna_particle.c +++ b/source/blender/makesrna/intern/rna_particle.c @@ -106,7 +106,8 @@ EnumPropertyItem part_hair_ren_as_items[] = { #include "BLI_math.h" #include "BLI_listbase.h" -static void rna_ParticleHairKey_location_object_get(PointerRNA *ptr, float *values) +/* use for object space hair get/set */ +static void rna_ParticleHairKey_location_object_info(PointerRNA *ptr, ParticleSystemModifierData **psmd_pt, ParticleData **pa_pt) { HairKey *hkey= (HairKey *)ptr->data; Object *ob = (Object *)ptr->id.data; @@ -115,37 +116,80 @@ static void rna_ParticleHairKey_location_object_get(PointerRNA *ptr, float *valu ParticleSystem *psys; ParticleData *pa; int i; - float hairmat[4][4]; - + + *psmd_pt= NULL; + *pa_pt= NULL; + + /* weak, what about multiple particle systems? */ for (md = ob->modifiers.first; md; md=md->next) { if (md->type == eModifierType_ParticleSystem) psmd= (ParticleSystemModifierData*) md; } - - psys = psmd->psys; - - if (!psmd || !psmd->dm || !psys) { - values[0] = values[1] = values[2] = 0.f; + + if (!psmd || !psmd->dm || !psmd->psys) { return; } - /* not a very efficient way of getting hair key location data, + psys= psmd->psys; + + /* not a very efficient way of getting hair key location data, * but it's the best we've got at the present */ - + /* find the particle that corresponds with this HairKey */ for(i=0, pa=psys->particles; itotpart; i++, pa++) { - - /* hairkeys are stored sequentially in memory, so we can find if - * it's the same particle by comparing pointers, without having + + /* hairkeys are stored sequentially in memory, so we can find if + * it's the same particle by comparing pointers, without having * to iterate over them all */ if ((hkey >= pa->hair) && (hkey < pa->hair + pa->totkey)) break; } - - psys_mat_hair_to_object(ob, psmd->dm, psys->part->from, pa, hairmat); - - copy_v3_v3(values, hkey->co); - mul_m4_v3(hairmat, values); + + *psmd_pt= psmd; + *pa_pt= pa; +} + +static void rna_ParticleHairKey_location_object_get(PointerRNA *ptr, float *values) +{ + HairKey *hkey= (HairKey *)ptr->data; + Object *ob = (Object *)ptr->id.data; + ParticleSystemModifierData *psmd; + ParticleData *pa; + + rna_ParticleHairKey_location_object_info(ptr, &psmd, &pa); + + if(pa) { + float hairmat[4][4]; + psys_mat_hair_to_object(ob, psmd->dm, psmd->psys->part->from, pa, hairmat); + copy_v3_v3(values, hkey->co); + mul_m4_v3(hairmat, values); + } + else { + zero_v3(values); + } +} + +static void rna_ParticleHairKey_location_object_set(PointerRNA *ptr, const float *values) +{ + HairKey *hkey= (HairKey *)ptr->data; + Object *ob = (Object *)ptr->id.data; + ParticleSystemModifierData *psmd; + ParticleData *pa; + + rna_ParticleHairKey_location_object_info(ptr, &psmd, &pa); + + if(pa) { + float hairmat[4][4]; + float imat[4][4]; + + psys_mat_hair_to_object(ob, psmd->dm, psmd->psys->part->from, pa, hairmat); + invert_m4_m4(imat, hairmat); + copy_v3_v3(hkey->co, values); + mul_m4_v3(imat, hkey->co); + } + else { + zero_v3(hkey->co); + } } /* property update functions */ @@ -697,12 +741,11 @@ static void rna_def_particle_hair_key(BlenderRNA *brna) prop= RNA_def_property(srna, "weight", PROP_FLOAT, PROP_UNSIGNED); RNA_def_property_range(prop, 0.0, 1.0); RNA_def_property_ui_text(prop, "Weight", "Weight for cloth simulation"); - + prop= RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Location (Object Space)", "Location of the hair key in object space"); - RNA_def_property_float_funcs(prop, "rna_ParticleHairKey_location_object_get", NULL, NULL); + RNA_def_property_float_funcs(prop, "rna_ParticleHairKey_location_object_get", "rna_ParticleHairKey_location_object_set", NULL); prop= RNA_def_property(srna, "location_hairspace", PROP_FLOAT, PROP_TRANSLATION); RNA_def_property_float_sdna(prop, NULL, "co"); From d811c284f978e092b2dfce60177b5b208127aaca Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 11 Jun 2010 13:00:24 +0000 Subject: [PATCH 061/674] Deny applying location/rotation to 2D curve - such transformation could make points have non-zero local z-coordinates, which is confusing for 2D. --- source/blender/editors/object/object_transform.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index 72d6eb5d74d..22f054bc180 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -432,6 +432,10 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo BKE_report(reports, RPT_ERROR, "Can't apply to a multi user curve, doing nothing."); return OPERATOR_CANCELLED; } + if(!(cu->flag & CU_3D) && (apply_rot || apply_loc)) { + BKE_report(reports, RPT_ERROR, "Neither rotation nor location could be applied to a 2d curve, doing nothing."); + return OPERATOR_CANCELLED; + } if(cu->key) { BKE_report(reports, RPT_ERROR, "Can't apply to a curve with vertex keys, doing nothing."); return OPERATOR_CANCELLED; @@ -498,7 +502,7 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo cu= ob->data; scale = mat3_to_scale(rsmat); - + for(nu=cu->nurb.first; nu; nu=nu->next) { if(nu->type == CU_BEZIER) { a= nu->pntsu; From e0bada19f97a45a22df838f79a9089811bd6880d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 11 Jun 2010 13:45:58 +0000 Subject: [PATCH 062/674] [#22496] OpenSuse 11.2 The problem with built-Povray give a better error message when povray isnt found. --- release/scripts/io/engine_render_pov.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/release/scripts/io/engine_render_pov.py b/release/scripts/io/engine_render_pov.py index 12cb2f61df0..bf57d02391b 100644 --- a/release/scripts/io/engine_render_pov.py +++ b/release/scripts/io/engine_render_pov.py @@ -762,12 +762,22 @@ class PovrayRender(bpy.types.RenderEngine): if 1: # TODO, when povray isnt found this gives a cryptic error, would be nice to be able to detect if it exists - self._process = subprocess.Popen([pov_binary, self._temp_file_ini]) # stdout=subprocess.PIPE, stderr=subprocess.PIPE + try: + self._process = subprocess.Popen([pov_binary, self._temp_file_ini]) # stdout=subprocess.PIPE, stderr=subprocess.PIPE + except OSError: + # TODO, report api + print("POVRAY: could not execute povray, possibly povray isn't installed: '%s'" % pov_binary) + import traceback + traceback.print_exc() + print ("***-DONE-***") + return False + else: # This works too but means we have to wait until its done os.system('%s %s' % (pov_binary, self._temp_file_ini)) print ("***-DONE-***") + return True def _cleanup(self): for f in (self._temp_file_in, self._temp_file_ini, self._temp_file_out): @@ -783,7 +793,10 @@ class PovrayRender(bpy.types.RenderEngine): self.update_stats("", "POVRAY: Exporting data from Blender") self._export(scene) self.update_stats("", "POVRAY: Parsing File") - self._render() + + if not self._render(): + self.update_stats("", "POVRAY: Not found") + return r = scene.render From a0a99e4a4d90ea4226b29d97ee83b02e4e439156 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 11 Jun 2010 14:10:02 +0000 Subject: [PATCH 063/674] [#22554] Register option on Texts doesn't work anymore there were no hints that '.py' extension is needed, added tooltip. --- release/scripts/ui/space_text.py | 8 ++++---- source/blender/makesrna/intern/rna_text.c | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/release/scripts/ui/space_text.py b/release/scripts/ui/space_text.py index 1eca1a9e05c..692f1581bd6 100644 --- a/release/scripts/ui/space_text.py +++ b/release/scripts/ui/space_text.py @@ -54,6 +54,9 @@ class TEXT_HT_header(bpy.types.Header): if text: row = layout.row() row.operator("text.run_script") + + row = layout.row() + row.active = text.name.endswith(".py") row.prop(text, "use_module") row = layout.row() @@ -63,10 +66,7 @@ class TEXT_HT_header(bpy.types.Header): else: row.label(text="File: %s" % text.filepath) else: - if text.library: - row.label(text="Text: External") - else: - row.label(text="Text: Internal") + row.label(text="Text: External" if text.library else "Text: Internal") class TEXT_PT_properties(bpy.types.Panel): diff --git a/source/blender/makesrna/intern/rna_text.c b/source/blender/makesrna/intern/rna_text.c index ccd3b432163..d8651e5d05d 100644 --- a/source/blender/makesrna/intern/rna_text.c +++ b/source/blender/makesrna/intern/rna_text.c @@ -195,7 +195,7 @@ static void rna_def_text(BlenderRNA *brna) prop= RNA_def_property(srna, "use_module", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", TXT_ISSCRIPT); - RNA_def_property_ui_text(prop, "Register", "Register this text as a module on loading"); + RNA_def_property_ui_text(prop, "Register", "Register this text as a module on loading, Text name must end with \".py\""); prop= RNA_def_property(srna, "tabs_as_spaces", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", TXT_TABSTOSPACES); From 66134ea38166742444720a4fe2f8d95effd8866a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 11 Jun 2010 15:35:11 +0000 Subject: [PATCH 064/674] patch [#22570] Text editor syntax coloring update from Jacob F (raccoon) This does two things to the text editor: 1) Adds coloring (same color as numbers) for True and False. 2) Fixes [#22551] Syntax coloring offset does not update when using real tabs and changing tab width --- .../blender/editors/space_text/space_text.c | 4 +-- source/blender/editors/space_text/text_draw.c | 26 +++++++++++++++++++ source/blender/makesrna/intern/rna_space.c | 2 +- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/space_text/space_text.c b/source/blender/editors/space_text/space_text.c index 3a23cd32629..96b38f2e78d 100644 --- a/source/blender/editors/space_text/space_text.c +++ b/source/blender/editors/space_text/space_text.c @@ -118,15 +118,13 @@ static void text_listener(ScrArea *sa, wmNotifier *wmn) /* context changes */ switch(wmn->category) { case NC_TEXT: - if(!wmn->reference || wmn->reference == st->text) { + if(!wmn->reference || wmn->reference == st->text || wmn->data == ND_DISPLAY || wmn->action == NA_EDITED) { ED_area_tag_redraw(sa); if(wmn->action == NA_EDITED) if(st->text) text_update_edited(st->text); } - else if(wmn->data == ND_DISPLAY) - ED_area_tag_redraw(sa); break; case NC_SPACE: diff --git a/source/blender/editors/space_text/text_draw.c b/source/blender/editors/space_text/text_draw.c index 7ae432e3d6f..3a891a66107 100644 --- a/source/blender/editors/space_text/text_draw.c +++ b/source/blender/editors/space_text/text_draw.c @@ -224,6 +224,21 @@ static int find_specialvar(char *string) return i; } +static int find_bool(char *string) +{ + int i = 0; + /* Check for "False" */ + if(string[0]=='F' && string[1]=='a' && string[2]=='l' && string[3]=='s' && string[4]=='e') + i = 5; + /* Check for "True" */ + else if(string[0]=='T' && string[1]=='r' && string[2]=='u' && string[3]=='e') + i = 4; + /* If next source char is an identifier (eg. 'i' in "definate") no match */ + if(i==0 || text_check_identifier(string[i])) + return -1; + return i; +} + /* Ensures the format string for the given line is long enough, reallocating as needed. Allocation is done here, alone, to ensure consistency. */ int text_check_format_len(TextLine *line, unsigned int len) @@ -335,6 +350,17 @@ static void txt_format_line(SpaceText *st, TextLine *line, int do_next) /* Numbers (digits not part of an identifier and periods followed by digits) */ else if((prev != 'q' && text_check_digit(*str)) || (*str == '.' && text_check_digit(*(str+1)))) *fmt = 'n'; + /* Booleans */ + else if(prev != 'q' && (i=find_bool(str)) != -1) + if(i>0) { + while(i>1) { + *fmt = 'n'; fmt++; str++; + i--; + } + *fmt = 'n'; + } + else + *fmt = 'q'; /* Punctuation */ else if(text_check_delim(*str)) *fmt = '!'; diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index b2607a2452b..2d582d54bbd 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -1557,7 +1557,7 @@ static void rna_def_space_text(BlenderRNA *brna) RNA_def_property_int_sdna(prop, NULL, "tabnumber"); RNA_def_property_range(prop, 2, 8); RNA_def_property_ui_text(prop, "Tab Width", "Number of spaces to display tabs with"); - RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TEXT, NULL); + RNA_def_property_update(prop, NC_TEXT|NA_EDITED, NULL); prop= RNA_def_property(srna, "font_size", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "lheight"); From dba99b544bb9561405c6305e8fb90d369526407f Mon Sep 17 00:00:00 2001 From: Luca Bonavita Date: Fri, 11 Jun 2010 22:41:13 +0000 Subject: [PATCH 065/674] == python api docs == * source/gameengine/PyDoc/bge.types.rst: KX_PolygonMaterial was missing the parent class indication (PyObjectPlus) * source/blender/python/doc/sphinx_doc_gen.py: * unified all the "undocumented" descriptions, like http://www.blender.org/documentation/250PythonDoc/bpy.ops.anim.html#bpy.ops.anim.keyframe_delete_button so that it will be easy for Alex to CCS 'em and also now people will have a link to contribute descriptions, see http://wiki.blender.org/index.php/Dev:2.5/Py/API/Documentation/Contribute * moved the note about bpy_struct not being available in the api in a proper note directive, so that it's more evident (I didn't see it at first) --- source/blender/python/doc/sphinx_doc_gen.py | 27 ++++++++++++++------- source/gameengine/PyDoc/bge.types.rst | 2 +- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/source/blender/python/doc/sphinx_doc_gen.py b/source/blender/python/doc/sphinx_doc_gen.py index fd6cf74691e..8f823ae238f 100644 --- a/source/blender/python/doc/sphinx_doc_gen.py +++ b/source/blender/python/doc/sphinx_doc_gen.py @@ -54,6 +54,9 @@ EXAMPLE_SET_USED = set() _BPY_STRUCT_FAKE = "bpy_struct" _BPY_FULL_REBUILD = False +undocumented_message = "Undocumented (`suggest a description " \ + "`_)\n\n" + def range_str(val): if val < -10000000: return '-inf' if val > 10000000: return 'inf' @@ -130,7 +133,7 @@ def pyfunc2sphinx(ident, fw, identifier, py_func, is_class=True): def py_descr2sphinx(ident, fw, descr, module_name, type_name, identifier): doc = descr.__doc__ if not doc: - doc = "Undocumented" + doc = undocumented_message if type(descr) == GetSetDescriptorType: fw(ident + ".. attribute:: %s\n\n" % identifier) @@ -154,8 +157,7 @@ def py_c_func2sphinx(ident, fw, identifier, py_func, is_class=True): fw("\n") else: fw(ident + ".. function:: %s()\n\n" % identifier) - fw(ident + " Undocumented function.\n\n" % identifier) - + fw(ident + " " + undocumented_message) def pyprop2sphinx(ident, fw, identifier, py_prop): ''' @@ -641,10 +643,10 @@ def rna2sphinx(BASEPATH): if subclass_ids: fw("subclasses --- \n" + ", ".join([(":class:`%s`" % s) for s in sorted(subclass_ids)]) + "\n\n") - fw(".. class:: %s\n" % _BPY_STRUCT_FAKE) - fw("\n") - fw(" built-in base class for all classes in bpy.types, note that bpy.types.%s is not actually available from within blender, it only exists for the purpose of documentation.\n" % _BPY_STRUCT_FAKE) - fw("\n") + fw(".. class:: %s\n\n" % _BPY_STRUCT_FAKE) + fw(" built-in base class for all classes in bpy.types.\n\n") + fw(" .. note::\n\n") + fw(" Note that bpy.types.%s is not actually available from within blender, it only exists for the purpose of documentation.\n\n" % _BPY_STRUCT_FAKE) descr_items = [(key, descr) for key, descr in sorted(bpy.types.Struct.__bases__[0].__dict__.items()) if not key.startswith("__")] @@ -679,8 +681,15 @@ def rna2sphinx(BASEPATH): args_str = ", ".join([prop.get_arg_default(force=True) for prop in op.args]) fw(".. function:: %s(%s)\n\n" % (op.func_name, args_str)) - if op.description: - fw(" %s\n\n" % op.description) + + # if the description isn't valid, we output the standard warning + # with a link to the wiki so that people can help + if not op.description or op.description == "(undocumented operator)": + operator_description = undocumented_message + else: + operator_description = op.description + + fw(" %s\n\n" % operator_description) for prop in op.args: write_param(" ", fw, prop) if op.args: diff --git a/source/gameengine/PyDoc/bge.types.rst b/source/gameengine/PyDoc/bge.types.rst index 1800ea0db2d..935d3e7e00e 100644 --- a/source/gameengine/PyDoc/bge.types.rst +++ b/source/gameengine/PyDoc/bge.types.rst @@ -2309,7 +2309,7 @@ Game Engine bge.types Module :return: mesh proxy :rtype: :class:`MeshProxy` -.. class:: KX_PolygonMaterial +.. class:: KX_PolygonMaterial(PyObjectPlus) This is the interface to materials in the game engine. From bb0b5967111b07ed1a9a82f32420bc4c07215409 Mon Sep 17 00:00:00 2001 From: Jens Ole Wund Date: Fri, 11 Jun 2010 23:05:43 +0000 Subject: [PATCH 066/674] adding TODO comment --- source/blender/blenkernel/intern/softbody.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c index c06e0679a7d..eb7c67c8688 100644 --- a/source/blender/blenkernel/intern/softbody.c +++ b/source/blender/blenkernel/intern/softbody.c @@ -3584,7 +3584,11 @@ static void curve_surf_to_softbody(Scene *scene, Object *ob) setgoal= 1; for(nu= cu->nurb.first; nu; nu= nu->next) { - if(nu->bezt) { + if(nu->bezt) { + /* bezier case ; this is nicly said naive; who ever wrote this part, it was not me (JOW) :) */ + /* a: never ever make tangent handles (sub) and or (ob)ject to collision */ + /* b: rather calculate them using some C2 (C2= continous in second derivate -> no jump in bending ) condition */ + /* not too hard to do, but needs some more code to care for; some one may want look at it JOW 2010/06/12*/ for(bezt=nu->bezt, a=0; apntsu; a++, bezt++, bp+=3, curindex+=3) { if(setgoal) { bp->goal= bezt->weight; From 33b624cb5ff28af208ad95c1cf6d64c45077eb50 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 11 Jun 2010 23:25:38 +0000 Subject: [PATCH 067/674] [#22307] Camera Fly Mode Rolls Camera on local Z-axis z-roll was enabled by default, also made rotate less sensitive. --- source/blender/editors/space_view3d/view3d_view.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 84fe927f4ab..585e3c03e58 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -2005,7 +2005,7 @@ static int initFlyInfo (bContext *C, FlyInfo *fly, wmOperator *op, wmEvent *even fly->axis= 2; fly->pan_view= FALSE; fly->xlock= FALSE; - fly->zlock= TRUE; + fly->zlock= FALSE; fly->xlock_momentum=0.0f; fly->zlock_momentum=0.0f; fly->grid= 1.0f; @@ -2277,6 +2277,11 @@ static void flyEvent(FlyInfo *fly, wmEvent *event) static int flyApply(bContext *C, FlyInfo *fly) { + +#define FLY_ROTATE_FAC 2.5f /* more is faster */ +#define FLY_ZUP_CORRECT_FAC 0.1f /* ammount to correct per step */ +#define FLY_ZUP_CORRECT_ACCEL 0.05f /* increase upright momentum each step */ + /* fly mode - Shift+F a fly loop where the user can move move the view as if they are flying @@ -2392,7 +2397,7 @@ static int flyApply(bContext *C, FlyInfo *fly) upvec[1]=0; upvec[2]=0; mul_m3_v3(mat, upvec); - axis_angle_to_quat( tmp_quat, upvec, (float)moffset[1]*-time_redraw*20); /* Rotate about the relative up vec */ + axis_angle_to_quat( tmp_quat, upvec, (float)moffset[1] * time_redraw * -FLY_ROTATE_FAC); /* Rotate about the relative up vec */ mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, tmp_quat); if (fly->xlock) fly->xlock = 2; /*check for rotation*/ @@ -2424,7 +2429,7 @@ static int flyApply(bContext *C, FlyInfo *fly) mul_m3_v3(mat, upvec); } - axis_angle_to_quat( tmp_quat, upvec, (float)moffset[0]*time_redraw*20); /* Rotate about the relative up vec */ + axis_angle_to_quat( tmp_quat, upvec, (float)moffset[0] * time_redraw * FLY_ROTATE_FAC); /* Rotate about the relative up vec */ mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, tmp_quat); if (fly->xlock) fly->xlock = 2;/*check for rotation*/ @@ -2445,10 +2450,10 @@ static int flyApply(bContext *C, FlyInfo *fly) upvec[2]=1; mul_m3_v3(mat, upvec); - axis_angle_to_quat( tmp_quat, upvec, roll*time_redraw_clamped*fly->zlock_momentum*0.1); /* Rotate about the relative up vec */ + axis_angle_to_quat( tmp_quat, upvec, roll*time_redraw_clamped*fly->zlock_momentum * FLY_ZUP_CORRECT_FAC); /* Rotate about the relative up vec */ mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, tmp_quat); - fly->zlock_momentum += 0.05f; + fly->zlock_momentum += FLY_ZUP_CORRECT_ACCEL; } else { fly->zlock=1; /* dont check until the view rotates again */ fly->zlock_momentum= 0.0f; From c3c6fb2de28de350784db4730ed091da6b064198 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 12 Jun 2010 15:49:01 +0000 Subject: [PATCH 068/674] bugfix [#22486] add_actuator crashes when name is bigger than 32 chars have pyrna raise an error on strings that are too long. --- source/blender/makesrna/intern/rna_access.c | 3 ++- source/blender/python/intern/bpy_rna.c | 12 +++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 452d8d80dbc..75980e52206 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -960,7 +960,8 @@ int RNA_property_int_clamp(PointerRNA *ptr, PropertyRNA *prop, int *value) } } -/* this is the max length including \0 terminator */ +/* this is the max length including \0 terminator. + * -1 used when their is no maximum */ int RNA_property_string_maxlength(PropertyRNA *prop) { StringPropertyRNA *sprop= (StringPropertyRNA*)rna_ensure_property(prop); diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 841cb75bc98..0d1bb64bac2 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -924,12 +924,18 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, ParameterList *parms, v } case PROP_STRING: { - char *param = _PyUnicode_AsString(value); - + Py_ssize_t param_len; + int param_maxlen= RNA_property_string_maxlength(prop) - 1; + char *param = _PyUnicode_AsStringAndSize(value, ¶m_len); + if (param==NULL) { PyErr_Format(PyExc_TypeError, "%.200s %.200s.%.200s expected a string type", error_prefix, RNA_struct_identifier(ptr->type), RNA_property_identifier(prop)); return -1; - } else { + } else if (param_maxlen != -1 && param_len > param_maxlen) { /* -1 because it includes the \0 */ + PyErr_Format(PyExc_TypeError, "%.200s %.200s.%.200s string is length %d, expected maximum of %d", error_prefix, RNA_struct_identifier(ptr->type), RNA_property_identifier(prop), (int)param_len, param_maxlen); + return -1; + } + else { if(data) *((char**)data)= param; else RNA_property_string_set(ptr, prop, param); } From 971e4be1081fb655f80d6d4065c734ccf625c987 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 12 Jun 2010 17:30:21 +0000 Subject: [PATCH 069/674] modify my last commit to fix [#22486] add_actuator crashes when name is bigger than 32 chars Throwing an exception if the strings too long means scripts need to be aware of string lengths and changing a string length in RNA can too easily break scripts. Instead honor the string length in RNA_property_string_set() --- source/blender/blenkernel/BKE_idprop.h | 3 +- source/blender/blenkernel/intern/idprop.c | 42 ++++++++++++++++++--- source/blender/makesrna/intern/rna_access.c | 11 ++---- source/blender/python/intern/bpy_rna.c | 7 +--- 4 files changed, 43 insertions(+), 20 deletions(-) diff --git a/source/blender/blenkernel/BKE_idprop.h b/source/blender/blenkernel/BKE_idprop.h index e33239293a8..0e0d76f4284 100644 --- a/source/blender/blenkernel/BKE_idprop.h +++ b/source/blender/blenkernel/BKE_idprop.h @@ -71,7 +71,8 @@ void IDP_FreeArray(struct IDProperty *prop); void IDP_UnlinkArray(struct IDProperty *prop); /* ---------- String Type ------------ */ -void IDP_AssignString(struct IDProperty *prop, char *st); +IDProperty *IDP_NewString(const char *st, const char *name, int maxlen);/* maxlen excludes '\0' */ +void IDP_AssignString(struct IDProperty *prop, char *st, int maxlen); /* maxlen excludes '\0' */ void IDP_ConcatStringC(struct IDProperty *prop, char *st); void IDP_ConcatString(struct IDProperty *str1, struct IDProperty *append); void IDP_FreeString(struct IDProperty *prop); diff --git a/source/blender/blenkernel/intern/idprop.c b/source/blender/blenkernel/intern/idprop.c index 98b3522059c..2ccb33b088a 100644 --- a/source/blender/blenkernel/intern/idprop.c +++ b/source/blender/blenkernel/intern/idprop.c @@ -299,6 +299,34 @@ IDProperty *IDP_CopyArray(IDProperty *prop) /* ---------- String Type ------------ */ +IDProperty *IDP_NewString(const char *st, const char *name, int maxlen) +{ + IDProperty *prop = MEM_callocN(sizeof(IDProperty), "IDProperty string"); + + if (st == NULL) { + prop->data.pointer = MEM_callocN(DEFAULT_ALLOC_FOR_NULL_STRINGS, "id property string 1"); + prop->totallen = DEFAULT_ALLOC_FOR_NULL_STRINGS; + prop->len = 1; /*NULL string, has len of 1 to account for null byte.*/ + } + else { + int stlen = strlen(st); + + if(maxlen > 0 && maxlen < stlen) + stlen = maxlen; + + stlen++; /* null terminator '\0' */ + + prop->data.pointer = MEM_callocN(stlen, "id property string 2"); + prop->len = prop->totallen = stlen; + BLI_strncpy(prop->data.pointer, st, stlen); + } + + prop->type = IDP_STRING; + BLI_strncpy(prop->name, name, MAX_IDPROP_NAME); + + return prop; +} + IDProperty *IDP_CopyString(IDProperty *prop) { IDProperty *newp = idp_generic_copy(prop); @@ -312,14 +340,19 @@ IDProperty *IDP_CopyString(IDProperty *prop) } -void IDP_AssignString(IDProperty *prop, char *st) +void IDP_AssignString(IDProperty *prop, char *st, int maxlen) { int stlen; stlen = strlen(st); - IDP_ResizeArray(prop, stlen+1); /*make room for null byte :) */ - strcpy(prop->data.pointer, st); + if(maxlen > 0 && maxlen < stlen) + stlen= maxlen; + + stlen++; /* make room for null byte */ + + IDP_ResizeArray(prop, stlen); + BLI_strncpy(prop->data.pointer, st, stlen); } void IDP_ConcatStringC(IDProperty *prop, char *st) @@ -709,9 +742,6 @@ IDProperty *IDP_New(int type, IDPropertyTemplate val, const char *name) prop->type = type; BLI_strncpy(prop->name, name, MAX_IDPROP_NAME); - /*security null byte*/ - prop->name[MAX_IDPROP_NAME-1] = 0; - return prop; } diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 75980e52206..4673f23b1ae 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -961,7 +961,7 @@ int RNA_property_int_clamp(PointerRNA *ptr, PropertyRNA *prop, int *value) } /* this is the max length including \0 terminator. - * -1 used when their is no maximum */ + * '0' used when their is no maximum */ int RNA_property_string_maxlength(PropertyRNA *prop) { StringPropertyRNA *sprop= (StringPropertyRNA*)rna_ensure_property(prop); @@ -1830,18 +1830,15 @@ void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *val IDProperty *idprop; if((idprop=rna_idproperty_check(&prop, ptr))) - IDP_AssignString(idprop, (char*)value); + IDP_AssignString(idprop, (char*)value, RNA_property_string_maxlength(prop) - 1); else if(sprop->set) - sprop->set(ptr, value); + sprop->set(ptr, value); /* set function needs to clamp its self */ else if(prop->flag & PROP_EDITABLE) { - IDPropertyTemplate val = {0}; IDProperty *group; - val.str= (char*)value; - group= RNA_struct_idproperties(ptr, 1); if(group) - IDP_AddToGroup(group, IDP_New(IDP_STRING, val, (char*)prop->identifier)); + IDP_AddToGroup(group, IDP_NewString((char*)value, (char*)prop->identifier, RNA_property_string_maxlength(prop) - 1)); } } diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 0d1bb64bac2..51c8fea0c8e 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -924,16 +924,11 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, ParameterList *parms, v } case PROP_STRING: { - Py_ssize_t param_len; - int param_maxlen= RNA_property_string_maxlength(prop) - 1; - char *param = _PyUnicode_AsStringAndSize(value, ¶m_len); + char *param = _PyUnicode_AsString(value); if (param==NULL) { PyErr_Format(PyExc_TypeError, "%.200s %.200s.%.200s expected a string type", error_prefix, RNA_struct_identifier(ptr->type), RNA_property_identifier(prop)); return -1; - } else if (param_maxlen != -1 && param_len > param_maxlen) { /* -1 because it includes the \0 */ - PyErr_Format(PyExc_TypeError, "%.200s %.200s.%.200s string is length %d, expected maximum of %d", error_prefix, RNA_struct_identifier(ptr->type), RNA_property_identifier(prop), (int)param_len, param_maxlen); - return -1; } else { if(data) *((char**)data)= param; From 32ce3e3433c80ae0ee9f5ff793bb18c78b53ed14 Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Sat, 12 Jun 2010 23:09:01 +0000 Subject: [PATCH 070/674] Change couple of strings. Clearly mention SVN version being built and more direct POVRay error. --- release/scripts/io/engine_render_pov.py | 2 +- source/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/release/scripts/io/engine_render_pov.py b/release/scripts/io/engine_render_pov.py index bf57d02391b..426bc761041 100644 --- a/release/scripts/io/engine_render_pov.py +++ b/release/scripts/io/engine_render_pov.py @@ -766,7 +766,7 @@ class PovrayRender(bpy.types.RenderEngine): self._process = subprocess.Popen([pov_binary, self._temp_file_ini]) # stdout=subprocess.PIPE, stderr=subprocess.PIPE except OSError: # TODO, report api - print("POVRAY: could not execute povray, possibly povray isn't installed: '%s'" % pov_binary) + print("POVRAY: could not execute '%s', possibly povray isn't installed" % pov_binary) import traceback traceback.print_exc() print ("***-DONE-***") diff --git a/source/Makefile b/source/Makefile index 7a60a92bfcf..2ab5b4faeab 100644 --- a/source/Makefile +++ b/source/Makefile @@ -478,7 +478,7 @@ debug debuglink:: clean:: linkclean debuglinkclean link: $(BINTARGETS) - @echo "****> Build $(MAKE_START) - `date '+%H:%M:%S %d-%b-%Y'`" + @echo "****> Build SVN rev $(BUILD_REV), $(MAKE_START) - `date '+%H:%M:%S %d-%b-%Y'`" ifdef NANENV @for n in $(NANENV); do \ echo " $$n"; \ From 95b9e4171efaef3a6d6a9fe1d7c51931ea9aea32 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 13 Jun 2010 00:11:42 +0000 Subject: [PATCH 071/674] use utility functions for vertex groups, no functional changes --- source/blender/blenkernel/intern/lattice.c | 22 ++++++--------- .../editors/sculpt_paint/paint_vertex.c | 14 ++++------ source/blender/modifiers/intern/MOD_hook.c | 27 ++++++++++--------- 3 files changed, 27 insertions(+), 36 deletions(-) diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c index 53fa7c14730..1954bac7e93 100644 --- a/source/blender/blenkernel/intern/lattice.c +++ b/source/blender/blenkernel/intern/lattice.c @@ -845,26 +845,20 @@ void lattice_deform_verts(Object *laOb, Object *target, DerivedMesh *dm, use_vgroups = 0; if(vgroup && vgroup[0] && use_vgroups) { - bDeformGroup *curdef; Mesh *me = target->data; - int index = 0; - - /* find the group (weak loop-in-loop) */ - for(curdef = target->defbase.first; curdef; - curdef = curdef->next, index++) - if(!strcmp(curdef->name, vgroup)) break; + int index = defgroup_name_index(target, vgroup); + float weight; - if(curdef && (me->dvert || dm)) { + if(index >= 0 && (me->dvert || dm)) { MDeformVert *dvert = me->dvert; - int j; for(a = 0; a < numVerts; a++, dvert++) { if(dm) dvert = dm->getVertData(dm, a, CD_MDEFORMVERT); - for(j = 0; j < dvert->totweight; j++) { - if (dvert->dw[j].def_nr == index) { - calc_latt_deform(laOb, vertexCos[a], dvert->dw[j].weight); - } - } + + weight= defvert_find_weight(dvert, index); + + if(weight > 0.0f) + calc_latt_deform(laOb, vertexCos[a], weight); } } } else { diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c index 2650c2e278c..c1ef23e44a2 100644 --- a/source/blender/editors/sculpt_paint/paint_vertex.c +++ b/source/blender/editors/sculpt_paint/paint_vertex.c @@ -864,6 +864,7 @@ void sample_wpaint(Scene *scene, ARegion *ar, View3D *v3d, int mode) Mesh *me= get_mesh(ob); int index; short mval[2] = {0, 0}, sco[2]; + int vgroup= ob->actdef-1; if (!me) return; @@ -938,7 +939,6 @@ void sample_wpaint(Scene *scene, ARegion *ar, View3D *v3d, int mode) } else { DerivedMesh *dm; - MDeformWeight *dw; float w1, w2, w3, w4, co[3], fac; dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH); @@ -968,21 +968,17 @@ void sample_wpaint(Scene *scene, ARegion *ar, View3D *v3d, int mode) fac= MIN4(w1, w2, w3, w4); if(w1==fac) { - dw= defvert_find_index(me->dvert+mface->v1, ob->actdef-1); - if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f; + ts->vgroup_weight= defvert_find_weight(me->dvert+mface->v1, vgroup); } else if(w2==fac) { - dw= defvert_find_index(me->dvert+mface->v2, ob->actdef-1); - if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f; + ts->vgroup_weight= defvert_find_weight(me->dvert+mface->v2, vgroup); } else if(w3==fac) { - dw= defvert_find_index(me->dvert+mface->v3, ob->actdef-1); - if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f; + ts->vgroup_weight= defvert_find_weight(me->dvert+mface->v3, vgroup); } else if(w4==fac) { if(mface->v4) { - dw= defvert_find_index(me->dvert+mface->v4, ob->actdef-1); - if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f; + ts->vgroup_weight= defvert_find_weight(me->dvert+mface->v4, vgroup); } } } diff --git a/source/blender/modifiers/intern/MOD_hook.c b/source/blender/modifiers/intern/MOD_hook.c index 6ca5e3ee83c..6715e2b78c0 100644 --- a/source/blender/modifiers/intern/MOD_hook.c +++ b/source/blender/modifiers/intern/MOD_hook.c @@ -214,25 +214,26 @@ static void deformVerts( if(defgrp_index >= 0 && use_dverts) { MDeformVert *dvert = me->dvert; - int i, j; + int i; + float fac; for(i = 0; i < maxVerts; i++, dvert++) { if(dm) dvert = dm->getVertData(dm, i, CD_MDEFORMVERT); - for(j = 0; j < dvert->totweight; j++) { - if(dvert->dw[j].def_nr == defgrp_index) { - float fac = hmd->force*dvert->dw[j].weight; - float *co = vertexCos[i]; - if(hmd->falloff != 0.0) { - float len = len_v3v3(co, hmd->cent); - if(len > hmd->falloff) fac = 0.0; - else if(len > 0.0) - fac *= sqrt(1.0 - len / hmd->falloff); - } + fac= defvert_find_weight(dvert, defgrp_index); - mul_v3_m4v3(vec, mat, co); - interp_v3_v3v3(co, co, vec, fac); + if(fac > 0.0f) { + float *co = vertexCos[i]; + + if(hmd->falloff != 0.0) { + float len = len_v3v3(co, hmd->cent); + if(len > hmd->falloff) fac = 0.0; + else if(len > 0.0) + fac *= sqrt(1.0 - len / hmd->falloff); } + + mul_v3_m4v3(vec, mat, co); + interp_v3_v3v3(co, co, vec, fac); } } } From b26a23786d513e78d246421bd031d6fbf616e214 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Sun, 13 Jun 2010 02:54:55 +0000 Subject: [PATCH 072/674] Fixed bug ##22580, 'All Edges' display doesn't work unless enter & exit edit mode for mesh * Pass the appropriate mesh flag into dm->drawEdges * Added the object and draw update notifiers to the RNA property --- source/blender/editors/space_view3d/drawobject.c | 2 +- source/blender/makesrna/intern/rna_mesh.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 7172da55744..45bab2ed16e 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -2725,7 +2725,7 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D } if((v3d->flag2 & V3D_RENDER_OVERRIDE && v3d->drawtype >= OB_SOLID)==0) - dm->drawEdges(dm, (dt==OB_WIRE || totface==0), 0); + dm->drawEdges(dm, (dt==OB_WIRE || totface==0), me->drawflag & ME_ALLEDGES); if (dt!=OB_WIRE && draw_wire==2) { glDepthMask(1); diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c index 28c7f7eeb58..b289373f349 100644 --- a/source/blender/makesrna/intern/rna_mesh.c +++ b/source/blender/makesrna/intern/rna_mesh.c @@ -33,6 +33,8 @@ #include "DNA_meshdata_types.h" #include "DNA_object_types.h" +#include "WM_types.h" + #ifdef RNA_RUNTIME #include "DNA_scene_types.h" @@ -1806,6 +1808,7 @@ static void rna_def_mesh(BlenderRNA *brna) prop= RNA_def_property(srna, "all_edges", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_ALLEDGES); RNA_def_property_ui_text(prop, "All Edges", "Displays all edges for wireframe in all view modes in the 3D view"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL); prop= RNA_def_property(srna, "draw_faces", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAWFACES); From e7dd562095f2c313b0101ab4c398c4c79fdc0a3d Mon Sep 17 00:00:00 2001 From: Michael Fox Date: Sun, 13 Jun 2010 05:48:21 +0000 Subject: [PATCH 073/674] Made Add Surface Operator more atomic, now each primitive has own operator, but calling the same function with different flags. So they can me used in macros, and addons can use the menu now, hope to see some very nice surface plugins --- release/scripts/ui/space_info.py | 17 ++- source/blender/editors/curve/curve_intern.h | 7 + source/blender/editors/curve/curve_ops.c | 9 +- source/blender/editors/curve/editcurve.c | 143 ++++++++++++++++++ source/blender/editors/object/object_intern.h | 1 - source/blender/editors/object/object_ops.c | 1 - 6 files changed, 174 insertions(+), 4 deletions(-) diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index d37190eb5eb..702dc97f3fc 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -212,6 +212,19 @@ class INFO_MT_curve_add(bpy.types.Menu): layout.operator("curve.primitive_nurbs_circle_add", icon='CURVE_NCIRCLE', text="Nurbs Circle") layout.operator("curve.primitive_nurbs_path_add", icon='CURVE_PATH', text="Path") +class INFO_MT_surface_add(bpy.types.Menu): + bl_idname = "INFO_MT_surface_add" + bl_label = "Surface" + + def draw(self, context): + layout = self.layout + layout.operator_context = 'INVOKE_REGION_WIN' + layout.operator("surface.primitive_nurbs_surface_curve_add", icon='SURFACE_NCURVE', text="NURBS Curve") + layout.operator("surface.primitive_nurbs_surface_circle_add", icon='SURFACE_NCIRCLE', text="NURBS Circle") + layout.operator("surface.primitive_nurbs_surface_surface_add", icon='SURFACE_NSURFACE', text="NURBS Surface") + layout.operator("surface.primitive_nurbs_surface_tube_add", icon='SURFACE_NTUBE', text="NURBS Tube") + layout.operator("surface.primitive_nurbs_surface_sphere_add", icon='SURFACE_NSPHERE', text="NURBS Sphere") + layout.operator("surface.primitive_nurbs_surface_donut_add", icon='SURFACE_NDONUT', text="NURBS Torus") class INFO_MT_armature_add(bpy.types.Menu): bl_idname = "INFO_MT_armature_add" @@ -236,7 +249,8 @@ class INFO_MT_add(bpy.types.Menu): #layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='OUTLINER_OB_CURVE') layout.menu("INFO_MT_curve_add", icon='OUTLINER_OB_CURVE') - layout.operator_menu_enum("object.surface_add", "type", text="Surface", icon='OUTLINER_OB_SURFACE') + #layout.operator_menu_enum("object.surface_add", "type", text="Surface", icon='OUTLINER_OB_SURFACE') + layout.menu("INFO_MT_surface_add", icon='OUTLINER_OB_SURFACE') layout.operator_menu_enum("object.metaball_add", "type", text="Metaball", icon='OUTLINER_OB_META') layout.operator("object.text_add", text="Text", icon='OUTLINER_OB_FONT') layout.separator() @@ -367,6 +381,7 @@ classes = [ INFO_MT_add, INFO_MT_mesh_add, INFO_MT_curve_add, + INFO_MT_surface_add, INFO_MT_armature_add, INFO_MT_game, INFO_MT_render, diff --git a/source/blender/editors/curve/curve_intern.h b/source/blender/editors/curve/curve_intern.h index ac0825ae612..dc07822bde2 100644 --- a/source/blender/editors/curve/curve_intern.h +++ b/source/blender/editors/curve/curve_intern.h @@ -91,6 +91,13 @@ void CURVE_OT_primitive_nurbs_curve_add(struct wmOperatorType *ot); void CURVE_OT_primitive_nurbs_circle_add(struct wmOperatorType *ot); void CURVE_OT_primitive_nurbs_path_add(struct wmOperatorType *ot); +void SURFACE_OT_primitive_nurbs_surface_curve_add(struct wmOperatorType *ot); +void SURFACE_OT_primitive_nurbs_surface_circle_add(struct wmOperatorType *ot); +void SURFACE_OT_primitive_nurbs_surface_surface_add(struct wmOperatorType *ot); +void SURFACE_OT_primitive_nurbs_surface_tube_add(struct wmOperatorType *ot); +void SURFACE_OT_primitive_nurbs_surface_sphere_add(struct wmOperatorType *ot); +void SURFACE_OT_primitive_nurbs_surface_donut_add(struct wmOperatorType *ot); + void CURVE_OT_de_select_first(struct wmOperatorType *ot); void CURVE_OT_de_select_last(struct wmOperatorType *ot); void CURVE_OT_select_all(struct wmOperatorType *ot); diff --git a/source/blender/editors/curve/curve_ops.c b/source/blender/editors/curve/curve_ops.c index 59e4490a63e..7586023d012 100644 --- a/source/blender/editors/curve/curve_ops.c +++ b/source/blender/editors/curve/curve_ops.c @@ -102,7 +102,14 @@ void ED_operatortypes_curve(void) WM_operatortype_append(CURVE_OT_primitive_nurbs_curve_add); WM_operatortype_append(CURVE_OT_primitive_nurbs_circle_add); WM_operatortype_append(CURVE_OT_primitive_nurbs_path_add); - + + WM_operatortype_append(SURFACE_OT_primitive_nurbs_surface_curve_add); + WM_operatortype_append(SURFACE_OT_primitive_nurbs_surface_circle_add); + WM_operatortype_append(SURFACE_OT_primitive_nurbs_surface_surface_add); + WM_operatortype_append(SURFACE_OT_primitive_nurbs_surface_tube_add); + WM_operatortype_append(SURFACE_OT_primitive_nurbs_surface_sphere_add); + WM_operatortype_append(SURFACE_OT_primitive_nurbs_surface_donut_add); + WM_operatortype_append(CURVE_OT_smooth); WM_operatortype_append(CURVE_OT_smooth_radius); diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 274b51f03b2..40cf95dfa5d 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -5281,8 +5281,13 @@ static int curve_prim_add(bContext *C, wmOperator *op, int type){ if(type & CU_PRIM_PATH) cu->flag |= CU_PATH|CU_3D; } + else if(obedit==NULL || obedit->type!=OB_SURF) { + obedit= ED_object_add_type(C, OB_SURF, loc, rot, TRUE, layer); + newob = 1; + } else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); + ED_object_new_primitive_matrix(C, obedit, loc, rot, mat); nu= add_nurbs_primitive(C, mat, type, newob); @@ -5298,6 +5303,7 @@ static int curve_prim_add(bContext *C, wmOperator *op, int type){ return OPERATOR_FINISHED; } +/* ******************** Curves ******************* */ static int add_primitive_bezier_exec(bContext *C, wmOperator *op) { @@ -5414,7 +5420,144 @@ void CURVE_OT_primitive_nurbs_path_add(wmOperatorType *ot) ED_object_add_generic_props(ot, TRUE); } +/* **************** NURBS surfaces ********************** */ +static int add_primitive_nurbs_surface_curve_exec(bContext *C, wmOperator *op) +{ + return curve_prim_add(C, op, CU_PRIM_CURVE|CU_NURBS); +} +void SURFACE_OT_primitive_nurbs_surface_curve_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Surface Curve"; + ot->description= "Construct a Nurbs surface Curve"; + ot->idname= "SURFACE_OT_primitive_nurbs_surface_curve_add"; + + /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; + ot->exec= add_primitive_nurbs_surface_curve_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); +} + +static int add_primitive_nurbs_surface_circle_exec(bContext *C, wmOperator *op) +{ + return curve_prim_add(C, op, CU_PRIM_CIRCLE|CU_NURBS); +} + +void SURFACE_OT_primitive_nurbs_surface_circle_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Surface Circle"; + ot->description= "Construct a Nurbs surface Circle"; + ot->idname= "SURFACE_OT_primitive_nurbs_surface_circle_add"; + + /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; + ot->exec= add_primitive_nurbs_surface_circle_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); +} + +static int add_primitive_nurbs_surface_surface_exec(bContext *C, wmOperator *op) +{ + return curve_prim_add(C, op, CU_PRIM_PATCH|CU_NURBS); +} + +void SURFACE_OT_primitive_nurbs_surface_surface_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Surface Patch"; + ot->description= "Construct a Nurbs surface Patch"; + ot->idname= "SURFACE_OT_primitive_nurbs_surface_surface_add"; + + /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; + ot->exec= add_primitive_nurbs_surface_surface_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); +} + +static int add_primitive_nurbs_surface_tube_exec(bContext *C, wmOperator *op) +{ + return curve_prim_add(C, op, CU_PRIM_TUBE|CU_NURBS); +} + +void SURFACE_OT_primitive_nurbs_surface_tube_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Surface Tube"; + ot->description= "Construct a Nurbs surface Tube"; + ot->idname= "SURFACE_OT_primitive_nurbs_surface_tube_add"; + + /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; + ot->exec= add_primitive_nurbs_surface_tube_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); +} + +static int add_primitive_nurbs_surface_sphere_exec(bContext *C, wmOperator *op) +{ + return curve_prim_add(C, op, CU_PRIM_SPHERE|CU_NURBS); +} + +void SURFACE_OT_primitive_nurbs_surface_sphere_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Surface Sphere"; + ot->description= "Construct a Nurbs surface Sphere"; + ot->idname= "SURFACE_OT_primitive_nurbs_surface_sphere_add"; + + /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; + ot->exec= add_primitive_nurbs_surface_sphere_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); +} + +static int add_primitive_nurbs_surface_donut_exec(bContext *C, wmOperator *op) +{ + return curve_prim_add(C, op, CU_PRIM_DONUT|CU_NURBS); +} + +void SURFACE_OT_primitive_nurbs_surface_donut_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Surface Donut"; + ot->description= "Construct a Nurbs surface Donut"; + ot->idname= "SURFACE_OT_primitive_nurbs_surface_donut_add"; + + /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; + ot->exec= add_primitive_nurbs_surface_donut_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); +} /***************** clear tilt operator ********************/ diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h index c6164fef8a8..8bd0da3b43f 100644 --- a/source/blender/editors/object/object_intern.h +++ b/source/blender/editors/object/object_intern.h @@ -106,7 +106,6 @@ void OBJECT_OT_select_same_group(struct wmOperatorType *ot); /* object_add.c */ void OBJECT_OT_add(struct wmOperatorType *ot); void OBJECT_OT_add_named(struct wmOperatorType *ot); -void OBJECT_OT_surface_add(struct wmOperatorType *ot); void OBJECT_OT_metaball_add(struct wmOperatorType *ot); void OBJECT_OT_text_add(struct wmOperatorType *ot); void OBJECT_OT_armature_add(struct wmOperatorType *ot); diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index 09fcd9432de..6aeaf00ef47 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -113,7 +113,6 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_delete); WM_operatortype_append(OBJECT_OT_text_add); - WM_operatortype_append(OBJECT_OT_surface_add); WM_operatortype_append(OBJECT_OT_armature_add); WM_operatortype_append(OBJECT_OT_lamp_add); WM_operatortype_append(OBJECT_OT_camera_add); From 262cfb59d3822b54e3a9ece22b2cb0bc04342a36 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 13 Jun 2010 13:56:13 +0000 Subject: [PATCH 074/674] solidify rim material option, use the next material slot for rim faces. a bit arbitrary but with most cases where solidify is used in durian we get UV texture stretching since there is no way to access the newly created size faces this gives us a way to switch out the material on the rim. --- release/scripts/ui/properties_data_modifier.py | 9 +++++---- source/blender/makesdna/DNA_modifier_types.h | 1 + source/blender/makesrna/intern/rna_modifier.c | 7 +++++++ source/blender/modifiers/intern/MOD_solidify.c | 6 ++++++ 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/release/scripts/ui/properties_data_modifier.py b/release/scripts/ui/properties_data_modifier.py index 8e85b7dfb97..c93b4289116 100644 --- a/release/scripts/ui/properties_data_modifier.py +++ b/release/scripts/ui/properties_data_modifier.py @@ -643,13 +643,14 @@ class DATA_PT_modifiers(DataButtonsPanel): colsub.active = (md.vertex_group is not "") colsub.prop(md, "invert", text="Invert") - if wide_ui: - col.label(text="") - - col.prop(md, "use_rim") col.prop(md, "use_even_offset") col.prop(md, "use_quality_normals") + col.prop(md, "use_rim") + colsub = col.column() + colsub.active = md.use_rim + colsub.prop(md, "use_rim_material") + # col = layout.column() # col.label(text="Vertex Group:") # col.prop_object(md, "vertex_group", ob, "vertex_groups", text="") diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index 51f23ef210f..528f06882a2 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -703,6 +703,7 @@ typedef struct SolidifyModifierData { #define MOD_SOLIDIFY_EVEN (1<<1) #define MOD_SOLIDIFY_NORMAL_CALC (1<<2) #define MOD_SOLIDIFY_VGROUP_INV (1<<3) +#define MOD_SOLIDIFY_RIM_MATERIAL (1<<4) typedef struct ScrewModifierData { ModifierData modifier; diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index c30cbadaf2a..05088da56a6 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -2104,6 +2104,11 @@ static void rna_def_modifier_solidify(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SOLIDIFY_RIM); RNA_def_property_ui_text(prop, "Fill Rim", "Create edge loops between the inner and outer surfaces on face edges (slow, disable when not needed)"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop= RNA_def_property(srna, "use_rim_material", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SOLIDIFY_RIM_MATERIAL); + RNA_def_property_ui_text(prop, "Rim Material", "Use in the next material for rim faces"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); prop= RNA_def_property(srna, "use_even_offset", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SOLIDIFY_EVEN); @@ -2119,6 +2124,8 @@ static void rna_def_modifier_solidify(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_SOLIDIFY_VGROUP_INV); RNA_def_property_ui_text(prop, "Vertex Group Invert", "Invert the vertex group influence"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + } static void rna_def_modifier_screw(BlenderRNA *brna) diff --git a/source/blender/modifiers/intern/MOD_solidify.c b/source/blender/modifiers/intern/MOD_solidify.c index 72907f5a2ee..1eb8f288006 100644 --- a/source/blender/modifiers/intern/MOD_solidify.c +++ b/source/blender/modifiers/intern/MOD_solidify.c @@ -514,6 +514,8 @@ static DerivedMesh *applyModifier(ModifierData *md, float (*edge_vert_nos)[3]= MEM_callocN(sizeof(float) * numVerts * 3, "solidify_edge_nos"); float nor[3]; #endif + /* maximum value -1, so we have room to increase */ + const short mat_nr_shift= (smd->flag & MOD_SOLIDIFY_RIM_MATERIAL) ? ob->totcol-1 : -1; const unsigned char crease_rim= smd->crease_rim * 255.0f; const unsigned char crease_outer= smd->crease_outer * 255.0f; @@ -572,6 +574,10 @@ static DerivedMesh *applyModifier(ModifierData *md, mf->v3= ed->v1 + numVerts; mf->v4= ed->v2 + numVerts; } + + /* use the next material index if option enabled */ + if(mf->mat_nr < mat_nr_shift) + mf->mat_nr++; if(crease_outer) ed->crease= crease_outer; From 4ee8d74680821e4c80479b2498e3e55791c46974 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 14 Jun 2010 00:10:11 +0000 Subject: [PATCH 075/674] bugfix [#22573] image pack isn't working right own fault with recent commit to stop packing of generated images, now this works as expected. --- source/blender/blenkernel/intern/packedFile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/packedFile.c b/source/blender/blenkernel/intern/packedFile.c index dc4a9ee3bdc..db457f043e7 100644 --- a/source/blender/blenkernel/intern/packedFile.c +++ b/source/blender/blenkernel/intern/packedFile.c @@ -216,7 +216,7 @@ void packAll(Main *bmain, ReportList *reports) bSound *sound; for(ima=bmain->image.first; ima; ima=ima->id.next) - if(ima->packedfile == NULL && ima->id.lib==NULL && ELEM3(ima->type, IMA_SRC_FILE, IMA_SRC_SEQUENCE, IMA_SRC_MOVIE)) + if(ima->packedfile == NULL && ima->id.lib==NULL && ELEM3(ima->source, IMA_SRC_FILE, IMA_SRC_SEQUENCE, IMA_SRC_MOVIE)) ima->packedfile = newPackedFile(reports, ima->name); for(vf=bmain->vfont.first; vf; vf=vf->id.next) From 271a553ed53cb532a428f7a52041357e58a61b0b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 14 Jun 2010 00:24:42 +0000 Subject: [PATCH 076/674] remove unused yafray lamp settings --- source/blender/makesdna/DNA_lamp_types.h | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/source/blender/makesdna/DNA_lamp_types.h b/source/blender/makesdna/DNA_lamp_types.h index 1cf6b25c58f..5231108a756 100644 --- a/source/blender/makesdna/DNA_lamp_types.h +++ b/source/blender/makesdna/DNA_lamp_types.h @@ -93,20 +93,14 @@ typedef struct Lamp { float atm_distance_factor; float skyblendfac; float sky_exposure; - short sky_colorspace, pad4; - - /* yafray: photonlight params */ - int YF_numphotons, YF_numsearch; - short YF_phdepth, YF_useqmc, YF_bufsize, YF_pad; - float YF_causticblur, YF_ltradius; - /* yafray: glow params */ - float YF_glowint, YF_glowofs; - short YF_glowtype, YF_pad2; - + short sky_colorspace; + char pad4[6]; + struct Ipo *ipo; // XXX depreceated... old animation system struct MTex *mtex[18]; /* MAX_MTEX */ - short pr_texture, pad[3]; - + short pr_texture; + char pad6[6]; + /* preview */ struct PreviewImage *preview; } Lamp; From a262847298e9d9f4426f991b4e6c3f9fa89163f8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 14 Jun 2010 01:03:48 +0000 Subject: [PATCH 077/674] remove remaining unused yafray settings. --- source/blender/makesdna/DNA_camera_types.h | 6 +----- source/blender/makesdna/DNA_scene_types.h | 10 ---------- source/blender/render/intern/include/render_types.h | 7 ------- 3 files changed, 1 insertion(+), 22 deletions(-) diff --git a/source/blender/makesdna/DNA_camera_types.h b/source/blender/makesdna/DNA_camera_types.h index 3b16a16c2b5..3a9c7b22cde 100644 --- a/source/blender/makesdna/DNA_camera_types.h +++ b/source/blender/makesdna/DNA_camera_types.h @@ -51,14 +51,10 @@ typedef struct Camera { float lens, ortho_scale, drawsize; float shiftx, shifty; - float pad; - /* yafray: dof params */ /* qdn: yafray var 'YF_dofdist' now enabled for defocus composit node as well. The name was not changed so that no other files need to be modified */ - float YF_dofdist, YF_aperture; - short YF_bkhtype, YF_bkhbias; - float YF_bkhrot; + float YF_dofdist; struct Ipo *ipo; // XXX depreceated... old animation system diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index b7975653c15..e6688060b22 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -344,16 +344,6 @@ typedef struct RenderData { short bake_osa, bake_filter, bake_mode, bake_flag; short bake_normal_space, bake_quad_split; float bake_maxdist, bake_biasdist, bake_pad; - - /* yafray: global panel params. TODO: move elsewhere */ - short GIquality, GIcache, GImethod, GIphotons, GIdirect; - short YF_AA, YFexportxml, YF_nobump, YF_clamprgb, yfpad1; - int GIdepth, GIcausdepth, GIpixelspersample; - int GIphotoncount, GImixphotons; - float GIphotonradius; - int YF_raydepth, YF_AApasses, YF_AAsamples, yfpad2; - float GIshadowquality, GIrefinement, GIpower, GIindirpower; - float YF_gamma, YF_exposure, YF_raybias, YF_AApixelsize, YF_AAthreshold; /* paths to backbufffer, output, ftype */ char backbuf[160], pic[160]; diff --git a/source/blender/render/intern/include/render_types.h b/source/blender/render/intern/include/render_types.h index 1abc431fc6d..2da8570c3a0 100644 --- a/source/blender/render/intern/include/render_types.h +++ b/source/blender/render/intern/include/render_types.h @@ -564,13 +564,6 @@ typedef struct LampRen { /* passes & node shader support: all shadow info for a pixel */ LampShadowSample *shadsamp; - - /* yafray: photonlight params */ - int YF_numphotons, YF_numsearch; - short YF_phdepth, YF_useqmc, YF_bufsize; - float YF_causticblur, YF_ltradius; - float YF_glowint, YF_glowofs; - short YF_glowtype; /* ray optim */ struct RayObject *last_hit[BLENDER_MAX_THREADS]; From 374d3a66858a28ede6ad12fcd5a6a9efc7407935 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 14 Jun 2010 01:41:43 +0000 Subject: [PATCH 078/674] bugfix [#21748] KX_Object scaling property not "writing" vector access .:. e.g. obj.scaling[2] = 2.0 - made worldspace readonly - mathutils 'set' callbacks can now set their own error --- source/blender/python/generic/mathutils.c | 12 ++++++++---- source/gameengine/Ketsji/KX_GameObject.cpp | 7 +++---- source/gameengine/Ketsji/KX_ObjectActuator.cpp | 4 +--- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/source/blender/python/generic/mathutils.c b/source/blender/python/generic/mathutils.c index f17311f4a6a..95be795dd4e 100644 --- a/source/blender/python/generic/mathutils.c +++ b/source/blender/python/generic/mathutils.c @@ -649,7 +649,8 @@ int _BaseMathObject_ReadCallback(BaseMathObject *self) if(cb->get(self, self->cb_subtype)) return 1; - PyErr_Format(PyExc_SystemError, "%s user has become invalid", Py_TYPE(self)->tp_name); + if(!PyErr_Occurred()) + PyErr_Format(PyExc_SystemError, "%s user has become invalid", Py_TYPE(self)->tp_name); return 0; } @@ -659,7 +660,8 @@ int _BaseMathObject_WriteCallback(BaseMathObject *self) if(cb->set(self, self->cb_subtype)) return 1; - PyErr_Format(PyExc_SystemError, "%s user has become invalid", Py_TYPE(self)->tp_name); + if(!PyErr_Occurred()) + PyErr_Format(PyExc_SystemError, "%s user has become invalid", Py_TYPE(self)->tp_name); return 0; } @@ -669,7 +671,8 @@ int _BaseMathObject_ReadIndexCallback(BaseMathObject *self, int index) if(cb->get_index(self, self->cb_subtype, index)) return 1; - PyErr_Format(PyExc_SystemError, "%s user has become invalid", Py_TYPE(self)->tp_name); + if(!PyErr_Occurred()) + PyErr_Format(PyExc_SystemError, "%s user has become invalid", Py_TYPE(self)->tp_name); return 0; } @@ -679,7 +682,8 @@ int _BaseMathObject_WriteIndexCallback(BaseMathObject *self, int index) if(cb->set_index(self, self->cb_subtype, index)) return 1; - PyErr_Format(PyExc_SystemError, "%s user has become invalid", Py_TYPE(self)->tp_name); + if(!PyErr_Occurred()) + PyErr_Format(PyExc_SystemError, "%s user has become invalid", Py_TYPE(self)->tp_name); return 0; } diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp b/source/gameengine/Ketsji/KX_GameObject.cpp index abc597a9eae..ecfacb8f9bb 100644 --- a/source/gameengine/Ketsji/KX_GameObject.cpp +++ b/source/gameengine/Ketsji/KX_GameObject.cpp @@ -1329,7 +1329,8 @@ static int mathutils_kxgameob_vector_set(BaseMathObject *bmo, int subtype) self->NodeUpdateGS(0.f); break; case MATHUTILS_VEC_CB_SCALE_GLOBAL: - break; + PyErr_SetString(PyExc_AttributeError, "KX_GameObject.worldScale is read-only"); + return 0; case MATHUTILS_VEC_CB_INERTIA_LOCAL: /* read only */ break; @@ -1370,9 +1371,7 @@ static int mathutils_kxgameob_vector_set_index(BaseMathObject *bmo, int subtype, return 0; bmo->data[index]= f; - mathutils_kxgameob_vector_set(bmo, subtype); - - return 1; + return mathutils_kxgameob_vector_set(bmo, subtype); } Mathutils_Callback mathutils_kxgameob_vector_cb = { diff --git a/source/gameengine/Ketsji/KX_ObjectActuator.cpp b/source/gameengine/Ketsji/KX_ObjectActuator.cpp index dff95551d70..df071d50aa2 100644 --- a/source/gameengine/Ketsji/KX_ObjectActuator.cpp +++ b/source/gameengine/Ketsji/KX_ObjectActuator.cpp @@ -445,9 +445,7 @@ static int mathutils_obactu_vector_set_index(BaseMathObject *bmo, int subtype, i return 0; bmo->data[index]= f; - mathutils_obactu_vector_set(bmo, subtype); - - return 1; + return mathutils_obactu_vector_set(bmo, subtype); } Mathutils_Callback mathutils_obactu_vector_cb = { From aa97b4362be6015b3e7e1d5c72bd5245cfb0960a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 14 Jun 2010 02:05:37 +0000 Subject: [PATCH 079/674] bugfix [#22427] settings bpy.context.active_object gives wrong message. --- source/blender/python/intern/bpy_rna.c | 46 ++++++++++++++++++++------ 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 51c8fea0c8e..31057dfd58b 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -2299,7 +2299,7 @@ static PyObject *pyrna_struct_getattro( BPy_StructRNA *self, PyObject *pyname ) } else if ((prop = RNA_struct_find_property(&self->ptr, name))) { ret = pyrna_prop_to_py(&self->ptr, prop); - } + } /* RNA function only if callback is declared (no optional functions) */ else if ((func = RNA_struct_find_function(&self->ptr, name)) && RNA_function_defined(func)) { ret = pyrna_func_to_py((BPy_DummyPointerRNA *)self, func); @@ -2393,17 +2393,43 @@ static int pyrna_struct_pydict_contains(PyObject *self, PyObject *pyname) static int pyrna_struct_setattro( BPy_StructRNA *self, PyObject *pyname, PyObject *value ) { char *name = _PyUnicode_AsString(pyname); - PropertyRNA *prop = RNA_struct_find_property(&self->ptr, name); - - if (prop==NULL) { - return PyObject_GenericSetAttr((PyObject *)self, pyname, value); - } else if (!RNA_property_editable_flag(&self->ptr, prop)) { - PyErr_Format( PyExc_AttributeError, "bpy_struct: attribute \"%.200s\" from \"%.200s\" is read-only", RNA_property_identifier(prop), RNA_struct_identifier(self->ptr.type) ); - return -1; + PropertyRNA *prop= NULL; + + if (name[0] != '_' && (prop= RNA_struct_find_property(&self->ptr, name))) { + if (!RNA_property_editable_flag(&self->ptr, prop)) { + PyErr_Format( PyExc_AttributeError, "bpy_struct: attribute \"%.200s\" from \"%.200s\" is read-only", RNA_property_identifier(prop), RNA_struct_identifier(self->ptr.type) ); + return -1; + } } - + else if (self->ptr.type == &RNA_Context) { + /* code just raises correct error, context prop's cant be set, unless its apart of the py class */ + bContext *C = self->ptr.data; + if(C==NULL) { + PyErr_Format(PyExc_AttributeError, "bpy_struct: Context is 'NULL', can't set \"%.200s\" from context", name); + return -1; + } + else { + PointerRNA newptr; + ListBase newlb; + short newtype; + + int done= CTX_data_get(C, name, &newptr, &newlb, &newtype); + + if(done==1) { + PyErr_Format(PyExc_AttributeError, "bpy_struct: Context property \"%.200s\" is read-only", name); + BLI_freelistN(&newlb); + return -1; + } + + BLI_freelistN(&newlb); + } + } + /* pyrna_py_to_prop sets its own exceptions */ - return pyrna_py_to_prop(&self->ptr, prop, NULL, NULL, value, "bpy_struct: item.attr = val:"); + if(prop) + return pyrna_py_to_prop(&self->ptr, prop, NULL, NULL, value, "bpy_struct: item.attr = val:"); + else + return PyObject_GenericSetAttr((PyObject *)self, pyname, value); } static PyObject *pyrna_prop_dir(BPy_PropertyRNA *self) From c2f36a4d6abf829f28079c80e7e9dae6b80251cc Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 14 Jun 2010 03:52:10 +0000 Subject: [PATCH 080/674] naming changes path -> filepath (for rna and operators, as agreed on with elubie) path -> data_path (for windowmanager context functions, this was alredy used in many places) --- release/scripts/io/export_3ds.py | 6 +- release/scripts/io/export_fbx.py | 12 +-- release/scripts/io/export_mdd.py | 8 +- release/scripts/io/export_obj.py | 12 +-- release/scripts/io/export_ply.py | 8 +- release/scripts/io/export_x3d.py | 6 +- release/scripts/io/import_anim_bvh.py | 4 +- release/scripts/io/import_scene_3ds.py | 4 +- release/scripts/io/import_scene_obj.py | 23 +---- release/scripts/io/import_shape_mdd.py | 6 +- release/scripts/io/netrender/operators.py | 2 +- release/scripts/io/netrender/utils.py | 2 +- release/scripts/modules/bpy_types.py | 10 +- release/scripts/modules/graphviz_export.py | 6 +- release/scripts/modules/rna_prop_ui.py | 28 +++--- release/scripts/op/image.py | 24 ++--- release/scripts/op/presets.py | 12 +-- release/scripts/op/uv.py | 6 +- release/scripts/op/wm.py | 96 +++++++++---------- release/scripts/templates/operator.py | 10 +- .../ui/properties_data_armature_rigify.py | 6 +- .../scripts/ui/properties_data_modifier.py | 4 +- release/scripts/ui/properties_object.py | 2 +- release/scripts/ui/properties_scene.py | 12 +-- release/scripts/ui/space_info.py | 8 +- release/scripts/ui/space_userpref.py | 10 +- release/scripts/ui/space_userpref_keymap.py | 22 ++--- release/scripts/ui/space_view3d.py | 22 ++--- release/scripts/ui/space_view3d_toolbar.py | 4 +- source/blender/blenkernel/intern/anim.c | 2 +- source/blender/editors/curve/editfont.c | 10 +- source/blender/editors/mesh/mesh_data.c | 6 +- .../blender/editors/object/object_modifier.c | 6 +- source/blender/editors/object/object_ops.c | 6 +- .../blender/editors/render/render_shading.c | 6 +- source/blender/editors/screen/screendump.c | 8 +- .../blender/editors/sculpt_paint/paint_ops.c | 50 +++++----- source/blender/editors/sound/sound_ops.c | 4 +- .../editors/space_buttons/buttons_ops.c | 6 +- .../editors/space_console/space_console.c | 8 +- source/blender/editors/space_file/file_ops.c | 2 +- .../blender/editors/space_file/file_panels.c | 2 +- source/blender/editors/space_file/filesel.c | 4 +- .../blender/editors/space_graph/graph_edit.c | 2 +- .../blender/editors/space_image/image_ops.c | 14 +-- .../blender/editors/space_image/space_image.c | 2 +- source/blender/editors/space_info/info_ops.c | 2 +- source/blender/editors/space_node/node_edit.c | 6 +- .../blender/editors/space_node/space_node.c | 2 +- .../editors/space_script/script_edit.c | 4 +- .../blender/editors/space_script/script_ops.c | 2 +- .../editors/space_sequencer/sequencer_add.c | 4 +- .../editors/space_sequencer/space_sequencer.c | 2 +- .../blender/editors/space_text/space_text.c | 10 +- source/blender/editors/space_text/text_ops.c | 12 +-- .../editors/space_view3d/space_view3d.c | 2 +- .../blender/editors/space_view3d/view3d_ops.c | 18 ++-- .../blender/editors/transform/transform_ops.c | 4 +- .../blender/makesrna/intern/rna_image_api.c | 2 +- source/blender/makesrna/intern/rna_main_api.c | 2 +- source/blender/makesrna/intern/rna_modifier.c | 2 +- source/blender/python/intern/bpy_rna.c | 14 +-- source/blender/windowmanager/WM_api.h | 2 +- source/blender/windowmanager/WM_types.h | 2 +- .../windowmanager/intern/wm_event_system.c | 2 +- .../blender/windowmanager/intern/wm_files.c | 22 ++--- .../windowmanager/intern/wm_init_exit.c | 2 +- .../windowmanager/intern/wm_operators.c | 60 ++++++------ .../blender/windowmanager/intern/wm_window.c | 2 +- 69 files changed, 340 insertions(+), 353 deletions(-) diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index 9cb5f3a077b..e234ab8600c 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -1123,11 +1123,11 @@ class Export3DS(bpy.types.Operator): # filename = StringProperty(name="File Name", description="File name used for exporting the 3DS file", maxlen= 1024, default= ""), - path = StringProperty(name="File Path", description="File path used for exporting the 3DS file", maxlen= 1024, default= "") + filepath = StringProperty(name="File Path", description="Filepath used for exporting the 3DS file", maxlen= 1024, default= "") check_existing = BoolProperty(name="Check Existing", description="Check and warn on overwriting existing files", default=True, options={'HIDDEN'}) def execute(self, context): - save_3ds(self.properties.path, context) + save_3ds(self.properties.filepath, context) return {'FINISHED'} def invoke(self, context, event): @@ -1142,7 +1142,7 @@ class Export3DS(bpy.types.Operator): # Add to a menu def menu_func(self, context): default_path = bpy.data.filepath.replace(".blend", ".3ds") - self.layout.operator(Export3DS.bl_idname, text="3D Studio (.3ds)").path = default_path + self.layout.operator(Export3DS.bl_idname, text="3D Studio (.3ds)").filepath = default_path def register(): diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index c2a93a5089e..967bbf50307 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -3335,7 +3335,7 @@ class ExportFBX(bpy.types.Operator): # to the class instance from the operator settings before calling. - path = StringProperty(name="File Path", description="File path used for exporting the FBX file", maxlen= 1024, default="") + filepath = StringProperty(name="File Path", description="Filepath used for exporting the FBX file", maxlen= 1024, default="") check_existing = BoolProperty(name="Check Existing", description="Check and warn on overwriting existing files", default=True, options={'HIDDEN'}) EXP_OBS_SELECTED = BoolProperty(name="Selected Objects", description="Export selected objects on visible layers", default=True) @@ -3369,8 +3369,8 @@ class ExportFBX(bpy.types.Operator): return context.active_object def execute(self, context): - if not self.properties.path: - raise Exception("path not set") + if not self.properties.filepath: + raise Exception("filepath not set") GLOBAL_MATRIX = mtx4_identity GLOBAL_MATRIX[0][0] = GLOBAL_MATRIX[1][1] = GLOBAL_MATRIX[2][2] = self.properties.TX_SCALE @@ -3378,7 +3378,7 @@ class ExportFBX(bpy.types.Operator): if self.properties.TX_YROT90: GLOBAL_MATRIX = mtx4_y90n * GLOBAL_MATRIX if self.properties.TX_ZROT90: GLOBAL_MATRIX = mtx4_z90n * GLOBAL_MATRIX - write(self.properties.path, + write(self.properties.filepath, None, # XXX context, self.properties.EXP_OBS_SELECTED, @@ -3411,7 +3411,7 @@ class ExportFBX(bpy.types.Operator): # if __name__ == "__main__": -# bpy.ops.EXPORT_OT_ply(path="/tmp/test.ply") +# bpy.ops.EXPORT_OT_ply(filepath="/tmp/test.ply") # NOTES (all line numbers correspond to original export_fbx.py (under release/scripts) @@ -3439,7 +3439,7 @@ class ExportFBX(bpy.types.Operator): def menu_func(self, context): default_path = bpy.data.filepath.replace(".blend", ".fbx") - self.layout.operator(ExportFBX.bl_idname, text="Autodesk FBX (.fbx)").path = default_path + self.layout.operator(ExportFBX.bl_idname, text="Autodesk FBX (.fbx)").filepath = default_path def register(): diff --git a/release/scripts/io/export_mdd.py b/release/scripts/io/export_mdd.py index 3ae6ed3de9b..3c82ff5d497 100644 --- a/release/scripts/io/export_mdd.py +++ b/release/scripts/io/export_mdd.py @@ -159,7 +159,7 @@ class ExportMDD(bpy.types.Operator): # List of operator properties, the attributes will be assigned # to the class instance from the operator settings before calling. - path = StringProperty(name="File Path", description="File path used for exporting the MDD file", maxlen=1024) + filepath = StringProperty(name="File Path", description="Filepath used for exporting the MDD file", maxlen=1024) check_existing = BoolProperty(name="Check Existing", description="Check and warn on overwriting existing files", default=True, options={'HIDDEN'}) fps = IntProperty(name="Frames Per Second", description="Number of frames/second", min=minfps, max=maxfps, default=25) frame_start = IntProperty(name="Start Frame", description="Start frame for baking", min=minframe, max=maxframe, default=1) @@ -170,9 +170,9 @@ class ExportMDD(bpy.types.Operator): return (ob and ob.type == 'MESH') def execute(self, context): - if not self.properties.path: + if not self.properties.filepath: raise Exception("filename not set") - write(self.properties.path, context.scene, context.active_object, + write(self.properties.filepath, context.scene, context.active_object, self.properties.frame_start, self.properties.frame_end, self.properties.fps) return {'FINISHED'} @@ -184,7 +184,7 @@ class ExportMDD(bpy.types.Operator): def menu_func(self, context): default_path = bpy.data.filepath.replace(".blend", ".mdd") - self.layout.operator(ExportMDD.bl_idname, text="Lightwave Point Cache (.mdd)").path = default_path + self.layout.operator(ExportMDD.bl_idname, text="Lightwave Point Cache (.mdd)").filepath = default_path def register(): diff --git a/release/scripts/io/export_obj.py b/release/scripts/io/export_obj.py index 9c065c6dac9..40ef68041de 100644 --- a/release/scripts/io/export_obj.py +++ b/release/scripts/io/export_obj.py @@ -900,7 +900,7 @@ class ExportOBJ(bpy.types.Operator): # List of operator properties, the attributes will be assigned # to the class instance from the operator settings before calling. - path = StringProperty(name="File Path", description="File path used for exporting the OBJ file", maxlen= 1024, default= "") + filepath = StringProperty(name="File Path", description="Filepath used for exporting the OBJ file", maxlen= 1024, default= "") check_existing = BoolProperty(name="Check Existing", description="Check and warn on overwriting existing files", default=True, options={'HIDDEN'}) # context group @@ -932,11 +932,11 @@ class ExportOBJ(bpy.types.Operator): def execute(self, context): - path = self.properties.path - if not path.lower().endswith(".obj"): - path += ".obj" + filepath = self.properties.filepath + if not filepath.lower().endswith(".obj"): + filepath += ".obj" - do_export(path, context, + do_export(filepath, context, EXPORT_TRI=self.properties.use_triangles, EXPORT_EDGES=self.properties.use_edges, EXPORT_NORMALS=self.properties.use_normals, @@ -965,7 +965,7 @@ class ExportOBJ(bpy.types.Operator): def menu_func(self, context): default_path = bpy.data.filepath.replace(".blend", ".obj") - self.layout.operator(ExportOBJ.bl_idname, text="Wavefront (.obj)").path = default_path + self.layout.operator(ExportOBJ.bl_idname, text="Wavefront (.obj)").filepath = default_path def register(): diff --git a/release/scripts/io/export_ply.py b/release/scripts/io/export_ply.py index d0f2fab9c3e..aee56550526 100644 --- a/release/scripts/io/export_ply.py +++ b/release/scripts/io/export_ply.py @@ -267,7 +267,7 @@ class ExportPLY(bpy.types.Operator): # to the class instance from the operator settings before calling. - path = StringProperty(name="File Path", description="File path used for exporting the PLY file", maxlen=1024, default="") + filepath = StringProperty(name="File Path", description="Filepath used for exporting the PLY file", maxlen=1024, default="") check_existing = BoolProperty(name="Check Existing", description="Check and warn on overwriting existing files", default=True, options={'HIDDEN'}) use_modifiers = BoolProperty(name="Apply Modifiers", description="Apply Modifiers to the exported mesh", default=True) use_normals = BoolProperty(name="Normals", description="Export Normals for smooth and hard shaded faces", default=True) @@ -280,10 +280,10 @@ class ExportPLY(bpy.types.Operator): def execute(self, context): # print("Selected: " + context.active_object.name) - if not self.properties.path: + if not self.properties.filepath: raise Exception("filename not set") - write(self.properties.path, context.scene, context.active_object,\ + write(self.properties.filepath, context.scene, context.active_object,\ EXPORT_APPLY_MODIFIERS=self.properties.use_modifiers, EXPORT_NORMALS=self.properties.use_normals, EXPORT_UV=self.properties.use_uvs, @@ -311,7 +311,7 @@ class ExportPLY(bpy.types.Operator): def menu_func(self, context): default_path = bpy.data.filepath.replace(".blend", ".ply") - self.layout.operator(ExportPLY.bl_idname, text="Stanford (.ply)").path = default_path + self.layout.operator(ExportPLY.bl_idname, text="Stanford (.ply)").filepath = default_path def register(): diff --git a/release/scripts/io/export_x3d.py b/release/scripts/io/export_x3d.py index 61f216af833..6dc2340ec93 100644 --- a/release/scripts/io/export_x3d.py +++ b/release/scripts/io/export_x3d.py @@ -1224,7 +1224,7 @@ class ExportX3D(bpy.types.Operator): # List of operator properties, the attributes will be assigned # to the class instance from the operator settings before calling. - path = StringProperty(name="File Path", description="File path used for exporting the X3D file", maxlen= 1024, default= "") + filepath = StringProperty(name="File Path", description="Filepath used for exporting the X3D file", maxlen= 1024, default= "") check_existing = BoolProperty(name="Check Existing", description="Check and warn on overwriting existing files", default=True, options={'HIDDEN'}) apply_modifiers = BoolProperty(name="Apply Modifiers", description="Use transformed mesh data from each object", default=True) @@ -1232,7 +1232,7 @@ class ExportX3D(bpy.types.Operator): compress = BoolProperty(name="Compress", description="GZip the resulting file, requires a full python install", default=False) def execute(self, context): - x3d_export(self.properties.path, context, self.properties.apply_modifiers, self.properties.triangulate, self.properties.compress) + x3d_export(self.properties.filepath, context, self.properties.apply_modifiers, self.properties.triangulate, self.properties.compress) return {'FINISHED'} def invoke(self, context, event): @@ -1243,7 +1243,7 @@ class ExportX3D(bpy.types.Operator): def menu_func(self, context): default_path = bpy.data.filepath.replace(".blend", ".x3d") - self.layout.operator(ExportX3D.bl_idname, text="X3D Extensible 3D (.x3d)").path = default_path + self.layout.operator(ExportX3D.bl_idname, text="X3D Extensible 3D (.x3d)").filepath = default_path def register(): diff --git a/release/scripts/io/import_anim_bvh.py b/release/scripts/io/import_anim_bvh.py index 4a708d684c8..d497ac47065 100644 --- a/release/scripts/io/import_anim_bvh.py +++ b/release/scripts/io/import_anim_bvh.py @@ -561,7 +561,7 @@ class BvhImporter(bpy.types.Operator): bl_idname = "import_anim.bvh" bl_label = "Import BVH" - path = StringProperty(name="File Path", description="File path used for importing the OBJ file", maxlen=1024, default="") + filepath = StringProperty(name="File Path", description="Filepath used for importing the OBJ file", maxlen=1024, default="") scale = FloatProperty(name="Scale", description="Scale the BVH by this value", min=0.0001, max=1000000.0, soft_min=0.001, soft_max=100.0, default=0.1) frame_start = IntProperty(name="Start Frame", description="Starting frame for the animation", default=1) loop = BoolProperty(name="Loop", description="Loop the animation playback", default=False) @@ -585,7 +585,7 @@ class BvhImporter(bpy.types.Operator): t1 = time.time() print('\tparsing bvh...', end="") - bvh_nodes = read_bvh(context, self.properties.path, + bvh_nodes = read_bvh(context, self.properties.filepath, ROT_MODE=self.properties.rotate_mode, GLOBAL_SCALE=self.properties.scale) diff --git a/release/scripts/io/import_scene_3ds.py b/release/scripts/io/import_scene_3ds.py index ca7ef774a72..c579f876371 100644 --- a/release/scripts/io/import_scene_3ds.py +++ b/release/scripts/io/import_scene_3ds.py @@ -1012,7 +1012,7 @@ class IMPORT_OT_autodesk_3ds(bpy.types.Operator): # List of operator properties, the attributes will be assigned # to the class instance from the operator settings before calling. - path = StringProperty(name="File Path", description="File path used for importing the 3DS file", maxlen= 1024, default= "") + filepath = StringProperty(name="File Path", description="Filepath used for importing the 3DS file", maxlen= 1024, default= "") filename = StringProperty(name="File Name", description="Name of the file.") directory = StringProperty(name="Directory", description="Directory of the file.") @@ -1021,7 +1021,7 @@ class IMPORT_OT_autodesk_3ds(bpy.types.Operator): # apply_matrix = BoolProperty(name="Transform Fix", description="Workaround for object transformations importing incorrectly", default=False), def execute(self, context): - load_3ds(self.properties.path, context, 0.0, False, False) + load_3ds(self.properties.filepath, context, 0.0, False, False) return {'FINISHED'} def invoke(self, context, event): diff --git a/release/scripts/io/import_scene_obj.py b/release/scripts/io/import_scene_obj.py index 736c8fa91c1..942619c49ee 100644 --- a/release/scripts/io/import_scene_obj.py +++ b/release/scripts/io/import_scene_obj.py @@ -65,19 +65,6 @@ from geometry import PolyFill # try: import os # except: os= False -# Generic path functions -def stripFile(path): - '''Return directory, where the file is''' - lastSlash= max(path.rfind('\\'), path.rfind('/')) - if lastSlash != -1: - path= path[:lastSlash] - return '%s%s' % (path, os.sep) -# return '%s%s' % (path, sys.sep) - -def stripPath(path): - '''Strips the slashes from the back of a string''' - return path.split('/')[-1].split('\\')[-1] - def stripExt(name): # name is a string '''Strips the prefix off the name before writing''' index= name.rfind('.') @@ -360,7 +347,7 @@ def create_materials(filepath, material_libs, unique_materials, unique_material_ Create all the used materials in this obj, assign colors and images to the materials from all referenced material libs ''' - DIR= stripFile(filepath) + DIR= os.path.dirname(filepath) #==================================================================================# # This function sets textures defined in .mtl file # @@ -431,7 +418,7 @@ def create_materials(filepath, material_libs, unique_materials, unique_material_ # Add an MTL with the same name as the obj if no MTLs are spesified. - temp_mtl= stripExt(stripPath(filepath))+ '.mtl' + temp_mtl = os.path.splitext((os.path.basename(filepath)))[0] + '.mtl' if os.path.exists(DIR + temp_mtl) and temp_mtl not in material_libs: # if sys.exists(DIR + temp_mtl) and temp_mtl not in material_libs: @@ -523,7 +510,7 @@ def split_mesh(verts_loc, faces, unique_materials, filepath, SPLIT_OB_OR_GROUP, (verts_loc, faces, unique_materials, dataname) ''' - filename = stripExt(stripPath(filepath)) + filename = os.path.splitext((os.path.basename(filepath)))[0] if not SPLIT_OB_OR_GROUP and not SPLIT_MATERIALS: # use the filename for the object name since we arnt chopping up the mesh. @@ -1576,7 +1563,7 @@ class IMPORT_OT_obj(bpy.types.Operator): # to the class instance from the operator settings before calling. - path = StringProperty(name="File Path", description="File path used for importing the OBJ file", maxlen= 1024, default= "") + filepath = StringProperty(name="File Path", description="Filepath used for importing the OBJ file", maxlen= 1024, default= "") CREATE_SMOOTH_GROUPS = BoolProperty(name="Smooth Groups", description="Surround smooth groups by sharp edges", default= True) CREATE_FGONS = BoolProperty(name="NGons as FGons", description="Import faces with more then 4 verts as fgons", default= True) @@ -1596,7 +1583,7 @@ class IMPORT_OT_obj(bpy.types.Operator): def execute(self, context): # print("Selected: " + context.active_object.name) - load_obj(self.properties.path, + load_obj(self.properties.filepath, context, self.properties.CLAMP_SIZE, self.properties.CREATE_FGONS, diff --git a/release/scripts/io/import_shape_mdd.py b/release/scripts/io/import_shape_mdd.py index 8fef7672912..ec0e7696630 100644 --- a/release/scripts/io/import_shape_mdd.py +++ b/release/scripts/io/import_shape_mdd.py @@ -116,7 +116,7 @@ class importMDD(bpy.types.Operator): # List of operator properties, the attributes will be assigned # to the class instance from the operator settings before calling. - path = StringProperty(name="File Path", description="File path used for importing the MDD file", maxlen=1024) + filepath = StringProperty(name="File Path", description="Filepath used for importing the MDD file", maxlen=1024) #fps = IntProperty(name="Frames Per Second", description="Number of frames/second", min=minfps, max=maxfps, default=25) frame_start = IntProperty(name="Start Frame", description="Start frame for inserting animation", min=minframe, max=maxframe, default=0) @@ -125,10 +125,10 @@ class importMDD(bpy.types.Operator): return (ob and ob.type == 'MESH') def execute(self, context): - if not self.properties.path: + if not self.properties.filepath: raise Exception("filename not set") - mdd_import(self.properties.path, bpy.context.active_object, context.scene, self.properties.frame_start, 1) + mdd_import(self.properties.filepath, bpy.context.active_object, context.scene, self.properties.frame_start, 1) return {'FINISHED'} diff --git a/release/scripts/io/netrender/operators.py b/release/scripts/io/netrender/operators.py index 02cb864cd1a..858ec800dbc 100644 --- a/release/scripts/io/netrender/operators.py +++ b/release/scripts/io/netrender/operators.py @@ -77,7 +77,7 @@ class RENDER_OT_netslave_bake(bpy.types.Operator): bpy.ops.ptcache.bake_all() - #bpy.ops.wm.save_mainfile(path = path + os.sep + root + "_baked.blend") + #bpy.ops.wm.save_mainfile(filepath = path + os.sep + root + "_baked.blend") return {'FINISHED'} diff --git a/release/scripts/io/netrender/utils.py b/release/scripts/io/netrender/utils.py index f194cdc9559..6288b9747c0 100644 --- a/release/scripts/io/netrender/utils.py +++ b/release/scripts/io/netrender/utils.py @@ -215,7 +215,7 @@ def thumbnail(filename): scene = bpy.data.scenes[0] # FIXME, this is dodgy! scene.render.file_format = "JPEG" scene.render.file_quality = 90 - bpy.ops.image.open(path = filename) + bpy.ops.image.open(filepath=filename) img = bpy.data.images[imagename] img.save_render(thumbname, scene=scene) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 0ba36a7c092..2fd4568b59d 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -614,7 +614,7 @@ class Menu(StructRNA, _GenericUI): def path_menu(self, searchpaths, operator, props_default={}): layout = self.layout - # hard coded to set the operators 'path' to the filename. + # hard coded to set the operators 'filepath' to the filename. import os import bpy.utils @@ -623,12 +623,12 @@ class Menu(StructRNA, _GenericUI): # collect paths files = [] - for path in searchpaths: - files.extend([(f, os.path.join(path, f)) for f in os.listdir(path)]) + for directory in searchpaths: + files.extend([(f, os.path.join(directory, f)) for f in os.listdir(directory)]) files.sort() - for f, path in files: + for f, filepath in files: if f.startswith("."): continue @@ -639,7 +639,7 @@ class Menu(StructRNA, _GenericUI): for attr, value in props_default.items(): setattr(props, attr, value) - props.path = path + props.filepath = filepath if operator == "script.execute_preset": props.menu_idname = self.bl_idname props.preset_name = preset_name diff --git a/release/scripts/modules/graphviz_export.py b/release/scripts/modules/graphviz_export.py index 874b79d8ea2..900d69670d5 100644 --- a/release/scripts/modules/graphviz_export.py +++ b/release/scripts/modules/graphviz_export.py @@ -51,10 +51,10 @@ def compat_str(text, line_length=0): return text -def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True, XTRA_INFO=True): +def graph_armature(obj, filepath, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True, XTRA_INFO=True): CONSTRAINTS = DRIVERS = True - fileobject = open(path, "w") + fileobject = open(filepath, "w") fw = fileobject.write fw(header) fw('label = "%s::%s" ;' % (bpy.data.filepath.split("/")[-1].split("\\")[-1], obj.name)) @@ -178,7 +178,7 @@ def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True, import sys sys.stdout.flush() ''' - print("\nSaved:", path) + print("\nSaved:", filepath) return True if __name__ == "__main__": diff --git a/release/scripts/modules/rna_prop_ui.py b/release/scripts/modules/rna_prop_ui.py index 7af57d265b9..3e8662c275f 100644 --- a/release/scripts/modules/rna_prop_ui.py +++ b/release/scripts/modules/rna_prop_ui.py @@ -61,7 +61,7 @@ def rna_idprop_ui_prop_clear(item, prop): def draw(layout, context, context_member, use_edit=True): def assign_props(prop, val, key): - prop.path = context_member + prop.data_path = context_member prop.property = key try: @@ -81,7 +81,7 @@ def draw(layout, context, context_member, use_edit=True): if use_edit: row = layout.row() props = row.operator("wm.properties_add", text="Add") - props.path = context_member + props.data_path = context_member del row for key, val in items: @@ -140,7 +140,7 @@ from bpy.props import * rna_path = StringProperty(name="Property Edit", - description="Property path edit", maxlen=1024, default="", options={'HIDDEN'}) + description="Property data_path edit", maxlen=1024, default="", options={'HIDDEN'}) rna_value = StringProperty(name="Property Value", description="Property value edit", maxlen=1024, default="") @@ -153,11 +153,11 @@ rna_max = FloatProperty(name="Max", default=1.0, precision=3) class WM_OT_properties_edit(bpy.types.Operator): - '''Internal use (edit a property path)''' + '''Internal use (edit a property data_path)''' bl_idname = "wm.properties_edit" bl_label = "Edit Property" - path = rna_path + data_path = rna_path property = rna_property value = rna_value min = rna_min @@ -165,7 +165,7 @@ class WM_OT_properties_edit(bpy.types.Operator): description = StringProperty(name="Tip", default="") def execute(self, context): - path = self.properties.path + data_path = self.properties.data_path value = self.properties.value prop = self.properties.property prop_old = self._last_prop[0] @@ -176,7 +176,7 @@ class WM_OT_properties_edit(bpy.types.Operator): value_eval = value # First remove - item = eval("context.%s" % path) + item = eval("context.%s" % data_path) rna_idprop_ui_prop_clear(item, prop_old) exec_str = "del item['%s']" % prop_old @@ -207,7 +207,7 @@ class WM_OT_properties_edit(bpy.types.Operator): self._last_prop = [self.properties.property] - item = eval("context.%s" % self.properties.path) + item = eval("context.%s" % self.properties.data_path) # setup defaults prop_ui = rna_idprop_ui_prop_get(item, self.properties.property, False) # dont create @@ -225,14 +225,14 @@ class WM_OT_properties_edit(bpy.types.Operator): class WM_OT_properties_add(bpy.types.Operator): - '''Internal use (edit a property path)''' + '''Internal use (edit a property data_path)''' bl_idname = "wm.properties_add" bl_label = "Add Property" - path = rna_path + data_path = rna_path def execute(self, context): - item = eval("context.%s" % self.properties.path) + item = eval("context.%s" % self.properties.data_path) def unique_name(names): prop = 'prop' @@ -251,14 +251,14 @@ class WM_OT_properties_add(bpy.types.Operator): class WM_OT_properties_remove(bpy.types.Operator): - '''Internal use (edit a property path)''' + '''Internal use (edit a property data_path)''' bl_idname = "wm.properties_remove" bl_label = "Remove Property" - path = rna_path + data_path = rna_path property = rna_property def execute(self, context): - item = eval("context.%s" % self.properties.path) + item = eval("context.%s" % self.properties.data_path) del item[self.properties.property] return {'FINISHED'} diff --git a/release/scripts/op/image.py b/release/scripts/op/image.py index 873500d8343..be583012d7a 100644 --- a/release/scripts/op/image.py +++ b/release/scripts/op/image.py @@ -28,7 +28,7 @@ class EditExternally(bpy.types.Operator): bl_label = "Image Edit Externally" bl_options = {'REGISTER'} - path = StringProperty(name="File Path", description="Path to an image file", maxlen=1024, default="") + filepath = StringProperty(name="File Path", description="Path to an image file", maxlen=1024, default="") def _editor_guess(self, context): import platform @@ -57,12 +57,12 @@ class EditExternally(bpy.types.Operator): def execute(self, context): import subprocess - path = self.properties.path + filepath = self.properties.filepath image_editor = self._editor_guess(context) cmd = [] cmd.extend(image_editor) - cmd.append(bpy.utils.expandpath(path)) + cmd.append(bpy.utils.expandpath(filepath)) subprocess.Popen(cmd) @@ -70,12 +70,12 @@ class EditExternally(bpy.types.Operator): def invoke(self, context, event): try: - path = context.space_data.image.filepath + filepath = context.space_data.image.filepath except: self.report({'ERROR'}, "Image not found on disk") return {'CANCELLED'} - self.properties.path = path + self.properties.filepath = filepath self.execute(context) return {'FINISHED'} @@ -91,13 +91,13 @@ class SaveDirty(bpy.types.Operator): unique_paths = set() for image in bpy.data.images: if image.dirty: - path = bpy.utils.expandpath(image.filepath) - if "\\" not in path and "/" not in path: - self.report({'WARNING'}, "Invalid path: " + path) - elif path in unique_paths: - self.report({'WARNING'}, "Path used by more then one image: " + path) + filepath = bpy.utils.expandpath(image.filepath) + if "\\" not in filepath and "/" not in filepath: + self.report({'WARNING'}, "Invalid path: " + filepath) + elif filepath in unique_paths: + self.report({'WARNING'}, "Path used by more then one image: " + filepath) else: - unique_paths.add(path) + unique_paths.add(filepath) image.save() return {'FINISHED'} @@ -161,7 +161,7 @@ class ProjectEdit(bpy.types.Operator): image_new.file_format = 'PNG' image_new.save() - bpy.ops.image.external_edit(path=filepath_final) + bpy.ops.image.external_edit(filepath=filepath_final) return {'FINISHED'} diff --git a/release/scripts/op/presets.py b/release/scripts/op/presets.py index 03d70afc43b..a813cb5339d 100644 --- a/release/scripts/op/presets.py +++ b/release/scripts/op/presets.py @@ -46,13 +46,13 @@ class AddPresetBase(bpy.types.Operator): target_path = bpy.utils.preset_paths(self.preset_subdir)[0] # we need some way to tell the user and system preset path - path = os.path.join(target_path, filename) + filepath = os.path.join(target_path, filename) if getattr(self, "save_keyconfig", True): - bpy.ops.wm.keyconfig_export(path=path, kc_name=self.properties.name) - file_preset = open(path, 'a') + bpy.ops.wm.keyconfig_export(filepath=filepath, kc_name=self.properties.name) + file_preset = open(filepath, 'a') file_preset.write("wm.active_keyconfig = kc\n\n") else: - file_preset = open(path, 'w') + file_preset = open(filepath, 'w') for rna_path in self.preset_values: value = eval(rna_path) @@ -79,7 +79,7 @@ class ExecutePreset(bpy.types.Operator): bl_idname = "script.execute_preset" bl_label = "Execute a Python Preset" - path = bpy.props.StringProperty(name="Path", description="Path of the Python file to execute", maxlen=512, default="") + filepath = bpy.props.StringProperty(name="Path", description="Path of the Python file to execute", maxlen=512, default="") preset_name = bpy.props.StringProperty(name="Preset Name", description="Name of the Preset being executed", default="") menu_idname = bpy.props.StringProperty(name="Menu ID Name", description="ID name of the menu this was called from", default="") @@ -89,7 +89,7 @@ class ExecutePreset(bpy.types.Operator): preset_class.bl_label = self.properties.preset_name # execute the preset using script.python_file_run - bpy.ops.script.python_file_run(path=self.properties.path) + bpy.ops.script.python_file_run(filepath=self.properties.filepath) return {'FINISHED'} diff --git a/release/scripts/op/uv.py b/release/scripts/op/uv.py index cd0b7086a70..b9bc54bf264 100644 --- a/release/scripts/op/uv.py +++ b/release/scripts/op/uv.py @@ -29,7 +29,7 @@ class ExportUVLayout(bpy.types.Operator): bl_label = "Export UV Layout" bl_options = {'REGISTER', 'UNDO'} - path = StringProperty(name="File Path", description="File path used for exporting the SVG file", maxlen=1024, default="") + filepath = StringProperty(name="File Path", description="File path used for exporting the SVG file", maxlen=1024, default="") check_existing = BoolProperty(name="Check Existing", description="Check and warn on overwriting existing files", default=True, options={'HIDDEN'}) export_all = BoolProperty(name="All UV's", description="Export all UVs in this mesh (not just the visible ones)", default=False) mode = EnumProperty(items=( @@ -113,7 +113,7 @@ class ExportUVLayout(bpy.types.Operator): mode = self.properties.mode - file = open(self.properties.path, "w") + file = open(self.properties.filepath, "w") fw = file.write if mode == 'SVG': @@ -211,7 +211,7 @@ class ExportUVLayout(bpy.types.Operator): def menu_func(self, context): default_path = bpy.data.filepath.replace(".blend", ".svg") - self.layout.operator(ExportUVLayout.bl_idname).path = default_path + self.layout.operator(ExportUVLayout.bl_idname).filepath = default_path def register(): diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py index 4a587f41aa7..5ef79887228 100644 --- a/release/scripts/op/wm.py +++ b/release/scripts/op/wm.py @@ -46,10 +46,10 @@ rna_relative_prop = BoolProperty(name="Relative", default=False) -def context_path_validate(context, path): +def context_path_validate(context, data_path): import sys try: - value = eval("context.%s" % path) + value = eval("context.%s" % data_path) except AttributeError: if "'NoneType'" in str(sys.exc_info()[1]): # One of the items in the rna path is None, just ignore this @@ -62,13 +62,13 @@ def context_path_validate(context, path): def execute_context_assign(self, context): - if context_path_validate(context, self.properties.path) is Ellipsis: + if context_path_validate(context, self.properties.data_path) is Ellipsis: return {'PASS_THROUGH'} if getattr(self.properties, "relative", False): - exec("context.%s+=self.properties.value" % self.properties.path) + exec("context.%s+=self.properties.value" % self.properties.data_path) else: - exec("context.%s=self.properties.value" % self.properties.path) + exec("context.%s=self.properties.value" % self.properties.data_path) return {'FINISHED'} @@ -79,7 +79,7 @@ class WM_OT_context_set_boolean(bpy.types.Operator): bl_label = "Context Set Boolean" bl_options = {'UNDO'} - path = rna_path_prop + data_path = rna_path_prop value = BoolProperty(name="Value", description="Assignment value", default=True) @@ -92,7 +92,7 @@ class WM_OT_context_set_int(bpy.types.Operator): # same as enum bl_label = "Context Set" bl_options = {'UNDO'} - path = rna_path_prop + data_path = rna_path_prop value = IntProperty(name="Value", description="Assign value", default=0) relative = rna_relative_prop @@ -105,18 +105,18 @@ class WM_OT_context_scale_int(bpy.types.Operator): # same as enum bl_label = "Context Set" bl_options = {'UNDO'} - path = rna_path_prop + data_path = rna_path_prop value = FloatProperty(name="Value", description="Assign value", default=1.0) always_step = BoolProperty(name="Always Step", description="Always adjust the value by a minimum of 1 when 'value' is not 1.0.", default=True) def execute(self, context): - if context_path_validate(context, self.properties.path) is Ellipsis: + if context_path_validate(context, self.properties.data_path) is Ellipsis: return {'PASS_THROUGH'} value = self.properties.value - path = self.properties.path + data_path = self.properties.data_path if value == 1.0: # nothing to do return {'CANCELLED'} @@ -128,9 +128,9 @@ class WM_OT_context_scale_int(bpy.types.Operator): # same as enum else: add = "-1" func = "min" - exec("context.%s = %s(round(context.%s * value), context.%s + %s)" % (path, func, path, path, add)) + exec("context.%s = %s(round(context.%s * value), context.%s + %s)" % (data_path, func, data_path, data_path, add)) else: - exec("context.%s *= value" % self.properties.path) + exec("context.%s *= value" % self.properties.data_path) return {'FINISHED'} @@ -141,7 +141,7 @@ class WM_OT_context_set_float(bpy.types.Operator): # same as enum bl_label = "Context Set Float" bl_options = {'UNDO'} - path = rna_path_prop + data_path = rna_path_prop value = FloatProperty(name="Value", description="Assignment value", default=0.0) relative = rna_relative_prop @@ -155,7 +155,7 @@ class WM_OT_context_set_string(bpy.types.Operator): # same as enum bl_label = "Context Set String" bl_options = {'UNDO'} - path = rna_path_prop + data_path = rna_path_prop value = StringProperty(name="Value", description="Assign value", maxlen=1024, default="") @@ -168,7 +168,7 @@ class WM_OT_context_set_enum(bpy.types.Operator): bl_label = "Context Set Enum" bl_options = {'UNDO'} - path = rna_path_prop + data_path = rna_path_prop value = StringProperty(name="Value", description="Assignment value (as a string)", maxlen=1024, default="") @@ -182,15 +182,15 @@ class WM_OT_context_set_value(bpy.types.Operator): bl_label = "Context Set Value" bl_options = {'UNDO'} - path = rna_path_prop + data_path = rna_path_prop value = StringProperty(name="Value", description="Assignment value (as a string)", maxlen=1024, default="") def execute(self, context): - if context_path_validate(context, self.properties.path) is Ellipsis: + if context_path_validate(context, self.properties.data_path) is Ellipsis: return {'PASS_THROUGH'} - exec("context.%s=%s" % (self.properties.path, self.properties.value)) + exec("context.%s=%s" % (self.properties.data_path, self.properties.value)) return {'FINISHED'} @@ -200,15 +200,15 @@ class WM_OT_context_toggle(bpy.types.Operator): bl_label = "Context Toggle" bl_options = {'UNDO'} - path = rna_path_prop + data_path = rna_path_prop def execute(self, context): - if context_path_validate(context, self.properties.path) is Ellipsis: + if context_path_validate(context, self.properties.data_path) is Ellipsis: return {'PASS_THROUGH'} exec("context.%s=not (context.%s)" % - (self.properties.path, self.properties.path)) + (self.properties.data_path, self.properties.data_path)) return {'FINISHED'} @@ -219,7 +219,7 @@ class WM_OT_context_toggle_enum(bpy.types.Operator): bl_label = "Context Toggle Values" bl_options = {'UNDO'} - path = rna_path_prop + data_path = rna_path_prop value_1 = StringProperty(name="Value", \ description="Toggle enum", maxlen=1024, default="") @@ -228,12 +228,12 @@ class WM_OT_context_toggle_enum(bpy.types.Operator): def execute(self, context): - if context_path_validate(context, self.properties.path) is Ellipsis: + if context_path_validate(context, self.properties.data_path) is Ellipsis: return {'PASS_THROUGH'} exec("context.%s = ['%s', '%s'][context.%s!='%s']" % \ - (self.properties.path, self.properties.value_1,\ - self.properties.value_2, self.properties.path, + (self.properties.data_path, self.properties.value_1,\ + self.properties.value_2, self.properties.data_path, self.properties.value_2)) return {'FINISHED'} @@ -246,12 +246,12 @@ class WM_OT_context_cycle_int(bpy.types.Operator): bl_label = "Context Int Cycle" bl_options = {'UNDO'} - path = rna_path_prop + data_path = rna_path_prop reverse = rna_reverse_prop def execute(self, context): - path = self.properties.path - value = context_path_validate(context, path) + data_path = self.properties.data_path + value = context_path_validate(context, data_path) if value is Ellipsis: return {'PASS_THROUGH'} @@ -260,16 +260,16 @@ class WM_OT_context_cycle_int(bpy.types.Operator): else: value += 1 - exec("context.%s=value" % path) + exec("context.%s=value" % data_path) - if value != eval("context.%s" % path): + if value != eval("context.%s" % data_path): # relies on rna clamping int's out of the range if self.properties.reverse: value = (1 << 32) else: value = - (1 << 32) - exec("context.%s=value" % path) + exec("context.%s=value" % data_path) return {'FINISHED'} @@ -280,19 +280,19 @@ class WM_OT_context_cycle_enum(bpy.types.Operator): bl_label = "Context Enum Cycle" bl_options = {'UNDO'} - path = rna_path_prop + data_path = rna_path_prop reverse = rna_reverse_prop def execute(self, context): - value = context_path_validate(context, self.properties.path) + value = context_path_validate(context, self.properties.data_path) if value is Ellipsis: return {'PASS_THROUGH'} orig_value = value # Have to get rna enum values - rna_struct_str, rna_prop_str = self.properties.path.rsplit('.', 1) + rna_struct_str, rna_prop_str = self.properties.data_path.rsplit('.', 1) i = rna_prop_str.find('[') # just incse we get "context.foo.bar[0]" @@ -322,7 +322,7 @@ class WM_OT_context_cycle_enum(bpy.types.Operator): advance_enum = enums[orig_index + 1] # set the new value - exec("context.%s=advance_enum" % self.properties.path) + exec("context.%s=advance_enum" % self.properties.data_path) return {'FINISHED'} doc_id = StringProperty(name="Doc ID", @@ -337,27 +337,27 @@ class WM_OT_context_modal_mouse(bpy.types.Operator): bl_idname = "wm.context_modal_mouse" bl_label = "Context Modal Mouse" - path_iter = StringProperty(description="The path relative to the context, must point to an iterable.") - path_item = StringProperty(description="The path from each iterable to the value (int or float)") + data_path_iter = StringProperty(description="The data path relative to the context, must point to an iterable.") + data_path_item = StringProperty(description="The data path from each iterable to the value (int or float)") input_scale = FloatProperty(default=0.01, description="Scale the mouse movement by this value before applying the delta") invert = BoolProperty(default=False, description="Invert the mouse input") initial_x = IntProperty(options={'HIDDEN'}) def _values_store(self, context): - path_iter = self.properties.path_iter - path_item = self.properties.path_item + data_path_iter = self.properties.data_path_iter + data_path_item = self.properties.data_path_item self._values = values = {} - for item in getattr(context, path_iter): + for item in getattr(context, data_path_iter): try: - value_orig = eval("item." + path_item) + value_orig = eval("item." + data_path_item) except: continue # check this can be set, maybe this is library data. try: - exec("item.%s = %s" % (path_item, value_orig)) + exec("item.%s = %s" % (data_path_item, value_orig)) except: continue @@ -368,17 +368,17 @@ class WM_OT_context_modal_mouse(bpy.types.Operator): if self.properties.invert: delta = - delta - path_item = self.properties.path_item + data_path_item = self.properties.data_path_item for item, value_orig in self._values.items(): if type(value_orig) == int: - exec("item.%s = int(%d)" % (path_item, round(value_orig + delta))) + exec("item.%s = int(%d)" % (data_path_item, round(value_orig + delta))) else: - exec("item.%s = %f" % (path_item, value_orig + delta)) + exec("item.%s = %f" % (data_path_item, value_orig + delta)) def _values_restore(self): - path_item = self.properties.path_item + data_path_item = self.properties.data_path_item for item, value_orig in self._values.items(): - exec("item.%s = %s" % (path_item, value_orig)) + exec("item.%s = %s" % (data_path_item, value_orig)) self._values.clear() @@ -407,7 +407,7 @@ class WM_OT_context_modal_mouse(bpy.types.Operator): if not self._values: self.report({'WARNING'}, "Nothing to operate on: %s[ ].%s" % - (self.properties.path_iter, self.properties.path_item)) + (self.properties.data_path_iter, self.properties.data_path_item)) return {'CANCELLED'} else: diff --git a/release/scripts/templates/operator.py b/release/scripts/templates/operator.py index 23d75607ba3..de181a13c25 100644 --- a/release/scripts/templates/operator.py +++ b/release/scripts/templates/operator.py @@ -1,7 +1,7 @@ import bpy -def write_some_data(context, path, use_some_setting): +def write_some_data(context, filepath, use_some_setting): print("running write_some_data...") pass @@ -16,7 +16,7 @@ class ExportSomeData(bpy.types.Operator): # to the class instance from the operator settings before calling. # TODO, add better example props - path = StringProperty(name="File Path", description="File path used for exporting the PLY file", maxlen= 1024, default= "") + filepath = StringProperty(name="File Path", description="File path used for exporting the PLY file", maxlen= 1024, default= "") use_setting = BoolProperty(name="Example Boolean", description="Example Tooltip", default= True) type = bpy.props.EnumProperty(items=(('OPT_A', "First Option", "Description one"), ('OPT_B', "Second Option", "Description two.")), @@ -30,10 +30,10 @@ class ExportSomeData(bpy.types.Operator): def execute(self, context): # # Bug, currently isnt working - #if not self.is_property_set("path"): + #if not self.is_property_set("filepath"): # raise Exception("filename not set") - write_some_data(self.properties.path, context, self.properties.use_setting) + write_some_data(self.properties.filepath, context, self.properties.use_setting) return {'FINISHED'} @@ -63,4 +63,4 @@ menu_func = lambda self, context: self.layout.operator("export.some_data", text= bpy.types.INFO_MT_file_export.append(menu_func) if __name__ == "__main__": - bpy.ops.export.some_data('INVOKE_DEFAULT', path="/tmp/test.ply") + bpy.ops.export.some_data('INVOKE_DEFAULT', filepath="/tmp/test.ply") diff --git a/release/scripts/ui/properties_data_armature_rigify.py b/release/scripts/ui/properties_data_armature_rigify.py index 0eba1fb045b..43021858f9f 100644 --- a/release/scripts/ui/properties_data_armature_rigify.py +++ b/release/scripts/ui/properties_data_armature_rigify.py @@ -232,14 +232,14 @@ class AsScript(bpy.types.Operator): bl_label = "Write Metarig to Script" bl_options = {'REGISTER', 'UNDO'} - path = StringProperty(name="File Path", description="File path used for exporting the Armature file", maxlen=1024, default="") + filepath = StringProperty(name="File Path", description="File path used for exporting the Armature file", maxlen=1024, default="") def execute(self, context): import rigify_utils reload(rigify_utils) obj = context.object code = rigify_utils.write_meta_rig(obj) - path = self.properties.path + path = self.properties.filepath file = open(path, "w") file.write(code) file.close() @@ -249,7 +249,7 @@ class AsScript(bpy.types.Operator): def invoke(self, context, event): import os obj = context.object - self.properties.path = os.path.splitext(bpy.data.filepath)[0] + "-" + bpy.utils.clean_name(obj.name) + ".py" + self.properties.filepath = os.path.splitext(bpy.data.filepath)[0] + "-" + bpy.utils.clean_name(obj.name) + ".py" wm = context.manager wm.add_fileselect(self) return {'RUNNING_MODAL'} diff --git a/release/scripts/ui/properties_data_modifier.py b/release/scripts/ui/properties_data_modifier.py index c93b4289116..37764e20854 100644 --- a/release/scripts/ui/properties_data_modifier.py +++ b/release/scripts/ui/properties_data_modifier.py @@ -480,10 +480,10 @@ class DATA_PT_modifiers(DataButtonsPanel): layout.separator() - layout.prop(md, "path", text="Create Along Paths") + layout.prop(md, "use_path", text="Create Along Paths") split = layout.split() - split.active = md.path + split.active = md.use_path col = split.column() col.row().prop(md, "axis", expand=True) col.prop(md, "keep_shape") diff --git a/release/scripts/ui/properties_object.py b/release/scripts/ui/properties_object.py index f1b3e63f7ab..a2637f7924b 100644 --- a/release/scripts/ui/properties_object.py +++ b/release/scripts/ui/properties_object.py @@ -182,7 +182,7 @@ class OBJECT_PT_groups(ObjectButtonsPanel): col.prop(group, "dupli_offset", text="") prop = col.operator("wm.context_set_value", text="From Cursor") - prop.path = "object.users_group[%d].dupli_offset" % index + prop.data_path = "object.users_group[%d].dupli_offset" % index prop.value = value index += 1 diff --git a/release/scripts/ui/properties_scene.py b/release/scripts/ui/properties_scene.py index 5e83fad38a0..4319711d05e 100644 --- a/release/scripts/ui/properties_scene.py +++ b/release/scripts/ui/properties_scene.py @@ -105,7 +105,7 @@ class SCENE_PT_keying_sets(SceneButtonsPanel): subcol = col.column() subcol.operator_context = 'INVOKE_DEFAULT' op = subcol.operator("anim.keying_set_export", text="Export to File") - op.path = "keyingset.py" + op.filepath = "keyingset.py" if wide_ui: col = row.column() @@ -229,7 +229,7 @@ class ANIM_OT_keying_set_export(bpy.types.Operator): bl_idname = "anim.keying_set_export" bl_label = "Export Keying Set..." - path = bpy.props.StringProperty(name="File Path", description="File path to write file to.") + filepath = bpy.props.StringProperty(name="File Path", description="Filepath to write file to.") filename = bpy.props.StringProperty(name="File Name", description="Name of the file.") directory = bpy.props.StringProperty(name="Directory", description="Directory of the file.") filter_folder = bpy.props.BoolProperty(name="Filter folders", description="", default=True, options={'HIDDEN'}) @@ -237,10 +237,10 @@ class ANIM_OT_keying_set_export(bpy.types.Operator): filter_python = bpy.props.BoolProperty(name="Filter python", description="", default=True, options={'HIDDEN'}) def execute(self, context): - if not self.properties.path: - raise Exception("File path not set.") + if not self.properties.filepath: + raise Exception("Filepath not set.") - f = open(self.properties.path, "w") + f = open(self.properties.filepath, "w") if not f: raise Exception("Could not open file.") @@ -301,7 +301,7 @@ class ANIM_OT_keying_set_export(bpy.types.Operator): for ksp in ks.paths: f.write("ksp = ks.paths.add(") - # id-block + RNA-path + # id-block + data_path if ksp.id: # find the relevant shorthand from the cache id_bpy_path = id_to_paths_cache[ksp.id][0] diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index 702dc97f3fc..5ed6043cbe7 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -133,13 +133,13 @@ class INFO_MT_file_open_recent(bpy.types.Menu): layout = self.layout layout.operator_context = 'EXEC_AREA' - path = os.path.join(bpy.app.home, ".Blog") + filepath = os.path.join(bpy.app.home, ".Blog") - if os.path.isfile(path): - file = open(path, "rU") + if os.path.isfile(filepath): + file = open(filepath, "rU") for line in file: line = line.rstrip() - layout.operator("wm.open_mainfile", text=line, icon='FILE_BLEND').path = line + layout.operator("wm.open_mainfile", text=line, icon='FILE_BLEND').filepath = line file.close() else: layout.label(text='No recent files') diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index a55d60eb55c..066c0f2f60a 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -83,12 +83,12 @@ class USERPREF_HT_header(bpy.types.Header): if userpref.active_section == 'INPUT': op = layout.operator("wm.keyconfig_export") - op.path = "keymap.py" + op.filepath = "keymap.py" op = layout.operator("wm.keyconfig_import") - op.path = "keymap.py" + op.filepath = "keymap.py" elif userpref.active_section == 'ADDONS': op = layout.operator("wm.addon_install") - op.path = "*.py" + op.filepath = "*.py" elif userpref.active_section == 'THEMES': op = layout.operator("ui.reset_default_theme") @@ -1343,7 +1343,7 @@ class WM_OT_addon_install(bpy.types.Operator): module = StringProperty(name="Module", description="Module name of the addon to disable") - path = StringProperty(name="File Path", description="File path to write file to") + filepath = StringProperty(name="File Path", description="File path to write file to") filename = StringProperty(name="File Name", description="Name of the file") directory = StringProperty(name="Directory", description="Directory of the file") filter_folder = BoolProperty(name="Filter folders", description="", default=True, options={'HIDDEN'}) @@ -1352,7 +1352,7 @@ class WM_OT_addon_install(bpy.types.Operator): def execute(self, context): import traceback import zipfile - pyfile = self.properties.path + pyfile = self.properties.filepath path_addons = bpy.utils.script_paths("addons")[-1] diff --git a/release/scripts/ui/space_userpref_keymap.py b/release/scripts/ui/space_userpref_keymap.py index 961b138ab7e..37007c65f7a 100644 --- a/release/scripts/ui/space_userpref_keymap.py +++ b/release/scripts/ui/space_userpref_keymap.py @@ -508,7 +508,7 @@ class WM_OT_keyconfig_import(bpy.types.Operator): bl_idname = "wm.keyconfig_import" bl_label = "Import Key Configuration..." - path = StringProperty(name="File Path", description="File path to write file to") + filepath = StringProperty(name="File Path", description="Filepath to write file to") filename = StringProperty(name="File Name", description="Name of the file") directory = StringProperty(name="Directory", description="Directory of the file") filter_folder = BoolProperty(name="Filter folders", description="", default=True, options={'HIDDEN'}) @@ -518,10 +518,10 @@ class WM_OT_keyconfig_import(bpy.types.Operator): keep_original = BoolProperty(name="Keep original", description="Keep original file after copying to configuration folder", default=True) def execute(self, context): - if not self.properties.path: - raise Exception("File path not set") + if not self.properties.filepath: + raise Exception("Filepath not set") - f = open(self.properties.path, "r") + f = open(self.properties.filepath, "r") if not f: raise Exception("Could not open file") @@ -545,9 +545,9 @@ class WM_OT_keyconfig_import(bpy.types.Operator): path = os.path.join(path, config_name + ".py") if self.properties.keep_original: - shutil.copy(self.properties.path, path) + shutil.copy(self.properties.filepath, path) else: - shutil.move(self.properties.path, path) + shutil.move(self.properties.filepath, path) exec("import " + config_name) @@ -569,7 +569,7 @@ class WM_OT_keyconfig_export(bpy.types.Operator): bl_idname = "wm.keyconfig_export" bl_label = "Export Key Configuration..." - path = StringProperty(name="File Path", description="File path to write file to") + filepath = StringProperty(name="File Path", description="Filepath to write file to") filename = StringProperty(name="File Name", description="Name of the file") directory = StringProperty(name="Directory", description="Directory of the file") filter_folder = BoolProperty(name="Filter folders", description="", default=True, options={'HIDDEN'}) @@ -578,10 +578,10 @@ class WM_OT_keyconfig_export(bpy.types.Operator): kc_name = StringProperty(name="KeyConfig Name", description="Name to save the key config as") def execute(self, context): - if not self.properties.path: - raise Exception("File path not set") + if not self.properties.filepath: + raise Exception("Filepath not set") - f = open(self.properties.path, "w") + f = open(self.properties.filepath, "w") if not f: raise Exception("Could not open file") @@ -591,7 +591,7 @@ class WM_OT_keyconfig_export(bpy.types.Operator): if self.properties.kc_name != '': name = self.properties.kc_name elif kc.name == 'Blender': - name = os.path.splitext(os.path.basename(self.properties.path))[0] + name = os.path.splitext(os.path.basename(self.properties.filepath))[0] else: name = kc.name diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 8404ee83f16..14312d3c1ad 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -721,23 +721,23 @@ class VIEW3D_MT_object_specials(bpy.types.Menu): layout.operator_context = 'INVOKE_REGION_WIN' props = layout.operator("wm.context_modal_mouse", text="Spot Size") - props.path_iter = "selected_editable_objects" - props.path_item = "data.spot_size" + props.data_path_iter = "selected_editable_objects" + props.data_path_item = "data.spot_size" props.input_scale = 0.01 props = layout.operator("wm.context_modal_mouse", text="Distance") - props.path_iter = "selected_editable_objects" - props.path_item = "data.distance" + props.data_path_iter = "selected_editable_objects" + props.data_path_item = "data.distance" props.input_scale = 0.1 props = layout.operator("wm.context_modal_mouse", text="Clip Start") - props.path_iter = "selected_editable_objects" - props.path_item = "data.shadow_buffer_clip_start" + props.data_path_iter = "selected_editable_objects" + props.data_path_item = "data.shadow_buffer_clip_start" props.input_scale = 0.05 props = layout.operator("wm.context_modal_mouse", text="Clip End") - props.path_iter = "selected_editable_objects" - props.path_item = "data.shadow_buffer_clip_end" + props.data_path_iter = "selected_editable_objects" + props.data_path_item = "data.shadow_buffer_clip_end" props.input_scale = 0.05 layout.separator() @@ -1277,15 +1277,15 @@ class VIEW3D_MT_edit_mesh_selection_mode(bpy.types.Menu): prop = layout.operator("wm.context_set_value", text="Vertex", icon='VERTEXSEL') prop.value = "(True, False, False)" - prop.path = "tool_settings.mesh_selection_mode" + prop.data_path = "tool_settings.mesh_selection_mode" prop = layout.operator("wm.context_set_value", text="Edge", icon='EDGESEL') prop.value = "(False, True, False)" - prop.path = "tool_settings.mesh_selection_mode" + prop.data_path = "tool_settings.mesh_selection_mode" prop = layout.operator("wm.context_set_value", text="Face", icon='FACESEL') prop.value = "(False, False, True)" - prop.path = "tool_settings.mesh_selection_mode" + prop.data_path = "tool_settings.mesh_selection_mode" class VIEW3D_MT_edit_mesh_extrude(bpy.types.Menu): diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index 11a7fae894b..6984bbeea41 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -948,7 +948,7 @@ class VIEW3D_MT_tools_projectpaint_clone(bpy.types.Menu): layout = self.layout for i, tex in enumerate(context.active_object.data.uv_textures): prop = layout.operator("wm.context_set_int", text=tex.name) - prop.path = "active_object.data.uv_texture_clone_index" + prop.data_path = "active_object.data.uv_texture_clone_index" prop.value = i @@ -959,7 +959,7 @@ class VIEW3D_MT_tools_projectpaint_stencil(bpy.types.Menu): layout = self.layout for i, tex in enumerate(context.active_object.data.uv_textures): prop = layout.operator("wm.context_set_int", text=tex.name) - prop.path = "active_object.data.uv_texture_stencil_index" + prop.data_path = "active_object.data.uv_texture_stencil_index" prop.value = i diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c index 20afc715c77..6044cfa7692 100644 --- a/source/blender/blenkernel/intern/anim.c +++ b/source/blender/blenkernel/intern/anim.c @@ -475,7 +475,7 @@ void calc_curvepath(Object *ob) bl= cu->bev.first; if(bl==NULL || !bl->nr) return; - cu->path=path= MEM_callocN(sizeof(Path), "path"); + cu->path=path= MEM_callocN(sizeof(Path), "calc_curvepath"); /* if POLY: last vertice != first vertice */ cycl= (bl->poly!= -1); diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c index 767c2c82594..46970a401a8 100644 --- a/source/blender/editors/curve/editfont.c +++ b/source/blender/editors/curve/editfont.c @@ -384,7 +384,7 @@ static int paste_file_exec(bContext *C, wmOperator *op) char *path; int retval; - path= RNA_string_get_alloc(op->ptr, "path", NULL, 0); + path= RNA_string_get_alloc(op->ptr, "filepath", NULL, 0); retval= paste_file(C, op->reports, path); MEM_freeN(path); @@ -393,7 +393,7 @@ static int paste_file_exec(bContext *C, wmOperator *op) static int paste_file_invoke(bContext *C, wmOperator *op, wmEvent *event) { - if(RNA_property_is_set(op->ptr, "path")) + if(RNA_property_is_set(op->ptr, "filepath")) return paste_file_exec(C, op); WM_event_add_fileselect(C, op); @@ -1564,7 +1564,7 @@ static int open_exec(bContext *C, wmOperator *op) PointerRNA idptr; char str[FILE_MAX]; - RNA_string_get(op->ptr, "path", str); + RNA_string_get(op->ptr, "filepath", str); font = load_vfont(str); @@ -1613,12 +1613,12 @@ static int open_invoke(bContext *C, wmOperator *op, wmEvent *event) } path = (font && font->name)? font->name: U.fontdir; - if(RNA_property_is_set(op->ptr, "path")) + if(RNA_property_is_set(op->ptr, "filepath")) return open_exec(C, op); open_init(C, op); - RNA_string_set(op->ptr, "path", path); + RNA_string_set(op->ptr, "filepath", path); WM_event_add_fileselect(C, op); return OPERATOR_RUNNING_MODAL; diff --git a/source/blender/editors/mesh/mesh_data.c b/source/blender/editors/mesh/mesh_data.c index 5b034a5ac54..53da24fa455 100644 --- a/source/blender/editors/mesh/mesh_data.c +++ b/source/blender/editors/mesh/mesh_data.c @@ -326,10 +326,10 @@ static int drop_named_image_invoke(bContext *C, wmOperator *op, wmEvent *event) } /* check input variables */ - if(RNA_property_is_set(op->ptr, "path")) { + if(RNA_property_is_set(op->ptr, "filepath")) { char path[FILE_MAX]; - RNA_string_get(op->ptr, "path", path); + RNA_string_get(op->ptr, "filepath", path); ima= BKE_add_image_file(path, scene ? scene->r.cfra : 1); } @@ -385,7 +385,7 @@ void MESH_OT_drop_named_image(wmOperatorType *ot) /* properties */ RNA_def_string(ot->srna, "name", "Image", 24, "Name", "Image name to assign."); - RNA_def_string(ot->srna, "path", "Path", FILE_MAX, "Filepath", "Path to image file"); + RNA_def_string(ot->srna, "filepath", "Path", FILE_MAX, "Filepath", "Path to image file"); } static int uv_texture_remove_exec(bContext *C, wmOperator *op) diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index c5c7d49d0a4..56742413358 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -1022,7 +1022,7 @@ static int multires_external_save_exec(bContext *C, wmOperator *op) if(CustomData_external_test(&me->fdata, CD_MDISPS)) return OPERATOR_CANCELLED; - RNA_string_get(op->ptr, "path", path); + RNA_string_get(op->ptr, "filepath", path); if(relative) BLI_path_rel(path, G.sce); @@ -1054,13 +1054,13 @@ static int multires_external_save_invoke(bContext *C, wmOperator *op, wmEvent *e if(!RNA_property_is_set(op->ptr, "relative_path")) RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); - if(RNA_property_is_set(op->ptr, "path")) + if(RNA_property_is_set(op->ptr, "filepath")) return multires_external_save_exec(C, op); op->customdata= me; BLI_snprintf(path, sizeof(path), "//%s.btx", me->id.name+2); - RNA_string_set(op->ptr, "path", path); + RNA_string_set(op->ptr, "filepath", path); WM_event_add_fileselect(C, op); diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index 6aeaf00ef47..ba706a0d4b9 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -387,17 +387,17 @@ void ED_object_generic_keymap(struct wmKeyConfig *keyconf, struct wmKeyMap *keym if(do_pet > 0) { /* context ops */ kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_enum", OKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.proportional_editing_falloff"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.proportional_editing_falloff"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.proportional_editing"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.proportional_editing"); RNA_string_set(kmi->ptr, "value_1", "DISABLED"); RNA_string_set(kmi->ptr, "value_2", "ENABLED"); /* for modes/object types that allow 'conencted' mode, add the Alt O key */ if (do_pet > 1) { kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, KM_ALT, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.proportional_editing"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.proportional_editing"); RNA_string_set(kmi->ptr, "value_1", "DISABLED"); RNA_string_set(kmi->ptr, "value_2", "CONNECTED"); } diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c index 2a12b16be7c..006d98ce8b7 100644 --- a/source/blender/editors/render/render_shading.c +++ b/source/blender/editors/render/render_shading.c @@ -847,7 +847,7 @@ static int envmap_save_exec(bContext *C, wmOperator *op) int imtype = scene->r.imtype; char path[FILE_MAX]; - RNA_string_get(op->ptr, "path", path); + RNA_string_get(op->ptr, "filepath", path); if(scene->r.scemode & R_EXTENSION) { BKE_add_image_extension(path, imtype); @@ -871,12 +871,12 @@ static int envmap_save_invoke(bContext *C, wmOperator *op, wmEvent *event) if(!RNA_property_is_set(op->ptr, "relative_path")) RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); - if(RNA_property_is_set(op->ptr, "path")) + if(RNA_property_is_set(op->ptr, "filepath")) return envmap_save_exec(C, op); //RNA_enum_set(op->ptr, "file_type", scene->r.imtype); - RNA_string_set(op->ptr, "path", G.sce); + RNA_string_set(op->ptr, "filepath", G.sce); WM_event_add_fileselect(C, op); return OPERATOR_RUNNING_MODAL; diff --git a/source/blender/editors/screen/screendump.c b/source/blender/editors/screen/screendump.c index 141a7c1c050..5f592aeba52 100644 --- a/source/blender/editors/screen/screendump.c +++ b/source/blender/editors/screen/screendump.c @@ -75,7 +75,7 @@ static int screenshot_exec(bContext *C, wmOperator *op) ImBuf *ibuf; char path[FILE_MAX]; - RNA_string_get(op->ptr, "path", path); + RNA_string_get(op->ptr, "filepath", path); strcpy(G.ima, path); BLI_path_abs(path, G.sce); @@ -147,10 +147,10 @@ static int screenshot_invoke(bContext *C, wmOperator *op, wmEvent *event) scd->dumprect= dumprect; op->customdata= scd; - if(RNA_property_is_set(op->ptr, "path")) + if(RNA_property_is_set(op->ptr, "filepath")) return screenshot_exec(C, op); - RNA_string_set(op->ptr, "path", G.ima); + RNA_string_set(op->ptr, "filepath", G.ima); WM_event_add_fileselect(C, op); @@ -341,7 +341,7 @@ void SCREEN_OT_screencast(wmOperatorType *ot) ot->flag= 0; - RNA_def_property(ot->srna, "path", PROP_STRING, PROP_FILEPATH); + RNA_def_property(ot->srna, "filepath", PROP_STRING, PROP_FILEPATH); RNA_def_boolean(ot->srna, "full", 1, "Full Screen", ""); } diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index abd56babd8d..5470ac83370 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -146,34 +146,34 @@ static void ed_keymap_paint_brush_switch(wmKeyMap *keymap, const char *path) wmKeyMapItem *kmi; kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", ONEKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 0); kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", TWOKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 1); kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", THREEKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 2); kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", FOURKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 3); kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", FIVEKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 4); kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", SIXKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 5); kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", SEVENKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 6); kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", EIGHTKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 7); kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", NINEKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 8); kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", ZEROKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 9); } @@ -182,11 +182,11 @@ static void ed_keymap_paint_brush_size(wmKeyMap *keymap, const char *path) wmKeyMapItem *kmi; kmi= WM_keymap_add_item(keymap, "WM_OT_context_scale_int", LEFTBRACKETKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_float_set(kmi->ptr, "value", 0.9); kmi= WM_keymap_add_item(keymap, "WM_OT_context_scale_int", RIGHTBRACKETKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_float_set(kmi->ptr, "value", 10.0/9.0); // 1.1111.... } @@ -223,40 +223,40 @@ void ED_keymap_paint(wmKeyConfig *keyconf) ed_keymap_paint_brush_size(keymap, "tool_settings.sculpt.brush.size"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", AKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.use_anchor"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush.use_anchor"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.use_smooth_stroke"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush.use_smooth_stroke"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", RKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.use_rake"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush.use_rake"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", AKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.use_airbrush"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush.use_airbrush"); /* brush switching */ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", DKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.active_brush_name"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); RNA_string_set(kmi->ptr, "value", "Draw"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", SKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.active_brush_name"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); RNA_string_set(kmi->ptr, "value", "Smooth"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.active_brush_name"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); RNA_string_set(kmi->ptr, "value", "Pinch"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", GKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.active_brush_name"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); RNA_string_set(kmi->ptr, "value", "Grab"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", LKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.active_brush_name"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); RNA_string_set(kmi->ptr, "value", "Layer"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", TKEY, KM_PRESS, KM_SHIFT, 0); // was just T in 2.4x - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.active_brush_name"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); RNA_string_set(kmi->ptr, "value", "Flatten"); @@ -276,7 +276,7 @@ void ED_keymap_paint(wmKeyConfig *keyconf) ed_keymap_paint_brush_size(keymap, "tool_settings.vertex_paint.brush.size"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", MKEY, KM_PRESS, 0, 0); /* mask toggle */ - RNA_string_set(kmi->ptr, "path", "vertex_paint_object.data.use_paint_mask"); + RNA_string_set(kmi->ptr, "data_path", "vertex_paint_object.data.use_paint_mask"); /* Weight Paint mode */ keymap= WM_keymap_find(keyconf, "Weight Paint", 0, 0); @@ -294,7 +294,7 @@ void ED_keymap_paint(wmKeyConfig *keyconf) ed_keymap_paint_brush_size(keymap, "tool_settings.weight_paint.brush.size"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", MKEY, KM_PRESS, 0, 0); /* mask toggle */ - RNA_string_set(kmi->ptr, "path", "weight_paint_object.data.use_paint_mask"); + RNA_string_set(kmi->ptr, "data_path", "weight_paint_object.data.use_paint_mask"); WM_keymap_verify_item(keymap, "PAINT_OT_weight_from_bones", WKEY, KM_PRESS, 0, 0); @@ -314,7 +314,7 @@ void ED_keymap_paint(wmKeyConfig *keyconf) ed_keymap_paint_brush_size(keymap, "tool_settings.image_paint.brush.size"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", MKEY, KM_PRESS, 0, 0); /* mask toggle */ - RNA_string_set(kmi->ptr, "path", "texture_paint_object.data.use_paint_mask"); + RNA_string_set(kmi->ptr, "data_path", "texture_paint_object.data.use_paint_mask"); /* face-mask mode */ keymap= WM_keymap_find(keyconf, "Face Mask", 0, 0); diff --git a/source/blender/editors/sound/sound_ops.c b/source/blender/editors/sound/sound_ops.c index b4109692a4c..f362c584585 100644 --- a/source/blender/editors/sound/sound_ops.c +++ b/source/blender/editors/sound/sound_ops.c @@ -80,7 +80,7 @@ static int open_exec(bContext *C, wmOperator *op) PointerRNA idptr; AUD_SoundInfo info; - RNA_string_get(op->ptr, "path", path); + RNA_string_get(op->ptr, "filepath", path); sound = sound_new_file(CTX_data_main(C), path); if(!op->customdata) @@ -127,7 +127,7 @@ static int open_invoke(bContext *C, wmOperator *op, wmEvent *event) if(!RNA_property_is_set(op->ptr, "relative_path")) RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); - if(RNA_property_is_set(op->ptr, "path")) + if(RNA_property_is_set(op->ptr, "filepath")) return open_exec(C, op); open_init(C, op); diff --git a/source/blender/editors/space_buttons/buttons_ops.c b/source/blender/editors/space_buttons/buttons_ops.c index ef7b3ce6d2a..36aecd02138 100644 --- a/source/blender/editors/space_buttons/buttons_ops.c +++ b/source/blender/editors/space_buttons/buttons_ops.c @@ -88,10 +88,10 @@ static int file_browse_exec(bContext *C, wmOperator *op) FileBrowseOp *fbo= op->customdata; char *str; - if (RNA_property_is_set(op->ptr, "path")==0 || fbo==NULL) + if (RNA_property_is_set(op->ptr, "filepath")==0 || fbo==NULL) return OPERATOR_CANCELLED; - str= RNA_string_get_alloc(op->ptr, "path", 0, 0); + str= RNA_string_get_alloc(op->ptr, "filepath", 0, 0); RNA_property_string_set(&fbo->ptr, fbo->prop, str); RNA_property_update(C, &fbo->ptr, fbo->prop); MEM_freeN(str); @@ -126,7 +126,7 @@ static int file_browse_invoke(bContext *C, wmOperator *op, wmEvent *event) op->customdata= fbo; str= RNA_property_string_get_alloc(&ptr, prop, 0, 0); - RNA_string_set(op->ptr, "path", str); + RNA_string_set(op->ptr, "filepath", str); MEM_freeN(str); WM_event_add_fileselect(C, op); diff --git a/source/blender/editors/space_console/space_console.c b/source/blender/editors/space_console/space_console.c index 035af229603..c04f8183bee 100644 --- a/source/blender/editors/space_console/space_console.c +++ b/source/blender/editors/space_console/space_console.c @@ -289,19 +289,19 @@ void console_keymap(struct wmKeyConfig *keyconf) RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_move", ENDKEY, KM_PRESS, 0, 0)->ptr, "type", LINE_END); kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", WHEELUPMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "path", "space_data.font_size"); + RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); RNA_boolean_set(kmi->ptr, "reverse", 0); kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", WHEELDOWNMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "path", "space_data.font_size"); + RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); RNA_boolean_set(kmi->ptr, "reverse", 1); kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "path", "space_data.font_size"); + RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); RNA_boolean_set(kmi->ptr, "reverse", 0); kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", PADMINUS, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "path", "space_data.font_size"); + RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); RNA_boolean_set(kmi->ptr, "reverse", 1); RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_move", LEFTARROWKEY, KM_PRESS, 0, 0)->ptr, "type", PREV_CHAR); diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index ccecbd61663..9028e5f15c6 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -576,7 +576,7 @@ int file_exec(bContext *C, wmOperator *exec_op) if(RNA_boolean_get(op->ptr, "relative_path")) BLI_path_rel(name, G.sce); - RNA_string_set(op->ptr, "path", name); + RNA_string_set(op->ptr, "filepath", name); /* some ops have multiple files to select */ { diff --git a/source/blender/editors/space_file/file_panels.c b/source/blender/editors/space_file/file_panels.c index 637e56459d7..4a505bc022f 100644 --- a/source/blender/editors/space_file/file_panels.c +++ b/source/blender/editors/space_file/file_panels.c @@ -182,7 +182,7 @@ static void file_panel_operator(const bContext *C, Panel *pa) if(flag & PROP_HIDDEN) continue; - if(strcmp(RNA_property_identifier(prop), "path") == 0) + if(strcmp(RNA_property_identifier(prop), "filepath") == 0) continue; if(strcmp(RNA_property_identifier(prop), "directory") == 0) continue; diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c index f971e18043c..abb3a6a7a35 100644 --- a/source/blender/editors/space_file/filesel.c +++ b/source/blender/editors/space_file/filesel.c @@ -127,8 +127,8 @@ short ED_fileselect_set_params(SpaceFile *sfile) else params->type = FILE_SPECIAL; - if (RNA_property_is_set(op->ptr, "path")) { - RNA_string_get(op->ptr, "path", name); + if (RNA_property_is_set(op->ptr, "filepath")) { + RNA_string_get(op->ptr, "filepath", name); if (params->type == FILE_LOADLIB) { BLI_strncpy(params->dir, name, sizeof(params->dir)); BLI_cleanup_dir(G.sce, params->dir); diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index c59b4783708..eb4be32658d 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -1037,7 +1037,7 @@ static int graphkeys_sound_bake_exec(bContext *C, wmOperator *op) if (ANIM_animdata_get_context(C, &ac) == 0) return OPERATOR_CANCELLED; - RNA_string_get(op->ptr, "path", path); + RNA_string_get(op->ptr, "filepath", path); scene= ac.scene; /* current scene */ diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index 3eeeb865ae4..a087351806a 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -654,7 +654,7 @@ static const EnumPropertyItem image_file_type_items[] = { static void image_filesel(bContext *C, wmOperator *op, const char *path) { - RNA_string_set(op->ptr, "path", path); + RNA_string_set(op->ptr, "filepath", path); WM_event_add_fileselect(C, op); } @@ -685,7 +685,7 @@ static int open_exec(bContext *C, wmOperator *op) Image *ima= NULL; char str[FILE_MAX]; - RNA_string_get(op->ptr, "path", str); + RNA_string_get(op->ptr, "filepath", str); /* default to frame 1 if there's no scene in context */ ima= BKE_add_image_file(str, scene ? scene->r.cfra : 1); @@ -729,7 +729,7 @@ static int open_invoke(bContext *C, wmOperator *op, wmEvent *event) if(!RNA_property_is_set(op->ptr, "relative_path")) RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); - if(RNA_property_is_set(op->ptr, "path")) + if(RNA_property_is_set(op->ptr, "filepath")) return open_exec(C, op); open_init(C, op); @@ -767,7 +767,7 @@ static int replace_exec(bContext *C, wmOperator *op) if(!sima->image) return OPERATOR_CANCELLED; - RNA_string_get(op->ptr, "path", str); + RNA_string_get(op->ptr, "filepath", str); BLI_strncpy(sima->image->name, str, sizeof(sima->image->name)-1); /* we cant do much if the str is longer then 240 :/ */ BKE_image_signal(sima->image, &sima->iuser, IMA_SIGNAL_RELOAD); @@ -784,7 +784,7 @@ static int replace_invoke(bContext *C, wmOperator *op, wmEvent *event) if(!sima->image) return OPERATOR_CANCELLED; - if(RNA_property_is_set(op->ptr, "path")) + if(RNA_property_is_set(op->ptr, "filepath")) return replace_exec(C, op); image_filesel(C, op, path); @@ -918,7 +918,7 @@ static int save_as_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; sima->imtypenr= RNA_enum_get(op->ptr, "file_type"); - RNA_string_get(op->ptr, "path", str); + RNA_string_get(op->ptr, "filepath", str); save_image_doit(C, sima, scene, op, str); @@ -936,7 +936,7 @@ static int save_as_invoke(bContext *C, wmOperator *op, wmEvent *event) if(!RNA_property_is_set(op->ptr, "relative_path")) RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); - if(RNA_property_is_set(op->ptr, "path")) + if(RNA_property_is_set(op->ptr, "filepath")) return save_as_exec(C, op); if(!ima) diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index 7e3cfcdb6bc..3eae1438517 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -540,7 +540,7 @@ static int image_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) static void image_drop_copy(wmDrag *drag, wmDropBox *drop) { /* copy drag path to properties */ - RNA_string_set(drop->ptr, "path", drag->path); + RNA_string_set(drop->ptr, "filepath", drag->path); } /* area+region dropbox definition */ diff --git a/source/blender/editors/space_info/info_ops.c b/source/blender/editors/space_info/info_ops.c index 86d7d6bf014..2a1a20aa0d7 100644 --- a/source/blender/editors/space_info/info_ops.c +++ b/source/blender/editors/space_info/info_ops.c @@ -271,7 +271,7 @@ static int find_missing_files_exec(bContext *C, wmOperator *op) { char *path; - path= RNA_string_get_alloc(op->ptr, "path", NULL, 0); + path= RNA_string_get_alloc(op->ptr, "filepath", NULL, 0); findMissingFiles(path, G.sce); MEM_freeN(path); diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 97e2eba7b64..dd838a67afa 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -2244,10 +2244,10 @@ static int node_add_file_exec(bContext *C, wmOperator *op) int ntype=0; /* check input variables */ - if (RNA_property_is_set(op->ptr, "path")) + if (RNA_property_is_set(op->ptr, "filepath")) { char path[FILE_MAX]; - RNA_string_get(op->ptr, "path", path); + RNA_string_get(op->ptr, "filepath", path); ima= BKE_add_image_file(path, scene ? scene->r.cfra : 1); } else if(RNA_property_is_set(op->ptr, "name")) @@ -2291,7 +2291,7 @@ static int node_add_file_invoke(bContext *C, wmOperator *op, wmEvent *event) UI_view2d_region_to_view(&ar->v2d, event->x - ar->winrct.xmin, event->y - ar->winrct.ymin, &snode->mx, &snode->my); - if (RNA_property_is_set(op->ptr, "path") || RNA_property_is_set(op->ptr, "name")) + if (RNA_property_is_set(op->ptr, "filepath") || RNA_property_is_set(op->ptr, "name")) return node_add_file_exec(C, op); else return WM_operator_filesel(C, op, event); diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index 6388e68a1f5..5b681958a3a 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -313,7 +313,7 @@ static void node_id_path_drop_copy(wmDrag *drag, wmDropBox *drop) RNA_string_set(drop->ptr, "name", id->name+2); } if (drag->path[0]) { - RNA_string_set(drop->ptr, "path", drag->path); + RNA_string_set(drop->ptr, "filepath", drag->path); } } diff --git a/source/blender/editors/space_script/script_edit.c b/source/blender/editors/space_script/script_edit.c index 90867712322..71b37e514d7 100644 --- a/source/blender/editors/space_script/script_edit.c +++ b/source/blender/editors/space_script/script_edit.c @@ -58,7 +58,7 @@ static int run_pyfile_exec(bContext *C, wmOperator *op) { char path[512]; - RNA_string_get(op->ptr, "path", path); + RNA_string_get(op->ptr, "filepath", path); #ifndef DISABLE_PYTHON if(BPY_run_python_script(C, path, NULL, op->reports)) { ARegion *ar= CTX_wm_region(C); @@ -81,7 +81,7 @@ void SCRIPT_OT_python_file_run(wmOperatorType *ot) ot->exec= run_pyfile_exec; ot->poll= ED_operator_areaactive; - RNA_def_string_file_path(ot->srna, "path", "", 512, "Path", ""); + RNA_def_string_file_path(ot->srna, "filepath", "", 512, "Path", ""); } diff --git a/source/blender/editors/space_script/script_ops.c b/source/blender/editors/space_script/script_ops.c index 61f7cf425d4..15140f080e7 100644 --- a/source/blender/editors/space_script/script_ops.c +++ b/source/blender/editors/space_script/script_ops.c @@ -63,6 +63,6 @@ void script_keymap(wmKeyConfig *keyconf) wmKeyMap *keymap= WM_keymap_find(keyconf, "Script", SPACE_SCRIPT, 0); /* TODO - this is just while we have no way to load a text datablock */ - RNA_string_set(WM_keymap_add_item(keymap, "SCRIPT_OT_python_file_run", PKEY, KM_PRESS, KM_CTRL|KM_SHIFT|KM_ALT, 0)->ptr, "path", "test.py"); + RNA_string_set(WM_keymap_add_item(keymap, "SCRIPT_OT_python_file_run", PKEY, KM_PRESS, KM_CTRL|KM_SHIFT|KM_ALT, 0)->ptr, "filepath", "test.py"); } diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index 7bd00e6081f..06c7725984a 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -135,7 +135,7 @@ static void seq_load_operator_info(SeqLoadInfo *seq_load, wmOperator *op) RNA_string_get(op->ptr, "name", seq_load->name+2); - RNA_string_get(op->ptr, "path", seq_load->path); /* full path, file is set by the caller */ + RNA_string_get(op->ptr, "filepath", seq_load->path); /* full path, file is set by the caller */ if (RNA_struct_find_property(op->ptr, "frame_end")) { seq_load->end_frame = RNA_int_get(op->ptr, "frame_end"); @@ -545,7 +545,7 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op) if (seq->type==SEQ_PLUGIN) { char path[FILE_MAX]; - RNA_string_get(op->ptr, "path", path); + RNA_string_get(op->ptr, "filepath", path); sh.init_plugin(seq, path); diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c index b19e8652f7f..81edb6e4dd7 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.c +++ b/source/blender/editors/space_sequencer/space_sequencer.c @@ -322,7 +322,7 @@ static int sound_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) static void sequencer_drop_copy(wmDrag *drag, wmDropBox *drop) { /* copy drag path to properties */ - RNA_string_set(drop->ptr, "path", drag->path); + RNA_string_set(drop->ptr, "filepath", drag->path); } /* this region dropbox definition */ diff --git a/source/blender/editors/space_text/space_text.c b/source/blender/editors/space_text/space_text.c index 96b38f2e78d..7f3741e8e17 100644 --- a/source/blender/editors/space_text/space_text.c +++ b/source/blender/editors/space_text/space_text.c @@ -215,19 +215,19 @@ static void text_keymap(struct wmKeyConfig *keyconf) #endif kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", WHEELUPMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "path", "space_data.font_size"); + RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); RNA_boolean_set(kmi->ptr, "reverse", 0); kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", WHEELDOWNMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "path", "space_data.font_size"); + RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); RNA_boolean_set(kmi->ptr, "reverse", 1); kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "path", "space_data.font_size"); + RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); RNA_boolean_set(kmi->ptr, "reverse", 0); kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", PADMINUS, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "path", "space_data.font_size"); + RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); RNA_boolean_set(kmi->ptr, "reverse", 1); WM_keymap_add_item(keymap, "TEXT_OT_new", NKEY, KM_PRESS, KM_ALT, 0); @@ -389,7 +389,7 @@ static int text_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) static void text_drop_copy(wmDrag *drag, wmDropBox *drop) { /* copy drag path to properties */ - RNA_string_set(drop->ptr, "path", drag->path); + RNA_string_set(drop->ptr, "filepath", drag->path); } /* this region dropbox definition */ diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c index d3c197506b9..c90d257ee43 100644 --- a/source/blender/editors/space_text/text_ops.c +++ b/source/blender/editors/space_text/text_ops.c @@ -220,7 +220,7 @@ static int open_exec(bContext *C, wmOperator *op) char str[FILE_MAX]; short internal = RNA_int_get(op->ptr, "internal"); - RNA_string_get(op->ptr, "path", str); + RNA_string_get(op->ptr, "filepath", str); text= add_text(str, G.sce); @@ -268,11 +268,11 @@ static int open_invoke(bContext *C, wmOperator *op, wmEvent *event) Text *text= CTX_data_edit_text(C); char *path= (text && text->name)? text->name: G.sce; - if(RNA_property_is_set(op->ptr, "path")) + if(RNA_property_is_set(op->ptr, "filepath")) return open_exec(C, op); open_init(C, op); - RNA_string_set(op->ptr, "path", path); + RNA_string_set(op->ptr, "filepath", path); WM_event_add_fileselect(C, op); return OPERATOR_RUNNING_MODAL; @@ -494,7 +494,7 @@ static int save_as_exec(bContext *C, wmOperator *op) if(!text) return OPERATOR_CANCELLED; - RNA_string_get(op->ptr, "path", str); + RNA_string_get(op->ptr, "filepath", str); if(text->name) MEM_freeN(text->name); text->name= BLI_strdup(str); @@ -513,7 +513,7 @@ static int save_as_invoke(bContext *C, wmOperator *op, wmEvent *event) Text *text= CTX_data_edit_text(C); char *str; - if(RNA_property_is_set(op->ptr, "path")) + if(RNA_property_is_set(op->ptr, "filepath")) return save_as_exec(C, op); if(text->name) @@ -523,7 +523,7 @@ static int save_as_invoke(bContext *C, wmOperator *op, wmEvent *event) else str= G.sce; - RNA_string_set(op->ptr, "path", str); + RNA_string_set(op->ptr, "filepath", str); WM_event_add_fileselect(C, op); return OPERATOR_RUNNING_MODAL; diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index 78ae13d255e..8d6b731e850 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -454,7 +454,7 @@ static void view3d_id_path_drop_copy(wmDrag *drag, wmDropBox *drop) if(id) RNA_string_set(drop->ptr, "name", id->name+2); if(drag->path[0]) - RNA_string_set(drop->ptr, "path", drag->path); + RNA_string_set(drop->ptr, "filepath", drag->path); } diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c index da4395e2309..08658cd752d 100644 --- a/source/blender/editors/space_view3d/view3d_ops.c +++ b/source/blender/editors/space_view3d/view3d_ops.c @@ -220,12 +220,12 @@ void view3d_keymap(wmKeyConfig *keyconf) /* drawtype */ kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "space_data.viewport_shading"); + RNA_string_set(kmi->ptr, "data_path", "space_data.viewport_shading"); RNA_string_set(kmi->ptr, "value_1", "SOLID"); RNA_string_set(kmi->ptr, "value_2", "WIREFRAME"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, KM_PRESS, KM_ALT, 0); - RNA_string_set(kmi->ptr, "path", "space_data.viewport_shading"); + RNA_string_set(kmi->ptr, "data_path", "space_data.viewport_shading"); RNA_string_set(kmi->ptr, "value_1", "TEXTURED"); RNA_string_set(kmi->ptr, "value_2", "SOLID"); @@ -266,29 +266,29 @@ void view3d_keymap(wmKeyConfig *keyconf) /* context ops */ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", COMMAKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "space_data.pivot_point"); + RNA_string_set(kmi->ptr, "data_path", "space_data.pivot_point"); RNA_string_set(kmi->ptr, "value", "BOUNDING_BOX_CENTER"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", COMMAKEY, KM_PRESS, KM_CTRL, 0); /* 2.4x allowed Comma+Shift too, rather not use both */ - RNA_string_set(kmi->ptr, "path", "space_data.pivot_point"); + RNA_string_set(kmi->ptr, "data_path", "space_data.pivot_point"); RNA_string_set(kmi->ptr, "value", "MEDIAN_POINT"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", COMMAKEY, KM_PRESS, KM_ALT, 0); /* new in 2.5 */ - RNA_string_set(kmi->ptr, "path", "space_data.pivot_point_align"); + RNA_string_set(kmi->ptr, "data_path", "space_data.pivot_point_align"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SPACEKEY, KM_PRESS, KM_CTRL, 0); /* new in 2.5 */ - RNA_string_set(kmi->ptr, "path", "space_data.manipulator"); + RNA_string_set(kmi->ptr, "data_path", "space_data.manipulator"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "space_data.pivot_point"); + RNA_string_set(kmi->ptr, "data_path", "space_data.pivot_point"); RNA_string_set(kmi->ptr, "value", "CURSOR"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "path", "space_data.pivot_point"); + RNA_string_set(kmi->ptr, "data_path", "space_data.pivot_point"); RNA_string_set(kmi->ptr, "value", "INDIVIDUAL_ORIGINS"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, KM_ALT, 0); - RNA_string_set(kmi->ptr, "path", "space_data.pivot_point"); + RNA_string_set(kmi->ptr, "data_path", "space_data.pivot_point"); RNA_string_set(kmi->ptr, "value", "ACTIVE_ELEMENT"); transform_keymap_for_space(keyconf, keymap, SPACE_VIEW3D); diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c index 9f21662398a..85e13879367 100644 --- a/source/blender/editors/transform/transform_ops.c +++ b/source/blender/editors/transform/transform_ops.c @@ -848,7 +848,7 @@ void transform_keymap_for_space(wmKeyConfig *keyconf, wmKeyMap *keymap, int spac km = WM_keymap_add_item(keymap, OP_MIRROR, MKEY, KM_PRESS, KM_CTRL, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(km->ptr, "path", "tool_settings.snap"); + RNA_string_set(km->ptr, "data_path", "tool_settings.snap"); km = WM_keymap_add_item(keymap, "TRANSFORM_OT_snap_type", TABKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0); @@ -926,7 +926,7 @@ void transform_keymap_for_space(wmKeyConfig *keyconf, wmKeyMap *keymap, int spac km = WM_keymap_add_item(keymap, "TRANSFORM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(km->ptr, "path", "tool_settings.snap"); + RNA_string_set(km->ptr, "data_path", "tool_settings.snap"); break; default: break; diff --git a/source/blender/makesrna/intern/rna_image_api.c b/source/blender/makesrna/intern/rna_image_api.c index e5fb130a7b7..289530d4f32 100644 --- a/source/blender/makesrna/intern/rna_image_api.c +++ b/source/blender/makesrna/intern/rna_image_api.c @@ -186,7 +186,7 @@ void RNA_api_image(StructRNA *srna) func= RNA_def_function(srna, "save_render", "rna_Image_save_render"); RNA_def_function_ui_description(func, "Save image to a specific path using a scenes render settings"); RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS); - parm= RNA_def_string(func, "path", "", 0, "", "Save path."); + parm= RNA_def_string(func, "filepath", "", 0, "", "Save path."); RNA_def_property_flag(parm, PROP_REQUIRED); parm= RNA_def_pointer(func, "scene", "Scene", "", "Scene to take image parameters from"); diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c index c9e17a562af..0dbaaa87a99 100644 --- a/source/blender/makesrna/intern/rna_main_api.c +++ b/source/blender/makesrna/intern/rna_main_api.c @@ -929,7 +929,7 @@ void RNA_def_main_texts(BlenderRNA *brna, PropertyRNA *cprop) func= RNA_def_function(srna, "load", "rna_Main_texts_load"); RNA_def_function_flag(func, FUNC_USE_REPORTS); RNA_def_function_ui_description(func, "Add a new text to the main database from a file"); - parm= RNA_def_string(func, "path", "Path", FILE_MAXDIR + FILE_MAXFILE, "", "path for the datablock."); + parm= RNA_def_string(func, "filepath", "Path", FILE_MAXDIR + FILE_MAXFILE, "", "path for the datablock."); RNA_def_property_flag(parm, PROP_REQUIRED); /* return type */ parm= RNA_def_pointer(func, "text", "Text", "", "New text datablock."); diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index 05088da56a6..2d973d9a32d 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -1605,7 +1605,7 @@ static void rna_def_modifier_particleinstance(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Children", "Create instances from child particles"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); - prop= RNA_def_property(srna, "path", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_path", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_Path); RNA_def_property_ui_text(prop, "Path", "Create instances along particle paths"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 31057dfd58b..52d129f04ac 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -1854,7 +1854,7 @@ static int pyrna_struct_anim_args_parse(PointerRNA *ptr, const char *error_prefi static int pyrna_struct_keyframe_parse(PointerRNA *ptr, PyObject *args, PyObject *kw, const char *parse_str, const char *error_prefix, char **path_full, int *index, float *cfra, char **group_name) /* return values */ { - static char *kwlist[] = {"path", "index", "frame", "group", NULL}; + static char *kwlist[] = {"datapath", "index", "frame", "group", NULL}; char *path; /* note, parse_str MUST start with 's|ifs' */ @@ -1871,12 +1871,12 @@ static int pyrna_struct_keyframe_parse(PointerRNA *ptr, PyObject *args, PyObject } static char pyrna_struct_keyframe_insert_doc[] = -".. method:: keyframe_insert(path, index=-1, frame=bpy.context.scene.frame_current, group=\"\")\n" +".. method:: keyframe_insert(datapath, index=-1, frame=bpy.context.scene.frame_current, group=\"\")\n" "\n" " Insert a keyframe on the property given, adding fcurves and animation data when necessary.\n" "\n" -" :arg path: path to the property to key, analogous to the fcurve's data path.\n" -" :type path: string\n" +" :arg datapath: path to the property to key, analogous to the fcurve's data path.\n" +" :type datapath: string\n" " :arg index: array index of the property to key. Defaults to -1 which will key all indicies or a single channel if the property is not an array.\n" " :type index: int\n" " :arg frame: The frame on which the keyframe is inserted, defaulting to the current frame.\n" @@ -1905,12 +1905,12 @@ static PyObject *pyrna_struct_keyframe_insert(BPy_StructRNA *self, PyObject *arg } static char pyrna_struct_keyframe_delete_doc[] = -".. method:: keyframe_delete(path, index=-1, frame=bpy.context.scene.frame_current, group=\"\")\n" +".. method:: keyframe_delete(datapath, index=-1, frame=bpy.context.scene.frame_current, group=\"\")\n" "\n" " Remove a keyframe from this properties fcurve.\n" "\n" -" :arg path: path to the property to remove a key, analogous to the fcurve's data path.\n" -" :type path: string\n" +" :arg datapath: path to the property to remove a key, analogous to the fcurve's data path.\n" +" :type datapath: string\n" " :arg index: array index of the property to remove a key. Defaults to -1 removing all indicies or a single channel if the property is not an array.\n" " :type index: int\n" " :arg frame: The frame on which the keyframe is deleted, defaulting to the current frame.\n" diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index 6668cbf5dd8..dbbe1312f0a 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -184,7 +184,7 @@ int WM_menu_invoke (struct bContext *C, struct wmOperator *op, struct wmEven int WM_enum_search_invoke(struct bContext *C, struct wmOperator *op, struct wmEvent *event); /* invoke callback, confirm menu + exec */ int WM_operator_confirm (struct bContext *C, struct wmOperator *op, struct wmEvent *event); - /* invoke callback, file selector "path" unset + exec */ + /* invoke callback, file selector "filepath" unset + exec */ int WM_operator_filesel (struct bContext *C, struct wmOperator *op, struct wmEvent *event); /* poll callback, context checks */ int WM_operator_winactive (struct bContext *C); diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index 2769f550f9a..3b83e4b760b 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -498,7 +498,7 @@ typedef struct wmDropBox { typedef struct RecentFile { struct RecentFile *next, *prev; - char *filename; + char *filepath; } RecentFile; diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index dc81dc39488..15852941ca6 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1212,7 +1212,7 @@ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHa { /* XXX validate area and region? */ bScreen *screen= CTX_wm_screen(C); - char *path= RNA_string_get_alloc(handler->op->ptr, "path", NULL, 0); + char *path= RNA_string_get_alloc(handler->op->ptr, "filepath", NULL, 0); if(screen != handler->filescreen) ED_screen_full_prevspace(C, CTX_wm_area(C)); diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 44768116c7c..17a04cab7be 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -407,10 +407,10 @@ void read_Blog(void) recent = (RecentFile*)MEM_mallocN(sizeof(RecentFile),"RecentFile"); BLI_addtail(&(G.recent_files), recent); - recent->filename = (char*)MEM_mallocN(sizeof(char)*(strlen(line)+1), "name of file"); - recent->filename[0] = '\0'; + recent->filepath = (char*)MEM_mallocN(sizeof(char)*(strlen(line)+1), "name of file"); + recent->filepath[0] = '\0'; - strcpy(recent->filename, line); + strcpy(recent->filepath, line); num++; } } @@ -433,29 +433,29 @@ static void writeBlog(void) recent = G.recent_files.first; /* refresh .Blog of recent opened files, when current file was changed */ - if(!(recent) || (strcmp(recent->filename, G.sce)!=0)) { + if(!(recent) || (strcmp(recent->filepath, G.sce)!=0)) { fp= fopen(name, "w"); if (fp) { /* add current file to the beginning of list */ recent = (RecentFile*)MEM_mallocN(sizeof(RecentFile),"RecentFile"); - recent->filename = (char*)MEM_mallocN(sizeof(char)*(strlen(G.sce)+1), "name of file"); - recent->filename[0] = '\0'; - strcpy(recent->filename, G.sce); + recent->filepath = (char*)MEM_mallocN(sizeof(char)*(strlen(G.sce)+1), "name of file"); + recent->filepath[0] = '\0'; + strcpy(recent->filepath, G.sce); BLI_addhead(&(G.recent_files), recent); /* write current file to .Blog */ - fprintf(fp, "%s\n", recent->filename); + fprintf(fp, "%s\n", recent->filepath); recent = recent->next; i=1; /* write rest of recent opened files to .Blog */ while((ifilename, G.sce)!=0) { - fprintf(fp, "%s\n", recent->filename); + if (strcmp(recent->filepath, G.sce)!=0) { + fprintf(fp, "%s\n", recent->filepath); recent = recent->next; } else { next_recent = recent->next; - MEM_freeN(recent->filename); + MEM_freeN(recent->filepath); BLI_freelinkN(&(G.recent_files), recent); recent = next_recent; } diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c index ed2ba460e9d..02e645ef635 100644 --- a/source/blender/windowmanager/intern/wm_init_exit.c +++ b/source/blender/windowmanager/intern/wm_init_exit.c @@ -202,7 +202,7 @@ static void free_openrecent(void) struct RecentFile *recent; for(recent = G.recent_files.first; recent; recent=recent->next) - MEM_freeN(recent->filename); + MEM_freeN(recent->filepath); BLI_freelistN(&(G.recent_files)); } diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index c43f362ceaa..355be67f2cd 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -774,7 +774,7 @@ int WM_operator_confirm(bContext *C, wmOperator *op, wmEvent *event) /* op->invoke, opens fileselect if path property not set, otherwise executes */ int WM_operator_filesel(bContext *C, wmOperator *op, wmEvent *event) { - if (RNA_property_is_set(op->ptr, "path")) { + if (RNA_property_is_set(op->ptr, "filepath")) { return WM_operator_call(C, op); } else { @@ -788,7 +788,7 @@ void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type, { PropertyRNA *prop; - RNA_def_string_file_path(ot->srna, "path", "", FILE_MAX, "File Path", "Path to file"); + RNA_def_string_file_path(ot->srna, "filepath", "", FILE_MAX, "File Path", "Path to file"); RNA_def_string_file_name(ot->srna, "filename", "", FILE_MAX, "File Name", "Name of the file"); RNA_def_string_dir_path(ot->srna, "directory", "", FILE_MAX, "Directory", "Directory of the file"); @@ -1215,7 +1215,7 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *arg_unuse col = uiLayoutColumn(split, 0); uiItemL(col, "Recent", 0); for(recent = G.recent_files.first, i=0; (i<5) && (recent); recent = recent->next, i++) { - uiItemStringO(col, BLI_path_basename(recent->filename), ICON_FILE_BLEND, "WM_OT_open_mainfile", "path", recent->filename); + uiItemStringO(col, BLI_path_basename(recent->filepath), ICON_FILE_BLEND, "WM_OT_open_mainfile", "filepath", recent->filepath); } uiItemS(col); uiItemO(col, NULL, ICON_RECOVER_LAST, "WM_OT_recover_last_session"); @@ -1429,7 +1429,7 @@ static void open_set_use_scripts(wmOperator *op) static int wm_open_mainfile_invoke(bContext *C, wmOperator *op, wmEvent *event) { - RNA_string_set(op->ptr, "path", G.sce); + RNA_string_set(op->ptr, "filepath", G.sce); open_set_load_ui(op); open_set_use_scripts(op); @@ -1442,7 +1442,7 @@ static int wm_open_mainfile_exec(bContext *C, wmOperator *op) { char path[FILE_MAX]; - RNA_string_get(op->ptr, "path", path); + RNA_string_get(op->ptr, "filepath", path); open_set_load_ui(op); open_set_use_scripts(op); @@ -1488,12 +1488,12 @@ static int wm_link_append_invoke(bContext *C, wmOperator *op, wmEvent *event) if(!RNA_property_is_set(op->ptr, "relative_path")) RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); - if(RNA_property_is_set(op->ptr, "path")) { + if(RNA_property_is_set(op->ptr, "filepath")) { return WM_operator_call(C, op); } else { /* XXX TODO solve where to get last linked library from */ - RNA_string_set(op->ptr, "path", G.lib); + RNA_string_set(op->ptr, "filepath", G.lib); WM_event_add_fileselect(C, op); return OPERATOR_RUNNING_MODAL; } @@ -1693,7 +1693,7 @@ static int wm_recover_auto_save_exec(bContext *C, wmOperator *op) { char path[FILE_MAX]; - RNA_string_get(op->ptr, "path", path); + RNA_string_get(op->ptr, "filepath", path); G.fileflags |= G_FILE_RECOVER; @@ -1714,7 +1714,7 @@ static int wm_recover_auto_save_invoke(bContext *C, wmOperator *op, wmEvent *eve char filename[FILE_MAX]; wm_autosave_location(filename); - RNA_string_set(op->ptr, "path", filename); + RNA_string_set(op->ptr, "filepath", filename); WM_event_add_fileselect(C, op); return OPERATOR_RUNNING_MODAL; @@ -1765,7 +1765,7 @@ static int wm_save_as_mainfile_invoke(bContext *C, wmOperator *op, wmEvent *even BLI_strncpy(name, G.sce, FILE_MAX); untitled(name); - RNA_string_set(op->ptr, "path", name); + RNA_string_set(op->ptr, "filepath", name); WM_event_add_fileselect(C, op); @@ -1780,8 +1780,8 @@ static int wm_save_as_mainfile_exec(bContext *C, wmOperator *op) save_set_compress(op); - if(RNA_property_is_set(op->ptr, "path")) - RNA_string_get(op->ptr, "path", path); + if(RNA_property_is_set(op->ptr, "filepath")) + RNA_string_get(op->ptr, "filepath", path); else { BLI_strncpy(path, G.sce, FILE_MAX); untitled(path); @@ -1833,7 +1833,7 @@ static int wm_save_mainfile_invoke(bContext *C, wmOperator *op, wmEvent *event) BLI_strncpy(name, G.sce, FILE_MAX); untitled(name); - RNA_string_set(op->ptr, "path", name); + RNA_string_set(op->ptr, "filepath", name); if (RNA_struct_find_property(op->ptr, "check_existing")) if (RNA_boolean_get(op->ptr, "check_existing")==0) @@ -1875,9 +1875,9 @@ static void WM_OT_save_mainfile(wmOperatorType *ot) static int wm_collada_export_invoke(bContext *C, wmOperator *op, wmEvent *event) { - if(!RNA_property_is_set(op->ptr, "path")) { + if(!RNA_property_is_set(op->ptr, "filepath")) { char *path = BLI_replacestr(G.sce, ".blend", ".dae"); - RNA_string_set(op->ptr, "path", path); + RNA_string_set(op->ptr, "filepath", path); MEM_freeN(path); } @@ -1891,12 +1891,12 @@ static int wm_collada_export_exec(bContext *C, wmOperator *op) { char filename[FILE_MAX]; - if(!RNA_property_is_set(op->ptr, "path")) { + if(!RNA_property_is_set(op->ptr, "filepath")) { BKE_report(op->reports, RPT_ERROR, "No filename given"); return OPERATOR_CANCELLED; } - RNA_string_get(op->ptr, "path", filename); + RNA_string_get(op->ptr, "filepath", filename); collada_export(CTX_data_scene(C), filename); return OPERATOR_FINISHED; @@ -1919,12 +1919,12 @@ static int wm_collada_import_exec(bContext *C, wmOperator *op) { char filename[FILE_MAX]; - if(!RNA_property_is_set(op->ptr, "path")) { + if(!RNA_property_is_set(op->ptr, "filepath")) { BKE_report(op->reports, RPT_ERROR, "No filename given"); return OPERATOR_CANCELLED; } - RNA_string_get(op->ptr, "path", filename); + RNA_string_get(op->ptr, "filepath", filename); collada_import(C, filename); return OPERATOR_FINISHED; @@ -3201,47 +3201,47 @@ void wm_window_keymap(wmKeyConfig *keyconf) kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F2KEY, KM_PRESS, KM_SHIFT, 0); /* new in 2.5x, was DXF export */ - RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "data_path", "area.type"); RNA_string_set(kmi->ptr, "value", "LOGIC_EDITOR"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F3KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "data_path", "area.type"); RNA_string_set(kmi->ptr, "value", "NODE_EDITOR"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F4KEY, KM_PRESS, KM_SHIFT, 0); /* new in 2.5x, was data browser */ - RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "data_path", "area.type"); RNA_string_set(kmi->ptr, "value", "CONSOLE"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F5KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "data_path", "area.type"); RNA_string_set(kmi->ptr, "value", "VIEW_3D"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F6KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "data_path", "area.type"); RNA_string_set(kmi->ptr, "value", "GRAPH_EDITOR"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F7KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "data_path", "area.type"); RNA_string_set(kmi->ptr, "value", "PROPERTIES"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F8KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "data_path", "area.type"); RNA_string_set(kmi->ptr, "value", "SEQUENCE_EDITOR"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F9KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "data_path", "area.type"); RNA_string_set(kmi->ptr, "value", "OUTLINER"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F10KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "data_path", "area.type"); RNA_string_set(kmi->ptr, "value", "IMAGE_EDITOR"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F11KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "data_path", "area.type"); RNA_string_set(kmi->ptr, "value", "TEXT_EDITOR"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F12KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "path", "area.type"); + RNA_string_set(kmi->ptr, "data_path", "area.type"); RNA_string_set(kmi->ptr, "value", "DOPESHEET_EDITOR"); gesture_circle_modal_keymap(keyconf); diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index b730d1a6483..6d01620dae8 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -729,7 +729,7 @@ static int ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr private) CTX_wm_window_set(C, win); WM_operator_properties_create(&props_ptr, "WM_OT_open_mainfile"); - RNA_string_set(&props_ptr, "path", path); + RNA_string_set(&props_ptr, "filepath", path); WM_operator_name_call(C, "WM_OT_open_mainfile", WM_OP_EXEC_DEFAULT, &props_ptr); WM_operator_properties_free(&props_ptr); From ff561973622975f4000f7f1b5bdf3787009e58d5 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Mon, 14 Jun 2010 07:02:11 +0000 Subject: [PATCH 081/674] Don't draw nodes that are out of the view speeds up node editor fairly considerably on a complex comp --- source/blender/editors/space_node/node_draw.c | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/source/blender/editors/space_node/node_draw.c b/source/blender/editors/space_node/node_draw.c index 63c1d9e486c..5eb6d9cf94a 100644 --- a/source/blender/editors/space_node/node_draw.c +++ b/source/blender/editors/space_node/node_draw.c @@ -626,13 +626,7 @@ static void node_draw_preview(bNodePreview *preview, rctf *prv) } } -// if(GPU_type_matches(GPU_DEVICE_NVIDIA, GPU_OS_MAC, GPU_DRIVER_OFFICIAL)) { XXX -// float zoomx= curarea->winx/(float)(G.v2d->cur.xmax-G.v2d->cur.xmin); -// float zoomy= curarea->winy/(float)(G.v2d->cur.ymax-G.v2d->cur.ymin); -// glPixelZoom(zoomx*xscale, zoomy*yscale); -// } -// else - glPixelZoom(xscale, yscale); + glPixelZoom(xscale, yscale); glEnable(GL_BLEND); glBlendFunc( GL_ONE, GL_ONE_MINUS_SRC_ALPHA ); /* premul graphics */ @@ -661,6 +655,19 @@ static void node_draw_basis(const bContext *C, ARegion *ar, SpaceNode *snode, bN bNodeTree *ntree = snode->nodetree; PointerRNA ptr; + /* hurmf... another candidate for callback, have to see how this works first */ + if(node->id && node->block && snode->treetype==NTREE_SHADER) + nodeShaderSynchronizeID(node, 0); + + /* skip if out of view */ + if (node->totr.xmax < ar->v2d.cur.xmin || node->totr.xmin > ar->v2d.cur.xmax || + node->totr.ymax < ar->v2d.cur.ymin || node->totr.ymin > ar->v2d.cur.ymax) { + + uiEndBlock(C, node->block); + node->block= NULL; + return; + } + uiSetRoundBox(15-4); ui_dropshadow(rct, BASIS_RAD, snode->aspect, node->flag & SELECT); @@ -761,10 +768,6 @@ static void node_draw_basis(const bContext *C, ARegion *ar, SpaceNode *snode, bN node_draw_mute_line(v2d, snode, node); - /* hurmf... another candidate for callback, have to see how this works first */ - if(node->id && node->block && snode->treetype==NTREE_SHADER) - nodeShaderSynchronizeID(node, 0); - /* socket inputs, buttons */ for(sock= node->inputs.first; sock; sock= sock->next) { if(!(sock->flag & (SOCK_HIDDEN|SOCK_UNAVAIL))) { From a775843b11f2be78b4d0aba83d542583ab2776ae Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Mon, 14 Jun 2010 07:27:07 +0000 Subject: [PATCH 082/674] Use per-object icons in animation editor channel regions makes it a bit easier to distinguish what you're looking for --- .../editors/animation/anim_channels_defines.c | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/animation/anim_channels_defines.c b/source/blender/editors/animation/anim_channels_defines.c index 43a0c8de955..3f00c1abe68 100644 --- a/source/blender/editors/animation/anim_channels_defines.c +++ b/source/blender/editors/animation/anim_channels_defines.c @@ -592,10 +592,32 @@ static int acf_object_icon(bAnimListElem *ale) Object *ob= base->object; /* icon depends on object-type */ - if (ob->type == OB_ARMATURE) - return ICON_ARMATURE_DATA; - else - return ICON_OBJECT_DATA; + + switch (ob->type) { + case OB_LAMP: + return ICON_OUTLINER_OB_LAMP; + case OB_MESH: + return ICON_OUTLINER_OB_MESH; + case OB_CAMERA: + return ICON_OUTLINER_OB_CAMERA; + case OB_CURVE: + return ICON_OUTLINER_OB_CURVE; + case OB_MBALL: + return ICON_OUTLINER_OB_META; + case OB_LATTICE: + return ICON_OUTLINER_OB_LATTICE; + case OB_ARMATURE: + return ICON_OUTLINER_OB_ARMATURE; + case OB_FONT: + return ICON_OUTLINER_OB_FONT; + case OB_SURF: + return ICON_OUTLINER_OB_SURFACE; + case OB_EMPTY: + return ICON_OUTLINER_OB_EMPTY; + default: + return ICON_OBJECT_DATA; + } + } /* name for object */ From 69a7807790d1fc175f92ab9ad2104a28282385b2 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Mon, 14 Jun 2010 07:43:45 +0000 Subject: [PATCH 083/674] restored old 'uv orco' for curves, renamed to 'map along length' --- release/scripts/ui/properties_data_curve.py | 2 +- source/blender/makesrna/intern/rna_curve.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/release/scripts/ui/properties_data_curve.py b/release/scripts/ui/properties_data_curve.py index 5f1dc662b97..c5bf4b8459b 100644 --- a/release/scripts/ui/properties_data_curve.py +++ b/release/scripts/ui/properties_data_curve.py @@ -126,7 +126,7 @@ class DATA_PT_shape_curve(DataButtonsPanel): sub.prop(curve, "use_deform_fill") col.label(text="Textures:") -# col.prop(curve, "uv_orco") + col.prop(curve, "map_along_length") col.prop(curve, "auto_texspace") diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index f7404d2656b..3ecc844250b 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -693,9 +693,9 @@ static void rna_def_nurbs(BlenderRNA *brna, StructRNA *srna) PropertyRNA *prop; /* flags */ - prop= RNA_def_property(srna, "uv_orco", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "map_along_length", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_UV_ORCO); - RNA_def_property_ui_text(prop, "UV Orco", "Forces to use UV coordinates for texture mapping 'orco'"); + RNA_def_property_ui_text(prop, "Map Along Length", "Generate texture mapping coordinates following the curve direction, rather than the local bounding box"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); prop= RNA_def_property(srna, "vertex_normal_flip", PROP_BOOLEAN, PROP_NONE); @@ -1200,6 +1200,11 @@ static void rna_def_curve(BlenderRNA *brna) RNA_def_property_editable_func(prop, texspace_editable); RNA_def_property_update(prop, 0, "rna_Curve_update_data");*/ + prop= RNA_def_property(srna, "map_along_length", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_UV_ORCO); + RNA_def_property_ui_text(prop, "Map Along Length", "Generate texture mapping coordinates following the curve direction, rather than the local bounding box"); + RNA_def_property_update(prop, 0, "rna_Curve_update_data"); + /* materials */ prop= RNA_def_property(srna, "materials", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "mat", "totcol"); From 329277bcfead5e2b3a1f5791f1c3628263e63ff4 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Mon, 14 Jun 2010 08:47:58 +0000 Subject: [PATCH 084/674] Update interaction preset for property renaming --- release/scripts/presets/interaction/maya.py | 30 ++++++++++----------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/release/scripts/presets/interaction/maya.py b/release/scripts/presets/interaction/maya.py index 3e54cb4391b..31652035dff 100644 --- a/release/scripts/presets/interaction/maya.py +++ b/release/scripts/presets/interaction/maya.py @@ -126,11 +126,11 @@ kmi.properties.nr = 9 kmi = km.items.add('view3d.layers', 'ZERO', 'PRESS', any=True) kmi.properties.nr = 10 kmi = km.items.add('wm.context_toggle_enum', 'Z', 'PRESS') -kmi.properties.path = 'space_data.viewport_shading' +kmi.properties.data_path = 'space_data.viewport_shading' kmi.properties.value_1 = 'SOLID' kmi.properties.value_2 = 'WIREFRAME' kmi = km.items.add('wm.context_toggle_enum', 'Z', 'PRESS', alt=True) -kmi.properties.path = 'space_data.viewport_shading' +kmi.properties.data_path = 'space_data.viewport_shading' kmi.properties.value_1 = 'TEXTURED' kmi.properties.value_2 = 'SOLID' kmi = km.items.add('view3d.select', 'SELECTMOUSE', 'PRESS') @@ -167,23 +167,23 @@ kmi = km.items.add('view3d.object_as_camera', 'NUMPAD_0', 'PRESS', ctrl=True) kmi = km.items.add('wm.call_menu', 'S', 'PRESS', shift=True) kmi.properties.name = 'VIEW3D_MT_snap' kmi = km.items.add('wm.context_set_enum', 'COMMA', 'PRESS') -kmi.properties.path = 'space_data.pivot_point' +kmi.properties.data_path = 'space_data.pivot_point' kmi.properties.value = 'BOUNDING_BOX_CENTER' kmi = km.items.add('wm.context_set_enum', 'COMMA', 'PRESS', ctrl=True) -kmi.properties.path = 'space_data.pivot_point' +kmi.properties.data_path = 'space_data.pivot_point' kmi.properties.value = 'MEDIAN_POINT' kmi = km.items.add('wm.context_toggle', 'COMMA', 'PRESS', alt=True) -kmi.properties.path = 'space_data.pivot_point_align' +kmi.properties.data_path = 'space_data.pivot_point_align' kmi = km.items.add('wm.context_toggle', 'Q', 'PRESS') -kmi.properties.path = 'space_data.manipulator' +kmi.properties.data_path = 'space_data.manipulator' kmi = km.items.add('wm.context_set_enum', 'PERIOD', 'PRESS') -kmi.properties.path = 'space_data.pivot_point' +kmi.properties.data_path = 'space_data.pivot_point' kmi.properties.value = 'CURSOR' kmi = km.items.add('wm.context_set_enum', 'PERIOD', 'PRESS', ctrl=True) -kmi.properties.path = 'space_data.pivot_point' +kmi.properties.data_path = 'space_data.pivot_point' kmi.properties.value = 'INDIVIDUAL_ORIGINS' kmi = km.items.add('wm.context_set_enum', 'PERIOD', 'PRESS', alt=True) -kmi.properties.path = 'space_data.pivot_point' +kmi.properties.data_path = 'space_data.pivot_point' kmi.properties.value = 'ACTIVE_ELEMENT' kmi = km.items.add('transform.translate', 'G', 'PRESS', shift=True) kmi = km.items.add('transform.translate', 'EVT_TWEAK_S', 'ANY') @@ -197,7 +197,7 @@ kmi = km.items.add('transform.create_orientation', 'SPACE', 'PRESS', ctrl=True, kmi.properties.use = True kmi = km.items.add('transform.mirror', 'M', 'PRESS', ctrl=True) kmi = km.items.add('wm.context_toggle', 'TAB', 'PRESS', shift=True) -kmi.properties.path = 'tool_settings.snap' +kmi.properties.data_path = 'tool_settings.snap' kmi = km.items.add('transform.snap_type', 'TAB', 'PRESS', shift=True, ctrl=True) kmi = km.items.add('view3d.enable_manipulator', 'W', 'PRESS') kmi.properties.translate = True @@ -212,9 +212,9 @@ kmi.properties.extend = True km = kc.add_keymap('Object Mode', space_type='EMPTY', region_type='WINDOW', modal=False) kmi = km.items.add('wm.context_cycle_enum', 'O', 'PRESS', shift=True) -kmi.properties.path = 'tool_settings.proportional_editing_falloff' +kmi.properties.data_path = 'tool_settings.proportional_editing_falloff' kmi = km.items.add('wm.context_toggle_enum', 'O', 'PRESS') -kmi.properties.path = 'tool_settings.proportional_editing' +kmi.properties.data_path = 'tool_settings.proportional_editing' kmi.properties.value_1 = 'DISABLED' kmi.properties.value_2 = 'ENABLED' kmi = km.items.add('view3d.game_start', 'P', 'PRESS') @@ -363,13 +363,13 @@ kmi.properties.name = 'VIEW3D_MT_uv_map' kmi = km.items.add('wm.call_menu', 'G', 'PRESS', ctrl=True) kmi.properties.name = 'VIEW3D_MT_vertex_group' kmi = km.items.add('wm.context_cycle_enum', 'O', 'PRESS', shift=True) -kmi.properties.path = 'tool_settings.proportional_editing_falloff' +kmi.properties.data_path = 'tool_settings.proportional_editing_falloff' kmi = km.items.add('wm.context_toggle_enum', 'O', 'PRESS') -kmi.properties.path = 'tool_settings.proportional_editing' +kmi.properties.data_path = 'tool_settings.proportional_editing' kmi.properties.value_1 = 'DISABLED' kmi.properties.value_2 = 'ENABLED' kmi = km.items.add('wm.context_toggle_enum', 'O', 'PRESS', alt=True) -kmi.properties.path = 'tool_settings.proportional_editing' +kmi.properties.data_path = 'tool_settings.proportional_editing' kmi.properties.value_1 = 'DISABLED' kmi.properties.value_2 = 'CONNECTED' kmi = km.items.add('mesh.select_all', 'SELECTMOUSE', 'CLICK') From 6a0365f59c9981ff143dc3ea7266ca76c8bf10cb Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 14 Jun 2010 10:33:26 +0000 Subject: [PATCH 085/674] - option for redraw timer to playback the animation - py utility property group.users_dupli_group --- release/scripts/modules/bpy_types.py | 6 +- source/blender/makesrna/RNA_access.h | 1 + source/blender/makesrna/intern/rna_access.c | 11 +++ .../windowmanager/intern/wm_operators.c | 79 +++++++++++-------- 4 files changed, 63 insertions(+), 34 deletions(-) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 2fd4568b59d..f6090d76533 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -79,10 +79,10 @@ class Group(bpy_types.ID): __slots__ = () @property - def users_dupli_object(self): - """The dupli group this group is used in, XXX, TODO, WHY DOESNT THIS WORK???""" + def users_dupli_group(self): + """The dupli group this group is used in""" import bpy - return tuple(obj for obj in bpy.data.objects if self == obj.dupli_object) + return tuple(obj for obj in bpy.data.objects if self == obj.dupli_group) class Object(bpy_types.ID): diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index 3badc401514..30cbc512f5a 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -661,6 +661,7 @@ int RNA_property_int_clamp(PointerRNA *ptr, PropertyRNA *prop, int *value); int RNA_enum_identifier(EnumPropertyItem *item, const int value, const char **identifier); int RNA_enum_bitflag_identifiers(EnumPropertyItem *item, const int value, const char **identifier); int RNA_enum_name(EnumPropertyItem *item, const int value, const char **name); +int RNA_enum_description(EnumPropertyItem *item, const int value, const char **description); void RNA_property_enum_items(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, EnumPropertyItem **item, int *totitem, int *free); int RNA_property_enum_value(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const char *identifier, int *value); diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 4673f23b1ae..2d99be4461e 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -1086,6 +1086,17 @@ int RNA_enum_name(EnumPropertyItem *item, const int value, const char **name) return 0; } +int RNA_enum_description(EnumPropertyItem *item, const int value, const char **description) +{ + for (; item->identifier; item++) { + if(item->identifier[0] && item->value==value) { + *description = item->description; + return 1; + } + } + return 0; +} + int RNA_property_enum_identifier(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier) { EnumPropertyItem *item= NULL; diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 355be67f2cd..c38ba67a648 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -2818,6 +2818,28 @@ void WM_OT_radial_control_partial(wmOperatorType *ot) /* uses no type defines, fully local testing function anyway... ;) */ +static void redraw_timer_window_swap(bContext *C) +{ + wmWindow *win= CTX_wm_window(C); + ScrArea *sa; + + for(sa= CTX_wm_screen(C)->areabase.first; sa; sa= sa->next) + ED_area_tag_redraw(sa); + wm_draw_update(C); + + CTX_wm_window_set(C, win); /* XXX context manipulation warning! */ +} + +static EnumPropertyItem redraw_timer_type_items[] = { + {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) { ARegion *ar= CTX_wm_region(C); @@ -2826,7 +2848,7 @@ static int redraw_timer_exec(bContext *C, wmOperator *op) int iter = RNA_int_get(op->ptr, "iterations"); int a; float time; - char *infostr= ""; + const char *infostr= ""; WM_cursor_wait(1); @@ -2867,14 +2889,7 @@ static int redraw_timer_exec(bContext *C, wmOperator *op) CTX_wm_region_set(C, ar_back); } else if (type==3) { - wmWindow *win= CTX_wm_window(C); - ScrArea *sa; - - for(sa= CTX_wm_screen(C)->areabase.first; sa; sa= sa->next) - ED_area_tag_redraw(sa); - wm_draw_update(C); - - CTX_wm_window_set(C, win); /* XXX context manipulation warning! */ + redraw_timer_window_swap(C); } else if (type==4) { Scene *scene= CTX_data_scene(C); @@ -2883,23 +2898,34 @@ static int redraw_timer_exec(bContext *C, wmOperator *op) else scene->r.cfra++; scene_update_for_newframe(scene, scene->lay); } - else { + else if (type==5) { + + /* play anim, return on same frame as started with */ + Scene *scene= CTX_data_scene(C); + int tot= (scene->r.efra - scene->r.sfra) + 1; + + while(tot--) { + /* todo, ability to escape! */ + scene->r.cfra++; + if(scene->r.cfra > scene->r.efra) + scene->r.cfra= scene->r.sfra; + + scene_update_for_newframe(scene, scene->lay); + redraw_timer_window_swap(C); + } + } + else { /* 6 */ ED_undo_pop(C); ED_undo_redo(C); } } time= ((PIL_check_seconds_timer()-stime)*1000); - - if(type==0) infostr= "Draw Region"; - if(type==1) infostr= "Draw Region and Swap"; - if(type==2) infostr= "Draw Window"; - if(type==3) infostr= "Draw Window and Swap"; - if(type==4) infostr= "Animation Steps"; - if(type==5) infostr= "Undo/Redo"; - + + RNA_enum_description(redraw_timer_type_items, type, &infostr); + WM_cursor_wait(0); - + BKE_reportf(op->reports, RPT_WARNING, "%d x %s: %.2f ms, average: %.4f", iter, infostr, time, time/iter); return OPERATOR_FINISHED; @@ -2907,24 +2933,15 @@ static int redraw_timer_exec(bContext *C, wmOperator *op) static void WM_OT_redraw_timer(wmOperatorType *ot) { - static EnumPropertyItem prop_type_items[] = { - {0, "DRAW", 0, "Draw Region", ""}, - {1, "DRAW_SWAP", 0, "Draw Region + Swap", ""}, - {2, "DRAW_WIN", 0, "Draw Window", ""}, - {3, "DRAW_WIN_SWAP", 0, "Draw Window + Swap", ""}, - {4, "ANIM_STEP", 0, "Anim Step", ""}, - {5, "UNDO", 0, "Undo/Redo", ""}, - {0, NULL, 0, NULL, NULL}}; - ot->name= "Redraw Timer"; ot->idname= "WM_OT_redraw_timer"; ot->description="Simple redraw timer to test the speed of updating the interface"; - + ot->invoke= WM_menu_invoke; ot->exec= redraw_timer_exec; ot->poll= WM_operator_winactive; - - ot->prop= RNA_def_enum(ot->srna, "type", prop_type_items, 0, "Type", ""); + + ot->prop= RNA_def_enum(ot->srna, "type", redraw_timer_type_items, 0, "Type", ""); RNA_def_int(ot->srna, "iterations", 10, 1,INT_MAX, "Iterations", "Number of times to redraw", 1,1000); } From a2461a01c91f70d5a9c1551d19d784f8ad17fff8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 14 Jun 2010 12:36:28 +0000 Subject: [PATCH 086/674] change to recent commit, insert_keyframe(datapath -> data_path ...) made region width and height unsigned --- source/blender/makesrna/intern/rna_screen.c | 4 ++-- source/blender/python/intern/bpy_rna.c | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/source/blender/makesrna/intern/rna_screen.c b/source/blender/makesrna/intern/rna_screen.c index d7dfd6fba9a..ecf2206c25c 100644 --- a/source/blender/makesrna/intern/rna_screen.c +++ b/source/blender/makesrna/intern/rna_screen.c @@ -161,12 +161,12 @@ static void rna_def_region(BlenderRNA *brna) RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Region Type", "Type of this region"); - prop= RNA_def_property(srna, "width", PROP_INT, PROP_NONE); + prop= RNA_def_property(srna, "width", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_sdna(prop, NULL, "winx"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Width", "Region width"); - prop= RNA_def_property(srna, "height", PROP_INT, PROP_NONE); + prop= RNA_def_property(srna, "height", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_sdna(prop, NULL, "winy"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Height", "Region height"); diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 52d129f04ac..fbb806f6436 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -1854,7 +1854,7 @@ static int pyrna_struct_anim_args_parse(PointerRNA *ptr, const char *error_prefi static int pyrna_struct_keyframe_parse(PointerRNA *ptr, PyObject *args, PyObject *kw, const char *parse_str, const char *error_prefix, char **path_full, int *index, float *cfra, char **group_name) /* return values */ { - static char *kwlist[] = {"datapath", "index", "frame", "group", NULL}; + static char *kwlist[] = {"data_path", "index", "frame", "group", NULL}; char *path; /* note, parse_str MUST start with 's|ifs' */ @@ -1871,12 +1871,12 @@ static int pyrna_struct_keyframe_parse(PointerRNA *ptr, PyObject *args, PyObject } static char pyrna_struct_keyframe_insert_doc[] = -".. method:: keyframe_insert(datapath, index=-1, frame=bpy.context.scene.frame_current, group=\"\")\n" +".. method:: keyframe_insert(data_path, index=-1, frame=bpy.context.scene.frame_current, group=\"\")\n" "\n" " Insert a keyframe on the property given, adding fcurves and animation data when necessary.\n" "\n" -" :arg datapath: path to the property to key, analogous to the fcurve's data path.\n" -" :type datapath: string\n" +" :arg data_path: path to the property to key, analogous to the fcurve's data path.\n" +" :type data_path: string\n" " :arg index: array index of the property to key. Defaults to -1 which will key all indicies or a single channel if the property is not an array.\n" " :type index: int\n" " :arg frame: The frame on which the keyframe is inserted, defaulting to the current frame.\n" @@ -1905,12 +1905,12 @@ static PyObject *pyrna_struct_keyframe_insert(BPy_StructRNA *self, PyObject *arg } static char pyrna_struct_keyframe_delete_doc[] = -".. method:: keyframe_delete(datapath, index=-1, frame=bpy.context.scene.frame_current, group=\"\")\n" +".. method:: keyframe_delete(data_path, index=-1, frame=bpy.context.scene.frame_current, group=\"\")\n" "\n" " Remove a keyframe from this properties fcurve.\n" "\n" -" :arg datapath: path to the property to remove a key, analogous to the fcurve's data path.\n" -" :type datapath: string\n" +" :arg data_path: path to the property to remove a key, analogous to the fcurve's data path.\n" +" :type data_path: string\n" " :arg index: array index of the property to remove a key. Defaults to -1 removing all indicies or a single channel if the property is not an array.\n" " :type index: int\n" " :arg frame: The frame on which the keyframe is deleted, defaulting to the current frame.\n" From 08c4725a1376343ece67cfcb3f990416cc8dd108 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 14 Jun 2010 15:02:16 +0000 Subject: [PATCH 087/674] workaround for crash when notifiers cause a scene update at the same time rendering starts. happens when changing frame and pressing render quickly on a slow scene. for now ignore animation updates while rendering. --- source/blender/windowmanager/intern/wm_event_system.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 15852941ca6..70e804758b2 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -234,8 +234,15 @@ void wm_event_do_notifiers(bContext *C) } } if(do_anim) { - /* depsgraph gets called, might send more notifiers */ - ED_update_for_newframe(C, 1); + + /* XXX, quick frame changes can cause a crash if framechange and rendering + * collide (happens on slow scenes), scene_update_for_newframe can be called + * twice which can depgraph update the same object at once */ + if(!G.rendering) { + + /* depsgraph gets called, might send more notifiers */ + ED_update_for_newframe(C, 1); + } } } From 69cb2cc37b769ce6f8639fcfd8e0d16f61e697f2 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 14 Jun 2010 15:39:50 +0000 Subject: [PATCH 088/674] adding curve and mesh objects through python would create the object without assigning it to any layers. now initialize from the scene (when the value is unset), and throw an error when the value is set to all false. --- source/blender/editors/curve/editcurve.c | 4 +- source/blender/editors/include/ED_object.h | 2 +- source/blender/editors/mesh/editmesh_add.c | 27 +++++--- source/blender/editors/object/object_add.c | 71 ++++++++++++++++------ 4 files changed, 73 insertions(+), 31 deletions(-) diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 40cf95dfa5d..1b140276c22 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -5269,7 +5269,9 @@ static int curve_prim_add(bContext *C, wmOperator *op, int type){ float mat[4][4]; //object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; + if(obedit==NULL || obedit->type!=OB_CURVE) { Curve *cu; diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h index da4896b3435..a03cd135f1c 100644 --- a/source/blender/editors/include/ED_object.h +++ b/source/blender/editors/include/ED_object.h @@ -88,7 +88,7 @@ float ED_object_new_primitive_matrix(struct bContext *C, struct Object *editob, void ED_object_add_generic_props(struct wmOperatorType *ot, int do_editmode); int ED_object_add_generic_invoke(struct bContext *C, struct wmOperator *op, struct wmEvent *event); -void ED_object_add_generic_get_opts(struct bContext *C, struct wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer); +int ED_object_add_generic_get_opts(struct bContext *C, struct wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer); struct Object *ED_object_add_type(struct bContext *C, int type, float *loc, float *rot, int enter_editmode, unsigned int layer); void ED_object_single_users(struct Scene *scene, int full); diff --git a/source/blender/editors/mesh/editmesh_add.c b/source/blender/editors/mesh/editmesh_add.c index f0e6f40af30..a7a0a854f1b 100644 --- a/source/blender/editors/mesh/editmesh_add.c +++ b/source/blender/editors/mesh/editmesh_add.c @@ -1304,7 +1304,8 @@ static int add_primitive_plane_exec(bContext *C, wmOperator *op) unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; /* sqrt(2.0f) - plane (diameter of 1.41 makes it unit size) */ make_prim_ext(C, loc, rot, enter_editmode, layer, @@ -1336,7 +1337,8 @@ static int add_primitive_cube_exec(bContext *C, wmOperator *op) unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; /* sqrt(2.0f) - plane (diameter of 1.41 makes it unit size) */ make_prim_ext(C, loc, rot, enter_editmode, layer, @@ -1368,7 +1370,8 @@ static int add_primitive_circle_exec(bContext *C, wmOperator *op) unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; make_prim_ext(C, loc, rot, enter_editmode, layer, PRIM_CIRCLE, RNA_int_get(op->ptr, "vertices"), 0, 0, @@ -1407,7 +1410,8 @@ static int add_primitive_tube_exec(bContext *C, wmOperator *op) unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; make_prim_ext(C, loc, rot, enter_editmode, layer, PRIM_CYLINDER, RNA_int_get(op->ptr, "vertices"), 0, 0, @@ -1448,7 +1452,8 @@ static int add_primitive_cone_exec(bContext *C, wmOperator *op) unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; make_prim_ext(C, loc, rot, enter_editmode, layer, PRIM_CONE, RNA_int_get(op->ptr, "vertices"), 0, 0, @@ -1488,7 +1493,8 @@ static int add_primitive_grid_exec(bContext *C, wmOperator *op) unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; make_prim_ext(C, loc, rot, enter_editmode, layer, PRIM_GRID, RNA_int_get(op->ptr, "x_subdivisions"), @@ -1527,7 +1533,8 @@ static int add_primitive_monkey_exec(bContext *C, wmOperator *op) unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; make_prim_ext(C, loc, rot, enter_editmode, layer, PRIM_MONKEY, 0, 0, 2, 0.0f, 0.0f, 0, 0); @@ -1559,7 +1566,8 @@ static int add_primitive_uvsphere_exec(bContext *C, wmOperator *op) unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; make_prim_ext(C, loc, rot, enter_editmode, layer, PRIM_UVSPHERE, RNA_int_get(op->ptr, "rings"), @@ -1598,7 +1606,8 @@ static int add_primitive_icosphere_exec(bContext *C, wmOperator *op) unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; make_prim_ext(C, loc, rot, enter_editmode, layer, PRIM_ICOSPHERE, 0, 0, RNA_int_get(op->ptr, "subdivisions"), diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 9f8fe7ba0f2..e29c23b1f4d 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -232,7 +232,7 @@ int ED_object_add_generic_invoke(bContext *C, wmOperator *op, wmEvent *event) return op->type->exec(C, op); } -void ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer) +int ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer) { int a, layer_values[32]; int view_align; @@ -241,7 +241,23 @@ void ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, flo if(RNA_struct_find_property(op->ptr, "enter_editmode") && RNA_boolean_get(op->ptr, "enter_editmode")) { *enter_editmode = TRUE; } - + + if(RNA_property_is_set(op->ptr, "layer")) { + RNA_boolean_get_array(op->ptr, "layer", layer_values); + + for(a=0; a<32; a++) { + if(layer_values[a]) + *layer |= (1 << a); + else + *layer &= ~(1 << a); + } + } + else { + /* not set, use the scenes layers */ + Scene *scene = CTX_data_scene(C); + *layer = scene->layact; + } + if (RNA_property_is_set(op->ptr, "view_align")) view_align = RNA_boolean_get(op->ptr, "view_align"); else @@ -254,13 +270,13 @@ void ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, flo RNA_float_get_array(op->ptr, "location", loc); - RNA_boolean_get_array(op->ptr, "layer", layer_values); - - for(a=0; a<32; a++) - if(layer_values[a]) - *layer |= (1 << a); - else - *layer &= ~(1 << a); + + if(*layer == 0) { + BKE_report(op->reports, RPT_ERROR, "Property 'layer' has no values set"); + return 0; + } + + return 1; } /* for object add primitive operators */ @@ -298,7 +314,9 @@ static int object_add_exec(bContext *C, wmOperator *op) unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; + ED_object_add_type(C, RNA_enum_get(op->ptr, "type"), loc, rot, enter_editmode, layer); return OPERATOR_FINISHED; @@ -357,7 +375,9 @@ static Object *effector_add_type(bContext *C, wmOperator *op, int type) float mat[4][4]; object_add_generic_invoke_options(C, op); - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return NULL; if(type==PFIELD_GUIDE) { ob= ED_object_add_type(C, OB_CURVE, loc, rot, FALSE, layer); @@ -391,8 +411,9 @@ static Object *effector_add_type(bContext *C, wmOperator *op, int type) /* for object add operator */ static int effector_add_exec(bContext *C, wmOperator *op) { - effector_add_type(C, op, RNA_int_get(op->ptr, "type")); - + if(effector_add_type(C, op, RNA_int_get(op->ptr, "type")) == NULL) + return OPERATOR_CANCELLED; + return OPERATOR_FINISHED; } @@ -432,7 +453,9 @@ static int object_camera_add_exec(bContext *C, wmOperator *op) RNA_boolean_set(op->ptr, "view_align", 1); object_add_generic_invoke_options(C, op); - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; ob= ED_object_add_type(C, OB_CAMERA, loc, rot, FALSE, layer); @@ -489,7 +512,9 @@ static int object_add_surface_exec(bContext *C, wmOperator *op) float mat[4][4]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; if(obedit==NULL || obedit->type!=OB_SURF) { obedit= ED_object_add_type(C, OB_SURF, loc, rot, TRUE, layer); @@ -554,7 +579,9 @@ static int object_metaball_add_exec(bContext *C, wmOperator *op) float mat[4][4]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; if(obedit==NULL || obedit->type!=OB_MBALL) { obedit= ED_object_add_type(C, OB_MBALL, loc, rot, TRUE, layer); @@ -624,7 +651,8 @@ static int object_add_text_exec(bContext *C, wmOperator *op) float loc[3], rot[3]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; if(obedit && obedit->type==OB_FONT) return OPERATOR_CANCELLED; @@ -664,7 +692,8 @@ static int object_armature_add_exec(bContext *C, wmOperator *op) float loc[3], rot[3]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; if ((obedit==NULL) || (obedit->type != OB_ARMATURE)) { obedit= ED_object_add_type(C, OB_ARMATURE, loc, rot, TRUE, layer); @@ -719,7 +748,8 @@ static int object_lamp_add_exec(bContext *C, wmOperator *op) float loc[3], rot[3]; object_add_generic_invoke_options(C, op); - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; ob= ED_object_add_type(C, OB_LAMP, loc, rot, FALSE, layer); if(ob && ob->data) @@ -766,7 +796,8 @@ static int group_instance_add_exec(bContext *C, wmOperator *op) float loc[3], rot[3]; object_add_generic_invoke_options(C, op); - ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; if(group) { Object *ob= ED_object_add_type(C, OB_EMPTY, loc, rot, FALSE, layer); From 8faa11a9e6bba929e3c8d4b69ae956c9602d446d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 14 Jun 2010 16:58:31 +0000 Subject: [PATCH 089/674] separate loose parts was hanging on hidden verts --- source/blender/editors/mesh/editmesh.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/mesh/editmesh.c b/source/blender/editors/mesh/editmesh.c index 4545014c47f..cdcbb5cb461 100644 --- a/source/blender/editors/mesh/editmesh.c +++ b/source/blender/editors/mesh/editmesh.c @@ -1480,10 +1480,18 @@ static int mesh_separate_loose(Scene *scene, Base *editbase) } EM_clear_flag_all(em, SELECT); - - while(doit && em->verts.first) { + + while(doit) { /* Select a random vert to start with */ - EditVert *eve= em->verts.first; + EditVert *eve; + int tot; + + /* check if all verts that are visible have been done */ + for(eve=em->verts.first; eve; eve= eve->next) + if(!eve->h) break; + if(eve==NULL) break; /* only hidden verts left, quit early */ + + /* first non hidden vert */ eve->f |= SELECT; selectconnected_mesh_all(em); @@ -1493,8 +1501,14 @@ static int mesh_separate_loose(Scene *scene, Base *editbase) if((eve->f & SELECT)==0) break; if(eve==NULL) break; + tot= BLI_countlist(&em->verts); + /* and now separate */ doit= mesh_separate_selected(scene, editbase); + + /* with hidden verts this can happen */ + if(tot == BLI_countlist(&em->verts)) + break; } BKE_mesh_end_editmesh(me, em); From 148cca898b76e18d1338f6d7efb51a4b08438026 Mon Sep 17 00:00:00 2001 From: Jens Ole Wund Date: Mon, 14 Jun 2010 23:56:12 +0000 Subject: [PATCH 090/674] sofbody beziers may work nicer --- source/blender/blenkernel/BKE_softbody.h | 6 +- source/blender/blenkernel/intern/softbody.c | 989 ++++++++++---------- 2 files changed, 501 insertions(+), 494 deletions(-) diff --git a/source/blender/blenkernel/BKE_softbody.h b/source/blender/blenkernel/BKE_softbody.h index ef7fa473ad0..738fe7dde82 100644 --- a/source/blender/blenkernel/BKE_softbody.h +++ b/source/blender/blenkernel/BKE_softbody.h @@ -1,6 +1,6 @@ /** - * BKE_softbody.h - * + * BKE_softbody.h + * * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** @@ -43,7 +43,7 @@ typedef struct BodyPoint { int nofsprings; int *springs; float choke,choke2,frozen; float colball; - short flag; + short loc_flag; //reserved by locale module specific states //char octantflag; float mass; float springweight; diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c index eb7c67c8688..bbf51717e92 100644 --- a/source/blender/blenkernel/intern/softbody.c +++ b/source/blender/blenkernel/intern/softbody.c @@ -1,5 +1,5 @@ -/* softbody.c - * +/* softbody.c + * * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** @@ -32,17 +32,17 @@ ****** variables on the UI for now - float mediafrict; friction to env - float nodemass; softbody mass of *vertex* - float grav; softbody amount of gravitaion to apply - - float goalspring; softbody goal springs - float goalfrict; softbody goal springs friction - float mingoal; quick limits for goal + float mediafrict; friction to env + float nodemass; softbody mass of *vertex* + float grav; softbody amount of gravitaion to apply + + float goalspring; softbody goal springs + float goalfrict; softbody goal springs friction + float mingoal; quick limits for goal float maxgoal; - float inspring; softbody inner springs - float infrict; softbody inner springs friction + float inspring; softbody inner springs + float infrict; softbody inner springs friction ***** */ @@ -136,12 +136,12 @@ typedef struct SB_thread_context { int tot; }SB_thread_context; -#define NLF_BUILD 1 -#define NLF_SOLVE 2 +#define NLF_BUILD 1 +#define NLF_SOLVE 2 #define MID_PRESERVE 1 -#define SOFTGOALSNAP 0.999f +#define SOFTGOALSNAP 0.999f /* if bp-> goal is above make it a *forced follow original* and skip all ODE stuff for this bp removes *unnecessary* stiffnes from ODE system */ @@ -149,7 +149,11 @@ typedef struct SB_thread_context { #define BSF_INTERSECT 1 /* edge intersects collider face */ -#define SBF_DOFUZZY 1 /* edge intersects collider face */ + +/* private definitions for bodypoint states */ +#define SBF_DOFUZZY 1 /* Bodypoint do fuzzy */ +#define SBF_OUTOFCOLLISION 2 /* Bodypoint does not collide */ + #define BFF_INTERSECT 1 /* collider edge intrudes face */ #define BFF_CLOSEVERT 2 /* collider vertex repulses face */ @@ -187,15 +191,15 @@ static float sb_time_scale(Object *ob) { SoftBody *sb= ob->soft; /* is supposed to be there */ if (sb){ - return(sb->physics_speed); - /*hrms .. this could be IPO as well :) + return(sb->physics_speed); + /*hrms .. this could be IPO as well :) estimated range [0.001 sluggish slug - 100.0 very fast (i hope ODE solver can handle that)] 1 approx = a unit 1 pendulum at g = 9.8 [earth conditions] has period 65 frames - theory would give a 50 frames period .. so there must be something inaccurate .. looking for that (BM) + theory would give a 50 frames period .. so there must be something inaccurate .. looking for that (BM) */ } return (1.0f); - /* + /* this would be frames/sec independant timing assuming 25 fps is default but does not work very well with NLA return (25.0f/scene->r.frs_sec) @@ -206,10 +210,10 @@ static float sb_time_scale(Object *ob) /* helper functions for everything is animatable jow_go_for2_5 +++++++*/ /* introducing them here, because i know: steps in properties ( at frame timing ) will cause unwanted responses of the softbody system (which does inter frame calculations ) - so first 'cure' would be: interpolate linear in time .. + so first 'cure' would be: interpolate linear in time .. Q: why do i write this? A: because it happend once, that some eger coder 'streamlined' code to fail. - We DO linear interpolation for goals .. and i think we should do on animated properties as well + We DO linear interpolation for goals .. and i think we should do on animated properties as well */ /* animate sb->maxgoal,sb->mingoal */ @@ -221,7 +225,7 @@ static float _final_goal(Object *ob,BodyPoint *bp)/*jow_go_for2_5 */ if(!(ob->softflag & OB_SB_GOAL)) return (0.0f); if (sb&&bp){ if (bp->goal < 0.0f) return (0.0f); - f = sb->mingoal + bp->goal*ABS(sb->maxgoal - sb->mingoal); + f = sb->mingoal + bp->goal*ABS(sb->maxgoal - sb->mingoal); f = pow(f, 4.0f); return (f); } @@ -247,15 +251,15 @@ static float _final_mass(Object *ob,BodyPoint *bp) /******************** for each target object/face the axis aligned bounding box (AABB) is stored -faces paralell to global axes +faces paralell to global axes so only simple "value" in [min,max] ckecks are used float operations still */ /* just an ID here to reduce the prob for killing objects ** ob->sumohandle points to we should not kill :) -*/ -const int CCD_SAVETY = 190561; +*/ +const int CCD_SAVETY = 190561; typedef struct ccdf_minmax{ float minx,miny,minz,maxx,maxy,maxz; @@ -285,11 +289,11 @@ static ccd_Mesh *ccd_mesh_make(Object *ob, DerivedMesh *dm) MFace *mface=NULL; float v[3],hull; int i; - + /* first some paranoia checks */ if (!dm) return NULL; if (!dm->getNumVerts(dm) || !dm->getNumFaces(dm)) return NULL; - + pccd_M = MEM_mallocN(sizeof(ccd_Mesh),"ccd_Mesh"); pccd_M->totvert = dm->getNumVerts(dm); pccd_M->totface = dm->getNumFaces(dm); @@ -297,32 +301,32 @@ static ccd_Mesh *ccd_mesh_make(Object *ob, DerivedMesh *dm) pccd_M->bbmin[0]=pccd_M->bbmin[1]=pccd_M->bbmin[2]=1e30f; pccd_M->bbmax[0]=pccd_M->bbmax[1]=pccd_M->bbmax[2]=-1e30f; pccd_M->mprevvert=NULL; - - + + /* blow it up with forcefield ranges */ hull = MAX2(ob->pd->pdef_sbift,ob->pd->pdef_sboft); - + /* alloc and copy verts*/ pccd_M->mvert = dm->dupVertArray(dm); - /* ah yeah, put the verices to global coords once */ - /* and determine the ortho BB on the fly */ + /* ah yeah, put the verices to global coords once */ + /* and determine the ortho BB on the fly */ for(i=0; i < pccd_M->totvert; i++){ mul_m4_v3(ob->obmat, pccd_M->mvert[i].co); - + /* evaluate limits */ VECCOPY(v,pccd_M->mvert[i].co); pccd_M->bbmin[0] = MIN2(pccd_M->bbmin[0],v[0]-hull); pccd_M->bbmin[1] = MIN2(pccd_M->bbmin[1],v[1]-hull); pccd_M->bbmin[2] = MIN2(pccd_M->bbmin[2],v[2]-hull); - + pccd_M->bbmax[0] = MAX2(pccd_M->bbmax[0],v[0]+hull); pccd_M->bbmax[1] = MAX2(pccd_M->bbmax[1],v[1]+hull); pccd_M->bbmax[2] = MAX2(pccd_M->bbmax[2],v[2]+hull); - + } /* alloc and copy faces*/ pccd_M->mface = dm->dupFaceArray(dm); - + /* OBBs for idea1 */ pccd_M->mima = MEM_mallocN(sizeof(ccdf_minmax)*pccd_M->totface,"ccd_Mesh_Faces_mima"); mima = pccd_M->mima; @@ -333,7 +337,7 @@ static ccd_Mesh *ccd_mesh_make(Object *ob, DerivedMesh *dm) for(i=0; i < pccd_M->totface; i++){ mima->minx=mima->miny=mima->minz=1e30f; mima->maxx=mima->maxy=mima->maxz=-1e30f; - + VECCOPY(v,pccd_M->mvert[mface->v1].co); mima->minx = MIN2(mima->minx,v[0]-hull); mima->miny = MIN2(mima->miny,v[1]-hull); @@ -341,7 +345,7 @@ static ccd_Mesh *ccd_mesh_make(Object *ob, DerivedMesh *dm) mima->maxx = MAX2(mima->maxx,v[0]+hull); mima->maxy = MAX2(mima->maxy,v[1]+hull); mima->maxz = MAX2(mima->maxz,v[2]+hull); - + VECCOPY(v,pccd_M->mvert[mface->v2].co); mima->minx = MIN2(mima->minx,v[0]-hull); mima->miny = MIN2(mima->miny,v[1]-hull); @@ -349,7 +353,7 @@ static ccd_Mesh *ccd_mesh_make(Object *ob, DerivedMesh *dm) mima->maxx = MAX2(mima->maxx,v[0]+hull); mima->maxy = MAX2(mima->maxy,v[1]+hull); mima->maxz = MAX2(mima->maxz,v[2]+hull); - + VECCOPY(v,pccd_M->mvert[mface->v3].co); mima->minx = MIN2(mima->minx,v[0]-hull); mima->miny = MIN2(mima->miny,v[1]-hull); @@ -357,7 +361,7 @@ static ccd_Mesh *ccd_mesh_make(Object *ob, DerivedMesh *dm) mima->maxx = MAX2(mima->maxx,v[0]+hull); mima->maxy = MAX2(mima->maxy,v[1]+hull); mima->maxz = MAX2(mima->maxz,v[2]+hull); - + if(mface->v4){ VECCOPY(v,pccd_M->mvert[mface->v4].co); mima->minx = MIN2(mima->minx,v[0]-hull); @@ -368,10 +372,10 @@ static ccd_Mesh *ccd_mesh_make(Object *ob, DerivedMesh *dm) mima->maxz = MAX2(mima->maxz,v[2]+hull); } - + mima++; mface++; - + } return pccd_M; } @@ -381,7 +385,7 @@ static void ccd_mesh_update(Object *ob,ccd_Mesh *pccd_M, DerivedMesh *dm) MFace *mface=NULL; float v[3],hull; int i; - + /* first some paranoia checks */ if (!dm) return ; if (!dm->getNumVerts(dm) || !dm->getNumFaces(dm)) return ; @@ -391,27 +395,27 @@ static void ccd_mesh_update(Object *ob,ccd_Mesh *pccd_M, DerivedMesh *dm) pccd_M->bbmin[0]=pccd_M->bbmin[1]=pccd_M->bbmin[2]=1e30f; pccd_M->bbmax[0]=pccd_M->bbmax[1]=pccd_M->bbmax[2]=-1e30f; - - + + /* blow it up with forcefield ranges */ hull = MAX2(ob->pd->pdef_sbift,ob->pd->pdef_sboft); - + /* rotate current to previous */ if(pccd_M->mprevvert) MEM_freeN(pccd_M->mprevvert); pccd_M->mprevvert = pccd_M->mvert; /* alloc and copy verts*/ pccd_M->mvert = dm->dupVertArray(dm); - /* ah yeah, put the verices to global coords once */ - /* and determine the ortho BB on the fly */ + /* ah yeah, put the verices to global coords once */ + /* and determine the ortho BB on the fly */ for(i=0; i < pccd_M->totvert; i++){ mul_m4_v3(ob->obmat, pccd_M->mvert[i].co); - + /* evaluate limits */ VECCOPY(v,pccd_M->mvert[i].co); pccd_M->bbmin[0] = MIN2(pccd_M->bbmin[0],v[0]-hull); pccd_M->bbmin[1] = MIN2(pccd_M->bbmin[1],v[1]-hull); pccd_M->bbmin[2] = MIN2(pccd_M->bbmin[2],v[2]-hull); - + pccd_M->bbmax[0] = MAX2(pccd_M->bbmax[0],v[0]+hull); pccd_M->bbmax[1] = MAX2(pccd_M->bbmax[1],v[1]+hull); pccd_M->bbmax[2] = MAX2(pccd_M->bbmax[2],v[2]+hull); @@ -421,13 +425,13 @@ static void ccd_mesh_update(Object *ob,ccd_Mesh *pccd_M, DerivedMesh *dm) pccd_M->bbmin[0] = MIN2(pccd_M->bbmin[0],v[0]-hull); pccd_M->bbmin[1] = MIN2(pccd_M->bbmin[1],v[1]-hull); pccd_M->bbmin[2] = MIN2(pccd_M->bbmin[2],v[2]-hull); - + pccd_M->bbmax[0] = MAX2(pccd_M->bbmax[0],v[0]+hull); pccd_M->bbmax[1] = MAX2(pccd_M->bbmax[1],v[1]+hull); pccd_M->bbmax[2] = MAX2(pccd_M->bbmax[2],v[2]+hull); - + } - + mima = pccd_M->mima; mface = pccd_M->mface; @@ -436,7 +440,7 @@ static void ccd_mesh_update(Object *ob,ccd_Mesh *pccd_M, DerivedMesh *dm) for(i=0; i < pccd_M->totface; i++){ mima->minx=mima->miny=mima->minz=1e30f; mima->maxx=mima->maxy=mima->maxz=-1e30f; - + VECCOPY(v,pccd_M->mvert[mface->v1].co); mima->minx = MIN2(mima->minx,v[0]-hull); mima->miny = MIN2(mima->miny,v[1]-hull); @@ -444,7 +448,7 @@ static void ccd_mesh_update(Object *ob,ccd_Mesh *pccd_M, DerivedMesh *dm) mima->maxx = MAX2(mima->maxx,v[0]+hull); mima->maxy = MAX2(mima->maxy,v[1]+hull); mima->maxz = MAX2(mima->maxz,v[2]+hull); - + VECCOPY(v,pccd_M->mvert[mface->v2].co); mima->minx = MIN2(mima->minx,v[0]-hull); mima->miny = MIN2(mima->miny,v[1]-hull); @@ -452,7 +456,7 @@ static void ccd_mesh_update(Object *ob,ccd_Mesh *pccd_M, DerivedMesh *dm) mima->maxx = MAX2(mima->maxx,v[0]+hull); mima->maxy = MAX2(mima->maxy,v[1]+hull); mima->maxz = MAX2(mima->maxz,v[2]+hull); - + VECCOPY(v,pccd_M->mvert[mface->v3].co); mima->minx = MIN2(mima->minx,v[0]-hull); mima->miny = MIN2(mima->miny,v[1]-hull); @@ -460,7 +464,7 @@ static void ccd_mesh_update(Object *ob,ccd_Mesh *pccd_M, DerivedMesh *dm) mima->maxx = MAX2(mima->maxx,v[0]+hull); mima->maxy = MAX2(mima->maxy,v[1]+hull); mima->maxz = MAX2(mima->maxz,v[2]+hull); - + if(mface->v4){ VECCOPY(v,pccd_M->mvert[mface->v4].co); mima->minx = MIN2(mima->minx,v[0]-hull); @@ -479,7 +483,7 @@ static void ccd_mesh_update(Object *ob,ccd_Mesh *pccd_M, DerivedMesh *dm) mima->maxx = MAX2(mima->maxx,v[0]+hull); mima->maxy = MAX2(mima->maxy,v[1]+hull); mima->maxz = MAX2(mima->maxz,v[2]+hull); - + VECCOPY(v,pccd_M->mprevvert[mface->v2].co); mima->minx = MIN2(mima->minx,v[0]-hull); mima->miny = MIN2(mima->miny,v[1]-hull); @@ -487,7 +491,7 @@ static void ccd_mesh_update(Object *ob,ccd_Mesh *pccd_M, DerivedMesh *dm) mima->maxx = MAX2(mima->maxx,v[0]+hull); mima->maxy = MAX2(mima->maxy,v[1]+hull); mima->maxz = MAX2(mima->maxz,v[2]+hull); - + VECCOPY(v,pccd_M->mprevvert[mface->v3].co); mima->minx = MIN2(mima->minx,v[0]-hull); mima->miny = MIN2(mima->miny,v[1]-hull); @@ -495,7 +499,7 @@ static void ccd_mesh_update(Object *ob,ccd_Mesh *pccd_M, DerivedMesh *dm) mima->maxx = MAX2(mima->maxx,v[0]+hull); mima->maxy = MAX2(mima->maxy,v[1]+hull); mima->maxz = MAX2(mima->maxz,v[2]+hull); - + if(mface->v4){ VECCOPY(v,pccd_M->mprevvert[mface->v4].co); mima->minx = MIN2(mima->minx,v[0]-hull); @@ -506,10 +510,10 @@ static void ccd_mesh_update(Object *ob,ccd_Mesh *pccd_M, DerivedMesh *dm) mima->maxz = MAX2(mima->maxz,v[2]+hull); } - + mima++; mface++; - + } return ; } @@ -537,7 +541,7 @@ static void ccd_build_deflector_hash(Scene *scene, Object *vertexowner, GHash *h if(base->object->type==OB_MESH && (base->lay & vertexowner->lay)) { ob= base->object; if((vertexowner) && (ob == vertexowner)) { - /* if vertexowner is given we don't want to check collision with owner object */ + /* if vertexowner is given we don't want to check collision with owner object */ base = base->next; continue; } @@ -557,11 +561,11 @@ static void ccd_build_deflector_hash(Scene *scene, Object *vertexowner, GHash *h /* we did copy & modify all we need so give 'em away again */ dm->release(dm); - + } }/*--- only with deflecting set */ - }/* mesh && layer*/ + }/* mesh && layer*/ base = base->next; } /* while (base) */ } @@ -576,16 +580,16 @@ static void ccd_update_deflector_hash(Scene *scene, Object *vertexowner, GHash * /*Only proceed for mesh object in same layer */ if(base->object->type==OB_MESH && (base->lay & vertexowner->lay)) { ob= base->object; - if(ob == vertexowner){ - /* if vertexowner is given we don't want to check collision with owner object */ + if(ob == vertexowner){ + /* if vertexowner is given we don't want to check collision with owner object */ base = base->next; - continue; + continue; } /*+++ only with deflecting set */ if(ob->pd && ob->pd->deflect) { DerivedMesh *dm= NULL; - + if(ob->softflag & OB_SB_COLLFINAL) { /* so maybe someone wants overkill to collide with subsurfed */ dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH); } else { @@ -601,7 +605,7 @@ static void ccd_update_deflector_hash(Scene *scene, Object *vertexowner, GHash * } }/*--- only with deflecting set */ - }/* mesh && layer*/ + }/* mesh && layer*/ base = base->next; } /* while (base) */ } @@ -616,12 +620,12 @@ static int count_mesh_quads(Mesh *me) { int a,result = 0; MFace *mface= me->mface; - + if(mface) { for(a=me->totface; a>0; a--, mface++) { if(mface->v4) result++; } - } + } return result; } @@ -632,21 +636,21 @@ static void add_mesh_quad_diag_springs(Object *ob) BodyPoint *bp; BodySpring *bs, *bs_new; int a ; - + if (ob->soft){ int nofquads; //float s_shear = ob->soft->shearstiff*ob->soft->shearstiff; - + nofquads = count_mesh_quads(me); if (nofquads) { /* resize spring-array to hold additional quad springs */ bs_new= MEM_callocN( (ob->soft->totspring + nofquads *2 )*sizeof(BodySpring), "bodyspring"); memcpy(bs_new,ob->soft->bspring,(ob->soft->totspring )*sizeof(BodySpring)); - + if(ob->soft->bspring) MEM_freeN(ob->soft->bspring); /* do this before reassigning the pointer or have a 1st class memory leak */ - ob->soft->bspring = bs_new; - + ob->soft->bspring = bs_new; + /* fill the tail */ a = 0; bs = bs_new+ob->soft->totspring; @@ -662,11 +666,11 @@ static void add_mesh_quad_diag_springs(Object *ob) bs->v2= mface->v4; bs->springtype =SB_STIFFQUAD; bs++; - + } - } + } } - + /* now we can announce new springs */ ob->soft->totspring += nofquads *2; } @@ -677,7 +681,7 @@ static void add_2nd_order_roller(Object *ob,float stiffness,int *counter, int ad { /*assume we have a softbody*/ SoftBody *sb= ob->soft; /* is supposed to be there */ - BodyPoint *bp,*bpo; + BodyPoint *bp,*bpo; BodySpring *bs,*bs2,*bs3= NULL; int a,b,c,notthis= 0,v0; if (!sb->bspring){return;} /* we are 2nd order here so 1rst should have been build :) */ @@ -692,7 +696,7 @@ static void add_2nd_order_roller(Object *ob,float stiffness,int *counter, int ad bs = sb->bspring + bp->springs[b-1]; /*nasty thing here that springs have two ends so here we have to make sure we examine the other */ - if (( v0 == bs->v1) ){ + if (( v0 == bs->v1) ){ bpo =sb->bpoint+bs->v2; notthis = bs->v2; } @@ -700,7 +704,7 @@ static void add_2nd_order_roller(Object *ob,float stiffness,int *counter, int ad if (( v0 == bs->v2) ){ bpo =sb->bpoint+bs->v1; notthis = bs->v1; - } + } else {printf("oops we should not get here - add_2nd_order_springs");} } if (bpo){/* so now we have a 2nd order humpdidump */ @@ -726,9 +730,9 @@ static void add_2nd_order_roller(Object *ob,float stiffness,int *counter, int ad } } - + } - + } /*scan for neighborhood done*/ } @@ -740,17 +744,17 @@ static void add_2nd_order_springs(Object *ob,float stiffness) int counter = 0; BodySpring *bs_new; stiffness *=stiffness; - + add_2nd_order_roller(ob,stiffness,&counter,0); /* counting */ if (counter) { /* resize spring-array to hold additional springs */ bs_new= MEM_callocN( (ob->soft->totspring + counter )*sizeof(BodySpring), "bodyspring"); memcpy(bs_new,ob->soft->bspring,(ob->soft->totspring )*sizeof(BodySpring)); - + if(ob->soft->bspring) - MEM_freeN(ob->soft->bspring); - ob->soft->bspring = bs_new; - + MEM_freeN(ob->soft->bspring); + ob->soft->bspring = bs_new; + add_2nd_order_roller(ob,stiffness,&counter,1); /* adding */ ob->soft->totspring +=counter ; } @@ -759,7 +763,7 @@ static void add_2nd_order_springs(Object *ob,float stiffness) static void add_bp_springlist(BodyPoint *bp,int springID) { int *newlist; - + if (bp->springs == NULL) { bp->springs = MEM_callocN( sizeof(int), "bpsprings"); bp->springs[0] = springID; @@ -781,35 +785,35 @@ it is O(N^2) so scanning for springs every iteration is too expensive static void build_bps_springlist(Object *ob) { SoftBody *sb= ob->soft; /* is supposed to be there */ - BodyPoint *bp; - BodySpring *bs; + BodyPoint *bp; + BodySpring *bs; int a,b; - + if (sb==NULL) return; /* paranoya check */ - + for(a=sb->totpoint, bp= sb->bpoint; a>0; a--, bp++) { /* throw away old list */ if (bp->springs) { MEM_freeN(bp->springs); bp->springs=NULL; } - /* scan for attached inner springs */ + /* scan for attached inner springs */ for(b=sb->totspring, bs= sb->bspring; b>0; b--, bs++) { - if (( (sb->totpoint-a) == bs->v1) ){ + if (( (sb->totpoint-a) == bs->v1) ){ add_bp_springlist(bp,sb->totspring -b); } - if (( (sb->totpoint-a) == bs->v2) ){ + if (( (sb->totpoint-a) == bs->v2) ){ add_bp_springlist(bp,sb->totspring -b); } }/*for springs*/ - }/*for bp*/ + }/*for bp*/ } static void calculate_collision_balls(Object *ob) { SoftBody *sb= ob->soft; /* is supposed to be there */ - BodyPoint *bp; - BodySpring *bs; + BodyPoint *bp; + BodySpring *bs; int a,b,akku_count; float min,max,akku; @@ -850,12 +854,12 @@ static void calculate_collision_balls(Object *ob) } } else bp->colball=0; - }/*for bp*/ + }/*for bp*/ } /* creates new softbody if didn't exist yet, makes new points and springs arrays */ -static void renew_softbody(Scene *scene, Object *ob, int totpoint, int totspring) +static void renew_softbody(Scene *scene, Object *ob, int totpoint, int totspring) { SoftBody *sb; int i; @@ -864,38 +868,38 @@ static void renew_softbody(Scene *scene, Object *ob, int totpoint, int totspring else free_softbody_intern(ob->soft); sb= ob->soft; softflag=ob->softflag; - + if(totpoint) { sb->totpoint= totpoint; sb->totspring= totspring; - + sb->bpoint= MEM_mallocN( totpoint*sizeof(BodyPoint), "bodypoint"); - if(totspring) + if(totspring) sb->bspring= MEM_mallocN( totspring*sizeof(BodySpring), "bodyspring"); /* initialise BodyPoint array */ for (i=0; ibpoint[i]; - + /* hum as far as i see this is overridden by _final_goal() now jow_go_for2_5 */ /* sadly breaks compatibility with older versions */ - /* but makes goals behave the same for meshes, lattices and curves */ + /* but makes goals behave the same for meshes, lattices and curves */ if(softflag & OB_SB_GOAL) { bp->goal= sb->defgoal; } - else { - bp->goal= 0.0f; + else { + bp->goal= 0.0f; /* so this will definily be below SOFTGOALSNAP */ } - + bp->nofsprings= 0; bp->springs= NULL; bp->choke = 0.0f; bp->choke2 = 0.0f; bp->frozen = 1.0f; bp->colball = 0.0f; - bp->flag = 0; + bp->loc_flag = 0; bp->springweight = 1.0f; bp->mass = 1.0f; } @@ -912,7 +916,7 @@ static void free_softbody_baked(SoftBody *sb) if(key) MEM_freeN(key); } if(sb->keys) MEM_freeN(sb->keys); - + sb->keys= NULL; sb->totkey= 0; } @@ -934,7 +938,7 @@ static void free_scratch(SoftBody *sb) MEM_freeN(sb->scratch); sb->scratch = NULL; } - + } /* only frees internal data */ @@ -943,19 +947,19 @@ static void free_softbody_intern(SoftBody *sb) if(sb) { int a; BodyPoint *bp; - + if(sb->bpoint){ for(a=sb->totpoint, bp= sb->bpoint; a>0; a--, bp++) { - /* free spring list */ + /* free spring list */ if (bp->springs != NULL) { MEM_freeN(bp->springs); } } MEM_freeN(sb->bpoint); } - + if(sb->bspring) MEM_freeN(sb->bspring); - + sb->totpoint= sb->totspring= 0; sb->bpoint= NULL; sb->bspring= NULL; @@ -968,28 +972,28 @@ static void free_softbody_intern(SoftBody *sb) /* ************ dynamics ********** */ -/* the most general (micro physics correct) way to do collision -** (only needs the current particle position) +/* the most general (micro physics correct) way to do collision +** (only needs the current particle position) ** -** it actually checks if the particle intrudes a short range force field generated +** it actually checks if the particle intrudes a short range force field generated ** by the faces of the target object and returns a force to drive the particel out ** the strenght of the field grows exponetially if the particle is on the 'wrong' side of the face ** 'wrong' side : projection to the face normal is negative (all referred to a vertex in the face) ** -** flaw of this: 'fast' particles as well as 'fast' colliding faces -** give a 'tunnel' effect such that the particle passes through the force field -** without ever 'seeing' it +** flaw of this: 'fast' particles as well as 'fast' colliding faces +** give a 'tunnel' effect such that the particle passes through the force field +** without ever 'seeing' it ** this is fully compliant to heisenberg: h >= fuzzy(location) * fuzzy(time) ** besides our h is way larger than in QM because forces propagate way slower here ** we have to deal with fuzzy(time) in the range of 1/25 seconds (typical frame rate) -** yup collision targets are not known here any better +** yup collision targets are not known here any better ** and 1/25 second is looong compared to real collision events -** Q: why not use 'simple' collision here like bouncing back a particle +** Q: why not use 'simple' collision here like bouncing back a particle ** --> reverting is velocity on the face normal -** A: because our particles are not alone here -** and need to tell their neighbours exactly what happens via spring forces +** A: because our particles are not alone here +** and need to tell their neighbours exactly what happens via spring forces ** unless sbObjectStep( .. ) is called on sub frame timing level -** BTW that also questions the use of a 'implicit' solvers on softbodies +** BTW that also questions the use of a 'implicit' solvers on softbodies ** since that would only valid for 'slow' moving collision targets and dito particles */ @@ -1006,10 +1010,10 @@ static void Vec3PlusStVec(float *v, float s, float *v1) static int are_there_deflectors(Scene *scene, unsigned int layer) { Base *base; - + for(base = scene->base.first; base; base= base->next) { if( (base->lay & layer) && base->object->pd) { - if(base->object->pd->deflect) + if(base->object->pd->deflect) return 1; } } @@ -1055,17 +1059,17 @@ static int sb_detect_aabb_collisionCached( float force[3], unsigned int par_laye mprevvert= ccdm->mprevvert; mima= ccdm->mima; a = ccdm->totface; - - if ((aabbmax[0] < ccdm->bbmin[0]) || + + if ((aabbmax[0] < ccdm->bbmin[0]) || (aabbmax[1] < ccdm->bbmin[1]) || (aabbmax[2] < ccdm->bbmin[2]) || - (aabbmin[0] > ccdm->bbmax[0]) || - (aabbmin[1] > ccdm->bbmax[1]) || + (aabbmin[0] > ccdm->bbmax[0]) || + (aabbmin[1] > ccdm->bbmax[1]) || (aabbmin[2] > ccdm->bbmax[2]) ) { - /* boxes dont intersect */ + /* boxes dont intersect */ BLI_ghashIterator_step(ihash); - continue; - } + continue; + } /* so now we have the 2 boxes overlapping */ /* forces actually not used */ @@ -1076,19 +1080,19 @@ static int sb_detect_aabb_collisionCached( float force[3], unsigned int par_laye /*aye that should be cached*/ printf("missing cache error \n"); BLI_ghashIterator_step(ihash); - continue; + continue; } } /* if(ob->pd && ob->pd->deflect) */ BLI_ghashIterator_step(ihash); } /* while () */ BLI_ghashIterator_free(ihash); - return deflected; + return deflected; } /* --- the aabb section*/ /* +++ the face external section*/ -static int sb_detect_face_pointCached(float face_v1[3],float face_v2[3],float face_v3[3],float *damp, +static int sb_detect_face_pointCached(float face_v1[3],float face_v2[3],float face_v3[3],float *damp, float force[3], unsigned int par_layer,struct Object *vertexowner,float time) { Object *ob; @@ -1124,33 +1128,33 @@ static int sb_detect_face_pointCached(float face_v1[3],float face_v2[3],float fa MVert *mprevvert= NULL; if(ccdm){ mvert= ccdm->mvert; - a = ccdm->totvert; - mprevvert= ccdm->mprevvert; + a = ccdm->totvert; + mprevvert= ccdm->mprevvert; outerfacethickness =ob->pd->pdef_sboft; - if ((aabbmax[0] < ccdm->bbmin[0]) || + if ((aabbmax[0] < ccdm->bbmin[0]) || (aabbmax[1] < ccdm->bbmin[1]) || (aabbmax[2] < ccdm->bbmin[2]) || - (aabbmin[0] > ccdm->bbmax[0]) || - (aabbmin[1] > ccdm->bbmax[1]) || + (aabbmin[0] > ccdm->bbmax[0]) || + (aabbmin[1] > ccdm->bbmax[1]) || (aabbmin[2] > ccdm->bbmax[2]) ) { - /* boxes dont intersect */ + /* boxes dont intersect */ BLI_ghashIterator_step(ihash); - continue; - } + continue; + } } else{ /*aye that should be cached*/ printf("missing cache error \n"); BLI_ghashIterator_step(ihash); - continue; + continue; } /* use mesh*/ if (mvert) { while(a){ - VECCOPY(nv1,mvert[a-1].co); + VECCOPY(nv1,mvert[a-1].co); if(mprevvert){ mul_v3_fl(nv1,time); Vec3PlusStVec(nv1,(1.0f-time),mprevvert[a-1].co); @@ -1182,11 +1186,11 @@ static int sb_detect_face_pointCached(float face_v1[3],float face_v2[3],float fa BLI_ghashIterator_step(ihash); } /* while () */ BLI_ghashIterator_free(ihash); - return deflected; + return deflected; } -static int sb_detect_face_collisionCached(float face_v1[3],float face_v2[3],float face_v3[3],float *damp, +static int sb_detect_face_collisionCached(float face_v1[3],float face_v2[3],float face_v3[3],float *damp, float force[3], unsigned int par_layer,struct Object *vertexowner,float time) { Object *ob; @@ -1221,36 +1225,36 @@ static int sb_detect_face_collisionCached(float face_v1[3],float face_v2[3],floa mprevvert= ccdm->mprevvert; mima= ccdm->mima; a = ccdm->totface; - - if ((aabbmax[0] < ccdm->bbmin[0]) || + + if ((aabbmax[0] < ccdm->bbmin[0]) || (aabbmax[1] < ccdm->bbmin[1]) || (aabbmax[2] < ccdm->bbmin[2]) || - (aabbmin[0] > ccdm->bbmax[0]) || - (aabbmin[1] > ccdm->bbmax[1]) || + (aabbmin[0] > ccdm->bbmax[0]) || + (aabbmin[1] > ccdm->bbmax[1]) || (aabbmin[2] > ccdm->bbmax[2]) ) { - /* boxes dont intersect */ + /* boxes dont intersect */ BLI_ghashIterator_step(ihash); - continue; - } + continue; + } } else{ /*aye that should be cached*/ printf("missing cache error \n"); BLI_ghashIterator_step(ihash); - continue; + continue; } /* use mesh*/ while (a--) { if ( - (aabbmax[0] < mima->minx) || - (aabbmin[0] > mima->maxx) || + (aabbmax[0] < mima->minx) || + (aabbmin[0] > mima->maxx) || (aabbmax[1] < mima->miny) || - (aabbmin[1] > mima->maxy) || + (aabbmin[1] > mima->maxy) || (aabbmax[2] < mima->minz) || - (aabbmin[2] > mima->maxz) + (aabbmin[2] > mima->maxz) ) { mface++; mima++; @@ -1260,7 +1264,7 @@ static int sb_detect_face_collisionCached(float face_v1[3],float face_v2[3],floa if (mvert){ - VECCOPY(nv1,mvert[mface->v1].co); + VECCOPY(nv1,mvert[mface->v1].co); VECCOPY(nv2,mvert[mface->v2].co); VECCOPY(nv3,mvert[mface->v3].co); if (mface->v4){ @@ -1269,18 +1273,18 @@ static int sb_detect_face_collisionCached(float face_v1[3],float face_v2[3],floa if (mprevvert){ mul_v3_fl(nv1,time); Vec3PlusStVec(nv1,(1.0f-time),mprevvert[mface->v1].co); - + mul_v3_fl(nv2,time); Vec3PlusStVec(nv2,(1.0f-time),mprevvert[mface->v2].co); - + mul_v3_fl(nv3,time); Vec3PlusStVec(nv3,(1.0f-time),mprevvert[mface->v3].co); - + if (mface->v4){ mul_v3_fl(nv4,time); Vec3PlusStVec(nv4,(1.0f-time),mprevvert[mface->v4].co); } - } + } } /* switch origin to be nv2*/ @@ -1288,7 +1292,7 @@ static int sb_detect_face_collisionCached(float face_v1[3],float face_v2[3],floa VECSUB(edge2, nv3, nv2); cross_v3_v3v3(d_nvect, edge2, edge1); normalize_v3(d_nvect); - if ( + if ( isect_line_tri_v3(nv1, nv2, face_v1, face_v2, face_v3, &t, NULL) || isect_line_tri_v3(nv2, nv3, face_v1, face_v2, face_v3, &t, NULL) || isect_line_tri_v3(nv3, nv1, face_v1, face_v2, face_v3, &t, NULL) ){ @@ -1299,10 +1303,10 @@ static int sb_detect_face_collisionCached(float face_v1[3],float face_v2[3],floa if (mface->v4){ /* quad */ /* switch origin to be nv4 */ VECSUB(edge1, nv3, nv4); - VECSUB(edge2, nv1, nv4); + VECSUB(edge2, nv1, nv4); cross_v3_v3v3(d_nvect, edge2, edge1); - normalize_v3(d_nvect); - if ( + normalize_v3(d_nvect); + if ( /* isect_line_tri_v3(nv1, nv3, face_v1, face_v2, face_v3, &t, NULL) || we did that edge already */ isect_line_tri_v3(nv3, nv4, face_v1, face_v2, face_v3, &t, NULL) || @@ -1313,13 +1317,13 @@ static int sb_detect_face_collisionCached(float face_v1[3],float face_v2[3],floa } } mface++; - mima++; - }/* while a */ + mima++; + }/* while a */ } /* if(ob->pd && ob->pd->deflect) */ BLI_ghashIterator_step(ihash); } /* while () */ BLI_ghashIterator_free(ihash); - return deflected; + return deflected; } @@ -1329,20 +1333,20 @@ static void scan_for_ext_face_forces(Object *ob,float timenow) SoftBody *sb = ob->soft; BodyFace *bf; int a; - float damp=0.0f,choke=1.0f; + float damp=0.0f,choke=1.0f; float tune = -10.0f; float feedback[3]; - + if (sb && sb->scratch->totface){ - - + + bf = sb->scratch->bodyface; for(a=0; ascratch->totface; a++, bf++) { - bf->ext_force[0]=bf->ext_force[1]=bf->ext_force[2]=0.0f; + bf->ext_force[0]=bf->ext_force[1]=bf->ext_force[2]=0.0f; /*+++edges intruding*/ - bf->flag &= ~BFF_INTERSECT; + bf->flag &= ~BFF_INTERSECT; feedback[0]=feedback[1]=feedback[2]=0.0f; - if (sb_detect_face_collisionCached(sb->bpoint[bf->v1].pos,sb->bpoint[bf->v2].pos, sb->bpoint[bf->v3].pos, + if (sb_detect_face_collisionCached(sb->bpoint[bf->v1].pos,sb->bpoint[bf->v2].pos, sb->bpoint[bf->v3].pos, &damp, feedback, ob->lay ,ob , timenow)){ Vec3PlusStVec(sb->bpoint[bf->v1].force,tune,feedback); Vec3PlusStVec(sb->bpoint[bf->v2].force,tune,feedback); @@ -1353,7 +1357,7 @@ static void scan_for_ext_face_forces(Object *ob,float timenow) } feedback[0]=feedback[1]=feedback[2]=0.0f; - if ((bf->v4) && (sb_detect_face_collisionCached(sb->bpoint[bf->v1].pos,sb->bpoint[bf->v3].pos, sb->bpoint[bf->v4].pos, + if ((bf->v4) && (sb_detect_face_collisionCached(sb->bpoint[bf->v1].pos,sb->bpoint[bf->v3].pos, sb->bpoint[bf->v4].pos, &damp, feedback, ob->lay ,ob , timenow))){ Vec3PlusStVec(sb->bpoint[bf->v1].force,tune,feedback); Vec3PlusStVec(sb->bpoint[bf->v3].force,tune,feedback); @@ -1369,7 +1373,7 @@ static void scan_for_ext_face_forces(Object *ob,float timenow) bf->flag &= ~BFF_CLOSEVERT; tune = -1.0f; feedback[0]=feedback[1]=feedback[2]=0.0f; - if (sb_detect_face_pointCached(sb->bpoint[bf->v1].pos,sb->bpoint[bf->v2].pos, sb->bpoint[bf->v3].pos, + if (sb_detect_face_pointCached(sb->bpoint[bf->v1].pos,sb->bpoint[bf->v2].pos, sb->bpoint[bf->v3].pos, &damp, feedback, ob->lay ,ob , timenow)){ Vec3PlusStVec(sb->bpoint[bf->v1].force,tune,feedback); Vec3PlusStVec(sb->bpoint[bf->v2].force,tune,feedback); @@ -1380,7 +1384,7 @@ static void scan_for_ext_face_forces(Object *ob,float timenow) } feedback[0]=feedback[1]=feedback[2]=0.0f; - if ((bf->v4) && (sb_detect_face_pointCached(sb->bpoint[bf->v1].pos,sb->bpoint[bf->v3].pos, sb->bpoint[bf->v4].pos, + if ((bf->v4) && (sb_detect_face_pointCached(sb->bpoint[bf->v1].pos,sb->bpoint[bf->v3].pos, sb->bpoint[bf->v4].pos, &damp, feedback, ob->lay ,ob , timenow))){ Vec3PlusStVec(sb->bpoint[bf->v1].force,tune,feedback); Vec3PlusStVec(sb->bpoint[bf->v3].force,tune,feedback); @@ -1402,7 +1406,7 @@ static void scan_for_ext_face_forces(Object *ob,float timenow) if (bf->v4){ sb->bpoint[bf->v2].choke2=MAX2(sb->bpoint[bf->v2].choke2,choke); } - } + } } } } @@ -1412,7 +1416,7 @@ static void scan_for_ext_face_forces(Object *ob,float timenow) /* +++ the spring external section*/ -static int sb_detect_edge_collisionCached(float edge_v1[3],float edge_v2[3],float *damp, +static int sb_detect_edge_collisionCached(float edge_v1[3],float edge_v2[3],float *damp, float force[3], unsigned int par_layer,struct Object *vertexowner,float time) { Object *ob; @@ -1449,36 +1453,36 @@ static int sb_detect_edge_collisionCached(float edge_v1[3],float edge_v2[3],floa mprevvert= ccdm->mprevvert; mima= ccdm->mima; a = ccdm->totface; - - if ((aabbmax[0] < ccdm->bbmin[0]) || + + if ((aabbmax[0] < ccdm->bbmin[0]) || (aabbmax[1] < ccdm->bbmin[1]) || (aabbmax[2] < ccdm->bbmin[2]) || - (aabbmin[0] > ccdm->bbmax[0]) || - (aabbmin[1] > ccdm->bbmax[1]) || + (aabbmin[0] > ccdm->bbmax[0]) || + (aabbmin[1] > ccdm->bbmax[1]) || (aabbmin[2] > ccdm->bbmax[2]) ) { - /* boxes dont intersect */ + /* boxes dont intersect */ BLI_ghashIterator_step(ihash); - continue; - } + continue; + } } else{ /*aye that should be cached*/ printf("missing cache error \n"); BLI_ghashIterator_step(ihash); - continue; + continue; } /* use mesh*/ while (a--) { if ( - (aabbmax[0] < mima->minx) || - (aabbmin[0] > mima->maxx) || + (aabbmax[0] < mima->minx) || + (aabbmin[0] > mima->maxx) || (aabbmax[1] < mima->miny) || - (aabbmin[1] > mima->maxy) || + (aabbmin[1] > mima->maxy) || (aabbmax[2] < mima->minz) || - (aabbmin[2] > mima->maxz) + (aabbmin[2] > mima->maxz) ) { mface++; mima++; @@ -1488,7 +1492,7 @@ static int sb_detect_edge_collisionCached(float edge_v1[3],float edge_v2[3],floa if (mvert){ - VECCOPY(nv1,mvert[mface->v1].co); + VECCOPY(nv1,mvert[mface->v1].co); VECCOPY(nv2,mvert[mface->v2].co); VECCOPY(nv3,mvert[mface->v3].co); if (mface->v4){ @@ -1497,18 +1501,18 @@ static int sb_detect_edge_collisionCached(float edge_v1[3],float edge_v2[3],floa if (mprevvert){ mul_v3_fl(nv1,time); Vec3PlusStVec(nv1,(1.0f-time),mprevvert[mface->v1].co); - + mul_v3_fl(nv2,time); Vec3PlusStVec(nv2,(1.0f-time),mprevvert[mface->v2].co); - + mul_v3_fl(nv3,time); Vec3PlusStVec(nv3,(1.0f-time),mprevvert[mface->v3].co); - + if (mface->v4){ mul_v3_fl(nv4,time); Vec3PlusStVec(nv4,(1.0f-time),mprevvert[mface->v4].co); } - } + } } /* switch origin to be nv2*/ @@ -1535,7 +1539,7 @@ static int sb_detect_edge_collisionCached(float edge_v1[3],float edge_v2[3],floa VECSUB(edge2, nv1, nv4); cross_v3_v3v3(d_nvect, edge2, edge1); - normalize_v3(d_nvect); + normalize_v3(d_nvect); if (isect_line_tri_v3( edge_v1, edge_v2,nv1, nv3, nv4, &t, NULL)){ float v1[3],v2[3]; float intrusiondepth,i1,i2; @@ -1552,26 +1556,26 @@ static int sb_detect_edge_collisionCached(float edge_v1[3],float edge_v2[3],floa } } mface++; - mima++; - }/* while a */ + mima++; + }/* while a */ } /* if(ob->pd && ob->pd->deflect) */ BLI_ghashIterator_step(ihash); } /* while () */ BLI_ghashIterator_free(ihash); - return deflected; + return deflected; } static void _scan_for_ext_spring_forces(Scene *scene, Object *ob, float timenow, int ifirst, int ilast, struct ListBase *do_effector) { SoftBody *sb = ob->soft; int a; - float damp; + float damp; float feedback[3]; if (sb && sb->totspring){ for(a=ifirst; abspring[a]; - bs->ext_force[0]=bs->ext_force[1]=bs->ext_force[2]=0.0f; + bs->ext_force[0]=bs->ext_force[1]=bs->ext_force[2]=0.0f; feedback[0]=feedback[1]=feedback[2]=0.0f; bs->flag &= ~BSF_INTERSECT; @@ -1590,10 +1594,10 @@ static void _scan_for_ext_spring_forces(Scene *scene, Object *ob, float timenow, /* ---- springs colliding */ /* +++ springs seeing wind ... n stuff depending on their orientation*/ - /* note we don't use sb->mediafrict but use sb->aeroedge for magnitude of effect*/ + /* note we don't use sb->mediafrict but use sb->aeroedge for magnitude of effect*/ if(sb->aeroedge){ float vel[3],sp[3],pr[3],force[3]; - float f,windfactor = 0.25f; + float f,windfactor = 0.25f; /*see if we have wind*/ if(do_effector) { EffectedPoint epoint; @@ -1604,7 +1608,7 @@ static void _scan_for_ext_spring_forces(Scene *scene, Object *ob, float timenow, pd_point_from_soft(scene, pos, vel, -1, &epoint); pdDoEffectors(do_effector, NULL, sb->effector_weights, &epoint, force, speed); - mul_v3_fl(speed,windfactor); + mul_v3_fl(speed,windfactor); add_v3_v3(vel, speed); } /* media in rest */ @@ -1614,7 +1618,7 @@ static void _scan_for_ext_spring_forces(Scene *scene, Object *ob, float timenow, f = normalize_v3(vel); f = -0.0001f*f*f*sb->aeroedge; /* (todo) add a nice angle dependant function done for now BUT */ - /* still there could be some nice drag/lift function, but who needs it */ + /* still there could be some nice drag/lift function, but who needs it */ VECSUB(sp, sb->bpoint[bs->v1].pos , sb->bpoint[bs->v2].pos); project_v3_v3v3(pr,vel,sp); @@ -1624,7 +1628,7 @@ static void _scan_for_ext_spring_forces(Scene *scene, Object *ob, float timenow, normalize_v3(sp); Vec3PlusStVec(bs->ext_force,f*(1.0f-ABS(dot_v3v3(vel,sp))),vel); } - else{ + else{ Vec3PlusStVec(bs->ext_force,f,vel); // to keep compatible with 2.45 release files } } @@ -1638,8 +1642,8 @@ static void _scan_for_ext_spring_forces(Scene *scene, Object *ob, float timenow, static void scan_for_ext_spring_forces(Scene *scene, Object *ob, float timenow) { SoftBody *sb = ob->soft; - ListBase *do_effector = NULL; - + ListBase *do_effector = NULL; + do_effector = pdInitEffectors(scene, ob, NULL, sb->effector_weights); if (sb){ _scan_for_ext_spring_forces(scene, ob, timenow, 0, sb->totspring, do_effector); @@ -1652,11 +1656,11 @@ static void *exec_scan_for_ext_spring_forces(void *data) SB_thread_context *pctx = (SB_thread_context*)data; _scan_for_ext_spring_forces(pctx->scene, pctx->ob, pctx->timenow, pctx->ifirst, pctx->ilast, pctx->do_effector); return 0; -} +} static void sb_sfesf_threads_run(Scene *scene, struct Object *ob, float timenow,int totsprings,int *ptr_to_break_func()) { - ListBase *do_effector = NULL; + ListBase *do_effector = NULL; ListBase threads; SB_thread_context *sb_threads; int i, totthread,left,dec; @@ -1680,16 +1684,16 @@ static void sb_sfesf_threads_run(Scene *scene, struct Object *ob, float timenow, dec = totsprings/totthread +1; for(i=0; i0){ sb_threads[i].ifirst = left; } else - sb_threads[i].ifirst = 0; + sb_threads[i].ifirst = 0; sb_threads[i].do_effector = do_effector; sb_threads[i].do_deflector = 0;// not used here sb_threads[i].fieldfactor = 0.0f;// not used here @@ -1709,7 +1713,7 @@ static void sb_sfesf_threads_run(Scene *scene, struct Object *ob, float timenow, exec_scan_for_ext_spring_forces(&sb_threads[0]); /* clean up */ MEM_freeN(sb_threads); - + pdEndEffectors(&do_effector); } @@ -1733,10 +1737,10 @@ static int choose_winner(float*w, float* pos,float*a,float*b,float*c,float*ca,fl mindist = cp; winner =3; } - switch (winner){ - case 1: VECCOPY(w,ca); break; - case 2: VECCOPY(w,cb); break; - case 3: VECCOPY(w,cc); + switch (winner){ + case 1: VECCOPY(w,ca); break; + case 2: VECCOPY(w,cb); break; + case 3: VECCOPY(w,cc); } return(winner); } @@ -1751,7 +1755,7 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3], GHash *hash; GHashIterator *ihash; float nv1[3], nv2[3], nv3[3], nv4[3], edge1[3], edge2[3],d_nvect[3], dv1[3],ve[3],avel[3]={0.0,0.0,0.0}, - vv1[3], vv2[3], vv3[3], vv4[3], coledge[3]={0.0f, 0.0f, 0.0f}, mindistedge = 1000.0f, + vv1[3], vv2[3], vv3[3], vv4[3], coledge[3]={0.0f, 0.0f, 0.0f}, mindistedge = 1000.0f, outerforceaccu[3],innerforceaccu[3], facedist,n_mag,force_mag_norm,minx,miny,minz,maxx,maxy,maxz, innerfacethickness = -0.5f, outerfacethickness = 0.2f, @@ -1782,30 +1786,30 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3], mima= ccdm->mima; a = ccdm->totface; - minx =ccdm->bbmin[0]; - miny =ccdm->bbmin[1]; + minx =ccdm->bbmin[0]; + miny =ccdm->bbmin[1]; minz =ccdm->bbmin[2]; - maxx =ccdm->bbmax[0]; - maxy =ccdm->bbmax[1]; - maxz =ccdm->bbmax[2]; + maxx =ccdm->bbmax[0]; + maxy =ccdm->bbmax[1]; + maxz =ccdm->bbmax[2]; - if ((opco[0] < minx) || + if ((opco[0] < minx) || (opco[1] < miny) || (opco[2] < minz) || - (opco[0] > maxx) || - (opco[1] > maxy) || + (opco[0] > maxx) || + (opco[1] > maxy) || (opco[2] > maxz) ) { - /* outside the padded boundbox --> collision object is too far away */ + /* outside the padded boundbox --> collision object is too far away */ BLI_ghashIterator_step(ihash); - continue; - } + continue; + } } else{ /*aye that should be cached*/ printf("missing cache error \n"); BLI_ghashIterator_step(ihash); - continue; + continue; } /* do object level stuff */ @@ -1819,12 +1823,12 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3], /* use mesh*/ while (a--) { if ( - (opco[0] < mima->minx) || - (opco[0] > mima->maxx) || + (opco[0] < mima->minx) || + (opco[0] > mima->maxx) || (opco[1] < mima->miny) || - (opco[1] > mima->maxy) || + (opco[1] > mima->maxy) || (opco[2] < mima->minz) || - (opco[2] > mima->maxz) + (opco[2] > mima->maxz) ) { mface++; mima++; @@ -1833,7 +1837,7 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3], if (mvert){ - VECCOPY(nv1,mvert[mface->v1].co); + VECCOPY(nv1,mvert[mface->v1].co); VECCOPY(nv2,mvert[mface->v2].co); VECCOPY(nv3,mvert[mface->v3].co); if (mface->v4){ @@ -1842,7 +1846,7 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3], if (mprevvert){ /* grab the average speed of the collider vertices - before we spoil nvX + before we spoil nvX humm could be done once a SB steps but then we' need to store that too since the AABB reduced propabitlty to get here drasticallly it might be a nice tradeof CPU <--> memory @@ -1867,9 +1871,9 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3], mul_v3_fl(nv4,time); Vec3PlusStVec(nv4,(1.0f-time),mprevvert[mface->v4].co); } - } + } } - + /* switch origin to be nv2*/ VECSUB(edge1, nv1, nv2); VECSUB(edge2, nv3, nv2); @@ -1881,7 +1885,7 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3], // so rules are // - if ((facedist > innerfacethickness) && (facedist < outerfacethickness)){ + if ((facedist > innerfacethickness) && (facedist < outerfacethickness)){ if (isect_point_tri_prism_v3(opco, nv1, nv2, nv3) ){ force_mag_norm =(float)exp(-ee*facedist); if (facedist > outerfacethickness*ff) @@ -1905,7 +1909,7 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3], *intrusion += facedist; ci++; } - } + } if (mface->v4){ /* quad */ /* switch origin to be nv4 */ VECSUB(edge1, nv3, nv4); @@ -1948,7 +1952,7 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3], float dist; closest_to_line_segment_v3(ve, opco, nv1, nv2); - VECSUB(ve,opco,ve); + VECSUB(ve,opco,ve); dist = normalize_v3(ve); if ((dist < outerfacethickness)&&(dist < mindistedge )){ VECCOPY(coledge,ve); @@ -1957,7 +1961,7 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3], } closest_to_line_segment_v3(ve, opco, nv2, nv3); - VECSUB(ve,opco,ve); + VECSUB(ve,opco,ve); dist = normalize_v3(ve); if ((dist < outerfacethickness)&&(dist < mindistedge )){ VECCOPY(coledge,ve); @@ -1966,7 +1970,7 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3], } closest_to_line_segment_v3(ve, opco, nv3, nv1); - VECSUB(ve,opco,ve); + VECSUB(ve,opco,ve); dist = normalize_v3(ve); if ((dist < outerfacethickness)&&(dist < mindistedge )){ VECCOPY(coledge,ve); @@ -1975,7 +1979,7 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3], } if (mface->v4){ /* quad */ closest_to_line_segment_v3(ve, opco, nv3, nv4); - VECSUB(ve,opco,ve); + VECSUB(ve,opco,ve); dist = normalize_v3(ve); if ((dist < outerfacethickness)&&(dist < mindistedge )){ VECCOPY(coledge,ve); @@ -1984,22 +1988,22 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3], } closest_to_line_segment_v3(ve, opco, nv1, nv4); - VECSUB(ve,opco,ve); + VECSUB(ve,opco,ve); dist = normalize_v3(ve); if ((dist < outerfacethickness)&&(dist < mindistedge )){ VECCOPY(coledge,ve); mindistedge = dist, deflected=1; } - + } } } mface++; - mima++; - }/* while a */ + mima++; + }/* while a */ } /* if(ob->pd && ob->pd->deflect) */ BLI_ghashIterator_step(ihash); } /* while () */ @@ -2026,11 +2030,11 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3], if (cavel) mul_v3_fl(avel,1.0f/(float)cavel); VECCOPY(vel,avel); if (ci) *intrusion /= ci; - if (deflected){ + if (deflected){ VECCOPY(facenormal,force); normalize_v3(facenormal); } - return deflected; + return deflected; } @@ -2038,7 +2042,7 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3], static int sb_deflect_face(Object *ob,float *actpos,float *facenormal,float *force,float *cf,float time,float *vel,float *intrusion) { float s_actpos[3]; - int deflected; + int deflected; VECCOPY(s_actpos,actpos); deflected= sb_detect_vertex_collisionCached(s_actpos, facenormal, cf, force , ob->lay, ob,time,vel,intrusion); //deflected= sb_detect_vertex_collisionCachedEx(s_actpos, facenormal, cf, force , ob->lay, ob,time,vel,intrusion); @@ -2047,7 +2051,7 @@ static int sb_deflect_face(Object *ob,float *actpos,float *facenormal,float *for /* hiding this for now .. but the jacobian may pop up on other tasks .. so i'd like to keep it static void dfdx_spring(int ia, int ic, int op, float dir[3],float L,float len,float factor) -{ +{ float m,delta_ij; int i ,j; if (L < len){ @@ -2069,13 +2073,13 @@ static void dfdx_spring(int ia, int ic, int op, float dir[3],float L,float len,f static void dfdx_goal(int ia, int ic, int op, float factor) -{ +{ int i; for(i=0;i<3;i++) nlMatrixAdd(ia+i,op+ic+i,factor); } static void dfdv_goal(int ia, int ic,float factor) -{ +{ int i; for(i=0;i<3;i++) nlMatrixAdd(ia+i,ic+i,factor); } @@ -2125,13 +2129,13 @@ static void sb_spring_force(Object *ob,int bpi,BodySpring *bs,float iks,float fo kw = kw * kw; switch (bs->springtype){ case SB_EDGE: - forcefactor *= kw; + forcefactor *= kw; break; case SB_BEND: - forcefactor *=sb->secondspring*kw; + forcefactor *=sb->secondspring*kw; break; case SB_STIFFQUAD: - forcefactor *=sb->shearstiff*sb->shearstiff* kw; + forcefactor *=sb->shearstiff*sb->shearstiff* kw; break; default: break; @@ -2153,12 +2157,12 @@ static void sb_spring_force(Object *ob,int bpi,BodySpring *bs,float iks,float fo //int op =3*sb->totpoint; //float mvel = -forcetime*kd; //float mpos = -forcetime*forcefactor; - /* depending on my pos */ + /* depending on my pos */ // dfdx_spring(ia,ia,op,dir,bs->len,distance,-mpos); /* depending on my vel */ // dfdv_goal(ia,ia,mvel); // well that ignores geometie if(bp2->goal < SOFTGOALSNAP){ /* ommit this bp when it snaps */ - /* depending on other pos */ + /* depending on other pos */ // dfdx_spring(ia,ic,op,dir,bs->len,distance,mpos); /* depending on other vel */ // dfdv_goal(ia,ia,-mvel); // well that ignores geometie @@ -2177,7 +2181,7 @@ static int _softbody_calc_forces_slice_in_a_thread(Scene *scene, Object *ob, flo int number_of_points_here = ilast - ifirst; SoftBody *sb= ob->soft; /* is supposed to be there */ BodyPoint *bp; - + /* intitialize */ if (sb) { /* check conditions for various options */ @@ -2200,7 +2204,7 @@ static int _softbody_calc_forces_slice_in_a_thread(Scene *scene, Object *ob, flo /* debugerin */ - bp = &sb->bpoint[ifirst]; + bp = &sb->bpoint[ifirst]; for(bb=number_of_points_here; bb>0; bb--, bp++) { /* clear forces accumulator */ bp->force[0]= bp->force[1]= bp->force[2]= 0.0; @@ -2209,7 +2213,7 @@ static int _softbody_calc_forces_slice_in_a_thread(Scene *scene, Object *ob, flo if(do_selfcollision){ int attached; BodyPoint *obp; - BodySpring *bs; + BodySpring *bs; int c,b; float velcenter[3],dvel[3],def[3]; float distance; @@ -2217,7 +2221,7 @@ static int _softbody_calc_forces_slice_in_a_thread(Scene *scene, Object *ob, flo float bstune = sb->ballstiff; for(c=sb->totpoint, obp= sb->bpoint; c>=ifirst+bb; c--, obp++) { - compare = (obp->colball + bp->colball); + compare = (obp->colball + bp->colball); sub_v3_v3v3(def, bp->pos, obp->pos); /* rather check the AABBoxes before ever calulating the real distance */ /* mathematically it is completly nuts, but performace is pretty much (3) times faster */ @@ -2255,7 +2259,7 @@ static int _softbody_calc_forces_slice_in_a_thread(Scene *scene, Object *ob, flo /* naive ball self collision done */ if(_final_goal(ob,bp) < SOFTGOALSNAP){ /* ommit this bp when it snaps */ - float auxvect[3]; + float auxvect[3]; float velgoal[3]; /* do goal stuff */ @@ -2272,7 +2276,7 @@ static int _softbody_calc_forces_slice_in_a_thread(Scene *scene, Object *ob, flo sub_v3_v3v3(velgoal,bp->origS, bp->origE); kd = sb->goalfrict * sb_fric_force_scale(ob) ; add_v3_v3v3(auxvect,velgoal,bp->vec); - + if (forcetime > 0.0 ) { /* make sure friction does not become rocket motor on time reversal */ bp->force[0]-= kd * (auxvect[0]); bp->force[1]-= kd * (auxvect[1]); @@ -2285,15 +2289,15 @@ static int _softbody_calc_forces_slice_in_a_thread(Scene *scene, Object *ob, flo } } /* done goal stuff */ - + /* gravitation */ - if (sb && scene->physics_settings.flag & PHYS_GLOBAL_GRAVITY){ + if (sb && scene->physics_settings.flag & PHYS_GLOBAL_GRAVITY){ float gravity[3]; VECCOPY(gravity, scene->physics_settings.gravity); mul_v3_fl(gravity, sb_grav_force_scale(ob)*_final_mass(ob,bp)*sb->effector_weights->global_gravity); /* individual mass of node here */ add_v3_v3(bp->force, gravity); } - + /* particle field & vortex */ if(do_effector) { EffectedPoint epoint; @@ -2303,22 +2307,22 @@ static int _softbody_calc_forces_slice_in_a_thread(Scene *scene, Object *ob, flo float eval_sb_fric_force_scale = sb_fric_force_scale(ob); /* just for calling function once */ pd_point_from_soft(scene, bp->pos, bp->vec, sb->bpoint-bp, &epoint); pdDoEffectors(do_effector, NULL, sb->effector_weights, &epoint, force, speed); - + /* apply forcefield*/ - mul_v3_fl(force,fieldfactor* eval_sb_fric_force_scale); + mul_v3_fl(force,fieldfactor* eval_sb_fric_force_scale); VECADD(bp->force, bp->force, force); - - /* BP friction in moving media */ - kd= sb->mediafrict* eval_sb_fric_force_scale; + + /* BP friction in moving media */ + kd= sb->mediafrict* eval_sb_fric_force_scale; bp->force[0] -= kd * (bp->vec[0] + windfactor*speed[0]/eval_sb_fric_force_scale); bp->force[1] -= kd * (bp->vec[1] + windfactor*speed[1]/eval_sb_fric_force_scale); bp->force[2] -= kd * (bp->vec[2] + windfactor*speed[2]/eval_sb_fric_force_scale); /* now we'll have nice centrifugal effect for vortex */ - + } else { /* BP friction in media (not) moving*/ - float kd = sb->mediafrict* sb_fric_force_scale(ob); + float kd = sb->mediafrict* sb_fric_force_scale(ob); /* assume it to be proportional to actual velocity */ bp->force[0]-= bp->vec[0]*kd; bp->force[1]-= bp->vec[1]*kd; @@ -2328,22 +2332,22 @@ static int _softbody_calc_forces_slice_in_a_thread(Scene *scene, Object *ob, flo /* +++cached collision targets */ bp->choke = 0.0f; bp->choke2 = 0.0f; - bp->flag &= ~SBF_DOFUZZY; - if(do_deflector) { + bp->loc_flag &= ~SBF_DOFUZZY; + if(do_deflector && !(bp->loc_flag & SBF_OUTOFCOLLISION) ) { float cfforce[3],defforce[3] ={0.0f,0.0f,0.0f}, vel[3] = {0.0f,0.0f,0.0f}, facenormal[3], cf = 1.0f,intrusion; float kd = 1.0f; if (sb_deflect_face(ob,bp->pos,facenormal,defforce,&cf,timenow,vel,&intrusion)){ if (intrusion < 0.0f){ sb->scratch->flag |= SBF_DOFUZZY; - bp->flag |= SBF_DOFUZZY; + bp->loc_flag |= SBF_DOFUZZY; bp->choke = sb->choke*0.01f; } VECSUB(cfforce,bp->vec,vel); Vec3PlusStVec(bp->force,-cf*50.0f,cfforce); - - Vec3PlusStVec(bp->force,kd,defforce); + + Vec3PlusStVec(bp->force,kd,defforce); } } @@ -2354,19 +2358,19 @@ static int _softbody_calc_forces_slice_in_a_thread(Scene *scene, Object *ob, flo if(ob->softflag & OB_SB_EDGES) { if (sb->bspring){ /* spring list exists at all ? */ int b; - BodySpring *bs; + BodySpring *bs; for(b=bp->nofsprings;b>0;b--){ bs = sb->bspring + bp->springs[b-1]; if (do_springcollision || do_aero){ add_v3_v3(bp->force, bs->ext_force); if (bs->flag & BSF_INTERSECT) - bp->choke = bs->cf; + bp->choke = bs->cf; } // sb_spring_force(Object *ob,int bpi,BodySpring *bs,float iks,float forcetime,int nl_flags) sb_spring_force(ob,ilast-bb,bs,iks,forcetime,0); }/* loop springs */ - }/* existing spring list */ + }/* existing spring list */ }/*any edges*/ /* ---springs */ }/*omit on snap */ @@ -2379,7 +2383,7 @@ static void *exec_softbody_calc_forces(void *data) SB_thread_context *pctx = (SB_thread_context*)data; _softbody_calc_forces_slice_in_a_thread(pctx->scene, pctx->ob, pctx->forcetime, pctx->timenow, pctx->ifirst, pctx->ilast, NULL, pctx->do_effector,pctx->do_deflector,pctx->fieldfactor,pctx->windfactor); return 0; -} +} static void sb_cf_threads_run(Scene *scene, Object *ob, float forcetime, float timenow,int totpoint,int *ptr_to_break_func(),struct ListBase *do_effector,int do_deflector,float fieldfactor, float windfactor) { @@ -2406,16 +2410,16 @@ static void sb_cf_threads_run(Scene *scene, Object *ob, float forcetime, float t dec = totpoint/totthread +1; for(i=0; i0){ sb_threads[i].ifirst = left; } else - sb_threads[i].ifirst = 0; + sb_threads[i].ifirst = 0; sb_threads[i].do_effector = do_effector; sb_threads[i].do_deflector = do_deflector; sb_threads[i].fieldfactor = fieldfactor; @@ -2441,30 +2445,30 @@ static void sb_cf_threads_run(Scene *scene, Object *ob, float forcetime, float t static void softbody_calc_forcesEx(Scene *scene, Object *ob, float forcetime, float timenow, int nl_flags) { -/* rule we never alter free variables :bp->vec bp->pos in here ! - * this will ruin adaptive stepsize AKA heun! (BM) +/* rule we never alter free variables :bp->vec bp->pos in here ! + * this will ruin adaptive stepsize AKA heun! (BM) */ SoftBody *sb= ob->soft; /* is supposed to be there */ BodyPoint *bproot; ListBase *do_effector = NULL; float iks, gravity; - float fieldfactor = -1.0f, windfactor = 0.25; + float fieldfactor = -1.0f, windfactor = 0.25; int do_deflector,do_selfcollision,do_springcollision,do_aero; - - gravity = sb->grav * sb_grav_force_scale(ob); - + + gravity = sb->grav * sb_grav_force_scale(ob); + /* check conditions for various options */ do_deflector= query_external_colliders(scene, ob); do_selfcollision=((ob->softflag & OB_SB_EDGES) && (sb->bspring)&& (ob->softflag & OB_SB_SELF)); do_springcollision=do_deflector && (ob->softflag & OB_SB_EDGES) &&(ob->softflag & OB_SB_EDGECOLL); do_aero=((sb->aeroedge)&& (ob->softflag & OB_SB_EDGES)); - + iks = 1.0f/(1.0f-sb->inspring)-1.0f ;/* inner spring constants function */ bproot= sb->bpoint; /* need this for proper spring addressing */ - - if (do_springcollision || do_aero) - sb_sfesf_threads_run(scene, ob, timenow,sb->totspring,NULL); - + + if (do_springcollision || do_aero) + sb_sfesf_threads_run(scene, ob, timenow,sb->totspring,NULL); + /* after spring scan because it uses Effoctors too */ do_effector= pdInitEffectors(scene, ob, NULL, sb->effector_weights); @@ -2477,7 +2481,7 @@ static void softbody_calc_forcesEx(Scene *scene, Object *ob, float forcetime, fl /* finally add forces caused by face collision */ if (ob->softflag & OB_SB_FACECOLL) scan_for_ext_face_forces(ob,timenow); - + /* finish matrix and solve */ pdEndEffectors(&do_effector); } @@ -2497,20 +2501,20 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa /* |||||||||||||||||||||||||| */ /* VVVVVVVVVVVVVVVVVVVVVVVVVV */ /*backward compatibility note: - fixing bug [17428] which forces adaptive step size to tiny steps - in some situations + fixing bug [17428] which forces adaptive step size to tiny steps + in some situations .. keeping G.rt==17 0x11 option for old files 'needing' the bug*/ - /* rule we never alter free variables :bp->vec bp->pos in here ! - * this will ruin adaptive stepsize AKA heun! (BM) + /* rule we never alter free variables :bp->vec bp->pos in here ! + * this will ruin adaptive stepsize AKA heun! (BM) */ SoftBody *sb= ob->soft; /* is supposed to be there */ BodyPoint *bp; BodyPoint *bproot; - BodySpring *bs; + BodySpring *bs; ListBase *do_effector = NULL; float iks, ks, kd, gravity[3] = {0.0f,0.0f,0.0f}; - float fieldfactor = -1.0f, windfactor = 0.25f; + float fieldfactor = -1.0f, windfactor = 0.25f; float tune = sb->ballstiff; int a, b, do_deflector,do_selfcollision,do_springcollision,do_aero; @@ -2525,10 +2529,10 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa */ - if (scene->physics_settings.flag & PHYS_GLOBAL_GRAVITY){ + if (scene->physics_settings.flag & PHYS_GLOBAL_GRAVITY){ VECCOPY(gravity, scene->physics_settings.gravity); mul_v3_fl(gravity, sb_grav_force_scale(ob)*sb->effector_weights->global_gravity); - } + } /* check conditions for various options */ do_deflector= query_external_colliders(scene, ob); @@ -2554,7 +2558,7 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa if(nl_flags & NLF_BUILD){ //int ia =3*(sb->totpoint-a); //int op =3*sb->totpoint; - /* dF/dV = v */ + /* dF/dV = v */ /* jacobioan nlMatrixAdd(op+ia,ia,-forcetime); nlMatrixAdd(op+ia+1,ia+1,-forcetime); @@ -2586,7 +2590,7 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa //if ((bp->octantflag & obp->octantflag) == 0) continue; - compare = (obp->colball + bp->colball); + compare = (obp->colball + bp->colball); sub_v3_v3v3(def, bp->pos, obp->pos); /* rather check the AABBoxes before ever calulating the real distance */ @@ -2630,11 +2634,11 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa /*TODO sit down an X-out the true jacobian entries*/ /*well does not make to much sense because the eigenvalues of the jacobian go negative; and negative eigenvalues - on a complex iterative system z(n+1)=A * z(n) + on a complex iterative system z(n+1)=A * z(n) give imaginary roots in the charcateristic polynom - --> solutions that to z(t)=u(t)* exp ( i omega t) --> oscilations we don't want here + --> solutions that to z(t)=u(t)* exp ( i omega t) --> oscilations we don't want here where u(t) is a unknown amplitude function (worst case rising fast) - */ + */ } /* exploit force(a,b) == -force(b,a) part2/2 */ @@ -2652,7 +2656,7 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa /* naive ball self collision done */ if(_final_goal(ob,bp) < SOFTGOALSNAP){ /* ommit this bp when it snaps */ - float auxvect[3]; + float auxvect[3]; float velgoal[3]; /* do goal stuff */ @@ -2667,7 +2671,7 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa if(nl_flags & NLF_BUILD){ //int ia =3*(sb->totpoint-a); //int op =3*(sb->totpoint); - /* depending on my pos */ + /* depending on my pos */ //dfdx_goal(ia,ia,op,ks*forcetime); } @@ -2684,7 +2688,7 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa if(nl_flags & NLF_BUILD){ //int ia =3*(sb->totpoint-a); normalize_v3(auxvect); - /* depending on my vel */ + /* depending on my vel */ //dfdv_goal(ia,ia,kd*forcetime); } @@ -2712,11 +2716,11 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa pdDoEffectors(do_effector, NULL, sb->effector_weights, &epoint, force, speed); /* apply forcefield*/ - mul_v3_fl(force,fieldfactor* eval_sb_fric_force_scale); + mul_v3_fl(force,fieldfactor* eval_sb_fric_force_scale); VECADD(bp->force, bp->force, force); - /* BP friction in moving media */ - kd= sb->mediafrict* eval_sb_fric_force_scale; + /* BP friction in moving media */ + kd= sb->mediafrict* eval_sb_fric_force_scale; bp->force[0] -= kd * (bp->vec[0] + windfactor*speed[0]/eval_sb_fric_force_scale); bp->force[1] -= kd * (bp->vec[1] + windfactor*speed[1]/eval_sb_fric_force_scale); bp->force[2] -= kd * (bp->vec[2] + windfactor*speed[2]/eval_sb_fric_force_scale); @@ -2725,7 +2729,7 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa } else { /* BP friction in media (not) moving*/ - kd= sb->mediafrict* sb_fric_force_scale(ob); + kd= sb->mediafrict* sb_fric_force_scale(ob); /* assume it to be proportional to actual velocity */ bp->force[0]-= bp->vec[0]*kd; bp->force[1]-= bp->vec[1]*kd; @@ -2733,7 +2737,7 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa /* friction in media done */ if(nl_flags & NLF_BUILD){ //int ia =3*(sb->totpoint-a); - /* da/dv = */ + /* da/dv = */ // nlMatrixAdd(ia,ia,forcetime*kd); // nlMatrixAdd(ia+1,ia+1,forcetime*kd); @@ -2744,7 +2748,7 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa /* +++cached collision targets */ bp->choke = 0.0f; bp->choke2 = 0.0f; - bp->flag &= ~SBF_DOFUZZY; + bp->loc_flag &= ~SBF_DOFUZZY; if(do_deflector) { float cfforce[3],defforce[3] ={0.0f,0.0f,0.0f}, vel[3] = {0.0f,0.0f,0.0f}, facenormal[3], cf = 1.0f,intrusion; kd = 1.0f; @@ -2752,15 +2756,15 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa if (sb_deflect_face(ob,bp->pos,facenormal,defforce,&cf,timenow,vel,&intrusion)){ if ((!nl_flags)&&(intrusion < 0.0f)){ if(G.rt & 0x01){ // 17 we did check for bit 0x10 before - /*fixing bug [17428] this forces adaptive step size to tiny steps + /*fixing bug [17428] this forces adaptive step size to tiny steps in some situations .. keeping G.rt==17 option for old files 'needing' the bug */ - /*bjornmose: uugh.. what an evil hack - violation of the 'don't touch bp->pos in here' rule + /*bjornmose: uugh.. what an evil hack + violation of the 'don't touch bp->pos in here' rule but works nice, like this--> we predict the solution beeing out of the collider in heun step No1 and leave the heun step No2 adapt to it - so we kind of introduced a implicit solver for this case + so we kind of introduced a implicit solver for this case */ Vec3PlusStVec(bp->pos,-intrusion,facenormal); } @@ -2772,7 +2776,7 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa sb->scratch->flag |= SBF_DOFUZZY; - bp->flag |= SBF_DOFUZZY; + bp->loc_flag |= SBF_DOFUZZY; bp->choke = sb->choke*0.01f; } else{ @@ -2801,14 +2805,14 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa if (do_springcollision || do_aero){ add_v3_v3(bp->force, bs->ext_force); if (bs->flag & BSF_INTERSECT) - bp->choke = bs->cf; + bp->choke = bs->cf; } // sb_spring_force(Object *ob,int bpi,BodySpring *bs,float iks,float forcetime,int nl_flags) // rather remove nl_falgs from code .. will make things a lot cleaner sb_spring_force(ob,sb->totpoint-a,bs,iks,forcetime,0); }/* loop springs */ - }/* existing spring list */ + }/* existing spring list */ }/*any edges*/ /* ---springs */ }/*omit on snap */ @@ -2833,7 +2837,7 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa nlEnd(NL_SYSTEM); if ((G.rt == 32) && (nl_flags & NLF_BUILD)) - { + { printf("####MEE#####\n"); nlPrintMatrix(); } @@ -2905,7 +2909,7 @@ static void softbody_apply_forces(Object *ob, float forcetime, int mode, float * int a,fuzzy=0; forcetime *= sb_time_scale(ob); - + aabbmin[0]=aabbmin[1]=aabbmin[2] = 1e20f; aabbmax[0]=aabbmax[1]=aabbmax[2] = -1e20f; @@ -2915,7 +2919,7 @@ static void softbody_apply_forces(Object *ob, float forcetime, int mode, float * if (sb->nodemass > 0.009999f) timeovermass = forcetime/sb->nodemass; else timeovermass = forcetime/0.009999f; */ - + for(a=sb->totpoint, bp= sb->bpoint; a>0; a--, bp++) { /* now we have individual masses */ /* claim a minimum mass for vertex */ @@ -2926,14 +2930,14 @@ static void softbody_apply_forces(Object *ob, float forcetime, int mode, float * if(_final_goal(ob,bp) < SOFTGOALSNAP){ /* this makes t~ = t */ if(mid_flags & MID_PRESERVE) VECCOPY(dx,bp->vec); - + /* so here is (v)' = a(cceleration) = sum(F_springs)/m + gravitation + some friction forces + more forces*/ /* the ( ... )' operator denotes derivate respective time */ /* the euler step for velocity then becomes */ - /* v(t + dt) = v(t) + a(t) * dt */ + /* v(t + dt) = v(t) + a(t) * dt */ mul_v3_fl(bp->force,timeovermass);/* individual mass of node here */ /* some nasty if's to have heun in here too */ - VECCOPY(dv,bp->force); + VECCOPY(dv,bp->force); if (mode == 1){ VECCOPY(bp->prevvec, bp->vec); @@ -2957,7 +2961,7 @@ static void softbody_apply_forces(Object *ob, float forcetime, int mode, float * /* so here is (x)'= v(elocity) */ /* the euler step for location then becomes */ - /* x(t + dt) = x(t) + v(t~) * dt */ + /* x(t + dt) = x(t) + v(t~) * dt */ mul_v3_fl(dx,forcetime); /* the freezer coming sooner or later */ @@ -2975,7 +2979,7 @@ static void softbody_apply_forces(Object *ob, float forcetime, int mode, float * VECCOPY(bp->prevpos,bp->pos); VECCOPY(bp->prevdx ,dx); } - + if (mode ==2){ bp->pos[0] = bp->prevpos[0] + 0.5f * ( dx[0] + bp->prevdx[0]); bp->pos[1] = bp->prevpos[1] + 0.5f * ( dx[1] + bp->prevdx[1]); @@ -2984,9 +2988,9 @@ static void softbody_apply_forces(Object *ob, float forcetime, int mode, float * maxerrpos = MAX2(maxerrpos,ABS(dx[1] - bp->prevdx[1])); maxerrpos = MAX2(maxerrpos,ABS(dx[2] - bp->prevdx[2])); -/* bp->choke is set when we need to pull a vertex or edge out of the collider. - the collider object signals to get out by pushing hard. on the other hand - we don't want to end up in deep space so we add some +/* bp->choke is set when we need to pull a vertex or edge out of the collider. + the collider object signals to get out by pushing hard. on the other hand + we don't want to end up in deep space so we add some to balance that out */ if (bp->choke2 > 0.0f){ mul_v3_fl(bp->vec,(1.0f - bp->choke2)); @@ -3005,7 +3009,7 @@ static void softbody_apply_forces(Object *ob, float forcetime, int mode, float * aabbmax[0] = MAX2(aabbmax[0],bp->pos[0]); aabbmax[1] = MAX2(aabbmax[1],bp->pos[1]); aabbmax[2] = MAX2(aabbmax[2],bp->pos[2]); - if (bp->flag & SBF_DOFUZZY) fuzzy =1; + if (bp->loc_flag & SBF_DOFUZZY) fuzzy =1; } /*for*/ if (sb->totpoint) mul_v3_fl(cm,1.0f/sb->totpoint); @@ -3013,7 +3017,7 @@ static void softbody_apply_forces(Object *ob, float forcetime, int mode, float * VECCOPY(sb->scratch->aabbmin,aabbmin); VECCOPY(sb->scratch->aabbmax,aabbmax); } - + if (err){ /* so step size will be controlled by biggest difference in slope */ if (sb->solverflags & SBSO_OLDERR) *err = MAX2(maxerrpos,maxerrvel); @@ -3032,7 +3036,7 @@ static void softbody_restore_prev_step(Object *ob) SoftBody *sb= ob->soft; /* is supposed to be there*/ BodyPoint *bp; int a; - + for(a=sb->totpoint, bp= sb->bpoint; a>0; a--, bp++) { VECCOPY(bp->vec, bp->prevvec); VECCOPY(bp->pos, bp->prevpos); @@ -3045,7 +3049,7 @@ static void softbody_store_step(Object *ob) SoftBody *sb= ob->soft; /* is supposed to be there*/ BodyPoint *bp; int a; - + for(a=sb->totpoint, bp= sb->bpoint; a>0; a--, bp++) { VECCOPY(bp->prevvec,bp->vec); VECCOPY(bp->prevpos,bp->pos); @@ -3060,12 +3064,12 @@ static void softbody_store_state(Object *ob,float *ppos,float *pvel) BodyPoint *bp; int a; float *pp=ppos,*pv=pvel; - + for(a=sb->totpoint, bp= sb->bpoint; a>0; a--, bp++) { - - VECCOPY(pv, bp->vec); + + VECCOPY(pv, bp->vec); pv+=3; - + VECCOPY(pp, bp->pos); pp+=3; } @@ -3078,12 +3082,12 @@ static void softbody_retrieve_state(Object *ob,float *ppos,float *pvel) BodyPoint *bp; int a; float *pp=ppos,*pv=pvel; - + for(a=sb->totpoint, bp= sb->bpoint; a>0; a--, bp++) { - - VECCOPY(bp->vec,pv); + + VECCOPY(bp->vec,pv); pv+=3; - + VECCOPY(bp->pos,pp); pp+=3; } @@ -3097,17 +3101,17 @@ static void softbody_swap_state(Object *ob,float *ppos,float *pvel) int a; float *pp=ppos,*pv=pvel; float temp[3]; - + for(a=sb->totpoint, bp= sb->bpoint; a>0; a--, bp++) { - - VECCOPY(temp, bp->vec); - VECCOPY(bp->vec,pv); - VECCOPY(pv,temp); + + VECCOPY(temp, bp->vec); + VECCOPY(bp->vec,pv); + VECCOPY(pv,temp); pv+=3; - + VECCOPY(temp, bp->pos); - VECCOPY(bp->pos,pp); - VECCOPY(pp,temp); + VECCOPY(bp->pos,pp); + VECCOPY(pp,temp); pp+=3; } } @@ -3116,8 +3120,8 @@ static void softbody_swap_state(Object *ob,float *ppos,float *pvel) /* care for bodypoints taken out of the 'ordinary' solver step ** because they are screwed to goal by bolts -** they just need to move along with the goal in time -** we need to adjust them on sub frame timing in solver +** they just need to move along with the goal in time +** we need to adjust them on sub frame timing in solver ** so now when frame is done .. put 'em to the position at the end of frame */ static void softbody_apply_goalsnap(Object *ob) @@ -3125,12 +3129,12 @@ static void softbody_apply_goalsnap(Object *ob) SoftBody *sb= ob->soft; /* is supposed to be there */ BodyPoint *bp; int a; - + for(a=sb->totpoint, bp= sb->bpoint; a>0; a--, bp++) { if (_final_goal(ob,bp) >= SOFTGOALSNAP){ VECCOPY(bp->prevpos,bp->pos); VECCOPY(bp->pos,bp->origT); - } + } } } @@ -3165,20 +3169,20 @@ static void interpolate_exciter(Object *ob, int timescale, int time) BodyPoint *bp; float f; int a; - + f = (float)time/(float)timescale; - - for(a=sb->totpoint, bp= sb->bpoint; a>0; a--, bp++) { - bp->origT[0] = bp->origS[0] + f*(bp->origE[0] - bp->origS[0]); - bp->origT[1] = bp->origS[1] + f*(bp->origE[1] - bp->origS[1]); - bp->origT[2] = bp->origS[2] + f*(bp->origE[2] - bp->origS[2]); + + for(a=sb->totpoint, bp= sb->bpoint; a>0; a--, bp++) { + bp->origT[0] = bp->origS[0] + f*(bp->origE[0] - bp->origS[0]); + bp->origT[1] = bp->origS[1] + f*(bp->origE[1] - bp->origS[1]); + bp->origT[2] = bp->origS[2] + f*(bp->origE[2] - bp->origS[2]); if (_final_goal(ob,bp) >= SOFTGOALSNAP){ bp->vec[0] = bp->origE[0] - bp->origS[0]; bp->vec[1] = bp->origE[1] - bp->origS[1]; bp->vec[2] = bp->origE[2] - bp->origS[2]; } } - + } @@ -3191,13 +3195,13 @@ static void interpolate_exciter(Object *ob, int timescale, int time) static void get_scalar_from_vertexgroup(Object *ob, int vertID, short groupindex, float *target) /* result 0 on success, else indicates error number -- kind of *inverse* result defintion, --- but this way we can signal error condition to caller +-- but this way we can signal error condition to caller -- and yes this function must not be here but in a *vertex group module* */ { MDeformVert *dv= NULL; int i; - + /* spot the vert in deform vert list at mesh */ if(ob->type==OB_MESH) { Mesh *me= ob->data; @@ -3218,10 +3222,10 @@ static void get_scalar_from_vertexgroup(Object *ob, int vertID, short groupindex } } } -} +} -/* Resetting a Mesh SB object's springs */ -/* Spring lenght are caculted from'raw' mesh vertices that are NOT altered by modifier stack. */ +/* Resetting a Mesh SB object's springs */ +/* Spring lenght are caculted from'raw' mesh vertices that are NOT altered by modifier stack. */ static void springs_from_mesh(Object *ob) { SoftBody *sb; @@ -3229,21 +3233,21 @@ static void springs_from_mesh(Object *ob) BodyPoint *bp; int a; float scale =1.0f; - - sb= ob->soft; + + sb= ob->soft; if (me && sb) - { + { /* using bp->origS as a container for spring calcualtions here - ** will be overwritten sbObjectStep() to receive + ** will be overwritten sbObjectStep() to receive ** actual modifier stack positions */ - if(me->totvert) { + if(me->totvert) { bp= ob->soft->bpoint; for(a=0; atotvert; a++, bp++) { - VECCOPY(bp->origS, me->mvert[a].co); + VECCOPY(bp->origS, me->mvert[a].co); mul_m4_v3(ob->obmat, bp->origS); } - + } /* recalculate spring length for meshes here */ /* public version shrink to fit */ @@ -3271,21 +3275,21 @@ static void mesh_to_softbody(Scene *scene, Object *ob) int a, totedge; if (ob->softflag & OB_SB_EDGES) totedge= me->totedge; else totedge= 0; - + /* renew ends with ob->soft with points and edges, also checks & makes ob->soft */ renew_softbody(scene, ob, me->totvert, totedge); - + /* we always make body points */ - sb= ob->soft; + sb= ob->soft; bp= sb->bpoint; - + for(a=0; atotvert; a++, bp++) { /* get scalar values needed *per vertex* from vertex group functions, - so we can *paint* them nicly .. + so we can *paint* them nicly .. they are normalized [0.0..1.0] so may be we need amplitude for scale - which can be done by caller but still .. i'd like it to go this way - */ - + which can be done by caller but still .. i'd like it to go this way + */ + if((ob->softflag & OB_SB_GOAL) && sb->vertgroup) { /* even this is a deprecated evil hack */ /* I'd like to have it .. if (sb->namedVG_Goal[0]) */ @@ -3300,9 +3304,9 @@ static void mesh_to_softbody(Scene *scene, Object *ob) else{ /* in consequence if no group was set .. but we want to animate it laters */ /* logically attach to goal with default first */ - if(ob->softflag & OB_SB_GOAL){bp->goal =sb->defgoal;} + if(ob->softflag & OB_SB_GOAL){bp->goal =sb->defgoal;} } - + /* to proove the concept this enables per vertex *mass painting* */ @@ -3324,7 +3328,7 @@ static void mesh_to_softbody(Scene *scene, Object *ob) if (sb->namedVG_Spring_K[0]) { int grp= defgroup_name_index (ob,sb->namedVG_Spring_K); - //printf("VGN %s %d \n",sb->namedVG_Spring_K,grp); + //printf("VGN %s %d \n",sb->namedVG_Spring_K,grp); if(grp > -1){ get_scalar_from_vertexgroup(ob, a,(short) (grp), &bp->springweight); //printf("bp->springweight %f \n",bp->springweight); @@ -3332,7 +3336,7 @@ static void mesh_to_softbody(Scene *scene, Object *ob) } } - + } /* but we only optionally add body edge springs */ @@ -3344,13 +3348,13 @@ static void mesh_to_softbody(Scene *scene, Object *ob) bs->v2= medge->v2; bs->springtype=SB_EDGE; } - - + + /* insert *diagonal* springs in quads if desired */ if (ob->softflag & OB_SB_QUADS) { add_mesh_quad_diag_springs(ob); } - + build_bps_springlist(ob); /* scan for springs attached to bodypoints ONCE */ /* insert *other second order* springs if desired */ if (sb->secondspring > 0.0000001f) { @@ -3359,22 +3363,22 @@ static void mesh_to_softbody(Scene *scene, Object *ob) } springs_from_mesh(ob); /* write the 'rest'-lenght of the springs */ if (ob->softflag & OB_SB_SELF) {calculate_collision_balls(ob);} - + } - + } } static void mesh_faces_to_scratch(Object *ob) { - SoftBody *sb= ob->soft; + SoftBody *sb= ob->soft; Mesh *me= ob->data; MFace *mface; BodyFace *bodyface; int a; /* alloc and copy faces*/ - + bodyface = sb->scratch->bodyface = MEM_mallocN(sizeof(BodyFace)*me->totface,"SB_body_Faces"); //memcpy(sb->scratch->mface,me->mface,sizeof(MFace)*me->totface); mface = me->mface; @@ -3384,13 +3388,13 @@ static void mesh_faces_to_scratch(Object *ob) bodyface->v3 = mface->v3; bodyface->v4 = mface->v4; bodyface->ext_force[0] = bodyface->ext_force[1] = bodyface->ext_force[2] = 0.0f; - bodyface->flag =0; + bodyface->flag =0; } sb->scratch->totface = me->totface; } static void reference_to_scratch(Object *ob) { - SoftBody *sb= ob->soft; + SoftBody *sb= ob->soft; ReferenceVert *rp; BodyPoint *bp; float accu_pos[3] ={0.f,0.f,0.f}; @@ -3411,14 +3415,14 @@ static void reference_to_scratch(Object *ob) } /* -helper function to get proper spring length +helper function to get proper spring length when object is rescaled */ static float globallen(float *v1,float *v2,Object *ob) { float p1[3],p2[3]; VECCOPY(p1,v1); - mul_m4_v3(ob->obmat, p1); + mul_m4_v3(ob->obmat, p1); VECCOPY(p2,v2); mul_m4_v3(ob->obmat, p2); return len_v3v3(p1,p2); @@ -3428,16 +3432,16 @@ static void makelatticesprings(Lattice *lt, BodySpring *bs, int dostiff,Object * { BPoint *bp=lt->def, *bpu; int u, v, w, dv, dw, bpc=0, bpuc; - + dv= lt->pntsu; dw= dv*lt->pntsv; - + for(w=0; wpntsw; w++) { - + for(v=0; vpntsv; v++) { - + for(u=0, bpuc=0, bpu=NULL; upntsu; u++, bp++, bpc++) { - + if(w) { bs->v1 = bpc; bs->v2 = bpc-dw; @@ -3459,7 +3463,7 @@ static void makelatticesprings(Lattice *lt, BodySpring *bs, int dostiff,Object * bs->len= globallen((bpu)->vec, bp->vec,ob); bs++; } - + if (dostiff) { if(w){ @@ -3469,14 +3473,14 @@ static void makelatticesprings(Lattice *lt, BodySpring *bs, int dostiff,Object * bs->springtype=SB_BEND; bs->len= globallen((bp-dw-dv-1)->vec, bp->vec,ob); bs++; - } + } if( (v < lt->pntsv-1) && (u) ) { bs->v1 = bpc; bs->v2 = bpc-dw+dv-1; bs->springtype=SB_BEND; bs->len= globallen((bp-dw+dv-1)->vec, bp->vec,ob); bs++; - } + } } if(w < lt->pntsw -1){ @@ -3486,14 +3490,14 @@ static void makelatticesprings(Lattice *lt, BodySpring *bs, int dostiff,Object * bs->springtype=SB_BEND; bs->len= globallen((bp+dw-dv-1)->vec, bp->vec,ob); bs++; - } + } if( (v < lt->pntsv-1) && (u) ) { bs->v1 = bpc; bs->v2 = bpc+dw+dv-1; bs->springtype=SB_BEND; bs->len= globallen((bp+dw+dv-1)->vec, bp->vec,ob); bs++; - } + } } } bpu = bp; @@ -3514,19 +3518,19 @@ static void lattice_to_softbody(Scene *scene, Object *ob) totvert= lt->pntsu*lt->pntsv*lt->pntsw; if (ob->softflag & OB_SB_EDGES){ - totspring = ((lt->pntsu -1) * lt->pntsv + totspring = ((lt->pntsu -1) * lt->pntsv + (lt->pntsv -1) * lt->pntsu) * lt->pntsw +lt->pntsu*lt->pntsv*(lt->pntsw -1); if (ob->softflag & OB_SB_QUADS){ totspring += 4*(lt->pntsu -1) * (lt->pntsv -1) * (lt->pntsw-1); } } - + /* renew ends with ob->soft with points and edges, also checks & makes ob->soft */ renew_softbody(scene, ob, totvert, totspring); sb= ob->soft; /* can be created in renew_softbody() */ - + /* weights from bpoints, same code used as for mesh vertices */ /* if((ob->softflag & OB_SB_GOAL) && sb->vertgroup) { 2.4x one*/ /* new! take the weights from lattice vertex anyhow */ @@ -3539,8 +3543,8 @@ static void lattice_to_softbody(Scene *scene, Object *ob) for(a=0; agoal= bpnt->weight; } - } - + } + /* create some helper edges to enable SB lattice to be usefull at all */ if (ob->softflag & OB_SB_EDGES){ makelatticesprings(lt,ob->soft->bspring,ob->softflag & OB_SB_QUADS,ob); @@ -3560,44 +3564,47 @@ static void curve_surf_to_softbody(Scene *scene, Object *ob) BPoint *bpnt; int a, curindex=0; int totvert, totspring = 0, setgoal=0; - + totvert= count_curveverts(&cu->nurb); - + if (ob->softflag & OB_SB_EDGES){ if(ob->type==OB_CURVE) { totspring= totvert - BLI_countlist(&cu->nurb); } } - + /* renew ends with ob->soft with points and edges, also checks & makes ob->soft */ renew_softbody(scene, ob, totvert, totspring); sb= ob->soft; /* can be created in renew_softbody() */ - + /* set vars now */ bp= sb->bpoint; bs= sb->bspring; - + /* weights from bpoints, same code used as for mesh vertices */ /* if((ob->softflag & OB_SB_GOAL) && sb->vertgroup) 2.4x hack*/ /* new! take the weights from curve vertex anyhow */ - if(ob->softflag & OB_SB_GOAL) + if(ob->softflag & OB_SB_GOAL) setgoal= 1; - + for(nu= cu->nurb.first; nu; nu= nu->next) { - if(nu->bezt) { + if(nu->bezt) { /* bezier case ; this is nicly said naive; who ever wrote this part, it was not me (JOW) :) */ - /* a: never ever make tangent handles (sub) and or (ob)ject to collision */ + /* a: never ever make tangent handles (sub) and or (ob)ject to collision */ /* b: rather calculate them using some C2 (C2= continous in second derivate -> no jump in bending ) condition */ /* not too hard to do, but needs some more code to care for; some one may want look at it JOW 2010/06/12*/ for(bezt=nu->bezt, a=0; apntsu; a++, bezt++, bp+=3, curindex+=3) { if(setgoal) { bp->goal= bezt->weight; - + /* all three triples */ (bp+1)->goal= bp->goal; (bp+2)->goal= bp->goal; + /*do not collide handles */ + (bp+1)->loc_flag |= SBF_OUTOFCOLLISION; + (bp+2)->loc_flag |= SBF_OUTOFCOLLISION; } - + if(totspring) { if(a>0) { bs->v1= curindex-1; @@ -3635,7 +3642,7 @@ static void curve_surf_to_softbody(Scene *scene, Object *ob) } } } - + if(totspring) { build_bps_springlist(ob); /* link bps to springs */ @@ -3656,7 +3663,7 @@ static void softbody_to_object(Object *ob, float (*vertexCos)[3], int numVerts, for(a=0; apos); - if(local==0) + if(local==0) mul_m4_v3(ob->imat, vertexCos[a]); /* softbody is in global coords, baked optionally not */ } } @@ -3673,7 +3680,7 @@ static void sb_new_scratch(SoftBody *sb) sb->scratch->aabbmax[0]=sb->scratch->aabbmax[1]=sb->scratch->aabbmax[2] = 1.0e30f; sb->scratch->aabbmin[0]=sb->scratch->aabbmin[1]=sb->scratch->aabbmin[2] = -1.0e30f; sb->scratch->Ref.ivert = NULL; - + } /* --- ************ maintaining scratch *************** */ @@ -3683,26 +3690,26 @@ static void sb_new_scratch(SoftBody *sb) SoftBody *sbNew(Scene *scene) { SoftBody *sb; - + sb= MEM_callocN(sizeof(SoftBody), "softbody"); - - sb->mediafrict= 0.5f; + + sb->mediafrict= 0.5f; sb->nodemass= 1.0f; - sb->grav= 9.8f; + sb->grav= 9.8f; sb->physics_speed= 1.0f; sb->rklimit= 0.1f; - sb->goalspring= 0.5f; - sb->goalfrict= 0.0f; - sb->mingoal= 0.0f; + sb->goalspring= 0.5f; + sb->goalfrict= 0.0f; + sb->mingoal= 0.0f; sb->maxgoal= 1.0f; sb->defgoal= 0.7f; - + sb->inspring= 0.5f; - sb->infrict= 0.5f; + sb->infrict= 0.5f; /*todo backward file compat should copy inspring to inpush while reading old files*/ - sb->inpush = 0.5f; - + sb->inpush = 0.5f; + sb->interval= 10; sb->sfra= scene->r.sfra; sb->efra= scene->r.efra; @@ -3754,7 +3761,7 @@ void sbObjectToSoftbody(Object *ob) free_softbody_intern(ob->soft); } -static int object_has_edges(Object *ob) +static int object_has_edges(Object *ob) { if(ob->type==OB_MESH) { return ((Mesh*) ob->data)->totedge; @@ -3767,7 +3774,7 @@ static int object_has_edges(Object *ob) } } -/* SB global visible functions */ +/* SB global visible functions */ void sbSetInterruptCallBack(int (*f)(void)) { SB_localInterruptCallBack = f; @@ -3782,7 +3789,7 @@ static void softbody_update_positions(Object *ob, SoftBody *sb, float (*vertexCo return; for(a=0,bp=sb->bpoint; aorigS, bp->origE); /* copy the position of the goals at desired end time */ VECCOPY(bp->origE, vertexCos[a]); @@ -3790,7 +3797,7 @@ static void softbody_update_positions(Object *ob, SoftBody *sb, float (*vertexCo mul_m4_v3(ob->obmat, bp->origE); /* just to be save give bp->origT a defined value will be calulated in interpolate_exciter()*/ - VECCOPY(bp->origT, bp->origE); + VECCOPY(bp->origT, bp->origE); } } @@ -3804,7 +3811,7 @@ static void softbody_update_positions(Object *ob, SoftBody *sb, float (*vertexCo see: this is kind of reverse engeneering: having to states of a point cloud and recover what happend our advantage here we know the identity of the vertex there are others methods giving other results. - lloc,lrot,lscale are allowed to be NULL, just in case you don't need it. + lloc,lrot,lscale are allowed to be NULL, just in case you don't need it. should be pretty useful for pythoneers :) not! velocity .. 2nd order stuff vcloud_estimate_transform see @@ -3825,10 +3832,10 @@ void SB_estimate_transform(Object *ob,float lloc[3],float lrot[3][3],float lscal if(!sb || !sb->bpoint) return; opos= MEM_callocN( (sb->totpoint)*3*sizeof(float), "SB_OPOS"); rpos= MEM_callocN( (sb->totpoint)*3*sizeof(float), "SB_RPOS"); - /* might filter vertex selection with a vertex group */ + /* might filter vertex selection with a vertex group */ for(a=0, bp=sb->bpoint, rp=sb->scratch->Ref.ivert; atotpoint; a++, bp++, rp++) { - VECCOPY(rpos[a],rp->pos); - VECCOPY(opos[a],bp->pos); + VECCOPY(rpos[a],rp->pos); + VECCOPY(opos[a],bp->pos); } vcloud_estimate_transform(sb->totpoint, opos, NULL, rpos, NULL, com, rcom,lrot,lscale); @@ -3838,7 +3845,7 @@ void SB_estimate_transform(Object *ob,float lloc[3],float lrot[3][3],float lscal if (lscale) copy_m3_m3(sb->lscale,lscale); if (lrot) copy_m3_m3(sb->lrot,lrot); - + MEM_freeN(opos); MEM_freeN(rpos); } @@ -3861,9 +3868,9 @@ static void softbody_reset(Object *ob, SoftBody *sb, float (*vertexCos)[3], int 1. set sheduled time step to new dtime 2. try to advance the sheduled time step, beeing optimistic execute it 3. check for success - 3.a we 're fine continue, may be we can increase sheduled time again ?? if so, do so! + 3.a we 're fine continue, may be we can increase sheduled time again ?? if so, do so! 3.b we did exceed error limit --> roll back, shorten the sheduled time and try again at 2. - 4. check if we did reach dtime + 4. check if we did reach dtime 4.a nope we need to do some more at 2. 4.b yup we're done */ @@ -3877,7 +3884,7 @@ static void softbody_reset(Object *ob, SoftBody *sb, float (*vertexCos)[3], int /* make a nice clean scratch struc */ free_scratch(sb); /* clear if any */ sb_new_scratch(sb); /* make a new */ - sb->scratch->needstobuildcollider=1; + sb->scratch->needstobuildcollider=1; zero_v3(sb->lcom); unit_m3(sb->lrot); unit_m3(sb->lscale); @@ -3910,15 +3917,15 @@ static void softbody_step(Scene *scene, Object *ob, SoftBody *sb, float dtime) /* the simulator */ float forcetime; double sct,sst; - - + + sst=PIL_check_seconds_timer(); - /* Integration back in time is possible in theory, but pretty useless here. + /* Integration back in time is possible in theory, but pretty useless here. So we refuse to do so. Since we do not know anything about 'outside' canges especially colliders we refuse to go more than 10 frames. */ - if(dtime < 0 || dtime > 10.5f) return; - + if(dtime < 0 || dtime > 10.5f) return; + ccd_update_deflector_hash(scene, ob, sb->scratch->colliderhash); if(sb->scratch->needstobuildcollider){ @@ -3928,7 +3935,7 @@ static void softbody_step(Scene *scene, Object *ob, SoftBody *sb, float dtime) sb->scratch->needstobuildcollider=0; } - if (sb->solver_ID < 2) { + if (sb->solver_ID < 2) { /* special case of 2nd order Runge-Kutta type AKA Heun */ int mid_flags=0; float err = 0; @@ -3938,21 +3945,21 @@ static void softbody_step(Scene *scene, Object *ob, SoftBody *sb, float dtime) /* loops = counter for emergency brake * we don't want to lock up the system if physics fail */ - int loops =0 ; - + int loops =0 ; + SoftHeunTol = sb->rklimit; /* humm .. this should be calculated from sb parameters and sizes */ /* adjust loop limits */ if (sb->minloops > 0) forcetimemax = dtime / sb->minloops; if (sb->maxloops > 0) forcetimemin = dtime / sb->maxloops; if(sb->solver_ID>0) mid_flags |= MID_PRESERVE; - + forcetime =forcetimemax; /* hope for integrating in one step */ while ( (ABS(timedone) < ABS(dtime)) && (loops < 2000) ) { - /* set goals in time */ + /* set goals in time */ interpolate_exciter(ob,200,(int)(200.0*(timedone/dtime))); - + sb->scratch->flag &= ~SBF_DOFUZZY; /* do predictive euler step */ softbody_calc_forces(scene, ob, forcetime,timedone/dtime,0); @@ -3964,9 +3971,9 @@ static void softbody_step(Scene *scene, Object *ob, SoftBody *sb, float dtime) softbody_apply_forces(ob, forcetime, 2, &err,mid_flags); softbody_apply_goalsnap(ob); - + if (err > SoftHeunTol) { /* error needs to be scaled to some quantity */ - + if (forcetime > forcetimemin){ forcetime = MAX2(forcetime / 2.0f,forcetimemin); softbody_restore_prev_step(ob); @@ -3978,7 +3985,7 @@ static void softbody_step(Scene *scene, Object *ob, SoftBody *sb, float dtime) } else { float newtime = forcetime * 1.1f; /* hope for 1.1 times better conditions in next step */ - + if (sb->scratch->flag & SBF_DOFUZZY){ //if (err > SoftHeunTol/(2.0f*sb->fuzzyness)) { /* stay with this stepsize unless err really small */ newtime = forcetime; @@ -3994,7 +4001,7 @@ static void softbody_step(Scene *scene, Object *ob, SoftBody *sb, float dtime) //if (newtime > forcetime) printf("up,"); if (forcetime > 0.0) forcetime = MIN2(dtime - timedone,newtime); - else + else forcetime = MAX2(dtime - timedone,newtime); } loops++; @@ -4002,20 +4009,20 @@ static void softbody_step(Scene *scene, Object *ob, SoftBody *sb, float dtime) sct=PIL_check_seconds_timer(); if (sct-sst > 0.5f) printf("%3.0f%% \r",100.0f*timedone/dtime); } - /* ask for user break */ + /* ask for user break */ if (SB_localInterruptCallBack && SB_localInterruptCallBack()) break; } /* move snapped to final position */ interpolate_exciter(ob, 2, 2); softbody_apply_goalsnap(ob); - + // if(G.f & G_DEBUG){ if(sb->solverflags & SBSO_MONITOR ){ if (loops > HEUNWARNLIMIT) /* monitor high loop counts */ printf("\r needed %d steps/frame",loops); } - + } else if (sb->solver_ID == 2) {/* do semi "fake" implicit euler */ From ab41296461353ffe27e01c75e70ee0d7948e75cb Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Tue, 15 Jun 2010 01:28:17 +0000 Subject: [PATCH 091/674] 'Fix' [#22591] Sun Lamp Sky / Atmosphere settings not rendering properly Turbidity values below 2.0 give weird results, made 2.0 the default soft minimum. --- source/blender/makesrna/intern/rna_lamp.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/makesrna/intern/rna_lamp.c b/source/blender/makesrna/intern/rna_lamp.c index b4b02737af0..769d73d9f79 100644 --- a/source/blender/makesrna/intern/rna_lamp.c +++ b/source/blender/makesrna/intern/rna_lamp.c @@ -275,6 +275,7 @@ static void rna_def_lamp_sky_settings(BlenderRNA *brna) prop= RNA_def_property(srna, "atmosphere_turbidity", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "atm_turbidity"); RNA_def_property_range(prop, 1.0f, 30.0f); + RNA_def_property_ui_range(prop, 2.0f, 10.0f, 1, 2); RNA_def_property_ui_text(prop, "Atmosphere Turbidity", "Sky turbidity"); RNA_def_property_update(prop, 0, "rna_Lamp_sky_update"); From 8d3a5a8b0aebb8b897e4e01d517720196e0b075b Mon Sep 17 00:00:00 2001 From: Luca Bonavita Date: Tue, 15 Jun 2010 02:06:01 +0000 Subject: [PATCH 092/674] == python api docs == * source/blender/python/doc/sphinx_doc_gen.py: changed the "undocumented" message so that it still links to http://wiki.blender.org/index.php/Dev:2.5/Py/API/Documentation/Contribute but uses flags in the url to help documenting. Example: http://www.blender.org/documentation/250PythonDoc/bpy.ops.node.html#bpy.ops.node.link click on "contribute", the new section has title "bpy.ops.node.link" and a howto message is shown * source/blender/python/intern/bpy.c: fixed a typo --- source/blender/python/doc/sphinx_doc_gen.py | 39 ++++++++++++++------- source/blender/python/intern/bpy.c | 2 +- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/source/blender/python/doc/sphinx_doc_gen.py b/source/blender/python/doc/sphinx_doc_gen.py index 8f823ae238f..4640ba4c1ef 100644 --- a/source/blender/python/doc/sphinx_doc_gen.py +++ b/source/blender/python/doc/sphinx_doc_gen.py @@ -24,7 +24,7 @@ run this script from blenders root path once you have compiled blender ./blender.bin -b -P /b/source/blender/python/doc/sphinx_doc_gen.py This will generate python files in "./source/blender/python/doc/sphinx-in" -Generate html docs by running... +Generate html docs by running... sphinx-build source/blender/python/doc/sphinx-in source/blender/python/doc/sphinx-out @@ -54,10 +54,19 @@ EXAMPLE_SET_USED = set() _BPY_STRUCT_FAKE = "bpy_struct" _BPY_FULL_REBUILD = False -undocumented_message = "Undocumented (`suggest a description " \ - "`_)\n\n" +def undocumented_message(module_name, type_name, identifier): + message = "Undocumented (`contribute " \ + "`_)\n\n" % (module_name, type_name, identifier) + return message + def range_str(val): + ''' + Converts values to strings for the range directive. + (unused function it seems) + ''' if val < -10000000: return '-inf' if val > 10000000: return 'inf' if type(val)==float: @@ -66,9 +75,9 @@ def range_str(val): return str(val) -def write_example_ref(ident, fw, example_id, ext=".py"): +def write_example_ref(ident, fw, example_id, ext="py"): if example_id in EXAMPLE_SET: - fw("%s.. literalinclude:: ../examples/%s%s\n\n" % (ident, example_id, ext)) + fw("%s.. literalinclude:: ../examples/%s.%s\n\n" % (ident, example_id, ext)) EXAMPLE_SET_USED.add(example_id) else: if bpy.app.debug: @@ -76,6 +85,9 @@ def write_example_ref(ident, fw, example_id, ext=".py"): def write_indented_lines(ident, fn, text, strip=True): + ''' + Apply same indentation to all lines in a multilines text. + ''' if text is None: return for l in text.split("\n"): @@ -131,14 +143,15 @@ def pyfunc2sphinx(ident, fw, identifier, py_func, is_class=True): def py_descr2sphinx(ident, fw, descr, module_name, type_name, identifier): + doc = descr.__doc__ if not doc: - doc = undocumented_message + doc = undocumented_message(module_name, type_name, identifier) if type(descr) == GetSetDescriptorType: fw(ident + ".. attribute:: %s\n\n" % identifier) write_indented_lines(ident + " ", fw, doc, False) - elif type(descr) == MethodDescriptorType: # GetSetDescriptorType, GetSetDescriptorType's are not documented yet + elif type(descr) == MethodDescriptorType: # GetSetDescriptorType's are not documented yet write_indented_lines(ident, fw, doc, False) else: raise TypeError("type was not GetSetDescriptorType or MethodDescriptorType") @@ -146,7 +159,8 @@ def py_descr2sphinx(ident, fw, descr, module_name, type_name, identifier): write_example_ref(ident, fw, module_name + "." + type_name + "." + identifier) fw("\n") -def py_c_func2sphinx(ident, fw, identifier, py_func, is_class=True): + +def py_c_func2sphinx(ident, fw, module_name, type_name, identifier, py_func, is_class=True): ''' c defined function to sphinx. ''' @@ -157,7 +171,8 @@ def py_c_func2sphinx(ident, fw, identifier, py_func, is_class=True): fw("\n") else: fw(ident + ".. function:: %s()\n\n" % identifier) - fw(ident + " " + undocumented_message) + fw(ident + " " + undocumented_message(module_name, type_name, identifier)) + def pyprop2sphinx(ident, fw, identifier, py_prop): ''' @@ -221,7 +236,7 @@ def pymodule2sphinx(BASEPATH, module_name, module, title): elif value_type in (types.BuiltinMethodType, types.BuiltinFunctionType): # both the same at the moment but to be future proof # note: can't get args from these, so dump the string as is # this means any module used like this must have fully formatted docstrings. - py_c_func2sphinx("", fw, attribute, value, is_class=False) + py_c_func2sphinx("", fw, module_name, module, attribute, value, is_class=False) elif value_type == type: classes.append((attribute, value)) elif value_type in (bool, int, float, str, tuple): @@ -249,7 +264,7 @@ def pymodule2sphinx(BASEPATH, module_name, module, title): descr_items = [(key, descr) for key, descr in sorted(value.__dict__.items()) if not key.startswith("__")] for key, descr in descr_items: - if type(descr) == MethodDescriptorType: # GetSetDescriptorType, GetSetDescriptorType's are not documented yet + if type(descr) == MethodDescriptorType: # GetSetDescriptorType's are not documented yet py_descr2sphinx(" ", fw, descr, module_name, type_name, key) for key, descr in descr_items: @@ -685,7 +700,7 @@ def rna2sphinx(BASEPATH): # if the description isn't valid, we output the standard warning # with a link to the wiki so that people can help if not op.description or op.description == "(undocumented operator)": - operator_description = undocumented_message + operator_description = undocumented_message('bpy.ops',op.module_name,op.func_name) else: operator_description = op.description diff --git a/source/blender/python/intern/bpy.c b/source/blender/python/intern/bpy.c index 4e1a0abc517..8601ad96345 100644 --- a/source/blender/python/intern/bpy.c +++ b/source/blender/python/intern/bpy.c @@ -75,7 +75,7 @@ PyObject *bpy_home_paths(PyObject *self, PyObject *args) static char bpy_blend_paths_doc[] = ".. function:: blend_paths(absolute=False)\n" "\n" -" Returns a list of paths assosiated with this blend file.\n" +" Returns a list of paths associated with this blend file.\n" "\n" " :arg absolute: When true the paths returned are made absolute.\n" " :type absolute: boolean\n" From 7b0bda22e119d1cd568ed5e7f9644b2517430bfe Mon Sep 17 00:00:00 2001 From: Jens Ole Wund Date: Tue, 15 Jun 2010 09:47:37 +0000 Subject: [PATCH 093/674] soft body disable edge collision for bezier handles because of massive pointlessness --- source/blender/blenkernel/intern/softbody.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c index bbf51717e92..b44fe1ad1d0 100644 --- a/source/blender/blenkernel/intern/softbody.c +++ b/source/blender/blenkernel/intern/softbody.c @@ -83,7 +83,7 @@ static int (*SB_localInterruptCallBack)(void) = NULL; /* ********** soft body engine ******* */ -typedef enum {SB_EDGE=1,SB_BEND=2,SB_STIFFQUAD=3} type_spring; +typedef enum {SB_EDGE=1,SB_BEND=2,SB_STIFFQUAD=3,SB_HANDLE=4} type_spring; typedef struct BodySpring { int v1, v2; @@ -2129,6 +2129,7 @@ static void sb_spring_force(Object *ob,int bpi,BodySpring *bs,float iks,float fo kw = kw * kw; switch (bs->springtype){ case SB_EDGE: + case SB_HANDLE: forcefactor *= kw; break; case SB_BEND: @@ -3607,21 +3608,21 @@ static void curve_surf_to_softbody(Scene *scene, Object *ob) if(totspring) { if(a>0) { - bs->v1= curindex-1; + bs->v1= curindex-3; bs->v2= curindex; - bs->springtype=SB_EDGE; - bs->len= globallen( (bezt-1)->vec[2], bezt->vec[0], ob ); + bs->springtype=SB_HANDLE; + bs->len= globallen( (bezt-1)->vec[0], bezt->vec[0], ob ); bs++; } bs->v1= curindex; bs->v2= curindex+1; - bs->springtype=SB_EDGE; + bs->springtype=SB_HANDLE; bs->len= globallen( bezt->vec[0], bezt->vec[1], ob ); bs++; bs->v1= curindex+1; bs->v2= curindex+2; - bs->springtype=SB_EDGE; + bs->springtype=SB_HANDLE; bs->len= globallen( bezt->vec[1], bezt->vec[2], ob ); bs++; } From 9a5e5033a257bc21d4e7cc827f791a3918b8f1cb Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Tue, 15 Jun 2010 09:55:54 +0000 Subject: [PATCH 094/674] Fix for crash on bpy.ops.curve.vertex_add/bpy.ops.curve.extrude Removed view3d_operator_needs_opengl from addvert_Nurb, which is unneeded here --- source/blender/editors/curve/editcurve.c | 1 - 1 file changed, 1 deletion(-) diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 1b140276c22..7e8154f9381 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -3414,7 +3414,6 @@ static int addvert_Nurb(bContext *C, short mode, float location[3]) copy_m3_m4(mat, obedit->obmat); invert_m3_m3(imat,mat); - view3d_operator_needs_opengl(C); findselectedNurbvert(editnurb, &nu, &bezt, &bp); if(bezt==0 && bp==0) return OPERATOR_CANCELLED; From 927aac74ab5fa1326faa33c41b967e550088d5d5 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 15 Jun 2010 12:06:30 +0000 Subject: [PATCH 095/674] - module for reading blend start/end frames and scene name (useful for finding the total frame count without loading a blend file) - added render api as unstable to the docs. --- release/scripts/modules/blend_render_info.py | 99 ++++++++++++++++++++ source/blender/python/doc/sphinx_doc_gen.py | 1 + 2 files changed, 100 insertions(+) create mode 100755 release/scripts/modules/blend_render_info.py diff --git a/release/scripts/modules/blend_render_info.py b/release/scripts/modules/blend_render_info.py new file mode 100755 index 00000000000..b7018ad6b64 --- /dev/null +++ b/release/scripts/modules/blend_render_info.py @@ -0,0 +1,99 @@ +#!/usr/bin/python + +# ##### 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. +# +# ##### END GPL LICENSE BLOCK ##### + +# + +# This module can get render info without running from inside blender. +# +# This struct wont change according to Ton. +# Note that the size differs on 32/64bit +# +# typedef struct BHead { +# int code, len; +# void *old; +# int SDNAnr, nr; +# } BHead; + +def read_blend_rend_chunk(path): + + import struct + + file = open(path, 'rb') + + head = file.read(7) + + if head[0:2] == b'\x1f\x8b': # gzip magic + import gzip + file.close() + file = gzip.open(path, 'rb') + head = file.read(7) + + if head != b'BLENDER': + print("not a blend file:", path) + file.close() + return [] + + is_64_bit = (file.read(1) == b'-') + + # true for PPC, false for X86 + is_big_endian = (file.read(1) == b'V') + + # Now read the bhead chunk!!! + file.read(3) # skip the version + + scenes = [] + + sizeof_bhead = 24 if is_64_bit else 20 + + while file.read(4) == b'REND': + sizeof_bhead_left = sizeof_bhead - 4 + + rend_length = struct.unpack('>i' if is_big_endian else '2i' if is_big_endian else '<2i', file.read(8)) + + scene_name = file.read(24) + + scene_name = scene_name[:scene_name.index(b'\0')] + + try: + scene_name = str(scene_name, 'utf8') + except TypeError: + pass + + scenes.append((start_frame, end_frame, scene_name)) + + return scenes + + +def main(): + import sys + for arg in sys.argv[1:]: + if arg.lower().endswith('.blend'): + for value in read_blend_rend_chunk(arg): + print("%d %d %s" % value) + +if __name__ == '__main__': + main() diff --git a/source/blender/python/doc/sphinx_doc_gen.py b/source/blender/python/doc/sphinx_doc_gen.py index 4640ba4c1ef..3b0b9f60795 100644 --- a/source/blender/python/doc/sphinx_doc_gen.py +++ b/source/blender/python/doc/sphinx_doc_gen.py @@ -331,6 +331,7 @@ def rna2sphinx(BASEPATH): fw(" \n") fw(" The following areas are subject to change.\n") fw(" * operator names and arguments\n") + fw(" * render api\n") fw(" * function calls with the data api (any function calls with values accessed from bpy.data), including functions for importing and exporting meshes\n") fw(" * class registration (Operator, Panels, Menus, Headers)\n") fw(" * modules: bpy.props, blf)\n") From 982cd944a4cdf3e96f0c6ebbb97347de1b1c6279 Mon Sep 17 00:00:00 2001 From: Mitchell Stokes Date: Tue, 15 Jun 2010 17:12:21 +0000 Subject: [PATCH 096/674] Got the okay from Nathan to commit this: It's a small patch for Win32 Ghost that prevents a Blender window from setting the cursor position when it's not the active window. --- 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 76ce7703c06..91c1927f8e7 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.cpp +++ b/intern/ghost/intern/GHOST_SystemWin32.cpp @@ -271,6 +271,8 @@ GHOST_TSuccess GHOST_SystemWin32::getCursorPosition(GHOST_TInt32& x, GHOST_TInt3 GHOST_TSuccess GHOST_SystemWin32::setCursorPosition(GHOST_TInt32 x, GHOST_TInt32 y) { + if (!GetActiveWindow()) + return GHOST_kFailure; return ::SetCursorPos(x, y) == TRUE ? GHOST_kSuccess : GHOST_kFailure; } From 42ab9ed59abe435b9e64617fe3073fe3cfbeb80d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 15 Jun 2010 17:14:21 +0000 Subject: [PATCH 097/674] New Scene now has the popup from 2.4x which gives the option to copy. Added some test code for rna_info to create a big list of property+type+descriptions, useful for api name review. --- release/scripts/modules/rna_info.py | 16 ++++++++++++++++ .../editors/interface/interface_templates.c | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/release/scripts/modules/rna_info.py b/release/scripts/modules/rna_info.py index fa1d15a7845..0f6d60066a3 100644 --- a/release/scripts/modules/rna_info.py +++ b/release/scripts/modules/rna_info.py @@ -620,3 +620,19 @@ def BuildRNAInfo(): # print(rna_info) return InfoStructRNA.global_lookup, InfoFunctionRNA.global_lookup, InfoOperatorRNA.global_lookup, InfoPropertyRNA.global_lookup + + +if __name__ == "__main__": + import rna_info + struct = rna_info.BuildRNAInfo()[0] + data = "" + for struct_id, v in sorted(struct.items()): + struct_id_str = "".join(sid for sid in struct_id if struct_id) + props = [(prop.identifier, prop) for prop in v.properties] + + for prop_id, prop in sorted(props): + data += "%s.%s: %s %s\n" % (struct_id_str, prop.identifier, prop.type, prop.description) + + + text = bpy.data.texts.new(name="api.py") + text.from_string(data) diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 05c162ef639..fb515d55854 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -428,7 +428,7 @@ 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_EXEC_DEFAULT, ICON_ZOOMIN, (id)? "": "New", 0, 0, w, UI_UNIT_Y, NULL); + but= uiDefIconTextButO(block, BUT, newop, WM_OP_INVOKE_DEFAULT, ICON_ZOOMIN, (id)? "": "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 { From 3e3d2b7a4cfc38f673bdeb48707b95c7bd50049a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 15 Jun 2010 17:40:31 +0000 Subject: [PATCH 098/674] ifdef disable X11 mouse grab, it locks up the system for artists too often (whenever blender locks up). --- intern/ghost/intern/GHOST_SystemX11.cpp | 2 +- intern/ghost/intern/GHOST_WindowX11.cpp | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/intern/ghost/intern/GHOST_SystemX11.cpp b/intern/ghost/intern/GHOST_SystemX11.cpp index 1ae9b666c6b..052c868e5e0 100644 --- a/intern/ghost/intern/GHOST_SystemX11.cpp +++ b/intern/ghost/intern/GHOST_SystemX11.cpp @@ -465,7 +465,7 @@ GHOST_SystemX11::processEvent(XEvent *xe) /* could also clamp to screen bounds * wrap with a window outside the view will fail atm */ - bounds.wrapPoint(x_new, y_new, 2); /* offset of one incase blender is at screen bounds */ + bounds.wrapPoint(x_new, y_new, 8); /* offset of one incase blender is at screen bounds */ window->getCursorGrabAccum(x_accum, y_accum); if(x_new != xme.x_root || y_new != xme.y_root) { diff --git a/intern/ghost/intern/GHOST_WindowX11.cpp b/intern/ghost/intern/GHOST_WindowX11.cpp index b3b1c8ae0f7..60e12ff78df 100644 --- a/intern/ghost/intern/GHOST_WindowX11.cpp +++ b/intern/ghost/intern/GHOST_WindowX11.cpp @@ -57,6 +57,9 @@ typedef struct { #define MWM_HINTS_DECORATIONS (1L << 1) + +// #define GHOST_X11_GRAB + /* * A Client can't change the window property, that is * the work of the window manager. In case, we send @@ -1442,7 +1445,9 @@ setWindowCursorGrab( setWindowCursorVisibility(false); } +#ifdef GHOST_X11_GRAB XGrabPointer(m_display, m_window, False, ButtonPressMask| ButtonReleaseMask|PointerMotionMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime); +#endif } else { if (m_cursorGrab==GHOST_kGrabHide) { @@ -1460,7 +1465,9 @@ setWindowCursorGrab( /* Almost works without but important otherwise the mouse GHOST location can be incorrect on exit */ setCursorGrabAccum(0, 0); m_cursorGrabBounds.m_l= m_cursorGrabBounds.m_r= -1; /* disable */ +#ifdef GHOST_X11_GRAB XUngrabPointer(m_display, CurrentTime); +#endif } XFlush(m_display); From bb7062abcb4169f8f7676ebef54d5e6b8b27218a Mon Sep 17 00:00:00 2001 From: Andre Susano Pinto Date: Tue, 15 Jun 2010 20:00:01 +0000 Subject: [PATCH 099/674] bugfix [#22581] - on instances last hit optimization was jumping to the last hit face inside an instance without doing space transformation. Fixed by making last hit optimization jump to the root node of the instance instead of the last hit face. --- source/blender/render/intern/source/rayobject_instance.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/blender/render/intern/source/rayobject_instance.c b/source/blender/render/intern/source/rayobject_instance.c index c36ab454f3d..25765c4763a 100644 --- a/source/blender/render/intern/source/rayobject_instance.c +++ b/source/blender/render/intern/source/rayobject_instance.c @@ -143,6 +143,13 @@ static int RE_rayobject_instance_intersect(RayObject *o, Isect *isec) { isec->labda *= dist / isec->dist; isec->hit.ob = obj->ob; + +#ifdef RT_USE_LAST_HIT + // TODO support for last hit optimization in instances that can jump + // directly to the last hit face. + // For now it jumps directly to the last-hit instance root node. + isec->last_hit = RE_rayobject_unalignRayAPI((RayObject*) obj); +#endif } isec->dist = dist; VECCOPY( isec->start, start ); From a648a4699f1bcde20ea067c7b729d46c5f8ecd58 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 15 Jun 2010 21:46:02 +0000 Subject: [PATCH 100/674] scale option was only working for panoramic cameras --- source/blender/blenlib/BLI_uvproject.h | 3 + source/blender/blenlib/intern/uvproject.c | 7 ++ .../blender/modifiers/intern/MOD_uvproject.c | 107 +++++++----------- 3 files changed, 51 insertions(+), 66 deletions(-) diff --git a/source/blender/blenlib/BLI_uvproject.h b/source/blender/blenlib/BLI_uvproject.h index a77ca60fc15..cf8bb7cd4b8 100644 --- a/source/blender/blenlib/BLI_uvproject.h +++ b/source/blender/blenlib/BLI_uvproject.h @@ -37,4 +37,7 @@ void project_from_view(float target[2], float source[3], float persmat[4][4], fl /* apply ortho uv's */ void project_from_view_ortho(float target[2], float source[3], float rotmat[4][4]); +/* so we can adjust scale with keeping the struct private */ +void project_camera_info_scale(struct UvCameraInfo *uci, float scale_x, float scale_y); + #endif diff --git a/source/blender/blenlib/intern/uvproject.c b/source/blender/blenlib/intern/uvproject.c index 11d93748fe4..cc115d52928 100644 --- a/source/blender/blenlib/intern/uvproject.c +++ b/source/blender/blenlib/intern/uvproject.c @@ -182,3 +182,10 @@ void project_from_view_ortho(float target[2], float source[3], float rotmat[4][4 target[0] = -pv[0]; target[1] = pv[2]; } + + +void project_camera_info_scale(UvCameraInfo *uci, float scale_x, float scale_y) +{ + uci->xasp *= scale_x; + uci->yasp *= scale_y; +} diff --git a/source/blender/modifiers/intern/MOD_uvproject.c b/source/blender/modifiers/intern/MOD_uvproject.c index 2e4194cd1dd..fda3e1c75ef 100644 --- a/source/blender/modifiers/intern/MOD_uvproject.c +++ b/source/blender/modifiers/intern/MOD_uvproject.c @@ -176,51 +176,42 @@ static DerivedMesh *uvprojectModifier_do(UVProjectModifierData *umd, projectors[i].uci= NULL; if(projectors[i].ob->type == OB_CAMERA) { + cam = (Camera *)projectors[i].ob->data; - if(cam->flag & CAM_PANORAMA) { projectors[i].uci= project_camera_info(projectors[i].ob, NULL, aspx, aspy); + project_camera_info_scale(projectors[i].uci, scax, scay); free_uci= 1; } - else if(cam->type == CAM_PERSP) { - float perspmat[4][4]; - float xmax; - float xmin; - float ymax; - float ymin; - float pixsize = cam->clipsta * 32.0 / cam->lens; + else { + float scale= (cam->type == CAM_PERSP) ? cam->clipsta * 32.0 / cam->lens : cam->ortho_scale; + float xmax, xmin, ymax, ymin; if(aspect > 1.0f) { - xmax = 0.5f * pixsize; + xmax = 0.5f * scale; ymax = xmax / aspect; } else { - ymax = 0.5f * pixsize; - xmax = ymax * aspect; + ymax = 0.5f * scale; + xmax = ymax * aspect; } xmin = -xmax; ymin = -ymax; - perspective_m4( perspmat,xmin, xmax, ymin, ymax, cam->clipsta, cam->clipend); - mul_m4_m4m4(tmpmat, projectors[i].projmat, perspmat); - } else if(cam->type == CAM_ORTHO) { - float orthomat[4][4]; - float xmax; - float xmin; - float ymax; - float ymin; + /* scale the matrix */ + xmin *= scax; + xmax *= scax; + ymin *= scay; + ymax *= scay; - if(aspect > 1.0f) { - xmax = 0.5f * cam->ortho_scale; - ymax = xmax / aspect; - } else { - ymax = 0.5f * cam->ortho_scale; - xmax = ymax * aspect; + if(cam->type == CAM_PERSP) { + float perspmat[4][4]; + perspective_m4( perspmat,xmin, xmax, ymin, ymax, cam->clipsta, cam->clipend); + mul_m4_m4m4(tmpmat, projectors[i].projmat, perspmat); + } else { /* if(cam->type == CAM_ORTHO) */ + float orthomat[4][4]; + orthographic_m4( orthomat,xmin, xmax, ymin, ymax, cam->clipsta, cam->clipend); + mul_m4_m4m4(tmpmat, projectors[i].projmat, orthomat); } - xmin = -xmax; - ymin = -ymax; - - orthographic_m4( orthomat,xmin, xmax, ymin, ymax, cam->clipsta, cam->clipend); - mul_m4_m4m4(tmpmat, projectors[i].projmat, orthomat); } } else { copy_m4_m4(tmpmat, projectors[i].projmat); @@ -278,42 +269,26 @@ static DerivedMesh *uvprojectModifier_do(UVProjectModifierData *umd, /* apply coords as UVs, and apply image if tfaces are new */ for(i = 0, mf = mface; i < numFaces; ++i, ++mf, ++tface) { if(override_image || !image || tface->tpage == image) { - if(num_projectors == 1) { - if(projectors[0].uci) { - project_from_camera(tface->uv[0], coords[mf->v1], projectors[0].uci); - project_from_camera(tface->uv[1], coords[mf->v2], projectors[0].uci); - project_from_camera(tface->uv[2], coords[mf->v3], projectors[0].uci); - if(mf->v3) - project_from_camera(tface->uv[3], coords[mf->v4], projectors[0].uci); - - if(scax != 1.0f) { - tface->uv[0][0] = ((tface->uv[0][0] - 0.5f) * scax) + 0.5f; - tface->uv[1][0] = ((tface->uv[1][0] - 0.5f) * scax) + 0.5f; - tface->uv[2][0] = ((tface->uv[2][0] - 0.5f) * scax) + 0.5f; - if(mf->v3) - tface->uv[3][0] = ((tface->uv[3][0] - 0.5f) * scax) + 0.5f; - } - - if(scay != 1.0f) { - tface->uv[0][1] = ((tface->uv[0][1] - 0.5f) * scay) + 0.5f; - tface->uv[1][1] = ((tface->uv[1][1] - 0.5f) * scay) + 0.5f; - tface->uv[2][1] = ((tface->uv[2][1] - 0.5f) * scay) + 0.5f; - if(mf->v3) - tface->uv[3][1] = ((tface->uv[3][1] - 0.5f) * scay) + 0.5f; - } + if(num_projectors == 1) { + if(projectors[0].uci) { + project_from_camera(tface->uv[0], coords[mf->v1], projectors[0].uci); + project_from_camera(tface->uv[1], coords[mf->v2], projectors[0].uci); + project_from_camera(tface->uv[2], coords[mf->v3], projectors[0].uci); + if(mf->v3) + project_from_camera(tface->uv[3], coords[mf->v4], projectors[0].uci); + } + else { + /* apply transformed coords as UVs */ + tface->uv[0][0] = coords[mf->v1][0]; + tface->uv[0][1] = coords[mf->v1][1]; + tface->uv[1][0] = coords[mf->v2][0]; + tface->uv[1][1] = coords[mf->v2][1]; + tface->uv[2][0] = coords[mf->v3][0]; + tface->uv[2][1] = coords[mf->v3][1]; + if(mf->v4) { + tface->uv[3][0] = coords[mf->v4][0]; + tface->uv[3][1] = coords[mf->v4][1]; } - else { - /* apply transformed coords as UVs */ - tface->uv[0][0] = coords[mf->v1][0]; - tface->uv[0][1] = coords[mf->v1][1]; - tface->uv[1][0] = coords[mf->v2][0]; - tface->uv[1][1] = coords[mf->v2][1]; - tface->uv[2][0] = coords[mf->v3][0]; - tface->uv[2][1] = coords[mf->v3][1]; - if(mf->v4) { - tface->uv[3][0] = coords[mf->v4][0]; - tface->uv[3][1] = coords[mf->v4][1]; - } } } else { /* multiple projectors, select the closest to face normal @@ -351,7 +326,7 @@ static DerivedMesh *uvprojectModifier_do(UVProjectModifierData *umd, best_projector = &projectors[j]; } } - + if(best_projector->uci) { project_from_camera(tface->uv[0], coords[mf->v1], best_projector->uci); project_from_camera(tface->uv[1], coords[mf->v2], best_projector->uci); From 6058dd6c68fb20982f4538125a3014636f86dbcc Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Tue, 15 Jun 2010 21:51:15 +0000 Subject: [PATCH 101/674] Compositor 'free unused' option wasn't working at all, it was referring to the same property as renderer 'free texture images' flag. Ouch. --- source/blender/makesrna/intern/rna_scene.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 545369727e4..425cfa924a3 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -2517,7 +2517,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); prop= RNA_def_property(srna, "free_unused_nodes", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "scemode", R_FREE_IMAGE); + RNA_def_property_boolean_sdna(prop, NULL, "scemode", R_COMP_FREE); RNA_def_property_ui_text(prop, "Free Unused Nodes", "Free Nodes that are not used while compositing, to save memory"); RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); From 449569812db36c6420b2dd881664fb5ce51effa7 Mon Sep 17 00:00:00 2001 From: Jens Ole Wund Date: Wed, 16 Jun 2010 00:42:18 +0000 Subject: [PATCH 102/674] soft body text label correction --- release/scripts/ui/properties_physics_softbody.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release/scripts/ui/properties_physics_softbody.py b/release/scripts/ui/properties_physics_softbody.py index 696f29810a3..43404a5ba8b 100644 --- a/release/scripts/ui/properties_physics_softbody.py +++ b/release/scripts/ui/properties_physics_softbody.py @@ -197,7 +197,7 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel): class PHYSICS_PT_softbody_collision(PhysicButtonsPanel): - bl_label = "Soft Body Collision" + bl_label = "Soft Body Self Collision" bl_default_closed = True def poll(self, context): @@ -218,7 +218,7 @@ class PHYSICS_PT_softbody_collision(PhysicButtonsPanel): layout.active = softbody.self_collision and softbody_panel_enabled(md) - layout.label(text="Collision Type:") + layout.label(text="Collision Ball Size Calculation:") if wide_ui: layout.prop(softbody, "collision_type", expand=True) else: From bc8e0c0f932f4d6ce2cd49029498c1965ee46a67 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Wed, 16 Jun 2010 06:20:56 +0000 Subject: [PATCH 103/674] Partial fix for [#22574] Logic Panel missing buttons (when selecting multiple objects) This commit allows you to see the Logic Bricks for multiple objects at once. It still will only add s/c/a for the active object. @Matt, currently "LOGIC_OT_controller_add" uses the active object. That's good for the operator to work in scripts, however for the UI we need something different. Ideally I would like to pass the object as an (optional) parameter to the operator. Not sure if it's possible. The solution in 2.49 looks too "2.50 incompatible". In there ob->scaflag is set to be retrieve later by "do_logic_buts". Smart but too hacky imho. --- .../editors/space_logic/logic_window.c | 88 ++++++++++--------- 1 file changed, 46 insertions(+), 42 deletions(-) diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index a73902d6a2b..226d326d68f 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -4393,38 +4393,6 @@ static void logic_buttons_new(bContext *C, ARegion *ar) uiItemR(row, &logic_ptr, "controllers_show_active_objects", 0, "Act", 0); uiItemR(row, &logic_ptr, "controllers_show_linked_controller", 0, "Link", 0); - RNA_pointer_create((ID *)ob, &RNA_GameObjectSettings, ob, &settings_ptr); - - split= uiLayoutSplit(layout, 0.05, 0); - uiItemR(split, &settings_ptr, "show_state_panel", UI_ITEM_R_NO_BG, "", ICON_DISCLOSURE_TRI_RIGHT); - - row = uiLayoutRow(split, 1); - uiDefButBitS(block, TOG, OB_SHOWCONT, B_REDR, ob->id.name+2,(short)(xco-10), yco, (short)(width-30), UI_UNIT_Y, &ob->scaflag, 0, 31, 0, 0, "Object name, click to show/hide controllers"); - uiItemMenuEnumO(row, "LOGIC_OT_controller_add", "type", "Add Controller", 0); - - if (RNA_boolean_get(&settings_ptr, "show_state_panel")) { - - box= uiLayoutBox(layout); - uiLayoutSetAlignment(box, UI_LAYOUT_ALIGN_CENTER); //XXX doesn't seem to work - split= uiLayoutSplit(box, 0.2, 0); - - col= uiLayoutColumn(split, 0); - uiItemL(col, "Visible", 0); - uiItemL(col, "Initial", 0); - - subsplit= uiLayoutSplit(split, 0.85, 0); - col= uiLayoutColumn(subsplit, 0); - row= uiLayoutRow(col, 0); - uiLayoutSetActive(row, RNA_boolean_get(&settings_ptr, "all_states")==0); - uiTemplateLayers(row, &settings_ptr, "state", &settings_ptr, "used_state", 0); - row= uiLayoutRow(col, 0); - uiTemplateLayers(row, &settings_ptr, "initial_state", &settings_ptr, "used_state", 0); - - col= uiLayoutColumn(subsplit, 0); - uiItemR(col, &settings_ptr, "all_states", UI_ITEM_R_TOGGLE, NULL, 0); - uiItemR(col, &settings_ptr, "debug_state", 0, "", 0); - } - for(a=0; aid.name+2,(short)(xco-10), yco, (short)(width-30), UI_UNIT_Y, &ob->scaflag, 0, 31, 0, 0, "Object name, click to show/hide controllers"); + uiItemMenuEnumO(row, "LOGIC_OT_controller_add", "type", "Add Controller", 0); + + if (RNA_boolean_get(&settings_ptr, "show_state_panel")) { + + box= uiLayoutBox(layout); + split= uiLayoutSplit(box, 0.2, 0); + + col= uiLayoutColumn(split, 0); + uiItemL(col, "Visible", 0); + uiItemL(col, "Initial", 0); + + subsplit= uiLayoutSplit(split, 0.85, 0); + col= uiLayoutColumn(subsplit, 0); + row= uiLayoutRow(col, 0); + uiLayoutSetActive(row, RNA_boolean_get(&settings_ptr, "all_states")==0); + uiTemplateLayers(row, &settings_ptr, "state", &settings_ptr, "used_state", 0); + row= uiLayoutRow(col, 0); + uiTemplateLayers(row, &settings_ptr, "initial_state", &settings_ptr, "used_state", 0); + + col= uiLayoutColumn(subsplit, 0); + uiItemR(col, &settings_ptr, "all_states", UI_ITEM_R_TOGGLE, NULL, 0); + uiItemR(col, &settings_ptr, "debug_state", 0, "", 0); + } + + /* End of Drawing the Controller Header common to all Selected Objects */ + if (!(ob->scavisflag & OB_VIS_CONT) || !(ob->scaflag & OB_SHOWCONT)) continue; + uiItemS(layout); for(cont= ob->controllers.first; cont; cont=cont->next) { @@ -4498,15 +4502,15 @@ static void logic_buttons_new(bContext *C, ARegion *ar) uiItemR(row, &logic_ptr, "sensors_show_linked_controller", 0, "Link", 0); uiItemR(row, &logic_ptr, "sensors_show_active_states", 0, "State", 0); - row = uiLayoutRow(layout, 1); - uiDefButBitS(block, TOG, OB_SHOWSENS, B_REDR, ob->id.name+2,(short)(xco-10), yco, (short)(width-30), UI_UNIT_Y, &ob->scaflag, 0, 31, 0, 0, "Object name, click to show/hide sensors"); - uiItemMenuEnumO(row, "LOGIC_OT_sensor_add", "type", "Add Sensor", 0); - for(a=0; aid.name+2,(short)(xco-10), yco, (short)(width-30), UI_UNIT_Y, &ob->scaflag, 0, 31, 0, 0, "Object name, click to show/hide sensors"); + uiItemMenuEnumO(row, "LOGIC_OT_sensor_add", "type", "Add Sensor", 0); if (!(ob->scavisflag & OB_VIS_SENS) || !(ob->scaflag & OB_SHOWSENS)) continue; @@ -4557,16 +4561,16 @@ static void logic_buttons_new(bContext *C, ARegion *ar) uiItemR(row, &logic_ptr, "actuators_show_linked_controller", 0, "Link", 0); uiItemR(row, &logic_ptr, "actuators_show_active_states", 0, "State", 0); - row = uiLayoutRow(layout, 1); - uiDefButBitS(block, TOG, OB_SHOWACT, B_REDR, ob->id.name+2,(short)(xco-10), yco, (short)(width-30), UI_UNIT_Y, &ob->scaflag, 0, 31, 0, 0, "Object name, click to show/hide actuators"); - uiItemMenuEnumO(row, "LOGIC_OT_actuator_add", "type", "Add Actuator", 0); - for(a=0; aid.name+2,(short)(xco-10), yco, (short)(width-30), UI_UNIT_Y, &ob->scaflag, 0, 31, 0, 0, "Object name, click to show/hide actuators"); + uiItemMenuEnumO(row, "LOGIC_OT_actuator_add", "type", "Add Actuator", 0); + if (!(ob->scavisflag & OB_VIS_ACT) || !(ob->scaflag & OB_SHOWACT)) continue; uiItemS(layout); From 6a70a6bee2803290c42821847597f43a0e084938 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Wed, 16 Jun 2010 08:29:40 +0000 Subject: [PATCH 104/674] Logic UI: partial implementation of state per controller Adding two rna properties: state and state_number For scripting "state_number" (integer) makes more sense while "state" (boolean/array) may be needed for the UI. So far the UI is only showing the state number (using Label). Still have to decide how is the better way to "change the state". If we don't need "state" (as boolean) for the UI, we can have only the integer one and rename it to "state". + some cosmetic changes (renamed ob "states" to "visible states") ps.: 2 goals == 2 commits... let's see if I can keep that ratio until the middle of July ... --- .../blender/editors/space_logic/logic_ops.c | 1 - .../editors/space_logic/logic_window.c | 8 +- .../blender/makesrna/intern/rna_controller.c | 74 ++++++++++++++++++- source/blender/makesrna/intern/rna_object.c | 2 +- 4 files changed, 81 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/space_logic/logic_ops.c b/source/blender/editors/space_logic/logic_ops.c index 632331459cb..72697bfa8eb 100644 --- a/source/blender/editors/space_logic/logic_ops.c +++ b/source/blender/editors/space_logic/logic_ops.c @@ -484,7 +484,6 @@ static int actuator_add_exec(bContext *C, wmOperator *op) PropertyRNA *prop; const char *act_name; char name[32]; - //XXX RNA_string_get is not using maxlen, it's using UserPreferencesFilePaths_python_scripts_directory_get instead (what limits the string copy to 160 chars in this case and CRASHES Blender). int type= RNA_enum_get(op->ptr, "type"); act= new_actuator(type); diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index 226d326d68f..104bcc6286d 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -3507,6 +3507,7 @@ void draw_brick_sensor(uiLayout *layout, PointerRNA *ptr, bContext *C) static void draw_controller_header(uiLayout *layout, PointerRNA *ptr) { uiLayout *box, *row; + char name[3]; //XXX provisorly for state number box= uiLayoutBox(layout); row= uiLayoutRow(box, 0); @@ -3514,6 +3515,11 @@ static void draw_controller_header(uiLayout *layout, PointerRNA *ptr) uiItemR(row, ptr, "expanded", UI_ITEM_R_NO_BG, "", 0); uiItemR(row, ptr, "type", 0, "", 0); uiItemR(row, ptr, "name", 0, "", 0); + + /* XXX provisory: state number */ + sprintf(name, "%d", RNA_int_get(ptr, "state_number")); + uiItemL(row, name, 0); + uiItemR(row, ptr, "priority", 0, "", 0); uiItemO(row, "", ICON_X, "LOGIC_OT_controller_remove"); } @@ -4425,7 +4431,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar) col= uiLayoutColumn(subsplit, 0); row= uiLayoutRow(col, 0); uiLayoutSetActive(row, RNA_boolean_get(&settings_ptr, "all_states")==0); - uiTemplateLayers(row, &settings_ptr, "state", &settings_ptr, "used_state", 0); + uiTemplateLayers(row, &settings_ptr, "visible_state", &settings_ptr, "used_state", 0); row= uiLayoutRow(col, 0); uiTemplateLayers(row, &settings_ptr, "initial_state", &settings_ptr, "used_state", 0); diff --git a/source/blender/makesrna/intern/rna_controller.c b/source/blender/makesrna/intern/rna_controller.c index dd174c668f2..9f4efe06a8d 100644 --- a/source/blender/makesrna/intern/rna_controller.c +++ b/source/blender/makesrna/intern/rna_controller.c @@ -28,7 +28,7 @@ #include "RNA_define.h" #include "rna_internal.h" - +#include "DNA_object_types.h" #include "DNA_controller_types.h" EnumPropertyItem controller_type_items[] ={ @@ -82,6 +82,60 @@ static void rna_Controller_type_set(struct PointerRNA *ptr, int value) } } +static int rna_Controller_state_number_get(struct PointerRNA *ptr) +{ + bController *cont= (bController *)ptr->data; + int bit; + + for (bit=0; bit<32; bit++) { + if (cont->state_mask & (1<data; + if (value < 1 || value > OB_MAX_STATES) + return; + + cont->state_mask = (1 << (value - 1)); +} + +static void rna_Controller_state_get(PointerRNA *ptr, int *values) +{ + bController *cont= (bController *)ptr->data; + int i; + + memset(values, 0, sizeof(int)*OB_MAX_STATES); + for(i=0; istate_mask & (1<data; + int i, tot= 0; + + /* ensure we always have some state selected */ + for(i=0; i1) + return; + + for(i=0; istate_mask |= (1<state_mask &= ~(1< Date: Wed, 16 Jun 2010 08:36:18 +0000 Subject: [PATCH 105/674] A bad assignment was causing the VideoTexture to set off a breakpoint when being initialized in debug mode. (Benoit gave the go ahead for this fix) --- source/gameengine/VideoTexture/blendVideoTex.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/gameengine/VideoTexture/blendVideoTex.cpp b/source/gameengine/VideoTexture/blendVideoTex.cpp index 01e783edc10..5cb50900c89 100644 --- a/source/gameengine/VideoTexture/blendVideoTex.cpp +++ b/source/gameengine/VideoTexture/blendVideoTex.cpp @@ -206,7 +206,7 @@ PyObject* initVideoTexture(void) PyModule_AddObject(m, (char*)"Texture", (PyObject*)&TextureType); // init last error description - Exception::m_lastError[0] = '\0'; + Exception::m_lastError = ""; return m; } From e748969fd91f68dcd4ac907e6046784edc370db9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 16 Jun 2010 12:55:49 +0000 Subject: [PATCH 106/674] request from William, twice as close camera zoom limit --- source/blender/editors/space_view3d/view3d_edit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 4aa49bca366..f74a0381b24 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -1111,7 +1111,7 @@ static int viewzoom_exec(bContext *C, wmOperator *op) else { if(rv3d->persp==RV3D_CAMOB) { rv3d->camzoom+= 10; - if(rv3d->camzoom>300) rv3d->camzoom= 300; + if(rv3d->camzoom>600) rv3d->camzoom= 600; } else if(rv3d->dist> 0.001*v3d->grid) { view_zoom_mouseloc(CTX_wm_region(C), .83333f, mx, my); From dd3513e3622ab09db5b619a061db43f6b5447380 Mon Sep 17 00:00:00 2001 From: Diego Borghetti Date: Wed, 16 Jun 2010 16:42:40 +0000 Subject: [PATCH 107/674] Fix Bug #22324 Blender crashes when wiring an image input to an image output in the compositor (not the same image) The string to keep the full path was usign FILE_MAXDIR, when has to be both, FILE_MAXDIR + FILE_MAXFILE (240, like FILE_MAX). --- source/blender/blenlib/intern/path_util.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 2cea9c21a57..f9acf7ba148 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -1010,8 +1010,8 @@ void BLI_make_exist(char *dir) { void BLI_make_existing_file(char *name) { - char di[FILE_MAXDIR], fi[FILE_MAXFILE]; - + char di[FILE_MAXDIR+FILE_MAXFILE], fi[FILE_MAXFILE]; + strcpy(di, name); BLI_splitdirstring(di, fi); From 08a94f9bbdf74a2d87da5908d919d018445ca222 Mon Sep 17 00:00:00 2001 From: Mitchell Stokes Date: Wed, 16 Jun 2010 19:07:20 +0000 Subject: [PATCH 108/674] BGE: When dynamically loading scenes (bge.logic.LibLoad()) in GLSL mode, the lights in the loaded scene would not affect the current scene and vice versa. To fix this, I've updated to merge code to update the scenes that the shaders are using to the scene being merged into. --- source/gameengine/Ketsji/BL_BlenderShader.h | 7 +++++++ source/gameengine/Ketsji/KX_BlenderMaterial.h | 1 + source/gameengine/Ketsji/KX_Scene.cpp | 2 +- source/gameengine/Rasterizer/RAS_BucketManager.cpp | 10 +++++++++- source/gameengine/Rasterizer/RAS_BucketManager.h | 2 +- 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/source/gameengine/Ketsji/BL_BlenderShader.h b/source/gameengine/Ketsji/BL_BlenderShader.h index 400c355bd0a..c2d4245b77f 100644 --- a/source/gameengine/Ketsji/BL_BlenderShader.h +++ b/source/gameengine/Ketsji/BL_BlenderShader.h @@ -56,6 +56,13 @@ public: void ReloadMaterial(); int GetBlendMode(); + void SetScene(KX_Scene *scene) + { + mScene = scene; + mBlenderScene = scene->GetBlenderScene(); + ReloadMaterial(); + } + bool Equals(BL_BlenderShader *blshader); diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.h b/source/gameengine/Ketsji/KX_BlenderMaterial.h index c5f5e23c6e7..e28c43d1a23 100644 --- a/source/gameengine/Ketsji/KX_BlenderMaterial.h +++ b/source/gameengine/Ketsji/KX_BlenderMaterial.h @@ -89,6 +89,7 @@ public: virtual void Replace_IScene(SCA_IScene *val) { mScene= static_cast(val); + mBlenderShader->SetScene(mScene); }; #ifndef DISABLE_PYTHON diff --git a/source/gameengine/Ketsji/KX_Scene.cpp b/source/gameengine/Ketsji/KX_Scene.cpp index d72fef166e6..99bec8159b4 100644 --- a/source/gameengine/Ketsji/KX_Scene.cpp +++ b/source/gameengine/Ketsji/KX_Scene.cpp @@ -1754,7 +1754,7 @@ bool KX_Scene::MergeScene(KX_Scene *other) } - GetBucketManager()->MergeBucketManager(other->GetBucketManager()); + GetBucketManager()->MergeBucketManager(other->GetBucketManager(), this); /* move materials across, assume they both use the same scene-converters */ GetSceneConverter()->MergeScene(this, other); diff --git a/source/gameengine/Rasterizer/RAS_BucketManager.cpp b/source/gameengine/Rasterizer/RAS_BucketManager.cpp index 4c22f4dcfc7..32fb1e31780 100644 --- a/source/gameengine/Rasterizer/RAS_BucketManager.cpp +++ b/source/gameengine/Rasterizer/RAS_BucketManager.cpp @@ -346,13 +346,21 @@ void RAS_BucketManager::RemoveMaterial(RAS_IPolyMaterial * mat) //#include -void RAS_BucketManager::MergeBucketManager(RAS_BucketManager *other) +void RAS_BucketManager::MergeBucketManager(RAS_BucketManager *other, SCA_IScene *scene) { /* concatinate lists */ // printf("BEFORE %d %d\n", GetSolidBuckets().size(), GetAlphaBuckets().size()); + BucketList::iterator it; + + for (it = other->GetSolidBuckets().begin(); it != other->GetSolidBuckets().end(); ++it) + (*it)->GetPolyMaterial()->Replace_IScene(scene); + GetSolidBuckets().insert( GetSolidBuckets().end(), other->GetSolidBuckets().begin(), other->GetSolidBuckets().end() ); other->GetSolidBuckets().clear(); + for (it = other->GetAlphaBuckets().begin(); it != other->GetAlphaBuckets().end(); ++it) + (*it)->GetPolyMaterial()->Replace_IScene(scene); + GetAlphaBuckets().insert( GetAlphaBuckets().end(), other->GetAlphaBuckets().begin(), other->GetAlphaBuckets().end() ); other->GetAlphaBuckets().clear(); //printf("AFTER %d %d\n", GetSolidBuckets().size(), GetAlphaBuckets().size()); diff --git a/source/gameengine/Rasterizer/RAS_BucketManager.h b/source/gameengine/Rasterizer/RAS_BucketManager.h index 9edac8dcdc8..487df50802c 100644 --- a/source/gameengine/Rasterizer/RAS_BucketManager.h +++ b/source/gameengine/Rasterizer/RAS_BucketManager.h @@ -63,7 +63,7 @@ public: void RemoveMaterial(RAS_IPolyMaterial * mat); // freeing scenes only /* for merging */ - void MergeBucketManager(RAS_BucketManager *other); + void MergeBucketManager(RAS_BucketManager *other, SCA_IScene *scene); BucketList & GetSolidBuckets() {return m_SolidBuckets;}; BucketList & GetAlphaBuckets() {return m_AlphaBuckets;}; From 22bca493b23904c4dee7130f5737005f8558a26d Mon Sep 17 00:00:00 2001 From: Luca Bonavita Date: Thu, 17 Jun 2010 02:38:49 +0000 Subject: [PATCH 109/674] == addons == - release/scripts/ui/space_userpref.py added the change to add a 'warning' field to bl_addon_info warning icons are used to show 'broken' scripts or warnings asked permission to campbell and matt in blendercoders to apply this - source/blender/python/doc/sphinx_doc_gen.py: small fix in the url --- release/scripts/ui/space_userpref.py | 29 ++++++++++++++------- source/blender/python/doc/sphinx_doc_gen.py | 2 +- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 066c0f2f60a..e3287b0a946 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -1200,10 +1200,25 @@ class USERPREF_PT_addons(bpy.types.Panel): arrow.operator("wm.addon_expand", icon="TRIA_RIGHT").module = module_name row.label(text=info["name"]) - row.operator("wm.addon_disable" if is_enabled else "wm.addon_enable").module = module_name + + if is_enabled: operator = "wm.addon_disable" + else: operator = "wm.addon_enable" + + if info["warning"]: button_icon='ERROR' + else: button_icon='BLENDER' + + row.operator(operator, icon=button_icon).module = module_name # Expanded UI (only if additional infos are available) if info["expanded"]: + if info["description"]: + split = column.row().split(percentage=0.15) + split.label(text='Description:') + split.label(text=info["description"]) + if info["location"]: + split = column.row().split(percentage=0.15) + split.label(text='Location:') + split.label(text=info["location"]) if info["author"]: split = column.row().split(percentage=0.15) split.label(text='Author:') @@ -1212,14 +1227,10 @@ class USERPREF_PT_addons(bpy.types.Panel): split = column.row().split(percentage=0.15) split.label(text='Version:') split.label(text=info["version"]) - if info["location"]: + if info["warning"]: split = column.row().split(percentage=0.15) - split.label(text='Location:') - split.label(text=info["location"]) - if info["description"]: - split = column.row().split(percentage=0.15) - split.label(text='Description:') - split.label(text=info["description"]) + split.label(text="Warning:") + split.label(text=' ' + info["warning"], icon = 'ERROR') if info["wiki_url"] or info["tracker_url"]: split = column.row().split(percentage=0.15) split.label(text="Internet:") @@ -1256,7 +1267,7 @@ class USERPREF_PT_addons(bpy.types.Panel): from bpy.props import * -def addon_info_get(mod, info_basis={"name": "", "author": "", "version": "", "blender": "", "location": "", "description": "", "wiki_url": "", "tracker_url": "", "category": "", "expanded": False}): +def addon_info_get(mod, info_basis={"name": "", "author": "", "version": "", "blender": "", "location": "", "description": "", "wiki_url": "", "tracker_url": "", "category": "", "warning": "", "expanded": False}): addon_info = getattr(mod, "bl_addon_info", {}) # avoid re-initializing diff --git a/source/blender/python/doc/sphinx_doc_gen.py b/source/blender/python/doc/sphinx_doc_gen.py index 3b0b9f60795..6363e14d85c 100644 --- a/source/blender/python/doc/sphinx_doc_gen.py +++ b/source/blender/python/doc/sphinx_doc_gen.py @@ -57,7 +57,7 @@ _BPY_FULL_REBUILD = False def undocumented_message(module_name, type_name, identifier): message = "Undocumented (`contribute " \ "`_)\n\n" % (module_name, type_name, identifier) return message From ed59822857de7e7b41b33b79c306f5e9b8755c62 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Thu, 17 Jun 2010 02:42:43 +0000 Subject: [PATCH 110/674] == SoC Bullet - Bullet Upgrade to 2.76 == Updated Blender's Bullet to 2.76 in this branch only. This update was done by: 1) deleting the contents of the existing extern/bullet2/src directory (leaving the .svn folder in place), 2) copy/pasting the contents of the bullet/src directory (from unzipped Bullet archive) into this newly cleared folder. Hopefully there aren't any patches that are still needed from the Bullet we had in source. --- Note: I didn't use Moguri's patch, since that was giving me compile errors with headers not being able to be found. [[Split portion of a mixed commit.]] --- extern/bullet2/Bullet-C-Api.h | 176 + .../BroadphaseCollision/btAxisSweep3.cpp | 37 + .../BroadphaseCollision/btAxisSweep3.h | 1051 ++++++ .../btBroadphaseInterface.h | 82 + .../BroadphaseCollision/btBroadphaseProxy.cpp | 17 + .../BroadphaseCollision/btBroadphaseProxy.h | 270 ++ .../btCollisionAlgorithm.cpp | 23 + .../btCollisionAlgorithm.h | 80 + .../BroadphaseCollision/btDbvt.cpp | 1295 ++++++++ .../BroadphaseCollision/btDbvt.h | 1256 +++++++ .../BroadphaseCollision/btDbvtBroadphase.cpp | 796 +++++ .../BroadphaseCollision/btDbvtBroadphase.h | 146 + .../BroadphaseCollision/btDispatcher.cpp | 22 + .../BroadphaseCollision/btDispatcher.h | 106 + .../btMultiSapBroadphase.cpp | 489 +++ .../btMultiSapBroadphase.h | 151 + .../btOverlappingPairCache.cpp | 633 ++++ .../btOverlappingPairCache.h | 469 +++ .../btOverlappingPairCallback.h | 40 + .../BroadphaseCollision/btQuantizedBvh.cpp | 1375 ++++++++ .../BroadphaseCollision/btQuantizedBvh.h | 579 ++++ .../btSimpleBroadphase.cpp | 349 ++ .../BroadphaseCollision/btSimpleBroadphase.h | 171 + extern/bullet2/BulletCollision/CMakeLists.txt | 273 ++ .../SphereTriangleDetector.cpp | 209 ++ .../SphereTriangleDetector.h | 51 + .../btActivatingCollisionAlgorithm.cpp | 47 + .../btActivatingCollisionAlgorithm.h | 36 + .../btBox2dBox2dCollisionAlgorithm.cpp | 435 +++ .../btBox2dBox2dCollisionAlgorithm.h | 66 + .../btBoxBoxCollisionAlgorithm.cpp | 85 + .../btBoxBoxCollisionAlgorithm.h | 66 + .../CollisionDispatch/btBoxBoxDetector.cpp | 704 ++++ .../CollisionDispatch/btBoxBoxDetector.h | 44 + .../btCollisionConfiguration.h | 47 + .../CollisionDispatch/btCollisionCreateFunc.h | 45 + .../btCollisionDispatcher.cpp | 303 ++ .../CollisionDispatch/btCollisionDispatcher.h | 159 + .../CollisionDispatch/btCollisionObject.cpp | 115 + .../CollisionDispatch/btCollisionObject.h | 508 +++ .../CollisionDispatch/btCollisionWorld.cpp | 1416 ++++++++ .../CollisionDispatch/btCollisionWorld.h | 470 +++ .../btCompoundCollisionAlgorithm.cpp | 351 ++ .../btCompoundCollisionAlgorithm.h | 86 + .../btConvex2dConvex2dAlgorithm.cpp | 247 ++ .../btConvex2dConvex2dAlgorithm.h | 95 + .../btConvexConcaveCollisionAlgorithm.cpp | 321 ++ .../btConvexConcaveCollisionAlgorithm.h | 116 + .../btConvexConvexAlgorithm.cpp | 574 ++++ .../btConvexConvexAlgorithm.h | 109 + .../btConvexPlaneCollisionAlgorithm.cpp | 155 + .../btConvexPlaneCollisionAlgorithm.h | 84 + .../btDefaultCollisionConfiguration.cpp | 298 ++ .../btDefaultCollisionConfiguration.h | 135 + .../btEmptyCollisionAlgorithm.cpp | 34 + .../btEmptyCollisionAlgorithm.h | 54 + .../CollisionDispatch/btGhostObject.cpp | 171 + .../CollisionDispatch/btGhostObject.h | 175 + .../btInternalEdgeUtility.cpp | 772 +++++ .../CollisionDispatch/btInternalEdgeUtility.h | 46 + .../CollisionDispatch/btManifoldResult.cpp | 134 + .../CollisionDispatch/btManifoldResult.h | 128 + .../btSimulationIslandManager.cpp | 392 +++ .../btSimulationIslandManager.h | 81 + .../btSphereBoxCollisionAlgorithm.cpp | 260 ++ .../btSphereBoxCollisionAlgorithm.h | 75 + .../btSphereSphereCollisionAlgorithm.cpp | 105 + .../btSphereSphereCollisionAlgorithm.h | 66 + .../btSphereTriangleCollisionAlgorithm.cpp | 84 + .../btSphereTriangleCollisionAlgorithm.h | 69 + .../CollisionDispatch/btUnionFind.cpp | 81 + .../CollisionDispatch/btUnionFind.h | 126 + .../CollisionShapes/btBox2dShape.cpp | 42 + .../CollisionShapes/btBox2dShape.h | 363 ++ .../CollisionShapes/btBoxShape.cpp | 41 + .../CollisionShapes/btBoxShape.h | 318 ++ .../btBvhTriangleMeshShape.cpp | 466 +++ .../CollisionShapes/btBvhTriangleMeshShape.h | 139 + .../CollisionShapes/btCapsuleShape.cpp | 171 + .../CollisionShapes/btCapsuleShape.h | 173 + .../CollisionShapes/btCollisionMargin.h | 26 + .../CollisionShapes/btCollisionShape.cpp | 119 + .../CollisionShapes/btCollisionShape.h | 150 + .../CollisionShapes/btCompoundShape.cpp | 323 ++ .../CollisionShapes/btCompoundShape.h | 206 ++ .../CollisionShapes/btConcaveShape.cpp | 27 + .../CollisionShapes/btConcaveShape.h | 60 + .../CollisionShapes/btConeShape.cpp | 133 + .../CollisionShapes/btConeShape.h | 100 + .../CollisionShapes/btConvex2dShape.cpp | 92 + .../CollisionShapes/btConvex2dShape.h | 80 + .../CollisionShapes/btConvexHullShape.cpp | 223 ++ .../CollisionShapes/btConvexHullShape.h | 120 + .../CollisionShapes/btConvexInternalShape.cpp | 151 + .../CollisionShapes/btConvexInternalShape.h | 202 ++ .../btConvexPointCloudShape.cpp | 157 + .../CollisionShapes/btConvexPointCloudShape.h | 105 + .../CollisionShapes/btConvexShape.cpp | 429 +++ .../CollisionShapes/btConvexShape.h | 82 + .../btConvexTriangleMeshShape.cpp | 315 ++ .../btConvexTriangleMeshShape.h | 75 + .../CollisionShapes/btCylinderShape.cpp | 222 ++ .../CollisionShapes/btCylinderShape.h | 192 ++ .../CollisionShapes/btEmptyShape.cpp | 50 + .../CollisionShapes/btEmptyShape.h | 70 + .../btHeightfieldTerrainShape.cpp | 411 +++ .../btHeightfieldTerrainShape.h | 161 + .../CollisionShapes/btMaterial.h | 35 + .../CollisionShapes/btMinkowskiSumShape.cpp | 60 + .../CollisionShapes/btMinkowskiSumShape.h | 60 + .../CollisionShapes/btMultiSphereShape.cpp | 167 + .../CollisionShapes/btMultiSphereShape.h | 99 + .../btMultimaterialTriangleMeshShape.cpp | 45 + .../btMultimaterialTriangleMeshShape.h | 121 + .../CollisionShapes/btOptimizedBvh.cpp | 391 +++ .../CollisionShapes/btOptimizedBvh.h | 65 + .../btPolyhedralConvexShape.cpp | 193 ++ .../CollisionShapes/btPolyhedralConvexShape.h | 98 + .../btScaledBvhTriangleMeshShape.cpp | 121 + .../btScaledBvhTriangleMeshShape.h | 62 + .../CollisionShapes/btShapeHull.cpp | 170 + .../CollisionShapes/btShapeHull.h | 59 + .../CollisionShapes/btSphereShape.cpp | 71 + .../CollisionShapes/btSphereShape.h | 73 + .../CollisionShapes/btStaticPlaneShape.cpp | 107 + .../CollisionShapes/btStaticPlaneShape.h | 103 + .../btStridingMeshInterface.cpp | 331 ++ .../CollisionShapes/btStridingMeshInterface.h | 154 + .../CollisionShapes/btTetrahedronShape.cpp | 218 ++ .../CollisionShapes/btTetrahedronShape.h | 74 + .../CollisionShapes/btTriangleBuffer.cpp | 35 + .../CollisionShapes/btTriangleBuffer.h | 69 + .../CollisionShapes/btTriangleCallback.cpp | 28 + .../CollisionShapes/btTriangleCallback.h | 42 + .../btTriangleIndexVertexArray.cpp | 95 + .../btTriangleIndexVertexArray.h | 131 + .../btTriangleIndexVertexMaterialArray.cpp | 86 + .../btTriangleIndexVertexMaterialArray.h | 84 + .../CollisionShapes/btTriangleInfoMap.h | 238 ++ .../CollisionShapes/btTriangleMesh.cpp | 140 + .../CollisionShapes/btTriangleMesh.h | 69 + .../CollisionShapes/btTriangleMeshShape.cpp | 211 ++ .../CollisionShapes/btTriangleMeshShape.h | 89 + .../CollisionShapes/btTriangleShape.h | 182 + .../CollisionShapes/btUniformScalingShape.cpp | 115 + .../CollisionShapes/btUniformScalingShape.h | 87 + extern/bullet2/BulletCollision/Doxyfile | 746 +++++ .../BulletCollision/Gimpact/btBoxCollision.h | 647 ++++ .../BulletCollision/Gimpact/btClipPolygon.h | 182 + .../Gimpact/btContactProcessing.cpp | 181 + .../Gimpact/btContactProcessing.h | 145 + .../BulletCollision/Gimpact/btGImpactBvh.cpp | 498 +++ .../BulletCollision/Gimpact/btGImpactBvh.h | 396 +++ .../Gimpact/btGImpactCollisionAlgorithm.cpp | 904 +++++ .../Gimpact/btGImpactCollisionAlgorithm.h | 306 ++ .../Gimpact/btGImpactMassUtil.h | 60 + .../Gimpact/btGImpactQuantizedBvh.cpp | 528 +++ .../Gimpact/btGImpactQuantizedBvh.h | 372 +++ .../Gimpact/btGImpactShape.cpp | 203 ++ .../BulletCollision/Gimpact/btGImpactShape.h | 1171 +++++++ .../Gimpact/btGenericPoolAllocator.cpp | 283 ++ .../Gimpact/btGenericPoolAllocator.h | 163 + .../Gimpact/btGeometryOperations.h | 212 ++ .../BulletCollision/Gimpact/btQuantization.h | 88 + .../Gimpact/btTriangleShapeEx.cpp | 218 ++ .../Gimpact/btTriangleShapeEx.h | 180 + .../BulletCollision/Gimpact/gim_array.h | 326 ++ .../Gimpact/gim_basic_geometry_operations.h | 543 +++ .../BulletCollision/Gimpact/gim_bitset.h | 123 + .../Gimpact/gim_box_collision.h | 590 ++++ .../BulletCollision/Gimpact/gim_box_set.cpp | 182 + .../BulletCollision/Gimpact/gim_box_set.h | 674 ++++ .../Gimpact/gim_clip_polygon.h | 210 ++ .../BulletCollision/Gimpact/gim_contact.cpp | 146 + .../BulletCollision/Gimpact/gim_contact.h | 164 + .../BulletCollision/Gimpact/gim_geom_types.h | 97 + .../BulletCollision/Gimpact/gim_geometry.h | 42 + .../BulletCollision/Gimpact/gim_hash_table.h | 902 +++++ .../BulletCollision/Gimpact/gim_linear_math.h | 1573 +++++++++ .../BulletCollision/Gimpact/gim_math.h | 157 + .../BulletCollision/Gimpact/gim_memory.cpp | 135 + .../BulletCollision/Gimpact/gim_memory.h | 190 ++ .../BulletCollision/Gimpact/gim_radixsort.h | 406 +++ .../Gimpact/gim_tri_collision.cpp | 640 ++++ .../Gimpact/gim_tri_collision.h | 379 +++ .../btContinuousConvexCollision.cpp | 236 ++ .../btContinuousConvexCollision.h | 52 + .../NarrowPhaseCollision/btConvexCast.cpp | 20 + .../NarrowPhaseCollision/btConvexCast.h | 73 + .../btConvexPenetrationDepthSolver.h | 42 + .../btDiscreteCollisionDetectorInterface.h | 89 + .../NarrowPhaseCollision/btGjkConvexCast.cpp | 176 + .../NarrowPhaseCollision/btGjkConvexCast.h | 50 + .../NarrowPhaseCollision/btGjkEpa2.cpp | 989 ++++++ .../NarrowPhaseCollision/btGjkEpa2.h | 73 + .../btGjkEpaPenetrationDepthSolver.cpp | 66 + .../btGjkEpaPenetrationDepthSolver.h | 43 + .../btGjkPairDetector.cpp | 456 +++ .../NarrowPhaseCollision/btGjkPairDetector.h | 103 + .../NarrowPhaseCollision/btManifoldPoint.h | 138 + .../btMinkowskiPenetrationDepthSolver.cpp | 362 ++ .../btMinkowskiPenetrationDepthSolver.h | 40 + .../btPersistentManifold.cpp | 260 ++ .../btPersistentManifold.h | 208 ++ .../NarrowPhaseCollision/btPointCollector.h | 64 + .../btRaycastCallback.cpp | 175 + .../NarrowPhaseCollision/btRaycastCallback.h | 71 + .../btSimplexSolverInterface.h | 63 + .../btSubSimplexConvexCast.cpp | 160 + .../btSubSimplexConvexCast.h | 50 + .../btVoronoiSimplexSolver.cpp | 609 ++++ .../btVoronoiSimplexSolver.h | 178 + extern/bullet2/BulletDynamics/CMakeLists.txt | 112 + .../btCharacterControllerInterface.h | 45 + .../btKinematicCharacterController.cpp | 553 ++++ .../btKinematicCharacterController.h | 145 + .../btConeTwistConstraint.cpp | 1117 +++++++ .../ConstraintSolver/btConeTwistConstraint.h | 332 ++ .../ConstraintSolver/btConstraintSolver.h | 52 + .../ConstraintSolver/btContactConstraint.cpp | 134 + .../ConstraintSolver/btContactConstraint.h | 68 + .../ConstraintSolver/btContactSolverInfo.h | 87 + .../btGeneric6DofConstraint.cpp | 1012 ++++++ .../btGeneric6DofConstraint.h | 588 ++++ .../btGeneric6DofSpringConstraint.cpp | 146 + .../btGeneric6DofSpringConstraint.h | 54 + .../ConstraintSolver/btHinge2Constraint.cpp | 66 + .../ConstraintSolver/btHinge2Constraint.h | 58 + .../ConstraintSolver/btHingeConstraint.cpp | 992 ++++++ .../ConstraintSolver/btHingeConstraint.h | 332 ++ .../ConstraintSolver/btJacobianEntry.h | 156 + .../btPoint2PointConstraint.cpp | 229 ++ .../btPoint2PointConstraint.h | 161 + .../btSequentialImpulseConstraintSolver.cpp | 1174 +++++++ .../btSequentialImpulseConstraintSolver.h | 132 + .../ConstraintSolver/btSliderConstraint.cpp | 857 +++++ .../ConstraintSolver/btSliderConstraint.h | 321 ++ .../btSolve2LinearConstraint.cpp | 255 ++ .../btSolve2LinearConstraint.h | 107 + .../ConstraintSolver/btSolverBody.h | 191 ++ .../ConstraintSolver/btSolverConstraint.h | 96 + .../ConstraintSolver/btTypedConstraint.cpp | 136 + .../ConstraintSolver/btTypedConstraint.h | 302 ++ .../btUniversalConstraint.cpp | 63 + .../ConstraintSolver/btUniversalConstraint.h | 60 + .../BulletDynamics/Dynamics/Bullet-C-API.cpp | 405 +++ .../Dynamics/btActionInterface.h | 50 + .../Dynamics/btContinuousDynamicsWorld.cpp | 196 ++ .../Dynamics/btContinuousDynamicsWorld.h | 46 + .../Dynamics/btDiscreteDynamicsWorld.cpp | 1161 +++++++ .../Dynamics/btDiscreteDynamicsWorld.h | 198 ++ .../BulletDynamics/Dynamics/btDynamicsWorld.h | 148 + .../BulletDynamics/Dynamics/btRigidBody.cpp | 400 +++ .../BulletDynamics/Dynamics/btRigidBody.h | 670 ++++ .../Dynamics/btSimpleDynamicsWorld.cpp | 253 ++ .../Dynamics/btSimpleDynamicsWorld.h | 81 + .../Vehicle/btRaycastVehicle.cpp | 758 +++++ .../BulletDynamics/Vehicle/btRaycastVehicle.h | 236 ++ .../Vehicle/btVehicleRaycaster.h | 35 + .../BulletDynamics/Vehicle/btWheelInfo.cpp | 56 + .../BulletDynamics/Vehicle/btWheelInfo.h | 119 + .../BulletMultiThreaded/CMakeLists.txt | 92 + .../BulletMultiThreaded/Makefile.original | 187 ++ extern/bullet2/BulletMultiThreaded/MiniCL.cpp | 517 +++ .../MiniCLTask/MiniCLTask.cpp | 74 + .../MiniCLTask/MiniCLTask.h | 62 + .../MiniCLTaskScheduler.cpp | 519 +++ .../BulletMultiThreaded/MiniCLTaskScheduler.h | 194 ++ .../BulletMultiThreaded/PlatformDefinitions.h | 84 + .../PosixThreadSupport.cpp | 249 ++ .../BulletMultiThreaded/PosixThreadSupport.h | 124 + .../BulletMultiThreaded/PpuAddressSpace.h | 20 + .../SequentialThreadSupport.cpp | 93 + .../SequentialThreadSupport.h | 92 + .../SpuCollisionObjectWrapper.cpp | 48 + .../SpuCollisionObjectWrapper.h | 40 + .../SpuCollisionTaskProcess.cpp | 318 ++ .../SpuCollisionTaskProcess.h | 163 + .../SpuContactManifoldCollisionAlgorithm.cpp | 69 + .../SpuContactManifoldCollisionAlgorithm.h | 120 + .../BulletMultiThreaded/SpuDoubleBuffer.h | 110 + .../BulletMultiThreaded/SpuFakeDma.cpp | 211 ++ .../bullet2/BulletMultiThreaded/SpuFakeDma.h | 135 + .../SpuGatheringCollisionDispatcher.cpp | 251 ++ .../SpuGatheringCollisionDispatcher.h | 72 + .../BulletMultiThreaded/SpuLibspe2Support.cpp | 257 ++ .../BulletMultiThreaded/SpuLibspe2Support.h | 180 + .../SpuNarrowPhaseCollisionTask/Box.h | 172 + .../SpuCollisionShapes.cpp | 302 ++ .../SpuCollisionShapes.h | 126 + .../SpuContactResult.cpp | 242 ++ .../SpuContactResult.h | 106 + .../SpuConvexPenetrationDepthSolver.h | 51 + .../SpuGatheringCollisionTask.cpp | 1381 ++++++++ .../SpuGatheringCollisionTask.h | 140 + .../SpuLocalSupport.h | 19 + .../SpuMinkowskiPenetrationDepthSolver.cpp | 348 ++ .../SpuMinkowskiPenetrationDepthSolver.h | 48 + .../SpuPreferredPenetrationDirections.h | 70 + .../boxBoxDistance.cpp | 1155 +++++++ .../boxBoxDistance.h | 66 + .../SpuNarrowPhaseCollisionTask/readme.txt | 1 + .../SpuSampleTask/SpuSampleTask.cpp | 214 ++ .../SpuSampleTask/SpuSampleTask.h | 54 + .../SpuSampleTask/readme.txt | 1 + .../SpuSampleTaskProcess.cpp | 222 ++ .../SpuSampleTaskProcess.h | 153 + extern/bullet2/BulletMultiThreaded/SpuSync.h | 148 + .../Win32ThreadSupport.cpp | 262 ++ .../BulletMultiThreaded/Win32ThreadSupport.h | 132 + .../btGpu3DGridBroadphase.cpp | 590 ++++ .../btGpu3DGridBroadphase.h | 138 + .../btGpu3DGridBroadphaseSharedCode.h | 430 +++ .../btGpu3DGridBroadphaseSharedDefs.h | 61 + .../btGpu3DGridBroadphaseSharedTypes.h | 67 + .../BulletMultiThreaded/btGpuDefines.h | 211 ++ .../btGpuUtilsSharedCode.h | 55 + .../btGpuUtilsSharedDefs.h | 52 + .../btParallelConstraintSolver.cpp | 74 + .../btParallelConstraintSolver.h | 42 + .../btThreadSupportInterface.cpp | 22 + .../btThreadSupportInterface.h | 50 + .../vectormath/scalar/cpp/boolInVec.h | 225 ++ .../vectormath/scalar/cpp/floatInVec.h | 343 ++ .../vectormath/scalar/cpp/mat_aos.h | 1630 +++++++++ .../vectormath/scalar/cpp/quat_aos.h | 433 +++ .../vectormath/scalar/cpp/vec_aos.h | 1426 ++++++++ .../vectormath/scalar/cpp/vectormath_aos.h | 1872 +++++++++++ .../BulletMultiThreaded/vectormath2bullet.h | 80 + extern/bullet2/BulletSoftBody/CMakeLists.txt | 52 + extern/bullet2/BulletSoftBody/btSoftBody.cpp | 2931 +++++++++++++++++ extern/bullet2/BulletSoftBody/btSoftBody.h | 891 +++++ .../btSoftBodyConcaveCollisionAlgorithm.cpp | 368 +++ .../btSoftBodyConcaveCollisionAlgorithm.h | 153 + .../BulletSoftBody/btSoftBodyHelpers.cpp | 1019 ++++++ .../BulletSoftBody/btSoftBodyHelpers.h | 143 + .../BulletSoftBody/btSoftBodyInternals.h | 931 ++++++ ...oftBodyRigidBodyCollisionConfiguration.cpp | 134 + ...tSoftBodyRigidBodyCollisionConfiguration.h | 48 + .../btSoftRigidCollisionAlgorithm.cpp | 82 + .../btSoftRigidCollisionAlgorithm.h | 75 + .../btSoftRigidDynamicsWorld.cpp | 292 ++ .../BulletSoftBody/btSoftRigidDynamicsWorld.h | 97 + .../btSoftSoftCollisionAlgorithm.cpp | 46 + .../btSoftSoftCollisionAlgorithm.h | 69 + extern/bullet2/BulletSoftBody/btSparseSDF.h | 306 ++ extern/bullet2/CMakeLists.txt | 47 +- extern/bullet2/LinearMath/CMakeLists.txt | 61 + extern/bullet2/LinearMath/btAabbUtil2.h | 236 ++ .../bullet2/LinearMath/btAlignedAllocator.cpp | 205 ++ .../bullet2/LinearMath/btAlignedAllocator.h | 107 + .../bullet2/LinearMath/btAlignedObjectArray.h | 464 +++ extern/bullet2/LinearMath/btConvexHull.cpp | 1174 +++++++ extern/bullet2/LinearMath/btConvexHull.h | 241 ++ .../bullet2/LinearMath/btDefaultMotionState.h | 40 + extern/bullet2/LinearMath/btGeometryUtil.cpp | 185 ++ extern/bullet2/LinearMath/btGeometryUtil.h | 42 + extern/bullet2/LinearMath/btHashMap.h | 434 +++ extern/bullet2/LinearMath/btIDebugDraw.h | 316 ++ extern/bullet2/LinearMath/btList.h | 73 + extern/bullet2/LinearMath/btMatrix3x3.h | 688 ++++ extern/bullet2/LinearMath/btMinMax.h | 69 + extern/bullet2/LinearMath/btMotionState.h | 40 + extern/bullet2/LinearMath/btPoolAllocator.h | 102 + extern/bullet2/LinearMath/btQuadWord.h | 180 + extern/bullet2/LinearMath/btQuaternion.h | 433 +++ extern/bullet2/LinearMath/btQuickprof.cpp | 346 ++ extern/bullet2/LinearMath/btQuickprof.h | 370 +++ extern/bullet2/LinearMath/btRandom.h | 42 + extern/bullet2/LinearMath/btScalar.h | 517 +++ extern/bullet2/LinearMath/btSerializer.cpp | 577 ++++ extern/bullet2/LinearMath/btSerializer.h | 604 ++++ extern/bullet2/LinearMath/btStackAlloc.h | 116 + extern/bullet2/LinearMath/btTransform.h | 307 ++ extern/bullet2/LinearMath/btTransformUtil.h | 228 ++ extern/bullet2/LinearMath/btVector3.h | 744 +++++ extern/bullet2/Makefile | 51 +- extern/bullet2/MiniCL/cl.h | 865 +++++ extern/bullet2/MiniCL/cl_MiniCL_Defs.h | 265 ++ extern/bullet2/MiniCL/cl_gl.h | 113 + extern/bullet2/MiniCL/cl_platform.h | 254 ++ extern/bullet2/SConscript | 45 + extern/bullet2/btBulletCollisionCommon.h | 68 + extern/bullet2/btBulletDynamicsCommon.h | 49 + 384 files changed, 101206 insertions(+), 65 deletions(-) create mode 100644 extern/bullet2/Bullet-C-Api.h create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btAxisSweep3.h create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btDbvt.cpp create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btDbvt.h create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btDispatcher.cpp create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btDispatcher.h create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btQuantizedBvh.h create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp create mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h create mode 100644 extern/bullet2/BulletCollision/CMakeLists.txt create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/SphereTriangleDetector.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxDetector.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCollisionConfiguration.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCollisionDispatcher.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCollisionObject.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCollisionObject.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCollisionWorld.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCollisionWorld.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btGhostObject.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btGhostObject.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btManifoldResult.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btManifoldResult.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btSimulationIslandManager.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btUnionFind.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btUnionFind.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btBox2dShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btBox2dShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btBoxShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btBoxShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btCapsuleShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btCapsuleShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btCollisionMargin.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btCollisionShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btCollisionShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btCompoundShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btCompoundShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConcaveShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConcaveShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConeShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConeShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvex2dShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvex2dShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexHullShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexHullShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexInternalShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexInternalShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexPointCloudShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btCylinderShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btCylinderShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btEmptyShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btEmptyShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btMaterial.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btMinkowskiSumShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btMultiSphereShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btMultiSphereShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btOptimizedBvh.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btOptimizedBvh.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btShapeHull.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btShapeHull.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btSphereShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btSphereShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btStaticPlaneShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btStridingMeshInterface.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTetrahedronShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTetrahedronShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleBuffer.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleBuffer.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleCallback.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleCallback.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleInfoMap.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleMesh.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleMesh.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleMeshShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleShape.h create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btUniformScalingShape.cpp create mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btUniformScalingShape.h create mode 100644 extern/bullet2/BulletCollision/Doxyfile create mode 100644 extern/bullet2/BulletCollision/Gimpact/btBoxCollision.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/btClipPolygon.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/btContactProcessing.cpp create mode 100644 extern/bullet2/BulletCollision/Gimpact/btContactProcessing.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/btGImpactBvh.cpp create mode 100644 extern/bullet2/BulletCollision/Gimpact/btGImpactBvh.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp create mode 100644 extern/bullet2/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/btGImpactMassUtil.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp create mode 100644 extern/bullet2/BulletCollision/Gimpact/btGImpactQuantizedBvh.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/btGImpactShape.cpp create mode 100644 extern/bullet2/BulletCollision/Gimpact/btGImpactShape.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/btGenericPoolAllocator.cpp create mode 100644 extern/bullet2/BulletCollision/Gimpact/btGenericPoolAllocator.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/btGeometryOperations.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/btQuantization.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/btTriangleShapeEx.cpp create mode 100644 extern/bullet2/BulletCollision/Gimpact/btTriangleShapeEx.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_array.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_basic_geometry_operations.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_bitset.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_box_collision.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_box_set.cpp create mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_box_set.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_clip_polygon.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_contact.cpp create mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_contact.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_geom_types.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_geometry.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_hash_table.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_linear_math.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_math.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_memory.cpp create mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_memory.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_radixsort.h create mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_tri_collision.cpp create mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_tri_collision.h create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexCast.h create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btPointCollector.h create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp create mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h create mode 100644 extern/bullet2/BulletDynamics/CMakeLists.txt create mode 100644 extern/bullet2/BulletDynamics/Character/btCharacterControllerInterface.h create mode 100644 extern/bullet2/BulletDynamics/Character/btKinematicCharacterController.cpp create mode 100644 extern/bullet2/BulletDynamics/Character/btKinematicCharacterController.h create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btConstraintSolver.h create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btContactConstraint.cpp create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btContactConstraint.h create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btContactSolverInfo.h create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btHinge2Constraint.h create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btHingeConstraint.h create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btJacobianEntry.h create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btSliderConstraint.h create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btSolverBody.h create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btSolverConstraint.h create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btTypedConstraint.h create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp create mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btUniversalConstraint.h create mode 100644 extern/bullet2/BulletDynamics/Dynamics/Bullet-C-API.cpp create mode 100644 extern/bullet2/BulletDynamics/Dynamics/btActionInterface.h create mode 100644 extern/bullet2/BulletDynamics/Dynamics/btContinuousDynamicsWorld.cpp create mode 100644 extern/bullet2/BulletDynamics/Dynamics/btContinuousDynamicsWorld.h create mode 100644 extern/bullet2/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp create mode 100644 extern/bullet2/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h create mode 100644 extern/bullet2/BulletDynamics/Dynamics/btDynamicsWorld.h create mode 100644 extern/bullet2/BulletDynamics/Dynamics/btRigidBody.cpp create mode 100644 extern/bullet2/BulletDynamics/Dynamics/btRigidBody.h create mode 100644 extern/bullet2/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp create mode 100644 extern/bullet2/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h create mode 100644 extern/bullet2/BulletDynamics/Vehicle/btRaycastVehicle.cpp create mode 100644 extern/bullet2/BulletDynamics/Vehicle/btRaycastVehicle.h create mode 100644 extern/bullet2/BulletDynamics/Vehicle/btVehicleRaycaster.h create mode 100644 extern/bullet2/BulletDynamics/Vehicle/btWheelInfo.cpp create mode 100644 extern/bullet2/BulletDynamics/Vehicle/btWheelInfo.h create mode 100644 extern/bullet2/BulletMultiThreaded/CMakeLists.txt create mode 100644 extern/bullet2/BulletMultiThreaded/Makefile.original create mode 100644 extern/bullet2/BulletMultiThreaded/MiniCL.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/MiniCLTask/MiniCLTask.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/MiniCLTask/MiniCLTask.h create mode 100644 extern/bullet2/BulletMultiThreaded/MiniCLTaskScheduler.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/MiniCLTaskScheduler.h create mode 100644 extern/bullet2/BulletMultiThreaded/PlatformDefinitions.h create mode 100644 extern/bullet2/BulletMultiThreaded/PosixThreadSupport.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/PosixThreadSupport.h create mode 100644 extern/bullet2/BulletMultiThreaded/PpuAddressSpace.h create mode 100644 extern/bullet2/BulletMultiThreaded/SequentialThreadSupport.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/SequentialThreadSupport.h create mode 100644 extern/bullet2/BulletMultiThreaded/SpuCollisionObjectWrapper.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/SpuCollisionObjectWrapper.h create mode 100644 extern/bullet2/BulletMultiThreaded/SpuCollisionTaskProcess.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/SpuCollisionTaskProcess.h create mode 100644 extern/bullet2/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.h create mode 100644 extern/bullet2/BulletMultiThreaded/SpuDoubleBuffer.h create mode 100644 extern/bullet2/BulletMultiThreaded/SpuFakeDma.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/SpuFakeDma.h create mode 100644 extern/bullet2/BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/SpuGatheringCollisionDispatcher.h create mode 100644 extern/bullet2/BulletMultiThreaded/SpuLibspe2Support.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/SpuLibspe2Support.h create mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/Box.h create mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.h create mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.h create mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuConvexPenetrationDepthSolver.h create mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h create mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuLocalSupport.h create mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.h create mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuPreferredPenetrationDirections.h create mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.h create mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/readme.txt create mode 100644 extern/bullet2/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.h create mode 100644 extern/bullet2/BulletMultiThreaded/SpuSampleTask/readme.txt create mode 100644 extern/bullet2/BulletMultiThreaded/SpuSampleTaskProcess.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/SpuSampleTaskProcess.h create mode 100644 extern/bullet2/BulletMultiThreaded/SpuSync.h create mode 100644 extern/bullet2/BulletMultiThreaded/Win32ThreadSupport.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/Win32ThreadSupport.h create mode 100644 extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphase.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphase.h create mode 100644 extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedCode.h create mode 100644 extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedDefs.h create mode 100644 extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedTypes.h create mode 100644 extern/bullet2/BulletMultiThreaded/btGpuDefines.h create mode 100644 extern/bullet2/BulletMultiThreaded/btGpuUtilsSharedCode.h create mode 100644 extern/bullet2/BulletMultiThreaded/btGpuUtilsSharedDefs.h create mode 100644 extern/bullet2/BulletMultiThreaded/btParallelConstraintSolver.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/btParallelConstraintSolver.h create mode 100644 extern/bullet2/BulletMultiThreaded/btThreadSupportInterface.cpp create mode 100644 extern/bullet2/BulletMultiThreaded/btThreadSupportInterface.h create mode 100644 extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/boolInVec.h create mode 100644 extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/floatInVec.h create mode 100644 extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/mat_aos.h create mode 100644 extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/quat_aos.h create mode 100644 extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/vec_aos.h create mode 100644 extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/vectormath_aos.h create mode 100644 extern/bullet2/BulletMultiThreaded/vectormath2bullet.h create mode 100644 extern/bullet2/BulletSoftBody/CMakeLists.txt create mode 100644 extern/bullet2/BulletSoftBody/btSoftBody.cpp create mode 100644 extern/bullet2/BulletSoftBody/btSoftBody.h create mode 100644 extern/bullet2/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp create mode 100644 extern/bullet2/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h create mode 100644 extern/bullet2/BulletSoftBody/btSoftBodyHelpers.cpp create mode 100644 extern/bullet2/BulletSoftBody/btSoftBodyHelpers.h create mode 100644 extern/bullet2/BulletSoftBody/btSoftBodyInternals.h create mode 100644 extern/bullet2/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp create mode 100644 extern/bullet2/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h create mode 100644 extern/bullet2/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp create mode 100644 extern/bullet2/BulletSoftBody/btSoftRigidCollisionAlgorithm.h create mode 100644 extern/bullet2/BulletSoftBody/btSoftRigidDynamicsWorld.cpp create mode 100644 extern/bullet2/BulletSoftBody/btSoftRigidDynamicsWorld.h create mode 100644 extern/bullet2/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp create mode 100644 extern/bullet2/BulletSoftBody/btSoftSoftCollisionAlgorithm.h create mode 100644 extern/bullet2/BulletSoftBody/btSparseSDF.h create mode 100644 extern/bullet2/LinearMath/CMakeLists.txt create mode 100644 extern/bullet2/LinearMath/btAabbUtil2.h create mode 100644 extern/bullet2/LinearMath/btAlignedAllocator.cpp create mode 100644 extern/bullet2/LinearMath/btAlignedAllocator.h create mode 100644 extern/bullet2/LinearMath/btAlignedObjectArray.h create mode 100644 extern/bullet2/LinearMath/btConvexHull.cpp create mode 100644 extern/bullet2/LinearMath/btConvexHull.h create mode 100644 extern/bullet2/LinearMath/btDefaultMotionState.h create mode 100644 extern/bullet2/LinearMath/btGeometryUtil.cpp create mode 100644 extern/bullet2/LinearMath/btGeometryUtil.h create mode 100644 extern/bullet2/LinearMath/btHashMap.h create mode 100644 extern/bullet2/LinearMath/btIDebugDraw.h create mode 100644 extern/bullet2/LinearMath/btList.h create mode 100644 extern/bullet2/LinearMath/btMatrix3x3.h create mode 100644 extern/bullet2/LinearMath/btMinMax.h create mode 100644 extern/bullet2/LinearMath/btMotionState.h create mode 100644 extern/bullet2/LinearMath/btPoolAllocator.h create mode 100644 extern/bullet2/LinearMath/btQuadWord.h create mode 100644 extern/bullet2/LinearMath/btQuaternion.h create mode 100644 extern/bullet2/LinearMath/btQuickprof.cpp create mode 100644 extern/bullet2/LinearMath/btQuickprof.h create mode 100644 extern/bullet2/LinearMath/btRandom.h create mode 100644 extern/bullet2/LinearMath/btScalar.h create mode 100644 extern/bullet2/LinearMath/btSerializer.cpp create mode 100644 extern/bullet2/LinearMath/btSerializer.h create mode 100644 extern/bullet2/LinearMath/btStackAlloc.h create mode 100644 extern/bullet2/LinearMath/btTransform.h create mode 100644 extern/bullet2/LinearMath/btTransformUtil.h create mode 100644 extern/bullet2/LinearMath/btVector3.h create mode 100644 extern/bullet2/MiniCL/cl.h create mode 100644 extern/bullet2/MiniCL/cl_MiniCL_Defs.h create mode 100644 extern/bullet2/MiniCL/cl_gl.h create mode 100644 extern/bullet2/MiniCL/cl_platform.h create mode 100644 extern/bullet2/SConscript create mode 100644 extern/bullet2/btBulletCollisionCommon.h create mode 100644 extern/bullet2/btBulletDynamicsCommon.h diff --git a/extern/bullet2/Bullet-C-Api.h b/extern/bullet2/Bullet-C-Api.h new file mode 100644 index 00000000000..f309aba2816 --- /dev/null +++ b/extern/bullet2/Bullet-C-Api.h @@ -0,0 +1,176 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +/* + Draft high-level generic physics C-API. For low-level access, use the physics SDK native API's. + Work in progress, functionality will be added on demand. + + If possible, use the richer Bullet C++ API, by including "btBulletDynamicsCommon.h" +*/ + +#ifndef BULLET_C_API_H +#define BULLET_C_API_H + +#define PL_DECLARE_HANDLE(name) typedef struct name##__ { int unused; } *name + +#ifdef BT_USE_DOUBLE_PRECISION +typedef double plReal; +#else +typedef float plReal; +#endif + +typedef plReal plVector3[3]; +typedef plReal plQuaternion[4]; + +#ifdef __cplusplus +extern "C" { +#endif + +/** Particular physics SDK (C-API) */ + PL_DECLARE_HANDLE(plPhysicsSdkHandle); + +/** Dynamics world, belonging to some physics SDK (C-API)*/ + PL_DECLARE_HANDLE(plDynamicsWorldHandle); + +/** Rigid Body that can be part of a Dynamics World (C-API)*/ + PL_DECLARE_HANDLE(plRigidBodyHandle); + +/** Collision Shape/Geometry, property of a Rigid Body (C-API)*/ + PL_DECLARE_HANDLE(plCollisionShapeHandle); + +/** Constraint for Rigid Bodies (C-API)*/ + PL_DECLARE_HANDLE(plConstraintHandle); + +/** Triangle Mesh interface (C-API)*/ + PL_DECLARE_HANDLE(plMeshInterfaceHandle); + +/** Broadphase Scene/Proxy Handles (C-API)*/ + PL_DECLARE_HANDLE(plCollisionBroadphaseHandle); + PL_DECLARE_HANDLE(plBroadphaseProxyHandle); + PL_DECLARE_HANDLE(plCollisionWorldHandle); + +/** + Create and Delete a Physics SDK +*/ + + extern plPhysicsSdkHandle plNewBulletSdk(); //this could be also another sdk, like ODE, PhysX etc. + extern void plDeletePhysicsSdk(plPhysicsSdkHandle physicsSdk); + +/** Collision World, not strictly necessary, you can also just create a Dynamics World with Rigid Bodies which internally manages the Collision World with Collision Objects */ + + typedef void(*btBroadphaseCallback)(void* clientData, void* object1,void* object2); + + extern plCollisionBroadphaseHandle plCreateSapBroadphase(btBroadphaseCallback beginCallback,btBroadphaseCallback endCallback); + + extern void plDestroyBroadphase(plCollisionBroadphaseHandle bp); + + extern plBroadphaseProxyHandle plCreateProxy(plCollisionBroadphaseHandle bp, void* clientData, plReal minX,plReal minY,plReal minZ, plReal maxX,plReal maxY, plReal maxZ); + + extern void plDestroyProxy(plCollisionBroadphaseHandle bp, plBroadphaseProxyHandle proxyHandle); + + extern void plSetBoundingBox(plBroadphaseProxyHandle proxyHandle, plReal minX,plReal minY,plReal minZ, plReal maxX,plReal maxY, plReal maxZ); + +/* todo: add pair cache support with queries like add/remove/find pair */ + + extern plCollisionWorldHandle plCreateCollisionWorld(plPhysicsSdkHandle physicsSdk); + +/* todo: add/remove objects */ + + +/* Dynamics World */ + + extern plDynamicsWorldHandle plCreateDynamicsWorld(plPhysicsSdkHandle physicsSdk); + + extern void plDeleteDynamicsWorld(plDynamicsWorldHandle world); + + extern void plStepSimulation(plDynamicsWorldHandle, plReal timeStep); + + extern void plAddRigidBody(plDynamicsWorldHandle world, plRigidBodyHandle object); + + extern void plRemoveRigidBody(plDynamicsWorldHandle world, plRigidBodyHandle object); + + +/* Rigid Body */ + + extern plRigidBodyHandle plCreateRigidBody( void* user_data, float mass, plCollisionShapeHandle cshape ); + + extern void plDeleteRigidBody(plRigidBodyHandle body); + + +/* Collision Shape definition */ + + extern plCollisionShapeHandle plNewSphereShape(plReal radius); + extern plCollisionShapeHandle plNewBoxShape(plReal x, plReal y, plReal z); + extern plCollisionShapeHandle plNewCapsuleShape(plReal radius, plReal height); + extern plCollisionShapeHandle plNewConeShape(plReal radius, plReal height); + extern plCollisionShapeHandle plNewCylinderShape(plReal radius, plReal height); + extern plCollisionShapeHandle plNewCompoundShape(); + extern void plAddChildShape(plCollisionShapeHandle compoundShape,plCollisionShapeHandle childShape, plVector3 childPos,plQuaternion childOrn); + + extern void plDeleteShape(plCollisionShapeHandle shape); + + /* Convex Meshes */ + extern plCollisionShapeHandle plNewConvexHullShape(); + extern void plAddVertex(plCollisionShapeHandle convexHull, plReal x,plReal y,plReal z); +/* Concave static triangle meshes */ + extern plMeshInterfaceHandle plNewMeshInterface(); + extern void plAddTriangle(plMeshInterfaceHandle meshHandle, plVector3 v0,plVector3 v1,plVector3 v2); + extern plCollisionShapeHandle plNewStaticTriangleMeshShape(plMeshInterfaceHandle); + + extern void plSetScaling(plCollisionShapeHandle shape, plVector3 scaling); + +/* SOLID has Response Callback/Table/Management */ +/* PhysX has Triggers, User Callbacks and filtering */ +/* ODE has the typedef void dNearCallback (void *data, dGeomID o1, dGeomID o2); */ + +/* typedef void plUpdatedPositionCallback(void* userData, plRigidBodyHandle rbHandle, plVector3 pos); */ +/* typedef void plUpdatedOrientationCallback(void* userData, plRigidBodyHandle rbHandle, plQuaternion orientation); */ + + /* get world transform */ + extern void plGetOpenGLMatrix(plRigidBodyHandle object, plReal* matrix); + extern void plGetPosition(plRigidBodyHandle object,plVector3 position); + extern void plGetOrientation(plRigidBodyHandle object,plQuaternion orientation); + + /* set world transform (position/orientation) */ + extern void plSetPosition(plRigidBodyHandle object, const plVector3 position); + extern void plSetOrientation(plRigidBodyHandle object, const plQuaternion orientation); + extern void plSetEuler(plReal yaw,plReal pitch,plReal roll, plQuaternion orient); + extern void plSetOpenGLMatrix(plRigidBodyHandle object, plReal* matrix); + + typedef struct plRayCastResult { + plRigidBodyHandle m_body; + plCollisionShapeHandle m_shape; + plVector3 m_positionWorld; + plVector3 m_normalWorld; + } plRayCastResult; + + extern int plRayCast(plDynamicsWorldHandle world, const plVector3 rayStart, const plVector3 rayEnd, plRayCastResult res); + + /* Sweep API */ + + /* extern plRigidBodyHandle plObjectCast(plDynamicsWorldHandle world, const plVector3 rayStart, const plVector3 rayEnd, plVector3 hitpoint, plVector3 normal); */ + + /* Continuous Collision Detection API */ + + // needed for source/blender/blenkernel/intern/collision.c + double plNearestPoints(float p1[3], float p2[3], float p3[3], float q1[3], float q2[3], float q3[3], float *pa, float *pb, float normal[3]); + +#ifdef __cplusplus +} +#endif + + +#endif //BULLET_C_API_H + diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp new file mode 100644 index 00000000000..77763305b1b --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp @@ -0,0 +1,37 @@ + +//Bullet Continuous Collision Detection and Physics Library +//Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + + +// +// btAxisSweep3 +// +// Copyright (c) 2006 Simon Hobbs +// +// This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. +#include "btAxisSweep3.h" + + +btAxisSweep3::btAxisSweep3(const btVector3& worldAabbMin,const btVector3& worldAabbMax, unsigned short int maxHandles, btOverlappingPairCache* pairCache, bool disableRaycastAccelerator) +:btAxisSweep3Internal(worldAabbMin,worldAabbMax,0xfffe,0xffff,maxHandles,pairCache,disableRaycastAccelerator) +{ + // 1 handle is reserved as sentinel + btAssert(maxHandles > 1 && maxHandles < 32767); + +} + + +bt32BitAxisSweep3::bt32BitAxisSweep3(const btVector3& worldAabbMin,const btVector3& worldAabbMax, unsigned int maxHandles , btOverlappingPairCache* pairCache , bool disableRaycastAccelerator) +:btAxisSweep3Internal(worldAabbMin,worldAabbMax,0xfffffffe,0x7fffffff,maxHandles,pairCache,disableRaycastAccelerator) +{ + // 1 handle is reserved as sentinel + btAssert(maxHandles > 1 && maxHandles < 2147483647); +} diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btAxisSweep3.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btAxisSweep3.h new file mode 100644 index 00000000000..07167af3baf --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btAxisSweep3.h @@ -0,0 +1,1051 @@ +//Bullet Continuous Collision Detection and Physics Library +//Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +// +// btAxisSweep3.h +// +// Copyright (c) 2006 Simon Hobbs +// +// This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source distribution. + +#ifndef AXIS_SWEEP_3_H +#define AXIS_SWEEP_3_H + +#include "LinearMath/btVector3.h" +#include "btOverlappingPairCache.h" +#include "btBroadphaseInterface.h" +#include "btBroadphaseProxy.h" +#include "btOverlappingPairCallback.h" +#include "btDbvtBroadphase.h" + +//#define DEBUG_BROADPHASE 1 +#define USE_OVERLAP_TEST_ON_REMOVES 1 + +/// The internal templace class btAxisSweep3Internal implements the sweep and prune broadphase. +/// It uses quantized integers to represent the begin and end points for each of the 3 axis. +/// Dont use this class directly, use btAxisSweep3 or bt32BitAxisSweep3 instead. +template +class btAxisSweep3Internal : public btBroadphaseInterface +{ +protected: + + BP_FP_INT_TYPE m_bpHandleMask; + BP_FP_INT_TYPE m_handleSentinel; + +public: + + BT_DECLARE_ALIGNED_ALLOCATOR(); + + class Edge + { + public: + BP_FP_INT_TYPE m_pos; // low bit is min/max + BP_FP_INT_TYPE m_handle; + + BP_FP_INT_TYPE IsMax() const {return static_cast(m_pos & 1);} + }; + +public: + class Handle : public btBroadphaseProxy + { + public: + BT_DECLARE_ALIGNED_ALLOCATOR(); + + // indexes into the edge arrays + BP_FP_INT_TYPE m_minEdges[3], m_maxEdges[3]; // 6 * 2 = 12 +// BP_FP_INT_TYPE m_uniqueId; + btBroadphaseProxy* m_dbvtProxy;//for faster raycast + //void* m_pOwner; this is now in btBroadphaseProxy.m_clientObject + + SIMD_FORCE_INLINE void SetNextFree(BP_FP_INT_TYPE next) {m_minEdges[0] = next;} + SIMD_FORCE_INLINE BP_FP_INT_TYPE GetNextFree() const {return m_minEdges[0];} + }; // 24 bytes + 24 for Edge structures = 44 bytes total per entry + + +protected: + btVector3 m_worldAabbMin; // overall system bounds + btVector3 m_worldAabbMax; // overall system bounds + + btVector3 m_quantize; // scaling factor for quantization + + BP_FP_INT_TYPE m_numHandles; // number of active handles + BP_FP_INT_TYPE m_maxHandles; // max number of handles + Handle* m_pHandles; // handles pool + + BP_FP_INT_TYPE m_firstFreeHandle; // free handles list + + Edge* m_pEdges[3]; // edge arrays for the 3 axes (each array has m_maxHandles * 2 + 2 sentinel entries) + void* m_pEdgesRawPtr[3]; + + btOverlappingPairCache* m_pairCache; + + ///btOverlappingPairCallback is an additional optional user callback for adding/removing overlapping pairs, similar interface to btOverlappingPairCache. + btOverlappingPairCallback* m_userPairCallback; + + bool m_ownsPairCache; + + int m_invalidPair; + + ///additional dynamic aabb structure, used to accelerate ray cast queries. + ///can be disabled using a optional argument in the constructor + btDbvtBroadphase* m_raycastAccelerator; + btOverlappingPairCache* m_nullPairCache; + + + // allocation/deallocation + BP_FP_INT_TYPE allocHandle(); + void freeHandle(BP_FP_INT_TYPE handle); + + + bool testOverlap2D(const Handle* pHandleA, const Handle* pHandleB,int axis0,int axis1); + +#ifdef DEBUG_BROADPHASE + void debugPrintAxis(int axis,bool checkCardinality=true); +#endif //DEBUG_BROADPHASE + + //Overlap* AddOverlap(BP_FP_INT_TYPE handleA, BP_FP_INT_TYPE handleB); + //void RemoveOverlap(BP_FP_INT_TYPE handleA, BP_FP_INT_TYPE handleB); + + + + void sortMinDown(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps ); + void sortMinUp(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps ); + void sortMaxDown(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps ); + void sortMaxUp(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps ); + +public: + + btAxisSweep3Internal(const btVector3& worldAabbMin,const btVector3& worldAabbMax, BP_FP_INT_TYPE handleMask, BP_FP_INT_TYPE handleSentinel, BP_FP_INT_TYPE maxHandles = 16384, btOverlappingPairCache* pairCache=0,bool disableRaycastAccelerator = false); + + virtual ~btAxisSweep3Internal(); + + BP_FP_INT_TYPE getNumHandles() const + { + return m_numHandles; + } + + virtual void calculateOverlappingPairs(btDispatcher* dispatcher); + + BP_FP_INT_TYPE addHandle(const btVector3& aabbMin,const btVector3& aabbMax, void* pOwner,short int collisionFilterGroup,short int collisionFilterMask,btDispatcher* dispatcher,void* multiSapProxy); + void removeHandle(BP_FP_INT_TYPE handle,btDispatcher* dispatcher); + void updateHandle(BP_FP_INT_TYPE handle, const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* dispatcher); + SIMD_FORCE_INLINE Handle* getHandle(BP_FP_INT_TYPE index) const {return m_pHandles + index;} + + virtual void resetPool(btDispatcher* dispatcher); + + void processAllOverlappingPairs(btOverlapCallback* callback); + + //Broadphase Interface + virtual btBroadphaseProxy* createProxy( const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr ,short int collisionFilterGroup,short int collisionFilterMask,btDispatcher* dispatcher,void* multiSapProxy); + virtual void destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher); + virtual void setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* dispatcher); + virtual void getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const; + + virtual void rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin=btVector3(0,0,0), const btVector3& aabbMax = btVector3(0,0,0)); + virtual void aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback); + + + void quantize(BP_FP_INT_TYPE* out, const btVector3& point, int isMax) const; + ///unQuantize should be conservative: aabbMin/aabbMax should be larger then 'getAabb' result + void unQuantize(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const; + + bool testAabbOverlap(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1); + + btOverlappingPairCache* getOverlappingPairCache() + { + return m_pairCache; + } + const btOverlappingPairCache* getOverlappingPairCache() const + { + return m_pairCache; + } + + void setOverlappingPairUserCallback(btOverlappingPairCallback* pairCallback) + { + m_userPairCallback = pairCallback; + } + const btOverlappingPairCallback* getOverlappingPairUserCallback() const + { + return m_userPairCallback; + } + + ///getAabb returns the axis aligned bounding box in the 'global' coordinate frame + ///will add some transform later + virtual void getBroadphaseAabb(btVector3& aabbMin,btVector3& aabbMax) const + { + aabbMin = m_worldAabbMin; + aabbMax = m_worldAabbMax; + } + + virtual void printStats() + { +/* printf("btAxisSweep3.h\n"); + printf("numHandles = %d, maxHandles = %d\n",m_numHandles,m_maxHandles); + printf("aabbMin=%f,%f,%f,aabbMax=%f,%f,%f\n",m_worldAabbMin.getX(),m_worldAabbMin.getY(),m_worldAabbMin.getZ(), + m_worldAabbMax.getX(),m_worldAabbMax.getY(),m_worldAabbMax.getZ()); + */ + + } + +}; + +//////////////////////////////////////////////////////////////////// + + + + +#ifdef DEBUG_BROADPHASE +#include + +template +void btAxisSweep3::debugPrintAxis(int axis, bool checkCardinality) +{ + int numEdges = m_pHandles[0].m_maxEdges[axis]; + printf("SAP Axis %d, numEdges=%d\n",axis,numEdges); + + int i; + for (i=0;im_handle); + int handleIndex = pEdge->IsMax()? pHandlePrev->m_maxEdges[axis] : pHandlePrev->m_minEdges[axis]; + char beginOrEnd; + beginOrEnd=pEdge->IsMax()?'E':'B'; + printf(" [%c,h=%d,p=%x,i=%d]\n",beginOrEnd,pEdge->m_handle,pEdge->m_pos,handleIndex); + } + + if (checkCardinality) + btAssert(numEdges == m_numHandles*2+1); +} +#endif //DEBUG_BROADPHASE + +template +btBroadphaseProxy* btAxisSweep3Internal::createProxy( const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr,short int collisionFilterGroup,short int collisionFilterMask,btDispatcher* dispatcher,void* multiSapProxy) +{ + (void)shapeType; + BP_FP_INT_TYPE handleId = addHandle(aabbMin,aabbMax, userPtr,collisionFilterGroup,collisionFilterMask,dispatcher,multiSapProxy); + + Handle* handle = getHandle(handleId); + + if (m_raycastAccelerator) + { + btBroadphaseProxy* rayProxy = m_raycastAccelerator->createProxy(aabbMin,aabbMax,shapeType,userPtr,collisionFilterGroup,collisionFilterMask,dispatcher,0); + handle->m_dbvtProxy = rayProxy; + } + return handle; +} + + + +template +void btAxisSweep3Internal::destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher) +{ + Handle* handle = static_cast(proxy); + if (m_raycastAccelerator) + m_raycastAccelerator->destroyProxy(handle->m_dbvtProxy,dispatcher); + removeHandle(static_cast(handle->m_uniqueId), dispatcher); +} + +template +void btAxisSweep3Internal::setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* dispatcher) +{ + Handle* handle = static_cast(proxy); + handle->m_aabbMin = aabbMin; + handle->m_aabbMax = aabbMax; + updateHandle(static_cast(handle->m_uniqueId), aabbMin, aabbMax,dispatcher); + if (m_raycastAccelerator) + m_raycastAccelerator->setAabb(handle->m_dbvtProxy,aabbMin,aabbMax,dispatcher); + +} + +template +void btAxisSweep3Internal::rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback,const btVector3& aabbMin,const btVector3& aabbMax) +{ + if (m_raycastAccelerator) + { + m_raycastAccelerator->rayTest(rayFrom,rayTo,rayCallback,aabbMin,aabbMax); + } else + { + //choose axis? + BP_FP_INT_TYPE axis = 0; + //for each proxy + for (BP_FP_INT_TYPE i=1;i +void btAxisSweep3Internal::aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback) +{ + if (m_raycastAccelerator) + { + m_raycastAccelerator->aabbTest(aabbMin,aabbMax,callback); + } else + { + //choose axis? + BP_FP_INT_TYPE axis = 0; + //for each proxy + for (BP_FP_INT_TYPE i=1;im_aabbMin,handle->m_aabbMax)) + { + callback.process(handle); + } + } + } + } +} + + + +template +void btAxisSweep3Internal::getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const +{ + Handle* pHandle = static_cast(proxy); + aabbMin = pHandle->m_aabbMin; + aabbMax = pHandle->m_aabbMax; +} + + +template +void btAxisSweep3Internal::unQuantize(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const +{ + Handle* pHandle = static_cast(proxy); + + unsigned short vecInMin[3]; + unsigned short vecInMax[3]; + + vecInMin[0] = m_pEdges[0][pHandle->m_minEdges[0]].m_pos ; + vecInMax[0] = m_pEdges[0][pHandle->m_maxEdges[0]].m_pos +1 ; + vecInMin[1] = m_pEdges[1][pHandle->m_minEdges[1]].m_pos ; + vecInMax[1] = m_pEdges[1][pHandle->m_maxEdges[1]].m_pos +1 ; + vecInMin[2] = m_pEdges[2][pHandle->m_minEdges[2]].m_pos ; + vecInMax[2] = m_pEdges[2][pHandle->m_maxEdges[2]].m_pos +1 ; + + aabbMin.setValue((btScalar)(vecInMin[0]) / (m_quantize.getX()),(btScalar)(vecInMin[1]) / (m_quantize.getY()),(btScalar)(vecInMin[2]) / (m_quantize.getZ())); + aabbMin += m_worldAabbMin; + + aabbMax.setValue((btScalar)(vecInMax[0]) / (m_quantize.getX()),(btScalar)(vecInMax[1]) / (m_quantize.getY()),(btScalar)(vecInMax[2]) / (m_quantize.getZ())); + aabbMax += m_worldAabbMin; +} + + + + +template +btAxisSweep3Internal::btAxisSweep3Internal(const btVector3& worldAabbMin,const btVector3& worldAabbMax, BP_FP_INT_TYPE handleMask, BP_FP_INT_TYPE handleSentinel,BP_FP_INT_TYPE userMaxHandles, btOverlappingPairCache* pairCache , bool disableRaycastAccelerator) +:m_bpHandleMask(handleMask), +m_handleSentinel(handleSentinel), +m_pairCache(pairCache), +m_userPairCallback(0), +m_ownsPairCache(false), +m_invalidPair(0), +m_raycastAccelerator(0) +{ + BP_FP_INT_TYPE maxHandles = static_cast(userMaxHandles+1);//need to add one sentinel handle + + if (!m_pairCache) + { + void* ptr = btAlignedAlloc(sizeof(btHashedOverlappingPairCache),16); + m_pairCache = new(ptr) btHashedOverlappingPairCache(); + m_ownsPairCache = true; + } + + if (!disableRaycastAccelerator) + { + m_nullPairCache = new (btAlignedAlloc(sizeof(btNullPairCache),16)) btNullPairCache(); + m_raycastAccelerator = new (btAlignedAlloc(sizeof(btDbvtBroadphase),16)) btDbvtBroadphase(m_nullPairCache);//m_pairCache); + m_raycastAccelerator->m_deferedcollide = true;//don't add/remove pairs + } + + //btAssert(bounds.HasVolume()); + + // init bounds + m_worldAabbMin = worldAabbMin; + m_worldAabbMax = worldAabbMax; + + btVector3 aabbSize = m_worldAabbMax - m_worldAabbMin; + + BP_FP_INT_TYPE maxInt = m_handleSentinel; + + m_quantize = btVector3(btScalar(maxInt),btScalar(maxInt),btScalar(maxInt)) / aabbSize; + + // allocate handles buffer, using btAlignedAlloc, and put all handles on free list + m_pHandles = new Handle[maxHandles]; + + m_maxHandles = maxHandles; + m_numHandles = 0; + + // handle 0 is reserved as the null index, and is also used as the sentinel + m_firstFreeHandle = 1; + { + for (BP_FP_INT_TYPE i = m_firstFreeHandle; i < maxHandles; i++) + m_pHandles[i].SetNextFree(static_cast(i + 1)); + m_pHandles[maxHandles - 1].SetNextFree(0); + } + + { + // allocate edge buffers + for (int i = 0; i < 3; i++) + { + m_pEdgesRawPtr[i] = btAlignedAlloc(sizeof(Edge)*maxHandles*2,16); + m_pEdges[i] = new(m_pEdgesRawPtr[i]) Edge[maxHandles * 2]; + } + } + //removed overlap management + + // make boundary sentinels + + m_pHandles[0].m_clientObject = 0; + + for (int axis = 0; axis < 3; axis++) + { + m_pHandles[0].m_minEdges[axis] = 0; + m_pHandles[0].m_maxEdges[axis] = 1; + + m_pEdges[axis][0].m_pos = 0; + m_pEdges[axis][0].m_handle = 0; + m_pEdges[axis][1].m_pos = m_handleSentinel; + m_pEdges[axis][1].m_handle = 0; +#ifdef DEBUG_BROADPHASE + debugPrintAxis(axis); +#endif //DEBUG_BROADPHASE + + } + +} + +template +btAxisSweep3Internal::~btAxisSweep3Internal() +{ + if (m_raycastAccelerator) + { + m_nullPairCache->~btOverlappingPairCache(); + btAlignedFree(m_nullPairCache); + m_raycastAccelerator->~btDbvtBroadphase(); + btAlignedFree (m_raycastAccelerator); + } + + for (int i = 2; i >= 0; i--) + { + btAlignedFree(m_pEdgesRawPtr[i]); + } + delete [] m_pHandles; + + if (m_ownsPairCache) + { + m_pairCache->~btOverlappingPairCache(); + btAlignedFree(m_pairCache); + } +} + +template +void btAxisSweep3Internal::quantize(BP_FP_INT_TYPE* out, const btVector3& point, int isMax) const +{ +#ifdef OLD_CLAMPING_METHOD + ///problem with this clamping method is that the floating point during quantization might still go outside the range [(0|isMax) .. (m_handleSentinel&m_bpHandleMask]|isMax] + ///see http://code.google.com/p/bullet/issues/detail?id=87 + btVector3 clampedPoint(point); + clampedPoint.setMax(m_worldAabbMin); + clampedPoint.setMin(m_worldAabbMax); + btVector3 v = (clampedPoint - m_worldAabbMin) * m_quantize; + out[0] = (BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v.getX() & m_bpHandleMask) | isMax); + out[1] = (BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v.getY() & m_bpHandleMask) | isMax); + out[2] = (BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v.getZ() & m_bpHandleMask) | isMax); +#else + btVector3 v = (point - m_worldAabbMin) * m_quantize; + out[0]=(v[0]<=0)?(BP_FP_INT_TYPE)isMax:(v[0]>=m_handleSentinel)?(BP_FP_INT_TYPE)((m_handleSentinel&m_bpHandleMask)|isMax):(BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v[0]&m_bpHandleMask)|isMax); + out[1]=(v[1]<=0)?(BP_FP_INT_TYPE)isMax:(v[1]>=m_handleSentinel)?(BP_FP_INT_TYPE)((m_handleSentinel&m_bpHandleMask)|isMax):(BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v[1]&m_bpHandleMask)|isMax); + out[2]=(v[2]<=0)?(BP_FP_INT_TYPE)isMax:(v[2]>=m_handleSentinel)?(BP_FP_INT_TYPE)((m_handleSentinel&m_bpHandleMask)|isMax):(BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v[2]&m_bpHandleMask)|isMax); +#endif //OLD_CLAMPING_METHOD +} + + +template +BP_FP_INT_TYPE btAxisSweep3Internal::allocHandle() +{ + btAssert(m_firstFreeHandle); + + BP_FP_INT_TYPE handle = m_firstFreeHandle; + m_firstFreeHandle = getHandle(handle)->GetNextFree(); + m_numHandles++; + + return handle; +} + +template +void btAxisSweep3Internal::freeHandle(BP_FP_INT_TYPE handle) +{ + btAssert(handle > 0 && handle < m_maxHandles); + + getHandle(handle)->SetNextFree(m_firstFreeHandle); + m_firstFreeHandle = handle; + + m_numHandles--; +} + + +template +BP_FP_INT_TYPE btAxisSweep3Internal::addHandle(const btVector3& aabbMin,const btVector3& aabbMax, void* pOwner,short int collisionFilterGroup,short int collisionFilterMask,btDispatcher* dispatcher,void* multiSapProxy) +{ + // quantize the bounds + BP_FP_INT_TYPE min[3], max[3]; + quantize(min, aabbMin, 0); + quantize(max, aabbMax, 1); + + // allocate a handle + BP_FP_INT_TYPE handle = allocHandle(); + + + Handle* pHandle = getHandle(handle); + + pHandle->m_uniqueId = static_cast(handle); + //pHandle->m_pOverlaps = 0; + pHandle->m_clientObject = pOwner; + pHandle->m_collisionFilterGroup = collisionFilterGroup; + pHandle->m_collisionFilterMask = collisionFilterMask; + pHandle->m_multiSapParentProxy = multiSapProxy; + + // compute current limit of edge arrays + BP_FP_INT_TYPE limit = static_cast(m_numHandles * 2); + + + // insert new edges just inside the max boundary edge + for (BP_FP_INT_TYPE axis = 0; axis < 3; axis++) + { + + m_pHandles[0].m_maxEdges[axis] += 2; + + m_pEdges[axis][limit + 1] = m_pEdges[axis][limit - 1]; + + m_pEdges[axis][limit - 1].m_pos = min[axis]; + m_pEdges[axis][limit - 1].m_handle = handle; + + m_pEdges[axis][limit].m_pos = max[axis]; + m_pEdges[axis][limit].m_handle = handle; + + pHandle->m_minEdges[axis] = static_cast(limit - 1); + pHandle->m_maxEdges[axis] = limit; + } + + // now sort the new edges to their correct position + sortMinDown(0, pHandle->m_minEdges[0], dispatcher,false); + sortMaxDown(0, pHandle->m_maxEdges[0], dispatcher,false); + sortMinDown(1, pHandle->m_minEdges[1], dispatcher,false); + sortMaxDown(1, pHandle->m_maxEdges[1], dispatcher,false); + sortMinDown(2, pHandle->m_minEdges[2], dispatcher,true); + sortMaxDown(2, pHandle->m_maxEdges[2], dispatcher,true); + + + return handle; +} + + +template +void btAxisSweep3Internal::removeHandle(BP_FP_INT_TYPE handle,btDispatcher* dispatcher) +{ + + Handle* pHandle = getHandle(handle); + + //explicitly remove the pairs containing the proxy + //we could do it also in the sortMinUp (passing true) + ///@todo: compare performance + if (!m_pairCache->hasDeferredRemoval()) + { + m_pairCache->removeOverlappingPairsContainingProxy(pHandle,dispatcher); + } + + // compute current limit of edge arrays + int limit = static_cast(m_numHandles * 2); + + int axis; + + for (axis = 0;axis<3;axis++) + { + m_pHandles[0].m_maxEdges[axis] -= 2; + } + + // remove the edges by sorting them up to the end of the list + for ( axis = 0; axis < 3; axis++) + { + Edge* pEdges = m_pEdges[axis]; + BP_FP_INT_TYPE max = pHandle->m_maxEdges[axis]; + pEdges[max].m_pos = m_handleSentinel; + + sortMaxUp(axis,max,dispatcher,false); + + + BP_FP_INT_TYPE i = pHandle->m_minEdges[axis]; + pEdges[i].m_pos = m_handleSentinel; + + + sortMinUp(axis,i,dispatcher,false); + + pEdges[limit-1].m_handle = 0; + pEdges[limit-1].m_pos = m_handleSentinel; + +#ifdef DEBUG_BROADPHASE + debugPrintAxis(axis,false); +#endif //DEBUG_BROADPHASE + + + } + + + // free the handle + freeHandle(handle); + + +} + +template +void btAxisSweep3Internal::resetPool(btDispatcher* dispatcher) +{ + if (m_numHandles == 0) + { + m_firstFreeHandle = 1; + { + for (BP_FP_INT_TYPE i = m_firstFreeHandle; i < m_maxHandles; i++) + m_pHandles[i].SetNextFree(static_cast(i + 1)); + m_pHandles[m_maxHandles - 1].SetNextFree(0); + } + } +} + + +extern int gOverlappingPairs; +//#include + +template +void btAxisSweep3Internal::calculateOverlappingPairs(btDispatcher* dispatcher) +{ + + if (m_pairCache->hasDeferredRemoval()) + { + + btBroadphasePairArray& overlappingPairArray = m_pairCache->getOverlappingPairArray(); + + //perform a sort, to find duplicates and to sort 'invalid' pairs to the end + overlappingPairArray.quickSort(btBroadphasePairSortPredicate()); + + overlappingPairArray.resize(overlappingPairArray.size() - m_invalidPair); + m_invalidPair = 0; + + + int i; + + btBroadphasePair previousPair; + previousPair.m_pProxy0 = 0; + previousPair.m_pProxy1 = 0; + previousPair.m_algorithm = 0; + + + for (i=0;iprocessOverlap(pair); + } else + { + needsRemoval = true; + } + } else + { + //remove duplicate + needsRemoval = true; + //should have no algorithm + btAssert(!pair.m_algorithm); + } + + if (needsRemoval) + { + m_pairCache->cleanOverlappingPair(pair,dispatcher); + + // m_overlappingPairArray.swap(i,m_overlappingPairArray.size()-1); + // m_overlappingPairArray.pop_back(); + pair.m_pProxy0 = 0; + pair.m_pProxy1 = 0; + m_invalidPair++; + gOverlappingPairs--; + } + + } + + ///if you don't like to skip the invalid pairs in the array, execute following code: + #define CLEAN_INVALID_PAIRS 1 + #ifdef CLEAN_INVALID_PAIRS + + //perform a sort, to sort 'invalid' pairs to the end + overlappingPairArray.quickSort(btBroadphasePairSortPredicate()); + + overlappingPairArray.resize(overlappingPairArray.size() - m_invalidPair); + m_invalidPair = 0; + #endif//CLEAN_INVALID_PAIRS + + //printf("overlappingPairArray.size()=%d\n",overlappingPairArray.size()); + } + +} + + +template +bool btAxisSweep3Internal::testAabbOverlap(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) +{ + const Handle* pHandleA = static_cast(proxy0); + const Handle* pHandleB = static_cast(proxy1); + + //optimization 1: check the array index (memory address), instead of the m_pos + + for (int axis = 0; axis < 3; axis++) + { + if (pHandleA->m_maxEdges[axis] < pHandleB->m_minEdges[axis] || + pHandleB->m_maxEdges[axis] < pHandleA->m_minEdges[axis]) + { + return false; + } + } + return true; +} + +template +bool btAxisSweep3Internal::testOverlap2D(const Handle* pHandleA, const Handle* pHandleB,int axis0,int axis1) +{ + //optimization 1: check the array index (memory address), instead of the m_pos + + if (pHandleA->m_maxEdges[axis0] < pHandleB->m_minEdges[axis0] || + pHandleB->m_maxEdges[axis0] < pHandleA->m_minEdges[axis0] || + pHandleA->m_maxEdges[axis1] < pHandleB->m_minEdges[axis1] || + pHandleB->m_maxEdges[axis1] < pHandleA->m_minEdges[axis1]) + { + return false; + } + return true; +} + +template +void btAxisSweep3Internal::updateHandle(BP_FP_INT_TYPE handle, const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* dispatcher) +{ +// btAssert(bounds.IsFinite()); + //btAssert(bounds.HasVolume()); + + Handle* pHandle = getHandle(handle); + + // quantize the new bounds + BP_FP_INT_TYPE min[3], max[3]; + quantize(min, aabbMin, 0); + quantize(max, aabbMax, 1); + + // update changed edges + for (int axis = 0; axis < 3; axis++) + { + BP_FP_INT_TYPE emin = pHandle->m_minEdges[axis]; + BP_FP_INT_TYPE emax = pHandle->m_maxEdges[axis]; + + int dmin = (int)min[axis] - (int)m_pEdges[axis][emin].m_pos; + int dmax = (int)max[axis] - (int)m_pEdges[axis][emax].m_pos; + + m_pEdges[axis][emin].m_pos = min[axis]; + m_pEdges[axis][emax].m_pos = max[axis]; + + // expand (only adds overlaps) + if (dmin < 0) + sortMinDown(axis, emin,dispatcher,true); + + if (dmax > 0) + sortMaxUp(axis, emax,dispatcher,true); + + // shrink (only removes overlaps) + if (dmin > 0) + sortMinUp(axis, emin,dispatcher,true); + + if (dmax < 0) + sortMaxDown(axis, emax,dispatcher,true); + +#ifdef DEBUG_BROADPHASE + debugPrintAxis(axis); +#endif //DEBUG_BROADPHASE + } + + +} + + + + +// sorting a min edge downwards can only ever *add* overlaps +template +void btAxisSweep3Internal::sortMinDown(int axis, BP_FP_INT_TYPE edge, btDispatcher* /* dispatcher */, bool updateOverlaps) +{ + + Edge* pEdge = m_pEdges[axis] + edge; + Edge* pPrev = pEdge - 1; + Handle* pHandleEdge = getHandle(pEdge->m_handle); + + while (pEdge->m_pos < pPrev->m_pos) + { + Handle* pHandlePrev = getHandle(pPrev->m_handle); + + if (pPrev->IsMax()) + { + // if previous edge is a maximum check the bounds and add an overlap if necessary + const int axis1 = (1 << axis) & 3; + const int axis2 = (1 << axis1) & 3; + if (updateOverlaps && testOverlap2D(pHandleEdge, pHandlePrev,axis1,axis2)) + { + m_pairCache->addOverlappingPair(pHandleEdge,pHandlePrev); + if (m_userPairCallback) + m_userPairCallback->addOverlappingPair(pHandleEdge,pHandlePrev); + + //AddOverlap(pEdge->m_handle, pPrev->m_handle); + + } + + // update edge reference in other handle + pHandlePrev->m_maxEdges[axis]++; + } + else + pHandlePrev->m_minEdges[axis]++; + + pHandleEdge->m_minEdges[axis]--; + + // swap the edges + Edge swap = *pEdge; + *pEdge = *pPrev; + *pPrev = swap; + + // decrement + pEdge--; + pPrev--; + } + +#ifdef DEBUG_BROADPHASE + debugPrintAxis(axis); +#endif //DEBUG_BROADPHASE + +} + +// sorting a min edge upwards can only ever *remove* overlaps +template +void btAxisSweep3Internal::sortMinUp(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps) +{ + Edge* pEdge = m_pEdges[axis] + edge; + Edge* pNext = pEdge + 1; + Handle* pHandleEdge = getHandle(pEdge->m_handle); + + while (pNext->m_handle && (pEdge->m_pos >= pNext->m_pos)) + { + Handle* pHandleNext = getHandle(pNext->m_handle); + + if (pNext->IsMax()) + { + Handle* handle0 = getHandle(pEdge->m_handle); + Handle* handle1 = getHandle(pNext->m_handle); + const int axis1 = (1 << axis) & 3; + const int axis2 = (1 << axis1) & 3; + + // if next edge is maximum remove any overlap between the two handles + if (updateOverlaps +#ifdef USE_OVERLAP_TEST_ON_REMOVES + && testOverlap2D(handle0,handle1,axis1,axis2) +#endif //USE_OVERLAP_TEST_ON_REMOVES + ) + { + + + m_pairCache->removeOverlappingPair(handle0,handle1,dispatcher); + if (m_userPairCallback) + m_userPairCallback->removeOverlappingPair(handle0,handle1,dispatcher); + + } + + + // update edge reference in other handle + pHandleNext->m_maxEdges[axis]--; + } + else + pHandleNext->m_minEdges[axis]--; + + pHandleEdge->m_minEdges[axis]++; + + // swap the edges + Edge swap = *pEdge; + *pEdge = *pNext; + *pNext = swap; + + // increment + pEdge++; + pNext++; + } + + +} + +// sorting a max edge downwards can only ever *remove* overlaps +template +void btAxisSweep3Internal::sortMaxDown(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps) +{ + + Edge* pEdge = m_pEdges[axis] + edge; + Edge* pPrev = pEdge - 1; + Handle* pHandleEdge = getHandle(pEdge->m_handle); + + while (pEdge->m_pos < pPrev->m_pos) + { + Handle* pHandlePrev = getHandle(pPrev->m_handle); + + if (!pPrev->IsMax()) + { + // if previous edge was a minimum remove any overlap between the two handles + Handle* handle0 = getHandle(pEdge->m_handle); + Handle* handle1 = getHandle(pPrev->m_handle); + const int axis1 = (1 << axis) & 3; + const int axis2 = (1 << axis1) & 3; + + if (updateOverlaps +#ifdef USE_OVERLAP_TEST_ON_REMOVES + && testOverlap2D(handle0,handle1,axis1,axis2) +#endif //USE_OVERLAP_TEST_ON_REMOVES + ) + { + //this is done during the overlappingpairarray iteration/narrowphase collision + + + m_pairCache->removeOverlappingPair(handle0,handle1,dispatcher); + if (m_userPairCallback) + m_userPairCallback->removeOverlappingPair(handle0,handle1,dispatcher); + + + + } + + // update edge reference in other handle + pHandlePrev->m_minEdges[axis]++;; + } + else + pHandlePrev->m_maxEdges[axis]++; + + pHandleEdge->m_maxEdges[axis]--; + + // swap the edges + Edge swap = *pEdge; + *pEdge = *pPrev; + *pPrev = swap; + + // decrement + pEdge--; + pPrev--; + } + + +#ifdef DEBUG_BROADPHASE + debugPrintAxis(axis); +#endif //DEBUG_BROADPHASE + +} + +// sorting a max edge upwards can only ever *add* overlaps +template +void btAxisSweep3Internal::sortMaxUp(int axis, BP_FP_INT_TYPE edge, btDispatcher* /* dispatcher */, bool updateOverlaps) +{ + Edge* pEdge = m_pEdges[axis] + edge; + Edge* pNext = pEdge + 1; + Handle* pHandleEdge = getHandle(pEdge->m_handle); + + while (pNext->m_handle && (pEdge->m_pos >= pNext->m_pos)) + { + Handle* pHandleNext = getHandle(pNext->m_handle); + + const int axis1 = (1 << axis) & 3; + const int axis2 = (1 << axis1) & 3; + + if (!pNext->IsMax()) + { + // if next edge is a minimum check the bounds and add an overlap if necessary + if (updateOverlaps && testOverlap2D(pHandleEdge, pHandleNext,axis1,axis2)) + { + Handle* handle0 = getHandle(pEdge->m_handle); + Handle* handle1 = getHandle(pNext->m_handle); + m_pairCache->addOverlappingPair(handle0,handle1); + if (m_userPairCallback) + m_userPairCallback->addOverlappingPair(handle0,handle1); + } + + // update edge reference in other handle + pHandleNext->m_minEdges[axis]--; + } + else + pHandleNext->m_maxEdges[axis]--; + + pHandleEdge->m_maxEdges[axis]++; + + // swap the edges + Edge swap = *pEdge; + *pEdge = *pNext; + *pNext = swap; + + // increment + pEdge++; + pNext++; + } + +} + + + +//////////////////////////////////////////////////////////////////// + + +/// The btAxisSweep3 is an efficient implementation of the 3d axis sweep and prune broadphase. +/// It uses arrays rather then lists for storage of the 3 axis. Also it operates using 16 bit integer coordinates instead of floats. +/// For large worlds and many objects, use bt32BitAxisSweep3 or btDbvtBroadphase instead. bt32BitAxisSweep3 has higher precision and allows more then 16384 objects at the cost of more memory and bit of performance. +class btAxisSweep3 : public btAxisSweep3Internal +{ +public: + + btAxisSweep3(const btVector3& worldAabbMin,const btVector3& worldAabbMax, unsigned short int maxHandles = 16384, btOverlappingPairCache* pairCache = 0, bool disableRaycastAccelerator = false); + +}; + +/// The bt32BitAxisSweep3 allows higher precision quantization and more objects compared to the btAxisSweep3 sweep and prune. +/// This comes at the cost of more memory per handle, and a bit slower performance. +/// It uses arrays rather then lists for storage of the 3 axis. +class bt32BitAxisSweep3 : public btAxisSweep3Internal +{ +public: + + bt32BitAxisSweep3(const btVector3& worldAabbMin,const btVector3& worldAabbMax, unsigned int maxHandles = 1500000, btOverlappingPairCache* pairCache = 0, bool disableRaycastAccelerator = false); + +}; + +#endif + diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h new file mode 100644 index 00000000000..fe414effbfc --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h @@ -0,0 +1,82 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BROADPHASE_INTERFACE_H +#define BROADPHASE_INTERFACE_H + + + +struct btDispatcherInfo; +class btDispatcher; +#include "btBroadphaseProxy.h" + +class btOverlappingPairCache; + + + +struct btBroadphaseAabbCallback +{ + virtual ~btBroadphaseAabbCallback() {} + virtual bool process(const btBroadphaseProxy* proxy) = 0; +}; + + +struct btBroadphaseRayCallback : public btBroadphaseAabbCallback +{ + ///added some cached data to accelerate ray-AABB tests + btVector3 m_rayDirectionInverse; + unsigned int m_signs[3]; + btScalar m_lambda_max; + + virtual ~btBroadphaseRayCallback() {} +}; + +#include "LinearMath/btVector3.h" + +///The btBroadphaseInterface class provides an interface to detect aabb-overlapping object pairs. +///Some implementations for this broadphase interface include btAxisSweep3, bt32BitAxisSweep3 and btDbvtBroadphase. +///The actual overlapping pair management, storage, adding and removing of pairs is dealt by the btOverlappingPairCache class. +class btBroadphaseInterface +{ +public: + virtual ~btBroadphaseInterface() {} + + virtual btBroadphaseProxy* createProxy( const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr, short int collisionFilterGroup,short int collisionFilterMask, btDispatcher* dispatcher,void* multiSapProxy) =0; + virtual void destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher)=0; + virtual void setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax, btDispatcher* dispatcher)=0; + virtual void getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const =0; + + virtual void rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin=btVector3(0,0,0), const btVector3& aabbMax = btVector3(0,0,0)) = 0; + + virtual void aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback) = 0; + + ///calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during the set aabb + virtual void calculateOverlappingPairs(btDispatcher* dispatcher)=0; + + virtual btOverlappingPairCache* getOverlappingPairCache()=0; + virtual const btOverlappingPairCache* getOverlappingPairCache() const =0; + + ///getAabb returns the axis aligned bounding box in the 'global' coordinate frame + ///will add some transform later + virtual void getBroadphaseAabb(btVector3& aabbMin,btVector3& aabbMax) const =0; + + ///reset broadphase internal structures, to ensure determinism/reproducability + virtual void resetPool(btDispatcher* dispatcher) { (void) dispatcher; }; + + virtual void printStats() = 0; + +}; + +#endif //BROADPHASE_INTERFACE_H diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp new file mode 100644 index 00000000000..f4d7341f8dd --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp @@ -0,0 +1,17 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btBroadphaseProxy.h" + diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h new file mode 100644 index 00000000000..62d349739c3 --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h @@ -0,0 +1,270 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BROADPHASE_PROXY_H +#define BROADPHASE_PROXY_H + +#include "LinearMath/btScalar.h" //for SIMD_FORCE_INLINE +#include "LinearMath/btVector3.h" +#include "LinearMath/btAlignedAllocator.h" + + +/// btDispatcher uses these types +/// IMPORTANT NOTE:The types are ordered polyhedral, implicit convex and concave +/// to facilitate type checking +/// CUSTOM_POLYHEDRAL_SHAPE_TYPE,CUSTOM_CONVEX_SHAPE_TYPE and CUSTOM_CONCAVE_SHAPE_TYPE can be used to extend Bullet without modifying source code +enum BroadphaseNativeTypes +{ + // polyhedral convex shapes + BOX_SHAPE_PROXYTYPE, + TRIANGLE_SHAPE_PROXYTYPE, + TETRAHEDRAL_SHAPE_PROXYTYPE, + CONVEX_TRIANGLEMESH_SHAPE_PROXYTYPE, + CONVEX_HULL_SHAPE_PROXYTYPE, + CONVEX_POINT_CLOUD_SHAPE_PROXYTYPE, + CUSTOM_POLYHEDRAL_SHAPE_TYPE, +//implicit convex shapes +IMPLICIT_CONVEX_SHAPES_START_HERE, + SPHERE_SHAPE_PROXYTYPE, + MULTI_SPHERE_SHAPE_PROXYTYPE, + CAPSULE_SHAPE_PROXYTYPE, + CONE_SHAPE_PROXYTYPE, + CONVEX_SHAPE_PROXYTYPE, + CYLINDER_SHAPE_PROXYTYPE, + UNIFORM_SCALING_SHAPE_PROXYTYPE, + MINKOWSKI_SUM_SHAPE_PROXYTYPE, + MINKOWSKI_DIFFERENCE_SHAPE_PROXYTYPE, + BOX_2D_SHAPE_PROXYTYPE, + CONVEX_2D_SHAPE_PROXYTYPE, + CUSTOM_CONVEX_SHAPE_TYPE, +//concave shapes +CONCAVE_SHAPES_START_HERE, + //keep all the convex shapetype below here, for the check IsConvexShape in broadphase proxy! + TRIANGLE_MESH_SHAPE_PROXYTYPE, + SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE, + ///used for demo integration FAST/Swift collision library and Bullet + FAST_CONCAVE_MESH_PROXYTYPE, + //terrain + TERRAIN_SHAPE_PROXYTYPE, +///Used for GIMPACT Trimesh integration + GIMPACT_SHAPE_PROXYTYPE, +///Multimaterial mesh + MULTIMATERIAL_TRIANGLE_MESH_PROXYTYPE, + + EMPTY_SHAPE_PROXYTYPE, + STATIC_PLANE_PROXYTYPE, + CUSTOM_CONCAVE_SHAPE_TYPE, +CONCAVE_SHAPES_END_HERE, + + COMPOUND_SHAPE_PROXYTYPE, + + SOFTBODY_SHAPE_PROXYTYPE, + HFFLUID_SHAPE_PROXYTYPE, + HFFLUID_BUOYANT_CONVEX_SHAPE_PROXYTYPE, + INVALID_SHAPE_PROXYTYPE, + + MAX_BROADPHASE_COLLISION_TYPES + +}; + + +///The btBroadphaseProxy is the main class that can be used with the Bullet broadphases. +///It stores collision shape type information, collision filter information and a client object, typically a btCollisionObject or btRigidBody. +ATTRIBUTE_ALIGNED16(struct) btBroadphaseProxy +{ + +BT_DECLARE_ALIGNED_ALLOCATOR(); + + ///optional filtering to cull potential collisions + enum CollisionFilterGroups + { + DefaultFilter = 1, + StaticFilter = 2, + KinematicFilter = 4, + DebrisFilter = 8, + SensorTrigger = 16, + CharacterFilter = 32, + AllFilter = -1 //all bits sets: DefaultFilter | StaticFilter | KinematicFilter | DebrisFilter | SensorTrigger + }; + + //Usually the client btCollisionObject or Rigidbody class + void* m_clientObject; + short int m_collisionFilterGroup; + short int m_collisionFilterMask; + void* m_multiSapParentProxy; + int m_uniqueId;//m_uniqueId is introduced for paircache. could get rid of this, by calculating the address offset etc. + + btVector3 m_aabbMin; + btVector3 m_aabbMax; + + SIMD_FORCE_INLINE int getUid() const + { + return m_uniqueId; + } + + //used for memory pools + btBroadphaseProxy() :m_clientObject(0),m_multiSapParentProxy(0) + { + } + + btBroadphaseProxy(const btVector3& aabbMin,const btVector3& aabbMax,void* userPtr,short int collisionFilterGroup, short int collisionFilterMask,void* multiSapParentProxy=0) + :m_clientObject(userPtr), + m_collisionFilterGroup(collisionFilterGroup), + m_collisionFilterMask(collisionFilterMask), + m_aabbMin(aabbMin), + m_aabbMax(aabbMax) + { + m_multiSapParentProxy = multiSapParentProxy; + } + + + + static SIMD_FORCE_INLINE bool isPolyhedral(int proxyType) + { + return (proxyType < IMPLICIT_CONVEX_SHAPES_START_HERE); + } + + static SIMD_FORCE_INLINE bool isConvex(int proxyType) + { + return (proxyType < CONCAVE_SHAPES_START_HERE); + } + + static SIMD_FORCE_INLINE bool isNonMoving(int proxyType) + { + return (isConcave(proxyType) && !(proxyType==GIMPACT_SHAPE_PROXYTYPE)); + } + + static SIMD_FORCE_INLINE bool isConcave(int proxyType) + { + return ((proxyType > CONCAVE_SHAPES_START_HERE) && + (proxyType < CONCAVE_SHAPES_END_HERE)); + } + static SIMD_FORCE_INLINE bool isCompound(int proxyType) + { + return (proxyType == COMPOUND_SHAPE_PROXYTYPE); + } + + static SIMD_FORCE_INLINE bool isSoftBody(int proxyType) + { + return (proxyType == SOFTBODY_SHAPE_PROXYTYPE); + } + + static SIMD_FORCE_INLINE bool isInfinite(int proxyType) + { + return (proxyType == STATIC_PLANE_PROXYTYPE); + } + + static SIMD_FORCE_INLINE bool isConvex2d(int proxyType) + { + return (proxyType == BOX_2D_SHAPE_PROXYTYPE) || (proxyType == CONVEX_2D_SHAPE_PROXYTYPE); + } + + +} +; + +class btCollisionAlgorithm; + +struct btBroadphaseProxy; + + + +///The btBroadphasePair class contains a pair of aabb-overlapping objects. +///A btDispatcher can search a btCollisionAlgorithm that performs exact/narrowphase collision detection on the actual collision shapes. +ATTRIBUTE_ALIGNED16(struct) btBroadphasePair +{ + btBroadphasePair () + : + m_pProxy0(0), + m_pProxy1(0), + m_algorithm(0), + m_internalInfo1(0) + { + } + +BT_DECLARE_ALIGNED_ALLOCATOR(); + + btBroadphasePair(const btBroadphasePair& other) + : m_pProxy0(other.m_pProxy0), + m_pProxy1(other.m_pProxy1), + m_algorithm(other.m_algorithm), + m_internalInfo1(other.m_internalInfo1) + { + } + btBroadphasePair(btBroadphaseProxy& proxy0,btBroadphaseProxy& proxy1) + { + + //keep them sorted, so the std::set operations work + if (proxy0.m_uniqueId < proxy1.m_uniqueId) + { + m_pProxy0 = &proxy0; + m_pProxy1 = &proxy1; + } + else + { + m_pProxy0 = &proxy1; + m_pProxy1 = &proxy0; + } + + m_algorithm = 0; + m_internalInfo1 = 0; + + } + + btBroadphaseProxy* m_pProxy0; + btBroadphaseProxy* m_pProxy1; + + mutable btCollisionAlgorithm* m_algorithm; + union { void* m_internalInfo1; int m_internalTmpValue;};//don't use this data, it will be removed in future version. + +}; + +/* +//comparison for set operation, see Solid DT_Encounter +SIMD_FORCE_INLINE bool operator<(const btBroadphasePair& a, const btBroadphasePair& b) +{ + return a.m_pProxy0 < b.m_pProxy0 || + (a.m_pProxy0 == b.m_pProxy0 && a.m_pProxy1 < b.m_pProxy1); +} +*/ + + + +class btBroadphasePairSortPredicate +{ + public: + + bool operator() ( const btBroadphasePair& a, const btBroadphasePair& b ) + { + const int uidA0 = a.m_pProxy0 ? a.m_pProxy0->m_uniqueId : -1; + const int uidB0 = b.m_pProxy0 ? b.m_pProxy0->m_uniqueId : -1; + const int uidA1 = a.m_pProxy1 ? a.m_pProxy1->m_uniqueId : -1; + const int uidB1 = b.m_pProxy1 ? b.m_pProxy1->m_uniqueId : -1; + + return uidA0 > uidB0 || + (a.m_pProxy0 == b.m_pProxy0 && uidA1 > uidB1) || + (a.m_pProxy0 == b.m_pProxy0 && a.m_pProxy1 == b.m_pProxy1 && a.m_algorithm > b.m_algorithm); + } +}; + + +SIMD_FORCE_INLINE bool operator==(const btBroadphasePair& a, const btBroadphasePair& b) +{ + return (a.m_pProxy0 == b.m_pProxy0) && (a.m_pProxy1 == b.m_pProxy1); +} + + +#endif //BROADPHASE_PROXY_H + diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp new file mode 100644 index 00000000000..c95d1be0f2c --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp @@ -0,0 +1,23 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btCollisionAlgorithm.h" +#include "btDispatcher.h" + +btCollisionAlgorithm::btCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci) +{ + m_dispatcher = ci.m_dispatcher1; +} + diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h new file mode 100644 index 00000000000..1618ad9fdd3 --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h @@ -0,0 +1,80 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef COLLISION_ALGORITHM_H +#define COLLISION_ALGORITHM_H + +#include "LinearMath/btScalar.h" +#include "LinearMath/btAlignedObjectArray.h" + +struct btBroadphaseProxy; +class btDispatcher; +class btManifoldResult; +class btCollisionObject; +struct btDispatcherInfo; +class btPersistentManifold; + +typedef btAlignedObjectArray btManifoldArray; + +struct btCollisionAlgorithmConstructionInfo +{ + btCollisionAlgorithmConstructionInfo() + :m_dispatcher1(0), + m_manifold(0) + { + } + btCollisionAlgorithmConstructionInfo(btDispatcher* dispatcher,int temp) + :m_dispatcher1(dispatcher) + { + (void)temp; + } + + btDispatcher* m_dispatcher1; + btPersistentManifold* m_manifold; + + int getDispatcherId(); + +}; + + +///btCollisionAlgorithm is an collision interface that is compatible with the Broadphase and btDispatcher. +///It is persistent over frames +class btCollisionAlgorithm +{ + +protected: + + btDispatcher* m_dispatcher; + +protected: + int getDispatcherId(); + +public: + + btCollisionAlgorithm() {}; + + btCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci); + + virtual ~btCollisionAlgorithm() {}; + + virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) = 0; + + virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) = 0; + + virtual void getAllContactManifolds(btManifoldArray& manifoldArray) = 0; +}; + + +#endif //COLLISION_ALGORITHM_H diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btDbvt.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btDbvt.cpp new file mode 100644 index 00000000000..ff32ec1d43a --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btDbvt.cpp @@ -0,0 +1,1295 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ +///btDbvt implementation by Nathanael Presson + +#include "btDbvt.h" + +// +typedef btAlignedObjectArray tNodeArray; +typedef btAlignedObjectArray tConstNodeArray; + +// +struct btDbvtNodeEnumerator : btDbvt::ICollide +{ + tConstNodeArray nodes; + void Process(const btDbvtNode* n) { nodes.push_back(n); } +}; + +// +static DBVT_INLINE int indexof(const btDbvtNode* node) +{ + return(node->parent->childs[1]==node); +} + +// +static DBVT_INLINE btDbvtVolume merge( const btDbvtVolume& a, + const btDbvtVolume& b) +{ +#if (DBVT_MERGE_IMPL==DBVT_IMPL_SSE) + ATTRIBUTE_ALIGNED16(char locals[sizeof(btDbvtAabbMm)]); + btDbvtVolume& res=*(btDbvtVolume*)locals; +#else + btDbvtVolume res; +#endif + Merge(a,b,res); + return(res); +} + +// volume+edge lengths +static DBVT_INLINE btScalar size(const btDbvtVolume& a) +{ + const btVector3 edges=a.Lengths(); + return( edges.x()*edges.y()*edges.z()+ + edges.x()+edges.y()+edges.z()); +} + +// +static void getmaxdepth(const btDbvtNode* node,int depth,int& maxdepth) +{ + if(node->isinternal()) + { + getmaxdepth(node->childs[0],depth+1,maxdepth); + getmaxdepth(node->childs[0],depth+1,maxdepth); + } else maxdepth=btMax(maxdepth,depth); +} + +// +static DBVT_INLINE void deletenode( btDbvt* pdbvt, + btDbvtNode* node) +{ + btAlignedFree(pdbvt->m_free); + pdbvt->m_free=node; +} + +// +static void recursedeletenode( btDbvt* pdbvt, + btDbvtNode* node) +{ + if(!node->isleaf()) + { + recursedeletenode(pdbvt,node->childs[0]); + recursedeletenode(pdbvt,node->childs[1]); + } + if(node==pdbvt->m_root) pdbvt->m_root=0; + deletenode(pdbvt,node); +} + +// +static DBVT_INLINE btDbvtNode* createnode( btDbvt* pdbvt, + btDbvtNode* parent, + void* data) +{ + btDbvtNode* node; + if(pdbvt->m_free) + { node=pdbvt->m_free;pdbvt->m_free=0; } + else + { node=new(btAlignedAlloc(sizeof(btDbvtNode),16)) btDbvtNode(); } + node->parent = parent; + node->data = data; + node->childs[1] = 0; + return(node); +} + +// +static DBVT_INLINE btDbvtNode* createnode( btDbvt* pdbvt, + btDbvtNode* parent, + const btDbvtVolume& volume, + void* data) +{ + btDbvtNode* node=createnode(pdbvt,parent,data); + node->volume=volume; + return(node); +} + +// +static DBVT_INLINE btDbvtNode* createnode( btDbvt* pdbvt, + btDbvtNode* parent, + const btDbvtVolume& volume0, + const btDbvtVolume& volume1, + void* data) +{ + btDbvtNode* node=createnode(pdbvt,parent,data); + Merge(volume0,volume1,node->volume); + return(node); +} + +// +static void insertleaf( btDbvt* pdbvt, + btDbvtNode* root, + btDbvtNode* leaf) +{ + if(!pdbvt->m_root) + { + pdbvt->m_root = leaf; + leaf->parent = 0; + } + else + { + if(!root->isleaf()) + { + do { + root=root->childs[Select( leaf->volume, + root->childs[0]->volume, + root->childs[1]->volume)]; + } while(!root->isleaf()); + } + btDbvtNode* prev=root->parent; + btDbvtNode* node=createnode(pdbvt,prev,leaf->volume,root->volume,0); + if(prev) + { + prev->childs[indexof(root)] = node; + node->childs[0] = root;root->parent=node; + node->childs[1] = leaf;leaf->parent=node; + do { + if(!prev->volume.Contain(node->volume)) + Merge(prev->childs[0]->volume,prev->childs[1]->volume,prev->volume); + else + break; + node=prev; + } while(0!=(prev=node->parent)); + } + else + { + node->childs[0] = root;root->parent=node; + node->childs[1] = leaf;leaf->parent=node; + pdbvt->m_root = node; + } + } +} + +// +static btDbvtNode* removeleaf( btDbvt* pdbvt, + btDbvtNode* leaf) +{ + if(leaf==pdbvt->m_root) + { + pdbvt->m_root=0; + return(0); + } + else + { + btDbvtNode* parent=leaf->parent; + btDbvtNode* prev=parent->parent; + btDbvtNode* sibling=parent->childs[1-indexof(leaf)]; + if(prev) + { + prev->childs[indexof(parent)]=sibling; + sibling->parent=prev; + deletenode(pdbvt,parent); + while(prev) + { + const btDbvtVolume pb=prev->volume; + Merge(prev->childs[0]->volume,prev->childs[1]->volume,prev->volume); + if(NotEqual(pb,prev->volume)) + { + prev=prev->parent; + } else break; + } + return(prev?prev:pdbvt->m_root); + } + else + { + pdbvt->m_root=sibling; + sibling->parent=0; + deletenode(pdbvt,parent); + return(pdbvt->m_root); + } + } +} + +// +static void fetchleaves(btDbvt* pdbvt, + btDbvtNode* root, + tNodeArray& leaves, + int depth=-1) +{ + if(root->isinternal()&&depth) + { + fetchleaves(pdbvt,root->childs[0],leaves,depth-1); + fetchleaves(pdbvt,root->childs[1],leaves,depth-1); + deletenode(pdbvt,root); + } + else + { + leaves.push_back(root); + } +} + +// +static void split( const tNodeArray& leaves, + tNodeArray& left, + tNodeArray& right, + const btVector3& org, + const btVector3& axis) +{ + left.resize(0); + right.resize(0); + for(int i=0,ni=leaves.size();ivolume.Center()-org)<0) + left.push_back(leaves[i]); + else + right.push_back(leaves[i]); + } +} + +// +static btDbvtVolume bounds( const tNodeArray& leaves) +{ +#if DBVT_MERGE_IMPL==DBVT_IMPL_SSE + ATTRIBUTE_ALIGNED16(char locals[sizeof(btDbvtVolume)]); + btDbvtVolume& volume=*(btDbvtVolume*)locals; + volume=leaves[0]->volume; +#else + btDbvtVolume volume=leaves[0]->volume; +#endif + for(int i=1,ni=leaves.size();ivolume,volume); + } + return(volume); +} + +// +static void bottomup( btDbvt* pdbvt, + tNodeArray& leaves) +{ + while(leaves.size()>1) + { + btScalar minsize=SIMD_INFINITY; + int minidx[2]={-1,-1}; + for(int i=0;ivolume,leaves[j]->volume)); + if(szvolume,n[1]->volume,0); + p->childs[0] = n[0]; + p->childs[1] = n[1]; + n[0]->parent = p; + n[1]->parent = p; + leaves[minidx[0]] = p; + leaves.swap(minidx[1],leaves.size()-1); + leaves.pop_back(); + } +} + +// +static btDbvtNode* topdown(btDbvt* pdbvt, + tNodeArray& leaves, + int bu_treshold) +{ + static const btVector3 axis[]={btVector3(1,0,0), + btVector3(0,1,0), + btVector3(0,0,1)}; + if(leaves.size()>1) + { + if(leaves.size()>bu_treshold) + { + const btDbvtVolume vol=bounds(leaves); + const btVector3 org=vol.Center(); + tNodeArray sets[2]; + int bestaxis=-1; + int bestmidp=leaves.size(); + int splitcount[3][2]={{0,0},{0,0},{0,0}}; + int i; + for( i=0;ivolume.Center()-org; + for(int j=0;j<3;++j) + { + ++splitcount[j][btDot(x,axis[j])>0?1:0]; + } + } + for( i=0;i<3;++i) + { + if((splitcount[i][0]>0)&&(splitcount[i][1]>0)) + { + const int midp=(int)btFabs(btScalar(splitcount[i][0]-splitcount[i][1])); + if(midp=0) + { + sets[0].reserve(splitcount[bestaxis][0]); + sets[1].reserve(splitcount[bestaxis][1]); + split(leaves,sets[0],sets[1],org,axis[bestaxis]); + } + else + { + sets[0].reserve(leaves.size()/2+1); + sets[1].reserve(leaves.size()/2); + for(int i=0,ni=leaves.size();ichilds[0]=topdown(pdbvt,sets[0],bu_treshold); + node->childs[1]=topdown(pdbvt,sets[1],bu_treshold); + node->childs[0]->parent=node; + node->childs[1]->parent=node; + return(node); + } + else + { + bottomup(pdbvt,leaves); + return(leaves[0]); + } + } + return(leaves[0]); +} + +// +static DBVT_INLINE btDbvtNode* sort(btDbvtNode* n,btDbvtNode*& r) +{ + btDbvtNode* p=n->parent; + btAssert(n->isinternal()); + if(p>n) + { + const int i=indexof(n); + const int j=1-i; + btDbvtNode* s=p->childs[j]; + btDbvtNode* q=p->parent; + btAssert(n==p->childs[i]); + if(q) q->childs[indexof(p)]=n; else r=n; + s->parent=n; + p->parent=n; + n->parent=q; + p->childs[0]=n->childs[0]; + p->childs[1]=n->childs[1]; + n->childs[0]->parent=p; + n->childs[1]->parent=p; + n->childs[i]=p; + n->childs[j]=s; + btSwap(p->volume,n->volume); + return(p); + } + return(n); +} + +#if 0 +static DBVT_INLINE btDbvtNode* walkup(btDbvtNode* n,int count) +{ + while(n&&(count--)) n=n->parent; + return(n); +} +#endif + +// +// Api +// + +// +btDbvt::btDbvt() +{ + m_root = 0; + m_free = 0; + m_lkhd = -1; + m_leaves = 0; + m_opath = 0; +} + +// +btDbvt::~btDbvt() +{ + clear(); +} + +// +void btDbvt::clear() +{ + if(m_root) + recursedeletenode(this,m_root); + btAlignedFree(m_free); + m_free=0; + m_lkhd = -1; + m_stkStack.clear(); + m_opath = 0; + +} + +// +void btDbvt::optimizeBottomUp() +{ + if(m_root) + { + tNodeArray leaves; + leaves.reserve(m_leaves); + fetchleaves(this,m_root,leaves); + bottomup(this,leaves); + m_root=leaves[0]; + } +} + +// +void btDbvt::optimizeTopDown(int bu_treshold) +{ + if(m_root) + { + tNodeArray leaves; + leaves.reserve(m_leaves); + fetchleaves(this,m_root,leaves); + m_root=topdown(this,leaves,bu_treshold); + } +} + +// +void btDbvt::optimizeIncremental(int passes) +{ + if(passes<0) passes=m_leaves; + if(m_root&&(passes>0)) + { + do { + btDbvtNode* node=m_root; + unsigned bit=0; + while(node->isinternal()) + { + node=sort(node,m_root)->childs[(m_opath>>bit)&1]; + bit=(bit+1)&(sizeof(unsigned)*8-1); + } + update(node); + ++m_opath; + } while(--passes); + } +} + +// +btDbvtNode* btDbvt::insert(const btDbvtVolume& volume,void* data) +{ + btDbvtNode* leaf=createnode(this,0,volume,data); + insertleaf(this,m_root,leaf); + ++m_leaves; + return(leaf); +} + +// +void btDbvt::update(btDbvtNode* leaf,int lookahead) +{ + btDbvtNode* root=removeleaf(this,leaf); + if(root) + { + if(lookahead>=0) + { + for(int i=0;(iparent;++i) + { + root=root->parent; + } + } else root=m_root; + } + insertleaf(this,root,leaf); +} + +// +void btDbvt::update(btDbvtNode* leaf,btDbvtVolume& volume) +{ + btDbvtNode* root=removeleaf(this,leaf); + if(root) + { + if(m_lkhd>=0) + { + for(int i=0;(iparent;++i) + { + root=root->parent; + } + } else root=m_root; + } + leaf->volume=volume; + insertleaf(this,root,leaf); +} + +// +bool btDbvt::update(btDbvtNode* leaf,btDbvtVolume& volume,const btVector3& velocity,btScalar margin) +{ + if(leaf->volume.Contain(volume)) return(false); + volume.Expand(btVector3(margin,margin,margin)); + volume.SignedExpand(velocity); + update(leaf,volume); + return(true); +} + +// +bool btDbvt::update(btDbvtNode* leaf,btDbvtVolume& volume,const btVector3& velocity) +{ + if(leaf->volume.Contain(volume)) return(false); + volume.SignedExpand(velocity); + update(leaf,volume); + return(true); +} + +// +bool btDbvt::update(btDbvtNode* leaf,btDbvtVolume& volume,btScalar margin) +{ + if(leaf->volume.Contain(volume)) return(false); + volume.Expand(btVector3(margin,margin,margin)); + update(leaf,volume); + return(true); +} + +// +void btDbvt::remove(btDbvtNode* leaf) +{ + removeleaf(this,leaf); + deletenode(this,leaf); + --m_leaves; +} + +// +void btDbvt::write(IWriter* iwriter) const +{ + btDbvtNodeEnumerator nodes; + nodes.nodes.reserve(m_leaves*2); + enumNodes(m_root,nodes); + iwriter->Prepare(m_root,nodes.nodes.size()); + for(int i=0;iparent) p=nodes.nodes.findLinearSearch(n->parent); + if(n->isinternal()) + { + const int c0=nodes.nodes.findLinearSearch(n->childs[0]); + const int c1=nodes.nodes.findLinearSearch(n->childs[1]); + iwriter->WriteNode(n,i,p,c0,c1); + } + else + { + iwriter->WriteLeaf(n,i,p); + } + } +} + +// +void btDbvt::clone(btDbvt& dest,IClone* iclone) const +{ + dest.clear(); + if(m_root!=0) + { + btAlignedObjectArray stack; + stack.reserve(m_leaves); + stack.push_back(sStkCLN(m_root,0)); + do { + const int i=stack.size()-1; + const sStkCLN e=stack[i]; + btDbvtNode* n=createnode(&dest,e.parent,e.node->volume,e.node->data); + stack.pop_back(); + if(e.parent!=0) + e.parent->childs[i&1]=n; + else + dest.m_root=n; + if(e.node->isinternal()) + { + stack.push_back(sStkCLN(e.node->childs[0],n)); + stack.push_back(sStkCLN(e.node->childs[1],n)); + } + else + { + iclone->CloneLeaf(n); + } + } while(stack.size()>0); + } +} + +// +int btDbvt::maxdepth(const btDbvtNode* node) +{ + int depth=0; + if(node) getmaxdepth(node,1,depth); + return(depth); +} + +// +int btDbvt::countLeaves(const btDbvtNode* node) +{ + if(node->isinternal()) + return(countLeaves(node->childs[0])+countLeaves(node->childs[1])); + else + return(1); +} + +// +void btDbvt::extractLeaves(const btDbvtNode* node,btAlignedObjectArray& leaves) +{ + if(node->isinternal()) + { + extractLeaves(node->childs[0],leaves); + extractLeaves(node->childs[1],leaves); + } + else + { + leaves.push_back(node); + } +} + +// +#if DBVT_ENABLE_BENCHMARK + +#include +#include +#include "LinearMath/btQuickProf.h" + +/* +q6600,2.4ghz + +/Ox /Ob2 /Oi /Ot /I "." /I "..\.." /I "..\..\src" /D "NDEBUG" /D "_LIB" /D "_WINDOWS" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "WIN32" +/GF /FD /MT /GS- /Gy /arch:SSE2 /Zc:wchar_t- /Fp"..\..\out\release8\build\libbulletcollision\libbulletcollision.pch" +/Fo"..\..\out\release8\build\libbulletcollision\\" +/Fd"..\..\out\release8\build\libbulletcollision\bulletcollision.pdb" +/W3 /nologo /c /Wp64 /Zi /errorReport:prompt + +Benchmarking dbvt... +World scale: 100.000000 +Extents base: 1.000000 +Extents range: 4.000000 +Leaves: 8192 +sizeof(btDbvtVolume): 32 bytes +sizeof(btDbvtNode): 44 bytes +[1] btDbvtVolume intersections: 3499 ms (-1%) +[2] btDbvtVolume merges: 1934 ms (0%) +[3] btDbvt::collideTT: 5485 ms (-21%) +[4] btDbvt::collideTT self: 2814 ms (-20%) +[5] btDbvt::collideTT xform: 7379 ms (-1%) +[6] btDbvt::collideTT xform,self: 7270 ms (-2%) +[7] btDbvt::rayTest: 6314 ms (0%),(332143 r/s) +[8] insert/remove: 2093 ms (0%),(1001983 ir/s) +[9] updates (teleport): 1879 ms (-3%),(1116100 u/s) +[10] updates (jitter): 1244 ms (-4%),(1685813 u/s) +[11] optimize (incremental): 2514 ms (0%),(1668000 o/s) +[12] btDbvtVolume notequal: 3659 ms (0%) +[13] culling(OCL+fullsort): 2218 ms (0%),(461 t/s) +[14] culling(OCL+qsort): 3688 ms (5%),(2221 t/s) +[15] culling(KDOP+qsort): 1139 ms (-1%),(7192 t/s) +[16] insert/remove batch(256): 5092 ms (0%),(823704 bir/s) +[17] btDbvtVolume select: 3419 ms (0%) +*/ + +struct btDbvtBenchmark +{ + struct NilPolicy : btDbvt::ICollide + { + NilPolicy() : m_pcount(0),m_depth(-SIMD_INFINITY),m_checksort(true) {} + void Process(const btDbvtNode*,const btDbvtNode*) { ++m_pcount; } + void Process(const btDbvtNode*) { ++m_pcount; } + void Process(const btDbvtNode*,btScalar depth) + { + ++m_pcount; + if(m_checksort) + { if(depth>=m_depth) m_depth=depth; else printf("wrong depth: %f (should be >= %f)\r\n",depth,m_depth); } + } + int m_pcount; + btScalar m_depth; + bool m_checksort; + }; + struct P14 : btDbvt::ICollide + { + struct Node + { + const btDbvtNode* leaf; + btScalar depth; + }; + void Process(const btDbvtNode* leaf,btScalar depth) + { + Node n; + n.leaf = leaf; + n.depth = depth; + } + static int sortfnc(const Node& a,const Node& b) + { + if(a.depthb.depth) return(-1); + return(0); + } + btAlignedObjectArray m_nodes; + }; + struct P15 : btDbvt::ICollide + { + struct Node + { + const btDbvtNode* leaf; + btScalar depth; + }; + void Process(const btDbvtNode* leaf) + { + Node n; + n.leaf = leaf; + n.depth = dot(leaf->volume.Center(),m_axis); + } + static int sortfnc(const Node& a,const Node& b) + { + if(a.depthb.depth) return(-1); + return(0); + } + btAlignedObjectArray m_nodes; + btVector3 m_axis; + }; + static btScalar RandUnit() + { + return(rand()/(btScalar)RAND_MAX); + } + static btVector3 RandVector3() + { + return(btVector3(RandUnit(),RandUnit(),RandUnit())); + } + static btVector3 RandVector3(btScalar cs) + { + return(RandVector3()*cs-btVector3(cs,cs,cs)/2); + } + static btDbvtVolume RandVolume(btScalar cs,btScalar eb,btScalar es) + { + return(btDbvtVolume::FromCE(RandVector3(cs),btVector3(eb,eb,eb)+RandVector3()*es)); + } + static btTransform RandTransform(btScalar cs) + { + btTransform t; + t.setOrigin(RandVector3(cs)); + t.setRotation(btQuaternion(RandUnit()*SIMD_PI*2,RandUnit()*SIMD_PI*2,RandUnit()*SIMD_PI*2).normalized()); + return(t); + } + static void RandTree(btScalar cs,btScalar eb,btScalar es,int leaves,btDbvt& dbvt) + { + dbvt.clear(); + for(int i=0;i volumes; + btAlignedObjectArray results; + volumes.resize(cfgLeaves); + results.resize(cfgLeaves); + for(int i=0;i volumes; + btAlignedObjectArray results; + volumes.resize(cfgLeaves); + results.resize(cfgLeaves); + for(int i=0;i transforms; + btDbvtBenchmark::NilPolicy policy; + transforms.resize(cfgBenchmark5_Iterations); + for(int i=0;i transforms; + btDbvtBenchmark::NilPolicy policy; + transforms.resize(cfgBenchmark6_Iterations); + for(int i=0;i rayorg; + btAlignedObjectArray raydir; + btDbvtBenchmark::NilPolicy policy; + rayorg.resize(cfgBenchmark7_Iterations); + raydir.resize(cfgBenchmark7_Iterations); + for(int i=0;i leaves; + btDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt); + dbvt.optimizeTopDown(); + dbvt.extractLeaves(dbvt.m_root,leaves); + printf("[9] updates (teleport): "); + wallclock.reset(); + for(int i=0;i(leaves[rand()%cfgLeaves]), + btDbvtBenchmark::RandVolume(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale)); + } + } + const int time=(int)wallclock.getTimeMilliseconds(); + const int up=cfgBenchmark9_Passes*cfgBenchmark9_Iterations; + printf("%u ms (%i%%),(%u u/s)\r\n",time,(time-cfgBenchmark9_Reference)*100/time,up*1000/time); + } + if(cfgBenchmark10_Enable) + {// Benchmark 10 + srand(380843); + btDbvt dbvt; + btAlignedObjectArray leaves; + btAlignedObjectArray vectors; + vectors.resize(cfgBenchmark10_Iterations); + for(int i=0;i(leaves[rand()%cfgLeaves]); + btDbvtVolume v=btDbvtVolume::FromMM(l->volume.Mins()+d,l->volume.Maxs()+d); + dbvt.update(l,v); + } + } + const int time=(int)wallclock.getTimeMilliseconds(); + const int up=cfgBenchmark10_Passes*cfgBenchmark10_Iterations; + printf("%u ms (%i%%),(%u u/s)\r\n",time,(time-cfgBenchmark10_Reference)*100/time,up*1000/time); + } + if(cfgBenchmark11_Enable) + {// Benchmark 11 + srand(380843); + btDbvt dbvt; + btDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt); + dbvt.optimizeTopDown(); + printf("[11] optimize (incremental): "); + wallclock.reset(); + for(int i=0;i volumes; + btAlignedObjectArray results; + volumes.resize(cfgLeaves); + results.resize(cfgLeaves); + for(int i=0;i vectors; + btDbvtBenchmark::NilPolicy policy; + vectors.resize(cfgBenchmark13_Iterations); + for(int i=0;i vectors; + btDbvtBenchmark::P14 policy; + vectors.resize(cfgBenchmark14_Iterations); + for(int i=0;i vectors; + btDbvtBenchmark::P15 policy; + vectors.resize(cfgBenchmark15_Iterations); + for(int i=0;i batch; + btDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt); + dbvt.optimizeTopDown(); + batch.reserve(cfgBenchmark16_BatchCount); + printf("[16] insert/remove batch(%u): ",cfgBenchmark16_BatchCount); + wallclock.reset(); + for(int i=0;i volumes; + btAlignedObjectArray results; + btAlignedObjectArray indices; + volumes.resize(cfgLeaves); + results.resize(cfgLeaves); + indices.resize(cfgLeaves); + for(int i=0;i= 1400) +#define DBVT_USE_TEMPLATE 1 +#else +#define DBVT_USE_TEMPLATE 0 +#endif +#else +#define DBVT_USE_TEMPLATE 0 +#endif + +// Use only intrinsics instead of inline asm +#define DBVT_USE_INTRINSIC_SSE 1 + +// Using memmov for collideOCL +#define DBVT_USE_MEMMOVE 1 + +// Enable benchmarking code +#define DBVT_ENABLE_BENCHMARK 0 + +// Inlining +#define DBVT_INLINE SIMD_FORCE_INLINE + +// Specific methods implementation + +//SSE gives errors on a MSVC 7.1 +#if defined (BT_USE_SSE) && defined (_WIN32) +#define DBVT_SELECT_IMPL DBVT_IMPL_SSE +#define DBVT_MERGE_IMPL DBVT_IMPL_SSE +#define DBVT_INT0_IMPL DBVT_IMPL_SSE +#else +#define DBVT_SELECT_IMPL DBVT_IMPL_GENERIC +#define DBVT_MERGE_IMPL DBVT_IMPL_GENERIC +#define DBVT_INT0_IMPL DBVT_IMPL_GENERIC +#endif + +#if (DBVT_SELECT_IMPL==DBVT_IMPL_SSE)|| \ + (DBVT_MERGE_IMPL==DBVT_IMPL_SSE)|| \ + (DBVT_INT0_IMPL==DBVT_IMPL_SSE) +#include +#endif + +// +// Auto config and checks +// + +#if DBVT_USE_TEMPLATE +#define DBVT_VIRTUAL +#define DBVT_VIRTUAL_DTOR(a) +#define DBVT_PREFIX template +#define DBVT_IPOLICY T& policy +#define DBVT_CHECKTYPE static const ICollide& typechecker=*(T*)1;(void)typechecker; +#else +#define DBVT_VIRTUAL_DTOR(a) virtual ~a() {} +#define DBVT_VIRTUAL virtual +#define DBVT_PREFIX +#define DBVT_IPOLICY ICollide& policy +#define DBVT_CHECKTYPE +#endif + +#if DBVT_USE_MEMMOVE +#if !defined( __CELLOS_LV2__) && !defined(__MWERKS__) +#include +#endif +#include +#endif + +#ifndef DBVT_USE_TEMPLATE +#error "DBVT_USE_TEMPLATE undefined" +#endif + +#ifndef DBVT_USE_MEMMOVE +#error "DBVT_USE_MEMMOVE undefined" +#endif + +#ifndef DBVT_ENABLE_BENCHMARK +#error "DBVT_ENABLE_BENCHMARK undefined" +#endif + +#ifndef DBVT_SELECT_IMPL +#error "DBVT_SELECT_IMPL undefined" +#endif + +#ifndef DBVT_MERGE_IMPL +#error "DBVT_MERGE_IMPL undefined" +#endif + +#ifndef DBVT_INT0_IMPL +#error "DBVT_INT0_IMPL undefined" +#endif + +// +// Defaults volumes +// + +/* btDbvtAabbMm */ +struct btDbvtAabbMm +{ + DBVT_INLINE btVector3 Center() const { return((mi+mx)/2); } + DBVT_INLINE btVector3 Lengths() const { return(mx-mi); } + DBVT_INLINE btVector3 Extents() const { return((mx-mi)/2); } + DBVT_INLINE const btVector3& Mins() const { return(mi); } + DBVT_INLINE const btVector3& Maxs() const { return(mx); } + static inline btDbvtAabbMm FromCE(const btVector3& c,const btVector3& e); + static inline btDbvtAabbMm FromCR(const btVector3& c,btScalar r); + static inline btDbvtAabbMm FromMM(const btVector3& mi,const btVector3& mx); + static inline btDbvtAabbMm FromPoints(const btVector3* pts,int n); + static inline btDbvtAabbMm FromPoints(const btVector3** ppts,int n); + DBVT_INLINE void Expand(const btVector3& e); + DBVT_INLINE void SignedExpand(const btVector3& e); + DBVT_INLINE bool Contain(const btDbvtAabbMm& a) const; + DBVT_INLINE int Classify(const btVector3& n,btScalar o,int s) const; + DBVT_INLINE btScalar ProjectMinimum(const btVector3& v,unsigned signs) const; + DBVT_INLINE friend bool Intersect( const btDbvtAabbMm& a, + const btDbvtAabbMm& b); + + DBVT_INLINE friend bool Intersect( const btDbvtAabbMm& a, + const btVector3& b); + + DBVT_INLINE friend btScalar Proximity( const btDbvtAabbMm& a, + const btDbvtAabbMm& b); + DBVT_INLINE friend int Select( const btDbvtAabbMm& o, + const btDbvtAabbMm& a, + const btDbvtAabbMm& b); + DBVT_INLINE friend void Merge( const btDbvtAabbMm& a, + const btDbvtAabbMm& b, + btDbvtAabbMm& r); + DBVT_INLINE friend bool NotEqual( const btDbvtAabbMm& a, + const btDbvtAabbMm& b); +private: + DBVT_INLINE void AddSpan(const btVector3& d,btScalar& smi,btScalar& smx) const; +private: + btVector3 mi,mx; +}; + +// Types +typedef btDbvtAabbMm btDbvtVolume; + +/* btDbvtNode */ +struct btDbvtNode +{ + btDbvtVolume volume; + btDbvtNode* parent; + DBVT_INLINE bool isleaf() const { return(childs[1]==0); } + DBVT_INLINE bool isinternal() const { return(!isleaf()); } + union + { + btDbvtNode* childs[2]; + void* data; + int dataAsInt; + }; +}; + +///The btDbvt class implements a fast dynamic bounding volume tree based on axis aligned bounding boxes (aabb tree). +///This btDbvt is used for soft body collision detection and for the btDbvtBroadphase. It has a fast insert, remove and update of nodes. +///Unlike the btQuantizedBvh, nodes can be dynamically moved around, which allows for change in topology of the underlying data structure. +struct btDbvt +{ + /* Stack element */ + struct sStkNN + { + const btDbvtNode* a; + const btDbvtNode* b; + sStkNN() {} + sStkNN(const btDbvtNode* na,const btDbvtNode* nb) : a(na),b(nb) {} + }; + struct sStkNP + { + const btDbvtNode* node; + int mask; + sStkNP(const btDbvtNode* n,unsigned m) : node(n),mask(m) {} + }; + struct sStkNPS + { + const btDbvtNode* node; + int mask; + btScalar value; + sStkNPS() {} + sStkNPS(const btDbvtNode* n,unsigned m,btScalar v) : node(n),mask(m),value(v) {} + }; + struct sStkCLN + { + const btDbvtNode* node; + btDbvtNode* parent; + sStkCLN(const btDbvtNode* n,btDbvtNode* p) : node(n),parent(p) {} + }; + // Policies/Interfaces + + /* ICollide */ + struct ICollide + { + DBVT_VIRTUAL_DTOR(ICollide) + DBVT_VIRTUAL void Process(const btDbvtNode*,const btDbvtNode*) {} + DBVT_VIRTUAL void Process(const btDbvtNode*) {} + DBVT_VIRTUAL void Process(const btDbvtNode* n,btScalar) { Process(n); } + DBVT_VIRTUAL bool Descent(const btDbvtNode*) { return(true); } + DBVT_VIRTUAL bool AllLeaves(const btDbvtNode*) { return(true); } + }; + /* IWriter */ + struct IWriter + { + virtual ~IWriter() {} + virtual void Prepare(const btDbvtNode* root,int numnodes)=0; + virtual void WriteNode(const btDbvtNode*,int index,int parent,int child0,int child1)=0; + virtual void WriteLeaf(const btDbvtNode*,int index,int parent)=0; + }; + /* IClone */ + struct IClone + { + virtual ~IClone() {} + virtual void CloneLeaf(btDbvtNode*) {} + }; + + // Constants + enum { + SIMPLE_STACKSIZE = 64, + DOUBLE_STACKSIZE = SIMPLE_STACKSIZE*2 + }; + + // Fields + btDbvtNode* m_root; + btDbvtNode* m_free; + int m_lkhd; + int m_leaves; + unsigned m_opath; + + + btAlignedObjectArray m_stkStack; + + + // Methods + btDbvt(); + ~btDbvt(); + void clear(); + bool empty() const { return(0==m_root); } + void optimizeBottomUp(); + void optimizeTopDown(int bu_treshold=128); + void optimizeIncremental(int passes); + btDbvtNode* insert(const btDbvtVolume& box,void* data); + void update(btDbvtNode* leaf,int lookahead=-1); + void update(btDbvtNode* leaf,btDbvtVolume& volume); + bool update(btDbvtNode* leaf,btDbvtVolume& volume,const btVector3& velocity,btScalar margin); + bool update(btDbvtNode* leaf,btDbvtVolume& volume,const btVector3& velocity); + bool update(btDbvtNode* leaf,btDbvtVolume& volume,btScalar margin); + void remove(btDbvtNode* leaf); + void write(IWriter* iwriter) const; + void clone(btDbvt& dest,IClone* iclone=0) const; + static int maxdepth(const btDbvtNode* node); + static int countLeaves(const btDbvtNode* node); + static void extractLeaves(const btDbvtNode* node,btAlignedObjectArray& leaves); +#if DBVT_ENABLE_BENCHMARK + static void benchmark(); +#else + static void benchmark(){} +#endif + // DBVT_IPOLICY must support ICollide policy/interface + DBVT_PREFIX + static void enumNodes( const btDbvtNode* root, + DBVT_IPOLICY); + DBVT_PREFIX + static void enumLeaves( const btDbvtNode* root, + DBVT_IPOLICY); + DBVT_PREFIX + void collideTT( const btDbvtNode* root0, + const btDbvtNode* root1, + DBVT_IPOLICY); + + DBVT_PREFIX + void collideTTpersistentStack( const btDbvtNode* root0, + const btDbvtNode* root1, + DBVT_IPOLICY); +#if 0 + DBVT_PREFIX + void collideTT( const btDbvtNode* root0, + const btDbvtNode* root1, + const btTransform& xform, + DBVT_IPOLICY); + DBVT_PREFIX + void collideTT( const btDbvtNode* root0, + const btTransform& xform0, + const btDbvtNode* root1, + const btTransform& xform1, + DBVT_IPOLICY); +#endif + + DBVT_PREFIX + void collideTV( const btDbvtNode* root, + const btDbvtVolume& volume, + DBVT_IPOLICY); + ///rayTest is a re-entrant ray test, and can be called in parallel as long as the btAlignedAlloc is thread-safe (uses locking etc) + ///rayTest is slower than rayTestInternal, because it builds a local stack, using memory allocations, and it recomputes signs/rayDirectionInverses each time + DBVT_PREFIX + static void rayTest( const btDbvtNode* root, + const btVector3& rayFrom, + const btVector3& rayTo, + DBVT_IPOLICY); + ///rayTestInternal is faster than rayTest, because it uses a persistent stack (to reduce dynamic memory allocations to a minimum) and it uses precomputed signs/rayInverseDirections + ///rayTestInternal is used by btDbvtBroadphase to accelerate world ray casts + DBVT_PREFIX + void rayTestInternal( const btDbvtNode* root, + const btVector3& rayFrom, + const btVector3& rayTo, + const btVector3& rayDirectionInverse, + unsigned int signs[3], + btScalar lambda_max, + const btVector3& aabbMin, + const btVector3& aabbMax, + DBVT_IPOLICY) const; + + DBVT_PREFIX + static void collideKDOP(const btDbvtNode* root, + const btVector3* normals, + const btScalar* offsets, + int count, + DBVT_IPOLICY); + DBVT_PREFIX + static void collideOCL( const btDbvtNode* root, + const btVector3* normals, + const btScalar* offsets, + const btVector3& sortaxis, + int count, + DBVT_IPOLICY, + bool fullsort=true); + DBVT_PREFIX + static void collideTU( const btDbvtNode* root, + DBVT_IPOLICY); + // Helpers + static DBVT_INLINE int nearest(const int* i,const btDbvt::sStkNPS* a,btScalar v,int l,int h) + { + int m=0; + while(l>1; + if(a[i[m]].value>=v) l=m+1; else h=m; + } + return(h); + } + static DBVT_INLINE int allocate( btAlignedObjectArray& ifree, + btAlignedObjectArray& stock, + const sStkNPS& value) + { + int i; + if(ifree.size()>0) + { i=ifree[ifree.size()-1];ifree.pop_back();stock[i]=value; } + else + { i=stock.size();stock.push_back(value); } + return(i); + } + // +private: + btDbvt(const btDbvt&) {} +}; + +// +// Inline's +// + +// +inline btDbvtAabbMm btDbvtAabbMm::FromCE(const btVector3& c,const btVector3& e) +{ + btDbvtAabbMm box; + box.mi=c-e;box.mx=c+e; + return(box); +} + +// +inline btDbvtAabbMm btDbvtAabbMm::FromCR(const btVector3& c,btScalar r) +{ + return(FromCE(c,btVector3(r,r,r))); +} + +// +inline btDbvtAabbMm btDbvtAabbMm::FromMM(const btVector3& mi,const btVector3& mx) +{ + btDbvtAabbMm box; + box.mi=mi;box.mx=mx; + return(box); +} + +// +inline btDbvtAabbMm btDbvtAabbMm::FromPoints(const btVector3* pts,int n) +{ + btDbvtAabbMm box; + box.mi=box.mx=pts[0]; + for(int i=1;i0) mx.setX(mx.x()+e[0]); else mi.setX(mi.x()+e[0]); + if(e.y()>0) mx.setY(mx.y()+e[1]); else mi.setY(mi.y()+e[1]); + if(e.z()>0) mx.setZ(mx.z()+e[2]); else mi.setZ(mi.z()+e[2]); +} + +// +DBVT_INLINE bool btDbvtAabbMm::Contain(const btDbvtAabbMm& a) const +{ + return( (mi.x()<=a.mi.x())&& + (mi.y()<=a.mi.y())&& + (mi.z()<=a.mi.z())&& + (mx.x()>=a.mx.x())&& + (mx.y()>=a.mx.y())&& + (mx.z()>=a.mx.z())); +} + +// +DBVT_INLINE int btDbvtAabbMm::Classify(const btVector3& n,btScalar o,int s) const +{ + btVector3 pi,px; + switch(s) + { + case (0+0+0): px=btVector3(mi.x(),mi.y(),mi.z()); + pi=btVector3(mx.x(),mx.y(),mx.z());break; + case (1+0+0): px=btVector3(mx.x(),mi.y(),mi.z()); + pi=btVector3(mi.x(),mx.y(),mx.z());break; + case (0+2+0): px=btVector3(mi.x(),mx.y(),mi.z()); + pi=btVector3(mx.x(),mi.y(),mx.z());break; + case (1+2+0): px=btVector3(mx.x(),mx.y(),mi.z()); + pi=btVector3(mi.x(),mi.y(),mx.z());break; + case (0+0+4): px=btVector3(mi.x(),mi.y(),mx.z()); + pi=btVector3(mx.x(),mx.y(),mi.z());break; + case (1+0+4): px=btVector3(mx.x(),mi.y(),mx.z()); + pi=btVector3(mi.x(),mx.y(),mi.z());break; + case (0+2+4): px=btVector3(mi.x(),mx.y(),mx.z()); + pi=btVector3(mx.x(),mi.y(),mi.z());break; + case (1+2+4): px=btVector3(mx.x(),mx.y(),mx.z()); + pi=btVector3(mi.x(),mi.y(),mi.z());break; + } + if((btDot(n,px)+o)<0) return(-1); + if((btDot(n,pi)+o)>=0) return(+1); + return(0); +} + +// +DBVT_INLINE btScalar btDbvtAabbMm::ProjectMinimum(const btVector3& v,unsigned signs) const +{ + const btVector3* b[]={&mx,&mi}; + const btVector3 p( b[(signs>>0)&1]->x(), + b[(signs>>1)&1]->y(), + b[(signs>>2)&1]->z()); + return(btDot(p,v)); +} + +// +DBVT_INLINE void btDbvtAabbMm::AddSpan(const btVector3& d,btScalar& smi,btScalar& smx) const +{ + for(int i=0;i<3;++i) + { + if(d[i]<0) + { smi+=mx[i]*d[i];smx+=mi[i]*d[i]; } + else + { smi+=mi[i]*d[i];smx+=mx[i]*d[i]; } + } +} + +// +DBVT_INLINE bool Intersect( const btDbvtAabbMm& a, + const btDbvtAabbMm& b) +{ +#if DBVT_INT0_IMPL == DBVT_IMPL_SSE + const __m128 rt(_mm_or_ps( _mm_cmplt_ps(_mm_load_ps(b.mx),_mm_load_ps(a.mi)), + _mm_cmplt_ps(_mm_load_ps(a.mx),_mm_load_ps(b.mi)))); + const __int32* pu((const __int32*)&rt); + return((pu[0]|pu[1]|pu[2])==0); +#else + return( (a.mi.x()<=b.mx.x())&& + (a.mx.x()>=b.mi.x())&& + (a.mi.y()<=b.mx.y())&& + (a.mx.y()>=b.mi.y())&& + (a.mi.z()<=b.mx.z())&& + (a.mx.z()>=b.mi.z())); +#endif +} + + + +// +DBVT_INLINE bool Intersect( const btDbvtAabbMm& a, + const btVector3& b) +{ + return( (b.x()>=a.mi.x())&& + (b.y()>=a.mi.y())&& + (b.z()>=a.mi.z())&& + (b.x()<=a.mx.x())&& + (b.y()<=a.mx.y())&& + (b.z()<=a.mx.z())); +} + + + + + +////////////////////////////////////// + + +// +DBVT_INLINE btScalar Proximity( const btDbvtAabbMm& a, + const btDbvtAabbMm& b) +{ + const btVector3 d=(a.mi+a.mx)-(b.mi+b.mx); + return(btFabs(d.x())+btFabs(d.y())+btFabs(d.z())); +} + + + +// +DBVT_INLINE int Select( const btDbvtAabbMm& o, + const btDbvtAabbMm& a, + const btDbvtAabbMm& b) +{ +#if DBVT_SELECT_IMPL == DBVT_IMPL_SSE + static ATTRIBUTE_ALIGNED16(const unsigned __int32) mask[]={0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff}; + ///@todo: the intrinsic version is 11% slower +#if DBVT_USE_INTRINSIC_SSE + + union btSSEUnion ///NOTE: if we use more intrinsics, move btSSEUnion into the LinearMath directory + { + __m128 ssereg; + float floats[4]; + int ints[4]; + }; + + __m128 omi(_mm_load_ps(o.mi)); + omi=_mm_add_ps(omi,_mm_load_ps(o.mx)); + __m128 ami(_mm_load_ps(a.mi)); + ami=_mm_add_ps(ami,_mm_load_ps(a.mx)); + ami=_mm_sub_ps(ami,omi); + ami=_mm_and_ps(ami,_mm_load_ps((const float*)mask)); + __m128 bmi(_mm_load_ps(b.mi)); + bmi=_mm_add_ps(bmi,_mm_load_ps(b.mx)); + bmi=_mm_sub_ps(bmi,omi); + bmi=_mm_and_ps(bmi,_mm_load_ps((const float*)mask)); + __m128 t0(_mm_movehl_ps(ami,ami)); + ami=_mm_add_ps(ami,t0); + ami=_mm_add_ss(ami,_mm_shuffle_ps(ami,ami,1)); + __m128 t1(_mm_movehl_ps(bmi,bmi)); + bmi=_mm_add_ps(bmi,t1); + bmi=_mm_add_ss(bmi,_mm_shuffle_ps(bmi,bmi,1)); + + btSSEUnion tmp; + tmp.ssereg = _mm_cmple_ss(bmi,ami); + return tmp.ints[0]&1; + +#else + ATTRIBUTE_ALIGNED16(__int32 r[1]); + __asm + { + mov eax,o + mov ecx,a + mov edx,b + movaps xmm0,[eax] + movaps xmm5,mask + addps xmm0,[eax+16] + movaps xmm1,[ecx] + movaps xmm2,[edx] + addps xmm1,[ecx+16] + addps xmm2,[edx+16] + subps xmm1,xmm0 + subps xmm2,xmm0 + andps xmm1,xmm5 + andps xmm2,xmm5 + movhlps xmm3,xmm1 + movhlps xmm4,xmm2 + addps xmm1,xmm3 + addps xmm2,xmm4 + pshufd xmm3,xmm1,1 + pshufd xmm4,xmm2,1 + addss xmm1,xmm3 + addss xmm2,xmm4 + cmpless xmm2,xmm1 + movss r,xmm2 + } + return(r[0]&1); +#endif +#else + return(Proximity(o,a)b.mx[i]) r.mx[i]=a.mx[i]; else r.mx[i]=b.mx[i]; + } +#endif +} + +// +DBVT_INLINE bool NotEqual( const btDbvtAabbMm& a, + const btDbvtAabbMm& b) +{ + return( (a.mi.x()!=b.mi.x())|| + (a.mi.y()!=b.mi.y())|| + (a.mi.z()!=b.mi.z())|| + (a.mx.x()!=b.mx.x())|| + (a.mx.y()!=b.mx.y())|| + (a.mx.z()!=b.mx.z())); +} + +// +// Inline's +// + +// +DBVT_PREFIX +inline void btDbvt::enumNodes( const btDbvtNode* root, + DBVT_IPOLICY) +{ + DBVT_CHECKTYPE + policy.Process(root); + if(root->isinternal()) + { + enumNodes(root->childs[0],policy); + enumNodes(root->childs[1],policy); + } +} + +// +DBVT_PREFIX +inline void btDbvt::enumLeaves( const btDbvtNode* root, + DBVT_IPOLICY) +{ + DBVT_CHECKTYPE + if(root->isinternal()) + { + enumLeaves(root->childs[0],policy); + enumLeaves(root->childs[1],policy); + } + else + { + policy.Process(root); + } +} + +// +DBVT_PREFIX +inline void btDbvt::collideTT( const btDbvtNode* root0, + const btDbvtNode* root1, + DBVT_IPOLICY) +{ + DBVT_CHECKTYPE + if(root0&&root1) + { + int depth=1; + int treshold=DOUBLE_STACKSIZE-4; + btAlignedObjectArray stkStack; + stkStack.resize(DOUBLE_STACKSIZE); + stkStack[0]=sStkNN(root0,root1); + do { + sStkNN p=stkStack[--depth]; + if(depth>treshold) + { + stkStack.resize(stkStack.size()*2); + treshold=stkStack.size()-4; + } + if(p.a==p.b) + { + if(p.a->isinternal()) + { + stkStack[depth++]=sStkNN(p.a->childs[0],p.a->childs[0]); + stkStack[depth++]=sStkNN(p.a->childs[1],p.a->childs[1]); + stkStack[depth++]=sStkNN(p.a->childs[0],p.a->childs[1]); + } + } + else if(Intersect(p.a->volume,p.b->volume)) + { + if(p.a->isinternal()) + { + if(p.b->isinternal()) + { + stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[0]); + stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[0]); + stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[1]); + stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[1]); + } + else + { + stkStack[depth++]=sStkNN(p.a->childs[0],p.b); + stkStack[depth++]=sStkNN(p.a->childs[1],p.b); + } + } + else + { + if(p.b->isinternal()) + { + stkStack[depth++]=sStkNN(p.a,p.b->childs[0]); + stkStack[depth++]=sStkNN(p.a,p.b->childs[1]); + } + else + { + policy.Process(p.a,p.b); + } + } + } + } while(depth); + } +} + + + +DBVT_PREFIX +inline void btDbvt::collideTTpersistentStack( const btDbvtNode* root0, + const btDbvtNode* root1, + DBVT_IPOLICY) +{ + DBVT_CHECKTYPE + if(root0&&root1) + { + int depth=1; + int treshold=DOUBLE_STACKSIZE-4; + + m_stkStack.resize(DOUBLE_STACKSIZE); + m_stkStack[0]=sStkNN(root0,root1); + do { + sStkNN p=m_stkStack[--depth]; + if(depth>treshold) + { + m_stkStack.resize(m_stkStack.size()*2); + treshold=m_stkStack.size()-4; + } + if(p.a==p.b) + { + if(p.a->isinternal()) + { + m_stkStack[depth++]=sStkNN(p.a->childs[0],p.a->childs[0]); + m_stkStack[depth++]=sStkNN(p.a->childs[1],p.a->childs[1]); + m_stkStack[depth++]=sStkNN(p.a->childs[0],p.a->childs[1]); + } + } + else if(Intersect(p.a->volume,p.b->volume)) + { + if(p.a->isinternal()) + { + if(p.b->isinternal()) + { + m_stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[0]); + m_stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[0]); + m_stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[1]); + m_stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[1]); + } + else + { + m_stkStack[depth++]=sStkNN(p.a->childs[0],p.b); + m_stkStack[depth++]=sStkNN(p.a->childs[1],p.b); + } + } + else + { + if(p.b->isinternal()) + { + m_stkStack[depth++]=sStkNN(p.a,p.b->childs[0]); + m_stkStack[depth++]=sStkNN(p.a,p.b->childs[1]); + } + else + { + policy.Process(p.a,p.b); + } + } + } + } while(depth); + } +} + +#if 0 +// +DBVT_PREFIX +inline void btDbvt::collideTT( const btDbvtNode* root0, + const btDbvtNode* root1, + const btTransform& xform, + DBVT_IPOLICY) +{ + DBVT_CHECKTYPE + if(root0&&root1) + { + int depth=1; + int treshold=DOUBLE_STACKSIZE-4; + btAlignedObjectArray stkStack; + stkStack.resize(DOUBLE_STACKSIZE); + stkStack[0]=sStkNN(root0,root1); + do { + sStkNN p=stkStack[--depth]; + if(Intersect(p.a->volume,p.b->volume,xform)) + { + if(depth>treshold) + { + stkStack.resize(stkStack.size()*2); + treshold=stkStack.size()-4; + } + if(p.a->isinternal()) + { + if(p.b->isinternal()) + { + stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[0]); + stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[0]); + stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[1]); + stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[1]); + } + else + { + stkStack[depth++]=sStkNN(p.a->childs[0],p.b); + stkStack[depth++]=sStkNN(p.a->childs[1],p.b); + } + } + else + { + if(p.b->isinternal()) + { + stkStack[depth++]=sStkNN(p.a,p.b->childs[0]); + stkStack[depth++]=sStkNN(p.a,p.b->childs[1]); + } + else + { + policy.Process(p.a,p.b); + } + } + } + } while(depth); + } +} +// +DBVT_PREFIX +inline void btDbvt::collideTT( const btDbvtNode* root0, + const btTransform& xform0, + const btDbvtNode* root1, + const btTransform& xform1, + DBVT_IPOLICY) +{ + const btTransform xform=xform0.inverse()*xform1; + collideTT(root0,root1,xform,policy); +} +#endif + +// +DBVT_PREFIX +inline void btDbvt::collideTV( const btDbvtNode* root, + const btDbvtVolume& vol, + DBVT_IPOLICY) +{ + DBVT_CHECKTYPE + if(root) + { + ATTRIBUTE_ALIGNED16(btDbvtVolume) volume(vol); + btAlignedObjectArray stack; + stack.resize(0); + stack.reserve(SIMPLE_STACKSIZE); + stack.push_back(root); + do { + const btDbvtNode* n=stack[stack.size()-1]; + stack.pop_back(); + if(Intersect(n->volume,volume)) + { + if(n->isinternal()) + { + stack.push_back(n->childs[0]); + stack.push_back(n->childs[1]); + } + else + { + policy.Process(n); + } + } + } while(stack.size()>0); + } +} + +DBVT_PREFIX +inline void btDbvt::rayTestInternal( const btDbvtNode* root, + const btVector3& rayFrom, + const btVector3& rayTo, + const btVector3& rayDirectionInverse, + unsigned int signs[3], + btScalar lambda_max, + const btVector3& aabbMin, + const btVector3& aabbMax, + DBVT_IPOLICY) const +{ + (void) rayTo; + DBVT_CHECKTYPE + if(root) + { + btVector3 resultNormal; + + int depth=1; + int treshold=DOUBLE_STACKSIZE-2; + btAlignedObjectArray stack; + stack.resize(DOUBLE_STACKSIZE); + stack[0]=root; + btVector3 bounds[2]; + do + { + const btDbvtNode* node=stack[--depth]; + bounds[0] = node->volume.Mins()-aabbMax; + bounds[1] = node->volume.Maxs()-aabbMin; + btScalar tmin=1.f,lambda_min=0.f; + unsigned int result1=false; + result1 = btRayAabb2(rayFrom,rayDirectionInverse,signs,bounds,tmin,lambda_min,lambda_max); + if(result1) + { + if(node->isinternal()) + { + if(depth>treshold) + { + stack.resize(stack.size()*2); + treshold=stack.size()-2; + } + stack[depth++]=node->childs[0]; + stack[depth++]=node->childs[1]; + } + else + { + policy.Process(node); + } + } + } while(depth); + } +} + +// +DBVT_PREFIX +inline void btDbvt::rayTest( const btDbvtNode* root, + const btVector3& rayFrom, + const btVector3& rayTo, + DBVT_IPOLICY) +{ + DBVT_CHECKTYPE + if(root) + { + btVector3 rayDir = (rayTo-rayFrom); + rayDir.normalize (); + + ///what about division by zero? --> just set rayDirection[i] to INF/BT_LARGE_FLOAT + btVector3 rayDirectionInverse; + rayDirectionInverse[0] = rayDir[0] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[0]; + rayDirectionInverse[1] = rayDir[1] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[1]; + rayDirectionInverse[2] = rayDir[2] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[2]; + unsigned int signs[3] = { rayDirectionInverse[0] < 0.0, rayDirectionInverse[1] < 0.0, rayDirectionInverse[2] < 0.0}; + + btScalar lambda_max = rayDir.dot(rayTo-rayFrom); + + btVector3 resultNormal; + + btAlignedObjectArray stack; + + int depth=1; + int treshold=DOUBLE_STACKSIZE-2; + + stack.resize(DOUBLE_STACKSIZE); + stack[0]=root; + btVector3 bounds[2]; + do { + const btDbvtNode* node=stack[--depth]; + + bounds[0] = node->volume.Mins(); + bounds[1] = node->volume.Maxs(); + + btScalar tmin=1.f,lambda_min=0.f; + unsigned int result1 = btRayAabb2(rayFrom,rayDirectionInverse,signs,bounds,tmin,lambda_min,lambda_max); + +#ifdef COMPARE_BTRAY_AABB2 + btScalar param=1.f; + bool result2 = btRayAabb(rayFrom,rayTo,node->volume.Mins(),node->volume.Maxs(),param,resultNormal); + btAssert(result1 == result2); +#endif //TEST_BTRAY_AABB2 + + if(result1) + { + if(node->isinternal()) + { + if(depth>treshold) + { + stack.resize(stack.size()*2); + treshold=stack.size()-2; + } + stack[depth++]=node->childs[0]; + stack[depth++]=node->childs[1]; + } + else + { + policy.Process(node); + } + } + } while(depth); + + } +} + +// +DBVT_PREFIX +inline void btDbvt::collideKDOP(const btDbvtNode* root, + const btVector3* normals, + const btScalar* offsets, + int count, + DBVT_IPOLICY) +{ + DBVT_CHECKTYPE + if(root) + { + const int inside=(1< stack; + int signs[sizeof(unsigned)*8]; + btAssert(count=0)?1:0)+ + ((normals[i].y()>=0)?2:0)+ + ((normals[i].z()>=0)?4:0); + } + stack.reserve(SIMPLE_STACKSIZE); + stack.push_back(sStkNP(root,0)); + do { + sStkNP se=stack[stack.size()-1]; + bool out=false; + stack.pop_back(); + for(int i=0,j=1;(!out)&&(ivolume.Classify(normals[i],offsets[i],signs[i]); + switch(side) + { + case -1: out=true;break; + case +1: se.mask|=j;break; + } + } + } + if(!out) + { + if((se.mask!=inside)&&(se.node->isinternal())) + { + stack.push_back(sStkNP(se.node->childs[0],se.mask)); + stack.push_back(sStkNP(se.node->childs[1],se.mask)); + } + else + { + if(policy.AllLeaves(se.node)) enumLeaves(se.node,policy); + } + } + } while(stack.size()); + } +} + +// +DBVT_PREFIX +inline void btDbvt::collideOCL( const btDbvtNode* root, + const btVector3* normals, + const btScalar* offsets, + const btVector3& sortaxis, + int count, + DBVT_IPOLICY, + bool fsort) +{ + DBVT_CHECKTYPE + if(root) + { + const unsigned srtsgns=(sortaxis[0]>=0?1:0)+ + (sortaxis[1]>=0?2:0)+ + (sortaxis[2]>=0?4:0); + const int inside=(1< stock; + btAlignedObjectArray ifree; + btAlignedObjectArray stack; + int signs[sizeof(unsigned)*8]; + btAssert(count=0)?1:0)+ + ((normals[i].y()>=0)?2:0)+ + ((normals[i].z()>=0)?4:0); + } + stock.reserve(SIMPLE_STACKSIZE); + stack.reserve(SIMPLE_STACKSIZE); + ifree.reserve(SIMPLE_STACKSIZE); + stack.push_back(allocate(ifree,stock,sStkNPS(root,0,root->volume.ProjectMinimum(sortaxis,srtsgns)))); + do { + const int id=stack[stack.size()-1]; + sStkNPS se=stock[id]; + stack.pop_back();ifree.push_back(id); + if(se.mask!=inside) + { + bool out=false; + for(int i=0,j=1;(!out)&&(ivolume.Classify(normals[i],offsets[i],signs[i]); + switch(side) + { + case -1: out=true;break; + case +1: se.mask|=j;break; + } + } + } + if(out) continue; + } + if(policy.Descent(se.node)) + { + if(se.node->isinternal()) + { + const btDbvtNode* pns[]={ se.node->childs[0],se.node->childs[1]}; + sStkNPS nes[]={ sStkNPS(pns[0],se.mask,pns[0]->volume.ProjectMinimum(sortaxis,srtsgns)), + sStkNPS(pns[1],se.mask,pns[1]->volume.ProjectMinimum(sortaxis,srtsgns))}; + const int q=nes[0].value0)) + { + /* Insert 0 */ + j=nearest(&stack[0],&stock[0],nes[q].value,0,stack.size()); + stack.push_back(0); +#if DBVT_USE_MEMMOVE + memmove(&stack[j+1],&stack[j],sizeof(int)*(stack.size()-j-1)); +#else + for(int k=stack.size()-1;k>j;--k) stack[k]=stack[k-1]; +#endif + stack[j]=allocate(ifree,stock,nes[q]); + /* Insert 1 */ + j=nearest(&stack[0],&stock[0],nes[1-q].value,j,stack.size()); + stack.push_back(0); +#if DBVT_USE_MEMMOVE + memmove(&stack[j+1],&stack[j],sizeof(int)*(stack.size()-j-1)); +#else + for(int k=stack.size()-1;k>j;--k) stack[k]=stack[k-1]; +#endif + stack[j]=allocate(ifree,stock,nes[1-q]); + } + else + { + stack.push_back(allocate(ifree,stock,nes[q])); + stack.push_back(allocate(ifree,stock,nes[1-q])); + } + } + else + { + policy.Process(se.node,se.value); + } + } + } while(stack.size()); + } +} + +// +DBVT_PREFIX +inline void btDbvt::collideTU( const btDbvtNode* root, + DBVT_IPOLICY) +{ + DBVT_CHECKTYPE + if(root) + { + btAlignedObjectArray stack; + stack.reserve(SIMPLE_STACKSIZE); + stack.push_back(root); + do { + const btDbvtNode* n=stack[stack.size()-1]; + stack.pop_back(); + if(policy.Descent(n)) + { + if(n->isinternal()) + { stack.push_back(n->childs[0]);stack.push_back(n->childs[1]); } + else + { policy.Process(n); } + } + } while(stack.size()>0); + } +} + +// +// PP Cleanup +// + +#undef DBVT_USE_MEMMOVE +#undef DBVT_USE_TEMPLATE +#undef DBVT_VIRTUAL_DTOR +#undef DBVT_VIRTUAL +#undef DBVT_PREFIX +#undef DBVT_IPOLICY +#undef DBVT_CHECKTYPE +#undef DBVT_IMPL_GENERIC +#undef DBVT_IMPL_SSE +#undef DBVT_USE_INTRINSIC_SSE +#undef DBVT_SELECT_IMPL +#undef DBVT_MERGE_IMPL +#undef DBVT_INT0_IMPL + +#endif diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp new file mode 100644 index 00000000000..75cfac64368 --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp @@ -0,0 +1,796 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +///btDbvtBroadphase implementation by Nathanael Presson + +#include "btDbvtBroadphase.h" + +// +// Profiling +// + +#if DBVT_BP_PROFILE||DBVT_BP_ENABLE_BENCHMARK +#include +#endif + +#if DBVT_BP_PROFILE +struct ProfileScope +{ + __forceinline ProfileScope(btClock& clock,unsigned long& value) : + m_clock(&clock),m_value(&value),m_base(clock.getTimeMicroseconds()) + { + } + __forceinline ~ProfileScope() + { + (*m_value)+=m_clock->getTimeMicroseconds()-m_base; + } + btClock* m_clock; + unsigned long* m_value; + unsigned long m_base; +}; +#define SPC(_value_) ProfileScope spc_scope(m_clock,_value_) +#else +#define SPC(_value_) +#endif + +// +// Helpers +// + +// +template +static inline void listappend(T* item,T*& list) +{ + item->links[0]=0; + item->links[1]=list; + if(list) list->links[0]=item; + list=item; +} + +// +template +static inline void listremove(T* item,T*& list) +{ + if(item->links[0]) item->links[0]->links[1]=item->links[1]; else list=item->links[1]; + if(item->links[1]) item->links[1]->links[0]=item->links[0]; +} + +// +template +static inline int listcount(T* root) +{ + int n=0; + while(root) { ++n;root=root->links[1]; } + return(n); +} + +// +template +static inline void clear(T& value) +{ + static const struct ZeroDummy : T {} zerodummy; + value=zerodummy; +} + +// +// Colliders +// + +/* Tree collider */ +struct btDbvtTreeCollider : btDbvt::ICollide +{ + btDbvtBroadphase* pbp; + btDbvtProxy* proxy; + btDbvtTreeCollider(btDbvtBroadphase* p) : pbp(p) {} + void Process(const btDbvtNode* na,const btDbvtNode* nb) + { + if(na!=nb) + { + btDbvtProxy* pa=(btDbvtProxy*)na->data; + btDbvtProxy* pb=(btDbvtProxy*)nb->data; +#if DBVT_BP_SORTPAIRS + if(pa->m_uniqueId>pb->m_uniqueId) + btSwap(pa,pb); +#endif + pbp->m_paircache->addOverlappingPair(pa,pb); + ++pbp->m_newpairs; + } + } + void Process(const btDbvtNode* n) + { + Process(n,proxy->leaf); + } +}; + +// +// btDbvtBroadphase +// + +// +btDbvtBroadphase::btDbvtBroadphase(btOverlappingPairCache* paircache) +{ + m_deferedcollide = false; + m_needcleanup = true; + m_releasepaircache = (paircache!=0)?false:true; + m_prediction = 0; + m_stageCurrent = 0; + m_fixedleft = 0; + m_fupdates = 1; + m_dupdates = 0; + m_cupdates = 10; + m_newpairs = 1; + m_updates_call = 0; + m_updates_done = 0; + m_updates_ratio = 0; + m_paircache = paircache? paircache : new(btAlignedAlloc(sizeof(btHashedOverlappingPairCache),16)) btHashedOverlappingPairCache(); + m_gid = 0; + m_pid = 0; + m_cid = 0; + for(int i=0;i<=STAGECOUNT;++i) + { + m_stageRoots[i]=0; + } +#if DBVT_BP_PROFILE + clear(m_profiling); +#endif +} + +// +btDbvtBroadphase::~btDbvtBroadphase() +{ + if(m_releasepaircache) + { + m_paircache->~btOverlappingPairCache(); + btAlignedFree(m_paircache); + } +} + +// +btBroadphaseProxy* btDbvtBroadphase::createProxy( const btVector3& aabbMin, + const btVector3& aabbMax, + int /*shapeType*/, + void* userPtr, + short int collisionFilterGroup, + short int collisionFilterMask, + btDispatcher* /*dispatcher*/, + void* /*multiSapProxy*/) +{ + btDbvtProxy* proxy=new(btAlignedAlloc(sizeof(btDbvtProxy),16)) btDbvtProxy( aabbMin,aabbMax,userPtr, + collisionFilterGroup, + collisionFilterMask); + + btDbvtAabbMm aabb = btDbvtVolume::FromMM(aabbMin,aabbMax); + + //bproxy->aabb = btDbvtVolume::FromMM(aabbMin,aabbMax); + proxy->stage = m_stageCurrent; + proxy->m_uniqueId = ++m_gid; + proxy->leaf = m_sets[0].insert(aabb,proxy); + listappend(proxy,m_stageRoots[m_stageCurrent]); + if(!m_deferedcollide) + { + btDbvtTreeCollider collider(this); + collider.proxy=proxy; + m_sets[0].collideTV(m_sets[0].m_root,aabb,collider); + m_sets[1].collideTV(m_sets[1].m_root,aabb,collider); + } + return(proxy); +} + +// +void btDbvtBroadphase::destroyProxy( btBroadphaseProxy* absproxy, + btDispatcher* dispatcher) +{ + btDbvtProxy* proxy=(btDbvtProxy*)absproxy; + if(proxy->stage==STAGECOUNT) + m_sets[1].remove(proxy->leaf); + else + m_sets[0].remove(proxy->leaf); + listremove(proxy,m_stageRoots[proxy->stage]); + m_paircache->removeOverlappingPairsContainingProxy(proxy,dispatcher); + btAlignedFree(proxy); + m_needcleanup=true; +} + +void btDbvtBroadphase::getAabb(btBroadphaseProxy* absproxy,btVector3& aabbMin, btVector3& aabbMax ) const +{ + btDbvtProxy* proxy=(btDbvtProxy*)absproxy; + aabbMin = proxy->m_aabbMin; + aabbMax = proxy->m_aabbMax; +} + +struct BroadphaseRayTester : btDbvt::ICollide +{ + btBroadphaseRayCallback& m_rayCallback; + BroadphaseRayTester(btBroadphaseRayCallback& orgCallback) + :m_rayCallback(orgCallback) + { + } + void Process(const btDbvtNode* leaf) + { + btDbvtProxy* proxy=(btDbvtProxy*)leaf->data; + m_rayCallback.process(proxy); + } +}; + +void btDbvtBroadphase::rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback,const btVector3& aabbMin,const btVector3& aabbMax) +{ + BroadphaseRayTester callback(rayCallback); + + m_sets[0].rayTestInternal( m_sets[0].m_root, + rayFrom, + rayTo, + rayCallback.m_rayDirectionInverse, + rayCallback.m_signs, + rayCallback.m_lambda_max, + aabbMin, + aabbMax, + callback); + + m_sets[1].rayTestInternal( m_sets[1].m_root, + rayFrom, + rayTo, + rayCallback.m_rayDirectionInverse, + rayCallback.m_signs, + rayCallback.m_lambda_max, + aabbMin, + aabbMax, + callback); + +} + + +struct BroadphaseAabbTester : btDbvt::ICollide +{ + btBroadphaseAabbCallback& m_aabbCallback; + BroadphaseAabbTester(btBroadphaseAabbCallback& orgCallback) + :m_aabbCallback(orgCallback) + { + } + void Process(const btDbvtNode* leaf) + { + btDbvtProxy* proxy=(btDbvtProxy*)leaf->data; + m_aabbCallback.process(proxy); + } +}; + +void btDbvtBroadphase::aabbTest(const btVector3& aabbMin,const btVector3& aabbMax,btBroadphaseAabbCallback& aabbCallback) +{ + BroadphaseAabbTester callback(aabbCallback); + + const ATTRIBUTE_ALIGNED16(btDbvtVolume) bounds=btDbvtVolume::FromMM(aabbMin,aabbMax); + //process all children, that overlap with the given AABB bounds + m_sets[0].collideTV(m_sets[0].m_root,bounds,callback); + m_sets[1].collideTV(m_sets[1].m_root,bounds,callback); + +} + + + +// +void btDbvtBroadphase::setAabb( btBroadphaseProxy* absproxy, + const btVector3& aabbMin, + const btVector3& aabbMax, + btDispatcher* /*dispatcher*/) +{ + btDbvtProxy* proxy=(btDbvtProxy*)absproxy; + ATTRIBUTE_ALIGNED16(btDbvtVolume) aabb=btDbvtVolume::FromMM(aabbMin,aabbMax); +#if DBVT_BP_PREVENTFALSEUPDATE + if(NotEqual(aabb,proxy->leaf->volume)) +#endif + { + bool docollide=false; + if(proxy->stage==STAGECOUNT) + {/* fixed -> dynamic set */ + m_sets[1].remove(proxy->leaf); + proxy->leaf=m_sets[0].insert(aabb,proxy); + docollide=true; + } + else + {/* dynamic set */ + ++m_updates_call; + if(Intersect(proxy->leaf->volume,aabb)) + {/* Moving */ + + const btVector3 delta=aabbMin-proxy->m_aabbMin; + btVector3 velocity(((proxy->m_aabbMax-proxy->m_aabbMin)/2)*m_prediction); + if(delta[0]<0) velocity[0]=-velocity[0]; + if(delta[1]<0) velocity[1]=-velocity[1]; + if(delta[2]<0) velocity[2]=-velocity[2]; + if ( +#ifdef DBVT_BP_MARGIN + m_sets[0].update(proxy->leaf,aabb,velocity,DBVT_BP_MARGIN) +#else + m_sets[0].update(proxy->leaf,aabb,velocity) +#endif + ) + { + ++m_updates_done; + docollide=true; + } + } + else + {/* Teleporting */ + m_sets[0].update(proxy->leaf,aabb); + ++m_updates_done; + docollide=true; + } + } + listremove(proxy,m_stageRoots[proxy->stage]); + proxy->m_aabbMin = aabbMin; + proxy->m_aabbMax = aabbMax; + proxy->stage = m_stageCurrent; + listappend(proxy,m_stageRoots[m_stageCurrent]); + if(docollide) + { + m_needcleanup=true; + if(!m_deferedcollide) + { + btDbvtTreeCollider collider(this); + m_sets[1].collideTTpersistentStack(m_sets[1].m_root,proxy->leaf,collider); + m_sets[0].collideTTpersistentStack(m_sets[0].m_root,proxy->leaf,collider); + } + } + } +} + + +// +void btDbvtBroadphase::setAabbForceUpdate( btBroadphaseProxy* absproxy, + const btVector3& aabbMin, + const btVector3& aabbMax, + btDispatcher* /*dispatcher*/) +{ + btDbvtProxy* proxy=(btDbvtProxy*)absproxy; + ATTRIBUTE_ALIGNED16(btDbvtVolume) aabb=btDbvtVolume::FromMM(aabbMin,aabbMax); + bool docollide=false; + if(proxy->stage==STAGECOUNT) + {/* fixed -> dynamic set */ + m_sets[1].remove(proxy->leaf); + proxy->leaf=m_sets[0].insert(aabb,proxy); + docollide=true; + } + else + {/* dynamic set */ + ++m_updates_call; + /* Teleporting */ + m_sets[0].update(proxy->leaf,aabb); + ++m_updates_done; + docollide=true; + } + listremove(proxy,m_stageRoots[proxy->stage]); + proxy->m_aabbMin = aabbMin; + proxy->m_aabbMax = aabbMax; + proxy->stage = m_stageCurrent; + listappend(proxy,m_stageRoots[m_stageCurrent]); + if(docollide) + { + m_needcleanup=true; + if(!m_deferedcollide) + { + btDbvtTreeCollider collider(this); + m_sets[1].collideTTpersistentStack(m_sets[1].m_root,proxy->leaf,collider); + m_sets[0].collideTTpersistentStack(m_sets[0].m_root,proxy->leaf,collider); + } + } +} + +// +void btDbvtBroadphase::calculateOverlappingPairs(btDispatcher* dispatcher) +{ + collide(dispatcher); +#if DBVT_BP_PROFILE + if(0==(m_pid%DBVT_BP_PROFILING_RATE)) + { + printf("fixed(%u) dynamics(%u) pairs(%u)\r\n",m_sets[1].m_leaves,m_sets[0].m_leaves,m_paircache->getNumOverlappingPairs()); + unsigned int total=m_profiling.m_total; + if(total<=0) total=1; + printf("ddcollide: %u%% (%uus)\r\n",(50+m_profiling.m_ddcollide*100)/total,m_profiling.m_ddcollide/DBVT_BP_PROFILING_RATE); + printf("fdcollide: %u%% (%uus)\r\n",(50+m_profiling.m_fdcollide*100)/total,m_profiling.m_fdcollide/DBVT_BP_PROFILING_RATE); + printf("cleanup: %u%% (%uus)\r\n",(50+m_profiling.m_cleanup*100)/total,m_profiling.m_cleanup/DBVT_BP_PROFILING_RATE); + printf("total: %uus\r\n",total/DBVT_BP_PROFILING_RATE); + const unsigned long sum=m_profiling.m_ddcollide+ + m_profiling.m_fdcollide+ + m_profiling.m_cleanup; + printf("leaked: %u%% (%uus)\r\n",100-((50+sum*100)/total),(total-sum)/DBVT_BP_PROFILING_RATE); + printf("job counts: %u%%\r\n",(m_profiling.m_jobcount*100)/((m_sets[0].m_leaves+m_sets[1].m_leaves)*DBVT_BP_PROFILING_RATE)); + clear(m_profiling); + m_clock.reset(); + } +#endif + + performDeferredRemoval(dispatcher); + +} + +void btDbvtBroadphase::performDeferredRemoval(btDispatcher* dispatcher) +{ + + if (m_paircache->hasDeferredRemoval()) + { + + btBroadphasePairArray& overlappingPairArray = m_paircache->getOverlappingPairArray(); + + //perform a sort, to find duplicates and to sort 'invalid' pairs to the end + overlappingPairArray.quickSort(btBroadphasePairSortPredicate()); + + int invalidPair = 0; + + + int i; + + btBroadphasePair previousPair; + previousPair.m_pProxy0 = 0; + previousPair.m_pProxy1 = 0; + previousPair.m_algorithm = 0; + + + for (i=0;ileaf->volume,pb->leaf->volume); + + if (hasOverlap) + { + needsRemoval = false; + } else + { + needsRemoval = true; + } + } else + { + //remove duplicate + needsRemoval = true; + //should have no algorithm + btAssert(!pair.m_algorithm); + } + + if (needsRemoval) + { + m_paircache->cleanOverlappingPair(pair,dispatcher); + + pair.m_pProxy0 = 0; + pair.m_pProxy1 = 0; + invalidPair++; + } + + } + + //perform a sort, to sort 'invalid' pairs to the end + overlappingPairArray.quickSort(btBroadphasePairSortPredicate()); + overlappingPairArray.resize(overlappingPairArray.size() - invalidPair); + } +} + +// +void btDbvtBroadphase::collide(btDispatcher* dispatcher) +{ + /*printf("---------------------------------------------------------\n"); + printf("m_sets[0].m_leaves=%d\n",m_sets[0].m_leaves); + printf("m_sets[1].m_leaves=%d\n",m_sets[1].m_leaves); + printf("numPairs = %d\n",getOverlappingPairCache()->getNumOverlappingPairs()); + { + int i; + for (i=0;igetNumOverlappingPairs();i++) + { + printf("pair[%d]=(%d,%d),",i,getOverlappingPairCache()->getOverlappingPairArray()[i].m_pProxy0->getUid(), + getOverlappingPairCache()->getOverlappingPairArray()[i].m_pProxy1->getUid()); + } + printf("\n"); + } +*/ + + + + SPC(m_profiling.m_total); + /* optimize */ + m_sets[0].optimizeIncremental(1+(m_sets[0].m_leaves*m_dupdates)/100); + if(m_fixedleft) + { + const int count=1+(m_sets[1].m_leaves*m_fupdates)/100; + m_sets[1].optimizeIncremental(1+(m_sets[1].m_leaves*m_fupdates)/100); + m_fixedleft=btMax(0,m_fixedleft-count); + } + /* dynamic -> fixed set */ + m_stageCurrent=(m_stageCurrent+1)%STAGECOUNT; + btDbvtProxy* current=m_stageRoots[m_stageCurrent]; + if(current) + { + btDbvtTreeCollider collider(this); + do { + btDbvtProxy* next=current->links[1]; + listremove(current,m_stageRoots[current->stage]); + listappend(current,m_stageRoots[STAGECOUNT]); +#if DBVT_BP_ACCURATESLEEPING + m_paircache->removeOverlappingPairsContainingProxy(current,dispatcher); + collider.proxy=current; + btDbvt::collideTV(m_sets[0].m_root,current->aabb,collider); + btDbvt::collideTV(m_sets[1].m_root,current->aabb,collider); +#endif + m_sets[0].remove(current->leaf); + ATTRIBUTE_ALIGNED16(btDbvtVolume) curAabb=btDbvtVolume::FromMM(current->m_aabbMin,current->m_aabbMax); + current->leaf = m_sets[1].insert(curAabb,current); + current->stage = STAGECOUNT; + current = next; + } while(current); + m_fixedleft=m_sets[1].m_leaves; + m_needcleanup=true; + } + /* collide dynamics */ + { + btDbvtTreeCollider collider(this); + if(m_deferedcollide) + { + SPC(m_profiling.m_fdcollide); + m_sets[0].collideTTpersistentStack(m_sets[0].m_root,m_sets[1].m_root,collider); + } + if(m_deferedcollide) + { + SPC(m_profiling.m_ddcollide); + m_sets[0].collideTTpersistentStack(m_sets[0].m_root,m_sets[0].m_root,collider); + } + } + /* clean up */ + if(m_needcleanup) + { + SPC(m_profiling.m_cleanup); + btBroadphasePairArray& pairs=m_paircache->getOverlappingPairArray(); + if(pairs.size()>0) + { + + int ni=btMin(pairs.size(),btMax(m_newpairs,(pairs.size()*m_cupdates)/100)); + for(int i=0;ileaf->volume,pb->leaf->volume)) + { +#if DBVT_BP_SORTPAIRS + if(pa->m_uniqueId>pb->m_uniqueId) + btSwap(pa,pb); +#endif + m_paircache->removeOverlappingPair(pa,pb,dispatcher); + --ni;--i; + } + } + if(pairs.size()>0) m_cid=(m_cid+ni)%pairs.size(); else m_cid=0; + } + } + ++m_pid; + m_newpairs=1; + m_needcleanup=false; + if(m_updates_call>0) + { m_updates_ratio=m_updates_done/(btScalar)m_updates_call; } + else + { m_updates_ratio=0; } + m_updates_done/=2; + m_updates_call/=2; +} + +// +void btDbvtBroadphase::optimize() +{ + m_sets[0].optimizeTopDown(); + m_sets[1].optimizeTopDown(); +} + +// +btOverlappingPairCache* btDbvtBroadphase::getOverlappingPairCache() +{ + return(m_paircache); +} + +// +const btOverlappingPairCache* btDbvtBroadphase::getOverlappingPairCache() const +{ + return(m_paircache); +} + +// +void btDbvtBroadphase::getBroadphaseAabb(btVector3& aabbMin,btVector3& aabbMax) const +{ + + ATTRIBUTE_ALIGNED16(btDbvtVolume) bounds; + + if(!m_sets[0].empty()) + if(!m_sets[1].empty()) Merge( m_sets[0].m_root->volume, + m_sets[1].m_root->volume,bounds); + else + bounds=m_sets[0].m_root->volume; + else if(!m_sets[1].empty()) bounds=m_sets[1].m_root->volume; + else + bounds=btDbvtVolume::FromCR(btVector3(0,0,0),0); + aabbMin=bounds.Mins(); + aabbMax=bounds.Maxs(); +} + +void btDbvtBroadphase::resetPool(btDispatcher* dispatcher) +{ + + int totalObjects = m_sets[0].m_leaves + m_sets[1].m_leaves; + if (!totalObjects) + { + //reset internal dynamic tree data structures + m_sets[0].clear(); + m_sets[1].clear(); + + m_deferedcollide = false; + m_needcleanup = true; + m_stageCurrent = 0; + m_fixedleft = 0; + m_fupdates = 1; + m_dupdates = 0; + m_cupdates = 10; + m_newpairs = 1; + m_updates_call = 0; + m_updates_done = 0; + m_updates_ratio = 0; + + m_gid = 0; + m_pid = 0; + m_cid = 0; + for(int i=0;i<=STAGECOUNT;++i) + { + m_stageRoots[i]=0; + } + } +} + +// +void btDbvtBroadphase::printStats() +{} + +// +#if DBVT_BP_ENABLE_BENCHMARK + +struct btBroadphaseBenchmark +{ + struct Experiment + { + const char* name; + int object_count; + int update_count; + int spawn_count; + int iterations; + btScalar speed; + btScalar amplitude; + }; + struct Object + { + btVector3 center; + btVector3 extents; + btBroadphaseProxy* proxy; + btScalar time; + void update(btScalar speed,btScalar amplitude,btBroadphaseInterface* pbi) + { + time += speed; + center[0] = btCos(time*(btScalar)2.17)*amplitude+ + btSin(time)*amplitude/2; + center[1] = btCos(time*(btScalar)1.38)*amplitude+ + btSin(time)*amplitude; + center[2] = btSin(time*(btScalar)0.777)*amplitude; + pbi->setAabb(proxy,center-extents,center+extents,0); + } + }; + static int UnsignedRand(int range=RAND_MAX-1) { return(rand()%(range+1)); } + static btScalar UnitRand() { return(UnsignedRand(16384)/(btScalar)16384); } + static void OutputTime(const char* name,btClock& c,unsigned count=0) + { + const unsigned long us=c.getTimeMicroseconds(); + const unsigned long ms=(us+500)/1000; + const btScalar sec=us/(btScalar)(1000*1000); + if(count>0) + printf("%s : %u us (%u ms), %.2f/s\r\n",name,us,ms,count/sec); + else + printf("%s : %u us (%u ms)\r\n",name,us,ms); + } +}; + +void btDbvtBroadphase::benchmark(btBroadphaseInterface* pbi) +{ + static const btBroadphaseBenchmark::Experiment experiments[]= + { + {"1024o.10%",1024,10,0,8192,(btScalar)0.005,(btScalar)100}, + /*{"4096o.10%",4096,10,0,8192,(btScalar)0.005,(btScalar)100}, + {"8192o.10%",8192,10,0,8192,(btScalar)0.005,(btScalar)100},*/ + }; + static const int nexperiments=sizeof(experiments)/sizeof(experiments[0]); + btAlignedObjectArray objects; + btClock wallclock; + /* Begin */ + for(int iexp=0;iexpcenter[0]=btBroadphaseBenchmark::UnitRand()*50; + po->center[1]=btBroadphaseBenchmark::UnitRand()*50; + po->center[2]=btBroadphaseBenchmark::UnitRand()*50; + po->extents[0]=btBroadphaseBenchmark::UnitRand()*2+2; + po->extents[1]=btBroadphaseBenchmark::UnitRand()*2+2; + po->extents[2]=btBroadphaseBenchmark::UnitRand()*2+2; + po->time=btBroadphaseBenchmark::UnitRand()*2000; + po->proxy=pbi->createProxy(po->center-po->extents,po->center+po->extents,0,po,1,1,0,0); + objects.push_back(po); + } + btBroadphaseBenchmark::OutputTime("\tInitialization",wallclock); + /* First update */ + wallclock.reset(); + for(int i=0;iupdate(speed,amplitude,pbi); + } + btBroadphaseBenchmark::OutputTime("\tFirst update",wallclock); + /* Updates */ + wallclock.reset(); + for(int i=0;iupdate(speed,amplitude,pbi); + } + pbi->calculateOverlappingPairs(0); + } + btBroadphaseBenchmark::OutputTime("\tUpdate",wallclock,experiment.iterations); + /* Clean up */ + wallclock.reset(); + for(int i=0;idestroyProxy(objects[i]->proxy,0); + delete objects[i]; + } + objects.resize(0); + btBroadphaseBenchmark::OutputTime("\tRelease",wallclock); + } + +} +#else +void btDbvtBroadphase::benchmark(btBroadphaseInterface*) +{} +#endif + +#if DBVT_BP_PROFILE +#undef SPC +#endif + diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h new file mode 100644 index 00000000000..18b64ad0e57 --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h @@ -0,0 +1,146 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +///btDbvtBroadphase implementation by Nathanael Presson +#ifndef BT_DBVT_BROADPHASE_H +#define BT_DBVT_BROADPHASE_H + +#include "BulletCollision/BroadphaseCollision/btDbvt.h" +#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h" + +// +// Compile time config +// + +#define DBVT_BP_PROFILE 0 +//#define DBVT_BP_SORTPAIRS 1 +#define DBVT_BP_PREVENTFALSEUPDATE 0 +#define DBVT_BP_ACCURATESLEEPING 0 +#define DBVT_BP_ENABLE_BENCHMARK 0 +#define DBVT_BP_MARGIN (btScalar)0.05 + +#if DBVT_BP_PROFILE +#define DBVT_BP_PROFILING_RATE 256 +#include "LinearMath/btQuickprof.h" +#endif + +// +// btDbvtProxy +// +struct btDbvtProxy : btBroadphaseProxy +{ + /* Fields */ + //btDbvtAabbMm aabb; + btDbvtNode* leaf; + btDbvtProxy* links[2]; + int stage; + /* ctor */ + btDbvtProxy(const btVector3& aabbMin,const btVector3& aabbMax,void* userPtr,short int collisionFilterGroup, short int collisionFilterMask) : + btBroadphaseProxy(aabbMin,aabbMax,userPtr,collisionFilterGroup,collisionFilterMask) + { + links[0]=links[1]=0; + } +}; + +typedef btAlignedObjectArray btDbvtProxyArray; + +///The btDbvtBroadphase implements a broadphase using two dynamic AABB bounding volume hierarchies/trees (see btDbvt). +///One tree is used for static/non-moving objects, and another tree is used for dynamic objects. Objects can move from one tree to the other. +///This is a very fast broadphase, especially for very dynamic worlds where many objects are moving. Its insert/add and remove of objects is generally faster than the sweep and prune broadphases btAxisSweep3 and bt32BitAxisSweep3. +struct btDbvtBroadphase : btBroadphaseInterface +{ + /* Config */ + enum { + DYNAMIC_SET = 0, /* Dynamic set index */ + FIXED_SET = 1, /* Fixed set index */ + STAGECOUNT = 2 /* Number of stages */ + }; + /* Fields */ + btDbvt m_sets[2]; // Dbvt sets + btDbvtProxy* m_stageRoots[STAGECOUNT+1]; // Stages list + btOverlappingPairCache* m_paircache; // Pair cache + btScalar m_prediction; // Velocity prediction + int m_stageCurrent; // Current stage + int m_fupdates; // % of fixed updates per frame + int m_dupdates; // % of dynamic updates per frame + int m_cupdates; // % of cleanup updates per frame + int m_newpairs; // Number of pairs created + int m_fixedleft; // Fixed optimization left + unsigned m_updates_call; // Number of updates call + unsigned m_updates_done; // Number of updates done + btScalar m_updates_ratio; // m_updates_done/m_updates_call + int m_pid; // Parse id + int m_cid; // Cleanup index + int m_gid; // Gen id + bool m_releasepaircache; // Release pair cache on delete + bool m_deferedcollide; // Defere dynamic/static collision to collide call + bool m_needcleanup; // Need to run cleanup? +#if DBVT_BP_PROFILE + btClock m_clock; + struct { + unsigned long m_total; + unsigned long m_ddcollide; + unsigned long m_fdcollide; + unsigned long m_cleanup; + unsigned long m_jobcount; + } m_profiling; +#endif + /* Methods */ + btDbvtBroadphase(btOverlappingPairCache* paircache=0); + ~btDbvtBroadphase(); + void collide(btDispatcher* dispatcher); + void optimize(); + + /* btBroadphaseInterface Implementation */ + btBroadphaseProxy* createProxy(const btVector3& aabbMin,const btVector3& aabbMax,int shapeType,void* userPtr,short int collisionFilterGroup,short int collisionFilterMask,btDispatcher* dispatcher,void* multiSapProxy); + virtual void destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher); + virtual void setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* dispatcher); + virtual void rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin=btVector3(0,0,0), const btVector3& aabbMax = btVector3(0,0,0)); + virtual void aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback); + + virtual void getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const; + virtual void calculateOverlappingPairs(btDispatcher* dispatcher); + virtual btOverlappingPairCache* getOverlappingPairCache(); + virtual const btOverlappingPairCache* getOverlappingPairCache() const; + virtual void getBroadphaseAabb(btVector3& aabbMin,btVector3& aabbMax) const; + virtual void printStats(); + + + ///reset broadphase internal structures, to ensure determinism/reproducability + virtual void resetPool(btDispatcher* dispatcher); + + void performDeferredRemoval(btDispatcher* dispatcher); + + void setVelocityPrediction(btScalar prediction) + { + m_prediction = prediction; + } + btScalar getVelocityPrediction() const + { + return m_prediction; + } + + ///this setAabbForceUpdate is similar to setAabb but always forces the aabb update. + ///it is not part of the btBroadphaseInterface but specific to btDbvtBroadphase. + ///it bypasses certain optimizations that prevent aabb updates (when the aabb shrinks), see + ///http://code.google.com/p/bullet/issues/detail?id=223 + void setAabbForceUpdate( btBroadphaseProxy* absproxy,const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* /*dispatcher*/); + + static void benchmark(btBroadphaseInterface*); + + +}; + +#endif diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btDispatcher.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btDispatcher.cpp new file mode 100644 index 00000000000..20768225b3a --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btDispatcher.cpp @@ -0,0 +1,22 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btDispatcher.h" + +btDispatcher::~btDispatcher() +{ + +} + diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btDispatcher.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btDispatcher.h new file mode 100644 index 00000000000..699c66b82bd --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btDispatcher.h @@ -0,0 +1,106 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _DISPATCHER_H +#define _DISPATCHER_H + +#include "LinearMath/btScalar.h" + +class btCollisionAlgorithm; +struct btBroadphaseProxy; +class btRigidBody; +class btCollisionObject; +class btOverlappingPairCache; + + +class btPersistentManifold; +class btStackAlloc; + +struct btDispatcherInfo +{ + enum DispatchFunc + { + DISPATCH_DISCRETE = 1, + DISPATCH_CONTINUOUS + }; + btDispatcherInfo() + :m_timeStep(btScalar(0.)), + m_stepCount(0), + m_dispatchFunc(DISPATCH_DISCRETE), + m_timeOfImpact(btScalar(1.)), + m_useContinuous(false), + m_debugDraw(0), + m_enableSatConvex(false), + m_enableSPU(true), + m_useEpa(true), + m_allowedCcdPenetration(btScalar(0.04)), + m_useConvexConservativeDistanceUtil(false), + m_convexConservativeDistanceThreshold(0.0f), + m_stackAllocator(0) + { + + } + btScalar m_timeStep; + int m_stepCount; + int m_dispatchFunc; + mutable btScalar m_timeOfImpact; + bool m_useContinuous; + class btIDebugDraw* m_debugDraw; + bool m_enableSatConvex; + bool m_enableSPU; + bool m_useEpa; + btScalar m_allowedCcdPenetration; + bool m_useConvexConservativeDistanceUtil; + btScalar m_convexConservativeDistanceThreshold; + btStackAlloc* m_stackAllocator; +}; + +///The btDispatcher interface class can be used in combination with broadphase to dispatch calculations for overlapping pairs. +///For example for pairwise collision detection, calculating contact points stored in btPersistentManifold or user callbacks (game logic). +class btDispatcher +{ + + +public: + virtual ~btDispatcher() ; + + virtual btCollisionAlgorithm* findAlgorithm(btCollisionObject* body0,btCollisionObject* body1,btPersistentManifold* sharedManifold=0) = 0; + + virtual btPersistentManifold* getNewManifold(void* body0,void* body1)=0; + + virtual void releaseManifold(btPersistentManifold* manifold)=0; + + virtual void clearManifold(btPersistentManifold* manifold)=0; + + virtual bool needsCollision(btCollisionObject* body0,btCollisionObject* body1) = 0; + + virtual bool needsResponse(btCollisionObject* body0,btCollisionObject* body1)=0; + + virtual void dispatchAllCollisionPairs(btOverlappingPairCache* pairCache,const btDispatcherInfo& dispatchInfo,btDispatcher* dispatcher) =0; + + virtual int getNumManifolds() const = 0; + + virtual btPersistentManifold* getManifoldByIndexInternal(int index) = 0; + + virtual btPersistentManifold** getInternalManifoldPointer() = 0; + + virtual void* allocateCollisionAlgorithm(int size) = 0; + + virtual void freeCollisionAlgorithm(void* ptr) = 0; + +}; + + +#endif //_DISPATCHER_H diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp new file mode 100644 index 00000000000..6712f528e97 --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp @@ -0,0 +1,489 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btMultiSapBroadphase.h" + +#include "btSimpleBroadphase.h" +#include "LinearMath/btAabbUtil2.h" +#include "btQuantizedBvh.h" + +/// btSapBroadphaseArray m_sapBroadphases; + +/// btOverlappingPairCache* m_overlappingPairs; +extern int gOverlappingPairs; + +/* +class btMultiSapSortedOverlappingPairCache : public btSortedOverlappingPairCache +{ +public: + + virtual btBroadphasePair* addOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) + { + return btSortedOverlappingPairCache::addOverlappingPair((btBroadphaseProxy*)proxy0->m_multiSapParentProxy,(btBroadphaseProxy*)proxy1->m_multiSapParentProxy); + } +}; + +*/ + +btMultiSapBroadphase::btMultiSapBroadphase(int /*maxProxies*/,btOverlappingPairCache* pairCache) +:m_overlappingPairs(pairCache), +m_optimizedAabbTree(0), +m_ownsPairCache(false), +m_invalidPair(0) +{ + if (!m_overlappingPairs) + { + m_ownsPairCache = true; + void* mem = btAlignedAlloc(sizeof(btSortedOverlappingPairCache),16); + m_overlappingPairs = new (mem)btSortedOverlappingPairCache(); + } + + struct btMultiSapOverlapFilterCallback : public btOverlapFilterCallback + { + virtual ~btMultiSapOverlapFilterCallback() + {} + // return true when pairs need collision + virtual bool needBroadphaseCollision(btBroadphaseProxy* childProxy0,btBroadphaseProxy* childProxy1) const + { + btBroadphaseProxy* multiProxy0 = (btBroadphaseProxy*)childProxy0->m_multiSapParentProxy; + btBroadphaseProxy* multiProxy1 = (btBroadphaseProxy*)childProxy1->m_multiSapParentProxy; + + bool collides = (multiProxy0->m_collisionFilterGroup & multiProxy1->m_collisionFilterMask) != 0; + collides = collides && (multiProxy1->m_collisionFilterGroup & multiProxy0->m_collisionFilterMask); + + return collides; + } + }; + + void* mem = btAlignedAlloc(sizeof(btMultiSapOverlapFilterCallback),16); + m_filterCallback = new (mem)btMultiSapOverlapFilterCallback(); + + m_overlappingPairs->setOverlapFilterCallback(m_filterCallback); +// mem = btAlignedAlloc(sizeof(btSimpleBroadphase),16); +// m_simpleBroadphase = new (mem) btSimpleBroadphase(maxProxies,m_overlappingPairs); +} + +btMultiSapBroadphase::~btMultiSapBroadphase() +{ + if (m_ownsPairCache) + { + m_overlappingPairs->~btOverlappingPairCache(); + btAlignedFree(m_overlappingPairs); + } +} + + +void btMultiSapBroadphase::buildTree(const btVector3& bvhAabbMin,const btVector3& bvhAabbMax) +{ + m_optimizedAabbTree = new btQuantizedBvh(); + m_optimizedAabbTree->setQuantizationValues(bvhAabbMin,bvhAabbMax); + QuantizedNodeArray& nodes = m_optimizedAabbTree->getLeafNodeArray(); + for (int i=0;igetBroadphaseAabb(aabbMin,aabbMax); + m_optimizedAabbTree->quantize(&node.m_quantizedAabbMin[0],aabbMin,0); + m_optimizedAabbTree->quantize(&node.m_quantizedAabbMax[0],aabbMax,1); + int partId = 0; + node.m_escapeIndexOrTriangleIndex = (partId<<(31-MAX_NUM_PARTS_IN_BITS)) | i; + nodes.push_back(node); + } + m_optimizedAabbTree->buildInternal(); +} + +btBroadphaseProxy* btMultiSapBroadphase::createProxy( const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr, short int collisionFilterGroup,short int collisionFilterMask, btDispatcher* dispatcher,void* /*ignoreMe*/) +{ + //void* ignoreMe -> we could think of recursive multi-sap, if someone is interested + + void* mem = btAlignedAlloc(sizeof(btMultiSapProxy),16); + btMultiSapProxy* proxy = new (mem)btMultiSapProxy(aabbMin, aabbMax,shapeType,userPtr, collisionFilterGroup,collisionFilterMask); + m_multiSapProxies.push_back(proxy); + + ///this should deal with inserting/removal into child broadphases + setAabb(proxy,aabbMin,aabbMax,dispatcher); + return proxy; +} + +void btMultiSapBroadphase::destroyProxy(btBroadphaseProxy* /*proxy*/,btDispatcher* /*dispatcher*/) +{ + ///not yet + btAssert(0); + +} + + +void btMultiSapBroadphase::addToChildBroadphase(btMultiSapProxy* parentMultiSapProxy, btBroadphaseProxy* childProxy, btBroadphaseInterface* childBroadphase) +{ + void* mem = btAlignedAlloc(sizeof(btBridgeProxy),16); + btBridgeProxy* bridgeProxyRef = new(mem) btBridgeProxy; + bridgeProxyRef->m_childProxy = childProxy; + bridgeProxyRef->m_childBroadphase = childBroadphase; + parentMultiSapProxy->m_bridgeProxies.push_back(bridgeProxyRef); +} + + +bool boxIsContainedWithinBox(const btVector3& amin,const btVector3& amax,const btVector3& bmin,const btVector3& bmax); +bool boxIsContainedWithinBox(const btVector3& amin,const btVector3& amax,const btVector3& bmin,const btVector3& bmax) +{ +return +amin.getX() >= bmin.getX() && amax.getX() <= bmax.getX() && +amin.getY() >= bmin.getY() && amax.getY() <= bmax.getY() && +amin.getZ() >= bmin.getZ() && amax.getZ() <= bmax.getZ(); +} + + + + + + +void btMultiSapBroadphase::getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const +{ + btMultiSapProxy* multiProxy = static_cast(proxy); + aabbMin = multiProxy->m_aabbMin; + aabbMax = multiProxy->m_aabbMax; +} + +void btMultiSapBroadphase::rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin,const btVector3& aabbMax) +{ + for (int i=0;i + +void btMultiSapBroadphase::setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax, btDispatcher* dispatcher) +{ + btMultiSapProxy* multiProxy = static_cast(proxy); + multiProxy->m_aabbMin = aabbMin; + multiProxy->m_aabbMax = aabbMax; + + +// bool fullyContained = false; +// bool alreadyInSimple = false; + + + + + struct MyNodeOverlapCallback : public btNodeOverlapCallback + { + btMultiSapBroadphase* m_multiSap; + btMultiSapProxy* m_multiProxy; + btDispatcher* m_dispatcher; + + MyNodeOverlapCallback(btMultiSapBroadphase* multiSap,btMultiSapProxy* multiProxy,btDispatcher* dispatcher) + :m_multiSap(multiSap), + m_multiProxy(multiProxy), + m_dispatcher(dispatcher) + { + + } + + virtual void processNode(int /*nodeSubPart*/, int broadphaseIndex) + { + btBroadphaseInterface* childBroadphase = m_multiSap->getBroadphaseArray()[broadphaseIndex]; + + int containingBroadphaseIndex = -1; + //already found? + for (int i=0;im_bridgeProxies.size();i++) + { + + if (m_multiProxy->m_bridgeProxies[i]->m_childBroadphase == childBroadphase) + { + containingBroadphaseIndex = i; + break; + } + } + if (containingBroadphaseIndex<0) + { + //add it + btBroadphaseProxy* childProxy = childBroadphase->createProxy(m_multiProxy->m_aabbMin,m_multiProxy->m_aabbMax,m_multiProxy->m_shapeType,m_multiProxy->m_clientObject,m_multiProxy->m_collisionFilterGroup,m_multiProxy->m_collisionFilterMask, m_dispatcher,m_multiProxy); + m_multiSap->addToChildBroadphase(m_multiProxy,childProxy,childBroadphase); + + } + } + }; + + MyNodeOverlapCallback myNodeCallback(this,multiProxy,dispatcher); + + + + + if (m_optimizedAabbTree) + m_optimizedAabbTree->reportAabbOverlappingNodex(&myNodeCallback,aabbMin,aabbMax); + + int i; + + for ( i=0;im_bridgeProxies.size();i++) + { + btVector3 worldAabbMin,worldAabbMax; + multiProxy->m_bridgeProxies[i]->m_childBroadphase->getBroadphaseAabb(worldAabbMin,worldAabbMax); + bool overlapsBroadphase = TestAabbAgainstAabb2(worldAabbMin,worldAabbMax,multiProxy->m_aabbMin,multiProxy->m_aabbMax); + if (!overlapsBroadphase) + { + //remove it now + btBridgeProxy* bridgeProxy = multiProxy->m_bridgeProxies[i]; + + btBroadphaseProxy* childProxy = bridgeProxy->m_childProxy; + bridgeProxy->m_childBroadphase->destroyProxy(childProxy,dispatcher); + + multiProxy->m_bridgeProxies.swap( i,multiProxy->m_bridgeProxies.size()-1); + multiProxy->m_bridgeProxies.pop_back(); + + } + } + + + /* + + if (1) + { + + //find broadphase that contain this multiProxy + int numChildBroadphases = getBroadphaseArray().size(); + for (int i=0;igetBroadphaseAabb(worldAabbMin,worldAabbMax); + bool overlapsBroadphase = TestAabbAgainstAabb2(worldAabbMin,worldAabbMax,multiProxy->m_aabbMin,multiProxy->m_aabbMax); + + // fullyContained = fullyContained || boxIsContainedWithinBox(worldAabbMin,worldAabbMax,multiProxy->m_aabbMin,multiProxy->m_aabbMax); + int containingBroadphaseIndex = -1; + + //if already contains this + + for (int i=0;im_bridgeProxies.size();i++) + { + if (multiProxy->m_bridgeProxies[i]->m_childBroadphase == childBroadphase) + { + containingBroadphaseIndex = i; + } + alreadyInSimple = alreadyInSimple || (multiProxy->m_bridgeProxies[i]->m_childBroadphase == m_simpleBroadphase); + } + + if (overlapsBroadphase) + { + if (containingBroadphaseIndex<0) + { + btBroadphaseProxy* childProxy = childBroadphase->createProxy(aabbMin,aabbMax,multiProxy->m_shapeType,multiProxy->m_clientObject,multiProxy->m_collisionFilterGroup,multiProxy->m_collisionFilterMask, dispatcher); + childProxy->m_multiSapParentProxy = multiProxy; + addToChildBroadphase(multiProxy,childProxy,childBroadphase); + } + } else + { + if (containingBroadphaseIndex>=0) + { + //remove + btBridgeProxy* bridgeProxy = multiProxy->m_bridgeProxies[containingBroadphaseIndex]; + + btBroadphaseProxy* childProxy = bridgeProxy->m_childProxy; + bridgeProxy->m_childBroadphase->destroyProxy(childProxy,dispatcher); + + multiProxy->m_bridgeProxies.swap( containingBroadphaseIndex,multiProxy->m_bridgeProxies.size()-1); + multiProxy->m_bridgeProxies.pop_back(); + } + } + } + + + ///If we are in no other child broadphase, stick the proxy in the global 'simple' broadphase (brute force) + ///hopefully we don't end up with many entries here (can assert/provide feedback on stats) + if (0)//!multiProxy->m_bridgeProxies.size()) + { + ///we don't pass the userPtr but our multisap proxy. We need to patch this, before processing an actual collision + ///this is needed to be able to calculate the aabb overlap + btBroadphaseProxy* childProxy = m_simpleBroadphase->createProxy(aabbMin,aabbMax,multiProxy->m_shapeType,multiProxy->m_clientObject,multiProxy->m_collisionFilterGroup,multiProxy->m_collisionFilterMask, dispatcher); + childProxy->m_multiSapParentProxy = multiProxy; + addToChildBroadphase(multiProxy,childProxy,m_simpleBroadphase); + } + } + + if (!multiProxy->m_bridgeProxies.size()) + { + ///we don't pass the userPtr but our multisap proxy. We need to patch this, before processing an actual collision + ///this is needed to be able to calculate the aabb overlap + btBroadphaseProxy* childProxy = m_simpleBroadphase->createProxy(aabbMin,aabbMax,multiProxy->m_shapeType,multiProxy->m_clientObject,multiProxy->m_collisionFilterGroup,multiProxy->m_collisionFilterMask, dispatcher); + childProxy->m_multiSapParentProxy = multiProxy; + addToChildBroadphase(multiProxy,childProxy,m_simpleBroadphase); + } +*/ + + + //update + for ( i=0;im_bridgeProxies.size();i++) + { + btBridgeProxy* bridgeProxyRef = multiProxy->m_bridgeProxies[i]; + bridgeProxyRef->m_childBroadphase->setAabb(bridgeProxyRef->m_childProxy,aabbMin,aabbMax,dispatcher); + } + +} +bool stopUpdating=false; + + + +class btMultiSapBroadphasePairSortPredicate +{ + public: + + bool operator() ( const btBroadphasePair& a1, const btBroadphasePair& b1 ) + { + btMultiSapBroadphase::btMultiSapProxy* aProxy0 = a1.m_pProxy0 ? (btMultiSapBroadphase::btMultiSapProxy*)a1.m_pProxy0->m_multiSapParentProxy : 0; + btMultiSapBroadphase::btMultiSapProxy* aProxy1 = a1.m_pProxy1 ? (btMultiSapBroadphase::btMultiSapProxy*)a1.m_pProxy1->m_multiSapParentProxy : 0; + btMultiSapBroadphase::btMultiSapProxy* bProxy0 = b1.m_pProxy0 ? (btMultiSapBroadphase::btMultiSapProxy*)b1.m_pProxy0->m_multiSapParentProxy : 0; + btMultiSapBroadphase::btMultiSapProxy* bProxy1 = b1.m_pProxy1 ? (btMultiSapBroadphase::btMultiSapProxy*)b1.m_pProxy1->m_multiSapParentProxy : 0; + + return aProxy0 > bProxy0 || + (aProxy0 == bProxy0 && aProxy1 > bProxy1) || + (aProxy0 == bProxy0 && aProxy1 == bProxy1 && a1.m_algorithm > b1.m_algorithm); + } +}; + + + ///calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during the set aabb +void btMultiSapBroadphase::calculateOverlappingPairs(btDispatcher* dispatcher) +{ + +// m_simpleBroadphase->calculateOverlappingPairs(dispatcher); + + if (!stopUpdating && getOverlappingPairCache()->hasDeferredRemoval()) + { + + btBroadphasePairArray& overlappingPairArray = getOverlappingPairCache()->getOverlappingPairArray(); + + // quicksort(overlappingPairArray,0,overlappingPairArray.size()); + + overlappingPairArray.quickSort(btMultiSapBroadphasePairSortPredicate()); + + //perform a sort, to find duplicates and to sort 'invalid' pairs to the end + // overlappingPairArray.heapSort(btMultiSapBroadphasePairSortPredicate()); + + overlappingPairArray.resize(overlappingPairArray.size() - m_invalidPair); + m_invalidPair = 0; + + + int i; + + btBroadphasePair previousPair; + previousPair.m_pProxy0 = 0; + previousPair.m_pProxy1 = 0; + previousPair.m_algorithm = 0; + + + for (i=0;im_multiSapParentProxy : 0; + btMultiSapProxy* aProxy1 = pair.m_pProxy1 ? (btMultiSapProxy*)pair.m_pProxy1->m_multiSapParentProxy : 0; + btMultiSapProxy* bProxy0 = previousPair.m_pProxy0 ? (btMultiSapProxy*)previousPair.m_pProxy0->m_multiSapParentProxy : 0; + btMultiSapProxy* bProxy1 = previousPair.m_pProxy1 ? (btMultiSapProxy*)previousPair.m_pProxy1->m_multiSapParentProxy : 0; + + bool isDuplicate = (aProxy0 == bProxy0) && (aProxy1 == bProxy1); + + previousPair = pair; + + bool needsRemoval = false; + + if (!isDuplicate) + { + bool hasOverlap = testAabbOverlap(pair.m_pProxy0,pair.m_pProxy1); + + if (hasOverlap) + { + needsRemoval = false;//callback->processOverlap(pair); + } else + { + needsRemoval = true; + } + } else + { + //remove duplicate + needsRemoval = true; + //should have no algorithm + btAssert(!pair.m_algorithm); + } + + if (needsRemoval) + { + getOverlappingPairCache()->cleanOverlappingPair(pair,dispatcher); + + // m_overlappingPairArray.swap(i,m_overlappingPairArray.size()-1); + // m_overlappingPairArray.pop_back(); + pair.m_pProxy0 = 0; + pair.m_pProxy1 = 0; + m_invalidPair++; + gOverlappingPairs--; + } + + } + + ///if you don't like to skip the invalid pairs in the array, execute following code: + #define CLEAN_INVALID_PAIRS 1 + #ifdef CLEAN_INVALID_PAIRS + + //perform a sort, to sort 'invalid' pairs to the end + //overlappingPairArray.heapSort(btMultiSapBroadphasePairSortPredicate()); + overlappingPairArray.quickSort(btMultiSapBroadphasePairSortPredicate()); + + overlappingPairArray.resize(overlappingPairArray.size() - m_invalidPair); + m_invalidPair = 0; + #endif//CLEAN_INVALID_PAIRS + + //printf("overlappingPairArray.size()=%d\n",overlappingPairArray.size()); + } + + +} + + +bool btMultiSapBroadphase::testAabbOverlap(btBroadphaseProxy* childProxy0,btBroadphaseProxy* childProxy1) +{ + btMultiSapProxy* multiSapProxy0 = (btMultiSapProxy*)childProxy0->m_multiSapParentProxy; + btMultiSapProxy* multiSapProxy1 = (btMultiSapProxy*)childProxy1->m_multiSapParentProxy; + + return TestAabbAgainstAabb2(multiSapProxy0->m_aabbMin,multiSapProxy0->m_aabbMax, + multiSapProxy1->m_aabbMin,multiSapProxy1->m_aabbMax); + +} + + +void btMultiSapBroadphase::printStats() +{ +/* printf("---------------------------------\n"); + + printf("btMultiSapBroadphase.h\n"); + printf("numHandles = %d\n",m_multiSapProxies.size()); + //find broadphase that contain this multiProxy + int numChildBroadphases = getBroadphaseArray().size(); + for (int i=0;iprintStats(); + + } + */ + +} + +void btMultiSapBroadphase::resetPool(btDispatcher* dispatcher) +{ + // not yet +} diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h new file mode 100644 index 00000000000..7bcfe6b132a --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h @@ -0,0 +1,151 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ +#ifndef BT_MULTI_SAP_BROADPHASE +#define BT_MULTI_SAP_BROADPHASE + +#include "btBroadphaseInterface.h" +#include "LinearMath/btAlignedObjectArray.h" +#include "btOverlappingPairCache.h" + + +class btBroadphaseInterface; +class btSimpleBroadphase; + + +typedef btAlignedObjectArray btSapBroadphaseArray; + +///The btMultiSapBroadphase is a research project, not recommended to use in production. Use btAxisSweep3 or btDbvtBroadphase instead. +///The btMultiSapBroadphase is a broadphase that contains multiple SAP broadphases. +///The user can add SAP broadphases that cover the world. A btBroadphaseProxy can be in multiple child broadphases at the same time. +///A btQuantizedBvh acceleration structures finds overlapping SAPs for each btBroadphaseProxy. +///See http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=328 +///and http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1329 +class btMultiSapBroadphase :public btBroadphaseInterface +{ + btSapBroadphaseArray m_sapBroadphases; + + btSimpleBroadphase* m_simpleBroadphase; + + btOverlappingPairCache* m_overlappingPairs; + + class btQuantizedBvh* m_optimizedAabbTree; + + + bool m_ownsPairCache; + + btOverlapFilterCallback* m_filterCallback; + + int m_invalidPair; + + struct btBridgeProxy + { + btBroadphaseProxy* m_childProxy; + btBroadphaseInterface* m_childBroadphase; + }; + + +public: + + struct btMultiSapProxy : public btBroadphaseProxy + { + + ///array with all the entries that this proxy belongs to + btAlignedObjectArray m_bridgeProxies; + btVector3 m_aabbMin; + btVector3 m_aabbMax; + + int m_shapeType; + +/* void* m_userPtr; + short int m_collisionFilterGroup; + short int m_collisionFilterMask; +*/ + btMultiSapProxy(const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr, short int collisionFilterGroup,short int collisionFilterMask) + :btBroadphaseProxy(aabbMin,aabbMax,userPtr,collisionFilterGroup,collisionFilterMask), + m_aabbMin(aabbMin), + m_aabbMax(aabbMax), + m_shapeType(shapeType) + { + m_multiSapParentProxy =this; + } + + + }; + +protected: + + + btAlignedObjectArray m_multiSapProxies; + +public: + + btMultiSapBroadphase(int maxProxies = 16384,btOverlappingPairCache* pairCache=0); + + + btSapBroadphaseArray& getBroadphaseArray() + { + return m_sapBroadphases; + } + + const btSapBroadphaseArray& getBroadphaseArray() const + { + return m_sapBroadphases; + } + + virtual ~btMultiSapBroadphase(); + + virtual btBroadphaseProxy* createProxy( const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr, short int collisionFilterGroup,short int collisionFilterMask, btDispatcher* dispatcher,void* multiSapProxy); + virtual void destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher); + virtual void setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax, btDispatcher* dispatcher); + virtual void getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const; + + virtual void rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback,const btVector3& aabbMin=btVector3(0,0,0),const btVector3& aabbMax=btVector3(0,0,0)); + + void addToChildBroadphase(btMultiSapProxy* parentMultiSapProxy, btBroadphaseProxy* childProxy, btBroadphaseInterface* childBroadphase); + + ///calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during the set aabb + virtual void calculateOverlappingPairs(btDispatcher* dispatcher); + + bool testAabbOverlap(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1); + + virtual btOverlappingPairCache* getOverlappingPairCache() + { + return m_overlappingPairs; + } + virtual const btOverlappingPairCache* getOverlappingPairCache() const + { + return m_overlappingPairs; + } + + ///getAabb returns the axis aligned bounding box in the 'global' coordinate frame + ///will add some transform later + virtual void getBroadphaseAabb(btVector3& aabbMin,btVector3& aabbMax) const + { + aabbMin.setValue(-BT_LARGE_FLOAT,-BT_LARGE_FLOAT,-BT_LARGE_FLOAT); + aabbMax.setValue(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT); + } + + void buildTree(const btVector3& bvhAabbMin,const btVector3& bvhAabbMax); + + virtual void printStats(); + + void quicksort (btBroadphasePairArray& a, int lo, int hi); + + ///reset broadphase internal structures, to ensure determinism/reproducability + virtual void resetPool(btDispatcher* dispatcher); + +}; + +#endif //BT_MULTI_SAP_BROADPHASE diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp new file mode 100644 index 00000000000..041bbe05ae2 --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp @@ -0,0 +1,633 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#include "btOverlappingPairCache.h" + +#include "btDispatcher.h" +#include "btCollisionAlgorithm.h" +#include "LinearMath/btAabbUtil2.h" + +#include + +int gOverlappingPairs = 0; + +int gRemovePairs =0; +int gAddedPairs =0; +int gFindPairs =0; + + + + +btHashedOverlappingPairCache::btHashedOverlappingPairCache(): + m_overlapFilterCallback(0), + m_blockedForChanges(false), + m_ghostPairCallback(0) +{ + int initialAllocatedSize= 2; + m_overlappingPairArray.reserve(initialAllocatedSize); + growTables(); +} + + + + +btHashedOverlappingPairCache::~btHashedOverlappingPairCache() +{ +} + + + +void btHashedOverlappingPairCache::cleanOverlappingPair(btBroadphasePair& pair,btDispatcher* dispatcher) +{ + if (pair.m_algorithm) + { + { + pair.m_algorithm->~btCollisionAlgorithm(); + dispatcher->freeCollisionAlgorithm(pair.m_algorithm); + pair.m_algorithm=0; + } + } +} + + + + +void btHashedOverlappingPairCache::cleanProxyFromPairs(btBroadphaseProxy* proxy,btDispatcher* dispatcher) +{ + + class CleanPairCallback : public btOverlapCallback + { + btBroadphaseProxy* m_cleanProxy; + btOverlappingPairCache* m_pairCache; + btDispatcher* m_dispatcher; + + public: + CleanPairCallback(btBroadphaseProxy* cleanProxy,btOverlappingPairCache* pairCache,btDispatcher* dispatcher) + :m_cleanProxy(cleanProxy), + m_pairCache(pairCache), + m_dispatcher(dispatcher) + { + } + virtual bool processOverlap(btBroadphasePair& pair) + { + if ((pair.m_pProxy0 == m_cleanProxy) || + (pair.m_pProxy1 == m_cleanProxy)) + { + m_pairCache->cleanOverlappingPair(pair,m_dispatcher); + } + return false; + } + + }; + + CleanPairCallback cleanPairs(proxy,this,dispatcher); + + processAllOverlappingPairs(&cleanPairs,dispatcher); + +} + + + + +void btHashedOverlappingPairCache::removeOverlappingPairsContainingProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher) +{ + + class RemovePairCallback : public btOverlapCallback + { + btBroadphaseProxy* m_obsoleteProxy; + + public: + RemovePairCallback(btBroadphaseProxy* obsoleteProxy) + :m_obsoleteProxy(obsoleteProxy) + { + } + virtual bool processOverlap(btBroadphasePair& pair) + { + return ((pair.m_pProxy0 == m_obsoleteProxy) || + (pair.m_pProxy1 == m_obsoleteProxy)); + } + + }; + + + RemovePairCallback removeCallback(proxy); + + processAllOverlappingPairs(&removeCallback,dispatcher); +} + + + + + +btBroadphasePair* btHashedOverlappingPairCache::findPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1) +{ + gFindPairs++; + if(proxy0->m_uniqueId>proxy1->m_uniqueId) + btSwap(proxy0,proxy1); + int proxyId1 = proxy0->getUid(); + int proxyId2 = proxy1->getUid(); + + /*if (proxyId1 > proxyId2) + btSwap(proxyId1, proxyId2);*/ + + int hash = static_cast(getHash(static_cast(proxyId1), static_cast(proxyId2)) & (m_overlappingPairArray.capacity()-1)); + + if (hash >= m_hashTable.size()) + { + return NULL; + } + + int index = m_hashTable[hash]; + while (index != BT_NULL_PAIR && equalsPair(m_overlappingPairArray[index], proxyId1, proxyId2) == false) + { + index = m_next[index]; + } + + if (index == BT_NULL_PAIR) + { + return NULL; + } + + btAssert(index < m_overlappingPairArray.size()); + + return &m_overlappingPairArray[index]; +} + +//#include + +void btHashedOverlappingPairCache::growTables() +{ + + int newCapacity = m_overlappingPairArray.capacity(); + + if (m_hashTable.size() < newCapacity) + { + //grow hashtable and next table + int curHashtableSize = m_hashTable.size(); + + m_hashTable.resize(newCapacity); + m_next.resize(newCapacity); + + + int i; + + for (i= 0; i < newCapacity; ++i) + { + m_hashTable[i] = BT_NULL_PAIR; + } + for (i = 0; i < newCapacity; ++i) + { + m_next[i] = BT_NULL_PAIR; + } + + for(i=0;igetUid(); + int proxyId2 = pair.m_pProxy1->getUid(); + /*if (proxyId1 > proxyId2) + btSwap(proxyId1, proxyId2);*/ + int hashValue = static_cast(getHash(static_cast(proxyId1),static_cast(proxyId2)) & (m_overlappingPairArray.capacity()-1)); // New hash value with new mask + m_next[i] = m_hashTable[hashValue]; + m_hashTable[hashValue] = i; + } + + + } +} + +btBroadphasePair* btHashedOverlappingPairCache::internalAddPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1) +{ + if(proxy0->m_uniqueId>proxy1->m_uniqueId) + btSwap(proxy0,proxy1); + int proxyId1 = proxy0->getUid(); + int proxyId2 = proxy1->getUid(); + + /*if (proxyId1 > proxyId2) + btSwap(proxyId1, proxyId2);*/ + + int hash = static_cast(getHash(static_cast(proxyId1),static_cast(proxyId2)) & (m_overlappingPairArray.capacity()-1)); // New hash value with new mask + + + btBroadphasePair* pair = internalFindPair(proxy0, proxy1, hash); + if (pair != NULL) + { + return pair; + } + /*for(int i=0;i%u\r\n",proxyId1,proxyId2); + internalFindPair(proxy0, proxy1, hash); + } + }*/ + int count = m_overlappingPairArray.size(); + int oldCapacity = m_overlappingPairArray.capacity(); + void* mem = &m_overlappingPairArray.expandNonInitializing(); + + //this is where we add an actual pair, so also call the 'ghost' + if (m_ghostPairCallback) + m_ghostPairCallback->addOverlappingPair(proxy0,proxy1); + + int newCapacity = m_overlappingPairArray.capacity(); + + if (oldCapacity < newCapacity) + { + growTables(); + //hash with new capacity + hash = static_cast(getHash(static_cast(proxyId1),static_cast(proxyId2)) & (m_overlappingPairArray.capacity()-1)); + } + + pair = new (mem) btBroadphasePair(*proxy0,*proxy1); +// pair->m_pProxy0 = proxy0; +// pair->m_pProxy1 = proxy1; + pair->m_algorithm = 0; + pair->m_internalTmpValue = 0; + + + m_next[count] = m_hashTable[hash]; + m_hashTable[hash] = count; + + return pair; +} + + + +void* btHashedOverlappingPairCache::removeOverlappingPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1,btDispatcher* dispatcher) +{ + gRemovePairs++; + if(proxy0->m_uniqueId>proxy1->m_uniqueId) + btSwap(proxy0,proxy1); + int proxyId1 = proxy0->getUid(); + int proxyId2 = proxy1->getUid(); + + /*if (proxyId1 > proxyId2) + btSwap(proxyId1, proxyId2);*/ + + int hash = static_cast(getHash(static_cast(proxyId1),static_cast(proxyId2)) & (m_overlappingPairArray.capacity()-1)); + + btBroadphasePair* pair = internalFindPair(proxy0, proxy1, hash); + if (pair == NULL) + { + return 0; + } + + cleanOverlappingPair(*pair,dispatcher); + + void* userData = pair->m_internalInfo1; + + btAssert(pair->m_pProxy0->getUid() == proxyId1); + btAssert(pair->m_pProxy1->getUid() == proxyId2); + + int pairIndex = int(pair - &m_overlappingPairArray[0]); + btAssert(pairIndex < m_overlappingPairArray.size()); + + // Remove the pair from the hash table. + int index = m_hashTable[hash]; + btAssert(index != BT_NULL_PAIR); + + int previous = BT_NULL_PAIR; + while (index != pairIndex) + { + previous = index; + index = m_next[index]; + } + + if (previous != BT_NULL_PAIR) + { + btAssert(m_next[previous] == pairIndex); + m_next[previous] = m_next[pairIndex]; + } + else + { + m_hashTable[hash] = m_next[pairIndex]; + } + + // We now move the last pair into spot of the + // pair being removed. We need to fix the hash + // table indices to support the move. + + int lastPairIndex = m_overlappingPairArray.size() - 1; + + if (m_ghostPairCallback) + m_ghostPairCallback->removeOverlappingPair(proxy0, proxy1,dispatcher); + + // If the removed pair is the last pair, we are done. + if (lastPairIndex == pairIndex) + { + m_overlappingPairArray.pop_back(); + return userData; + } + + // Remove the last pair from the hash table. + const btBroadphasePair* last = &m_overlappingPairArray[lastPairIndex]; + /* missing swap here too, Nat. */ + int lastHash = static_cast(getHash(static_cast(last->m_pProxy0->getUid()), static_cast(last->m_pProxy1->getUid())) & (m_overlappingPairArray.capacity()-1)); + + index = m_hashTable[lastHash]; + btAssert(index != BT_NULL_PAIR); + + previous = BT_NULL_PAIR; + while (index != lastPairIndex) + { + previous = index; + index = m_next[index]; + } + + if (previous != BT_NULL_PAIR) + { + btAssert(m_next[previous] == lastPairIndex); + m_next[previous] = m_next[lastPairIndex]; + } + else + { + m_hashTable[lastHash] = m_next[lastPairIndex]; + } + + // Copy the last pair into the remove pair's spot. + m_overlappingPairArray[pairIndex] = m_overlappingPairArray[lastPairIndex]; + + // Insert the last pair into the hash table + m_next[pairIndex] = m_hashTable[lastHash]; + m_hashTable[lastHash] = pairIndex; + + m_overlappingPairArray.pop_back(); + + return userData; +} +//#include + +void btHashedOverlappingPairCache::processAllOverlappingPairs(btOverlapCallback* callback,btDispatcher* dispatcher) +{ + + int i; + +// printf("m_overlappingPairArray.size()=%d\n",m_overlappingPairArray.size()); + for (i=0;iprocessOverlap(*pair)) + { + removeOverlappingPair(pair->m_pProxy0,pair->m_pProxy1,dispatcher); + + gOverlappingPairs--; + } else + { + i++; + } + } +} + +void btHashedOverlappingPairCache::sortOverlappingPairs(btDispatcher* dispatcher) +{ + ///need to keep hashmap in sync with pair address, so rebuild all + btBroadphasePairArray tmpPairs; + int i; + for (i=0;iremoveOverlappingPair(proxy0, proxy1,dispatcher); + + m_overlappingPairArray.swap(findIndex,m_overlappingPairArray.capacity()-1); + m_overlappingPairArray.pop_back(); + return userData; + } + } + + return 0; +} + + + + + + + + +btBroadphasePair* btSortedOverlappingPairCache::addOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) +{ + //don't add overlap with own + btAssert(proxy0 != proxy1); + + if (!needsBroadphaseCollision(proxy0,proxy1)) + return 0; + + void* mem = &m_overlappingPairArray.expandNonInitializing(); + btBroadphasePair* pair = new (mem) btBroadphasePair(*proxy0,*proxy1); + + gOverlappingPairs++; + gAddedPairs++; + + if (m_ghostPairCallback) + m_ghostPairCallback->addOverlappingPair(proxy0, proxy1); + return pair; + +} + +///this findPair becomes really slow. Either sort the list to speedup the query, or +///use a different solution. It is mainly used for Removing overlapping pairs. Removal could be delayed. +///we could keep a linked list in each proxy, and store pair in one of the proxies (with lowest memory address) +///Also we can use a 2D bitmap, which can be useful for a future GPU implementation + btBroadphasePair* btSortedOverlappingPairCache::findPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) +{ + if (!needsBroadphaseCollision(proxy0,proxy1)) + return 0; + + btBroadphasePair tmpPair(*proxy0,*proxy1); + int findIndex = m_overlappingPairArray.findLinearSearch(tmpPair); + + if (findIndex < m_overlappingPairArray.size()) + { + //btAssert(it != m_overlappingPairSet.end()); + btBroadphasePair* pair = &m_overlappingPairArray[findIndex]; + return pair; + } + return 0; +} + + + + + + + + + + +//#include + +void btSortedOverlappingPairCache::processAllOverlappingPairs(btOverlapCallback* callback,btDispatcher* dispatcher) +{ + + int i; + + for (i=0;iprocessOverlap(*pair)) + { + cleanOverlappingPair(*pair,dispatcher); + pair->m_pProxy0 = 0; + pair->m_pProxy1 = 0; + m_overlappingPairArray.swap(i,m_overlappingPairArray.size()-1); + m_overlappingPairArray.pop_back(); + gOverlappingPairs--; + } else + { + i++; + } + } +} + + + + +btSortedOverlappingPairCache::btSortedOverlappingPairCache(): + m_blockedForChanges(false), + m_hasDeferredRemoval(true), + m_overlapFilterCallback(0), + m_ghostPairCallback(0) +{ + int initialAllocatedSize= 2; + m_overlappingPairArray.reserve(initialAllocatedSize); +} + +btSortedOverlappingPairCache::~btSortedOverlappingPairCache() +{ +} + +void btSortedOverlappingPairCache::cleanOverlappingPair(btBroadphasePair& pair,btDispatcher* dispatcher) +{ + if (pair.m_algorithm) + { + { + pair.m_algorithm->~btCollisionAlgorithm(); + dispatcher->freeCollisionAlgorithm(pair.m_algorithm); + pair.m_algorithm=0; + gRemovePairs--; + } + } +} + + +void btSortedOverlappingPairCache::cleanProxyFromPairs(btBroadphaseProxy* proxy,btDispatcher* dispatcher) +{ + + class CleanPairCallback : public btOverlapCallback + { + btBroadphaseProxy* m_cleanProxy; + btOverlappingPairCache* m_pairCache; + btDispatcher* m_dispatcher; + + public: + CleanPairCallback(btBroadphaseProxy* cleanProxy,btOverlappingPairCache* pairCache,btDispatcher* dispatcher) + :m_cleanProxy(cleanProxy), + m_pairCache(pairCache), + m_dispatcher(dispatcher) + { + } + virtual bool processOverlap(btBroadphasePair& pair) + { + if ((pair.m_pProxy0 == m_cleanProxy) || + (pair.m_pProxy1 == m_cleanProxy)) + { + m_pairCache->cleanOverlappingPair(pair,m_dispatcher); + } + return false; + } + + }; + + CleanPairCallback cleanPairs(proxy,this,dispatcher); + + processAllOverlappingPairs(&cleanPairs,dispatcher); + +} + + +void btSortedOverlappingPairCache::removeOverlappingPairsContainingProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher) +{ + + class RemovePairCallback : public btOverlapCallback + { + btBroadphaseProxy* m_obsoleteProxy; + + public: + RemovePairCallback(btBroadphaseProxy* obsoleteProxy) + :m_obsoleteProxy(obsoleteProxy) + { + } + virtual bool processOverlap(btBroadphasePair& pair) + { + return ((pair.m_pProxy0 == m_obsoleteProxy) || + (pair.m_pProxy1 == m_obsoleteProxy)); + } + + }; + + RemovePairCallback removeCallback(proxy); + + processAllOverlappingPairs(&removeCallback,dispatcher); +} + +void btSortedOverlappingPairCache::sortOverlappingPairs(btDispatcher* dispatcher) +{ + //should already be sorted +} + diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h new file mode 100644 index 00000000000..3945afb8d70 --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h @@ -0,0 +1,469 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef OVERLAPPING_PAIR_CACHE_H +#define OVERLAPPING_PAIR_CACHE_H + + +#include "btBroadphaseInterface.h" +#include "btBroadphaseProxy.h" +#include "btOverlappingPairCallback.h" + +#include "LinearMath/btAlignedObjectArray.h" +class btDispatcher; + +typedef btAlignedObjectArray btBroadphasePairArray; + +struct btOverlapCallback +{ + virtual ~btOverlapCallback() + {} + //return true for deletion of the pair + virtual bool processOverlap(btBroadphasePair& pair) = 0; + +}; + +struct btOverlapFilterCallback +{ + virtual ~btOverlapFilterCallback() + {} + // return true when pairs need collision + virtual bool needBroadphaseCollision(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) const = 0; +}; + + + + + + + +extern int gRemovePairs; +extern int gAddedPairs; +extern int gFindPairs; + +const int BT_NULL_PAIR=0xffffffff; + +///The btOverlappingPairCache provides an interface for overlapping pair management (add, remove, storage), used by the btBroadphaseInterface broadphases. +///The btHashedOverlappingPairCache and btSortedOverlappingPairCache classes are two implementations. +class btOverlappingPairCache : public btOverlappingPairCallback +{ +public: + virtual ~btOverlappingPairCache() {} // this is needed so we can get to the derived class destructor + + virtual btBroadphasePair* getOverlappingPairArrayPtr() = 0; + + virtual const btBroadphasePair* getOverlappingPairArrayPtr() const = 0; + + virtual btBroadphasePairArray& getOverlappingPairArray() = 0; + + virtual void cleanOverlappingPair(btBroadphasePair& pair,btDispatcher* dispatcher) = 0; + + virtual int getNumOverlappingPairs() const = 0; + + virtual void cleanProxyFromPairs(btBroadphaseProxy* proxy,btDispatcher* dispatcher) = 0; + + virtual void setOverlapFilterCallback(btOverlapFilterCallback* callback) = 0; + + virtual void processAllOverlappingPairs(btOverlapCallback*,btDispatcher* dispatcher) = 0; + + virtual btBroadphasePair* findPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1) = 0; + + virtual bool hasDeferredRemoval() = 0; + + virtual void setInternalGhostPairCallback(btOverlappingPairCallback* ghostPairCallback)=0; + + virtual void sortOverlappingPairs(btDispatcher* dispatcher) = 0; + + +}; + +/// Hash-space based Pair Cache, thanks to Erin Catto, Box2D, http://www.box2d.org, and Pierre Terdiman, Codercorner, http://codercorner.com +class btHashedOverlappingPairCache : public btOverlappingPairCache +{ + btBroadphasePairArray m_overlappingPairArray; + btOverlapFilterCallback* m_overlapFilterCallback; + bool m_blockedForChanges; + + +public: + btHashedOverlappingPairCache(); + virtual ~btHashedOverlappingPairCache(); + + + void removeOverlappingPairsContainingProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher); + + virtual void* removeOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1,btDispatcher* dispatcher); + + SIMD_FORCE_INLINE bool needsBroadphaseCollision(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) const + { + if (m_overlapFilterCallback) + return m_overlapFilterCallback->needBroadphaseCollision(proxy0,proxy1); + + bool collides = (proxy0->m_collisionFilterGroup & proxy1->m_collisionFilterMask) != 0; + collides = collides && (proxy1->m_collisionFilterGroup & proxy0->m_collisionFilterMask); + + return collides; + } + + // Add a pair and return the new pair. If the pair already exists, + // no new pair is created and the old one is returned. + virtual btBroadphasePair* addOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) + { + gAddedPairs++; + + if (!needsBroadphaseCollision(proxy0,proxy1)) + return 0; + + return internalAddPair(proxy0,proxy1); + } + + + + void cleanProxyFromPairs(btBroadphaseProxy* proxy,btDispatcher* dispatcher); + + + virtual void processAllOverlappingPairs(btOverlapCallback*,btDispatcher* dispatcher); + + virtual btBroadphasePair* getOverlappingPairArrayPtr() + { + return &m_overlappingPairArray[0]; + } + + const btBroadphasePair* getOverlappingPairArrayPtr() const + { + return &m_overlappingPairArray[0]; + } + + btBroadphasePairArray& getOverlappingPairArray() + { + return m_overlappingPairArray; + } + + const btBroadphasePairArray& getOverlappingPairArray() const + { + return m_overlappingPairArray; + } + + void cleanOverlappingPair(btBroadphasePair& pair,btDispatcher* dispatcher); + + + + btBroadphasePair* findPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1); + + int GetCount() const { return m_overlappingPairArray.size(); } +// btBroadphasePair* GetPairs() { return m_pairs; } + + btOverlapFilterCallback* getOverlapFilterCallback() + { + return m_overlapFilterCallback; + } + + void setOverlapFilterCallback(btOverlapFilterCallback* callback) + { + m_overlapFilterCallback = callback; + } + + int getNumOverlappingPairs() const + { + return m_overlappingPairArray.size(); + } +private: + + btBroadphasePair* internalAddPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1); + + void growTables(); + + SIMD_FORCE_INLINE bool equalsPair(const btBroadphasePair& pair, int proxyId1, int proxyId2) + { + return pair.m_pProxy0->getUid() == proxyId1 && pair.m_pProxy1->getUid() == proxyId2; + } + + /* + // Thomas Wang's hash, see: http://www.concentric.net/~Ttwang/tech/inthash.htm + // This assumes proxyId1 and proxyId2 are 16-bit. + SIMD_FORCE_INLINE int getHash(int proxyId1, int proxyId2) + { + int key = (proxyId2 << 16) | proxyId1; + key = ~key + (key << 15); + key = key ^ (key >> 12); + key = key + (key << 2); + key = key ^ (key >> 4); + key = key * 2057; + key = key ^ (key >> 16); + return key; + } + */ + + + + SIMD_FORCE_INLINE unsigned int getHash(unsigned int proxyId1, unsigned int proxyId2) + { + int key = static_cast(((unsigned int)proxyId1) | (((unsigned int)proxyId2) <<16)); + // Thomas Wang's hash + + key += ~(key << 15); + key ^= (key >> 10); + key += (key << 3); + key ^= (key >> 6); + key += ~(key << 11); + key ^= (key >> 16); + return static_cast(key); + } + + + + + + SIMD_FORCE_INLINE btBroadphasePair* internalFindPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1, int hash) + { + int proxyId1 = proxy0->getUid(); + int proxyId2 = proxy1->getUid(); + #if 0 // wrong, 'equalsPair' use unsorted uids, copy-past devil striked again. Nat. + if (proxyId1 > proxyId2) + btSwap(proxyId1, proxyId2); + #endif + + int index = m_hashTable[hash]; + + while( index != BT_NULL_PAIR && equalsPair(m_overlappingPairArray[index], proxyId1, proxyId2) == false) + { + index = m_next[index]; + } + + if ( index == BT_NULL_PAIR ) + { + return NULL; + } + + btAssert(index < m_overlappingPairArray.size()); + + return &m_overlappingPairArray[index]; + } + + virtual bool hasDeferredRemoval() + { + return false; + } + + virtual void setInternalGhostPairCallback(btOverlappingPairCallback* ghostPairCallback) + { + m_ghostPairCallback = ghostPairCallback; + } + + virtual void sortOverlappingPairs(btDispatcher* dispatcher); + + +protected: + + btAlignedObjectArray m_hashTable; + btAlignedObjectArray m_next; + btOverlappingPairCallback* m_ghostPairCallback; + +}; + + + + +///btSortedOverlappingPairCache maintains the objects with overlapping AABB +///Typically managed by the Broadphase, Axis3Sweep or btSimpleBroadphase +class btSortedOverlappingPairCache : public btOverlappingPairCache +{ + protected: + //avoid brute-force finding all the time + btBroadphasePairArray m_overlappingPairArray; + + //during the dispatch, check that user doesn't destroy/create proxy + bool m_blockedForChanges; + + ///by default, do the removal during the pair traversal + bool m_hasDeferredRemoval; + + //if set, use the callback instead of the built in filter in needBroadphaseCollision + btOverlapFilterCallback* m_overlapFilterCallback; + + btOverlappingPairCallback* m_ghostPairCallback; + + public: + + btSortedOverlappingPairCache(); + virtual ~btSortedOverlappingPairCache(); + + virtual void processAllOverlappingPairs(btOverlapCallback*,btDispatcher* dispatcher); + + void* removeOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1,btDispatcher* dispatcher); + + void cleanOverlappingPair(btBroadphasePair& pair,btDispatcher* dispatcher); + + btBroadphasePair* addOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1); + + btBroadphasePair* findPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1); + + + void cleanProxyFromPairs(btBroadphaseProxy* proxy,btDispatcher* dispatcher); + + void removeOverlappingPairsContainingProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher); + + + inline bool needsBroadphaseCollision(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) const + { + if (m_overlapFilterCallback) + return m_overlapFilterCallback->needBroadphaseCollision(proxy0,proxy1); + + bool collides = (proxy0->m_collisionFilterGroup & proxy1->m_collisionFilterMask) != 0; + collides = collides && (proxy1->m_collisionFilterGroup & proxy0->m_collisionFilterMask); + + return collides; + } + + btBroadphasePairArray& getOverlappingPairArray() + { + return m_overlappingPairArray; + } + + const btBroadphasePairArray& getOverlappingPairArray() const + { + return m_overlappingPairArray; + } + + + + + btBroadphasePair* getOverlappingPairArrayPtr() + { + return &m_overlappingPairArray[0]; + } + + const btBroadphasePair* getOverlappingPairArrayPtr() const + { + return &m_overlappingPairArray[0]; + } + + int getNumOverlappingPairs() const + { + return m_overlappingPairArray.size(); + } + + btOverlapFilterCallback* getOverlapFilterCallback() + { + return m_overlapFilterCallback; + } + + void setOverlapFilterCallback(btOverlapFilterCallback* callback) + { + m_overlapFilterCallback = callback; + } + + virtual bool hasDeferredRemoval() + { + return m_hasDeferredRemoval; + } + + virtual void setInternalGhostPairCallback(btOverlappingPairCallback* ghostPairCallback) + { + m_ghostPairCallback = ghostPairCallback; + } + + virtual void sortOverlappingPairs(btDispatcher* dispatcher); + + +}; + + + +///btNullPairCache skips add/removal of overlapping pairs. Userful for benchmarking and unit testing. +class btNullPairCache : public btOverlappingPairCache +{ + + btBroadphasePairArray m_overlappingPairArray; + +public: + + virtual btBroadphasePair* getOverlappingPairArrayPtr() + { + return &m_overlappingPairArray[0]; + } + const btBroadphasePair* getOverlappingPairArrayPtr() const + { + return &m_overlappingPairArray[0]; + } + btBroadphasePairArray& getOverlappingPairArray() + { + return m_overlappingPairArray; + } + + virtual void cleanOverlappingPair(btBroadphasePair& /*pair*/,btDispatcher* /*dispatcher*/) + { + + } + + virtual int getNumOverlappingPairs() const + { + return 0; + } + + virtual void cleanProxyFromPairs(btBroadphaseProxy* /*proxy*/,btDispatcher* /*dispatcher*/) + { + + } + + virtual void setOverlapFilterCallback(btOverlapFilterCallback* /*callback*/) + { + } + + virtual void processAllOverlappingPairs(btOverlapCallback*,btDispatcher* /*dispatcher*/) + { + } + + virtual btBroadphasePair* findPair(btBroadphaseProxy* /*proxy0*/, btBroadphaseProxy* /*proxy1*/) + { + return 0; + } + + virtual bool hasDeferredRemoval() + { + return true; + } + + virtual void setInternalGhostPairCallback(btOverlappingPairCallback* /* ghostPairCallback */) + { + + } + + virtual btBroadphasePair* addOverlappingPair(btBroadphaseProxy* /*proxy0*/,btBroadphaseProxy* /*proxy1*/) + { + return 0; + } + + virtual void* removeOverlappingPair(btBroadphaseProxy* /*proxy0*/,btBroadphaseProxy* /*proxy1*/,btDispatcher* /*dispatcher*/) + { + return 0; + } + + virtual void removeOverlappingPairsContainingProxy(btBroadphaseProxy* /*proxy0*/,btDispatcher* /*dispatcher*/) + { + } + + virtual void sortOverlappingPairs(btDispatcher* dispatcher) + { + (void) dispatcher; + } + + +}; + + +#endif //OVERLAPPING_PAIR_CACHE_H + + diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h new file mode 100644 index 00000000000..9c7b6f81367 --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h @@ -0,0 +1,40 @@ + +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef OVERLAPPING_PAIR_CALLBACK_H +#define OVERLAPPING_PAIR_CALLBACK_H + +class btDispatcher; +struct btBroadphasePair; + +///The btOverlappingPairCallback class is an additional optional broadphase user callback for adding/removing overlapping pairs, similar interface to btOverlappingPairCache. +class btOverlappingPairCallback +{ +public: + virtual ~btOverlappingPairCallback() + { + + } + + virtual btBroadphasePair* addOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) = 0; + + virtual void* removeOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1,btDispatcher* dispatcher) = 0; + + virtual void removeOverlappingPairsContainingProxy(btBroadphaseProxy* proxy0,btDispatcher* dispatcher) = 0; + +}; + +#endif //OVERLAPPING_PAIR_CALLBACK_H diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp new file mode 100644 index 00000000000..c911435a946 --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp @@ -0,0 +1,1375 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btQuantizedBvh.h" + +#include "LinearMath/btAabbUtil2.h" +#include "LinearMath/btIDebugDraw.h" +#include "LinearMath/btSerializer.h" + +#define RAYAABB2 + +btQuantizedBvh::btQuantizedBvh() : + m_bulletVersion(BT_BULLET_VERSION), + m_useQuantization(false), + //m_traversalMode(TRAVERSAL_STACKLESS_CACHE_FRIENDLY) + m_traversalMode(TRAVERSAL_STACKLESS) + //m_traversalMode(TRAVERSAL_RECURSIVE) + ,m_subtreeHeaderCount(0) //PCK: add this line +{ + m_bvhAabbMin.setValue(-SIMD_INFINITY,-SIMD_INFINITY,-SIMD_INFINITY); + m_bvhAabbMax.setValue(SIMD_INFINITY,SIMD_INFINITY,SIMD_INFINITY); +} + + + + + +void btQuantizedBvh::buildInternal() +{ + ///assumes that caller filled in the m_quantizedLeafNodes + m_useQuantization = true; + int numLeafNodes = 0; + + if (m_useQuantization) + { + //now we have an array of leafnodes in m_leafNodes + numLeafNodes = m_quantizedLeafNodes.size(); + + m_quantizedContiguousNodes.resize(2*numLeafNodes); + + } + + m_curNodeIndex = 0; + + buildTree(0,numLeafNodes); + + ///if the entire tree is small then subtree size, we need to create a header info for the tree + if(m_useQuantization && !m_SubtreeHeaders.size()) + { + btBvhSubtreeInfo& subtree = m_SubtreeHeaders.expand(); + subtree.setAabbFromQuantizeNode(m_quantizedContiguousNodes[0]); + subtree.m_rootNodeIndex = 0; + subtree.m_subtreeSize = m_quantizedContiguousNodes[0].isLeafNode() ? 1 : m_quantizedContiguousNodes[0].getEscapeIndex(); + } + + //PCK: update the copy of the size + m_subtreeHeaderCount = m_SubtreeHeaders.size(); + + //PCK: clear m_quantizedLeafNodes and m_leafNodes, they are temporary + m_quantizedLeafNodes.clear(); + m_leafNodes.clear(); +} + + + +///just for debugging, to visualize the individual patches/subtrees +#ifdef DEBUG_PATCH_COLORS +btVector3 color[4]= +{ + btVector3(1,0,0), + btVector3(0,1,0), + btVector3(0,0,1), + btVector3(0,1,1) +}; +#endif //DEBUG_PATCH_COLORS + + + +void btQuantizedBvh::setQuantizationValues(const btVector3& bvhAabbMin,const btVector3& bvhAabbMax,btScalar quantizationMargin) +{ + //enlarge the AABB to avoid division by zero when initializing the quantization values + btVector3 clampValue(quantizationMargin,quantizationMargin,quantizationMargin); + m_bvhAabbMin = bvhAabbMin - clampValue; + m_bvhAabbMax = bvhAabbMax + clampValue; + btVector3 aabbSize = m_bvhAabbMax - m_bvhAabbMin; + m_bvhQuantization = btVector3(btScalar(65533.0),btScalar(65533.0),btScalar(65533.0)) / aabbSize; + m_useQuantization = true; +} + + + + +btQuantizedBvh::~btQuantizedBvh() +{ +} + +#ifdef DEBUG_TREE_BUILDING +int gStackDepth = 0; +int gMaxStackDepth = 0; +#endif //DEBUG_TREE_BUILDING + +void btQuantizedBvh::buildTree (int startIndex,int endIndex) +{ +#ifdef DEBUG_TREE_BUILDING + gStackDepth++; + if (gStackDepth > gMaxStackDepth) + gMaxStackDepth = gStackDepth; +#endif //DEBUG_TREE_BUILDING + + + int splitAxis, splitIndex, i; + int numIndices =endIndex-startIndex; + int curIndex = m_curNodeIndex; + + btAssert(numIndices>0); + + if (numIndices==1) + { +#ifdef DEBUG_TREE_BUILDING + gStackDepth--; +#endif //DEBUG_TREE_BUILDING + + assignInternalNodeFromLeafNode(m_curNodeIndex,startIndex); + + m_curNodeIndex++; + return; + } + //calculate Best Splitting Axis and where to split it. Sort the incoming 'leafNodes' array within range 'startIndex/endIndex'. + + splitAxis = calcSplittingAxis(startIndex,endIndex); + + splitIndex = sortAndCalcSplittingIndex(startIndex,endIndex,splitAxis); + + int internalNodeIndex = m_curNodeIndex; + + //set the min aabb to 'inf' or a max value, and set the max aabb to a -inf/minimum value. + //the aabb will be expanded during buildTree/mergeInternalNodeAabb with actual node values + setInternalNodeAabbMin(m_curNodeIndex,m_bvhAabbMax);//can't use btVector3(SIMD_INFINITY,SIMD_INFINITY,SIMD_INFINITY)) because of quantization + setInternalNodeAabbMax(m_curNodeIndex,m_bvhAabbMin);//can't use btVector3(-SIMD_INFINITY,-SIMD_INFINITY,-SIMD_INFINITY)) because of quantization + + + for (i=startIndex;im_escapeIndex; + + int leftChildNodexIndex = m_curNodeIndex; + + //build left child tree + buildTree(startIndex,splitIndex); + + int rightChildNodexIndex = m_curNodeIndex; + //build right child tree + buildTree(splitIndex,endIndex); + +#ifdef DEBUG_TREE_BUILDING + gStackDepth--; +#endif //DEBUG_TREE_BUILDING + + int escapeIndex = m_curNodeIndex - curIndex; + + if (m_useQuantization) + { + //escapeIndex is the number of nodes of this subtree + const int sizeQuantizedNode =sizeof(btQuantizedBvhNode); + const int treeSizeInBytes = escapeIndex * sizeQuantizedNode; + if (treeSizeInBytes > MAX_SUBTREE_SIZE_IN_BYTES) + { + updateSubtreeHeaders(leftChildNodexIndex,rightChildNodexIndex); + } + } else + { + + } + + setInternalNodeEscapeIndex(internalNodeIndex,escapeIndex); + +} + +void btQuantizedBvh::updateSubtreeHeaders(int leftChildNodexIndex,int rightChildNodexIndex) +{ + btAssert(m_useQuantization); + + btQuantizedBvhNode& leftChildNode = m_quantizedContiguousNodes[leftChildNodexIndex]; + int leftSubTreeSize = leftChildNode.isLeafNode() ? 1 : leftChildNode.getEscapeIndex(); + int leftSubTreeSizeInBytes = leftSubTreeSize * static_cast(sizeof(btQuantizedBvhNode)); + + btQuantizedBvhNode& rightChildNode = m_quantizedContiguousNodes[rightChildNodexIndex]; + int rightSubTreeSize = rightChildNode.isLeafNode() ? 1 : rightChildNode.getEscapeIndex(); + int rightSubTreeSizeInBytes = rightSubTreeSize * static_cast(sizeof(btQuantizedBvhNode)); + + if(leftSubTreeSizeInBytes <= MAX_SUBTREE_SIZE_IN_BYTES) + { + btBvhSubtreeInfo& subtree = m_SubtreeHeaders.expand(); + subtree.setAabbFromQuantizeNode(leftChildNode); + subtree.m_rootNodeIndex = leftChildNodexIndex; + subtree.m_subtreeSize = leftSubTreeSize; + } + + if(rightSubTreeSizeInBytes <= MAX_SUBTREE_SIZE_IN_BYTES) + { + btBvhSubtreeInfo& subtree = m_SubtreeHeaders.expand(); + subtree.setAabbFromQuantizeNode(rightChildNode); + subtree.m_rootNodeIndex = rightChildNodexIndex; + subtree.m_subtreeSize = rightSubTreeSize; + } + + //PCK: update the copy of the size + m_subtreeHeaderCount = m_SubtreeHeaders.size(); +} + + +int btQuantizedBvh::sortAndCalcSplittingIndex(int startIndex,int endIndex,int splitAxis) +{ + int i; + int splitIndex =startIndex; + int numIndices = endIndex - startIndex; + btScalar splitValue; + + btVector3 means(btScalar(0.),btScalar(0.),btScalar(0.)); + for (i=startIndex;i splitValue) + { + //swap + swapLeafNodes(i,splitIndex); + splitIndex++; + } + } + + //if the splitIndex causes unbalanced trees, fix this by using the center in between startIndex and endIndex + //otherwise the tree-building might fail due to stack-overflows in certain cases. + //unbalanced1 is unsafe: it can cause stack overflows + //bool unbalanced1 = ((splitIndex==startIndex) || (splitIndex == (endIndex-1))); + + //unbalanced2 should work too: always use center (perfect balanced trees) + //bool unbalanced2 = true; + + //this should be safe too: + int rangeBalancedIndices = numIndices/3; + bool unbalanced = ((splitIndex<=(startIndex+rangeBalancedIndices)) || (splitIndex >=(endIndex-1-rangeBalancedIndices))); + + if (unbalanced) + { + splitIndex = startIndex+ (numIndices>>1); + } + + bool unbal = (splitIndex==startIndex) || (splitIndex == (endIndex)); + (void)unbal; + btAssert(!unbal); + + return splitIndex; +} + + +int btQuantizedBvh::calcSplittingAxis(int startIndex,int endIndex) +{ + int i; + + btVector3 means(btScalar(0.),btScalar(0.),btScalar(0.)); + btVector3 variance(btScalar(0.),btScalar(0.),btScalar(0.)); + int numIndices = endIndex-startIndex; + + for (i=startIndex;im_aabbMinOrg,rootNode->m_aabbMaxOrg); + isLeafNode = rootNode->m_escapeIndex == -1; + + //PCK: unsigned instead of bool + if (isLeafNode && (aabbOverlap != 0)) + { + nodeCallback->processNode(rootNode->m_subPart,rootNode->m_triangleIndex); + } + + //PCK: unsigned instead of bool + if ((aabbOverlap != 0) || isLeafNode) + { + rootNode++; + curIndex++; + } else + { + escapeIndex = rootNode->m_escapeIndex; + rootNode += escapeIndex; + curIndex += escapeIndex; + } + } + if (maxIterations < walkIterations) + maxIterations = walkIterations; + +} + +/* +///this was the original recursive traversal, before we optimized towards stackless traversal +void btQuantizedBvh::walkTree(btOptimizedBvhNode* rootNode,btNodeOverlapCallback* nodeCallback,const btVector3& aabbMin,const btVector3& aabbMax) const +{ + bool isLeafNode, aabbOverlap = TestAabbAgainstAabb2(aabbMin,aabbMax,rootNode->m_aabbMin,rootNode->m_aabbMax); + if (aabbOverlap) + { + isLeafNode = (!rootNode->m_leftChild && !rootNode->m_rightChild); + if (isLeafNode) + { + nodeCallback->processNode(rootNode); + } else + { + walkTree(rootNode->m_leftChild,nodeCallback,aabbMin,aabbMax); + walkTree(rootNode->m_rightChild,nodeCallback,aabbMin,aabbMax); + } + } + +} +*/ + +void btQuantizedBvh::walkRecursiveQuantizedTreeAgainstQueryAabb(const btQuantizedBvhNode* currentNode,btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax) const +{ + btAssert(m_useQuantization); + + bool isLeafNode; + //PCK: unsigned instead of bool + unsigned aabbOverlap; + + //PCK: unsigned instead of bool + aabbOverlap = testQuantizedAabbAgainstQuantizedAabb(quantizedQueryAabbMin,quantizedQueryAabbMax,currentNode->m_quantizedAabbMin,currentNode->m_quantizedAabbMax); + isLeafNode = currentNode->isLeafNode(); + + //PCK: unsigned instead of bool + if (aabbOverlap != 0) + { + if (isLeafNode) + { + nodeCallback->processNode(currentNode->getPartId(),currentNode->getTriangleIndex()); + } else + { + //process left and right children + const btQuantizedBvhNode* leftChildNode = currentNode+1; + walkRecursiveQuantizedTreeAgainstQueryAabb(leftChildNode,nodeCallback,quantizedQueryAabbMin,quantizedQueryAabbMax); + + const btQuantizedBvhNode* rightChildNode = leftChildNode->isLeafNode() ? leftChildNode+1:leftChildNode+leftChildNode->getEscapeIndex(); + walkRecursiveQuantizedTreeAgainstQueryAabb(rightChildNode,nodeCallback,quantizedQueryAabbMin,quantizedQueryAabbMax); + } + } +} + + + +void btQuantizedBvh::walkStacklessTreeAgainstRay(btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin, const btVector3& aabbMax, int startNodeIndex,int endNodeIndex) const +{ + btAssert(!m_useQuantization); + + const btOptimizedBvhNode* rootNode = &m_contiguousNodes[0]; + int escapeIndex, curIndex = 0; + int walkIterations = 0; + bool isLeafNode; + //PCK: unsigned instead of bool + unsigned aabbOverlap=0; + unsigned rayBoxOverlap=0; + btScalar lambda_max = 1.0; + + /* Quick pruning by quantized box */ + btVector3 rayAabbMin = raySource; + btVector3 rayAabbMax = raySource; + rayAabbMin.setMin(rayTarget); + rayAabbMax.setMax(rayTarget); + + /* Add box cast extents to bounding box */ + rayAabbMin += aabbMin; + rayAabbMax += aabbMax; + +#ifdef RAYAABB2 + btVector3 rayDir = (rayTarget-raySource); + rayDir.normalize (); + lambda_max = rayDir.dot(rayTarget-raySource); + ///what about division by zero? --> just set rayDirection[i] to 1.0 + btVector3 rayDirectionInverse; + rayDirectionInverse[0] = rayDir[0] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[0]; + rayDirectionInverse[1] = rayDir[1] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[1]; + rayDirectionInverse[2] = rayDir[2] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[2]; + unsigned int sign[3] = { rayDirectionInverse[0] < 0.0, rayDirectionInverse[1] < 0.0, rayDirectionInverse[2] < 0.0}; +#endif + + btVector3 bounds[2]; + + while (curIndex < m_curNodeIndex) + { + btScalar param = 1.0; + //catch bugs in tree data + btAssert (walkIterations < m_curNodeIndex); + + walkIterations++; + + bounds[0] = rootNode->m_aabbMinOrg; + bounds[1] = rootNode->m_aabbMaxOrg; + /* Add box cast extents */ + bounds[0] -= aabbMax; + bounds[1] -= aabbMin; + + aabbOverlap = TestAabbAgainstAabb2(rayAabbMin,rayAabbMax,rootNode->m_aabbMinOrg,rootNode->m_aabbMaxOrg); + //perhaps profile if it is worth doing the aabbOverlap test first + +#ifdef RAYAABB2 + ///careful with this check: need to check division by zero (above) and fix the unQuantize method + ///thanks Joerg/hiker for the reproduction case! + ///http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=1858 + rayBoxOverlap = aabbOverlap ? btRayAabb2 (raySource, rayDirectionInverse, sign, bounds, param, 0.0f, lambda_max) : false; + +#else + btVector3 normal; + rayBoxOverlap = btRayAabb(raySource, rayTarget,bounds[0],bounds[1],param, normal); +#endif + + isLeafNode = rootNode->m_escapeIndex == -1; + + //PCK: unsigned instead of bool + if (isLeafNode && (rayBoxOverlap != 0)) + { + nodeCallback->processNode(rootNode->m_subPart,rootNode->m_triangleIndex); + } + + //PCK: unsigned instead of bool + if ((rayBoxOverlap != 0) || isLeafNode) + { + rootNode++; + curIndex++; + } else + { + escapeIndex = rootNode->m_escapeIndex; + rootNode += escapeIndex; + curIndex += escapeIndex; + } + } + if (maxIterations < walkIterations) + maxIterations = walkIterations; + +} + + + +void btQuantizedBvh::walkStacklessQuantizedTreeAgainstRay(btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin, const btVector3& aabbMax, int startNodeIndex,int endNodeIndex) const +{ + btAssert(m_useQuantization); + + int curIndex = startNodeIndex; + int walkIterations = 0; + int subTreeSize = endNodeIndex - startNodeIndex; + (void)subTreeSize; + + const btQuantizedBvhNode* rootNode = &m_quantizedContiguousNodes[startNodeIndex]; + int escapeIndex; + + bool isLeafNode; + //PCK: unsigned instead of bool + unsigned boxBoxOverlap = 0; + unsigned rayBoxOverlap = 0; + + btScalar lambda_max = 1.0; + +#ifdef RAYAABB2 + btVector3 rayDirection = (rayTarget-raySource); + rayDirection.normalize (); + lambda_max = rayDirection.dot(rayTarget-raySource); + ///what about division by zero? --> just set rayDirection[i] to 1.0 + rayDirection[0] = rayDirection[0] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDirection[0]; + rayDirection[1] = rayDirection[1] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDirection[1]; + rayDirection[2] = rayDirection[2] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDirection[2]; + unsigned int sign[3] = { rayDirection[0] < 0.0, rayDirection[1] < 0.0, rayDirection[2] < 0.0}; +#endif + + /* Quick pruning by quantized box */ + btVector3 rayAabbMin = raySource; + btVector3 rayAabbMax = raySource; + rayAabbMin.setMin(rayTarget); + rayAabbMax.setMax(rayTarget); + + /* Add box cast extents to bounding box */ + rayAabbMin += aabbMin; + rayAabbMax += aabbMax; + + unsigned short int quantizedQueryAabbMin[3]; + unsigned short int quantizedQueryAabbMax[3]; + quantizeWithClamp(quantizedQueryAabbMin,rayAabbMin,0); + quantizeWithClamp(quantizedQueryAabbMax,rayAabbMax,1); + + while (curIndex < endNodeIndex) + { + +//#define VISUALLY_ANALYZE_BVH 1 +#ifdef VISUALLY_ANALYZE_BVH + //some code snippet to debugDraw aabb, to visually analyze bvh structure + static int drawPatch = 0; + //need some global access to a debugDrawer + extern btIDebugDraw* debugDrawerPtr; + if (curIndex==drawPatch) + { + btVector3 aabbMin,aabbMax; + aabbMin = unQuantize(rootNode->m_quantizedAabbMin); + aabbMax = unQuantize(rootNode->m_quantizedAabbMax); + btVector3 color(1,0,0); + debugDrawerPtr->drawAabb(aabbMin,aabbMax,color); + } +#endif//VISUALLY_ANALYZE_BVH + + //catch bugs in tree data + btAssert (walkIterations < subTreeSize); + + walkIterations++; + //PCK: unsigned instead of bool + // only interested if this is closer than any previous hit + btScalar param = 1.0; + rayBoxOverlap = 0; + boxBoxOverlap = testQuantizedAabbAgainstQuantizedAabb(quantizedQueryAabbMin,quantizedQueryAabbMax,rootNode->m_quantizedAabbMin,rootNode->m_quantizedAabbMax); + isLeafNode = rootNode->isLeafNode(); + if (boxBoxOverlap) + { + btVector3 bounds[2]; + bounds[0] = unQuantize(rootNode->m_quantizedAabbMin); + bounds[1] = unQuantize(rootNode->m_quantizedAabbMax); + /* Add box cast extents */ + bounds[0] -= aabbMax; + bounds[1] -= aabbMin; + btVector3 normal; +#if 0 + bool ra2 = btRayAabb2 (raySource, rayDirection, sign, bounds, param, 0.0, lambda_max); + bool ra = btRayAabb (raySource, rayTarget, bounds[0], bounds[1], param, normal); + if (ra2 != ra) + { + printf("functions don't match\n"); + } +#endif +#ifdef RAYAABB2 + ///careful with this check: need to check division by zero (above) and fix the unQuantize method + ///thanks Joerg/hiker for the reproduction case! + ///http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=1858 + + //BT_PROFILE("btRayAabb2"); + rayBoxOverlap = btRayAabb2 (raySource, rayDirection, sign, bounds, param, 0.0f, lambda_max); + +#else + rayBoxOverlap = true;//btRayAabb(raySource, rayTarget, bounds[0], bounds[1], param, normal); +#endif + } + + if (isLeafNode && rayBoxOverlap) + { + nodeCallback->processNode(rootNode->getPartId(),rootNode->getTriangleIndex()); + } + + //PCK: unsigned instead of bool + if ((rayBoxOverlap != 0) || isLeafNode) + { + rootNode++; + curIndex++; + } else + { + escapeIndex = rootNode->getEscapeIndex(); + rootNode += escapeIndex; + curIndex += escapeIndex; + } + } + if (maxIterations < walkIterations) + maxIterations = walkIterations; + +} + +void btQuantizedBvh::walkStacklessQuantizedTree(btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax,int startNodeIndex,int endNodeIndex) const +{ + btAssert(m_useQuantization); + + int curIndex = startNodeIndex; + int walkIterations = 0; + int subTreeSize = endNodeIndex - startNodeIndex; + (void)subTreeSize; + + const btQuantizedBvhNode* rootNode = &m_quantizedContiguousNodes[startNodeIndex]; + int escapeIndex; + + bool isLeafNode; + //PCK: unsigned instead of bool + unsigned aabbOverlap; + + while (curIndex < endNodeIndex) + { + +//#define VISUALLY_ANALYZE_BVH 1 +#ifdef VISUALLY_ANALYZE_BVH + //some code snippet to debugDraw aabb, to visually analyze bvh structure + static int drawPatch = 0; + //need some global access to a debugDrawer + extern btIDebugDraw* debugDrawerPtr; + if (curIndex==drawPatch) + { + btVector3 aabbMin,aabbMax; + aabbMin = unQuantize(rootNode->m_quantizedAabbMin); + aabbMax = unQuantize(rootNode->m_quantizedAabbMax); + btVector3 color(1,0,0); + debugDrawerPtr->drawAabb(aabbMin,aabbMax,color); + } +#endif//VISUALLY_ANALYZE_BVH + + //catch bugs in tree data + btAssert (walkIterations < subTreeSize); + + walkIterations++; + //PCK: unsigned instead of bool + aabbOverlap = testQuantizedAabbAgainstQuantizedAabb(quantizedQueryAabbMin,quantizedQueryAabbMax,rootNode->m_quantizedAabbMin,rootNode->m_quantizedAabbMax); + isLeafNode = rootNode->isLeafNode(); + + if (isLeafNode && aabbOverlap) + { + nodeCallback->processNode(rootNode->getPartId(),rootNode->getTriangleIndex()); + } + + //PCK: unsigned instead of bool + if ((aabbOverlap != 0) || isLeafNode) + { + rootNode++; + curIndex++; + } else + { + escapeIndex = rootNode->getEscapeIndex(); + rootNode += escapeIndex; + curIndex += escapeIndex; + } + } + if (maxIterations < walkIterations) + maxIterations = walkIterations; + +} + +//This traversal can be called from Playstation 3 SPU +void btQuantizedBvh::walkStacklessQuantizedTreeCacheFriendly(btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax) const +{ + btAssert(m_useQuantization); + + int i; + + + for (i=0;im_SubtreeHeaders.size();i++) + { + const btBvhSubtreeInfo& subtree = m_SubtreeHeaders[i]; + + //PCK: unsigned instead of bool + unsigned overlap = testQuantizedAabbAgainstQuantizedAabb(quantizedQueryAabbMin,quantizedQueryAabbMax,subtree.m_quantizedAabbMin,subtree.m_quantizedAabbMax); + if (overlap != 0) + { + walkStacklessQuantizedTree(nodeCallback,quantizedQueryAabbMin,quantizedQueryAabbMax, + subtree.m_rootNodeIndex, + subtree.m_rootNodeIndex+subtree.m_subtreeSize); + } + } +} + + +void btQuantizedBvh::reportRayOverlappingNodex (btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget) const +{ + reportBoxCastOverlappingNodex(nodeCallback,raySource,rayTarget,btVector3(0,0,0),btVector3(0,0,0)); +} + + +void btQuantizedBvh::reportBoxCastOverlappingNodex(btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin,const btVector3& aabbMax) const +{ + //always use stackless + + if (m_useQuantization) + { + walkStacklessQuantizedTreeAgainstRay(nodeCallback, raySource, rayTarget, aabbMin, aabbMax, 0, m_curNodeIndex); + } + else + { + walkStacklessTreeAgainstRay(nodeCallback, raySource, rayTarget, aabbMin, aabbMax, 0, m_curNodeIndex); + } + /* + { + //recursive traversal + btVector3 qaabbMin = raySource; + btVector3 qaabbMax = raySource; + qaabbMin.setMin(rayTarget); + qaabbMax.setMax(rayTarget); + qaabbMin += aabbMin; + qaabbMax += aabbMax; + reportAabbOverlappingNodex(nodeCallback,qaabbMin,qaabbMax); + } + */ + +} + + +void btQuantizedBvh::swapLeafNodes(int i,int splitIndex) +{ + if (m_useQuantization) + { + btQuantizedBvhNode tmp = m_quantizedLeafNodes[i]; + m_quantizedLeafNodes[i] = m_quantizedLeafNodes[splitIndex]; + m_quantizedLeafNodes[splitIndex] = tmp; + } else + { + btOptimizedBvhNode tmp = m_leafNodes[i]; + m_leafNodes[i] = m_leafNodes[splitIndex]; + m_leafNodes[splitIndex] = tmp; + } +} + +void btQuantizedBvh::assignInternalNodeFromLeafNode(int internalNode,int leafNodeIndex) +{ + if (m_useQuantization) + { + m_quantizedContiguousNodes[internalNode] = m_quantizedLeafNodes[leafNodeIndex]; + } else + { + m_contiguousNodes[internalNode] = m_leafNodes[leafNodeIndex]; + } +} + +//PCK: include +#include + +#if 0 +//PCK: consts +static const unsigned BVH_ALIGNMENT = 16; +static const unsigned BVH_ALIGNMENT_MASK = BVH_ALIGNMENT-1; + +static const unsigned BVH_ALIGNMENT_BLOCKS = 2; +#endif + + +unsigned int btQuantizedBvh::getAlignmentSerializationPadding() +{ + // I changed this to 0 since the extra padding is not needed or used. + return 0;//BVH_ALIGNMENT_BLOCKS * BVH_ALIGNMENT; +} + +unsigned btQuantizedBvh::calculateSerializeBufferSize() const +{ + unsigned baseSize = sizeof(btQuantizedBvh) + getAlignmentSerializationPadding(); + baseSize += sizeof(btBvhSubtreeInfo) * m_subtreeHeaderCount; + if (m_useQuantization) + { + return baseSize + m_curNodeIndex * sizeof(btQuantizedBvhNode); + } + return baseSize + m_curNodeIndex * sizeof(btOptimizedBvhNode); +} + +bool btQuantizedBvh::serialize(void *o_alignedDataBuffer, unsigned /*i_dataBufferSize */, bool i_swapEndian) const +{ + btAssert(m_subtreeHeaderCount == m_SubtreeHeaders.size()); + m_subtreeHeaderCount = m_SubtreeHeaders.size(); + +/* if (i_dataBufferSize < calculateSerializeBufferSize() || o_alignedDataBuffer == NULL || (((unsigned)o_alignedDataBuffer & BVH_ALIGNMENT_MASK) != 0)) + { + ///check alignedment for buffer? + btAssert(0); + return false; + } +*/ + + btQuantizedBvh *targetBvh = (btQuantizedBvh *)o_alignedDataBuffer; + + // construct the class so the virtual function table, etc will be set up + // Also, m_leafNodes and m_quantizedLeafNodes will be initialized to default values by the constructor + new (targetBvh) btQuantizedBvh; + + if (i_swapEndian) + { + targetBvh->m_curNodeIndex = static_cast(btSwapEndian(m_curNodeIndex)); + + + btSwapVector3Endian(m_bvhAabbMin,targetBvh->m_bvhAabbMin); + btSwapVector3Endian(m_bvhAabbMax,targetBvh->m_bvhAabbMax); + btSwapVector3Endian(m_bvhQuantization,targetBvh->m_bvhQuantization); + + targetBvh->m_traversalMode = (btTraversalMode)btSwapEndian(m_traversalMode); + targetBvh->m_subtreeHeaderCount = static_cast(btSwapEndian(m_subtreeHeaderCount)); + } + else + { + targetBvh->m_curNodeIndex = m_curNodeIndex; + targetBvh->m_bvhAabbMin = m_bvhAabbMin; + targetBvh->m_bvhAabbMax = m_bvhAabbMax; + targetBvh->m_bvhQuantization = m_bvhQuantization; + targetBvh->m_traversalMode = m_traversalMode; + targetBvh->m_subtreeHeaderCount = m_subtreeHeaderCount; + } + + targetBvh->m_useQuantization = m_useQuantization; + + unsigned char *nodeData = (unsigned char *)targetBvh; + nodeData += sizeof(btQuantizedBvh); + + unsigned sizeToAdd = 0;//(BVH_ALIGNMENT-((unsigned)nodeData & BVH_ALIGNMENT_MASK))&BVH_ALIGNMENT_MASK; + nodeData += sizeToAdd; + + int nodeCount = m_curNodeIndex; + + if (m_useQuantization) + { + targetBvh->m_quantizedContiguousNodes.initializeFromBuffer(nodeData, nodeCount, nodeCount); + + if (i_swapEndian) + { + for (int nodeIndex = 0; nodeIndex < nodeCount; nodeIndex++) + { + targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[0] = btSwapEndian(m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[0]); + targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[1] = btSwapEndian(m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[1]); + targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[2] = btSwapEndian(m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[2]); + + targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[0] = btSwapEndian(m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[0]); + targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[1] = btSwapEndian(m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[1]); + targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[2] = btSwapEndian(m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[2]); + + targetBvh->m_quantizedContiguousNodes[nodeIndex].m_escapeIndexOrTriangleIndex = static_cast(btSwapEndian(m_quantizedContiguousNodes[nodeIndex].m_escapeIndexOrTriangleIndex)); + } + } + else + { + for (int nodeIndex = 0; nodeIndex < nodeCount; nodeIndex++) + { + + targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[0] = m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[0]; + targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[1] = m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[1]; + targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[2] = m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[2]; + + targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[0] = m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[0]; + targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[1] = m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[1]; + targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[2] = m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[2]; + + targetBvh->m_quantizedContiguousNodes[nodeIndex].m_escapeIndexOrTriangleIndex = m_quantizedContiguousNodes[nodeIndex].m_escapeIndexOrTriangleIndex; + + + } + } + nodeData += sizeof(btQuantizedBvhNode) * nodeCount; + + // this clears the pointer in the member variable it doesn't really do anything to the data + // it does call the destructor on the contained objects, but they are all classes with no destructor defined + // so the memory (which is not freed) is left alone + targetBvh->m_quantizedContiguousNodes.initializeFromBuffer(NULL, 0, 0); + } + else + { + targetBvh->m_contiguousNodes.initializeFromBuffer(nodeData, nodeCount, nodeCount); + + if (i_swapEndian) + { + for (int nodeIndex = 0; nodeIndex < nodeCount; nodeIndex++) + { + btSwapVector3Endian(m_contiguousNodes[nodeIndex].m_aabbMinOrg, targetBvh->m_contiguousNodes[nodeIndex].m_aabbMinOrg); + btSwapVector3Endian(m_contiguousNodes[nodeIndex].m_aabbMaxOrg, targetBvh->m_contiguousNodes[nodeIndex].m_aabbMaxOrg); + + targetBvh->m_contiguousNodes[nodeIndex].m_escapeIndex = static_cast(btSwapEndian(m_contiguousNodes[nodeIndex].m_escapeIndex)); + targetBvh->m_contiguousNodes[nodeIndex].m_subPart = static_cast(btSwapEndian(m_contiguousNodes[nodeIndex].m_subPart)); + targetBvh->m_contiguousNodes[nodeIndex].m_triangleIndex = static_cast(btSwapEndian(m_contiguousNodes[nodeIndex].m_triangleIndex)); + } + } + else + { + for (int nodeIndex = 0; nodeIndex < nodeCount; nodeIndex++) + { + targetBvh->m_contiguousNodes[nodeIndex].m_aabbMinOrg = m_contiguousNodes[nodeIndex].m_aabbMinOrg; + targetBvh->m_contiguousNodes[nodeIndex].m_aabbMaxOrg = m_contiguousNodes[nodeIndex].m_aabbMaxOrg; + + targetBvh->m_contiguousNodes[nodeIndex].m_escapeIndex = m_contiguousNodes[nodeIndex].m_escapeIndex; + targetBvh->m_contiguousNodes[nodeIndex].m_subPart = m_contiguousNodes[nodeIndex].m_subPart; + targetBvh->m_contiguousNodes[nodeIndex].m_triangleIndex = m_contiguousNodes[nodeIndex].m_triangleIndex; + } + } + nodeData += sizeof(btOptimizedBvhNode) * nodeCount; + + // this clears the pointer in the member variable it doesn't really do anything to the data + // it does call the destructor on the contained objects, but they are all classes with no destructor defined + // so the memory (which is not freed) is left alone + targetBvh->m_contiguousNodes.initializeFromBuffer(NULL, 0, 0); + } + + sizeToAdd = 0;//(BVH_ALIGNMENT-((unsigned)nodeData & BVH_ALIGNMENT_MASK))&BVH_ALIGNMENT_MASK; + nodeData += sizeToAdd; + + // Now serialize the subtree headers + targetBvh->m_SubtreeHeaders.initializeFromBuffer(nodeData, m_subtreeHeaderCount, m_subtreeHeaderCount); + if (i_swapEndian) + { + for (int i = 0; i < m_subtreeHeaderCount; i++) + { + targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMin[0] = btSwapEndian(m_SubtreeHeaders[i].m_quantizedAabbMin[0]); + targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMin[1] = btSwapEndian(m_SubtreeHeaders[i].m_quantizedAabbMin[1]); + targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMin[2] = btSwapEndian(m_SubtreeHeaders[i].m_quantizedAabbMin[2]); + + targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMax[0] = btSwapEndian(m_SubtreeHeaders[i].m_quantizedAabbMax[0]); + targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMax[1] = btSwapEndian(m_SubtreeHeaders[i].m_quantizedAabbMax[1]); + targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMax[2] = btSwapEndian(m_SubtreeHeaders[i].m_quantizedAabbMax[2]); + + targetBvh->m_SubtreeHeaders[i].m_rootNodeIndex = static_cast(btSwapEndian(m_SubtreeHeaders[i].m_rootNodeIndex)); + targetBvh->m_SubtreeHeaders[i].m_subtreeSize = static_cast(btSwapEndian(m_SubtreeHeaders[i].m_subtreeSize)); + } + } + else + { + for (int i = 0; i < m_subtreeHeaderCount; i++) + { + targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMin[0] = (m_SubtreeHeaders[i].m_quantizedAabbMin[0]); + targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMin[1] = (m_SubtreeHeaders[i].m_quantizedAabbMin[1]); + targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMin[2] = (m_SubtreeHeaders[i].m_quantizedAabbMin[2]); + + targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMax[0] = (m_SubtreeHeaders[i].m_quantizedAabbMax[0]); + targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMax[1] = (m_SubtreeHeaders[i].m_quantizedAabbMax[1]); + targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMax[2] = (m_SubtreeHeaders[i].m_quantizedAabbMax[2]); + + targetBvh->m_SubtreeHeaders[i].m_rootNodeIndex = (m_SubtreeHeaders[i].m_rootNodeIndex); + targetBvh->m_SubtreeHeaders[i].m_subtreeSize = (m_SubtreeHeaders[i].m_subtreeSize); + + // need to clear padding in destination buffer + targetBvh->m_SubtreeHeaders[i].m_padding[0] = 0; + targetBvh->m_SubtreeHeaders[i].m_padding[1] = 0; + targetBvh->m_SubtreeHeaders[i].m_padding[2] = 0; + } + } + nodeData += sizeof(btBvhSubtreeInfo) * m_subtreeHeaderCount; + + // this clears the pointer in the member variable it doesn't really do anything to the data + // it does call the destructor on the contained objects, but they are all classes with no destructor defined + // so the memory (which is not freed) is left alone + targetBvh->m_SubtreeHeaders.initializeFromBuffer(NULL, 0, 0); + + // this wipes the virtual function table pointer at the start of the buffer for the class + *((void**)o_alignedDataBuffer) = NULL; + + return true; +} + +btQuantizedBvh *btQuantizedBvh::deSerializeInPlace(void *i_alignedDataBuffer, unsigned int i_dataBufferSize, bool i_swapEndian) +{ + + if (i_alignedDataBuffer == NULL)// || (((unsigned)i_alignedDataBuffer & BVH_ALIGNMENT_MASK) != 0)) + { + return NULL; + } + btQuantizedBvh *bvh = (btQuantizedBvh *)i_alignedDataBuffer; + + if (i_swapEndian) + { + bvh->m_curNodeIndex = static_cast(btSwapEndian(bvh->m_curNodeIndex)); + + btUnSwapVector3Endian(bvh->m_bvhAabbMin); + btUnSwapVector3Endian(bvh->m_bvhAabbMax); + btUnSwapVector3Endian(bvh->m_bvhQuantization); + + bvh->m_traversalMode = (btTraversalMode)btSwapEndian(bvh->m_traversalMode); + bvh->m_subtreeHeaderCount = static_cast(btSwapEndian(bvh->m_subtreeHeaderCount)); + } + + unsigned int calculatedBufSize = bvh->calculateSerializeBufferSize(); + btAssert(calculatedBufSize <= i_dataBufferSize); + + if (calculatedBufSize > i_dataBufferSize) + { + return NULL; + } + + unsigned char *nodeData = (unsigned char *)bvh; + nodeData += sizeof(btQuantizedBvh); + + unsigned sizeToAdd = 0;//(BVH_ALIGNMENT-((unsigned)nodeData & BVH_ALIGNMENT_MASK))&BVH_ALIGNMENT_MASK; + nodeData += sizeToAdd; + + int nodeCount = bvh->m_curNodeIndex; + + // Must call placement new to fill in virtual function table, etc, but we don't want to overwrite most data, so call a special version of the constructor + // Also, m_leafNodes and m_quantizedLeafNodes will be initialized to default values by the constructor + new (bvh) btQuantizedBvh(*bvh, false); + + if (bvh->m_useQuantization) + { + bvh->m_quantizedContiguousNodes.initializeFromBuffer(nodeData, nodeCount, nodeCount); + + if (i_swapEndian) + { + for (int nodeIndex = 0; nodeIndex < nodeCount; nodeIndex++) + { + bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[0] = btSwapEndian(bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[0]); + bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[1] = btSwapEndian(bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[1]); + bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[2] = btSwapEndian(bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[2]); + + bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[0] = btSwapEndian(bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[0]); + bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[1] = btSwapEndian(bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[1]); + bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[2] = btSwapEndian(bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[2]); + + bvh->m_quantizedContiguousNodes[nodeIndex].m_escapeIndexOrTriangleIndex = static_cast(btSwapEndian(bvh->m_quantizedContiguousNodes[nodeIndex].m_escapeIndexOrTriangleIndex)); + } + } + nodeData += sizeof(btQuantizedBvhNode) * nodeCount; + } + else + { + bvh->m_contiguousNodes.initializeFromBuffer(nodeData, nodeCount, nodeCount); + + if (i_swapEndian) + { + for (int nodeIndex = 0; nodeIndex < nodeCount; nodeIndex++) + { + btUnSwapVector3Endian(bvh->m_contiguousNodes[nodeIndex].m_aabbMinOrg); + btUnSwapVector3Endian(bvh->m_contiguousNodes[nodeIndex].m_aabbMaxOrg); + + bvh->m_contiguousNodes[nodeIndex].m_escapeIndex = static_cast(btSwapEndian(bvh->m_contiguousNodes[nodeIndex].m_escapeIndex)); + bvh->m_contiguousNodes[nodeIndex].m_subPart = static_cast(btSwapEndian(bvh->m_contiguousNodes[nodeIndex].m_subPart)); + bvh->m_contiguousNodes[nodeIndex].m_triangleIndex = static_cast(btSwapEndian(bvh->m_contiguousNodes[nodeIndex].m_triangleIndex)); + } + } + nodeData += sizeof(btOptimizedBvhNode) * nodeCount; + } + + sizeToAdd = 0;//(BVH_ALIGNMENT-((unsigned)nodeData & BVH_ALIGNMENT_MASK))&BVH_ALIGNMENT_MASK; + nodeData += sizeToAdd; + + // Now serialize the subtree headers + bvh->m_SubtreeHeaders.initializeFromBuffer(nodeData, bvh->m_subtreeHeaderCount, bvh->m_subtreeHeaderCount); + if (i_swapEndian) + { + for (int i = 0; i < bvh->m_subtreeHeaderCount; i++) + { + bvh->m_SubtreeHeaders[i].m_quantizedAabbMin[0] = btSwapEndian(bvh->m_SubtreeHeaders[i].m_quantizedAabbMin[0]); + bvh->m_SubtreeHeaders[i].m_quantizedAabbMin[1] = btSwapEndian(bvh->m_SubtreeHeaders[i].m_quantizedAabbMin[1]); + bvh->m_SubtreeHeaders[i].m_quantizedAabbMin[2] = btSwapEndian(bvh->m_SubtreeHeaders[i].m_quantizedAabbMin[2]); + + bvh->m_SubtreeHeaders[i].m_quantizedAabbMax[0] = btSwapEndian(bvh->m_SubtreeHeaders[i].m_quantizedAabbMax[0]); + bvh->m_SubtreeHeaders[i].m_quantizedAabbMax[1] = btSwapEndian(bvh->m_SubtreeHeaders[i].m_quantizedAabbMax[1]); + bvh->m_SubtreeHeaders[i].m_quantizedAabbMax[2] = btSwapEndian(bvh->m_SubtreeHeaders[i].m_quantizedAabbMax[2]); + + bvh->m_SubtreeHeaders[i].m_rootNodeIndex = static_cast(btSwapEndian(bvh->m_SubtreeHeaders[i].m_rootNodeIndex)); + bvh->m_SubtreeHeaders[i].m_subtreeSize = static_cast(btSwapEndian(bvh->m_SubtreeHeaders[i].m_subtreeSize)); + } + } + + return bvh; +} + +// Constructor that prevents btVector3's default constructor from being called +btQuantizedBvh::btQuantizedBvh(btQuantizedBvh &self, bool /* ownsMemory */) : +m_bvhAabbMin(self.m_bvhAabbMin), +m_bvhAabbMax(self.m_bvhAabbMax), +m_bvhQuantization(self.m_bvhQuantization), +m_bulletVersion(BT_BULLET_VERSION) +{ + +} + +void btQuantizedBvh::deSerializeFloat(struct btQuantizedBvhFloatData& quantizedBvhFloatData) +{ + m_bvhAabbMax.deSerializeFloat(quantizedBvhFloatData.m_bvhAabbMax); + m_bvhAabbMin.deSerializeFloat(quantizedBvhFloatData.m_bvhAabbMin); + m_bvhQuantization.deSerializeFloat(quantizedBvhFloatData.m_bvhQuantization); + + m_curNodeIndex = quantizedBvhFloatData.m_curNodeIndex; + m_useQuantization = quantizedBvhFloatData.m_useQuantization!=0; + + { + int numElem = quantizedBvhFloatData.m_numContiguousLeafNodes; + m_contiguousNodes.resize(numElem); + + if (numElem) + { + btOptimizedBvhNodeFloatData* memPtr = quantizedBvhFloatData.m_contiguousNodesPtr; + + for (int i=0;im_aabbMaxOrg); + m_contiguousNodes[i].m_aabbMinOrg.deSerializeFloat(memPtr->m_aabbMinOrg); + m_contiguousNodes[i].m_escapeIndex = memPtr->m_escapeIndex; + m_contiguousNodes[i].m_subPart = memPtr->m_subPart; + m_contiguousNodes[i].m_triangleIndex = memPtr->m_triangleIndex; + } + } + } + + { + int numElem = quantizedBvhFloatData.m_numQuantizedContiguousNodes; + m_quantizedContiguousNodes.resize(numElem); + + if (numElem) + { + btQuantizedBvhNodeData* memPtr = quantizedBvhFloatData.m_quantizedContiguousNodesPtr; + for (int i=0;im_escapeIndexOrTriangleIndex; + m_quantizedContiguousNodes[i].m_quantizedAabbMax[0] = memPtr->m_quantizedAabbMax[0]; + m_quantizedContiguousNodes[i].m_quantizedAabbMax[1] = memPtr->m_quantizedAabbMax[1]; + m_quantizedContiguousNodes[i].m_quantizedAabbMax[2] = memPtr->m_quantizedAabbMax[2]; + m_quantizedContiguousNodes[i].m_quantizedAabbMin[0] = memPtr->m_quantizedAabbMin[0]; + m_quantizedContiguousNodes[i].m_quantizedAabbMin[1] = memPtr->m_quantizedAabbMin[1]; + m_quantizedContiguousNodes[i].m_quantizedAabbMin[2] = memPtr->m_quantizedAabbMin[2]; + } + } + } + + m_traversalMode = btTraversalMode(quantizedBvhFloatData.m_traversalMode); + + { + int numElem = quantizedBvhFloatData.m_numSubtreeHeaders; + m_SubtreeHeaders.resize(numElem); + if (numElem) + { + btBvhSubtreeInfoData* memPtr = quantizedBvhFloatData.m_subTreeInfoPtr; + for (int i=0;im_quantizedAabbMax[0] ; + m_SubtreeHeaders[i].m_quantizedAabbMax[1] = memPtr->m_quantizedAabbMax[1]; + m_SubtreeHeaders[i].m_quantizedAabbMax[2] = memPtr->m_quantizedAabbMax[2]; + m_SubtreeHeaders[i].m_quantizedAabbMin[0] = memPtr->m_quantizedAabbMin[0]; + m_SubtreeHeaders[i].m_quantizedAabbMin[1] = memPtr->m_quantizedAabbMin[1]; + m_SubtreeHeaders[i].m_quantizedAabbMin[2] = memPtr->m_quantizedAabbMin[2]; + m_SubtreeHeaders[i].m_rootNodeIndex = memPtr->m_rootNodeIndex; + m_SubtreeHeaders[i].m_subtreeSize = memPtr->m_subtreeSize; + } + } + } +} + +void btQuantizedBvh::deSerializeDouble(struct btQuantizedBvhDoubleData& quantizedBvhDoubleData) +{ + m_bvhAabbMax.deSerializeDouble(quantizedBvhDoubleData.m_bvhAabbMax); + m_bvhAabbMin.deSerializeDouble(quantizedBvhDoubleData.m_bvhAabbMin); + m_bvhQuantization.deSerializeDouble(quantizedBvhDoubleData.m_bvhQuantization); + + m_curNodeIndex = quantizedBvhDoubleData.m_curNodeIndex; + m_useQuantization = quantizedBvhDoubleData.m_useQuantization!=0; + + { + int numElem = quantizedBvhDoubleData.m_numContiguousLeafNodes; + m_contiguousNodes.resize(numElem); + + if (numElem) + { + btOptimizedBvhNodeDoubleData* memPtr = quantizedBvhDoubleData.m_contiguousNodesPtr; + + for (int i=0;im_aabbMaxOrg); + m_contiguousNodes[i].m_aabbMinOrg.deSerializeDouble(memPtr->m_aabbMinOrg); + m_contiguousNodes[i].m_escapeIndex = memPtr->m_escapeIndex; + m_contiguousNodes[i].m_subPart = memPtr->m_subPart; + m_contiguousNodes[i].m_triangleIndex = memPtr->m_triangleIndex; + } + } + } + + { + int numElem = quantizedBvhDoubleData.m_numQuantizedContiguousNodes; + m_quantizedContiguousNodes.resize(numElem); + + if (numElem) + { + btQuantizedBvhNodeData* memPtr = quantizedBvhDoubleData.m_quantizedContiguousNodesPtr; + for (int i=0;im_escapeIndexOrTriangleIndex; + m_quantizedContiguousNodes[i].m_quantizedAabbMax[0] = memPtr->m_quantizedAabbMax[0]; + m_quantizedContiguousNodes[i].m_quantizedAabbMax[1] = memPtr->m_quantizedAabbMax[1]; + m_quantizedContiguousNodes[i].m_quantizedAabbMax[2] = memPtr->m_quantizedAabbMax[2]; + m_quantizedContiguousNodes[i].m_quantizedAabbMin[0] = memPtr->m_quantizedAabbMin[0]; + m_quantizedContiguousNodes[i].m_quantizedAabbMin[1] = memPtr->m_quantizedAabbMin[1]; + m_quantizedContiguousNodes[i].m_quantizedAabbMin[2] = memPtr->m_quantizedAabbMin[2]; + } + } + } + + m_traversalMode = btTraversalMode(quantizedBvhDoubleData.m_traversalMode); + + { + int numElem = quantizedBvhDoubleData.m_numSubtreeHeaders; + m_SubtreeHeaders.resize(numElem); + if (numElem) + { + btBvhSubtreeInfoData* memPtr = quantizedBvhDoubleData.m_subTreeInfoPtr; + for (int i=0;im_quantizedAabbMax[0] ; + m_SubtreeHeaders[i].m_quantizedAabbMax[1] = memPtr->m_quantizedAabbMax[1]; + m_SubtreeHeaders[i].m_quantizedAabbMax[2] = memPtr->m_quantizedAabbMax[2]; + m_SubtreeHeaders[i].m_quantizedAabbMin[0] = memPtr->m_quantizedAabbMin[0]; + m_SubtreeHeaders[i].m_quantizedAabbMin[1] = memPtr->m_quantizedAabbMin[1]; + m_SubtreeHeaders[i].m_quantizedAabbMin[2] = memPtr->m_quantizedAabbMin[2]; + m_SubtreeHeaders[i].m_rootNodeIndex = memPtr->m_rootNodeIndex; + m_SubtreeHeaders[i].m_subtreeSize = memPtr->m_subtreeSize; + } + } + } + +} + + + +///fills the dataBuffer and returns the struct name (and 0 on failure) +const char* btQuantizedBvh::serialize(void* dataBuffer, btSerializer* serializer) const +{ + btQuantizedBvhData* quantizedData = (btQuantizedBvhData*)dataBuffer; + + m_bvhAabbMax.serialize(quantizedData->m_bvhAabbMax); + m_bvhAabbMin.serialize(quantizedData->m_bvhAabbMin); + m_bvhQuantization.serialize(quantizedData->m_bvhQuantization); + + quantizedData->m_curNodeIndex = m_curNodeIndex; + quantizedData->m_useQuantization = m_useQuantization; + + quantizedData->m_numContiguousLeafNodes = m_contiguousNodes.size(); + quantizedData->m_contiguousNodesPtr = (btOptimizedBvhNodeData*) (m_contiguousNodes.size() ? serializer->getUniquePointer((void*)&m_contiguousNodes[0]) : 0); + if (quantizedData->m_contiguousNodesPtr) + { + int sz = sizeof(btOptimizedBvhNodeData); + int numElem = m_contiguousNodes.size(); + btChunk* chunk = serializer->allocate(sz,numElem); + btOptimizedBvhNodeData* memPtr = (btOptimizedBvhNodeData*)chunk->m_oldPtr; + for (int i=0;im_aabbMaxOrg); + m_contiguousNodes[i].m_aabbMinOrg.serialize(memPtr->m_aabbMinOrg); + memPtr->m_escapeIndex = m_contiguousNodes[i].m_escapeIndex; + memPtr->m_subPart = m_contiguousNodes[i].m_subPart; + memPtr->m_triangleIndex = m_contiguousNodes[i].m_triangleIndex; + } + serializer->finalizeChunk(chunk,"btOptimizedBvhNodeData",BT_ARRAY_CODE,(void*)&m_contiguousNodes[0]); + } + + quantizedData->m_numQuantizedContiguousNodes = m_quantizedContiguousNodes.size(); +// printf("quantizedData->m_numQuantizedContiguousNodes=%d\n",quantizedData->m_numQuantizedContiguousNodes); + quantizedData->m_quantizedContiguousNodesPtr =(btQuantizedBvhNodeData*) (m_quantizedContiguousNodes.size() ? serializer->getUniquePointer((void*)&m_quantizedContiguousNodes[0]) : 0); + if (quantizedData->m_quantizedContiguousNodesPtr) + { + int sz = sizeof(btQuantizedBvhNodeData); + int numElem = m_quantizedContiguousNodes.size(); + btChunk* chunk = serializer->allocate(sz,numElem); + btQuantizedBvhNodeData* memPtr = (btQuantizedBvhNodeData*)chunk->m_oldPtr; + for (int i=0;im_escapeIndexOrTriangleIndex = m_quantizedContiguousNodes[i].m_escapeIndexOrTriangleIndex; + memPtr->m_quantizedAabbMax[0] = m_quantizedContiguousNodes[i].m_quantizedAabbMax[0]; + memPtr->m_quantizedAabbMax[1] = m_quantizedContiguousNodes[i].m_quantizedAabbMax[1]; + memPtr->m_quantizedAabbMax[2] = m_quantizedContiguousNodes[i].m_quantizedAabbMax[2]; + memPtr->m_quantizedAabbMin[0] = m_quantizedContiguousNodes[i].m_quantizedAabbMin[0]; + memPtr->m_quantizedAabbMin[1] = m_quantizedContiguousNodes[i].m_quantizedAabbMin[1]; + memPtr->m_quantizedAabbMin[2] = m_quantizedContiguousNodes[i].m_quantizedAabbMin[2]; + } + serializer->finalizeChunk(chunk,"btQuantizedBvhNodeData",BT_ARRAY_CODE,(void*)&m_quantizedContiguousNodes[0]); + } + + quantizedData->m_traversalMode = int(m_traversalMode); + quantizedData->m_numSubtreeHeaders = m_SubtreeHeaders.size(); + + quantizedData->m_subTreeInfoPtr = (btBvhSubtreeInfoData*) (m_SubtreeHeaders.size() ? serializer->getUniquePointer((void*)&m_SubtreeHeaders[0]) : 0); + if (quantizedData->m_subTreeInfoPtr) + { + int sz = sizeof(btBvhSubtreeInfoData); + int numElem = m_SubtreeHeaders.size(); + btChunk* chunk = serializer->allocate(sz,numElem); + btBvhSubtreeInfoData* memPtr = (btBvhSubtreeInfoData*)chunk->m_oldPtr; + for (int i=0;im_quantizedAabbMax[0] = m_SubtreeHeaders[i].m_quantizedAabbMax[0]; + memPtr->m_quantizedAabbMax[1] = m_SubtreeHeaders[i].m_quantizedAabbMax[1]; + memPtr->m_quantizedAabbMax[2] = m_SubtreeHeaders[i].m_quantizedAabbMax[2]; + memPtr->m_quantizedAabbMin[0] = m_SubtreeHeaders[i].m_quantizedAabbMin[0]; + memPtr->m_quantizedAabbMin[1] = m_SubtreeHeaders[i].m_quantizedAabbMin[1]; + memPtr->m_quantizedAabbMin[2] = m_SubtreeHeaders[i].m_quantizedAabbMin[2]; + + memPtr->m_rootNodeIndex = m_SubtreeHeaders[i].m_rootNodeIndex; + memPtr->m_subtreeSize = m_SubtreeHeaders[i].m_subtreeSize; + } + serializer->finalizeChunk(chunk,"btBvhSubtreeInfoData",BT_ARRAY_CODE,(void*)&m_SubtreeHeaders[0]); + } + return btQuantizedBvhDataName; +} + + + + + diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btQuantizedBvh.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btQuantizedBvh.h new file mode 100644 index 00000000000..aa30d43a025 --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btQuantizedBvh.h @@ -0,0 +1,579 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef QUANTIZED_BVH_H +#define QUANTIZED_BVH_H + +class btSerializer; + +//#define DEBUG_CHECK_DEQUANTIZATION 1 +#ifdef DEBUG_CHECK_DEQUANTIZATION +#ifdef __SPU__ +#define printf spu_printf +#endif //__SPU__ + +#include +#include +#endif //DEBUG_CHECK_DEQUANTIZATION + +#include "LinearMath/btVector3.h" +#include "LinearMath/btAlignedAllocator.h" + +#ifdef BT_USE_DOUBLE_PRECISION +#define btQuantizedBvhData btQuantizedBvhDoubleData +#define btOptimizedBvhNodeData btOptimizedBvhNodeDoubleData +#define btQuantizedBvhDataName "btQuantizedBvhDoubleData" +#else +#define btQuantizedBvhData btQuantizedBvhFloatData +#define btOptimizedBvhNodeData btOptimizedBvhNodeFloatData +#define btQuantizedBvhDataName "btQuantizedBvhFloatData" +#endif + + + +//http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/vclrf__m128.asp + + +//Note: currently we have 16 bytes per quantized node +#define MAX_SUBTREE_SIZE_IN_BYTES 2048 + +// 10 gives the potential for 1024 parts, with at most 2^21 (2097152) (minus one +// actually) triangles each (since the sign bit is reserved +#define MAX_NUM_PARTS_IN_BITS 10 + +///btQuantizedBvhNode is a compressed aabb node, 16 bytes. +///Node can be used for leafnode or internal node. Leafnodes can point to 32-bit triangle index (non-negative range). +ATTRIBUTE_ALIGNED16 (struct) btQuantizedBvhNode +{ + BT_DECLARE_ALIGNED_ALLOCATOR(); + + //12 bytes + unsigned short int m_quantizedAabbMin[3]; + unsigned short int m_quantizedAabbMax[3]; + //4 bytes + int m_escapeIndexOrTriangleIndex; + + bool isLeafNode() const + { + //skipindex is negative (internal node), triangleindex >=0 (leafnode) + return (m_escapeIndexOrTriangleIndex >= 0); + } + int getEscapeIndex() const + { + btAssert(!isLeafNode()); + return -m_escapeIndexOrTriangleIndex; + } + int getTriangleIndex() const + { + btAssert(isLeafNode()); + // Get only the lower bits where the triangle index is stored + return (m_escapeIndexOrTriangleIndex&~((~0)<<(31-MAX_NUM_PARTS_IN_BITS))); + } + int getPartId() const + { + btAssert(isLeafNode()); + // Get only the highest bits where the part index is stored + return (m_escapeIndexOrTriangleIndex>>(31-MAX_NUM_PARTS_IN_BITS)); + } +} +; + +/// btOptimizedBvhNode contains both internal and leaf node information. +/// Total node size is 44 bytes / node. You can use the compressed version of 16 bytes. +ATTRIBUTE_ALIGNED16 (struct) btOptimizedBvhNode +{ + BT_DECLARE_ALIGNED_ALLOCATOR(); + + //32 bytes + btVector3 m_aabbMinOrg; + btVector3 m_aabbMaxOrg; + + //4 + int m_escapeIndex; + + //8 + //for child nodes + int m_subPart; + int m_triangleIndex; + int m_padding[5];//bad, due to alignment + + +}; + + +///btBvhSubtreeInfo provides info to gather a subtree of limited size +ATTRIBUTE_ALIGNED16(class) btBvhSubtreeInfo +{ +public: + BT_DECLARE_ALIGNED_ALLOCATOR(); + + //12 bytes + unsigned short int m_quantizedAabbMin[3]; + unsigned short int m_quantizedAabbMax[3]; + //4 bytes, points to the root of the subtree + int m_rootNodeIndex; + //4 bytes + int m_subtreeSize; + int m_padding[3]; + + btBvhSubtreeInfo() + { + //memset(&m_padding[0], 0, sizeof(m_padding)); + } + + + void setAabbFromQuantizeNode(const btQuantizedBvhNode& quantizedNode) + { + m_quantizedAabbMin[0] = quantizedNode.m_quantizedAabbMin[0]; + m_quantizedAabbMin[1] = quantizedNode.m_quantizedAabbMin[1]; + m_quantizedAabbMin[2] = quantizedNode.m_quantizedAabbMin[2]; + m_quantizedAabbMax[0] = quantizedNode.m_quantizedAabbMax[0]; + m_quantizedAabbMax[1] = quantizedNode.m_quantizedAabbMax[1]; + m_quantizedAabbMax[2] = quantizedNode.m_quantizedAabbMax[2]; + } +} +; + + +class btNodeOverlapCallback +{ +public: + virtual ~btNodeOverlapCallback() {}; + + virtual void processNode(int subPart, int triangleIndex) = 0; +}; + +#include "LinearMath/btAlignedAllocator.h" +#include "LinearMath/btAlignedObjectArray.h" + + + +///for code readability: +typedef btAlignedObjectArray NodeArray; +typedef btAlignedObjectArray QuantizedNodeArray; +typedef btAlignedObjectArray BvhSubtreeInfoArray; + + +///The btQuantizedBvh class stores an AABB tree that can be quickly traversed on CPU and Cell SPU. +///It is used by the btBvhTriangleMeshShape as midphase, and by the btMultiSapBroadphase. +///It is recommended to use quantization for better performance and lower memory requirements. +ATTRIBUTE_ALIGNED16(class) btQuantizedBvh +{ +public: + enum btTraversalMode + { + TRAVERSAL_STACKLESS = 0, + TRAVERSAL_STACKLESS_CACHE_FRIENDLY, + TRAVERSAL_RECURSIVE + }; + +protected: + + + btVector3 m_bvhAabbMin; + btVector3 m_bvhAabbMax; + btVector3 m_bvhQuantization; + + int m_bulletVersion; //for serialization versioning. It could also be used to detect endianess. + + int m_curNodeIndex; + //quantization data + bool m_useQuantization; + + + + NodeArray m_leafNodes; + NodeArray m_contiguousNodes; + QuantizedNodeArray m_quantizedLeafNodes; + QuantizedNodeArray m_quantizedContiguousNodes; + + btTraversalMode m_traversalMode; + BvhSubtreeInfoArray m_SubtreeHeaders; + + //This is only used for serialization so we don't have to add serialization directly to btAlignedObjectArray + mutable int m_subtreeHeaderCount; + + + + + + ///two versions, one for quantized and normal nodes. This allows code-reuse while maintaining readability (no template/macro!) + ///this might be refactored into a virtual, it is usually not calculated at run-time + void setInternalNodeAabbMin(int nodeIndex, const btVector3& aabbMin) + { + if (m_useQuantization) + { + quantize(&m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[0] ,aabbMin,0); + } else + { + m_contiguousNodes[nodeIndex].m_aabbMinOrg = aabbMin; + + } + } + void setInternalNodeAabbMax(int nodeIndex,const btVector3& aabbMax) + { + if (m_useQuantization) + { + quantize(&m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[0],aabbMax,1); + } else + { + m_contiguousNodes[nodeIndex].m_aabbMaxOrg = aabbMax; + } + } + + btVector3 getAabbMin(int nodeIndex) const + { + if (m_useQuantization) + { + return unQuantize(&m_quantizedLeafNodes[nodeIndex].m_quantizedAabbMin[0]); + } + //non-quantized + return m_leafNodes[nodeIndex].m_aabbMinOrg; + + } + btVector3 getAabbMax(int nodeIndex) const + { + if (m_useQuantization) + { + return unQuantize(&m_quantizedLeafNodes[nodeIndex].m_quantizedAabbMax[0]); + } + //non-quantized + return m_leafNodes[nodeIndex].m_aabbMaxOrg; + + } + + + void setInternalNodeEscapeIndex(int nodeIndex, int escapeIndex) + { + if (m_useQuantization) + { + m_quantizedContiguousNodes[nodeIndex].m_escapeIndexOrTriangleIndex = -escapeIndex; + } + else + { + m_contiguousNodes[nodeIndex].m_escapeIndex = escapeIndex; + } + + } + + void mergeInternalNodeAabb(int nodeIndex,const btVector3& newAabbMin,const btVector3& newAabbMax) + { + if (m_useQuantization) + { + unsigned short int quantizedAabbMin[3]; + unsigned short int quantizedAabbMax[3]; + quantize(quantizedAabbMin,newAabbMin,0); + quantize(quantizedAabbMax,newAabbMax,1); + for (int i=0;i<3;i++) + { + if (m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[i] > quantizedAabbMin[i]) + m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[i] = quantizedAabbMin[i]; + + if (m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[i] < quantizedAabbMax[i]) + m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[i] = quantizedAabbMax[i]; + + } + } else + { + //non-quantized + m_contiguousNodes[nodeIndex].m_aabbMinOrg.setMin(newAabbMin); + m_contiguousNodes[nodeIndex].m_aabbMaxOrg.setMax(newAabbMax); + } + } + + void swapLeafNodes(int firstIndex,int secondIndex); + + void assignInternalNodeFromLeafNode(int internalNode,int leafNodeIndex); + +protected: + + + + void buildTree (int startIndex,int endIndex); + + int calcSplittingAxis(int startIndex,int endIndex); + + int sortAndCalcSplittingIndex(int startIndex,int endIndex,int splitAxis); + + void walkStacklessTree(btNodeOverlapCallback* nodeCallback,const btVector3& aabbMin,const btVector3& aabbMax) const; + + void walkStacklessQuantizedTreeAgainstRay(btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin, const btVector3& aabbMax, int startNodeIndex,int endNodeIndex) const; + void walkStacklessQuantizedTree(btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax,int startNodeIndex,int endNodeIndex) const; + void walkStacklessTreeAgainstRay(btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin, const btVector3& aabbMax, int startNodeIndex,int endNodeIndex) const; + + ///tree traversal designed for small-memory processors like PS3 SPU + void walkStacklessQuantizedTreeCacheFriendly(btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax) const; + + ///use the 16-byte stackless 'skipindex' node tree to do a recursive traversal + void walkRecursiveQuantizedTreeAgainstQueryAabb(const btQuantizedBvhNode* currentNode,btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax) const; + + ///use the 16-byte stackless 'skipindex' node tree to do a recursive traversal + void walkRecursiveQuantizedTreeAgainstQuantizedTree(const btQuantizedBvhNode* treeNodeA,const btQuantizedBvhNode* treeNodeB,btNodeOverlapCallback* nodeCallback) const; + + + + + void updateSubtreeHeaders(int leftChildNodexIndex,int rightChildNodexIndex); + +public: + + BT_DECLARE_ALIGNED_ALLOCATOR(); + + btQuantizedBvh(); + + virtual ~btQuantizedBvh(); + + + ///***************************************** expert/internal use only ************************* + void setQuantizationValues(const btVector3& bvhAabbMin,const btVector3& bvhAabbMax,btScalar quantizationMargin=btScalar(1.0)); + QuantizedNodeArray& getLeafNodeArray() { return m_quantizedLeafNodes; } + ///buildInternal is expert use only: assumes that setQuantizationValues and LeafNodeArray are initialized + void buildInternal(); + ///***************************************** expert/internal use only ************************* + + void reportAabbOverlappingNodex(btNodeOverlapCallback* nodeCallback,const btVector3& aabbMin,const btVector3& aabbMax) const; + void reportRayOverlappingNodex (btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget) const; + void reportBoxCastOverlappingNodex(btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin,const btVector3& aabbMax) const; + + SIMD_FORCE_INLINE void quantize(unsigned short* out, const btVector3& point,int isMax) const + { + + btAssert(m_useQuantization); + + btAssert(point.getX() <= m_bvhAabbMax.getX()); + btAssert(point.getY() <= m_bvhAabbMax.getY()); + btAssert(point.getZ() <= m_bvhAabbMax.getZ()); + + btAssert(point.getX() >= m_bvhAabbMin.getX()); + btAssert(point.getY() >= m_bvhAabbMin.getY()); + btAssert(point.getZ() >= m_bvhAabbMin.getZ()); + + btVector3 v = (point - m_bvhAabbMin) * m_bvhQuantization; + ///Make sure rounding is done in a way that unQuantize(quantizeWithClamp(...)) is conservative + ///end-points always set the first bit, so that they are sorted properly (so that neighbouring AABBs overlap properly) + ///@todo: double-check this + if (isMax) + { + out[0] = (unsigned short) (((unsigned short)(v.getX()+btScalar(1.)) | 1)); + out[1] = (unsigned short) (((unsigned short)(v.getY()+btScalar(1.)) | 1)); + out[2] = (unsigned short) (((unsigned short)(v.getZ()+btScalar(1.)) | 1)); + } else + { + out[0] = (unsigned short) (((unsigned short)(v.getX()) & 0xfffe)); + out[1] = (unsigned short) (((unsigned short)(v.getY()) & 0xfffe)); + out[2] = (unsigned short) (((unsigned short)(v.getZ()) & 0xfffe)); + } + + +#ifdef DEBUG_CHECK_DEQUANTIZATION + btVector3 newPoint = unQuantize(out); + if (isMax) + { + if (newPoint.getX() < point.getX()) + { + printf("unconservative X, diffX = %f, oldX=%f,newX=%f\n",newPoint.getX()-point.getX(), newPoint.getX(),point.getX()); + } + if (newPoint.getY() < point.getY()) + { + printf("unconservative Y, diffY = %f, oldY=%f,newY=%f\n",newPoint.getY()-point.getY(), newPoint.getY(),point.getY()); + } + if (newPoint.getZ() < point.getZ()) + { + + printf("unconservative Z, diffZ = %f, oldZ=%f,newZ=%f\n",newPoint.getZ()-point.getZ(), newPoint.getZ(),point.getZ()); + } + } else + { + if (newPoint.getX() > point.getX()) + { + printf("unconservative X, diffX = %f, oldX=%f,newX=%f\n",newPoint.getX()-point.getX(), newPoint.getX(),point.getX()); + } + if (newPoint.getY() > point.getY()) + { + printf("unconservative Y, diffY = %f, oldY=%f,newY=%f\n",newPoint.getY()-point.getY(), newPoint.getY(),point.getY()); + } + if (newPoint.getZ() > point.getZ()) + { + printf("unconservative Z, diffZ = %f, oldZ=%f,newZ=%f\n",newPoint.getZ()-point.getZ(), newPoint.getZ(),point.getZ()); + } + } +#endif //DEBUG_CHECK_DEQUANTIZATION + + } + + + SIMD_FORCE_INLINE void quantizeWithClamp(unsigned short* out, const btVector3& point2,int isMax) const + { + + btAssert(m_useQuantization); + + btVector3 clampedPoint(point2); + clampedPoint.setMax(m_bvhAabbMin); + clampedPoint.setMin(m_bvhAabbMax); + + quantize(out,clampedPoint,isMax); + + } + + SIMD_FORCE_INLINE btVector3 unQuantize(const unsigned short* vecIn) const + { + btVector3 vecOut; + vecOut.setValue( + (btScalar)(vecIn[0]) / (m_bvhQuantization.getX()), + (btScalar)(vecIn[1]) / (m_bvhQuantization.getY()), + (btScalar)(vecIn[2]) / (m_bvhQuantization.getZ())); + vecOut += m_bvhAabbMin; + return vecOut; + } + + ///setTraversalMode let's you choose between stackless, recursive or stackless cache friendly tree traversal. Note this is only implemented for quantized trees. + void setTraversalMode(btTraversalMode traversalMode) + { + m_traversalMode = traversalMode; + } + + + SIMD_FORCE_INLINE QuantizedNodeArray& getQuantizedNodeArray() + { + return m_quantizedContiguousNodes; + } + + + SIMD_FORCE_INLINE BvhSubtreeInfoArray& getSubtreeInfoArray() + { + return m_SubtreeHeaders; + } + +//////////////////////////////////////////////////////////////////// + + /////Calculate space needed to store BVH for serialization + unsigned calculateSerializeBufferSize() const; + + /// Data buffer MUST be 16 byte aligned + virtual bool serialize(void *o_alignedDataBuffer, unsigned i_dataBufferSize, bool i_swapEndian) const; + + ///deSerializeInPlace loads and initializes a BVH from a buffer in memory 'in place' + static btQuantizedBvh *deSerializeInPlace(void *i_alignedDataBuffer, unsigned int i_dataBufferSize, bool i_swapEndian); + + static unsigned int getAlignmentSerializationPadding(); +////////////////////////////////////////////////////////////////////// + + + virtual int calculateSerializeBufferSizeNew() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; + + virtual void deSerializeFloat(struct btQuantizedBvhFloatData& quantizedBvhFloatData); + + virtual void deSerializeDouble(struct btQuantizedBvhDoubleData& quantizedBvhDoubleData); + + +//////////////////////////////////////////////////////////////////// + + SIMD_FORCE_INLINE bool isQuantized() + { + return m_useQuantization; + } + +private: + // Special "copy" constructor that allows for in-place deserialization + // Prevents btVector3's default constructor from being called, but doesn't inialize much else + // ownsMemory should most likely be false if deserializing, and if you are not, don't call this (it also changes the function signature, which we need) + btQuantizedBvh(btQuantizedBvh &other, bool ownsMemory); + +} +; + + +struct btBvhSubtreeInfoData +{ + int m_rootNodeIndex; + int m_subtreeSize; + unsigned short m_quantizedAabbMin[3]; + unsigned short m_quantizedAabbMax[3]; +}; + +struct btOptimizedBvhNodeFloatData +{ + btVector3FloatData m_aabbMinOrg; + btVector3FloatData m_aabbMaxOrg; + int m_escapeIndex; + int m_subPart; + int m_triangleIndex; + char m_pad[4]; +}; + +struct btOptimizedBvhNodeDoubleData +{ + btVector3DoubleData m_aabbMinOrg; + btVector3DoubleData m_aabbMaxOrg; + int m_escapeIndex; + int m_subPart; + int m_triangleIndex; + char m_pad[4]; +}; + + +struct btQuantizedBvhNodeData +{ + unsigned short m_quantizedAabbMin[3]; + unsigned short m_quantizedAabbMax[3]; + int m_escapeIndexOrTriangleIndex; +}; + +struct btQuantizedBvhFloatData +{ + btVector3FloatData m_bvhAabbMin; + btVector3FloatData m_bvhAabbMax; + btVector3FloatData m_bvhQuantization; + int m_curNodeIndex; + int m_useQuantization; + int m_numContiguousLeafNodes; + int m_numQuantizedContiguousNodes; + btOptimizedBvhNodeFloatData *m_contiguousNodesPtr; + btQuantizedBvhNodeData *m_quantizedContiguousNodesPtr; + btBvhSubtreeInfoData *m_subTreeInfoPtr; + int m_traversalMode; + int m_numSubtreeHeaders; + +}; + +struct btQuantizedBvhDoubleData +{ + btVector3DoubleData m_bvhAabbMin; + btVector3DoubleData m_bvhAabbMax; + btVector3DoubleData m_bvhQuantization; + int m_curNodeIndex; + int m_useQuantization; + int m_numContiguousLeafNodes; + int m_numQuantizedContiguousNodes; + btOptimizedBvhNodeDoubleData *m_contiguousNodesPtr; + btQuantizedBvhNodeData *m_quantizedContiguousNodesPtr; + + int m_traversalMode; + int m_numSubtreeHeaders; + btBvhSubtreeInfoData *m_subTreeInfoPtr; +}; + + +SIMD_FORCE_INLINE int btQuantizedBvh::calculateSerializeBufferSizeNew() const +{ + return sizeof(btQuantizedBvhData); +} + + + +#endif //QUANTIZED_BVH_H diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp new file mode 100644 index 00000000000..752fcd0fef2 --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp @@ -0,0 +1,349 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btSimpleBroadphase.h" +#include "BulletCollision/BroadphaseCollision/btDispatcher.h" +#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" + +#include "LinearMath/btVector3.h" +#include "LinearMath/btTransform.h" +#include "LinearMath/btMatrix3x3.h" +#include "LinearMath/btAabbUtil2.h" + +#include + +extern int gOverlappingPairs; + +void btSimpleBroadphase::validate() +{ + for (int i=0;i~btOverlappingPairCache(); + btAlignedFree(m_pairCache); + } +} + + +btBroadphaseProxy* btSimpleBroadphase::createProxy( const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr ,short int collisionFilterGroup,short int collisionFilterMask, btDispatcher* /*dispatcher*/,void* multiSapProxy) +{ + if (m_numHandles >= m_maxHandles) + { + btAssert(0); + return 0; //should never happen, but don't let the game crash ;-) + } + btAssert(aabbMin[0]<= aabbMax[0] && aabbMin[1]<= aabbMax[1] && aabbMin[2]<= aabbMax[2]); + + int newHandleIndex = allocHandle(); + btSimpleBroadphaseProxy* proxy = new (&m_pHandles[newHandleIndex])btSimpleBroadphaseProxy(aabbMin,aabbMax,shapeType,userPtr,collisionFilterGroup,collisionFilterMask,multiSapProxy); + + return proxy; +} + +class RemovingOverlapCallback : public btOverlapCallback +{ +protected: + virtual bool processOverlap(btBroadphasePair& pair) + { + (void)pair; + btAssert(0); + return false; + } +}; + +class RemovePairContainingProxy +{ + + btBroadphaseProxy* m_targetProxy; + public: + virtual ~RemovePairContainingProxy() + { + } +protected: + virtual bool processOverlap(btBroadphasePair& pair) + { + btSimpleBroadphaseProxy* proxy0 = static_cast(pair.m_pProxy0); + btSimpleBroadphaseProxy* proxy1 = static_cast(pair.m_pProxy1); + + return ((m_targetProxy == proxy0 || m_targetProxy == proxy1)); + }; +}; + +void btSimpleBroadphase::destroyProxy(btBroadphaseProxy* proxyOrg,btDispatcher* dispatcher) +{ + + btSimpleBroadphaseProxy* proxy0 = static_cast(proxyOrg); + freeHandle(proxy0); + + m_pairCache->removeOverlappingPairsContainingProxy(proxyOrg,dispatcher); + + //validate(); + +} + +void btSimpleBroadphase::getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const +{ + const btSimpleBroadphaseProxy* sbp = getSimpleProxyFromProxy(proxy); + aabbMin = sbp->m_aabbMin; + aabbMax = sbp->m_aabbMax; +} + +void btSimpleBroadphase::setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax, btDispatcher* /*dispatcher*/) +{ + btSimpleBroadphaseProxy* sbp = getSimpleProxyFromProxy(proxy); + sbp->m_aabbMin = aabbMin; + sbp->m_aabbMax = aabbMax; +} + +void btSimpleBroadphase::rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin,const btVector3& aabbMax) +{ + for (int i=0; i <= m_LastHandleIndex; i++) + { + btSimpleBroadphaseProxy* proxy = &m_pHandles[i]; + if(!proxy->m_clientObject) + { + continue; + } + rayCallback.process(proxy); + } +} + + +void btSimpleBroadphase::aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback) +{ + for (int i=0; i <= m_LastHandleIndex; i++) + { + btSimpleBroadphaseProxy* proxy = &m_pHandles[i]; + if(!proxy->m_clientObject) + { + continue; + } + if (TestAabbAgainstAabb2(aabbMin,aabbMax,proxy->m_aabbMin,proxy->m_aabbMax)) + { + callback.process(proxy); + } + } +} + + + + + + + +bool btSimpleBroadphase::aabbOverlap(btSimpleBroadphaseProxy* proxy0,btSimpleBroadphaseProxy* proxy1) +{ + return proxy0->m_aabbMin[0] <= proxy1->m_aabbMax[0] && proxy1->m_aabbMin[0] <= proxy0->m_aabbMax[0] && + proxy0->m_aabbMin[1] <= proxy1->m_aabbMax[1] && proxy1->m_aabbMin[1] <= proxy0->m_aabbMax[1] && + proxy0->m_aabbMin[2] <= proxy1->m_aabbMax[2] && proxy1->m_aabbMin[2] <= proxy0->m_aabbMax[2]; + +} + + + +//then remove non-overlapping ones +class CheckOverlapCallback : public btOverlapCallback +{ +public: + virtual bool processOverlap(btBroadphasePair& pair) + { + return (!btSimpleBroadphase::aabbOverlap(static_cast(pair.m_pProxy0),static_cast(pair.m_pProxy1))); + } +}; + +void btSimpleBroadphase::calculateOverlappingPairs(btDispatcher* dispatcher) +{ + //first check for new overlapping pairs + int i,j; + if (m_numHandles >= 0) + { + int new_largest_index = -1; + for (i=0; i <= m_LastHandleIndex; i++) + { + btSimpleBroadphaseProxy* proxy0 = &m_pHandles[i]; + if(!proxy0->m_clientObject) + { + continue; + } + new_largest_index = i; + for (j=i+1; j <= m_LastHandleIndex; j++) + { + btSimpleBroadphaseProxy* proxy1 = &m_pHandles[j]; + btAssert(proxy0 != proxy1); + if(!proxy1->m_clientObject) + { + continue; + } + + btSimpleBroadphaseProxy* p0 = getSimpleProxyFromProxy(proxy0); + btSimpleBroadphaseProxy* p1 = getSimpleProxyFromProxy(proxy1); + + if (aabbOverlap(p0,p1)) + { + if ( !m_pairCache->findPair(proxy0,proxy1)) + { + m_pairCache->addOverlappingPair(proxy0,proxy1); + } + } else + { + if (!m_pairCache->hasDeferredRemoval()) + { + if ( m_pairCache->findPair(proxy0,proxy1)) + { + m_pairCache->removeOverlappingPair(proxy0,proxy1,dispatcher); + } + } + } + } + } + + m_LastHandleIndex = new_largest_index; + + if (m_ownsPairCache && m_pairCache->hasDeferredRemoval()) + { + + btBroadphasePairArray& overlappingPairArray = m_pairCache->getOverlappingPairArray(); + + //perform a sort, to find duplicates and to sort 'invalid' pairs to the end + overlappingPairArray.quickSort(btBroadphasePairSortPredicate()); + + overlappingPairArray.resize(overlappingPairArray.size() - m_invalidPair); + m_invalidPair = 0; + + + btBroadphasePair previousPair; + previousPair.m_pProxy0 = 0; + previousPair.m_pProxy1 = 0; + previousPair.m_algorithm = 0; + + + for (i=0;iprocessOverlap(pair); + } else + { + needsRemoval = true; + } + } else + { + //remove duplicate + needsRemoval = true; + //should have no algorithm + btAssert(!pair.m_algorithm); + } + + if (needsRemoval) + { + m_pairCache->cleanOverlappingPair(pair,dispatcher); + + // m_overlappingPairArray.swap(i,m_overlappingPairArray.size()-1); + // m_overlappingPairArray.pop_back(); + pair.m_pProxy0 = 0; + pair.m_pProxy1 = 0; + m_invalidPair++; + gOverlappingPairs--; + } + + } + + ///if you don't like to skip the invalid pairs in the array, execute following code: +#define CLEAN_INVALID_PAIRS 1 +#ifdef CLEAN_INVALID_PAIRS + + //perform a sort, to sort 'invalid' pairs to the end + overlappingPairArray.quickSort(btBroadphasePairSortPredicate()); + + overlappingPairArray.resize(overlappingPairArray.size() - m_invalidPair); + m_invalidPair = 0; +#endif//CLEAN_INVALID_PAIRS + + } + } +} + + +bool btSimpleBroadphase::testAabbOverlap(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) +{ + btSimpleBroadphaseProxy* p0 = getSimpleProxyFromProxy(proxy0); + btSimpleBroadphaseProxy* p1 = getSimpleProxyFromProxy(proxy1); + return aabbOverlap(p0,p1); +} + +void btSimpleBroadphase::resetPool(btDispatcher* dispatcher) +{ + //not yet +} diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h new file mode 100644 index 00000000000..3e7c7ee3b62 --- /dev/null +++ b/extern/bullet2/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h @@ -0,0 +1,171 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SIMPLE_BROADPHASE_H +#define SIMPLE_BROADPHASE_H + + +#include "btOverlappingPairCache.h" + + +struct btSimpleBroadphaseProxy : public btBroadphaseProxy +{ + int m_nextFree; + +// int m_handleId; + + + btSimpleBroadphaseProxy() {}; + + btSimpleBroadphaseProxy(const btVector3& minpt,const btVector3& maxpt,int shapeType,void* userPtr,short int collisionFilterGroup,short int collisionFilterMask,void* multiSapProxy) + :btBroadphaseProxy(minpt,maxpt,userPtr,collisionFilterGroup,collisionFilterMask,multiSapProxy) + { + (void)shapeType; + } + + + SIMD_FORCE_INLINE void SetNextFree(int next) {m_nextFree = next;} + SIMD_FORCE_INLINE int GetNextFree() const {return m_nextFree;} + + + + +}; + +///The SimpleBroadphase is just a unit-test for btAxisSweep3, bt32BitAxisSweep3, or btDbvtBroadphase, so use those classes instead. +///It is a brute force aabb culling broadphase based on O(n^2) aabb checks +class btSimpleBroadphase : public btBroadphaseInterface +{ + +protected: + + int m_numHandles; // number of active handles + int m_maxHandles; // max number of handles + int m_LastHandleIndex; + + btSimpleBroadphaseProxy* m_pHandles; // handles pool + + void* m_pHandlesRawPtr; + int m_firstFreeHandle; // free handles list + + int allocHandle() + { + btAssert(m_numHandles < m_maxHandles); + int freeHandle = m_firstFreeHandle; + m_firstFreeHandle = m_pHandles[freeHandle].GetNextFree(); + m_numHandles++; + if(freeHandle > m_LastHandleIndex) + { + m_LastHandleIndex = freeHandle; + } + return freeHandle; + } + + void freeHandle(btSimpleBroadphaseProxy* proxy) + { + int handle = int(proxy-m_pHandles); + btAssert(handle >= 0 && handle < m_maxHandles); + if(handle == m_LastHandleIndex) + { + m_LastHandleIndex--; + } + proxy->SetNextFree(m_firstFreeHandle); + m_firstFreeHandle = handle; + + proxy->m_clientObject = 0; + + m_numHandles--; + } + + btOverlappingPairCache* m_pairCache; + bool m_ownsPairCache; + + int m_invalidPair; + + + + inline btSimpleBroadphaseProxy* getSimpleProxyFromProxy(btBroadphaseProxy* proxy) + { + btSimpleBroadphaseProxy* proxy0 = static_cast(proxy); + return proxy0; + } + + inline const btSimpleBroadphaseProxy* getSimpleProxyFromProxy(btBroadphaseProxy* proxy) const + { + const btSimpleBroadphaseProxy* proxy0 = static_cast(proxy); + return proxy0; + } + + ///reset broadphase internal structures, to ensure determinism/reproducability + virtual void resetPool(btDispatcher* dispatcher); + + + void validate(); + +protected: + + + + +public: + btSimpleBroadphase(int maxProxies=16384,btOverlappingPairCache* overlappingPairCache=0); + virtual ~btSimpleBroadphase(); + + + static bool aabbOverlap(btSimpleBroadphaseProxy* proxy0,btSimpleBroadphaseProxy* proxy1); + + + virtual btBroadphaseProxy* createProxy( const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr ,short int collisionFilterGroup,short int collisionFilterMask, btDispatcher* dispatcher,void* multiSapProxy); + + virtual void calculateOverlappingPairs(btDispatcher* dispatcher); + + virtual void destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher); + virtual void setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax, btDispatcher* dispatcher); + virtual void getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const; + + virtual void rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin=btVector3(0,0,0),const btVector3& aabbMax=btVector3(0,0,0)); + virtual void aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback); + + btOverlappingPairCache* getOverlappingPairCache() + { + return m_pairCache; + } + const btOverlappingPairCache* getOverlappingPairCache() const + { + return m_pairCache; + } + + bool testAabbOverlap(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1); + + + ///getAabb returns the axis aligned bounding box in the 'global' coordinate frame + ///will add some transform later + virtual void getBroadphaseAabb(btVector3& aabbMin,btVector3& aabbMax) const + { + aabbMin.setValue(-BT_LARGE_FLOAT,-BT_LARGE_FLOAT,-BT_LARGE_FLOAT); + aabbMax.setValue(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT); + } + + virtual void printStats() + { +// printf("btSimpleBroadphase.h\n"); +// printf("numHandles = %d, maxHandles = %d\n",m_numHandles,m_maxHandles); + } +}; + + + +#endif //SIMPLE_BROADPHASE_H + diff --git a/extern/bullet2/BulletCollision/CMakeLists.txt b/extern/bullet2/BulletCollision/CMakeLists.txt new file mode 100644 index 00000000000..a1159dce466 --- /dev/null +++ b/extern/bullet2/BulletCollision/CMakeLists.txt @@ -0,0 +1,273 @@ +INCLUDE_DIRECTORIES( ${BULLET_PHYSICS_SOURCE_DIR}/src ) + +SET(BulletCollision_SRCS + BroadphaseCollision/btAxisSweep3.cpp + BroadphaseCollision/btBroadphaseProxy.cpp + BroadphaseCollision/btCollisionAlgorithm.cpp + BroadphaseCollision/btDbvt.cpp + BroadphaseCollision/btDbvtBroadphase.cpp + BroadphaseCollision/btDispatcher.cpp + BroadphaseCollision/btMultiSapBroadphase.cpp + BroadphaseCollision/btOverlappingPairCache.cpp + BroadphaseCollision/btQuantizedBvh.cpp + BroadphaseCollision/btSimpleBroadphase.cpp + CollisionDispatch/btActivatingCollisionAlgorithm.cpp + CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp + CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp + CollisionDispatch/btBoxBoxDetector.cpp + CollisionDispatch/btCollisionDispatcher.cpp + CollisionDispatch/btCollisionObject.cpp + CollisionDispatch/btCollisionWorld.cpp + CollisionDispatch/btCompoundCollisionAlgorithm.cpp + CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp + CollisionDispatch/btConvexConvexAlgorithm.cpp + CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp + CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp + CollisionDispatch/btDefaultCollisionConfiguration.cpp + CollisionDispatch/btEmptyCollisionAlgorithm.cpp + CollisionDispatch/btGhostObject.cpp + CollisionDispatch/btInternalEdgeUtility.cpp + CollisionDispatch/btInternalEdgeUtility.h + CollisionDispatch/btManifoldResult.cpp + CollisionDispatch/btSimulationIslandManager.cpp + CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp + CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp + CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp + CollisionDispatch/btUnionFind.cpp + CollisionDispatch/SphereTriangleDetector.cpp + CollisionShapes/btBoxShape.cpp + CollisionShapes/btBox2dShape.cpp + CollisionShapes/btBvhTriangleMeshShape.cpp + CollisionShapes/btCapsuleShape.cpp + CollisionShapes/btCollisionShape.cpp + CollisionShapes/btCompoundShape.cpp + CollisionShapes/btConcaveShape.cpp + CollisionShapes/btConeShape.cpp + CollisionShapes/btConvexHullShape.cpp + CollisionShapes/btConvexInternalShape.cpp + CollisionShapes/btConvexPointCloudShape.cpp + CollisionShapes/btConvexShape.cpp + CollisionShapes/btConvex2dShape.cpp + CollisionShapes/btConvexTriangleMeshShape.cpp + CollisionShapes/btCylinderShape.cpp + CollisionShapes/btEmptyShape.cpp + CollisionShapes/btHeightfieldTerrainShape.cpp + CollisionShapes/btMinkowskiSumShape.cpp + CollisionShapes/btMultimaterialTriangleMeshShape.cpp + CollisionShapes/btMultiSphereShape.cpp + CollisionShapes/btOptimizedBvh.cpp + CollisionShapes/btPolyhedralConvexShape.cpp + CollisionShapes/btScaledBvhTriangleMeshShape.cpp + CollisionShapes/btShapeHull.cpp + CollisionShapes/btSphereShape.cpp + CollisionShapes/btStaticPlaneShape.cpp + CollisionShapes/btStridingMeshInterface.cpp + CollisionShapes/btTetrahedronShape.cpp + CollisionShapes/btTriangleBuffer.cpp + CollisionShapes/btTriangleCallback.cpp + CollisionShapes/btTriangleIndexVertexArray.cpp + CollisionShapes/btTriangleIndexVertexMaterialArray.cpp + CollisionShapes/btTriangleMesh.cpp + CollisionShapes/btTriangleMeshShape.cpp + CollisionShapes/btUniformScalingShape.cpp + Gimpact/btContactProcessing.cpp + Gimpact/btGenericPoolAllocator.cpp + Gimpact/btGImpactBvh.cpp + Gimpact/btGImpactCollisionAlgorithm.cpp + Gimpact/btGImpactQuantizedBvh.cpp + Gimpact/btGImpactShape.cpp + Gimpact/btTriangleShapeEx.cpp + Gimpact/gim_box_set.cpp + Gimpact/gim_contact.cpp + Gimpact/gim_memory.cpp + Gimpact/gim_tri_collision.cpp + NarrowPhaseCollision/btContinuousConvexCollision.cpp + NarrowPhaseCollision/btConvexCast.cpp + NarrowPhaseCollision/btGjkConvexCast.cpp + NarrowPhaseCollision/btGjkEpa2.cpp + NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp + NarrowPhaseCollision/btGjkPairDetector.cpp + NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp + NarrowPhaseCollision/btPersistentManifold.cpp + NarrowPhaseCollision/btRaycastCallback.cpp + NarrowPhaseCollision/btSubSimplexConvexCast.cpp + NarrowPhaseCollision/btVoronoiSimplexSolver.cpp +) + +SET(Root_HDRS + ../btBulletCollisionCommon.h +) +SET(BroadphaseCollision_HDRS + BroadphaseCollision/btAxisSweep3.h + BroadphaseCollision/btBroadphaseInterface.h + BroadphaseCollision/btBroadphaseProxy.h + BroadphaseCollision/btCollisionAlgorithm.h + BroadphaseCollision/btDbvt.h + BroadphaseCollision/btDbvtBroadphase.h + BroadphaseCollision/btDispatcher.h + BroadphaseCollision/btMultiSapBroadphase.h + BroadphaseCollision/btOverlappingPairCache.h + BroadphaseCollision/btOverlappingPairCallback.h + BroadphaseCollision/btQuantizedBvh.h + BroadphaseCollision/btSimpleBroadphase.h +) +SET(CollisionDispatch_HDRS + CollisionDispatch/btActivatingCollisionAlgorithm.h + CollisionDispatch/btBoxBoxCollisionAlgorithm.h + CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h + CollisionDispatch/btBoxBoxDetector.h + CollisionDispatch/btCollisionConfiguration.h + CollisionDispatch/btCollisionCreateFunc.h + CollisionDispatch/btCollisionDispatcher.h + CollisionDispatch/btCollisionObject.h + CollisionDispatch/btCollisionWorld.h + CollisionDispatch/btCompoundCollisionAlgorithm.h + CollisionDispatch/btConvexConcaveCollisionAlgorithm.h + CollisionDispatch/btConvexConvexAlgorithm.h + CollisionDispatch/btConvex2dConvex2dAlgorithm.h + CollisionDispatch/btConvexPlaneCollisionAlgorithm.h + CollisionDispatch/btDefaultCollisionConfiguration.h + CollisionDispatch/btEmptyCollisionAlgorithm.h + CollisionDispatch/btGhostObject.h + CollisionDispatch/btManifoldResult.h + CollisionDispatch/btSimulationIslandManager.h + CollisionDispatch/btSphereBoxCollisionAlgorithm.h + CollisionDispatch/btSphereSphereCollisionAlgorithm.h + CollisionDispatch/btSphereTriangleCollisionAlgorithm.h + CollisionDispatch/btUnionFind.h + CollisionDispatch/SphereTriangleDetector.h +) +SET(CollisionShapes_HDRS + CollisionShapes/btBoxShape.h + CollisionShapes/btBox2dShape.h + CollisionShapes/btBvhTriangleMeshShape.h + CollisionShapes/btCapsuleShape.h + CollisionShapes/btCollisionMargin.h + CollisionShapes/btCollisionShape.h + CollisionShapes/btCompoundShape.h + CollisionShapes/btConcaveShape.h + CollisionShapes/btConeShape.h + CollisionShapes/btConvexHullShape.h + CollisionShapes/btConvexInternalShape.h + CollisionShapes/btConvexPointCloudShape.h + CollisionShapes/btConvexShape.h + CollisionShapes/btConvex2dShape.h + CollisionShapes/btConvexTriangleMeshShape.h + CollisionShapes/btCylinderShape.h + CollisionShapes/btEmptyShape.h + CollisionShapes/btHeightfieldTerrainShape.h + CollisionShapes/btMaterial.h + CollisionShapes/btMinkowskiSumShape.h + CollisionShapes/btMultimaterialTriangleMeshShape.h + CollisionShapes/btMultiSphereShape.h + CollisionShapes/btOptimizedBvh.h + CollisionShapes/btPolyhedralConvexShape.h + CollisionShapes/btScaledBvhTriangleMeshShape.h + CollisionShapes/btShapeHull.h + CollisionShapes/btSphereShape.h + CollisionShapes/btStaticPlaneShape.h + CollisionShapes/btStridingMeshInterface.h + CollisionShapes/btTetrahedronShape.h + CollisionShapes/btTriangleBuffer.h + CollisionShapes/btTriangleCallback.h + CollisionShapes/btTriangleIndexVertexArray.h + CollisionShapes/btTriangleIndexVertexMaterialArray.h + CollisionShapes/btTriangleInfoMap.h + CollisionShapes/btTriangleMesh.h + CollisionShapes/btTriangleMeshShape.h + CollisionShapes/btTriangleShape.h + CollisionShapes/btUniformScalingShape.h +) +SET(Gimpact_HDRS + Gimpact/btBoxCollision.h + Gimpact/btClipPolygon.h + Gimpact/btContactProcessing.h + Gimpact/btGenericPoolAllocator.h + Gimpact/btGeometryOperations.h + Gimpact/btGImpactBvh.h + Gimpact/btGImpactCollisionAlgorithm.h + Gimpact/btGImpactMassUtil.h + Gimpact/btGImpactQuantizedBvh.h + Gimpact/btGImpactShape.h + Gimpact/btQuantization.h + Gimpact/btTriangleShapeEx.h + Gimpact/gim_array.h + Gimpact/gim_basic_geometry_operations.h + Gimpact/gim_bitset.h + Gimpact/gim_box_collision.h + Gimpact/gim_box_set.h + Gimpact/gim_clip_polygon.h + Gimpact/gim_contact.h + Gimpact/gim_geom_types.h + Gimpact/gim_geometry.h + Gimpact/gim_hash_table.h + Gimpact/gim_linear_math.h + Gimpact/gim_math.h + Gimpact/gim_memory.h + Gimpact/gim_radixsort.h + Gimpact/gim_tri_collision.h +) +SET(NarrowPhaseCollision_HDRS + NarrowPhaseCollision/btContinuousConvexCollision.h + NarrowPhaseCollision/btConvexCast.h + NarrowPhaseCollision/btConvexPenetrationDepthSolver.h + NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h + NarrowPhaseCollision/btGjkConvexCast.h + NarrowPhaseCollision/btGjkEpa2.h + NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h + NarrowPhaseCollision/btGjkPairDetector.h + NarrowPhaseCollision/btManifoldPoint.h + NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h + NarrowPhaseCollision/btPersistentManifold.h + NarrowPhaseCollision/btPointCollector.h + NarrowPhaseCollision/btRaycastCallback.h + NarrowPhaseCollision/btSimplexSolverInterface.h + NarrowPhaseCollision/btSubSimplexConvexCast.h + NarrowPhaseCollision/btVoronoiSimplexSolver.h +) + +SET(BulletCollision_HDRS + ${Root_HDRS} + ${BroadphaseCollision_HDRS} + ${CollisionDispatch_HDRS} + ${CollisionShapes_HDRS} + ${Gimpact_HDRS} + ${NarrowPhaseCollision_HDRS} +) + + +ADD_LIBRARY(BulletCollision ${BulletCollision_SRCS} ${BulletCollision_HDRS}) +SET_TARGET_PROPERTIES(BulletCollision PROPERTIES VERSION ${BULLET_VERSION}) +SET_TARGET_PROPERTIES(BulletCollision PROPERTIES SOVERSION ${BULLET_VERSION}) +IF (BUILD_SHARED_LIBS) + TARGET_LINK_LIBRARIES(BulletCollision LinearMath) +ENDIF (BUILD_SHARED_LIBS) + + +IF (INSTALL_LIBS) + IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) + #INSTALL of other files requires CMake 2.6 + IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) + IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + INSTALL(TARGETS BulletCollision DESTINATION .) + ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + INSTALL(TARGETS BulletCollision DESTINATION lib${LIB_SUFFIX}) + INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h") + INSTALL(FILES ../btBulletCollisionCommon.h DESTINATION include/BulletCollision) + ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) + + IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + SET_TARGET_PROPERTIES(BulletCollision PROPERTIES FRAMEWORK true) + + SET_TARGET_PROPERTIES(BulletCollision PROPERTIES PUBLIC_HEADER ${Root_HDRS}) + # Have to list out sub-directories manually: + SET_PROPERTY(SOURCE ${BroadphaseCollision_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/BroadphaseCollision) + SET_PROPERTY(SOURCE ${CollisionDispatch_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/CollisionDispatch) + SET_PROPERTY(SOURCE ${CollisionShapes_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/CollisionShapes) + SET_PROPERTY(SOURCE ${Gimpact_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/Gimpact) + SET_PROPERTY(SOURCE ${NarrowPhaseCollision_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/NarrowPhaseCollision) + + ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) +ENDIF (INSTALL_LIBS) \ No newline at end of file diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp new file mode 100644 index 00000000000..f76755fbb6a --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp @@ -0,0 +1,209 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "LinearMath/btScalar.h" +#include "SphereTriangleDetector.h" +#include "BulletCollision/CollisionShapes/btTriangleShape.h" +#include "BulletCollision/CollisionShapes/btSphereShape.h" + + +SphereTriangleDetector::SphereTriangleDetector(btSphereShape* sphere,btTriangleShape* triangle,btScalar contactBreakingThreshold) +:m_sphere(sphere), +m_triangle(triangle), +m_contactBreakingThreshold(contactBreakingThreshold) +{ + +} + +void SphereTriangleDetector::getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults) +{ + + (void)debugDraw; + const btTransform& transformA = input.m_transformA; + const btTransform& transformB = input.m_transformB; + + btVector3 point,normal; + btScalar timeOfImpact = btScalar(1.); + btScalar depth = btScalar(0.); +// output.m_distance = btScalar(BT_LARGE_FLOAT); + //move sphere into triangle space + btTransform sphereInTr = transformB.inverseTimes(transformA); + + if (collide(sphereInTr.getOrigin(),point,normal,depth,timeOfImpact,m_contactBreakingThreshold)) + { + if (swapResults) + { + btVector3 normalOnB = transformB.getBasis()*normal; + btVector3 normalOnA = -normalOnB; + btVector3 pointOnA = transformB*point+normalOnB*depth; + output.addContactPoint(normalOnA,pointOnA,depth); + } else + { + output.addContactPoint(transformB.getBasis()*normal,transformB*point,depth); + } + } + +} + +#define MAX_OVERLAP btScalar(0.) + + + +// See also geometrictools.com +// Basic idea: D = |p - (lo + t0*lv)| where t0 = lv . (p - lo) / lv . lv +btScalar SegmentSqrDistance(const btVector3& from, const btVector3& to,const btVector3 &p, btVector3 &nearest); + +btScalar SegmentSqrDistance(const btVector3& from, const btVector3& to,const btVector3 &p, btVector3 &nearest) { + btVector3 diff = p - from; + btVector3 v = to - from; + btScalar t = v.dot(diff); + + if (t > 0) { + btScalar dotVV = v.dot(v); + if (t < dotVV) { + t /= dotVV; + diff -= t*v; + } else { + t = 1; + diff -= v; + } + } else + t = 0; + + nearest = from + t*v; + return diff.dot(diff); +} + +bool SphereTriangleDetector::facecontains(const btVector3 &p,const btVector3* vertices,btVector3& normal) { + btVector3 lp(p); + btVector3 lnormal(normal); + + return pointInTriangle(vertices, lnormal, &lp); +} + +///combined discrete/continuous sphere-triangle +bool SphereTriangleDetector::collide(const btVector3& sphereCenter,btVector3 &point, btVector3& resultNormal, btScalar& depth, btScalar &timeOfImpact, btScalar contactBreakingThreshold) +{ + + const btVector3* vertices = &m_triangle->getVertexPtr(0); + const btVector3& c = sphereCenter; + btScalar r = m_sphere->getRadius(); + + btVector3 delta (0,0,0); + + btVector3 normal = (vertices[1]-vertices[0]).cross(vertices[2]-vertices[0]); + normal.normalize(); + btVector3 p1ToCentre = c - vertices[0]; + btScalar distanceFromPlane = p1ToCentre.dot(normal); + + if (distanceFromPlane < btScalar(0.)) + { + //triangle facing the other way + + distanceFromPlane *= btScalar(-1.); + normal *= btScalar(-1.); + } + + btScalar contactMargin = contactBreakingThreshold; + bool isInsideContactPlane = distanceFromPlane < r + contactMargin; + bool isInsideShellPlane = distanceFromPlane < r; + + btScalar deltaDotNormal = delta.dot(normal); + if (!isInsideShellPlane && deltaDotNormal >= btScalar(0.0)) + return false; + + // Check for contact / intersection + bool hasContact = false; + btVector3 contactPoint; + if (isInsideContactPlane) { + if (facecontains(c,vertices,normal)) { + // Inside the contact wedge - touches a point on the shell plane + hasContact = true; + contactPoint = c - normal*distanceFromPlane; + } else { + // Could be inside one of the contact capsules + btScalar contactCapsuleRadiusSqr = (r + contactMargin) * (r + contactMargin); + btVector3 nearestOnEdge; + for (int i = 0; i < m_triangle->getNumEdges(); i++) { + + btVector3 pa; + btVector3 pb; + + m_triangle->getEdge(i,pa,pb); + + btScalar distanceSqr = SegmentSqrDistance(pa,pb,c, nearestOnEdge); + if (distanceSqr < contactCapsuleRadiusSqr) { + // Yep, we're inside a capsule + hasContact = true; + contactPoint = nearestOnEdge; + } + + } + } + } + + if (hasContact) { + btVector3 contactToCentre = c - contactPoint; + btScalar distanceSqr = contactToCentre.length2(); + if (distanceSqr < (r - MAX_OVERLAP)*(r - MAX_OVERLAP)) { + btScalar distance = btSqrt(distanceSqr); + resultNormal = contactToCentre; + resultNormal.normalize(); + point = contactPoint; + depth = -(r-distance); + return true; + } + + if (delta.dot(contactToCentre) >= btScalar(0.0)) + return false; + + // Moving towards the contact point -> collision + point = contactPoint; + timeOfImpact = btScalar(0.0); + return true; + } + + return false; +} + + +bool SphereTriangleDetector::pointInTriangle(const btVector3 vertices[], const btVector3 &normal, btVector3 *p ) +{ + const btVector3* p1 = &vertices[0]; + const btVector3* p2 = &vertices[1]; + const btVector3* p3 = &vertices[2]; + + btVector3 edge1( *p2 - *p1 ); + btVector3 edge2( *p3 - *p2 ); + btVector3 edge3( *p1 - *p3 ); + + btVector3 p1_to_p( *p - *p1 ); + btVector3 p2_to_p( *p - *p2 ); + btVector3 p3_to_p( *p - *p3 ); + + btVector3 edge1_normal( edge1.cross(normal)); + btVector3 edge2_normal( edge2.cross(normal)); + btVector3 edge3_normal( edge3.cross(normal)); + + btScalar r1, r2, r3; + r1 = edge1_normal.dot( p1_to_p ); + r2 = edge2_normal.dot( p2_to_p ); + r3 = edge3_normal.dot( p3_to_p ); + if ( ( r1 > 0 && r2 > 0 && r3 > 0 ) || + ( r1 <= 0 && r2 <= 0 && r3 <= 0 ) ) + return true; + return false; + +} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/SphereTriangleDetector.h b/extern/bullet2/BulletCollision/CollisionDispatch/SphereTriangleDetector.h new file mode 100644 index 00000000000..f656e5c323a --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/SphereTriangleDetector.h @@ -0,0 +1,51 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SPHERE_TRIANGLE_DETECTOR_H +#define SPHERE_TRIANGLE_DETECTOR_H + +#include "BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h" + + + +class btSphereShape; +class btTriangleShape; + + + +/// sphere-triangle to match the btDiscreteCollisionDetectorInterface +struct SphereTriangleDetector : public btDiscreteCollisionDetectorInterface +{ + virtual void getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults=false); + + SphereTriangleDetector(btSphereShape* sphere,btTriangleShape* triangle, btScalar contactBreakingThreshold); + + virtual ~SphereTriangleDetector() {}; + + bool collide(const btVector3& sphereCenter,btVector3 &point, btVector3& resultNormal, btScalar& depth, btScalar &timeOfImpact, btScalar contactBreakingThreshold); + +private: + + + bool pointInTriangle(const btVector3 vertices[], const btVector3 &normal, btVector3 *p ); + bool facecontains(const btVector3 &p,const btVector3* vertices,btVector3& normal); + + btSphereShape* m_sphere; + btTriangleShape* m_triangle; + btScalar m_contactBreakingThreshold; + +}; +#endif //SPHERE_TRIANGLE_DETECTOR_H + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp new file mode 100644 index 00000000000..7e5da6c5872 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp @@ -0,0 +1,47 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2008 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btActivatingCollisionAlgorithm.h" +#include "btCollisionDispatcher.h" +#include "btCollisionObject.h" + +btActivatingCollisionAlgorithm::btActivatingCollisionAlgorithm (const btCollisionAlgorithmConstructionInfo& ci) +:btCollisionAlgorithm(ci) +//, +//m_colObj0(0), +//m_colObj1(0) +{ +} +btActivatingCollisionAlgorithm::btActivatingCollisionAlgorithm (const btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* colObj0,btCollisionObject* colObj1) +:btCollisionAlgorithm(ci) +//, +//m_colObj0(0), +//m_colObj1(0) +{ +// if (ci.m_dispatcher1->needsCollision(colObj0,colObj1)) +// { +// m_colObj0 = colObj0; +// m_colObj1 = colObj1; +// +// m_colObj0->activate(); +// m_colObj1->activate(); +// } +} + +btActivatingCollisionAlgorithm::~btActivatingCollisionAlgorithm() +{ +// m_colObj0->activate(); +// m_colObj1->activate(); +} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h new file mode 100644 index 00000000000..25fe088942d --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h @@ -0,0 +1,36 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2008 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef __BT_ACTIVATING_COLLISION_ALGORITHM_H +#define __BT_ACTIVATING_COLLISION_ALGORITHM_H + +#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" + +///This class is not enabled yet (work-in-progress) to more aggressively activate objects. +class btActivatingCollisionAlgorithm : public btCollisionAlgorithm +{ +// btCollisionObject* m_colObj0; +// btCollisionObject* m_colObj1; + +public: + + btActivatingCollisionAlgorithm (const btCollisionAlgorithmConstructionInfo& ci); + + btActivatingCollisionAlgorithm (const btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* colObj0,btCollisionObject* colObj1); + + virtual ~btActivatingCollisionAlgorithm(); + +}; +#endif //__BT_ACTIVATING_COLLISION_ALGORITHM_H diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp new file mode 100644 index 00000000000..2182d0d7e49 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp @@ -0,0 +1,435 @@ +/* +Bullet Continuous Collision Detection and Physics Library +* The b2CollidePolygons routines are Copyright (c) 2006-2007 Erin Catto http://www.gphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +///btBox2dBox2dCollisionAlgorithm, with modified b2CollidePolygons routines from the Box2D library. +///The modifications include: switching from b2Vec to btVector3, redefinition of b2Dot, b2Cross + +#include "btBox2dBox2dCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" +#include "BulletCollision/CollisionShapes/btBoxShape.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "BulletCollision/CollisionDispatch/btBoxBoxDetector.h" +#include "BulletCollision/CollisionShapes/btBox2dShape.h" + +#define USE_PERSISTENT_CONTACTS 1 + +btBox2dBox2dCollisionAlgorithm::btBox2dBox2dCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* obj0,btCollisionObject* obj1) +: btActivatingCollisionAlgorithm(ci,obj0,obj1), +m_ownManifold(false), +m_manifoldPtr(mf) +{ + if (!m_manifoldPtr && m_dispatcher->needsCollision(obj0,obj1)) + { + m_manifoldPtr = m_dispatcher->getNewManifold(obj0,obj1); + m_ownManifold = true; + } +} + +btBox2dBox2dCollisionAlgorithm::~btBox2dBox2dCollisionAlgorithm() +{ + + if (m_ownManifold) + { + if (m_manifoldPtr) + m_dispatcher->releaseManifold(m_manifoldPtr); + } + +} + + +void b2CollidePolygons(btManifoldResult* manifold, const btBox2dShape* polyA, const btTransform& xfA, const btBox2dShape* polyB, const btTransform& xfB); + +//#include +void btBox2dBox2dCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + if (!m_manifoldPtr) + return; + + btCollisionObject* col0 = body0; + btCollisionObject* col1 = body1; + btBox2dShape* box0 = (btBox2dShape*)col0->getCollisionShape(); + btBox2dShape* box1 = (btBox2dShape*)col1->getCollisionShape(); + + resultOut->setPersistentManifold(m_manifoldPtr); + + b2CollidePolygons(resultOut,box0,col0->getWorldTransform(),box1,col1->getWorldTransform()); + + // refreshContactPoints is only necessary when using persistent contact points. otherwise all points are newly added + if (m_ownManifold) + { + resultOut->refreshContactPoints(); + } + +} + +btScalar btBox2dBox2dCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* /*body0*/,btCollisionObject* /*body1*/,const btDispatcherInfo& /*dispatchInfo*/,btManifoldResult* /*resultOut*/) +{ + //not yet + return 1.f; +} + + +struct ClipVertex +{ + btVector3 v; + int id; + //b2ContactID id; + //b2ContactID id; +}; + +#define b2Dot(a,b) (a).dot(b) +#define b2Mul(a,b) (a)*(b) +#define b2MulT(a,b) (a).transpose()*(b) +#define b2Cross(a,b) (a).cross(b) +#define btCrossS(a,s) btVector3(s * a.getY(), -s * a.getX(),0.f) + +int b2_maxManifoldPoints =2; + +static int ClipSegmentToLine(ClipVertex vOut[2], ClipVertex vIn[2], + const btVector3& normal, btScalar offset) +{ + // Start with no output points + int numOut = 0; + + // Calculate the distance of end points to the line + btScalar distance0 = b2Dot(normal, vIn[0].v) - offset; + btScalar distance1 = b2Dot(normal, vIn[1].v) - offset; + + // If the points are behind the plane + if (distance0 <= 0.0f) vOut[numOut++] = vIn[0]; + if (distance1 <= 0.0f) vOut[numOut++] = vIn[1]; + + // If the points are on different sides of the plane + if (distance0 * distance1 < 0.0f) + { + // Find intersection point of edge and plane + btScalar interp = distance0 / (distance0 - distance1); + vOut[numOut].v = vIn[0].v + interp * (vIn[1].v - vIn[0].v); + if (distance0 > 0.0f) + { + vOut[numOut].id = vIn[0].id; + } + else + { + vOut[numOut].id = vIn[1].id; + } + ++numOut; + } + + return numOut; +} + +// Find the separation between poly1 and poly2 for a give edge normal on poly1. +static btScalar EdgeSeparation(const btBox2dShape* poly1, const btTransform& xf1, int edge1, + const btBox2dShape* poly2, const btTransform& xf2) +{ + const btVector3* vertices1 = poly1->getVertices(); + const btVector3* normals1 = poly1->getNormals(); + + int count2 = poly2->getVertexCount(); + const btVector3* vertices2 = poly2->getVertices(); + + btAssert(0 <= edge1 && edge1 < poly1->getVertexCount()); + + // Convert normal from poly1's frame into poly2's frame. + btVector3 normal1World = b2Mul(xf1.getBasis(), normals1[edge1]); + btVector3 normal1 = b2MulT(xf2.getBasis(), normal1World); + + // Find support vertex on poly2 for -normal. + int index = 0; + btScalar minDot = BT_LARGE_FLOAT; + + for (int i = 0; i < count2; ++i) + { + btScalar dot = b2Dot(vertices2[i], normal1); + if (dot < minDot) + { + minDot = dot; + index = i; + } + } + + btVector3 v1 = b2Mul(xf1, vertices1[edge1]); + btVector3 v2 = b2Mul(xf2, vertices2[index]); + btScalar separation = b2Dot(v2 - v1, normal1World); + return separation; +} + +// Find the max separation between poly1 and poly2 using edge normals from poly1. +static btScalar FindMaxSeparation(int* edgeIndex, + const btBox2dShape* poly1, const btTransform& xf1, + const btBox2dShape* poly2, const btTransform& xf2) +{ + int count1 = poly1->getVertexCount(); + const btVector3* normals1 = poly1->getNormals(); + + // Vector pointing from the centroid of poly1 to the centroid of poly2. + btVector3 d = b2Mul(xf2, poly2->getCentroid()) - b2Mul(xf1, poly1->getCentroid()); + btVector3 dLocal1 = b2MulT(xf1.getBasis(), d); + + // Find edge normal on poly1 that has the largest projection onto d. + int edge = 0; + btScalar maxDot = -BT_LARGE_FLOAT; + for (int i = 0; i < count1; ++i) + { + btScalar dot = b2Dot(normals1[i], dLocal1); + if (dot > maxDot) + { + maxDot = dot; + edge = i; + } + } + + // Get the separation for the edge normal. + btScalar s = EdgeSeparation(poly1, xf1, edge, poly2, xf2); + if (s > 0.0f) + { + return s; + } + + // Check the separation for the previous edge normal. + int prevEdge = edge - 1 >= 0 ? edge - 1 : count1 - 1; + btScalar sPrev = EdgeSeparation(poly1, xf1, prevEdge, poly2, xf2); + if (sPrev > 0.0f) + { + return sPrev; + } + + // Check the separation for the next edge normal. + int nextEdge = edge + 1 < count1 ? edge + 1 : 0; + btScalar sNext = EdgeSeparation(poly1, xf1, nextEdge, poly2, xf2); + if (sNext > 0.0f) + { + return sNext; + } + + // Find the best edge and the search direction. + int bestEdge; + btScalar bestSeparation; + int increment; + if (sPrev > s && sPrev > sNext) + { + increment = -1; + bestEdge = prevEdge; + bestSeparation = sPrev; + } + else if (sNext > s) + { + increment = 1; + bestEdge = nextEdge; + bestSeparation = sNext; + } + else + { + *edgeIndex = edge; + return s; + } + + // Perform a local search for the best edge normal. + for ( ; ; ) + { + if (increment == -1) + edge = bestEdge - 1 >= 0 ? bestEdge - 1 : count1 - 1; + else + edge = bestEdge + 1 < count1 ? bestEdge + 1 : 0; + + s = EdgeSeparation(poly1, xf1, edge, poly2, xf2); + if (s > 0.0f) + { + return s; + } + + if (s > bestSeparation) + { + bestEdge = edge; + bestSeparation = s; + } + else + { + break; + } + } + + *edgeIndex = bestEdge; + return bestSeparation; +} + +static void FindIncidentEdge(ClipVertex c[2], + const btBox2dShape* poly1, const btTransform& xf1, int edge1, + const btBox2dShape* poly2, const btTransform& xf2) +{ + const btVector3* normals1 = poly1->getNormals(); + + int count2 = poly2->getVertexCount(); + const btVector3* vertices2 = poly2->getVertices(); + const btVector3* normals2 = poly2->getNormals(); + + btAssert(0 <= edge1 && edge1 < poly1->getVertexCount()); + + // Get the normal of the reference edge in poly2's frame. + btVector3 normal1 = b2MulT(xf2.getBasis(), b2Mul(xf1.getBasis(), normals1[edge1])); + + // Find the incident edge on poly2. + int index = 0; + btScalar minDot = BT_LARGE_FLOAT; + for (int i = 0; i < count2; ++i) + { + btScalar dot = b2Dot(normal1, normals2[i]); + if (dot < minDot) + { + minDot = dot; + index = i; + } + } + + // Build the clip vertices for the incident edge. + int i1 = index; + int i2 = i1 + 1 < count2 ? i1 + 1 : 0; + + c[0].v = b2Mul(xf2, vertices2[i1]); +// c[0].id.features.referenceEdge = (unsigned char)edge1; +// c[0].id.features.incidentEdge = (unsigned char)i1; +// c[0].id.features.incidentVertex = 0; + + c[1].v = b2Mul(xf2, vertices2[i2]); +// c[1].id.features.referenceEdge = (unsigned char)edge1; +// c[1].id.features.incidentEdge = (unsigned char)i2; +// c[1].id.features.incidentVertex = 1; +} + +// Find edge normal of max separation on A - return if separating axis is found +// Find edge normal of max separation on B - return if separation axis is found +// Choose reference edge as min(minA, minB) +// Find incident edge +// Clip + +// The normal points from 1 to 2 +void b2CollidePolygons(btManifoldResult* manifold, + const btBox2dShape* polyA, const btTransform& xfA, + const btBox2dShape* polyB, const btTransform& xfB) +{ + + int edgeA = 0; + btScalar separationA = FindMaxSeparation(&edgeA, polyA, xfA, polyB, xfB); + if (separationA > 0.0f) + return; + + int edgeB = 0; + btScalar separationB = FindMaxSeparation(&edgeB, polyB, xfB, polyA, xfA); + if (separationB > 0.0f) + return; + + const btBox2dShape* poly1; // reference poly + const btBox2dShape* poly2; // incident poly + btTransform xf1, xf2; + int edge1; // reference edge + unsigned char flip; + const btScalar k_relativeTol = 0.98f; + const btScalar k_absoluteTol = 0.001f; + + // TODO_ERIN use "radius" of poly for absolute tolerance. + if (separationB > k_relativeTol * separationA + k_absoluteTol) + { + poly1 = polyB; + poly2 = polyA; + xf1 = xfB; + xf2 = xfA; + edge1 = edgeB; + flip = 1; + } + else + { + poly1 = polyA; + poly2 = polyB; + xf1 = xfA; + xf2 = xfB; + edge1 = edgeA; + flip = 0; + } + + ClipVertex incidentEdge[2]; + FindIncidentEdge(incidentEdge, poly1, xf1, edge1, poly2, xf2); + + int count1 = poly1->getVertexCount(); + const btVector3* vertices1 = poly1->getVertices(); + + btVector3 v11 = vertices1[edge1]; + btVector3 v12 = edge1 + 1 < count1 ? vertices1[edge1+1] : vertices1[0]; + + btVector3 dv = v12 - v11; + btVector3 sideNormal = b2Mul(xf1.getBasis(), v12 - v11); + sideNormal.normalize(); + btVector3 frontNormal = btCrossS(sideNormal, 1.0f); + + + v11 = b2Mul(xf1, v11); + v12 = b2Mul(xf1, v12); + + btScalar frontOffset = b2Dot(frontNormal, v11); + btScalar sideOffset1 = -b2Dot(sideNormal, v11); + btScalar sideOffset2 = b2Dot(sideNormal, v12); + + // Clip incident edge against extruded edge1 side edges. + ClipVertex clipPoints1[2]; + clipPoints1[0].v.setValue(0,0,0); + clipPoints1[1].v.setValue(0,0,0); + + ClipVertex clipPoints2[2]; + clipPoints2[0].v.setValue(0,0,0); + clipPoints2[1].v.setValue(0,0,0); + + + int np; + + // Clip to box side 1 + np = ClipSegmentToLine(clipPoints1, incidentEdge, -sideNormal, sideOffset1); + + if (np < 2) + return; + + // Clip to negative box side 1 + np = ClipSegmentToLine(clipPoints2, clipPoints1, sideNormal, sideOffset2); + + if (np < 2) + { + return; + } + + // Now clipPoints2 contains the clipped points. + btVector3 manifoldNormal = flip ? -frontNormal : frontNormal; + + int pointCount = 0; + for (int i = 0; i < b2_maxManifoldPoints; ++i) + { + btScalar separation = b2Dot(frontNormal, clipPoints2[i].v) - frontOffset; + + if (separation <= 0.0f) + { + + //b2ManifoldPoint* cp = manifold->points + pointCount; + //btScalar separation = separation; + //cp->localPoint1 = b2MulT(xfA, clipPoints2[i].v); + //cp->localPoint2 = b2MulT(xfB, clipPoints2[i].v); + + manifold->addContactPoint(-manifoldNormal,clipPoints2[i].v,separation); + +// cp->id = clipPoints2[i].id; +// cp->id.features.flip = flip; + ++pointCount; + } + } + +// manifold->pointCount = pointCount;} +} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h new file mode 100644 index 00000000000..21342175238 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h @@ -0,0 +1,66 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BOX_2D_BOX_2D__COLLISION_ALGORITHM_H +#define BOX_2D_BOX_2D__COLLISION_ALGORITHM_H + +#include "BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "BulletCollision/BroadphaseCollision/btDispatcher.h" +#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" + +class btPersistentManifold; + +///box-box collision detection +class btBox2dBox2dCollisionAlgorithm : public btActivatingCollisionAlgorithm +{ + bool m_ownManifold; + btPersistentManifold* m_manifoldPtr; + +public: + btBox2dBox2dCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci) + : btActivatingCollisionAlgorithm(ci) {} + + virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + btBox2dBox2dCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1); + + virtual ~btBox2dBox2dCollisionAlgorithm(); + + virtual void getAllContactManifolds(btManifoldArray& manifoldArray) + { + if (m_manifoldPtr && m_ownManifold) + { + manifoldArray.push_back(m_manifoldPtr); + } + } + + + struct CreateFunc :public btCollisionAlgorithmCreateFunc + { + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) + { + int bbsize = sizeof(btBox2dBox2dCollisionAlgorithm); + void* ptr = ci.m_dispatcher1->allocateCollisionAlgorithm(bbsize); + return new(ptr) btBox2dBox2dCollisionAlgorithm(0,ci,body0,body1); + } + }; + +}; + +#endif //BOX_2D_BOX_2D__COLLISION_ALGORITHM_H + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp new file mode 100644 index 00000000000..49628853493 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp @@ -0,0 +1,85 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btBoxBoxCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" +#include "BulletCollision/CollisionShapes/btBoxShape.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "btBoxBoxDetector.h" + +#define USE_PERSISTENT_CONTACTS 1 + +btBoxBoxCollisionAlgorithm::btBoxBoxCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* obj0,btCollisionObject* obj1) +: btActivatingCollisionAlgorithm(ci,obj0,obj1), +m_ownManifold(false), +m_manifoldPtr(mf) +{ + if (!m_manifoldPtr && m_dispatcher->needsCollision(obj0,obj1)) + { + m_manifoldPtr = m_dispatcher->getNewManifold(obj0,obj1); + m_ownManifold = true; + } +} + +btBoxBoxCollisionAlgorithm::~btBoxBoxCollisionAlgorithm() +{ + if (m_ownManifold) + { + if (m_manifoldPtr) + m_dispatcher->releaseManifold(m_manifoldPtr); + } +} + +void btBoxBoxCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + if (!m_manifoldPtr) + return; + + btCollisionObject* col0 = body0; + btCollisionObject* col1 = body1; + btBoxShape* box0 = (btBoxShape*)col0->getCollisionShape(); + btBoxShape* box1 = (btBoxShape*)col1->getCollisionShape(); + + + + /// report a contact. internally this will be kept persistent, and contact reduction is done + resultOut->setPersistentManifold(m_manifoldPtr); +#ifndef USE_PERSISTENT_CONTACTS + m_manifoldPtr->clearManifold(); +#endif //USE_PERSISTENT_CONTACTS + + btDiscreteCollisionDetectorInterface::ClosestPointInput input; + input.m_maximumDistanceSquared = BT_LARGE_FLOAT; + input.m_transformA = body0->getWorldTransform(); + input.m_transformB = body1->getWorldTransform(); + + btBoxBoxDetector detector(box0,box1); + detector.getClosestPoints(input,*resultOut,dispatchInfo.m_debugDraw); + +#ifdef USE_PERSISTENT_CONTACTS + // refreshContactPoints is only necessary when using persistent contact points. otherwise all points are newly added + if (m_ownManifold) + { + resultOut->refreshContactPoints(); + } +#endif //USE_PERSISTENT_CONTACTS + +} + +btScalar btBoxBoxCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* /*body0*/,btCollisionObject* /*body1*/,const btDispatcherInfo& /*dispatchInfo*/,btManifoldResult* /*resultOut*/) +{ + //not yet + return 1.f; +} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h new file mode 100644 index 00000000000..e7d2cc25c22 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h @@ -0,0 +1,66 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BOX_BOX__COLLISION_ALGORITHM_H +#define BOX_BOX__COLLISION_ALGORITHM_H + +#include "btActivatingCollisionAlgorithm.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "BulletCollision/BroadphaseCollision/btDispatcher.h" +#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" + +class btPersistentManifold; + +///box-box collision detection +class btBoxBoxCollisionAlgorithm : public btActivatingCollisionAlgorithm +{ + bool m_ownManifold; + btPersistentManifold* m_manifoldPtr; + +public: + btBoxBoxCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci) + : btActivatingCollisionAlgorithm(ci) {} + + virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + btBoxBoxCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1); + + virtual ~btBoxBoxCollisionAlgorithm(); + + virtual void getAllContactManifolds(btManifoldArray& manifoldArray) + { + if (m_manifoldPtr && m_ownManifold) + { + manifoldArray.push_back(m_manifoldPtr); + } + } + + + struct CreateFunc :public btCollisionAlgorithmCreateFunc + { + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) + { + int bbsize = sizeof(btBoxBoxCollisionAlgorithm); + void* ptr = ci.m_dispatcher1->allocateCollisionAlgorithm(bbsize); + return new(ptr) btBoxBoxCollisionAlgorithm(0,ci,body0,body1); + } + }; + +}; + +#endif //BOX_BOX__COLLISION_ALGORITHM_H + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp new file mode 100644 index 00000000000..bcd42ca169b --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp @@ -0,0 +1,704 @@ +/* + * Box-Box collision detection re-distributed under the ZLib license with permission from Russell L. Smith + * Original version is from Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. + * All rights reserved. Email: russ@q12.org Web: www.q12.org + Bullet Continuous Collision Detection and Physics Library + Bullet is Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +///ODE box-box collision detection is adapted to work with Bullet + +#include "btBoxBoxDetector.h" +#include "BulletCollision/CollisionShapes/btBoxShape.h" + +#include +#include + +btBoxBoxDetector::btBoxBoxDetector(btBoxShape* box1,btBoxShape* box2) +: m_box1(box1), +m_box2(box2) +{ + +} + + +// given two boxes (p1,R1,side1) and (p2,R2,side2), collide them together and +// generate contact points. this returns 0 if there is no contact otherwise +// it returns the number of contacts generated. +// `normal' returns the contact normal. +// `depth' returns the maximum penetration depth along that normal. +// `return_code' returns a number indicating the type of contact that was +// detected: +// 1,2,3 = box 2 intersects with a face of box 1 +// 4,5,6 = box 1 intersects with a face of box 2 +// 7..15 = edge-edge contact +// `maxc' is the maximum number of contacts allowed to be generated, i.e. +// the size of the `contact' array. +// `contact' and `skip' are the contact array information provided to the +// collision functions. this function only fills in the position and depth +// fields. +struct dContactGeom; +#define dDOTpq(a,b,p,q) ((a)[0]*(b)[0] + (a)[p]*(b)[q] + (a)[2*(p)]*(b)[2*(q)]) +#define dInfinity FLT_MAX + + +/*PURE_INLINE btScalar dDOT (const btScalar *a, const btScalar *b) { return dDOTpq(a,b,1,1); } +PURE_INLINE btScalar dDOT13 (const btScalar *a, const btScalar *b) { return dDOTpq(a,b,1,3); } +PURE_INLINE btScalar dDOT31 (const btScalar *a, const btScalar *b) { return dDOTpq(a,b,3,1); } +PURE_INLINE btScalar dDOT33 (const btScalar *a, const btScalar *b) { return dDOTpq(a,b,3,3); } +*/ +static btScalar dDOT (const btScalar *a, const btScalar *b) { return dDOTpq(a,b,1,1); } +static btScalar dDOT44 (const btScalar *a, const btScalar *b) { return dDOTpq(a,b,4,4); } +static btScalar dDOT41 (const btScalar *a, const btScalar *b) { return dDOTpq(a,b,4,1); } +static btScalar dDOT14 (const btScalar *a, const btScalar *b) { return dDOTpq(a,b,1,4); } +#define dMULTIPLYOP1_331(A,op,B,C) \ +{\ + (A)[0] op dDOT41((B),(C)); \ + (A)[1] op dDOT41((B+1),(C)); \ + (A)[2] op dDOT41((B+2),(C)); \ +} + +#define dMULTIPLYOP0_331(A,op,B,C) \ +{ \ + (A)[0] op dDOT((B),(C)); \ + (A)[1] op dDOT((B+4),(C)); \ + (A)[2] op dDOT((B+8),(C)); \ +} + +#define dMULTIPLY1_331(A,B,C) dMULTIPLYOP1_331(A,=,B,C) +#define dMULTIPLY0_331(A,B,C) dMULTIPLYOP0_331(A,=,B,C) + +typedef btScalar dMatrix3[4*3]; + +void dLineClosestApproach (const btVector3& pa, const btVector3& ua, + const btVector3& pb, const btVector3& ub, + btScalar *alpha, btScalar *beta); +void dLineClosestApproach (const btVector3& pa, const btVector3& ua, + const btVector3& pb, const btVector3& ub, + btScalar *alpha, btScalar *beta) +{ + btVector3 p; + p[0] = pb[0] - pa[0]; + p[1] = pb[1] - pa[1]; + p[2] = pb[2] - pa[2]; + btScalar uaub = dDOT(ua,ub); + btScalar q1 = dDOT(ua,p); + btScalar q2 = -dDOT(ub,p); + btScalar d = 1-uaub*uaub; + if (d <= btScalar(0.0001f)) { + // @@@ this needs to be made more robust + *alpha = 0; + *beta = 0; + } + else { + d = 1.f/d; + *alpha = (q1 + uaub*q2)*d; + *beta = (uaub*q1 + q2)*d; + } +} + + + +// find all the intersection points between the 2D rectangle with vertices +// at (+/-h[0],+/-h[1]) and the 2D quadrilateral with vertices (p[0],p[1]), +// (p[2],p[3]),(p[4],p[5]),(p[6],p[7]). +// +// the intersection points are returned as x,y pairs in the 'ret' array. +// the number of intersection points is returned by the function (this will +// be in the range 0 to 8). + +static int intersectRectQuad2 (btScalar h[2], btScalar p[8], btScalar ret[16]) +{ + // q (and r) contain nq (and nr) coordinate points for the current (and + // chopped) polygons + int nq=4,nr=0; + btScalar buffer[16]; + btScalar *q = p; + btScalar *r = ret; + for (int dir=0; dir <= 1; dir++) { + // direction notation: xy[0] = x axis, xy[1] = y axis + for (int sign=-1; sign <= 1; sign += 2) { + // chop q along the line xy[dir] = sign*h[dir] + btScalar *pq = q; + btScalar *pr = r; + nr = 0; + for (int i=nq; i > 0; i--) { + // go through all points in q and all lines between adjacent points + if (sign*pq[dir] < h[dir]) { + // this point is inside the chopping line + pr[0] = pq[0]; + pr[1] = pq[1]; + pr += 2; + nr++; + if (nr & 8) { + q = r; + goto done; + } + } + btScalar *nextq = (i > 1) ? pq+2 : q; + if ((sign*pq[dir] < h[dir]) ^ (sign*nextq[dir] < h[dir])) { + // this line crosses the chopping line + pr[1-dir] = pq[1-dir] + (nextq[1-dir]-pq[1-dir]) / + (nextq[dir]-pq[dir]) * (sign*h[dir]-pq[dir]); + pr[dir] = sign*h[dir]; + pr += 2; + nr++; + if (nr & 8) { + q = r; + goto done; + } + } + pq += 2; + } + q = r; + r = (q==ret) ? buffer : ret; + nq = nr; + } + } + done: + if (q != ret) memcpy (ret,q,nr*2*sizeof(btScalar)); + return nr; +} + + +#define M__PI 3.14159265f + +// given n points in the plane (array p, of size 2*n), generate m points that +// best represent the whole set. the definition of 'best' here is not +// predetermined - the idea is to select points that give good box-box +// collision detection behavior. the chosen point indexes are returned in the +// array iret (of size m). 'i0' is always the first entry in the array. +// n must be in the range [1..8]. m must be in the range [1..n]. i0 must be +// in the range [0..n-1]. + +void cullPoints2 (int n, btScalar p[], int m, int i0, int iret[]); +void cullPoints2 (int n, btScalar p[], int m, int i0, int iret[]) +{ + // compute the centroid of the polygon in cx,cy + int i,j; + btScalar a,cx,cy,q; + if (n==1) { + cx = p[0]; + cy = p[1]; + } + else if (n==2) { + cx = btScalar(0.5)*(p[0] + p[2]); + cy = btScalar(0.5)*(p[1] + p[3]); + } + else { + a = 0; + cx = 0; + cy = 0; + for (i=0; i<(n-1); i++) { + q = p[i*2]*p[i*2+3] - p[i*2+2]*p[i*2+1]; + a += q; + cx += q*(p[i*2]+p[i*2+2]); + cy += q*(p[i*2+1]+p[i*2+3]); + } + q = p[n*2-2]*p[1] - p[0]*p[n*2-1]; + if (btFabs(a+q) > SIMD_EPSILON) + { + a = 1.f/(btScalar(3.0)*(a+q)); + } else + { + a=BT_LARGE_FLOAT; + } + cx = a*(cx + q*(p[n*2-2]+p[0])); + cy = a*(cy + q*(p[n*2-1]+p[1])); + } + + // compute the angle of each point w.r.t. the centroid + btScalar A[8]; + for (i=0; i M__PI) a -= 2*M__PI; + btScalar maxdiff=1e9,diff; + + *iret = i0; // iret is not allowed to keep this value, but it sometimes does, when diff=#QNAN0 + + for (i=0; i M__PI) diff = 2*M__PI - diff; + if (diff < maxdiff) { + maxdiff = diff; + *iret = i; + } + } + } +#if defined(DEBUG) || defined (_DEBUG) + btAssert (*iret != i0); // ensure iret got set +#endif + avail[*iret] = 0; + iret++; + } +} + + + +int dBoxBox2 (const btVector3& p1, const dMatrix3 R1, + const btVector3& side1, const btVector3& p2, + const dMatrix3 R2, const btVector3& side2, + btVector3& normal, btScalar *depth, int *return_code, + int maxc, dContactGeom * /*contact*/, int /*skip*/,btDiscreteCollisionDetectorInterface::Result& output); +int dBoxBox2 (const btVector3& p1, const dMatrix3 R1, + const btVector3& side1, const btVector3& p2, + const dMatrix3 R2, const btVector3& side2, + btVector3& normal, btScalar *depth, int *return_code, + int maxc, dContactGeom * /*contact*/, int /*skip*/,btDiscreteCollisionDetectorInterface::Result& output) +{ + const btScalar fudge_factor = btScalar(1.05); + btVector3 p,pp,normalC(0.f,0.f,0.f); + const btScalar *normalR = 0; + btScalar A[3],B[3],R11,R12,R13,R21,R22,R23,R31,R32,R33, + Q11,Q12,Q13,Q21,Q22,Q23,Q31,Q32,Q33,s,s2,l; + int i,j,invert_normal,code; + + // get vector from centers of box 1 to box 2, relative to box 1 + p = p2 - p1; + dMULTIPLY1_331 (pp,R1,p); // get pp = p relative to body 1 + + // get side lengths / 2 + A[0] = side1[0]*btScalar(0.5); + A[1] = side1[1]*btScalar(0.5); + A[2] = side1[2]*btScalar(0.5); + B[0] = side2[0]*btScalar(0.5); + B[1] = side2[1]*btScalar(0.5); + B[2] = side2[2]*btScalar(0.5); + + // Rij is R1'*R2, i.e. the relative rotation between R1 and R2 + R11 = dDOT44(R1+0,R2+0); R12 = dDOT44(R1+0,R2+1); R13 = dDOT44(R1+0,R2+2); + R21 = dDOT44(R1+1,R2+0); R22 = dDOT44(R1+1,R2+1); R23 = dDOT44(R1+1,R2+2); + R31 = dDOT44(R1+2,R2+0); R32 = dDOT44(R1+2,R2+1); R33 = dDOT44(R1+2,R2+2); + + Q11 = btFabs(R11); Q12 = btFabs(R12); Q13 = btFabs(R13); + Q21 = btFabs(R21); Q22 = btFabs(R22); Q23 = btFabs(R23); + Q31 = btFabs(R31); Q32 = btFabs(R32); Q33 = btFabs(R33); + + // for all 15 possible separating axes: + // * see if the axis separates the boxes. if so, return 0. + // * find the depth of the penetration along the separating axis (s2) + // * if this is the largest depth so far, record it. + // the normal vector will be set to the separating axis with the smallest + // depth. note: normalR is set to point to a column of R1 or R2 if that is + // the smallest depth normal so far. otherwise normalR is 0 and normalC is + // set to a vector relative to body 1. invert_normal is 1 if the sign of + // the normal should be flipped. + +#define TST(expr1,expr2,norm,cc) \ + s2 = btFabs(expr1) - (expr2); \ + if (s2 > 0) return 0; \ + if (s2 > s) { \ + s = s2; \ + normalR = norm; \ + invert_normal = ((expr1) < 0); \ + code = (cc); \ + } + + s = -dInfinity; + invert_normal = 0; + code = 0; + + // separating axis = u1,u2,u3 + TST (pp[0],(A[0] + B[0]*Q11 + B[1]*Q12 + B[2]*Q13),R1+0,1); + TST (pp[1],(A[1] + B[0]*Q21 + B[1]*Q22 + B[2]*Q23),R1+1,2); + TST (pp[2],(A[2] + B[0]*Q31 + B[1]*Q32 + B[2]*Q33),R1+2,3); + + // separating axis = v1,v2,v3 + TST (dDOT41(R2+0,p),(A[0]*Q11 + A[1]*Q21 + A[2]*Q31 + B[0]),R2+0,4); + TST (dDOT41(R2+1,p),(A[0]*Q12 + A[1]*Q22 + A[2]*Q32 + B[1]),R2+1,5); + TST (dDOT41(R2+2,p),(A[0]*Q13 + A[1]*Q23 + A[2]*Q33 + B[2]),R2+2,6); + + // note: cross product axes need to be scaled when s is computed. + // normal (n1,n2,n3) is relative to box 1. +#undef TST +#define TST(expr1,expr2,n1,n2,n3,cc) \ + s2 = btFabs(expr1) - (expr2); \ + if (s2 > SIMD_EPSILON) return 0; \ + l = btSqrt((n1)*(n1) + (n2)*(n2) + (n3)*(n3)); \ + if (l > SIMD_EPSILON) { \ + s2 /= l; \ + if (s2*fudge_factor > s) { \ + s = s2; \ + normalR = 0; \ + normalC[0] = (n1)/l; normalC[1] = (n2)/l; normalC[2] = (n3)/l; \ + invert_normal = ((expr1) < 0); \ + code = (cc); \ + } \ + } + + // separating axis = u1 x (v1,v2,v3) + TST(pp[2]*R21-pp[1]*R31,(A[1]*Q31+A[2]*Q21+B[1]*Q13+B[2]*Q12),0,-R31,R21,7); + TST(pp[2]*R22-pp[1]*R32,(A[1]*Q32+A[2]*Q22+B[0]*Q13+B[2]*Q11),0,-R32,R22,8); + TST(pp[2]*R23-pp[1]*R33,(A[1]*Q33+A[2]*Q23+B[0]*Q12+B[1]*Q11),0,-R33,R23,9); + + // separating axis = u2 x (v1,v2,v3) + TST(pp[0]*R31-pp[2]*R11,(A[0]*Q31+A[2]*Q11+B[1]*Q23+B[2]*Q22),R31,0,-R11,10); + TST(pp[0]*R32-pp[2]*R12,(A[0]*Q32+A[2]*Q12+B[0]*Q23+B[2]*Q21),R32,0,-R12,11); + TST(pp[0]*R33-pp[2]*R13,(A[0]*Q33+A[2]*Q13+B[0]*Q22+B[1]*Q21),R33,0,-R13,12); + + // separating axis = u3 x (v1,v2,v3) + TST(pp[1]*R11-pp[0]*R21,(A[0]*Q21+A[1]*Q11+B[1]*Q33+B[2]*Q32),-R21,R11,0,13); + TST(pp[1]*R12-pp[0]*R22,(A[0]*Q22+A[1]*Q12+B[0]*Q33+B[2]*Q31),-R22,R12,0,14); + TST(pp[1]*R13-pp[0]*R23,(A[0]*Q23+A[1]*Q13+B[0]*Q32+B[1]*Q31),-R23,R13,0,15); + +#undef TST + + if (!code) return 0; + + // if we get to this point, the boxes interpenetrate. compute the normal + // in global coordinates. + if (normalR) { + normal[0] = normalR[0]; + normal[1] = normalR[4]; + normal[2] = normalR[8]; + } + else { + dMULTIPLY0_331 (normal,R1,normalC); + } + if (invert_normal) { + normal[0] = -normal[0]; + normal[1] = -normal[1]; + normal[2] = -normal[2]; + } + *depth = -s; + + // compute contact point(s) + + if (code > 6) { + // an edge from box 1 touches an edge from box 2. + // find a point pa on the intersecting edge of box 1 + btVector3 pa; + btScalar sign; + for (i=0; i<3; i++) pa[i] = p1[i]; + for (j=0; j<3; j++) { + sign = (dDOT14(normal,R1+j) > 0) ? btScalar(1.0) : btScalar(-1.0); + for (i=0; i<3; i++) pa[i] += sign * A[j] * R1[i*4+j]; + } + + // find a point pb on the intersecting edge of box 2 + btVector3 pb; + for (i=0; i<3; i++) pb[i] = p2[i]; + for (j=0; j<3; j++) { + sign = (dDOT14(normal,R2+j) > 0) ? btScalar(-1.0) : btScalar(1.0); + for (i=0; i<3; i++) pb[i] += sign * B[j] * R2[i*4+j]; + } + + btScalar alpha,beta; + btVector3 ua,ub; + for (i=0; i<3; i++) ua[i] = R1[((code)-7)/3 + i*4]; + for (i=0; i<3; i++) ub[i] = R2[((code)-7)%3 + i*4]; + + dLineClosestApproach (pa,ua,pb,ub,&alpha,&beta); + for (i=0; i<3; i++) pa[i] += ua[i]*alpha; + for (i=0; i<3; i++) pb[i] += ub[i]*beta; + + { + + //contact[0].pos[i] = btScalar(0.5)*(pa[i]+pb[i]); + //contact[0].depth = *depth; + btVector3 pointInWorld; + +#ifdef USE_CENTER_POINT + for (i=0; i<3; i++) + pointInWorld[i] = (pa[i]+pb[i])*btScalar(0.5); + output.addContactPoint(-normal,pointInWorld,-*depth); +#else + output.addContactPoint(-normal,pb,-*depth); + +#endif // + *return_code = code; + } + return 1; + } + + // okay, we have a face-something intersection (because the separating + // axis is perpendicular to a face). define face 'a' to be the reference + // face (i.e. the normal vector is perpendicular to this) and face 'b' to be + // the incident face (the closest face of the other box). + + const btScalar *Ra,*Rb,*pa,*pb,*Sa,*Sb; + if (code <= 3) { + Ra = R1; + Rb = R2; + pa = p1; + pb = p2; + Sa = A; + Sb = B; + } + else { + Ra = R2; + Rb = R1; + pa = p2; + pb = p1; + Sa = B; + Sb = A; + } + + // nr = normal vector of reference face dotted with axes of incident box. + // anr = absolute values of nr. + btVector3 normal2,nr,anr; + if (code <= 3) { + normal2[0] = normal[0]; + normal2[1] = normal[1]; + normal2[2] = normal[2]; + } + else { + normal2[0] = -normal[0]; + normal2[1] = -normal[1]; + normal2[2] = -normal[2]; + } + dMULTIPLY1_331 (nr,Rb,normal2); + anr[0] = btFabs (nr[0]); + anr[1] = btFabs (nr[1]); + anr[2] = btFabs (nr[2]); + + // find the largest compontent of anr: this corresponds to the normal + // for the indident face. the other axis numbers of the indicent face + // are stored in a1,a2. + int lanr,a1,a2; + if (anr[1] > anr[0]) { + if (anr[1] > anr[2]) { + a1 = 0; + lanr = 1; + a2 = 2; + } + else { + a1 = 0; + a2 = 1; + lanr = 2; + } + } + else { + if (anr[0] > anr[2]) { + lanr = 0; + a1 = 1; + a2 = 2; + } + else { + a1 = 0; + a2 = 1; + lanr = 2; + } + } + + // compute center point of incident face, in reference-face coordinates + btVector3 center; + if (nr[lanr] < 0) { + for (i=0; i<3; i++) center[i] = pb[i] - pa[i] + Sb[lanr] * Rb[i*4+lanr]; + } + else { + for (i=0; i<3; i++) center[i] = pb[i] - pa[i] - Sb[lanr] * Rb[i*4+lanr]; + } + + // find the normal and non-normal axis numbers of the reference box + int codeN,code1,code2; + if (code <= 3) codeN = code-1; else codeN = code-4; + if (codeN==0) { + code1 = 1; + code2 = 2; + } + else if (codeN==1) { + code1 = 0; + code2 = 2; + } + else { + code1 = 0; + code2 = 1; + } + + // find the four corners of the incident face, in reference-face coordinates + btScalar quad[8]; // 2D coordinate of incident face (x,y pairs) + btScalar c1,c2,m11,m12,m21,m22; + c1 = dDOT14 (center,Ra+code1); + c2 = dDOT14 (center,Ra+code2); + // optimize this? - we have already computed this data above, but it is not + // stored in an easy-to-index format. for now it's quicker just to recompute + // the four dot products. + m11 = dDOT44 (Ra+code1,Rb+a1); + m12 = dDOT44 (Ra+code1,Rb+a2); + m21 = dDOT44 (Ra+code2,Rb+a1); + m22 = dDOT44 (Ra+code2,Rb+a2); + { + btScalar k1 = m11*Sb[a1]; + btScalar k2 = m21*Sb[a1]; + btScalar k3 = m12*Sb[a2]; + btScalar k4 = m22*Sb[a2]; + quad[0] = c1 - k1 - k3; + quad[1] = c2 - k2 - k4; + quad[2] = c1 - k1 + k3; + quad[3] = c2 - k2 + k4; + quad[4] = c1 + k1 + k3; + quad[5] = c2 + k2 + k4; + quad[6] = c1 + k1 - k3; + quad[7] = c2 + k2 - k4; + } + + // find the size of the reference face + btScalar rect[2]; + rect[0] = Sa[code1]; + rect[1] = Sa[code2]; + + // intersect the incident and reference faces + btScalar ret[16]; + int n = intersectRectQuad2 (rect,quad,ret); + if (n < 1) return 0; // this should never happen + + // convert the intersection points into reference-face coordinates, + // and compute the contact position and depth for each point. only keep + // those points that have a positive (penetrating) depth. delete points in + // the 'ret' array as necessary so that 'point' and 'ret' correspond. + btScalar point[3*8]; // penetrating contact points + btScalar dep[8]; // depths for those points + btScalar det1 = 1.f/(m11*m22 - m12*m21); + m11 *= det1; + m12 *= det1; + m21 *= det1; + m22 *= det1; + int cnum = 0; // number of penetrating contact points found + for (j=0; j < n; j++) { + btScalar k1 = m22*(ret[j*2]-c1) - m12*(ret[j*2+1]-c2); + btScalar k2 = -m21*(ret[j*2]-c1) + m11*(ret[j*2+1]-c2); + for (i=0; i<3; i++) point[cnum*3+i] = + center[i] + k1*Rb[i*4+a1] + k2*Rb[i*4+a2]; + dep[cnum] = Sa[codeN] - dDOT(normal2,point+cnum*3); + if (dep[cnum] >= 0) { + ret[cnum*2] = ret[j*2]; + ret[cnum*2+1] = ret[j*2+1]; + cnum++; + } + } + if (cnum < 1) return 0; // this should never happen + + // we can't generate more contacts than we actually have + if (maxc > cnum) maxc = cnum; + if (maxc < 1) maxc = 1; + + if (cnum <= maxc) { + + if (code<4) + { + // we have less contacts than we need, so we use them all + for (j=0; j < cnum; j++) + { + btVector3 pointInWorld; + for (i=0; i<3; i++) + pointInWorld[i] = point[j*3+i] + pa[i]; + output.addContactPoint(-normal,pointInWorld,-dep[j]); + + } + } else + { + // we have less contacts than we need, so we use them all + for (j=0; j < cnum; j++) + { + btVector3 pointInWorld; + for (i=0; i<3; i++) + pointInWorld[i] = point[j*3+i] + pa[i]-normal[i]*dep[j]; + //pointInWorld[i] = point[j*3+i] + pa[i]; + output.addContactPoint(-normal,pointInWorld,-dep[j]); + } + } + } + else { + // we have more contacts than are wanted, some of them must be culled. + // find the deepest point, it is always the first contact. + int i1 = 0; + btScalar maxdepth = dep[0]; + for (i=1; i maxdepth) { + maxdepth = dep[i]; + i1 = i; + } + } + + int iret[8]; + cullPoints2 (cnum,ret,maxc,i1,iret); + + for (j=0; j < maxc; j++) { +// dContactGeom *con = CONTACT(contact,skip*j); + // for (i=0; i<3; i++) con->pos[i] = point[iret[j]*3+i] + pa[i]; + // con->depth = dep[iret[j]]; + + btVector3 posInWorld; + for (i=0; i<3; i++) + posInWorld[i] = point[iret[j]*3+i] + pa[i]; + if (code<4) + { + output.addContactPoint(-normal,posInWorld,-dep[iret[j]]); + } else + { + output.addContactPoint(-normal,posInWorld-normal*dep[iret[j]],-dep[iret[j]]); + } + } + cnum = maxc; + } + + *return_code = code; + return cnum; +} + +void btBoxBoxDetector::getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* /*debugDraw*/,bool /*swapResults*/) +{ + + const btTransform& transformA = input.m_transformA; + const btTransform& transformB = input.m_transformB; + + int skip = 0; + dContactGeom *contact = 0; + + dMatrix3 R1; + dMatrix3 R2; + + for (int j=0;j<3;j++) + { + R1[0+4*j] = transformA.getBasis()[j].x(); + R2[0+4*j] = transformB.getBasis()[j].x(); + + R1[1+4*j] = transformA.getBasis()[j].y(); + R2[1+4*j] = transformB.getBasis()[j].y(); + + + R1[2+4*j] = transformA.getBasis()[j].z(); + R2[2+4*j] = transformB.getBasis()[j].z(); + + } + + + + btVector3 normal; + btScalar depth; + int return_code; + int maxc = 4; + + + dBoxBox2 (transformA.getOrigin(), + R1, + 2.f*m_box1->getHalfExtentsWithMargin(), + transformB.getOrigin(), + R2, + 2.f*m_box2->getHalfExtentsWithMargin(), + normal, &depth, &return_code, + maxc, contact, skip, + output + ); + +} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxDetector.h b/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxDetector.h new file mode 100644 index 00000000000..605294d47bd --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxDetector.h @@ -0,0 +1,44 @@ +/* + * Box-Box collision detection re-distributed under the ZLib license with permission from Russell L. Smith + * Original version is from Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. + * All rights reserved. Email: russ@q12.org Web: www.q12.org + +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ +#ifndef BOX_BOX_DETECTOR_H +#define BOX_BOX_DETECTOR_H + + +class btBoxShape; +#include "BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h" + + +/// btBoxBoxDetector wraps the ODE box-box collision detector +/// re-distributed under the Zlib license with permission from Russell L. Smith +struct btBoxBoxDetector : public btDiscreteCollisionDetectorInterface +{ + btBoxShape* m_box1; + btBoxShape* m_box2; + +public: + + btBoxBoxDetector(btBoxShape* box1,btBoxShape* box2); + + virtual ~btBoxBoxDetector() {}; + + virtual void getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults=false); + +}; + +#endif //BT_BOX_BOX_DETECTOR_H diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionConfiguration.h b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionConfiguration.h new file mode 100644 index 00000000000..1db51a36d03 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionConfiguration.h @@ -0,0 +1,47 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_COLLISION_CONFIGURATION +#define BT_COLLISION_CONFIGURATION +struct btCollisionAlgorithmCreateFunc; + +class btStackAlloc; +class btPoolAllocator; + +///btCollisionConfiguration allows to configure Bullet collision detection +///stack allocator size, default collision algorithms and persistent manifold pool size +///@todo: describe the meaning +class btCollisionConfiguration +{ + +public: + + virtual ~btCollisionConfiguration() + { + } + + ///memory pools + virtual btPoolAllocator* getPersistentManifoldPool() = 0; + + virtual btPoolAllocator* getCollisionAlgorithmPool() = 0; + + virtual btStackAlloc* getStackAllocator() = 0; + + virtual btCollisionAlgorithmCreateFunc* getCollisionAlgorithmCreateFunc(int proxyType0,int proxyType1) =0; + +}; + +#endif //BT_COLLISION_CONFIGURATION + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h new file mode 100644 index 00000000000..a6da5f61a3c --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h @@ -0,0 +1,45 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef COLLISION_CREATE_FUNC +#define COLLISION_CREATE_FUNC + +#include "LinearMath/btAlignedObjectArray.h" +class btCollisionAlgorithm; +class btCollisionObject; + +struct btCollisionAlgorithmConstructionInfo; + +///Used by the btCollisionDispatcher to register and create instances for btCollisionAlgorithm +struct btCollisionAlgorithmCreateFunc +{ + bool m_swapped; + + btCollisionAlgorithmCreateFunc() + :m_swapped(false) + { + } + virtual ~btCollisionAlgorithmCreateFunc(){}; + + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& , btCollisionObject* body0,btCollisionObject* body1) + { + + (void)body0; + (void)body1; + return 0; + } +}; +#endif //COLLISION_CREATE_FUNC + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp new file mode 100644 index 00000000000..9fed44a19f7 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp @@ -0,0 +1,303 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#include "btCollisionDispatcher.h" + + +#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" + +#include "BulletCollision/CollisionShapes/btCollisionShape.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h" +#include "LinearMath/btPoolAllocator.h" +#include "BulletCollision/CollisionDispatch/btCollisionConfiguration.h" + +int gNumManifold = 0; + +#ifdef BT_DEBUG +#include +#endif + + +btCollisionDispatcher::btCollisionDispatcher (btCollisionConfiguration* collisionConfiguration): +m_dispatcherFlags(btCollisionDispatcher::CD_USE_RELATIVE_CONTACT_BREAKING_THRESHOLD), + m_collisionConfiguration(collisionConfiguration) +{ + int i; + + setNearCallback(defaultNearCallback); + + m_collisionAlgorithmPoolAllocator = collisionConfiguration->getCollisionAlgorithmPool(); + + m_persistentManifoldPoolAllocator = collisionConfiguration->getPersistentManifoldPool(); + + for (i=0;igetCollisionAlgorithmCreateFunc(i,j); + btAssert(m_doubleDispatch[i][j]); + } + } + + +} + + +void btCollisionDispatcher::registerCollisionCreateFunc(int proxyType0, int proxyType1, btCollisionAlgorithmCreateFunc *createFunc) +{ + m_doubleDispatch[proxyType0][proxyType1] = createFunc; +} + +btCollisionDispatcher::~btCollisionDispatcher() +{ +} + +btPersistentManifold* btCollisionDispatcher::getNewManifold(void* b0,void* b1) +{ + gNumManifold++; + + //btAssert(gNumManifold < 65535); + + + btCollisionObject* body0 = (btCollisionObject*)b0; + btCollisionObject* body1 = (btCollisionObject*)b1; + + //optional relative contact breaking threshold, turned on by default (use setDispatcherFlags to switch off feature for improved performance) + + btScalar contactBreakingThreshold = (m_dispatcherFlags & btCollisionDispatcher::CD_USE_RELATIVE_CONTACT_BREAKING_THRESHOLD) ? + btMin(body0->getCollisionShape()->getContactBreakingThreshold(gContactBreakingThreshold) , body1->getCollisionShape()->getContactBreakingThreshold(gContactBreakingThreshold)) + : gContactBreakingThreshold ; + + btScalar contactProcessingThreshold = btMin(body0->getContactProcessingThreshold(),body1->getContactProcessingThreshold()); + + void* mem = 0; + + if (m_persistentManifoldPoolAllocator->getFreeCount()) + { + mem = m_persistentManifoldPoolAllocator->allocate(sizeof(btPersistentManifold)); + } else + { + mem = btAlignedAlloc(sizeof(btPersistentManifold),16); + + } + btPersistentManifold* manifold = new(mem) btPersistentManifold (body0,body1,0,contactBreakingThreshold,contactProcessingThreshold); + manifold->m_index1a = m_manifoldsPtr.size(); + m_manifoldsPtr.push_back(manifold); + + return manifold; +} + +void btCollisionDispatcher::clearManifold(btPersistentManifold* manifold) +{ + manifold->clearManifold(); +} + + +void btCollisionDispatcher::releaseManifold(btPersistentManifold* manifold) +{ + + gNumManifold--; + + //printf("releaseManifold: gNumManifold %d\n",gNumManifold); + clearManifold(manifold); + + int findIndex = manifold->m_index1a; + btAssert(findIndex < m_manifoldsPtr.size()); + m_manifoldsPtr.swap(findIndex,m_manifoldsPtr.size()-1); + m_manifoldsPtr[findIndex]->m_index1a = findIndex; + m_manifoldsPtr.pop_back(); + + manifold->~btPersistentManifold(); + if (m_persistentManifoldPoolAllocator->validPtr(manifold)) + { + m_persistentManifoldPoolAllocator->freeMemory(manifold); + } else + { + btAlignedFree(manifold); + } + +} + + + +btCollisionAlgorithm* btCollisionDispatcher::findAlgorithm(btCollisionObject* body0,btCollisionObject* body1,btPersistentManifold* sharedManifold) +{ + + btCollisionAlgorithmConstructionInfo ci; + + ci.m_dispatcher1 = this; + ci.m_manifold = sharedManifold; + btCollisionAlgorithm* algo = m_doubleDispatch[body0->getCollisionShape()->getShapeType()][body1->getCollisionShape()->getShapeType()]->CreateCollisionAlgorithm(ci,body0,body1); + + return algo; +} + + + + +bool btCollisionDispatcher::needsResponse(btCollisionObject* body0,btCollisionObject* body1) +{ + //here you can do filtering + bool hasResponse = + (body0->hasContactResponse() && body1->hasContactResponse()); + //no response between two static/kinematic bodies: + hasResponse = hasResponse && + ((!body0->isStaticOrKinematicObject()) ||(! body1->isStaticOrKinematicObject())); + return hasResponse; +} + +bool btCollisionDispatcher::needsCollision(btCollisionObject* body0,btCollisionObject* body1) +{ + btAssert(body0); + btAssert(body1); + + bool needsCollision = true; + +#ifdef BT_DEBUG + if (!(m_dispatcherFlags & btCollisionDispatcher::CD_STATIC_STATIC_REPORTED)) + { + //broadphase filtering already deals with this + if ((body0->isStaticObject() || body0->isKinematicObject()) && + (body1->isStaticObject() || body1->isKinematicObject())) + { + m_dispatcherFlags |= btCollisionDispatcher::CD_STATIC_STATIC_REPORTED; + printf("warning btCollisionDispatcher::needsCollision: static-static collision!\n"); + } + } +#endif //BT_DEBUG + + if ((!body0->isActive()) && (!body1->isActive())) + needsCollision = false; + else if (!body0->checkCollideWith(body1)) + needsCollision = false; + + return needsCollision ; + +} + + + +///interface for iterating all overlapping collision pairs, no matter how those pairs are stored (array, set, map etc) +///this is useful for the collision dispatcher. +class btCollisionPairCallback : public btOverlapCallback +{ + const btDispatcherInfo& m_dispatchInfo; + btCollisionDispatcher* m_dispatcher; + +public: + + btCollisionPairCallback(const btDispatcherInfo& dispatchInfo,btCollisionDispatcher* dispatcher) + :m_dispatchInfo(dispatchInfo), + m_dispatcher(dispatcher) + { + } + + /*btCollisionPairCallback& operator=(btCollisionPairCallback& other) + { + m_dispatchInfo = other.m_dispatchInfo; + m_dispatcher = other.m_dispatcher; + return *this; + } + */ + + + virtual ~btCollisionPairCallback() {} + + + virtual bool processOverlap(btBroadphasePair& pair) + { + (*m_dispatcher->getNearCallback())(pair,*m_dispatcher,m_dispatchInfo); + + return false; + } +}; + + + +void btCollisionDispatcher::dispatchAllCollisionPairs(btOverlappingPairCache* pairCache,const btDispatcherInfo& dispatchInfo,btDispatcher* dispatcher) +{ + //m_blockedForChanges = true; + + btCollisionPairCallback collisionCallback(dispatchInfo,this); + + pairCache->processAllOverlappingPairs(&collisionCallback,dispatcher); + + //m_blockedForChanges = false; + +} + + + + +//by default, Bullet will use this near callback +void btCollisionDispatcher::defaultNearCallback(btBroadphasePair& collisionPair, btCollisionDispatcher& dispatcher, const btDispatcherInfo& dispatchInfo) +{ + btCollisionObject* colObj0 = (btCollisionObject*)collisionPair.m_pProxy0->m_clientObject; + btCollisionObject* colObj1 = (btCollisionObject*)collisionPair.m_pProxy1->m_clientObject; + + if (dispatcher.needsCollision(colObj0,colObj1)) + { + //dispatcher will keep algorithms persistent in the collision pair + if (!collisionPair.m_algorithm) + { + collisionPair.m_algorithm = dispatcher.findAlgorithm(colObj0,colObj1); + } + + if (collisionPair.m_algorithm) + { + btManifoldResult contactPointResult(colObj0,colObj1); + + if (dispatchInfo.m_dispatchFunc == btDispatcherInfo::DISPATCH_DISCRETE) + { + //discrete collision detection query + collisionPair.m_algorithm->processCollision(colObj0,colObj1,dispatchInfo,&contactPointResult); + } else + { + //continuous collision detection query, time of impact (toi) + btScalar toi = collisionPair.m_algorithm->calculateTimeOfImpact(colObj0,colObj1,dispatchInfo,&contactPointResult); + if (dispatchInfo.m_timeOfImpact > toi) + dispatchInfo.m_timeOfImpact = toi; + + } + } + } + +} + + +void* btCollisionDispatcher::allocateCollisionAlgorithm(int size) +{ + if (m_collisionAlgorithmPoolAllocator->getFreeCount()) + { + return m_collisionAlgorithmPoolAllocator->allocate(size); + } + + //warn user for overflow? + return btAlignedAlloc(static_cast(size), 16); +} + +void btCollisionDispatcher::freeCollisionAlgorithm(void* ptr) +{ + if (m_collisionAlgorithmPoolAllocator->validPtr(ptr)) + { + m_collisionAlgorithmPoolAllocator->freeMemory(ptr); + } else + { + btAlignedFree(ptr); + } +} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionDispatcher.h b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionDispatcher.h new file mode 100644 index 00000000000..09ed1d67e1c --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionDispatcher.h @@ -0,0 +1,159 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef COLLISION__DISPATCHER_H +#define COLLISION__DISPATCHER_H + +#include "BulletCollision/BroadphaseCollision/btDispatcher.h" +#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" + +#include "BulletCollision/CollisionDispatch/btManifoldResult.h" + +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "LinearMath/btAlignedObjectArray.h" + +class btIDebugDraw; +class btOverlappingPairCache; +class btPoolAllocator; +class btCollisionConfiguration; + +#include "btCollisionCreateFunc.h" + +#define USE_DISPATCH_REGISTRY_ARRAY 1 + +class btCollisionDispatcher; +///user can override this nearcallback for collision filtering and more finegrained control over collision detection +typedef void (*btNearCallback)(btBroadphasePair& collisionPair, btCollisionDispatcher& dispatcher, const btDispatcherInfo& dispatchInfo); + + +///btCollisionDispatcher supports algorithms that handle ConvexConvex and ConvexConcave collision pairs. +///Time of Impact, Closest Points and Penetration Depth. +class btCollisionDispatcher : public btDispatcher +{ + int m_dispatcherFlags; + + btAlignedObjectArray m_manifoldsPtr; + + btManifoldResult m_defaultManifoldResult; + + btNearCallback m_nearCallback; + + btPoolAllocator* m_collisionAlgorithmPoolAllocator; + + btPoolAllocator* m_persistentManifoldPoolAllocator; + + btCollisionAlgorithmCreateFunc* m_doubleDispatch[MAX_BROADPHASE_COLLISION_TYPES][MAX_BROADPHASE_COLLISION_TYPES]; + + btCollisionConfiguration* m_collisionConfiguration; + + +public: + + enum DispatcherFlags + { + CD_STATIC_STATIC_REPORTED = 1, + CD_USE_RELATIVE_CONTACT_BREAKING_THRESHOLD = 2 + }; + + int getDispatherFlags() const + { + return m_dispatcherFlags; + } + + void setDispatcherFlags(int flags) + { + (void) flags; + m_dispatcherFlags = 0; + } + + ///registerCollisionCreateFunc allows registration of custom/alternative collision create functions + void registerCollisionCreateFunc(int proxyType0,int proxyType1, btCollisionAlgorithmCreateFunc* createFunc); + + int getNumManifolds() const + { + return int( m_manifoldsPtr.size()); + } + + btPersistentManifold** getInternalManifoldPointer() + { + return &m_manifoldsPtr[0]; + } + + btPersistentManifold* getManifoldByIndexInternal(int index) + { + return m_manifoldsPtr[index]; + } + + const btPersistentManifold* getManifoldByIndexInternal(int index) const + { + return m_manifoldsPtr[index]; + } + + btCollisionDispatcher (btCollisionConfiguration* collisionConfiguration); + + virtual ~btCollisionDispatcher(); + + virtual btPersistentManifold* getNewManifold(void* b0,void* b1); + + virtual void releaseManifold(btPersistentManifold* manifold); + + + virtual void clearManifold(btPersistentManifold* manifold); + + + btCollisionAlgorithm* findAlgorithm(btCollisionObject* body0,btCollisionObject* body1,btPersistentManifold* sharedManifold = 0); + + virtual bool needsCollision(btCollisionObject* body0,btCollisionObject* body1); + + virtual bool needsResponse(btCollisionObject* body0,btCollisionObject* body1); + + virtual void dispatchAllCollisionPairs(btOverlappingPairCache* pairCache,const btDispatcherInfo& dispatchInfo,btDispatcher* dispatcher) ; + + void setNearCallback(btNearCallback nearCallback) + { + m_nearCallback = nearCallback; + } + + btNearCallback getNearCallback() const + { + return m_nearCallback; + } + + //by default, Bullet will use this near callback + static void defaultNearCallback(btBroadphasePair& collisionPair, btCollisionDispatcher& dispatcher, const btDispatcherInfo& dispatchInfo); + + virtual void* allocateCollisionAlgorithm(int size); + + virtual void freeCollisionAlgorithm(void* ptr); + + btCollisionConfiguration* getCollisionConfiguration() + { + return m_collisionConfiguration; + } + + const btCollisionConfiguration* getCollisionConfiguration() const + { + return m_collisionConfiguration; + } + + void setCollisionConfiguration(btCollisionConfiguration* config) + { + m_collisionConfiguration = config; + } + +}; + +#endif //COLLISION__DISPATCHER_H + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionObject.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionObject.cpp new file mode 100644 index 00000000000..ffb2d1edc75 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionObject.cpp @@ -0,0 +1,115 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btCollisionObject.h" +#include "LinearMath/btSerializer.h" + +btCollisionObject::btCollisionObject() + : m_anisotropicFriction(1.f,1.f,1.f), + m_hasAnisotropicFriction(false), + m_contactProcessingThreshold(BT_LARGE_FLOAT), + m_broadphaseHandle(0), + m_collisionShape(0), + m_rootCollisionShape(0), + m_collisionFlags(btCollisionObject::CF_STATIC_OBJECT), + m_islandTag1(-1), + m_companionId(-1), + m_activationState1(1), + m_deactivationTime(btScalar(0.)), + m_friction(btScalar(0.5)), + m_restitution(btScalar(0.)), + m_internalType(CO_COLLISION_OBJECT), + m_userObjectPointer(0), + m_hitFraction(btScalar(1.)), + m_ccdSweptSphereRadius(btScalar(0.)), + m_ccdMotionThreshold(btScalar(0.)), + m_checkCollideWith(false) +{ + m_worldTransform.setIdentity(); +} + +btCollisionObject::~btCollisionObject() +{ +} + +void btCollisionObject::setActivationState(int newState) +{ + if ( (m_activationState1 != DISABLE_DEACTIVATION) && (m_activationState1 != DISABLE_SIMULATION)) + m_activationState1 = newState; +} + +void btCollisionObject::forceActivationState(int newState) +{ + m_activationState1 = newState; +} + +void btCollisionObject::activate(bool forceActivation) +{ + if (forceActivation || !(m_collisionFlags & (CF_STATIC_OBJECT|CF_KINEMATIC_OBJECT))) + { + setActivationState(ACTIVE_TAG); + m_deactivationTime = btScalar(0.); + } +} + +const char* btCollisionObject::serialize(void* dataBuffer, btSerializer* serializer) const +{ + + btCollisionObjectData* dataOut = (btCollisionObjectData*)dataBuffer; + + m_worldTransform.serialize(dataOut->m_worldTransform); + m_interpolationWorldTransform.serialize(dataOut->m_interpolationWorldTransform); + m_interpolationLinearVelocity.serialize(dataOut->m_interpolationLinearVelocity); + m_interpolationAngularVelocity.serialize(dataOut->m_interpolationAngularVelocity); + m_anisotropicFriction.serialize(dataOut->m_anisotropicFriction); + dataOut->m_hasAnisotropicFriction = m_hasAnisotropicFriction; + dataOut->m_contactProcessingThreshold = m_contactProcessingThreshold; + dataOut->m_broadphaseHandle = 0; + dataOut->m_collisionShape = serializer->getUniquePointer(m_collisionShape); + dataOut->m_rootCollisionShape = 0;//@todo + dataOut->m_collisionFlags = m_collisionFlags; + dataOut->m_islandTag1 = m_islandTag1; + dataOut->m_companionId = m_companionId; + dataOut->m_activationState1 = m_activationState1; + dataOut->m_activationState1 = m_activationState1; + dataOut->m_deactivationTime = m_deactivationTime; + dataOut->m_friction = m_friction; + dataOut->m_restitution = m_restitution; + dataOut->m_internalType = m_internalType; + + char* name = (char*) serializer->findNameForPointer(this); + dataOut->m_name = (char*)serializer->getUniquePointer(name); + if (dataOut->m_name) + { + serializer->serializeName(name); + } + dataOut->m_hitFraction = m_hitFraction; + dataOut->m_ccdSweptSphereRadius = m_ccdSweptSphereRadius; + dataOut->m_ccdMotionThreshold = m_ccdMotionThreshold; + dataOut->m_ccdMotionThreshold = m_ccdMotionThreshold; + dataOut->m_checkCollideWith = m_checkCollideWith; + + return btCollisionObjectDataName; +} + + +void btCollisionObject::serializeSingleObject(class btSerializer* serializer) const +{ + int len = calculateSerializeBufferSize(); + btChunk* chunk = serializer->allocate(len,1); + const char* structType = serialize(chunk->m_oldPtr, serializer); + serializer->finalizeChunk(chunk,structType,BT_COLLISIONOBJECT_CODE,(void*)this); +} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionObject.h b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionObject.h new file mode 100644 index 00000000000..549b404dc07 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionObject.h @@ -0,0 +1,508 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef COLLISION_OBJECT_H +#define COLLISION_OBJECT_H + +#include "LinearMath/btTransform.h" + +//island management, m_activationState1 +#define ACTIVE_TAG 1 +#define ISLAND_SLEEPING 2 +#define WANTS_DEACTIVATION 3 +#define DISABLE_DEACTIVATION 4 +#define DISABLE_SIMULATION 5 + +struct btBroadphaseProxy; +class btCollisionShape; +struct btCollisionShapeData; +#include "LinearMath/btMotionState.h" +#include "LinearMath/btAlignedAllocator.h" +#include "LinearMath/btAlignedObjectArray.h" + +typedef btAlignedObjectArray btCollisionObjectArray; + +#ifdef BT_USE_DOUBLE_PRECISION +#define btCollisionObjectData btCollisionObjectDoubleData +#define btCollisionObjectDataName "btCollisionObjectDoubleData" +#else +#define btCollisionObjectData btCollisionObjectFloatData +#define btCollisionObjectDataName "btCollisionObjectFloatData" +#endif + + +/// btCollisionObject can be used to manage collision detection objects. +/// btCollisionObject maintains all information that is needed for a collision detection: Shape, Transform and AABB proxy. +/// They can be added to the btCollisionWorld. +ATTRIBUTE_ALIGNED16(class) btCollisionObject +{ + +protected: + + btTransform m_worldTransform; + + ///m_interpolationWorldTransform is used for CCD and interpolation + ///it can be either previous or future (predicted) transform + btTransform m_interpolationWorldTransform; + //those two are experimental: just added for bullet time effect, so you can still apply impulses (directly modifying velocities) + //without destroying the continuous interpolated motion (which uses this interpolation velocities) + btVector3 m_interpolationLinearVelocity; + btVector3 m_interpolationAngularVelocity; + + btVector3 m_anisotropicFriction; + int m_hasAnisotropicFriction; + btScalar m_contactProcessingThreshold; + + btBroadphaseProxy* m_broadphaseHandle; + btCollisionShape* m_collisionShape; + + ///m_rootCollisionShape is temporarily used to store the original collision shape + ///The m_collisionShape might be temporarily replaced by a child collision shape during collision detection purposes + ///If it is NULL, the m_collisionShape is not temporarily replaced. + btCollisionShape* m_rootCollisionShape; + + int m_collisionFlags; + + int m_islandTag1; + int m_companionId; + + int m_activationState1; + btScalar m_deactivationTime; + + btScalar m_friction; + btScalar m_restitution; + + ///m_internalType is reserved to distinguish Bullet's btCollisionObject, btRigidBody, btSoftBody, btGhostObject etc. + ///do not assign your own m_internalType unless you write a new dynamics object class. + int m_internalType; + + ///users can point to their objects, m_userPointer is not used by Bullet, see setUserPointer/getUserPointer + void* m_userObjectPointer; + + ///time of impact calculation + btScalar m_hitFraction; + + ///Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm:: + btScalar m_ccdSweptSphereRadius; + + /// Don't do continuous collision detection if the motion (in one step) is less then m_ccdMotionThreshold + btScalar m_ccdMotionThreshold; + + /// If some object should have elaborate collision filtering by sub-classes + int m_checkCollideWith; + + virtual bool checkCollideWithOverride(btCollisionObject* /* co */) + { + return true; + } + +public: + + BT_DECLARE_ALIGNED_ALLOCATOR(); + + enum CollisionFlags + { + CF_STATIC_OBJECT= 1, + CF_KINEMATIC_OBJECT= 2, + CF_NO_CONTACT_RESPONSE = 4, + CF_CUSTOM_MATERIAL_CALLBACK = 8,//this allows per-triangle material (friction/restitution) + CF_CHARACTER_OBJECT = 16, + CF_DISABLE_VISUALIZE_OBJECT = 32, //disable debug drawing + CF_DISABLE_SPU_COLLISION_PROCESSING = 64//disable parallel/SPU processing + }; + + enum CollisionObjectTypes + { + CO_COLLISION_OBJECT =1, + CO_RIGID_BODY, + ///CO_GHOST_OBJECT keeps track of all objects overlapping its AABB and that pass its collision filter + ///It is useful for collision sensors, explosion objects, character controller etc. + CO_GHOST_OBJECT, + CO_SOFT_BODY, + CO_HF_FLUID + }; + + SIMD_FORCE_INLINE bool mergesSimulationIslands() const + { + ///static objects, kinematic and object without contact response don't merge islands + return ((m_collisionFlags & (CF_STATIC_OBJECT | CF_KINEMATIC_OBJECT | CF_NO_CONTACT_RESPONSE) )==0); + } + + const btVector3& getAnisotropicFriction() const + { + return m_anisotropicFriction; + } + void setAnisotropicFriction(const btVector3& anisotropicFriction) + { + m_anisotropicFriction = anisotropicFriction; + m_hasAnisotropicFriction = (anisotropicFriction[0]!=1.f) || (anisotropicFriction[1]!=1.f) || (anisotropicFriction[2]!=1.f); + } + bool hasAnisotropicFriction() const + { + return m_hasAnisotropicFriction!=0; + } + + ///the constraint solver can discard solving contacts, if the distance is above this threshold. 0 by default. + ///Note that using contacts with positive distance can improve stability. It increases, however, the chance of colliding with degerate contacts, such as 'interior' triangle edges + void setContactProcessingThreshold( btScalar contactProcessingThreshold) + { + m_contactProcessingThreshold = contactProcessingThreshold; + } + btScalar getContactProcessingThreshold() const + { + return m_contactProcessingThreshold; + } + + SIMD_FORCE_INLINE bool isStaticObject() const { + return (m_collisionFlags & CF_STATIC_OBJECT) != 0; + } + + SIMD_FORCE_INLINE bool isKinematicObject() const + { + return (m_collisionFlags & CF_KINEMATIC_OBJECT) != 0; + } + + SIMD_FORCE_INLINE bool isStaticOrKinematicObject() const + { + return (m_collisionFlags & (CF_KINEMATIC_OBJECT | CF_STATIC_OBJECT)) != 0 ; + } + + SIMD_FORCE_INLINE bool hasContactResponse() const { + return (m_collisionFlags & CF_NO_CONTACT_RESPONSE)==0; + } + + + btCollisionObject(); + + virtual ~btCollisionObject(); + + virtual void setCollisionShape(btCollisionShape* collisionShape) + { + m_collisionShape = collisionShape; + m_rootCollisionShape = collisionShape; + } + + SIMD_FORCE_INLINE const btCollisionShape* getCollisionShape() const + { + return m_collisionShape; + } + + SIMD_FORCE_INLINE btCollisionShape* getCollisionShape() + { + return m_collisionShape; + } + + SIMD_FORCE_INLINE const btCollisionShape* getRootCollisionShape() const + { + return m_rootCollisionShape; + } + + SIMD_FORCE_INLINE btCollisionShape* getRootCollisionShape() + { + return m_rootCollisionShape; + } + + ///Avoid using this internal API call + ///internalSetTemporaryCollisionShape is used to temporary replace the actual collision shape by a child collision shape. + void internalSetTemporaryCollisionShape(btCollisionShape* collisionShape) + { + m_collisionShape = collisionShape; + } + + SIMD_FORCE_INLINE int getActivationState() const { return m_activationState1;} + + void setActivationState(int newState); + + void setDeactivationTime(btScalar time) + { + m_deactivationTime = time; + } + btScalar getDeactivationTime() const + { + return m_deactivationTime; + } + + void forceActivationState(int newState); + + void activate(bool forceActivation = false); + + SIMD_FORCE_INLINE bool isActive() const + { + return ((getActivationState() != ISLAND_SLEEPING) && (getActivationState() != DISABLE_SIMULATION)); + } + + void setRestitution(btScalar rest) + { + m_restitution = rest; + } + btScalar getRestitution() const + { + return m_restitution; + } + void setFriction(btScalar frict) + { + m_friction = frict; + } + btScalar getFriction() const + { + return m_friction; + } + + ///reserved for Bullet internal usage + int getInternalType() const + { + return m_internalType; + } + + btTransform& getWorldTransform() + { + return m_worldTransform; + } + + const btTransform& getWorldTransform() const + { + return m_worldTransform; + } + + void setWorldTransform(const btTransform& worldTrans) + { + m_worldTransform = worldTrans; + } + + + SIMD_FORCE_INLINE btBroadphaseProxy* getBroadphaseHandle() + { + return m_broadphaseHandle; + } + + SIMD_FORCE_INLINE const btBroadphaseProxy* getBroadphaseHandle() const + { + return m_broadphaseHandle; + } + + void setBroadphaseHandle(btBroadphaseProxy* handle) + { + m_broadphaseHandle = handle; + } + + + const btTransform& getInterpolationWorldTransform() const + { + return m_interpolationWorldTransform; + } + + btTransform& getInterpolationWorldTransform() + { + return m_interpolationWorldTransform; + } + + void setInterpolationWorldTransform(const btTransform& trans) + { + m_interpolationWorldTransform = trans; + } + + void setInterpolationLinearVelocity(const btVector3& linvel) + { + m_interpolationLinearVelocity = linvel; + } + + void setInterpolationAngularVelocity(const btVector3& angvel) + { + m_interpolationAngularVelocity = angvel; + } + + const btVector3& getInterpolationLinearVelocity() const + { + return m_interpolationLinearVelocity; + } + + const btVector3& getInterpolationAngularVelocity() const + { + return m_interpolationAngularVelocity; + } + + SIMD_FORCE_INLINE int getIslandTag() const + { + return m_islandTag1; + } + + void setIslandTag(int tag) + { + m_islandTag1 = tag; + } + + SIMD_FORCE_INLINE int getCompanionId() const + { + return m_companionId; + } + + void setCompanionId(int id) + { + m_companionId = id; + } + + SIMD_FORCE_INLINE btScalar getHitFraction() const + { + return m_hitFraction; + } + + void setHitFraction(btScalar hitFraction) + { + m_hitFraction = hitFraction; + } + + + SIMD_FORCE_INLINE int getCollisionFlags() const + { + return m_collisionFlags; + } + + void setCollisionFlags(int flags) + { + m_collisionFlags = flags; + } + + ///Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm:: + btScalar getCcdSweptSphereRadius() const + { + return m_ccdSweptSphereRadius; + } + + ///Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm:: + void setCcdSweptSphereRadius(btScalar radius) + { + m_ccdSweptSphereRadius = radius; + } + + btScalar getCcdMotionThreshold() const + { + return m_ccdMotionThreshold; + } + + btScalar getCcdSquareMotionThreshold() const + { + return m_ccdMotionThreshold*m_ccdMotionThreshold; + } + + + + /// Don't do continuous collision detection if the motion (in one step) is less then m_ccdMotionThreshold + void setCcdMotionThreshold(btScalar ccdMotionThreshold) + { + m_ccdMotionThreshold = ccdMotionThreshold; + } + + ///users can point to their objects, userPointer is not used by Bullet + void* getUserPointer() const + { + return m_userObjectPointer; + } + + ///users can point to their objects, userPointer is not used by Bullet + void setUserPointer(void* userPointer) + { + m_userObjectPointer = userPointer; + } + + + inline bool checkCollideWith(btCollisionObject* co) + { + if (m_checkCollideWith) + return checkCollideWithOverride(co); + + return true; + } + + virtual int calculateSerializeBufferSize() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, class btSerializer* serializer) const; + + virtual void serializeSingleObject(class btSerializer* serializer) const; + +}; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btCollisionObjectDoubleData +{ + void *m_broadphaseHandle; + void *m_collisionShape; + btCollisionShapeData *m_rootCollisionShape; + char *m_name; + + btTransformDoubleData m_worldTransform; + btTransformDoubleData m_interpolationWorldTransform; + btVector3DoubleData m_interpolationLinearVelocity; + btVector3DoubleData m_interpolationAngularVelocity; + btVector3DoubleData m_anisotropicFriction; + double m_contactProcessingThreshold; + double m_deactivationTime; + double m_friction; + double m_restitution; + double m_hitFraction; + double m_ccdSweptSphereRadius; + double m_ccdMotionThreshold; + + int m_hasAnisotropicFriction; + int m_collisionFlags; + int m_islandTag1; + int m_companionId; + int m_activationState1; + int m_internalType; + int m_checkCollideWith; + + char m_padding[4]; +}; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btCollisionObjectFloatData +{ + void *m_broadphaseHandle; + void *m_collisionShape; + btCollisionShapeData *m_rootCollisionShape; + char *m_name; + + btTransformFloatData m_worldTransform; + btTransformFloatData m_interpolationWorldTransform; + btVector3FloatData m_interpolationLinearVelocity; + btVector3FloatData m_interpolationAngularVelocity; + btVector3FloatData m_anisotropicFriction; + float m_contactProcessingThreshold; + float m_deactivationTime; + float m_friction; + float m_restitution; + float m_hitFraction; + float m_ccdSweptSphereRadius; + float m_ccdMotionThreshold; + + int m_hasAnisotropicFriction; + int m_collisionFlags; + int m_islandTag1; + int m_companionId; + int m_activationState1; + int m_internalType; + int m_checkCollideWith; +}; + + + +SIMD_FORCE_INLINE int btCollisionObject::calculateSerializeBufferSize() const +{ + return sizeof(btCollisionObjectData); +} + + + +#endif //COLLISION_OBJECT_H diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionWorld.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionWorld.cpp new file mode 100644 index 00000000000..e478d1bb16c --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionWorld.cpp @@ -0,0 +1,1416 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btCollisionWorld.h" +#include "btCollisionDispatcher.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "BulletCollision/CollisionShapes/btCollisionShape.h" +#include "BulletCollision/CollisionShapes/btConvexShape.h" +#include "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h" +#include "BulletCollision/CollisionShapes/btSphereShape.h" //for raycasting +#include "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h" //for raycasting +#include "BulletCollision/NarrowPhaseCollision/btRaycastCallback.h" +#include "BulletCollision/CollisionShapes/btCompoundShape.h" +#include "BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h" +#include "BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h" +#include "BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h" +#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h" +#include "LinearMath/btAabbUtil2.h" +#include "LinearMath/btQuickprof.h" +#include "LinearMath/btStackAlloc.h" +#include "LinearMath/btSerializer.h" + +//#define USE_BRUTEFORCE_RAYBROADPHASE 1 +//RECALCULATE_AABB is slower, but benefit is that you don't need to call 'stepSimulation' or 'updateAabbs' before using a rayTest +//#define RECALCULATE_AABB_RAYCAST 1 + +//When the user doesn't provide dispatcher or broadphase, create basic versions (and delete them in destructor) +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" +#include "BulletCollision/BroadphaseCollision/btSimpleBroadphase.h" +#include "BulletCollision/CollisionDispatch/btCollisionConfiguration.h" + + +///for debug drawing + +//for debug rendering +#include "BulletCollision/CollisionShapes/btBoxShape.h" +#include "BulletCollision/CollisionShapes/btCapsuleShape.h" +#include "BulletCollision/CollisionShapes/btCompoundShape.h" +#include "BulletCollision/CollisionShapes/btConeShape.h" +#include "BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h" +#include "BulletCollision/CollisionShapes/btCylinderShape.h" +#include "BulletCollision/CollisionShapes/btMultiSphereShape.h" +#include "BulletCollision/CollisionShapes/btPolyhedralConvexShape.h" +#include "BulletCollision/CollisionShapes/btSphereShape.h" +#include "BulletCollision/CollisionShapes/btTriangleCallback.h" +#include "BulletCollision/CollisionShapes/btTriangleMeshShape.h" +#include "BulletCollision/CollisionShapes/btStaticPlaneShape.h" + + + +btCollisionWorld::btCollisionWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache, btCollisionConfiguration* collisionConfiguration) +:m_dispatcher1(dispatcher), +m_broadphasePairCache(pairCache), +m_debugDrawer(0), +m_forceUpdateAllAabbs(true) +{ + m_stackAlloc = collisionConfiguration->getStackAllocator(); + m_dispatchInfo.m_stackAllocator = m_stackAlloc; +} + + +btCollisionWorld::~btCollisionWorld() +{ + + //clean up remaining objects + int i; + for (i=0;igetBroadphaseHandle(); + if (bp) + { + // + // only clear the cached algorithms + // + getBroadphase()->getOverlappingPairCache()->cleanProxyFromPairs(bp,m_dispatcher1); + getBroadphase()->destroyProxy(bp,m_dispatcher1); + collisionObject->setBroadphaseHandle(0); + } + } + + +} + + + + + + + + + + +void btCollisionWorld::addCollisionObject(btCollisionObject* collisionObject,short int collisionFilterGroup,short int collisionFilterMask) +{ + + btAssert(collisionObject); + + //check that the object isn't already added + btAssert( m_collisionObjects.findLinearSearch(collisionObject) == m_collisionObjects.size()); + + m_collisionObjects.push_back(collisionObject); + + //calculate new AABB + btTransform trans = collisionObject->getWorldTransform(); + + btVector3 minAabb; + btVector3 maxAabb; + collisionObject->getCollisionShape()->getAabb(trans,minAabb,maxAabb); + + int type = collisionObject->getCollisionShape()->getShapeType(); + collisionObject->setBroadphaseHandle( getBroadphase()->createProxy( + minAabb, + maxAabb, + type, + collisionObject, + collisionFilterGroup, + collisionFilterMask, + m_dispatcher1,0 + )) ; + + + + + +} + + + +void btCollisionWorld::updateSingleAabb(btCollisionObject* colObj) +{ + btVector3 minAabb,maxAabb; + colObj->getCollisionShape()->getAabb(colObj->getWorldTransform(), minAabb,maxAabb); + //need to increase the aabb for contact thresholds + btVector3 contactThreshold(gContactBreakingThreshold,gContactBreakingThreshold,gContactBreakingThreshold); + minAabb -= contactThreshold; + maxAabb += contactThreshold; + + btBroadphaseInterface* bp = (btBroadphaseInterface*)m_broadphasePairCache; + + //moving objects should be moderately sized, probably something wrong if not + if ( colObj->isStaticObject() || ((maxAabb-minAabb).length2() < btScalar(1e12))) + { + bp->setAabb(colObj->getBroadphaseHandle(),minAabb,maxAabb, m_dispatcher1); + } else + { + //something went wrong, investigate + //this assert is unwanted in 3D modelers (danger of loosing work) + colObj->setActivationState(DISABLE_SIMULATION); + + static bool reportMe = true; + if (reportMe && m_debugDrawer) + { + reportMe = false; + m_debugDrawer->reportErrorWarning("Overflow in AABB, object removed from simulation"); + m_debugDrawer->reportErrorWarning("If you can reproduce this, please email bugs@continuousphysics.com\n"); + m_debugDrawer->reportErrorWarning("Please include above information, your Platform, version of OS.\n"); + m_debugDrawer->reportErrorWarning("Thanks.\n"); + } + } +} + +void btCollisionWorld::updateAabbs() +{ + BT_PROFILE("updateAabbs"); + + btTransform predictedTrans; + for ( int i=0;iisActive()) + { + updateSingleAabb(colObj); + } + } +} + + + +void btCollisionWorld::performDiscreteCollisionDetection() +{ + BT_PROFILE("performDiscreteCollisionDetection"); + + btDispatcherInfo& dispatchInfo = getDispatchInfo(); + + updateAabbs(); + + { + BT_PROFILE("calculateOverlappingPairs"); + m_broadphasePairCache->calculateOverlappingPairs(m_dispatcher1); + } + + + btDispatcher* dispatcher = getDispatcher(); + { + BT_PROFILE("dispatchAllCollisionPairs"); + if (dispatcher) + dispatcher->dispatchAllCollisionPairs(m_broadphasePairCache->getOverlappingPairCache(),dispatchInfo,m_dispatcher1); + } + +} + + + +void btCollisionWorld::removeCollisionObject(btCollisionObject* collisionObject) +{ + + + //bool removeFromBroadphase = false; + + { + + btBroadphaseProxy* bp = collisionObject->getBroadphaseHandle(); + if (bp) + { + // + // only clear the cached algorithms + // + getBroadphase()->getOverlappingPairCache()->cleanProxyFromPairs(bp,m_dispatcher1); + getBroadphase()->destroyProxy(bp,m_dispatcher1); + collisionObject->setBroadphaseHandle(0); + } + } + + + //swapremove + m_collisionObjects.remove(collisionObject); + +} + + + +void btCollisionWorld::rayTestSingle(const btTransform& rayFromTrans,const btTransform& rayToTrans, + btCollisionObject* collisionObject, + const btCollisionShape* collisionShape, + const btTransform& colObjWorldTransform, + RayResultCallback& resultCallback) +{ + btSphereShape pointShape(btScalar(0.0)); + pointShape.setMargin(0.f); + const btConvexShape* castShape = &pointShape; + + if (collisionShape->isConvex()) + { + // BT_PROFILE("rayTestConvex"); + btConvexCast::CastResult castResult; + castResult.m_fraction = resultCallback.m_closestHitFraction; + + btConvexShape* convexShape = (btConvexShape*) collisionShape; + btVoronoiSimplexSolver simplexSolver; +#define USE_SUBSIMPLEX_CONVEX_CAST 1 +#ifdef USE_SUBSIMPLEX_CONVEX_CAST + btSubsimplexConvexCast convexCaster(castShape,convexShape,&simplexSolver); +#else + //btGjkConvexCast convexCaster(castShape,convexShape,&simplexSolver); + //btContinuousConvexCollision convexCaster(castShape,convexShape,&simplexSolver,0); +#endif //#USE_SUBSIMPLEX_CONVEX_CAST + + if (convexCaster.calcTimeOfImpact(rayFromTrans,rayToTrans,colObjWorldTransform,colObjWorldTransform,castResult)) + { + //add hit + if (castResult.m_normal.length2() > btScalar(0.0001)) + { + if (castResult.m_fraction < resultCallback.m_closestHitFraction) + { +#ifdef USE_SUBSIMPLEX_CONVEX_CAST + //rotate normal into worldspace + castResult.m_normal = rayFromTrans.getBasis() * castResult.m_normal; +#endif //USE_SUBSIMPLEX_CONVEX_CAST + + castResult.m_normal.normalize(); + btCollisionWorld::LocalRayResult localRayResult + ( + collisionObject, + 0, + castResult.m_normal, + castResult.m_fraction + ); + + bool normalInWorldSpace = true; + resultCallback.addSingleResult(localRayResult, normalInWorldSpace); + + } + } + } + } else { + if (collisionShape->isConcave()) + { + // BT_PROFILE("rayTestConcave"); + if (collisionShape->getShapeType()==TRIANGLE_MESH_SHAPE_PROXYTYPE) + { + ///optimized version for btBvhTriangleMeshShape + btBvhTriangleMeshShape* triangleMesh = (btBvhTriangleMeshShape*)collisionShape; + btTransform worldTocollisionObject = colObjWorldTransform.inverse(); + btVector3 rayFromLocal = worldTocollisionObject * rayFromTrans.getOrigin(); + btVector3 rayToLocal = worldTocollisionObject * rayToTrans.getOrigin(); + + //ConvexCast::CastResult + struct BridgeTriangleRaycastCallback : public btTriangleRaycastCallback + { + btCollisionWorld::RayResultCallback* m_resultCallback; + btCollisionObject* m_collisionObject; + btTriangleMeshShape* m_triangleMesh; + + btTransform m_colObjWorldTransform; + + BridgeTriangleRaycastCallback( const btVector3& from,const btVector3& to, + btCollisionWorld::RayResultCallback* resultCallback, btCollisionObject* collisionObject,btTriangleMeshShape* triangleMesh,const btTransform& colObjWorldTransform): + //@BP Mod + btTriangleRaycastCallback(from,to, resultCallback->m_flags), + m_resultCallback(resultCallback), + m_collisionObject(collisionObject), + m_triangleMesh(triangleMesh), + m_colObjWorldTransform(colObjWorldTransform) + { + } + + + virtual btScalar reportHit(const btVector3& hitNormalLocal, btScalar hitFraction, int partId, int triangleIndex ) + { + btCollisionWorld::LocalShapeInfo shapeInfo; + shapeInfo.m_shapePart = partId; + shapeInfo.m_triangleIndex = triangleIndex; + + btVector3 hitNormalWorld = m_colObjWorldTransform.getBasis() * hitNormalLocal; + + btCollisionWorld::LocalRayResult rayResult + (m_collisionObject, + &shapeInfo, + hitNormalWorld, + hitFraction); + + bool normalInWorldSpace = true; + return m_resultCallback->addSingleResult(rayResult,normalInWorldSpace); + } + + }; + + BridgeTriangleRaycastCallback rcb(rayFromLocal,rayToLocal,&resultCallback,collisionObject,triangleMesh,colObjWorldTransform); + rcb.m_hitFraction = resultCallback.m_closestHitFraction; + triangleMesh->performRaycast(&rcb,rayFromLocal,rayToLocal); + } else + { + //generic (slower) case + btConcaveShape* concaveShape = (btConcaveShape*)collisionShape; + + btTransform worldTocollisionObject = colObjWorldTransform.inverse(); + + btVector3 rayFromLocal = worldTocollisionObject * rayFromTrans.getOrigin(); + btVector3 rayToLocal = worldTocollisionObject * rayToTrans.getOrigin(); + + //ConvexCast::CastResult + + struct BridgeTriangleRaycastCallback : public btTriangleRaycastCallback + { + btCollisionWorld::RayResultCallback* m_resultCallback; + btCollisionObject* m_collisionObject; + btConcaveShape* m_triangleMesh; + + btTransform m_colObjWorldTransform; + + BridgeTriangleRaycastCallback( const btVector3& from,const btVector3& to, + btCollisionWorld::RayResultCallback* resultCallback, btCollisionObject* collisionObject,btConcaveShape* triangleMesh, const btTransform& colObjWorldTransform): + //@BP Mod + btTriangleRaycastCallback(from,to, resultCallback->m_flags), + m_resultCallback(resultCallback), + m_collisionObject(collisionObject), + m_triangleMesh(triangleMesh), + m_colObjWorldTransform(colObjWorldTransform) + { + } + + + virtual btScalar reportHit(const btVector3& hitNormalLocal, btScalar hitFraction, int partId, int triangleIndex ) + { + btCollisionWorld::LocalShapeInfo shapeInfo; + shapeInfo.m_shapePart = partId; + shapeInfo.m_triangleIndex = triangleIndex; + + btVector3 hitNormalWorld = m_colObjWorldTransform.getBasis() * hitNormalLocal; + + btCollisionWorld::LocalRayResult rayResult + (m_collisionObject, + &shapeInfo, + hitNormalWorld, + hitFraction); + + bool normalInWorldSpace = true; + return m_resultCallback->addSingleResult(rayResult,normalInWorldSpace); + } + + }; + + + BridgeTriangleRaycastCallback rcb(rayFromLocal,rayToLocal,&resultCallback,collisionObject,concaveShape, colObjWorldTransform); + rcb.m_hitFraction = resultCallback.m_closestHitFraction; + + btVector3 rayAabbMinLocal = rayFromLocal; + rayAabbMinLocal.setMin(rayToLocal); + btVector3 rayAabbMaxLocal = rayFromLocal; + rayAabbMaxLocal.setMax(rayToLocal); + + concaveShape->processAllTriangles(&rcb,rayAabbMinLocal,rayAabbMaxLocal); + } + } else { + // BT_PROFILE("rayTestCompound"); + ///@todo: use AABB tree or other BVH acceleration structure, see btDbvt + if (collisionShape->isCompound()) + { + const btCompoundShape* compoundShape = static_cast(collisionShape); + int i=0; + for (i=0;igetNumChildShapes();i++) + { + btTransform childTrans = compoundShape->getChildTransform(i); + const btCollisionShape* childCollisionShape = compoundShape->getChildShape(i); + btTransform childWorldTrans = colObjWorldTransform * childTrans; + // replace collision shape so that callback can determine the triangle + btCollisionShape* saveCollisionShape = collisionObject->getCollisionShape(); + collisionObject->internalSetTemporaryCollisionShape((btCollisionShape*)childCollisionShape); + struct LocalInfoAdder2 : public RayResultCallback { + int m_i; + RayResultCallback* m_userCallback; + LocalInfoAdder2 (int i, RayResultCallback *user) + : m_i(i), m_userCallback(user) + { + } + virtual btScalar addSingleResult (btCollisionWorld::LocalRayResult &r, bool b) + { + btCollisionWorld::LocalShapeInfo shapeInfo; + shapeInfo.m_shapePart = -1; + shapeInfo.m_triangleIndex = m_i; + if (r.m_localShapeInfo == NULL) + r.m_localShapeInfo = &shapeInfo; + return m_userCallback->addSingleResult(r, b); + } + }; + + LocalInfoAdder2 my_cb(i, &resultCallback); + my_cb.m_closestHitFraction = resultCallback.m_closestHitFraction; + + + rayTestSingle(rayFromTrans,rayToTrans, + collisionObject, + childCollisionShape, + childWorldTrans, + my_cb); + // restore + collisionObject->internalSetTemporaryCollisionShape(saveCollisionShape); + } + } + } + } +} + +void btCollisionWorld::objectQuerySingle(const btConvexShape* castShape,const btTransform& convexFromTrans,const btTransform& convexToTrans, + btCollisionObject* collisionObject, + const btCollisionShape* collisionShape, + const btTransform& colObjWorldTransform, + ConvexResultCallback& resultCallback, btScalar allowedPenetration) +{ + if (collisionShape->isConvex()) + { + //BT_PROFILE("convexSweepConvex"); + btConvexCast::CastResult castResult; + castResult.m_allowedPenetration = allowedPenetration; + castResult.m_fraction = resultCallback.m_closestHitFraction;//btScalar(1.);//?? + + btConvexShape* convexShape = (btConvexShape*) collisionShape; + btVoronoiSimplexSolver simplexSolver; + btGjkEpaPenetrationDepthSolver gjkEpaPenetrationSolver; + + btContinuousConvexCollision convexCaster1(castShape,convexShape,&simplexSolver,&gjkEpaPenetrationSolver); + //btGjkConvexCast convexCaster2(castShape,convexShape,&simplexSolver); + //btSubsimplexConvexCast convexCaster3(castShape,convexShape,&simplexSolver); + + btConvexCast* castPtr = &convexCaster1; + + + + if (castPtr->calcTimeOfImpact(convexFromTrans,convexToTrans,colObjWorldTransform,colObjWorldTransform,castResult)) + { + //add hit + if (castResult.m_normal.length2() > btScalar(0.0001)) + { + if (castResult.m_fraction < resultCallback.m_closestHitFraction) + { + castResult.m_normal.normalize(); + btCollisionWorld::LocalConvexResult localConvexResult + ( + collisionObject, + 0, + castResult.m_normal, + castResult.m_hitPoint, + castResult.m_fraction + ); + + bool normalInWorldSpace = true; + resultCallback.addSingleResult(localConvexResult, normalInWorldSpace); + + } + } + } + } else { + if (collisionShape->isConcave()) + { + if (collisionShape->getShapeType()==TRIANGLE_MESH_SHAPE_PROXYTYPE) + { + //BT_PROFILE("convexSweepbtBvhTriangleMesh"); + btBvhTriangleMeshShape* triangleMesh = (btBvhTriangleMeshShape*)collisionShape; + btTransform worldTocollisionObject = colObjWorldTransform.inverse(); + btVector3 convexFromLocal = worldTocollisionObject * convexFromTrans.getOrigin(); + btVector3 convexToLocal = worldTocollisionObject * convexToTrans.getOrigin(); + // rotation of box in local mesh space = MeshRotation^-1 * ConvexToRotation + btTransform rotationXform = btTransform(worldTocollisionObject.getBasis() * convexToTrans.getBasis()); + + //ConvexCast::CastResult + struct BridgeTriangleConvexcastCallback : public btTriangleConvexcastCallback + { + btCollisionWorld::ConvexResultCallback* m_resultCallback; + btCollisionObject* m_collisionObject; + btTriangleMeshShape* m_triangleMesh; + + BridgeTriangleConvexcastCallback(const btConvexShape* castShape, const btTransform& from,const btTransform& to, + btCollisionWorld::ConvexResultCallback* resultCallback, btCollisionObject* collisionObject,btTriangleMeshShape* triangleMesh, const btTransform& triangleToWorld): + btTriangleConvexcastCallback(castShape, from,to, triangleToWorld, triangleMesh->getMargin()), + m_resultCallback(resultCallback), + m_collisionObject(collisionObject), + m_triangleMesh(triangleMesh) + { + } + + + virtual btScalar reportHit(const btVector3& hitNormalLocal, const btVector3& hitPointLocal, btScalar hitFraction, int partId, int triangleIndex ) + { + btCollisionWorld::LocalShapeInfo shapeInfo; + shapeInfo.m_shapePart = partId; + shapeInfo.m_triangleIndex = triangleIndex; + if (hitFraction <= m_resultCallback->m_closestHitFraction) + { + + btCollisionWorld::LocalConvexResult convexResult + (m_collisionObject, + &shapeInfo, + hitNormalLocal, + hitPointLocal, + hitFraction); + + bool normalInWorldSpace = true; + + + return m_resultCallback->addSingleResult(convexResult,normalInWorldSpace); + } + return hitFraction; + } + + }; + + BridgeTriangleConvexcastCallback tccb(castShape, convexFromTrans,convexToTrans,&resultCallback,collisionObject,triangleMesh, colObjWorldTransform); + tccb.m_hitFraction = resultCallback.m_closestHitFraction; + btVector3 boxMinLocal, boxMaxLocal; + castShape->getAabb(rotationXform, boxMinLocal, boxMaxLocal); + triangleMesh->performConvexcast(&tccb,convexFromLocal,convexToLocal,boxMinLocal, boxMaxLocal); + } else + { + //BT_PROFILE("convexSweepConcave"); + btConcaveShape* concaveShape = (btConcaveShape*)collisionShape; + btTransform worldTocollisionObject = colObjWorldTransform.inverse(); + btVector3 convexFromLocal = worldTocollisionObject * convexFromTrans.getOrigin(); + btVector3 convexToLocal = worldTocollisionObject * convexToTrans.getOrigin(); + // rotation of box in local mesh space = MeshRotation^-1 * ConvexToRotation + btTransform rotationXform = btTransform(worldTocollisionObject.getBasis() * convexToTrans.getBasis()); + + //ConvexCast::CastResult + struct BridgeTriangleConvexcastCallback : public btTriangleConvexcastCallback + { + btCollisionWorld::ConvexResultCallback* m_resultCallback; + btCollisionObject* m_collisionObject; + btConcaveShape* m_triangleMesh; + + BridgeTriangleConvexcastCallback(const btConvexShape* castShape, const btTransform& from,const btTransform& to, + btCollisionWorld::ConvexResultCallback* resultCallback, btCollisionObject* collisionObject,btConcaveShape* triangleMesh, const btTransform& triangleToWorld): + btTriangleConvexcastCallback(castShape, from,to, triangleToWorld, triangleMesh->getMargin()), + m_resultCallback(resultCallback), + m_collisionObject(collisionObject), + m_triangleMesh(triangleMesh) + { + } + + + virtual btScalar reportHit(const btVector3& hitNormalLocal, const btVector3& hitPointLocal, btScalar hitFraction, int partId, int triangleIndex ) + { + btCollisionWorld::LocalShapeInfo shapeInfo; + shapeInfo.m_shapePart = partId; + shapeInfo.m_triangleIndex = triangleIndex; + if (hitFraction <= m_resultCallback->m_closestHitFraction) + { + + btCollisionWorld::LocalConvexResult convexResult + (m_collisionObject, + &shapeInfo, + hitNormalLocal, + hitPointLocal, + hitFraction); + + bool normalInWorldSpace = false; + + return m_resultCallback->addSingleResult(convexResult,normalInWorldSpace); + } + return hitFraction; + } + + }; + + BridgeTriangleConvexcastCallback tccb(castShape, convexFromTrans,convexToTrans,&resultCallback,collisionObject,concaveShape, colObjWorldTransform); + tccb.m_hitFraction = resultCallback.m_closestHitFraction; + btVector3 boxMinLocal, boxMaxLocal; + castShape->getAabb(rotationXform, boxMinLocal, boxMaxLocal); + + btVector3 rayAabbMinLocal = convexFromLocal; + rayAabbMinLocal.setMin(convexToLocal); + btVector3 rayAabbMaxLocal = convexFromLocal; + rayAabbMaxLocal.setMax(convexToLocal); + rayAabbMinLocal += boxMinLocal; + rayAabbMaxLocal += boxMaxLocal; + concaveShape->processAllTriangles(&tccb,rayAabbMinLocal,rayAabbMaxLocal); + } + } else { + ///@todo : use AABB tree or other BVH acceleration structure! + if (collisionShape->isCompound()) + { + BT_PROFILE("convexSweepCompound"); + const btCompoundShape* compoundShape = static_cast(collisionShape); + int i=0; + for (i=0;igetNumChildShapes();i++) + { + btTransform childTrans = compoundShape->getChildTransform(i); + const btCollisionShape* childCollisionShape = compoundShape->getChildShape(i); + btTransform childWorldTrans = colObjWorldTransform * childTrans; + // replace collision shape so that callback can determine the triangle + btCollisionShape* saveCollisionShape = collisionObject->getCollisionShape(); + collisionObject->internalSetTemporaryCollisionShape((btCollisionShape*)childCollisionShape); + struct LocalInfoAdder : public ConvexResultCallback { + ConvexResultCallback* m_userCallback; + int m_i; + + LocalInfoAdder (int i, ConvexResultCallback *user) + : m_userCallback(user),m_i(i) { } + virtual btScalar addSingleResult (btCollisionWorld::LocalConvexResult& r, bool b) + { + btCollisionWorld::LocalShapeInfo shapeInfo; + shapeInfo.m_shapePart = -1; + shapeInfo.m_triangleIndex = m_i; + if (r.m_localShapeInfo == NULL) + r.m_localShapeInfo = &shapeInfo; + return m_userCallback->addSingleResult(r, b); + } + }; + + LocalInfoAdder my_cb(i, &resultCallback); + my_cb.m_closestHitFraction = resultCallback.m_closestHitFraction; + + objectQuerySingle(castShape, convexFromTrans,convexToTrans, + collisionObject, + childCollisionShape, + childWorldTrans, + my_cb, allowedPenetration); + // restore + collisionObject->internalSetTemporaryCollisionShape(saveCollisionShape); + } + } + } + } +} + + +struct btSingleRayCallback : public btBroadphaseRayCallback +{ + + btVector3 m_rayFromWorld; + btVector3 m_rayToWorld; + btTransform m_rayFromTrans; + btTransform m_rayToTrans; + btVector3 m_hitNormal; + + const btCollisionWorld* m_world; + btCollisionWorld::RayResultCallback& m_resultCallback; + + btSingleRayCallback(const btVector3& rayFromWorld,const btVector3& rayToWorld,const btCollisionWorld* world,btCollisionWorld::RayResultCallback& resultCallback) + :m_rayFromWorld(rayFromWorld), + m_rayToWorld(rayToWorld), + m_world(world), + m_resultCallback(resultCallback) + { + m_rayFromTrans.setIdentity(); + m_rayFromTrans.setOrigin(m_rayFromWorld); + m_rayToTrans.setIdentity(); + m_rayToTrans.setOrigin(m_rayToWorld); + + btVector3 rayDir = (rayToWorld-rayFromWorld); + + rayDir.normalize (); + ///what about division by zero? --> just set rayDirection[i] to INF/BT_LARGE_FLOAT + m_rayDirectionInverse[0] = rayDir[0] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[0]; + m_rayDirectionInverse[1] = rayDir[1] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[1]; + m_rayDirectionInverse[2] = rayDir[2] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[2]; + m_signs[0] = m_rayDirectionInverse[0] < 0.0; + m_signs[1] = m_rayDirectionInverse[1] < 0.0; + m_signs[2] = m_rayDirectionInverse[2] < 0.0; + + m_lambda_max = rayDir.dot(m_rayToWorld-m_rayFromWorld); + + } + + + + virtual bool process(const btBroadphaseProxy* proxy) + { + ///terminate further ray tests, once the closestHitFraction reached zero + if (m_resultCallback.m_closestHitFraction == btScalar(0.f)) + return false; + + btCollisionObject* collisionObject = (btCollisionObject*)proxy->m_clientObject; + + //only perform raycast if filterMask matches + if(m_resultCallback.needsCollision(collisionObject->getBroadphaseHandle())) + { + //RigidcollisionObject* collisionObject = ctrl->GetRigidcollisionObject(); + //btVector3 collisionObjectAabbMin,collisionObjectAabbMax; +#if 0 +#ifdef RECALCULATE_AABB + btVector3 collisionObjectAabbMin,collisionObjectAabbMax; + collisionObject->getCollisionShape()->getAabb(collisionObject->getWorldTransform(),collisionObjectAabbMin,collisionObjectAabbMax); +#else + //getBroadphase()->getAabb(collisionObject->getBroadphaseHandle(),collisionObjectAabbMin,collisionObjectAabbMax); + const btVector3& collisionObjectAabbMin = collisionObject->getBroadphaseHandle()->m_aabbMin; + const btVector3& collisionObjectAabbMax = collisionObject->getBroadphaseHandle()->m_aabbMax; +#endif +#endif + //btScalar hitLambda = m_resultCallback.m_closestHitFraction; + //culling already done by broadphase + //if (btRayAabb(m_rayFromWorld,m_rayToWorld,collisionObjectAabbMin,collisionObjectAabbMax,hitLambda,m_hitNormal)) + { + m_world->rayTestSingle(m_rayFromTrans,m_rayToTrans, + collisionObject, + collisionObject->getCollisionShape(), + collisionObject->getWorldTransform(), + m_resultCallback); + } + } + return true; + } +}; + +void btCollisionWorld::rayTest(const btVector3& rayFromWorld, const btVector3& rayToWorld, RayResultCallback& resultCallback) const +{ + //BT_PROFILE("rayTest"); + /// use the broadphase to accelerate the search for objects, based on their aabb + /// and for each object with ray-aabb overlap, perform an exact ray test + btSingleRayCallback rayCB(rayFromWorld,rayToWorld,this,resultCallback); + +#ifndef USE_BRUTEFORCE_RAYBROADPHASE + m_broadphasePairCache->rayTest(rayFromWorld,rayToWorld,rayCB); +#else + for (int i=0;igetNumCollisionObjects();i++) + { + rayCB.process(m_collisionObjects[i]->getBroadphaseHandle()); + } +#endif //USE_BRUTEFORCE_RAYBROADPHASE + +} + + +struct btSingleSweepCallback : public btBroadphaseRayCallback +{ + + btTransform m_convexFromTrans; + btTransform m_convexToTrans; + btVector3 m_hitNormal; + const btCollisionWorld* m_world; + btCollisionWorld::ConvexResultCallback& m_resultCallback; + btScalar m_allowedCcdPenetration; + const btConvexShape* m_castShape; + + + btSingleSweepCallback(const btConvexShape* castShape, const btTransform& convexFromTrans,const btTransform& convexToTrans,const btCollisionWorld* world,btCollisionWorld::ConvexResultCallback& resultCallback,btScalar allowedPenetration) + :m_convexFromTrans(convexFromTrans), + m_convexToTrans(convexToTrans), + m_world(world), + m_resultCallback(resultCallback), + m_allowedCcdPenetration(allowedPenetration), + m_castShape(castShape) + { + btVector3 unnormalizedRayDir = (m_convexToTrans.getOrigin()-m_convexFromTrans.getOrigin()); + btVector3 rayDir = unnormalizedRayDir.normalized(); + ///what about division by zero? --> just set rayDirection[i] to INF/BT_LARGE_FLOAT + m_rayDirectionInverse[0] = rayDir[0] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[0]; + m_rayDirectionInverse[1] = rayDir[1] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[1]; + m_rayDirectionInverse[2] = rayDir[2] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[2]; + m_signs[0] = m_rayDirectionInverse[0] < 0.0; + m_signs[1] = m_rayDirectionInverse[1] < 0.0; + m_signs[2] = m_rayDirectionInverse[2] < 0.0; + + m_lambda_max = rayDir.dot(unnormalizedRayDir); + + } + + virtual bool process(const btBroadphaseProxy* proxy) + { + ///terminate further convex sweep tests, once the closestHitFraction reached zero + if (m_resultCallback.m_closestHitFraction == btScalar(0.f)) + return false; + + btCollisionObject* collisionObject = (btCollisionObject*)proxy->m_clientObject; + + //only perform raycast if filterMask matches + if(m_resultCallback.needsCollision(collisionObject->getBroadphaseHandle())) { + //RigidcollisionObject* collisionObject = ctrl->GetRigidcollisionObject(); + m_world->objectQuerySingle(m_castShape, m_convexFromTrans,m_convexToTrans, + collisionObject, + collisionObject->getCollisionShape(), + collisionObject->getWorldTransform(), + m_resultCallback, + m_allowedCcdPenetration); + } + + return true; + } +}; + + + +void btCollisionWorld::convexSweepTest(const btConvexShape* castShape, const btTransform& convexFromWorld, const btTransform& convexToWorld, ConvexResultCallback& resultCallback, btScalar allowedCcdPenetration) const +{ + + BT_PROFILE("convexSweepTest"); + /// use the broadphase to accelerate the search for objects, based on their aabb + /// and for each object with ray-aabb overlap, perform an exact ray test + /// unfortunately the implementation for rayTest and convexSweepTest duplicated, albeit practically identical + + + + btTransform convexFromTrans,convexToTrans; + convexFromTrans = convexFromWorld; + convexToTrans = convexToWorld; + btVector3 castShapeAabbMin, castShapeAabbMax; + /* Compute AABB that encompasses angular movement */ + { + btVector3 linVel, angVel; + btTransformUtil::calculateVelocity (convexFromTrans, convexToTrans, 1.0, linVel, angVel); + btVector3 zeroLinVel; + zeroLinVel.setValue(0,0,0); + btTransform R; + R.setIdentity (); + R.setRotation (convexFromTrans.getRotation()); + castShape->calculateTemporalAabb (R, zeroLinVel, angVel, 1.0, castShapeAabbMin, castShapeAabbMax); + } + +#ifndef USE_BRUTEFORCE_RAYBROADPHASE + + btSingleSweepCallback convexCB(castShape,convexFromWorld,convexToWorld,this,resultCallback,allowedCcdPenetration); + + m_broadphasePairCache->rayTest(convexFromTrans.getOrigin(),convexToTrans.getOrigin(),convexCB,castShapeAabbMin,castShapeAabbMax); + +#else + /// go over all objects, and if the ray intersects their aabb + cast shape aabb, + // do a ray-shape query using convexCaster (CCD) + int i; + for (i=0;igetBroadphaseHandle())) { + //RigidcollisionObject* collisionObject = ctrl->GetRigidcollisionObject(); + btVector3 collisionObjectAabbMin,collisionObjectAabbMax; + collisionObject->getCollisionShape()->getAabb(collisionObject->getWorldTransform(),collisionObjectAabbMin,collisionObjectAabbMax); + AabbExpand (collisionObjectAabbMin, collisionObjectAabbMax, castShapeAabbMin, castShapeAabbMax); + btScalar hitLambda = btScalar(1.); //could use resultCallback.m_closestHitFraction, but needs testing + btVector3 hitNormal; + if (btRayAabb(convexFromWorld.getOrigin(),convexToWorld.getOrigin(),collisionObjectAabbMin,collisionObjectAabbMax,hitLambda,hitNormal)) + { + objectQuerySingle(castShape, convexFromTrans,convexToTrans, + collisionObject, + collisionObject->getCollisionShape(), + collisionObject->getWorldTransform(), + resultCallback, + allowedCcdPenetration); + } + } + } +#endif //USE_BRUTEFORCE_RAYBROADPHASE +} + + + +struct btBridgedManifoldResult : public btManifoldResult +{ + + btCollisionWorld::ContactResultCallback& m_resultCallback; + + btBridgedManifoldResult( btCollisionObject* obj0,btCollisionObject* obj1,btCollisionWorld::ContactResultCallback& resultCallback ) + :btManifoldResult(obj0,obj1), + m_resultCallback(resultCallback) + { + } + + virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth) + { + bool isSwapped = m_manifoldPtr->getBody0() != m_body0; + btVector3 pointA = pointInWorld + normalOnBInWorld * depth; + btVector3 localA; + btVector3 localB; + if (isSwapped) + { + localA = m_rootTransB.invXform(pointA ); + localB = m_rootTransA.invXform(pointInWorld); + } else + { + localA = m_rootTransA.invXform(pointA ); + localB = m_rootTransB.invXform(pointInWorld); + } + + btManifoldPoint newPt(localA,localB,normalOnBInWorld,depth); + newPt.m_positionWorldOnA = pointA; + newPt.m_positionWorldOnB = pointInWorld; + + //BP mod, store contact triangles. + if (isSwapped) + { + newPt.m_partId0 = m_partId1; + newPt.m_partId1 = m_partId0; + newPt.m_index0 = m_index1; + newPt.m_index1 = m_index0; + } else + { + newPt.m_partId0 = m_partId0; + newPt.m_partId1 = m_partId1; + newPt.m_index0 = m_index0; + newPt.m_index1 = m_index1; + } + + //experimental feature info, for per-triangle material etc. + btCollisionObject* obj0 = isSwapped? m_body1 : m_body0; + btCollisionObject* obj1 = isSwapped? m_body0 : m_body1; + m_resultCallback.addSingleResult(newPt,obj0,newPt.m_partId0,newPt.m_index0,obj1,newPt.m_partId1,newPt.m_index1); + + } + +}; + + + +struct btSingleContactCallback : public btBroadphaseAabbCallback +{ + + btCollisionObject* m_collisionObject; + btCollisionWorld* m_world; + btCollisionWorld::ContactResultCallback& m_resultCallback; + + + btSingleContactCallback(btCollisionObject* collisionObject, btCollisionWorld* world,btCollisionWorld::ContactResultCallback& resultCallback) + :m_collisionObject(collisionObject), + m_world(world), + m_resultCallback(resultCallback) + { + } + + virtual bool process(const btBroadphaseProxy* proxy) + { + btCollisionObject* collisionObject = (btCollisionObject*)proxy->m_clientObject; + if (collisionObject == m_collisionObject) + return true; + + //only perform raycast if filterMask matches + if(m_resultCallback.needsCollision(collisionObject->getBroadphaseHandle())) + { + btCollisionAlgorithm* algorithm = m_world->getDispatcher()->findAlgorithm(m_collisionObject,collisionObject); + if (algorithm) + { + btBridgedManifoldResult contactPointResult(m_collisionObject,collisionObject, m_resultCallback); + //discrete collision detection query + algorithm->processCollision(m_collisionObject,collisionObject, m_world->getDispatchInfo(),&contactPointResult); + + algorithm->~btCollisionAlgorithm(); + m_world->getDispatcher()->freeCollisionAlgorithm(algorithm); + } + } + return true; + } +}; + + +///contactTest performs a discrete collision test against all objects in the btCollisionWorld, and calls the resultCallback. +///it reports one or more contact points for every overlapping object (including the one with deepest penetration) +void btCollisionWorld::contactTest( btCollisionObject* colObj, ContactResultCallback& resultCallback) +{ + btVector3 aabbMin,aabbMax; + colObj->getCollisionShape()->getAabb(colObj->getWorldTransform(),aabbMin,aabbMax); + btSingleContactCallback contactCB(colObj,this,resultCallback); + + m_broadphasePairCache->aabbTest(aabbMin,aabbMax,contactCB); +} + + +///contactTest performs a discrete collision test between two collision objects and calls the resultCallback if overlap if detected. +///it reports one or more contact points (including the one with deepest penetration) +void btCollisionWorld::contactPairTest(btCollisionObject* colObjA, btCollisionObject* colObjB, ContactResultCallback& resultCallback) +{ + btCollisionAlgorithm* algorithm = getDispatcher()->findAlgorithm(colObjA,colObjB); + if (algorithm) + { + btBridgedManifoldResult contactPointResult(colObjA,colObjB, resultCallback); + //discrete collision detection query + algorithm->processCollision(colObjA,colObjB, getDispatchInfo(),&contactPointResult); + + algorithm->~btCollisionAlgorithm(); + getDispatcher()->freeCollisionAlgorithm(algorithm); + } + +} + + + + +class DebugDrawcallback : public btTriangleCallback, public btInternalTriangleIndexCallback +{ + btIDebugDraw* m_debugDrawer; + btVector3 m_color; + btTransform m_worldTrans; + +public: + + DebugDrawcallback(btIDebugDraw* debugDrawer,const btTransform& worldTrans,const btVector3& color) : + m_debugDrawer(debugDrawer), + m_color(color), + m_worldTrans(worldTrans) + { + } + + virtual void internalProcessTriangleIndex(btVector3* triangle,int partId,int triangleIndex) + { + processTriangle(triangle,partId,triangleIndex); + } + + virtual void processTriangle(btVector3* triangle,int partId, int triangleIndex) + { + (void)partId; + (void)triangleIndex; + + btVector3 wv0,wv1,wv2; + wv0 = m_worldTrans*triangle[0]; + wv1 = m_worldTrans*triangle[1]; + wv2 = m_worldTrans*triangle[2]; + btVector3 center = (wv0+wv1+wv2)*btScalar(1./3.); + + btVector3 normal = (wv1-wv0).cross(wv2-wv0); + normal.normalize(); + btVector3 normalColor(1,1,0); + m_debugDrawer->drawLine(center,center+normal,normalColor); + + + + + m_debugDrawer->drawLine(wv0,wv1,m_color); + m_debugDrawer->drawLine(wv1,wv2,m_color); + m_debugDrawer->drawLine(wv2,wv0,m_color); + } +}; + + +void btCollisionWorld::debugDrawObject(const btTransform& worldTransform, const btCollisionShape* shape, const btVector3& color) +{ + // Draw a small simplex at the center of the object + { + btVector3 start = worldTransform.getOrigin(); + getDebugDrawer()->drawLine(start, start+worldTransform.getBasis() * btVector3(1,0,0), btVector3(1,0,0)); + getDebugDrawer()->drawLine(start, start+worldTransform.getBasis() * btVector3(0,1,0), btVector3(0,1,0)); + getDebugDrawer()->drawLine(start, start+worldTransform.getBasis() * btVector3(0,0,1), btVector3(0,0,1)); + } + + if (shape->getShapeType() == COMPOUND_SHAPE_PROXYTYPE) + { + const btCompoundShape* compoundShape = static_cast(shape); + for (int i=compoundShape->getNumChildShapes()-1;i>=0;i--) + { + btTransform childTrans = compoundShape->getChildTransform(i); + const btCollisionShape* colShape = compoundShape->getChildShape(i); + debugDrawObject(worldTransform*childTrans,colShape,color); + } + + } else + { + switch (shape->getShapeType()) + { + + case BOX_SHAPE_PROXYTYPE: + { + const btBoxShape* boxShape = static_cast(shape); + btVector3 halfExtents = boxShape->getHalfExtentsWithMargin(); + getDebugDrawer()->drawBox(-halfExtents,halfExtents,worldTransform,color); + break; + } + + case SPHERE_SHAPE_PROXYTYPE: + { + const btSphereShape* sphereShape = static_cast(shape); + btScalar radius = sphereShape->getMargin();//radius doesn't include the margin, so draw with margin + + getDebugDrawer()->drawSphere(radius, worldTransform, color); + break; + } + case MULTI_SPHERE_SHAPE_PROXYTYPE: + { + const btMultiSphereShape* multiSphereShape = static_cast(shape); + + btTransform childTransform; + childTransform.setIdentity(); + + for (int i = multiSphereShape->getSphereCount()-1; i>=0;i--) + { + childTransform.setOrigin(multiSphereShape->getSpherePosition(i)); + getDebugDrawer()->drawSphere(multiSphereShape->getSphereRadius(i), worldTransform*childTransform, color); + } + + break; + } + case CAPSULE_SHAPE_PROXYTYPE: + { + const btCapsuleShape* capsuleShape = static_cast(shape); + + btScalar radius = capsuleShape->getRadius(); + btScalar halfHeight = capsuleShape->getHalfHeight(); + + int upAxis = capsuleShape->getUpAxis(); + + + btVector3 capStart(0.f,0.f,0.f); + capStart[upAxis] = -halfHeight; + + btVector3 capEnd(0.f,0.f,0.f); + capEnd[upAxis] = halfHeight; + + // Draw the ends + { + + btTransform childTransform = worldTransform; + childTransform.getOrigin() = worldTransform * capStart; + getDebugDrawer()->drawSphere(radius, childTransform, color); + } + + { + btTransform childTransform = worldTransform; + childTransform.getOrigin() = worldTransform * capEnd; + getDebugDrawer()->drawSphere(radius, childTransform, color); + } + + // Draw some additional lines + btVector3 start = worldTransform.getOrigin(); + + + capStart[(upAxis+1)%3] = radius; + capEnd[(upAxis+1)%3] = radius; + getDebugDrawer()->drawLine(start+worldTransform.getBasis() * capStart,start+worldTransform.getBasis() * capEnd, color); + capStart[(upAxis+1)%3] = -radius; + capEnd[(upAxis+1)%3] = -radius; + getDebugDrawer()->drawLine(start+worldTransform.getBasis() * capStart,start+worldTransform.getBasis() * capEnd, color); + + capStart[(upAxis+1)%3] = 0.f; + capEnd[(upAxis+1)%3] = 0.f; + + capStart[(upAxis+2)%3] = radius; + capEnd[(upAxis+2)%3] = radius; + getDebugDrawer()->drawLine(start+worldTransform.getBasis() * capStart,start+worldTransform.getBasis() * capEnd, color); + capStart[(upAxis+2)%3] = -radius; + capEnd[(upAxis+2)%3] = -radius; + getDebugDrawer()->drawLine(start+worldTransform.getBasis() * capStart,start+worldTransform.getBasis() * capEnd, color); + + + break; + } + case CONE_SHAPE_PROXYTYPE: + { + const btConeShape* coneShape = static_cast(shape); + btScalar radius = coneShape->getRadius();//+coneShape->getMargin(); + btScalar height = coneShape->getHeight();//+coneShape->getMargin(); + btVector3 start = worldTransform.getOrigin(); + + int upAxis= coneShape->getConeUpIndex(); + + + btVector3 offsetHeight(0,0,0); + offsetHeight[upAxis] = height * btScalar(0.5); + btVector3 offsetRadius(0,0,0); + offsetRadius[(upAxis+1)%3] = radius; + btVector3 offset2Radius(0,0,0); + offset2Radius[(upAxis+2)%3] = radius; + + getDebugDrawer()->drawLine(start+worldTransform.getBasis() * (offsetHeight),start+worldTransform.getBasis() * (-offsetHeight+offsetRadius),color); + getDebugDrawer()->drawLine(start+worldTransform.getBasis() * (offsetHeight),start+worldTransform.getBasis() * (-offsetHeight-offsetRadius),color); + getDebugDrawer()->drawLine(start+worldTransform.getBasis() * (offsetHeight),start+worldTransform.getBasis() * (-offsetHeight+offset2Radius),color); + getDebugDrawer()->drawLine(start+worldTransform.getBasis() * (offsetHeight),start+worldTransform.getBasis() * (-offsetHeight-offset2Radius),color); + + + + break; + + } + case CYLINDER_SHAPE_PROXYTYPE: + { + const btCylinderShape* cylinder = static_cast(shape); + int upAxis = cylinder->getUpAxis(); + btScalar radius = cylinder->getRadius(); + btScalar halfHeight = cylinder->getHalfExtentsWithMargin()[upAxis]; + btVector3 start = worldTransform.getOrigin(); + btVector3 offsetHeight(0,0,0); + offsetHeight[upAxis] = halfHeight; + btVector3 offsetRadius(0,0,0); + offsetRadius[(upAxis+1)%3] = radius; + getDebugDrawer()->drawLine(start+worldTransform.getBasis() * (offsetHeight+offsetRadius),start+worldTransform.getBasis() * (-offsetHeight+offsetRadius),color); + getDebugDrawer()->drawLine(start+worldTransform.getBasis() * (offsetHeight-offsetRadius),start+worldTransform.getBasis() * (-offsetHeight-offsetRadius),color); + break; + } + + case STATIC_PLANE_PROXYTYPE: + { + const btStaticPlaneShape* staticPlaneShape = static_cast(shape); + btScalar planeConst = staticPlaneShape->getPlaneConstant(); + const btVector3& planeNormal = staticPlaneShape->getPlaneNormal(); + btVector3 planeOrigin = planeNormal * planeConst; + btVector3 vec0,vec1; + btPlaneSpace1(planeNormal,vec0,vec1); + btScalar vecLen = 100.f; + btVector3 pt0 = planeOrigin + vec0*vecLen; + btVector3 pt1 = planeOrigin - vec0*vecLen; + btVector3 pt2 = planeOrigin + vec1*vecLen; + btVector3 pt3 = planeOrigin - vec1*vecLen; + getDebugDrawer()->drawLine(worldTransform*pt0,worldTransform*pt1,color); + getDebugDrawer()->drawLine(worldTransform*pt2,worldTransform*pt3,color); + break; + + } + default: + { + + if (shape->isConcave()) + { + btConcaveShape* concaveMesh = (btConcaveShape*) shape; + + ///@todo pass camera, for some culling? no -> we are not a graphics lib + btVector3 aabbMax(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); + btVector3 aabbMin(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); + + DebugDrawcallback drawCallback(getDebugDrawer(),worldTransform,color); + concaveMesh->processAllTriangles(&drawCallback,aabbMin,aabbMax); + + } + + if (shape->getShapeType() == CONVEX_TRIANGLEMESH_SHAPE_PROXYTYPE) + { + btConvexTriangleMeshShape* convexMesh = (btConvexTriangleMeshShape*) shape; + //todo: pass camera for some culling + btVector3 aabbMax(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); + btVector3 aabbMin(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); + //DebugDrawcallback drawCallback; + DebugDrawcallback drawCallback(getDebugDrawer(),worldTransform,color); + convexMesh->getMeshInterface()->InternalProcessAllTriangles(&drawCallback,aabbMin,aabbMax); + } + + + /// for polyhedral shapes + if (shape->isPolyhedral()) + { + btPolyhedralConvexShape* polyshape = (btPolyhedralConvexShape*) shape; + + int i; + for (i=0;igetNumEdges();i++) + { + btVector3 a,b; + polyshape->getEdge(i,a,b); + btVector3 wa = worldTransform * a; + btVector3 wb = worldTransform * b; + getDebugDrawer()->drawLine(wa,wb,color); + + } + + + } + } + } + } +} + + +void btCollisionWorld::debugDrawWorld() +{ + if (getDebugDrawer() && getDebugDrawer()->getDebugMode() & btIDebugDraw::DBG_DrawContactPoints) + { + int numManifolds = getDispatcher()->getNumManifolds(); + btVector3 color(0,0,0); + for (int i=0;igetManifoldByIndexInternal(i); + //btCollisionObject* obA = static_cast(contactManifold->getBody0()); + //btCollisionObject* obB = static_cast(contactManifold->getBody1()); + + int numContacts = contactManifold->getNumContacts(); + for (int j=0;jgetContactPoint(j); + getDebugDrawer()->drawContactPoint(cp.m_positionWorldOnB,cp.m_normalWorldOnB,cp.getDistance(),cp.getLifeTime(),color); + } + } + } + + if (getDebugDrawer() && getDebugDrawer()->getDebugMode() & (btIDebugDraw::DBG_DrawWireframe | btIDebugDraw::DBG_DrawAabb)) + { + int i; + + for ( i=0;igetCollisionFlags() & btCollisionObject::CF_DISABLE_VISUALIZE_OBJECT)==0) + { + if (getDebugDrawer() && getDebugDrawer()->getDebugMode() & btIDebugDraw::DBG_DrawWireframe) + { + btVector3 color(btScalar(1.),btScalar(1.),btScalar(1.)); + switch(colObj->getActivationState()) + { + case ACTIVE_TAG: + color = btVector3(btScalar(1.),btScalar(1.),btScalar(1.)); break; + case ISLAND_SLEEPING: + color = btVector3(btScalar(0.),btScalar(1.),btScalar(0.));break; + case WANTS_DEACTIVATION: + color = btVector3(btScalar(0.),btScalar(1.),btScalar(1.));break; + case DISABLE_DEACTIVATION: + color = btVector3(btScalar(1.),btScalar(0.),btScalar(0.));break; + case DISABLE_SIMULATION: + color = btVector3(btScalar(1.),btScalar(1.),btScalar(0.));break; + default: + { + color = btVector3(btScalar(1),btScalar(0.),btScalar(0.)); + } + }; + + debugDrawObject(colObj->getWorldTransform(),colObj->getCollisionShape(),color); + } + if (m_debugDrawer && (m_debugDrawer->getDebugMode() & btIDebugDraw::DBG_DrawAabb)) + { + btVector3 minAabb,maxAabb; + btVector3 colorvec(1,0,0); + colObj->getCollisionShape()->getAabb(colObj->getWorldTransform(), minAabb,maxAabb); + m_debugDrawer->drawAabb(minAabb,maxAabb,colorvec); + } + } + + } + } +} + + +void btCollisionWorld::serializeCollisionObjects(btSerializer* serializer) +{ + int i; + //serialize all collision objects + for (i=0;igetInternalType() == btCollisionObject::CO_COLLISION_OBJECT) + { + colObj->serializeSingleObject(serializer); + } + } + + ///keep track of shapes already serialized + btHashMap serializedShapes; + + for (i=0;igetCollisionShape(); + + if (!serializedShapes.find(shape)) + { + serializedShapes.insert(shape,shape); + shape->serializeSingleShape(serializer); + } + } + +} + + +void btCollisionWorld::serialize(btSerializer* serializer) +{ + + serializer->startSerialization(); + + serializeCollisionObjects(serializer); + + serializer->finishSerialization(); +} + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionWorld.h b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionWorld.h new file mode 100644 index 00000000000..0bb34b375c6 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionWorld.h @@ -0,0 +1,470 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://bulletphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +/** + * @mainpage Bullet Documentation + * + * @section intro_sec Introduction + * Bullet Collision Detection & Physics SDK + * + * Bullet is a Collision Detection and Rigid Body Dynamics Library. The Library is Open Source and free for commercial use, under the ZLib license ( http://opensource.org/licenses/zlib-license.php ). + * + * The main documentation is Bullet_User_Manual.pdf, included in the source code distribution. + * There is the Physics Forum for feedback and general Collision Detection and Physics discussions. + * Please visit http://www.bulletphysics.com + * + * @section install_sec Installation + * + * @subsection step1 Step 1: Download + * You can download the Bullet Physics Library from the Google Code repository: http://code.google.com/p/bullet/downloads/list + * + * @subsection step2 Step 2: Building + * Bullet main build system for all platforms is cmake, you can download http://www.cmake.org + * cmake can autogenerate projectfiles for Microsoft Visual Studio, Apple Xcode, KDevelop and Unix Makefiles. + * The easiest is to run the CMake cmake-gui graphical user interface and choose the options and generate projectfiles. + * You can also use cmake in the command-line. Here are some examples for various platforms: + * cmake . -G "Visual Studio 9 2008" + * cmake . -G Xcode + * cmake . -G "Unix Makefiles" + * Although cmake is recommended, you can also use autotools for UNIX: ./autogen.sh ./configure to create a Makefile and then run make. + * + * @subsection step3 Step 3: Testing demos + * Try to run and experiment with BasicDemo executable as a starting point. + * Bullet can be used in several ways, as Full Rigid Body simulation, as Collision Detector Library or Low Level / Snippets like the GJK Closest Point calculation. + * The Dependencies can be seen in this documentation under Directories + * + * @subsection step4 Step 4: Integrating in your application, full Rigid Body and Soft Body simulation + * Check out BasicDemo how to create a btDynamicsWorld, btRigidBody and btCollisionShape, Stepping the simulation and synchronizing your graphics object transform. + * Check out SoftDemo how to use soft body dynamics, using btSoftRigidDynamicsWorld. + * @subsection step5 Step 5 : Integrate the Collision Detection Library (without Dynamics and other Extras) + * Bullet Collision Detection can also be used without the Dynamics/Extras. + * Check out btCollisionWorld and btCollisionObject, and the CollisionInterfaceDemo. + * @subsection step6 Step 6 : Use Snippets like the GJK Closest Point calculation. + * Bullet has been designed in a modular way keeping dependencies to a minimum. The ConvexHullDistance demo demonstrates direct use of btGjkPairDetector. + * + * @section copyright Copyright + * For up-to-data information and copyright and contributors list check out the Bullet_User_Manual.pdf + * + */ + + + +#ifndef COLLISION_WORLD_H +#define COLLISION_WORLD_H + +class btStackAlloc; +class btCollisionShape; +class btConvexShape; +class btBroadphaseInterface; +class btSerializer; + +#include "LinearMath/btVector3.h" +#include "LinearMath/btTransform.h" +#include "btCollisionObject.h" +#include "btCollisionDispatcher.h" +#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h" +#include "LinearMath/btAlignedObjectArray.h" + +///CollisionWorld is interface and container for the collision detection +class btCollisionWorld +{ + + +protected: + + btAlignedObjectArray m_collisionObjects; + + btDispatcher* m_dispatcher1; + + btDispatcherInfo m_dispatchInfo; + + btStackAlloc* m_stackAlloc; + + btBroadphaseInterface* m_broadphasePairCache; + + btIDebugDraw* m_debugDrawer; + + ///m_forceUpdateAllAabbs can be set to false as an optimization to only update active object AABBs + ///it is true by default, because it is error-prone (setting the position of static objects wouldn't update their AABB) + bool m_forceUpdateAllAabbs; + + void serializeCollisionObjects(btSerializer* serializer); + +public: + + //this constructor doesn't own the dispatcher and paircache/broadphase + btCollisionWorld(btDispatcher* dispatcher,btBroadphaseInterface* broadphasePairCache, btCollisionConfiguration* collisionConfiguration); + + virtual ~btCollisionWorld(); + + void setBroadphase(btBroadphaseInterface* pairCache) + { + m_broadphasePairCache = pairCache; + } + + const btBroadphaseInterface* getBroadphase() const + { + return m_broadphasePairCache; + } + + btBroadphaseInterface* getBroadphase() + { + return m_broadphasePairCache; + } + + btOverlappingPairCache* getPairCache() + { + return m_broadphasePairCache->getOverlappingPairCache(); + } + + + btDispatcher* getDispatcher() + { + return m_dispatcher1; + } + + const btDispatcher* getDispatcher() const + { + return m_dispatcher1; + } + + void updateSingleAabb(btCollisionObject* colObj); + + virtual void updateAabbs(); + + virtual void setDebugDrawer(btIDebugDraw* debugDrawer) + { + m_debugDrawer = debugDrawer; + } + + virtual btIDebugDraw* getDebugDrawer() + { + return m_debugDrawer; + } + + virtual void debugDrawWorld(); + + virtual void debugDrawObject(const btTransform& worldTransform, const btCollisionShape* shape, const btVector3& color); + + + ///LocalShapeInfo gives extra information for complex shapes + ///Currently, only btTriangleMeshShape is available, so it just contains triangleIndex and subpart + struct LocalShapeInfo + { + int m_shapePart; + int m_triangleIndex; + + //const btCollisionShape* m_shapeTemp; + //const btTransform* m_shapeLocalTransform; + }; + + struct LocalRayResult + { + LocalRayResult(btCollisionObject* collisionObject, + LocalShapeInfo* localShapeInfo, + const btVector3& hitNormalLocal, + btScalar hitFraction) + :m_collisionObject(collisionObject), + m_localShapeInfo(localShapeInfo), + m_hitNormalLocal(hitNormalLocal), + m_hitFraction(hitFraction) + { + } + + btCollisionObject* m_collisionObject; + LocalShapeInfo* m_localShapeInfo; + btVector3 m_hitNormalLocal; + btScalar m_hitFraction; + + }; + + ///RayResultCallback is used to report new raycast results + struct RayResultCallback + { + btScalar m_closestHitFraction; + btCollisionObject* m_collisionObject; + short int m_collisionFilterGroup; + short int m_collisionFilterMask; + //@BP Mod - Custom flags, currently used to enable backface culling on tri-meshes, see btRaycastCallback + unsigned int m_flags; + + virtual ~RayResultCallback() + { + } + bool hasHit() const + { + return (m_collisionObject != 0); + } + + RayResultCallback() + :m_closestHitFraction(btScalar(1.)), + m_collisionObject(0), + m_collisionFilterGroup(btBroadphaseProxy::DefaultFilter), + m_collisionFilterMask(btBroadphaseProxy::AllFilter), + //@BP Mod + m_flags(0) + { + } + + virtual bool needsCollision(btBroadphaseProxy* proxy0) const + { + bool collides = (proxy0->m_collisionFilterGroup & m_collisionFilterMask) != 0; + collides = collides && (m_collisionFilterGroup & proxy0->m_collisionFilterMask); + return collides; + } + + + virtual btScalar addSingleResult(LocalRayResult& rayResult,bool normalInWorldSpace) = 0; + }; + + struct ClosestRayResultCallback : public RayResultCallback + { + ClosestRayResultCallback(const btVector3& rayFromWorld,const btVector3& rayToWorld) + :m_rayFromWorld(rayFromWorld), + m_rayToWorld(rayToWorld) + { + } + + btVector3 m_rayFromWorld;//used to calculate hitPointWorld from hitFraction + btVector3 m_rayToWorld; + + btVector3 m_hitNormalWorld; + btVector3 m_hitPointWorld; + + virtual btScalar addSingleResult(LocalRayResult& rayResult,bool normalInWorldSpace) + { + //caller already does the filter on the m_closestHitFraction + btAssert(rayResult.m_hitFraction <= m_closestHitFraction); + + m_closestHitFraction = rayResult.m_hitFraction; + m_collisionObject = rayResult.m_collisionObject; + if (normalInWorldSpace) + { + m_hitNormalWorld = rayResult.m_hitNormalLocal; + } else + { + ///need to transform normal into worldspace + m_hitNormalWorld = m_collisionObject->getWorldTransform().getBasis()*rayResult.m_hitNormalLocal; + } + m_hitPointWorld.setInterpolate3(m_rayFromWorld,m_rayToWorld,rayResult.m_hitFraction); + return rayResult.m_hitFraction; + } + }; + + + struct LocalConvexResult + { + LocalConvexResult(btCollisionObject* hitCollisionObject, + LocalShapeInfo* localShapeInfo, + const btVector3& hitNormalLocal, + const btVector3& hitPointLocal, + btScalar hitFraction + ) + :m_hitCollisionObject(hitCollisionObject), + m_localShapeInfo(localShapeInfo), + m_hitNormalLocal(hitNormalLocal), + m_hitPointLocal(hitPointLocal), + m_hitFraction(hitFraction) + { + } + + btCollisionObject* m_hitCollisionObject; + LocalShapeInfo* m_localShapeInfo; + btVector3 m_hitNormalLocal; + btVector3 m_hitPointLocal; + btScalar m_hitFraction; + }; + + ///RayResultCallback is used to report new raycast results + struct ConvexResultCallback + { + btScalar m_closestHitFraction; + short int m_collisionFilterGroup; + short int m_collisionFilterMask; + + ConvexResultCallback() + :m_closestHitFraction(btScalar(1.)), + m_collisionFilterGroup(btBroadphaseProxy::DefaultFilter), + m_collisionFilterMask(btBroadphaseProxy::AllFilter) + { + } + + virtual ~ConvexResultCallback() + { + } + + bool hasHit() const + { + return (m_closestHitFraction < btScalar(1.)); + } + + + + virtual bool needsCollision(btBroadphaseProxy* proxy0) const + { + bool collides = (proxy0->m_collisionFilterGroup & m_collisionFilterMask) != 0; + collides = collides && (m_collisionFilterGroup & proxy0->m_collisionFilterMask); + return collides; + } + + virtual btScalar addSingleResult(LocalConvexResult& convexResult,bool normalInWorldSpace) = 0; + }; + + struct ClosestConvexResultCallback : public ConvexResultCallback + { + ClosestConvexResultCallback(const btVector3& convexFromWorld,const btVector3& convexToWorld) + :m_convexFromWorld(convexFromWorld), + m_convexToWorld(convexToWorld), + m_hitCollisionObject(0) + { + } + + btVector3 m_convexFromWorld;//used to calculate hitPointWorld from hitFraction + btVector3 m_convexToWorld; + + btVector3 m_hitNormalWorld; + btVector3 m_hitPointWorld; + btCollisionObject* m_hitCollisionObject; + + virtual btScalar addSingleResult(LocalConvexResult& convexResult,bool normalInWorldSpace) + { +//caller already does the filter on the m_closestHitFraction + btAssert(convexResult.m_hitFraction <= m_closestHitFraction); + + m_closestHitFraction = convexResult.m_hitFraction; + m_hitCollisionObject = convexResult.m_hitCollisionObject; + if (normalInWorldSpace) + { + m_hitNormalWorld = convexResult.m_hitNormalLocal; + } else + { + ///need to transform normal into worldspace + m_hitNormalWorld = m_hitCollisionObject->getWorldTransform().getBasis()*convexResult.m_hitNormalLocal; + } + m_hitPointWorld = convexResult.m_hitPointLocal; + return convexResult.m_hitFraction; + } + }; + + ///ContactResultCallback is used to report contact points + struct ContactResultCallback + { + short int m_collisionFilterGroup; + short int m_collisionFilterMask; + + ContactResultCallback() + :m_collisionFilterGroup(btBroadphaseProxy::DefaultFilter), + m_collisionFilterMask(btBroadphaseProxy::AllFilter) + { + } + + virtual ~ContactResultCallback() + { + } + + virtual bool needsCollision(btBroadphaseProxy* proxy0) const + { + bool collides = (proxy0->m_collisionFilterGroup & m_collisionFilterMask) != 0; + collides = collides && (m_collisionFilterGroup & proxy0->m_collisionFilterMask); + return collides; + } + + virtual btScalar addSingleResult(btManifoldPoint& cp, const btCollisionObject* colObj0,int partId0,int index0,const btCollisionObject* colObj1,int partId1,int index1) = 0; + }; + + + + int getNumCollisionObjects() const + { + return int(m_collisionObjects.size()); + } + + /// rayTest performs a raycast on all objects in the btCollisionWorld, and calls the resultCallback + /// This allows for several queries: first hit, all hits, any hit, dependent on the value returned by the callback. + virtual void rayTest(const btVector3& rayFromWorld, const btVector3& rayToWorld, RayResultCallback& resultCallback) const; + + /// convexTest performs a swept convex cast on all objects in the btCollisionWorld, and calls the resultCallback + /// This allows for several queries: first hit, all hits, any hit, dependent on the value return by the callback. + void convexSweepTest (const btConvexShape* castShape, const btTransform& from, const btTransform& to, ConvexResultCallback& resultCallback, btScalar allowedCcdPenetration = btScalar(0.)) const; + + ///contactTest performs a discrete collision test between colObj against all objects in the btCollisionWorld, and calls the resultCallback. + ///it reports one or more contact points for every overlapping object (including the one with deepest penetration) + void contactTest(btCollisionObject* colObj, ContactResultCallback& resultCallback); + + ///contactTest performs a discrete collision test between two collision objects and calls the resultCallback if overlap if detected. + ///it reports one or more contact points (including the one with deepest penetration) + void contactPairTest(btCollisionObject* colObjA, btCollisionObject* colObjB, ContactResultCallback& resultCallback); + + + /// rayTestSingle performs a raycast call and calls the resultCallback. It is used internally by rayTest. + /// In a future implementation, we consider moving the ray test as a virtual method in btCollisionShape. + /// This allows more customization. + static void rayTestSingle(const btTransform& rayFromTrans,const btTransform& rayToTrans, + btCollisionObject* collisionObject, + const btCollisionShape* collisionShape, + const btTransform& colObjWorldTransform, + RayResultCallback& resultCallback); + + /// objectQuerySingle performs a collision detection query and calls the resultCallback. It is used internally by rayTest. + static void objectQuerySingle(const btConvexShape* castShape, const btTransform& rayFromTrans,const btTransform& rayToTrans, + btCollisionObject* collisionObject, + const btCollisionShape* collisionShape, + const btTransform& colObjWorldTransform, + ConvexResultCallback& resultCallback, btScalar allowedPenetration); + + virtual void addCollisionObject(btCollisionObject* collisionObject,short int collisionFilterGroup=btBroadphaseProxy::DefaultFilter,short int collisionFilterMask=btBroadphaseProxy::AllFilter); + + btCollisionObjectArray& getCollisionObjectArray() + { + return m_collisionObjects; + } + + const btCollisionObjectArray& getCollisionObjectArray() const + { + return m_collisionObjects; + } + + + virtual void removeCollisionObject(btCollisionObject* collisionObject); + + virtual void performDiscreteCollisionDetection(); + + btDispatcherInfo& getDispatchInfo() + { + return m_dispatchInfo; + } + + const btDispatcherInfo& getDispatchInfo() const + { + return m_dispatchInfo; + } + + bool getForceUpdateAllAabbs() const + { + return m_forceUpdateAllAabbs; + } + void setForceUpdateAllAabbs( bool forceUpdateAllAabbs) + { + m_forceUpdateAllAabbs = forceUpdateAllAabbs; + } + + ///Preliminary serialization test for Bullet 2.76. Loading those files requires a separate parser (Bullet/Demos/SerializeDemo) + virtual void serialize(btSerializer* serializer); + +}; + + +#endif //COLLISION_WORLD_H diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp new file mode 100644 index 00000000000..250c6badcd4 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp @@ -0,0 +1,351 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "BulletCollision/CollisionShapes/btCompoundShape.h" +#include "BulletCollision/BroadphaseCollision/btDbvt.h" +#include "LinearMath/btIDebugDraw.h" +#include "LinearMath/btAabbUtil2.h" +#include "btManifoldResult.h" + +btCompoundCollisionAlgorithm::btCompoundCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped) +:btActivatingCollisionAlgorithm(ci,body0,body1), +m_isSwapped(isSwapped), +m_sharedManifold(ci.m_manifold) +{ + m_ownsManifold = false; + + btCollisionObject* colObj = m_isSwapped? body1 : body0; + btAssert (colObj->getCollisionShape()->isCompound()); + + btCompoundShape* compoundShape = static_cast(colObj->getCollisionShape()); + m_compoundShapeRevision = compoundShape->getUpdateRevision(); + + preallocateChildAlgorithms(body0,body1); +} + +void btCompoundCollisionAlgorithm::preallocateChildAlgorithms(btCollisionObject* body0,btCollisionObject* body1) +{ + btCollisionObject* colObj = m_isSwapped? body1 : body0; + btCollisionObject* otherObj = m_isSwapped? body0 : body1; + btAssert (colObj->getCollisionShape()->isCompound()); + + btCompoundShape* compoundShape = static_cast(colObj->getCollisionShape()); + + int numChildren = compoundShape->getNumChildShapes(); + int i; + + m_childCollisionAlgorithms.resize(numChildren); + for (i=0;igetDynamicAabbTree()) + { + m_childCollisionAlgorithms[i] = 0; + } else + { + btCollisionShape* tmpShape = colObj->getCollisionShape(); + btCollisionShape* childShape = compoundShape->getChildShape(i); + colObj->internalSetTemporaryCollisionShape( childShape ); + m_childCollisionAlgorithms[i] = m_dispatcher->findAlgorithm(colObj,otherObj,m_sharedManifold); + colObj->internalSetTemporaryCollisionShape( tmpShape ); + } + } +} + +void btCompoundCollisionAlgorithm::removeChildAlgorithms() +{ + int numChildren = m_childCollisionAlgorithms.size(); + int i; + for (i=0;i~btCollisionAlgorithm(); + m_dispatcher->freeCollisionAlgorithm(m_childCollisionAlgorithms[i]); + } + } +} + +btCompoundCollisionAlgorithm::~btCompoundCollisionAlgorithm() +{ + removeChildAlgorithms(); +} + + + + +struct btCompoundLeafCallback : btDbvt::ICollide +{ + +public: + + btCollisionObject* m_compoundColObj; + btCollisionObject* m_otherObj; + btDispatcher* m_dispatcher; + const btDispatcherInfo& m_dispatchInfo; + btManifoldResult* m_resultOut; + btCollisionAlgorithm** m_childCollisionAlgorithms; + btPersistentManifold* m_sharedManifold; + + + + + btCompoundLeafCallback (btCollisionObject* compoundObj,btCollisionObject* otherObj,btDispatcher* dispatcher,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut,btCollisionAlgorithm** childCollisionAlgorithms,btPersistentManifold* sharedManifold) + :m_compoundColObj(compoundObj),m_otherObj(otherObj),m_dispatcher(dispatcher),m_dispatchInfo(dispatchInfo),m_resultOut(resultOut), + m_childCollisionAlgorithms(childCollisionAlgorithms), + m_sharedManifold(sharedManifold) + { + + } + + + void ProcessChildShape(btCollisionShape* childShape,int index) + { + + btCompoundShape* compoundShape = static_cast(m_compoundColObj->getCollisionShape()); + + + //backup + btTransform orgTrans = m_compoundColObj->getWorldTransform(); + btTransform orgInterpolationTrans = m_compoundColObj->getInterpolationWorldTransform(); + const btTransform& childTrans = compoundShape->getChildTransform(index); + btTransform newChildWorldTrans = orgTrans*childTrans ; + + //perform an AABB check first + btVector3 aabbMin0,aabbMax0,aabbMin1,aabbMax1; + childShape->getAabb(newChildWorldTrans,aabbMin0,aabbMax0); + m_otherObj->getCollisionShape()->getAabb(m_otherObj->getWorldTransform(),aabbMin1,aabbMax1); + + if (TestAabbAgainstAabb2(aabbMin0,aabbMax0,aabbMin1,aabbMax1)) + { + + m_compoundColObj->setWorldTransform( newChildWorldTrans); + m_compoundColObj->setInterpolationWorldTransform(newChildWorldTrans); + + //the contactpoint is still projected back using the original inverted worldtrans + btCollisionShape* tmpShape = m_compoundColObj->getCollisionShape(); + m_compoundColObj->internalSetTemporaryCollisionShape( childShape ); + + if (!m_childCollisionAlgorithms[index]) + m_childCollisionAlgorithms[index] = m_dispatcher->findAlgorithm(m_compoundColObj,m_otherObj,m_sharedManifold); + + ///detect swapping case + if (m_resultOut->getBody0Internal() == m_compoundColObj) + { + m_resultOut->setShapeIdentifiersA(-1,index); + } else + { + m_resultOut->setShapeIdentifiersB(-1,index); + } + + m_childCollisionAlgorithms[index]->processCollision(m_compoundColObj,m_otherObj,m_dispatchInfo,m_resultOut); + if (m_dispatchInfo.m_debugDraw && (m_dispatchInfo.m_debugDraw->getDebugMode() & btIDebugDraw::DBG_DrawAabb)) + { + btVector3 worldAabbMin,worldAabbMax; + m_dispatchInfo.m_debugDraw->drawAabb(aabbMin0,aabbMax0,btVector3(1,1,1)); + m_dispatchInfo.m_debugDraw->drawAabb(aabbMin1,aabbMax1,btVector3(1,1,1)); + } + + //revert back transform + m_compoundColObj->internalSetTemporaryCollisionShape( tmpShape); + m_compoundColObj->setWorldTransform( orgTrans ); + m_compoundColObj->setInterpolationWorldTransform(orgInterpolationTrans); + } + } + void Process(const btDbvtNode* leaf) + { + int index = leaf->dataAsInt; + + btCompoundShape* compoundShape = static_cast(m_compoundColObj->getCollisionShape()); + btCollisionShape* childShape = compoundShape->getChildShape(index); + if (m_dispatchInfo.m_debugDraw && (m_dispatchInfo.m_debugDraw->getDebugMode() & btIDebugDraw::DBG_DrawAabb)) + { + btVector3 worldAabbMin,worldAabbMax; + btTransform orgTrans = m_compoundColObj->getWorldTransform(); + btTransformAabb(leaf->volume.Mins(),leaf->volume.Maxs(),0.,orgTrans,worldAabbMin,worldAabbMax); + m_dispatchInfo.m_debugDraw->drawAabb(worldAabbMin,worldAabbMax,btVector3(1,0,0)); + } + ProcessChildShape(childShape,index); + + } +}; + + + + + + +void btCompoundCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + btCollisionObject* colObj = m_isSwapped? body1 : body0; + btCollisionObject* otherObj = m_isSwapped? body0 : body1; + + + + btAssert (colObj->getCollisionShape()->isCompound()); + btCompoundShape* compoundShape = static_cast(colObj->getCollisionShape()); + + ///btCompoundShape might have changed: + ////make sure the internal child collision algorithm caches are still valid + if (compoundShape->getUpdateRevision() != m_compoundShapeRevision) + { + ///clear and update all + removeChildAlgorithms(); + + preallocateChildAlgorithms(body0,body1); + } + + + btDbvt* tree = compoundShape->getDynamicAabbTree(); + //use a dynamic aabb tree to cull potential child-overlaps + btCompoundLeafCallback callback(colObj,otherObj,m_dispatcher,dispatchInfo,resultOut,&m_childCollisionAlgorithms[0],m_sharedManifold); + + ///we need to refresh all contact manifolds + ///note that we should actually recursively traverse all children, btCompoundShape can nested more then 1 level deep + ///so we should add a 'refreshManifolds' in the btCollisionAlgorithm + { + int i; + btManifoldArray manifoldArray; + for (i=0;igetAllContactManifolds(manifoldArray); + for (int m=0;mgetNumContacts()) + { + resultOut->setPersistentManifold(manifoldArray[m]); + resultOut->refreshContactPoints(); + resultOut->setPersistentManifold(0);//??necessary? + } + } + manifoldArray.clear(); + } + } + } + + if (tree) + { + + btVector3 localAabbMin,localAabbMax; + btTransform otherInCompoundSpace; + otherInCompoundSpace = colObj->getWorldTransform().inverse() * otherObj->getWorldTransform(); + otherObj->getCollisionShape()->getAabb(otherInCompoundSpace,localAabbMin,localAabbMax); + + const ATTRIBUTE_ALIGNED16(btDbvtVolume) bounds=btDbvtVolume::FromMM(localAabbMin,localAabbMax); + //process all children, that overlap with the given AABB bounds + tree->collideTV(tree->m_root,bounds,callback); + + } else + { + //iterate over all children, perform an AABB check inside ProcessChildShape + int numChildren = m_childCollisionAlgorithms.size(); + int i; + for (i=0;igetChildShape(i),i); + } + } + + { + //iterate over all children, perform an AABB check inside ProcessChildShape + int numChildren = m_childCollisionAlgorithms.size(); + int i; + btManifoldArray manifoldArray; + + for (i=0;igetChildShape(i); + //if not longer overlapping, remove the algorithm + btTransform orgTrans = colObj->getWorldTransform(); + btTransform orgInterpolationTrans = colObj->getInterpolationWorldTransform(); + const btTransform& childTrans = compoundShape->getChildTransform(i); + btTransform newChildWorldTrans = orgTrans*childTrans ; + + //perform an AABB check first + btVector3 aabbMin0,aabbMax0,aabbMin1,aabbMax1; + childShape->getAabb(newChildWorldTrans,aabbMin0,aabbMax0); + otherObj->getCollisionShape()->getAabb(otherObj->getWorldTransform(),aabbMin1,aabbMax1); + + if (!TestAabbAgainstAabb2(aabbMin0,aabbMax0,aabbMin1,aabbMax1)) + { + m_childCollisionAlgorithms[i]->~btCollisionAlgorithm(); + m_dispatcher->freeCollisionAlgorithm(m_childCollisionAlgorithms[i]); + m_childCollisionAlgorithms[i] = 0; + } + + } + + } + + + + } +} + +btScalar btCompoundCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + + btCollisionObject* colObj = m_isSwapped? body1 : body0; + btCollisionObject* otherObj = m_isSwapped? body0 : body1; + + btAssert (colObj->getCollisionShape()->isCompound()); + + btCompoundShape* compoundShape = static_cast(colObj->getCollisionShape()); + + //We will use the OptimizedBVH, AABB tree to cull potential child-overlaps + //If both proxies are Compound, we will deal with that directly, by performing sequential/parallel tree traversals + //given Proxy0 and Proxy1, if both have a tree, Tree0 and Tree1, this means: + //determine overlapping nodes of Proxy1 using Proxy0 AABB against Tree1 + //then use each overlapping node AABB against Tree0 + //and vise versa. + + btScalar hitFraction = btScalar(1.); + + int numChildren = m_childCollisionAlgorithms.size(); + int i; + for (i=0;igetChildShape(i); + + //backup + btTransform orgTrans = colObj->getWorldTransform(); + + const btTransform& childTrans = compoundShape->getChildTransform(i); + //btTransform newChildWorldTrans = orgTrans*childTrans ; + colObj->setWorldTransform( orgTrans*childTrans ); + + btCollisionShape* tmpShape = colObj->getCollisionShape(); + colObj->internalSetTemporaryCollisionShape( childShape ); + btScalar frac = m_childCollisionAlgorithms[i]->calculateTimeOfImpact(colObj,otherObj,dispatchInfo,resultOut); + if (fracinternalSetTemporaryCollisionShape( tmpShape); + colObj->setWorldTransform( orgTrans); + } + return hitFraction; + +} + + + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h new file mode 100644 index 00000000000..255e0af668c --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h @@ -0,0 +1,86 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef COMPOUND_COLLISION_ALGORITHM_H +#define COMPOUND_COLLISION_ALGORITHM_H + +#include "btActivatingCollisionAlgorithm.h" +#include "BulletCollision/BroadphaseCollision/btDispatcher.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h" + +#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" +class btDispatcher; +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "btCollisionCreateFunc.h" +#include "LinearMath/btAlignedObjectArray.h" +class btDispatcher; +class btCollisionObject; + +/// btCompoundCollisionAlgorithm supports collision between CompoundCollisionShapes and other collision shapes +class btCompoundCollisionAlgorithm : public btActivatingCollisionAlgorithm +{ + btAlignedObjectArray m_childCollisionAlgorithms; + bool m_isSwapped; + + class btPersistentManifold* m_sharedManifold; + bool m_ownsManifold; + + int m_compoundShapeRevision;//to keep track of changes, so that childAlgorithm array can be updated + + void removeChildAlgorithms(); + + void preallocateChildAlgorithms(btCollisionObject* body0,btCollisionObject* body1); + +public: + + btCompoundCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped); + + virtual ~btCompoundCollisionAlgorithm(); + + virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual void getAllContactManifolds(btManifoldArray& manifoldArray) + { + int i; + for (i=0;igetAllContactManifolds(manifoldArray); + } + } + + struct CreateFunc :public btCollisionAlgorithmCreateFunc + { + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) + { + void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btCompoundCollisionAlgorithm)); + return new(mem) btCompoundCollisionAlgorithm(ci,body0,body1,false); + } + }; + + struct SwappedCreateFunc :public btCollisionAlgorithmCreateFunc + { + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) + { + void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btCompoundCollisionAlgorithm)); + return new(mem) btCompoundCollisionAlgorithm(ci,body0,body1,true); + } + }; + +}; + +#endif //COMPOUND_COLLISION_ALGORITHM_H diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp new file mode 100644 index 00000000000..db7f884ac82 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp @@ -0,0 +1,247 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btConvex2dConvex2dAlgorithm.h" + +//#include +#include "BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "BulletCollision/CollisionShapes/btConvexShape.h" +#include "BulletCollision/CollisionShapes/btCapsuleShape.h" + + +#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" +#include "BulletCollision/CollisionShapes/btBoxShape.h" +#include "BulletCollision/CollisionDispatch/btManifoldResult.h" + +#include "BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h" +#include "BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h" +#include "BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h" +#include "BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h" + + + +#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h" +#include "BulletCollision/CollisionShapes/btSphereShape.h" + +#include "BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h" + +#include "BulletCollision/NarrowPhaseCollision/btGjkEpa2.h" +#include "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h" + + +btConvex2dConvex2dAlgorithm::CreateFunc::CreateFunc(btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver) +{ + m_numPerturbationIterations = 0; + m_minimumPointsPerturbationThreshold = 3; + m_simplexSolver = simplexSolver; + m_pdSolver = pdSolver; +} + +btConvex2dConvex2dAlgorithm::CreateFunc::~CreateFunc() +{ +} + +btConvex2dConvex2dAlgorithm::btConvex2dConvex2dAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver,int numPerturbationIterations, int minimumPointsPerturbationThreshold) +: btActivatingCollisionAlgorithm(ci,body0,body1), +m_simplexSolver(simplexSolver), +m_pdSolver(pdSolver), +m_ownManifold (false), +m_manifoldPtr(mf), +m_lowLevelOfDetail(false), + m_numPerturbationIterations(numPerturbationIterations), +m_minimumPointsPerturbationThreshold(minimumPointsPerturbationThreshold) +{ + (void)body0; + (void)body1; +} + + + + +btConvex2dConvex2dAlgorithm::~btConvex2dConvex2dAlgorithm() +{ + if (m_ownManifold) + { + if (m_manifoldPtr) + m_dispatcher->releaseManifold(m_manifoldPtr); + } +} + +void btConvex2dConvex2dAlgorithm ::setLowLevelOfDetail(bool useLowLevel) +{ + m_lowLevelOfDetail = useLowLevel; +} + + + +extern btScalar gContactBreakingThreshold; + + +// +// Convex-Convex collision algorithm +// +void btConvex2dConvex2dAlgorithm ::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + + if (!m_manifoldPtr) + { + //swapped? + m_manifoldPtr = m_dispatcher->getNewManifold(body0,body1); + m_ownManifold = true; + } + resultOut->setPersistentManifold(m_manifoldPtr); + + //comment-out next line to test multi-contact generation + //resultOut->getPersistentManifold()->clearManifold(); + + + btConvexShape* min0 = static_cast(body0->getCollisionShape()); + btConvexShape* min1 = static_cast(body1->getCollisionShape()); + + btVector3 normalOnB; + btVector3 pointOnBWorld; + + { + + + btGjkPairDetector::ClosestPointInput input; + + btGjkPairDetector gjkPairDetector(min0,min1,m_simplexSolver,m_pdSolver); + //TODO: if (dispatchInfo.m_useContinuous) + gjkPairDetector.setMinkowskiA(min0); + gjkPairDetector.setMinkowskiB(min1); + + { + input.m_maximumDistanceSquared = min0->getMargin() + min1->getMargin() + m_manifoldPtr->getContactBreakingThreshold(); + input.m_maximumDistanceSquared*= input.m_maximumDistanceSquared; + } + + input.m_stackAlloc = dispatchInfo.m_stackAllocator; + input.m_transformA = body0->getWorldTransform(); + input.m_transformB = body1->getWorldTransform(); + + gjkPairDetector.getClosestPoints(input,*resultOut,dispatchInfo.m_debugDraw); + + btVector3 v0,v1; + btVector3 sepNormalWorldSpace; + + } + + if (m_ownManifold) + { + resultOut->refreshContactPoints(); + } + +} + + + + +btScalar btConvex2dConvex2dAlgorithm::calculateTimeOfImpact(btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + (void)resultOut; + (void)dispatchInfo; + ///Rather then checking ALL pairs, only calculate TOI when motion exceeds threshold + + ///Linear motion for one of objects needs to exceed m_ccdSquareMotionThreshold + ///col0->m_worldTransform, + btScalar resultFraction = btScalar(1.); + + + btScalar squareMot0 = (col0->getInterpolationWorldTransform().getOrigin() - col0->getWorldTransform().getOrigin()).length2(); + btScalar squareMot1 = (col1->getInterpolationWorldTransform().getOrigin() - col1->getWorldTransform().getOrigin()).length2(); + + if (squareMot0 < col0->getCcdSquareMotionThreshold() && + squareMot1 < col1->getCcdSquareMotionThreshold()) + return resultFraction; + + + //An adhoc way of testing the Continuous Collision Detection algorithms + //One object is approximated as a sphere, to simplify things + //Starting in penetration should report no time of impact + //For proper CCD, better accuracy and handling of 'allowed' penetration should be added + //also the mainloop of the physics should have a kind of toi queue (something like Brian Mirtich's application of Timewarp for Rigidbodies) + + + /// Convex0 against sphere for Convex1 + { + btConvexShape* convex0 = static_cast(col0->getCollisionShape()); + + btSphereShape sphere1(col1->getCcdSweptSphereRadius()); //todo: allow non-zero sphere sizes, for better approximation + btConvexCast::CastResult result; + btVoronoiSimplexSolver voronoiSimplex; + //SubsimplexConvexCast ccd0(&sphere,min0,&voronoiSimplex); + ///Simplification, one object is simplified as a sphere + btGjkConvexCast ccd1( convex0 ,&sphere1,&voronoiSimplex); + //ContinuousConvexCollision ccd(min0,min1,&voronoiSimplex,0); + if (ccd1.calcTimeOfImpact(col0->getWorldTransform(),col0->getInterpolationWorldTransform(), + col1->getWorldTransform(),col1->getInterpolationWorldTransform(),result)) + { + + //store result.m_fraction in both bodies + + if (col0->getHitFraction()> result.m_fraction) + col0->setHitFraction( result.m_fraction ); + + if (col1->getHitFraction() > result.m_fraction) + col1->setHitFraction( result.m_fraction); + + if (resultFraction > result.m_fraction) + resultFraction = result.m_fraction; + + } + + + + + } + + /// Sphere (for convex0) against Convex1 + { + btConvexShape* convex1 = static_cast(col1->getCollisionShape()); + + btSphereShape sphere0(col0->getCcdSweptSphereRadius()); //todo: allow non-zero sphere sizes, for better approximation + btConvexCast::CastResult result; + btVoronoiSimplexSolver voronoiSimplex; + //SubsimplexConvexCast ccd0(&sphere,min0,&voronoiSimplex); + ///Simplification, one object is simplified as a sphere + btGjkConvexCast ccd1(&sphere0,convex1,&voronoiSimplex); + //ContinuousConvexCollision ccd(min0,min1,&voronoiSimplex,0); + if (ccd1.calcTimeOfImpact(col0->getWorldTransform(),col0->getInterpolationWorldTransform(), + col1->getWorldTransform(),col1->getInterpolationWorldTransform(),result)) + { + + //store result.m_fraction in both bodies + + if (col0->getHitFraction() > result.m_fraction) + col0->setHitFraction( result.m_fraction); + + if (col1->getHitFraction() > result.m_fraction) + col1->setHitFraction( result.m_fraction); + + if (resultFraction > result.m_fraction) + resultFraction = result.m_fraction; + + } + } + + return resultFraction; + +} + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h new file mode 100644 index 00000000000..5738401401e --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h @@ -0,0 +1,95 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CONVEX_2D_CONVEX_2D_ALGORITHM_H +#define CONVEX_2D_CONVEX_2D_ALGORITHM_H + +#include "BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h" +#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h" +#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h" +#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" +#include "LinearMath/btTransformUtil.h" //for btConvexSeparatingDistanceUtil + +class btConvexPenetrationDepthSolver; + + +///The convex2dConvex2dAlgorithm collision algorithm support 2d collision detection for btConvex2dShape +///Currently it requires the btMinkowskiPenetrationDepthSolver, it has support for 2d penetration depth computation +class btConvex2dConvex2dAlgorithm : public btActivatingCollisionAlgorithm +{ + btSimplexSolverInterface* m_simplexSolver; + btConvexPenetrationDepthSolver* m_pdSolver; + + + bool m_ownManifold; + btPersistentManifold* m_manifoldPtr; + bool m_lowLevelOfDetail; + + int m_numPerturbationIterations; + int m_minimumPointsPerturbationThreshold; + +public: + + btConvex2dConvex2dAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1, btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver, int numPerturbationIterations, int minimumPointsPerturbationThreshold); + + + virtual ~btConvex2dConvex2dAlgorithm(); + + virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual void getAllContactManifolds(btManifoldArray& manifoldArray) + { + ///should we use m_ownManifold to avoid adding duplicates? + if (m_manifoldPtr && m_ownManifold) + manifoldArray.push_back(m_manifoldPtr); + } + + + void setLowLevelOfDetail(bool useLowLevel); + + + const btPersistentManifold* getManifold() + { + return m_manifoldPtr; + } + + struct CreateFunc :public btCollisionAlgorithmCreateFunc + { + + btConvexPenetrationDepthSolver* m_pdSolver; + btSimplexSolverInterface* m_simplexSolver; + int m_numPerturbationIterations; + int m_minimumPointsPerturbationThreshold; + + CreateFunc(btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver); + + virtual ~CreateFunc(); + + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) + { + void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvex2dConvex2dAlgorithm)); + return new(mem) btConvex2dConvex2dAlgorithm(ci.m_manifold,ci,body0,body1,m_simplexSolver,m_pdSolver,m_numPerturbationIterations,m_minimumPointsPerturbationThreshold); + } + }; + + +}; + +#endif //CONVEX_2D_CONVEX_2D_ALGORITHM_H diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp new file mode 100644 index 00000000000..268ec4b6c7e --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp @@ -0,0 +1,321 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btConvexConcaveCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "BulletCollision/CollisionShapes/btMultiSphereShape.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "BulletCollision/CollisionShapes/btConcaveShape.h" +#include "BulletCollision/CollisionDispatch/btManifoldResult.h" +#include "BulletCollision/NarrowPhaseCollision/btRaycastCallback.h" +#include "BulletCollision/CollisionShapes/btTriangleShape.h" +#include "BulletCollision/CollisionShapes/btSphereShape.h" +#include "LinearMath/btIDebugDraw.h" +#include "BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h" + +btConvexConcaveCollisionAlgorithm::btConvexConcaveCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1,bool isSwapped) +: btActivatingCollisionAlgorithm(ci,body0,body1), +m_isSwapped(isSwapped), +m_btConvexTriangleCallback(ci.m_dispatcher1,body0,body1,isSwapped) +{ +} + +btConvexConcaveCollisionAlgorithm::~btConvexConcaveCollisionAlgorithm() +{ +} + +void btConvexConcaveCollisionAlgorithm::getAllContactManifolds(btManifoldArray& manifoldArray) +{ + if (m_btConvexTriangleCallback.m_manifoldPtr) + { + manifoldArray.push_back(m_btConvexTriangleCallback.m_manifoldPtr); + } +} + + +btConvexTriangleCallback::btConvexTriangleCallback(btDispatcher* dispatcher,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped): + m_dispatcher(dispatcher), + m_dispatchInfoPtr(0) +{ + m_convexBody = isSwapped? body1:body0; + m_triBody = isSwapped? body0:body1; + + // + // create the manifold from the dispatcher 'manifold pool' + // + m_manifoldPtr = m_dispatcher->getNewManifold(m_convexBody,m_triBody); + + clearCache(); +} + +btConvexTriangleCallback::~btConvexTriangleCallback() +{ + clearCache(); + m_dispatcher->releaseManifold( m_manifoldPtr ); + +} + + +void btConvexTriangleCallback::clearCache() +{ + m_dispatcher->clearManifold(m_manifoldPtr); +} + + + +void btConvexTriangleCallback::processTriangle(btVector3* triangle,int partId, int triangleIndex) +{ + + //just for debugging purposes + //printf("triangle %d",m_triangleCount++); + + + //aabb filter is already applied! + + btCollisionAlgorithmConstructionInfo ci; + ci.m_dispatcher1 = m_dispatcher; + + btCollisionObject* ob = static_cast(m_triBody); + + + + ///debug drawing of the overlapping triangles + if (m_dispatchInfoPtr && m_dispatchInfoPtr->m_debugDraw && (m_dispatchInfoPtr->m_debugDraw->getDebugMode() &btIDebugDraw::DBG_DrawWireframe )) + { + btVector3 color(1,1,0); + btTransform& tr = ob->getWorldTransform(); + m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[0]),tr(triangle[1]),color); + m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[1]),tr(triangle[2]),color); + m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[2]),tr(triangle[0]),color); + + //btVector3 center = triangle[0] + triangle[1]+triangle[2]; + //center *= btScalar(0.333333); + //m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[0]),tr(center),color); + //m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[1]),tr(center),color); + //m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[2]),tr(center),color); + + } + + + //btCollisionObject* colObj = static_cast(m_convexProxy->m_clientObject); + + if (m_convexBody->getCollisionShape()->isConvex()) + { + btTriangleShape tm(triangle[0],triangle[1],triangle[2]); + tm.setMargin(m_collisionMarginTriangle); + + btCollisionShape* tmpShape = ob->getCollisionShape(); + ob->internalSetTemporaryCollisionShape( &tm ); + + btCollisionAlgorithm* colAlgo = ci.m_dispatcher1->findAlgorithm(m_convexBody,m_triBody,m_manifoldPtr); + + if (m_resultOut->getBody0Internal() == m_triBody) + { + m_resultOut->setShapeIdentifiersA(partId,triangleIndex); + } + else + { + m_resultOut->setShapeIdentifiersB(partId,triangleIndex); + } + + colAlgo->processCollision(m_convexBody,m_triBody,*m_dispatchInfoPtr,m_resultOut); + colAlgo->~btCollisionAlgorithm(); + ci.m_dispatcher1->freeCollisionAlgorithm(colAlgo); + ob->internalSetTemporaryCollisionShape( tmpShape); + } + + +} + + + +void btConvexTriangleCallback::setTimeStepAndCounters(btScalar collisionMarginTriangle,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + m_dispatchInfoPtr = &dispatchInfo; + m_collisionMarginTriangle = collisionMarginTriangle; + m_resultOut = resultOut; + + //recalc aabbs + btTransform convexInTriangleSpace; + convexInTriangleSpace = m_triBody->getWorldTransform().inverse() * m_convexBody->getWorldTransform(); + btCollisionShape* convexShape = static_cast(m_convexBody->getCollisionShape()); + //CollisionShape* triangleShape = static_cast(triBody->m_collisionShape); + convexShape->getAabb(convexInTriangleSpace,m_aabbMin,m_aabbMax); + btScalar extraMargin = collisionMarginTriangle; + btVector3 extra(extraMargin,extraMargin,extraMargin); + + m_aabbMax += extra; + m_aabbMin -= extra; + +} + +void btConvexConcaveCollisionAlgorithm::clearCache() +{ + m_btConvexTriangleCallback.clearCache(); + +} + +void btConvexConcaveCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + + + btCollisionObject* convexBody = m_isSwapped ? body1 : body0; + btCollisionObject* triBody = m_isSwapped ? body0 : body1; + + if (triBody->getCollisionShape()->isConcave()) + { + + + btCollisionObject* triOb = triBody; + btConcaveShape* concaveShape = static_cast( triOb->getCollisionShape()); + + if (convexBody->getCollisionShape()->isConvex()) + { + btScalar collisionMarginTriangle = concaveShape->getMargin(); + + resultOut->setPersistentManifold(m_btConvexTriangleCallback.m_manifoldPtr); + m_btConvexTriangleCallback.setTimeStepAndCounters(collisionMarginTriangle,dispatchInfo,resultOut); + + //Disable persistency. previously, some older algorithm calculated all contacts in one go, so you can clear it here. + //m_dispatcher->clearManifold(m_btConvexTriangleCallback.m_manifoldPtr); + + m_btConvexTriangleCallback.m_manifoldPtr->setBodies(convexBody,triBody); + + concaveShape->processAllTriangles( &m_btConvexTriangleCallback,m_btConvexTriangleCallback.getAabbMin(),m_btConvexTriangleCallback.getAabbMax()); + + resultOut->refreshContactPoints(); + + } + + } + +} + + +btScalar btConvexConcaveCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + (void)resultOut; + (void)dispatchInfo; + btCollisionObject* convexbody = m_isSwapped ? body1 : body0; + btCollisionObject* triBody = m_isSwapped ? body0 : body1; + + + //quick approximation using raycast, todo: hook up to the continuous collision detection (one of the btConvexCast) + + //only perform CCD above a certain threshold, this prevents blocking on the long run + //because object in a blocked ccd state (hitfraction<1) get their linear velocity halved each frame... + btScalar squareMot0 = (convexbody->getInterpolationWorldTransform().getOrigin() - convexbody->getWorldTransform().getOrigin()).length2(); + if (squareMot0 < convexbody->getCcdSquareMotionThreshold()) + { + return btScalar(1.); + } + + //const btVector3& from = convexbody->m_worldTransform.getOrigin(); + //btVector3 to = convexbody->m_interpolationWorldTransform.getOrigin(); + //todo: only do if the motion exceeds the 'radius' + + btTransform triInv = triBody->getWorldTransform().inverse(); + btTransform convexFromLocal = triInv * convexbody->getWorldTransform(); + btTransform convexToLocal = triInv * convexbody->getInterpolationWorldTransform(); + + struct LocalTriangleSphereCastCallback : public btTriangleCallback + { + btTransform m_ccdSphereFromTrans; + btTransform m_ccdSphereToTrans; + btTransform m_meshTransform; + + btScalar m_ccdSphereRadius; + btScalar m_hitFraction; + + + LocalTriangleSphereCastCallback(const btTransform& from,const btTransform& to,btScalar ccdSphereRadius,btScalar hitFraction) + :m_ccdSphereFromTrans(from), + m_ccdSphereToTrans(to), + m_ccdSphereRadius(ccdSphereRadius), + m_hitFraction(hitFraction) + { + } + + + virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex) + { + (void)partId; + (void)triangleIndex; + //do a swept sphere for now + btTransform ident; + ident.setIdentity(); + btConvexCast::CastResult castResult; + castResult.m_fraction = m_hitFraction; + btSphereShape pointShape(m_ccdSphereRadius); + btTriangleShape triShape(triangle[0],triangle[1],triangle[2]); + btVoronoiSimplexSolver simplexSolver; + btSubsimplexConvexCast convexCaster(&pointShape,&triShape,&simplexSolver); + //GjkConvexCast convexCaster(&pointShape,convexShape,&simplexSolver); + //ContinuousConvexCollision convexCaster(&pointShape,convexShape,&simplexSolver,0); + //local space? + + if (convexCaster.calcTimeOfImpact(m_ccdSphereFromTrans,m_ccdSphereToTrans, + ident,ident,castResult)) + { + if (m_hitFraction > castResult.m_fraction) + m_hitFraction = castResult.m_fraction; + } + + } + + }; + + + + + + if (triBody->getCollisionShape()->isConcave()) + { + btVector3 rayAabbMin = convexFromLocal.getOrigin(); + rayAabbMin.setMin(convexToLocal.getOrigin()); + btVector3 rayAabbMax = convexFromLocal.getOrigin(); + rayAabbMax.setMax(convexToLocal.getOrigin()); + btScalar ccdRadius0 = convexbody->getCcdSweptSphereRadius(); + rayAabbMin -= btVector3(ccdRadius0,ccdRadius0,ccdRadius0); + rayAabbMax += btVector3(ccdRadius0,ccdRadius0,ccdRadius0); + + btScalar curHitFraction = btScalar(1.); //is this available? + LocalTriangleSphereCastCallback raycastCallback(convexFromLocal,convexToLocal, + convexbody->getCcdSweptSphereRadius(),curHitFraction); + + raycastCallback.m_hitFraction = convexbody->getHitFraction(); + + btCollisionObject* concavebody = triBody; + + btConcaveShape* triangleMesh = (btConcaveShape*) concavebody->getCollisionShape(); + + if (triangleMesh) + { + triangleMesh->processAllTriangles(&raycastCallback,rayAabbMin,rayAabbMax); + } + + + + if (raycastCallback.m_hitFraction < convexbody->getHitFraction()) + { + convexbody->setHitFraction( raycastCallback.m_hitFraction); + return raycastCallback.m_hitFraction; + } + } + + return btScalar(1.); + +} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h new file mode 100644 index 00000000000..984a4c39e8e --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h @@ -0,0 +1,116 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CONVEX_CONCAVE_COLLISION_ALGORITHM_H +#define CONVEX_CONCAVE_COLLISION_ALGORITHM_H + +#include "btActivatingCollisionAlgorithm.h" +#include "BulletCollision/BroadphaseCollision/btDispatcher.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h" +#include "BulletCollision/CollisionShapes/btTriangleCallback.h" +#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" +class btDispatcher; +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "btCollisionCreateFunc.h" + +///For each triangle in the concave mesh that overlaps with the AABB of a convex (m_convexProxy), processTriangle is called. +class btConvexTriangleCallback : public btTriangleCallback +{ + btCollisionObject* m_convexBody; + btCollisionObject* m_triBody; + + btVector3 m_aabbMin; + btVector3 m_aabbMax ; + + + btManifoldResult* m_resultOut; + btDispatcher* m_dispatcher; + const btDispatcherInfo* m_dispatchInfoPtr; + btScalar m_collisionMarginTriangle; + +public: +int m_triangleCount; + + btPersistentManifold* m_manifoldPtr; + + btConvexTriangleCallback(btDispatcher* dispatcher,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped); + + void setTimeStepAndCounters(btScalar collisionMarginTriangle,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual ~btConvexTriangleCallback(); + + virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex); + + void clearCache(); + + SIMD_FORCE_INLINE const btVector3& getAabbMin() const + { + return m_aabbMin; + } + SIMD_FORCE_INLINE const btVector3& getAabbMax() const + { + return m_aabbMax; + } + +}; + + + + +/// btConvexConcaveCollisionAlgorithm supports collision between convex shapes and (concave) trianges meshes. +class btConvexConcaveCollisionAlgorithm : public btActivatingCollisionAlgorithm +{ + + bool m_isSwapped; + + btConvexTriangleCallback m_btConvexTriangleCallback; + + + +public: + + btConvexConcaveCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped); + + virtual ~btConvexConcaveCollisionAlgorithm(); + + virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual void getAllContactManifolds(btManifoldArray& manifoldArray); + + void clearCache(); + + struct CreateFunc :public btCollisionAlgorithmCreateFunc + { + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) + { + void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvexConcaveCollisionAlgorithm)); + return new(mem) btConvexConcaveCollisionAlgorithm(ci,body0,body1,false); + } + }; + + struct SwappedCreateFunc :public btCollisionAlgorithmCreateFunc + { + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) + { + void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvexConcaveCollisionAlgorithm)); + return new(mem) btConvexConcaveCollisionAlgorithm(ci,body0,body1,true); + } + }; + +}; + +#endif //CONVEX_CONCAVE_COLLISION_ALGORITHM_H diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp new file mode 100644 index 00000000000..c1d988aedff --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp @@ -0,0 +1,574 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +///Specialized capsule-capsule collision algorithm has been added for Bullet 2.75 release to increase ragdoll performance +///If you experience problems with capsule-capsule collision, try to define BT_DISABLE_CAPSULE_CAPSULE_COLLIDER and report it in the Bullet forums +///with reproduction case +//define BT_DISABLE_CAPSULE_CAPSULE_COLLIDER 1 + +#include "btConvexConvexAlgorithm.h" + +//#include +#include "BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "BulletCollision/CollisionShapes/btConvexShape.h" +#include "BulletCollision/CollisionShapes/btCapsuleShape.h" + + +#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" +#include "BulletCollision/CollisionShapes/btBoxShape.h" +#include "BulletCollision/CollisionDispatch/btManifoldResult.h" + +#include "BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h" +#include "BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h" +#include "BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h" +#include "BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h" + + + +#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h" +#include "BulletCollision/CollisionShapes/btSphereShape.h" + +#include "BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h" + +#include "BulletCollision/NarrowPhaseCollision/btGjkEpa2.h" +#include "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h" + + + +/////////// + + + +static SIMD_FORCE_INLINE void segmentsClosestPoints( + btVector3& ptsVector, + btVector3& offsetA, + btVector3& offsetB, + btScalar& tA, btScalar& tB, + const btVector3& translation, + const btVector3& dirA, btScalar hlenA, + const btVector3& dirB, btScalar hlenB ) +{ + // compute the parameters of the closest points on each line segment + + btScalar dirA_dot_dirB = btDot(dirA,dirB); + btScalar dirA_dot_trans = btDot(dirA,translation); + btScalar dirB_dot_trans = btDot(dirB,translation); + + btScalar denom = 1.0f - dirA_dot_dirB * dirA_dot_dirB; + + if ( denom == 0.0f ) { + tA = 0.0f; + } else { + tA = ( dirA_dot_trans - dirB_dot_trans * dirA_dot_dirB ) / denom; + if ( tA < -hlenA ) + tA = -hlenA; + else if ( tA > hlenA ) + tA = hlenA; + } + + tB = tA * dirA_dot_dirB - dirB_dot_trans; + + if ( tB < -hlenB ) { + tB = -hlenB; + tA = tB * dirA_dot_dirB + dirA_dot_trans; + + if ( tA < -hlenA ) + tA = -hlenA; + else if ( tA > hlenA ) + tA = hlenA; + } else if ( tB > hlenB ) { + tB = hlenB; + tA = tB * dirA_dot_dirB + dirA_dot_trans; + + if ( tA < -hlenA ) + tA = -hlenA; + else if ( tA > hlenA ) + tA = hlenA; + } + + // compute the closest points relative to segment centers. + + offsetA = dirA * tA; + offsetB = dirB * tB; + + ptsVector = translation - offsetA + offsetB; +} + + +static SIMD_FORCE_INLINE btScalar capsuleCapsuleDistance( + btVector3& normalOnB, + btVector3& pointOnB, + btScalar capsuleLengthA, + btScalar capsuleRadiusA, + btScalar capsuleLengthB, + btScalar capsuleRadiusB, + int capsuleAxisA, + int capsuleAxisB, + const btTransform& transformA, + const btTransform& transformB, + btScalar distanceThreshold ) +{ + btVector3 directionA = transformA.getBasis().getColumn(capsuleAxisA); + btVector3 translationA = transformA.getOrigin(); + btVector3 directionB = transformB.getBasis().getColumn(capsuleAxisB); + btVector3 translationB = transformB.getOrigin(); + + // translation between centers + + btVector3 translation = translationB - translationA; + + // compute the closest points of the capsule line segments + + btVector3 ptsVector; // the vector between the closest points + + btVector3 offsetA, offsetB; // offsets from segment centers to their closest points + btScalar tA, tB; // parameters on line segment + + segmentsClosestPoints( ptsVector, offsetA, offsetB, tA, tB, translation, + directionA, capsuleLengthA, directionB, capsuleLengthB ); + + btScalar distance = ptsVector.length() - capsuleRadiusA - capsuleRadiusB; + + if ( distance > distanceThreshold ) + return distance; + + btScalar lenSqr = ptsVector.length2(); + if (lenSqr<= (SIMD_EPSILON*SIMD_EPSILON)) + { + //degenerate case where 2 capsules are likely at the same location: take a vector tangential to 'directionA' + btVector3 q; + btPlaneSpace1(directionA,normalOnB,q); + } else + { + // compute the contact normal + normalOnB = ptsVector*-btRecipSqrt(lenSqr); + } + pointOnB = transformB.getOrigin()+offsetB + normalOnB * capsuleRadiusB; + + return distance; +} + + + + + + + +////////// + + + + + +btConvexConvexAlgorithm::CreateFunc::CreateFunc(btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver) +{ + m_numPerturbationIterations = 0; + m_minimumPointsPerturbationThreshold = 3; + m_simplexSolver = simplexSolver; + m_pdSolver = pdSolver; +} + +btConvexConvexAlgorithm::CreateFunc::~CreateFunc() +{ +} + +btConvexConvexAlgorithm::btConvexConvexAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver,int numPerturbationIterations, int minimumPointsPerturbationThreshold) +: btActivatingCollisionAlgorithm(ci,body0,body1), +m_simplexSolver(simplexSolver), +m_pdSolver(pdSolver), +m_ownManifold (false), +m_manifoldPtr(mf), +m_lowLevelOfDetail(false), +#ifdef USE_SEPDISTANCE_UTIL2 +m_sepDistance((static_cast(body0->getCollisionShape()))->getAngularMotionDisc(), + (static_cast(body1->getCollisionShape()))->getAngularMotionDisc()), +#endif +m_numPerturbationIterations(numPerturbationIterations), +m_minimumPointsPerturbationThreshold(minimumPointsPerturbationThreshold) +{ + (void)body0; + (void)body1; +} + + + + +btConvexConvexAlgorithm::~btConvexConvexAlgorithm() +{ + if (m_ownManifold) + { + if (m_manifoldPtr) + m_dispatcher->releaseManifold(m_manifoldPtr); + } +} + +void btConvexConvexAlgorithm ::setLowLevelOfDetail(bool useLowLevel) +{ + m_lowLevelOfDetail = useLowLevel; +} + + +struct btPerturbedContactResult : public btManifoldResult +{ + btManifoldResult* m_originalManifoldResult; + btTransform m_transformA; + btTransform m_transformB; + btTransform m_unPerturbedTransform; + bool m_perturbA; + btIDebugDraw* m_debugDrawer; + + + btPerturbedContactResult(btManifoldResult* originalResult,const btTransform& transformA,const btTransform& transformB,const btTransform& unPerturbedTransform,bool perturbA,btIDebugDraw* debugDrawer) + :m_originalManifoldResult(originalResult), + m_transformA(transformA), + m_transformB(transformB), + m_unPerturbedTransform(unPerturbedTransform), + m_perturbA(perturbA), + m_debugDrawer(debugDrawer) + { + } + virtual ~ btPerturbedContactResult() + { + } + + virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar orgDepth) + { + btVector3 endPt,startPt; + btScalar newDepth; + btVector3 newNormal; + + if (m_perturbA) + { + btVector3 endPtOrg = pointInWorld + normalOnBInWorld*orgDepth; + endPt = (m_unPerturbedTransform*m_transformA.inverse())(endPtOrg); + newDepth = (endPt - pointInWorld).dot(normalOnBInWorld); + startPt = endPt+normalOnBInWorld*newDepth; + } else + { + endPt = pointInWorld + normalOnBInWorld*orgDepth; + startPt = (m_unPerturbedTransform*m_transformB.inverse())(pointInWorld); + newDepth = (endPt - startPt).dot(normalOnBInWorld); + + } + +//#define DEBUG_CONTACTS 1 +#ifdef DEBUG_CONTACTS + m_debugDrawer->drawLine(startPt,endPt,btVector3(1,0,0)); + m_debugDrawer->drawSphere(startPt,0.05,btVector3(0,1,0)); + m_debugDrawer->drawSphere(endPt,0.05,btVector3(0,0,1)); +#endif //DEBUG_CONTACTS + + + m_originalManifoldResult->addContactPoint(normalOnBInWorld,startPt,newDepth); + } + +}; + +extern btScalar gContactBreakingThreshold; + + +// +// Convex-Convex collision algorithm +// +void btConvexConvexAlgorithm ::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + + if (!m_manifoldPtr) + { + //swapped? + m_manifoldPtr = m_dispatcher->getNewManifold(body0,body1); + m_ownManifold = true; + } + resultOut->setPersistentManifold(m_manifoldPtr); + + //comment-out next line to test multi-contact generation + //resultOut->getPersistentManifold()->clearManifold(); + + + btConvexShape* min0 = static_cast(body0->getCollisionShape()); + btConvexShape* min1 = static_cast(body1->getCollisionShape()); + + btVector3 normalOnB; + btVector3 pointOnBWorld; +#ifndef BT_DISABLE_CAPSULE_CAPSULE_COLLIDER + if ((min0->getShapeType() == CAPSULE_SHAPE_PROXYTYPE) && (min1->getShapeType() == CAPSULE_SHAPE_PROXYTYPE)) + { + btCapsuleShape* capsuleA = (btCapsuleShape*) min0; + btCapsuleShape* capsuleB = (btCapsuleShape*) min1; + btVector3 localScalingA = capsuleA->getLocalScaling(); + btVector3 localScalingB = capsuleB->getLocalScaling(); + + btScalar threshold = m_manifoldPtr->getContactBreakingThreshold(); + + btScalar dist = capsuleCapsuleDistance(normalOnB, pointOnBWorld,capsuleA->getHalfHeight(),capsuleA->getRadius(), + capsuleB->getHalfHeight(),capsuleB->getRadius(),capsuleA->getUpAxis(),capsuleB->getUpAxis(), + body0->getWorldTransform(),body1->getWorldTransform(),threshold); + + if (dist=(SIMD_EPSILON*SIMD_EPSILON)); + resultOut->addContactPoint(normalOnB,pointOnBWorld,dist); + } + resultOut->refreshContactPoints(); + return; + } +#endif //BT_DISABLE_CAPSULE_CAPSULE_COLLIDER + + +#ifdef USE_SEPDISTANCE_UTIL2 + if (dispatchInfo.m_useConvexConservativeDistanceUtil) + { + m_sepDistance.updateSeparatingDistance(body0->getWorldTransform(),body1->getWorldTransform()); + } + + if (!dispatchInfo.m_useConvexConservativeDistanceUtil || m_sepDistance.getConservativeSeparatingDistance()<=0.f) +#endif //USE_SEPDISTANCE_UTIL2 + + { + + + btGjkPairDetector::ClosestPointInput input; + + btGjkPairDetector gjkPairDetector(min0,min1,m_simplexSolver,m_pdSolver); + //TODO: if (dispatchInfo.m_useContinuous) + gjkPairDetector.setMinkowskiA(min0); + gjkPairDetector.setMinkowskiB(min1); + +#ifdef USE_SEPDISTANCE_UTIL2 + if (dispatchInfo.m_useConvexConservativeDistanceUtil) + { + input.m_maximumDistanceSquared = BT_LARGE_FLOAT; + } else +#endif //USE_SEPDISTANCE_UTIL2 + { + input.m_maximumDistanceSquared = min0->getMargin() + min1->getMargin() + m_manifoldPtr->getContactBreakingThreshold(); + input.m_maximumDistanceSquared*= input.m_maximumDistanceSquared; + } + + input.m_stackAlloc = dispatchInfo.m_stackAllocator; + input.m_transformA = body0->getWorldTransform(); + input.m_transformB = body1->getWorldTransform(); + + gjkPairDetector.getClosestPoints(input,*resultOut,dispatchInfo.m_debugDraw); + + + +#ifdef USE_SEPDISTANCE_UTIL2 + btScalar sepDist = 0.f; + if (dispatchInfo.m_useConvexConservativeDistanceUtil) + { + sepDist = gjkPairDetector.getCachedSeparatingDistance(); + if (sepDist>SIMD_EPSILON) + { + sepDist += dispatchInfo.m_convexConservativeDistanceThreshold; + //now perturbe directions to get multiple contact points + + } + } +#endif //USE_SEPDISTANCE_UTIL2 + + //now perform 'm_numPerturbationIterations' collision queries with the perturbated collision objects + + //perform perturbation when more then 'm_minimumPointsPerturbationThreshold' points + if (m_numPerturbationIterations && resultOut->getPersistentManifold()->getNumContacts() < m_minimumPointsPerturbationThreshold) + { + + int i; + btVector3 v0,v1; + btVector3 sepNormalWorldSpace; + + sepNormalWorldSpace = gjkPairDetector.getCachedSeparatingAxis().normalized(); + btPlaneSpace1(sepNormalWorldSpace,v0,v1); + + + bool perturbeA = true; + const btScalar angleLimit = 0.125f * SIMD_PI; + btScalar perturbeAngle; + btScalar radiusA = min0->getAngularMotionDisc(); + btScalar radiusB = min1->getAngularMotionDisc(); + if (radiusA < radiusB) + { + perturbeAngle = gContactBreakingThreshold /radiusA; + perturbeA = true; + } else + { + perturbeAngle = gContactBreakingThreshold / radiusB; + perturbeA = false; + } + if ( perturbeAngle > angleLimit ) + perturbeAngle = angleLimit; + + btTransform unPerturbedTransform; + if (perturbeA) + { + unPerturbedTransform = input.m_transformA; + } else + { + unPerturbedTransform = input.m_transformB; + } + + for ( i=0;iSIMD_EPSILON) + { + btQuaternion perturbeRot(v0,perturbeAngle); + btScalar iterationAngle = i*(SIMD_2_PI/btScalar(m_numPerturbationIterations)); + btQuaternion rotq(sepNormalWorldSpace,iterationAngle); + + + if (perturbeA) + { + input.m_transformA.setBasis( btMatrix3x3(rotq.inverse()*perturbeRot*rotq)*body0->getWorldTransform().getBasis()); + input.m_transformB = body1->getWorldTransform(); +#ifdef DEBUG_CONTACTS + dispatchInfo.m_debugDraw->drawTransform(input.m_transformA,10.0); +#endif //DEBUG_CONTACTS + } else + { + input.m_transformA = body0->getWorldTransform(); + input.m_transformB.setBasis( btMatrix3x3(rotq.inverse()*perturbeRot*rotq)*body1->getWorldTransform().getBasis()); +#ifdef DEBUG_CONTACTS + dispatchInfo.m_debugDraw->drawTransform(input.m_transformB,10.0); +#endif + } + + btPerturbedContactResult perturbedResultOut(resultOut,input.m_transformA,input.m_transformB,unPerturbedTransform,perturbeA,dispatchInfo.m_debugDraw); + gjkPairDetector.getClosestPoints(input,perturbedResultOut,dispatchInfo.m_debugDraw); + } + + } + } + + + +#ifdef USE_SEPDISTANCE_UTIL2 + if (dispatchInfo.m_useConvexConservativeDistanceUtil && (sepDist>SIMD_EPSILON)) + { + m_sepDistance.initSeparatingDistance(gjkPairDetector.getCachedSeparatingAxis(),sepDist,body0->getWorldTransform(),body1->getWorldTransform()); + } +#endif //USE_SEPDISTANCE_UTIL2 + + + } + + if (m_ownManifold) + { + resultOut->refreshContactPoints(); + } + +} + + + +bool disableCcd = false; +btScalar btConvexConvexAlgorithm::calculateTimeOfImpact(btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + (void)resultOut; + (void)dispatchInfo; + ///Rather then checking ALL pairs, only calculate TOI when motion exceeds threshold + + ///Linear motion for one of objects needs to exceed m_ccdSquareMotionThreshold + ///col0->m_worldTransform, + btScalar resultFraction = btScalar(1.); + + + btScalar squareMot0 = (col0->getInterpolationWorldTransform().getOrigin() - col0->getWorldTransform().getOrigin()).length2(); + btScalar squareMot1 = (col1->getInterpolationWorldTransform().getOrigin() - col1->getWorldTransform().getOrigin()).length2(); + + if (squareMot0 < col0->getCcdSquareMotionThreshold() && + squareMot1 < col1->getCcdSquareMotionThreshold()) + return resultFraction; + + if (disableCcd) + return btScalar(1.); + + + //An adhoc way of testing the Continuous Collision Detection algorithms + //One object is approximated as a sphere, to simplify things + //Starting in penetration should report no time of impact + //For proper CCD, better accuracy and handling of 'allowed' penetration should be added + //also the mainloop of the physics should have a kind of toi queue (something like Brian Mirtich's application of Timewarp for Rigidbodies) + + + /// Convex0 against sphere for Convex1 + { + btConvexShape* convex0 = static_cast(col0->getCollisionShape()); + + btSphereShape sphere1(col1->getCcdSweptSphereRadius()); //todo: allow non-zero sphere sizes, for better approximation + btConvexCast::CastResult result; + btVoronoiSimplexSolver voronoiSimplex; + //SubsimplexConvexCast ccd0(&sphere,min0,&voronoiSimplex); + ///Simplification, one object is simplified as a sphere + btGjkConvexCast ccd1( convex0 ,&sphere1,&voronoiSimplex); + //ContinuousConvexCollision ccd(min0,min1,&voronoiSimplex,0); + if (ccd1.calcTimeOfImpact(col0->getWorldTransform(),col0->getInterpolationWorldTransform(), + col1->getWorldTransform(),col1->getInterpolationWorldTransform(),result)) + { + + //store result.m_fraction in both bodies + + if (col0->getHitFraction()> result.m_fraction) + col0->setHitFraction( result.m_fraction ); + + if (col1->getHitFraction() > result.m_fraction) + col1->setHitFraction( result.m_fraction); + + if (resultFraction > result.m_fraction) + resultFraction = result.m_fraction; + + } + + + + + } + + /// Sphere (for convex0) against Convex1 + { + btConvexShape* convex1 = static_cast(col1->getCollisionShape()); + + btSphereShape sphere0(col0->getCcdSweptSphereRadius()); //todo: allow non-zero sphere sizes, for better approximation + btConvexCast::CastResult result; + btVoronoiSimplexSolver voronoiSimplex; + //SubsimplexConvexCast ccd0(&sphere,min0,&voronoiSimplex); + ///Simplification, one object is simplified as a sphere + btGjkConvexCast ccd1(&sphere0,convex1,&voronoiSimplex); + //ContinuousConvexCollision ccd(min0,min1,&voronoiSimplex,0); + if (ccd1.calcTimeOfImpact(col0->getWorldTransform(),col0->getInterpolationWorldTransform(), + col1->getWorldTransform(),col1->getInterpolationWorldTransform(),result)) + { + + //store result.m_fraction in both bodies + + if (col0->getHitFraction() > result.m_fraction) + col0->setHitFraction( result.m_fraction); + + if (col1->getHitFraction() > result.m_fraction) + col1->setHitFraction( result.m_fraction); + + if (resultFraction > result.m_fraction) + resultFraction = result.m_fraction; + + } + } + + return resultFraction; + +} + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h new file mode 100644 index 00000000000..d38aff6862c --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h @@ -0,0 +1,109 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CONVEX_CONVEX_ALGORITHM_H +#define CONVEX_CONVEX_ALGORITHM_H + +#include "btActivatingCollisionAlgorithm.h" +#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h" +#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h" +#include "btCollisionCreateFunc.h" +#include "btCollisionDispatcher.h" +#include "LinearMath/btTransformUtil.h" //for btConvexSeparatingDistanceUtil + +class btConvexPenetrationDepthSolver; + +///Enabling USE_SEPDISTANCE_UTIL2 requires 100% reliable distance computation. However, when using large size ratios GJK can be imprecise +///so the distance is not conservative. In that case, enabling this USE_SEPDISTANCE_UTIL2 would result in failing/missing collisions. +///Either improve GJK for large size ratios (testing a 100 units versus a 0.1 unit object) or only enable the util +///for certain pairs that have a small size ratio + +//#define USE_SEPDISTANCE_UTIL2 1 + +///The convexConvexAlgorithm collision algorithm implements time of impact, convex closest points and penetration depth calculations between two convex objects. +///Multiple contact points are calculated by perturbing the orientation of the smallest object orthogonal to the separating normal. +///This idea was described by Gino van den Bergen in this forum topic http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=4&t=288&p=888#p888 +class btConvexConvexAlgorithm : public btActivatingCollisionAlgorithm +{ +#ifdef USE_SEPDISTANCE_UTIL2 + btConvexSeparatingDistanceUtil m_sepDistance; +#endif + btSimplexSolverInterface* m_simplexSolver; + btConvexPenetrationDepthSolver* m_pdSolver; + + + bool m_ownManifold; + btPersistentManifold* m_manifoldPtr; + bool m_lowLevelOfDetail; + + int m_numPerturbationIterations; + int m_minimumPointsPerturbationThreshold; + + + ///cache separating vector to speedup collision detection + + +public: + + btConvexConvexAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1, btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver, int numPerturbationIterations, int minimumPointsPerturbationThreshold); + + + virtual ~btConvexConvexAlgorithm(); + + virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual void getAllContactManifolds(btManifoldArray& manifoldArray) + { + ///should we use m_ownManifold to avoid adding duplicates? + if (m_manifoldPtr && m_ownManifold) + manifoldArray.push_back(m_manifoldPtr); + } + + + void setLowLevelOfDetail(bool useLowLevel); + + + const btPersistentManifold* getManifold() + { + return m_manifoldPtr; + } + + struct CreateFunc :public btCollisionAlgorithmCreateFunc + { + + btConvexPenetrationDepthSolver* m_pdSolver; + btSimplexSolverInterface* m_simplexSolver; + int m_numPerturbationIterations; + int m_minimumPointsPerturbationThreshold; + + CreateFunc(btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver); + + virtual ~CreateFunc(); + + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) + { + void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvexConvexAlgorithm)); + return new(mem) btConvexConvexAlgorithm(ci.m_manifold,ci,body0,body1,m_simplexSolver,m_pdSolver,m_numPerturbationIterations,m_minimumPointsPerturbationThreshold); + } + }; + + +}; + +#endif //CONVEX_CONVEX_ALGORITHM_H diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp new file mode 100644 index 00000000000..dda85dc693f --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp @@ -0,0 +1,155 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btConvexPlaneCollisionAlgorithm.h" + +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "BulletCollision/CollisionShapes/btConvexShape.h" +#include "BulletCollision/CollisionShapes/btStaticPlaneShape.h" + +//#include + +btConvexPlaneCollisionAlgorithm::btConvexPlaneCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* col0,btCollisionObject* col1, bool isSwapped, int numPerturbationIterations,int minimumPointsPerturbationThreshold) +: btCollisionAlgorithm(ci), +m_ownManifold(false), +m_manifoldPtr(mf), +m_isSwapped(isSwapped), +m_numPerturbationIterations(numPerturbationIterations), +m_minimumPointsPerturbationThreshold(minimumPointsPerturbationThreshold) +{ + btCollisionObject* convexObj = m_isSwapped? col1 : col0; + btCollisionObject* planeObj = m_isSwapped? col0 : col1; + + if (!m_manifoldPtr && m_dispatcher->needsCollision(convexObj,planeObj)) + { + m_manifoldPtr = m_dispatcher->getNewManifold(convexObj,planeObj); + m_ownManifold = true; + } +} + + +btConvexPlaneCollisionAlgorithm::~btConvexPlaneCollisionAlgorithm() +{ + if (m_ownManifold) + { + if (m_manifoldPtr) + m_dispatcher->releaseManifold(m_manifoldPtr); + } +} + +void btConvexPlaneCollisionAlgorithm::collideSingleContact (const btQuaternion& perturbeRot, btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + btCollisionObject* convexObj = m_isSwapped? body1 : body0; + btCollisionObject* planeObj = m_isSwapped? body0: body1; + + btConvexShape* convexShape = (btConvexShape*) convexObj->getCollisionShape(); + btStaticPlaneShape* planeShape = (btStaticPlaneShape*) planeObj->getCollisionShape(); + + bool hasCollision = false; + const btVector3& planeNormal = planeShape->getPlaneNormal(); + const btScalar& planeConstant = planeShape->getPlaneConstant(); + + btTransform convexWorldTransform = convexObj->getWorldTransform(); + btTransform convexInPlaneTrans; + convexInPlaneTrans= planeObj->getWorldTransform().inverse() * convexWorldTransform; + //now perturbe the convex-world transform + convexWorldTransform.getBasis()*=btMatrix3x3(perturbeRot); + btTransform planeInConvex; + planeInConvex= convexWorldTransform.inverse() * planeObj->getWorldTransform(); + + btVector3 vtx = convexShape->localGetSupportingVertex(planeInConvex.getBasis()*-planeNormal); + + btVector3 vtxInPlane = convexInPlaneTrans(vtx); + btScalar distance = (planeNormal.dot(vtxInPlane) - planeConstant); + + btVector3 vtxInPlaneProjected = vtxInPlane - distance*planeNormal; + btVector3 vtxInPlaneWorld = planeObj->getWorldTransform() * vtxInPlaneProjected; + + hasCollision = distance < m_manifoldPtr->getContactBreakingThreshold(); + resultOut->setPersistentManifold(m_manifoldPtr); + if (hasCollision) + { + /// report a contact. internally this will be kept persistent, and contact reduction is done + btVector3 normalOnSurfaceB = planeObj->getWorldTransform().getBasis() * planeNormal; + btVector3 pOnB = vtxInPlaneWorld; + resultOut->addContactPoint(normalOnSurfaceB,pOnB,distance); + } +} + + +void btConvexPlaneCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + (void)dispatchInfo; + if (!m_manifoldPtr) + return; + + btCollisionObject* convexObj = m_isSwapped? body1 : body0; + btCollisionObject* planeObj = m_isSwapped? body0: body1; + + btConvexShape* convexShape = (btConvexShape*) convexObj->getCollisionShape(); + btStaticPlaneShape* planeShape = (btStaticPlaneShape*) planeObj->getCollisionShape(); + + + const btVector3& planeNormal = planeShape->getPlaneNormal(); + //const btScalar& planeConstant = planeShape->getPlaneConstant(); + + //first perform a collision query with the non-perturbated collision objects + { + btQuaternion rotq(0,0,0,1); + collideSingleContact(rotq,body0,body1,dispatchInfo,resultOut); + } + + if (resultOut->getPersistentManifold()->getNumContacts()getAngularMotionDisc(); + perturbeAngle = gContactBreakingThreshold / radius; + if ( perturbeAngle > angleLimit ) + perturbeAngle = angleLimit; + + btQuaternion perturbeRot(v0,perturbeAngle); + for (int i=0;igetNumContacts()) + { + resultOut->refreshContactPoints(); + } + } +} + +btScalar btConvexPlaneCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + (void)resultOut; + (void)dispatchInfo; + (void)col0; + (void)col1; + + //not yet + return btScalar(1.); +} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h new file mode 100644 index 00000000000..f49ac45e772 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h @@ -0,0 +1,84 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CONVEX_PLANE_COLLISION_ALGORITHM_H +#define CONVEX_PLANE_COLLISION_ALGORITHM_H + +#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" +class btPersistentManifold; +#include "btCollisionDispatcher.h" + +#include "LinearMath/btVector3.h" + +/// btSphereBoxCollisionAlgorithm provides sphere-box collision detection. +/// Other features are frame-coherency (persistent data) and collision response. +class btConvexPlaneCollisionAlgorithm : public btCollisionAlgorithm +{ + bool m_ownManifold; + btPersistentManifold* m_manifoldPtr; + bool m_isSwapped; + int m_numPerturbationIterations; + int m_minimumPointsPerturbationThreshold; + +public: + + btConvexPlaneCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* col0,btCollisionObject* col1, bool isSwapped, int numPerturbationIterations,int minimumPointsPerturbationThreshold); + + virtual ~btConvexPlaneCollisionAlgorithm(); + + virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + void collideSingleContact (const btQuaternion& perturbeRot, btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual void getAllContactManifolds(btManifoldArray& manifoldArray) + { + if (m_manifoldPtr && m_ownManifold) + { + manifoldArray.push_back(m_manifoldPtr); + } + } + + struct CreateFunc :public btCollisionAlgorithmCreateFunc + { + int m_numPerturbationIterations; + int m_minimumPointsPerturbationThreshold; + + CreateFunc() + : m_numPerturbationIterations(1), + m_minimumPointsPerturbationThreshold(1) + { + } + + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) + { + void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvexPlaneCollisionAlgorithm)); + if (!m_swapped) + { + return new(mem) btConvexPlaneCollisionAlgorithm(0,ci,body0,body1,false,m_numPerturbationIterations,m_minimumPointsPerturbationThreshold); + } else + { + return new(mem) btConvexPlaneCollisionAlgorithm(0,ci,body0,body1,true,m_numPerturbationIterations,m_minimumPointsPerturbationThreshold); + } + } + }; + +}; + +#endif //CONVEX_PLANE_COLLISION_ALGORITHM_H + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp new file mode 100644 index 00000000000..c27d8ce0752 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp @@ -0,0 +1,298 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btDefaultCollisionConfiguration.h" + +#include "BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h" +#ifdef USE_BUGGY_SPHERE_BOX_ALGORITHM +#include "BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h" +#endif //USE_BUGGY_SPHERE_BOX_ALGORITHM +#include "BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h" +#include "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h" +#include "BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h" +#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h" + + + +#include "LinearMath/btStackAlloc.h" +#include "LinearMath/btPoolAllocator.h" + + + + + +btDefaultCollisionConfiguration::btDefaultCollisionConfiguration(const btDefaultCollisionConstructionInfo& constructionInfo) +//btDefaultCollisionConfiguration::btDefaultCollisionConfiguration(btStackAlloc* stackAlloc,btPoolAllocator* persistentManifoldPool,btPoolAllocator* collisionAlgorithmPool) +{ + + void* mem = btAlignedAlloc(sizeof(btVoronoiSimplexSolver),16); + m_simplexSolver = new (mem)btVoronoiSimplexSolver(); + + if (constructionInfo.m_useEpaPenetrationAlgorithm) + { + mem = btAlignedAlloc(sizeof(btGjkEpaPenetrationDepthSolver),16); + m_pdSolver = new (mem)btGjkEpaPenetrationDepthSolver; + }else + { + mem = btAlignedAlloc(sizeof(btMinkowskiPenetrationDepthSolver),16); + m_pdSolver = new (mem)btMinkowskiPenetrationDepthSolver; + } + + //default CreationFunctions, filling the m_doubleDispatch table + mem = btAlignedAlloc(sizeof(btConvexConvexAlgorithm::CreateFunc),16); + m_convexConvexCreateFunc = new(mem) btConvexConvexAlgorithm::CreateFunc(m_simplexSolver,m_pdSolver); + mem = btAlignedAlloc(sizeof(btConvexConcaveCollisionAlgorithm::CreateFunc),16); + m_convexConcaveCreateFunc = new (mem)btConvexConcaveCollisionAlgorithm::CreateFunc; + mem = btAlignedAlloc(sizeof(btConvexConcaveCollisionAlgorithm::CreateFunc),16); + m_swappedConvexConcaveCreateFunc = new (mem)btConvexConcaveCollisionAlgorithm::SwappedCreateFunc; + mem = btAlignedAlloc(sizeof(btCompoundCollisionAlgorithm::CreateFunc),16); + m_compoundCreateFunc = new (mem)btCompoundCollisionAlgorithm::CreateFunc; + mem = btAlignedAlloc(sizeof(btCompoundCollisionAlgorithm::SwappedCreateFunc),16); + m_swappedCompoundCreateFunc = new (mem)btCompoundCollisionAlgorithm::SwappedCreateFunc; + mem = btAlignedAlloc(sizeof(btEmptyAlgorithm::CreateFunc),16); + m_emptyCreateFunc = new(mem) btEmptyAlgorithm::CreateFunc; + + mem = btAlignedAlloc(sizeof(btSphereSphereCollisionAlgorithm::CreateFunc),16); + m_sphereSphereCF = new(mem) btSphereSphereCollisionAlgorithm::CreateFunc; +#ifdef USE_BUGGY_SPHERE_BOX_ALGORITHM + mem = btAlignedAlloc(sizeof(btSphereBoxCollisionAlgorithm::CreateFunc),16); + m_sphereBoxCF = new(mem) btSphereBoxCollisionAlgorithm::CreateFunc; + mem = btAlignedAlloc(sizeof(btSphereBoxCollisionAlgorithm::CreateFunc),16); + m_boxSphereCF = new (mem)btSphereBoxCollisionAlgorithm::CreateFunc; + m_boxSphereCF->m_swapped = true; +#endif //USE_BUGGY_SPHERE_BOX_ALGORITHM + + mem = btAlignedAlloc(sizeof(btSphereTriangleCollisionAlgorithm::CreateFunc),16); + m_sphereTriangleCF = new (mem)btSphereTriangleCollisionAlgorithm::CreateFunc; + mem = btAlignedAlloc(sizeof(btSphereTriangleCollisionAlgorithm::CreateFunc),16); + m_triangleSphereCF = new (mem)btSphereTriangleCollisionAlgorithm::CreateFunc; + m_triangleSphereCF->m_swapped = true; + + mem = btAlignedAlloc(sizeof(btBoxBoxCollisionAlgorithm::CreateFunc),16); + m_boxBoxCF = new(mem)btBoxBoxCollisionAlgorithm::CreateFunc; + + //convex versus plane + mem = btAlignedAlloc (sizeof(btConvexPlaneCollisionAlgorithm::CreateFunc),16); + m_convexPlaneCF = new (mem) btConvexPlaneCollisionAlgorithm::CreateFunc; + mem = btAlignedAlloc (sizeof(btConvexPlaneCollisionAlgorithm::CreateFunc),16); + m_planeConvexCF = new (mem) btConvexPlaneCollisionAlgorithm::CreateFunc; + m_planeConvexCF->m_swapped = true; + + ///calculate maximum element size, big enough to fit any collision algorithm in the memory pool + int maxSize = sizeof(btConvexConvexAlgorithm); + int maxSize2 = sizeof(btConvexConcaveCollisionAlgorithm); + int maxSize3 = sizeof(btCompoundCollisionAlgorithm); + int sl = sizeof(btConvexSeparatingDistanceUtil); + sl = sizeof(btGjkPairDetector); + int collisionAlgorithmMaxElementSize = btMax(maxSize,constructionInfo.m_customCollisionAlgorithmMaxElementSize); + collisionAlgorithmMaxElementSize = btMax(collisionAlgorithmMaxElementSize,maxSize2); + collisionAlgorithmMaxElementSize = btMax(collisionAlgorithmMaxElementSize,maxSize3); + + if (constructionInfo.m_stackAlloc) + { + m_ownsStackAllocator = false; + this->m_stackAlloc = constructionInfo.m_stackAlloc; + } else + { + m_ownsStackAllocator = true; + void* mem = btAlignedAlloc(sizeof(btStackAlloc),16); + m_stackAlloc = new(mem)btStackAlloc(constructionInfo.m_defaultStackAllocatorSize); + } + + if (constructionInfo.m_persistentManifoldPool) + { + m_ownsPersistentManifoldPool = false; + m_persistentManifoldPool = constructionInfo.m_persistentManifoldPool; + } else + { + m_ownsPersistentManifoldPool = true; + void* mem = btAlignedAlloc(sizeof(btPoolAllocator),16); + m_persistentManifoldPool = new (mem) btPoolAllocator(sizeof(btPersistentManifold),constructionInfo.m_defaultMaxPersistentManifoldPoolSize); + } + + if (constructionInfo.m_collisionAlgorithmPool) + { + m_ownsCollisionAlgorithmPool = false; + m_collisionAlgorithmPool = constructionInfo.m_collisionAlgorithmPool; + } else + { + m_ownsCollisionAlgorithmPool = true; + void* mem = btAlignedAlloc(sizeof(btPoolAllocator),16); + m_collisionAlgorithmPool = new(mem) btPoolAllocator(collisionAlgorithmMaxElementSize,constructionInfo.m_defaultMaxCollisionAlgorithmPoolSize); + } + + +} + +btDefaultCollisionConfiguration::~btDefaultCollisionConfiguration() +{ + if (m_ownsStackAllocator) + { + m_stackAlloc->destroy(); + m_stackAlloc->~btStackAlloc(); + btAlignedFree(m_stackAlloc); + } + if (m_ownsCollisionAlgorithmPool) + { + m_collisionAlgorithmPool->~btPoolAllocator(); + btAlignedFree(m_collisionAlgorithmPool); + } + if (m_ownsPersistentManifoldPool) + { + m_persistentManifoldPool->~btPoolAllocator(); + btAlignedFree(m_persistentManifoldPool); + } + + m_convexConvexCreateFunc->~btCollisionAlgorithmCreateFunc(); + btAlignedFree( m_convexConvexCreateFunc); + + m_convexConcaveCreateFunc->~btCollisionAlgorithmCreateFunc(); + btAlignedFree( m_convexConcaveCreateFunc); + m_swappedConvexConcaveCreateFunc->~btCollisionAlgorithmCreateFunc(); + btAlignedFree( m_swappedConvexConcaveCreateFunc); + + m_compoundCreateFunc->~btCollisionAlgorithmCreateFunc(); + btAlignedFree( m_compoundCreateFunc); + + m_swappedCompoundCreateFunc->~btCollisionAlgorithmCreateFunc(); + btAlignedFree( m_swappedCompoundCreateFunc); + + m_emptyCreateFunc->~btCollisionAlgorithmCreateFunc(); + btAlignedFree( m_emptyCreateFunc); + + m_sphereSphereCF->~btCollisionAlgorithmCreateFunc(); + btAlignedFree( m_sphereSphereCF); + +#ifdef USE_BUGGY_SPHERE_BOX_ALGORITHM + m_sphereBoxCF->~btCollisionAlgorithmCreateFunc(); + btAlignedFree( m_sphereBoxCF); + m_boxSphereCF->~btCollisionAlgorithmCreateFunc(); + btAlignedFree( m_boxSphereCF); +#endif //USE_BUGGY_SPHERE_BOX_ALGORITHM + + m_sphereTriangleCF->~btCollisionAlgorithmCreateFunc(); + btAlignedFree( m_sphereTriangleCF); + m_triangleSphereCF->~btCollisionAlgorithmCreateFunc(); + btAlignedFree( m_triangleSphereCF); + m_boxBoxCF->~btCollisionAlgorithmCreateFunc(); + btAlignedFree( m_boxBoxCF); + + m_convexPlaneCF->~btCollisionAlgorithmCreateFunc(); + btAlignedFree( m_convexPlaneCF); + m_planeConvexCF->~btCollisionAlgorithmCreateFunc(); + btAlignedFree( m_planeConvexCF); + + m_simplexSolver->~btVoronoiSimplexSolver(); + btAlignedFree(m_simplexSolver); + + m_pdSolver->~btConvexPenetrationDepthSolver(); + + btAlignedFree(m_pdSolver); + + +} + + +btCollisionAlgorithmCreateFunc* btDefaultCollisionConfiguration::getCollisionAlgorithmCreateFunc(int proxyType0,int proxyType1) +{ + + + + if ((proxyType0 == SPHERE_SHAPE_PROXYTYPE) && (proxyType1==SPHERE_SHAPE_PROXYTYPE)) + { + return m_sphereSphereCF; + } +#ifdef USE_BUGGY_SPHERE_BOX_ALGORITHM + if ((proxyType0 == SPHERE_SHAPE_PROXYTYPE) && (proxyType1==BOX_SHAPE_PROXYTYPE)) + { + return m_sphereBoxCF; + } + + if ((proxyType0 == BOX_SHAPE_PROXYTYPE ) && (proxyType1==SPHERE_SHAPE_PROXYTYPE)) + { + return m_boxSphereCF; + } +#endif //USE_BUGGY_SPHERE_BOX_ALGORITHM + + + if ((proxyType0 == SPHERE_SHAPE_PROXYTYPE ) && (proxyType1==TRIANGLE_SHAPE_PROXYTYPE)) + { + return m_sphereTriangleCF; + } + + if ((proxyType0 == TRIANGLE_SHAPE_PROXYTYPE ) && (proxyType1==SPHERE_SHAPE_PROXYTYPE)) + { + return m_triangleSphereCF; + } + + if ((proxyType0 == BOX_SHAPE_PROXYTYPE) && (proxyType1 == BOX_SHAPE_PROXYTYPE)) + { + return m_boxBoxCF; + } + + if (btBroadphaseProxy::isConvex(proxyType0) && (proxyType1 == STATIC_PLANE_PROXYTYPE)) + { + return m_convexPlaneCF; + } + + if (btBroadphaseProxy::isConvex(proxyType1) && (proxyType0 == STATIC_PLANE_PROXYTYPE)) + { + return m_planeConvexCF; + } + + + + if (btBroadphaseProxy::isConvex(proxyType0) && btBroadphaseProxy::isConvex(proxyType1)) + { + return m_convexConvexCreateFunc; + } + + if (btBroadphaseProxy::isConvex(proxyType0) && btBroadphaseProxy::isConcave(proxyType1)) + { + return m_convexConcaveCreateFunc; + } + + if (btBroadphaseProxy::isConvex(proxyType1) && btBroadphaseProxy::isConcave(proxyType0)) + { + return m_swappedConvexConcaveCreateFunc; + } + + if (btBroadphaseProxy::isCompound(proxyType0)) + { + return m_compoundCreateFunc; + } else + { + if (btBroadphaseProxy::isCompound(proxyType1)) + { + return m_swappedCompoundCreateFunc; + } + } + + //failed to find an algorithm + return m_emptyCreateFunc; +} + +void btDefaultCollisionConfiguration::setConvexConvexMultipointIterations(int numPerturbationIterations, int minimumPointsPerturbationThreshold) +{ + btConvexConvexAlgorithm::CreateFunc* convexConvex = (btConvexConvexAlgorithm::CreateFunc*) m_convexConvexCreateFunc; + convexConvex->m_numPerturbationIterations = numPerturbationIterations; + convexConvex->m_minimumPointsPerturbationThreshold = minimumPointsPerturbationThreshold; +} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h b/extern/bullet2/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h new file mode 100644 index 00000000000..6aa0d8c270f --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h @@ -0,0 +1,135 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_DEFAULT_COLLISION_CONFIGURATION +#define BT_DEFAULT_COLLISION_CONFIGURATION + +#include "btCollisionConfiguration.h" +class btVoronoiSimplexSolver; +class btConvexPenetrationDepthSolver; + +struct btDefaultCollisionConstructionInfo +{ + btStackAlloc* m_stackAlloc; + btPoolAllocator* m_persistentManifoldPool; + btPoolAllocator* m_collisionAlgorithmPool; + int m_defaultMaxPersistentManifoldPoolSize; + int m_defaultMaxCollisionAlgorithmPoolSize; + int m_customCollisionAlgorithmMaxElementSize; + int m_defaultStackAllocatorSize; + int m_useEpaPenetrationAlgorithm; + + btDefaultCollisionConstructionInfo() + :m_stackAlloc(0), + m_persistentManifoldPool(0), + m_collisionAlgorithmPool(0), + m_defaultMaxPersistentManifoldPoolSize(4096), + m_defaultMaxCollisionAlgorithmPoolSize(4096), + m_customCollisionAlgorithmMaxElementSize(0), + m_defaultStackAllocatorSize(0), + m_useEpaPenetrationAlgorithm(true) + { + } +}; + + + +///btCollisionConfiguration allows to configure Bullet collision detection +///stack allocator, pool memory allocators +///@todo: describe the meaning +class btDefaultCollisionConfiguration : public btCollisionConfiguration +{ + +protected: + + int m_persistentManifoldPoolSize; + + btStackAlloc* m_stackAlloc; + bool m_ownsStackAllocator; + + btPoolAllocator* m_persistentManifoldPool; + bool m_ownsPersistentManifoldPool; + + + btPoolAllocator* m_collisionAlgorithmPool; + bool m_ownsCollisionAlgorithmPool; + + //default simplex/penetration depth solvers + btVoronoiSimplexSolver* m_simplexSolver; + btConvexPenetrationDepthSolver* m_pdSolver; + + //default CreationFunctions, filling the m_doubleDispatch table + btCollisionAlgorithmCreateFunc* m_convexConvexCreateFunc; + btCollisionAlgorithmCreateFunc* m_convexConcaveCreateFunc; + btCollisionAlgorithmCreateFunc* m_swappedConvexConcaveCreateFunc; + btCollisionAlgorithmCreateFunc* m_compoundCreateFunc; + btCollisionAlgorithmCreateFunc* m_swappedCompoundCreateFunc; + btCollisionAlgorithmCreateFunc* m_emptyCreateFunc; + btCollisionAlgorithmCreateFunc* m_sphereSphereCF; +#ifdef USE_BUGGY_SPHERE_BOX_ALGORITHM + btCollisionAlgorithmCreateFunc* m_sphereBoxCF; + btCollisionAlgorithmCreateFunc* m_boxSphereCF; +#endif //USE_BUGGY_SPHERE_BOX_ALGORITHM + + btCollisionAlgorithmCreateFunc* m_boxBoxCF; + btCollisionAlgorithmCreateFunc* m_sphereTriangleCF; + btCollisionAlgorithmCreateFunc* m_triangleSphereCF; + btCollisionAlgorithmCreateFunc* m_planeConvexCF; + btCollisionAlgorithmCreateFunc* m_convexPlaneCF; + +public: + + + btDefaultCollisionConfiguration(const btDefaultCollisionConstructionInfo& constructionInfo = btDefaultCollisionConstructionInfo()); + + virtual ~btDefaultCollisionConfiguration(); + + ///memory pools + virtual btPoolAllocator* getPersistentManifoldPool() + { + return m_persistentManifoldPool; + } + + virtual btPoolAllocator* getCollisionAlgorithmPool() + { + return m_collisionAlgorithmPool; + } + + virtual btStackAlloc* getStackAllocator() + { + return m_stackAlloc; + } + + virtual btVoronoiSimplexSolver* getSimplexSolver() + { + return m_simplexSolver; + } + + + virtual btCollisionAlgorithmCreateFunc* getCollisionAlgorithmCreateFunc(int proxyType0,int proxyType1); + + ///Use this method to allow to generate multiple contact points between at once, between two objects using the generic convex-convex algorithm. + ///By default, this feature is disabled for best performance. + ///@param numPerturbationIterations controls the number of collision queries. Set it to zero to disable the feature. + ///@param minimumPointsPerturbationThreshold is the minimum number of points in the contact cache, above which the feature is disabled + ///3 is a good value for both params, if you want to enable the feature. This is because the default contact cache contains a maximum of 4 points, and one collision query at the unperturbed orientation is performed first. + ///See Bullet/Demos/CollisionDemo for an example how this feature gathers multiple points. + ///@todo we could add a per-object setting of those parameters, for level-of-detail collision detection. + void setConvexConvexMultipointIterations(int numPerturbationIterations=3, int minimumPointsPerturbationThreshold = 3); + +}; + +#endif //BT_DEFAULT_COLLISION_CONFIGURATION + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp new file mode 100644 index 00000000000..936054387c4 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp @@ -0,0 +1,34 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btEmptyCollisionAlgorithm.h" + + + +btEmptyAlgorithm::btEmptyAlgorithm(const btCollisionAlgorithmConstructionInfo& ci) + : btCollisionAlgorithm(ci) +{ +} + +void btEmptyAlgorithm::processCollision (btCollisionObject* ,btCollisionObject* ,const btDispatcherInfo& ,btManifoldResult* ) +{ +} + +btScalar btEmptyAlgorithm::calculateTimeOfImpact(btCollisionObject* ,btCollisionObject* ,const btDispatcherInfo& ,btManifoldResult* ) +{ + return btScalar(1.); +} + + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h new file mode 100644 index 00000000000..e54721dec21 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h @@ -0,0 +1,54 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef EMPTY_ALGORITH +#define EMPTY_ALGORITH +#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" +#include "btCollisionCreateFunc.h" +#include "btCollisionDispatcher.h" + +#define ATTRIBUTE_ALIGNED(a) + +///EmptyAlgorithm is a stub for unsupported collision pairs. +///The dispatcher can dispatch a persistent btEmptyAlgorithm to avoid a search every frame. +class btEmptyAlgorithm : public btCollisionAlgorithm +{ + +public: + + btEmptyAlgorithm(const btCollisionAlgorithmConstructionInfo& ci); + + virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual void getAllContactManifolds(btManifoldArray& manifoldArray) + { + } + + struct CreateFunc :public btCollisionAlgorithmCreateFunc + { + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) + { + (void)body0; + (void)body1; + void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btEmptyAlgorithm)); + return new(mem) btEmptyAlgorithm(ci); + } + }; + +} ATTRIBUTE_ALIGNED(16); + +#endif //EMPTY_ALGORITH diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btGhostObject.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btGhostObject.cpp new file mode 100644 index 00000000000..86141fa6899 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btGhostObject.cpp @@ -0,0 +1,171 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2008 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btGhostObject.h" +#include "btCollisionWorld.h" +#include "BulletCollision/CollisionShapes/btConvexShape.h" +#include "LinearMath/btAabbUtil2.h" + +btGhostObject::btGhostObject() +{ + m_internalType = CO_GHOST_OBJECT; +} + +btGhostObject::~btGhostObject() +{ + ///btGhostObject should have been removed from the world, so no overlapping objects + btAssert(!m_overlappingObjects.size()); +} + + +void btGhostObject::addOverlappingObjectInternal(btBroadphaseProxy* otherProxy,btBroadphaseProxy* thisProxy) +{ + btCollisionObject* otherObject = (btCollisionObject*)otherProxy->m_clientObject; + btAssert(otherObject); + ///if this linearSearch becomes too slow (too many overlapping objects) we should add a more appropriate data structure + int index = m_overlappingObjects.findLinearSearch(otherObject); + if (index==m_overlappingObjects.size()) + { + //not found + m_overlappingObjects.push_back(otherObject); + } +} + +void btGhostObject::removeOverlappingObjectInternal(btBroadphaseProxy* otherProxy,btDispatcher* dispatcher,btBroadphaseProxy* thisProxy) +{ + btCollisionObject* otherObject = (btCollisionObject*)otherProxy->m_clientObject; + btAssert(otherObject); + int index = m_overlappingObjects.findLinearSearch(otherObject); + if (index~btHashedOverlappingPairCache(); + btAlignedFree( m_hashPairCache ); +} + +void btPairCachingGhostObject::addOverlappingObjectInternal(btBroadphaseProxy* otherProxy,btBroadphaseProxy* thisProxy) +{ + btBroadphaseProxy*actualThisProxy = thisProxy ? thisProxy : getBroadphaseHandle(); + btAssert(actualThisProxy); + + btCollisionObject* otherObject = (btCollisionObject*)otherProxy->m_clientObject; + btAssert(otherObject); + int index = m_overlappingObjects.findLinearSearch(otherObject); + if (index==m_overlappingObjects.size()) + { + m_overlappingObjects.push_back(otherObject); + m_hashPairCache->addOverlappingPair(actualThisProxy,otherProxy); + } +} + +void btPairCachingGhostObject::removeOverlappingObjectInternal(btBroadphaseProxy* otherProxy,btDispatcher* dispatcher,btBroadphaseProxy* thisProxy1) +{ + btCollisionObject* otherObject = (btCollisionObject*)otherProxy->m_clientObject; + btBroadphaseProxy* actualThisProxy = thisProxy1 ? thisProxy1 : getBroadphaseHandle(); + btAssert(actualThisProxy); + + btAssert(otherObject); + int index = m_overlappingObjects.findLinearSearch(otherObject); + if (indexremoveOverlappingPair(actualThisProxy,otherProxy,dispatcher); + } +} + + +void btGhostObject::convexSweepTest(const btConvexShape* castShape, const btTransform& convexFromWorld, const btTransform& convexToWorld, btCollisionWorld::ConvexResultCallback& resultCallback, btScalar allowedCcdPenetration) const +{ + btTransform convexFromTrans,convexToTrans; + convexFromTrans = convexFromWorld; + convexToTrans = convexToWorld; + btVector3 castShapeAabbMin, castShapeAabbMax; + /* Compute AABB that encompasses angular movement */ + { + btVector3 linVel, angVel; + btTransformUtil::calculateVelocity (convexFromTrans, convexToTrans, 1.0, linVel, angVel); + btTransform R; + R.setIdentity (); + R.setRotation (convexFromTrans.getRotation()); + castShape->calculateTemporalAabb (R, linVel, angVel, 1.0, castShapeAabbMin, castShapeAabbMax); + } + + /// go over all objects, and if the ray intersects their aabb + cast shape aabb, + // do a ray-shape query using convexCaster (CCD) + int i; + for (i=0;igetBroadphaseHandle())) { + //RigidcollisionObject* collisionObject = ctrl->GetRigidcollisionObject(); + btVector3 collisionObjectAabbMin,collisionObjectAabbMax; + collisionObject->getCollisionShape()->getAabb(collisionObject->getWorldTransform(),collisionObjectAabbMin,collisionObjectAabbMax); + AabbExpand (collisionObjectAabbMin, collisionObjectAabbMax, castShapeAabbMin, castShapeAabbMax); + btScalar hitLambda = btScalar(1.); //could use resultCallback.m_closestHitFraction, but needs testing + btVector3 hitNormal; + if (btRayAabb(convexFromWorld.getOrigin(),convexToWorld.getOrigin(),collisionObjectAabbMin,collisionObjectAabbMax,hitLambda,hitNormal)) + { + btCollisionWorld::objectQuerySingle(castShape, convexFromTrans,convexToTrans, + collisionObject, + collisionObject->getCollisionShape(), + collisionObject->getWorldTransform(), + resultCallback, + allowedCcdPenetration); + } + } + } + +} + +void btGhostObject::rayTest(const btVector3& rayFromWorld, const btVector3& rayToWorld, btCollisionWorld::RayResultCallback& resultCallback) const +{ + btTransform rayFromTrans; + rayFromTrans.setIdentity(); + rayFromTrans.setOrigin(rayFromWorld); + btTransform rayToTrans; + rayToTrans.setIdentity(); + rayToTrans.setOrigin(rayToWorld); + + + int i; + for (i=0;igetBroadphaseHandle())) + { + btCollisionWorld::rayTestSingle(rayFromTrans,rayToTrans, + collisionObject, + collisionObject->getCollisionShape(), + collisionObject->getWorldTransform(), + resultCallback); + } + } +} + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btGhostObject.h b/extern/bullet2/BulletCollision/CollisionDispatch/btGhostObject.h new file mode 100644 index 00000000000..61910d9b30d --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btGhostObject.h @@ -0,0 +1,175 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2008 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_GHOST_OBJECT_H +#define BT_GHOST_OBJECT_H + + +#include "btCollisionObject.h" +#include "BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h" +#include "LinearMath/btAlignedAllocator.h" +#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h" +#include "btCollisionWorld.h" + +class btConvexShape; + +class btDispatcher; + +///The btGhostObject can keep track of all objects that are overlapping +///By default, this overlap is based on the AABB +///This is useful for creating a character controller, collision sensors/triggers, explosions etc. +///We plan on adding rayTest and other queries for the btGhostObject +ATTRIBUTE_ALIGNED16(class) btGhostObject : public btCollisionObject +{ +protected: + + btAlignedObjectArray m_overlappingObjects; + +public: + + btGhostObject(); + + virtual ~btGhostObject(); + + void convexSweepTest(const class btConvexShape* castShape, const btTransform& convexFromWorld, const btTransform& convexToWorld, btCollisionWorld::ConvexResultCallback& resultCallback, btScalar allowedCcdPenetration = 0.f) const; + + void rayTest(const btVector3& rayFromWorld, const btVector3& rayToWorld, btCollisionWorld::RayResultCallback& resultCallback) const; + + ///this method is mainly for expert/internal use only. + virtual void addOverlappingObjectInternal(btBroadphaseProxy* otherProxy, btBroadphaseProxy* thisProxy=0); + ///this method is mainly for expert/internal use only. + virtual void removeOverlappingObjectInternal(btBroadphaseProxy* otherProxy,btDispatcher* dispatcher,btBroadphaseProxy* thisProxy=0); + + int getNumOverlappingObjects() const + { + return m_overlappingObjects.size(); + } + + btCollisionObject* getOverlappingObject(int index) + { + return m_overlappingObjects[index]; + } + + const btCollisionObject* getOverlappingObject(int index) const + { + return m_overlappingObjects[index]; + } + + btAlignedObjectArray& getOverlappingPairs() + { + return m_overlappingObjects; + } + + const btAlignedObjectArray getOverlappingPairs() const + { + return m_overlappingObjects; + } + + // + // internal cast + // + + static const btGhostObject* upcast(const btCollisionObject* colObj) + { + if (colObj->getInternalType()==CO_GHOST_OBJECT) + return (const btGhostObject*)colObj; + return 0; + } + static btGhostObject* upcast(btCollisionObject* colObj) + { + if (colObj->getInternalType()==CO_GHOST_OBJECT) + return (btGhostObject*)colObj; + return 0; + } + +}; + +class btPairCachingGhostObject : public btGhostObject +{ + btHashedOverlappingPairCache* m_hashPairCache; + +public: + + btPairCachingGhostObject(); + + virtual ~btPairCachingGhostObject(); + + ///this method is mainly for expert/internal use only. + virtual void addOverlappingObjectInternal(btBroadphaseProxy* otherProxy, btBroadphaseProxy* thisProxy=0); + + virtual void removeOverlappingObjectInternal(btBroadphaseProxy* otherProxy,btDispatcher* dispatcher,btBroadphaseProxy* thisProxy=0); + + btHashedOverlappingPairCache* getOverlappingPairCache() + { + return m_hashPairCache; + } + +}; + + + +///The btGhostPairCallback interfaces and forwards adding and removal of overlapping pairs from the btBroadphaseInterface to btGhostObject. +class btGhostPairCallback : public btOverlappingPairCallback +{ + +public: + btGhostPairCallback() + { + } + + virtual ~btGhostPairCallback() + { + + } + + virtual btBroadphasePair* addOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) + { + btCollisionObject* colObj0 = (btCollisionObject*) proxy0->m_clientObject; + btCollisionObject* colObj1 = (btCollisionObject*) proxy1->m_clientObject; + btGhostObject* ghost0 = btGhostObject::upcast(colObj0); + btGhostObject* ghost1 = btGhostObject::upcast(colObj1); + if (ghost0) + ghost0->addOverlappingObjectInternal(proxy1, proxy0); + if (ghost1) + ghost1->addOverlappingObjectInternal(proxy0, proxy1); + return 0; + } + + virtual void* removeOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1,btDispatcher* dispatcher) + { + btCollisionObject* colObj0 = (btCollisionObject*) proxy0->m_clientObject; + btCollisionObject* colObj1 = (btCollisionObject*) proxy1->m_clientObject; + btGhostObject* ghost0 = btGhostObject::upcast(colObj0); + btGhostObject* ghost1 = btGhostObject::upcast(colObj1); + if (ghost0) + ghost0->removeOverlappingObjectInternal(proxy1,dispatcher,proxy0); + if (ghost1) + ghost1->removeOverlappingObjectInternal(proxy0,dispatcher,proxy1); + return 0; + } + + virtual void removeOverlappingPairsContainingProxy(btBroadphaseProxy* proxy0,btDispatcher* dispatcher) + { + btAssert(0); + //need to keep track of all ghost objects and call them here + //m_hashPairCache->removeOverlappingPairsContainingProxy(proxy0,dispatcher); + } + + + +}; + +#endif + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp new file mode 100644 index 00000000000..5cceb04dbb4 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp @@ -0,0 +1,772 @@ +#include "btInternalEdgeUtility.h" + +#include "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h" +#include "BulletCollision/CollisionShapes/btTriangleShape.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "BulletCollision/NarrowPhaseCollision/btManifoldPoint.h" +#include "LinearMath/btIDebugDraw.h" + + +//#define DEBUG_INTERNAL_EDGE + + +#ifdef DEBUG_INTERNAL_EDGE +#include +#endif //DEBUG_INTERNAL_EDGE + + +#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW +static btIDebugDraw* gDebugDrawer = 0; + +void btSetDebugDrawer(btIDebugDraw* debugDrawer) +{ + gDebugDrawer = debugDrawer; +} + +static void btDebugDrawLine(const btVector3& from,const btVector3& to, const btVector3& color) +{ + if (gDebugDrawer) + gDebugDrawer->drawLine(from,to,color); +} +#endif //BT_INTERNAL_EDGE_DEBUG_DRAW + + +static int btGetHash(int partId, int triangleIndex) +{ + int hash = (partId<<(31-MAX_NUM_PARTS_IN_BITS)) | triangleIndex; + return hash; +} + + + +static btScalar btGetAngle(const btVector3& edgeA, const btVector3& normalA,const btVector3& normalB) +{ + const btVector3 refAxis0 = edgeA; + const btVector3 refAxis1 = normalA; + const btVector3 swingAxis = normalB; + btScalar angle = btAtan2(swingAxis.dot(refAxis0), swingAxis.dot(refAxis1)); + return angle; +} + + +struct btConnectivityProcessor : public btTriangleCallback +{ + int m_partIdA; + int m_triangleIndexA; + btVector3* m_triangleVerticesA; + btTriangleInfoMap* m_triangleInfoMap; + + + virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex) + { + //skip self-collisions + if ((m_partIdA == partId) && (m_triangleIndexA == triangleIndex)) + return; + + //skip duplicates (disabled for now) + //if ((m_partIdA <= partId) && (m_triangleIndexA <= triangleIndex)) + // return; + + //search for shared vertices and edges + int numshared = 0; + int sharedVertsA[3]={-1,-1,-1}; + int sharedVertsB[3]={-1,-1,-1}; + + ///skip degenerate triangles + btScalar crossBSqr = ((triangle[1]-triangle[0]).cross(triangle[2]-triangle[0])).length2(); + if (crossBSqr < m_triangleInfoMap->m_equalVertexThreshold) + return; + + + btScalar crossASqr = ((m_triangleVerticesA[1]-m_triangleVerticesA[0]).cross(m_triangleVerticesA[2]-m_triangleVerticesA[0])).length2(); + ///skip degenerate triangles + if (crossASqr< m_triangleInfoMap->m_equalVertexThreshold) + return; + +#if 0 + printf("triangle A[0] = (%f,%f,%f)\ntriangle A[1] = (%f,%f,%f)\ntriangle A[2] = (%f,%f,%f)\n", + m_triangleVerticesA[0].getX(),m_triangleVerticesA[0].getY(),m_triangleVerticesA[0].getZ(), + m_triangleVerticesA[1].getX(),m_triangleVerticesA[1].getY(),m_triangleVerticesA[1].getZ(), + m_triangleVerticesA[2].getX(),m_triangleVerticesA[2].getY(),m_triangleVerticesA[2].getZ()); + + printf("partId=%d, triangleIndex=%d\n",partId,triangleIndex); + printf("triangle B[0] = (%f,%f,%f)\ntriangle B[1] = (%f,%f,%f)\ntriangle B[2] = (%f,%f,%f)\n", + triangle[0].getX(),triangle[0].getY(),triangle[0].getZ(), + triangle[1].getX(),triangle[1].getY(),triangle[1].getZ(), + triangle[2].getX(),triangle[2].getY(),triangle[2].getZ()); +#endif + + for (int i=0;i<3;i++) + { + for (int j=0;j<3;j++) + { + if ( (m_triangleVerticesA[i]-triangle[j]).length2() < m_triangleInfoMap->m_equalVertexThreshold) + { + sharedVertsA[numshared] = i; + sharedVertsB[numshared] = j; + numshared++; + ///degenerate case + if(numshared >= 3) + return; + } + } + ///degenerate case + if(numshared >= 3) + return; + } + switch (numshared) + { + case 0: + { + break; + } + case 1: + { + //shared vertex + break; + } + case 2: + { + //shared edge + //we need to make sure the edge is in the order V2V0 and not V0V2 so that the signs are correct + if (sharedVertsA[0] == 0 && sharedVertsA[1] == 2) + { + sharedVertsA[0] = 2; + sharedVertsA[1] = 0; + int tmp = sharedVertsB[1]; + sharedVertsB[1] = sharedVertsB[0]; + sharedVertsB[0] = tmp; + } + + int hash = btGetHash(m_partIdA,m_triangleIndexA); + + btTriangleInfo* info = m_triangleInfoMap->find(hash); + if (!info) + { + btTriangleInfo tmp; + m_triangleInfoMap->insert(hash,tmp); + info = m_triangleInfoMap->find(hash); + } + + int sumvertsA = sharedVertsA[0]+sharedVertsA[1]; + int otherIndexA = 3-sumvertsA; + + + btVector3 edge(m_triangleVerticesA[sharedVertsA[1]]-m_triangleVerticesA[sharedVertsA[0]]); + + btTriangleShape tA(m_triangleVerticesA[0],m_triangleVerticesA[1],m_triangleVerticesA[2]); + int otherIndexB = 3-(sharedVertsB[0]+sharedVertsB[1]); + + btTriangleShape tB(triangle[sharedVertsB[1]],triangle[sharedVertsB[0]],triangle[otherIndexB]); + //btTriangleShape tB(triangle[0],triangle[1],triangle[2]); + + btVector3 normalA; + btVector3 normalB; + tA.calcNormal(normalA); + tB.calcNormal(normalB); + edge.normalize(); + btVector3 edgeCrossA = edge.cross(normalA).normalize(); + + { + btVector3 tmp = m_triangleVerticesA[otherIndexA]-m_triangleVerticesA[sharedVertsA[0]]; + if (edgeCrossA.dot(tmp) < 0) + { + edgeCrossA*=-1; + } + } + + btVector3 edgeCrossB = edge.cross(normalB).normalize(); + + { + btVector3 tmp = triangle[otherIndexB]-triangle[sharedVertsB[0]]; + if (edgeCrossB.dot(tmp) < 0) + { + edgeCrossB*=-1; + } + } + + btScalar angle2 = 0; + btScalar ang4 = 0.f; + + + btVector3 calculatedEdge = edgeCrossA.cross(edgeCrossB); + btScalar len2 = calculatedEdge.length2(); + + btScalar correctedAngle(0); + btVector3 calculatedNormalB = normalA; + bool isConvex = false; + + if (len2m_planarEpsilon) + { + angle2 = 0.f; + ang4 = 0.f; + } else + { + + calculatedEdge.normalize(); + btVector3 calculatedNormalA = calculatedEdge.cross(edgeCrossA); + calculatedNormalA.normalize(); + angle2 = btGetAngle(calculatedNormalA,edgeCrossA,edgeCrossB); + ang4 = SIMD_PI-angle2; + btScalar dotA = normalA.dot(edgeCrossB); + ///@todo: check if we need some epsilon, due to floating point imprecision + isConvex = (dotA<0.); + + correctedAngle = isConvex ? ang4 : -ang4; + btQuaternion orn2(calculatedEdge,-correctedAngle); + calculatedNormalB = btMatrix3x3(orn2)*normalA; + + + } + + + + + + //alternatively use + //btVector3 calculatedNormalB2 = quatRotate(orn,normalA); + + + switch (sumvertsA) + { + case 1: + { + btVector3 edge = m_triangleVerticesA[0]-m_triangleVerticesA[1]; + btQuaternion orn(edge,-correctedAngle); + btVector3 computedNormalB = quatRotate(orn,normalA); + btScalar bla = computedNormalB.dot(normalB); + if (bla<0) + { + computedNormalB*=-1; + info->m_flags |= TRI_INFO_V0V1_SWAP_NORMALB; + } +#ifdef DEBUG_INTERNAL_EDGE + if ((computedNormalB-normalB).length()>0.0001) + { + printf("warning: normals not identical\n"); + } +#endif//DEBUG_INTERNAL_EDGE + + info->m_edgeV0V1Angle = -correctedAngle; + + if (isConvex) + info->m_flags |= TRI_INFO_V0V1_CONVEX; + break; + } + case 2: + { + btVector3 edge = m_triangleVerticesA[2]-m_triangleVerticesA[0]; + btQuaternion orn(edge,-correctedAngle); + btVector3 computedNormalB = quatRotate(orn,normalA); + if (computedNormalB.dot(normalB)<0) + { + computedNormalB*=-1; + info->m_flags |= TRI_INFO_V2V0_SWAP_NORMALB; + } + +#ifdef DEBUG_INTERNAL_EDGE + if ((computedNormalB-normalB).length()>0.0001) + { + printf("warning: normals not identical\n"); + } +#endif //DEBUG_INTERNAL_EDGE + info->m_edgeV2V0Angle = -correctedAngle; + if (isConvex) + info->m_flags |= TRI_INFO_V2V0_CONVEX; + break; + } + case 3: + { + btVector3 edge = m_triangleVerticesA[1]-m_triangleVerticesA[2]; + btQuaternion orn(edge,-correctedAngle); + btVector3 computedNormalB = quatRotate(orn,normalA); + if (computedNormalB.dot(normalB)<0) + { + info->m_flags |= TRI_INFO_V1V2_SWAP_NORMALB; + computedNormalB*=-1; + } +#ifdef DEBUG_INTERNAL_EDGE + if ((computedNormalB-normalB).length()>0.0001) + { + printf("warning: normals not identical\n"); + } +#endif //DEBUG_INTERNAL_EDGE + info->m_edgeV1V2Angle = -correctedAngle; + + if (isConvex) + info->m_flags |= TRI_INFO_V1V2_CONVEX; + break; + } + } + + break; + } + default: + { + // printf("warning: duplicate triangle\n"); + } + + } + } +}; +///////////////////////////////////////////////////////// +///////////////////////////////////////////////////////// + +void btGenerateInternalEdgeInfo (btBvhTriangleMeshShape*trimeshShape, btTriangleInfoMap* triangleInfoMap) +{ + //the user pointer shouldn't already be used for other purposes, we intend to store connectivity info there! + if (trimeshShape->getTriangleInfoMap()) + return; + + trimeshShape->setTriangleInfoMap(triangleInfoMap); + + btStridingMeshInterface* meshInterface = trimeshShape->getMeshInterface(); + const btVector3& meshScaling = meshInterface->getScaling(); + + for (int partId = 0; partId< meshInterface->getNumSubParts();partId++) + { + const unsigned char *vertexbase = 0; + int numverts = 0; + PHY_ScalarType type = PHY_INTEGER; + int stride = 0; + const unsigned char *indexbase = 0; + int indexstride = 0; + int numfaces = 0; + PHY_ScalarType indicestype = PHY_INTEGER; + //PHY_ScalarType indexType=0; + + btVector3 triangleVerts[3]; + meshInterface->getLockedReadOnlyVertexIndexBase(&vertexbase,numverts, type,stride,&indexbase,indexstride,numfaces,indicestype,partId); + btVector3 aabbMin,aabbMax; + + for (int triangleIndex = 0 ; triangleIndex < numfaces;triangleIndex++) + { + unsigned int* gfxbase = (unsigned int*)(indexbase+triangleIndex*indexstride); + + for (int j=2;j>=0;j--) + { + + int graphicsindex = indicestype==PHY_SHORT?((unsigned short*)gfxbase)[j]:gfxbase[j]; + if (type == PHY_FLOAT) + { + float* graphicsbase = (float*)(vertexbase+graphicsindex*stride); + triangleVerts[j] = btVector3( + graphicsbase[0]*meshScaling.getX(), + graphicsbase[1]*meshScaling.getY(), + graphicsbase[2]*meshScaling.getZ()); + } + else + { + double* graphicsbase = (double*)(vertexbase+graphicsindex*stride); + triangleVerts[j] = btVector3( btScalar(graphicsbase[0]*meshScaling.getX()), btScalar(graphicsbase[1]*meshScaling.getY()), btScalar(graphicsbase[2]*meshScaling.getZ())); + } + } + aabbMin.setValue(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); + aabbMax.setValue(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); + aabbMin.setMin(triangleVerts[0]); + aabbMax.setMax(triangleVerts[0]); + aabbMin.setMin(triangleVerts[1]); + aabbMax.setMax(triangleVerts[1]); + aabbMin.setMin(triangleVerts[2]); + aabbMax.setMax(triangleVerts[2]); + + btConnectivityProcessor connectivityProcessor; + connectivityProcessor.m_partIdA = partId; + connectivityProcessor.m_triangleIndexA = triangleIndex; + connectivityProcessor.m_triangleVerticesA = &triangleVerts[0]; + connectivityProcessor.m_triangleInfoMap = triangleInfoMap; + + trimeshShape->processAllTriangles(&connectivityProcessor,aabbMin,aabbMax); + } + + } + +} + + + + +// Given a point and a line segment (defined by two points), compute the closest point +// in the line. Cap the point at the endpoints of the line segment. +void btNearestPointInLineSegment(const btVector3 &point, const btVector3& line0, const btVector3& line1, btVector3& nearestPoint) +{ + btVector3 lineDelta = line1 - line0; + + // Handle degenerate lines + if ( lineDelta.fuzzyZero()) + { + nearestPoint = line0; + } + else + { + btScalar delta = (point-line0).dot(lineDelta) / (lineDelta).dot(lineDelta); + + // Clamp the point to conform to the segment's endpoints + if ( delta < 0 ) + delta = 0; + else if ( delta > 1 ) + delta = 1; + + nearestPoint = line0 + lineDelta*delta; + } +} + + + + +bool btClampNormal(const btVector3& edge,const btVector3& tri_normal_org,const btVector3& localContactNormalOnB, btScalar correctedEdgeAngle, btVector3 & clampedLocalNormal) +{ + btVector3 tri_normal = tri_normal_org; + //we only have a local triangle normal, not a local contact normal -> only normal in world space... + //either compute the current angle all in local space, or all in world space + + btVector3 edgeCross = edge.cross(tri_normal).normalize(); + btScalar curAngle = btGetAngle(edgeCross,tri_normal,localContactNormalOnB); + + if (correctedEdgeAngle<0) + { + if (curAngle < correctedEdgeAngle) + { + btScalar diffAngle = correctedEdgeAngle-curAngle; + btQuaternion rotation(edge,diffAngle ); + clampedLocalNormal = btMatrix3x3(rotation)*localContactNormalOnB; + return true; + } + } + + if (correctedEdgeAngle>=0) + { + if (curAngle > correctedEdgeAngle) + { + btScalar diffAngle = correctedEdgeAngle-curAngle; + btQuaternion rotation(edge,diffAngle ); + clampedLocalNormal = btMatrix3x3(rotation)*localContactNormalOnB; + return true; + } + } + return false; +} + + + +/// Changes a btManifoldPoint collision normal to the normal from the mesh. +void btAdjustInternalEdgeContacts(btManifoldPoint& cp, const btCollisionObject* colObj0,const btCollisionObject* colObj1, int partId0, int index0, int normalAdjustFlags) +{ + //btAssert(colObj0->getCollisionShape()->getShapeType() == TRIANGLE_SHAPE_PROXYTYPE); + if (colObj0->getCollisionShape()->getShapeType() != TRIANGLE_SHAPE_PROXYTYPE) + return; + + btBvhTriangleMeshShape* trimesh = (btBvhTriangleMeshShape*)colObj0->getRootCollisionShape(); + btTriangleInfoMap* triangleInfoMapPtr = (btTriangleInfoMap*) trimesh->getTriangleInfoMap(); + if (!triangleInfoMapPtr) + return; + + int hash = btGetHash(partId0,index0); + + + btTriangleInfo* info = triangleInfoMapPtr->find(hash); + if (!info) + return; + + btScalar frontFacing = (normalAdjustFlags & BT_TRIANGLE_CONVEX_BACKFACE_MODE)==0? 1.f : -1.f; + + const btTriangleShape* tri_shape = static_cast(colObj0->getCollisionShape()); + btVector3 v0,v1,v2; + tri_shape->getVertex(0,v0); + tri_shape->getVertex(1,v1); + tri_shape->getVertex(2,v2); + + btVector3 center = (v0+v1+v2)*btScalar(1./3.); + + btVector3 red(1,0,0), green(0,1,0),blue(0,0,1),white(1,1,1),black(0,0,0); + btVector3 tri_normal; + tri_shape->calcNormal(tri_normal); + + //btScalar dot = tri_normal.dot(cp.m_normalWorldOnB); + btVector3 nearest; + btNearestPointInLineSegment(cp.m_localPointB,v0,v1,nearest); + + btVector3 contact = cp.m_localPointB; +#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW + const btTransform& tr = colObj0->getWorldTransform(); + btDebugDrawLine(tr*nearest,tr*cp.m_localPointB,red); +#endif //BT_INTERNAL_EDGE_DEBUG_DRAW + + + + bool isNearEdge = false; + + int numConcaveEdgeHits = 0; + int numConvexEdgeHits = 0; + + btVector3 localContactNormalOnB = colObj0->getWorldTransform().getBasis().transpose() * cp.m_normalWorldOnB; + localContactNormalOnB.normalize();//is this necessary? + + if ((info->m_edgeV0V1Angle)< SIMD_2_PI) + { +#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW + btDebugDrawLine(tr*contact,tr*(contact+cp.m_normalWorldOnB*10),black); +#endif + btScalar len = (contact-nearest).length(); + if(lenm_edgeDistanceThreshold) + { + btVector3 edge(v0-v1); + isNearEdge = true; + + if (info->m_edgeV0V1Angle==btScalar(0)) + { + numConcaveEdgeHits++; + } else + { + + bool isEdgeConvex = (info->m_flags & TRI_INFO_V0V1_CONVEX); + btScalar swapFactor = isEdgeConvex ? btScalar(1) : btScalar(-1); + #ifdef BT_INTERNAL_EDGE_DEBUG_DRAW + btDebugDrawLine(tr*nearest,tr*(nearest+swapFactor*tri_normal*10),white); + #endif //BT_INTERNAL_EDGE_DEBUG_DRAW + + btVector3 nA = swapFactor * tri_normal; + + btQuaternion orn(edge,info->m_edgeV0V1Angle); + btVector3 computedNormalB = quatRotate(orn,tri_normal); + if (info->m_flags & TRI_INFO_V0V1_SWAP_NORMALB) + computedNormalB*=-1; + btVector3 nB = swapFactor*computedNormalB; + + btScalar NdotA = localContactNormalOnB.dot(nA); + btScalar NdotB = localContactNormalOnB.dot(nB); + bool backFacingNormal = (NdotA< triangleInfoMapPtr->m_convexEpsilon) && (NdotBm_convexEpsilon); + +#ifdef DEBUG_INTERNAL_EDGE + { + + btDebugDrawLine(cp.getPositionWorldOnB(),cp.getPositionWorldOnB()+tr.getBasis()*(nB*20),red); + } +#endif //DEBUG_INTERNAL_EDGE + + + if (backFacingNormal) + { + numConcaveEdgeHits++; + } + else + { + numConvexEdgeHits++; + btVector3 clampedLocalNormal; + bool isClamped = btClampNormal(edge,swapFactor*tri_normal,localContactNormalOnB, info->m_edgeV0V1Angle,clampedLocalNormal); + if (isClamped) + { + if (((normalAdjustFlags & BT_TRIANGLE_CONVEX_DOUBLE_SIDED)!=0) || (clampedLocalNormal.dot(frontFacing*tri_normal)>0)) + { + btVector3 newNormal = colObj0->getWorldTransform().getBasis() * clampedLocalNormal; + // cp.m_distance1 = cp.m_distance1 * newNormal.dot(cp.m_normalWorldOnB); + cp.m_normalWorldOnB = newNormal; + // Reproject collision point along normal. (what about cp.m_distance1?) + cp.m_positionWorldOnB = cp.m_positionWorldOnA - cp.m_normalWorldOnB * cp.m_distance1; + cp.m_localPointB = colObj0->getWorldTransform().invXform(cp.m_positionWorldOnB); + + } + } + } + } + } + } + + btNearestPointInLineSegment(contact,v1,v2,nearest); +#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW + btDebugDrawLine(tr*nearest,tr*cp.m_localPointB,green); +#endif //BT_INTERNAL_EDGE_DEBUG_DRAW + + if ((info->m_edgeV1V2Angle)< SIMD_2_PI) + { +#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW + btDebugDrawLine(tr*contact,tr*(contact+cp.m_normalWorldOnB*10),black); +#endif //BT_INTERNAL_EDGE_DEBUG_DRAW + + + + btScalar len = (contact-nearest).length(); + if(lenm_edgeDistanceThreshold) + { + isNearEdge = true; +#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW + btDebugDrawLine(tr*nearest,tr*(nearest+tri_normal*10),white); +#endif //BT_INTERNAL_EDGE_DEBUG_DRAW + + btVector3 edge(v1-v2); + + isNearEdge = true; + + if (info->m_edgeV1V2Angle == btScalar(0)) + { + numConcaveEdgeHits++; + } else + { + bool isEdgeConvex = (info->m_flags & TRI_INFO_V1V2_CONVEX)!=0; + btScalar swapFactor = isEdgeConvex ? btScalar(1) : btScalar(-1); + #ifdef BT_INTERNAL_EDGE_DEBUG_DRAW + btDebugDrawLine(tr*nearest,tr*(nearest+swapFactor*tri_normal*10),white); + #endif //BT_INTERNAL_EDGE_DEBUG_DRAW + + btVector3 nA = swapFactor * tri_normal; + + btQuaternion orn(edge,info->m_edgeV1V2Angle); + btVector3 computedNormalB = quatRotate(orn,tri_normal); + if (info->m_flags & TRI_INFO_V1V2_SWAP_NORMALB) + computedNormalB*=-1; + btVector3 nB = swapFactor*computedNormalB; + +#ifdef DEBUG_INTERNAL_EDGE + { + btDebugDrawLine(cp.getPositionWorldOnB(),cp.getPositionWorldOnB()+tr.getBasis()*(nB*20),red); + } +#endif //DEBUG_INTERNAL_EDGE + + + btScalar NdotA = localContactNormalOnB.dot(nA); + btScalar NdotB = localContactNormalOnB.dot(nB); + bool backFacingNormal = (NdotA< triangleInfoMapPtr->m_convexEpsilon) && (NdotBm_convexEpsilon); + + if (backFacingNormal) + { + numConcaveEdgeHits++; + } + else + { + numConvexEdgeHits++; + btVector3 localContactNormalOnB = colObj0->getWorldTransform().getBasis().transpose() * cp.m_normalWorldOnB; + btVector3 clampedLocalNormal; + bool isClamped = btClampNormal(edge,swapFactor*tri_normal,localContactNormalOnB, info->m_edgeV1V2Angle,clampedLocalNormal); + if (isClamped) + { + if (((normalAdjustFlags & BT_TRIANGLE_CONVEX_DOUBLE_SIDED)!=0) || (clampedLocalNormal.dot(frontFacing*tri_normal)>0)) + { + btVector3 newNormal = colObj0->getWorldTransform().getBasis() * clampedLocalNormal; + // cp.m_distance1 = cp.m_distance1 * newNormal.dot(cp.m_normalWorldOnB); + cp.m_normalWorldOnB = newNormal; + // Reproject collision point along normal. + cp.m_positionWorldOnB = cp.m_positionWorldOnA - cp.m_normalWorldOnB * cp.m_distance1; + cp.m_localPointB = colObj0->getWorldTransform().invXform(cp.m_positionWorldOnB); + } + } + } + } + } + } + + btNearestPointInLineSegment(contact,v2,v0,nearest); +#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW + btDebugDrawLine(tr*nearest,tr*cp.m_localPointB,blue); +#endif //BT_INTERNAL_EDGE_DEBUG_DRAW + + if ((info->m_edgeV2V0Angle)< SIMD_2_PI) + { + +#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW + btDebugDrawLine(tr*contact,tr*(contact+cp.m_normalWorldOnB*10),black); +#endif //BT_INTERNAL_EDGE_DEBUG_DRAW + + btScalar len = (contact-nearest).length(); + if(lenm_edgeDistanceThreshold) + { + isNearEdge = true; +#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW + btDebugDrawLine(tr*nearest,tr*(nearest+tri_normal*10),white); +#endif //BT_INTERNAL_EDGE_DEBUG_DRAW + + btVector3 edge(v2-v0); + + if (info->m_edgeV2V0Angle==btScalar(0)) + { + numConcaveEdgeHits++; + } else + { + + bool isEdgeConvex = (info->m_flags & TRI_INFO_V2V0_CONVEX)!=0; + btScalar swapFactor = isEdgeConvex ? btScalar(1) : btScalar(-1); + #ifdef BT_INTERNAL_EDGE_DEBUG_DRAW + btDebugDrawLine(tr*nearest,tr*(nearest+swapFactor*tri_normal*10),white); + #endif //BT_INTERNAL_EDGE_DEBUG_DRAW + + btVector3 nA = swapFactor * tri_normal; + btQuaternion orn(edge,info->m_edgeV2V0Angle); + btVector3 computedNormalB = quatRotate(orn,tri_normal); + if (info->m_flags & TRI_INFO_V2V0_SWAP_NORMALB) + computedNormalB*=-1; + btVector3 nB = swapFactor*computedNormalB; + +#ifdef DEBUG_INTERNAL_EDGE + { + btDebugDrawLine(cp.getPositionWorldOnB(),cp.getPositionWorldOnB()+tr.getBasis()*(nB*20),red); + } +#endif //DEBUG_INTERNAL_EDGE + + btScalar NdotA = localContactNormalOnB.dot(nA); + btScalar NdotB = localContactNormalOnB.dot(nB); + bool backFacingNormal = (NdotA< triangleInfoMapPtr->m_convexEpsilon) && (NdotBm_convexEpsilon); + + if (backFacingNormal) + { + numConcaveEdgeHits++; + } + else + { + numConvexEdgeHits++; + // printf("hitting convex edge\n"); + + + btVector3 localContactNormalOnB = colObj0->getWorldTransform().getBasis().transpose() * cp.m_normalWorldOnB; + btVector3 clampedLocalNormal; + bool isClamped = btClampNormal(edge,swapFactor*tri_normal,localContactNormalOnB,info->m_edgeV2V0Angle,clampedLocalNormal); + if (isClamped) + { + if (((normalAdjustFlags & BT_TRIANGLE_CONVEX_DOUBLE_SIDED)!=0) || (clampedLocalNormal.dot(frontFacing*tri_normal)>0)) + { + btVector3 newNormal = colObj0->getWorldTransform().getBasis() * clampedLocalNormal; + // cp.m_distance1 = cp.m_distance1 * newNormal.dot(cp.m_normalWorldOnB); + cp.m_normalWorldOnB = newNormal; + // Reproject collision point along normal. + cp.m_positionWorldOnB = cp.m_positionWorldOnA - cp.m_normalWorldOnB * cp.m_distance1; + cp.m_localPointB = colObj0->getWorldTransform().invXform(cp.m_positionWorldOnB); + } + } + } + } + + + } + } + +#ifdef DEBUG_INTERNAL_EDGE + { + btVector3 color(0,1,1); + btDebugDrawLine(cp.getPositionWorldOnB(),cp.getPositionWorldOnB()+cp.m_normalWorldOnB*10,color); + } +#endif //DEBUG_INTERNAL_EDGE + + if (isNearEdge) + { + + if (numConcaveEdgeHits>0) + { + if ((normalAdjustFlags & BT_TRIANGLE_CONCAVE_DOUBLE_SIDED)!=0) + { + //fix tri_normal so it pointing the same direction as the current local contact normal + if (tri_normal.dot(localContactNormalOnB) < 0) + { + tri_normal *= -1; + } + cp.m_normalWorldOnB = colObj0->getWorldTransform().getBasis()*tri_normal; + } else + { + //modify the normal to be the triangle normal (or backfacing normal) + cp.m_normalWorldOnB = colObj0->getWorldTransform().getBasis() *(tri_normal *frontFacing); + } + + + // Reproject collision point along normal. + cp.m_positionWorldOnB = cp.m_positionWorldOnA - cp.m_normalWorldOnB * cp.m_distance1; + cp.m_localPointB = colObj0->getWorldTransform().invXform(cp.m_positionWorldOnB); + } + } +} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h b/extern/bullet2/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h new file mode 100644 index 00000000000..9efb0122bb8 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h @@ -0,0 +1,46 @@ + +#ifndef BT_INTERNAL_EDGE_UTILITY_H +#define BT_INTERNAL_EDGE_UTILITY_H + +#include "LinearMath/btHashMap.h" +#include "LinearMath/btVector3.h" + +#include "BulletCollision/CollisionShapes/btTriangleInfoMap.h" + +///The btInternalEdgeUtility helps to avoid or reduce artifacts due to wrong collision normals caused by internal edges. +///See also http://code.google.com/p/bullet/issues/detail?id=27 + +class btBvhTriangleMeshShape; +class btCollisionObject; +class btManifoldPoint; +class btIDebugDraw; + + + +enum btInternalEdgeAdjustFlags +{ + BT_TRIANGLE_CONVEX_BACKFACE_MODE = 1, + BT_TRIANGLE_CONCAVE_DOUBLE_SIDED = 2, //double sided options are experimental, single sided is recommended + BT_TRIANGLE_CONVEX_DOUBLE_SIDED = 4 +}; + + +///Call btGenerateInternalEdgeInfo to create triangle info, store in the shape 'userInfo' +void btGenerateInternalEdgeInfo (btBvhTriangleMeshShape*trimeshShape, btTriangleInfoMap* triangleInfoMap); + + +///Call the btFixMeshNormal to adjust the collision normal, using the triangle info map (generated using btGenerateInternalEdgeInfo) +///If this info map is missing, or the triangle is not store in this map, nothing will be done +void btAdjustInternalEdgeContacts(btManifoldPoint& cp, const btCollisionObject* trimeshColObj0,const btCollisionObject* otherColObj1, int partId0, int index0, int normalAdjustFlags = 0); + +///Enable the BT_INTERNAL_EDGE_DEBUG_DRAW define and call btSetDebugDrawer, to get visual info to see if the internal edge utility works properly. +///If the utility doesn't work properly, you might have to adjust the threshold values in btTriangleInfoMap +//#define BT_INTERNAL_EDGE_DEBUG_DRAW + +#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW +void btSetDebugDrawer(btIDebugDraw* debugDrawer); +#endif //BT_INTERNAL_EDGE_DEBUG_DRAW + + +#endif //BT_INTERNAL_EDGE_UTILITY_H + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btManifoldResult.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btManifoldResult.cpp new file mode 100644 index 00000000000..e607bdbee58 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btManifoldResult.cpp @@ -0,0 +1,134 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btManifoldResult.h" +#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" + + +///This is to allow MaterialCombiner/Custom Friction/Restitution values +ContactAddedCallback gContactAddedCallback=0; + +///User can override this material combiner by implementing gContactAddedCallback and setting body0->m_collisionFlags |= btCollisionObject::customMaterialCallback; +inline btScalar calculateCombinedFriction(const btCollisionObject* body0,const btCollisionObject* body1) +{ + btScalar friction = body0->getFriction() * body1->getFriction(); + + const btScalar MAX_FRICTION = btScalar(10.); + if (friction < -MAX_FRICTION) + friction = -MAX_FRICTION; + if (friction > MAX_FRICTION) + friction = MAX_FRICTION; + return friction; + +} + +inline btScalar calculateCombinedRestitution(const btCollisionObject* body0,const btCollisionObject* body1) +{ + return body0->getRestitution() * body1->getRestitution(); +} + + + +btManifoldResult::btManifoldResult(btCollisionObject* body0,btCollisionObject* body1) + :m_manifoldPtr(0), + m_body0(body0), + m_body1(body1) +#ifdef DEBUG_PART_INDEX + ,m_partId0(-1), + m_partId1(-1), + m_index0(-1), + m_index1(-1) +#endif //DEBUG_PART_INDEX +{ + m_rootTransA = body0->getWorldTransform(); + m_rootTransB = body1->getWorldTransform(); +} + + +void btManifoldResult::addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth) +{ + btAssert(m_manifoldPtr); + //order in manifold needs to match + + if (depth > m_manifoldPtr->getContactBreakingThreshold()) + return; + + bool isSwapped = m_manifoldPtr->getBody0() != m_body0; + + btVector3 pointA = pointInWorld + normalOnBInWorld * depth; + + btVector3 localA; + btVector3 localB; + + if (isSwapped) + { + localA = m_rootTransB.invXform(pointA ); + localB = m_rootTransA.invXform(pointInWorld); + } else + { + localA = m_rootTransA.invXform(pointA ); + localB = m_rootTransB.invXform(pointInWorld); + } + + btManifoldPoint newPt(localA,localB,normalOnBInWorld,depth); + newPt.m_positionWorldOnA = pointA; + newPt.m_positionWorldOnB = pointInWorld; + + int insertIndex = m_manifoldPtr->getCacheEntry(newPt); + + newPt.m_combinedFriction = calculateCombinedFriction(m_body0,m_body1); + newPt.m_combinedRestitution = calculateCombinedRestitution(m_body0,m_body1); + + //BP mod, store contact triangles. + if (isSwapped) + { + newPt.m_partId0 = m_partId1; + newPt.m_partId1 = m_partId0; + newPt.m_index0 = m_index1; + newPt.m_index1 = m_index0; + } else + { + newPt.m_partId0 = m_partId0; + newPt.m_partId1 = m_partId1; + newPt.m_index0 = m_index0; + newPt.m_index1 = m_index1; + } + //printf("depth=%f\n",depth); + ///@todo, check this for any side effects + if (insertIndex >= 0) + { + //const btManifoldPoint& oldPoint = m_manifoldPtr->getContactPoint(insertIndex); + m_manifoldPtr->replaceContactPoint(newPt,insertIndex); + } else + { + insertIndex = m_manifoldPtr->addManifoldPoint(newPt); + } + + //User can override friction and/or restitution + if (gContactAddedCallback && + //and if either of the two bodies requires custom material + ((m_body0->getCollisionFlags() & btCollisionObject::CF_CUSTOM_MATERIAL_CALLBACK) || + (m_body1->getCollisionFlags() & btCollisionObject::CF_CUSTOM_MATERIAL_CALLBACK))) + { + //experimental feature info, for per-triangle material etc. + btCollisionObject* obj0 = isSwapped? m_body1 : m_body0; + btCollisionObject* obj1 = isSwapped? m_body0 : m_body1; + (*gContactAddedCallback)(m_manifoldPtr->getContactPoint(insertIndex),obj0,newPt.m_partId0,newPt.m_index0,obj1,newPt.m_partId1,newPt.m_index1); + } + +} + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btManifoldResult.h b/extern/bullet2/BulletCollision/CollisionDispatch/btManifoldResult.h new file mode 100644 index 00000000000..927e2bc4f76 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btManifoldResult.h @@ -0,0 +1,128 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef MANIFOLD_RESULT_H +#define MANIFOLD_RESULT_H + +class btCollisionObject; +#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" +class btManifoldPoint; + +#include "BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h" + +#include "LinearMath/btTransform.h" + +typedef bool (*ContactAddedCallback)(btManifoldPoint& cp, const btCollisionObject* colObj0,int partId0,int index0,const btCollisionObject* colObj1,int partId1,int index1); +extern ContactAddedCallback gContactAddedCallback; + +//#define DEBUG_PART_INDEX 1 + + +///btManifoldResult is a helper class to manage contact results. +class btManifoldResult : public btDiscreteCollisionDetectorInterface::Result +{ +protected: + + btPersistentManifold* m_manifoldPtr; + + //we need this for compounds + btTransform m_rootTransA; + btTransform m_rootTransB; + + btCollisionObject* m_body0; + btCollisionObject* m_body1; + int m_partId0; + int m_partId1; + int m_index0; + int m_index1; + + +public: + + btManifoldResult() +#ifdef DEBUG_PART_INDEX + : + m_partId0(-1), + m_partId1(-1), + m_index0(-1), + m_index1(-1) +#endif //DEBUG_PART_INDEX + { + } + + btManifoldResult(btCollisionObject* body0,btCollisionObject* body1); + + virtual ~btManifoldResult() {}; + + void setPersistentManifold(btPersistentManifold* manifoldPtr) + { + m_manifoldPtr = manifoldPtr; + } + + const btPersistentManifold* getPersistentManifold() const + { + return m_manifoldPtr; + } + btPersistentManifold* getPersistentManifold() + { + return m_manifoldPtr; + } + + virtual void setShapeIdentifiersA(int partId0,int index0) + { + m_partId0=partId0; + m_index0=index0; + } + + virtual void setShapeIdentifiersB( int partId1,int index1) + { + m_partId1=partId1; + m_index1=index1; + } + + + virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth); + + SIMD_FORCE_INLINE void refreshContactPoints() + { + btAssert(m_manifoldPtr); + if (!m_manifoldPtr->getNumContacts()) + return; + + bool isSwapped = m_manifoldPtr->getBody0() != m_body0; + + if (isSwapped) + { + m_manifoldPtr->refreshContactPoints(m_rootTransB,m_rootTransA); + } else + { + m_manifoldPtr->refreshContactPoints(m_rootTransA,m_rootTransB); + } + } + + const btCollisionObject* getBody0Internal() const + { + return m_body0; + } + + const btCollisionObject* getBody1Internal() const + { + return m_body1; + } + +}; + +#endif //MANIFOLD_RESULT_H diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp new file mode 100644 index 00000000000..0a41ab9a512 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp @@ -0,0 +1,392 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "LinearMath/btScalar.h" +#include "btSimulationIslandManager.h" +#include "BulletCollision/BroadphaseCollision/btDispatcher.h" +#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "BulletCollision/CollisionDispatch/btCollisionWorld.h" + +//#include +#include "LinearMath/btQuickprof.h" + +btSimulationIslandManager::btSimulationIslandManager(): +m_splitIslands(true) +{ +} + +btSimulationIslandManager::~btSimulationIslandManager() +{ +} + + +void btSimulationIslandManager::initUnionFind(int n) +{ + m_unionFind.reset(n); +} + + +void btSimulationIslandManager::findUnions(btDispatcher* /* dispatcher */,btCollisionWorld* colWorld) +{ + + { + btOverlappingPairCache* pairCachePtr = colWorld->getPairCache(); + const int numOverlappingPairs = pairCachePtr->getNumOverlappingPairs(); + btBroadphasePair* pairPtr = pairCachePtr->getOverlappingPairArrayPtr(); + + for (int i=0;im_clientObject; + btCollisionObject* colObj1 = (btCollisionObject*)collisionPair.m_pProxy1->m_clientObject; + + if (((colObj0) && ((colObj0)->mergesSimulationIslands())) && + ((colObj1) && ((colObj1)->mergesSimulationIslands()))) + { + + m_unionFind.unite((colObj0)->getIslandTag(), + (colObj1)->getIslandTag()); + } + } + } +} + + +void btSimulationIslandManager::updateActivationState(btCollisionWorld* colWorld,btDispatcher* dispatcher) +{ + + initUnionFind( int (colWorld->getCollisionObjectArray().size())); + + // put the index into m_controllers into m_tag + { + + int index = 0; + int i; + for (i=0;igetCollisionObjectArray().size(); i++) + { + btCollisionObject* collisionObject= colWorld->getCollisionObjectArray()[i]; + collisionObject->setIslandTag(index); + collisionObject->setCompanionId(-1); + collisionObject->setHitFraction(btScalar(1.)); + index++; + + } + } + // do the union find + + findUnions(dispatcher,colWorld); + + + +} + + + + +void btSimulationIslandManager::storeIslandActivationState(btCollisionWorld* colWorld) +{ + // put the islandId ('find' value) into m_tag + { + + + int index = 0; + int i; + for (i=0;igetCollisionObjectArray().size();i++) + { + btCollisionObject* collisionObject= colWorld->getCollisionObjectArray()[i]; + if (!collisionObject->isStaticOrKinematicObject()) + { + collisionObject->setIslandTag( m_unionFind.find(index) ); + collisionObject->setCompanionId(-1); + } else + { + collisionObject->setIslandTag(-1); + collisionObject->setCompanionId(-2); + } + index++; + } + } +} + +inline int getIslandId(const btPersistentManifold* lhs) +{ + int islandId; + const btCollisionObject* rcolObj0 = static_cast(lhs->getBody0()); + const btCollisionObject* rcolObj1 = static_cast(lhs->getBody1()); + islandId= rcolObj0->getIslandTag()>=0?rcolObj0->getIslandTag():rcolObj1->getIslandTag(); + return islandId; + +} + + + +/// function object that routes calls to operator< +class btPersistentManifoldSortPredicate +{ + public: + + SIMD_FORCE_INLINE bool operator() ( const btPersistentManifold* lhs, const btPersistentManifold* rhs ) + { + return getIslandId(lhs) < getIslandId(rhs); + } +}; + + +void btSimulationIslandManager::buildIslands(btDispatcher* dispatcher,btCollisionWorld* collisionWorld) +{ + + BT_PROFILE("islandUnionFindAndQuickSort"); + + btCollisionObjectArray& collisionObjects = collisionWorld->getCollisionObjectArray(); + + m_islandmanifold.resize(0); + + //we are going to sort the unionfind array, and store the element id in the size + //afterwards, we clean unionfind, to make sure no-one uses it anymore + + getUnionFind().sortIslands(); + int numElem = getUnionFind().getNumElements(); + + int endIslandIndex=1; + int startIslandIndex; + + + //update the sleeping state for bodies, if all are sleeping + for ( startIslandIndex=0;startIslandIndexgetIslandTag() != islandId) && (colObj0->getIslandTag() != -1)) + { +// printf("error in island management\n"); + } + + btAssert((colObj0->getIslandTag() == islandId) || (colObj0->getIslandTag() == -1)); + if (colObj0->getIslandTag() == islandId) + { + if (colObj0->getActivationState()== ACTIVE_TAG) + { + allSleeping = false; + } + if (colObj0->getActivationState()== DISABLE_DEACTIVATION) + { + allSleeping = false; + } + } + } + + + if (allSleeping) + { + int idx; + for (idx=startIslandIndex;idxgetIslandTag() != islandId) && (colObj0->getIslandTag() != -1)) + { +// printf("error in island management\n"); + } + + btAssert((colObj0->getIslandTag() == islandId) || (colObj0->getIslandTag() == -1)); + + if (colObj0->getIslandTag() == islandId) + { + colObj0->setActivationState( ISLAND_SLEEPING ); + } + } + } else + { + + int idx; + for (idx=startIslandIndex;idxgetIslandTag() != islandId) && (colObj0->getIslandTag() != -1)) + { +// printf("error in island management\n"); + } + + btAssert((colObj0->getIslandTag() == islandId) || (colObj0->getIslandTag() == -1)); + + if (colObj0->getIslandTag() == islandId) + { + if ( colObj0->getActivationState() == ISLAND_SLEEPING) + { + colObj0->setActivationState( WANTS_DEACTIVATION); + colObj0->setDeactivationTime(0.f); + } + } + } + } + } + + + int i; + int maxNumManifolds = dispatcher->getNumManifolds(); + +//#define SPLIT_ISLANDS 1 +//#ifdef SPLIT_ISLANDS + + +//#endif //SPLIT_ISLANDS + + + for (i=0;igetManifoldByIndexInternal(i); + + btCollisionObject* colObj0 = static_cast(manifold->getBody0()); + btCollisionObject* colObj1 = static_cast(manifold->getBody1()); + + ///@todo: check sleeping conditions! + if (((colObj0) && colObj0->getActivationState() != ISLAND_SLEEPING) || + ((colObj1) && colObj1->getActivationState() != ISLAND_SLEEPING)) + { + + //kinematic objects don't merge islands, but wake up all connected objects + if (colObj0->isKinematicObject() && colObj0->getActivationState() != ISLAND_SLEEPING) + { + colObj1->activate(); + } + if (colObj1->isKinematicObject() && colObj1->getActivationState() != ISLAND_SLEEPING) + { + colObj0->activate(); + } + if(m_splitIslands) + { + //filtering for response + if (dispatcher->needsResponse(colObj0,colObj1)) + m_islandmanifold.push_back(manifold); + } + } + } +} + + + +///@todo: this is random access, it can be walked 'cache friendly'! +void btSimulationIslandManager::buildAndProcessIslands(btDispatcher* dispatcher,btCollisionWorld* collisionWorld, IslandCallback* callback) +{ + btCollisionObjectArray& collisionObjects = collisionWorld->getCollisionObjectArray(); + + buildIslands(dispatcher,collisionWorld); + + int endIslandIndex=1; + int startIslandIndex; + int numElem = getUnionFind().getNumElements(); + + BT_PROFILE("processIslands"); + + if(!m_splitIslands) + { + btPersistentManifold** manifold = dispatcher->getInternalManifoldPointer(); + int maxNumManifolds = dispatcher->getNumManifolds(); + callback->ProcessIsland(&collisionObjects[0],collisionObjects.size(),manifold,maxNumManifolds, -1); + } + else + { + // Sort manifolds, based on islands + // Sort the vector using predicate and std::sort + //std::sort(islandmanifold.begin(), islandmanifold.end(), btPersistentManifoldSortPredicate); + + int numManifolds = int (m_islandmanifold.size()); + + //we should do radix sort, it it much faster (O(n) instead of O (n log2(n)) + m_islandmanifold.quickSort(btPersistentManifoldSortPredicate()); + + //now process all active islands (sets of manifolds for now) + + int startManifoldIndex = 0; + int endManifoldIndex = 1; + + //int islandId; + + + + // printf("Start Islands\n"); + + //traverse the simulation islands, and call the solver, unless all objects are sleeping/deactivated + for ( startIslandIndex=0;startIslandIndexisActive()) + islandSleeping = true; + } + + + //find the accompanying contact manifold for this islandId + int numIslandManifolds = 0; + btPersistentManifold** startManifold = 0; + + if (startManifoldIndexProcessIsland(&m_islandBodies[0],m_islandBodies.size(),startManifold,numIslandManifolds, islandId); + // printf("Island callback of size:%d bodies, %d manifolds\n",islandBodies.size(),numIslandManifolds); + } + + if (numIslandManifolds) + { + startManifoldIndex = endManifoldIndex; + } + + m_islandBodies.resize(0); + } + } // else if(!splitIslands) + +} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btSimulationIslandManager.h b/extern/bullet2/BulletCollision/CollisionDispatch/btSimulationIslandManager.h new file mode 100644 index 00000000000..d059f5d6b0d --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btSimulationIslandManager.h @@ -0,0 +1,81 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SIMULATION_ISLAND_MANAGER_H +#define SIMULATION_ISLAND_MANAGER_H + +#include "BulletCollision/CollisionDispatch/btUnionFind.h" +#include "btCollisionCreateFunc.h" +#include "LinearMath/btAlignedObjectArray.h" +#include "btCollisionObject.h" + +class btCollisionObject; +class btCollisionWorld; +class btDispatcher; +class btPersistentManifold; + + +///SimulationIslandManager creates and handles simulation islands, using btUnionFind +class btSimulationIslandManager +{ + btUnionFind m_unionFind; + + btAlignedObjectArray m_islandmanifold; + btAlignedObjectArray m_islandBodies; + + bool m_splitIslands; + +public: + btSimulationIslandManager(); + virtual ~btSimulationIslandManager(); + + + void initUnionFind(int n); + + + btUnionFind& getUnionFind() { return m_unionFind;} + + virtual void updateActivationState(btCollisionWorld* colWorld,btDispatcher* dispatcher); + virtual void storeIslandActivationState(btCollisionWorld* world); + + + void findUnions(btDispatcher* dispatcher,btCollisionWorld* colWorld); + + + + struct IslandCallback + { + virtual ~IslandCallback() {}; + + virtual void ProcessIsland(btCollisionObject** bodies,int numBodies,class btPersistentManifold** manifolds,int numManifolds, int islandId) = 0; + }; + + void buildAndProcessIslands(btDispatcher* dispatcher,btCollisionWorld* collisionWorld, IslandCallback* callback); + + void buildIslands(btDispatcher* dispatcher,btCollisionWorld* colWorld); + + bool getSplitIslands() + { + return m_splitIslands; + } + void setSplitIslands(bool doSplitIslands) + { + m_splitIslands = doSplitIslands; + } + +}; + +#endif //SIMULATION_ISLAND_MANAGER_H + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp new file mode 100644 index 00000000000..8df876928c1 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp @@ -0,0 +1,260 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btSphereBoxCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" +#include "BulletCollision/CollisionShapes/btSphereShape.h" +#include "BulletCollision/CollisionShapes/btBoxShape.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +//#include + +btSphereBoxCollisionAlgorithm::btSphereBoxCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* col0,btCollisionObject* col1, bool isSwapped) +: btActivatingCollisionAlgorithm(ci,col0,col1), +m_ownManifold(false), +m_manifoldPtr(mf), +m_isSwapped(isSwapped) +{ + btCollisionObject* sphereObj = m_isSwapped? col1 : col0; + btCollisionObject* boxObj = m_isSwapped? col0 : col1; + + if (!m_manifoldPtr && m_dispatcher->needsCollision(sphereObj,boxObj)) + { + m_manifoldPtr = m_dispatcher->getNewManifold(sphereObj,boxObj); + m_ownManifold = true; + } +} + + +btSphereBoxCollisionAlgorithm::~btSphereBoxCollisionAlgorithm() +{ + if (m_ownManifold) + { + if (m_manifoldPtr) + m_dispatcher->releaseManifold(m_manifoldPtr); + } +} + + + +void btSphereBoxCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + (void)dispatchInfo; + (void)resultOut; + if (!m_manifoldPtr) + return; + + btCollisionObject* sphereObj = m_isSwapped? body1 : body0; + btCollisionObject* boxObj = m_isSwapped? body0 : body1; + + + btSphereShape* sphere0 = (btSphereShape*)sphereObj->getCollisionShape(); + + btVector3 normalOnSurfaceB; + btVector3 pOnBox,pOnSphere; + btVector3 sphereCenter = sphereObj->getWorldTransform().getOrigin(); + btScalar radius = sphere0->getRadius(); + + btScalar dist = getSphereDistance(boxObj,pOnBox,pOnSphere,sphereCenter,radius); + + resultOut->setPersistentManifold(m_manifoldPtr); + + if (dist < SIMD_EPSILON) + { + btVector3 normalOnSurfaceB = (pOnBox- pOnSphere).normalize(); + + /// report a contact. internally this will be kept persistent, and contact reduction is done + + resultOut->addContactPoint(normalOnSurfaceB,pOnBox,dist); + + } + + if (m_ownManifold) + { + if (m_manifoldPtr->getNumContacts()) + { + resultOut->refreshContactPoints(); + } + } + +} + +btScalar btSphereBoxCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + (void)resultOut; + (void)dispatchInfo; + (void)col0; + (void)col1; + + //not yet + return btScalar(1.); +} + + +btScalar btSphereBoxCollisionAlgorithm::getSphereDistance(btCollisionObject* boxObj, btVector3& pointOnBox, btVector3& v3PointOnSphere, const btVector3& sphereCenter, btScalar fRadius ) +{ + + btScalar margins; + btVector3 bounds[2]; + btBoxShape* boxShape= (btBoxShape*)boxObj->getCollisionShape(); + + bounds[0] = -boxShape->getHalfExtentsWithoutMargin(); + bounds[1] = boxShape->getHalfExtentsWithoutMargin(); + + margins = boxShape->getMargin();//also add sphereShape margin? + + const btTransform& m44T = boxObj->getWorldTransform(); + + btVector3 boundsVec[2]; + btScalar fPenetration; + + boundsVec[0] = bounds[0]; + boundsVec[1] = bounds[1]; + + btVector3 marginsVec( margins, margins, margins ); + + // add margins + bounds[0] += marginsVec; + bounds[1] -= marginsVec; + + ///////////////////////////////////////////////// + + btVector3 tmp, prel, n[6], normal, v3P; + btScalar fSep = btScalar(10000000.0), fSepThis; + + n[0].setValue( btScalar(-1.0), btScalar(0.0), btScalar(0.0) ); + n[1].setValue( btScalar(0.0), btScalar(-1.0), btScalar(0.0) ); + n[2].setValue( btScalar(0.0), btScalar(0.0), btScalar(-1.0) ); + n[3].setValue( btScalar(1.0), btScalar(0.0), btScalar(0.0) ); + n[4].setValue( btScalar(0.0), btScalar(1.0), btScalar(0.0) ); + n[5].setValue( btScalar(0.0), btScalar(0.0), btScalar(1.0) ); + + // convert point in local space + prel = m44T.invXform( sphereCenter); + + bool bFound = false; + + v3P = prel; + + for (int i=0;i<6;i++) + { + int j = i<3? 0:1; + if ( (fSepThis = ((v3P-bounds[j]) .dot(n[i]))) > btScalar(0.0) ) + { + v3P = v3P - n[i]*fSepThis; + bFound = true; + } + } + + // + + if ( bFound ) + { + bounds[0] = boundsVec[0]; + bounds[1] = boundsVec[1]; + + normal = (prel - v3P).normalize(); + pointOnBox = v3P + normal*margins; + v3PointOnSphere = prel - normal*fRadius; + + if ( ((v3PointOnSphere - pointOnBox) .dot (normal)) > btScalar(0.0) ) + { + return btScalar(1.0); + } + + // transform back in world space + tmp = m44T( pointOnBox); + pointOnBox = tmp; + tmp = m44T( v3PointOnSphere); + v3PointOnSphere = tmp; + btScalar fSeps2 = (pointOnBox-v3PointOnSphere).length2(); + + //if this fails, fallback into deeper penetration case, below + if (fSeps2 > SIMD_EPSILON) + { + fSep = - btSqrt(fSeps2); + normal = (pointOnBox-v3PointOnSphere); + normal *= btScalar(1.)/fSep; + } + + return fSep; + } + + ////////////////////////////////////////////////// + // Deep penetration case + + fPenetration = getSpherePenetration( boxObj,pointOnBox, v3PointOnSphere, sphereCenter, fRadius,bounds[0],bounds[1] ); + + bounds[0] = boundsVec[0]; + bounds[1] = boundsVec[1]; + + if ( fPenetration <= btScalar(0.0) ) + return (fPenetration-margins); + else + return btScalar(1.0); +} + +btScalar btSphereBoxCollisionAlgorithm::getSpherePenetration( btCollisionObject* boxObj,btVector3& pointOnBox, btVector3& v3PointOnSphere, const btVector3& sphereCenter, btScalar fRadius, const btVector3& aabbMin, const btVector3& aabbMax) +{ + + btVector3 bounds[2]; + + bounds[0] = aabbMin; + bounds[1] = aabbMax; + + btVector3 p0, tmp, prel, n[6], normal; + btScalar fSep = btScalar(-10000000.0), fSepThis; + + // set p0 and normal to a default value to shup up GCC + p0.setValue(btScalar(0.), btScalar(0.), btScalar(0.)); + normal.setValue(btScalar(0.), btScalar(0.), btScalar(0.)); + + n[0].setValue( btScalar(-1.0), btScalar(0.0), btScalar(0.0) ); + n[1].setValue( btScalar(0.0), btScalar(-1.0), btScalar(0.0) ); + n[2].setValue( btScalar(0.0), btScalar(0.0), btScalar(-1.0) ); + n[3].setValue( btScalar(1.0), btScalar(0.0), btScalar(0.0) ); + n[4].setValue( btScalar(0.0), btScalar(1.0), btScalar(0.0) ); + n[5].setValue( btScalar(0.0), btScalar(0.0), btScalar(1.0) ); + + const btTransform& m44T = boxObj->getWorldTransform(); + + // convert point in local space + prel = m44T.invXform( sphereCenter); + + /////////// + + for (int i=0;i<6;i++) + { + int j = i<3 ? 0:1; + if ( (fSepThis = ((prel-bounds[j]) .dot( n[i]))-fRadius) > btScalar(0.0) ) return btScalar(1.0); + if ( fSepThis > fSep ) + { + p0 = bounds[j]; normal = (btVector3&)n[i]; + fSep = fSepThis; + } + } + + pointOnBox = prel - normal*(normal.dot((prel-p0))); + v3PointOnSphere = pointOnBox + normal*fSep; + + // transform back in world space + tmp = m44T( pointOnBox); + pointOnBox = tmp; + tmp = m44T( v3PointOnSphere); v3PointOnSphere = tmp; + normal = (pointOnBox-v3PointOnSphere).normalize(); + + return fSep; + +} + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h new file mode 100644 index 00000000000..47111d1c4af --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h @@ -0,0 +1,75 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SPHERE_BOX_COLLISION_ALGORITHM_H +#define SPHERE_BOX_COLLISION_ALGORITHM_H + +#include "btActivatingCollisionAlgorithm.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" +class btPersistentManifold; +#include "btCollisionDispatcher.h" + +#include "LinearMath/btVector3.h" + +/// btSphereBoxCollisionAlgorithm provides sphere-box collision detection. +/// Other features are frame-coherency (persistent data) and collision response. +class btSphereBoxCollisionAlgorithm : public btActivatingCollisionAlgorithm +{ + bool m_ownManifold; + btPersistentManifold* m_manifoldPtr; + bool m_isSwapped; + +public: + + btSphereBoxCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* col0,btCollisionObject* col1, bool isSwapped); + + virtual ~btSphereBoxCollisionAlgorithm(); + + virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual void getAllContactManifolds(btManifoldArray& manifoldArray) + { + if (m_manifoldPtr && m_ownManifold) + { + manifoldArray.push_back(m_manifoldPtr); + } + } + + btScalar getSphereDistance( btCollisionObject* boxObj,btVector3& v3PointOnBox, btVector3& v3PointOnSphere, const btVector3& v3SphereCenter, btScalar fRadius ); + + btScalar getSpherePenetration( btCollisionObject* boxObj, btVector3& v3PointOnBox, btVector3& v3PointOnSphere, const btVector3& v3SphereCenter, btScalar fRadius, const btVector3& aabbMin, const btVector3& aabbMax); + + struct CreateFunc :public btCollisionAlgorithmCreateFunc + { + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) + { + void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSphereBoxCollisionAlgorithm)); + if (!m_swapped) + { + return new(mem) btSphereBoxCollisionAlgorithm(0,ci,body0,body1,false); + } else + { + return new(mem) btSphereBoxCollisionAlgorithm(0,ci,body0,body1,true); + } + } + }; + +}; + +#endif //SPHERE_BOX_COLLISION_ALGORITHM_H + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp new file mode 100644 index 00000000000..5c4e78fe518 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp @@ -0,0 +1,105 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btSphereSphereCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" +#include "BulletCollision/CollisionShapes/btSphereShape.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" + +btSphereSphereCollisionAlgorithm::btSphereSphereCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* col0,btCollisionObject* col1) +: btActivatingCollisionAlgorithm(ci,col0,col1), +m_ownManifold(false), +m_manifoldPtr(mf) +{ + if (!m_manifoldPtr) + { + m_manifoldPtr = m_dispatcher->getNewManifold(col0,col1); + m_ownManifold = true; + } +} + +btSphereSphereCollisionAlgorithm::~btSphereSphereCollisionAlgorithm() +{ + if (m_ownManifold) + { + if (m_manifoldPtr) + m_dispatcher->releaseManifold(m_manifoldPtr); + } +} + +void btSphereSphereCollisionAlgorithm::processCollision (btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + (void)dispatchInfo; + + if (!m_manifoldPtr) + return; + + resultOut->setPersistentManifold(m_manifoldPtr); + + btSphereShape* sphere0 = (btSphereShape*)col0->getCollisionShape(); + btSphereShape* sphere1 = (btSphereShape*)col1->getCollisionShape(); + + btVector3 diff = col0->getWorldTransform().getOrigin()- col1->getWorldTransform().getOrigin(); + btScalar len = diff.length(); + btScalar radius0 = sphere0->getRadius(); + btScalar radius1 = sphere1->getRadius(); + +#ifdef CLEAR_MANIFOLD + m_manifoldPtr->clearManifold(); //don't do this, it disables warmstarting +#endif + + ///iff distance positive, don't generate a new contact + if ( len > (radius0+radius1)) + { +#ifndef CLEAR_MANIFOLD + resultOut->refreshContactPoints(); +#endif //CLEAR_MANIFOLD + return; + } + ///distance (negative means penetration) + btScalar dist = len - (radius0+radius1); + + btVector3 normalOnSurfaceB(1,0,0); + if (len > SIMD_EPSILON) + { + normalOnSurfaceB = diff / len; + } + + ///point on A (worldspace) + ///btVector3 pos0 = col0->getWorldTransform().getOrigin() - radius0 * normalOnSurfaceB; + ///point on B (worldspace) + btVector3 pos1 = col1->getWorldTransform().getOrigin() + radius1* normalOnSurfaceB; + + /// report a contact. internally this will be kept persistent, and contact reduction is done + + + resultOut->addContactPoint(normalOnSurfaceB,pos1,dist); + +#ifndef CLEAR_MANIFOLD + resultOut->refreshContactPoints(); +#endif //CLEAR_MANIFOLD + +} + +btScalar btSphereSphereCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + (void)col0; + (void)col1; + (void)dispatchInfo; + (void)resultOut; + + //not yet + return btScalar(1.); +} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h new file mode 100644 index 00000000000..7d07512ca66 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h @@ -0,0 +1,66 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SPHERE_SPHERE_COLLISION_ALGORITHM_H +#define SPHERE_SPHERE_COLLISION_ALGORITHM_H + +#include "btActivatingCollisionAlgorithm.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" +#include "btCollisionDispatcher.h" + +class btPersistentManifold; + +/// btSphereSphereCollisionAlgorithm provides sphere-sphere collision detection. +/// Other features are frame-coherency (persistent data) and collision response. +/// Also provides the most basic sample for custom/user btCollisionAlgorithm +class btSphereSphereCollisionAlgorithm : public btActivatingCollisionAlgorithm +{ + bool m_ownManifold; + btPersistentManifold* m_manifoldPtr; + +public: + btSphereSphereCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1); + + btSphereSphereCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci) + : btActivatingCollisionAlgorithm(ci) {} + + virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual void getAllContactManifolds(btManifoldArray& manifoldArray) + { + if (m_manifoldPtr && m_ownManifold) + { + manifoldArray.push_back(m_manifoldPtr); + } + } + + virtual ~btSphereSphereCollisionAlgorithm(); + + struct CreateFunc :public btCollisionAlgorithmCreateFunc + { + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) + { + void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSphereSphereCollisionAlgorithm)); + return new(mem) btSphereSphereCollisionAlgorithm(0,ci,body0,body1); + } + }; + +}; + +#endif //SPHERE_SPHERE_COLLISION_ALGORITHM_H + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp new file mode 100644 index 00000000000..c327c3ff72a --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp @@ -0,0 +1,84 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btSphereTriangleCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" +#include "BulletCollision/CollisionShapes/btSphereShape.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "SphereTriangleDetector.h" + + +btSphereTriangleCollisionAlgorithm::btSphereTriangleCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* col0,btCollisionObject* col1,bool swapped) +: btActivatingCollisionAlgorithm(ci,col0,col1), +m_ownManifold(false), +m_manifoldPtr(mf), +m_swapped(swapped) +{ + if (!m_manifoldPtr) + { + m_manifoldPtr = m_dispatcher->getNewManifold(col0,col1); + m_ownManifold = true; + } +} + +btSphereTriangleCollisionAlgorithm::~btSphereTriangleCollisionAlgorithm() +{ + if (m_ownManifold) + { + if (m_manifoldPtr) + m_dispatcher->releaseManifold(m_manifoldPtr); + } +} + +void btSphereTriangleCollisionAlgorithm::processCollision (btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + if (!m_manifoldPtr) + return; + + btCollisionObject* sphereObj = m_swapped? col1 : col0; + btCollisionObject* triObj = m_swapped? col0 : col1; + + btSphereShape* sphere = (btSphereShape*)sphereObj->getCollisionShape(); + btTriangleShape* triangle = (btTriangleShape*)triObj->getCollisionShape(); + + /// report a contact. internally this will be kept persistent, and contact reduction is done + resultOut->setPersistentManifold(m_manifoldPtr); + SphereTriangleDetector detector(sphere,triangle, m_manifoldPtr->getContactBreakingThreshold()); + + btDiscreteCollisionDetectorInterface::ClosestPointInput input; + input.m_maximumDistanceSquared = btScalar(BT_LARGE_FLOAT);///@todo: tighter bounds + input.m_transformA = sphereObj->getWorldTransform(); + input.m_transformB = triObj->getWorldTransform(); + + bool swapResults = m_swapped; + + detector.getClosestPoints(input,*resultOut,dispatchInfo.m_debugDraw,swapResults); + + if (m_ownManifold) + resultOut->refreshContactPoints(); + +} + +btScalar btSphereTriangleCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + (void)resultOut; + (void)dispatchInfo; + (void)col0; + (void)col1; + + //not yet + return btScalar(1.); +} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h new file mode 100644 index 00000000000..606c3635ae9 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h @@ -0,0 +1,69 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SPHERE_TRIANGLE_COLLISION_ALGORITHM_H +#define SPHERE_TRIANGLE_COLLISION_ALGORITHM_H + +#include "btActivatingCollisionAlgorithm.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" +class btPersistentManifold; +#include "btCollisionDispatcher.h" + +/// btSphereSphereCollisionAlgorithm provides sphere-sphere collision detection. +/// Other features are frame-coherency (persistent data) and collision response. +/// Also provides the most basic sample for custom/user btCollisionAlgorithm +class btSphereTriangleCollisionAlgorithm : public btActivatingCollisionAlgorithm +{ + bool m_ownManifold; + btPersistentManifold* m_manifoldPtr; + bool m_swapped; + +public: + btSphereTriangleCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,bool swapped); + + btSphereTriangleCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci) + : btActivatingCollisionAlgorithm(ci) {} + + virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual void getAllContactManifolds(btManifoldArray& manifoldArray) + { + if (m_manifoldPtr && m_ownManifold) + { + manifoldArray.push_back(m_manifoldPtr); + } + } + + virtual ~btSphereTriangleCollisionAlgorithm(); + + struct CreateFunc :public btCollisionAlgorithmCreateFunc + { + + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) + { + + void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSphereTriangleCollisionAlgorithm)); + + return new(mem) btSphereTriangleCollisionAlgorithm(ci.m_manifold,ci,body0,body1,m_swapped); + } + }; + +}; + +#endif //SPHERE_TRIANGLE_COLLISION_ALGORITHM_H + diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btUnionFind.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btUnionFind.cpp new file mode 100644 index 00000000000..c561df06109 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionDispatch/btUnionFind.cpp @@ -0,0 +1,81 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btUnionFind.h" + + + +btUnionFind::~btUnionFind() +{ + Free(); + +} + +btUnionFind::btUnionFind() +{ + +} + +void btUnionFind::allocate(int N) +{ + m_elements.resize(N); +} +void btUnionFind::Free() +{ + m_elements.clear(); +} + + +void btUnionFind::reset(int N) +{ + allocate(N); + + for (int i = 0; i < N; i++) + { + m_elements[i].m_id = i; m_elements[i].m_sz = 1; + } +} + + +class btUnionFindElementSortPredicate +{ + public: + + bool operator() ( const btElement& lhs, const btElement& rhs ) + { + return lhs.m_id < rhs.m_id; + } +}; + +///this is a special operation, destroying the content of btUnionFind. +///it sorts the elements, based on island id, in order to make it easy to iterate over islands +void btUnionFind::sortIslands() +{ + + //first store the original body index, and islandId + int numElements = m_elements.size(); + + for (int i=0;i m_elements; + + public: + + btUnionFind(); + ~btUnionFind(); + + + //this is a special operation, destroying the content of btUnionFind. + //it sorts the elements, based on island id, in order to make it easy to iterate over islands + void sortIslands(); + + void reset(int N); + + SIMD_FORCE_INLINE int getNumElements() const + { + return int(m_elements.size()); + } + SIMD_FORCE_INLINE bool isRoot(int x) const + { + return (x == m_elements[x].m_id); + } + + btElement& getElement(int index) + { + return m_elements[index]; + } + const btElement& getElement(int index) const + { + return m_elements[index]; + } + + void allocate(int N); + void Free(); + + + + + int find(int p, int q) + { + return (find(p) == find(q)); + } + + void unite(int p, int q) + { + int i = find(p), j = find(q); + if (i == j) + return; + +#ifndef USE_PATH_COMPRESSION + //weighted quick union, this keeps the 'trees' balanced, and keeps performance of unite O( log(n) ) + if (m_elements[i].m_sz < m_elements[j].m_sz) + { + m_elements[i].m_id = j; m_elements[j].m_sz += m_elements[i].m_sz; + } + else + { + m_elements[j].m_id = i; m_elements[i].m_sz += m_elements[j].m_sz; + } +#else + m_elements[i].m_id = j; m_elements[j].m_sz += m_elements[i].m_sz; +#endif //USE_PATH_COMPRESSION + } + + int find(int x) + { + //btAssert(x < m_N); + //btAssert(x >= 0); + + while (x != m_elements[x].m_id) + { + //not really a reason not to use path compression, and it flattens the trees/improves find performance dramatically + + #ifdef USE_PATH_COMPRESSION + const btElement* elementPtr = &m_elements[m_elements[x].m_id]; + m_elements[x].m_id = elementPtr->m_id; + x = elementPtr->m_id; + #else// + x = m_elements[x].m_id; + #endif + //btAssert(x < m_N); + //btAssert(x >= 0); + + } + return x; + } + + + }; + + +#endif //UNION_FIND_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btBox2dShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btBox2dShape.cpp new file mode 100644 index 00000000000..ecce028c2e6 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btBox2dShape.cpp @@ -0,0 +1,42 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btBox2dShape.h" + + +//{ + + +void btBox2dShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const +{ + btTransformAabb(getHalfExtentsWithoutMargin(),getMargin(),t,aabbMin,aabbMax); +} + + +void btBox2dShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const +{ + //btScalar margin = btScalar(0.); + btVector3 halfExtents = getHalfExtentsWithMargin(); + + btScalar lx=btScalar(2.)*(halfExtents.x()); + btScalar ly=btScalar(2.)*(halfExtents.y()); + btScalar lz=btScalar(2.)*(halfExtents.z()); + + inertia.setValue(mass/(btScalar(12.0)) * (ly*ly + lz*lz), + mass/(btScalar(12.0)) * (lx*lx + lz*lz), + mass/(btScalar(12.0)) * (lx*lx + ly*ly)); + +} + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btBox2dShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btBox2dShape.h new file mode 100644 index 00000000000..fc032069c03 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btBox2dShape.h @@ -0,0 +1,363 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef OBB_BOX_2D_SHAPE_H +#define OBB_BOX_2D_SHAPE_H + +#include "BulletCollision/CollisionShapes/btPolyhedralConvexShape.h" +#include "BulletCollision/CollisionShapes/btCollisionMargin.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "LinearMath/btVector3.h" +#include "LinearMath/btMinMax.h" + +///The btBox2dShape is a box primitive around the origin, its sides axis aligned with length specified by half extents, in local shape coordinates. When used as part of a btCollisionObject or btRigidBody it will be an oriented box in world space. +class btBox2dShape: public btPolyhedralConvexShape +{ + + //btVector3 m_boxHalfExtents1; //use m_implicitShapeDimensions instead + + btVector3 m_centroid; + btVector3 m_vertices[4]; + btVector3 m_normals[4]; + +public: + + btVector3 getHalfExtentsWithMargin() const + { + btVector3 halfExtents = getHalfExtentsWithoutMargin(); + btVector3 margin(getMargin(),getMargin(),getMargin()); + halfExtents += margin; + return halfExtents; + } + + const btVector3& getHalfExtentsWithoutMargin() const + { + return m_implicitShapeDimensions;//changed in Bullet 2.63: assume the scaling and margin are included + } + + + virtual btVector3 localGetSupportingVertex(const btVector3& vec) const + { + btVector3 halfExtents = getHalfExtentsWithoutMargin(); + btVector3 margin(getMargin(),getMargin(),getMargin()); + halfExtents += margin; + + return btVector3(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()), + btFsels(vec.y(), halfExtents.y(), -halfExtents.y()), + btFsels(vec.z(), halfExtents.z(), -halfExtents.z())); + } + + SIMD_FORCE_INLINE btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const + { + const btVector3& halfExtents = getHalfExtentsWithoutMargin(); + + return btVector3(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()), + btFsels(vec.y(), halfExtents.y(), -halfExtents.y()), + btFsels(vec.z(), halfExtents.z(), -halfExtents.z())); + } + + virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const + { + const btVector3& halfExtents = getHalfExtentsWithoutMargin(); + + for (int i=0;i>1)) - halfExtents.y() * ((i&2)>>1), + halfExtents.z() * (1-((i&4)>>2)) - halfExtents.z() * ((i&4)>>2)); + } + + + virtual void getPlaneEquation(btVector4& plane,int i) const + { + btVector3 halfExtents = getHalfExtentsWithoutMargin(); + + switch (i) + { + case 0: + plane.setValue(btScalar(1.),btScalar(0.),btScalar(0.),-halfExtents.x()); + break; + case 1: + plane.setValue(btScalar(-1.),btScalar(0.),btScalar(0.),-halfExtents.x()); + break; + case 2: + plane.setValue(btScalar(0.),btScalar(1.),btScalar(0.),-halfExtents.y()); + break; + case 3: + plane.setValue(btScalar(0.),btScalar(-1.),btScalar(0.),-halfExtents.y()); + break; + case 4: + plane.setValue(btScalar(0.),btScalar(0.),btScalar(1.),-halfExtents.z()); + break; + case 5: + plane.setValue(btScalar(0.),btScalar(0.),btScalar(-1.),-halfExtents.z()); + break; + default: + btAssert(0); + } + } + + + virtual void getEdge(int i,btVector3& pa,btVector3& pb) const + //virtual void getEdge(int i,Edge& edge) const + { + int edgeVert0 = 0; + int edgeVert1 = 0; + + switch (i) + { + case 0: + edgeVert0 = 0; + edgeVert1 = 1; + break; + case 1: + edgeVert0 = 0; + edgeVert1 = 2; + break; + case 2: + edgeVert0 = 1; + edgeVert1 = 3; + + break; + case 3: + edgeVert0 = 2; + edgeVert1 = 3; + break; + case 4: + edgeVert0 = 0; + edgeVert1 = 4; + break; + case 5: + edgeVert0 = 1; + edgeVert1 = 5; + + break; + case 6: + edgeVert0 = 2; + edgeVert1 = 6; + break; + case 7: + edgeVert0 = 3; + edgeVert1 = 7; + break; + case 8: + edgeVert0 = 4; + edgeVert1 = 5; + break; + case 9: + edgeVert0 = 4; + edgeVert1 = 6; + break; + case 10: + edgeVert0 = 5; + edgeVert1 = 7; + break; + case 11: + edgeVert0 = 6; + edgeVert1 = 7; + break; + default: + btAssert(0); + + } + + getVertex(edgeVert0,pa ); + getVertex(edgeVert1,pb ); + } + + + + + + virtual bool isInside(const btVector3& pt,btScalar tolerance) const + { + btVector3 halfExtents = getHalfExtentsWithoutMargin(); + + //btScalar minDist = 2*tolerance; + + bool result = (pt.x() <= (halfExtents.x()+tolerance)) && + (pt.x() >= (-halfExtents.x()-tolerance)) && + (pt.y() <= (halfExtents.y()+tolerance)) && + (pt.y() >= (-halfExtents.y()-tolerance)) && + (pt.z() <= (halfExtents.z()+tolerance)) && + (pt.z() >= (-halfExtents.z()-tolerance)); + + return result; + } + + + //debugging + virtual const char* getName()const + { + return "Box2d"; + } + + virtual int getNumPreferredPenetrationDirections() const + { + return 6; + } + + virtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const + { + switch (index) + { + case 0: + penetrationVector.setValue(btScalar(1.),btScalar(0.),btScalar(0.)); + break; + case 1: + penetrationVector.setValue(btScalar(-1.),btScalar(0.),btScalar(0.)); + break; + case 2: + penetrationVector.setValue(btScalar(0.),btScalar(1.),btScalar(0.)); + break; + case 3: + penetrationVector.setValue(btScalar(0.),btScalar(-1.),btScalar(0.)); + break; + case 4: + penetrationVector.setValue(btScalar(0.),btScalar(0.),btScalar(1.)); + break; + case 5: + penetrationVector.setValue(btScalar(0.),btScalar(0.),btScalar(-1.)); + break; + default: + btAssert(0); + } + } + +}; + +#endif //OBB_BOX_2D_SHAPE_H + + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btBoxShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btBoxShape.cpp new file mode 100644 index 00000000000..c6644efbef3 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btBoxShape.cpp @@ -0,0 +1,41 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ +#include "btBoxShape.h" + + +//{ + + +void btBoxShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const +{ + btTransformAabb(getHalfExtentsWithoutMargin(),getMargin(),t,aabbMin,aabbMax); +} + + +void btBoxShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const +{ + //btScalar margin = btScalar(0.); + btVector3 halfExtents = getHalfExtentsWithMargin(); + + btScalar lx=btScalar(2.)*(halfExtents.x()); + btScalar ly=btScalar(2.)*(halfExtents.y()); + btScalar lz=btScalar(2.)*(halfExtents.z()); + + inertia.setValue(mass/(btScalar(12.0)) * (ly*ly + lz*lz), + mass/(btScalar(12.0)) * (lx*lx + lz*lz), + mass/(btScalar(12.0)) * (lx*lx + ly*ly)); + +} + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btBoxShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btBoxShape.h new file mode 100644 index 00000000000..b405efc8e3c --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btBoxShape.h @@ -0,0 +1,318 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef OBB_BOX_MINKOWSKI_H +#define OBB_BOX_MINKOWSKI_H + +#include "btPolyhedralConvexShape.h" +#include "btCollisionMargin.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "LinearMath/btVector3.h" +#include "LinearMath/btMinMax.h" + +///The btBoxShape is a box primitive around the origin, its sides axis aligned with length specified by half extents, in local shape coordinates. When used as part of a btCollisionObject or btRigidBody it will be an oriented box in world space. +class btBoxShape: public btPolyhedralConvexShape +{ + + //btVector3 m_boxHalfExtents1; //use m_implicitShapeDimensions instead + + +public: + + btVector3 getHalfExtentsWithMargin() const + { + btVector3 halfExtents = getHalfExtentsWithoutMargin(); + btVector3 margin(getMargin(),getMargin(),getMargin()); + halfExtents += margin; + return halfExtents; + } + + const btVector3& getHalfExtentsWithoutMargin() const + { + return m_implicitShapeDimensions;//scaling is included, margin is not + } + + + virtual btVector3 localGetSupportingVertex(const btVector3& vec) const + { + btVector3 halfExtents = getHalfExtentsWithoutMargin(); + btVector3 margin(getMargin(),getMargin(),getMargin()); + halfExtents += margin; + + return btVector3(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()), + btFsels(vec.y(), halfExtents.y(), -halfExtents.y()), + btFsels(vec.z(), halfExtents.z(), -halfExtents.z())); + } + + SIMD_FORCE_INLINE btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const + { + const btVector3& halfExtents = getHalfExtentsWithoutMargin(); + + return btVector3(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()), + btFsels(vec.y(), halfExtents.y(), -halfExtents.y()), + btFsels(vec.z(), halfExtents.z(), -halfExtents.z())); + } + + virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const + { + const btVector3& halfExtents = getHalfExtentsWithoutMargin(); + + for (int i=0;i>1)) - halfExtents.y() * ((i&2)>>1), + halfExtents.z() * (1-((i&4)>>2)) - halfExtents.z() * ((i&4)>>2)); + } + + + virtual void getPlaneEquation(btVector4& plane,int i) const + { + btVector3 halfExtents = getHalfExtentsWithoutMargin(); + + switch (i) + { + case 0: + plane.setValue(btScalar(1.),btScalar(0.),btScalar(0.),-halfExtents.x()); + break; + case 1: + plane.setValue(btScalar(-1.),btScalar(0.),btScalar(0.),-halfExtents.x()); + break; + case 2: + plane.setValue(btScalar(0.),btScalar(1.),btScalar(0.),-halfExtents.y()); + break; + case 3: + plane.setValue(btScalar(0.),btScalar(-1.),btScalar(0.),-halfExtents.y()); + break; + case 4: + plane.setValue(btScalar(0.),btScalar(0.),btScalar(1.),-halfExtents.z()); + break; + case 5: + plane.setValue(btScalar(0.),btScalar(0.),btScalar(-1.),-halfExtents.z()); + break; + default: + btAssert(0); + } + } + + + virtual void getEdge(int i,btVector3& pa,btVector3& pb) const + //virtual void getEdge(int i,Edge& edge) const + { + int edgeVert0 = 0; + int edgeVert1 = 0; + + switch (i) + { + case 0: + edgeVert0 = 0; + edgeVert1 = 1; + break; + case 1: + edgeVert0 = 0; + edgeVert1 = 2; + break; + case 2: + edgeVert0 = 1; + edgeVert1 = 3; + + break; + case 3: + edgeVert0 = 2; + edgeVert1 = 3; + break; + case 4: + edgeVert0 = 0; + edgeVert1 = 4; + break; + case 5: + edgeVert0 = 1; + edgeVert1 = 5; + + break; + case 6: + edgeVert0 = 2; + edgeVert1 = 6; + break; + case 7: + edgeVert0 = 3; + edgeVert1 = 7; + break; + case 8: + edgeVert0 = 4; + edgeVert1 = 5; + break; + case 9: + edgeVert0 = 4; + edgeVert1 = 6; + break; + case 10: + edgeVert0 = 5; + edgeVert1 = 7; + break; + case 11: + edgeVert0 = 6; + edgeVert1 = 7; + break; + default: + btAssert(0); + + } + + getVertex(edgeVert0,pa ); + getVertex(edgeVert1,pb ); + } + + + + + + virtual bool isInside(const btVector3& pt,btScalar tolerance) const + { + btVector3 halfExtents = getHalfExtentsWithoutMargin(); + + //btScalar minDist = 2*tolerance; + + bool result = (pt.x() <= (halfExtents.x()+tolerance)) && + (pt.x() >= (-halfExtents.x()-tolerance)) && + (pt.y() <= (halfExtents.y()+tolerance)) && + (pt.y() >= (-halfExtents.y()-tolerance)) && + (pt.z() <= (halfExtents.z()+tolerance)) && + (pt.z() >= (-halfExtents.z()-tolerance)); + + return result; + } + + + //debugging + virtual const char* getName()const + { + return "Box"; + } + + virtual int getNumPreferredPenetrationDirections() const + { + return 6; + } + + virtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const + { + switch (index) + { + case 0: + penetrationVector.setValue(btScalar(1.),btScalar(0.),btScalar(0.)); + break; + case 1: + penetrationVector.setValue(btScalar(-1.),btScalar(0.),btScalar(0.)); + break; + case 2: + penetrationVector.setValue(btScalar(0.),btScalar(1.),btScalar(0.)); + break; + case 3: + penetrationVector.setValue(btScalar(0.),btScalar(-1.),btScalar(0.)); + break; + case 4: + penetrationVector.setValue(btScalar(0.),btScalar(0.),btScalar(1.)); + break; + case 5: + penetrationVector.setValue(btScalar(0.),btScalar(0.),btScalar(-1.)); + break; + default: + btAssert(0); + } + } + +}; + + +#endif //OBB_BOX_MINKOWSKI_H + + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp new file mode 100644 index 00000000000..b71ee03d042 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp @@ -0,0 +1,466 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +//#define DISABLE_BVH + +#include "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h" +#include "BulletCollision/CollisionShapes/btOptimizedBvh.h" +#include "LinearMath/btSerializer.h" + +///Bvh Concave triangle mesh is a static-triangle mesh shape with Bounding Volume Hierarchy optimization. +///Uses an interface to access the triangles to allow for sharing graphics/physics triangles. +btBvhTriangleMeshShape::btBvhTriangleMeshShape(btStridingMeshInterface* meshInterface, bool useQuantizedAabbCompression, bool buildBvh) +:btTriangleMeshShape(meshInterface), +m_bvh(0), +m_triangleInfoMap(0), +m_useQuantizedAabbCompression(useQuantizedAabbCompression), +m_ownsBvh(false) +{ + m_shapeType = TRIANGLE_MESH_SHAPE_PROXYTYPE; + //construct bvh from meshInterface +#ifndef DISABLE_BVH + + if (buildBvh) + { + buildOptimizedBvh(); + } + +#endif //DISABLE_BVH + +} + +btBvhTriangleMeshShape::btBvhTriangleMeshShape(btStridingMeshInterface* meshInterface, bool useQuantizedAabbCompression,const btVector3& bvhAabbMin,const btVector3& bvhAabbMax,bool buildBvh) +:btTriangleMeshShape(meshInterface), +m_bvh(0), +m_triangleInfoMap(0), +m_useQuantizedAabbCompression(useQuantizedAabbCompression), +m_ownsBvh(false) +{ + m_shapeType = TRIANGLE_MESH_SHAPE_PROXYTYPE; + //construct bvh from meshInterface +#ifndef DISABLE_BVH + + if (buildBvh) + { + void* mem = btAlignedAlloc(sizeof(btOptimizedBvh),16); + m_bvh = new (mem) btOptimizedBvh(); + + m_bvh->build(meshInterface,m_useQuantizedAabbCompression,bvhAabbMin,bvhAabbMax); + m_ownsBvh = true; + } + +#endif //DISABLE_BVH + +} + +void btBvhTriangleMeshShape::partialRefitTree(const btVector3& aabbMin,const btVector3& aabbMax) +{ + m_bvh->refitPartial( m_meshInterface,aabbMin,aabbMax ); + + m_localAabbMin.setMin(aabbMin); + m_localAabbMax.setMax(aabbMax); +} + + +void btBvhTriangleMeshShape::refitTree(const btVector3& aabbMin,const btVector3& aabbMax) +{ + m_bvh->refit( m_meshInterface, aabbMin,aabbMax ); + + recalcLocalAabb(); +} + +btBvhTriangleMeshShape::~btBvhTriangleMeshShape() +{ + if (m_ownsBvh) + { + m_bvh->~btOptimizedBvh(); + btAlignedFree(m_bvh); + } +} + +void btBvhTriangleMeshShape::performRaycast (btTriangleCallback* callback, const btVector3& raySource, const btVector3& rayTarget) +{ + struct MyNodeOverlapCallback : public btNodeOverlapCallback + { + btStridingMeshInterface* m_meshInterface; + btTriangleCallback* m_callback; + + MyNodeOverlapCallback(btTriangleCallback* callback,btStridingMeshInterface* meshInterface) + :m_meshInterface(meshInterface), + m_callback(callback) + { + } + + virtual void processNode(int nodeSubPart, int nodeTriangleIndex) + { + btVector3 m_triangle[3]; + const unsigned char *vertexbase; + int numverts; + PHY_ScalarType type; + int stride; + const unsigned char *indexbase; + int indexstride; + int numfaces; + PHY_ScalarType indicestype; + + m_meshInterface->getLockedReadOnlyVertexIndexBase( + &vertexbase, + numverts, + type, + stride, + &indexbase, + indexstride, + numfaces, + indicestype, + nodeSubPart); + + unsigned int* gfxbase = (unsigned int*)(indexbase+nodeTriangleIndex*indexstride); + btAssert(indicestype==PHY_INTEGER||indicestype==PHY_SHORT); + + const btVector3& meshScaling = m_meshInterface->getScaling(); + for (int j=2;j>=0;j--) + { + int graphicsindex = indicestype==PHY_SHORT?((unsigned short*)gfxbase)[j]:gfxbase[j]; + + if (type == PHY_FLOAT) + { + float* graphicsbase = (float*)(vertexbase+graphicsindex*stride); + + m_triangle[j] = btVector3(graphicsbase[0]*meshScaling.getX(),graphicsbase[1]*meshScaling.getY(),graphicsbase[2]*meshScaling.getZ()); + } + else + { + double* graphicsbase = (double*)(vertexbase+graphicsindex*stride); + + m_triangle[j] = btVector3(btScalar(graphicsbase[0])*meshScaling.getX(),btScalar(graphicsbase[1])*meshScaling.getY(),btScalar(graphicsbase[2])*meshScaling.getZ()); + } + } + + /* Perform ray vs. triangle collision here */ + m_callback->processTriangle(m_triangle,nodeSubPart,nodeTriangleIndex); + m_meshInterface->unLockReadOnlyVertexBase(nodeSubPart); + } + }; + + MyNodeOverlapCallback myNodeCallback(callback,m_meshInterface); + + m_bvh->reportRayOverlappingNodex(&myNodeCallback,raySource,rayTarget); +} + +void btBvhTriangleMeshShape::performConvexcast (btTriangleCallback* callback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin, const btVector3& aabbMax) +{ + struct MyNodeOverlapCallback : public btNodeOverlapCallback + { + btStridingMeshInterface* m_meshInterface; + btTriangleCallback* m_callback; + + MyNodeOverlapCallback(btTriangleCallback* callback,btStridingMeshInterface* meshInterface) + :m_meshInterface(meshInterface), + m_callback(callback) + { + } + + virtual void processNode(int nodeSubPart, int nodeTriangleIndex) + { + btVector3 m_triangle[3]; + const unsigned char *vertexbase; + int numverts; + PHY_ScalarType type; + int stride; + const unsigned char *indexbase; + int indexstride; + int numfaces; + PHY_ScalarType indicestype; + + m_meshInterface->getLockedReadOnlyVertexIndexBase( + &vertexbase, + numverts, + type, + stride, + &indexbase, + indexstride, + numfaces, + indicestype, + nodeSubPart); + + unsigned int* gfxbase = (unsigned int*)(indexbase+nodeTriangleIndex*indexstride); + btAssert(indicestype==PHY_INTEGER||indicestype==PHY_SHORT); + + const btVector3& meshScaling = m_meshInterface->getScaling(); + for (int j=2;j>=0;j--) + { + int graphicsindex = indicestype==PHY_SHORT?((unsigned short*)gfxbase)[j]:gfxbase[j]; + + if (type == PHY_FLOAT) + { + float* graphicsbase = (float*)(vertexbase+graphicsindex*stride); + + m_triangle[j] = btVector3(graphicsbase[0]*meshScaling.getX(),graphicsbase[1]*meshScaling.getY(),graphicsbase[2]*meshScaling.getZ()); + } + else + { + double* graphicsbase = (double*)(vertexbase+graphicsindex*stride); + + m_triangle[j] = btVector3(btScalar(graphicsbase[0])*meshScaling.getX(),btScalar(graphicsbase[1])*meshScaling.getY(),btScalar(graphicsbase[2])*meshScaling.getZ()); + } + } + + /* Perform ray vs. triangle collision here */ + m_callback->processTriangle(m_triangle,nodeSubPart,nodeTriangleIndex); + m_meshInterface->unLockReadOnlyVertexBase(nodeSubPart); + } + }; + + MyNodeOverlapCallback myNodeCallback(callback,m_meshInterface); + + m_bvh->reportBoxCastOverlappingNodex (&myNodeCallback, raySource, rayTarget, aabbMin, aabbMax); +} + +//perform bvh tree traversal and report overlapping triangles to 'callback' +void btBvhTriangleMeshShape::processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const +{ + +#ifdef DISABLE_BVH + //brute force traverse all triangles + btTriangleMeshShape::processAllTriangles(callback,aabbMin,aabbMax); +#else + + //first get all the nodes + + + struct MyNodeOverlapCallback : public btNodeOverlapCallback + { + btStridingMeshInterface* m_meshInterface; + btTriangleCallback* m_callback; + btVector3 m_triangle[3]; + + + MyNodeOverlapCallback(btTriangleCallback* callback,btStridingMeshInterface* meshInterface) + :m_meshInterface(meshInterface), + m_callback(callback) + { + } + + virtual void processNode(int nodeSubPart, int nodeTriangleIndex) + { + const unsigned char *vertexbase; + int numverts; + PHY_ScalarType type; + int stride; + const unsigned char *indexbase; + int indexstride; + int numfaces; + PHY_ScalarType indicestype; + + + m_meshInterface->getLockedReadOnlyVertexIndexBase( + &vertexbase, + numverts, + type, + stride, + &indexbase, + indexstride, + numfaces, + indicestype, + nodeSubPart); + + unsigned int* gfxbase = (unsigned int*)(indexbase+nodeTriangleIndex*indexstride); + btAssert(indicestype==PHY_INTEGER||indicestype==PHY_SHORT); + + const btVector3& meshScaling = m_meshInterface->getScaling(); + for (int j=2;j>=0;j--) + { + + int graphicsindex = indicestype==PHY_SHORT?((unsigned short*)gfxbase)[j]:gfxbase[j]; + + +#ifdef DEBUG_TRIANGLE_MESH + printf("%d ,",graphicsindex); +#endif //DEBUG_TRIANGLE_MESH + if (type == PHY_FLOAT) + { + float* graphicsbase = (float*)(vertexbase+graphicsindex*stride); + + m_triangle[j] = btVector3( + graphicsbase[0]*meshScaling.getX(), + graphicsbase[1]*meshScaling.getY(), + graphicsbase[2]*meshScaling.getZ()); + } + else + { + double* graphicsbase = (double*)(vertexbase+graphicsindex*stride); + + m_triangle[j] = btVector3( + btScalar(graphicsbase[0])*meshScaling.getX(), + btScalar(graphicsbase[1])*meshScaling.getY(), + btScalar(graphicsbase[2])*meshScaling.getZ()); + } +#ifdef DEBUG_TRIANGLE_MESH + printf("triangle vertices:%f,%f,%f\n",triangle[j].x(),triangle[j].y(),triangle[j].z()); +#endif //DEBUG_TRIANGLE_MESH + } + + m_callback->processTriangle(m_triangle,nodeSubPart,nodeTriangleIndex); + m_meshInterface->unLockReadOnlyVertexBase(nodeSubPart); + } + + }; + + MyNodeOverlapCallback myNodeCallback(callback,m_meshInterface); + + m_bvh->reportAabbOverlappingNodex(&myNodeCallback,aabbMin,aabbMax); + + +#endif//DISABLE_BVH + + +} + +void btBvhTriangleMeshShape::setLocalScaling(const btVector3& scaling) +{ + if ((getLocalScaling() -scaling).length2() > SIMD_EPSILON) + { + btTriangleMeshShape::setLocalScaling(scaling); + buildOptimizedBvh(); + } +} + +void btBvhTriangleMeshShape::buildOptimizedBvh() +{ + if (m_ownsBvh) + { + m_bvh->~btOptimizedBvh(); + btAlignedFree(m_bvh); + } + ///m_localAabbMin/m_localAabbMax is already re-calculated in btTriangleMeshShape. We could just scale aabb, but this needs some more work + void* mem = btAlignedAlloc(sizeof(btOptimizedBvh),16); + m_bvh = new(mem) btOptimizedBvh(); + //rebuild the bvh... + m_bvh->build(m_meshInterface,m_useQuantizedAabbCompression,m_localAabbMin,m_localAabbMax); + m_ownsBvh = true; +} + +void btBvhTriangleMeshShape::setOptimizedBvh(btOptimizedBvh* bvh, const btVector3& scaling) +{ + btAssert(!m_bvh); + btAssert(!m_ownsBvh); + + m_bvh = bvh; + m_ownsBvh = false; + // update the scaling without rebuilding the bvh + if ((getLocalScaling() -scaling).length2() > SIMD_EPSILON) + { + btTriangleMeshShape::setLocalScaling(scaling); + } +} + + + +///fills the dataBuffer and returns the struct name (and 0 on failure) +const char* btBvhTriangleMeshShape::serialize(void* dataBuffer, btSerializer* serializer) const +{ + btTriangleMeshShapeData* trimeshData = (btTriangleMeshShapeData*) dataBuffer; + + btCollisionShape::serialize(&trimeshData->m_collisionShapeData,serializer); + + m_meshInterface->serialize(&trimeshData->m_meshInterface, serializer); + + trimeshData->m_collisionMargin = float(m_collisionMargin); + + + + if (m_bvh && !(serializer->getSerializationFlags()&BT_SERIALIZE_NO_BVH)) + { + void* chunk = serializer->findPointer(m_bvh); + if (chunk) + { +#ifdef BT_USE_DOUBLE_PRECISION + trimeshData->m_quantizedDoubleBvh = (btQuantizedBvhData*)chunk; + trimeshData->m_quantizedFloatBvh = 0; +#else + trimeshData->m_quantizedFloatBvh = (btQuantizedBvhData*)chunk; + trimeshData->m_quantizedDoubleBvh= 0; +#endif //BT_USE_DOUBLE_PRECISION + } else + { + +#ifdef BT_USE_DOUBLE_PRECISION + trimeshData->m_quantizedDoubleBvh = (btQuantizedBvhData*)serializer->getUniquePointer(m_bvh); + trimeshData->m_quantizedFloatBvh = 0; +#else + trimeshData->m_quantizedFloatBvh = (btQuantizedBvhData*)serializer->getUniquePointer(m_bvh); + trimeshData->m_quantizedDoubleBvh= 0; +#endif //BT_USE_DOUBLE_PRECISION + + int sz = m_bvh->calculateSerializeBufferSizeNew(); + btChunk* chunk = serializer->allocate(sz,1); + const char* structType = m_bvh->serialize(chunk->m_oldPtr, serializer); + serializer->finalizeChunk(chunk,structType,BT_QUANTIZED_BVH_CODE,m_bvh); + } + } else + { + trimeshData->m_quantizedFloatBvh = 0; + trimeshData->m_quantizedDoubleBvh = 0; + } + + + + if (m_triangleInfoMap && !(serializer->getSerializationFlags()&BT_SERIALIZE_NO_TRIANGLEINFOMAP)) + { + void* chunk = serializer->findPointer(m_triangleInfoMap); + if (chunk) + { + trimeshData->m_triangleInfoMap = (btTriangleInfoMapData*)chunk; + } else + { + trimeshData->m_triangleInfoMap = (btTriangleInfoMapData*)serializer->getUniquePointer(m_triangleInfoMap); + int sz = m_triangleInfoMap->calculateSerializeBufferSize(); + btChunk* chunk = serializer->allocate(sz,1); + const char* structType = m_triangleInfoMap->serialize(chunk->m_oldPtr, serializer); + serializer->finalizeChunk(chunk,structType,BT_TRIANLGE_INFO_MAP,m_triangleInfoMap); + } + } else + { + trimeshData->m_triangleInfoMap = 0; + } + + return "btTriangleMeshShapeData"; +} + +void btBvhTriangleMeshShape::serializeSingleBvh(btSerializer* serializer) const +{ + if (m_bvh) + { + int len = m_bvh->calculateSerializeBufferSizeNew(); //make sure not to use calculateSerializeBufferSize because it is used for in-place + btChunk* chunk = serializer->allocate(len,1); + const char* structType = m_bvh->serialize(chunk->m_oldPtr, serializer); + serializer->finalizeChunk(chunk,structType,BT_QUANTIZED_BVH_CODE,(void*)m_bvh); + } +} + +void btBvhTriangleMeshShape::serializeSingleTriangleInfoMap(btSerializer* serializer) const +{ + if (m_triangleInfoMap) + { + int len = m_triangleInfoMap->calculateSerializeBufferSize(); + btChunk* chunk = serializer->allocate(len,1); + const char* structType = m_triangleInfoMap->serialize(chunk->m_oldPtr, serializer); + serializer->finalizeChunk(chunk,structType,BT_TRIANLGE_INFO_MAP,(void*)m_triangleInfoMap); + } +} + + + + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h new file mode 100644 index 00000000000..e4d4386ae50 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h @@ -0,0 +1,139 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BVH_TRIANGLE_MESH_SHAPE_H +#define BVH_TRIANGLE_MESH_SHAPE_H + +#include "btTriangleMeshShape.h" +#include "btOptimizedBvh.h" +#include "LinearMath/btAlignedAllocator.h" +#include "btTriangleInfoMap.h" + +///The btBvhTriangleMeshShape is a static-triangle mesh shape with several optimizations, such as bounding volume hierarchy and cache friendly traversal for PlayStation 3 Cell SPU. It is recommended to enable useQuantizedAabbCompression for better memory usage. +///It takes a triangle mesh as input, for example a btTriangleMesh or btTriangleIndexVertexArray. The btBvhTriangleMeshShape class allows for triangle mesh deformations by a refit or partialRefit method. +///Instead of building the bounding volume hierarchy acceleration structure, it is also possible to serialize (save) and deserialize (load) the structure from disk. +///See Demos\ConcaveDemo\ConcavePhysicsDemo.cpp for an example. +ATTRIBUTE_ALIGNED16(class) btBvhTriangleMeshShape : public btTriangleMeshShape +{ + + btOptimizedBvh* m_bvh; + btTriangleInfoMap* m_triangleInfoMap; + + bool m_useQuantizedAabbCompression; + bool m_ownsBvh; + bool m_pad[11];////need padding due to alignment + +public: + + BT_DECLARE_ALIGNED_ALLOCATOR(); + + btBvhTriangleMeshShape() : btTriangleMeshShape(0),m_bvh(0),m_triangleInfoMap(0),m_ownsBvh(false) {m_shapeType = TRIANGLE_MESH_SHAPE_PROXYTYPE;}; + btBvhTriangleMeshShape(btStridingMeshInterface* meshInterface, bool useQuantizedAabbCompression, bool buildBvh = true); + + ///optionally pass in a larger bvh aabb, used for quantization. This allows for deformations within this aabb + btBvhTriangleMeshShape(btStridingMeshInterface* meshInterface, bool useQuantizedAabbCompression,const btVector3& bvhAabbMin,const btVector3& bvhAabbMax, bool buildBvh = true); + + virtual ~btBvhTriangleMeshShape(); + + bool getOwnsBvh () const + { + return m_ownsBvh; + } + + + + void performRaycast (btTriangleCallback* callback, const btVector3& raySource, const btVector3& rayTarget); + void performConvexcast (btTriangleCallback* callback, const btVector3& boxSource, const btVector3& boxTarget, const btVector3& boxMin, const btVector3& boxMax); + + virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const; + + void refitTree(const btVector3& aabbMin,const btVector3& aabbMax); + + ///for a fast incremental refit of parts of the tree. Note: the entire AABB of the tree will become more conservative, it never shrinks + void partialRefitTree(const btVector3& aabbMin,const btVector3& aabbMax); + + //debugging + virtual const char* getName()const {return "BVHTRIANGLEMESH";} + + + virtual void setLocalScaling(const btVector3& scaling); + + btOptimizedBvh* getOptimizedBvh() + { + return m_bvh; + } + + void setOptimizedBvh(btOptimizedBvh* bvh, const btVector3& localScaling=btVector3(1,1,1)); + + void buildOptimizedBvh(); + + bool usesQuantizedAabbCompression() const + { + return m_useQuantizedAabbCompression; + } + + void setTriangleInfoMap(btTriangleInfoMap* triangleInfoMap) + { + m_triangleInfoMap = triangleInfoMap; + } + + const btTriangleInfoMap* getTriangleInfoMap() const + { + return m_triangleInfoMap; + } + + btTriangleInfoMap* getTriangleInfoMap() + { + return m_triangleInfoMap; + } + + virtual int calculateSerializeBufferSize() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; + + virtual void serializeSingleBvh(btSerializer* serializer) const; + + virtual void serializeSingleTriangleInfoMap(btSerializer* serializer) const; + +}; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btTriangleMeshShapeData +{ + btCollisionShapeData m_collisionShapeData; + + btStridingMeshInterfaceData m_meshInterface; + + btQuantizedBvhFloatData *m_quantizedFloatBvh; + btQuantizedBvhDoubleData *m_quantizedDoubleBvh; + + btTriangleInfoMapData *m_triangleInfoMap; + + float m_collisionMargin; + + char m_pad3[4]; + +}; + + +SIMD_FORCE_INLINE int btBvhTriangleMeshShape::calculateSerializeBufferSize() const +{ + return sizeof(btTriangleMeshShapeData); +} + + + +#endif //BVH_TRIANGLE_MESH_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btCapsuleShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btCapsuleShape.cpp new file mode 100644 index 00000000000..2faa11d4360 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btCapsuleShape.cpp @@ -0,0 +1,171 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btCapsuleShape.h" + +#include "BulletCollision/CollisionShapes/btCollisionMargin.h" +#include "LinearMath/btQuaternion.h" + +btCapsuleShape::btCapsuleShape(btScalar radius, btScalar height) : btConvexInternalShape () +{ + m_shapeType = CAPSULE_SHAPE_PROXYTYPE; + m_upAxis = 1; + m_implicitShapeDimensions.setValue(radius,0.5f*height,radius); +} + + + btVector3 btCapsuleShape::localGetSupportingVertexWithoutMargin(const btVector3& vec0)const +{ + + btVector3 supVec(0,0,0); + + btScalar maxDot(btScalar(-BT_LARGE_FLOAT)); + + btVector3 vec = vec0; + btScalar lenSqr = vec.length2(); + if (lenSqr < btScalar(0.0001)) + { + vec.setValue(1,0,0); + } else + { + btScalar rlen = btScalar(1.) / btSqrt(lenSqr ); + vec *= rlen; + } + + btVector3 vtx; + btScalar newDot; + + btScalar radius = getRadius(); + + + { + btVector3 pos(0,0,0); + pos[getUpAxis()] = getHalfHeight(); + + vtx = pos +vec*m_localScaling*(radius) - vec * getMargin(); + newDot = vec.dot(vtx); + if (newDot > maxDot) + { + maxDot = newDot; + supVec = vtx; + } + } + { + btVector3 pos(0,0,0); + pos[getUpAxis()] = -getHalfHeight(); + + vtx = pos +vec*m_localScaling*(radius) - vec * getMargin(); + newDot = vec.dot(vtx); + if (newDot > maxDot) + { + maxDot = newDot; + supVec = vtx; + } + } + + return supVec; + +} + + void btCapsuleShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const +{ + + + btScalar radius = getRadius(); + + for (int j=0;j maxDot) + { + maxDot = newDot; + supportVerticesOut[j] = vtx; + } + } + { + btVector3 pos(0,0,0); + pos[getUpAxis()] = -getHalfHeight(); + vtx = pos +vec*m_localScaling*(radius) - vec * getMargin(); + newDot = vec.dot(vtx); + if (newDot > maxDot) + { + maxDot = newDot; + supportVerticesOut[j] = vtx; + } + } + + } +} + + +void btCapsuleShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const +{ + //as an approximation, take the inertia of the box that bounds the spheres + + btTransform ident; + ident.setIdentity(); + + + btScalar radius = getRadius(); + + btVector3 halfExtents(radius,radius,radius); + halfExtents[getUpAxis()]+=getHalfHeight(); + + btScalar margin = CONVEX_DISTANCE_MARGIN; + + btScalar lx=btScalar(2.)*(halfExtents[0]+margin); + btScalar ly=btScalar(2.)*(halfExtents[1]+margin); + btScalar lz=btScalar(2.)*(halfExtents[2]+margin); + const btScalar x2 = lx*lx; + const btScalar y2 = ly*ly; + const btScalar z2 = lz*lz; + const btScalar scaledmass = mass * btScalar(.08333333); + + inertia[0] = scaledmass * (y2+z2); + inertia[1] = scaledmass * (x2+z2); + inertia[2] = scaledmass * (x2+y2); + +} + +btCapsuleShapeX::btCapsuleShapeX(btScalar radius,btScalar height) +{ + m_upAxis = 0; + m_implicitShapeDimensions.setValue(0.5f*height, radius,radius); +} + + + + + + +btCapsuleShapeZ::btCapsuleShapeZ(btScalar radius,btScalar height) +{ + m_upAxis = 2; + m_implicitShapeDimensions.setValue(radius,radius,0.5f*height); +} + + + + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btCapsuleShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btCapsuleShape.h new file mode 100644 index 00000000000..ab763abf808 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btCapsuleShape.h @@ -0,0 +1,173 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_CAPSULE_SHAPE_H +#define BT_CAPSULE_SHAPE_H + +#include "btConvexInternalShape.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types + + +///The btCapsuleShape represents a capsule around the Y axis, there is also the btCapsuleShapeX aligned around the X axis and btCapsuleShapeZ around the Z axis. +///The total height is height+2*radius, so the height is just the height between the center of each 'sphere' of the capsule caps. +///The btCapsuleShape is a convex hull of two spheres. The btMultiSphereShape is a more general collision shape that takes the convex hull of multiple sphere, so it can also represent a capsule when just using two spheres. +class btCapsuleShape : public btConvexInternalShape +{ +protected: + int m_upAxis; + +protected: + ///only used for btCapsuleShapeZ and btCapsuleShapeX subclasses. + btCapsuleShape() : btConvexInternalShape() {m_shapeType = CAPSULE_SHAPE_PROXYTYPE;}; + +public: + btCapsuleShape(btScalar radius,btScalar height); + + ///CollisionShape Interface + virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; + + /// btConvexShape Interface + virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const; + + virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const; + + virtual void setMargin(btScalar collisionMargin) + { + //correct the m_implicitShapeDimensions for the margin + btVector3 oldMargin(getMargin(),getMargin(),getMargin()); + btVector3 implicitShapeDimensionsWithMargin = m_implicitShapeDimensions+oldMargin; + + btConvexInternalShape::setMargin(collisionMargin); + btVector3 newMargin(getMargin(),getMargin(),getMargin()); + m_implicitShapeDimensions = implicitShapeDimensionsWithMargin - newMargin; + + } + + virtual void getAabb (const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const + { + btVector3 halfExtents(getRadius(),getRadius(),getRadius()); + halfExtents[m_upAxis] = getRadius() + getHalfHeight(); + halfExtents += btVector3(getMargin(),getMargin(),getMargin()); + btMatrix3x3 abs_b = t.getBasis().absolute(); + btVector3 center = t.getOrigin(); + btVector3 extent = btVector3(abs_b[0].dot(halfExtents),abs_b[1].dot(halfExtents),abs_b[2].dot(halfExtents)); + + aabbMin = center - extent; + aabbMax = center + extent; + } + + virtual const char* getName()const + { + return "CapsuleShape"; + } + + int getUpAxis() const + { + return m_upAxis; + } + + btScalar getRadius() const + { + int radiusAxis = (m_upAxis+2)%3; + return m_implicitShapeDimensions[radiusAxis]; + } + + btScalar getHalfHeight() const + { + return m_implicitShapeDimensions[m_upAxis]; + } + + virtual void setLocalScaling(const btVector3& scaling) + { + btVector3 oldMargin(getMargin(),getMargin(),getMargin()); + btVector3 implicitShapeDimensionsWithMargin = m_implicitShapeDimensions+oldMargin; + btVector3 unScaledImplicitShapeDimensionsWithMargin = implicitShapeDimensionsWithMargin / m_localScaling; + + btConvexInternalShape::setLocalScaling(scaling); + + m_implicitShapeDimensions = (unScaledImplicitShapeDimensionsWithMargin * m_localScaling) - oldMargin; + + } + + virtual int calculateSerializeBufferSize() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; + + +}; + +///btCapsuleShapeX represents a capsule around the Z axis +///the total height is height+2*radius, so the height is just the height between the center of each 'sphere' of the capsule caps. +class btCapsuleShapeX : public btCapsuleShape +{ +public: + + btCapsuleShapeX(btScalar radius,btScalar height); + + //debugging + virtual const char* getName()const + { + return "CapsuleX"; + } + + + +}; + +///btCapsuleShapeZ represents a capsule around the Z axis +///the total height is height+2*radius, so the height is just the height between the center of each 'sphere' of the capsule caps. +class btCapsuleShapeZ : public btCapsuleShape +{ +public: + btCapsuleShapeZ(btScalar radius,btScalar height); + + //debugging + virtual const char* getName()const + { + return "CapsuleZ"; + } + + +}; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btCapsuleShapeData +{ + btConvexInternalShapeData m_convexInternalShapeData; + + int m_upAxis; + + char m_padding[4]; +}; + +SIMD_FORCE_INLINE int btCapsuleShape::calculateSerializeBufferSize() const +{ + return sizeof(btCapsuleShapeData); +} + + ///fills the dataBuffer and returns the struct name (and 0 on failure) +SIMD_FORCE_INLINE const char* btCapsuleShape::serialize(void* dataBuffer, btSerializer* serializer) const +{ + btCapsuleShapeData* shapeData = (btCapsuleShapeData*) dataBuffer; + + btConvexInternalShape::serialize(&shapeData->m_convexInternalShapeData,serializer); + + shapeData->m_upAxis = m_upAxis; + + return "btCapsuleShapeData"; +} + +#endif //BT_CAPSULE_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btCollisionMargin.h b/extern/bullet2/BulletCollision/CollisionShapes/btCollisionMargin.h new file mode 100644 index 00000000000..18fd026041f --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btCollisionMargin.h @@ -0,0 +1,26 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef COLLISION_MARGIN_H +#define COLLISION_MARGIN_H + +//used by Gjk and some other algorithms + +#define CONVEX_DISTANCE_MARGIN btScalar(0.04)// btScalar(0.1)//;//btScalar(0.01) + + + +#endif //COLLISION_MARGIN_H + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btCollisionShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btCollisionShape.cpp new file mode 100644 index 00000000000..39ee21cad73 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btCollisionShape.cpp @@ -0,0 +1,119 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ +#include "BulletCollision/CollisionShapes/btCollisionShape.h" +#include "LinearMath/btSerializer.h" + +/* + Make sure this dummy function never changes so that it + can be used by probes that are checking whether the + library is actually installed. +*/ +extern "C" +{ +void btBulletCollisionProbe (); + +void btBulletCollisionProbe () {} +} + + + +void btCollisionShape::getBoundingSphere(btVector3& center,btScalar& radius) const +{ + btTransform tr; + tr.setIdentity(); + btVector3 aabbMin,aabbMax; + + getAabb(tr,aabbMin,aabbMax); + + radius = (aabbMax-aabbMin).length()*btScalar(0.5); + center = (aabbMin+aabbMax)*btScalar(0.5); +} + + +btScalar btCollisionShape::getContactBreakingThreshold(btScalar defaultContactThreshold) const +{ + return getAngularMotionDisc() * defaultContactThreshold; +} + +btScalar btCollisionShape::getAngularMotionDisc() const +{ + ///@todo cache this value, to improve performance + btVector3 center; + btScalar disc; + getBoundingSphere(center,disc); + disc += (center).length(); + return disc; +} + +void btCollisionShape::calculateTemporalAabb(const btTransform& curTrans,const btVector3& linvel,const btVector3& angvel,btScalar timeStep, btVector3& temporalAabbMin,btVector3& temporalAabbMax) const +{ + //start with static aabb + getAabb(curTrans,temporalAabbMin,temporalAabbMax); + + btScalar temporalAabbMaxx = temporalAabbMax.getX(); + btScalar temporalAabbMaxy = temporalAabbMax.getY(); + btScalar temporalAabbMaxz = temporalAabbMax.getZ(); + btScalar temporalAabbMinx = temporalAabbMin.getX(); + btScalar temporalAabbMiny = temporalAabbMin.getY(); + btScalar temporalAabbMinz = temporalAabbMin.getZ(); + + // add linear motion + btVector3 linMotion = linvel*timeStep; + ///@todo: simd would have a vector max/min operation, instead of per-element access + if (linMotion.x() > btScalar(0.)) + temporalAabbMaxx += linMotion.x(); + else + temporalAabbMinx += linMotion.x(); + if (linMotion.y() > btScalar(0.)) + temporalAabbMaxy += linMotion.y(); + else + temporalAabbMiny += linMotion.y(); + if (linMotion.z() > btScalar(0.)) + temporalAabbMaxz += linMotion.z(); + else + temporalAabbMinz += linMotion.z(); + + //add conservative angular motion + btScalar angularMotion = angvel.length() * getAngularMotionDisc() * timeStep; + btVector3 angularMotion3d(angularMotion,angularMotion,angularMotion); + temporalAabbMin = btVector3(temporalAabbMinx,temporalAabbMiny,temporalAabbMinz); + temporalAabbMax = btVector3(temporalAabbMaxx,temporalAabbMaxy,temporalAabbMaxz); + + temporalAabbMin -= angularMotion3d; + temporalAabbMax += angularMotion3d; +} + +///fills the dataBuffer and returns the struct name (and 0 on failure) +const char* btCollisionShape::serialize(void* dataBuffer, btSerializer* serializer) const +{ + btCollisionShapeData* shapeData = (btCollisionShapeData*) dataBuffer; + char* name = (char*) serializer->findNameForPointer(this); + shapeData->m_name = (char*)serializer->getUniquePointer(name); + if (shapeData->m_name) + { + serializer->serializeName(name); + } + shapeData->m_shapeType = m_shapeType; + //shapeData->m_padding//?? + return "btCollisionShapeData"; +} + +void btCollisionShape::serializeSingleShape(btSerializer* serializer) const +{ + int len = calculateSerializeBufferSize(); + btChunk* chunk = serializer->allocate(len,1); + const char* structType = serialize(chunk->m_oldPtr, serializer); + serializer->finalizeChunk(chunk,structType,BT_SHAPE_CODE,(void*)this); +} \ No newline at end of file diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btCollisionShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btCollisionShape.h new file mode 100644 index 00000000000..f32bd736a99 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btCollisionShape.h @@ -0,0 +1,150 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef COLLISION_SHAPE_H +#define COLLISION_SHAPE_H + +#include "LinearMath/btTransform.h" +#include "LinearMath/btVector3.h" +#include "LinearMath/btMatrix3x3.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" //for the shape types +class btSerializer; + + +///The btCollisionShape class provides an interface for collision shapes that can be shared among btCollisionObjects. +class btCollisionShape +{ +protected: + int m_shapeType; + void* m_userPointer; + +public: + + btCollisionShape() : m_shapeType (INVALID_SHAPE_PROXYTYPE), m_userPointer(0) + { + } + + virtual ~btCollisionShape() + { + } + + ///getAabb returns the axis aligned bounding box in the coordinate frame of the given transform t. + virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const =0; + + virtual void getBoundingSphere(btVector3& center,btScalar& radius) const; + + ///getAngularMotionDisc returns the maximus radius needed for Conservative Advancement to handle time-of-impact with rotations. + virtual btScalar getAngularMotionDisc() const; + + virtual btScalar getContactBreakingThreshold(btScalar defaultContactThresholdFactor) const; + + + ///calculateTemporalAabb calculates the enclosing aabb for the moving object over interval [0..timeStep) + ///result is conservative + void calculateTemporalAabb(const btTransform& curTrans,const btVector3& linvel,const btVector3& angvel,btScalar timeStep, btVector3& temporalAabbMin,btVector3& temporalAabbMax) const; + + + + SIMD_FORCE_INLINE bool isPolyhedral() const + { + return btBroadphaseProxy::isPolyhedral(getShapeType()); + } + + SIMD_FORCE_INLINE bool isConvex2d() const + { + return btBroadphaseProxy::isConvex2d(getShapeType()); + } + + SIMD_FORCE_INLINE bool isConvex() const + { + return btBroadphaseProxy::isConvex(getShapeType()); + } + SIMD_FORCE_INLINE bool isNonMoving() const + { + return btBroadphaseProxy::isNonMoving(getShapeType()); + } + SIMD_FORCE_INLINE bool isConcave() const + { + return btBroadphaseProxy::isConcave(getShapeType()); + } + SIMD_FORCE_INLINE bool isCompound() const + { + return btBroadphaseProxy::isCompound(getShapeType()); + } + + SIMD_FORCE_INLINE bool isSoftBody() const + { + return btBroadphaseProxy::isSoftBody(getShapeType()); + } + + ///isInfinite is used to catch simulation error (aabb check) + SIMD_FORCE_INLINE bool isInfinite() const + { + return btBroadphaseProxy::isInfinite(getShapeType()); + } + +#ifndef __SPU__ + virtual void setLocalScaling(const btVector3& scaling) =0; + virtual const btVector3& getLocalScaling() const =0; + virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const = 0; + + +//debugging support + virtual const char* getName()const =0 ; +#endif //__SPU__ + + + int getShapeType() const { return m_shapeType; } + virtual void setMargin(btScalar margin) = 0; + virtual btScalar getMargin() const = 0; + + + ///optional user data pointer + void setUserPointer(void* userPtr) + { + m_userPointer = userPtr; + } + + void* getUserPointer() const + { + return m_userPointer; + } + + virtual int calculateSerializeBufferSize() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; + + virtual void serializeSingleShape(btSerializer* serializer) const; + +}; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btCollisionShapeData +{ + char *m_name; + int m_shapeType; + char m_padding[4]; +}; + +SIMD_FORCE_INLINE int btCollisionShape::calculateSerializeBufferSize() const +{ + return sizeof(btCollisionShapeData); +} + + + +#endif //COLLISION_SHAPE_H + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btCompoundShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btCompoundShape.cpp new file mode 100644 index 00000000000..36906a75f34 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btCompoundShape.cpp @@ -0,0 +1,323 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btCompoundShape.h" +#include "btCollisionShape.h" +#include "BulletCollision/BroadphaseCollision/btDbvt.h" +#include "LinearMath/btSerializer.h" + +btCompoundShape::btCompoundShape(bool enableDynamicAabbTree) +: m_localAabbMin(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)), +m_localAabbMax(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)), +m_dynamicAabbTree(0), +m_updateRevision(1), +m_collisionMargin(btScalar(0.)), +m_localScaling(btScalar(1.),btScalar(1.),btScalar(1.)) +{ + m_shapeType = COMPOUND_SHAPE_PROXYTYPE; + + if (enableDynamicAabbTree) + { + void* mem = btAlignedAlloc(sizeof(btDbvt),16); + m_dynamicAabbTree = new(mem) btDbvt(); + btAssert(mem==m_dynamicAabbTree); + } +} + + +btCompoundShape::~btCompoundShape() +{ + if (m_dynamicAabbTree) + { + m_dynamicAabbTree->~btDbvt(); + btAlignedFree(m_dynamicAabbTree); + } +} + +void btCompoundShape::addChildShape(const btTransform& localTransform,btCollisionShape* shape) +{ + m_updateRevision++; + //m_childTransforms.push_back(localTransform); + //m_childShapes.push_back(shape); + btCompoundShapeChild child; + child.m_transform = localTransform; + child.m_childShape = shape; + child.m_childShapeType = shape->getShapeType(); + child.m_childMargin = shape->getMargin(); + + + //extend the local aabbMin/aabbMax + btVector3 localAabbMin,localAabbMax; + shape->getAabb(localTransform,localAabbMin,localAabbMax); + for (int i=0;i<3;i++) + { + if (m_localAabbMin[i] > localAabbMin[i]) + { + m_localAabbMin[i] = localAabbMin[i]; + } + if (m_localAabbMax[i] < localAabbMax[i]) + { + m_localAabbMax[i] = localAabbMax[i]; + } + + } + if (m_dynamicAabbTree) + { + const btDbvtVolume bounds=btDbvtVolume::FromMM(localAabbMin,localAabbMax); + int index = m_children.size(); + child.m_node = m_dynamicAabbTree->insert(bounds,(void*)index); + } + + m_children.push_back(child); + +} + +void btCompoundShape::updateChildTransform(int childIndex, const btTransform& newChildTransform) +{ + m_children[childIndex].m_transform = newChildTransform; + + if (m_dynamicAabbTree) + { + ///update the dynamic aabb tree + btVector3 localAabbMin,localAabbMax; + m_children[childIndex].m_childShape->getAabb(newChildTransform,localAabbMin,localAabbMax); + ATTRIBUTE_ALIGNED16(btDbvtVolume) bounds=btDbvtVolume::FromMM(localAabbMin,localAabbMax); + //int index = m_children.size()-1; + m_dynamicAabbTree->update(m_children[childIndex].m_node,bounds); + } + + recalculateLocalAabb(); +} + +void btCompoundShape::removeChildShapeByIndex(int childShapeIndex) +{ + m_updateRevision++; + btAssert(childShapeIndex >=0 && childShapeIndex < m_children.size()); + if (m_dynamicAabbTree) + { + m_dynamicAabbTree->remove(m_children[childShapeIndex].m_node); + } + m_children.swap(childShapeIndex,m_children.size()-1); + m_children.pop_back(); + +} + + + +void btCompoundShape::removeChildShape(btCollisionShape* shape) +{ + m_updateRevision++; + // Find the children containing the shape specified, and remove those children. + //note: there might be multiple children using the same shape! + for(int i = m_children.size()-1; i >= 0 ; i--) + { + if(m_children[i].m_childShape == shape) + { + removeChildShapeByIndex(i); + } + } + + + + recalculateLocalAabb(); +} + +void btCompoundShape::recalculateLocalAabb() +{ + // Recalculate the local aabb + // Brute force, it iterates over all the shapes left. + + m_localAabbMin = btVector3(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); + m_localAabbMax = btVector3(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); + + //extend the local aabbMin/aabbMax + for (int j = 0; j < m_children.size(); j++) + { + btVector3 localAabbMin,localAabbMax; + m_children[j].m_childShape->getAabb(m_children[j].m_transform, localAabbMin, localAabbMax); + for (int i=0;i<3;i++) + { + if (m_localAabbMin[i] > localAabbMin[i]) + m_localAabbMin[i] = localAabbMin[i]; + if (m_localAabbMax[i] < localAabbMax[i]) + m_localAabbMax[i] = localAabbMax[i]; + } + } +} + +///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version +void btCompoundShape::getAabb(const btTransform& trans,btVector3& aabbMin,btVector3& aabbMax) const +{ + btVector3 localHalfExtents = btScalar(0.5)*(m_localAabbMax-m_localAabbMin); + btVector3 localCenter = btScalar(0.5)*(m_localAabbMax+m_localAabbMin); + + //avoid an illegal AABB when there are no children + if (!m_children.size()) + { + localHalfExtents.setValue(0,0,0); + localCenter.setValue(0,0,0); + } + localHalfExtents += btVector3(getMargin(),getMargin(),getMargin()); + + + btMatrix3x3 abs_b = trans.getBasis().absolute(); + + btVector3 center = trans(localCenter); + + btVector3 extent = btVector3(abs_b[0].dot(localHalfExtents), + abs_b[1].dot(localHalfExtents), + abs_b[2].dot(localHalfExtents)); + aabbMin = center-extent; + aabbMax = center+extent; + +} + +void btCompoundShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const +{ + //approximation: take the inertia from the aabb for now + btTransform ident; + ident.setIdentity(); + btVector3 aabbMin,aabbMax; + getAabb(ident,aabbMin,aabbMax); + + btVector3 halfExtents = (aabbMax-aabbMin)*btScalar(0.5); + + btScalar lx=btScalar(2.)*(halfExtents.x()); + btScalar ly=btScalar(2.)*(halfExtents.y()); + btScalar lz=btScalar(2.)*(halfExtents.z()); + + inertia[0] = mass/(btScalar(12.0)) * (ly*ly + lz*lz); + inertia[1] = mass/(btScalar(12.0)) * (lx*lx + lz*lz); + inertia[2] = mass/(btScalar(12.0)) * (lx*lx + ly*ly); + +} + + + + +void btCompoundShape::calculatePrincipalAxisTransform(btScalar* masses, btTransform& principal, btVector3& inertia) const +{ + int n = m_children.size(); + + btScalar totalMass = 0; + btVector3 center(0, 0, 0); + int k; + + for (k = 0; k < n; k++) + { + center += m_children[k].m_transform.getOrigin() * masses[k]; + totalMass += masses[k]; + } + center /= totalMass; + principal.setOrigin(center); + + btMatrix3x3 tensor(0, 0, 0, 0, 0, 0, 0, 0, 0); + for ( k = 0; k < n; k++) + { + btVector3 i; + m_children[k].m_childShape->calculateLocalInertia(masses[k], i); + + const btTransform& t = m_children[k].m_transform; + btVector3 o = t.getOrigin() - center; + + //compute inertia tensor in coordinate system of compound shape + btMatrix3x3 j = t.getBasis().transpose(); + j[0] *= i[0]; + j[1] *= i[1]; + j[2] *= i[2]; + j = t.getBasis() * j; + + //add inertia tensor + tensor[0] += j[0]; + tensor[1] += j[1]; + tensor[2] += j[2]; + + //compute inertia tensor of pointmass at o + btScalar o2 = o.length2(); + j[0].setValue(o2, 0, 0); + j[1].setValue(0, o2, 0); + j[2].setValue(0, 0, o2); + j[0] += o * -o.x(); + j[1] += o * -o.y(); + j[2] += o * -o.z(); + + //add inertia tensor of pointmass + tensor[0] += masses[k] * j[0]; + tensor[1] += masses[k] * j[1]; + tensor[2] += masses[k] * j[2]; + } + + tensor.diagonalize(principal.getBasis(), btScalar(0.00001), 20); + inertia.setValue(tensor[0][0], tensor[1][1], tensor[2][2]); +} + + + +void btCompoundShape::setLocalScaling(const btVector3& scaling) +{ + + for(int i = 0; i < m_children.size(); i++) + { + btTransform childTrans = getChildTransform(i); + btVector3 childScale = m_children[i].m_childShape->getLocalScaling(); +// childScale = childScale * (childTrans.getBasis() * scaling); + childScale = childScale * scaling / m_localScaling; + m_children[i].m_childShape->setLocalScaling(childScale); + childTrans.setOrigin((childTrans.getOrigin())*scaling); + updateChildTransform(i, childTrans); + recalculateLocalAabb(); + } + m_localScaling = scaling; +} + + + + +///fills the dataBuffer and returns the struct name (and 0 on failure) +const char* btCompoundShape::serialize(void* dataBuffer, btSerializer* serializer) const +{ + + btCompoundShapeData* shapeData = (btCompoundShapeData*) dataBuffer; + btCollisionShape::serialize(&shapeData->m_collisionShapeData, serializer); + + shapeData->m_collisionMargin = float(m_collisionMargin); + shapeData->m_numChildShapes = m_children.size(); + shapeData->m_childShapePtr = 0; + if (shapeData->m_numChildShapes) + { + btChunk* chunk = serializer->allocate(sizeof(btCompoundShapeChildData),shapeData->m_numChildShapes); + btCompoundShapeChildData* memPtr = (btCompoundShapeChildData*)chunk->m_oldPtr; + shapeData->m_childShapePtr = (btCompoundShapeChildData*)serializer->getUniquePointer(memPtr); + + for (int i=0;im_numChildShapes;i++,memPtr++) + { + memPtr->m_childMargin = float(m_children[i].m_childMargin); + memPtr->m_childShape = (btCollisionShapeData*)serializer->getUniquePointer(m_children[i].m_childShape); + //don't serialize shapes that already have been serialized + if (!serializer->findPointer(m_children[i].m_childShape)) + { + btChunk* chunk = serializer->allocate(m_children[i].m_childShape->calculateSerializeBufferSize(),1); + const char* structType = m_children[i].m_childShape->serialize(chunk->m_oldPtr,serializer); + serializer->finalizeChunk(chunk,structType,BT_SHAPE_CODE,m_children[i].m_childShape); + } + + memPtr->m_childShapeType = m_children[i].m_childShapeType; + m_children[i].m_transform.serializeFloat(memPtr->m_transform); + } + serializer->finalizeChunk(chunk,"btCompoundShapeChildData",BT_ARRAY_CODE,chunk->m_oldPtr); + } + return "btCompoundShapeData"; +} + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btCompoundShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btCompoundShape.h new file mode 100644 index 00000000000..179bb00918c --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btCompoundShape.h @@ -0,0 +1,206 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef COMPOUND_SHAPE_H +#define COMPOUND_SHAPE_H + +#include "btCollisionShape.h" + +#include "LinearMath/btVector3.h" +#include "LinearMath/btTransform.h" +#include "LinearMath/btMatrix3x3.h" +#include "btCollisionMargin.h" +#include "LinearMath/btAlignedObjectArray.h" + +//class btOptimizedBvh; +struct btDbvt; + +ATTRIBUTE_ALIGNED16(struct) btCompoundShapeChild +{ + BT_DECLARE_ALIGNED_ALLOCATOR(); + + btTransform m_transform; + btCollisionShape* m_childShape; + int m_childShapeType; + btScalar m_childMargin; + struct btDbvtNode* m_node; +}; + +SIMD_FORCE_INLINE bool operator==(const btCompoundShapeChild& c1, const btCompoundShapeChild& c2) +{ + return ( c1.m_transform == c2.m_transform && + c1.m_childShape == c2.m_childShape && + c1.m_childShapeType == c2.m_childShapeType && + c1.m_childMargin == c2.m_childMargin ); +} + +/// The btCompoundShape allows to store multiple other btCollisionShapes +/// This allows for moving concave collision objects. This is more general then the static concave btBvhTriangleMeshShape. +/// It has an (optional) dynamic aabb tree to accelerate early rejection tests. +/// @todo: This aabb tree can also be use to speed up ray tests on btCompoundShape, see http://code.google.com/p/bullet/issues/detail?id=25 +/// Currently, removal of child shapes is only supported when disabling the aabb tree (pass 'false' in the constructor of btCompoundShape) +ATTRIBUTE_ALIGNED16(class) btCompoundShape : public btCollisionShape +{ + btAlignedObjectArray m_children; + btVector3 m_localAabbMin; + btVector3 m_localAabbMax; + + btDbvt* m_dynamicAabbTree; + + ///increment m_updateRevision when adding/removing/replacing child shapes, so that some caches can be updated + int m_updateRevision; + + btScalar m_collisionMargin; + +protected: + btVector3 m_localScaling; + +public: + BT_DECLARE_ALIGNED_ALLOCATOR(); + + btCompoundShape(bool enableDynamicAabbTree = true); + + virtual ~btCompoundShape(); + + void addChildShape(const btTransform& localTransform,btCollisionShape* shape); + + /// Remove all children shapes that contain the specified shape + virtual void removeChildShape(btCollisionShape* shape); + + void removeChildShapeByIndex(int childShapeindex); + + + int getNumChildShapes() const + { + return int (m_children.size()); + } + + btCollisionShape* getChildShape(int index) + { + return m_children[index].m_childShape; + } + const btCollisionShape* getChildShape(int index) const + { + return m_children[index].m_childShape; + } + + btTransform& getChildTransform(int index) + { + return m_children[index].m_transform; + } + const btTransform& getChildTransform(int index) const + { + return m_children[index].m_transform; + } + + ///set a new transform for a child, and update internal data structures (local aabb and dynamic tree) + void updateChildTransform(int childIndex, const btTransform& newChildTransform); + + + btCompoundShapeChild* getChildList() + { + return &m_children[0]; + } + + ///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version + virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; + + /** Re-calculate the local Aabb. Is called at the end of removeChildShapes. + Use this yourself if you modify the children or their transforms. */ + virtual void recalculateLocalAabb(); + + virtual void setLocalScaling(const btVector3& scaling); + + virtual const btVector3& getLocalScaling() const + { + return m_localScaling; + } + + virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; + + virtual void setMargin(btScalar margin) + { + m_collisionMargin = margin; + } + virtual btScalar getMargin() const + { + return m_collisionMargin; + } + virtual const char* getName()const + { + return "Compound"; + } + + + btDbvt* getDynamicAabbTree() + { + return m_dynamicAabbTree; + } + + ///computes the exact moment of inertia and the transform from the coordinate system defined by the principal axes of the moment of inertia + ///and the center of mass to the current coordinate system. "masses" points to an array of masses of the children. The resulting transform + ///"principal" has to be applied inversely to all children transforms in order for the local coordinate system of the compound + ///shape to be centered at the center of mass and to coincide with the principal axes. This also necessitates a correction of the world transform + ///of the collision object by the principal transform. + void calculatePrincipalAxisTransform(btScalar* masses, btTransform& principal, btVector3& inertia) const; + + int getUpdateRevision() const + { + return m_updateRevision; + } + + virtual int calculateSerializeBufferSize() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; + + +}; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btCompoundShapeChildData +{ + btTransformFloatData m_transform; + btCollisionShapeData *m_childShape; + int m_childShapeType; + float m_childMargin; +}; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btCompoundShapeData +{ + btCollisionShapeData m_collisionShapeData; + + btCompoundShapeChildData *m_childShapePtr; + + int m_numChildShapes; + + float m_collisionMargin; + +}; + + +SIMD_FORCE_INLINE int btCompoundShape::calculateSerializeBufferSize() const +{ + return sizeof(btCompoundShapeData); +} + + + + + + + +#endif //COMPOUND_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConcaveShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btConcaveShape.cpp new file mode 100644 index 00000000000..58ff84a5b02 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btConcaveShape.cpp @@ -0,0 +1,27 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btConcaveShape.h" + +btConcaveShape::btConcaveShape() : m_collisionMargin(btScalar(0.)) +{ + +} + +btConcaveShape::~btConcaveShape() +{ + +} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConcaveShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btConcaveShape.h new file mode 100644 index 00000000000..2a370a47c75 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btConcaveShape.h @@ -0,0 +1,60 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CONCAVE_SHAPE_H +#define CONCAVE_SHAPE_H + +#include "btCollisionShape.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types +#include "btTriangleCallback.h" + +/// PHY_ScalarType enumerates possible scalar types. +/// See the btStridingMeshInterface or btHeightfieldTerrainShape for its use +typedef enum PHY_ScalarType { + PHY_FLOAT, + PHY_DOUBLE, + PHY_INTEGER, + PHY_SHORT, + PHY_FIXEDPOINT88, + PHY_UCHAR +} PHY_ScalarType; + +///The btConcaveShape class provides an interface for non-moving (static) concave shapes. +///It has been implemented by the btStaticPlaneShape, btBvhTriangleMeshShape and btHeightfieldTerrainShape. +class btConcaveShape : public btCollisionShape +{ +protected: + btScalar m_collisionMargin; + +public: + btConcaveShape(); + + virtual ~btConcaveShape(); + + virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const = 0; + + virtual btScalar getMargin() const { + return m_collisionMargin; + } + virtual void setMargin(btScalar collisionMargin) + { + m_collisionMargin = collisionMargin; + } + + + +}; + +#endif //CONCAVE_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConeShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btConeShape.cpp new file mode 100644 index 00000000000..dfa3f941eeb --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btConeShape.cpp @@ -0,0 +1,133 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btConeShape.h" + + + +btConeShape::btConeShape (btScalar radius,btScalar height): btConvexInternalShape (), +m_radius (radius), +m_height(height) +{ + m_shapeType = CONE_SHAPE_PROXYTYPE; + setConeUpIndex(1); + btVector3 halfExtents; + m_sinAngle = (m_radius / btSqrt(m_radius * m_radius + m_height * m_height)); +} + +btConeShapeZ::btConeShapeZ (btScalar radius,btScalar height): +btConeShape(radius,height) +{ + setConeUpIndex(2); +} + +btConeShapeX::btConeShapeX (btScalar radius,btScalar height): +btConeShape(radius,height) +{ + setConeUpIndex(0); +} + +///choose upAxis index +void btConeShape::setConeUpIndex(int upIndex) +{ + switch (upIndex) + { + case 0: + m_coneIndices[0] = 1; + m_coneIndices[1] = 0; + m_coneIndices[2] = 2; + break; + case 1: + m_coneIndices[0] = 0; + m_coneIndices[1] = 1; + m_coneIndices[2] = 2; + break; + case 2: + m_coneIndices[0] = 0; + m_coneIndices[1] = 2; + m_coneIndices[2] = 1; + break; + default: + btAssert(0); + }; +} + +btVector3 btConeShape::coneLocalSupport(const btVector3& v) const +{ + + btScalar halfHeight = m_height * btScalar(0.5); + + if (v[m_coneIndices[1]] > v.length() * m_sinAngle) + { + btVector3 tmp; + + tmp[m_coneIndices[0]] = btScalar(0.); + tmp[m_coneIndices[1]] = halfHeight; + tmp[m_coneIndices[2]] = btScalar(0.); + return tmp; + } + else { + btScalar s = btSqrt(v[m_coneIndices[0]] * v[m_coneIndices[0]] + v[m_coneIndices[2]] * v[m_coneIndices[2]]); + if (s > SIMD_EPSILON) { + btScalar d = m_radius / s; + btVector3 tmp; + tmp[m_coneIndices[0]] = v[m_coneIndices[0]] * d; + tmp[m_coneIndices[1]] = -halfHeight; + tmp[m_coneIndices[2]] = v[m_coneIndices[2]] * d; + return tmp; + } + else { + btVector3 tmp; + tmp[m_coneIndices[0]] = btScalar(0.); + tmp[m_coneIndices[1]] = -halfHeight; + tmp[m_coneIndices[2]] = btScalar(0.); + return tmp; + } + } + +} + +btVector3 btConeShape::localGetSupportingVertexWithoutMargin(const btVector3& vec) const +{ + return coneLocalSupport(vec); +} + +void btConeShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const +{ + for (int i=0;ilocalGetSupportingVertexWithoutMargin(vec); +} + +void btConvex2dShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const +{ + m_childConvexShape->batchedUnitVectorGetSupportingVertexWithoutMargin(vectors,supportVerticesOut,numVectors); +} + + +btVector3 btConvex2dShape::localGetSupportingVertex(const btVector3& vec)const +{ + return m_childConvexShape->localGetSupportingVertex(vec); +} + + +void btConvex2dShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const +{ + ///this linear upscaling is not realistic, but we don't deal with large mass ratios... + m_childConvexShape->calculateLocalInertia(mass,inertia); +} + + + ///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version +void btConvex2dShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const +{ + m_childConvexShape->getAabb(t,aabbMin,aabbMax); +} + +void btConvex2dShape::getAabbSlow(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const +{ + m_childConvexShape->getAabbSlow(t,aabbMin,aabbMax); +} + +void btConvex2dShape::setLocalScaling(const btVector3& scaling) +{ + m_childConvexShape->setLocalScaling(scaling); +} + +const btVector3& btConvex2dShape::getLocalScaling() const +{ + return m_childConvexShape->getLocalScaling(); +} + +void btConvex2dShape::setMargin(btScalar margin) +{ + m_childConvexShape->setMargin(margin); +} +btScalar btConvex2dShape::getMargin() const +{ + return m_childConvexShape->getMargin(); +} + +int btConvex2dShape::getNumPreferredPenetrationDirections() const +{ + return m_childConvexShape->getNumPreferredPenetrationDirections(); +} + +void btConvex2dShape::getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const +{ + m_childConvexShape->getPreferredPenetrationDirection(index,penetrationVector); +} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvex2dShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btConvex2dShape.h new file mode 100644 index 00000000000..58166c8291a --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btConvex2dShape.h @@ -0,0 +1,80 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_CONVEX_2D_SHAPE_H +#define BT_CONVEX_2D_SHAPE_H + +#include "BulletCollision/CollisionShapes/btConvexShape.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types + +///The btConvex2dShape allows to use arbitrary convex shapes are 2d convex shapes, with the Z component assumed to be 0. +///For 2d boxes, the btBox2dShape is recommended. +class btConvex2dShape : public btConvexShape +{ + btConvexShape* m_childConvexShape; + + public: + + btConvex2dShape( btConvexShape* convexChildShape); + + virtual ~btConvex2dShape(); + + virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const; + + virtual btVector3 localGetSupportingVertex(const btVector3& vec)const; + + virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const; + + virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; + + btConvexShape* getChildShape() + { + return m_childConvexShape; + } + + const btConvexShape* getChildShape() const + { + return m_childConvexShape; + } + + virtual const char* getName()const + { + return "Convex2dShape"; + } + + + + /////////////////////////// + + + ///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version + void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; + + virtual void getAabbSlow(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; + + virtual void setLocalScaling(const btVector3& scaling) ; + virtual const btVector3& getLocalScaling() const ; + + virtual void setMargin(btScalar margin); + virtual btScalar getMargin() const; + + virtual int getNumPreferredPenetrationDirections() const; + + virtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const; + + +}; + +#endif //BT_CONVEX_2D_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexHullShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btConvexHullShape.cpp new file mode 100644 index 00000000000..2c39cabca54 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btConvexHullShape.cpp @@ -0,0 +1,223 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btConvexHullShape.h" +#include "BulletCollision/CollisionShapes/btCollisionMargin.h" + +#include "LinearMath/btQuaternion.h" +#include "LinearMath/btSerializer.h" + +btConvexHullShape ::btConvexHullShape (const btScalar* points,int numPoints,int stride) : btPolyhedralConvexAabbCachingShape () +{ + m_shapeType = CONVEX_HULL_SHAPE_PROXYTYPE; + m_unscaledPoints.resize(numPoints); + + unsigned char* pointsAddress = (unsigned char*)points; + + for (int i=0;i maxDot) + { + maxDot = newDot; + supVec = vtx; + } + } + return supVec; +} + +void btConvexHullShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const +{ + btScalar newDot; + //use 'w' component of supportVerticesOut? + { + for (int i=0;i supportVerticesOut[j][3]) + { + //WARNING: don't swap next lines, the w component would get overwritten! + supportVerticesOut[j] = vtx; + supportVerticesOut[j][3] = newDot; + } + } + } + + + +} + + + +btVector3 btConvexHullShape::localGetSupportingVertex(const btVector3& vec)const +{ + btVector3 supVertex = localGetSupportingVertexWithoutMargin(vec); + + if ( getMargin()!=btScalar(0.) ) + { + btVector3 vecnorm = vec; + if (vecnorm .length2() < (SIMD_EPSILON*SIMD_EPSILON)) + { + vecnorm.setValue(btScalar(-1.),btScalar(-1.),btScalar(-1.)); + } + vecnorm.normalize(); + supVertex+= getMargin() * vecnorm; + } + return supVertex; +} + + + + + + + + + +//currently just for debugging (drawing), perhaps future support for algebraic continuous collision detection +//Please note that you can debug-draw btConvexHullShape with the Raytracer Demo +int btConvexHullShape::getNumVertices() const +{ + return m_unscaledPoints.size(); +} + +int btConvexHullShape::getNumEdges() const +{ + return m_unscaledPoints.size(); +} + +void btConvexHullShape::getEdge(int i,btVector3& pa,btVector3& pb) const +{ + + int index0 = i%m_unscaledPoints.size(); + int index1 = (i+1)%m_unscaledPoints.size(); + pa = getScaledPoint(index0); + pb = getScaledPoint(index1); +} + +void btConvexHullShape::getVertex(int i,btVector3& vtx) const +{ + vtx = getScaledPoint(i); +} + +int btConvexHullShape::getNumPlanes() const +{ + return 0; +} + +void btConvexHullShape::getPlane(btVector3& ,btVector3& ,int ) const +{ + + btAssert(0); +} + +//not yet +bool btConvexHullShape::isInside(const btVector3& ,btScalar ) const +{ + btAssert(0); + return false; +} + +///fills the dataBuffer and returns the struct name (and 0 on failure) +const char* btConvexHullShape::serialize(void* dataBuffer, btSerializer* serializer) const +{ + //int szc = sizeof(btConvexHullShapeData); + btConvexHullShapeData* shapeData = (btConvexHullShapeData*) dataBuffer; + btConvexInternalShape::serialize(&shapeData->m_convexInternalShapeData, serializer); + + int numElem = m_unscaledPoints.size(); + shapeData->m_numUnscaledPoints = numElem; +#ifdef BT_USE_DOUBLE_PRECISION + shapeData->m_unscaledPointsFloatPtr = 0; + shapeData->m_unscaledPointsDoublePtr = numElem ? (btVector3Data*)serializer->getUniquePointer((void*)&m_unscaledPoints[0]): 0; +#else + shapeData->m_unscaledPointsFloatPtr = numElem ? (btVector3Data*)serializer->getUniquePointer((void*)&m_unscaledPoints[0]): 0; + shapeData->m_unscaledPointsDoublePtr = 0; +#endif + + if (numElem) + { + int sz = sizeof(btVector3Data); + // int sz2 = sizeof(btVector3DoubleData); + // int sz3 = sizeof(btVector3FloatData); + btChunk* chunk = serializer->allocate(sz,numElem); + btVector3Data* memPtr = (btVector3Data*)chunk->m_oldPtr; + for (int i=0;ifinalizeChunk(chunk,btVector3DataName,BT_ARRAY_CODE,(void*)&m_unscaledPoints[0]); + } + + return "btConvexHullShapeData"; +} + + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexHullShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btConvexHullShape.h new file mode 100644 index 00000000000..bf960f4df92 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btConvexHullShape.h @@ -0,0 +1,120 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CONVEX_HULL_SHAPE_H +#define CONVEX_HULL_SHAPE_H + +#include "btPolyhedralConvexShape.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types +#include "LinearMath/btAlignedObjectArray.h" + + +///The btConvexHullShape implements an implicit convex hull of an array of vertices. +///Bullet provides a general and fast collision detector for convex shapes based on GJK and EPA using localGetSupportingVertex. +ATTRIBUTE_ALIGNED16(class) btConvexHullShape : public btPolyhedralConvexAabbCachingShape +{ + btAlignedObjectArray m_unscaledPoints; + +public: + BT_DECLARE_ALIGNED_ALLOCATOR(); + + + ///this constructor optionally takes in a pointer to points. Each point is assumed to be 3 consecutive btScalar (x,y,z), the striding defines the number of bytes between each point, in memory. + ///It is easier to not pass any points in the constructor, and just add one point at a time, using addPoint. + ///btConvexHullShape make an internal copy of the points. + btConvexHullShape(const btScalar* points=0,int numPoints=0, int stride=sizeof(btVector3)); + + void addPoint(const btVector3& point); + + + btVector3* getUnscaledPoints() + { + return &m_unscaledPoints[0]; + } + + const btVector3* getUnscaledPoints() const + { + return &m_unscaledPoints[0]; + } + + ///getPoints is obsolete, please use getUnscaledPoints + const btVector3* getPoints() const + { + return getUnscaledPoints(); + } + + + + + SIMD_FORCE_INLINE btVector3 getScaledPoint(int i) const + { + return m_unscaledPoints[i] * m_localScaling; + } + + SIMD_FORCE_INLINE int getNumPoints() const + { + return m_unscaledPoints.size(); + } + + virtual btVector3 localGetSupportingVertex(const btVector3& vec)const; + virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const; + virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const; + + + + //debugging + virtual const char* getName()const {return "Convex";} + + + virtual int getNumVertices() const; + virtual int getNumEdges() const; + virtual void getEdge(int i,btVector3& pa,btVector3& pb) const; + virtual void getVertex(int i,btVector3& vtx) const; + virtual int getNumPlanes() const; + virtual void getPlane(btVector3& planeNormal,btVector3& planeSupport,int i ) const; + virtual bool isInside(const btVector3& pt,btScalar tolerance) const; + + ///in case we receive negative scaling + virtual void setLocalScaling(const btVector3& scaling); + + virtual int calculateSerializeBufferSize() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; + +}; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btConvexHullShapeData +{ + btConvexInternalShapeData m_convexInternalShapeData; + + btVector3FloatData *m_unscaledPointsFloatPtr; + btVector3DoubleData *m_unscaledPointsDoublePtr; + + int m_numUnscaledPoints; + char m_padding3[4]; + +}; + + +SIMD_FORCE_INLINE int btConvexHullShape::calculateSerializeBufferSize() const +{ + return sizeof(btConvexHullShapeData); +} + + +#endif //CONVEX_HULL_SHAPE_H + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexInternalShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btConvexInternalShape.cpp new file mode 100644 index 00000000000..083d60b1b1e --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btConvexInternalShape.cpp @@ -0,0 +1,151 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btConvexInternalShape.h" + + + +btConvexInternalShape::btConvexInternalShape() +: m_localScaling(btScalar(1.),btScalar(1.),btScalar(1.)), +m_collisionMargin(CONVEX_DISTANCE_MARGIN) +{ +} + + +void btConvexInternalShape::setLocalScaling(const btVector3& scaling) +{ + m_localScaling = scaling.absolute(); +} + + + +void btConvexInternalShape::getAabbSlow(const btTransform& trans,btVector3&minAabb,btVector3&maxAabb) const +{ +#ifndef __SPU__ + //use localGetSupportingVertexWithoutMargin? + btScalar margin = getMargin(); + for (int i=0;i<3;i++) + { + btVector3 vec(btScalar(0.),btScalar(0.),btScalar(0.)); + vec[i] = btScalar(1.); + + btVector3 sv = localGetSupportingVertex(vec*trans.getBasis()); + + btVector3 tmp = trans(sv); + maxAabb[i] = tmp[i]+margin; + vec[i] = btScalar(-1.); + tmp = trans(localGetSupportingVertex(vec*trans.getBasis())); + minAabb[i] = tmp[i]-margin; + } +#endif +} + + + +btVector3 btConvexInternalShape::localGetSupportingVertex(const btVector3& vec)const +{ +#ifndef __SPU__ + + btVector3 supVertex = localGetSupportingVertexWithoutMargin(vec); + + if ( getMargin()!=btScalar(0.) ) + { + btVector3 vecnorm = vec; + if (vecnorm .length2() < (SIMD_EPSILON*SIMD_EPSILON)) + { + vecnorm.setValue(btScalar(-1.),btScalar(-1.),btScalar(-1.)); + } + vecnorm.normalize(); + supVertex+= getMargin() * vecnorm; + } + return supVertex; + +#else + btAssert(0); + return btVector3(0,0,0); +#endif //__SPU__ + + } + + +btConvexInternalAabbCachingShape::btConvexInternalAabbCachingShape() + : btConvexInternalShape(), +m_localAabbMin(1,1,1), +m_localAabbMax(-1,-1,-1), +m_isLocalAabbValid(false) +{ +} + + +void btConvexInternalAabbCachingShape::getAabb(const btTransform& trans,btVector3& aabbMin,btVector3& aabbMax) const +{ + getNonvirtualAabb(trans,aabbMin,aabbMax,getMargin()); +} + +void btConvexInternalAabbCachingShape::setLocalScaling(const btVector3& scaling) +{ + btConvexInternalShape::setLocalScaling(scaling); + recalcLocalAabb(); +} + + +void btConvexInternalAabbCachingShape::recalcLocalAabb() +{ + m_isLocalAabbValid = true; + + #if 1 + static const btVector3 _directions[] = + { + btVector3( 1., 0., 0.), + btVector3( 0., 1., 0.), + btVector3( 0., 0., 1.), + btVector3( -1., 0., 0.), + btVector3( 0., -1., 0.), + btVector3( 0., 0., -1.) + }; + + btVector3 _supporting[] = + { + btVector3( 0., 0., 0.), + btVector3( 0., 0., 0.), + btVector3( 0., 0., 0.), + btVector3( 0., 0., 0.), + btVector3( 0., 0., 0.), + btVector3( 0., 0., 0.) + }; + + batchedUnitVectorGetSupportingVertexWithoutMargin(_directions, _supporting, 6); + + for ( int i = 0; i < 3; ++i ) + { + m_localAabbMax[i] = _supporting[i][i] + m_collisionMargin; + m_localAabbMin[i] = _supporting[i + 3][i] - m_collisionMargin; + } + + #else + + for (int i=0;i<3;i++) + { + btVector3 vec(btScalar(0.),btScalar(0.),btScalar(0.)); + vec[i] = btScalar(1.); + btVector3 tmp = localGetSupportingVertex(vec); + m_localAabbMax[i] = tmp[i]+m_collisionMargin; + vec[i] = btScalar(-1.); + tmp = localGetSupportingVertex(vec); + m_localAabbMin[i] = tmp[i]-m_collisionMargin; + } + #endif +} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexInternalShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btConvexInternalShape.h new file mode 100644 index 00000000000..12527731804 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btConvexInternalShape.h @@ -0,0 +1,202 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_CONVEX_INTERNAL_SHAPE_H +#define BT_CONVEX_INTERNAL_SHAPE_H + +#include "btConvexShape.h" +#include "LinearMath/btAabbUtil2.h" + + +///The btConvexInternalShape is an internal base class, shared by most convex shape implementations. +class btConvexInternalShape : public btConvexShape +{ + + protected: + + //local scaling. collisionMargin is not scaled ! + btVector3 m_localScaling; + + btVector3 m_implicitShapeDimensions; + + btScalar m_collisionMargin; + + btScalar m_padding; + + btConvexInternalShape(); + +public: + + + + virtual ~btConvexInternalShape() + { + + } + + virtual btVector3 localGetSupportingVertex(const btVector3& vec)const; + + const btVector3& getImplicitShapeDimensions() const + { + return m_implicitShapeDimensions; + } + + ///warning: use setImplicitShapeDimensions with care + ///changing a collision shape while the body is in the world is not recommended, + ///it is best to remove the body from the world, then make the change, and re-add it + ///alternatively flush the contact points, see documentation for 'cleanProxyFromPairs' + void setImplicitShapeDimensions(const btVector3& dimensions) + { + m_implicitShapeDimensions = dimensions; + } + + ///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version + void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const + { + getAabbSlow(t,aabbMin,aabbMax); + } + + + + virtual void getAabbSlow(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; + + + virtual void setLocalScaling(const btVector3& scaling); + virtual const btVector3& getLocalScaling() const + { + return m_localScaling; + } + + const btVector3& getLocalScalingNV() const + { + return m_localScaling; + } + + virtual void setMargin(btScalar margin) + { + m_collisionMargin = margin; + } + virtual btScalar getMargin() const + { + return m_collisionMargin; + } + + btScalar getMarginNV() const + { + return m_collisionMargin; + } + + virtual int getNumPreferredPenetrationDirections() const + { + return 0; + } + + virtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const + { + (void)penetrationVector; + (void)index; + btAssert(0); + } + + virtual int calculateSerializeBufferSize() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; + + +}; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btConvexInternalShapeData +{ + btCollisionShapeData m_collisionShapeData; + + btVector3FloatData m_localScaling; + + btVector3FloatData m_implicitShapeDimensions; + + float m_collisionMargin; + + int m_padding; + +}; + + + +SIMD_FORCE_INLINE int btConvexInternalShape::calculateSerializeBufferSize() const +{ + return sizeof(btConvexInternalShapeData); +} + +///fills the dataBuffer and returns the struct name (and 0 on failure) +SIMD_FORCE_INLINE const char* btConvexInternalShape::serialize(void* dataBuffer, btSerializer* serializer) const +{ + btConvexInternalShapeData* shapeData = (btConvexInternalShapeData*) dataBuffer; + btCollisionShape::serialize(&shapeData->m_collisionShapeData, serializer); + + m_implicitShapeDimensions.serializeFloat(shapeData->m_implicitShapeDimensions); + m_localScaling.serializeFloat(shapeData->m_localScaling); + shapeData->m_collisionMargin = float(m_collisionMargin); + + return "btConvexInternalShapeData"; +} + + + + +///btConvexInternalAabbCachingShape adds local aabb caching for convex shapes, to avoid expensive bounding box calculations +class btConvexInternalAabbCachingShape : public btConvexInternalShape +{ + btVector3 m_localAabbMin; + btVector3 m_localAabbMax; + bool m_isLocalAabbValid; + +protected: + + btConvexInternalAabbCachingShape(); + + void setCachedLocalAabb (const btVector3& aabbMin, const btVector3& aabbMax) + { + m_isLocalAabbValid = true; + m_localAabbMin = aabbMin; + m_localAabbMax = aabbMax; + } + + inline void getCachedLocalAabb (btVector3& aabbMin, btVector3& aabbMax) const + { + btAssert(m_isLocalAabbValid); + aabbMin = m_localAabbMin; + aabbMax = m_localAabbMax; + } + + inline void getNonvirtualAabb(const btTransform& trans,btVector3& aabbMin,btVector3& aabbMax, btScalar margin) const + { + + //lazy evaluation of local aabb + btAssert(m_isLocalAabbValid); + btTransformAabb(m_localAabbMin,m_localAabbMax,margin,trans,aabbMin,aabbMax); + } + +public: + + virtual void setLocalScaling(const btVector3& scaling); + + virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; + + void recalcLocalAabb(); + +}; + +#endif //BT_CONVEX_INTERNAL_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp new file mode 100644 index 00000000000..c1b155aef45 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp @@ -0,0 +1,157 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btConvexPointCloudShape.h" +#include "BulletCollision/CollisionShapes/btCollisionMargin.h" + +#include "LinearMath/btQuaternion.h" + +void btConvexPointCloudShape::setLocalScaling(const btVector3& scaling) +{ + m_localScaling = scaling; + recalcLocalAabb(); +} + +#ifndef __SPU__ +btVector3 btConvexPointCloudShape::localGetSupportingVertexWithoutMargin(const btVector3& vec0)const +{ + btVector3 supVec(btScalar(0.),btScalar(0.),btScalar(0.)); + btScalar newDot,maxDot = btScalar(-BT_LARGE_FLOAT); + + btVector3 vec = vec0; + btScalar lenSqr = vec.length2(); + if (lenSqr < btScalar(0.0001)) + { + vec.setValue(1,0,0); + } else + { + btScalar rlen = btScalar(1.) / btSqrt(lenSqr ); + vec *= rlen; + } + + + for (int i=0;i maxDot) + { + maxDot = newDot; + supVec = vtx; + } + } + return supVec; +} + +void btConvexPointCloudShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const +{ + btScalar newDot; + //use 'w' component of supportVerticesOut? + { + for (int i=0;i supportVerticesOut[j][3]) + { + //WARNING: don't swap next lines, the w component would get overwritten! + supportVerticesOut[j] = vtx; + supportVerticesOut[j][3] = newDot; + } + } + } + + + +} + + + +btVector3 btConvexPointCloudShape::localGetSupportingVertex(const btVector3& vec)const +{ + btVector3 supVertex = localGetSupportingVertexWithoutMargin(vec); + + if ( getMargin()!=btScalar(0.) ) + { + btVector3 vecnorm = vec; + if (vecnorm .length2() < (SIMD_EPSILON*SIMD_EPSILON)) + { + vecnorm.setValue(btScalar(-1.),btScalar(-1.),btScalar(-1.)); + } + vecnorm.normalize(); + supVertex+= getMargin() * vecnorm; + } + return supVertex; +} + + +#endif + + + + + + +//currently just for debugging (drawing), perhaps future support for algebraic continuous collision detection +//Please note that you can debug-draw btConvexHullShape with the Raytracer Demo +int btConvexPointCloudShape::getNumVertices() const +{ + return m_numPoints; +} + +int btConvexPointCloudShape::getNumEdges() const +{ + return 0; +} + +void btConvexPointCloudShape::getEdge(int i,btVector3& pa,btVector3& pb) const +{ + btAssert (0); +} + +void btConvexPointCloudShape::getVertex(int i,btVector3& vtx) const +{ + vtx = m_unscaledPoints[i]*m_localScaling; +} + +int btConvexPointCloudShape::getNumPlanes() const +{ + return 0; +} + +void btConvexPointCloudShape::getPlane(btVector3& ,btVector3& ,int ) const +{ + + btAssert(0); +} + +//not yet +bool btConvexPointCloudShape::isInside(const btVector3& ,btScalar ) const +{ + btAssert(0); + return false; +} + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexPointCloudShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btConvexPointCloudShape.h new file mode 100644 index 00000000000..54b5afac3ec --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btConvexPointCloudShape.h @@ -0,0 +1,105 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_CONVEX_POINT_CLOUD_SHAPE_H +#define BT_CONVEX_POINT_CLOUD_SHAPE_H + +#include "btPolyhedralConvexShape.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types +#include "LinearMath/btAlignedObjectArray.h" + +///The btConvexPointCloudShape implements an implicit convex hull of an array of vertices. +ATTRIBUTE_ALIGNED16(class) btConvexPointCloudShape : public btPolyhedralConvexAabbCachingShape +{ + btVector3* m_unscaledPoints; + int m_numPoints; + +public: + BT_DECLARE_ALIGNED_ALLOCATOR(); + + btConvexPointCloudShape() + { + m_localScaling.setValue(1.f,1.f,1.f); + m_shapeType = CONVEX_POINT_CLOUD_SHAPE_PROXYTYPE; + m_unscaledPoints = 0; + m_numPoints = 0; + } + + btConvexPointCloudShape(btVector3* points,int numPoints, const btVector3& localScaling,bool computeAabb = true) + { + m_localScaling = localScaling; + m_shapeType = CONVEX_POINT_CLOUD_SHAPE_PROXYTYPE; + m_unscaledPoints = points; + m_numPoints = numPoints; + + if (computeAabb) + recalcLocalAabb(); + } + + void setPoints (btVector3* points, int numPoints, bool computeAabb = true,const btVector3& localScaling=btVector3(1.f,1.f,1.f)) + { + m_unscaledPoints = points; + m_numPoints = numPoints; + m_localScaling = localScaling; + + if (computeAabb) + recalcLocalAabb(); + } + + SIMD_FORCE_INLINE btVector3* getUnscaledPoints() + { + return m_unscaledPoints; + } + + SIMD_FORCE_INLINE const btVector3* getUnscaledPoints() const + { + return m_unscaledPoints; + } + + SIMD_FORCE_INLINE int getNumPoints() const + { + return m_numPoints; + } + + SIMD_FORCE_INLINE btVector3 getScaledPoint( int index) const + { + return m_unscaledPoints[index] * m_localScaling; + } + +#ifndef __SPU__ + virtual btVector3 localGetSupportingVertex(const btVector3& vec)const; + virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const; + virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const; +#endif + + + //debugging + virtual const char* getName()const {return "ConvexPointCloud";} + + virtual int getNumVertices() const; + virtual int getNumEdges() const; + virtual void getEdge(int i,btVector3& pa,btVector3& pb) const; + virtual void getVertex(int i,btVector3& vtx) const; + virtual int getNumPlanes() const; + virtual void getPlane(btVector3& planeNormal,btVector3& planeSupport,int i ) const; + virtual bool isInside(const btVector3& pt,btScalar tolerance) const; + + ///in case we receive negative scaling + virtual void setLocalScaling(const btVector3& scaling); +}; + + +#endif //BT_CONVEX_POINT_CLOUD_SHAPE_H + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btConvexShape.cpp new file mode 100644 index 00000000000..f5f3aa58aa4 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btConvexShape.cpp @@ -0,0 +1,429 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btConvexShape.h" +#include "btTriangleShape.h" +#include "btSphereShape.h" +#include "btCylinderShape.h" +#include "btCapsuleShape.h" +#include "btConvexHullShape.h" +#include "btConvexPointCloudShape.h" + +///not supported on IBM SDK, until we fix the alignment of btVector3 +#if defined (__CELLOS_LV2__) && defined (__SPU__) +#include +static inline vec_float4 vec_dot3( vec_float4 vec0, vec_float4 vec1 ) +{ + vec_float4 result; + result = spu_mul( vec0, vec1 ); + result = spu_madd( spu_rlqwbyte( vec0, 4 ), spu_rlqwbyte( vec1, 4 ), result ); + return spu_madd( spu_rlqwbyte( vec0, 8 ), spu_rlqwbyte( vec1, 8 ), result ); +} +#endif //__SPU__ + +btConvexShape::btConvexShape () +{ +} + +btConvexShape::~btConvexShape() +{ + +} + + + +static btVector3 convexHullSupport (const btVector3& localDirOrg, const btVector3* points, int numPoints, const btVector3& localScaling) +{ + + btVector3 vec = localDirOrg * localScaling; + +#if defined (__CELLOS_LV2__) && defined (__SPU__) + + btVector3 localDir = vec; + + vec_float4 v_distMax = {-FLT_MAX,0,0,0}; + vec_int4 v_idxMax = {-999,0,0,0}; + int v=0; + int numverts = numPoints; + + for(;v<(int)numverts-4;v+=4) { + vec_float4 p0 = vec_dot3(points[v ].get128(),localDir.get128()); + vec_float4 p1 = vec_dot3(points[v+1].get128(),localDir.get128()); + vec_float4 p2 = vec_dot3(points[v+2].get128(),localDir.get128()); + vec_float4 p3 = vec_dot3(points[v+3].get128(),localDir.get128()); + const vec_int4 i0 = {v ,0,0,0}; + const vec_int4 i1 = {v+1,0,0,0}; + const vec_int4 i2 = {v+2,0,0,0}; + const vec_int4 i3 = {v+3,0,0,0}; + vec_uint4 retGt01 = spu_cmpgt(p0,p1); + vec_float4 pmax01 = spu_sel(p1,p0,retGt01); + vec_int4 imax01 = spu_sel(i1,i0,retGt01); + vec_uint4 retGt23 = spu_cmpgt(p2,p3); + vec_float4 pmax23 = spu_sel(p3,p2,retGt23); + vec_int4 imax23 = spu_sel(i3,i2,retGt23); + vec_uint4 retGt0123 = spu_cmpgt(pmax01,pmax23); + vec_float4 pmax0123 = spu_sel(pmax23,pmax01,retGt0123); + vec_int4 imax0123 = spu_sel(imax23,imax01,retGt0123); + vec_uint4 retGtMax = spu_cmpgt(v_distMax,pmax0123); + v_distMax = spu_sel(pmax0123,v_distMax,retGtMax); + v_idxMax = spu_sel(imax0123,v_idxMax,retGtMax); + } + for(;v<(int)numverts;v++) { + vec_float4 p = vec_dot3(points[v].get128(),localDir.get128()); + const vec_int4 i = {v,0,0,0}; + vec_uint4 retGtMax = spu_cmpgt(v_distMax,p); + v_distMax = spu_sel(p,v_distMax,retGtMax); + v_idxMax = spu_sel(i,v_idxMax,retGtMax); + } + int ptIndex = spu_extract(v_idxMax,0); + const btVector3& supVec= points[ptIndex] * localScaling; + return supVec; +#else + + btScalar newDot,maxDot = btScalar(-BT_LARGE_FLOAT); + int ptIndex = -1; + + for (int i=0;i maxDot) + { + maxDot = newDot; + ptIndex = i; + } + } + btAssert(ptIndex >= 0); + btVector3 supVec = points[ptIndex] * localScaling; + return supVec; +#endif //__SPU__ +} + +btVector3 btConvexShape::localGetSupportVertexWithoutMarginNonVirtual (const btVector3& localDir) const +{ + switch (m_shapeType) + { + case SPHERE_SHAPE_PROXYTYPE: + { + return btVector3(0,0,0); + } + case BOX_SHAPE_PROXYTYPE: + { + btBoxShape* convexShape = (btBoxShape*)this; + const btVector3& halfExtents = convexShape->getImplicitShapeDimensions(); + + return btVector3(btFsels(localDir.x(), halfExtents.x(), -halfExtents.x()), + btFsels(localDir.y(), halfExtents.y(), -halfExtents.y()), + btFsels(localDir.z(), halfExtents.z(), -halfExtents.z())); + } + case TRIANGLE_SHAPE_PROXYTYPE: + { + btTriangleShape* triangleShape = (btTriangleShape*)this; + btVector3 dir(localDir.getX(),localDir.getY(),localDir.getZ()); + btVector3* vertices = &triangleShape->m_vertices1[0]; + btVector3 dots(dir.dot(vertices[0]), dir.dot(vertices[1]), dir.dot(vertices[2])); + btVector3 sup = vertices[dots.maxAxis()]; + return btVector3(sup.getX(),sup.getY(),sup.getZ()); + } + case CYLINDER_SHAPE_PROXYTYPE: + { + btCylinderShape* cylShape = (btCylinderShape*)this; + //mapping of halfextents/dimension onto radius/height depends on how cylinder local orientation is (upAxis) + + btVector3 halfExtents = cylShape->getImplicitShapeDimensions(); + btVector3 v(localDir.getX(),localDir.getY(),localDir.getZ()); + int cylinderUpAxis = cylShape->getUpAxis(); + int XX(1),YY(0),ZZ(2); + + switch (cylinderUpAxis) + { + case 0: + { + XX = 1; + YY = 0; + ZZ = 2; + } + break; + case 1: + { + XX = 0; + YY = 1; + ZZ = 2; + } + break; + case 2: + { + XX = 0; + YY = 2; + ZZ = 1; + + } + break; + default: + btAssert(0); + break; + }; + + btScalar radius = halfExtents[XX]; + btScalar halfHeight = halfExtents[cylinderUpAxis]; + + btVector3 tmp; + btScalar d ; + + btScalar s = btSqrt(v[XX] * v[XX] + v[ZZ] * v[ZZ]); + if (s != btScalar(0.0)) + { + d = radius / s; + tmp[XX] = v[XX] * d; + tmp[YY] = v[YY] < 0.0 ? -halfHeight : halfHeight; + tmp[ZZ] = v[ZZ] * d; + return btVector3(tmp.getX(),tmp.getY(),tmp.getZ()); + } else { + tmp[XX] = radius; + tmp[YY] = v[YY] < 0.0 ? -halfHeight : halfHeight; + tmp[ZZ] = btScalar(0.0); + return btVector3(tmp.getX(),tmp.getY(),tmp.getZ()); + } + } + case CAPSULE_SHAPE_PROXYTYPE: + { + btVector3 vec0(localDir.getX(),localDir.getY(),localDir.getZ()); + + btCapsuleShape* capsuleShape = (btCapsuleShape*)this; + btScalar halfHeight = capsuleShape->getHalfHeight(); + int capsuleUpAxis = capsuleShape->getUpAxis(); + + btScalar radius = capsuleShape->getRadius(); + btVector3 supVec(0,0,0); + + btScalar maxDot(btScalar(-BT_LARGE_FLOAT)); + + btVector3 vec = vec0; + btScalar lenSqr = vec.length2(); + if (lenSqr < btScalar(0.0001)) + { + vec.setValue(1,0,0); + } else + { + btScalar rlen = btScalar(1.) / btSqrt(lenSqr ); + vec *= rlen; + } + btVector3 vtx; + btScalar newDot; + { + btVector3 pos(0,0,0); + pos[capsuleUpAxis] = halfHeight; + + //vtx = pos +vec*(radius); + vtx = pos +vec*capsuleShape->getLocalScalingNV()*(radius) - vec * capsuleShape->getMarginNV(); + newDot = vec.dot(vtx); + + + if (newDot > maxDot) + { + maxDot = newDot; + supVec = vtx; + } + } + { + btVector3 pos(0,0,0); + pos[capsuleUpAxis] = -halfHeight; + + //vtx = pos +vec*(radius); + vtx = pos +vec*capsuleShape->getLocalScalingNV()*(radius) - vec * capsuleShape->getMarginNV(); + newDot = vec.dot(vtx); + if (newDot > maxDot) + { + maxDot = newDot; + supVec = vtx; + } + } + return btVector3(supVec.getX(),supVec.getY(),supVec.getZ()); + } + case CONVEX_POINT_CLOUD_SHAPE_PROXYTYPE: + { + btConvexPointCloudShape* convexPointCloudShape = (btConvexPointCloudShape*)this; + btVector3* points = convexPointCloudShape->getUnscaledPoints (); + int numPoints = convexPointCloudShape->getNumPoints (); + return convexHullSupport (localDir, points, numPoints,convexPointCloudShape->getLocalScalingNV()); + } + case CONVEX_HULL_SHAPE_PROXYTYPE: + { + btConvexHullShape* convexHullShape = (btConvexHullShape*)this; + btVector3* points = convexHullShape->getUnscaledPoints(); + int numPoints = convexHullShape->getNumPoints (); + return convexHullSupport (localDir, points, numPoints,convexHullShape->getLocalScalingNV()); + } + default: +#ifndef __SPU__ + return this->localGetSupportingVertexWithoutMargin (localDir); +#else + btAssert (0); +#endif + } + + // should never reach here + btAssert (0); + return btVector3 (btScalar(0.0f), btScalar(0.0f), btScalar(0.0f)); +} + +btVector3 btConvexShape::localGetSupportVertexNonVirtual (const btVector3& localDir) const +{ + btVector3 localDirNorm = localDir; + if (localDirNorm .length2() < (SIMD_EPSILON*SIMD_EPSILON)) + { + localDirNorm.setValue(btScalar(-1.),btScalar(-1.),btScalar(-1.)); + } + localDirNorm.normalize (); + + return localGetSupportVertexWithoutMarginNonVirtual(localDirNorm)+ getMarginNonVirtual() * localDirNorm; +} + +/* TODO: This should be bumped up to btCollisionShape () */ +btScalar btConvexShape::getMarginNonVirtual () const +{ + switch (m_shapeType) + { + case SPHERE_SHAPE_PROXYTYPE: + { + btSphereShape* sphereShape = (btSphereShape*)this; + return sphereShape->getRadius (); + } + case BOX_SHAPE_PROXYTYPE: + { + btBoxShape* convexShape = (btBoxShape*)this; + return convexShape->getMarginNV (); + } + case TRIANGLE_SHAPE_PROXYTYPE: + { + btTriangleShape* triangleShape = (btTriangleShape*)this; + return triangleShape->getMarginNV (); + } + case CYLINDER_SHAPE_PROXYTYPE: + { + btCylinderShape* cylShape = (btCylinderShape*)this; + return cylShape->getMarginNV(); + } + case CAPSULE_SHAPE_PROXYTYPE: + { + btCapsuleShape* capsuleShape = (btCapsuleShape*)this; + return capsuleShape->getMarginNV(); + } + case CONVEX_POINT_CLOUD_SHAPE_PROXYTYPE: + /* fall through */ + case CONVEX_HULL_SHAPE_PROXYTYPE: + { + btPolyhedralConvexShape* convexHullShape = (btPolyhedralConvexShape*)this; + return convexHullShape->getMarginNV(); + } + default: +#ifndef __SPU__ + return this->getMargin (); +#else + btAssert (0); +#endif + } + + // should never reach here + btAssert (0); + return btScalar(0.0f); +} +#ifndef __SPU__ +void btConvexShape::getAabbNonVirtual (const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const +{ + switch (m_shapeType) + { + case SPHERE_SHAPE_PROXYTYPE: + { + btSphereShape* sphereShape = (btSphereShape*)this; + btScalar radius = sphereShape->getImplicitShapeDimensions().getX();// * convexShape->getLocalScaling().getX(); + btScalar margin = radius + sphereShape->getMarginNonVirtual(); + const btVector3& center = t.getOrigin(); + btVector3 extent(margin,margin,margin); + aabbMin = center - extent; + aabbMax = center + extent; + } + break; + case CYLINDER_SHAPE_PROXYTYPE: + /* fall through */ + case BOX_SHAPE_PROXYTYPE: + { + btBoxShape* convexShape = (btBoxShape*)this; + btScalar margin=convexShape->getMarginNonVirtual(); + btVector3 halfExtents = convexShape->getImplicitShapeDimensions(); + halfExtents += btVector3(margin,margin,margin); + btMatrix3x3 abs_b = t.getBasis().absolute(); + btVector3 center = t.getOrigin(); + btVector3 extent = btVector3(abs_b[0].dot(halfExtents),abs_b[1].dot(halfExtents),abs_b[2].dot(halfExtents)); + + aabbMin = center - extent; + aabbMax = center + extent; + break; + } + case TRIANGLE_SHAPE_PROXYTYPE: + { + btTriangleShape* triangleShape = (btTriangleShape*)this; + btScalar margin = triangleShape->getMarginNonVirtual(); + for (int i=0;i<3;i++) + { + btVector3 vec(btScalar(0.),btScalar(0.),btScalar(0.)); + vec[i] = btScalar(1.); + + btVector3 sv = localGetSupportVertexWithoutMarginNonVirtual(vec*t.getBasis()); + + btVector3 tmp = t(sv); + aabbMax[i] = tmp[i]+margin; + vec[i] = btScalar(-1.); + tmp = t(localGetSupportVertexWithoutMarginNonVirtual(vec*t.getBasis())); + aabbMin[i] = tmp[i]-margin; + } + } + break; + case CAPSULE_SHAPE_PROXYTYPE: + { + btCapsuleShape* capsuleShape = (btCapsuleShape*)this; + btVector3 halfExtents(capsuleShape->getRadius(),capsuleShape->getRadius(),capsuleShape->getRadius()); + int m_upAxis = capsuleShape->getUpAxis(); + halfExtents[m_upAxis] = capsuleShape->getRadius() + capsuleShape->getHalfHeight(); + halfExtents += btVector3(capsuleShape->getMarginNonVirtual(),capsuleShape->getMarginNonVirtual(),capsuleShape->getMarginNonVirtual()); + btMatrix3x3 abs_b = t.getBasis().absolute(); + btVector3 center = t.getOrigin(); + btVector3 extent = btVector3(abs_b[0].dot(halfExtents),abs_b[1].dot(halfExtents),abs_b[2].dot(halfExtents)); + aabbMin = center - extent; + aabbMax = center + extent; + } + break; + case CONVEX_POINT_CLOUD_SHAPE_PROXYTYPE: + case CONVEX_HULL_SHAPE_PROXYTYPE: + { + btPolyhedralConvexAabbCachingShape* convexHullShape = (btPolyhedralConvexAabbCachingShape*)this; + btScalar margin = convexHullShape->getMarginNonVirtual(); + convexHullShape->getNonvirtualAabb (t, aabbMin, aabbMax, margin); + } + break; + default: +#ifndef __SPU__ + this->getAabb (t, aabbMin, aabbMax); +#else + btAssert (0); +#endif + break; + } + + // should never reach here + btAssert (0); +} + +#endif //__SPU__ diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btConvexShape.h new file mode 100644 index 00000000000..9c158259c1c --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btConvexShape.h @@ -0,0 +1,82 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CONVEX_SHAPE_INTERFACE1 +#define CONVEX_SHAPE_INTERFACE1 + +#include "btCollisionShape.h" + +#include "LinearMath/btVector3.h" +#include "LinearMath/btTransform.h" +#include "LinearMath/btMatrix3x3.h" +#include "btCollisionMargin.h" +#include "LinearMath/btAlignedAllocator.h" + +#define MAX_PREFERRED_PENETRATION_DIRECTIONS 10 + +/// The btConvexShape is an abstract shape interface, implemented by all convex shapes such as btBoxShape, btConvexHullShape etc. +/// It describes general convex shapes using the localGetSupportingVertex interface, used by collision detectors such as btGjkPairDetector. +ATTRIBUTE_ALIGNED16(class) btConvexShape : public btCollisionShape +{ + + +public: + + BT_DECLARE_ALIGNED_ALLOCATOR(); + + btConvexShape (); + + virtual ~btConvexShape(); + + virtual btVector3 localGetSupportingVertex(const btVector3& vec)const = 0; + + //////// + #ifndef __SPU__ + virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const=0; + #endif //#ifndef __SPU__ + + btVector3 localGetSupportVertexWithoutMarginNonVirtual (const btVector3& vec) const; + btVector3 localGetSupportVertexNonVirtual (const btVector3& vec) const; + btScalar getMarginNonVirtual () const; + void getAabbNonVirtual (const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const; + + + //notice that the vectors should be unit length + virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const= 0; + + ///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version + void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const =0; + + virtual void getAabbSlow(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const =0; + + virtual void setLocalScaling(const btVector3& scaling) =0; + virtual const btVector3& getLocalScaling() const =0; + + virtual void setMargin(btScalar margin)=0; + + virtual btScalar getMargin() const=0; + + virtual int getNumPreferredPenetrationDirections() const=0; + + virtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const=0; + + + + +}; + + + +#endif //CONVEX_SHAPE_INTERFACE1 diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp new file mode 100644 index 00000000000..0f9ced554b8 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp @@ -0,0 +1,315 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btConvexTriangleMeshShape.h" +#include "BulletCollision/CollisionShapes/btCollisionMargin.h" + +#include "LinearMath/btQuaternion.h" +#include "BulletCollision/CollisionShapes/btStridingMeshInterface.h" + + +btConvexTriangleMeshShape ::btConvexTriangleMeshShape (btStridingMeshInterface* meshInterface, bool calcAabb) +: btPolyhedralConvexAabbCachingShape(), m_stridingMesh(meshInterface) +{ + m_shapeType = CONVEX_TRIANGLEMESH_SHAPE_PROXYTYPE; + if ( calcAabb ) + recalcLocalAabb(); +} + + + + +///It's not nice to have all this virtual function overhead, so perhaps we can also gather the points once +///but then we are duplicating +class LocalSupportVertexCallback: public btInternalTriangleIndexCallback +{ + + btVector3 m_supportVertexLocal; +public: + + btScalar m_maxDot; + btVector3 m_supportVecLocal; + + LocalSupportVertexCallback(const btVector3& supportVecLocal) + : m_supportVertexLocal(btScalar(0.),btScalar(0.),btScalar(0.)), + m_maxDot(btScalar(-BT_LARGE_FLOAT)), + m_supportVecLocal(supportVecLocal) + { + } + + virtual void internalProcessTriangleIndex(btVector3* triangle,int partId,int triangleIndex) + { + (void)triangleIndex; + (void)partId; + + for (int i=0;i<3;i++) + { + btScalar dot = m_supportVecLocal.dot(triangle[i]); + if (dot > m_maxDot) + { + m_maxDot = dot; + m_supportVertexLocal = triangle[i]; + } + } + } + + btVector3 GetSupportVertexLocal() + { + return m_supportVertexLocal; + } + +}; + + + + + +btVector3 btConvexTriangleMeshShape::localGetSupportingVertexWithoutMargin(const btVector3& vec0)const +{ + btVector3 supVec(btScalar(0.),btScalar(0.),btScalar(0.)); + + btVector3 vec = vec0; + btScalar lenSqr = vec.length2(); + if (lenSqr < btScalar(0.0001)) + { + vec.setValue(1,0,0); + } else + { + btScalar rlen = btScalar(1.) / btSqrt(lenSqr ); + vec *= rlen; + } + + LocalSupportVertexCallback supportCallback(vec); + btVector3 aabbMax(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); + m_stridingMesh->InternalProcessAllTriangles(&supportCallback,-aabbMax,aabbMax); + supVec = supportCallback.GetSupportVertexLocal(); + + return supVec; +} + +void btConvexTriangleMeshShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const +{ + //use 'w' component of supportVerticesOut? + { + for (int i=0;iInternalProcessAllTriangles(&supportCallback,-aabbMax,aabbMax); + supportVerticesOut[j] = supportCallback.GetSupportVertexLocal(); + } + +} + + + +btVector3 btConvexTriangleMeshShape::localGetSupportingVertex(const btVector3& vec)const +{ + btVector3 supVertex = localGetSupportingVertexWithoutMargin(vec); + + if ( getMargin()!=btScalar(0.) ) + { + btVector3 vecnorm = vec; + if (vecnorm .length2() < (SIMD_EPSILON*SIMD_EPSILON)) + { + vecnorm.setValue(btScalar(-1.),btScalar(-1.),btScalar(-1.)); + } + vecnorm.normalize(); + supVertex+= getMargin() * vecnorm; + } + return supVertex; +} + + + + + + + + + +//currently just for debugging (drawing), perhaps future support for algebraic continuous collision detection +//Please note that you can debug-draw btConvexTriangleMeshShape with the Raytracer Demo +int btConvexTriangleMeshShape::getNumVertices() const +{ + //cache this? + return 0; + +} + +int btConvexTriangleMeshShape::getNumEdges() const +{ + return 0; +} + +void btConvexTriangleMeshShape::getEdge(int ,btVector3& ,btVector3& ) const +{ + btAssert(0); +} + +void btConvexTriangleMeshShape::getVertex(int ,btVector3& ) const +{ + btAssert(0); +} + +int btConvexTriangleMeshShape::getNumPlanes() const +{ + return 0; +} + +void btConvexTriangleMeshShape::getPlane(btVector3& ,btVector3& ,int ) const +{ + btAssert(0); +} + +//not yet +bool btConvexTriangleMeshShape::isInside(const btVector3& ,btScalar ) const +{ + btAssert(0); + return false; +} + + + +void btConvexTriangleMeshShape::setLocalScaling(const btVector3& scaling) +{ + m_stridingMesh->setScaling(scaling); + + recalcLocalAabb(); + +} + + +const btVector3& btConvexTriangleMeshShape::getLocalScaling() const +{ + return m_stridingMesh->getScaling(); +} + +void btConvexTriangleMeshShape::calculatePrincipalAxisTransform(btTransform& principal, btVector3& inertia, btScalar& volume) const +{ + class CenterCallback: public btInternalTriangleIndexCallback + { + bool first; + btVector3 ref; + btVector3 sum; + btScalar volume; + + public: + + CenterCallback() : first(true), ref(0, 0, 0), sum(0, 0, 0), volume(0) + { + } + + virtual void internalProcessTriangleIndex(btVector3* triangle, int partId, int triangleIndex) + { + (void) triangleIndex; + (void) partId; + if (first) + { + ref = triangle[0]; + first = false; + } + else + { + btScalar vol = btFabs((triangle[0] - ref).triple(triangle[1] - ref, triangle[2] - ref)); + sum += (btScalar(0.25) * vol) * ((triangle[0] + triangle[1] + triangle[2] + ref)); + volume += vol; + } + } + + btVector3 getCenter() + { + return (volume > 0) ? sum / volume : ref; + } + + btScalar getVolume() + { + return volume * btScalar(1. / 6); + } + + }; + + class InertiaCallback: public btInternalTriangleIndexCallback + { + btMatrix3x3 sum; + btVector3 center; + + public: + + InertiaCallback(btVector3& center) : sum(0, 0, 0, 0, 0, 0, 0, 0, 0), center(center) + { + } + + virtual void internalProcessTriangleIndex(btVector3* triangle, int partId, int triangleIndex) + { + (void) triangleIndex; + (void) partId; + btMatrix3x3 i; + btVector3 a = triangle[0] - center; + btVector3 b = triangle[1] - center; + btVector3 c = triangle[2] - center; + btScalar volNeg = -btFabs(a.triple(b, c)) * btScalar(1. / 6); + for (int j = 0; j < 3; j++) + { + for (int k = 0; k <= j; k++) + { + i[j][k] = i[k][j] = volNeg * (btScalar(0.1) * (a[j] * a[k] + b[j] * b[k] + c[j] * c[k]) + + btScalar(0.05) * (a[j] * b[k] + a[k] * b[j] + a[j] * c[k] + a[k] * c[j] + b[j] * c[k] + b[k] * c[j])); + } + } + btScalar i00 = -i[0][0]; + btScalar i11 = -i[1][1]; + btScalar i22 = -i[2][2]; + i[0][0] = i11 + i22; + i[1][1] = i22 + i00; + i[2][2] = i00 + i11; + sum[0] += i[0]; + sum[1] += i[1]; + sum[2] += i[2]; + } + + btMatrix3x3& getInertia() + { + return sum; + } + + }; + + CenterCallback centerCallback; + btVector3 aabbMax(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); + m_stridingMesh->InternalProcessAllTriangles(¢erCallback, -aabbMax, aabbMax); + btVector3 center = centerCallback.getCenter(); + principal.setOrigin(center); + volume = centerCallback.getVolume(); + + InertiaCallback inertiaCallback(center); + m_stridingMesh->InternalProcessAllTriangles(&inertiaCallback, -aabbMax, aabbMax); + + btMatrix3x3& i = inertiaCallback.getInertia(); + i.diagonalize(principal.getBasis(), btScalar(0.00001), 20); + inertia.setValue(i[0][0], i[1][1], i[2][2]); + inertia /= volume; +} + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h new file mode 100644 index 00000000000..f5167e74b80 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h @@ -0,0 +1,75 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ +#ifndef CONVEX_TRIANGLEMESH_SHAPE_H +#define CONVEX_TRIANGLEMESH_SHAPE_H + + +#include "btPolyhedralConvexShape.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types + + +/// The btConvexTriangleMeshShape is a convex hull of a triangle mesh, but the performance is not as good as btConvexHullShape. +/// A small benefit of this class is that it uses the btStridingMeshInterface, so you can avoid the duplication of the triangle mesh data. Nevertheless, most users should use the much better performing btConvexHullShape instead. +class btConvexTriangleMeshShape : public btPolyhedralConvexAabbCachingShape +{ + + class btStridingMeshInterface* m_stridingMesh; + +public: + btConvexTriangleMeshShape(btStridingMeshInterface* meshInterface, bool calcAabb = true); + + class btStridingMeshInterface* getMeshInterface() + { + return m_stridingMesh; + } + const class btStridingMeshInterface* getMeshInterface() const + { + return m_stridingMesh; + } + + virtual btVector3 localGetSupportingVertex(const btVector3& vec)const; + virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const; + virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const; + + //debugging + virtual const char* getName()const {return "ConvexTrimesh";} + + virtual int getNumVertices() const; + virtual int getNumEdges() const; + virtual void getEdge(int i,btVector3& pa,btVector3& pb) const; + virtual void getVertex(int i,btVector3& vtx) const; + virtual int getNumPlanes() const; + virtual void getPlane(btVector3& planeNormal,btVector3& planeSupport,int i ) const; + virtual bool isInside(const btVector3& pt,btScalar tolerance) const; + + + virtual void setLocalScaling(const btVector3& scaling); + virtual const btVector3& getLocalScaling() const; + + ///computes the exact moment of inertia and the transform from the coordinate system defined by the principal axes of the moment of inertia + ///and the center of mass to the current coordinate system. A mass of 1 is assumed, for other masses just multiply the computed "inertia" + ///by the mass. The resulting transform "principal" has to be applied inversely to the mesh in order for the local coordinate system of the + ///shape to be centered at the center of mass and to coincide with the principal axes. This also necessitates a correction of the world transform + ///of the collision object by the principal transform. This method also computes the volume of the convex mesh. + void calculatePrincipalAxisTransform(btTransform& principal, btVector3& inertia, btScalar& volume) const; + +}; + + + +#endif //CONVEX_TRIANGLEMESH_SHAPE_H + + + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btCylinderShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btCylinderShape.cpp new file mode 100644 index 00000000000..26880930479 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btCylinderShape.cpp @@ -0,0 +1,222 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btCylinderShape.h" + +btCylinderShape::btCylinderShape (const btVector3& halfExtents) +:btConvexInternalShape(), +m_upAxis(1) +{ + btVector3 margin(getMargin(),getMargin(),getMargin()); + m_implicitShapeDimensions = (halfExtents * m_localScaling) - margin; + m_shapeType = CYLINDER_SHAPE_PROXYTYPE; +} + + +btCylinderShapeX::btCylinderShapeX (const btVector3& halfExtents) +:btCylinderShape(halfExtents) +{ + m_upAxis = 0; + +} + + +btCylinderShapeZ::btCylinderShapeZ (const btVector3& halfExtents) +:btCylinderShape(halfExtents) +{ + m_upAxis = 2; + +} + +void btCylinderShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const +{ + btTransformAabb(getHalfExtentsWithoutMargin(),getMargin(),t,aabbMin,aabbMax); +} + +void btCylinderShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const +{ + //approximation of box shape, todo: implement cylinder shape inertia before people notice ;-) + btVector3 halfExtents = getHalfExtentsWithMargin(); + + btScalar lx=btScalar(2.)*(halfExtents.x()); + btScalar ly=btScalar(2.)*(halfExtents.y()); + btScalar lz=btScalar(2.)*(halfExtents.z()); + + inertia.setValue(mass/(btScalar(12.0)) * (ly*ly + lz*lz), + mass/(btScalar(12.0)) * (lx*lx + lz*lz), + mass/(btScalar(12.0)) * (lx*lx + ly*ly)); + +} + + +SIMD_FORCE_INLINE btVector3 CylinderLocalSupportX(const btVector3& halfExtents,const btVector3& v) +{ +const int cylinderUpAxis = 0; +const int XX = 1; +const int YY = 0; +const int ZZ = 2; + + //mapping depends on how cylinder local orientation is + // extents of the cylinder is: X,Y is for radius, and Z for height + + + btScalar radius = halfExtents[XX]; + btScalar halfHeight = halfExtents[cylinderUpAxis]; + + + btVector3 tmp; + btScalar d ; + + btScalar s = btSqrt(v[XX] * v[XX] + v[ZZ] * v[ZZ]); + if (s != btScalar(0.0)) + { + d = radius / s; + tmp[XX] = v[XX] * d; + tmp[YY] = v[YY] < 0.0 ? -halfHeight : halfHeight; + tmp[ZZ] = v[ZZ] * d; + return tmp; + } + else + { + tmp[XX] = radius; + tmp[YY] = v[YY] < 0.0 ? -halfHeight : halfHeight; + tmp[ZZ] = btScalar(0.0); + return tmp; + } + + +} + + + + + + +inline btVector3 CylinderLocalSupportY(const btVector3& halfExtents,const btVector3& v) +{ + +const int cylinderUpAxis = 1; +const int XX = 0; +const int YY = 1; +const int ZZ = 2; + + + btScalar radius = halfExtents[XX]; + btScalar halfHeight = halfExtents[cylinderUpAxis]; + + + btVector3 tmp; + btScalar d ; + + btScalar s = btSqrt(v[XX] * v[XX] + v[ZZ] * v[ZZ]); + if (s != btScalar(0.0)) + { + d = radius / s; + tmp[XX] = v[XX] * d; + tmp[YY] = v[YY] < 0.0 ? -halfHeight : halfHeight; + tmp[ZZ] = v[ZZ] * d; + return tmp; + } + else + { + tmp[XX] = radius; + tmp[YY] = v[YY] < 0.0 ? -halfHeight : halfHeight; + tmp[ZZ] = btScalar(0.0); + return tmp; + } + +} + +inline btVector3 CylinderLocalSupportZ(const btVector3& halfExtents,const btVector3& v) +{ +const int cylinderUpAxis = 2; +const int XX = 0; +const int YY = 2; +const int ZZ = 1; + + //mapping depends on how cylinder local orientation is + // extents of the cylinder is: X,Y is for radius, and Z for height + + + btScalar radius = halfExtents[XX]; + btScalar halfHeight = halfExtents[cylinderUpAxis]; + + + btVector3 tmp; + btScalar d ; + + btScalar s = btSqrt(v[XX] * v[XX] + v[ZZ] * v[ZZ]); + if (s != btScalar(0.0)) + { + d = radius / s; + tmp[XX] = v[XX] * d; + tmp[YY] = v[YY] < 0.0 ? -halfHeight : halfHeight; + tmp[ZZ] = v[ZZ] * d; + return tmp; + } + else + { + tmp[XX] = radius; + tmp[YY] = v[YY] < 0.0 ? -halfHeight : halfHeight; + tmp[ZZ] = btScalar(0.0); + return tmp; + } + + +} + +btVector3 btCylinderShapeX::localGetSupportingVertexWithoutMargin(const btVector3& vec)const +{ + return CylinderLocalSupportX(getHalfExtentsWithoutMargin(),vec); +} + + +btVector3 btCylinderShapeZ::localGetSupportingVertexWithoutMargin(const btVector3& vec)const +{ + return CylinderLocalSupportZ(getHalfExtentsWithoutMargin(),vec); +} +btVector3 btCylinderShape::localGetSupportingVertexWithoutMargin(const btVector3& vec)const +{ + return CylinderLocalSupportY(getHalfExtentsWithoutMargin(),vec); +} + +void btCylinderShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const +{ + for (int i=0;im_convexInternalShapeData,serializer); + + shapeData->m_upAxis = m_upAxis; + + return "btCylinderShapeData"; +} + + + +#endif //CYLINDER_MINKOWSKI_H + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btEmptyShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btEmptyShape.cpp new file mode 100644 index 00000000000..a9e6df5c58e --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btEmptyShape.cpp @@ -0,0 +1,50 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btEmptyShape.h" + + +#include "btCollisionShape.h" + + +btEmptyShape::btEmptyShape() : btConcaveShape () +{ + m_shapeType = EMPTY_SHAPE_PROXYTYPE; +} + + +btEmptyShape::~btEmptyShape() +{ +} + + + ///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version +void btEmptyShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const +{ + btVector3 margin(getMargin(),getMargin(),getMargin()); + + aabbMin = t.getOrigin() - margin; + + aabbMax = t.getOrigin() + margin; + +} + +void btEmptyShape::calculateLocalInertia(btScalar ,btVector3& ) const +{ + btAssert(0); +} + + + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btEmptyShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btEmptyShape.h new file mode 100644 index 00000000000..9f6b4435c29 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btEmptyShape.h @@ -0,0 +1,70 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef EMPTY_SHAPE_H +#define EMPTY_SHAPE_H + +#include "btConcaveShape.h" + +#include "LinearMath/btVector3.h" +#include "LinearMath/btTransform.h" +#include "LinearMath/btMatrix3x3.h" +#include "btCollisionMargin.h" + + + + +/// The btEmptyShape is a collision shape without actual collision detection shape, so most users should ignore this class. +/// It can be replaced by another shape during runtime, but the inertia tensor should be recomputed. +class btEmptyShape : public btConcaveShape +{ +public: + btEmptyShape(); + + virtual ~btEmptyShape(); + + + ///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version + void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; + + + virtual void setLocalScaling(const btVector3& scaling) + { + m_localScaling = scaling; + } + virtual const btVector3& getLocalScaling() const + { + return m_localScaling; + } + + virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; + + virtual const char* getName()const + { + return "Empty"; + } + + virtual void processAllTriangles(btTriangleCallback* ,const btVector3& ,const btVector3& ) const + { + } + +protected: + btVector3 m_localScaling; + +}; + + + +#endif //EMPTY_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp new file mode 100644 index 00000000000..3a1e6f4a2b9 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp @@ -0,0 +1,411 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btHeightfieldTerrainShape.h" + +#include "LinearMath/btTransformUtil.h" + + + +btHeightfieldTerrainShape::btHeightfieldTerrainShape +( +int heightStickWidth, int heightStickLength, void* heightfieldData, +btScalar heightScale, btScalar minHeight, btScalar maxHeight,int upAxis, +PHY_ScalarType hdt, bool flipQuadEdges +) +{ + initialize(heightStickWidth, heightStickLength, heightfieldData, + heightScale, minHeight, maxHeight, upAxis, hdt, + flipQuadEdges); +} + + + +btHeightfieldTerrainShape::btHeightfieldTerrainShape(int heightStickWidth, int heightStickLength,void* heightfieldData,btScalar maxHeight,int upAxis,bool useFloatData,bool flipQuadEdges) +{ + // legacy constructor: support only float or unsigned char, + // and min height is zero + PHY_ScalarType hdt = (useFloatData) ? PHY_FLOAT : PHY_UCHAR; + btScalar minHeight = 0.0; + + // previously, height = uchar * maxHeight / 65535. + // So to preserve legacy behavior, heightScale = maxHeight / 65535 + btScalar heightScale = maxHeight / 65535; + + initialize(heightStickWidth, heightStickLength, heightfieldData, + heightScale, minHeight, maxHeight, upAxis, hdt, + flipQuadEdges); +} + + + +void btHeightfieldTerrainShape::initialize +( +int heightStickWidth, int heightStickLength, void* heightfieldData, +btScalar heightScale, btScalar minHeight, btScalar maxHeight, int upAxis, +PHY_ScalarType hdt, bool flipQuadEdges +) +{ + // validation + btAssert(heightStickWidth > 1 && "bad width"); + btAssert(heightStickLength > 1 && "bad length"); + btAssert(heightfieldData && "null heightfield data"); + // btAssert(heightScale) -- do we care? Trust caller here + btAssert(minHeight <= maxHeight && "bad min/max height"); + btAssert(upAxis >= 0 && upAxis < 3 && + "bad upAxis--should be in range [0,2]"); + btAssert(hdt != PHY_UCHAR || hdt != PHY_FLOAT || hdt != PHY_SHORT && + "Bad height data type enum"); + + // initialize member variables + m_shapeType = TERRAIN_SHAPE_PROXYTYPE; + m_heightStickWidth = heightStickWidth; + m_heightStickLength = heightStickLength; + m_minHeight = minHeight; + m_maxHeight = maxHeight; + m_width = (btScalar) (heightStickWidth - 1); + m_length = (btScalar) (heightStickLength - 1); + m_heightScale = heightScale; + m_heightfieldDataUnknown = heightfieldData; + m_heightDataType = hdt; + m_flipQuadEdges = flipQuadEdges; + m_useDiamondSubdivision = false; + m_upAxis = upAxis; + m_localScaling.setValue(btScalar(1.), btScalar(1.), btScalar(1.)); + + // determine min/max axis-aligned bounding box (aabb) values + switch (m_upAxis) + { + case 0: + { + m_localAabbMin.setValue(m_minHeight, 0, 0); + m_localAabbMax.setValue(m_maxHeight, m_width, m_length); + break; + } + case 1: + { + m_localAabbMin.setValue(0, m_minHeight, 0); + m_localAabbMax.setValue(m_width, m_maxHeight, m_length); + break; + }; + case 2: + { + m_localAabbMin.setValue(0, 0, m_minHeight); + m_localAabbMax.setValue(m_width, m_length, m_maxHeight); + break; + } + default: + { + //need to get valid m_upAxis + btAssert(0 && "Bad m_upAxis"); + } + } + + // remember origin (defined as exact middle of aabb) + m_localOrigin = btScalar(0.5) * (m_localAabbMin + m_localAabbMax); +} + + + +btHeightfieldTerrainShape::~btHeightfieldTerrainShape() +{ +} + + + +void btHeightfieldTerrainShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const +{ + btVector3 halfExtents = (m_localAabbMax-m_localAabbMin)* m_localScaling * btScalar(0.5); + + btVector3 localOrigin(0, 0, 0); + localOrigin[m_upAxis] = (m_minHeight + m_maxHeight) * btScalar(0.5); + localOrigin *= m_localScaling; + + btMatrix3x3 abs_b = t.getBasis().absolute(); + btVector3 center = t.getOrigin(); + btVector3 extent = btVector3(abs_b[0].dot(halfExtents), + abs_b[1].dot(halfExtents), + abs_b[2].dot(halfExtents)); + extent += btVector3(getMargin(),getMargin(),getMargin()); + + aabbMin = center - extent; + aabbMax = center + extent; +} + + +/// This returns the "raw" (user's initial) height, not the actual height. +/// The actual height needs to be adjusted to be relative to the center +/// of the heightfield's AABB. +btScalar +btHeightfieldTerrainShape::getRawHeightFieldValue(int x,int y) const +{ + btScalar val = 0.f; + switch (m_heightDataType) + { + case PHY_FLOAT: + { + val = m_heightfieldDataFloat[(y*m_heightStickWidth)+x]; + break; + } + + case PHY_UCHAR: + { + unsigned char heightFieldValue = m_heightfieldDataUnsignedChar[(y*m_heightStickWidth)+x]; + val = heightFieldValue * m_heightScale; + break; + } + + case PHY_SHORT: + { + short hfValue = m_heightfieldDataShort[(y * m_heightStickWidth) + x]; + val = hfValue * m_heightScale; + break; + } + + default: + { + btAssert(!"Bad m_heightDataType"); + } + } + + return val; +} + + + + +/// this returns the vertex in bullet-local coordinates +void btHeightfieldTerrainShape::getVertex(int x,int y,btVector3& vertex) const +{ + btAssert(x>=0); + btAssert(y>=0); + btAssert(xstartX) + startX = quantizedAabbMin[1]; + if (quantizedAabbMax[1]startJ) + startJ = quantizedAabbMin[2]; + if (quantizedAabbMax[2]startX) + startX = quantizedAabbMin[0]; + if (quantizedAabbMax[0]startJ) + startJ = quantizedAabbMin[2]; + if (quantizedAabbMax[2]startX) + startX = quantizedAabbMin[0]; + if (quantizedAabbMax[0]startJ) + startJ = quantizedAabbMin[1]; + if (quantizedAabbMax[1]processTriangle(vertices,x,j); + //second triangle + getVertex(x,j,vertices[0]); + getVertex(x+1,j+1,vertices[1]); + getVertex(x,j+1,vertices[2]); + callback->processTriangle(vertices,x,j); + } else + { + //first triangle + getVertex(x,j,vertices[0]); + getVertex(x,j+1,vertices[1]); + getVertex(x+1,j,vertices[2]); + callback->processTriangle(vertices,x,j); + //second triangle + getVertex(x+1,j,vertices[0]); + getVertex(x,j+1,vertices[1]); + getVertex(x+1,j+1,vertices[2]); + callback->processTriangle(vertices,x,j); + } + } + } + + + +} + +void btHeightfieldTerrainShape::calculateLocalInertia(btScalar ,btVector3& inertia) const +{ + //moving concave objects not supported + + inertia.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); +} + +void btHeightfieldTerrainShape::setLocalScaling(const btVector3& scaling) +{ + m_localScaling = scaling; +} +const btVector3& btHeightfieldTerrainShape::getLocalScaling() const +{ + return m_localScaling; +} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h new file mode 100644 index 00000000000..4f5d1e35bf3 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h @@ -0,0 +1,161 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef HEIGHTFIELD_TERRAIN_SHAPE_H +#define HEIGHTFIELD_TERRAIN_SHAPE_H + +#include "btConcaveShape.h" + +///btHeightfieldTerrainShape simulates a 2D heightfield terrain +/** + The caller is responsible for maintaining the heightfield array; this + class does not make a copy. + + The heightfield can be dynamic so long as the min/max height values + capture the extremes (heights must always be in that range). + + The local origin of the heightfield is assumed to be the exact + center (as determined by width and length and height, with each + axis multiplied by the localScaling). + + \b NOTE: be careful with coordinates. If you have a heightfield with a local + min height of -100m, and a max height of +500m, you may be tempted to place it + at the origin (0,0) and expect the heights in world coordinates to be + -100 to +500 meters. + Actually, the heights will be -300 to +300m, because bullet will re-center + the heightfield based on its AABB (which is determined by the min/max + heights). So keep in mind that once you create a btHeightfieldTerrainShape + object, the heights will be adjusted relative to the center of the AABB. This + is different to the behavior of many rendering engines, but is useful for + physics engines. + + Most (but not all) rendering and heightfield libraries assume upAxis = 1 + (that is, the y-axis is "up"). This class allows any of the 3 coordinates + to be "up". Make sure your choice of axis is consistent with your rendering + system. + + The heightfield heights are determined from the data type used for the + heightfieldData array. + + - PHY_UCHAR: height at a point is the uchar value at the + grid point, multipled by heightScale. uchar isn't recommended + because of its inability to deal with negative values, and + low resolution (8-bit). + + - PHY_SHORT: height at a point is the short int value at that grid + point, multipled by heightScale. + + - PHY_FLOAT: height at a point is the float value at that grid + point. heightScale is ignored when using the float heightfield + data type. + + Whatever the caller specifies as minHeight and maxHeight will be honored. + The class will not inspect the heightfield to discover the actual minimum + or maximum heights. These values are used to determine the heightfield's + axis-aligned bounding box, multiplied by localScaling. + + For usage and testing see the TerrainDemo. + */ +class btHeightfieldTerrainShape : public btConcaveShape +{ +protected: + btVector3 m_localAabbMin; + btVector3 m_localAabbMax; + btVector3 m_localOrigin; + + ///terrain data + int m_heightStickWidth; + int m_heightStickLength; + btScalar m_minHeight; + btScalar m_maxHeight; + btScalar m_width; + btScalar m_length; + btScalar m_heightScale; + union + { + unsigned char* m_heightfieldDataUnsignedChar; + short* m_heightfieldDataShort; + btScalar* m_heightfieldDataFloat; + void* m_heightfieldDataUnknown; + }; + + PHY_ScalarType m_heightDataType; + bool m_flipQuadEdges; + bool m_useDiamondSubdivision; + + int m_upAxis; + + btVector3 m_localScaling; + + virtual btScalar getRawHeightFieldValue(int x,int y) const; + void quantizeWithClamp(int* out, const btVector3& point,int isMax) const; + void getVertex(int x,int y,btVector3& vertex) const; + + + + /// protected initialization + /** + Handles the work of constructors so that public constructors can be + backwards-compatible without a lot of copy/paste. + */ + void initialize(int heightStickWidth, int heightStickLength, + void* heightfieldData, btScalar heightScale, + btScalar minHeight, btScalar maxHeight, int upAxis, + PHY_ScalarType heightDataType, bool flipQuadEdges); + +public: + /// preferred constructor + /** + This constructor supports a range of heightfield + data types, and allows for a non-zero minimum height value. + heightScale is needed for any integer-based heightfield data types. + */ + btHeightfieldTerrainShape(int heightStickWidth,int heightStickLength, + void* heightfieldData, btScalar heightScale, + btScalar minHeight, btScalar maxHeight, + int upAxis, PHY_ScalarType heightDataType, + bool flipQuadEdges); + + /// legacy constructor + /** + The legacy constructor assumes the heightfield has a minimum height + of zero. Only unsigned char or floats are supported. For legacy + compatibility reasons, heightScale is calculated as maxHeight / 65535 + (and is only used when useFloatData = false). + */ + btHeightfieldTerrainShape(int heightStickWidth,int heightStickLength,void* heightfieldData, btScalar maxHeight,int upAxis,bool useFloatData,bool flipQuadEdges); + + virtual ~btHeightfieldTerrainShape(); + + + void setUseDiamondSubdivision(bool useDiamondSubdivision=true) { m_useDiamondSubdivision = useDiamondSubdivision;} + + + virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; + + virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const; + + virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; + + virtual void setLocalScaling(const btVector3& scaling); + + virtual const btVector3& getLocalScaling() const; + + //debugging + virtual const char* getName()const {return "HEIGHTFIELD";} + +}; + +#endif //HEIGHTFIELD_TERRAIN_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btMaterial.h b/extern/bullet2/BulletCollision/CollisionShapes/btMaterial.h new file mode 100644 index 00000000000..030e167da50 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btMaterial.h @@ -0,0 +1,35 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +/// This file was created by Alex Silverman + +#ifndef MATERIAL_H +#define MATERIAL_H + +// Material class to be used by btMultimaterialTriangleMeshShape to store triangle properties +class btMaterial +{ + // public members so that materials can change due to world events +public: + btScalar m_friction; + btScalar m_restitution; + int pad[2]; + + btMaterial(){} + btMaterial(btScalar fric, btScalar rest) { m_friction = fric; m_restitution = rest; } +}; + +#endif // MATERIAL_H + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp new file mode 100644 index 00000000000..06707e24e55 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp @@ -0,0 +1,60 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btMinkowskiSumShape.h" + + +btMinkowskiSumShape::btMinkowskiSumShape(const btConvexShape* shapeA,const btConvexShape* shapeB) +: btConvexInternalShape (), +m_shapeA(shapeA), +m_shapeB(shapeB) +{ + m_shapeType = MINKOWSKI_DIFFERENCE_SHAPE_PROXYTYPE; + m_transA.setIdentity(); + m_transB.setIdentity(); +} + +btVector3 btMinkowskiSumShape::localGetSupportingVertexWithoutMargin(const btVector3& vec)const +{ + btVector3 supVertexA = m_transA(m_shapeA->localGetSupportingVertexWithoutMargin(vec*m_transA.getBasis())); + btVector3 supVertexB = m_transB(m_shapeB->localGetSupportingVertexWithoutMargin(-vec*m_transB.getBasis())); + return supVertexA - supVertexB; +} + +void btMinkowskiSumShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const +{ + ///@todo: could make recursive use of batching. probably this shape is not used frequently. + for (int i=0;igetMargin() + m_shapeB->getMargin(); +} + + +void btMinkowskiSumShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const +{ + (void)mass; + btAssert(0); + inertia.setValue(0,0,0); +} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btMinkowskiSumShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btMinkowskiSumShape.h new file mode 100644 index 00000000000..d6fd040213b --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btMinkowskiSumShape.h @@ -0,0 +1,60 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef MINKOWSKI_SUM_SHAPE_H +#define MINKOWSKI_SUM_SHAPE_H + +#include "btConvexInternalShape.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types + +/// The btMinkowskiSumShape is only for advanced users. This shape represents implicit based minkowski sum of two convex implicit shapes. +class btMinkowskiSumShape : public btConvexInternalShape +{ + + btTransform m_transA; + btTransform m_transB; + const btConvexShape* m_shapeA; + const btConvexShape* m_shapeB; + +public: + + btMinkowskiSumShape(const btConvexShape* shapeA,const btConvexShape* shapeB); + + virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const; + + virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const; + + + virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; + + void setTransformA(const btTransform& transA) { m_transA = transA;} + void setTransformB(const btTransform& transB) { m_transB = transB;} + + const btTransform& getTransformA()const { return m_transA;} + const btTransform& GetTransformB()const { return m_transB;} + + + virtual btScalar getMargin() const; + + const btConvexShape* getShapeA() const { return m_shapeA;} + const btConvexShape* getShapeB() const { return m_shapeB;} + + virtual const char* getName()const + { + return "MinkowskiSum"; + } +}; + +#endif //MINKOWSKI_SUM_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btMultiSphereShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btMultiSphereShape.cpp new file mode 100644 index 00000000000..c996bfcdaba --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btMultiSphereShape.cpp @@ -0,0 +1,167 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#include "btMultiSphereShape.h" +#include "BulletCollision/CollisionShapes/btCollisionMargin.h" +#include "LinearMath/btQuaternion.h" +#include "LinearMath/btSerializer.h" + +btMultiSphereShape::btMultiSphereShape (const btVector3* positions,const btScalar* radi,int numSpheres) +:btConvexInternalAabbCachingShape () +{ + m_shapeType = MULTI_SPHERE_SHAPE_PROXYTYPE; + //btScalar startMargin = btScalar(BT_LARGE_FLOAT); + + m_localPositionArray.resize(numSpheres); + m_radiArray.resize(numSpheres); + for (int i=0;i maxDot) + { + maxDot = newDot; + supVec = vtx; + } + } + + return supVec; + +} + + void btMultiSphereShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const +{ + + for (int j=0;j maxDot) + { + maxDot = newDot; + supportVerticesOut[j] = vtx; + } + } + } +} + + + + + + + + +void btMultiSphereShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const +{ + //as an approximation, take the inertia of the box that bounds the spheres + + btVector3 localAabbMin,localAabbMax; + getCachedLocalAabb(localAabbMin,localAabbMax); + btVector3 halfExtents = (localAabbMax-localAabbMin)*btScalar(0.5); + + btScalar lx=btScalar(2.)*(halfExtents.x()); + btScalar ly=btScalar(2.)*(halfExtents.y()); + btScalar lz=btScalar(2.)*(halfExtents.z()); + + inertia.setValue(mass/(btScalar(12.0)) * (ly*ly + lz*lz), + mass/(btScalar(12.0)) * (lx*lx + lz*lz), + mass/(btScalar(12.0)) * (lx*lx + ly*ly)); + +} + + +///fills the dataBuffer and returns the struct name (and 0 on failure) +const char* btMultiSphereShape::serialize(void* dataBuffer, btSerializer* serializer) const +{ + btMultiSphereShapeData* shapeData = (btMultiSphereShapeData*) dataBuffer; + btConvexInternalShape::serialize(&shapeData->m_convexInternalShapeData, serializer); + + int numElem = m_localPositionArray.size(); + shapeData->m_localPositionArrayPtr = numElem ? (btPositionAndRadius*)serializer->getUniquePointer((void*)&m_localPositionArray[0]): 0; + + shapeData->m_localPositionArraySize = numElem; + if (numElem) + { + btChunk* chunk = serializer->allocate(sizeof(btPositionAndRadius),numElem); + btPositionAndRadius* memPtr = (btPositionAndRadius*)chunk->m_oldPtr; + for (int i=0;im_pos); + memPtr->m_radius = float(m_radiArray[i]); + } + serializer->finalizeChunk(chunk,"btPositionAndRadius",BT_ARRAY_CODE,(void*)&m_localPositionArray[0]); + } + + return "btMultiSphereShapeData"; +} + + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btMultiSphereShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btMultiSphereShape.h new file mode 100644 index 00000000000..3db7e320889 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btMultiSphereShape.h @@ -0,0 +1,99 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef MULTI_SPHERE_MINKOWSKI_H +#define MULTI_SPHERE_MINKOWSKI_H + +#include "btConvexInternalShape.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types +#include "LinearMath/btAlignedObjectArray.h" +#include "LinearMath/btAabbUtil2.h" + + + +///The btMultiSphereShape represents the convex hull of a collection of spheres. You can create special capsules or other smooth volumes. +///It is possible to animate the spheres for deformation, but call 'recalcLocalAabb' after changing any sphere position/radius +class btMultiSphereShape : public btConvexInternalAabbCachingShape +{ + + btAlignedObjectArray m_localPositionArray; + btAlignedObjectArray m_radiArray; + +public: + btMultiSphereShape (const btVector3* positions,const btScalar* radi,int numSpheres); + + ///CollisionShape Interface + virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; + + /// btConvexShape Interface + virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const; + + virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const; + + int getSphereCount() const + { + return m_localPositionArray.size(); + } + + const btVector3& getSpherePosition(int index) const + { + return m_localPositionArray[index]; + } + + btScalar getSphereRadius(int index) const + { + return m_radiArray[index]; + } + + + virtual const char* getName()const + { + return "MultiSphere"; + } + + virtual int calculateSerializeBufferSize() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; + + +}; + + +struct btPositionAndRadius +{ + btVector3FloatData m_pos; + float m_radius; +}; + +struct btMultiSphereShapeData +{ + btConvexInternalShapeData m_convexInternalShapeData; + + btPositionAndRadius *m_localPositionArrayPtr; + int m_localPositionArraySize; + char m_padding[4]; +}; + + + +SIMD_FORCE_INLINE int btMultiSphereShape::calculateSerializeBufferSize() const +{ + return sizeof(btMultiSphereShapeData); +} + + + +#endif //MULTI_SPHERE_MINKOWSKI_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp new file mode 100644 index 00000000000..58799ac96ad --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp @@ -0,0 +1,45 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +/// This file was created by Alex Silverman + +#include "BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h" +#include "BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h" +//#include "BulletCollision/CollisionShapes/btOptimizedBvh.h" + + +///Obtains the material for a specific triangle +const btMaterial * btMultimaterialTriangleMeshShape::getMaterialProperties(int partID, int triIndex) +{ + const unsigned char * materialBase = 0; + int numMaterials; + PHY_ScalarType materialType; + int materialStride; + const unsigned char * triangleMaterialBase = 0; + int numTriangles; + int triangleMaterialStride; + PHY_ScalarType triangleType; + + ((btTriangleIndexVertexMaterialArray*)m_meshInterface)->getLockedReadOnlyMaterialBase(&materialBase, numMaterials, materialType, materialStride, + &triangleMaterialBase, numTriangles, triangleMaterialStride, triangleType, partID); + + // return the pointer to the place with the friction for the triangle + // TODO: This depends on whether it's a moving mesh or not + // BUG IN GIMPACT + //return (btScalar*)(&materialBase[triangleMaterialBase[(triIndex-1) * triangleMaterialStride] * materialStride]); + int * matInd = (int *)(&(triangleMaterialBase[(triIndex * triangleMaterialStride)])); + btMaterial *matVal = (btMaterial *)(&(materialBase[*matInd * materialStride])); + return (matVal); +} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h new file mode 100644 index 00000000000..d42ba114349 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h @@ -0,0 +1,121 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +/// This file was created by Alex Silverman + +#ifndef BVH_TRIANGLE_MATERIAL_MESH_SHAPE_H +#define BVH_TRIANGLE_MATERIAL_MESH_SHAPE_H + +#include "btBvhTriangleMeshShape.h" +#include "btMaterial.h" + +///The BvhTriangleMaterialMeshShape extends the btBvhTriangleMeshShape. Its main contribution is the interface into a material array, which allows per-triangle friction and restitution. +ATTRIBUTE_ALIGNED16(class) btMultimaterialTriangleMeshShape : public btBvhTriangleMeshShape +{ + btAlignedObjectArray m_materialList; + int ** m_triangleMaterials; + +public: + + BT_DECLARE_ALIGNED_ALLOCATOR(); + + btMultimaterialTriangleMeshShape(): btBvhTriangleMeshShape() {m_shapeType = MULTIMATERIAL_TRIANGLE_MESH_PROXYTYPE;} + btMultimaterialTriangleMeshShape(btStridingMeshInterface* meshInterface, bool useQuantizedAabbCompression, bool buildBvh = true): + btBvhTriangleMeshShape(meshInterface, useQuantizedAabbCompression, buildBvh) + { + m_shapeType = MULTIMATERIAL_TRIANGLE_MESH_PROXYTYPE; + + const unsigned char *vertexbase; + int numverts; + PHY_ScalarType type; + int stride; + const unsigned char *indexbase; + int indexstride; + int numfaces; + PHY_ScalarType indicestype; + + //m_materialLookup = (int**)(btAlignedAlloc(sizeof(int*) * meshInterface->getNumSubParts(), 16)); + + for(int i = 0; i < meshInterface->getNumSubParts(); i++) + { + m_meshInterface->getLockedReadOnlyVertexIndexBase( + &vertexbase, + numverts, + type, + stride, + &indexbase, + indexstride, + numfaces, + indicestype, + i); + //m_materialLookup[i] = (int*)(btAlignedAlloc(sizeof(int) * numfaces, 16)); + } + } + + ///optionally pass in a larger bvh aabb, used for quantization. This allows for deformations within this aabb + btMultimaterialTriangleMeshShape(btStridingMeshInterface* meshInterface, bool useQuantizedAabbCompression,const btVector3& bvhAabbMin,const btVector3& bvhAabbMax, bool buildBvh = true): + btBvhTriangleMeshShape(meshInterface, useQuantizedAabbCompression, bvhAabbMin, bvhAabbMax, buildBvh) + { + m_shapeType = MULTIMATERIAL_TRIANGLE_MESH_PROXYTYPE; + + const unsigned char *vertexbase; + int numverts; + PHY_ScalarType type; + int stride; + const unsigned char *indexbase; + int indexstride; + int numfaces; + PHY_ScalarType indicestype; + + //m_materialLookup = (int**)(btAlignedAlloc(sizeof(int*) * meshInterface->getNumSubParts(), 16)); + + for(int i = 0; i < meshInterface->getNumSubParts(); i++) + { + m_meshInterface->getLockedReadOnlyVertexIndexBase( + &vertexbase, + numverts, + type, + stride, + &indexbase, + indexstride, + numfaces, + indicestype, + i); + //m_materialLookup[i] = (int*)(btAlignedAlloc(sizeof(int) * numfaces * 2, 16)); + } + } + + virtual ~btMultimaterialTriangleMeshShape() + { +/* + for(int i = 0; i < m_meshInterface->getNumSubParts(); i++) + { + btAlignedFree(m_materialValues[i]); + m_materialLookup[i] = NULL; + } + btAlignedFree(m_materialValues); + m_materialLookup = NULL; +*/ + } + //debugging + virtual const char* getName()const {return "MULTIMATERIALTRIANGLEMESH";} + + ///Obtains the material for a specific triangle + const btMaterial * getMaterialProperties(int partID, int triIndex); + +} +; + +#endif //BVH_TRIANGLE_MATERIAL_MESH_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btOptimizedBvh.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btOptimizedBvh.cpp new file mode 100644 index 00000000000..981b8a2652c --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btOptimizedBvh.cpp @@ -0,0 +1,391 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btOptimizedBvh.h" +#include "btStridingMeshInterface.h" +#include "LinearMath/btAabbUtil2.h" +#include "LinearMath/btIDebugDraw.h" + + +btOptimizedBvh::btOptimizedBvh() +{ +} + +btOptimizedBvh::~btOptimizedBvh() +{ +} + + +void btOptimizedBvh::build(btStridingMeshInterface* triangles, bool useQuantizedAabbCompression, const btVector3& bvhAabbMin, const btVector3& bvhAabbMax) +{ + m_useQuantization = useQuantizedAabbCompression; + + + // NodeArray triangleNodes; + + struct NodeTriangleCallback : public btInternalTriangleIndexCallback + { + + NodeArray& m_triangleNodes; + + NodeTriangleCallback& operator=(NodeTriangleCallback& other) + { + m_triangleNodes = other.m_triangleNodes; + return *this; + } + + NodeTriangleCallback(NodeArray& triangleNodes) + :m_triangleNodes(triangleNodes) + { + } + + virtual void internalProcessTriangleIndex(btVector3* triangle,int partId,int triangleIndex) + { + btOptimizedBvhNode node; + btVector3 aabbMin,aabbMax; + aabbMin.setValue(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); + aabbMax.setValue(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); + aabbMin.setMin(triangle[0]); + aabbMax.setMax(triangle[0]); + aabbMin.setMin(triangle[1]); + aabbMax.setMax(triangle[1]); + aabbMin.setMin(triangle[2]); + aabbMax.setMax(triangle[2]); + + //with quantization? + node.m_aabbMinOrg = aabbMin; + node.m_aabbMaxOrg = aabbMax; + + node.m_escapeIndex = -1; + + //for child nodes + node.m_subPart = partId; + node.m_triangleIndex = triangleIndex; + m_triangleNodes.push_back(node); + } + }; + struct QuantizedNodeTriangleCallback : public btInternalTriangleIndexCallback + { + QuantizedNodeArray& m_triangleNodes; + const btQuantizedBvh* m_optimizedTree; // for quantization + + QuantizedNodeTriangleCallback& operator=(QuantizedNodeTriangleCallback& other) + { + m_triangleNodes = other.m_triangleNodes; + m_optimizedTree = other.m_optimizedTree; + return *this; + } + + QuantizedNodeTriangleCallback(QuantizedNodeArray& triangleNodes,const btQuantizedBvh* tree) + :m_triangleNodes(triangleNodes),m_optimizedTree(tree) + { + } + + virtual void internalProcessTriangleIndex(btVector3* triangle,int partId,int triangleIndex) + { + // The partId and triangle index must fit in the same (positive) integer + btAssert(partId < (1<=0); + + btQuantizedBvhNode node; + btVector3 aabbMin,aabbMax; + aabbMin.setValue(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); + aabbMax.setValue(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); + aabbMin.setMin(triangle[0]); + aabbMax.setMax(triangle[0]); + aabbMin.setMin(triangle[1]); + aabbMax.setMax(triangle[1]); + aabbMin.setMin(triangle[2]); + aabbMax.setMax(triangle[2]); + + //PCK: add these checks for zero dimensions of aabb + const btScalar MIN_AABB_DIMENSION = btScalar(0.002); + const btScalar MIN_AABB_HALF_DIMENSION = btScalar(0.001); + if (aabbMax.x() - aabbMin.x() < MIN_AABB_DIMENSION) + { + aabbMax.setX(aabbMax.x() + MIN_AABB_HALF_DIMENSION); + aabbMin.setX(aabbMin.x() - MIN_AABB_HALF_DIMENSION); + } + if (aabbMax.y() - aabbMin.y() < MIN_AABB_DIMENSION) + { + aabbMax.setY(aabbMax.y() + MIN_AABB_HALF_DIMENSION); + aabbMin.setY(aabbMin.y() - MIN_AABB_HALF_DIMENSION); + } + if (aabbMax.z() - aabbMin.z() < MIN_AABB_DIMENSION) + { + aabbMax.setZ(aabbMax.z() + MIN_AABB_HALF_DIMENSION); + aabbMin.setZ(aabbMin.z() - MIN_AABB_HALF_DIMENSION); + } + + m_optimizedTree->quantize(&node.m_quantizedAabbMin[0],aabbMin,0); + m_optimizedTree->quantize(&node.m_quantizedAabbMax[0],aabbMax,1); + + node.m_escapeIndexOrTriangleIndex = (partId<<(31-MAX_NUM_PARTS_IN_BITS)) | triangleIndex; + + m_triangleNodes.push_back(node); + } + }; + + + + int numLeafNodes = 0; + + + if (m_useQuantization) + { + + //initialize quantization values + setQuantizationValues(bvhAabbMin,bvhAabbMax); + + QuantizedNodeTriangleCallback callback(m_quantizedLeafNodes,this); + + + triangles->InternalProcessAllTriangles(&callback,m_bvhAabbMin,m_bvhAabbMax); + + //now we have an array of leafnodes in m_leafNodes + numLeafNodes = m_quantizedLeafNodes.size(); + + + m_quantizedContiguousNodes.resize(2*numLeafNodes); + + + } else + { + NodeTriangleCallback callback(m_leafNodes); + + btVector3 aabbMin(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); + btVector3 aabbMax(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); + + triangles->InternalProcessAllTriangles(&callback,aabbMin,aabbMax); + + //now we have an array of leafnodes in m_leafNodes + numLeafNodes = m_leafNodes.size(); + + m_contiguousNodes.resize(2*numLeafNodes); + } + + m_curNodeIndex = 0; + + buildTree(0,numLeafNodes); + + ///if the entire tree is small then subtree size, we need to create a header info for the tree + if(m_useQuantization && !m_SubtreeHeaders.size()) + { + btBvhSubtreeInfo& subtree = m_SubtreeHeaders.expand(); + subtree.setAabbFromQuantizeNode(m_quantizedContiguousNodes[0]); + subtree.m_rootNodeIndex = 0; + subtree.m_subtreeSize = m_quantizedContiguousNodes[0].isLeafNode() ? 1 : m_quantizedContiguousNodes[0].getEscapeIndex(); + } + + //PCK: update the copy of the size + m_subtreeHeaderCount = m_SubtreeHeaders.size(); + + //PCK: clear m_quantizedLeafNodes and m_leafNodes, they are temporary + m_quantizedLeafNodes.clear(); + m_leafNodes.clear(); +} + + + + +void btOptimizedBvh::refit(btStridingMeshInterface* meshInterface,const btVector3& aabbMin,const btVector3& aabbMax) +{ + if (m_useQuantization) + { + + setQuantizationValues(aabbMin,aabbMax); + + updateBvhNodes(meshInterface,0,m_curNodeIndex,0); + + ///now update all subtree headers + + int i; + for (i=0;i m_bvhAabbMin.getX()); + btAssert(aabbMin.getY() > m_bvhAabbMin.getY()); + btAssert(aabbMin.getZ() > m_bvhAabbMin.getZ()); + + btAssert(aabbMax.getX() < m_bvhAabbMax.getX()); + btAssert(aabbMax.getY() < m_bvhAabbMax.getY()); + btAssert(aabbMax.getZ() < m_bvhAabbMax.getZ()); + + ///we should update all quantization values, using updateBvhNodes(meshInterface); + ///but we only update chunks that overlap the given aabb + + unsigned short quantizedQueryAabbMin[3]; + unsigned short quantizedQueryAabbMax[3]; + + quantize(&quantizedQueryAabbMin[0],aabbMin,0); + quantize(&quantizedQueryAabbMax[0],aabbMax,1); + + int i; + for (i=0;im_SubtreeHeaders.size();i++) + { + btBvhSubtreeInfo& subtree = m_SubtreeHeaders[i]; + + //PCK: unsigned instead of bool + unsigned overlap = testQuantizedAabbAgainstQuantizedAabb(quantizedQueryAabbMin,quantizedQueryAabbMax,subtree.m_quantizedAabbMin,subtree.m_quantizedAabbMax); + if (overlap != 0) + { + updateBvhNodes(meshInterface,subtree.m_rootNodeIndex,subtree.m_rootNodeIndex+subtree.m_subtreeSize,i); + + subtree.setAabbFromQuantizeNode(m_quantizedContiguousNodes[subtree.m_rootNodeIndex]); + } + } + +} + +void btOptimizedBvh::updateBvhNodes(btStridingMeshInterface* meshInterface,int firstNode,int endNode,int index) +{ + (void)index; + + btAssert(m_useQuantization); + + int curNodeSubPart=-1; + + //get access info to trianglemesh data + const unsigned char *vertexbase = 0; + int numverts = 0; + PHY_ScalarType type = PHY_INTEGER; + int stride = 0; + const unsigned char *indexbase = 0; + int indexstride = 0; + int numfaces = 0; + PHY_ScalarType indicestype = PHY_INTEGER; + + btVector3 triangleVerts[3]; + btVector3 aabbMin,aabbMax; + const btVector3& meshScaling = meshInterface->getScaling(); + + int i; + for (i=endNode-1;i>=firstNode;i--) + { + + + btQuantizedBvhNode& curNode = m_quantizedContiguousNodes[i]; + if (curNode.isLeafNode()) + { + //recalc aabb from triangle data + int nodeSubPart = curNode.getPartId(); + int nodeTriangleIndex = curNode.getTriangleIndex(); + if (nodeSubPart != curNodeSubPart) + { + if (curNodeSubPart >= 0) + meshInterface->unLockReadOnlyVertexBase(curNodeSubPart); + meshInterface->getLockedReadOnlyVertexIndexBase(&vertexbase,numverts, type,stride,&indexbase,indexstride,numfaces,indicestype,nodeSubPart); + + curNodeSubPart = nodeSubPart; + btAssert(indicestype==PHY_INTEGER||indicestype==PHY_SHORT); + } + //triangles->getLockedReadOnlyVertexIndexBase(vertexBase,numVerts, + + unsigned int* gfxbase = (unsigned int*)(indexbase+nodeTriangleIndex*indexstride); + + + for (int j=2;j>=0;j--) + { + + int graphicsindex = indicestype==PHY_SHORT?((unsigned short*)gfxbase)[j]:gfxbase[j]; + if (type == PHY_FLOAT) + { + float* graphicsbase = (float*)(vertexbase+graphicsindex*stride); + triangleVerts[j] = btVector3( + graphicsbase[0]*meshScaling.getX(), + graphicsbase[1]*meshScaling.getY(), + graphicsbase[2]*meshScaling.getZ()); + } + else + { + double* graphicsbase = (double*)(vertexbase+graphicsindex*stride); + triangleVerts[j] = btVector3( btScalar(graphicsbase[0]*meshScaling.getX()), btScalar(graphicsbase[1]*meshScaling.getY()), btScalar(graphicsbase[2]*meshScaling.getZ())); + } + } + + + + aabbMin.setValue(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); + aabbMax.setValue(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); + aabbMin.setMin(triangleVerts[0]); + aabbMax.setMax(triangleVerts[0]); + aabbMin.setMin(triangleVerts[1]); + aabbMax.setMax(triangleVerts[1]); + aabbMin.setMin(triangleVerts[2]); + aabbMax.setMax(triangleVerts[2]); + + quantize(&curNode.m_quantizedAabbMin[0],aabbMin,0); + quantize(&curNode.m_quantizedAabbMax[0],aabbMax,1); + + } else + { + //combine aabb from both children + + btQuantizedBvhNode* leftChildNode = &m_quantizedContiguousNodes[i+1]; + + btQuantizedBvhNode* rightChildNode = leftChildNode->isLeafNode() ? &m_quantizedContiguousNodes[i+2] : + &m_quantizedContiguousNodes[i+1+leftChildNode->getEscapeIndex()]; + + + { + for (int i=0;i<3;i++) + { + curNode.m_quantizedAabbMin[i] = leftChildNode->m_quantizedAabbMin[i]; + if (curNode.m_quantizedAabbMin[i]>rightChildNode->m_quantizedAabbMin[i]) + curNode.m_quantizedAabbMin[i]=rightChildNode->m_quantizedAabbMin[i]; + + curNode.m_quantizedAabbMax[i] = leftChildNode->m_quantizedAabbMax[i]; + if (curNode.m_quantizedAabbMax[i] < rightChildNode->m_quantizedAabbMax[i]) + curNode.m_quantizedAabbMax[i] = rightChildNode->m_quantizedAabbMax[i]; + } + } + } + + } + + if (curNodeSubPart >= 0) + meshInterface->unLockReadOnlyVertexBase(curNodeSubPart); + + +} + +///deSerializeInPlace loads and initializes a BVH from a buffer in memory 'in place' +btOptimizedBvh* btOptimizedBvh::deSerializeInPlace(void *i_alignedDataBuffer, unsigned int i_dataBufferSize, bool i_swapEndian) +{ + btQuantizedBvh* bvh = btQuantizedBvh::deSerializeInPlace(i_alignedDataBuffer,i_dataBufferSize,i_swapEndian); + + //we don't add additional data so just do a static upcast + return static_cast(bvh); +} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btOptimizedBvh.h b/extern/bullet2/BulletCollision/CollisionShapes/btOptimizedBvh.h new file mode 100644 index 00000000000..749fe6005dd --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btOptimizedBvh.h @@ -0,0 +1,65 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +///Contains contributions from Disney Studio's + +#ifndef OPTIMIZED_BVH_H +#define OPTIMIZED_BVH_H + +#include "BulletCollision/BroadphaseCollision/btQuantizedBvh.h" + +class btStridingMeshInterface; + + +///The btOptimizedBvh extends the btQuantizedBvh to create AABB tree for triangle meshes, through the btStridingMeshInterface. +ATTRIBUTE_ALIGNED16(class) btOptimizedBvh : public btQuantizedBvh +{ + +public: + BT_DECLARE_ALIGNED_ALLOCATOR(); + +protected: + +public: + + btOptimizedBvh(); + + virtual ~btOptimizedBvh(); + + void build(btStridingMeshInterface* triangles,bool useQuantizedAabbCompression, const btVector3& bvhAabbMin, const btVector3& bvhAabbMax); + + void refit(btStridingMeshInterface* triangles,const btVector3& aabbMin,const btVector3& aabbMax); + + void refitPartial(btStridingMeshInterface* triangles,const btVector3& aabbMin, const btVector3& aabbMax); + + void updateBvhNodes(btStridingMeshInterface* meshInterface,int firstNode,int endNode,int index); + + /// Data buffer MUST be 16 byte aligned + virtual bool serializeInPlace(void *o_alignedDataBuffer, unsigned i_dataBufferSize, bool i_swapEndian) const + { + return btQuantizedBvh::serialize(o_alignedDataBuffer,i_dataBufferSize,i_swapEndian); + + } + + ///deSerializeInPlace loads and initializes a BVH from a buffer in memory 'in place' + static btOptimizedBvh *deSerializeInPlace(void *i_alignedDataBuffer, unsigned int i_dataBufferSize, bool i_swapEndian); + + +}; + + +#endif //OPTIMIZED_BVH_H + + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp new file mode 100644 index 00000000000..b1ecb3e432c --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp @@ -0,0 +1,193 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "BulletCollision/CollisionShapes/btPolyhedralConvexShape.h" + +btPolyhedralConvexShape::btPolyhedralConvexShape() :btConvexInternalShape() +{ + +} + + +btVector3 btPolyhedralConvexShape::localGetSupportingVertexWithoutMargin(const btVector3& vec0)const +{ + + + btVector3 supVec(0,0,0); +#ifndef __SPU__ + int i; + btScalar maxDot(btScalar(-BT_LARGE_FLOAT)); + + btVector3 vec = vec0; + btScalar lenSqr = vec.length2(); + if (lenSqr < btScalar(0.0001)) + { + vec.setValue(1,0,0); + } else + { + btScalar rlen = btScalar(1.) / btSqrt(lenSqr ); + vec *= rlen; + } + + btVector3 vtx; + btScalar newDot; + + for (i=0;i maxDot) + { + maxDot = newDot; + supVec = vtx; + } + } + + +#endif //__SPU__ + return supVec; +} + + + +void btPolyhedralConvexShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const +{ +#ifndef __SPU__ + int i; + + btVector3 vtx; + btScalar newDot; + + for (i=0;i supportVerticesOut[j][3]) + { + //WARNING: don't swap next lines, the w component would get overwritten! + supportVerticesOut[j] = vtx; + supportVerticesOut[j][3] = newDot; + } + } + } +#endif //__SPU__ +} + + + +void btPolyhedralConvexShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const +{ +#ifndef __SPU__ + //not yet, return box inertia + + btScalar margin = getMargin(); + + btTransform ident; + ident.setIdentity(); + btVector3 aabbMin,aabbMax; + getAabb(ident,aabbMin,aabbMax); + btVector3 halfExtents = (aabbMax-aabbMin)*btScalar(0.5); + + btScalar lx=btScalar(2.)*(halfExtents.x()+margin); + btScalar ly=btScalar(2.)*(halfExtents.y()+margin); + btScalar lz=btScalar(2.)*(halfExtents.z()+margin); + const btScalar x2 = lx*lx; + const btScalar y2 = ly*ly; + const btScalar z2 = lz*lz; + const btScalar scaledmass = mass * btScalar(0.08333333); + + inertia = scaledmass * (btVector3(y2+z2,x2+z2,x2+y2)); +#endif //__SPU__ +} + + + +void btPolyhedralConvexAabbCachingShape::setLocalScaling(const btVector3& scaling) +{ + btConvexInternalShape::setLocalScaling(scaling); + recalcLocalAabb(); +} + +btPolyhedralConvexAabbCachingShape::btPolyhedralConvexAabbCachingShape() +:btPolyhedralConvexShape(), +m_localAabbMin(1,1,1), +m_localAabbMax(-1,-1,-1), +m_isLocalAabbValid(false) +{ +} + +void btPolyhedralConvexAabbCachingShape::getAabb(const btTransform& trans,btVector3& aabbMin,btVector3& aabbMax) const +{ + getNonvirtualAabb(trans,aabbMin,aabbMax,getMargin()); +} + +void btPolyhedralConvexAabbCachingShape::recalcLocalAabb() +{ + m_isLocalAabbValid = true; + + #if 1 + static const btVector3 _directions[] = + { + btVector3( 1., 0., 0.), + btVector3( 0., 1., 0.), + btVector3( 0., 0., 1.), + btVector3( -1., 0., 0.), + btVector3( 0., -1., 0.), + btVector3( 0., 0., -1.) + }; + + btVector3 _supporting[] = + { + btVector3( 0., 0., 0.), + btVector3( 0., 0., 0.), + btVector3( 0., 0., 0.), + btVector3( 0., 0., 0.), + btVector3( 0., 0., 0.), + btVector3( 0., 0., 0.) + }; + + batchedUnitVectorGetSupportingVertexWithoutMargin(_directions, _supporting, 6); + + for ( int i = 0; i < 3; ++i ) + { + m_localAabbMax[i] = _supporting[i][i] + m_collisionMargin; + m_localAabbMin[i] = _supporting[i + 3][i] - m_collisionMargin; + } + + #else + + for (int i=0;i<3;i++) + { + btVector3 vec(btScalar(0.),btScalar(0.),btScalar(0.)); + vec[i] = btScalar(1.); + btVector3 tmp = localGetSupportingVertex(vec); + m_localAabbMax[i] = tmp[i]+m_collisionMargin; + vec[i] = btScalar(-1.); + tmp = localGetSupportingVertex(vec); + m_localAabbMin[i] = tmp[i]-m_collisionMargin; + } + #endif +} + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h new file mode 100644 index 00000000000..2c691b95652 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h @@ -0,0 +1,98 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BU_SHAPE +#define BU_SHAPE + +#include "LinearMath/btMatrix3x3.h" +#include "btConvexInternalShape.h" + + +///The btPolyhedralConvexShape is an internal interface class for polyhedral convex shapes. +class btPolyhedralConvexShape : public btConvexInternalShape +{ + +protected: + +public: + + btPolyhedralConvexShape(); + + //brute force implementations + + virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const; + virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const; + + virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; + + + virtual int getNumVertices() const = 0 ; + virtual int getNumEdges() const = 0; + virtual void getEdge(int i,btVector3& pa,btVector3& pb) const = 0; + virtual void getVertex(int i,btVector3& vtx) const = 0; + virtual int getNumPlanes() const = 0; + virtual void getPlane(btVector3& planeNormal,btVector3& planeSupport,int i ) const = 0; +// virtual int getIndex(int i) const = 0 ; + + virtual bool isInside(const btVector3& pt,btScalar tolerance) const = 0; + +}; + + +///The btPolyhedralConvexAabbCachingShape adds aabb caching to the btPolyhedralConvexShape +class btPolyhedralConvexAabbCachingShape : public btPolyhedralConvexShape +{ + + btVector3 m_localAabbMin; + btVector3 m_localAabbMax; + bool m_isLocalAabbValid; + +protected: + + void setCachedLocalAabb (const btVector3& aabbMin, const btVector3& aabbMax) + { + m_isLocalAabbValid = true; + m_localAabbMin = aabbMin; + m_localAabbMax = aabbMax; + } + + inline void getCachedLocalAabb (btVector3& aabbMin, btVector3& aabbMax) const + { + btAssert(m_isLocalAabbValid); + aabbMin = m_localAabbMin; + aabbMax = m_localAabbMax; + } + +public: + + btPolyhedralConvexAabbCachingShape(); + + inline void getNonvirtualAabb(const btTransform& trans,btVector3& aabbMin,btVector3& aabbMax, btScalar margin) const + { + + //lazy evaluation of local aabb + btAssert(m_isLocalAabbValid); + btTransformAabb(m_localAabbMin,m_localAabbMax,margin,trans,aabbMin,aabbMax); + } + + virtual void setLocalScaling(const btVector3& scaling); + + virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; + + void recalcLocalAabb(); + +}; + +#endif //BU_SHAPE diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp new file mode 100644 index 00000000000..d964e1e48ed --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp @@ -0,0 +1,121 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btScaledBvhTriangleMeshShape.h" + +btScaledBvhTriangleMeshShape::btScaledBvhTriangleMeshShape(btBvhTriangleMeshShape* childShape,const btVector3& localScaling) +:m_localScaling(localScaling),m_bvhTriMeshShape(childShape) +{ + m_shapeType = SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE; +} + +btScaledBvhTriangleMeshShape::~btScaledBvhTriangleMeshShape() +{ +} + + +class btScaledTriangleCallback : public btTriangleCallback +{ + btTriangleCallback* m_originalCallback; + + btVector3 m_localScaling; + +public: + + btScaledTriangleCallback(btTriangleCallback* originalCallback,const btVector3& localScaling) + :m_originalCallback(originalCallback), + m_localScaling(localScaling) + { + } + + virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex) + { + btVector3 newTriangle[3]; + newTriangle[0] = triangle[0]*m_localScaling; + newTriangle[1] = triangle[1]*m_localScaling; + newTriangle[2] = triangle[2]*m_localScaling; + m_originalCallback->processTriangle(&newTriangle[0],partId,triangleIndex); + } +}; + +void btScaledBvhTriangleMeshShape::processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const +{ + btScaledTriangleCallback scaledCallback(callback,m_localScaling); + + btVector3 invLocalScaling(1.f/m_localScaling.getX(),1.f/m_localScaling.getY(),1.f/m_localScaling.getZ()); + btVector3 scaledAabbMin,scaledAabbMax; + + ///support negative scaling + scaledAabbMin[0] = m_localScaling.getX() >= 0. ? aabbMin[0] * invLocalScaling[0] : aabbMax[0] * invLocalScaling[0]; + scaledAabbMin[1] = m_localScaling.getY() >= 0. ? aabbMin[1] * invLocalScaling[1] : aabbMax[1] * invLocalScaling[1]; + scaledAabbMin[2] = m_localScaling.getZ() >= 0. ? aabbMin[2] * invLocalScaling[2] : aabbMax[2] * invLocalScaling[2]; + + scaledAabbMax[0] = m_localScaling.getX() <= 0. ? aabbMin[0] * invLocalScaling[0] : aabbMax[0] * invLocalScaling[0]; + scaledAabbMax[1] = m_localScaling.getY() <= 0. ? aabbMin[1] * invLocalScaling[1] : aabbMax[1] * invLocalScaling[1]; + scaledAabbMax[2] = m_localScaling.getZ() <= 0. ? aabbMin[2] * invLocalScaling[2] : aabbMax[2] * invLocalScaling[2]; + + + m_bvhTriMeshShape->processAllTriangles(&scaledCallback,scaledAabbMin,scaledAabbMax); +} + + +void btScaledBvhTriangleMeshShape::getAabb(const btTransform& trans,btVector3& aabbMin,btVector3& aabbMax) const +{ + btVector3 localAabbMin = m_bvhTriMeshShape->getLocalAabbMin(); + btVector3 localAabbMax = m_bvhTriMeshShape->getLocalAabbMax(); + + btVector3 tmpLocalAabbMin = localAabbMin * m_localScaling; + btVector3 tmpLocalAabbMax = localAabbMax * m_localScaling; + + localAabbMin[0] = (m_localScaling.getX() >= 0.) ? tmpLocalAabbMin[0] : tmpLocalAabbMax[0]; + localAabbMin[1] = (m_localScaling.getY() >= 0.) ? tmpLocalAabbMin[1] : tmpLocalAabbMax[1]; + localAabbMin[2] = (m_localScaling.getZ() >= 0.) ? tmpLocalAabbMin[2] : tmpLocalAabbMax[2]; + localAabbMax[0] = (m_localScaling.getX() <= 0.) ? tmpLocalAabbMin[0] : tmpLocalAabbMax[0]; + localAabbMax[1] = (m_localScaling.getY() <= 0.) ? tmpLocalAabbMin[1] : tmpLocalAabbMax[1]; + localAabbMax[2] = (m_localScaling.getZ() <= 0.) ? tmpLocalAabbMin[2] : tmpLocalAabbMax[2]; + + btVector3 localHalfExtents = btScalar(0.5)*(localAabbMax-localAabbMin); + btScalar margin = m_bvhTriMeshShape->getMargin(); + localHalfExtents += btVector3(margin,margin,margin); + btVector3 localCenter = btScalar(0.5)*(localAabbMax+localAabbMin); + + btMatrix3x3 abs_b = trans.getBasis().absolute(); + + btVector3 center = trans(localCenter); + + btVector3 extent = btVector3(abs_b[0].dot(localHalfExtents), + abs_b[1].dot(localHalfExtents), + abs_b[2].dot(localHalfExtents)); + aabbMin = center - extent; + aabbMax = center + extent; + +} + +void btScaledBvhTriangleMeshShape::setLocalScaling(const btVector3& scaling) +{ + m_localScaling = scaling; +} + +const btVector3& btScaledBvhTriangleMeshShape::getLocalScaling() const +{ + return m_localScaling; +} + +void btScaledBvhTriangleMeshShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const +{ + ///don't make this a movable object! +// btAssert(0); +} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h new file mode 100644 index 00000000000..d720b1b4f89 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h @@ -0,0 +1,62 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SCALED_BVH_TRIANGLE_MESH_SHAPE_H +#define SCALED_BVH_TRIANGLE_MESH_SHAPE_H + +#include "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h" + + +///The btScaledBvhTriangleMeshShape allows to instance a scaled version of an existing btBvhTriangleMeshShape. +///Note that each btBvhTriangleMeshShape still can have its own local scaling, independent from this btScaledBvhTriangleMeshShape 'localScaling' +ATTRIBUTE_ALIGNED16(class) btScaledBvhTriangleMeshShape : public btConcaveShape +{ + + + btVector3 m_localScaling; + + btBvhTriangleMeshShape* m_bvhTriMeshShape; + +public: + + + btScaledBvhTriangleMeshShape(btBvhTriangleMeshShape* childShape,const btVector3& localScaling); + + virtual ~btScaledBvhTriangleMeshShape(); + + + virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; + virtual void setLocalScaling(const btVector3& scaling); + virtual const btVector3& getLocalScaling() const; + virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; + + virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const; + + btBvhTriangleMeshShape* getChildShape() + { + return m_bvhTriMeshShape; + } + + const btBvhTriangleMeshShape* getChildShape() const + { + return m_bvhTriMeshShape; + } + + //debugging + virtual const char* getName()const {return "SCALEDBVHTRIANGLEMESH";} + +}; + +#endif //BVH_TRIANGLE_MESH_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btShapeHull.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btShapeHull.cpp new file mode 100644 index 00000000000..3beaf865801 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btShapeHull.cpp @@ -0,0 +1,170 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +//btShapeHull was implemented by John McCutchan. + + +#include "btShapeHull.h" +#include "LinearMath/btConvexHull.h" + +#define NUM_UNITSPHERE_POINTS 42 + +btShapeHull::btShapeHull (const btConvexShape* shape) +{ + m_shape = shape; + m_vertices.clear (); + m_indices.clear(); + m_numIndices = 0; +} + +btShapeHull::~btShapeHull () +{ + m_indices.clear(); + m_vertices.clear (); +} + +bool +btShapeHull::buildHull (btScalar /*margin*/) +{ + int numSampleDirections = NUM_UNITSPHERE_POINTS; + { + int numPDA = m_shape->getNumPreferredPenetrationDirections(); + if (numPDA) + { + for (int i=0;igetPreferredPenetrationDirection(i,norm); + getUnitSpherePoints()[numSampleDirections] = norm; + numSampleDirections++; + } + } + } + + btVector3 supportPoints[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2]; + int i; + for (i = 0; i < numSampleDirections; i++) + { + supportPoints[i] = m_shape->localGetSupportingVertex(getUnitSpherePoints()[i]); + } + + HullDesc hd; + hd.mFlags = QF_TRIANGLES; + hd.mVcount = static_cast(numSampleDirections); + +#ifdef BT_USE_DOUBLE_PRECISION + hd.mVertices = &supportPoints[0]; + hd.mVertexStride = sizeof(btVector3); +#else + hd.mVertices = &supportPoints[0]; + hd.mVertexStride = sizeof (btVector3); +#endif + + HullLibrary hl; + HullResult hr; + if (hl.CreateConvexHull (hd, hr) == QE_FAIL) + { + return false; + } + + m_vertices.resize (static_cast(hr.mNumOutputVertices)); + + + for (i = 0; i < static_cast(hr.mNumOutputVertices); i++) + { + m_vertices[i] = hr.m_OutputVertices[i]; + } + m_numIndices = hr.mNumIndices; + m_indices.resize(static_cast(m_numIndices)); + for (i = 0; i < static_cast(m_numIndices); i++) + { + m_indices[i] = hr.m_Indices[i]; + } + + // free temporary hull result that we just copied + hl.ReleaseResult (hr); + + return true; +} + +int +btShapeHull::numTriangles () const +{ + return static_cast(m_numIndices / 3); +} + +int +btShapeHull::numVertices () const +{ + return m_vertices.size (); +} + +int +btShapeHull::numIndices () const +{ + return static_cast(m_numIndices); +} + + +btVector3* btShapeHull::getUnitSpherePoints() +{ + static btVector3 sUnitSpherePoints[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2] = + { + btVector3(btScalar(0.000000) , btScalar(-0.000000),btScalar(-1.000000)), + btVector3(btScalar(0.723608) , btScalar(-0.525725),btScalar(-0.447219)), + btVector3(btScalar(-0.276388) , btScalar(-0.850649),btScalar(-0.447219)), + btVector3(btScalar(-0.894426) , btScalar(-0.000000),btScalar(-0.447216)), + btVector3(btScalar(-0.276388) , btScalar(0.850649),btScalar(-0.447220)), + btVector3(btScalar(0.723608) , btScalar(0.525725),btScalar(-0.447219)), + btVector3(btScalar(0.276388) , btScalar(-0.850649),btScalar(0.447220)), + btVector3(btScalar(-0.723608) , btScalar(-0.525725),btScalar(0.447219)), + btVector3(btScalar(-0.723608) , btScalar(0.525725),btScalar(0.447219)), + btVector3(btScalar(0.276388) , btScalar(0.850649),btScalar(0.447219)), + btVector3(btScalar(0.894426) , btScalar(0.000000),btScalar(0.447216)), + btVector3(btScalar(-0.000000) , btScalar(0.000000),btScalar(1.000000)), + btVector3(btScalar(0.425323) , btScalar(-0.309011),btScalar(-0.850654)), + btVector3(btScalar(-0.162456) , btScalar(-0.499995),btScalar(-0.850654)), + btVector3(btScalar(0.262869) , btScalar(-0.809012),btScalar(-0.525738)), + btVector3(btScalar(0.425323) , btScalar(0.309011),btScalar(-0.850654)), + btVector3(btScalar(0.850648) , btScalar(-0.000000),btScalar(-0.525736)), + btVector3(btScalar(-0.525730) , btScalar(-0.000000),btScalar(-0.850652)), + btVector3(btScalar(-0.688190) , btScalar(-0.499997),btScalar(-0.525736)), + btVector3(btScalar(-0.162456) , btScalar(0.499995),btScalar(-0.850654)), + btVector3(btScalar(-0.688190) , btScalar(0.499997),btScalar(-0.525736)), + btVector3(btScalar(0.262869) , btScalar(0.809012),btScalar(-0.525738)), + btVector3(btScalar(0.951058) , btScalar(0.309013),btScalar(0.000000)), + btVector3(btScalar(0.951058) , btScalar(-0.309013),btScalar(0.000000)), + btVector3(btScalar(0.587786) , btScalar(-0.809017),btScalar(0.000000)), + btVector3(btScalar(0.000000) , btScalar(-1.000000),btScalar(0.000000)), + btVector3(btScalar(-0.587786) , btScalar(-0.809017),btScalar(0.000000)), + btVector3(btScalar(-0.951058) , btScalar(-0.309013),btScalar(-0.000000)), + btVector3(btScalar(-0.951058) , btScalar(0.309013),btScalar(-0.000000)), + btVector3(btScalar(-0.587786) , btScalar(0.809017),btScalar(-0.000000)), + btVector3(btScalar(-0.000000) , btScalar(1.000000),btScalar(-0.000000)), + btVector3(btScalar(0.587786) , btScalar(0.809017),btScalar(-0.000000)), + btVector3(btScalar(0.688190) , btScalar(-0.499997),btScalar(0.525736)), + btVector3(btScalar(-0.262869) , btScalar(-0.809012),btScalar(0.525738)), + btVector3(btScalar(-0.850648) , btScalar(0.000000),btScalar(0.525736)), + btVector3(btScalar(-0.262869) , btScalar(0.809012),btScalar(0.525738)), + btVector3(btScalar(0.688190) , btScalar(0.499997),btScalar(0.525736)), + btVector3(btScalar(0.525730) , btScalar(0.000000),btScalar(0.850652)), + btVector3(btScalar(0.162456) , btScalar(-0.499995),btScalar(0.850654)), + btVector3(btScalar(-0.425323) , btScalar(-0.309011),btScalar(0.850654)), + btVector3(btScalar(-0.425323) , btScalar(0.309011),btScalar(0.850654)), + btVector3(btScalar(0.162456) , btScalar(0.499995),btScalar(0.850654)) + }; + return sUnitSpherePoints; +} + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btShapeHull.h b/extern/bullet2/BulletCollision/CollisionShapes/btShapeHull.h new file mode 100644 index 00000000000..07b3500f994 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btShapeHull.h @@ -0,0 +1,59 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +///btShapeHull implemented by John McCutchan. + +#ifndef _SHAPE_HULL_H +#define _SHAPE_HULL_H + +#include "LinearMath/btAlignedObjectArray.h" +#include "BulletCollision/CollisionShapes/btConvexShape.h" + + +///The btShapeHull class takes a btConvexShape, builds a simplified convex hull using btConvexHull and provides triangle indices and vertices. +///It can be useful for to simplify a complex convex object and for visualization of a non-polyhedral convex object. +///It approximates the convex hull using the supporting vertex of 42 directions. +class btShapeHull +{ +protected: + + btAlignedObjectArray m_vertices; + btAlignedObjectArray m_indices; + unsigned int m_numIndices; + const btConvexShape* m_shape; + + static btVector3* getUnitSpherePoints(); + +public: + btShapeHull (const btConvexShape* shape); + ~btShapeHull (); + + bool buildHull (btScalar margin); + + int numTriangles () const; + int numVertices () const; + int numIndices () const; + + const btVector3* getVertexPointer() const + { + return &m_vertices[0]; + } + const unsigned int* getIndexPointer() const + { + return &m_indices[0]; + } +}; + +#endif //_SHAPE_HULL_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btSphereShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btSphereShape.cpp new file mode 100644 index 00000000000..b9a736c0fdd --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btSphereShape.cpp @@ -0,0 +1,71 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btSphereShape.h" +#include "BulletCollision/CollisionShapes/btCollisionMargin.h" + +#include "LinearMath/btQuaternion.h" + +btVector3 btSphereShape::localGetSupportingVertexWithoutMargin(const btVector3& vec)const +{ + (void)vec; + return btVector3(btScalar(0.),btScalar(0.),btScalar(0.)); +} + +void btSphereShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const +{ + (void)vectors; + + for (int i=0;iprocessTriangle(triangle,0,0); + + triangle[0] = projectedCenter - tangentDir0*radius - tangentDir1*radius; + triangle[1] = projectedCenter - tangentDir0*radius + tangentDir1*radius; + triangle[2] = projectedCenter + tangentDir0*radius + tangentDir1*radius; + + callback->processTriangle(triangle,0,1); + +} + +void btStaticPlaneShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const +{ + (void)mass; + + //moving concave objects not supported + + inertia.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); +} + +void btStaticPlaneShape::setLocalScaling(const btVector3& scaling) +{ + m_localScaling = scaling; +} +const btVector3& btStaticPlaneShape::getLocalScaling() const +{ + return m_localScaling; +} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btStaticPlaneShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btStaticPlaneShape.h new file mode 100644 index 00000000000..beb53ef33a1 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btStaticPlaneShape.h @@ -0,0 +1,103 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef STATIC_PLANE_SHAPE_H +#define STATIC_PLANE_SHAPE_H + +#include "btConcaveShape.h" + + +///The btStaticPlaneShape simulates an infinite non-moving (static) collision plane. +ATTRIBUTE_ALIGNED16(class) btStaticPlaneShape : public btConcaveShape +{ +protected: + btVector3 m_localAabbMin; + btVector3 m_localAabbMax; + + btVector3 m_planeNormal; + btScalar m_planeConstant; + btVector3 m_localScaling; + +public: + btStaticPlaneShape(const btVector3& planeNormal,btScalar planeConstant); + + virtual ~btStaticPlaneShape(); + + + virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; + + virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const; + + virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; + + virtual void setLocalScaling(const btVector3& scaling); + virtual const btVector3& getLocalScaling() const; + + const btVector3& getPlaneNormal() const + { + return m_planeNormal; + } + + const btScalar& getPlaneConstant() const + { + return m_planeConstant; + } + + //debugging + virtual const char* getName()const {return "STATICPLANE";} + + virtual int calculateSerializeBufferSize() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; + + +}; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btStaticPlaneShapeData +{ + btCollisionShapeData m_collisionShapeData; + + btVector3FloatData m_localScaling; + btVector3FloatData m_planeNormal; + float m_planeConstant; + char m_pad[4]; +}; + + +SIMD_FORCE_INLINE int btStaticPlaneShape::calculateSerializeBufferSize() const +{ + return sizeof(btStaticPlaneShapeData); +} + +///fills the dataBuffer and returns the struct name (and 0 on failure) +SIMD_FORCE_INLINE const char* btStaticPlaneShape::serialize(void* dataBuffer, btSerializer* serializer) const +{ + btStaticPlaneShapeData* planeData = (btStaticPlaneShapeData*) dataBuffer; + btCollisionShape::serialize(&planeData->m_collisionShapeData,serializer); + + m_localScaling.serializeFloat(planeData->m_localScaling); + m_planeNormal.serializeFloat(planeData->m_planeNormal); + planeData->m_planeConstant = float(m_planeConstant); + + return "btStaticPlaneShapeData"; +} + + +#endif //STATIC_PLANE_SHAPE_H + + + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp new file mode 100644 index 00000000000..8624531ab52 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp @@ -0,0 +1,331 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btStridingMeshInterface.h" +#include "LinearMath/btSerializer.h" + +btStridingMeshInterface::~btStridingMeshInterface() +{ + +} + + +void btStridingMeshInterface::InternalProcessAllTriangles(btInternalTriangleIndexCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const +{ + (void)aabbMin; + (void)aabbMax; + int numtotalphysicsverts = 0; + int part,graphicssubparts = getNumSubParts(); + const unsigned char * vertexbase; + const unsigned char * indexbase; + int indexstride; + PHY_ScalarType type; + PHY_ScalarType gfxindextype; + int stride,numverts,numtriangles; + int gfxindex; + btVector3 triangle[3]; + + btVector3 meshScaling = getScaling(); + + ///if the number of parts is big, the performance might drop due to the innerloop switch on indextype + for (part=0;partinternalProcessTriangleIndex(triangle,part,gfxindex); + } + break; + } + case PHY_SHORT: + { + for (gfxindex=0;gfxindexinternalProcessTriangleIndex(triangle,part,gfxindex); + } + break; + } + default: + btAssert((gfxindextype == PHY_INTEGER) || (gfxindextype == PHY_SHORT)); + } + break; + } + + case PHY_DOUBLE: + { + double* graphicsbase; + + switch (gfxindextype) + { + case PHY_INTEGER: + { + for (gfxindex=0;gfxindexinternalProcessTriangleIndex(triangle,part,gfxindex); + } + break; + } + case PHY_SHORT: + { + for (gfxindex=0;gfxindexinternalProcessTriangleIndex(triangle,part,gfxindex); + } + break; + } + default: + btAssert((gfxindextype == PHY_INTEGER) || (gfxindextype == PHY_SHORT)); + } + break; + } + default: + btAssert((type == PHY_FLOAT) || (type == PHY_DOUBLE)); + } + + unLockReadOnlyVertexBase(part); + } +} + +void btStridingMeshInterface::calculateAabbBruteForce(btVector3& aabbMin,btVector3& aabbMax) +{ + + struct AabbCalculationCallback : public btInternalTriangleIndexCallback + { + btVector3 m_aabbMin; + btVector3 m_aabbMax; + + AabbCalculationCallback() + { + m_aabbMin.setValue(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); + m_aabbMax.setValue(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); + } + + virtual void internalProcessTriangleIndex(btVector3* triangle,int partId,int triangleIndex) + { + (void)partId; + (void)triangleIndex; + + m_aabbMin.setMin(triangle[0]); + m_aabbMax.setMax(triangle[0]); + m_aabbMin.setMin(triangle[1]); + m_aabbMax.setMax(triangle[1]); + m_aabbMin.setMin(triangle[2]); + m_aabbMax.setMax(triangle[2]); + } + }; + + //first calculate the total aabb for all triangles + AabbCalculationCallback aabbCallback; + aabbMin.setValue(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); + aabbMax.setValue(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); + InternalProcessAllTriangles(&aabbCallback,aabbMin,aabbMax); + + aabbMin = aabbCallback.m_aabbMin; + aabbMax = aabbCallback.m_aabbMax; +} + + + +///fills the dataBuffer and returns the struct name (and 0 on failure) +const char* btStridingMeshInterface::serialize(void* dataBuffer, btSerializer* serializer) const +{ + btStridingMeshInterfaceData* trimeshData = (btStridingMeshInterfaceData*) dataBuffer; + + trimeshData->m_numMeshParts = getNumSubParts(); + + //void* uniquePtr = 0; + + trimeshData->m_meshPartsPtr = 0; + + if (trimeshData->m_numMeshParts) + { + btChunk* chunk = serializer->allocate(sizeof(btMeshPartData),trimeshData->m_numMeshParts); + btMeshPartData* memPtr = (btMeshPartData*)chunk->m_oldPtr; + trimeshData->m_meshPartsPtr = (btMeshPartData *)serializer->getUniquePointer(memPtr); + + + // int numtotalphysicsverts = 0; + int part,graphicssubparts = getNumSubParts(); + const unsigned char * vertexbase; + const unsigned char * indexbase; + int indexstride; + PHY_ScalarType type; + PHY_ScalarType gfxindextype; + int stride,numverts,numtriangles; + int gfxindex; + // btVector3 triangle[3]; + + btVector3 meshScaling = getScaling(); + + ///if the number of parts is big, the performance might drop due to the innerloop switch on indextype + for (part=0;partm_numTriangles = numtriangles;//indices = 3*numtriangles + memPtr->m_numVertices = numverts; + memPtr->m_indices16 = 0; + memPtr->m_indices32 = 0; + memPtr->m_3indices16 = 0; + memPtr->m_vertices3f = 0; + memPtr->m_vertices3d = 0; + + switch (gfxindextype) + { + case PHY_INTEGER: + { + int numindices = numtriangles*3; + + if (numindices) + { + btChunk* chunk = serializer->allocate(sizeof(btIntIndexData),numindices); + btIntIndexData* tmpIndices = (btIntIndexData*)chunk->m_oldPtr; + memPtr->m_indices32 = (btIntIndexData*)serializer->getUniquePointer(tmpIndices); + for (gfxindex=0;gfxindexfinalizeChunk(chunk,"btIntIndexData",BT_ARRAY_CODE,(void*)chunk->m_oldPtr); + } + break; + } + case PHY_SHORT: + { + if (numtriangles) + { + btChunk* chunk = serializer->allocate(sizeof(btShortIntIndexTripletData),numtriangles); + btShortIntIndexTripletData* tmpIndices = (btShortIntIndexTripletData*)chunk->m_oldPtr; + memPtr->m_3indices16 = (btShortIntIndexTripletData*) serializer->getUniquePointer(tmpIndices); + for (gfxindex=0;gfxindexfinalizeChunk(chunk,"btShortIntIndexTripletData",BT_ARRAY_CODE,(void*)chunk->m_oldPtr); + } + break; + } + default: + { + btAssert(0); + //unknown index type + } + } + + switch (type) + { + case PHY_FLOAT: + { + float* graphicsbase; + + if (numverts) + { + btChunk* chunk = serializer->allocate(sizeof(btVector3FloatData),numverts); + btVector3FloatData* tmpVertices = (btVector3FloatData*) chunk->m_oldPtr; + memPtr->m_vertices3f = (btVector3FloatData *)serializer->getUniquePointer(tmpVertices); + for (int i=0;ifinalizeChunk(chunk,"btVector3FloatData",BT_ARRAY_CODE,(void*)chunk->m_oldPtr); + } + break; + } + + case PHY_DOUBLE: + { + if (numverts) + { + btChunk* chunk = serializer->allocate(sizeof(btVector3DoubleData),numverts); + btVector3DoubleData* tmpVertices = (btVector3DoubleData*) chunk->m_oldPtr; + memPtr->m_vertices3d = (btVector3DoubleData *) serializer->getUniquePointer(tmpVertices); + for (int i=0;ifinalizeChunk(chunk,"btVector3DoubleData",BT_ARRAY_CODE,(void*)chunk->m_oldPtr); + } + break; + } + + default: + btAssert((type == PHY_FLOAT) || (type == PHY_DOUBLE)); + } + + unLockReadOnlyVertexBase(part); + } + + serializer->finalizeChunk(chunk,"btMeshPartData",BT_ARRAY_CODE,chunk->m_oldPtr); + } + + + m_scaling.serializeFloat(trimeshData->m_scaling); + return "btStridingMeshInterfaceData"; +} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btStridingMeshInterface.h b/extern/bullet2/BulletCollision/CollisionShapes/btStridingMeshInterface.h new file mode 100644 index 00000000000..e0c1b54f8a8 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btStridingMeshInterface.h @@ -0,0 +1,154 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef STRIDING_MESHINTERFACE_H +#define STRIDING_MESHINTERFACE_H + +#include "LinearMath/btVector3.h" +#include "btTriangleCallback.h" +#include "btConcaveShape.h" + + + + + +/// The btStridingMeshInterface is the interface class for high performance generic access to triangle meshes, used in combination with btBvhTriangleMeshShape and some other collision shapes. +/// Using index striding of 3*sizeof(integer) it can use triangle arrays, using index striding of 1*sizeof(integer) it can handle triangle strips. +/// It allows for sharing graphics and collision meshes. Also it provides locking/unlocking of graphics meshes that are in gpu memory. +class btStridingMeshInterface +{ + protected: + + btVector3 m_scaling; + + public: + btStridingMeshInterface() :m_scaling(btScalar(1.),btScalar(1.),btScalar(1.)) + { + + } + + virtual ~btStridingMeshInterface(); + + + + virtual void InternalProcessAllTriangles(btInternalTriangleIndexCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const; + + ///brute force method to calculate aabb + void calculateAabbBruteForce(btVector3& aabbMin,btVector3& aabbMax); + + /// get read and write access to a subpart of a triangle mesh + /// this subpart has a continuous array of vertices and indices + /// in this way the mesh can be handled as chunks of memory with striding + /// very similar to OpenGL vertexarray support + /// make a call to unLockVertexBase when the read and write access is finished + virtual void getLockedVertexIndexBase(unsigned char **vertexbase, int& numverts,PHY_ScalarType& type, int& stride,unsigned char **indexbase,int & indexstride,int& numfaces,PHY_ScalarType& indicestype,int subpart=0)=0; + + virtual void getLockedReadOnlyVertexIndexBase(const unsigned char **vertexbase, int& numverts,PHY_ScalarType& type, int& stride,const unsigned char **indexbase,int & indexstride,int& numfaces,PHY_ScalarType& indicestype,int subpart=0) const=0; + + /// unLockVertexBase finishes the access to a subpart of the triangle mesh + /// make a call to unLockVertexBase when the read and write access (using getLockedVertexIndexBase) is finished + virtual void unLockVertexBase(int subpart)=0; + + virtual void unLockReadOnlyVertexBase(int subpart) const=0; + + + /// getNumSubParts returns the number of seperate subparts + /// each subpart has a continuous array of vertices and indices + virtual int getNumSubParts() const=0; + + virtual void preallocateVertices(int numverts)=0; + virtual void preallocateIndices(int numindices)=0; + + virtual bool hasPremadeAabb() const { return false; } + virtual void setPremadeAabb(const btVector3& aabbMin, const btVector3& aabbMax ) const + { + (void) aabbMin; + (void) aabbMax; + } + virtual void getPremadeAabb(btVector3* aabbMin, btVector3* aabbMax ) const + { + (void) aabbMin; + (void) aabbMax; + } + + const btVector3& getScaling() const { + return m_scaling; + } + void setScaling(const btVector3& scaling) + { + m_scaling = scaling; + } + + virtual int calculateSerializeBufferSize() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; + + +}; + +struct btIntIndexData +{ + int m_value; +}; + +struct btShortIntIndexData +{ + short m_value; + char m_pad[2]; +}; + +struct btShortIntIndexTripletData +{ + short m_values[3]; + char m_pad[2]; +}; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btMeshPartData +{ + btVector3FloatData *m_vertices3f; + btVector3DoubleData *m_vertices3d; + + btIntIndexData *m_indices32; + btShortIntIndexTripletData *m_3indices16; + + btShortIntIndexData *m_indices16;//backwards compatibility + + int m_numTriangles;//length of m_indices = m_numTriangles + int m_numVertices; +}; + + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btStridingMeshInterfaceData +{ + btMeshPartData *m_meshPartsPtr; + btVector3FloatData m_scaling; + int m_numMeshParts; + char m_padding[4]; +}; + + + + +SIMD_FORCE_INLINE int btStridingMeshInterface::calculateSerializeBufferSize() const +{ + return sizeof(btStridingMeshInterfaceData); +} + + + +#endif //STRIDING_MESHINTERFACE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTetrahedronShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btTetrahedronShape.cpp new file mode 100644 index 00000000000..52f346bf726 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btTetrahedronShape.cpp @@ -0,0 +1,218 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btTetrahedronShape.h" +#include "LinearMath/btMatrix3x3.h" + +btBU_Simplex1to4::btBU_Simplex1to4() : btPolyhedralConvexAabbCachingShape (), +m_numVertices(0) +{ + m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; +} + +btBU_Simplex1to4::btBU_Simplex1to4(const btVector3& pt0) : btPolyhedralConvexAabbCachingShape (), +m_numVertices(0) +{ + m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; + addVertex(pt0); +} + +btBU_Simplex1to4::btBU_Simplex1to4(const btVector3& pt0,const btVector3& pt1) : btPolyhedralConvexAabbCachingShape (), +m_numVertices(0) +{ + m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; + addVertex(pt0); + addVertex(pt1); +} + +btBU_Simplex1to4::btBU_Simplex1to4(const btVector3& pt0,const btVector3& pt1,const btVector3& pt2) : btPolyhedralConvexAabbCachingShape (), +m_numVertices(0) +{ + m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; + addVertex(pt0); + addVertex(pt1); + addVertex(pt2); +} + +btBU_Simplex1to4::btBU_Simplex1to4(const btVector3& pt0,const btVector3& pt1,const btVector3& pt2,const btVector3& pt3) : btPolyhedralConvexAabbCachingShape (), +m_numVertices(0) +{ + m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; + addVertex(pt0); + addVertex(pt1); + addVertex(pt2); + addVertex(pt3); +} + + +void btBU_Simplex1to4::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const +{ +#if 1 + btPolyhedralConvexAabbCachingShape::getAabb(t,aabbMin,aabbMax); +#else + aabbMin.setValue(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT); + aabbMax.setValue(-BT_LARGE_FLOAT,-BT_LARGE_FLOAT,-BT_LARGE_FLOAT); + + //just transform the vertices in worldspace, and take their AABB + for (int i=0;iprocessAllTriangles(&triBuf,aabbMin, aabbMax); +/// for (int i=0;i m_triangleBuffer; + +public: + + + virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex); + + int getNumTriangles() const + { + return int(m_triangleBuffer.size()); + } + + const btTriangle& getTriangle(int index) const + { + return m_triangleBuffer[index]; + } + + void clearBuffer() + { + m_triangleBuffer.clear(); + } + +}; + + +#endif //BT_TRIANGLE_BUFFER_H + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleCallback.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleCallback.cpp new file mode 100644 index 00000000000..f558bf6d241 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleCallback.cpp @@ -0,0 +1,28 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btTriangleCallback.h" + +btTriangleCallback::~btTriangleCallback() +{ + +} + + +btInternalTriangleIndexCallback::~btInternalTriangleIndexCallback() +{ + +} + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleCallback.h b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleCallback.h new file mode 100644 index 00000000000..0499702b05b --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleCallback.h @@ -0,0 +1,42 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef TRIANGLE_CALLBACK_H +#define TRIANGLE_CALLBACK_H + +#include "LinearMath/btVector3.h" + + +///The btTriangleCallback provides a callback for each overlapping triangle when calling processAllTriangles. +///This callback is called by processAllTriangles for all btConcaveShape derived class, such as btBvhTriangleMeshShape, btStaticPlaneShape and btHeightfieldTerrainShape. +class btTriangleCallback +{ +public: + + virtual ~btTriangleCallback(); + virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex) = 0; +}; + +class btInternalTriangleIndexCallback +{ +public: + + virtual ~btInternalTriangleIndexCallback(); + virtual void internalProcessTriangleIndex(btVector3* triangle,int partId,int triangleIndex) = 0; +}; + + + +#endif //TRIANGLE_CALLBACK_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp new file mode 100644 index 00000000000..a665024cb61 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp @@ -0,0 +1,95 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btTriangleIndexVertexArray.h" + +btTriangleIndexVertexArray::btTriangleIndexVertexArray(int numTriangles,int* triangleIndexBase,int triangleIndexStride,int numVertices,btScalar* vertexBase,int vertexStride) +: m_hasAabb(0) +{ + btIndexedMesh mesh; + + mesh.m_numTriangles = numTriangles; + mesh.m_triangleIndexBase = (const unsigned char *)triangleIndexBase; + mesh.m_triangleIndexStride = triangleIndexStride; + mesh.m_numVertices = numVertices; + mesh.m_vertexBase = (const unsigned char *)vertexBase; + mesh.m_vertexStride = vertexStride; + + addIndexedMesh(mesh); + +} + +btTriangleIndexVertexArray::~btTriangleIndexVertexArray() +{ + +} + +void btTriangleIndexVertexArray::getLockedVertexIndexBase(unsigned char **vertexbase, int& numverts,PHY_ScalarType& type, int& vertexStride,unsigned char **indexbase,int & indexstride,int& numfaces,PHY_ScalarType& indicestype,int subpart) +{ + btAssert(subpart< getNumSubParts() ); + + btIndexedMesh& mesh = m_indexedMeshes[subpart]; + + numverts = mesh.m_numVertices; + (*vertexbase) = (unsigned char *) mesh.m_vertexBase; + + type = mesh.m_vertexType; + + vertexStride = mesh.m_vertexStride; + + numfaces = mesh.m_numTriangles; + + (*indexbase) = (unsigned char *)mesh.m_triangleIndexBase; + indexstride = mesh.m_triangleIndexStride; + indicestype = mesh.m_indexType; +} + +void btTriangleIndexVertexArray::getLockedReadOnlyVertexIndexBase(const unsigned char **vertexbase, int& numverts,PHY_ScalarType& type, int& vertexStride,const unsigned char **indexbase,int & indexstride,int& numfaces,PHY_ScalarType& indicestype,int subpart) const +{ + const btIndexedMesh& mesh = m_indexedMeshes[subpart]; + + numverts = mesh.m_numVertices; + (*vertexbase) = (const unsigned char *)mesh.m_vertexBase; + + type = mesh.m_vertexType; + + vertexStride = mesh.m_vertexStride; + + numfaces = mesh.m_numTriangles; + (*indexbase) = (const unsigned char *)mesh.m_triangleIndexBase; + indexstride = mesh.m_triangleIndexStride; + indicestype = mesh.m_indexType; +} + +bool btTriangleIndexVertexArray::hasPremadeAabb() const +{ + return (m_hasAabb == 1); +} + + +void btTriangleIndexVertexArray::setPremadeAabb(const btVector3& aabbMin, const btVector3& aabbMax ) const +{ + m_aabbMin = aabbMin; + m_aabbMax = aabbMax; + m_hasAabb = 1; // this is intentionally an int see notes in header +} + +void btTriangleIndexVertexArray::getPremadeAabb(btVector3* aabbMin, btVector3* aabbMax ) const +{ + *aabbMin = m_aabbMin; + *aabbMax = m_aabbMax; +} + + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h new file mode 100644 index 00000000000..c64ea6e7043 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h @@ -0,0 +1,131 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_TRIANGLE_INDEX_VERTEX_ARRAY_H +#define BT_TRIANGLE_INDEX_VERTEX_ARRAY_H + +#include "btStridingMeshInterface.h" +#include "LinearMath/btAlignedObjectArray.h" +#include "LinearMath/btScalar.h" + + +///The btIndexedMesh indexes a single vertex and index array. Multiple btIndexedMesh objects can be passed into a btTriangleIndexVertexArray using addIndexedMesh. +///Instead of the number of indices, we pass the number of triangles. +ATTRIBUTE_ALIGNED16( struct) btIndexedMesh +{ + BT_DECLARE_ALIGNED_ALLOCATOR(); + + int m_numTriangles; + const unsigned char * m_triangleIndexBase; + int m_triangleIndexStride; + int m_numVertices; + const unsigned char * m_vertexBase; + int m_vertexStride; + + // The index type is set when adding an indexed mesh to the + // btTriangleIndexVertexArray, do not set it manually + PHY_ScalarType m_indexType; + + // The vertex type has a default type similar to Bullet's precision mode (float or double) + // but can be set manually if you for example run Bullet with double precision but have + // mesh data in single precision.. + PHY_ScalarType m_vertexType; + + + btIndexedMesh() + :m_indexType(PHY_INTEGER), +#ifdef BT_USE_DOUBLE_PRECISION + m_vertexType(PHY_DOUBLE) +#else // BT_USE_DOUBLE_PRECISION + m_vertexType(PHY_FLOAT) +#endif // BT_USE_DOUBLE_PRECISION + { + } +} +; + + +typedef btAlignedObjectArray IndexedMeshArray; + +///The btTriangleIndexVertexArray allows to access multiple triangle meshes, by indexing into existing triangle/index arrays. +///Additional meshes can be added using addIndexedMesh +///No duplcate is made of the vertex/index data, it only indexes into external vertex/index arrays. +///So keep those arrays around during the lifetime of this btTriangleIndexVertexArray. +ATTRIBUTE_ALIGNED16( class) btTriangleIndexVertexArray : public btStridingMeshInterface +{ +protected: + IndexedMeshArray m_indexedMeshes; + int m_pad[2]; + mutable int m_hasAabb; // using int instead of bool to maintain alignment + mutable btVector3 m_aabbMin; + mutable btVector3 m_aabbMax; + +public: + + BT_DECLARE_ALIGNED_ALLOCATOR(); + + btTriangleIndexVertexArray() : m_hasAabb(0) + { + } + + virtual ~btTriangleIndexVertexArray(); + + //just to be backwards compatible + btTriangleIndexVertexArray(int numTriangles,int* triangleIndexBase,int triangleIndexStride,int numVertices,btScalar* vertexBase,int vertexStride); + + void addIndexedMesh(const btIndexedMesh& mesh, PHY_ScalarType indexType = PHY_INTEGER) + { + m_indexedMeshes.push_back(mesh); + m_indexedMeshes[m_indexedMeshes.size()-1].m_indexType = indexType; + } + + + virtual void getLockedVertexIndexBase(unsigned char **vertexbase, int& numverts,PHY_ScalarType& type, int& vertexStride,unsigned char **indexbase,int & indexstride,int& numfaces,PHY_ScalarType& indicestype,int subpart=0); + + virtual void getLockedReadOnlyVertexIndexBase(const unsigned char **vertexbase, int& numverts,PHY_ScalarType& type, int& vertexStride,const unsigned char **indexbase,int & indexstride,int& numfaces,PHY_ScalarType& indicestype,int subpart=0) const; + + /// unLockVertexBase finishes the access to a subpart of the triangle mesh + /// make a call to unLockVertexBase when the read and write access (using getLockedVertexIndexBase) is finished + virtual void unLockVertexBase(int subpart) {(void)subpart;} + + virtual void unLockReadOnlyVertexBase(int subpart) const {(void)subpart;} + + /// getNumSubParts returns the number of seperate subparts + /// each subpart has a continuous array of vertices and indices + virtual int getNumSubParts() const { + return (int)m_indexedMeshes.size(); + } + + IndexedMeshArray& getIndexedMeshArray() + { + return m_indexedMeshes; + } + + const IndexedMeshArray& getIndexedMeshArray() const + { + return m_indexedMeshes; + } + + virtual void preallocateVertices(int numverts){(void) numverts;} + virtual void preallocateIndices(int numindices){(void) numindices;} + + virtual bool hasPremadeAabb() const; + virtual void setPremadeAabb(const btVector3& aabbMin, const btVector3& aabbMax ) const; + virtual void getPremadeAabb(btVector3* aabbMin, btVector3* aabbMax ) const; + +} +; + +#endif //BT_TRIANGLE_INDEX_VERTEX_ARRAY_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp new file mode 100644 index 00000000000..dc562941ad6 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp @@ -0,0 +1,86 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +///This file was created by Alex Silverman + +#include "btTriangleIndexVertexMaterialArray.h" + +btTriangleIndexVertexMaterialArray::btTriangleIndexVertexMaterialArray(int numTriangles,int* triangleIndexBase,int triangleIndexStride, + int numVertices,btScalar* vertexBase,int vertexStride, + int numMaterials, unsigned char* materialBase, int materialStride, + int* triangleMaterialsBase, int materialIndexStride) : +btTriangleIndexVertexArray(numTriangles, triangleIndexBase, triangleIndexStride, numVertices, vertexBase, vertexStride) +{ + btMaterialProperties mat; + + mat.m_numMaterials = numMaterials; + mat.m_materialBase = materialBase; + mat.m_materialStride = materialStride; +#ifdef BT_USE_DOUBLE_PRECISION + mat.m_materialType = PHY_DOUBLE; +#else + mat.m_materialType = PHY_FLOAT; +#endif + + mat.m_numTriangles = numTriangles; + mat.m_triangleMaterialsBase = (unsigned char *)triangleMaterialsBase; + mat.m_triangleMaterialStride = materialIndexStride; + mat.m_triangleType = PHY_INTEGER; + + addMaterialProperties(mat); +} + + +void btTriangleIndexVertexMaterialArray::getLockedMaterialBase(unsigned char **materialBase, int& numMaterials, PHY_ScalarType& materialType, int& materialStride, + unsigned char ** triangleMaterialBase, int& numTriangles, int& triangleMaterialStride, PHY_ScalarType& triangleType, int subpart) +{ + btAssert(subpart< getNumSubParts() ); + + btMaterialProperties& mats = m_materials[subpart]; + + numMaterials = mats.m_numMaterials; + (*materialBase) = (unsigned char *) mats.m_materialBase; +#ifdef BT_USE_DOUBLE_PRECISION + materialType = PHY_DOUBLE; +#else + materialType = PHY_FLOAT; +#endif + materialStride = mats.m_materialStride; + + numTriangles = mats.m_numTriangles; + (*triangleMaterialBase) = (unsigned char *)mats.m_triangleMaterialsBase; + triangleMaterialStride = mats.m_triangleMaterialStride; + triangleType = mats.m_triangleType; +} + +void btTriangleIndexVertexMaterialArray::getLockedReadOnlyMaterialBase(const unsigned char **materialBase, int& numMaterials, PHY_ScalarType& materialType, int& materialStride, + const unsigned char ** triangleMaterialBase, int& numTriangles, int& triangleMaterialStride, PHY_ScalarType& triangleType, int subpart) +{ + btMaterialProperties& mats = m_materials[subpart]; + + numMaterials = mats.m_numMaterials; + (*materialBase) = (const unsigned char *) mats.m_materialBase; +#ifdef BT_USE_DOUBLE_PRECISION + materialType = PHY_DOUBLE; +#else + materialType = PHY_FLOAT; +#endif + materialStride = mats.m_materialStride; + + numTriangles = mats.m_numTriangles; + (*triangleMaterialBase) = (const unsigned char *)mats.m_triangleMaterialsBase; + triangleMaterialStride = mats.m_triangleMaterialStride; + triangleType = mats.m_triangleType; +} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h new file mode 100644 index 00000000000..ba4f7b46076 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h @@ -0,0 +1,84 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +///This file was created by Alex Silverman + +#ifndef BT_MULTIMATERIAL_TRIANGLE_INDEX_VERTEX_ARRAY_H +#define BT_MULTIMATERIAL_TRIANGLE_INDEX_VERTEX_ARRAY_H + +#include "btTriangleIndexVertexArray.h" + + +ATTRIBUTE_ALIGNED16( struct) btMaterialProperties +{ + ///m_materialBase ==========> 2 btScalar values make up one material, friction then restitution + int m_numMaterials; + const unsigned char * m_materialBase; + int m_materialStride; + PHY_ScalarType m_materialType; + ///m_numTriangles <=========== This exists in the btIndexedMesh object for the same subpart, but since we're + /// padding the structure, it can be reproduced at no real cost + ///m_triangleMaterials =====> 1 integer value makes up one entry + /// eg: m_triangleMaterials[1] = 5; // This will set triangle 2 to use material 5 + int m_numTriangles; + const unsigned char * m_triangleMaterialsBase; + int m_triangleMaterialStride; + ///m_triangleType <========== Automatically set in addMaterialProperties + PHY_ScalarType m_triangleType; +}; + +typedef btAlignedObjectArray MaterialArray; + +///Teh btTriangleIndexVertexMaterialArray is built on TriangleIndexVertexArray +///The addition of a material array allows for the utilization of the partID and +///triangleIndex that are returned in the ContactAddedCallback. As with +///TriangleIndexVertexArray, no duplicate is made of the material data, so it +///is the users responsibility to maintain the array during the lifetime of the +///TriangleIndexVertexMaterialArray. +ATTRIBUTE_ALIGNED16(class) btTriangleIndexVertexMaterialArray : public btTriangleIndexVertexArray +{ +protected: + MaterialArray m_materials; + +public: + BT_DECLARE_ALIGNED_ALLOCATOR(); + + btTriangleIndexVertexMaterialArray() + { + } + + btTriangleIndexVertexMaterialArray(int numTriangles,int* triangleIndexBase,int triangleIndexStride, + int numVertices,btScalar* vertexBase,int vertexStride, + int numMaterials, unsigned char* materialBase, int materialStride, + int* triangleMaterialsBase, int materialIndexStride); + + virtual ~btTriangleIndexVertexMaterialArray() {} + + void addMaterialProperties(const btMaterialProperties& mat, PHY_ScalarType triangleType = PHY_INTEGER) + { + m_materials.push_back(mat); + m_materials[m_materials.size()-1].m_triangleType = triangleType; + } + + virtual void getLockedMaterialBase(unsigned char **materialBase, int& numMaterials, PHY_ScalarType& materialType, int& materialStride, + unsigned char ** triangleMaterialBase, int& numTriangles, int& triangleMaterialStride, PHY_ScalarType& triangleType ,int subpart = 0); + + virtual void getLockedReadOnlyMaterialBase(const unsigned char **materialBase, int& numMaterials, PHY_ScalarType& materialType, int& materialStride, + const unsigned char ** triangleMaterialBase, int& numTriangles, int& triangleMaterialStride, PHY_ScalarType& triangleType, int subpart = 0); + +} +; + +#endif //BT_MULTIMATERIAL_TRIANGLE_INDEX_VERTEX_ARRAY_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleInfoMap.h b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleInfoMap.h new file mode 100644 index 00000000000..282a7702e80 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleInfoMap.h @@ -0,0 +1,238 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2010 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _BT_TRIANGLE_INFO_MAP_H +#define _BT_TRIANGLE_INFO_MAP_H + + +#include "LinearMath/btHashMap.h" +#include "LinearMath/btSerializer.h" + + +///for btTriangleInfo m_flags +#define TRI_INFO_V0V1_CONVEX 1 +#define TRI_INFO_V1V2_CONVEX 2 +#define TRI_INFO_V2V0_CONVEX 4 + +#define TRI_INFO_V0V1_SWAP_NORMALB 8 +#define TRI_INFO_V1V2_SWAP_NORMALB 16 +#define TRI_INFO_V2V0_SWAP_NORMALB 32 + + +///The btTriangleInfo structure stores information to adjust collision normals to avoid collisions against internal edges +///it can be generated using +struct btTriangleInfo +{ + btTriangleInfo() + { + m_edgeV0V1Angle = SIMD_2_PI; + m_edgeV1V2Angle = SIMD_2_PI; + m_edgeV2V0Angle = SIMD_2_PI; + m_flags=0; + } + + int m_flags; + + btScalar m_edgeV0V1Angle; + btScalar m_edgeV1V2Angle; + btScalar m_edgeV2V0Angle; + +}; + +typedef btHashMap btInternalTriangleInfoMap; + + +///The btTriangleInfoMap stores edge angle information for some triangles. You can compute this information yourself or using btGenerateInternalEdgeInfo. +struct btTriangleInfoMap : public btInternalTriangleInfoMap +{ + btScalar m_convexEpsilon;///used to determine if an edge or contact normal is convex, using the dot product + btScalar m_planarEpsilon; ///used to determine if a triangle edge is planar with zero angle + btScalar m_equalVertexThreshold; ///used to compute connectivity: if the distance between two vertices is smaller than m_equalVertexThreshold, they are considered to be 'shared' + btScalar m_edgeDistanceThreshold; ///used to determine edge contacts: if the closest distance between a contact point and an edge is smaller than this distance threshold it is considered to "hit the edge" + btScalar m_zeroAreaThreshold; ///used to determine if a triangle is degenerate (length squared of cross product of 2 triangle edges < threshold) + + + btTriangleInfoMap() + { + m_convexEpsilon = 0.00f; + m_planarEpsilon = 0.0001f; + m_equalVertexThreshold = btScalar(0.0001)*btScalar(0.0001); + m_edgeDistanceThreshold = btScalar(0.1); + m_zeroAreaThreshold = btScalar(0.0001)*btScalar(0.0001); + } + virtual ~btTriangleInfoMap() {} + + virtual int calculateSerializeBufferSize() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; + + void deSerialize(struct btTriangleInfoMapData& data); + +}; + +struct btTriangleInfoData +{ + int m_flags; + float m_edgeV0V1Angle; + float m_edgeV1V2Angle; + float m_edgeV2V0Angle; +}; + +struct btTriangleInfoMapData +{ + int *m_hashTablePtr; + int *m_nextPtr; + btTriangleInfoData *m_valueArrayPtr; + int *m_keyArrayPtr; + + float m_convexEpsilon; + float m_planarEpsilon; + float m_equalVertexThreshold; + float m_edgeDistanceThreshold; + float m_zeroAreaThreshold; + + int m_nextSize; + int m_hashTableSize; + int m_numValues; + int m_numKeys; + char m_padding[4]; +}; + +SIMD_FORCE_INLINE int btTriangleInfoMap::calculateSerializeBufferSize() const +{ + return sizeof(btTriangleInfoMapData); +} + +///fills the dataBuffer and returns the struct name (and 0 on failure) +SIMD_FORCE_INLINE const char* btTriangleInfoMap::serialize(void* dataBuffer, btSerializer* serializer) const +{ + btTriangleInfoMapData* tmapData = (btTriangleInfoMapData*) dataBuffer; + tmapData->m_convexEpsilon = m_convexEpsilon; + tmapData->m_planarEpsilon = m_planarEpsilon; + tmapData->m_equalVertexThreshold = m_equalVertexThreshold; + tmapData->m_edgeDistanceThreshold = m_edgeDistanceThreshold; + tmapData->m_zeroAreaThreshold = m_zeroAreaThreshold; + + tmapData->m_hashTableSize = m_hashTable.size(); + + tmapData->m_hashTablePtr = tmapData->m_hashTableSize ? (int*)serializer->getUniquePointer((void*)&m_hashTable[0]) : 0; + if (tmapData->m_hashTablePtr) + { + //serialize an int buffer + int sz = sizeof(int); + int numElem = tmapData->m_hashTableSize; + btChunk* chunk = serializer->allocate(sz,numElem); + int* memPtr = (int*)chunk->m_oldPtr; + for (int i=0;ifinalizeChunk(chunk,"int",BT_ARRAY_CODE,(void*)&m_hashTable[0]); + + } + + tmapData->m_nextSize = m_next.size(); + tmapData->m_nextPtr = tmapData->m_nextSize? (int*)serializer->getUniquePointer((void*)&m_next[0]): 0; + if (tmapData->m_nextPtr) + { + int sz = sizeof(int); + int numElem = tmapData->m_nextSize; + btChunk* chunk = serializer->allocate(sz,numElem); + int* memPtr = (int*)chunk->m_oldPtr; + for (int i=0;ifinalizeChunk(chunk,"int",BT_ARRAY_CODE,(void*)&m_next[0]); + } + + tmapData->m_numValues = m_valueArray.size(); + tmapData->m_valueArrayPtr = tmapData->m_numValues ? (btTriangleInfoData*)serializer->getUniquePointer((void*)&m_valueArray[0]): 0; + if (tmapData->m_valueArrayPtr) + { + int sz = sizeof(btTriangleInfoData); + int numElem = tmapData->m_numValues; + btChunk* chunk = serializer->allocate(sz,numElem); + btTriangleInfoData* memPtr = (btTriangleInfoData*)chunk->m_oldPtr; + for (int i=0;im_edgeV0V1Angle = m_valueArray[i].m_edgeV0V1Angle; + memPtr->m_edgeV1V2Angle = m_valueArray[i].m_edgeV1V2Angle; + memPtr->m_edgeV2V0Angle = m_valueArray[i].m_edgeV2V0Angle; + memPtr->m_flags = m_valueArray[i].m_flags; + } + serializer->finalizeChunk(chunk,"btTriangleInfoData",BT_ARRAY_CODE,(void*) &m_valueArray[0]); + } + + tmapData->m_numKeys = m_keyArray.size(); + tmapData->m_keyArrayPtr = tmapData->m_numKeys ? (int*)serializer->getUniquePointer((void*)&m_keyArray[0]) : 0; + if (tmapData->m_keyArrayPtr) + { + int sz = sizeof(int); + int numElem = tmapData->m_numValues; + btChunk* chunk = serializer->allocate(sz,numElem); + int* memPtr = (int*)chunk->m_oldPtr; + for (int i=0;ifinalizeChunk(chunk,"int",BT_ARRAY_CODE,(void*) &m_keyArray[0]); + + } + return "btTriangleInfoMapData"; +} + + + +///fills the dataBuffer and returns the struct name (and 0 on failure) +SIMD_FORCE_INLINE void btTriangleInfoMap::deSerialize(btTriangleInfoMapData& tmapData ) +{ + + + m_convexEpsilon = tmapData.m_convexEpsilon; + m_planarEpsilon = tmapData.m_planarEpsilon; + m_equalVertexThreshold = tmapData.m_equalVertexThreshold; + m_edgeDistanceThreshold = tmapData.m_edgeDistanceThreshold; + m_zeroAreaThreshold = tmapData.m_zeroAreaThreshold; + m_hashTable.resize(tmapData.m_hashTableSize); + int i =0; + for (i=0;i m_4componentVertices; + btAlignedObjectArray m_3componentVertices; + + btAlignedObjectArray m_32bitIndices; + btAlignedObjectArray m_16bitIndices; + bool m_use32bitIndices; + bool m_use4componentVertices; + + + public: + btScalar m_weldingThreshold; + + btTriangleMesh (bool use32bitIndices=true,bool use4componentVertices=true); + + bool getUse32bitIndices() const + { + return m_use32bitIndices; + } + + bool getUse4componentVertices() const + { + return m_use4componentVertices; + } + ///By default addTriangle won't search for duplicate vertices, because the search is very slow for large triangle meshes. + ///In general it is better to directly use btTriangleIndexVertexArray instead. + void addTriangle(const btVector3& vertex0,const btVector3& vertex1,const btVector3& vertex2, bool removeDuplicateVertices=false); + + int getNumTriangles() const; + + virtual void preallocateVertices(int numverts){(void) numverts;} + virtual void preallocateIndices(int numindices){(void) numindices;} + + ///findOrAddVertex is an internal method, use addTriangle instead + int findOrAddVertex(const btVector3& vertex, bool removeDuplicateVertices); + ///addIndex is an internal method, use addTriangle instead + void addIndex(int index); + +}; + +#endif //TRIANGLE_MESH_H + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp new file mode 100644 index 00000000000..683684da770 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp @@ -0,0 +1,211 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btTriangleMeshShape.h" +#include "LinearMath/btVector3.h" +#include "LinearMath/btQuaternion.h" +#include "btStridingMeshInterface.h" +#include "LinearMath/btAabbUtil2.h" +#include "BulletCollision/CollisionShapes/btCollisionMargin.h" + + +btTriangleMeshShape::btTriangleMeshShape(btStridingMeshInterface* meshInterface) +: btConcaveShape (), m_meshInterface(meshInterface) +{ + m_shapeType = TRIANGLE_MESH_SHAPE_PROXYTYPE; + if(meshInterface->hasPremadeAabb()) + { + meshInterface->getPremadeAabb(&m_localAabbMin, &m_localAabbMax); + } + else + { + recalcLocalAabb(); + } +} + + +btTriangleMeshShape::~btTriangleMeshShape() +{ + +} + + + + +void btTriangleMeshShape::getAabb(const btTransform& trans,btVector3& aabbMin,btVector3& aabbMax) const +{ + + btVector3 localHalfExtents = btScalar(0.5)*(m_localAabbMax-m_localAabbMin); + localHalfExtents += btVector3(getMargin(),getMargin(),getMargin()); + btVector3 localCenter = btScalar(0.5)*(m_localAabbMax+m_localAabbMin); + + btMatrix3x3 abs_b = trans.getBasis().absolute(); + + btVector3 center = trans(localCenter); + + btVector3 extent = btVector3(abs_b[0].dot(localHalfExtents), + abs_b[1].dot(localHalfExtents), + abs_b[2].dot(localHalfExtents)); + aabbMin = center - extent; + aabbMax = center + extent; + + +} + +void btTriangleMeshShape::recalcLocalAabb() +{ + for (int i=0;i<3;i++) + { + btVector3 vec(btScalar(0.),btScalar(0.),btScalar(0.)); + vec[i] = btScalar(1.); + btVector3 tmp = localGetSupportingVertex(vec); + m_localAabbMax[i] = tmp[i]+m_collisionMargin; + vec[i] = btScalar(-1.); + tmp = localGetSupportingVertex(vec); + m_localAabbMin[i] = tmp[i]-m_collisionMargin; + } +} + + + +class SupportVertexCallback : public btTriangleCallback +{ + + btVector3 m_supportVertexLocal; +public: + + btTransform m_worldTrans; + btScalar m_maxDot; + btVector3 m_supportVecLocal; + + SupportVertexCallback(const btVector3& supportVecWorld,const btTransform& trans) + : m_supportVertexLocal(btScalar(0.),btScalar(0.),btScalar(0.)), m_worldTrans(trans) ,m_maxDot(btScalar(-BT_LARGE_FLOAT)) + + { + m_supportVecLocal = supportVecWorld * m_worldTrans.getBasis(); + } + + virtual void processTriangle( btVector3* triangle,int partId, int triangleIndex) + { + (void)partId; + (void)triangleIndex; + for (int i=0;i<3;i++) + { + btScalar dot = m_supportVecLocal.dot(triangle[i]); + if (dot > m_maxDot) + { + m_maxDot = dot; + m_supportVertexLocal = triangle[i]; + } + } + } + + btVector3 GetSupportVertexWorldSpace() + { + return m_worldTrans(m_supportVertexLocal); + } + + btVector3 GetSupportVertexLocal() + { + return m_supportVertexLocal; + } + +}; + + +void btTriangleMeshShape::setLocalScaling(const btVector3& scaling) +{ + m_meshInterface->setScaling(scaling); + recalcLocalAabb(); +} + +const btVector3& btTriangleMeshShape::getLocalScaling() const +{ + return m_meshInterface->getScaling(); +} + + + + + + +//#define DEBUG_TRIANGLE_MESH + + + +void btTriangleMeshShape::processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const +{ + struct FilteredCallback : public btInternalTriangleIndexCallback + { + btTriangleCallback* m_callback; + btVector3 m_aabbMin; + btVector3 m_aabbMax; + + FilteredCallback(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) + :m_callback(callback), + m_aabbMin(aabbMin), + m_aabbMax(aabbMax) + { + } + + virtual void internalProcessTriangleIndex(btVector3* triangle,int partId,int triangleIndex) + { + if (TestTriangleAgainstAabb2(&triangle[0],m_aabbMin,m_aabbMax)) + { + //check aabb in triangle-space, before doing this + m_callback->processTriangle(triangle,partId,triangleIndex); + } + + } + + }; + + FilteredCallback filterCallback(callback,aabbMin,aabbMax); + + m_meshInterface->InternalProcessAllTriangles(&filterCallback,aabbMin,aabbMax); +} + + + + + +void btTriangleMeshShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const +{ + (void)mass; + //moving concave objects not supported + btAssert(0); + inertia.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); +} + + +btVector3 btTriangleMeshShape::localGetSupportingVertex(const btVector3& vec) const +{ + btVector3 supportVertex; + + btTransform ident; + ident.setIdentity(); + + SupportVertexCallback supportCallback(vec,ident); + + btVector3 aabbMax(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); + + processAllTriangles(&supportCallback,-aabbMax,aabbMax); + + supportVertex = supportCallback.GetSupportVertexLocal(); + + return supportVertex; +} + + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleMeshShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleMeshShape.h new file mode 100644 index 00000000000..2216698d275 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleMeshShape.h @@ -0,0 +1,89 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef TRIANGLE_MESH_SHAPE_H +#define TRIANGLE_MESH_SHAPE_H + +#include "btConcaveShape.h" +#include "btStridingMeshInterface.h" + + +///The btTriangleMeshShape is an internal concave triangle mesh interface. Don't use this class directly, use btBvhTriangleMeshShape instead. +class btTriangleMeshShape : public btConcaveShape +{ +protected: + btVector3 m_localAabbMin; + btVector3 m_localAabbMax; + btStridingMeshInterface* m_meshInterface; + + ///btTriangleMeshShape constructor has been disabled/protected, so that users will not mistakenly use this class. + ///Don't use btTriangleMeshShape but use btBvhTriangleMeshShape instead! + btTriangleMeshShape(btStridingMeshInterface* meshInterface); + +public: + + virtual ~btTriangleMeshShape(); + + virtual btVector3 localGetSupportingVertex(const btVector3& vec) const; + + virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const + { + btAssert(0); + return localGetSupportingVertex(vec); + } + + void recalcLocalAabb(); + + virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; + + virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const; + + virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; + + virtual void setLocalScaling(const btVector3& scaling); + virtual const btVector3& getLocalScaling() const; + + btStridingMeshInterface* getMeshInterface() + { + return m_meshInterface; + } + + const btStridingMeshInterface* getMeshInterface() const + { + return m_meshInterface; + } + + const btVector3& getLocalAabbMin() const + { + return m_localAabbMin; + } + const btVector3& getLocalAabbMax() const + { + return m_localAabbMax; + } + + + + //debugging + virtual const char* getName()const {return "TRIANGLEMESH";} + + + +}; + + + + +#endif //TRIANGLE_MESH_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleShape.h new file mode 100644 index 00000000000..847147cf6b4 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleShape.h @@ -0,0 +1,182 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef OBB_TRIANGLE_MINKOWSKI_H +#define OBB_TRIANGLE_MINKOWSKI_H + +#include "btConvexShape.h" +#include "btBoxShape.h" + +ATTRIBUTE_ALIGNED16(class) btTriangleShape : public btPolyhedralConvexShape +{ + + +public: + + btVector3 m_vertices1[3]; + + virtual int getNumVertices() const + { + return 3; + } + + btVector3& getVertexPtr(int index) + { + return m_vertices1[index]; + } + + const btVector3& getVertexPtr(int index) const + { + return m_vertices1[index]; + } + virtual void getVertex(int index,btVector3& vert) const + { + vert = m_vertices1[index]; + } + + virtual int getNumEdges() const + { + return 3; + } + + virtual void getEdge(int i,btVector3& pa,btVector3& pb) const + { + getVertex(i,pa); + getVertex((i+1)%3,pb); + } + + + virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax)const + { +// btAssert(0); + getAabbSlow(t,aabbMin,aabbMax); + } + + btVector3 localGetSupportingVertexWithoutMargin(const btVector3& dir)const + { + btVector3 dots(dir.dot(m_vertices1[0]), dir.dot(m_vertices1[1]), dir.dot(m_vertices1[2])); + return m_vertices1[dots.maxAxis()]; + + } + + virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const + { + for (int i=0;i= -tolerance && dist <= tolerance) + { + //inside check on edge-planes + int i; + for (i=0;i<3;i++) + { + btVector3 pa,pb; + getEdge(i,pa,pb); + btVector3 edge = pb-pa; + btVector3 edgeNormal = edge.cross(normal); + edgeNormal.normalize(); + btScalar dist = pt.dot( edgeNormal); + btScalar edgeConst = pa.dot(edgeNormal); + dist -= edgeConst; + if (dist < -tolerance) + return false; + } + + return true; + } + + return false; + } + //debugging + virtual const char* getName()const + { + return "Triangle"; + } + + virtual int getNumPreferredPenetrationDirections() const + { + return 2; + } + + virtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const + { + calcNormal(penetrationVector); + if (index) + penetrationVector *= btScalar(-1.); + } + + +}; + +#endif //OBB_TRIANGLE_MINKOWSKI_H + diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btUniformScalingShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btUniformScalingShape.cpp new file mode 100644 index 00000000000..8e86f6bf290 --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btUniformScalingShape.cpp @@ -0,0 +1,115 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btUniformScalingShape.h" + +btUniformScalingShape::btUniformScalingShape( btConvexShape* convexChildShape,btScalar uniformScalingFactor): +btConvexShape (), m_childConvexShape(convexChildShape), +m_uniformScalingFactor(uniformScalingFactor) +{ + m_shapeType = UNIFORM_SCALING_SHAPE_PROXYTYPE; +} + +btUniformScalingShape::~btUniformScalingShape() +{ +} + + +btVector3 btUniformScalingShape::localGetSupportingVertexWithoutMargin(const btVector3& vec)const +{ + btVector3 tmpVertex; + tmpVertex = m_childConvexShape->localGetSupportingVertexWithoutMargin(vec); + return tmpVertex*m_uniformScalingFactor; +} + +void btUniformScalingShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const +{ + m_childConvexShape->batchedUnitVectorGetSupportingVertexWithoutMargin(vectors,supportVerticesOut,numVectors); + int i; + for (i=0;ilocalGetSupportingVertex(vec); + return tmpVertex*m_uniformScalingFactor; +} + + +void btUniformScalingShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const +{ + + ///this linear upscaling is not realistic, but we don't deal with large mass ratios... + btVector3 tmpInertia; + m_childConvexShape->calculateLocalInertia(mass,tmpInertia); + inertia = tmpInertia * m_uniformScalingFactor; +} + + + ///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version +void btUniformScalingShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const +{ + m_childConvexShape->getAabb(t,aabbMin,aabbMax); + btVector3 aabbCenter = (aabbMax+aabbMin)*btScalar(0.5); + btVector3 scaledAabbHalfExtends = (aabbMax-aabbMin)*btScalar(0.5)*m_uniformScalingFactor; + + aabbMin = aabbCenter - scaledAabbHalfExtends; + aabbMax = aabbCenter + scaledAabbHalfExtends; + +} + +void btUniformScalingShape::getAabbSlow(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const +{ + m_childConvexShape->getAabbSlow(t,aabbMin,aabbMax); + btVector3 aabbCenter = (aabbMax+aabbMin)*btScalar(0.5); + btVector3 scaledAabbHalfExtends = (aabbMax-aabbMin)*btScalar(0.5)*m_uniformScalingFactor; + + aabbMin = aabbCenter - scaledAabbHalfExtends; + aabbMax = aabbCenter + scaledAabbHalfExtends; +} + +void btUniformScalingShape::setLocalScaling(const btVector3& scaling) +{ + m_childConvexShape->setLocalScaling(scaling); +} + +const btVector3& btUniformScalingShape::getLocalScaling() const +{ + return m_childConvexShape->getLocalScaling(); +} + +void btUniformScalingShape::setMargin(btScalar margin) +{ + m_childConvexShape->setMargin(margin); +} +btScalar btUniformScalingShape::getMargin() const +{ + return m_childConvexShape->getMargin() * m_uniformScalingFactor; +} + +int btUniformScalingShape::getNumPreferredPenetrationDirections() const +{ + return m_childConvexShape->getNumPreferredPenetrationDirections(); +} + +void btUniformScalingShape::getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const +{ + m_childConvexShape->getPreferredPenetrationDirection(index,penetrationVector); +} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btUniformScalingShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btUniformScalingShape.h new file mode 100644 index 00000000000..cbf7e6fd3ed --- /dev/null +++ b/extern/bullet2/BulletCollision/CollisionShapes/btUniformScalingShape.h @@ -0,0 +1,87 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_UNIFORM_SCALING_SHAPE_H +#define BT_UNIFORM_SCALING_SHAPE_H + +#include "btConvexShape.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types + +///The btUniformScalingShape allows to re-use uniform scaled instances of btConvexShape in a memory efficient way. +///Istead of using btUniformScalingShape, it is better to use the non-uniform setLocalScaling method on convex shapes that implement it. +class btUniformScalingShape : public btConvexShape +{ + btConvexShape* m_childConvexShape; + + btScalar m_uniformScalingFactor; + + public: + + btUniformScalingShape( btConvexShape* convexChildShape, btScalar uniformScalingFactor); + + virtual ~btUniformScalingShape(); + + virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const; + + virtual btVector3 localGetSupportingVertex(const btVector3& vec)const; + + virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const; + + virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; + + btScalar getUniformScalingFactor() const + { + return m_uniformScalingFactor; + } + + btConvexShape* getChildShape() + { + return m_childConvexShape; + } + + const btConvexShape* getChildShape() const + { + return m_childConvexShape; + } + + virtual const char* getName()const + { + return "UniformScalingShape"; + } + + + + /////////////////////////// + + + ///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version + void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; + + virtual void getAabbSlow(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; + + virtual void setLocalScaling(const btVector3& scaling) ; + virtual const btVector3& getLocalScaling() const ; + + virtual void setMargin(btScalar margin); + virtual btScalar getMargin() const; + + virtual int getNumPreferredPenetrationDirections() const; + + virtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const; + + +}; + +#endif //BT_UNIFORM_SCALING_SHAPE_H diff --git a/extern/bullet2/BulletCollision/Doxyfile b/extern/bullet2/BulletCollision/Doxyfile new file mode 100644 index 00000000000..4ecb6acb62f --- /dev/null +++ b/extern/bullet2/BulletCollision/Doxyfile @@ -0,0 +1,746 @@ +# Doxyfile 1.2.4 + +# This file describes the settings to be used by doxygen for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# General configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. +PROJECT_NAME = "Bullet Continuous Collision Detection Library" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, +# Korean, Hungarian, Norwegian, Spanish, Romanian, Russian, Croatian, +# Polish, Portuguese and Slovene. + +OUTPUT_LANGUAGE = English + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these class will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. It is allowed to use relative paths in the argument list. + +STRIP_FROM_PATH = + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a class diagram (in Html and LaTeX) for classes with base or +# super classes. Setting the tag to NO turns the diagrams off. + +CLASS_DIAGRAMS = YES + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower case letters. If set to YES upper case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# users are adviced to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explict @brief command for a brief description. + +JAVADOC_AUTOBRIEF = YES + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# reimplements. + +INHERIT_DOCS = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# The ENABLE_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = . + + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +FILE_PATTERNS = *.h *.cpp *.c + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. + +INPUT_FILTER = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse. + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side pannel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript and frames is required (for instance Netscape 4.0+ +# or Internet explorer 4.0+). + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimised for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using a WORD or other. +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assigments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. Warning: This feature +# is still experimental and very incomplete. + +GENERATE_XML = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_PREDEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = ../../generic/extern + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES tag can be used to specify one or more tagfiles. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = YES + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to +# YES then doxygen will generate a graph for each documented file showing +# the direct and indirect include dependencies of the file with other +# documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to +# YES then doxygen will generate a graph for each documented header file showing +# the documented files that directly or indirectly include this file + +INCLUDED_BY_GRAPH = YES + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. + +DOT_PATH = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO + +# The CGI_NAME tag should be the name of the CGI script that +# starts the search engine (doxysearch) with the correct parameters. +# A script with this name will be generated by doxygen. + +CGI_NAME = search.cgi + +# The CGI_URL tag should be the absolute URL to the directory where the +# cgi binaries are located. See the documentation of your http daemon for +# details. + +CGI_URL = + +# The DOC_URL tag should be the absolute URL to the directory where the +# documentation is located. If left blank the absolute path to the +# documentation, with file:// prepended to it, will be used. + +DOC_URL = + +# The DOC_ABSPATH tag should be the absolute path to the directory where the +# documentation is located. If left blank the directory on the local machine +# will be used. + +DOC_ABSPATH = + +# The BIN_ABSPATH tag must point to the directory where the doxysearch binary +# is installed. + +BIN_ABSPATH = c:\program files\doxygen\bin + +# The EXT_DOC_PATHS tag can be used to specify one or more paths to +# documentation generated for other projects. This allows doxysearch to search +# the documentation for these projects as well. + +EXT_DOC_PATHS = diff --git a/extern/bullet2/BulletCollision/Gimpact/btBoxCollision.h b/extern/bullet2/BulletCollision/Gimpact/btBoxCollision.h new file mode 100644 index 00000000000..827a3c89587 --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/btBoxCollision.h @@ -0,0 +1,647 @@ +#ifndef BT_BOX_COLLISION_H_INCLUDED +#define BT_BOX_COLLISION_H_INCLUDED + +/*! \file gim_box_collision.h +\author Francisco Len Nßjera +*/ +/* +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "LinearMath/btTransform.h" + + +///Swap numbers +#define BT_SWAP_NUMBERS(a,b){ \ + a = a+b; \ + b = a-b; \ + a = a-b; \ +}\ + + +#define BT_MAX(a,b) (ab?b:a) + +#define BT_GREATER(x, y) btFabs(x) > (y) + +#define BT_MAX3(a,b,c) BT_MAX(a,BT_MAX(b,c)) +#define BT_MIN3(a,b,c) BT_MIN(a,BT_MIN(b,c)) + + + + + + +enum eBT_PLANE_INTERSECTION_TYPE +{ + BT_CONST_BACK_PLANE = 0, + BT_CONST_COLLIDE_PLANE, + BT_CONST_FRONT_PLANE +}; + +//SIMD_FORCE_INLINE bool test_cross_edge_box( +// const btVector3 & edge, +// const btVector3 & absolute_edge, +// const btVector3 & pointa, +// const btVector3 & pointb, const btVector3 & extend, +// int dir_index0, +// int dir_index1 +// int component_index0, +// int component_index1) +//{ +// // dir coords are -z and y +// +// const btScalar dir0 = -edge[dir_index0]; +// const btScalar dir1 = edge[dir_index1]; +// btScalar pmin = pointa[component_index0]*dir0 + pointa[component_index1]*dir1; +// btScalar pmax = pointb[component_index0]*dir0 + pointb[component_index1]*dir1; +// //find minmax +// if(pmin>pmax) +// { +// BT_SWAP_NUMBERS(pmin,pmax); +// } +// //find extends +// const btScalar rad = extend[component_index0] * absolute_edge[dir_index0] + +// extend[component_index1] * absolute_edge[dir_index1]; +// +// if(pmin>rad || -rad>pmax) return false; +// return true; +//} +// +//SIMD_FORCE_INLINE bool test_cross_edge_box_X_axis( +// const btVector3 & edge, +// const btVector3 & absolute_edge, +// const btVector3 & pointa, +// const btVector3 & pointb, btVector3 & extend) +//{ +// +// return test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,2,1,1,2); +//} +// +// +//SIMD_FORCE_INLINE bool test_cross_edge_box_Y_axis( +// const btVector3 & edge, +// const btVector3 & absolute_edge, +// const btVector3 & pointa, +// const btVector3 & pointb, btVector3 & extend) +//{ +// +// return test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,0,2,2,0); +//} +// +//SIMD_FORCE_INLINE bool test_cross_edge_box_Z_axis( +// const btVector3 & edge, +// const btVector3 & absolute_edge, +// const btVector3 & pointa, +// const btVector3 & pointb, btVector3 & extend) +//{ +// +// return test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,1,0,0,1); +//} + + +#define TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,i_dir_0,i_dir_1,i_comp_0,i_comp_1)\ +{\ + const btScalar dir0 = -edge[i_dir_0];\ + const btScalar dir1 = edge[i_dir_1];\ + btScalar pmin = pointa[i_comp_0]*dir0 + pointa[i_comp_1]*dir1;\ + btScalar pmax = pointb[i_comp_0]*dir0 + pointb[i_comp_1]*dir1;\ + if(pmin>pmax)\ + {\ + BT_SWAP_NUMBERS(pmin,pmax); \ + }\ + const btScalar abs_dir0 = absolute_edge[i_dir_0];\ + const btScalar abs_dir1 = absolute_edge[i_dir_1];\ + const btScalar rad = _extend[i_comp_0] * abs_dir0 + _extend[i_comp_1] * abs_dir1;\ + if(pmin>rad || -rad>pmax) return false;\ +}\ + + +#define TEST_CROSS_EDGE_BOX_X_AXIS_MCR(edge,absolute_edge,pointa,pointb,_extend)\ +{\ + TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,2,1,1,2);\ +}\ + +#define TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(edge,absolute_edge,pointa,pointb,_extend)\ +{\ + TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,0,2,2,0);\ +}\ + +#define TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(edge,absolute_edge,pointa,pointb,_extend)\ +{\ + TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,1,0,0,1);\ +}\ + + +//! Returns the dot product between a vec3f and the col of a matrix +SIMD_FORCE_INLINE btScalar bt_mat3_dot_col( +const btMatrix3x3 & mat, const btVector3 & vec3, int colindex) +{ + return vec3[0]*mat[0][colindex] + vec3[1]*mat[1][colindex] + vec3[2]*mat[2][colindex]; +} + + +//! Class for transforming a model1 to the space of model0 +ATTRIBUTE_ALIGNED16 (class) BT_BOX_BOX_TRANSFORM_CACHE +{ +public: + btVector3 m_T1to0;//!< Transforms translation of model1 to model 0 + btMatrix3x3 m_R1to0;//!< Transforms Rotation of model1 to model 0, equal to R0' * R1 + btMatrix3x3 m_AR;//!< Absolute value of m_R1to0 + + SIMD_FORCE_INLINE void calc_absolute_matrix() + { +// static const btVector3 vepsi(1e-6f,1e-6f,1e-6f); +// m_AR[0] = vepsi + m_R1to0[0].absolute(); +// m_AR[1] = vepsi + m_R1to0[1].absolute(); +// m_AR[2] = vepsi + m_R1to0[2].absolute(); + + int i,j; + + for(i=0;i<3;i++) + { + for(j=0;j<3;j++ ) + { + m_AR[i][j] = 1e-6f + btFabs(m_R1to0[i][j]); + } + } + + } + + BT_BOX_BOX_TRANSFORM_CACHE() + { + } + + + + //! Calc the transformation relative 1 to 0. Inverts matrics by transposing + SIMD_FORCE_INLINE void calc_from_homogenic(const btTransform & trans0,const btTransform & trans1) + { + + btTransform temp_trans = trans0.inverse(); + temp_trans = temp_trans * trans1; + + m_T1to0 = temp_trans.getOrigin(); + m_R1to0 = temp_trans.getBasis(); + + + calc_absolute_matrix(); + } + + //! Calcs the full invertion of the matrices. Useful for scaling matrices + SIMD_FORCE_INLINE void calc_from_full_invert(const btTransform & trans0,const btTransform & trans1) + { + m_R1to0 = trans0.getBasis().inverse(); + m_T1to0 = m_R1to0 * (-trans0.getOrigin()); + + m_T1to0 += m_R1to0*trans1.getOrigin(); + m_R1to0 *= trans1.getBasis(); + + calc_absolute_matrix(); + } + + SIMD_FORCE_INLINE btVector3 transform(const btVector3 & point) const + { + return btVector3(m_R1to0[0].dot(point) + m_T1to0.x(), + m_R1to0[1].dot(point) + m_T1to0.y(), + m_R1to0[2].dot(point) + m_T1to0.z()); + } +}; + + +#define BOX_PLANE_EPSILON 0.000001f + +//! Axis aligned box +ATTRIBUTE_ALIGNED16 (class) btAABB +{ +public: + btVector3 m_min; + btVector3 m_max; + + btAABB() + {} + + + btAABB(const btVector3 & V1, + const btVector3 & V2, + const btVector3 & V3) + { + m_min[0] = BT_MIN3(V1[0],V2[0],V3[0]); + m_min[1] = BT_MIN3(V1[1],V2[1],V3[1]); + m_min[2] = BT_MIN3(V1[2],V2[2],V3[2]); + + m_max[0] = BT_MAX3(V1[0],V2[0],V3[0]); + m_max[1] = BT_MAX3(V1[1],V2[1],V3[1]); + m_max[2] = BT_MAX3(V1[2],V2[2],V3[2]); + } + + btAABB(const btVector3 & V1, + const btVector3 & V2, + const btVector3 & V3, + btScalar margin) + { + m_min[0] = BT_MIN3(V1[0],V2[0],V3[0]); + m_min[1] = BT_MIN3(V1[1],V2[1],V3[1]); + m_min[2] = BT_MIN3(V1[2],V2[2],V3[2]); + + m_max[0] = BT_MAX3(V1[0],V2[0],V3[0]); + m_max[1] = BT_MAX3(V1[1],V2[1],V3[1]); + m_max[2] = BT_MAX3(V1[2],V2[2],V3[2]); + + m_min[0] -= margin; + m_min[1] -= margin; + m_min[2] -= margin; + m_max[0] += margin; + m_max[1] += margin; + m_max[2] += margin; + } + + btAABB(const btAABB &other): + m_min(other.m_min),m_max(other.m_max) + { + } + + btAABB(const btAABB &other,btScalar margin ): + m_min(other.m_min),m_max(other.m_max) + { + m_min[0] -= margin; + m_min[1] -= margin; + m_min[2] -= margin; + m_max[0] += margin; + m_max[1] += margin; + m_max[2] += margin; + } + + SIMD_FORCE_INLINE void invalidate() + { + m_min[0] = SIMD_INFINITY; + m_min[1] = SIMD_INFINITY; + m_min[2] = SIMD_INFINITY; + m_max[0] = -SIMD_INFINITY; + m_max[1] = -SIMD_INFINITY; + m_max[2] = -SIMD_INFINITY; + } + + SIMD_FORCE_INLINE void increment_margin(btScalar margin) + { + m_min[0] -= margin; + m_min[1] -= margin; + m_min[2] -= margin; + m_max[0] += margin; + m_max[1] += margin; + m_max[2] += margin; + } + + SIMD_FORCE_INLINE void copy_with_margin(const btAABB &other, btScalar margin) + { + m_min[0] = other.m_min[0] - margin; + m_min[1] = other.m_min[1] - margin; + m_min[2] = other.m_min[2] - margin; + + m_max[0] = other.m_max[0] + margin; + m_max[1] = other.m_max[1] + margin; + m_max[2] = other.m_max[2] + margin; + } + + template + SIMD_FORCE_INLINE void calc_from_triangle( + const CLASS_POINT & V1, + const CLASS_POINT & V2, + const CLASS_POINT & V3) + { + m_min[0] = BT_MIN3(V1[0],V2[0],V3[0]); + m_min[1] = BT_MIN3(V1[1],V2[1],V3[1]); + m_min[2] = BT_MIN3(V1[2],V2[2],V3[2]); + + m_max[0] = BT_MAX3(V1[0],V2[0],V3[0]); + m_max[1] = BT_MAX3(V1[1],V2[1],V3[1]); + m_max[2] = BT_MAX3(V1[2],V2[2],V3[2]); + } + + template + SIMD_FORCE_INLINE void calc_from_triangle_margin( + const CLASS_POINT & V1, + const CLASS_POINT & V2, + const CLASS_POINT & V3, btScalar margin) + { + m_min[0] = BT_MIN3(V1[0],V2[0],V3[0]); + m_min[1] = BT_MIN3(V1[1],V2[1],V3[1]); + m_min[2] = BT_MIN3(V1[2],V2[2],V3[2]); + + m_max[0] = BT_MAX3(V1[0],V2[0],V3[0]); + m_max[1] = BT_MAX3(V1[1],V2[1],V3[1]); + m_max[2] = BT_MAX3(V1[2],V2[2],V3[2]); + + m_min[0] -= margin; + m_min[1] -= margin; + m_min[2] -= margin; + m_max[0] += margin; + m_max[1] += margin; + m_max[2] += margin; + } + + //! Apply a transform to an AABB + SIMD_FORCE_INLINE void appy_transform(const btTransform & trans) + { + btVector3 center = (m_max+m_min)*0.5f; + btVector3 extends = m_max - center; + // Compute new center + center = trans(center); + + btVector3 textends(extends.dot(trans.getBasis().getRow(0).absolute()), + extends.dot(trans.getBasis().getRow(1).absolute()), + extends.dot(trans.getBasis().getRow(2).absolute())); + + m_min = center - textends; + m_max = center + textends; + } + + + //! Apply a transform to an AABB + SIMD_FORCE_INLINE void appy_transform_trans_cache(const BT_BOX_BOX_TRANSFORM_CACHE & trans) + { + btVector3 center = (m_max+m_min)*0.5f; + btVector3 extends = m_max - center; + // Compute new center + center = trans.transform(center); + + btVector3 textends(extends.dot(trans.m_R1to0.getRow(0).absolute()), + extends.dot(trans.m_R1to0.getRow(1).absolute()), + extends.dot(trans.m_R1to0.getRow(2).absolute())); + + m_min = center - textends; + m_max = center + textends; + } + + //! Merges a Box + SIMD_FORCE_INLINE void merge(const btAABB & box) + { + m_min[0] = BT_MIN(m_min[0],box.m_min[0]); + m_min[1] = BT_MIN(m_min[1],box.m_min[1]); + m_min[2] = BT_MIN(m_min[2],box.m_min[2]); + + m_max[0] = BT_MAX(m_max[0],box.m_max[0]); + m_max[1] = BT_MAX(m_max[1],box.m_max[1]); + m_max[2] = BT_MAX(m_max[2],box.m_max[2]); + } + + //! Merges a point + template + SIMD_FORCE_INLINE void merge_point(const CLASS_POINT & point) + { + m_min[0] = BT_MIN(m_min[0],point[0]); + m_min[1] = BT_MIN(m_min[1],point[1]); + m_min[2] = BT_MIN(m_min[2],point[2]); + + m_max[0] = BT_MAX(m_max[0],point[0]); + m_max[1] = BT_MAX(m_max[1],point[1]); + m_max[2] = BT_MAX(m_max[2],point[2]); + } + + //! Gets the extend and center + SIMD_FORCE_INLINE void get_center_extend(btVector3 & center,btVector3 & extend) const + { + center = (m_max+m_min)*0.5f; + extend = m_max - center; + } + + //! Finds the intersecting box between this box and the other. + SIMD_FORCE_INLINE void find_intersection(const btAABB & other, btAABB & intersection) const + { + intersection.m_min[0] = BT_MAX(other.m_min[0],m_min[0]); + intersection.m_min[1] = BT_MAX(other.m_min[1],m_min[1]); + intersection.m_min[2] = BT_MAX(other.m_min[2],m_min[2]); + + intersection.m_max[0] = BT_MIN(other.m_max[0],m_max[0]); + intersection.m_max[1] = BT_MIN(other.m_max[1],m_max[1]); + intersection.m_max[2] = BT_MIN(other.m_max[2],m_max[2]); + } + + + SIMD_FORCE_INLINE bool has_collision(const btAABB & other) const + { + if(m_min[0] > other.m_max[0] || + m_max[0] < other.m_min[0] || + m_min[1] > other.m_max[1] || + m_max[1] < other.m_min[1] || + m_min[2] > other.m_max[2] || + m_max[2] < other.m_min[2]) + { + return false; + } + return true; + } + + /*! \brief Finds the Ray intersection parameter. + \param aabb Aligned box + \param vorigin A vec3f with the origin of the ray + \param vdir A vec3f with the direction of the ray + */ + SIMD_FORCE_INLINE bool collide_ray(const btVector3 & vorigin,const btVector3 & vdir) const + { + btVector3 extents,center; + this->get_center_extend(center,extents);; + + btScalar Dx = vorigin[0] - center[0]; + if(BT_GREATER(Dx, extents[0]) && Dx*vdir[0]>=0.0f) return false; + btScalar Dy = vorigin[1] - center[1]; + if(BT_GREATER(Dy, extents[1]) && Dy*vdir[1]>=0.0f) return false; + btScalar Dz = vorigin[2] - center[2]; + if(BT_GREATER(Dz, extents[2]) && Dz*vdir[2]>=0.0f) return false; + + + btScalar f = vdir[1] * Dz - vdir[2] * Dy; + if(btFabs(f) > extents[1]*btFabs(vdir[2]) + extents[2]*btFabs(vdir[1])) return false; + f = vdir[2] * Dx - vdir[0] * Dz; + if(btFabs(f) > extents[0]*btFabs(vdir[2]) + extents[2]*btFabs(vdir[0]))return false; + f = vdir[0] * Dy - vdir[1] * Dx; + if(btFabs(f) > extents[0]*btFabs(vdir[1]) + extents[1]*btFabs(vdir[0]))return false; + return true; + } + + + SIMD_FORCE_INLINE void projection_interval(const btVector3 & direction, btScalar &vmin, btScalar &vmax) const + { + btVector3 center = (m_max+m_min)*0.5f; + btVector3 extend = m_max-center; + + btScalar _fOrigin = direction.dot(center); + btScalar _fMaximumExtent = extend.dot(direction.absolute()); + vmin = _fOrigin - _fMaximumExtent; + vmax = _fOrigin + _fMaximumExtent; + } + + SIMD_FORCE_INLINE eBT_PLANE_INTERSECTION_TYPE plane_classify(const btVector4 &plane) const + { + btScalar _fmin,_fmax; + this->projection_interval(plane,_fmin,_fmax); + + if(plane[3] > _fmax + BOX_PLANE_EPSILON) + { + return BT_CONST_BACK_PLANE; // 0 + } + + if(plane[3]+BOX_PLANE_EPSILON >=_fmin) + { + return BT_CONST_COLLIDE_PLANE; //1 + } + return BT_CONST_FRONT_PLANE;//2 + } + + SIMD_FORCE_INLINE bool overlapping_trans_conservative(const btAABB & box, btTransform & trans1_to_0) const + { + btAABB tbox = box; + tbox.appy_transform(trans1_to_0); + return has_collision(tbox); + } + + SIMD_FORCE_INLINE bool overlapping_trans_conservative2(const btAABB & box, + const BT_BOX_BOX_TRANSFORM_CACHE & trans1_to_0) const + { + btAABB tbox = box; + tbox.appy_transform_trans_cache(trans1_to_0); + return has_collision(tbox); + } + + //! transcache is the transformation cache from box to this AABB + SIMD_FORCE_INLINE bool overlapping_trans_cache( + const btAABB & box,const BT_BOX_BOX_TRANSFORM_CACHE & transcache, bool fulltest) const + { + + //Taken from OPCODE + btVector3 ea,eb;//extends + btVector3 ca,cb;//extends + get_center_extend(ca,ea); + box.get_center_extend(cb,eb); + + + btVector3 T; + btScalar t,t2; + int i; + + // Class I : A's basis vectors + for(i=0;i<3;i++) + { + T[i] = transcache.m_R1to0[i].dot(cb) + transcache.m_T1to0[i] - ca[i]; + t = transcache.m_AR[i].dot(eb) + ea[i]; + if(BT_GREATER(T[i], t)) return false; + } + // Class II : B's basis vectors + for(i=0;i<3;i++) + { + t = bt_mat3_dot_col(transcache.m_R1to0,T,i); + t2 = bt_mat3_dot_col(transcache.m_AR,ea,i) + eb[i]; + if(BT_GREATER(t,t2)) return false; + } + // Class III : 9 cross products + if(fulltest) + { + int j,m,n,o,p,q,r; + for(i=0;i<3;i++) + { + m = (i+1)%3; + n = (i+2)%3; + o = i==0?1:0; + p = i==2?1:2; + for(j=0;j<3;j++) + { + q = j==2?1:2; + r = j==0?1:0; + t = T[n]*transcache.m_R1to0[m][j] - T[m]*transcache.m_R1to0[n][j]; + t2 = ea[o]*transcache.m_AR[p][j] + ea[p]*transcache.m_AR[o][j] + + eb[r]*transcache.m_AR[i][q] + eb[q]*transcache.m_AR[i][r]; + if(BT_GREATER(t,t2)) return false; + } + } + } + return true; + } + + //! Simple test for planes. + SIMD_FORCE_INLINE bool collide_plane( + const btVector4 & plane) const + { + eBT_PLANE_INTERSECTION_TYPE classify = plane_classify(plane); + return (classify == BT_CONST_COLLIDE_PLANE); + } + + //! test for a triangle, with edges + SIMD_FORCE_INLINE bool collide_triangle_exact( + const btVector3 & p1, + const btVector3 & p2, + const btVector3 & p3, + const btVector4 & triangle_plane) const + { + if(!collide_plane(triangle_plane)) return false; + + btVector3 center,extends; + this->get_center_extend(center,extends); + + const btVector3 v1(p1 - center); + const btVector3 v2(p2 - center); + const btVector3 v3(p3 - center); + + //First axis + btVector3 diff(v2 - v1); + btVector3 abs_diff = diff.absolute(); + //Test With X axis + TEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff,abs_diff,v1,v3,extends); + //Test With Y axis + TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff,abs_diff,v1,v3,extends); + //Test With Z axis + TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff,abs_diff,v1,v3,extends); + + + diff = v3 - v2; + abs_diff = diff.absolute(); + //Test With X axis + TEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff,abs_diff,v2,v1,extends); + //Test With Y axis + TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff,abs_diff,v2,v1,extends); + //Test With Z axis + TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff,abs_diff,v2,v1,extends); + + diff = v1 - v3; + abs_diff = diff.absolute(); + //Test With X axis + TEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff,abs_diff,v3,v2,extends); + //Test With Y axis + TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff,abs_diff,v3,v2,extends); + //Test With Z axis + TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff,abs_diff,v3,v2,extends); + + return true; + } +}; + + +//! Compairison of transformation objects +SIMD_FORCE_INLINE bool btCompareTransformsEqual(const btTransform & t1,const btTransform & t2) +{ + if(!(t1.getOrigin() == t2.getOrigin()) ) return false; + + if(!(t1.getBasis().getRow(0) == t2.getBasis().getRow(0)) ) return false; + if(!(t1.getBasis().getRow(1) == t2.getBasis().getRow(1)) ) return false; + if(!(t1.getBasis().getRow(2) == t2.getBasis().getRow(2)) ) return false; + return true; +} + + + +#endif // GIM_BOX_COLLISION_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/btClipPolygon.h b/extern/bullet2/BulletCollision/Gimpact/btClipPolygon.h new file mode 100644 index 00000000000..5de391a7561 --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/btClipPolygon.h @@ -0,0 +1,182 @@ +#ifndef BT_CLIP_POLYGON_H_INCLUDED +#define BT_CLIP_POLYGON_H_INCLUDED + +/*! \file btClipPolygon.h +\author Francisco Len Nßjera +*/ +/* +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "LinearMath/btTransform.h" +#include "LinearMath/btGeometryUtil.h" + + +SIMD_FORCE_INLINE btScalar bt_distance_point_plane(const btVector4 & plane,const btVector3 &point) +{ + return point.dot(plane) - plane[3]; +} + +/*! Vector blending +Takes two vectors a, b, blends them together*/ +SIMD_FORCE_INLINE void bt_vec_blend(btVector3 &vr, const btVector3 &va,const btVector3 &vb, btScalar blend_factor) +{ + vr = (1-blend_factor)*va + blend_factor*vb; +} + +//! This function calcs the distance from a 3D plane +SIMD_FORCE_INLINE void bt_plane_clip_polygon_collect( + const btVector3 & point0, + const btVector3 & point1, + btScalar dist0, + btScalar dist1, + btVector3 * clipped, + int & clipped_count) +{ + bool _prevclassif = (dist0>SIMD_EPSILON); + bool _classif = (dist1>SIMD_EPSILON); + if(_classif!=_prevclassif) + { + btScalar blendfactor = -dist0/(dist1-dist0); + bt_vec_blend(clipped[clipped_count],point0,point1,blendfactor); + clipped_count++; + } + if(!_classif) + { + clipped[clipped_count] = point1; + clipped_count++; + } +} + + +//! Clips a polygon by a plane +/*! +*\return The count of the clipped counts +*/ +SIMD_FORCE_INLINE int bt_plane_clip_polygon( + const btVector4 & plane, + const btVector3 * polygon_points, + int polygon_point_count, + btVector3 * clipped) +{ + int clipped_count = 0; + + + //clip first point + btScalar firstdist = bt_distance_point_plane(plane,polygon_points[0]);; + if(!(firstdist>SIMD_EPSILON)) + { + clipped[clipped_count] = polygon_points[0]; + clipped_count++; + } + + btScalar olddist = firstdist; + for(int i=1;iSIMD_EPSILON)) + { + clipped[clipped_count] = point0; + clipped_count++; + } + + // point 1 + btScalar olddist = firstdist; + btScalar dist = bt_distance_point_plane(plane,point1); + + bt_plane_clip_polygon_collect( + point0,point1, + olddist, + dist, + clipped, + clipped_count); + + olddist = dist; + + + // point 2 + dist = bt_distance_point_plane(plane,point2); + + bt_plane_clip_polygon_collect( + point1,point2, + olddist, + dist, + clipped, + clipped_count); + olddist = dist; + + + + //RETURN TO FIRST point0 + bt_plane_clip_polygon_collect( + point2,point0, + olddist, + firstdist, + clipped, + clipped_count); + + return clipped_count; +} + + + + + +#endif // GIM_TRI_COLLISION_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/btContactProcessing.cpp b/extern/bullet2/BulletCollision/Gimpact/btContactProcessing.cpp new file mode 100644 index 00000000000..c3b697bdd1e --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/btContactProcessing.cpp @@ -0,0 +1,181 @@ + +/* +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ +#include "btContactProcessing.h" + +#define MAX_COINCIDENT 8 + +struct CONTACT_KEY_TOKEN +{ + unsigned int m_key; + int m_value; + CONTACT_KEY_TOKEN() + { + } + + CONTACT_KEY_TOKEN(unsigned int key,int token) + { + m_key = key; + m_value = token; + } + + CONTACT_KEY_TOKEN(const CONTACT_KEY_TOKEN& rtoken) + { + m_key = rtoken.m_key; + m_value = rtoken.m_value; + } + + inline bool operator <(const CONTACT_KEY_TOKEN& other) const + { + return (m_key < other.m_key); + } + + inline bool operator >(const CONTACT_KEY_TOKEN& other) const + { + return (m_key > other.m_key); + } + +}; + +class CONTACT_KEY_TOKEN_COMP +{ + public: + + bool operator() ( const CONTACT_KEY_TOKEN& a, const CONTACT_KEY_TOKEN& b ) + { + return ( a < b ); + } +}; + + +void btContactArray::merge_contacts( + const btContactArray & contacts, bool normal_contact_average) +{ + clear(); + + int i; + if(contacts.size()==0) return; + + + if(contacts.size()==1) + { + push_back(contacts[0]); + return; + } + + btAlignedObjectArray keycontacts; + + keycontacts.reserve(contacts.size()); + + //fill key contacts + + for ( i = 0;im_depth - CONTACT_DIFF_EPSILON > scontact->m_depth)//) + { + *pcontact = *scontact; + coincident_count = 0; + } + else if(normal_contact_average) + { + if(btFabs(pcontact->m_depth - scontact->m_depth)m_normal; + coincident_count++; + } + } + } + } + else + {//add new contact + + if(normal_contact_average && coincident_count>0) + { + pcontact->interpolate_normals(coincident_normals,coincident_count); + coincident_count = 0; + } + + push_back(*scontact); + pcontact = &(*this)[this->size()-1]; + } + last_key = key; + } +} + +void btContactArray::merge_contacts_unique(const btContactArray & contacts) +{ + clear(); + + if(contacts.size()==0) return; + + if(contacts.size()==1) + { + push_back(contacts[0]); + return; + } + + GIM_CONTACT average_contact = contacts[0]; + + for (int i=1;i +{ +public: + btContactArray() + { + reserve(64); + } + + SIMD_FORCE_INLINE void push_contact( + const btVector3 &point,const btVector3 & normal, + btScalar depth, int feature1, int feature2) + { + push_back( GIM_CONTACT(point,normal,depth,feature1,feature2) ); + } + + SIMD_FORCE_INLINE void push_triangle_contacts( + const GIM_TRIANGLE_CONTACT & tricontact, + int feature1,int feature2) + { + for(int i = 0;i splitValue) + { + //swap + primitive_boxes.swap(i,splitIndex); + //swapLeafNodes(i,splitIndex); + splitIndex++; + } + } + + //if the splitIndex causes unbalanced trees, fix this by using the center in between startIndex and endIndex + //otherwise the tree-building might fail due to stack-overflows in certain cases. + //unbalanced1 is unsafe: it can cause stack overflows + //bool unbalanced1 = ((splitIndex==startIndex) || (splitIndex == (endIndex-1))); + + //unbalanced2 should work too: always use center (perfect balanced trees) + //bool unbalanced2 = true; + + //this should be safe too: + int rangeBalancedIndices = numIndices/3; + bool unbalanced = ((splitIndex<=(startIndex+rangeBalancedIndices)) || (splitIndex >=(endIndex-1-rangeBalancedIndices))); + + if (unbalanced) + { + splitIndex = startIndex+ (numIndices>>1); + } + + btAssert(!((splitIndex==startIndex) || (splitIndex == (endIndex)))); + + return splitIndex; + +} + + +void btBvhTree::_build_sub_tree(GIM_BVH_DATA_ARRAY & primitive_boxes, int startIndex, int endIndex) +{ + int curIndex = m_num_nodes; + m_num_nodes++; + + btAssert((endIndex-startIndex)>0); + + if ((endIndex-startIndex)==1) + { + //We have a leaf node + setNodeBound(curIndex,primitive_boxes[startIndex].m_bound); + m_node_array[curIndex].setDataIndex(primitive_boxes[startIndex].m_data); + + return; + } + //calculate Best Splitting Axis and where to split it. Sort the incoming 'leafNodes' array within range 'startIndex/endIndex'. + + //split axis + int splitIndex = _calc_splitting_axis(primitive_boxes,startIndex,endIndex); + + splitIndex = _sort_and_calc_splitting_index( + primitive_boxes,startIndex,endIndex, + splitIndex//split axis + ); + + + //calc this node bounding box + + btAABB node_bound; + node_bound.invalidate(); + + for (int i=startIndex;iget_primitive_box(getNodeData(nodecount),leafbox); + setNodeBound(nodecount,leafbox); + } + else + { + //const GIM_BVH_TREE_NODE * nodepointer = get_node_pointer(nodecount); + //get left bound + btAABB bound; + bound.invalidate(); + + btAABB temp_box; + + int child_node = getLeftNode(nodecount); + if(child_node) + { + getNodeBound(child_node,temp_box); + bound.merge(temp_box); + } + + child_node = getRightNode(nodecount); + if(child_node) + { + getNodeBound(child_node,temp_box); + bound.merge(temp_box); + } + + setNodeBound(nodecount,bound); + } + } +} + +//! this rebuild the entire set +void btGImpactBvh::buildSet() +{ + //obtain primitive boxes + GIM_BVH_DATA_ARRAY primitive_boxes; + primitive_boxes.resize(m_primitive_manager->get_primitive_count()); + + for (int i = 0;iget_primitive_box(i,primitive_boxes[i].m_bound); + primitive_boxes[i].m_data = i; + } + + m_box_tree.build_tree(primitive_boxes); +} + +//! returns the indices of the primitives in the m_primitive_manager +bool btGImpactBvh::boxQuery(const btAABB & box, btAlignedObjectArray & collided_results) const +{ + int curIndex = 0; + int numNodes = getNodeCount(); + + while (curIndex < numNodes) + { + btAABB bound; + getNodeBound(curIndex,bound); + + //catch bugs in tree data + + bool aabbOverlap = bound.has_collision(box); + bool isleafnode = isLeafNode(curIndex); + + if (isleafnode && aabbOverlap) + { + collided_results.push_back(getNodeData(curIndex)); + } + + if (aabbOverlap || isleafnode) + { + //next subnode + curIndex++; + } + else + { + //skip node + curIndex+= getEscapeNodeIndex(curIndex); + } + } + if(collided_results.size()>0) return true; + return false; +} + + + +//! returns the indices of the primitives in the m_primitive_manager +bool btGImpactBvh::rayQuery( + const btVector3 & ray_dir,const btVector3 & ray_origin , + btAlignedObjectArray & collided_results) const +{ + int curIndex = 0; + int numNodes = getNodeCount(); + + while (curIndex < numNodes) + { + btAABB bound; + getNodeBound(curIndex,bound); + + //catch bugs in tree data + + bool aabbOverlap = bound.collide_ray(ray_origin,ray_dir); + bool isleafnode = isLeafNode(curIndex); + + if (isleafnode && aabbOverlap) + { + collided_results.push_back(getNodeData( curIndex)); + } + + if (aabbOverlap || isleafnode) + { + //next subnode + curIndex++; + } + else + { + //skip node + curIndex+= getEscapeNodeIndex(curIndex); + } + } + if(collided_results.size()>0) return true; + return false; +} + + +SIMD_FORCE_INLINE bool _node_collision( + btGImpactBvh * boxset0, btGImpactBvh * boxset1, + const BT_BOX_BOX_TRANSFORM_CACHE & trans_cache_1to0, + int node0 ,int node1, bool complete_primitive_tests) +{ + btAABB box0; + boxset0->getNodeBound(node0,box0); + btAABB box1; + boxset1->getNodeBound(node1,box1); + + return box0.overlapping_trans_cache(box1,trans_cache_1to0,complete_primitive_tests ); +// box1.appy_transform_trans_cache(trans_cache_1to0); +// return box0.has_collision(box1); + +} + + +//stackless recursive collision routine +static void _find_collision_pairs_recursive( + btGImpactBvh * boxset0, btGImpactBvh * boxset1, + btPairSet * collision_pairs, + const BT_BOX_BOX_TRANSFORM_CACHE & trans_cache_1to0, + int node0, int node1, bool complete_primitive_tests) +{ + + + + if( _node_collision( + boxset0,boxset1,trans_cache_1to0, + node0,node1,complete_primitive_tests) ==false) return;//avoid colliding internal nodes + + if(boxset0->isLeafNode(node0)) + { + if(boxset1->isLeafNode(node1)) + { + // collision result + collision_pairs->push_pair( + boxset0->getNodeData(node0),boxset1->getNodeData(node1)); + return; + } + else + { + + //collide left recursive + + _find_collision_pairs_recursive( + boxset0,boxset1, + collision_pairs,trans_cache_1to0, + node0,boxset1->getLeftNode(node1),false); + + //collide right recursive + _find_collision_pairs_recursive( + boxset0,boxset1, + collision_pairs,trans_cache_1to0, + node0,boxset1->getRightNode(node1),false); + + + } + } + else + { + if(boxset1->isLeafNode(node1)) + { + + //collide left recursive + _find_collision_pairs_recursive( + boxset0,boxset1, + collision_pairs,trans_cache_1to0, + boxset0->getLeftNode(node0),node1,false); + + + //collide right recursive + + _find_collision_pairs_recursive( + boxset0,boxset1, + collision_pairs,trans_cache_1to0, + boxset0->getRightNode(node0),node1,false); + + + } + else + { + //collide left0 left1 + + + + _find_collision_pairs_recursive( + boxset0,boxset1, + collision_pairs,trans_cache_1to0, + boxset0->getLeftNode(node0),boxset1->getLeftNode(node1),false); + + //collide left0 right1 + + _find_collision_pairs_recursive( + boxset0,boxset1, + collision_pairs,trans_cache_1to0, + boxset0->getLeftNode(node0),boxset1->getRightNode(node1),false); + + + //collide right0 left1 + + _find_collision_pairs_recursive( + boxset0,boxset1, + collision_pairs,trans_cache_1to0, + boxset0->getRightNode(node0),boxset1->getLeftNode(node1),false); + + //collide right0 right1 + + _find_collision_pairs_recursive( + boxset0,boxset1, + collision_pairs,trans_cache_1to0, + boxset0->getRightNode(node0),boxset1->getRightNode(node1),false); + + }// else if node1 is not a leaf + }// else if node0 is not a leaf +} + + +void btGImpactBvh::find_collision(btGImpactBvh * boxset0, const btTransform & trans0, + btGImpactBvh * boxset1, const btTransform & trans1, + btPairSet & collision_pairs) +{ + + if(boxset0->getNodeCount()==0 || boxset1->getNodeCount()==0 ) return; + + BT_BOX_BOX_TRANSFORM_CACHE trans_cache_1to0; + + trans_cache_1to0.calc_from_homogenic(trans0,trans1); + +#ifdef TRI_COLLISION_PROFILING + bt_begin_gim02_tree_time(); +#endif //TRI_COLLISION_PROFILING + + _find_collision_pairs_recursive( + boxset0,boxset1, + &collision_pairs,trans_cache_1to0,0,0,true); +#ifdef TRI_COLLISION_PROFILING + bt_end_gim02_tree_time(); +#endif //TRI_COLLISION_PROFILING + +} + diff --git a/extern/bullet2/BulletCollision/Gimpact/btGImpactBvh.h b/extern/bullet2/BulletCollision/Gimpact/btGImpactBvh.h new file mode 100644 index 00000000000..074de4a4694 --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/btGImpactBvh.h @@ -0,0 +1,396 @@ +#ifndef GIM_BOX_SET_H_INCLUDED +#define GIM_BOX_SET_H_INCLUDED + +/*! \file gim_box_set.h +\author Francisco Len Nßjera +*/ +/* +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "LinearMath/btAlignedObjectArray.h" + +#include "btBoxCollision.h" +#include "btTriangleShapeEx.h" + + + + + +//! Overlapping pair +struct GIM_PAIR +{ + int m_index1; + int m_index2; + GIM_PAIR() + {} + + GIM_PAIR(const GIM_PAIR & p) + { + m_index1 = p.m_index1; + m_index2 = p.m_index2; + } + + GIM_PAIR(int index1, int index2) + { + m_index1 = index1; + m_index2 = index2; + } +}; + +//! A pairset array +class btPairSet: public btAlignedObjectArray +{ +public: + btPairSet() + { + reserve(32); + } + inline void push_pair(int index1,int index2) + { + push_back(GIM_PAIR(index1,index2)); + } + + inline void push_pair_inv(int index1,int index2) + { + push_back(GIM_PAIR(index2,index1)); + } +}; + + +///GIM_BVH_DATA is an internal GIMPACT collision structure to contain axis aligned bounding box +struct GIM_BVH_DATA +{ + btAABB m_bound; + int m_data; +}; + +//! Node Structure for trees +class GIM_BVH_TREE_NODE +{ +public: + btAABB m_bound; +protected: + int m_escapeIndexOrDataIndex; +public: + GIM_BVH_TREE_NODE() + { + m_escapeIndexOrDataIndex = 0; + } + + SIMD_FORCE_INLINE bool isLeafNode() const + { + //skipindex is negative (internal node), triangleindex >=0 (leafnode) + return (m_escapeIndexOrDataIndex>=0); + } + + SIMD_FORCE_INLINE int getEscapeIndex() const + { + //btAssert(m_escapeIndexOrDataIndex < 0); + return -m_escapeIndexOrDataIndex; + } + + SIMD_FORCE_INLINE void setEscapeIndex(int index) + { + m_escapeIndexOrDataIndex = -index; + } + + SIMD_FORCE_INLINE int getDataIndex() const + { + //btAssert(m_escapeIndexOrDataIndex >= 0); + + return m_escapeIndexOrDataIndex; + } + + SIMD_FORCE_INLINE void setDataIndex(int index) + { + m_escapeIndexOrDataIndex = index; + } + +}; + + +class GIM_BVH_DATA_ARRAY:public btAlignedObjectArray +{ +}; + + +class GIM_BVH_TREE_NODE_ARRAY:public btAlignedObjectArray +{ +}; + + + + +//! Basic Box tree structure +class btBvhTree +{ +protected: + int m_num_nodes; + GIM_BVH_TREE_NODE_ARRAY m_node_array; +protected: + int _sort_and_calc_splitting_index( + GIM_BVH_DATA_ARRAY & primitive_boxes, + int startIndex, int endIndex, int splitAxis); + + int _calc_splitting_axis(GIM_BVH_DATA_ARRAY & primitive_boxes, int startIndex, int endIndex); + + void _build_sub_tree(GIM_BVH_DATA_ARRAY & primitive_boxes, int startIndex, int endIndex); +public: + btBvhTree() + { + m_num_nodes = 0; + } + + //! prototype functions for box tree management + //!@{ + void build_tree(GIM_BVH_DATA_ARRAY & primitive_boxes); + + SIMD_FORCE_INLINE void clearNodes() + { + m_node_array.clear(); + m_num_nodes = 0; + } + + //! node count + SIMD_FORCE_INLINE int getNodeCount() const + { + return m_num_nodes; + } + + //! tells if the node is a leaf + SIMD_FORCE_INLINE bool isLeafNode(int nodeindex) const + { + return m_node_array[nodeindex].isLeafNode(); + } + + SIMD_FORCE_INLINE int getNodeData(int nodeindex) const + { + return m_node_array[nodeindex].getDataIndex(); + } + + SIMD_FORCE_INLINE void getNodeBound(int nodeindex, btAABB & bound) const + { + bound = m_node_array[nodeindex].m_bound; + } + + SIMD_FORCE_INLINE void setNodeBound(int nodeindex, const btAABB & bound) + { + m_node_array[nodeindex].m_bound = bound; + } + + SIMD_FORCE_INLINE int getLeftNode(int nodeindex) const + { + return nodeindex+1; + } + + SIMD_FORCE_INLINE int getRightNode(int nodeindex) const + { + if(m_node_array[nodeindex+1].isLeafNode()) return nodeindex+2; + return nodeindex+1 + m_node_array[nodeindex+1].getEscapeIndex(); + } + + SIMD_FORCE_INLINE int getEscapeNodeIndex(int nodeindex) const + { + return m_node_array[nodeindex].getEscapeIndex(); + } + + SIMD_FORCE_INLINE const GIM_BVH_TREE_NODE * get_node_pointer(int index = 0) const + { + return &m_node_array[index]; + } + + //!@} +}; + + +//! Prototype Base class for primitive classification +/*! +This class is a wrapper for primitive collections. +This tells relevant info for the Bounding Box set classes, which take care of space classification. +This class can manage Compound shapes and trimeshes, and if it is managing trimesh then the Hierarchy Bounding Box classes will take advantage of primitive Vs Box overlapping tests for getting optimal results and less Per Box compairisons. +*/ +class btPrimitiveManagerBase +{ +public: + + virtual ~btPrimitiveManagerBase() {} + + //! determines if this manager consist on only triangles, which special case will be optimized + virtual bool is_trimesh() const = 0; + virtual int get_primitive_count() const = 0; + virtual void get_primitive_box(int prim_index ,btAABB & primbox) const = 0; + //! retrieves only the points of the triangle, and the collision margin + virtual void get_primitive_triangle(int prim_index,btPrimitiveTriangle & triangle) const= 0; +}; + + +//! Structure for containing Boxes +/*! +This class offers an structure for managing a box tree of primitives. +Requires a Primitive prototype (like btPrimitiveManagerBase ) +*/ +class btGImpactBvh +{ +protected: + btBvhTree m_box_tree; + btPrimitiveManagerBase * m_primitive_manager; + +protected: + //stackless refit + void refit(); +public: + + //! this constructor doesn't build the tree. you must call buildSet + btGImpactBvh() + { + m_primitive_manager = NULL; + } + + //! this constructor doesn't build the tree. you must call buildSet + btGImpactBvh(btPrimitiveManagerBase * primitive_manager) + { + m_primitive_manager = primitive_manager; + } + + SIMD_FORCE_INLINE btAABB getGlobalBox() const + { + btAABB totalbox; + getNodeBound(0, totalbox); + return totalbox; + } + + SIMD_FORCE_INLINE void setPrimitiveManager(btPrimitiveManagerBase * primitive_manager) + { + m_primitive_manager = primitive_manager; + } + + SIMD_FORCE_INLINE btPrimitiveManagerBase * getPrimitiveManager() const + { + return m_primitive_manager; + } + + +//! node manager prototype functions +///@{ + + //! this attemps to refit the box set. + SIMD_FORCE_INLINE void update() + { + refit(); + } + + //! this rebuild the entire set + void buildSet(); + + //! returns the indices of the primitives in the m_primitive_manager + bool boxQuery(const btAABB & box, btAlignedObjectArray & collided_results) const; + + //! returns the indices of the primitives in the m_primitive_manager + SIMD_FORCE_INLINE bool boxQueryTrans(const btAABB & box, + const btTransform & transform, btAlignedObjectArray & collided_results) const + { + btAABB transbox=box; + transbox.appy_transform(transform); + return boxQuery(transbox,collided_results); + } + + //! returns the indices of the primitives in the m_primitive_manager + bool rayQuery( + const btVector3 & ray_dir,const btVector3 & ray_origin , + btAlignedObjectArray & collided_results) const; + + //! tells if this set has hierarcht + SIMD_FORCE_INLINE bool hasHierarchy() const + { + return true; + } + + //! tells if this set is a trimesh + SIMD_FORCE_INLINE bool isTrimesh() const + { + return m_primitive_manager->is_trimesh(); + } + + //! node count + SIMD_FORCE_INLINE int getNodeCount() const + { + return m_box_tree.getNodeCount(); + } + + //! tells if the node is a leaf + SIMD_FORCE_INLINE bool isLeafNode(int nodeindex) const + { + return m_box_tree.isLeafNode(nodeindex); + } + + SIMD_FORCE_INLINE int getNodeData(int nodeindex) const + { + return m_box_tree.getNodeData(nodeindex); + } + + SIMD_FORCE_INLINE void getNodeBound(int nodeindex, btAABB & bound) const + { + m_box_tree.getNodeBound(nodeindex, bound); + } + + SIMD_FORCE_INLINE void setNodeBound(int nodeindex, const btAABB & bound) + { + m_box_tree.setNodeBound(nodeindex, bound); + } + + + SIMD_FORCE_INLINE int getLeftNode(int nodeindex) const + { + return m_box_tree.getLeftNode(nodeindex); + } + + SIMD_FORCE_INLINE int getRightNode(int nodeindex) const + { + return m_box_tree.getRightNode(nodeindex); + } + + SIMD_FORCE_INLINE int getEscapeNodeIndex(int nodeindex) const + { + return m_box_tree.getEscapeNodeIndex(nodeindex); + } + + SIMD_FORCE_INLINE void getNodeTriangle(int nodeindex,btPrimitiveTriangle & triangle) const + { + m_primitive_manager->get_primitive_triangle(getNodeData(nodeindex),triangle); + } + + + SIMD_FORCE_INLINE const GIM_BVH_TREE_NODE * get_node_pointer(int index = 0) const + { + return m_box_tree.get_node_pointer(index); + } + + + static float getAverageTreeCollisionTime(); + + + static void find_collision(btGImpactBvh * boxset1, const btTransform & trans1, + btGImpactBvh * boxset2, const btTransform & trans2, + btPairSet & collision_pairs); +}; + + +#endif // GIM_BOXPRUNING_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp new file mode 100644 index 00000000000..2f2c09ffc03 --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp @@ -0,0 +1,904 @@ +/* +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ +/* +Author: Francisco Len Nßjera +Concave-Concave Collision + +*/ + +#include "BulletCollision/CollisionDispatch/btManifoldResult.h" +#include "LinearMath/btIDebugDraw.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "BulletCollision/CollisionShapes/btBoxShape.h" +#include "btGImpactCollisionAlgorithm.h" +#include "btContactProcessing.h" +#include "LinearMath/btQuickprof.h" + + +//! Class for accessing the plane equation +class btPlaneShape : public btStaticPlaneShape +{ +public: + + btPlaneShape(const btVector3& v, float f) + :btStaticPlaneShape(v,f) + { + } + + void get_plane_equation(btVector4 &equation) + { + equation[0] = m_planeNormal[0]; + equation[1] = m_planeNormal[1]; + equation[2] = m_planeNormal[2]; + equation[3] = m_planeConstant; + } + + + void get_plane_equation_transformed(const btTransform & trans,btVector4 &equation) + { + equation[0] = trans.getBasis().getRow(0).dot(m_planeNormal); + equation[1] = trans.getBasis().getRow(1).dot(m_planeNormal); + equation[2] = trans.getBasis().getRow(2).dot(m_planeNormal); + equation[3] = trans.getOrigin().dot(m_planeNormal) + m_planeConstant; + } +}; + + + +////////////////////////////////////////////////////////////////////////////////////////////// +#ifdef TRI_COLLISION_PROFILING + +btClock g_triangle_clock; + +float g_accum_triangle_collision_time = 0; +int g_count_triangle_collision = 0; + +void bt_begin_gim02_tri_time() +{ + g_triangle_clock.reset(); +} + +void bt_end_gim02_tri_time() +{ + g_accum_triangle_collision_time += g_triangle_clock.getTimeMicroseconds(); + g_count_triangle_collision++; +} +#endif //TRI_COLLISION_PROFILING +//! Retrieving shapes shapes +/*! +Declared here due of insuficent space on Pool allocators +*/ +//!@{ +class GIM_ShapeRetriever +{ +public: + btGImpactShapeInterface * m_gim_shape; + btTriangleShapeEx m_trishape; + btTetrahedronShapeEx m_tetrashape; + +public: + class ChildShapeRetriever + { + public: + GIM_ShapeRetriever * m_parent; + virtual btCollisionShape * getChildShape(int index) + { + return m_parent->m_gim_shape->getChildShape(index); + } + virtual ~ChildShapeRetriever() {} + }; + + class TriangleShapeRetriever:public ChildShapeRetriever + { + public: + + virtual btCollisionShape * getChildShape(int index) + { + m_parent->m_gim_shape->getBulletTriangle(index,m_parent->m_trishape); + return &m_parent->m_trishape; + } + virtual ~TriangleShapeRetriever() {} + }; + + class TetraShapeRetriever:public ChildShapeRetriever + { + public: + + virtual btCollisionShape * getChildShape(int index) + { + m_parent->m_gim_shape->getBulletTetrahedron(index,m_parent->m_tetrashape); + return &m_parent->m_tetrashape; + } + }; +public: + ChildShapeRetriever m_child_retriever; + TriangleShapeRetriever m_tri_retriever; + TetraShapeRetriever m_tetra_retriever; + ChildShapeRetriever * m_current_retriever; + + GIM_ShapeRetriever(btGImpactShapeInterface * gim_shape) + { + m_gim_shape = gim_shape; + //select retriever + if(m_gim_shape->needsRetrieveTriangles()) + { + m_current_retriever = &m_tri_retriever; + } + else if(m_gim_shape->needsRetrieveTetrahedrons()) + { + m_current_retriever = &m_tetra_retriever; + } + else + { + m_current_retriever = &m_child_retriever; + } + + m_current_retriever->m_parent = this; + } + + btCollisionShape * getChildShape(int index) + { + return m_current_retriever->getChildShape(index); + } + + +}; + + + +//!@} + + +#ifdef TRI_COLLISION_PROFILING + +//! Gets the average time in miliseconds of tree collisions +float btGImpactCollisionAlgorithm::getAverageTreeCollisionTime() +{ + return btGImpactBoxSet::getAverageTreeCollisionTime(); + +} + +//! Gets the average time in miliseconds of triangle collisions +float btGImpactCollisionAlgorithm::getAverageTriangleCollisionTime() +{ + if(g_count_triangle_collision == 0) return 0; + + float avgtime = g_accum_triangle_collision_time; + avgtime /= (float)g_count_triangle_collision; + + g_accum_triangle_collision_time = 0; + g_count_triangle_collision = 0; + + return avgtime; +} + +#endif //TRI_COLLISION_PROFILING + + + +btGImpactCollisionAlgorithm::btGImpactCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) +: btActivatingCollisionAlgorithm(ci,body0,body1) +{ + m_manifoldPtr = NULL; + m_convex_algorithm = NULL; +} + +btGImpactCollisionAlgorithm::~btGImpactCollisionAlgorithm() +{ + clearCache(); +} + + + + + +void btGImpactCollisionAlgorithm::addContactPoint(btCollisionObject * body0, + btCollisionObject * body1, + const btVector3 & point, + const btVector3 & normal, + btScalar distance) +{ + m_resultOut->setShapeIdentifiersA(m_part0,m_triface0); + m_resultOut->setShapeIdentifiersB(m_part1,m_triface1); + checkManifold(body0,body1); + m_resultOut->addContactPoint(normal,point,distance); +} + + +void btGImpactCollisionAlgorithm::shape_vs_shape_collision( + btCollisionObject * body0, + btCollisionObject * body1, + btCollisionShape * shape0, + btCollisionShape * shape1) +{ + + btCollisionShape* tmpShape0 = body0->getCollisionShape(); + btCollisionShape* tmpShape1 = body1->getCollisionShape(); + + body0->internalSetTemporaryCollisionShape(shape0); + body1->internalSetTemporaryCollisionShape(shape1); + + { + btCollisionAlgorithm* algor = newAlgorithm(body0,body1); + // post : checkManifold is called + + m_resultOut->setShapeIdentifiersA(m_part0,m_triface0); + m_resultOut->setShapeIdentifiersB(m_part1,m_triface1); + + algor->processCollision(body0,body1,*m_dispatchInfo,m_resultOut); + + algor->~btCollisionAlgorithm(); + m_dispatcher->freeCollisionAlgorithm(algor); + } + + body0->internalSetTemporaryCollisionShape(tmpShape0); + body1->internalSetTemporaryCollisionShape(tmpShape1); +} + +void btGImpactCollisionAlgorithm::convex_vs_convex_collision( + btCollisionObject * body0, + btCollisionObject * body1, + btCollisionShape * shape0, + btCollisionShape * shape1) +{ + + btCollisionShape* tmpShape0 = body0->getCollisionShape(); + btCollisionShape* tmpShape1 = body1->getCollisionShape(); + + body0->internalSetTemporaryCollisionShape(shape0); + body1->internalSetTemporaryCollisionShape(shape1); + + + m_resultOut->setShapeIdentifiersA(m_part0,m_triface0); + m_resultOut->setShapeIdentifiersB(m_part1,m_triface1); + + checkConvexAlgorithm(body0,body1); + m_convex_algorithm->processCollision(body0,body1,*m_dispatchInfo,m_resultOut); + + body0->internalSetTemporaryCollisionShape(tmpShape0); + body1->internalSetTemporaryCollisionShape(tmpShape1); + +} + + + + +void btGImpactCollisionAlgorithm::gimpact_vs_gimpact_find_pairs( + const btTransform & trans0, + const btTransform & trans1, + btGImpactShapeInterface * shape0, + btGImpactShapeInterface * shape1,btPairSet & pairset) +{ + if(shape0->hasBoxSet() && shape1->hasBoxSet()) + { + btGImpactBoxSet::find_collision(shape0->getBoxSet(),trans0,shape1->getBoxSet(),trans1,pairset); + } + else + { + btAABB boxshape0; + btAABB boxshape1; + int i = shape0->getNumChildShapes(); + + while(i--) + { + shape0->getChildAabb(i,trans0,boxshape0.m_min,boxshape0.m_max); + + int j = shape1->getNumChildShapes(); + while(j--) + { + shape1->getChildAabb(i,trans1,boxshape1.m_min,boxshape1.m_max); + + if(boxshape1.has_collision(boxshape0)) + { + pairset.push_pair(i,j); + } + } + } + } + + +} + + +void btGImpactCollisionAlgorithm::gimpact_vs_shape_find_pairs( + const btTransform & trans0, + const btTransform & trans1, + btGImpactShapeInterface * shape0, + btCollisionShape * shape1, + btAlignedObjectArray & collided_primitives) +{ + + btAABB boxshape; + + + if(shape0->hasBoxSet()) + { + btTransform trans1to0 = trans0.inverse(); + trans1to0 *= trans1; + + shape1->getAabb(trans1to0,boxshape.m_min,boxshape.m_max); + + shape0->getBoxSet()->boxQuery(boxshape, collided_primitives); + } + else + { + shape1->getAabb(trans1,boxshape.m_min,boxshape.m_max); + + btAABB boxshape0; + int i = shape0->getNumChildShapes(); + + while(i--) + { + shape0->getChildAabb(i,trans0,boxshape0.m_min,boxshape0.m_max); + + if(boxshape.has_collision(boxshape0)) + { + collided_primitives.push_back(i); + } + } + + } + +} + + +void btGImpactCollisionAlgorithm::collide_gjk_triangles(btCollisionObject * body0, + btCollisionObject * body1, + btGImpactMeshShapePart * shape0, + btGImpactMeshShapePart * shape1, + const int * pairs, int pair_count) +{ + btTriangleShapeEx tri0; + btTriangleShapeEx tri1; + + shape0->lockChildShapes(); + shape1->lockChildShapes(); + + const int * pair_pointer = pairs; + + while(pair_count--) + { + + m_triface0 = *(pair_pointer); + m_triface1 = *(pair_pointer+1); + pair_pointer+=2; + + + + shape0->getBulletTriangle(m_triface0,tri0); + shape1->getBulletTriangle(m_triface1,tri1); + + + //collide two convex shapes + if(tri0.overlap_test_conservative(tri1)) + { + convex_vs_convex_collision(body0,body1,&tri0,&tri1); + } + + } + + shape0->unlockChildShapes(); + shape1->unlockChildShapes(); +} + +void btGImpactCollisionAlgorithm::collide_sat_triangles(btCollisionObject * body0, + btCollisionObject * body1, + btGImpactMeshShapePart * shape0, + btGImpactMeshShapePart * shape1, + const int * pairs, int pair_count) +{ + btTransform orgtrans0 = body0->getWorldTransform(); + btTransform orgtrans1 = body1->getWorldTransform(); + + btPrimitiveTriangle ptri0; + btPrimitiveTriangle ptri1; + GIM_TRIANGLE_CONTACT contact_data; + + shape0->lockChildShapes(); + shape1->lockChildShapes(); + + const int * pair_pointer = pairs; + + while(pair_count--) + { + + m_triface0 = *(pair_pointer); + m_triface1 = *(pair_pointer+1); + pair_pointer+=2; + + + shape0->getPrimitiveTriangle(m_triface0,ptri0); + shape1->getPrimitiveTriangle(m_triface1,ptri1); + + #ifdef TRI_COLLISION_PROFILING + bt_begin_gim02_tri_time(); + #endif + + ptri0.applyTransform(orgtrans0); + ptri1.applyTransform(orgtrans1); + + + //build planes + ptri0.buildTriPlane(); + ptri1.buildTriPlane(); + // test conservative + + + + if(ptri0.overlap_test_conservative(ptri1)) + { + if(ptri0.find_triangle_collision_clip_method(ptri1,contact_data)) + { + + int j = contact_data.m_point_count; + while(j--) + { + + addContactPoint(body0, body1, + contact_data.m_points[j], + contact_data.m_separating_normal, + -contact_data.m_penetration_depth); + } + } + } + + #ifdef TRI_COLLISION_PROFILING + bt_end_gim02_tri_time(); + #endif + + } + + shape0->unlockChildShapes(); + shape1->unlockChildShapes(); + +} + + +void btGImpactCollisionAlgorithm::gimpact_vs_gimpact( + btCollisionObject * body0, + btCollisionObject * body1, + btGImpactShapeInterface * shape0, + btGImpactShapeInterface * shape1) +{ + + if(shape0->getGImpactShapeType()==CONST_GIMPACT_TRIMESH_SHAPE) + { + btGImpactMeshShape * meshshape0 = static_cast(shape0); + m_part0 = meshshape0->getMeshPartCount(); + + while(m_part0--) + { + gimpact_vs_gimpact(body0,body1,meshshape0->getMeshPart(m_part0),shape1); + } + + return; + } + + if(shape1->getGImpactShapeType()==CONST_GIMPACT_TRIMESH_SHAPE) + { + btGImpactMeshShape * meshshape1 = static_cast(shape1); + m_part1 = meshshape1->getMeshPartCount(); + + while(m_part1--) + { + + gimpact_vs_gimpact(body0,body1,shape0,meshshape1->getMeshPart(m_part1)); + + } + + return; + } + + + btTransform orgtrans0 = body0->getWorldTransform(); + btTransform orgtrans1 = body1->getWorldTransform(); + + btPairSet pairset; + + gimpact_vs_gimpact_find_pairs(orgtrans0,orgtrans1,shape0,shape1,pairset); + + if(pairset.size()== 0) return; + + if(shape0->getGImpactShapeType() == CONST_GIMPACT_TRIMESH_SHAPE_PART && + shape1->getGImpactShapeType() == CONST_GIMPACT_TRIMESH_SHAPE_PART) + { + btGImpactMeshShapePart * shapepart0 = static_cast(shape0); + btGImpactMeshShapePart * shapepart1 = static_cast(shape1); + //specialized function + #ifdef BULLET_TRIANGLE_COLLISION + collide_gjk_triangles(body0,body1,shapepart0,shapepart1,&pairset[0].m_index1,pairset.size()); + #else + collide_sat_triangles(body0,body1,shapepart0,shapepart1,&pairset[0].m_index1,pairset.size()); + #endif + + return; + } + + //general function + + shape0->lockChildShapes(); + shape1->lockChildShapes(); + + GIM_ShapeRetriever retriever0(shape0); + GIM_ShapeRetriever retriever1(shape1); + + bool child_has_transform0 = shape0->childrenHasTransform(); + bool child_has_transform1 = shape1->childrenHasTransform(); + + int i = pairset.size(); + while(i--) + { + GIM_PAIR * pair = &pairset[i]; + m_triface0 = pair->m_index1; + m_triface1 = pair->m_index2; + btCollisionShape * colshape0 = retriever0.getChildShape(m_triface0); + btCollisionShape * colshape1 = retriever1.getChildShape(m_triface1); + + if(child_has_transform0) + { + body0->setWorldTransform(orgtrans0*shape0->getChildTransform(m_triface0)); + } + + if(child_has_transform1) + { + body1->setWorldTransform(orgtrans1*shape1->getChildTransform(m_triface1)); + } + + //collide two convex shapes + convex_vs_convex_collision(body0,body1,colshape0,colshape1); + + + if(child_has_transform0) + { + body0->setWorldTransform(orgtrans0); + } + + if(child_has_transform1) + { + body1->setWorldTransform(orgtrans1); + } + + } + + shape0->unlockChildShapes(); + shape1->unlockChildShapes(); +} + +void btGImpactCollisionAlgorithm::gimpact_vs_shape(btCollisionObject * body0, + btCollisionObject * body1, + btGImpactShapeInterface * shape0, + btCollisionShape * shape1,bool swapped) +{ + if(shape0->getGImpactShapeType()==CONST_GIMPACT_TRIMESH_SHAPE) + { + btGImpactMeshShape * meshshape0 = static_cast(shape0); + int& part = swapped ? m_part1 : m_part0; + part = meshshape0->getMeshPartCount(); + + while(part--) + { + + gimpact_vs_shape(body0, + body1, + meshshape0->getMeshPart(part), + shape1,swapped); + + } + + return; + } + + #ifdef GIMPACT_VS_PLANE_COLLISION + if(shape0->getGImpactShapeType() == CONST_GIMPACT_TRIMESH_SHAPE_PART && + shape1->getShapeType() == STATIC_PLANE_PROXYTYPE) + { + btGImpactMeshShapePart * shapepart = static_cast(shape0); + btStaticPlaneShape * planeshape = static_cast(shape1); + gimpacttrimeshpart_vs_plane_collision(body0,body1,shapepart,planeshape,swapped); + return; + } + + #endif + + + + if(shape1->isCompound()) + { + btCompoundShape * compoundshape = static_cast(shape1); + gimpact_vs_compoundshape(body0,body1,shape0,compoundshape,swapped); + return; + } + else if(shape1->isConcave()) + { + btConcaveShape * concaveshape = static_cast(shape1); + gimpact_vs_concave(body0,body1,shape0,concaveshape,swapped); + return; + } + + + btTransform orgtrans0 = body0->getWorldTransform(); + + btTransform orgtrans1 = body1->getWorldTransform(); + + btAlignedObjectArray collided_results; + + gimpact_vs_shape_find_pairs(orgtrans0,orgtrans1,shape0,shape1,collided_results); + + if(collided_results.size() == 0) return; + + + shape0->lockChildShapes(); + + GIM_ShapeRetriever retriever0(shape0); + + + bool child_has_transform0 = shape0->childrenHasTransform(); + + + int i = collided_results.size(); + + while(i--) + { + int child_index = collided_results[i]; + if(swapped) + m_triface1 = child_index; + else + m_triface0 = child_index; + + btCollisionShape * colshape0 = retriever0.getChildShape(child_index); + + if(child_has_transform0) + { + body0->setWorldTransform(orgtrans0*shape0->getChildTransform(child_index)); + } + + //collide two shapes + if(swapped) + { + shape_vs_shape_collision(body1,body0,shape1,colshape0); + } + else + { + shape_vs_shape_collision(body0,body1,colshape0,shape1); + } + + //restore transforms + if(child_has_transform0) + { + body0->setWorldTransform(orgtrans0); + } + + } + + shape0->unlockChildShapes(); + +} + +void btGImpactCollisionAlgorithm::gimpact_vs_compoundshape(btCollisionObject * body0, + btCollisionObject * body1, + btGImpactShapeInterface * shape0, + btCompoundShape * shape1,bool swapped) +{ + btTransform orgtrans1 = body1->getWorldTransform(); + + int i = shape1->getNumChildShapes(); + while(i--) + { + + btCollisionShape * colshape1 = shape1->getChildShape(i); + btTransform childtrans1 = orgtrans1*shape1->getChildTransform(i); + + body1->setWorldTransform(childtrans1); + + //collide child shape + gimpact_vs_shape(body0, body1, + shape0,colshape1,swapped); + + + //restore transforms + body1->setWorldTransform(orgtrans1); + } +} + +void btGImpactCollisionAlgorithm::gimpacttrimeshpart_vs_plane_collision( + btCollisionObject * body0, + btCollisionObject * body1, + btGImpactMeshShapePart * shape0, + btStaticPlaneShape * shape1,bool swapped) +{ + + + btTransform orgtrans0 = body0->getWorldTransform(); + btTransform orgtrans1 = body1->getWorldTransform(); + + btPlaneShape * planeshape = static_cast(shape1); + btVector4 plane; + planeshape->get_plane_equation_transformed(orgtrans1,plane); + + //test box against plane + + btAABB tribox; + shape0->getAabb(orgtrans0,tribox.m_min,tribox.m_max); + tribox.increment_margin(planeshape->getMargin()); + + if( tribox.plane_classify(plane)!= BT_CONST_COLLIDE_PLANE) return; + + shape0->lockChildShapes(); + + btScalar margin = shape0->getMargin() + planeshape->getMargin(); + + btVector3 vertex; + int vi = shape0->getVertexCount(); + while(vi--) + { + shape0->getVertex(vi,vertex); + vertex = orgtrans0(vertex); + + btScalar distance = vertex.dot(plane) - plane[3] - margin; + + if(distance<0.0)//add contact + { + if(swapped) + { + addContactPoint(body1, body0, + vertex, + -plane, + distance); + } + else + { + addContactPoint(body0, body1, + vertex, + plane, + distance); + } + } + } + + shape0->unlockChildShapes(); +} + + + + +class btGImpactTriangleCallback: public btTriangleCallback +{ +public: + btGImpactCollisionAlgorithm * algorithm; + btCollisionObject * body0; + btCollisionObject * body1; + btGImpactShapeInterface * gimpactshape0; + bool swapped; + btScalar margin; + + virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex) + { + btTriangleShapeEx tri1(triangle[0],triangle[1],triangle[2]); + tri1.setMargin(margin); + if(swapped) + { + algorithm->setPart0(partId); + algorithm->setFace0(triangleIndex); + } + else + { + algorithm->setPart1(partId); + algorithm->setFace1(triangleIndex); + } + algorithm->gimpact_vs_shape( + body0,body1,gimpactshape0,&tri1,swapped); + } +}; + + + + +void btGImpactCollisionAlgorithm::gimpact_vs_concave( + btCollisionObject * body0, + btCollisionObject * body1, + btGImpactShapeInterface * shape0, + btConcaveShape * shape1,bool swapped) +{ + //create the callback + btGImpactTriangleCallback tricallback; + tricallback.algorithm = this; + tricallback.body0 = body0; + tricallback.body1 = body1; + tricallback.gimpactshape0 = shape0; + tricallback.swapped = swapped; + tricallback.margin = shape1->getMargin(); + + //getting the trimesh AABB + btTransform gimpactInConcaveSpace; + + gimpactInConcaveSpace = body1->getWorldTransform().inverse() * body0->getWorldTransform(); + + btVector3 minAABB,maxAABB; + shape0->getAabb(gimpactInConcaveSpace,minAABB,maxAABB); + + shape1->processAllTriangles(&tricallback,minAABB,maxAABB); + +} + + + +void btGImpactCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + clearCache(); + + m_resultOut = resultOut; + m_dispatchInfo = &dispatchInfo; + btGImpactShapeInterface * gimpactshape0; + btGImpactShapeInterface * gimpactshape1; + + if (body0->getCollisionShape()->getShapeType()==GIMPACT_SHAPE_PROXYTYPE) + { + gimpactshape0 = static_cast(body0->getCollisionShape()); + + if( body1->getCollisionShape()->getShapeType()==GIMPACT_SHAPE_PROXYTYPE ) + { + gimpactshape1 = static_cast(body1->getCollisionShape()); + + gimpact_vs_gimpact(body0,body1,gimpactshape0,gimpactshape1); + } + else + { + gimpact_vs_shape(body0,body1,gimpactshape0,body1->getCollisionShape(),false); + } + + } + else if (body1->getCollisionShape()->getShapeType()==GIMPACT_SHAPE_PROXYTYPE ) + { + gimpactshape1 = static_cast(body1->getCollisionShape()); + + gimpact_vs_shape(body1,body0,gimpactshape1,body0->getCollisionShape(),true); + } +} + + +btScalar btGImpactCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + return 1.f; + +} + +///////////////////////////////////// REGISTERING ALGORITHM ////////////////////////////////////////////// + + + +//! Use this function for register the algorithm externally +void btGImpactCollisionAlgorithm::registerAlgorithm(btCollisionDispatcher * dispatcher) +{ + + static btGImpactCollisionAlgorithm::CreateFunc s_gimpact_cf; + + int i; + + for ( i = 0;i < MAX_BROADPHASE_COLLISION_TYPES ;i++ ) + { + dispatcher->registerCollisionCreateFunc(GIMPACT_SHAPE_PROXYTYPE,i ,&s_gimpact_cf); + } + + for ( i = 0;i < MAX_BROADPHASE_COLLISION_TYPES ;i++ ) + { + dispatcher->registerCollisionCreateFunc(i,GIMPACT_SHAPE_PROXYTYPE ,&s_gimpact_cf); + } + +} diff --git a/extern/bullet2/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h b/extern/bullet2/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h new file mode 100644 index 00000000000..453472aa034 --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h @@ -0,0 +1,306 @@ +/*! \file btGImpactShape.h +\author Francisco Len Nßjera +*/ +/* +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BVH_CONCAVE_COLLISION_ALGORITHM_H +#define BVH_CONCAVE_COLLISION_ALGORITHM_H + +#include "BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h" +#include "BulletCollision/BroadphaseCollision/btDispatcher.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h" +#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" +class btDispatcher; +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" + +#include "LinearMath/btAlignedObjectArray.h" + +#include "btGImpactShape.h" +#include "BulletCollision/CollisionShapes/btStaticPlaneShape.h" +#include "BulletCollision/CollisionShapes/btCompoundShape.h" +#include "BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h" +#include "LinearMath/btIDebugDraw.h" + + + +//! Collision Algorithm for GImpact Shapes +/*! +For register this algorithm in Bullet, proceed as following: + \code +btCollisionDispatcher * dispatcher = static_cast(m_dynamicsWorld ->getDispatcher()); +btGImpactCollisionAlgorithm::registerAlgorithm(dispatcher); + \endcode +*/ +class btGImpactCollisionAlgorithm : public btActivatingCollisionAlgorithm +{ +protected: + btCollisionAlgorithm * m_convex_algorithm; + btPersistentManifold * m_manifoldPtr; + btManifoldResult* m_resultOut; + const btDispatcherInfo * m_dispatchInfo; + int m_triface0; + int m_part0; + int m_triface1; + int m_part1; + + + //! Creates a new contact point + SIMD_FORCE_INLINE btPersistentManifold* newContactManifold(btCollisionObject* body0,btCollisionObject* body1) + { + m_manifoldPtr = m_dispatcher->getNewManifold(body0,body1); + return m_manifoldPtr; + } + + SIMD_FORCE_INLINE void destroyConvexAlgorithm() + { + if(m_convex_algorithm) + { + m_convex_algorithm->~btCollisionAlgorithm(); + m_dispatcher->freeCollisionAlgorithm( m_convex_algorithm); + m_convex_algorithm = NULL; + } + } + + SIMD_FORCE_INLINE void destroyContactManifolds() + { + if(m_manifoldPtr == NULL) return; + m_dispatcher->releaseManifold(m_manifoldPtr); + m_manifoldPtr = NULL; + } + + SIMD_FORCE_INLINE void clearCache() + { + destroyContactManifolds(); + destroyConvexAlgorithm(); + + m_triface0 = -1; + m_part0 = -1; + m_triface1 = -1; + m_part1 = -1; + } + + SIMD_FORCE_INLINE btPersistentManifold* getLastManifold() + { + return m_manifoldPtr; + } + + + // Call before process collision + SIMD_FORCE_INLINE void checkManifold(btCollisionObject* body0,btCollisionObject* body1) + { + if(getLastManifold() == 0) + { + newContactManifold(body0,body1); + } + + m_resultOut->setPersistentManifold(getLastManifold()); + } + + // Call before process collision + SIMD_FORCE_INLINE btCollisionAlgorithm * newAlgorithm(btCollisionObject* body0,btCollisionObject* body1) + { + checkManifold(body0,body1); + + btCollisionAlgorithm * convex_algorithm = m_dispatcher->findAlgorithm( + body0,body1,getLastManifold()); + return convex_algorithm ; + } + + // Call before process collision + SIMD_FORCE_INLINE void checkConvexAlgorithm(btCollisionObject* body0,btCollisionObject* body1) + { + if(m_convex_algorithm) return; + m_convex_algorithm = newAlgorithm(body0,body1); + } + + + + + void addContactPoint(btCollisionObject * body0, + btCollisionObject * body1, + const btVector3 & point, + const btVector3 & normal, + btScalar distance); + +//! Collision routines +//!@{ + + void collide_gjk_triangles(btCollisionObject * body0, + btCollisionObject * body1, + btGImpactMeshShapePart * shape0, + btGImpactMeshShapePart * shape1, + const int * pairs, int pair_count); + + void collide_sat_triangles(btCollisionObject * body0, + btCollisionObject * body1, + btGImpactMeshShapePart * shape0, + btGImpactMeshShapePart * shape1, + const int * pairs, int pair_count); + + + + + void shape_vs_shape_collision( + btCollisionObject * body0, + btCollisionObject * body1, + btCollisionShape * shape0, + btCollisionShape * shape1); + + void convex_vs_convex_collision(btCollisionObject * body0, + btCollisionObject * body1, + btCollisionShape * shape0, + btCollisionShape * shape1); + + + + void gimpact_vs_gimpact_find_pairs( + const btTransform & trans0, + const btTransform & trans1, + btGImpactShapeInterface * shape0, + btGImpactShapeInterface * shape1,btPairSet & pairset); + + void gimpact_vs_shape_find_pairs( + const btTransform & trans0, + const btTransform & trans1, + btGImpactShapeInterface * shape0, + btCollisionShape * shape1, + btAlignedObjectArray & collided_primitives); + + + void gimpacttrimeshpart_vs_plane_collision( + btCollisionObject * body0, + btCollisionObject * body1, + btGImpactMeshShapePart * shape0, + btStaticPlaneShape * shape1,bool swapped); + + +public: + + btGImpactCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1); + + virtual ~btGImpactCollisionAlgorithm(); + + virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual void getAllContactManifolds(btManifoldArray& manifoldArray) + { + if (m_manifoldPtr) + manifoldArray.push_back(m_manifoldPtr); + } + + + struct CreateFunc :public btCollisionAlgorithmCreateFunc + { + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) + { + void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btGImpactCollisionAlgorithm)); + return new(mem) btGImpactCollisionAlgorithm(ci,body0,body1); + } + }; + + //! Use this function for register the algorithm externally + static void registerAlgorithm(btCollisionDispatcher * dispatcher); + + //! Gets the average time in miliseconds of tree collisions + static float getAverageTreeCollisionTime(); + + //! Gets the average time in miliseconds of triangle collisions + static float getAverageTriangleCollisionTime(); + + + //! Collides two gimpact shapes + /*! + \pre shape0 and shape1 couldn't be btGImpactMeshShape objects + */ + + + void gimpact_vs_gimpact(btCollisionObject * body0, + btCollisionObject * body1, + btGImpactShapeInterface * shape0, + btGImpactShapeInterface * shape1); + + void gimpact_vs_shape(btCollisionObject * body0, + btCollisionObject * body1, + btGImpactShapeInterface * shape0, + btCollisionShape * shape1,bool swapped); + + void gimpact_vs_compoundshape(btCollisionObject * body0, + btCollisionObject * body1, + btGImpactShapeInterface * shape0, + btCompoundShape * shape1,bool swapped); + + void gimpact_vs_concave( + btCollisionObject * body0, + btCollisionObject * body1, + btGImpactShapeInterface * shape0, + btConcaveShape * shape1,bool swapped); + + + + + /// Accessor/Mutator pairs for Part and triangleID + void setFace0(int value) + { + m_triface0 = value; + } + int getFace0() + { + return m_triface0; + } + void setFace1(int value) + { + m_triface1 = value; + } + int getFace1() + { + return m_triface1; + } + void setPart0(int value) + { + m_part0 = value; + } + int getPart0() + { + return m_part0; + } + void setPart1(int value) + { + m_part1 = value; + } + int getPart1() + { + return m_part1; + } + +}; + + +//algorithm details +//#define BULLET_TRIANGLE_COLLISION 1 +#define GIMPACT_VS_PLANE_COLLISION 1 + + + +#endif //BVH_CONCAVE_COLLISION_ALGORITHM_H diff --git a/extern/bullet2/BulletCollision/Gimpact/btGImpactMassUtil.h b/extern/bullet2/BulletCollision/Gimpact/btGImpactMassUtil.h new file mode 100644 index 00000000000..0a10f3cdb7b --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/btGImpactMassUtil.h @@ -0,0 +1,60 @@ +/*! \file btGImpactMassUtil.h +\author Francisco Len Nßjera +*/ +/* +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef GIMPACT_MASS_UTIL_H +#define GIMPACT_MASS_UTIL_H + +#include "LinearMath/btTransform.h" + + + +SIMD_FORCE_INLINE btVector3 gim_inertia_add_transformed( + const btVector3 & source_inertia, const btVector3 & added_inertia, const btTransform & transform) +{ + btMatrix3x3 rotatedTensor = transform.getBasis().scaled(added_inertia) * transform.getBasis().transpose(); + + btScalar x2 = transform.getOrigin()[0]; + x2*= x2; + btScalar y2 = transform.getOrigin()[1]; + y2*= y2; + btScalar z2 = transform.getOrigin()[2]; + z2*= z2; + + btScalar ix = rotatedTensor[0][0]*(y2+z2); + btScalar iy = rotatedTensor[1][1]*(x2+z2); + btScalar iz = rotatedTensor[2][2]*(x2+y2); + + return btVector3(source_inertia[0]+ix,source_inertia[1]+iy,source_inertia[2] + iz); +} + +SIMD_FORCE_INLINE btVector3 gim_get_point_inertia(const btVector3 & point, btScalar mass) +{ + btScalar x2 = point[0]*point[0]; + btScalar y2 = point[1]*point[1]; + btScalar z2 = point[2]*point[2]; + return btVector3(mass*(y2+z2),mass*(x2+z2),mass*(x2+y2)); +} + + +#endif //GIMPACT_MESH_SHAPE_H diff --git a/extern/bullet2/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp b/extern/bullet2/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp new file mode 100644 index 00000000000..ea1647a8129 --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp @@ -0,0 +1,528 @@ +/*! \file gim_box_set.h +\author Francisco Len Nßjera +*/ +/* +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btGImpactQuantizedBvh.h" +#include "LinearMath/btQuickprof.h" + +#ifdef TRI_COLLISION_PROFILING +btClock g_q_tree_clock; + + +float g_q_accum_tree_collision_time = 0; +int g_q_count_traversing = 0; + + +void bt_begin_gim02_q_tree_time() +{ + g_q_tree_clock.reset(); +} + +void bt_end_gim02_q_tree_time() +{ + g_q_accum_tree_collision_time += g_q_tree_clock.getTimeMicroseconds(); + g_q_count_traversing++; +} + + +//! Gets the average time in miliseconds of tree collisions +float btGImpactQuantizedBvh::getAverageTreeCollisionTime() +{ + if(g_q_count_traversing == 0) return 0; + + float avgtime = g_q_accum_tree_collision_time; + avgtime /= (float)g_q_count_traversing; + + g_q_accum_tree_collision_time = 0; + g_q_count_traversing = 0; + return avgtime; + +// float avgtime = g_q_count_traversing; +// g_q_count_traversing = 0; +// return avgtime; + +} + +#endif //TRI_COLLISION_PROFILING + +/////////////////////// btQuantizedBvhTree ///////////////////////////////// + +void btQuantizedBvhTree::calc_quantization( + GIM_BVH_DATA_ARRAY & primitive_boxes, btScalar boundMargin) +{ + //calc globa box + btAABB global_bound; + global_bound.invalidate(); + + for (int i=0;i splitValue) + { + //swap + primitive_boxes.swap(i,splitIndex); + //swapLeafNodes(i,splitIndex); + splitIndex++; + } + } + + //if the splitIndex causes unbalanced trees, fix this by using the center in between startIndex and endIndex + //otherwise the tree-building might fail due to stack-overflows in certain cases. + //unbalanced1 is unsafe: it can cause stack overflows + //bool unbalanced1 = ((splitIndex==startIndex) || (splitIndex == (endIndex-1))); + + //unbalanced2 should work too: always use center (perfect balanced trees) + //bool unbalanced2 = true; + + //this should be safe too: + int rangeBalancedIndices = numIndices/3; + bool unbalanced = ((splitIndex<=(startIndex+rangeBalancedIndices)) || (splitIndex >=(endIndex-1-rangeBalancedIndices))); + + if (unbalanced) + { + splitIndex = startIndex+ (numIndices>>1); + } + + btAssert(!((splitIndex==startIndex) || (splitIndex == (endIndex)))); + + return splitIndex; + +} + + +void btQuantizedBvhTree::_build_sub_tree(GIM_BVH_DATA_ARRAY & primitive_boxes, int startIndex, int endIndex) +{ + int curIndex = m_num_nodes; + m_num_nodes++; + + btAssert((endIndex-startIndex)>0); + + if ((endIndex-startIndex)==1) + { + //We have a leaf node + setNodeBound(curIndex,primitive_boxes[startIndex].m_bound); + m_node_array[curIndex].setDataIndex(primitive_boxes[startIndex].m_data); + + return; + } + //calculate Best Splitting Axis and where to split it. Sort the incoming 'leafNodes' array within range 'startIndex/endIndex'. + + //split axis + int splitIndex = _calc_splitting_axis(primitive_boxes,startIndex,endIndex); + + splitIndex = _sort_and_calc_splitting_index( + primitive_boxes,startIndex,endIndex, + splitIndex//split axis + ); + + + //calc this node bounding box + + btAABB node_bound; + node_bound.invalidate(); + + for (int i=startIndex;iget_primitive_box(getNodeData(nodecount),leafbox); + setNodeBound(nodecount,leafbox); + } + else + { + //const GIM_BVH_TREE_NODE * nodepointer = get_node_pointer(nodecount); + //get left bound + btAABB bound; + bound.invalidate(); + + btAABB temp_box; + + int child_node = getLeftNode(nodecount); + if(child_node) + { + getNodeBound(child_node,temp_box); + bound.merge(temp_box); + } + + child_node = getRightNode(nodecount); + if(child_node) + { + getNodeBound(child_node,temp_box); + bound.merge(temp_box); + } + + setNodeBound(nodecount,bound); + } + } +} + +//! this rebuild the entire set +void btGImpactQuantizedBvh::buildSet() +{ + //obtain primitive boxes + GIM_BVH_DATA_ARRAY primitive_boxes; + primitive_boxes.resize(m_primitive_manager->get_primitive_count()); + + for (int i = 0;iget_primitive_box(i,primitive_boxes[i].m_bound); + primitive_boxes[i].m_data = i; + } + + m_box_tree.build_tree(primitive_boxes); +} + +//! returns the indices of the primitives in the m_primitive_manager +bool btGImpactQuantizedBvh::boxQuery(const btAABB & box, btAlignedObjectArray & collided_results) const +{ + int curIndex = 0; + int numNodes = getNodeCount(); + + //quantize box + + unsigned short quantizedMin[3]; + unsigned short quantizedMax[3]; + + m_box_tree.quantizePoint(quantizedMin,box.m_min); + m_box_tree.quantizePoint(quantizedMax,box.m_max); + + + while (curIndex < numNodes) + { + + //catch bugs in tree data + + bool aabbOverlap = m_box_tree.testQuantizedBoxOverlapp(curIndex, quantizedMin,quantizedMax); + bool isleafnode = isLeafNode(curIndex); + + if (isleafnode && aabbOverlap) + { + collided_results.push_back(getNodeData(curIndex)); + } + + if (aabbOverlap || isleafnode) + { + //next subnode + curIndex++; + } + else + { + //skip node + curIndex+= getEscapeNodeIndex(curIndex); + } + } + if(collided_results.size()>0) return true; + return false; +} + + + +//! returns the indices of the primitives in the m_primitive_manager +bool btGImpactQuantizedBvh::rayQuery( + const btVector3 & ray_dir,const btVector3 & ray_origin , + btAlignedObjectArray & collided_results) const +{ + int curIndex = 0; + int numNodes = getNodeCount(); + + while (curIndex < numNodes) + { + btAABB bound; + getNodeBound(curIndex,bound); + + //catch bugs in tree data + + bool aabbOverlap = bound.collide_ray(ray_origin,ray_dir); + bool isleafnode = isLeafNode(curIndex); + + if (isleafnode && aabbOverlap) + { + collided_results.push_back(getNodeData( curIndex)); + } + + if (aabbOverlap || isleafnode) + { + //next subnode + curIndex++; + } + else + { + //skip node + curIndex+= getEscapeNodeIndex(curIndex); + } + } + if(collided_results.size()>0) return true; + return false; +} + + +SIMD_FORCE_INLINE bool _quantized_node_collision( + btGImpactQuantizedBvh * boxset0, btGImpactQuantizedBvh * boxset1, + const BT_BOX_BOX_TRANSFORM_CACHE & trans_cache_1to0, + int node0 ,int node1, bool complete_primitive_tests) +{ + btAABB box0; + boxset0->getNodeBound(node0,box0); + btAABB box1; + boxset1->getNodeBound(node1,box1); + + return box0.overlapping_trans_cache(box1,trans_cache_1to0,complete_primitive_tests ); +// box1.appy_transform_trans_cache(trans_cache_1to0); +// return box0.has_collision(box1); + +} + + +//stackless recursive collision routine +static void _find_quantized_collision_pairs_recursive( + btGImpactQuantizedBvh * boxset0, btGImpactQuantizedBvh * boxset1, + btPairSet * collision_pairs, + const BT_BOX_BOX_TRANSFORM_CACHE & trans_cache_1to0, + int node0, int node1, bool complete_primitive_tests) +{ + + + + if( _quantized_node_collision( + boxset0,boxset1,trans_cache_1to0, + node0,node1,complete_primitive_tests) ==false) return;//avoid colliding internal nodes + + if(boxset0->isLeafNode(node0)) + { + if(boxset1->isLeafNode(node1)) + { + // collision result + collision_pairs->push_pair( + boxset0->getNodeData(node0),boxset1->getNodeData(node1)); + return; + } + else + { + + //collide left recursive + + _find_quantized_collision_pairs_recursive( + boxset0,boxset1, + collision_pairs,trans_cache_1to0, + node0,boxset1->getLeftNode(node1),false); + + //collide right recursive + _find_quantized_collision_pairs_recursive( + boxset0,boxset1, + collision_pairs,trans_cache_1to0, + node0,boxset1->getRightNode(node1),false); + + + } + } + else + { + if(boxset1->isLeafNode(node1)) + { + + //collide left recursive + _find_quantized_collision_pairs_recursive( + boxset0,boxset1, + collision_pairs,trans_cache_1to0, + boxset0->getLeftNode(node0),node1,false); + + + //collide right recursive + + _find_quantized_collision_pairs_recursive( + boxset0,boxset1, + collision_pairs,trans_cache_1to0, + boxset0->getRightNode(node0),node1,false); + + + } + else + { + //collide left0 left1 + + + + _find_quantized_collision_pairs_recursive( + boxset0,boxset1, + collision_pairs,trans_cache_1to0, + boxset0->getLeftNode(node0),boxset1->getLeftNode(node1),false); + + //collide left0 right1 + + _find_quantized_collision_pairs_recursive( + boxset0,boxset1, + collision_pairs,trans_cache_1to0, + boxset0->getLeftNode(node0),boxset1->getRightNode(node1),false); + + + //collide right0 left1 + + _find_quantized_collision_pairs_recursive( + boxset0,boxset1, + collision_pairs,trans_cache_1to0, + boxset0->getRightNode(node0),boxset1->getLeftNode(node1),false); + + //collide right0 right1 + + _find_quantized_collision_pairs_recursive( + boxset0,boxset1, + collision_pairs,trans_cache_1to0, + boxset0->getRightNode(node0),boxset1->getRightNode(node1),false); + + }// else if node1 is not a leaf + }// else if node0 is not a leaf +} + + +void btGImpactQuantizedBvh::find_collision(btGImpactQuantizedBvh * boxset0, const btTransform & trans0, + btGImpactQuantizedBvh * boxset1, const btTransform & trans1, + btPairSet & collision_pairs) +{ + + if(boxset0->getNodeCount()==0 || boxset1->getNodeCount()==0 ) return; + + BT_BOX_BOX_TRANSFORM_CACHE trans_cache_1to0; + + trans_cache_1to0.calc_from_homogenic(trans0,trans1); + +#ifdef TRI_COLLISION_PROFILING + bt_begin_gim02_q_tree_time(); +#endif //TRI_COLLISION_PROFILING + + _find_quantized_collision_pairs_recursive( + boxset0,boxset1, + &collision_pairs,trans_cache_1to0,0,0,true); +#ifdef TRI_COLLISION_PROFILING + bt_end_gim02_q_tree_time(); +#endif //TRI_COLLISION_PROFILING + +} + + diff --git a/extern/bullet2/BulletCollision/Gimpact/btGImpactQuantizedBvh.h b/extern/bullet2/BulletCollision/Gimpact/btGImpactQuantizedBvh.h new file mode 100644 index 00000000000..e9cccac75f5 --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/btGImpactQuantizedBvh.h @@ -0,0 +1,372 @@ +#ifndef GIM_QUANTIZED_SET_H_INCLUDED +#define GIM_QUANTIZED_SET_H_INCLUDED + +/*! \file btGImpactQuantizedBvh.h +\author Francisco Len Nßjera +*/ +/* +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btGImpactBvh.h" +#include "btQuantization.h" + + + + + +///btQuantizedBvhNode is a compressed aabb node, 16 bytes. +///Node can be used for leafnode or internal node. Leafnodes can point to 32-bit triangle index (non-negative range). +ATTRIBUTE_ALIGNED16 (struct) BT_QUANTIZED_BVH_NODE +{ + //12 bytes + unsigned short int m_quantizedAabbMin[3]; + unsigned short int m_quantizedAabbMax[3]; + //4 bytes + int m_escapeIndexOrDataIndex; + + BT_QUANTIZED_BVH_NODE() + { + m_escapeIndexOrDataIndex = 0; + } + + SIMD_FORCE_INLINE bool isLeafNode() const + { + //skipindex is negative (internal node), triangleindex >=0 (leafnode) + return (m_escapeIndexOrDataIndex>=0); + } + + SIMD_FORCE_INLINE int getEscapeIndex() const + { + //btAssert(m_escapeIndexOrDataIndex < 0); + return -m_escapeIndexOrDataIndex; + } + + SIMD_FORCE_INLINE void setEscapeIndex(int index) + { + m_escapeIndexOrDataIndex = -index; + } + + SIMD_FORCE_INLINE int getDataIndex() const + { + //btAssert(m_escapeIndexOrDataIndex >= 0); + + return m_escapeIndexOrDataIndex; + } + + SIMD_FORCE_INLINE void setDataIndex(int index) + { + m_escapeIndexOrDataIndex = index; + } + + SIMD_FORCE_INLINE bool testQuantizedBoxOverlapp( + unsigned short * quantizedMin,unsigned short * quantizedMax) const + { + if(m_quantizedAabbMin[0] > quantizedMax[0] || + m_quantizedAabbMax[0] < quantizedMin[0] || + m_quantizedAabbMin[1] > quantizedMax[1] || + m_quantizedAabbMax[1] < quantizedMin[1] || + m_quantizedAabbMin[2] > quantizedMax[2] || + m_quantizedAabbMax[2] < quantizedMin[2]) + { + return false; + } + return true; + } + +}; + + + +class GIM_QUANTIZED_BVH_NODE_ARRAY:public btAlignedObjectArray +{ +}; + + + + +//! Basic Box tree structure +class btQuantizedBvhTree +{ +protected: + int m_num_nodes; + GIM_QUANTIZED_BVH_NODE_ARRAY m_node_array; + btAABB m_global_bound; + btVector3 m_bvhQuantization; +protected: + void calc_quantization(GIM_BVH_DATA_ARRAY & primitive_boxes, btScalar boundMargin = btScalar(1.0) ); + + int _sort_and_calc_splitting_index( + GIM_BVH_DATA_ARRAY & primitive_boxes, + int startIndex, int endIndex, int splitAxis); + + int _calc_splitting_axis(GIM_BVH_DATA_ARRAY & primitive_boxes, int startIndex, int endIndex); + + void _build_sub_tree(GIM_BVH_DATA_ARRAY & primitive_boxes, int startIndex, int endIndex); +public: + btQuantizedBvhTree() + { + m_num_nodes = 0; + } + + //! prototype functions for box tree management + //!@{ + void build_tree(GIM_BVH_DATA_ARRAY & primitive_boxes); + + SIMD_FORCE_INLINE void quantizePoint( + unsigned short * quantizedpoint, const btVector3 & point) const + { + bt_quantize_clamp(quantizedpoint,point,m_global_bound.m_min,m_global_bound.m_max,m_bvhQuantization); + } + + + SIMD_FORCE_INLINE bool testQuantizedBoxOverlapp( + int node_index, + unsigned short * quantizedMin,unsigned short * quantizedMax) const + { + return m_node_array[node_index].testQuantizedBoxOverlapp(quantizedMin,quantizedMax); + } + + SIMD_FORCE_INLINE void clearNodes() + { + m_node_array.clear(); + m_num_nodes = 0; + } + + //! node count + SIMD_FORCE_INLINE int getNodeCount() const + { + return m_num_nodes; + } + + //! tells if the node is a leaf + SIMD_FORCE_INLINE bool isLeafNode(int nodeindex) const + { + return m_node_array[nodeindex].isLeafNode(); + } + + SIMD_FORCE_INLINE int getNodeData(int nodeindex) const + { + return m_node_array[nodeindex].getDataIndex(); + } + + SIMD_FORCE_INLINE void getNodeBound(int nodeindex, btAABB & bound) const + { + bound.m_min = bt_unquantize( + m_node_array[nodeindex].m_quantizedAabbMin, + m_global_bound.m_min,m_bvhQuantization); + + bound.m_max = bt_unquantize( + m_node_array[nodeindex].m_quantizedAabbMax, + m_global_bound.m_min,m_bvhQuantization); + } + + SIMD_FORCE_INLINE void setNodeBound(int nodeindex, const btAABB & bound) + { + bt_quantize_clamp( m_node_array[nodeindex].m_quantizedAabbMin, + bound.m_min, + m_global_bound.m_min, + m_global_bound.m_max, + m_bvhQuantization); + + bt_quantize_clamp( m_node_array[nodeindex].m_quantizedAabbMax, + bound.m_max, + m_global_bound.m_min, + m_global_bound.m_max, + m_bvhQuantization); + } + + SIMD_FORCE_INLINE int getLeftNode(int nodeindex) const + { + return nodeindex+1; + } + + SIMD_FORCE_INLINE int getRightNode(int nodeindex) const + { + if(m_node_array[nodeindex+1].isLeafNode()) return nodeindex+2; + return nodeindex+1 + m_node_array[nodeindex+1].getEscapeIndex(); + } + + SIMD_FORCE_INLINE int getEscapeNodeIndex(int nodeindex) const + { + return m_node_array[nodeindex].getEscapeIndex(); + } + + SIMD_FORCE_INLINE const BT_QUANTIZED_BVH_NODE * get_node_pointer(int index = 0) const + { + return &m_node_array[index]; + } + + //!@} +}; + + + +//! Structure for containing Boxes +/*! +This class offers an structure for managing a box tree of primitives. +Requires a Primitive prototype (like btPrimitiveManagerBase ) +*/ +class btGImpactQuantizedBvh +{ +protected: + btQuantizedBvhTree m_box_tree; + btPrimitiveManagerBase * m_primitive_manager; + +protected: + //stackless refit + void refit(); +public: + + //! this constructor doesn't build the tree. you must call buildSet + btGImpactQuantizedBvh() + { + m_primitive_manager = NULL; + } + + //! this constructor doesn't build the tree. you must call buildSet + btGImpactQuantizedBvh(btPrimitiveManagerBase * primitive_manager) + { + m_primitive_manager = primitive_manager; + } + + SIMD_FORCE_INLINE btAABB getGlobalBox() const + { + btAABB totalbox; + getNodeBound(0, totalbox); + return totalbox; + } + + SIMD_FORCE_INLINE void setPrimitiveManager(btPrimitiveManagerBase * primitive_manager) + { + m_primitive_manager = primitive_manager; + } + + SIMD_FORCE_INLINE btPrimitiveManagerBase * getPrimitiveManager() const + { + return m_primitive_manager; + } + + +//! node manager prototype functions +///@{ + + //! this attemps to refit the box set. + SIMD_FORCE_INLINE void update() + { + refit(); + } + + //! this rebuild the entire set + void buildSet(); + + //! returns the indices of the primitives in the m_primitive_manager + bool boxQuery(const btAABB & box, btAlignedObjectArray & collided_results) const; + + //! returns the indices of the primitives in the m_primitive_manager + SIMD_FORCE_INLINE bool boxQueryTrans(const btAABB & box, + const btTransform & transform, btAlignedObjectArray & collided_results) const + { + btAABB transbox=box; + transbox.appy_transform(transform); + return boxQuery(transbox,collided_results); + } + + //! returns the indices of the primitives in the m_primitive_manager + bool rayQuery( + const btVector3 & ray_dir,const btVector3 & ray_origin , + btAlignedObjectArray & collided_results) const; + + //! tells if this set has hierarcht + SIMD_FORCE_INLINE bool hasHierarchy() const + { + return true; + } + + //! tells if this set is a trimesh + SIMD_FORCE_INLINE bool isTrimesh() const + { + return m_primitive_manager->is_trimesh(); + } + + //! node count + SIMD_FORCE_INLINE int getNodeCount() const + { + return m_box_tree.getNodeCount(); + } + + //! tells if the node is a leaf + SIMD_FORCE_INLINE bool isLeafNode(int nodeindex) const + { + return m_box_tree.isLeafNode(nodeindex); + } + + SIMD_FORCE_INLINE int getNodeData(int nodeindex) const + { + return m_box_tree.getNodeData(nodeindex); + } + + SIMD_FORCE_INLINE void getNodeBound(int nodeindex, btAABB & bound) const + { + m_box_tree.getNodeBound(nodeindex, bound); + } + + SIMD_FORCE_INLINE void setNodeBound(int nodeindex, const btAABB & bound) + { + m_box_tree.setNodeBound(nodeindex, bound); + } + + + SIMD_FORCE_INLINE int getLeftNode(int nodeindex) const + { + return m_box_tree.getLeftNode(nodeindex); + } + + SIMD_FORCE_INLINE int getRightNode(int nodeindex) const + { + return m_box_tree.getRightNode(nodeindex); + } + + SIMD_FORCE_INLINE int getEscapeNodeIndex(int nodeindex) const + { + return m_box_tree.getEscapeNodeIndex(nodeindex); + } + + SIMD_FORCE_INLINE void getNodeTriangle(int nodeindex,btPrimitiveTriangle & triangle) const + { + m_primitive_manager->get_primitive_triangle(getNodeData(nodeindex),triangle); + } + + + SIMD_FORCE_INLINE const BT_QUANTIZED_BVH_NODE * get_node_pointer(int index = 0) const + { + return m_box_tree.get_node_pointer(index); + } + + + static float getAverageTreeCollisionTime(); + + + static void find_collision(btGImpactQuantizedBvh * boxset1, const btTransform & trans1, + btGImpactQuantizedBvh * boxset2, const btTransform & trans2, + btPairSet & collision_pairs); +}; + + +#endif // GIM_BOXPRUNING_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/btGImpactShape.cpp b/extern/bullet2/BulletCollision/Gimpact/btGImpactShape.cpp new file mode 100644 index 00000000000..cceace55e4b --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/btGImpactShape.cpp @@ -0,0 +1,203 @@ +/* +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btGImpactShape.h" +#include "btGImpactMassUtil.h" + + +#define CALC_EXACT_INERTIA 1 + +void btGImpactCompoundShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const +{ + lockChildShapes(); +#ifdef CALC_EXACT_INERTIA + inertia.setValue(0.f,0.f,0.f); + + int i = this->getNumChildShapes(); + btScalar shapemass = mass/btScalar(i); + + while(i--) + { + btVector3 temp_inertia; + m_childShapes[i]->calculateLocalInertia(shapemass,temp_inertia); + if(childrenHasTransform()) + { + inertia = gim_inertia_add_transformed( inertia,temp_inertia,m_childTransforms[i]); + } + else + { + inertia = gim_inertia_add_transformed( inertia,temp_inertia,btTransform::getIdentity()); + } + + } + +#else + + // Calc box inertia + + btScalar lx= m_localAABB.m_max[0] - m_localAABB.m_min[0]; + btScalar ly= m_localAABB.m_max[1] - m_localAABB.m_min[1]; + btScalar lz= m_localAABB.m_max[2] - m_localAABB.m_min[2]; + const btScalar x2 = lx*lx; + const btScalar y2 = ly*ly; + const btScalar z2 = lz*lz; + const btScalar scaledmass = mass * btScalar(0.08333333); + + inertia = scaledmass * (btVector3(y2+z2,x2+z2,x2+y2)); + +#endif + unlockChildShapes(); +} + + + +void btGImpactMeshShapePart::calculateLocalInertia(btScalar mass,btVector3& inertia) const +{ + lockChildShapes(); + + +#ifdef CALC_EXACT_INERTIA + inertia.setValue(0.f,0.f,0.f); + + int i = this->getVertexCount(); + btScalar pointmass = mass/btScalar(i); + + while(i--) + { + btVector3 pointintertia; + this->getVertex(i,pointintertia); + pointintertia = gim_get_point_inertia(pointintertia,pointmass); + inertia+=pointintertia; + } + +#else + + // Calc box inertia + + btScalar lx= m_localAABB.m_max[0] - m_localAABB.m_min[0]; + btScalar ly= m_localAABB.m_max[1] - m_localAABB.m_min[1]; + btScalar lz= m_localAABB.m_max[2] - m_localAABB.m_min[2]; + const btScalar x2 = lx*lx; + const btScalar y2 = ly*ly; + const btScalar z2 = lz*lz; + const btScalar scaledmass = mass * btScalar(0.08333333); + + inertia = scaledmass * (btVector3(y2+z2,x2+z2,x2+y2)); + +#endif + + unlockChildShapes(); +} + +void btGImpactMeshShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const +{ + +#ifdef CALC_EXACT_INERTIA + inertia.setValue(0.f,0.f,0.f); + + int i = this->getMeshPartCount(); + btScalar partmass = mass/btScalar(i); + + while(i--) + { + btVector3 partinertia; + getMeshPart(i)->calculateLocalInertia(partmass,partinertia); + inertia+=partinertia; + } + +#else + + // Calc box inertia + + btScalar lx= m_localAABB.m_max[0] - m_localAABB.m_min[0]; + btScalar ly= m_localAABB.m_max[1] - m_localAABB.m_min[1]; + btScalar lz= m_localAABB.m_max[2] - m_localAABB.m_min[2]; + const btScalar x2 = lx*lx; + const btScalar y2 = ly*ly; + const btScalar z2 = lz*lz; + const btScalar scaledmass = mass * btScalar(0.08333333); + + inertia = scaledmass * (btVector3(y2+z2,x2+z2,x2+y2)); + +#endif +} + +void btGImpactMeshShape::rayTest(const btVector3& rayFrom, const btVector3& rayTo, btCollisionWorld::RayResultCallback& resultCallback) const +{ +} + + +void btGImpactMeshShapePart::processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const +{ + lockChildShapes(); + btAABB box; + box.m_min = aabbMin; + box.m_max = aabbMax; + + btAlignedObjectArray collided; + m_box_set.boxQuery(box,collided); + + if(collided.size()==0) + { + unlockChildShapes(); + return; + } + + int part = (int)getPart(); + btPrimitiveTriangle triangle; + int i = collided.size(); + while(i--) + { + this->getPrimitiveTriangle(collided[i],triangle); + callback->processTriangle(triangle.m_vertices,part,collided[i]); + } + unlockChildShapes(); + +} + +void btGImpactMeshShape::processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const +{ + int i = m_mesh_parts.size(); + while(i--) + { + m_mesh_parts[i]->processAllTriangles(callback,aabbMin,aabbMax); + } +} + + +///fills the dataBuffer and returns the struct name (and 0 on failure) +const char* btGImpactMeshShape::serialize(void* dataBuffer, btSerializer* serializer) const +{ + btGImpactMeshShapeData* trimeshData = (btGImpactMeshShapeData*) dataBuffer; + + btCollisionShape::serialize(&trimeshData->m_collisionShapeData,serializer); + + m_meshInterface->serialize(&trimeshData->m_meshInterface, serializer); + + trimeshData->m_collisionMargin = float(m_collisionMargin); + + localScaling.serializeFloat(trimeshData->m_localScaling); + + trimeshData->m_gimpactSubType = int(getGImpactShapeType()); + + return "btGImpactMeshShapeData"; +} + diff --git a/extern/bullet2/BulletCollision/Gimpact/btGImpactShape.h b/extern/bullet2/BulletCollision/Gimpact/btGImpactShape.h new file mode 100644 index 00000000000..90015bb9ac0 --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/btGImpactShape.h @@ -0,0 +1,1171 @@ +/*! \file btGImpactShape.h +\author Francisco Len Nßjera +*/ +/* +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef GIMPACT_SHAPE_H +#define GIMPACT_SHAPE_H + +#include "BulletCollision/CollisionShapes/btCollisionShape.h" +#include "BulletCollision/CollisionShapes/btTriangleShape.h" +#include "BulletCollision/CollisionShapes/btStridingMeshInterface.h" +#include "BulletCollision/CollisionShapes/btCollisionMargin.h" +#include "BulletCollision/CollisionDispatch/btCollisionWorld.h" +#include "BulletCollision/CollisionShapes/btConcaveShape.h" +#include "BulletCollision/CollisionShapes/btTetrahedronShape.h" +#include "LinearMath/btVector3.h" +#include "LinearMath/btTransform.h" +#include "LinearMath/btMatrix3x3.h" +#include "LinearMath/btAlignedObjectArray.h" + +#include "btGImpactQuantizedBvh.h" // box tree class + + +//! declare Quantized trees, (you can change to float based trees) +typedef btGImpactQuantizedBvh btGImpactBoxSet; + +enum eGIMPACT_SHAPE_TYPE +{ + CONST_GIMPACT_COMPOUND_SHAPE = 0, + CONST_GIMPACT_TRIMESH_SHAPE_PART, + CONST_GIMPACT_TRIMESH_SHAPE +}; + + +//! Helper class for tetrahedrons +class btTetrahedronShapeEx:public btBU_Simplex1to4 +{ +public: + btTetrahedronShapeEx() + { + m_numVertices = 4; + } + + + SIMD_FORCE_INLINE void setVertices( + const btVector3 & v0,const btVector3 & v1, + const btVector3 & v2,const btVector3 & v3) + { + m_vertices[0] = v0; + m_vertices[1] = v1; + m_vertices[2] = v2; + m_vertices[3] = v3; + recalcLocalAabb(); + } +}; + + +//! Base class for gimpact shapes +class btGImpactShapeInterface : public btConcaveShape +{ +protected: + btAABB m_localAABB; + bool m_needs_update; + btVector3 localScaling; + btGImpactBoxSet m_box_set;// optionally boxset + + //! use this function for perfofm refit in bounding boxes + //! use this function for perfofm refit in bounding boxes + virtual void calcLocalAABB() + { + lockChildShapes(); + if(m_box_set.getNodeCount() == 0) + { + m_box_set.buildSet(); + } + else + { + m_box_set.update(); + } + unlockChildShapes(); + + m_localAABB = m_box_set.getGlobalBox(); + } + + +public: + btGImpactShapeInterface() + { + m_shapeType=GIMPACT_SHAPE_PROXYTYPE; + m_localAABB.invalidate(); + m_needs_update = true; + localScaling.setValue(1.f,1.f,1.f); + } + + + //! performs refit operation + /*! + Updates the entire Box set of this shape. + \pre postUpdate() must be called for attemps to calculating the box set, else this function + will does nothing. + \post if m_needs_update == true, then it calls calcLocalAABB(); + */ + SIMD_FORCE_INLINE void updateBound() + { + if(!m_needs_update) return; + calcLocalAABB(); + m_needs_update = false; + } + + //! If the Bounding box is not updated, then this class attemps to calculate it. + /*! + \post Calls updateBound() for update the box set. + */ + void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const + { + btAABB transformedbox = m_localAABB; + transformedbox.appy_transform(t); + aabbMin = transformedbox.m_min; + aabbMax = transformedbox.m_max; + } + + //! Tells to this object that is needed to refit the box set + virtual void postUpdate() + { + m_needs_update = true; + } + + //! Obtains the local box, which is the global calculated box of the total of subshapes + SIMD_FORCE_INLINE const btAABB & getLocalBox() + { + return m_localAABB; + } + + + virtual int getShapeType() const + { + return GIMPACT_SHAPE_PROXYTYPE; + } + + /*! + \post You must call updateBound() for update the box set. + */ + virtual void setLocalScaling(const btVector3& scaling) + { + localScaling = scaling; + postUpdate(); + } + + virtual const btVector3& getLocalScaling() const + { + return localScaling; + } + + + virtual void setMargin(btScalar margin) + { + m_collisionMargin = margin; + int i = getNumChildShapes(); + while(i--) + { + btCollisionShape* child = getChildShape(i); + child->setMargin(margin); + } + + m_needs_update = true; + } + + + //! Subshape member functions + //!@{ + + //! Base method for determinig which kind of GIMPACT shape we get + virtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const = 0 ; + + //! gets boxset + SIMD_FORCE_INLINE btGImpactBoxSet * getBoxSet() + { + return &m_box_set; + } + + //! Determines if this class has a hierarchy structure for sorting its primitives + SIMD_FORCE_INLINE bool hasBoxSet() const + { + if(m_box_set.getNodeCount() == 0) return false; + return true; + } + + //! Obtains the primitive manager + virtual const btPrimitiveManagerBase * getPrimitiveManager() const = 0; + + + //! Gets the number of children + virtual int getNumChildShapes() const = 0; + + //! if true, then its children must get transforms. + virtual bool childrenHasTransform() const = 0; + + //! Determines if this shape has triangles + virtual bool needsRetrieveTriangles() const = 0; + + //! Determines if this shape has tetrahedrons + virtual bool needsRetrieveTetrahedrons() const = 0; + + virtual void getBulletTriangle(int prim_index,btTriangleShapeEx & triangle) const = 0; + + virtual void getBulletTetrahedron(int prim_index,btTetrahedronShapeEx & tetrahedron) const = 0; + + + + //! call when reading child shapes + virtual void lockChildShapes() const + { + } + + virtual void unlockChildShapes() const + { + } + + //! if this trimesh + SIMD_FORCE_INLINE void getPrimitiveTriangle(int index,btPrimitiveTriangle & triangle) const + { + getPrimitiveManager()->get_primitive_triangle(index,triangle); + } + + + //! Retrieves the bound from a child + /*! + */ + virtual void getChildAabb(int child_index,const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const + { + btAABB child_aabb; + getPrimitiveManager()->get_primitive_box(child_index,child_aabb); + child_aabb.appy_transform(t); + aabbMin = child_aabb.m_min; + aabbMax = child_aabb.m_max; + } + + //! Gets the children + virtual btCollisionShape* getChildShape(int index) = 0; + + + //! Gets the child + virtual const btCollisionShape* getChildShape(int index) const = 0; + + //! Gets the children transform + virtual btTransform getChildTransform(int index) const = 0; + + //! Sets the children transform + /*! + \post You must call updateBound() for update the box set. + */ + virtual void setChildTransform(int index, const btTransform & transform) = 0; + + //!@} + + + //! virtual method for ray collision + virtual void rayTest(const btVector3& rayFrom, const btVector3& rayTo, btCollisionWorld::RayResultCallback& resultCallback) const + { + (void) rayFrom; (void) rayTo; (void) resultCallback; + } + + //! Function for retrieve triangles. + /*! + It gives the triangles in local space + */ + virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const + { + (void) callback; (void) aabbMin; (void) aabbMax; + } + + //!@} + +}; + + +//! btGImpactCompoundShape allows to handle multiple btCollisionShape objects at once +/*! +This class only can manage Convex subshapes +*/ +class btGImpactCompoundShape : public btGImpactShapeInterface +{ +public: + //! compound primitive manager + class CompoundPrimitiveManager:public btPrimitiveManagerBase + { + public: + virtual ~CompoundPrimitiveManager() {} + btGImpactCompoundShape * m_compoundShape; + + + CompoundPrimitiveManager(const CompoundPrimitiveManager& compound) + : btPrimitiveManagerBase() + { + m_compoundShape = compound.m_compoundShape; + } + + CompoundPrimitiveManager(btGImpactCompoundShape * compoundShape) + { + m_compoundShape = compoundShape; + } + + CompoundPrimitiveManager() + { + m_compoundShape = NULL; + } + + virtual bool is_trimesh() const + { + return false; + } + + virtual int get_primitive_count() const + { + return (int )m_compoundShape->getNumChildShapes(); + } + + virtual void get_primitive_box(int prim_index ,btAABB & primbox) const + { + btTransform prim_trans; + if(m_compoundShape->childrenHasTransform()) + { + prim_trans = m_compoundShape->getChildTransform(prim_index); + } + else + { + prim_trans.setIdentity(); + } + const btCollisionShape* shape = m_compoundShape->getChildShape(prim_index); + shape->getAabb(prim_trans,primbox.m_min,primbox.m_max); + } + + virtual void get_primitive_triangle(int prim_index,btPrimitiveTriangle & triangle) const + { + btAssert(0); + (void) prim_index; (void) triangle; + } + + }; + + + +protected: + CompoundPrimitiveManager m_primitive_manager; + btAlignedObjectArray m_childTransforms; + btAlignedObjectArray m_childShapes; + + +public: + + btGImpactCompoundShape(bool children_has_transform = true) + { + (void) children_has_transform; + m_primitive_manager.m_compoundShape = this; + m_box_set.setPrimitiveManager(&m_primitive_manager); + } + + virtual ~btGImpactCompoundShape() + { + } + + + //! if true, then its children must get transforms. + virtual bool childrenHasTransform() const + { + if(m_childTransforms.size()==0) return false; + return true; + } + + + //! Obtains the primitive manager + virtual const btPrimitiveManagerBase * getPrimitiveManager() const + { + return &m_primitive_manager; + } + + //! Obtains the compopund primitive manager + SIMD_FORCE_INLINE CompoundPrimitiveManager * getCompoundPrimitiveManager() + { + return &m_primitive_manager; + } + + //! Gets the number of children + virtual int getNumChildShapes() const + { + return m_childShapes.size(); + } + + + //! Use this method for adding children. Only Convex shapes are allowed. + void addChildShape(const btTransform& localTransform,btCollisionShape* shape) + { + btAssert(shape->isConvex()); + m_childTransforms.push_back(localTransform); + m_childShapes.push_back(shape); + } + + //! Use this method for adding children. Only Convex shapes are allowed. + void addChildShape(btCollisionShape* shape) + { + btAssert(shape->isConvex()); + m_childShapes.push_back(shape); + } + + //! Gets the children + virtual btCollisionShape* getChildShape(int index) + { + return m_childShapes[index]; + } + + //! Gets the children + virtual const btCollisionShape* getChildShape(int index) const + { + return m_childShapes[index]; + } + + //! Retrieves the bound from a child + /*! + */ + virtual void getChildAabb(int child_index,const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const + { + + if(childrenHasTransform()) + { + m_childShapes[child_index]->getAabb(t*m_childTransforms[child_index],aabbMin,aabbMax); + } + else + { + m_childShapes[child_index]->getAabb(t,aabbMin,aabbMax); + } + } + + + //! Gets the children transform + virtual btTransform getChildTransform(int index) const + { + btAssert(m_childTransforms.size() == m_childShapes.size()); + return m_childTransforms[index]; + } + + //! Sets the children transform + /*! + \post You must call updateBound() for update the box set. + */ + virtual void setChildTransform(int index, const btTransform & transform) + { + btAssert(m_childTransforms.size() == m_childShapes.size()); + m_childTransforms[index] = transform; + postUpdate(); + } + + //! Determines if this shape has triangles + virtual bool needsRetrieveTriangles() const + { + return false; + } + + //! Determines if this shape has tetrahedrons + virtual bool needsRetrieveTetrahedrons() const + { + return false; + } + + + virtual void getBulletTriangle(int prim_index,btTriangleShapeEx & triangle) const + { + (void) prim_index; (void) triangle; + btAssert(0); + } + + virtual void getBulletTetrahedron(int prim_index,btTetrahedronShapeEx & tetrahedron) const + { + (void) prim_index; (void) tetrahedron; + btAssert(0); + } + + + //! Calculates the exact inertia tensor for this shape + virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; + + virtual const char* getName()const + { + return "GImpactCompound"; + } + + virtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const + { + return CONST_GIMPACT_COMPOUND_SHAPE; + } + +}; + + + +//! This class manages a sub part of a mesh supplied by the btStridingMeshInterface interface. +/*! +- Simply create this shape by passing the btStridingMeshInterface to the constructor btGImpactMeshShapePart, then you must call updateBound() after creating the mesh +- When making operations with this shape, you must call lock before accessing to the trimesh primitives, and then call unlock +- You can handle deformable meshes with this shape, by calling postUpdate() every time when changing the mesh vertices. + +*/ +class btGImpactMeshShapePart : public btGImpactShapeInterface +{ +public: + //! Trimesh primitive manager + /*! + Manages the info from btStridingMeshInterface object and controls the Lock/Unlock mechanism + */ + class TrimeshPrimitiveManager:public btPrimitiveManagerBase + { + public: + btScalar m_margin; + btStridingMeshInterface * m_meshInterface; + btVector3 m_scale; + int m_part; + int m_lock_count; + const unsigned char *vertexbase; + int numverts; + PHY_ScalarType type; + int stride; + const unsigned char *indexbase; + int indexstride; + int numfaces; + PHY_ScalarType indicestype; + + TrimeshPrimitiveManager() + { + m_meshInterface = NULL; + m_part = 0; + m_margin = 0.01f; + m_scale = btVector3(1.f,1.f,1.f); + m_lock_count = 0; + vertexbase = 0; + numverts = 0; + stride = 0; + indexbase = 0; + indexstride = 0; + numfaces = 0; + } + + TrimeshPrimitiveManager(const TrimeshPrimitiveManager & manager) + : btPrimitiveManagerBase() + { + m_meshInterface = manager.m_meshInterface; + m_part = manager.m_part; + m_margin = manager.m_margin; + m_scale = manager.m_scale; + m_lock_count = 0; + vertexbase = 0; + numverts = 0; + stride = 0; + indexbase = 0; + indexstride = 0; + numfaces = 0; + + } + + TrimeshPrimitiveManager( + btStridingMeshInterface * meshInterface, int part) + { + m_meshInterface = meshInterface; + m_part = part; + m_scale = m_meshInterface->getScaling(); + m_margin = 0.1f; + m_lock_count = 0; + vertexbase = 0; + numverts = 0; + stride = 0; + indexbase = 0; + indexstride = 0; + numfaces = 0; + + } + + virtual ~TrimeshPrimitiveManager() {} + + void lock() + { + if(m_lock_count>0) + { + m_lock_count++; + return; + } + m_meshInterface->getLockedReadOnlyVertexIndexBase( + &vertexbase,numverts, + type, stride,&indexbase, indexstride, numfaces,indicestype,m_part); + + m_lock_count = 1; + } + + void unlock() + { + if(m_lock_count == 0) return; + if(m_lock_count>1) + { + --m_lock_count; + return; + } + m_meshInterface->unLockReadOnlyVertexBase(m_part); + vertexbase = NULL; + m_lock_count = 0; + } + + virtual bool is_trimesh() const + { + return true; + } + + virtual int get_primitive_count() const + { + return (int )numfaces; + } + + SIMD_FORCE_INLINE int get_vertex_count() const + { + return (int )numverts; + } + + SIMD_FORCE_INLINE void get_indices(int face_index,int &i0,int &i1,int &i2) const + { + if(indicestype == PHY_SHORT) + { + short * s_indices = (short *)(indexbase + face_index*indexstride); + i0 = s_indices[0]; + i1 = s_indices[1]; + i2 = s_indices[2]; + } + else + { + int * i_indices = (int *)(indexbase + face_index*indexstride); + i0 = i_indices[0]; + i1 = i_indices[1]; + i2 = i_indices[2]; + } + } + + SIMD_FORCE_INLINE void get_vertex(int vertex_index, btVector3 & vertex) const + { + if(type == PHY_DOUBLE) + { + double * dvertices = (double *)(vertexbase + vertex_index*stride); + vertex[0] = btScalar(dvertices[0]*m_scale[0]); + vertex[1] = btScalar(dvertices[1]*m_scale[1]); + vertex[2] = btScalar(dvertices[2]*m_scale[2]); + } + else + { + float * svertices = (float *)(vertexbase + vertex_index*stride); + vertex[0] = svertices[0]*m_scale[0]; + vertex[1] = svertices[1]*m_scale[1]; + vertex[2] = svertices[2]*m_scale[2]; + } + } + + virtual void get_primitive_box(int prim_index ,btAABB & primbox) const + { + btPrimitiveTriangle triangle; + get_primitive_triangle(prim_index,triangle); + primbox.calc_from_triangle_margin( + triangle.m_vertices[0], + triangle.m_vertices[1],triangle.m_vertices[2],triangle.m_margin); + } + + virtual void get_primitive_triangle(int prim_index,btPrimitiveTriangle & triangle) const + { + int indices[3]; + get_indices(prim_index,indices[0],indices[1],indices[2]); + get_vertex(indices[0],triangle.m_vertices[0]); + get_vertex(indices[1],triangle.m_vertices[1]); + get_vertex(indices[2],triangle.m_vertices[2]); + triangle.m_margin = m_margin; + } + + SIMD_FORCE_INLINE void get_bullet_triangle(int prim_index,btTriangleShapeEx & triangle) const + { + int indices[3]; + get_indices(prim_index,indices[0],indices[1],indices[2]); + get_vertex(indices[0],triangle.m_vertices1[0]); + get_vertex(indices[1],triangle.m_vertices1[1]); + get_vertex(indices[2],triangle.m_vertices1[2]); + triangle.setMargin(m_margin); + } + + }; + + +protected: + TrimeshPrimitiveManager m_primitive_manager; +public: + + btGImpactMeshShapePart() + { + m_box_set.setPrimitiveManager(&m_primitive_manager); + } + + + btGImpactMeshShapePart(btStridingMeshInterface * meshInterface, int part) + { + m_primitive_manager.m_meshInterface = meshInterface; + m_primitive_manager.m_part = part; + m_box_set.setPrimitiveManager(&m_primitive_manager); + } + + virtual ~btGImpactMeshShapePart() + { + } + + //! if true, then its children must get transforms. + virtual bool childrenHasTransform() const + { + return false; + } + + + //! call when reading child shapes + virtual void lockChildShapes() const + { + void * dummy = (void*)(m_box_set.getPrimitiveManager()); + TrimeshPrimitiveManager * dummymanager = static_cast(dummy); + dummymanager->lock(); + } + + virtual void unlockChildShapes() const + { + void * dummy = (void*)(m_box_set.getPrimitiveManager()); + TrimeshPrimitiveManager * dummymanager = static_cast(dummy); + dummymanager->unlock(); + } + + //! Gets the number of children + virtual int getNumChildShapes() const + { + return m_primitive_manager.get_primitive_count(); + } + + + //! Gets the children + virtual btCollisionShape* getChildShape(int index) + { + (void) index; + btAssert(0); + return NULL; + } + + + + //! Gets the child + virtual const btCollisionShape* getChildShape(int index) const + { + (void) index; + btAssert(0); + return NULL; + } + + //! Gets the children transform + virtual btTransform getChildTransform(int index) const + { + (void) index; + btAssert(0); + return btTransform(); + } + + //! Sets the children transform + /*! + \post You must call updateBound() for update the box set. + */ + virtual void setChildTransform(int index, const btTransform & transform) + { + (void) index; + (void) transform; + btAssert(0); + } + + + //! Obtains the primitive manager + virtual const btPrimitiveManagerBase * getPrimitiveManager() const + { + return &m_primitive_manager; + } + + SIMD_FORCE_INLINE TrimeshPrimitiveManager * getTrimeshPrimitiveManager() + { + return &m_primitive_manager; + } + + + + + + virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; + + + + + virtual const char* getName()const + { + return "GImpactMeshShapePart"; + } + + virtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const + { + return CONST_GIMPACT_TRIMESH_SHAPE_PART; + } + + //! Determines if this shape has triangles + virtual bool needsRetrieveTriangles() const + { + return true; + } + + //! Determines if this shape has tetrahedrons + virtual bool needsRetrieveTetrahedrons() const + { + return false; + } + + virtual void getBulletTriangle(int prim_index,btTriangleShapeEx & triangle) const + { + m_primitive_manager.get_bullet_triangle(prim_index,triangle); + } + + virtual void getBulletTetrahedron(int prim_index,btTetrahedronShapeEx & tetrahedron) const + { + (void) prim_index; + (void) tetrahedron; + btAssert(0); + } + + + + SIMD_FORCE_INLINE int getVertexCount() const + { + return m_primitive_manager.get_vertex_count(); + } + + SIMD_FORCE_INLINE void getVertex(int vertex_index, btVector3 & vertex) const + { + m_primitive_manager.get_vertex(vertex_index,vertex); + } + + SIMD_FORCE_INLINE void setMargin(btScalar margin) + { + m_primitive_manager.m_margin = margin; + postUpdate(); + } + + SIMD_FORCE_INLINE btScalar getMargin() const + { + return m_primitive_manager.m_margin; + } + + virtual void setLocalScaling(const btVector3& scaling) + { + m_primitive_manager.m_scale = scaling; + postUpdate(); + } + + virtual const btVector3& getLocalScaling() const + { + return m_primitive_manager.m_scale; + } + + SIMD_FORCE_INLINE int getPart() const + { + return (int)m_primitive_manager.m_part; + } + + virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const; +}; + + +//! This class manages a mesh supplied by the btStridingMeshInterface interface. +/*! +Set of btGImpactMeshShapePart parts +- Simply create this shape by passing the btStridingMeshInterface to the constructor btGImpactMeshShape, then you must call updateBound() after creating the mesh + +- You can handle deformable meshes with this shape, by calling postUpdate() every time when changing the mesh vertices. + +*/ +class btGImpactMeshShape : public btGImpactShapeInterface +{ + btStridingMeshInterface* m_meshInterface; + +protected: + btAlignedObjectArray m_mesh_parts; + void buildMeshParts(btStridingMeshInterface * meshInterface) + { + for (int i=0;igetNumSubParts() ;++i ) + { + btGImpactMeshShapePart * newpart = new btGImpactMeshShapePart(meshInterface,i); + m_mesh_parts.push_back(newpart); + } + } + + //! use this function for perfofm refit in bounding boxes + virtual void calcLocalAABB() + { + m_localAABB.invalidate(); + int i = m_mesh_parts.size(); + while(i--) + { + m_mesh_parts[i]->updateBound(); + m_localAABB.merge(m_mesh_parts[i]->getLocalBox()); + } + } + +public: + btGImpactMeshShape(btStridingMeshInterface * meshInterface) + { + m_meshInterface = meshInterface; + buildMeshParts(meshInterface); + } + + virtual ~btGImpactMeshShape() + { + int i = m_mesh_parts.size(); + while(i--) + { + btGImpactMeshShapePart * part = m_mesh_parts[i]; + delete part; + } + m_mesh_parts.clear(); + } + + + btStridingMeshInterface* getMeshInterface() + { + return m_meshInterface; + } + + const btStridingMeshInterface* getMeshInterface() const + { + return m_meshInterface; + } + + int getMeshPartCount() const + { + return m_mesh_parts.size(); + } + + btGImpactMeshShapePart * getMeshPart(int index) + { + return m_mesh_parts[index]; + } + + + + const btGImpactMeshShapePart * getMeshPart(int index) const + { + return m_mesh_parts[index]; + } + + + virtual void setLocalScaling(const btVector3& scaling) + { + localScaling = scaling; + + int i = m_mesh_parts.size(); + while(i--) + { + btGImpactMeshShapePart * part = m_mesh_parts[i]; + part->setLocalScaling(scaling); + } + + m_needs_update = true; + } + + virtual void setMargin(btScalar margin) + { + m_collisionMargin = margin; + + int i = m_mesh_parts.size(); + while(i--) + { + btGImpactMeshShapePart * part = m_mesh_parts[i]; + part->setMargin(margin); + } + + m_needs_update = true; + } + + //! Tells to this object that is needed to refit all the meshes + virtual void postUpdate() + { + int i = m_mesh_parts.size(); + while(i--) + { + btGImpactMeshShapePart * part = m_mesh_parts[i]; + part->postUpdate(); + } + + m_needs_update = true; + } + + virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; + + + //! Obtains the primitive manager + virtual const btPrimitiveManagerBase * getPrimitiveManager() const + { + btAssert(0); + return NULL; + } + + + //! Gets the number of children + virtual int getNumChildShapes() const + { + btAssert(0); + return 0; + } + + + //! if true, then its children must get transforms. + virtual bool childrenHasTransform() const + { + btAssert(0); + return false; + } + + //! Determines if this shape has triangles + virtual bool needsRetrieveTriangles() const + { + btAssert(0); + return false; + } + + //! Determines if this shape has tetrahedrons + virtual bool needsRetrieveTetrahedrons() const + { + btAssert(0); + return false; + } + + virtual void getBulletTriangle(int prim_index,btTriangleShapeEx & triangle) const + { + (void) prim_index; (void) triangle; + btAssert(0); + } + + virtual void getBulletTetrahedron(int prim_index,btTetrahedronShapeEx & tetrahedron) const + { + (void) prim_index; (void) tetrahedron; + btAssert(0); + } + + //! call when reading child shapes + virtual void lockChildShapes() const + { + btAssert(0); + } + + virtual void unlockChildShapes() const + { + btAssert(0); + } + + + + + //! Retrieves the bound from a child + /*! + */ + virtual void getChildAabb(int child_index,const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const + { + (void) child_index; (void) t; (void) aabbMin; (void) aabbMax; + btAssert(0); + } + + //! Gets the children + virtual btCollisionShape* getChildShape(int index) + { + (void) index; + btAssert(0); + return NULL; + } + + + //! Gets the child + virtual const btCollisionShape* getChildShape(int index) const + { + (void) index; + btAssert(0); + return NULL; + } + + //! Gets the children transform + virtual btTransform getChildTransform(int index) const + { + (void) index; + btAssert(0); + return btTransform(); + } + + //! Sets the children transform + /*! + \post You must call updateBound() for update the box set. + */ + virtual void setChildTransform(int index, const btTransform & transform) + { + (void) index; (void) transform; + btAssert(0); + } + + + virtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const + { + return CONST_GIMPACT_TRIMESH_SHAPE; + } + + + virtual const char* getName()const + { + return "GImpactMesh"; + } + + virtual void rayTest(const btVector3& rayFrom, const btVector3& rayTo, btCollisionWorld::RayResultCallback& resultCallback) const; + + //! Function for retrieve triangles. + /*! + It gives the triangles in local space + */ + virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const; + + virtual int calculateSerializeBufferSize() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; + +}; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btGImpactMeshShapeData +{ + btCollisionShapeData m_collisionShapeData; + + btStridingMeshInterfaceData m_meshInterface; + + btVector3FloatData m_localScaling; + + float m_collisionMargin; + + int m_gimpactSubType; +}; + +SIMD_FORCE_INLINE int btGImpactMeshShape::calculateSerializeBufferSize() const +{ + return sizeof(btGImpactMeshShapeData); +} + + +#endif //GIMPACT_MESH_SHAPE_H diff --git a/extern/bullet2/BulletCollision/Gimpact/btGenericPoolAllocator.cpp b/extern/bullet2/BulletCollision/Gimpact/btGenericPoolAllocator.cpp new file mode 100644 index 00000000000..956fa0430e3 --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/btGenericPoolAllocator.cpp @@ -0,0 +1,283 @@ +/*! \file btGenericPoolAllocator.cpp +\author Francisco Len Nßjera. email projectileman@yahoo.com + +General purpose allocator class +*/ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btGenericPoolAllocator.h" + + + +/// *************** btGenericMemoryPool ******************/////////// + +size_t btGenericMemoryPool::allocate_from_free_nodes(size_t num_elements) +{ + size_t ptr = BT_UINT_MAX; + + if(m_free_nodes_count == 0) return BT_UINT_MAX; + // find an avaliable free node with the correct size + size_t revindex = m_free_nodes_count; + + while(revindex-- && ptr == BT_UINT_MAX) + { + if(m_allocated_sizes[m_free_nodes[revindex]]>=num_elements) + { + ptr = revindex; + } + } + if(ptr == BT_UINT_MAX) return BT_UINT_MAX; // not found + + + revindex = ptr; + ptr = m_free_nodes[revindex]; + // post: ptr contains the node index, and revindex the index in m_free_nodes + + size_t finalsize = m_allocated_sizes[ptr]; + finalsize -= num_elements; + + m_allocated_sizes[ptr] = num_elements; + + // post: finalsize>=0, m_allocated_sizes[ptr] has the requested size + + if(finalsize>0) // preserve free node, there are some free memory + { + m_free_nodes[revindex] = ptr + num_elements; + m_allocated_sizes[ptr + num_elements] = finalsize; + } + else // delete free node + { + // swap with end + m_free_nodes[revindex] = m_free_nodes[m_free_nodes_count-1]; + m_free_nodes_count--; + } + + return ptr; +} + +size_t btGenericMemoryPool::allocate_from_pool(size_t num_elements) +{ + if(m_allocated_count+num_elements>m_max_element_count) return BT_UINT_MAX; + + size_t ptr = m_allocated_count; + + m_allocated_sizes[m_allocated_count] = num_elements; + m_allocated_count+=num_elements; + + return ptr; +} + + +void btGenericMemoryPool::init_pool(size_t element_size, size_t element_count) +{ + m_allocated_count = 0; + m_free_nodes_count = 0; + + m_element_size = element_size; + m_max_element_count = element_count; + + + + + m_pool = (unsigned char *) btAlignedAlloc(m_element_size*m_max_element_count,16); + m_free_nodes = (size_t *) btAlignedAlloc(sizeof(size_t)*m_max_element_count,16); + m_allocated_sizes = (size_t *) btAlignedAlloc(sizeof(size_t)*m_max_element_count,16); + + for (size_t i = 0;i< m_max_element_count;i++ ) + { + m_allocated_sizes[i] = 0; + } +} + +void btGenericMemoryPool::end_pool() +{ + btAlignedFree(m_pool); + btAlignedFree(m_free_nodes); + btAlignedFree(m_allocated_sizes); + m_allocated_count = 0; + m_free_nodes_count = 0; +} + + +//! Allocates memory in pool +/*! +\param size_bytes size in bytes of the buffer +*/ +void * btGenericMemoryPool::allocate(size_t size_bytes) +{ + + size_t module = size_bytes%m_element_size; + size_t element_count = size_bytes/m_element_size; + if(module>0) element_count++; + + size_t alloc_pos = allocate_from_free_nodes(element_count); + // a free node is found + if(alloc_pos != BT_UINT_MAX) + { + return get_element_data(alloc_pos); + } + // allocate directly on pool + alloc_pos = allocate_from_pool(element_count); + + if(alloc_pos == BT_UINT_MAX) return NULL; // not space + return get_element_data(alloc_pos); +} + +bool btGenericMemoryPool::freeMemory(void * pointer) +{ + unsigned char * pointer_pos = (unsigned char *)pointer; + unsigned char * pool_pos = (unsigned char *)m_pool; + // calc offset + if(pointer_pos=get_pool_capacity()) return false;// far away + + // find free position + m_free_nodes[m_free_nodes_count] = offset/m_element_size; + m_free_nodes_count++; + return true; +} + + +/// *******************! btGenericPoolAllocator *******************!/// + + +btGenericPoolAllocator::~btGenericPoolAllocator() +{ + // destroy pools + size_t i; + for (i=0;iend_pool(); + btAlignedFree(m_pools[i]); + } +} + + +// creates a pool +btGenericMemoryPool * btGenericPoolAllocator::push_new_pool() +{ + if(m_pool_count >= BT_DEFAULT_MAX_POOLS) return NULL; + + btGenericMemoryPool * newptr = (btGenericMemoryPool *)btAlignedAlloc(sizeof(btGenericMemoryPool),16); + + m_pools[m_pool_count] = newptr; + + m_pools[m_pool_count]->init_pool(m_pool_element_size,m_pool_element_count); + + m_pool_count++; + return newptr; +} + +void * btGenericPoolAllocator::failback_alloc(size_t size_bytes) +{ + + btGenericMemoryPool * pool = NULL; + + + if(size_bytes<=get_pool_capacity()) + { + pool = push_new_pool(); + } + + if(pool==NULL) // failback + { + return btAlignedAlloc(size_bytes,16); + } + + return pool->allocate(size_bytes); +} + +bool btGenericPoolAllocator::failback_free(void * pointer) +{ + btAlignedFree(pointer); + return true; +} + + +//! Allocates memory in pool +/*! +\param size_bytes size in bytes of the buffer +*/ +void * btGenericPoolAllocator::allocate(size_t size_bytes) +{ + void * ptr = NULL; + + size_t i = 0; + while(iallocate(size_bytes); + ++i; + } + + if(ptr) return ptr; + + return failback_alloc(size_bytes); +} + +bool btGenericPoolAllocator::freeMemory(void * pointer) +{ + bool result = false; + + size_t i = 0; + while(ifreeMemory(pointer); + ++i; + } + + if(result) return true; + + return failback_free(pointer); +} + +/// ************** STANDARD ALLOCATOR ***************************/// + + +#define BT_DEFAULT_POOL_SIZE 32768 +#define BT_DEFAULT_POOL_ELEMENT_SIZE 8 + +// main allocator +class GIM_STANDARD_ALLOCATOR: public btGenericPoolAllocator +{ +public: + GIM_STANDARD_ALLOCATOR():btGenericPoolAllocator(BT_DEFAULT_POOL_ELEMENT_SIZE,BT_DEFAULT_POOL_SIZE) + { + } +}; + +// global allocator +GIM_STANDARD_ALLOCATOR g_main_allocator; + + +void * btPoolAlloc(size_t size) +{ + return g_main_allocator.allocate(size); +} + +void * btPoolRealloc(void *ptr, size_t oldsize, size_t newsize) +{ + void * newptr = btPoolAlloc(newsize); + size_t copysize = oldsize +#include +#include +#include "LinearMath/btAlignedAllocator.h" + +#define BT_UINT_MAX UINT_MAX +#define BT_DEFAULT_MAX_POOLS 16 + + +//! Generic Pool class +class btGenericMemoryPool +{ +public: + unsigned char * m_pool; //[m_element_size*m_max_element_count]; + size_t * m_free_nodes; //[m_max_element_count];//! free nodes + size_t * m_allocated_sizes;//[m_max_element_count];//! Number of elements allocated per node + size_t m_allocated_count; + size_t m_free_nodes_count; +protected: + size_t m_element_size; + size_t m_max_element_count; + + size_t allocate_from_free_nodes(size_t num_elements); + size_t allocate_from_pool(size_t num_elements); + +public: + + void init_pool(size_t element_size, size_t element_count); + + void end_pool(); + + + btGenericMemoryPool(size_t element_size, size_t element_count) + { + init_pool(element_size, element_count); + } + + ~btGenericMemoryPool() + { + end_pool(); + } + + + inline size_t get_pool_capacity() + { + return m_element_size*m_max_element_count; + } + + inline size_t gem_element_size() + { + return m_element_size; + } + + inline size_t get_max_element_count() + { + return m_max_element_count; + } + + inline size_t get_allocated_count() + { + return m_allocated_count; + } + + inline size_t get_free_positions_count() + { + return m_free_nodes_count; + } + + inline void * get_element_data(size_t element_index) + { + return &m_pool[element_index*m_element_size]; + } + + //! Allocates memory in pool + /*! + \param size_bytes size in bytes of the buffer + */ + void * allocate(size_t size_bytes); + + bool freeMemory(void * pointer); +}; + + + + +//! Generic Allocator with pools +/*! +General purpose Allocator which can create Memory Pools dynamiacally as needed. +*/ +class btGenericPoolAllocator +{ +protected: + size_t m_pool_element_size; + size_t m_pool_element_count; +public: + btGenericMemoryPool * m_pools[BT_DEFAULT_MAX_POOLS]; + size_t m_pool_count; + + + inline size_t get_pool_capacity() + { + return m_pool_element_size*m_pool_element_count; + } + + +protected: + // creates a pool + btGenericMemoryPool * push_new_pool(); + + void * failback_alloc(size_t size_bytes); + + bool failback_free(void * pointer); +public: + + btGenericPoolAllocator(size_t pool_element_size, size_t pool_element_count) + { + m_pool_count = 0; + m_pool_element_size = pool_element_size; + m_pool_element_count = pool_element_count; + } + + virtual ~btGenericPoolAllocator(); + + //! Allocates memory in pool + /*! + \param size_bytes size in bytes of the buffer + */ + void * allocate(size_t size_bytes); + + bool freeMemory(void * pointer); +}; + + + +void * btPoolAlloc(size_t size); +void * btPoolRealloc(void *ptr, size_t oldsize, size_t newsize); +void btPoolFree(void *ptr); + + +#endif diff --git a/extern/bullet2/BulletCollision/Gimpact/btGeometryOperations.h b/extern/bullet2/BulletCollision/Gimpact/btGeometryOperations.h new file mode 100644 index 00000000000..bc5a416ddb7 --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/btGeometryOperations.h @@ -0,0 +1,212 @@ +#ifndef BT_BASIC_GEOMETRY_OPERATIONS_H_INCLUDED +#define BT_BASIC_GEOMETRY_OPERATIONS_H_INCLUDED + +/*! \file btGeometryOperations.h +*\author Francisco Len Nßjera + +*/ +/* +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btBoxCollision.h" + + + + + +#define PLANEDIREPSILON 0.0000001f +#define PARALELENORMALS 0.000001f + + +#define BT_CLAMP(number,minval,maxval) (numbermaxval?maxval:number)) + +/// Calc a plane from a triangle edge an a normal. plane is a vec4f +SIMD_FORCE_INLINE void bt_edge_plane(const btVector3 & e1,const btVector3 & e2, const btVector3 & normal,btVector4 & plane) +{ + btVector3 planenormal = (e2-e1).cross(normal); + planenormal.normalize(); + plane.setValue(planenormal[0],planenormal[1],planenormal[2],e2.dot(planenormal)); +} + + + +//***************** SEGMENT and LINE FUNCTIONS **********************************/// + +/*! Finds the closest point(cp) to (v) on a segment (e1,e2) + */ +SIMD_FORCE_INLINE void bt_closest_point_on_segment( + btVector3 & cp, const btVector3 & v, + const btVector3 &e1,const btVector3 &e2) +{ + btVector3 n = e2-e1; + cp = v - e1; + btScalar _scalar = cp.dot(n)/n.dot(n); + if(_scalar <0.0f) + { + cp = e1; + } + else if(_scalar >1.0f) + { + cp = e2; + } + else + { + cp = _scalar*n + e1; + } +} + + +//! line plane collision +/*! +*\return + -0 if the ray never intersects + -1 if the ray collides in front + -2 if the ray collides in back +*/ + +SIMD_FORCE_INLINE int bt_line_plane_collision( + const btVector4 & plane, + const btVector3 & vDir, + const btVector3 & vPoint, + btVector3 & pout, + btScalar &tparam, + btScalar tmin, btScalar tmax) +{ + + btScalar _dotdir = vDir.dot(plane); + + if(btFabs(_dotdir)tmax) + { + returnvalue = 0; + tparam = tmax; + } + pout = tparam*vDir + vPoint; + return returnvalue; +} + + +//! Find closest points on segments +SIMD_FORCE_INLINE void bt_segment_collision( + const btVector3 & vA1, + const btVector3 & vA2, + const btVector3 & vB1, + const btVector3 & vB2, + btVector3 & vPointA, + btVector3 & vPointB) +{ + btVector3 AD = vA2 - vA1; + btVector3 BD = vB2 - vB1; + btVector3 N = AD.cross(BD); + btScalar tp = N.length2(); + + btVector4 _M;//plane + + if(tp_M[1]) + { + invert_b_order = true; + BT_SWAP_NUMBERS(_M[0],_M[1]); + } + _M[2] = vA1.dot(AD); + _M[3] = vA2.dot(AD); + //mid points + N[0] = (_M[0]+_M[1])*0.5f; + N[1] = (_M[2]+_M[3])*0.5f; + + if(N[0]=0.0f) + { + if (_dist>m_penetration_depth) + { + m_penetration_depth = _dist; + point_indices[0] = _k; + m_point_count=1; + } + else if ((_dist+SIMD_EPSILON)>=m_penetration_depth) + { + point_indices[m_point_count] = _k; + m_point_count++; + } + } + } + + for ( _k=0;_k0.0f&&dis1>0.0f&&dis2>0.0f) return false; + + // classify points on this triangle + dis0 = bt_distance_point_plane(other.m_plane,m_vertices[0]) - total_margin; + + dis1 = bt_distance_point_plane(other.m_plane,m_vertices[1]) - total_margin; + + dis2 = bt_distance_point_plane(other.m_plane,m_vertices[2]) - total_margin; + + if (dis0>0.0f&&dis1>0.0f&&dis2>0.0f) return false; + + return true; +} + +int btPrimitiveTriangle::clip_triangle(btPrimitiveTriangle & other, btVector3 * clipped_points ) +{ + // edge 0 + + btVector3 temp_points[MAX_TRI_CLIPPING]; + + + btVector4 edgeplane; + + get_edge_plane(0,edgeplane); + + + int clipped_count = bt_plane_clip_triangle( + edgeplane,other.m_vertices[0],other.m_vertices[1],other.m_vertices[2],temp_points); + + if (clipped_count == 0) return 0; + + btVector3 temp_points1[MAX_TRI_CLIPPING]; + + + // edge 1 + get_edge_plane(1,edgeplane); + + + clipped_count = bt_plane_clip_polygon(edgeplane,temp_points,clipped_count,temp_points1); + + if (clipped_count == 0) return 0; + + // edge 2 + get_edge_plane(2,edgeplane); + + clipped_count = bt_plane_clip_polygon( + edgeplane,temp_points1,clipped_count,clipped_points); + + return clipped_count; +} + +bool btPrimitiveTriangle::find_triangle_collision_clip_method(btPrimitiveTriangle & other, GIM_TRIANGLE_CONTACT & contacts) +{ + btScalar margin = m_margin + other.m_margin; + + btVector3 clipped_points[MAX_TRI_CLIPPING]; + int clipped_count; + //create planes + // plane v vs U points + + GIM_TRIANGLE_CONTACT contacts1; + + contacts1.m_separating_normal = m_plane; + + + clipped_count = clip_triangle(other,clipped_points); + + if (clipped_count == 0 ) + { + return false;//Reject + } + + //find most deep interval face1 + contacts1.merge_points(contacts1.m_separating_normal,margin,clipped_points,clipped_count); + if (contacts1.m_point_count == 0) return false; // too far + //Normal pointing to this triangle + contacts1.m_separating_normal *= -1.f; + + + //Clip tri1 by tri2 edges + GIM_TRIANGLE_CONTACT contacts2; + contacts2.m_separating_normal = other.m_plane; + + clipped_count = other.clip_triangle(*this,clipped_points); + + if (clipped_count == 0 ) + { + return false;//Reject + } + + //find most deep interval face1 + contacts2.merge_points(contacts2.m_separating_normal,margin,clipped_points,clipped_count); + if (contacts2.m_point_count == 0) return false; // too far + + + + + ////check most dir for contacts + if (contacts2.m_penetration_depth0.0f&&dis1>0.0f&&dis2>0.0f) return false; + + // classify points on this triangle + dis0 = bt_distance_point_plane(plane1,m_vertices1[0]) - total_margin; + + dis1 = bt_distance_point_plane(plane1,m_vertices1[1]) - total_margin; + + dis2 = bt_distance_point_plane(plane1,m_vertices1[2]) - total_margin; + + if (dis0>0.0f&&dis1>0.0f&&dis2>0.0f) return false; + + return true; +} + + diff --git a/extern/bullet2/BulletCollision/Gimpact/btTriangleShapeEx.h b/extern/bullet2/BulletCollision/Gimpact/btTriangleShapeEx.h new file mode 100644 index 00000000000..bbd6b630c02 --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/btTriangleShapeEx.h @@ -0,0 +1,180 @@ +/*! \file btGImpactShape.h +\author Francisco Len Nßjera +*/ +/* +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef TRIANGLE_SHAPE_EX_H +#define TRIANGLE_SHAPE_EX_H + +#include "BulletCollision/CollisionShapes/btCollisionShape.h" +#include "BulletCollision/CollisionShapes/btTriangleShape.h" +#include "btBoxCollision.h" +#include "btClipPolygon.h" +#include "btGeometryOperations.h" + + +#define MAX_TRI_CLIPPING 16 + +//! Structure for collision +struct GIM_TRIANGLE_CONTACT +{ + btScalar m_penetration_depth; + int m_point_count; + btVector4 m_separating_normal; + btVector3 m_points[MAX_TRI_CLIPPING]; + + SIMD_FORCE_INLINE void copy_from(const GIM_TRIANGLE_CONTACT& other) + { + m_penetration_depth = other.m_penetration_depth; + m_separating_normal = other.m_separating_normal; + m_point_count = other.m_point_count; + int i = m_point_count; + while(i--) + { + m_points[i] = other.m_points[i]; + } + } + + GIM_TRIANGLE_CONTACT() + { + } + + GIM_TRIANGLE_CONTACT(const GIM_TRIANGLE_CONTACT& other) + { + copy_from(other); + } + + //! classify points that are closer + void merge_points(const btVector4 & plane, + btScalar margin, const btVector3 * points, int point_count); + +}; + + + +class btPrimitiveTriangle +{ +public: + btVector3 m_vertices[3]; + btVector4 m_plane; + btScalar m_margin; + btScalar m_dummy; + btPrimitiveTriangle():m_margin(0.01f) + { + + } + + + SIMD_FORCE_INLINE void buildTriPlane() + { + btVector3 normal = (m_vertices[1]-m_vertices[0]).cross(m_vertices[2]-m_vertices[0]); + normal.normalize(); + m_plane.setValue(normal[0],normal[1],normal[2],m_vertices[0].dot(normal)); + } + + //! Test if triangles could collide + bool overlap_test_conservative(const btPrimitiveTriangle& other); + + //! Calcs the plane which is paralele to the edge and perpendicular to the triangle plane + /*! + \pre this triangle must have its plane calculated. + */ + SIMD_FORCE_INLINE void get_edge_plane(int edge_index, btVector4 &plane) const + { + const btVector3 & e0 = m_vertices[edge_index]; + const btVector3 & e1 = m_vertices[(edge_index+1)%3]; + bt_edge_plane(e0,e1,m_plane,plane); + } + + void applyTransform(const btTransform& t) + { + m_vertices[0] = t(m_vertices[0]); + m_vertices[1] = t(m_vertices[1]); + m_vertices[2] = t(m_vertices[2]); + } + + //! Clips the triangle against this + /*! + \pre clipped_points must have MAX_TRI_CLIPPING size, and this triangle must have its plane calculated. + \return the number of clipped points + */ + int clip_triangle(btPrimitiveTriangle & other, btVector3 * clipped_points ); + + //! Find collision using the clipping method + /*! + \pre this triangle and other must have their triangles calculated + */ + bool find_triangle_collision_clip_method(btPrimitiveTriangle & other, GIM_TRIANGLE_CONTACT & contacts); +}; + + + +//! Helper class for colliding Bullet Triangle Shapes +/*! +This class implements a better getAabb method than the previous btTriangleShape class +*/ +class btTriangleShapeEx: public btTriangleShape +{ +public: + + btTriangleShapeEx():btTriangleShape(btVector3(0,0,0),btVector3(0,0,0),btVector3(0,0,0)) + { + } + + btTriangleShapeEx(const btVector3& p0,const btVector3& p1,const btVector3& p2): btTriangleShape(p0,p1,p2) + { + } + + btTriangleShapeEx(const btTriangleShapeEx & other): btTriangleShape(other.m_vertices1[0],other.m_vertices1[1],other.m_vertices1[2]) + { + } + + virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax)const + { + btVector3 tv0 = t(m_vertices1[0]); + btVector3 tv1 = t(m_vertices1[1]); + btVector3 tv2 = t(m_vertices1[2]); + + btAABB trianglebox(tv0,tv1,tv2,m_collisionMargin); + aabbMin = trianglebox.m_min; + aabbMax = trianglebox.m_max; + } + + void applyTransform(const btTransform& t) + { + m_vertices1[0] = t(m_vertices1[0]); + m_vertices1[1] = t(m_vertices1[1]); + m_vertices1[2] = t(m_vertices1[2]); + } + + SIMD_FORCE_INLINE void buildTriPlane(btVector4 & plane) const + { + btVector3 normal = (m_vertices1[1]-m_vertices1[0]).cross(m_vertices1[2]-m_vertices1[0]); + normal.normalize(); + plane.setValue(normal[0],normal[1],normal[2],m_vertices1[0].dot(normal)); + } + + bool overlap_test_conservative(const btTriangleShapeEx& other); +}; + + +#endif //TRIANGLE_MESH_SHAPE_H diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_array.h b/extern/bullet2/BulletCollision/Gimpact/gim_array.h new file mode 100644 index 00000000000..c8161d252d5 --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/gim_array.h @@ -0,0 +1,326 @@ +#ifndef GIM_ARRAY_H_INCLUDED +#define GIM_ARRAY_H_INCLUDED +/*! \file gim_array.h +\author Francisco Len Nßjera +*/ +/* +----------------------------------------------------------------------------- +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + This library is free software; you can redistribute it and/or + modify it under the terms of EITHER: + (1) The GNU Lesser General Public License as published by the Free + Software Foundation; either version 2.1 of the License, or (at + your option) any later version. The text of the GNU Lesser + General Public License is included with this library in the + file GIMPACT-LICENSE-LGPL.TXT. + (2) The BSD-style license that is included with this library in + the file GIMPACT-LICENSE-BSD.TXT. + (3) The zlib/libpng license that is included with this library in + the file GIMPACT-LICENSE-ZLIB.TXT. + + This library 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 files + GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. + +----------------------------------------------------------------------------- +*/ + +#include "gim_memory.h" + + +#define GIM_ARRAY_GROW_INCREMENT 2 +#define GIM_ARRAY_GROW_FACTOR 2 + +//! Very simple array container with fast access and simd memory +template +class gim_array +{ +public: +//! properties +//!@{ + T *m_data; + GUINT m_size; + GUINT m_allocated_size; +//!@} +//! protected operations +//!@{ + + inline void destroyData() + { + m_allocated_size = 0; + if(m_data==NULL) return; + gim_free(m_data); + m_data = NULL; + } + + inline bool resizeData(GUINT newsize) + { + if(newsize==0) + { + destroyData(); + return true; + } + + if(m_size>0) + { + m_data = (T*)gim_realloc(m_data,m_size*sizeof(T),newsize*sizeof(T)); + } + else + { + m_data = (T*)gim_alloc(newsize*sizeof(T)); + } + m_allocated_size = newsize; + return true; + } + + inline bool growingCheck() + { + if(m_allocated_size<=m_size) + { + GUINT requestsize = m_size; + m_size = m_allocated_size; + if(resizeData((requestsize+GIM_ARRAY_GROW_INCREMENT)*GIM_ARRAY_GROW_FACTOR)==false) return false; + } + return true; + } + +//!@} +//! public operations +//!@{ + inline bool reserve(GUINT size) + { + if(m_allocated_size>=size) return false; + return resizeData(size); + } + + inline void clear_range(GUINT start_range) + { + while(m_size>start_range) + { + m_data[--m_size].~T(); + } + } + + inline void clear() + { + if(m_size==0)return; + clear_range(0); + } + + inline void clear_memory() + { + clear(); + destroyData(); + } + + gim_array() + { + m_data = 0; + m_size = 0; + m_allocated_size = 0; + } + + gim_array(GUINT reservesize) + { + m_data = 0; + m_size = 0; + + m_allocated_size = 0; + reserve(reservesize); + } + + ~gim_array() + { + clear_memory(); + } + + inline GUINT size() const + { + return m_size; + } + + inline GUINT max_size() const + { + return m_allocated_size; + } + + inline T & operator[](size_t i) + { + return m_data[i]; + } + inline const T & operator[](size_t i) const + { + return m_data[i]; + } + + inline T * pointer(){ return m_data;} + inline const T * pointer() const + { return m_data;} + + + inline T * get_pointer_at(GUINT i) + { + return m_data + i; + } + + inline const T * get_pointer_at(GUINT i) const + { + return m_data + i; + } + + inline T & at(GUINT i) + { + return m_data[i]; + } + + inline const T & at(GUINT i) const + { + return m_data[i]; + } + + inline T & front() + { + return *m_data; + } + + inline const T & front() const + { + return *m_data; + } + + inline T & back() + { + return m_data[m_size-1]; + } + + inline const T & back() const + { + return m_data[m_size-1]; + } + + + inline void swap(GUINT i, GUINT j) + { + gim_swap_elements(m_data,i,j); + } + + inline void push_back(const T & obj) + { + this->growingCheck(); + m_data[m_size] = obj; + m_size++; + } + + //!Simply increase the m_size, doesn't call the new element constructor + inline void push_back_mem() + { + this->growingCheck(); + m_size++; + } + + inline void push_back_memcpy(const T & obj) + { + this->growingCheck(); + irr_simd_memcpy(&m_data[m_size],&obj,sizeof(T)); + m_size++; + } + + inline void pop_back() + { + m_size--; + m_data[m_size].~T(); + } + + //!Simply decrease the m_size, doesn't call the deleted element destructor + inline void pop_back_mem() + { + m_size--; + } + + //! fast erase + inline void erase(GUINT index) + { + if(indexgrowingCheck(); + for(GUINT i = m_size;i>index;i--) + { + gim_simd_memcpy(m_data+i,m_data+i-1,sizeof(T)); + } + m_size++; + } + + inline void insert(const T & obj,GUINT index) + { + insert_mem(index); + m_data[index] = obj; + } + + inline void resize(GUINT size, bool call_constructor = true) + { + + if(size>m_size) + { + reserve(size); + if(call_constructor) + { + T obj; + while(m_size +SIMD_FORCE_INLINE bool POINT_IN_HULL( + const CLASS_POINT& point,const CLASS_PLANE * planes,GUINT plane_count) +{ + GREAL _dis; + for (GUINT _i = 0;_i< plane_count;++_i) + { + _dis = DISTANCE_PLANE_POINT(planes[_i],point); + if(_dis>0.0f) return false; + } + return true; +} + +template +SIMD_FORCE_INLINE void PLANE_CLIP_SEGMENT( + const CLASS_POINT& s1, + const CLASS_POINT &s2,const CLASS_PLANE &plane,CLASS_POINT &clipped) +{ + GREAL _dis1,_dis2; + _dis1 = DISTANCE_PLANE_POINT(plane,s1); + VEC_DIFF(clipped,s2,s1); + _dis2 = VEC_DOT(clipped,plane); + VEC_SCALE(clipped,-_dis1/_dis2,clipped); + VEC_SUM(clipped,clipped,s1); +} + +enum ePLANE_INTERSECTION_TYPE +{ + G_BACK_PLANE = 0, + G_COLLIDE_PLANE, + G_FRONT_PLANE +}; + +enum eLINE_PLANE_INTERSECTION_TYPE +{ + G_FRONT_PLANE_S1 = 0, + G_FRONT_PLANE_S2, + G_BACK_PLANE_S1, + G_BACK_PLANE_S2, + G_COLLIDE_PLANE_S1, + G_COLLIDE_PLANE_S2 +}; + +//! Confirms if the plane intersect the edge or nor +/*! +intersection type must have the following values +
    +
  • 0 : Segment in front of plane, s1 closest +
  • 1 : Segment in front of plane, s2 closest +
  • 2 : Segment in back of plane, s1 closest +
  • 3 : Segment in back of plane, s2 closest +
  • 4 : Segment collides plane, s1 in back +
  • 5 : Segment collides plane, s2 in back +
+*/ + +template +SIMD_FORCE_INLINE eLINE_PLANE_INTERSECTION_TYPE PLANE_CLIP_SEGMENT2( + const CLASS_POINT& s1, + const CLASS_POINT &s2, + const CLASS_PLANE &plane,CLASS_POINT &clipped) +{ + GREAL _dis1 = DISTANCE_PLANE_POINT(plane,s1); + GREAL _dis2 = DISTANCE_PLANE_POINT(plane,s2); + if(_dis1 >-G_EPSILON && _dis2 >-G_EPSILON) + { + if(_dis1<_dis2) return G_FRONT_PLANE_S1; + return G_FRONT_PLANE_S2; + } + else if(_dis1 _dis2) return G_BACK_PLANE_S1; + return G_BACK_PLANE_S2; + } + + VEC_DIFF(clipped,s2,s1); + _dis2 = VEC_DOT(clipped,plane); + VEC_SCALE(clipped,-_dis1/_dis2,clipped); + VEC_SUM(clipped,clipped,s1); + if(_dis1<_dis2) return G_COLLIDE_PLANE_S1; + return G_COLLIDE_PLANE_S2; +} + +//! Confirms if the plane intersect the edge or not +/*! +clipped1 and clipped2 are the vertices behind the plane. +clipped1 is the closest + +intersection_type must have the following values +
    +
  • 0 : Segment in front of plane, s1 closest +
  • 1 : Segment in front of plane, s2 closest +
  • 2 : Segment in back of plane, s1 closest +
  • 3 : Segment in back of plane, s2 closest +
  • 4 : Segment collides plane, s1 in back +
  • 5 : Segment collides plane, s2 in back +
+*/ +template +SIMD_FORCE_INLINE eLINE_PLANE_INTERSECTION_TYPE PLANE_CLIP_SEGMENT_CLOSEST( + const CLASS_POINT& s1, + const CLASS_POINT &s2, + const CLASS_PLANE &plane, + CLASS_POINT &clipped1,CLASS_POINT &clipped2) +{ + eLINE_PLANE_INTERSECTION_TYPE intersection_type = PLANE_CLIP_SEGMENT2(s1,s2,plane,clipped1); + switch(intersection_type) + { + case G_FRONT_PLANE_S1: + VEC_COPY(clipped1,s1); + VEC_COPY(clipped2,s2); + break; + case G_FRONT_PLANE_S2: + VEC_COPY(clipped1,s2); + VEC_COPY(clipped2,s1); + break; + case G_BACK_PLANE_S1: + VEC_COPY(clipped1,s1); + VEC_COPY(clipped2,s2); + break; + case G_BACK_PLANE_S2: + VEC_COPY(clipped1,s2); + VEC_COPY(clipped2,s1); + break; + case G_COLLIDE_PLANE_S1: + VEC_COPY(clipped2,s1); + break; + case G_COLLIDE_PLANE_S2: + VEC_COPY(clipped2,s2); + break; + } + return intersection_type; +} + + +//! Finds the 2 smallest cartesian coordinates of a plane normal +#define PLANE_MINOR_AXES(plane, i0, i1) VEC_MINOR_AXES(plane, i0, i1) + +//! Ray plane collision in one way +/*! +Intersects plane in one way only. The ray must face the plane (normals must be in opossite directions).
+It uses the PLANEDIREPSILON constant. +*/ +template +SIMD_FORCE_INLINE bool RAY_PLANE_COLLISION( + const CLASS_PLANE & plane, + const CLASS_POINT & vDir, + const CLASS_POINT & vPoint, + CLASS_POINT & pout,T &tparam) +{ + GREAL _dis,_dotdir; + _dotdir = VEC_DOT(plane,vDir); + if(_dotdir +SIMD_FORCE_INLINE GUINT LINE_PLANE_COLLISION( + const CLASS_PLANE & plane, + const CLASS_POINT & vDir, + const CLASS_POINT & vPoint, + CLASS_POINT & pout, + T &tparam, + T tmin, T tmax) +{ + GREAL _dis,_dotdir; + _dotdir = VEC_DOT(plane,vDir); + if(btFabs(_dotdir)tmax) + { + returnvalue = 0; + tparam = tmax; + } + + VEC_SCALE(pout,tparam,vDir); + VEC_SUM(pout,vPoint,pout); + return returnvalue; +} + +/*! \brief Returns the Ray on which 2 planes intersect if they do. + Written by Rodrigo Hernandez on ODE convex collision + + \param p1 Plane 1 + \param p2 Plane 2 + \param p Contains the origin of the ray upon returning if planes intersect + \param d Contains the direction of the ray upon returning if planes intersect + \return true if the planes intersect, 0 if paralell. + +*/ +template +SIMD_FORCE_INLINE bool INTERSECT_PLANES( + const CLASS_PLANE &p1, + const CLASS_PLANE &p2, + CLASS_POINT &p, + CLASS_POINT &d) +{ + VEC_CROSS(d,p1,p2); + GREAL denom = VEC_DOT(d, d); + if(GIM_IS_ZERO(denom)) return false; + vec3f _n; + _n[0]=p1[3]*p2[0] - p2[3]*p1[0]; + _n[1]=p1[3]*p2[1] - p2[3]*p1[1]; + _n[2]=p1[3]*p2[2] - p2[3]*p1[2]; + VEC_CROSS(p,_n,d); + p[0]/=denom; + p[1]/=denom; + p[2]/=denom; + return true; +} + +//***************** SEGMENT and LINE FUNCTIONS **********************************/// + +/*! Finds the closest point(cp) to (v) on a segment (e1,e2) + */ +template +SIMD_FORCE_INLINE void CLOSEST_POINT_ON_SEGMENT( + CLASS_POINT & cp, const CLASS_POINT & v, + const CLASS_POINT &e1,const CLASS_POINT &e2) +{ + vec3f _n; + VEC_DIFF(_n,e2,e1); + VEC_DIFF(cp,v,e1); + GREAL _scalar = VEC_DOT(cp, _n); + _scalar/= VEC_DOT(_n, _n); + if(_scalar <0.0f) + { + VEC_COPY(cp,e1); + } + else if(_scalar >1.0f) + { + VEC_COPY(cp,e2); + } + else + { + VEC_SCALE(cp,_scalar,_n); + VEC_SUM(cp,cp,e1); + } +} + + +/*! \brief Finds the line params where these lines intersect. + +\param dir1 Direction of line 1 +\param point1 Point of line 1 +\param dir2 Direction of line 2 +\param point2 Point of line 2 +\param t1 Result Parameter for line 1 +\param t2 Result Parameter for line 2 +\param dointersect 0 if the lines won't intersect, else 1 + +*/ +template +SIMD_FORCE_INLINE bool LINE_INTERSECTION_PARAMS( + const CLASS_POINT & dir1, + CLASS_POINT & point1, + const CLASS_POINT & dir2, + CLASS_POINT & point2, + T& t1,T& t2) +{ + GREAL det; + GREAL e1e1 = VEC_DOT(dir1,dir1); + GREAL e1e2 = VEC_DOT(dir1,dir2); + GREAL e2e2 = VEC_DOT(dir2,dir2); + vec3f p1p2; + VEC_DIFF(p1p2,point1,point2); + GREAL p1p2e1 = VEC_DOT(p1p2,dir1); + GREAL p1p2e2 = VEC_DOT(p1p2,dir2); + det = e1e2*e1e2 - e1e1*e2e2; + if(GIM_IS_ZERO(det)) return false; + t1 = (e1e2*p1p2e2 - e2e2*p1p2e1)/det; + t2 = (e1e1*p1p2e2 - e1e2*p1p2e1)/det; + return true; +} + +//! Find closest points on segments +template +SIMD_FORCE_INLINE void SEGMENT_COLLISION( + const CLASS_POINT & vA1, + const CLASS_POINT & vA2, + const CLASS_POINT & vB1, + const CLASS_POINT & vB2, + CLASS_POINT & vPointA, + CLASS_POINT & vPointB) +{ + CLASS_POINT _AD,_BD,_N; + vec4f _M;//plane + VEC_DIFF(_AD,vA2,vA1); + VEC_DIFF(_BD,vB2,vB1); + VEC_CROSS(_N,_AD,_BD); + GREAL _tp = VEC_DOT(_N,_N); + if(_tp_M[1]) + { + invert_b_order = true; + GIM_SWAP_NUMBERS(_M[0],_M[1]); + } + _M[2] = VEC_DOT(vA1,_AD); + _M[3] = VEC_DOT(vA2,_AD); + //mid points + _N[0] = (_M[0]+_M[1])*0.5f; + _N[1] = (_M[2]+_M[3])*0.5f; + + if(_N[0]<_N[1]) + { + if(_M[1]<_M[2]) + { + vPointB = invert_b_order?vB1:vB2; + vPointA = vA1; + } + else if(_M[1]<_M[3]) + { + vPointB = invert_b_order?vB1:vB2; + CLOSEST_POINT_ON_SEGMENT(vPointA,vPointB,vA1,vA2); + } + else + { + vPointA = vA2; + CLOSEST_POINT_ON_SEGMENT(vPointB,vPointA,vB1,vB2); + } + } + else + { + if(_M[3]<_M[0]) + { + vPointB = invert_b_order?vB2:vB1; + vPointA = vA2; + } + else if(_M[3]<_M[1]) + { + vPointA = vA2; + CLOSEST_POINT_ON_SEGMENT(vPointB,vPointA,vB1,vB2); + } + else + { + vPointB = invert_b_order?vB1:vB2; + CLOSEST_POINT_ON_SEGMENT(vPointA,vPointB,vA1,vA2); + } + } + return; + } + + + VEC_CROSS(_M,_N,_BD); + _M[3] = VEC_DOT(_M,vB1); + + LINE_PLANE_COLLISION(_M,_AD,vA1,vPointA,_tp,btScalar(0), btScalar(1)); + /*Closest point on segment*/ + VEC_DIFF(vPointB,vPointA,vB1); + _tp = VEC_DOT(vPointB, _BD); + _tp/= VEC_DOT(_BD, _BD); + _tp = GIM_CLAMP(_tp,0.0f,1.0f); + VEC_SCALE(vPointB,_tp,_BD); + VEC_SUM(vPointB,vPointB,vB1); +} + + + + +//! Line box intersection in one dimension +/*! + +*\param pos Position of the ray +*\param dir Projection of the Direction of the ray +*\param bmin Minimum bound of the box +*\param bmax Maximum bound of the box +*\param tfirst the minimum projection. Assign to 0 at first. +*\param tlast the maximum projection. Assign to INFINITY at first. +*\return true if there is an intersection. +*/ +template +SIMD_FORCE_INLINE bool BOX_AXIS_INTERSECT(T pos, T dir,T bmin, T bmax, T & tfirst, T & tlast) +{ + if(GIM_IS_ZERO(dir)) + { + return !(pos < bmin || pos > bmax); + } + GREAL a0 = (bmin - pos) / dir; + GREAL a1 = (bmax - pos) / dir; + if(a0 > a1) GIM_SWAP_NUMBERS(a0, a1); + tfirst = GIM_MAX(a0, tfirst); + tlast = GIM_MIN(a1, tlast); + if (tlast < tfirst) return false; + return true; +} + + +//! Sorts 3 componets +template +SIMD_FORCE_INLINE void SORT_3_INDICES( + const T * values, + GUINT * order_indices) +{ + //get minimum + order_indices[0] = values[0] < values[1] ? (values[0] < values[2] ? 0 : 2) : (values[1] < values[2] ? 1 : 2); + + //get second and third + GUINT i0 = (order_indices[0] + 1)%3; + GUINT i1 = (i0 + 1)%3; + + if(values[i0] < values[i1]) + { + order_indices[1] = i0; + order_indices[2] = i1; + } + else + { + order_indices[1] = i1; + order_indices[2] = i0; + } +} + + + + + +#endif // GIM_VECTOR_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_bitset.h b/extern/bullet2/BulletCollision/Gimpact/gim_bitset.h new file mode 100644 index 00000000000..322004a8d5b --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/gim_bitset.h @@ -0,0 +1,123 @@ +#ifndef GIM_BITSET_H_INCLUDED +#define GIM_BITSET_H_INCLUDED +/*! \file gim_bitset.h +\author Francisco Len Nßjera +*/ +/* +----------------------------------------------------------------------------- +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + This library is free software; you can redistribute it and/or + modify it under the terms of EITHER: + (1) The GNU Lesser General Public License as published by the Free + Software Foundation; either version 2.1 of the License, or (at + your option) any later version. The text of the GNU Lesser + General Public License is included with this library in the + file GIMPACT-LICENSE-LGPL.TXT. + (2) The BSD-style license that is included with this library in + the file GIMPACT-LICENSE-BSD.TXT. + (3) The zlib/libpng license that is included with this library in + the file GIMPACT-LICENSE-ZLIB.TXT. + + This library 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 files + GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. + +----------------------------------------------------------------------------- +*/ + +#include "gim_array.h" + + +#define GUINT_BIT_COUNT 32 +#define GUINT_EXPONENT 5 + +class gim_bitset +{ +public: + gim_array m_container; + + gim_bitset() + { + + } + + gim_bitset(GUINT bits_count) + { + resize(bits_count); + } + + ~gim_bitset() + { + } + + inline bool resize(GUINT newsize) + { + GUINT oldsize = m_container.size(); + m_container.resize(newsize/GUINT_BIT_COUNT + 1,false); + while(oldsize=size()) + { + resize(bit_index); + } + m_container[bit_index >> GUINT_EXPONENT] |= (1 << (bit_index & (GUINT_BIT_COUNT-1))); + } + + ///Return 0 or 1 + inline char get(GUINT bit_index) + { + if(bit_index>=size()) + { + return 0; + } + char value = m_container[bit_index >> GUINT_EXPONENT] & + (1 << (bit_index & (GUINT_BIT_COUNT-1))); + return value; + } + + inline void clear(GUINT bit_index) + { + m_container[bit_index >> GUINT_EXPONENT] &= ~(1 << (bit_index & (GUINT_BIT_COUNT-1))); + } +}; + + + + + +#endif // GIM_CONTAINERS_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_box_collision.h b/extern/bullet2/BulletCollision/Gimpact/gim_box_collision.h new file mode 100644 index 00000000000..0add5e4b99f --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/gim_box_collision.h @@ -0,0 +1,590 @@ +#ifndef GIM_BOX_COLLISION_H_INCLUDED +#define GIM_BOX_COLLISION_H_INCLUDED + +/*! \file gim_box_collision.h +\author Francisco Len Nßjera +*/ +/* +----------------------------------------------------------------------------- +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + This library is free software; you can redistribute it and/or + modify it under the terms of EITHER: + (1) The GNU Lesser General Public License as published by the Free + Software Foundation; either version 2.1 of the License, or (at + your option) any later version. The text of the GNU Lesser + General Public License is included with this library in the + file GIMPACT-LICENSE-LGPL.TXT. + (2) The BSD-style license that is included with this library in + the file GIMPACT-LICENSE-BSD.TXT. + (3) The zlib/libpng license that is included with this library in + the file GIMPACT-LICENSE-ZLIB.TXT. + + This library 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 files + GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. + +----------------------------------------------------------------------------- +*/ +#include "gim_basic_geometry_operations.h" +#include "LinearMath/btTransform.h" + + + +//SIMD_FORCE_INLINE bool test_cross_edge_box( +// const btVector3 & edge, +// const btVector3 & absolute_edge, +// const btVector3 & pointa, +// const btVector3 & pointb, const btVector3 & extend, +// int dir_index0, +// int dir_index1 +// int component_index0, +// int component_index1) +//{ +// // dir coords are -z and y +// +// const btScalar dir0 = -edge[dir_index0]; +// const btScalar dir1 = edge[dir_index1]; +// btScalar pmin = pointa[component_index0]*dir0 + pointa[component_index1]*dir1; +// btScalar pmax = pointb[component_index0]*dir0 + pointb[component_index1]*dir1; +// //find minmax +// if(pmin>pmax) +// { +// GIM_SWAP_NUMBERS(pmin,pmax); +// } +// //find extends +// const btScalar rad = extend[component_index0] * absolute_edge[dir_index0] + +// extend[component_index1] * absolute_edge[dir_index1]; +// +// if(pmin>rad || -rad>pmax) return false; +// return true; +//} +// +//SIMD_FORCE_INLINE bool test_cross_edge_box_X_axis( +// const btVector3 & edge, +// const btVector3 & absolute_edge, +// const btVector3 & pointa, +// const btVector3 & pointb, btVector3 & extend) +//{ +// +// return test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,2,1,1,2); +//} +// +// +//SIMD_FORCE_INLINE bool test_cross_edge_box_Y_axis( +// const btVector3 & edge, +// const btVector3 & absolute_edge, +// const btVector3 & pointa, +// const btVector3 & pointb, btVector3 & extend) +//{ +// +// return test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,0,2,2,0); +//} +// +//SIMD_FORCE_INLINE bool test_cross_edge_box_Z_axis( +// const btVector3 & edge, +// const btVector3 & absolute_edge, +// const btVector3 & pointa, +// const btVector3 & pointb, btVector3 & extend) +//{ +// +// return test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,1,0,0,1); +//} + +#define TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,i_dir_0,i_dir_1,i_comp_0,i_comp_1)\ +{\ + const btScalar dir0 = -edge[i_dir_0];\ + const btScalar dir1 = edge[i_dir_1];\ + btScalar pmin = pointa[i_comp_0]*dir0 + pointa[i_comp_1]*dir1;\ + btScalar pmax = pointb[i_comp_0]*dir0 + pointb[i_comp_1]*dir1;\ + if(pmin>pmax)\ + {\ + GIM_SWAP_NUMBERS(pmin,pmax); \ + }\ + const btScalar abs_dir0 = absolute_edge[i_dir_0];\ + const btScalar abs_dir1 = absolute_edge[i_dir_1];\ + const btScalar rad = _extend[i_comp_0] * abs_dir0 + _extend[i_comp_1] * abs_dir1;\ + if(pmin>rad || -rad>pmax) return false;\ +}\ + + +#define TEST_CROSS_EDGE_BOX_X_AXIS_MCR(edge,absolute_edge,pointa,pointb,_extend)\ +{\ + TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,2,1,1,2);\ +}\ + +#define TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(edge,absolute_edge,pointa,pointb,_extend)\ +{\ + TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,0,2,2,0);\ +}\ + +#define TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(edge,absolute_edge,pointa,pointb,_extend)\ +{\ + TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,1,0,0,1);\ +}\ + + + +//! Class for transforming a model1 to the space of model0 +class GIM_BOX_BOX_TRANSFORM_CACHE +{ +public: + btVector3 m_T1to0;//!< Transforms translation of model1 to model 0 + btMatrix3x3 m_R1to0;//!< Transforms Rotation of model1 to model 0, equal to R0' * R1 + btMatrix3x3 m_AR;//!< Absolute value of m_R1to0 + + SIMD_FORCE_INLINE void calc_absolute_matrix() + { + static const btVector3 vepsi(1e-6f,1e-6f,1e-6f); + m_AR[0] = vepsi + m_R1to0[0].absolute(); + m_AR[1] = vepsi + m_R1to0[1].absolute(); + m_AR[2] = vepsi + m_R1to0[2].absolute(); + } + + GIM_BOX_BOX_TRANSFORM_CACHE() + { + } + + + GIM_BOX_BOX_TRANSFORM_CACHE(mat4f trans1_to_0) + { + COPY_MATRIX_3X3(m_R1to0,trans1_to_0) + MAT_GET_TRANSLATION(trans1_to_0,m_T1to0) + calc_absolute_matrix(); + } + + //! Calc the transformation relative 1 to 0. Inverts matrics by transposing + SIMD_FORCE_INLINE void calc_from_homogenic(const btTransform & trans0,const btTransform & trans1) + { + + m_R1to0 = trans0.getBasis().transpose(); + m_T1to0 = m_R1to0 * (-trans0.getOrigin()); + + m_T1to0 += m_R1to0*trans1.getOrigin(); + m_R1to0 *= trans1.getBasis(); + + calc_absolute_matrix(); + } + + //! Calcs the full invertion of the matrices. Useful for scaling matrices + SIMD_FORCE_INLINE void calc_from_full_invert(const btTransform & trans0,const btTransform & trans1) + { + m_R1to0 = trans0.getBasis().inverse(); + m_T1to0 = m_R1to0 * (-trans0.getOrigin()); + + m_T1to0 += m_R1to0*trans1.getOrigin(); + m_R1to0 *= trans1.getBasis(); + + calc_absolute_matrix(); + } + + SIMD_FORCE_INLINE btVector3 transform(const btVector3 & point) + { + return btVector3(m_R1to0[0].dot(point) + m_T1to0.x(), + m_R1to0[1].dot(point) + m_T1to0.y(), + m_R1to0[2].dot(point) + m_T1to0.z()); + } +}; + + +#define BOX_PLANE_EPSILON 0.000001f + +//! Axis aligned box +class GIM_AABB +{ +public: + btVector3 m_min; + btVector3 m_max; + + GIM_AABB() + {} + + + GIM_AABB(const btVector3 & V1, + const btVector3 & V2, + const btVector3 & V3) + { + m_min[0] = GIM_MIN3(V1[0],V2[0],V3[0]); + m_min[1] = GIM_MIN3(V1[1],V2[1],V3[1]); + m_min[2] = GIM_MIN3(V1[2],V2[2],V3[2]); + + m_max[0] = GIM_MAX3(V1[0],V2[0],V3[0]); + m_max[1] = GIM_MAX3(V1[1],V2[1],V3[1]); + m_max[2] = GIM_MAX3(V1[2],V2[2],V3[2]); + } + + GIM_AABB(const btVector3 & V1, + const btVector3 & V2, + const btVector3 & V3, + GREAL margin) + { + m_min[0] = GIM_MIN3(V1[0],V2[0],V3[0]); + m_min[1] = GIM_MIN3(V1[1],V2[1],V3[1]); + m_min[2] = GIM_MIN3(V1[2],V2[2],V3[2]); + + m_max[0] = GIM_MAX3(V1[0],V2[0],V3[0]); + m_max[1] = GIM_MAX3(V1[1],V2[1],V3[1]); + m_max[2] = GIM_MAX3(V1[2],V2[2],V3[2]); + + m_min[0] -= margin; + m_min[1] -= margin; + m_min[2] -= margin; + m_max[0] += margin; + m_max[1] += margin; + m_max[2] += margin; + } + + GIM_AABB(const GIM_AABB &other): + m_min(other.m_min),m_max(other.m_max) + { + } + + GIM_AABB(const GIM_AABB &other,btScalar margin ): + m_min(other.m_min),m_max(other.m_max) + { + m_min[0] -= margin; + m_min[1] -= margin; + m_min[2] -= margin; + m_max[0] += margin; + m_max[1] += margin; + m_max[2] += margin; + } + + SIMD_FORCE_INLINE void invalidate() + { + m_min[0] = G_REAL_INFINITY; + m_min[1] = G_REAL_INFINITY; + m_min[2] = G_REAL_INFINITY; + m_max[0] = -G_REAL_INFINITY; + m_max[1] = -G_REAL_INFINITY; + m_max[2] = -G_REAL_INFINITY; + } + + SIMD_FORCE_INLINE void increment_margin(btScalar margin) + { + m_min[0] -= margin; + m_min[1] -= margin; + m_min[2] -= margin; + m_max[0] += margin; + m_max[1] += margin; + m_max[2] += margin; + } + + SIMD_FORCE_INLINE void copy_with_margin(const GIM_AABB &other, btScalar margin) + { + m_min[0] = other.m_min[0] - margin; + m_min[1] = other.m_min[1] - margin; + m_min[2] = other.m_min[2] - margin; + + m_max[0] = other.m_max[0] + margin; + m_max[1] = other.m_max[1] + margin; + m_max[2] = other.m_max[2] + margin; + } + + template + SIMD_FORCE_INLINE void calc_from_triangle( + const CLASS_POINT & V1, + const CLASS_POINT & V2, + const CLASS_POINT & V3) + { + m_min[0] = GIM_MIN3(V1[0],V2[0],V3[0]); + m_min[1] = GIM_MIN3(V1[1],V2[1],V3[1]); + m_min[2] = GIM_MIN3(V1[2],V2[2],V3[2]); + + m_max[0] = GIM_MAX3(V1[0],V2[0],V3[0]); + m_max[1] = GIM_MAX3(V1[1],V2[1],V3[1]); + m_max[2] = GIM_MAX3(V1[2],V2[2],V3[2]); + } + + template + SIMD_FORCE_INLINE void calc_from_triangle_margin( + const CLASS_POINT & V1, + const CLASS_POINT & V2, + const CLASS_POINT & V3, btScalar margin) + { + m_min[0] = GIM_MIN3(V1[0],V2[0],V3[0]); + m_min[1] = GIM_MIN3(V1[1],V2[1],V3[1]); + m_min[2] = GIM_MIN3(V1[2],V2[2],V3[2]); + + m_max[0] = GIM_MAX3(V1[0],V2[0],V3[0]); + m_max[1] = GIM_MAX3(V1[1],V2[1],V3[1]); + m_max[2] = GIM_MAX3(V1[2],V2[2],V3[2]); + + m_min[0] -= margin; + m_min[1] -= margin; + m_min[2] -= margin; + m_max[0] += margin; + m_max[1] += margin; + m_max[2] += margin; + } + + //! Apply a transform to an AABB + SIMD_FORCE_INLINE void appy_transform(const btTransform & trans) + { + btVector3 center = (m_max+m_min)*0.5f; + btVector3 extends = m_max - center; + // Compute new center + center = trans(center); + + btVector3 textends(extends.dot(trans.getBasis().getRow(0).absolute()), + extends.dot(trans.getBasis().getRow(1).absolute()), + extends.dot(trans.getBasis().getRow(2).absolute())); + + m_min = center - textends; + m_max = center + textends; + } + + //! Merges a Box + SIMD_FORCE_INLINE void merge(const GIM_AABB & box) + { + m_min[0] = GIM_MIN(m_min[0],box.m_min[0]); + m_min[1] = GIM_MIN(m_min[1],box.m_min[1]); + m_min[2] = GIM_MIN(m_min[2],box.m_min[2]); + + m_max[0] = GIM_MAX(m_max[0],box.m_max[0]); + m_max[1] = GIM_MAX(m_max[1],box.m_max[1]); + m_max[2] = GIM_MAX(m_max[2],box.m_max[2]); + } + + //! Merges a point + template + SIMD_FORCE_INLINE void merge_point(const CLASS_POINT & point) + { + m_min[0] = GIM_MIN(m_min[0],point[0]); + m_min[1] = GIM_MIN(m_min[1],point[1]); + m_min[2] = GIM_MIN(m_min[2],point[2]); + + m_max[0] = GIM_MAX(m_max[0],point[0]); + m_max[1] = GIM_MAX(m_max[1],point[1]); + m_max[2] = GIM_MAX(m_max[2],point[2]); + } + + //! Gets the extend and center + SIMD_FORCE_INLINE void get_center_extend(btVector3 & center,btVector3 & extend) const + { + center = (m_max+m_min)*0.5f; + extend = m_max - center; + } + + //! Finds the intersecting box between this box and the other. + SIMD_FORCE_INLINE void find_intersection(const GIM_AABB & other, GIM_AABB & intersection) const + { + intersection.m_min[0] = GIM_MAX(other.m_min[0],m_min[0]); + intersection.m_min[1] = GIM_MAX(other.m_min[1],m_min[1]); + intersection.m_min[2] = GIM_MAX(other.m_min[2],m_min[2]); + + intersection.m_max[0] = GIM_MIN(other.m_max[0],m_max[0]); + intersection.m_max[1] = GIM_MIN(other.m_max[1],m_max[1]); + intersection.m_max[2] = GIM_MIN(other.m_max[2],m_max[2]); + } + + + SIMD_FORCE_INLINE bool has_collision(const GIM_AABB & other) const + { + if(m_min[0] > other.m_max[0] || + m_max[0] < other.m_min[0] || + m_min[1] > other.m_max[1] || + m_max[1] < other.m_min[1] || + m_min[2] > other.m_max[2] || + m_max[2] < other.m_min[2]) + { + return false; + } + return true; + } + + /*! \brief Finds the Ray intersection parameter. + \param aabb Aligned box + \param vorigin A vec3f with the origin of the ray + \param vdir A vec3f with the direction of the ray + */ + SIMD_FORCE_INLINE bool collide_ray(const btVector3 & vorigin,const btVector3 & vdir) + { + btVector3 extents,center; + this->get_center_extend(center,extents);; + + btScalar Dx = vorigin[0] - center[0]; + if(GIM_GREATER(Dx, extents[0]) && Dx*vdir[0]>=0.0f) return false; + btScalar Dy = vorigin[1] - center[1]; + if(GIM_GREATER(Dy, extents[1]) && Dy*vdir[1]>=0.0f) return false; + btScalar Dz = vorigin[2] - center[2]; + if(GIM_GREATER(Dz, extents[2]) && Dz*vdir[2]>=0.0f) return false; + + + btScalar f = vdir[1] * Dz - vdir[2] * Dy; + if(btFabs(f) > extents[1]*btFabs(vdir[2]) + extents[2]*btFabs(vdir[1])) return false; + f = vdir[2] * Dx - vdir[0] * Dz; + if(btFabs(f) > extents[0]*btFabs(vdir[2]) + extents[2]*btFabs(vdir[0]))return false; + f = vdir[0] * Dy - vdir[1] * Dx; + if(btFabs(f) > extents[0]*btFabs(vdir[1]) + extents[1]*btFabs(vdir[0]))return false; + return true; + } + + + SIMD_FORCE_INLINE void projection_interval(const btVector3 & direction, btScalar &vmin, btScalar &vmax) const + { + btVector3 center = (m_max+m_min)*0.5f; + btVector3 extend = m_max-center; + + btScalar _fOrigin = direction.dot(center); + btScalar _fMaximumExtent = extend.dot(direction.absolute()); + vmin = _fOrigin - _fMaximumExtent; + vmax = _fOrigin + _fMaximumExtent; + } + + SIMD_FORCE_INLINE ePLANE_INTERSECTION_TYPE plane_classify(const btVector4 &plane) const + { + btScalar _fmin,_fmax; + this->projection_interval(plane,_fmin,_fmax); + + if(plane[3] > _fmax + BOX_PLANE_EPSILON) + { + return G_BACK_PLANE; // 0 + } + + if(plane[3]+BOX_PLANE_EPSILON >=_fmin) + { + return G_COLLIDE_PLANE; //1 + } + return G_FRONT_PLANE;//2 + } + + SIMD_FORCE_INLINE bool overlapping_trans_conservative(const GIM_AABB & box, btTransform & trans1_to_0) + { + GIM_AABB tbox = box; + tbox.appy_transform(trans1_to_0); + return has_collision(tbox); + } + + //! transcache is the transformation cache from box to this AABB + SIMD_FORCE_INLINE bool overlapping_trans_cache( + const GIM_AABB & box,const GIM_BOX_BOX_TRANSFORM_CACHE & transcache, bool fulltest) + { + + //Taken from OPCODE + btVector3 ea,eb;//extends + btVector3 ca,cb;//extends + get_center_extend(ca,ea); + box.get_center_extend(cb,eb); + + + btVector3 T; + btScalar t,t2; + int i; + + // Class I : A's basis vectors + for(i=0;i<3;i++) + { + T[i] = transcache.m_R1to0[i].dot(cb) + transcache.m_T1to0[i] - ca[i]; + t = transcache.m_AR[i].dot(eb) + ea[i]; + if(GIM_GREATER(T[i], t)) return false; + } + // Class II : B's basis vectors + for(i=0;i<3;i++) + { + t = MAT_DOT_COL(transcache.m_R1to0,T,i); + t2 = MAT_DOT_COL(transcache.m_AR,ea,i) + eb[i]; + if(GIM_GREATER(t,t2)) return false; + } + // Class III : 9 cross products + if(fulltest) + { + int j,m,n,o,p,q,r; + for(i=0;i<3;i++) + { + m = (i+1)%3; + n = (i+2)%3; + o = i==0?1:0; + p = i==2?1:2; + for(j=0;j<3;j++) + { + q = j==2?1:2; + r = j==0?1:0; + t = T[n]*transcache.m_R1to0[m][j] - T[m]*transcache.m_R1to0[n][j]; + t2 = ea[o]*transcache.m_AR[p][j] + ea[p]*transcache.m_AR[o][j] + + eb[r]*transcache.m_AR[i][q] + eb[q]*transcache.m_AR[i][r]; + if(GIM_GREATER(t,t2)) return false; + } + } + } + return true; + } + + //! Simple test for planes. + SIMD_FORCE_INLINE bool collide_plane( + const btVector4 & plane) + { + ePLANE_INTERSECTION_TYPE classify = plane_classify(plane); + return (classify == G_COLLIDE_PLANE); + } + + //! test for a triangle, with edges + SIMD_FORCE_INLINE bool collide_triangle_exact( + const btVector3 & p1, + const btVector3 & p2, + const btVector3 & p3, + const btVector4 & triangle_plane) + { + if(!collide_plane(triangle_plane)) return false; + + btVector3 center,extends; + this->get_center_extend(center,extends); + + const btVector3 v1(p1 - center); + const btVector3 v2(p2 - center); + const btVector3 v3(p3 - center); + + //First axis + btVector3 diff(v2 - v1); + btVector3 abs_diff = diff.absolute(); + //Test With X axis + TEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff,abs_diff,v1,v3,extends); + //Test With Y axis + TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff,abs_diff,v1,v3,extends); + //Test With Z axis + TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff,abs_diff,v1,v3,extends); + + + diff = v3 - v2; + abs_diff = diff.absolute(); + //Test With X axis + TEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff,abs_diff,v2,v1,extends); + //Test With Y axis + TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff,abs_diff,v2,v1,extends); + //Test With Z axis + TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff,abs_diff,v2,v1,extends); + + diff = v1 - v3; + abs_diff = diff.absolute(); + //Test With X axis + TEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff,abs_diff,v3,v2,extends); + //Test With Y axis + TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff,abs_diff,v3,v2,extends); + //Test With Z axis + TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff,abs_diff,v3,v2,extends); + + return true; + } +}; + + +//! Compairison of transformation objects +SIMD_FORCE_INLINE bool btCompareTransformsEqual(const btTransform & t1,const btTransform & t2) +{ + if(!(t1.getOrigin() == t2.getOrigin()) ) return false; + + if(!(t1.getBasis().getRow(0) == t2.getBasis().getRow(0)) ) return false; + if(!(t1.getBasis().getRow(1) == t2.getBasis().getRow(1)) ) return false; + if(!(t1.getBasis().getRow(2) == t2.getBasis().getRow(2)) ) return false; + return true; +} + + + +#endif // GIM_BOX_COLLISION_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_box_set.cpp b/extern/bullet2/BulletCollision/Gimpact/gim_box_set.cpp new file mode 100644 index 00000000000..0c3d7ba8db0 --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/gim_box_set.cpp @@ -0,0 +1,182 @@ + +/* +----------------------------------------------------------------------------- +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + This library is free software; you can redistribute it and/or + modify it under the terms of EITHER: + (1) The GNU Lesser General Public License as published by the Free + Software Foundation; either version 2.1 of the License, or (at + your option) any later version. The text of the GNU Lesser + General Public License is included with this library in the + file GIMPACT-LICENSE-LGPL.TXT. + (2) The BSD-style license that is included with this library in + the file GIMPACT-LICENSE-BSD.TXT. + (3) The zlib/libpng license that is included with this library in + the file GIMPACT-LICENSE-ZLIB.TXT. + + This library 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 files + GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. + +----------------------------------------------------------------------------- +*/ + + +#include "gim_box_set.h" + + +GUINT GIM_BOX_TREE::_calc_splitting_axis( + gim_array & primitive_boxes, GUINT startIndex, GUINT endIndex) +{ + GUINT i; + + btVector3 means(btScalar(0.),btScalar(0.),btScalar(0.)); + btVector3 variance(btScalar(0.),btScalar(0.),btScalar(0.)); + GUINT numIndices = endIndex-startIndex; + + for (i=startIndex;i & primitive_boxes, GUINT startIndex, + GUINT endIndex, GUINT splitAxis) +{ + GUINT i; + GUINT splitIndex =startIndex; + GUINT numIndices = endIndex - startIndex; + + // average of centers + btScalar splitValue = 0.0f; + for (i=startIndex;i splitValue) + { + //swap + primitive_boxes.swap(i,splitIndex); + splitIndex++; + } + } + + //if the splitIndex causes unbalanced trees, fix this by using the center in between startIndex and endIndex + //otherwise the tree-building might fail due to stack-overflows in certain cases. + //unbalanced1 is unsafe: it can cause stack overflows + //bool unbalanced1 = ((splitIndex==startIndex) || (splitIndex == (endIndex-1))); + + //unbalanced2 should work too: always use center (perfect balanced trees) + //bool unbalanced2 = true; + + //this should be safe too: + GUINT rangeBalancedIndices = numIndices/3; + bool unbalanced = ((splitIndex<=(startIndex+rangeBalancedIndices)) || (splitIndex >=(endIndex-1-rangeBalancedIndices))); + + if (unbalanced) + { + splitIndex = startIndex+ (numIndices>>1); + } + + btAssert(!((splitIndex==startIndex) || (splitIndex == (endIndex)))); + + return splitIndex; +} + + +void GIM_BOX_TREE::_build_sub_tree(gim_array & primitive_boxes, GUINT startIndex, GUINT endIndex) +{ + GUINT current_index = m_num_nodes++; + + btAssert((endIndex-startIndex)>0); + + if((endIndex-startIndex) == 1) //we got a leaf + { + m_node_array[current_index].m_left = 0; + m_node_array[current_index].m_right = 0; + m_node_array[current_index].m_escapeIndex = 0; + + m_node_array[current_index].m_bound = primitive_boxes[startIndex].m_bound; + m_node_array[current_index].m_data = primitive_boxes[startIndex].m_data; + return; + } + + //configure inner node + + GUINT splitIndex; + + //calc this node bounding box + m_node_array[current_index].m_bound.invalidate(); + for (splitIndex=startIndex;splitIndex & primitive_boxes) +{ + // initialize node count to 0 + m_num_nodes = 0; + // allocate nodes + m_node_array.resize(primitive_boxes.size()*2); + + _build_sub_tree(primitive_boxes, 0, primitive_boxes.size()); +} + + diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_box_set.h b/extern/bullet2/BulletCollision/Gimpact/gim_box_set.h new file mode 100644 index 00000000000..45c4a6a8471 --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/gim_box_set.h @@ -0,0 +1,674 @@ +#ifndef GIM_BOX_SET_H_INCLUDED +#define GIM_BOX_SET_H_INCLUDED + +/*! \file gim_box_set.h +\author Francisco Len Nßjera +*/ +/* +----------------------------------------------------------------------------- +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + This library is free software; you can redistribute it and/or + modify it under the terms of EITHER: + (1) The GNU Lesser General Public License as published by the Free + Software Foundation; either version 2.1 of the License, or (at + your option) any later version. The text of the GNU Lesser + General Public License is included with this library in the + file GIMPACT-LICENSE-LGPL.TXT. + (2) The BSD-style license that is included with this library in + the file GIMPACT-LICENSE-BSD.TXT. + (3) The zlib/libpng license that is included with this library in + the file GIMPACT-LICENSE-ZLIB.TXT. + + This library 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 files + GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. + +----------------------------------------------------------------------------- +*/ + + +#include "gim_array.h" +#include "gim_radixsort.h" +#include "gim_box_collision.h" +#include "gim_tri_collision.h" + + + +//! Overlapping pair +struct GIM_PAIR +{ + GUINT m_index1; + GUINT m_index2; + GIM_PAIR() + {} + + GIM_PAIR(const GIM_PAIR & p) + { + m_index1 = p.m_index1; + m_index2 = p.m_index2; + } + + GIM_PAIR(GUINT index1, GUINT index2) + { + m_index1 = index1; + m_index2 = index2; + } +}; + +//! A pairset array +class gim_pair_set: public gim_array +{ +public: + gim_pair_set():gim_array(32) + { + } + inline void push_pair(GUINT index1,GUINT index2) + { + push_back(GIM_PAIR(index1,index2)); + } + + inline void push_pair_inv(GUINT index1,GUINT index2) + { + push_back(GIM_PAIR(index2,index1)); + } +}; + + +//! Prototype Base class for primitive classification +/*! +This class is a wrapper for primitive collections. +This tells relevant info for the Bounding Box set classes, which take care of space classification. +This class can manage Compound shapes and trimeshes, and if it is managing trimesh then the Hierarchy Bounding Box classes will take advantage of primitive Vs Box overlapping tests for getting optimal results and less Per Box compairisons. +*/ +class GIM_PRIMITIVE_MANAGER_PROTOTYPE +{ +public: + + virtual ~GIM_PRIMITIVE_MANAGER_PROTOTYPE() {} + //! determines if this manager consist on only triangles, which special case will be optimized + virtual bool is_trimesh() = 0; + virtual GUINT get_primitive_count() = 0; + virtual void get_primitive_box(GUINT prim_index ,GIM_AABB & primbox) = 0; + virtual void get_primitive_triangle(GUINT prim_index,GIM_TRIANGLE & triangle) = 0; +}; + + +struct GIM_AABB_DATA +{ + GIM_AABB m_bound; + GUINT m_data; +}; + +//! Node Structure for trees +struct GIM_BOX_TREE_NODE +{ + GIM_AABB m_bound; + GUINT m_left;//!< Left subtree + GUINT m_right;//!< Right subtree + GUINT m_escapeIndex;//!< Scape index for traversing + GUINT m_data;//!< primitive index if apply + + GIM_BOX_TREE_NODE() + { + m_left = 0; + m_right = 0; + m_escapeIndex = 0; + m_data = 0; + } + + SIMD_FORCE_INLINE bool is_leaf_node() const + { + return (!m_left && !m_right); + } +}; + +//! Basic Box tree structure +class GIM_BOX_TREE +{ +protected: + GUINT m_num_nodes; + gim_array m_node_array; +protected: + GUINT _sort_and_calc_splitting_index( + gim_array & primitive_boxes, + GUINT startIndex, GUINT endIndex, GUINT splitAxis); + + GUINT _calc_splitting_axis(gim_array & primitive_boxes, GUINT startIndex, GUINT endIndex); + + void _build_sub_tree(gim_array & primitive_boxes, GUINT startIndex, GUINT endIndex); +public: + GIM_BOX_TREE() + { + m_num_nodes = 0; + } + + //! prototype functions for box tree management + //!@{ + void build_tree(gim_array & primitive_boxes); + + SIMD_FORCE_INLINE void clearNodes() + { + m_node_array.clear(); + m_num_nodes = 0; + } + + //! node count + SIMD_FORCE_INLINE GUINT getNodeCount() const + { + return m_num_nodes; + } + + //! tells if the node is a leaf + SIMD_FORCE_INLINE bool isLeafNode(GUINT nodeindex) const + { + return m_node_array[nodeindex].is_leaf_node(); + } + + SIMD_FORCE_INLINE GUINT getNodeData(GUINT nodeindex) const + { + return m_node_array[nodeindex].m_data; + } + + SIMD_FORCE_INLINE void getNodeBound(GUINT nodeindex, GIM_AABB & bound) const + { + bound = m_node_array[nodeindex].m_bound; + } + + SIMD_FORCE_INLINE void setNodeBound(GUINT nodeindex, const GIM_AABB & bound) + { + m_node_array[nodeindex].m_bound = bound; + } + + SIMD_FORCE_INLINE GUINT getLeftNodeIndex(GUINT nodeindex) const + { + return m_node_array[nodeindex].m_left; + } + + SIMD_FORCE_INLINE GUINT getRightNodeIndex(GUINT nodeindex) const + { + return m_node_array[nodeindex].m_right; + } + + SIMD_FORCE_INLINE GUINT getScapeNodeIndex(GUINT nodeindex) const + { + return m_node_array[nodeindex].m_escapeIndex; + } + + //!@} +}; + + +//! Generic Box Tree Template +/*! +This class offers an structure for managing a box tree of primitives. +Requires a Primitive prototype (like GIM_PRIMITIVE_MANAGER_PROTOTYPE ) and +a Box tree structure ( like GIM_BOX_TREE). +*/ +template +class GIM_BOX_TREE_TEMPLATE_SET +{ +protected: + _GIM_PRIMITIVE_MANAGER_PROTOTYPE m_primitive_manager; + _GIM_BOX_TREE_PROTOTYPE m_box_tree; +protected: + //stackless refit + SIMD_FORCE_INLINE void refit() + { + GUINT nodecount = getNodeCount(); + while(nodecount--) + { + if(isLeafNode(nodecount)) + { + GIM_AABB leafbox; + m_primitive_manager.get_primitive_box(getNodeData(nodecount),leafbox); + setNodeBound(nodecount,leafbox); + } + else + { + //get left bound + GUINT childindex = getLeftNodeIndex(nodecount); + GIM_AABB bound; + getNodeBound(childindex,bound); + //get right bound + childindex = getRightNodeIndex(nodecount); + GIM_AABB bound2; + getNodeBound(childindex,bound2); + bound.merge(bound2); + + setNodeBound(nodecount,bound); + } + } + } +public: + + GIM_BOX_TREE_TEMPLATE_SET() + { + } + + SIMD_FORCE_INLINE GIM_AABB getGlobalBox() const + { + GIM_AABB totalbox; + getNodeBound(0, totalbox); + return totalbox; + } + + SIMD_FORCE_INLINE void setPrimitiveManager(const _GIM_PRIMITIVE_MANAGER_PROTOTYPE & primitive_manager) + { + m_primitive_manager = primitive_manager; + } + + const _GIM_PRIMITIVE_MANAGER_PROTOTYPE & getPrimitiveManager() const + { + return m_primitive_manager; + } + + _GIM_PRIMITIVE_MANAGER_PROTOTYPE & getPrimitiveManager() + { + return m_primitive_manager; + } + +//! node manager prototype functions +///@{ + + //! this attemps to refit the box set. + SIMD_FORCE_INLINE void update() + { + refit(); + } + + //! this rebuild the entire set + SIMD_FORCE_INLINE void buildSet() + { + //obtain primitive boxes + gim_array primitive_boxes; + primitive_boxes.resize(m_primitive_manager.get_primitive_count(),false); + + for (GUINT i = 0;i & collided_results) const + { + GUINT curIndex = 0; + GUINT numNodes = getNodeCount(); + + while (curIndex < numNodes) + { + GIM_AABB bound; + getNodeBound(curIndex,bound); + + //catch bugs in tree data + + bool aabbOverlap = bound.has_collision(box); + bool isleafnode = isLeafNode(curIndex); + + if (isleafnode && aabbOverlap) + { + collided_results.push_back(getNodeData(curIndex)); + } + + if (aabbOverlap || isleafnode) + { + //next subnode + curIndex++; + } + else + { + //skip node + curIndex+= getScapeNodeIndex(curIndex); + } + } + if(collided_results.size()>0) return true; + return false; + } + + //! returns the indices of the primitives in the m_primitive_manager + SIMD_FORCE_INLINE bool boxQueryTrans(const GIM_AABB & box, + const btTransform & transform, gim_array & collided_results) const + { + GIM_AABB transbox=box; + transbox.appy_transform(transform); + return boxQuery(transbox,collided_results); + } + + //! returns the indices of the primitives in the m_primitive_manager + SIMD_FORCE_INLINE bool rayQuery( + const btVector3 & ray_dir,const btVector3 & ray_origin , + gim_array & collided_results) const + { + GUINT curIndex = 0; + GUINT numNodes = getNodeCount(); + + while (curIndex < numNodes) + { + GIM_AABB bound; + getNodeBound(curIndex,bound); + + //catch bugs in tree data + + bool aabbOverlap = bound.collide_ray(ray_origin,ray_dir); + bool isleafnode = isLeafNode(curIndex); + + if (isleafnode && aabbOverlap) + { + collided_results.push_back(getNodeData( curIndex)); + } + + if (aabbOverlap || isleafnode) + { + //next subnode + curIndex++; + } + else + { + //skip node + curIndex+= getScapeNodeIndex(curIndex); + } + } + if(collided_results.size()>0) return true; + return false; + } + + //! tells if this set has hierarcht + SIMD_FORCE_INLINE bool hasHierarchy() const + { + return true; + } + + //! tells if this set is a trimesh + SIMD_FORCE_INLINE bool isTrimesh() const + { + return m_primitive_manager.is_trimesh(); + } + + //! node count + SIMD_FORCE_INLINE GUINT getNodeCount() const + { + return m_box_tree.getNodeCount(); + } + + //! tells if the node is a leaf + SIMD_FORCE_INLINE bool isLeafNode(GUINT nodeindex) const + { + return m_box_tree.isLeafNode(nodeindex); + } + + SIMD_FORCE_INLINE GUINT getNodeData(GUINT nodeindex) const + { + return m_box_tree.getNodeData(nodeindex); + } + + SIMD_FORCE_INLINE void getNodeBound(GUINT nodeindex, GIM_AABB & bound) const + { + m_box_tree.getNodeBound(nodeindex, bound); + } + + SIMD_FORCE_INLINE void setNodeBound(GUINT nodeindex, const GIM_AABB & bound) + { + m_box_tree.setNodeBound(nodeindex, bound); + } + + SIMD_FORCE_INLINE GUINT getLeftNodeIndex(GUINT nodeindex) const + { + return m_box_tree.getLeftNodeIndex(nodeindex); + } + + SIMD_FORCE_INLINE GUINT getRightNodeIndex(GUINT nodeindex) const + { + return m_box_tree.getRightNodeIndex(nodeindex); + } + + SIMD_FORCE_INLINE GUINT getScapeNodeIndex(GUINT nodeindex) const + { + return m_box_tree.getScapeNodeIndex(nodeindex); + } + + SIMD_FORCE_INLINE void getNodeTriangle(GUINT nodeindex,GIM_TRIANGLE & triangle) const + { + m_primitive_manager.get_primitive_triangle(getNodeData(nodeindex),triangle); + } + +}; + +//! Class for Box Tree Sets +/*! +this has the GIM_BOX_TREE implementation for bounding boxes. +*/ +template +class GIM_BOX_TREE_SET: public GIM_BOX_TREE_TEMPLATE_SET< _GIM_PRIMITIVE_MANAGER_PROTOTYPE, GIM_BOX_TREE> +{ +public: + +}; + + + + + +/// GIM_BOX_SET collision methods +template +class GIM_TREE_TREE_COLLIDER +{ +public: + gim_pair_set * m_collision_pairs; + BOX_SET_CLASS0 * m_boxset0; + BOX_SET_CLASS1 * m_boxset1; + GUINT current_node0; + GUINT current_node1; + bool node0_is_leaf; + bool node1_is_leaf; + bool t0_is_trimesh; + bool t1_is_trimesh; + bool node0_has_triangle; + bool node1_has_triangle; + GIM_AABB m_box0; + GIM_AABB m_box1; + GIM_BOX_BOX_TRANSFORM_CACHE trans_cache_1to0; + btTransform trans_cache_0to1; + GIM_TRIANGLE m_tri0; + btVector4 m_tri0_plane; + GIM_TRIANGLE m_tri1; + btVector4 m_tri1_plane; + + +public: + GIM_TREE_TREE_COLLIDER() + { + current_node0 = G_UINT_INFINITY; + current_node1 = G_UINT_INFINITY; + } +protected: + SIMD_FORCE_INLINE void retrieve_node0_triangle(GUINT node0) + { + if(node0_has_triangle) return; + m_boxset0->getNodeTriangle(node0,m_tri0); + //transform triangle + m_tri0.m_vertices[0] = trans_cache_0to1(m_tri0.m_vertices[0]); + m_tri0.m_vertices[1] = trans_cache_0to1(m_tri0.m_vertices[1]); + m_tri0.m_vertices[2] = trans_cache_0to1(m_tri0.m_vertices[2]); + m_tri0.get_plane(m_tri0_plane); + + node0_has_triangle = true; + } + + SIMD_FORCE_INLINE void retrieve_node1_triangle(GUINT node1) + { + if(node1_has_triangle) return; + m_boxset1->getNodeTriangle(node1,m_tri1); + //transform triangle + m_tri1.m_vertices[0] = trans_cache_1to0.transform(m_tri1.m_vertices[0]); + m_tri1.m_vertices[1] = trans_cache_1to0.transform(m_tri1.m_vertices[1]); + m_tri1.m_vertices[2] = trans_cache_1to0.transform(m_tri1.m_vertices[2]); + m_tri1.get_plane(m_tri1_plane); + + node1_has_triangle = true; + } + + SIMD_FORCE_INLINE void retrieve_node0_info(GUINT node0) + { + if(node0 == current_node0) return; + m_boxset0->getNodeBound(node0,m_box0); + node0_is_leaf = m_boxset0->isLeafNode(node0); + node0_has_triangle = false; + current_node0 = node0; + } + + SIMD_FORCE_INLINE void retrieve_node1_info(GUINT node1) + { + if(node1 == current_node1) return; + m_boxset1->getNodeBound(node1,m_box1); + node1_is_leaf = m_boxset1->isLeafNode(node1); + node1_has_triangle = false; + current_node1 = node1; + } + + SIMD_FORCE_INLINE bool node_collision(GUINT node0 ,GUINT node1) + { + retrieve_node0_info(node0); + retrieve_node1_info(node1); + bool result = m_box0.overlapping_trans_cache(m_box1,trans_cache_1to0,true); + if(!result) return false; + + if(t0_is_trimesh && node0_is_leaf) + { + //perform primitive vs box collision + retrieve_node0_triangle(node0); + //do triangle vs box collision + m_box1.increment_margin(m_tri0.m_margin); + + result = m_box1.collide_triangle_exact( + m_tri0.m_vertices[0],m_tri0.m_vertices[1],m_tri0.m_vertices[2],m_tri0_plane); + + m_box1.increment_margin(-m_tri0.m_margin); + + if(!result) return false; + return true; + } + else if(t1_is_trimesh && node1_is_leaf) + { + //perform primitive vs box collision + retrieve_node1_triangle(node1); + //do triangle vs box collision + m_box0.increment_margin(m_tri1.m_margin); + + result = m_box0.collide_triangle_exact( + m_tri1.m_vertices[0],m_tri1.m_vertices[1],m_tri1.m_vertices[2],m_tri1_plane); + + m_box0.increment_margin(-m_tri1.m_margin); + + if(!result) return false; + return true; + } + return true; + } + + //stackless collision routine + void find_collision_pairs() + { + gim_pair_set stack_collisions; + stack_collisions.reserve(32); + + //add the first pair + stack_collisions.push_pair(0,0); + + + while(stack_collisions.size()) + { + //retrieve the last pair and pop + GUINT node0 = stack_collisions.back().m_index1; + GUINT node1 = stack_collisions.back().m_index2; + stack_collisions.pop_back(); + if(node_collision(node0,node1)) // a collision is found + { + if(node0_is_leaf) + { + if(node1_is_leaf) + { + m_collision_pairs->push_pair(m_boxset0->getNodeData(node0),m_boxset1->getNodeData(node1)); + } + else + { + //collide left + stack_collisions.push_pair(node0,m_boxset1->getLeftNodeIndex(node1)); + + //collide right + stack_collisions.push_pair(node0,m_boxset1->getRightNodeIndex(node1)); + } + } + else + { + if(node1_is_leaf) + { + //collide left + stack_collisions.push_pair(m_boxset0->getLeftNodeIndex(node0),node1); + //collide right + stack_collisions.push_pair(m_boxset0->getRightNodeIndex(node0),node1); + } + else + { + GUINT left0 = m_boxset0->getLeftNodeIndex(node0); + GUINT right0 = m_boxset0->getRightNodeIndex(node0); + GUINT left1 = m_boxset1->getLeftNodeIndex(node1); + GUINT right1 = m_boxset1->getRightNodeIndex(node1); + //collide left + stack_collisions.push_pair(left0,left1); + //collide right + stack_collisions.push_pair(left0,right1); + //collide left + stack_collisions.push_pair(right0,left1); + //collide right + stack_collisions.push_pair(right0,right1); + + }// else if node1 is not a leaf + }// else if node0 is not a leaf + + }// if(node_collision(node0,node1)) + }//while(stack_collisions.size()) + } +public: + void find_collision(BOX_SET_CLASS0 * boxset1, const btTransform & trans1, + BOX_SET_CLASS1 * boxset2, const btTransform & trans2, + gim_pair_set & collision_pairs, bool complete_primitive_tests = true) + { + m_collision_pairs = &collision_pairs; + m_boxset0 = boxset1; + m_boxset1 = boxset2; + + trans_cache_1to0.calc_from_homogenic(trans1,trans2); + + trans_cache_0to1 = trans2.inverse(); + trans_cache_0to1 *= trans1; + + + if(complete_primitive_tests) + { + t0_is_trimesh = boxset1->getPrimitiveManager().is_trimesh(); + t1_is_trimesh = boxset2->getPrimitiveManager().is_trimesh(); + } + else + { + t0_is_trimesh = false; + t1_is_trimesh = false; + } + + find_collision_pairs(); + } +}; + + +#endif // GIM_BOXPRUNING_H_INCLUDED + + diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_clip_polygon.h b/extern/bullet2/BulletCollision/Gimpact/gim_clip_polygon.h new file mode 100644 index 00000000000..a91fd3aa422 --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/gim_clip_polygon.h @@ -0,0 +1,210 @@ +#ifndef GIM_CLIP_POLYGON_H_INCLUDED +#define GIM_CLIP_POLYGON_H_INCLUDED + +/*! \file gim_tri_collision.h +\author Francisco Len Nßjera +*/ +/* +----------------------------------------------------------------------------- +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + This library is free software; you can redistribute it and/or + modify it under the terms of EITHER: + (1) The GNU Lesser General Public License as published by the Free + Software Foundation; either version 2.1 of the License, or (at + your option) any later version. The text of the GNU Lesser + General Public License is included with this library in the + file GIMPACT-LICENSE-LGPL.TXT. + (2) The BSD-style license that is included with this library in + the file GIMPACT-LICENSE-BSD.TXT. + (3) The zlib/libpng license that is included with this library in + the file GIMPACT-LICENSE-ZLIB.TXT. + + This library 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 files + GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. + +----------------------------------------------------------------------------- +*/ + + +//! This function calcs the distance from a 3D plane +class DISTANCE_PLANE_3D_FUNC +{ +public: + template + inline GREAL operator()(const CLASS_PLANE & plane, const CLASS_POINT & point) + { + return DISTANCE_PLANE_POINT(plane, point); + } +}; + + + +template +SIMD_FORCE_INLINE void PLANE_CLIP_POLYGON_COLLECT( + const CLASS_POINT & point0, + const CLASS_POINT & point1, + GREAL dist0, + GREAL dist1, + CLASS_POINT * clipped, + GUINT & clipped_count) +{ + GUINT _prevclassif = (dist0>G_EPSILON); + GUINT _classif = (dist1>G_EPSILON); + if(_classif!=_prevclassif) + { + GREAL blendfactor = -dist0/(dist1-dist0); + VEC_BLEND(clipped[clipped_count],point0,point1,blendfactor); + clipped_count++; + } + if(!_classif) + { + VEC_COPY(clipped[clipped_count],point1); + clipped_count++; + } +} + + +//! Clips a polygon by a plane +/*! +*\return The count of the clipped counts +*/ +template +SIMD_FORCE_INLINE GUINT PLANE_CLIP_POLYGON_GENERIC( + const CLASS_PLANE & plane, + const CLASS_POINT * polygon_points, + GUINT polygon_point_count, + CLASS_POINT * clipped,DISTANCE_PLANE_FUNC distance_func) +{ + GUINT clipped_count = 0; + + + //clip first point + GREAL firstdist = distance_func(plane,polygon_points[0]);; + if(!(firstdist>G_EPSILON)) + { + VEC_COPY(clipped[clipped_count],polygon_points[0]); + clipped_count++; + } + + GREAL olddist = firstdist; + for(GUINT _i=1;_i +SIMD_FORCE_INLINE GUINT PLANE_CLIP_TRIANGLE_GENERIC( + const CLASS_PLANE & plane, + const CLASS_POINT & point0, + const CLASS_POINT & point1, + const CLASS_POINT & point2, + CLASS_POINT * clipped,DISTANCE_PLANE_FUNC distance_func) +{ + GUINT clipped_count = 0; + + //clip first point + GREAL firstdist = distance_func(plane,point0);; + if(!(firstdist>G_EPSILON)) + { + VEC_COPY(clipped[clipped_count],point0); + clipped_count++; + } + + // point 1 + GREAL olddist = firstdist; + GREAL dist = distance_func(plane,point1); + + PLANE_CLIP_POLYGON_COLLECT( + point0,point1, + olddist, + dist, + clipped, + clipped_count); + + olddist = dist; + + + // point 2 + dist = distance_func(plane,point2); + + PLANE_CLIP_POLYGON_COLLECT( + point1,point2, + olddist, + dist, + clipped, + clipped_count); + olddist = dist; + + + + //RETURN TO FIRST point + PLANE_CLIP_POLYGON_COLLECT( + point2,point0, + olddist, + firstdist, + clipped, + clipped_count); + + return clipped_count; +} + + +template +SIMD_FORCE_INLINE GUINT PLANE_CLIP_POLYGON3D( + const CLASS_PLANE & plane, + const CLASS_POINT * polygon_points, + GUINT polygon_point_count, + CLASS_POINT * clipped) +{ + return PLANE_CLIP_POLYGON_GENERIC(plane,polygon_points,polygon_point_count,clipped,DISTANCE_PLANE_3D_FUNC()); +} + + +template +SIMD_FORCE_INLINE GUINT PLANE_CLIP_TRIANGLE3D( + const CLASS_PLANE & plane, + const CLASS_POINT & point0, + const CLASS_POINT & point1, + const CLASS_POINT & point2, + CLASS_POINT * clipped) +{ + return PLANE_CLIP_TRIANGLE_GENERIC(plane,point0,point1,point2,clipped,DISTANCE_PLANE_3D_FUNC()); +} + + + +#endif // GIM_TRI_COLLISION_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_contact.cpp b/extern/bullet2/BulletCollision/Gimpact/gim_contact.cpp new file mode 100644 index 00000000000..20e41de089f --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/gim_contact.cpp @@ -0,0 +1,146 @@ + +/* +----------------------------------------------------------------------------- +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + This library is free software; you can redistribute it and/or + modify it under the terms of EITHER: + (1) The GNU Lesser General Public License as published by the Free + Software Foundation; either version 2.1 of the License, or (at + your option) any later version. The text of the GNU Lesser + General Public License is included with this library in the + file GIMPACT-LICENSE-LGPL.TXT. + (2) The BSD-style license that is included with this library in + the file GIMPACT-LICENSE-BSD.TXT. + (3) The zlib/libpng license that is included with this library in + the file GIMPACT-LICENSE-ZLIB.TXT. + + This library 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 files + GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. + +----------------------------------------------------------------------------- +*/ + +#include "gim_contact.h" + +#define MAX_COINCIDENT 8 + +void gim_contact_array::merge_contacts( + const gim_contact_array & contacts, bool normal_contact_average) +{ + clear(); + + if(contacts.size()==1) + { + push_back(contacts.back()); + return; + } + + gim_array keycontacts(contacts.size()); + keycontacts.resize(contacts.size(),false); + + //fill key contacts + + GUINT i; + + for (i = 0;im_depth - CONTACT_DIFF_EPSILON > scontact->m_depth)//) + { + *pcontact = *scontact; + coincident_count = 0; + } + else if(normal_contact_average) + { + if(btFabs(pcontact->m_depth - scontact->m_depth)m_normal; + coincident_count++; + } + } + } + } + else + {//add new contact + + if(normal_contact_average && coincident_count>0) + { + pcontact->interpolate_normals(coincident_normals,coincident_count); + coincident_count = 0; + } + + push_back(*scontact); + pcontact = &back(); + } + last_key = key; + } +} + +void gim_contact_array::merge_contacts_unique(const gim_contact_array & contacts) +{ + clear(); + + if(contacts.size()==1) + { + push_back(contacts.back()); + return; + } + + GIM_CONTACT average_contact = contacts.back(); + + for (GUINT i=1;i +{ +public: + gim_contact_array():gim_array(64) + { + } + + SIMD_FORCE_INLINE void push_contact(const btVector3 &point,const btVector3 & normal, + GREAL depth, GUINT feature1, GUINT feature2) + { + push_back_mem(); + GIM_CONTACT & newele = back(); + newele.m_point = point; + newele.m_normal = normal; + newele.m_depth = depth; + newele.m_feature1 = feature1; + newele.m_feature2 = feature2; + } + + SIMD_FORCE_INLINE void push_triangle_contacts( + const GIM_TRIANGLE_CONTACT_DATA & tricontact, + GUINT feature1,GUINT feature2) + { + for(GUINT i = 0;i +struct GIM_HASH_TABLE_NODE +{ + GUINT m_key; + T m_data; + GIM_HASH_TABLE_NODE() + { + } + + GIM_HASH_TABLE_NODE(const GIM_HASH_TABLE_NODE & value) + { + m_key = value.m_key; + m_data = value.m_data; + } + + GIM_HASH_TABLE_NODE(GUINT key, const T & data) + { + m_key = key; + m_data = data; + } + + bool operator <(const GIM_HASH_TABLE_NODE & other) const + { + ///inverse order, further objects are first + if(m_key < other.m_key) return true; + return false; + } + + bool operator >(const GIM_HASH_TABLE_NODE & other) const + { + ///inverse order, further objects are first + if(m_key > other.m_key) return true; + return false; + } + + bool operator ==(const GIM_HASH_TABLE_NODE & other) const + { + ///inverse order, further objects are first + if(m_key == other.m_key) return true; + return false; + } +}; + +///Macro for getting the key +class GIM_HASH_NODE_GET_KEY +{ +public: + template + inline GUINT operator()( const T& a) + { + return a.m_key; + } +}; + + + +///Macro for comparing the key and the element +class GIM_HASH_NODE_CMP_KEY_MACRO +{ +public: + template + inline int operator() ( const T& a, GUINT key) + { + return ((int)(a.m_key - key)); + } +}; + +///Macro for comparing Hash nodes +class GIM_HASH_NODE_CMP_MACRO +{ +public: + template + inline int operator() ( const T& a, const T& b ) + { + return ((int)(a.m_key - b.m_key)); + } +}; + + + + + +//! Sorting for hash table +/*! +switch automatically between quicksort and radixsort +*/ +template +void gim_sort_hash_node_array(T * array, GUINT array_count) +{ + if(array_count + +
    +
  • if node_size = 0, then this container becomes a simple sorted array allocator. reserve_size is used for reserve memory in m_nodes. +When the array size reaches the size equivalent to 'min_hash_table_size', then it becomes a hash table by calling check_for_switching_to_hashtable. +
  • If node_size != 0, then this container becomes a hash table for ever +
+ +*/ +template +class gim_hash_table +{ +protected: + typedef GIM_HASH_TABLE_NODE _node_type; + + //!The nodes + //array< _node_type, SuperAllocator<_node_type> > m_nodes; + gim_array< _node_type > m_nodes; + //SuperBufferedArray< _node_type > m_nodes; + bool m_sorted; + + ///Hash table data management. The hash table has the indices to the corresponding m_nodes array + GUINT * m_hash_table;//!< + GUINT m_table_size;//!< + GUINT m_node_size;//!< + GUINT m_min_hash_table_size; + + + + //! Returns the cell index + inline GUINT _find_cell(GUINT hashkey) + { + _node_type * nodesptr = m_nodes.pointer(); + GUINT start_index = (hashkey%m_table_size)*m_node_size; + GUINT end_index = start_index + m_node_size; + + while(start_index= m_nodes.size()) return false; + if(m_nodes[index].m_key != GIM_INVALID_HASH) + { + //Search for the avaliable cell in buffer + GUINT cell_index = _find_cell(m_nodes[index].m_key); + + btAssert(cell_index!=GIM_INVALID_HASH); + btAssert(m_hash_table[cell_index]==index); + + m_hash_table[cell_index] = GIM_INVALID_HASH; + } + + return this->_erase_unsorted(index); + } + + //! erase by key in hash table + inline bool _erase_hash_table(GUINT hashkey) + { + if(hashkey == GIM_INVALID_HASH) return false; + + //Search for the avaliable cell in buffer + GUINT cell_index = _find_cell(hashkey); + if(cell_index ==GIM_INVALID_HASH) return false; + + GUINT index = m_hash_table[cell_index]; + m_hash_table[cell_index] = GIM_INVALID_HASH; + + return this->_erase_unsorted(index); + } + + + + //! insert an element in hash table + /*! + If the element exists, this won't insert the element + \return the index in the array of the existing element,or GIM_INVALID_HASH if the element has been inserted + If so, the element has been inserted at the last position of the array. + */ + inline GUINT _insert_hash_table(GUINT hashkey, const T & value) + { + if(hashkey==GIM_INVALID_HASH) + { + //Insert anyway + _insert_unsorted(hashkey,value); + return GIM_INVALID_HASH; + } + + GUINT cell_index = _assign_hash_table_cell(hashkey); + + GUINT value_key = m_hash_table[cell_index]; + + if(value_key!= GIM_INVALID_HASH) return value_key;// Not overrited + + m_hash_table[cell_index] = m_nodes.size(); + + _insert_unsorted(hashkey,value); + return GIM_INVALID_HASH; + } + + //! insert an element in hash table. + /*! + If the element exists, this replaces the element. + \return the index in the array of the existing element,or GIM_INVALID_HASH if the element has been inserted + If so, the element has been inserted at the last position of the array. + */ + inline GUINT _insert_hash_table_replace(GUINT hashkey, const T & value) + { + if(hashkey==GIM_INVALID_HASH) + { + //Insert anyway + _insert_unsorted(hashkey,value); + return GIM_INVALID_HASH; + } + + GUINT cell_index = _assign_hash_table_cell(hashkey); + + GUINT value_key = m_hash_table[cell_index]; + + if(value_key!= GIM_INVALID_HASH) + {//replaces the existing + m_nodes[value_key] = _node_type(hashkey,value); + return value_key;// index of the replaced element + } + + m_hash_table[cell_index] = m_nodes.size(); + + _insert_unsorted(hashkey,value); + return GIM_INVALID_HASH; + + } + + + ///Sorted array data management. The hash table has the indices to the corresponding m_nodes array + inline bool _erase_sorted(GUINT index) + { + if(index>=(GUINT)m_nodes.size()) return false; + m_nodes.erase_sorted(index); + if(m_nodes.size()<2) m_sorted = false; + return true; + } + + //! faster, but unsorted + inline bool _erase_unsorted(GUINT index) + { + if(index>=m_nodes.size()) return false; + + GUINT lastindex = m_nodes.size()-1; + if(indexcheck_for_switching_to_hashtable(); + } + + //! Insert an element in an ordered array + inline GUINT _insert_sorted(GUINT hashkey, const T & value) + { + if(hashkey==GIM_INVALID_HASH || size()==0) + { + m_nodes.push_back(_node_type(hashkey,value)); + return GIM_INVALID_HASH; + } + //Insert at last position + //Sort element + + + GUINT result_ind=0; + GUINT last_index = m_nodes.size()-1; + _node_type * ptr = m_nodes.pointer(); + + bool found = gim_binary_search_ex( + ptr,0,last_index,result_ind,hashkey,GIM_HASH_NODE_CMP_KEY_MACRO()); + + + //Insert before found index + if(found) + { + return result_ind; + } + else + { + _insert_in_pos(hashkey, value, result_ind); + } + return GIM_INVALID_HASH; + } + + inline GUINT _insert_sorted_replace(GUINT hashkey, const T & value) + { + if(hashkey==GIM_INVALID_HASH || size()==0) + { + m_nodes.push_back(_node_type(hashkey,value)); + return GIM_INVALID_HASH; + } + //Insert at last position + //Sort element + GUINT result_ind; + GUINT last_index = m_nodes.size()-1; + _node_type * ptr = m_nodes.pointer(); + + bool found = gim_binary_search_ex( + ptr,0,last_index,result_ind,hashkey,GIM_HASH_NODE_CMP_KEY_MACRO()); + + //Insert before found index + if(found) + { + m_nodes[result_ind] = _node_type(hashkey,value); + } + else + { + _insert_in_pos(hashkey, value, result_ind); + } + return result_ind; + } + + //! Fast insertion in m_nodes array + inline GUINT _insert_unsorted(GUINT hashkey, const T & value) + { + m_nodes.push_back(_node_type(hashkey,value)); + m_sorted = false; + return GIM_INVALID_HASH; + } + + + +public: + + /*! +
  • if node_size = 0, then this container becomes a simple sorted array allocator. reserve_size is used for reserve memory in m_nodes. + When the array size reaches the size equivalent to 'min_hash_table_size', then it becomes a hash table by calling check_for_switching_to_hashtable. +
  • If node_size != 0, then this container becomes a hash table for ever + + */ + gim_hash_table(GUINT reserve_size = GIM_DEFAULT_HASH_TABLE_SIZE, + GUINT node_size = GIM_DEFAULT_HASH_TABLE_NODE_SIZE, + GUINT min_hash_table_size = GIM_INVALID_HASH) + { + m_hash_table = NULL; + m_table_size = 0; + m_sorted = false; + m_node_size = node_size; + m_min_hash_table_size = min_hash_table_size; + + if(m_node_size!=0) + { + if(reserve_size!=0) + { + m_nodes.reserve(reserve_size); + _reserve_table_memory(reserve_size); + _invalidate_keys(); + } + else + { + m_nodes.reserve(GIM_DEFAULT_HASH_TABLE_SIZE); + _reserve_table_memory(GIM_DEFAULT_HASH_TABLE_SIZE); + _invalidate_keys(); + } + } + else if(reserve_size!=0) + { + m_nodes.reserve(reserve_size); + } + + } + + ~gim_hash_table() + { + _destroy(); + } + + inline bool is_hash_table() + { + if(m_hash_table) return true; + return false; + } + + inline bool is_sorted() + { + if(size()<2) return true; + return m_sorted; + } + + bool sort() + { + if(is_sorted()) return true; + if(m_nodes.size()<2) return false; + + + _node_type * ptr = m_nodes.pointer(); + GUINT siz = m_nodes.size(); + gim_sort_hash_node_array(ptr,siz); + m_sorted=true; + + + + if(m_hash_table) + { + _rehash(); + } + return true; + } + + bool switch_to_hashtable() + { + if(m_hash_table) return false; + if(m_node_size==0) m_node_size = GIM_DEFAULT_HASH_TABLE_NODE_SIZE; + if(m_nodes.size()m_hash_table) return true; + + if(!(m_nodes.size()< m_min_hash_table_size)) + { + if(m_node_size == 0) + { + m_node_size = GIM_DEFAULT_HASH_TABLE_NODE_SIZE; + } + + _resize_table(m_nodes.size()+1); + return true; + } + return false; + } + + inline void set_sorted(bool value) + { + m_sorted = value; + } + + //! Retrieves the amount of keys. + inline GUINT size() const + { + return m_nodes.size(); + } + + //! Retrieves the hash key. + inline GUINT get_key(GUINT index) const + { + return m_nodes[index].m_key; + } + + //! Retrieves the value by index + /*! + */ + inline T * get_value_by_index(GUINT index) + { + return &m_nodes[index].m_data; + } + + inline const T& operator[](GUINT index) const + { + return m_nodes[index].m_data; + } + + inline T& operator[](GUINT index) + { + return m_nodes[index].m_data; + } + + //! Finds the index of the element with the key + /*! + \return the index in the array of the existing element,or GIM_INVALID_HASH if the element has been inserted + If so, the element has been inserted at the last position of the array. + */ + inline GUINT find(GUINT hashkey) + { + if(m_hash_table) + { + GUINT cell_index = _find_cell(hashkey); + if(cell_index==GIM_INVALID_HASH) return GIM_INVALID_HASH; + return m_hash_table[cell_index]; + } + GUINT last_index = m_nodes.size(); + if(last_index<2) + { + if(last_index==0) return GIM_INVALID_HASH; + if(m_nodes[0].m_key == hashkey) return 0; + return GIM_INVALID_HASH; + } + else if(m_sorted) + { + //Binary search + GUINT result_ind = 0; + last_index--; + _node_type * ptr = m_nodes.pointer(); + + bool found = gim_binary_search_ex(ptr,0,last_index,result_ind,hashkey,GIM_HASH_NODE_CMP_KEY_MACRO()); + + + if(found) return result_ind; + } + return GIM_INVALID_HASH; + } + + //! Retrieves the value associated with the index + /*! + \return the found element, or null + */ + inline T * get_value(GUINT hashkey) + { + GUINT index = find(hashkey); + if(index == GIM_INVALID_HASH) return NULL; + return &m_nodes[index].m_data; + } + + + /*! + */ + inline bool erase_by_index(GUINT index) + { + if(index > m_nodes.size()) return false; + + if(m_hash_table == NULL) + { + if(is_sorted()) + { + return this->_erase_sorted(index); + } + else + { + return this->_erase_unsorted(index); + } + } + else + { + return this->_erase_by_index_hash_table(index); + } + return false; + } + + + + inline bool erase_by_index_unsorted(GUINT index) + { + if(index > m_nodes.size()) return false; + + if(m_hash_table == NULL) + { + return this->_erase_unsorted(index); + } + else + { + return this->_erase_by_index_hash_table(index); + } + return false; + } + + + + /*! + + */ + inline bool erase_by_key(GUINT hashkey) + { + if(size()==0) return false; + + if(m_hash_table) + { + return this->_erase_hash_table(hashkey); + } + //Binary search + + if(is_sorted()==false) return false; + + GUINT result_ind = find(hashkey); + if(result_ind!= GIM_INVALID_HASH) + { + return this->_erase_sorted(result_ind); + } + return false; + } + + void clear() + { + m_nodes.clear(); + + if(m_hash_table==NULL) return; + GUINT datasize = m_table_size*m_node_size; + //Initialize the hashkeys. + GUINT i; + for(i=0;i_insert_hash_table(hashkey,element); + } + if(this->is_sorted()) + { + return this->_insert_sorted(hashkey,element); + } + return this->_insert_unsorted(hashkey,element); + } + + //! Insert an element into the hash, and could overrite an existing object with the same hash. + /*! + \return If GIM_INVALID_HASH, the object has been inserted succesfully. Else it returns the position + of the replaced element. + */ + inline GUINT insert_override(GUINT hashkey, const T & element) + { + if(m_hash_table) + { + return this->_insert_hash_table_replace(hashkey,element); + } + if(this->is_sorted()) + { + return this->_insert_sorted_replace(hashkey,element); + } + this->_insert_unsorted(hashkey,element); + return m_nodes.size(); + } + + + + //! Insert an element into the hash,But if this container is a sorted array, this inserts it unsorted + /*! + */ + inline GUINT insert_unsorted(GUINT hashkey,const T & element) + { + if(m_hash_table) + { + return this->_insert_hash_table(hashkey,element); + } + return this->_insert_unsorted(hashkey,element); + } + + +}; + + + +#endif // GIM_CONTAINERS_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_linear_math.h b/extern/bullet2/BulletCollision/Gimpact/gim_linear_math.h new file mode 100644 index 00000000000..0247d4e61cc --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/gim_linear_math.h @@ -0,0 +1,1573 @@ +#ifndef GIM_LINEAR_H_INCLUDED +#define GIM_LINEAR_H_INCLUDED + +/*! \file gim_linear_math.h +*\author Francisco Len Nßjera +Type Independant Vector and matrix operations. +*/ +/* +----------------------------------------------------------------------------- +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + This library is free software; you can redistribute it and/or + modify it under the terms of EITHER: + (1) The GNU Lesser General Public License as published by the Free + Software Foundation; either version 2.1 of the License, or (at + your option) any later version. The text of the GNU Lesser + General Public License is included with this library in the + file GIMPACT-LICENSE-LGPL.TXT. + (2) The BSD-style license that is included with this library in + the file GIMPACT-LICENSE-BSD.TXT. + (3) The zlib/libpng license that is included with this library in + the file GIMPACT-LICENSE-ZLIB.TXT. + + This library 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 files + GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. + +----------------------------------------------------------------------------- +*/ + + +#include "gim_math.h" +#include "gim_geom_types.h" + + + + +//! Zero out a 2D vector +#define VEC_ZERO_2(a) \ +{ \ + (a)[0] = (a)[1] = 0.0f; \ +}\ + + +//! Zero out a 3D vector +#define VEC_ZERO(a) \ +{ \ + (a)[0] = (a)[1] = (a)[2] = 0.0f; \ +}\ + + +/// Zero out a 4D vector +#define VEC_ZERO_4(a) \ +{ \ + (a)[0] = (a)[1] = (a)[2] = (a)[3] = 0.0f; \ +}\ + + +/// Vector copy +#define VEC_COPY_2(b,a) \ +{ \ + (b)[0] = (a)[0]; \ + (b)[1] = (a)[1]; \ +}\ + + +/// Copy 3D vector +#define VEC_COPY(b,a) \ +{ \ + (b)[0] = (a)[0]; \ + (b)[1] = (a)[1]; \ + (b)[2] = (a)[2]; \ +}\ + + +/// Copy 4D vector +#define VEC_COPY_4(b,a) \ +{ \ + (b)[0] = (a)[0]; \ + (b)[1] = (a)[1]; \ + (b)[2] = (a)[2]; \ + (b)[3] = (a)[3]; \ +}\ + +/// VECTOR SWAP +#define VEC_SWAP(b,a) \ +{ \ + GIM_SWAP_NUMBERS((b)[0],(a)[0]);\ + GIM_SWAP_NUMBERS((b)[1],(a)[1]);\ + GIM_SWAP_NUMBERS((b)[2],(a)[2]);\ +}\ + +/// Vector difference +#define VEC_DIFF_2(v21,v2,v1) \ +{ \ + (v21)[0] = (v2)[0] - (v1)[0]; \ + (v21)[1] = (v2)[1] - (v1)[1]; \ +}\ + + +/// Vector difference +#define VEC_DIFF(v21,v2,v1) \ +{ \ + (v21)[0] = (v2)[0] - (v1)[0]; \ + (v21)[1] = (v2)[1] - (v1)[1]; \ + (v21)[2] = (v2)[2] - (v1)[2]; \ +}\ + + +/// Vector difference +#define VEC_DIFF_4(v21,v2,v1) \ +{ \ + (v21)[0] = (v2)[0] - (v1)[0]; \ + (v21)[1] = (v2)[1] - (v1)[1]; \ + (v21)[2] = (v2)[2] - (v1)[2]; \ + (v21)[3] = (v2)[3] - (v1)[3]; \ +}\ + + +/// Vector sum +#define VEC_SUM_2(v21,v2,v1) \ +{ \ + (v21)[0] = (v2)[0] + (v1)[0]; \ + (v21)[1] = (v2)[1] + (v1)[1]; \ +}\ + + +/// Vector sum +#define VEC_SUM(v21,v2,v1) \ +{ \ + (v21)[0] = (v2)[0] + (v1)[0]; \ + (v21)[1] = (v2)[1] + (v1)[1]; \ + (v21)[2] = (v2)[2] + (v1)[2]; \ +}\ + + +/// Vector sum +#define VEC_SUM_4(v21,v2,v1) \ +{ \ + (v21)[0] = (v2)[0] + (v1)[0]; \ + (v21)[1] = (v2)[1] + (v1)[1]; \ + (v21)[2] = (v2)[2] + (v1)[2]; \ + (v21)[3] = (v2)[3] + (v1)[3]; \ +}\ + + +/// scalar times vector +#define VEC_SCALE_2(c,a,b) \ +{ \ + (c)[0] = (a)*(b)[0]; \ + (c)[1] = (a)*(b)[1]; \ +}\ + + +/// scalar times vector +#define VEC_SCALE(c,a,b) \ +{ \ + (c)[0] = (a)*(b)[0]; \ + (c)[1] = (a)*(b)[1]; \ + (c)[2] = (a)*(b)[2]; \ +}\ + + +/// scalar times vector +#define VEC_SCALE_4(c,a,b) \ +{ \ + (c)[0] = (a)*(b)[0]; \ + (c)[1] = (a)*(b)[1]; \ + (c)[2] = (a)*(b)[2]; \ + (c)[3] = (a)*(b)[3]; \ +}\ + + +/// accumulate scaled vector +#define VEC_ACCUM_2(c,a,b) \ +{ \ + (c)[0] += (a)*(b)[0]; \ + (c)[1] += (a)*(b)[1]; \ +}\ + + +/// accumulate scaled vector +#define VEC_ACCUM(c,a,b) \ +{ \ + (c)[0] += (a)*(b)[0]; \ + (c)[1] += (a)*(b)[1]; \ + (c)[2] += (a)*(b)[2]; \ +}\ + + +/// accumulate scaled vector +#define VEC_ACCUM_4(c,a,b) \ +{ \ + (c)[0] += (a)*(b)[0]; \ + (c)[1] += (a)*(b)[1]; \ + (c)[2] += (a)*(b)[2]; \ + (c)[3] += (a)*(b)[3]; \ +}\ + + +/// Vector dot product +#define VEC_DOT_2(a,b) ((a)[0]*(b)[0] + (a)[1]*(b)[1]) + + +/// Vector dot product +#define VEC_DOT(a,b) ((a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2]) + +/// Vector dot product +#define VEC_DOT_4(a,b) ((a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2] + (a)[3]*(b)[3]) + +/// vector impact parameter (squared) +#define VEC_IMPACT_SQ(bsq,direction,position) {\ + GREAL _llel_ = VEC_DOT(direction, position);\ + bsq = VEC_DOT(position, position) - _llel_*_llel_;\ +}\ + + +/// vector impact parameter +#define VEC_IMPACT(bsq,direction,position) {\ + VEC_IMPACT_SQ(bsq,direction,position); \ + GIM_SQRT(bsq,bsq); \ +}\ + +/// Vector length +#define VEC_LENGTH_2(a,l)\ +{\ + GREAL _pp = VEC_DOT_2(a,a);\ + GIM_SQRT(_pp,l);\ +}\ + + +/// Vector length +#define VEC_LENGTH(a,l)\ +{\ + GREAL _pp = VEC_DOT(a,a);\ + GIM_SQRT(_pp,l);\ +}\ + + +/// Vector length +#define VEC_LENGTH_4(a,l)\ +{\ + GREAL _pp = VEC_DOT_4(a,a);\ + GIM_SQRT(_pp,l);\ +}\ + +/// Vector inv length +#define VEC_INV_LENGTH_2(a,l)\ +{\ + GREAL _pp = VEC_DOT_2(a,a);\ + GIM_INV_SQRT(_pp,l);\ +}\ + + +/// Vector inv length +#define VEC_INV_LENGTH(a,l)\ +{\ + GREAL _pp = VEC_DOT(a,a);\ + GIM_INV_SQRT(_pp,l);\ +}\ + + +/// Vector inv length +#define VEC_INV_LENGTH_4(a,l)\ +{\ + GREAL _pp = VEC_DOT_4(a,a);\ + GIM_INV_SQRT(_pp,l);\ +}\ + + + +/// distance between two points +#define VEC_DISTANCE(_len,_va,_vb) {\ + vec3f _tmp_; \ + VEC_DIFF(_tmp_, _vb, _va); \ + VEC_LENGTH(_tmp_,_len); \ +}\ + + +/// Vector length +#define VEC_CONJUGATE_LENGTH(a,l)\ +{\ + GREAL _pp = 1.0 - a[0]*a[0] - a[1]*a[1] - a[2]*a[2];\ + GIM_SQRT(_pp,l);\ +}\ + + +/// Vector length +#define VEC_NORMALIZE(a) { \ + GREAL len;\ + VEC_INV_LENGTH(a,len); \ + if(lenA[1]?(A[0]>A[2]?0:2):(A[1]>A[2]?1:2);\ +}\ + +//! Finds the 2 smallest cartesian coordinates from a vector +#define VEC_MINOR_AXES(vec, i0, i1)\ +{\ + VEC_MAYOR_COORD(vec,i0);\ + i0 = (i0+1)%3;\ + i1 = (i0+1)%3;\ +}\ + + + + +#define VEC_EQUAL(v1,v2) (v1[0]==v2[0]&&v1[1]==v2[1]&&v1[2]==v2[2]) + +#define VEC_NEAR_EQUAL(v1,v2) (GIM_NEAR_EQUAL(v1[0],v2[0])&&GIM_NEAR_EQUAL(v1[1],v2[1])&&GIM_NEAR_EQUAL(v1[2],v2[2])) + + +/// Vector cross +#define X_AXIS_CROSS_VEC(dst,src)\ +{ \ + dst[0] = 0.0f; \ + dst[1] = -src[2]; \ + dst[2] = src[1]; \ +}\ + +#define Y_AXIS_CROSS_VEC(dst,src)\ +{ \ + dst[0] = src[2]; \ + dst[1] = 0.0f; \ + dst[2] = -src[0]; \ +}\ + +#define Z_AXIS_CROSS_VEC(dst,src)\ +{ \ + dst[0] = -src[1]; \ + dst[1] = src[0]; \ + dst[2] = 0.0f; \ +}\ + + + + + + +/// initialize matrix +#define IDENTIFY_MATRIX_3X3(m) \ +{ \ + m[0][0] = 1.0; \ + m[0][1] = 0.0; \ + m[0][2] = 0.0; \ + \ + m[1][0] = 0.0; \ + m[1][1] = 1.0; \ + m[1][2] = 0.0; \ + \ + m[2][0] = 0.0; \ + m[2][1] = 0.0; \ + m[2][2] = 1.0; \ +}\ + +/*! initialize matrix */ +#define IDENTIFY_MATRIX_4X4(m) \ +{ \ + m[0][0] = 1.0; \ + m[0][1] = 0.0; \ + m[0][2] = 0.0; \ + m[0][3] = 0.0; \ + \ + m[1][0] = 0.0; \ + m[1][1] = 1.0; \ + m[1][2] = 0.0; \ + m[1][3] = 0.0; \ + \ + m[2][0] = 0.0; \ + m[2][1] = 0.0; \ + m[2][2] = 1.0; \ + m[2][3] = 0.0; \ + \ + m[3][0] = 0.0; \ + m[3][1] = 0.0; \ + m[3][2] = 0.0; \ + m[3][3] = 1.0; \ +}\ + +/*! initialize matrix */ +#define ZERO_MATRIX_4X4(m) \ +{ \ + m[0][0] = 0.0; \ + m[0][1] = 0.0; \ + m[0][2] = 0.0; \ + m[0][3] = 0.0; \ + \ + m[1][0] = 0.0; \ + m[1][1] = 0.0; \ + m[1][2] = 0.0; \ + m[1][3] = 0.0; \ + \ + m[2][0] = 0.0; \ + m[2][1] = 0.0; \ + m[2][2] = 0.0; \ + m[2][3] = 0.0; \ + \ + m[3][0] = 0.0; \ + m[3][1] = 0.0; \ + m[3][2] = 0.0; \ + m[3][3] = 0.0; \ +}\ + +/*! matrix rotation X */ +#define ROTX_CS(m,cosine,sine) \ +{ \ + /* rotation about the x-axis */ \ + \ + m[0][0] = 1.0; \ + m[0][1] = 0.0; \ + m[0][2] = 0.0; \ + m[0][3] = 0.0; \ + \ + m[1][0] = 0.0; \ + m[1][1] = (cosine); \ + m[1][2] = (sine); \ + m[1][3] = 0.0; \ + \ + m[2][0] = 0.0; \ + m[2][1] = -(sine); \ + m[2][2] = (cosine); \ + m[2][3] = 0.0; \ + \ + m[3][0] = 0.0; \ + m[3][1] = 0.0; \ + m[3][2] = 0.0; \ + m[3][3] = 1.0; \ +}\ + +/*! matrix rotation Y */ +#define ROTY_CS(m,cosine,sine) \ +{ \ + /* rotation about the y-axis */ \ + \ + m[0][0] = (cosine); \ + m[0][1] = 0.0; \ + m[0][2] = -(sine); \ + m[0][3] = 0.0; \ + \ + m[1][0] = 0.0; \ + m[1][1] = 1.0; \ + m[1][2] = 0.0; \ + m[1][3] = 0.0; \ + \ + m[2][0] = (sine); \ + m[2][1] = 0.0; \ + m[2][2] = (cosine); \ + m[2][3] = 0.0; \ + \ + m[3][0] = 0.0; \ + m[3][1] = 0.0; \ + m[3][2] = 0.0; \ + m[3][3] = 1.0; \ +}\ + +/*! matrix rotation Z */ +#define ROTZ_CS(m,cosine,sine) \ +{ \ + /* rotation about the z-axis */ \ + \ + m[0][0] = (cosine); \ + m[0][1] = (sine); \ + m[0][2] = 0.0; \ + m[0][3] = 0.0; \ + \ + m[1][0] = -(sine); \ + m[1][1] = (cosine); \ + m[1][2] = 0.0; \ + m[1][3] = 0.0; \ + \ + m[2][0] = 0.0; \ + m[2][1] = 0.0; \ + m[2][2] = 1.0; \ + m[2][3] = 0.0; \ + \ + m[3][0] = 0.0; \ + m[3][1] = 0.0; \ + m[3][2] = 0.0; \ + m[3][3] = 1.0; \ +}\ + +/*! matrix copy */ +#define COPY_MATRIX_2X2(b,a) \ +{ \ + b[0][0] = a[0][0]; \ + b[0][1] = a[0][1]; \ + \ + b[1][0] = a[1][0]; \ + b[1][1] = a[1][1]; \ + \ +}\ + + +/*! matrix copy */ +#define COPY_MATRIX_2X3(b,a) \ +{ \ + b[0][0] = a[0][0]; \ + b[0][1] = a[0][1]; \ + b[0][2] = a[0][2]; \ + \ + b[1][0] = a[1][0]; \ + b[1][1] = a[1][1]; \ + b[1][2] = a[1][2]; \ +}\ + + +/*! matrix copy */ +#define COPY_MATRIX_3X3(b,a) \ +{ \ + b[0][0] = a[0][0]; \ + b[0][1] = a[0][1]; \ + b[0][2] = a[0][2]; \ + \ + b[1][0] = a[1][0]; \ + b[1][1] = a[1][1]; \ + b[1][2] = a[1][2]; \ + \ + b[2][0] = a[2][0]; \ + b[2][1] = a[2][1]; \ + b[2][2] = a[2][2]; \ +}\ + + +/*! matrix copy */ +#define COPY_MATRIX_4X4(b,a) \ +{ \ + b[0][0] = a[0][0]; \ + b[0][1] = a[0][1]; \ + b[0][2] = a[0][2]; \ + b[0][3] = a[0][3]; \ + \ + b[1][0] = a[1][0]; \ + b[1][1] = a[1][1]; \ + b[1][2] = a[1][2]; \ + b[1][3] = a[1][3]; \ + \ + b[2][0] = a[2][0]; \ + b[2][1] = a[2][1]; \ + b[2][2] = a[2][2]; \ + b[2][3] = a[2][3]; \ + \ + b[3][0] = a[3][0]; \ + b[3][1] = a[3][1]; \ + b[3][2] = a[3][2]; \ + b[3][3] = a[3][3]; \ +}\ + + +/*! matrix transpose */ +#define TRANSPOSE_MATRIX_2X2(b,a) \ +{ \ + b[0][0] = a[0][0]; \ + b[0][1] = a[1][0]; \ + \ + b[1][0] = a[0][1]; \ + b[1][1] = a[1][1]; \ +}\ + + +/*! matrix transpose */ +#define TRANSPOSE_MATRIX_3X3(b,a) \ +{ \ + b[0][0] = a[0][0]; \ + b[0][1] = a[1][0]; \ + b[0][2] = a[2][0]; \ + \ + b[1][0] = a[0][1]; \ + b[1][1] = a[1][1]; \ + b[1][2] = a[2][1]; \ + \ + b[2][0] = a[0][2]; \ + b[2][1] = a[1][2]; \ + b[2][2] = a[2][2]; \ +}\ + + +/*! matrix transpose */ +#define TRANSPOSE_MATRIX_4X4(b,a) \ +{ \ + b[0][0] = a[0][0]; \ + b[0][1] = a[1][0]; \ + b[0][2] = a[2][0]; \ + b[0][3] = a[3][0]; \ + \ + b[1][0] = a[0][1]; \ + b[1][1] = a[1][1]; \ + b[1][2] = a[2][1]; \ + b[1][3] = a[3][1]; \ + \ + b[2][0] = a[0][2]; \ + b[2][1] = a[1][2]; \ + b[2][2] = a[2][2]; \ + b[2][3] = a[3][2]; \ + \ + b[3][0] = a[0][3]; \ + b[3][1] = a[1][3]; \ + b[3][2] = a[2][3]; \ + b[3][3] = a[3][3]; \ +}\ + + +/*! multiply matrix by scalar */ +#define SCALE_MATRIX_2X2(b,s,a) \ +{ \ + b[0][0] = (s) * a[0][0]; \ + b[0][1] = (s) * a[0][1]; \ + \ + b[1][0] = (s) * a[1][0]; \ + b[1][1] = (s) * a[1][1]; \ +}\ + + +/*! multiply matrix by scalar */ +#define SCALE_MATRIX_3X3(b,s,a) \ +{ \ + b[0][0] = (s) * a[0][0]; \ + b[0][1] = (s) * a[0][1]; \ + b[0][2] = (s) * a[0][2]; \ + \ + b[1][0] = (s) * a[1][0]; \ + b[1][1] = (s) * a[1][1]; \ + b[1][2] = (s) * a[1][2]; \ + \ + b[2][0] = (s) * a[2][0]; \ + b[2][1] = (s) * a[2][1]; \ + b[2][2] = (s) * a[2][2]; \ +}\ + + +/*! multiply matrix by scalar */ +#define SCALE_MATRIX_4X4(b,s,a) \ +{ \ + b[0][0] = (s) * a[0][0]; \ + b[0][1] = (s) * a[0][1]; \ + b[0][2] = (s) * a[0][2]; \ + b[0][3] = (s) * a[0][3]; \ + \ + b[1][0] = (s) * a[1][0]; \ + b[1][1] = (s) * a[1][1]; \ + b[1][2] = (s) * a[1][2]; \ + b[1][3] = (s) * a[1][3]; \ + \ + b[2][0] = (s) * a[2][0]; \ + b[2][1] = (s) * a[2][1]; \ + b[2][2] = (s) * a[2][2]; \ + b[2][3] = (s) * a[2][3]; \ + \ + b[3][0] = s * a[3][0]; \ + b[3][1] = s * a[3][1]; \ + b[3][2] = s * a[3][2]; \ + b[3][3] = s * a[3][3]; \ +}\ + + +/*! multiply matrix by scalar */ +#define SCALE_VEC_MATRIX_2X2(b,svec,a) \ +{ \ + b[0][0] = svec[0] * a[0][0]; \ + b[1][0] = svec[0] * a[1][0]; \ + \ + b[0][1] = svec[1] * a[0][1]; \ + b[1][1] = svec[1] * a[1][1]; \ +}\ + + +/*! multiply matrix by scalar. Each columns is scaled by each scalar vector component */ +#define SCALE_VEC_MATRIX_3X3(b,svec,a) \ +{ \ + b[0][0] = svec[0] * a[0][0]; \ + b[1][0] = svec[0] * a[1][0]; \ + b[2][0] = svec[0] * a[2][0]; \ + \ + b[0][1] = svec[1] * a[0][1]; \ + b[1][1] = svec[1] * a[1][1]; \ + b[2][1] = svec[1] * a[2][1]; \ + \ + b[0][2] = svec[2] * a[0][2]; \ + b[1][2] = svec[2] * a[1][2]; \ + b[2][2] = svec[2] * a[2][2]; \ +}\ + + +/*! multiply matrix by scalar */ +#define SCALE_VEC_MATRIX_4X4(b,svec,a) \ +{ \ + b[0][0] = svec[0] * a[0][0]; \ + b[1][0] = svec[0] * a[1][0]; \ + b[2][0] = svec[0] * a[2][0]; \ + b[3][0] = svec[0] * a[3][0]; \ + \ + b[0][1] = svec[1] * a[0][1]; \ + b[1][1] = svec[1] * a[1][1]; \ + b[2][1] = svec[1] * a[2][1]; \ + b[3][1] = svec[1] * a[3][1]; \ + \ + b[0][2] = svec[2] * a[0][2]; \ + b[1][2] = svec[2] * a[1][2]; \ + b[2][2] = svec[2] * a[2][2]; \ + b[3][2] = svec[2] * a[3][2]; \ + \ + b[0][3] = svec[3] * a[0][3]; \ + b[1][3] = svec[3] * a[1][3]; \ + b[2][3] = svec[3] * a[2][3]; \ + b[3][3] = svec[3] * a[3][3]; \ +}\ + + +/*! multiply matrix by scalar */ +#define ACCUM_SCALE_MATRIX_2X2(b,s,a) \ +{ \ + b[0][0] += (s) * a[0][0]; \ + b[0][1] += (s) * a[0][1]; \ + \ + b[1][0] += (s) * a[1][0]; \ + b[1][1] += (s) * a[1][1]; \ +}\ + + +/*! multiply matrix by scalar */ +#define ACCUM_SCALE_MATRIX_3X3(b,s,a) \ +{ \ + b[0][0] += (s) * a[0][0]; \ + b[0][1] += (s) * a[0][1]; \ + b[0][2] += (s) * a[0][2]; \ + \ + b[1][0] += (s) * a[1][0]; \ + b[1][1] += (s) * a[1][1]; \ + b[1][2] += (s) * a[1][2]; \ + \ + b[2][0] += (s) * a[2][0]; \ + b[2][1] += (s) * a[2][1]; \ + b[2][2] += (s) * a[2][2]; \ +}\ + + +/*! multiply matrix by scalar */ +#define ACCUM_SCALE_MATRIX_4X4(b,s,a) \ +{ \ + b[0][0] += (s) * a[0][0]; \ + b[0][1] += (s) * a[0][1]; \ + b[0][2] += (s) * a[0][2]; \ + b[0][3] += (s) * a[0][3]; \ + \ + b[1][0] += (s) * a[1][0]; \ + b[1][1] += (s) * a[1][1]; \ + b[1][2] += (s) * a[1][2]; \ + b[1][3] += (s) * a[1][3]; \ + \ + b[2][0] += (s) * a[2][0]; \ + b[2][1] += (s) * a[2][1]; \ + b[2][2] += (s) * a[2][2]; \ + b[2][3] += (s) * a[2][3]; \ + \ + b[3][0] += (s) * a[3][0]; \ + b[3][1] += (s) * a[3][1]; \ + b[3][2] += (s) * a[3][2]; \ + b[3][3] += (s) * a[3][3]; \ +}\ + +/*! matrix product */ +/*! c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/ +#define MATRIX_PRODUCT_2X2(c,a,b) \ +{ \ + c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]; \ + c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]; \ + \ + c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]; \ + c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]; \ + \ +}\ + +/*! matrix product */ +/*! c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/ +#define MATRIX_PRODUCT_3X3(c,a,b) \ +{ \ + c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]; \ + c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1]; \ + c[0][2] = a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2]; \ + \ + c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]+a[1][2]*b[2][0]; \ + c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][2]*b[2][1]; \ + c[1][2] = a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2]; \ + \ + c[2][0] = a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0]; \ + c[2][1] = a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][2]*b[2][1]; \ + c[2][2] = a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2]; \ +}\ + + +/*! matrix product */ +/*! c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/ +#define MATRIX_PRODUCT_4X4(c,a,b) \ +{ \ + c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]+a[0][3]*b[3][0];\ + c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1]+a[0][3]*b[3][1];\ + c[0][2] = a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2]+a[0][3]*b[3][2];\ + c[0][3] = a[0][0]*b[0][3]+a[0][1]*b[1][3]+a[0][2]*b[2][3]+a[0][3]*b[3][3];\ + \ + c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]+a[1][2]*b[2][0]+a[1][3]*b[3][0];\ + c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][2]*b[2][1]+a[1][3]*b[3][1];\ + c[1][2] = a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2]+a[1][3]*b[3][2];\ + c[1][3] = a[1][0]*b[0][3]+a[1][1]*b[1][3]+a[1][2]*b[2][3]+a[1][3]*b[3][3];\ + \ + c[2][0] = a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0]+a[2][3]*b[3][0];\ + c[2][1] = a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][2]*b[2][1]+a[2][3]*b[3][1];\ + c[2][2] = a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2]+a[2][3]*b[3][2];\ + c[2][3] = a[2][0]*b[0][3]+a[2][1]*b[1][3]+a[2][2]*b[2][3]+a[2][3]*b[3][3];\ + \ + c[3][0] = a[3][0]*b[0][0]+a[3][1]*b[1][0]+a[3][2]*b[2][0]+a[3][3]*b[3][0];\ + c[3][1] = a[3][0]*b[0][1]+a[3][1]*b[1][1]+a[3][2]*b[2][1]+a[3][3]*b[3][1];\ + c[3][2] = a[3][0]*b[0][2]+a[3][1]*b[1][2]+a[3][2]*b[2][2]+a[3][3]*b[3][2];\ + c[3][3] = a[3][0]*b[0][3]+a[3][1]*b[1][3]+a[3][2]*b[2][3]+a[3][3]*b[3][3];\ +}\ + + +/*! matrix times vector */ +#define MAT_DOT_VEC_2X2(p,m,v) \ +{ \ + p[0] = m[0][0]*v[0] + m[0][1]*v[1]; \ + p[1] = m[1][0]*v[0] + m[1][1]*v[1]; \ +}\ + + +/*! matrix times vector */ +#define MAT_DOT_VEC_3X3(p,m,v) \ +{ \ + p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2]; \ + p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2]; \ + p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2]; \ +}\ + + +/*! matrix times vector +v is a vec4f +*/ +#define MAT_DOT_VEC_4X4(p,m,v) \ +{ \ + p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2] + m[0][3]*v[3]; \ + p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2] + m[1][3]*v[3]; \ + p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2] + m[2][3]*v[3]; \ + p[3] = m[3][0]*v[0] + m[3][1]*v[1] + m[3][2]*v[2] + m[3][3]*v[3]; \ +}\ + +/*! matrix times vector +v is a vec3f +and m is a mat4f
    +Last column is added as the position +*/ +#define MAT_DOT_VEC_3X4(p,m,v) \ +{ \ + p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2] + m[0][3]; \ + p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2] + m[1][3]; \ + p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2] + m[2][3]; \ +}\ + + +/*! vector transpose times matrix */ +/*! p[j] = v[0]*m[0][j] + v[1]*m[1][j] + v[2]*m[2][j]; */ +#define VEC_DOT_MAT_3X3(p,v,m) \ +{ \ + p[0] = v[0]*m[0][0] + v[1]*m[1][0] + v[2]*m[2][0]; \ + p[1] = v[0]*m[0][1] + v[1]*m[1][1] + v[2]*m[2][1]; \ + p[2] = v[0]*m[0][2] + v[1]*m[1][2] + v[2]*m[2][2]; \ +}\ + + +/*! affine matrix times vector */ +/** The matrix is assumed to be an affine matrix, with last two + * entries representing a translation */ +#define MAT_DOT_VEC_2X3(p,m,v) \ +{ \ + p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]; \ + p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]; \ +}\ + +//! Transform a plane +#define MAT_TRANSFORM_PLANE_4X4(pout,m,plane)\ +{ \ + pout[0] = m[0][0]*plane[0] + m[0][1]*plane[1] + m[0][2]*plane[2];\ + pout[1] = m[1][0]*plane[0] + m[1][1]*plane[1] + m[1][2]*plane[2];\ + pout[2] = m[2][0]*plane[0] + m[2][1]*plane[1] + m[2][2]*plane[2];\ + pout[3] = m[0][3]*pout[0] + m[1][3]*pout[1] + m[2][3]*pout[2] + plane[3];\ +}\ + + + +/** inverse transpose of matrix times vector + * + * This macro computes inverse transpose of matrix m, + * and multiplies vector v into it, to yeild vector p + * + * DANGER !!! Do Not use this on normal vectors!!! + * It will leave normals the wrong length !!! + * See macro below for use on normals. + */ +#define INV_TRANSP_MAT_DOT_VEC_2X2(p,m,v) \ +{ \ + GREAL det; \ + \ + det = m[0][0]*m[1][1] - m[0][1]*m[1][0]; \ + p[0] = m[1][1]*v[0] - m[1][0]*v[1]; \ + p[1] = - m[0][1]*v[0] + m[0][0]*v[1]; \ + \ + /* if matrix not singular, and not orthonormal, then renormalize */ \ + if ((det!=1.0f) && (det != 0.0f)) { \ + det = 1.0f / det; \ + p[0] *= det; \ + p[1] *= det; \ + } \ +}\ + + +/** transform normal vector by inverse transpose of matrix + * and then renormalize the vector + * + * This macro computes inverse transpose of matrix m, + * and multiplies vector v into it, to yeild vector p + * Vector p is then normalized. + */ +#define NORM_XFORM_2X2(p,m,v) \ +{ \ + GREAL len; \ + \ + /* do nothing if off-diagonals are zero and diagonals are \ + * equal */ \ + if ((m[0][1] != 0.0) || (m[1][0] != 0.0) || (m[0][0] != m[1][1])) { \ + p[0] = m[1][1]*v[0] - m[1][0]*v[1]; \ + p[1] = - m[0][1]*v[0] + m[0][0]*v[1]; \ + \ + len = p[0]*p[0] + p[1]*p[1]; \ + GIM_INV_SQRT(len,len); \ + p[0] *= len; \ + p[1] *= len; \ + } else { \ + VEC_COPY_2 (p, v); \ + } \ +}\ + + +/** outer product of vector times vector transpose + * + * The outer product of vector v and vector transpose t yeilds + * dyadic matrix m. + */ +#define OUTER_PRODUCT_2X2(m,v,t) \ +{ \ + m[0][0] = v[0] * t[0]; \ + m[0][1] = v[0] * t[1]; \ + \ + m[1][0] = v[1] * t[0]; \ + m[1][1] = v[1] * t[1]; \ +}\ + + +/** outer product of vector times vector transpose + * + * The outer product of vector v and vector transpose t yeilds + * dyadic matrix m. + */ +#define OUTER_PRODUCT_3X3(m,v,t) \ +{ \ + m[0][0] = v[0] * t[0]; \ + m[0][1] = v[0] * t[1]; \ + m[0][2] = v[0] * t[2]; \ + \ + m[1][0] = v[1] * t[0]; \ + m[1][1] = v[1] * t[1]; \ + m[1][2] = v[1] * t[2]; \ + \ + m[2][0] = v[2] * t[0]; \ + m[2][1] = v[2] * t[1]; \ + m[2][2] = v[2] * t[2]; \ +}\ + + +/** outer product of vector times vector transpose + * + * The outer product of vector v and vector transpose t yeilds + * dyadic matrix m. + */ +#define OUTER_PRODUCT_4X4(m,v,t) \ +{ \ + m[0][0] = v[0] * t[0]; \ + m[0][1] = v[0] * t[1]; \ + m[0][2] = v[0] * t[2]; \ + m[0][3] = v[0] * t[3]; \ + \ + m[1][0] = v[1] * t[0]; \ + m[1][1] = v[1] * t[1]; \ + m[1][2] = v[1] * t[2]; \ + m[1][3] = v[1] * t[3]; \ + \ + m[2][0] = v[2] * t[0]; \ + m[2][1] = v[2] * t[1]; \ + m[2][2] = v[2] * t[2]; \ + m[2][3] = v[2] * t[3]; \ + \ + m[3][0] = v[3] * t[0]; \ + m[3][1] = v[3] * t[1]; \ + m[3][2] = v[3] * t[2]; \ + m[3][3] = v[3] * t[3]; \ +}\ + + +/** outer product of vector times vector transpose + * + * The outer product of vector v and vector transpose t yeilds + * dyadic matrix m. + */ +#define ACCUM_OUTER_PRODUCT_2X2(m,v,t) \ +{ \ + m[0][0] += v[0] * t[0]; \ + m[0][1] += v[0] * t[1]; \ + \ + m[1][0] += v[1] * t[0]; \ + m[1][1] += v[1] * t[1]; \ +}\ + + +/** outer product of vector times vector transpose + * + * The outer product of vector v and vector transpose t yeilds + * dyadic matrix m. + */ +#define ACCUM_OUTER_PRODUCT_3X3(m,v,t) \ +{ \ + m[0][0] += v[0] * t[0]; \ + m[0][1] += v[0] * t[1]; \ + m[0][2] += v[0] * t[2]; \ + \ + m[1][0] += v[1] * t[0]; \ + m[1][1] += v[1] * t[1]; \ + m[1][2] += v[1] * t[2]; \ + \ + m[2][0] += v[2] * t[0]; \ + m[2][1] += v[2] * t[1]; \ + m[2][2] += v[2] * t[2]; \ +}\ + + +/** outer product of vector times vector transpose + * + * The outer product of vector v and vector transpose t yeilds + * dyadic matrix m. + */ +#define ACCUM_OUTER_PRODUCT_4X4(m,v,t) \ +{ \ + m[0][0] += v[0] * t[0]; \ + m[0][1] += v[0] * t[1]; \ + m[0][2] += v[0] * t[2]; \ + m[0][3] += v[0] * t[3]; \ + \ + m[1][0] += v[1] * t[0]; \ + m[1][1] += v[1] * t[1]; \ + m[1][2] += v[1] * t[2]; \ + m[1][3] += v[1] * t[3]; \ + \ + m[2][0] += v[2] * t[0]; \ + m[2][1] += v[2] * t[1]; \ + m[2][2] += v[2] * t[2]; \ + m[2][3] += v[2] * t[3]; \ + \ + m[3][0] += v[3] * t[0]; \ + m[3][1] += v[3] * t[1]; \ + m[3][2] += v[3] * t[2]; \ + m[3][3] += v[3] * t[3]; \ +}\ + + +/** determinant of matrix + * + * Computes determinant of matrix m, returning d + */ +#define DETERMINANT_2X2(d,m) \ +{ \ + d = m[0][0] * m[1][1] - m[0][1] * m[1][0]; \ +}\ + + +/** determinant of matrix + * + * Computes determinant of matrix m, returning d + */ +#define DETERMINANT_3X3(d,m) \ +{ \ + d = m[0][0] * (m[1][1]*m[2][2] - m[1][2] * m[2][1]); \ + d -= m[0][1] * (m[1][0]*m[2][2] - m[1][2] * m[2][0]); \ + d += m[0][2] * (m[1][0]*m[2][1] - m[1][1] * m[2][0]); \ +}\ + + +/** i,j,th cofactor of a 4x4 matrix + * + */ +#define COFACTOR_4X4_IJ(fac,m,i,j) \ +{ \ + GUINT __ii[4], __jj[4], __k; \ + \ + for (__k=0; __k +*/ +#define INV_MAT_DOT_VEC_3X3(p,m,v) \ +{ \ + p[0] = MAT_DOT_COL(m,v,0); \ + p[1] = MAT_DOT_COL(m,v,1); \ + p[2] = MAT_DOT_COL(m,v,2); \ +}\ + + + +#endif // GIM_VECTOR_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_math.h b/extern/bullet2/BulletCollision/Gimpact/gim_math.h new file mode 100644 index 00000000000..8b9e6806ef7 --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/gim_math.h @@ -0,0 +1,157 @@ +#ifndef GIM_MATH_H_INCLUDED +#define GIM_MATH_H_INCLUDED +/*! \file gim_math.h +\author Francisco Len Nßjera +*/ +/* +----------------------------------------------------------------------------- +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + This library is free software; you can redistribute it and/or + modify it under the terms of EITHER: + (1) The GNU Lesser General Public License as published by the Free + Software Foundation; either version 2.1 of the License, or (at + your option) any later version. The text of the GNU Lesser + General Public License is included with this library in the + file GIMPACT-LICENSE-LGPL.TXT. + (2) The BSD-style license that is included with this library in + the file GIMPACT-LICENSE-BSD.TXT. + (3) The zlib/libpng license that is included with this library in + the file GIMPACT-LICENSE-ZLIB.TXT. + + This library 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 files + GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. + +----------------------------------------------------------------------------- +*/ + +#include "LinearMath/btScalar.h" + + + +#define GREAL btScalar +#define GREAL2 double +#define GINT int +#define GUINT unsigned int +#define GSHORT short +#define GUSHORT unsigned short +#define GINT64 long long +#define GUINT64 unsigned long long + + + +#define G_PI 3.14159265358979f +#define G_HALF_PI 1.5707963f +//267948966 +#define G_TWO_PI 6.28318530f +//71795864 +#define G_ROOT3 1.73205f +#define G_ROOT2 1.41421f +#define G_UINT_INFINITY 0xffffffff //!< A very very high value +#define G_REAL_INFINITY FLT_MAX +#define G_SIGN_BITMASK 0x80000000 +#define G_EPSILON SIMD_EPSILON + + + +enum GIM_SCALAR_TYPES +{ + G_STYPE_REAL =0, + G_STYPE_REAL2, + G_STYPE_SHORT, + G_STYPE_USHORT, + G_STYPE_INT, + G_STYPE_UINT, + G_STYPE_INT64, + G_STYPE_UINT64 +}; + + + +#define G_DEGTORAD(X) ((X)*3.1415926f/180.0f) +#define G_RADTODEG(X) ((X)*180.0f/3.1415926f) + +//! Integer representation of a floating-point value. +#define GIM_IR(x) ((GUINT&)(x)) + +//! Signed integer representation of a floating-point value. +#define GIM_SIR(x) ((GINT&)(x)) + +//! Absolute integer representation of a floating-point value +#define GIM_AIR(x) (GIM_IR(x)&0x7fffffff) + +//! Floating-point representation of an integer value. +#define GIM_FR(x) ((GREAL&)(x)) + +#define GIM_MAX(a,b) (ab?b:a) + +#define GIM_MAX3(a,b,c) GIM_MAX(a,GIM_MAX(b,c)) +#define GIM_MIN3(a,b,c) GIM_MIN(a,GIM_MIN(b,c)) + +#define GIM_IS_ZERO(value) (value < G_EPSILON && value > -G_EPSILON) + +#define GIM_IS_NEGATIVE(value) (value <= -G_EPSILON) + +#define GIM_IS_POSISITVE(value) (value >= G_EPSILON) + +#define GIM_NEAR_EQUAL(v1,v2) GIM_IS_ZERO((v1-v2)) + +///returns a clamped number +#define GIM_CLAMP(number,minval,maxval) (numbermaxval?maxval:number)) + +#define GIM_GREATER(x, y) btFabs(x) > (y) + +///Swap numbers +#define GIM_SWAP_NUMBERS(a,b){ \ + a = a+b; \ + b = a-b; \ + a = a-b; \ +}\ + +#define GIM_INV_SQRT(va,isva)\ +{\ + if(va<=0.0000001f)\ + {\ + isva = G_REAL_INFINITY;\ + }\ + else\ + {\ + GREAL _x = va * 0.5f;\ + GUINT _y = 0x5f3759df - ( GIM_IR(va) >> 1);\ + isva = GIM_FR(_y);\ + isva = isva * ( 1.5f - ( _x * isva * isva ) );\ + }\ +}\ + +#define GIM_SQRT(va,sva)\ +{\ + GIM_INV_SQRT(va,sva);\ + sva = 1.0f/sva;\ +}\ + +//! Computes 1.0f / sqrtf(x). Comes from Quake3. See http://www.magic-software.com/3DGEDInvSqrt.html +inline GREAL gim_inv_sqrt(GREAL f) +{ + GREAL r; + GIM_INV_SQRT(f,r); + return r; +} + +inline GREAL gim_sqrt(GREAL f) +{ + GREAL r; + GIM_SQRT(f,r); + return r; +} + + + +#endif // GIM_MATH_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_memory.cpp b/extern/bullet2/BulletCollision/Gimpact/gim_memory.cpp new file mode 100644 index 00000000000..1636eb7867c --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/gim_memory.cpp @@ -0,0 +1,135 @@ +/* +----------------------------------------------------------------------------- +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + This library is free software; you can redistribute it and/or + modify it under the terms of EITHER: + (1) The GNU Lesser General Public License as published by the Free + Software Foundation; either version 2.1 of the License, or (at + your option) any later version. The text of the GNU Lesser + General Public License is included with this library in the + file GIMPACT-LICENSE-LGPL.TXT. + (2) The BSD-style license that is included with this library in + the file GIMPACT-LICENSE-BSD.TXT. + (3) The zlib/libpng license that is included with this library in + the file GIMPACT-LICENSE-ZLIB.TXT. + + This library 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 files + GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. + +----------------------------------------------------------------------------- +*/ + + +#include "gim_memory.h" +#include "stdlib.h" + +#ifdef GIM_SIMD_MEMORY +#include "LinearMath/btAlignedAllocator.h" +#endif + +static gim_alloc_function *g_allocfn = 0; +static gim_alloca_function *g_allocafn = 0; +static gim_realloc_function *g_reallocfn = 0; +static gim_free_function *g_freefn = 0; + +void gim_set_alloc_handler (gim_alloc_function *fn) +{ + g_allocfn = fn; +} + +void gim_set_alloca_handler (gim_alloca_function *fn) +{ + g_allocafn = fn; +} + +void gim_set_realloc_handler (gim_realloc_function *fn) +{ + g_reallocfn = fn; +} + +void gim_set_free_handler (gim_free_function *fn) +{ + g_freefn = fn; +} + +gim_alloc_function *gim_get_alloc_handler() +{ + return g_allocfn; +} + +gim_alloca_function *gim_get_alloca_handler() +{ + return g_allocafn; +} + + +gim_realloc_function *gim_get_realloc_handler () +{ + return g_reallocfn; +} + + +gim_free_function *gim_get_free_handler () +{ + return g_freefn; +} + + +void * gim_alloc(size_t size) +{ + void * ptr; + if (g_allocfn) + { + ptr = g_allocfn(size); + } + else + { +#ifdef GIM_SIMD_MEMORY + ptr = btAlignedAlloc(size,16); +#else + ptr = malloc(size); +#endif + } + return ptr; +} + +void * gim_alloca(size_t size) +{ + if (g_allocafn) return g_allocafn(size); else return gim_alloc(size); +} + + +void * gim_realloc(void *ptr, size_t oldsize, size_t newsize) +{ + void * newptr = gim_alloc(newsize); + size_t copysize = oldsize + +#ifdef PREFETCH +#include // for prefetch +#define pfval 64 +#define pfval2 128 +//! Prefetch 64 +#define pf(_x,_i) _mm_prefetch((void *)(_x + _i + pfval), 0) +//! Prefetch 128 +#define pf2(_x,_i) _mm_prefetch((void *)(_x + _i + pfval2), 0) +#else +//! Prefetch 64 +#define pf(_x,_i) +//! Prefetch 128 +#define pf2(_x,_i) +#endif + + +///Functions for manip packed arrays of numbers +#define GIM_COPY_ARRAYS(dest_array,source_array,element_count)\ +{\ + for (GUINT _i_=0;_i_=SIMD_T_SIZE) + { + *(ui_dst_ptr++) = *(ui_src_ptr++); + copysize-=SIMD_T_SIZE; + } + if(copysize==0) return; +*/ + + char * c_src_ptr = (char *)src; + char * c_dst_ptr = (char *)dst; + while(copysize>0) + { + *(c_dst_ptr++) = *(c_src_ptr++); + copysize--; + } + return; +#else + memcpy(dst,src,copysize); +#endif +} + + + +template +inline void gim_swap_elements(T* _array,size_t _i,size_t _j) +{ + T _e_tmp_ = _array[_i]; + _array[_i] = _array[_j]; + _array[_j] = _e_tmp_; +} + + +template +inline void gim_swap_elements_memcpy(T* _array,size_t _i,size_t _j) +{ + char _e_tmp_[sizeof(T)]; + gim_simd_memcpy(_e_tmp_,&_array[_i],sizeof(T)); + gim_simd_memcpy(&_array[_i],&_array[_j],sizeof(T)); + gim_simd_memcpy(&_array[_j],_e_tmp_,sizeof(T)); +} + +template +inline void gim_swap_elements_ptr(char * _array,size_t _i,size_t _j) +{ + char _e_tmp_[SIZE]; + _i*=SIZE; + _j*=SIZE; + gim_simd_memcpy(_e_tmp_,_array+_i,SIZE); + gim_simd_memcpy(_array+_i,_array+_j,SIZE); + gim_simd_memcpy(_array+_j,_e_tmp_,SIZE); +} + +#endif // GIM_MEMORY_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_radixsort.h b/extern/bullet2/BulletCollision/Gimpact/gim_radixsort.h new file mode 100644 index 00000000000..f7dadbbca93 --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/gim_radixsort.h @@ -0,0 +1,406 @@ +#ifndef GIM_RADIXSORT_H_INCLUDED +#define GIM_RADIXSORT_H_INCLUDED +/*! \file gim_radixsort.h +\author Francisco Len Nßjera. +Based on the work of Michael Herf : "fast floating-point radix sort" +Avaliable on http://www.stereopsis.com/radix.html +*/ +/* +----------------------------------------------------------------------------- +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + This library is free software; you can redistribute it and/or + modify it under the terms of EITHER: + (1) The GNU Lesser General Public License as published by the Free + Software Foundation; either version 2.1 of the License, or (at + your option) any later version. The text of the GNU Lesser + General Public License is included with this library in the + file GIMPACT-LICENSE-LGPL.TXT. + (2) The BSD-style license that is included with this library in + the file GIMPACT-LICENSE-BSD.TXT. + (3) The zlib/libpng license that is included with this library in + the file GIMPACT-LICENSE-ZLIB.TXT. + + This library 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 files + GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. + +----------------------------------------------------------------------------- +*/ + +#include "gim_memory.h" + +///Macros for sorting. +//! Prototype for comparators +class less_comparator +{ + public: + + template + inline int operator() ( const T& a, const Z& b ) + { + return ( ab?1:0)); + } +}; + +//! Prototype for comparators +class integer_comparator +{ + public: + + template + inline int operator() ( const T& a, const T& b ) + { + return (int)(a-b); + } +}; + +//!Prototype for getting the integer representation of an object +class uint_key_func +{ +public: + template + inline GUINT operator()( const T& a) + { + return (GUINT)a; + } +}; + + +//!Prototype for copying elements +class copy_elements_func +{ +public: + template + inline void operator()(T& a,T& b) + { + a = b; + } +}; + +//!Prototype for copying elements +class memcopy_elements_func +{ +public: + template + inline void operator()(T& a,T& b) + { + gim_simd_memcpy(&a,&b,sizeof(T)); + } +}; + + +//! @{ +struct GIM_RSORT_TOKEN +{ + GUINT m_key; + GUINT m_value; + GIM_RSORT_TOKEN() + { + } + GIM_RSORT_TOKEN(const GIM_RSORT_TOKEN& rtoken) + { + m_key = rtoken.m_key; + m_value = rtoken.m_value; + } + + inline bool operator <(const GIM_RSORT_TOKEN& other) const + { + return (m_key < other.m_key); + } + + inline bool operator >(const GIM_RSORT_TOKEN& other) const + { + return (m_key > other.m_key); + } +}; + +//! Prototype for comparators +class GIM_RSORT_TOKEN_COMPARATOR +{ + public: + + inline int operator()( const GIM_RSORT_TOKEN& a, const GIM_RSORT_TOKEN& b ) + { + return (int)((a.m_key) - (b.m_key)); + } +}; + + + +#define kHist 2048 +// ---- utils for accessing 11-bit quantities +#define D11_0(x) (x & 0x7FF) +#define D11_1(x) (x >> 11 & 0x7FF) +#define D11_2(x) (x >> 22 ) + + + +///Radix sort for unsigned integer keys +inline void gim_radix_sort_rtokens( + GIM_RSORT_TOKEN * array, + GIM_RSORT_TOKEN * sorted, GUINT element_count) +{ + GUINT i; + GUINT b0[kHist * 3]; + GUINT *b1 = b0 + kHist; + GUINT *b2 = b1 + kHist; + for (i = 0; i < kHist * 3; ++i) + { + b0[i] = 0; + } + GUINT fi; + GUINT pos; + for (i = 0; i < element_count; ++i) + { + fi = array[i].m_key; + b0[D11_0(fi)] ++; + b1[D11_1(fi)] ++; + b2[D11_2(fi)] ++; + } + { + GUINT sum0 = 0, sum1 = 0, sum2 = 0; + GUINT tsum; + for (i = 0; i < kHist; ++i) + { + tsum = b0[i] + sum0; + b0[i] = sum0 - 1; + sum0 = tsum; + tsum = b1[i] + sum1; + b1[i] = sum1 - 1; + sum1 = tsum; + tsum = b2[i] + sum2; + b2[i] = sum2 - 1; + sum2 = tsum; + } + } + for (i = 0; i < element_count; ++i) + { + fi = array[i].m_key; + pos = D11_0(fi); + pos = ++b0[pos]; + sorted[pos].m_key = array[i].m_key; + sorted[pos].m_value = array[i].m_value; + } + for (i = 0; i < element_count; ++i) + { + fi = sorted[i].m_key; + pos = D11_1(fi); + pos = ++b1[pos]; + array[pos].m_key = sorted[i].m_key; + array[pos].m_value = sorted[i].m_value; + } + for (i = 0; i < element_count; ++i) + { + fi = array[i].m_key; + pos = D11_2(fi); + pos = ++b2[pos]; + sorted[pos].m_key = array[i].m_key; + sorted[pos].m_value = array[i].m_value; + } +} + + + + +/// Get the sorted tokens from an array. For generic use. Tokens are IRR_RSORT_TOKEN +/*! +*\param array Array of elements to sort +*\param sorted_tokens Tokens of sorted elements +*\param element_count element count +*\param uintkey_macro Functor which retrieves the integer representation of an array element +*/ +template +void gim_radix_sort_array_tokens( + T* array , + GIM_RSORT_TOKEN * sorted_tokens, + GUINT element_count,GETKEY_CLASS uintkey_macro) +{ + GIM_RSORT_TOKEN * _unsorted = (GIM_RSORT_TOKEN *) gim_alloc(sizeof(GIM_RSORT_TOKEN)*element_count); + for (GUINT _i=0;_i +void gim_radix_sort( + T * array, GUINT element_count, + GETKEY_CLASS get_uintkey_macro, COPY_CLASS copy_elements_macro) +{ + GIM_RSORT_TOKEN * _sorted = (GIM_RSORT_TOKEN *) gim_alloc(sizeof(GIM_RSORT_TOKEN)*element_count); + gim_radix_sort_array_tokens(array,_sorted,element_count,get_uintkey_macro); + T * _original_array = (T *) gim_alloc(sizeof(T)*element_count); + gim_simd_memcpy(_original_array,array,sizeof(T)*element_count); + for (GUINT _i=0;_i +bool gim_binary_search_ex( + const T* _array, GUINT _start_i, + GUINT _end_i,GUINT & _result_index, + const KEYCLASS & _search_key, + COMP_CLASS _comp_macro) +{ + GUINT _k; + int _comp_result; + GUINT _i = _start_i; + GUINT _j = _end_i+1; + while (_i < _j) + { + _k = (_j+_i-1)/2; + _comp_result = _comp_macro(_array[_k], _search_key); + if (_comp_result == 0) + { + _result_index = _k; + return true; + } + else if (_comp_result < 0) + { + _i = _k+1; + } + else + { + _j = _k; + } + } + _result_index = _i; + return false; +} + + + +//! Failsafe Iterative binary search,Template version +/*! +If the element is not found, it returns the nearest upper element position, may be the further position after the last element. +\param _array +\param _start_i the beginning of the array +\param _end_i the ending index of the array +\param _search_key Value to find +\param _result_index the index of the found element, or if not found then it will get the index of the closest bigger value +\return true if found, else false +*/ +template +bool gim_binary_search( + const T*_array,GUINT _start_i, + GUINT _end_i,const T & _search_key, + GUINT & _result_index) +{ + GUINT _i = _start_i; + GUINT _j = _end_i+1; + GUINT _k; + while(_i < _j) + { + _k = (_j+_i-1)/2; + if(_array[_k]==_search_key) + { + _result_index = _k; + return true; + } + else if (_array[_k]<_search_key) + { + _i = _k+1; + } + else + { + _j = _k; + } + } + _result_index = _i; + return false; +} + + + +///heap sort from http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Sort/Heap/ +template +void gim_down_heap(T *pArr, GUINT k, GUINT n,COMP_CLASS CompareFunc) +{ + /* PRE: a[k+1..N] is a heap */ + /* POST: a[k..N] is a heap */ + + T temp = pArr[k - 1]; + /* k has child(s) */ + while (k <= n/2) + { + int child = 2*k; + + if ((child < (int)n) && CompareFunc(pArr[child - 1] , pArr[child])<0) + { + child++; + } + /* pick larger child */ + if (CompareFunc(temp , pArr[child - 1])<0) + { + /* move child up */ + pArr[k - 1] = pArr[child - 1]; + k = child; + } + else + { + break; + } + } + pArr[k - 1] = temp; +} /*downHeap*/ + + +template +void gim_heap_sort(T *pArr, GUINT element_count, COMP_CLASS CompareFunc) +{ + /* sort a[0..N-1], N.B. 0 to N-1 */ + GUINT k; + GUINT n = element_count; + for (k = n/2; k > 0; k--) + { + gim_down_heap(pArr, k, n, CompareFunc); + } + + /* a[1..N] is now a heap */ + while ( n>=2 ) + { + gim_swap_elements(pArr,0,n-1); /* largest of a[0..n-1] */ + --n; + /* restore a[1..i-1] heap */ + gim_down_heap(pArr, 1, n, CompareFunc); + } +} + + + + +#endif // GIM_RADIXSORT_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_tri_collision.cpp b/extern/bullet2/BulletCollision/Gimpact/gim_tri_collision.cpp new file mode 100644 index 00000000000..74d734146a7 --- /dev/null +++ b/extern/bullet2/BulletCollision/Gimpact/gim_tri_collision.cpp @@ -0,0 +1,640 @@ + +/*! \file gim_tri_collision.h +\author Francisco Len Nßjera +*/ +/* +----------------------------------------------------------------------------- +This source file is part of GIMPACT Library. + +For the latest info, see http://gimpact.sourceforge.net/ + +Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. +email: projectileman@yahoo.com + + This library is free software; you can redistribute it and/or + modify it under the terms of EITHER: + (1) The GNU Lesser General Public License as published by the Free + Software Foundation; either version 2.1 of the License, or (at + your option) any later version. The text of the GNU Lesser + General Public License is included with this library in the + file GIMPACT-LICENSE-LGPL.TXT. + (2) The BSD-style license that is included with this library in + the file GIMPACT-LICENSE-BSD.TXT. + (3) The zlib/libpng license that is included with this library in + the file GIMPACT-LICENSE-ZLIB.TXT. + + This library 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 files + GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. + +----------------------------------------------------------------------------- +*/ + +#include "gim_tri_collision.h" + + +#define TRI_LOCAL_EPSILON 0.000001f +#define MIN_EDGE_EDGE_DIS 0.00001f + + +class GIM_TRIANGLE_CALCULATION_CACHE +{ +public: + GREAL margin; + btVector3 tu_vertices[3]; + btVector3 tv_vertices[3]; + btVector4 tu_plane; + btVector4 tv_plane; + btVector3 closest_point_u; + btVector3 closest_point_v; + btVector3 edge_edge_dir; + btVector3 distances; + GREAL du[4]; + GREAL du0du1; + GREAL du0du2; + GREAL dv[4]; + GREAL dv0dv1; + GREAL dv0dv2; + btVector3 temp_points[MAX_TRI_CLIPPING]; + btVector3 temp_points1[MAX_TRI_CLIPPING]; + btVector3 contact_points[MAX_TRI_CLIPPING]; + + + + //! if returns false, the faces are paralele + SIMD_FORCE_INLINE bool compute_intervals( + const GREAL &D0, + const GREAL &D1, + const GREAL &D2, + const GREAL &D0D1, + const GREAL &D0D2, + GREAL & scale_edge0, + GREAL & scale_edge1, + GUINT &edge_index0, + GUINT &edge_index1) + { + if(D0D1>0.0f) + { + /* here we know that D0D2<=0.0 */ + /* that is D0, D1 are on the same side, D2 on the other or on the plane */ + scale_edge0 = -D2/(D0-D2); + scale_edge1 = -D1/(D2-D1); + edge_index0 = 2;edge_index1 = 1; + } + else if(D0D2>0.0f) + { + /* here we know that d0d1<=0.0 */ + scale_edge0 = -D0/(D1-D0); + scale_edge1 = -D1/(D2-D1); + edge_index0 = 0;edge_index1 = 1; + } + else if(D1*D2>0.0f || D0!=0.0f) + { + /* here we know that d0d1<=0.0 or that D0!=0.0 */ + scale_edge0 = -D0/(D1-D0); + scale_edge1 = -D2/(D0-D2); + edge_index0 = 0 ;edge_index1 = 2; + } + else + { + return false; + } + return true; + } + + + //! clip triangle + /*! + */ + SIMD_FORCE_INLINE GUINT clip_triangle( + const btVector4 & tri_plane, + const btVector3 * tripoints, + const btVector3 * srcpoints, + btVector3 * clip_points) + { + // edge 0 + + btVector4 edgeplane; + + EDGE_PLANE(tripoints[0],tripoints[1],tri_plane,edgeplane); + + GUINT clipped_count = PLANE_CLIP_TRIANGLE3D( + edgeplane,srcpoints[0],srcpoints[1],srcpoints[2],temp_points); + + if(clipped_count == 0) return 0; + + // edge 1 + + EDGE_PLANE(tripoints[1],tripoints[2],tri_plane,edgeplane); + + clipped_count = PLANE_CLIP_POLYGON3D( + edgeplane,temp_points,clipped_count,temp_points1); + + if(clipped_count == 0) return 0; + + // edge 2 + + EDGE_PLANE(tripoints[2],tripoints[0],tri_plane,edgeplane); + + clipped_count = PLANE_CLIP_POLYGON3D( + edgeplane,temp_points1,clipped_count,clip_points); + + return clipped_count; + + + /*GUINT i0 = (tri_plane.closestAxis()+1)%3; + GUINT i1 = (i0+1)%3; + // edge 0 + btVector3 temp_points[MAX_TRI_CLIPPING]; + btVector3 temp_points1[MAX_TRI_CLIPPING]; + + GUINT clipped_count= PLANE_CLIP_TRIANGLE_GENERIC( + 0,srcpoints[0],srcpoints[1],srcpoints[2],temp_points, + DISTANCE_EDGE(tripoints[0],tripoints[1],i0,i1)); + + + if(clipped_count == 0) return 0; + + // edge 1 + clipped_count = PLANE_CLIP_POLYGON_GENERIC( + 0,temp_points,clipped_count,temp_points1, + DISTANCE_EDGE(tripoints[1],tripoints[2],i0,i1)); + + if(clipped_count == 0) return 0; + + // edge 2 + clipped_count = PLANE_CLIP_POLYGON_GENERIC( + 0,temp_points1,clipped_count,clipped_points, + DISTANCE_EDGE(tripoints[2],tripoints[0],i0,i1)); + + return clipped_count;*/ + } + + SIMD_FORCE_INLINE void sort_isect( + GREAL & isect0,GREAL & isect1,GUINT &e0,GUINT &e1,btVector3 & vec0,btVector3 & vec1) + { + if(isect1=isect_v[1]) // face U casts face V + { + return 1; + } + else if(isect_v[0]<=isect_u[0]) // face V casts face U + { + return 2; + } + // closest points + closest_point_u = up_e1; + closest_point_v = vp_e0; + // calc edges and separation + + if(isect_u[1]+ MIN_EDGE_EDGE_DIS=isect_u[1]) // face V casts face U + { + return 2; + } + else if(isect_u[0]<=isect_v[0]) // face U casts face V + { + return 1; + } + // closest points + closest_point_u = up_e0; + closest_point_v = vp_e1; + // calc edges and separation + + if(isect_v[1]+MIN_EDGE_EDGE_DIS0.0f && du0du2>0.0f) // same sign on all of them + not equal 0 ? + { + if(du[0]<0) //we need test behind the triangle plane + { + distances[0] = GIM_MAX3(du[0],du[1],du[2]); + distances[0] = -distances[0]; + if(distances[0]>margin) return false; //never intersect + + //reorder triangle v + VEC_SWAP(tv_vertices[0],tv_vertices[1]); + VEC_SCALE_4(tv_plane,-1.0f,tv_plane); + } + else + { + distances[0] = GIM_MIN3(du[0],du[1],du[2]); + if(distances[0]>margin) return false; //never intersect + } + } + else + { + //Look if we need to invert the triangle + distances[0] = (du[0]+du[1]+du[2])/3.0f; //centroid + + if(distances[0]<0.0f) + { + //reorder triangle v + VEC_SWAP(tv_vertices[0],tv_vertices[1]); + VEC_SCALE_4(tv_plane,-1.0f,tv_plane); + + distances[0] = GIM_MAX3(du[0],du[1],du[2]); + distances[0] = -distances[0]; + } + else + { + distances[0] = GIM_MIN3(du[0],du[1],du[2]); + } + } + + + // plane U vs V points + + TRIANGLE_PLANE(tu_vertices[0],tu_vertices[1],tu_vertices[2],tu_plane); + + dv[0] = DISTANCE_PLANE_POINT(tu_plane,tv_vertices[0]); + dv[1] = DISTANCE_PLANE_POINT(tu_plane,tv_vertices[1]); + dv[2] = DISTANCE_PLANE_POINT(tu_plane,tv_vertices[2]); + + dv0dv1 = dv[0] * dv[1]; + dv0dv2 = dv[0] * dv[2]; + + + if(dv0dv1>0.0f && dv0dv2>0.0f) // same sign on all of them + not equal 0 ? + { + if(dv[0]<0) //we need test behind the triangle plane + { + distances[1] = GIM_MAX3(dv[0],dv[1],dv[2]); + distances[1] = -distances[1]; + if(distances[1]>margin) return false; //never intersect + + //reorder triangle u + VEC_SWAP(tu_vertices[0],tu_vertices[1]); + VEC_SCALE_4(tu_plane,-1.0f,tu_plane); + } + else + { + distances[1] = GIM_MIN3(dv[0],dv[1],dv[2]); + if(distances[1]>margin) return false; //never intersect + } + } + else + { + //Look if we need to invert the triangle + distances[1] = (dv[0]+dv[1]+dv[2])/3.0f; //centroid + + if(distances[1]<0.0f) + { + //reorder triangle v + VEC_SWAP(tu_vertices[0],tu_vertices[1]); + VEC_SCALE_4(tu_plane,-1.0f,tu_plane); + + distances[1] = GIM_MAX3(dv[0],dv[1],dv[2]); + distances[1] = -distances[1]; + } + else + { + distances[1] = GIM_MIN3(dv[0],dv[1],dv[2]); + } + } + + GUINT bl; + /* bl = cross_line_intersection_test(); + if(bl==3) + { + //take edge direction too + bl = distances.maxAxis(); + } + else + {*/ + bl = 0; + if(distances[0]margin) return false; + + contacts.m_penetration_depth = -distances[2] + margin; + contacts.m_points[0] = closest_point_v; + contacts.m_point_count = 1; + VEC_COPY(contacts.m_separating_normal,edge_edge_dir); + + return true; + } + + //clip face against other + + + GUINT point_count; + //TODO + if(bl == 0) //clip U points against V + { + point_count = clip_triangle(tv_plane,tv_vertices,tu_vertices,contact_points); + if(point_count == 0) return false; + contacts.merge_points(tv_plane,margin,contact_points,point_count); + } + else //clip V points against U + { + point_count = clip_triangle(tu_plane,tu_vertices,tv_vertices,contact_points); + if(point_count == 0) return false; + contacts.merge_points(tu_plane,margin,contact_points,point_count); + contacts.m_separating_normal *= -1.f; + } + if(contacts.m_point_count == 0) return false; + return true; + } + +}; + + +/*class GIM_TRIANGLE_CALCULATION_CACHE +{ +public: + GREAL margin; + GUINT clipped_count; + btVector3 tu_vertices[3]; + btVector3 tv_vertices[3]; + btVector3 temp_points[MAX_TRI_CLIPPING]; + btVector3 temp_points1[MAX_TRI_CLIPPING]; + btVector3 clipped_points[MAX_TRI_CLIPPING]; + GIM_TRIANGLE_CONTACT_DATA contacts1; + GIM_TRIANGLE_CONTACT_DATA contacts2; + + + //! clip triangle + GUINT clip_triangle( + const btVector4 & tri_plane, + const btVector3 * tripoints, + const btVector3 * srcpoints, + btVector3 * clipped_points) + { + // edge 0 + + btVector4 edgeplane; + + EDGE_PLANE(tripoints[0],tripoints[1],tri_plane,edgeplane); + + GUINT clipped_count = PLANE_CLIP_TRIANGLE3D( + edgeplane,srcpoints[0],srcpoints[1],srcpoints[2],temp_points); + + if(clipped_count == 0) return 0; + + // edge 1 + + EDGE_PLANE(tripoints[1],tripoints[2],tri_plane,edgeplane); + + clipped_count = PLANE_CLIP_POLYGON3D( + edgeplane,temp_points,clipped_count,temp_points1); + + if(clipped_count == 0) return 0; + + // edge 2 + + EDGE_PLANE(tripoints[2],tripoints[0],tri_plane,edgeplane); + + clipped_count = PLANE_CLIP_POLYGON3D( + edgeplane,temp_points1,clipped_count,clipped_points); + + return clipped_count; + } + + + + + //! collides only on one side + bool triangle_collision( + const btVector3 & u0, + const btVector3 & u1, + const btVector3 & u2, + GREAL margin_u, + const btVector3 & v0, + const btVector3 & v1, + const btVector3 & v2, + GREAL margin_v, + GIM_TRIANGLE_CONTACT_DATA & contacts) + { + + margin = margin_u + margin_v; + + + tu_vertices[0] = u0; + tu_vertices[1] = u1; + tu_vertices[2] = u2; + + tv_vertices[0] = v0; + tv_vertices[1] = v1; + tv_vertices[2] = v2; + + //create planes + // plane v vs U points + + + TRIANGLE_PLANE(tv_vertices[0],tv_vertices[1],tv_vertices[2],contacts1.m_separating_normal); + + clipped_count = clip_triangle( + contacts1.m_separating_normal,tv_vertices,tu_vertices,clipped_points); + + if(clipped_count == 0 ) + { + return false;//Reject + } + + //find most deep interval face1 + contacts1.merge_points(contacts1.m_separating_normal,margin,clipped_points,clipped_count); + if(contacts1.m_point_count == 0) return false; // too far + + //Normal pointing to triangle1 + //contacts1.m_separating_normal *= -1.f; + + //Clip tri1 by tri2 edges + + TRIANGLE_PLANE(tu_vertices[0],tu_vertices[1],tu_vertices[2],contacts2.m_separating_normal); + + clipped_count = clip_triangle( + contacts2.m_separating_normal,tu_vertices,tv_vertices,clipped_points); + + if(clipped_count == 0 ) + { + return false;//Reject + } + + //find most deep interval face1 + contacts2.merge_points(contacts2.m_separating_normal,margin,clipped_points,clipped_count); + if(contacts2.m_point_count == 0) return false; // too far + + contacts2.m_separating_normal *= -1.f; + + ////check most dir for contacts + if(contacts2.m_penetration_depth + SIMD_FORCE_INLINE void mergepoints_generic(const CLASS_PLANE & plane, + GREAL margin, const btVector3 * points, GUINT point_count, DISTANCE_FUNC distance_func) + { + m_point_count = 0; + m_penetration_depth= -1000.0f; + + GUINT point_indices[MAX_TRI_CLIPPING]; + + GUINT _k; + + for(_k=0;_k=0.0f) + { + if(_dist>m_penetration_depth) + { + m_penetration_depth = _dist; + point_indices[0] = _k; + m_point_count=1; + } + else if((_dist+G_EPSILON)>=m_penetration_depth) + { + point_indices[m_point_count] = _k; + m_point_count++; + } + } + } + + for( _k=0;_k u*axe1[i1] + ((vecproj[i2] - u*axe1[i2])/axe2[i2])*axe2[i1] = vecproj[i1] + + --> u*axe1[i1] + vecproj[i2]*axe2[i1]/axe2[i2] - u*axe1[i2]*axe2[i1]/axe2[i2] = vecproj[i1] + + --> u*(axe1[i1] - axe1[i2]*axe2[i1]/axe2[i2]) = vecproj[i1] - vecproj[i2]*axe2[i1]/axe2[i2] + + --> u*((axe1[i1]*axe2[i2] - axe1[i2]*axe2[i1])/axe2[i2]) = (vecproj[i1]*axe2[i2] - vecproj[i2]*axe2[i1])/axe2[i2] + + --> u*(axe1[i1]*axe2[i2] - axe1[i2]*axe2[i1]) = vecproj[i1]*axe2[i2] - vecproj[i2]*axe2[i1] + + --> u = (vecproj[i1]*axe2[i2] - vecproj[i2]*axe2[i1]) /(axe1[i1]*axe2[i2] - axe1[i2]*axe2[i1]) + +if 0.0<= u+v <=1.0 then they are inside of triangle + + \return false if the point is outside of triangle.This function doesn't take the margin + */ + SIMD_FORCE_INLINE bool get_uv_parameters( + const btVector3 & point, + const btVector3 & tri_plane, + GREAL & u, GREAL & v) const + { + btVector3 _axe1 = m_vertices[1]-m_vertices[0]; + btVector3 _axe2 = m_vertices[2]-m_vertices[0]; + btVector3 _vecproj = point - m_vertices[0]; + GUINT _i1 = (tri_plane.closestAxis()+1)%3; + GUINT _i2 = (_i1+1)%3; + if(btFabs(_axe2[_i2])G_EPSILON) + { + return false; + } + } + return true; + } + + //! is point in triangle beam? + /*! + Test if point is in triangle, with m_margin tolerance + */ + SIMD_FORCE_INLINE bool is_point_inside(const btVector3 & point, const btVector3 & tri_normal) const + { + //Test with edge 0 + btVector4 edge_plane; + this->get_edge_plane(0,tri_normal,edge_plane); + GREAL dist = DISTANCE_PLANE_POINT(edge_plane,point); + if(dist-m_margin>0.0f) return false; // outside plane + + this->get_edge_plane(1,tri_normal,edge_plane); + dist = DISTANCE_PLANE_POINT(edge_plane,point); + if(dist-m_margin>0.0f) return false; // outside plane + + this->get_edge_plane(2,tri_normal,edge_plane); + dist = DISTANCE_PLANE_POINT(edge_plane,point); + if(dist-m_margin>0.0f) return false; // outside plane + return true; + } + + + //! Bidireccional ray collision + SIMD_FORCE_INLINE bool ray_collision( + const btVector3 & vPoint, + const btVector3 & vDir, btVector3 & pout, btVector3 & triangle_normal, + GREAL & tparam, GREAL tmax = G_REAL_INFINITY) + { + btVector4 faceplane; + { + btVector3 dif1 = m_vertices[1] - m_vertices[0]; + btVector3 dif2 = m_vertices[2] - m_vertices[0]; + VEC_CROSS(faceplane,dif1,dif2); + faceplane[3] = m_vertices[0].dot(faceplane); + } + + GUINT res = LINE_PLANE_COLLISION(faceplane,vDir,vPoint,pout,tparam, btScalar(0), tmax); + if(res == 0) return false; + if(! is_point_inside(pout,faceplane)) return false; + + if(res==2) //invert normal + { + triangle_normal.setValue(-faceplane[0],-faceplane[1],-faceplane[2]); + } + else + { + triangle_normal.setValue(faceplane[0],faceplane[1],faceplane[2]); + } + + VEC_NORMALIZE(triangle_normal); + + return true; + } + + + //! one direccion ray collision + SIMD_FORCE_INLINE bool ray_collision_front_side( + const btVector3 & vPoint, + const btVector3 & vDir, btVector3 & pout, btVector3 & triangle_normal, + GREAL & tparam, GREAL tmax = G_REAL_INFINITY) + { + btVector4 faceplane; + { + btVector3 dif1 = m_vertices[1] - m_vertices[0]; + btVector3 dif2 = m_vertices[2] - m_vertices[0]; + VEC_CROSS(faceplane,dif1,dif2); + faceplane[3] = m_vertices[0].dot(faceplane); + } + + GUINT res = LINE_PLANE_COLLISION(faceplane,vDir,vPoint,pout,tparam, btScalar(0), tmax); + if(res != 1) return false; + + if(!is_point_inside(pout,faceplane)) return false; + + triangle_normal.setValue(faceplane[0],faceplane[1],faceplane[2]); + + VEC_NORMALIZE(triangle_normal); + + return true; + } + +}; + + + + +#endif // GIM_TRI_COLLISION_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp new file mode 100644 index 00000000000..9ee83e7d561 --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp @@ -0,0 +1,236 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btContinuousConvexCollision.h" +#include "BulletCollision/CollisionShapes/btConvexShape.h" +#include "BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h" +#include "LinearMath/btTransformUtil.h" +#include "BulletCollision/CollisionShapes/btSphereShape.h" + +#include "btGjkPairDetector.h" +#include "btPointCollector.h" + + + +btContinuousConvexCollision::btContinuousConvexCollision ( const btConvexShape* convexA,const btConvexShape* convexB,btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* penetrationDepthSolver) +:m_simplexSolver(simplexSolver), +m_penetrationDepthSolver(penetrationDepthSolver), +m_convexA(convexA),m_convexB(convexB) +{ +} + +/// This maximum should not be necessary. It allows for untested/degenerate cases in production code. +/// You don't want your game ever to lock-up. +#define MAX_ITERATIONS 64 + +bool btContinuousConvexCollision::calcTimeOfImpact( + const btTransform& fromA, + const btTransform& toA, + const btTransform& fromB, + const btTransform& toB, + CastResult& result) +{ + + m_simplexSolver->reset(); + + /// compute linear and angular velocity for this interval, to interpolate + btVector3 linVelA,angVelA,linVelB,angVelB; + btTransformUtil::calculateVelocity(fromA,toA,btScalar(1.),linVelA,angVelA); + btTransformUtil::calculateVelocity(fromB,toB,btScalar(1.),linVelB,angVelB); + + + btScalar boundingRadiusA = m_convexA->getAngularMotionDisc(); + btScalar boundingRadiusB = m_convexB->getAngularMotionDisc(); + + btScalar maxAngularProjectedVelocity = angVelA.length() * boundingRadiusA + angVelB.length() * boundingRadiusB; + btVector3 relLinVel = (linVelB-linVelA); + + btScalar relLinVelocLength = (linVelB-linVelA).length(); + + if ((relLinVelocLength+maxAngularProjectedVelocity) == 0.f) + return false; + + + btScalar radius = btScalar(0.001); + + btScalar lambda = btScalar(0.); + btVector3 v(1,0,0); + + int maxIter = MAX_ITERATIONS; + + btVector3 n; + n.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); + bool hasResult = false; + btVector3 c; + + btScalar lastLambda = lambda; + //btScalar epsilon = btScalar(0.001); + + int numIter = 0; + //first solution, using GJK + + + btTransform identityTrans; + identityTrans.setIdentity(); + + btSphereShape raySphere(btScalar(0.0)); + raySphere.setMargin(btScalar(0.)); + + +// result.drawCoordSystem(sphereTr); + + btPointCollector pointCollector1; + + { + + btGjkPairDetector gjk(m_convexA,m_convexB,m_convexA->getShapeType(),m_convexB->getShapeType(),m_convexA->getMargin(),m_convexB->getMargin(),m_simplexSolver,m_penetrationDepthSolver); + btGjkPairDetector::ClosestPointInput input; + + //we don't use margins during CCD + // gjk.setIgnoreMargin(true); + + input.m_transformA = fromA; + input.m_transformB = fromB; + gjk.getClosestPoints(input,pointCollector1,0); + + hasResult = pointCollector1.m_hasResult; + c = pointCollector1.m_pointInWorld; + } + + if (hasResult) + { + btScalar dist; + dist = pointCollector1.m_distance; + n = pointCollector1.m_normalOnBInWorld; + + btScalar projectedLinearVelocity = relLinVel.dot(n); + + //not close enough + while (dist > radius) + { + if (result.m_debugDrawer) + { + result.m_debugDrawer->drawSphere(c,0.2f,btVector3(1,1,1)); + } + numIter++; + if (numIter > maxIter) + { + return false; //todo: report a failure + } + btScalar dLambda = btScalar(0.); + + projectedLinearVelocity = relLinVel.dot(n); + + //calculate safe moving fraction from distance / (linear+rotational velocity) + + //btScalar clippedDist = GEN_min(angularConservativeRadius,dist); + //btScalar clippedDist = dist; + + //don't report time of impact for motion away from the contact normal (or causes minor penetration) + if ((projectedLinearVelocity+ maxAngularProjectedVelocity)<=SIMD_EPSILON) + return false; + + dLambda = dist / (projectedLinearVelocity+ maxAngularProjectedVelocity); + + + + lambda = lambda + dLambda; + + if (lambda > btScalar(1.)) + return false; + + if (lambda < btScalar(0.)) + return false; + + + //todo: next check with relative epsilon + if (lambda <= lastLambda) + { + return false; + //n.setValue(0,0,0); + break; + } + lastLambda = lambda; + + + + //interpolate to next lambda + btTransform interpolatedTransA,interpolatedTransB,relativeTrans; + + btTransformUtil::integrateTransform(fromA,linVelA,angVelA,lambda,interpolatedTransA); + btTransformUtil::integrateTransform(fromB,linVelB,angVelB,lambda,interpolatedTransB); + relativeTrans = interpolatedTransB.inverseTimes(interpolatedTransA); + + if (result.m_debugDrawer) + { + result.m_debugDrawer->drawSphere(interpolatedTransA.getOrigin(),0.2f,btVector3(1,0,0)); + } + + result.DebugDraw( lambda ); + + btPointCollector pointCollector; + btGjkPairDetector gjk(m_convexA,m_convexB,m_simplexSolver,m_penetrationDepthSolver); + btGjkPairDetector::ClosestPointInput input; + input.m_transformA = interpolatedTransA; + input.m_transformB = interpolatedTransB; + gjk.getClosestPoints(input,pointCollector,0); + if (pointCollector.m_hasResult) + { + if (pointCollector.m_distance < btScalar(0.)) + { + //degenerate ?! + result.m_fraction = lastLambda; + n = pointCollector.m_normalOnBInWorld; + result.m_normal=n;//.setValue(1,1,1);// = n; + result.m_hitPoint = pointCollector.m_pointInWorld; + return true; + } + c = pointCollector.m_pointInWorld; + n = pointCollector.m_normalOnBInWorld; + dist = pointCollector.m_distance; + } else + { + //?? + return false; + } + + + } + + if ((projectedLinearVelocity+ maxAngularProjectedVelocity)<=result.m_allowedPenetration)//SIMD_EPSILON) + return false; + + result.m_fraction = lambda; + result.m_normal = n; + result.m_hitPoint = c; + return true; + } + + return false; + +/* +//todo: + //if movement away from normal, discard result + btVector3 move = transBLocalTo.getOrigin() - transBLocalFrom.getOrigin(); + if (result.m_fraction < btScalar(1.)) + { + if (move.dot(result.m_normal) <= btScalar(0.)) + { + } + } +*/ + +} diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h new file mode 100644 index 00000000000..28c2b4d6156 --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h @@ -0,0 +1,52 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef CONTINUOUS_COLLISION_CONVEX_CAST_H +#define CONTINUOUS_COLLISION_CONVEX_CAST_H + +#include "btConvexCast.h" +#include "btSimplexSolverInterface.h" +class btConvexPenetrationDepthSolver; +class btConvexShape; + +/// btContinuousConvexCollision implements angular and linear time of impact for convex objects. +/// Based on Brian Mirtich's Conservative Advancement idea (PhD thesis). +/// Algorithm operates in worldspace, in order to keep inbetween motion globally consistent. +/// It uses GJK at the moment. Future improvement would use minkowski sum / supporting vertex, merging innerloops +class btContinuousConvexCollision : public btConvexCast +{ + btSimplexSolverInterface* m_simplexSolver; + btConvexPenetrationDepthSolver* m_penetrationDepthSolver; + const btConvexShape* m_convexA; + const btConvexShape* m_convexB; + + +public: + + btContinuousConvexCollision (const btConvexShape* shapeA,const btConvexShape* shapeB ,btSimplexSolverInterface* simplexSolver,btConvexPenetrationDepthSolver* penetrationDepthSolver); + + virtual bool calcTimeOfImpact( + const btTransform& fromA, + const btTransform& toA, + const btTransform& fromB, + const btTransform& toB, + CastResult& result); + + +}; + +#endif //CONTINUOUS_COLLISION_CONVEX_CAST_H + diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp new file mode 100644 index 00000000000..d2a1310b232 --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp @@ -0,0 +1,20 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btConvexCast.h" + +btConvexCast::~btConvexCast() +{ +} diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexCast.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexCast.h new file mode 100644 index 00000000000..b0bce341e41 --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexCast.h @@ -0,0 +1,73 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef CONVEX_CAST_H +#define CONVEX_CAST_H + +#include "LinearMath/btTransform.h" +#include "LinearMath/btVector3.h" +#include "LinearMath/btScalar.h" +class btMinkowskiSumShape; +#include "LinearMath/btIDebugDraw.h" + +/// btConvexCast is an interface for Casting +class btConvexCast +{ +public: + + + virtual ~btConvexCast(); + + ///RayResult stores the closest result + /// alternatively, add a callback method to decide about closest/all results + struct CastResult + { + //virtual bool addRayResult(const btVector3& normal,btScalar fraction) = 0; + + virtual void DebugDraw(btScalar fraction) {(void)fraction;} + virtual void drawCoordSystem(const btTransform& trans) {(void)trans;} + + CastResult() + :m_fraction(btScalar(BT_LARGE_FLOAT)), + m_debugDrawer(0), + m_allowedPenetration(btScalar(0)) + { + } + + + virtual ~CastResult() {}; + + btTransform m_hitTransformA; + btTransform m_hitTransformB; + btVector3 m_normal; + btVector3 m_hitPoint; + btScalar m_fraction; //input and output + btIDebugDraw* m_debugDrawer; + btScalar m_allowedPenetration; + + }; + + + /// cast a convex against another convex object + virtual bool calcTimeOfImpact( + const btTransform& fromA, + const btTransform& toA, + const btTransform& fromB, + const btTransform& toB, + CastResult& result) = 0; +}; + +#endif //CONVEX_CAST_H diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h new file mode 100644 index 00000000000..7e3fde8e291 --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h @@ -0,0 +1,42 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef __CONVEX_PENETRATION_DEPTH_H +#define __CONVEX_PENETRATION_DEPTH_H + +class btStackAlloc; +class btVector3; +#include "btSimplexSolverInterface.h" +class btConvexShape; +class btTransform; + +///ConvexPenetrationDepthSolver provides an interface for penetration depth calculation. +class btConvexPenetrationDepthSolver +{ +public: + + virtual ~btConvexPenetrationDepthSolver() {}; + virtual bool calcPenDepth( btSimplexSolverInterface& simplexSolver, + const btConvexShape* convexA,const btConvexShape* convexB, + const btTransform& transA,const btTransform& transB, + btVector3& v, btVector3& pa, btVector3& pb, + class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc + ) = 0; + + +}; +#endif //CONVEX_PENETRATION_DEPTH_H + diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h new file mode 100644 index 00000000000..bc711ad495c --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h @@ -0,0 +1,89 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef DISCRETE_COLLISION_DETECTOR1_INTERFACE_H +#define DISCRETE_COLLISION_DETECTOR1_INTERFACE_H +#include "LinearMath/btTransform.h" +#include "LinearMath/btVector3.h" +class btStackAlloc; + +/// This interface is made to be used by an iterative approach to do TimeOfImpact calculations +/// This interface allows to query for closest points and penetration depth between two (convex) objects +/// the closest point is on the second object (B), and the normal points from the surface on B towards A. +/// distance is between closest points on B and closest point on A. So you can calculate closest point on A +/// by taking closestPointInA = closestPointInB + m_distance * m_normalOnSurfaceB +struct btDiscreteCollisionDetectorInterface +{ + + struct Result + { + + virtual ~Result(){} + + ///setShapeIdentifiersA/B provides experimental support for per-triangle material / custom material combiner + virtual void setShapeIdentifiersA(int partId0,int index0)=0; + virtual void setShapeIdentifiersB(int partId1,int index1)=0; + virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth)=0; + }; + + struct ClosestPointInput + { + ClosestPointInput() + :m_maximumDistanceSquared(btScalar(BT_LARGE_FLOAT)), + m_stackAlloc(0) + { + } + + btTransform m_transformA; + btTransform m_transformB; + btScalar m_maximumDistanceSquared; + btStackAlloc* m_stackAlloc; + }; + + virtual ~btDiscreteCollisionDetectorInterface() {}; + + // + // give either closest points (distance > 0) or penetration (distance) + // the normal always points from B towards A + // + virtual void getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults=false) = 0; + +}; + +struct btStorageResult : public btDiscreteCollisionDetectorInterface::Result +{ + btVector3 m_normalOnSurfaceB; + btVector3 m_closestPointInB; + btScalar m_distance; //negative means penetration ! + + btStorageResult() : m_distance(btScalar(BT_LARGE_FLOAT)) + { + + } + virtual ~btStorageResult() {}; + + virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth) + { + if (depth < m_distance) + { + m_normalOnSurfaceB = normalOnBInWorld; + m_closestPointInB = pointInWorld; + m_distance = depth; + } + } +}; + +#endif //DISCRETE_COLLISION_DETECTOR_INTERFACE1_H diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp new file mode 100644 index 00000000000..bef697a0a11 --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp @@ -0,0 +1,176 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#include "btGjkConvexCast.h" +#include "BulletCollision/CollisionShapes/btSphereShape.h" +#include "btGjkPairDetector.h" +#include "btPointCollector.h" +#include "LinearMath/btTransformUtil.h" + +#ifdef BT_USE_DOUBLE_PRECISION +#define MAX_ITERATIONS 64 +#else +#define MAX_ITERATIONS 32 +#endif + +btGjkConvexCast::btGjkConvexCast(const btConvexShape* convexA,const btConvexShape* convexB,btSimplexSolverInterface* simplexSolver) +:m_simplexSolver(simplexSolver), +m_convexA(convexA), +m_convexB(convexB) +{ +} + +bool btGjkConvexCast::calcTimeOfImpact( + const btTransform& fromA, + const btTransform& toA, + const btTransform& fromB, + const btTransform& toB, + CastResult& result) +{ + + + m_simplexSolver->reset(); + + /// compute linear velocity for this interval, to interpolate + //assume no rotation/angular velocity, assert here? + btVector3 linVelA,linVelB; + linVelA = toA.getOrigin()-fromA.getOrigin(); + linVelB = toB.getOrigin()-fromB.getOrigin(); + + btScalar radius = btScalar(0.001); + btScalar lambda = btScalar(0.); + btVector3 v(1,0,0); + + int maxIter = MAX_ITERATIONS; + + btVector3 n; + n.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); + bool hasResult = false; + btVector3 c; + btVector3 r = (linVelA-linVelB); + + btScalar lastLambda = lambda; + //btScalar epsilon = btScalar(0.001); + + int numIter = 0; + //first solution, using GJK + + + btTransform identityTrans; + identityTrans.setIdentity(); + + +// result.drawCoordSystem(sphereTr); + + btPointCollector pointCollector; + + + btGjkPairDetector gjk(m_convexA,m_convexB,m_simplexSolver,0);//m_penetrationDepthSolver); + btGjkPairDetector::ClosestPointInput input; + + //we don't use margins during CCD + // gjk.setIgnoreMargin(true); + + input.m_transformA = fromA; + input.m_transformB = fromB; + gjk.getClosestPoints(input,pointCollector,0); + + hasResult = pointCollector.m_hasResult; + c = pointCollector.m_pointInWorld; + + if (hasResult) + { + btScalar dist; + dist = pointCollector.m_distance; + n = pointCollector.m_normalOnBInWorld; + + + + //not close enough + while (dist > radius) + { + numIter++; + if (numIter > maxIter) + { + return false; //todo: report a failure + } + btScalar dLambda = btScalar(0.); + + btScalar projectedLinearVelocity = r.dot(n); + + dLambda = dist / (projectedLinearVelocity); + + lambda = lambda - dLambda; + + if (lambda > btScalar(1.)) + return false; + + if (lambda < btScalar(0.)) + return false; + + //todo: next check with relative epsilon + if (lambda <= lastLambda) + { + return false; + //n.setValue(0,0,0); + break; + } + lastLambda = lambda; + + //interpolate to next lambda + result.DebugDraw( lambda ); + input.m_transformA.getOrigin().setInterpolate3(fromA.getOrigin(),toA.getOrigin(),lambda); + input.m_transformB.getOrigin().setInterpolate3(fromB.getOrigin(),toB.getOrigin(),lambda); + + gjk.getClosestPoints(input,pointCollector,0); + if (pointCollector.m_hasResult) + { + if (pointCollector.m_distance < btScalar(0.)) + { + result.m_fraction = lastLambda; + n = pointCollector.m_normalOnBInWorld; + result.m_normal=n; + result.m_hitPoint = pointCollector.m_pointInWorld; + return true; + } + c = pointCollector.m_pointInWorld; + n = pointCollector.m_normalOnBInWorld; + dist = pointCollector.m_distance; + } else + { + //?? + return false; + } + + } + + //is n normalized? + //don't report time of impact for motion away from the contact normal (or causes minor penetration) + if (n.dot(r)>=-result.m_allowedPenetration) + return false; + + result.m_fraction = lambda; + result.m_normal = n; + result.m_hitPoint = c; + return true; + } + + return false; + + +} + diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h new file mode 100644 index 00000000000..a977c9e83f7 --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h @@ -0,0 +1,50 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#ifndef GJK_CONVEX_CAST_H +#define GJK_CONVEX_CAST_H + +#include "BulletCollision/CollisionShapes/btCollisionMargin.h" + +#include "LinearMath/btVector3.h" +#include "btConvexCast.h" +class btConvexShape; +class btMinkowskiSumShape; +#include "btSimplexSolverInterface.h" + +///GjkConvexCast performs a raycast on a convex object using support mapping. +class btGjkConvexCast : public btConvexCast +{ + btSimplexSolverInterface* m_simplexSolver; + const btConvexShape* m_convexA; + const btConvexShape* m_convexB; + +public: + + btGjkConvexCast(const btConvexShape* convexA,const btConvexShape* convexB,btSimplexSolverInterface* simplexSolver); + + /// cast a convex against another convex object + virtual bool calcTimeOfImpact( + const btTransform& fromA, + const btTransform& toA, + const btTransform& fromB, + const btTransform& toB, + CastResult& result); + +}; + +#endif //GJK_CONVEX_CAST_H diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp new file mode 100644 index 00000000000..f74261d4b21 --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp @@ -0,0 +1,989 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2008 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the +use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not +claim that you wrote the original software. If you use this software in a +product, an acknowledgment in the product documentation would be appreciated +but is not required. +2. Altered source versions must be plainly marked as such, and must not be +misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +/* +GJK-EPA collision solver by Nathanael Presson, 2008 +*/ +#include "BulletCollision/CollisionShapes/btConvexInternalShape.h" +#include "BulletCollision/CollisionShapes/btSphereShape.h" +#include "btGjkEpa2.h" + +#if defined(DEBUG) || defined (_DEBUG) +#include //for debug printf +#ifdef __SPU__ +#include +#define printf spu_printf +#endif //__SPU__ +#endif + +namespace gjkepa2_impl +{ + + // Config + + /* GJK */ +#define GJK_MAX_ITERATIONS 128 +#define GJK_ACCURARY ((btScalar)0.0001) +#define GJK_MIN_DISTANCE ((btScalar)0.0001) +#define GJK_DUPLICATED_EPS ((btScalar)0.0001) +#define GJK_SIMPLEX2_EPS ((btScalar)0.0) +#define GJK_SIMPLEX3_EPS ((btScalar)0.0) +#define GJK_SIMPLEX4_EPS ((btScalar)0.0) + + /* EPA */ +#define EPA_MAX_VERTICES 64 +#define EPA_MAX_FACES (EPA_MAX_VERTICES*2) +#define EPA_MAX_ITERATIONS 255 +#define EPA_ACCURACY ((btScalar)0.0001) +#define EPA_FALLBACK (10*EPA_ACCURACY) +#define EPA_PLANE_EPS ((btScalar)0.00001) +#define EPA_INSIDE_EPS ((btScalar)0.01) + + + // Shorthands + typedef unsigned int U; + typedef unsigned char U1; + + // MinkowskiDiff + struct MinkowskiDiff + { + const btConvexShape* m_shapes[2]; + btMatrix3x3 m_toshape1; + btTransform m_toshape0; +#ifdef __SPU__ + bool m_enableMargin; +#else + btVector3 (btConvexShape::*Ls)(const btVector3&) const; +#endif//__SPU__ + + + MinkowskiDiff() + { + + } +#ifdef __SPU__ + void EnableMargin(bool enable) + { + m_enableMargin = enable; + } + inline btVector3 Support0(const btVector3& d) const + { + if (m_enableMargin) + { + return m_shapes[0]->localGetSupportVertexNonVirtual(d); + } else + { + return m_shapes[0]->localGetSupportVertexWithoutMarginNonVirtual(d); + } + } + inline btVector3 Support1(const btVector3& d) const + { + if (m_enableMargin) + { + return m_toshape0*(m_shapes[1]->localGetSupportVertexNonVirtual(m_toshape1*d)); + } else + { + return m_toshape0*(m_shapes[1]->localGetSupportVertexWithoutMarginNonVirtual(m_toshape1*d)); + } + } +#else + void EnableMargin(bool enable) + { + if(enable) + Ls=&btConvexShape::localGetSupportVertexNonVirtual; + else + Ls=&btConvexShape::localGetSupportVertexWithoutMarginNonVirtual; + } + inline btVector3 Support0(const btVector3& d) const + { + return(((m_shapes[0])->*(Ls))(d)); + } + inline btVector3 Support1(const btVector3& d) const + { + return(m_toshape0*((m_shapes[1])->*(Ls))(m_toshape1*d)); + } +#endif //__SPU__ + + inline btVector3 Support(const btVector3& d) const + { + return(Support0(d)-Support1(-d)); + } + btVector3 Support(const btVector3& d,U index) const + { + if(index) + return(Support1(d)); + else + return(Support0(d)); + } + }; + + typedef MinkowskiDiff tShape; + + + // GJK + struct GJK + { + /* Types */ + struct sSV + { + btVector3 d,w; + }; + struct sSimplex + { + sSV* c[4]; + btScalar p[4]; + U rank; + }; + struct eStatus { enum _ { + Valid, + Inside, + Failed };}; + /* Fields */ + tShape m_shape; + btVector3 m_ray; + btScalar m_distance; + sSimplex m_simplices[2]; + sSV m_store[4]; + sSV* m_free[4]; + U m_nfree; + U m_current; + sSimplex* m_simplex; + eStatus::_ m_status; + /* Methods */ + GJK() + { + Initialize(); + } + void Initialize() + { + m_ray = btVector3(0,0,0); + m_nfree = 0; + m_status = eStatus::Failed; + m_current = 0; + m_distance = 0; + } + eStatus::_ Evaluate(const tShape& shapearg,const btVector3& guess) + { + U iterations=0; + btScalar sqdist=0; + btScalar alpha=0; + btVector3 lastw[4]; + U clastw=0; + /* Initialize solver */ + m_free[0] = &m_store[0]; + m_free[1] = &m_store[1]; + m_free[2] = &m_store[2]; + m_free[3] = &m_store[3]; + m_nfree = 4; + m_current = 0; + m_status = eStatus::Valid; + m_shape = shapearg; + m_distance = 0; + /* Initialize simplex */ + m_simplices[0].rank = 0; + m_ray = guess; + const btScalar sqrl= m_ray.length2(); + appendvertice(m_simplices[0],sqrl>0?-m_ray:btVector3(1,0,0)); + m_simplices[0].p[0] = 1; + m_ray = m_simplices[0].c[0]->w; + sqdist = sqrl; + lastw[0] = + lastw[1] = + lastw[2] = + lastw[3] = m_ray; + /* Loop */ + do { + const U next=1-m_current; + sSimplex& cs=m_simplices[m_current]; + sSimplex& ns=m_simplices[next]; + /* Check zero */ + const btScalar rl=m_ray.length(); + if(rlw; + bool found=false; + for(U i=0;i<4;++i) + { + if((w-lastw[i]).length2()w, + cs.c[1]->w, + weights,mask);break; + case 3: sqdist=projectorigin( cs.c[0]->w, + cs.c[1]->w, + cs.c[2]->w, + weights,mask);break; + case 4: sqdist=projectorigin( cs.c[0]->w, + cs.c[1]->w, + cs.c[2]->w, + cs.c[3]->w, + weights,mask);break; + } + if(sqdist>=0) + {/* Valid */ + ns.rank = 0; + m_ray = btVector3(0,0,0); + m_current = next; + for(U i=0,ni=cs.rank;iw*weights[i]; + } + else + { + m_free[m_nfree++] = cs.c[i]; + } + } + if(mask==15) m_status=eStatus::Inside; + } + else + {/* Return old simplex */ + removevertice(m_simplices[m_current]); + break; + } + m_status=((++iterations)rank) + { + case 1: + { + for(U i=0;i<3;++i) + { + btVector3 axis=btVector3(0,0,0); + axis[i]=1; + appendvertice(*m_simplex, axis); + if(EncloseOrigin()) return(true); + removevertice(*m_simplex); + appendvertice(*m_simplex,-axis); + if(EncloseOrigin()) return(true); + removevertice(*m_simplex); + } + } + break; + case 2: + { + const btVector3 d=m_simplex->c[1]->w-m_simplex->c[0]->w; + for(U i=0;i<3;++i) + { + btVector3 axis=btVector3(0,0,0); + axis[i]=1; + const btVector3 p=btCross(d,axis); + if(p.length2()>0) + { + appendvertice(*m_simplex, p); + if(EncloseOrigin()) return(true); + removevertice(*m_simplex); + appendvertice(*m_simplex,-p); + if(EncloseOrigin()) return(true); + removevertice(*m_simplex); + } + } + } + break; + case 3: + { + const btVector3 n=btCross(m_simplex->c[1]->w-m_simplex->c[0]->w, + m_simplex->c[2]->w-m_simplex->c[0]->w); + if(n.length2()>0) + { + appendvertice(*m_simplex,n); + if(EncloseOrigin()) return(true); + removevertice(*m_simplex); + appendvertice(*m_simplex,-n); + if(EncloseOrigin()) return(true); + removevertice(*m_simplex); + } + } + break; + case 4: + { + if(btFabs(det( m_simplex->c[0]->w-m_simplex->c[3]->w, + m_simplex->c[1]->w-m_simplex->c[3]->w, + m_simplex->c[2]->w-m_simplex->c[3]->w))>0) + return(true); + } + break; + } + return(false); + } + /* Internals */ + void getsupport(const btVector3& d,sSV& sv) const + { + sv.d = d/d.length(); + sv.w = m_shape.Support(sv.d); + } + void removevertice(sSimplex& simplex) + { + m_free[m_nfree++]=simplex.c[--simplex.rank]; + } + void appendvertice(sSimplex& simplex,const btVector3& v) + { + simplex.p[simplex.rank]=0; + simplex.c[simplex.rank]=m_free[--m_nfree]; + getsupport(v,*simplex.c[simplex.rank++]); + } + static btScalar det(const btVector3& a,const btVector3& b,const btVector3& c) + { + return( a.y()*b.z()*c.x()+a.z()*b.x()*c.y()- + a.x()*b.z()*c.y()-a.y()*b.x()*c.z()+ + a.x()*b.y()*c.z()-a.z()*b.y()*c.x()); + } + static btScalar projectorigin( const btVector3& a, + const btVector3& b, + btScalar* w,U& m) + { + const btVector3 d=b-a; + const btScalar l=d.length2(); + if(l>GJK_SIMPLEX2_EPS) + { + const btScalar t(l>0?-btDot(a,d)/l:0); + if(t>=1) { w[0]=0;w[1]=1;m=2;return(b.length2()); } + else if(t<=0) { w[0]=1;w[1]=0;m=1;return(a.length2()); } + else { w[0]=1-(w[1]=t);m=3;return((a+d*t).length2()); } + } + return(-1); + } + static btScalar projectorigin( const btVector3& a, + const btVector3& b, + const btVector3& c, + btScalar* w,U& m) + { + static const U imd3[]={1,2,0}; + const btVector3* vt[]={&a,&b,&c}; + const btVector3 dl[]={a-b,b-c,c-a}; + const btVector3 n=btCross(dl[0],dl[1]); + const btScalar l=n.length2(); + if(l>GJK_SIMPLEX3_EPS) + { + btScalar mindist=-1; + btScalar subw[2]={0.f,0.f}; + U subm(0); + for(U i=0;i<3;++i) + { + if(btDot(*vt[i],btCross(dl[i],n))>0) + { + const U j=imd3[i]; + const btScalar subd(projectorigin(*vt[i],*vt[j],subw,subm)); + if((mindist<0)||(subd(((subm&1)?1<GJK_SIMPLEX4_EPS)) + { + btScalar mindist=-1; + btScalar subw[3]={0.f,0.f,0.f}; + U subm(0); + for(U i=0;i<3;++i) + { + const U j=imd3[i]; + const btScalar s=vl*btDot(d,btCross(dl[i],dl[j])); + if(s>0) + { + const btScalar subd=projectorigin(*vt[i],*vt[j],d,subw,subm); + if((mindist<0)||(subd((subm&1?1<e[ea]=(U1)eb;fa->f[ea]=fb; + fb->e[eb]=(U1)ea;fb->f[eb]=fa; + } + static inline void append(sList& list,sFace* face) + { + face->l[0] = 0; + face->l[1] = list.root; + if(list.root) list.root->l[0]=face; + list.root = face; + ++list.count; + } + static inline void remove(sList& list,sFace* face) + { + if(face->l[1]) face->l[1]->l[0]=face->l[0]; + if(face->l[0]) face->l[0]->l[1]=face->l[1]; + if(face==list.root) list.root=face->l[1]; + --list.count; + } + + + void Initialize() + { + m_status = eStatus::Failed; + m_normal = btVector3(0,0,0); + m_depth = 0; + m_nextsv = 0; + for(U i=0;i1)&&gjk.EncloseOrigin()) + { + + /* Clean up */ + while(m_hull.root) + { + sFace* f = m_hull.root; + remove(m_hull,f); + append(m_stock,f); + } + m_status = eStatus::Valid; + m_nextsv = 0; + /* Orient simplex */ + if(gjk.det( simplex.c[0]->w-simplex.c[3]->w, + simplex.c[1]->w-simplex.c[3]->w, + simplex.c[2]->w-simplex.c[3]->w)<0) + { + btSwap(simplex.c[0],simplex.c[1]); + btSwap(simplex.p[0],simplex.p[1]); + } + /* Build initial hull */ + sFace* tetra[]={newface(simplex.c[0],simplex.c[1],simplex.c[2],true), + newface(simplex.c[1],simplex.c[0],simplex.c[3],true), + newface(simplex.c[2],simplex.c[1],simplex.c[3],true), + newface(simplex.c[0],simplex.c[2],simplex.c[3],true)}; + if(m_hull.count==4) + { + sFace* best=findbest(); + sFace outer=*best; + U pass=0; + U iterations=0; + bind(tetra[0],0,tetra[1],0); + bind(tetra[0],1,tetra[2],0); + bind(tetra[0],2,tetra[3],0); + bind(tetra[1],1,tetra[3],2); + bind(tetra[1],2,tetra[2],1); + bind(tetra[2],2,tetra[3],1); + m_status=eStatus::Valid; + for(;iterationspass = (U1)(++pass); + gjk.getsupport(best->n,*w); + const btScalar wdist=btDot(best->n,w->w)-best->d; + if(wdist>EPA_ACCURACY) + { + for(U j=0;(j<3)&&valid;++j) + { + valid&=expand( pass,w, + best->f[j],best->e[j], + horizon); + } + if(valid&&(horizon.nf>=3)) + { + bind(horizon.cf,1,horizon.ff,2); + remove(m_hull,best); + append(m_stock,best); + best=findbest(); + if(best->p>=outer.p) outer=*best; + } else { m_status=eStatus::InvalidHull;break; } + } else { m_status=eStatus::AccuraryReached;break; } + } else { m_status=eStatus::OutOfVertices;break; } + } + const btVector3 projection=outer.n*outer.d; + m_normal = outer.n; + m_depth = outer.d; + m_result.rank = 3; + m_result.c[0] = outer.c[0]; + m_result.c[1] = outer.c[1]; + m_result.c[2] = outer.c[2]; + m_result.p[0] = btCross( outer.c[1]->w-projection, + outer.c[2]->w-projection).length(); + m_result.p[1] = btCross( outer.c[2]->w-projection, + outer.c[0]->w-projection).length(); + m_result.p[2] = btCross( outer.c[0]->w-projection, + outer.c[1]->w-projection).length(); + const btScalar sum=m_result.p[0]+m_result.p[1]+m_result.p[2]; + m_result.p[0] /= sum; + m_result.p[1] /= sum; + m_result.p[2] /= sum; + return(m_status); + } + } + /* Fallback */ + m_status = eStatus::FallBack; + m_normal = -guess; + const btScalar nl=m_normal.length(); + if(nl>0) + m_normal = m_normal/nl; + else + m_normal = btVector3(1,0,0); + m_depth = 0; + m_result.rank=1; + m_result.c[0]=simplex.c[0]; + m_result.p[0]=1; + return(m_status); + } + sFace* newface(sSV* a,sSV* b,sSV* c,bool forced) + { + if(m_stock.root) + { + sFace* face=m_stock.root; + remove(m_stock,face); + append(m_hull,face); + face->pass = 0; + face->c[0] = a; + face->c[1] = b; + face->c[2] = c; + face->n = btCross(b->w-a->w,c->w-a->w); + const btScalar l=face->n.length(); + const bool v=l>EPA_ACCURACY; + face->p = btMin(btMin( + btDot(a->w,btCross(face->n,a->w-b->w)), + btDot(b->w,btCross(face->n,b->w-c->w))), + btDot(c->w,btCross(face->n,c->w-a->w))) / + (v?l:1); + face->p = face->p>=-EPA_INSIDE_EPS?0:face->p; + if(v) + { + face->d = btDot(a->w,face->n)/l; + face->n /= l; + if(forced||(face->d>=-EPA_PLANE_EPS)) + { + return(face); + } else m_status=eStatus::NonConvex; + } else m_status=eStatus::Degenerated; + remove(m_hull,face); + append(m_stock,face); + return(0); + } + m_status=m_stock.root?eStatus::OutOfVertices:eStatus::OutOfFaces; + return(0); + } + sFace* findbest() + { + sFace* minf=m_hull.root; + btScalar mind=minf->d*minf->d; + btScalar maxp=minf->p; + for(sFace* f=minf->l[1];f;f=f->l[1]) + { + const btScalar sqd=f->d*f->d; + if((f->p>=maxp)&&(sqdp; + } + } + return(minf); + } + bool expand(U pass,sSV* w,sFace* f,U e,sHorizon& horizon) + { + static const U i1m3[]={1,2,0}; + static const U i2m3[]={2,0,1}; + if(f->pass!=pass) + { + const U e1=i1m3[e]; + if((btDot(f->n,w->w)-f->d)<-EPA_PLANE_EPS) + { + sFace* nf=newface(f->c[e1],f->c[e],w,false); + if(nf) + { + bind(nf,0,f,e); + if(horizon.cf) bind(horizon.cf,1,nf,2); else horizon.ff=nf; + horizon.cf=nf; + ++horizon.nf; + return(true); + } + } + else + { + const U e2=i2m3[e]; + f->pass = (U1)pass; + if( expand(pass,w,f->f[e1],f->e[e1],horizon)&& + expand(pass,w,f->f[e2],f->e[e2],horizon)) + { + remove(m_hull,f); + append(m_stock,f); + return(true); + } + } + } + return(false); + } + + }; + + // + static void Initialize( const btConvexShape* shape0,const btTransform& wtrs0, + const btConvexShape* shape1,const btTransform& wtrs1, + btGjkEpaSolver2::sResults& results, + tShape& shape, + bool withmargins) + { + /* Results */ + results.witnesses[0] = + results.witnesses[1] = btVector3(0,0,0); + results.status = btGjkEpaSolver2::sResults::Separated; + /* Shape */ + shape.m_shapes[0] = shape0; + shape.m_shapes[1] = shape1; + shape.m_toshape1 = wtrs1.getBasis().transposeTimes(wtrs0.getBasis()); + shape.m_toshape0 = wtrs0.inverseTimes(wtrs1); + shape.EnableMargin(withmargins); + } + +} + +// +// Api +// + +using namespace gjkepa2_impl; + +// +int btGjkEpaSolver2::StackSizeRequirement() +{ + return(sizeof(GJK)+sizeof(EPA)); +} + +// +bool btGjkEpaSolver2::Distance( const btConvexShape* shape0, + const btTransform& wtrs0, + const btConvexShape* shape1, + const btTransform& wtrs1, + const btVector3& guess, + sResults& results) +{ + tShape shape; + Initialize(shape0,wtrs0,shape1,wtrs1,results,shape,false); + GJK gjk; + GJK::eStatus::_ gjk_status=gjk.Evaluate(shape,guess); + if(gjk_status==GJK::eStatus::Valid) + { + btVector3 w0=btVector3(0,0,0); + btVector3 w1=btVector3(0,0,0); + for(U i=0;irank;++i) + { + const btScalar p=gjk.m_simplex->p[i]; + w0+=shape.Support( gjk.m_simplex->c[i]->d,0)*p; + w1+=shape.Support(-gjk.m_simplex->c[i]->d,1)*p; + } + results.witnesses[0] = wtrs0*w0; + results.witnesses[1] = wtrs0*w1; + results.normal = w0-w1; + results.distance = results.normal.length(); + results.normal /= results.distance>GJK_MIN_DISTANCE?results.distance:1; + return(true); + } + else + { + results.status = gjk_status==GJK::eStatus::Inside? + sResults::Penetrating : + sResults::GJK_Failed ; + return(false); + } +} + +// +bool btGjkEpaSolver2::Penetration( const btConvexShape* shape0, + const btTransform& wtrs0, + const btConvexShape* shape1, + const btTransform& wtrs1, + const btVector3& guess, + sResults& results, + bool usemargins) +{ + tShape shape; + Initialize(shape0,wtrs0,shape1,wtrs1,results,shape,usemargins); + GJK gjk; + GJK::eStatus::_ gjk_status=gjk.Evaluate(shape,-guess); + switch(gjk_status) + { + case GJK::eStatus::Inside: + { + EPA epa; + EPA::eStatus::_ epa_status=epa.Evaluate(gjk,-guess); + if(epa_status!=EPA::eStatus::Failed) + { + btVector3 w0=btVector3(0,0,0); + for(U i=0;id,0)*epa.m_result.p[i]; + } + results.status = sResults::Penetrating; + results.witnesses[0] = wtrs0*w0; + results.witnesses[1] = wtrs0*(w0-epa.m_normal*epa.m_depth); + results.normal = -epa.m_normal; + results.distance = -epa.m_depth; + return(true); + } else results.status=sResults::EPA_Failed; + } + break; + case GJK::eStatus::Failed: + results.status=sResults::GJK_Failed; + break; + default: + { + } + } + return(false); +} + +#ifndef __SPU__ +// +btScalar btGjkEpaSolver2::SignedDistance(const btVector3& position, + btScalar margin, + const btConvexShape* shape0, + const btTransform& wtrs0, + sResults& results) +{ + tShape shape; + btSphereShape shape1(margin); + btTransform wtrs1(btQuaternion(0,0,0,1),position); + Initialize(shape0,wtrs0,&shape1,wtrs1,results,shape,false); + GJK gjk; + GJK::eStatus::_ gjk_status=gjk.Evaluate(shape,btVector3(1,1,1)); + if(gjk_status==GJK::eStatus::Valid) + { + btVector3 w0=btVector3(0,0,0); + btVector3 w1=btVector3(0,0,0); + for(U i=0;irank;++i) + { + const btScalar p=gjk.m_simplex->p[i]; + w0+=shape.Support( gjk.m_simplex->c[i]->d,0)*p; + w1+=shape.Support(-gjk.m_simplex->c[i]->d,1)*p; + } + results.witnesses[0] = wtrs0*w0; + results.witnesses[1] = wtrs0*w1; + const btVector3 delta= results.witnesses[1]- + results.witnesses[0]; + const btScalar margin= shape0->getMarginNonVirtual()+ + shape1.getMarginNonVirtual(); + const btScalar length= delta.length(); + results.normal = delta/length; + results.witnesses[0] += results.normal*margin; + return(length-margin); + } + else + { + if(gjk_status==GJK::eStatus::Inside) + { + if(Penetration(shape0,wtrs0,&shape1,wtrs1,gjk.m_ray,results)) + { + const btVector3 delta= results.witnesses[0]- + results.witnesses[1]; + const btScalar length= delta.length(); + if (length >= SIMD_EPSILON) + results.normal = delta/length; + return(-length); + } + } + } + return(SIMD_INFINITY); +} + +// +bool btGjkEpaSolver2::SignedDistance(const btConvexShape* shape0, + const btTransform& wtrs0, + const btConvexShape* shape1, + const btTransform& wtrs1, + const btVector3& guess, + sResults& results) +{ + if(!Distance(shape0,wtrs0,shape1,wtrs1,guess,results)) + return(Penetration(shape0,wtrs0,shape1,wtrs1,guess,results,false)); + else + return(true); +} +#endif //__SPU__ + +/* Symbols cleanup */ + +#undef GJK_MAX_ITERATIONS +#undef GJK_ACCURARY +#undef GJK_MIN_DISTANCE +#undef GJK_DUPLICATED_EPS +#undef GJK_SIMPLEX2_EPS +#undef GJK_SIMPLEX3_EPS +#undef GJK_SIMPLEX4_EPS + +#undef EPA_MAX_VERTICES +#undef EPA_MAX_FACES +#undef EPA_MAX_ITERATIONS +#undef EPA_ACCURACY +#undef EPA_FALLBACK +#undef EPA_PLANE_EPS +#undef EPA_INSIDE_EPS diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h new file mode 100644 index 00000000000..2296527d7db --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h @@ -0,0 +1,73 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2008 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the +use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not +claim that you wrote the original software. If you use this software in a +product, an acknowledgment in the product documentation would be appreciated +but is not required. +2. Altered source versions must be plainly marked as such, and must not be +misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +/* +GJK-EPA collision solver by Nathanael Presson, 2008 +*/ +#ifndef _68DA1F85_90B7_4bb0_A705_83B4040A75C6_ +#define _68DA1F85_90B7_4bb0_A705_83B4040A75C6_ +#include "BulletCollision/CollisionShapes/btConvexShape.h" + +///btGjkEpaSolver contributed under zlib by Nathanael Presson +struct btGjkEpaSolver2 +{ +struct sResults + { + enum eStatus + { + Separated, /* Shapes doesnt penetrate */ + Penetrating, /* Shapes are penetrating */ + GJK_Failed, /* GJK phase fail, no big issue, shapes are probably just 'touching' */ + EPA_Failed /* EPA phase fail, bigger problem, need to save parameters, and debug */ + } status; + btVector3 witnesses[2]; + btVector3 normal; + btScalar distance; + }; + +static int StackSizeRequirement(); + +static bool Distance( const btConvexShape* shape0,const btTransform& wtrs0, + const btConvexShape* shape1,const btTransform& wtrs1, + const btVector3& guess, + sResults& results); + +static bool Penetration(const btConvexShape* shape0,const btTransform& wtrs0, + const btConvexShape* shape1,const btTransform& wtrs1, + const btVector3& guess, + sResults& results, + bool usemargins=true); +#ifndef __SPU__ +static btScalar SignedDistance( const btVector3& position, + btScalar margin, + const btConvexShape* shape, + const btTransform& wtrs, + sResults& results); + +static bool SignedDistance( const btConvexShape* shape0,const btTransform& wtrs0, + const btConvexShape* shape1,const btTransform& wtrs1, + const btVector3& guess, + sResults& results); +#endif //__SPU__ + +}; + +#endif diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp new file mode 100644 index 00000000000..c6dc3f3a672 --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp @@ -0,0 +1,66 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +EPA Copyright (c) Ricardo Padrela 2006 + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "BulletCollision/CollisionShapes/btConvexShape.h" +#include "btGjkEpaPenetrationDepthSolver.h" + + +#include "BulletCollision/NarrowPhaseCollision/btGjkEpa2.h" + +bool btGjkEpaPenetrationDepthSolver::calcPenDepth( btSimplexSolverInterface& simplexSolver, + const btConvexShape* pConvexA, const btConvexShape* pConvexB, + const btTransform& transformA, const btTransform& transformB, + btVector3& v, btVector3& wWitnessOnA, btVector3& wWitnessOnB, + class btIDebugDraw* debugDraw, btStackAlloc* stackAlloc ) +{ + + (void)debugDraw; + (void)v; + (void)simplexSolver; + +// const btScalar radialmargin(btScalar(0.)); + + btVector3 guessVector(transformA.getOrigin()-transformB.getOrigin()); + btGjkEpaSolver2::sResults results; + + + if(btGjkEpaSolver2::Penetration(pConvexA,transformA, + pConvexB,transformB, + guessVector,results)) + + { + // debugDraw->drawLine(results.witnesses[1],results.witnesses[1]+results.normal,btVector3(255,0,0)); + //resultOut->addContactPoint(results.normal,results.witnesses[1],-results.depth); + wWitnessOnA = results.witnesses[0]; + wWitnessOnB = results.witnesses[1]; + v = results.normal; + return true; + } else + { + if(btGjkEpaSolver2::Distance(pConvexA,transformA,pConvexB,transformB,guessVector,results)) + { + wWitnessOnA = results.witnesses[0]; + wWitnessOnB = results.witnesses[1]; + v = results.normal; + return false; + } + } + + return false; +} + + diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h new file mode 100644 index 00000000000..a49689a1501 --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h @@ -0,0 +1,43 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +EPA Copyright (c) Ricardo Padrela 2006 + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ +#ifndef BT_GJP_EPA_PENETRATION_DEPTH_H +#define BT_GJP_EPA_PENETRATION_DEPTH_H + +#include "btConvexPenetrationDepthSolver.h" + +///EpaPenetrationDepthSolver uses the Expanding Polytope Algorithm to +///calculate the penetration depth between two convex shapes. +class btGjkEpaPenetrationDepthSolver : public btConvexPenetrationDepthSolver +{ + public : + + btGjkEpaPenetrationDepthSolver() + { + } + + bool calcPenDepth( btSimplexSolverInterface& simplexSolver, + const btConvexShape* pConvexA, const btConvexShape* pConvexB, + const btTransform& transformA, const btTransform& transformB, + btVector3& v, btVector3& wWitnessOnA, btVector3& wWitnessOnB, + class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc ); + + private : + +}; + +#endif // BT_GJP_EPA_PENETRATION_DEPTH_H + diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp new file mode 100644 index 00000000000..1a561957368 --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp @@ -0,0 +1,456 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btGjkPairDetector.h" +#include "BulletCollision/CollisionShapes/btConvexShape.h" +#include "BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h" +#include "BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h" + + + +#if defined(DEBUG) || defined (_DEBUG) +//#define TEST_NON_VIRTUAL 1 +#include //for debug printf +#ifdef __SPU__ +#include +#define printf spu_printf +//#define DEBUG_SPU_COLLISION_DETECTION 1 +#endif //__SPU__ +#endif + +//must be above the machine epsilon +#define REL_ERROR2 btScalar(1.0e-6) + +//temp globals, to improve GJK/EPA/penetration calculations +int gNumDeepPenetrationChecks = 0; +int gNumGjkChecks = 0; + + +btGjkPairDetector::btGjkPairDetector(const btConvexShape* objectA,const btConvexShape* objectB,btSimplexSolverInterface* simplexSolver,btConvexPenetrationDepthSolver* penetrationDepthSolver) +:m_cachedSeparatingAxis(btScalar(0.),btScalar(1.),btScalar(0.)), +m_penetrationDepthSolver(penetrationDepthSolver), +m_simplexSolver(simplexSolver), +m_minkowskiA(objectA), +m_minkowskiB(objectB), +m_shapeTypeA(objectA->getShapeType()), +m_shapeTypeB(objectB->getShapeType()), +m_marginA(objectA->getMargin()), +m_marginB(objectB->getMargin()), +m_ignoreMargin(false), +m_lastUsedMethod(-1), +m_catchDegeneracies(1) +{ +} +btGjkPairDetector::btGjkPairDetector(const btConvexShape* objectA,const btConvexShape* objectB,int shapeTypeA,int shapeTypeB,btScalar marginA, btScalar marginB, btSimplexSolverInterface* simplexSolver,btConvexPenetrationDepthSolver* penetrationDepthSolver) +:m_cachedSeparatingAxis(btScalar(0.),btScalar(1.),btScalar(0.)), +m_penetrationDepthSolver(penetrationDepthSolver), +m_simplexSolver(simplexSolver), +m_minkowskiA(objectA), +m_minkowskiB(objectB), +m_shapeTypeA(shapeTypeA), +m_shapeTypeB(shapeTypeB), +m_marginA(marginA), +m_marginB(marginB), +m_ignoreMargin(false), +m_lastUsedMethod(-1), +m_catchDegeneracies(1) +{ +} + +void btGjkPairDetector::getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults) +{ + (void)swapResults; + + getClosestPointsNonVirtual(input,output,debugDraw); +} + +#ifdef __SPU__ +void btGjkPairDetector::getClosestPointsNonVirtual(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw) +#else +void btGjkPairDetector::getClosestPointsNonVirtual(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw) +#endif +{ + m_cachedSeparatingDistance = 0.f; + + btScalar distance=btScalar(0.); + btVector3 normalInB(btScalar(0.),btScalar(0.),btScalar(0.)); + btVector3 pointOnA,pointOnB; + btTransform localTransA = input.m_transformA; + btTransform localTransB = input.m_transformB; + btVector3 positionOffset = (localTransA.getOrigin() + localTransB.getOrigin()) * btScalar(0.5); + localTransA.getOrigin() -= positionOffset; + localTransB.getOrigin() -= positionOffset; + + bool check2d = m_minkowskiA->isConvex2d() && m_minkowskiB->isConvex2d(); + + btScalar marginA = m_marginA; + btScalar marginB = m_marginB; + + gNumGjkChecks++; + +#ifdef DEBUG_SPU_COLLISION_DETECTION + spu_printf("inside gjk\n"); +#endif + //for CCD we don't use margins + if (m_ignoreMargin) + { + marginA = btScalar(0.); + marginB = btScalar(0.); +#ifdef DEBUG_SPU_COLLISION_DETECTION + spu_printf("ignoring margin\n"); +#endif + } + + m_curIter = 0; + int gGjkMaxIter = 1000;//this is to catch invalid input, perhaps check for #NaN? + m_cachedSeparatingAxis.setValue(0,1,0); + + bool isValid = false; + bool checkSimplex = false; + bool checkPenetration = true; + m_degenerateSimplex = 0; + + m_lastUsedMethod = -1; + + { + btScalar squaredDistance = BT_LARGE_FLOAT; + btScalar delta = btScalar(0.); + + btScalar margin = marginA + marginB; + + + + m_simplexSolver->reset(); + + for ( ; ; ) + //while (true) + { + + btVector3 seperatingAxisInA = (-m_cachedSeparatingAxis)* input.m_transformA.getBasis(); + btVector3 seperatingAxisInB = m_cachedSeparatingAxis* input.m_transformB.getBasis(); + +#if 1 + + btVector3 pInA = m_minkowskiA->localGetSupportVertexWithoutMarginNonVirtual(seperatingAxisInA); + btVector3 qInB = m_minkowskiB->localGetSupportVertexWithoutMarginNonVirtual(seperatingAxisInB); + +// btVector3 pInA = localGetSupportingVertexWithoutMargin(m_shapeTypeA, m_minkowskiA, seperatingAxisInA,input.m_convexVertexData[0]);//, &featureIndexA); +// btVector3 qInB = localGetSupportingVertexWithoutMargin(m_shapeTypeB, m_minkowskiB, seperatingAxisInB,input.m_convexVertexData[1]);//, &featureIndexB); + +#else +#ifdef __SPU__ + btVector3 pInA = m_minkowskiA->localGetSupportVertexWithoutMarginNonVirtual(seperatingAxisInA); + btVector3 qInB = m_minkowskiB->localGetSupportVertexWithoutMarginNonVirtual(seperatingAxisInB); +#else + btVector3 pInA = m_minkowskiA->localGetSupportingVertexWithoutMargin(seperatingAxisInA); + btVector3 qInB = m_minkowskiB->localGetSupportingVertexWithoutMargin(seperatingAxisInB); +#ifdef TEST_NON_VIRTUAL + btVector3 pInAv = m_minkowskiA->localGetSupportingVertexWithoutMargin(seperatingAxisInA); + btVector3 qInBv = m_minkowskiB->localGetSupportingVertexWithoutMargin(seperatingAxisInB); + btAssert((pInAv-pInA).length() < 0.0001); + btAssert((qInBv-qInB).length() < 0.0001); +#endif // +#endif //__SPU__ +#endif + + + btVector3 pWorld = localTransA(pInA); + btVector3 qWorld = localTransB(qInB); + +#ifdef DEBUG_SPU_COLLISION_DETECTION + spu_printf("got local supporting vertices\n"); +#endif + + if (check2d) + { + pWorld[2] = 0.f; + qWorld[2] = 0.f; + } + + btVector3 w = pWorld - qWorld; + delta = m_cachedSeparatingAxis.dot(w); + + // potential exit, they don't overlap + if ((delta > btScalar(0.0)) && (delta * delta > squaredDistance * input.m_maximumDistanceSquared)) + { + m_degenerateSimplex = 10; + checkSimplex=true; + //checkPenetration = false; + break; + } + + //exit 0: the new point is already in the simplex, or we didn't come any closer + if (m_simplexSolver->inSimplex(w)) + { + m_degenerateSimplex = 1; + checkSimplex = true; + break; + } + // are we getting any closer ? + btScalar f0 = squaredDistance - delta; + btScalar f1 = squaredDistance * REL_ERROR2; + + if (f0 <= f1) + { + if (f0 <= btScalar(0.)) + { + m_degenerateSimplex = 2; + } else + { + m_degenerateSimplex = 11; + } + checkSimplex = true; + break; + } + +#ifdef DEBUG_SPU_COLLISION_DETECTION + spu_printf("addVertex 1\n"); +#endif + //add current vertex to simplex + m_simplexSolver->addVertex(w, pWorld, qWorld); +#ifdef DEBUG_SPU_COLLISION_DETECTION + spu_printf("addVertex 2\n"); +#endif + btVector3 newCachedSeparatingAxis; + + //calculate the closest point to the origin (update vector v) + if (!m_simplexSolver->closest(newCachedSeparatingAxis)) + { + m_degenerateSimplex = 3; + checkSimplex = true; + break; + } + + if(newCachedSeparatingAxis.length2()previousSquaredDistance) + { + m_degenerateSimplex = 7; + squaredDistance = previousSquaredDistance; + checkSimplex = false; + break; + } +#endif // + + m_cachedSeparatingAxis = newCachedSeparatingAxis; + + //redundant m_simplexSolver->compute_points(pointOnA, pointOnB); + + //are we getting any closer ? + if (previousSquaredDistance - squaredDistance <= SIMD_EPSILON * previousSquaredDistance) + { + m_simplexSolver->backup_closest(m_cachedSeparatingAxis); + checkSimplex = true; + m_degenerateSimplex = 12; + + break; + } + + //degeneracy, this is typically due to invalid/uninitialized worldtransforms for a btCollisionObject + if (m_curIter++ > gGjkMaxIter) + { + #if defined(DEBUG) || defined (_DEBUG) || defined (DEBUG_SPU_COLLISION_DETECTION) + + printf("btGjkPairDetector maxIter exceeded:%i\n",m_curIter); + printf("sepAxis=(%f,%f,%f), squaredDistance = %f, shapeTypeA=%i,shapeTypeB=%i\n", + m_cachedSeparatingAxis.getX(), + m_cachedSeparatingAxis.getY(), + m_cachedSeparatingAxis.getZ(), + squaredDistance, + m_minkowskiA->getShapeType(), + m_minkowskiB->getShapeType()); + + #endif + break; + + } + + + bool check = (!m_simplexSolver->fullSimplex()); + //bool check = (!m_simplexSolver->fullSimplex() && squaredDistance > SIMD_EPSILON * m_simplexSolver->maxVertex()); + + if (!check) + { + //do we need this backup_closest here ? + m_simplexSolver->backup_closest(m_cachedSeparatingAxis); + m_degenerateSimplex = 13; + break; + } + } + + if (checkSimplex) + { + m_simplexSolver->compute_points(pointOnA, pointOnB); + normalInB = pointOnA-pointOnB; + btScalar lenSqr =m_cachedSeparatingAxis.length2(); + + //valid normal + if (lenSqr < 0.0001) + { + m_degenerateSimplex = 5; + } + if (lenSqr > SIMD_EPSILON*SIMD_EPSILON) + { + btScalar rlen = btScalar(1.) / btSqrt(lenSqr ); + normalInB *= rlen; //normalize + btScalar s = btSqrt(squaredDistance); + + btAssert(s > btScalar(0.0)); + pointOnA -= m_cachedSeparatingAxis * (marginA / s); + pointOnB += m_cachedSeparatingAxis * (marginB / s); + distance = ((btScalar(1.)/rlen) - margin); + isValid = true; + + m_lastUsedMethod = 1; + } else + { + m_lastUsedMethod = 2; + } + } + + bool catchDegeneratePenetrationCase = + (m_catchDegeneracies && m_penetrationDepthSolver && m_degenerateSimplex && ((distance+margin) < 0.01)); + + //if (checkPenetration && !isValid) + if (checkPenetration && (!isValid || catchDegeneratePenetrationCase )) + { + //penetration case + + //if there is no way to handle penetrations, bail out + if (m_penetrationDepthSolver) + { + // Penetration depth case. + btVector3 tmpPointOnA,tmpPointOnB; + + gNumDeepPenetrationChecks++; + m_cachedSeparatingAxis.setZero(); + + bool isValid2 = m_penetrationDepthSolver->calcPenDepth( + *m_simplexSolver, + m_minkowskiA,m_minkowskiB, + localTransA,localTransB, + m_cachedSeparatingAxis, tmpPointOnA, tmpPointOnB, + debugDraw,input.m_stackAlloc + ); + + + if (isValid2) + { + btVector3 tmpNormalInB = tmpPointOnB-tmpPointOnA; + btScalar lenSqr = tmpNormalInB.length2(); + if (lenSqr <= (SIMD_EPSILON*SIMD_EPSILON)) + { + tmpNormalInB = m_cachedSeparatingAxis; + lenSqr = m_cachedSeparatingAxis.length2(); + } + + if (lenSqr > (SIMD_EPSILON*SIMD_EPSILON)) + { + tmpNormalInB /= btSqrt(lenSqr); + btScalar distance2 = -(tmpPointOnA-tmpPointOnB).length(); + //only replace valid penetrations when the result is deeper (check) + if (!isValid || (distance2 < distance)) + { + distance = distance2; + pointOnA = tmpPointOnA; + pointOnB = tmpPointOnB; + normalInB = tmpNormalInB; + isValid = true; + m_lastUsedMethod = 3; + } else + { + m_lastUsedMethod = 8; + } + } else + { + m_lastUsedMethod = 9; + } + } else + + { + ///this is another degenerate case, where the initial GJK calculation reports a degenerate case + ///EPA reports no penetration, and the second GJK (using the supporting vector without margin) + ///reports a valid positive distance. Use the results of the second GJK instead of failing. + ///thanks to Jacob.Langford for the reproduction case + ///http://code.google.com/p/bullet/issues/detail?id=250 + + + if (m_cachedSeparatingAxis.length2() > btScalar(0.)) + { + btScalar distance2 = (tmpPointOnA-tmpPointOnB).length()-margin; + //only replace valid distances when the distance is less + if (!isValid || (distance2 < distance)) + { + distance = distance2; + pointOnA = tmpPointOnA; + pointOnB = tmpPointOnB; + pointOnA -= m_cachedSeparatingAxis * marginA ; + pointOnB += m_cachedSeparatingAxis * marginB ; + normalInB = m_cachedSeparatingAxis; + normalInB.normalize(); + isValid = true; + m_lastUsedMethod = 6; + } else + { + m_lastUsedMethod = 5; + } + } + } + + } + + } + } + + + + if (isValid && ((distance < 0) || (distance*distance < input.m_maximumDistanceSquared))) + { +#if 0 +///some debugging +// if (check2d) + { + printf("n = %2.3f,%2.3f,%2.3f. ",normalInB[0],normalInB[1],normalInB[2]); + printf("distance = %2.3f exit=%d deg=%d\n",distance,m_lastUsedMethod,m_degenerateSimplex); + } +#endif + + m_cachedSeparatingAxis = normalInB; + m_cachedSeparatingDistance = distance; + + output.addContactPoint( + normalInB, + pointOnB+positionOffset, + distance); + + } + + +} + + + + + diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h new file mode 100644 index 00000000000..cc6287c86b0 --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h @@ -0,0 +1,103 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + + +#ifndef GJK_PAIR_DETECTOR_H +#define GJK_PAIR_DETECTOR_H + +#include "btDiscreteCollisionDetectorInterface.h" +#include "BulletCollision/CollisionShapes/btCollisionMargin.h" + +class btConvexShape; +#include "btSimplexSolverInterface.h" +class btConvexPenetrationDepthSolver; + +/// btGjkPairDetector uses GJK to implement the btDiscreteCollisionDetectorInterface +class btGjkPairDetector : public btDiscreteCollisionDetectorInterface +{ + + + btVector3 m_cachedSeparatingAxis; + btConvexPenetrationDepthSolver* m_penetrationDepthSolver; + btSimplexSolverInterface* m_simplexSolver; + const btConvexShape* m_minkowskiA; + const btConvexShape* m_minkowskiB; + int m_shapeTypeA; + int m_shapeTypeB; + btScalar m_marginA; + btScalar m_marginB; + + bool m_ignoreMargin; + btScalar m_cachedSeparatingDistance; + + +public: + + //some debugging to fix degeneracy problems + int m_lastUsedMethod; + int m_curIter; + int m_degenerateSimplex; + int m_catchDegeneracies; + + + btGjkPairDetector(const btConvexShape* objectA,const btConvexShape* objectB,btSimplexSolverInterface* simplexSolver,btConvexPenetrationDepthSolver* penetrationDepthSolver); + btGjkPairDetector(const btConvexShape* objectA,const btConvexShape* objectB,int shapeTypeA,int shapeTypeB,btScalar marginA, btScalar marginB, btSimplexSolverInterface* simplexSolver,btConvexPenetrationDepthSolver* penetrationDepthSolver); + virtual ~btGjkPairDetector() {}; + + virtual void getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults=false); + + void getClosestPointsNonVirtual(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw); + + + void setMinkowskiA(btConvexShape* minkA) + { + m_minkowskiA = minkA; + } + + void setMinkowskiB(btConvexShape* minkB) + { + m_minkowskiB = minkB; + } + void setCachedSeperatingAxis(const btVector3& seperatingAxis) + { + m_cachedSeparatingAxis = seperatingAxis; + } + + const btVector3& getCachedSeparatingAxis() const + { + return m_cachedSeparatingAxis; + } + btScalar getCachedSeparatingDistance() const + { + return m_cachedSeparatingDistance; + } + + void setPenetrationDepthSolver(btConvexPenetrationDepthSolver* penetrationDepthSolver) + { + m_penetrationDepthSolver = penetrationDepthSolver; + } + + ///don't use setIgnoreMargin, it's for Bullet's internal use + void setIgnoreMargin(bool ignoreMargin) + { + m_ignoreMargin = ignoreMargin; + } + + +}; + +#endif //GJK_PAIR_DETECTOR_H diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h new file mode 100644 index 00000000000..5987699f126 --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h @@ -0,0 +1,138 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef MANIFOLD_CONTACT_POINT_H +#define MANIFOLD_CONTACT_POINT_H + +#include "LinearMath/btVector3.h" +#include "LinearMath/btTransformUtil.h" + + + + + +/// ManifoldContactPoint collects and maintains persistent contactpoints. +/// used to improve stability and performance of rigidbody dynamics response. +class btManifoldPoint + { + public: + btManifoldPoint() + :m_userPersistentData(0), + m_appliedImpulse(0.f), + m_lateralFrictionInitialized(false), + m_appliedImpulseLateral1(0.f), + m_appliedImpulseLateral2(0.f), + m_contactMotion1(0.f), + m_contactMotion2(0.f), + m_contactCFM1(0.f), + m_contactCFM2(0.f), + m_lifeTime(0) + { + } + + btManifoldPoint( const btVector3 &pointA, const btVector3 &pointB, + const btVector3 &normal, + btScalar distance ) : + m_localPointA( pointA ), + m_localPointB( pointB ), + m_normalWorldOnB( normal ), + m_distance1( distance ), + m_combinedFriction(btScalar(0.)), + m_combinedRestitution(btScalar(0.)), + m_userPersistentData(0), + m_appliedImpulse(0.f), + m_lateralFrictionInitialized(false), + m_appliedImpulseLateral1(0.f), + m_appliedImpulseLateral2(0.f), + m_contactMotion1(0.f), + m_contactMotion2(0.f), + m_contactCFM1(0.f), + m_contactCFM2(0.f), + m_lifeTime(0) + { + + + } + + + + btVector3 m_localPointA; + btVector3 m_localPointB; + btVector3 m_positionWorldOnB; + ///m_positionWorldOnA is redundant information, see getPositionWorldOnA(), but for clarity + btVector3 m_positionWorldOnA; + btVector3 m_normalWorldOnB; + + btScalar m_distance1; + btScalar m_combinedFriction; + btScalar m_combinedRestitution; + + //BP mod, store contact triangles. + int m_partId0; + int m_partId1; + int m_index0; + int m_index1; + + mutable void* m_userPersistentData; + btScalar m_appliedImpulse; + + bool m_lateralFrictionInitialized; + btScalar m_appliedImpulseLateral1; + btScalar m_appliedImpulseLateral2; + btScalar m_contactMotion1; + btScalar m_contactMotion2; + btScalar m_contactCFM1; + btScalar m_contactCFM2; + + int m_lifeTime;//lifetime of the contactpoint in frames + + btVector3 m_lateralFrictionDir1; + btVector3 m_lateralFrictionDir2; + + btScalar getDistance() const + { + return m_distance1; + } + int getLifeTime() const + { + return m_lifeTime; + } + + const btVector3& getPositionWorldOnA() const { + return m_positionWorldOnA; +// return m_positionWorldOnB + m_normalWorldOnB * m_distance1; + } + + const btVector3& getPositionWorldOnB() const + { + return m_positionWorldOnB; + } + + void setDistance(btScalar dist) + { + m_distance1 = dist; + } + + ///this returns the most recent applied impulse, to satisfy contact constraints by the constraint solver + btScalar getAppliedImpulse() const + { + return m_appliedImpulse; + } + + + + }; + +#endif //MANIFOLD_CONTACT_POINT_H diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp new file mode 100644 index 00000000000..fe31f08d61a --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp @@ -0,0 +1,362 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btMinkowskiPenetrationDepthSolver.h" +#include "BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h" +#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h" +#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h" +#include "BulletCollision/CollisionShapes/btConvexShape.h" + +#define NUM_UNITSPHERE_POINTS 42 + + +bool btMinkowskiPenetrationDepthSolver::calcPenDepth(btSimplexSolverInterface& simplexSolver, + const btConvexShape* convexA,const btConvexShape* convexB, + const btTransform& transA,const btTransform& transB, + btVector3& v, btVector3& pa, btVector3& pb, + class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc + ) +{ + + (void)stackAlloc; + (void)v; + + bool check2d= convexA->isConvex2d() && convexB->isConvex2d(); + + struct btIntermediateResult : public btDiscreteCollisionDetectorInterface::Result + { + + btIntermediateResult():m_hasResult(false) + { + } + + btVector3 m_normalOnBInWorld; + btVector3 m_pointInWorld; + btScalar m_depth; + bool m_hasResult; + + virtual void setShapeIdentifiersA(int partId0,int index0) + { + (void)partId0; + (void)index0; + } + virtual void setShapeIdentifiersB(int partId1,int index1) + { + (void)partId1; + (void)index1; + } + void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth) + { + m_normalOnBInWorld = normalOnBInWorld; + m_pointInWorld = pointInWorld; + m_depth = depth; + m_hasResult = true; + } + }; + + //just take fixed number of orientation, and sample the penetration depth in that direction + btScalar minProj = btScalar(BT_LARGE_FLOAT); + btVector3 minNorm(btScalar(0.), btScalar(0.), btScalar(0.)); + btVector3 minA,minB; + btVector3 seperatingAxisInA,seperatingAxisInB; + btVector3 pInA,qInB,pWorld,qWorld,w; + +#ifndef __SPU__ +#define USE_BATCHED_SUPPORT 1 +#endif +#ifdef USE_BATCHED_SUPPORT + + btVector3 supportVerticesABatch[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2]; + btVector3 supportVerticesBBatch[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2]; + btVector3 seperatingAxisInABatch[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2]; + btVector3 seperatingAxisInBBatch[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2]; + int i; + + int numSampleDirections = NUM_UNITSPHERE_POINTS; + + for (i=0;igetNumPreferredPenetrationDirections(); + if (numPDA) + { + for (int i=0;igetPreferredPenetrationDirection(i,norm); + norm = transA.getBasis() * norm; + getPenetrationDirections()[numSampleDirections] = norm; + seperatingAxisInABatch[numSampleDirections] = (-norm) * transA.getBasis(); + seperatingAxisInBBatch[numSampleDirections] = norm * transB.getBasis(); + numSampleDirections++; + } + } + } + + { + int numPDB = convexB->getNumPreferredPenetrationDirections(); + if (numPDB) + { + for (int i=0;igetPreferredPenetrationDirection(i,norm); + norm = transB.getBasis() * norm; + getPenetrationDirections()[numSampleDirections] = norm; + seperatingAxisInABatch[numSampleDirections] = (-norm) * transA.getBasis(); + seperatingAxisInBBatch[numSampleDirections] = norm * transB.getBasis(); + numSampleDirections++; + } + } + } + + + + + convexA->batchedUnitVectorGetSupportingVertexWithoutMargin(seperatingAxisInABatch,supportVerticesABatch,numSampleDirections); + convexB->batchedUnitVectorGetSupportingVertexWithoutMargin(seperatingAxisInBBatch,supportVerticesBBatch,numSampleDirections); + + for (i=0;i0.01) + { + + seperatingAxisInA = seperatingAxisInABatch[i]; + seperatingAxisInB = seperatingAxisInBBatch[i]; + + pInA = supportVerticesABatch[i]; + qInB = supportVerticesBBatch[i]; + + pWorld = transA(pInA); + qWorld = transB(qInB); + if (check2d) + { + pWorld[2] = 0.f; + qWorld[2] = 0.f; + } + + w = qWorld - pWorld; + btScalar delta = norm.dot(w); + //find smallest delta + if (delta < minProj) + { + minProj = delta; + minNorm = norm; + minA = pWorld; + minB = qWorld; + } + } + } +#else + + int numSampleDirections = NUM_UNITSPHERE_POINTS; + +#ifndef __SPU__ + { + int numPDA = convexA->getNumPreferredPenetrationDirections(); + if (numPDA) + { + for (int i=0;igetPreferredPenetrationDirection(i,norm); + norm = transA.getBasis() * norm; + getPenetrationDirections()[numSampleDirections] = norm; + numSampleDirections++; + } + } + } + + { + int numPDB = convexB->getNumPreferredPenetrationDirections(); + if (numPDB) + { + for (int i=0;igetPreferredPenetrationDirection(i,norm); + norm = transB.getBasis() * norm; + getPenetrationDirections()[numSampleDirections] = norm; + numSampleDirections++; + } + } + } +#endif // __SPU__ + + for (int i=0;ilocalGetSupportVertexWithoutMarginNonVirtual(seperatingAxisInA); + qInB = convexB->localGetSupportVertexWithoutMarginNonVirtual(seperatingAxisInB); + pWorld = transA(pInA); + qWorld = transB(qInB); + w = qWorld - pWorld; + btScalar delta = norm.dot(w); + //find smallest delta + if (delta < minProj) + { + minProj = delta; + minNorm = norm; + minA = pWorld; + minB = qWorld; + } + } +#endif //USE_BATCHED_SUPPORT + + //add the margins + + minA += minNorm*convexA->getMarginNonVirtual(); + minB -= minNorm*convexB->getMarginNonVirtual(); + //no penetration + if (minProj < btScalar(0.)) + return false; + + btScalar extraSeparation = 0.5f;///scale dependent + minProj += extraSeparation+(convexA->getMarginNonVirtual() + convexB->getMarginNonVirtual()); + + + + + +//#define DEBUG_DRAW 1 +#ifdef DEBUG_DRAW + if (debugDraw) + { + btVector3 color(0,1,0); + debugDraw->drawLine(minA,minB,color); + color = btVector3 (1,1,1); + btVector3 vec = minB-minA; + btScalar prj2 = minNorm.dot(vec); + debugDraw->drawLine(minA,minA+(minNorm*minProj),color); + + } +#endif //DEBUG_DRAW + + + + btGjkPairDetector gjkdet(convexA,convexB,&simplexSolver,0); + + btScalar offsetDist = minProj; + btVector3 offset = minNorm * offsetDist; + + + + btGjkPairDetector::ClosestPointInput input; + + btVector3 newOrg = transA.getOrigin() + offset; + + btTransform displacedTrans = transA; + displacedTrans.setOrigin(newOrg); + + input.m_transformA = displacedTrans; + input.m_transformB = transB; + input.m_maximumDistanceSquared = btScalar(BT_LARGE_FLOAT);//minProj; + + btIntermediateResult res; + gjkdet.setCachedSeperatingAxis(-minNorm); + gjkdet.getClosestPoints(input,res,debugDraw); + + btScalar correctedMinNorm = minProj - res.m_depth; + + + //the penetration depth is over-estimated, relax it + btScalar penetration_relaxation= btScalar(1.); + minNorm*=penetration_relaxation; + + + if (res.m_hasResult) + { + + pa = res.m_pointInWorld - minNorm * correctedMinNorm; + pb = res.m_pointInWorld; + v = minNorm; + +#ifdef DEBUG_DRAW + if (debugDraw) + { + btVector3 color(1,0,0); + debugDraw->drawLine(pa,pb,color); + } +#endif//DEBUG_DRAW + + + } + return res.m_hasResult; +} + +btVector3* btMinkowskiPenetrationDepthSolver::getPenetrationDirections() +{ + static btVector3 sPenetrationDirections[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2] = + { + btVector3(btScalar(0.000000) , btScalar(-0.000000),btScalar(-1.000000)), + btVector3(btScalar(0.723608) , btScalar(-0.525725),btScalar(-0.447219)), + btVector3(btScalar(-0.276388) , btScalar(-0.850649),btScalar(-0.447219)), + btVector3(btScalar(-0.894426) , btScalar(-0.000000),btScalar(-0.447216)), + btVector3(btScalar(-0.276388) , btScalar(0.850649),btScalar(-0.447220)), + btVector3(btScalar(0.723608) , btScalar(0.525725),btScalar(-0.447219)), + btVector3(btScalar(0.276388) , btScalar(-0.850649),btScalar(0.447220)), + btVector3(btScalar(-0.723608) , btScalar(-0.525725),btScalar(0.447219)), + btVector3(btScalar(-0.723608) , btScalar(0.525725),btScalar(0.447219)), + btVector3(btScalar(0.276388) , btScalar(0.850649),btScalar(0.447219)), + btVector3(btScalar(0.894426) , btScalar(0.000000),btScalar(0.447216)), + btVector3(btScalar(-0.000000) , btScalar(0.000000),btScalar(1.000000)), + btVector3(btScalar(0.425323) , btScalar(-0.309011),btScalar(-0.850654)), + btVector3(btScalar(-0.162456) , btScalar(-0.499995),btScalar(-0.850654)), + btVector3(btScalar(0.262869) , btScalar(-0.809012),btScalar(-0.525738)), + btVector3(btScalar(0.425323) , btScalar(0.309011),btScalar(-0.850654)), + btVector3(btScalar(0.850648) , btScalar(-0.000000),btScalar(-0.525736)), + btVector3(btScalar(-0.525730) , btScalar(-0.000000),btScalar(-0.850652)), + btVector3(btScalar(-0.688190) , btScalar(-0.499997),btScalar(-0.525736)), + btVector3(btScalar(-0.162456) , btScalar(0.499995),btScalar(-0.850654)), + btVector3(btScalar(-0.688190) , btScalar(0.499997),btScalar(-0.525736)), + btVector3(btScalar(0.262869) , btScalar(0.809012),btScalar(-0.525738)), + btVector3(btScalar(0.951058) , btScalar(0.309013),btScalar(0.000000)), + btVector3(btScalar(0.951058) , btScalar(-0.309013),btScalar(0.000000)), + btVector3(btScalar(0.587786) , btScalar(-0.809017),btScalar(0.000000)), + btVector3(btScalar(0.000000) , btScalar(-1.000000),btScalar(0.000000)), + btVector3(btScalar(-0.587786) , btScalar(-0.809017),btScalar(0.000000)), + btVector3(btScalar(-0.951058) , btScalar(-0.309013),btScalar(-0.000000)), + btVector3(btScalar(-0.951058) , btScalar(0.309013),btScalar(-0.000000)), + btVector3(btScalar(-0.587786) , btScalar(0.809017),btScalar(-0.000000)), + btVector3(btScalar(-0.000000) , btScalar(1.000000),btScalar(-0.000000)), + btVector3(btScalar(0.587786) , btScalar(0.809017),btScalar(-0.000000)), + btVector3(btScalar(0.688190) , btScalar(-0.499997),btScalar(0.525736)), + btVector3(btScalar(-0.262869) , btScalar(-0.809012),btScalar(0.525738)), + btVector3(btScalar(-0.850648) , btScalar(0.000000),btScalar(0.525736)), + btVector3(btScalar(-0.262869) , btScalar(0.809012),btScalar(0.525738)), + btVector3(btScalar(0.688190) , btScalar(0.499997),btScalar(0.525736)), + btVector3(btScalar(0.525730) , btScalar(0.000000),btScalar(0.850652)), + btVector3(btScalar(0.162456) , btScalar(-0.499995),btScalar(0.850654)), + btVector3(btScalar(-0.425323) , btScalar(-0.309011),btScalar(0.850654)), + btVector3(btScalar(-0.425323) , btScalar(0.309011),btScalar(0.850654)), + btVector3(btScalar(0.162456) , btScalar(0.499995),btScalar(0.850654)) + }; + + return sPenetrationDirections; +} + + diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h new file mode 100644 index 00000000000..7b6c8a63779 --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h @@ -0,0 +1,40 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef MINKOWSKI_PENETRATION_DEPTH_SOLVER_H +#define MINKOWSKI_PENETRATION_DEPTH_SOLVER_H + +#include "btConvexPenetrationDepthSolver.h" + +///MinkowskiPenetrationDepthSolver implements bruteforce penetration depth estimation. +///Implementation is based on sampling the depth using support mapping, and using GJK step to get the witness points. +class btMinkowskiPenetrationDepthSolver : public btConvexPenetrationDepthSolver +{ +protected: + + static btVector3* getPenetrationDirections(); + +public: + + virtual bool calcPenDepth( btSimplexSolverInterface& simplexSolver, + const btConvexShape* convexA,const btConvexShape* convexB, + const btTransform& transA,const btTransform& transB, + btVector3& v, btVector3& pa, btVector3& pb, + class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc + ); +}; + +#endif //MINKOWSKI_PENETRATION_DEPTH_SOLVER_H + diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp new file mode 100644 index 00000000000..924a8af87d1 --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp @@ -0,0 +1,260 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btPersistentManifold.h" +#include "LinearMath/btTransform.h" + + +btScalar gContactBreakingThreshold = btScalar(0.02); +ContactDestroyedCallback gContactDestroyedCallback = 0; +ContactProcessedCallback gContactProcessedCallback = 0; + + + +btPersistentManifold::btPersistentManifold() +:btTypedObject(BT_PERSISTENT_MANIFOLD_TYPE), +m_body0(0), +m_body1(0), +m_cachedPoints (0), +m_index1a(0) +{ +} + + + + +#ifdef DEBUG_PERSISTENCY +#include +void btPersistentManifold::DebugPersistency() +{ + int i; + printf("DebugPersistency : numPoints %d\n",m_cachedPoints); + for (i=0;i1) + printf("error in clearUserCache\n"); + } + } + btAssert(occurance<=0); +#endif //DEBUG_PERSISTENCY + + if (pt.m_userPersistentData && gContactDestroyedCallback) + { + (*gContactDestroyedCallback)(pt.m_userPersistentData); + pt.m_userPersistentData = 0; + } + +#ifdef DEBUG_PERSISTENCY + DebugPersistency(); +#endif + } + + +} + + +int btPersistentManifold::sortCachedPoints(const btManifoldPoint& pt) +{ + + //calculate 4 possible cases areas, and take biggest area + //also need to keep 'deepest' + + int maxPenetrationIndex = -1; +#define KEEP_DEEPEST_POINT 1 +#ifdef KEEP_DEEPEST_POINT + btScalar maxPenetration = pt.getDistance(); + for (int i=0;i<4;i++) + { + if (m_pointCache[i].getDistance() < maxPenetration) + { + maxPenetrationIndex = i; + maxPenetration = m_pointCache[i].getDistance(); + } + } +#endif //KEEP_DEEPEST_POINT + + btScalar res0(btScalar(0.)),res1(btScalar(0.)),res2(btScalar(0.)),res3(btScalar(0.)); + if (maxPenetrationIndex != 0) + { + btVector3 a0 = pt.m_localPointA-m_pointCache[1].m_localPointA; + btVector3 b0 = m_pointCache[3].m_localPointA-m_pointCache[2].m_localPointA; + btVector3 cross = a0.cross(b0); + res0 = cross.length2(); + } + if (maxPenetrationIndex != 1) + { + btVector3 a1 = pt.m_localPointA-m_pointCache[0].m_localPointA; + btVector3 b1 = m_pointCache[3].m_localPointA-m_pointCache[2].m_localPointA; + btVector3 cross = a1.cross(b1); + res1 = cross.length2(); + } + + if (maxPenetrationIndex != 2) + { + btVector3 a2 = pt.m_localPointA-m_pointCache[0].m_localPointA; + btVector3 b2 = m_pointCache[3].m_localPointA-m_pointCache[1].m_localPointA; + btVector3 cross = a2.cross(b2); + res2 = cross.length2(); + } + + if (maxPenetrationIndex != 3) + { + btVector3 a3 = pt.m_localPointA-m_pointCache[0].m_localPointA; + btVector3 b3 = m_pointCache[2].m_localPointA-m_pointCache[1].m_localPointA; + btVector3 cross = a3.cross(b3); + res3 = cross.length2(); + } + + btVector4 maxvec(res0,res1,res2,res3); + int biggestarea = maxvec.closestAxis4(); + return biggestarea; +} + + +int btPersistentManifold::getCacheEntry(const btManifoldPoint& newPoint) const +{ + btScalar shortestDist = getContactBreakingThreshold() * getContactBreakingThreshold(); + int size = getNumContacts(); + int nearestPoint = -1; + for( int i = 0; i < size; i++ ) + { + const btManifoldPoint &mp = m_pointCache[i]; + + btVector3 diffA = mp.m_localPointA- newPoint.m_localPointA; + const btScalar distToManiPoint = diffA.dot(diffA); + if( distToManiPoint < shortestDist ) + { + shortestDist = distToManiPoint; + nearestPoint = i; + } + } + return nearestPoint; +} + +int btPersistentManifold::addManifoldPoint(const btManifoldPoint& newPoint) +{ + btAssert(validContactDistance(newPoint)); + + int insertIndex = getNumContacts(); + if (insertIndex == MANIFOLD_CACHE_SIZE) + { +#if MANIFOLD_CACHE_SIZE >= 4 + //sort cache so best points come first, based on area + insertIndex = sortCachedPoints(newPoint); +#else + insertIndex = 0; +#endif + clearUserCache(m_pointCache[insertIndex]); + + } else + { + m_cachedPoints++; + + + } + if (insertIndex<0) + insertIndex=0; + + btAssert(m_pointCache[insertIndex].m_userPersistentData==0); + m_pointCache[insertIndex] = newPoint; + return insertIndex; +} + +btScalar btPersistentManifold::getContactBreakingThreshold() const +{ + return m_contactBreakingThreshold; +} + + + +void btPersistentManifold::refreshContactPoints(const btTransform& trA,const btTransform& trB) +{ + int i; +#ifdef DEBUG_PERSISTENCY + printf("refreshContactPoints posA = (%f,%f,%f) posB = (%f,%f,%f)\n", + trA.getOrigin().getX(), + trA.getOrigin().getY(), + trA.getOrigin().getZ(), + trB.getOrigin().getX(), + trB.getOrigin().getY(), + trB.getOrigin().getZ()); +#endif //DEBUG_PERSISTENCY + /// first refresh worldspace positions and distance + for (i=getNumContacts()-1;i>=0;i--) + { + btManifoldPoint &manifoldPoint = m_pointCache[i]; + manifoldPoint.m_positionWorldOnA = trA( manifoldPoint.m_localPointA ); + manifoldPoint.m_positionWorldOnB = trB( manifoldPoint.m_localPointB ); + manifoldPoint.m_distance1 = (manifoldPoint.m_positionWorldOnA - manifoldPoint.m_positionWorldOnB).dot(manifoldPoint.m_normalWorldOnB); + manifoldPoint.m_lifeTime++; + } + + /// then + btScalar distance2d; + btVector3 projectedDifference,projectedPoint; + for (i=getNumContacts()-1;i>=0;i--) + { + + btManifoldPoint &manifoldPoint = m_pointCache[i]; + //contact becomes invalid when signed distance exceeds margin (projected on contactnormal direction) + if (!validContactDistance(manifoldPoint)) + { + removeContactPoint(i); + } else + { + //contact also becomes invalid when relative movement orthogonal to normal exceeds margin + projectedPoint = manifoldPoint.m_positionWorldOnA - manifoldPoint.m_normalWorldOnB * manifoldPoint.m_distance1; + projectedDifference = manifoldPoint.m_positionWorldOnB - projectedPoint; + distance2d = projectedDifference.dot(projectedDifference); + if (distance2d > getContactBreakingThreshold()*getContactBreakingThreshold() ) + { + removeContactPoint(i); + } else + { + //contact point processed callback + if (gContactProcessedCallback) + (*gContactProcessedCallback)(manifoldPoint,m_body0,m_body1); + } + } + } +#ifdef DEBUG_PERSISTENCY + DebugPersistency(); +#endif // +} + + + + + diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h new file mode 100644 index 00000000000..c075c548095 --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h @@ -0,0 +1,208 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef PERSISTENT_MANIFOLD_H +#define PERSISTENT_MANIFOLD_H + + +#include "LinearMath/btVector3.h" +#include "LinearMath/btTransform.h" +#include "btManifoldPoint.h" +#include "LinearMath/btAlignedAllocator.h" + +struct btCollisionResult; + +///maximum contact breaking and merging threshold +extern btScalar gContactBreakingThreshold; + +typedef bool (*ContactDestroyedCallback)(void* userPersistentData); +typedef bool (*ContactProcessedCallback)(btManifoldPoint& cp,void* body0,void* body1); +extern ContactDestroyedCallback gContactDestroyedCallback; +extern ContactProcessedCallback gContactProcessedCallback; + + +enum btContactManifoldTypes +{ + BT_PERSISTENT_MANIFOLD_TYPE = 1, + MAX_CONTACT_MANIFOLD_TYPE +}; + +#define MANIFOLD_CACHE_SIZE 4 + +///btPersistentManifold is a contact point cache, it stays persistent as long as objects are overlapping in the broadphase. +///Those contact points are created by the collision narrow phase. +///The cache can be empty, or hold 1,2,3 or 4 points. Some collision algorithms (GJK) might only add one point at a time. +///updates/refreshes old contact points, and throw them away if necessary (distance becomes too large) +///reduces the cache to 4 points, when more then 4 points are added, using following rules: +///the contact point with deepest penetration is always kept, and it tries to maximuze the area covered by the points +///note that some pairs of objects might have more then one contact manifold. +ATTRIBUTE_ALIGNED16( class) btPersistentManifold : public btTypedObject +{ + + btManifoldPoint m_pointCache[MANIFOLD_CACHE_SIZE]; + + /// this two body pointers can point to the physics rigidbody class. + /// void* will allow any rigidbody class + void* m_body0; + void* m_body1; + int m_cachedPoints; + + btScalar m_contactBreakingThreshold; + btScalar m_contactProcessingThreshold; + + + /// sort cached points so most isolated points come first + int sortCachedPoints(const btManifoldPoint& pt); + + int findContactPoint(const btManifoldPoint* unUsed, int numUnused,const btManifoldPoint& pt); + +public: + + BT_DECLARE_ALIGNED_ALLOCATOR(); + + int m_index1a; + + btPersistentManifold(); + + btPersistentManifold(void* body0,void* body1,int , btScalar contactBreakingThreshold,btScalar contactProcessingThreshold) + : btTypedObject(BT_PERSISTENT_MANIFOLD_TYPE), + m_body0(body0),m_body1(body1),m_cachedPoints(0), + m_contactBreakingThreshold(contactBreakingThreshold), + m_contactProcessingThreshold(contactProcessingThreshold) + { + } + + SIMD_FORCE_INLINE void* getBody0() { return m_body0;} + SIMD_FORCE_INLINE void* getBody1() { return m_body1;} + + SIMD_FORCE_INLINE const void* getBody0() const { return m_body0;} + SIMD_FORCE_INLINE const void* getBody1() const { return m_body1;} + + void setBodies(void* body0,void* body1) + { + m_body0 = body0; + m_body1 = body1; + } + + void clearUserCache(btManifoldPoint& pt); + +#ifdef DEBUG_PERSISTENCY + void DebugPersistency(); +#endif // + + SIMD_FORCE_INLINE int getNumContacts() const { return m_cachedPoints;} + + SIMD_FORCE_INLINE const btManifoldPoint& getContactPoint(int index) const + { + btAssert(index < m_cachedPoints); + return m_pointCache[index]; + } + + SIMD_FORCE_INLINE btManifoldPoint& getContactPoint(int index) + { + btAssert(index < m_cachedPoints); + return m_pointCache[index]; + } + + ///@todo: get this margin from the current physics / collision environment + btScalar getContactBreakingThreshold() const; + + btScalar getContactProcessingThreshold() const + { + return m_contactProcessingThreshold; + } + + int getCacheEntry(const btManifoldPoint& newPoint) const; + + int addManifoldPoint( const btManifoldPoint& newPoint); + + void removeContactPoint (int index) + { + clearUserCache(m_pointCache[index]); + + int lastUsedIndex = getNumContacts() - 1; +// m_pointCache[index] = m_pointCache[lastUsedIndex]; + if(index != lastUsedIndex) + { + m_pointCache[index] = m_pointCache[lastUsedIndex]; + //get rid of duplicated userPersistentData pointer + m_pointCache[lastUsedIndex].m_userPersistentData = 0; + m_pointCache[lastUsedIndex].m_appliedImpulse = 0.f; + m_pointCache[lastUsedIndex].m_lateralFrictionInitialized = false; + m_pointCache[lastUsedIndex].m_appliedImpulseLateral1 = 0.f; + m_pointCache[lastUsedIndex].m_appliedImpulseLateral2 = 0.f; + m_pointCache[lastUsedIndex].m_lifeTime = 0; + } + + btAssert(m_pointCache[lastUsedIndex].m_userPersistentData==0); + m_cachedPoints--; + } + void replaceContactPoint(const btManifoldPoint& newPoint,int insertIndex) + { + btAssert(validContactDistance(newPoint)); + +#define MAINTAIN_PERSISTENCY 1 +#ifdef MAINTAIN_PERSISTENCY + int lifeTime = m_pointCache[insertIndex].getLifeTime(); + btScalar appliedImpulse = m_pointCache[insertIndex].m_appliedImpulse; + btScalar appliedLateralImpulse1 = m_pointCache[insertIndex].m_appliedImpulseLateral1; + btScalar appliedLateralImpulse2 = m_pointCache[insertIndex].m_appliedImpulseLateral2; + + btAssert(lifeTime>=0); + void* cache = m_pointCache[insertIndex].m_userPersistentData; + + m_pointCache[insertIndex] = newPoint; + + m_pointCache[insertIndex].m_userPersistentData = cache; + m_pointCache[insertIndex].m_appliedImpulse = appliedImpulse; + m_pointCache[insertIndex].m_appliedImpulseLateral1 = appliedLateralImpulse1; + m_pointCache[insertIndex].m_appliedImpulseLateral2 = appliedLateralImpulse2; + + m_pointCache[insertIndex].m_lifeTime = lifeTime; +#else + clearUserCache(m_pointCache[insertIndex]); + m_pointCache[insertIndex] = newPoint; + +#endif + } + + bool validContactDistance(const btManifoldPoint& pt) const + { + return pt.m_distance1 <= getContactBreakingThreshold(); + } + /// calculated new worldspace coordinates and depth, and reject points that exceed the collision margin + void refreshContactPoints( const btTransform& trA,const btTransform& trB); + + + SIMD_FORCE_INLINE void clearManifold() + { + int i; + for (i=0;i + +#include "BulletCollision/CollisionShapes/btConvexShape.h" +#include "BulletCollision/CollisionShapes/btTriangleShape.h" +#include "BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h" +#include "BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h" +#include "BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h" +#include "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h" +#include "btRaycastCallback.h" + +btTriangleRaycastCallback::btTriangleRaycastCallback(const btVector3& from,const btVector3& to, unsigned int flags) + : + m_from(from), + m_to(to), + //@BP Mod + m_flags(flags), + m_hitFraction(btScalar(1.)) +{ + +} + + + +void btTriangleRaycastCallback::processTriangle(btVector3* triangle,int partId, int triangleIndex) +{ + const btVector3 &vert0=triangle[0]; + const btVector3 &vert1=triangle[1]; + const btVector3 &vert2=triangle[2]; + + btVector3 v10; v10 = vert1 - vert0 ; + btVector3 v20; v20 = vert2 - vert0 ; + + btVector3 triangleNormal; triangleNormal = v10.cross( v20 ); + + const btScalar dist = vert0.dot(triangleNormal); + btScalar dist_a = triangleNormal.dot(m_from) ; + dist_a-= dist; + btScalar dist_b = triangleNormal.dot(m_to); + dist_b -= dist; + + if ( dist_a * dist_b >= btScalar(0.0) ) + { + return ; // same sign + } + //@BP Mod - Backface filtering + if (((m_flags & kF_FilterBackfaces) != 0) && (dist_a > btScalar(0.0))) + { + // Backface, skip check + return; + } + + const btScalar proj_length=dist_a-dist_b; + const btScalar distance = (dist_a)/(proj_length); + // Now we have the intersection point on the plane, we'll see if it's inside the triangle + // Add an epsilon as a tolerance for the raycast, + // in case the ray hits exacly on the edge of the triangle. + // It must be scaled for the triangle size. + + if(distance < m_hitFraction) + { + + + btScalar edge_tolerance =triangleNormal.length2(); + edge_tolerance *= btScalar(-0.0001); + btVector3 point; point.setInterpolate3( m_from, m_to, distance); + { + btVector3 v0p; v0p = vert0 - point; + btVector3 v1p; v1p = vert1 - point; + btVector3 cp0; cp0 = v0p.cross( v1p ); + + if ( (btScalar)(cp0.dot(triangleNormal)) >=edge_tolerance) + { + + + btVector3 v2p; v2p = vert2 - point; + btVector3 cp1; + cp1 = v1p.cross( v2p); + if ( (btScalar)(cp1.dot(triangleNormal)) >=edge_tolerance) + { + btVector3 cp2; + cp2 = v2p.cross(v0p); + + if ( (btScalar)(cp2.dot(triangleNormal)) >=edge_tolerance) + { + //@BP Mod + // Triangle normal isn't normalized + triangleNormal.normalize(); + + //@BP Mod - Allow for unflipped normal when raycasting against backfaces + if (((m_flags & kF_KeepUnflippedNormal) != 0) || (dist_a <= btScalar(0.0))) + { + m_hitFraction = reportHit(-triangleNormal,distance,partId,triangleIndex); + } + else + { + m_hitFraction = reportHit(triangleNormal,distance,partId,triangleIndex); + } + } + } + } + } + } +} + + +btTriangleConvexcastCallback::btTriangleConvexcastCallback (const btConvexShape* convexShape, const btTransform& convexShapeFrom, const btTransform& convexShapeTo, const btTransform& triangleToWorld, const btScalar triangleCollisionMargin) +{ + m_convexShape = convexShape; + m_convexShapeFrom = convexShapeFrom; + m_convexShapeTo = convexShapeTo; + m_triangleToWorld = triangleToWorld; + m_hitFraction = 1.0; + m_triangleCollisionMargin = triangleCollisionMargin; +} + +void +btTriangleConvexcastCallback::processTriangle (btVector3* triangle, int partId, int triangleIndex) +{ + btTriangleShape triangleShape (triangle[0], triangle[1], triangle[2]); + triangleShape.setMargin(m_triangleCollisionMargin); + + btVoronoiSimplexSolver simplexSolver; + btGjkEpaPenetrationDepthSolver gjkEpaPenetrationSolver; + +//#define USE_SUBSIMPLEX_CONVEX_CAST 1 +//if you reenable USE_SUBSIMPLEX_CONVEX_CAST see commented out code below +#ifdef USE_SUBSIMPLEX_CONVEX_CAST + btSubsimplexConvexCast convexCaster(m_convexShape, &triangleShape, &simplexSolver); +#else + //btGjkConvexCast convexCaster(m_convexShape,&triangleShape,&simplexSolver); + btContinuousConvexCollision convexCaster(m_convexShape,&triangleShape,&simplexSolver,&gjkEpaPenetrationSolver); +#endif //#USE_SUBSIMPLEX_CONVEX_CAST + + btConvexCast::CastResult castResult; + castResult.m_fraction = btScalar(1.); + if (convexCaster.calcTimeOfImpact(m_convexShapeFrom,m_convexShapeTo,m_triangleToWorld, m_triangleToWorld, castResult)) + { + //add hit + if (castResult.m_normal.length2() > btScalar(0.0001)) + { + if (castResult.m_fraction < m_hitFraction) + { +/* btContinuousConvexCast's normal is already in world space */ +/* +#ifdef USE_SUBSIMPLEX_CONVEX_CAST + //rotate normal into worldspace + castResult.m_normal = m_convexShapeFrom.getBasis() * castResult.m_normal; +#endif //USE_SUBSIMPLEX_CONVEX_CAST +*/ + castResult.m_normal.normalize(); + + reportHit (castResult.m_normal, + castResult.m_hitPoint, + castResult.m_fraction, + partId, + triangleIndex); + } + } + } +} diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h new file mode 100644 index 00000000000..3a1ab388c13 --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h @@ -0,0 +1,71 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef RAYCAST_TRI_CALLBACK_H +#define RAYCAST_TRI_CALLBACK_H + +#include "BulletCollision/CollisionShapes/btTriangleCallback.h" +#include "LinearMath/btTransform.h" +struct btBroadphaseProxy; +class btConvexShape; + +class btTriangleRaycastCallback: public btTriangleCallback +{ +public: + + //input + btVector3 m_from; + btVector3 m_to; + + //@BP Mod - allow backface filtering and unflipped normals + enum EFlags + { + kF_None = 0, + kF_FilterBackfaces = 1 << 0, + kF_KeepUnflippedNormal = 1 << 1, // Prevents returned face normal getting flipped when a ray hits a back-facing triangle + + kF_Terminator = 0xFFFFFFFF + }; + unsigned int m_flags; + + btScalar m_hitFraction; + + btTriangleRaycastCallback(const btVector3& from,const btVector3& to, unsigned int flags=0); + + virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex); + + virtual btScalar reportHit(const btVector3& hitNormalLocal, btScalar hitFraction, int partId, int triangleIndex ) = 0; + +}; + +class btTriangleConvexcastCallback : public btTriangleCallback +{ +public: + const btConvexShape* m_convexShape; + btTransform m_convexShapeFrom; + btTransform m_convexShapeTo; + btTransform m_triangleToWorld; + btScalar m_hitFraction; + btScalar m_triangleCollisionMargin; + + btTriangleConvexcastCallback (const btConvexShape* convexShape, const btTransform& convexShapeFrom, const btTransform& convexShapeTo, const btTransform& triangleToWorld, const btScalar triangleCollisionMargin); + + virtual void processTriangle (btVector3* triangle, int partId, int triangleIndex); + + virtual btScalar reportHit (const btVector3& hitNormalLocal, const btVector3& hitPointLocal, btScalar hitFraction, int partId, int triangleIndex) = 0; +}; + +#endif //RAYCAST_TRI_CALLBACK_H + diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h new file mode 100644 index 00000000000..823b4e7158b --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h @@ -0,0 +1,63 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#ifndef SIMPLEX_SOLVER_INTERFACE_H +#define SIMPLEX_SOLVER_INTERFACE_H + +#include "LinearMath/btVector3.h" + +#define NO_VIRTUAL_INTERFACE 1 +#ifdef NO_VIRTUAL_INTERFACE +#include "btVoronoiSimplexSolver.h" +#define btSimplexSolverInterface btVoronoiSimplexSolver +#else + +/// btSimplexSolverInterface can incrementally calculate distance between origin and up to 4 vertices +/// Used by GJK or Linear Casting. Can be implemented by the Johnson-algorithm or alternative approaches based on +/// voronoi regions or barycentric coordinates +class btSimplexSolverInterface +{ + public: + virtual ~btSimplexSolverInterface() {}; + + virtual void reset() = 0; + + virtual void addVertex(const btVector3& w, const btVector3& p, const btVector3& q) = 0; + + virtual bool closest(btVector3& v) = 0; + + virtual btScalar maxVertex() = 0; + + virtual bool fullSimplex() const = 0; + + virtual int getSimplex(btVector3 *pBuf, btVector3 *qBuf, btVector3 *yBuf) const = 0; + + virtual bool inSimplex(const btVector3& w) = 0; + + virtual void backup_closest(btVector3& v) = 0; + + virtual bool emptySimplex() const = 0; + + virtual void compute_points(btVector3& p1, btVector3& p2) = 0; + + virtual int numVertices() const =0; + + +}; +#endif +#endif //SIMPLEX_SOLVER_INTERFACE_H + diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp new file mode 100644 index 00000000000..18eb662de2f --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp @@ -0,0 +1,160 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btSubSimplexConvexCast.h" +#include "BulletCollision/CollisionShapes/btConvexShape.h" + +#include "BulletCollision/CollisionShapes/btMinkowskiSumShape.h" +#include "BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h" +#include "btPointCollector.h" +#include "LinearMath/btTransformUtil.h" + +btSubsimplexConvexCast::btSubsimplexConvexCast (const btConvexShape* convexA,const btConvexShape* convexB,btSimplexSolverInterface* simplexSolver) +:m_simplexSolver(simplexSolver), +m_convexA(convexA),m_convexB(convexB) +{ +} + +///Typically the conservative advancement reaches solution in a few iterations, clip it to 32 for degenerate cases. +///See discussion about this here http://continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=565 +#ifdef BT_USE_DOUBLE_PRECISION +#define MAX_ITERATIONS 64 +#else +#define MAX_ITERATIONS 32 +#endif +bool btSubsimplexConvexCast::calcTimeOfImpact( + const btTransform& fromA, + const btTransform& toA, + const btTransform& fromB, + const btTransform& toB, + CastResult& result) +{ + + m_simplexSolver->reset(); + + btVector3 linVelA,linVelB; + linVelA = toA.getOrigin()-fromA.getOrigin(); + linVelB = toB.getOrigin()-fromB.getOrigin(); + + btScalar lambda = btScalar(0.); + + btTransform interpolatedTransA = fromA; + btTransform interpolatedTransB = fromB; + + ///take relative motion + btVector3 r = (linVelA-linVelB); + btVector3 v; + + btVector3 supVertexA = fromA(m_convexA->localGetSupportingVertex(-r*fromA.getBasis())); + btVector3 supVertexB = fromB(m_convexB->localGetSupportingVertex(r*fromB.getBasis())); + v = supVertexA-supVertexB; + int maxIter = MAX_ITERATIONS; + + btVector3 n; + n.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); + bool hasResult = false; + btVector3 c; + + btScalar lastLambda = lambda; + + + btScalar dist2 = v.length2(); +#ifdef BT_USE_DOUBLE_PRECISION + btScalar epsilon = btScalar(0.0001); +#else + btScalar epsilon = btScalar(0.0001); +#endif //BT_USE_DOUBLE_PRECISION + btVector3 w,p; + btScalar VdotR; + + while ( (dist2 > epsilon) && maxIter--) + { + supVertexA = interpolatedTransA(m_convexA->localGetSupportingVertex(-v*interpolatedTransA.getBasis())); + supVertexB = interpolatedTransB(m_convexB->localGetSupportingVertex(v*interpolatedTransB.getBasis())); + w = supVertexA-supVertexB; + + btScalar VdotW = v.dot(w); + + if (lambda > btScalar(1.0)) + { + return false; + } + + if ( VdotW > btScalar(0.)) + { + VdotR = v.dot(r); + + if (VdotR >= -(SIMD_EPSILON*SIMD_EPSILON)) + return false; + else + { + lambda = lambda - VdotW / VdotR; + //interpolate to next lambda + // x = s + lambda * r; + interpolatedTransA.getOrigin().setInterpolate3(fromA.getOrigin(),toA.getOrigin(),lambda); + interpolatedTransB.getOrigin().setInterpolate3(fromB.getOrigin(),toB.getOrigin(),lambda); + //m_simplexSolver->reset(); + //check next line + w = supVertexA-supVertexB; + lastLambda = lambda; + n = v; + hasResult = true; + } + } + ///Just like regular GJK only add the vertex if it isn't already (close) to current vertex, it would lead to divisions by zero and NaN etc. + if (!m_simplexSolver->inSimplex(w)) + m_simplexSolver->addVertex( w, supVertexA , supVertexB); + + if (m_simplexSolver->closest(v)) + { + dist2 = v.length2(); + hasResult = true; + //todo: check this normal for validity + //n=v; + //printf("V=%f , %f, %f\n",v[0],v[1],v[2]); + //printf("DIST2=%f\n",dist2); + //printf("numverts = %i\n",m_simplexSolver->numVertices()); + } else + { + dist2 = btScalar(0.); + } + } + + //int numiter = MAX_ITERATIONS - maxIter; +// printf("number of iterations: %d", numiter); + + //don't report a time of impact when moving 'away' from the hitnormal + + + result.m_fraction = lambda; + if (n.length2() >= (SIMD_EPSILON*SIMD_EPSILON)) + result.m_normal = n.normalized(); + else + result.m_normal = btVector3(btScalar(0.0), btScalar(0.0), btScalar(0.0)); + + //don't report time of impact for motion away from the contact normal (or causes minor penetration) + if (result.m_normal.dot(r)>=-result.m_allowedPenetration) + return false; + + btVector3 hitA,hitB; + m_simplexSolver->compute_points(hitA,hitB); + result.m_hitPoint=hitB; + return true; +} + + + + diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h new file mode 100644 index 00000000000..05662db5d23 --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h @@ -0,0 +1,50 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef SUBSIMPLEX_CONVEX_CAST_H +#define SUBSIMPLEX_CONVEX_CAST_H + +#include "btConvexCast.h" +#include "btSimplexSolverInterface.h" +class btConvexShape; + +/// btSubsimplexConvexCast implements Gino van den Bergens' paper +///"Ray Casting against bteral Convex Objects with Application to Continuous Collision Detection" +/// GJK based Ray Cast, optimized version +/// Objects should not start in overlap, otherwise results are not defined. +class btSubsimplexConvexCast : public btConvexCast +{ + btSimplexSolverInterface* m_simplexSolver; + const btConvexShape* m_convexA; + const btConvexShape* m_convexB; + +public: + + btSubsimplexConvexCast (const btConvexShape* shapeA,const btConvexShape* shapeB,btSimplexSolverInterface* simplexSolver); + + //virtual ~btSubsimplexConvexCast(); + ///SimsimplexConvexCast calculateTimeOfImpact calculates the time of impact+normal for the linear cast (sweep) between two moving objects. + ///Precondition is that objects should not penetration/overlap at the start from the interval. Overlap can be tested using btGjkPairDetector. + virtual bool calcTimeOfImpact( + const btTransform& fromA, + const btTransform& toA, + const btTransform& fromB, + const btTransform& toB, + CastResult& result); + +}; + +#endif //SUBSIMPLEX_CONVEX_CAST_H diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp new file mode 100644 index 00000000000..a775198ab29 --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp @@ -0,0 +1,609 @@ + +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + + Elsevier CDROM license agreements grants nonexclusive license to use the software + for any purpose, commercial or non-commercial as long as the following credit is included + identifying the original source of the software: + + Parts of the source are "from the book Real-Time Collision Detection by + Christer Ericson, published by Morgan Kaufmann Publishers, + (c) 2005 Elsevier Inc." + +*/ + + +#include "btVoronoiSimplexSolver.h" + +#define VERTA 0 +#define VERTB 1 +#define VERTC 2 +#define VERTD 3 + +#define CATCH_DEGENERATE_TETRAHEDRON 1 +void btVoronoiSimplexSolver::removeVertex(int index) +{ + + btAssert(m_numVertices>0); + m_numVertices--; + m_simplexVectorW[index] = m_simplexVectorW[m_numVertices]; + m_simplexPointsP[index] = m_simplexPointsP[m_numVertices]; + m_simplexPointsQ[index] = m_simplexPointsQ[m_numVertices]; +} + +void btVoronoiSimplexSolver::reduceVertices (const btUsageBitfield& usedVerts) +{ + if ((numVertices() >= 4) && (!usedVerts.usedVertexD)) + removeVertex(3); + + if ((numVertices() >= 3) && (!usedVerts.usedVertexC)) + removeVertex(2); + + if ((numVertices() >= 2) && (!usedVerts.usedVertexB)) + removeVertex(1); + + if ((numVertices() >= 1) && (!usedVerts.usedVertexA)) + removeVertex(0); + +} + + + + + +//clear the simplex, remove all the vertices +void btVoronoiSimplexSolver::reset() +{ + m_cachedValidClosest = false; + m_numVertices = 0; + m_needsUpdate = true; + m_lastW = btVector3(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); + m_cachedBC.reset(); +} + + + + //add a vertex +void btVoronoiSimplexSolver::addVertex(const btVector3& w, const btVector3& p, const btVector3& q) +{ + m_lastW = w; + m_needsUpdate = true; + + m_simplexVectorW[m_numVertices] = w; + m_simplexPointsP[m_numVertices] = p; + m_simplexPointsQ[m_numVertices] = q; + + m_numVertices++; +} + +bool btVoronoiSimplexSolver::updateClosestVectorAndPoints() +{ + + if (m_needsUpdate) + { + m_cachedBC.reset(); + + m_needsUpdate = false; + + switch (numVertices()) + { + case 0: + m_cachedValidClosest = false; + break; + case 1: + { + m_cachedP1 = m_simplexPointsP[0]; + m_cachedP2 = m_simplexPointsQ[0]; + m_cachedV = m_cachedP1-m_cachedP2; //== m_simplexVectorW[0] + m_cachedBC.reset(); + m_cachedBC.setBarycentricCoordinates(btScalar(1.),btScalar(0.),btScalar(0.),btScalar(0.)); + m_cachedValidClosest = m_cachedBC.isValid(); + break; + }; + case 2: + { + //closest point origin from line segment + const btVector3& from = m_simplexVectorW[0]; + const btVector3& to = m_simplexVectorW[1]; + btVector3 nearest; + + btVector3 p (btScalar(0.),btScalar(0.),btScalar(0.)); + btVector3 diff = p - from; + btVector3 v = to - from; + btScalar t = v.dot(diff); + + if (t > 0) { + btScalar dotVV = v.dot(v); + if (t < dotVV) { + t /= dotVV; + diff -= t*v; + m_cachedBC.m_usedVertices.usedVertexA = true; + m_cachedBC.m_usedVertices.usedVertexB = true; + } else { + t = 1; + diff -= v; + //reduce to 1 point + m_cachedBC.m_usedVertices.usedVertexB = true; + } + } else + { + t = 0; + //reduce to 1 point + m_cachedBC.m_usedVertices.usedVertexA = true; + } + m_cachedBC.setBarycentricCoordinates(1-t,t); + nearest = from + t*v; + + m_cachedP1 = m_simplexPointsP[0] + t * (m_simplexPointsP[1] - m_simplexPointsP[0]); + m_cachedP2 = m_simplexPointsQ[0] + t * (m_simplexPointsQ[1] - m_simplexPointsQ[0]); + m_cachedV = m_cachedP1 - m_cachedP2; + + reduceVertices(m_cachedBC.m_usedVertices); + + m_cachedValidClosest = m_cachedBC.isValid(); + break; + } + case 3: + { + //closest point origin from triangle + btVector3 p (btScalar(0.),btScalar(0.),btScalar(0.)); + + const btVector3& a = m_simplexVectorW[0]; + const btVector3& b = m_simplexVectorW[1]; + const btVector3& c = m_simplexVectorW[2]; + + closestPtPointTriangle(p,a,b,c,m_cachedBC); + m_cachedP1 = m_simplexPointsP[0] * m_cachedBC.m_barycentricCoords[0] + + m_simplexPointsP[1] * m_cachedBC.m_barycentricCoords[1] + + m_simplexPointsP[2] * m_cachedBC.m_barycentricCoords[2]; + + m_cachedP2 = m_simplexPointsQ[0] * m_cachedBC.m_barycentricCoords[0] + + m_simplexPointsQ[1] * m_cachedBC.m_barycentricCoords[1] + + m_simplexPointsQ[2] * m_cachedBC.m_barycentricCoords[2]; + + m_cachedV = m_cachedP1-m_cachedP2; + + reduceVertices (m_cachedBC.m_usedVertices); + m_cachedValidClosest = m_cachedBC.isValid(); + + break; + } + case 4: + { + + + btVector3 p (btScalar(0.),btScalar(0.),btScalar(0.)); + + const btVector3& a = m_simplexVectorW[0]; + const btVector3& b = m_simplexVectorW[1]; + const btVector3& c = m_simplexVectorW[2]; + const btVector3& d = m_simplexVectorW[3]; + + bool hasSeperation = closestPtPointTetrahedron(p,a,b,c,d,m_cachedBC); + + if (hasSeperation) + { + + m_cachedP1 = m_simplexPointsP[0] * m_cachedBC.m_barycentricCoords[0] + + m_simplexPointsP[1] * m_cachedBC.m_barycentricCoords[1] + + m_simplexPointsP[2] * m_cachedBC.m_barycentricCoords[2] + + m_simplexPointsP[3] * m_cachedBC.m_barycentricCoords[3]; + + m_cachedP2 = m_simplexPointsQ[0] * m_cachedBC.m_barycentricCoords[0] + + m_simplexPointsQ[1] * m_cachedBC.m_barycentricCoords[1] + + m_simplexPointsQ[2] * m_cachedBC.m_barycentricCoords[2] + + m_simplexPointsQ[3] * m_cachedBC.m_barycentricCoords[3]; + + m_cachedV = m_cachedP1-m_cachedP2; + reduceVertices (m_cachedBC.m_usedVertices); + } else + { +// printf("sub distance got penetration\n"); + + if (m_cachedBC.m_degenerate) + { + m_cachedValidClosest = false; + } else + { + m_cachedValidClosest = true; + //degenerate case == false, penetration = true + zero + m_cachedV.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); + } + break; + } + + m_cachedValidClosest = m_cachedBC.isValid(); + + //closest point origin from tetrahedron + break; + } + default: + { + m_cachedValidClosest = false; + } + }; + } + + return m_cachedValidClosest; + +} + +//return/calculate the closest vertex +bool btVoronoiSimplexSolver::closest(btVector3& v) +{ + bool succes = updateClosestVectorAndPoints(); + v = m_cachedV; + return succes; +} + + + +btScalar btVoronoiSimplexSolver::maxVertex() +{ + int i, numverts = numVertices(); + btScalar maxV = btScalar(0.); + for (i=0;i= btScalar(0.0) && d4 <= d3) + { + result.m_closestPointOnSimplex = b; + result.m_usedVertices.usedVertexB = true; + result.setBarycentricCoordinates(0,1,0); + + return true; // b; // barycentric coordinates (0,1,0) + } + // Check if P in edge region of AB, if so return projection of P onto AB + btScalar vc = d1*d4 - d3*d2; + if (vc <= btScalar(0.0) && d1 >= btScalar(0.0) && d3 <= btScalar(0.0)) { + btScalar v = d1 / (d1 - d3); + result.m_closestPointOnSimplex = a + v * ab; + result.m_usedVertices.usedVertexA = true; + result.m_usedVertices.usedVertexB = true; + result.setBarycentricCoordinates(1-v,v,0); + return true; + //return a + v * ab; // barycentric coordinates (1-v,v,0) + } + + // Check if P in vertex region outside C + btVector3 cp = p - c; + btScalar d5 = ab.dot(cp); + btScalar d6 = ac.dot(cp); + if (d6 >= btScalar(0.0) && d5 <= d6) + { + result.m_closestPointOnSimplex = c; + result.m_usedVertices.usedVertexC = true; + result.setBarycentricCoordinates(0,0,1); + return true;//c; // barycentric coordinates (0,0,1) + } + + // Check if P in edge region of AC, if so return projection of P onto AC + btScalar vb = d5*d2 - d1*d6; + if (vb <= btScalar(0.0) && d2 >= btScalar(0.0) && d6 <= btScalar(0.0)) { + btScalar w = d2 / (d2 - d6); + result.m_closestPointOnSimplex = a + w * ac; + result.m_usedVertices.usedVertexA = true; + result.m_usedVertices.usedVertexC = true; + result.setBarycentricCoordinates(1-w,0,w); + return true; + //return a + w * ac; // barycentric coordinates (1-w,0,w) + } + + // Check if P in edge region of BC, if so return projection of P onto BC + btScalar va = d3*d6 - d5*d4; + if (va <= btScalar(0.0) && (d4 - d3) >= btScalar(0.0) && (d5 - d6) >= btScalar(0.0)) { + btScalar w = (d4 - d3) / ((d4 - d3) + (d5 - d6)); + + result.m_closestPointOnSimplex = b + w * (c - b); + result.m_usedVertices.usedVertexB = true; + result.m_usedVertices.usedVertexC = true; + result.setBarycentricCoordinates(0,1-w,w); + return true; + // return b + w * (c - b); // barycentric coordinates (0,1-w,w) + } + + // P inside face region. Compute Q through its barycentric coordinates (u,v,w) + btScalar denom = btScalar(1.0) / (va + vb + vc); + btScalar v = vb * denom; + btScalar w = vc * denom; + + result.m_closestPointOnSimplex = a + ab * v + ac * w; + result.m_usedVertices.usedVertexA = true; + result.m_usedVertices.usedVertexB = true; + result.m_usedVertices.usedVertexC = true; + result.setBarycentricCoordinates(1-v-w,v,w); + + return true; +// return a + ab * v + ac * w; // = u*a + v*b + w*c, u = va * denom = btScalar(1.0) - v - w + +} + + + + + +/// Test if point p and d lie on opposite sides of plane through abc +int btVoronoiSimplexSolver::pointOutsideOfPlane(const btVector3& p, const btVector3& a, const btVector3& b, const btVector3& c, const btVector3& d) +{ + btVector3 normal = (b-a).cross(c-a); + + btScalar signp = (p - a).dot(normal); // [AP AB AC] + btScalar signd = (d - a).dot( normal); // [AD AB AC] + +#ifdef CATCH_DEGENERATE_TETRAHEDRON +#ifdef BT_USE_DOUBLE_PRECISION +if (signd * signd < (btScalar(1e-8) * btScalar(1e-8))) + { + return -1; + } +#else + if (signd * signd < (btScalar(1e-4) * btScalar(1e-4))) + { +// printf("affine dependent/degenerate\n");// + return -1; + } +#endif + +#endif + // Points on opposite sides if expression signs are opposite + return signp * signd < btScalar(0.); +} + + +bool btVoronoiSimplexSolver::closestPtPointTetrahedron(const btVector3& p, const btVector3& a, const btVector3& b, const btVector3& c, const btVector3& d, btSubSimplexClosestResult& finalResult) +{ + btSubSimplexClosestResult tempResult; + + // Start out assuming point inside all halfspaces, so closest to itself + finalResult.m_closestPointOnSimplex = p; + finalResult.m_usedVertices.reset(); + finalResult.m_usedVertices.usedVertexA = true; + finalResult.m_usedVertices.usedVertexB = true; + finalResult.m_usedVertices.usedVertexC = true; + finalResult.m_usedVertices.usedVertexD = true; + + int pointOutsideABC = pointOutsideOfPlane(p, a, b, c, d); + int pointOutsideACD = pointOutsideOfPlane(p, a, c, d, b); + int pointOutsideADB = pointOutsideOfPlane(p, a, d, b, c); + int pointOutsideBDC = pointOutsideOfPlane(p, b, d, c, a); + + if (pointOutsideABC < 0 || pointOutsideACD < 0 || pointOutsideADB < 0 || pointOutsideBDC < 0) + { + finalResult.m_degenerate = true; + return false; + } + + if (!pointOutsideABC && !pointOutsideACD && !pointOutsideADB && !pointOutsideBDC) + { + return false; + } + + + btScalar bestSqDist = FLT_MAX; + // If point outside face abc then compute closest point on abc + if (pointOutsideABC) + { + closestPtPointTriangle(p, a, b, c,tempResult); + btVector3 q = tempResult.m_closestPointOnSimplex; + + btScalar sqDist = (q - p).dot( q - p); + // Update best closest point if (squared) distance is less than current best + if (sqDist < bestSqDist) { + bestSqDist = sqDist; + finalResult.m_closestPointOnSimplex = q; + //convert result bitmask! + finalResult.m_usedVertices.reset(); + finalResult.m_usedVertices.usedVertexA = tempResult.m_usedVertices.usedVertexA; + finalResult.m_usedVertices.usedVertexB = tempResult.m_usedVertices.usedVertexB; + finalResult.m_usedVertices.usedVertexC = tempResult.m_usedVertices.usedVertexC; + finalResult.setBarycentricCoordinates( + tempResult.m_barycentricCoords[VERTA], + tempResult.m_barycentricCoords[VERTB], + tempResult.m_barycentricCoords[VERTC], + 0 + ); + + } + } + + + // Repeat test for face acd + if (pointOutsideACD) + { + closestPtPointTriangle(p, a, c, d,tempResult); + btVector3 q = tempResult.m_closestPointOnSimplex; + //convert result bitmask! + + btScalar sqDist = (q - p).dot( q - p); + if (sqDist < bestSqDist) + { + bestSqDist = sqDist; + finalResult.m_closestPointOnSimplex = q; + finalResult.m_usedVertices.reset(); + finalResult.m_usedVertices.usedVertexA = tempResult.m_usedVertices.usedVertexA; + + finalResult.m_usedVertices.usedVertexC = tempResult.m_usedVertices.usedVertexB; + finalResult.m_usedVertices.usedVertexD = tempResult.m_usedVertices.usedVertexC; + finalResult.setBarycentricCoordinates( + tempResult.m_barycentricCoords[VERTA], + 0, + tempResult.m_barycentricCoords[VERTB], + tempResult.m_barycentricCoords[VERTC] + ); + + } + } + // Repeat test for face adb + + + if (pointOutsideADB) + { + closestPtPointTriangle(p, a, d, b,tempResult); + btVector3 q = tempResult.m_closestPointOnSimplex; + //convert result bitmask! + + btScalar sqDist = (q - p).dot( q - p); + if (sqDist < bestSqDist) + { + bestSqDist = sqDist; + finalResult.m_closestPointOnSimplex = q; + finalResult.m_usedVertices.reset(); + finalResult.m_usedVertices.usedVertexA = tempResult.m_usedVertices.usedVertexA; + finalResult.m_usedVertices.usedVertexB = tempResult.m_usedVertices.usedVertexC; + + finalResult.m_usedVertices.usedVertexD = tempResult.m_usedVertices.usedVertexB; + finalResult.setBarycentricCoordinates( + tempResult.m_barycentricCoords[VERTA], + tempResult.m_barycentricCoords[VERTC], + 0, + tempResult.m_barycentricCoords[VERTB] + ); + + } + } + // Repeat test for face bdc + + + if (pointOutsideBDC) + { + closestPtPointTriangle(p, b, d, c,tempResult); + btVector3 q = tempResult.m_closestPointOnSimplex; + //convert result bitmask! + btScalar sqDist = (q - p).dot( q - p); + if (sqDist < bestSqDist) + { + bestSqDist = sqDist; + finalResult.m_closestPointOnSimplex = q; + finalResult.m_usedVertices.reset(); + // + finalResult.m_usedVertices.usedVertexB = tempResult.m_usedVertices.usedVertexA; + finalResult.m_usedVertices.usedVertexC = tempResult.m_usedVertices.usedVertexC; + finalResult.m_usedVertices.usedVertexD = tempResult.m_usedVertices.usedVertexB; + + finalResult.setBarycentricCoordinates( + 0, + tempResult.m_barycentricCoords[VERTA], + tempResult.m_barycentricCoords[VERTC], + tempResult.m_barycentricCoords[VERTB] + ); + + } + } + + //help! we ended up full ! + + if (finalResult.m_usedVertices.usedVertexA && + finalResult.m_usedVertices.usedVertexB && + finalResult.m_usedVertices.usedVertexC && + finalResult.m_usedVertices.usedVertexD) + { + return true; + } + + return true; +} + diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h new file mode 100644 index 00000000000..9a4f552924c --- /dev/null +++ b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h @@ -0,0 +1,178 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#ifndef btVoronoiSimplexSolver_H +#define btVoronoiSimplexSolver_H + +#include "btSimplexSolverInterface.h" + + + +#define VORONOI_SIMPLEX_MAX_VERTS 5 + +///disable next define, or use defaultCollisionConfiguration->getSimplexSolver()->setEqualVertexThreshold(0.f) to disable/configure +#define BT_USE_EQUAL_VERTEX_THRESHOLD +#define VORONOI_DEFAULT_EQUAL_VERTEX_THRESHOLD 0.0001f + + +struct btUsageBitfield{ + btUsageBitfield() + { + reset(); + } + + void reset() + { + usedVertexA = false; + usedVertexB = false; + usedVertexC = false; + usedVertexD = false; + } + unsigned short usedVertexA : 1; + unsigned short usedVertexB : 1; + unsigned short usedVertexC : 1; + unsigned short usedVertexD : 1; + unsigned short unused1 : 1; + unsigned short unused2 : 1; + unsigned short unused3 : 1; + unsigned short unused4 : 1; +}; + + +struct btSubSimplexClosestResult +{ + btVector3 m_closestPointOnSimplex; + //MASK for m_usedVertices + //stores the simplex vertex-usage, using the MASK, + // if m_usedVertices & MASK then the related vertex is used + btUsageBitfield m_usedVertices; + btScalar m_barycentricCoords[4]; + bool m_degenerate; + + void reset() + { + m_degenerate = false; + setBarycentricCoordinates(); + m_usedVertices.reset(); + } + bool isValid() + { + bool valid = (m_barycentricCoords[0] >= btScalar(0.)) && + (m_barycentricCoords[1] >= btScalar(0.)) && + (m_barycentricCoords[2] >= btScalar(0.)) && + (m_barycentricCoords[3] >= btScalar(0.)); + + + return valid; + } + void setBarycentricCoordinates(btScalar a=btScalar(0.),btScalar b=btScalar(0.),btScalar c=btScalar(0.),btScalar d=btScalar(0.)) + { + m_barycentricCoords[0] = a; + m_barycentricCoords[1] = b; + m_barycentricCoords[2] = c; + m_barycentricCoords[3] = d; + } + +}; + +/// btVoronoiSimplexSolver is an implementation of the closest point distance algorithm from a 1-4 points simplex to the origin. +/// Can be used with GJK, as an alternative to Johnson distance algorithm. +#ifdef NO_VIRTUAL_INTERFACE +class btVoronoiSimplexSolver +#else +class btVoronoiSimplexSolver : public btSimplexSolverInterface +#endif +{ +public: + + int m_numVertices; + + btVector3 m_simplexVectorW[VORONOI_SIMPLEX_MAX_VERTS]; + btVector3 m_simplexPointsP[VORONOI_SIMPLEX_MAX_VERTS]; + btVector3 m_simplexPointsQ[VORONOI_SIMPLEX_MAX_VERTS]; + + + + btVector3 m_cachedP1; + btVector3 m_cachedP2; + btVector3 m_cachedV; + btVector3 m_lastW; + + btScalar m_equalVertexThreshold; + bool m_cachedValidClosest; + + + btSubSimplexClosestResult m_cachedBC; + + bool m_needsUpdate; + + void removeVertex(int index); + void reduceVertices (const btUsageBitfield& usedVerts); + bool updateClosestVectorAndPoints(); + + bool closestPtPointTetrahedron(const btVector3& p, const btVector3& a, const btVector3& b, const btVector3& c, const btVector3& d, btSubSimplexClosestResult& finalResult); + int pointOutsideOfPlane(const btVector3& p, const btVector3& a, const btVector3& b, const btVector3& c, const btVector3& d); + bool closestPtPointTriangle(const btVector3& p, const btVector3& a, const btVector3& b, const btVector3& c,btSubSimplexClosestResult& result); + +public: + + btVoronoiSimplexSolver() + : m_equalVertexThreshold(VORONOI_DEFAULT_EQUAL_VERTEX_THRESHOLD) + { + } + void reset(); + + void addVertex(const btVector3& w, const btVector3& p, const btVector3& q); + + void setEqualVertexThreshold(btScalar threshold) + { + m_equalVertexThreshold = threshold; + } + + btScalar getEqualVertexThreshold() const + { + return m_equalVertexThreshold; + } + + bool closest(btVector3& v); + + btScalar maxVertex(); + + bool fullSimplex() const + { + return (m_numVertices == 4); + } + + int getSimplex(btVector3 *pBuf, btVector3 *qBuf, btVector3 *yBuf) const; + + bool inSimplex(const btVector3& w); + + void backup_closest(btVector3& v) ; + + bool emptySimplex() const ; + + void compute_points(btVector3& p1, btVector3& p2) ; + + int numVertices() const + { + return m_numVertices; + } + + +}; + +#endif //VoronoiSimplexSolver diff --git a/extern/bullet2/BulletDynamics/CMakeLists.txt b/extern/bullet2/BulletDynamics/CMakeLists.txt new file mode 100644 index 00000000000..7516e2b957f --- /dev/null +++ b/extern/bullet2/BulletDynamics/CMakeLists.txt @@ -0,0 +1,112 @@ +INCLUDE_DIRECTORIES( ${BULLET_PHYSICS_SOURCE_DIR}/src ) + + + +SET(BulletDynamics_SRCS + Character/btKinematicCharacterController.cpp + ConstraintSolver/btConeTwistConstraint.cpp + ConstraintSolver/btContactConstraint.cpp + ConstraintSolver/btGeneric6DofConstraint.cpp + ConstraintSolver/btGeneric6DofSpringConstraint.cpp + ConstraintSolver/btHinge2Constraint.cpp + ConstraintSolver/btHingeConstraint.cpp + ConstraintSolver/btPoint2PointConstraint.cpp + ConstraintSolver/btSequentialImpulseConstraintSolver.cpp + ConstraintSolver/btSliderConstraint.cpp + ConstraintSolver/btSolve2LinearConstraint.cpp + ConstraintSolver/btTypedConstraint.cpp + ConstraintSolver/btUniversalConstraint.cpp + Dynamics/btContinuousDynamicsWorld.cpp + Dynamics/btDiscreteDynamicsWorld.cpp + Dynamics/btRigidBody.cpp + Dynamics/btSimpleDynamicsWorld.cpp + Dynamics/Bullet-C-API.cpp + Vehicle/btRaycastVehicle.cpp + Vehicle/btWheelInfo.cpp +) + +SET(Root_HDRS + ../btBulletDynamicsCommon.h + ../btBulletCollisionCommon.h +) +SET(ConstraintSolver_HDRS + ConstraintSolver/btConeTwistConstraint.h + ConstraintSolver/btConstraintSolver.h + ConstraintSolver/btContactConstraint.h + ConstraintSolver/btContactSolverInfo.h + ConstraintSolver/btGeneric6DofConstraint.h + ConstraintSolver/btGeneric6DofSpringConstraint.h + ConstraintSolver/btHinge2Constraint.h + ConstraintSolver/btHingeConstraint.h + ConstraintSolver/btJacobianEntry.h + ConstraintSolver/btPoint2PointConstraint.h + ConstraintSolver/btSequentialImpulseConstraintSolver.h + ConstraintSolver/btSliderConstraint.h + ConstraintSolver/btSolve2LinearConstraint.h + ConstraintSolver/btSolverBody.h + ConstraintSolver/btSolverConstraint.h + ConstraintSolver/btTypedConstraint.h + ConstraintSolver/btUniversalConstraint.h +) +SET(Dynamics_HDRS + Dynamics/btActionInterface.h + Dynamics/btContinuousDynamicsWorld.h + Dynamics/btDiscreteDynamicsWorld.h + Dynamics/btDynamicsWorld.h + Dynamics/btSimpleDynamicsWorld.h + Dynamics/btRigidBody.h +) +SET(Vehicle_HDRS + Vehicle/btRaycastVehicle.h + Vehicle/btVehicleRaycaster.h + Vehicle/btWheelInfo.h +) + +SET(Character_HDRS + Character/btCharacterControllerInterface.h + Character/btKinematicCharacterController.h +) + + + +SET(BulletDynamics_HDRS + ${Root_HDRS} + ${ConstraintSolver_HDRS} + ${Dynamics_HDRS} + ${Vehicle_HDRS} + ${Character_HDRS} +) + + +ADD_LIBRARY(BulletDynamics ${BulletDynamics_SRCS} ${BulletDynamics_HDRS}) +SET_TARGET_PROPERTIES(BulletDynamics PROPERTIES VERSION ${BULLET_VERSION}) +SET_TARGET_PROPERTIES(BulletDynamics PROPERTIES SOVERSION ${BULLET_VERSION}) +IF (BUILD_SHARED_LIBS) + TARGET_LINK_LIBRARIES(BulletDynamics BulletCollision LinearMath) +ENDIF (BUILD_SHARED_LIBS) + +IF (INSTALL_LIBS) + IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) + IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) + IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + INSTALL(TARGETS BulletDynamics DESTINATION .) + ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + INSTALL(TARGETS BulletDynamics DESTINATION lib${LIB_SUFFIX}) + INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h") + INSTALL(FILES ../btBulletDynamicsCommon.h DESTINATION include/BulletDynamics) + ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) + + IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + SET_TARGET_PROPERTIES(BulletDynamics PROPERTIES FRAMEWORK true) + + SET_TARGET_PROPERTIES(BulletDynamics PROPERTIES PUBLIC_HEADER ${Root_HDRS}) + # Have to list out sub-directories manually: + SET_PROPERTY(SOURCE ${ConstraintSolver_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/ConstraintSolver) + SET_PROPERTY(SOURCE ${Dynamics_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/Dynamics) + SET_PROPERTY(SOURCE ${Vehicle_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/Vehicle) + SET_PROPERTY(SOURCE ${Character_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/Character) + + ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) +ENDIF (INSTALL_LIBS) \ No newline at end of file diff --git a/extern/bullet2/BulletDynamics/Character/btCharacterControllerInterface.h b/extern/bullet2/BulletDynamics/Character/btCharacterControllerInterface.h new file mode 100644 index 00000000000..19373daa241 --- /dev/null +++ b/extern/bullet2/BulletDynamics/Character/btCharacterControllerInterface.h @@ -0,0 +1,45 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2008 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CHARACTER_CONTROLLER_INTERFACE_H +#define CHARACTER_CONTROLLER_INTERFACE_H + +#include "LinearMath/btVector3.h" +#include "BulletDynamics/Dynamics/btActionInterface.h" + +class btCollisionShape; +class btRigidBody; +class btCollisionWorld; + +class btCharacterControllerInterface : public btActionInterface +{ +public: + btCharacterControllerInterface () {}; + virtual ~btCharacterControllerInterface () {}; + + virtual void setWalkDirection(const btVector3& walkDirection) = 0; + virtual void setVelocityForTimeInterval(const btVector3& velocity, btScalar timeInterval) = 0; + virtual void reset () = 0; + virtual void warp (const btVector3& origin) = 0; + + virtual void preStep ( btCollisionWorld* collisionWorld) = 0; + virtual void playerStep (btCollisionWorld* collisionWorld, btScalar dt) = 0; + virtual bool canJump () const = 0; + virtual void jump () = 0; + + virtual bool onGround () const = 0; +}; + +#endif diff --git a/extern/bullet2/BulletDynamics/Character/btKinematicCharacterController.cpp b/extern/bullet2/BulletDynamics/Character/btKinematicCharacterController.cpp new file mode 100644 index 00000000000..d551218272e --- /dev/null +++ b/extern/bullet2/BulletDynamics/Character/btKinematicCharacterController.cpp @@ -0,0 +1,553 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2008 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "LinearMath/btIDebugDraw.h" +#include "BulletCollision/CollisionDispatch/btGhostObject.h" +#include "BulletCollision/CollisionShapes/btMultiSphereShape.h" +#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h" +#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btCollisionWorld.h" +#include "LinearMath/btDefaultMotionState.h" +#include "btKinematicCharacterController.h" + + +// static helper method +static btVector3 +getNormalizedVector(const btVector3& v) +{ + btVector3 n = v.normalized(); + if (n.length() < SIMD_EPSILON) { + n.setValue(0, 0, 0); + } + return n; +} + + +///@todo Interact with dynamic objects, +///Ride kinematicly animated platforms properly +///More realistic (or maybe just a config option) falling +/// -> Should integrate falling velocity manually and use that in stepDown() +///Support jumping +///Support ducking +class btKinematicClosestNotMeRayResultCallback : public btCollisionWorld::ClosestRayResultCallback +{ +public: + btKinematicClosestNotMeRayResultCallback (btCollisionObject* me) : btCollisionWorld::ClosestRayResultCallback(btVector3(0.0, 0.0, 0.0), btVector3(0.0, 0.0, 0.0)) + { + m_me = me; + } + + virtual btScalar addSingleResult(btCollisionWorld::LocalRayResult& rayResult,bool normalInWorldSpace) + { + if (rayResult.m_collisionObject == m_me) + return 1.0; + + return ClosestRayResultCallback::addSingleResult (rayResult, normalInWorldSpace); + } +protected: + btCollisionObject* m_me; +}; + +class btKinematicClosestNotMeConvexResultCallback : public btCollisionWorld::ClosestConvexResultCallback +{ +public: + btKinematicClosestNotMeConvexResultCallback (btCollisionObject* me) : btCollisionWorld::ClosestConvexResultCallback(btVector3(0.0, 0.0, 0.0), btVector3(0.0, 0.0, 0.0)) + { + m_me = me; + } + + virtual btScalar addSingleResult(btCollisionWorld::LocalConvexResult& convexResult,bool normalInWorldSpace) + { + if (convexResult.m_hitCollisionObject == m_me) + return 1.0; + + return ClosestConvexResultCallback::addSingleResult (convexResult, normalInWorldSpace); + } +protected: + btCollisionObject* m_me; +}; + +/* + * Returns the reflection direction of a ray going 'direction' hitting a surface with normal 'normal' + * + * from: http://www-cs-students.stanford.edu/~adityagp/final/node3.html + */ +btVector3 btKinematicCharacterController::computeReflectionDirection (const btVector3& direction, const btVector3& normal) +{ + return direction - (btScalar(2.0) * direction.dot(normal)) * normal; +} + +/* + * Returns the portion of 'direction' that is parallel to 'normal' + */ +btVector3 btKinematicCharacterController::parallelComponent (const btVector3& direction, const btVector3& normal) +{ + btScalar magnitude = direction.dot(normal); + return normal * magnitude; +} + +/* + * Returns the portion of 'direction' that is perpindicular to 'normal' + */ +btVector3 btKinematicCharacterController::perpindicularComponent (const btVector3& direction, const btVector3& normal) +{ + return direction - parallelComponent(direction, normal); +} + +btKinematicCharacterController::btKinematicCharacterController (btPairCachingGhostObject* ghostObject,btConvexShape* convexShape,btScalar stepHeight, int upAxis) +{ + m_upAxis = upAxis; + m_addedMargin = 0.02f; + m_walkDirection.setValue(0,0,0); + m_useGhostObjectSweepTest = true; + m_ghostObject = ghostObject; + m_stepHeight = stepHeight; + m_turnAngle = btScalar(0.0); + m_convexShape=convexShape; + m_useWalkDirection = true; // use walk direction by default, legacy behavior + m_velocityTimeInterval = 0.0; +} + +btKinematicCharacterController::~btKinematicCharacterController () +{ +} + +btPairCachingGhostObject* btKinematicCharacterController::getGhostObject() +{ + return m_ghostObject; +} + +bool btKinematicCharacterController::recoverFromPenetration ( btCollisionWorld* collisionWorld) +{ + + bool penetration = false; + + collisionWorld->getDispatcher()->dispatchAllCollisionPairs(m_ghostObject->getOverlappingPairCache(), collisionWorld->getDispatchInfo(), collisionWorld->getDispatcher()); + + m_currentPosition = m_ghostObject->getWorldTransform().getOrigin(); + + btScalar maxPen = btScalar(0.0); + for (int i = 0; i < m_ghostObject->getOverlappingPairCache()->getNumOverlappingPairs(); i++) + { + m_manifoldArray.resize(0); + + btBroadphasePair* collisionPair = &m_ghostObject->getOverlappingPairCache()->getOverlappingPairArray()[i]; + + if (collisionPair->m_algorithm) + collisionPair->m_algorithm->getAllContactManifolds(m_manifoldArray); + + + for (int j=0;jgetBody0() == m_ghostObject ? btScalar(-1.0) : btScalar(1.0); + for (int p=0;pgetNumContacts();p++) + { + const btManifoldPoint&pt = manifold->getContactPoint(p); + + if (pt.getDistance() < 0.0) + { + if (pt.getDistance() < maxPen) + { + maxPen = pt.getDistance(); + m_touchingNormal = pt.m_normalWorldOnB * directionSign;//?? + + } + m_currentPosition += pt.m_normalWorldOnB * directionSign * pt.getDistance() * btScalar(0.2); + penetration = true; + } else { + //printf("touching %f\n", pt.getDistance()); + } + } + + //manifold->clearManifold(); + } + } + btTransform newTrans = m_ghostObject->getWorldTransform(); + newTrans.setOrigin(m_currentPosition); + m_ghostObject->setWorldTransform(newTrans); +// printf("m_touchingNormal = %f,%f,%f\n",m_touchingNormal[0],m_touchingNormal[1],m_touchingNormal[2]); + return penetration; +} + +void btKinematicCharacterController::stepUp ( btCollisionWorld* world) +{ + // phase 1: up + btTransform start, end; + m_targetPosition = m_currentPosition + getUpAxisDirections()[m_upAxis] * m_stepHeight; + + start.setIdentity (); + end.setIdentity (); + + /* FIXME: Handle penetration properly */ + start.setOrigin (m_currentPosition + getUpAxisDirections()[m_upAxis] * btScalar(0.1f)); + end.setOrigin (m_targetPosition); + + btKinematicClosestNotMeConvexResultCallback callback (m_ghostObject); + callback.m_collisionFilterGroup = getGhostObject()->getBroadphaseHandle()->m_collisionFilterGroup; + callback.m_collisionFilterMask = getGhostObject()->getBroadphaseHandle()->m_collisionFilterMask; + + if (m_useGhostObjectSweepTest) + { + m_ghostObject->convexSweepTest (m_convexShape, start, end, callback, world->getDispatchInfo().m_allowedCcdPenetration); + } + else + { + world->convexSweepTest (m_convexShape, start, end, callback); + } + + if (callback.hasHit()) + { + // we moved up only a fraction of the step height + m_currentStepOffset = m_stepHeight * callback.m_closestHitFraction; + m_currentPosition.setInterpolate3 (m_currentPosition, m_targetPosition, callback.m_closestHitFraction); + } else { + m_currentStepOffset = m_stepHeight; + m_currentPosition = m_targetPosition; + } +} + +void btKinematicCharacterController::updateTargetPositionBasedOnCollision (const btVector3& hitNormal, btScalar tangentMag, btScalar normalMag) +{ + btVector3 movementDirection = m_targetPosition - m_currentPosition; + btScalar movementLength = movementDirection.length(); + if (movementLength>SIMD_EPSILON) + { + movementDirection.normalize(); + + btVector3 reflectDir = computeReflectionDirection (movementDirection, hitNormal); + reflectDir.normalize(); + + btVector3 parallelDir, perpindicularDir; + + parallelDir = parallelComponent (reflectDir, hitNormal); + perpindicularDir = perpindicularComponent (reflectDir, hitNormal); + + m_targetPosition = m_currentPosition; + if (0)//tangentMag != 0.0) + { + btVector3 parComponent = parallelDir * btScalar (tangentMag*movementLength); +// printf("parComponent=%f,%f,%f\n",parComponent[0],parComponent[1],parComponent[2]); + m_targetPosition += parComponent; + } + + if (normalMag != 0.0) + { + btVector3 perpComponent = perpindicularDir * btScalar (normalMag*movementLength); +// printf("perpComponent=%f,%f,%f\n",perpComponent[0],perpComponent[1],perpComponent[2]); + m_targetPosition += perpComponent; + } + } else + { +// printf("movementLength don't normalize a zero vector\n"); + } +} + +void btKinematicCharacterController::stepForwardAndStrafe ( btCollisionWorld* collisionWorld, const btVector3& walkMove) +{ + // printf("m_normalizedDirection=%f,%f,%f\n", + // m_normalizedDirection[0],m_normalizedDirection[1],m_normalizedDirection[2]); + // phase 2: forward and strafe + btTransform start, end; + m_targetPosition = m_currentPosition + walkMove; + start.setIdentity (); + end.setIdentity (); + + btScalar fraction = 1.0; + btScalar distance2 = (m_currentPosition-m_targetPosition).length2(); +// printf("distance2=%f\n",distance2); + + if (m_touchingContact) + { + if (m_normalizedDirection.dot(m_touchingNormal) > btScalar(0.0)) + updateTargetPositionBasedOnCollision (m_touchingNormal); + } + + int maxIter = 10; + + while (fraction > btScalar(0.01) && maxIter-- > 0) + { + start.setOrigin (m_currentPosition); + end.setOrigin (m_targetPosition); + + btKinematicClosestNotMeConvexResultCallback callback (m_ghostObject); + callback.m_collisionFilterGroup = getGhostObject()->getBroadphaseHandle()->m_collisionFilterGroup; + callback.m_collisionFilterMask = getGhostObject()->getBroadphaseHandle()->m_collisionFilterMask; + + + btScalar margin = m_convexShape->getMargin(); + m_convexShape->setMargin(margin + m_addedMargin); + + + if (m_useGhostObjectSweepTest) + { + m_ghostObject->convexSweepTest (m_convexShape, start, end, callback, collisionWorld->getDispatchInfo().m_allowedCcdPenetration); + } else + { + collisionWorld->convexSweepTest (m_convexShape, start, end, callback, collisionWorld->getDispatchInfo().m_allowedCcdPenetration); + } + + m_convexShape->setMargin(margin); + + + fraction -= callback.m_closestHitFraction; + + if (callback.hasHit()) + { + // we moved only a fraction + btScalar hitDistance = (callback.m_hitPointWorld - m_currentPosition).length(); + if (hitDistance<0.f) + { +// printf("neg dist?\n"); + } + + /* If the distance is farther than the collision margin, move */ + if (hitDistance > m_addedMargin) + { +// printf("callback.m_closestHitFraction=%f\n",callback.m_closestHitFraction); + m_currentPosition.setInterpolate3 (m_currentPosition, m_targetPosition, callback.m_closestHitFraction); + } + + updateTargetPositionBasedOnCollision (callback.m_hitNormalWorld); + btVector3 currentDir = m_targetPosition - m_currentPosition; + distance2 = currentDir.length2(); + if (distance2 > SIMD_EPSILON) + { + currentDir.normalize(); + /* See Quake2: "If velocity is against original velocity, stop ead to avoid tiny oscilations in sloping corners." */ + if (currentDir.dot(m_normalizedDirection) <= btScalar(0.0)) + { + break; + } + } else + { +// printf("currentDir: don't normalize a zero vector\n"); + break; + } + } else { + // we moved whole way + m_currentPosition = m_targetPosition; + } + + // if (callback.m_closestHitFraction == 0.f) + // break; + + } +} + +void btKinematicCharacterController::stepDown ( btCollisionWorld* collisionWorld, btScalar dt) +{ + btTransform start, end; + + // phase 3: down + btVector3 step_drop = getUpAxisDirections()[m_upAxis] * m_currentStepOffset; + btVector3 gravity_drop = getUpAxisDirections()[m_upAxis] * m_stepHeight; + m_targetPosition -= (step_drop + gravity_drop); + + start.setIdentity (); + end.setIdentity (); + + start.setOrigin (m_currentPosition); + end.setOrigin (m_targetPosition); + + btKinematicClosestNotMeConvexResultCallback callback (m_ghostObject); + callback.m_collisionFilterGroup = getGhostObject()->getBroadphaseHandle()->m_collisionFilterGroup; + callback.m_collisionFilterMask = getGhostObject()->getBroadphaseHandle()->m_collisionFilterMask; + + if (m_useGhostObjectSweepTest) + { + m_ghostObject->convexSweepTest (m_convexShape, start, end, callback, collisionWorld->getDispatchInfo().m_allowedCcdPenetration); + } else + { + collisionWorld->convexSweepTest (m_convexShape, start, end, callback, collisionWorld->getDispatchInfo().m_allowedCcdPenetration); + } + + if (callback.hasHit()) + { + // we dropped a fraction of the height -> hit floor + m_currentPosition.setInterpolate3 (m_currentPosition, m_targetPosition, callback.m_closestHitFraction); + } else { + // we dropped the full height + + m_currentPosition = m_targetPosition; + } +} + + + +void btKinematicCharacterController::setWalkDirection +( +const btVector3& walkDirection +) +{ + m_useWalkDirection = true; + m_walkDirection = walkDirection; + m_normalizedDirection = getNormalizedVector(m_walkDirection); +} + + + +void btKinematicCharacterController::setVelocityForTimeInterval +( +const btVector3& velocity, +btScalar timeInterval +) +{ +// printf("setVelocity!\n"); +// printf(" interval: %f\n", timeInterval); +// printf(" velocity: (%f, %f, %f)\n", +// velocity.x(), velocity.y(), velocity.z()); + + m_useWalkDirection = false; + m_walkDirection = velocity; + m_normalizedDirection = getNormalizedVector(m_walkDirection); + m_velocityTimeInterval = timeInterval; +} + + + +void btKinematicCharacterController::reset () +{ +} + +void btKinematicCharacterController::warp (const btVector3& origin) +{ + btTransform xform; + xform.setIdentity(); + xform.setOrigin (origin); + m_ghostObject->setWorldTransform (xform); +} + + +void btKinematicCharacterController::preStep ( btCollisionWorld* collisionWorld) +{ + + int numPenetrationLoops = 0; + m_touchingContact = false; + while (recoverFromPenetration (collisionWorld)) + { + numPenetrationLoops++; + m_touchingContact = true; + if (numPenetrationLoops > 4) + { +// printf("character could not recover from penetration = %d\n", numPenetrationLoops); + break; + } + } + + m_currentPosition = m_ghostObject->getWorldTransform().getOrigin(); + m_targetPosition = m_currentPosition; +// printf("m_targetPosition=%f,%f,%f\n",m_targetPosition[0],m_targetPosition[1],m_targetPosition[2]); + + +} + +void btKinematicCharacterController::playerStep ( btCollisionWorld* collisionWorld, btScalar dt) +{ +// printf("playerStep(): "); +// printf(" dt = %f", dt); + + // quick check... + if (!m_useWalkDirection && m_velocityTimeInterval <= 0.0) { +// printf("\n"); + return; // no motion + } + + btTransform xform; + xform = m_ghostObject->getWorldTransform (); + +// printf("walkDirection(%f,%f,%f)\n",walkDirection[0],walkDirection[1],walkDirection[2]); +// printf("walkSpeed=%f\n",walkSpeed); + + stepUp (collisionWorld); + if (m_useWalkDirection) { + stepForwardAndStrafe (collisionWorld, m_walkDirection); + } else { + //printf(" time: %f", m_velocityTimeInterval); + // still have some time left for moving! + btScalar dtMoving = + (dt < m_velocityTimeInterval) ? dt : m_velocityTimeInterval; + m_velocityTimeInterval -= dt; + + // how far will we move while we are moving? + btVector3 move = m_walkDirection * dtMoving; + + // printf(" dtMoving: %f", dtMoving); + + // okay, step + stepForwardAndStrafe(collisionWorld, move); + } + stepDown (collisionWorld, dt); + + // printf("\n"); + + xform.setOrigin (m_currentPosition); + m_ghostObject->setWorldTransform (xform); +} + +void btKinematicCharacterController::setFallSpeed (btScalar fallSpeed) +{ + m_fallSpeed = fallSpeed; +} + +void btKinematicCharacterController::setJumpSpeed (btScalar jumpSpeed) +{ + m_jumpSpeed = jumpSpeed; +} + +void btKinematicCharacterController::setMaxJumpHeight (btScalar maxJumpHeight) +{ + m_maxJumpHeight = maxJumpHeight; +} + +bool btKinematicCharacterController::canJump () const +{ + return onGround(); +} + +void btKinematicCharacterController::jump () +{ + if (!canJump()) + return; + +#if 0 + currently no jumping. + btTransform xform; + m_rigidBody->getMotionState()->getWorldTransform (xform); + btVector3 up = xform.getBasis()[1]; + up.normalize (); + btScalar magnitude = (btScalar(1.0)/m_rigidBody->getInvMass()) * btScalar(8.0); + m_rigidBody->applyCentralImpulse (up * magnitude); +#endif +} + +bool btKinematicCharacterController::onGround () const +{ + return true; +} + + +void btKinematicCharacterController::debugDraw(btIDebugDraw* debugDrawer) +{ +} + + +btVector3* btKinematicCharacterController::getUpAxisDirections() +{ + static btVector3 sUpAxisDirection[3] = { btVector3(1.0f, 0.0f, 0.0f), btVector3(0.0f, 1.0f, 0.0f), btVector3(0.0f, 0.0f, 1.0f) }; + + return sUpAxisDirection; +} \ No newline at end of file diff --git a/extern/bullet2/BulletDynamics/Character/btKinematicCharacterController.h b/extern/bullet2/BulletDynamics/Character/btKinematicCharacterController.h new file mode 100644 index 00000000000..16bf5df7e70 --- /dev/null +++ b/extern/bullet2/BulletDynamics/Character/btKinematicCharacterController.h @@ -0,0 +1,145 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2008 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef KINEMATIC_CHARACTER_CONTROLLER_H +#define KINEMATIC_CHARACTER_CONTROLLER_H + +#include "LinearMath/btVector3.h" + +#include "btCharacterControllerInterface.h" + +#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" + + +class btCollisionShape; +class btRigidBody; +class btCollisionWorld; +class btCollisionDispatcher; +class btPairCachingGhostObject; + +///btKinematicCharacterController is an object that supports a sliding motion in a world. +///It uses a ghost object and convex sweep test to test for upcoming collisions. This is combined with discrete collision detection to recover from penetrations. +///Interaction between btKinematicCharacterController and dynamic rigid bodies needs to be explicity implemented by the user. +class btKinematicCharacterController : public btCharacterControllerInterface +{ +protected: + + btScalar m_halfHeight; + + btPairCachingGhostObject* m_ghostObject; + btConvexShape* m_convexShape;//is also in m_ghostObject, but it needs to be convex, so we store it here to avoid upcast + + btScalar m_fallSpeed; + btScalar m_jumpSpeed; + btScalar m_maxJumpHeight; + + btScalar m_turnAngle; + + btScalar m_stepHeight; + + btScalar m_addedMargin;//@todo: remove this and fix the code + + ///this is the desired walk direction, set by the user + btVector3 m_walkDirection; + btVector3 m_normalizedDirection; + + //some internal variables + btVector3 m_currentPosition; + btScalar m_currentStepOffset; + btVector3 m_targetPosition; + + ///keep track of the contact manifolds + btManifoldArray m_manifoldArray; + + bool m_touchingContact; + btVector3 m_touchingNormal; + + bool m_useGhostObjectSweepTest; + bool m_useWalkDirection; + btScalar m_velocityTimeInterval; + int m_upAxis; + + static btVector3* getUpAxisDirections(); + + btVector3 computeReflectionDirection (const btVector3& direction, const btVector3& normal); + btVector3 parallelComponent (const btVector3& direction, const btVector3& normal); + btVector3 perpindicularComponent (const btVector3& direction, const btVector3& normal); + + bool recoverFromPenetration ( btCollisionWorld* collisionWorld); + void stepUp (btCollisionWorld* collisionWorld); + void updateTargetPositionBasedOnCollision (const btVector3& hit_normal, btScalar tangentMag = btScalar(0.0), btScalar normalMag = btScalar(1.0)); + void stepForwardAndStrafe (btCollisionWorld* collisionWorld, const btVector3& walkMove); + void stepDown (btCollisionWorld* collisionWorld, btScalar dt); +public: + btKinematicCharacterController (btPairCachingGhostObject* ghostObject,btConvexShape* convexShape,btScalar stepHeight, int upAxis = 1); + ~btKinematicCharacterController (); + + + ///btActionInterface interface + virtual void updateAction( btCollisionWorld* collisionWorld,btScalar deltaTime) + { + preStep ( collisionWorld); + playerStep (collisionWorld, deltaTime); + } + + ///btActionInterface interface + void debugDraw(btIDebugDraw* debugDrawer); + + void setUpAxis (int axis) + { + if (axis < 0) + axis = 0; + if (axis > 2) + axis = 2; + m_upAxis = axis; + } + + /// This should probably be called setPositionIncrementPerSimulatorStep. + /// This is neither a direction nor a velocity, but the amount to + /// increment the position each simulation iteration, regardless + /// of dt. + /// This call will reset any velocity set by setVelocityForTimeInterval(). + virtual void setWalkDirection(const btVector3& walkDirection); + + /// Caller provides a velocity with which the character should move for + /// the given time period. After the time period, velocity is reset + /// to zero. + /// This call will reset any walk direction set by setWalkDirection(). + /// Negative time intervals will result in no motion. + virtual void setVelocityForTimeInterval(const btVector3& velocity, + btScalar timeInterval); + + void reset (); + void warp (const btVector3& origin); + + void preStep ( btCollisionWorld* collisionWorld); + void playerStep ( btCollisionWorld* collisionWorld, btScalar dt); + + void setFallSpeed (btScalar fallSpeed); + void setJumpSpeed (btScalar jumpSpeed); + void setMaxJumpHeight (btScalar maxJumpHeight); + bool canJump () const; + void jump (); + + btPairCachingGhostObject* getGhostObject(); + void setUseGhostSweepTest(bool useGhostObjectSweepTest) + { + m_useGhostObjectSweepTest = useGhostObjectSweepTest; + } + + bool onGround () const; +}; + +#endif // KINEMATIC_CHARACTER_CONTROLLER_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp new file mode 100644 index 00000000000..bf77c495404 --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp @@ -0,0 +1,1117 @@ +/* +Bullet Continuous Collision Detection and Physics Library +btConeTwistConstraint is Copyright (c) 2007 Starbreeze Studios + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Written by: Marcus Hennix +*/ + + +#include "btConeTwistConstraint.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include "LinearMath/btTransformUtil.h" +#include "LinearMath/btMinMax.h" +#include + + + +//#define CONETWIST_USE_OBSOLETE_SOLVER true +#define CONETWIST_USE_OBSOLETE_SOLVER false +#define CONETWIST_DEF_FIX_THRESH btScalar(.05f) + + +SIMD_FORCE_INLINE btScalar computeAngularImpulseDenominator(const btVector3& axis, const btMatrix3x3& invInertiaWorld) +{ + btVector3 vec = axis * invInertiaWorld; + return axis.dot(vec); +} + + + + +btConeTwistConstraint::btConeTwistConstraint(btRigidBody& rbA,btRigidBody& rbB, + const btTransform& rbAFrame,const btTransform& rbBFrame) + :btTypedConstraint(CONETWIST_CONSTRAINT_TYPE, rbA,rbB),m_rbAFrame(rbAFrame),m_rbBFrame(rbBFrame), + m_angularOnly(false), + m_useSolveConstraintObsolete(CONETWIST_USE_OBSOLETE_SOLVER) +{ + init(); +} + +btConeTwistConstraint::btConeTwistConstraint(btRigidBody& rbA,const btTransform& rbAFrame) + :btTypedConstraint(CONETWIST_CONSTRAINT_TYPE,rbA),m_rbAFrame(rbAFrame), + m_angularOnly(false), + m_useSolveConstraintObsolete(CONETWIST_USE_OBSOLETE_SOLVER) +{ + m_rbBFrame = m_rbAFrame; + init(); +} + + +void btConeTwistConstraint::init() +{ + m_angularOnly = false; + m_solveTwistLimit = false; + m_solveSwingLimit = false; + m_bMotorEnabled = false; + m_maxMotorImpulse = btScalar(-1); + + setLimit(btScalar(BT_LARGE_FLOAT), btScalar(BT_LARGE_FLOAT), btScalar(BT_LARGE_FLOAT)); + m_damping = btScalar(0.01); + m_fixThresh = CONETWIST_DEF_FIX_THRESH; + m_flags = 0; + m_linCFM = btScalar(0.f); + m_linERP = btScalar(0.7f); + m_angCFM = btScalar(0.f); +} + + +void btConeTwistConstraint::getInfo1 (btConstraintInfo1* info) +{ + if (m_useSolveConstraintObsolete) + { + info->m_numConstraintRows = 0; + info->nub = 0; + } + else + { + info->m_numConstraintRows = 3; + info->nub = 3; + calcAngleInfo2(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform(),m_rbA.getInvInertiaTensorWorld(),m_rbB.getInvInertiaTensorWorld()); + if(m_solveSwingLimit) + { + info->m_numConstraintRows++; + info->nub--; + if((m_swingSpan1 < m_fixThresh) && (m_swingSpan2 < m_fixThresh)) + { + info->m_numConstraintRows++; + info->nub--; + } + } + if(m_solveTwistLimit) + { + info->m_numConstraintRows++; + info->nub--; + } + } +} + +void btConeTwistConstraint::getInfo1NonVirtual (btConstraintInfo1* info) +{ + //always reserve 6 rows: object transform is not available on SPU + info->m_numConstraintRows = 6; + info->nub = 0; + +} + + +void btConeTwistConstraint::getInfo2 (btConstraintInfo2* info) +{ + getInfo2NonVirtual(info,m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform(),m_rbA.getInvInertiaTensorWorld(),m_rbB.getInvInertiaTensorWorld()); +} + +void btConeTwistConstraint::getInfo2NonVirtual (btConstraintInfo2* info,const btTransform& transA,const btTransform& transB,const btMatrix3x3& invInertiaWorldA,const btMatrix3x3& invInertiaWorldB) +{ + calcAngleInfo2(transA,transB,invInertiaWorldA,invInertiaWorldB); + + btAssert(!m_useSolveConstraintObsolete); + // set jacobian + info->m_J1linearAxis[0] = 1; + info->m_J1linearAxis[info->rowskip+1] = 1; + info->m_J1linearAxis[2*info->rowskip+2] = 1; + btVector3 a1 = transA.getBasis() * m_rbAFrame.getOrigin(); + { + btVector3* angular0 = (btVector3*)(info->m_J1angularAxis); + btVector3* angular1 = (btVector3*)(info->m_J1angularAxis+info->rowskip); + btVector3* angular2 = (btVector3*)(info->m_J1angularAxis+2*info->rowskip); + btVector3 a1neg = -a1; + a1neg.getSkewSymmetricMatrix(angular0,angular1,angular2); + } + btVector3 a2 = transB.getBasis() * m_rbBFrame.getOrigin(); + { + btVector3* angular0 = (btVector3*)(info->m_J2angularAxis); + btVector3* angular1 = (btVector3*)(info->m_J2angularAxis+info->rowskip); + btVector3* angular2 = (btVector3*)(info->m_J2angularAxis+2*info->rowskip); + a2.getSkewSymmetricMatrix(angular0,angular1,angular2); + } + // set right hand side + btScalar linERP = (m_flags & BT_CONETWIST_FLAGS_LIN_ERP) ? m_linERP : info->erp; + btScalar k = info->fps * linERP; + int j; + for (j=0; j<3; j++) + { + info->m_constraintError[j*info->rowskip] = k * (a2[j] + transB.getOrigin()[j] - a1[j] - transA.getOrigin()[j]); + info->m_lowerLimit[j*info->rowskip] = -SIMD_INFINITY; + info->m_upperLimit[j*info->rowskip] = SIMD_INFINITY; + if(m_flags & BT_CONETWIST_FLAGS_LIN_CFM) + { + info->cfm[j*info->rowskip] = m_linCFM; + } + } + int row = 3; + int srow = row * info->rowskip; + btVector3 ax1; + // angular limits + if(m_solveSwingLimit) + { + btScalar *J1 = info->m_J1angularAxis; + btScalar *J2 = info->m_J2angularAxis; + if((m_swingSpan1 < m_fixThresh) && (m_swingSpan2 < m_fixThresh)) + { + btTransform trA = transA*m_rbAFrame; + btVector3 p = trA.getBasis().getColumn(1); + btVector3 q = trA.getBasis().getColumn(2); + int srow1 = srow + info->rowskip; + J1[srow+0] = p[0]; + J1[srow+1] = p[1]; + J1[srow+2] = p[2]; + J1[srow1+0] = q[0]; + J1[srow1+1] = q[1]; + J1[srow1+2] = q[2]; + J2[srow+0] = -p[0]; + J2[srow+1] = -p[1]; + J2[srow+2] = -p[2]; + J2[srow1+0] = -q[0]; + J2[srow1+1] = -q[1]; + J2[srow1+2] = -q[2]; + btScalar fact = info->fps * m_relaxationFactor; + info->m_constraintError[srow] = fact * m_swingAxis.dot(p); + info->m_constraintError[srow1] = fact * m_swingAxis.dot(q); + info->m_lowerLimit[srow] = -SIMD_INFINITY; + info->m_upperLimit[srow] = SIMD_INFINITY; + info->m_lowerLimit[srow1] = -SIMD_INFINITY; + info->m_upperLimit[srow1] = SIMD_INFINITY; + srow = srow1 + info->rowskip; + } + else + { + ax1 = m_swingAxis * m_relaxationFactor * m_relaxationFactor; + J1[srow+0] = ax1[0]; + J1[srow+1] = ax1[1]; + J1[srow+2] = ax1[2]; + J2[srow+0] = -ax1[0]; + J2[srow+1] = -ax1[1]; + J2[srow+2] = -ax1[2]; + btScalar k = info->fps * m_biasFactor; + + info->m_constraintError[srow] = k * m_swingCorrection; + if(m_flags & BT_CONETWIST_FLAGS_ANG_CFM) + { + info->cfm[srow] = m_angCFM; + } + // m_swingCorrection is always positive or 0 + info->m_lowerLimit[srow] = 0; + info->m_upperLimit[srow] = SIMD_INFINITY; + srow += info->rowskip; + } + } + if(m_solveTwistLimit) + { + ax1 = m_twistAxis * m_relaxationFactor * m_relaxationFactor; + btScalar *J1 = info->m_J1angularAxis; + btScalar *J2 = info->m_J2angularAxis; + J1[srow+0] = ax1[0]; + J1[srow+1] = ax1[1]; + J1[srow+2] = ax1[2]; + J2[srow+0] = -ax1[0]; + J2[srow+1] = -ax1[1]; + J2[srow+2] = -ax1[2]; + btScalar k = info->fps * m_biasFactor; + info->m_constraintError[srow] = k * m_twistCorrection; + if(m_flags & BT_CONETWIST_FLAGS_ANG_CFM) + { + info->cfm[srow] = m_angCFM; + } + if(m_twistSpan > 0.0f) + { + + if(m_twistCorrection > 0.0f) + { + info->m_lowerLimit[srow] = 0; + info->m_upperLimit[srow] = SIMD_INFINITY; + } + else + { + info->m_lowerLimit[srow] = -SIMD_INFINITY; + info->m_upperLimit[srow] = 0; + } + } + else + { + info->m_lowerLimit[srow] = -SIMD_INFINITY; + info->m_upperLimit[srow] = SIMD_INFINITY; + } + srow += info->rowskip; + } +} + + + +void btConeTwistConstraint::buildJacobian() +{ + if (m_useSolveConstraintObsolete) + { + m_appliedImpulse = btScalar(0.); + m_accTwistLimitImpulse = btScalar(0.); + m_accSwingLimitImpulse = btScalar(0.); + m_accMotorImpulse = btVector3(0.,0.,0.); + + if (!m_angularOnly) + { + btVector3 pivotAInW = m_rbA.getCenterOfMassTransform()*m_rbAFrame.getOrigin(); + btVector3 pivotBInW = m_rbB.getCenterOfMassTransform()*m_rbBFrame.getOrigin(); + btVector3 relPos = pivotBInW - pivotAInW; + + btVector3 normal[3]; + if (relPos.length2() > SIMD_EPSILON) + { + normal[0] = relPos.normalized(); + } + else + { + normal[0].setValue(btScalar(1.0),0,0); + } + + btPlaneSpace1(normal[0], normal[1], normal[2]); + + for (int i=0;i<3;i++) + { + new (&m_jac[i]) btJacobianEntry( + m_rbA.getCenterOfMassTransform().getBasis().transpose(), + m_rbB.getCenterOfMassTransform().getBasis().transpose(), + pivotAInW - m_rbA.getCenterOfMassPosition(), + pivotBInW - m_rbB.getCenterOfMassPosition(), + normal[i], + m_rbA.getInvInertiaDiagLocal(), + m_rbA.getInvMass(), + m_rbB.getInvInertiaDiagLocal(), + m_rbB.getInvMass()); + } + } + + calcAngleInfo2(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform(),m_rbA.getInvInertiaTensorWorld(),m_rbB.getInvInertiaTensorWorld()); + } +} + + + +void btConeTwistConstraint::solveConstraintObsolete(btRigidBody& bodyA,btRigidBody& bodyB,btScalar timeStep) +{ + #ifndef __SPU__ + if (m_useSolveConstraintObsolete) + { + btVector3 pivotAInW = m_rbA.getCenterOfMassTransform()*m_rbAFrame.getOrigin(); + btVector3 pivotBInW = m_rbB.getCenterOfMassTransform()*m_rbBFrame.getOrigin(); + + btScalar tau = btScalar(0.3); + + //linear part + if (!m_angularOnly) + { + btVector3 rel_pos1 = pivotAInW - m_rbA.getCenterOfMassPosition(); + btVector3 rel_pos2 = pivotBInW - m_rbB.getCenterOfMassPosition(); + + btVector3 vel1; + bodyA.internalGetVelocityInLocalPointObsolete(rel_pos1,vel1); + btVector3 vel2; + bodyB.internalGetVelocityInLocalPointObsolete(rel_pos2,vel2); + btVector3 vel = vel1 - vel2; + + for (int i=0;i<3;i++) + { + const btVector3& normal = m_jac[i].m_linearJointAxis; + btScalar jacDiagABInv = btScalar(1.) / m_jac[i].getDiagonal(); + + btScalar rel_vel; + rel_vel = normal.dot(vel); + //positional error (zeroth order error) + btScalar depth = -(pivotAInW - pivotBInW).dot(normal); //this is the error projected on the normal + btScalar impulse = depth*tau/timeStep * jacDiagABInv - rel_vel * jacDiagABInv; + m_appliedImpulse += impulse; + + btVector3 ftorqueAxis1 = rel_pos1.cross(normal); + btVector3 ftorqueAxis2 = rel_pos2.cross(normal); + bodyA.internalApplyImpulse(normal*m_rbA.getInvMass(), m_rbA.getInvInertiaTensorWorld()*ftorqueAxis1,impulse); + bodyB.internalApplyImpulse(normal*m_rbB.getInvMass(), m_rbB.getInvInertiaTensorWorld()*ftorqueAxis2,-impulse); + + } + } + + // apply motor + if (m_bMotorEnabled) + { + // compute current and predicted transforms + btTransform trACur = m_rbA.getCenterOfMassTransform(); + btTransform trBCur = m_rbB.getCenterOfMassTransform(); + btVector3 omegaA; bodyA.internalGetAngularVelocity(omegaA); + btVector3 omegaB; bodyB.internalGetAngularVelocity(omegaB); + btTransform trAPred; trAPred.setIdentity(); + btVector3 zerovec(0,0,0); + btTransformUtil::integrateTransform( + trACur, zerovec, omegaA, timeStep, trAPred); + btTransform trBPred; trBPred.setIdentity(); + btTransformUtil::integrateTransform( + trBCur, zerovec, omegaB, timeStep, trBPred); + + // compute desired transforms in world + btTransform trPose(m_qTarget); + btTransform trABDes = m_rbBFrame * trPose * m_rbAFrame.inverse(); + btTransform trADes = trBPred * trABDes; + btTransform trBDes = trAPred * trABDes.inverse(); + + // compute desired omegas in world + btVector3 omegaADes, omegaBDes; + + btTransformUtil::calculateVelocity(trACur, trADes, timeStep, zerovec, omegaADes); + btTransformUtil::calculateVelocity(trBCur, trBDes, timeStep, zerovec, omegaBDes); + + // compute delta omegas + btVector3 dOmegaA = omegaADes - omegaA; + btVector3 dOmegaB = omegaBDes - omegaB; + + // compute weighted avg axis of dOmega (weighting based on inertias) + btVector3 axisA, axisB; + btScalar kAxisAInv = 0, kAxisBInv = 0; + + if (dOmegaA.length2() > SIMD_EPSILON) + { + axisA = dOmegaA.normalized(); + kAxisAInv = getRigidBodyA().computeAngularImpulseDenominator(axisA); + } + + if (dOmegaB.length2() > SIMD_EPSILON) + { + axisB = dOmegaB.normalized(); + kAxisBInv = getRigidBodyB().computeAngularImpulseDenominator(axisB); + } + + btVector3 avgAxis = kAxisAInv * axisA + kAxisBInv * axisB; + + static bool bDoTorque = true; + if (bDoTorque && avgAxis.length2() > SIMD_EPSILON) + { + avgAxis.normalize(); + kAxisAInv = getRigidBodyA().computeAngularImpulseDenominator(avgAxis); + kAxisBInv = getRigidBodyB().computeAngularImpulseDenominator(avgAxis); + btScalar kInvCombined = kAxisAInv + kAxisBInv; + + btVector3 impulse = (kAxisAInv * dOmegaA - kAxisBInv * dOmegaB) / + (kInvCombined * kInvCombined); + + if (m_maxMotorImpulse >= 0) + { + btScalar fMaxImpulse = m_maxMotorImpulse; + if (m_bNormalizedMotorStrength) + fMaxImpulse = fMaxImpulse/kAxisAInv; + + btVector3 newUnclampedAccImpulse = m_accMotorImpulse + impulse; + btScalar newUnclampedMag = newUnclampedAccImpulse.length(); + if (newUnclampedMag > fMaxImpulse) + { + newUnclampedAccImpulse.normalize(); + newUnclampedAccImpulse *= fMaxImpulse; + impulse = newUnclampedAccImpulse - m_accMotorImpulse; + } + m_accMotorImpulse += impulse; + } + + btScalar impulseMag = impulse.length(); + btVector3 impulseAxis = impulse / impulseMag; + + bodyA.internalApplyImpulse(btVector3(0,0,0), m_rbA.getInvInertiaTensorWorld()*impulseAxis, impulseMag); + bodyB.internalApplyImpulse(btVector3(0,0,0), m_rbB.getInvInertiaTensorWorld()*impulseAxis, -impulseMag); + + } + } + else if (m_damping > SIMD_EPSILON) // no motor: do a little damping + { + btVector3 angVelA; bodyA.internalGetAngularVelocity(angVelA); + btVector3 angVelB; bodyB.internalGetAngularVelocity(angVelB); + btVector3 relVel = angVelB - angVelA; + if (relVel.length2() > SIMD_EPSILON) + { + btVector3 relVelAxis = relVel.normalized(); + btScalar m_kDamping = btScalar(1.) / + (getRigidBodyA().computeAngularImpulseDenominator(relVelAxis) + + getRigidBodyB().computeAngularImpulseDenominator(relVelAxis)); + btVector3 impulse = m_damping * m_kDamping * relVel; + + btScalar impulseMag = impulse.length(); + btVector3 impulseAxis = impulse / impulseMag; + bodyA.internalApplyImpulse(btVector3(0,0,0), m_rbA.getInvInertiaTensorWorld()*impulseAxis, impulseMag); + bodyB.internalApplyImpulse(btVector3(0,0,0), m_rbB.getInvInertiaTensorWorld()*impulseAxis, -impulseMag); + } + } + + // joint limits + { + ///solve angular part + btVector3 angVelA; + bodyA.internalGetAngularVelocity(angVelA); + btVector3 angVelB; + bodyB.internalGetAngularVelocity(angVelB); + + // solve swing limit + if (m_solveSwingLimit) + { + btScalar amplitude = m_swingLimitRatio * m_swingCorrection*m_biasFactor/timeStep; + btScalar relSwingVel = (angVelB - angVelA).dot(m_swingAxis); + if (relSwingVel > 0) + amplitude += m_swingLimitRatio * relSwingVel * m_relaxationFactor; + btScalar impulseMag = amplitude * m_kSwing; + + // Clamp the accumulated impulse + btScalar temp = m_accSwingLimitImpulse; + m_accSwingLimitImpulse = btMax(m_accSwingLimitImpulse + impulseMag, btScalar(0.0) ); + impulseMag = m_accSwingLimitImpulse - temp; + + btVector3 impulse = m_swingAxis * impulseMag; + + // don't let cone response affect twist + // (this can happen since body A's twist doesn't match body B's AND we use an elliptical cone limit) + { + btVector3 impulseTwistCouple = impulse.dot(m_twistAxisA) * m_twistAxisA; + btVector3 impulseNoTwistCouple = impulse - impulseTwistCouple; + impulse = impulseNoTwistCouple; + } + + impulseMag = impulse.length(); + btVector3 noTwistSwingAxis = impulse / impulseMag; + + bodyA.internalApplyImpulse(btVector3(0,0,0), m_rbA.getInvInertiaTensorWorld()*noTwistSwingAxis, impulseMag); + bodyB.internalApplyImpulse(btVector3(0,0,0), m_rbB.getInvInertiaTensorWorld()*noTwistSwingAxis, -impulseMag); + } + + + // solve twist limit + if (m_solveTwistLimit) + { + btScalar amplitude = m_twistLimitRatio * m_twistCorrection*m_biasFactor/timeStep; + btScalar relTwistVel = (angVelB - angVelA).dot( m_twistAxis ); + if (relTwistVel > 0) // only damp when moving towards limit (m_twistAxis flipping is important) + amplitude += m_twistLimitRatio * relTwistVel * m_relaxationFactor; + btScalar impulseMag = amplitude * m_kTwist; + + // Clamp the accumulated impulse + btScalar temp = m_accTwistLimitImpulse; + m_accTwistLimitImpulse = btMax(m_accTwistLimitImpulse + impulseMag, btScalar(0.0) ); + impulseMag = m_accTwistLimitImpulse - temp; + + btVector3 impulse = m_twistAxis * impulseMag; + + bodyA.internalApplyImpulse(btVector3(0,0,0), m_rbA.getInvInertiaTensorWorld()*m_twistAxis,impulseMag); + bodyB.internalApplyImpulse(btVector3(0,0,0), m_rbB.getInvInertiaTensorWorld()*m_twistAxis,-impulseMag); + } + } + } +#else +btAssert(0); +#endif //__SPU__ +} + + + + +void btConeTwistConstraint::updateRHS(btScalar timeStep) +{ + (void)timeStep; + +} + + +#ifndef __SPU__ +void btConeTwistConstraint::calcAngleInfo() +{ + m_swingCorrection = btScalar(0.); + m_twistLimitSign = btScalar(0.); + m_solveTwistLimit = false; + m_solveSwingLimit = false; + + btVector3 b1Axis1,b1Axis2,b1Axis3; + btVector3 b2Axis1,b2Axis2; + + b1Axis1 = getRigidBodyA().getCenterOfMassTransform().getBasis() * this->m_rbAFrame.getBasis().getColumn(0); + b2Axis1 = getRigidBodyB().getCenterOfMassTransform().getBasis() * this->m_rbBFrame.getBasis().getColumn(0); + + btScalar swing1=btScalar(0.),swing2 = btScalar(0.); + + btScalar swx=btScalar(0.),swy = btScalar(0.); + btScalar thresh = btScalar(10.); + btScalar fact; + + // Get Frame into world space + if (m_swingSpan1 >= btScalar(0.05f)) + { + b1Axis2 = getRigidBodyA().getCenterOfMassTransform().getBasis() * this->m_rbAFrame.getBasis().getColumn(1); + swx = b2Axis1.dot(b1Axis1); + swy = b2Axis1.dot(b1Axis2); + swing1 = btAtan2Fast(swy, swx); + fact = (swy*swy + swx*swx) * thresh * thresh; + fact = fact / (fact + btScalar(1.0)); + swing1 *= fact; + } + + if (m_swingSpan2 >= btScalar(0.05f)) + { + b1Axis3 = getRigidBodyA().getCenterOfMassTransform().getBasis() * this->m_rbAFrame.getBasis().getColumn(2); + swx = b2Axis1.dot(b1Axis1); + swy = b2Axis1.dot(b1Axis3); + swing2 = btAtan2Fast(swy, swx); + fact = (swy*swy + swx*swx) * thresh * thresh; + fact = fact / (fact + btScalar(1.0)); + swing2 *= fact; + } + + btScalar RMaxAngle1Sq = 1.0f / (m_swingSpan1*m_swingSpan1); + btScalar RMaxAngle2Sq = 1.0f / (m_swingSpan2*m_swingSpan2); + btScalar EllipseAngle = btFabs(swing1*swing1)* RMaxAngle1Sq + btFabs(swing2*swing2) * RMaxAngle2Sq; + + if (EllipseAngle > 1.0f) + { + m_swingCorrection = EllipseAngle-1.0f; + m_solveSwingLimit = true; + // Calculate necessary axis & factors + m_swingAxis = b2Axis1.cross(b1Axis2* b2Axis1.dot(b1Axis2) + b1Axis3* b2Axis1.dot(b1Axis3)); + m_swingAxis.normalize(); + btScalar swingAxisSign = (b2Axis1.dot(b1Axis1) >= 0.0f) ? 1.0f : -1.0f; + m_swingAxis *= swingAxisSign; + } + + // Twist limits + if (m_twistSpan >= btScalar(0.)) + { + btVector3 b2Axis2 = getRigidBodyB().getCenterOfMassTransform().getBasis() * this->m_rbBFrame.getBasis().getColumn(1); + btQuaternion rotationArc = shortestArcQuat(b2Axis1,b1Axis1); + btVector3 TwistRef = quatRotate(rotationArc,b2Axis2); + btScalar twist = btAtan2Fast( TwistRef.dot(b1Axis3), TwistRef.dot(b1Axis2) ); + m_twistAngle = twist; + +// btScalar lockedFreeFactor = (m_twistSpan > btScalar(0.05f)) ? m_limitSoftness : btScalar(0.); + btScalar lockedFreeFactor = (m_twistSpan > btScalar(0.05f)) ? btScalar(1.0f) : btScalar(0.); + if (twist <= -m_twistSpan*lockedFreeFactor) + { + m_twistCorrection = -(twist + m_twistSpan); + m_solveTwistLimit = true; + m_twistAxis = (b2Axis1 + b1Axis1) * 0.5f; + m_twistAxis.normalize(); + m_twistAxis *= -1.0f; + } + else if (twist > m_twistSpan*lockedFreeFactor) + { + m_twistCorrection = (twist - m_twistSpan); + m_solveTwistLimit = true; + m_twistAxis = (b2Axis1 + b1Axis1) * 0.5f; + m_twistAxis.normalize(); + } + } +} +#endif //__SPU__ + +static btVector3 vTwist(1,0,0); // twist axis in constraint's space + + + +void btConeTwistConstraint::calcAngleInfo2(const btTransform& transA, const btTransform& transB, const btMatrix3x3& invInertiaWorldA,const btMatrix3x3& invInertiaWorldB) +{ + m_swingCorrection = btScalar(0.); + m_twistLimitSign = btScalar(0.); + m_solveTwistLimit = false; + m_solveSwingLimit = false; + // compute rotation of A wrt B (in constraint space) + if (m_bMotorEnabled && (!m_useSolveConstraintObsolete)) + { // it is assumed that setMotorTarget() was alredy called + // and motor target m_qTarget is within constraint limits + // TODO : split rotation to pure swing and pure twist + // compute desired transforms in world + btTransform trPose(m_qTarget); + btTransform trA = transA * m_rbAFrame; + btTransform trB = transB * m_rbBFrame; + btTransform trDeltaAB = trB * trPose * trA.inverse(); + btQuaternion qDeltaAB = trDeltaAB.getRotation(); + btVector3 swingAxis = btVector3(qDeltaAB.x(), qDeltaAB.y(), qDeltaAB.z()); + m_swingAxis = swingAxis; + m_swingAxis.normalize(); + m_swingCorrection = qDeltaAB.getAngle(); + if(!btFuzzyZero(m_swingCorrection)) + { + m_solveSwingLimit = true; + } + return; + } + + + { + // compute rotation of A wrt B (in constraint space) + btQuaternion qA = transA.getRotation() * m_rbAFrame.getRotation(); + btQuaternion qB = transB.getRotation() * m_rbBFrame.getRotation(); + btQuaternion qAB = qB.inverse() * qA; + // split rotation into cone and twist + // (all this is done from B's perspective. Maybe I should be averaging axes...) + btVector3 vConeNoTwist = quatRotate(qAB, vTwist); vConeNoTwist.normalize(); + btQuaternion qABCone = shortestArcQuat(vTwist, vConeNoTwist); qABCone.normalize(); + btQuaternion qABTwist = qABCone.inverse() * qAB; qABTwist.normalize(); + + if (m_swingSpan1 >= m_fixThresh && m_swingSpan2 >= m_fixThresh) + { + btScalar swingAngle, swingLimit = 0; btVector3 swingAxis; + computeConeLimitInfo(qABCone, swingAngle, swingAxis, swingLimit); + + if (swingAngle > swingLimit * m_limitSoftness) + { + m_solveSwingLimit = true; + + // compute limit ratio: 0->1, where + // 0 == beginning of soft limit + // 1 == hard/real limit + m_swingLimitRatio = 1.f; + if (swingAngle < swingLimit && m_limitSoftness < 1.f - SIMD_EPSILON) + { + m_swingLimitRatio = (swingAngle - swingLimit * m_limitSoftness)/ + (swingLimit - swingLimit * m_limitSoftness); + } + + // swing correction tries to get back to soft limit + m_swingCorrection = swingAngle - (swingLimit * m_limitSoftness); + + // adjustment of swing axis (based on ellipse normal) + adjustSwingAxisToUseEllipseNormal(swingAxis); + + // Calculate necessary axis & factors + m_swingAxis = quatRotate(qB, -swingAxis); + + m_twistAxisA.setValue(0,0,0); + + m_kSwing = btScalar(1.) / + (computeAngularImpulseDenominator(m_swingAxis,invInertiaWorldA) + + computeAngularImpulseDenominator(m_swingAxis,invInertiaWorldB)); + } + } + else + { + // you haven't set any limits; + // or you're trying to set at least one of the swing limits too small. (if so, do you really want a conetwist constraint?) + // anyway, we have either hinge or fixed joint + btVector3 ivA = transA.getBasis() * m_rbAFrame.getBasis().getColumn(0); + btVector3 jvA = transA.getBasis() * m_rbAFrame.getBasis().getColumn(1); + btVector3 kvA = transA.getBasis() * m_rbAFrame.getBasis().getColumn(2); + btVector3 ivB = transB.getBasis() * m_rbBFrame.getBasis().getColumn(0); + btVector3 target; + btScalar x = ivB.dot(ivA); + btScalar y = ivB.dot(jvA); + btScalar z = ivB.dot(kvA); + if((m_swingSpan1 < m_fixThresh) && (m_swingSpan2 < m_fixThresh)) + { // fixed. We'll need to add one more row to constraint + if((!btFuzzyZero(y)) || (!(btFuzzyZero(z)))) + { + m_solveSwingLimit = true; + m_swingAxis = -ivB.cross(ivA); + } + } + else + { + if(m_swingSpan1 < m_fixThresh) + { // hinge around Y axis + if(!(btFuzzyZero(y))) + { + m_solveSwingLimit = true; + if(m_swingSpan2 >= m_fixThresh) + { + y = btScalar(0.f); + btScalar span2 = btAtan2(z, x); + if(span2 > m_swingSpan2) + { + x = btCos(m_swingSpan2); + z = btSin(m_swingSpan2); + } + else if(span2 < -m_swingSpan2) + { + x = btCos(m_swingSpan2); + z = -btSin(m_swingSpan2); + } + } + } + } + else + { // hinge around Z axis + if(!btFuzzyZero(z)) + { + m_solveSwingLimit = true; + if(m_swingSpan1 >= m_fixThresh) + { + z = btScalar(0.f); + btScalar span1 = btAtan2(y, x); + if(span1 > m_swingSpan1) + { + x = btCos(m_swingSpan1); + y = btSin(m_swingSpan1); + } + else if(span1 < -m_swingSpan1) + { + x = btCos(m_swingSpan1); + y = -btSin(m_swingSpan1); + } + } + } + } + target[0] = x * ivA[0] + y * jvA[0] + z * kvA[0]; + target[1] = x * ivA[1] + y * jvA[1] + z * kvA[1]; + target[2] = x * ivA[2] + y * jvA[2] + z * kvA[2]; + target.normalize(); + m_swingAxis = -ivB.cross(target); + m_swingCorrection = m_swingAxis.length(); + m_swingAxis.normalize(); + } + } + + if (m_twistSpan >= btScalar(0.f)) + { + btVector3 twistAxis; + computeTwistLimitInfo(qABTwist, m_twistAngle, twistAxis); + + if (m_twistAngle > m_twistSpan*m_limitSoftness) + { + m_solveTwistLimit = true; + + m_twistLimitRatio = 1.f; + if (m_twistAngle < m_twistSpan && m_limitSoftness < 1.f - SIMD_EPSILON) + { + m_twistLimitRatio = (m_twistAngle - m_twistSpan * m_limitSoftness)/ + (m_twistSpan - m_twistSpan * m_limitSoftness); + } + + // twist correction tries to get back to soft limit + m_twistCorrection = m_twistAngle - (m_twistSpan * m_limitSoftness); + + m_twistAxis = quatRotate(qB, -twistAxis); + + m_kTwist = btScalar(1.) / + (computeAngularImpulseDenominator(m_twistAxis,invInertiaWorldA) + + computeAngularImpulseDenominator(m_twistAxis,invInertiaWorldB)); + } + + if (m_solveSwingLimit) + m_twistAxisA = quatRotate(qA, -twistAxis); + } + else + { + m_twistAngle = btScalar(0.f); + } + } +} + + + +// given a cone rotation in constraint space, (pre: twist must already be removed) +// this method computes its corresponding swing angle and axis. +// more interestingly, it computes the cone/swing limit (angle) for this cone "pose". +void btConeTwistConstraint::computeConeLimitInfo(const btQuaternion& qCone, + btScalar& swingAngle, // out + btVector3& vSwingAxis, // out + btScalar& swingLimit) // out +{ + swingAngle = qCone.getAngle(); + if (swingAngle > SIMD_EPSILON) + { + vSwingAxis = btVector3(qCone.x(), qCone.y(), qCone.z()); + vSwingAxis.normalize(); + if (fabs(vSwingAxis.x()) > SIMD_EPSILON) + { + // non-zero twist?! this should never happen. + int wtf = 0; wtf = wtf; + } + + // Compute limit for given swing. tricky: + // Given a swing axis, we're looking for the intersection with the bounding cone ellipse. + // (Since we're dealing with angles, this ellipse is embedded on the surface of a sphere.) + + // For starters, compute the direction from center to surface of ellipse. + // This is just the perpendicular (ie. rotate 2D vector by PI/2) of the swing axis. + // (vSwingAxis is the cone rotation (in z,y); change vars and rotate to (x,y) coords.) + btScalar xEllipse = vSwingAxis.y(); + btScalar yEllipse = -vSwingAxis.z(); + + // Now, we use the slope of the vector (using x/yEllipse) and find the length + // of the line that intersects the ellipse: + // x^2 y^2 + // --- + --- = 1, where a and b are semi-major axes 2 and 1 respectively (ie. the limits) + // a^2 b^2 + // Do the math and it should be clear. + + swingLimit = m_swingSpan1; // if xEllipse == 0, we have a pure vSwingAxis.z rotation: just use swingspan1 + if (fabs(xEllipse) > SIMD_EPSILON) + { + btScalar surfaceSlope2 = (yEllipse*yEllipse)/(xEllipse*xEllipse); + btScalar norm = 1 / (m_swingSpan2 * m_swingSpan2); + norm += surfaceSlope2 / (m_swingSpan1 * m_swingSpan1); + btScalar swingLimit2 = (1 + surfaceSlope2) / norm; + swingLimit = sqrt(swingLimit2); + } + + // test! + /*swingLimit = m_swingSpan2; + if (fabs(vSwingAxis.z()) > SIMD_EPSILON) + { + btScalar mag_2 = m_swingSpan1*m_swingSpan1 + m_swingSpan2*m_swingSpan2; + btScalar sinphi = m_swingSpan2 / sqrt(mag_2); + btScalar phi = asin(sinphi); + btScalar theta = atan2(fabs(vSwingAxis.y()),fabs(vSwingAxis.z())); + btScalar alpha = 3.14159f - theta - phi; + btScalar sinalpha = sin(alpha); + swingLimit = m_swingSpan1 * sinphi/sinalpha; + }*/ + } + else if (swingAngle < 0) + { + // this should never happen! + int wtf = 0; wtf = wtf; + } +} + +btVector3 btConeTwistConstraint::GetPointForAngle(btScalar fAngleInRadians, btScalar fLength) const +{ + // compute x/y in ellipse using cone angle (0 -> 2*PI along surface of cone) + btScalar xEllipse = btCos(fAngleInRadians); + btScalar yEllipse = btSin(fAngleInRadians); + + // Use the slope of the vector (using x/yEllipse) and find the length + // of the line that intersects the ellipse: + // x^2 y^2 + // --- + --- = 1, where a and b are semi-major axes 2 and 1 respectively (ie. the limits) + // a^2 b^2 + // Do the math and it should be clear. + + float swingLimit = m_swingSpan1; // if xEllipse == 0, just use axis b (1) + if (fabs(xEllipse) > SIMD_EPSILON) + { + btScalar surfaceSlope2 = (yEllipse*yEllipse)/(xEllipse*xEllipse); + btScalar norm = 1 / (m_swingSpan2 * m_swingSpan2); + norm += surfaceSlope2 / (m_swingSpan1 * m_swingSpan1); + btScalar swingLimit2 = (1 + surfaceSlope2) / norm; + swingLimit = sqrt(swingLimit2); + } + + // convert into point in constraint space: + // note: twist is x-axis, swing 1 and 2 are along the z and y axes respectively + btVector3 vSwingAxis(0, xEllipse, -yEllipse); + btQuaternion qSwing(vSwingAxis, swingLimit); + btVector3 vPointInConstraintSpace(fLength,0,0); + return quatRotate(qSwing, vPointInConstraintSpace); +} + +// given a twist rotation in constraint space, (pre: cone must already be removed) +// this method computes its corresponding angle and axis. +void btConeTwistConstraint::computeTwistLimitInfo(const btQuaternion& qTwist, + btScalar& twistAngle, // out + btVector3& vTwistAxis) // out +{ + btQuaternion qMinTwist = qTwist; + twistAngle = qTwist.getAngle(); + + if (twistAngle > SIMD_PI) // long way around. flip quat and recalculate. + { + qMinTwist = operator-(qTwist); + twistAngle = qMinTwist.getAngle(); + } + if (twistAngle < 0) + { + // this should never happen + int wtf = 0; wtf = wtf; + } + + vTwistAxis = btVector3(qMinTwist.x(), qMinTwist.y(), qMinTwist.z()); + if (twistAngle > SIMD_EPSILON) + vTwistAxis.normalize(); +} + + +void btConeTwistConstraint::adjustSwingAxisToUseEllipseNormal(btVector3& vSwingAxis) const +{ + // the swing axis is computed as the "twist-free" cone rotation, + // but the cone limit is not circular, but elliptical (if swingspan1 != swingspan2). + // so, if we're outside the limits, the closest way back inside the cone isn't + // along the vector back to the center. better (and more stable) to use the ellipse normal. + + // convert swing axis to direction from center to surface of ellipse + // (ie. rotate 2D vector by PI/2) + btScalar y = -vSwingAxis.z(); + btScalar z = vSwingAxis.y(); + + // do the math... + if (fabs(z) > SIMD_EPSILON) // avoid division by 0. and we don't need an update if z == 0. + { + // compute gradient/normal of ellipse surface at current "point" + btScalar grad = y/z; + grad *= m_swingSpan2 / m_swingSpan1; + + // adjust y/z to represent normal at point (instead of vector to point) + if (y > 0) + y = fabs(grad * z); + else + y = -fabs(grad * z); + + // convert ellipse direction back to swing axis + vSwingAxis.setZ(-y); + vSwingAxis.setY( z); + vSwingAxis.normalize(); + } +} + + + +void btConeTwistConstraint::setMotorTarget(const btQuaternion &q) +{ + btTransform trACur = m_rbA.getCenterOfMassTransform(); + btTransform trBCur = m_rbB.getCenterOfMassTransform(); + btTransform trABCur = trBCur.inverse() * trACur; + btQuaternion qABCur = trABCur.getRotation(); + btTransform trConstraintCur = (trBCur * m_rbBFrame).inverse() * (trACur * m_rbAFrame); + btQuaternion qConstraintCur = trConstraintCur.getRotation(); + + btQuaternion qConstraint = m_rbBFrame.getRotation().inverse() * q * m_rbAFrame.getRotation(); + setMotorTargetInConstraintSpace(qConstraint); +} + + +void btConeTwistConstraint::setMotorTargetInConstraintSpace(const btQuaternion &q) +{ + m_qTarget = q; + + // clamp motor target to within limits + { + btScalar softness = 1.f;//m_limitSoftness; + + // split into twist and cone + btVector3 vTwisted = quatRotate(m_qTarget, vTwist); + btQuaternion qTargetCone = shortestArcQuat(vTwist, vTwisted); qTargetCone.normalize(); + btQuaternion qTargetTwist = qTargetCone.inverse() * m_qTarget; qTargetTwist.normalize(); + + // clamp cone + if (m_swingSpan1 >= btScalar(0.05f) && m_swingSpan2 >= btScalar(0.05f)) + { + btScalar swingAngle, swingLimit; btVector3 swingAxis; + computeConeLimitInfo(qTargetCone, swingAngle, swingAxis, swingLimit); + + if (fabs(swingAngle) > SIMD_EPSILON) + { + if (swingAngle > swingLimit*softness) + swingAngle = swingLimit*softness; + else if (swingAngle < -swingLimit*softness) + swingAngle = -swingLimit*softness; + qTargetCone = btQuaternion(swingAxis, swingAngle); + } + } + + // clamp twist + if (m_twistSpan >= btScalar(0.05f)) + { + btScalar twistAngle; btVector3 twistAxis; + computeTwistLimitInfo(qTargetTwist, twistAngle, twistAxis); + + if (fabs(twistAngle) > SIMD_EPSILON) + { + // eddy todo: limitSoftness used here??? + if (twistAngle > m_twistSpan*softness) + twistAngle = m_twistSpan*softness; + else if (twistAngle < -m_twistSpan*softness) + twistAngle = -m_twistSpan*softness; + qTargetTwist = btQuaternion(twistAxis, twistAngle); + } + } + + m_qTarget = qTargetCone * qTargetTwist; + } +} + +///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). +///If no axis is provided, it uses the default axis for this constraint. +void btConeTwistConstraint::setParam(int num, btScalar value, int axis) +{ + switch(num) + { + case BT_CONSTRAINT_ERP : + case BT_CONSTRAINT_STOP_ERP : + if((axis >= 0) && (axis < 3)) + { + m_linERP = value; + m_flags |= BT_CONETWIST_FLAGS_LIN_ERP; + } + else + { + m_biasFactor = value; + } + break; + case BT_CONSTRAINT_CFM : + case BT_CONSTRAINT_STOP_CFM : + if((axis >= 0) && (axis < 3)) + { + m_linCFM = value; + m_flags |= BT_CONETWIST_FLAGS_LIN_CFM; + } + else + { + m_angCFM = value; + m_flags |= BT_CONETWIST_FLAGS_ANG_CFM; + } + break; + default: + btAssertConstrParams(0); + break; + } +} + +///return the local value of parameter +btScalar btConeTwistConstraint::getParam(int num, int axis) const +{ + btScalar retVal = 0; + switch(num) + { + case BT_CONSTRAINT_ERP : + case BT_CONSTRAINT_STOP_ERP : + if((axis >= 0) && (axis < 3)) + { + btAssertConstrParams(m_flags & BT_CONETWIST_FLAGS_LIN_ERP); + retVal = m_linERP; + } + else if((axis >= 3) && (axis < 6)) + { + retVal = m_biasFactor; + } + else + { + btAssertConstrParams(0); + } + break; + case BT_CONSTRAINT_CFM : + case BT_CONSTRAINT_STOP_CFM : + if((axis >= 0) && (axis < 3)) + { + btAssertConstrParams(m_flags & BT_CONETWIST_FLAGS_LIN_CFM); + retVal = m_linCFM; + } + else if((axis >= 3) && (axis < 6)) + { + btAssertConstrParams(m_flags & BT_CONETWIST_FLAGS_ANG_CFM); + retVal = m_angCFM; + } + else + { + btAssertConstrParams(0); + } + break; + default : + btAssertConstrParams(0); + } + return retVal; +} + + + diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h new file mode 100644 index 00000000000..f310d474e7a --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h @@ -0,0 +1,332 @@ +/* +Bullet Continuous Collision Detection and Physics Library +btConeTwistConstraint is Copyright (c) 2007 Starbreeze Studios + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Written by: Marcus Hennix +*/ + + + +/* +Overview: + +btConeTwistConstraint can be used to simulate ragdoll joints (upper arm, leg etc). +It is a fixed translation, 3 degree-of-freedom (DOF) rotational "joint". +It divides the 3 rotational DOFs into swing (movement within a cone) and twist. +Swing is divided into swing1 and swing2 which can have different limits, giving an elliptical shape. +(Note: the cone's base isn't flat, so this ellipse is "embedded" on the surface of a sphere.) + +In the contraint's frame of reference: +twist is along the x-axis, +and swing 1 and 2 are along the z and y axes respectively. +*/ + + + +#ifndef CONETWISTCONSTRAINT_H +#define CONETWISTCONSTRAINT_H + +#include "LinearMath/btVector3.h" +#include "btJacobianEntry.h" +#include "btTypedConstraint.h" + +class btRigidBody; + +enum btConeTwistFlags +{ + BT_CONETWIST_FLAGS_LIN_CFM = 1, + BT_CONETWIST_FLAGS_LIN_ERP = 2, + BT_CONETWIST_FLAGS_ANG_CFM = 4 +}; + +///btConeTwistConstraint can be used to simulate ragdoll joints (upper arm, leg etc) +class btConeTwistConstraint : public btTypedConstraint +{ +#ifdef IN_PARALLELL_SOLVER +public: +#endif + btJacobianEntry m_jac[3]; //3 orthogonal linear constraints + + btTransform m_rbAFrame; + btTransform m_rbBFrame; + + btScalar m_limitSoftness; + btScalar m_biasFactor; + btScalar m_relaxationFactor; + + btScalar m_damping; + + btScalar m_swingSpan1; + btScalar m_swingSpan2; + btScalar m_twistSpan; + + btScalar m_fixThresh; + + btVector3 m_swingAxis; + btVector3 m_twistAxis; + + btScalar m_kSwing; + btScalar m_kTwist; + + btScalar m_twistLimitSign; + btScalar m_swingCorrection; + btScalar m_twistCorrection; + + btScalar m_twistAngle; + + btScalar m_accSwingLimitImpulse; + btScalar m_accTwistLimitImpulse; + + bool m_angularOnly; + bool m_solveTwistLimit; + bool m_solveSwingLimit; + + bool m_useSolveConstraintObsolete; + + // not yet used... + btScalar m_swingLimitRatio; + btScalar m_twistLimitRatio; + btVector3 m_twistAxisA; + + // motor + bool m_bMotorEnabled; + bool m_bNormalizedMotorStrength; + btQuaternion m_qTarget; + btScalar m_maxMotorImpulse; + btVector3 m_accMotorImpulse; + + // parameters + int m_flags; + btScalar m_linCFM; + btScalar m_linERP; + btScalar m_angCFM; + +protected: + + void init(); + + void computeConeLimitInfo(const btQuaternion& qCone, // in + btScalar& swingAngle, btVector3& vSwingAxis, btScalar& swingLimit); // all outs + + void computeTwistLimitInfo(const btQuaternion& qTwist, // in + btScalar& twistAngle, btVector3& vTwistAxis); // all outs + + void adjustSwingAxisToUseEllipseNormal(btVector3& vSwingAxis) const; + + +public: + + btConeTwistConstraint(btRigidBody& rbA,btRigidBody& rbB,const btTransform& rbAFrame, const btTransform& rbBFrame); + + btConeTwistConstraint(btRigidBody& rbA,const btTransform& rbAFrame); + + virtual void buildJacobian(); + + virtual void getInfo1 (btConstraintInfo1* info); + + void getInfo1NonVirtual(btConstraintInfo1* info); + + virtual void getInfo2 (btConstraintInfo2* info); + + void getInfo2NonVirtual(btConstraintInfo2* info,const btTransform& transA,const btTransform& transB,const btMatrix3x3& invInertiaWorldA,const btMatrix3x3& invInertiaWorldB); + + virtual void solveConstraintObsolete(btRigidBody& bodyA,btRigidBody& bodyB,btScalar timeStep); + + void updateRHS(btScalar timeStep); + + const btRigidBody& getRigidBodyA() const + { + return m_rbA; + } + const btRigidBody& getRigidBodyB() const + { + return m_rbB; + } + + void setAngularOnly(bool angularOnly) + { + m_angularOnly = angularOnly; + } + + void setLimit(int limitIndex,btScalar limitValue) + { + switch (limitIndex) + { + case 3: + { + m_twistSpan = limitValue; + break; + } + case 4: + { + m_swingSpan2 = limitValue; + break; + } + case 5: + { + m_swingSpan1 = limitValue; + break; + } + default: + { + } + }; + } + + // setLimit(), a few notes: + // _softness: + // 0->1, recommend ~0.8->1. + // describes % of limits where movement is free. + // beyond this softness %, the limit is gradually enforced until the "hard" (1.0) limit is reached. + // _biasFactor: + // 0->1?, recommend 0.3 +/-0.3 or so. + // strength with which constraint resists zeroth order (angular, not angular velocity) limit violation. + // __relaxationFactor: + // 0->1, recommend to stay near 1. + // the lower the value, the less the constraint will fight velocities which violate the angular limits. + void setLimit(btScalar _swingSpan1,btScalar _swingSpan2,btScalar _twistSpan, btScalar _softness = 1.f, btScalar _biasFactor = 0.3f, btScalar _relaxationFactor = 1.0f) + { + m_swingSpan1 = _swingSpan1; + m_swingSpan2 = _swingSpan2; + m_twistSpan = _twistSpan; + + m_limitSoftness = _softness; + m_biasFactor = _biasFactor; + m_relaxationFactor = _relaxationFactor; + } + + const btTransform& getAFrame() { return m_rbAFrame; }; + const btTransform& getBFrame() { return m_rbBFrame; }; + + inline int getSolveTwistLimit() + { + return m_solveTwistLimit; + } + + inline int getSolveSwingLimit() + { + return m_solveTwistLimit; + } + + inline btScalar getTwistLimitSign() + { + return m_twistLimitSign; + } + + void calcAngleInfo(); + void calcAngleInfo2(const btTransform& transA, const btTransform& transB,const btMatrix3x3& invInertiaWorldA,const btMatrix3x3& invInertiaWorldB); + + inline btScalar getSwingSpan1() + { + return m_swingSpan1; + } + inline btScalar getSwingSpan2() + { + return m_swingSpan2; + } + inline btScalar getTwistSpan() + { + return m_twistSpan; + } + inline btScalar getTwistAngle() + { + return m_twistAngle; + } + bool isPastSwingLimit() { return m_solveSwingLimit; } + + + void setDamping(btScalar damping) { m_damping = damping; } + + void enableMotor(bool b) { m_bMotorEnabled = b; } + void setMaxMotorImpulse(btScalar maxMotorImpulse) { m_maxMotorImpulse = maxMotorImpulse; m_bNormalizedMotorStrength = false; } + void setMaxMotorImpulseNormalized(btScalar maxMotorImpulse) { m_maxMotorImpulse = maxMotorImpulse; m_bNormalizedMotorStrength = true; } + + btScalar getFixThresh() { return m_fixThresh; } + void setFixThresh(btScalar fixThresh) { m_fixThresh = fixThresh; } + + // setMotorTarget: + // q: the desired rotation of bodyA wrt bodyB. + // note: if q violates the joint limits, the internal target is clamped to avoid conflicting impulses (very bad for stability) + // note: don't forget to enableMotor() + void setMotorTarget(const btQuaternion &q); + + // same as above, but q is the desired rotation of frameA wrt frameB in constraint space + void setMotorTargetInConstraintSpace(const btQuaternion &q); + + btVector3 GetPointForAngle(btScalar fAngleInRadians, btScalar fLength) const; + + ///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). + ///If no axis is provided, it uses the default axis for this constraint. + virtual void setParam(int num, btScalar value, int axis = -1); + ///return the local value of parameter + virtual btScalar getParam(int num, int axis = -1) const; + + virtual int calculateSerializeBufferSize() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; + +}; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btConeTwistConstraintData +{ + btTypedConstraintData m_typeConstraintData; + btTransformFloatData m_rbAFrame; + btTransformFloatData m_rbBFrame; + + //limits + float m_swingSpan1; + float m_swingSpan2; + float m_twistSpan; + float m_limitSoftness; + float m_biasFactor; + float m_relaxationFactor; + + float m_damping; + + char m_pad[4]; + +}; + + + +SIMD_FORCE_INLINE int btConeTwistConstraint::calculateSerializeBufferSize() const +{ + return sizeof(btConeTwistConstraintData); + +} + + + ///fills the dataBuffer and returns the struct name (and 0 on failure) +SIMD_FORCE_INLINE const char* btConeTwistConstraint::serialize(void* dataBuffer, btSerializer* serializer) const +{ + btConeTwistConstraintData* cone = (btConeTwistConstraintData*) dataBuffer; + btTypedConstraint::serialize(&cone->m_typeConstraintData,serializer); + + m_rbAFrame.serializeFloat(cone->m_rbAFrame); + m_rbBFrame.serializeFloat(cone->m_rbBFrame); + + cone->m_swingSpan1 = float(m_swingSpan1); + cone->m_swingSpan2 = float(m_swingSpan2); + cone->m_twistSpan = float(m_twistSpan); + cone->m_limitSoftness = float(m_limitSoftness); + cone->m_biasFactor = float(m_biasFactor); + cone->m_relaxationFactor = float(m_relaxationFactor); + cone->m_damping = float(m_damping); + + return "btConeTwistConstraintData"; +} + + +#endif //CONETWISTCONSTRAINT_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btConstraintSolver.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btConstraintSolver.h new file mode 100644 index 00000000000..7a8e9c1953d --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btConstraintSolver.h @@ -0,0 +1,52 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CONSTRAINT_SOLVER_H +#define CONSTRAINT_SOLVER_H + +#include "LinearMath/btScalar.h" + +class btPersistentManifold; +class btRigidBody; +class btCollisionObject; +class btTypedConstraint; +struct btContactSolverInfo; +struct btBroadphaseProxy; +class btIDebugDraw; +class btStackAlloc; +class btDispatcher; +/// btConstraintSolver provides solver interface +class btConstraintSolver +{ + +public: + + virtual ~btConstraintSolver() {} + + virtual void prepareSolve (int /* numBodies */, int /* numManifolds */) {;} + + ///solve a group of constraints + virtual btScalar solveGroup(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifold,int numManifolds,btTypedConstraint** constraints,int numConstraints, const btContactSolverInfo& info,class btIDebugDraw* debugDrawer, btStackAlloc* stackAlloc,btDispatcher* dispatcher) = 0; + + virtual void allSolved (const btContactSolverInfo& /* info */,class btIDebugDraw* /* debugDrawer */, btStackAlloc* /* stackAlloc */) {;} + + ///clear internal cached data and reset random seed + virtual void reset() = 0; +}; + + + + +#endif //CONSTRAINT_SOLVER_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btContactConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btContactConstraint.cpp new file mode 100644 index 00000000000..d97096d9f26 --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btContactConstraint.cpp @@ -0,0 +1,134 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btContactConstraint.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include "LinearMath/btVector3.h" +#include "btJacobianEntry.h" +#include "btContactSolverInfo.h" +#include "LinearMath/btMinMax.h" +#include "BulletCollision/NarrowPhaseCollision/btManifoldPoint.h" + + + +btContactConstraint::btContactConstraint(btPersistentManifold* contactManifold,btRigidBody& rbA,btRigidBody& rbB) +:btTypedConstraint(CONTACT_CONSTRAINT_TYPE,rbA,rbB), + m_contactManifold(*contactManifold) +{ + +} + +btContactConstraint::~btContactConstraint() +{ + +} + +void btContactConstraint::setContactManifold(btPersistentManifold* contactManifold) +{ + m_contactManifold = *contactManifold; +} + +void btContactConstraint::getInfo1 (btConstraintInfo1* info) +{ + +} + +void btContactConstraint::getInfo2 (btConstraintInfo2* info) +{ + +} + +void btContactConstraint::buildJacobian() +{ + +} + + + + + +#include "btContactConstraint.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include "LinearMath/btVector3.h" +#include "btJacobianEntry.h" +#include "btContactSolverInfo.h" +#include "LinearMath/btMinMax.h" +#include "BulletCollision/NarrowPhaseCollision/btManifoldPoint.h" + +#define ASSERT2 btAssert + +#define USE_INTERNAL_APPLY_IMPULSE 1 + + +//bilateral constraint between two dynamic objects +void resolveSingleBilateral(btRigidBody& body1, const btVector3& pos1, + btRigidBody& body2, const btVector3& pos2, + btScalar distance, const btVector3& normal,btScalar& impulse ,btScalar timeStep) +{ + (void)timeStep; + (void)distance; + + + btScalar normalLenSqr = normal.length2(); + ASSERT2(btFabs(normalLenSqr) < btScalar(1.1)); + if (normalLenSqr > btScalar(1.1)) + { + impulse = btScalar(0.); + return; + } + btVector3 rel_pos1 = pos1 - body1.getCenterOfMassPosition(); + btVector3 rel_pos2 = pos2 - body2.getCenterOfMassPosition(); + //this jacobian entry could be re-used for all iterations + + btVector3 vel1 = body1.getVelocityInLocalPoint(rel_pos1); + btVector3 vel2 = body2.getVelocityInLocalPoint(rel_pos2); + btVector3 vel = vel1 - vel2; + + + btJacobianEntry jac(body1.getCenterOfMassTransform().getBasis().transpose(), + body2.getCenterOfMassTransform().getBasis().transpose(), + rel_pos1,rel_pos2,normal,body1.getInvInertiaDiagLocal(),body1.getInvMass(), + body2.getInvInertiaDiagLocal(),body2.getInvMass()); + + btScalar jacDiagAB = jac.getDiagonal(); + btScalar jacDiagABInv = btScalar(1.) / jacDiagAB; + + btScalar rel_vel = jac.getRelativeVelocity( + body1.getLinearVelocity(), + body1.getCenterOfMassTransform().getBasis().transpose() * body1.getAngularVelocity(), + body2.getLinearVelocity(), + body2.getCenterOfMassTransform().getBasis().transpose() * body2.getAngularVelocity()); + btScalar a; + a=jacDiagABInv; + + + rel_vel = normal.dot(vel); + + //todo: move this into proper structure + btScalar contactDamping = btScalar(0.2); + +#ifdef ONLY_USE_LINEAR_MASS + btScalar massTerm = btScalar(1.) / (body1.getInvMass() + body2.getInvMass()); + impulse = - contactDamping * rel_vel * massTerm; +#else + btScalar velocityImpulse = -contactDamping * rel_vel * jacDiagABInv; + impulse = velocityImpulse; +#endif +} + + + + diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btContactConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btContactConstraint.h new file mode 100644 index 00000000000..63c1a417bc1 --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btContactConstraint.h @@ -0,0 +1,68 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CONTACT_CONSTRAINT_H +#define CONTACT_CONSTRAINT_H + +#include "LinearMath/btVector3.h" +#include "btJacobianEntry.h" +#include "btTypedConstraint.h" +#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" + +///btContactConstraint can be automatically created to solve contact constraints using the unified btTypedConstraint interface +ATTRIBUTE_ALIGNED16(class) btContactConstraint : public btTypedConstraint +{ +protected: + + btPersistentManifold m_contactManifold; + +public: + + + btContactConstraint(btPersistentManifold* contactManifold,btRigidBody& rbA,btRigidBody& rbB); + + void setContactManifold(btPersistentManifold* contactManifold); + + btPersistentManifold* getContactManifold() + { + return &m_contactManifold; + } + + const btPersistentManifold* getContactManifold() const + { + return &m_contactManifold; + } + + virtual ~btContactConstraint(); + + virtual void getInfo1 (btConstraintInfo1* info); + + virtual void getInfo2 (btConstraintInfo2* info); + + ///obsolete methods + virtual void buildJacobian(); + + +}; + + +///resolveSingleBilateral is an obsolete methods used for vehicle friction between two dynamic objects +void resolveSingleBilateral(btRigidBody& body1, const btVector3& pos1, + btRigidBody& body2, const btVector3& pos2, + btScalar distance, const btVector3& normal,btScalar& impulse ,btScalar timeStep); + + + +#endif //CONTACT_CONSTRAINT_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btContactSolverInfo.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btContactSolverInfo.h new file mode 100644 index 00000000000..1025da42f5e --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btContactSolverInfo.h @@ -0,0 +1,87 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef CONTACT_SOLVER_INFO +#define CONTACT_SOLVER_INFO + +enum btSolverMode +{ + SOLVER_RANDMIZE_ORDER = 1, + SOLVER_FRICTION_SEPARATE = 2, + SOLVER_USE_WARMSTARTING = 4, + SOLVER_USE_FRICTION_WARMSTARTING = 8, + SOLVER_USE_2_FRICTION_DIRECTIONS = 16, + SOLVER_ENABLE_FRICTION_DIRECTION_CACHING = 32, + SOLVER_DISABLE_VELOCITY_DEPENDENT_FRICTION_DIRECTION = 64, + SOLVER_CACHE_FRIENDLY = 128, + SOLVER_SIMD = 256, //enabled for Windows, the solver innerloop is branchless SIMD, 40% faster than FPU/scalar version + SOLVER_CUDA = 512 //will be open sourced during Game Developers Conference 2009. Much faster. +}; + +struct btContactSolverInfoData +{ + + + btScalar m_tau; + btScalar m_damping; + btScalar m_friction; + btScalar m_timeStep; + btScalar m_restitution; + int m_numIterations; + btScalar m_maxErrorReduction; + btScalar m_sor; + btScalar m_erp;//used as Baumgarte factor + btScalar m_erp2;//used in Split Impulse + btScalar m_globalCfm;//constraint force mixing + int m_splitImpulse; + btScalar m_splitImpulsePenetrationThreshold; + btScalar m_linearSlop; + btScalar m_warmstartingFactor; + + int m_solverMode; + int m_restingContactRestitutionThreshold; + int m_minimumSolverBatchSize; + + +}; + +struct btContactSolverInfo : public btContactSolverInfoData +{ + + + + inline btContactSolverInfo() + { + m_tau = btScalar(0.6); + m_damping = btScalar(1.0); + m_friction = btScalar(0.3); + m_restitution = btScalar(0.); + m_maxErrorReduction = btScalar(20.); + m_numIterations = 10; + m_erp = btScalar(0.2); + m_erp2 = btScalar(0.1); + m_globalCfm = btScalar(0.); + m_sor = btScalar(1.); + m_splitImpulse = false; + m_splitImpulsePenetrationThreshold = -0.02f; + m_linearSlop = btScalar(0.0); + m_warmstartingFactor=btScalar(0.85); + m_solverMode = SOLVER_USE_WARMSTARTING | SOLVER_SIMD;// | SOLVER_RANDMIZE_ORDER; + m_restingContactRestitutionThreshold = 2;//resting contact lifetime threshold to disable restitution + m_minimumSolverBatchSize = 128; //try to combine islands until the amount of constraints reaches this limit + } +}; + +#endif //CONTACT_SOLVER_INFO diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp new file mode 100644 index 00000000000..a970d706284 --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp @@ -0,0 +1,1012 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ +/* +2007-09-09 +Refactored by Francisco Le?n +email: projectileman@yahoo.com +http://gimpact.sf.net +*/ + +#include "btGeneric6DofConstraint.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include "LinearMath/btTransformUtil.h" +#include "LinearMath/btTransformUtil.h" +#include + + + +#define D6_USE_OBSOLETE_METHOD false +#define D6_USE_FRAME_OFFSET true + + + + + + +btGeneric6DofConstraint::btGeneric6DofConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB, bool useLinearReferenceFrameA) +: btTypedConstraint(D6_CONSTRAINT_TYPE, rbA, rbB) +, m_frameInA(frameInA) +, m_frameInB(frameInB), +m_useLinearReferenceFrameA(useLinearReferenceFrameA), +m_useOffsetForConstraintFrame(D6_USE_FRAME_OFFSET), +m_flags(0), +m_useSolveConstraintObsolete(D6_USE_OBSOLETE_METHOD) +{ + calculateTransforms(); +} + + + +btGeneric6DofConstraint::btGeneric6DofConstraint(btRigidBody& rbB, const btTransform& frameInB, bool useLinearReferenceFrameB) + : btTypedConstraint(D6_CONSTRAINT_TYPE, getFixedBody(), rbB), + m_frameInB(frameInB), + m_useLinearReferenceFrameA(useLinearReferenceFrameB), + m_useOffsetForConstraintFrame(D6_USE_FRAME_OFFSET), + m_flags(0), + m_useSolveConstraintObsolete(false) +{ + ///not providing rigidbody A means implicitly using worldspace for body A + m_frameInA = rbB.getCenterOfMassTransform() * m_frameInB; + calculateTransforms(); +} + + + + +#define GENERIC_D6_DISABLE_WARMSTARTING 1 + + + +btScalar btGetMatrixElem(const btMatrix3x3& mat, int index); +btScalar btGetMatrixElem(const btMatrix3x3& mat, int index) +{ + int i = index%3; + int j = index/3; + return mat[i][j]; +} + + + +///MatrixToEulerXYZ from http://www.geometrictools.com/LibFoundation/Mathematics/Wm4Matrix3.inl.html +bool matrixToEulerXYZ(const btMatrix3x3& mat,btVector3& xyz); +bool matrixToEulerXYZ(const btMatrix3x3& mat,btVector3& xyz) +{ + // // rot = cy*cz -cy*sz sy + // // cz*sx*sy+cx*sz cx*cz-sx*sy*sz -cy*sx + // // -cx*cz*sy+sx*sz cz*sx+cx*sy*sz cx*cy + // + + btScalar fi = btGetMatrixElem(mat,2); + if (fi < btScalar(1.0f)) + { + if (fi > btScalar(-1.0f)) + { + xyz[0] = btAtan2(-btGetMatrixElem(mat,5),btGetMatrixElem(mat,8)); + xyz[1] = btAsin(btGetMatrixElem(mat,2)); + xyz[2] = btAtan2(-btGetMatrixElem(mat,1),btGetMatrixElem(mat,0)); + return true; + } + else + { + // WARNING. Not unique. XA - ZA = -atan2(r10,r11) + xyz[0] = -btAtan2(btGetMatrixElem(mat,3),btGetMatrixElem(mat,4)); + xyz[1] = -SIMD_HALF_PI; + xyz[2] = btScalar(0.0); + return false; + } + } + else + { + // WARNING. Not unique. XAngle + ZAngle = atan2(r10,r11) + xyz[0] = btAtan2(btGetMatrixElem(mat,3),btGetMatrixElem(mat,4)); + xyz[1] = SIMD_HALF_PI; + xyz[2] = 0.0; + } + return false; +} + +//////////////////////////// btRotationalLimitMotor //////////////////////////////////// + +int btRotationalLimitMotor::testLimitValue(btScalar test_value) +{ + if(m_loLimit>m_hiLimit) + { + m_currentLimit = 0;//Free from violation + return 0; + } + if (test_value < m_loLimit) + { + m_currentLimit = 1;//low limit violation + m_currentLimitError = test_value - m_loLimit; + return 1; + } + else if (test_value> m_hiLimit) + { + m_currentLimit = 2;//High limit violation + m_currentLimitError = test_value - m_hiLimit; + return 2; + }; + + m_currentLimit = 0;//Free from violation + return 0; + +} + + + +btScalar btRotationalLimitMotor::solveAngularLimits( + btScalar timeStep,btVector3& axis,btScalar jacDiagABInv, + btRigidBody * body0, btRigidBody * body1 ) +{ + if (needApplyTorques()==false) return 0.0f; + + btScalar target_velocity = m_targetVelocity; + btScalar maxMotorForce = m_maxMotorForce; + + //current error correction + if (m_currentLimit!=0) + { + target_velocity = -m_stopERP*m_currentLimitError/(timeStep); + maxMotorForce = m_maxLimitForce; + } + + maxMotorForce *= timeStep; + + // current velocity difference + + btVector3 angVelA; + body0->internalGetAngularVelocity(angVelA); + btVector3 angVelB; + body1->internalGetAngularVelocity(angVelB); + + btVector3 vel_diff; + vel_diff = angVelA-angVelB; + + + + btScalar rel_vel = axis.dot(vel_diff); + + // correction velocity + btScalar motor_relvel = m_limitSoftness*(target_velocity - m_damping*rel_vel); + + + if ( motor_relvel < SIMD_EPSILON && motor_relvel > -SIMD_EPSILON ) + { + return 0.0f;//no need for applying force + } + + + // correction impulse + btScalar unclippedMotorImpulse = (1+m_bounce)*motor_relvel*jacDiagABInv; + + // clip correction impulse + btScalar clippedMotorImpulse; + + ///@todo: should clip against accumulated impulse + if (unclippedMotorImpulse>0.0f) + { + clippedMotorImpulse = unclippedMotorImpulse > maxMotorForce? maxMotorForce: unclippedMotorImpulse; + } + else + { + clippedMotorImpulse = unclippedMotorImpulse < -maxMotorForce ? -maxMotorForce: unclippedMotorImpulse; + } + + + // sort with accumulated impulses + btScalar lo = btScalar(-BT_LARGE_FLOAT); + btScalar hi = btScalar(BT_LARGE_FLOAT); + + btScalar oldaccumImpulse = m_accumulatedImpulse; + btScalar sum = oldaccumImpulse + clippedMotorImpulse; + m_accumulatedImpulse = sum > hi ? btScalar(0.) : sum < lo ? btScalar(0.) : sum; + + clippedMotorImpulse = m_accumulatedImpulse - oldaccumImpulse; + + btVector3 motorImp = clippedMotorImpulse * axis; + + //body0->applyTorqueImpulse(motorImp); + //body1->applyTorqueImpulse(-motorImp); + + body0->internalApplyImpulse(btVector3(0,0,0), body0->getInvInertiaTensorWorld()*axis,clippedMotorImpulse); + body1->internalApplyImpulse(btVector3(0,0,0), body1->getInvInertiaTensorWorld()*axis,-clippedMotorImpulse); + + + return clippedMotorImpulse; + + +} + +//////////////////////////// End btRotationalLimitMotor //////////////////////////////////// + + + + +//////////////////////////// btTranslationalLimitMotor //////////////////////////////////// + + +int btTranslationalLimitMotor::testLimitValue(int limitIndex, btScalar test_value) +{ + btScalar loLimit = m_lowerLimit[limitIndex]; + btScalar hiLimit = m_upperLimit[limitIndex]; + if(loLimit > hiLimit) + { + m_currentLimit[limitIndex] = 0;//Free from violation + m_currentLimitError[limitIndex] = btScalar(0.f); + return 0; + } + + if (test_value < loLimit) + { + m_currentLimit[limitIndex] = 2;//low limit violation + m_currentLimitError[limitIndex] = test_value - loLimit; + return 2; + } + else if (test_value> hiLimit) + { + m_currentLimit[limitIndex] = 1;//High limit violation + m_currentLimitError[limitIndex] = test_value - hiLimit; + return 1; + }; + + m_currentLimit[limitIndex] = 0;//Free from violation + m_currentLimitError[limitIndex] = btScalar(0.f); + return 0; +} + + + +btScalar btTranslationalLimitMotor::solveLinearAxis( + btScalar timeStep, + btScalar jacDiagABInv, + btRigidBody& body1,const btVector3 &pointInA, + btRigidBody& body2,const btVector3 &pointInB, + int limit_index, + const btVector3 & axis_normal_on_a, + const btVector3 & anchorPos) +{ + + ///find relative velocity + // btVector3 rel_pos1 = pointInA - body1.getCenterOfMassPosition(); + // btVector3 rel_pos2 = pointInB - body2.getCenterOfMassPosition(); + btVector3 rel_pos1 = anchorPos - body1.getCenterOfMassPosition(); + btVector3 rel_pos2 = anchorPos - body2.getCenterOfMassPosition(); + + btVector3 vel1; + body1.internalGetVelocityInLocalPointObsolete(rel_pos1,vel1); + btVector3 vel2; + body2.internalGetVelocityInLocalPointObsolete(rel_pos2,vel2); + btVector3 vel = vel1 - vel2; + + btScalar rel_vel = axis_normal_on_a.dot(vel); + + + + /// apply displacement correction + + //positional error (zeroth order error) + btScalar depth = -(pointInA - pointInB).dot(axis_normal_on_a); + btScalar lo = btScalar(-BT_LARGE_FLOAT); + btScalar hi = btScalar(BT_LARGE_FLOAT); + + btScalar minLimit = m_lowerLimit[limit_index]; + btScalar maxLimit = m_upperLimit[limit_index]; + + //handle the limits + if (minLimit < maxLimit) + { + { + if (depth > maxLimit) + { + depth -= maxLimit; + lo = btScalar(0.); + + } + else + { + if (depth < minLimit) + { + depth -= minLimit; + hi = btScalar(0.); + } + else + { + return 0.0f; + } + } + } + } + + btScalar normalImpulse= m_limitSoftness*(m_restitution*depth/timeStep - m_damping*rel_vel) * jacDiagABInv; + + + + + btScalar oldNormalImpulse = m_accumulatedImpulse[limit_index]; + btScalar sum = oldNormalImpulse + normalImpulse; + m_accumulatedImpulse[limit_index] = sum > hi ? btScalar(0.) : sum < lo ? btScalar(0.) : sum; + normalImpulse = m_accumulatedImpulse[limit_index] - oldNormalImpulse; + + btVector3 impulse_vector = axis_normal_on_a * normalImpulse; + //body1.applyImpulse( impulse_vector, rel_pos1); + //body2.applyImpulse(-impulse_vector, rel_pos2); + + btVector3 ftorqueAxis1 = rel_pos1.cross(axis_normal_on_a); + btVector3 ftorqueAxis2 = rel_pos2.cross(axis_normal_on_a); + body1.internalApplyImpulse(axis_normal_on_a*body1.getInvMass(), body1.getInvInertiaTensorWorld()*ftorqueAxis1,normalImpulse); + body2.internalApplyImpulse(axis_normal_on_a*body2.getInvMass(), body2.getInvInertiaTensorWorld()*ftorqueAxis2,-normalImpulse); + + + + + return normalImpulse; +} + +//////////////////////////// btTranslationalLimitMotor //////////////////////////////////// + +void btGeneric6DofConstraint::calculateAngleInfo() +{ + btMatrix3x3 relative_frame = m_calculatedTransformA.getBasis().inverse()*m_calculatedTransformB.getBasis(); + matrixToEulerXYZ(relative_frame,m_calculatedAxisAngleDiff); + // in euler angle mode we do not actually constrain the angular velocity + // along the axes axis[0] and axis[2] (although we do use axis[1]) : + // + // to get constrain w2-w1 along ...not + // ------ --------------------- ------ + // d(angle[0])/dt = 0 ax[1] x ax[2] ax[0] + // d(angle[1])/dt = 0 ax[1] + // d(angle[2])/dt = 0 ax[0] x ax[1] ax[2] + // + // constraining w2-w1 along an axis 'a' means that a'*(w2-w1)=0. + // to prove the result for angle[0], write the expression for angle[0] from + // GetInfo1 then take the derivative. to prove this for angle[2] it is + // easier to take the euler rate expression for d(angle[2])/dt with respect + // to the components of w and set that to 0. + btVector3 axis0 = m_calculatedTransformB.getBasis().getColumn(0); + btVector3 axis2 = m_calculatedTransformA.getBasis().getColumn(2); + + m_calculatedAxis[1] = axis2.cross(axis0); + m_calculatedAxis[0] = m_calculatedAxis[1].cross(axis2); + m_calculatedAxis[2] = axis0.cross(m_calculatedAxis[1]); + + m_calculatedAxis[0].normalize(); + m_calculatedAxis[1].normalize(); + m_calculatedAxis[2].normalize(); + +} + +void btGeneric6DofConstraint::calculateTransforms() +{ + calculateTransforms(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); +} + +void btGeneric6DofConstraint::calculateTransforms(const btTransform& transA,const btTransform& transB) +{ + m_calculatedTransformA = transA * m_frameInA; + m_calculatedTransformB = transB * m_frameInB; + calculateLinearInfo(); + calculateAngleInfo(); + if(m_useOffsetForConstraintFrame) + { // get weight factors depending on masses + btScalar miA = getRigidBodyA().getInvMass(); + btScalar miB = getRigidBodyB().getInvMass(); + m_hasStaticBody = (miA < SIMD_EPSILON) || (miB < SIMD_EPSILON); + btScalar miS = miA + miB; + if(miS > btScalar(0.f)) + { + m_factA = miB / miS; + } + else + { + m_factA = btScalar(0.5f); + } + m_factB = btScalar(1.0f) - m_factA; + } +} + + + +void btGeneric6DofConstraint::buildLinearJacobian( + btJacobianEntry & jacLinear,const btVector3 & normalWorld, + const btVector3 & pivotAInW,const btVector3 & pivotBInW) +{ + new (&jacLinear) btJacobianEntry( + m_rbA.getCenterOfMassTransform().getBasis().transpose(), + m_rbB.getCenterOfMassTransform().getBasis().transpose(), + pivotAInW - m_rbA.getCenterOfMassPosition(), + pivotBInW - m_rbB.getCenterOfMassPosition(), + normalWorld, + m_rbA.getInvInertiaDiagLocal(), + m_rbA.getInvMass(), + m_rbB.getInvInertiaDiagLocal(), + m_rbB.getInvMass()); +} + + + +void btGeneric6DofConstraint::buildAngularJacobian( + btJacobianEntry & jacAngular,const btVector3 & jointAxisW) +{ + new (&jacAngular) btJacobianEntry(jointAxisW, + m_rbA.getCenterOfMassTransform().getBasis().transpose(), + m_rbB.getCenterOfMassTransform().getBasis().transpose(), + m_rbA.getInvInertiaDiagLocal(), + m_rbB.getInvInertiaDiagLocal()); + +} + + + +bool btGeneric6DofConstraint::testAngularLimitMotor(int axis_index) +{ + btScalar angle = m_calculatedAxisAngleDiff[axis_index]; + angle = btAdjustAngleToLimits(angle, m_angularLimits[axis_index].m_loLimit, m_angularLimits[axis_index].m_hiLimit); + m_angularLimits[axis_index].m_currentPosition = angle; + //test limits + m_angularLimits[axis_index].testLimitValue(angle); + return m_angularLimits[axis_index].needApplyTorques(); +} + + + +void btGeneric6DofConstraint::buildJacobian() +{ +#ifndef __SPU__ + if (m_useSolveConstraintObsolete) + { + + // Clear accumulated impulses for the next simulation step + m_linearLimits.m_accumulatedImpulse.setValue(btScalar(0.), btScalar(0.), btScalar(0.)); + int i; + for(i = 0; i < 3; i++) + { + m_angularLimits[i].m_accumulatedImpulse = btScalar(0.); + } + //calculates transform + calculateTransforms(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); + + // const btVector3& pivotAInW = m_calculatedTransformA.getOrigin(); + // const btVector3& pivotBInW = m_calculatedTransformB.getOrigin(); + calcAnchorPos(); + btVector3 pivotAInW = m_AnchorPos; + btVector3 pivotBInW = m_AnchorPos; + + // not used here + // btVector3 rel_pos1 = pivotAInW - m_rbA.getCenterOfMassPosition(); + // btVector3 rel_pos2 = pivotBInW - m_rbB.getCenterOfMassPosition(); + + btVector3 normalWorld; + //linear part + for (i=0;i<3;i++) + { + if (m_linearLimits.isLimited(i)) + { + if (m_useLinearReferenceFrameA) + normalWorld = m_calculatedTransformA.getBasis().getColumn(i); + else + normalWorld = m_calculatedTransformB.getBasis().getColumn(i); + + buildLinearJacobian( + m_jacLinear[i],normalWorld , + pivotAInW,pivotBInW); + + } + } + + // angular part + for (i=0;i<3;i++) + { + //calculates error angle + if (testAngularLimitMotor(i)) + { + normalWorld = this->getAxis(i); + // Create angular atom + buildAngularJacobian(m_jacAng[i],normalWorld); + } + } + + } +#endif //__SPU__ + +} + + +void btGeneric6DofConstraint::getInfo1 (btConstraintInfo1* info) +{ + if (m_useSolveConstraintObsolete) + { + info->m_numConstraintRows = 0; + info->nub = 0; + } else + { + //prepare constraint + calculateTransforms(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); + info->m_numConstraintRows = 0; + info->nub = 6; + int i; + //test linear limits + for(i = 0; i < 3; i++) + { + if(m_linearLimits.needApplyForce(i)) + { + info->m_numConstraintRows++; + info->nub--; + } + } + //test angular limits + for (i=0;i<3 ;i++ ) + { + if(testAngularLimitMotor(i)) + { + info->m_numConstraintRows++; + info->nub--; + } + } + } +} + +void btGeneric6DofConstraint::getInfo1NonVirtual (btConstraintInfo1* info) +{ + if (m_useSolveConstraintObsolete) + { + info->m_numConstraintRows = 0; + info->nub = 0; + } else + { + //pre-allocate all 6 + info->m_numConstraintRows = 6; + info->nub = 0; + } +} + + +void btGeneric6DofConstraint::getInfo2 (btConstraintInfo2* info) +{ + getInfo2NonVirtual(info,m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform(), m_rbA.getLinearVelocity(),m_rbB.getLinearVelocity(),m_rbA.getAngularVelocity(), m_rbB.getAngularVelocity()); +} + +void btGeneric6DofConstraint::getInfo2NonVirtual (btConstraintInfo2* info, const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB) +{ + btAssert(!m_useSolveConstraintObsolete); + //prepare constraint + calculateTransforms(transA,transB); + if(m_useOffsetForConstraintFrame) + { // for stability better to solve angular limits first + int row = setAngularLimits(info, 0,transA,transB,linVelA,linVelB,angVelA,angVelB); + setLinearLimits(info, row, transA,transB,linVelA,linVelB,angVelA,angVelB); + } + else + { // leave old version for compatibility + int row = setLinearLimits(info, 0, transA,transB,linVelA,linVelB,angVelA,angVelB); + setAngularLimits(info, row,transA,transB,linVelA,linVelB,angVelA,angVelB); + } +} + + + +int btGeneric6DofConstraint::setLinearLimits(btConstraintInfo2* info, int row, const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB) +{ +// int row = 0; + //solve linear limits + btRotationalLimitMotor limot; + for (int i=0;i<3 ;i++ ) + { + if(m_linearLimits.needApplyForce(i)) + { // re-use rotational motor code + limot.m_bounce = btScalar(0.f); + limot.m_currentLimit = m_linearLimits.m_currentLimit[i]; + limot.m_currentPosition = m_linearLimits.m_currentLinearDiff[i]; + limot.m_currentLimitError = m_linearLimits.m_currentLimitError[i]; + limot.m_damping = m_linearLimits.m_damping; + limot.m_enableMotor = m_linearLimits.m_enableMotor[i]; + limot.m_hiLimit = m_linearLimits.m_upperLimit[i]; + limot.m_limitSoftness = m_linearLimits.m_limitSoftness; + limot.m_loLimit = m_linearLimits.m_lowerLimit[i]; + limot.m_maxLimitForce = btScalar(0.f); + limot.m_maxMotorForce = m_linearLimits.m_maxMotorForce[i]; + limot.m_targetVelocity = m_linearLimits.m_targetVelocity[i]; + btVector3 axis = m_calculatedTransformA.getBasis().getColumn(i); + int flags = m_flags >> (i * BT_6DOF_FLAGS_AXIS_SHIFT); + limot.m_normalCFM = (flags & BT_6DOF_FLAGS_CFM_NORM) ? m_linearLimits.m_normalCFM[i] : info->cfm[0]; + limot.m_stopCFM = (flags & BT_6DOF_FLAGS_CFM_STOP) ? m_linearLimits.m_stopCFM[i] : info->cfm[0]; + limot.m_stopERP = (flags & BT_6DOF_FLAGS_ERP_STOP) ? m_linearLimits.m_stopERP[i] : info->erp; + if(m_useOffsetForConstraintFrame) + { + int indx1 = (i + 1) % 3; + int indx2 = (i + 2) % 3; + int rotAllowed = 1; // rotations around orthos to current axis + if(m_angularLimits[indx1].m_currentLimit && m_angularLimits[indx2].m_currentLimit) + { + rotAllowed = 0; + } + row += get_limit_motor_info2(&limot, transA,transB,linVelA,linVelB,angVelA,angVelB, info, row, axis, 0, rotAllowed); + } + else + { + row += get_limit_motor_info2(&limot, transA,transB,linVelA,linVelB,angVelA,angVelB, info, row, axis, 0); + } + } + } + return row; +} + + + +int btGeneric6DofConstraint::setAngularLimits(btConstraintInfo2 *info, int row_offset, const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB) +{ + btGeneric6DofConstraint * d6constraint = this; + int row = row_offset; + //solve angular limits + for (int i=0;i<3 ;i++ ) + { + if(d6constraint->getRotationalLimitMotor(i)->needApplyTorques()) + { + btVector3 axis = d6constraint->getAxis(i); + int flags = m_flags >> ((i + 3) * BT_6DOF_FLAGS_AXIS_SHIFT); + if(!(flags & BT_6DOF_FLAGS_CFM_NORM)) + { + m_angularLimits[i].m_normalCFM = info->cfm[0]; + } + if(!(flags & BT_6DOF_FLAGS_CFM_STOP)) + { + m_angularLimits[i].m_stopCFM = info->cfm[0]; + } + if(!(flags & BT_6DOF_FLAGS_ERP_STOP)) + { + m_angularLimits[i].m_stopERP = info->erp; + } + row += get_limit_motor_info2(d6constraint->getRotationalLimitMotor(i), + transA,transB,linVelA,linVelB,angVelA,angVelB, info,row,axis,1); + } + } + + return row; +} + + + + +void btGeneric6DofConstraint::updateRHS(btScalar timeStep) +{ + (void)timeStep; + +} + + + +btVector3 btGeneric6DofConstraint::getAxis(int axis_index) const +{ + return m_calculatedAxis[axis_index]; +} + + +btScalar btGeneric6DofConstraint::getRelativePivotPosition(int axisIndex) const +{ + return m_calculatedLinearDiff[axisIndex]; +} + + +btScalar btGeneric6DofConstraint::getAngle(int axisIndex) const +{ + return m_calculatedAxisAngleDiff[axisIndex]; +} + + + +void btGeneric6DofConstraint::calcAnchorPos(void) +{ + btScalar imA = m_rbA.getInvMass(); + btScalar imB = m_rbB.getInvMass(); + btScalar weight; + if(imB == btScalar(0.0)) + { + weight = btScalar(1.0); + } + else + { + weight = imA / (imA + imB); + } + const btVector3& pA = m_calculatedTransformA.getOrigin(); + const btVector3& pB = m_calculatedTransformB.getOrigin(); + m_AnchorPos = pA * weight + pB * (btScalar(1.0) - weight); + return; +} + + + +void btGeneric6DofConstraint::calculateLinearInfo() +{ + m_calculatedLinearDiff = m_calculatedTransformB.getOrigin() - m_calculatedTransformA.getOrigin(); + m_calculatedLinearDiff = m_calculatedTransformA.getBasis().inverse() * m_calculatedLinearDiff; + for(int i = 0; i < 3; i++) + { + m_linearLimits.m_currentLinearDiff[i] = m_calculatedLinearDiff[i]; + m_linearLimits.testLimitValue(i, m_calculatedLinearDiff[i]); + } +} + + + +int btGeneric6DofConstraint::get_limit_motor_info2( + btRotationalLimitMotor * limot, + const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB, + btConstraintInfo2 *info, int row, btVector3& ax1, int rotational,int rotAllowed) +{ + int srow = row * info->rowskip; + int powered = limot->m_enableMotor; + int limit = limot->m_currentLimit; + if (powered || limit) + { // if the joint is powered, or has joint limits, add in the extra row + btScalar *J1 = rotational ? info->m_J1angularAxis : info->m_J1linearAxis; + btScalar *J2 = rotational ? info->m_J2angularAxis : 0; + J1[srow+0] = ax1[0]; + J1[srow+1] = ax1[1]; + J1[srow+2] = ax1[2]; + if(rotational) + { + J2[srow+0] = -ax1[0]; + J2[srow+1] = -ax1[1]; + J2[srow+2] = -ax1[2]; + } + if((!rotational)) + { + if (m_useOffsetForConstraintFrame) + { + btVector3 tmpA, tmpB, relA, relB; + // get vector from bodyB to frameB in WCS + relB = m_calculatedTransformB.getOrigin() - transB.getOrigin(); + // get its projection to constraint axis + btVector3 projB = ax1 * relB.dot(ax1); + // get vector directed from bodyB to constraint axis (and orthogonal to it) + btVector3 orthoB = relB - projB; + // same for bodyA + relA = m_calculatedTransformA.getOrigin() - transA.getOrigin(); + btVector3 projA = ax1 * relA.dot(ax1); + btVector3 orthoA = relA - projA; + // get desired offset between frames A and B along constraint axis + btScalar desiredOffs = limot->m_currentPosition - limot->m_currentLimitError; + // desired vector from projection of center of bodyA to projection of center of bodyB to constraint axis + btVector3 totalDist = projA + ax1 * desiredOffs - projB; + // get offset vectors relA and relB + relA = orthoA + totalDist * m_factA; + relB = orthoB - totalDist * m_factB; + tmpA = relA.cross(ax1); + tmpB = relB.cross(ax1); + if(m_hasStaticBody && (!rotAllowed)) + { + tmpA *= m_factA; + tmpB *= m_factB; + } + int i; + for (i=0; i<3; i++) info->m_J1angularAxis[srow+i] = tmpA[i]; + for (i=0; i<3; i++) info->m_J2angularAxis[srow+i] = -tmpB[i]; + } else + { + btVector3 ltd; // Linear Torque Decoupling vector + btVector3 c = m_calculatedTransformB.getOrigin() - transA.getOrigin(); + ltd = c.cross(ax1); + info->m_J1angularAxis[srow+0] = ltd[0]; + info->m_J1angularAxis[srow+1] = ltd[1]; + info->m_J1angularAxis[srow+2] = ltd[2]; + + c = m_calculatedTransformB.getOrigin() - transB.getOrigin(); + ltd = -c.cross(ax1); + info->m_J2angularAxis[srow+0] = ltd[0]; + info->m_J2angularAxis[srow+1] = ltd[1]; + info->m_J2angularAxis[srow+2] = ltd[2]; + } + } + // if we're limited low and high simultaneously, the joint motor is + // ineffective + if (limit && (limot->m_loLimit == limot->m_hiLimit)) powered = 0; + info->m_constraintError[srow] = btScalar(0.f); + if (powered) + { + info->cfm[srow] = limot->m_normalCFM; + if(!limit) + { + btScalar tag_vel = rotational ? limot->m_targetVelocity : -limot->m_targetVelocity; + + btScalar mot_fact = getMotorFactor( limot->m_currentPosition, + limot->m_loLimit, + limot->m_hiLimit, + tag_vel, + info->fps * limot->m_stopERP); + info->m_constraintError[srow] += mot_fact * limot->m_targetVelocity; + info->m_lowerLimit[srow] = -limot->m_maxMotorForce; + info->m_upperLimit[srow] = limot->m_maxMotorForce; + } + } + if(limit) + { + btScalar k = info->fps * limot->m_stopERP; + if(!rotational) + { + info->m_constraintError[srow] += k * limot->m_currentLimitError; + } + else + { + info->m_constraintError[srow] += -k * limot->m_currentLimitError; + } + info->cfm[srow] = limot->m_stopCFM; + if (limot->m_loLimit == limot->m_hiLimit) + { // limited low and high simultaneously + info->m_lowerLimit[srow] = -SIMD_INFINITY; + info->m_upperLimit[srow] = SIMD_INFINITY; + } + else + { + if (limit == 1) + { + info->m_lowerLimit[srow] = 0; + info->m_upperLimit[srow] = SIMD_INFINITY; + } + else + { + info->m_lowerLimit[srow] = -SIMD_INFINITY; + info->m_upperLimit[srow] = 0; + } + // deal with bounce + if (limot->m_bounce > 0) + { + // calculate joint velocity + btScalar vel; + if (rotational) + { + vel = angVelA.dot(ax1); +//make sure that if no body -> angVelB == zero vec +// if (body1) + vel -= angVelB.dot(ax1); + } + else + { + vel = linVelA.dot(ax1); +//make sure that if no body -> angVelB == zero vec +// if (body1) + vel -= linVelB.dot(ax1); + } + // only apply bounce if the velocity is incoming, and if the + // resulting c[] exceeds what we already have. + if (limit == 1) + { + if (vel < 0) + { + btScalar newc = -limot->m_bounce* vel; + if (newc > info->m_constraintError[srow]) + info->m_constraintError[srow] = newc; + } + } + else + { + if (vel > 0) + { + btScalar newc = -limot->m_bounce * vel; + if (newc < info->m_constraintError[srow]) + info->m_constraintError[srow] = newc; + } + } + } + } + } + return 1; + } + else return 0; +} + + + + + + + ///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). + ///If no axis is provided, it uses the default axis for this constraint. +void btGeneric6DofConstraint::setParam(int num, btScalar value, int axis) +{ + if((axis >= 0) && (axis < 3)) + { + switch(num) + { + case BT_CONSTRAINT_STOP_ERP : + m_linearLimits.m_stopERP[axis] = value; + m_flags |= BT_6DOF_FLAGS_ERP_STOP << (axis * BT_6DOF_FLAGS_AXIS_SHIFT); + break; + case BT_CONSTRAINT_STOP_CFM : + m_linearLimits.m_stopCFM[axis] = value; + m_flags |= BT_6DOF_FLAGS_CFM_STOP << (axis * BT_6DOF_FLAGS_AXIS_SHIFT); + break; + case BT_CONSTRAINT_CFM : + m_linearLimits.m_normalCFM[axis] = value; + m_flags |= BT_6DOF_FLAGS_CFM_NORM << (axis * BT_6DOF_FLAGS_AXIS_SHIFT); + break; + default : + btAssertConstrParams(0); + } + } + else if((axis >=3) && (axis < 6)) + { + switch(num) + { + case BT_CONSTRAINT_STOP_ERP : + m_angularLimits[axis - 3].m_stopERP = value; + m_flags |= BT_6DOF_FLAGS_ERP_STOP << (axis * BT_6DOF_FLAGS_AXIS_SHIFT); + break; + case BT_CONSTRAINT_STOP_CFM : + m_angularLimits[axis - 3].m_stopCFM = value; + m_flags |= BT_6DOF_FLAGS_CFM_STOP << (axis * BT_6DOF_FLAGS_AXIS_SHIFT); + break; + case BT_CONSTRAINT_CFM : + m_angularLimits[axis - 3].m_normalCFM = value; + m_flags |= BT_6DOF_FLAGS_CFM_NORM << (axis * BT_6DOF_FLAGS_AXIS_SHIFT); + break; + default : + btAssertConstrParams(0); + } + } + else + { + btAssertConstrParams(0); + } +} + + ///return the local value of parameter +btScalar btGeneric6DofConstraint::getParam(int num, int axis) const +{ + btScalar retVal = 0; + if((axis >= 0) && (axis < 3)) + { + switch(num) + { + case BT_CONSTRAINT_STOP_ERP : + btAssertConstrParams(m_flags & (BT_6DOF_FLAGS_ERP_STOP << (axis * BT_6DOF_FLAGS_AXIS_SHIFT))); + retVal = m_linearLimits.m_stopERP[axis]; + break; + case BT_CONSTRAINT_STOP_CFM : + btAssertConstrParams(m_flags & (BT_6DOF_FLAGS_CFM_STOP << (axis * BT_6DOF_FLAGS_AXIS_SHIFT))); + retVal = m_linearLimits.m_stopCFM[axis]; + break; + case BT_CONSTRAINT_CFM : + btAssertConstrParams(m_flags & (BT_6DOF_FLAGS_CFM_NORM << (axis * BT_6DOF_FLAGS_AXIS_SHIFT))); + retVal = m_linearLimits.m_normalCFM[axis]; + break; + default : + btAssertConstrParams(0); + } + } + else if((axis >=3) && (axis < 6)) + { + switch(num) + { + case BT_CONSTRAINT_STOP_ERP : + btAssertConstrParams(m_flags & (BT_6DOF_FLAGS_ERP_STOP << (axis * BT_6DOF_FLAGS_AXIS_SHIFT))); + retVal = m_angularLimits[axis - 3].m_stopERP; + break; + case BT_CONSTRAINT_STOP_CFM : + btAssertConstrParams(m_flags & (BT_6DOF_FLAGS_CFM_STOP << (axis * BT_6DOF_FLAGS_AXIS_SHIFT))); + retVal = m_angularLimits[axis - 3].m_stopCFM; + break; + case BT_CONSTRAINT_CFM : + btAssertConstrParams(m_flags & (BT_6DOF_FLAGS_CFM_NORM << (axis * BT_6DOF_FLAGS_AXIS_SHIFT))); + retVal = m_angularLimits[axis - 3].m_normalCFM; + break; + default : + btAssertConstrParams(0); + } + } + else + { + btAssertConstrParams(0); + } + return retVal; +} diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h new file mode 100644 index 00000000000..2653d26dc3f --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h @@ -0,0 +1,588 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +/// 2009 March: btGeneric6DofConstraint refactored by Roman Ponomarev +/// Added support for generic constraint solver through getInfo1/getInfo2 methods + +/* +2007-09-09 +btGeneric6DofConstraint Refactored by Francisco Le?n +email: projectileman@yahoo.com +http://gimpact.sf.net +*/ + + +#ifndef GENERIC_6DOF_CONSTRAINT_H +#define GENERIC_6DOF_CONSTRAINT_H + +#include "LinearMath/btVector3.h" +#include "btJacobianEntry.h" +#include "btTypedConstraint.h" + +class btRigidBody; + + + + +//! Rotation Limit structure for generic joints +class btRotationalLimitMotor +{ +public: + //! limit_parameters + //!@{ + btScalar m_loLimit;//!< joint limit + btScalar m_hiLimit;//!< joint limit + btScalar m_targetVelocity;//!< target motor velocity + btScalar m_maxMotorForce;//!< max force on motor + btScalar m_maxLimitForce;//!< max force on limit + btScalar m_damping;//!< Damping. + btScalar m_limitSoftness;//! Relaxation factor + btScalar m_normalCFM;//!< Constraint force mixing factor + btScalar m_stopERP;//!< Error tolerance factor when joint is at limit + btScalar m_stopCFM;//!< Constraint force mixing factor when joint is at limit + btScalar m_bounce;//!< restitution factor + bool m_enableMotor; + + //!@} + + //! temp_variables + //!@{ + btScalar m_currentLimitError;//! How much is violated this limit + btScalar m_currentPosition; //! current value of angle + int m_currentLimit;//!< 0=free, 1=at lo limit, 2=at hi limit + btScalar m_accumulatedImpulse; + //!@} + + btRotationalLimitMotor() + { + m_accumulatedImpulse = 0.f; + m_targetVelocity = 0; + m_maxMotorForce = 0.1f; + m_maxLimitForce = 300.0f; + m_loLimit = 1.0f; + m_hiLimit = -1.0f; + m_normalCFM = 0.f; + m_stopERP = 0.2f; + m_stopCFM = 0.f; + m_bounce = 0.0f; + m_damping = 1.0f; + m_limitSoftness = 0.5f; + m_currentLimit = 0; + m_currentLimitError = 0; + m_enableMotor = false; + } + + btRotationalLimitMotor(const btRotationalLimitMotor & limot) + { + m_targetVelocity = limot.m_targetVelocity; + m_maxMotorForce = limot.m_maxMotorForce; + m_limitSoftness = limot.m_limitSoftness; + m_loLimit = limot.m_loLimit; + m_hiLimit = limot.m_hiLimit; + m_normalCFM = limot.m_normalCFM; + m_stopERP = limot.m_stopERP; + m_stopCFM = limot.m_stopCFM; + m_bounce = limot.m_bounce; + m_currentLimit = limot.m_currentLimit; + m_currentLimitError = limot.m_currentLimitError; + m_enableMotor = limot.m_enableMotor; + } + + + + //! Is limited + bool isLimited() + { + if(m_loLimit > m_hiLimit) return false; + return true; + } + + //! Need apply correction + bool needApplyTorques() + { + if(m_currentLimit == 0 && m_enableMotor == false) return false; + return true; + } + + //! calculates error + /*! + calculates m_currentLimit and m_currentLimitError. + */ + int testLimitValue(btScalar test_value); + + //! apply the correction impulses for two bodies + btScalar solveAngularLimits(btScalar timeStep,btVector3& axis, btScalar jacDiagABInv,btRigidBody * body0, btRigidBody * body1); + +}; + + + +class btTranslationalLimitMotor +{ +public: + btVector3 m_lowerLimit;//!< the constraint lower limits + btVector3 m_upperLimit;//!< the constraint upper limits + btVector3 m_accumulatedImpulse; + //! Linear_Limit_parameters + //!@{ + btScalar m_limitSoftness;//!< Softness for linear limit + btScalar m_damping;//!< Damping for linear limit + btScalar m_restitution;//! Bounce parameter for linear limit + btVector3 m_normalCFM;//!< Constraint force mixing factor + btVector3 m_stopERP;//!< Error tolerance factor when joint is at limit + btVector3 m_stopCFM;//!< Constraint force mixing factor when joint is at limit + //!@} + bool m_enableMotor[3]; + btVector3 m_targetVelocity;//!< target motor velocity + btVector3 m_maxMotorForce;//!< max force on motor + btVector3 m_currentLimitError;//! How much is violated this limit + btVector3 m_currentLinearDiff;//! Current relative offset of constraint frames + int m_currentLimit[3];//!< 0=free, 1=at lower limit, 2=at upper limit + + btTranslationalLimitMotor() + { + m_lowerLimit.setValue(0.f,0.f,0.f); + m_upperLimit.setValue(0.f,0.f,0.f); + m_accumulatedImpulse.setValue(0.f,0.f,0.f); + m_normalCFM.setValue(0.f, 0.f, 0.f); + m_stopERP.setValue(0.2f, 0.2f, 0.2f); + m_stopCFM.setValue(0.f, 0.f, 0.f); + + m_limitSoftness = 0.7f; + m_damping = btScalar(1.0f); + m_restitution = btScalar(0.5f); + for(int i=0; i < 3; i++) + { + m_enableMotor[i] = false; + m_targetVelocity[i] = btScalar(0.f); + m_maxMotorForce[i] = btScalar(0.f); + } + } + + btTranslationalLimitMotor(const btTranslationalLimitMotor & other ) + { + m_lowerLimit = other.m_lowerLimit; + m_upperLimit = other.m_upperLimit; + m_accumulatedImpulse = other.m_accumulatedImpulse; + + m_limitSoftness = other.m_limitSoftness ; + m_damping = other.m_damping; + m_restitution = other.m_restitution; + m_normalCFM = other.m_normalCFM; + m_stopERP = other.m_stopERP; + m_stopCFM = other.m_stopCFM; + + for(int i=0; i < 3; i++) + { + m_enableMotor[i] = other.m_enableMotor[i]; + m_targetVelocity[i] = other.m_targetVelocity[i]; + m_maxMotorForce[i] = other.m_maxMotorForce[i]; + } + } + + //! Test limit + /*! + - free means upper < lower, + - locked means upper == lower + - limited means upper > lower + - limitIndex: first 3 are linear, next 3 are angular + */ + inline bool isLimited(int limitIndex) + { + return (m_upperLimit[limitIndex] >= m_lowerLimit[limitIndex]); + } + inline bool needApplyForce(int limitIndex) + { + if(m_currentLimit[limitIndex] == 0 && m_enableMotor[limitIndex] == false) return false; + return true; + } + int testLimitValue(int limitIndex, btScalar test_value); + + + btScalar solveLinearAxis( + btScalar timeStep, + btScalar jacDiagABInv, + btRigidBody& body1,const btVector3 &pointInA, + btRigidBody& body2,const btVector3 &pointInB, + int limit_index, + const btVector3 & axis_normal_on_a, + const btVector3 & anchorPos); + + +}; + +enum bt6DofFlags +{ + BT_6DOF_FLAGS_CFM_NORM = 1, + BT_6DOF_FLAGS_CFM_STOP = 2, + BT_6DOF_FLAGS_ERP_STOP = 4 +}; +#define BT_6DOF_FLAGS_AXIS_SHIFT 3 // bits per axis + + +/// btGeneric6DofConstraint between two rigidbodies each with a pivotpoint that descibes the axis location in local space +/*! +btGeneric6DofConstraint can leave any of the 6 degree of freedom 'free' or 'locked'. +currently this limit supports rotational motors
    +
      +
    • For Linear limits, use btGeneric6DofConstraint.setLinearUpperLimit, btGeneric6DofConstraint.setLinearLowerLimit. You can set the parameters with the btTranslationalLimitMotor structure accsesible through the btGeneric6DofConstraint.getTranslationalLimitMotor method. +At this moment translational motors are not supported. May be in the future.
    • + +
    • For Angular limits, use the btRotationalLimitMotor structure for configuring the limit. +This is accessible through btGeneric6DofConstraint.getLimitMotor method, +This brings support for limit parameters and motors.
    • + +
    • Angulars limits have these possible ranges: + + + + + + + + + + + + + + + + + + +
      AXISMIN ANGLEMAX ANGLE
      X-PIPI
      Y-PI/2PI/2
      Z-PIPI
      +
    • +
    + +*/ +class btGeneric6DofConstraint : public btTypedConstraint +{ +protected: + + //! relative_frames + //!@{ + btTransform m_frameInA;//!< the constraint space w.r.t body A + btTransform m_frameInB;//!< the constraint space w.r.t body B + //!@} + + //! Jacobians + //!@{ + btJacobianEntry m_jacLinear[3];//!< 3 orthogonal linear constraints + btJacobianEntry m_jacAng[3];//!< 3 orthogonal angular constraints + //!@} + + //! Linear_Limit_parameters + //!@{ + btTranslationalLimitMotor m_linearLimits; + //!@} + + + //! hinge_parameters + //!@{ + btRotationalLimitMotor m_angularLimits[3]; + //!@} + + +protected: + //! temporal variables + //!@{ + btScalar m_timeStep; + btTransform m_calculatedTransformA; + btTransform m_calculatedTransformB; + btVector3 m_calculatedAxisAngleDiff; + btVector3 m_calculatedAxis[3]; + btVector3 m_calculatedLinearDiff; + btScalar m_factA; + btScalar m_factB; + bool m_hasStaticBody; + + btVector3 m_AnchorPos; // point betwen pivots of bodies A and B to solve linear axes + + bool m_useLinearReferenceFrameA; + bool m_useOffsetForConstraintFrame; + + int m_flags; + + //!@} + + btGeneric6DofConstraint& operator=(btGeneric6DofConstraint& other) + { + btAssert(0); + (void) other; + return *this; + } + + + int setAngularLimits(btConstraintInfo2 *info, int row_offset,const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB); + + int setLinearLimits(btConstraintInfo2 *info, int row, const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB); + + void buildLinearJacobian( + btJacobianEntry & jacLinear,const btVector3 & normalWorld, + const btVector3 & pivotAInW,const btVector3 & pivotBInW); + + void buildAngularJacobian(btJacobianEntry & jacAngular,const btVector3 & jointAxisW); + + // tests linear limits + void calculateLinearInfo(); + + //! calcs the euler angles between the two bodies. + void calculateAngleInfo(); + + + +public: + + ///for backwards compatibility during the transition to 'getInfo/getInfo2' + bool m_useSolveConstraintObsolete; + + btGeneric6DofConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA); + btGeneric6DofConstraint(btRigidBody& rbB, const btTransform& frameInB, bool useLinearReferenceFrameB); + + //! Calcs global transform of the offsets + /*! + Calcs the global transform for the joint offset for body A an B, and also calcs the agle differences between the bodies. + \sa btGeneric6DofConstraint.getCalculatedTransformA , btGeneric6DofConstraint.getCalculatedTransformB, btGeneric6DofConstraint.calculateAngleInfo + */ + void calculateTransforms(const btTransform& transA,const btTransform& transB); + + void calculateTransforms(); + + //! Gets the global transform of the offset for body A + /*! + \sa btGeneric6DofConstraint.getFrameOffsetA, btGeneric6DofConstraint.getFrameOffsetB, btGeneric6DofConstraint.calculateAngleInfo. + */ + const btTransform & getCalculatedTransformA() const + { + return m_calculatedTransformA; + } + + //! Gets the global transform of the offset for body B + /*! + \sa btGeneric6DofConstraint.getFrameOffsetA, btGeneric6DofConstraint.getFrameOffsetB, btGeneric6DofConstraint.calculateAngleInfo. + */ + const btTransform & getCalculatedTransformB() const + { + return m_calculatedTransformB; + } + + const btTransform & getFrameOffsetA() const + { + return m_frameInA; + } + + const btTransform & getFrameOffsetB() const + { + return m_frameInB; + } + + + btTransform & getFrameOffsetA() + { + return m_frameInA; + } + + btTransform & getFrameOffsetB() + { + return m_frameInB; + } + + + //! performs Jacobian calculation, and also calculates angle differences and axis + virtual void buildJacobian(); + + virtual void getInfo1 (btConstraintInfo1* info); + + void getInfo1NonVirtual (btConstraintInfo1* info); + + virtual void getInfo2 (btConstraintInfo2* info); + + void getInfo2NonVirtual (btConstraintInfo2* info,const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB); + + + void updateRHS(btScalar timeStep); + + //! Get the rotation axis in global coordinates + /*! + \pre btGeneric6DofConstraint.buildJacobian must be called previously. + */ + btVector3 getAxis(int axis_index) const; + + //! Get the relative Euler angle + /*! + \pre btGeneric6DofConstraint::calculateTransforms() must be called previously. + */ + btScalar getAngle(int axis_index) const; + + //! Get the relative position of the constraint pivot + /*! + \pre btGeneric6DofConstraint::calculateTransforms() must be called previously. + */ + btScalar getRelativePivotPosition(int axis_index) const; + + + //! Test angular limit. + /*! + Calculates angular correction and returns true if limit needs to be corrected. + \pre btGeneric6DofConstraint::calculateTransforms() must be called previously. + */ + bool testAngularLimitMotor(int axis_index); + + void setLinearLowerLimit(const btVector3& linearLower) + { + m_linearLimits.m_lowerLimit = linearLower; + } + + void setLinearUpperLimit(const btVector3& linearUpper) + { + m_linearLimits.m_upperLimit = linearUpper; + } + + void setAngularLowerLimit(const btVector3& angularLower) + { + for(int i = 0; i < 3; i++) + m_angularLimits[i].m_loLimit = btNormalizeAngle(angularLower[i]); + } + + void setAngularUpperLimit(const btVector3& angularUpper) + { + for(int i = 0; i < 3; i++) + m_angularLimits[i].m_hiLimit = btNormalizeAngle(angularUpper[i]); + } + + //! Retrieves the angular limit informacion + btRotationalLimitMotor * getRotationalLimitMotor(int index) + { + return &m_angularLimits[index]; + } + + //! Retrieves the limit informacion + btTranslationalLimitMotor * getTranslationalLimitMotor() + { + return &m_linearLimits; + } + + //first 3 are linear, next 3 are angular + void setLimit(int axis, btScalar lo, btScalar hi) + { + if(axis<3) + { + m_linearLimits.m_lowerLimit[axis] = lo; + m_linearLimits.m_upperLimit[axis] = hi; + } + else + { + lo = btNormalizeAngle(lo); + hi = btNormalizeAngle(hi); + m_angularLimits[axis-3].m_loLimit = lo; + m_angularLimits[axis-3].m_hiLimit = hi; + } + } + + //! Test limit + /*! + - free means upper < lower, + - locked means upper == lower + - limited means upper > lower + - limitIndex: first 3 are linear, next 3 are angular + */ + bool isLimited(int limitIndex) + { + if(limitIndex<3) + { + return m_linearLimits.isLimited(limitIndex); + + } + return m_angularLimits[limitIndex-3].isLimited(); + } + + virtual void calcAnchorPos(void); // overridable + + int get_limit_motor_info2( btRotationalLimitMotor * limot, + const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB, + btConstraintInfo2 *info, int row, btVector3& ax1, int rotational, int rotAllowed = false); + + // access for UseFrameOffset + bool getUseFrameOffset() { return m_useOffsetForConstraintFrame; } + void setUseFrameOffset(bool frameOffsetOnOff) { m_useOffsetForConstraintFrame = frameOffsetOnOff; } + + ///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). + ///If no axis is provided, it uses the default axis for this constraint. + virtual void setParam(int num, btScalar value, int axis = -1); + ///return the local value of parameter + virtual btScalar getParam(int num, int axis = -1) const; + + virtual int calculateSerializeBufferSize() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; + + +}; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btGeneric6DofConstraintData +{ + btTypedConstraintData m_typeConstraintData; + btTransformFloatData m_rbAFrame; // constraint axii. Assumes z is hinge axis. + btTransformFloatData m_rbBFrame; + + btVector3FloatData m_linearUpperLimit; + btVector3FloatData m_linearLowerLimit; + + btVector3FloatData m_angularUpperLimit; + btVector3FloatData m_angularLowerLimit; + + int m_useLinearReferenceFrameA; + int m_useOffsetForConstraintFrame; +}; + +SIMD_FORCE_INLINE int btGeneric6DofConstraint::calculateSerializeBufferSize() const +{ + return sizeof(btGeneric6DofConstraintData); +} + + ///fills the dataBuffer and returns the struct name (and 0 on failure) +SIMD_FORCE_INLINE const char* btGeneric6DofConstraint::serialize(void* dataBuffer, btSerializer* serializer) const +{ + + btGeneric6DofConstraintData* dof = (btGeneric6DofConstraintData*)dataBuffer; + btTypedConstraint::serialize(&dof->m_typeConstraintData,serializer); + + m_frameInA.serializeFloat(dof->m_rbAFrame); + m_frameInB.serializeFloat(dof->m_rbBFrame); + + + int i; + for (i=0;i<3;i++) + { + dof->m_angularLowerLimit.m_floats[i] = float(m_angularLimits[i].m_loLimit); + dof->m_angularUpperLimit.m_floats[i] = float(m_angularLimits[i].m_hiLimit); + dof->m_linearLowerLimit.m_floats[i] = float(m_linearLimits.m_lowerLimit[i]); + dof->m_linearUpperLimit.m_floats[i] = float(m_linearLimits.m_upperLimit[i]); + } + + dof->m_useLinearReferenceFrameA = m_useLinearReferenceFrameA? 1 : 0; + dof->m_useOffsetForConstraintFrame = m_useOffsetForConstraintFrame ? 1 : 0; + + return "btGeneric6DofConstraintData"; +} + + + + + +#endif //GENERIC_6DOF_CONSTRAINT_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp new file mode 100644 index 00000000000..3fa7de4ddb8 --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp @@ -0,0 +1,146 @@ +/* +Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org +Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btGeneric6DofSpringConstraint.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include "LinearMath/btTransformUtil.h" + + +btGeneric6DofSpringConstraint::btGeneric6DofSpringConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA) + : btGeneric6DofConstraint(rbA, rbB, frameInA, frameInB, useLinearReferenceFrameA) +{ + for(int i = 0; i < 6; i++) + { + m_springEnabled[i] = false; + m_equilibriumPoint[i] = btScalar(0.f); + m_springStiffness[i] = btScalar(0.f); + m_springDamping[i] = btScalar(1.f); + } +} + + +void btGeneric6DofSpringConstraint::enableSpring(int index, bool onOff) +{ + btAssert((index >= 0) && (index < 6)); + m_springEnabled[index] = onOff; + if(index < 3) + { + m_linearLimits.m_enableMotor[index] = onOff; + } + else + { + m_angularLimits[index - 3].m_enableMotor = onOff; + } +} + + + +void btGeneric6DofSpringConstraint::setStiffness(int index, btScalar stiffness) +{ + btAssert((index >= 0) && (index < 6)); + m_springStiffness[index] = stiffness; +} + + +void btGeneric6DofSpringConstraint::setDamping(int index, btScalar damping) +{ + btAssert((index >= 0) && (index < 6)); + m_springDamping[index] = damping; +} + + +void btGeneric6DofSpringConstraint::setEquilibriumPoint() +{ + calculateTransforms(); + int i; + + for( i = 0; i < 3; i++) + { + m_equilibriumPoint[i] = m_calculatedLinearDiff[i]; + } + for(i = 0; i < 3; i++) + { + m_equilibriumPoint[i + 3] = m_calculatedAxisAngleDiff[i]; + } +} + + + +void btGeneric6DofSpringConstraint::setEquilibriumPoint(int index) +{ + btAssert((index >= 0) && (index < 6)); + calculateTransforms(); + if(index < 3) + { + m_equilibriumPoint[index] = m_calculatedLinearDiff[index]; + } + else + { + m_equilibriumPoint[index] = m_calculatedAxisAngleDiff[index - 3]; + } +} + + + +void btGeneric6DofSpringConstraint::internalUpdateSprings(btConstraintInfo2* info) +{ + // it is assumed that calculateTransforms() have been called before this call + int i; + btVector3 relVel = m_rbB.getLinearVelocity() - m_rbA.getLinearVelocity(); + for(i = 0; i < 3; i++) + { + if(m_springEnabled[i]) + { + // get current position of constraint + btScalar currPos = m_calculatedLinearDiff[i]; + // calculate difference + btScalar delta = currPos - m_equilibriumPoint[i]; + // spring force is (delta * m_stiffness) according to Hooke's Law + btScalar force = delta * m_springStiffness[i]; + btScalar velFactor = info->fps * m_springDamping[i] / btScalar(info->m_numIterations); + m_linearLimits.m_targetVelocity[i] = velFactor * force; + m_linearLimits.m_maxMotorForce[i] = btFabs(force) / info->fps; + } + } + for(i = 0; i < 3; i++) + { + if(m_springEnabled[i + 3]) + { + // get current position of constraint + btScalar currPos = m_calculatedAxisAngleDiff[i]; + // calculate difference + btScalar delta = currPos - m_equilibriumPoint[i+3]; + // spring force is (-delta * m_stiffness) according to Hooke's Law + btScalar force = -delta * m_springStiffness[i+3]; + btScalar velFactor = info->fps * m_springDamping[i+3] / btScalar(info->m_numIterations); + m_angularLimits[i].m_targetVelocity = velFactor * force; + m_angularLimits[i].m_maxMotorForce = btFabs(force) / info->fps; + } + } +} + + +void btGeneric6DofSpringConstraint::getInfo2(btConstraintInfo2* info) +{ + // this will be called by constraint solver at the constraint setup stage + // set current motor parameters + internalUpdateSprings(info); + // do the rest of job for constraint setup + btGeneric6DofConstraint::getInfo2(info); +} + + + + diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h new file mode 100644 index 00000000000..e0c1fc9ae39 --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h @@ -0,0 +1,54 @@ +/* +Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org +Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef GENERIC_6DOF_SPRING_CONSTRAINT_H +#define GENERIC_6DOF_SPRING_CONSTRAINT_H + + +#include "LinearMath/btVector3.h" +#include "btTypedConstraint.h" +#include "btGeneric6DofConstraint.h" + + +/// Generic 6 DOF constraint that allows to set spring motors to any translational and rotational DOF + +/// DOF index used in enableSpring() and setStiffness() means: +/// 0 : translation X +/// 1 : translation Y +/// 2 : translation Z +/// 3 : rotation X (3rd Euler rotational around new position of X axis, range [-PI+epsilon, PI-epsilon] ) +/// 4 : rotation Y (2nd Euler rotational around new position of Y axis, range [-PI/2+epsilon, PI/2-epsilon] ) +/// 5 : rotation Z (1st Euler rotational around Z axis, range [-PI+epsilon, PI-epsilon] ) + +class btGeneric6DofSpringConstraint : public btGeneric6DofConstraint +{ +protected: + bool m_springEnabled[6]; + btScalar m_equilibriumPoint[6]; + btScalar m_springStiffness[6]; + btScalar m_springDamping[6]; // between 0 and 1 (1 == no damping) + void internalUpdateSprings(btConstraintInfo2* info); +public: + btGeneric6DofSpringConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA); + void enableSpring(int index, bool onOff); + void setStiffness(int index, btScalar stiffness); + void setDamping(int index, btScalar damping); + void setEquilibriumPoint(); // set the current constraint position/orientation as an equilibrium point for all DOF + void setEquilibriumPoint(int index); // set the current constraint position/orientation as an equilibrium point for given DOF + virtual void getInfo2 (btConstraintInfo2* info); +}; + +#endif // GENERIC_6DOF_SPRING_CONSTRAINT_H + diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp new file mode 100644 index 00000000000..29123d526b4 --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp @@ -0,0 +1,66 @@ +/* +Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org +Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#include "btHinge2Constraint.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include "LinearMath/btTransformUtil.h" + + + +// constructor +// anchor, axis1 and axis2 are in world coordinate system +// axis1 must be orthogonal to axis2 +btHinge2Constraint::btHinge2Constraint(btRigidBody& rbA, btRigidBody& rbB, btVector3& anchor, btVector3& axis1, btVector3& axis2) +: btGeneric6DofSpringConstraint(rbA, rbB, btTransform::getIdentity(), btTransform::getIdentity(), true), + m_anchor(anchor), + m_axis1(axis1), + m_axis2(axis2) +{ + // build frame basis + // 6DOF constraint uses Euler angles and to define limits + // it is assumed that rotational order is : + // Z - first, allowed limits are (-PI,PI); + // new position of Y - second (allowed limits are (-PI/2 + epsilon, PI/2 - epsilon), where epsilon is a small positive number + // used to prevent constraint from instability on poles; + // new position of X, allowed limits are (-PI,PI); + // So to simulate ODE Universal joint we should use parent axis as Z, child axis as Y and limit all other DOFs + // Build the frame in world coordinate system first + btVector3 zAxis = axis1.normalize(); + btVector3 xAxis = axis2.normalize(); + btVector3 yAxis = zAxis.cross(xAxis); // we want right coordinate system + btTransform frameInW; + frameInW.setIdentity(); + frameInW.getBasis().setValue( xAxis[0], yAxis[0], zAxis[0], + xAxis[1], yAxis[1], zAxis[1], + xAxis[2], yAxis[2], zAxis[2]); + frameInW.setOrigin(anchor); + // now get constraint frame in local coordinate systems + m_frameInA = rbA.getCenterOfMassTransform().inverse() * frameInW; + m_frameInB = rbB.getCenterOfMassTransform().inverse() * frameInW; + // sei limits + setLinearLowerLimit(btVector3(0.f, 0.f, -1.f)); + setLinearUpperLimit(btVector3(0.f, 0.f, 1.f)); + // like front wheels of a car + setAngularLowerLimit(btVector3(1.f, 0.f, -SIMD_HALF_PI * 0.5f)); + setAngularUpperLimit(btVector3(-1.f, 0.f, SIMD_HALF_PI * 0.5f)); + // enable suspension + enableSpring(2, true); + setStiffness(2, SIMD_PI * SIMD_PI * 4.f); // period 1 sec for 1 kilogramm weel :-) + setDamping(2, 0.01f); + setEquilibriumPoint(); +} + diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btHinge2Constraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btHinge2Constraint.h new file mode 100644 index 00000000000..15fd4a014cc --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btHinge2Constraint.h @@ -0,0 +1,58 @@ +/* +Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org +Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef HINGE2_CONSTRAINT_H +#define HINGE2_CONSTRAINT_H + + + +#include "LinearMath/btVector3.h" +#include "btTypedConstraint.h" +#include "btGeneric6DofSpringConstraint.h" + + + +// Constraint similar to ODE Hinge2 Joint +// has 3 degrees of frredom: +// 2 rotational degrees of freedom, similar to Euler rotations around Z (axis 1) and X (axis 2) +// 1 translational (along axis Z) with suspension spring + +class btHinge2Constraint : public btGeneric6DofSpringConstraint +{ +protected: + btVector3 m_anchor; + btVector3 m_axis1; + btVector3 m_axis2; +public: + // constructor + // anchor, axis1 and axis2 are in world coordinate system + // axis1 must be orthogonal to axis2 + btHinge2Constraint(btRigidBody& rbA, btRigidBody& rbB, btVector3& anchor, btVector3& axis1, btVector3& axis2); + // access + const btVector3& getAnchor() { return m_calculatedTransformA.getOrigin(); } + const btVector3& getAnchor2() { return m_calculatedTransformB.getOrigin(); } + const btVector3& getAxis1() { return m_axis1; } + const btVector3& getAxis2() { return m_axis2; } + btScalar getAngle1() { return getAngle(2); } + btScalar getAngle2() { return getAngle(0); } + // limits + void setUpperLimit(btScalar ang1max) { setAngularUpperLimit(btVector3(-1.f, 0.f, ang1max)); } + void setLowerLimit(btScalar ang1min) { setAngularLowerLimit(btVector3( 1.f, 0.f, ang1min)); } +}; + + + +#endif // HINGE2_CONSTRAINT_H + diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp new file mode 100644 index 00000000000..2bfa55a2933 --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp @@ -0,0 +1,992 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btHingeConstraint.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include "LinearMath/btTransformUtil.h" +#include "LinearMath/btMinMax.h" +#include +#include "btSolverBody.h" + + + +//#define HINGE_USE_OBSOLETE_SOLVER false +#define HINGE_USE_OBSOLETE_SOLVER false + +#define HINGE_USE_FRAME_OFFSET true + +#ifndef __SPU__ + + + + + +btHingeConstraint::btHingeConstraint(btRigidBody& rbA,btRigidBody& rbB, const btVector3& pivotInA,const btVector3& pivotInB, + btVector3& axisInA,btVector3& axisInB, bool useReferenceFrameA) + :btTypedConstraint(HINGE_CONSTRAINT_TYPE, rbA,rbB), + m_angularOnly(false), + m_enableAngularMotor(false), + m_useSolveConstraintObsolete(HINGE_USE_OBSOLETE_SOLVER), + m_useOffsetForConstraintFrame(HINGE_USE_FRAME_OFFSET), + m_useReferenceFrameA(useReferenceFrameA), + m_flags(0) +{ + m_rbAFrame.getOrigin() = pivotInA; + + // since no frame is given, assume this to be zero angle and just pick rb transform axis + btVector3 rbAxisA1 = rbA.getCenterOfMassTransform().getBasis().getColumn(0); + + btVector3 rbAxisA2; + btScalar projection = axisInA.dot(rbAxisA1); + if (projection >= 1.0f - SIMD_EPSILON) { + rbAxisA1 = -rbA.getCenterOfMassTransform().getBasis().getColumn(2); + rbAxisA2 = rbA.getCenterOfMassTransform().getBasis().getColumn(1); + } else if (projection <= -1.0f + SIMD_EPSILON) { + rbAxisA1 = rbA.getCenterOfMassTransform().getBasis().getColumn(2); + rbAxisA2 = rbA.getCenterOfMassTransform().getBasis().getColumn(1); + } else { + rbAxisA2 = axisInA.cross(rbAxisA1); + rbAxisA1 = rbAxisA2.cross(axisInA); + } + + m_rbAFrame.getBasis().setValue( rbAxisA1.getX(),rbAxisA2.getX(),axisInA.getX(), + rbAxisA1.getY(),rbAxisA2.getY(),axisInA.getY(), + rbAxisA1.getZ(),rbAxisA2.getZ(),axisInA.getZ() ); + + btQuaternion rotationArc = shortestArcQuat(axisInA,axisInB); + btVector3 rbAxisB1 = quatRotate(rotationArc,rbAxisA1); + btVector3 rbAxisB2 = axisInB.cross(rbAxisB1); + + m_rbBFrame.getOrigin() = pivotInB; + m_rbBFrame.getBasis().setValue( rbAxisB1.getX(),rbAxisB2.getX(),axisInB.getX(), + rbAxisB1.getY(),rbAxisB2.getY(),axisInB.getY(), + rbAxisB1.getZ(),rbAxisB2.getZ(),axisInB.getZ() ); + + //start with free + m_lowerLimit = btScalar(1.0f); + m_upperLimit = btScalar(-1.0f); + m_biasFactor = 0.3f; + m_relaxationFactor = 1.0f; + m_limitSoftness = 0.9f; + m_solveLimit = false; + m_referenceSign = m_useReferenceFrameA ? btScalar(-1.f) : btScalar(1.f); +} + + + +btHingeConstraint::btHingeConstraint(btRigidBody& rbA,const btVector3& pivotInA,btVector3& axisInA, bool useReferenceFrameA) +:btTypedConstraint(HINGE_CONSTRAINT_TYPE, rbA), m_angularOnly(false), m_enableAngularMotor(false), +m_useSolveConstraintObsolete(HINGE_USE_OBSOLETE_SOLVER), +m_useOffsetForConstraintFrame(HINGE_USE_FRAME_OFFSET), +m_useReferenceFrameA(useReferenceFrameA), +m_flags(0) +{ + + // since no frame is given, assume this to be zero angle and just pick rb transform axis + // fixed axis in worldspace + btVector3 rbAxisA1, rbAxisA2; + btPlaneSpace1(axisInA, rbAxisA1, rbAxisA2); + + m_rbAFrame.getOrigin() = pivotInA; + m_rbAFrame.getBasis().setValue( rbAxisA1.getX(),rbAxisA2.getX(),axisInA.getX(), + rbAxisA1.getY(),rbAxisA2.getY(),axisInA.getY(), + rbAxisA1.getZ(),rbAxisA2.getZ(),axisInA.getZ() ); + + btVector3 axisInB = rbA.getCenterOfMassTransform().getBasis() * axisInA; + + btQuaternion rotationArc = shortestArcQuat(axisInA,axisInB); + btVector3 rbAxisB1 = quatRotate(rotationArc,rbAxisA1); + btVector3 rbAxisB2 = axisInB.cross(rbAxisB1); + + + m_rbBFrame.getOrigin() = rbA.getCenterOfMassTransform()(pivotInA); + m_rbBFrame.getBasis().setValue( rbAxisB1.getX(),rbAxisB2.getX(),axisInB.getX(), + rbAxisB1.getY(),rbAxisB2.getY(),axisInB.getY(), + rbAxisB1.getZ(),rbAxisB2.getZ(),axisInB.getZ() ); + + //start with free + m_lowerLimit = btScalar(1.0f); + m_upperLimit = btScalar(-1.0f); + m_biasFactor = 0.3f; + m_relaxationFactor = 1.0f; + m_limitSoftness = 0.9f; + m_solveLimit = false; + m_referenceSign = m_useReferenceFrameA ? btScalar(-1.f) : btScalar(1.f); +} + + + +btHingeConstraint::btHingeConstraint(btRigidBody& rbA,btRigidBody& rbB, + const btTransform& rbAFrame, const btTransform& rbBFrame, bool useReferenceFrameA) +:btTypedConstraint(HINGE_CONSTRAINT_TYPE, rbA,rbB),m_rbAFrame(rbAFrame),m_rbBFrame(rbBFrame), +m_angularOnly(false), +m_enableAngularMotor(false), +m_useSolveConstraintObsolete(HINGE_USE_OBSOLETE_SOLVER), +m_useOffsetForConstraintFrame(HINGE_USE_FRAME_OFFSET), +m_useReferenceFrameA(useReferenceFrameA), +m_flags(0) +{ + //start with free + m_lowerLimit = btScalar(1.0f); + m_upperLimit = btScalar(-1.0f); + m_biasFactor = 0.3f; + m_relaxationFactor = 1.0f; + m_limitSoftness = 0.9f; + m_solveLimit = false; + m_referenceSign = m_useReferenceFrameA ? btScalar(-1.f) : btScalar(1.f); +} + + + +btHingeConstraint::btHingeConstraint(btRigidBody& rbA, const btTransform& rbAFrame, bool useReferenceFrameA) +:btTypedConstraint(HINGE_CONSTRAINT_TYPE, rbA),m_rbAFrame(rbAFrame),m_rbBFrame(rbAFrame), +m_angularOnly(false), +m_enableAngularMotor(false), +m_useSolveConstraintObsolete(HINGE_USE_OBSOLETE_SOLVER), +m_useOffsetForConstraintFrame(HINGE_USE_FRAME_OFFSET), +m_useReferenceFrameA(useReferenceFrameA), +m_flags(0) +{ + ///not providing rigidbody B means implicitly using worldspace for body B + + m_rbBFrame.getOrigin() = m_rbA.getCenterOfMassTransform()(m_rbAFrame.getOrigin()); + + //start with free + m_lowerLimit = btScalar(1.0f); + m_upperLimit = btScalar(-1.0f); + m_biasFactor = 0.3f; + m_relaxationFactor = 1.0f; + m_limitSoftness = 0.9f; + m_solveLimit = false; + m_referenceSign = m_useReferenceFrameA ? btScalar(-1.f) : btScalar(1.f); +} + + + +void btHingeConstraint::buildJacobian() +{ + if (m_useSolveConstraintObsolete) + { + m_appliedImpulse = btScalar(0.); + m_accMotorImpulse = btScalar(0.); + + if (!m_angularOnly) + { + btVector3 pivotAInW = m_rbA.getCenterOfMassTransform()*m_rbAFrame.getOrigin(); + btVector3 pivotBInW = m_rbB.getCenterOfMassTransform()*m_rbBFrame.getOrigin(); + btVector3 relPos = pivotBInW - pivotAInW; + + btVector3 normal[3]; + if (relPos.length2() > SIMD_EPSILON) + { + normal[0] = relPos.normalized(); + } + else + { + normal[0].setValue(btScalar(1.0),0,0); + } + + btPlaneSpace1(normal[0], normal[1], normal[2]); + + for (int i=0;i<3;i++) + { + new (&m_jac[i]) btJacobianEntry( + m_rbA.getCenterOfMassTransform().getBasis().transpose(), + m_rbB.getCenterOfMassTransform().getBasis().transpose(), + pivotAInW - m_rbA.getCenterOfMassPosition(), + pivotBInW - m_rbB.getCenterOfMassPosition(), + normal[i], + m_rbA.getInvInertiaDiagLocal(), + m_rbA.getInvMass(), + m_rbB.getInvInertiaDiagLocal(), + m_rbB.getInvMass()); + } + } + + //calculate two perpendicular jointAxis, orthogonal to hingeAxis + //these two jointAxis require equal angular velocities for both bodies + + //this is unused for now, it's a todo + btVector3 jointAxis0local; + btVector3 jointAxis1local; + + btPlaneSpace1(m_rbAFrame.getBasis().getColumn(2),jointAxis0local,jointAxis1local); + + btVector3 jointAxis0 = getRigidBodyA().getCenterOfMassTransform().getBasis() * jointAxis0local; + btVector3 jointAxis1 = getRigidBodyA().getCenterOfMassTransform().getBasis() * jointAxis1local; + btVector3 hingeAxisWorld = getRigidBodyA().getCenterOfMassTransform().getBasis() * m_rbAFrame.getBasis().getColumn(2); + + new (&m_jacAng[0]) btJacobianEntry(jointAxis0, + m_rbA.getCenterOfMassTransform().getBasis().transpose(), + m_rbB.getCenterOfMassTransform().getBasis().transpose(), + m_rbA.getInvInertiaDiagLocal(), + m_rbB.getInvInertiaDiagLocal()); + + new (&m_jacAng[1]) btJacobianEntry(jointAxis1, + m_rbA.getCenterOfMassTransform().getBasis().transpose(), + m_rbB.getCenterOfMassTransform().getBasis().transpose(), + m_rbA.getInvInertiaDiagLocal(), + m_rbB.getInvInertiaDiagLocal()); + + new (&m_jacAng[2]) btJacobianEntry(hingeAxisWorld, + m_rbA.getCenterOfMassTransform().getBasis().transpose(), + m_rbB.getCenterOfMassTransform().getBasis().transpose(), + m_rbA.getInvInertiaDiagLocal(), + m_rbB.getInvInertiaDiagLocal()); + + // clear accumulator + m_accLimitImpulse = btScalar(0.); + + // test angular limit + testLimit(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); + + //Compute K = J*W*J' for hinge axis + btVector3 axisA = getRigidBodyA().getCenterOfMassTransform().getBasis() * m_rbAFrame.getBasis().getColumn(2); + m_kHinge = 1.0f / (getRigidBodyA().computeAngularImpulseDenominator(axisA) + + getRigidBodyB().computeAngularImpulseDenominator(axisA)); + + } +} + + +#endif //__SPU__ + + +void btHingeConstraint::getInfo1(btConstraintInfo1* info) +{ + if (m_useSolveConstraintObsolete) + { + info->m_numConstraintRows = 0; + info->nub = 0; + } + else + { + info->m_numConstraintRows = 5; // Fixed 3 linear + 2 angular + info->nub = 1; + //always add the row, to avoid computation (data is not available yet) + //prepare constraint + testLimit(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); + if(getSolveLimit() || getEnableAngularMotor()) + { + info->m_numConstraintRows++; // limit 3rd anguar as well + info->nub--; + } + + } +} + +void btHingeConstraint::getInfo1NonVirtual(btConstraintInfo1* info) +{ + if (m_useSolveConstraintObsolete) + { + info->m_numConstraintRows = 0; + info->nub = 0; + } + else + { + //always add the 'limit' row, to avoid computation (data is not available yet) + info->m_numConstraintRows = 6; // Fixed 3 linear + 2 angular + info->nub = 0; + } +} + +void btHingeConstraint::getInfo2 (btConstraintInfo2* info) +{ + if(m_useOffsetForConstraintFrame) + { + getInfo2InternalUsingFrameOffset(info, m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform(),m_rbA.getAngularVelocity(),m_rbB.getAngularVelocity()); + } + else + { + getInfo2Internal(info, m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform(),m_rbA.getAngularVelocity(),m_rbB.getAngularVelocity()); + } +} + + +void btHingeConstraint::getInfo2NonVirtual (btConstraintInfo2* info,const btTransform& transA,const btTransform& transB,const btVector3& angVelA,const btVector3& angVelB) +{ + ///the regular (virtual) implementation getInfo2 already performs 'testLimit' during getInfo1, so we need to do it now + testLimit(transA,transB); + + getInfo2Internal(info,transA,transB,angVelA,angVelB); +} + + +void btHingeConstraint::getInfo2Internal(btConstraintInfo2* info, const btTransform& transA,const btTransform& transB,const btVector3& angVelA,const btVector3& angVelB) +{ + + btAssert(!m_useSolveConstraintObsolete); + int i, skip = info->rowskip; + // transforms in world space + btTransform trA = transA*m_rbAFrame; + btTransform trB = transB*m_rbBFrame; + // pivot point + btVector3 pivotAInW = trA.getOrigin(); + btVector3 pivotBInW = trB.getOrigin(); +#if 0 + if (0) + { + for (i=0;i<6;i++) + { + info->m_J1linearAxis[i*skip]=0; + info->m_J1linearAxis[i*skip+1]=0; + info->m_J1linearAxis[i*skip+2]=0; + + info->m_J1angularAxis[i*skip]=0; + info->m_J1angularAxis[i*skip+1]=0; + info->m_J1angularAxis[i*skip+2]=0; + + info->m_J2angularAxis[i*skip]=0; + info->m_J2angularAxis[i*skip+1]=0; + info->m_J2angularAxis[i*skip+2]=0; + + info->m_constraintError[i*skip]=0.f; + } + } +#endif //#if 0 + // linear (all fixed) + info->m_J1linearAxis[0] = 1; + info->m_J1linearAxis[skip + 1] = 1; + info->m_J1linearAxis[2 * skip + 2] = 1; + + + + + + btVector3 a1 = pivotAInW - transA.getOrigin(); + { + btVector3* angular0 = (btVector3*)(info->m_J1angularAxis); + btVector3* angular1 = (btVector3*)(info->m_J1angularAxis + skip); + btVector3* angular2 = (btVector3*)(info->m_J1angularAxis + 2 * skip); + btVector3 a1neg = -a1; + a1neg.getSkewSymmetricMatrix(angular0,angular1,angular2); + } + btVector3 a2 = pivotBInW - transB.getOrigin(); + { + btVector3* angular0 = (btVector3*)(info->m_J2angularAxis); + btVector3* angular1 = (btVector3*)(info->m_J2angularAxis + skip); + btVector3* angular2 = (btVector3*)(info->m_J2angularAxis + 2 * skip); + a2.getSkewSymmetricMatrix(angular0,angular1,angular2); + } + // linear RHS + btScalar k = info->fps * info->erp; + for(i = 0; i < 3; i++) + { + info->m_constraintError[i * skip] = k * (pivotBInW[i] - pivotAInW[i]); + } + // make rotations around X and Y equal + // the hinge axis should be the only unconstrained + // rotational axis, the angular velocity of the two bodies perpendicular to + // the hinge axis should be equal. thus the constraint equations are + // p*w1 - p*w2 = 0 + // q*w1 - q*w2 = 0 + // where p and q are unit vectors normal to the hinge axis, and w1 and w2 + // are the angular velocity vectors of the two bodies. + // get hinge axis (Z) + btVector3 ax1 = trA.getBasis().getColumn(2); + // get 2 orthos to hinge axis (X, Y) + btVector3 p = trA.getBasis().getColumn(0); + btVector3 q = trA.getBasis().getColumn(1); + // set the two hinge angular rows + int s3 = 3 * info->rowskip; + int s4 = 4 * info->rowskip; + + info->m_J1angularAxis[s3 + 0] = p[0]; + info->m_J1angularAxis[s3 + 1] = p[1]; + info->m_J1angularAxis[s3 + 2] = p[2]; + info->m_J1angularAxis[s4 + 0] = q[0]; + info->m_J1angularAxis[s4 + 1] = q[1]; + info->m_J1angularAxis[s4 + 2] = q[2]; + + info->m_J2angularAxis[s3 + 0] = -p[0]; + info->m_J2angularAxis[s3 + 1] = -p[1]; + info->m_J2angularAxis[s3 + 2] = -p[2]; + info->m_J2angularAxis[s4 + 0] = -q[0]; + info->m_J2angularAxis[s4 + 1] = -q[1]; + info->m_J2angularAxis[s4 + 2] = -q[2]; + // compute the right hand side of the constraint equation. set relative + // body velocities along p and q to bring the hinge back into alignment. + // if ax1,ax2 are the unit length hinge axes as computed from body1 and + // body2, we need to rotate both bodies along the axis u = (ax1 x ax2). + // if `theta' is the angle between ax1 and ax2, we need an angular velocity + // along u to cover angle erp*theta in one step : + // |angular_velocity| = angle/time = erp*theta / stepsize + // = (erp*fps) * theta + // angular_velocity = |angular_velocity| * (ax1 x ax2) / |ax1 x ax2| + // = (erp*fps) * theta * (ax1 x ax2) / sin(theta) + // ...as ax1 and ax2 are unit length. if theta is smallish, + // theta ~= sin(theta), so + // angular_velocity = (erp*fps) * (ax1 x ax2) + // ax1 x ax2 is in the plane space of ax1, so we project the angular + // velocity to p and q to find the right hand side. + btVector3 ax2 = trB.getBasis().getColumn(2); + btVector3 u = ax1.cross(ax2); + info->m_constraintError[s3] = k * u.dot(p); + info->m_constraintError[s4] = k * u.dot(q); + // check angular limits + int nrow = 4; // last filled row + int srow; + btScalar limit_err = btScalar(0.0); + int limit = 0; + if(getSolveLimit()) + { + limit_err = m_correction * m_referenceSign; + limit = (limit_err > btScalar(0.0)) ? 1 : 2; + } + // if the hinge has joint limits or motor, add in the extra row + int powered = 0; + if(getEnableAngularMotor()) + { + powered = 1; + } + if(limit || powered) + { + nrow++; + srow = nrow * info->rowskip; + info->m_J1angularAxis[srow+0] = ax1[0]; + info->m_J1angularAxis[srow+1] = ax1[1]; + info->m_J1angularAxis[srow+2] = ax1[2]; + + info->m_J2angularAxis[srow+0] = -ax1[0]; + info->m_J2angularAxis[srow+1] = -ax1[1]; + info->m_J2angularAxis[srow+2] = -ax1[2]; + + btScalar lostop = getLowerLimit(); + btScalar histop = getUpperLimit(); + if(limit && (lostop == histop)) + { // the joint motor is ineffective + powered = 0; + } + info->m_constraintError[srow] = btScalar(0.0f); + btScalar currERP = (m_flags & BT_HINGE_FLAGS_ERP_STOP) ? m_stopERP : info->erp; + if(powered) + { + if(m_flags & BT_HINGE_FLAGS_CFM_NORM) + { + info->cfm[srow] = m_normalCFM; + } + btScalar mot_fact = getMotorFactor(m_hingeAngle, lostop, histop, m_motorTargetVelocity, info->fps * currERP); + info->m_constraintError[srow] += mot_fact * m_motorTargetVelocity * m_referenceSign; + info->m_lowerLimit[srow] = - m_maxMotorImpulse; + info->m_upperLimit[srow] = m_maxMotorImpulse; + } + if(limit) + { + k = info->fps * currERP; + info->m_constraintError[srow] += k * limit_err; + if(m_flags & BT_HINGE_FLAGS_CFM_STOP) + { + info->cfm[srow] = m_stopCFM; + } + if(lostop == histop) + { + // limited low and high simultaneously + info->m_lowerLimit[srow] = -SIMD_INFINITY; + info->m_upperLimit[srow] = SIMD_INFINITY; + } + else if(limit == 1) + { // low limit + info->m_lowerLimit[srow] = 0; + info->m_upperLimit[srow] = SIMD_INFINITY; + } + else + { // high limit + info->m_lowerLimit[srow] = -SIMD_INFINITY; + info->m_upperLimit[srow] = 0; + } + // bounce (we'll use slider parameter abs(1.0 - m_dampingLimAng) for that) + btScalar bounce = m_relaxationFactor; + if(bounce > btScalar(0.0)) + { + btScalar vel = angVelA.dot(ax1); + vel -= angVelB.dot(ax1); + // only apply bounce if the velocity is incoming, and if the + // resulting c[] exceeds what we already have. + if(limit == 1) + { // low limit + if(vel < 0) + { + btScalar newc = -bounce * vel; + if(newc > info->m_constraintError[srow]) + { + info->m_constraintError[srow] = newc; + } + } + } + else + { // high limit - all those computations are reversed + if(vel > 0) + { + btScalar newc = -bounce * vel; + if(newc < info->m_constraintError[srow]) + { + info->m_constraintError[srow] = newc; + } + } + } + } + info->m_constraintError[srow] *= m_biasFactor; + } // if(limit) + } // if angular limit or powered +} + + + + + + +void btHingeConstraint::updateRHS(btScalar timeStep) +{ + (void)timeStep; + +} + + +btScalar btHingeConstraint::getHingeAngle() +{ + return getHingeAngle(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); +} + +btScalar btHingeConstraint::getHingeAngle(const btTransform& transA,const btTransform& transB) +{ + const btVector3 refAxis0 = transA.getBasis() * m_rbAFrame.getBasis().getColumn(0); + const btVector3 refAxis1 = transA.getBasis() * m_rbAFrame.getBasis().getColumn(1); + const btVector3 swingAxis = transB.getBasis() * m_rbBFrame.getBasis().getColumn(1); +// btScalar angle = btAtan2Fast(swingAxis.dot(refAxis0), swingAxis.dot(refAxis1)); + btScalar angle = btAtan2(swingAxis.dot(refAxis0), swingAxis.dot(refAxis1)); + return m_referenceSign * angle; +} + + +#if 0 +void btHingeConstraint::testLimit() +{ + // Compute limit information + m_hingeAngle = getHingeAngle(); + m_correction = btScalar(0.); + m_limitSign = btScalar(0.); + m_solveLimit = false; + if (m_lowerLimit <= m_upperLimit) + { + if (m_hingeAngle <= m_lowerLimit) + { + m_correction = (m_lowerLimit - m_hingeAngle); + m_limitSign = 1.0f; + m_solveLimit = true; + } + else if (m_hingeAngle >= m_upperLimit) + { + m_correction = m_upperLimit - m_hingeAngle; + m_limitSign = -1.0f; + m_solveLimit = true; + } + } + return; +} +#else + + +void btHingeConstraint::testLimit(const btTransform& transA,const btTransform& transB) +{ + // Compute limit information + m_hingeAngle = getHingeAngle(transA,transB); + m_correction = btScalar(0.); + m_limitSign = btScalar(0.); + m_solveLimit = false; + if (m_lowerLimit <= m_upperLimit) + { + m_hingeAngle = btAdjustAngleToLimits(m_hingeAngle, m_lowerLimit, m_upperLimit); + if (m_hingeAngle <= m_lowerLimit) + { + m_correction = (m_lowerLimit - m_hingeAngle); + m_limitSign = 1.0f; + m_solveLimit = true; + } + else if (m_hingeAngle >= m_upperLimit) + { + m_correction = m_upperLimit - m_hingeAngle; + m_limitSign = -1.0f; + m_solveLimit = true; + } + } + return; +} +#endif + +static btVector3 vHinge(0, 0, btScalar(1)); + +void btHingeConstraint::setMotorTarget(const btQuaternion& qAinB, btScalar dt) +{ + // convert target from body to constraint space + btQuaternion qConstraint = m_rbBFrame.getRotation().inverse() * qAinB * m_rbAFrame.getRotation(); + qConstraint.normalize(); + + // extract "pure" hinge component + btVector3 vNoHinge = quatRotate(qConstraint, vHinge); vNoHinge.normalize(); + btQuaternion qNoHinge = shortestArcQuat(vHinge, vNoHinge); + btQuaternion qHinge = qNoHinge.inverse() * qConstraint; + qHinge.normalize(); + + // compute angular target, clamped to limits + btScalar targetAngle = qHinge.getAngle(); + if (targetAngle > SIMD_PI) // long way around. flip quat and recalculate. + { + qHinge = operator-(qHinge); + targetAngle = qHinge.getAngle(); + } + if (qHinge.getZ() < 0) + targetAngle = -targetAngle; + + setMotorTarget(targetAngle, dt); +} + +void btHingeConstraint::setMotorTarget(btScalar targetAngle, btScalar dt) +{ + if (m_lowerLimit < m_upperLimit) + { + if (targetAngle < m_lowerLimit) + targetAngle = m_lowerLimit; + else if (targetAngle > m_upperLimit) + targetAngle = m_upperLimit; + } + + // compute angular velocity + btScalar curAngle = getHingeAngle(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); + btScalar dAngle = targetAngle - curAngle; + m_motorTargetVelocity = dAngle / dt; +} + + + +void btHingeConstraint::getInfo2InternalUsingFrameOffset(btConstraintInfo2* info, const btTransform& transA,const btTransform& transB,const btVector3& angVelA,const btVector3& angVelB) +{ + btAssert(!m_useSolveConstraintObsolete); + int i, s = info->rowskip; + // transforms in world space + btTransform trA = transA*m_rbAFrame; + btTransform trB = transB*m_rbBFrame; + // pivot point + btVector3 pivotAInW = trA.getOrigin(); + btVector3 pivotBInW = trB.getOrigin(); +#if 1 + // difference between frames in WCS + btVector3 ofs = trB.getOrigin() - trA.getOrigin(); + // now get weight factors depending on masses + btScalar miA = getRigidBodyA().getInvMass(); + btScalar miB = getRigidBodyB().getInvMass(); + bool hasStaticBody = (miA < SIMD_EPSILON) || (miB < SIMD_EPSILON); + btScalar miS = miA + miB; + btScalar factA, factB; + if(miS > btScalar(0.f)) + { + factA = miB / miS; + } + else + { + factA = btScalar(0.5f); + } + factB = btScalar(1.0f) - factA; + // get the desired direction of hinge axis + // as weighted sum of Z-orthos of frameA and frameB in WCS + btVector3 ax1A = trA.getBasis().getColumn(2); + btVector3 ax1B = trB.getBasis().getColumn(2); + btVector3 ax1 = ax1A * factA + ax1B * factB; + ax1.normalize(); + // fill first 3 rows + // we want: velA + wA x relA == velB + wB x relB + btTransform bodyA_trans = transA; + btTransform bodyB_trans = transB; + int s0 = 0; + int s1 = s; + int s2 = s * 2; + int nrow = 2; // last filled row + btVector3 tmpA, tmpB, relA, relB, p, q; + // get vector from bodyB to frameB in WCS + relB = trB.getOrigin() - bodyB_trans.getOrigin(); + // get its projection to hinge axis + btVector3 projB = ax1 * relB.dot(ax1); + // get vector directed from bodyB to hinge axis (and orthogonal to it) + btVector3 orthoB = relB - projB; + // same for bodyA + relA = trA.getOrigin() - bodyA_trans.getOrigin(); + btVector3 projA = ax1 * relA.dot(ax1); + btVector3 orthoA = relA - projA; + btVector3 totalDist = projA - projB; + // get offset vectors relA and relB + relA = orthoA + totalDist * factA; + relB = orthoB - totalDist * factB; + // now choose average ortho to hinge axis + p = orthoB * factA + orthoA * factB; + btScalar len2 = p.length2(); + if(len2 > SIMD_EPSILON) + { + p /= btSqrt(len2); + } + else + { + p = trA.getBasis().getColumn(1); + } + // make one more ortho + q = ax1.cross(p); + // fill three rows + tmpA = relA.cross(p); + tmpB = relB.cross(p); + for (i=0; i<3; i++) info->m_J1angularAxis[s0+i] = tmpA[i]; + for (i=0; i<3; i++) info->m_J2angularAxis[s0+i] = -tmpB[i]; + tmpA = relA.cross(q); + tmpB = relB.cross(q); + if(hasStaticBody && getSolveLimit()) + { // to make constraint between static and dynamic objects more rigid + // remove wA (or wB) from equation if angular limit is hit + tmpB *= factB; + tmpA *= factA; + } + for (i=0; i<3; i++) info->m_J1angularAxis[s1+i] = tmpA[i]; + for (i=0; i<3; i++) info->m_J2angularAxis[s1+i] = -tmpB[i]; + tmpA = relA.cross(ax1); + tmpB = relB.cross(ax1); + if(hasStaticBody) + { // to make constraint between static and dynamic objects more rigid + // remove wA (or wB) from equation + tmpB *= factB; + tmpA *= factA; + } + for (i=0; i<3; i++) info->m_J1angularAxis[s2+i] = tmpA[i]; + for (i=0; i<3; i++) info->m_J2angularAxis[s2+i] = -tmpB[i]; + + for (i=0; i<3; i++) info->m_J1linearAxis[s0+i] = p[i]; + for (i=0; i<3; i++) info->m_J1linearAxis[s1+i] = q[i]; + for (i=0; i<3; i++) info->m_J1linearAxis[s2+i] = ax1[i]; + // compute three elements of right hand side + btScalar k = info->fps * info->erp; + btScalar rhs = k * p.dot(ofs); + info->m_constraintError[s0] = rhs; + rhs = k * q.dot(ofs); + info->m_constraintError[s1] = rhs; + rhs = k * ax1.dot(ofs); + info->m_constraintError[s2] = rhs; + // the hinge axis should be the only unconstrained + // rotational axis, the angular velocity of the two bodies perpendicular to + // the hinge axis should be equal. thus the constraint equations are + // p*w1 - p*w2 = 0 + // q*w1 - q*w2 = 0 + // where p and q are unit vectors normal to the hinge axis, and w1 and w2 + // are the angular velocity vectors of the two bodies. + int s3 = 3 * s; + int s4 = 4 * s; + info->m_J1angularAxis[s3 + 0] = p[0]; + info->m_J1angularAxis[s3 + 1] = p[1]; + info->m_J1angularAxis[s3 + 2] = p[2]; + info->m_J1angularAxis[s4 + 0] = q[0]; + info->m_J1angularAxis[s4 + 1] = q[1]; + info->m_J1angularAxis[s4 + 2] = q[2]; + + info->m_J2angularAxis[s3 + 0] = -p[0]; + info->m_J2angularAxis[s3 + 1] = -p[1]; + info->m_J2angularAxis[s3 + 2] = -p[2]; + info->m_J2angularAxis[s4 + 0] = -q[0]; + info->m_J2angularAxis[s4 + 1] = -q[1]; + info->m_J2angularAxis[s4 + 2] = -q[2]; + // compute the right hand side of the constraint equation. set relative + // body velocities along p and q to bring the hinge back into alignment. + // if ax1A,ax1B are the unit length hinge axes as computed from bodyA and + // bodyB, we need to rotate both bodies along the axis u = (ax1 x ax2). + // if "theta" is the angle between ax1 and ax2, we need an angular velocity + // along u to cover angle erp*theta in one step : + // |angular_velocity| = angle/time = erp*theta / stepsize + // = (erp*fps) * theta + // angular_velocity = |angular_velocity| * (ax1 x ax2) / |ax1 x ax2| + // = (erp*fps) * theta * (ax1 x ax2) / sin(theta) + // ...as ax1 and ax2 are unit length. if theta is smallish, + // theta ~= sin(theta), so + // angular_velocity = (erp*fps) * (ax1 x ax2) + // ax1 x ax2 is in the plane space of ax1, so we project the angular + // velocity to p and q to find the right hand side. + k = info->fps * info->erp; + btVector3 u = ax1A.cross(ax1B); + info->m_constraintError[s3] = k * u.dot(p); + info->m_constraintError[s4] = k * u.dot(q); +#endif + // check angular limits + nrow = 4; // last filled row + int srow; + btScalar limit_err = btScalar(0.0); + int limit = 0; + if(getSolveLimit()) + { + limit_err = m_correction * m_referenceSign; + limit = (limit_err > btScalar(0.0)) ? 1 : 2; + } + // if the hinge has joint limits or motor, add in the extra row + int powered = 0; + if(getEnableAngularMotor()) + { + powered = 1; + } + if(limit || powered) + { + nrow++; + srow = nrow * info->rowskip; + info->m_J1angularAxis[srow+0] = ax1[0]; + info->m_J1angularAxis[srow+1] = ax1[1]; + info->m_J1angularAxis[srow+2] = ax1[2]; + + info->m_J2angularAxis[srow+0] = -ax1[0]; + info->m_J2angularAxis[srow+1] = -ax1[1]; + info->m_J2angularAxis[srow+2] = -ax1[2]; + + btScalar lostop = getLowerLimit(); + btScalar histop = getUpperLimit(); + if(limit && (lostop == histop)) + { // the joint motor is ineffective + powered = 0; + } + info->m_constraintError[srow] = btScalar(0.0f); + btScalar currERP = (m_flags & BT_HINGE_FLAGS_ERP_STOP) ? m_stopERP : info->erp; + if(powered) + { + if(m_flags & BT_HINGE_FLAGS_CFM_NORM) + { + info->cfm[srow] = m_normalCFM; + } + btScalar mot_fact = getMotorFactor(m_hingeAngle, lostop, histop, m_motorTargetVelocity, info->fps * currERP); + info->m_constraintError[srow] += mot_fact * m_motorTargetVelocity * m_referenceSign; + info->m_lowerLimit[srow] = - m_maxMotorImpulse; + info->m_upperLimit[srow] = m_maxMotorImpulse; + } + if(limit) + { + k = info->fps * currERP; + info->m_constraintError[srow] += k * limit_err; + if(m_flags & BT_HINGE_FLAGS_CFM_STOP) + { + info->cfm[srow] = m_stopCFM; + } + if(lostop == histop) + { + // limited low and high simultaneously + info->m_lowerLimit[srow] = -SIMD_INFINITY; + info->m_upperLimit[srow] = SIMD_INFINITY; + } + else if(limit == 1) + { // low limit + info->m_lowerLimit[srow] = 0; + info->m_upperLimit[srow] = SIMD_INFINITY; + } + else + { // high limit + info->m_lowerLimit[srow] = -SIMD_INFINITY; + info->m_upperLimit[srow] = 0; + } + // bounce (we'll use slider parameter abs(1.0 - m_dampingLimAng) for that) + btScalar bounce = m_relaxationFactor; + if(bounce > btScalar(0.0)) + { + btScalar vel = angVelA.dot(ax1); + vel -= angVelB.dot(ax1); + // only apply bounce if the velocity is incoming, and if the + // resulting c[] exceeds what we already have. + if(limit == 1) + { // low limit + if(vel < 0) + { + btScalar newc = -bounce * vel; + if(newc > info->m_constraintError[srow]) + { + info->m_constraintError[srow] = newc; + } + } + } + else + { // high limit - all those computations are reversed + if(vel > 0) + { + btScalar newc = -bounce * vel; + if(newc < info->m_constraintError[srow]) + { + info->m_constraintError[srow] = newc; + } + } + } + } + info->m_constraintError[srow] *= m_biasFactor; + } // if(limit) + } // if angular limit or powered +} + + +///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). +///If no axis is provided, it uses the default axis for this constraint. +void btHingeConstraint::setParam(int num, btScalar value, int axis) +{ + if((axis == -1) || (axis == 5)) + { + switch(num) + { + case BT_CONSTRAINT_STOP_ERP : + m_stopERP = value; + m_flags |= BT_HINGE_FLAGS_ERP_STOP; + break; + case BT_CONSTRAINT_STOP_CFM : + m_stopCFM = value; + m_flags |= BT_HINGE_FLAGS_CFM_STOP; + break; + case BT_CONSTRAINT_CFM : + m_normalCFM = value; + m_flags |= BT_HINGE_FLAGS_CFM_NORM; + break; + default : + btAssertConstrParams(0); + } + } + else + { + btAssertConstrParams(0); + } +} + +///return the local value of parameter +btScalar btHingeConstraint::getParam(int num, int axis) const +{ + btScalar retVal = 0; + if((axis == -1) || (axis == 5)) + { + switch(num) + { + case BT_CONSTRAINT_STOP_ERP : + btAssertConstrParams(m_flags & BT_HINGE_FLAGS_ERP_STOP); + retVal = m_stopERP; + break; + case BT_CONSTRAINT_STOP_CFM : + btAssertConstrParams(m_flags & BT_HINGE_FLAGS_CFM_STOP); + retVal = m_stopCFM; + break; + case BT_CONSTRAINT_CFM : + btAssertConstrParams(m_flags & BT_HINGE_FLAGS_CFM_NORM); + retVal = m_normalCFM; + break; + default : + btAssertConstrParams(0); + } + } + else + { + btAssertConstrParams(0); + } + return retVal; +} + + diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btHingeConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btHingeConstraint.h new file mode 100644 index 00000000000..a65f3638ed5 --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btHingeConstraint.h @@ -0,0 +1,332 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +/* Hinge Constraint by Dirk Gregorius. Limits added by Marcus Hennix at Starbreeze Studios */ + +#ifndef HINGECONSTRAINT_H +#define HINGECONSTRAINT_H + +#include "LinearMath/btVector3.h" +#include "btJacobianEntry.h" +#include "btTypedConstraint.h" + +class btRigidBody; + +#ifdef BT_USE_DOUBLE_PRECISION +#define btHingeConstraintData btHingeConstraintDoubleData +#define btHingeConstraintDataName "btHingeConstraintDoubleData" +#else +#define btHingeConstraintData btHingeConstraintFloatData +#define btHingeConstraintDataName "btHingeConstraintFloatData" +#endif //BT_USE_DOUBLE_PRECISION + + +enum btHingeFlags +{ + BT_HINGE_FLAGS_CFM_STOP = 1, + BT_HINGE_FLAGS_ERP_STOP = 2, + BT_HINGE_FLAGS_CFM_NORM = 4 +}; + + +/// hinge constraint between two rigidbodies each with a pivotpoint that descibes the axis location in local space +/// axis defines the orientation of the hinge axis +ATTRIBUTE_ALIGNED16(class) btHingeConstraint : public btTypedConstraint +{ +#ifdef IN_PARALLELL_SOLVER +public: +#endif + btJacobianEntry m_jac[3]; //3 orthogonal linear constraints + btJacobianEntry m_jacAng[3]; //2 orthogonal angular constraints+ 1 for limit/motor + + btTransform m_rbAFrame; // constraint axii. Assumes z is hinge axis. + btTransform m_rbBFrame; + + btScalar m_motorTargetVelocity; + btScalar m_maxMotorImpulse; + + btScalar m_limitSoftness; + btScalar m_biasFactor; + btScalar m_relaxationFactor; + + btScalar m_lowerLimit; + btScalar m_upperLimit; + + btScalar m_kHinge; + + btScalar m_limitSign; + btScalar m_correction; + + btScalar m_accLimitImpulse; + btScalar m_hingeAngle; + btScalar m_referenceSign; + + bool m_angularOnly; + bool m_enableAngularMotor; + bool m_solveLimit; + bool m_useSolveConstraintObsolete; + bool m_useOffsetForConstraintFrame; + bool m_useReferenceFrameA; + + btScalar m_accMotorImpulse; + + int m_flags; + btScalar m_normalCFM; + btScalar m_stopCFM; + btScalar m_stopERP; + + +public: + + btHingeConstraint(btRigidBody& rbA,btRigidBody& rbB, const btVector3& pivotInA,const btVector3& pivotInB, btVector3& axisInA,btVector3& axisInB, bool useReferenceFrameA = false); + + btHingeConstraint(btRigidBody& rbA,const btVector3& pivotInA,btVector3& axisInA, bool useReferenceFrameA = false); + + btHingeConstraint(btRigidBody& rbA,btRigidBody& rbB, const btTransform& rbAFrame, const btTransform& rbBFrame, bool useReferenceFrameA = false); + + btHingeConstraint(btRigidBody& rbA,const btTransform& rbAFrame, bool useReferenceFrameA = false); + + + virtual void buildJacobian(); + + virtual void getInfo1 (btConstraintInfo1* info); + + void getInfo1NonVirtual(btConstraintInfo1* info); + + virtual void getInfo2 (btConstraintInfo2* info); + + void getInfo2NonVirtual(btConstraintInfo2* info,const btTransform& transA,const btTransform& transB,const btVector3& angVelA,const btVector3& angVelB); + + void getInfo2Internal(btConstraintInfo2* info,const btTransform& transA,const btTransform& transB,const btVector3& angVelA,const btVector3& angVelB); + void getInfo2InternalUsingFrameOffset(btConstraintInfo2* info,const btTransform& transA,const btTransform& transB,const btVector3& angVelA,const btVector3& angVelB); + + + void updateRHS(btScalar timeStep); + + const btRigidBody& getRigidBodyA() const + { + return m_rbA; + } + const btRigidBody& getRigidBodyB() const + { + return m_rbB; + } + + btRigidBody& getRigidBodyA() + { + return m_rbA; + } + + btRigidBody& getRigidBodyB() + { + return m_rbB; + } + + void setAngularOnly(bool angularOnly) + { + m_angularOnly = angularOnly; + } + + void enableAngularMotor(bool enableMotor,btScalar targetVelocity,btScalar maxMotorImpulse) + { + m_enableAngularMotor = enableMotor; + m_motorTargetVelocity = targetVelocity; + m_maxMotorImpulse = maxMotorImpulse; + } + + // extra motor API, including ability to set a target rotation (as opposed to angular velocity) + // note: setMotorTarget sets angular velocity under the hood, so you must call it every tick to + // maintain a given angular target. + void enableMotor(bool enableMotor) { m_enableAngularMotor = enableMotor; } + void setMaxMotorImpulse(btScalar maxMotorImpulse) { m_maxMotorImpulse = maxMotorImpulse; } + void setMotorTarget(const btQuaternion& qAinB, btScalar dt); // qAinB is rotation of body A wrt body B. + void setMotorTarget(btScalar targetAngle, btScalar dt); + + + void setLimit(btScalar low,btScalar high,btScalar _softness = 0.9f, btScalar _biasFactor = 0.3f, btScalar _relaxationFactor = 1.0f) + { + m_lowerLimit = btNormalizeAngle(low); + m_upperLimit = btNormalizeAngle(high); + + m_limitSoftness = _softness; + m_biasFactor = _biasFactor; + m_relaxationFactor = _relaxationFactor; + + } + + void setAxis(btVector3& axisInA) + { + btVector3 rbAxisA1, rbAxisA2; + btPlaneSpace1(axisInA, rbAxisA1, rbAxisA2); + btVector3 pivotInA = m_rbAFrame.getOrigin(); +// m_rbAFrame.getOrigin() = pivotInA; + m_rbAFrame.getBasis().setValue( rbAxisA1.getX(),rbAxisA2.getX(),axisInA.getX(), + rbAxisA1.getY(),rbAxisA2.getY(),axisInA.getY(), + rbAxisA1.getZ(),rbAxisA2.getZ(),axisInA.getZ() ); + + btVector3 axisInB = m_rbA.getCenterOfMassTransform().getBasis() * axisInA; + + btQuaternion rotationArc = shortestArcQuat(axisInA,axisInB); + btVector3 rbAxisB1 = quatRotate(rotationArc,rbAxisA1); + btVector3 rbAxisB2 = axisInB.cross(rbAxisB1); + + + m_rbBFrame.getOrigin() = m_rbA.getCenterOfMassTransform()(pivotInA); + m_rbBFrame.getBasis().setValue( rbAxisB1.getX(),rbAxisB2.getX(),axisInB.getX(), + rbAxisB1.getY(),rbAxisB2.getY(),axisInB.getY(), + rbAxisB1.getZ(),rbAxisB2.getZ(),axisInB.getZ() ); + } + + btScalar getLowerLimit() const + { + return m_lowerLimit; + } + + btScalar getUpperLimit() const + { + return m_upperLimit; + } + + + btScalar getHingeAngle(); + + btScalar getHingeAngle(const btTransform& transA,const btTransform& transB); + + void testLimit(const btTransform& transA,const btTransform& transB); + + + const btTransform& getAFrame() const { return m_rbAFrame; }; + const btTransform& getBFrame() const { return m_rbBFrame; }; + + btTransform& getAFrame() { return m_rbAFrame; }; + btTransform& getBFrame() { return m_rbBFrame; }; + + inline int getSolveLimit() + { + return m_solveLimit; + } + + inline btScalar getLimitSign() + { + return m_limitSign; + } + + inline bool getAngularOnly() + { + return m_angularOnly; + } + inline bool getEnableAngularMotor() + { + return m_enableAngularMotor; + } + inline btScalar getMotorTargetVelosity() + { + return m_motorTargetVelocity; + } + inline btScalar getMaxMotorImpulse() + { + return m_maxMotorImpulse; + } + // access for UseFrameOffset + bool getUseFrameOffset() { return m_useOffsetForConstraintFrame; } + void setUseFrameOffset(bool frameOffsetOnOff) { m_useOffsetForConstraintFrame = frameOffsetOnOff; } + + + ///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). + ///If no axis is provided, it uses the default axis for this constraint. + virtual void setParam(int num, btScalar value, int axis = -1); + ///return the local value of parameter + virtual btScalar getParam(int num, int axis = -1) const; + + virtual int calculateSerializeBufferSize() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; + + +}; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btHingeConstraintDoubleData +{ + btTypedConstraintData m_typeConstraintData; + btTransformDoubleData m_rbAFrame; // constraint axii. Assumes z is hinge axis. + btTransformDoubleData m_rbBFrame; + int m_useReferenceFrameA; + int m_angularOnly; + int m_enableAngularMotor; + float m_motorTargetVelocity; + float m_maxMotorImpulse; + + float m_lowerLimit; + float m_upperLimit; + float m_limitSoftness; + float m_biasFactor; + float m_relaxationFactor; + +}; +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btHingeConstraintFloatData +{ + btTypedConstraintData m_typeConstraintData; + btTransformFloatData m_rbAFrame; // constraint axii. Assumes z is hinge axis. + btTransformFloatData m_rbBFrame; + int m_useReferenceFrameA; + int m_angularOnly; + + int m_enableAngularMotor; + float m_motorTargetVelocity; + float m_maxMotorImpulse; + + float m_lowerLimit; + float m_upperLimit; + float m_limitSoftness; + float m_biasFactor; + float m_relaxationFactor; + +}; + + + +SIMD_FORCE_INLINE int btHingeConstraint::calculateSerializeBufferSize() const +{ + return sizeof(btHingeConstraintData); +} + + ///fills the dataBuffer and returns the struct name (and 0 on failure) +SIMD_FORCE_INLINE const char* btHingeConstraint::serialize(void* dataBuffer, btSerializer* serializer) const +{ + btHingeConstraintData* hingeData = (btHingeConstraintData*)dataBuffer; + btTypedConstraint::serialize(&hingeData->m_typeConstraintData,serializer); + + m_rbAFrame.serialize(hingeData->m_rbAFrame); + m_rbBFrame.serialize(hingeData->m_rbBFrame); + + hingeData->m_angularOnly = m_angularOnly; + hingeData->m_enableAngularMotor = m_enableAngularMotor; + hingeData->m_maxMotorImpulse = float(m_maxMotorImpulse); + hingeData->m_motorTargetVelocity = float(m_motorTargetVelocity); + hingeData->m_useReferenceFrameA = m_useReferenceFrameA; + + hingeData->m_lowerLimit = float(m_lowerLimit); + hingeData->m_upperLimit = float(m_upperLimit); + hingeData->m_limitSoftness = float(m_limitSoftness); + hingeData->m_biasFactor = float(m_biasFactor); + hingeData->m_relaxationFactor = float(m_relaxationFactor); + + return btHingeConstraintDataName; +} + +#endif //HINGECONSTRAINT_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btJacobianEntry.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btJacobianEntry.h new file mode 100644 index 00000000000..22a8af66b8e --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btJacobianEntry.h @@ -0,0 +1,156 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef JACOBIAN_ENTRY_H +#define JACOBIAN_ENTRY_H + +#include "LinearMath/btVector3.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" + + +//notes: +// Another memory optimization would be to store m_1MinvJt in the remaining 3 w components +// which makes the btJacobianEntry memory layout 16 bytes +// if you only are interested in angular part, just feed massInvA and massInvB zero + +/// Jacobian entry is an abstraction that allows to describe constraints +/// it can be used in combination with a constraint solver +/// Can be used to relate the effect of an impulse to the constraint error +ATTRIBUTE_ALIGNED16(class) btJacobianEntry +{ +public: + btJacobianEntry() {}; + //constraint between two different rigidbodies + btJacobianEntry( + const btMatrix3x3& world2A, + const btMatrix3x3& world2B, + const btVector3& rel_pos1,const btVector3& rel_pos2, + const btVector3& jointAxis, + const btVector3& inertiaInvA, + const btScalar massInvA, + const btVector3& inertiaInvB, + const btScalar massInvB) + :m_linearJointAxis(jointAxis) + { + m_aJ = world2A*(rel_pos1.cross(m_linearJointAxis)); + m_bJ = world2B*(rel_pos2.cross(-m_linearJointAxis)); + m_0MinvJt = inertiaInvA * m_aJ; + m_1MinvJt = inertiaInvB * m_bJ; + m_Adiag = massInvA + m_0MinvJt.dot(m_aJ) + massInvB + m_1MinvJt.dot(m_bJ); + + btAssert(m_Adiag > btScalar(0.0)); + } + + //angular constraint between two different rigidbodies + btJacobianEntry(const btVector3& jointAxis, + const btMatrix3x3& world2A, + const btMatrix3x3& world2B, + const btVector3& inertiaInvA, + const btVector3& inertiaInvB) + :m_linearJointAxis(btVector3(btScalar(0.),btScalar(0.),btScalar(0.))) + { + m_aJ= world2A*jointAxis; + m_bJ = world2B*-jointAxis; + m_0MinvJt = inertiaInvA * m_aJ; + m_1MinvJt = inertiaInvB * m_bJ; + m_Adiag = m_0MinvJt.dot(m_aJ) + m_1MinvJt.dot(m_bJ); + + btAssert(m_Adiag > btScalar(0.0)); + } + + //angular constraint between two different rigidbodies + btJacobianEntry(const btVector3& axisInA, + const btVector3& axisInB, + const btVector3& inertiaInvA, + const btVector3& inertiaInvB) + : m_linearJointAxis(btVector3(btScalar(0.),btScalar(0.),btScalar(0.))) + , m_aJ(axisInA) + , m_bJ(-axisInB) + { + m_0MinvJt = inertiaInvA * m_aJ; + m_1MinvJt = inertiaInvB * m_bJ; + m_Adiag = m_0MinvJt.dot(m_aJ) + m_1MinvJt.dot(m_bJ); + + btAssert(m_Adiag > btScalar(0.0)); + } + + //constraint on one rigidbody + btJacobianEntry( + const btMatrix3x3& world2A, + const btVector3& rel_pos1,const btVector3& rel_pos2, + const btVector3& jointAxis, + const btVector3& inertiaInvA, + const btScalar massInvA) + :m_linearJointAxis(jointAxis) + { + m_aJ= world2A*(rel_pos1.cross(jointAxis)); + m_bJ = world2A*(rel_pos2.cross(-jointAxis)); + m_0MinvJt = inertiaInvA * m_aJ; + m_1MinvJt = btVector3(btScalar(0.),btScalar(0.),btScalar(0.)); + m_Adiag = massInvA + m_0MinvJt.dot(m_aJ); + + btAssert(m_Adiag > btScalar(0.0)); + } + + btScalar getDiagonal() const { return m_Adiag; } + + // for two constraints on the same rigidbody (for example vehicle friction) + btScalar getNonDiagonal(const btJacobianEntry& jacB, const btScalar massInvA) const + { + const btJacobianEntry& jacA = *this; + btScalar lin = massInvA * jacA.m_linearJointAxis.dot(jacB.m_linearJointAxis); + btScalar ang = jacA.m_0MinvJt.dot(jacB.m_aJ); + return lin + ang; + } + + + + // for two constraints on sharing two same rigidbodies (for example two contact points between two rigidbodies) + btScalar getNonDiagonal(const btJacobianEntry& jacB,const btScalar massInvA,const btScalar massInvB) const + { + const btJacobianEntry& jacA = *this; + btVector3 lin = jacA.m_linearJointAxis * jacB.m_linearJointAxis; + btVector3 ang0 = jacA.m_0MinvJt * jacB.m_aJ; + btVector3 ang1 = jacA.m_1MinvJt * jacB.m_bJ; + btVector3 lin0 = massInvA * lin ; + btVector3 lin1 = massInvB * lin; + btVector3 sum = ang0+ang1+lin0+lin1; + return sum[0]+sum[1]+sum[2]; + } + + btScalar getRelativeVelocity(const btVector3& linvelA,const btVector3& angvelA,const btVector3& linvelB,const btVector3& angvelB) + { + btVector3 linrel = linvelA - linvelB; + btVector3 angvela = angvelA * m_aJ; + btVector3 angvelb = angvelB * m_bJ; + linrel *= m_linearJointAxis; + angvela += angvelb; + angvela += linrel; + btScalar rel_vel2 = angvela[0]+angvela[1]+angvela[2]; + return rel_vel2 + SIMD_EPSILON; + } +//private: + + btVector3 m_linearJointAxis; + btVector3 m_aJ; + btVector3 m_bJ; + btVector3 m_0MinvJt; + btVector3 m_1MinvJt; + //Optimization: can be stored in the w/last component of one of the vectors + btScalar m_Adiag; + +}; + +#endif //JACOBIAN_ENTRY_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp new file mode 100644 index 00000000000..50ad71ab505 --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp @@ -0,0 +1,229 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btPoint2PointConstraint.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include + + + + + +btPoint2PointConstraint::btPoint2PointConstraint(btRigidBody& rbA,btRigidBody& rbB, const btVector3& pivotInA,const btVector3& pivotInB) +:btTypedConstraint(POINT2POINT_CONSTRAINT_TYPE,rbA,rbB),m_pivotInA(pivotInA),m_pivotInB(pivotInB), +m_flags(0), +m_useSolveConstraintObsolete(false) +{ + +} + + +btPoint2PointConstraint::btPoint2PointConstraint(btRigidBody& rbA,const btVector3& pivotInA) +:btTypedConstraint(POINT2POINT_CONSTRAINT_TYPE,rbA),m_pivotInA(pivotInA),m_pivotInB(rbA.getCenterOfMassTransform()(pivotInA)), +m_flags(0), +m_useSolveConstraintObsolete(false) +{ + +} + +void btPoint2PointConstraint::buildJacobian() +{ + + ///we need it for both methods + { + m_appliedImpulse = btScalar(0.); + + btVector3 normal(0,0,0); + + for (int i=0;i<3;i++) + { + normal[i] = 1; + new (&m_jac[i]) btJacobianEntry( + m_rbA.getCenterOfMassTransform().getBasis().transpose(), + m_rbB.getCenterOfMassTransform().getBasis().transpose(), + m_rbA.getCenterOfMassTransform()*m_pivotInA - m_rbA.getCenterOfMassPosition(), + m_rbB.getCenterOfMassTransform()*m_pivotInB - m_rbB.getCenterOfMassPosition(), + normal, + m_rbA.getInvInertiaDiagLocal(), + m_rbA.getInvMass(), + m_rbB.getInvInertiaDiagLocal(), + m_rbB.getInvMass()); + normal[i] = 0; + } + } + + +} + +void btPoint2PointConstraint::getInfo1 (btConstraintInfo1* info) +{ + getInfo1NonVirtual(info); +} + +void btPoint2PointConstraint::getInfo1NonVirtual (btConstraintInfo1* info) +{ + if (m_useSolveConstraintObsolete) + { + info->m_numConstraintRows = 0; + info->nub = 0; + } else + { + info->m_numConstraintRows = 3; + info->nub = 3; + } +} + + + + +void btPoint2PointConstraint::getInfo2 (btConstraintInfo2* info) +{ + getInfo2NonVirtual(info, m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); +} + +void btPoint2PointConstraint::getInfo2NonVirtual (btConstraintInfo2* info, const btTransform& body0_trans, const btTransform& body1_trans) +{ + btAssert(!m_useSolveConstraintObsolete); + + //retrieve matrices + + // anchor points in global coordinates with respect to body PORs. + + // set jacobian + info->m_J1linearAxis[0] = 1; + info->m_J1linearAxis[info->rowskip+1] = 1; + info->m_J1linearAxis[2*info->rowskip+2] = 1; + + btVector3 a1 = body0_trans.getBasis()*getPivotInA(); + { + btVector3* angular0 = (btVector3*)(info->m_J1angularAxis); + btVector3* angular1 = (btVector3*)(info->m_J1angularAxis+info->rowskip); + btVector3* angular2 = (btVector3*)(info->m_J1angularAxis+2*info->rowskip); + btVector3 a1neg = -a1; + a1neg.getSkewSymmetricMatrix(angular0,angular1,angular2); + } + + /*info->m_J2linearAxis[0] = -1; + info->m_J2linearAxis[s+1] = -1; + info->m_J2linearAxis[2*s+2] = -1; + */ + + btVector3 a2 = body1_trans.getBasis()*getPivotInB(); + + { + btVector3 a2n = -a2; + btVector3* angular0 = (btVector3*)(info->m_J2angularAxis); + btVector3* angular1 = (btVector3*)(info->m_J2angularAxis+info->rowskip); + btVector3* angular2 = (btVector3*)(info->m_J2angularAxis+2*info->rowskip); + a2.getSkewSymmetricMatrix(angular0,angular1,angular2); + } + + + + // set right hand side + btScalar currERP = (m_flags & BT_P2P_FLAGS_ERP) ? m_erp : info->erp; + btScalar k = info->fps * currERP; + int j; + for (j=0; j<3; j++) + { + info->m_constraintError[j*info->rowskip] = k * (a2[j] + body1_trans.getOrigin()[j] - a1[j] - body0_trans.getOrigin()[j]); + //printf("info->m_constraintError[%d]=%f\n",j,info->m_constraintError[j]); + } + if(m_flags & BT_P2P_FLAGS_CFM) + { + for (j=0; j<3; j++) + { + info->cfm[j*info->rowskip] = m_cfm; + } + } + + btScalar impulseClamp = m_setting.m_impulseClamp;// + for (j=0; j<3; j++) + { + if (m_setting.m_impulseClamp > 0) + { + info->m_lowerLimit[j*info->rowskip] = -impulseClamp; + info->m_upperLimit[j*info->rowskip] = impulseClamp; + } + } + +} + + + +void btPoint2PointConstraint::updateRHS(btScalar timeStep) +{ + (void)timeStep; + +} + +///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). +///If no axis is provided, it uses the default axis for this constraint. +void btPoint2PointConstraint::setParam(int num, btScalar value, int axis) +{ + if(axis != -1) + { + btAssertConstrParams(0); + } + else + { + switch(num) + { + case BT_CONSTRAINT_ERP : + case BT_CONSTRAINT_STOP_ERP : + m_erp = value; + m_flags |= BT_P2P_FLAGS_ERP; + break; + case BT_CONSTRAINT_CFM : + case BT_CONSTRAINT_STOP_CFM : + m_cfm = value; + m_flags |= BT_P2P_FLAGS_CFM; + break; + default: + btAssertConstrParams(0); + } + } +} + +///return the local value of parameter +btScalar btPoint2PointConstraint::getParam(int num, int axis) const +{ + btScalar retVal(SIMD_INFINITY); + if(axis != -1) + { + btAssertConstrParams(0); + } + else + { + switch(num) + { + case BT_CONSTRAINT_ERP : + case BT_CONSTRAINT_STOP_ERP : + btAssertConstrParams(m_flags & BT_P2P_FLAGS_ERP); + retVal = m_erp; + break; + case BT_CONSTRAINT_CFM : + case BT_CONSTRAINT_STOP_CFM : + btAssertConstrParams(m_flags & BT_P2P_FLAGS_CFM); + retVal = m_cfm; + break; + default: + btAssertConstrParams(0); + } + } + return retVal; +} + diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h new file mode 100644 index 00000000000..b589ee68254 --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h @@ -0,0 +1,161 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef POINT2POINTCONSTRAINT_H +#define POINT2POINTCONSTRAINT_H + +#include "LinearMath/btVector3.h" +#include "btJacobianEntry.h" +#include "btTypedConstraint.h" + +class btRigidBody; + + +#ifdef BT_USE_DOUBLE_PRECISION +#define btPoint2PointConstraintData btPoint2PointConstraintDoubleData +#define btPoint2PointConstraintDataName "btPoint2PointConstraintDoubleData" +#else +#define btPoint2PointConstraintData btPoint2PointConstraintFloatData +#define btPoint2PointConstraintDataName "btPoint2PointConstraintFloatData" +#endif //BT_USE_DOUBLE_PRECISION + +struct btConstraintSetting +{ + btConstraintSetting() : + m_tau(btScalar(0.3)), + m_damping(btScalar(1.)), + m_impulseClamp(btScalar(0.)) + { + } + btScalar m_tau; + btScalar m_damping; + btScalar m_impulseClamp; +}; + +enum btPoint2PointFlags +{ + BT_P2P_FLAGS_ERP = 1, + BT_P2P_FLAGS_CFM = 2 +}; + +/// point to point constraint between two rigidbodies each with a pivotpoint that descibes the 'ballsocket' location in local space +ATTRIBUTE_ALIGNED16(class) btPoint2PointConstraint : public btTypedConstraint +{ +#ifdef IN_PARALLELL_SOLVER +public: +#endif + btJacobianEntry m_jac[3]; //3 orthogonal linear constraints + + btVector3 m_pivotInA; + btVector3 m_pivotInB; + + int m_flags; + btScalar m_erp; + btScalar m_cfm; + +public: + + ///for backwards compatibility during the transition to 'getInfo/getInfo2' + bool m_useSolveConstraintObsolete; + + btConstraintSetting m_setting; + + btPoint2PointConstraint(btRigidBody& rbA,btRigidBody& rbB, const btVector3& pivotInA,const btVector3& pivotInB); + + btPoint2PointConstraint(btRigidBody& rbA,const btVector3& pivotInA); + + + virtual void buildJacobian(); + + virtual void getInfo1 (btConstraintInfo1* info); + + void getInfo1NonVirtual (btConstraintInfo1* info); + + virtual void getInfo2 (btConstraintInfo2* info); + + void getInfo2NonVirtual (btConstraintInfo2* info, const btTransform& body0_trans, const btTransform& body1_trans); + + void updateRHS(btScalar timeStep); + + void setPivotA(const btVector3& pivotA) + { + m_pivotInA = pivotA; + } + + void setPivotB(const btVector3& pivotB) + { + m_pivotInB = pivotB; + } + + const btVector3& getPivotInA() const + { + return m_pivotInA; + } + + const btVector3& getPivotInB() const + { + return m_pivotInB; + } + + ///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). + ///If no axis is provided, it uses the default axis for this constraint. + virtual void setParam(int num, btScalar value, int axis = -1); + ///return the local value of parameter + virtual btScalar getParam(int num, int axis = -1) const; + + virtual int calculateSerializeBufferSize() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; + + +}; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btPoint2PointConstraintFloatData +{ + btTypedConstraintData m_typeConstraintData; + btVector3FloatData m_pivotInA; + btVector3FloatData m_pivotInB; +}; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btPoint2PointConstraintDoubleData +{ + btTypedConstraintData m_typeConstraintData; + btVector3DoubleData m_pivotInA; + btVector3DoubleData m_pivotInB; +}; + + +SIMD_FORCE_INLINE int btPoint2PointConstraint::calculateSerializeBufferSize() const +{ + return sizeof(btPoint2PointConstraintData); + +} + + ///fills the dataBuffer and returns the struct name (and 0 on failure) +SIMD_FORCE_INLINE const char* btPoint2PointConstraint::serialize(void* dataBuffer, btSerializer* serializer) const +{ + btPoint2PointConstraintData* p2pData = (btPoint2PointConstraintData*)dataBuffer; + + btTypedConstraint::serialize(&p2pData->m_typeConstraintData,serializer); + m_pivotInA.serialize(p2pData->m_pivotInA); + m_pivotInB.serialize(p2pData->m_pivotInB); + + return btPoint2PointConstraintDataName; +} + +#endif //POINT2POINTCONSTRAINT_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp new file mode 100644 index 00000000000..4e1048823c0 --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp @@ -0,0 +1,1174 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +//#define COMPUTE_IMPULSE_DENOM 1 +//It is not necessary (redundant) to refresh contact manifolds, this refresh has been moved to the collision algorithms. + +#include "btSequentialImpulseConstraintSolver.h" +#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include "btContactConstraint.h" +#include "btSolve2LinearConstraint.h" +#include "btContactSolverInfo.h" +#include "LinearMath/btIDebugDraw.h" +#include "btJacobianEntry.h" +#include "LinearMath/btMinMax.h" +#include "BulletDynamics/ConstraintSolver/btTypedConstraint.h" +#include +#include "LinearMath/btStackAlloc.h" +#include "LinearMath/btQuickprof.h" +#include "btSolverBody.h" +#include "btSolverConstraint.h" +#include "LinearMath/btAlignedObjectArray.h" +#include //for memset + +int gNumSplitImpulseRecoveries = 0; + +btSequentialImpulseConstraintSolver::btSequentialImpulseConstraintSolver() +:m_btSeed2(0) +{ + +} + +btSequentialImpulseConstraintSolver::~btSequentialImpulseConstraintSolver() +{ +} + +#ifdef USE_SIMD +#include +#define vec_splat(x, e) _mm_shuffle_ps(x, x, _MM_SHUFFLE(e,e,e,e)) +static inline __m128 _vmathVfDot3( __m128 vec0, __m128 vec1 ) +{ + __m128 result = _mm_mul_ps( vec0, vec1); + return _mm_add_ps( vec_splat( result, 0 ), _mm_add_ps( vec_splat( result, 1 ), vec_splat( result, 2 ) ) ); +} +#endif//USE_SIMD + +// Project Gauss Seidel or the equivalent Sequential Impulse +void btSequentialImpulseConstraintSolver::resolveSingleConstraintRowGenericSIMD(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& c) +{ +#ifdef USE_SIMD + __m128 cpAppliedImp = _mm_set1_ps(c.m_appliedImpulse); + __m128 lowerLimit1 = _mm_set1_ps(c.m_lowerLimit); + __m128 upperLimit1 = _mm_set1_ps(c.m_upperLimit); + __m128 deltaImpulse = _mm_sub_ps(_mm_set1_ps(c.m_rhs), _mm_mul_ps(_mm_set1_ps(c.m_appliedImpulse),_mm_set1_ps(c.m_cfm))); + __m128 deltaVel1Dotn = _mm_add_ps(_vmathVfDot3(c.m_contactNormal.mVec128,body1.internalGetDeltaLinearVelocity().mVec128), _vmathVfDot3(c.m_relpos1CrossNormal.mVec128,body1.internalGetDeltaAngularVelocity().mVec128)); + __m128 deltaVel2Dotn = _mm_sub_ps(_vmathVfDot3(c.m_relpos2CrossNormal.mVec128,body2.internalGetDeltaAngularVelocity().mVec128),_vmathVfDot3((c.m_contactNormal).mVec128,body2.internalGetDeltaLinearVelocity().mVec128)); + deltaImpulse = _mm_sub_ps(deltaImpulse,_mm_mul_ps(deltaVel1Dotn,_mm_set1_ps(c.m_jacDiagABInv))); + deltaImpulse = _mm_sub_ps(deltaImpulse,_mm_mul_ps(deltaVel2Dotn,_mm_set1_ps(c.m_jacDiagABInv))); + btSimdScalar sum = _mm_add_ps(cpAppliedImp,deltaImpulse); + btSimdScalar resultLowerLess,resultUpperLess; + resultLowerLess = _mm_cmplt_ps(sum,lowerLimit1); + resultUpperLess = _mm_cmplt_ps(sum,upperLimit1); + __m128 lowMinApplied = _mm_sub_ps(lowerLimit1,cpAppliedImp); + deltaImpulse = _mm_or_ps( _mm_and_ps(resultLowerLess, lowMinApplied), _mm_andnot_ps(resultLowerLess, deltaImpulse) ); + c.m_appliedImpulse = _mm_or_ps( _mm_and_ps(resultLowerLess, lowerLimit1), _mm_andnot_ps(resultLowerLess, sum) ); + __m128 upperMinApplied = _mm_sub_ps(upperLimit1,cpAppliedImp); + deltaImpulse = _mm_or_ps( _mm_and_ps(resultUpperLess, deltaImpulse), _mm_andnot_ps(resultUpperLess, upperMinApplied) ); + c.m_appliedImpulse = _mm_or_ps( _mm_and_ps(resultUpperLess, c.m_appliedImpulse), _mm_andnot_ps(resultUpperLess, upperLimit1) ); + __m128 linearComponentA = _mm_mul_ps(c.m_contactNormal.mVec128,body1.internalGetInvMass().mVec128); + __m128 linearComponentB = _mm_mul_ps((c.m_contactNormal).mVec128,body2.internalGetInvMass().mVec128); + __m128 impulseMagnitude = deltaImpulse; + body1.internalGetDeltaLinearVelocity().mVec128 = _mm_add_ps(body1.internalGetDeltaLinearVelocity().mVec128,_mm_mul_ps(linearComponentA,impulseMagnitude)); + body1.internalGetDeltaAngularVelocity().mVec128 = _mm_add_ps(body1.internalGetDeltaAngularVelocity().mVec128 ,_mm_mul_ps(c.m_angularComponentA.mVec128,impulseMagnitude)); + body2.internalGetDeltaLinearVelocity().mVec128 = _mm_sub_ps(body2.internalGetDeltaLinearVelocity().mVec128,_mm_mul_ps(linearComponentB,impulseMagnitude)); + body2.internalGetDeltaAngularVelocity().mVec128 = _mm_add_ps(body2.internalGetDeltaAngularVelocity().mVec128 ,_mm_mul_ps(c.m_angularComponentB.mVec128,impulseMagnitude)); +#else + resolveSingleConstraintRowGeneric(body1,body2,c); +#endif +} + +// Project Gauss Seidel or the equivalent Sequential Impulse + void btSequentialImpulseConstraintSolver::resolveSingleConstraintRowGeneric(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& c) +{ + btScalar deltaImpulse = c.m_rhs-btScalar(c.m_appliedImpulse)*c.m_cfm; + const btScalar deltaVel1Dotn = c.m_contactNormal.dot(body1.internalGetDeltaLinearVelocity()) + c.m_relpos1CrossNormal.dot(body1.internalGetDeltaAngularVelocity()); + const btScalar deltaVel2Dotn = -c.m_contactNormal.dot(body2.internalGetDeltaLinearVelocity()) + c.m_relpos2CrossNormal.dot(body2.internalGetDeltaAngularVelocity()); + +// const btScalar delta_rel_vel = deltaVel1Dotn-deltaVel2Dotn; + deltaImpulse -= deltaVel1Dotn*c.m_jacDiagABInv; + deltaImpulse -= deltaVel2Dotn*c.m_jacDiagABInv; + + const btScalar sum = btScalar(c.m_appliedImpulse) + deltaImpulse; + if (sum < c.m_lowerLimit) + { + deltaImpulse = c.m_lowerLimit-c.m_appliedImpulse; + c.m_appliedImpulse = c.m_lowerLimit; + } + else if (sum > c.m_upperLimit) + { + deltaImpulse = c.m_upperLimit-c.m_appliedImpulse; + c.m_appliedImpulse = c.m_upperLimit; + } + else + { + c.m_appliedImpulse = sum; + } + body1.internalApplyImpulse(c.m_contactNormal*body1.internalGetInvMass(),c.m_angularComponentA,deltaImpulse); + body2.internalApplyImpulse(-c.m_contactNormal*body2.internalGetInvMass(),c.m_angularComponentB,deltaImpulse); +} + + void btSequentialImpulseConstraintSolver::resolveSingleConstraintRowLowerLimitSIMD(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& c) +{ +#ifdef USE_SIMD + __m128 cpAppliedImp = _mm_set1_ps(c.m_appliedImpulse); + __m128 lowerLimit1 = _mm_set1_ps(c.m_lowerLimit); + __m128 upperLimit1 = _mm_set1_ps(c.m_upperLimit); + __m128 deltaImpulse = _mm_sub_ps(_mm_set1_ps(c.m_rhs), _mm_mul_ps(_mm_set1_ps(c.m_appliedImpulse),_mm_set1_ps(c.m_cfm))); + __m128 deltaVel1Dotn = _mm_add_ps(_vmathVfDot3(c.m_contactNormal.mVec128,body1.internalGetDeltaLinearVelocity().mVec128), _vmathVfDot3(c.m_relpos1CrossNormal.mVec128,body1.internalGetDeltaAngularVelocity().mVec128)); + __m128 deltaVel2Dotn = _mm_sub_ps(_vmathVfDot3(c.m_relpos2CrossNormal.mVec128,body2.internalGetDeltaAngularVelocity().mVec128),_vmathVfDot3((c.m_contactNormal).mVec128,body2.internalGetDeltaLinearVelocity().mVec128)); + deltaImpulse = _mm_sub_ps(deltaImpulse,_mm_mul_ps(deltaVel1Dotn,_mm_set1_ps(c.m_jacDiagABInv))); + deltaImpulse = _mm_sub_ps(deltaImpulse,_mm_mul_ps(deltaVel2Dotn,_mm_set1_ps(c.m_jacDiagABInv))); + btSimdScalar sum = _mm_add_ps(cpAppliedImp,deltaImpulse); + btSimdScalar resultLowerLess,resultUpperLess; + resultLowerLess = _mm_cmplt_ps(sum,lowerLimit1); + resultUpperLess = _mm_cmplt_ps(sum,upperLimit1); + __m128 lowMinApplied = _mm_sub_ps(lowerLimit1,cpAppliedImp); + deltaImpulse = _mm_or_ps( _mm_and_ps(resultLowerLess, lowMinApplied), _mm_andnot_ps(resultLowerLess, deltaImpulse) ); + c.m_appliedImpulse = _mm_or_ps( _mm_and_ps(resultLowerLess, lowerLimit1), _mm_andnot_ps(resultLowerLess, sum) ); + __m128 linearComponentA = _mm_mul_ps(c.m_contactNormal.mVec128,body1.internalGetInvMass().mVec128); + __m128 linearComponentB = _mm_mul_ps((c.m_contactNormal).mVec128,body2.internalGetInvMass().mVec128); + __m128 impulseMagnitude = deltaImpulse; + body1.internalGetDeltaLinearVelocity().mVec128 = _mm_add_ps(body1.internalGetDeltaLinearVelocity().mVec128,_mm_mul_ps(linearComponentA,impulseMagnitude)); + body1.internalGetDeltaAngularVelocity().mVec128 = _mm_add_ps(body1.internalGetDeltaAngularVelocity().mVec128 ,_mm_mul_ps(c.m_angularComponentA.mVec128,impulseMagnitude)); + body2.internalGetDeltaLinearVelocity().mVec128 = _mm_sub_ps(body2.internalGetDeltaLinearVelocity().mVec128,_mm_mul_ps(linearComponentB,impulseMagnitude)); + body2.internalGetDeltaAngularVelocity().mVec128 = _mm_add_ps(body2.internalGetDeltaAngularVelocity().mVec128 ,_mm_mul_ps(c.m_angularComponentB.mVec128,impulseMagnitude)); +#else + resolveSingleConstraintRowLowerLimit(body1,body2,c); +#endif +} + +// Project Gauss Seidel or the equivalent Sequential Impulse + void btSequentialImpulseConstraintSolver::resolveSingleConstraintRowLowerLimit(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& c) +{ + btScalar deltaImpulse = c.m_rhs-btScalar(c.m_appliedImpulse)*c.m_cfm; + const btScalar deltaVel1Dotn = c.m_contactNormal.dot(body1.internalGetDeltaLinearVelocity()) + c.m_relpos1CrossNormal.dot(body1.internalGetDeltaAngularVelocity()); + const btScalar deltaVel2Dotn = -c.m_contactNormal.dot(body2.internalGetDeltaLinearVelocity()) + c.m_relpos2CrossNormal.dot(body2.internalGetDeltaAngularVelocity()); + + deltaImpulse -= deltaVel1Dotn*c.m_jacDiagABInv; + deltaImpulse -= deltaVel2Dotn*c.m_jacDiagABInv; + const btScalar sum = btScalar(c.m_appliedImpulse) + deltaImpulse; + if (sum < c.m_lowerLimit) + { + deltaImpulse = c.m_lowerLimit-c.m_appliedImpulse; + c.m_appliedImpulse = c.m_lowerLimit; + } + else + { + c.m_appliedImpulse = sum; + } + body1.internalApplyImpulse(c.m_contactNormal*body1.internalGetInvMass(),c.m_angularComponentA,deltaImpulse); + body2.internalApplyImpulse(-c.m_contactNormal*body2.internalGetInvMass(),c.m_angularComponentB,deltaImpulse); +} + + +void btSequentialImpulseConstraintSolver::resolveSplitPenetrationImpulseCacheFriendly( + btRigidBody& body1, + btRigidBody& body2, + const btSolverConstraint& c) +{ + if (c.m_rhsPenetration) + { + gNumSplitImpulseRecoveries++; + btScalar deltaImpulse = c.m_rhsPenetration-btScalar(c.m_appliedPushImpulse)*c.m_cfm; + const btScalar deltaVel1Dotn = c.m_contactNormal.dot(body1.internalGetPushVelocity()) + c.m_relpos1CrossNormal.dot(body1.internalGetTurnVelocity()); + const btScalar deltaVel2Dotn = -c.m_contactNormal.dot(body2.internalGetPushVelocity()) + c.m_relpos2CrossNormal.dot(body2.internalGetTurnVelocity()); + + deltaImpulse -= deltaVel1Dotn*c.m_jacDiagABInv; + deltaImpulse -= deltaVel2Dotn*c.m_jacDiagABInv; + const btScalar sum = btScalar(c.m_appliedPushImpulse) + deltaImpulse; + if (sum < c.m_lowerLimit) + { + deltaImpulse = c.m_lowerLimit-c.m_appliedPushImpulse; + c.m_appliedPushImpulse = c.m_lowerLimit; + } + else + { + c.m_appliedPushImpulse = sum; + } + body1.internalApplyPushImpulse(c.m_contactNormal*body1.internalGetInvMass(),c.m_angularComponentA,deltaImpulse); + body2.internalApplyPushImpulse(-c.m_contactNormal*body2.internalGetInvMass(),c.m_angularComponentB,deltaImpulse); + } +} + + void btSequentialImpulseConstraintSolver::resolveSplitPenetrationSIMD(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& c) +{ +#ifdef USE_SIMD + if (!c.m_rhsPenetration) + return; + + gNumSplitImpulseRecoveries++; + + __m128 cpAppliedImp = _mm_set1_ps(c.m_appliedPushImpulse); + __m128 lowerLimit1 = _mm_set1_ps(c.m_lowerLimit); + __m128 upperLimit1 = _mm_set1_ps(c.m_upperLimit); + __m128 deltaImpulse = _mm_sub_ps(_mm_set1_ps(c.m_rhsPenetration), _mm_mul_ps(_mm_set1_ps(c.m_appliedPushImpulse),_mm_set1_ps(c.m_cfm))); + __m128 deltaVel1Dotn = _mm_add_ps(_vmathVfDot3(c.m_contactNormal.mVec128,body1.internalGetPushVelocity().mVec128), _vmathVfDot3(c.m_relpos1CrossNormal.mVec128,body1.internalGetTurnVelocity().mVec128)); + __m128 deltaVel2Dotn = _mm_sub_ps(_vmathVfDot3(c.m_relpos2CrossNormal.mVec128,body2.internalGetTurnVelocity().mVec128),_vmathVfDot3((c.m_contactNormal).mVec128,body2.internalGetPushVelocity().mVec128)); + deltaImpulse = _mm_sub_ps(deltaImpulse,_mm_mul_ps(deltaVel1Dotn,_mm_set1_ps(c.m_jacDiagABInv))); + deltaImpulse = _mm_sub_ps(deltaImpulse,_mm_mul_ps(deltaVel2Dotn,_mm_set1_ps(c.m_jacDiagABInv))); + btSimdScalar sum = _mm_add_ps(cpAppliedImp,deltaImpulse); + btSimdScalar resultLowerLess,resultUpperLess; + resultLowerLess = _mm_cmplt_ps(sum,lowerLimit1); + resultUpperLess = _mm_cmplt_ps(sum,upperLimit1); + __m128 lowMinApplied = _mm_sub_ps(lowerLimit1,cpAppliedImp); + deltaImpulse = _mm_or_ps( _mm_and_ps(resultLowerLess, lowMinApplied), _mm_andnot_ps(resultLowerLess, deltaImpulse) ); + c.m_appliedImpulse = _mm_or_ps( _mm_and_ps(resultLowerLess, lowerLimit1), _mm_andnot_ps(resultLowerLess, sum) ); + __m128 linearComponentA = _mm_mul_ps(c.m_contactNormal.mVec128,body1.internalGetInvMass().mVec128); + __m128 linearComponentB = _mm_mul_ps((c.m_contactNormal).mVec128,body2.internalGetInvMass().mVec128); + __m128 impulseMagnitude = deltaImpulse; + body1.internalGetPushVelocity().mVec128 = _mm_add_ps(body1.internalGetPushVelocity().mVec128,_mm_mul_ps(linearComponentA,impulseMagnitude)); + body1.internalGetTurnVelocity().mVec128 = _mm_add_ps(body1.internalGetTurnVelocity().mVec128 ,_mm_mul_ps(c.m_angularComponentA.mVec128,impulseMagnitude)); + body2.internalGetPushVelocity().mVec128 = _mm_sub_ps(body2.internalGetPushVelocity().mVec128,_mm_mul_ps(linearComponentB,impulseMagnitude)); + body2.internalGetTurnVelocity().mVec128 = _mm_add_ps(body2.internalGetTurnVelocity().mVec128 ,_mm_mul_ps(c.m_angularComponentB.mVec128,impulseMagnitude)); +#else + resolveSplitPenetrationImpulseCacheFriendly(body1,body2,c); +#endif +} + + + +unsigned long btSequentialImpulseConstraintSolver::btRand2() +{ + m_btSeed2 = (1664525L*m_btSeed2 + 1013904223L) & 0xffffffff; + return m_btSeed2; +} + + + +//See ODE: adam's all-int straightforward(?) dRandInt (0..n-1) +int btSequentialImpulseConstraintSolver::btRandInt2 (int n) +{ + // seems good; xor-fold and modulus + const unsigned long un = static_cast(n); + unsigned long r = btRand2(); + + // note: probably more aggressive than it needs to be -- might be + // able to get away without one or two of the innermost branches. + if (un <= 0x00010000UL) { + r ^= (r >> 16); + if (un <= 0x00000100UL) { + r ^= (r >> 8); + if (un <= 0x00000010UL) { + r ^= (r >> 4); + if (un <= 0x00000004UL) { + r ^= (r >> 2); + if (un <= 0x00000002UL) { + r ^= (r >> 1); + } + } + } + } + } + + return (int) (r % un); +} + + +#if 0 +void btSequentialImpulseConstraintSolver::initSolverBody(btSolverBody* solverBody, btCollisionObject* collisionObject) +{ + btRigidBody* rb = collisionObject? btRigidBody::upcast(collisionObject) : 0; + + solverBody->internalGetDeltaLinearVelocity().setValue(0.f,0.f,0.f); + solverBody->internalGetDeltaAngularVelocity().setValue(0.f,0.f,0.f); + solverBody->internalGetPushVelocity().setValue(0.f,0.f,0.f); + solverBody->internalGetTurnVelocity().setValue(0.f,0.f,0.f); + + if (rb) + { + solverBody->internalGetInvMass() = btVector3(rb->getInvMass(),rb->getInvMass(),rb->getInvMass())*rb->getLinearFactor(); + solverBody->m_originalBody = rb; + solverBody->m_angularFactor = rb->getAngularFactor(); + } else + { + solverBody->internalGetInvMass().setValue(0,0,0); + solverBody->m_originalBody = 0; + solverBody->m_angularFactor.setValue(1,1,1); + } +} +#endif + + + + + +btScalar btSequentialImpulseConstraintSolver::restitutionCurve(btScalar rel_vel, btScalar restitution) +{ + btScalar rest = restitution * -rel_vel; + return rest; +} + + + +void applyAnisotropicFriction(btCollisionObject* colObj,btVector3& frictionDirection); +void applyAnisotropicFriction(btCollisionObject* colObj,btVector3& frictionDirection) +{ + if (colObj && colObj->hasAnisotropicFriction()) + { + // transform to local coordinates + btVector3 loc_lateral = frictionDirection * colObj->getWorldTransform().getBasis(); + const btVector3& friction_scaling = colObj->getAnisotropicFriction(); + //apply anisotropic friction + loc_lateral *= friction_scaling; + // ... and transform it back to global coordinates + frictionDirection = colObj->getWorldTransform().getBasis() * loc_lateral; + } +} + + +void btSequentialImpulseConstraintSolver::setupFrictionConstraint(btSolverConstraint& solverConstraint, const btVector3& normalAxis,btRigidBody* solverBodyA,btRigidBody* solverBodyB,btManifoldPoint& cp,const btVector3& rel_pos1,const btVector3& rel_pos2,btCollisionObject* colObj0,btCollisionObject* colObj1, btScalar relaxation, btScalar desiredVelocity, btScalar cfmSlip) +{ + + + btRigidBody* body0=btRigidBody::upcast(colObj0); + btRigidBody* body1=btRigidBody::upcast(colObj1); + + solverConstraint.m_contactNormal = normalAxis; + + solverConstraint.m_solverBodyA = body0 ? body0 : &getFixedBody(); + solverConstraint.m_solverBodyB = body1 ? body1 : &getFixedBody(); + + solverConstraint.m_friction = cp.m_combinedFriction; + solverConstraint.m_originalContactPoint = 0; + + solverConstraint.m_appliedImpulse = 0.f; + solverConstraint.m_appliedPushImpulse = 0.f; + + { + btVector3 ftorqueAxis1 = rel_pos1.cross(solverConstraint.m_contactNormal); + solverConstraint.m_relpos1CrossNormal = ftorqueAxis1; + solverConstraint.m_angularComponentA = body0 ? body0->getInvInertiaTensorWorld()*ftorqueAxis1*body0->getAngularFactor() : btVector3(0,0,0); + } + { + btVector3 ftorqueAxis1 = rel_pos2.cross(-solverConstraint.m_contactNormal); + solverConstraint.m_relpos2CrossNormal = ftorqueAxis1; + solverConstraint.m_angularComponentB = body1 ? body1->getInvInertiaTensorWorld()*ftorqueAxis1*body1->getAngularFactor() : btVector3(0,0,0); + } + +#ifdef COMPUTE_IMPULSE_DENOM + btScalar denom0 = rb0->computeImpulseDenominator(pos1,solverConstraint.m_contactNormal); + btScalar denom1 = rb1->computeImpulseDenominator(pos2,solverConstraint.m_contactNormal); +#else + btVector3 vec; + btScalar denom0 = 0.f; + btScalar denom1 = 0.f; + if (body0) + { + vec = ( solverConstraint.m_angularComponentA).cross(rel_pos1); + denom0 = body0->getInvMass() + normalAxis.dot(vec); + } + if (body1) + { + vec = ( -solverConstraint.m_angularComponentB).cross(rel_pos2); + denom1 = body1->getInvMass() + normalAxis.dot(vec); + } + + +#endif //COMPUTE_IMPULSE_DENOM + btScalar denom = relaxation/(denom0+denom1); + solverConstraint.m_jacDiagABInv = denom; + +#ifdef _USE_JACOBIAN + solverConstraint.m_jac = btJacobianEntry ( + rel_pos1,rel_pos2,solverConstraint.m_contactNormal, + body0->getInvInertiaDiagLocal(), + body0->getInvMass(), + body1->getInvInertiaDiagLocal(), + body1->getInvMass()); +#endif //_USE_JACOBIAN + + + { + btScalar rel_vel; + btScalar vel1Dotn = solverConstraint.m_contactNormal.dot(body0?body0->getLinearVelocity():btVector3(0,0,0)) + + solverConstraint.m_relpos1CrossNormal.dot(body0?body0->getAngularVelocity():btVector3(0,0,0)); + btScalar vel2Dotn = -solverConstraint.m_contactNormal.dot(body1?body1->getLinearVelocity():btVector3(0,0,0)) + + solverConstraint.m_relpos2CrossNormal.dot(body1?body1->getAngularVelocity():btVector3(0,0,0)); + + rel_vel = vel1Dotn+vel2Dotn; + +// btScalar positionalError = 0.f; + + btSimdScalar velocityError = desiredVelocity - rel_vel; + btSimdScalar velocityImpulse = velocityError * btSimdScalar(solverConstraint.m_jacDiagABInv); + solverConstraint.m_rhs = velocityImpulse; + solverConstraint.m_cfm = cfmSlip; + solverConstraint.m_lowerLimit = 0; + solverConstraint.m_upperLimit = 1e10f; + } +} + + + +btSolverConstraint& btSequentialImpulseConstraintSolver::addFrictionConstraint(const btVector3& normalAxis,btRigidBody* solverBodyA,btRigidBody* solverBodyB,int frictionIndex,btManifoldPoint& cp,const btVector3& rel_pos1,const btVector3& rel_pos2,btCollisionObject* colObj0,btCollisionObject* colObj1, btScalar relaxation, btScalar desiredVelocity, btScalar cfmSlip) +{ + btSolverConstraint& solverConstraint = m_tmpSolverContactFrictionConstraintPool.expandNonInitializing(); + solverConstraint.m_frictionIndex = frictionIndex; + setupFrictionConstraint(solverConstraint, normalAxis, solverBodyA, solverBodyB, cp, rel_pos1, rel_pos2, + colObj0, colObj1, relaxation, desiredVelocity, cfmSlip); + return solverConstraint; +} + +int btSequentialImpulseConstraintSolver::getOrInitSolverBody(btCollisionObject& body) +{ +#if 0 + int solverBodyIdA = -1; + + if (body.getCompanionId() >= 0) + { + //body has already been converted + solverBodyIdA = body.getCompanionId(); + } else + { + btRigidBody* rb = btRigidBody::upcast(&body); + if (rb && rb->getInvMass()) + { + solverBodyIdA = m_tmpSolverBodyPool.size(); + btSolverBody& solverBody = m_tmpSolverBodyPool.expand(); + initSolverBody(&solverBody,&body); + body.setCompanionId(solverBodyIdA); + } else + { + return 0;//assume first one is a fixed solver body + } + } + return solverBodyIdA; +#endif + return 0; +} +#include + + +void btSequentialImpulseConstraintSolver::setupContactConstraint(btSolverConstraint& solverConstraint, + btCollisionObject* colObj0, btCollisionObject* colObj1, + btManifoldPoint& cp, const btContactSolverInfo& infoGlobal, + btVector3& vel, btScalar& rel_vel, btScalar& relaxation, + btVector3& rel_pos1, btVector3& rel_pos2) +{ + btRigidBody* rb0 = btRigidBody::upcast(colObj0); + btRigidBody* rb1 = btRigidBody::upcast(colObj1); + + const btVector3& pos1 = cp.getPositionWorldOnA(); + const btVector3& pos2 = cp.getPositionWorldOnB(); + +// btVector3 rel_pos1 = pos1 - colObj0->getWorldTransform().getOrigin(); +// btVector3 rel_pos2 = pos2 - colObj1->getWorldTransform().getOrigin(); + rel_pos1 = pos1 - colObj0->getWorldTransform().getOrigin(); + rel_pos2 = pos2 - colObj1->getWorldTransform().getOrigin(); + + relaxation = 1.f; + + btVector3 torqueAxis0 = rel_pos1.cross(cp.m_normalWorldOnB); + solverConstraint.m_angularComponentA = rb0 ? rb0->getInvInertiaTensorWorld()*torqueAxis0*rb0->getAngularFactor() : btVector3(0,0,0); + btVector3 torqueAxis1 = rel_pos2.cross(cp.m_normalWorldOnB); + solverConstraint.m_angularComponentB = rb1 ? rb1->getInvInertiaTensorWorld()*-torqueAxis1*rb1->getAngularFactor() : btVector3(0,0,0); + + { +#ifdef COMPUTE_IMPULSE_DENOM + btScalar denom0 = rb0->computeImpulseDenominator(pos1,cp.m_normalWorldOnB); + btScalar denom1 = rb1->computeImpulseDenominator(pos2,cp.m_normalWorldOnB); +#else + btVector3 vec; + btScalar denom0 = 0.f; + btScalar denom1 = 0.f; + if (rb0) + { + vec = ( solverConstraint.m_angularComponentA).cross(rel_pos1); + denom0 = rb0->getInvMass() + cp.m_normalWorldOnB.dot(vec); + } + if (rb1) + { + vec = ( -solverConstraint.m_angularComponentB).cross(rel_pos2); + denom1 = rb1->getInvMass() + cp.m_normalWorldOnB.dot(vec); + } +#endif //COMPUTE_IMPULSE_DENOM + + btScalar denom = relaxation/(denom0+denom1); + solverConstraint.m_jacDiagABInv = denom; + } + + solverConstraint.m_contactNormal = cp.m_normalWorldOnB; + solverConstraint.m_relpos1CrossNormal = rel_pos1.cross(cp.m_normalWorldOnB); + solverConstraint.m_relpos2CrossNormal = rel_pos2.cross(-cp.m_normalWorldOnB); + + + + + btVector3 vel1 = rb0 ? rb0->getVelocityInLocalPoint(rel_pos1) : btVector3(0,0,0); + btVector3 vel2 = rb1 ? rb1->getVelocityInLocalPoint(rel_pos2) : btVector3(0,0,0); + vel = vel1 - vel2; + rel_vel = cp.m_normalWorldOnB.dot(vel); + + btScalar penetration = cp.getDistance()+infoGlobal.m_linearSlop; + + + solverConstraint.m_friction = cp.m_combinedFriction; + + btScalar restitution = 0.f; + + if (cp.m_lifeTime>infoGlobal.m_restingContactRestitutionThreshold) + { + restitution = 0.f; + } else + { + restitution = restitutionCurve(rel_vel, cp.m_combinedRestitution); + if (restitution <= btScalar(0.)) + { + restitution = 0.f; + }; + } + + + ///warm starting (or zero if disabled) + if (infoGlobal.m_solverMode & SOLVER_USE_WARMSTARTING) + { + solverConstraint.m_appliedImpulse = cp.m_appliedImpulse * infoGlobal.m_warmstartingFactor; + if (rb0) + rb0->internalApplyImpulse(solverConstraint.m_contactNormal*rb0->getInvMass()*rb0->getLinearFactor(),solverConstraint.m_angularComponentA,solverConstraint.m_appliedImpulse); + if (rb1) + rb1->internalApplyImpulse(solverConstraint.m_contactNormal*rb1->getInvMass()*rb1->getLinearFactor(),-solverConstraint.m_angularComponentB,-solverConstraint.m_appliedImpulse); + } else + { + solverConstraint.m_appliedImpulse = 0.f; + } + + solverConstraint.m_appliedPushImpulse = 0.f; + + { + btScalar rel_vel; + btScalar vel1Dotn = solverConstraint.m_contactNormal.dot(rb0?rb0->getLinearVelocity():btVector3(0,0,0)) + + solverConstraint.m_relpos1CrossNormal.dot(rb0?rb0->getAngularVelocity():btVector3(0,0,0)); + btScalar vel2Dotn = -solverConstraint.m_contactNormal.dot(rb1?rb1->getLinearVelocity():btVector3(0,0,0)) + + solverConstraint.m_relpos2CrossNormal.dot(rb1?rb1->getAngularVelocity():btVector3(0,0,0)); + + rel_vel = vel1Dotn+vel2Dotn; + + btScalar positionalError = 0.f; + positionalError = -penetration * infoGlobal.m_erp/infoGlobal.m_timeStep; + btScalar velocityError = restitution - rel_vel;// * damping; + btScalar penetrationImpulse = positionalError*solverConstraint.m_jacDiagABInv; + btScalar velocityImpulse = velocityError *solverConstraint.m_jacDiagABInv; + if (!infoGlobal.m_splitImpulse || (penetration > infoGlobal.m_splitImpulsePenetrationThreshold)) + { + //combine position and velocity into rhs + solverConstraint.m_rhs = penetrationImpulse+velocityImpulse; + solverConstraint.m_rhsPenetration = 0.f; + } else + { + //split position and velocity into rhs and m_rhsPenetration + solverConstraint.m_rhs = velocityImpulse; + solverConstraint.m_rhsPenetration = penetrationImpulse; + } + solverConstraint.m_cfm = 0.f; + solverConstraint.m_lowerLimit = 0; + solverConstraint.m_upperLimit = 1e10f; + } + + + + +} + + + +void btSequentialImpulseConstraintSolver::setFrictionConstraintImpulse( btSolverConstraint& solverConstraint, + btRigidBody* rb0, btRigidBody* rb1, + btManifoldPoint& cp, const btContactSolverInfo& infoGlobal) +{ + if (infoGlobal.m_solverMode & SOLVER_USE_FRICTION_WARMSTARTING) + { + { + btSolverConstraint& frictionConstraint1 = m_tmpSolverContactFrictionConstraintPool[solverConstraint.m_frictionIndex]; + if (infoGlobal.m_solverMode & SOLVER_USE_WARMSTARTING) + { + frictionConstraint1.m_appliedImpulse = cp.m_appliedImpulseLateral1 * infoGlobal.m_warmstartingFactor; + if (rb0) + rb0->internalApplyImpulse(frictionConstraint1.m_contactNormal*rb0->getInvMass()*rb0->getLinearFactor(),frictionConstraint1.m_angularComponentA,frictionConstraint1.m_appliedImpulse); + if (rb1) + rb1->internalApplyImpulse(frictionConstraint1.m_contactNormal*rb1->getInvMass()*rb1->getLinearFactor(),-frictionConstraint1.m_angularComponentB,-frictionConstraint1.m_appliedImpulse); + } else + { + frictionConstraint1.m_appliedImpulse = 0.f; + } + } + + if ((infoGlobal.m_solverMode & SOLVER_USE_2_FRICTION_DIRECTIONS)) + { + btSolverConstraint& frictionConstraint2 = m_tmpSolverContactFrictionConstraintPool[solverConstraint.m_frictionIndex+1]; + if (infoGlobal.m_solverMode & SOLVER_USE_WARMSTARTING) + { + frictionConstraint2.m_appliedImpulse = cp.m_appliedImpulseLateral2 * infoGlobal.m_warmstartingFactor; + if (rb0) + rb0->internalApplyImpulse(frictionConstraint2.m_contactNormal*rb0->getInvMass(),frictionConstraint2.m_angularComponentA,frictionConstraint2.m_appliedImpulse); + if (rb1) + rb1->internalApplyImpulse(frictionConstraint2.m_contactNormal*rb1->getInvMass(),-frictionConstraint2.m_angularComponentB,-frictionConstraint2.m_appliedImpulse); + } else + { + frictionConstraint2.m_appliedImpulse = 0.f; + } + } + } else + { + btSolverConstraint& frictionConstraint1 = m_tmpSolverContactFrictionConstraintPool[solverConstraint.m_frictionIndex]; + frictionConstraint1.m_appliedImpulse = 0.f; + if ((infoGlobal.m_solverMode & SOLVER_USE_2_FRICTION_DIRECTIONS)) + { + btSolverConstraint& frictionConstraint2 = m_tmpSolverContactFrictionConstraintPool[solverConstraint.m_frictionIndex+1]; + frictionConstraint2.m_appliedImpulse = 0.f; + } + } +} + + + + +void btSequentialImpulseConstraintSolver::convertContact(btPersistentManifold* manifold,const btContactSolverInfo& infoGlobal) +{ + btCollisionObject* colObj0=0,*colObj1=0; + + colObj0 = (btCollisionObject*)manifold->getBody0(); + colObj1 = (btCollisionObject*)manifold->getBody1(); + + + btRigidBody* solverBodyA = btRigidBody::upcast(colObj0); + btRigidBody* solverBodyB = btRigidBody::upcast(colObj1); + + ///avoid collision response between two static objects + if ((!solverBodyA || !solverBodyA->getInvMass()) && (!solverBodyB || !solverBodyB->getInvMass())) + return; + + for (int j=0;jgetNumContacts();j++) + { + + btManifoldPoint& cp = manifold->getContactPoint(j); + + if (cp.getDistance() <= manifold->getContactProcessingThreshold()) + { + btVector3 rel_pos1; + btVector3 rel_pos2; + btScalar relaxation; + btScalar rel_vel; + btVector3 vel; + + int frictionIndex = m_tmpSolverContactConstraintPool.size(); + btSolverConstraint& solverConstraint = m_tmpSolverContactConstraintPool.expandNonInitializing(); + btRigidBody* rb0 = btRigidBody::upcast(colObj0); + btRigidBody* rb1 = btRigidBody::upcast(colObj1); + solverConstraint.m_solverBodyA = rb0? rb0 : &getFixedBody(); + solverConstraint.m_solverBodyB = rb1? rb1 : &getFixedBody(); + solverConstraint.m_originalContactPoint = &cp; + + setupContactConstraint(solverConstraint, colObj0, colObj1, cp, infoGlobal, vel, rel_vel, relaxation, rel_pos1, rel_pos2); + +// const btVector3& pos1 = cp.getPositionWorldOnA(); +// const btVector3& pos2 = cp.getPositionWorldOnB(); + + /////setup the friction constraints + + solverConstraint.m_frictionIndex = m_tmpSolverContactFrictionConstraintPool.size(); + + if (!(infoGlobal.m_solverMode & SOLVER_ENABLE_FRICTION_DIRECTION_CACHING) || !cp.m_lateralFrictionInitialized) + { + cp.m_lateralFrictionDir1 = vel - cp.m_normalWorldOnB * rel_vel; + btScalar lat_rel_vel = cp.m_lateralFrictionDir1.length2(); + if (!(infoGlobal.m_solverMode & SOLVER_DISABLE_VELOCITY_DEPENDENT_FRICTION_DIRECTION) && lat_rel_vel > SIMD_EPSILON) + { + cp.m_lateralFrictionDir1 /= btSqrt(lat_rel_vel); + if((infoGlobal.m_solverMode & SOLVER_USE_2_FRICTION_DIRECTIONS)) + { + cp.m_lateralFrictionDir2 = cp.m_lateralFrictionDir1.cross(cp.m_normalWorldOnB); + cp.m_lateralFrictionDir2.normalize();//?? + applyAnisotropicFriction(colObj0,cp.m_lateralFrictionDir2); + applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir2); + addFrictionConstraint(cp.m_lateralFrictionDir2,solverBodyA,solverBodyB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1, relaxation); + } + + applyAnisotropicFriction(colObj0,cp.m_lateralFrictionDir1); + applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir1); + addFrictionConstraint(cp.m_lateralFrictionDir1,solverBodyA,solverBodyB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1, relaxation); + cp.m_lateralFrictionInitialized = true; + } else + { + //re-calculate friction direction every frame, todo: check if this is really needed + btPlaneSpace1(cp.m_normalWorldOnB,cp.m_lateralFrictionDir1,cp.m_lateralFrictionDir2); + if ((infoGlobal.m_solverMode & SOLVER_USE_2_FRICTION_DIRECTIONS)) + { + applyAnisotropicFriction(colObj0,cp.m_lateralFrictionDir2); + applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir2); + addFrictionConstraint(cp.m_lateralFrictionDir2,solverBodyA,solverBodyB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1, relaxation); + } + + applyAnisotropicFriction(colObj0,cp.m_lateralFrictionDir1); + applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir1); + addFrictionConstraint(cp.m_lateralFrictionDir1,solverBodyA,solverBodyB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1, relaxation); + + cp.m_lateralFrictionInitialized = true; + } + + } else + { + addFrictionConstraint(cp.m_lateralFrictionDir1,solverBodyA,solverBodyB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1, relaxation,cp.m_contactMotion1, cp.m_contactCFM1); + if ((infoGlobal.m_solverMode & SOLVER_USE_2_FRICTION_DIRECTIONS)) + addFrictionConstraint(cp.m_lateralFrictionDir2,solverBodyA,solverBodyB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1, relaxation, cp.m_contactMotion2, cp.m_contactCFM2); + } + + setFrictionConstraintImpulse( solverConstraint, rb0, rb1, cp, infoGlobal); + + } + } +} + + +btScalar btSequentialImpulseConstraintSolver::solveGroupCacheFriendlySetup(btCollisionObject** /*bodies */,int /*numBodies */,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc) +{ + BT_PROFILE("solveGroupCacheFriendlySetup"); + (void)stackAlloc; + (void)debugDrawer; + + + if (!(numConstraints + numManifolds)) + { + // printf("empty\n"); + return 0.f; + } + + if (1) + { + int j; + for (j=0;jbuildJacobian(); + } + } + //btRigidBody* rb0=0,*rb1=0; + + //if (1) + { + { + + int totalNumRows = 0; + int i; + + m_tmpConstraintSizesPool.resize(numConstraints); + //calculate the total number of contraint rows + for (i=0;igetInfo1(&info1); + totalNumRows += info1.m_numConstraintRows; + } + m_tmpSolverNonContactConstraintPool.resize(totalNumRows); + + + ///setup the btSolverConstraints + int currentRow = 0; + + for (i=0;igetRigidBodyA(); + btRigidBody& rbB = constraint->getRigidBodyB(); + + + int j; + for ( j=0;jm_contactNormal; + info2.m_J1angularAxis = currentConstraintRow->m_relpos1CrossNormal; + info2.m_J2linearAxis = 0; + info2.m_J2angularAxis = currentConstraintRow->m_relpos2CrossNormal; + info2.rowskip = sizeof(btSolverConstraint)/sizeof(btScalar);//check this + ///the size of btSolverConstraint needs be a multiple of btScalar + btAssert(info2.rowskip*sizeof(btScalar)== sizeof(btSolverConstraint)); + info2.m_constraintError = ¤tConstraintRow->m_rhs; + currentConstraintRow->m_cfm = infoGlobal.m_globalCfm; + info2.cfm = ¤tConstraintRow->m_cfm; + info2.m_lowerLimit = ¤tConstraintRow->m_lowerLimit; + info2.m_upperLimit = ¤tConstraintRow->m_upperLimit; + info2.m_numIterations = infoGlobal.m_numIterations; + constraints[i]->getInfo2(&info2); + + ///finalize the constraint setup + for ( j=0;jgetRigidBodyA().getInvInertiaTensorWorld()*ftorqueAxis1*constraint->getRigidBodyA().getAngularFactor(); + } + { + const btVector3& ftorqueAxis2 = solverConstraint.m_relpos2CrossNormal; + solverConstraint.m_angularComponentB = constraint->getRigidBodyB().getInvInertiaTensorWorld()*ftorqueAxis2*constraint->getRigidBodyB().getAngularFactor(); + } + + { + btVector3 iMJlA = solverConstraint.m_contactNormal*rbA.getInvMass(); + btVector3 iMJaA = rbA.getInvInertiaTensorWorld()*solverConstraint.m_relpos1CrossNormal; + btVector3 iMJlB = solverConstraint.m_contactNormal*rbB.getInvMass();//sign of normal? + btVector3 iMJaB = rbB.getInvInertiaTensorWorld()*solverConstraint.m_relpos2CrossNormal; + + btScalar sum = iMJlA.dot(solverConstraint.m_contactNormal); + sum += iMJaA.dot(solverConstraint.m_relpos1CrossNormal); + sum += iMJlB.dot(solverConstraint.m_contactNormal); + sum += iMJaB.dot(solverConstraint.m_relpos2CrossNormal); + + solverConstraint.m_jacDiagABInv = btScalar(1.)/sum; + } + + + ///fix rhs + ///todo: add force/torque accelerators + { + btScalar rel_vel; + btScalar vel1Dotn = solverConstraint.m_contactNormal.dot(rbA.getLinearVelocity()) + solverConstraint.m_relpos1CrossNormal.dot(rbA.getAngularVelocity()); + btScalar vel2Dotn = -solverConstraint.m_contactNormal.dot(rbB.getLinearVelocity()) + solverConstraint.m_relpos2CrossNormal.dot(rbB.getAngularVelocity()); + + rel_vel = vel1Dotn+vel2Dotn; + + btScalar restitution = 0.f; + btScalar positionalError = solverConstraint.m_rhs;//already filled in by getConstraintInfo2 + btScalar velocityError = restitution - rel_vel;// * damping; + btScalar penetrationImpulse = positionalError*solverConstraint.m_jacDiagABInv; + btScalar velocityImpulse = velocityError *solverConstraint.m_jacDiagABInv; + solverConstraint.m_rhs = penetrationImpulse+velocityImpulse; + solverConstraint.m_appliedImpulse = 0.f; + + } + } + } + currentRow+=m_tmpConstraintSizesPool[i].m_numConstraintRows; + } + } + + { + int i; + btPersistentManifold* manifold = 0; +// btCollisionObject* colObj0=0,*colObj1=0; + + + for (i=0;isolveConstraintObsolete(constraints[j]->getRigidBodyA(),constraints[j]->getRigidBodyB(),infoGlobal.m_timeStep); + } + + ///solve all contact constraints using SIMD, if available + int numPoolConstraints = m_tmpSolverContactConstraintPool.size(); + for (j=0;jbtScalar(0)) + { + solveManifold.m_lowerLimit = -(solveManifold.m_friction*totalImpulse); + solveManifold.m_upperLimit = solveManifold.m_friction*totalImpulse; + + resolveSingleConstraintRowGenericSIMD(*solveManifold.m_solverBodyA, *solveManifold.m_solverBodyB,solveManifold); + } + } + } else + { + + ///solve all joint constraints + for (j=0;jsolveConstraintObsolete(constraints[j]->getRigidBodyA(),constraints[j]->getRigidBodyB(),infoGlobal.m_timeStep); + } + ///solve all contact constraints + int numPoolConstraints = m_tmpSolverContactConstraintPool.size(); + for (j=0;jbtScalar(0)) + { + solveManifold.m_lowerLimit = -(solveManifold.m_friction*totalImpulse); + solveManifold.m_upperLimit = solveManifold.m_friction*totalImpulse; + + resolveSingleConstraintRowGeneric(*solveManifold.m_solverBodyA,*solveManifold.m_solverBodyB,solveManifold); + } + } + } + return 0.f; +} + + +void btSequentialImpulseConstraintSolver::solveGroupCacheFriendlySplitImpulseIterations(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc) +{ + int iteration; + if (infoGlobal.m_splitImpulse) + { + if (infoGlobal.m_solverMode & SOLVER_SIMD) + { + for ( iteration = 0;iterationm_appliedImpulse = solveManifold.m_appliedImpulse; + if (infoGlobal.m_solverMode & SOLVER_USE_FRICTION_WARMSTARTING) + { + pt->m_appliedImpulseLateral1 = m_tmpSolverContactFrictionConstraintPool[solveManifold.m_frictionIndex].m_appliedImpulse; + pt->m_appliedImpulseLateral2 = m_tmpSolverContactFrictionConstraintPool[solveManifold.m_frictionIndex+1].m_appliedImpulse; + } + + //do a callback here? + } + + numPoolConstraints = m_tmpSolverNonContactConstraintPool.size(); + for (j=0;jinternalGetAppliedImpulse(); + sum += solverConstr.m_appliedImpulse; + constr->internalSetAppliedImpulse(sum); + } + + + if (infoGlobal.m_splitImpulse) + { + for ( i=0;iinternalWritebackVelocity(infoGlobal.m_timeStep); + } + } else + { + for ( i=0;iinternalWritebackVelocity(); + } + } + + + m_tmpSolverContactConstraintPool.resize(0); + m_tmpSolverNonContactConstraintPool.resize(0); + m_tmpSolverContactFrictionConstraintPool.resize(0); + + return 0.f; +} + + + +/// btSequentialImpulseConstraintSolver Sequentially applies impulses +btScalar btSequentialImpulseConstraintSolver::solveGroup(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc,btDispatcher* /*dispatcher*/) +{ + + BT_PROFILE("solveGroup"); + //you need to provide at least some bodies + btAssert(bodies); + btAssert(numBodies); + + solveGroupCacheFriendlySetup( bodies, numBodies, manifoldPtr, numManifolds,constraints, numConstraints,infoGlobal,debugDrawer, stackAlloc); + + solveGroupCacheFriendlyIterations(bodies, numBodies, manifoldPtr, numManifolds,constraints, numConstraints,infoGlobal,debugDrawer, stackAlloc); + + solveGroupCacheFriendlyFinish(bodies, numBodies, manifoldPtr, numManifolds,constraints, numConstraints,infoGlobal,debugDrawer, stackAlloc); + + return 0.f; +} + +void btSequentialImpulseConstraintSolver::reset() +{ + m_btSeed2 = 0; +} + + diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h new file mode 100644 index 00000000000..a26fbad787b --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h @@ -0,0 +1,132 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H +#define SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H + +#include "btConstraintSolver.h" +class btIDebugDraw; +#include "btContactConstraint.h" +#include "btSolverBody.h" +#include "btSolverConstraint.h" +#include "btTypedConstraint.h" +#include "BulletCollision/NarrowPhaseCollision/btManifoldPoint.h" + +///The btSequentialImpulseConstraintSolver is a fast SIMD implementation of the Projected Gauss Seidel (iterative LCP) method. +class btSequentialImpulseConstraintSolver : public btConstraintSolver +{ +protected: + + btConstraintArray m_tmpSolverContactConstraintPool; + btConstraintArray m_tmpSolverNonContactConstraintPool; + btConstraintArray m_tmpSolverContactFrictionConstraintPool; + btAlignedObjectArray m_orderTmpConstraintPool; + btAlignedObjectArray m_orderFrictionConstraintPool; + btAlignedObjectArray m_tmpConstraintSizesPool; + + void setupFrictionConstraint( btSolverConstraint& solverConstraint, const btVector3& normalAxis,btRigidBody* solverBodyA,btRigidBody* solverBodyIdB, + btManifoldPoint& cp,const btVector3& rel_pos1,const btVector3& rel_pos2, + btCollisionObject* colObj0,btCollisionObject* colObj1, btScalar relaxation, + btScalar desiredVelocity=0., btScalar cfmSlip=0.); + + btSolverConstraint& addFrictionConstraint(const btVector3& normalAxis,btRigidBody* solverBodyA,btRigidBody* solverBodyB,int frictionIndex,btManifoldPoint& cp,const btVector3& rel_pos1,const btVector3& rel_pos2,btCollisionObject* colObj0,btCollisionObject* colObj1, btScalar relaxation, btScalar desiredVelocity=0., btScalar cfmSlip=0.); + + void setupContactConstraint(btSolverConstraint& solverConstraint, btCollisionObject* colObj0, btCollisionObject* colObj1, btManifoldPoint& cp, + const btContactSolverInfo& infoGlobal, btVector3& vel, btScalar& rel_vel, btScalar& relaxation, + btVector3& rel_pos1, btVector3& rel_pos2); + + void setFrictionConstraintImpulse( btSolverConstraint& solverConstraint, btRigidBody* rb0, btRigidBody* rb1, + btManifoldPoint& cp, const btContactSolverInfo& infoGlobal); + + ///m_btSeed2 is used for re-arranging the constraint rows. improves convergence/quality of friction + unsigned long m_btSeed2; + +// void initSolverBody(btSolverBody* solverBody, btCollisionObject* collisionObject); + btScalar restitutionCurve(btScalar rel_vel, btScalar restitution); + + void convertContact(btPersistentManifold* manifold,const btContactSolverInfo& infoGlobal); + + + void resolveSplitPenetrationSIMD( + btRigidBody& body1, + btRigidBody& body2, + const btSolverConstraint& contactConstraint); + + void resolveSplitPenetrationImpulseCacheFriendly( + btRigidBody& body1, + btRigidBody& body2, + const btSolverConstraint& contactConstraint); + + //internal method + int getOrInitSolverBody(btCollisionObject& body); + + void resolveSingleConstraintRowGeneric(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& contactConstraint); + + void resolveSingleConstraintRowGenericSIMD(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& contactConstraint); + + void resolveSingleConstraintRowLowerLimit(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& contactConstraint); + + void resolveSingleConstraintRowLowerLimitSIMD(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& contactConstraint); + +protected: + static btRigidBody& getFixedBody() + { + static btRigidBody s_fixed(0, 0,0); + s_fixed.setMassProps(btScalar(0.),btVector3(btScalar(0.),btScalar(0.),btScalar(0.))); + return s_fixed; + } + virtual void solveGroupCacheFriendlySplitImpulseIterations(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc); + virtual btScalar solveGroupCacheFriendlyFinish(btCollisionObject** bodies ,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc); + btScalar solveSingleIteration(int iteration, btCollisionObject** bodies ,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc); + + virtual btScalar solveGroupCacheFriendlySetup(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc); + virtual btScalar solveGroupCacheFriendlyIterations(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc); + + +public: + + + btSequentialImpulseConstraintSolver(); + virtual ~btSequentialImpulseConstraintSolver(); + + virtual btScalar solveGroup(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifold,int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& info, btIDebugDraw* debugDrawer, btStackAlloc* stackAlloc,btDispatcher* dispatcher); + + + + ///clear internal cached data and reset random seed + virtual void reset(); + + unsigned long btRand2(); + + int btRandInt2 (int n); + + void setRandSeed(unsigned long seed) + { + m_btSeed2 = seed; + } + unsigned long getRandSeed() const + { + return m_btSeed2; + } + +}; + +#ifndef BT_PREFER_SIMD +typedef btSequentialImpulseConstraintSolver btSequentialImpulseConstraintSolverPrefered; +#endif + + +#endif //SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H + diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp new file mode 100644 index 00000000000..b69f46da1b4 --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp @@ -0,0 +1,857 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +/* +Added by Roman Ponomarev (rponom@gmail.com) +April 04, 2008 +*/ + + + +#include "btSliderConstraint.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include "LinearMath/btTransformUtil.h" +#include + +#define USE_OFFSET_FOR_CONSTANT_FRAME true + +void btSliderConstraint::initParams() +{ + m_lowerLinLimit = btScalar(1.0); + m_upperLinLimit = btScalar(-1.0); + m_lowerAngLimit = btScalar(0.); + m_upperAngLimit = btScalar(0.); + m_softnessDirLin = SLIDER_CONSTRAINT_DEF_SOFTNESS; + m_restitutionDirLin = SLIDER_CONSTRAINT_DEF_RESTITUTION; + m_dampingDirLin = btScalar(0.); + m_cfmDirLin = SLIDER_CONSTRAINT_DEF_CFM; + m_softnessDirAng = SLIDER_CONSTRAINT_DEF_SOFTNESS; + m_restitutionDirAng = SLIDER_CONSTRAINT_DEF_RESTITUTION; + m_dampingDirAng = btScalar(0.); + m_cfmDirAng = SLIDER_CONSTRAINT_DEF_CFM; + m_softnessOrthoLin = SLIDER_CONSTRAINT_DEF_SOFTNESS; + m_restitutionOrthoLin = SLIDER_CONSTRAINT_DEF_RESTITUTION; + m_dampingOrthoLin = SLIDER_CONSTRAINT_DEF_DAMPING; + m_cfmOrthoLin = SLIDER_CONSTRAINT_DEF_CFM; + m_softnessOrthoAng = SLIDER_CONSTRAINT_DEF_SOFTNESS; + m_restitutionOrthoAng = SLIDER_CONSTRAINT_DEF_RESTITUTION; + m_dampingOrthoAng = SLIDER_CONSTRAINT_DEF_DAMPING; + m_cfmOrthoAng = SLIDER_CONSTRAINT_DEF_CFM; + m_softnessLimLin = SLIDER_CONSTRAINT_DEF_SOFTNESS; + m_restitutionLimLin = SLIDER_CONSTRAINT_DEF_RESTITUTION; + m_dampingLimLin = SLIDER_CONSTRAINT_DEF_DAMPING; + m_cfmLimLin = SLIDER_CONSTRAINT_DEF_CFM; + m_softnessLimAng = SLIDER_CONSTRAINT_DEF_SOFTNESS; + m_restitutionLimAng = SLIDER_CONSTRAINT_DEF_RESTITUTION; + m_dampingLimAng = SLIDER_CONSTRAINT_DEF_DAMPING; + m_cfmLimAng = SLIDER_CONSTRAINT_DEF_CFM; + + m_poweredLinMotor = false; + m_targetLinMotorVelocity = btScalar(0.); + m_maxLinMotorForce = btScalar(0.); + m_accumulatedLinMotorImpulse = btScalar(0.0); + + m_poweredAngMotor = false; + m_targetAngMotorVelocity = btScalar(0.); + m_maxAngMotorForce = btScalar(0.); + m_accumulatedAngMotorImpulse = btScalar(0.0); + + m_flags = 0; + m_flags = 0; + + m_useOffsetForConstraintFrame = USE_OFFSET_FOR_CONSTANT_FRAME; + + calculateTransforms(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); +} + + + + + +btSliderConstraint::btSliderConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB, bool useLinearReferenceFrameA) + : btTypedConstraint(SLIDER_CONSTRAINT_TYPE, rbA, rbB), + m_useSolveConstraintObsolete(false), + m_frameInA(frameInA), + m_frameInB(frameInB), + m_useLinearReferenceFrameA(useLinearReferenceFrameA) +{ + initParams(); +} + + + +btSliderConstraint::btSliderConstraint(btRigidBody& rbB, const btTransform& frameInB, bool useLinearReferenceFrameA) + : btTypedConstraint(SLIDER_CONSTRAINT_TYPE, getFixedBody(), rbB), + m_useSolveConstraintObsolete(false), + m_frameInB(frameInB), + m_useLinearReferenceFrameA(useLinearReferenceFrameA) +{ + ///not providing rigidbody A means implicitly using worldspace for body A + m_frameInA = rbB.getCenterOfMassTransform() * m_frameInB; +// m_frameInA.getOrigin() = m_rbA.getCenterOfMassTransform()(m_frameInA.getOrigin()); + + initParams(); +} + + + + + + +void btSliderConstraint::getInfo1(btConstraintInfo1* info) +{ + if (m_useSolveConstraintObsolete) + { + info->m_numConstraintRows = 0; + info->nub = 0; + } + else + { + info->m_numConstraintRows = 4; // Fixed 2 linear + 2 angular + info->nub = 2; + //prepare constraint + calculateTransforms(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); + testAngLimits(); + testLinLimits(); + if(getSolveLinLimit() || getPoweredLinMotor()) + { + info->m_numConstraintRows++; // limit 3rd linear as well + info->nub--; + } + if(getSolveAngLimit() || getPoweredAngMotor()) + { + info->m_numConstraintRows++; // limit 3rd angular as well + info->nub--; + } + } +} + +void btSliderConstraint::getInfo1NonVirtual(btConstraintInfo1* info) +{ + + info->m_numConstraintRows = 6; // Fixed 2 linear + 2 angular + 1 limit (even if not used) + info->nub = 0; +} + +void btSliderConstraint::getInfo2(btConstraintInfo2* info) +{ + getInfo2NonVirtual(info,m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform(), m_rbA.getLinearVelocity(),m_rbB.getLinearVelocity(), m_rbA.getInvMass(),m_rbB.getInvMass()); +} + + + + + + + +void btSliderConstraint::calculateTransforms(const btTransform& transA,const btTransform& transB) +{ + if(m_useLinearReferenceFrameA || (!m_useSolveConstraintObsolete)) + { + m_calculatedTransformA = transA * m_frameInA; + m_calculatedTransformB = transB * m_frameInB; + } + else + { + m_calculatedTransformA = transB * m_frameInB; + m_calculatedTransformB = transA * m_frameInA; + } + m_realPivotAInW = m_calculatedTransformA.getOrigin(); + m_realPivotBInW = m_calculatedTransformB.getOrigin(); + m_sliderAxis = m_calculatedTransformA.getBasis().getColumn(0); // along X + if(m_useLinearReferenceFrameA || m_useSolveConstraintObsolete) + { + m_delta = m_realPivotBInW - m_realPivotAInW; + } + else + { + m_delta = m_realPivotAInW - m_realPivotBInW; + } + m_projPivotInW = m_realPivotAInW + m_sliderAxis.dot(m_delta) * m_sliderAxis; + btVector3 normalWorld; + int i; + //linear part + for(i = 0; i < 3; i++) + { + normalWorld = m_calculatedTransformA.getBasis().getColumn(i); + m_depth[i] = m_delta.dot(normalWorld); + } +} + + + +void btSliderConstraint::testLinLimits(void) +{ + m_solveLinLim = false; + m_linPos = m_depth[0]; + if(m_lowerLinLimit <= m_upperLinLimit) + { + if(m_depth[0] > m_upperLinLimit) + { + m_depth[0] -= m_upperLinLimit; + m_solveLinLim = true; + } + else if(m_depth[0] < m_lowerLinLimit) + { + m_depth[0] -= m_lowerLinLimit; + m_solveLinLim = true; + } + else + { + m_depth[0] = btScalar(0.); + } + } + else + { + m_depth[0] = btScalar(0.); + } +} + + + +void btSliderConstraint::testAngLimits(void) +{ + m_angDepth = btScalar(0.); + m_solveAngLim = false; + if(m_lowerAngLimit <= m_upperAngLimit) + { + const btVector3 axisA0 = m_calculatedTransformA.getBasis().getColumn(1); + const btVector3 axisA1 = m_calculatedTransformA.getBasis().getColumn(2); + const btVector3 axisB0 = m_calculatedTransformB.getBasis().getColumn(1); +// btScalar rot = btAtan2Fast(axisB0.dot(axisA1), axisB0.dot(axisA0)); + btScalar rot = btAtan2(axisB0.dot(axisA1), axisB0.dot(axisA0)); + rot = btAdjustAngleToLimits(rot, m_lowerAngLimit, m_upperAngLimit); + m_angPos = rot; + if(rot < m_lowerAngLimit) + { + m_angDepth = rot - m_lowerAngLimit; + m_solveAngLim = true; + } + else if(rot > m_upperAngLimit) + { + m_angDepth = rot - m_upperAngLimit; + m_solveAngLim = true; + } + } +} + +btVector3 btSliderConstraint::getAncorInA(void) +{ + btVector3 ancorInA; + ancorInA = m_realPivotAInW + (m_lowerLinLimit + m_upperLinLimit) * btScalar(0.5) * m_sliderAxis; + ancorInA = m_rbA.getCenterOfMassTransform().inverse() * ancorInA; + return ancorInA; +} + + + +btVector3 btSliderConstraint::getAncorInB(void) +{ + btVector3 ancorInB; + ancorInB = m_frameInB.getOrigin(); + return ancorInB; +} + + +void btSliderConstraint::getInfo2NonVirtual(btConstraintInfo2* info, const btTransform& transA,const btTransform& transB, const btVector3& linVelA,const btVector3& linVelB, btScalar rbAinvMass,btScalar rbBinvMass ) +{ + const btTransform& trA = getCalculatedTransformA(); + const btTransform& trB = getCalculatedTransformB(); + + btAssert(!m_useSolveConstraintObsolete); + int i, s = info->rowskip; + + btScalar signFact = m_useLinearReferenceFrameA ? btScalar(1.0f) : btScalar(-1.0f); + + // difference between frames in WCS + btVector3 ofs = trB.getOrigin() - trA.getOrigin(); + // now get weight factors depending on masses + btScalar miA = rbAinvMass; + btScalar miB = rbBinvMass; + bool hasStaticBody = (miA < SIMD_EPSILON) || (miB < SIMD_EPSILON); + btScalar miS = miA + miB; + btScalar factA, factB; + if(miS > btScalar(0.f)) + { + factA = miB / miS; + } + else + { + factA = btScalar(0.5f); + } + factB = btScalar(1.0f) - factA; + btVector3 ax1, p, q; + btVector3 ax1A = trA.getBasis().getColumn(0); + btVector3 ax1B = trB.getBasis().getColumn(0); + if(m_useOffsetForConstraintFrame) + { + // get the desired direction of slider axis + // as weighted sum of X-orthos of frameA and frameB in WCS + ax1 = ax1A * factA + ax1B * factB; + ax1.normalize(); + // construct two orthos to slider axis + btPlaneSpace1 (ax1, p, q); + } + else + { // old way - use frameA + ax1 = trA.getBasis().getColumn(0); + // get 2 orthos to slider axis (Y, Z) + p = trA.getBasis().getColumn(1); + q = trA.getBasis().getColumn(2); + } + // make rotations around these orthos equal + // the slider axis should be the only unconstrained + // rotational axis, the angular velocity of the two bodies perpendicular to + // the slider axis should be equal. thus the constraint equations are + // p*w1 - p*w2 = 0 + // q*w1 - q*w2 = 0 + // where p and q are unit vectors normal to the slider axis, and w1 and w2 + // are the angular velocity vectors of the two bodies. + info->m_J1angularAxis[0] = p[0]; + info->m_J1angularAxis[1] = p[1]; + info->m_J1angularAxis[2] = p[2]; + info->m_J1angularAxis[s+0] = q[0]; + info->m_J1angularAxis[s+1] = q[1]; + info->m_J1angularAxis[s+2] = q[2]; + + info->m_J2angularAxis[0] = -p[0]; + info->m_J2angularAxis[1] = -p[1]; + info->m_J2angularAxis[2] = -p[2]; + info->m_J2angularAxis[s+0] = -q[0]; + info->m_J2angularAxis[s+1] = -q[1]; + info->m_J2angularAxis[s+2] = -q[2]; + // compute the right hand side of the constraint equation. set relative + // body velocities along p and q to bring the slider back into alignment. + // if ax1A,ax1B are the unit length slider axes as computed from bodyA and + // bodyB, we need to rotate both bodies along the axis u = (ax1 x ax2). + // if "theta" is the angle between ax1 and ax2, we need an angular velocity + // along u to cover angle erp*theta in one step : + // |angular_velocity| = angle/time = erp*theta / stepsize + // = (erp*fps) * theta + // angular_velocity = |angular_velocity| * (ax1 x ax2) / |ax1 x ax2| + // = (erp*fps) * theta * (ax1 x ax2) / sin(theta) + // ...as ax1 and ax2 are unit length. if theta is smallish, + // theta ~= sin(theta), so + // angular_velocity = (erp*fps) * (ax1 x ax2) + // ax1 x ax2 is in the plane space of ax1, so we project the angular + // velocity to p and q to find the right hand side. +// btScalar k = info->fps * info->erp * getSoftnessOrthoAng(); + btScalar currERP = (m_flags & BT_SLIDER_FLAGS_ERP_ORTANG) ? m_softnessOrthoAng : m_softnessOrthoAng * info->erp; + btScalar k = info->fps * currERP; + + btVector3 u = ax1A.cross(ax1B); + info->m_constraintError[0] = k * u.dot(p); + info->m_constraintError[s] = k * u.dot(q); + if(m_flags & BT_SLIDER_FLAGS_CFM_ORTANG) + { + info->cfm[0] = m_cfmOrthoAng; + info->cfm[s] = m_cfmOrthoAng; + } + + int nrow = 1; // last filled row + int srow; + btScalar limit_err; + int limit; + int powered; + + // next two rows. + // we want: velA + wA x relA == velB + wB x relB ... but this would + // result in three equations, so we project along two orthos to the slider axis + + btTransform bodyA_trans = transA; + btTransform bodyB_trans = transB; + nrow++; + int s2 = nrow * s; + nrow++; + int s3 = nrow * s; + btVector3 tmpA(0,0,0), tmpB(0,0,0), relA(0,0,0), relB(0,0,0), c(0,0,0); + if(m_useOffsetForConstraintFrame) + { + // get vector from bodyB to frameB in WCS + relB = trB.getOrigin() - bodyB_trans.getOrigin(); + // get its projection to slider axis + btVector3 projB = ax1 * relB.dot(ax1); + // get vector directed from bodyB to slider axis (and orthogonal to it) + btVector3 orthoB = relB - projB; + // same for bodyA + relA = trA.getOrigin() - bodyA_trans.getOrigin(); + btVector3 projA = ax1 * relA.dot(ax1); + btVector3 orthoA = relA - projA; + // get desired offset between frames A and B along slider axis + btScalar sliderOffs = m_linPos - m_depth[0]; + // desired vector from projection of center of bodyA to projection of center of bodyB to slider axis + btVector3 totalDist = projA + ax1 * sliderOffs - projB; + // get offset vectors relA and relB + relA = orthoA + totalDist * factA; + relB = orthoB - totalDist * factB; + // now choose average ortho to slider axis + p = orthoB * factA + orthoA * factB; + btScalar len2 = p.length2(); + if(len2 > SIMD_EPSILON) + { + p /= btSqrt(len2); + } + else + { + p = trA.getBasis().getColumn(1); + } + // make one more ortho + q = ax1.cross(p); + // fill two rows + tmpA = relA.cross(p); + tmpB = relB.cross(p); + for (i=0; i<3; i++) info->m_J1angularAxis[s2+i] = tmpA[i]; + for (i=0; i<3; i++) info->m_J2angularAxis[s2+i] = -tmpB[i]; + tmpA = relA.cross(q); + tmpB = relB.cross(q); + if(hasStaticBody && getSolveAngLimit()) + { // to make constraint between static and dynamic objects more rigid + // remove wA (or wB) from equation if angular limit is hit + tmpB *= factB; + tmpA *= factA; + } + for (i=0; i<3; i++) info->m_J1angularAxis[s3+i] = tmpA[i]; + for (i=0; i<3; i++) info->m_J2angularAxis[s3+i] = -tmpB[i]; + for (i=0; i<3; i++) info->m_J1linearAxis[s2+i] = p[i]; + for (i=0; i<3; i++) info->m_J1linearAxis[s3+i] = q[i]; + } + else + { // old way - maybe incorrect if bodies are not on the slider axis + // see discussion "Bug in slider constraint" http://bulletphysics.org/Bullet/phpBB3/viewtopic.php?f=9&t=4024&start=0 + c = bodyB_trans.getOrigin() - bodyA_trans.getOrigin(); + btVector3 tmp = c.cross(p); + for (i=0; i<3; i++) info->m_J1angularAxis[s2+i] = factA*tmp[i]; + for (i=0; i<3; i++) info->m_J2angularAxis[s2+i] = factB*tmp[i]; + tmp = c.cross(q); + for (i=0; i<3; i++) info->m_J1angularAxis[s3+i] = factA*tmp[i]; + for (i=0; i<3; i++) info->m_J2angularAxis[s3+i] = factB*tmp[i]; + + for (i=0; i<3; i++) info->m_J1linearAxis[s2+i] = p[i]; + for (i=0; i<3; i++) info->m_J1linearAxis[s3+i] = q[i]; + } + // compute two elements of right hand side + + // k = info->fps * info->erp * getSoftnessOrthoLin(); + currERP = (m_flags & BT_SLIDER_FLAGS_ERP_ORTLIN) ? m_softnessOrthoLin : m_softnessOrthoLin * info->erp; + k = info->fps * currERP; + + btScalar rhs = k * p.dot(ofs); + info->m_constraintError[s2] = rhs; + rhs = k * q.dot(ofs); + info->m_constraintError[s3] = rhs; + if(m_flags & BT_SLIDER_FLAGS_CFM_ORTLIN) + { + info->cfm[s2] = m_cfmOrthoLin; + info->cfm[s3] = m_cfmOrthoLin; + } + + + // check linear limits + limit_err = btScalar(0.0); + limit = 0; + if(getSolveLinLimit()) + { + limit_err = getLinDepth() * signFact; + limit = (limit_err > btScalar(0.0)) ? 2 : 1; + } + powered = 0; + if(getPoweredLinMotor()) + { + powered = 1; + } + // if the slider has joint limits or motor, add in the extra row + if (limit || powered) + { + nrow++; + srow = nrow * info->rowskip; + info->m_J1linearAxis[srow+0] = ax1[0]; + info->m_J1linearAxis[srow+1] = ax1[1]; + info->m_J1linearAxis[srow+2] = ax1[2]; + // linear torque decoupling step: + // + // we have to be careful that the linear constraint forces (+/- ax1) applied to the two bodies + // do not create a torque couple. in other words, the points that the + // constraint force is applied at must lie along the same ax1 axis. + // a torque couple will result in limited slider-jointed free + // bodies from gaining angular momentum. + if(m_useOffsetForConstraintFrame) + { + // this is needed only when bodyA and bodyB are both dynamic. + if(!hasStaticBody) + { + tmpA = relA.cross(ax1); + tmpB = relB.cross(ax1); + info->m_J1angularAxis[srow+0] = tmpA[0]; + info->m_J1angularAxis[srow+1] = tmpA[1]; + info->m_J1angularAxis[srow+2] = tmpA[2]; + info->m_J2angularAxis[srow+0] = -tmpB[0]; + info->m_J2angularAxis[srow+1] = -tmpB[1]; + info->m_J2angularAxis[srow+2] = -tmpB[2]; + } + } + else + { // The old way. May be incorrect if bodies are not on the slider axis + btVector3 ltd; // Linear Torque Decoupling vector (a torque) + ltd = c.cross(ax1); + info->m_J1angularAxis[srow+0] = factA*ltd[0]; + info->m_J1angularAxis[srow+1] = factA*ltd[1]; + info->m_J1angularAxis[srow+2] = factA*ltd[2]; + info->m_J2angularAxis[srow+0] = factB*ltd[0]; + info->m_J2angularAxis[srow+1] = factB*ltd[1]; + info->m_J2angularAxis[srow+2] = factB*ltd[2]; + } + // right-hand part + btScalar lostop = getLowerLinLimit(); + btScalar histop = getUpperLinLimit(); + if(limit && (lostop == histop)) + { // the joint motor is ineffective + powered = 0; + } + info->m_constraintError[srow] = 0.; + info->m_lowerLimit[srow] = 0.; + info->m_upperLimit[srow] = 0.; + currERP = (m_flags & BT_SLIDER_FLAGS_ERP_LIMLIN) ? m_softnessLimLin : info->erp; + if(powered) + { + if(m_flags & BT_SLIDER_FLAGS_CFM_DIRLIN) + { + info->cfm[srow] = m_cfmDirLin; + } + btScalar tag_vel = getTargetLinMotorVelocity(); + btScalar mot_fact = getMotorFactor(m_linPos, m_lowerLinLimit, m_upperLinLimit, tag_vel, info->fps * currERP); + info->m_constraintError[srow] -= signFact * mot_fact * getTargetLinMotorVelocity(); + info->m_lowerLimit[srow] += -getMaxLinMotorForce() * info->fps; + info->m_upperLimit[srow] += getMaxLinMotorForce() * info->fps; + } + if(limit) + { + k = info->fps * currERP; + info->m_constraintError[srow] += k * limit_err; + if(m_flags & BT_SLIDER_FLAGS_CFM_LIMLIN) + { + info->cfm[srow] = m_cfmLimLin; + } + if(lostop == histop) + { // limited low and high simultaneously + info->m_lowerLimit[srow] = -SIMD_INFINITY; + info->m_upperLimit[srow] = SIMD_INFINITY; + } + else if(limit == 1) + { // low limit + info->m_lowerLimit[srow] = -SIMD_INFINITY; + info->m_upperLimit[srow] = 0; + } + else + { // high limit + info->m_lowerLimit[srow] = 0; + info->m_upperLimit[srow] = SIMD_INFINITY; + } + // bounce (we'll use slider parameter abs(1.0 - m_dampingLimLin) for that) + btScalar bounce = btFabs(btScalar(1.0) - getDampingLimLin()); + if(bounce > btScalar(0.0)) + { + btScalar vel = linVelA.dot(ax1); + vel -= linVelB.dot(ax1); + vel *= signFact; + // only apply bounce if the velocity is incoming, and if the + // resulting c[] exceeds what we already have. + if(limit == 1) + { // low limit + if(vel < 0) + { + btScalar newc = -bounce * vel; + if (newc > info->m_constraintError[srow]) + { + info->m_constraintError[srow] = newc; + } + } + } + else + { // high limit - all those computations are reversed + if(vel > 0) + { + btScalar newc = -bounce * vel; + if(newc < info->m_constraintError[srow]) + { + info->m_constraintError[srow] = newc; + } + } + } + } + info->m_constraintError[srow] *= getSoftnessLimLin(); + } // if(limit) + } // if linear limit + // check angular limits + limit_err = btScalar(0.0); + limit = 0; + if(getSolveAngLimit()) + { + limit_err = getAngDepth(); + limit = (limit_err > btScalar(0.0)) ? 1 : 2; + } + // if the slider has joint limits, add in the extra row + powered = 0; + if(getPoweredAngMotor()) + { + powered = 1; + } + if(limit || powered) + { + nrow++; + srow = nrow * info->rowskip; + info->m_J1angularAxis[srow+0] = ax1[0]; + info->m_J1angularAxis[srow+1] = ax1[1]; + info->m_J1angularAxis[srow+2] = ax1[2]; + + info->m_J2angularAxis[srow+0] = -ax1[0]; + info->m_J2angularAxis[srow+1] = -ax1[1]; + info->m_J2angularAxis[srow+2] = -ax1[2]; + + btScalar lostop = getLowerAngLimit(); + btScalar histop = getUpperAngLimit(); + if(limit && (lostop == histop)) + { // the joint motor is ineffective + powered = 0; + } + currERP = (m_flags & BT_SLIDER_FLAGS_ERP_LIMANG) ? m_softnessLimAng : info->erp; + if(powered) + { + if(m_flags & BT_SLIDER_FLAGS_CFM_DIRANG) + { + info->cfm[srow] = m_cfmDirAng; + } + btScalar mot_fact = getMotorFactor(m_angPos, m_lowerAngLimit, m_upperAngLimit, getTargetAngMotorVelocity(), info->fps * currERP); + info->m_constraintError[srow] = mot_fact * getTargetAngMotorVelocity(); + info->m_lowerLimit[srow] = -getMaxAngMotorForce() * info->fps; + info->m_upperLimit[srow] = getMaxAngMotorForce() * info->fps; + } + if(limit) + { + k = info->fps * currERP; + info->m_constraintError[srow] += k * limit_err; + if(m_flags & BT_SLIDER_FLAGS_CFM_LIMANG) + { + info->cfm[srow] = m_cfmLimAng; + } + if(lostop == histop) + { + // limited low and high simultaneously + info->m_lowerLimit[srow] = -SIMD_INFINITY; + info->m_upperLimit[srow] = SIMD_INFINITY; + } + else if(limit == 1) + { // low limit + info->m_lowerLimit[srow] = 0; + info->m_upperLimit[srow] = SIMD_INFINITY; + } + else + { // high limit + info->m_lowerLimit[srow] = -SIMD_INFINITY; + info->m_upperLimit[srow] = 0; + } + // bounce (we'll use slider parameter abs(1.0 - m_dampingLimAng) for that) + btScalar bounce = btFabs(btScalar(1.0) - getDampingLimAng()); + if(bounce > btScalar(0.0)) + { + btScalar vel = m_rbA.getAngularVelocity().dot(ax1); + vel -= m_rbB.getAngularVelocity().dot(ax1); + // only apply bounce if the velocity is incoming, and if the + // resulting c[] exceeds what we already have. + if(limit == 1) + { // low limit + if(vel < 0) + { + btScalar newc = -bounce * vel; + if(newc > info->m_constraintError[srow]) + { + info->m_constraintError[srow] = newc; + } + } + } + else + { // high limit - all those computations are reversed + if(vel > 0) + { + btScalar newc = -bounce * vel; + if(newc < info->m_constraintError[srow]) + { + info->m_constraintError[srow] = newc; + } + } + } + } + info->m_constraintError[srow] *= getSoftnessLimAng(); + } // if(limit) + } // if angular limit or powered +} + + +///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). +///If no axis is provided, it uses the default axis for this constraint. +void btSliderConstraint::setParam(int num, btScalar value, int axis) +{ + switch(num) + { + case BT_CONSTRAINT_STOP_ERP : + if(axis < 1) + { + m_softnessLimLin = value; + m_flags |= BT_SLIDER_FLAGS_ERP_LIMLIN; + } + else if(axis < 3) + { + m_softnessOrthoLin = value; + m_flags |= BT_SLIDER_FLAGS_ERP_ORTLIN; + } + else if(axis == 3) + { + m_softnessLimAng = value; + m_flags |= BT_SLIDER_FLAGS_ERP_LIMANG; + } + else if(axis < 6) + { + m_softnessOrthoAng = value; + m_flags |= BT_SLIDER_FLAGS_ERP_ORTANG; + } + else + { + btAssertConstrParams(0); + } + break; + case BT_CONSTRAINT_CFM : + if(axis < 1) + { + m_cfmDirLin = value; + m_flags |= BT_SLIDER_FLAGS_CFM_DIRLIN; + } + else if(axis == 3) + { + m_cfmDirAng = value; + m_flags |= BT_SLIDER_FLAGS_CFM_DIRANG; + } + else + { + btAssertConstrParams(0); + } + break; + case BT_CONSTRAINT_STOP_CFM : + if(axis < 1) + { + m_cfmLimLin = value; + m_flags |= BT_SLIDER_FLAGS_CFM_LIMLIN; + } + else if(axis < 3) + { + m_cfmOrthoLin = value; + m_flags |= BT_SLIDER_FLAGS_CFM_ORTLIN; + } + else if(axis == 3) + { + m_cfmLimAng = value; + m_flags |= BT_SLIDER_FLAGS_CFM_LIMANG; + } + else if(axis < 6) + { + m_cfmOrthoAng = value; + m_flags |= BT_SLIDER_FLAGS_CFM_ORTANG; + } + else + { + btAssertConstrParams(0); + } + break; + } +} + +///return the local value of parameter +btScalar btSliderConstraint::getParam(int num, int axis) const +{ + btScalar retVal(SIMD_INFINITY); + switch(num) + { + case BT_CONSTRAINT_STOP_ERP : + if(axis < 1) + { + btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_ERP_LIMLIN); + retVal = m_softnessLimLin; + } + else if(axis < 3) + { + btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_ERP_ORTLIN); + retVal = m_softnessOrthoLin; + } + else if(axis == 3) + { + btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_ERP_LIMANG); + retVal = m_softnessLimAng; + } + else if(axis < 6) + { + btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_ERP_ORTANG); + retVal = m_softnessOrthoAng; + } + else + { + btAssertConstrParams(0); + } + break; + case BT_CONSTRAINT_CFM : + if(axis < 1) + { + btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_CFM_DIRLIN); + retVal = m_cfmDirLin; + } + else if(axis == 3) + { + btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_CFM_DIRANG); + retVal = m_cfmDirAng; + } + else + { + btAssertConstrParams(0); + } + break; + case BT_CONSTRAINT_STOP_CFM : + if(axis < 1) + { + btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_CFM_LIMLIN); + retVal = m_cfmLimLin; + } + else if(axis < 3) + { + btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_CFM_ORTLIN); + retVal = m_cfmOrthoLin; + } + else if(axis == 3) + { + btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_CFM_LIMANG); + retVal = m_cfmLimAng; + } + else if(axis < 6) + { + btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_CFM_ORTANG); + retVal = m_cfmOrthoAng; + } + else + { + btAssertConstrParams(0); + } + break; + } + return retVal; +} + + + diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btSliderConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btSliderConstraint.h new file mode 100644 index 00000000000..7d2a5022753 --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btSliderConstraint.h @@ -0,0 +1,321 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +/* +Added by Roman Ponomarev (rponom@gmail.com) +April 04, 2008 + +TODO: + - add clamping od accumulated impulse to improve stability + - add conversion for ODE constraint solver +*/ + +#ifndef SLIDER_CONSTRAINT_H +#define SLIDER_CONSTRAINT_H + + + +#include "LinearMath/btVector3.h" +#include "btJacobianEntry.h" +#include "btTypedConstraint.h" + + + +class btRigidBody; + + + +#define SLIDER_CONSTRAINT_DEF_SOFTNESS (btScalar(1.0)) +#define SLIDER_CONSTRAINT_DEF_DAMPING (btScalar(1.0)) +#define SLIDER_CONSTRAINT_DEF_RESTITUTION (btScalar(0.7)) +#define SLIDER_CONSTRAINT_DEF_CFM (btScalar(0.f)) + + +enum btSliderFlags +{ + BT_SLIDER_FLAGS_CFM_DIRLIN = (1 << 0), + BT_SLIDER_FLAGS_ERP_DIRLIN = (1 << 1), + BT_SLIDER_FLAGS_CFM_DIRANG = (1 << 2), + BT_SLIDER_FLAGS_ERP_DIRANG = (1 << 3), + BT_SLIDER_FLAGS_CFM_ORTLIN = (1 << 4), + BT_SLIDER_FLAGS_ERP_ORTLIN = (1 << 5), + BT_SLIDER_FLAGS_CFM_ORTANG = (1 << 6), + BT_SLIDER_FLAGS_ERP_ORTANG = (1 << 7), + BT_SLIDER_FLAGS_CFM_LIMLIN = (1 << 8), + BT_SLIDER_FLAGS_ERP_LIMLIN = (1 << 9), + BT_SLIDER_FLAGS_CFM_LIMANG = (1 << 10), + BT_SLIDER_FLAGS_ERP_LIMANG = (1 << 11) +}; + + +class btSliderConstraint : public btTypedConstraint +{ +protected: + ///for backwards compatibility during the transition to 'getInfo/getInfo2' + bool m_useSolveConstraintObsolete; + bool m_useOffsetForConstraintFrame; + btTransform m_frameInA; + btTransform m_frameInB; + // use frameA fo define limits, if true + bool m_useLinearReferenceFrameA; + // linear limits + btScalar m_lowerLinLimit; + btScalar m_upperLinLimit; + // angular limits + btScalar m_lowerAngLimit; + btScalar m_upperAngLimit; + // softness, restitution and damping for different cases + // DirLin - moving inside linear limits + // LimLin - hitting linear limit + // DirAng - moving inside angular limits + // LimAng - hitting angular limit + // OrthoLin, OrthoAng - against constraint axis + btScalar m_softnessDirLin; + btScalar m_restitutionDirLin; + btScalar m_dampingDirLin; + btScalar m_cfmDirLin; + + btScalar m_softnessDirAng; + btScalar m_restitutionDirAng; + btScalar m_dampingDirAng; + btScalar m_cfmDirAng; + + btScalar m_softnessLimLin; + btScalar m_restitutionLimLin; + btScalar m_dampingLimLin; + btScalar m_cfmLimLin; + + btScalar m_softnessLimAng; + btScalar m_restitutionLimAng; + btScalar m_dampingLimAng; + btScalar m_cfmLimAng; + + btScalar m_softnessOrthoLin; + btScalar m_restitutionOrthoLin; + btScalar m_dampingOrthoLin; + btScalar m_cfmOrthoLin; + + btScalar m_softnessOrthoAng; + btScalar m_restitutionOrthoAng; + btScalar m_dampingOrthoAng; + btScalar m_cfmOrthoAng; + + // for interlal use + bool m_solveLinLim; + bool m_solveAngLim; + + int m_flags; + + btJacobianEntry m_jacLin[3]; + btScalar m_jacLinDiagABInv[3]; + + btJacobianEntry m_jacAng[3]; + + btScalar m_timeStep; + btTransform m_calculatedTransformA; + btTransform m_calculatedTransformB; + + btVector3 m_sliderAxis; + btVector3 m_realPivotAInW; + btVector3 m_realPivotBInW; + btVector3 m_projPivotInW; + btVector3 m_delta; + btVector3 m_depth; + btVector3 m_relPosA; + btVector3 m_relPosB; + + btScalar m_linPos; + btScalar m_angPos; + + btScalar m_angDepth; + btScalar m_kAngle; + + bool m_poweredLinMotor; + btScalar m_targetLinMotorVelocity; + btScalar m_maxLinMotorForce; + btScalar m_accumulatedLinMotorImpulse; + + bool m_poweredAngMotor; + btScalar m_targetAngMotorVelocity; + btScalar m_maxAngMotorForce; + btScalar m_accumulatedAngMotorImpulse; + + //------------------------ + void initParams(); +public: + // constructors + btSliderConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA); + btSliderConstraint(btRigidBody& rbB, const btTransform& frameInB, bool useLinearReferenceFrameA); + + // overrides + + virtual void getInfo1 (btConstraintInfo1* info); + + void getInfo1NonVirtual(btConstraintInfo1* info); + + virtual void getInfo2 (btConstraintInfo2* info); + + void getInfo2NonVirtual(btConstraintInfo2* info, const btTransform& transA, const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB, btScalar rbAinvMass,btScalar rbBinvMass); + + + // access + const btRigidBody& getRigidBodyA() const { return m_rbA; } + const btRigidBody& getRigidBodyB() const { return m_rbB; } + const btTransform & getCalculatedTransformA() const { return m_calculatedTransformA; } + const btTransform & getCalculatedTransformB() const { return m_calculatedTransformB; } + const btTransform & getFrameOffsetA() const { return m_frameInA; } + const btTransform & getFrameOffsetB() const { return m_frameInB; } + btTransform & getFrameOffsetA() { return m_frameInA; } + btTransform & getFrameOffsetB() { return m_frameInB; } + btScalar getLowerLinLimit() { return m_lowerLinLimit; } + void setLowerLinLimit(btScalar lowerLimit) { m_lowerLinLimit = lowerLimit; } + btScalar getUpperLinLimit() { return m_upperLinLimit; } + void setUpperLinLimit(btScalar upperLimit) { m_upperLinLimit = upperLimit; } + btScalar getLowerAngLimit() { return m_lowerAngLimit; } + void setLowerAngLimit(btScalar lowerLimit) { m_lowerAngLimit = btNormalizeAngle(lowerLimit); } + btScalar getUpperAngLimit() { return m_upperAngLimit; } + void setUpperAngLimit(btScalar upperLimit) { m_upperAngLimit = btNormalizeAngle(upperLimit); } + bool getUseLinearReferenceFrameA() { return m_useLinearReferenceFrameA; } + btScalar getSoftnessDirLin() { return m_softnessDirLin; } + btScalar getRestitutionDirLin() { return m_restitutionDirLin; } + btScalar getDampingDirLin() { return m_dampingDirLin ; } + btScalar getSoftnessDirAng() { return m_softnessDirAng; } + btScalar getRestitutionDirAng() { return m_restitutionDirAng; } + btScalar getDampingDirAng() { return m_dampingDirAng; } + btScalar getSoftnessLimLin() { return m_softnessLimLin; } + btScalar getRestitutionLimLin() { return m_restitutionLimLin; } + btScalar getDampingLimLin() { return m_dampingLimLin; } + btScalar getSoftnessLimAng() { return m_softnessLimAng; } + btScalar getRestitutionLimAng() { return m_restitutionLimAng; } + btScalar getDampingLimAng() { return m_dampingLimAng; } + btScalar getSoftnessOrthoLin() { return m_softnessOrthoLin; } + btScalar getRestitutionOrthoLin() { return m_restitutionOrthoLin; } + btScalar getDampingOrthoLin() { return m_dampingOrthoLin; } + btScalar getSoftnessOrthoAng() { return m_softnessOrthoAng; } + btScalar getRestitutionOrthoAng() { return m_restitutionOrthoAng; } + btScalar getDampingOrthoAng() { return m_dampingOrthoAng; } + void setSoftnessDirLin(btScalar softnessDirLin) { m_softnessDirLin = softnessDirLin; } + void setRestitutionDirLin(btScalar restitutionDirLin) { m_restitutionDirLin = restitutionDirLin; } + void setDampingDirLin(btScalar dampingDirLin) { m_dampingDirLin = dampingDirLin; } + void setSoftnessDirAng(btScalar softnessDirAng) { m_softnessDirAng = softnessDirAng; } + void setRestitutionDirAng(btScalar restitutionDirAng) { m_restitutionDirAng = restitutionDirAng; } + void setDampingDirAng(btScalar dampingDirAng) { m_dampingDirAng = dampingDirAng; } + void setSoftnessLimLin(btScalar softnessLimLin) { m_softnessLimLin = softnessLimLin; } + void setRestitutionLimLin(btScalar restitutionLimLin) { m_restitutionLimLin = restitutionLimLin; } + void setDampingLimLin(btScalar dampingLimLin) { m_dampingLimLin = dampingLimLin; } + void setSoftnessLimAng(btScalar softnessLimAng) { m_softnessLimAng = softnessLimAng; } + void setRestitutionLimAng(btScalar restitutionLimAng) { m_restitutionLimAng = restitutionLimAng; } + void setDampingLimAng(btScalar dampingLimAng) { m_dampingLimAng = dampingLimAng; } + void setSoftnessOrthoLin(btScalar softnessOrthoLin) { m_softnessOrthoLin = softnessOrthoLin; } + void setRestitutionOrthoLin(btScalar restitutionOrthoLin) { m_restitutionOrthoLin = restitutionOrthoLin; } + void setDampingOrthoLin(btScalar dampingOrthoLin) { m_dampingOrthoLin = dampingOrthoLin; } + void setSoftnessOrthoAng(btScalar softnessOrthoAng) { m_softnessOrthoAng = softnessOrthoAng; } + void setRestitutionOrthoAng(btScalar restitutionOrthoAng) { m_restitutionOrthoAng = restitutionOrthoAng; } + void setDampingOrthoAng(btScalar dampingOrthoAng) { m_dampingOrthoAng = dampingOrthoAng; } + void setPoweredLinMotor(bool onOff) { m_poweredLinMotor = onOff; } + bool getPoweredLinMotor() { return m_poweredLinMotor; } + void setTargetLinMotorVelocity(btScalar targetLinMotorVelocity) { m_targetLinMotorVelocity = targetLinMotorVelocity; } + btScalar getTargetLinMotorVelocity() { return m_targetLinMotorVelocity; } + void setMaxLinMotorForce(btScalar maxLinMotorForce) { m_maxLinMotorForce = maxLinMotorForce; } + btScalar getMaxLinMotorForce() { return m_maxLinMotorForce; } + void setPoweredAngMotor(bool onOff) { m_poweredAngMotor = onOff; } + bool getPoweredAngMotor() { return m_poweredAngMotor; } + void setTargetAngMotorVelocity(btScalar targetAngMotorVelocity) { m_targetAngMotorVelocity = targetAngMotorVelocity; } + btScalar getTargetAngMotorVelocity() { return m_targetAngMotorVelocity; } + void setMaxAngMotorForce(btScalar maxAngMotorForce) { m_maxAngMotorForce = maxAngMotorForce; } + btScalar getMaxAngMotorForce() { return m_maxAngMotorForce; } + btScalar getLinearPos() { return m_linPos; } + + + // access for ODE solver + bool getSolveLinLimit() { return m_solveLinLim; } + btScalar getLinDepth() { return m_depth[0]; } + bool getSolveAngLimit() { return m_solveAngLim; } + btScalar getAngDepth() { return m_angDepth; } + // shared code used by ODE solver + void calculateTransforms(const btTransform& transA,const btTransform& transB); + void testLinLimits(); + void testAngLimits(); + // access for PE Solver + btVector3 getAncorInA(); + btVector3 getAncorInB(); + // access for UseFrameOffset + bool getUseFrameOffset() { return m_useOffsetForConstraintFrame; } + void setUseFrameOffset(bool frameOffsetOnOff) { m_useOffsetForConstraintFrame = frameOffsetOnOff; } + + ///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). + ///If no axis is provided, it uses the default axis for this constraint. + virtual void setParam(int num, btScalar value, int axis = -1); + ///return the local value of parameter + virtual btScalar getParam(int num, int axis = -1) const; + + virtual int calculateSerializeBufferSize() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; + + +}; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btSliderConstraintData +{ + btTypedConstraintData m_typeConstraintData; + btTransformFloatData m_rbAFrame; // constraint axii. Assumes z is hinge axis. + btTransformFloatData m_rbBFrame; + + float m_linearUpperLimit; + float m_linearLowerLimit; + + float m_angularUpperLimit; + float m_angularLowerLimit; + + int m_useLinearReferenceFrameA; + int m_useOffsetForConstraintFrame; + +}; + + +SIMD_FORCE_INLINE int btSliderConstraint::calculateSerializeBufferSize() const +{ + return sizeof(btSliderConstraintData); +} + + ///fills the dataBuffer and returns the struct name (and 0 on failure) +SIMD_FORCE_INLINE const char* btSliderConstraint::serialize(void* dataBuffer, btSerializer* serializer) const +{ + + btSliderConstraintData* sliderData = (btSliderConstraintData*) dataBuffer; + btTypedConstraint::serialize(&sliderData->m_typeConstraintData,serializer); + + m_frameInA.serializeFloat(sliderData->m_rbAFrame); + m_frameInB.serializeFloat(sliderData->m_rbBFrame); + + sliderData->m_linearUpperLimit = float(m_upperLinLimit); + sliderData->m_linearLowerLimit = float(m_lowerLinLimit); + + sliderData->m_angularUpperLimit = float(m_upperAngLimit); + sliderData->m_angularLowerLimit = float(m_lowerAngLimit); + + sliderData->m_useLinearReferenceFrameA = m_useLinearReferenceFrameA; + sliderData->m_useOffsetForConstraintFrame = m_useOffsetForConstraintFrame; + + return "btSliderConstraintData"; +} + + + +#endif //SLIDER_CONSTRAINT_H + diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp new file mode 100644 index 00000000000..0c7dbd668bb --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp @@ -0,0 +1,255 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#include "btSolve2LinearConstraint.h" + +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include "LinearMath/btVector3.h" +#include "btJacobianEntry.h" + + +void btSolve2LinearConstraint::resolveUnilateralPairConstraint( + btRigidBody* body1, + btRigidBody* body2, + + const btMatrix3x3& world2A, + const btMatrix3x3& world2B, + + const btVector3& invInertiaADiag, + const btScalar invMassA, + const btVector3& linvelA,const btVector3& angvelA, + const btVector3& rel_posA1, + const btVector3& invInertiaBDiag, + const btScalar invMassB, + const btVector3& linvelB,const btVector3& angvelB, + const btVector3& rel_posA2, + + btScalar depthA, const btVector3& normalA, + const btVector3& rel_posB1,const btVector3& rel_posB2, + btScalar depthB, const btVector3& normalB, + btScalar& imp0,btScalar& imp1) +{ + (void)linvelA; + (void)linvelB; + (void)angvelB; + (void)angvelA; + + + + imp0 = btScalar(0.); + imp1 = btScalar(0.); + + btScalar len = btFabs(normalA.length()) - btScalar(1.); + if (btFabs(len) >= SIMD_EPSILON) + return; + + btAssert(len < SIMD_EPSILON); + + + //this jacobian entry could be re-used for all iterations + btJacobianEntry jacA(world2A,world2B,rel_posA1,rel_posA2,normalA,invInertiaADiag,invMassA, + invInertiaBDiag,invMassB); + btJacobianEntry jacB(world2A,world2B,rel_posB1,rel_posB2,normalB,invInertiaADiag,invMassA, + invInertiaBDiag,invMassB); + + //const btScalar vel0 = jacA.getRelativeVelocity(linvelA,angvelA,linvelB,angvelB); + //const btScalar vel1 = jacB.getRelativeVelocity(linvelA,angvelA,linvelB,angvelB); + + const btScalar vel0 = normalA.dot(body1->getVelocityInLocalPoint(rel_posA1)-body2->getVelocityInLocalPoint(rel_posA1)); + const btScalar vel1 = normalB.dot(body1->getVelocityInLocalPoint(rel_posB1)-body2->getVelocityInLocalPoint(rel_posB1)); + +// btScalar penetrationImpulse = (depth*contactTau*timeCorrection) * massTerm;//jacDiagABInv + btScalar massTerm = btScalar(1.) / (invMassA + invMassB); + + + // calculate rhs (or error) terms + const btScalar dv0 = depthA * m_tau * massTerm - vel0 * m_damping; + const btScalar dv1 = depthB * m_tau * massTerm - vel1 * m_damping; + + + // dC/dv * dv = -C + + // jacobian * impulse = -error + // + + //impulse = jacobianInverse * -error + + // inverting 2x2 symmetric system (offdiagonal are equal!) + // + + + btScalar nonDiag = jacA.getNonDiagonal(jacB,invMassA,invMassB); + btScalar invDet = btScalar(1.0) / (jacA.getDiagonal() * jacB.getDiagonal() - nonDiag * nonDiag ); + + //imp0 = dv0 * jacA.getDiagonal() * invDet + dv1 * -nonDiag * invDet; + //imp1 = dv1 * jacB.getDiagonal() * invDet + dv0 * - nonDiag * invDet; + + imp0 = dv0 * jacA.getDiagonal() * invDet + dv1 * -nonDiag * invDet; + imp1 = dv1 * jacB.getDiagonal() * invDet + dv0 * - nonDiag * invDet; + + //[a b] [d -c] + //[c d] inverse = (1 / determinant) * [-b a] where determinant is (ad - bc) + + //[jA nD] * [imp0] = [dv0] + //[nD jB] [imp1] [dv1] + +} + + + +void btSolve2LinearConstraint::resolveBilateralPairConstraint( + btRigidBody* body1, + btRigidBody* body2, + const btMatrix3x3& world2A, + const btMatrix3x3& world2B, + + const btVector3& invInertiaADiag, + const btScalar invMassA, + const btVector3& linvelA,const btVector3& angvelA, + const btVector3& rel_posA1, + const btVector3& invInertiaBDiag, + const btScalar invMassB, + const btVector3& linvelB,const btVector3& angvelB, + const btVector3& rel_posA2, + + btScalar depthA, const btVector3& normalA, + const btVector3& rel_posB1,const btVector3& rel_posB2, + btScalar depthB, const btVector3& normalB, + btScalar& imp0,btScalar& imp1) +{ + + (void)linvelA; + (void)linvelB; + (void)angvelA; + (void)angvelB; + + + + imp0 = btScalar(0.); + imp1 = btScalar(0.); + + btScalar len = btFabs(normalA.length()) - btScalar(1.); + if (btFabs(len) >= SIMD_EPSILON) + return; + + btAssert(len < SIMD_EPSILON); + + + //this jacobian entry could be re-used for all iterations + btJacobianEntry jacA(world2A,world2B,rel_posA1,rel_posA2,normalA,invInertiaADiag,invMassA, + invInertiaBDiag,invMassB); + btJacobianEntry jacB(world2A,world2B,rel_posB1,rel_posB2,normalB,invInertiaADiag,invMassA, + invInertiaBDiag,invMassB); + + //const btScalar vel0 = jacA.getRelativeVelocity(linvelA,angvelA,linvelB,angvelB); + //const btScalar vel1 = jacB.getRelativeVelocity(linvelA,angvelA,linvelB,angvelB); + + const btScalar vel0 = normalA.dot(body1->getVelocityInLocalPoint(rel_posA1)-body2->getVelocityInLocalPoint(rel_posA1)); + const btScalar vel1 = normalB.dot(body1->getVelocityInLocalPoint(rel_posB1)-body2->getVelocityInLocalPoint(rel_posB1)); + + // calculate rhs (or error) terms + const btScalar dv0 = depthA * m_tau - vel0 * m_damping; + const btScalar dv1 = depthB * m_tau - vel1 * m_damping; + + // dC/dv * dv = -C + + // jacobian * impulse = -error + // + + //impulse = jacobianInverse * -error + + // inverting 2x2 symmetric system (offdiagonal are equal!) + // + + + btScalar nonDiag = jacA.getNonDiagonal(jacB,invMassA,invMassB); + btScalar invDet = btScalar(1.0) / (jacA.getDiagonal() * jacB.getDiagonal() - nonDiag * nonDiag ); + + //imp0 = dv0 * jacA.getDiagonal() * invDet + dv1 * -nonDiag * invDet; + //imp1 = dv1 * jacB.getDiagonal() * invDet + dv0 * - nonDiag * invDet; + + imp0 = dv0 * jacA.getDiagonal() * invDet + dv1 * -nonDiag * invDet; + imp1 = dv1 * jacB.getDiagonal() * invDet + dv0 * - nonDiag * invDet; + + //[a b] [d -c] + //[c d] inverse = (1 / determinant) * [-b a] where determinant is (ad - bc) + + //[jA nD] * [imp0] = [dv0] + //[nD jB] [imp1] [dv1] + + if ( imp0 > btScalar(0.0)) + { + if ( imp1 > btScalar(0.0) ) + { + //both positive + } + else + { + imp1 = btScalar(0.); + + // now imp0>0 imp1<0 + imp0 = dv0 / jacA.getDiagonal(); + if ( imp0 > btScalar(0.0) ) + { + } else + { + imp0 = btScalar(0.); + } + } + } + else + { + imp0 = btScalar(0.); + + imp1 = dv1 / jacB.getDiagonal(); + if ( imp1 <= btScalar(0.0) ) + { + imp1 = btScalar(0.); + // now imp0>0 imp1<0 + imp0 = dv0 / jacA.getDiagonal(); + if ( imp0 > btScalar(0.0) ) + { + } else + { + imp0 = btScalar(0.); + } + } else + { + } + } +} + + +/* +void btSolve2LinearConstraint::resolveAngularConstraint( const btMatrix3x3& invInertiaAWS, + const btScalar invMassA, + const btVector3& linvelA,const btVector3& angvelA, + const btVector3& rel_posA1, + const btMatrix3x3& invInertiaBWS, + const btScalar invMassB, + const btVector3& linvelB,const btVector3& angvelB, + const btVector3& rel_posA2, + + btScalar depthA, const btVector3& normalA, + const btVector3& rel_posB1,const btVector3& rel_posB2, + btScalar depthB, const btVector3& normalB, + btScalar& imp0,btScalar& imp1) +{ + +} +*/ + diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h new file mode 100644 index 00000000000..057d3fac827 --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h @@ -0,0 +1,107 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SOLVE_2LINEAR_CONSTRAINT_H +#define SOLVE_2LINEAR_CONSTRAINT_H + +#include "LinearMath/btMatrix3x3.h" +#include "LinearMath/btVector3.h" + + +class btRigidBody; + + + +/// constraint class used for lateral tyre friction. +class btSolve2LinearConstraint +{ + btScalar m_tau; + btScalar m_damping; + +public: + + btSolve2LinearConstraint(btScalar tau,btScalar damping) + { + m_tau = tau; + m_damping = damping; + } + // + // solve unilateral constraint (equality, direct method) + // + void resolveUnilateralPairConstraint( + btRigidBody* body0, + btRigidBody* body1, + + const btMatrix3x3& world2A, + const btMatrix3x3& world2B, + + const btVector3& invInertiaADiag, + const btScalar invMassA, + const btVector3& linvelA,const btVector3& angvelA, + const btVector3& rel_posA1, + const btVector3& invInertiaBDiag, + const btScalar invMassB, + const btVector3& linvelB,const btVector3& angvelB, + const btVector3& rel_posA2, + + btScalar depthA, const btVector3& normalA, + const btVector3& rel_posB1,const btVector3& rel_posB2, + btScalar depthB, const btVector3& normalB, + btScalar& imp0,btScalar& imp1); + + + // + // solving 2x2 lcp problem (inequality, direct solution ) + // + void resolveBilateralPairConstraint( + btRigidBody* body0, + btRigidBody* body1, + const btMatrix3x3& world2A, + const btMatrix3x3& world2B, + + const btVector3& invInertiaADiag, + const btScalar invMassA, + const btVector3& linvelA,const btVector3& angvelA, + const btVector3& rel_posA1, + const btVector3& invInertiaBDiag, + const btScalar invMassB, + const btVector3& linvelB,const btVector3& angvelB, + const btVector3& rel_posA2, + + btScalar depthA, const btVector3& normalA, + const btVector3& rel_posB1,const btVector3& rel_posB2, + btScalar depthB, const btVector3& normalB, + btScalar& imp0,btScalar& imp1); + +/* + void resolveAngularConstraint( const btMatrix3x3& invInertiaAWS, + const btScalar invMassA, + const btVector3& linvelA,const btVector3& angvelA, + const btVector3& rel_posA1, + const btMatrix3x3& invInertiaBWS, + const btScalar invMassB, + const btVector3& linvelB,const btVector3& angvelB, + const btVector3& rel_posA2, + + btScalar depthA, const btVector3& normalA, + const btVector3& rel_posB1,const btVector3& rel_posB2, + btScalar depthB, const btVector3& normalB, + btScalar& imp0,btScalar& imp1); + +*/ + +}; + +#endif //SOLVE_2LINEAR_CONSTRAINT_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btSolverBody.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btSolverBody.h new file mode 100644 index 00000000000..8de515812ee --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btSolverBody.h @@ -0,0 +1,191 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_SOLVER_BODY_H +#define BT_SOLVER_BODY_H + +class btRigidBody; +#include "LinearMath/btVector3.h" +#include "LinearMath/btMatrix3x3.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include "LinearMath/btAlignedAllocator.h" +#include "LinearMath/btTransformUtil.h" + +///Until we get other contributions, only use SIMD on Windows, when using Visual Studio 2008 or later, and not double precision +#ifdef BT_USE_SSE +#define USE_SIMD 1 +#endif // + + +#ifdef USE_SIMD + +struct btSimdScalar +{ + SIMD_FORCE_INLINE btSimdScalar() + { + + } + + SIMD_FORCE_INLINE btSimdScalar(float fl) + :m_vec128 (_mm_set1_ps(fl)) + { + } + + SIMD_FORCE_INLINE btSimdScalar(__m128 v128) + :m_vec128(v128) + { + } + union + { + __m128 m_vec128; + float m_floats[4]; + int m_ints[4]; + btScalar m_unusedPadding; + }; + SIMD_FORCE_INLINE __m128 get128() + { + return m_vec128; + } + + SIMD_FORCE_INLINE const __m128 get128() const + { + return m_vec128; + } + + SIMD_FORCE_INLINE void set128(__m128 v128) + { + m_vec128 = v128; + } + + SIMD_FORCE_INLINE operator __m128() + { + return m_vec128; + } + SIMD_FORCE_INLINE operator const __m128() const + { + return m_vec128; + } + + SIMD_FORCE_INLINE operator float() const + { + return m_floats[0]; + } + +}; + +///@brief Return the elementwise product of two btSimdScalar +SIMD_FORCE_INLINE btSimdScalar +operator*(const btSimdScalar& v1, const btSimdScalar& v2) +{ + return btSimdScalar(_mm_mul_ps(v1.get128(),v2.get128())); +} + +///@brief Return the elementwise product of two btSimdScalar +SIMD_FORCE_INLINE btSimdScalar +operator+(const btSimdScalar& v1, const btSimdScalar& v2) +{ + return btSimdScalar(_mm_add_ps(v1.get128(),v2.get128())); +} + + +#else +#define btSimdScalar btScalar +#endif + +///The btSolverBody is an internal datastructure for the constraint solver. Only necessary data is packed to increase cache coherence/performance. +ATTRIBUTE_ALIGNED64 (struct) btSolverBodyObsolete +{ + BT_DECLARE_ALIGNED_ALLOCATOR(); + btVector3 m_deltaLinearVelocity; + btVector3 m_deltaAngularVelocity; + btVector3 m_angularFactor; + btVector3 m_invMass; + btRigidBody* m_originalBody; + btVector3 m_pushVelocity; + btVector3 m_turnVelocity; + + + SIMD_FORCE_INLINE void getVelocityInLocalPointObsolete(const btVector3& rel_pos, btVector3& velocity ) const + { + if (m_originalBody) + velocity = m_originalBody->getLinearVelocity()+m_deltaLinearVelocity + (m_originalBody->getAngularVelocity()+m_deltaAngularVelocity).cross(rel_pos); + else + velocity.setValue(0,0,0); + } + + SIMD_FORCE_INLINE void getAngularVelocity(btVector3& angVel) const + { + if (m_originalBody) + angVel = m_originalBody->getAngularVelocity()+m_deltaAngularVelocity; + else + angVel.setValue(0,0,0); + } + + + //Optimization for the iterative solver: avoid calculating constant terms involving inertia, normal, relative position + SIMD_FORCE_INLINE void applyImpulse(const btVector3& linearComponent, const btVector3& angularComponent,const btScalar impulseMagnitude) + { + //if (m_invMass) + { + m_deltaLinearVelocity += linearComponent*impulseMagnitude; + m_deltaAngularVelocity += angularComponent*(impulseMagnitude*m_angularFactor); + } + } + + SIMD_FORCE_INLINE void internalApplyPushImpulse(const btVector3& linearComponent, const btVector3& angularComponent,btScalar impulseMagnitude) + { + if (m_originalBody) + { + m_pushVelocity += linearComponent*impulseMagnitude; + m_turnVelocity += angularComponent*(impulseMagnitude*m_angularFactor); + } + } + + void writebackVelocity() + { + if (m_originalBody) + { + m_originalBody->setLinearVelocity(m_originalBody->getLinearVelocity()+ m_deltaLinearVelocity); + m_originalBody->setAngularVelocity(m_originalBody->getAngularVelocity()+m_deltaAngularVelocity); + + //m_originalBody->setCompanionId(-1); + } + } + + + void writebackVelocity(btScalar timeStep) + { + (void) timeStep; + if (m_originalBody) + { + m_originalBody->setLinearVelocity(m_originalBody->getLinearVelocity()+ m_deltaLinearVelocity); + m_originalBody->setAngularVelocity(m_originalBody->getAngularVelocity()+m_deltaAngularVelocity); + + //correct the position/orientation based on push/turn recovery + btTransform newTransform; + btTransformUtil::integrateTransform(m_originalBody->getWorldTransform(),m_pushVelocity,m_turnVelocity,timeStep,newTransform); + m_originalBody->setWorldTransform(newTransform); + + //m_originalBody->setCompanionId(-1); + } + } + + + +}; + +#endif //BT_SOLVER_BODY_H + + diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btSolverConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btSolverConstraint.h new file mode 100644 index 00000000000..929cf6d3ee3 --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btSolverConstraint.h @@ -0,0 +1,96 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_SOLVER_CONSTRAINT_H +#define BT_SOLVER_CONSTRAINT_H + +class btRigidBody; +#include "LinearMath/btVector3.h" +#include "LinearMath/btMatrix3x3.h" +#include "btJacobianEntry.h" + +//#define NO_FRICTION_TANGENTIALS 1 +#include "btSolverBody.h" + + +///1D constraint along a normal axis between bodyA and bodyB. It can be combined to solve contact and friction constraints. +ATTRIBUTE_ALIGNED64 (struct) btSolverConstraint +{ + BT_DECLARE_ALIGNED_ALLOCATOR(); + + btVector3 m_relpos1CrossNormal; + btVector3 m_contactNormal; + + btVector3 m_relpos2CrossNormal; + //btVector3 m_contactNormal2;//usually m_contactNormal2 == -m_contactNormal + + btVector3 m_angularComponentA; + btVector3 m_angularComponentB; + + mutable btSimdScalar m_appliedPushImpulse; + mutable btSimdScalar m_appliedImpulse; + + + btScalar m_friction; + btScalar m_jacDiagABInv; + union + { + int m_numConsecutiveRowsPerKernel; + btScalar m_unusedPadding0; + }; + + union + { + int m_frictionIndex; + btScalar m_unusedPadding1; + }; + union + { + btRigidBody* m_solverBodyA; + btScalar m_unusedPadding2; + }; + union + { + btRigidBody* m_solverBodyB; + btScalar m_unusedPadding3; + }; + + union + { + void* m_originalContactPoint; + btScalar m_unusedPadding4; + }; + + btScalar m_rhs; + btScalar m_cfm; + btScalar m_lowerLimit; + btScalar m_upperLimit; + + btScalar m_rhsPenetration; + + enum btSolverConstraintType + { + BT_SOLVER_CONTACT_1D = 0, + BT_SOLVER_FRICTION_1D + }; +}; + +typedef btAlignedObjectArray btConstraintArray; + + +#endif //BT_SOLVER_CONSTRAINT_H + + + diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp new file mode 100644 index 00000000000..e7c94b19308 --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp @@ -0,0 +1,136 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btTypedConstraint.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include "LinearMath/btSerializer.h" + + +#define DEFAULT_DEBUGDRAW_SIZE btScalar(0.3f) + +btTypedConstraint::btTypedConstraint(btTypedConstraintType type, btRigidBody& rbA) +:btTypedObject(type), +m_userConstraintType(-1), +m_userConstraintId(-1), +m_needsFeedback(false), +m_rbA(rbA), +m_rbB(getFixedBody()), +m_appliedImpulse(btScalar(0.)), +m_dbgDrawSize(DEFAULT_DEBUGDRAW_SIZE) +{ +} + + +btTypedConstraint::btTypedConstraint(btTypedConstraintType type, btRigidBody& rbA,btRigidBody& rbB) +:btTypedObject(type), +m_userConstraintType(-1), +m_userConstraintId(-1), +m_needsFeedback(false), +m_rbA(rbA), +m_rbB(rbB), +m_appliedImpulse(btScalar(0.)), +m_dbgDrawSize(DEFAULT_DEBUGDRAW_SIZE) +{ +} + + + + +btScalar btTypedConstraint::getMotorFactor(btScalar pos, btScalar lowLim, btScalar uppLim, btScalar vel, btScalar timeFact) +{ + if(lowLim > uppLim) + { + return btScalar(1.0f); + } + else if(lowLim == uppLim) + { + return btScalar(0.0f); + } + btScalar lim_fact = btScalar(1.0f); + btScalar delta_max = vel / timeFact; + if(delta_max < btScalar(0.0f)) + { + if((pos >= lowLim) && (pos < (lowLim - delta_max))) + { + lim_fact = (lowLim - pos) / delta_max; + } + else if(pos < lowLim) + { + lim_fact = btScalar(0.0f); + } + else + { + lim_fact = btScalar(1.0f); + } + } + else if(delta_max > btScalar(0.0f)) + { + if((pos <= uppLim) && (pos > (uppLim - delta_max))) + { + lim_fact = (uppLim - pos) / delta_max; + } + else if(pos > uppLim) + { + lim_fact = btScalar(0.0f); + } + else + { + lim_fact = btScalar(1.0f); + } + } + else + { + lim_fact = btScalar(0.0f); + } + return lim_fact; +} + +///fills the dataBuffer and returns the struct name (and 0 on failure) +const char* btTypedConstraint::serialize(void* dataBuffer, btSerializer* serializer) const +{ + btTypedConstraintData* tcd = (btTypedConstraintData*) dataBuffer; + + tcd->m_rbA = (btRigidBodyData*)serializer->getUniquePointer(&m_rbA); + tcd->m_rbB = (btRigidBodyData*)serializer->getUniquePointer(&m_rbB); + char* name = (char*) serializer->findNameForPointer(this); + tcd->m_name = (char*)serializer->getUniquePointer(name); + if (tcd->m_name) + { + serializer->serializeName(name); + } + + tcd->m_objectType = m_objectType; + tcd->m_needsFeedback = m_needsFeedback; + tcd->m_userConstraintId =m_userConstraintId; + tcd->m_userConstraintType =m_userConstraintType; + + tcd->m_appliedImpulse = float(m_appliedImpulse); + tcd->m_dbgDrawSize = float(m_dbgDrawSize ); + + tcd->m_disableCollisionsBetweenLinkedBodies = false; + + int i; + for (i=0;im_disableCollisionsBetweenLinkedBodies = true; + for (i=0;im_disableCollisionsBetweenLinkedBodies = true; + + return "btTypedConstraintData"; +} + + diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btTypedConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btTypedConstraint.h new file mode 100644 index 00000000000..b24dc4a40ed --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btTypedConstraint.h @@ -0,0 +1,302 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2010 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef TYPED_CONSTRAINT_H +#define TYPED_CONSTRAINT_H + +class btRigidBody; +#include "LinearMath/btScalar.h" +#include "btSolverConstraint.h" +#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" + +class btSerializer; + +enum btTypedConstraintType +{ + POINT2POINT_CONSTRAINT_TYPE=MAX_CONTACT_MANIFOLD_TYPE+1, + HINGE_CONSTRAINT_TYPE, + CONETWIST_CONSTRAINT_TYPE, + D6_CONSTRAINT_TYPE, + SLIDER_CONSTRAINT_TYPE, + CONTACT_CONSTRAINT_TYPE +}; + + +enum btConstraintParams +{ + BT_CONSTRAINT_ERP=1, + BT_CONSTRAINT_STOP_ERP, + BT_CONSTRAINT_CFM, + BT_CONSTRAINT_STOP_CFM +}; + +#if 1 + #define btAssertConstrParams(_par) btAssert(_par) +#else + #define btAssertConstrParams(_par) +#endif + + +///TypedConstraint is the baseclass for Bullet constraints and vehicles +class btTypedConstraint : public btTypedObject +{ + int m_userConstraintType; + int m_userConstraintId; + bool m_needsFeedback; + + btTypedConstraint& operator=(btTypedConstraint& other) + { + btAssert(0); + (void) other; + return *this; + } + +protected: + btRigidBody& m_rbA; + btRigidBody& m_rbB; + btScalar m_appliedImpulse; + btScalar m_dbgDrawSize; + + ///internal method used by the constraint solver, don't use them directly + btScalar getMotorFactor(btScalar pos, btScalar lowLim, btScalar uppLim, btScalar vel, btScalar timeFact); + + static btRigidBody& getFixedBody() + { + static btRigidBody s_fixed(0, 0,0); + s_fixed.setMassProps(btScalar(0.),btVector3(btScalar(0.),btScalar(0.),btScalar(0.))); + return s_fixed; + } + + +public: + + virtual ~btTypedConstraint() {}; + btTypedConstraint(btTypedConstraintType type, btRigidBody& rbA); + btTypedConstraint(btTypedConstraintType type, btRigidBody& rbA,btRigidBody& rbB); + + struct btConstraintInfo1 { + int m_numConstraintRows,nub; + }; + + struct btConstraintInfo2 { + // integrator parameters: frames per second (1/stepsize), default error + // reduction parameter (0..1). + btScalar fps,erp; + + // for the first and second body, pointers to two (linear and angular) + // n*3 jacobian sub matrices, stored by rows. these matrices will have + // been initialized to 0 on entry. if the second body is zero then the + // J2xx pointers may be 0. + btScalar *m_J1linearAxis,*m_J1angularAxis,*m_J2linearAxis,*m_J2angularAxis; + + // elements to jump from one row to the next in J's + int rowskip; + + // right hand sides of the equation J*v = c + cfm * lambda. cfm is the + // "constraint force mixing" vector. c is set to zero on entry, cfm is + // set to a constant value (typically very small or zero) value on entry. + btScalar *m_constraintError,*cfm; + + // lo and hi limits for variables (set to -/+ infinity on entry). + btScalar *m_lowerLimit,*m_upperLimit; + + // findex vector for variables. see the LCP solver interface for a + // description of what this does. this is set to -1 on entry. + // note that the returned indexes are relative to the first index of + // the constraint. + int *findex; + // number of solver iterations + int m_numIterations; + }; + + ///internal method used by the constraint solver, don't use them directly + virtual void buildJacobian() {}; + + ///internal method used by the constraint solver, don't use them directly + virtual void setupSolverConstraint(btConstraintArray& ca, int solverBodyA,int solverBodyB, btScalar timeStep) + { + (void)ca; + (void)solverBodyA; + (void)solverBodyB; + (void)timeStep; + } + + ///internal method used by the constraint solver, don't use them directly + virtual void getInfo1 (btConstraintInfo1* info)=0; + + ///internal method used by the constraint solver, don't use them directly + virtual void getInfo2 (btConstraintInfo2* info)=0; + + ///internal method used by the constraint solver, don't use them directly + void internalSetAppliedImpulse(btScalar appliedImpulse) + { + m_appliedImpulse = appliedImpulse; + } + ///internal method used by the constraint solver, don't use them directly + btScalar internalGetAppliedImpulse() + { + return m_appliedImpulse; + } + + ///internal method used by the constraint solver, don't use them directly + virtual void solveConstraintObsolete(btRigidBody& bodyA,btRigidBody& bodyB,btScalar timeStep) {}; + + + const btRigidBody& getRigidBodyA() const + { + return m_rbA; + } + const btRigidBody& getRigidBodyB() const + { + return m_rbB; + } + + btRigidBody& getRigidBodyA() + { + return m_rbA; + } + btRigidBody& getRigidBodyB() + { + return m_rbB; + } + + int getUserConstraintType() const + { + return m_userConstraintType ; + } + + void setUserConstraintType(int userConstraintType) + { + m_userConstraintType = userConstraintType; + }; + + void setUserConstraintId(int uid) + { + m_userConstraintId = uid; + } + + int getUserConstraintId() const + { + return m_userConstraintId; + } + + int getUid() const + { + return m_userConstraintId; + } + + bool needsFeedback() const + { + return m_needsFeedback; + } + + ///enableFeedback will allow to read the applied linear and angular impulse + ///use getAppliedImpulse, getAppliedLinearImpulse and getAppliedAngularImpulse to read feedback information + void enableFeedback(bool needsFeedback) + { + m_needsFeedback = needsFeedback; + } + + ///getAppliedImpulse is an estimated total applied impulse. + ///This feedback could be used to determine breaking constraints or playing sounds. + btScalar getAppliedImpulse() const + { + btAssert(m_needsFeedback); + return m_appliedImpulse; + } + + btTypedConstraintType getConstraintType () const + { + return btTypedConstraintType(m_objectType); + } + + void setDbgDrawSize(btScalar dbgDrawSize) + { + m_dbgDrawSize = dbgDrawSize; + } + btScalar getDbgDrawSize() + { + return m_dbgDrawSize; + } + + ///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). + ///If no axis is provided, it uses the default axis for this constraint. + virtual void setParam(int num, btScalar value, int axis = -1) = 0; + + ///return the local value of parameter + virtual btScalar getParam(int num, int axis = -1) const = 0; + + virtual int calculateSerializeBufferSize() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; + +}; + +// returns angle in range [-SIMD_2_PI, SIMD_2_PI], closest to one of the limits +// all arguments should be normalized angles (i.e. in range [-SIMD_PI, SIMD_PI]) +SIMD_FORCE_INLINE btScalar btAdjustAngleToLimits(btScalar angleInRadians, btScalar angleLowerLimitInRadians, btScalar angleUpperLimitInRadians) +{ + if(angleLowerLimitInRadians >= angleUpperLimitInRadians) + { + return angleInRadians; + } + else if(angleInRadians < angleLowerLimitInRadians) + { + btScalar diffLo = btNormalizeAngle(angleLowerLimitInRadians - angleInRadians); // this is positive + btScalar diffHi = btFabs(btNormalizeAngle(angleUpperLimitInRadians - angleInRadians)); + return (diffLo < diffHi) ? angleInRadians : (angleInRadians + SIMD_2_PI); + } + else if(angleInRadians > angleUpperLimitInRadians) + { + btScalar diffHi = btNormalizeAngle(angleInRadians - angleUpperLimitInRadians); // this is positive + btScalar diffLo = btFabs(btNormalizeAngle(angleInRadians - angleLowerLimitInRadians)); + return (diffLo < diffHi) ? (angleInRadians - SIMD_2_PI) : angleInRadians; + } + else + { + return angleInRadians; + } +} + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btTypedConstraintData +{ + btRigidBodyData *m_rbA; + btRigidBodyData *m_rbB; + char *m_name; + + int m_objectType; + int m_userConstraintType; + int m_userConstraintId; + int m_needsFeedback; + + float m_appliedImpulse; + float m_dbgDrawSize; + + int m_disableCollisionsBetweenLinkedBodies; + char m_pad4[4]; + +}; + +SIMD_FORCE_INLINE int btTypedConstraint::calculateSerializeBufferSize() const +{ + return sizeof(btTypedConstraintData); +} + + + + +#endif //TYPED_CONSTRAINT_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp new file mode 100644 index 00000000000..3a4c2afa642 --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp @@ -0,0 +1,63 @@ +/* +Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org +Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#include "btUniversalConstraint.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include "LinearMath/btTransformUtil.h" + + + +#define UNIV_EPS btScalar(0.01f) + + +// constructor +// anchor, axis1 and axis2 are in world coordinate system +// axis1 must be orthogonal to axis2 +btUniversalConstraint::btUniversalConstraint(btRigidBody& rbA, btRigidBody& rbB, btVector3& anchor, btVector3& axis1, btVector3& axis2) +: btGeneric6DofConstraint(rbA, rbB, btTransform::getIdentity(), btTransform::getIdentity(), true), + m_anchor(anchor), + m_axis1(axis1), + m_axis2(axis2) +{ + // build frame basis + // 6DOF constraint uses Euler angles and to define limits + // it is assumed that rotational order is : + // Z - first, allowed limits are (-PI,PI); + // new position of Y - second (allowed limits are (-PI/2 + epsilon, PI/2 - epsilon), where epsilon is a small positive number + // used to prevent constraint from instability on poles; + // new position of X, allowed limits are (-PI,PI); + // So to simulate ODE Universal joint we should use parent axis as Z, child axis as Y and limit all other DOFs + // Build the frame in world coordinate system first + btVector3 zAxis = axis1.normalize(); + btVector3 yAxis = axis2.normalize(); + btVector3 xAxis = yAxis.cross(zAxis); // we want right coordinate system + btTransform frameInW; + frameInW.setIdentity(); + frameInW.getBasis().setValue( xAxis[0], yAxis[0], zAxis[0], + xAxis[1], yAxis[1], zAxis[1], + xAxis[2], yAxis[2], zAxis[2]); + frameInW.setOrigin(anchor); + // now get constraint frame in local coordinate systems + m_frameInA = rbA.getCenterOfMassTransform().inverse() * frameInW; + m_frameInB = rbB.getCenterOfMassTransform().inverse() * frameInW; + // sei limits + setLinearLowerLimit(btVector3(0., 0., 0.)); + setLinearUpperLimit(btVector3(0., 0., 0.)); + setAngularLowerLimit(btVector3(0.f, -SIMD_HALF_PI + UNIV_EPS, -SIMD_PI + UNIV_EPS)); + setAngularUpperLimit(btVector3(0.f, SIMD_HALF_PI - UNIV_EPS, SIMD_PI - UNIV_EPS)); +} + diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btUniversalConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btUniversalConstraint.h new file mode 100644 index 00000000000..4e64a7d7e0e --- /dev/null +++ b/extern/bullet2/BulletDynamics/ConstraintSolver/btUniversalConstraint.h @@ -0,0 +1,60 @@ +/* +Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org +Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef UNIVERSAL_CONSTRAINT_H +#define UNIVERSAL_CONSTRAINT_H + + + +#include "LinearMath/btVector3.h" +#include "btTypedConstraint.h" +#include "btGeneric6DofConstraint.h" + + + +/// Constraint similar to ODE Universal Joint +/// has 2 rotatioonal degrees of freedom, similar to Euler rotations around Z (axis 1) +/// and Y (axis 2) +/// Description from ODE manual : +/// "Given axis 1 on body 1, and axis 2 on body 2 that is perpendicular to axis 1, it keeps them perpendicular. +/// In other words, rotation of the two bodies about the direction perpendicular to the two axes will be equal." + +class btUniversalConstraint : public btGeneric6DofConstraint +{ +protected: + btVector3 m_anchor; + btVector3 m_axis1; + btVector3 m_axis2; +public: + // constructor + // anchor, axis1 and axis2 are in world coordinate system + // axis1 must be orthogonal to axis2 + btUniversalConstraint(btRigidBody& rbA, btRigidBody& rbB, btVector3& anchor, btVector3& axis1, btVector3& axis2); + // access + const btVector3& getAnchor() { return m_calculatedTransformA.getOrigin(); } + const btVector3& getAnchor2() { return m_calculatedTransformB.getOrigin(); } + const btVector3& getAxis1() { return m_axis1; } + const btVector3& getAxis2() { return m_axis2; } + btScalar getAngle1() { return getAngle(2); } + btScalar getAngle2() { return getAngle(1); } + // limits + void setUpperLimit(btScalar ang1max, btScalar ang2max) { setAngularUpperLimit(btVector3(0.f, ang1max, ang2max)); } + void setLowerLimit(btScalar ang1min, btScalar ang2min) { setAngularLowerLimit(btVector3(0.f, ang1min, ang2min)); } +}; + + + +#endif // UNIVERSAL_CONSTRAINT_H + diff --git a/extern/bullet2/BulletDynamics/Dynamics/Bullet-C-API.cpp b/extern/bullet2/BulletDynamics/Dynamics/Bullet-C-API.cpp new file mode 100644 index 00000000000..bd8e2748383 --- /dev/null +++ b/extern/bullet2/BulletDynamics/Dynamics/Bullet-C-API.cpp @@ -0,0 +1,405 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +/* + Draft high-level generic physics C-API. For low-level access, use the physics SDK native API's. + Work in progress, functionality will be added on demand. + + If possible, use the richer Bullet C++ API, by including +*/ + +#include "Bullet-C-Api.h" +#include "btBulletDynamicsCommon.h" +#include "LinearMath/btAlignedAllocator.h" + + + +#include "LinearMath/btVector3.h" +#include "LinearMath/btScalar.h" +#include "LinearMath/btMatrix3x3.h" +#include "LinearMath/btTransform.h" +#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h" +#include "BulletCollision/CollisionShapes/btTriangleShape.h" + +#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h" +#include "BulletCollision/NarrowPhaseCollision/btPointCollector.h" +#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h" +#include "BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h" +#include "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h" +#include "BulletCollision/NarrowPhaseCollision/btGjkEpa2.h" +#include "BulletCollision/CollisionShapes/btMinkowskiSumShape.h" +#include "BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h" +#include "BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h" +#include "BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h" + + +/* + Create and Delete a Physics SDK +*/ + +struct btPhysicsSdk +{ + +// btDispatcher* m_dispatcher; +// btOverlappingPairCache* m_pairCache; +// btConstraintSolver* m_constraintSolver + + btVector3 m_worldAabbMin; + btVector3 m_worldAabbMax; + + + //todo: version, hardware/optimization settings etc? + btPhysicsSdk() + :m_worldAabbMin(-1000,-1000,-1000), + m_worldAabbMax(1000,1000,1000) + { + + } + + +}; + +plPhysicsSdkHandle plNewBulletSdk() +{ + void* mem = btAlignedAlloc(sizeof(btPhysicsSdk),16); + return (plPhysicsSdkHandle)new (mem)btPhysicsSdk; +} + +void plDeletePhysicsSdk(plPhysicsSdkHandle physicsSdk) +{ + btPhysicsSdk* phys = reinterpret_cast(physicsSdk); + btAlignedFree(phys); +} + + +/* Dynamics World */ +plDynamicsWorldHandle plCreateDynamicsWorld(plPhysicsSdkHandle physicsSdkHandle) +{ + btPhysicsSdk* physicsSdk = reinterpret_cast(physicsSdkHandle); + void* mem = btAlignedAlloc(sizeof(btDefaultCollisionConfiguration),16); + btDefaultCollisionConfiguration* collisionConfiguration = new (mem)btDefaultCollisionConfiguration(); + mem = btAlignedAlloc(sizeof(btCollisionDispatcher),16); + btDispatcher* dispatcher = new (mem)btCollisionDispatcher(collisionConfiguration); + mem = btAlignedAlloc(sizeof(btAxisSweep3),16); + btBroadphaseInterface* pairCache = new (mem)btAxisSweep3(physicsSdk->m_worldAabbMin,physicsSdk->m_worldAabbMax); + mem = btAlignedAlloc(sizeof(btSequentialImpulseConstraintSolver),16); + btConstraintSolver* constraintSolver = new(mem) btSequentialImpulseConstraintSolver(); + + mem = btAlignedAlloc(sizeof(btDiscreteDynamicsWorld),16); + return (plDynamicsWorldHandle) new (mem)btDiscreteDynamicsWorld(dispatcher,pairCache,constraintSolver,collisionConfiguration); +} +void plDeleteDynamicsWorld(plDynamicsWorldHandle world) +{ + //todo: also clean up the other allocations, axisSweep, pairCache,dispatcher,constraintSolver,collisionConfiguration + btDynamicsWorld* dynamicsWorld = reinterpret_cast< btDynamicsWorld* >(world); + btAlignedFree(dynamicsWorld); +} + +void plStepSimulation(plDynamicsWorldHandle world, plReal timeStep) +{ + btDynamicsWorld* dynamicsWorld = reinterpret_cast< btDynamicsWorld* >(world); + btAssert(dynamicsWorld); + dynamicsWorld->stepSimulation(timeStep); +} + +void plAddRigidBody(plDynamicsWorldHandle world, plRigidBodyHandle object) +{ + btDynamicsWorld* dynamicsWorld = reinterpret_cast< btDynamicsWorld* >(world); + btAssert(dynamicsWorld); + btRigidBody* body = reinterpret_cast< btRigidBody* >(object); + btAssert(body); + + dynamicsWorld->addRigidBody(body); +} + +void plRemoveRigidBody(plDynamicsWorldHandle world, plRigidBodyHandle object) +{ + btDynamicsWorld* dynamicsWorld = reinterpret_cast< btDynamicsWorld* >(world); + btAssert(dynamicsWorld); + btRigidBody* body = reinterpret_cast< btRigidBody* >(object); + btAssert(body); + + dynamicsWorld->removeRigidBody(body); +} + +/* Rigid Body */ + +plRigidBodyHandle plCreateRigidBody( void* user_data, float mass, plCollisionShapeHandle cshape ) +{ + btTransform trans; + trans.setIdentity(); + btVector3 localInertia(0,0,0); + btCollisionShape* shape = reinterpret_cast( cshape); + btAssert(shape); + if (mass) + { + shape->calculateLocalInertia(mass,localInertia); + } + void* mem = btAlignedAlloc(sizeof(btRigidBody),16); + btRigidBody::btRigidBodyConstructionInfo rbci(mass, 0,shape,localInertia); + btRigidBody* body = new (mem)btRigidBody(rbci); + body->setWorldTransform(trans); + body->setUserPointer(user_data); + return (plRigidBodyHandle) body; +} + +void plDeleteRigidBody(plRigidBodyHandle cbody) +{ + btRigidBody* body = reinterpret_cast< btRigidBody* >(cbody); + btAssert(body); + btAlignedFree( body); +} + + +/* Collision Shape definition */ + +plCollisionShapeHandle plNewSphereShape(plReal radius) +{ + void* mem = btAlignedAlloc(sizeof(btSphereShape),16); + return (plCollisionShapeHandle) new (mem)btSphereShape(radius); + +} + +plCollisionShapeHandle plNewBoxShape(plReal x, plReal y, plReal z) +{ + void* mem = btAlignedAlloc(sizeof(btBoxShape),16); + return (plCollisionShapeHandle) new (mem)btBoxShape(btVector3(x,y,z)); +} + +plCollisionShapeHandle plNewCapsuleShape(plReal radius, plReal height) +{ + //capsule is convex hull of 2 spheres, so use btMultiSphereShape + + const int numSpheres = 2; + btVector3 positions[numSpheres] = {btVector3(0,height,0),btVector3(0,-height,0)}; + btScalar radi[numSpheres] = {radius,radius}; + void* mem = btAlignedAlloc(sizeof(btMultiSphereShape),16); + return (plCollisionShapeHandle) new (mem)btMultiSphereShape(positions,radi,numSpheres); +} +plCollisionShapeHandle plNewConeShape(plReal radius, plReal height) +{ + void* mem = btAlignedAlloc(sizeof(btConeShape),16); + return (plCollisionShapeHandle) new (mem)btConeShape(radius,height); +} + +plCollisionShapeHandle plNewCylinderShape(plReal radius, plReal height) +{ + void* mem = btAlignedAlloc(sizeof(btCylinderShape),16); + return (plCollisionShapeHandle) new (mem)btCylinderShape(btVector3(radius,height,radius)); +} + +/* Convex Meshes */ +plCollisionShapeHandle plNewConvexHullShape() +{ + void* mem = btAlignedAlloc(sizeof(btConvexHullShape),16); + return (plCollisionShapeHandle) new (mem)btConvexHullShape(); +} + + +/* Concave static triangle meshes */ +plMeshInterfaceHandle plNewMeshInterface() +{ + return 0; +} + +plCollisionShapeHandle plNewCompoundShape() +{ + void* mem = btAlignedAlloc(sizeof(btCompoundShape),16); + return (plCollisionShapeHandle) new (mem)btCompoundShape(); +} + +void plAddChildShape(plCollisionShapeHandle compoundShapeHandle,plCollisionShapeHandle childShapeHandle, plVector3 childPos,plQuaternion childOrn) +{ + btCollisionShape* colShape = reinterpret_cast(compoundShapeHandle); + btAssert(colShape->getShapeType() == COMPOUND_SHAPE_PROXYTYPE); + btCompoundShape* compoundShape = reinterpret_cast(colShape); + btCollisionShape* childShape = reinterpret_cast(childShapeHandle); + btTransform localTrans; + localTrans.setIdentity(); + localTrans.setOrigin(btVector3(childPos[0],childPos[1],childPos[2])); + localTrans.setRotation(btQuaternion(childOrn[0],childOrn[1],childOrn[2],childOrn[3])); + compoundShape->addChildShape(localTrans,childShape); +} + +void plSetEuler(plReal yaw,plReal pitch,plReal roll, plQuaternion orient) +{ + btQuaternion orn; + orn.setEuler(yaw,pitch,roll); + orient[0] = orn.getX(); + orient[1] = orn.getY(); + orient[2] = orn.getZ(); + orient[3] = orn.getW(); + +} + + +// extern void plAddTriangle(plMeshInterfaceHandle meshHandle, plVector3 v0,plVector3 v1,plVector3 v2); +// extern plCollisionShapeHandle plNewStaticTriangleMeshShape(plMeshInterfaceHandle); + + +void plAddVertex(plCollisionShapeHandle cshape, plReal x,plReal y,plReal z) +{ + btCollisionShape* colShape = reinterpret_cast( cshape); + (void)colShape; + btAssert(colShape->getShapeType()==CONVEX_HULL_SHAPE_PROXYTYPE); + btConvexHullShape* convexHullShape = reinterpret_cast( cshape); + convexHullShape->addPoint(btVector3(x,y,z)); + +} + +void plDeleteShape(plCollisionShapeHandle cshape) +{ + btCollisionShape* shape = reinterpret_cast( cshape); + btAssert(shape); + btAlignedFree(shape); +} +void plSetScaling(plCollisionShapeHandle cshape, plVector3 cscaling) +{ + btCollisionShape* shape = reinterpret_cast( cshape); + btAssert(shape); + btVector3 scaling(cscaling[0],cscaling[1],cscaling[2]); + shape->setLocalScaling(scaling); +} + + + +void plSetPosition(plRigidBodyHandle object, const plVector3 position) +{ + btRigidBody* body = reinterpret_cast< btRigidBody* >(object); + btAssert(body); + btVector3 pos(position[0],position[1],position[2]); + btTransform worldTrans = body->getWorldTransform(); + worldTrans.setOrigin(pos); + body->setWorldTransform(worldTrans); +} + +void plSetOrientation(plRigidBodyHandle object, const plQuaternion orientation) +{ + btRigidBody* body = reinterpret_cast< btRigidBody* >(object); + btAssert(body); + btQuaternion orn(orientation[0],orientation[1],orientation[2],orientation[3]); + btTransform worldTrans = body->getWorldTransform(); + worldTrans.setRotation(orn); + body->setWorldTransform(worldTrans); +} + +void plSetOpenGLMatrix(plRigidBodyHandle object, plReal* matrix) +{ + btRigidBody* body = reinterpret_cast< btRigidBody* >(object); + btAssert(body); + btTransform& worldTrans = body->getWorldTransform(); + worldTrans.setFromOpenGLMatrix(matrix); +} + +void plGetOpenGLMatrix(plRigidBodyHandle object, plReal* matrix) +{ + btRigidBody* body = reinterpret_cast< btRigidBody* >(object); + btAssert(body); + body->getWorldTransform().getOpenGLMatrix(matrix); + +} + +void plGetPosition(plRigidBodyHandle object,plVector3 position) +{ + btRigidBody* body = reinterpret_cast< btRigidBody* >(object); + btAssert(body); + const btVector3& pos = body->getWorldTransform().getOrigin(); + position[0] = pos.getX(); + position[1] = pos.getY(); + position[2] = pos.getZ(); +} + +void plGetOrientation(plRigidBodyHandle object,plQuaternion orientation) +{ + btRigidBody* body = reinterpret_cast< btRigidBody* >(object); + btAssert(body); + const btQuaternion& orn = body->getWorldTransform().getRotation(); + orientation[0] = orn.getX(); + orientation[1] = orn.getY(); + orientation[2] = orn.getZ(); + orientation[3] = orn.getW(); +} + + + +//plRigidBodyHandle plRayCast(plDynamicsWorldHandle world, const plVector3 rayStart, const plVector3 rayEnd, plVector3 hitpoint, plVector3 normal); + +// extern plRigidBodyHandle plObjectCast(plDynamicsWorldHandle world, const plVector3 rayStart, const plVector3 rayEnd, plVector3 hitpoint, plVector3 normal); + +double plNearestPoints(float p1[3], float p2[3], float p3[3], float q1[3], float q2[3], float q3[3], float *pa, float *pb, float normal[3]) +{ + btVector3 vp(p1[0], p1[1], p1[2]); + btTriangleShape trishapeA(vp, + btVector3(p2[0], p2[1], p2[2]), + btVector3(p3[0], p3[1], p3[2])); + trishapeA.setMargin(0.000001f); + btVector3 vq(q1[0], q1[1], q1[2]); + btTriangleShape trishapeB(vq, + btVector3(q2[0], q2[1], q2[2]), + btVector3(q3[0], q3[1], q3[2])); + trishapeB.setMargin(0.000001f); + + // btVoronoiSimplexSolver sGjkSimplexSolver; + // btGjkEpaPenetrationDepthSolver penSolverPtr; + + static btSimplexSolverInterface sGjkSimplexSolver; + sGjkSimplexSolver.reset(); + + static btGjkEpaPenetrationDepthSolver Solver0; + static btMinkowskiPenetrationDepthSolver Solver1; + + btConvexPenetrationDepthSolver* Solver = NULL; + + Solver = &Solver1; + + btGjkPairDetector convexConvex(&trishapeA ,&trishapeB,&sGjkSimplexSolver,Solver); + + convexConvex.m_catchDegeneracies = 1; + + // btGjkPairDetector convexConvex(&trishapeA ,&trishapeB,&sGjkSimplexSolver,0); + + btPointCollector gjkOutput; + btGjkPairDetector::ClosestPointInput input; + + + btTransform tr; + tr.setIdentity(); + + input.m_transformA = tr; + input.m_transformB = tr; + + convexConvex.getClosestPoints(input, gjkOutput, 0); + + + if (gjkOutput.m_hasResult) + { + + pb[0] = pa[0] = gjkOutput.m_pointInWorld[0]; + pb[1] = pa[1] = gjkOutput.m_pointInWorld[1]; + pb[2] = pa[2] = gjkOutput.m_pointInWorld[2]; + + pb[0]+= gjkOutput.m_normalOnBInWorld[0] * gjkOutput.m_distance; + pb[1]+= gjkOutput.m_normalOnBInWorld[1] * gjkOutput.m_distance; + pb[2]+= gjkOutput.m_normalOnBInWorld[2] * gjkOutput.m_distance; + + normal[0] = gjkOutput.m_normalOnBInWorld[0]; + normal[1] = gjkOutput.m_normalOnBInWorld[1]; + normal[2] = gjkOutput.m_normalOnBInWorld[2]; + + return gjkOutput.m_distance; + } + return -1.0f; +} + diff --git a/extern/bullet2/BulletDynamics/Dynamics/btActionInterface.h b/extern/bullet2/BulletDynamics/Dynamics/btActionInterface.h new file mode 100644 index 00000000000..40a07c6eae3 --- /dev/null +++ b/extern/bullet2/BulletDynamics/Dynamics/btActionInterface.h @@ -0,0 +1,50 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _BT_ACTION_INTERFACE_H +#define _BT_ACTION_INTERFACE_H + +class btIDebugDraw; +class btCollisionWorld; + +#include "LinearMath/btScalar.h" +#include "btRigidBody.h" + +///Basic interface to allow actions such as vehicles and characters to be updated inside a btDynamicsWorld +class btActionInterface +{ +protected: + + static btRigidBody& getFixedBody() + { + static btRigidBody s_fixed(0, 0,0); + s_fixed.setMassProps(btScalar(0.),btVector3(btScalar(0.),btScalar(0.),btScalar(0.))); + return s_fixed; + } + +public: + + virtual ~btActionInterface() + { + } + + virtual void updateAction( btCollisionWorld* collisionWorld, btScalar deltaTimeStep)=0; + + virtual void debugDraw(btIDebugDraw* debugDrawer) = 0; + +}; + +#endif //_BT_ACTION_INTERFACE_H + diff --git a/extern/bullet2/BulletDynamics/Dynamics/btContinuousDynamicsWorld.cpp b/extern/bullet2/BulletDynamics/Dynamics/btContinuousDynamicsWorld.cpp new file mode 100644 index 00000000000..23501c4435e --- /dev/null +++ b/extern/bullet2/BulletDynamics/Dynamics/btContinuousDynamicsWorld.cpp @@ -0,0 +1,196 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btContinuousDynamicsWorld.h" +#include "LinearMath/btQuickprof.h" + +//collision detection +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" +#include "BulletCollision/BroadphaseCollision/btSimpleBroadphase.h" +#include "BulletCollision/CollisionShapes/btCollisionShape.h" +#include "BulletCollision/CollisionDispatch/btSimulationIslandManager.h" + +//rigidbody & constraints +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h" +#include "BulletDynamics/ConstraintSolver/btContactSolverInfo.h" +#include "BulletDynamics/ConstraintSolver/btTypedConstraint.h" + + + +#include + +btContinuousDynamicsWorld::btContinuousDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration) +:btDiscreteDynamicsWorld(dispatcher,pairCache,constraintSolver,collisionConfiguration) +{ +} + +btContinuousDynamicsWorld::~btContinuousDynamicsWorld() +{ +} + + +void btContinuousDynamicsWorld::internalSingleStepSimulation( btScalar timeStep) +{ + + startProfiling(timeStep); + + if(0 != m_internalPreTickCallback) { + (*m_internalPreTickCallback)(this, timeStep); + } + + + ///update aabbs information + updateAabbs(); + //static int frame=0; +// printf("frame %d\n",frame++); + + ///apply gravity, predict motion + predictUnconstraintMotion(timeStep); + + btDispatcherInfo& dispatchInfo = getDispatchInfo(); + + dispatchInfo.m_timeStep = timeStep; + dispatchInfo.m_stepCount = 0; + dispatchInfo.m_debugDraw = getDebugDrawer(); + + ///perform collision detection + performDiscreteCollisionDetection(); + + calculateSimulationIslands(); + + + getSolverInfo().m_timeStep = timeStep; + + + + ///solve contact and other joint constraints + solveConstraints(getSolverInfo()); + + ///CallbackTriggers(); + calculateTimeOfImpacts(timeStep); + + btScalar toi = dispatchInfo.m_timeOfImpact; +// if (toi < 1.f) +// printf("toi = %f\n",toi); + if (toi < 0.f) + printf("toi = %f\n",toi); + + + ///integrate transforms + integrateTransforms(timeStep * toi); + + ///update vehicle simulation + updateActions(timeStep); + + updateActivationState( timeStep ); + + if(0 != m_internalTickCallback) { + (*m_internalTickCallback)(this, timeStep); + } +} + +void btContinuousDynamicsWorld::calculateTimeOfImpacts(btScalar timeStep) +{ + ///these should be 'temporal' aabbs! + updateTemporalAabbs(timeStep); + + ///'toi' is the global smallest time of impact. However, we just calculate the time of impact for each object individually. + ///so we handle the case moving versus static properly, and we cheat for moving versus moving + btScalar toi = 1.f; + + + btDispatcherInfo& dispatchInfo = getDispatchInfo(); + dispatchInfo.m_timeStep = timeStep; + dispatchInfo.m_timeOfImpact = 1.f; + dispatchInfo.m_stepCount = 0; + dispatchInfo.m_dispatchFunc = btDispatcherInfo::DISPATCH_CONTINUOUS; + + ///calculate time of impact for overlapping pairs + + + btDispatcher* dispatcher = getDispatcher(); + if (dispatcher) + dispatcher->dispatchAllCollisionPairs(m_broadphasePairCache->getOverlappingPairCache(),dispatchInfo,m_dispatcher1); + + toi = dispatchInfo.m_timeOfImpact; + + dispatchInfo.m_dispatchFunc = btDispatcherInfo::DISPATCH_DISCRETE; + +} + +void btContinuousDynamicsWorld::updateTemporalAabbs(btScalar timeStep) +{ + + btVector3 temporalAabbMin,temporalAabbMax; + + for ( int i=0;igetCollisionShape()->getAabb(m_collisionObjects[i]->getWorldTransform(),temporalAabbMin,temporalAabbMax); + const btVector3& linvel = body->getLinearVelocity(); + + //make the AABB temporal + btScalar temporalAabbMaxx = temporalAabbMax.getX(); + btScalar temporalAabbMaxy = temporalAabbMax.getY(); + btScalar temporalAabbMaxz = temporalAabbMax.getZ(); + btScalar temporalAabbMinx = temporalAabbMin.getX(); + btScalar temporalAabbMiny = temporalAabbMin.getY(); + btScalar temporalAabbMinz = temporalAabbMin.getZ(); + + // add linear motion + btVector3 linMotion = linvel*timeStep; + + if (linMotion.x() > 0.f) + temporalAabbMaxx += linMotion.x(); + else + temporalAabbMinx += linMotion.x(); + if (linMotion.y() > 0.f) + temporalAabbMaxy += linMotion.y(); + else + temporalAabbMiny += linMotion.y(); + if (linMotion.z() > 0.f) + temporalAabbMaxz += linMotion.z(); + else + temporalAabbMinz += linMotion.z(); + + //add conservative angular motion + btScalar angularMotion(0);// = angvel.length() * GetAngularMotionDisc() * timeStep; + btVector3 angularMotion3d(angularMotion,angularMotion,angularMotion); + temporalAabbMin = btVector3(temporalAabbMinx,temporalAabbMiny,temporalAabbMinz); + temporalAabbMax = btVector3(temporalAabbMaxx,temporalAabbMaxy,temporalAabbMaxz); + + temporalAabbMin -= angularMotion3d; + temporalAabbMax += angularMotion3d; + + m_broadphasePairCache->setAabb(body->getBroadphaseHandle(),temporalAabbMin,temporalAabbMax,m_dispatcher1); + } + } + + //update aabb (of all moved objects) + + m_broadphasePairCache->calculateOverlappingPairs(m_dispatcher1); + + + +} + + + diff --git a/extern/bullet2/BulletDynamics/Dynamics/btContinuousDynamicsWorld.h b/extern/bullet2/BulletDynamics/Dynamics/btContinuousDynamicsWorld.h new file mode 100644 index 00000000000..61c8dea03eb --- /dev/null +++ b/extern/bullet2/BulletDynamics/Dynamics/btContinuousDynamicsWorld.h @@ -0,0 +1,46 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_CONTINUOUS_DYNAMICS_WORLD_H +#define BT_CONTINUOUS_DYNAMICS_WORLD_H + +#include "btDiscreteDynamicsWorld.h" + +///btContinuousDynamicsWorld adds optional (per object) continuous collision detection for fast moving objects to the btDiscreteDynamicsWorld. +///This copes with fast moving objects that otherwise would tunnel/miss collisions. +///Under construction, don't use yet! Please use btDiscreteDynamicsWorld instead. +class btContinuousDynamicsWorld : public btDiscreteDynamicsWorld +{ + + void updateTemporalAabbs(btScalar timeStep); + + public: + + btContinuousDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration); + virtual ~btContinuousDynamicsWorld(); + + ///time stepping with calculation of time of impact for selected fast moving objects + virtual void internalSingleStepSimulation( btScalar timeStep); + + virtual void calculateTimeOfImpacts(btScalar timeStep); + + virtual btDynamicsWorldType getWorldType() const + { + return BT_CONTINUOUS_DYNAMICS_WORLD; + } + +}; + +#endif //BT_CONTINUOUS_DYNAMICS_WORLD_H diff --git a/extern/bullet2/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp b/extern/bullet2/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp new file mode 100644 index 00000000000..a88ed1cafa8 --- /dev/null +++ b/extern/bullet2/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp @@ -0,0 +1,1161 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btDiscreteDynamicsWorld.h" + +//collision detection +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" +#include "BulletCollision/BroadphaseCollision/btSimpleBroadphase.h" +#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" +#include "BulletCollision/CollisionShapes/btCollisionShape.h" +#include "BulletCollision/CollisionDispatch/btSimulationIslandManager.h" +#include "LinearMath/btTransformUtil.h" +#include "LinearMath/btQuickprof.h" + +//rigidbody & constraints +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h" +#include "BulletDynamics/ConstraintSolver/btContactSolverInfo.h" +#include "BulletDynamics/ConstraintSolver/btTypedConstraint.h" +#include "BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h" +#include "BulletDynamics/ConstraintSolver/btHingeConstraint.h" +#include "BulletDynamics/ConstraintSolver/btConeTwistConstraint.h" +#include "BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h" +#include "BulletDynamics/ConstraintSolver/btSliderConstraint.h" + +#include "LinearMath/btIDebugDraw.h" +#include "BulletCollision/CollisionShapes/btSphereShape.h" + + +#include "BulletDynamics/Dynamics/btActionInterface.h" +#include "LinearMath/btQuickprof.h" +#include "LinearMath/btMotionState.h" + +#include "LinearMath/btSerializer.h" + + + +btDiscreteDynamicsWorld::btDiscreteDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver, btCollisionConfiguration* collisionConfiguration) +:btDynamicsWorld(dispatcher,pairCache,collisionConfiguration), +m_constraintSolver(constraintSolver), +m_gravity(0,-10,0), +m_localTime(btScalar(1.)/btScalar(60.)), +m_synchronizeAllMotionStates(false), +m_profileTimings(0) +{ + if (!m_constraintSolver) + { + void* mem = btAlignedAlloc(sizeof(btSequentialImpulseConstraintSolver),16); + m_constraintSolver = new (mem) btSequentialImpulseConstraintSolver; + m_ownsConstraintSolver = true; + } else + { + m_ownsConstraintSolver = false; + } + + { + void* mem = btAlignedAlloc(sizeof(btSimulationIslandManager),16); + m_islandManager = new (mem) btSimulationIslandManager(); + } + + m_ownsIslandManager = true; +} + + +btDiscreteDynamicsWorld::~btDiscreteDynamicsWorld() +{ + //only delete it when we created it + if (m_ownsIslandManager) + { + m_islandManager->~btSimulationIslandManager(); + btAlignedFree( m_islandManager); + } + if (m_ownsConstraintSolver) + { + + m_constraintSolver->~btConstraintSolver(); + btAlignedFree(m_constraintSolver); + } +} + +void btDiscreteDynamicsWorld::saveKinematicState(btScalar timeStep) +{ +///would like to iterate over m_nonStaticRigidBodies, but unfortunately old API allows +///to switch status _after_ adding kinematic objects to the world +///fix it for Bullet 3.x release + for (int i=0;igetActivationState() != ISLAND_SLEEPING) + { + if (body->isKinematicObject()) + { + //to calculate velocities next frame + body->saveKinematicState(timeStep); + } + } + } + +} + +void btDiscreteDynamicsWorld::debugDrawWorld() +{ + BT_PROFILE("debugDrawWorld"); + + btCollisionWorld::debugDrawWorld(); + + bool drawConstraints = false; + if (getDebugDrawer()) + { + int mode = getDebugDrawer()->getDebugMode(); + if(mode & (btIDebugDraw::DBG_DrawConstraints | btIDebugDraw::DBG_DrawConstraintLimits)) + { + drawConstraints = true; + } + } + if(drawConstraints) + { + for(int i = getNumConstraints()-1; i>=0 ;i--) + { + btTypedConstraint* constraint = getConstraint(i); + debugDrawConstraint(constraint); + } + } + + + + if (getDebugDrawer() && getDebugDrawer()->getDebugMode() & (btIDebugDraw::DBG_DrawWireframe | btIDebugDraw::DBG_DrawAabb)) + { + int i; + + if (getDebugDrawer() && getDebugDrawer()->getDebugMode()) + { + for (i=0;idebugDraw(m_debugDrawer); + } + } + } +} + +void btDiscreteDynamicsWorld::clearForces() +{ + ///@todo: iterate over awake simulation islands! + for ( int i=0;iclearForces(); + } +} + +///apply gravity, call this once per timestep +void btDiscreteDynamicsWorld::applyGravity() +{ + ///@todo: iterate over awake simulation islands! + for ( int i=0;iisActive()) + { + body->applyGravity(); + } + } +} + + +void btDiscreteDynamicsWorld::synchronizeSingleMotionState(btRigidBody* body) +{ + btAssert(body); + + if (body->getMotionState() && !body->isStaticOrKinematicObject()) + { + //we need to call the update at least once, even for sleeping objects + //otherwise the 'graphics' transform never updates properly + ///@todo: add 'dirty' flag + //if (body->getActivationState() != ISLAND_SLEEPING) + { + btTransform interpolatedTransform; + btTransformUtil::integrateTransform(body->getInterpolationWorldTransform(), + body->getInterpolationLinearVelocity(),body->getInterpolationAngularVelocity(),m_localTime*body->getHitFraction(),interpolatedTransform); + body->getMotionState()->setWorldTransform(interpolatedTransform); + } + } +} + + +void btDiscreteDynamicsWorld::synchronizeMotionStates() +{ + BT_PROFILE("synchronizeMotionStates"); + if (m_synchronizeAllMotionStates) + { + //iterate over all collision objects + for ( int i=0;iisActive()) + synchronizeSingleMotionState(body); + } + } +} + + +int btDiscreteDynamicsWorld::stepSimulation( btScalar timeStep,int maxSubSteps, btScalar fixedTimeStep) +{ + startProfiling(timeStep); + + BT_PROFILE("stepSimulation"); + + int numSimulationSubSteps = 0; + + if (maxSubSteps) + { + //fixed timestep with interpolation + m_localTime += timeStep; + if (m_localTime >= fixedTimeStep) + { + numSimulationSubSteps = int( m_localTime / fixedTimeStep); + m_localTime -= numSimulationSubSteps * fixedTimeStep; + } + } else + { + //variable timestep + fixedTimeStep = timeStep; + m_localTime = timeStep; + if (btFuzzyZero(timeStep)) + { + numSimulationSubSteps = 0; + maxSubSteps = 0; + } else + { + numSimulationSubSteps = 1; + maxSubSteps = 1; + } + } + + //process some debugging flags + if (getDebugDrawer()) + { + btIDebugDraw* debugDrawer = getDebugDrawer (); + gDisableDeactivation = (debugDrawer->getDebugMode() & btIDebugDraw::DBG_NoDeactivation) != 0; + } + if (numSimulationSubSteps) + { + + //clamp the number of substeps, to prevent simulation grinding spiralling down to a halt + int clampedSimulationSteps = (numSimulationSubSteps > maxSubSteps)? maxSubSteps : numSimulationSubSteps; + + saveKinematicState(fixedTimeStep*clampedSimulationSteps); + + applyGravity(); + + + + for (int i=0;iisActive() && !(body->getFlags() &BT_DISABLE_WORLD_GRAVITY)) + { + body->setGravity(gravity); + } + } +} + +btVector3 btDiscreteDynamicsWorld::getGravity () const +{ + return m_gravity; +} + +void btDiscreteDynamicsWorld::addCollisionObject(btCollisionObject* collisionObject,short int collisionFilterGroup,short int collisionFilterMask) +{ + btCollisionWorld::addCollisionObject(collisionObject,collisionFilterGroup,collisionFilterMask); +} + +void btDiscreteDynamicsWorld::removeCollisionObject(btCollisionObject* collisionObject) +{ + btRigidBody* body = btRigidBody::upcast(collisionObject); + if (body) + removeRigidBody(body); + else + btCollisionWorld::removeCollisionObject(collisionObject); +} + +void btDiscreteDynamicsWorld::removeRigidBody(btRigidBody* body) +{ + m_nonStaticRigidBodies.remove(body); + btCollisionWorld::removeCollisionObject(body); +} + + +void btDiscreteDynamicsWorld::addRigidBody(btRigidBody* body) +{ + if (!body->isStaticOrKinematicObject() && !(body->getFlags() &BT_DISABLE_WORLD_GRAVITY)) + { + body->setGravity(m_gravity); + } + + if (body->getCollisionShape()) + { + if (!body->isStaticObject()) + { + m_nonStaticRigidBodies.push_back(body); + } else + { + body->setActivationState(ISLAND_SLEEPING); + } + + bool isDynamic = !(body->isStaticObject() || body->isKinematicObject()); + short collisionFilterGroup = isDynamic? short(btBroadphaseProxy::DefaultFilter) : short(btBroadphaseProxy::StaticFilter); + short collisionFilterMask = isDynamic? short(btBroadphaseProxy::AllFilter) : short(btBroadphaseProxy::AllFilter ^ btBroadphaseProxy::StaticFilter); + + addCollisionObject(body,collisionFilterGroup,collisionFilterMask); + } +} + +void btDiscreteDynamicsWorld::addRigidBody(btRigidBody* body, short group, short mask) +{ + if (!body->isStaticOrKinematicObject() && !(body->getFlags() &BT_DISABLE_WORLD_GRAVITY)) + { + body->setGravity(m_gravity); + } + + if (body->getCollisionShape()) + { + if (!body->isStaticObject()) + { + m_nonStaticRigidBodies.push_back(body); + } + else + { + body->setActivationState(ISLAND_SLEEPING); + } + addCollisionObject(body,group,mask); + } +} + + +void btDiscreteDynamicsWorld::updateActions(btScalar timeStep) +{ + BT_PROFILE("updateActions"); + + for ( int i=0;iupdateAction( this, timeStep); + } +} + + +void btDiscreteDynamicsWorld::updateActivationState(btScalar timeStep) +{ + BT_PROFILE("updateActivationState"); + + for ( int i=0;iupdateDeactivation(timeStep); + + if (body->wantsSleeping()) + { + if (body->isStaticOrKinematicObject()) + { + body->setActivationState(ISLAND_SLEEPING); + } else + { + if (body->getActivationState() == ACTIVE_TAG) + body->setActivationState( WANTS_DEACTIVATION ); + if (body->getActivationState() == ISLAND_SLEEPING) + { + body->setAngularVelocity(btVector3(0,0,0)); + body->setLinearVelocity(btVector3(0,0,0)); + } + + } + } else + { + if (body->getActivationState() != DISABLE_DEACTIVATION) + body->setActivationState( ACTIVE_TAG ); + } + } + } +} + +void btDiscreteDynamicsWorld::addConstraint(btTypedConstraint* constraint,bool disableCollisionsBetweenLinkedBodies) +{ + m_constraints.push_back(constraint); + if (disableCollisionsBetweenLinkedBodies) + { + constraint->getRigidBodyA().addConstraintRef(constraint); + constraint->getRigidBodyB().addConstraintRef(constraint); + } +} + +void btDiscreteDynamicsWorld::removeConstraint(btTypedConstraint* constraint) +{ + m_constraints.remove(constraint); + constraint->getRigidBodyA().removeConstraintRef(constraint); + constraint->getRigidBodyB().removeConstraintRef(constraint); +} + +void btDiscreteDynamicsWorld::addAction(btActionInterface* action) +{ + m_actions.push_back(action); +} + +void btDiscreteDynamicsWorld::removeAction(btActionInterface* action) +{ + m_actions.remove(action); +} + + +void btDiscreteDynamicsWorld::addVehicle(btActionInterface* vehicle) +{ + addAction(vehicle); +} + +void btDiscreteDynamicsWorld::removeVehicle(btActionInterface* vehicle) +{ + removeAction(vehicle); +} + +void btDiscreteDynamicsWorld::addCharacter(btActionInterface* character) +{ + addAction(character); +} + +void btDiscreteDynamicsWorld::removeCharacter(btActionInterface* character) +{ + removeAction(character); +} + + +SIMD_FORCE_INLINE int btGetConstraintIslandId(const btTypedConstraint* lhs) +{ + int islandId; + + const btCollisionObject& rcolObj0 = lhs->getRigidBodyA(); + const btCollisionObject& rcolObj1 = lhs->getRigidBodyB(); + islandId= rcolObj0.getIslandTag()>=0?rcolObj0.getIslandTag():rcolObj1.getIslandTag(); + return islandId; + +} + + +class btSortConstraintOnIslandPredicate +{ + public: + + bool operator() ( const btTypedConstraint* lhs, const btTypedConstraint* rhs ) + { + int rIslandId0,lIslandId0; + rIslandId0 = btGetConstraintIslandId(rhs); + lIslandId0 = btGetConstraintIslandId(lhs); + return lIslandId0 < rIslandId0; + } +}; + + + +void btDiscreteDynamicsWorld::solveConstraints(btContactSolverInfo& solverInfo) +{ + BT_PROFILE("solveConstraints"); + + struct InplaceSolverIslandCallback : public btSimulationIslandManager::IslandCallback + { + + btContactSolverInfo& m_solverInfo; + btConstraintSolver* m_solver; + btTypedConstraint** m_sortedConstraints; + int m_numConstraints; + btIDebugDraw* m_debugDrawer; + btStackAlloc* m_stackAlloc; + btDispatcher* m_dispatcher; + + btAlignedObjectArray m_bodies; + btAlignedObjectArray m_manifolds; + btAlignedObjectArray m_constraints; + + + InplaceSolverIslandCallback( + btContactSolverInfo& solverInfo, + btConstraintSolver* solver, + btTypedConstraint** sortedConstraints, + int numConstraints, + btIDebugDraw* debugDrawer, + btStackAlloc* stackAlloc, + btDispatcher* dispatcher) + :m_solverInfo(solverInfo), + m_solver(solver), + m_sortedConstraints(sortedConstraints), + m_numConstraints(numConstraints), + m_debugDrawer(debugDrawer), + m_stackAlloc(stackAlloc), + m_dispatcher(dispatcher) + { + + } + + + InplaceSolverIslandCallback& operator=(InplaceSolverIslandCallback& other) + { + btAssert(0); + (void)other; + return *this; + } + virtual void ProcessIsland(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifolds,int numManifolds, int islandId) + { + if (islandId<0) + { + if (numManifolds + m_numConstraints) + { + ///we don't split islands, so all constraints/contact manifolds/bodies are passed into the solver regardless the island id + m_solver->solveGroup( bodies,numBodies,manifolds, numManifolds,&m_sortedConstraints[0],m_numConstraints,m_solverInfo,m_debugDrawer,m_stackAlloc,m_dispatcher); + } + } else + { + //also add all non-contact constraints/joints for this island + btTypedConstraint** startConstraint = 0; + int numCurConstraints = 0; + int i; + + //find the first constraint for this island + for (i=0;isolveGroup( bodies,numBodies,manifolds, numManifolds,startConstraint,numCurConstraints,m_solverInfo,m_debugDrawer,m_stackAlloc,m_dispatcher); + } + } else + { + + for (i=0;im_solverInfo.m_minimumSolverBatchSize) + { + processConstraints(); + } else + { + //printf("deferred\n"); + } + } + } + } + void processConstraints() + { + if (m_manifolds.size() + m_constraints.size()>0) + { + m_solver->solveGroup( &m_bodies[0],m_bodies.size(), &m_manifolds[0], m_manifolds.size(), &m_constraints[0], m_constraints.size() ,m_solverInfo,m_debugDrawer,m_stackAlloc,m_dispatcher); + } + m_bodies.resize(0); + m_manifolds.resize(0); + m_constraints.resize(0); + + } + + }; + + + + //sorted version of all btTypedConstraint, based on islandId + btAlignedObjectArray sortedConstraints; + sortedConstraints.resize( m_constraints.size()); + int i; + for (i=0;iprepareSolve(getCollisionWorld()->getNumCollisionObjects(), getCollisionWorld()->getDispatcher()->getNumManifolds()); + + /// solve all the constraints for this island + m_islandManager->buildAndProcessIslands(getCollisionWorld()->getDispatcher(),getCollisionWorld(),&solverCallback); + + solverCallback.processConstraints(); + + m_constraintSolver->allSolved(solverInfo, m_debugDrawer, m_stackAlloc); +} + + + + +void btDiscreteDynamicsWorld::calculateSimulationIslands() +{ + BT_PROFILE("calculateSimulationIslands"); + + getSimulationIslandManager()->updateActivationState(getCollisionWorld(),getCollisionWorld()->getDispatcher()); + + { + int i; + int numConstraints = int(m_constraints.size()); + for (i=0;i< numConstraints ; i++ ) + { + btTypedConstraint* constraint = m_constraints[i]; + + const btRigidBody* colObj0 = &constraint->getRigidBodyA(); + const btRigidBody* colObj1 = &constraint->getRigidBodyB(); + + if (((colObj0) && (!(colObj0)->isStaticOrKinematicObject())) && + ((colObj1) && (!(colObj1)->isStaticOrKinematicObject()))) + { + if (colObj0->isActive() || colObj1->isActive()) + { + + getSimulationIslandManager()->getUnionFind().unite((colObj0)->getIslandTag(), + (colObj1)->getIslandTag()); + } + } + } + } + + //Store the island id in each body + getSimulationIslandManager()->storeIslandActivationState(getCollisionWorld()); + + +} + + + + +class btClosestNotMeConvexResultCallback : public btCollisionWorld::ClosestConvexResultCallback +{ + btCollisionObject* m_me; + btScalar m_allowedPenetration; + btOverlappingPairCache* m_pairCache; + btDispatcher* m_dispatcher; + + +public: + btClosestNotMeConvexResultCallback (btCollisionObject* me,const btVector3& fromA,const btVector3& toA,btOverlappingPairCache* pairCache,btDispatcher* dispatcher) : + btCollisionWorld::ClosestConvexResultCallback(fromA,toA), + m_me(me), + m_allowedPenetration(0.0f), + m_pairCache(pairCache), + m_dispatcher(dispatcher) + { + } + + virtual btScalar addSingleResult(btCollisionWorld::LocalConvexResult& convexResult,bool normalInWorldSpace) + { + if (convexResult.m_hitCollisionObject == m_me) + return 1.0f; + + //ignore result if there is no contact response + if(!convexResult.m_hitCollisionObject->hasContactResponse()) + return 1.0f; + + btVector3 linVelA,linVelB; + linVelA = m_convexToWorld-m_convexFromWorld; + linVelB = btVector3(0,0,0);//toB.getOrigin()-fromB.getOrigin(); + + btVector3 relativeVelocity = (linVelA-linVelB); + //don't report time of impact for motion away from the contact normal (or causes minor penetration) + if (convexResult.m_hitNormalLocal.dot(relativeVelocity)>=-m_allowedPenetration) + return 1.f; + + return ClosestConvexResultCallback::addSingleResult (convexResult, normalInWorldSpace); + } + + virtual bool needsCollision(btBroadphaseProxy* proxy0) const + { + //don't collide with itself + if (proxy0->m_clientObject == m_me) + return false; + + ///don't do CCD when the collision filters are not matching + if (!ClosestConvexResultCallback::needsCollision(proxy0)) + return false; + + btCollisionObject* otherObj = (btCollisionObject*) proxy0->m_clientObject; + + //call needsResponse, see http://code.google.com/p/bullet/issues/detail?id=179 + if (m_dispatcher->needsResponse(m_me,otherObj)) + { + ///don't do CCD when there are already contact points (touching contact/penetration) + btAlignedObjectArray manifoldArray; + btBroadphasePair* collisionPair = m_pairCache->findPair(m_me->getBroadphaseHandle(),proxy0); + if (collisionPair) + { + if (collisionPair->m_algorithm) + { + manifoldArray.resize(0); + collisionPair->m_algorithm->getAllContactManifolds(manifoldArray); + for (int j=0;jgetNumContacts()>0) + return false; + } + } + } + } + return true; + } + + +}; + +///internal debugging variable. this value shouldn't be too high +int gNumClampedCcdMotions=0; + +//#include "stdio.h" +void btDiscreteDynamicsWorld::integrateTransforms(btScalar timeStep) +{ + BT_PROFILE("integrateTransforms"); + btTransform predictedTrans; + for ( int i=0;isetHitFraction(1.f); + + if (body->isActive() && (!body->isStaticOrKinematicObject())) + { + body->predictIntegratedTransform(timeStep, predictedTrans); + btScalar squareMotion = (predictedTrans.getOrigin()-body->getWorldTransform().getOrigin()).length2(); + + if (body->getCcdSquareMotionThreshold() && body->getCcdSquareMotionThreshold() < squareMotion) + { + BT_PROFILE("CCD motion clamping"); + if (body->getCollisionShape()->isConvex()) + { + gNumClampedCcdMotions++; + + btClosestNotMeConvexResultCallback sweepResults(body,body->getWorldTransform().getOrigin(),predictedTrans.getOrigin(),getBroadphase()->getOverlappingPairCache(),getDispatcher()); + //btConvexShape* convexShape = static_cast(body->getCollisionShape()); + btSphereShape tmpSphere(body->getCcdSweptSphereRadius());//btConvexShape* convexShape = static_cast(body->getCollisionShape()); + + sweepResults.m_collisionFilterGroup = body->getBroadphaseProxy()->m_collisionFilterGroup; + sweepResults.m_collisionFilterMask = body->getBroadphaseProxy()->m_collisionFilterMask; + + convexSweepTest(&tmpSphere,body->getWorldTransform(),predictedTrans,sweepResults); + if (sweepResults.hasHit() && (sweepResults.m_closestHitFraction < 1.f)) + { + body->setHitFraction(sweepResults.m_closestHitFraction); + body->predictIntegratedTransform(timeStep*body->getHitFraction(), predictedTrans); + body->setHitFraction(0.f); +// printf("clamped integration to hit fraction = %f\n",fraction); + } + } + } + + body->proceedToTransform( predictedTrans); + } + } +} + + + + + +void btDiscreteDynamicsWorld::predictUnconstraintMotion(btScalar timeStep) +{ + BT_PROFILE("predictUnconstraintMotion"); + for ( int i=0;iisStaticOrKinematicObject()) + { + body->integrateVelocities( timeStep); + //damping + body->applyDamping(timeStep); + + body->predictIntegratedTransform(timeStep,body->getInterpolationWorldTransform()); + } + } +} + + +void btDiscreteDynamicsWorld::startProfiling(btScalar timeStep) +{ + (void)timeStep; + +#ifndef BT_NO_PROFILE + CProfileManager::Reset(); +#endif //BT_NO_PROFILE + +} + + + + + + +void btDiscreteDynamicsWorld::debugDrawConstraint(btTypedConstraint* constraint) +{ + bool drawFrames = (getDebugDrawer()->getDebugMode() & btIDebugDraw::DBG_DrawConstraints) != 0; + bool drawLimits = (getDebugDrawer()->getDebugMode() & btIDebugDraw::DBG_DrawConstraintLimits) != 0; + btScalar dbgDrawSize = constraint->getDbgDrawSize(); + if(dbgDrawSize <= btScalar(0.f)) + { + return; + } + + switch(constraint->getConstraintType()) + { + case POINT2POINT_CONSTRAINT_TYPE: + { + btPoint2PointConstraint* p2pC = (btPoint2PointConstraint*)constraint; + btTransform tr; + tr.setIdentity(); + btVector3 pivot = p2pC->getPivotInA(); + pivot = p2pC->getRigidBodyA().getCenterOfMassTransform() * pivot; + tr.setOrigin(pivot); + getDebugDrawer()->drawTransform(tr, dbgDrawSize); + // that ideally should draw the same frame + pivot = p2pC->getPivotInB(); + pivot = p2pC->getRigidBodyB().getCenterOfMassTransform() * pivot; + tr.setOrigin(pivot); + if(drawFrames) getDebugDrawer()->drawTransform(tr, dbgDrawSize); + } + break; + case HINGE_CONSTRAINT_TYPE: + { + btHingeConstraint* pHinge = (btHingeConstraint*)constraint; + btTransform tr = pHinge->getRigidBodyA().getCenterOfMassTransform() * pHinge->getAFrame(); + if(drawFrames) getDebugDrawer()->drawTransform(tr, dbgDrawSize); + tr = pHinge->getRigidBodyB().getCenterOfMassTransform() * pHinge->getBFrame(); + if(drawFrames) getDebugDrawer()->drawTransform(tr, dbgDrawSize); + btScalar minAng = pHinge->getLowerLimit(); + btScalar maxAng = pHinge->getUpperLimit(); + if(minAng == maxAng) + { + break; + } + bool drawSect = true; + if(minAng > maxAng) + { + minAng = btScalar(0.f); + maxAng = SIMD_2_PI; + drawSect = false; + } + if(drawLimits) + { + btVector3& center = tr.getOrigin(); + btVector3 normal = tr.getBasis().getColumn(2); + btVector3 axis = tr.getBasis().getColumn(0); + getDebugDrawer()->drawArc(center, normal, axis, dbgDrawSize, dbgDrawSize, minAng, maxAng, btVector3(0,0,0), drawSect); + } + } + break; + case CONETWIST_CONSTRAINT_TYPE: + { + btConeTwistConstraint* pCT = (btConeTwistConstraint*)constraint; + btTransform tr = pCT->getRigidBodyA().getCenterOfMassTransform() * pCT->getAFrame(); + if(drawFrames) getDebugDrawer()->drawTransform(tr, dbgDrawSize); + tr = pCT->getRigidBodyB().getCenterOfMassTransform() * pCT->getBFrame(); + if(drawFrames) getDebugDrawer()->drawTransform(tr, dbgDrawSize); + if(drawLimits) + { + //const btScalar length = btScalar(5); + const btScalar length = dbgDrawSize; + static int nSegments = 8*4; + btScalar fAngleInRadians = btScalar(2.*3.1415926) * (btScalar)(nSegments-1)/btScalar(nSegments); + btVector3 pPrev = pCT->GetPointForAngle(fAngleInRadians, length); + pPrev = tr * pPrev; + for (int i=0; iGetPointForAngle(fAngleInRadians, length); + pCur = tr * pCur; + getDebugDrawer()->drawLine(pPrev, pCur, btVector3(0,0,0)); + + if (i%(nSegments/8) == 0) + getDebugDrawer()->drawLine(tr.getOrigin(), pCur, btVector3(0,0,0)); + + pPrev = pCur; + } + btScalar tws = pCT->getTwistSpan(); + btScalar twa = pCT->getTwistAngle(); + bool useFrameB = (pCT->getRigidBodyB().getInvMass() > btScalar(0.f)); + if(useFrameB) + { + tr = pCT->getRigidBodyB().getCenterOfMassTransform() * pCT->getBFrame(); + } + else + { + tr = pCT->getRigidBodyA().getCenterOfMassTransform() * pCT->getAFrame(); + } + btVector3 pivot = tr.getOrigin(); + btVector3 normal = tr.getBasis().getColumn(0); + btVector3 axis1 = tr.getBasis().getColumn(1); + getDebugDrawer()->drawArc(pivot, normal, axis1, dbgDrawSize, dbgDrawSize, -twa-tws, -twa+tws, btVector3(0,0,0), true); + + } + } + break; + case D6_CONSTRAINT_TYPE: + { + btGeneric6DofConstraint* p6DOF = (btGeneric6DofConstraint*)constraint; + btTransform tr = p6DOF->getCalculatedTransformA(); + if(drawFrames) getDebugDrawer()->drawTransform(tr, dbgDrawSize); + tr = p6DOF->getCalculatedTransformB(); + if(drawFrames) getDebugDrawer()->drawTransform(tr, dbgDrawSize); + if(drawLimits) + { + tr = p6DOF->getCalculatedTransformA(); + const btVector3& center = p6DOF->getCalculatedTransformB().getOrigin(); + btVector3 up = tr.getBasis().getColumn(2); + btVector3 axis = tr.getBasis().getColumn(0); + btScalar minTh = p6DOF->getRotationalLimitMotor(1)->m_loLimit; + btScalar maxTh = p6DOF->getRotationalLimitMotor(1)->m_hiLimit; + btScalar minPs = p6DOF->getRotationalLimitMotor(2)->m_loLimit; + btScalar maxPs = p6DOF->getRotationalLimitMotor(2)->m_hiLimit; + getDebugDrawer()->drawSpherePatch(center, up, axis, dbgDrawSize * btScalar(.9f), minTh, maxTh, minPs, maxPs, btVector3(0,0,0)); + axis = tr.getBasis().getColumn(1); + btScalar ay = p6DOF->getAngle(1); + btScalar az = p6DOF->getAngle(2); + btScalar cy = btCos(ay); + btScalar sy = btSin(ay); + btScalar cz = btCos(az); + btScalar sz = btSin(az); + btVector3 ref; + ref[0] = cy*cz*axis[0] + cy*sz*axis[1] - sy*axis[2]; + ref[1] = -sz*axis[0] + cz*axis[1]; + ref[2] = cz*sy*axis[0] + sz*sy*axis[1] + cy*axis[2]; + tr = p6DOF->getCalculatedTransformB(); + btVector3 normal = -tr.getBasis().getColumn(0); + btScalar minFi = p6DOF->getRotationalLimitMotor(0)->m_loLimit; + btScalar maxFi = p6DOF->getRotationalLimitMotor(0)->m_hiLimit; + if(minFi > maxFi) + { + getDebugDrawer()->drawArc(center, normal, ref, dbgDrawSize, dbgDrawSize, -SIMD_PI, SIMD_PI, btVector3(0,0,0), false); + } + else if(minFi < maxFi) + { + getDebugDrawer()->drawArc(center, normal, ref, dbgDrawSize, dbgDrawSize, minFi, maxFi, btVector3(0,0,0), true); + } + tr = p6DOF->getCalculatedTransformA(); + btVector3 bbMin = p6DOF->getTranslationalLimitMotor()->m_lowerLimit; + btVector3 bbMax = p6DOF->getTranslationalLimitMotor()->m_upperLimit; + getDebugDrawer()->drawBox(bbMin, bbMax, tr, btVector3(0,0,0)); + } + } + break; + case SLIDER_CONSTRAINT_TYPE: + { + btSliderConstraint* pSlider = (btSliderConstraint*)constraint; + btTransform tr = pSlider->getCalculatedTransformA(); + if(drawFrames) getDebugDrawer()->drawTransform(tr, dbgDrawSize); + tr = pSlider->getCalculatedTransformB(); + if(drawFrames) getDebugDrawer()->drawTransform(tr, dbgDrawSize); + if(drawLimits) + { + btTransform tr = pSlider->getUseLinearReferenceFrameA() ? pSlider->getCalculatedTransformA() : pSlider->getCalculatedTransformB(); + btVector3 li_min = tr * btVector3(pSlider->getLowerLinLimit(), 0.f, 0.f); + btVector3 li_max = tr * btVector3(pSlider->getUpperLinLimit(), 0.f, 0.f); + getDebugDrawer()->drawLine(li_min, li_max, btVector3(0, 0, 0)); + btVector3 normal = tr.getBasis().getColumn(0); + btVector3 axis = tr.getBasis().getColumn(1); + btScalar a_min = pSlider->getLowerAngLimit(); + btScalar a_max = pSlider->getUpperAngLimit(); + const btVector3& center = pSlider->getCalculatedTransformB().getOrigin(); + getDebugDrawer()->drawArc(center, normal, axis, dbgDrawSize, dbgDrawSize, a_min, a_max, btVector3(0,0,0), true); + } + } + break; + default : + break; + } + return; +} + + + + + +void btDiscreteDynamicsWorld::setConstraintSolver(btConstraintSolver* solver) +{ + if (m_ownsConstraintSolver) + { + btAlignedFree( m_constraintSolver); + } + m_ownsConstraintSolver = false; + m_constraintSolver = solver; +} + +btConstraintSolver* btDiscreteDynamicsWorld::getConstraintSolver() +{ + return m_constraintSolver; +} + + +int btDiscreteDynamicsWorld::getNumConstraints() const +{ + return int(m_constraints.size()); +} +btTypedConstraint* btDiscreteDynamicsWorld::getConstraint(int index) +{ + return m_constraints[index]; +} +const btTypedConstraint* btDiscreteDynamicsWorld::getConstraint(int index) const +{ + return m_constraints[index]; +} + + + +void btDiscreteDynamicsWorld::serializeRigidBodies(btSerializer* serializer) +{ + int i; + //serialize all collision objects + for (i=0;igetInternalType() == btCollisionObject::CO_RIGID_BODY) + { + int len = colObj->calculateSerializeBufferSize(); + btChunk* chunk = serializer->allocate(len,1); + const char* structType = colObj->serialize(chunk->m_oldPtr, serializer); + serializer->finalizeChunk(chunk,structType,BT_RIGIDBODY_CODE,colObj); + } + } + + for (i=0;icalculateSerializeBufferSize(); + btChunk* chunk = serializer->allocate(size,1); + const char* structType = constraint->serialize(chunk->m_oldPtr,serializer); + serializer->finalizeChunk(chunk,structType,BT_CONSTRAINT_CODE,constraint); + } +} + + +void btDiscreteDynamicsWorld::serialize(btSerializer* serializer) +{ + + serializer->startSerialization(); + + serializeRigidBodies(serializer); + + serializeCollisionObjects(serializer); + + serializer->finishSerialization(); +} + diff --git a/extern/bullet2/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h b/extern/bullet2/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h new file mode 100644 index 00000000000..df47c29044f --- /dev/null +++ b/extern/bullet2/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h @@ -0,0 +1,198 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef BT_DISCRETE_DYNAMICS_WORLD_H +#define BT_DISCRETE_DYNAMICS_WORLD_H + +#include "btDynamicsWorld.h" + +class btDispatcher; +class btOverlappingPairCache; +class btConstraintSolver; +class btSimulationIslandManager; +class btTypedConstraint; +class btActionInterface; + +class btIDebugDraw; +#include "LinearMath/btAlignedObjectArray.h" + + +///btDiscreteDynamicsWorld provides discrete rigid body simulation +///those classes replace the obsolete CcdPhysicsEnvironment/CcdPhysicsController +class btDiscreteDynamicsWorld : public btDynamicsWorld +{ +protected: + + btConstraintSolver* m_constraintSolver; + + btSimulationIslandManager* m_islandManager; + + btAlignedObjectArray m_constraints; + + btAlignedObjectArray m_nonStaticRigidBodies; + + btVector3 m_gravity; + + //for variable timesteps + btScalar m_localTime; + //for variable timesteps + + bool m_ownsIslandManager; + bool m_ownsConstraintSolver; + bool m_synchronizeAllMotionStates; + + btAlignedObjectArray m_actions; + + int m_profileTimings; + + virtual void predictUnconstraintMotion(btScalar timeStep); + + virtual void integrateTransforms(btScalar timeStep); + + virtual void calculateSimulationIslands(); + + virtual void solveConstraints(btContactSolverInfo& solverInfo); + + void updateActivationState(btScalar timeStep); + + void updateActions(btScalar timeStep); + + void startProfiling(btScalar timeStep); + + virtual void internalSingleStepSimulation( btScalar timeStep); + + + virtual void saveKinematicState(btScalar timeStep); + + void serializeRigidBodies(btSerializer* serializer); + +public: + + + ///this btDiscreteDynamicsWorld constructor gets created objects from the user, and will not delete those + btDiscreteDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration); + + virtual ~btDiscreteDynamicsWorld(); + + ///if maxSubSteps > 0, it will interpolate motion between fixedTimeStep's + virtual int stepSimulation( btScalar timeStep,int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.)); + + + virtual void synchronizeMotionStates(); + + ///this can be useful to synchronize a single rigid body -> graphics object + void synchronizeSingleMotionState(btRigidBody* body); + + virtual void addConstraint(btTypedConstraint* constraint, bool disableCollisionsBetweenLinkedBodies=false); + + virtual void removeConstraint(btTypedConstraint* constraint); + + virtual void addAction(btActionInterface*); + + virtual void removeAction(btActionInterface*); + + btSimulationIslandManager* getSimulationIslandManager() + { + return m_islandManager; + } + + const btSimulationIslandManager* getSimulationIslandManager() const + { + return m_islandManager; + } + + btCollisionWorld* getCollisionWorld() + { + return this; + } + + virtual void setGravity(const btVector3& gravity); + + virtual btVector3 getGravity () const; + + virtual void addCollisionObject(btCollisionObject* collisionObject,short int collisionFilterGroup=btBroadphaseProxy::StaticFilter,short int collisionFilterMask=btBroadphaseProxy::AllFilter ^ btBroadphaseProxy::StaticFilter); + + virtual void addRigidBody(btRigidBody* body); + + virtual void addRigidBody(btRigidBody* body, short group, short mask); + + virtual void removeRigidBody(btRigidBody* body); + + ///removeCollisionObject will first check if it is a rigid body, if so call removeRigidBody otherwise call btCollisionWorld::removeCollisionObject + virtual void removeCollisionObject(btCollisionObject* collisionObject); + + + void debugDrawConstraint(btTypedConstraint* constraint); + + virtual void debugDrawWorld(); + + virtual void setConstraintSolver(btConstraintSolver* solver); + + virtual btConstraintSolver* getConstraintSolver(); + + virtual int getNumConstraints() const; + + virtual btTypedConstraint* getConstraint(int index) ; + + virtual const btTypedConstraint* getConstraint(int index) const; + + + virtual btDynamicsWorldType getWorldType() const + { + return BT_DISCRETE_DYNAMICS_WORLD; + } + + ///the forces on each rigidbody is accumulating together with gravity. clear this after each timestep. + virtual void clearForces(); + + ///apply gravity, call this once per timestep + virtual void applyGravity(); + + virtual void setNumTasks(int numTasks) + { + (void) numTasks; + } + + ///obsolete, use updateActions instead + virtual void updateVehicles(btScalar timeStep) + { + updateActions(timeStep); + } + + ///obsolete, use addAction instead + virtual void addVehicle(btActionInterface* vehicle); + ///obsolete, use removeAction instead + virtual void removeVehicle(btActionInterface* vehicle); + ///obsolete, use addAction instead + virtual void addCharacter(btActionInterface* character); + ///obsolete, use removeAction instead + virtual void removeCharacter(btActionInterface* character); + + void setSynchronizeAllMotionStates(bool synchronizeAll) + { + m_synchronizeAllMotionStates = synchronizeAll; + } + bool getSynchronizeAllMotionStates() const + { + return m_synchronizeAllMotionStates; + } + + ///Preliminary serialization test for Bullet 2.76. Loading those files requires a separate parser (see Bullet/Demos/SerializeDemo) + virtual void serialize(btSerializer* serializer); + +}; + +#endif //BT_DISCRETE_DYNAMICS_WORLD_H diff --git a/extern/bullet2/BulletDynamics/Dynamics/btDynamicsWorld.h b/extern/bullet2/BulletDynamics/Dynamics/btDynamicsWorld.h new file mode 100644 index 00000000000..a7b85afbec9 --- /dev/null +++ b/extern/bullet2/BulletDynamics/Dynamics/btDynamicsWorld.h @@ -0,0 +1,148 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_DYNAMICS_WORLD_H +#define BT_DYNAMICS_WORLD_H + +#include "BulletCollision/CollisionDispatch/btCollisionWorld.h" +#include "BulletDynamics/ConstraintSolver/btContactSolverInfo.h" + +class btTypedConstraint; +class btActionInterface; +class btConstraintSolver; +class btDynamicsWorld; + + +/// Type for the callback for each tick +typedef void (*btInternalTickCallback)(btDynamicsWorld *world, btScalar timeStep); + +enum btDynamicsWorldType +{ + BT_SIMPLE_DYNAMICS_WORLD=1, + BT_DISCRETE_DYNAMICS_WORLD=2, + BT_CONTINUOUS_DYNAMICS_WORLD=3 +}; + +///The btDynamicsWorld is the interface class for several dynamics implementation, basic, discrete, parallel, and continuous etc. +class btDynamicsWorld : public btCollisionWorld +{ + +protected: + btInternalTickCallback m_internalTickCallback; + btInternalTickCallback m_internalPreTickCallback; + void* m_worldUserInfo; + + btContactSolverInfo m_solverInfo; + +public: + + + btDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* broadphase,btCollisionConfiguration* collisionConfiguration) + :btCollisionWorld(dispatcher,broadphase,collisionConfiguration), m_internalTickCallback(0),m_internalPreTickCallback(0), m_worldUserInfo(0) + { + } + + virtual ~btDynamicsWorld() + { + } + + ///stepSimulation proceeds the simulation over 'timeStep', units in preferably in seconds. + ///By default, Bullet will subdivide the timestep in constant substeps of each 'fixedTimeStep'. + ///in order to keep the simulation real-time, the maximum number of substeps can be clamped to 'maxSubSteps'. + ///You can disable subdividing the timestep/substepping by passing maxSubSteps=0 as second argument to stepSimulation, but in that case you have to keep the timeStep constant. + virtual int stepSimulation( btScalar timeStep,int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.))=0; + + virtual void debugDrawWorld() = 0; + + virtual void addConstraint(btTypedConstraint* constraint, bool disableCollisionsBetweenLinkedBodies=false) + { + (void)constraint; (void)disableCollisionsBetweenLinkedBodies; + } + + virtual void removeConstraint(btTypedConstraint* constraint) {(void)constraint;} + + virtual void addAction(btActionInterface* action) = 0; + + virtual void removeAction(btActionInterface* action) = 0; + + //once a rigidbody is added to the dynamics world, it will get this gravity assigned + //existing rigidbodies in the world get gravity assigned too, during this method + virtual void setGravity(const btVector3& gravity) = 0; + virtual btVector3 getGravity () const = 0; + + virtual void synchronizeMotionStates() = 0; + + virtual void addRigidBody(btRigidBody* body) = 0; + + virtual void removeRigidBody(btRigidBody* body) = 0; + + virtual void setConstraintSolver(btConstraintSolver* solver) = 0; + + virtual btConstraintSolver* getConstraintSolver() = 0; + + virtual int getNumConstraints() const { return 0; } + + virtual btTypedConstraint* getConstraint(int index) { (void)index; return 0; } + + virtual const btTypedConstraint* getConstraint(int index) const { (void)index; return 0; } + + virtual btDynamicsWorldType getWorldType() const=0; + + virtual void clearForces() = 0; + + /// Set the callback for when an internal tick (simulation substep) happens, optional user info + void setInternalTickCallback(btInternalTickCallback cb, void* worldUserInfo=0,bool isPreTick=false) + { + if (isPreTick) + { + m_internalPreTickCallback = cb; + } else + { + m_internalTickCallback = cb; + } + m_worldUserInfo = worldUserInfo; + } + + void setWorldUserInfo(void* worldUserInfo) + { + m_worldUserInfo = worldUserInfo; + } + + void* getWorldUserInfo() const + { + return m_worldUserInfo; + } + + btContactSolverInfo& getSolverInfo() + { + return m_solverInfo; + } + + + ///obsolete, use addAction instead. + virtual void addVehicle(btActionInterface* vehicle) {(void)vehicle;} + ///obsolete, use removeAction instead + virtual void removeVehicle(btActionInterface* vehicle) {(void)vehicle;} + ///obsolete, use addAction instead. + virtual void addCharacter(btActionInterface* character) {(void)character;} + ///obsolete, use removeAction instead + virtual void removeCharacter(btActionInterface* character) {(void)character;} + + +}; + +#endif //BT_DYNAMICS_WORLD_H + + diff --git a/extern/bullet2/BulletDynamics/Dynamics/btRigidBody.cpp b/extern/bullet2/BulletDynamics/Dynamics/btRigidBody.cpp new file mode 100644 index 00000000000..35de8e47570 --- /dev/null +++ b/extern/bullet2/BulletDynamics/Dynamics/btRigidBody.cpp @@ -0,0 +1,400 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btRigidBody.h" +#include "BulletCollision/CollisionShapes/btConvexShape.h" +#include "LinearMath/btMinMax.h" +#include "LinearMath/btTransformUtil.h" +#include "LinearMath/btMotionState.h" +#include "BulletDynamics/ConstraintSolver/btTypedConstraint.h" +#include "LinearMath/btSerializer.h" + +//'temporarily' global variables +btScalar gDeactivationTime = btScalar(2.); +bool gDisableDeactivation = false; +static int uniqueId = 0; + + +btRigidBody::btRigidBody(const btRigidBody::btRigidBodyConstructionInfo& constructionInfo) +{ + setupRigidBody(constructionInfo); +} + +btRigidBody::btRigidBody(btScalar mass, btMotionState *motionState, btCollisionShape *collisionShape, const btVector3 &localInertia) +{ + btRigidBodyConstructionInfo cinfo(mass,motionState,collisionShape,localInertia); + setupRigidBody(cinfo); +} + +void btRigidBody::setupRigidBody(const btRigidBody::btRigidBodyConstructionInfo& constructionInfo) +{ + + m_internalType=CO_RIGID_BODY; + + m_linearVelocity.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0)); + m_angularVelocity.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); + m_angularFactor.setValue(1,1,1); + m_linearFactor.setValue(1,1,1); + m_gravity.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0)); + m_gravity_acceleration.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0)); + m_totalForce.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0)); + m_totalTorque.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0)), + m_linearDamping = btScalar(0.); + m_angularDamping = btScalar(0.5); + m_linearSleepingThreshold = constructionInfo.m_linearSleepingThreshold; + m_angularSleepingThreshold = constructionInfo.m_angularSleepingThreshold; + m_optionalMotionState = constructionInfo.m_motionState; + m_contactSolverType = 0; + m_frictionSolverType = 0; + m_additionalDamping = constructionInfo.m_additionalDamping; + m_additionalDampingFactor = constructionInfo.m_additionalDampingFactor; + m_additionalLinearDampingThresholdSqr = constructionInfo.m_additionalLinearDampingThresholdSqr; + m_additionalAngularDampingThresholdSqr = constructionInfo.m_additionalAngularDampingThresholdSqr; + m_additionalAngularDampingFactor = constructionInfo.m_additionalAngularDampingFactor; + + if (m_optionalMotionState) + { + m_optionalMotionState->getWorldTransform(m_worldTransform); + } else + { + m_worldTransform = constructionInfo.m_startWorldTransform; + } + + m_interpolationWorldTransform = m_worldTransform; + m_interpolationLinearVelocity.setValue(0,0,0); + m_interpolationAngularVelocity.setValue(0,0,0); + + //moved to btCollisionObject + m_friction = constructionInfo.m_friction; + m_restitution = constructionInfo.m_restitution; + + setCollisionShape( constructionInfo.m_collisionShape ); + m_debugBodyId = uniqueId++; + + setMassProps(constructionInfo.m_mass, constructionInfo.m_localInertia); + setDamping(constructionInfo.m_linearDamping, constructionInfo.m_angularDamping); + updateInertiaTensor(); + + m_rigidbodyFlags = 0; + + + m_deltaLinearVelocity.setZero(); + m_deltaAngularVelocity.setZero(); + m_invMass = m_inverseMass*m_linearFactor; + m_pushVelocity.setZero(); + m_turnVelocity.setZero(); + + + +} + + +void btRigidBody::predictIntegratedTransform(btScalar timeStep,btTransform& predictedTransform) +{ + btTransformUtil::integrateTransform(m_worldTransform,m_linearVelocity,m_angularVelocity,timeStep,predictedTransform); +} + +void btRigidBody::saveKinematicState(btScalar timeStep) +{ + //todo: clamp to some (user definable) safe minimum timestep, to limit maximum angular/linear velocities + if (timeStep != btScalar(0.)) + { + //if we use motionstate to synchronize world transforms, get the new kinematic/animated world transform + if (getMotionState()) + getMotionState()->getWorldTransform(m_worldTransform); + btVector3 linVel,angVel; + + btTransformUtil::calculateVelocity(m_interpolationWorldTransform,m_worldTransform,timeStep,m_linearVelocity,m_angularVelocity); + m_interpolationLinearVelocity = m_linearVelocity; + m_interpolationAngularVelocity = m_angularVelocity; + m_interpolationWorldTransform = m_worldTransform; + //printf("angular = %f %f %f\n",m_angularVelocity.getX(),m_angularVelocity.getY(),m_angularVelocity.getZ()); + } +} + +void btRigidBody::getAabb(btVector3& aabbMin,btVector3& aabbMax) const +{ + getCollisionShape()->getAabb(m_worldTransform,aabbMin,aabbMax); +} + + + + +void btRigidBody::setGravity(const btVector3& acceleration) +{ + if (m_inverseMass != btScalar(0.0)) + { + m_gravity = acceleration * (btScalar(1.0) / m_inverseMass); + } + m_gravity_acceleration = acceleration; +} + + + + + + +void btRigidBody::setDamping(btScalar lin_damping, btScalar ang_damping) +{ + m_linearDamping = GEN_clamped(lin_damping, (btScalar)btScalar(0.0), (btScalar)btScalar(1.0)); + m_angularDamping = GEN_clamped(ang_damping, (btScalar)btScalar(0.0), (btScalar)btScalar(1.0)); +} + + + + +///applyDamping damps the velocity, using the given m_linearDamping and m_angularDamping +void btRigidBody::applyDamping(btScalar timeStep) +{ + //On new damping: see discussion/issue report here: http://code.google.com/p/bullet/issues/detail?id=74 + //todo: do some performance comparisons (but other parts of the engine are probably bottleneck anyway + +//#define USE_OLD_DAMPING_METHOD 1 +#ifdef USE_OLD_DAMPING_METHOD + m_linearVelocity *= GEN_clamped((btScalar(1.) - timeStep * m_linearDamping), (btScalar)btScalar(0.0), (btScalar)btScalar(1.0)); + m_angularVelocity *= GEN_clamped((btScalar(1.) - timeStep * m_angularDamping), (btScalar)btScalar(0.0), (btScalar)btScalar(1.0)); +#else + m_linearVelocity *= btPow(btScalar(1)-m_linearDamping, timeStep); + m_angularVelocity *= btPow(btScalar(1)-m_angularDamping, timeStep); +#endif + + if (m_additionalDamping) + { + //Additional damping can help avoiding lowpass jitter motion, help stability for ragdolls etc. + //Such damping is undesirable, so once the overall simulation quality of the rigid body dynamics system has improved, this should become obsolete + if ((m_angularVelocity.length2() < m_additionalAngularDampingThresholdSqr) && + (m_linearVelocity.length2() < m_additionalLinearDampingThresholdSqr)) + { + m_angularVelocity *= m_additionalDampingFactor; + m_linearVelocity *= m_additionalDampingFactor; + } + + + btScalar speed = m_linearVelocity.length(); + if (speed < m_linearDamping) + { + btScalar dampVel = btScalar(0.005); + if (speed > dampVel) + { + btVector3 dir = m_linearVelocity.normalized(); + m_linearVelocity -= dir * dampVel; + } else + { + m_linearVelocity.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); + } + } + + btScalar angSpeed = m_angularVelocity.length(); + if (angSpeed < m_angularDamping) + { + btScalar angDampVel = btScalar(0.005); + if (angSpeed > angDampVel) + { + btVector3 dir = m_angularVelocity.normalized(); + m_angularVelocity -= dir * angDampVel; + } else + { + m_angularVelocity.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); + } + } + } +} + + +void btRigidBody::applyGravity() +{ + if (isStaticOrKinematicObject()) + return; + + applyCentralForce(m_gravity); + +} + +void btRigidBody::proceedToTransform(const btTransform& newTrans) +{ + setCenterOfMassTransform( newTrans ); +} + + +void btRigidBody::setMassProps(btScalar mass, const btVector3& inertia) +{ + if (mass == btScalar(0.)) + { + m_collisionFlags |= btCollisionObject::CF_STATIC_OBJECT; + m_inverseMass = btScalar(0.); + } else + { + m_collisionFlags &= (~btCollisionObject::CF_STATIC_OBJECT); + m_inverseMass = btScalar(1.0) / mass; + } + + m_invInertiaLocal.setValue(inertia.x() != btScalar(0.0) ? btScalar(1.0) / inertia.x(): btScalar(0.0), + inertia.y() != btScalar(0.0) ? btScalar(1.0) / inertia.y(): btScalar(0.0), + inertia.z() != btScalar(0.0) ? btScalar(1.0) / inertia.z(): btScalar(0.0)); + + m_invMass = m_linearFactor*m_inverseMass; +} + + + +void btRigidBody::updateInertiaTensor() +{ + m_invInertiaTensorWorld = m_worldTransform.getBasis().scaled(m_invInertiaLocal) * m_worldTransform.getBasis().transpose(); +} + + +void btRigidBody::integrateVelocities(btScalar step) +{ + if (isStaticOrKinematicObject()) + return; + + m_linearVelocity += m_totalForce * (m_inverseMass * step); + m_angularVelocity += m_invInertiaTensorWorld * m_totalTorque * step; + +#define MAX_ANGVEL SIMD_HALF_PI + /// clamp angular velocity. collision calculations will fail on higher angular velocities + btScalar angvel = m_angularVelocity.length(); + if (angvel*step > MAX_ANGVEL) + { + m_angularVelocity *= (MAX_ANGVEL/step) /angvel; + } + +} + +btQuaternion btRigidBody::getOrientation() const +{ + btQuaternion orn; + m_worldTransform.getBasis().getRotation(orn); + return orn; +} + + +void btRigidBody::setCenterOfMassTransform(const btTransform& xform) +{ + + if (isStaticOrKinematicObject()) + { + m_interpolationWorldTransform = m_worldTransform; + } else + { + m_interpolationWorldTransform = xform; + } + m_interpolationLinearVelocity = getLinearVelocity(); + m_interpolationAngularVelocity = getAngularVelocity(); + m_worldTransform = xform; + updateInertiaTensor(); +} + + +bool btRigidBody::checkCollideWithOverride(btCollisionObject* co) +{ + btRigidBody* otherRb = btRigidBody::upcast(co); + if (!otherRb) + return true; + + for (int i = 0; i < m_constraintRefs.size(); ++i) + { + btTypedConstraint* c = m_constraintRefs[i]; + if (&c->getRigidBodyA() == otherRb || &c->getRigidBodyB() == otherRb) + return false; + } + + return true; +} + +void btRigidBody::internalWritebackVelocity(btScalar timeStep) +{ + (void) timeStep; + if (m_inverseMass) + { + setLinearVelocity(getLinearVelocity()+ m_deltaLinearVelocity); + setAngularVelocity(getAngularVelocity()+m_deltaAngularVelocity); + + //correct the position/orientation based on push/turn recovery + btTransform newTransform; + btTransformUtil::integrateTransform(getWorldTransform(),m_pushVelocity,m_turnVelocity,timeStep,newTransform); + setWorldTransform(newTransform); + //m_originalBody->setCompanionId(-1); + } + m_deltaLinearVelocity.setZero(); + m_deltaAngularVelocity .setZero(); + m_pushVelocity.setZero(); + m_turnVelocity.setZero(); +} + + + +void btRigidBody::addConstraintRef(btTypedConstraint* c) +{ + int index = m_constraintRefs.findLinearSearch(c); + if (index == m_constraintRefs.size()) + m_constraintRefs.push_back(c); + + m_checkCollideWith = true; +} + +void btRigidBody::removeConstraintRef(btTypedConstraint* c) +{ + m_constraintRefs.remove(c); + m_checkCollideWith = m_constraintRefs.size() > 0; +} + +int btRigidBody::calculateSerializeBufferSize() const +{ + int sz = sizeof(btRigidBodyData); + return sz; +} + + ///fills the dataBuffer and returns the struct name (and 0 on failure) +const char* btRigidBody::serialize(void* dataBuffer, class btSerializer* serializer) const +{ + btRigidBodyData* rbd = (btRigidBodyData*) dataBuffer; + + btCollisionObject::serialize(&rbd->m_collisionObjectData, serializer); + + m_invInertiaTensorWorld.serialize(rbd->m_invInertiaTensorWorld); + m_linearVelocity.serialize(rbd->m_linearVelocity); + m_angularVelocity.serialize(rbd->m_angularVelocity); + rbd->m_inverseMass = m_inverseMass; + m_angularFactor.serialize(rbd->m_angularFactor); + m_linearFactor.serialize(rbd->m_linearFactor); + m_gravity.serialize(rbd->m_gravity); + m_gravity_acceleration.serialize(rbd->m_gravity_acceleration); + m_invInertiaLocal.serialize(rbd->m_invInertiaLocal); + m_totalForce.serialize(rbd->m_totalForce); + m_totalTorque.serialize(rbd->m_totalTorque); + rbd->m_linearDamping = m_linearDamping; + rbd->m_angularDamping = m_angularDamping; + rbd->m_additionalDamping = m_additionalDamping; + rbd->m_additionalDampingFactor = m_additionalDampingFactor; + rbd->m_additionalLinearDampingThresholdSqr = m_additionalLinearDampingThresholdSqr; + rbd->m_additionalAngularDampingThresholdSqr = m_additionalAngularDampingThresholdSqr; + rbd->m_additionalAngularDampingFactor = m_additionalAngularDampingFactor; + rbd->m_linearSleepingThreshold=m_linearSleepingThreshold; + rbd->m_angularSleepingThreshold = m_angularSleepingThreshold; + + return btRigidBodyDataName; +} + + + +void btRigidBody::serializeSingleObject(class btSerializer* serializer) const +{ + btChunk* chunk = serializer->allocate(calculateSerializeBufferSize(),1); + const char* structType = serialize(chunk->m_oldPtr, serializer); + serializer->finalizeChunk(chunk,structType,BT_RIGIDBODY_CODE,(void*)this); +} + + diff --git a/extern/bullet2/BulletDynamics/Dynamics/btRigidBody.h b/extern/bullet2/BulletDynamics/Dynamics/btRigidBody.h new file mode 100644 index 00000000000..571a30ce6b8 --- /dev/null +++ b/extern/bullet2/BulletDynamics/Dynamics/btRigidBody.h @@ -0,0 +1,670 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef RIGIDBODY_H +#define RIGIDBODY_H + +#include "LinearMath/btAlignedObjectArray.h" +#include "LinearMath/btTransform.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" + +class btCollisionShape; +class btMotionState; +class btTypedConstraint; + + +extern btScalar gDeactivationTime; +extern bool gDisableDeactivation; + +#ifdef BT_USE_DOUBLE_PRECISION +#define btRigidBodyData btRigidBodyDoubleData +#define btRigidBodyDataName "btRigidBodyDoubleData" +#else +#define btRigidBodyData btRigidBodyFloatData +#define btRigidBodyDataName "btRigidBodyFloatData" +#endif //BT_USE_DOUBLE_PRECISION + + +enum btRigidBodyFlags +{ + BT_DISABLE_WORLD_GRAVITY = 1 +}; + + +///The btRigidBody is the main class for rigid body objects. It is derived from btCollisionObject, so it keeps a pointer to a btCollisionShape. +///It is recommended for performance and memory use to share btCollisionShape objects whenever possible. +///There are 3 types of rigid bodies: +///- A) Dynamic rigid bodies, with positive mass. Motion is controlled by rigid body dynamics. +///- B) Fixed objects with zero mass. They are not moving (basically collision objects) +///- C) Kinematic objects, which are objects without mass, but the user can move them. There is on-way interaction, and Bullet calculates a velocity based on the timestep and previous and current world transform. +///Bullet automatically deactivates dynamic rigid bodies, when the velocity is below a threshold for a given time. +///Deactivated (sleeping) rigid bodies don't take any processing time, except a minor broadphase collision detection impact (to allow active objects to activate/wake up sleeping objects) +class btRigidBody : public btCollisionObject +{ + + btMatrix3x3 m_invInertiaTensorWorld; + btVector3 m_linearVelocity; + btVector3 m_angularVelocity; + btScalar m_inverseMass; + btVector3 m_linearFactor; + + btVector3 m_gravity; + btVector3 m_gravity_acceleration; + btVector3 m_invInertiaLocal; + btVector3 m_totalForce; + btVector3 m_totalTorque; + + btScalar m_linearDamping; + btScalar m_angularDamping; + + bool m_additionalDamping; + btScalar m_additionalDampingFactor; + btScalar m_additionalLinearDampingThresholdSqr; + btScalar m_additionalAngularDampingThresholdSqr; + btScalar m_additionalAngularDampingFactor; + + + btScalar m_linearSleepingThreshold; + btScalar m_angularSleepingThreshold; + + //m_optionalMotionState allows to automatic synchronize the world transform for active objects + btMotionState* m_optionalMotionState; + + //keep track of typed constraints referencing this rigid body + btAlignedObjectArray m_constraintRefs; + + int m_rigidbodyFlags; + + int m_debugBodyId; + + +protected: + + ATTRIBUTE_ALIGNED64(btVector3 m_deltaLinearVelocity); + btVector3 m_deltaAngularVelocity; + btVector3 m_angularFactor; + btVector3 m_invMass; + btVector3 m_pushVelocity; + btVector3 m_turnVelocity; + + +public: + + + ///The btRigidBodyConstructionInfo structure provides information to create a rigid body. Setting mass to zero creates a fixed (non-dynamic) rigid body. + ///For dynamic objects, you can use the collision shape to approximate the local inertia tensor, otherwise use the zero vector (default argument) + ///You can use the motion state to synchronize the world transform between physics and graphics objects. + ///And if the motion state is provided, the rigid body will initialize its initial world transform from the motion state, + ///m_startWorldTransform is only used when you don't provide a motion state. + struct btRigidBodyConstructionInfo + { + btScalar m_mass; + + ///When a motionState is provided, the rigid body will initialize its world transform from the motion state + ///In this case, m_startWorldTransform is ignored. + btMotionState* m_motionState; + btTransform m_startWorldTransform; + + btCollisionShape* m_collisionShape; + btVector3 m_localInertia; + btScalar m_linearDamping; + btScalar m_angularDamping; + + ///best simulation results when friction is non-zero + btScalar m_friction; + ///best simulation results using zero restitution. + btScalar m_restitution; + + btScalar m_linearSleepingThreshold; + btScalar m_angularSleepingThreshold; + + //Additional damping can help avoiding lowpass jitter motion, help stability for ragdolls etc. + //Such damping is undesirable, so once the overall simulation quality of the rigid body dynamics system has improved, this should become obsolete + bool m_additionalDamping; + btScalar m_additionalDampingFactor; + btScalar m_additionalLinearDampingThresholdSqr; + btScalar m_additionalAngularDampingThresholdSqr; + btScalar m_additionalAngularDampingFactor; + + btRigidBodyConstructionInfo( btScalar mass, btMotionState* motionState, btCollisionShape* collisionShape, const btVector3& localInertia=btVector3(0,0,0)): + m_mass(mass), + m_motionState(motionState), + m_collisionShape(collisionShape), + m_localInertia(localInertia), + m_linearDamping(btScalar(0.)), + m_angularDamping(btScalar(0.)), + m_friction(btScalar(0.5)), + m_restitution(btScalar(0.)), + m_linearSleepingThreshold(btScalar(0.8)), + m_angularSleepingThreshold(btScalar(1.f)), + m_additionalDamping(false), + m_additionalDampingFactor(btScalar(0.005)), + m_additionalLinearDampingThresholdSqr(btScalar(0.01)), + m_additionalAngularDampingThresholdSqr(btScalar(0.01)), + m_additionalAngularDampingFactor(btScalar(0.01)) + { + m_startWorldTransform.setIdentity(); + } + }; + + ///btRigidBody constructor using construction info + btRigidBody( const btRigidBodyConstructionInfo& constructionInfo); + + ///btRigidBody constructor for backwards compatibility. + ///To specify friction (etc) during rigid body construction, please use the other constructor (using btRigidBodyConstructionInfo) + btRigidBody( btScalar mass, btMotionState* motionState, btCollisionShape* collisionShape, const btVector3& localInertia=btVector3(0,0,0)); + + + virtual ~btRigidBody() + { + //No constraints should point to this rigidbody + //Remove constraints from the dynamics world before you delete the related rigidbodies. + btAssert(m_constraintRefs.size()==0); + } + +protected: + + ///setupRigidBody is only used internally by the constructor + void setupRigidBody(const btRigidBodyConstructionInfo& constructionInfo); + +public: + + void proceedToTransform(const btTransform& newTrans); + + ///to keep collision detection and dynamics separate we don't store a rigidbody pointer + ///but a rigidbody is derived from btCollisionObject, so we can safely perform an upcast + static const btRigidBody* upcast(const btCollisionObject* colObj) + { + if (colObj->getInternalType()==btCollisionObject::CO_RIGID_BODY) + return (const btRigidBody*)colObj; + return 0; + } + static btRigidBody* upcast(btCollisionObject* colObj) + { + if (colObj->getInternalType()==btCollisionObject::CO_RIGID_BODY) + return (btRigidBody*)colObj; + return 0; + } + + /// continuous collision detection needs prediction + void predictIntegratedTransform(btScalar step, btTransform& predictedTransform) ; + + void saveKinematicState(btScalar step); + + void applyGravity(); + + void setGravity(const btVector3& acceleration); + + const btVector3& getGravity() const + { + return m_gravity_acceleration; + } + + void setDamping(btScalar lin_damping, btScalar ang_damping); + + btScalar getLinearDamping() const + { + return m_linearDamping; + } + + btScalar getAngularDamping() const + { + return m_angularDamping; + } + + btScalar getLinearSleepingThreshold() const + { + return m_linearSleepingThreshold; + } + + btScalar getAngularSleepingThreshold() const + { + return m_angularSleepingThreshold; + } + + void applyDamping(btScalar timeStep); + + SIMD_FORCE_INLINE const btCollisionShape* getCollisionShape() const { + return m_collisionShape; + } + + SIMD_FORCE_INLINE btCollisionShape* getCollisionShape() { + return m_collisionShape; + } + + void setMassProps(btScalar mass, const btVector3& inertia); + + const btVector3& getLinearFactor() const + { + return m_linearFactor; + } + void setLinearFactor(const btVector3& linearFactor) + { + m_linearFactor = linearFactor; + m_invMass = m_linearFactor*m_inverseMass; + } + btScalar getInvMass() const { return m_inverseMass; } + const btMatrix3x3& getInvInertiaTensorWorld() const { + return m_invInertiaTensorWorld; + } + + void integrateVelocities(btScalar step); + + void setCenterOfMassTransform(const btTransform& xform); + + void applyCentralForce(const btVector3& force) + { + m_totalForce += force*m_linearFactor; + } + + const btVector3& getTotalForce() + { + return m_totalForce; + }; + + const btVector3& getTotalTorque() + { + return m_totalTorque; + }; + + const btVector3& getInvInertiaDiagLocal() const + { + return m_invInertiaLocal; + }; + + void setInvInertiaDiagLocal(const btVector3& diagInvInertia) + { + m_invInertiaLocal = diagInvInertia; + } + + void setSleepingThresholds(btScalar linear,btScalar angular) + { + m_linearSleepingThreshold = linear; + m_angularSleepingThreshold = angular; + } + + void applyTorque(const btVector3& torque) + { + m_totalTorque += torque*m_angularFactor; + } + + void applyForce(const btVector3& force, const btVector3& rel_pos) + { + applyCentralForce(force); + applyTorque(rel_pos.cross(force*m_linearFactor)); + } + + void applyCentralImpulse(const btVector3& impulse) + { + m_linearVelocity += impulse *m_linearFactor * m_inverseMass; + } + + void applyTorqueImpulse(const btVector3& torque) + { + m_angularVelocity += m_invInertiaTensorWorld * torque * m_angularFactor; + } + + void applyImpulse(const btVector3& impulse, const btVector3& rel_pos) + { + if (m_inverseMass != btScalar(0.)) + { + applyCentralImpulse(impulse); + if (m_angularFactor) + { + applyTorqueImpulse(rel_pos.cross(impulse*m_linearFactor)); + } + } + } + + void clearForces() + { + m_totalForce.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0)); + m_totalTorque.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0)); + } + + void updateInertiaTensor(); + + const btVector3& getCenterOfMassPosition() const { + return m_worldTransform.getOrigin(); + } + btQuaternion getOrientation() const; + + const btTransform& getCenterOfMassTransform() const { + return m_worldTransform; + } + const btVector3& getLinearVelocity() const { + return m_linearVelocity; + } + const btVector3& getAngularVelocity() const { + return m_angularVelocity; + } + + + inline void setLinearVelocity(const btVector3& lin_vel) + { + m_linearVelocity = lin_vel; + } + + inline void setAngularVelocity(const btVector3& ang_vel) + { + m_angularVelocity = ang_vel; + } + + btVector3 getVelocityInLocalPoint(const btVector3& rel_pos) const + { + //we also calculate lin/ang velocity for kinematic objects + return m_linearVelocity + m_angularVelocity.cross(rel_pos); + + //for kinematic objects, we could also use use: + // return (m_worldTransform(rel_pos) - m_interpolationWorldTransform(rel_pos)) / m_kinematicTimeStep; + } + + void translate(const btVector3& v) + { + m_worldTransform.getOrigin() += v; + } + + + void getAabb(btVector3& aabbMin,btVector3& aabbMax) const; + + + + + + SIMD_FORCE_INLINE btScalar computeImpulseDenominator(const btVector3& pos, const btVector3& normal) const + { + btVector3 r0 = pos - getCenterOfMassPosition(); + + btVector3 c0 = (r0).cross(normal); + + btVector3 vec = (c0 * getInvInertiaTensorWorld()).cross(r0); + + return m_inverseMass + normal.dot(vec); + + } + + SIMD_FORCE_INLINE btScalar computeAngularImpulseDenominator(const btVector3& axis) const + { + btVector3 vec = axis * getInvInertiaTensorWorld(); + return axis.dot(vec); + } + + SIMD_FORCE_INLINE void updateDeactivation(btScalar timeStep) + { + if ( (getActivationState() == ISLAND_SLEEPING) || (getActivationState() == DISABLE_DEACTIVATION)) + return; + + if ((getLinearVelocity().length2() < m_linearSleepingThreshold*m_linearSleepingThreshold) && + (getAngularVelocity().length2() < m_angularSleepingThreshold*m_angularSleepingThreshold)) + { + m_deactivationTime += timeStep; + } else + { + m_deactivationTime=btScalar(0.); + setActivationState(0); + } + + } + + SIMD_FORCE_INLINE bool wantsSleeping() + { + + if (getActivationState() == DISABLE_DEACTIVATION) + return false; + + //disable deactivation + if (gDisableDeactivation || (gDeactivationTime == btScalar(0.))) + return false; + + if ( (getActivationState() == ISLAND_SLEEPING) || (getActivationState() == WANTS_DEACTIVATION)) + return true; + + if (m_deactivationTime> gDeactivationTime) + { + return true; + } + return false; + } + + + + const btBroadphaseProxy* getBroadphaseProxy() const + { + return m_broadphaseHandle; + } + btBroadphaseProxy* getBroadphaseProxy() + { + return m_broadphaseHandle; + } + void setNewBroadphaseProxy(btBroadphaseProxy* broadphaseProxy) + { + m_broadphaseHandle = broadphaseProxy; + } + + //btMotionState allows to automatic synchronize the world transform for active objects + btMotionState* getMotionState() + { + return m_optionalMotionState; + } + const btMotionState* getMotionState() const + { + return m_optionalMotionState; + } + void setMotionState(btMotionState* motionState) + { + m_optionalMotionState = motionState; + if (m_optionalMotionState) + motionState->getWorldTransform(m_worldTransform); + } + + //for experimental overriding of friction/contact solver func + int m_contactSolverType; + int m_frictionSolverType; + + void setAngularFactor(const btVector3& angFac) + { + m_angularFactor = angFac; + } + + void setAngularFactor(btScalar angFac) + { + m_angularFactor.setValue(angFac,angFac,angFac); + } + const btVector3& getAngularFactor() const + { + return m_angularFactor; + } + + //is this rigidbody added to a btCollisionWorld/btDynamicsWorld/btBroadphase? + bool isInWorld() const + { + return (getBroadphaseProxy() != 0); + } + + virtual bool checkCollideWithOverride(btCollisionObject* co); + + void addConstraintRef(btTypedConstraint* c); + void removeConstraintRef(btTypedConstraint* c); + + btTypedConstraint* getConstraintRef(int index) + { + return m_constraintRefs[index]; + } + + int getNumConstraintRefs() + { + return m_constraintRefs.size(); + } + + void setFlags(int flags) + { + m_rigidbodyFlags = flags; + } + + int getFlags() const + { + return m_rigidbodyFlags; + } + + + //////////////////////////////////////////////// + ///some internal methods, don't use them + + btVector3& internalGetDeltaLinearVelocity() + { + return m_deltaLinearVelocity; + } + + btVector3& internalGetDeltaAngularVelocity() + { + return m_deltaAngularVelocity; + } + + const btVector3& internalGetAngularFactor() const + { + return m_angularFactor; + } + + const btVector3& internalGetInvMass() const + { + return m_invMass; + } + + btVector3& internalGetPushVelocity() + { + return m_pushVelocity; + } + + btVector3& internalGetTurnVelocity() + { + return m_turnVelocity; + } + + SIMD_FORCE_INLINE void internalGetVelocityInLocalPointObsolete(const btVector3& rel_pos, btVector3& velocity ) const + { + velocity = getLinearVelocity()+m_deltaLinearVelocity + (getAngularVelocity()+m_deltaAngularVelocity).cross(rel_pos); + } + + SIMD_FORCE_INLINE void internalGetAngularVelocity(btVector3& angVel) const + { + angVel = getAngularVelocity()+m_deltaAngularVelocity; + } + + + //Optimization for the iterative solver: avoid calculating constant terms involving inertia, normal, relative position + SIMD_FORCE_INLINE void internalApplyImpulse(const btVector3& linearComponent, const btVector3& angularComponent,const btScalar impulseMagnitude) + { + if (m_inverseMass) + { + m_deltaLinearVelocity += linearComponent*impulseMagnitude; + m_deltaAngularVelocity += angularComponent*(impulseMagnitude*m_angularFactor); + } + } + + SIMD_FORCE_INLINE void internalApplyPushImpulse(const btVector3& linearComponent, const btVector3& angularComponent,btScalar impulseMagnitude) + { + if (m_inverseMass) + { + m_pushVelocity += linearComponent*impulseMagnitude; + m_turnVelocity += angularComponent*(impulseMagnitude*m_angularFactor); + } + } + + void internalWritebackVelocity() + { + if (m_inverseMass) + { + setLinearVelocity(getLinearVelocity()+ m_deltaLinearVelocity); + setAngularVelocity(getAngularVelocity()+m_deltaAngularVelocity); + m_deltaLinearVelocity.setZero(); + m_deltaAngularVelocity .setZero(); + //m_originalBody->setCompanionId(-1); + } + } + + + void internalWritebackVelocity(btScalar timeStep); + + + /////////////////////////////////////////////// + + virtual int calculateSerializeBufferSize() const; + + ///fills the dataBuffer and returns the struct name (and 0 on failure) + virtual const char* serialize(void* dataBuffer, class btSerializer* serializer) const; + + virtual void serializeSingleObject(class btSerializer* serializer) const; + +}; + +//@todo add m_optionalMotionState and m_constraintRefs to btRigidBodyData +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btRigidBodyFloatData +{ + btCollisionObjectFloatData m_collisionObjectData; + btMatrix3x3FloatData m_invInertiaTensorWorld; + btVector3FloatData m_linearVelocity; + btVector3FloatData m_angularVelocity; + btVector3FloatData m_angularFactor; + btVector3FloatData m_linearFactor; + btVector3FloatData m_gravity; + btVector3FloatData m_gravity_acceleration; + btVector3FloatData m_invInertiaLocal; + btVector3FloatData m_totalForce; + btVector3FloatData m_totalTorque; + float m_inverseMass; + float m_linearDamping; + float m_angularDamping; + float m_additionalDampingFactor; + float m_additionalLinearDampingThresholdSqr; + float m_additionalAngularDampingThresholdSqr; + float m_additionalAngularDampingFactor; + float m_linearSleepingThreshold; + float m_angularSleepingThreshold; + int m_additionalDamping; +}; + +///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 +struct btRigidBodyDoubleData +{ + btCollisionObjectDoubleData m_collisionObjectData; + btMatrix3x3DoubleData m_invInertiaTensorWorld; + btVector3DoubleData m_linearVelocity; + btVector3DoubleData m_angularVelocity; + btVector3DoubleData m_angularFactor; + btVector3DoubleData m_linearFactor; + btVector3DoubleData m_gravity; + btVector3DoubleData m_gravity_acceleration; + btVector3DoubleData m_invInertiaLocal; + btVector3DoubleData m_totalForce; + btVector3DoubleData m_totalTorque; + double m_inverseMass; + double m_linearDamping; + double m_angularDamping; + double m_additionalDampingFactor; + double m_additionalLinearDampingThresholdSqr; + double m_additionalAngularDampingThresholdSqr; + double m_additionalAngularDampingFactor; + double m_linearSleepingThreshold; + double m_angularSleepingThreshold; + int m_additionalDamping; + char m_padding[4]; +}; + + + +#endif + diff --git a/extern/bullet2/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp b/extern/bullet2/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp new file mode 100644 index 00000000000..ae449f292f6 --- /dev/null +++ b/extern/bullet2/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp @@ -0,0 +1,253 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btSimpleDynamicsWorld.h" +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" +#include "BulletCollision/BroadphaseCollision/btSimpleBroadphase.h" +#include "BulletCollision/CollisionShapes/btCollisionShape.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h" +#include "BulletDynamics/ConstraintSolver/btContactSolverInfo.h" + + +/* + Make sure this dummy function never changes so that it + can be used by probes that are checking whether the + library is actually installed. +*/ +extern "C" +{ + void btBulletDynamicsProbe (); + void btBulletDynamicsProbe () {} +} + + + + +btSimpleDynamicsWorld::btSimpleDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration) +:btDynamicsWorld(dispatcher,pairCache,collisionConfiguration), +m_constraintSolver(constraintSolver), +m_ownsConstraintSolver(false), +m_gravity(0,0,-10) +{ + +} + + +btSimpleDynamicsWorld::~btSimpleDynamicsWorld() +{ + if (m_ownsConstraintSolver) + btAlignedFree( m_constraintSolver); +} + +int btSimpleDynamicsWorld::stepSimulation( btScalar timeStep,int maxSubSteps, btScalar fixedTimeStep) +{ + (void)fixedTimeStep; + (void)maxSubSteps; + + + ///apply gravity, predict motion + predictUnconstraintMotion(timeStep); + + btDispatcherInfo& dispatchInfo = getDispatchInfo(); + dispatchInfo.m_timeStep = timeStep; + dispatchInfo.m_stepCount = 0; + dispatchInfo.m_debugDraw = getDebugDrawer(); + + ///perform collision detection + performDiscreteCollisionDetection(); + + ///solve contact constraints + int numManifolds = m_dispatcher1->getNumManifolds(); + if (numManifolds) + { + btPersistentManifold** manifoldPtr = ((btCollisionDispatcher*)m_dispatcher1)->getInternalManifoldPointer(); + + btContactSolverInfo infoGlobal; + infoGlobal.m_timeStep = timeStep; + m_constraintSolver->prepareSolve(0,numManifolds); + m_constraintSolver->solveGroup(0,0,manifoldPtr, numManifolds,0,0,infoGlobal,m_debugDrawer, m_stackAlloc,m_dispatcher1); + m_constraintSolver->allSolved(infoGlobal,m_debugDrawer, m_stackAlloc); + } + + ///integrate transforms + integrateTransforms(timeStep); + + updateAabbs(); + + synchronizeMotionStates(); + + clearForces(); + + return 1; + +} + +void btSimpleDynamicsWorld::clearForces() +{ + ///@todo: iterate over awake simulation islands! + for ( int i=0;iclearForces(); + } + } +} + + +void btSimpleDynamicsWorld::setGravity(const btVector3& gravity) +{ + m_gravity = gravity; + for ( int i=0;isetGravity(gravity); + } + } +} + +btVector3 btSimpleDynamicsWorld::getGravity () const +{ + return m_gravity; +} + +void btSimpleDynamicsWorld::removeRigidBody(btRigidBody* body) +{ + btCollisionWorld::removeCollisionObject(body); +} + +void btSimpleDynamicsWorld::removeCollisionObject(btCollisionObject* collisionObject) +{ + btRigidBody* body = btRigidBody::upcast(collisionObject); + if (body) + removeRigidBody(body); + else + btCollisionWorld::removeCollisionObject(collisionObject); +} + + +void btSimpleDynamicsWorld::addRigidBody(btRigidBody* body) +{ + body->setGravity(m_gravity); + + if (body->getCollisionShape()) + { + addCollisionObject(body); + } +} + +void btSimpleDynamicsWorld::updateAabbs() +{ + btTransform predictedTrans; + for ( int i=0;iisActive() && (!body->isStaticObject())) + { + btVector3 minAabb,maxAabb; + colObj->getCollisionShape()->getAabb(colObj->getWorldTransform(), minAabb,maxAabb); + btBroadphaseInterface* bp = getBroadphase(); + bp->setAabb(body->getBroadphaseHandle(),minAabb,maxAabb, m_dispatcher1); + } + } + } +} + +void btSimpleDynamicsWorld::integrateTransforms(btScalar timeStep) +{ + btTransform predictedTrans; + for ( int i=0;iisActive() && (!body->isStaticObject())) + { + body->predictIntegratedTransform(timeStep, predictedTrans); + body->proceedToTransform( predictedTrans); + } + } + } +} + + + +void btSimpleDynamicsWorld::predictUnconstraintMotion(btScalar timeStep) +{ + for ( int i=0;iisStaticObject()) + { + if (body->isActive()) + { + body->applyGravity(); + body->integrateVelocities( timeStep); + body->applyDamping(timeStep); + body->predictIntegratedTransform(timeStep,body->getInterpolationWorldTransform()); + } + } + } + } +} + + +void btSimpleDynamicsWorld::synchronizeMotionStates() +{ + ///@todo: iterate over awake simulation islands! + for ( int i=0;igetMotionState()) + { + if (body->getActivationState() != ISLAND_SLEEPING) + { + body->getMotionState()->setWorldTransform(body->getWorldTransform()); + } + } + } + +} + + +void btSimpleDynamicsWorld::setConstraintSolver(btConstraintSolver* solver) +{ + if (m_ownsConstraintSolver) + { + btAlignedFree(m_constraintSolver); + } + m_ownsConstraintSolver = false; + m_constraintSolver = solver; +} + +btConstraintSolver* btSimpleDynamicsWorld::getConstraintSolver() +{ + return m_constraintSolver; +} diff --git a/extern/bullet2/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h b/extern/bullet2/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h new file mode 100644 index 00000000000..ad1f541340f --- /dev/null +++ b/extern/bullet2/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h @@ -0,0 +1,81 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_SIMPLE_DYNAMICS_WORLD_H +#define BT_SIMPLE_DYNAMICS_WORLD_H + +#include "btDynamicsWorld.h" + +class btDispatcher; +class btOverlappingPairCache; +class btConstraintSolver; + +///The btSimpleDynamicsWorld serves as unit-test and to verify more complicated and optimized dynamics worlds. +///Please use btDiscreteDynamicsWorld instead (or btContinuousDynamicsWorld once it is finished). +class btSimpleDynamicsWorld : public btDynamicsWorld +{ +protected: + + btConstraintSolver* m_constraintSolver; + + bool m_ownsConstraintSolver; + + void predictUnconstraintMotion(btScalar timeStep); + + void integrateTransforms(btScalar timeStep); + + btVector3 m_gravity; + +public: + + + + ///this btSimpleDynamicsWorld constructor creates dispatcher, broadphase pairCache and constraintSolver + btSimpleDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration); + + virtual ~btSimpleDynamicsWorld(); + + ///maxSubSteps/fixedTimeStep for interpolation is currently ignored for btSimpleDynamicsWorld, use btDiscreteDynamicsWorld instead + virtual int stepSimulation( btScalar timeStep,int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.)); + + virtual void setGravity(const btVector3& gravity); + + virtual btVector3 getGravity () const; + + virtual void addRigidBody(btRigidBody* body); + + virtual void removeRigidBody(btRigidBody* body); + + ///removeCollisionObject will first check if it is a rigid body, if so call removeRigidBody otherwise call btCollisionWorld::removeCollisionObject + virtual void removeCollisionObject(btCollisionObject* collisionObject); + + virtual void updateAabbs(); + + virtual void synchronizeMotionStates(); + + virtual void setConstraintSolver(btConstraintSolver* solver); + + virtual btConstraintSolver* getConstraintSolver(); + + virtual btDynamicsWorldType getWorldType() const + { + return BT_SIMPLE_DYNAMICS_WORLD; + } + + virtual void clearForces(); + +}; + +#endif //BT_SIMPLE_DYNAMICS_WORLD_H diff --git a/extern/bullet2/BulletDynamics/Vehicle/btRaycastVehicle.cpp b/extern/bullet2/BulletDynamics/Vehicle/btRaycastVehicle.cpp new file mode 100644 index 00000000000..b42c024f178 --- /dev/null +++ b/extern/bullet2/BulletDynamics/Vehicle/btRaycastVehicle.cpp @@ -0,0 +1,758 @@ +/* + * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/ + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies. + * Erwin Coumans makes no representations about the suitability + * of this software for any purpose. + * It is provided "as is" without express or implied warranty. +*/ + +#include "LinearMath/btVector3.h" +#include "btRaycastVehicle.h" + +#include "BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h" +#include "BulletDynamics/ConstraintSolver/btJacobianEntry.h" +#include "LinearMath/btQuaternion.h" +#include "BulletDynamics/Dynamics/btDynamicsWorld.h" +#include "btVehicleRaycaster.h" +#include "btWheelInfo.h" +#include "LinearMath/btMinMax.h" +#include "LinearMath/btIDebugDraw.h" +#include "BulletDynamics/ConstraintSolver/btContactConstraint.h" + + + +btRaycastVehicle::btRaycastVehicle(const btVehicleTuning& tuning,btRigidBody* chassis, btVehicleRaycaster* raycaster ) +:m_vehicleRaycaster(raycaster), +m_pitchControl(btScalar(0.)) +{ + m_chassisBody = chassis; + m_indexRightAxis = 0; + m_indexUpAxis = 2; + m_indexForwardAxis = 1; + defaultInit(tuning); +} + + +void btRaycastVehicle::defaultInit(const btVehicleTuning& tuning) +{ + (void)tuning; + m_currentVehicleSpeedKmHour = btScalar(0.); + m_steeringValue = btScalar(0.); + +} + + + +btRaycastVehicle::~btRaycastVehicle() +{ +} + + +// +// basically most of the code is general for 2 or 4 wheel vehicles, but some of it needs to be reviewed +// +btWheelInfo& btRaycastVehicle::addWheel( const btVector3& connectionPointCS, const btVector3& wheelDirectionCS0,const btVector3& wheelAxleCS, btScalar suspensionRestLength, btScalar wheelRadius,const btVehicleTuning& tuning, bool isFrontWheel) +{ + + btWheelInfoConstructionInfo ci; + + ci.m_chassisConnectionCS = connectionPointCS; + ci.m_wheelDirectionCS = wheelDirectionCS0; + ci.m_wheelAxleCS = wheelAxleCS; + ci.m_suspensionRestLength = suspensionRestLength; + ci.m_wheelRadius = wheelRadius; + ci.m_suspensionStiffness = tuning.m_suspensionStiffness; + ci.m_wheelsDampingCompression = tuning.m_suspensionCompression; + ci.m_wheelsDampingRelaxation = tuning.m_suspensionDamping; + ci.m_frictionSlip = tuning.m_frictionSlip; + ci.m_bIsFrontWheel = isFrontWheel; + ci.m_maxSuspensionTravelCm = tuning.m_maxSuspensionTravelCm; + ci.m_maxSuspensionForce = tuning.m_maxSuspensionForce; + + m_wheelInfo.push_back( btWheelInfo(ci)); + + btWheelInfo& wheel = m_wheelInfo[getNumWheels()-1]; + + updateWheelTransformsWS( wheel , false ); + updateWheelTransform(getNumWheels()-1,false); + return wheel; +} + + + + +const btTransform& btRaycastVehicle::getWheelTransformWS( int wheelIndex ) const +{ + btAssert(wheelIndex < getNumWheels()); + const btWheelInfo& wheel = m_wheelInfo[wheelIndex]; + return wheel.m_worldTransform; + +} + +void btRaycastVehicle::updateWheelTransform( int wheelIndex , bool interpolatedTransform) +{ + + btWheelInfo& wheel = m_wheelInfo[ wheelIndex ]; + updateWheelTransformsWS(wheel,interpolatedTransform); + btVector3 up = -wheel.m_raycastInfo.m_wheelDirectionWS; + const btVector3& right = wheel.m_raycastInfo.m_wheelAxleWS; + btVector3 fwd = up.cross(right); + fwd = fwd.normalize(); +// up = right.cross(fwd); +// up.normalize(); + + //rotate around steering over de wheelAxleWS + btScalar steering = wheel.m_steering; + + btQuaternion steeringOrn(up,steering);//wheel.m_steering); + btMatrix3x3 steeringMat(steeringOrn); + + btQuaternion rotatingOrn(right,-wheel.m_rotation); + btMatrix3x3 rotatingMat(rotatingOrn); + + btMatrix3x3 basis2( + right[0],fwd[0],up[0], + right[1],fwd[1],up[1], + right[2],fwd[2],up[2] + ); + + wheel.m_worldTransform.setBasis(steeringMat * rotatingMat * basis2); + wheel.m_worldTransform.setOrigin( + wheel.m_raycastInfo.m_hardPointWS + wheel.m_raycastInfo.m_wheelDirectionWS * wheel.m_raycastInfo.m_suspensionLength + ); +} + +void btRaycastVehicle::resetSuspension() +{ + + int i; + for (i=0;igetMotionState())) + { + getRigidBody()->getMotionState()->getWorldTransform(chassisTrans); + } + + wheel.m_raycastInfo.m_hardPointWS = chassisTrans( wheel.m_chassisConnectionPointCS ); + wheel.m_raycastInfo.m_wheelDirectionWS = chassisTrans.getBasis() * wheel.m_wheelDirectionCS ; + wheel.m_raycastInfo.m_wheelAxleWS = chassisTrans.getBasis() * wheel.m_wheelAxleCS; +} + +btScalar btRaycastVehicle::rayCast(btWheelInfo& wheel) +{ + updateWheelTransformsWS( wheel,false); + + + btScalar depth = -1; + + btScalar raylen = wheel.getSuspensionRestLength()+wheel.m_wheelsRadius; + + btVector3 rayvector = wheel.m_raycastInfo.m_wheelDirectionWS * (raylen); + const btVector3& source = wheel.m_raycastInfo.m_hardPointWS; + wheel.m_raycastInfo.m_contactPointWS = source + rayvector; + const btVector3& target = wheel.m_raycastInfo.m_contactPointWS; + + btScalar param = btScalar(0.); + + btVehicleRaycaster::btVehicleRaycasterResult rayResults; + + btAssert(m_vehicleRaycaster); + + void* object = m_vehicleRaycaster->castRay(source,target,rayResults); + + wheel.m_raycastInfo.m_groundObject = 0; + + if (object) + { + param = rayResults.m_distFraction; + depth = raylen * rayResults.m_distFraction; + wheel.m_raycastInfo.m_contactNormalWS = rayResults.m_hitNormalInWorld; + wheel.m_raycastInfo.m_isInContact = true; + + wheel.m_raycastInfo.m_groundObject = &getFixedBody();///@todo for driving on dynamic/movable objects!; + //wheel.m_raycastInfo.m_groundObject = object; + + + btScalar hitDistance = param*raylen; + wheel.m_raycastInfo.m_suspensionLength = hitDistance - wheel.m_wheelsRadius; + //clamp on max suspension travel + + btScalar minSuspensionLength = wheel.getSuspensionRestLength() - wheel.m_maxSuspensionTravelCm*btScalar(0.01); + btScalar maxSuspensionLength = wheel.getSuspensionRestLength()+ wheel.m_maxSuspensionTravelCm*btScalar(0.01); + if (wheel.m_raycastInfo.m_suspensionLength < minSuspensionLength) + { + wheel.m_raycastInfo.m_suspensionLength = minSuspensionLength; + } + if (wheel.m_raycastInfo.m_suspensionLength > maxSuspensionLength) + { + wheel.m_raycastInfo.m_suspensionLength = maxSuspensionLength; + } + + wheel.m_raycastInfo.m_contactPointWS = rayResults.m_hitPointInWorld; + + btScalar denominator= wheel.m_raycastInfo.m_contactNormalWS.dot( wheel.m_raycastInfo.m_wheelDirectionWS ); + + btVector3 chassis_velocity_at_contactPoint; + btVector3 relpos = wheel.m_raycastInfo.m_contactPointWS-getRigidBody()->getCenterOfMassPosition(); + + chassis_velocity_at_contactPoint = getRigidBody()->getVelocityInLocalPoint(relpos); + + btScalar projVel = wheel.m_raycastInfo.m_contactNormalWS.dot( chassis_velocity_at_contactPoint ); + + if ( denominator >= btScalar(-0.1)) + { + wheel.m_suspensionRelativeVelocity = btScalar(0.0); + wheel.m_clippedInvContactDotSuspension = btScalar(1.0) / btScalar(0.1); + } + else + { + btScalar inv = btScalar(-1.) / denominator; + wheel.m_suspensionRelativeVelocity = projVel * inv; + wheel.m_clippedInvContactDotSuspension = inv; + } + + } else + { + //put wheel info as in rest position + wheel.m_raycastInfo.m_suspensionLength = wheel.getSuspensionRestLength(); + wheel.m_suspensionRelativeVelocity = btScalar(0.0); + wheel.m_raycastInfo.m_contactNormalWS = - wheel.m_raycastInfo.m_wheelDirectionWS; + wheel.m_clippedInvContactDotSuspension = btScalar(1.0); + } + + return depth; +} + + +const btTransform& btRaycastVehicle::getChassisWorldTransform() const +{ + /*if (getRigidBody()->getMotionState()) + { + btTransform chassisWorldTrans; + getRigidBody()->getMotionState()->getWorldTransform(chassisWorldTrans); + return chassisWorldTrans; + } + */ + + + return getRigidBody()->getCenterOfMassTransform(); +} + + +void btRaycastVehicle::updateVehicle( btScalar step ) +{ + { + for (int i=0;igetLinearVelocity().length(); + + const btTransform& chassisTrans = getChassisWorldTransform(); + + btVector3 forwardW ( + chassisTrans.getBasis()[0][m_indexForwardAxis], + chassisTrans.getBasis()[1][m_indexForwardAxis], + chassisTrans.getBasis()[2][m_indexForwardAxis]); + + if (forwardW.dot(getRigidBody()->getLinearVelocity()) < btScalar(0.)) + { + m_currentVehicleSpeedKmHour *= btScalar(-1.); + } + + // + // simulate suspension + // + + int i=0; + for (i=0;i wheel.m_maxSuspensionForce) + { + suspensionForce = wheel.m_maxSuspensionForce; + } + btVector3 impulse = wheel.m_raycastInfo.m_contactNormalWS * suspensionForce * step; + btVector3 relpos = wheel.m_raycastInfo.m_contactPointWS - getRigidBody()->getCenterOfMassPosition(); + + getRigidBody()->applyImpulse(impulse, relpos); + + } + + + + updateFriction( step); + + + for (i=0;igetCenterOfMassPosition(); + btVector3 vel = getRigidBody()->getVelocityInLocalPoint( relpos ); + + if (wheel.m_raycastInfo.m_isInContact) + { + const btTransform& chassisWorldTransform = getChassisWorldTransform(); + + btVector3 fwd ( + chassisWorldTransform.getBasis()[0][m_indexForwardAxis], + chassisWorldTransform.getBasis()[1][m_indexForwardAxis], + chassisWorldTransform.getBasis()[2][m_indexForwardAxis]); + + btScalar proj = fwd.dot(wheel.m_raycastInfo.m_contactNormalWS); + fwd -= wheel.m_raycastInfo.m_contactNormalWS * proj; + + btScalar proj2 = fwd.dot(vel); + + wheel.m_deltaRotation = (proj2 * step) / (wheel.m_wheelsRadius); + wheel.m_rotation += wheel.m_deltaRotation; + + } else + { + wheel.m_rotation += wheel.m_deltaRotation; + } + + wheel.m_deltaRotation *= btScalar(0.99);//damping of rotation when not in contact + + } + + + +} + + +void btRaycastVehicle::setSteeringValue(btScalar steering,int wheel) +{ + btAssert(wheel>=0 && wheel < getNumWheels()); + + btWheelInfo& wheelInfo = getWheelInfo(wheel); + wheelInfo.m_steering = steering; +} + + + +btScalar btRaycastVehicle::getSteeringValue(int wheel) const +{ + return getWheelInfo(wheel).m_steering; +} + + +void btRaycastVehicle::applyEngineForce(btScalar force, int wheel) +{ + btAssert(wheel>=0 && wheel < getNumWheels()); + btWheelInfo& wheelInfo = getWheelInfo(wheel); + wheelInfo.m_engineForce = force; +} + + +const btWheelInfo& btRaycastVehicle::getWheelInfo(int index) const +{ + btAssert((index >= 0) && (index < getNumWheels())); + + return m_wheelInfo[index]; +} + +btWheelInfo& btRaycastVehicle::getWheelInfo(int index) +{ + btAssert((index >= 0) && (index < getNumWheels())); + + return m_wheelInfo[index]; +} + +void btRaycastVehicle::setBrake(btScalar brake,int wheelIndex) +{ + btAssert((wheelIndex >= 0) && (wheelIndex < getNumWheels())); + getWheelInfo(wheelIndex).m_brake = brake; +} + + +void btRaycastVehicle::updateSuspension(btScalar deltaTime) +{ + (void)deltaTime; + + btScalar chassisMass = btScalar(1.) / m_chassisBody->getInvMass(); + + for (int w_it=0; w_itcomputeImpulseDenominator(frictionPosWorld,frictionDirectionWorld); + btScalar denom1 = body1->computeImpulseDenominator(frictionPosWorld,frictionDirectionWorld); + btScalar relaxation = 1.f; + m_jacDiagABInv = relaxation/(denom0+denom1); + } + + + +}; + +btScalar calcRollingFriction(btWheelContactPoint& contactPoint); +btScalar calcRollingFriction(btWheelContactPoint& contactPoint) +{ + + btScalar j1=0.f; + + const btVector3& contactPosWorld = contactPoint.m_frictionPositionWorld; + + btVector3 rel_pos1 = contactPosWorld - contactPoint.m_body0->getCenterOfMassPosition(); + btVector3 rel_pos2 = contactPosWorld - contactPoint.m_body1->getCenterOfMassPosition(); + + btScalar maxImpulse = contactPoint.m_maxImpulse; + + btVector3 vel1 = contactPoint.m_body0->getVelocityInLocalPoint(rel_pos1); + btVector3 vel2 = contactPoint.m_body1->getVelocityInLocalPoint(rel_pos2); + btVector3 vel = vel1 - vel2; + + btScalar vrel = contactPoint.m_frictionDirectionWorld.dot(vel); + + // calculate j that moves us to zero relative velocity + j1 = -vrel * contactPoint.m_jacDiagABInv; + btSetMin(j1, maxImpulse); + btSetMax(j1, -maxImpulse); + + return j1; +} + + + + +btScalar sideFrictionStiffness2 = btScalar(1.0); +void btRaycastVehicle::updateFriction(btScalar timeStep) +{ + + //calculate the impulse, so that the wheels don't move sidewards + int numWheel = getNumWheels(); + if (!numWheel) + return; + + m_forwardWS.resize(numWheel); + m_axle.resize(numWheel); + m_forwardImpulse.resize(numWheel); + m_sideImpulse.resize(numWheel); + + int numWheelsOnGround = 0; + + + //collapse all those loops into one! + for (int i=0;i maximpSquared) + { + sliding = true; + + btScalar factor = maximp / btSqrt(impulseSquared); + + m_wheelInfo[wheel].m_skidInfo *= factor; + } + } + + } + } + + + + + if (sliding) + { + for (int wheel = 0;wheel < getNumWheels(); wheel++) + { + if (m_sideImpulse[wheel] != btScalar(0.)) + { + if (m_wheelInfo[wheel].m_skidInfo< btScalar(1.)) + { + m_forwardImpulse[wheel] *= m_wheelInfo[wheel].m_skidInfo; + m_sideImpulse[wheel] *= m_wheelInfo[wheel].m_skidInfo; + } + } + } + } + + // apply the impulses + { + for (int wheel = 0;wheelgetCenterOfMassPosition(); + + if (m_forwardImpulse[wheel] != btScalar(0.)) + { + m_chassisBody->applyImpulse(m_forwardWS[wheel]*(m_forwardImpulse[wheel]),rel_pos); + } + if (m_sideImpulse[wheel] != btScalar(0.)) + { + class btRigidBody* groundObject = (class btRigidBody*) m_wheelInfo[wheel].m_raycastInfo.m_groundObject; + + btVector3 rel_pos2 = wheelInfo.m_raycastInfo.m_contactPointWS - + groundObject->getCenterOfMassPosition(); + + + btVector3 sideImp = m_axle[wheel] * m_sideImpulse[wheel]; + + rel_pos[m_indexUpAxis] *= wheelInfo.m_rollInfluence; + m_chassisBody->applyImpulse(sideImp,rel_pos); + + //apply friction impulse on the ground + groundObject->applyImpulse(-sideImp,rel_pos2); + } + } + } + + +} + + + +void btRaycastVehicle::debugDraw(btIDebugDraw* debugDrawer) +{ + + for (int v=0;vgetNumWheels();v++) + { + btVector3 wheelColor(0,1,1); + if (getWheelInfo(v).m_raycastInfo.m_isInContact) + { + wheelColor.setValue(0,0,1); + } else + { + wheelColor.setValue(1,0,1); + } + + btVector3 wheelPosWS = getWheelInfo(v).m_worldTransform.getOrigin(); + + btVector3 axle = btVector3( + getWheelInfo(v).m_worldTransform.getBasis()[0][getRightAxis()], + getWheelInfo(v).m_worldTransform.getBasis()[1][getRightAxis()], + getWheelInfo(v).m_worldTransform.getBasis()[2][getRightAxis()]); + + //debug wheels (cylinders) + debugDrawer->drawLine(wheelPosWS,wheelPosWS+axle,wheelColor); + debugDrawer->drawLine(wheelPosWS,getWheelInfo(v).m_raycastInfo.m_contactPointWS,wheelColor); + + } +} + + +void* btDefaultVehicleRaycaster::castRay(const btVector3& from,const btVector3& to, btVehicleRaycasterResult& result) +{ +// RayResultCallback& resultCallback; + + btCollisionWorld::ClosestRayResultCallback rayCallback(from,to); + + m_dynamicsWorld->rayTest(from, to, rayCallback); + + if (rayCallback.hasHit()) + { + + btRigidBody* body = btRigidBody::upcast(rayCallback.m_collisionObject); + if (body && body->hasContactResponse()) + { + result.m_hitPointInWorld = rayCallback.m_hitPointWorld; + result.m_hitNormalInWorld = rayCallback.m_hitNormalWorld; + result.m_hitNormalInWorld.normalize(); + result.m_distFraction = rayCallback.m_closestHitFraction; + return body; + } + } + return 0; +} + diff --git a/extern/bullet2/BulletDynamics/Vehicle/btRaycastVehicle.h b/extern/bullet2/BulletDynamics/Vehicle/btRaycastVehicle.h new file mode 100644 index 00000000000..5ce80f4d275 --- /dev/null +++ b/extern/bullet2/BulletDynamics/Vehicle/btRaycastVehicle.h @@ -0,0 +1,236 @@ +/* + * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/ + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies. + * Erwin Coumans makes no representations about the suitability + * of this software for any purpose. + * It is provided "as is" without express or implied warranty. +*/ +#ifndef RAYCASTVEHICLE_H +#define RAYCASTVEHICLE_H + +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include "BulletDynamics/ConstraintSolver/btTypedConstraint.h" +#include "btVehicleRaycaster.h" +class btDynamicsWorld; +#include "LinearMath/btAlignedObjectArray.h" +#include "btWheelInfo.h" +#include "BulletDynamics/Dynamics/btActionInterface.h" + +class btVehicleTuning; + +///rayCast vehicle, very special constraint that turn a rigidbody into a vehicle. +class btRaycastVehicle : public btActionInterface +{ + + btAlignedObjectArray m_forwardWS; + btAlignedObjectArray m_axle; + btAlignedObjectArray m_forwardImpulse; + btAlignedObjectArray m_sideImpulse; + + ///backwards compatibility + int m_userConstraintType; + int m_userConstraintId; + +public: + class btVehicleTuning + { + public: + + btVehicleTuning() + :m_suspensionStiffness(btScalar(5.88)), + m_suspensionCompression(btScalar(0.83)), + m_suspensionDamping(btScalar(0.88)), + m_maxSuspensionTravelCm(btScalar(500.)), + m_frictionSlip(btScalar(10.5)), + m_maxSuspensionForce(btScalar(6000.)) + { + } + btScalar m_suspensionStiffness; + btScalar m_suspensionCompression; + btScalar m_suspensionDamping; + btScalar m_maxSuspensionTravelCm; + btScalar m_frictionSlip; + btScalar m_maxSuspensionForce; + + }; +private: + + btScalar m_tau; + btScalar m_damping; + btVehicleRaycaster* m_vehicleRaycaster; + btScalar m_pitchControl; + btScalar m_steeringValue; + btScalar m_currentVehicleSpeedKmHour; + + btRigidBody* m_chassisBody; + + int m_indexRightAxis; + int m_indexUpAxis; + int m_indexForwardAxis; + + void defaultInit(const btVehicleTuning& tuning); + +public: + + //constructor to create a car from an existing rigidbody + btRaycastVehicle(const btVehicleTuning& tuning,btRigidBody* chassis, btVehicleRaycaster* raycaster ); + + virtual ~btRaycastVehicle() ; + + + ///btActionInterface interface + virtual void updateAction( btCollisionWorld* collisionWorld, btScalar step) + { + (void) collisionWorld; + updateVehicle(step); + } + + + ///btActionInterface interface + void debugDraw(btIDebugDraw* debugDrawer); + + const btTransform& getChassisWorldTransform() const; + + btScalar rayCast(btWheelInfo& wheel); + + virtual void updateVehicle(btScalar step); + + + void resetSuspension(); + + btScalar getSteeringValue(int wheel) const; + + void setSteeringValue(btScalar steering,int wheel); + + + void applyEngineForce(btScalar force, int wheel); + + const btTransform& getWheelTransformWS( int wheelIndex ) const; + + void updateWheelTransform( int wheelIndex, bool interpolatedTransform = true ); + + void setRaycastWheelInfo( int wheelIndex , bool isInContact, const btVector3& hitPoint, const btVector3& hitNormal,btScalar depth); + + btWheelInfo& addWheel( const btVector3& connectionPointCS0, const btVector3& wheelDirectionCS0,const btVector3& wheelAxleCS,btScalar suspensionRestLength,btScalar wheelRadius,const btVehicleTuning& tuning, bool isFrontWheel); + + inline int getNumWheels() const { + return int (m_wheelInfo.size()); + } + + btAlignedObjectArray m_wheelInfo; + + + const btWheelInfo& getWheelInfo(int index) const; + + btWheelInfo& getWheelInfo(int index); + + void updateWheelTransformsWS(btWheelInfo& wheel , bool interpolatedTransform = true); + + + void setBrake(btScalar brake,int wheelIndex); + + void setPitchControl(btScalar pitch) + { + m_pitchControl = pitch; + } + + void updateSuspension(btScalar deltaTime); + + virtual void updateFriction(btScalar timeStep); + + + + inline btRigidBody* getRigidBody() + { + return m_chassisBody; + } + + const btRigidBody* getRigidBody() const + { + return m_chassisBody; + } + + inline int getRightAxis() const + { + return m_indexRightAxis; + } + inline int getUpAxis() const + { + return m_indexUpAxis; + } + + inline int getForwardAxis() const + { + return m_indexForwardAxis; + } + + + ///Worldspace forward vector + btVector3 getForwardVector() const + { + const btTransform& chassisTrans = getChassisWorldTransform(); + + btVector3 forwardW ( + chassisTrans.getBasis()[0][m_indexForwardAxis], + chassisTrans.getBasis()[1][m_indexForwardAxis], + chassisTrans.getBasis()[2][m_indexForwardAxis]); + + return forwardW; + } + + ///Velocity of vehicle (positive if velocity vector has same direction as foward vector) + btScalar getCurrentSpeedKmHour() const + { + return m_currentVehicleSpeedKmHour; + } + + virtual void setCoordinateSystem(int rightIndex,int upIndex,int forwardIndex) + { + m_indexRightAxis = rightIndex; + m_indexUpAxis = upIndex; + m_indexForwardAxis = forwardIndex; + } + + + ///backwards compatibility + int getUserConstraintType() const + { + return m_userConstraintType ; + } + + void setUserConstraintType(int userConstraintType) + { + m_userConstraintType = userConstraintType; + }; + + void setUserConstraintId(int uid) + { + m_userConstraintId = uid; + } + + int getUserConstraintId() const + { + return m_userConstraintId; + } + +}; + +class btDefaultVehicleRaycaster : public btVehicleRaycaster +{ + btDynamicsWorld* m_dynamicsWorld; +public: + btDefaultVehicleRaycaster(btDynamicsWorld* world) + :m_dynamicsWorld(world) + { + } + + virtual void* castRay(const btVector3& from,const btVector3& to, btVehicleRaycasterResult& result); + +}; + + +#endif //RAYCASTVEHICLE_H + diff --git a/extern/bullet2/BulletDynamics/Vehicle/btVehicleRaycaster.h b/extern/bullet2/BulletDynamics/Vehicle/btVehicleRaycaster.h new file mode 100644 index 00000000000..5112ce6d420 --- /dev/null +++ b/extern/bullet2/BulletDynamics/Vehicle/btVehicleRaycaster.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/ + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies. + * Erwin Coumans makes no representations about the suitability + * of this software for any purpose. + * It is provided "as is" without express or implied warranty. +*/ +#ifndef VEHICLE_RAYCASTER_H +#define VEHICLE_RAYCASTER_H + +#include "LinearMath/btVector3.h" + +/// btVehicleRaycaster is provides interface for between vehicle simulation and raycasting +struct btVehicleRaycaster +{ +virtual ~btVehicleRaycaster() +{ +} + struct btVehicleRaycasterResult + { + btVehicleRaycasterResult() :m_distFraction(btScalar(-1.)){}; + btVector3 m_hitPointInWorld; + btVector3 m_hitNormalInWorld; + btScalar m_distFraction; + }; + + virtual void* castRay(const btVector3& from,const btVector3& to, btVehicleRaycasterResult& result) = 0; + +}; + +#endif //VEHICLE_RAYCASTER_H + diff --git a/extern/bullet2/BulletDynamics/Vehicle/btWheelInfo.cpp b/extern/bullet2/BulletDynamics/Vehicle/btWheelInfo.cpp new file mode 100644 index 00000000000..ef93c16fffc --- /dev/null +++ b/extern/bullet2/BulletDynamics/Vehicle/btWheelInfo.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/ + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies. + * Erwin Coumans makes no representations about the suitability + * of this software for any purpose. + * It is provided "as is" without express or implied warranty. +*/ +#include "btWheelInfo.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" // for pointvelocity + + +btScalar btWheelInfo::getSuspensionRestLength() const +{ + + return m_suspensionRestLength1; + +} + +void btWheelInfo::updateWheel(const btRigidBody& chassis,RaycastInfo& raycastInfo) +{ + (void)raycastInfo; + + + if (m_raycastInfo.m_isInContact) + + { + btScalar project= m_raycastInfo.m_contactNormalWS.dot( m_raycastInfo.m_wheelDirectionWS ); + btVector3 chassis_velocity_at_contactPoint; + btVector3 relpos = m_raycastInfo.m_contactPointWS - chassis.getCenterOfMassPosition(); + chassis_velocity_at_contactPoint = chassis.getVelocityInLocalPoint( relpos ); + btScalar projVel = m_raycastInfo.m_contactNormalWS.dot( chassis_velocity_at_contactPoint ); + if ( project >= btScalar(-0.1)) + { + m_suspensionRelativeVelocity = btScalar(0.0); + m_clippedInvContactDotSuspension = btScalar(1.0) / btScalar(0.1); + } + else + { + btScalar inv = btScalar(-1.) / project; + m_suspensionRelativeVelocity = projVel * inv; + m_clippedInvContactDotSuspension = inv; + } + + } + + else // Not in contact : position wheel in a nice (rest length) position + { + m_raycastInfo.m_suspensionLength = this->getSuspensionRestLength(); + m_suspensionRelativeVelocity = btScalar(0.0); + m_raycastInfo.m_contactNormalWS = -m_raycastInfo.m_wheelDirectionWS; + m_clippedInvContactDotSuspension = btScalar(1.0); + } +} diff --git a/extern/bullet2/BulletDynamics/Vehicle/btWheelInfo.h b/extern/bullet2/BulletDynamics/Vehicle/btWheelInfo.h new file mode 100644 index 00000000000..b74f8c80acb --- /dev/null +++ b/extern/bullet2/BulletDynamics/Vehicle/btWheelInfo.h @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/ + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies. + * Erwin Coumans makes no representations about the suitability + * of this software for any purpose. + * It is provided "as is" without express or implied warranty. +*/ +#ifndef WHEEL_INFO_H +#define WHEEL_INFO_H + +#include "LinearMath/btVector3.h" +#include "LinearMath/btTransform.h" + +class btRigidBody; + +struct btWheelInfoConstructionInfo +{ + btVector3 m_chassisConnectionCS; + btVector3 m_wheelDirectionCS; + btVector3 m_wheelAxleCS; + btScalar m_suspensionRestLength; + btScalar m_maxSuspensionTravelCm; + btScalar m_wheelRadius; + + btScalar m_suspensionStiffness; + btScalar m_wheelsDampingCompression; + btScalar m_wheelsDampingRelaxation; + btScalar m_frictionSlip; + btScalar m_maxSuspensionForce; + bool m_bIsFrontWheel; + +}; + +/// btWheelInfo contains information per wheel about friction and suspension. +struct btWheelInfo +{ + struct RaycastInfo + { + //set by raycaster + btVector3 m_contactNormalWS;//contactnormal + btVector3 m_contactPointWS;//raycast hitpoint + btScalar m_suspensionLength; + btVector3 m_hardPointWS;//raycast starting point + btVector3 m_wheelDirectionWS; //direction in worldspace + btVector3 m_wheelAxleWS; // axle in worldspace + bool m_isInContact; + void* m_groundObject; //could be general void* ptr + }; + + RaycastInfo m_raycastInfo; + + btTransform m_worldTransform; + + btVector3 m_chassisConnectionPointCS; //const + btVector3 m_wheelDirectionCS;//const + btVector3 m_wheelAxleCS; // const or modified by steering + btScalar m_suspensionRestLength1;//const + btScalar m_maxSuspensionTravelCm; + btScalar getSuspensionRestLength() const; + btScalar m_wheelsRadius;//const + btScalar m_suspensionStiffness;//const + btScalar m_wheelsDampingCompression;//const + btScalar m_wheelsDampingRelaxation;//const + btScalar m_frictionSlip; + btScalar m_steering; + btScalar m_rotation; + btScalar m_deltaRotation; + btScalar m_rollInfluence; + btScalar m_maxSuspensionForce; + + btScalar m_engineForce; + + btScalar m_brake; + + bool m_bIsFrontWheel; + + void* m_clientInfo;//can be used to store pointer to sync transforms... + + btWheelInfo(btWheelInfoConstructionInfo& ci) + + { + + m_suspensionRestLength1 = ci.m_suspensionRestLength; + m_maxSuspensionTravelCm = ci.m_maxSuspensionTravelCm; + + m_wheelsRadius = ci.m_wheelRadius; + m_suspensionStiffness = ci.m_suspensionStiffness; + m_wheelsDampingCompression = ci.m_wheelsDampingCompression; + m_wheelsDampingRelaxation = ci.m_wheelsDampingRelaxation; + m_chassisConnectionPointCS = ci.m_chassisConnectionCS; + m_wheelDirectionCS = ci.m_wheelDirectionCS; + m_wheelAxleCS = ci.m_wheelAxleCS; + m_frictionSlip = ci.m_frictionSlip; + m_steering = btScalar(0.); + m_engineForce = btScalar(0.); + m_rotation = btScalar(0.); + m_deltaRotation = btScalar(0.); + m_brake = btScalar(0.); + m_rollInfluence = btScalar(0.1); + m_bIsFrontWheel = ci.m_bIsFrontWheel; + m_maxSuspensionForce = ci.m_maxSuspensionForce; + + } + + void updateWheel(const btRigidBody& chassis,RaycastInfo& raycastInfo); + + btScalar m_clippedInvContactDotSuspension; + btScalar m_suspensionRelativeVelocity; + //calculated by suspension + btScalar m_wheelsSuspensionForce; + btScalar m_skidInfo; + +}; + +#endif //WHEEL_INFO_H + diff --git a/extern/bullet2/BulletMultiThreaded/CMakeLists.txt b/extern/bullet2/BulletMultiThreaded/CMakeLists.txt new file mode 100644 index 00000000000..90f970afbfd --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/CMakeLists.txt @@ -0,0 +1,92 @@ +INCLUDE_DIRECTORIES( + ${BULLET_PHYSICS_SOURCE_DIR}/src + ${BULLET_PHYSICS_SOURCE_DIR}/src/BulletMultiThreaded/vectormath/scalar/cpp +) + +ADD_LIBRARY(BulletMultiThreaded + PlatformDefinitions.h + SpuFakeDma.cpp + SpuFakeDma.h + SpuDoubleBuffer.h + SpuLibspe2Support.cpp + SpuLibspe2Support.h + btThreadSupportInterface.cpp + btThreadSupportInterface.h + + Win32ThreadSupport.cpp + Win32ThreadSupport.h + PosixThreadSupport.cpp + PosixThreadSupport.h + SequentialThreadSupport.cpp + SequentialThreadSupport.h + SpuSampleTaskProcess.h + SpuSampleTaskProcess.cpp + + SpuCollisionObjectWrapper.cpp + SpuCollisionObjectWrapper.h + SpuCollisionTaskProcess.h + SpuCollisionTaskProcess.cpp + SpuGatheringCollisionDispatcher.h + SpuGatheringCollisionDispatcher.cpp + SpuContactManifoldCollisionAlgorithm.cpp + SpuContactManifoldCollisionAlgorithm.h + + btParallelConstraintSolver.cpp + btParallelConstraintSolver.h + + SpuNarrowPhaseCollisionTask/Box.h + SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp + SpuNarrowPhaseCollisionTask/boxBoxDistance.h + SpuNarrowPhaseCollisionTask/SpuContactResult.cpp + SpuNarrowPhaseCollisionTask/SpuContactResult.h + SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.cpp + SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.h + SpuNarrowPhaseCollisionTask/SpuConvexPenetrationDepthSolver.h + SpuNarrowPhaseCollisionTask/SpuPreferredPenetrationDirections.h + SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp + SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h + SpuNarrowPhaseCollisionTask/SpuCollisionShapes.cpp + SpuNarrowPhaseCollisionTask/SpuCollisionShapes.h + + +#Some GPU related stuff, mainly CUDA and perhaps OpenCL + btGpu3DGridBroadphase.cpp + btGpu3DGridBroadphase.h + btGpu3DGridBroadphaseSharedCode.h + btGpu3DGridBroadphaseSharedDefs.h + btGpu3DGridBroadphaseSharedTypes.h + btGpuDefines.h + btGpuUtilsSharedCode.h + btGpuUtilsSharedDefs.h + +#MiniCL provides a small subset of OpenCL + MiniCL.cpp + MiniCLTaskScheduler.cpp + MiniCLTaskScheduler.h + MiniCLTask/MiniCLTask.cpp + MiniCLTask/MiniCLTask.h + ../MiniCL/cl.h + ../MiniCL/cl_gl.h + ../MiniCL/cl_platform.h + ../MiniCL/cl_MiniCL_Defs.h +) + +IF (BUILD_SHARED_LIBS) + TARGET_LINK_LIBRARIES(BulletMultiThreaded BulletCollision) +ENDIF (BUILD_SHARED_LIBS) + +IF (INSTALL_LIBS) + IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) + #INSTALL of other files requires CMake 2.6 + IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) + IF(INSTALL_EXTRA_LIBS) + IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + INSTALL(TARGETS BulletMultiThreaded DESTINATION .) + ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + INSTALL(TARGETS BulletMultiThreaded DESTINATION lib) + INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h") + ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + ENDIF (INSTALL_EXTRA_LIBS) + ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) + ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) +ENDIF (INSTALL_LIBS) \ No newline at end of file diff --git a/extern/bullet2/BulletMultiThreaded/Makefile.original b/extern/bullet2/BulletMultiThreaded/Makefile.original new file mode 100644 index 00000000000..1edc9811f8d --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/Makefile.original @@ -0,0 +1,187 @@ +__ARCH_BITS__ := 32 + +# define macros +NARROWPHASEDIR=./SpuNarrowPhaseCollisionTask +SPU_TASKFILE=$(NARROWPHASEDIR)/SpuGatheringCollisionTask + +IBM_CELLSDK_VERSION := $(shell if [ -d /opt/cell ]; then echo "3.0"; fi) + +ifeq ("$(IBM_CELLSDK_VERSION)","3.0") + CELL_TOP ?= /opt/cell/sdk + CELL_SYSROOT := /opt/cell/sysroot +else + CELL_TOP ?= /opt/ibm/cell-sdk/prototype + CELL_SYSROOT := $(CELL_TOP)/sysroot +endif + + +USE_CCACHE=ccache +RM=rm -f +OUTDIR=./out +DEBUGFLAG=-DNDEBUG +LIBOUTDIR=../../lib/ibmsdk +COLLISIONDIR=../../src/BulletCollision +MATHDIR=../../src/LinearMath +ARCHITECTUREFLAG=-m$(__ARCH_BITS__) +ifeq "$(__ARCH_BITS__)" "64" + SPU_DEFFLAGS= -DUSE_LIBSPE2 -D__SPU__ -DUSE_ADDR64 +else + SPU_DEFFLAGS= -DUSE_LIBSPE2 -D__SPU__ +endif + +SPU_DEFFLAGS+=-DUSE_PE_BOX_BOX + +SPU_GCC=$(USE_CCACHE) /usr/bin/spu-gcc +SPU_INCLUDEDIR= -Ivectormath/scalar/cpp -I. -I$(CELL_SYSROOT)/usr/spu/include -I../../src -I$(NARROWPHASEDIR) +#SPU_CFLAGS= $(DEBUGFLAG) -W -Wall -Winline -Os -c -include spu_intrinsics.h -include stdbool.h +SPU_CFLAGS= $(DEBUGFLAG) -W -Wall -Winline -O3 -mbranch-hints -fomit-frame-pointer -ftree-vectorize -finline-functions -ftree-vect-loop-version -ftree-loop-optimize -ffast-math -fno-rtti -fno-exceptions -c -include spu_intrinsics.h -include stdbool.h + +SPU_LFLAGS= -Wl,-N +SPU_LIBRARIES=-lstdc++ +SPU_EMBED=/usr/bin/ppu-embedspu +SPU_AR=/usr/bin/ar +SYMBOLNAME=spu_program + +ifeq "$(__ARCH_BITS__)" "64" + PPU_DEFFLAGS= -DUSE_LIBSPE2 -DUSE_ADDR64 + PPU_GCC=$(USE_CCACHE) /usr/bin/ppu-gcc +else + PPU_DEFFLAGS= -DUSE_LIBSPE2 + PPU_GCC=$(USE_CCACHE) /usr/bin/ppu32-gcc +endif + +PPU_CFLAGS= $(ARCHITECTUREFLAG) $(DEBUGFLAG) -W -Wall -Winline -O3 -c -mabi=altivec -maltivec -include altivec.h -include stdbool.h +PPU_INCLUDEDIR= -I. -I$(CELL_SYSROOT)/usr/include -I../../src -I$(NARROWPHASEDIR) +PPU_LFLAGS= $(ARCHITECTUREFLAG) -Wl,-m,elf$(__ARCH_BITS__)ppc +PPU_LIBRARIES= -lstdc++ -lsupc++ -lgcc -lgcov -lspe2 -lpthread -L../../lib/ibmsdk -lbulletcollision -lbulletdynamics -lbulletmath -L$(CELL_SYSROOT)/usr/lib$(__ARCH_BITS__) -R$(CELL_SYSROOT)/usr/lib +PPU_AR=/usr/bin/ar + +MakeOut : +# rm -f -R $(OUTDIR) ; mkdir $(OUTDIR) + @echo "usage: make spu, make ppu, make all, or make clean" +# SPU +SpuTaskFile : MakeOut + $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/SpuTaskFile.o $(SPU_TASKFILE).cpp + +boxBoxDistance : MakeOut + $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(NARROWPHASEDIR)/$@.cpp + +SpuFakeDma : MakeOut + $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $@.cpp + +SpuContactManifoldCollisionAlgorithm_spu : MakeOut + $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o SpuContactManifoldCollisionAlgorithm.cpp + +SpuCollisionShapes : MakeOut + $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(NARROWPHASEDIR)/$@.cpp + +SpuContactResult : MakeOut + $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(NARROWPHASEDIR)/$@.cpp + +#SpuGatheringCollisionTask : MakeOut +# $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(NARROWPHASEDIR)/$@.cpp + +SpuGjkPairDetector: MakeOut + $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(NARROWPHASEDIR)/$@.cpp + +SpuMinkowskiPenetrationDepthSolver : MakeOut + $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(NARROWPHASEDIR)/$@.cpp + +SpuVoronoiSimplexSolver : MakeOut + $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(NARROWPHASEDIR)/$@.cpp + +#SpuLibspe2Support_spu : MakeOut +# $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o SpuLibspe2Support.cpp + +## SPU-Bullet +btPersistentManifold : MakeOut + $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(COLLISIONDIR)/NarrowPhaseCollision/$@.cpp + +btOptimizedBvh : MakeOut + $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(COLLISIONDIR)/CollisionShapes/$@.cpp + +btCollisionObject : MakeOut + $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(COLLISIONDIR)/CollisionDispatch/$@.cpp + +btTriangleCallback : MakeOut + $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(COLLISIONDIR)/CollisionShapes/$@.cpp + +btTriangleIndexVertexArray : MakeOut + $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(COLLISIONDIR)/CollisionShapes/$@.cpp + +btStridingMeshInterface : MakeOut + $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(COLLISIONDIR)/CollisionShapes/$@.cpp + +btAlignedAllocator : MakeOut + $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(MATHDIR)/$@.cpp + + +# PPU +SpuGatheringCollisionDispatcher : MakeOut + $(PPU_GCC) $(PPU_DEFFLAGS) $(PPU_CFLAGS) $(PPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $@.cpp + +SequentialThreadSupport: MakeOut + $(PPU_GCC) $(PPU_DEFFLAGS) $(PPU_CFLAGS) $(PPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $@.cpp + +SpuLibspe2Support: MakeOut + $(PPU_GCC) $(PPU_DEFFLAGS) $(PPU_CFLAGS) $(PPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $@.cpp + +btThreadSupportInterface: MakeOut + $(PPU_GCC) $(PPU_DEFFLAGS) $(PPU_CFLAGS) $(PPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $@.cpp + +SpuCollisionTaskProcess : MakeOut + $(PPU_GCC) $(PPU_DEFFLAGS) $(PPU_CFLAGS) $(PPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $@.cpp + +SpuContactManifoldCollisionAlgorithm : MakeOut + $(PPU_GCC) $(PPU_DEFFLAGS) $(PPU_CFLAGS) $(PPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $@.cpp + +SpuSampleTaskProcess : MakeOut + $(PPU_GCC) $(PPU_DEFFLAGS) $(PPU_CFLAGS) $(PPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $@.cpp + + + +spu : boxBoxDistance SpuFakeDma SpuContactManifoldCollisionAlgorithm_spu SpuContactResult SpuTaskFile \ + SpuGjkPairDetector SpuMinkowskiPenetrationDepthSolver SpuVoronoiSimplexSolver SpuCollisionShapes \ + btPersistentManifold btOptimizedBvh btCollisionObject btTriangleCallback btTriangleIndexVertexArray \ + btStridingMeshInterface btAlignedAllocator + $(SPU_GCC) -o $(OUTDIR)/spuCollision.elf \ + $(OUTDIR)/SpuTaskFile.o \ + $(OUTDIR)/SpuFakeDma.o \ + $(OUTDIR)/boxBoxDistance.o \ + $(OUTDIR)/SpuContactManifoldCollisionAlgorithm_spu.o \ + $(OUTDIR)/SpuContactResult.o \ + $(OUTDIR)/SpuCollisionShapes.o \ + $(OUTDIR)/SpuGjkPairDetector.o \ + $(OUTDIR)/SpuMinkowskiPenetrationDepthSolver.o \ + $(OUTDIR)/SpuVoronoiSimplexSolver.o \ + $(OUTDIR)/btPersistentManifold.o \ + $(OUTDIR)/btTriangleCallback.o \ + $(OUTDIR)/btTriangleIndexVertexArray.o \ + $(OUTDIR)/btStridingMeshInterface.o \ + $(OUTDIR)/btAlignedAllocator.o \ + $(SPU_LFLAGS) $(SPU_LIBRARIES) + +spu-embed : spu + $(SPU_EMBED) $(ARCHITECTUREFLAG) $(SYMBOLNAME) $(OUTDIR)/spuCollision.elf $(OUTDIR)/$@.o + $(SPU_AR) -qcs $(LIBOUTDIR)/libspu.a $(OUTDIR)/$@.o + + + +ppu : SpuGatheringCollisionDispatcher SpuCollisionTaskProcess btThreadSupportInterface \ + SpuLibspe2Support SpuContactManifoldCollisionAlgorithm SpuSampleTaskProcess + $(PPU_AR) -qcs $(LIBOUTDIR)/bulletmultithreaded.a \ + $(OUTDIR)/SpuCollisionTaskProcess.o \ + $(OUTDIR)/SpuSampleTaskProcess.o \ + $(OUTDIR)/SpuGatheringCollisionDispatcher.o \ + $(OUTDIR)/SpuLibspe2Support.o \ + $(OUTDIR)/btThreadSupportInterface.o \ + $(OUTDIR)/SpuContactManifoldCollisionAlgorithm.o + +all : spu-embed ppu + +clean: + $(RM) $(OUTDIR)/* ; $(RM) $(LIBOUTDIR)/libspu.a ; $(RM) $(LIBOUTDIR)/bulletmultithreaded.a + + + + diff --git a/extern/bullet2/BulletMultiThreaded/MiniCL.cpp b/extern/bullet2/BulletMultiThreaded/MiniCL.cpp new file mode 100644 index 00000000000..b7f5a699312 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/MiniCL.cpp @@ -0,0 +1,517 @@ +/* + Copyright (C) 2010 Sony Computer Entertainment Inc. + All rights reserved. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +*/ + + +#include "MiniCL/cl.h" +#define __PHYSICS_COMMON_H__ 1 +#ifdef _WIN32 +#include "BulletMultiThreaded/Win32ThreadSupport.h" +#endif + +#include "BulletMultiThreaded/SequentialThreadSupport.h" +#include "MiniCLTaskScheduler.h" +#include "MiniCLTask/MiniCLTask.h" +#include "LinearMath/btMinMax.h" + +//#define DEBUG_MINICL_KERNELS 1 + + + + +CL_API_ENTRY cl_int CL_API_CALL clGetDeviceInfo( + cl_device_id device , + cl_device_info param_name , + size_t param_value_size , + void * param_value , + size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0 +{ + + switch (param_name) + { + case CL_DEVICE_NAME: + { + char deviceName[] = "CPU"; + unsigned int nameLen = strlen(deviceName)+1; + assert(param_value_size>strlen(deviceName)); + if (nameLen < param_value_size) + { + const char* cpuName = "CPU"; + sprintf((char*)param_value,"%s",cpuName); + } else + { + printf("error: param_value_size should be at least %d, but it is %d\n",nameLen,param_value_size); + } + break; + } + case CL_DEVICE_TYPE: + { + if (param_value_size>=sizeof(cl_device_type)) + { + cl_device_type* deviceType = (cl_device_type*)param_value; + *deviceType = CL_DEVICE_TYPE_CPU; + } else + { + printf("error: param_value_size should be at least %d\n",sizeof(cl_device_type)); + } + break; + } + case CL_DEVICE_MAX_COMPUTE_UNITS: + { + if (param_value_size>=sizeof(cl_uint)) + { + cl_uint* numUnits = (cl_uint*)param_value; + *numUnits= 4; + } else + { + printf("error: param_value_size should be at least %d\n",sizeof(cl_uint)); + } + + break; + } + case CL_DEVICE_MAX_WORK_ITEM_SIZES: + { + size_t workitem_size[3]; + + if (param_value_size>=sizeof(workitem_size)) + { + size_t* workItemSize = (size_t*)param_value; + workItemSize[0] = 64; + workItemSize[1] = 24; + workItemSize[2] = 16; + } else + { + printf("error: param_value_size should be at least %d\n",sizeof(cl_uint)); + } + break; + } + case CL_DEVICE_MAX_CLOCK_FREQUENCY: + { + cl_uint* clock_frequency = (cl_uint*)param_value; + *clock_frequency = 3*1024; + break; + } + default: + { + printf("error: unsupported param_name:%d\n",param_name); + } + } + + + return 0; +} + +CL_API_ENTRY cl_int CL_API_CALL clReleaseMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0 +{ + return 0; +} + + + +CL_API_ENTRY cl_int CL_API_CALL clReleaseCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0 +{ + return 0; +} + +CL_API_ENTRY cl_int CL_API_CALL clReleaseProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0 +{ + return 0; +} + +CL_API_ENTRY cl_int CL_API_CALL clReleaseKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0 +{ + return 0; +} + + +// Enqueued Commands APIs +CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadBuffer(cl_command_queue command_queue , + cl_mem buffer , + cl_bool /* blocking_read */, + size_t offset , + size_t cb , + void * ptr , + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0 +{ + MiniCLTaskScheduler* scheduler = (MiniCLTaskScheduler*) command_queue; + + ///wait for all work items to be completed + scheduler->flush(); + + memcpy(ptr,(char*)buffer + offset,cb); + return 0; +} + + +CL_API_ENTRY cl_int clGetProgramBuildInfo(cl_program /* program */, + cl_device_id /* device */, + cl_program_build_info /* param_name */, + size_t /* param_value_size */, + void * /* param_value */, + size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0 +{ + + return 0; +} + + +// Program Object APIs +CL_API_ENTRY cl_program +clCreateProgramWithSource(cl_context context , + cl_uint /* count */, + const char ** /* strings */, + const size_t * /* lengths */, + cl_int * errcode_ret ) CL_API_SUFFIX__VERSION_1_0 +{ + *errcode_ret = CL_SUCCESS; + return (cl_program)context; +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteBuffer(cl_command_queue command_queue , + cl_mem buffer , + cl_bool /* blocking_read */, + size_t offset, + size_t cb , + const void * ptr , + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0 +{ + MiniCLTaskScheduler* scheduler = (MiniCLTaskScheduler*) command_queue; + + ///wait for all work items to be completed + scheduler->flush(); + + memcpy((char*)buffer + offset, ptr,cb); + return 0; +} + +CL_API_ENTRY cl_int CL_API_CALL clFlush(cl_command_queue command_queue) +{ + MiniCLTaskScheduler* scheduler = (MiniCLTaskScheduler*) command_queue; + ///wait for all work items to be completed + scheduler->flush(); + return 0; +} + + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueNDRangeKernel(cl_command_queue /* command_queue */, + cl_kernel clKernel , + cl_uint work_dim , + const size_t * /* global_work_offset */, + const size_t * global_work_size , + const size_t * /* local_work_size */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0 +{ + + + MiniCLKernel* kernel = (MiniCLKernel*) clKernel; + for (unsigned int ii=0;iim_scheduler->getMaxNumOutstandingTasks(); + int numWorkItems = global_work_size[ii]; + +// //at minimum 64 work items per task +// int numWorkItemsPerTask = btMax(64,numWorkItems / maxTask); + int numWorkItemsPerTask = numWorkItems / maxTask; + if (!numWorkItemsPerTask) numWorkItemsPerTask = 1; + + for (int t=0;tm_scheduler->issueTask(t, endIndex, kernel); + t = endIndex; + } + } +/* + + void* bla = 0; + + scheduler->issueTask(bla,2,3); + scheduler->flush(); + + */ + + return 0; +} + +#define LOCAL_BUF_SIZE 32768 +static int sLocalMemBuf[LOCAL_BUF_SIZE * 4 + 16]; +static int* spLocalBufCurr = NULL; +static int sLocalBufUsed = LOCAL_BUF_SIZE; // so it will be reset at the first call +static void* localBufMalloc(int size) +{ + int size16 = (size + 15) >> 4; // in 16-byte units + if((sLocalBufUsed + size16) > LOCAL_BUF_SIZE) + { // reset + spLocalBufCurr = sLocalMemBuf; + while((long)spLocalBufCurr & 0x0F) spLocalBufCurr++; // align to 16 bytes + sLocalBufUsed = 0; + } + void* ret = spLocalBufCurr; + spLocalBufCurr += size16 * 4; + sLocalBufUsed += size; + return ret; +} + + + +CL_API_ENTRY cl_int CL_API_CALL clSetKernelArg(cl_kernel clKernel , + cl_uint arg_index , + size_t arg_size , + const void * arg_value ) CL_API_SUFFIX__VERSION_1_0 +{ + MiniCLKernel* kernel = (MiniCLKernel* ) clKernel; + btAssert(arg_size <= MINICL_MAX_ARGLENGTH); + if (arg_index>MINI_CL_MAX_ARG) + { + printf("error: clSetKernelArg arg_index (%d) exceeds %d\n",arg_index,MINI_CL_MAX_ARG); + } else + { +// if (arg_size>=MINICL_MAX_ARGLENGTH) + if (arg_size != MINICL_MAX_ARGLENGTH) + { + printf("error: clSetKernelArg argdata too large: %d (maximum is %d)\n",arg_size,MINICL_MAX_ARGLENGTH); + } + else + { + if(arg_value == NULL) + { // this is only for __local memory qualifier + void* ptr = localBufMalloc(arg_size); + kernel->m_argData[arg_index] = ptr; + } + else + { + memcpy(&(kernel->m_argData[arg_index]), arg_value, arg_size); + } + kernel->m_argSizes[arg_index] = arg_size; + if(arg_index >= kernel->m_numArgs) + { + kernel->m_numArgs = arg_index + 1; + kernel->updateLauncher(); + } + } + } + return 0; +} + +// Kernel Object APIs +CL_API_ENTRY cl_kernel CL_API_CALL clCreateKernel(cl_program program , + const char * kernel_name , + cl_int * errcode_ret ) CL_API_SUFFIX__VERSION_1_0 +{ + MiniCLTaskScheduler* scheduler = (MiniCLTaskScheduler*) program; + MiniCLKernel* kernel = new MiniCLKernel(); + int nameLen = strlen(kernel_name); + if(nameLen >= MINI_CL_MAX_KERNEL_NAME) + { + *errcode_ret = CL_INVALID_KERNEL_NAME; + return NULL; + } + strcpy(kernel->m_name, kernel_name); + kernel->m_numArgs = 0; + + //kernel->m_kernelProgramCommandId = scheduler->findProgramCommandIdByName(kernel_name); + //if (kernel->m_kernelProgramCommandId>=0) + //{ + // *errcode_ret = CL_SUCCESS; + //} else + //{ + // *errcode_ret = CL_INVALID_KERNEL_NAME; + //} + kernel->m_scheduler = scheduler; + if(kernel->registerSelf() == NULL) + { + *errcode_ret = CL_INVALID_KERNEL_NAME; + return NULL; + } + else + { + *errcode_ret = CL_SUCCESS; + } + + return (cl_kernel)kernel; + +} + + +CL_API_ENTRY cl_int CL_API_CALL clBuildProgram(cl_program /* program */, + cl_uint /* num_devices */, + const cl_device_id * /* device_list */, + const char * /* options */, + void (*pfn_notify)(cl_program /* program */, void * /* user_data */), + void * /* user_data */) CL_API_SUFFIX__VERSION_1_0 +{ + return CL_SUCCESS; +} + +CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithBinary(cl_context context , + cl_uint /* num_devices */, + const cl_device_id * /* device_list */, + const size_t * /* lengths */, + const unsigned char ** /* binaries */, + cl_int * /* binary_status */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0 +{ + return (cl_program)context; +} + + +// Memory Object APIs +CL_API_ENTRY cl_mem CL_API_CALL clCreateBuffer(cl_context /* context */, + cl_mem_flags flags , + size_t size, + void * host_ptr , + cl_int * errcode_ret ) CL_API_SUFFIX__VERSION_1_0 +{ + cl_mem buf = (cl_mem)malloc(size); + if ((flags&CL_MEM_COPY_HOST_PTR) && host_ptr) + { + memcpy(buf,host_ptr,size); + } + *errcode_ret = 0; + return buf; +} + +// Command Queue APIs +CL_API_ENTRY cl_command_queue CL_API_CALL clCreateCommandQueue(cl_context context , + cl_device_id /* device */, + cl_command_queue_properties /* properties */, + cl_int * errcode_ret ) CL_API_SUFFIX__VERSION_1_0 +{ + *errcode_ret = 0; + return (cl_command_queue) context; +} + +extern CL_API_ENTRY cl_int CL_API_CALL clGetContextInfo(cl_context /* context */, + cl_context_info param_name , + size_t param_value_size , + void * param_value, + size_t * param_value_size_ret ) CL_API_SUFFIX__VERSION_1_0 +{ + + switch (param_name) + { + case CL_CONTEXT_DEVICES: + { + if (!param_value_size) + { + *param_value_size_ret = 13; + } else + { + const char* testName = "MiniCL_Test."; + sprintf((char*)param_value,"%s",testName); + } + break; + }; + default: + { + printf("unsupported\n"); + } + } + + return 0; +} + +CL_API_ENTRY cl_context CL_API_CALL clCreateContextFromType(cl_context_properties * /* properties */, + cl_device_type /* device_type */, + void (*pfn_notify)(const char *, const void *, size_t, void *) /* pfn_notify */, + void * /* user_data */, + cl_int * errcode_ret ) CL_API_SUFFIX__VERSION_1_0 +{ + int maxNumOutstandingTasks = 4; +// int maxNumOutstandingTasks = 2; +// int maxNumOutstandingTasks = 1; + gMiniCLNumOutstandingTasks = maxNumOutstandingTasks; + const int maxNumOfThreadSupports = 8; + static int sUniqueThreadSupportIndex = 0; + static char* sUniqueThreadSupportName[maxNumOfThreadSupports] = + { + "MiniCL_0", "MiniCL_1", "MiniCL_2", "MiniCL_3", "MiniCL_4", "MiniCL_5", "MiniCL_6", "MiniCL_7" + }; + +#ifdef DEBUG_MINICL_KERNELS + SequentialThreadSupport::SequentialThreadConstructionInfo stc("MiniCL",processMiniCLTask,createMiniCLLocalStoreMemory); + SequentialThreadSupport* threadSupport = new SequentialThreadSupport(stc); +#else + +#if _WIN32 + btAssert(sUniqueThreadSupportIndex < maxNumOfThreadSupports); + Win32ThreadSupport* threadSupport = new Win32ThreadSupport(Win32ThreadSupport::Win32ThreadConstructionInfo( +// "MiniCL", + sUniqueThreadSupportName[sUniqueThreadSupportIndex++], + processMiniCLTask, //processCollisionTask, + createMiniCLLocalStoreMemory,//createCollisionLocalStoreMemory, + maxNumOutstandingTasks)); +#else + ///todo: add posix thread support for other platforms + SequentialThreadSupport::SequentialThreadConstructionInfo stc("MiniCL",processMiniCLTask,createMiniCLLocalStoreMemory); + SequentialThreadSupport* threadSupport = new SequentialThreadSupport(stc); +#endif + +#endif //DEBUG_MINICL_KERNELS + + + MiniCLTaskScheduler* scheduler = new MiniCLTaskScheduler(threadSupport,maxNumOutstandingTasks); + + *errcode_ret = 0; + return (cl_context)scheduler; +} + +CL_API_ENTRY cl_int CL_API_CALL clReleaseContext(cl_context context ) CL_API_SUFFIX__VERSION_1_0 +{ + + MiniCLTaskScheduler* scheduler = (MiniCLTaskScheduler*) context; + + btThreadSupportInterface* threadSupport = scheduler->getThreadSupportInterface(); + delete scheduler; + delete threadSupport; + + return 0; +} +extern CL_API_ENTRY cl_int CL_API_CALL +clFinish(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0 +{ + return CL_SUCCESS; +} + + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetKernelWorkGroupInfo(cl_kernel kernel , + cl_device_id /* device */, + cl_kernel_work_group_info wgi/* param_name */, + size_t sz /* param_value_size */, + void * ptr /* param_value */, + size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0 +{ + if((wgi == CL_KERNEL_WORK_GROUP_SIZE) + &&(sz == sizeof(int)) + &&(ptr != NULL)) + { + MiniCLKernel* miniCLKernel = (MiniCLKernel*)kernel; + MiniCLTaskScheduler* scheduler = miniCLKernel->m_scheduler; + *((int*)ptr) = scheduler->getMaxNumOutstandingTasks(); + return CL_SUCCESS; + } + else + { + return CL_INVALID_VALUE; + } +} diff --git a/extern/bullet2/BulletMultiThreaded/MiniCLTask/MiniCLTask.cpp b/extern/bullet2/BulletMultiThreaded/MiniCLTask/MiniCLTask.cpp new file mode 100644 index 00000000000..babb1d24af5 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/MiniCLTask/MiniCLTask.cpp @@ -0,0 +1,74 @@ +/* +Bullet Continuous Collision Detection and Physics Library, Copyright (c) 2007 Erwin Coumans + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +*/ + + +#include "MiniCLTask.h" +#include "BulletMultiThreaded/PlatformDefinitions.h" +#include "BulletMultiThreaded/SpuFakeDma.h" +#include "LinearMath/btMinMax.h" +#include "MiniCLTask.h" +#include "BulletMultiThreaded/MiniCLTaskScheduler.h" + + +#ifdef __SPU__ +#include +#else +#include +#define spu_printf printf +#endif + +int gMiniCLNumOutstandingTasks = 0; + +struct MiniCLTask_LocalStoreMemory +{ + +}; + + +//-- MAIN METHOD +void processMiniCLTask(void* userPtr, void* lsMemory) +{ + // BT_PROFILE("processSampleTask"); + + MiniCLTask_LocalStoreMemory* localMemory = (MiniCLTask_LocalStoreMemory*)lsMemory; + + MiniCLTaskDesc* taskDescPtr = (MiniCLTaskDesc*)userPtr; + MiniCLTaskDesc& taskDesc = *taskDescPtr; + + for (unsigned int i=taskDesc.m_firstWorkUnit;im_launcher(&taskDesc, i); + } + +// printf("Compute Unit[%d] executed kernel %d work items [%d..%d)\n",taskDesc.m_taskId,taskDesc.m_kernelProgramId,taskDesc.m_firstWorkUnit,taskDesc.m_lastWorkUnit); + +} + + +#if defined(__CELLOS_LV2__) || defined (LIBSPE2) + +ATTRIBUTE_ALIGNED16(MiniCLTask_LocalStoreMemory gLocalStoreMemory); + +void* createMiniCLLocalStoreMemory() +{ + return &gLocalStoreMemory; +} +#else +void* createMiniCLLocalStoreMemory() +{ + return new MiniCLTask_LocalStoreMemory; +}; + +#endif diff --git a/extern/bullet2/BulletMultiThreaded/MiniCLTask/MiniCLTask.h b/extern/bullet2/BulletMultiThreaded/MiniCLTask/MiniCLTask.h new file mode 100644 index 00000000000..7e78be0855e --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/MiniCLTask/MiniCLTask.h @@ -0,0 +1,62 @@ +/* +Bullet Continuous Collision Detection and Physics Library, Copyright (c) 2007 Erwin Coumans + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +*/ + +#ifndef MINICL__TASK_H +#define MINICL__TASK_H + +#include "BulletMultiThreaded/PlatformDefinitions.h" +#include "LinearMath/btScalar.h" + +#include "LinearMath/btAlignedAllocator.h" + + +#define MINICL_MAX_ARGLENGTH (sizeof(void*)) +#define MINI_CL_MAX_ARG 16 +#define MINI_CL_MAX_KERNEL_NAME 256 + +struct MiniCLKernel; + +ATTRIBUTE_ALIGNED16(struct) MiniCLTaskDesc +{ + BT_DECLARE_ALIGNED_ALLOCATOR(); + + MiniCLTaskDesc() + { + for (int i=0;i + +#ifdef __SPU__ + + + +void SampleThreadFunc(void* userPtr,void* lsMemory) +{ + //do nothing + printf("hello world\n"); +} + + +void* SamplelsMemoryFunc() +{ + //don't create local store memory, just return 0 + return 0; +} + + +#else + + +#include "BulletMultiThreaded/btThreadSupportInterface.h" + +//# include "SPUAssert.h" +#include + +#include "MiniCL/cl_platform.h" + +extern "C" { + extern char SPU_SAMPLE_ELF_SYMBOL[]; +} + + +MiniCLTaskScheduler::MiniCLTaskScheduler(btThreadSupportInterface* threadInterface, int maxNumOutstandingTasks) +:m_threadInterface(threadInterface), +m_maxNumOutstandingTasks(maxNumOutstandingTasks) +{ + + m_taskBusy.resize(m_maxNumOutstandingTasks); + m_spuSampleTaskDesc.resize(m_maxNumOutstandingTasks); + + m_kernels.resize(0); + + for (int i = 0; i < m_maxNumOutstandingTasks; i++) + { + m_taskBusy[i] = false; + } + m_numBusyTasks = 0; + m_currentTask = 0; + + m_initialized = false; + + m_threadInterface->startSPU(); + + +} + +MiniCLTaskScheduler::~MiniCLTaskScheduler() +{ + m_threadInterface->stopSPU(); + +} + + + +void MiniCLTaskScheduler::initialize() +{ +#ifdef DEBUG_SPU_TASK_SCHEDULING + printf("MiniCLTaskScheduler::initialize()\n"); +#endif //DEBUG_SPU_TASK_SCHEDULING + + for (int i = 0; i < m_maxNumOutstandingTasks; i++) + { + m_taskBusy[i] = false; + } + m_numBusyTasks = 0; + m_currentTask = 0; + m_initialized = true; + +} + + +void MiniCLTaskScheduler::issueTask(int firstWorkUnit, int lastWorkUnit, MiniCLKernel* kernel) +{ + +#ifdef DEBUG_SPU_TASK_SCHEDULING + printf("MiniCLTaskScheduler::issueTask (m_currentTask= %d\)n", m_currentTask); +#endif //DEBUG_SPU_TASK_SCHEDULING + + m_taskBusy[m_currentTask] = true; + m_numBusyTasks++; + + MiniCLTaskDesc& taskDesc = m_spuSampleTaskDesc[m_currentTask]; + { + // send task description in event message + taskDesc.m_firstWorkUnit = firstWorkUnit; + taskDesc.m_lastWorkUnit = lastWorkUnit; + taskDesc.m_kernel = kernel; + //some bookkeeping to recognize finished tasks + taskDesc.m_taskId = m_currentTask; + +// for (int i=0;im_numArgs; i++) + { + taskDesc.m_argSizes[i] = kernel->m_argSizes[i]; + if (taskDesc.m_argSizes[i]) + { + taskDesc.m_argData[i] = kernel->m_argData[i]; +// memcpy(&taskDesc.m_argData[i],&argData[MINICL_MAX_ARGLENGTH*i],taskDesc.m_argSizes[i]); + } + } + } + + + m_threadInterface->sendRequest(1, (ppu_address_t) &taskDesc, m_currentTask); + + // if all tasks busy, wait for spu event to clear the task. + + if (m_numBusyTasks >= m_maxNumOutstandingTasks) + { + unsigned int taskId; + unsigned int outputSize; + + for (int i=0;iwaitForResponse(&taskId, &outputSize); + + //printf("PPU: after issue, received event: %u %d\n", taskId, outputSize); + + postProcess(taskId, outputSize); + + m_taskBusy[taskId] = false; + + m_numBusyTasks--; + } + + // find new task buffer + for (int i = 0; i < m_maxNumOutstandingTasks; i++) + { + if (!m_taskBusy[i]) + { + m_currentTask = i; + break; + } + } +} + + +///Optional PPU-size post processing for each task +void MiniCLTaskScheduler::postProcess(int taskId, int outputSize) +{ + +} + + +void MiniCLTaskScheduler::flush() +{ +#ifdef DEBUG_SPU_TASK_SCHEDULING + printf("\nSpuCollisionTaskProcess::flush()\n"); +#endif //DEBUG_SPU_TASK_SCHEDULING + + + // all tasks are issued, wait for all tasks to be complete + while(m_numBusyTasks > 0) + { +// Consolidating SPU code + unsigned int taskId; + unsigned int outputSize; + + for (int i=0;iwaitForResponse(&taskId, &outputSize); + } + + //printf("PPU: flushing, received event: %u %d\n", taskId, outputSize); + + postProcess(taskId, outputSize); + + m_taskBusy[taskId] = false; + + m_numBusyTasks--; + } + + +} + + + +typedef void (*MiniCLKernelLauncher0)(int); +typedef void (*MiniCLKernelLauncher1)(void*, int); +typedef void (*MiniCLKernelLauncher2)(void*, void*, int); +typedef void (*MiniCLKernelLauncher3)(void*, void*, void*, int); +typedef void (*MiniCLKernelLauncher4)(void*, void*, void*, void*, int); +typedef void (*MiniCLKernelLauncher5)(void*, void*, void*, void*, void*, int); +typedef void (*MiniCLKernelLauncher6)(void*, void*, void*, void*, void*, void*, int); +typedef void (*MiniCLKernelLauncher7)(void*, void*, void*, void*, void*, void*, void*, int); +typedef void (*MiniCLKernelLauncher8)(void*, void*, void*, void*, void*, void*, void*, void*, int); +typedef void (*MiniCLKernelLauncher9)(void*, void*, void*, void*, void*, void*, void*, void*, void*, int); +typedef void (*MiniCLKernelLauncher10)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int); +typedef void (*MiniCLKernelLauncher11)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int); +typedef void (*MiniCLKernelLauncher12)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int); +typedef void (*MiniCLKernelLauncher13)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int); +typedef void (*MiniCLKernelLauncher14)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int); +typedef void (*MiniCLKernelLauncher15)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int); +typedef void (*MiniCLKernelLauncher16)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int); + + +static void kernelLauncher0(MiniCLTaskDesc* taskDesc, int guid) +{ + ((MiniCLKernelLauncher0)(taskDesc->m_kernel->m_launcher))(guid); +} +static void kernelLauncher1(MiniCLTaskDesc* taskDesc, int guid) +{ + ((MiniCLKernelLauncher1)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0], + guid); +} +static void kernelLauncher2(MiniCLTaskDesc* taskDesc, int guid) +{ + ((MiniCLKernelLauncher2)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0], + taskDesc->m_argData[1], + guid); +} +static void kernelLauncher3(MiniCLTaskDesc* taskDesc, int guid) +{ + ((MiniCLKernelLauncher3)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0], + taskDesc->m_argData[1], + taskDesc->m_argData[2], + guid); +} +static void kernelLauncher4(MiniCLTaskDesc* taskDesc, int guid) +{ + ((MiniCLKernelLauncher4)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0], + taskDesc->m_argData[1], + taskDesc->m_argData[2], + taskDesc->m_argData[3], + guid); +} +static void kernelLauncher5(MiniCLTaskDesc* taskDesc, int guid) +{ + ((MiniCLKernelLauncher5)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0], + taskDesc->m_argData[1], + taskDesc->m_argData[2], + taskDesc->m_argData[3], + taskDesc->m_argData[4], + guid); +} +static void kernelLauncher6(MiniCLTaskDesc* taskDesc, int guid) +{ + ((MiniCLKernelLauncher6)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0], + taskDesc->m_argData[1], + taskDesc->m_argData[2], + taskDesc->m_argData[3], + taskDesc->m_argData[4], + taskDesc->m_argData[5], + guid); +} +static void kernelLauncher7(MiniCLTaskDesc* taskDesc, int guid) +{ + ((MiniCLKernelLauncher7)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0], + taskDesc->m_argData[1], + taskDesc->m_argData[2], + taskDesc->m_argData[3], + taskDesc->m_argData[4], + taskDesc->m_argData[5], + taskDesc->m_argData[6], + guid); +} +static void kernelLauncher8(MiniCLTaskDesc* taskDesc, int guid) +{ + ((MiniCLKernelLauncher8)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0], + taskDesc->m_argData[1], + taskDesc->m_argData[2], + taskDesc->m_argData[3], + taskDesc->m_argData[4], + taskDesc->m_argData[5], + taskDesc->m_argData[6], + taskDesc->m_argData[7], + guid); +} +static void kernelLauncher9(MiniCLTaskDesc* taskDesc, int guid) +{ + ((MiniCLKernelLauncher9)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0], + taskDesc->m_argData[1], + taskDesc->m_argData[2], + taskDesc->m_argData[3], + taskDesc->m_argData[4], + taskDesc->m_argData[5], + taskDesc->m_argData[6], + taskDesc->m_argData[7], + taskDesc->m_argData[8], + guid); +} +static void kernelLauncher10(MiniCLTaskDesc* taskDesc, int guid) +{ + ((MiniCLKernelLauncher10)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0], + taskDesc->m_argData[1], + taskDesc->m_argData[2], + taskDesc->m_argData[3], + taskDesc->m_argData[4], + taskDesc->m_argData[5], + taskDesc->m_argData[6], + taskDesc->m_argData[7], + taskDesc->m_argData[8], + taskDesc->m_argData[9], + guid); +} +static void kernelLauncher11(MiniCLTaskDesc* taskDesc, int guid) +{ + ((MiniCLKernelLauncher11)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0], + taskDesc->m_argData[1], + taskDesc->m_argData[2], + taskDesc->m_argData[3], + taskDesc->m_argData[4], + taskDesc->m_argData[5], + taskDesc->m_argData[6], + taskDesc->m_argData[7], + taskDesc->m_argData[8], + taskDesc->m_argData[9], + taskDesc->m_argData[10], + guid); +} +static void kernelLauncher12(MiniCLTaskDesc* taskDesc, int guid) +{ + ((MiniCLKernelLauncher12)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0], + taskDesc->m_argData[1], + taskDesc->m_argData[2], + taskDesc->m_argData[3], + taskDesc->m_argData[4], + taskDesc->m_argData[5], + taskDesc->m_argData[6], + taskDesc->m_argData[7], + taskDesc->m_argData[8], + taskDesc->m_argData[9], + taskDesc->m_argData[10], + taskDesc->m_argData[11], + guid); +} +static void kernelLauncher13(MiniCLTaskDesc* taskDesc, int guid) +{ + ((MiniCLKernelLauncher13)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0], + taskDesc->m_argData[1], + taskDesc->m_argData[2], + taskDesc->m_argData[3], + taskDesc->m_argData[4], + taskDesc->m_argData[5], + taskDesc->m_argData[6], + taskDesc->m_argData[7], + taskDesc->m_argData[8], + taskDesc->m_argData[9], + taskDesc->m_argData[10], + taskDesc->m_argData[11], + taskDesc->m_argData[12], + guid); +} +static void kernelLauncher14(MiniCLTaskDesc* taskDesc, int guid) +{ + ((MiniCLKernelLauncher14)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0], + taskDesc->m_argData[1], + taskDesc->m_argData[2], + taskDesc->m_argData[3], + taskDesc->m_argData[4], + taskDesc->m_argData[5], + taskDesc->m_argData[6], + taskDesc->m_argData[7], + taskDesc->m_argData[8], + taskDesc->m_argData[9], + taskDesc->m_argData[10], + taskDesc->m_argData[11], + taskDesc->m_argData[12], + taskDesc->m_argData[13], + guid); +} +static void kernelLauncher15(MiniCLTaskDesc* taskDesc, int guid) +{ + ((MiniCLKernelLauncher15)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0], + taskDesc->m_argData[1], + taskDesc->m_argData[2], + taskDesc->m_argData[3], + taskDesc->m_argData[4], + taskDesc->m_argData[5], + taskDesc->m_argData[6], + taskDesc->m_argData[7], + taskDesc->m_argData[8], + taskDesc->m_argData[9], + taskDesc->m_argData[10], + taskDesc->m_argData[11], + taskDesc->m_argData[12], + taskDesc->m_argData[13], + taskDesc->m_argData[14], + guid); +} +static void kernelLauncher16(MiniCLTaskDesc* taskDesc, int guid) +{ + ((MiniCLKernelLauncher16)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0], + taskDesc->m_argData[1], + taskDesc->m_argData[2], + taskDesc->m_argData[3], + taskDesc->m_argData[4], + taskDesc->m_argData[5], + taskDesc->m_argData[6], + taskDesc->m_argData[7], + taskDesc->m_argData[8], + taskDesc->m_argData[9], + taskDesc->m_argData[10], + taskDesc->m_argData[11], + taskDesc->m_argData[12], + taskDesc->m_argData[13], + taskDesc->m_argData[14], + taskDesc->m_argData[15], + guid); +} + +static kernelLauncherCB spLauncherList[MINI_CL_MAX_ARG+1] = +{ + kernelLauncher0, + kernelLauncher1, + kernelLauncher2, + kernelLauncher3, + kernelLauncher4, + kernelLauncher5, + kernelLauncher6, + kernelLauncher7, + kernelLauncher8, + kernelLauncher9, + kernelLauncher10, + kernelLauncher11, + kernelLauncher12, + kernelLauncher13, + kernelLauncher14, + kernelLauncher15, + kernelLauncher16 +}; + +void MiniCLKernel::updateLauncher() +{ + m_launcher = spLauncherList[m_numArgs]; +} + +struct MiniCLKernelDescEntry +{ + void* pCode; + char* pName; +}; +static MiniCLKernelDescEntry spKernelDesc[256]; +static int sNumKernelDesc = 0; + +MiniCLKernelDesc::MiniCLKernelDesc(void* pCode, char* pName) +{ + for(int i = 0; i < sNumKernelDesc; i++) + { + if(!strcmp(pName, spKernelDesc[i].pName)) + { // already registered + btAssert(spKernelDesc[i].pCode == pCode); + return; + } + } + spKernelDesc[sNumKernelDesc].pCode = pCode; + spKernelDesc[sNumKernelDesc].pName = pName; + sNumKernelDesc++; +} + + +MiniCLKernel* MiniCLKernel::registerSelf() +{ + m_scheduler->registerKernel(this); + for(int i = 0; i < sNumKernelDesc; i++) + { + if(!strcmp(m_name, spKernelDesc[i].pName)) + { + m_pCode = spKernelDesc[i].pCode; + return this; + } + } + return NULL; +} + +#endif + + +#endif //USE_SAMPLE_PROCESS diff --git a/extern/bullet2/BulletMultiThreaded/MiniCLTaskScheduler.h b/extern/bullet2/BulletMultiThreaded/MiniCLTaskScheduler.h new file mode 100644 index 00000000000..3061a713436 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/MiniCLTaskScheduler.h @@ -0,0 +1,194 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#ifndef MINICL_TASK_SCHEDULER_H +#define MINICL_TASK_SCHEDULER_H + +#include + + +#include "BulletMultiThreaded/PlatformDefinitions.h" + +#include + +#include "LinearMath/btAlignedObjectArray.h" + + +#include "MiniCLTask/MiniCLTask.h" + +//just add your commands here, try to keep them globally unique for debugging purposes +#define CMD_SAMPLE_TASK_COMMAND 10 + +struct MiniCLKernel; + +/// MiniCLTaskScheduler handles SPU processing of collision pairs. +/// When PPU issues a task, it will look for completed task buffers +/// PPU will do postprocessing, dependent on workunit output (not likely) +class MiniCLTaskScheduler +{ + // track task buffers that are being used, and total busy tasks + btAlignedObjectArray m_taskBusy; + btAlignedObjectArray m_spuSampleTaskDesc; + + + btAlignedObjectArray m_kernels; + + + int m_numBusyTasks; + + // the current task and the current entry to insert a new work unit + int m_currentTask; + + bool m_initialized; + + void postProcess(int taskId, int outputSize); + + class btThreadSupportInterface* m_threadInterface; + + int m_maxNumOutstandingTasks; + + + +public: + MiniCLTaskScheduler(btThreadSupportInterface* threadInterface, int maxNumOutstandingTasks); + + ~MiniCLTaskScheduler(); + + ///call initialize in the beginning of the frame, before addCollisionPairToTask + void initialize(); + + void issueTask(int firstWorkUnit, int lastWorkUnit, MiniCLKernel* kernel); + + ///call flush to submit potential outstanding work to SPUs and wait for all involved SPUs to be finished + void flush(); + + class btThreadSupportInterface* getThreadSupportInterface() + { + return m_threadInterface; + } + + int findProgramCommandIdByName(const char* programName) const; + + int getMaxNumOutstandingTasks() const + { + return m_maxNumOutstandingTasks; + } + + void registerKernel(MiniCLKernel* kernel) + { + m_kernels.push_back(kernel); + } +}; + +typedef void (*kernelLauncherCB)(MiniCLTaskDesc* taskDesc, int guid); + +struct MiniCLKernel +{ + MiniCLTaskScheduler* m_scheduler; + +// int m_kernelProgramCommandId; + + char m_name[MINI_CL_MAX_KERNEL_NAME]; + unsigned int m_numArgs; + kernelLauncherCB m_launcher; + void* m_pCode; + void updateLauncher(); + MiniCLKernel* registerSelf(); + + void* m_argData[MINI_CL_MAX_ARG]; + int m_argSizes[MINI_CL_MAX_ARG]; +}; + + +#if defined(USE_LIBSPE2) && defined(__SPU__) +////////////////////MAIN///////////////////////////// +#include "../SpuLibspe2Support.h" +#include +#include +#include + +void * SamplelsMemoryFunc(); +void SampleThreadFunc(void* userPtr,void* lsMemory); + +//#define DEBUG_LIBSPE2_MAINLOOP + +int main(unsigned long long speid, addr64 argp, addr64 envp) +{ + printf("SPU is up \n"); + + ATTRIBUTE_ALIGNED128(btSpuStatus status); + ATTRIBUTE_ALIGNED16( SpuSampleTaskDesc taskDesc ) ; + unsigned int received_message = Spu_Mailbox_Event_Nothing; + bool shutdown = false; + + cellDmaGet(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(3)); + + status.m_status = Spu_Status_Free; + status.m_lsMemory.p = SamplelsMemoryFunc(); + + cellDmaLargePut(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(3)); + + + while (!shutdown) + { + received_message = spu_read_in_mbox(); + + + + switch(received_message) + { + case Spu_Mailbox_Event_Shutdown: + shutdown = true; + break; + case Spu_Mailbox_Event_Task: + // refresh the status +#ifdef DEBUG_LIBSPE2_MAINLOOP + printf("SPU recieved Task \n"); +#endif //DEBUG_LIBSPE2_MAINLOOP + cellDmaGet(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(3)); + + btAssert(status.m_status==Spu_Status_Occupied); + + cellDmaGet(&taskDesc, status.m_taskDesc.p, sizeof(SpuSampleTaskDesc), DMA_TAG(3), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(3)); + + SampleThreadFunc((void*)&taskDesc, reinterpret_cast (taskDesc.m_mainMemoryPtr) ); + break; + case Spu_Mailbox_Event_Nothing: + default: + break; + } + + // set to status free and wait for next task + status.m_status = Spu_Status_Free; + cellDmaLargePut(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(3)); + + + } + return 0; +} +////////////////////////////////////////////////////// +#endif + + + +#endif // MINICL_TASK_SCHEDULER_H + diff --git a/extern/bullet2/BulletMultiThreaded/PlatformDefinitions.h b/extern/bullet2/BulletMultiThreaded/PlatformDefinitions.h new file mode 100644 index 00000000000..16362f4bce3 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/PlatformDefinitions.h @@ -0,0 +1,84 @@ +#ifndef TYPE_DEFINITIONS_H +#define TYPE_DEFINITIONS_H + +///This file provides some platform/compiler checks for common definitions + +#ifdef _WIN32 + +typedef union +{ + unsigned int u; + void *p; +} addr64; + +#define USE_WIN32_THREADING 1 + + #if defined(__MINGW32__) || defined(__CYGWIN__) || (defined (_MSC_VER) && _MSC_VER < 1300) + #else + #endif //__MINGW32__ + + typedef unsigned char uint8_t; +#ifndef __PHYSICS_COMMON_H__ +#ifndef __BT_SKIP_UINT64_H + typedef unsigned long int uint64_t; +#endif //__BT_SKIP_UINT64_H + typedef unsigned int uint32_t; +#endif //__PHYSICS_COMMON_H__ + typedef unsigned short uint16_t; + + #include + #define memalign(alignment, size) malloc(size); + +#include //memcpy + + + + #include + #define spu_printf printf + +#else + #include + #include + #include //for memcpy + +#if defined (__CELLOS_LV2__) + // Playstation 3 Cell SDK +#include + +#else + // posix system + +#define USE_PTHREADS (1) + +#ifdef USE_LIBSPE2 +#include +#define spu_printf printf +#define DWORD unsigned int + + typedef union + { + unsigned long long ull; + unsigned int ui[2]; + void *p; + } addr64; + + +#else + +#include +#define spu_printf printf + +#endif // USE_LIBSPE2 + +#endif //__CELLOS_LV2__ + +#endif + + +/* Included here because we need uint*_t typedefs */ +#include "PpuAddressSpace.h" + +#endif //TYPE_DEFINITIONS_H + + + diff --git a/extern/bullet2/BulletMultiThreaded/PosixThreadSupport.cpp b/extern/bullet2/BulletMultiThreaded/PosixThreadSupport.cpp new file mode 100644 index 00000000000..540f0dcf106 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/PosixThreadSupport.cpp @@ -0,0 +1,249 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include +#include "PosixThreadSupport.h" +#ifdef USE_PTHREADS +#include +#include + +#include "SpuCollisionTaskProcess.h" +#include "SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h" + +#define checkPThreadFunction(returnValue) \ + if(0 != returnValue) { \ + printf("PThread problem at line %i in file %s: %i %d\n", __LINE__, __FILE__, returnValue, errno); \ + } + +// The number of threads should be equal to the number of available cores +// Todo: each worker should be linked to a single core, using SetThreadIdealProcessor. + +// PosixThreadSupport helps to initialize/shutdown libspe2, start/stop SPU tasks and communication +// Setup and initialize SPU/CELL/Libspe2 +PosixThreadSupport::PosixThreadSupport(ThreadConstructionInfo& threadConstructionInfo) +{ + startThreads(threadConstructionInfo); +} + +// cleanup/shutdown Libspe2 +PosixThreadSupport::~PosixThreadSupport() +{ + stopSPU(); +} + +#if (defined (__APPLE__)) +#define NAMED_SEMAPHORES +#endif + +// this semaphore will signal, if and how many threads are finished with their work +static sem_t* mainSemaphore; + +static sem_t* createSem(const char* baseName) +{ + static int semCount = 0; +#ifdef NAMED_SEMAPHORES + /// Named semaphore begin + char name[32]; + snprintf(name, 32, "/%s-%d-%4.4d", baseName, getpid(), semCount++); + sem_t* tempSem = sem_open(name, O_CREAT, 0600, 0); + if (tempSem != reinterpret_cast(SEM_FAILED)) + { + //printf("Created \"%s\" Semaphore %x\n", name, tempSem); + } + else + { + //printf("Error creating Semaphore %d\n", errno); + exit(-1); + } + /// Named semaphore end +#else + sem_t* tempSem = new sem_t; + checkPThreadFunction(sem_init(tempSem, 0, 0)); +#endif + return tempSem; +} + +static void destroySem(sem_t* semaphore) +{ +#ifdef NAMED_SEMAPHORES + checkPThreadFunction(sem_close(semaphore)); +#else + checkPThreadFunction(sem_destroy(semaphore)); + delete semaphore; +#endif +} + +static void *threadFunction(void *argument) +{ + + PosixThreadSupport::btSpuStatus* status = (PosixThreadSupport::btSpuStatus*)argument; + + + while (1) + { + checkPThreadFunction(sem_wait(status->startSemaphore)); + + void* userPtr = status->m_userPtr; + + if (userPtr) + { + btAssert(status->m_status); + status->m_userThreadFunc(userPtr,status->m_lsMemory); + status->m_status = 2; + checkPThreadFunction(sem_post(mainSemaphore)); + status->threadUsed++; + } else { + //exit Thread + status->m_status = 3; + checkPThreadFunction(sem_post(mainSemaphore)); + printf("Thread with taskId %i exiting\n",status->m_taskId); + break; + } + + } + + printf("Thread TERMINATED\n"); + return 0; + +} + +///send messages to SPUs +void PosixThreadSupport::sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t taskId) +{ + /// gMidphaseSPU.sendRequest(CMD_GATHER_AND_PROCESS_PAIRLIST, (uint32_t) &taskDesc); + + ///we should spawn an SPU task here, and in 'waitForResponse' it should wait for response of the (one of) the first tasks that finished + + + + switch (uiCommand) + { + case CMD_GATHER_AND_PROCESS_PAIRLIST: + { + btSpuStatus& spuStatus = m_activeSpuStatus[taskId]; + btAssert(taskId >= 0); + btAssert(taskId < m_activeSpuStatus.size()); + + spuStatus.m_commandId = uiCommand; + spuStatus.m_status = 1; + spuStatus.m_userPtr = (void*)uiArgument0; + + // fire event to start new task + checkPThreadFunction(sem_post(spuStatus.startSemaphore)); + break; + } + default: + { + ///not implemented + btAssert(0); + } + + }; + + +} + + +///check for messages from SPUs +void PosixThreadSupport::waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1) +{ + ///We should wait for (one of) the first tasks to finish (or other SPU messages), and report its response + + ///A possible response can be 'yes, SPU handled it', or 'no, please do a PPU fallback' + + + btAssert(m_activeSpuStatus.size()); + + // wait for any of the threads to finish + checkPThreadFunction(sem_wait(mainSemaphore)); + + // get at least one thread which has finished + size_t last = -1; + + for(size_t t=0; t < size_t(m_activeSpuStatus.size()); ++t) { + if(2 == m_activeSpuStatus[t].m_status) { + last = t; + break; + } + } + + btSpuStatus& spuStatus = m_activeSpuStatus[last]; + + btAssert(spuStatus.m_status > 1); + spuStatus.m_status = 0; + + // need to find an active spu + btAssert(last >= 0); + + *puiArgument0 = spuStatus.m_taskId; + *puiArgument1 = spuStatus.m_status; +} + + + +void PosixThreadSupport::startThreads(ThreadConstructionInfo& threadConstructionInfo) +{ + printf("%s creating %i threads.\n", __FUNCTION__, threadConstructionInfo.m_numThreads); + m_activeSpuStatus.resize(threadConstructionInfo.m_numThreads); + + mainSemaphore = createSem("main"); + + for (int i=0;i < threadConstructionInfo.m_numThreads;i++) + { + printf("starting thread %d\n",i); + + btSpuStatus& spuStatus = m_activeSpuStatus[i]; + + spuStatus.startSemaphore = createSem("threadLocal"); + + checkPThreadFunction(pthread_create(&spuStatus.thread, NULL, &threadFunction, (void*)&spuStatus)); + + spuStatus.m_userPtr=0; + + spuStatus.m_taskId = i; + spuStatus.m_commandId = 0; + spuStatus.m_status = 0; + spuStatus.m_lsMemory = threadConstructionInfo.m_lsMemoryFunc(); + spuStatus.m_userThreadFunc = threadConstructionInfo.m_userThreadFunc; + spuStatus.threadUsed = 0; + + printf("started thread %d \n",i); + + } + +} + +void PosixThreadSupport::startSPU() +{ +} + + +///tell the task scheduler we are done with the SPU tasks +void PosixThreadSupport::stopSPU() +{ + for(size_t t=0; t < size_t(m_activeSpuStatus.size()); ++t) { + btSpuStatus& spuStatus = m_activeSpuStatus[t]; + printf("%s: Thread %i used: %ld\n", __FUNCTION__, int(t), spuStatus.threadUsed); + + destroySem(spuStatus.startSemaphore); + checkPThreadFunction(pthread_cancel(spuStatus.thread)); + } + destroySem(mainSemaphore); + + m_activeSpuStatus.clear(); +} + +#endif // USE_PTHREADS + diff --git a/extern/bullet2/BulletMultiThreaded/PosixThreadSupport.h b/extern/bullet2/BulletMultiThreaded/PosixThreadSupport.h new file mode 100644 index 00000000000..7cc49115b4b --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/PosixThreadSupport.h @@ -0,0 +1,124 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "LinearMath/btScalar.h" +#include "PlatformDefinitions.h" + +#ifdef USE_PTHREADS //platform specific defines are defined in PlatformDefinitions.h +#include +#include + +#ifndef POSIX_THREAD_SUPPORT_H +#define POSIX_THREAD_SUPPORT_H + +#include "LinearMath/btAlignedObjectArray.h" + +#include "btThreadSupportInterface.h" + + +typedef void (*PosixThreadFunc)(void* userPtr,void* lsMemory); +typedef void* (*PosixlsMemorySetupFunc)(); + +// PosixThreadSupport helps to initialize/shutdown libspe2, start/stop SPU tasks and communication +class PosixThreadSupport : public btThreadSupportInterface +{ +public: + typedef enum sStatus { + STATUS_BUSY, + STATUS_READY, + STATUS_FINISHED + } Status; + + // placeholder, until libspe2 support is there + struct btSpuStatus + { + uint32_t m_taskId; + uint32_t m_commandId; + uint32_t m_status; + + PosixThreadFunc m_userThreadFunc; + void* m_userPtr; //for taskDesc etc + void* m_lsMemory; //initialized using PosixLocalStoreMemorySetupFunc + + pthread_t thread; + sem_t* startSemaphore; + + unsigned long threadUsed; + }; +private: + + btAlignedObjectArray m_activeSpuStatus; +public: + ///Setup and initialize SPU/CELL/Libspe2 + + + + struct ThreadConstructionInfo + { + ThreadConstructionInfo(char* uniqueName, + PosixThreadFunc userThreadFunc, + PosixlsMemorySetupFunc lsMemoryFunc, + int numThreads=1, + int threadStackSize=65535 + ) + :m_uniqueName(uniqueName), + m_userThreadFunc(userThreadFunc), + m_lsMemoryFunc(lsMemoryFunc), + m_numThreads(numThreads), + m_threadStackSize(threadStackSize) + { + + } + + char* m_uniqueName; + PosixThreadFunc m_userThreadFunc; + PosixlsMemorySetupFunc m_lsMemoryFunc; + int m_numThreads; + int m_threadStackSize; + + }; + + PosixThreadSupport(ThreadConstructionInfo& threadConstructionInfo); + +///cleanup/shutdown Libspe2 + virtual ~PosixThreadSupport(); + + void startThreads(ThreadConstructionInfo& threadInfo); + + +///send messages to SPUs + virtual void sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t uiArgument1); + +///check for messages from SPUs + virtual void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1); + +///start the spus (can be called at the beginning of each frame, to make sure that the right SPU program is loaded) + virtual void startSPU(); + +///tell the task scheduler we are done with the SPU tasks + virtual void stopSPU(); + + virtual void setNumTasks(int numTasks) {} + + virtual int getNumTasks() const + { + return m_activeSpuStatus.size(); + } +}; + +#endif // POSIX_THREAD_SUPPORT_H + +#endif // USE_PTHREADS diff --git a/extern/bullet2/BulletMultiThreaded/PpuAddressSpace.h b/extern/bullet2/BulletMultiThreaded/PpuAddressSpace.h new file mode 100644 index 00000000000..f36fdfb3cd7 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/PpuAddressSpace.h @@ -0,0 +1,20 @@ +#ifndef __PPU_ADDRESS_SPACE_H +#define __PPU_ADDRESS_SPACE_H + + +#ifdef _WIN32 +//stop those casting warnings until we have a better solution for ppu_address_t / void* / uint64 conversions +#pragma warning (disable: 4311) +#pragma warning (disable: 4312) +#endif //_WIN32 + +#if defined(_WIN64) || defined(__LP64__) || defined(__x86_64__) || defined(USE_ADDR64) +typedef uint64_t ppu_address_t; +#else + +typedef uint32_t ppu_address_t; + +#endif + +#endif + diff --git a/extern/bullet2/BulletMultiThreaded/SequentialThreadSupport.cpp b/extern/bullet2/BulletMultiThreaded/SequentialThreadSupport.cpp new file mode 100644 index 00000000000..4e9c822bbc0 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SequentialThreadSupport.cpp @@ -0,0 +1,93 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "SequentialThreadSupport.h" + + +#include "SpuCollisionTaskProcess.h" +#include "SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h" + +SequentialThreadSupport::SequentialThreadSupport(SequentialThreadConstructionInfo& threadConstructionInfo) +{ + startThreads(threadConstructionInfo); +} + +///cleanup/shutdown Libspe2 +SequentialThreadSupport::~SequentialThreadSupport() +{ + stopSPU(); +} + +#include + +///send messages to SPUs +void SequentialThreadSupport::sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t taskId) +{ + switch (uiCommand) + { + case CMD_GATHER_AND_PROCESS_PAIRLIST: + { + btSpuStatus& spuStatus = m_activeSpuStatus[0]; + spuStatus.m_userPtr=(void*)uiArgument0; + spuStatus.m_userThreadFunc(spuStatus.m_userPtr,spuStatus.m_lsMemory); + } + break; + default: + { + ///not implemented + btAssert(0 && "Not implemented"); + } + + }; + + +} + +///check for messages from SPUs +void SequentialThreadSupport::waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1) +{ + btAssert(m_activeSpuStatus.size()); + btSpuStatus& spuStatus = m_activeSpuStatus[0]; + *puiArgument0 = spuStatus.m_taskId; + *puiArgument1 = spuStatus.m_status; +} + +void SequentialThreadSupport::startThreads(SequentialThreadConstructionInfo& threadConstructionInfo) +{ + m_activeSpuStatus.resize(1); + printf("STS: Not starting any threads\n"); + btSpuStatus& spuStatus = m_activeSpuStatus[0]; + spuStatus.m_userPtr = 0; + spuStatus.m_taskId = 0; + spuStatus.m_commandId = 0; + spuStatus.m_status = 0; + spuStatus.m_lsMemory = threadConstructionInfo.m_lsMemoryFunc(); + spuStatus.m_userThreadFunc = threadConstructionInfo.m_userThreadFunc; + printf("STS: Created local store at %p for task %s\n", spuStatus.m_lsMemory, threadConstructionInfo.m_uniqueName); +} + +void SequentialThreadSupport::startSPU() +{ +} + +void SequentialThreadSupport::stopSPU() +{ + m_activeSpuStatus.clear(); +} + +void SequentialThreadSupport::setNumTasks(int numTasks) +{ + printf("SequentialThreadSupport::setNumTasks(%d) is not implemented and has no effect\n",numTasks); +} diff --git a/extern/bullet2/BulletMultiThreaded/SequentialThreadSupport.h b/extern/bullet2/BulletMultiThreaded/SequentialThreadSupport.h new file mode 100644 index 00000000000..4256ebd2aa9 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SequentialThreadSupport.h @@ -0,0 +1,92 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "LinearMath/btScalar.h" +#include "PlatformDefinitions.h" + + +#ifndef SEQUENTIAL_THREAD_SUPPORT_H +#define SEQUENTIAL_THREAD_SUPPORT_H + +#include "LinearMath/btAlignedObjectArray.h" + +#include "btThreadSupportInterface.h" + +typedef void (*SequentialThreadFunc)(void* userPtr,void* lsMemory); +typedef void* (*SequentiallsMemorySetupFunc)(); + + + +///The SequentialThreadSupport is a portable non-parallel implementation of the btThreadSupportInterface +///This is useful for debugging and porting SPU Tasks to other platforms. +class SequentialThreadSupport : public btThreadSupportInterface +{ +public: + struct btSpuStatus + { + uint32_t m_taskId; + uint32_t m_commandId; + uint32_t m_status; + + SequentialThreadFunc m_userThreadFunc; + + void* m_userPtr; //for taskDesc etc + void* m_lsMemory; //initialized using SequentiallsMemorySetupFunc + }; +private: + btAlignedObjectArray m_activeSpuStatus; + btAlignedObjectArray m_completeHandles; +public: + struct SequentialThreadConstructionInfo + { + SequentialThreadConstructionInfo (char* uniqueName, + SequentialThreadFunc userThreadFunc, + SequentiallsMemorySetupFunc lsMemoryFunc + ) + :m_uniqueName(uniqueName), + m_userThreadFunc(userThreadFunc), + m_lsMemoryFunc(lsMemoryFunc) + { + + } + + char* m_uniqueName; + SequentialThreadFunc m_userThreadFunc; + SequentiallsMemorySetupFunc m_lsMemoryFunc; + }; + + SequentialThreadSupport(SequentialThreadConstructionInfo& threadConstructionInfo); + virtual ~SequentialThreadSupport(); + void startThreads(SequentialThreadConstructionInfo& threadInfo); +///send messages to SPUs + virtual void sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t uiArgument1); +///check for messages from SPUs + virtual void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1); +///start the spus (can be called at the beginning of each frame, to make sure that the right SPU program is loaded) + virtual void startSPU(); +///tell the task scheduler we are done with the SPU tasks + virtual void stopSPU(); + + virtual void setNumTasks(int numTasks); + + virtual int getNumTasks() const + { + return 1; + } + +}; + +#endif //SEQUENTIAL_THREAD_SUPPORT_H + diff --git a/extern/bullet2/BulletMultiThreaded/SpuCollisionObjectWrapper.cpp b/extern/bullet2/BulletMultiThreaded/SpuCollisionObjectWrapper.cpp new file mode 100644 index 00000000000..182aa269478 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuCollisionObjectWrapper.cpp @@ -0,0 +1,48 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "SpuCollisionObjectWrapper.h" +#include "BulletCollision/CollisionShapes/btCollisionShape.h" + +SpuCollisionObjectWrapper::SpuCollisionObjectWrapper () +{ +} + +#ifndef __SPU__ +SpuCollisionObjectWrapper::SpuCollisionObjectWrapper (const btCollisionObject* collisionObject) +{ + m_shapeType = collisionObject->getCollisionShape()->getShapeType (); + m_collisionObjectPtr = (ppu_address_t)collisionObject; + m_margin = collisionObject->getCollisionShape()->getMargin (); +} +#endif + +int +SpuCollisionObjectWrapper::getShapeType () const +{ + return m_shapeType; +} + +float +SpuCollisionObjectWrapper::getCollisionMargin () const +{ + return m_margin; +} + +ppu_address_t +SpuCollisionObjectWrapper::getCollisionObjectPtr () const +{ + return m_collisionObjectPtr; +} diff --git a/extern/bullet2/BulletMultiThreaded/SpuCollisionObjectWrapper.h b/extern/bullet2/BulletMultiThreaded/SpuCollisionObjectWrapper.h new file mode 100644 index 00000000000..36ea49209e2 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuCollisionObjectWrapper.h @@ -0,0 +1,40 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SPU_COLLISION_OBJECT_WRAPPER_H +#define SPU_COLLISION_OBJECT_WRAPPER_H + +#include "PlatformDefinitions.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" + +ATTRIBUTE_ALIGNED16(class) SpuCollisionObjectWrapper +{ +protected: + int m_shapeType; + float m_margin; + ppu_address_t m_collisionObjectPtr; + +public: + SpuCollisionObjectWrapper (); + + SpuCollisionObjectWrapper (const btCollisionObject* collisionObject); + + int getShapeType () const; + float getCollisionMargin () const; + ppu_address_t getCollisionObjectPtr () const; +}; + + +#endif //SPU_COLLISION_OBJECT_WRAPPER_H diff --git a/extern/bullet2/BulletMultiThreaded/SpuCollisionTaskProcess.cpp b/extern/bullet2/BulletMultiThreaded/SpuCollisionTaskProcess.cpp new file mode 100644 index 00000000000..86eda8697d0 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuCollisionTaskProcess.cpp @@ -0,0 +1,318 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +//#define DEBUG_SPU_TASK_SCHEDULING 1 + + +//class OptimizedBvhNode; + +#include "SpuCollisionTaskProcess.h" + + + + +void SpuCollisionTaskProcess::setNumTasks(int maxNumTasks) +{ + if (int(m_maxNumOutstandingTasks) != maxNumTasks) + { + m_maxNumOutstandingTasks = maxNumTasks; + m_taskBusy.resize(m_maxNumOutstandingTasks); + m_spuGatherTaskDesc.resize(m_maxNumOutstandingTasks); + + for (int i = 0; i < m_taskBusy.size(); i++) + { + m_taskBusy[i] = false; + } + + ///re-allocate task memory buffers + if (m_workUnitTaskBuffers != 0) + { + btAlignedFree(m_workUnitTaskBuffers); + } + + m_workUnitTaskBuffers = (unsigned char *)btAlignedAlloc(MIDPHASE_WORKUNIT_TASK_SIZE*m_maxNumOutstandingTasks, 128); + m_workUnitTaskBuffers = (unsigned char *)btAlignedAlloc(MIDPHASE_WORKUNIT_TASK_SIZE*6, 128); + } + +} + + + +SpuCollisionTaskProcess::SpuCollisionTaskProcess(class btThreadSupportInterface* threadInterface, unsigned int maxNumOutstandingTasks) +:m_threadInterface(threadInterface), +m_maxNumOutstandingTasks(0) +{ + m_workUnitTaskBuffers = (unsigned char *)0; + setNumTasks(maxNumOutstandingTasks); + m_numBusyTasks = 0; + m_currentTask = 0; + m_currentPage = 0; + m_currentPageEntry = 0; + +#ifdef DEBUG_SpuCollisionTaskProcess + m_initialized = false; +#endif + + m_threadInterface->startSPU(); + + //printf("sizeof vec_float4: %d\n", sizeof(vec_float4)); + printf("sizeof SpuGatherAndProcessWorkUnitInput: %d\n", int(sizeof(SpuGatherAndProcessWorkUnitInput))); + +} + +SpuCollisionTaskProcess::~SpuCollisionTaskProcess() +{ + + if (m_workUnitTaskBuffers != 0) + { + btAlignedFree(m_workUnitTaskBuffers); + m_workUnitTaskBuffers = 0; + } + + + + m_threadInterface->stopSPU(); + +} + + + +void SpuCollisionTaskProcess::initialize2(bool useEpa) +{ + +#ifdef DEBUG_SPU_TASK_SCHEDULING + printf("SpuCollisionTaskProcess::initialize()\n"); +#endif //DEBUG_SPU_TASK_SCHEDULING + + for (int i = 0; i < int (m_maxNumOutstandingTasks); i++) + { + m_taskBusy[i] = false; + } + m_numBusyTasks = 0; + m_currentTask = 0; + m_currentPage = 0; + m_currentPageEntry = 0; + m_useEpa = useEpa; + +#ifdef DEBUG_SpuCollisionTaskProcess + m_initialized = true; + btAssert(MIDPHASE_NUM_WORKUNITS_PER_TASK*sizeof(SpuGatherAndProcessWorkUnitInput) <= MIDPHASE_WORKUNIT_TASK_SIZE); +#endif +} + + +void SpuCollisionTaskProcess::issueTask2() +{ + +#ifdef DEBUG_SPU_TASK_SCHEDULING + printf("SpuCollisionTaskProcess::issueTask (m_currentTask= %d\n)", m_currentTask); +#endif //DEBUG_SPU_TASK_SCHEDULING + + m_taskBusy[m_currentTask] = true; + m_numBusyTasks++; + + + SpuGatherAndProcessPairsTaskDesc& taskDesc = m_spuGatherTaskDesc[m_currentTask]; + taskDesc.m_useEpa = m_useEpa; + + { + // send task description in event message + // no error checking here... + // but, currently, event queue can be no larger than NUM_WORKUNIT_TASKS. + + taskDesc.m_inPairPtr = reinterpret_cast(MIDPHASE_TASK_PTR(m_currentTask)); + + taskDesc.taskId = m_currentTask; + taskDesc.numPages = m_currentPage+1; + taskDesc.numOnLastPage = m_currentPageEntry; + } + + + + m_threadInterface->sendRequest(CMD_GATHER_AND_PROCESS_PAIRLIST, (ppu_address_t) &taskDesc,m_currentTask); + + // if all tasks busy, wait for spu event to clear the task. + + + if (m_numBusyTasks >= m_maxNumOutstandingTasks) + { + unsigned int taskId; + unsigned int outputSize; + + + for (int i=0;i=0); + + + m_threadInterface->waitForResponse(&taskId, &outputSize); + +// printf("issueTask taskId %d completed, numBusy=%d\n",taskId,m_numBusyTasks); + + //printf("PPU: after issue, received event: %u %d\n", taskId, outputSize); + + //postProcess(taskId, outputSize); + + m_taskBusy[taskId] = false; + + m_numBusyTasks--; + } + +} + +void SpuCollisionTaskProcess::addWorkToTask(void* pairArrayPtr,int startIndex,int endIndex) +{ +#ifdef DEBUG_SPU_TASK_SCHEDULING + printf("#"); +#endif //DEBUG_SPU_TASK_SCHEDULING + +#ifdef DEBUG_SpuCollisionTaskProcess + btAssert(m_initialized); + btAssert(m_workUnitTaskBuffers); + +#endif + + bool batch = true; + + if (batch) + { + if (m_currentPageEntry == MIDPHASE_NUM_WORKUNITS_PER_PAGE) + { + if (m_currentPage == MIDPHASE_NUM_WORKUNIT_PAGES-1) + { + // task buffer is full, issue current task. + // if all task buffers busy, this waits until SPU is done. + issueTask2(); + + // find new task buffer + for (unsigned int i = 0; i < m_maxNumOutstandingTasks; i++) + { + if (!m_taskBusy[i]) + { + m_currentTask = i; + //init the task data + + break; + } + } + + m_currentPage = 0; + } + else + { + m_currentPage++; + } + + m_currentPageEntry = 0; + } + } + + { + + + + SpuGatherAndProcessWorkUnitInput &wuInput = + *(reinterpret_cast + (MIDPHASE_ENTRY_PTR(m_currentTask, m_currentPage, m_currentPageEntry))); + + wuInput.m_pairArrayPtr = reinterpret_cast(pairArrayPtr); + wuInput.m_startIndex = startIndex; + wuInput.m_endIndex = endIndex; + + + + m_currentPageEntry++; + + if (!batch) + { + issueTask2(); + + // find new task buffer + for (unsigned int i = 0; i < m_maxNumOutstandingTasks; i++) + { + if (!m_taskBusy[i]) + { + m_currentTask = i; + //init the task data + + break; + } + } + + m_currentPage = 0; + m_currentPageEntry =0; + } + } +} + + +void +SpuCollisionTaskProcess::flush2() +{ +#ifdef DEBUG_SPU_TASK_SCHEDULING + printf("\nSpuCollisionTaskProcess::flush()\n"); +#endif //DEBUG_SPU_TASK_SCHEDULING + + // if there's a partially filled task buffer, submit that task + if (m_currentPage > 0 || m_currentPageEntry > 0) + { + issueTask2(); + } + + + // all tasks are issued, wait for all tasks to be complete + while(m_numBusyTasks > 0) + { + // Consolidating SPU code + unsigned int taskId=-1; + unsigned int outputSize; + + for (int i=0;i=0); + + + { + + // SPURS support. + m_threadInterface->waitForResponse(&taskId, &outputSize); + } +// printf("flush2 taskId %d completed, numBusy =%d \n",taskId,m_numBusyTasks); + //printf("PPU: flushing, received event: %u %d\n", taskId, outputSize); + + //postProcess(taskId, outputSize); + + m_taskBusy[taskId] = false; + + m_numBusyTasks--; + } + + +} diff --git a/extern/bullet2/BulletMultiThreaded/SpuCollisionTaskProcess.h b/extern/bullet2/BulletMultiThreaded/SpuCollisionTaskProcess.h new file mode 100644 index 00000000000..2614be6c479 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuCollisionTaskProcess.h @@ -0,0 +1,163 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SPU_COLLISION_TASK_PROCESS_H +#define SPU_COLLISION_TASK_PROCESS_H + +#include + +#include "LinearMath/btScalar.h" + +#include "PlatformDefinitions.h" +#include "LinearMath/btAlignedObjectArray.h" +#include "SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h" // for definitions processCollisionTask and createCollisionLocalStoreMemory + +#include "btThreadSupportInterface.h" + + +//#include "SPUAssert.h" +#include + + +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "BulletCollision/CollisionShapes/btCollisionShape.h" +#include "BulletCollision/CollisionShapes/btConvexShape.h" + +#include "LinearMath/btAlignedAllocator.h" + +#include + + +#define DEBUG_SpuCollisionTaskProcess 1 + + +#define CMD_GATHER_AND_PROCESS_PAIRLIST 1 + +class btCollisionObject; +class btPersistentManifold; +class btDispatcher; + + +/////Task Description for SPU collision detection +//struct SpuGatherAndProcessPairsTaskDesc +//{ +// uint64_t inPtr;//m_pairArrayPtr; +// //mutex variable +// uint32_t m_someMutexVariableInMainMemory; +// +// uint64_t m_dispatcher; +// +// uint32_t numOnLastPage; +// +// uint16_t numPages; +// uint16_t taskId; +// +// struct CollisionTask_LocalStoreMemory* m_lsMemory; +//} +// +//#if defined(__CELLOS_LV2__) || defined(USE_LIBSPE2) +//__attribute__ ((aligned (16))) +//#endif +//; + + +///MidphaseWorkUnitInput stores individual primitive versus mesh collision detection input, to be processed by the SPU. +ATTRIBUTE_ALIGNED16(struct) SpuGatherAndProcessWorkUnitInput +{ + uint64_t m_pairArrayPtr; + int m_startIndex; + int m_endIndex; +}; + + + + +/// SpuCollisionTaskProcess handles SPU processing of collision pairs. +/// Maintains a set of task buffers. +/// When the task is full, the task is issued for SPUs to process. Contact output goes into btPersistentManifold +/// associated with each task. +/// When PPU issues a task, it will look for completed task buffers +/// PPU will do postprocessing, dependent on workunit output (not likely) +class SpuCollisionTaskProcess +{ + + unsigned char *m_workUnitTaskBuffers; + + + // track task buffers that are being used, and total busy tasks + btAlignedObjectArray m_taskBusy; + btAlignedObjectArray m_spuGatherTaskDesc; + + class btThreadSupportInterface* m_threadInterface; + + unsigned int m_maxNumOutstandingTasks; + + unsigned int m_numBusyTasks; + + // the current task and the current entry to insert a new work unit + unsigned int m_currentTask; + unsigned int m_currentPage; + unsigned int m_currentPageEntry; + + bool m_useEpa; + +#ifdef DEBUG_SpuCollisionTaskProcess + bool m_initialized; +#endif + void issueTask2(); + //void postProcess(unsigned int taskId, int outputSize); + +public: + SpuCollisionTaskProcess(btThreadSupportInterface* threadInterface, unsigned int maxNumOutstandingTasks); + + ~SpuCollisionTaskProcess(); + + ///call initialize in the beginning of the frame, before addCollisionPairToTask + void initialize2(bool useEpa = false); + + ///batch up additional work to a current task for SPU processing. When batch is full, it issues the task. + void addWorkToTask(void* pairArrayPtr,int startIndex,int endIndex); + + ///call flush to submit potential outstanding work to SPUs and wait for all involved SPUs to be finished + void flush2(); + + /// set the maximum number of SPU tasks allocated + void setNumTasks(int maxNumTasks); + + int getNumTasks() const + { + return m_maxNumOutstandingTasks; + } +}; + + + +#define MIDPHASE_TASK_PTR(task) (&m_workUnitTaskBuffers[0] + MIDPHASE_WORKUNIT_TASK_SIZE*task) +#define MIDPHASE_ENTRY_PTR(task,page,entry) (MIDPHASE_TASK_PTR(task) + MIDPHASE_WORKUNIT_PAGE_SIZE*page + sizeof(SpuGatherAndProcessWorkUnitInput)*entry) +#define MIDPHASE_OUTPUT_PTR(task) (&m_contactOutputBuffers[0] + MIDPHASE_MAX_CONTACT_BUFFER_SIZE*task) +#define MIDPHASE_TREENODES_PTR(task) (&m_complexShapeBuffers[0] + MIDPHASE_COMPLEX_SHAPE_BUFFER_SIZE*task) + + +#define MIDPHASE_WORKUNIT_PAGE_SIZE (16) +//#define MIDPHASE_WORKUNIT_PAGE_SIZE (128) + +#define MIDPHASE_NUM_WORKUNIT_PAGES 1 +#define MIDPHASE_WORKUNIT_TASK_SIZE (MIDPHASE_WORKUNIT_PAGE_SIZE*MIDPHASE_NUM_WORKUNIT_PAGES) +#define MIDPHASE_NUM_WORKUNITS_PER_PAGE (MIDPHASE_WORKUNIT_PAGE_SIZE / sizeof(SpuGatherAndProcessWorkUnitInput)) +#define MIDPHASE_NUM_WORKUNITS_PER_TASK (MIDPHASE_NUM_WORKUNITS_PER_PAGE*MIDPHASE_NUM_WORKUNIT_PAGES) + + +#endif // SPU_COLLISION_TASK_PROCESS_H + diff --git a/extern/bullet2/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.cpp b/extern/bullet2/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.cpp new file mode 100644 index 00000000000..286b63191ee --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.cpp @@ -0,0 +1,69 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "SpuContactManifoldCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "BulletCollision/CollisionShapes/btCollisionShape.h" +#include "BulletCollision/CollisionShapes/btPolyhedralConvexShape.h" + + + + +void SpuContactManifoldCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + btAssert(0); +} + +btScalar SpuContactManifoldCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + btAssert(0); + return 1.f; +} + +#ifndef __SPU__ +SpuContactManifoldCollisionAlgorithm::SpuContactManifoldCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1) +:btCollisionAlgorithm(ci) +#ifdef USE_SEPDISTANCE_UTIL +,m_sepDistance(body0->getCollisionShape()->getAngularMotionDisc(),body1->getCollisionShape()->getAngularMotionDisc()) +#endif //USE_SEPDISTANCE_UTIL +{ + m_manifoldPtr = m_dispatcher->getNewManifold(body0,body1); + m_shapeType0 = body0->getCollisionShape()->getShapeType(); + m_shapeType1 = body1->getCollisionShape()->getShapeType(); + m_collisionMargin0 = body0->getCollisionShape()->getMargin(); + m_collisionMargin1 = body1->getCollisionShape()->getMargin(); + m_collisionObject0 = body0; + m_collisionObject1 = body1; + + if (body0->getCollisionShape()->isPolyhedral()) + { + btPolyhedralConvexShape* convex0 = (btPolyhedralConvexShape*)body0->getCollisionShape(); + m_shapeDimensions0 = convex0->getImplicitShapeDimensions(); + } + if (body1->getCollisionShape()->isPolyhedral()) + { + btPolyhedralConvexShape* convex1 = (btPolyhedralConvexShape*)body1->getCollisionShape(); + m_shapeDimensions1 = convex1->getImplicitShapeDimensions(); + } +} +#endif //__SPU__ + + +SpuContactManifoldCollisionAlgorithm::~SpuContactManifoldCollisionAlgorithm() +{ + if (m_manifoldPtr) + m_dispatcher->releaseManifold(m_manifoldPtr); +} diff --git a/extern/bullet2/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.h b/extern/bullet2/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.h new file mode 100644 index 00000000000..151cb2c7966 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.h @@ -0,0 +1,120 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SPU_CONTACTMANIFOLD_COLLISION_ALGORITHM_H +#define SPU_CONTACTMANIFOLD_COLLISION_ALGORITHM_H + +#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" +#include "BulletCollision/BroadphaseCollision/btDispatcher.h" +#include "LinearMath/btTransformUtil.h" + +class btPersistentManifold; + +//#define USE_SEPDISTANCE_UTIL 1 + +/// SpuContactManifoldCollisionAlgorithm provides contact manifold and should be processed on SPU. +ATTRIBUTE_ALIGNED16(class) SpuContactManifoldCollisionAlgorithm : public btCollisionAlgorithm +{ + btVector3 m_shapeDimensions0; + btVector3 m_shapeDimensions1; + btPersistentManifold* m_manifoldPtr; + int m_shapeType0; + int m_shapeType1; + float m_collisionMargin0; + float m_collisionMargin1; + + btCollisionObject* m_collisionObject0; + btCollisionObject* m_collisionObject1; + + + + +public: + + virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + + SpuContactManifoldCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1); +#ifdef USE_SEPDISTANCE_UTIL + btConvexSeparatingDistanceUtil m_sepDistance; +#endif //USE_SEPDISTANCE_UTIL + + virtual ~SpuContactManifoldCollisionAlgorithm(); + + virtual void getAllContactManifolds(btManifoldArray& manifoldArray) + { + if (m_manifoldPtr) + manifoldArray.push_back(m_manifoldPtr); + } + + btPersistentManifold* getContactManifoldPtr() + { + return m_manifoldPtr; + } + + btCollisionObject* getCollisionObject0() + { + return m_collisionObject0; + } + + btCollisionObject* getCollisionObject1() + { + return m_collisionObject1; + } + + int getShapeType0() const + { + return m_shapeType0; + } + + int getShapeType1() const + { + return m_shapeType1; + } + float getCollisionMargin0() const + { + return m_collisionMargin0; + } + float getCollisionMargin1() const + { + return m_collisionMargin1; + } + + const btVector3& getShapeDimensions0() const + { + return m_shapeDimensions0; + } + + const btVector3& getShapeDimensions1() const + { + return m_shapeDimensions1; + } + + struct CreateFunc :public btCollisionAlgorithmCreateFunc + { + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) + { + void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(SpuContactManifoldCollisionAlgorithm)); + return new(mem) SpuContactManifoldCollisionAlgorithm(ci,body0,body1); + } + }; + +}; + +#endif //SPU_CONTACTMANIFOLD_COLLISION_ALGORITHM_H diff --git a/extern/bullet2/BulletMultiThreaded/SpuDoubleBuffer.h b/extern/bullet2/BulletMultiThreaded/SpuDoubleBuffer.h new file mode 100644 index 00000000000..a0695744bd5 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuDoubleBuffer.h @@ -0,0 +1,110 @@ +#ifndef DOUBLE_BUFFER_H +#define DOUBLE_BUFFER_H + +#include "SpuFakeDma.h" +#include "LinearMath/btScalar.h" + + +///DoubleBuffer +template +class DoubleBuffer +{ +#if defined(__SPU__) || defined(USE_LIBSPE2) + ATTRIBUTE_ALIGNED128( T m_buffer0[size] ) ; + ATTRIBUTE_ALIGNED128( T m_buffer1[size] ) ; +#else + T m_buffer0[size]; + T m_buffer1[size]; +#endif + + T *m_frontBuffer; + T *m_backBuffer; + + unsigned int m_dmaTag; + bool m_dmaPending; +public: + bool isPending() const { return m_dmaPending;} + DoubleBuffer(); + + void init (); + + // dma get and put commands + void backBufferDmaGet(uint64_t ea, unsigned int numBytes, unsigned int tag); + void backBufferDmaPut(uint64_t ea, unsigned int numBytes, unsigned int tag); + + // gets pointer to a buffer + T *getFront(); + T *getBack(); + + // if back buffer dma was started, wait for it to complete + // then move back to front and vice versa + T *swapBuffers(); +}; + +template +DoubleBuffer::DoubleBuffer() +{ + init (); +} + +template +void DoubleBuffer::init() +{ + this->m_dmaPending = false; + this->m_frontBuffer = &this->m_buffer0[0]; + this->m_backBuffer = &this->m_buffer1[0]; +} + +template +void +DoubleBuffer::backBufferDmaGet(uint64_t ea, unsigned int numBytes, unsigned int tag) +{ + m_dmaPending = true; + m_dmaTag = tag; + if (numBytes) + { + m_backBuffer = (T*)cellDmaLargeGetReadOnly(m_backBuffer, ea, numBytes, tag, 0, 0); + } +} + +template +void +DoubleBuffer::backBufferDmaPut(uint64_t ea, unsigned int numBytes, unsigned int tag) +{ + m_dmaPending = true; + m_dmaTag = tag; + cellDmaLargePut(m_backBuffer, ea, numBytes, tag, 0, 0); +} + +template +T * +DoubleBuffer::getFront() +{ + return m_frontBuffer; +} + +template +T * +DoubleBuffer::getBack() +{ + return m_backBuffer; +} + +template +T * +DoubleBuffer::swapBuffers() +{ + if (m_dmaPending) + { + cellDmaWaitTagStatusAll(1< //for btAssert +//Disabling memcpy sometimes helps debugging DMA + +#define USE_MEMCPY 1 +#ifdef USE_MEMCPY + +#endif + + +void* cellDmaLargeGetReadOnly(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid) +{ + +#if defined (__SPU__) || defined (USE_LIBSPE2) + cellDmaLargeGet(ls,ea,size,tag,tid,rid); + return ls; +#else + return (void*)(uint32_t)ea; +#endif +} + +void* cellDmaSmallGetReadOnly(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid) +{ +#if defined (__SPU__) || defined (USE_LIBSPE2) + mfc_get(ls,ea,size,tag,0,0); + return ls; +#else + return (void*)(uint32_t)ea; +#endif +} + + + + +void* cellDmaGetReadOnly(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid) +{ +#if defined (__SPU__) || defined (USE_LIBSPE2) + cellDmaGet(ls,ea,size,tag,tid,rid); + return ls; +#else + return (void*)(uint32_t)ea; +#endif +} + + +///this unalignedDma should not be frequently used, only for small data. It handles alignment and performs check on size (<16 bytes) +int stallingUnalignedDmaSmallGet(void *ls, uint64_t ea, uint32_t size) +{ + + btAssert(size<32); + + ATTRIBUTE_ALIGNED16(char tmpBuffer[32]); + + + char* localStore = (char*)ls; + uint32_t i; + + + ///make sure last 4 bits are the same, for cellDmaSmallGet + uint32_t last4BitsOffset = ea & 0x0f; + char* tmpTarget = tmpBuffer + last4BitsOffset; + +#if defined (__SPU__) || defined (USE_LIBSPE2) + + int remainingSize = size; + +//#define FORCE_cellDmaUnalignedGet 1 +#ifdef FORCE_cellDmaUnalignedGet + cellDmaUnalignedGet(tmpTarget,ea,size,DMA_TAG(1),0,0); +#else + char* remainingTmpTarget = tmpTarget; + uint64_t remainingEa = ea; + + while (remainingSize) + { + switch (remainingSize) + { + case 1: + case 2: + case 4: + case 8: + case 16: + { + mfc_get(remainingTmpTarget,remainingEa,remainingSize,DMA_TAG(1),0,0); + remainingSize=0; + break; + } + default: + { + //spu_printf("unaligned DMA with non-natural size:%d\n",remainingSize); + int actualSize = 0; + + if (remainingSize > 16) + actualSize = 16; + else + if (remainingSize >8) + actualSize=8; + else + if (remainingSize >4) + actualSize=4; + else + if (remainingSize >2) + actualSize=2; + mfc_get(remainingTmpTarget,remainingEa,actualSize,DMA_TAG(1),0,0); + remainingSize-=actualSize; + remainingTmpTarget+=actualSize; + remainingEa += actualSize; + } + } + } +#endif//FORCE_cellDmaUnalignedGet + +#else + char* mainMem = (char*)ea; + //copy into final destination +#ifdef USE_MEMCPY + + memcpy(tmpTarget,mainMem,size); +#else + for ( i=0;i +#include + +#define DMA_TAG(xfer) (xfer + 1) +#define DMA_MASK(xfer) (1 << DMA_TAG(xfer)) + +#else // !USE_LIBSPE2 + +#define DMA_TAG(xfer) (xfer + 1) +#define DMA_MASK(xfer) (1 << DMA_TAG(xfer)) + +#include + +#define DEBUG_DMA +#ifdef DEBUG_DMA +#define dUASSERT(a,b) if (!(a)) { printf(b);} +#define uintsize ppu_address_t + +#define cellDmaLargeGet(ls, ea, size, tag, tid, rid) if ( (((uintsize)ls%16) != ((uintsize)ea%16)) || ((((uintsize)ea%16) || ((uintsize)ls%16)) && (( ((uintsize)ls%16) != ((uintsize)size%16) ) || ( ((uintsize)ea%16) != ((uintsize)size%16) ) ) ) || ( ((uintsize)size%16) && ((uintsize)size!=1) && ((uintsize)size!=2) && ((uintsize)size!=4) && ((uintsize)size!=8) ) || (size >= 16384) || !(uintsize)ls || !(uintsize)ea) { \ + dUASSERT( (((uintsize)ea % 16) == 0) || (size < 16), "XDR Address not aligned: "); \ + dUASSERT( (((uintsize)ls % 16) == 0) || (size < 16), "LS Address not aligned: "); \ + dUASSERT( ((((uintsize)ls % size) == 0) && (((uintsize)ea % size) == 0)) || (size > 16), "Not naturally aligned: "); \ + dUASSERT((size == 1) || (size == 2) || (size == 4) || (size == 8) || ((size % 16) == 0), "size not a multiple of 16byte: "); \ + dUASSERT(size < 16384, "size too big: "); \ + dUASSERT( ((uintsize)ea%16)==((uintsize)ls%16), "wrong Quadword alignment of LS and EA: "); \ + dUASSERT(ea != 0, "Nullpointer EA: "); dUASSERT(ls != 0, "Nullpointer LS: ");\ + printf("GET %s:%d from: 0x%x, to: 0x%x - %d bytes\n", __FILE__, __LINE__, (unsigned int)ea,(unsigned int)ls,(unsigned int)size);\ + } \ + mfc_get(ls, ea, size, tag, tid, rid) +#define cellDmaGet(ls, ea, size, tag, tid, rid) if ( (((uintsize)ls%16) != ((uintsize)ea%16)) || ((((uintsize)ea%16) || ((uintsize)ls%16)) && (( ((uintsize)ls%16) != ((uintsize)size%16) ) || ( ((uintsize)ea%16) != ((uintsize)size%16) ) ) ) || ( ((uintsize)size%16) && ((uintsize)size!=1) && ((uintsize)size!=2) && ((uintsize)size!=4) && ((uintsize)size!=8) ) || (size >= 16384) || !(uintsize)ls || !(uintsize)ea) { \ + dUASSERT( (((uintsize)ea % 16) == 0) || (size < 16), "XDR Address not aligned: "); \ + dUASSERT( (((uintsize)ls % 16) == 0) || (size < 16), "LS Address not aligned: "); \ + dUASSERT( ((((uintsize)ls % size) == 0) && (((uintsize)ea % size) == 0)) || (size > 16), "Not naturally aligned: "); \ + dUASSERT((size == 1) || (size == 2) || (size == 4) || (size == 8) || ((size % 16) == 0), "size not a multiple of 16byte: "); \ + dUASSERT(size < 16384, "size too big: "); \ + dUASSERT( ((uintsize)ea%16)==((uintsize)ls%16), "wrong Quadword alignment of LS and EA: "); \ + dUASSERT(ea != 0, "Nullpointer EA: "); dUASSERT(ls != 0, "Nullpointer LS: ");\ + printf("GET %s:%d from: 0x%x, to: 0x%x - %d bytes\n", __FILE__, __LINE__, (unsigned int)ea,(unsigned int)ls,(unsigned int)size);\ + } \ + mfc_get(ls, ea, size, tag, tid, rid) +#define cellDmaLargePut(ls, ea, size, tag, tid, rid) if ( (((uintsize)ls%16) != ((uintsize)ea%16)) || ((((uintsize)ea%16) || ((uintsize)ls%16)) && (( ((uintsize)ls%16) != ((uintsize)size%16) ) || ( ((uintsize)ea%16) != ((uintsize)size%16) ) ) ) || ( ((uintsize)size%16) && ((uintsize)size!=1) && ((uintsize)size!=2) && ((uintsize)size!=4) && ((uintsize)size!=8) ) || (size >= 16384) || !(uintsize)ls || !(uintsize)ea) { \ + dUASSERT( (((uintsize)ea % 16) == 0) || (size < 16), "XDR Address not aligned: "); \ + dUASSERT( (((uintsize)ls % 16) == 0) || (size < 16), "LS Address not aligned: "); \ + dUASSERT( ((((uintsize)ls % size) == 0) && (((uintsize)ea % size) == 0)) || (size > 16), "Not naturally aligned: "); \ + dUASSERT((size == 1) || (size == 2) || (size == 4) || (size == 8) || ((size % 16) == 0), "size not a multiple of 16byte: "); \ + dUASSERT(size < 16384, "size too big: "); \ + dUASSERT( ((uintsize)ea%16)==((uintsize)ls%16), "wrong Quadword alignment of LS and EA: "); \ + dUASSERT(ea != 0, "Nullpointer EA: "); dUASSERT(ls != 0, "Nullpointer LS: ");\ + printf("PUT %s:%d from: 0x%x, to: 0x%x - %d bytes\n", __FILE__, __LINE__, (unsigned int)ls,(unsigned int)ea,(unsigned int)size); \ + } \ + mfc_put(ls, ea, size, tag, tid, rid) +#define cellDmaSmallGet(ls, ea, size, tag, tid, rid) if ( (((uintsize)ls%16) != ((uintsize)ea%16)) || ((((uintsize)ea%16) || ((uintsize)ls%16)) && (( ((uintsize)ls%16) != ((uintsize)size%16) ) || ( ((uintsize)ea%16) != ((uintsize)size%16) ) ) ) || ( ((uintsize)size%16) && ((uintsize)size!=1) && ((uintsize)size!=2) && ((uintsize)size!=4) && ((uintsize)size!=8) ) || (size >= 16384) || !(uintsize)ls || !(uintsize)ea) { \ + dUASSERT( (((uintsize)ea % 16) == 0) || (size < 16), "XDR Address not aligned: "); \ + dUASSERT( (((uintsize)ls % 16) == 0) || (size < 16), "LS Address not aligned: "); \ + dUASSERT( ((((uintsize)ls % size) == 0) && (((uintsize)ea % size) == 0)) || (size > 16), "Not naturally aligned: "); \ + dUASSERT((size == 1) || (size == 2) || (size == 4) || (size == 8) || ((size % 16) == 0), "size not a multiple of 16byte: "); \ + dUASSERT(size < 16384, "size too big: "); \ + dUASSERT( ((uintsize)ea%16)==((uintsize)ls%16), "wrong Quadword alignment of LS and EA: "); \ + dUASSERT(ea != 0, "Nullpointer EA: "); dUASSERT(ls != 0, "Nullpointer LS: ");\ + printf("GET %s:%d from: 0x%x, to: 0x%x - %d bytes\n", __FILE__, __LINE__, (unsigned int)ea,(unsigned int)ls,(unsigned int)size);\ + } \ + mfc_get(ls, ea, size, tag, tid, rid) +#define cellDmaWaitTagStatusAll(ignore) mfc_write_tag_mask(ignore) ; mfc_read_tag_status_all() + +#else +#define cellDmaLargeGet(ls, ea, size, tag, tid, rid) mfc_get(ls, ea, size, tag, tid, rid) +#define cellDmaGet(ls, ea, size, tag, tid, rid) mfc_get(ls, ea, size, tag, tid, rid) +#define cellDmaLargePut(ls, ea, size, tag, tid, rid) mfc_put(ls, ea, size, tag, tid, rid) +#define cellDmaSmallGet(ls, ea, size, tag, tid, rid) mfc_get(ls, ea, size, tag, tid, rid) +#define cellDmaWaitTagStatusAll(ignore) mfc_write_tag_mask(ignore) ; mfc_read_tag_status_all() +#endif // DEBUG_DMA + + + + + + + + +#endif // USE_LIBSPE2 +#else // !__SPU__ +//Simulate DMA using memcpy or direct access on non-CELL platforms that don't have DMAs and SPUs (Win32, Mac, Linux etc) +//Potential to add networked simulation using this interface + +#define DMA_TAG(a) (a) +#define DMA_MASK(a) (a) + + /// cellDmaLargeGet Win32 replacements for Cell DMA to allow simulating most of the SPU code (just memcpy) + int cellDmaLargeGet(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid); + int cellDmaGet(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid); + /// cellDmaLargePut Win32 replacements for Cell DMA to allow simulating most of the SPU code (just memcpy) + int cellDmaLargePut(const void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid); + /// cellDmaWaitTagStatusAll Win32 replacements for Cell DMA to allow simulating most of the SPU code (just memcpy) + void cellDmaWaitTagStatusAll(int ignore); + + +#endif //__CELLOS_LV2__ + +///stallingUnalignedDmaSmallGet internally uses DMA_TAG(1) +int stallingUnalignedDmaSmallGet(void *ls, uint64_t ea, uint32_t size); + + +void* cellDmaLargeGetReadOnly(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid); +void* cellDmaGetReadOnly(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid); +void* cellDmaSmallGetReadOnly(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid); + + +#endif //FAKE_DMA_H diff --git a/extern/bullet2/BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp b/extern/bullet2/BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp new file mode 100644 index 00000000000..ee0832f12e2 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp @@ -0,0 +1,251 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "SpuGatheringCollisionDispatcher.h" +#include "SpuCollisionTaskProcess.h" + + +#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h" +#include "BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h" +#include "SpuContactManifoldCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "BulletCollision/CollisionShapes/btCollisionShape.h" +#include "LinearMath/btQuickprof.h" + + + + +SpuGatheringCollisionDispatcher::SpuGatheringCollisionDispatcher(class btThreadSupportInterface* threadInterface, unsigned int maxNumOutstandingTasks,btCollisionConfiguration* collisionConfiguration) +:btCollisionDispatcher(collisionConfiguration), +m_spuCollisionTaskProcess(0), +m_threadInterface(threadInterface), +m_maxNumOutstandingTasks(maxNumOutstandingTasks) +{ + +} + + +bool SpuGatheringCollisionDispatcher::supportsDispatchPairOnSpu(int proxyType0,int proxyType1) +{ + bool supported0 = ( + (proxyType0 == BOX_SHAPE_PROXYTYPE) || + (proxyType0 == TRIANGLE_SHAPE_PROXYTYPE) || + (proxyType0 == SPHERE_SHAPE_PROXYTYPE) || + (proxyType0 == CAPSULE_SHAPE_PROXYTYPE) || + (proxyType0 == CYLINDER_SHAPE_PROXYTYPE) || +// (proxyType0 == CONE_SHAPE_PROXYTYPE) || + (proxyType0 == TRIANGLE_MESH_SHAPE_PROXYTYPE) || + (proxyType0 == CONVEX_HULL_SHAPE_PROXYTYPE)|| + (proxyType0 == STATIC_PLANE_PROXYTYPE)|| + (proxyType0 == COMPOUND_SHAPE_PROXYTYPE) + ); + + bool supported1 = ( + (proxyType1 == BOX_SHAPE_PROXYTYPE) || + (proxyType1 == TRIANGLE_SHAPE_PROXYTYPE) || + (proxyType1 == SPHERE_SHAPE_PROXYTYPE) || + (proxyType1 == CAPSULE_SHAPE_PROXYTYPE) || + (proxyType1 == CYLINDER_SHAPE_PROXYTYPE) || +// (proxyType1 == CONE_SHAPE_PROXYTYPE) || + (proxyType1 == TRIANGLE_MESH_SHAPE_PROXYTYPE) || + (proxyType1 == CONVEX_HULL_SHAPE_PROXYTYPE) || + (proxyType1 == STATIC_PLANE_PROXYTYPE) || + (proxyType1 == COMPOUND_SHAPE_PROXYTYPE) + ); + + + return supported0 && supported1; +} + + + +SpuGatheringCollisionDispatcher::~SpuGatheringCollisionDispatcher() +{ + if (m_spuCollisionTaskProcess) + delete m_spuCollisionTaskProcess; + +} + +#include "stdio.h" + + + +///interface for iterating all overlapping collision pairs, no matter how those pairs are stored (array, set, map etc) +///this is useful for the collision dispatcher. +class btSpuCollisionPairCallback : public btOverlapCallback +{ + const btDispatcherInfo& m_dispatchInfo; + SpuGatheringCollisionDispatcher* m_dispatcher; + +public: + + btSpuCollisionPairCallback(const btDispatcherInfo& dispatchInfo, SpuGatheringCollisionDispatcher* dispatcher) + :m_dispatchInfo(dispatchInfo), + m_dispatcher(dispatcher) + { + } + + virtual bool processOverlap(btBroadphasePair& collisionPair) + { + + + //PPU version + //(*m_dispatcher->getNearCallback())(collisionPair,*m_dispatcher,m_dispatchInfo); + + //only support discrete collision detection for now, we could fallback on PPU/unoptimized version for TOI/CCD + btAssert(m_dispatchInfo.m_dispatchFunc == btDispatcherInfo::DISPATCH_DISCRETE); + + //by default, Bullet will use this near callback + { + ///userInfo is used to determine if the SPU has to handle this case or not (skip PPU tasks) + if (!collisionPair.m_internalTmpValue) + { + collisionPair.m_internalTmpValue = 1; + } + if (!collisionPair.m_algorithm) + { + btCollisionObject* colObj0 = (btCollisionObject*)collisionPair.m_pProxy0->m_clientObject; + btCollisionObject* colObj1 = (btCollisionObject*)collisionPair.m_pProxy1->m_clientObject; + + btCollisionAlgorithmConstructionInfo ci; + ci.m_dispatcher1 = m_dispatcher; + ci.m_manifold = 0; + + if (m_dispatcher->needsCollision(colObj0,colObj1)) + { + int proxyType0 = colObj0->getCollisionShape()->getShapeType(); + int proxyType1 = colObj1->getCollisionShape()->getShapeType(); + if (m_dispatcher->supportsDispatchPairOnSpu(proxyType0,proxyType1) + && (colObj0->getCollisionFlags() != btCollisionObject::CF_DISABLE_SPU_COLLISION_PROCESSING) + && (colObj1->getCollisionFlags() != btCollisionObject::CF_DISABLE_SPU_COLLISION_PROCESSING) + ) + { + int so = sizeof(SpuContactManifoldCollisionAlgorithm); +#ifdef ALLOCATE_SEPARATELY + void* mem = btAlignedAlloc(so,16);//m_dispatcher->allocateCollisionAlgorithm(so); +#else + void* mem = m_dispatcher->allocateCollisionAlgorithm(so); +#endif + collisionPair.m_algorithm = new(mem) SpuContactManifoldCollisionAlgorithm(ci,colObj0,colObj1); + collisionPair.m_internalTmpValue = 2; + } else + { + collisionPair.m_algorithm = m_dispatcher->findAlgorithm(colObj0,colObj1); + collisionPair.m_internalTmpValue = 3; + } + } + } + } + return false; + } +}; + +void SpuGatheringCollisionDispatcher::dispatchAllCollisionPairs(btOverlappingPairCache* pairCache,const btDispatcherInfo& dispatchInfo, btDispatcher* dispatcher) +{ + + if (dispatchInfo.m_enableSPU) + { + m_maxNumOutstandingTasks = m_threadInterface->getNumTasks(); + + { + BT_PROFILE("processAllOverlappingPairs"); + + if (!m_spuCollisionTaskProcess) + m_spuCollisionTaskProcess = new SpuCollisionTaskProcess(m_threadInterface,m_maxNumOutstandingTasks); + + m_spuCollisionTaskProcess->setNumTasks(m_maxNumOutstandingTasks); + // printf("m_maxNumOutstandingTasks =%d\n",m_maxNumOutstandingTasks); + + m_spuCollisionTaskProcess->initialize2(dispatchInfo.m_useEpa); + + + ///modified version of btCollisionDispatcher::dispatchAllCollisionPairs: + { + btSpuCollisionPairCallback collisionCallback(dispatchInfo,this); + + pairCache->processAllOverlappingPairs(&collisionCallback,dispatcher); + } + } + + //send one big batch + int numTotalPairs = pairCache->getNumOverlappingPairs(); + + btBroadphasePair* pairPtr = pairCache->getOverlappingPairArrayPtr(); + int i; + { + int pairRange = SPU_BATCHSIZE_BROADPHASE_PAIRS; + if (numTotalPairs < (m_spuCollisionTaskProcess->getNumTasks()*SPU_BATCHSIZE_BROADPHASE_PAIRS)) + { + pairRange = (numTotalPairs/m_spuCollisionTaskProcess->getNumTasks())+1; + } + + BT_PROFILE("addWorkToTask"); + for (i=0;iaddWorkToTask(pairPtr,i,endIndex); + i = endIndex; + } + } + + { + BT_PROFILE("PPU fallback"); + //handle PPU fallback pairs + for (i=0;im_clientObject; + btCollisionObject* colObj1 = (btCollisionObject*)collisionPair.m_pProxy1->m_clientObject; + + if (dispatcher->needsCollision(colObj0,colObj1)) + { + btManifoldResult contactPointResult(colObj0,colObj1); + + if (dispatchInfo.m_dispatchFunc == btDispatcherInfo::DISPATCH_DISCRETE) + { + //discrete collision detection query + collisionPair.m_algorithm->processCollision(colObj0,colObj1,dispatchInfo,&contactPointResult); + } else + { + //continuous collision detection query, time of impact (toi) + btScalar toi = collisionPair.m_algorithm->calculateTimeOfImpact(colObj0,colObj1,dispatchInfo,&contactPointResult); + if (dispatchInfo.m_timeOfImpact > toi) + dispatchInfo.m_timeOfImpact = toi; + + } + } + } + } + } + } + { + BT_PROFILE("flush2"); + //make sure all SPU work is done + m_spuCollisionTaskProcess->flush2(); + } + + } else + { + ///PPU fallback + ///!Need to make sure to clear all 'algorithms' when switching between SPU and PPU + btCollisionDispatcher::dispatchAllCollisionPairs(pairCache,dispatchInfo,dispatcher); + } +} diff --git a/extern/bullet2/BulletMultiThreaded/SpuGatheringCollisionDispatcher.h b/extern/bullet2/BulletMultiThreaded/SpuGatheringCollisionDispatcher.h new file mode 100644 index 00000000000..7d5be88d71d --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuGatheringCollisionDispatcher.h @@ -0,0 +1,72 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ +#ifndef SPU_GATHERING_COLLISION__DISPATCHER_H +#define SPU_GATHERING_COLLISION__DISPATCHER_H + +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" + + +///Tuning value to optimized SPU utilization +///Too small value means Task overhead is large compared to computation (too fine granularity) +///Too big value might render some SPUs are idle, while a few other SPUs are doing all work. +//#define SPU_BATCHSIZE_BROADPHASE_PAIRS 8 +//#define SPU_BATCHSIZE_BROADPHASE_PAIRS 16 +//#define SPU_BATCHSIZE_BROADPHASE_PAIRS 64 +#define SPU_BATCHSIZE_BROADPHASE_PAIRS 128 +//#define SPU_BATCHSIZE_BROADPHASE_PAIRS 256 +//#define SPU_BATCHSIZE_BROADPHASE_PAIRS 512 +//#define SPU_BATCHSIZE_BROADPHASE_PAIRS 1024 + + + +class SpuCollisionTaskProcess; + +///SpuGatheringCollisionDispatcher can use SPU to gather and calculate collision detection +///Time of Impact, Closest Points and Penetration Depth. +class SpuGatheringCollisionDispatcher : public btCollisionDispatcher +{ + + SpuCollisionTaskProcess* m_spuCollisionTaskProcess; + +protected: + + class btThreadSupportInterface* m_threadInterface; + + unsigned int m_maxNumOutstandingTasks; + + +public: + + //can be used by SPU collision algorithms + SpuCollisionTaskProcess* getSpuCollisionTaskProcess() + { + return m_spuCollisionTaskProcess; + } + + SpuGatheringCollisionDispatcher (class btThreadSupportInterface* threadInterface, unsigned int maxNumOutstandingTasks,btCollisionConfiguration* collisionConfiguration); + + virtual ~SpuGatheringCollisionDispatcher(); + + bool supportsDispatchPairOnSpu(int proxyType0,int proxyType1); + + virtual void dispatchAllCollisionPairs(btOverlappingPairCache* pairCache,const btDispatcherInfo& dispatchInfo,btDispatcher* dispatcher) ; + +}; + + + +#endif //SPU_GATHERING_COLLISION__DISPATCHER_H + + diff --git a/extern/bullet2/BulletMultiThreaded/SpuLibspe2Support.cpp b/extern/bullet2/BulletMultiThreaded/SpuLibspe2Support.cpp new file mode 100644 index 00000000000..a312450ed72 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuLibspe2Support.cpp @@ -0,0 +1,257 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifdef USE_LIBSPE2 + +#include "SpuLibspe2Support.h" + + + + +//SpuLibspe2Support helps to initialize/shutdown libspe2, start/stop SPU tasks and communication +///Setup and initialize SPU/CELL/Libspe2 +SpuLibspe2Support::SpuLibspe2Support(spe_program_handle_t *speprog, int numThreads) +{ + this->program = speprog; + this->numThreads = ((numThreads <= spe_cpu_info_get(SPE_COUNT_PHYSICAL_SPES, -1)) ? numThreads : spe_cpu_info_get(SPE_COUNT_PHYSICAL_SPES, -1)); +} + +///cleanup/shutdown Libspe2 +SpuLibspe2Support::~SpuLibspe2Support() +{ + + stopSPU(); +} + + + +///send messages to SPUs +void SpuLibspe2Support::sendRequest(uint32_t uiCommand, uint32_t uiArgument0, uint32_t uiArgument1) +{ + spe_context_ptr_t context; + + switch (uiCommand) + { + case CMD_SAMPLE_TASK_COMMAND: + { + //get taskdescription + SpuSampleTaskDesc* taskDesc = (SpuSampleTaskDesc*) uiArgument0; + + btAssert(taskDesc->m_taskIdm_taskId]; + + //set data for spuStatus + spuStatus.m_commandId = uiCommand; + spuStatus.m_status = Spu_Status_Occupied; //set SPU as "occupied" + spuStatus.m_taskDesc.p = taskDesc; + + //get context + context = data[taskDesc->m_taskId].context; + + + taskDesc->m_mainMemoryPtr = reinterpret_cast (spuStatus.m_lsMemory.p); + + + break; + } + case CMD_GATHER_AND_PROCESS_PAIRLIST: + { + //get taskdescription + SpuGatherAndProcessPairsTaskDesc* taskDesc = (SpuGatherAndProcessPairsTaskDesc*) uiArgument0; + + btAssert(taskDesc->taskIdtaskId]; + + //set data for spuStatus + spuStatus.m_commandId = uiCommand; + spuStatus.m_status = Spu_Status_Occupied; //set SPU as "occupied" + spuStatus.m_taskDesc.p = taskDesc; + + //get context + context = data[taskDesc->taskId].context; + + + taskDesc->m_lsMemory = (CollisionTask_LocalStoreMemory*)spuStatus.m_lsMemory.p; + + break; + } + default: + { + ///not implemented + btAssert(0); + } + + }; + + + //write taskdescription in mailbox + unsigned int event = Spu_Mailbox_Event_Task; + spe_in_mbox_write(context, &event, 1, SPE_MBOX_ANY_NONBLOCKING); + +} + +///check for messages from SPUs +void SpuLibspe2Support::waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1) +{ + ///We should wait for (one of) the first tasks to finish (or other SPU messages), and report its response + + ///A possible response can be 'yes, SPU handled it', or 'no, please do a PPU fallback' + + btAssert(m_activeSpuStatus.size()); + + + int last = -1; + + //find an active spu/thread + while(last < 0) + { + for (int i=0;i=0); + + + + *puiArgument0 = spuStatus.m_taskId; + *puiArgument1 = spuStatus.m_status; + + +} + + +void SpuLibspe2Support::startSPU() +{ + this->internal_startSPU(); +} + + + +///start the spus group (can be called at the beginning of each frame, to make sure that the right SPU program is loaded) +void SpuLibspe2Support::internal_startSPU() +{ + m_activeSpuStatus.resize(numThreads); + + + for (int i=0; i < numThreads; i++) + { + + if(data[i].context == NULL) + { + + /* Create context */ + if ((data[i].context = spe_context_create(0, NULL)) == NULL) + { + perror ("Failed creating context"); + exit(1); + } + + /* Load program into context */ + if(spe_program_load(data[i].context, this->program)) + { + perror ("Failed loading program"); + exit(1); + } + + m_activeSpuStatus[i].m_status = Spu_Status_Startup; + m_activeSpuStatus[i].m_taskId = i; + m_activeSpuStatus[i].m_commandId = 0; + m_activeSpuStatus[i].m_lsMemory.p = NULL; + + + data[i].entry = SPE_DEFAULT_ENTRY; + data[i].flags = 0; + data[i].argp.p = &m_activeSpuStatus[i]; + data[i].envp.p = NULL; + + /* Create thread for each SPE context */ + if (pthread_create(&data[i].pthread, NULL, &ppu_pthread_function, &(data[i]) )) + { + perror ("Failed creating thread"); + exit(1); + } + /* + else + { + printf("started thread %d\n",i); + }*/ + } + } + + + for (int i=0; i < numThreads; i++) + { + if(data[i].context != NULL) + { + while( m_activeSpuStatus[i].m_status == Spu_Status_Startup) + { + // wait for spu to set up + sched_yield(); + } + printf("Spu %d is ready\n", i); + } + } +} + +///tell the task scheduler we are done with the SPU tasks +void SpuLibspe2Support::stopSPU() +{ + // wait for all threads to finish + int i; + for ( i = 0; i < this->numThreads; i++ ) + { + + unsigned int event = Spu_Mailbox_Event_Shutdown; + spe_context_ptr_t context = data[i].context; + spe_in_mbox_write(context, &event, 1, SPE_MBOX_ALL_BLOCKING); + pthread_join (data[i].pthread, NULL); + + } + // close SPE program + spe_image_close(program); + // destroy SPE contexts + for ( i = 0; i < this->numThreads; i++ ) + { + if(data[i].context != NULL) + { + spe_context_destroy (data[i].context); + } + } + + m_activeSpuStatus.clear(); + +} + + + +#endif //USE_LIBSPE2 + diff --git a/extern/bullet2/BulletMultiThreaded/SpuLibspe2Support.h b/extern/bullet2/BulletMultiThreaded/SpuLibspe2Support.h new file mode 100644 index 00000000000..a6d6baca47b --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuLibspe2Support.h @@ -0,0 +1,180 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef SPU_LIBSPE2_SUPPORT_H +#define SPU_LIBSPE2_SUPPORT_H + +#include //for uint32_t etc. + +#ifdef USE_LIBSPE2 + +#include +#include +//#include "SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h" +#include "PlatformDefinitions.h" + + +//extern struct SpuGatherAndProcessPairsTaskDesc; + +enum +{ + Spu_Mailbox_Event_Nothing = 0, + Spu_Mailbox_Event_Task = 1, + Spu_Mailbox_Event_Shutdown = 2, + + Spu_Mailbox_Event_ForceDword = 0xFFFFFFFF + +}; + +enum +{ + Spu_Status_Free = 0, + Spu_Status_Occupied = 1, + Spu_Status_Startup = 2, + + Spu_Status_ForceDword = 0xFFFFFFFF + +}; + + +struct btSpuStatus +{ + uint32_t m_taskId; + uint32_t m_commandId; + uint32_t m_status; + + addr64 m_taskDesc; + addr64 m_lsMemory; + +} +__attribute__ ((aligned (128))) +; + + + +#ifndef __SPU__ + +#include "LinearMath/btAlignedObjectArray.h" +#include "SpuCollisionTaskProcess.h" +#include "SpuSampleTaskProcess.h" +#include "btThreadSupportInterface.h" +#include +#include +#include + +#define MAX_SPUS 4 + +typedef struct ppu_pthread_data +{ + spe_context_ptr_t context; + pthread_t pthread; + unsigned int entry; + unsigned int flags; + addr64 argp; + addr64 envp; + spe_stop_info_t stopinfo; +} ppu_pthread_data_t; + + +static void *ppu_pthread_function(void *arg) +{ + ppu_pthread_data_t * datap = (ppu_pthread_data_t *)arg; + /* + int rc; + do + {*/ + spe_context_run(datap->context, &datap->entry, datap->flags, datap->argp.p, datap->envp.p, &datap->stopinfo); + if (datap->stopinfo.stop_reason == SPE_EXIT) + { + if (datap->stopinfo.result.spe_exit_code != 0) + { + perror("FAILED: SPE returned a non-zero exit status: \n"); + exit(1); + } + } + else + { + perror("FAILED: SPE abnormally terminated\n"); + exit(1); + } + + + //} while (rc > 0); // loop until exit or error, and while any stop & signal + pthread_exit(NULL); +} + + + + + + +///SpuLibspe2Support helps to initialize/shutdown libspe2, start/stop SPU tasks and communication +class SpuLibspe2Support : public btThreadSupportInterface +{ + + btAlignedObjectArray m_activeSpuStatus; + +public: + //Setup and initialize SPU/CELL/Libspe2 + SpuLibspe2Support(spe_program_handle_t *speprog,int numThreads); + + // SPE program handle ptr. + spe_program_handle_t *program; + + // SPE program data + ppu_pthread_data_t data[MAX_SPUS]; + + //cleanup/shutdown Libspe2 + ~SpuLibspe2Support(); + + ///send messages to SPUs + void sendRequest(uint32_t uiCommand, uint32_t uiArgument0, uint32_t uiArgument1=0); + + //check for messages from SPUs + void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1); + + //start the spus (can be called at the beginning of each frame, to make sure that the right SPU program is loaded) + virtual void startSPU(); + + //tell the task scheduler we are done with the SPU tasks + virtual void stopSPU(); + + virtual void setNumTasks(int numTasks) + { + //changing the number of tasks after initialization is not implemented (yet) + } + +private: + + ///start the spus (can be called at the beginning of each frame, to make sure that the right SPU program is loaded) + void internal_startSPU(); + + + + + int numThreads; + +}; + +#endif // NOT __SPU__ + +#endif //USE_LIBSPE2 + +#endif //SPU_LIBSPE2_SUPPORT_H + + + + diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/Box.h b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/Box.h new file mode 100644 index 00000000000..9bc2ebf51ec --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/Box.h @@ -0,0 +1,172 @@ +/* + Copyright (C) 2006, 2008 Sony Computer Entertainment Inc. + All rights reserved. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +*/ + +#ifndef __BOX_H__ +#define __BOX_H__ + + +#ifndef PE_REF +#define PE_REF(a) a& +#endif + +#include + +///only use a system-wide vectormath_aos.h on CELLOS_LV2 or if USE_SYSTEM_VECTORMATH +#if defined(__CELLOS_LV2__) || defined (USE_SYSTEM_VECTORMATH) +#include +#else +#include "BulletMultiThreaded/vectormath/scalar/cpp/vectormath_aos.h" +#endif + + + +using namespace Vectormath::Aos; + +enum FeatureType { F, E, V }; + +//---------------------------------------------------------------------------- +// Box +//---------------------------------------------------------------------------- +///The Box is an internal class used by the boxBoxDistance calculation. +class Box +{ +public: + Vector3 half; + + inline Box() + {} + inline Box(PE_REF(Vector3) half_); + inline Box(float hx, float hy, float hz); + + inline void Set(PE_REF(Vector3) half_); + inline void Set(float hx, float hy, float hz); + + inline Vector3 GetAABB(const Matrix3& rotation) const; +}; + +inline +Box::Box(PE_REF(Vector3) half_) +{ + Set(half_); +} + +inline +Box::Box(float hx, float hy, float hz) +{ + Set(hx, hy, hz); +} + +inline +void +Box::Set(PE_REF(Vector3) half_) +{ + half = half_; +} + +inline +void +Box::Set(float hx, float hy, float hz) +{ + half = Vector3(hx, hy, hz); +} + +inline +Vector3 +Box::GetAABB(const Matrix3& rotation) const +{ + return absPerElem(rotation) * half; +} + +//------------------------------------------------------------------------------------------------- +// BoxPoint +//------------------------------------------------------------------------------------------------- + +///The BoxPoint class is an internally used class to contain feature information for boxBoxDistance calculation. +class BoxPoint +{ +public: + BoxPoint() : localPoint(0.0f) {} + + Point3 localPoint; + FeatureType featureType; + int featureIdx; + + inline void setVertexFeature(int plusX, int plusY, int plusZ); + inline void setEdgeFeature(int dim0, int plus0, int dim1, int plus1); + inline void setFaceFeature(int dim, int plus); + + inline void getVertexFeature(int & plusX, int & plusY, int & plusZ) const; + inline void getEdgeFeature(int & dim0, int & plus0, int & dim1, int & plus1) const; + inline void getFaceFeature(int & dim, int & plus) const; +}; + +inline +void +BoxPoint::setVertexFeature(int plusX, int plusY, int plusZ) +{ + featureType = V; + featureIdx = plusX << 2 | plusY << 1 | plusZ; +} + +inline +void +BoxPoint::setEdgeFeature(int dim0, int plus0, int dim1, int plus1) +{ + featureType = E; + + if (dim0 > dim1) { + featureIdx = plus1 << 5 | dim1 << 3 | plus0 << 2 | dim0; + } else { + featureIdx = plus0 << 5 | dim0 << 3 | plus1 << 2 | dim1; + } +} + +inline +void +BoxPoint::setFaceFeature(int dim, int plus) +{ + featureType = F; + featureIdx = plus << 2 | dim; +} + +inline +void +BoxPoint::getVertexFeature(int & plusX, int & plusY, int & plusZ) const +{ + plusX = featureIdx >> 2; + plusY = featureIdx >> 1 & 1; + plusZ = featureIdx & 1; +} + +inline +void +BoxPoint::getEdgeFeature(int & dim0, int & plus0, int & dim1, int & plus1) const +{ + plus0 = featureIdx >> 5; + dim0 = featureIdx >> 3 & 3; + plus1 = featureIdx >> 2 & 1; + dim1 = featureIdx & 3; +} + +inline +void +BoxPoint::getFaceFeature(int & dim, int & plus) const +{ + plus = featureIdx >> 2; + dim = featureIdx & 3; +} + +#endif /* __BOX_H__ */ diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.cpp b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.cpp new file mode 100644 index 00000000000..dfcd8426695 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.cpp @@ -0,0 +1,302 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "SpuCollisionShapes.h" + +///not supported on IBM SDK, until we fix the alignment of btVector3 +#if defined (__CELLOS_LV2__) && defined (__SPU__) +#include +static inline vec_float4 vec_dot3( vec_float4 vec0, vec_float4 vec1 ) +{ + vec_float4 result; + result = spu_mul( vec0, vec1 ); + result = spu_madd( spu_rlqwbyte( vec0, 4 ), spu_rlqwbyte( vec1, 4 ), result ); + return spu_madd( spu_rlqwbyte( vec0, 8 ), spu_rlqwbyte( vec1, 8 ), result ); +} +#endif //__SPU__ + + +void computeAabb (btVector3& aabbMin, btVector3& aabbMax, btConvexInternalShape* convexShape, ppu_address_t convexShapePtr, int shapeType, const btTransform& xform) +{ + //calculate the aabb, given the types... + switch (shapeType) + { + case CYLINDER_SHAPE_PROXYTYPE: + /* fall through */ + case BOX_SHAPE_PROXYTYPE: + { + btScalar margin=convexShape->getMarginNV(); + btVector3 halfExtents = convexShape->getImplicitShapeDimensions(); + halfExtents += btVector3(margin,margin,margin); + const btTransform& t = xform; + btMatrix3x3 abs_b = t.getBasis().absolute(); + btVector3 center = t.getOrigin(); + btVector3 extent = btVector3(abs_b[0].dot(halfExtents),abs_b[1].dot(halfExtents),abs_b[2].dot(halfExtents)); + + aabbMin = center - extent; + aabbMax = center + extent; + break; + } + case CAPSULE_SHAPE_PROXYTYPE: + { + btScalar margin=convexShape->getMarginNV(); + btVector3 halfExtents = convexShape->getImplicitShapeDimensions(); + //add the radius to y-axis to get full height + btScalar radius = halfExtents[0]; + halfExtents[1] += radius; + halfExtents += btVector3(margin,margin,margin); +#if 0 + int capsuleUpAxis = convexShape->getUpAxis(); + btScalar halfHeight = convexShape->getHalfHeight(); + btScalar radius = convexShape->getRadius(); + halfExtents[capsuleUpAxis] = radius + halfHeight; +#endif + const btTransform& t = xform; + btMatrix3x3 abs_b = t.getBasis().absolute(); + btVector3 center = t.getOrigin(); + btVector3 extent = btVector3(abs_b[0].dot(halfExtents),abs_b[1].dot(halfExtents),abs_b[2].dot(halfExtents)); + + aabbMin = center - extent; + aabbMax = center + extent; + break; + } + case SPHERE_SHAPE_PROXYTYPE: + { + btScalar radius = convexShape->getImplicitShapeDimensions().getX();// * convexShape->getLocalScaling().getX(); + btScalar margin = radius + convexShape->getMarginNV(); + const btTransform& t = xform; + const btVector3& center = t.getOrigin(); + btVector3 extent(margin,margin,margin); + aabbMin = center - extent; + aabbMax = center + extent; + break; + } + case CONVEX_HULL_SHAPE_PROXYTYPE: + { + ATTRIBUTE_ALIGNED16(char convexHullShape0[sizeof(btConvexHullShape)]); + cellDmaGet(&convexHullShape0, convexShapePtr , sizeof(btConvexHullShape), DMA_TAG(1), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(1)); + btConvexHullShape* localPtr = (btConvexHullShape*)&convexHullShape0; + const btTransform& t = xform; + btScalar margin = convexShape->getMarginNV(); + localPtr->getNonvirtualAabb(t,aabbMin,aabbMax,margin); + //spu_printf("SPU convex aabbMin=%f,%f,%f=\n",aabbMin.getX(),aabbMin.getY(),aabbMin.getZ()); + //spu_printf("SPU convex aabbMax=%f,%f,%f=\n",aabbMax.getX(),aabbMax.getY(),aabbMax.getZ()); + break; + } + default: + { + // spu_printf("SPU: unsupported shapetype %d in AABB calculation\n"); + } + }; +} + +void dmaBvhShapeData (bvhMeshShape_LocalStoreMemory* bvhMeshShape, btBvhTriangleMeshShape* triMeshShape) +{ + register int dmaSize; + register ppu_address_t dmaPpuAddress2; + + dmaSize = sizeof(btTriangleIndexVertexArray); + dmaPpuAddress2 = reinterpret_cast(triMeshShape->getMeshInterface()); + // spu_printf("trimeshShape->getMeshInterface() == %llx\n",dmaPpuAddress2); +#ifdef __SPU__ + cellDmaGet(&bvhMeshShape->gTriangleMeshInterfaceStorage, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); + bvhMeshShape->gTriangleMeshInterfacePtr = &bvhMeshShape->gTriangleMeshInterfaceStorage; +#else + bvhMeshShape->gTriangleMeshInterfacePtr = (btTriangleIndexVertexArray*)cellDmaGetReadOnly(&bvhMeshShape->gTriangleMeshInterfaceStorage, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); +#endif + + //cellDmaWaitTagStatusAll(DMA_MASK(1)); + + ///now DMA over the BVH + + dmaSize = sizeof(btOptimizedBvh); + dmaPpuAddress2 = reinterpret_cast(triMeshShape->getOptimizedBvh()); + //spu_printf("trimeshShape->getOptimizedBvh() == %llx\n",dmaPpuAddress2); + cellDmaGet(&bvhMeshShape->gOptimizedBvh, dmaPpuAddress2 , dmaSize, DMA_TAG(2), 0, 0); + //cellDmaWaitTagStatusAll(DMA_MASK(2)); + cellDmaWaitTagStatusAll(DMA_MASK(1) | DMA_MASK(2)); +} + +void dmaBvhIndexedMesh (btIndexedMesh* IndexMesh, IndexedMeshArray& indexArray, int index, uint32_t dmaTag) +{ + cellDmaGet(IndexMesh, (ppu_address_t)&indexArray[index] , sizeof(btIndexedMesh), DMA_TAG(dmaTag), 0, 0); + +} + +void dmaBvhSubTreeHeaders (btBvhSubtreeInfo* subTreeHeaders, ppu_address_t subTreePtr, int batchSize, uint32_t dmaTag) +{ + cellDmaGet(subTreeHeaders, subTreePtr, batchSize * sizeof(btBvhSubtreeInfo), DMA_TAG(dmaTag), 0, 0); +} + +void dmaBvhSubTreeNodes (btQuantizedBvhNode* nodes, const btBvhSubtreeInfo& subtree, QuantizedNodeArray& nodeArray, int dmaTag) +{ + cellDmaGet(nodes, reinterpret_cast(&nodeArray[subtree.m_rootNodeIndex]) , subtree.m_subtreeSize* sizeof(btQuantizedBvhNode), DMA_TAG(2), 0, 0); +} + +///getShapeTypeSize could easily be optimized, but it is not likely a bottleneck +int getShapeTypeSize(int shapeType) +{ + + + switch (shapeType) + { + case CYLINDER_SHAPE_PROXYTYPE: + { + int shapeSize = sizeof(btCylinderShape); + btAssert(shapeSize < MAX_SHAPE_SIZE); + return shapeSize; + } + case BOX_SHAPE_PROXYTYPE: + { + int shapeSize = sizeof(btBoxShape); + btAssert(shapeSize < MAX_SHAPE_SIZE); + return shapeSize; + } + case SPHERE_SHAPE_PROXYTYPE: + { + int shapeSize = sizeof(btSphereShape); + btAssert(shapeSize < MAX_SHAPE_SIZE); + return shapeSize; + } + case TRIANGLE_MESH_SHAPE_PROXYTYPE: + { + int shapeSize = sizeof(btBvhTriangleMeshShape); + btAssert(shapeSize < MAX_SHAPE_SIZE); + return shapeSize; + } + case CAPSULE_SHAPE_PROXYTYPE: + { + int shapeSize = sizeof(btCapsuleShape); + btAssert(shapeSize < MAX_SHAPE_SIZE); + return shapeSize; + } + + case CONVEX_HULL_SHAPE_PROXYTYPE: + { + int shapeSize = sizeof(btConvexHullShape); + btAssert(shapeSize < MAX_SHAPE_SIZE); + return shapeSize; + } + + case COMPOUND_SHAPE_PROXYTYPE: + { + int shapeSize = sizeof(btCompoundShape); + btAssert(shapeSize < MAX_SHAPE_SIZE); + return shapeSize; + } + case STATIC_PLANE_PROXYTYPE: + { + int shapeSize = sizeof(btStaticPlaneShape); + btAssert(shapeSize < MAX_SHAPE_SIZE); + return shapeSize; + } + + default: + btAssert(0); + //unsupported shapetype, please add here + return 0; + } +} + +void dmaConvexVertexData (SpuConvexPolyhedronVertexData* convexVertexData, btConvexHullShape* convexShapeSPU) +{ + convexVertexData->gNumConvexPoints = convexShapeSPU->getNumPoints(); + if (convexVertexData->gNumConvexPoints>MAX_NUM_SPU_CONVEX_POINTS) + { + btAssert(0); + // spu_printf("SPU: Error: MAX_NUM_SPU_CONVEX_POINTS(%d) exceeded: %d\n",MAX_NUM_SPU_CONVEX_POINTS,convexVertexData->gNumConvexPoints); + return; + } + + register int dmaSize = convexVertexData->gNumConvexPoints*sizeof(btVector3); + ppu_address_t pointsPPU = (ppu_address_t) convexShapeSPU->getUnscaledPoints(); + cellDmaGet(&convexVertexData->g_convexPointBuffer[0], pointsPPU , dmaSize, DMA_TAG(2), 0, 0); +} + +void dmaCollisionShape (void* collisionShapeLocation, ppu_address_t collisionShapePtr, uint32_t dmaTag, int shapeType) +{ + register int dmaSize = getShapeTypeSize(shapeType); + cellDmaGet(collisionShapeLocation, collisionShapePtr , dmaSize, DMA_TAG(dmaTag), 0, 0); + //cellDmaGetReadOnly(collisionShapeLocation, collisionShapePtr , dmaSize, DMA_TAG(dmaTag), 0, 0); + //cellDmaWaitTagStatusAll(DMA_MASK(dmaTag)); +} + +void dmaCompoundShapeInfo (CompoundShape_LocalStoreMemory* compoundShapeLocation, btCompoundShape* spuCompoundShape, uint32_t dmaTag) +{ + register int dmaSize; + register ppu_address_t dmaPpuAddress2; + int childShapeCount = spuCompoundShape->getNumChildShapes(); + dmaSize = childShapeCount * sizeof(btCompoundShapeChild); + dmaPpuAddress2 = (ppu_address_t)spuCompoundShape->getChildList(); + cellDmaGet(&compoundShapeLocation->gSubshapes[0], dmaPpuAddress2, dmaSize, DMA_TAG(dmaTag), 0, 0); +} + +void dmaCompoundSubShapes (CompoundShape_LocalStoreMemory* compoundShapeLocation, btCompoundShape* spuCompoundShape, uint32_t dmaTag) +{ + int childShapeCount = spuCompoundShape->getNumChildShapes(); + int i; + // DMA all the subshapes + for ( i = 0; i < childShapeCount; ++i) + { + btCompoundShapeChild& childShape = compoundShapeLocation->gSubshapes[i]; + dmaCollisionShape (&compoundShapeLocation->gSubshapeShape[i],(ppu_address_t)childShape.m_childShape, dmaTag, childShape.m_childShapeType); + } +} + + +void spuWalkStacklessQuantizedTree(btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax,const btQuantizedBvhNode* rootNode,int startNodeIndex,int endNodeIndex) +{ + + int curIndex = startNodeIndex; + int walkIterations = 0; +#ifdef BT_DEBUG + int subTreeSize = endNodeIndex - startNodeIndex; +#endif + + int escapeIndex; + + unsigned int aabbOverlap, isLeafNode; + + while (curIndex < endNodeIndex) + { + //catch bugs in tree data + btAssert (walkIterations < subTreeSize); + + walkIterations++; + aabbOverlap = spuTestQuantizedAabbAgainstQuantizedAabb(quantizedQueryAabbMin,quantizedQueryAabbMax,rootNode->m_quantizedAabbMin,rootNode->m_quantizedAabbMax); + isLeafNode = rootNode->isLeafNode(); + + if (isLeafNode && aabbOverlap) + { + //printf("overlap with node %d\n",rootNode->getTriangleIndex()); + nodeCallback->processNode(0,rootNode->getTriangleIndex()); + // spu_printf("SPU: overlap detected with triangleIndex:%d\n",rootNode->getTriangleIndex()); + } + + if (aabbOverlap || isLeafNode) + { + rootNode++; + curIndex++; + } else + { + escapeIndex = rootNode->getEscapeIndex(); + rootNode += escapeIndex; + curIndex += escapeIndex; + } + } + +} diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.h b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.h new file mode 100644 index 00000000000..d369395e160 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.h @@ -0,0 +1,126 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ +#ifndef __SPU_COLLISION_SHAPES_H +#define __SPU_COLLISION_SHAPES_H + +#include "../SpuDoubleBuffer.h" + +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "BulletCollision/CollisionShapes/btConvexInternalShape.h" +#include "BulletCollision/CollisionShapes/btCylinderShape.h" +#include "BulletCollision/CollisionShapes/btStaticPlaneShape.h" + +#include "BulletCollision/CollisionShapes/btOptimizedBvh.h" +#include "BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h" +#include "BulletCollision/CollisionShapes/btSphereShape.h" + +#include "BulletCollision/CollisionShapes/btCapsuleShape.h" + +#include "BulletCollision/CollisionShapes/btConvexShape.h" +#include "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h" +#include "BulletCollision/CollisionShapes/btConvexHullShape.h" +#include "BulletCollision/CollisionShapes/btCompoundShape.h" + +#define MAX_NUM_SPU_CONVEX_POINTS 128 + +ATTRIBUTE_ALIGNED16(struct) SpuConvexPolyhedronVertexData +{ + void* gSpuConvexShapePtr; + btVector3* gConvexPoints; + int gNumConvexPoints; + int unused; + ATTRIBUTE_ALIGNED16(btVector3 g_convexPointBuffer[MAX_NUM_SPU_CONVEX_POINTS]); +}; + +#define MAX_SHAPE_SIZE 256 + +ATTRIBUTE_ALIGNED16(struct) CollisionShape_LocalStoreMemory +{ + ATTRIBUTE_ALIGNED16(char collisionShape[MAX_SHAPE_SIZE]); +}; + +ATTRIBUTE_ALIGNED16(struct) CompoundShape_LocalStoreMemory +{ + // Compound data +#define MAX_SPU_COMPOUND_SUBSHAPES 16 + ATTRIBUTE_ALIGNED16(btCompoundShapeChild gSubshapes[MAX_SPU_COMPOUND_SUBSHAPES]); + ATTRIBUTE_ALIGNED16(char gSubshapeShape[MAX_SPU_COMPOUND_SUBSHAPES][MAX_SHAPE_SIZE]); +}; + +ATTRIBUTE_ALIGNED16(struct) bvhMeshShape_LocalStoreMemory +{ + //ATTRIBUTE_ALIGNED16(btOptimizedBvh gOptimizedBvh); + ATTRIBUTE_ALIGNED16(char gOptimizedBvh[sizeof(btOptimizedBvh)+16]); + btOptimizedBvh* getOptimizedBvh() + { + return (btOptimizedBvh*) gOptimizedBvh; + } + + ATTRIBUTE_ALIGNED16(btTriangleIndexVertexArray gTriangleMeshInterfaceStorage); + btTriangleIndexVertexArray* gTriangleMeshInterfacePtr; + ///only a single mesh part for now, we can add support for multiple parts, but quantized trees don't support this at the moment + ATTRIBUTE_ALIGNED16(btIndexedMesh gIndexMesh); + #define MAX_SPU_SUBTREE_HEADERS 32 + //1024 + ATTRIBUTE_ALIGNED16(btBvhSubtreeInfo gSubtreeHeaders[MAX_SPU_SUBTREE_HEADERS]); + ATTRIBUTE_ALIGNED16(btQuantizedBvhNode gSubtreeNodes[MAX_SUBTREE_SIZE_IN_BYTES/sizeof(btQuantizedBvhNode)]); +}; + + +void computeAabb (btVector3& aabbMin, btVector3& aabbMax, btConvexInternalShape* convexShape, ppu_address_t convexShapePtr, int shapeType, const btTransform& xform); +void dmaBvhShapeData (bvhMeshShape_LocalStoreMemory* bvhMeshShape, btBvhTriangleMeshShape* triMeshShape); +void dmaBvhIndexedMesh (btIndexedMesh* IndexMesh, IndexedMeshArray& indexArray, int index, uint32_t dmaTag); +void dmaBvhSubTreeHeaders (btBvhSubtreeInfo* subTreeHeaders, ppu_address_t subTreePtr, int batchSize, uint32_t dmaTag); +void dmaBvhSubTreeNodes (btQuantizedBvhNode* nodes, const btBvhSubtreeInfo& subtree, QuantizedNodeArray& nodeArray, int dmaTag); + +int getShapeTypeSize(int shapeType); +void dmaConvexVertexData (SpuConvexPolyhedronVertexData* convexVertexData, btConvexHullShape* convexShapeSPU); +void dmaCollisionShape (void* collisionShapeLocation, ppu_address_t collisionShapePtr, uint32_t dmaTag, int shapeType); +void dmaCompoundShapeInfo (CompoundShape_LocalStoreMemory* compoundShapeLocation, btCompoundShape* spuCompoundShape, uint32_t dmaTag); +void dmaCompoundSubShapes (CompoundShape_LocalStoreMemory* compoundShapeLocation, btCompoundShape* spuCompoundShape, uint32_t dmaTag); + + +#define USE_BRANCHFREE_TEST 1 +#ifdef USE_BRANCHFREE_TEST +SIMD_FORCE_INLINE unsigned int spuTestQuantizedAabbAgainstQuantizedAabb(unsigned short int* aabbMin1,unsigned short int* aabbMax1,const unsigned short int* aabbMin2,const unsigned short int* aabbMax2) +{ +#if defined(__CELLOS_LV2__) && defined (__SPU__) + vec_ushort8 vecMin = {aabbMin1[0],aabbMin2[0],aabbMin1[2],aabbMin2[2],aabbMin1[1],aabbMin2[1],0,0}; + vec_ushort8 vecMax = {aabbMax2[0],aabbMax1[0],aabbMax2[2],aabbMax1[2],aabbMax2[1],aabbMax1[1],0,0}; + vec_ushort8 isGt = spu_cmpgt(vecMin,vecMax); + return spu_extract(spu_gather(isGt),0)==0; + +#else + return btSelect((unsigned)((aabbMin1[0] <= aabbMax2[0]) & (aabbMax1[0] >= aabbMin2[0]) + & (aabbMin1[2] <= aabbMax2[2]) & (aabbMax1[2] >= aabbMin2[2]) + & (aabbMin1[1] <= aabbMax2[1]) & (aabbMax1[1] >= aabbMin2[1])), + 1, 0); +#endif +} +#else + +SIMD_FORCE_INLINE unsigned int spuTestQuantizedAabbAgainstQuantizedAabb(const unsigned short int* aabbMin1,const unsigned short int* aabbMax1,const unsigned short int* aabbMin2,const unsigned short int* aabbMax2) +{ + unsigned int overlap = 1; + overlap = (aabbMin1[0] > aabbMax2[0] || aabbMax1[0] < aabbMin2[0]) ? 0 : overlap; + overlap = (aabbMin1[2] > aabbMax2[2] || aabbMax1[2] < aabbMin2[2]) ? 0 : overlap; + overlap = (aabbMin1[1] > aabbMax2[1] || aabbMax1[1] < aabbMin2[1]) ? 0 : overlap; + return overlap; +} +#endif + +void spuWalkStacklessQuantizedTree(btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax,const btQuantizedBvhNode* rootNode,int startNodeIndex,int endNodeIndex); + +#endif diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.cpp b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.cpp new file mode 100644 index 00000000000..8e540d9297b --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.cpp @@ -0,0 +1,242 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "SpuContactResult.h" + +//#define DEBUG_SPU_COLLISION_DETECTION 1 + +#ifdef DEBUG_SPU_COLLISION_DETECTION +#ifndef __SPU__ +#include +#define spu_printf printf +#endif +#endif DEBUG_SPU_COLLISION_DETECTION + +SpuContactResult::SpuContactResult() +{ + m_manifoldAddress = 0; + m_spuManifold = NULL; + m_RequiresWriteBack = false; +} + + SpuContactResult::~SpuContactResult() +{ + g_manifoldDmaExport.swapBuffers(); +} + + ///User can override this material combiner by implementing gContactAddedCallback and setting body0->m_collisionFlags |= btCollisionObject::customMaterialCallback; +inline btScalar calculateCombinedFriction(btScalar friction0,btScalar friction1) +{ + btScalar friction = friction0*friction1; + + const btScalar MAX_FRICTION = btScalar(10.); + + if (friction < -MAX_FRICTION) + friction = -MAX_FRICTION; + if (friction > MAX_FRICTION) + friction = MAX_FRICTION; + return friction; + +} + +inline btScalar calculateCombinedRestitution(btScalar restitution0,btScalar restitution1) +{ + return restitution0*restitution1; +} + + + + void SpuContactResult::setContactInfo(btPersistentManifold* spuManifold, ppu_address_t manifoldAddress,const btTransform& worldTrans0,const btTransform& worldTrans1, btScalar restitution0,btScalar restitution1, btScalar friction0,btScalar friction1, bool isSwapped) + { + //spu_printf("SpuContactResult::setContactInfo ManifoldAddress: %lu\n", manifoldAddress); + m_rootWorldTransform0 = worldTrans0; + m_rootWorldTransform1 = worldTrans1; + m_manifoldAddress = manifoldAddress; + m_spuManifold = spuManifold; + + m_combinedFriction = calculateCombinedFriction(friction0,friction1); + m_combinedRestitution = calculateCombinedRestitution(restitution0,restitution1); + m_isSwapped = isSwapped; + } + + void SpuContactResult::setShapeIdentifiersA(int partId0,int index0) + { + + } + + void SpuContactResult::setShapeIdentifiersB(int partId1,int index1) + { + + } + + + + ///return true if it requires a dma transfer back +bool ManifoldResultAddContactPoint(const btVector3& normalOnBInWorld, + const btVector3& pointInWorld, + float depth, + btPersistentManifold* manifoldPtr, + btTransform& transA, + btTransform& transB, + btScalar combinedFriction, + btScalar combinedRestitution, + bool isSwapped) +{ + +// float contactTreshold = manifoldPtr->getContactBreakingThreshold(); + + //spu_printf("SPU: add contactpoint, depth:%f, contactTreshold %f, manifoldPtr %llx\n",depth,contactTreshold,manifoldPtr); + +#ifdef DEBUG_SPU_COLLISION_DETECTION + spu_printf("SPU: contactTreshold %f\n",contactTreshold); +#endif //DEBUG_SPU_COLLISION_DETECTION + if (depth > manifoldPtr->getContactBreakingThreshold()) + return false; + + btVector3 pointA; + btVector3 localA; + btVector3 localB; + btVector3 normal; + + + if (isSwapped) + { + normal = normalOnBInWorld * -1; + pointA = pointInWorld + normal * depth; + localA = transA.invXform(pointA ); + localB = transB.invXform(pointInWorld); + } + else + { + normal = normalOnBInWorld; + pointA = pointInWorld + normal * depth; + localA = transA.invXform(pointA ); + localB = transB.invXform(pointInWorld); + } + + btManifoldPoint newPt(localA,localB,normal,depth); + newPt.m_positionWorldOnA = pointA; + newPt.m_positionWorldOnB = pointInWorld; + + newPt.m_combinedFriction = combinedFriction; + newPt.m_combinedRestitution = combinedRestitution; + + + int insertIndex = manifoldPtr->getCacheEntry(newPt); + if (insertIndex >= 0) + { + // we need to replace the current contact point, otherwise small errors will accumulate (spheres start rolling etc) + manifoldPtr->replaceContactPoint(newPt,insertIndex); + return true; + + } else + { + + /* + ///@todo: SPU callbacks, either immediate (local on the SPU), or deferred + //User can override friction and/or restitution + if (gContactAddedCallback && + //and if either of the two bodies requires custom material + ((m_body0->m_collisionFlags & btCollisionObject::customMaterialCallback) || + (m_body1->m_collisionFlags & btCollisionObject::customMaterialCallback))) + { + //experimental feature info, for per-triangle material etc. + (*gContactAddedCallback)(newPt,m_body0,m_partId0,m_index0,m_body1,m_partId1,m_index1); + } + */ + manifoldPtr->addManifoldPoint(newPt); + return true; + + } + return false; + +} + + +void SpuContactResult::writeDoubleBufferedManifold(btPersistentManifold* lsManifold, btPersistentManifold* mmManifold) +{ + ///only write back the contact information on SPU. Other platforms avoid copying, and use the data in-place + ///see SpuFakeDma.cpp 'cellDmaLargeGetReadOnly' +#if defined (__SPU__) || defined (USE_LIBSPE2) + memcpy(g_manifoldDmaExport.getFront(),lsManifold,sizeof(btPersistentManifold)); + + g_manifoldDmaExport.swapBuffers(); + ppu_address_t mmAddr = (ppu_address_t)mmManifold; + g_manifoldDmaExport.backBufferDmaPut(mmAddr, sizeof(btPersistentManifold), DMA_TAG(9)); + // Should there be any kind of wait here? What if somebody tries to use this tag again? What if we call this function again really soon? + //no, the swapBuffers does the wait +#endif +} + +void SpuContactResult::addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth) +{ +#ifdef DEBUG_SPU_COLLISION_DETECTION + spu_printf("*** SpuContactResult::addContactPoint: depth = %f\n",depth); + spu_printf("*** normal = %f,%f,%f\n",normalOnBInWorld.getX(),normalOnBInWorld.getY(),normalOnBInWorld.getZ()); + spu_printf("*** position = %f,%f,%f\n",pointInWorld.getX(),pointInWorld.getY(),pointInWorld.getZ()); +#endif //DEBUG_SPU_COLLISION_DETECTION + + +#ifdef DEBUG_SPU_COLLISION_DETECTION + // int sman = sizeof(rage::phManifold); +// spu_printf("sizeof_manifold = %i\n",sman); +#endif //DEBUG_SPU_COLLISION_DETECTION + + btPersistentManifold* localManifold = m_spuManifold; + + btVector3 normalB(normalOnBInWorld.getX(),normalOnBInWorld.getY(),normalOnBInWorld.getZ()); + btVector3 pointWrld(pointInWorld.getX(),pointInWorld.getY(),pointInWorld.getZ()); + + //process the contact point + const bool retVal = ManifoldResultAddContactPoint(normalB, + pointWrld, + depth, + localManifold, + m_rootWorldTransform0, + m_rootWorldTransform1, + m_combinedFriction, + m_combinedRestitution, + m_isSwapped); + m_RequiresWriteBack = m_RequiresWriteBack || retVal; +} + +void SpuContactResult::flush() +{ + + if (m_spuManifold && m_spuManifold->getNumContacts()) + { + m_spuManifold->refreshContactPoints(m_rootWorldTransform0,m_rootWorldTransform1); + m_RequiresWriteBack = true; + } + + + if (m_RequiresWriteBack) + { +#ifdef DEBUG_SPU_COLLISION_DETECTION + spu_printf("SPU: Start SpuContactResult::flush (Put) DMA\n"); + spu_printf("Num contacts:%d\n", m_spuManifold->getNumContacts()); + spu_printf("Manifold address: %llu\n", m_manifoldAddress); +#endif //DEBUG_SPU_COLLISION_DETECTION + // spu_printf("writeDoubleBufferedManifold\n"); + writeDoubleBufferedManifold(m_spuManifold, (btPersistentManifold*)m_manifoldAddress); +#ifdef DEBUG_SPU_COLLISION_DETECTION + spu_printf("SPU: Finished (Put) DMA\n"); +#endif //DEBUG_SPU_COLLISION_DETECTION + } + m_spuManifold = NULL; + m_RequiresWriteBack = false; +} + + diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.h b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.h new file mode 100644 index 00000000000..394f56dcbd1 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.h @@ -0,0 +1,106 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SPU_CONTACT_RESULT2_H +#define SPU_CONTACT_RESULT2_H + + +#ifndef _WIN32 +#include +#endif + + + +#include "../SpuDoubleBuffer.h" + + +#include "LinearMath/btTransform.h" + + +#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" +#include "BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h" + +class btCollisionShape; + + +struct SpuCollisionPairInput +{ + ppu_address_t m_collisionShapes[2]; + btCollisionShape* m_spuCollisionShapes[2]; + + ppu_address_t m_persistentManifoldPtr; + btVector3 m_primitiveDimensions0; + btVector3 m_primitiveDimensions1; + int m_shapeType0; + int m_shapeType1; + float m_collisionMargin0; + float m_collisionMargin1; + + btTransform m_worldTransform0; + btTransform m_worldTransform1; + + bool m_isSwapped; + bool m_useEpa; +}; + + +struct SpuClosestPointInput : public btDiscreteCollisionDetectorInterface::ClosestPointInput +{ + struct SpuConvexPolyhedronVertexData* m_convexVertexData[2]; +}; + +///SpuContactResult exports the contact points using double-buffered DMA transfers, only when needed +///So when an existing contact point is duplicated, no transfer/refresh is performed. +class SpuContactResult : public btDiscreteCollisionDetectorInterface::Result +{ + btTransform m_rootWorldTransform0; + btTransform m_rootWorldTransform1; + ppu_address_t m_manifoldAddress; + + btPersistentManifold* m_spuManifold; + bool m_RequiresWriteBack; + btScalar m_combinedFriction; + btScalar m_combinedRestitution; + + bool m_isSwapped; + + DoubleBuffer g_manifoldDmaExport; + + public: + SpuContactResult(); + virtual ~SpuContactResult(); + + btPersistentManifold* GetSpuManifold() const + { + return m_spuManifold; + } + + virtual void setShapeIdentifiersA(int partId0,int index0); + virtual void setShapeIdentifiersB(int partId1,int index1); + + void setContactInfo(btPersistentManifold* spuManifold, ppu_address_t manifoldAddress,const btTransform& worldTrans0,const btTransform& worldTrans1, btScalar restitution0,btScalar restitution1, btScalar friction0,btScalar friction01, bool isSwapped); + + + void writeDoubleBufferedManifold(btPersistentManifold* lsManifold, btPersistentManifold* mmManifold); + + virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth); + + void flush(); +}; + + + +#endif //SPU_CONTACT_RESULT2_H + diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuConvexPenetrationDepthSolver.h b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuConvexPenetrationDepthSolver.h new file mode 100644 index 00000000000..449f19288c4 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuConvexPenetrationDepthSolver.h @@ -0,0 +1,51 @@ + +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef SPU_CONVEX_PENETRATION_DEPTH_H +#define SPU_CONVEX_PENETRATION_DEPTH_H + + + +class btStackAlloc; +class btIDebugDraw; +#include "BulletCollision/NarrowphaseCollision/btConvexPenetrationDepthSolver.h" + +#include "LinearMath/btTransform.h" + + +///ConvexPenetrationDepthSolver provides an interface for penetration depth calculation. +class SpuConvexPenetrationDepthSolver : public btConvexPenetrationDepthSolver +{ +public: + + virtual ~SpuConvexPenetrationDepthSolver() {}; + virtual bool calcPenDepth( SpuVoronoiSimplexSolver& simplexSolver, + void* convexA,void* convexB,int shapeTypeA, int shapeTypeB, float marginA, float marginB, + btTransform& transA,const btTransform& transB, + btVector3& v, btVector3& pa, btVector3& pb, + class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc, + struct SpuConvexPolyhedronVertexData* convexVertexDataA, + struct SpuConvexPolyhedronVertexData* convexVertexDataB + ) const = 0; + + +}; + + + +#endif //SPU_CONVEX_PENETRATION_DEPTH_H + diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp new file mode 100644 index 00000000000..c3dfaa793e3 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp @@ -0,0 +1,1381 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "SpuGatheringCollisionTask.h" + +//#define DEBUG_SPU_COLLISION_DETECTION 1 +#include "../SpuDoubleBuffer.h" + +#include "../SpuCollisionTaskProcess.h" +#include "../SpuGatheringCollisionDispatcher.h" //for SPU_BATCHSIZE_BROADPHASE_PAIRS + +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "../SpuContactManifoldCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "SpuContactResult.h" +#include "BulletCollision/CollisionShapes/btOptimizedBvh.h" +#include "BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h" +#include "BulletCollision/CollisionShapes/btSphereShape.h" +#include "BulletCollision/CollisionShapes/btConvexPointCloudShape.h" + +#include "BulletCollision/CollisionShapes/btCapsuleShape.h" + +#include "BulletCollision/CollisionShapes/btConvexShape.h" +#include "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h" +#include "BulletCollision/CollisionShapes/btConvexHullShape.h" +#include "BulletCollision/CollisionShapes/btCompoundShape.h" + +#include "SpuMinkowskiPenetrationDepthSolver.h" +//#include "SpuEpaPenetrationDepthSolver.h" +#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h" + + +#include "boxBoxDistance.h" +#include "BulletMultiThreaded/vectormath2bullet.h" +#include "SpuCollisionShapes.h" //definition of SpuConvexPolyhedronVertexData +#include "BulletCollision/CollisionDispatch/btBoxBoxDetector.h" +#include "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h" +#include "BulletCollision/CollisionShapes/btTriangleShape.h" + +#ifdef __SPU__ +///Software caching from the IBM Cell SDK, it reduces 25% SPU time for our test cases +#ifndef USE_LIBSPE2 +#define USE_SOFTWARE_CACHE 1 +#endif +#endif //__SPU__ + +int gSkippedCol = 0; +int gProcessedCol = 0; + +//////////////////////////////////////////////// +/// software caching +#if USE_SOFTWARE_CACHE +#include +#include +#include +#include +#define SPE_CACHE_NWAY 4 +//#define SPE_CACHE_NSETS 32, 16 +#define SPE_CACHE_NSETS 8 +//#define SPE_CACHELINE_SIZE 512 +#define SPE_CACHELINE_SIZE 128 +#define SPE_CACHE_SET_TAGID(set) 15 +///make sure that spe_cache.h is below those defines! +#include "../Extras/software_cache/cache/include/spe_cache.h" + + +int g_CacheMisses=0; +int g_CacheHits=0; + +#if 0 // Added to allow cache misses and hits to be tracked, change this to 1 to restore unmodified version +#define spe_cache_read(ea) _spe_cache_lookup_xfer_wait_(ea, 0, 1) +#else +#define spe_cache_read(ea) \ +({ \ + int set, idx, line, byte; \ + _spe_cache_nway_lookup_(ea, set, idx); \ + \ + if (btUnlikely(idx < 0)) { \ + ++g_CacheMisses; \ + idx = _spe_cache_miss_(ea, set, -1); \ + spu_writech(22, SPE_CACHE_SET_TAGMASK(set)); \ + spu_mfcstat(MFC_TAG_UPDATE_ALL); \ + } \ + else \ + { \ + ++g_CacheHits; \ + } \ + line = _spe_cacheline_num_(set, idx); \ + byte = _spe_cacheline_byte_offset_(ea); \ + (void *) &spe_cache_mem[line + byte]; \ +}) + +#endif + +#endif // USE_SOFTWARE_CACHE + +bool gUseEpa = false; + +#ifdef USE_SN_TUNER +#include +#endif //USE_SN_TUNER + +#if defined (__SPU__) && !defined (USE_LIBSPE2) +#include +#elif defined (USE_LIBSPE2) +#define spu_printf(a) +#else +#define IGNORE_ALIGNMENT 1 +#include +#include +#define spu_printf printf + +#endif + +//int gNumConvexPoints0=0; + +///Make sure no destructors are called on this memory +struct CollisionTask_LocalStoreMemory +{ + ///This CollisionTask_LocalStoreMemory is mainly used for the SPU version, using explicit DMA + ///Other platforms can use other memory programming models. + + ATTRIBUTE_ALIGNED16(btBroadphasePair gBroadphasePairsBuffer[SPU_BATCHSIZE_BROADPHASE_PAIRS]); + DoubleBuffer g_workUnitTaskBuffers; + ATTRIBUTE_ALIGNED16(char gSpuContactManifoldAlgoBuffer [sizeof(SpuContactManifoldCollisionAlgorithm)+16]); + ATTRIBUTE_ALIGNED16(char gColObj0Buffer [sizeof(btCollisionObject)+16]); + ATTRIBUTE_ALIGNED16(char gColObj1Buffer [sizeof(btCollisionObject)+16]); + ///we reserve 32bit integer indices, even though they might be 16bit + ATTRIBUTE_ALIGNED16(int spuIndices[16]); + btPersistentManifold gPersistentManifoldBuffer; + CollisionShape_LocalStoreMemory gCollisionShapes[2]; + bvhMeshShape_LocalStoreMemory bvhShapeData; + SpuConvexPolyhedronVertexData convexVertexData[2]; + CompoundShape_LocalStoreMemory compoundShapeData[2]; + + ///The following pointers might either point into this local store memory, or to the original/other memory locations. + ///See SpuFakeDma for implementation of cellDmaSmallGetReadOnly. + btCollisionObject* m_lsColObj0Ptr; + btCollisionObject* m_lsColObj1Ptr; + btBroadphasePair* m_pairsPointer; + btPersistentManifold* m_lsManifoldPtr; + SpuContactManifoldCollisionAlgorithm* m_lsCollisionAlgorithmPtr; + + bool needsDmaPutContactManifoldAlgo; + + btCollisionObject* getColObj0() + { + return m_lsColObj0Ptr; + } + btCollisionObject* getColObj1() + { + return m_lsColObj1Ptr; + } + + + btBroadphasePair* getBroadphasePairPtr() + { + return m_pairsPointer; + } + + SpuContactManifoldCollisionAlgorithm* getlocalCollisionAlgorithm() + { + return m_lsCollisionAlgorithmPtr; + } + + btPersistentManifold* getContactManifoldPtr() + { + return m_lsManifoldPtr; + } +}; + + +#if defined(__CELLOS_LV2__) || defined(USE_LIBSPE2) + +ATTRIBUTE_ALIGNED16(CollisionTask_LocalStoreMemory gLocalStoreMemory); + +void* createCollisionLocalStoreMemory() +{ + return &gLocalStoreMemory; +} +#else +void* createCollisionLocalStoreMemory() +{ + return new CollisionTask_LocalStoreMemory; +} + +#endif + +void ProcessSpuConvexConvexCollision(SpuCollisionPairInput* wuInput, CollisionTask_LocalStoreMemory* lsMemPtr, SpuContactResult& spuContacts); + + +SIMD_FORCE_INLINE void small_cache_read(void* buffer, ppu_address_t ea, size_t size) +{ +#if USE_SOFTWARE_CACHE + // Check for alignment requirements. We need to make sure the entire request fits within one cache line, + // so the first and last bytes should fall on the same cache line + btAssert((ea & ~SPE_CACHELINE_MASK) == ((ea + size - 1) & ~SPE_CACHELINE_MASK)); + + void* ls = spe_cache_read(ea); + memcpy(buffer, ls, size); +#else + stallingUnalignedDmaSmallGet(buffer,ea,size); +#endif +} + +SIMD_FORCE_INLINE void small_cache_read_triple( void* ls0, ppu_address_t ea0, + void* ls1, ppu_address_t ea1, + void* ls2, ppu_address_t ea2, + size_t size) +{ + btAssert(size<16); + ATTRIBUTE_ALIGNED16(char tmpBuffer0[32]); + ATTRIBUTE_ALIGNED16(char tmpBuffer1[32]); + ATTRIBUTE_ALIGNED16(char tmpBuffer2[32]); + + uint32_t i; + + + ///make sure last 4 bits are the same, for cellDmaSmallGet + char* localStore0 = (char*)ls0; + uint32_t last4BitsOffset = ea0 & 0x0f; + char* tmpTarget0 = tmpBuffer0 + last4BitsOffset; +#ifdef __SPU__ + cellDmaSmallGet(tmpTarget0,ea0,size,DMA_TAG(1),0,0); +#else + tmpTarget0 = (char*)cellDmaSmallGetReadOnly(tmpTarget0,ea0,size,DMA_TAG(1),0,0); +#endif + + + char* localStore1 = (char*)ls1; + last4BitsOffset = ea1 & 0x0f; + char* tmpTarget1 = tmpBuffer1 + last4BitsOffset; +#ifdef __SPU__ + cellDmaSmallGet(tmpTarget1,ea1,size,DMA_TAG(1),0,0); +#else + tmpTarget1 = (char*)cellDmaSmallGetReadOnly(tmpTarget1,ea1,size,DMA_TAG(1),0,0); +#endif + + char* localStore2 = (char*)ls2; + last4BitsOffset = ea2 & 0x0f; + char* tmpTarget2 = tmpBuffer2 + last4BitsOffset; +#ifdef __SPU__ + cellDmaSmallGet(tmpTarget2,ea2,size,DMA_TAG(1),0,0); +#else + tmpTarget2 = (char*)cellDmaSmallGetReadOnly(tmpTarget2,ea2,size,DMA_TAG(1),0,0); +#endif + + + cellDmaWaitTagStatusAll( DMA_MASK(1) ); + + //this is slowish, perhaps memcpy on SPU is smarter? + for (i=0; btLikely( ibvhShapeData.gIndexMesh.m_indexType == PHY_SHORT) + { + unsigned short int* indexBasePtr = (unsigned short int*)(m_lsMemPtr->bvhShapeData.gIndexMesh.m_triangleIndexBase+triangleIndex*m_lsMemPtr->bvhShapeData.gIndexMesh.m_triangleIndexStride); + ATTRIBUTE_ALIGNED16(unsigned short int tmpIndices[3]); + + small_cache_read_triple(&tmpIndices[0],(ppu_address_t)&indexBasePtr[0], + &tmpIndices[1],(ppu_address_t)&indexBasePtr[1], + &tmpIndices[2],(ppu_address_t)&indexBasePtr[2], + sizeof(unsigned short int)); + + m_lsMemPtr->spuIndices[0] = int(tmpIndices[0]); + m_lsMemPtr->spuIndices[1] = int(tmpIndices[1]); + m_lsMemPtr->spuIndices[2] = int(tmpIndices[2]); + } else + { + unsigned int* indexBasePtr = (unsigned int*)(m_lsMemPtr->bvhShapeData.gIndexMesh.m_triangleIndexBase+triangleIndex*m_lsMemPtr->bvhShapeData.gIndexMesh.m_triangleIndexStride); + + small_cache_read_triple(&m_lsMemPtr->spuIndices[0],(ppu_address_t)&indexBasePtr[0], + &m_lsMemPtr->spuIndices[1],(ppu_address_t)&indexBasePtr[1], + &m_lsMemPtr->spuIndices[2],(ppu_address_t)&indexBasePtr[2], + sizeof(int)); + } + + // spu_printf("SPU index0=%d ,",spuIndices[0]); + // spu_printf("SPU index1=%d ,",spuIndices[1]); + // spu_printf("SPU index2=%d ,",spuIndices[2]); + // spu_printf("SPU: indexBasePtr=%llx\n",indexBasePtr); + + const btVector3& meshScaling = m_lsMemPtr->bvhShapeData.gTriangleMeshInterfacePtr->getScaling(); + for (int j=2;btLikely( j>=0 );j--) + { + int graphicsindex = m_lsMemPtr->spuIndices[j]; + + // spu_printf("SPU index=%d ,",graphicsindex); + btScalar* graphicsbasePtr = (btScalar*)(m_lsMemPtr->bvhShapeData.gIndexMesh.m_vertexBase+graphicsindex*m_lsMemPtr->bvhShapeData.gIndexMesh.m_vertexStride); + // spu_printf("SPU graphicsbasePtr=%llx\n",graphicsbasePtr); + + + ///handle un-aligned vertices... + + //another DMA for each vertex + small_cache_read_triple(&spuUnscaledVertex[0],(ppu_address_t)&graphicsbasePtr[0], + &spuUnscaledVertex[1],(ppu_address_t)&graphicsbasePtr[1], + &spuUnscaledVertex[2],(ppu_address_t)&graphicsbasePtr[2], + sizeof(btScalar)); + + m_tmpTriangleShape.getVertexPtr(j).setValue(spuUnscaledVertex[0]*meshScaling.getX(), + spuUnscaledVertex[1]*meshScaling.getY(), + spuUnscaledVertex[2]*meshScaling.getZ()); + + // spu_printf("SPU:triangle vertices:%f,%f,%f\n",spuTriangleVertices[j].x(),spuTriangleVertices[j].y(),spuTriangleVertices[j].z()); + } + + + SpuCollisionPairInput triangleConcaveInput(*m_wuInput); +// triangleConcaveInput.m_spuCollisionShapes[1] = &spuTriangleVertices[0]; + triangleConcaveInput.m_spuCollisionShapes[1] = &m_tmpTriangleShape; + triangleConcaveInput.m_shapeType1 = TRIANGLE_SHAPE_PROXYTYPE; + + m_spuContacts.setShapeIdentifiersB(subPart,triangleIndex); + + // m_spuContacts.flush(); + + ProcessSpuConvexConvexCollision(&triangleConcaveInput, m_lsMemPtr,m_spuContacts); + ///this flush should be automatic + // m_spuContacts.flush(); + } + +}; + + + +void btConvexPlaneCollideSingleContact (SpuCollisionPairInput* wuInput,CollisionTask_LocalStoreMemory* lsMemPtr,SpuContactResult& spuContacts) +{ + + btConvexShape* convexShape = (btConvexShape*) wuInput->m_spuCollisionShapes[0]; + btStaticPlaneShape* planeShape = (btStaticPlaneShape*) wuInput->m_spuCollisionShapes[1]; + + bool hasCollision = false; + const btVector3& planeNormal = planeShape->getPlaneNormal(); + const btScalar& planeConstant = planeShape->getPlaneConstant(); + + + btTransform convexWorldTransform = wuInput->m_worldTransform0; + btTransform convexInPlaneTrans; + convexInPlaneTrans= wuInput->m_worldTransform1.inverse() * convexWorldTransform; + btTransform planeInConvex; + planeInConvex= convexWorldTransform.inverse() * wuInput->m_worldTransform1; + + //btVector3 vtx = convexShape->localGetSupportVertexWithoutMarginNonVirtual(planeInConvex.getBasis()*-planeNormal); + btVector3 vtx = convexShape->localGetSupportVertexNonVirtual(planeInConvex.getBasis()*-planeNormal); + + btVector3 vtxInPlane = convexInPlaneTrans(vtx); + btScalar distance = (planeNormal.dot(vtxInPlane) - planeConstant); + + btVector3 vtxInPlaneProjected = vtxInPlane - distance*planeNormal; + btVector3 vtxInPlaneWorld = wuInput->m_worldTransform1 * vtxInPlaneProjected; + + hasCollision = distance < lsMemPtr->getContactManifoldPtr()->getContactBreakingThreshold(); + //resultOut->setPersistentManifold(m_manifoldPtr); + if (hasCollision) + { + /// report a contact. internally this will be kept persistent, and contact reduction is done + btVector3 normalOnSurfaceB =wuInput->m_worldTransform1.getBasis() * planeNormal; + btVector3 pOnB = vtxInPlaneWorld; + spuContacts.addContactPoint(normalOnSurfaceB,pOnB,distance); + } +} + +void ProcessConvexPlaneSpuCollision(SpuCollisionPairInput* wuInput, CollisionTask_LocalStoreMemory* lsMemPtr, SpuContactResult& spuContacts) +{ + + register int dmaSize = 0; + register ppu_address_t dmaPpuAddress2; + btPersistentManifold* manifold = (btPersistentManifold*)wuInput->m_persistentManifoldPtr; + + ///DMA in the vertices for convex shapes + ATTRIBUTE_ALIGNED16(char convexHullShape0[sizeof(btConvexHullShape)]); + ATTRIBUTE_ALIGNED16(char convexHullShape1[sizeof(btConvexHullShape)]); + + if ( btLikely( wuInput->m_shapeType0== CONVEX_HULL_SHAPE_PROXYTYPE ) ) + { + // spu_printf("SPU: DMA btConvexHullShape\n"); + + dmaSize = sizeof(btConvexHullShape); + dmaPpuAddress2 = wuInput->m_collisionShapes[0]; + + cellDmaGet(&convexHullShape0, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); + //cellDmaWaitTagStatusAll(DMA_MASK(1)); + } + + if ( btLikely( wuInput->m_shapeType1 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) + { + // spu_printf("SPU: DMA btConvexHullShape\n"); + dmaSize = sizeof(btConvexHullShape); + dmaPpuAddress2 = wuInput->m_collisionShapes[1]; + cellDmaGet(&convexHullShape1, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); + //cellDmaWaitTagStatusAll(DMA_MASK(1)); + } + + if ( btLikely( wuInput->m_shapeType0 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) + { + cellDmaWaitTagStatusAll(DMA_MASK(1)); + dmaConvexVertexData (&lsMemPtr->convexVertexData[0], (btConvexHullShape*)&convexHullShape0); + lsMemPtr->convexVertexData[0].gSpuConvexShapePtr = wuInput->m_spuCollisionShapes[0]; + } + + + if ( btLikely( wuInput->m_shapeType1 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) + { + cellDmaWaitTagStatusAll(DMA_MASK(1)); + dmaConvexVertexData (&lsMemPtr->convexVertexData[1], (btConvexHullShape*)&convexHullShape1); + lsMemPtr->convexVertexData[1].gSpuConvexShapePtr = wuInput->m_spuCollisionShapes[1]; + } + + + btConvexPointCloudShape cpc0,cpc1; + + if ( btLikely( wuInput->m_shapeType0 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) + { + cellDmaWaitTagStatusAll(DMA_MASK(2)); + lsMemPtr->convexVertexData[0].gConvexPoints = &lsMemPtr->convexVertexData[0].g_convexPointBuffer[0]; + btConvexHullShape* ch = (btConvexHullShape*)wuInput->m_spuCollisionShapes[0]; + const btVector3& localScaling = ch->getLocalScalingNV(); + cpc0.setPoints(lsMemPtr->convexVertexData[0].gConvexPoints,lsMemPtr->convexVertexData[0].gNumConvexPoints,false,localScaling); + wuInput->m_spuCollisionShapes[0] = &cpc0; + } + + if ( btLikely( wuInput->m_shapeType1 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) + { + cellDmaWaitTagStatusAll(DMA_MASK(2)); + lsMemPtr->convexVertexData[1].gConvexPoints = &lsMemPtr->convexVertexData[1].g_convexPointBuffer[0]; + btConvexHullShape* ch = (btConvexHullShape*)wuInput->m_spuCollisionShapes[1]; + const btVector3& localScaling = ch->getLocalScalingNV(); + cpc1.setPoints(lsMemPtr->convexVertexData[1].gConvexPoints,lsMemPtr->convexVertexData[1].gNumConvexPoints,false,localScaling); + wuInput->m_spuCollisionShapes[1] = &cpc1; + + } + + +// const btConvexShape* shape0Ptr = (const btConvexShape*)wuInput->m_spuCollisionShapes[0]; +// const btConvexShape* shape1Ptr = (const btConvexShape*)wuInput->m_spuCollisionShapes[1]; +// int shapeType0 = wuInput->m_shapeType0; +// int shapeType1 = wuInput->m_shapeType1; + float marginA = wuInput->m_collisionMargin0; + float marginB = wuInput->m_collisionMargin1; + + SpuClosestPointInput cpInput; + cpInput.m_convexVertexData[0] = &lsMemPtr->convexVertexData[0]; + cpInput.m_convexVertexData[1] = &lsMemPtr->convexVertexData[1]; + cpInput.m_transformA = wuInput->m_worldTransform0; + cpInput.m_transformB = wuInput->m_worldTransform1; + float sumMargin = (marginA+marginB+lsMemPtr->getContactManifoldPtr()->getContactBreakingThreshold()); + cpInput.m_maximumDistanceSquared = sumMargin * sumMargin; + + ppu_address_t manifoldAddress = (ppu_address_t)manifold; + + btPersistentManifold* spuManifold=lsMemPtr->getContactManifoldPtr(); + //spuContacts.setContactInfo(spuManifold,manifoldAddress,wuInput->m_worldTransform0,wuInput->m_worldTransform1,wuInput->m_isSwapped); + spuContacts.setContactInfo(spuManifold,manifoldAddress,lsMemPtr->getColObj0()->getWorldTransform(), + lsMemPtr->getColObj1()->getWorldTransform(), + lsMemPtr->getColObj0()->getRestitution(),lsMemPtr->getColObj1()->getRestitution(), + lsMemPtr->getColObj0()->getFriction(),lsMemPtr->getColObj1()->getFriction(), + wuInput->m_isSwapped); + + + btConvexPlaneCollideSingleContact(wuInput,lsMemPtr,spuContacts); + + + + +} + + + + +//////////////////////// +/// Convex versus Concave triangle mesh collision detection (handles concave triangle mesh versus sphere, box, cylinder, triangle, cone, convex polyhedron etc) +/////////////////// +void ProcessConvexConcaveSpuCollision(SpuCollisionPairInput* wuInput, CollisionTask_LocalStoreMemory* lsMemPtr, SpuContactResult& spuContacts) +{ + //order: first collision shape is convex, second concave. m_isSwapped is true, if the original order was opposite + + btBvhTriangleMeshShape* trimeshShape = (btBvhTriangleMeshShape*)wuInput->m_spuCollisionShapes[1]; + //need the mesh interface, for access to triangle vertices + dmaBvhShapeData (&lsMemPtr->bvhShapeData, trimeshShape); + + btVector3 aabbMin(-1,-400,-1); + btVector3 aabbMax(1,400,1); + + + //recalc aabbs + btTransform convexInTriangleSpace; + convexInTriangleSpace = wuInput->m_worldTransform1.inverse() * wuInput->m_worldTransform0; + btConvexInternalShape* convexShape = (btConvexInternalShape*)wuInput->m_spuCollisionShapes[0]; + + computeAabb (aabbMin, aabbMax, convexShape, wuInput->m_collisionShapes[0], wuInput->m_shapeType0, convexInTriangleSpace); + + + //CollisionShape* triangleShape = static_cast(triBody->m_collisionShape); + //convexShape->getAabb(convexInTriangleSpace,m_aabbMin,m_aabbMax); + + // btScalar extraMargin = collisionMarginTriangle; + // btVector3 extra(extraMargin,extraMargin,extraMargin); + // aabbMax += extra; + // aabbMin -= extra; + + ///quantize query AABB + unsigned short int quantizedQueryAabbMin[3]; + unsigned short int quantizedQueryAabbMax[3]; + lsMemPtr->bvhShapeData.getOptimizedBvh()->quantizeWithClamp(quantizedQueryAabbMin,aabbMin,0); + lsMemPtr->bvhShapeData.getOptimizedBvh()->quantizeWithClamp(quantizedQueryAabbMax,aabbMax,1); + + QuantizedNodeArray& nodeArray = lsMemPtr->bvhShapeData.getOptimizedBvh()->getQuantizedNodeArray(); + //spu_printf("SPU: numNodes = %d\n",nodeArray.size()); + + BvhSubtreeInfoArray& subTrees = lsMemPtr->bvhShapeData.getOptimizedBvh()->getSubtreeInfoArray(); + + + spuNodeCallback nodeCallback(wuInput,lsMemPtr,spuContacts); + IndexedMeshArray& indexArray = lsMemPtr->bvhShapeData.gTriangleMeshInterfacePtr->getIndexedMeshArray(); + //spu_printf("SPU:indexArray.size() = %d\n",indexArray.size()); + + // spu_printf("SPU: numSubTrees = %d\n",subTrees.size()); + //not likely to happen + if (subTrees.size() && indexArray.size() == 1) + { + ///DMA in the index info + dmaBvhIndexedMesh (&lsMemPtr->bvhShapeData.gIndexMesh, indexArray, 0 /* index into indexArray */, 1 /* dmaTag */); + cellDmaWaitTagStatusAll(DMA_MASK(1)); + + //display the headers + int numBatch = subTrees.size(); + for (int i=0;ibvhShapeData.gSubtreeHeaders[0], (ppu_address_t)(&subTrees[i]), nextBatch, 1); + cellDmaWaitTagStatusAll(DMA_MASK(1)); + + + // spu_printf("nextBatch = %d\n",nextBatch); + + for (int j=0;jbvhShapeData.gSubtreeHeaders[j]; + + unsigned int overlap = spuTestQuantizedAabbAgainstQuantizedAabb(quantizedQueryAabbMin,quantizedQueryAabbMax,subtree.m_quantizedAabbMin,subtree.m_quantizedAabbMax); + if (overlap) + { + btAssert(subtree.m_subtreeSize); + + //dma the actual nodes of this subtree + dmaBvhSubTreeNodes (&lsMemPtr->bvhShapeData.gSubtreeNodes[0], subtree, nodeArray, 2); + cellDmaWaitTagStatusAll(DMA_MASK(2)); + + /* Walk this subtree */ + spuWalkStacklessQuantizedTree(&nodeCallback,quantizedQueryAabbMin,quantizedQueryAabbMax, + &lsMemPtr->bvhShapeData.gSubtreeNodes[0], + 0, + subtree.m_subtreeSize); + } + // spu_printf("subtreeSize = %d\n",gSubtreeHeaders[j].m_subtreeSize); + } + + // unsigned short int m_quantizedAabbMin[3]; + // unsigned short int m_quantizedAabbMax[3]; + // int m_rootNodeIndex; + // int m_subtreeSize; + i+=nextBatch; + } + + //pre-fetch first tree, then loop and double buffer + } + +} + + +int stats[11]={0,0,0,0,0,0,0,0,0,0,0}; +int degenerateStats[11]={0,0,0,0,0,0,0,0,0,0,0}; + + +//////////////////////// +/// Convex versus Convex collision detection (handles collision between sphere, box, cylinder, triangle, cone, convex polyhedron etc) +/////////////////// +void ProcessSpuConvexConvexCollision(SpuCollisionPairInput* wuInput, CollisionTask_LocalStoreMemory* lsMemPtr, SpuContactResult& spuContacts) +{ + register int dmaSize; + register ppu_address_t dmaPpuAddress2; + +#ifdef DEBUG_SPU_COLLISION_DETECTION + //spu_printf("SPU: ProcessSpuConvexConvexCollision\n"); +#endif //DEBUG_SPU_COLLISION_DETECTION + //CollisionShape* shape0 = (CollisionShape*)wuInput->m_collisionShapes[0]; + //CollisionShape* shape1 = (CollisionShape*)wuInput->m_collisionShapes[1]; + btPersistentManifold* manifold = (btPersistentManifold*)wuInput->m_persistentManifoldPtr; + + bool genericGjk = true; + + if (genericGjk) + { + //try generic GJK + + + + //SpuConvexPenetrationDepthSolver* penetrationSolver=0; + btVoronoiSimplexSolver simplexSolver; + btGjkEpaPenetrationDepthSolver epaPenetrationSolver2; + + btConvexPenetrationDepthSolver* penetrationSolver = &epaPenetrationSolver2; + + //SpuMinkowskiPenetrationDepthSolver minkowskiPenetrationSolver; +#ifdef ENABLE_EPA + if (gUseEpa) + { + penetrationSolver = &epaPenetrationSolver2; + } else +#endif + { + //penetrationSolver = &minkowskiPenetrationSolver; + } + + + ///DMA in the vertices for convex shapes + ATTRIBUTE_ALIGNED16(char convexHullShape0[sizeof(btConvexHullShape)]); + ATTRIBUTE_ALIGNED16(char convexHullShape1[sizeof(btConvexHullShape)]); + + if ( btLikely( wuInput->m_shapeType0== CONVEX_HULL_SHAPE_PROXYTYPE ) ) + { + // spu_printf("SPU: DMA btConvexHullShape\n"); + + dmaSize = sizeof(btConvexHullShape); + dmaPpuAddress2 = wuInput->m_collisionShapes[0]; + + cellDmaGet(&convexHullShape0, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); + //cellDmaWaitTagStatusAll(DMA_MASK(1)); + } + + if ( btLikely( wuInput->m_shapeType1 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) + { + // spu_printf("SPU: DMA btConvexHullShape\n"); + dmaSize = sizeof(btConvexHullShape); + dmaPpuAddress2 = wuInput->m_collisionShapes[1]; + cellDmaGet(&convexHullShape1, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); + //cellDmaWaitTagStatusAll(DMA_MASK(1)); + } + + if ( btLikely( wuInput->m_shapeType0 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) + { + cellDmaWaitTagStatusAll(DMA_MASK(1)); + dmaConvexVertexData (&lsMemPtr->convexVertexData[0], (btConvexHullShape*)&convexHullShape0); + lsMemPtr->convexVertexData[0].gSpuConvexShapePtr = wuInput->m_spuCollisionShapes[0]; + } + + + if ( btLikely( wuInput->m_shapeType1 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) + { + cellDmaWaitTagStatusAll(DMA_MASK(1)); + dmaConvexVertexData (&lsMemPtr->convexVertexData[1], (btConvexHullShape*)&convexHullShape1); + lsMemPtr->convexVertexData[1].gSpuConvexShapePtr = wuInput->m_spuCollisionShapes[1]; + } + + + btConvexPointCloudShape cpc0,cpc1; + + if ( btLikely( wuInput->m_shapeType0 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) + { + cellDmaWaitTagStatusAll(DMA_MASK(2)); + lsMemPtr->convexVertexData[0].gConvexPoints = &lsMemPtr->convexVertexData[0].g_convexPointBuffer[0]; + btConvexHullShape* ch = (btConvexHullShape*)wuInput->m_spuCollisionShapes[0]; + const btVector3& localScaling = ch->getLocalScalingNV(); + cpc0.setPoints(lsMemPtr->convexVertexData[0].gConvexPoints,lsMemPtr->convexVertexData[0].gNumConvexPoints,false,localScaling); + wuInput->m_spuCollisionShapes[0] = &cpc0; + } + + if ( btLikely( wuInput->m_shapeType1 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) + { + cellDmaWaitTagStatusAll(DMA_MASK(2)); + lsMemPtr->convexVertexData[1].gConvexPoints = &lsMemPtr->convexVertexData[1].g_convexPointBuffer[0]; + btConvexHullShape* ch = (btConvexHullShape*)wuInput->m_spuCollisionShapes[1]; + const btVector3& localScaling = ch->getLocalScalingNV(); + cpc1.setPoints(lsMemPtr->convexVertexData[1].gConvexPoints,lsMemPtr->convexVertexData[1].gNumConvexPoints,false,localScaling); + wuInput->m_spuCollisionShapes[1] = &cpc1; + + } + + + const btConvexShape* shape0Ptr = (const btConvexShape*)wuInput->m_spuCollisionShapes[0]; + const btConvexShape* shape1Ptr = (const btConvexShape*)wuInput->m_spuCollisionShapes[1]; + int shapeType0 = wuInput->m_shapeType0; + int shapeType1 = wuInput->m_shapeType1; + float marginA = wuInput->m_collisionMargin0; + float marginB = wuInput->m_collisionMargin1; + + SpuClosestPointInput cpInput; + cpInput.m_convexVertexData[0] = &lsMemPtr->convexVertexData[0]; + cpInput.m_convexVertexData[1] = &lsMemPtr->convexVertexData[1]; + cpInput.m_transformA = wuInput->m_worldTransform0; + cpInput.m_transformB = wuInput->m_worldTransform1; + float sumMargin = (marginA+marginB+lsMemPtr->getContactManifoldPtr()->getContactBreakingThreshold()); + cpInput.m_maximumDistanceSquared = sumMargin * sumMargin; + + ppu_address_t manifoldAddress = (ppu_address_t)manifold; + + btPersistentManifold* spuManifold=lsMemPtr->getContactManifoldPtr(); + //spuContacts.setContactInfo(spuManifold,manifoldAddress,wuInput->m_worldTransform0,wuInput->m_worldTransform1,wuInput->m_isSwapped); + spuContacts.setContactInfo(spuManifold,manifoldAddress,lsMemPtr->getColObj0()->getWorldTransform(), + lsMemPtr->getColObj1()->getWorldTransform(), + lsMemPtr->getColObj0()->getRestitution(),lsMemPtr->getColObj1()->getRestitution(), + lsMemPtr->getColObj0()->getFriction(),lsMemPtr->getColObj1()->getFriction(), + wuInput->m_isSwapped); + + { + btGjkPairDetector gjk(shape0Ptr,shape1Ptr,shapeType0,shapeType1,marginA,marginB,&simplexSolver,penetrationSolver);//&vsSolver,penetrationSolver); + gjk.getClosestPoints(cpInput,spuContacts,0);//,debugDraw); + + stats[gjk.m_lastUsedMethod]++; + degenerateStats[gjk.m_degenerateSimplex]++; + +#ifdef USE_SEPDISTANCE_UTIL + btScalar sepDist = gjk.getCachedSeparatingDistance()+spuManifold->getContactBreakingThreshold(); + lsMemPtr->getlocalCollisionAlgorithm()->m_sepDistance.initSeparatingDistance(gjk.getCachedSeparatingAxis(),sepDist,wuInput->m_worldTransform0,wuInput->m_worldTransform1); + lsMemPtr->needsDmaPutContactManifoldAlgo = true; +#endif //USE_SEPDISTANCE_UTIL + + } + + } + + +} + + +template void DoSwap(T& a, T& b) +{ + char tmp[sizeof(T)]; + memcpy(tmp, &a, sizeof(T)); + memcpy(&a, &b, sizeof(T)); + memcpy(&b, tmp, sizeof(T)); +} + +SIMD_FORCE_INLINE void dmaAndSetupCollisionObjects(SpuCollisionPairInput& collisionPairInput, CollisionTask_LocalStoreMemory& lsMem) +{ + register int dmaSize; + register ppu_address_t dmaPpuAddress2; + + dmaSize = sizeof(btCollisionObject);//btTransform); + dmaPpuAddress2 = /*collisionPairInput.m_isSwapped ? (ppu_address_t)lsMem.gProxyPtr1->m_clientObject :*/ (ppu_address_t)lsMem.getlocalCollisionAlgorithm()->getCollisionObject0(); + lsMem.m_lsColObj0Ptr = (btCollisionObject*)cellDmaGetReadOnly(&lsMem.gColObj0Buffer, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); + + dmaSize = sizeof(btCollisionObject);//btTransform); + dmaPpuAddress2 = /*collisionPairInput.m_isSwapped ? (ppu_address_t)lsMem.gProxyPtr0->m_clientObject :*/ (ppu_address_t)lsMem.getlocalCollisionAlgorithm()->getCollisionObject1(); + lsMem.m_lsColObj1Ptr = (btCollisionObject*)cellDmaGetReadOnly(&lsMem.gColObj1Buffer, dmaPpuAddress2 , dmaSize, DMA_TAG(2), 0, 0); + + cellDmaWaitTagStatusAll(DMA_MASK(1) | DMA_MASK(2)); + + btCollisionObject* ob0 = lsMem.getColObj0(); + btCollisionObject* ob1 = lsMem.getColObj1(); + + collisionPairInput.m_worldTransform0 = ob0->getWorldTransform(); + collisionPairInput.m_worldTransform1 = ob1->getWorldTransform(); +} + + + +void handleCollisionPair(SpuCollisionPairInput& collisionPairInput, CollisionTask_LocalStoreMemory& lsMem, + SpuContactResult &spuContacts, + ppu_address_t collisionShape0Ptr, void* collisionShape0Loc, + ppu_address_t collisionShape1Ptr, void* collisionShape1Loc, bool dmaShapes = true) +{ + + if (btBroadphaseProxy::isConvex(collisionPairInput.m_shapeType0) + && btBroadphaseProxy::isConvex(collisionPairInput.m_shapeType1)) + { + if (dmaShapes) + { + dmaCollisionShape (collisionShape0Loc, collisionShape0Ptr, 1, collisionPairInput.m_shapeType0); + dmaCollisionShape (collisionShape1Loc, collisionShape1Ptr, 2, collisionPairInput.m_shapeType1); + cellDmaWaitTagStatusAll(DMA_MASK(1) | DMA_MASK(2)); + } + + btConvexInternalShape* spuConvexShape0 = (btConvexInternalShape*)collisionShape0Loc; + btConvexInternalShape* spuConvexShape1 = (btConvexInternalShape*)collisionShape1Loc; + + btVector3 dim0 = spuConvexShape0->getImplicitShapeDimensions(); + btVector3 dim1 = spuConvexShape1->getImplicitShapeDimensions(); + + collisionPairInput.m_primitiveDimensions0 = dim0; + collisionPairInput.m_primitiveDimensions1 = dim1; + collisionPairInput.m_collisionShapes[0] = collisionShape0Ptr; + collisionPairInput.m_collisionShapes[1] = collisionShape1Ptr; + collisionPairInput.m_spuCollisionShapes[0] = spuConvexShape0; + collisionPairInput.m_spuCollisionShapes[1] = spuConvexShape1; + ProcessSpuConvexConvexCollision(&collisionPairInput,&lsMem,spuContacts); + } + else if (btBroadphaseProxy::isCompound(collisionPairInput.m_shapeType0) && + btBroadphaseProxy::isCompound(collisionPairInput.m_shapeType1)) + { + //snPause(); + + dmaCollisionShape (collisionShape0Loc, collisionShape0Ptr, 1, collisionPairInput.m_shapeType0); + dmaCollisionShape (collisionShape1Loc, collisionShape1Ptr, 2, collisionPairInput.m_shapeType1); + cellDmaWaitTagStatusAll(DMA_MASK(1) | DMA_MASK(2)); + + // Both are compounds, do N^2 CD for now + ///@todo: add some AABB-based pruning (probably not -> slower) + + btCompoundShape* spuCompoundShape0 = (btCompoundShape*)collisionShape0Loc; + btCompoundShape* spuCompoundShape1 = (btCompoundShape*)collisionShape1Loc; + + dmaCompoundShapeInfo (&lsMem.compoundShapeData[0], spuCompoundShape0, 1); + dmaCompoundShapeInfo (&lsMem.compoundShapeData[1], spuCompoundShape1, 2); + cellDmaWaitTagStatusAll(DMA_MASK(1) | DMA_MASK(2)); + + + dmaCompoundSubShapes (&lsMem.compoundShapeData[0], spuCompoundShape0, 1); + cellDmaWaitTagStatusAll(DMA_MASK(1)); + dmaCompoundSubShapes (&lsMem.compoundShapeData[1], spuCompoundShape1, 1); + cellDmaWaitTagStatusAll(DMA_MASK(1)); + + int childShapeCount0 = spuCompoundShape0->getNumChildShapes(); + int childShapeCount1 = spuCompoundShape1->getNumChildShapes(); + + // Start the N^2 + for (int i = 0; i < childShapeCount0; ++i) + { + btCompoundShapeChild& childShape0 = lsMem.compoundShapeData[0].gSubshapes[i]; + btAssert(!btBroadphaseProxy::isCompound(childShape0.m_childShapeType)); + + for (int j = 0; j < childShapeCount1; ++j) + { + btCompoundShapeChild& childShape1 = lsMem.compoundShapeData[1].gSubshapes[j]; + btAssert(!btBroadphaseProxy::isCompound(childShape1.m_childShapeType)); + + + /* Create a new collision pair input struct using the two child shapes */ + SpuCollisionPairInput cinput (collisionPairInput); + + cinput.m_worldTransform0 = collisionPairInput.m_worldTransform0 * childShape0.m_transform; + cinput.m_shapeType0 = childShape0.m_childShapeType; + cinput.m_collisionMargin0 = childShape0.m_childMargin; + + cinput.m_worldTransform1 = collisionPairInput.m_worldTransform1 * childShape1.m_transform; + cinput.m_shapeType1 = childShape1.m_childShapeType; + cinput.m_collisionMargin1 = childShape1.m_childMargin; + /* Recursively call handleCollisionPair () with new collision pair input */ + + handleCollisionPair(cinput, lsMem, spuContacts, + (ppu_address_t)childShape0.m_childShape, lsMem.compoundShapeData[0].gSubshapeShape[i], + (ppu_address_t)childShape1.m_childShape, lsMem.compoundShapeData[1].gSubshapeShape[j], false); + } + } + } + else if (btBroadphaseProxy::isCompound(collisionPairInput.m_shapeType0) ) + { + //snPause(); + + dmaCollisionShape (collisionShape0Loc, collisionShape0Ptr, 1, collisionPairInput.m_shapeType0); + dmaCollisionShape (collisionShape1Loc, collisionShape1Ptr, 2, collisionPairInput.m_shapeType1); + cellDmaWaitTagStatusAll(DMA_MASK(1) | DMA_MASK(2)); + + // object 0 compound, object 1 non-compound + btCompoundShape* spuCompoundShape = (btCompoundShape*)collisionShape0Loc; + dmaCompoundShapeInfo (&lsMem.compoundShapeData[0], spuCompoundShape, 1); + cellDmaWaitTagStatusAll(DMA_MASK(1)); + + int childShapeCount = spuCompoundShape->getNumChildShapes(); + + for (int i = 0; i < childShapeCount; ++i) + { + btCompoundShapeChild& childShape = lsMem.compoundShapeData[0].gSubshapes[i]; + btAssert(!btBroadphaseProxy::isCompound(childShape.m_childShapeType)); + // Dma the child shape + dmaCollisionShape (&lsMem.compoundShapeData[0].gSubshapeShape[i], (ppu_address_t)childShape.m_childShape, 1, childShape.m_childShapeType); + cellDmaWaitTagStatusAll(DMA_MASK(1)); + + SpuCollisionPairInput cinput (collisionPairInput); + cinput.m_worldTransform0 = collisionPairInput.m_worldTransform0 * childShape.m_transform; + cinput.m_shapeType0 = childShape.m_childShapeType; + cinput.m_collisionMargin0 = childShape.m_childMargin; + + handleCollisionPair(cinput, lsMem, spuContacts, + (ppu_address_t)childShape.m_childShape, lsMem.compoundShapeData[0].gSubshapeShape[i], + collisionShape1Ptr, collisionShape1Loc, false); + } + } + else if (btBroadphaseProxy::isCompound(collisionPairInput.m_shapeType1) ) + { + //snPause(); + + dmaCollisionShape (collisionShape0Loc, collisionShape0Ptr, 1, collisionPairInput.m_shapeType0); + dmaCollisionShape (collisionShape1Loc, collisionShape1Ptr, 2, collisionPairInput.m_shapeType1); + cellDmaWaitTagStatusAll(DMA_MASK(1) | DMA_MASK(2)); + // object 0 non-compound, object 1 compound + btCompoundShape* spuCompoundShape = (btCompoundShape*)collisionShape1Loc; + dmaCompoundShapeInfo (&lsMem.compoundShapeData[0], spuCompoundShape, 1); + cellDmaWaitTagStatusAll(DMA_MASK(1)); + + int childShapeCount = spuCompoundShape->getNumChildShapes(); + + for (int i = 0; i < childShapeCount; ++i) + { + btCompoundShapeChild& childShape = lsMem.compoundShapeData[0].gSubshapes[i]; + btAssert(!btBroadphaseProxy::isCompound(childShape.m_childShapeType)); + // Dma the child shape + dmaCollisionShape (&lsMem.compoundShapeData[0].gSubshapeShape[i], (ppu_address_t)childShape.m_childShape, 1, childShape.m_childShapeType); + cellDmaWaitTagStatusAll(DMA_MASK(1)); + + SpuCollisionPairInput cinput (collisionPairInput); + cinput.m_worldTransform1 = collisionPairInput.m_worldTransform1 * childShape.m_transform; + cinput.m_shapeType1 = childShape.m_childShapeType; + cinput.m_collisionMargin1 = childShape.m_childMargin; + handleCollisionPair(cinput, lsMem, spuContacts, + collisionShape0Ptr, collisionShape0Loc, + (ppu_address_t)childShape.m_childShape, lsMem.compoundShapeData[0].gSubshapeShape[i], false); + } + + } + else + { + //a non-convex shape is involved + bool handleConvexConcave = false; + + //snPause(); + + if (btBroadphaseProxy::isConcave(collisionPairInput.m_shapeType0) && + btBroadphaseProxy::isConvex(collisionPairInput.m_shapeType1)) + { + // Swap stuff + DoSwap(collisionShape0Ptr, collisionShape1Ptr); + DoSwap(collisionShape0Loc, collisionShape1Loc); + DoSwap(collisionPairInput.m_shapeType0, collisionPairInput.m_shapeType1); + DoSwap(collisionPairInput.m_worldTransform0, collisionPairInput.m_worldTransform1); + DoSwap(collisionPairInput.m_collisionMargin0, collisionPairInput.m_collisionMargin1); + + collisionPairInput.m_isSwapped = true; + } + + if (btBroadphaseProxy::isConvex(collisionPairInput.m_shapeType0)&& + btBroadphaseProxy::isConcave(collisionPairInput.m_shapeType1)) + { + handleConvexConcave = true; + } + if (handleConvexConcave) + { + if (dmaShapes) + { + dmaCollisionShape (collisionShape0Loc, collisionShape0Ptr, 1, collisionPairInput.m_shapeType0); + dmaCollisionShape (collisionShape1Loc, collisionShape1Ptr, 2, collisionPairInput.m_shapeType1); + cellDmaWaitTagStatusAll(DMA_MASK(1) | DMA_MASK(2)); + } + + if (collisionPairInput.m_shapeType1 == STATIC_PLANE_PROXYTYPE) + { + btConvexInternalShape* spuConvexShape0 = (btConvexInternalShape*)collisionShape0Loc; + btStaticPlaneShape* planeShape= (btStaticPlaneShape*)collisionShape1Loc; + + btVector3 dim0 = spuConvexShape0->getImplicitShapeDimensions(); + collisionPairInput.m_primitiveDimensions0 = dim0; + collisionPairInput.m_collisionShapes[0] = collisionShape0Ptr; + collisionPairInput.m_collisionShapes[1] = collisionShape1Ptr; + collisionPairInput.m_spuCollisionShapes[0] = spuConvexShape0; + collisionPairInput.m_spuCollisionShapes[1] = planeShape; + + ProcessConvexPlaneSpuCollision(&collisionPairInput,&lsMem,spuContacts); + } else + { + btConvexInternalShape* spuConvexShape0 = (btConvexInternalShape*)collisionShape0Loc; + btBvhTriangleMeshShape* trimeshShape = (btBvhTriangleMeshShape*)collisionShape1Loc; + + btVector3 dim0 = spuConvexShape0->getImplicitShapeDimensions(); + collisionPairInput.m_primitiveDimensions0 = dim0; + collisionPairInput.m_collisionShapes[0] = collisionShape0Ptr; + collisionPairInput.m_collisionShapes[1] = collisionShape1Ptr; + collisionPairInput.m_spuCollisionShapes[0] = spuConvexShape0; + collisionPairInput.m_spuCollisionShapes[1] = trimeshShape; + + ProcessConvexConcaveSpuCollision(&collisionPairInput,&lsMem,spuContacts); + } + } + + } + + spuContacts.flush(); + +} + + +void processCollisionTask(void* userPtr, void* lsMemPtr) +{ + + SpuGatherAndProcessPairsTaskDesc* taskDescPtr = (SpuGatherAndProcessPairsTaskDesc*)userPtr; + SpuGatherAndProcessPairsTaskDesc& taskDesc = *taskDescPtr; + CollisionTask_LocalStoreMemory* colMemPtr = (CollisionTask_LocalStoreMemory*)lsMemPtr; + CollisionTask_LocalStoreMemory& lsMem = *(colMemPtr); + + gUseEpa = taskDesc.m_useEpa; + + // spu_printf("taskDescPtr=%llx\n",taskDescPtr); + + SpuContactResult spuContacts; + + //////////////////// + + ppu_address_t dmaInPtr = taskDesc.m_inPairPtr; + unsigned int numPages = taskDesc.numPages; + unsigned int numOnLastPage = taskDesc.numOnLastPage; + + // prefetch first set of inputs and wait + lsMem.g_workUnitTaskBuffers.init(); + + unsigned int nextNumOnPage = (numPages > 1)? MIDPHASE_NUM_WORKUNITS_PER_PAGE : numOnLastPage; + lsMem.g_workUnitTaskBuffers.backBufferDmaGet(dmaInPtr, nextNumOnPage*sizeof(SpuGatherAndProcessWorkUnitInput), DMA_TAG(3)); + dmaInPtr += MIDPHASE_WORKUNIT_PAGE_SIZE; + + + register unsigned char *inputPtr; + register unsigned int numOnPage; + register unsigned int j; + SpuGatherAndProcessWorkUnitInput* wuInputs; + register int dmaSize; + register ppu_address_t dmaPpuAddress; + register ppu_address_t dmaPpuAddress2; + + int numPairs; + register int p; + SpuCollisionPairInput collisionPairInput; + + for (unsigned int i = 0; btLikely(i < numPages); i++) + { + + // wait for back buffer dma and swap buffers + inputPtr = lsMem.g_workUnitTaskBuffers.swapBuffers(); + + // number on current page is number prefetched last iteration + numOnPage = nextNumOnPage; + + + // prefetch next set of inputs +#if MIDPHASE_NUM_WORKUNIT_PAGES > 2 + if ( btLikely( i < numPages-1 ) ) +#else + if ( btUnlikely( i < numPages-1 ) ) +#endif + { + nextNumOnPage = (i == numPages-2)? numOnLastPage : MIDPHASE_NUM_WORKUNITS_PER_PAGE; + lsMem.g_workUnitTaskBuffers.backBufferDmaGet(dmaInPtr, nextNumOnPage*sizeof(SpuGatherAndProcessWorkUnitInput), DMA_TAG(3)); + dmaInPtr += MIDPHASE_WORKUNIT_PAGE_SIZE; + } + + wuInputs = reinterpret_cast(inputPtr); + + + for (j = 0; btLikely( j < numOnPage ); j++) + { +#ifdef DEBUG_SPU_COLLISION_DETECTION + // printMidphaseInput(&wuInputs[j]); +#endif //DEBUG_SPU_COLLISION_DETECTION + + + numPairs = wuInputs[j].m_endIndex - wuInputs[j].m_startIndex; + + if ( btLikely( numPairs ) ) + { + dmaSize = numPairs*sizeof(btBroadphasePair); + dmaPpuAddress = wuInputs[j].m_pairArrayPtr+wuInputs[j].m_startIndex * sizeof(btBroadphasePair); + lsMem.m_pairsPointer = (btBroadphasePair*)cellDmaGetReadOnly(&lsMem.gBroadphasePairsBuffer, dmaPpuAddress , dmaSize, DMA_TAG(1), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(1)); + + + for (p=0;pm_userInfo = %d\n",pair.m_userInfo); + spu_printf("pair->m_algorithm = %d\n",pair.m_algorithm); + spu_printf("pair->m_pProxy0 = %d\n",pair.m_pProxy0); + spu_printf("pair->m_pProxy1 = %d\n",pair.m_pProxy1); +#endif //DEBUG_SPU_COLLISION_DETECTION + + if (pair.m_internalTmpValue == 2 && pair.m_algorithm && pair.m_pProxy0 && pair.m_pProxy1) + { + dmaSize = sizeof(SpuContactManifoldCollisionAlgorithm); + dmaPpuAddress2 = (ppu_address_t)pair.m_algorithm; + lsMem.m_lsCollisionAlgorithmPtr = (SpuContactManifoldCollisionAlgorithm*)cellDmaGetReadOnly(&lsMem.gSpuContactManifoldAlgoBuffer, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); + + cellDmaWaitTagStatusAll(DMA_MASK(1)); + + lsMem.needsDmaPutContactManifoldAlgo = false; + + collisionPairInput.m_persistentManifoldPtr = (ppu_address_t) lsMem.getlocalCollisionAlgorithm()->getContactManifoldPtr(); + collisionPairInput.m_isSwapped = false; + + if (1) + { + + ///can wait on the combined DMA_MASK, or dma on the same tag + + +#ifdef DEBUG_SPU_COLLISION_DETECTION + // spu_printf("SPU collisionPairInput->m_shapeType0 = %d\n",collisionPairInput->m_shapeType0); + // spu_printf("SPU collisionPairInput->m_shapeType1 = %d\n",collisionPairInput->m_shapeType1); +#endif //DEBUG_SPU_COLLISION_DETECTION + + + dmaSize = sizeof(btPersistentManifold); + + dmaPpuAddress2 = collisionPairInput.m_persistentManifoldPtr; + lsMem.m_lsManifoldPtr = (btPersistentManifold*)cellDmaGetReadOnly(&lsMem.gPersistentManifoldBuffer, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); + + collisionPairInput.m_shapeType0 = lsMem.getlocalCollisionAlgorithm()->getShapeType0(); + collisionPairInput.m_shapeType1 = lsMem.getlocalCollisionAlgorithm()->getShapeType1(); + collisionPairInput.m_collisionMargin0 = lsMem.getlocalCollisionAlgorithm()->getCollisionMargin0(); + collisionPairInput.m_collisionMargin1 = lsMem.getlocalCollisionAlgorithm()->getCollisionMargin1(); + + + + //??cellDmaWaitTagStatusAll(DMA_MASK(1)); + + + if (1) + { + //snPause(); + + // Get the collision objects + dmaAndSetupCollisionObjects(collisionPairInput, lsMem); + + if (lsMem.getColObj0()->isActive() || lsMem.getColObj1()->isActive()) + { + + lsMem.needsDmaPutContactManifoldAlgo = true; +#ifdef USE_SEPDISTANCE_UTIL + lsMem.getlocalCollisionAlgorithm()->m_sepDistance.updateSeparatingDistance(collisionPairInput.m_worldTransform0,collisionPairInput.m_worldTransform1); +#endif //USE_SEPDISTANCE_UTIL + +#define USE_DEDICATED_BOX_BOX 1 +#ifdef USE_DEDICATED_BOX_BOX + bool boxbox = ((lsMem.getlocalCollisionAlgorithm()->getShapeType0()==BOX_SHAPE_PROXYTYPE)&& + (lsMem.getlocalCollisionAlgorithm()->getShapeType1()==BOX_SHAPE_PROXYTYPE)); + if (boxbox) + { + //spu_printf("boxbox dist = %f\n",distance); + btPersistentManifold* spuManifold=lsMem.getContactManifoldPtr(); + btPersistentManifold* manifold = (btPersistentManifold*)collisionPairInput.m_persistentManifoldPtr; + ppu_address_t manifoldAddress = (ppu_address_t)manifold; + + spuContacts.setContactInfo(spuManifold,manifoldAddress,lsMem.getColObj0()->getWorldTransform(), + lsMem.getColObj1()->getWorldTransform(), + lsMem.getColObj0()->getRestitution(),lsMem.getColObj1()->getRestitution(), + lsMem.getColObj0()->getFriction(),lsMem.getColObj1()->getFriction(), + collisionPairInput.m_isSwapped); + + + //float distance=0.f; + btVector3 normalInB; + + + if (//!gUseEpa && +#ifdef USE_SEPDISTANCE_UTIL + lsMem.getlocalCollisionAlgorithm()->m_sepDistance.getConservativeSeparatingDistance()<=0.f +#else + 1 +#endif + ) + { +//#define USE_PE_BOX_BOX 1 +#ifdef USE_PE_BOX_BOX + { + + //getCollisionMargin0 + btScalar margin0 = lsMem.getlocalCollisionAlgorithm()->getCollisionMargin0(); + btScalar margin1 = lsMem.getlocalCollisionAlgorithm()->getCollisionMargin1(); + btVector3 shapeDim0 = lsMem.getlocalCollisionAlgorithm()->getShapeDimensions0()+btVector3(margin0,margin0,margin0); + btVector3 shapeDim1 = lsMem.getlocalCollisionAlgorithm()->getShapeDimensions1()+btVector3(margin1,margin1,margin1); + + Box boxA(shapeDim0.getX(),shapeDim0.getY(),shapeDim0.getZ()); + Vector3 vmPos0 = getVmVector3(collisionPairInput.m_worldTransform0.getOrigin()); + Vector3 vmPos1 = getVmVector3(collisionPairInput.m_worldTransform1.getOrigin()); + Matrix3 vmMatrix0 = getVmMatrix3(collisionPairInput.m_worldTransform0.getBasis()); + Matrix3 vmMatrix1 = getVmMatrix3(collisionPairInput.m_worldTransform1.getBasis()); + + Transform3 transformA(vmMatrix0,vmPos0); + Box boxB(shapeDim1.getX(),shapeDim1.getY(),shapeDim1.getZ()); + Transform3 transformB(vmMatrix1,vmPos1); + BoxPoint resultClosestBoxPointA; + BoxPoint resultClosestBoxPointB; + Vector3 resultNormal; +#ifdef USE_SEPDISTANCE_UTIL + float distanceThreshold = FLT_MAX +#else + float distanceThreshold = 0.f; +#endif + + + distance = boxBoxDistance(resultNormal,resultClosestBoxPointA,resultClosestBoxPointB, boxA, transformA, boxB,transformB,distanceThreshold); + + normalInB = -getBtVector3(resultNormal); + + if(distance < spuManifold->getContactBreakingThreshold()) + { + btVector3 pointOnB = collisionPairInput.m_worldTransform1(getBtVector3(resultClosestBoxPointB.localPoint)); + + spuContacts.addContactPoint( + normalInB, + pointOnB, + distance); + } + } +#else + { + + btScalar margin0 = lsMem.getlocalCollisionAlgorithm()->getCollisionMargin0(); + btScalar margin1 = lsMem.getlocalCollisionAlgorithm()->getCollisionMargin1(); + btVector3 shapeDim0 = lsMem.getlocalCollisionAlgorithm()->getShapeDimensions0()+btVector3(margin0,margin0,margin0); + btVector3 shapeDim1 = lsMem.getlocalCollisionAlgorithm()->getShapeDimensions1()+btVector3(margin1,margin1,margin1); + + + btBoxShape box0(shapeDim0); + btBoxShape box1(shapeDim1); + + struct SpuBridgeContactCollector : public btDiscreteCollisionDetectorInterface::Result + { + SpuContactResult& m_spuContacts; + + virtual void setShapeIdentifiersA(int partId0,int index0) + { + m_spuContacts.setShapeIdentifiersA(partId0,index0); + } + virtual void setShapeIdentifiersB(int partId1,int index1) + { + m_spuContacts.setShapeIdentifiersB(partId1,index1); + } + virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth) + { + m_spuContacts.addContactPoint(normalOnBInWorld,pointInWorld,depth); + } + + SpuBridgeContactCollector(SpuContactResult& spuContacts) + :m_spuContacts(spuContacts) + { + + } + }; + + SpuBridgeContactCollector bridgeOutput(spuContacts); + + btDiscreteCollisionDetectorInterface::ClosestPointInput input; + input.m_maximumDistanceSquared = BT_LARGE_FLOAT; + input.m_transformA = collisionPairInput.m_worldTransform0; + input.m_transformB = collisionPairInput.m_worldTransform1; + + btBoxBoxDetector detector(&box0,&box1); + + detector.getClosestPoints(input,bridgeOutput,0); + + } +#endif //USE_PE_BOX_BOX + + lsMem.needsDmaPutContactManifoldAlgo = true; +#ifdef USE_SEPDISTANCE_UTIL + btScalar sepDist2 = distance+spuManifold->getContactBreakingThreshold(); + lsMem.getlocalCollisionAlgorithm()->m_sepDistance.initSeparatingDistance(normalInB,sepDist2,collisionPairInput.m_worldTransform0,collisionPairInput.m_worldTransform1); +#endif //USE_SEPDISTANCE_UTIL + gProcessedCol++; + } else + { + gSkippedCol++; + } + + spuContacts.flush(); + + + } else +#endif //USE_DEDICATED_BOX_BOX + { + if ( +#ifdef USE_SEPDISTANCE_UTIL + lsMem.getlocalCollisionAlgorithm()->m_sepDistance.getConservativeSeparatingDistance()<=0.f +#else + 1 +#endif //USE_SEPDISTANCE_UTIL + ) + { + handleCollisionPair(collisionPairInput, lsMem, spuContacts, + (ppu_address_t)lsMem.getColObj0()->getRootCollisionShape(), &lsMem.gCollisionShapes[0].collisionShape, + (ppu_address_t)lsMem.getColObj1()->getRootCollisionShape(), &lsMem.gCollisionShapes[1].collisionShape); + } else + { + //spu_printf("boxbox dist = %f\n",distance); + btPersistentManifold* spuManifold=lsMem.getContactManifoldPtr(); + btPersistentManifold* manifold = (btPersistentManifold*)collisionPairInput.m_persistentManifoldPtr; + ppu_address_t manifoldAddress = (ppu_address_t)manifold; + + spuContacts.setContactInfo(spuManifold,manifoldAddress,lsMem.getColObj0()->getWorldTransform(), + lsMem.getColObj1()->getWorldTransform(), + lsMem.getColObj0()->getRestitution(),lsMem.getColObj1()->getRestitution(), + lsMem.getColObj0()->getFriction(),lsMem.getColObj1()->getFriction(), + collisionPairInput.m_isSwapped); + + spuContacts.flush(); + } + } + + } + + } + } + +#ifdef USE_SEPDISTANCE_UTIL +#if defined (__SPU__) || defined (USE_LIBSPE2) + if (lsMem.needsDmaPutContactManifoldAlgo) + { + dmaSize = sizeof(SpuContactManifoldCollisionAlgorithm); + dmaPpuAddress2 = (ppu_address_t)pair.m_algorithm; + cellDmaLargePut(&lsMem.gSpuContactManifoldAlgoBuffer, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(1)); + } +#endif +#endif //#ifdef USE_SEPDISTANCE_UTIL + + } + } + } + } //end for (j = 0; j < numOnPage; j++) + + }// for + + + + return; +} + + diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h new file mode 100644 index 00000000000..bbaa555ee1b --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h @@ -0,0 +1,140 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SPU_GATHERING_COLLISION_TASK_H +#define SPU_GATHERING_COLLISION_TASK_H + +#include "../PlatformDefinitions.h" +//#define DEBUG_SPU_COLLISION_DETECTION 1 + + +///Task Description for SPU collision detection +struct SpuGatherAndProcessPairsTaskDesc +{ + ppu_address_t m_inPairPtr;//m_pairArrayPtr; + //mutex variable + uint32_t m_someMutexVariableInMainMemory; + + ppu_address_t m_dispatcher; + + uint32_t numOnLastPage; + + uint16_t numPages; + uint16_t taskId; + bool m_useEpa; + + struct CollisionTask_LocalStoreMemory* m_lsMemory; +} + +#if defined(__CELLOS_LV2__) || defined(USE_LIBSPE2) +__attribute__ ((aligned (128))) +#endif +; + + +void processCollisionTask(void* userPtr, void* lsMemory); + +void* createCollisionLocalStoreMemory(); + + +#if defined(USE_LIBSPE2) && defined(__SPU__) +#include "../SpuLibspe2Support.h" +#include +#include +#include + +//#define DEBUG_LIBSPE2_SPU_TASK + + + +int main(unsigned long long speid, addr64 argp, addr64 envp) +{ + printf("SPU: hello \n"); + + ATTRIBUTE_ALIGNED128(btSpuStatus status); + ATTRIBUTE_ALIGNED16( SpuGatherAndProcessPairsTaskDesc taskDesc ) ; + unsigned int received_message = Spu_Mailbox_Event_Nothing; + bool shutdown = false; + + cellDmaGet(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(3)); + + status.m_status = Spu_Status_Free; + status.m_lsMemory.p = createCollisionLocalStoreMemory(); + + cellDmaLargePut(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(3)); + + + while ( btLikely( !shutdown ) ) + { + + received_message = spu_read_in_mbox(); + + if( btLikely( received_message == Spu_Mailbox_Event_Task )) + { +#ifdef DEBUG_LIBSPE2_SPU_TASK + printf("SPU: received Spu_Mailbox_Event_Task\n"); +#endif //DEBUG_LIBSPE2_SPU_TASK + + // refresh the status + cellDmaGet(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(3)); + + btAssert(status.m_status==Spu_Status_Occupied); + + cellDmaGet(&taskDesc, status.m_taskDesc.p, sizeof(SpuGatherAndProcessPairsTaskDesc), DMA_TAG(3), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(3)); +#ifdef DEBUG_LIBSPE2_SPU_TASK + printf("SPU:processCollisionTask\n"); +#endif //DEBUG_LIBSPE2_SPU_TASK + processCollisionTask((void*)&taskDesc, taskDesc.m_lsMemory); + +#ifdef DEBUG_LIBSPE2_SPU_TASK + printf("SPU:finished processCollisionTask\n"); +#endif //DEBUG_LIBSPE2_SPU_TASK + } + else + { +#ifdef DEBUG_LIBSPE2_SPU_TASK + printf("SPU: received ShutDown\n"); +#endif //DEBUG_LIBSPE2_SPU_TASK + if( btLikely( received_message == Spu_Mailbox_Event_Shutdown ) ) + { + shutdown = true; + } + else + { + //printf("SPU - Sth. recieved\n"); + } + } + + // set to status free and wait for next task + status.m_status = Spu_Status_Free; + cellDmaLargePut(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(3)); + + + } + + printf("SPU: shutdown\n"); + return 0; +} +#endif // USE_LIBSPE2 + + +#endif //SPU_GATHERING_COLLISION_TASK_H + + diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuLocalSupport.h b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuLocalSupport.h new file mode 100644 index 00000000000..8b89de03f59 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuLocalSupport.h @@ -0,0 +1,19 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + + + diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.cpp b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.cpp new file mode 100644 index 00000000000..9f7e64dd1b3 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.cpp @@ -0,0 +1,348 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "SpuMinkowskiPenetrationDepthSolver.h" +#include "SpuContactResult.h" +#include "SpuPreferredPenetrationDirections.h" +#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h" +#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h" +#include "SpuCollisionShapes.h" + +#define NUM_UNITSPHERE_POINTS 42 +static btVector3 sPenetrationDirections[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2] = +{ +btVector3(btScalar(0.000000) , btScalar(-0.000000),btScalar(-1.000000)), +btVector3(btScalar(0.723608) , btScalar(-0.525725),btScalar(-0.447219)), +btVector3(btScalar(-0.276388) , btScalar(-0.850649),btScalar(-0.447219)), +btVector3(btScalar(-0.894426) , btScalar(-0.000000),btScalar(-0.447216)), +btVector3(btScalar(-0.276388) , btScalar(0.850649),btScalar(-0.447220)), +btVector3(btScalar(0.723608) , btScalar(0.525725),btScalar(-0.447219)), +btVector3(btScalar(0.276388) , btScalar(-0.850649),btScalar(0.447220)), +btVector3(btScalar(-0.723608) , btScalar(-0.525725),btScalar(0.447219)), +btVector3(btScalar(-0.723608) , btScalar(0.525725),btScalar(0.447219)), +btVector3(btScalar(0.276388) , btScalar(0.850649),btScalar(0.447219)), +btVector3(btScalar(0.894426) , btScalar(0.000000),btScalar(0.447216)), +btVector3(btScalar(-0.000000) , btScalar(0.000000),btScalar(1.000000)), +btVector3(btScalar(0.425323) , btScalar(-0.309011),btScalar(-0.850654)), +btVector3(btScalar(-0.162456) , btScalar(-0.499995),btScalar(-0.850654)), +btVector3(btScalar(0.262869) , btScalar(-0.809012),btScalar(-0.525738)), +btVector3(btScalar(0.425323) , btScalar(0.309011),btScalar(-0.850654)), +btVector3(btScalar(0.850648) , btScalar(-0.000000),btScalar(-0.525736)), +btVector3(btScalar(-0.525730) , btScalar(-0.000000),btScalar(-0.850652)), +btVector3(btScalar(-0.688190) , btScalar(-0.499997),btScalar(-0.525736)), +btVector3(btScalar(-0.162456) , btScalar(0.499995),btScalar(-0.850654)), +btVector3(btScalar(-0.688190) , btScalar(0.499997),btScalar(-0.525736)), +btVector3(btScalar(0.262869) , btScalar(0.809012),btScalar(-0.525738)), +btVector3(btScalar(0.951058) , btScalar(0.309013),btScalar(0.000000)), +btVector3(btScalar(0.951058) , btScalar(-0.309013),btScalar(0.000000)), +btVector3(btScalar(0.587786) , btScalar(-0.809017),btScalar(0.000000)), +btVector3(btScalar(0.000000) , btScalar(-1.000000),btScalar(0.000000)), +btVector3(btScalar(-0.587786) , btScalar(-0.809017),btScalar(0.000000)), +btVector3(btScalar(-0.951058) , btScalar(-0.309013),btScalar(-0.000000)), +btVector3(btScalar(-0.951058) , btScalar(0.309013),btScalar(-0.000000)), +btVector3(btScalar(-0.587786) , btScalar(0.809017),btScalar(-0.000000)), +btVector3(btScalar(-0.000000) , btScalar(1.000000),btScalar(-0.000000)), +btVector3(btScalar(0.587786) , btScalar(0.809017),btScalar(-0.000000)), +btVector3(btScalar(0.688190) , btScalar(-0.499997),btScalar(0.525736)), +btVector3(btScalar(-0.262869) , btScalar(-0.809012),btScalar(0.525738)), +btVector3(btScalar(-0.850648) , btScalar(0.000000),btScalar(0.525736)), +btVector3(btScalar(-0.262869) , btScalar(0.809012),btScalar(0.525738)), +btVector3(btScalar(0.688190) , btScalar(0.499997),btScalar(0.525736)), +btVector3(btScalar(0.525730) , btScalar(0.000000),btScalar(0.850652)), +btVector3(btScalar(0.162456) , btScalar(-0.499995),btScalar(0.850654)), +btVector3(btScalar(-0.425323) , btScalar(-0.309011),btScalar(0.850654)), +btVector3(btScalar(-0.425323) , btScalar(0.309011),btScalar(0.850654)), +btVector3(btScalar(0.162456) , btScalar(0.499995),btScalar(0.850654)) +}; + + +bool SpuMinkowskiPenetrationDepthSolver::calcPenDepth( btSimplexSolverInterface& simplexSolver, + const btConvexShape* convexA,const btConvexShape* convexB, + const btTransform& transA,const btTransform& transB, + btVector3& v, btVector3& pa, btVector3& pb, + class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc) +{ +#if 0 + (void)stackAlloc; + (void)v; + + + struct btIntermediateResult : public SpuContactResult + { + + btIntermediateResult():m_hasResult(false) + { + } + + btVector3 m_normalOnBInWorld; + btVector3 m_pointInWorld; + btScalar m_depth; + bool m_hasResult; + + virtual void setShapeIdentifiersA(int partId0,int index0) + { + (void)partId0; + (void)index0; + } + + virtual void setShapeIdentifiersB(int partId1,int index1) + { + (void)partId1; + (void)index1; + } + void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth) + { + m_normalOnBInWorld = normalOnBInWorld; + m_pointInWorld = pointInWorld; + m_depth = depth; + m_hasResult = true; + } + }; + + //just take fixed number of orientation, and sample the penetration depth in that direction + btScalar minProj = btScalar(BT_LARGE_FLOAT); + btVector3 minNorm(0.f,0.f,0.f); + btVector3 minVertex; + btVector3 minA,minB; + btVector3 seperatingAxisInA,seperatingAxisInB; + btVector3 pInA,qInB,pWorld,qWorld,w; + +//#define USE_BATCHED_SUPPORT 1 +#ifdef USE_BATCHED_SUPPORT + + btVector3 supportVerticesABatch[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2]; + btVector3 supportVerticesBBatch[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2]; + btVector3 seperatingAxisInABatch[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2]; + btVector3 seperatingAxisInBBatch[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2]; + int i; + + int numSampleDirections = NUM_UNITSPHERE_POINTS; + + for (i=0;igetNumPreferredPenetrationDirections(); + if (numPDA) + { + for (int i=0;igetPreferredPenetrationDirection(i,norm); + norm = transA.getBasis() * norm; + sPenetrationDirections[numSampleDirections] = norm; + seperatingAxisInABatch[numSampleDirections] = (-norm) * transA.getBasis(); + seperatingAxisInBBatch[numSampleDirections] = norm * transB.getBasis(); + numSampleDirections++; + } + } + } + + { + int numPDB = convexB->getNumPreferredPenetrationDirections(); + if (numPDB) + { + for (int i=0;igetPreferredPenetrationDirection(i,norm); + norm = transB.getBasis() * norm; + sPenetrationDirections[numSampleDirections] = norm; + seperatingAxisInABatch[numSampleDirections] = (-norm) * transA.getBasis(); + seperatingAxisInBBatch[numSampleDirections] = norm * transB.getBasis(); + numSampleDirections++; + } + } + } + + + + convexA->batchedUnitVectorGetSupportingVertexWithoutMargin(seperatingAxisInABatch,supportVerticesABatch,numSampleDirections); + convexB->batchedUnitVectorGetSupportingVertexWithoutMargin(seperatingAxisInBBatch,supportVerticesBBatch,numSampleDirections); + + for (i=0;ilocalGetSupportVertexWithoutMarginNonVirtual( seperatingAxisInA);//, NULL); + qInB = convexB->localGetSupportVertexWithoutMarginNonVirtual(seperatingAxisInB);//, NULL); + + // pInA = convexA->localGetSupportingVertexWithoutMargin(seperatingAxisInA); + // qInB = convexB->localGetSupportingVertexWithoutMargin(seperatingAxisInB); + + pWorld = transA(pInA); + qWorld = transB(qInB); + w = qWorld - pWorld; + btScalar delta = norm.dot(w); + //find smallest delta + if (delta < minProj) + { + minProj = delta; + minNorm = norm; + minA = pWorld; + minB = qWorld; + } + } +#endif //USE_BATCHED_SUPPORT + + //add the margins + + minA += minNorm*marginA; + minB -= minNorm*marginB; + //no penetration + if (minProj < btScalar(0.)) + return false; + + minProj += (marginA + marginB) + btScalar(1.00); + + + + + +//#define DEBUG_DRAW 1 +#ifdef DEBUG_DRAW + if (debugDraw) + { + btVector3 color(0,1,0); + debugDraw->drawLine(minA,minB,color); + color = btVector3 (1,1,1); + btVector3 vec = minB-minA; + btScalar prj2 = minNorm.dot(vec); + debugDraw->drawLine(minA,minA+(minNorm*minProj),color); + + } +#endif //DEBUG_DRAW + + + btGjkPairDetector gjkdet(convexA,convexB,&simplexSolver,0); + + btScalar offsetDist = minProj; + btVector3 offset = minNorm * offsetDist; + + + SpuClosestPointInput input; + input.m_convexVertexData[0] = convexVertexDataA; + input.m_convexVertexData[1] = convexVertexDataB; + btVector3 newOrg = transA.getOrigin() + offset; + + btTransform displacedTrans = transA; + displacedTrans.setOrigin(newOrg); + + input.m_transformA = displacedTrans; + input.m_transformB = transB; + input.m_maximumDistanceSquared = btScalar(BT_LARGE_FLOAT);//minProj; + + btIntermediateResult res; + gjkdet.getClosestPoints(input,res,0); + + btScalar correctedMinNorm = minProj - res.m_depth; + + + //the penetration depth is over-estimated, relax it + btScalar penetration_relaxation= btScalar(1.); + minNorm*=penetration_relaxation; + + if (res.m_hasResult) + { + + pa = res.m_pointInWorld - minNorm * correctedMinNorm; + pb = res.m_pointInWorld; + +#ifdef DEBUG_DRAW + if (debugDraw) + { + btVector3 color(1,0,0); + debugDraw->drawLine(pa,pb,color); + } +#endif//DEBUG_DRAW + + + } else { + // could not seperate shapes + //btAssert (false); + } + return res.m_hasResult; +#endif + return false; +} + + + diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.h b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.h new file mode 100644 index 00000000000..18ad223ed36 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.h @@ -0,0 +1,48 @@ + +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef MINKOWSKI_PENETRATION_DEPTH_SOLVER_H +#define MINKOWSKI_PENETRATION_DEPTH_SOLVER_H + + +#include "BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h" + +class btStackAlloc; +class btIDebugDraw; +class btVoronoiSimplexSolver; +class btConvexShape; + +///MinkowskiPenetrationDepthSolver implements bruteforce penetration depth estimation. +///Implementation is based on sampling the depth using support mapping, and using GJK step to get the witness points. +class SpuMinkowskiPenetrationDepthSolver : public btConvexPenetrationDepthSolver +{ +public: + SpuMinkowskiPenetrationDepthSolver() {} + virtual ~SpuMinkowskiPenetrationDepthSolver() {}; + + virtual bool calcPenDepth( btSimplexSolverInterface& simplexSolver, + const btConvexShape* convexA,const btConvexShape* convexB, + const btTransform& transA,const btTransform& transB, + btVector3& v, btVector3& pa, btVector3& pb, + class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc + ); + + +}; + + +#endif //MINKOWSKI_PENETRATION_DEPTH_SOLVER_H + diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuPreferredPenetrationDirections.h b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuPreferredPenetrationDirections.h new file mode 100644 index 00000000000..774a0cb2eb1 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuPreferredPenetrationDirections.h @@ -0,0 +1,70 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _SPU_PREFERRED_PENETRATION_DIRECTIONS_H +#define _SPU_PREFERRED_PENETRATION_DIRECTIONS_H + + +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" + +int spuGetNumPreferredPenetrationDirections(int shapeType, void* shape) +{ + switch (shapeType) + { + case TRIANGLE_SHAPE_PROXYTYPE: + { + return 2; + //spu_printf("2\n"); + break; + } + default: + { +#if __ASSERT + spu_printf("spuGetNumPreferredPenetrationDirections() - Unsupported bound type: %d.\n", shapeType); +#endif // __ASSERT + } + } + + return 0; +} + +void spuGetPreferredPenetrationDirection(int shapeType, void* shape, int index, btVector3& penetrationVector) +{ + + + switch (shapeType) + { + case TRIANGLE_SHAPE_PROXYTYPE: + { + btVector3* vertices = (btVector3*)shape; + ///calcNormal + penetrationVector = (vertices[1]-vertices[0]).cross(vertices[2]-vertices[0]); + penetrationVector.normalize(); + if (index) + penetrationVector *= btScalar(-1.); + break; + } + default: + { + +#if __ASSERT + spu_printf("spuGetNumPreferredPenetrationDirections() - Unsupported bound type: %d.\n", shapeType); +#endif // __ASSERT + } + } + +} + +#endif //_SPU_PREFERRED_PENETRATION_DIRECTIONS_H diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp new file mode 100644 index 00000000000..30642a39294 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp @@ -0,0 +1,1155 @@ +/* + Copyright (C) 2006, 2008 Sony Computer Entertainment Inc. + All rights reserved. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +*/ + + +#include "Box.h" + +static inline float sqr( float a ) +{ + return (a * a); +} + +enum BoxSepAxisType +{ + A_AXIS, B_AXIS, CROSS_AXIS +}; + +//------------------------------------------------------------------------------------------------- +// voronoiTol: bevels Voronoi planes slightly which helps when features are parallel. +//------------------------------------------------------------------------------------------------- + +static const float voronoiTol = -1.0e-5f; + +//------------------------------------------------------------------------------------------------- +// separating axis tests: gaps along each axis are computed, and the axis with the maximum +// gap is stored. cross product axes are normalized. +//------------------------------------------------------------------------------------------------- + +#define AaxisTest( dim, letter, first ) \ +{ \ + if ( first ) \ + { \ + maxGap = gap = gapsA.get##letter(); \ + if ( gap > distanceThreshold ) return gap; \ + axisType = A_AXIS; \ + faceDimA = dim; \ + axisA = identity.getCol##dim(); \ + } \ + else \ + { \ + gap = gapsA.get##letter(); \ + if ( gap > distanceThreshold ) return gap; \ + else if ( gap > maxGap ) \ + { \ + maxGap = gap; \ + axisType = A_AXIS; \ + faceDimA = dim; \ + axisA = identity.getCol##dim(); \ + } \ + } \ +} + + +#define BaxisTest( dim, letter ) \ +{ \ + gap = gapsB.get##letter(); \ + if ( gap > distanceThreshold ) return gap; \ + else if ( gap > maxGap ) \ + { \ + maxGap = gap; \ + axisType = B_AXIS; \ + faceDimB = dim; \ + axisB = identity.getCol##dim(); \ + } \ +} + +#define CrossAxisTest( dima, dimb, letterb ) \ +{ \ + const float lsqr_tolerance = 1.0e-30f; \ + float lsqr; \ + \ + lsqr = lsqrs.getCol##dima().get##letterb(); \ + \ + if ( lsqr > lsqr_tolerance ) \ + { \ + float l_recip = 1.0f / sqrtf( lsqr ); \ + gap = float(gapsAxB.getCol##dima().get##letterb()) * l_recip; \ + \ + if ( gap > distanceThreshold ) \ + { \ + return gap; \ + } \ + \ + if ( gap > maxGap ) \ + { \ + maxGap = gap; \ + axisType = CROSS_AXIS; \ + edgeDimA = dima; \ + edgeDimB = dimb; \ + axisA = cross(identity.getCol##dima(),matrixAB.getCol##dimb()) * l_recip; \ + } \ + } \ +} + +//------------------------------------------------------------------------------------------------- +// tests whether a vertex of box B and a face of box A are the closest features +//------------------------------------------------------------------------------------------------- + +inline +float +VertexBFaceATest( + bool & inVoronoi, + float & t0, + float & t1, + const Vector3 & hA, + PE_REF(Vector3) faceOffsetAB, + PE_REF(Vector3) faceOffsetBA, + const Matrix3 & matrixAB, + const Matrix3 & matrixBA, + PE_REF(Vector3) signsB, + PE_REF(Vector3) scalesB ) +{ + // compute a corner of box B in A's coordinate system + + Vector3 corner = + Vector3( faceOffsetAB + matrixAB.getCol0() * scalesB.getX() + matrixAB.getCol1() * scalesB.getY() ); + + // compute the parameters of the point on A, closest to this corner + + t0 = corner[0]; + t1 = corner[1]; + + if ( t0 > hA[0] ) + t0 = hA[0]; + else if ( t0 < -hA[0] ) + t0 = -hA[0]; + if ( t1 > hA[1] ) + t1 = hA[1]; + else if ( t1 < -hA[1] ) + t1 = -hA[1]; + + // do the Voronoi test: already know the point on B is in the Voronoi region of the + // point on A, check the reverse. + + Vector3 facePointB = + Vector3( mulPerElem( faceOffsetBA + matrixBA.getCol0() * t0 + matrixBA.getCol1() * t1 - scalesB, signsB ) ); + + inVoronoi = ( ( facePointB[0] >= voronoiTol * facePointB[2] ) && + ( facePointB[1] >= voronoiTol * facePointB[0] ) && + ( facePointB[2] >= voronoiTol * facePointB[1] ) ); + + return (sqr( corner[0] - t0 ) + sqr( corner[1] - t1 ) + sqr( corner[2] )); +} + +#define VertexBFaceA_SetNewMin() \ +{ \ + minDistSqr = distSqr; \ + localPointA.setX(t0); \ + localPointA.setY(t1); \ + localPointB.setX( scalesB.getX() ); \ + localPointB.setY( scalesB.getY() ); \ + featureA = F; \ + featureB = V; \ +} + +void +VertexBFaceATests( + bool & done, + float & minDistSqr, + Point3 & localPointA, + Point3 & localPointB, + FeatureType & featureA, + FeatureType & featureB, + const Vector3 & hA, + PE_REF(Vector3) faceOffsetAB, + PE_REF(Vector3) faceOffsetBA, + const Matrix3 & matrixAB, + const Matrix3 & matrixBA, + PE_REF(Vector3) signsB, + PE_REF(Vector3) scalesB, + bool first ) +{ + + float t0, t1; + float distSqr; + + distSqr = VertexBFaceATest( done, t0, t1, hA, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsB, scalesB ); + + if ( first ) { + VertexBFaceA_SetNewMin(); + } else { + if ( distSqr < minDistSqr ) { + VertexBFaceA_SetNewMin(); + } + } + + if ( done ) + return; + + signsB.setX( -signsB.getX() ); + scalesB.setX( -scalesB.getX() ); + + distSqr = VertexBFaceATest( done, t0, t1, hA, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsB, scalesB ); + + if ( distSqr < minDistSqr ) { + VertexBFaceA_SetNewMin(); + } + + if ( done ) + return; + + signsB.setY( -signsB.getY() ); + scalesB.setY( -scalesB.getY() ); + + distSqr = VertexBFaceATest( done, t0, t1, hA, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsB, scalesB ); + + if ( distSqr < minDistSqr ) { + VertexBFaceA_SetNewMin(); + } + + if ( done ) + return; + + signsB.setX( -signsB.getX() ); + scalesB.setX( -scalesB.getX() ); + + distSqr = VertexBFaceATest( done, t0, t1, hA, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsB, scalesB ); + + if ( distSqr < minDistSqr ) { + VertexBFaceA_SetNewMin(); + } +} + +//------------------------------------------------------------------------------------------------- +// VertexAFaceBTest: tests whether a vertex of box A and a face of box B are the closest features +//------------------------------------------------------------------------------------------------- + +inline +float +VertexAFaceBTest( + bool & inVoronoi, + float & t0, + float & t1, + const Vector3 & hB, + PE_REF(Vector3) faceOffsetAB, + PE_REF(Vector3) faceOffsetBA, + const Matrix3 & matrixAB, + const Matrix3 & matrixBA, + PE_REF(Vector3) signsA, + PE_REF(Vector3) scalesA ) +{ + Vector3 corner = + Vector3( faceOffsetBA + matrixBA.getCol0() * scalesA.getX() + matrixBA.getCol1() * scalesA.getY() ); + + t0 = corner[0]; + t1 = corner[1]; + + if ( t0 > hB[0] ) + t0 = hB[0]; + else if ( t0 < -hB[0] ) + t0 = -hB[0]; + if ( t1 > hB[1] ) + t1 = hB[1]; + else if ( t1 < -hB[1] ) + t1 = -hB[1]; + + Vector3 facePointA = + Vector3( mulPerElem( faceOffsetAB + matrixAB.getCol0() * t0 + matrixAB.getCol1() * t1 - scalesA, signsA ) ); + + inVoronoi = ( ( facePointA[0] >= voronoiTol * facePointA[2] ) && + ( facePointA[1] >= voronoiTol * facePointA[0] ) && + ( facePointA[2] >= voronoiTol * facePointA[1] ) ); + + return (sqr( corner[0] - t0 ) + sqr( corner[1] - t1 ) + sqr( corner[2] )); +} + +#define VertexAFaceB_SetNewMin() \ +{ \ + minDistSqr = distSqr; \ + localPointB.setX(t0); \ + localPointB.setY(t1); \ + localPointA.setX( scalesA.getX() ); \ + localPointA.setY( scalesA.getY() ); \ + featureA = V; \ + featureB = F; \ +} + +void +VertexAFaceBTests( + bool & done, + float & minDistSqr, + Point3 & localPointA, + Point3 & localPointB, + FeatureType & featureA, + FeatureType & featureB, + const Vector3 & hB, + PE_REF(Vector3) faceOffsetAB, + PE_REF(Vector3) faceOffsetBA, + const Matrix3 & matrixAB, + const Matrix3 & matrixBA, + PE_REF(Vector3) signsA, + PE_REF(Vector3) scalesA, + bool first ) +{ + float t0, t1; + float distSqr; + + distSqr = VertexAFaceBTest( done, t0, t1, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, scalesA ); + + if ( first ) { + VertexAFaceB_SetNewMin(); + } else { + if ( distSqr < minDistSqr ) { + VertexAFaceB_SetNewMin(); + } + } + + if ( done ) + return; + + signsA.setX( -signsA.getX() ); + scalesA.setX( -scalesA.getX() ); + + distSqr = VertexAFaceBTest( done, t0, t1, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, scalesA ); + + if ( distSqr < minDistSqr ) { + VertexAFaceB_SetNewMin(); + } + + if ( done ) + return; + + signsA.setY( -signsA.getY() ); + scalesA.setY( -scalesA.getY() ); + + distSqr = VertexAFaceBTest( done, t0, t1, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, scalesA ); + + if ( distSqr < minDistSqr ) { + VertexAFaceB_SetNewMin(); + } + + if ( done ) + return; + + signsA.setX( -signsA.getX() ); + scalesA.setX( -scalesA.getX() ); + + distSqr = VertexAFaceBTest( done, t0, t1, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, scalesA ); + + if ( distSqr < minDistSqr ) { + VertexAFaceB_SetNewMin(); + } +} + +//------------------------------------------------------------------------------------------------- +// EdgeEdgeTest: +// +// tests whether a pair of edges are the closest features +// +// note on the shorthand: +// 'a' & 'b' refer to the edges. +// 'c' is the dimension of the axis that points from the face center to the edge Center +// 'd' is the dimension of the edge Direction +// the dimension of the face normal is 2 +//------------------------------------------------------------------------------------------------- + +#define EdgeEdgeTest( ac, ac_letter, ad, ad_letter, bc, bc_letter, bd, bd_letter ) \ +{ \ + Vector3 edgeOffsetAB; \ + Vector3 edgeOffsetBA; \ + \ + edgeOffsetAB = faceOffsetAB + matrixAB.getCol##bc() * scalesB.get##bc_letter(); \ + edgeOffsetAB.set##ac_letter( edgeOffsetAB.get##ac_letter() - scalesA.get##ac_letter() ); \ + \ + edgeOffsetBA = faceOffsetBA + matrixBA.getCol##ac() * scalesA.get##ac_letter(); \ + edgeOffsetBA.set##bc_letter( edgeOffsetBA.get##bc_letter() - scalesB.get##bc_letter() ); \ + \ + float dirDot = matrixAB.getCol##bd().get##ad_letter(); \ + float denom = 1.0f - dirDot*dirDot; \ + float edgeOffsetAB_ad = edgeOffsetAB.get##ad_letter(); \ + float edgeOffsetBA_bd = edgeOffsetBA.get##bd_letter(); \ + \ + if ( denom == 0.0f ) \ + { \ + tA = 0.0f; \ + } \ + else \ + { \ + tA = ( edgeOffsetAB_ad + edgeOffsetBA_bd * dirDot ) / denom; \ + } \ + \ + if ( tA < -hA[ad] ) tA = -hA[ad]; \ + else if ( tA > hA[ad] ) tA = hA[ad]; \ + \ + tB = tA * dirDot + edgeOffsetBA_bd; \ + \ + if ( tB < -hB[bd] ) \ + { \ + tB = -hB[bd]; \ + tA = tB * dirDot + edgeOffsetAB_ad; \ + \ + if ( tA < -hA[ad] ) tA = -hA[ad]; \ + else if ( tA > hA[ad] ) tA = hA[ad]; \ + } \ + else if ( tB > hB[bd] ) \ + { \ + tB = hB[bd]; \ + tA = tB * dirDot + edgeOffsetAB_ad; \ + \ + if ( tA < -hA[ad] ) tA = -hA[ad]; \ + else if ( tA > hA[ad] ) tA = hA[ad]; \ + } \ + \ + Vector3 edgeOffAB = Vector3( mulPerElem( edgeOffsetAB + matrixAB.getCol##bd() * tB, signsA ) );\ + Vector3 edgeOffBA = Vector3( mulPerElem( edgeOffsetBA + matrixBA.getCol##ad() * tA, signsB ) );\ + \ + inVoronoi = ( edgeOffAB[ac] >= voronoiTol * edgeOffAB[2] ) && \ + ( edgeOffAB[2] >= voronoiTol * edgeOffAB[ac] ) && \ + ( edgeOffBA[bc] >= voronoiTol * edgeOffBA[2] ) && \ + ( edgeOffBA[2] >= voronoiTol * edgeOffBA[bc] ); \ + \ + edgeOffAB[ad] -= tA; \ + edgeOffBA[bd] -= tB; \ + \ + return dot(edgeOffAB,edgeOffAB); \ +} + +float +EdgeEdgeTest_0101( + bool & inVoronoi, + float & tA, + float & tB, + const Vector3 & hA, + const Vector3 & hB, + PE_REF(Vector3) faceOffsetAB, + PE_REF(Vector3) faceOffsetBA, + const Matrix3 & matrixAB, + const Matrix3 & matrixBA, + PE_REF(Vector3) signsA, + PE_REF(Vector3) signsB, + PE_REF(Vector3) scalesA, + PE_REF(Vector3) scalesB ) +{ + EdgeEdgeTest( 0, X, 1, Y, 0, X, 1, Y ); +} + +float +EdgeEdgeTest_0110( + bool & inVoronoi, + float & tA, + float & tB, + const Vector3 & hA, + const Vector3 & hB, + PE_REF(Vector3) faceOffsetAB, + PE_REF(Vector3) faceOffsetBA, + const Matrix3 & matrixAB, + const Matrix3 & matrixBA, + PE_REF(Vector3) signsA, + PE_REF(Vector3) signsB, + PE_REF(Vector3) scalesA, + PE_REF(Vector3) scalesB ) +{ + EdgeEdgeTest( 0, X, 1, Y, 1, Y, 0, X ); +} + +float +EdgeEdgeTest_1001( + bool & inVoronoi, + float & tA, + float & tB, + const Vector3 & hA, + const Vector3 & hB, + PE_REF(Vector3) faceOffsetAB, + PE_REF(Vector3) faceOffsetBA, + const Matrix3 & matrixAB, + const Matrix3 & matrixBA, + PE_REF(Vector3) signsA, + PE_REF(Vector3) signsB, + PE_REF(Vector3) scalesA, + PE_REF(Vector3) scalesB ) +{ + EdgeEdgeTest( 1, Y, 0, X, 0, X, 1, Y ); +} + +float +EdgeEdgeTest_1010( + bool & inVoronoi, + float & tA, + float & tB, + const Vector3 & hA, + const Vector3 & hB, + PE_REF(Vector3) faceOffsetAB, + PE_REF(Vector3) faceOffsetBA, + const Matrix3 & matrixAB, + const Matrix3 & matrixBA, + PE_REF(Vector3) signsA, + PE_REF(Vector3) signsB, + PE_REF(Vector3) scalesA, + PE_REF(Vector3) scalesB ) +{ + EdgeEdgeTest( 1, Y, 0, X, 1, Y, 0, X ); +} + +#define EdgeEdge_SetNewMin( ac_letter, ad_letter, bc_letter, bd_letter ) \ +{ \ + minDistSqr = distSqr; \ + localPointA.set##ac_letter(scalesA.get##ac_letter()); \ + localPointA.set##ad_letter(tA); \ + localPointB.set##bc_letter(scalesB.get##bc_letter()); \ + localPointB.set##bd_letter(tB); \ + otherFaceDimA = testOtherFaceDimA; \ + otherFaceDimB = testOtherFaceDimB; \ + featureA = E; \ + featureB = E; \ +} + +void +EdgeEdgeTests( + bool & done, + float & minDistSqr, + Point3 & localPointA, + Point3 & localPointB, + int & otherFaceDimA, + int & otherFaceDimB, + FeatureType & featureA, + FeatureType & featureB, + const Vector3 & hA, + const Vector3 & hB, + PE_REF(Vector3) faceOffsetAB, + PE_REF(Vector3) faceOffsetBA, + const Matrix3 & matrixAB, + const Matrix3 & matrixBA, + PE_REF(Vector3) signsA, + PE_REF(Vector3) signsB, + PE_REF(Vector3) scalesA, + PE_REF(Vector3) scalesB, + bool first ) +{ + + float distSqr; + float tA, tB; + + int testOtherFaceDimA, testOtherFaceDimB; + + testOtherFaceDimA = 0; + testOtherFaceDimB = 0; + + distSqr = EdgeEdgeTest_0101( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); + + if ( first ) { + EdgeEdge_SetNewMin( X, Y, X, Y ); + } else { + if ( distSqr < minDistSqr ) { + EdgeEdge_SetNewMin( X, Y, X, Y ); + } + } + + if ( done ) + return; + + signsA.setX( -signsA.getX() ); + scalesA.setX( -scalesA.getX() ); + + distSqr = EdgeEdgeTest_0101( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); + + if ( distSqr < minDistSqr ) { + EdgeEdge_SetNewMin( X, Y, X, Y ); + } + + if ( done ) + return; + + signsB.setX( -signsB.getX() ); + scalesB.setX( -scalesB.getX() ); + + distSqr = EdgeEdgeTest_0101( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); + + if ( distSqr < minDistSqr ) { + EdgeEdge_SetNewMin( X, Y, X, Y ); + } + + if ( done ) + return; + + signsA.setX( -signsA.getX() ); + scalesA.setX( -scalesA.getX() ); + + distSqr = EdgeEdgeTest_0101( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); + + if ( distSqr < minDistSqr ) { + EdgeEdge_SetNewMin( X, Y, X, Y ); + } + + if ( done ) + return; + + testOtherFaceDimA = 1; + testOtherFaceDimB = 0; + signsB.setX( -signsB.getX() ); + scalesB.setX( -scalesB.getX() ); + + distSqr = EdgeEdgeTest_1001( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); + + if ( distSqr < minDistSqr ) { + EdgeEdge_SetNewMin( Y, X, X, Y ); + } + + if ( done ) + return; + + signsA.setY( -signsA.getY() ); + scalesA.setY( -scalesA.getY() ); + + distSqr = EdgeEdgeTest_1001( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); + + if ( distSqr < minDistSqr ) { + EdgeEdge_SetNewMin( Y, X, X, Y ); + } + + if ( done ) + return; + + signsB.setX( -signsB.getX() ); + scalesB.setX( -scalesB.getX() ); + + distSqr = EdgeEdgeTest_1001( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); + + if ( distSqr < minDistSqr ) { + EdgeEdge_SetNewMin( Y, X, X, Y ); + } + + if ( done ) + return; + + signsA.setY( -signsA.getY() ); + scalesA.setY( -scalesA.getY() ); + + distSqr = EdgeEdgeTest_1001( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); + + if ( distSqr < minDistSqr ) { + EdgeEdge_SetNewMin( Y, X, X, Y ); + } + + if ( done ) + return; + + testOtherFaceDimA = 0; + testOtherFaceDimB = 1; + signsB.setX( -signsB.getX() ); + scalesB.setX( -scalesB.getX() ); + + distSqr = EdgeEdgeTest_0110( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); + + if ( distSqr < minDistSqr ) { + EdgeEdge_SetNewMin( X, Y, Y, X ); + } + + if ( done ) + return; + + signsA.setX( -signsA.getX() ); + scalesA.setX( -scalesA.getX() ); + + distSqr = EdgeEdgeTest_0110( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); + + if ( distSqr < minDistSqr ) { + EdgeEdge_SetNewMin( X, Y, Y, X ); + } + + if ( done ) + return; + + signsB.setY( -signsB.getY() ); + scalesB.setY( -scalesB.getY() ); + + distSqr = EdgeEdgeTest_0110( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); + + if ( distSqr < minDistSqr ) { + EdgeEdge_SetNewMin( X, Y, Y, X ); + } + + if ( done ) + return; + + signsA.setX( -signsA.getX() ); + scalesA.setX( -scalesA.getX() ); + + distSqr = EdgeEdgeTest_0110( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); + + if ( distSqr < minDistSqr ) { + EdgeEdge_SetNewMin( X, Y, Y, X ); + } + + if ( done ) + return; + + testOtherFaceDimA = 1; + testOtherFaceDimB = 1; + signsB.setY( -signsB.getY() ); + scalesB.setY( -scalesB.getY() ); + + distSqr = EdgeEdgeTest_1010( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); + + if ( distSqr < minDistSqr ) { + EdgeEdge_SetNewMin( Y, X, Y, X ); + } + + if ( done ) + return; + + signsA.setY( -signsA.getY() ); + scalesA.setY( -scalesA.getY() ); + + distSqr = EdgeEdgeTest_1010( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); + + if ( distSqr < minDistSqr ) { + EdgeEdge_SetNewMin( Y, X, Y, X ); + } + + if ( done ) + return; + + signsB.setY( -signsB.getY() ); + scalesB.setY( -scalesB.getY() ); + + distSqr = EdgeEdgeTest_1010( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); + + if ( distSqr < minDistSqr ) { + EdgeEdge_SetNewMin( Y, X, Y, X ); + } + + if ( done ) + return; + + signsA.setY( -signsA.getY() ); + scalesA.setY( -scalesA.getY() ); + + distSqr = EdgeEdgeTest_1010( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, + matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); + + if ( distSqr < minDistSqr ) { + EdgeEdge_SetNewMin( Y, X, Y, X ); + } +} + +float +boxBoxDistance( + Vector3& normal, + BoxPoint& boxPointA, + BoxPoint& boxPointB, + PE_REF(Box) boxA, const Transform3& transformA, + PE_REF(Box) boxB, const Transform3& transformB, + float distanceThreshold ) +{ + Matrix3 identity; + identity = Matrix3::identity(); + Vector3 ident[3]; + ident[0] = identity.getCol0(); + ident[1] = identity.getCol1(); + ident[2] = identity.getCol2(); + + // get relative transformations + + Transform3 transformAB, transformBA; + Matrix3 matrixAB, matrixBA; + Vector3 offsetAB, offsetBA; + + transformAB = orthoInverse(transformA) * transformB; + transformBA = orthoInverse(transformAB); + + matrixAB = transformAB.getUpper3x3(); + offsetAB = transformAB.getTranslation(); + matrixBA = transformBA.getUpper3x3(); + offsetBA = transformBA.getTranslation(); + + Matrix3 absMatrixAB = absPerElem(matrixAB); + Matrix3 absMatrixBA = absPerElem(matrixBA); + + // find separating axis with largest gap between projections + + BoxSepAxisType axisType; + Vector3 axisA(0.0f), axisB(0.0f); + float gap, maxGap; + int faceDimA = 0, faceDimB = 0, edgeDimA = 0, edgeDimB = 0; + + // face axes + + Vector3 gapsA = absPerElem(offsetAB) - boxA.half - absMatrixAB * boxB.half; + + AaxisTest(0,X,true); + AaxisTest(1,Y,false); + AaxisTest(2,Z,false); + + Vector3 gapsB = absPerElem(offsetBA) - boxB.half - absMatrixBA * boxA.half; + + BaxisTest(0,X); + BaxisTest(1,Y); + BaxisTest(2,Z); + + // cross product axes + + // ŠOÏ‚ª‚O‚̂Ƃ«‚Ì‘Îô + absMatrixAB += Matrix3(1.0e-5f); + absMatrixBA += Matrix3(1.0e-5f); + + Matrix3 lsqrs, projOffset, projAhalf, projBhalf; + + lsqrs.setCol0( mulPerElem( matrixBA.getCol2(), matrixBA.getCol2() ) + + mulPerElem( matrixBA.getCol1(), matrixBA.getCol1() ) ); + lsqrs.setCol1( mulPerElem( matrixBA.getCol2(), matrixBA.getCol2() ) + + mulPerElem( matrixBA.getCol0(), matrixBA.getCol0() ) ); + lsqrs.setCol2( mulPerElem( matrixBA.getCol1(), matrixBA.getCol1() ) + + mulPerElem( matrixBA.getCol0(), matrixBA.getCol0() ) ); + + projOffset.setCol0(matrixBA.getCol1() * offsetAB.getZ() - matrixBA.getCol2() * offsetAB.getY()); + projOffset.setCol1(matrixBA.getCol2() * offsetAB.getX() - matrixBA.getCol0() * offsetAB.getZ()); + projOffset.setCol2(matrixBA.getCol0() * offsetAB.getY() - matrixBA.getCol1() * offsetAB.getX()); + + projAhalf.setCol0(absMatrixBA.getCol1() * boxA.half.getZ() + absMatrixBA.getCol2() * boxA.half.getY()); + projAhalf.setCol1(absMatrixBA.getCol2() * boxA.half.getX() + absMatrixBA.getCol0() * boxA.half.getZ()); + projAhalf.setCol2(absMatrixBA.getCol0() * boxA.half.getY() + absMatrixBA.getCol1() * boxA.half.getX()); + + projBhalf.setCol0(absMatrixAB.getCol1() * boxB.half.getZ() + absMatrixAB.getCol2() * boxB.half.getY()); + projBhalf.setCol1(absMatrixAB.getCol2() * boxB.half.getX() + absMatrixAB.getCol0() * boxB.half.getZ()); + projBhalf.setCol2(absMatrixAB.getCol0() * boxB.half.getY() + absMatrixAB.getCol1() * boxB.half.getX()); + + Matrix3 gapsAxB = absPerElem(projOffset) - projAhalf - transpose(projBhalf); + + CrossAxisTest(0,0,X); + CrossAxisTest(0,1,Y); + CrossAxisTest(0,2,Z); + CrossAxisTest(1,0,X); + CrossAxisTest(1,1,Y); + CrossAxisTest(1,2,Z); + CrossAxisTest(2,0,X); + CrossAxisTest(2,1,Y); + CrossAxisTest(2,2,Z); + + // need to pick the face on each box whose normal best matches the separating axis. + // will transform vectors to be in the coordinate system of this face to simplify things later. + // for this, a permutation matrix can be used, which the next section computes. + + int dimA[3], dimB[3]; + + if ( axisType == A_AXIS ) { + if ( dot(axisA,offsetAB) < 0.0f ) + axisA = -axisA; + axisB = matrixBA * -axisA; + + Vector3 absAxisB = Vector3(absPerElem(axisB)); + + if ( ( absAxisB[0] > absAxisB[1] ) && ( absAxisB[0] > absAxisB[2] ) ) + faceDimB = 0; + else if ( absAxisB[1] > absAxisB[2] ) + faceDimB = 1; + else + faceDimB = 2; + } else if ( axisType == B_AXIS ) { + if ( dot(axisB,offsetBA) < 0.0f ) + axisB = -axisB; + axisA = matrixAB * -axisB; + + Vector3 absAxisA = Vector3(absPerElem(axisA)); + + if ( ( absAxisA[0] > absAxisA[1] ) && ( absAxisA[0] > absAxisA[2] ) ) + faceDimA = 0; + else if ( absAxisA[1] > absAxisA[2] ) + faceDimA = 1; + else + faceDimA = 2; + } + + if ( axisType == CROSS_AXIS ) { + if ( dot(axisA,offsetAB) < 0.0f ) + axisA = -axisA; + axisB = matrixBA * -axisA; + + Vector3 absAxisA = Vector3(absPerElem(axisA)); + Vector3 absAxisB = Vector3(absPerElem(axisB)); + + dimA[1] = edgeDimA; + dimB[1] = edgeDimB; + + if ( edgeDimA == 0 ) { + if ( absAxisA[1] > absAxisA[2] ) { + dimA[0] = 2; + dimA[2] = 1; + } else { + dimA[0] = 1; + dimA[2] = 2; + } + } else if ( edgeDimA == 1 ) { + if ( absAxisA[2] > absAxisA[0] ) { + dimA[0] = 0; + dimA[2] = 2; + } else { + dimA[0] = 2; + dimA[2] = 0; + } + } else { + if ( absAxisA[0] > absAxisA[1] ) { + dimA[0] = 1; + dimA[2] = 0; + } else { + dimA[0] = 0; + dimA[2] = 1; + } + } + + if ( edgeDimB == 0 ) { + if ( absAxisB[1] > absAxisB[2] ) { + dimB[0] = 2; + dimB[2] = 1; + } else { + dimB[0] = 1; + dimB[2] = 2; + } + } else if ( edgeDimB == 1 ) { + if ( absAxisB[2] > absAxisB[0] ) { + dimB[0] = 0; + dimB[2] = 2; + } else { + dimB[0] = 2; + dimB[2] = 0; + } + } else { + if ( absAxisB[0] > absAxisB[1] ) { + dimB[0] = 1; + dimB[2] = 0; + } else { + dimB[0] = 0; + dimB[2] = 1; + } + } + } else { + dimA[2] = faceDimA; + dimA[0] = (faceDimA+1)%3; + dimA[1] = (faceDimA+2)%3; + dimB[2] = faceDimB; + dimB[0] = (faceDimB+1)%3; + dimB[1] = (faceDimB+2)%3; + } + + Matrix3 aperm_col, bperm_col; + + aperm_col.setCol0(ident[dimA[0]]); + aperm_col.setCol1(ident[dimA[1]]); + aperm_col.setCol2(ident[dimA[2]]); + + bperm_col.setCol0(ident[dimB[0]]); + bperm_col.setCol1(ident[dimB[1]]); + bperm_col.setCol2(ident[dimB[2]]); + + Matrix3 aperm_row, bperm_row; + + aperm_row = transpose(aperm_col); + bperm_row = transpose(bperm_col); + + // permute all box parameters to be in the face coordinate systems + + Matrix3 matrixAB_perm = aperm_row * matrixAB * bperm_col; + Matrix3 matrixBA_perm = transpose(matrixAB_perm); + + Vector3 offsetAB_perm, offsetBA_perm; + + offsetAB_perm = aperm_row * offsetAB; + offsetBA_perm = bperm_row * offsetBA; + + Vector3 halfA_perm, halfB_perm; + + halfA_perm = aperm_row * boxA.half; + halfB_perm = bperm_row * boxB.half; + + // compute the vector between the centers of each face, in each face's coordinate frame + + Vector3 signsA_perm, signsB_perm, scalesA_perm, scalesB_perm, faceOffsetAB_perm, faceOffsetBA_perm; + + signsA_perm = copySignPerElem(Vector3(1.0f),aperm_row * axisA); + signsB_perm = copySignPerElem(Vector3(1.0f),bperm_row * axisB); + scalesA_perm = mulPerElem( signsA_perm, halfA_perm ); + scalesB_perm = mulPerElem( signsB_perm, halfB_perm ); + + faceOffsetAB_perm = offsetAB_perm + matrixAB_perm.getCol2() * scalesB_perm.getZ(); + faceOffsetAB_perm.setZ( faceOffsetAB_perm.getZ() - scalesA_perm.getZ() ); + + faceOffsetBA_perm = offsetBA_perm + matrixBA_perm.getCol2() * scalesA_perm.getZ(); + faceOffsetBA_perm.setZ( faceOffsetBA_perm.getZ() - scalesB_perm.getZ() ); + + if ( maxGap < 0.0f ) { + // if boxes overlap, this will separate the faces for finding points of penetration. + + faceOffsetAB_perm -= aperm_row * axisA * maxGap * 1.01f; + faceOffsetBA_perm -= bperm_row * axisB * maxGap * 1.01f; + } + + // for each vertex/face or edge/edge pair of the two faces, find the closest points. + // + // these points each have an associated box feature (vertex, edge, or face). if each + // point is in the external Voronoi region of the other's feature, they are the + // closest points of the boxes, and the algorithm can exit. + // + // the feature pairs are arranged so that in the general case, the first test will + // succeed. degenerate cases (parallel faces) may require up to all tests in the + // worst case. + // + // if for some reason no case passes the Voronoi test, the features with the minimum + // distance are returned. + + Point3 localPointA_perm, localPointB_perm; + float minDistSqr; + bool done; + + Vector3 hA_perm( halfA_perm ), hB_perm( halfB_perm ); + + localPointA_perm.setZ( scalesA_perm.getZ() ); + localPointB_perm.setZ( scalesB_perm.getZ() ); + scalesA_perm.setZ(0.0f); + scalesB_perm.setZ(0.0f); + + int otherFaceDimA, otherFaceDimB; + FeatureType featureA, featureB; + + if ( axisType == CROSS_AXIS ) { + EdgeEdgeTests( done, minDistSqr, localPointA_perm, localPointB_perm, + otherFaceDimA, otherFaceDimB, featureA, featureB, + hA_perm, hB_perm, faceOffsetAB_perm, faceOffsetBA_perm, + matrixAB_perm, matrixBA_perm, signsA_perm, signsB_perm, + scalesA_perm, scalesB_perm, true ); + + if ( !done ) { + VertexBFaceATests( done, minDistSqr, localPointA_perm, localPointB_perm, + featureA, featureB, + hA_perm, faceOffsetAB_perm, faceOffsetBA_perm, + matrixAB_perm, matrixBA_perm, signsB_perm, scalesB_perm, false ); + + if ( !done ) { + VertexAFaceBTests( done, minDistSqr, localPointA_perm, localPointB_perm, + featureA, featureB, + hB_perm, faceOffsetAB_perm, faceOffsetBA_perm, + matrixAB_perm, matrixBA_perm, signsA_perm, scalesA_perm, false ); + } + } + } else if ( axisType == B_AXIS ) { + VertexAFaceBTests( done, minDistSqr, localPointA_perm, localPointB_perm, + featureA, featureB, + hB_perm, faceOffsetAB_perm, faceOffsetBA_perm, + matrixAB_perm, matrixBA_perm, signsA_perm, scalesA_perm, true ); + + if ( !done ) { + VertexBFaceATests( done, minDistSqr, localPointA_perm, localPointB_perm, + featureA, featureB, + hA_perm, faceOffsetAB_perm, faceOffsetBA_perm, + matrixAB_perm, matrixBA_perm, signsB_perm, scalesB_perm, false ); + + if ( !done ) { + EdgeEdgeTests( done, minDistSqr, localPointA_perm, localPointB_perm, + otherFaceDimA, otherFaceDimB, featureA, featureB, + hA_perm, hB_perm, faceOffsetAB_perm, faceOffsetBA_perm, + matrixAB_perm, matrixBA_perm, signsA_perm, signsB_perm, + scalesA_perm, scalesB_perm, false ); + } + } + } else { + VertexBFaceATests( done, minDistSqr, localPointA_perm, localPointB_perm, + featureA, featureB, + hA_perm, faceOffsetAB_perm, faceOffsetBA_perm, + matrixAB_perm, matrixBA_perm, signsB_perm, scalesB_perm, true ); + + if ( !done ) { + VertexAFaceBTests( done, minDistSqr, localPointA_perm, localPointB_perm, + featureA, featureB, + hB_perm, faceOffsetAB_perm, faceOffsetBA_perm, + matrixAB_perm, matrixBA_perm, signsA_perm, scalesA_perm, false ); + + if ( !done ) { + EdgeEdgeTests( done, minDistSqr, localPointA_perm, localPointB_perm, + otherFaceDimA, otherFaceDimB, featureA, featureB, + hA_perm, hB_perm, faceOffsetAB_perm, faceOffsetBA_perm, + matrixAB_perm, matrixBA_perm, signsA_perm, signsB_perm, + scalesA_perm, scalesB_perm, false ); + } + } + } + + // convert local points from face-local to box-local coordinate system + + boxPointA.localPoint = Point3( aperm_col * Vector3( localPointA_perm ) ); + boxPointB.localPoint = Point3( bperm_col * Vector3( localPointB_perm ) ); + + // find which features of the boxes are involved. + // the only feature pairs which occur in this function are VF, FV, and EE, even though the + // closest points might actually lie on sub-features, as in a VF contact might be used for + // what's actually a VV contact. this means some feature pairs could possibly seem distinct + // from others, although their contact positions are the same. don't know yet whether this + // matters. + + int sA[3], sB[3]; + + sA[0] = boxPointA.localPoint.getX() > 0.0f; + sA[1] = boxPointA.localPoint.getY() > 0.0f; + sA[2] = boxPointA.localPoint.getZ() > 0.0f; + + sB[0] = boxPointB.localPoint.getX() > 0.0f; + sB[1] = boxPointB.localPoint.getY() > 0.0f; + sB[2] = boxPointB.localPoint.getZ() > 0.0f; + + if ( featureA == F ) { + boxPointA.setFaceFeature( dimA[2], sA[dimA[2]] ); + } else if ( featureA == E ) { + boxPointA.setEdgeFeature( dimA[2], sA[dimA[2]], dimA[otherFaceDimA], sA[dimA[otherFaceDimA]] ); + } else { + boxPointA.setVertexFeature( sA[0], sA[1], sA[2] ); + } + + if ( featureB == F ) { + boxPointB.setFaceFeature( dimB[2], sB[dimB[2]] ); + } else if ( featureB == E ) { + boxPointB.setEdgeFeature( dimB[2], sB[dimB[2]], dimB[otherFaceDimB], sB[dimB[otherFaceDimB]] ); + } else { + boxPointB.setVertexFeature( sB[0], sB[1], sB[2] ); + } + + normal = transformA * axisA; + + if ( maxGap < 0.0f ) { + return (maxGap); + } else { + return (sqrtf( minDistSqr )); + } +} diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.h b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.h new file mode 100644 index 00000000000..c58e257c026 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.h @@ -0,0 +1,66 @@ +/* + Copyright (C) 2006, 2008 Sony Computer Entertainment Inc. + All rights reserved. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +*/ + + +#ifndef __BOXBOXDISTANCE_H__ +#define __BOXBOXDISTANCE_H__ + + +#include "Box.h" + +using namespace Vectormath::Aos; + +//--------------------------------------------------------------------------- +// boxBoxDistance: +// +// description: +// this computes info that can be used for the collision response of two boxes. when the boxes +// do not overlap, the points are set to the closest points of the boxes, and a positive +// distance between them is returned. if the boxes do overlap, a negative distance is returned +// and the points are set to two points that would touch after the boxes are translated apart. +// the contact normal gives the direction to repel or separate the boxes when they touch or +// overlap (it's being approximated here as one of the 15 "separating axis" directions). +// +// returns: +// positive or negative distance between two boxes. +// +// args: +// Vector3& normal: set to a unit contact normal pointing from box A to box B. +// +// BoxPoint& boxPointA, BoxPoint& boxPointB: +// set to a closest point or point of penetration on each box. +// +// Box boxA, Box boxB: +// boxes, represented as 3 half-widths +// +// const Transform3& transformA, const Transform3& transformB: +// box transformations, in world coordinates +// +// float distanceThreshold: +// the algorithm will exit early if it finds that the boxes are more distant than this +// threshold, and not compute a contact normal or points. if this distance returned +// exceeds the threshold, all the other output data may not have been computed. by +// default, this is set to MAX_FLOAT so it will have no effect. +// +//--------------------------------------------------------------------------- + +float +boxBoxDistance(Vector3& normal, BoxPoint& boxPointA, BoxPoint& boxPointB, + PE_REF(Box) boxA, const Transform3 & transformA, PE_REF(Box) boxB, + const Transform3 & transformB, + float distanceThreshold = FLT_MAX ); + +#endif /* __BOXBOXDISTANCE_H__ */ diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/readme.txt b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/readme.txt new file mode 100644 index 00000000000..5b4a907058f --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/readme.txt @@ -0,0 +1 @@ +Empty placeholder for future Libspe2 SPU task diff --git a/extern/bullet2/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.cpp b/extern/bullet2/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.cpp new file mode 100644 index 00000000000..fe61955572f --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.cpp @@ -0,0 +1,214 @@ +/* +Bullet Continuous Collision Detection and Physics Library, Copyright (c) 2007 Erwin Coumans + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +*/ + + +#include "SpuSampleTask.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" +#include "../PlatformDefinitions.h" +#include "../SpuFakeDma.h" +#include "LinearMath/btMinMax.h" + +#ifdef __SPU__ +#include +#else +#include +#define spu_printf printf +#endif + +#define MAX_NUM_BODIES 8192 + +struct SampleTask_LocalStoreMemory +{ + ATTRIBUTE_ALIGNED16(char gLocalRigidBody [sizeof(btRigidBody)+16]); + ATTRIBUTE_ALIGNED16(void* gPointerArray[MAX_NUM_BODIES]); + +}; + + + + +//-- MAIN METHOD +void processSampleTask(void* userPtr, void* lsMemory) +{ + // BT_PROFILE("processSampleTask"); + + SampleTask_LocalStoreMemory* localMemory = (SampleTask_LocalStoreMemory*)lsMemory; + + SpuSampleTaskDesc* taskDescPtr = (SpuSampleTaskDesc*)userPtr; + SpuSampleTaskDesc& taskDesc = *taskDescPtr; + + switch (taskDesc.m_sampleCommand) + { + case CMD_SAMPLE_INTEGRATE_BODIES: + { + btTransform predictedTrans; + btCollisionObject** eaPtr = (btCollisionObject**)taskDesc.m_mainMemoryPtr; + + int batchSize = taskDesc.m_sampleValue; + if (batchSize>MAX_NUM_BODIES) + { + spu_printf("SPU Error: exceed number of bodies, see MAX_NUM_BODIES in SpuSampleTask.cpp\n"); + break; + } + int dmaArraySize = batchSize*sizeof(void*); + + uint64_t ppuArrayAddress = reinterpret_cast(eaPtr); + + // spu_printf("array location is at %llx, batchSize = %d, DMA size = %d\n",ppuArrayAddress,batchSize,dmaArraySize); + + if (dmaArraySize>=16) + { + cellDmaLargeGet((void*)&localMemory->gPointerArray[0], ppuArrayAddress , dmaArraySize, DMA_TAG(1), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(1)); + } else + { + stallingUnalignedDmaSmallGet((void*)&localMemory->gPointerArray[0], ppuArrayAddress , dmaArraySize); + } + + + for ( int i=0;igLocalRigidBody[0]; + void* shortAdd = localMemory->gPointerArray[i]; + uint64_t ppuRigidBodyAddress = reinterpret_cast(shortAdd); + + // spu_printf("cellDmaGet at CMD_SAMPLE_INTEGRATE_BODIES from %llx to %llx\n",ppuRigidBodyAddress,localPtr); + + int dmaBodySize = sizeof(btRigidBody); + + cellDmaGet((void*)localPtr, ppuRigidBodyAddress , dmaBodySize, DMA_TAG(1), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(1)); + + + float timeStep = 1.f/60.f; + + btRigidBody* body = (btRigidBody*) localPtr;//btRigidBody::upcast(colObj); + if (body) + { + if (body->isActive() && (!body->isStaticOrKinematicObject())) + { + body->predictIntegratedTransform(timeStep, predictedTrans); + body->proceedToTransform( predictedTrans); + void* ptr = (void*)localPtr; + // spu_printf("cellDmaLargePut from %llx to LS %llx\n",ptr,ppuRigidBodyAddress); + + cellDmaLargePut(ptr, ppuRigidBodyAddress , dmaBodySize, DMA_TAG(1), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(1)); + + } + } + + } + break; + } + + + case CMD_SAMPLE_PREDICT_MOTION_BODIES: + { + btTransform predictedTrans; + btCollisionObject** eaPtr = (btCollisionObject**)taskDesc.m_mainMemoryPtr; + + int batchSize = taskDesc.m_sampleValue; + int dmaArraySize = batchSize*sizeof(void*); + + if (batchSize>MAX_NUM_BODIES) + { + spu_printf("SPU Error: exceed number of bodies, see MAX_NUM_BODIES in SpuSampleTask.cpp\n"); + break; + } + + uint64_t ppuArrayAddress = reinterpret_cast(eaPtr); + + // spu_printf("array location is at %llx, batchSize = %d, DMA size = %d\n",ppuArrayAddress,batchSize,dmaArraySize); + + if (dmaArraySize>=16) + { + cellDmaLargeGet((void*)&localMemory->gPointerArray[0], ppuArrayAddress , dmaArraySize, DMA_TAG(1), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(1)); + } else + { + stallingUnalignedDmaSmallGet((void*)&localMemory->gPointerArray[0], ppuArrayAddress , dmaArraySize); + } + + + for ( int i=0;igLocalRigidBody[0]; + void* shortAdd = localMemory->gPointerArray[i]; + uint64_t ppuRigidBodyAddress = reinterpret_cast(shortAdd); + + // spu_printf("cellDmaGet at CMD_SAMPLE_INTEGRATE_BODIES from %llx to %llx\n",ppuRigidBodyAddress,localPtr); + + int dmaBodySize = sizeof(btRigidBody); + + cellDmaGet((void*)localPtr, ppuRigidBodyAddress , dmaBodySize, DMA_TAG(1), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(1)); + + + float timeStep = 1.f/60.f; + + btRigidBody* body = (btRigidBody*) localPtr;//btRigidBody::upcast(colObj); + if (body) + { + if (!body->isStaticOrKinematicObject()) + { + if (body->isActive()) + { + body->integrateVelocities( timeStep); + //damping + body->applyDamping(timeStep); + + body->predictIntegratedTransform(timeStep,body->getInterpolationWorldTransform()); + + void* ptr = (void*)localPtr; + cellDmaLargePut(ptr, ppuRigidBodyAddress , dmaBodySize, DMA_TAG(1), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(1)); + } + } + } + + } + break; + } + + + + default: + { + + } + }; +} + + +#if defined(__CELLOS_LV2__) || defined (LIBSPE2) + +ATTRIBUTE_ALIGNED16(SampleTask_LocalStoreMemory gLocalStoreMemory); + +void* createSampleLocalStoreMemory() +{ + return &gLocalStoreMemory; +} +#else +void* createSampleLocalStoreMemory() +{ + return new SampleTask_LocalStoreMemory; +}; + +#endif diff --git a/extern/bullet2/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.h b/extern/bullet2/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.h new file mode 100644 index 00000000000..c8ebdfd6232 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.h @@ -0,0 +1,54 @@ +/* +Bullet Continuous Collision Detection and Physics Library, Copyright (c) 2007 Erwin Coumans + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +*/ + +#ifndef SPU_SAMPLE_TASK_H +#define SPU_SAMPLE_TASK_H + +#include "../PlatformDefinitions.h" +#include "LinearMath/btScalar.h" +#include "LinearMath/btVector3.h" +#include "LinearMath/btMatrix3x3.h" + +#include "LinearMath/btAlignedAllocator.h" + + +enum +{ + CMD_SAMPLE_INTEGRATE_BODIES = 1, + CMD_SAMPLE_PREDICT_MOTION_BODIES +}; + + + +ATTRIBUTE_ALIGNED16(struct) SpuSampleTaskDesc +{ + BT_DECLARE_ALIGNED_ALLOCATOR(); + + uint32_t m_sampleCommand; + uint32_t m_taskId; + + uint64_t m_mainMemoryPtr; + int m_sampleValue; + + +}; + + +void processSampleTask(void* userPtr, void* lsMemory); +void* createSampleLocalStoreMemory(); + + +#endif //SPU_SAMPLE_TASK_H + diff --git a/extern/bullet2/BulletMultiThreaded/SpuSampleTask/readme.txt b/extern/bullet2/BulletMultiThreaded/SpuSampleTask/readme.txt new file mode 100644 index 00000000000..5b4a907058f --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuSampleTask/readme.txt @@ -0,0 +1 @@ +Empty placeholder for future Libspe2 SPU task diff --git a/extern/bullet2/BulletMultiThreaded/SpuSampleTaskProcess.cpp b/extern/bullet2/BulletMultiThreaded/SpuSampleTaskProcess.cpp new file mode 100644 index 00000000000..11cb9e7c3f5 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuSampleTaskProcess.cpp @@ -0,0 +1,222 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +//#define __CELLOS_LV2__ 1 + +#define USE_SAMPLE_PROCESS 1 +#ifdef USE_SAMPLE_PROCESS + + +#include "SpuSampleTaskProcess.h" +#include + +#ifdef __SPU__ + + + +void SampleThreadFunc(void* userPtr,void* lsMemory) +{ + //do nothing + printf("hello world\n"); +} + + +void* SamplelsMemoryFunc() +{ + //don't create local store memory, just return 0 + return 0; +} + + +#else + + +#include "btThreadSupportInterface.h" + +//# include "SPUAssert.h" +#include + + + +extern "C" { + extern char SPU_SAMPLE_ELF_SYMBOL[]; +} + + + + + +SpuSampleTaskProcess::SpuSampleTaskProcess(btThreadSupportInterface* threadInterface, int maxNumOutstandingTasks) +:m_threadInterface(threadInterface), +m_maxNumOutstandingTasks(maxNumOutstandingTasks) +{ + + m_taskBusy.resize(m_maxNumOutstandingTasks); + m_spuSampleTaskDesc.resize(m_maxNumOutstandingTasks); + + for (int i = 0; i < m_maxNumOutstandingTasks; i++) + { + m_taskBusy[i] = false; + } + m_numBusyTasks = 0; + m_currentTask = 0; + + m_initialized = false; + + m_threadInterface->startSPU(); + + +} + +SpuSampleTaskProcess::~SpuSampleTaskProcess() +{ + m_threadInterface->stopSPU(); + +} + + + +void SpuSampleTaskProcess::initialize() +{ +#ifdef DEBUG_SPU_TASK_SCHEDULING + printf("SpuSampleTaskProcess::initialize()\n"); +#endif //DEBUG_SPU_TASK_SCHEDULING + + for (int i = 0; i < m_maxNumOutstandingTasks; i++) + { + m_taskBusy[i] = false; + } + m_numBusyTasks = 0; + m_currentTask = 0; + m_initialized = true; + +} + + +void SpuSampleTaskProcess::issueTask(void* sampleMainMemPtr,int sampleValue,int sampleCommand) +{ + +#ifdef DEBUG_SPU_TASK_SCHEDULING + printf("SpuSampleTaskProcess::issueTask (m_currentTask= %d\)n", m_currentTask); +#endif //DEBUG_SPU_TASK_SCHEDULING + + m_taskBusy[m_currentTask] = true; + m_numBusyTasks++; + + SpuSampleTaskDesc& taskDesc = m_spuSampleTaskDesc[m_currentTask]; + { + // send task description in event message + // no error checking here... + // but, currently, event queue can be no larger than NUM_WORKUNIT_TASKS. + + taskDesc.m_mainMemoryPtr = reinterpret_cast(sampleMainMemPtr); + taskDesc.m_sampleValue = sampleValue; + taskDesc.m_sampleCommand = sampleCommand; + + //some bookkeeping to recognize finished tasks + taskDesc.m_taskId = m_currentTask; + } + + + m_threadInterface->sendRequest(1, (ppu_address_t) &taskDesc, m_currentTask); + + // if all tasks busy, wait for spu event to clear the task. + + if (m_numBusyTasks >= m_maxNumOutstandingTasks) + { + unsigned int taskId; + unsigned int outputSize; + + for (int i=0;iwaitForResponse(&taskId, &outputSize); + + //printf("PPU: after issue, received event: %u %d\n", taskId, outputSize); + + postProcess(taskId, outputSize); + + m_taskBusy[taskId] = false; + + m_numBusyTasks--; + } + + // find new task buffer + for (int i = 0; i < m_maxNumOutstandingTasks; i++) + { + if (!m_taskBusy[i]) + { + m_currentTask = i; + break; + } + } +} + + +///Optional PPU-size post processing for each task +void SpuSampleTaskProcess::postProcess(int taskId, int outputSize) +{ + +} + + +void SpuSampleTaskProcess::flush() +{ +#ifdef DEBUG_SPU_TASK_SCHEDULING + printf("\nSpuCollisionTaskProcess::flush()\n"); +#endif //DEBUG_SPU_TASK_SCHEDULING + + + // all tasks are issued, wait for all tasks to be complete + while(m_numBusyTasks > 0) + { +// Consolidating SPU code + unsigned int taskId; + unsigned int outputSize; + + for (int i=0;iwaitForResponse(&taskId, &outputSize); + } + + //printf("PPU: flushing, received event: %u %d\n", taskId, outputSize); + + postProcess(taskId, outputSize); + + m_taskBusy[taskId] = false; + + m_numBusyTasks--; + } + + +} + +#endif + + +#endif //USE_SAMPLE_PROCESS diff --git a/extern/bullet2/BulletMultiThreaded/SpuSampleTaskProcess.h b/extern/bullet2/BulletMultiThreaded/SpuSampleTaskProcess.h new file mode 100644 index 00000000000..d733a9a8528 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuSampleTaskProcess.h @@ -0,0 +1,153 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SPU_SAMPLE_TASK_PROCESS_H +#define SPU_SAMPLE_TASK_PROCESS_H + +#include + + +#include "PlatformDefinitions.h" + +#include + +#include "LinearMath/btAlignedObjectArray.h" + + +#include "SpuSampleTask/SpuSampleTask.h" + + +//just add your commands here, try to keep them globally unique for debugging purposes +#define CMD_SAMPLE_TASK_COMMAND 10 + + + +/// SpuSampleTaskProcess handles SPU processing of collision pairs. +/// When PPU issues a task, it will look for completed task buffers +/// PPU will do postprocessing, dependent on workunit output (not likely) +class SpuSampleTaskProcess +{ + // track task buffers that are being used, and total busy tasks + btAlignedObjectArray m_taskBusy; + btAlignedObjectArraym_spuSampleTaskDesc; + + int m_numBusyTasks; + + // the current task and the current entry to insert a new work unit + int m_currentTask; + + bool m_initialized; + + void postProcess(int taskId, int outputSize); + + class btThreadSupportInterface* m_threadInterface; + + int m_maxNumOutstandingTasks; + + + +public: + SpuSampleTaskProcess(btThreadSupportInterface* threadInterface, int maxNumOutstandingTasks); + + ~SpuSampleTaskProcess(); + + ///call initialize in the beginning of the frame, before addCollisionPairToTask + void initialize(); + + void issueTask(void* sampleMainMemPtr,int sampleValue,int sampleCommand); + + ///call flush to submit potential outstanding work to SPUs and wait for all involved SPUs to be finished + void flush(); +}; + + +#if defined(USE_LIBSPE2) && defined(__SPU__) +////////////////////MAIN///////////////////////////// +#include "../SpuLibspe2Support.h" +#include +#include +#include + +void * SamplelsMemoryFunc(); +void SampleThreadFunc(void* userPtr,void* lsMemory); + +//#define DEBUG_LIBSPE2_MAINLOOP + +int main(unsigned long long speid, addr64 argp, addr64 envp) +{ + printf("SPU is up \n"); + + ATTRIBUTE_ALIGNED128(btSpuStatus status); + ATTRIBUTE_ALIGNED16( SpuSampleTaskDesc taskDesc ) ; + unsigned int received_message = Spu_Mailbox_Event_Nothing; + bool shutdown = false; + + cellDmaGet(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(3)); + + status.m_status = Spu_Status_Free; + status.m_lsMemory.p = SamplelsMemoryFunc(); + + cellDmaLargePut(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(3)); + + + while (!shutdown) + { + received_message = spu_read_in_mbox(); + + + + switch(received_message) + { + case Spu_Mailbox_Event_Shutdown: + shutdown = true; + break; + case Spu_Mailbox_Event_Task: + // refresh the status +#ifdef DEBUG_LIBSPE2_MAINLOOP + printf("SPU recieved Task \n"); +#endif //DEBUG_LIBSPE2_MAINLOOP + cellDmaGet(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(3)); + + btAssert(status.m_status==Spu_Status_Occupied); + + cellDmaGet(&taskDesc, status.m_taskDesc.p, sizeof(SpuSampleTaskDesc), DMA_TAG(3), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(3)); + + SampleThreadFunc((void*)&taskDesc, reinterpret_cast (taskDesc.m_mainMemoryPtr) ); + break; + case Spu_Mailbox_Event_Nothing: + default: + break; + } + + // set to status free and wait for next task + status.m_status = Spu_Status_Free; + cellDmaLargePut(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); + cellDmaWaitTagStatusAll(DMA_MASK(3)); + + + } + return 0; +} +////////////////////////////////////////////////////// +#endif + + + +#endif // SPU_SAMPLE_TASK_PROCESS_H + diff --git a/extern/bullet2/BulletMultiThreaded/SpuSync.h b/extern/bullet2/BulletMultiThreaded/SpuSync.h new file mode 100644 index 00000000000..b90d0fcbfd4 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/SpuSync.h @@ -0,0 +1,148 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2007 Starbreeze Studios + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Written by: Marten Svanfeldt +*/ + +#ifndef SPU_SYNC_H +#define SPU_SYNC_H + + +#include "PlatformDefinitions.h" + + +#if defined(WIN32) + +#define WIN32_LEAN_AND_MEAN +#ifdef _XBOX +#include +#else +#include +#endif + +///The btSpinlock is a structure to allow multi-platform synchronization. This allows to port the SPU tasks to other platforms. +class btSpinlock +{ +public: + //typedef volatile LONG SpinVariable; + typedef CRITICAL_SECTION SpinVariable; + + btSpinlock (SpinVariable* var) + : spinVariable (var) + {} + + void Init () + { + //*spinVariable = 0; + InitializeCriticalSection(spinVariable); + } + + void Lock () + { + EnterCriticalSection(spinVariable); + } + + void Unlock () + { + LeaveCriticalSection(spinVariable); + } + +private: + SpinVariable* spinVariable; +}; + + +#elif defined (__CELLOS_LV2__) + +//#include +#include + +///The btSpinlock is a structure to allow multi-platform synchronization. This allows to port the SPU tasks to other platforms. +class btSpinlock +{ +public: + typedef CellSyncMutex SpinVariable; + + btSpinlock (SpinVariable* var) + : spinVariable (var) + {} + + void Init () + { +#ifndef __SPU__ + //*spinVariable = 1; + cellSyncMutexInitialize(spinVariable); +#endif + } + + + + void Lock () + { +#ifdef __SPU__ + // lock semaphore + /*while (cellAtomicTestAndDecr32(atomic_buf, (uint64_t)spinVariable) == 0) + { + + };*/ + cellSyncMutexLock((uint64_t)spinVariable); +#endif + } + + void Unlock () + { +#ifdef __SPU__ + //cellAtomicIncr32(atomic_buf, (uint64_t)spinVariable); + cellSyncMutexUnlock((uint64_t)spinVariable); +#endif + } + + +private: + SpinVariable* spinVariable; + ATTRIBUTE_ALIGNED128(uint32_t atomic_buf[32]); +}; + +#else +//create a dummy implementation (without any locking) useful for serial processing +class btSpinlock +{ +public: + typedef int SpinVariable; + + btSpinlock (SpinVariable* var) + : spinVariable (var) + {} + + void Init () + { + } + + void Lock () + { + } + + void Unlock () + { + } + +private: + SpinVariable* spinVariable; +}; + + +#endif + + +#endif diff --git a/extern/bullet2/BulletMultiThreaded/Win32ThreadSupport.cpp b/extern/bullet2/BulletMultiThreaded/Win32ThreadSupport.cpp new file mode 100644 index 00000000000..42b60a460e0 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/Win32ThreadSupport.cpp @@ -0,0 +1,262 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "Win32ThreadSupport.h" + +#ifdef USE_WIN32_THREADING + +#include + +#include "SpuCollisionTaskProcess.h" + +#include "SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h" + + + +///The number of threads should be equal to the number of available cores +///@todo: each worker should be linked to a single core, using SetThreadIdealProcessor. + +///Win32ThreadSupport helps to initialize/shutdown libspe2, start/stop SPU tasks and communication +///Setup and initialize SPU/CELL/Libspe2 +Win32ThreadSupport::Win32ThreadSupport(const Win32ThreadConstructionInfo & threadConstructionInfo) +{ + m_maxNumTasks = threadConstructionInfo.m_numThreads; + startThreads(threadConstructionInfo); +} + +///cleanup/shutdown Libspe2 +Win32ThreadSupport::~Win32ThreadSupport() +{ + stopSPU(); +} + + + + +#include + +DWORD WINAPI Thread_no_1( LPVOID lpParam ) +{ + + Win32ThreadSupport::btSpuStatus* status = (Win32ThreadSupport::btSpuStatus*)lpParam; + + + while (1) + { + WaitForSingleObject(status->m_eventStartHandle,INFINITE); + + void* userPtr = status->m_userPtr; + + if (userPtr) + { + btAssert(status->m_status); + status->m_userThreadFunc(userPtr,status->m_lsMemory); + status->m_status = 2; + SetEvent(status->m_eventCompletetHandle); + } else + { + //exit Thread + status->m_status = 3; + SetEvent(status->m_eventCompletetHandle); + printf("Thread with taskId %i with handle %p exiting\n",status->m_taskId, status->m_threadHandle); + break; + } + + } + + printf("Thread TERMINATED\n"); + return 0; + +} + +///send messages to SPUs +void Win32ThreadSupport::sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t taskId) +{ + /// gMidphaseSPU.sendRequest(CMD_GATHER_AND_PROCESS_PAIRLIST, (ppu_address_t) &taskDesc); + + ///we should spawn an SPU task here, and in 'waitForResponse' it should wait for response of the (one of) the first tasks that finished + + + + switch (uiCommand) + { + case CMD_GATHER_AND_PROCESS_PAIRLIST: + { + + +//#define SINGLE_THREADED 1 +#ifdef SINGLE_THREADED + + btSpuStatus& spuStatus = m_activeSpuStatus[0]; + spuStatus.m_userPtr=(void*)uiArgument0; + spuStatus.m_userThreadFunc(spuStatus.m_userPtr,spuStatus.m_lsMemory); + HANDLE handle =0; +#else + + + btSpuStatus& spuStatus = m_activeSpuStatus[taskId]; + btAssert(taskId>=0); + btAssert(int(taskId) 1); + spuStatus.m_status = 0; + + ///need to find an active spu + btAssert(last>=0); + +#else + last=0; + btSpuStatus& spuStatus = m_activeSpuStatus[last]; +#endif //SINGLE_THREADED + + + + *puiArgument0 = spuStatus.m_taskId; + *puiArgument1 = spuStatus.m_status; + + +} + + + +void Win32ThreadSupport::startThreads(const Win32ThreadConstructionInfo& threadConstructionInfo) +{ + + m_activeSpuStatus.resize(threadConstructionInfo.m_numThreads); + m_completeHandles.resize(threadConstructionInfo.m_numThreads); + + m_maxNumTasks = threadConstructionInfo.m_numThreads; + + for (int i=0;i0) + { + WaitForSingleObject(spuStatus.m_eventCompletetHandle, INFINITE); + } + + + spuStatus.m_userPtr = 0; + SetEvent(spuStatus.m_eventStartHandle); + WaitForSingleObject(spuStatus.m_eventCompletetHandle, INFINITE); + + CloseHandle(spuStatus.m_eventCompletetHandle); + CloseHandle(spuStatus.m_eventStartHandle); + CloseHandle(spuStatus.m_threadHandle); + } + + m_activeSpuStatus.clear(); + m_completeHandles.clear(); + +} + +#endif //USE_WIN32_THREADING diff --git a/extern/bullet2/BulletMultiThreaded/Win32ThreadSupport.h b/extern/bullet2/BulletMultiThreaded/Win32ThreadSupport.h new file mode 100644 index 00000000000..c61ad901c07 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/Win32ThreadSupport.h @@ -0,0 +1,132 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "LinearMath/btScalar.h" +#include "PlatformDefinitions.h" + +#ifdef USE_WIN32_THREADING //platform specific defines are defined in PlatformDefinitions.h + +#ifndef WIN32_THREAD_SUPPORT_H +#define WIN32_THREAD_SUPPORT_H + +#include "LinearMath/btAlignedObjectArray.h" + +#include "btThreadSupportInterface.h" + + +typedef void (*Win32ThreadFunc)(void* userPtr,void* lsMemory); +typedef void* (*Win32lsMemorySetupFunc)(); + + + + + + +///Win32ThreadSupport helps to initialize/shutdown libspe2, start/stop SPU tasks and communication +class Win32ThreadSupport : public btThreadSupportInterface +{ +public: + ///placeholder, until libspe2 support is there + struct btSpuStatus + { + uint32_t m_taskId; + uint32_t m_commandId; + uint32_t m_status; + + Win32ThreadFunc m_userThreadFunc; + void* m_userPtr; //for taskDesc etc + void* m_lsMemory; //initialized using Win32LocalStoreMemorySetupFunc + + void* m_threadHandle; //this one is calling 'Win32ThreadFunc' + + void* m_eventStartHandle; + char m_eventStartHandleName[32]; + + void* m_eventCompletetHandle; + char m_eventCompletetHandleName[32]; + + + }; +private: + + btAlignedObjectArray m_activeSpuStatus; + btAlignedObjectArray m_completeHandles; + + int m_maxNumTasks; +public: + ///Setup and initialize SPU/CELL/Libspe2 + + struct Win32ThreadConstructionInfo + { + Win32ThreadConstructionInfo(char* uniqueName, + Win32ThreadFunc userThreadFunc, + Win32lsMemorySetupFunc lsMemoryFunc, + int numThreads=1, + int threadStackSize=65535 + ) + :m_uniqueName(uniqueName), + m_userThreadFunc(userThreadFunc), + m_lsMemoryFunc(lsMemoryFunc), + m_numThreads(numThreads), + m_threadStackSize(threadStackSize) + { + + } + + char* m_uniqueName; + Win32ThreadFunc m_userThreadFunc; + Win32lsMemorySetupFunc m_lsMemoryFunc; + int m_numThreads; + int m_threadStackSize; + + }; + + + + Win32ThreadSupport(const Win32ThreadConstructionInfo& threadConstructionInfo); + +///cleanup/shutdown Libspe2 + virtual ~Win32ThreadSupport(); + + void startThreads(const Win32ThreadConstructionInfo& threadInfo); + + +///send messages to SPUs + virtual void sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t uiArgument1); + +///check for messages from SPUs + virtual void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1); + +///start the spus (can be called at the beginning of each frame, to make sure that the right SPU program is loaded) + virtual void startSPU(); + +///tell the task scheduler we are done with the SPU tasks + virtual void stopSPU(); + + virtual void setNumTasks(int numTasks) + { + m_maxNumTasks = numTasks; + } + + virtual int getNumTasks() const + { + return m_maxNumTasks; + } + +}; + +#endif //WIN32_THREAD_SUPPORT_H + +#endif //USE_WIN32_THREADING diff --git a/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphase.cpp b/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphase.cpp new file mode 100644 index 00000000000..84a5e59f0af --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphase.cpp @@ -0,0 +1,590 @@ +/* +Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org +Copyright (C) 2006, 2009 Sony Computer Entertainment Inc. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +///The 3 following lines include the CPU implementation of the kernels, keep them in this order. +#include "BulletMultiThreaded/btGpuDefines.h" +#include "BulletMultiThreaded/btGpuUtilsSharedDefs.h" +#include "BulletMultiThreaded/btGpuUtilsSharedCode.h" + + + +#include "LinearMath/btAlignedAllocator.h" +#include "LinearMath/btQuickprof.h" +#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h" + + + +#include "btGpuDefines.h" +#include "btGpuUtilsSharedDefs.h" + +#include "btGpu3DGridBroadphaseSharedDefs.h" + +#include "btGpu3DGridBroadphase.h" +#include //for memset + + +#include + + + +static bt3DGridBroadphaseParams s3DGridBroadphaseParams; + + + +btGpu3DGridBroadphase::btGpu3DGridBroadphase( const btVector3& worldAabbMin,const btVector3& worldAabbMax, + int gridSizeX, int gridSizeY, int gridSizeZ, + int maxSmallProxies, int maxLargeProxies, int maxPairsPerBody, + int maxBodiesPerCell, + btScalar cellFactorAABB) : + btSimpleBroadphase(maxSmallProxies, +// new (btAlignedAlloc(sizeof(btSortedOverlappingPairCache),16)) btSortedOverlappingPairCache), + new (btAlignedAlloc(sizeof(btHashedOverlappingPairCache),16)) btHashedOverlappingPairCache), + m_bInitialized(false), + m_numBodies(0) +{ + _initialize(worldAabbMin, worldAabbMax, gridSizeX, gridSizeY, gridSizeZ, + maxSmallProxies, maxLargeProxies, maxPairsPerBody, + maxBodiesPerCell, cellFactorAABB); +} + + + +btGpu3DGridBroadphase::btGpu3DGridBroadphase( btOverlappingPairCache* overlappingPairCache, + const btVector3& worldAabbMin,const btVector3& worldAabbMax, + int gridSizeX, int gridSizeY, int gridSizeZ, + int maxSmallProxies, int maxLargeProxies, int maxPairsPerBody, + int maxBodiesPerCell, + btScalar cellFactorAABB) : + btSimpleBroadphase(maxSmallProxies, overlappingPairCache), + m_bInitialized(false), + m_numBodies(0) +{ + _initialize(worldAabbMin, worldAabbMax, gridSizeX, gridSizeY, gridSizeZ, + maxSmallProxies, maxLargeProxies, maxPairsPerBody, + maxBodiesPerCell, cellFactorAABB); +} + + + +btGpu3DGridBroadphase::~btGpu3DGridBroadphase() +{ + //btSimpleBroadphase will free memory of btSortedOverlappingPairCache, because m_ownsPairCache + assert(m_bInitialized); + _finalize(); +} + + + +void btGpu3DGridBroadphase::_initialize( const btVector3& worldAabbMin,const btVector3& worldAabbMax, + int gridSizeX, int gridSizeY, int gridSizeZ, + int maxSmallProxies, int maxLargeProxies, int maxPairsPerBody, + int maxBodiesPerCell, + btScalar cellFactorAABB) +{ + // set various paramerers + m_ownsPairCache = true; + m_params.m_gridSizeX = gridSizeX; + m_params.m_gridSizeY = gridSizeY; + m_params.m_gridSizeZ = gridSizeZ; + m_params.m_numCells = m_params.m_gridSizeX * m_params.m_gridSizeY * m_params.m_gridSizeZ; + btVector3 w_org = worldAabbMin; + m_params.m_worldOriginX = w_org.getX(); + m_params.m_worldOriginY = w_org.getY(); + m_params.m_worldOriginZ = w_org.getZ(); + btVector3 w_size = worldAabbMax - worldAabbMin; + m_params.m_cellSizeX = w_size.getX() / m_params.m_gridSizeX; + m_params.m_cellSizeY = w_size.getY() / m_params.m_gridSizeY; + m_params.m_cellSizeZ = w_size.getZ() / m_params.m_gridSizeZ; + m_maxRadius = btMin(btMin(m_params.m_cellSizeX, m_params.m_cellSizeY), m_params.m_cellSizeZ); + m_maxRadius *= btScalar(0.5f); + m_params.m_numBodies = m_numBodies; + m_params.m_maxBodiesPerCell = maxBodiesPerCell; + + m_numLargeHandles = 0; + m_maxLargeHandles = maxLargeProxies; + + m_maxPairsPerBody = maxPairsPerBody; + + m_cellFactorAABB = cellFactorAABB; + + m_LastLargeHandleIndex = -1; + + assert(!m_bInitialized); + // allocate host storage + m_hBodiesHash = new unsigned int[m_maxHandles * 2]; + memset(m_hBodiesHash, 0x00, m_maxHandles*2*sizeof(unsigned int)); + + m_hCellStart = new unsigned int[m_params.m_numCells]; + memset(m_hCellStart, 0x00, m_params.m_numCells * sizeof(unsigned int)); + + m_hPairBuffStartCurr = new unsigned int[m_maxHandles * 2 + 2]; + // --------------- for now, init with m_maxPairsPerBody for each body + m_hPairBuffStartCurr[0] = 0; + m_hPairBuffStartCurr[1] = 0; + for(int i = 1; i <= m_maxHandles; i++) + { + m_hPairBuffStartCurr[i * 2] = m_hPairBuffStartCurr[(i-1) * 2] + m_maxPairsPerBody; + m_hPairBuffStartCurr[i * 2 + 1] = 0; + } + //---------------- + unsigned int numAABB = m_maxHandles + m_maxLargeHandles; + m_hAABB = new bt3DGrid3F1U[numAABB * 2]; // AABB Min & Max + + m_hPairBuff = new unsigned int[m_maxHandles * m_maxPairsPerBody]; + memset(m_hPairBuff, 0x00, m_maxHandles * m_maxPairsPerBody * sizeof(unsigned int)); // needed? + + m_hPairScan = new unsigned int[m_maxHandles + 1]; + + m_hPairOut = new unsigned int[m_maxHandles * m_maxPairsPerBody]; + +// large proxies + + // allocate handles buffer and put all handles on free list + m_pLargeHandlesRawPtr = btAlignedAlloc(sizeof(btSimpleBroadphaseProxy) * m_maxLargeHandles, 16); + m_pLargeHandles = new(m_pLargeHandlesRawPtr) btSimpleBroadphaseProxy[m_maxLargeHandles]; + m_firstFreeLargeHandle = 0; + { + for (int i = m_firstFreeLargeHandle; i < m_maxLargeHandles; i++) + { + m_pLargeHandles[i].SetNextFree(i + 1); + m_pLargeHandles[i].m_uniqueId = m_maxHandles+2+i; + } + m_pLargeHandles[m_maxLargeHandles - 1].SetNextFree(0); + } + +// debug data + m_numPairsAdded = 0; + m_numOverflows = 0; + + m_bInitialized = true; +} + + + +void btGpu3DGridBroadphase::_finalize() +{ + assert(m_bInitialized); + delete [] m_hBodiesHash; + delete [] m_hCellStart; + delete [] m_hPairBuffStartCurr; + delete [] m_hAABB; + delete [] m_hPairBuff; + delete [] m_hPairScan; + delete [] m_hPairOut; + btAlignedFree(m_pLargeHandlesRawPtr); + m_bInitialized = false; +} + + + +void btGpu3DGridBroadphase::calculateOverlappingPairs(btDispatcher* dispatcher) +{ + if(m_numHandles <= 0) + { + BT_PROFILE("addLarge2LargePairsToCache"); + addLarge2LargePairsToCache(dispatcher); + return; + } + // update constants + setParameters(&m_params); + // prepare AABB array + prepareAABB(); + // calculate hash + calcHashAABB(); + // sort bodies based on hash + sortHash(); + // find start of each cell + findCellStart(); + // findOverlappingPairs (small/small) + findOverlappingPairs(); + // findOverlappingPairs (small/large) + findPairsLarge(); + // add pairs to CPU cache + computePairCacheChanges(); + scanOverlappingPairBuff(); + squeezeOverlappingPairBuff(); + addPairsToCache(dispatcher); + // find and add large/large pairs to CPU cache + addLarge2LargePairsToCache(dispatcher); + return; +} + + + +void btGpu3DGridBroadphase::addPairsToCache(btDispatcher* dispatcher) +{ + m_numPairsAdded = 0; + m_numPairsRemoved = 0; + for(int i = 0; i < m_numHandles; i++) + { + unsigned int num = m_hPairScan[i+1] - m_hPairScan[i]; + if(!num) + { + continue; + } + unsigned int* pInp = m_hPairOut + m_hPairScan[i]; + unsigned int index0 = m_hAABB[i * 2].uw; + btSimpleBroadphaseProxy* proxy0 = &m_pHandles[index0]; + for(unsigned int j = 0; j < num; j++) + { + unsigned int indx1_s = pInp[j]; + unsigned int index1 = indx1_s & (~BT_3DGRID_PAIR_ANY_FLG); + btSimpleBroadphaseProxy* proxy1; + if(index1 < (unsigned int)m_maxHandles) + { + proxy1 = &m_pHandles[index1]; + } + else + { + index1 -= m_maxHandles; + btAssert((index1 >= 0) && (index1 < (unsigned int)m_maxLargeHandles)); + proxy1 = &m_pLargeHandles[index1]; + } + if(indx1_s & BT_3DGRID_PAIR_NEW_FLG) + { + m_pairCache->addOverlappingPair(proxy0,proxy1); + m_numPairsAdded++; + } + else + { + m_pairCache->removeOverlappingPair(proxy0,proxy1,dispatcher); + m_numPairsRemoved++; + } + } + } +} + + + +btBroadphaseProxy* btGpu3DGridBroadphase::createProxy( const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr ,short int collisionFilterGroup,short int collisionFilterMask, btDispatcher* dispatcher,void* multiSapProxy) +{ + btBroadphaseProxy* proxy; + bool bIsLarge = isLargeProxy(aabbMin, aabbMax); + if(bIsLarge) + { + if (m_numLargeHandles >= m_maxLargeHandles) + { + ///you have to increase the cell size, so 'large' proxies become 'small' proxies (fitting a cell) + btAssert(0); + return 0; //should never happen, but don't let the game crash ;-) + } + btAssert((aabbMin[0]<= aabbMax[0]) && (aabbMin[1]<= aabbMax[1]) && (aabbMin[2]<= aabbMax[2])); + int newHandleIndex = allocLargeHandle(); + proxy = new (&m_pLargeHandles[newHandleIndex])btSimpleBroadphaseProxy(aabbMin,aabbMax,shapeType,userPtr,collisionFilterGroup,collisionFilterMask,multiSapProxy); + } + else + { + proxy = btSimpleBroadphase::createProxy(aabbMin, aabbMax, shapeType, userPtr, collisionFilterGroup, collisionFilterMask, dispatcher, multiSapProxy); + } + return proxy; +} + + + +void btGpu3DGridBroadphase::destroyProxy(btBroadphaseProxy* proxy, btDispatcher* dispatcher) +{ + bool bIsLarge = isLargeProxy(proxy); + if(bIsLarge) + { + + btSimpleBroadphaseProxy* proxy0 = static_cast(proxy); + freeLargeHandle(proxy0); + m_pairCache->removeOverlappingPairsContainingProxy(proxy,dispatcher); + } + else + { + btSimpleBroadphase::destroyProxy(proxy, dispatcher); + } + return; +} + + + +void btGpu3DGridBroadphase::resetPool(btDispatcher* dispatcher) +{ + m_hPairBuffStartCurr[0] = 0; + m_hPairBuffStartCurr[1] = 0; + for(int i = 1; i <= m_maxHandles; i++) + { + m_hPairBuffStartCurr[i * 2] = m_hPairBuffStartCurr[(i-1) * 2] + m_maxPairsPerBody; + m_hPairBuffStartCurr[i * 2 + 1] = 0; + } +} + + + +bool btGpu3DGridBroadphase::isLargeProxy(const btVector3& aabbMin, const btVector3& aabbMax) +{ + btVector3 diag = aabbMax - aabbMin; + + ///use the bounding sphere radius of this bounding box, to include rotation + btScalar radius = diag.length() * btScalar(0.5f); + radius *= m_cellFactorAABB; // user-defined factor + + return (radius > m_maxRadius); +} + + + +bool btGpu3DGridBroadphase::isLargeProxy(btBroadphaseProxy* proxy) +{ + return (proxy->getUid() >= (m_maxHandles+2)); +} + + + +void btGpu3DGridBroadphase::addLarge2LargePairsToCache(btDispatcher* dispatcher) +{ + int i,j; + if (m_numLargeHandles <= 0) + { + return; + } + int new_largest_index = -1; + for(i = 0; i <= m_LastLargeHandleIndex; i++) + { + btSimpleBroadphaseProxy* proxy0 = &m_pLargeHandles[i]; + if(!proxy0->m_clientObject) + { + continue; + } + new_largest_index = i; + for(j = i + 1; j <= m_LastLargeHandleIndex; j++) + { + btSimpleBroadphaseProxy* proxy1 = &m_pLargeHandles[j]; + if(!proxy1->m_clientObject) + { + continue; + } + btAssert(proxy0 != proxy1); + btSimpleBroadphaseProxy* p0 = getSimpleProxyFromProxy(proxy0); + btSimpleBroadphaseProxy* p1 = getSimpleProxyFromProxy(proxy1); + if(aabbOverlap(p0,p1)) + { + if (!m_pairCache->findPair(proxy0,proxy1)) + { + m_pairCache->addOverlappingPair(proxy0,proxy1); + } + } + else + { + if(m_pairCache->findPair(proxy0,proxy1)) + { + m_pairCache->removeOverlappingPair(proxy0,proxy1,dispatcher); + } + } + } + } + m_LastLargeHandleIndex = new_largest_index; + return; +} + + + +void btGpu3DGridBroadphase::rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback) +{ + btSimpleBroadphase::rayTest(rayFrom, rayTo, rayCallback); + for (int i=0; i <= m_LastLargeHandleIndex; i++) + { + btSimpleBroadphaseProxy* proxy = &m_pLargeHandles[i]; + if(!proxy->m_clientObject) + { + continue; + } + rayCallback.process(proxy); + } +} + + + +// +// overrides for CPU version +// + + + +void btGpu3DGridBroadphase::prepareAABB() +{ + BT_PROFILE("prepareAABB"); + bt3DGrid3F1U* pBB = m_hAABB; + int i; + int new_largest_index = -1; + unsigned int num_small = 0; + for(i = 0; i <= m_LastHandleIndex; i++) + { + btSimpleBroadphaseProxy* proxy0 = &m_pHandles[i]; + if(!proxy0->m_clientObject) + { + continue; + } + new_largest_index = i; + pBB->fx = proxy0->m_aabbMin.getX(); + pBB->fy = proxy0->m_aabbMin.getY(); + pBB->fz = proxy0->m_aabbMin.getZ(); + pBB->uw = i; + pBB++; + pBB->fx = proxy0->m_aabbMax.getX(); + pBB->fy = proxy0->m_aabbMax.getY(); + pBB->fz = proxy0->m_aabbMax.getZ(); + pBB->uw = num_small; + pBB++; + num_small++; + } + m_LastHandleIndex = new_largest_index; + new_largest_index = -1; + unsigned int num_large = 0; + for(i = 0; i <= m_LastLargeHandleIndex; i++) + { + btSimpleBroadphaseProxy* proxy0 = &m_pLargeHandles[i]; + if(!proxy0->m_clientObject) + { + continue; + } + new_largest_index = i; + pBB->fx = proxy0->m_aabbMin.getX(); + pBB->fy = proxy0->m_aabbMin.getY(); + pBB->fz = proxy0->m_aabbMin.getZ(); + pBB->uw = i + m_maxHandles; + pBB++; + pBB->fx = proxy0->m_aabbMax.getX(); + pBB->fy = proxy0->m_aabbMax.getY(); + pBB->fz = proxy0->m_aabbMax.getZ(); + pBB->uw = num_large + m_maxHandles; + pBB++; + num_large++; + } + m_LastLargeHandleIndex = new_largest_index; + // paranoid checks + btAssert(num_small == m_numHandles); + btAssert(num_large == m_numLargeHandles); + return; +} + + + +void btGpu3DGridBroadphase::setParameters(bt3DGridBroadphaseParams* hostParams) +{ + s3DGridBroadphaseParams = *hostParams; + return; +} + + + +void btGpu3DGridBroadphase::calcHashAABB() +{ + BT_PROFILE("bt3DGrid_calcHashAABB"); + btGpu_calcHashAABB(m_hAABB, m_hBodiesHash, m_numHandles); + return; +} + + + +void btGpu3DGridBroadphase::sortHash() +{ + class bt3DGridHashKey + { + public: + unsigned int hash; + unsigned int index; + void quickSort(bt3DGridHashKey* pData, int lo, int hi) + { + int i=lo, j=hi; + bt3DGridHashKey x = pData[(lo+hi)/2]; + do + { + while(pData[i].hash > x.hash) i++; + while(x.hash > pData[j].hash) j--; + if(i <= j) + { + bt3DGridHashKey t = pData[i]; + pData[i] = pData[j]; + pData[j] = t; + i++; j--; + } + } while(i <= j); + if(lo < j) pData->quickSort(pData, lo, j); + if(i < hi) pData->quickSort(pData, i, hi); + } + }; + BT_PROFILE("bt3DGrid_sortHash"); + bt3DGridHashKey* pHash = (bt3DGridHashKey*)m_hBodiesHash; + pHash->quickSort(pHash, 0, m_numHandles - 1); + return; +} + + + +void btGpu3DGridBroadphase::findCellStart() +{ + BT_PROFILE("bt3DGrid_findCellStart"); + btGpu_findCellStart(m_hBodiesHash, m_hCellStart, m_numHandles, m_params.m_numCells); + return; +} + + + +void btGpu3DGridBroadphase::findOverlappingPairs() +{ + BT_PROFILE("bt3DGrid_findOverlappingPairs"); + btGpu_findOverlappingPairs(m_hAABB, m_hBodiesHash, m_hCellStart, m_hPairBuff, m_hPairBuffStartCurr, m_numHandles); + return; +} + + + +void btGpu3DGridBroadphase::findPairsLarge() +{ + BT_PROFILE("bt3DGrid_findPairsLarge"); + btGpu_findPairsLarge(m_hAABB, m_hBodiesHash, m_hCellStart, m_hPairBuff, m_hPairBuffStartCurr, m_numHandles, m_numLargeHandles); + return; +} + + + +void btGpu3DGridBroadphase::computePairCacheChanges() +{ + BT_PROFILE("bt3DGrid_computePairCacheChanges"); + btGpu_computePairCacheChanges(m_hPairBuff, m_hPairBuffStartCurr, m_hPairScan, m_hAABB, m_numHandles); + return; +} + + + +void btGpu3DGridBroadphase::scanOverlappingPairBuff() +{ + BT_PROFILE("bt3DGrid_scanOverlappingPairBuff"); + m_hPairScan[0] = 0; + for(int i = 1; i <= m_numHandles; i++) + { + unsigned int delta = m_hPairScan[i]; + m_hPairScan[i] = m_hPairScan[i-1] + delta; + } + return; +} + + + +void btGpu3DGridBroadphase::squeezeOverlappingPairBuff() +{ + BT_PROFILE("bt3DGrid_squeezeOverlappingPairBuff"); + btGpu_squeezeOverlappingPairBuff(m_hPairBuff, m_hPairBuffStartCurr, m_hPairScan, m_hPairOut, m_hAABB, m_numHandles); + return; +} + + + +#include "btGpu3DGridBroadphaseSharedCode.h" + + diff --git a/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphase.h b/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphase.h new file mode 100644 index 00000000000..1d49a0557ae --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphase.h @@ -0,0 +1,138 @@ +/* +Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org +Copyright (C) 2006, 2009 Sony Computer Entertainment Inc. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +//---------------------------------------------------------------------------------------- + +#ifndef BTGPU3DGRIDBROADPHASE_H +#define BTGPU3DGRIDBROADPHASE_H + +//---------------------------------------------------------------------------------------- + +#include "BulletCollision/BroadphaseCollision/btSimpleBroadphase.h" + +#include "btGpu3DGridBroadphaseSharedTypes.h" + +//---------------------------------------------------------------------------------------- + +///The btGpu3DGridBroadphase uses GPU-style code compiled for CPU to compute overlapping pairs + +class btGpu3DGridBroadphase : public btSimpleBroadphase +{ +protected: + bool m_bInitialized; + unsigned int m_numBodies; + unsigned int m_numCells; + unsigned int m_maxPairsPerBody; + btScalar m_cellFactorAABB; + unsigned int m_maxBodiesPerCell; + bt3DGridBroadphaseParams m_params; + btScalar m_maxRadius; + // CPU data + unsigned int* m_hBodiesHash; + unsigned int* m_hCellStart; + unsigned int* m_hPairBuffStartCurr; + bt3DGrid3F1U* m_hAABB; + unsigned int* m_hPairBuff; + unsigned int* m_hPairScan; + unsigned int* m_hPairOut; +// large proxies + int m_numLargeHandles; + int m_maxLargeHandles; + int m_LastLargeHandleIndex; + btSimpleBroadphaseProxy* m_pLargeHandles; + void* m_pLargeHandlesRawPtr; + int m_firstFreeLargeHandle; + int allocLargeHandle() + { + btAssert(m_numLargeHandles < m_maxLargeHandles); + int freeLargeHandle = m_firstFreeLargeHandle; + m_firstFreeLargeHandle = m_pLargeHandles[freeLargeHandle].GetNextFree(); + m_numLargeHandles++; + if(freeLargeHandle > m_LastLargeHandleIndex) + { + m_LastLargeHandleIndex = freeLargeHandle; + } + return freeLargeHandle; + } + void freeLargeHandle(btSimpleBroadphaseProxy* proxy) + { + int handle = int(proxy - m_pLargeHandles); + btAssert((handle >= 0) && (handle < m_maxHandles)); + if(handle == m_LastLargeHandleIndex) + { + m_LastLargeHandleIndex--; + } + proxy->SetNextFree(m_firstFreeLargeHandle); + m_firstFreeLargeHandle = handle; + proxy->m_clientObject = 0; + m_numLargeHandles--; + } + bool isLargeProxy(const btVector3& aabbMin, const btVector3& aabbMax); + bool isLargeProxy(btBroadphaseProxy* proxy); +// debug + unsigned int m_numPairsAdded; + unsigned int m_numPairsRemoved; + unsigned int m_numOverflows; +// +public: + btGpu3DGridBroadphase(const btVector3& worldAabbMin,const btVector3& worldAabbMax, + int gridSizeX, int gridSizeY, int gridSizeZ, + int maxSmallProxies, int maxLargeProxies, int maxPairsPerBody, + int maxBodiesPerCell = 8, + btScalar cellFactorAABB = btScalar(1.0f)); + btGpu3DGridBroadphase( btOverlappingPairCache* overlappingPairCache, + const btVector3& worldAabbMin,const btVector3& worldAabbMax, + int gridSizeX, int gridSizeY, int gridSizeZ, + int maxSmallProxies, int maxLargeProxies, int maxPairsPerBody, + int maxBodiesPerCell = 8, + btScalar cellFactorAABB = btScalar(1.0f)); + virtual ~btGpu3DGridBroadphase(); + virtual void calculateOverlappingPairs(btDispatcher* dispatcher); + + virtual btBroadphaseProxy* createProxy(const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr ,short int collisionFilterGroup,short int collisionFilterMask, btDispatcher* dispatcher,void* multiSapProxy); + virtual void destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher); + virtual void rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback); + virtual void resetPool(btDispatcher* dispatcher); + +protected: + void _initialize( const btVector3& worldAabbMin,const btVector3& worldAabbMax, + int gridSizeX, int gridSizeY, int gridSizeZ, + int maxSmallProxies, int maxLargeProxies, int maxPairsPerBody, + int maxBodiesPerCell = 8, + btScalar cellFactorAABB = btScalar(1.0f)); + void _finalize(); + void addPairsToCache(btDispatcher* dispatcher); + void addLarge2LargePairsToCache(btDispatcher* dispatcher); + +// overrides for CPU version + virtual void setParameters(bt3DGridBroadphaseParams* hostParams); + virtual void prepareAABB(); + virtual void calcHashAABB(); + virtual void sortHash(); + virtual void findCellStart(); + virtual void findOverlappingPairs(); + virtual void findPairsLarge(); + virtual void computePairCacheChanges(); + virtual void scanOverlappingPairBuff(); + virtual void squeezeOverlappingPairBuff(); +}; + +//---------------------------------------------------------------------------------------- + +#endif //BTGPU3DGRIDBROADPHASE_H + +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- diff --git a/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedCode.h b/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedCode.h new file mode 100644 index 00000000000..e0afb87bb82 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedCode.h @@ -0,0 +1,430 @@ +/* +Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org +Copyright (C) 2006, 2009 Sony Computer Entertainment Inc. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +//---------------------------------------------------------------------------------------- + +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +// K E R N E L F U N C T I O N S +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- + +// calculate position in uniform grid +BT_GPU___device__ int3 bt3DGrid_calcGridPos(float4 p) +{ + int3 gridPos; + gridPos.x = (int)floor((p.x - BT_GPU_params.m_worldOriginX) / BT_GPU_params.m_cellSizeX); + gridPos.y = (int)floor((p.y - BT_GPU_params.m_worldOriginY) / BT_GPU_params.m_cellSizeY); + gridPos.z = (int)floor((p.z - BT_GPU_params.m_worldOriginZ) / BT_GPU_params.m_cellSizeZ); + return gridPos; +} // bt3DGrid_calcGridPos() + +//---------------------------------------------------------------------------------------- + +// calculate address in grid from position (clamping to edges) +BT_GPU___device__ uint bt3DGrid_calcGridHash(int3 gridPos) +{ + gridPos.x = BT_GPU_max(0, BT_GPU_min(gridPos.x, (int)BT_GPU_params.m_gridSizeX - 1)); + gridPos.y = BT_GPU_max(0, BT_GPU_min(gridPos.y, (int)BT_GPU_params.m_gridSizeY - 1)); + gridPos.z = BT_GPU_max(0, BT_GPU_min(gridPos.z, (int)BT_GPU_params.m_gridSizeZ - 1)); + return BT_GPU___mul24(BT_GPU___mul24(gridPos.z, BT_GPU_params.m_gridSizeY), BT_GPU_params.m_gridSizeX) + BT_GPU___mul24(gridPos.y, BT_GPU_params.m_gridSizeX) + gridPos.x; +} // bt3DGrid_calcGridHash() + +//---------------------------------------------------------------------------------------- + +// calculate grid hash value for each body using its AABB +BT_GPU___global__ void calcHashAABBD(bt3DGrid3F1U* pAABB, uint2* pHash, uint numBodies) +{ + int index = BT_GPU___mul24(BT_GPU_blockIdx.x, BT_GPU_blockDim.x) + BT_GPU_threadIdx.x; + if(index >= (int)numBodies) + { + return; + } + bt3DGrid3F1U bbMin = pAABB[index*2]; + bt3DGrid3F1U bbMax = pAABB[index*2 + 1]; + float4 pos; + pos.x = (bbMin.fx + bbMax.fx) * 0.5f; + pos.y = (bbMin.fy + bbMax.fy) * 0.5f; + pos.z = (bbMin.fz + bbMax.fz) * 0.5f; + // get address in grid + int3 gridPos = bt3DGrid_calcGridPos(pos); + uint gridHash = bt3DGrid_calcGridHash(gridPos); + // store grid hash and body index + pHash[index] = BT_GPU_make_uint2(gridHash, index); +} // calcHashAABBD() + +//---------------------------------------------------------------------------------------- + +BT_GPU___global__ void findCellStartD(uint2* pHash, uint* cellStart, uint numBodies) +{ + int index = BT_GPU___mul24(BT_GPU_blockIdx.x, BT_GPU_blockDim.x) + BT_GPU_threadIdx.x; + if(index >= (int)numBodies) + { + return; + } + uint2 sortedData = pHash[index]; + // Load hash data into shared memory so that we can look + // at neighboring body's hash value without loading + // two hash values per thread + BT_GPU___shared__ uint sharedHash[257]; + sharedHash[BT_GPU_threadIdx.x+1] = sortedData.x; + if((index > 0) && (BT_GPU_threadIdx.x == 0)) + { + // first thread in block must load neighbor body hash + volatile uint2 prevData = pHash[index-1]; + sharedHash[0] = prevData.x; + } + BT_GPU___syncthreads(); + if((index == 0) || (sortedData.x != sharedHash[BT_GPU_threadIdx.x])) + { + cellStart[sortedData.x] = index; + } +} // findCellStartD() + +//---------------------------------------------------------------------------------------- + +BT_GPU___device__ uint cudaTestAABBOverlap(bt3DGrid3F1U min0, bt3DGrid3F1U max0, bt3DGrid3F1U min1, bt3DGrid3F1U max1) +{ + return (min0.fx <= max1.fx)&& (min1.fx <= max0.fx) && + (min0.fy <= max1.fy)&& (min1.fy <= max0.fy) && + (min0.fz <= max1.fz)&& (min1.fz <= max0.fz); +} // cudaTestAABBOverlap() + +//---------------------------------------------------------------------------------------- + +BT_GPU___device__ void findPairsInCell( int3 gridPos, + uint index, + uint2* pHash, + uint* pCellStart, + bt3DGrid3F1U* pAABB, + uint* pPairBuff, + uint2* pPairBuffStartCurr, + uint numBodies) +{ + if ( (gridPos.x < 0) || (gridPos.x > (int)BT_GPU_params.m_gridSizeX - 1) + || (gridPos.y < 0) || (gridPos.y > (int)BT_GPU_params.m_gridSizeY - 1) + || (gridPos.z < 0) || (gridPos.z > (int)BT_GPU_params.m_gridSizeZ - 1)) + { + return; + } + uint gridHash = bt3DGrid_calcGridHash(gridPos); + // get start of bucket for this cell + uint bucketStart = pCellStart[gridHash]; + if (bucketStart == 0xffffffff) + { + return; // cell empty + } + // iterate over bodies in this cell + uint2 sortedData = pHash[index]; + uint unsorted_indx = sortedData.y; + bt3DGrid3F1U min0 = BT_GPU_FETCH(pAABB, unsorted_indx*2); + bt3DGrid3F1U max0 = BT_GPU_FETCH(pAABB, unsorted_indx*2 + 1); + uint handleIndex = min0.uw; + uint2 start_curr = pPairBuffStartCurr[handleIndex]; + uint start = start_curr.x; + uint curr = start_curr.y; + uint2 start_curr_next = pPairBuffStartCurr[handleIndex+1]; + uint curr_max = start_curr_next.x - start - 1; + uint bucketEnd = bucketStart + BT_GPU_params.m_maxBodiesPerCell; + bucketEnd = (bucketEnd > numBodies) ? numBodies : bucketEnd; + for(uint index2 = bucketStart; index2 < bucketEnd; index2++) + { + uint2 cellData = pHash[index2]; + if (cellData.x != gridHash) + { + break; // no longer in same bucket + } + uint unsorted_indx2 = cellData.y; + if (unsorted_indx2 < unsorted_indx) // check not colliding with self + { + bt3DGrid3F1U min1 = BT_GPU_FETCH(pAABB, unsorted_indx2*2); + bt3DGrid3F1U max1 = BT_GPU_FETCH(pAABB, unsorted_indx2*2 + 1); + if(cudaTestAABBOverlap(min0, max0, min1, max1)) + { + uint handleIndex2 = min1.uw; + uint k; + for(k = 0; k < curr; k++) + { + uint old_pair = pPairBuff[start+k] & (~BT_3DGRID_PAIR_ANY_FLG); + if(old_pair == handleIndex2) + { + pPairBuff[start+k] |= BT_3DGRID_PAIR_FOUND_FLG; + break; + } + } + if(k == curr) + { + if(curr >= curr_max) + { // not a good solution, but let's avoid crash + break; + } + pPairBuff[start+curr] = handleIndex2 | BT_3DGRID_PAIR_NEW_FLG; + curr++; + } + } + } + } + pPairBuffStartCurr[handleIndex] = BT_GPU_make_uint2(start, curr); + return; +} // findPairsInCell() + +//---------------------------------------------------------------------------------------- + +BT_GPU___global__ void findOverlappingPairsD( bt3DGrid3F1U* pAABB, uint2* pHash, uint* pCellStart, + uint* pPairBuff, uint2* pPairBuffStartCurr, uint numBodies) +{ + int index = BT_GPU___mul24(BT_GPU_blockIdx.x, BT_GPU_blockDim.x) + BT_GPU_threadIdx.x; + if(index >= (int)numBodies) + { + return; + } + uint2 sortedData = pHash[index]; + uint unsorted_indx = sortedData.y; + bt3DGrid3F1U bbMin = BT_GPU_FETCH(pAABB, unsorted_indx*2); + bt3DGrid3F1U bbMax = BT_GPU_FETCH(pAABB, unsorted_indx*2 + 1); + float4 pos; + pos.x = (bbMin.fx + bbMax.fx) * 0.5f; + pos.y = (bbMin.fy + bbMax.fy) * 0.5f; + pos.z = (bbMin.fz + bbMax.fz) * 0.5f; + // get address in grid + int3 gridPos = bt3DGrid_calcGridPos(pos); + // examine only neighbouring cells + for(int z=-1; z<=1; z++) { + for(int y=-1; y<=1; y++) { + for(int x=-1; x<=1; x++) { + findPairsInCell(gridPos + BT_GPU_make_int3(x, y, z), index, pHash, pCellStart, pAABB, pPairBuff, pPairBuffStartCurr, numBodies); + } + } + } +} // findOverlappingPairsD() + +//---------------------------------------------------------------------------------------- + +BT_GPU___global__ void findPairsLargeD( bt3DGrid3F1U* pAABB, uint2* pHash, uint* pCellStart, uint* pPairBuff, + uint2* pPairBuffStartCurr, uint numBodies, uint numLarge) +{ + int index = BT_GPU___mul24(BT_GPU_blockIdx.x, BT_GPU_blockDim.x) + BT_GPU_threadIdx.x; + if(index >= (int)numBodies) + { + return; + } + uint2 sortedData = pHash[index]; + uint unsorted_indx = sortedData.y; + bt3DGrid3F1U min0 = BT_GPU_FETCH(pAABB, unsorted_indx*2); + bt3DGrid3F1U max0 = BT_GPU_FETCH(pAABB, unsorted_indx*2 + 1); + uint handleIndex = min0.uw; + uint2 start_curr = pPairBuffStartCurr[handleIndex]; + uint start = start_curr.x; + uint curr = start_curr.y; + uint2 start_curr_next = pPairBuffStartCurr[handleIndex+1]; + uint curr_max = start_curr_next.x - start - 1; + for(uint i = 0; i < numLarge; i++) + { + uint indx2 = numBodies + i; + bt3DGrid3F1U min1 = BT_GPU_FETCH(pAABB, indx2*2); + bt3DGrid3F1U max1 = BT_GPU_FETCH(pAABB, indx2*2 + 1); + if(cudaTestAABBOverlap(min0, max0, min1, max1)) + { + uint k; + uint handleIndex2 = min1.uw; + for(k = 0; k < curr; k++) + { + uint old_pair = pPairBuff[start+k] & (~BT_3DGRID_PAIR_ANY_FLG); + if(old_pair == handleIndex2) + { + pPairBuff[start+k] |= BT_3DGRID_PAIR_FOUND_FLG; + break; + } + } + if(k == curr) + { + pPairBuff[start+curr] = handleIndex2 | BT_3DGRID_PAIR_NEW_FLG; + if(curr >= curr_max) + { // not a good solution, but let's avoid crash + break; + } + curr++; + } + } + } + pPairBuffStartCurr[handleIndex] = BT_GPU_make_uint2(start, curr); + return; +} // findPairsLargeD() + +//---------------------------------------------------------------------------------------- + +BT_GPU___global__ void computePairCacheChangesD(uint* pPairBuff, uint2* pPairBuffStartCurr, + uint* pPairScan, bt3DGrid3F1U* pAABB, uint numBodies) +{ + int index = BT_GPU___mul24(BT_GPU_blockIdx.x, BT_GPU_blockDim.x) + BT_GPU_threadIdx.x; + if(index >= (int)numBodies) + { + return; + } + bt3DGrid3F1U bbMin = pAABB[index * 2]; + uint handleIndex = bbMin.uw; + uint2 start_curr = pPairBuffStartCurr[handleIndex]; + uint start = start_curr.x; + uint curr = start_curr.y; + uint *pInp = pPairBuff + start; + uint num_changes = 0; + for(uint k = 0; k < curr; k++, pInp++) + { + if(!((*pInp) & BT_3DGRID_PAIR_FOUND_FLG)) + { + num_changes++; + } + } + pPairScan[index+1] = num_changes; +} // computePairCacheChangesD() + +//---------------------------------------------------------------------------------------- + +BT_GPU___global__ void squeezeOverlappingPairBuffD(uint* pPairBuff, uint2* pPairBuffStartCurr, uint* pPairScan, + uint* pPairOut, bt3DGrid3F1U* pAABB, uint numBodies) +{ + int index = BT_GPU___mul24(BT_GPU_blockIdx.x, BT_GPU_blockDim.x) + BT_GPU_threadIdx.x; + if(index >= (int)numBodies) + { + return; + } + bt3DGrid3F1U bbMin = pAABB[index * 2]; + uint handleIndex = bbMin.uw; + uint2 start_curr = pPairBuffStartCurr[handleIndex]; + uint start = start_curr.x; + uint curr = start_curr.y; + uint* pInp = pPairBuff + start; + uint* pOut = pPairOut + pPairScan[index]; + uint* pOut2 = pInp; + uint num = 0; + for(uint k = 0; k < curr; k++, pInp++) + { + if(!((*pInp) & BT_3DGRID_PAIR_FOUND_FLG)) + { + *pOut = *pInp; + pOut++; + } + if((*pInp) & BT_3DGRID_PAIR_ANY_FLG) + { + *pOut2 = (*pInp) & (~BT_3DGRID_PAIR_ANY_FLG); + pOut2++; + num++; + } + } + pPairBuffStartCurr[handleIndex] = BT_GPU_make_uint2(start, num); +} // squeezeOverlappingPairBuffD() + + +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +// E N D O F K E R N E L F U N C T I O N S +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- + +extern "C" +{ + +//---------------------------------------------------------------------------------------- + +void BT_GPU_PREF(calcHashAABB)(bt3DGrid3F1U* pAABB, unsigned int* hash, unsigned int numBodies) +{ + int numThreads, numBlocks; + BT_GPU_PREF(computeGridSize)(numBodies, 256, numBlocks, numThreads); + // execute the kernel + BT_GPU_EXECKERNEL(numBlocks, numThreads, calcHashAABBD, (pAABB, (uint2*)hash, numBodies)); + // check if kernel invocation generated an error + BT_GPU_CHECK_ERROR("calcHashAABBD kernel execution failed"); +} // calcHashAABB() + +//---------------------------------------------------------------------------------------- + +void BT_GPU_PREF(findCellStart(unsigned int* hash, unsigned int* cellStart, unsigned int numBodies, unsigned int numCells)) +{ + int numThreads, numBlocks; + BT_GPU_PREF(computeGridSize)(numBodies, 256, numBlocks, numThreads); + BT_GPU_SAFE_CALL(BT_GPU_Memset(cellStart, 0xffffffff, numCells*sizeof(uint))); + BT_GPU_EXECKERNEL(numBlocks, numThreads, findCellStartD, ((uint2*)hash, (uint*)cellStart, numBodies)); + BT_GPU_CHECK_ERROR("Kernel execution failed: findCellStartD"); +} // findCellStart() + +//---------------------------------------------------------------------------------------- + +void BT_GPU_PREF(findOverlappingPairs(bt3DGrid3F1U* pAABB, unsigned int* pHash, unsigned int* pCellStart, unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int numBodies)) +{ +#if B_CUDA_USE_TEX + BT_GPU_SAFE_CALL(cudaBindTexture(0, pAABBTex, pAABB, numBodies * 2 * sizeof(bt3DGrid3F1U))); +#endif + int numThreads, numBlocks; + BT_GPU_PREF(computeGridSize)(numBodies, 64, numBlocks, numThreads); + BT_GPU_EXECKERNEL(numBlocks, numThreads, findOverlappingPairsD, (pAABB,(uint2*)pHash,(uint*)pCellStart,(uint*)pPairBuff,(uint2*)pPairBuffStartCurr,numBodies)); + BT_GPU_CHECK_ERROR("Kernel execution failed: bt_CudaFindOverlappingPairsD"); +#if B_CUDA_USE_TEX + BT_GPU_SAFE_CALL(cudaUnbindTexture(pAABBTex)); +#endif +} // findOverlappingPairs() + +//---------------------------------------------------------------------------------------- + +void BT_GPU_PREF(findPairsLarge(bt3DGrid3F1U* pAABB, unsigned int* pHash, unsigned int* pCellStart, unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int numBodies, unsigned int numLarge)) +{ +#if B_CUDA_USE_TEX + BT_GPU_SAFE_CALL(cudaBindTexture(0, pAABBTex, pAABB, (numBodies+numLarge) * 2 * sizeof(bt3DGrid3F1U))); +#endif + int numThreads, numBlocks; + BT_GPU_PREF(computeGridSize)(numBodies, 64, numBlocks, numThreads); + BT_GPU_EXECKERNEL(numBlocks, numThreads, findPairsLargeD, (pAABB,(uint2*)pHash,(uint*)pCellStart,(uint*)pPairBuff,(uint2*)pPairBuffStartCurr,numBodies,numLarge)); + BT_GPU_CHECK_ERROR("Kernel execution failed: btCuda_findPairsLargeD"); +#if B_CUDA_USE_TEX + BT_GPU_SAFE_CALL(cudaUnbindTexture(pAABBTex)); +#endif +} // findPairsLarge() + +//---------------------------------------------------------------------------------------- + +void BT_GPU_PREF(computePairCacheChanges(unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int* pPairScan, bt3DGrid3F1U* pAABB, unsigned int numBodies)) +{ + int numThreads, numBlocks; + BT_GPU_PREF(computeGridSize)(numBodies, 256, numBlocks, numThreads); + BT_GPU_EXECKERNEL(numBlocks, numThreads, computePairCacheChangesD, ((uint*)pPairBuff,(uint2*)pPairBuffStartCurr,(uint*)pPairScan,pAABB,numBodies)); + BT_GPU_CHECK_ERROR("Kernel execution failed: btCudaComputePairCacheChangesD"); +} // computePairCacheChanges() + +//---------------------------------------------------------------------------------------- + +void BT_GPU_PREF(squeezeOverlappingPairBuff(unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int* pPairScan, unsigned int* pPairOut, bt3DGrid3F1U* pAABB, unsigned int numBodies)) +{ + int numThreads, numBlocks; + BT_GPU_PREF(computeGridSize)(numBodies, 256, numBlocks, numThreads); + BT_GPU_EXECKERNEL(numBlocks, numThreads, squeezeOverlappingPairBuffD, ((uint*)pPairBuff,(uint2*)pPairBuffStartCurr,(uint*)pPairScan,(uint*)pPairOut,pAABB,numBodies)); + BT_GPU_CHECK_ERROR("Kernel execution failed: btCudaSqueezeOverlappingPairBuffD"); +} // btCuda_squeezeOverlappingPairBuff() + +//------------------------------------------------------------------------------------------------ + +} // extern "C" + +//------------------------------------------------------------------------------------------------ +//------------------------------------------------------------------------------------------------ +//------------------------------------------------------------------------------------------------ diff --git a/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedDefs.h b/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedDefs.h new file mode 100644 index 00000000000..607bda7edfd --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedDefs.h @@ -0,0 +1,61 @@ +/* +Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org +Copyright (C) 2006, 2009 Sony Computer Entertainment Inc. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +//---------------------------------------------------------------------------------------- + +// Shared definitions for GPU-based 3D Grid collision detection broadphase + +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +// Keep this file free from Bullet headers +// it is included into both CUDA and CPU code +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +//---------------------------------------------------------------------------------------- + +#ifndef BTGPU3DGRIDBROADPHASESHAREDDEFS_H +#define BTGPU3DGRIDBROADPHASESHAREDDEFS_H + +//---------------------------------------------------------------------------------------- + +#include "btGpu3DGridBroadphaseSharedTypes.h" + +//---------------------------------------------------------------------------------------- + +extern "C" +{ + +//---------------------------------------------------------------------------------------- + +void BT_GPU_PREF(calcHashAABB)(bt3DGrid3F1U* pAABB, unsigned int* hash, unsigned int numBodies); + +void BT_GPU_PREF(findCellStart)(unsigned int* hash, unsigned int* cellStart, unsigned int numBodies, unsigned int numCells); + +void BT_GPU_PREF(findOverlappingPairs)(bt3DGrid3F1U* pAABB, unsigned int* pHash, unsigned int* pCellStart, unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int numBodies); + +void BT_GPU_PREF(findPairsLarge)(bt3DGrid3F1U* pAABB, unsigned int* pHash, unsigned int* pCellStart, unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int numBodies, unsigned int numLarge); + +void BT_GPU_PREF(computePairCacheChanges)(unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int* pPairScan, bt3DGrid3F1U* pAABB, unsigned int numBodies); + +void BT_GPU_PREF(squeezeOverlappingPairBuff)(unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int* pPairScan, unsigned int* pPairOut, bt3DGrid3F1U* pAABB, unsigned int numBodies); + + +//---------------------------------------------------------------------------------------- + +} // extern "C" + +//---------------------------------------------------------------------------------------- + +#endif // BTGPU3DGRIDBROADPHASESHAREDDEFS_H + diff --git a/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedTypes.h b/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedTypes.h new file mode 100644 index 00000000000..616a40094ca --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedTypes.h @@ -0,0 +1,67 @@ +/* +Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org +Copyright (C) 2006, 2009 Sony Computer Entertainment Inc. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +//---------------------------------------------------------------------------------------- + +// Shared definitions for GPU-based 3D Grid collision detection broadphase + +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +// Keep this file free from Bullet headers +// it is included into both CUDA and CPU code +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +//---------------------------------------------------------------------------------------- + +#ifndef BTGPU3DGRIDBROADPHASESHAREDTYPES_H +#define BTGPU3DGRIDBROADPHASESHAREDTYPES_H + +//---------------------------------------------------------------------------------------- + +#define BT_3DGRID_PAIR_FOUND_FLG (0x40000000) +#define BT_3DGRID_PAIR_NEW_FLG (0x20000000) +#define BT_3DGRID_PAIR_ANY_FLG (BT_3DGRID_PAIR_FOUND_FLG | BT_3DGRID_PAIR_NEW_FLG) + +//---------------------------------------------------------------------------------------- + +struct bt3DGridBroadphaseParams +{ + unsigned int m_gridSizeX; + unsigned int m_gridSizeY; + unsigned int m_gridSizeZ; + unsigned int m_numCells; + float m_worldOriginX; + float m_worldOriginY; + float m_worldOriginZ; + float m_cellSizeX; + float m_cellSizeY; + float m_cellSizeZ; + unsigned int m_numBodies; + unsigned int m_maxBodiesPerCell; +}; + +//---------------------------------------------------------------------------------------- + +struct bt3DGrid3F1U +{ + float fx; + float fy; + float fz; + unsigned int uw; +}; + +//---------------------------------------------------------------------------------------- + +#endif // BTGPU3DGRIDBROADPHASESHAREDTYPES_H + diff --git a/extern/bullet2/BulletMultiThreaded/btGpuDefines.h b/extern/bullet2/BulletMultiThreaded/btGpuDefines.h new file mode 100644 index 00000000000..f9315ab6496 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/btGpuDefines.h @@ -0,0 +1,211 @@ +/* +Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org +Copyright (C) 2006, 2009 Sony Computer Entertainment Inc. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +// definitions for "GPU on CPU" code + + +#ifndef BT_GPU_DEFINES_H +#define BT_GPU_DEFINES_H + +typedef unsigned int uint; + +struct int2 +{ + int x, y; +}; + +struct uint2 +{ + unsigned int x, y; +}; + +struct int3 +{ + int x, y, z; +}; + +struct uint3 +{ + unsigned int x, y, z; +}; + +struct float4 +{ + float x, y, z, w; +}; + +struct float3 +{ + float x, y, z; +}; + + +#define BT_GPU___device__ inline +#define BT_GPU___devdata__ +#define BT_GPU___constant__ +#define BT_GPU_max(a, b) ((a) > (b) ? (a) : (b)) +#define BT_GPU_min(a, b) ((a) < (b) ? (a) : (b)) +#define BT_GPU_params s3DGridBroadphaseParams +#define BT_GPU___mul24(a, b) ((a)*(b)) +#define BT_GPU___global__ inline +#define BT_GPU___shared__ static +#define BT_GPU___syncthreads() +#define CUDART_PI_F SIMD_PI + +static inline uint2 bt3dGrid_make_uint2(unsigned int x, unsigned int y) +{ + uint2 t; t.x = x; t.y = y; return t; +} +#define BT_GPU_make_uint2(x, y) bt3dGrid_make_uint2(x, y) + +static inline int3 bt3dGrid_make_int3(int x, int y, int z) +{ + int3 t; t.x = x; t.y = y; t.z = z; return t; +} +#define BT_GPU_make_int3(x, y, z) bt3dGrid_make_int3(x, y, z) + +static inline float3 bt3dGrid_make_float3(float x, float y, float z) +{ + float3 t; t.x = x; t.y = y; t.z = z; return t; +} +#define BT_GPU_make_float3(x, y, z) bt3dGrid_make_float3(x, y, z) + +static inline float3 bt3dGrid_make_float34(float4 f) +{ + float3 t; t.x = f.x; t.y = f.y; t.z = f.z; return t; +} +#define BT_GPU_make_float34(f) bt3dGrid_make_float34(f) + +static inline float3 bt3dGrid_make_float31(float f) +{ + float3 t; t.x = t.y = t.z = f; return t; +} +#define BT_GPU_make_float31(x) bt3dGrid_make_float31(x) + +static inline float4 bt3dGrid_make_float42(float3 v, float f) +{ + float4 t; t.x = v.x; t.y = v.y; t.z = v.z; t.w = f; return t; +} +#define BT_GPU_make_float42(a, b) bt3dGrid_make_float42(a, b) + +static inline float4 bt3dGrid_make_float44(float a, float b, float c, float d) +{ + float4 t; t.x = a; t.y = b; t.z = c; t.w = d; return t; +} +#define BT_GPU_make_float44(a, b, c, d) bt3dGrid_make_float44(a, b, c, d) + +inline int3 operator+(int3 a, int3 b) +{ + return bt3dGrid_make_int3(a.x + b.x, a.y + b.y, a.z + b.z); +} + +inline float4 operator+(const float4& a, const float4& b) +{ + float4 r; r.x = a.x+b.x; r.y = a.y+b.y; r.z = a.z+b.z; r.w = a.w+b.w; return r; +} +inline float4 operator*(const float4& a, float fact) +{ + float4 r; r.x = a.x*fact; r.y = a.y*fact; r.z = a.z*fact; r.w = a.w*fact; return r; +} +inline float4 operator*(float fact, float4& a) +{ + return (a * fact); +} +inline float4& operator*=(float4& a, float fact) +{ + a = fact * a; + return a; +} +inline float4& operator+=(float4& a, const float4& b) +{ + a = a + b; + return a; +} + +inline float3 operator+(const float3& a, const float3& b) +{ + float3 r; r.x = a.x+b.x; r.y = a.y+b.y; r.z = a.z+b.z; return r; +} +inline float3 operator-(const float3& a, const float3& b) +{ + float3 r; r.x = a.x-b.x; r.y = a.y-b.y; r.z = a.z-b.z; return r; +} +static inline float bt3dGrid_dot(float3& a, float3& b) +{ + return a.x*b.x+a.y*b.y+a.z*b.z; +} +#define BT_GPU_dot(a,b) bt3dGrid_dot(a,b) + +static inline float bt3dGrid_dot4(float4& a, float4& b) +{ + return a.x*b.x+a.y*b.y+a.z*b.z+a.w*b.w; +} +#define BT_GPU_dot4(a,b) bt3dGrid_dot4(a,b) + +static inline float3 bt3dGrid_cross(const float3& a, const float3& b) +{ + float3 r; r.x = a.y*b.z-a.z*b.y; r.y = -a.x*b.z+a.z*b.x; r.z = a.x*b.y-a.y*b.x; return r; +} +#define BT_GPU_cross(a,b) bt3dGrid_cross(a,b) + + +inline float3 operator*(const float3& a, float fact) +{ + float3 r; r.x = a.x*fact; r.y = a.y*fact; r.z = a.z*fact; return r; +} + + +inline float3& operator+=(float3& a, const float3& b) +{ + a = a + b; + return a; +} +inline float3& operator-=(float3& a, const float3& b) +{ + a = a - b; + return a; +} +inline float3& operator*=(float3& a, float fact) +{ + a = a * fact; + return a; +} +inline float3 operator-(const float3& v) +{ + float3 r; r.x = -v.x; r.y = -v.y; r.z = -v.z; return r; +} + + +#define BT_GPU_FETCH(a, b) a[b] +#define BT_GPU_FETCH4(a, b) a[b] +#define BT_GPU_PREF(func) btGpu_##func +#define BT_GPU_SAFE_CALL(func) func +#define BT_GPU_Memset memset +#define BT_GPU_MemcpyToSymbol(a, b, c) memcpy(&a, b, c) +#define BT_GPU_BindTexture(a, b, c, d) +#define BT_GPU_UnbindTexture(a) + +static uint2 s_blockIdx, s_blockDim, s_threadIdx; +#define BT_GPU_blockIdx s_blockIdx +#define BT_GPU_blockDim s_blockDim +#define BT_GPU_threadIdx s_threadIdx +#define BT_GPU_EXECKERNEL(numb, numt, kfunc, args) {s_blockDim.x=numt;for(int nb=0;nb //for uint32_t etc. +#include "PlatformDefinitions.h" +#include "PpuAddressSpace.h" + +class btThreadSupportInterface +{ +public: + + virtual ~btThreadSupportInterface(); + +///send messages to SPUs + virtual void sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t uiArgument1) =0; + +///check for messages from SPUs + virtual void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1) =0; + +///start the spus (can be called at the beginning of each frame, to make sure that the right SPU program is loaded) + virtual void startSPU() =0; + +///tell the task scheduler we are done with the SPU tasks + virtual void stopSPU()=0; + + ///tell the task scheduler to use no more than numTasks tasks + virtual void setNumTasks(int numTasks)=0; + + virtual int getNumTasks() const = 0; + +}; + +#endif //THREAD_SUPPORT_INTERFACE_H + diff --git a/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/boolInVec.h b/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/boolInVec.h new file mode 100644 index 00000000000..c5eeeebd7a1 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/boolInVec.h @@ -0,0 +1,225 @@ +/* + Copyright (C) 2009 Sony Computer Entertainment Inc. + All rights reserved. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +*/ + +#ifndef _BOOLINVEC_H +#define _BOOLINVEC_H + +#include +namespace Vectormath { + +class floatInVec; + +//-------------------------------------------------------------------------------------------------- +// boolInVec class +// + +class boolInVec +{ +private: + unsigned int mData; + +public: + // Default constructor; does no initialization + // + inline boolInVec( ) { }; + + // Construct from a value converted from float + // + inline boolInVec(floatInVec vec); + + // Explicit cast from bool + // + explicit inline boolInVec(bool scalar); + + // Explicit cast to bool + // + inline bool getAsBool() const; + +#ifndef _VECTORMATH_NO_SCALAR_CAST + // Implicit cast to bool + // + inline operator bool() const; +#endif + + // Boolean negation operator + // + inline const boolInVec operator ! () const; + + // Assignment operator + // + inline boolInVec& operator = (boolInVec vec); + + // Boolean and assignment operator + // + inline boolInVec& operator &= (boolInVec vec); + + // Boolean exclusive or assignment operator + // + inline boolInVec& operator ^= (boolInVec vec); + + // Boolean or assignment operator + // + inline boolInVec& operator |= (boolInVec vec); + +}; + +// Equal operator +// +inline const boolInVec operator == (boolInVec vec0, boolInVec vec1); + +// Not equal operator +// +inline const boolInVec operator != (boolInVec vec0, boolInVec vec1); + +// And operator +// +inline const boolInVec operator & (boolInVec vec0, boolInVec vec1); + +// Exclusive or operator +// +inline const boolInVec operator ^ (boolInVec vec0, boolInVec vec1); + +// Or operator +// +inline const boolInVec operator | (boolInVec vec0, boolInVec vec1); + +// Conditionally select between two values +// +inline const boolInVec select(boolInVec vec0, boolInVec vec1, boolInVec select_vec1); + + +} // namespace Vectormath + + +//-------------------------------------------------------------------------------------------------- +// boolInVec implementation +// + +#include "floatInVec.h" + +namespace Vectormath { + +inline +boolInVec::boolInVec(floatInVec vec) +{ + *this = (vec != floatInVec(0.0f)); +} + +inline +boolInVec::boolInVec(bool scalar) +{ + mData = -(int)scalar; +} + +inline +bool +boolInVec::getAsBool() const +{ + return (mData > 0); +} + +#ifndef _VECTORMATH_NO_SCALAR_CAST +inline +boolInVec::operator bool() const +{ + return getAsBool(); +} +#endif + +inline +const boolInVec +boolInVec::operator ! () const +{ + return boolInVec(!mData); +} + +inline +boolInVec& +boolInVec::operator = (boolInVec vec) +{ + mData = vec.mData; + return *this; +} + +inline +boolInVec& +boolInVec::operator &= (boolInVec vec) +{ + *this = *this & vec; + return *this; +} + +inline +boolInVec& +boolInVec::operator ^= (boolInVec vec) +{ + *this = *this ^ vec; + return *this; +} + +inline +boolInVec& +boolInVec::operator |= (boolInVec vec) +{ + *this = *this | vec; + return *this; +} + +inline +const boolInVec +operator == (boolInVec vec0, boolInVec vec1) +{ + return boolInVec(vec0.getAsBool() == vec1.getAsBool()); +} + +inline +const boolInVec +operator != (boolInVec vec0, boolInVec vec1) +{ + return !(vec0 == vec1); +} + +inline +const boolInVec +operator & (boolInVec vec0, boolInVec vec1) +{ + return boolInVec(vec0.getAsBool() & vec1.getAsBool()); +} + +inline +const boolInVec +operator | (boolInVec vec0, boolInVec vec1) +{ + return boolInVec(vec0.getAsBool() | vec1.getAsBool()); +} + +inline +const boolInVec +operator ^ (boolInVec vec0, boolInVec vec1) +{ + return boolInVec(vec0.getAsBool() ^ vec1.getAsBool()); +} + +inline +const boolInVec +select(boolInVec vec0, boolInVec vec1, boolInVec select_vec1) +{ + return (select_vec1.getAsBool() == 0) ? vec0 : vec1; +} + +} // namespace Vectormath + +#endif // boolInVec_h diff --git a/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/floatInVec.h b/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/floatInVec.h new file mode 100644 index 00000000000..12d89e43d3e --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/floatInVec.h @@ -0,0 +1,343 @@ +/* + Copyright (C) 2009 Sony Computer Entertainment Inc. + All rights reserved. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +*/ +#ifndef _FLOATINVEC_H +#define _FLOATINVEC_H + +#include +namespace Vectormath { + +class boolInVec; + +//-------------------------------------------------------------------------------------------------- +// floatInVec class +// + +// A class representing a scalar float value contained in a vector register +// This class does not support fastmath +class floatInVec +{ +private: + float mData; + +public: + // Default constructor; does no initialization + // + inline floatInVec( ) { }; + + // Construct from a value converted from bool + // + inline floatInVec(boolInVec vec); + + // Explicit cast from float + // + explicit inline floatInVec(float scalar); + + // Explicit cast to float + // + inline float getAsFloat() const; + +#ifndef _VECTORMATH_NO_SCALAR_CAST + // Implicit cast to float + // + inline operator float() const; +#endif + + // Post increment (add 1.0f) + // + inline const floatInVec operator ++ (int); + + // Post decrement (subtract 1.0f) + // + inline const floatInVec operator -- (int); + + // Pre increment (add 1.0f) + // + inline floatInVec& operator ++ (); + + // Pre decrement (subtract 1.0f) + // + inline floatInVec& operator -- (); + + // Negation operator + // + inline const floatInVec operator - () const; + + // Assignment operator + // + inline floatInVec& operator = (floatInVec vec); + + // Multiplication assignment operator + // + inline floatInVec& operator *= (floatInVec vec); + + // Division assignment operator + // + inline floatInVec& operator /= (floatInVec vec); + + // Addition assignment operator + // + inline floatInVec& operator += (floatInVec vec); + + // Subtraction assignment operator + // + inline floatInVec& operator -= (floatInVec vec); + +}; + +// Multiplication operator +// +inline const floatInVec operator * (floatInVec vec0, floatInVec vec1); + +// Division operator +// +inline const floatInVec operator / (floatInVec vec0, floatInVec vec1); + +// Addition operator +// +inline const floatInVec operator + (floatInVec vec0, floatInVec vec1); + +// Subtraction operator +// +inline const floatInVec operator - (floatInVec vec0, floatInVec vec1); + +// Less than operator +// +inline const boolInVec operator < (floatInVec vec0, floatInVec vec1); + +// Less than or equal operator +// +inline const boolInVec operator <= (floatInVec vec0, floatInVec vec1); + +// Greater than operator +// +inline const boolInVec operator > (floatInVec vec0, floatInVec vec1); + +// Greater than or equal operator +// +inline const boolInVec operator >= (floatInVec vec0, floatInVec vec1); + +// Equal operator +// +inline const boolInVec operator == (floatInVec vec0, floatInVec vec1); + +// Not equal operator +// +inline const boolInVec operator != (floatInVec vec0, floatInVec vec1); + +// Conditionally select between two values +// +inline const floatInVec select(floatInVec vec0, floatInVec vec1, boolInVec select_vec1); + + +} // namespace Vectormath + + +//-------------------------------------------------------------------------------------------------- +// floatInVec implementation +// + +#include "boolInVec.h" + +namespace Vectormath { + +inline +floatInVec::floatInVec(boolInVec vec) +{ + mData = float(vec.getAsBool()); +} + +inline +floatInVec::floatInVec(float scalar) +{ + mData = scalar; +} + +inline +float +floatInVec::getAsFloat() const +{ + return mData; +} + +#ifndef _VECTORMATH_NO_SCALAR_CAST +inline +floatInVec::operator float() const +{ + return getAsFloat(); +} +#endif + +inline +const floatInVec +floatInVec::operator ++ (int) +{ + float olddata = mData; + operator ++(); + return floatInVec(olddata); +} + +inline +const floatInVec +floatInVec::operator -- (int) +{ + float olddata = mData; + operator --(); + return floatInVec(olddata); +} + +inline +floatInVec& +floatInVec::operator ++ () +{ + *this += floatInVec(1.0f); + return *this; +} + +inline +floatInVec& +floatInVec::operator -- () +{ + *this -= floatInVec(1.0f); + return *this; +} + +inline +const floatInVec +floatInVec::operator - () const +{ + return floatInVec(-mData); +} + +inline +floatInVec& +floatInVec::operator = (floatInVec vec) +{ + mData = vec.mData; + return *this; +} + +inline +floatInVec& +floatInVec::operator *= (floatInVec vec) +{ + *this = *this * vec; + return *this; +} + +inline +floatInVec& +floatInVec::operator /= (floatInVec vec) +{ + *this = *this / vec; + return *this; +} + +inline +floatInVec& +floatInVec::operator += (floatInVec vec) +{ + *this = *this + vec; + return *this; +} + +inline +floatInVec& +floatInVec::operator -= (floatInVec vec) +{ + *this = *this - vec; + return *this; +} + +inline +const floatInVec +operator * (floatInVec vec0, floatInVec vec1) +{ + return floatInVec(vec0.getAsFloat() * vec1.getAsFloat()); +} + +inline +const floatInVec +operator / (floatInVec num, floatInVec den) +{ + return floatInVec(num.getAsFloat() / den.getAsFloat()); +} + +inline +const floatInVec +operator + (floatInVec vec0, floatInVec vec1) +{ + return floatInVec(vec0.getAsFloat() + vec1.getAsFloat()); +} + +inline +const floatInVec +operator - (floatInVec vec0, floatInVec vec1) +{ + return floatInVec(vec0.getAsFloat() - vec1.getAsFloat()); +} + +inline +const boolInVec +operator < (floatInVec vec0, floatInVec vec1) +{ + return boolInVec(vec0.getAsFloat() < vec1.getAsFloat()); +} + +inline +const boolInVec +operator <= (floatInVec vec0, floatInVec vec1) +{ + return !(vec0 > vec1); +} + +inline +const boolInVec +operator > (floatInVec vec0, floatInVec vec1) +{ + return boolInVec(vec0.getAsFloat() > vec1.getAsFloat()); +} + +inline +const boolInVec +operator >= (floatInVec vec0, floatInVec vec1) +{ + return !(vec0 < vec1); +} + +inline +const boolInVec +operator == (floatInVec vec0, floatInVec vec1) +{ + return boolInVec(vec0.getAsFloat() == vec1.getAsFloat()); +} + +inline +const boolInVec +operator != (floatInVec vec0, floatInVec vec1) +{ + return !(vec0 == vec1); +} + +inline +const floatInVec +select(floatInVec vec0, floatInVec vec1, boolInVec select_vec1) +{ + return (select_vec1.getAsBool() == 0) ? vec0 : vec1; +} + +} // namespace Vectormath + +#endif // floatInVec_h diff --git a/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/mat_aos.h b/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/mat_aos.h new file mode 100644 index 00000000000..e103243d1e0 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/mat_aos.h @@ -0,0 +1,1630 @@ +/* + Copyright (C) 2009 Sony Computer Entertainment Inc. + All rights reserved. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +*/ + +#ifndef _VECTORMATH_MAT_AOS_CPP_H +#define _VECTORMATH_MAT_AOS_CPP_H + +namespace Vectormath { +namespace Aos { + +//----------------------------------------------------------------------------- +// Constants + +#define _VECTORMATH_PI_OVER_2 1.570796327f + +//----------------------------------------------------------------------------- +// Definitions + +inline Matrix3::Matrix3( const Matrix3 & mat ) +{ + mCol0 = mat.mCol0; + mCol1 = mat.mCol1; + mCol2 = mat.mCol2; +} + +inline Matrix3::Matrix3( float scalar ) +{ + mCol0 = Vector3( scalar ); + mCol1 = Vector3( scalar ); + mCol2 = Vector3( scalar ); +} + +inline Matrix3::Matrix3( const Quat & unitQuat ) +{ + float qx, qy, qz, qw, qx2, qy2, qz2, qxqx2, qyqy2, qzqz2, qxqy2, qyqz2, qzqw2, qxqz2, qyqw2, qxqw2; + qx = unitQuat.getX(); + qy = unitQuat.getY(); + qz = unitQuat.getZ(); + qw = unitQuat.getW(); + qx2 = ( qx + qx ); + qy2 = ( qy + qy ); + qz2 = ( qz + qz ); + qxqx2 = ( qx * qx2 ); + qxqy2 = ( qx * qy2 ); + qxqz2 = ( qx * qz2 ); + qxqw2 = ( qw * qx2 ); + qyqy2 = ( qy * qy2 ); + qyqz2 = ( qy * qz2 ); + qyqw2 = ( qw * qy2 ); + qzqz2 = ( qz * qz2 ); + qzqw2 = ( qw * qz2 ); + mCol0 = Vector3( ( ( 1.0f - qyqy2 ) - qzqz2 ), ( qxqy2 + qzqw2 ), ( qxqz2 - qyqw2 ) ); + mCol1 = Vector3( ( qxqy2 - qzqw2 ), ( ( 1.0f - qxqx2 ) - qzqz2 ), ( qyqz2 + qxqw2 ) ); + mCol2 = Vector3( ( qxqz2 + qyqw2 ), ( qyqz2 - qxqw2 ), ( ( 1.0f - qxqx2 ) - qyqy2 ) ); +} + +inline Matrix3::Matrix3( const Vector3 & _col0, const Vector3 & _col1, const Vector3 & _col2 ) +{ + mCol0 = _col0; + mCol1 = _col1; + mCol2 = _col2; +} + +inline Matrix3 & Matrix3::setCol0( const Vector3 & _col0 ) +{ + mCol0 = _col0; + return *this; +} + +inline Matrix3 & Matrix3::setCol1( const Vector3 & _col1 ) +{ + mCol1 = _col1; + return *this; +} + +inline Matrix3 & Matrix3::setCol2( const Vector3 & _col2 ) +{ + mCol2 = _col2; + return *this; +} + +inline Matrix3 & Matrix3::setCol( int col, const Vector3 & vec ) +{ + *(&mCol0 + col) = vec; + return *this; +} + +inline Matrix3 & Matrix3::setRow( int row, const Vector3 & vec ) +{ + mCol0.setElem( row, vec.getElem( 0 ) ); + mCol1.setElem( row, vec.getElem( 1 ) ); + mCol2.setElem( row, vec.getElem( 2 ) ); + return *this; +} + +inline Matrix3 & Matrix3::setElem( int col, int row, float val ) +{ + Vector3 tmpV3_0; + tmpV3_0 = this->getCol( col ); + tmpV3_0.setElem( row, val ); + this->setCol( col, tmpV3_0 ); + return *this; +} + +inline float Matrix3::getElem( int col, int row ) const +{ + return this->getCol( col ).getElem( row ); +} + +inline const Vector3 Matrix3::getCol0( ) const +{ + return mCol0; +} + +inline const Vector3 Matrix3::getCol1( ) const +{ + return mCol1; +} + +inline const Vector3 Matrix3::getCol2( ) const +{ + return mCol2; +} + +inline const Vector3 Matrix3::getCol( int col ) const +{ + return *(&mCol0 + col); +} + +inline const Vector3 Matrix3::getRow( int row ) const +{ + return Vector3( mCol0.getElem( row ), mCol1.getElem( row ), mCol2.getElem( row ) ); +} + +inline Vector3 & Matrix3::operator []( int col ) +{ + return *(&mCol0 + col); +} + +inline const Vector3 Matrix3::operator []( int col ) const +{ + return *(&mCol0 + col); +} + +inline Matrix3 & Matrix3::operator =( const Matrix3 & mat ) +{ + mCol0 = mat.mCol0; + mCol1 = mat.mCol1; + mCol2 = mat.mCol2; + return *this; +} + +inline const Matrix3 transpose( const Matrix3 & mat ) +{ + return Matrix3( + Vector3( mat.getCol0().getX(), mat.getCol1().getX(), mat.getCol2().getX() ), + Vector3( mat.getCol0().getY(), mat.getCol1().getY(), mat.getCol2().getY() ), + Vector3( mat.getCol0().getZ(), mat.getCol1().getZ(), mat.getCol2().getZ() ) + ); +} + +inline const Matrix3 inverse( const Matrix3 & mat ) +{ + Vector3 tmp0, tmp1, tmp2; + float detinv; + tmp0 = cross( mat.getCol1(), mat.getCol2() ); + tmp1 = cross( mat.getCol2(), mat.getCol0() ); + tmp2 = cross( mat.getCol0(), mat.getCol1() ); + detinv = ( 1.0f / dot( mat.getCol2(), tmp2 ) ); + return Matrix3( + Vector3( ( tmp0.getX() * detinv ), ( tmp1.getX() * detinv ), ( tmp2.getX() * detinv ) ), + Vector3( ( tmp0.getY() * detinv ), ( tmp1.getY() * detinv ), ( tmp2.getY() * detinv ) ), + Vector3( ( tmp0.getZ() * detinv ), ( tmp1.getZ() * detinv ), ( tmp2.getZ() * detinv ) ) + ); +} + +inline float determinant( const Matrix3 & mat ) +{ + return dot( mat.getCol2(), cross( mat.getCol0(), mat.getCol1() ) ); +} + +inline const Matrix3 Matrix3::operator +( const Matrix3 & mat ) const +{ + return Matrix3( + ( mCol0 + mat.mCol0 ), + ( mCol1 + mat.mCol1 ), + ( mCol2 + mat.mCol2 ) + ); +} + +inline const Matrix3 Matrix3::operator -( const Matrix3 & mat ) const +{ + return Matrix3( + ( mCol0 - mat.mCol0 ), + ( mCol1 - mat.mCol1 ), + ( mCol2 - mat.mCol2 ) + ); +} + +inline Matrix3 & Matrix3::operator +=( const Matrix3 & mat ) +{ + *this = *this + mat; + return *this; +} + +inline Matrix3 & Matrix3::operator -=( const Matrix3 & mat ) +{ + *this = *this - mat; + return *this; +} + +inline const Matrix3 Matrix3::operator -( ) const +{ + return Matrix3( + ( -mCol0 ), + ( -mCol1 ), + ( -mCol2 ) + ); +} + +inline const Matrix3 absPerElem( const Matrix3 & mat ) +{ + return Matrix3( + absPerElem( mat.getCol0() ), + absPerElem( mat.getCol1() ), + absPerElem( mat.getCol2() ) + ); +} + +inline const Matrix3 Matrix3::operator *( float scalar ) const +{ + return Matrix3( + ( mCol0 * scalar ), + ( mCol1 * scalar ), + ( mCol2 * scalar ) + ); +} + +inline Matrix3 & Matrix3::operator *=( float scalar ) +{ + *this = *this * scalar; + return *this; +} + +inline const Matrix3 operator *( float scalar, const Matrix3 & mat ) +{ + return mat * scalar; +} + +inline const Vector3 Matrix3::operator *( const Vector3 & vec ) const +{ + return Vector3( + ( ( ( mCol0.getX() * vec.getX() ) + ( mCol1.getX() * vec.getY() ) ) + ( mCol2.getX() * vec.getZ() ) ), + ( ( ( mCol0.getY() * vec.getX() ) + ( mCol1.getY() * vec.getY() ) ) + ( mCol2.getY() * vec.getZ() ) ), + ( ( ( mCol0.getZ() * vec.getX() ) + ( mCol1.getZ() * vec.getY() ) ) + ( mCol2.getZ() * vec.getZ() ) ) + ); +} + +inline const Matrix3 Matrix3::operator *( const Matrix3 & mat ) const +{ + return Matrix3( + ( *this * mat.mCol0 ), + ( *this * mat.mCol1 ), + ( *this * mat.mCol2 ) + ); +} + +inline Matrix3 & Matrix3::operator *=( const Matrix3 & mat ) +{ + *this = *this * mat; + return *this; +} + +inline const Matrix3 mulPerElem( const Matrix3 & mat0, const Matrix3 & mat1 ) +{ + return Matrix3( + mulPerElem( mat0.getCol0(), mat1.getCol0() ), + mulPerElem( mat0.getCol1(), mat1.getCol1() ), + mulPerElem( mat0.getCol2(), mat1.getCol2() ) + ); +} + +inline const Matrix3 Matrix3::identity( ) +{ + return Matrix3( + Vector3::xAxis( ), + Vector3::yAxis( ), + Vector3::zAxis( ) + ); +} + +inline const Matrix3 Matrix3::rotationX( float radians ) +{ + float s, c; + s = sinf( radians ); + c = cosf( radians ); + return Matrix3( + Vector3::xAxis( ), + Vector3( 0.0f, c, s ), + Vector3( 0.0f, -s, c ) + ); +} + +inline const Matrix3 Matrix3::rotationY( float radians ) +{ + float s, c; + s = sinf( radians ); + c = cosf( radians ); + return Matrix3( + Vector3( c, 0.0f, -s ), + Vector3::yAxis( ), + Vector3( s, 0.0f, c ) + ); +} + +inline const Matrix3 Matrix3::rotationZ( float radians ) +{ + float s, c; + s = sinf( radians ); + c = cosf( radians ); + return Matrix3( + Vector3( c, s, 0.0f ), + Vector3( -s, c, 0.0f ), + Vector3::zAxis( ) + ); +} + +inline const Matrix3 Matrix3::rotationZYX( const Vector3 & radiansXYZ ) +{ + float sX, cX, sY, cY, sZ, cZ, tmp0, tmp1; + sX = sinf( radiansXYZ.getX() ); + cX = cosf( radiansXYZ.getX() ); + sY = sinf( radiansXYZ.getY() ); + cY = cosf( radiansXYZ.getY() ); + sZ = sinf( radiansXYZ.getZ() ); + cZ = cosf( radiansXYZ.getZ() ); + tmp0 = ( cZ * sY ); + tmp1 = ( sZ * sY ); + return Matrix3( + Vector3( ( cZ * cY ), ( sZ * cY ), -sY ), + Vector3( ( ( tmp0 * sX ) - ( sZ * cX ) ), ( ( tmp1 * sX ) + ( cZ * cX ) ), ( cY * sX ) ), + Vector3( ( ( tmp0 * cX ) + ( sZ * sX ) ), ( ( tmp1 * cX ) - ( cZ * sX ) ), ( cY * cX ) ) + ); +} + +inline const Matrix3 Matrix3::rotation( float radians, const Vector3 & unitVec ) +{ + float x, y, z, s, c, oneMinusC, xy, yz, zx; + s = sinf( radians ); + c = cosf( radians ); + x = unitVec.getX(); + y = unitVec.getY(); + z = unitVec.getZ(); + xy = ( x * y ); + yz = ( y * z ); + zx = ( z * x ); + oneMinusC = ( 1.0f - c ); + return Matrix3( + Vector3( ( ( ( x * x ) * oneMinusC ) + c ), ( ( xy * oneMinusC ) + ( z * s ) ), ( ( zx * oneMinusC ) - ( y * s ) ) ), + Vector3( ( ( xy * oneMinusC ) - ( z * s ) ), ( ( ( y * y ) * oneMinusC ) + c ), ( ( yz * oneMinusC ) + ( x * s ) ) ), + Vector3( ( ( zx * oneMinusC ) + ( y * s ) ), ( ( yz * oneMinusC ) - ( x * s ) ), ( ( ( z * z ) * oneMinusC ) + c ) ) + ); +} + +inline const Matrix3 Matrix3::rotation( const Quat & unitQuat ) +{ + return Matrix3( unitQuat ); +} + +inline const Matrix3 Matrix3::scale( const Vector3 & scaleVec ) +{ + return Matrix3( + Vector3( scaleVec.getX(), 0.0f, 0.0f ), + Vector3( 0.0f, scaleVec.getY(), 0.0f ), + Vector3( 0.0f, 0.0f, scaleVec.getZ() ) + ); +} + +inline const Matrix3 appendScale( const Matrix3 & mat, const Vector3 & scaleVec ) +{ + return Matrix3( + ( mat.getCol0() * scaleVec.getX( ) ), + ( mat.getCol1() * scaleVec.getY( ) ), + ( mat.getCol2() * scaleVec.getZ( ) ) + ); +} + +inline const Matrix3 prependScale( const Vector3 & scaleVec, const Matrix3 & mat ) +{ + return Matrix3( + mulPerElem( mat.getCol0(), scaleVec ), + mulPerElem( mat.getCol1(), scaleVec ), + mulPerElem( mat.getCol2(), scaleVec ) + ); +} + +inline const Matrix3 select( const Matrix3 & mat0, const Matrix3 & mat1, bool select1 ) +{ + return Matrix3( + select( mat0.getCol0(), mat1.getCol0(), select1 ), + select( mat0.getCol1(), mat1.getCol1(), select1 ), + select( mat0.getCol2(), mat1.getCol2(), select1 ) + ); +} + +#ifdef _VECTORMATH_DEBUG + +inline void print( const Matrix3 & mat ) +{ + print( mat.getRow( 0 ) ); + print( mat.getRow( 1 ) ); + print( mat.getRow( 2 ) ); +} + +inline void print( const Matrix3 & mat, const char * name ) +{ + printf("%s:\n", name); + print( mat ); +} + +#endif + +inline Matrix4::Matrix4( const Matrix4 & mat ) +{ + mCol0 = mat.mCol0; + mCol1 = mat.mCol1; + mCol2 = mat.mCol2; + mCol3 = mat.mCol3; +} + +inline Matrix4::Matrix4( float scalar ) +{ + mCol0 = Vector4( scalar ); + mCol1 = Vector4( scalar ); + mCol2 = Vector4( scalar ); + mCol3 = Vector4( scalar ); +} + +inline Matrix4::Matrix4( const Transform3 & mat ) +{ + mCol0 = Vector4( mat.getCol0(), 0.0f ); + mCol1 = Vector4( mat.getCol1(), 0.0f ); + mCol2 = Vector4( mat.getCol2(), 0.0f ); + mCol3 = Vector4( mat.getCol3(), 1.0f ); +} + +inline Matrix4::Matrix4( const Vector4 & _col0, const Vector4 & _col1, const Vector4 & _col2, const Vector4 & _col3 ) +{ + mCol0 = _col0; + mCol1 = _col1; + mCol2 = _col2; + mCol3 = _col3; +} + +inline Matrix4::Matrix4( const Matrix3 & mat, const Vector3 & translateVec ) +{ + mCol0 = Vector4( mat.getCol0(), 0.0f ); + mCol1 = Vector4( mat.getCol1(), 0.0f ); + mCol2 = Vector4( mat.getCol2(), 0.0f ); + mCol3 = Vector4( translateVec, 1.0f ); +} + +inline Matrix4::Matrix4( const Quat & unitQuat, const Vector3 & translateVec ) +{ + Matrix3 mat; + mat = Matrix3( unitQuat ); + mCol0 = Vector4( mat.getCol0(), 0.0f ); + mCol1 = Vector4( mat.getCol1(), 0.0f ); + mCol2 = Vector4( mat.getCol2(), 0.0f ); + mCol3 = Vector4( translateVec, 1.0f ); +} + +inline Matrix4 & Matrix4::setCol0( const Vector4 & _col0 ) +{ + mCol0 = _col0; + return *this; +} + +inline Matrix4 & Matrix4::setCol1( const Vector4 & _col1 ) +{ + mCol1 = _col1; + return *this; +} + +inline Matrix4 & Matrix4::setCol2( const Vector4 & _col2 ) +{ + mCol2 = _col2; + return *this; +} + +inline Matrix4 & Matrix4::setCol3( const Vector4 & _col3 ) +{ + mCol3 = _col3; + return *this; +} + +inline Matrix4 & Matrix4::setCol( int col, const Vector4 & vec ) +{ + *(&mCol0 + col) = vec; + return *this; +} + +inline Matrix4 & Matrix4::setRow( int row, const Vector4 & vec ) +{ + mCol0.setElem( row, vec.getElem( 0 ) ); + mCol1.setElem( row, vec.getElem( 1 ) ); + mCol2.setElem( row, vec.getElem( 2 ) ); + mCol3.setElem( row, vec.getElem( 3 ) ); + return *this; +} + +inline Matrix4 & Matrix4::setElem( int col, int row, float val ) +{ + Vector4 tmpV3_0; + tmpV3_0 = this->getCol( col ); + tmpV3_0.setElem( row, val ); + this->setCol( col, tmpV3_0 ); + return *this; +} + +inline float Matrix4::getElem( int col, int row ) const +{ + return this->getCol( col ).getElem( row ); +} + +inline const Vector4 Matrix4::getCol0( ) const +{ + return mCol0; +} + +inline const Vector4 Matrix4::getCol1( ) const +{ + return mCol1; +} + +inline const Vector4 Matrix4::getCol2( ) const +{ + return mCol2; +} + +inline const Vector4 Matrix4::getCol3( ) const +{ + return mCol3; +} + +inline const Vector4 Matrix4::getCol( int col ) const +{ + return *(&mCol0 + col); +} + +inline const Vector4 Matrix4::getRow( int row ) const +{ + return Vector4( mCol0.getElem( row ), mCol1.getElem( row ), mCol2.getElem( row ), mCol3.getElem( row ) ); +} + +inline Vector4 & Matrix4::operator []( int col ) +{ + return *(&mCol0 + col); +} + +inline const Vector4 Matrix4::operator []( int col ) const +{ + return *(&mCol0 + col); +} + +inline Matrix4 & Matrix4::operator =( const Matrix4 & mat ) +{ + mCol0 = mat.mCol0; + mCol1 = mat.mCol1; + mCol2 = mat.mCol2; + mCol3 = mat.mCol3; + return *this; +} + +inline const Matrix4 transpose( const Matrix4 & mat ) +{ + return Matrix4( + Vector4( mat.getCol0().getX(), mat.getCol1().getX(), mat.getCol2().getX(), mat.getCol3().getX() ), + Vector4( mat.getCol0().getY(), mat.getCol1().getY(), mat.getCol2().getY(), mat.getCol3().getY() ), + Vector4( mat.getCol0().getZ(), mat.getCol1().getZ(), mat.getCol2().getZ(), mat.getCol3().getZ() ), + Vector4( mat.getCol0().getW(), mat.getCol1().getW(), mat.getCol2().getW(), mat.getCol3().getW() ) + ); +} + +inline const Matrix4 inverse( const Matrix4 & mat ) +{ + Vector4 res0, res1, res2, res3; + float mA, mB, mC, mD, mE, mF, mG, mH, mI, mJ, mK, mL, mM, mN, mO, mP, tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, detInv; + mA = mat.getCol0().getX(); + mB = mat.getCol0().getY(); + mC = mat.getCol0().getZ(); + mD = mat.getCol0().getW(); + mE = mat.getCol1().getX(); + mF = mat.getCol1().getY(); + mG = mat.getCol1().getZ(); + mH = mat.getCol1().getW(); + mI = mat.getCol2().getX(); + mJ = mat.getCol2().getY(); + mK = mat.getCol2().getZ(); + mL = mat.getCol2().getW(); + mM = mat.getCol3().getX(); + mN = mat.getCol3().getY(); + mO = mat.getCol3().getZ(); + mP = mat.getCol3().getW(); + tmp0 = ( ( mK * mD ) - ( mC * mL ) ); + tmp1 = ( ( mO * mH ) - ( mG * mP ) ); + tmp2 = ( ( mB * mK ) - ( mJ * mC ) ); + tmp3 = ( ( mF * mO ) - ( mN * mG ) ); + tmp4 = ( ( mJ * mD ) - ( mB * mL ) ); + tmp5 = ( ( mN * mH ) - ( mF * mP ) ); + res0.setX( ( ( ( mJ * tmp1 ) - ( mL * tmp3 ) ) - ( mK * tmp5 ) ) ); + res0.setY( ( ( ( mN * tmp0 ) - ( mP * tmp2 ) ) - ( mO * tmp4 ) ) ); + res0.setZ( ( ( ( mD * tmp3 ) + ( mC * tmp5 ) ) - ( mB * tmp1 ) ) ); + res0.setW( ( ( ( mH * tmp2 ) + ( mG * tmp4 ) ) - ( mF * tmp0 ) ) ); + detInv = ( 1.0f / ( ( ( ( mA * res0.getX() ) + ( mE * res0.getY() ) ) + ( mI * res0.getZ() ) ) + ( mM * res0.getW() ) ) ); + res1.setX( ( mI * tmp1 ) ); + res1.setY( ( mM * tmp0 ) ); + res1.setZ( ( mA * tmp1 ) ); + res1.setW( ( mE * tmp0 ) ); + res3.setX( ( mI * tmp3 ) ); + res3.setY( ( mM * tmp2 ) ); + res3.setZ( ( mA * tmp3 ) ); + res3.setW( ( mE * tmp2 ) ); + res2.setX( ( mI * tmp5 ) ); + res2.setY( ( mM * tmp4 ) ); + res2.setZ( ( mA * tmp5 ) ); + res2.setW( ( mE * tmp4 ) ); + tmp0 = ( ( mI * mB ) - ( mA * mJ ) ); + tmp1 = ( ( mM * mF ) - ( mE * mN ) ); + tmp2 = ( ( mI * mD ) - ( mA * mL ) ); + tmp3 = ( ( mM * mH ) - ( mE * mP ) ); + tmp4 = ( ( mI * mC ) - ( mA * mK ) ); + tmp5 = ( ( mM * mG ) - ( mE * mO ) ); + res2.setX( ( ( ( mL * tmp1 ) - ( mJ * tmp3 ) ) + res2.getX() ) ); + res2.setY( ( ( ( mP * tmp0 ) - ( mN * tmp2 ) ) + res2.getY() ) ); + res2.setZ( ( ( ( mB * tmp3 ) - ( mD * tmp1 ) ) - res2.getZ() ) ); + res2.setW( ( ( ( mF * tmp2 ) - ( mH * tmp0 ) ) - res2.getW() ) ); + res3.setX( ( ( ( mJ * tmp5 ) - ( mK * tmp1 ) ) + res3.getX() ) ); + res3.setY( ( ( ( mN * tmp4 ) - ( mO * tmp0 ) ) + res3.getY() ) ); + res3.setZ( ( ( ( mC * tmp1 ) - ( mB * tmp5 ) ) - res3.getZ() ) ); + res3.setW( ( ( ( mG * tmp0 ) - ( mF * tmp4 ) ) - res3.getW() ) ); + res1.setX( ( ( ( mK * tmp3 ) - ( mL * tmp5 ) ) - res1.getX() ) ); + res1.setY( ( ( ( mO * tmp2 ) - ( mP * tmp4 ) ) - res1.getY() ) ); + res1.setZ( ( ( ( mD * tmp5 ) - ( mC * tmp3 ) ) + res1.getZ() ) ); + res1.setW( ( ( ( mH * tmp4 ) - ( mG * tmp2 ) ) + res1.getW() ) ); + return Matrix4( + ( res0 * detInv ), + ( res1 * detInv ), + ( res2 * detInv ), + ( res3 * detInv ) + ); +} + +inline const Matrix4 affineInverse( const Matrix4 & mat ) +{ + Transform3 affineMat; + affineMat.setCol0( mat.getCol0().getXYZ( ) ); + affineMat.setCol1( mat.getCol1().getXYZ( ) ); + affineMat.setCol2( mat.getCol2().getXYZ( ) ); + affineMat.setCol3( mat.getCol3().getXYZ( ) ); + return Matrix4( inverse( affineMat ) ); +} + +inline const Matrix4 orthoInverse( const Matrix4 & mat ) +{ + Transform3 affineMat; + affineMat.setCol0( mat.getCol0().getXYZ( ) ); + affineMat.setCol1( mat.getCol1().getXYZ( ) ); + affineMat.setCol2( mat.getCol2().getXYZ( ) ); + affineMat.setCol3( mat.getCol3().getXYZ( ) ); + return Matrix4( orthoInverse( affineMat ) ); +} + +inline float determinant( const Matrix4 & mat ) +{ + float dx, dy, dz, dw, mA, mB, mC, mD, mE, mF, mG, mH, mI, mJ, mK, mL, mM, mN, mO, mP, tmp0, tmp1, tmp2, tmp3, tmp4, tmp5; + mA = mat.getCol0().getX(); + mB = mat.getCol0().getY(); + mC = mat.getCol0().getZ(); + mD = mat.getCol0().getW(); + mE = mat.getCol1().getX(); + mF = mat.getCol1().getY(); + mG = mat.getCol1().getZ(); + mH = mat.getCol1().getW(); + mI = mat.getCol2().getX(); + mJ = mat.getCol2().getY(); + mK = mat.getCol2().getZ(); + mL = mat.getCol2().getW(); + mM = mat.getCol3().getX(); + mN = mat.getCol3().getY(); + mO = mat.getCol3().getZ(); + mP = mat.getCol3().getW(); + tmp0 = ( ( mK * mD ) - ( mC * mL ) ); + tmp1 = ( ( mO * mH ) - ( mG * mP ) ); + tmp2 = ( ( mB * mK ) - ( mJ * mC ) ); + tmp3 = ( ( mF * mO ) - ( mN * mG ) ); + tmp4 = ( ( mJ * mD ) - ( mB * mL ) ); + tmp5 = ( ( mN * mH ) - ( mF * mP ) ); + dx = ( ( ( mJ * tmp1 ) - ( mL * tmp3 ) ) - ( mK * tmp5 ) ); + dy = ( ( ( mN * tmp0 ) - ( mP * tmp2 ) ) - ( mO * tmp4 ) ); + dz = ( ( ( mD * tmp3 ) + ( mC * tmp5 ) ) - ( mB * tmp1 ) ); + dw = ( ( ( mH * tmp2 ) + ( mG * tmp4 ) ) - ( mF * tmp0 ) ); + return ( ( ( ( mA * dx ) + ( mE * dy ) ) + ( mI * dz ) ) + ( mM * dw ) ); +} + +inline const Matrix4 Matrix4::operator +( const Matrix4 & mat ) const +{ + return Matrix4( + ( mCol0 + mat.mCol0 ), + ( mCol1 + mat.mCol1 ), + ( mCol2 + mat.mCol2 ), + ( mCol3 + mat.mCol3 ) + ); +} + +inline const Matrix4 Matrix4::operator -( const Matrix4 & mat ) const +{ + return Matrix4( + ( mCol0 - mat.mCol0 ), + ( mCol1 - mat.mCol1 ), + ( mCol2 - mat.mCol2 ), + ( mCol3 - mat.mCol3 ) + ); +} + +inline Matrix4 & Matrix4::operator +=( const Matrix4 & mat ) +{ + *this = *this + mat; + return *this; +} + +inline Matrix4 & Matrix4::operator -=( const Matrix4 & mat ) +{ + *this = *this - mat; + return *this; +} + +inline const Matrix4 Matrix4::operator -( ) const +{ + return Matrix4( + ( -mCol0 ), + ( -mCol1 ), + ( -mCol2 ), + ( -mCol3 ) + ); +} + +inline const Matrix4 absPerElem( const Matrix4 & mat ) +{ + return Matrix4( + absPerElem( mat.getCol0() ), + absPerElem( mat.getCol1() ), + absPerElem( mat.getCol2() ), + absPerElem( mat.getCol3() ) + ); +} + +inline const Matrix4 Matrix4::operator *( float scalar ) const +{ + return Matrix4( + ( mCol0 * scalar ), + ( mCol1 * scalar ), + ( mCol2 * scalar ), + ( mCol3 * scalar ) + ); +} + +inline Matrix4 & Matrix4::operator *=( float scalar ) +{ + *this = *this * scalar; + return *this; +} + +inline const Matrix4 operator *( float scalar, const Matrix4 & mat ) +{ + return mat * scalar; +} + +inline const Vector4 Matrix4::operator *( const Vector4 & vec ) const +{ + return Vector4( + ( ( ( ( mCol0.getX() * vec.getX() ) + ( mCol1.getX() * vec.getY() ) ) + ( mCol2.getX() * vec.getZ() ) ) + ( mCol3.getX() * vec.getW() ) ), + ( ( ( ( mCol0.getY() * vec.getX() ) + ( mCol1.getY() * vec.getY() ) ) + ( mCol2.getY() * vec.getZ() ) ) + ( mCol3.getY() * vec.getW() ) ), + ( ( ( ( mCol0.getZ() * vec.getX() ) + ( mCol1.getZ() * vec.getY() ) ) + ( mCol2.getZ() * vec.getZ() ) ) + ( mCol3.getZ() * vec.getW() ) ), + ( ( ( ( mCol0.getW() * vec.getX() ) + ( mCol1.getW() * vec.getY() ) ) + ( mCol2.getW() * vec.getZ() ) ) + ( mCol3.getW() * vec.getW() ) ) + ); +} + +inline const Vector4 Matrix4::operator *( const Vector3 & vec ) const +{ + return Vector4( + ( ( ( mCol0.getX() * vec.getX() ) + ( mCol1.getX() * vec.getY() ) ) + ( mCol2.getX() * vec.getZ() ) ), + ( ( ( mCol0.getY() * vec.getX() ) + ( mCol1.getY() * vec.getY() ) ) + ( mCol2.getY() * vec.getZ() ) ), + ( ( ( mCol0.getZ() * vec.getX() ) + ( mCol1.getZ() * vec.getY() ) ) + ( mCol2.getZ() * vec.getZ() ) ), + ( ( ( mCol0.getW() * vec.getX() ) + ( mCol1.getW() * vec.getY() ) ) + ( mCol2.getW() * vec.getZ() ) ) + ); +} + +inline const Vector4 Matrix4::operator *( const Point3 & pnt ) const +{ + return Vector4( + ( ( ( ( mCol0.getX() * pnt.getX() ) + ( mCol1.getX() * pnt.getY() ) ) + ( mCol2.getX() * pnt.getZ() ) ) + mCol3.getX() ), + ( ( ( ( mCol0.getY() * pnt.getX() ) + ( mCol1.getY() * pnt.getY() ) ) + ( mCol2.getY() * pnt.getZ() ) ) + mCol3.getY() ), + ( ( ( ( mCol0.getZ() * pnt.getX() ) + ( mCol1.getZ() * pnt.getY() ) ) + ( mCol2.getZ() * pnt.getZ() ) ) + mCol3.getZ() ), + ( ( ( ( mCol0.getW() * pnt.getX() ) + ( mCol1.getW() * pnt.getY() ) ) + ( mCol2.getW() * pnt.getZ() ) ) + mCol3.getW() ) + ); +} + +inline const Matrix4 Matrix4::operator *( const Matrix4 & mat ) const +{ + return Matrix4( + ( *this * mat.mCol0 ), + ( *this * mat.mCol1 ), + ( *this * mat.mCol2 ), + ( *this * mat.mCol3 ) + ); +} + +inline Matrix4 & Matrix4::operator *=( const Matrix4 & mat ) +{ + *this = *this * mat; + return *this; +} + +inline const Matrix4 Matrix4::operator *( const Transform3 & tfrm ) const +{ + return Matrix4( + ( *this * tfrm.getCol0() ), + ( *this * tfrm.getCol1() ), + ( *this * tfrm.getCol2() ), + ( *this * Point3( tfrm.getCol3() ) ) + ); +} + +inline Matrix4 & Matrix4::operator *=( const Transform3 & tfrm ) +{ + *this = *this * tfrm; + return *this; +} + +inline const Matrix4 mulPerElem( const Matrix4 & mat0, const Matrix4 & mat1 ) +{ + return Matrix4( + mulPerElem( mat0.getCol0(), mat1.getCol0() ), + mulPerElem( mat0.getCol1(), mat1.getCol1() ), + mulPerElem( mat0.getCol2(), mat1.getCol2() ), + mulPerElem( mat0.getCol3(), mat1.getCol3() ) + ); +} + +inline const Matrix4 Matrix4::identity( ) +{ + return Matrix4( + Vector4::xAxis( ), + Vector4::yAxis( ), + Vector4::zAxis( ), + Vector4::wAxis( ) + ); +} + +inline Matrix4 & Matrix4::setUpper3x3( const Matrix3 & mat3 ) +{ + mCol0.setXYZ( mat3.getCol0() ); + mCol1.setXYZ( mat3.getCol1() ); + mCol2.setXYZ( mat3.getCol2() ); + return *this; +} + +inline const Matrix3 Matrix4::getUpper3x3( ) const +{ + return Matrix3( + mCol0.getXYZ( ), + mCol1.getXYZ( ), + mCol2.getXYZ( ) + ); +} + +inline Matrix4 & Matrix4::setTranslation( const Vector3 & translateVec ) +{ + mCol3.setXYZ( translateVec ); + return *this; +} + +inline const Vector3 Matrix4::getTranslation( ) const +{ + return mCol3.getXYZ( ); +} + +inline const Matrix4 Matrix4::rotationX( float radians ) +{ + float s, c; + s = sinf( radians ); + c = cosf( radians ); + return Matrix4( + Vector4::xAxis( ), + Vector4( 0.0f, c, s, 0.0f ), + Vector4( 0.0f, -s, c, 0.0f ), + Vector4::wAxis( ) + ); +} + +inline const Matrix4 Matrix4::rotationY( float radians ) +{ + float s, c; + s = sinf( radians ); + c = cosf( radians ); + return Matrix4( + Vector4( c, 0.0f, -s, 0.0f ), + Vector4::yAxis( ), + Vector4( s, 0.0f, c, 0.0f ), + Vector4::wAxis( ) + ); +} + +inline const Matrix4 Matrix4::rotationZ( float radians ) +{ + float s, c; + s = sinf( radians ); + c = cosf( radians ); + return Matrix4( + Vector4( c, s, 0.0f, 0.0f ), + Vector4( -s, c, 0.0f, 0.0f ), + Vector4::zAxis( ), + Vector4::wAxis( ) + ); +} + +inline const Matrix4 Matrix4::rotationZYX( const Vector3 & radiansXYZ ) +{ + float sX, cX, sY, cY, sZ, cZ, tmp0, tmp1; + sX = sinf( radiansXYZ.getX() ); + cX = cosf( radiansXYZ.getX() ); + sY = sinf( radiansXYZ.getY() ); + cY = cosf( radiansXYZ.getY() ); + sZ = sinf( radiansXYZ.getZ() ); + cZ = cosf( radiansXYZ.getZ() ); + tmp0 = ( cZ * sY ); + tmp1 = ( sZ * sY ); + return Matrix4( + Vector4( ( cZ * cY ), ( sZ * cY ), -sY, 0.0f ), + Vector4( ( ( tmp0 * sX ) - ( sZ * cX ) ), ( ( tmp1 * sX ) + ( cZ * cX ) ), ( cY * sX ), 0.0f ), + Vector4( ( ( tmp0 * cX ) + ( sZ * sX ) ), ( ( tmp1 * cX ) - ( cZ * sX ) ), ( cY * cX ), 0.0f ), + Vector4::wAxis( ) + ); +} + +inline const Matrix4 Matrix4::rotation( float radians, const Vector3 & unitVec ) +{ + float x, y, z, s, c, oneMinusC, xy, yz, zx; + s = sinf( radians ); + c = cosf( radians ); + x = unitVec.getX(); + y = unitVec.getY(); + z = unitVec.getZ(); + xy = ( x * y ); + yz = ( y * z ); + zx = ( z * x ); + oneMinusC = ( 1.0f - c ); + return Matrix4( + Vector4( ( ( ( x * x ) * oneMinusC ) + c ), ( ( xy * oneMinusC ) + ( z * s ) ), ( ( zx * oneMinusC ) - ( y * s ) ), 0.0f ), + Vector4( ( ( xy * oneMinusC ) - ( z * s ) ), ( ( ( y * y ) * oneMinusC ) + c ), ( ( yz * oneMinusC ) + ( x * s ) ), 0.0f ), + Vector4( ( ( zx * oneMinusC ) + ( y * s ) ), ( ( yz * oneMinusC ) - ( x * s ) ), ( ( ( z * z ) * oneMinusC ) + c ), 0.0f ), + Vector4::wAxis( ) + ); +} + +inline const Matrix4 Matrix4::rotation( const Quat & unitQuat ) +{ + return Matrix4( Transform3::rotation( unitQuat ) ); +} + +inline const Matrix4 Matrix4::scale( const Vector3 & scaleVec ) +{ + return Matrix4( + Vector4( scaleVec.getX(), 0.0f, 0.0f, 0.0f ), + Vector4( 0.0f, scaleVec.getY(), 0.0f, 0.0f ), + Vector4( 0.0f, 0.0f, scaleVec.getZ(), 0.0f ), + Vector4::wAxis( ) + ); +} + +inline const Matrix4 appendScale( const Matrix4 & mat, const Vector3 & scaleVec ) +{ + return Matrix4( + ( mat.getCol0() * scaleVec.getX( ) ), + ( mat.getCol1() * scaleVec.getY( ) ), + ( mat.getCol2() * scaleVec.getZ( ) ), + mat.getCol3() + ); +} + +inline const Matrix4 prependScale( const Vector3 & scaleVec, const Matrix4 & mat ) +{ + Vector4 scale4; + scale4 = Vector4( scaleVec, 1.0f ); + return Matrix4( + mulPerElem( mat.getCol0(), scale4 ), + mulPerElem( mat.getCol1(), scale4 ), + mulPerElem( mat.getCol2(), scale4 ), + mulPerElem( mat.getCol3(), scale4 ) + ); +} + +inline const Matrix4 Matrix4::translation( const Vector3 & translateVec ) +{ + return Matrix4( + Vector4::xAxis( ), + Vector4::yAxis( ), + Vector4::zAxis( ), + Vector4( translateVec, 1.0f ) + ); +} + +inline const Matrix4 Matrix4::lookAt( const Point3 & eyePos, const Point3 & lookAtPos, const Vector3 & upVec ) +{ + Matrix4 m4EyeFrame; + Vector3 v3X, v3Y, v3Z; + v3Y = normalize( upVec ); + v3Z = normalize( ( eyePos - lookAtPos ) ); + v3X = normalize( cross( v3Y, v3Z ) ); + v3Y = cross( v3Z, v3X ); + m4EyeFrame = Matrix4( Vector4( v3X ), Vector4( v3Y ), Vector4( v3Z ), Vector4( eyePos ) ); + return orthoInverse( m4EyeFrame ); +} + +inline const Matrix4 Matrix4::perspective( float fovyRadians, float aspect, float zNear, float zFar ) +{ + float f, rangeInv; + f = tanf( ( (float)( _VECTORMATH_PI_OVER_2 ) - ( 0.5f * fovyRadians ) ) ); + rangeInv = ( 1.0f / ( zNear - zFar ) ); + return Matrix4( + Vector4( ( f / aspect ), 0.0f, 0.0f, 0.0f ), + Vector4( 0.0f, f, 0.0f, 0.0f ), + Vector4( 0.0f, 0.0f, ( ( zNear + zFar ) * rangeInv ), -1.0f ), + Vector4( 0.0f, 0.0f, ( ( ( zNear * zFar ) * rangeInv ) * 2.0f ), 0.0f ) + ); +} + +inline const Matrix4 Matrix4::frustum( float left, float right, float bottom, float top, float zNear, float zFar ) +{ + float sum_rl, sum_tb, sum_nf, inv_rl, inv_tb, inv_nf, n2; + sum_rl = ( right + left ); + sum_tb = ( top + bottom ); + sum_nf = ( zNear + zFar ); + inv_rl = ( 1.0f / ( right - left ) ); + inv_tb = ( 1.0f / ( top - bottom ) ); + inv_nf = ( 1.0f / ( zNear - zFar ) ); + n2 = ( zNear + zNear ); + return Matrix4( + Vector4( ( n2 * inv_rl ), 0.0f, 0.0f, 0.0f ), + Vector4( 0.0f, ( n2 * inv_tb ), 0.0f, 0.0f ), + Vector4( ( sum_rl * inv_rl ), ( sum_tb * inv_tb ), ( sum_nf * inv_nf ), -1.0f ), + Vector4( 0.0f, 0.0f, ( ( n2 * inv_nf ) * zFar ), 0.0f ) + ); +} + +inline const Matrix4 Matrix4::orthographic( float left, float right, float bottom, float top, float zNear, float zFar ) +{ + float sum_rl, sum_tb, sum_nf, inv_rl, inv_tb, inv_nf; + sum_rl = ( right + left ); + sum_tb = ( top + bottom ); + sum_nf = ( zNear + zFar ); + inv_rl = ( 1.0f / ( right - left ) ); + inv_tb = ( 1.0f / ( top - bottom ) ); + inv_nf = ( 1.0f / ( zNear - zFar ) ); + return Matrix4( + Vector4( ( inv_rl + inv_rl ), 0.0f, 0.0f, 0.0f ), + Vector4( 0.0f, ( inv_tb + inv_tb ), 0.0f, 0.0f ), + Vector4( 0.0f, 0.0f, ( inv_nf + inv_nf ), 0.0f ), + Vector4( ( -sum_rl * inv_rl ), ( -sum_tb * inv_tb ), ( sum_nf * inv_nf ), 1.0f ) + ); +} + +inline const Matrix4 select( const Matrix4 & mat0, const Matrix4 & mat1, bool select1 ) +{ + return Matrix4( + select( mat0.getCol0(), mat1.getCol0(), select1 ), + select( mat0.getCol1(), mat1.getCol1(), select1 ), + select( mat0.getCol2(), mat1.getCol2(), select1 ), + select( mat0.getCol3(), mat1.getCol3(), select1 ) + ); +} + +#ifdef _VECTORMATH_DEBUG + +inline void print( const Matrix4 & mat ) +{ + print( mat.getRow( 0 ) ); + print( mat.getRow( 1 ) ); + print( mat.getRow( 2 ) ); + print( mat.getRow( 3 ) ); +} + +inline void print( const Matrix4 & mat, const char * name ) +{ + printf("%s:\n", name); + print( mat ); +} + +#endif + +inline Transform3::Transform3( const Transform3 & tfrm ) +{ + mCol0 = tfrm.mCol0; + mCol1 = tfrm.mCol1; + mCol2 = tfrm.mCol2; + mCol3 = tfrm.mCol3; +} + +inline Transform3::Transform3( float scalar ) +{ + mCol0 = Vector3( scalar ); + mCol1 = Vector3( scalar ); + mCol2 = Vector3( scalar ); + mCol3 = Vector3( scalar ); +} + +inline Transform3::Transform3( const Vector3 & _col0, const Vector3 & _col1, const Vector3 & _col2, const Vector3 & _col3 ) +{ + mCol0 = _col0; + mCol1 = _col1; + mCol2 = _col2; + mCol3 = _col3; +} + +inline Transform3::Transform3( const Matrix3 & tfrm, const Vector3 & translateVec ) +{ + this->setUpper3x3( tfrm ); + this->setTranslation( translateVec ); +} + +inline Transform3::Transform3( const Quat & unitQuat, const Vector3 & translateVec ) +{ + this->setUpper3x3( Matrix3( unitQuat ) ); + this->setTranslation( translateVec ); +} + +inline Transform3 & Transform3::setCol0( const Vector3 & _col0 ) +{ + mCol0 = _col0; + return *this; +} + +inline Transform3 & Transform3::setCol1( const Vector3 & _col1 ) +{ + mCol1 = _col1; + return *this; +} + +inline Transform3 & Transform3::setCol2( const Vector3 & _col2 ) +{ + mCol2 = _col2; + return *this; +} + +inline Transform3 & Transform3::setCol3( const Vector3 & _col3 ) +{ + mCol3 = _col3; + return *this; +} + +inline Transform3 & Transform3::setCol( int col, const Vector3 & vec ) +{ + *(&mCol0 + col) = vec; + return *this; +} + +inline Transform3 & Transform3::setRow( int row, const Vector4 & vec ) +{ + mCol0.setElem( row, vec.getElem( 0 ) ); + mCol1.setElem( row, vec.getElem( 1 ) ); + mCol2.setElem( row, vec.getElem( 2 ) ); + mCol3.setElem( row, vec.getElem( 3 ) ); + return *this; +} + +inline Transform3 & Transform3::setElem( int col, int row, float val ) +{ + Vector3 tmpV3_0; + tmpV3_0 = this->getCol( col ); + tmpV3_0.setElem( row, val ); + this->setCol( col, tmpV3_0 ); + return *this; +} + +inline float Transform3::getElem( int col, int row ) const +{ + return this->getCol( col ).getElem( row ); +} + +inline const Vector3 Transform3::getCol0( ) const +{ + return mCol0; +} + +inline const Vector3 Transform3::getCol1( ) const +{ + return mCol1; +} + +inline const Vector3 Transform3::getCol2( ) const +{ + return mCol2; +} + +inline const Vector3 Transform3::getCol3( ) const +{ + return mCol3; +} + +inline const Vector3 Transform3::getCol( int col ) const +{ + return *(&mCol0 + col); +} + +inline const Vector4 Transform3::getRow( int row ) const +{ + return Vector4( mCol0.getElem( row ), mCol1.getElem( row ), mCol2.getElem( row ), mCol3.getElem( row ) ); +} + +inline Vector3 & Transform3::operator []( int col ) +{ + return *(&mCol0 + col); +} + +inline const Vector3 Transform3::operator []( int col ) const +{ + return *(&mCol0 + col); +} + +inline Transform3 & Transform3::operator =( const Transform3 & tfrm ) +{ + mCol0 = tfrm.mCol0; + mCol1 = tfrm.mCol1; + mCol2 = tfrm.mCol2; + mCol3 = tfrm.mCol3; + return *this; +} + +inline const Transform3 inverse( const Transform3 & tfrm ) +{ + Vector3 tmp0, tmp1, tmp2, inv0, inv1, inv2; + float detinv; + tmp0 = cross( tfrm.getCol1(), tfrm.getCol2() ); + tmp1 = cross( tfrm.getCol2(), tfrm.getCol0() ); + tmp2 = cross( tfrm.getCol0(), tfrm.getCol1() ); + detinv = ( 1.0f / dot( tfrm.getCol2(), tmp2 ) ); + inv0 = Vector3( ( tmp0.getX() * detinv ), ( tmp1.getX() * detinv ), ( tmp2.getX() * detinv ) ); + inv1 = Vector3( ( tmp0.getY() * detinv ), ( tmp1.getY() * detinv ), ( tmp2.getY() * detinv ) ); + inv2 = Vector3( ( tmp0.getZ() * detinv ), ( tmp1.getZ() * detinv ), ( tmp2.getZ() * detinv ) ); + return Transform3( + inv0, + inv1, + inv2, + Vector3( ( -( ( inv0 * tfrm.getCol3().getX() ) + ( ( inv1 * tfrm.getCol3().getY() ) + ( inv2 * tfrm.getCol3().getZ() ) ) ) ) ) + ); +} + +inline const Transform3 orthoInverse( const Transform3 & tfrm ) +{ + Vector3 inv0, inv1, inv2; + inv0 = Vector3( tfrm.getCol0().getX(), tfrm.getCol1().getX(), tfrm.getCol2().getX() ); + inv1 = Vector3( tfrm.getCol0().getY(), tfrm.getCol1().getY(), tfrm.getCol2().getY() ); + inv2 = Vector3( tfrm.getCol0().getZ(), tfrm.getCol1().getZ(), tfrm.getCol2().getZ() ); + return Transform3( + inv0, + inv1, + inv2, + Vector3( ( -( ( inv0 * tfrm.getCol3().getX() ) + ( ( inv1 * tfrm.getCol3().getY() ) + ( inv2 * tfrm.getCol3().getZ() ) ) ) ) ) + ); +} + +inline const Transform3 absPerElem( const Transform3 & tfrm ) +{ + return Transform3( + absPerElem( tfrm.getCol0() ), + absPerElem( tfrm.getCol1() ), + absPerElem( tfrm.getCol2() ), + absPerElem( tfrm.getCol3() ) + ); +} + +inline const Vector3 Transform3::operator *( const Vector3 & vec ) const +{ + return Vector3( + ( ( ( mCol0.getX() * vec.getX() ) + ( mCol1.getX() * vec.getY() ) ) + ( mCol2.getX() * vec.getZ() ) ), + ( ( ( mCol0.getY() * vec.getX() ) + ( mCol1.getY() * vec.getY() ) ) + ( mCol2.getY() * vec.getZ() ) ), + ( ( ( mCol0.getZ() * vec.getX() ) + ( mCol1.getZ() * vec.getY() ) ) + ( mCol2.getZ() * vec.getZ() ) ) + ); +} + +inline const Point3 Transform3::operator *( const Point3 & pnt ) const +{ + return Point3( + ( ( ( ( mCol0.getX() * pnt.getX() ) + ( mCol1.getX() * pnt.getY() ) ) + ( mCol2.getX() * pnt.getZ() ) ) + mCol3.getX() ), + ( ( ( ( mCol0.getY() * pnt.getX() ) + ( mCol1.getY() * pnt.getY() ) ) + ( mCol2.getY() * pnt.getZ() ) ) + mCol3.getY() ), + ( ( ( ( mCol0.getZ() * pnt.getX() ) + ( mCol1.getZ() * pnt.getY() ) ) + ( mCol2.getZ() * pnt.getZ() ) ) + mCol3.getZ() ) + ); +} + +inline const Transform3 Transform3::operator *( const Transform3 & tfrm ) const +{ + return Transform3( + ( *this * tfrm.mCol0 ), + ( *this * tfrm.mCol1 ), + ( *this * tfrm.mCol2 ), + Vector3( ( *this * Point3( tfrm.mCol3 ) ) ) + ); +} + +inline Transform3 & Transform3::operator *=( const Transform3 & tfrm ) +{ + *this = *this * tfrm; + return *this; +} + +inline const Transform3 mulPerElem( const Transform3 & tfrm0, const Transform3 & tfrm1 ) +{ + return Transform3( + mulPerElem( tfrm0.getCol0(), tfrm1.getCol0() ), + mulPerElem( tfrm0.getCol1(), tfrm1.getCol1() ), + mulPerElem( tfrm0.getCol2(), tfrm1.getCol2() ), + mulPerElem( tfrm0.getCol3(), tfrm1.getCol3() ) + ); +} + +inline const Transform3 Transform3::identity( ) +{ + return Transform3( + Vector3::xAxis( ), + Vector3::yAxis( ), + Vector3::zAxis( ), + Vector3( 0.0f ) + ); +} + +inline Transform3 & Transform3::setUpper3x3( const Matrix3 & tfrm ) +{ + mCol0 = tfrm.getCol0(); + mCol1 = tfrm.getCol1(); + mCol2 = tfrm.getCol2(); + return *this; +} + +inline const Matrix3 Transform3::getUpper3x3( ) const +{ + return Matrix3( mCol0, mCol1, mCol2 ); +} + +inline Transform3 & Transform3::setTranslation( const Vector3 & translateVec ) +{ + mCol3 = translateVec; + return *this; +} + +inline const Vector3 Transform3::getTranslation( ) const +{ + return mCol3; +} + +inline const Transform3 Transform3::rotationX( float radians ) +{ + float s, c; + s = sinf( radians ); + c = cosf( radians ); + return Transform3( + Vector3::xAxis( ), + Vector3( 0.0f, c, s ), + Vector3( 0.0f, -s, c ), + Vector3( 0.0f ) + ); +} + +inline const Transform3 Transform3::rotationY( float radians ) +{ + float s, c; + s = sinf( radians ); + c = cosf( radians ); + return Transform3( + Vector3( c, 0.0f, -s ), + Vector3::yAxis( ), + Vector3( s, 0.0f, c ), + Vector3( 0.0f ) + ); +} + +inline const Transform3 Transform3::rotationZ( float radians ) +{ + float s, c; + s = sinf( radians ); + c = cosf( radians ); + return Transform3( + Vector3( c, s, 0.0f ), + Vector3( -s, c, 0.0f ), + Vector3::zAxis( ), + Vector3( 0.0f ) + ); +} + +inline const Transform3 Transform3::rotationZYX( const Vector3 & radiansXYZ ) +{ + float sX, cX, sY, cY, sZ, cZ, tmp0, tmp1; + sX = sinf( radiansXYZ.getX() ); + cX = cosf( radiansXYZ.getX() ); + sY = sinf( radiansXYZ.getY() ); + cY = cosf( radiansXYZ.getY() ); + sZ = sinf( radiansXYZ.getZ() ); + cZ = cosf( radiansXYZ.getZ() ); + tmp0 = ( cZ * sY ); + tmp1 = ( sZ * sY ); + return Transform3( + Vector3( ( cZ * cY ), ( sZ * cY ), -sY ), + Vector3( ( ( tmp0 * sX ) - ( sZ * cX ) ), ( ( tmp1 * sX ) + ( cZ * cX ) ), ( cY * sX ) ), + Vector3( ( ( tmp0 * cX ) + ( sZ * sX ) ), ( ( tmp1 * cX ) - ( cZ * sX ) ), ( cY * cX ) ), + Vector3( 0.0f ) + ); +} + +inline const Transform3 Transform3::rotation( float radians, const Vector3 & unitVec ) +{ + return Transform3( Matrix3::rotation( radians, unitVec ), Vector3( 0.0f ) ); +} + +inline const Transform3 Transform3::rotation( const Quat & unitQuat ) +{ + return Transform3( Matrix3( unitQuat ), Vector3( 0.0f ) ); +} + +inline const Transform3 Transform3::scale( const Vector3 & scaleVec ) +{ + return Transform3( + Vector3( scaleVec.getX(), 0.0f, 0.0f ), + Vector3( 0.0f, scaleVec.getY(), 0.0f ), + Vector3( 0.0f, 0.0f, scaleVec.getZ() ), + Vector3( 0.0f ) + ); +} + +inline const Transform3 appendScale( const Transform3 & tfrm, const Vector3 & scaleVec ) +{ + return Transform3( + ( tfrm.getCol0() * scaleVec.getX( ) ), + ( tfrm.getCol1() * scaleVec.getY( ) ), + ( tfrm.getCol2() * scaleVec.getZ( ) ), + tfrm.getCol3() + ); +} + +inline const Transform3 prependScale( const Vector3 & scaleVec, const Transform3 & tfrm ) +{ + return Transform3( + mulPerElem( tfrm.getCol0(), scaleVec ), + mulPerElem( tfrm.getCol1(), scaleVec ), + mulPerElem( tfrm.getCol2(), scaleVec ), + mulPerElem( tfrm.getCol3(), scaleVec ) + ); +} + +inline const Transform3 Transform3::translation( const Vector3 & translateVec ) +{ + return Transform3( + Vector3::xAxis( ), + Vector3::yAxis( ), + Vector3::zAxis( ), + translateVec + ); +} + +inline const Transform3 select( const Transform3 & tfrm0, const Transform3 & tfrm1, bool select1 ) +{ + return Transform3( + select( tfrm0.getCol0(), tfrm1.getCol0(), select1 ), + select( tfrm0.getCol1(), tfrm1.getCol1(), select1 ), + select( tfrm0.getCol2(), tfrm1.getCol2(), select1 ), + select( tfrm0.getCol3(), tfrm1.getCol3(), select1 ) + ); +} + +#ifdef _VECTORMATH_DEBUG + +inline void print( const Transform3 & tfrm ) +{ + print( tfrm.getRow( 0 ) ); + print( tfrm.getRow( 1 ) ); + print( tfrm.getRow( 2 ) ); +} + +inline void print( const Transform3 & tfrm, const char * name ) +{ + printf("%s:\n", name); + print( tfrm ); +} + +#endif + +inline Quat::Quat( const Matrix3 & tfrm ) +{ + float trace, radicand, scale, xx, yx, zx, xy, yy, zy, xz, yz, zz, tmpx, tmpy, tmpz, tmpw, qx, qy, qz, qw; + int negTrace, ZgtX, ZgtY, YgtX; + int largestXorY, largestYorZ, largestZorX; + + xx = tfrm.getCol0().getX(); + yx = tfrm.getCol0().getY(); + zx = tfrm.getCol0().getZ(); + xy = tfrm.getCol1().getX(); + yy = tfrm.getCol1().getY(); + zy = tfrm.getCol1().getZ(); + xz = tfrm.getCol2().getX(); + yz = tfrm.getCol2().getY(); + zz = tfrm.getCol2().getZ(); + + trace = ( ( xx + yy ) + zz ); + + negTrace = ( trace < 0.0f ); + ZgtX = zz > xx; + ZgtY = zz > yy; + YgtX = yy > xx; + largestXorY = ( !ZgtX || !ZgtY ) && negTrace; + largestYorZ = ( YgtX || ZgtX ) && negTrace; + largestZorX = ( ZgtY || !YgtX ) && negTrace; + + if ( largestXorY ) + { + zz = -zz; + xy = -xy; + } + if ( largestYorZ ) + { + xx = -xx; + yz = -yz; + } + if ( largestZorX ) + { + yy = -yy; + zx = -zx; + } + + radicand = ( ( ( xx + yy ) + zz ) + 1.0f ); + scale = ( 0.5f * ( 1.0f / sqrtf( radicand ) ) ); + + tmpx = ( ( zy - yz ) * scale ); + tmpy = ( ( xz - zx ) * scale ); + tmpz = ( ( yx - xy ) * scale ); + tmpw = ( radicand * scale ); + qx = tmpx; + qy = tmpy; + qz = tmpz; + qw = tmpw; + + if ( largestXorY ) + { + qx = tmpw; + qy = tmpz; + qz = tmpy; + qw = tmpx; + } + if ( largestYorZ ) + { + tmpx = qx; + tmpz = qz; + qx = qy; + qy = tmpx; + qz = qw; + qw = tmpz; + } + + mX = qx; + mY = qy; + mZ = qz; + mW = qw; +} + +inline const Matrix3 outer( const Vector3 & tfrm0, const Vector3 & tfrm1 ) +{ + return Matrix3( + ( tfrm0 * tfrm1.getX( ) ), + ( tfrm0 * tfrm1.getY( ) ), + ( tfrm0 * tfrm1.getZ( ) ) + ); +} + +inline const Matrix4 outer( const Vector4 & tfrm0, const Vector4 & tfrm1 ) +{ + return Matrix4( + ( tfrm0 * tfrm1.getX( ) ), + ( tfrm0 * tfrm1.getY( ) ), + ( tfrm0 * tfrm1.getZ( ) ), + ( tfrm0 * tfrm1.getW( ) ) + ); +} + +inline const Vector3 rowMul( const Vector3 & vec, const Matrix3 & mat ) +{ + return Vector3( + ( ( ( vec.getX() * mat.getCol0().getX() ) + ( vec.getY() * mat.getCol0().getY() ) ) + ( vec.getZ() * mat.getCol0().getZ() ) ), + ( ( ( vec.getX() * mat.getCol1().getX() ) + ( vec.getY() * mat.getCol1().getY() ) ) + ( vec.getZ() * mat.getCol1().getZ() ) ), + ( ( ( vec.getX() * mat.getCol2().getX() ) + ( vec.getY() * mat.getCol2().getY() ) ) + ( vec.getZ() * mat.getCol2().getZ() ) ) + ); +} + +inline const Matrix3 crossMatrix( const Vector3 & vec ) +{ + return Matrix3( + Vector3( 0.0f, vec.getZ(), -vec.getY() ), + Vector3( -vec.getZ(), 0.0f, vec.getX() ), + Vector3( vec.getY(), -vec.getX(), 0.0f ) + ); +} + +inline const Matrix3 crossMatrixMul( const Vector3 & vec, const Matrix3 & mat ) +{ + return Matrix3( cross( vec, mat.getCol0() ), cross( vec, mat.getCol1() ), cross( vec, mat.getCol2() ) ); +} + +} // namespace Aos +} // namespace Vectormath + +#endif diff --git a/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/quat_aos.h b/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/quat_aos.h new file mode 100644 index 00000000000..764e01708f9 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/quat_aos.h @@ -0,0 +1,433 @@ +/* + Copyright (C) 2009 Sony Computer Entertainment Inc. + All rights reserved. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +*/ + +#ifndef _VECTORMATH_QUAT_AOS_CPP_H +#define _VECTORMATH_QUAT_AOS_CPP_H + +//----------------------------------------------------------------------------- +// Definitions + +#ifndef _VECTORMATH_INTERNAL_FUNCTIONS +#define _VECTORMATH_INTERNAL_FUNCTIONS + +#endif + +namespace Vectormath { +namespace Aos { + +inline Quat::Quat( const Quat & quat ) +{ + mX = quat.mX; + mY = quat.mY; + mZ = quat.mZ; + mW = quat.mW; +} + +inline Quat::Quat( float _x, float _y, float _z, float _w ) +{ + mX = _x; + mY = _y; + mZ = _z; + mW = _w; +} + +inline Quat::Quat( const Vector3 & xyz, float _w ) +{ + this->setXYZ( xyz ); + this->setW( _w ); +} + +inline Quat::Quat( const Vector4 & vec ) +{ + mX = vec.getX(); + mY = vec.getY(); + mZ = vec.getZ(); + mW = vec.getW(); +} + +inline Quat::Quat( float scalar ) +{ + mX = scalar; + mY = scalar; + mZ = scalar; + mW = scalar; +} + +inline const Quat Quat::identity( ) +{ + return Quat( 0.0f, 0.0f, 0.0f, 1.0f ); +} + +inline const Quat lerp( float t, const Quat & quat0, const Quat & quat1 ) +{ + return ( quat0 + ( ( quat1 - quat0 ) * t ) ); +} + +inline const Quat slerp( float t, const Quat & unitQuat0, const Quat & unitQuat1 ) +{ + Quat start; + float recipSinAngle, scale0, scale1, cosAngle, angle; + cosAngle = dot( unitQuat0, unitQuat1 ); + if ( cosAngle < 0.0f ) { + cosAngle = -cosAngle; + start = ( -unitQuat0 ); + } else { + start = unitQuat0; + } + if ( cosAngle < _VECTORMATH_SLERP_TOL ) { + angle = acosf( cosAngle ); + recipSinAngle = ( 1.0f / sinf( angle ) ); + scale0 = ( sinf( ( ( 1.0f - t ) * angle ) ) * recipSinAngle ); + scale1 = ( sinf( ( t * angle ) ) * recipSinAngle ); + } else { + scale0 = ( 1.0f - t ); + scale1 = t; + } + return ( ( start * scale0 ) + ( unitQuat1 * scale1 ) ); +} + +inline const Quat squad( float t, const Quat & unitQuat0, const Quat & unitQuat1, const Quat & unitQuat2, const Quat & unitQuat3 ) +{ + Quat tmp0, tmp1; + tmp0 = slerp( t, unitQuat0, unitQuat3 ); + tmp1 = slerp( t, unitQuat1, unitQuat2 ); + return slerp( ( ( 2.0f * t ) * ( 1.0f - t ) ), tmp0, tmp1 ); +} + +inline void loadXYZW( Quat & quat, const float * fptr ) +{ + quat = Quat( fptr[0], fptr[1], fptr[2], fptr[3] ); +} + +inline void storeXYZW( const Quat & quat, float * fptr ) +{ + fptr[0] = quat.getX(); + fptr[1] = quat.getY(); + fptr[2] = quat.getZ(); + fptr[3] = quat.getW(); +} + +inline Quat & Quat::operator =( const Quat & quat ) +{ + mX = quat.mX; + mY = quat.mY; + mZ = quat.mZ; + mW = quat.mW; + return *this; +} + +inline Quat & Quat::setXYZ( const Vector3 & vec ) +{ + mX = vec.getX(); + mY = vec.getY(); + mZ = vec.getZ(); + return *this; +} + +inline const Vector3 Quat::getXYZ( ) const +{ + return Vector3( mX, mY, mZ ); +} + +inline Quat & Quat::setX( float _x ) +{ + mX = _x; + return *this; +} + +inline float Quat::getX( ) const +{ + return mX; +} + +inline Quat & Quat::setY( float _y ) +{ + mY = _y; + return *this; +} + +inline float Quat::getY( ) const +{ + return mY; +} + +inline Quat & Quat::setZ( float _z ) +{ + mZ = _z; + return *this; +} + +inline float Quat::getZ( ) const +{ + return mZ; +} + +inline Quat & Quat::setW( float _w ) +{ + mW = _w; + return *this; +} + +inline float Quat::getW( ) const +{ + return mW; +} + +inline Quat & Quat::setElem( int idx, float value ) +{ + *(&mX + idx) = value; + return *this; +} + +inline float Quat::getElem( int idx ) const +{ + return *(&mX + idx); +} + +inline float & Quat::operator []( int idx ) +{ + return *(&mX + idx); +} + +inline float Quat::operator []( int idx ) const +{ + return *(&mX + idx); +} + +inline const Quat Quat::operator +( const Quat & quat ) const +{ + return Quat( + ( mX + quat.mX ), + ( mY + quat.mY ), + ( mZ + quat.mZ ), + ( mW + quat.mW ) + ); +} + +inline const Quat Quat::operator -( const Quat & quat ) const +{ + return Quat( + ( mX - quat.mX ), + ( mY - quat.mY ), + ( mZ - quat.mZ ), + ( mW - quat.mW ) + ); +} + +inline const Quat Quat::operator *( float scalar ) const +{ + return Quat( + ( mX * scalar ), + ( mY * scalar ), + ( mZ * scalar ), + ( mW * scalar ) + ); +} + +inline Quat & Quat::operator +=( const Quat & quat ) +{ + *this = *this + quat; + return *this; +} + +inline Quat & Quat::operator -=( const Quat & quat ) +{ + *this = *this - quat; + return *this; +} + +inline Quat & Quat::operator *=( float scalar ) +{ + *this = *this * scalar; + return *this; +} + +inline const Quat Quat::operator /( float scalar ) const +{ + return Quat( + ( mX / scalar ), + ( mY / scalar ), + ( mZ / scalar ), + ( mW / scalar ) + ); +} + +inline Quat & Quat::operator /=( float scalar ) +{ + *this = *this / scalar; + return *this; +} + +inline const Quat Quat::operator -( ) const +{ + return Quat( + -mX, + -mY, + -mZ, + -mW + ); +} + +inline const Quat operator *( float scalar, const Quat & quat ) +{ + return quat * scalar; +} + +inline float dot( const Quat & quat0, const Quat & quat1 ) +{ + float result; + result = ( quat0.getX() * quat1.getX() ); + result = ( result + ( quat0.getY() * quat1.getY() ) ); + result = ( result + ( quat0.getZ() * quat1.getZ() ) ); + result = ( result + ( quat0.getW() * quat1.getW() ) ); + return result; +} + +inline float norm( const Quat & quat ) +{ + float result; + result = ( quat.getX() * quat.getX() ); + result = ( result + ( quat.getY() * quat.getY() ) ); + result = ( result + ( quat.getZ() * quat.getZ() ) ); + result = ( result + ( quat.getW() * quat.getW() ) ); + return result; +} + +inline float length( const Quat & quat ) +{ + return ::sqrtf( norm( quat ) ); +} + +inline const Quat normalize( const Quat & quat ) +{ + float lenSqr, lenInv; + lenSqr = norm( quat ); + lenInv = ( 1.0f / sqrtf( lenSqr ) ); + return Quat( + ( quat.getX() * lenInv ), + ( quat.getY() * lenInv ), + ( quat.getZ() * lenInv ), + ( quat.getW() * lenInv ) + ); +} + +inline const Quat Quat::rotation( const Vector3 & unitVec0, const Vector3 & unitVec1 ) +{ + float cosHalfAngleX2, recipCosHalfAngleX2; + cosHalfAngleX2 = sqrtf( ( 2.0f * ( 1.0f + dot( unitVec0, unitVec1 ) ) ) ); + recipCosHalfAngleX2 = ( 1.0f / cosHalfAngleX2 ); + return Quat( ( cross( unitVec0, unitVec1 ) * recipCosHalfAngleX2 ), ( cosHalfAngleX2 * 0.5f ) ); +} + +inline const Quat Quat::rotation( float radians, const Vector3 & unitVec ) +{ + float s, c, angle; + angle = ( radians * 0.5f ); + s = sinf( angle ); + c = cosf( angle ); + return Quat( ( unitVec * s ), c ); +} + +inline const Quat Quat::rotationX( float radians ) +{ + float s, c, angle; + angle = ( radians * 0.5f ); + s = sinf( angle ); + c = cosf( angle ); + return Quat( s, 0.0f, 0.0f, c ); +} + +inline const Quat Quat::rotationY( float radians ) +{ + float s, c, angle; + angle = ( radians * 0.5f ); + s = sinf( angle ); + c = cosf( angle ); + return Quat( 0.0f, s, 0.0f, c ); +} + +inline const Quat Quat::rotationZ( float radians ) +{ + float s, c, angle; + angle = ( radians * 0.5f ); + s = sinf( angle ); + c = cosf( angle ); + return Quat( 0.0f, 0.0f, s, c ); +} + +inline const Quat Quat::operator *( const Quat & quat ) const +{ + return Quat( + ( ( ( ( mW * quat.mX ) + ( mX * quat.mW ) ) + ( mY * quat.mZ ) ) - ( mZ * quat.mY ) ), + ( ( ( ( mW * quat.mY ) + ( mY * quat.mW ) ) + ( mZ * quat.mX ) ) - ( mX * quat.mZ ) ), + ( ( ( ( mW * quat.mZ ) + ( mZ * quat.mW ) ) + ( mX * quat.mY ) ) - ( mY * quat.mX ) ), + ( ( ( ( mW * quat.mW ) - ( mX * quat.mX ) ) - ( mY * quat.mY ) ) - ( mZ * quat.mZ ) ) + ); +} + +inline Quat & Quat::operator *=( const Quat & quat ) +{ + *this = *this * quat; + return *this; +} + +inline const Vector3 rotate( const Quat & quat, const Vector3 & vec ) +{ + float tmpX, tmpY, tmpZ, tmpW; + tmpX = ( ( ( quat.getW() * vec.getX() ) + ( quat.getY() * vec.getZ() ) ) - ( quat.getZ() * vec.getY() ) ); + tmpY = ( ( ( quat.getW() * vec.getY() ) + ( quat.getZ() * vec.getX() ) ) - ( quat.getX() * vec.getZ() ) ); + tmpZ = ( ( ( quat.getW() * vec.getZ() ) + ( quat.getX() * vec.getY() ) ) - ( quat.getY() * vec.getX() ) ); + tmpW = ( ( ( quat.getX() * vec.getX() ) + ( quat.getY() * vec.getY() ) ) + ( quat.getZ() * vec.getZ() ) ); + return Vector3( + ( ( ( ( tmpW * quat.getX() ) + ( tmpX * quat.getW() ) ) - ( tmpY * quat.getZ() ) ) + ( tmpZ * quat.getY() ) ), + ( ( ( ( tmpW * quat.getY() ) + ( tmpY * quat.getW() ) ) - ( tmpZ * quat.getX() ) ) + ( tmpX * quat.getZ() ) ), + ( ( ( ( tmpW * quat.getZ() ) + ( tmpZ * quat.getW() ) ) - ( tmpX * quat.getY() ) ) + ( tmpY * quat.getX() ) ) + ); +} + +inline const Quat conj( const Quat & quat ) +{ + return Quat( -quat.getX(), -quat.getY(), -quat.getZ(), quat.getW() ); +} + +inline const Quat select( const Quat & quat0, const Quat & quat1, bool select1 ) +{ + return Quat( + ( select1 )? quat1.getX() : quat0.getX(), + ( select1 )? quat1.getY() : quat0.getY(), + ( select1 )? quat1.getZ() : quat0.getZ(), + ( select1 )? quat1.getW() : quat0.getW() + ); +} + +#ifdef _VECTORMATH_DEBUG + +inline void print( const Quat & quat ) +{ + printf( "( %f %f %f %f )\n", quat.getX(), quat.getY(), quat.getZ(), quat.getW() ); +} + +inline void print( const Quat & quat, const char * name ) +{ + printf( "%s: ( %f %f %f %f )\n", name, quat.getX(), quat.getY(), quat.getZ(), quat.getW() ); +} + +#endif + +} // namespace Aos +} // namespace Vectormath + +#endif diff --git a/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/vec_aos.h b/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/vec_aos.h new file mode 100644 index 00000000000..46d4d6b3e5c --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/vec_aos.h @@ -0,0 +1,1426 @@ +/* + Copyright (C) 2009 Sony Computer Entertainment Inc. + All rights reserved. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +*/ + +#ifndef _VECTORMATH_VEC_AOS_CPP_H +#define _VECTORMATH_VEC_AOS_CPP_H + +//----------------------------------------------------------------------------- +// Constants + +#define _VECTORMATH_SLERP_TOL 0.999f + +//----------------------------------------------------------------------------- +// Definitions + +#ifndef _VECTORMATH_INTERNAL_FUNCTIONS +#define _VECTORMATH_INTERNAL_FUNCTIONS + +#endif + +namespace Vectormath { +namespace Aos { + +inline Vector3::Vector3( const Vector3 & vec ) +{ + mX = vec.mX; + mY = vec.mY; + mZ = vec.mZ; +} + +inline Vector3::Vector3( float _x, float _y, float _z ) +{ + mX = _x; + mY = _y; + mZ = _z; +} + +inline Vector3::Vector3( const Point3 & pnt ) +{ + mX = pnt.getX(); + mY = pnt.getY(); + mZ = pnt.getZ(); +} + +inline Vector3::Vector3( float scalar ) +{ + mX = scalar; + mY = scalar; + mZ = scalar; +} + +inline const Vector3 Vector3::xAxis( ) +{ + return Vector3( 1.0f, 0.0f, 0.0f ); +} + +inline const Vector3 Vector3::yAxis( ) +{ + return Vector3( 0.0f, 1.0f, 0.0f ); +} + +inline const Vector3 Vector3::zAxis( ) +{ + return Vector3( 0.0f, 0.0f, 1.0f ); +} + +inline const Vector3 lerp( float t, const Vector3 & vec0, const Vector3 & vec1 ) +{ + return ( vec0 + ( ( vec1 - vec0 ) * t ) ); +} + +inline const Vector3 slerp( float t, const Vector3 & unitVec0, const Vector3 & unitVec1 ) +{ + float recipSinAngle, scale0, scale1, cosAngle, angle; + cosAngle = dot( unitVec0, unitVec1 ); + if ( cosAngle < _VECTORMATH_SLERP_TOL ) { + angle = acosf( cosAngle ); + recipSinAngle = ( 1.0f / sinf( angle ) ); + scale0 = ( sinf( ( ( 1.0f - t ) * angle ) ) * recipSinAngle ); + scale1 = ( sinf( ( t * angle ) ) * recipSinAngle ); + } else { + scale0 = ( 1.0f - t ); + scale1 = t; + } + return ( ( unitVec0 * scale0 ) + ( unitVec1 * scale1 ) ); +} + +inline void loadXYZ( Vector3 & vec, const float * fptr ) +{ + vec = Vector3( fptr[0], fptr[1], fptr[2] ); +} + +inline void storeXYZ( const Vector3 & vec, float * fptr ) +{ + fptr[0] = vec.getX(); + fptr[1] = vec.getY(); + fptr[2] = vec.getZ(); +} + +inline void loadHalfFloats( Vector3 & vec, const unsigned short * hfptr ) +{ + union Data32 { + unsigned int u32; + float f32; + }; + + for (int i = 0; i < 3; i++) { + unsigned short fp16 = hfptr[i]; + unsigned int sign = fp16 >> 15; + unsigned int exponent = (fp16 >> 10) & ((1 << 5) - 1); + unsigned int mantissa = fp16 & ((1 << 10) - 1); + + if (exponent == 0) { + // zero + mantissa = 0; + + } else if (exponent == 31) { + // infinity or nan -> infinity + exponent = 255; + mantissa = 0; + + } else { + exponent += 127 - 15; + mantissa <<= 13; + } + + Data32 d; + d.u32 = (sign << 31) | (exponent << 23) | mantissa; + vec[i] = d.f32; + } +} + +inline void storeHalfFloats( const Vector3 & vec, unsigned short * hfptr ) +{ + union Data32 { + unsigned int u32; + float f32; + }; + + for (int i = 0; i < 3; i++) { + Data32 d; + d.f32 = vec[i]; + + unsigned int sign = d.u32 >> 31; + unsigned int exponent = (d.u32 >> 23) & ((1 << 8) - 1); + unsigned int mantissa = d.u32 & ((1 << 23) - 1);; + + if (exponent == 0) { + // zero or denorm -> zero + mantissa = 0; + + } else if (exponent == 255 && mantissa != 0) { + // nan -> infinity + exponent = 31; + mantissa = 0; + + } else if (exponent >= 127 - 15 + 31) { + // overflow or infinity -> infinity + exponent = 31; + mantissa = 0; + + } else if (exponent <= 127 - 15) { + // underflow -> zero + exponent = 0; + mantissa = 0; + + } else { + exponent -= 127 - 15; + mantissa >>= 13; + } + + hfptr[i] = (unsigned short)((sign << 15) | (exponent << 10) | mantissa); + } +} + +inline Vector3 & Vector3::operator =( const Vector3 & vec ) +{ + mX = vec.mX; + mY = vec.mY; + mZ = vec.mZ; + return *this; +} + +inline Vector3 & Vector3::setX( float _x ) +{ + mX = _x; + return *this; +} + +inline float Vector3::getX( ) const +{ + return mX; +} + +inline Vector3 & Vector3::setY( float _y ) +{ + mY = _y; + return *this; +} + +inline float Vector3::getY( ) const +{ + return mY; +} + +inline Vector3 & Vector3::setZ( float _z ) +{ + mZ = _z; + return *this; +} + +inline float Vector3::getZ( ) const +{ + return mZ; +} + +inline Vector3 & Vector3::setElem( int idx, float value ) +{ + *(&mX + idx) = value; + return *this; +} + +inline float Vector3::getElem( int idx ) const +{ + return *(&mX + idx); +} + +inline float & Vector3::operator []( int idx ) +{ + return *(&mX + idx); +} + +inline float Vector3::operator []( int idx ) const +{ + return *(&mX + idx); +} + +inline const Vector3 Vector3::operator +( const Vector3 & vec ) const +{ + return Vector3( + ( mX + vec.mX ), + ( mY + vec.mY ), + ( mZ + vec.mZ ) + ); +} + +inline const Vector3 Vector3::operator -( const Vector3 & vec ) const +{ + return Vector3( + ( mX - vec.mX ), + ( mY - vec.mY ), + ( mZ - vec.mZ ) + ); +} + +inline const Point3 Vector3::operator +( const Point3 & pnt ) const +{ + return Point3( + ( mX + pnt.getX() ), + ( mY + pnt.getY() ), + ( mZ + pnt.getZ() ) + ); +} + +inline const Vector3 Vector3::operator *( float scalar ) const +{ + return Vector3( + ( mX * scalar ), + ( mY * scalar ), + ( mZ * scalar ) + ); +} + +inline Vector3 & Vector3::operator +=( const Vector3 & vec ) +{ + *this = *this + vec; + return *this; +} + +inline Vector3 & Vector3::operator -=( const Vector3 & vec ) +{ + *this = *this - vec; + return *this; +} + +inline Vector3 & Vector3::operator *=( float scalar ) +{ + *this = *this * scalar; + return *this; +} + +inline const Vector3 Vector3::operator /( float scalar ) const +{ + return Vector3( + ( mX / scalar ), + ( mY / scalar ), + ( mZ / scalar ) + ); +} + +inline Vector3 & Vector3::operator /=( float scalar ) +{ + *this = *this / scalar; + return *this; +} + +inline const Vector3 Vector3::operator -( ) const +{ + return Vector3( + -mX, + -mY, + -mZ + ); +} + +inline const Vector3 operator *( float scalar, const Vector3 & vec ) +{ + return vec * scalar; +} + +inline const Vector3 mulPerElem( const Vector3 & vec0, const Vector3 & vec1 ) +{ + return Vector3( + ( vec0.getX() * vec1.getX() ), + ( vec0.getY() * vec1.getY() ), + ( vec0.getZ() * vec1.getZ() ) + ); +} + +inline const Vector3 divPerElem( const Vector3 & vec0, const Vector3 & vec1 ) +{ + return Vector3( + ( vec0.getX() / vec1.getX() ), + ( vec0.getY() / vec1.getY() ), + ( vec0.getZ() / vec1.getZ() ) + ); +} + +inline const Vector3 recipPerElem( const Vector3 & vec ) +{ + return Vector3( + ( 1.0f / vec.getX() ), + ( 1.0f / vec.getY() ), + ( 1.0f / vec.getZ() ) + ); +} + +inline const Vector3 sqrtPerElem( const Vector3 & vec ) +{ + return Vector3( + sqrtf( vec.getX() ), + sqrtf( vec.getY() ), + sqrtf( vec.getZ() ) + ); +} + +inline const Vector3 rsqrtPerElem( const Vector3 & vec ) +{ + return Vector3( + ( 1.0f / sqrtf( vec.getX() ) ), + ( 1.0f / sqrtf( vec.getY() ) ), + ( 1.0f / sqrtf( vec.getZ() ) ) + ); +} + +inline const Vector3 absPerElem( const Vector3 & vec ) +{ + return Vector3( + fabsf( vec.getX() ), + fabsf( vec.getY() ), + fabsf( vec.getZ() ) + ); +} + +inline const Vector3 copySignPerElem( const Vector3 & vec0, const Vector3 & vec1 ) +{ + return Vector3( + ( vec1.getX() < 0.0f )? -fabsf( vec0.getX() ) : fabsf( vec0.getX() ), + ( vec1.getY() < 0.0f )? -fabsf( vec0.getY() ) : fabsf( vec0.getY() ), + ( vec1.getZ() < 0.0f )? -fabsf( vec0.getZ() ) : fabsf( vec0.getZ() ) + ); +} + +inline const Vector3 maxPerElem( const Vector3 & vec0, const Vector3 & vec1 ) +{ + return Vector3( + (vec0.getX() > vec1.getX())? vec0.getX() : vec1.getX(), + (vec0.getY() > vec1.getY())? vec0.getY() : vec1.getY(), + (vec0.getZ() > vec1.getZ())? vec0.getZ() : vec1.getZ() + ); +} + +inline float maxElem( const Vector3 & vec ) +{ + float result; + result = (vec.getX() > vec.getY())? vec.getX() : vec.getY(); + result = (vec.getZ() > result)? vec.getZ() : result; + return result; +} + +inline const Vector3 minPerElem( const Vector3 & vec0, const Vector3 & vec1 ) +{ + return Vector3( + (vec0.getX() < vec1.getX())? vec0.getX() : vec1.getX(), + (vec0.getY() < vec1.getY())? vec0.getY() : vec1.getY(), + (vec0.getZ() < vec1.getZ())? vec0.getZ() : vec1.getZ() + ); +} + +inline float minElem( const Vector3 & vec ) +{ + float result; + result = (vec.getX() < vec.getY())? vec.getX() : vec.getY(); + result = (vec.getZ() < result)? vec.getZ() : result; + return result; +} + +inline float sum( const Vector3 & vec ) +{ + float result; + result = ( vec.getX() + vec.getY() ); + result = ( result + vec.getZ() ); + return result; +} + +inline float dot( const Vector3 & vec0, const Vector3 & vec1 ) +{ + float result; + result = ( vec0.getX() * vec1.getX() ); + result = ( result + ( vec0.getY() * vec1.getY() ) ); + result = ( result + ( vec0.getZ() * vec1.getZ() ) ); + return result; +} + +inline float lengthSqr( const Vector3 & vec ) +{ + float result; + result = ( vec.getX() * vec.getX() ); + result = ( result + ( vec.getY() * vec.getY() ) ); + result = ( result + ( vec.getZ() * vec.getZ() ) ); + return result; +} + +inline float length( const Vector3 & vec ) +{ + return ::sqrtf( lengthSqr( vec ) ); +} + +inline const Vector3 normalize( const Vector3 & vec ) +{ + float lenSqr, lenInv; + lenSqr = lengthSqr( vec ); + lenInv = ( 1.0f / sqrtf( lenSqr ) ); + return Vector3( + ( vec.getX() * lenInv ), + ( vec.getY() * lenInv ), + ( vec.getZ() * lenInv ) + ); +} + +inline const Vector3 cross( const Vector3 & vec0, const Vector3 & vec1 ) +{ + return Vector3( + ( ( vec0.getY() * vec1.getZ() ) - ( vec0.getZ() * vec1.getY() ) ), + ( ( vec0.getZ() * vec1.getX() ) - ( vec0.getX() * vec1.getZ() ) ), + ( ( vec0.getX() * vec1.getY() ) - ( vec0.getY() * vec1.getX() ) ) + ); +} + +inline const Vector3 select( const Vector3 & vec0, const Vector3 & vec1, bool select1 ) +{ + return Vector3( + ( select1 )? vec1.getX() : vec0.getX(), + ( select1 )? vec1.getY() : vec0.getY(), + ( select1 )? vec1.getZ() : vec0.getZ() + ); +} + +#ifdef _VECTORMATH_DEBUG + +inline void print( const Vector3 & vec ) +{ + printf( "( %f %f %f )\n", vec.getX(), vec.getY(), vec.getZ() ); +} + +inline void print( const Vector3 & vec, const char * name ) +{ + printf( "%s: ( %f %f %f )\n", name, vec.getX(), vec.getY(), vec.getZ() ); +} + +#endif + +inline Vector4::Vector4( const Vector4 & vec ) +{ + mX = vec.mX; + mY = vec.mY; + mZ = vec.mZ; + mW = vec.mW; +} + +inline Vector4::Vector4( float _x, float _y, float _z, float _w ) +{ + mX = _x; + mY = _y; + mZ = _z; + mW = _w; +} + +inline Vector4::Vector4( const Vector3 & xyz, float _w ) +{ + this->setXYZ( xyz ); + this->setW( _w ); +} + +inline Vector4::Vector4( const Vector3 & vec ) +{ + mX = vec.getX(); + mY = vec.getY(); + mZ = vec.getZ(); + mW = 0.0f; +} + +inline Vector4::Vector4( const Point3 & pnt ) +{ + mX = pnt.getX(); + mY = pnt.getY(); + mZ = pnt.getZ(); + mW = 1.0f; +} + +inline Vector4::Vector4( const Quat & quat ) +{ + mX = quat.getX(); + mY = quat.getY(); + mZ = quat.getZ(); + mW = quat.getW(); +} + +inline Vector4::Vector4( float scalar ) +{ + mX = scalar; + mY = scalar; + mZ = scalar; + mW = scalar; +} + +inline const Vector4 Vector4::xAxis( ) +{ + return Vector4( 1.0f, 0.0f, 0.0f, 0.0f ); +} + +inline const Vector4 Vector4::yAxis( ) +{ + return Vector4( 0.0f, 1.0f, 0.0f, 0.0f ); +} + +inline const Vector4 Vector4::zAxis( ) +{ + return Vector4( 0.0f, 0.0f, 1.0f, 0.0f ); +} + +inline const Vector4 Vector4::wAxis( ) +{ + return Vector4( 0.0f, 0.0f, 0.0f, 1.0f ); +} + +inline const Vector4 lerp( float t, const Vector4 & vec0, const Vector4 & vec1 ) +{ + return ( vec0 + ( ( vec1 - vec0 ) * t ) ); +} + +inline const Vector4 slerp( float t, const Vector4 & unitVec0, const Vector4 & unitVec1 ) +{ + float recipSinAngle, scale0, scale1, cosAngle, angle; + cosAngle = dot( unitVec0, unitVec1 ); + if ( cosAngle < _VECTORMATH_SLERP_TOL ) { + angle = acosf( cosAngle ); + recipSinAngle = ( 1.0f / sinf( angle ) ); + scale0 = ( sinf( ( ( 1.0f - t ) * angle ) ) * recipSinAngle ); + scale1 = ( sinf( ( t * angle ) ) * recipSinAngle ); + } else { + scale0 = ( 1.0f - t ); + scale1 = t; + } + return ( ( unitVec0 * scale0 ) + ( unitVec1 * scale1 ) ); +} + +inline void loadXYZW( Vector4 & vec, const float * fptr ) +{ + vec = Vector4( fptr[0], fptr[1], fptr[2], fptr[3] ); +} + +inline void storeXYZW( const Vector4 & vec, float * fptr ) +{ + fptr[0] = vec.getX(); + fptr[1] = vec.getY(); + fptr[2] = vec.getZ(); + fptr[3] = vec.getW(); +} + +inline void loadHalfFloats( Vector4 & vec, const unsigned short * hfptr ) +{ + union Data32 { + unsigned int u32; + float f32; + }; + + for (int i = 0; i < 4; i++) { + unsigned short fp16 = hfptr[i]; + unsigned int sign = fp16 >> 15; + unsigned int exponent = (fp16 >> 10) & ((1 << 5) - 1); + unsigned int mantissa = fp16 & ((1 << 10) - 1); + + if (exponent == 0) { + // zero + mantissa = 0; + + } else if (exponent == 31) { + // infinity or nan -> infinity + exponent = 255; + mantissa = 0; + + } else { + exponent += 127 - 15; + mantissa <<= 13; + } + + Data32 d; + d.u32 = (sign << 31) | (exponent << 23) | mantissa; + vec[i] = d.f32; + } +} + +inline void storeHalfFloats( const Vector4 & vec, unsigned short * hfptr ) +{ + union Data32 { + unsigned int u32; + float f32; + }; + + for (int i = 0; i < 4; i++) { + Data32 d; + d.f32 = vec[i]; + + unsigned int sign = d.u32 >> 31; + unsigned int exponent = (d.u32 >> 23) & ((1 << 8) - 1); + unsigned int mantissa = d.u32 & ((1 << 23) - 1);; + + if (exponent == 0) { + // zero or denorm -> zero + mantissa = 0; + + } else if (exponent == 255 && mantissa != 0) { + // nan -> infinity + exponent = 31; + mantissa = 0; + + } else if (exponent >= 127 - 15 + 31) { + // overflow or infinity -> infinity + exponent = 31; + mantissa = 0; + + } else if (exponent <= 127 - 15) { + // underflow -> zero + exponent = 0; + mantissa = 0; + + } else { + exponent -= 127 - 15; + mantissa >>= 13; + } + + hfptr[i] = (unsigned short)((sign << 15) | (exponent << 10) | mantissa); + } +} + +inline Vector4 & Vector4::operator =( const Vector4 & vec ) +{ + mX = vec.mX; + mY = vec.mY; + mZ = vec.mZ; + mW = vec.mW; + return *this; +} + +inline Vector4 & Vector4::setXYZ( const Vector3 & vec ) +{ + mX = vec.getX(); + mY = vec.getY(); + mZ = vec.getZ(); + return *this; +} + +inline const Vector3 Vector4::getXYZ( ) const +{ + return Vector3( mX, mY, mZ ); +} + +inline Vector4 & Vector4::setX( float _x ) +{ + mX = _x; + return *this; +} + +inline float Vector4::getX( ) const +{ + return mX; +} + +inline Vector4 & Vector4::setY( float _y ) +{ + mY = _y; + return *this; +} + +inline float Vector4::getY( ) const +{ + return mY; +} + +inline Vector4 & Vector4::setZ( float _z ) +{ + mZ = _z; + return *this; +} + +inline float Vector4::getZ( ) const +{ + return mZ; +} + +inline Vector4 & Vector4::setW( float _w ) +{ + mW = _w; + return *this; +} + +inline float Vector4::getW( ) const +{ + return mW; +} + +inline Vector4 & Vector4::setElem( int idx, float value ) +{ + *(&mX + idx) = value; + return *this; +} + +inline float Vector4::getElem( int idx ) const +{ + return *(&mX + idx); +} + +inline float & Vector4::operator []( int idx ) +{ + return *(&mX + idx); +} + +inline float Vector4::operator []( int idx ) const +{ + return *(&mX + idx); +} + +inline const Vector4 Vector4::operator +( const Vector4 & vec ) const +{ + return Vector4( + ( mX + vec.mX ), + ( mY + vec.mY ), + ( mZ + vec.mZ ), + ( mW + vec.mW ) + ); +} + +inline const Vector4 Vector4::operator -( const Vector4 & vec ) const +{ + return Vector4( + ( mX - vec.mX ), + ( mY - vec.mY ), + ( mZ - vec.mZ ), + ( mW - vec.mW ) + ); +} + +inline const Vector4 Vector4::operator *( float scalar ) const +{ + return Vector4( + ( mX * scalar ), + ( mY * scalar ), + ( mZ * scalar ), + ( mW * scalar ) + ); +} + +inline Vector4 & Vector4::operator +=( const Vector4 & vec ) +{ + *this = *this + vec; + return *this; +} + +inline Vector4 & Vector4::operator -=( const Vector4 & vec ) +{ + *this = *this - vec; + return *this; +} + +inline Vector4 & Vector4::operator *=( float scalar ) +{ + *this = *this * scalar; + return *this; +} + +inline const Vector4 Vector4::operator /( float scalar ) const +{ + return Vector4( + ( mX / scalar ), + ( mY / scalar ), + ( mZ / scalar ), + ( mW / scalar ) + ); +} + +inline Vector4 & Vector4::operator /=( float scalar ) +{ + *this = *this / scalar; + return *this; +} + +inline const Vector4 Vector4::operator -( ) const +{ + return Vector4( + -mX, + -mY, + -mZ, + -mW + ); +} + +inline const Vector4 operator *( float scalar, const Vector4 & vec ) +{ + return vec * scalar; +} + +inline const Vector4 mulPerElem( const Vector4 & vec0, const Vector4 & vec1 ) +{ + return Vector4( + ( vec0.getX() * vec1.getX() ), + ( vec0.getY() * vec1.getY() ), + ( vec0.getZ() * vec1.getZ() ), + ( vec0.getW() * vec1.getW() ) + ); +} + +inline const Vector4 divPerElem( const Vector4 & vec0, const Vector4 & vec1 ) +{ + return Vector4( + ( vec0.getX() / vec1.getX() ), + ( vec0.getY() / vec1.getY() ), + ( vec0.getZ() / vec1.getZ() ), + ( vec0.getW() / vec1.getW() ) + ); +} + +inline const Vector4 recipPerElem( const Vector4 & vec ) +{ + return Vector4( + ( 1.0f / vec.getX() ), + ( 1.0f / vec.getY() ), + ( 1.0f / vec.getZ() ), + ( 1.0f / vec.getW() ) + ); +} + +inline const Vector4 sqrtPerElem( const Vector4 & vec ) +{ + return Vector4( + sqrtf( vec.getX() ), + sqrtf( vec.getY() ), + sqrtf( vec.getZ() ), + sqrtf( vec.getW() ) + ); +} + +inline const Vector4 rsqrtPerElem( const Vector4 & vec ) +{ + return Vector4( + ( 1.0f / sqrtf( vec.getX() ) ), + ( 1.0f / sqrtf( vec.getY() ) ), + ( 1.0f / sqrtf( vec.getZ() ) ), + ( 1.0f / sqrtf( vec.getW() ) ) + ); +} + +inline const Vector4 absPerElem( const Vector4 & vec ) +{ + return Vector4( + fabsf( vec.getX() ), + fabsf( vec.getY() ), + fabsf( vec.getZ() ), + fabsf( vec.getW() ) + ); +} + +inline const Vector4 copySignPerElem( const Vector4 & vec0, const Vector4 & vec1 ) +{ + return Vector4( + ( vec1.getX() < 0.0f )? -fabsf( vec0.getX() ) : fabsf( vec0.getX() ), + ( vec1.getY() < 0.0f )? -fabsf( vec0.getY() ) : fabsf( vec0.getY() ), + ( vec1.getZ() < 0.0f )? -fabsf( vec0.getZ() ) : fabsf( vec0.getZ() ), + ( vec1.getW() < 0.0f )? -fabsf( vec0.getW() ) : fabsf( vec0.getW() ) + ); +} + +inline const Vector4 maxPerElem( const Vector4 & vec0, const Vector4 & vec1 ) +{ + return Vector4( + (vec0.getX() > vec1.getX())? vec0.getX() : vec1.getX(), + (vec0.getY() > vec1.getY())? vec0.getY() : vec1.getY(), + (vec0.getZ() > vec1.getZ())? vec0.getZ() : vec1.getZ(), + (vec0.getW() > vec1.getW())? vec0.getW() : vec1.getW() + ); +} + +inline float maxElem( const Vector4 & vec ) +{ + float result; + result = (vec.getX() > vec.getY())? vec.getX() : vec.getY(); + result = (vec.getZ() > result)? vec.getZ() : result; + result = (vec.getW() > result)? vec.getW() : result; + return result; +} + +inline const Vector4 minPerElem( const Vector4 & vec0, const Vector4 & vec1 ) +{ + return Vector4( + (vec0.getX() < vec1.getX())? vec0.getX() : vec1.getX(), + (vec0.getY() < vec1.getY())? vec0.getY() : vec1.getY(), + (vec0.getZ() < vec1.getZ())? vec0.getZ() : vec1.getZ(), + (vec0.getW() < vec1.getW())? vec0.getW() : vec1.getW() + ); +} + +inline float minElem( const Vector4 & vec ) +{ + float result; + result = (vec.getX() < vec.getY())? vec.getX() : vec.getY(); + result = (vec.getZ() < result)? vec.getZ() : result; + result = (vec.getW() < result)? vec.getW() : result; + return result; +} + +inline float sum( const Vector4 & vec ) +{ + float result; + result = ( vec.getX() + vec.getY() ); + result = ( result + vec.getZ() ); + result = ( result + vec.getW() ); + return result; +} + +inline float dot( const Vector4 & vec0, const Vector4 & vec1 ) +{ + float result; + result = ( vec0.getX() * vec1.getX() ); + result = ( result + ( vec0.getY() * vec1.getY() ) ); + result = ( result + ( vec0.getZ() * vec1.getZ() ) ); + result = ( result + ( vec0.getW() * vec1.getW() ) ); + return result; +} + +inline float lengthSqr( const Vector4 & vec ) +{ + float result; + result = ( vec.getX() * vec.getX() ); + result = ( result + ( vec.getY() * vec.getY() ) ); + result = ( result + ( vec.getZ() * vec.getZ() ) ); + result = ( result + ( vec.getW() * vec.getW() ) ); + return result; +} + +inline float length( const Vector4 & vec ) +{ + return ::sqrtf( lengthSqr( vec ) ); +} + +inline const Vector4 normalize( const Vector4 & vec ) +{ + float lenSqr, lenInv; + lenSqr = lengthSqr( vec ); + lenInv = ( 1.0f / sqrtf( lenSqr ) ); + return Vector4( + ( vec.getX() * lenInv ), + ( vec.getY() * lenInv ), + ( vec.getZ() * lenInv ), + ( vec.getW() * lenInv ) + ); +} + +inline const Vector4 select( const Vector4 & vec0, const Vector4 & vec1, bool select1 ) +{ + return Vector4( + ( select1 )? vec1.getX() : vec0.getX(), + ( select1 )? vec1.getY() : vec0.getY(), + ( select1 )? vec1.getZ() : vec0.getZ(), + ( select1 )? vec1.getW() : vec0.getW() + ); +} + +#ifdef _VECTORMATH_DEBUG + +inline void print( const Vector4 & vec ) +{ + printf( "( %f %f %f %f )\n", vec.getX(), vec.getY(), vec.getZ(), vec.getW() ); +} + +inline void print( const Vector4 & vec, const char * name ) +{ + printf( "%s: ( %f %f %f %f )\n", name, vec.getX(), vec.getY(), vec.getZ(), vec.getW() ); +} + +#endif + +inline Point3::Point3( const Point3 & pnt ) +{ + mX = pnt.mX; + mY = pnt.mY; + mZ = pnt.mZ; +} + +inline Point3::Point3( float _x, float _y, float _z ) +{ + mX = _x; + mY = _y; + mZ = _z; +} + +inline Point3::Point3( const Vector3 & vec ) +{ + mX = vec.getX(); + mY = vec.getY(); + mZ = vec.getZ(); +} + +inline Point3::Point3( float scalar ) +{ + mX = scalar; + mY = scalar; + mZ = scalar; +} + +inline const Point3 lerp( float t, const Point3 & pnt0, const Point3 & pnt1 ) +{ + return ( pnt0 + ( ( pnt1 - pnt0 ) * t ) ); +} + +inline void loadXYZ( Point3 & pnt, const float * fptr ) +{ + pnt = Point3( fptr[0], fptr[1], fptr[2] ); +} + +inline void storeXYZ( const Point3 & pnt, float * fptr ) +{ + fptr[0] = pnt.getX(); + fptr[1] = pnt.getY(); + fptr[2] = pnt.getZ(); +} + +inline void loadHalfFloats( Point3 & vec, const unsigned short * hfptr ) +{ + union Data32 { + unsigned int u32; + float f32; + }; + + for (int i = 0; i < 3; i++) { + unsigned short fp16 = hfptr[i]; + unsigned int sign = fp16 >> 15; + unsigned int exponent = (fp16 >> 10) & ((1 << 5) - 1); + unsigned int mantissa = fp16 & ((1 << 10) - 1); + + if (exponent == 0) { + // zero + mantissa = 0; + + } else if (exponent == 31) { + // infinity or nan -> infinity + exponent = 255; + mantissa = 0; + + } else { + exponent += 127 - 15; + mantissa <<= 13; + } + + Data32 d; + d.u32 = (sign << 31) | (exponent << 23) | mantissa; + vec[i] = d.f32; + } +} + +inline void storeHalfFloats( const Point3 & vec, unsigned short * hfptr ) +{ + union Data32 { + unsigned int u32; + float f32; + }; + + for (int i = 0; i < 3; i++) { + Data32 d; + d.f32 = vec[i]; + + unsigned int sign = d.u32 >> 31; + unsigned int exponent = (d.u32 >> 23) & ((1 << 8) - 1); + unsigned int mantissa = d.u32 & ((1 << 23) - 1);; + + if (exponent == 0) { + // zero or denorm -> zero + mantissa = 0; + + } else if (exponent == 255 && mantissa != 0) { + // nan -> infinity + exponent = 31; + mantissa = 0; + + } else if (exponent >= 127 - 15 + 31) { + // overflow or infinity -> infinity + exponent = 31; + mantissa = 0; + + } else if (exponent <= 127 - 15) { + // underflow -> zero + exponent = 0; + mantissa = 0; + + } else { + exponent -= 127 - 15; + mantissa >>= 13; + } + + hfptr[i] = (unsigned short)((sign << 15) | (exponent << 10) | mantissa); + } +} + +inline Point3 & Point3::operator =( const Point3 & pnt ) +{ + mX = pnt.mX; + mY = pnt.mY; + mZ = pnt.mZ; + return *this; +} + +inline Point3 & Point3::setX( float _x ) +{ + mX = _x; + return *this; +} + +inline float Point3::getX( ) const +{ + return mX; +} + +inline Point3 & Point3::setY( float _y ) +{ + mY = _y; + return *this; +} + +inline float Point3::getY( ) const +{ + return mY; +} + +inline Point3 & Point3::setZ( float _z ) +{ + mZ = _z; + return *this; +} + +inline float Point3::getZ( ) const +{ + return mZ; +} + +inline Point3 & Point3::setElem( int idx, float value ) +{ + *(&mX + idx) = value; + return *this; +} + +inline float Point3::getElem( int idx ) const +{ + return *(&mX + idx); +} + +inline float & Point3::operator []( int idx ) +{ + return *(&mX + idx); +} + +inline float Point3::operator []( int idx ) const +{ + return *(&mX + idx); +} + +inline const Vector3 Point3::operator -( const Point3 & pnt ) const +{ + return Vector3( + ( mX - pnt.mX ), + ( mY - pnt.mY ), + ( mZ - pnt.mZ ) + ); +} + +inline const Point3 Point3::operator +( const Vector3 & vec ) const +{ + return Point3( + ( mX + vec.getX() ), + ( mY + vec.getY() ), + ( mZ + vec.getZ() ) + ); +} + +inline const Point3 Point3::operator -( const Vector3 & vec ) const +{ + return Point3( + ( mX - vec.getX() ), + ( mY - vec.getY() ), + ( mZ - vec.getZ() ) + ); +} + +inline Point3 & Point3::operator +=( const Vector3 & vec ) +{ + *this = *this + vec; + return *this; +} + +inline Point3 & Point3::operator -=( const Vector3 & vec ) +{ + *this = *this - vec; + return *this; +} + +inline const Point3 mulPerElem( const Point3 & pnt0, const Point3 & pnt1 ) +{ + return Point3( + ( pnt0.getX() * pnt1.getX() ), + ( pnt0.getY() * pnt1.getY() ), + ( pnt0.getZ() * pnt1.getZ() ) + ); +} + +inline const Point3 divPerElem( const Point3 & pnt0, const Point3 & pnt1 ) +{ + return Point3( + ( pnt0.getX() / pnt1.getX() ), + ( pnt0.getY() / pnt1.getY() ), + ( pnt0.getZ() / pnt1.getZ() ) + ); +} + +inline const Point3 recipPerElem( const Point3 & pnt ) +{ + return Point3( + ( 1.0f / pnt.getX() ), + ( 1.0f / pnt.getY() ), + ( 1.0f / pnt.getZ() ) + ); +} + +inline const Point3 sqrtPerElem( const Point3 & pnt ) +{ + return Point3( + sqrtf( pnt.getX() ), + sqrtf( pnt.getY() ), + sqrtf( pnt.getZ() ) + ); +} + +inline const Point3 rsqrtPerElem( const Point3 & pnt ) +{ + return Point3( + ( 1.0f / sqrtf( pnt.getX() ) ), + ( 1.0f / sqrtf( pnt.getY() ) ), + ( 1.0f / sqrtf( pnt.getZ() ) ) + ); +} + +inline const Point3 absPerElem( const Point3 & pnt ) +{ + return Point3( + fabsf( pnt.getX() ), + fabsf( pnt.getY() ), + fabsf( pnt.getZ() ) + ); +} + +inline const Point3 copySignPerElem( const Point3 & pnt0, const Point3 & pnt1 ) +{ + return Point3( + ( pnt1.getX() < 0.0f )? -fabsf( pnt0.getX() ) : fabsf( pnt0.getX() ), + ( pnt1.getY() < 0.0f )? -fabsf( pnt0.getY() ) : fabsf( pnt0.getY() ), + ( pnt1.getZ() < 0.0f )? -fabsf( pnt0.getZ() ) : fabsf( pnt0.getZ() ) + ); +} + +inline const Point3 maxPerElem( const Point3 & pnt0, const Point3 & pnt1 ) +{ + return Point3( + (pnt0.getX() > pnt1.getX())? pnt0.getX() : pnt1.getX(), + (pnt0.getY() > pnt1.getY())? pnt0.getY() : pnt1.getY(), + (pnt0.getZ() > pnt1.getZ())? pnt0.getZ() : pnt1.getZ() + ); +} + +inline float maxElem( const Point3 & pnt ) +{ + float result; + result = (pnt.getX() > pnt.getY())? pnt.getX() : pnt.getY(); + result = (pnt.getZ() > result)? pnt.getZ() : result; + return result; +} + +inline const Point3 minPerElem( const Point3 & pnt0, const Point3 & pnt1 ) +{ + return Point3( + (pnt0.getX() < pnt1.getX())? pnt0.getX() : pnt1.getX(), + (pnt0.getY() < pnt1.getY())? pnt0.getY() : pnt1.getY(), + (pnt0.getZ() < pnt1.getZ())? pnt0.getZ() : pnt1.getZ() + ); +} + +inline float minElem( const Point3 & pnt ) +{ + float result; + result = (pnt.getX() < pnt.getY())? pnt.getX() : pnt.getY(); + result = (pnt.getZ() < result)? pnt.getZ() : result; + return result; +} + +inline float sum( const Point3 & pnt ) +{ + float result; + result = ( pnt.getX() + pnt.getY() ); + result = ( result + pnt.getZ() ); + return result; +} + +inline const Point3 scale( const Point3 & pnt, float scaleVal ) +{ + return mulPerElem( pnt, Point3( scaleVal ) ); +} + +inline const Point3 scale( const Point3 & pnt, const Vector3 & scaleVec ) +{ + return mulPerElem( pnt, Point3( scaleVec ) ); +} + +inline float projection( const Point3 & pnt, const Vector3 & unitVec ) +{ + float result; + result = ( pnt.getX() * unitVec.getX() ); + result = ( result + ( pnt.getY() * unitVec.getY() ) ); + result = ( result + ( pnt.getZ() * unitVec.getZ() ) ); + return result; +} + +inline float distSqrFromOrigin( const Point3 & pnt ) +{ + return lengthSqr( Vector3( pnt ) ); +} + +inline float distFromOrigin( const Point3 & pnt ) +{ + return length( Vector3( pnt ) ); +} + +inline float distSqr( const Point3 & pnt0, const Point3 & pnt1 ) +{ + return lengthSqr( ( pnt1 - pnt0 ) ); +} + +inline float dist( const Point3 & pnt0, const Point3 & pnt1 ) +{ + return length( ( pnt1 - pnt0 ) ); +} + +inline const Point3 select( const Point3 & pnt0, const Point3 & pnt1, bool select1 ) +{ + return Point3( + ( select1 )? pnt1.getX() : pnt0.getX(), + ( select1 )? pnt1.getY() : pnt0.getY(), + ( select1 )? pnt1.getZ() : pnt0.getZ() + ); +} + +#ifdef _VECTORMATH_DEBUG + +inline void print( const Point3 & pnt ) +{ + printf( "( %f %f %f )\n", pnt.getX(), pnt.getY(), pnt.getZ() ); +} + +inline void print( const Point3 & pnt, const char * name ) +{ + printf( "%s: ( %f %f %f )\n", name, pnt.getX(), pnt.getY(), pnt.getZ() ); +} + +#endif + +} // namespace Aos +} // namespace Vectormath + +#endif diff --git a/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/vectormath_aos.h b/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/vectormath_aos.h new file mode 100644 index 00000000000..d00456dfeb4 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/vectormath_aos.h @@ -0,0 +1,1872 @@ +/* + Copyright (C) 2009 Sony Computer Entertainment Inc. + All rights reserved. + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +*/ + +#ifndef _VECTORMATH_AOS_CPP_H +#define _VECTORMATH_AOS_CPP_H + +#include + +#ifdef _VECTORMATH_DEBUG +#include +#endif + +namespace Vectormath { + +namespace Aos { + +//----------------------------------------------------------------------------- +// Forward Declarations +// + +class Vector3; +class Vector4; +class Point3; +class Quat; +class Matrix3; +class Matrix4; +class Transform3; + +// A 3-D vector in array-of-structures format +// +class Vector3 +{ + float mX; + float mY; + float mZ; +#ifndef __GNUC__ + float d; +#endif + +public: + // Default constructor; does no initialization + // + inline Vector3( ) { }; + + // Copy a 3-D vector + // + inline Vector3( const Vector3 & vec ); + + // Construct a 3-D vector from x, y, and z elements + // + inline Vector3( float x, float y, float z ); + + // Copy elements from a 3-D point into a 3-D vector + // + explicit inline Vector3( const Point3 & pnt ); + + // Set all elements of a 3-D vector to the same scalar value + // + explicit inline Vector3( float scalar ); + + // Assign one 3-D vector to another + // + inline Vector3 & operator =( const Vector3 & vec ); + + // Set the x element of a 3-D vector + // + inline Vector3 & setX( float x ); + + // Set the y element of a 3-D vector + // + inline Vector3 & setY( float y ); + + // Set the z element of a 3-D vector + // + inline Vector3 & setZ( float z ); + + // Get the x element of a 3-D vector + // + inline float getX( ) const; + + // Get the y element of a 3-D vector + // + inline float getY( ) const; + + // Get the z element of a 3-D vector + // + inline float getZ( ) const; + + // Set an x, y, or z element of a 3-D vector by index + // + inline Vector3 & setElem( int idx, float value ); + + // Get an x, y, or z element of a 3-D vector by index + // + inline float getElem( int idx ) const; + + // Subscripting operator to set or get an element + // + inline float & operator []( int idx ); + + // Subscripting operator to get an element + // + inline float operator []( int idx ) const; + + // Add two 3-D vectors + // + inline const Vector3 operator +( const Vector3 & vec ) const; + + // Subtract a 3-D vector from another 3-D vector + // + inline const Vector3 operator -( const Vector3 & vec ) const; + + // Add a 3-D vector to a 3-D point + // + inline const Point3 operator +( const Point3 & pnt ) const; + + // Multiply a 3-D vector by a scalar + // + inline const Vector3 operator *( float scalar ) const; + + // Divide a 3-D vector by a scalar + // + inline const Vector3 operator /( float scalar ) const; + + // Perform compound assignment and addition with a 3-D vector + // + inline Vector3 & operator +=( const Vector3 & vec ); + + // Perform compound assignment and subtraction by a 3-D vector + // + inline Vector3 & operator -=( const Vector3 & vec ); + + // Perform compound assignment and multiplication by a scalar + // + inline Vector3 & operator *=( float scalar ); + + // Perform compound assignment and division by a scalar + // + inline Vector3 & operator /=( float scalar ); + + // Negate all elements of a 3-D vector + // + inline const Vector3 operator -( ) const; + + // Construct x axis + // + static inline const Vector3 xAxis( ); + + // Construct y axis + // + static inline const Vector3 yAxis( ); + + // Construct z axis + // + static inline const Vector3 zAxis( ); + +} +#ifdef __GNUC__ +__attribute__ ((aligned(16))) +#endif +; + +// Multiply a 3-D vector by a scalar +// +inline const Vector3 operator *( float scalar, const Vector3 & vec ); + +// Multiply two 3-D vectors per element +// +inline const Vector3 mulPerElem( const Vector3 & vec0, const Vector3 & vec1 ); + +// Divide two 3-D vectors per element +// NOTE: +// Floating-point behavior matches standard library function divf4. +// +inline const Vector3 divPerElem( const Vector3 & vec0, const Vector3 & vec1 ); + +// Compute the reciprocal of a 3-D vector per element +// NOTE: +// Floating-point behavior matches standard library function recipf4. +// +inline const Vector3 recipPerElem( const Vector3 & vec ); + +// Compute the square root of a 3-D vector per element +// NOTE: +// Floating-point behavior matches standard library function sqrtf4. +// +inline const Vector3 sqrtPerElem( const Vector3 & vec ); + +// Compute the reciprocal square root of a 3-D vector per element +// NOTE: +// Floating-point behavior matches standard library function rsqrtf4. +// +inline const Vector3 rsqrtPerElem( const Vector3 & vec ); + +// Compute the absolute value of a 3-D vector per element +// +inline const Vector3 absPerElem( const Vector3 & vec ); + +// Copy sign from one 3-D vector to another, per element +// +inline const Vector3 copySignPerElem( const Vector3 & vec0, const Vector3 & vec1 ); + +// Maximum of two 3-D vectors per element +// +inline const Vector3 maxPerElem( const Vector3 & vec0, const Vector3 & vec1 ); + +// Minimum of two 3-D vectors per element +// +inline const Vector3 minPerElem( const Vector3 & vec0, const Vector3 & vec1 ); + +// Maximum element of a 3-D vector +// +inline float maxElem( const Vector3 & vec ); + +// Minimum element of a 3-D vector +// +inline float minElem( const Vector3 & vec ); + +// Compute the sum of all elements of a 3-D vector +// +inline float sum( const Vector3 & vec ); + +// Compute the dot product of two 3-D vectors +// +inline float dot( const Vector3 & vec0, const Vector3 & vec1 ); + +// Compute the square of the length of a 3-D vector +// +inline float lengthSqr( const Vector3 & vec ); + +// Compute the length of a 3-D vector +// +inline float length( const Vector3 & vec ); + +// Normalize a 3-D vector +// NOTE: +// The result is unpredictable when all elements of vec are at or near zero. +// +inline const Vector3 normalize( const Vector3 & vec ); + +// Compute cross product of two 3-D vectors +// +inline const Vector3 cross( const Vector3 & vec0, const Vector3 & vec1 ); + +// Outer product of two 3-D vectors +// +inline const Matrix3 outer( const Vector3 & vec0, const Vector3 & vec1 ); + +// Pre-multiply a row vector by a 3x3 matrix +// +inline const Vector3 rowMul( const Vector3 & vec, const Matrix3 & mat ); + +// Cross-product matrix of a 3-D vector +// +inline const Matrix3 crossMatrix( const Vector3 & vec ); + +// Create cross-product matrix and multiply +// NOTE: +// Faster than separately creating a cross-product matrix and multiplying. +// +inline const Matrix3 crossMatrixMul( const Vector3 & vec, const Matrix3 & mat ); + +// Linear interpolation between two 3-D vectors +// NOTE: +// Does not clamp t between 0 and 1. +// +inline const Vector3 lerp( float t, const Vector3 & vec0, const Vector3 & vec1 ); + +// Spherical linear interpolation between two 3-D vectors +// NOTE: +// The result is unpredictable if the vectors point in opposite directions. +// Does not clamp t between 0 and 1. +// +inline const Vector3 slerp( float t, const Vector3 & unitVec0, const Vector3 & unitVec1 ); + +// Conditionally select between two 3-D vectors +// +inline const Vector3 select( const Vector3 & vec0, const Vector3 & vec1, bool select1 ); + +// Load x, y, and z elements from the first three words of a float array. +// +// +inline void loadXYZ( Vector3 & vec, const float * fptr ); + +// Store x, y, and z elements of a 3-D vector in the first three words of a float array. +// Memory area of previous 16 bytes and next 32 bytes from fptr might be accessed +// +inline void storeXYZ( const Vector3 & vec, float * fptr ); + +// Load three-half-floats as a 3-D vector +// NOTE: +// This transformation does not support either denormalized numbers or NaNs. +// +inline void loadHalfFloats( Vector3 & vec, const unsigned short * hfptr ); + +// Store a 3-D vector as half-floats. Memory area of previous 16 bytes and next 32 bytes from hfptr might be accessed. +// NOTE: +// This transformation does not support either denormalized numbers or NaNs. Memory area of previous 16 bytes and next 32 bytes from hfptr might be accessed. +// +inline void storeHalfFloats( const Vector3 & vec, unsigned short * hfptr ); + +#ifdef _VECTORMATH_DEBUG + +// Print a 3-D vector +// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined. +// +inline void print( const Vector3 & vec ); + +// Print a 3-D vector and an associated string identifier +// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined. +// +inline void print( const Vector3 & vec, const char * name ); + +#endif + +// A 4-D vector in array-of-structures format +// +class Vector4 +{ + float mX; + float mY; + float mZ; + float mW; + +public: + // Default constructor; does no initialization + // + inline Vector4( ) { }; + + // Copy a 4-D vector + // + inline Vector4( const Vector4 & vec ); + + // Construct a 4-D vector from x, y, z, and w elements + // + inline Vector4( float x, float y, float z, float w ); + + // Construct a 4-D vector from a 3-D vector and a scalar + // + inline Vector4( const Vector3 & xyz, float w ); + + // Copy x, y, and z from a 3-D vector into a 4-D vector, and set w to 0 + // + explicit inline Vector4( const Vector3 & vec ); + + // Copy x, y, and z from a 3-D point into a 4-D vector, and set w to 1 + // + explicit inline Vector4( const Point3 & pnt ); + + // Copy elements from a quaternion into a 4-D vector + // + explicit inline Vector4( const Quat & quat ); + + // Set all elements of a 4-D vector to the same scalar value + // + explicit inline Vector4( float scalar ); + + // Assign one 4-D vector to another + // + inline Vector4 & operator =( const Vector4 & vec ); + + // Set the x, y, and z elements of a 4-D vector + // NOTE: + // This function does not change the w element. + // + inline Vector4 & setXYZ( const Vector3 & vec ); + + // Get the x, y, and z elements of a 4-D vector + // + inline const Vector3 getXYZ( ) const; + + // Set the x element of a 4-D vector + // + inline Vector4 & setX( float x ); + + // Set the y element of a 4-D vector + // + inline Vector4 & setY( float y ); + + // Set the z element of a 4-D vector + // + inline Vector4 & setZ( float z ); + + // Set the w element of a 4-D vector + // + inline Vector4 & setW( float w ); + + // Get the x element of a 4-D vector + // + inline float getX( ) const; + + // Get the y element of a 4-D vector + // + inline float getY( ) const; + + // Get the z element of a 4-D vector + // + inline float getZ( ) const; + + // Get the w element of a 4-D vector + // + inline float getW( ) const; + + // Set an x, y, z, or w element of a 4-D vector by index + // + inline Vector4 & setElem( int idx, float value ); + + // Get an x, y, z, or w element of a 4-D vector by index + // + inline float getElem( int idx ) const; + + // Subscripting operator to set or get an element + // + inline float & operator []( int idx ); + + // Subscripting operator to get an element + // + inline float operator []( int idx ) const; + + // Add two 4-D vectors + // + inline const Vector4 operator +( const Vector4 & vec ) const; + + // Subtract a 4-D vector from another 4-D vector + // + inline const Vector4 operator -( const Vector4 & vec ) const; + + // Multiply a 4-D vector by a scalar + // + inline const Vector4 operator *( float scalar ) const; + + // Divide a 4-D vector by a scalar + // + inline const Vector4 operator /( float scalar ) const; + + // Perform compound assignment and addition with a 4-D vector + // + inline Vector4 & operator +=( const Vector4 & vec ); + + // Perform compound assignment and subtraction by a 4-D vector + // + inline Vector4 & operator -=( const Vector4 & vec ); + + // Perform compound assignment and multiplication by a scalar + // + inline Vector4 & operator *=( float scalar ); + + // Perform compound assignment and division by a scalar + // + inline Vector4 & operator /=( float scalar ); + + // Negate all elements of a 4-D vector + // + inline const Vector4 operator -( ) const; + + // Construct x axis + // + static inline const Vector4 xAxis( ); + + // Construct y axis + // + static inline const Vector4 yAxis( ); + + // Construct z axis + // + static inline const Vector4 zAxis( ); + + // Construct w axis + // + static inline const Vector4 wAxis( ); + +} +#ifdef __GNUC__ +__attribute__ ((aligned(16))) +#endif +; + +// Multiply a 4-D vector by a scalar +// +inline const Vector4 operator *( float scalar, const Vector4 & vec ); + +// Multiply two 4-D vectors per element +// +inline const Vector4 mulPerElem( const Vector4 & vec0, const Vector4 & vec1 ); + +// Divide two 4-D vectors per element +// NOTE: +// Floating-point behavior matches standard library function divf4. +// +inline const Vector4 divPerElem( const Vector4 & vec0, const Vector4 & vec1 ); + +// Compute the reciprocal of a 4-D vector per element +// NOTE: +// Floating-point behavior matches standard library function recipf4. +// +inline const Vector4 recipPerElem( const Vector4 & vec ); + +// Compute the square root of a 4-D vector per element +// NOTE: +// Floating-point behavior matches standard library function sqrtf4. +// +inline const Vector4 sqrtPerElem( const Vector4 & vec ); + +// Compute the reciprocal square root of a 4-D vector per element +// NOTE: +// Floating-point behavior matches standard library function rsqrtf4. +// +inline const Vector4 rsqrtPerElem( const Vector4 & vec ); + +// Compute the absolute value of a 4-D vector per element +// +inline const Vector4 absPerElem( const Vector4 & vec ); + +// Copy sign from one 4-D vector to another, per element +// +inline const Vector4 copySignPerElem( const Vector4 & vec0, const Vector4 & vec1 ); + +// Maximum of two 4-D vectors per element +// +inline const Vector4 maxPerElem( const Vector4 & vec0, const Vector4 & vec1 ); + +// Minimum of two 4-D vectors per element +// +inline const Vector4 minPerElem( const Vector4 & vec0, const Vector4 & vec1 ); + +// Maximum element of a 4-D vector +// +inline float maxElem( const Vector4 & vec ); + +// Minimum element of a 4-D vector +// +inline float minElem( const Vector4 & vec ); + +// Compute the sum of all elements of a 4-D vector +// +inline float sum( const Vector4 & vec ); + +// Compute the dot product of two 4-D vectors +// +inline float dot( const Vector4 & vec0, const Vector4 & vec1 ); + +// Compute the square of the length of a 4-D vector +// +inline float lengthSqr( const Vector4 & vec ); + +// Compute the length of a 4-D vector +// +inline float length( const Vector4 & vec ); + +// Normalize a 4-D vector +// NOTE: +// The result is unpredictable when all elements of vec are at or near zero. +// +inline const Vector4 normalize( const Vector4 & vec ); + +// Outer product of two 4-D vectors +// +inline const Matrix4 outer( const Vector4 & vec0, const Vector4 & vec1 ); + +// Linear interpolation between two 4-D vectors +// NOTE: +// Does not clamp t between 0 and 1. +// +inline const Vector4 lerp( float t, const Vector4 & vec0, const Vector4 & vec1 ); + +// Spherical linear interpolation between two 4-D vectors +// NOTE: +// The result is unpredictable if the vectors point in opposite directions. +// Does not clamp t between 0 and 1. +// +inline const Vector4 slerp( float t, const Vector4 & unitVec0, const Vector4 & unitVec1 ); + +// Conditionally select between two 4-D vectors +// +inline const Vector4 select( const Vector4 & vec0, const Vector4 & vec1, bool select1 ); + +// Load x, y, z, and w elements from the first four words of a float array. +// +// +inline void loadXYZW( Vector4 & vec, const float * fptr ); + +// Store x, y, z, and w elements of a 4-D vector in the first four words of a float array. +// Memory area of previous 16 bytes and next 32 bytes from fptr might be accessed +// +inline void storeXYZW( const Vector4 & vec, float * fptr ); + +// Load four-half-floats as a 4-D vector +// NOTE: +// This transformation does not support either denormalized numbers or NaNs. +// +inline void loadHalfFloats( Vector4 & vec, const unsigned short * hfptr ); + +// Store a 4-D vector as half-floats. Memory area of previous 16 bytes and next 32 bytes from hfptr might be accessed. +// NOTE: +// This transformation does not support either denormalized numbers or NaNs. Memory area of previous 16 bytes and next 32 bytes from hfptr might be accessed. +// +inline void storeHalfFloats( const Vector4 & vec, unsigned short * hfptr ); + +#ifdef _VECTORMATH_DEBUG + +// Print a 4-D vector +// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined. +// +inline void print( const Vector4 & vec ); + +// Print a 4-D vector and an associated string identifier +// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined. +// +inline void print( const Vector4 & vec, const char * name ); + +#endif + +// A 3-D point in array-of-structures format +// +class Point3 +{ + float mX; + float mY; + float mZ; +#ifndef __GNUC__ + float d; +#endif + +public: + // Default constructor; does no initialization + // + inline Point3( ) { }; + + // Copy a 3-D point + // + inline Point3( const Point3 & pnt ); + + // Construct a 3-D point from x, y, and z elements + // + inline Point3( float x, float y, float z ); + + // Copy elements from a 3-D vector into a 3-D point + // + explicit inline Point3( const Vector3 & vec ); + + // Set all elements of a 3-D point to the same scalar value + // + explicit inline Point3( float scalar ); + + // Assign one 3-D point to another + // + inline Point3 & operator =( const Point3 & pnt ); + + // Set the x element of a 3-D point + // + inline Point3 & setX( float x ); + + // Set the y element of a 3-D point + // + inline Point3 & setY( float y ); + + // Set the z element of a 3-D point + // + inline Point3 & setZ( float z ); + + // Get the x element of a 3-D point + // + inline float getX( ) const; + + // Get the y element of a 3-D point + // + inline float getY( ) const; + + // Get the z element of a 3-D point + // + inline float getZ( ) const; + + // Set an x, y, or z element of a 3-D point by index + // + inline Point3 & setElem( int idx, float value ); + + // Get an x, y, or z element of a 3-D point by index + // + inline float getElem( int idx ) const; + + // Subscripting operator to set or get an element + // + inline float & operator []( int idx ); + + // Subscripting operator to get an element + // + inline float operator []( int idx ) const; + + // Subtract a 3-D point from another 3-D point + // + inline const Vector3 operator -( const Point3 & pnt ) const; + + // Add a 3-D point to a 3-D vector + // + inline const Point3 operator +( const Vector3 & vec ) const; + + // Subtract a 3-D vector from a 3-D point + // + inline const Point3 operator -( const Vector3 & vec ) const; + + // Perform compound assignment and addition with a 3-D vector + // + inline Point3 & operator +=( const Vector3 & vec ); + + // Perform compound assignment and subtraction by a 3-D vector + // + inline Point3 & operator -=( const Vector3 & vec ); + +} +#ifdef __GNUC__ +__attribute__ ((aligned(16))) +#endif +; + +// Multiply two 3-D points per element +// +inline const Point3 mulPerElem( const Point3 & pnt0, const Point3 & pnt1 ); + +// Divide two 3-D points per element +// NOTE: +// Floating-point behavior matches standard library function divf4. +// +inline const Point3 divPerElem( const Point3 & pnt0, const Point3 & pnt1 ); + +// Compute the reciprocal of a 3-D point per element +// NOTE: +// Floating-point behavior matches standard library function recipf4. +// +inline const Point3 recipPerElem( const Point3 & pnt ); + +// Compute the square root of a 3-D point per element +// NOTE: +// Floating-point behavior matches standard library function sqrtf4. +// +inline const Point3 sqrtPerElem( const Point3 & pnt ); + +// Compute the reciprocal square root of a 3-D point per element +// NOTE: +// Floating-point behavior matches standard library function rsqrtf4. +// +inline const Point3 rsqrtPerElem( const Point3 & pnt ); + +// Compute the absolute value of a 3-D point per element +// +inline const Point3 absPerElem( const Point3 & pnt ); + +// Copy sign from one 3-D point to another, per element +// +inline const Point3 copySignPerElem( const Point3 & pnt0, const Point3 & pnt1 ); + +// Maximum of two 3-D points per element +// +inline const Point3 maxPerElem( const Point3 & pnt0, const Point3 & pnt1 ); + +// Minimum of two 3-D points per element +// +inline const Point3 minPerElem( const Point3 & pnt0, const Point3 & pnt1 ); + +// Maximum element of a 3-D point +// +inline float maxElem( const Point3 & pnt ); + +// Minimum element of a 3-D point +// +inline float minElem( const Point3 & pnt ); + +// Compute the sum of all elements of a 3-D point +// +inline float sum( const Point3 & pnt ); + +// Apply uniform scale to a 3-D point +// +inline const Point3 scale( const Point3 & pnt, float scaleVal ); + +// Apply non-uniform scale to a 3-D point +// +inline const Point3 scale( const Point3 & pnt, const Vector3 & scaleVec ); + +// Scalar projection of a 3-D point on a unit-length 3-D vector +// +inline float projection( const Point3 & pnt, const Vector3 & unitVec ); + +// Compute the square of the distance of a 3-D point from the coordinate-system origin +// +inline float distSqrFromOrigin( const Point3 & pnt ); + +// Compute the distance of a 3-D point from the coordinate-system origin +// +inline float distFromOrigin( const Point3 & pnt ); + +// Compute the square of the distance between two 3-D points +// +inline float distSqr( const Point3 & pnt0, const Point3 & pnt1 ); + +// Compute the distance between two 3-D points +// +inline float dist( const Point3 & pnt0, const Point3 & pnt1 ); + +// Linear interpolation between two 3-D points +// NOTE: +// Does not clamp t between 0 and 1. +// +inline const Point3 lerp( float t, const Point3 & pnt0, const Point3 & pnt1 ); + +// Conditionally select between two 3-D points +// +inline const Point3 select( const Point3 & pnt0, const Point3 & pnt1, bool select1 ); + +// Load x, y, and z elements from the first three words of a float array. +// +// +inline void loadXYZ( Point3 & pnt, const float * fptr ); + +// Store x, y, and z elements of a 3-D point in the first three words of a float array. +// Memory area of previous 16 bytes and next 32 bytes from fptr might be accessed +// +inline void storeXYZ( const Point3 & pnt, float * fptr ); + +// Load three-half-floats as a 3-D point +// NOTE: +// This transformation does not support either denormalized numbers or NaNs. +// +inline void loadHalfFloats( Point3 & pnt, const unsigned short * hfptr ); + +// Store a 3-D point as half-floats. Memory area of previous 16 bytes and next 32 bytes from hfptr might be accessed. +// NOTE: +// This transformation does not support either denormalized numbers or NaNs. Memory area of previous 16 bytes and next 32 bytes from hfptr might be accessed. +// +inline void storeHalfFloats( const Point3 & pnt, unsigned short * hfptr ); + +#ifdef _VECTORMATH_DEBUG + +// Print a 3-D point +// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined. +// +inline void print( const Point3 & pnt ); + +// Print a 3-D point and an associated string identifier +// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined. +// +inline void print( const Point3 & pnt, const char * name ); + +#endif + +// A quaternion in array-of-structures format +// +class Quat +{ + float mX; + float mY; + float mZ; + float mW; + +public: + // Default constructor; does no initialization + // + inline Quat( ) { }; + + // Copy a quaternion + // + inline Quat( const Quat & quat ); + + // Construct a quaternion from x, y, z, and w elements + // + inline Quat( float x, float y, float z, float w ); + + // Construct a quaternion from a 3-D vector and a scalar + // + inline Quat( const Vector3 & xyz, float w ); + + // Copy elements from a 4-D vector into a quaternion + // + explicit inline Quat( const Vector4 & vec ); + + // Convert a rotation matrix to a unit-length quaternion + // + explicit inline Quat( const Matrix3 & rotMat ); + + // Set all elements of a quaternion to the same scalar value + // + explicit inline Quat( float scalar ); + + // Assign one quaternion to another + // + inline Quat & operator =( const Quat & quat ); + + // Set the x, y, and z elements of a quaternion + // NOTE: + // This function does not change the w element. + // + inline Quat & setXYZ( const Vector3 & vec ); + + // Get the x, y, and z elements of a quaternion + // + inline const Vector3 getXYZ( ) const; + + // Set the x element of a quaternion + // + inline Quat & setX( float x ); + + // Set the y element of a quaternion + // + inline Quat & setY( float y ); + + // Set the z element of a quaternion + // + inline Quat & setZ( float z ); + + // Set the w element of a quaternion + // + inline Quat & setW( float w ); + + // Get the x element of a quaternion + // + inline float getX( ) const; + + // Get the y element of a quaternion + // + inline float getY( ) const; + + // Get the z element of a quaternion + // + inline float getZ( ) const; + + // Get the w element of a quaternion + // + inline float getW( ) const; + + // Set an x, y, z, or w element of a quaternion by index + // + inline Quat & setElem( int idx, float value ); + + // Get an x, y, z, or w element of a quaternion by index + // + inline float getElem( int idx ) const; + + // Subscripting operator to set or get an element + // + inline float & operator []( int idx ); + + // Subscripting operator to get an element + // + inline float operator []( int idx ) const; + + // Add two quaternions + // + inline const Quat operator +( const Quat & quat ) const; + + // Subtract a quaternion from another quaternion + // + inline const Quat operator -( const Quat & quat ) const; + + // Multiply two quaternions + // + inline const Quat operator *( const Quat & quat ) const; + + // Multiply a quaternion by a scalar + // + inline const Quat operator *( float scalar ) const; + + // Divide a quaternion by a scalar + // + inline const Quat operator /( float scalar ) const; + + // Perform compound assignment and addition with a quaternion + // + inline Quat & operator +=( const Quat & quat ); + + // Perform compound assignment and subtraction by a quaternion + // + inline Quat & operator -=( const Quat & quat ); + + // Perform compound assignment and multiplication by a quaternion + // + inline Quat & operator *=( const Quat & quat ); + + // Perform compound assignment and multiplication by a scalar + // + inline Quat & operator *=( float scalar ); + + // Perform compound assignment and division by a scalar + // + inline Quat & operator /=( float scalar ); + + // Negate all elements of a quaternion + // + inline const Quat operator -( ) const; + + // Construct an identity quaternion + // + static inline const Quat identity( ); + + // Construct a quaternion to rotate between two unit-length 3-D vectors + // NOTE: + // The result is unpredictable if unitVec0 and unitVec1 point in opposite directions. + // + static inline const Quat rotation( const Vector3 & unitVec0, const Vector3 & unitVec1 ); + + // Construct a quaternion to rotate around a unit-length 3-D vector + // + static inline const Quat rotation( float radians, const Vector3 & unitVec ); + + // Construct a quaternion to rotate around the x axis + // + static inline const Quat rotationX( float radians ); + + // Construct a quaternion to rotate around the y axis + // + static inline const Quat rotationY( float radians ); + + // Construct a quaternion to rotate around the z axis + // + static inline const Quat rotationZ( float radians ); + +} +#ifdef __GNUC__ +__attribute__ ((aligned(16))) +#endif +; + +// Multiply a quaternion by a scalar +// +inline const Quat operator *( float scalar, const Quat & quat ); + +// Compute the conjugate of a quaternion +// +inline const Quat conj( const Quat & quat ); + +// Use a unit-length quaternion to rotate a 3-D vector +// +inline const Vector3 rotate( const Quat & unitQuat, const Vector3 & vec ); + +// Compute the dot product of two quaternions +// +inline float dot( const Quat & quat0, const Quat & quat1 ); + +// Compute the norm of a quaternion +// +inline float norm( const Quat & quat ); + +// Compute the length of a quaternion +// +inline float length( const Quat & quat ); + +// Normalize a quaternion +// NOTE: +// The result is unpredictable when all elements of quat are at or near zero. +// +inline const Quat normalize( const Quat & quat ); + +// Linear interpolation between two quaternions +// NOTE: +// Does not clamp t between 0 and 1. +// +inline const Quat lerp( float t, const Quat & quat0, const Quat & quat1 ); + +// Spherical linear interpolation between two quaternions +// NOTE: +// Interpolates along the shortest path between orientations. +// Does not clamp t between 0 and 1. +// +inline const Quat slerp( float t, const Quat & unitQuat0, const Quat & unitQuat1 ); + +// Spherical quadrangle interpolation +// +inline const Quat squad( float t, const Quat & unitQuat0, const Quat & unitQuat1, const Quat & unitQuat2, const Quat & unitQuat3 ); + +// Conditionally select between two quaternions +// +inline const Quat select( const Quat & quat0, const Quat & quat1, bool select1 ); + +// Load x, y, z, and w elements from the first four words of a float array. +// +// +inline void loadXYZW( Quat & quat, const float * fptr ); + +// Store x, y, z, and w elements of a quaternion in the first four words of a float array. +// Memory area of previous 16 bytes and next 32 bytes from fptr might be accessed +// +inline void storeXYZW( const Quat & quat, float * fptr ); + +#ifdef _VECTORMATH_DEBUG + +// Print a quaternion +// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined. +// +inline void print( const Quat & quat ); + +// Print a quaternion and an associated string identifier +// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined. +// +inline void print( const Quat & quat, const char * name ); + +#endif + +// A 3x3 matrix in array-of-structures format +// +class Matrix3 +{ + Vector3 mCol0; + Vector3 mCol1; + Vector3 mCol2; + +public: + // Default constructor; does no initialization + // + inline Matrix3( ) { }; + + // Copy a 3x3 matrix + // + inline Matrix3( const Matrix3 & mat ); + + // Construct a 3x3 matrix containing the specified columns + // + inline Matrix3( const Vector3 & col0, const Vector3 & col1, const Vector3 & col2 ); + + // Construct a 3x3 rotation matrix from a unit-length quaternion + // + explicit inline Matrix3( const Quat & unitQuat ); + + // Set all elements of a 3x3 matrix to the same scalar value + // + explicit inline Matrix3( float scalar ); + + // Assign one 3x3 matrix to another + // + inline Matrix3 & operator =( const Matrix3 & mat ); + + // Set column 0 of a 3x3 matrix + // + inline Matrix3 & setCol0( const Vector3 & col0 ); + + // Set column 1 of a 3x3 matrix + // + inline Matrix3 & setCol1( const Vector3 & col1 ); + + // Set column 2 of a 3x3 matrix + // + inline Matrix3 & setCol2( const Vector3 & col2 ); + + // Get column 0 of a 3x3 matrix + // + inline const Vector3 getCol0( ) const; + + // Get column 1 of a 3x3 matrix + // + inline const Vector3 getCol1( ) const; + + // Get column 2 of a 3x3 matrix + // + inline const Vector3 getCol2( ) const; + + // Set the column of a 3x3 matrix referred to by the specified index + // + inline Matrix3 & setCol( int col, const Vector3 & vec ); + + // Set the row of a 3x3 matrix referred to by the specified index + // + inline Matrix3 & setRow( int row, const Vector3 & vec ); + + // Get the column of a 3x3 matrix referred to by the specified index + // + inline const Vector3 getCol( int col ) const; + + // Get the row of a 3x3 matrix referred to by the specified index + // + inline const Vector3 getRow( int row ) const; + + // Subscripting operator to set or get a column + // + inline Vector3 & operator []( int col ); + + // Subscripting operator to get a column + // + inline const Vector3 operator []( int col ) const; + + // Set the element of a 3x3 matrix referred to by column and row indices + // + inline Matrix3 & setElem( int col, int row, float val ); + + // Get the element of a 3x3 matrix referred to by column and row indices + // + inline float getElem( int col, int row ) const; + + // Add two 3x3 matrices + // + inline const Matrix3 operator +( const Matrix3 & mat ) const; + + // Subtract a 3x3 matrix from another 3x3 matrix + // + inline const Matrix3 operator -( const Matrix3 & mat ) const; + + // Negate all elements of a 3x3 matrix + // + inline const Matrix3 operator -( ) const; + + // Multiply a 3x3 matrix by a scalar + // + inline const Matrix3 operator *( float scalar ) const; + + // Multiply a 3x3 matrix by a 3-D vector + // + inline const Vector3 operator *( const Vector3 & vec ) const; + + // Multiply two 3x3 matrices + // + inline const Matrix3 operator *( const Matrix3 & mat ) const; + + // Perform compound assignment and addition with a 3x3 matrix + // + inline Matrix3 & operator +=( const Matrix3 & mat ); + + // Perform compound assignment and subtraction by a 3x3 matrix + // + inline Matrix3 & operator -=( const Matrix3 & mat ); + + // Perform compound assignment and multiplication by a scalar + // + inline Matrix3 & operator *=( float scalar ); + + // Perform compound assignment and multiplication by a 3x3 matrix + // + inline Matrix3 & operator *=( const Matrix3 & mat ); + + // Construct an identity 3x3 matrix + // + static inline const Matrix3 identity( ); + + // Construct a 3x3 matrix to rotate around the x axis + // + static inline const Matrix3 rotationX( float radians ); + + // Construct a 3x3 matrix to rotate around the y axis + // + static inline const Matrix3 rotationY( float radians ); + + // Construct a 3x3 matrix to rotate around the z axis + // + static inline const Matrix3 rotationZ( float radians ); + + // Construct a 3x3 matrix to rotate around the x, y, and z axes + // + static inline const Matrix3 rotationZYX( const Vector3 & radiansXYZ ); + + // Construct a 3x3 matrix to rotate around a unit-length 3-D vector + // + static inline const Matrix3 rotation( float radians, const Vector3 & unitVec ); + + // Construct a rotation matrix from a unit-length quaternion + // + static inline const Matrix3 rotation( const Quat & unitQuat ); + + // Construct a 3x3 matrix to perform scaling + // + static inline const Matrix3 scale( const Vector3 & scaleVec ); + +}; +// Multiply a 3x3 matrix by a scalar +// +inline const Matrix3 operator *( float scalar, const Matrix3 & mat ); + +// Append (post-multiply) a scale transformation to a 3x3 matrix +// NOTE: +// Faster than creating and multiplying a scale transformation matrix. +// +inline const Matrix3 appendScale( const Matrix3 & mat, const Vector3 & scaleVec ); + +// Prepend (pre-multiply) a scale transformation to a 3x3 matrix +// NOTE: +// Faster than creating and multiplying a scale transformation matrix. +// +inline const Matrix3 prependScale( const Vector3 & scaleVec, const Matrix3 & mat ); + +// Multiply two 3x3 matrices per element +// +inline const Matrix3 mulPerElem( const Matrix3 & mat0, const Matrix3 & mat1 ); + +// Compute the absolute value of a 3x3 matrix per element +// +inline const Matrix3 absPerElem( const Matrix3 & mat ); + +// Transpose of a 3x3 matrix +// +inline const Matrix3 transpose( const Matrix3 & mat ); + +// Compute the inverse of a 3x3 matrix +// NOTE: +// Result is unpredictable when the determinant of mat is equal to or near 0. +// +inline const Matrix3 inverse( const Matrix3 & mat ); + +// Determinant of a 3x3 matrix +// +inline float determinant( const Matrix3 & mat ); + +// Conditionally select between two 3x3 matrices +// +inline const Matrix3 select( const Matrix3 & mat0, const Matrix3 & mat1, bool select1 ); + +#ifdef _VECTORMATH_DEBUG + +// Print a 3x3 matrix +// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined. +// +inline void print( const Matrix3 & mat ); + +// Print a 3x3 matrix and an associated string identifier +// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined. +// +inline void print( const Matrix3 & mat, const char * name ); + +#endif + +// A 4x4 matrix in array-of-structures format +// +class Matrix4 +{ + Vector4 mCol0; + Vector4 mCol1; + Vector4 mCol2; + Vector4 mCol3; + +public: + // Default constructor; does no initialization + // + inline Matrix4( ) { }; + + // Copy a 4x4 matrix + // + inline Matrix4( const Matrix4 & mat ); + + // Construct a 4x4 matrix containing the specified columns + // + inline Matrix4( const Vector4 & col0, const Vector4 & col1, const Vector4 & col2, const Vector4 & col3 ); + + // Construct a 4x4 matrix from a 3x4 transformation matrix + // + explicit inline Matrix4( const Transform3 & mat ); + + // Construct a 4x4 matrix from a 3x3 matrix and a 3-D vector + // + inline Matrix4( const Matrix3 & mat, const Vector3 & translateVec ); + + // Construct a 4x4 matrix from a unit-length quaternion and a 3-D vector + // + inline Matrix4( const Quat & unitQuat, const Vector3 & translateVec ); + + // Set all elements of a 4x4 matrix to the same scalar value + // + explicit inline Matrix4( float scalar ); + + // Assign one 4x4 matrix to another + // + inline Matrix4 & operator =( const Matrix4 & mat ); + + // Set the upper-left 3x3 submatrix + // NOTE: + // This function does not change the bottom row elements. + // + inline Matrix4 & setUpper3x3( const Matrix3 & mat3 ); + + // Get the upper-left 3x3 submatrix of a 4x4 matrix + // + inline const Matrix3 getUpper3x3( ) const; + + // Set translation component + // NOTE: + // This function does not change the bottom row elements. + // + inline Matrix4 & setTranslation( const Vector3 & translateVec ); + + // Get the translation component of a 4x4 matrix + // + inline const Vector3 getTranslation( ) const; + + // Set column 0 of a 4x4 matrix + // + inline Matrix4 & setCol0( const Vector4 & col0 ); + + // Set column 1 of a 4x4 matrix + // + inline Matrix4 & setCol1( const Vector4 & col1 ); + + // Set column 2 of a 4x4 matrix + // + inline Matrix4 & setCol2( const Vector4 & col2 ); + + // Set column 3 of a 4x4 matrix + // + inline Matrix4 & setCol3( const Vector4 & col3 ); + + // Get column 0 of a 4x4 matrix + // + inline const Vector4 getCol0( ) const; + + // Get column 1 of a 4x4 matrix + // + inline const Vector4 getCol1( ) const; + + // Get column 2 of a 4x4 matrix + // + inline const Vector4 getCol2( ) const; + + // Get column 3 of a 4x4 matrix + // + inline const Vector4 getCol3( ) const; + + // Set the column of a 4x4 matrix referred to by the specified index + // + inline Matrix4 & setCol( int col, const Vector4 & vec ); + + // Set the row of a 4x4 matrix referred to by the specified index + // + inline Matrix4 & setRow( int row, const Vector4 & vec ); + + // Get the column of a 4x4 matrix referred to by the specified index + // + inline const Vector4 getCol( int col ) const; + + // Get the row of a 4x4 matrix referred to by the specified index + // + inline const Vector4 getRow( int row ) const; + + // Subscripting operator to set or get a column + // + inline Vector4 & operator []( int col ); + + // Subscripting operator to get a column + // + inline const Vector4 operator []( int col ) const; + + // Set the element of a 4x4 matrix referred to by column and row indices + // + inline Matrix4 & setElem( int col, int row, float val ); + + // Get the element of a 4x4 matrix referred to by column and row indices + // + inline float getElem( int col, int row ) const; + + // Add two 4x4 matrices + // + inline const Matrix4 operator +( const Matrix4 & mat ) const; + + // Subtract a 4x4 matrix from another 4x4 matrix + // + inline const Matrix4 operator -( const Matrix4 & mat ) const; + + // Negate all elements of a 4x4 matrix + // + inline const Matrix4 operator -( ) const; + + // Multiply a 4x4 matrix by a scalar + // + inline const Matrix4 operator *( float scalar ) const; + + // Multiply a 4x4 matrix by a 4-D vector + // + inline const Vector4 operator *( const Vector4 & vec ) const; + + // Multiply a 4x4 matrix by a 3-D vector + // + inline const Vector4 operator *( const Vector3 & vec ) const; + + // Multiply a 4x4 matrix by a 3-D point + // + inline const Vector4 operator *( const Point3 & pnt ) const; + + // Multiply two 4x4 matrices + // + inline const Matrix4 operator *( const Matrix4 & mat ) const; + + // Multiply a 4x4 matrix by a 3x4 transformation matrix + // + inline const Matrix4 operator *( const Transform3 & tfrm ) const; + + // Perform compound assignment and addition with a 4x4 matrix + // + inline Matrix4 & operator +=( const Matrix4 & mat ); + + // Perform compound assignment and subtraction by a 4x4 matrix + // + inline Matrix4 & operator -=( const Matrix4 & mat ); + + // Perform compound assignment and multiplication by a scalar + // + inline Matrix4 & operator *=( float scalar ); + + // Perform compound assignment and multiplication by a 4x4 matrix + // + inline Matrix4 & operator *=( const Matrix4 & mat ); + + // Perform compound assignment and multiplication by a 3x4 transformation matrix + // + inline Matrix4 & operator *=( const Transform3 & tfrm ); + + // Construct an identity 4x4 matrix + // + static inline const Matrix4 identity( ); + + // Construct a 4x4 matrix to rotate around the x axis + // + static inline const Matrix4 rotationX( float radians ); + + // Construct a 4x4 matrix to rotate around the y axis + // + static inline const Matrix4 rotationY( float radians ); + + // Construct a 4x4 matrix to rotate around the z axis + // + static inline const Matrix4 rotationZ( float radians ); + + // Construct a 4x4 matrix to rotate around the x, y, and z axes + // + static inline const Matrix4 rotationZYX( const Vector3 & radiansXYZ ); + + // Construct a 4x4 matrix to rotate around a unit-length 3-D vector + // + static inline const Matrix4 rotation( float radians, const Vector3 & unitVec ); + + // Construct a rotation matrix from a unit-length quaternion + // + static inline const Matrix4 rotation( const Quat & unitQuat ); + + // Construct a 4x4 matrix to perform scaling + // + static inline const Matrix4 scale( const Vector3 & scaleVec ); + + // Construct a 4x4 matrix to perform translation + // + static inline const Matrix4 translation( const Vector3 & translateVec ); + + // Construct viewing matrix based on eye position, position looked at, and up direction + // + static inline const Matrix4 lookAt( const Point3 & eyePos, const Point3 & lookAtPos, const Vector3 & upVec ); + + // Construct a perspective projection matrix + // + static inline const Matrix4 perspective( float fovyRadians, float aspect, float zNear, float zFar ); + + // Construct a perspective projection matrix based on frustum + // + static inline const Matrix4 frustum( float left, float right, float bottom, float top, float zNear, float zFar ); + + // Construct an orthographic projection matrix + // + static inline const Matrix4 orthographic( float left, float right, float bottom, float top, float zNear, float zFar ); + +}; +// Multiply a 4x4 matrix by a scalar +// +inline const Matrix4 operator *( float scalar, const Matrix4 & mat ); + +// Append (post-multiply) a scale transformation to a 4x4 matrix +// NOTE: +// Faster than creating and multiplying a scale transformation matrix. +// +inline const Matrix4 appendScale( const Matrix4 & mat, const Vector3 & scaleVec ); + +// Prepend (pre-multiply) a scale transformation to a 4x4 matrix +// NOTE: +// Faster than creating and multiplying a scale transformation matrix. +// +inline const Matrix4 prependScale( const Vector3 & scaleVec, const Matrix4 & mat ); + +// Multiply two 4x4 matrices per element +// +inline const Matrix4 mulPerElem( const Matrix4 & mat0, const Matrix4 & mat1 ); + +// Compute the absolute value of a 4x4 matrix per element +// +inline const Matrix4 absPerElem( const Matrix4 & mat ); + +// Transpose of a 4x4 matrix +// +inline const Matrix4 transpose( const Matrix4 & mat ); + +// Compute the inverse of a 4x4 matrix +// NOTE: +// Result is unpredictable when the determinant of mat is equal to or near 0. +// +inline const Matrix4 inverse( const Matrix4 & mat ); + +// Compute the inverse of a 4x4 matrix, which is expected to be an affine matrix +// NOTE: +// This can be used to achieve better performance than a general inverse when the specified 4x4 matrix meets the given restrictions. The result is unpredictable when the determinant of mat is equal to or near 0. +// +inline const Matrix4 affineInverse( const Matrix4 & mat ); + +// Compute the inverse of a 4x4 matrix, which is expected to be an affine matrix with an orthogonal upper-left 3x3 submatrix +// NOTE: +// This can be used to achieve better performance than a general inverse when the specified 4x4 matrix meets the given restrictions. +// +inline const Matrix4 orthoInverse( const Matrix4 & mat ); + +// Determinant of a 4x4 matrix +// +inline float determinant( const Matrix4 & mat ); + +// Conditionally select between two 4x4 matrices +// +inline const Matrix4 select( const Matrix4 & mat0, const Matrix4 & mat1, bool select1 ); + +#ifdef _VECTORMATH_DEBUG + +// Print a 4x4 matrix +// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined. +// +inline void print( const Matrix4 & mat ); + +// Print a 4x4 matrix and an associated string identifier +// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined. +// +inline void print( const Matrix4 & mat, const char * name ); + +#endif + +// A 3x4 transformation matrix in array-of-structures format +// +class Transform3 +{ + Vector3 mCol0; + Vector3 mCol1; + Vector3 mCol2; + Vector3 mCol3; + +public: + // Default constructor; does no initialization + // + inline Transform3( ) { }; + + // Copy a 3x4 transformation matrix + // + inline Transform3( const Transform3 & tfrm ); + + // Construct a 3x4 transformation matrix containing the specified columns + // + inline Transform3( const Vector3 & col0, const Vector3 & col1, const Vector3 & col2, const Vector3 & col3 ); + + // Construct a 3x4 transformation matrix from a 3x3 matrix and a 3-D vector + // + inline Transform3( const Matrix3 & tfrm, const Vector3 & translateVec ); + + // Construct a 3x4 transformation matrix from a unit-length quaternion and a 3-D vector + // + inline Transform3( const Quat & unitQuat, const Vector3 & translateVec ); + + // Set all elements of a 3x4 transformation matrix to the same scalar value + // + explicit inline Transform3( float scalar ); + + // Assign one 3x4 transformation matrix to another + // + inline Transform3 & operator =( const Transform3 & tfrm ); + + // Set the upper-left 3x3 submatrix + // + inline Transform3 & setUpper3x3( const Matrix3 & mat3 ); + + // Get the upper-left 3x3 submatrix of a 3x4 transformation matrix + // + inline const Matrix3 getUpper3x3( ) const; + + // Set translation component + // + inline Transform3 & setTranslation( const Vector3 & translateVec ); + + // Get the translation component of a 3x4 transformation matrix + // + inline const Vector3 getTranslation( ) const; + + // Set column 0 of a 3x4 transformation matrix + // + inline Transform3 & setCol0( const Vector3 & col0 ); + + // Set column 1 of a 3x4 transformation matrix + // + inline Transform3 & setCol1( const Vector3 & col1 ); + + // Set column 2 of a 3x4 transformation matrix + // + inline Transform3 & setCol2( const Vector3 & col2 ); + + // Set column 3 of a 3x4 transformation matrix + // + inline Transform3 & setCol3( const Vector3 & col3 ); + + // Get column 0 of a 3x4 transformation matrix + // + inline const Vector3 getCol0( ) const; + + // Get column 1 of a 3x4 transformation matrix + // + inline const Vector3 getCol1( ) const; + + // Get column 2 of a 3x4 transformation matrix + // + inline const Vector3 getCol2( ) const; + + // Get column 3 of a 3x4 transformation matrix + // + inline const Vector3 getCol3( ) const; + + // Set the column of a 3x4 transformation matrix referred to by the specified index + // + inline Transform3 & setCol( int col, const Vector3 & vec ); + + // Set the row of a 3x4 transformation matrix referred to by the specified index + // + inline Transform3 & setRow( int row, const Vector4 & vec ); + + // Get the column of a 3x4 transformation matrix referred to by the specified index + // + inline const Vector3 getCol( int col ) const; + + // Get the row of a 3x4 transformation matrix referred to by the specified index + // + inline const Vector4 getRow( int row ) const; + + // Subscripting operator to set or get a column + // + inline Vector3 & operator []( int col ); + + // Subscripting operator to get a column + // + inline const Vector3 operator []( int col ) const; + + // Set the element of a 3x4 transformation matrix referred to by column and row indices + // + inline Transform3 & setElem( int col, int row, float val ); + + // Get the element of a 3x4 transformation matrix referred to by column and row indices + // + inline float getElem( int col, int row ) const; + + // Multiply a 3x4 transformation matrix by a 3-D vector + // + inline const Vector3 operator *( const Vector3 & vec ) const; + + // Multiply a 3x4 transformation matrix by a 3-D point + // + inline const Point3 operator *( const Point3 & pnt ) const; + + // Multiply two 3x4 transformation matrices + // + inline const Transform3 operator *( const Transform3 & tfrm ) const; + + // Perform compound assignment and multiplication by a 3x4 transformation matrix + // + inline Transform3 & operator *=( const Transform3 & tfrm ); + + // Construct an identity 3x4 transformation matrix + // + static inline const Transform3 identity( ); + + // Construct a 3x4 transformation matrix to rotate around the x axis + // + static inline const Transform3 rotationX( float radians ); + + // Construct a 3x4 transformation matrix to rotate around the y axis + // + static inline const Transform3 rotationY( float radians ); + + // Construct a 3x4 transformation matrix to rotate around the z axis + // + static inline const Transform3 rotationZ( float radians ); + + // Construct a 3x4 transformation matrix to rotate around the x, y, and z axes + // + static inline const Transform3 rotationZYX( const Vector3 & radiansXYZ ); + + // Construct a 3x4 transformation matrix to rotate around a unit-length 3-D vector + // + static inline const Transform3 rotation( float radians, const Vector3 & unitVec ); + + // Construct a rotation matrix from a unit-length quaternion + // + static inline const Transform3 rotation( const Quat & unitQuat ); + + // Construct a 3x4 transformation matrix to perform scaling + // + static inline const Transform3 scale( const Vector3 & scaleVec ); + + // Construct a 3x4 transformation matrix to perform translation + // + static inline const Transform3 translation( const Vector3 & translateVec ); + +}; +// Append (post-multiply) a scale transformation to a 3x4 transformation matrix +// NOTE: +// Faster than creating and multiplying a scale transformation matrix. +// +inline const Transform3 appendScale( const Transform3 & tfrm, const Vector3 & scaleVec ); + +// Prepend (pre-multiply) a scale transformation to a 3x4 transformation matrix +// NOTE: +// Faster than creating and multiplying a scale transformation matrix. +// +inline const Transform3 prependScale( const Vector3 & scaleVec, const Transform3 & tfrm ); + +// Multiply two 3x4 transformation matrices per element +// +inline const Transform3 mulPerElem( const Transform3 & tfrm0, const Transform3 & tfrm1 ); + +// Compute the absolute value of a 3x4 transformation matrix per element +// +inline const Transform3 absPerElem( const Transform3 & tfrm ); + +// Inverse of a 3x4 transformation matrix +// NOTE: +// Result is unpredictable when the determinant of the left 3x3 submatrix is equal to or near 0. +// +inline const Transform3 inverse( const Transform3 & tfrm ); + +// Compute the inverse of a 3x4 transformation matrix, expected to have an orthogonal upper-left 3x3 submatrix +// NOTE: +// This can be used to achieve better performance than a general inverse when the specified 3x4 transformation matrix meets the given restrictions. +// +inline const Transform3 orthoInverse( const Transform3 & tfrm ); + +// Conditionally select between two 3x4 transformation matrices +// +inline const Transform3 select( const Transform3 & tfrm0, const Transform3 & tfrm1, bool select1 ); + +#ifdef _VECTORMATH_DEBUG + +// Print a 3x4 transformation matrix +// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined. +// +inline void print( const Transform3 & tfrm ); + +// Print a 3x4 transformation matrix and an associated string identifier +// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined. +// +inline void print( const Transform3 & tfrm, const char * name ); + +#endif + +} // namespace Aos +} // namespace Vectormath + +#include "vec_aos.h" +#include "quat_aos.h" +#include "mat_aos.h" + +#endif diff --git a/extern/bullet2/BulletMultiThreaded/vectormath2bullet.h b/extern/bullet2/BulletMultiThreaded/vectormath2bullet.h new file mode 100644 index 00000000000..5a4944a5500 --- /dev/null +++ b/extern/bullet2/BulletMultiThreaded/vectormath2bullet.h @@ -0,0 +1,80 @@ +/* + Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. + All rights reserved. + + Redistribution and use in source and binary forms, + with or without modification, are permitted provided that the + following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Sony Computer Entertainment Inc nor the names + of its contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef AOS_VECTORMATH_BULLET_CONVERT_H +#define AOS_VECTORMATH_BULLET_CONVERT_H + + +///only use a system-wide vectormath_aos.h on CELLOS_LV2 or if USE_SYSTEM_VECTORMATH +#if defined(__CELLOS_LV2__) || defined (USE_SYSTEM_VECTORMATH) +#include +#else +#include "BulletMultiThreaded/vectormath/scalar/cpp/vectormath_aos.h" +#endif + +#include "LinearMath/btVector3.h" +#include "LinearMath/btQuaternion.h" +#include "LinearMath/btMatrix3x3.h" + +inline Vectormath::Aos::Vector3 getVmVector3(const btVector3& bulletVec) +{ + return Vectormath::Aos::Vector3(bulletVec.getX(),bulletVec.getY(),bulletVec.getZ()); +} + +inline btVector3 getBtVector3(const Vectormath::Aos::Vector3& vmVec) +{ + return btVector3(vmVec.getX(),vmVec.getY(),vmVec.getZ()); +} +inline btVector3 getBtVector3(const Vectormath::Aos::Point3& vmVec) +{ + return btVector3(vmVec.getX(),vmVec.getY(),vmVec.getZ()); +} + +inline Vectormath::Aos::Quat getVmQuat(const btQuaternion& bulletQuat) +{ + Vectormath::Aos::Quat vmQuat(bulletQuat.getX(),bulletQuat.getY(),bulletQuat.getZ(),bulletQuat.getW()); + return vmQuat; +} + +inline btQuaternion getBtQuat(const Vectormath::Aos::Quat& vmQuat) +{ + return btQuaternion (vmQuat.getX(),vmQuat.getY(),vmQuat.getZ(),vmQuat.getW()); +} + +inline Vectormath::Aos::Matrix3 getVmMatrix3(const btMatrix3x3& btMat) +{ + Vectormath::Aos::Matrix3 mat( + getVmVector3(btMat.getColumn(0)), + getVmVector3(btMat.getColumn(1)), + getVmVector3(btMat.getColumn(2))); + return mat; +} + + +#endif //AOS_VECTORMATH_BULLET_CONVERT_H diff --git a/extern/bullet2/BulletSoftBody/CMakeLists.txt b/extern/bullet2/BulletSoftBody/CMakeLists.txt new file mode 100644 index 00000000000..6074dbaceeb --- /dev/null +++ b/extern/bullet2/BulletSoftBody/CMakeLists.txt @@ -0,0 +1,52 @@ + +INCLUDE_DIRECTORIES( +${BULLET_PHYSICS_SOURCE_DIR}/src +) + +SET(BulletSoftBody_SRCS + btSoftBody.cpp + btSoftBodyConcaveCollisionAlgorithm.cpp + btSoftBodyHelpers.cpp + btSoftBodyRigidBodyCollisionConfiguration.cpp + btSoftRigidCollisionAlgorithm.cpp + btSoftRigidDynamicsWorld.cpp + btSoftSoftCollisionAlgorithm.cpp +) + +SET(BulletSoftBody_HDRS + btSoftBody.h + btSoftBodyConcaveCollisionAlgorithm.h + btSoftBodyHelpers.h + btSoftBodyRigidBodyCollisionConfiguration.h + btSoftRigidCollisionAlgorithm.h + btSoftRigidDynamicsWorld.h + btSoftSoftCollisionAlgorithm.h + btSparseSDF.h +) + + + +ADD_LIBRARY(BulletSoftBody ${BulletSoftBody_SRCS} ${BulletSoftBody_HDRS}) +SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES VERSION ${BULLET_VERSION}) +SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES SOVERSION ${BULLET_VERSION}) +IF (BUILD_SHARED_LIBS) + TARGET_LINK_LIBRARIES(BulletSoftBody BulletDynamics) +ENDIF (BUILD_SHARED_LIBS) + +IF (INSTALL_LIBS) + IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) + IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) + IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + INSTALL(TARGETS BulletSoftBody DESTINATION .) + ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + INSTALL(TARGETS BulletSoftBody DESTINATION lib${LIB_SUFFIX}) + INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h") + ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) + + IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES FRAMEWORK true) + SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES PUBLIC_HEADER ${BulletSoftBody_HDRS}) + ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) +ENDIF (INSTALL_LIBS) \ No newline at end of file diff --git a/extern/bullet2/BulletSoftBody/btSoftBody.cpp b/extern/bullet2/BulletSoftBody/btSoftBody.cpp new file mode 100644 index 00000000000..f6b98ddf46d --- /dev/null +++ b/extern/bullet2/BulletSoftBody/btSoftBody.cpp @@ -0,0 +1,2931 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ +///btSoftBody implementation by Nathanael Presson + +#include "btSoftBodyInternals.h" + +// +btSoftBody::btSoftBody(btSoftBodyWorldInfo* worldInfo,int node_count, const btVector3* x, const btScalar* m) +:m_worldInfo(worldInfo) +{ + /* Init */ + m_internalType = CO_SOFT_BODY; + m_cfg.aeromodel = eAeroModel::V_Point; + m_cfg.kVCF = 1; + m_cfg.kDG = 0; + m_cfg.kLF = 0; + m_cfg.kDP = 0; + m_cfg.kPR = 0; + m_cfg.kVC = 0; + m_cfg.kDF = (btScalar)0.2; + m_cfg.kMT = 0; + m_cfg.kCHR = (btScalar)1.0; + m_cfg.kKHR = (btScalar)0.1; + m_cfg.kSHR = (btScalar)1.0; + m_cfg.kAHR = (btScalar)0.7; + m_cfg.kSRHR_CL = (btScalar)0.1; + m_cfg.kSKHR_CL = (btScalar)1; + m_cfg.kSSHR_CL = (btScalar)0.5; + m_cfg.kSR_SPLT_CL = (btScalar)0.5; + m_cfg.kSK_SPLT_CL = (btScalar)0.5; + m_cfg.kSS_SPLT_CL = (btScalar)0.5; + m_cfg.maxvolume = (btScalar)1; + m_cfg.timescale = 1; + m_cfg.viterations = 0; + m_cfg.piterations = 1; + m_cfg.diterations = 0; + m_cfg.citerations = 4; + m_cfg.collisions = fCollision::Default; + m_pose.m_bvolume = false; + m_pose.m_bframe = false; + m_pose.m_volume = 0; + m_pose.m_com = btVector3(0,0,0); + m_pose.m_rot.setIdentity(); + m_pose.m_scl.setIdentity(); + m_tag = 0; + m_timeacc = 0; + m_bUpdateRtCst = true; + m_bounds[0] = btVector3(0,0,0); + m_bounds[1] = btVector3(0,0,0); + m_worldTransform.setIdentity(); + setSolver(eSolverPresets::Positions); + /* Default material */ + Material* pm=appendMaterial(); + pm->m_kLST = 1; + pm->m_kAST = 1; + pm->m_kVST = 1; + pm->m_flags = fMaterial::Default; + /* Collision shape */ + ///for now, create a collision shape internally + m_collisionShape = new btSoftBodyCollisionShape(this); + m_collisionShape->setMargin(0.25); + /* Nodes */ + const btScalar margin=getCollisionShape()->getMargin(); + m_nodes.resize(node_count); + for(int i=0,ni=node_count;i0?1/n.m_im:0; + n.m_leaf = m_ndbvt.insert(btDbvtVolume::FromCR(n.m_x,margin),&n); + n.m_material= pm; + } + updateBounds(); + + m_initialWorldTransform.setIdentity(); +} + +// +btSoftBody::~btSoftBody() +{ + //for now, delete the internal shape + delete m_collisionShape; + int i; + + releaseClusters(); + for(i=0;i0) + *pm=*m_materials[0]; + else + ZeroInitialize(*pm); + m_materials.push_back(pm); + return(pm); +} + +// +void btSoftBody::appendNote( const char* text, + const btVector3& o, + const btVector4& c, + Node* n0, + Node* n1, + Node* n2, + Node* n3) +{ + Note n; + ZeroInitialize(n); + n.m_rank = 0; + n.m_text = text; + n.m_offset = o; + n.m_coords[0] = c.x(); + n.m_coords[1] = c.y(); + n.m_coords[2] = c.z(); + n.m_coords[3] = c.w(); + n.m_nodes[0] = n0;n.m_rank+=n0?1:0; + n.m_nodes[1] = n1;n.m_rank+=n1?1:0; + n.m_nodes[2] = n2;n.m_rank+=n2?1:0; + n.m_nodes[3] = n3;n.m_rank+=n3?1:0; + m_notes.push_back(n); +} + +// +void btSoftBody::appendNote( const char* text, + const btVector3& o, + Node* feature) +{ + appendNote(text,o,btVector4(1,0,0,0),feature); +} + +// +void btSoftBody::appendNote( const char* text, + const btVector3& o, + Link* feature) +{ + static const btScalar w=1/(btScalar)2; + appendNote(text,o,btVector4(w,w,0,0), feature->m_n[0], + feature->m_n[1]); +} + +// +void btSoftBody::appendNote( const char* text, + const btVector3& o, + Face* feature) +{ + static const btScalar w=1/(btScalar)3; + appendNote(text,o,btVector4(w,w,w,0), feature->m_n[0], + feature->m_n[1], + feature->m_n[2]); +} + +// +void btSoftBody::appendNode( const btVector3& x,btScalar m) +{ + if(m_nodes.capacity()==m_nodes.size()) + { + pointersToIndices(); + m_nodes.reserve(m_nodes.size()*2+1); + indicesToPointers(); + } + const btScalar margin=getCollisionShape()->getMargin(); + m_nodes.push_back(Node()); + Node& n=m_nodes[m_nodes.size()-1]; + ZeroInitialize(n); + n.m_x = x; + n.m_q = n.m_x; + n.m_im = m>0?1/m:0; + n.m_material = m_materials[0]; + n.m_leaf = m_ndbvt.insert(btDbvtVolume::FromCR(n.m_x,margin),&n); +} + +// +void btSoftBody::appendLink(int model,Material* mat) +{ + Link l; + if(model>=0) + l=m_links[model]; + else + { ZeroInitialize(l);l.m_material=mat?mat:m_materials[0]; } + m_links.push_back(l); +} + +// +void btSoftBody::appendLink( int node0, + int node1, + Material* mat, + bool bcheckexist) +{ + appendLink(&m_nodes[node0],&m_nodes[node1],mat,bcheckexist); +} + +// +void btSoftBody::appendLink( Node* node0, + Node* node1, + Material* mat, + bool bcheckexist) +{ + if((!bcheckexist)||(!checkLink(node0,node1))) + { + appendLink(-1,mat); + Link& l=m_links[m_links.size()-1]; + l.m_n[0] = node0; + l.m_n[1] = node1; + l.m_rl = (l.m_n[0]->m_x-l.m_n[1]->m_x).length(); + m_bUpdateRtCst=true; + } +} + +// +void btSoftBody::appendFace(int model,Material* mat) +{ + Face f; + if(model>=0) + { f=m_faces[model]; } + else + { ZeroInitialize(f);f.m_material=mat?mat:m_materials[0]; } + m_faces.push_back(f); +} + +// +void btSoftBody::appendFace(int node0,int node1,int node2,Material* mat) +{ + if (node0==node1) + return; + if (node1==node2) + return; + if (node2==node0) + return; + + appendFace(-1,mat); + Face& f=m_faces[m_faces.size()-1]; + btAssert(node0!=node1); + btAssert(node1!=node2); + btAssert(node2!=node0); + f.m_n[0] = &m_nodes[node0]; + f.m_n[1] = &m_nodes[node1]; + f.m_n[2] = &m_nodes[node2]; + f.m_ra = AreaOf( f.m_n[0]->m_x, + f.m_n[1]->m_x, + f.m_n[2]->m_x); + m_bUpdateRtCst=true; +} + +// +void btSoftBody::appendTetra(int model,Material* mat) +{ +Tetra t; +if(model>=0) + t=m_tetras[model]; + else + { ZeroInitialize(t);t.m_material=mat?mat:m_materials[0]; } +m_tetras.push_back(t); +} + +// +void btSoftBody::appendTetra(int node0, + int node1, + int node2, + int node3, + Material* mat) +{ + appendTetra(-1,mat); + Tetra& t=m_tetras[m_tetras.size()-1]; + t.m_n[0] = &m_nodes[node0]; + t.m_n[1] = &m_nodes[node1]; + t.m_n[2] = &m_nodes[node2]; + t.m_n[3] = &m_nodes[node3]; + t.m_rv = VolumeOf(t.m_n[0]->m_x,t.m_n[1]->m_x,t.m_n[2]->m_x,t.m_n[3]->m_x); + m_bUpdateRtCst=true; +} + +// +void btSoftBody::appendAnchor(int node,btRigidBody* body, bool disableCollisionBetweenLinkedBodies) +{ + if (disableCollisionBetweenLinkedBodies) + { + if (m_collisionDisabledObjects.findLinearSearch(body)==m_collisionDisabledObjects.size()) + { + m_collisionDisabledObjects.push_back(body); + } + } + + Anchor a; + a.m_node = &m_nodes[node]; + a.m_body = body; + a.m_local = body->getInterpolationWorldTransform().inverse()*a.m_node->m_x; + a.m_node->m_battach = 1; + m_anchors.push_back(a); +} + +// +void btSoftBody::appendLinearJoint(const LJoint::Specs& specs,Cluster* body0,Body body1) +{ + LJoint* pj = new(btAlignedAlloc(sizeof(LJoint),16)) LJoint(); + pj->m_bodies[0] = body0; + pj->m_bodies[1] = body1; + pj->m_refs[0] = pj->m_bodies[0].xform().inverse()*specs.position; + pj->m_refs[1] = pj->m_bodies[1].xform().inverse()*specs.position; + pj->m_cfm = specs.cfm; + pj->m_erp = specs.erp; + pj->m_split = specs.split; + m_joints.push_back(pj); +} + +// +void btSoftBody::appendLinearJoint(const LJoint::Specs& specs,Body body) +{ + appendLinearJoint(specs,m_clusters[0],body); +} + +// +void btSoftBody::appendLinearJoint(const LJoint::Specs& specs,btSoftBody* body) +{ + appendLinearJoint(specs,m_clusters[0],body->m_clusters[0]); +} + +// +void btSoftBody::appendAngularJoint(const AJoint::Specs& specs,Cluster* body0,Body body1) +{ + AJoint* pj = new(btAlignedAlloc(sizeof(AJoint),16)) AJoint(); + pj->m_bodies[0] = body0; + pj->m_bodies[1] = body1; + pj->m_refs[0] = pj->m_bodies[0].xform().inverse().getBasis()*specs.axis; + pj->m_refs[1] = pj->m_bodies[1].xform().inverse().getBasis()*specs.axis; + pj->m_cfm = specs.cfm; + pj->m_erp = specs.erp; + pj->m_split = specs.split; + pj->m_icontrol = specs.icontrol; + m_joints.push_back(pj); +} + +// +void btSoftBody::appendAngularJoint(const AJoint::Specs& specs,Body body) +{ + appendAngularJoint(specs,m_clusters[0],body); +} + +// +void btSoftBody::appendAngularJoint(const AJoint::Specs& specs,btSoftBody* body) +{ + appendAngularJoint(specs,m_clusters[0],body->m_clusters[0]); +} + +// +void btSoftBody::addForce(const btVector3& force) +{ + for(int i=0,ni=m_nodes.size();i0) + { + n.m_f += force; + } +} + +// +void btSoftBody::addVelocity(const btVector3& velocity) +{ + for(int i=0,ni=m_nodes.size();i0) + { + n.m_v = velocity; + } + } +} + + +// +void btSoftBody::addVelocity(const btVector3& velocity,int node) +{ + Node& n=m_nodes[node]; + if(n.m_im>0) + { + n.m_v += velocity; + } +} + +// +void btSoftBody::setMass(int node,btScalar mass) +{ + m_nodes[node].m_im=mass>0?1/mass:0; + m_bUpdateRtCst=true; +} + +// +btScalar btSoftBody::getMass(int node) const +{ + return(m_nodes[node].m_im>0?1/m_nodes[node].m_im:0); +} + +// +btScalar btSoftBody::getTotalMass() const +{ + btScalar mass=0; + for(int i=0;im_x, + f.m_n[1]->m_x, + f.m_n[2]->m_x); + for(int j=0;j<3;++j) + { + f.m_n[j]->m_im+=twicearea; + } + } + for( i=0;i ranks; +ranks.resize(m_nodes.size(),0); +int i; + +for(i=0;im_im+=btFabs(t.m_rv); + ranks[int(t.m_n[j]-&m_nodes[0])]+=1; + } + } +for( i=0;i0) + { + m_nodes[i].m_im=ranks[i]/m_nodes[i].m_im; + } + } +setTotalMass(mass,false); +} + +// +void btSoftBody::setVolumeDensity(btScalar density) +{ +btScalar volume=0; +for(int i=0;igetMargin(); + ATTRIBUTE_ALIGNED16(btDbvtVolume) vol; + + for(int i=0,ni=m_nodes.size();igetMargin(); + ATTRIBUTE_ALIGNED16(btDbvtVolume) vol; + + for(int i=0,ni=m_nodes.size();i0 ? + 1/(m_nodes[i].m_im*tmass) : + kmass/tmass; + } + /* Pos */ + const btVector3 com=evaluateCom(); + m_pose.m_pos.resize(m_nodes.size()); + for( i=0,ni=m_nodes.size();i0) + { + int i,ni; + + const btVector3 org=m_nodes[0].m_x; + for(i=0,ni=m_faces.size();im_x-org,btCross(f.m_n[1]->m_x-org,f.m_n[2]->m_x-org)); + } + vol/=(btScalar)6; + } + return(vol); +} + +// +int btSoftBody::clusterCount() const +{ + return(m_clusters.size()); +} + +// +btVector3 btSoftBody::clusterCom(const Cluster* cluster) +{ + btVector3 com(0,0,0); + for(int i=0,ni=cluster->m_nodes.size();im_nodes[i]->m_x*cluster->m_masses[i]; + } + return(com*cluster->m_imass); +} + +// +btVector3 btSoftBody::clusterCom(int cluster) const +{ + return(clusterCom(m_clusters[cluster])); +} + +// +btVector3 btSoftBody::clusterVelocity(const Cluster* cluster,const btVector3& rpos) +{ + return(cluster->m_lv+btCross(cluster->m_av,rpos)); +} + +// +void btSoftBody::clusterVImpulse(Cluster* cluster,const btVector3& rpos,const btVector3& impulse) +{ + const btVector3 li=cluster->m_imass*impulse; + const btVector3 ai=cluster->m_invwi*btCross(rpos,impulse); + cluster->m_vimpulses[0]+=li;cluster->m_lv+=li; + cluster->m_vimpulses[1]+=ai;cluster->m_av+=ai; + cluster->m_nvimpulses++; +} + +// +void btSoftBody::clusterDImpulse(Cluster* cluster,const btVector3& rpos,const btVector3& impulse) +{ + const btVector3 li=cluster->m_imass*impulse; + const btVector3 ai=cluster->m_invwi*btCross(rpos,impulse); + cluster->m_dimpulses[0]+=li; + cluster->m_dimpulses[1]+=ai; + cluster->m_ndimpulses++; +} + +// +void btSoftBody::clusterImpulse(Cluster* cluster,const btVector3& rpos,const Impulse& impulse) +{ + if(impulse.m_asVelocity) clusterVImpulse(cluster,rpos,impulse.m_velocity); + if(impulse.m_asDrift) clusterDImpulse(cluster,rpos,impulse.m_drift); +} + +// +void btSoftBody::clusterVAImpulse(Cluster* cluster,const btVector3& impulse) +{ + const btVector3 ai=cluster->m_invwi*impulse; + cluster->m_vimpulses[1]+=ai;cluster->m_av+=ai; + cluster->m_nvimpulses++; +} + +// +void btSoftBody::clusterDAImpulse(Cluster* cluster,const btVector3& impulse) +{ + const btVector3 ai=cluster->m_invwi*impulse; + cluster->m_dimpulses[1]+=ai; + cluster->m_ndimpulses++; +} + +// +void btSoftBody::clusterAImpulse(Cluster* cluster,const Impulse& impulse) +{ + if(impulse.m_asVelocity) clusterVAImpulse(cluster,impulse.m_velocity); + if(impulse.m_asDrift) clusterDAImpulse(cluster,impulse.m_drift); +} + +// +void btSoftBody::clusterDCImpulse(Cluster* cluster,const btVector3& impulse) +{ + cluster->m_dimpulses[0]+=impulse*cluster->m_imass; + cluster->m_ndimpulses++; +} + +struct NodeLinks +{ + btAlignedObjectArray m_links; +}; + + + +// +int btSoftBody::generateBendingConstraints(int distance,Material* mat) +{ + int i,j; + + if(distance>1) + { + /* Build graph */ + const int n=m_nodes.size(); + const unsigned inf=(~(unsigned)0)>>1; + unsigned* adj=new unsigned[n*n]; + + +#define IDX(_x_,_y_) ((_y_)*n+(_x_)) + for(j=0;j nodeLinks; + + + /* Build node links */ + nodeLinks.resize(m_nodes.size()); + + for( i=0;isum) + { + adj[IDX(i,j)]=adj[IDX(j,i)]=sum; + } + } + + } + } + } + } else + { + ///generic Floyd's algorithm + for(int k=0;ksum) + { + adj[IDX(i,j)]=adj[IDX(j,i)]=sum; + } + } + } + } + } + + + /* Build links */ + int nlinks=0; + for(j=0;jm_leaf) m_cdbvt.remove(c->m_leaf); + c->~Cluster(); + btAlignedFree(c); + m_clusters.remove(c); +} + +// +void btSoftBody::releaseClusters() +{ + while(m_clusters.size()>0) releaseCluster(0); +} + +// +int btSoftBody::generateClusters(int k,int maxiterations) +{ + int i; + releaseClusters(); + m_clusters.resize(btMin(k,m_nodes.size())); + for(i=0;im_collide= true; + } + k=m_clusters.size(); + if(k>0) + { + /* Initialize */ + btAlignedObjectArray centers; + btVector3 cog(0,0,0); + int i; + for(i=0;im_nodes.push_back(&m_nodes[i]); + } + cog/=(btScalar)m_nodes.size(); + centers.resize(k,cog); + /* Iterate */ + const btScalar slope=16; + bool changed; + int iterations=0; + do { + const btScalar w=2-btMin(1,iterations/slope); + changed=false; + iterations++; + int i; + + for(i=0;im_nodes.size();++j) + { + c+=m_clusters[i]->m_nodes[j]->m_x; + } + if(m_clusters[i]->m_nodes.size()) + { + c /= (btScalar)m_clusters[i]->m_nodes.size(); + c = centers[i]+(c-centers[i])*w; + changed |= ((c-centers[i]).length2()>SIMD_EPSILON); + centers[i] = c; + m_clusters[i]->m_nodes.resize(0); + } + } + for(i=0;im_nodes.push_back(&m_nodes[i]); + } + } while(changed&&(iterations cids; + cids.resize(m_nodes.size(),-1); + for(i=0;im_nodes.size();++j) + { + cids[int(m_clusters[i]->m_nodes[j]-&m_nodes[0])]=i; + } + } + for(i=0;im_nodes.findLinearSearch(&m_nodes[kid])==m_clusters[cid]->m_nodes.size()) + { + m_clusters[cid]->m_nodes.push_back(&m_nodes[kid]); + } + } + } + } + } + /* Master */ + if(m_clusters.size()>1) + { + Cluster* pmaster=new(btAlignedAlloc(sizeof(Cluster),16)) Cluster(); + pmaster->m_collide = false; + pmaster->m_nodes.reserve(m_nodes.size()); + for(int i=0;im_nodes.push_back(&m_nodes[i]); + m_clusters.push_back(pmaster); + btSwap(m_clusters[0],m_clusters[m_clusters.size()-1]); + } + /* Terminate */ + for(i=0;im_nodes.size()==0) + { + releaseCluster(i--); + } + } + } else + { + //create a cluster for each tetrahedron (if tetrahedra exist) or each face + if (m_tetras.size()) + { + m_clusters.resize(m_tetras.size()); + for(i=0;im_collide= true; + } + for (i=0;im_nodes.push_back(m_tetras[i].m_n[j]); + } + } + + } else + { + m_clusters.resize(m_faces.size()); + for(i=0;im_collide= true; + } + + for(i=0;im_nodes.push_back(m_faces[i].m_n[j]); + } + } + } + } + + if (m_clusters.size()) + { + initializeClusters(); + updateClusters(); + + + //for self-collision + m_clusterConnectivity.resize(m_clusters.size()*m_clusters.size()); + { + for (int c0=0;c0m_clusterIndex=c0; + for (int c1=0;c1m_nodes.size();i++) + { + for (int j=0;jm_nodes.size();j++) + { + if (cla->m_nodes[i] == clb->m_nodes[j]) + { + connected=true; + break; + } + } + } + m_clusterConnectivity[c0+c1*m_clusters.size()]=connected; + } + } + } + } + + return(m_clusters.size()); +} + +// +void btSoftBody::refine(ImplicitFn* ifn,btScalar accurary,bool cut) +{ + const Node* nbase = &m_nodes[0]; + int ncount = m_nodes.size(); + btSymMatrix edges(ncount,-2); + int newnodes=0; + int i,j,k,ni; + + /* Filter out */ + for(i=0;iEval(l.m_n[0]->m_x),ifn->Eval(l.m_n[1]->m_x))) + { + btSwap(m_links[i],m_links[m_links.size()-1]); + m_links.pop_back();--i; + } + } + } + /* Fill edges */ + for(i=0;i0) + { + const btVector3 x=Lerp(a.m_x,b.m_x,t); + const btVector3 v=Lerp(a.m_v,b.m_v,t); + btScalar m=0; + if(a.m_im>0) + { + if(b.m_im>0) + { + const btScalar ma=1/a.m_im; + const btScalar mb=1/b.m_im; + const btScalar mc=Lerp(ma,mb,t); + const btScalar f=(ma+mb)/(ma+mb+mc); + a.m_im=1/(ma*f); + b.m_im=1/(mb*f); + m=mc*f; + } + else + { a.m_im/=0.5;m=1/a.m_im; } + } + else + { + if(b.m_im>0) + { b.m_im/=0.5;m=1/b.m_im; } + else + m=0; + } + appendNode(x,m); + edges(i,j)=m_nodes.size()-1; + m_nodes[edges(i,j)].m_v=v; + ++newnodes; + } + } + } + } + nbase=&m_nodes[0]; + /* Refine links */ + for(i=0,ni=m_links.size();i0) + { + appendLink(i); + Link* pft[]={ &m_links[i], + &m_links[m_links.size()-1]}; + pft[0]->m_n[0]=&m_nodes[idx[0]]; + pft[0]->m_n[1]=&m_nodes[ni]; + pft[1]->m_n[0]=&m_nodes[ni]; + pft[1]->m_n[1]=&m_nodes[idx[1]]; + } + } + } + /* Refine faces */ + for(i=0;i0) + { + appendFace(i); + const int l=(k+1)%3; + Face* pft[]={ &m_faces[i], + &m_faces[m_faces.size()-1]}; + pft[0]->m_n[0]=&m_nodes[idx[l]]; + pft[0]->m_n[1]=&m_nodes[idx[j]]; + pft[0]->m_n[2]=&m_nodes[ni]; + pft[1]->m_n[0]=&m_nodes[ni]; + pft[1]->m_n[1]=&m_nodes[idx[k]]; + pft[1]->m_n[2]=&m_nodes[idx[l]]; + appendLink(ni,idx[l],pft[0]->m_material); + --i;break; + } + } + } + } + /* Cut */ + if(cut) + { + btAlignedObjectArray cnodes; + const int pcount=ncount; + int i; + ncount=m_nodes.size(); + cnodes.resize(ncount,0); + /* Nodes */ + for(i=0;i=pcount)||(btFabs(ifn->Eval(x))0) { m*=0.5;m_nodes[i].m_im/=0.5; } + appendNode(x,m); + cnodes[i]=m_nodes.size()-1; + m_nodes[cnodes[i]].m_v=v; + } + } + nbase=&m_nodes[0]; + /* Links */ + for(i=0,ni=m_links.size();iEval(m_nodes[id[0]].m_x)Eval(m_nodes[id[1]].m_x)Eval(n[0]->m_x)Eval(n[1]->m_x)Eval(n[2]->m_x) ranks; + btAlignedObjectArray todelete; + ranks.resize(nnodes,0); + for(i=0,ni=m_links.size();i=0;--i) + { + if(!ranks[i]) todelete.push_back(i); + } + if(todelete.size()) + { + btAlignedObjectArray& map=ranks; + for(int i=0;im_v=v; + pn[1]->m_v=v; + for(i=0,ni=m_links.size();im_n[1]=pn[mtch]; + pft[1]->m_n[0]=pn[1-mtch]; + done=true; + } + } + for(i=0,ni=m_faces.size();im_n[l]=pn[mtch]; + pft[1]->m_n[k]=pn[1-mtch]; + appendLink(pn[0],pft[0]->m_n[(l+1)%3],pft[0]->m_material,true); + appendLink(pn[1],pft[0]->m_n[(l+1)%3],pft[0]->m_material,true); + } + } + } + if(!done) + { + m_ndbvt.remove(pn[0]->m_leaf); + m_ndbvt.remove(pn[1]->m_leaf); + m_nodes.pop_back(); + m_nodes.pop_back(); + } + return(done); +} + +// +bool btSoftBody::rayTest(const btVector3& rayFrom, + const btVector3& rayTo, + sRayCast& results) +{ + if(m_faces.size()&&m_fdbvt.empty()) + initializeFaceTree(); + + results.body = this; + results.fraction = 1.f; + results.feature = eFeature::None; + results.index = -1; + + return(rayTest(rayFrom,rayTo,results.fraction,results.feature,results.index,false)!=0); +} + +// +void btSoftBody::setSolver(eSolverPresets::_ preset) +{ + m_cfg.m_vsequence.clear(); + m_cfg.m_psequence.clear(); + m_cfg.m_dsequence.clear(); + switch(preset) + { + case eSolverPresets::Positions: + m_cfg.m_psequence.push_back(ePSolver::Anchors); + m_cfg.m_psequence.push_back(ePSolver::RContacts); + m_cfg.m_psequence.push_back(ePSolver::SContacts); + m_cfg.m_psequence.push_back(ePSolver::Linear); + break; + case eSolverPresets::Velocities: + m_cfg.m_vsequence.push_back(eVSolver::Linear); + + m_cfg.m_psequence.push_back(ePSolver::Anchors); + m_cfg.m_psequence.push_back(ePSolver::RContacts); + m_cfg.m_psequence.push_back(ePSolver::SContacts); + + m_cfg.m_dsequence.push_back(ePSolver::Linear); + break; + } +} + +// +void btSoftBody::predictMotion(btScalar dt) +{ + int i,ni; + + /* Update */ + if(m_bUpdateRtCst) + { + m_bUpdateRtCst=false; + updateConstants(); + m_fdbvt.clear(); + if(m_cfg.collisions&fCollision::VF_SS) + { + initializeFaceTree(); + } + } + + /* Prepare */ + m_sst.sdt = dt*m_cfg.timescale; + m_sst.isdt = 1/m_sst.sdt; + m_sst.velmrg = m_sst.sdt*3; + m_sst.radmrg = getCollisionShape()->getMargin(); + m_sst.updmrg = m_sst.radmrg*(btScalar)0.25; + /* Forces */ + addVelocity(m_worldInfo->m_gravity*m_sst.sdt); + applyForces(); + /* Integrate */ + for(i=0,ni=m_nodes.size();im_v+ + f.m_n[1]->m_v+ + f.m_n[2]->m_v)/3; + vol = VolumeOf(f,m_sst.radmrg); + m_fdbvt.update( f.m_leaf, + vol, + v*m_sst.velmrg, + m_sst.updmrg); + } + } + /* Pose */ + updatePose(); + /* Match */ + if(m_pose.m_bframe&&(m_cfg.kMT>0)) + { + const btMatrix3x3 posetrs=m_pose.m_rot; + for(int i=0,ni=m_nodes.size();i0) + { + const btVector3 x=posetrs*m_pose.m_pos[i]+m_pose.m_com; + n.m_x=Lerp(n.m_x,x,m_cfg.kMT); + } + } + } + /* Clear contacts */ + m_rcontacts.resize(0); + m_scontacts.resize(0); + /* Optimize dbvt's */ + m_ndbvt.optimizeIncremental(1); + m_fdbvt.optimizeIncremental(1); + m_cdbvt.optimizeIncremental(1); +} + +// +void btSoftBody::solveConstraints() +{ + /* Apply clusters */ + applyClusters(false); + /* Prepare links */ + + int i,ni; + + for(i=0,ni=m_links.size();im_q-l.m_n[0]->m_q; + l.m_c2 = 1/(l.m_c3.length2()*l.m_c0); + } + /* Prepare anchors */ + for(i=0,ni=m_anchors.size();igetWorldTransform().getBasis()*a.m_local; + a.m_c0 = ImpulseMatrix( m_sst.sdt, + a.m_node->m_im, + a.m_body->getInvMass(), + a.m_body->getInvInertiaTensorWorld(), + ra); + a.m_c1 = ra; + a.m_c2 = m_sst.sdt*a.m_node->m_im; + a.m_body->activate(); + } + /* Solve velocities */ + if(m_cfg.viterations>0) + { + /* Solve */ + for(int isolve=0;isolve0) + { + for(int isolve=0;isolve0) + { + const btScalar vcf=m_cfg.kVCF*m_sst.isdt; + for(i=0,ni=m_nodes.size();i& bodies) +{ + const int nb=bodies.size(); + int iterations=0; + int i; + + for(i=0;im_cfg.citerations); + } + for(i=0;iprepareClusters(iterations); + } + for(i=0;isolveClusters(sor); + } + } + for(i=0;icleanupClusters(); + } +} + +// +void btSoftBody::integrateMotion() +{ + /* Update */ + updateNormals(); +} + +// +btSoftBody::RayFromToCaster::RayFromToCaster(const btVector3& rayFrom,const btVector3& rayTo,btScalar mxt) +{ + m_rayFrom = rayFrom; + m_rayNormalizedDirection = (rayTo-rayFrom); + m_rayTo = rayTo; + m_mint = mxt; + m_face = 0; + m_tests = 0; +} + +// +void btSoftBody::RayFromToCaster::Process(const btDbvtNode* leaf) +{ + btSoftBody::Face& f=*(btSoftBody::Face*)leaf->data; + const btScalar t=rayFromToTriangle( m_rayFrom,m_rayTo,m_rayNormalizedDirection, + f.m_n[0]->m_x, + f.m_n[1]->m_x, + f.m_n[2]->m_x, + m_mint); + if((t>0)&&(tteps)&&(tceps) && + (btDot(n,btCross(b-hit,c-hit))>ceps) && + (btDot(n,btCross(c-hit,a-hit))>ceps)) + { + return(t); + } + } + } + return(-1); +} + +// +void btSoftBody::pointersToIndices() +{ +#define PTR2IDX(_p_,_b_) reinterpret_cast((_p_)-(_b_)) + btSoftBody::Node* base=&m_nodes[0]; + int i,ni; + + for(i=0,ni=m_nodes.size();idata=*(void**)&i; + } + } + for(i=0,ni=m_links.size();idata=*(void**)&i; + } + } + for(i=0,ni=m_anchors.size();idata=&m_nodes[i]; + } + } + for(i=0,ni=m_links.size();idata=&m_faces[i]; + } + } + for(i=0,ni=m_anchors.size();im_x, + f.m_n[1]->m_x, + f.m_n[2]->m_x, + mint); + if(t>0) + { + ++cnt; + if(!bcountonly) + { + feature=btSoftBody::eFeature::Face; + index=i; + mint=t; + } + } + } + } + else + {/* Use dbvt */ + RayFromToCaster collider(rayFrom,rayTo,mint); + + btDbvt::rayTest(m_fdbvt.m_root,rayFrom,rayTo,collider); + if(collider.m_face) + { + mint=collider.m_mint; + feature=btSoftBody::eFeature::Face; + index=(int)(collider.m_face-&m_faces[0]); + cnt=1; + } + } + return(cnt); +} + +// +void btSoftBody::initializeFaceTree() +{ + m_fdbvt.clear(); + for(int i=0;igetCollisionShape(); + btRigidBody* tmpRigid = btRigidBody::upcast(colObj); + const btTransform& wtr=tmpRigid? tmpRigid->getInterpolationWorldTransform() : colObj->getWorldTransform(); + btScalar dst=m_worldInfo->m_sparsesdf.Evaluate( wtr.invXform(x), + shp, + nrm, + margin); + if(dst<0) + { + cti.m_colObj = colObj; + cti.m_normal = wtr.getBasis()*nrm; + cti.m_offset = -btDot( cti.m_normal, + x-cti.m_normal*dst); + return(true); + } + return(false); +} + +// +void btSoftBody::updateNormals() +{ + const btVector3 zv(0,0,0); + int i,ni; + + for(i=0,ni=m_nodes.size();im_x-f.m_n[0]->m_x, + f.m_n[2]->m_x-f.m_n[0]->m_x); + f.m_normal=n.normalized(); + f.m_n[0]->m_n+=n; + f.m_n[1]->m_n+=n; + f.m_n[2]->m_n+=n; + } + for(i=0,ni=m_nodes.size();iSIMD_EPSILON) + m_nodes[i].m_n /= len; + } +} + +// +void btSoftBody::updateBounds() +{ + if(m_ndbvt.m_root) + { + const btVector3& mins=m_ndbvt.m_root->volume.Mins(); + const btVector3& maxs=m_ndbvt.m_root->volume.Maxs(); + const btScalar csm=getCollisionShape()->getMargin(); + const btVector3 mrg=btVector3( csm, + csm, + csm)*1; // ??? to investigate... + m_bounds[0]=mins-mrg; + m_bounds[1]=maxs+mrg; + if(0!=getBroadphaseHandle()) + { + m_worldInfo->m_broadphase->setAabb( getBroadphaseHandle(), + m_bounds[0], + m_bounds[1], + m_worldInfo->m_dispatcher); + } + } + else + { + m_bounds[0]= + m_bounds[1]=btVector3(0,0,0); + } +} + + +// +void btSoftBody::updatePose() +{ + if(m_pose.m_bframe) + { + btSoftBody::Pose& pose=m_pose; + const btVector3 com=evaluateCom(); + /* Com */ + pose.m_com = com; + /* Rotation */ + btMatrix3x3 Apq; + const btScalar eps=SIMD_EPSILON; + Apq[0]=Apq[1]=Apq[2]=btVector3(0,0,0); + Apq[0].setX(eps);Apq[1].setY(eps*2);Apq[2].setZ(eps*3); + for(int i=0,ni=m_nodes.size();i1) + { + const btScalar idet=Clamp( 1/pose.m_scl.determinant(), + 1,m_cfg.maxvolume); + pose.m_scl=Mul(pose.m_scl,idet); + } + + } +} + +// +void btSoftBody::updateConstants() +{ + int i,ni; + + /* Links */ + for(i=0,ni=m_links.size();im_x-l.m_n[1]->m_x).length(); + l.m_c0 = (l.m_n[0]->m_im+l.m_n[1]->m_im)/m.m_kLST; + l.m_c1 = l.m_rl*l.m_rl; + } + /* Faces */ + for(i=0,ni=m_faces.size();im_x,f.m_n[1]->m_x,f.m_n[2]->m_x); + } + /* Area's */ + btAlignedObjectArray counts; + counts.resize(m_nodes.size(),0); + for(i=0,ni=m_nodes.size();im_area+=btFabs(f.m_ra); + } + } + for(i=0,ni=m_nodes.size();i0) + m_nodes[i].m_area/=(btScalar)counts[i]; + else + m_nodes[i].m_area=0; + } +} + +// +void btSoftBody::initializeClusters() +{ + int i; + + for( i=0;im_im==0) + { + c.m_containsAnchor = true; + c.m_masses[j] = BT_LARGE_FLOAT; + } else + { + c.m_masses[j] = btScalar(1.)/c.m_nodes[j]->m_im; + } + c.m_imass += c.m_masses[j]; + } + c.m_imass = btScalar(1.)/c.m_imass; + c.m_com = btSoftBody::clusterCom(&c); + c.m_lv = btVector3(0,0,0); + c.m_av = btVector3(0,0,0); + c.m_leaf = 0; + /* Inertia */ + btMatrix3x3& ii=c.m_locii; + ii[0]=ii[1]=ii[2]=btVector3(0,0,0); + { + int i,ni; + + for(i=0,ni=c.m_nodes.size();im_x-c.m_com; + const btVector3 q=k*k; + const btScalar m=c.m_masses[i]; + ii[0][0] += m*(q[1]+q[2]); + ii[1][1] += m*(q[0]+q[2]); + ii[2][2] += m*(q[0]+q[1]); + ii[0][1] -= m*k[0]*k[1]; + ii[0][2] -= m*k[0]*k[2]; + ii[1][2] -= m*k[1]*k[2]; + } + } + ii[1][0]=ii[0][1]; + ii[2][0]=ii[0][2]; + ii[2][1]=ii[1][2]; + + ii = ii.inverse(); + + /* Frame */ + c.m_framexform.setIdentity(); + c.m_framexform.setOrigin(c.m_com); + c.m_framerefs.resize(c.m_nodes.size()); + { + int i; + for(i=0;im_x-c.m_com; + } + } + } +} + +// +void btSoftBody::updateClusters() +{ + BT_PROFILE("UpdateClusters"); + int i; + + for(i=0;im_x-c.m_com; + const btVector3& b=c.m_framerefs[i]; + m[0]+=a[0]*b;m[1]+=a[1]*b;m[2]+=a[2]*b; + } + PolarDecompose(m,r,s); + c.m_framexform.setOrigin(c.m_com); + c.m_framexform.setBasis(r); + /* Inertia */ +#if 1/* Constant */ + c.m_invwi=c.m_framexform.getBasis()*c.m_locii*c.m_framexform.getBasis().transpose(); +#else +#if 0/* Sphere */ + const btScalar rk=(2*c.m_extents.length2())/(5*c.m_imass); + const btVector3 inertia(rk,rk,rk); + const btVector3 iin(btFabs(inertia[0])>SIMD_EPSILON?1/inertia[0]:0, + btFabs(inertia[1])>SIMD_EPSILON?1/inertia[1]:0, + btFabs(inertia[2])>SIMD_EPSILON?1/inertia[2]:0); + + c.m_invwi=c.m_xform.getBasis().scaled(iin)*c.m_xform.getBasis().transpose(); +#else/* Actual */ + c.m_invwi[0]=c.m_invwi[1]=c.m_invwi[2]=btVector3(0,0,0); + for(int i=0;im_x-c.m_com; + const btVector3 q=k*k; + const btScalar m=1/c.m_nodes[i]->m_im; + c.m_invwi[0][0] += m*(q[1]+q[2]); + c.m_invwi[1][1] += m*(q[0]+q[2]); + c.m_invwi[2][2] += m*(q[0]+q[1]); + c.m_invwi[0][1] -= m*k[0]*k[1]; + c.m_invwi[0][2] -= m*k[0]*k[2]; + c.m_invwi[1][2] -= m*k[1]*k[2]; + } + c.m_invwi[1][0]=c.m_invwi[0][1]; + c.m_invwi[2][0]=c.m_invwi[0][2]; + c.m_invwi[2][1]=c.m_invwi[1][2]; + c.m_invwi=c.m_invwi.inverse(); +#endif +#endif + /* Velocities */ + c.m_lv=btVector3(0,0,0); + c.m_av=btVector3(0,0,0); + { + int i; + + for(i=0;im_v*c.m_masses[i]; + c.m_lv += v; + c.m_av += btCross(c.m_nodes[i]->m_x-c.m_com,v); + } + } + c.m_lv=c.m_imass*c.m_lv*(1-c.m_ldamping); + c.m_av=c.m_invwi*c.m_av*(1-c.m_adamping); + c.m_vimpulses[0] = + c.m_vimpulses[1] = btVector3(0,0,0); + c.m_dimpulses[0] = + c.m_dimpulses[1] = btVector3(0,0,0); + c.m_nvimpulses = 0; + c.m_ndimpulses = 0; + /* Matching */ + if(c.m_matching>0) + { + for(int j=0;jm_x; + btVector3 mx=mi; + for(int j=1;jm_x); + mx.setMax(c.m_nodes[j]->m_x); + } + ATTRIBUTE_ALIGNED16(btDbvtVolume) bounds=btDbvtVolume::FromMM(mi,mx); + if(c.m_leaf) + m_cdbvt.update(c.m_leaf,bounds,c.m_lv*m_sst.sdt*3,m_sst.radmrg); + else + c.m_leaf=m_cdbvt.insert(bounds,&c); + } + } + } + + +} + + + + +// +void btSoftBody::cleanupClusters() +{ + for(int i=0;iTerminate(m_sst.sdt); + if(m_joints[i]->m_delete) + { + btAlignedFree(m_joints[i]); + m_joints.remove(m_joints[i--]); + } + } +} + +// +void btSoftBody::prepareClusters(int iterations) +{ + for(int i=0;iPrepare(m_sst.sdt,iterations); + } +} + + +// +void btSoftBody::solveClusters(btScalar sor) +{ + for(int i=0,ni=m_joints.size();iSolve(m_sst.sdt,sor); + } +} + +// +void btSoftBody::applyClusters(bool drift) +{ + BT_PROFILE("ApplyClusters"); +// const btScalar f0=m_sst.sdt; + //const btScalar f1=f0/2; + btAlignedObjectArray deltas; + btAlignedObjectArray weights; + deltas.resize(m_nodes.size(),btVector3(0,0,0)); + weights.resize(m_nodes.size(),0); + int i; + + if(drift) + { + for(i=0;im_x; + const btScalar q=c.m_masses[j]; + deltas[idx] += (v+btCross(w,x-c.m_com))*q; + weights[idx] += q; + } + } + } + for(i=0;i0) m_nodes[i].m_x+=deltas[i]/weights[i]; + } +} + +// +void btSoftBody::dampClusters() +{ + int i; + + for(i=0;i0) + { + for(int j=0;j0) + { + const btVector3 vx=c.m_lv+btCross(c.m_av,c.m_nodes[j]->m_q-c.m_com); + if(vx.length2()<=n.m_v.length2()) + { + n.m_v += c.m_ndamping*(vx-n.m_v); + } + } + } + } + } +} + +// +void btSoftBody::Joint::Prepare(btScalar dt,int) +{ + m_bodies[0].activate(); + m_bodies[1].activate(); +} + +// +void btSoftBody::LJoint::Prepare(btScalar dt,int iterations) +{ + static const btScalar maxdrift=4; + Joint::Prepare(dt,iterations); + m_rpos[0] = m_bodies[0].xform()*m_refs[0]; + m_rpos[1] = m_bodies[1].xform()*m_refs[1]; + m_drift = Clamp(m_rpos[0]-m_rpos[1],maxdrift)*m_erp/dt; + m_rpos[0] -= m_bodies[0].xform().getOrigin(); + m_rpos[1] -= m_bodies[1].xform().getOrigin(); + m_massmatrix = ImpulseMatrix( m_bodies[0].invMass(),m_bodies[0].invWorldInertia(),m_rpos[0], + m_bodies[1].invMass(),m_bodies[1].invWorldInertia(),m_rpos[1]); + if(m_split>0) + { + m_sdrift = m_massmatrix*(m_drift*m_split); + m_drift *= 1-m_split; + } + m_drift /=(btScalar)iterations; +} + +// +void btSoftBody::LJoint::Solve(btScalar dt,btScalar sor) +{ + const btVector3 va=m_bodies[0].velocity(m_rpos[0]); + const btVector3 vb=m_bodies[1].velocity(m_rpos[1]); + const btVector3 vr=va-vb; + btSoftBody::Impulse impulse; + impulse.m_asVelocity = 1; + impulse.m_velocity = m_massmatrix*(m_drift+vr*m_cfm)*sor; + m_bodies[0].applyImpulse(-impulse,m_rpos[0]); + m_bodies[1].applyImpulse( impulse,m_rpos[1]); +} + +// +void btSoftBody::LJoint::Terminate(btScalar dt) +{ + if(m_split>0) + { + m_bodies[0].applyDImpulse(-m_sdrift,m_rpos[0]); + m_bodies[1].applyDImpulse( m_sdrift,m_rpos[1]); + } +} + +// +void btSoftBody::AJoint::Prepare(btScalar dt,int iterations) +{ + static const btScalar maxdrift=SIMD_PI/16; + m_icontrol->Prepare(this); + Joint::Prepare(dt,iterations); + m_axis[0] = m_bodies[0].xform().getBasis()*m_refs[0]; + m_axis[1] = m_bodies[1].xform().getBasis()*m_refs[1]; + m_drift = NormalizeAny(btCross(m_axis[1],m_axis[0])); + m_drift *= btMin(maxdrift,btAcos(Clamp(btDot(m_axis[0],m_axis[1]),-1,+1))); + m_drift *= m_erp/dt; + m_massmatrix= AngularImpulseMatrix(m_bodies[0].invWorldInertia(),m_bodies[1].invWorldInertia()); + if(m_split>0) + { + m_sdrift = m_massmatrix*(m_drift*m_split); + m_drift *= 1-m_split; + } + m_drift /=(btScalar)iterations; +} + +// +void btSoftBody::AJoint::Solve(btScalar dt,btScalar sor) +{ + const btVector3 va=m_bodies[0].angularVelocity(); + const btVector3 vb=m_bodies[1].angularVelocity(); + const btVector3 vr=va-vb; + const btScalar sp=btDot(vr,m_axis[0]); + const btVector3 vc=vr-m_axis[0]*m_icontrol->Speed(this,sp); + btSoftBody::Impulse impulse; + impulse.m_asVelocity = 1; + impulse.m_velocity = m_massmatrix*(m_drift+vc*m_cfm)*sor; + m_bodies[0].applyAImpulse(-impulse); + m_bodies[1].applyAImpulse( impulse); +} + +// +void btSoftBody::AJoint::Terminate(btScalar dt) +{ + if(m_split>0) + { + m_bodies[0].applyDAImpulse(-m_sdrift); + m_bodies[1].applyDAImpulse( m_sdrift); + } +} + +// +void btSoftBody::CJoint::Prepare(btScalar dt,int iterations) +{ + Joint::Prepare(dt,iterations); + const bool dodrift=(m_life==0); + m_delete=(++m_life)>m_maxlife; + if(dodrift) + { + m_drift=m_drift*m_erp/dt; + if(m_split>0) + { + m_sdrift = m_massmatrix*(m_drift*m_split); + m_drift *= 1-m_split; + } + m_drift/=(btScalar)iterations; + } + else + { + m_drift=m_sdrift=btVector3(0,0,0); + } +} + +// +void btSoftBody::CJoint::Solve(btScalar dt,btScalar sor) +{ + const btVector3 va=m_bodies[0].velocity(m_rpos[0]); + const btVector3 vb=m_bodies[1].velocity(m_rpos[1]); + const btVector3 vrel=va-vb; + const btScalar rvac=btDot(vrel,m_normal); + btSoftBody::Impulse impulse; + impulse.m_asVelocity = 1; + impulse.m_velocity = m_drift; + if(rvac<0) + { + const btVector3 iv=m_normal*rvac; + const btVector3 fv=vrel-iv; + impulse.m_velocity += iv+fv*m_friction; + } + impulse.m_velocity=m_massmatrix*impulse.m_velocity*sor; + + if (m_bodies[0].m_soft==m_bodies[1].m_soft) + { + if ((impulse.m_velocity.getX() ==impulse.m_velocity.getX())&&(impulse.m_velocity.getY() ==impulse.m_velocity.getY())&& + (impulse.m_velocity.getZ() ==impulse.m_velocity.getZ())) + { + if (impulse.m_asVelocity) + { + if (impulse.m_velocity.length() m_maxSelfCollisionImpulse) + { + + } else + { + m_bodies[0].applyImpulse(-impulse*m_bodies[0].m_soft->m_selfCollisionImpulseFactor,m_rpos[0]); + m_bodies[1].applyImpulse( impulse*m_bodies[0].m_soft->m_selfCollisionImpulseFactor,m_rpos[1]); + } + } + } + } else + { + m_bodies[0].applyImpulse(-impulse,m_rpos[0]); + m_bodies[1].applyImpulse( impulse,m_rpos[1]); + } +} + +// +void btSoftBody::CJoint::Terminate(btScalar dt) +{ + if(m_split>0) + { + m_bodies[0].applyDImpulse(-m_sdrift,m_rpos[0]); + m_bodies[1].applyDImpulse( m_sdrift,m_rpos[1]); + } +} + +// +void btSoftBody::applyForces() +{ + + BT_PROFILE("SoftBody applyForces"); + const btScalar dt=m_sst.sdt; + const btScalar kLF=m_cfg.kLF; + const btScalar kDG=m_cfg.kDG; + const btScalar kPR=m_cfg.kPR; + const btScalar kVC=m_cfg.kVC; + const bool as_lift=kLF>0; + const bool as_drag=kDG>0; + const bool as_pressure=kPR!=0; + const bool as_volume=kVC>0; + const bool as_aero= as_lift || + as_drag ; + const bool as_vaero= as_aero && + (m_cfg.aeromodel=btSoftBody::eAeroModel::F_TwoSided); + const bool use_medium= as_aero; + const bool use_volume= as_pressure || + as_volume ; + btScalar volume=0; + btScalar ivolumetp=0; + btScalar dvolumetv=0; + btSoftBody::sMedium medium; + if(use_volume) + { + volume = getVolume(); + ivolumetp = 1/btFabs(volume)*kPR; + dvolumetv = (m_pose.m_volume-volume)*kVC; + } + /* Per vertex forces */ + int i,ni; + + for(i=0,ni=m_nodes.size();i0) + { + if(use_medium) + { + EvaluateMedium(m_worldInfo,n.m_x,medium); + /* Aerodynamics */ + if(as_vaero) + { + const btVector3 rel_v=n.m_v-medium.m_velocity; + const btScalar rel_v2=rel_v.length2(); + if(rel_v2>SIMD_EPSILON) + { + btVector3 nrm=n.m_n; + /* Setup normal */ + switch(m_cfg.aeromodel) + { + case btSoftBody::eAeroModel::V_Point: + nrm=NormalizeAny(rel_v);break; + case btSoftBody::eAeroModel::V_TwoSided: + nrm*=(btScalar)(btDot(nrm,rel_v)<0?-1:+1);break; + default: + { + } + } + const btScalar dvn=btDot(rel_v,nrm); + /* Compute forces */ + if(dvn>0) + { + btVector3 force(0,0,0); + const btScalar c0 = n.m_area*dvn*rel_v2/2; + const btScalar c1 = c0*medium.m_density; + force += nrm*(-c1*kLF); + force += rel_v.normalized()*(-c1*kDG); + ApplyClampedForce(n,force,dt); + } + } + } + } + /* Pressure */ + if(as_pressure) + { + n.m_f += n.m_n*(n.m_area*ivolumetp); + } + /* Volume */ + if(as_volume) + { + n.m_f += n.m_n*(n.m_area*dvolumetv); + } + } + } + /* Per face forces */ + for(i=0,ni=m_faces.size();im_v+f.m_n[1]->m_v+f.m_n[2]->m_v)/3; + const btVector3 x=(f.m_n[0]->m_x+f.m_n[1]->m_x+f.m_n[2]->m_x)/3; + EvaluateMedium(m_worldInfo,x,medium); + const btVector3 rel_v=v-medium.m_velocity; + const btScalar rel_v2=rel_v.length2(); + if(rel_v2>SIMD_EPSILON) + { + btVector3 nrm=f.m_normal; + /* Setup normal */ + switch(m_cfg.aeromodel) + { + case btSoftBody::eAeroModel::F_TwoSided: + nrm*=(btScalar)(btDot(nrm,rel_v)<0?-1:+1);break; + default: + { + } + } + const btScalar dvn=btDot(rel_v,nrm); + /* Compute forces */ + if(dvn>0) + { + btVector3 force(0,0,0); + const btScalar c0 = f.m_ra*dvn*rel_v2; + const btScalar c1 = c0*medium.m_density; + force += nrm*(-c1*kLF); + force += rel_v.normalized()*(-c1*kDG); + force /= 3; + for(int j=0;j<3;++j) ApplyClampedForce(*f.m_n[j],force,dt); + } + } + } + } +} + +// +void btSoftBody::PSolve_Anchors(btSoftBody* psb,btScalar kst,btScalar ti) +{ + const btScalar kAHR=psb->m_cfg.kAHR*kst; + const btScalar dt=psb->m_sst.sdt; + for(int i=0,ni=psb->m_anchors.size();im_anchors[i]; + const btTransform& t=a.m_body->getInterpolationWorldTransform(); + Node& n=*a.m_node; + const btVector3 wa=t*a.m_local; + const btVector3 va=a.m_body->getVelocityInLocalPoint(a.m_c1)*dt; + const btVector3 vb=n.m_x-n.m_q; + const btVector3 vr=(va-vb)+(wa-n.m_x)*kAHR; + const btVector3 impulse=a.m_c0*vr; + n.m_x+=impulse*a.m_c2; + a.m_body->applyImpulse(-impulse,a.m_c1); + } +} + +// +void btSoftBody::PSolve_RContacts(btSoftBody* psb,btScalar kst,btScalar ti) +{ + const btScalar dt=psb->m_sst.sdt; + const btScalar mrg=psb->getCollisionShape()->getMargin(); + for(int i=0,ni=psb->m_rcontacts.size();im_rcontacts[i]; + const sCti& cti=c.m_cti; + btRigidBody* tmpRigid = btRigidBody::upcast(cti.m_colObj); + + const btVector3 va=tmpRigid ? tmpRigid->getVelocityInLocalPoint(c.m_c1)*dt : btVector3(0,0,0); + const btVector3 vb=c.m_node->m_x-c.m_node->m_q; + const btVector3 vr=vb-va; + const btScalar dn=btDot(vr,cti.m_normal); + if(dn<=SIMD_EPSILON) + { + const btScalar dp=btMin(btDot(c.m_node->m_x,cti.m_normal)+cti.m_offset,mrg); + const btVector3 fv=vr-cti.m_normal*dn; + const btVector3 impulse=c.m_c0*((vr-fv*c.m_c3+cti.m_normal*(dp*c.m_c4))*kst); + c.m_node->m_x-=impulse*c.m_c2; + if (tmpRigid) + tmpRigid->applyImpulse(impulse,c.m_c1); + } + } +} + +// +void btSoftBody::PSolve_SContacts(btSoftBody* psb,btScalar,btScalar ti) +{ + for(int i=0,ni=psb->m_scontacts.size();im_scontacts[i]; + const btVector3& nr=c.m_normal; + Node& n=*c.m_node; + Face& f=*c.m_face; + const btVector3 p=BaryEval( f.m_n[0]->m_x, + f.m_n[1]->m_x, + f.m_n[2]->m_x, + c.m_weights); + const btVector3 q=BaryEval( f.m_n[0]->m_q, + f.m_n[1]->m_q, + f.m_n[2]->m_q, + c.m_weights); + const btVector3 vr=(n.m_x-n.m_q)-(p-q); + btVector3 corr(0,0,0); + btScalar dot = btDot(vr,nr); + if(dot<0) + { + const btScalar j=c.m_margin-(btDot(nr,n.m_x)-btDot(nr,p)); + corr+=c.m_normal*j; + } + corr -= ProjectOnPlane(vr,nr)*c.m_friction; + n.m_x += corr*c.m_cfm[0]; + f.m_n[0]->m_x -= corr*(c.m_cfm[1]*c.m_weights.x()); + f.m_n[1]->m_x -= corr*(c.m_cfm[1]*c.m_weights.y()); + f.m_n[2]->m_x -= corr*(c.m_cfm[1]*c.m_weights.z()); + } +} + +// +void btSoftBody::PSolve_Links(btSoftBody* psb,btScalar kst,btScalar ti) +{ + for(int i=0,ni=psb->m_links.size();im_links[i]; + if(l.m_c0>0) + { + Node& a=*l.m_n[0]; + Node& b=*l.m_n[1]; + const btVector3 del=b.m_x-a.m_x; + const btScalar len=del.length2(); + const btScalar k=((l.m_c1-len)/(l.m_c0*(l.m_c1+len)))*kst; + //const btScalar t=k*a.m_im; + a.m_x-=del*(k*a.m_im); + b.m_x+=del*(k*b.m_im); + } + } +} + +// +void btSoftBody::VSolve_Links(btSoftBody* psb,btScalar kst) +{ + for(int i=0,ni=psb->m_links.size();im_links[i]; + Node** n=l.m_n; + const btScalar j=-btDot(l.m_c3,n[0]->m_v-n[1]->m_v)*l.m_c2*kst; + n[0]->m_v+= l.m_c3*(j*n[0]->m_im); + n[1]->m_v-= l.m_c3*(j*n[1]->m_im); + } +} + +// +btSoftBody::psolver_t btSoftBody::getSolver(ePSolver::_ solver) +{ + switch(solver) + { + case ePSolver::Anchors: + return(&btSoftBody::PSolve_Anchors); + case ePSolver::Linear: + return(&btSoftBody::PSolve_Links); + case ePSolver::RContacts: + return(&btSoftBody::PSolve_RContacts); + case ePSolver::SContacts: + return(&btSoftBody::PSolve_SContacts); + default: + { + } + } + return(0); +} + +// +btSoftBody::vsolver_t btSoftBody::getSolver(eVSolver::_ solver) +{ + switch(solver) + { + case eVSolver::Linear: return(&btSoftBody::VSolve_Links); + default: + { + } + } + return(0); +} + +// +void btSoftBody::defaultCollisionHandler(btCollisionObject* pco) +{ + switch(m_cfg.collisions&fCollision::RVSmask) + { + case fCollision::SDF_RS: + { + btSoftColliders::CollideSDF_RS docollide; + btRigidBody* prb1=btRigidBody::upcast(pco); + btTransform wtr=prb1 ? prb1->getInterpolationWorldTransform() : pco->getWorldTransform(); + + const btTransform ctr=pco->getWorldTransform(); + const btScalar timemargin=(wtr.getOrigin()-ctr.getOrigin()).length(); + const btScalar basemargin=getCollisionShape()->getMargin(); + btVector3 mins; + btVector3 maxs; + ATTRIBUTE_ALIGNED16(btDbvtVolume) volume; + pco->getCollisionShape()->getAabb( pco->getInterpolationWorldTransform(), + mins, + maxs); + volume=btDbvtVolume::FromMM(mins,maxs); + volume.Expand(btVector3(basemargin,basemargin,basemargin)); + docollide.psb = this; + docollide.m_colObj1 = pco; + docollide.m_rigidBody = prb1; + + docollide.dynmargin = basemargin+timemargin; + docollide.stamargin = basemargin; + m_ndbvt.collideTV(m_ndbvt.m_root,volume,docollide); + } + break; + case fCollision::CL_RS: + { + btSoftColliders::CollideCL_RS collider; + collider.Process(this,pco); + } + break; + } +} + +// +void btSoftBody::defaultCollisionHandler(btSoftBody* psb) +{ + const int cf=m_cfg.collisions&psb->m_cfg.collisions; + switch(cf&fCollision::SVSmask) + { + case fCollision::CL_SS: + { + + //support self-collision if CL_SELF flag set + if (this!=psb || psb->m_cfg.collisions&fCollision::CL_SELF) + { + btSoftColliders::CollideCL_SS docollide; + docollide.Process(this,psb); + } + + } + break; + case fCollision::VF_SS: + { + //only self-collision for Cluster, not Vertex-Face yet + if (this!=psb) + { + btSoftColliders::CollideVF_SS docollide; + /* common */ + docollide.mrg= getCollisionShape()->getMargin()+ + psb->getCollisionShape()->getMargin(); + /* psb0 nodes vs psb1 faces */ + docollide.psb[0]=this; + docollide.psb[1]=psb; + docollide.psb[0]->m_ndbvt.collideTT( docollide.psb[0]->m_ndbvt.m_root, + docollide.psb[1]->m_fdbvt.m_root, + docollide); + /* psb1 nodes vs psb0 faces */ + docollide.psb[0]=psb; + docollide.psb[1]=this; + docollide.psb[0]->m_ndbvt.collideTT( docollide.psb[0]->m_ndbvt.m_root, + docollide.psb[1]->m_fdbvt.m_root, + docollide); + } + } + break; + default: + { + + } + } +} diff --git a/extern/bullet2/BulletSoftBody/btSoftBody.h b/extern/bullet2/BulletSoftBody/btSoftBody.h new file mode 100644 index 00000000000..d69e835f11b --- /dev/null +++ b/extern/bullet2/BulletSoftBody/btSoftBody.h @@ -0,0 +1,891 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ +///btSoftBody implementation by Nathanael Presson + +#ifndef _BT_SOFT_BODY_H +#define _BT_SOFT_BODY_H + +#include "LinearMath/btAlignedObjectArray.h" +#include "LinearMath/btTransform.h" +#include "LinearMath/btIDebugDraw.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" + +#include "BulletCollision/CollisionShapes/btConcaveShape.h" +#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" +#include "btSparseSDF.h" +#include "BulletCollision/BroadphaseCollision/btDbvt.h" + +class btBroadphaseInterface; +class btDispatcher; + +/* btSoftBodyWorldInfo */ +struct btSoftBodyWorldInfo +{ + btScalar air_density; + btScalar water_density; + btScalar water_offset; + btVector3 water_normal; + btBroadphaseInterface* m_broadphase; + btDispatcher* m_dispatcher; + btVector3 m_gravity; + btSparseSdf<3> m_sparsesdf; +}; + + +///The btSoftBody is an class to simulate cloth and volumetric soft bodies. +///There is two-way interaction between btSoftBody and btRigidBody/btCollisionObject. +class btSoftBody : public btCollisionObject +{ +public: + btAlignedObjectArray m_collisionDisabledObjects; + + // + // Enumerations + // + + ///eAeroModel + struct eAeroModel { enum _ { + V_Point, ///Vertex normals are oriented toward velocity + V_TwoSided, ///Vertex normals are fliped to match velocity + V_OneSided, ///Vertex normals are taken as it is + F_TwoSided, ///Face normals are fliped to match velocity + F_OneSided, ///Face normals are taken as it is + END + };}; + + ///eVSolver : velocities solvers + struct eVSolver { enum _ { + Linear, ///Linear solver + END + };}; + + ///ePSolver : positions solvers + struct ePSolver { enum _ { + Linear, ///Linear solver + Anchors, ///Anchor solver + RContacts, ///Rigid contacts solver + SContacts, ///Soft contacts solver + END + };}; + + ///eSolverPresets + struct eSolverPresets { enum _ { + Positions, + Velocities, + Default = Positions, + END + };}; + + ///eFeature + struct eFeature { enum _ { + None, + Node, + Link, + Face, + END + };}; + + typedef btAlignedObjectArray tVSolverArray; + typedef btAlignedObjectArray tPSolverArray; + + // + // Flags + // + + ///fCollision + struct fCollision { enum _ { + RVSmask = 0x000f, ///Rigid versus soft mask + SDF_RS = 0x0001, ///SDF based rigid vs soft + CL_RS = 0x0002, ///Cluster vs convex rigid vs soft + + SVSmask = 0x0030, ///Rigid versus soft mask + VF_SS = 0x0010, ///Vertex vs face soft vs soft handling + CL_SS = 0x0020, ///Cluster vs cluster soft vs soft handling + CL_SELF = 0x0040, ///Cluster soft body self collision + /* presets */ + Default = SDF_RS, + END + };}; + + ///fMaterial + struct fMaterial { enum _ { + DebugDraw = 0x0001, /// Enable debug draw + /* presets */ + Default = DebugDraw, + END + };}; + + // + // API Types + // + + /* sRayCast */ + struct sRayCast + { + btSoftBody* body; /// soft body + eFeature::_ feature; /// feature type + int index; /// feature index + btScalar fraction; /// time of impact fraction (rayorg+(rayto-rayfrom)*fraction) + }; + + /* ImplicitFn */ + struct ImplicitFn + { + virtual btScalar Eval(const btVector3& x)=0; + }; + + // + // Internal types + // + + typedef btAlignedObjectArray tScalarArray; + typedef btAlignedObjectArray tVector3Array; + + /* sCti is Softbody contact info */ + struct sCti + { + btCollisionObject* m_colObj; /* Rigid body */ + btVector3 m_normal; /* Outward normal */ + btScalar m_offset; /* Offset from origin */ + }; + + /* sMedium */ + struct sMedium + { + btVector3 m_velocity; /* Velocity */ + btScalar m_pressure; /* Pressure */ + btScalar m_density; /* Density */ + }; + + /* Base type */ + struct Element + { + void* m_tag; // User data + Element() : m_tag(0) {} + }; + /* Material */ + struct Material : Element + { + btScalar m_kLST; // Linear stiffness coefficient [0,1] + btScalar m_kAST; // Area/Angular stiffness coefficient [0,1] + btScalar m_kVST; // Volume stiffness coefficient [0,1] + int m_flags; // Flags + }; + + /* Feature */ + struct Feature : Element + { + Material* m_material; // Material + }; + /* Node */ + struct Node : Feature + { + btVector3 m_x; // Position + btVector3 m_q; // Previous step position + btVector3 m_v; // Velocity + btVector3 m_f; // Force accumulator + btVector3 m_n; // Normal + btScalar m_im; // 1/mass + btScalar m_area; // Area + btDbvtNode* m_leaf; // Leaf data + int m_battach:1; // Attached + }; + /* Link */ + struct Link : Feature + { + Node* m_n[2]; // Node pointers + btScalar m_rl; // Rest length + int m_bbending:1; // Bending link + btScalar m_c0; // (ima+imb)*kLST + btScalar m_c1; // rl^2 + btScalar m_c2; // |gradient|^2/c0 + btVector3 m_c3; // gradient + }; + /* Face */ + struct Face : Feature + { + Node* m_n[3]; // Node pointers + btVector3 m_normal; // Normal + btScalar m_ra; // Rest area + btDbvtNode* m_leaf; // Leaf data + }; + /* Tetra */ + struct Tetra : Feature + { + Node* m_n[4]; // Node pointers + btScalar m_rv; // Rest volume + btDbvtNode* m_leaf; // Leaf data + btVector3 m_c0[4]; // gradients + btScalar m_c1; // (4*kVST)/(im0+im1+im2+im3) + btScalar m_c2; // m_c1/sum(|g0..3|^2) + }; + /* RContact */ + struct RContact + { + sCti m_cti; // Contact infos + Node* m_node; // Owner node + btMatrix3x3 m_c0; // Impulse matrix + btVector3 m_c1; // Relative anchor + btScalar m_c2; // ima*dt + btScalar m_c3; // Friction + btScalar m_c4; // Hardness + }; + /* SContact */ + struct SContact + { + Node* m_node; // Node + Face* m_face; // Face + btVector3 m_weights; // Weigths + btVector3 m_normal; // Normal + btScalar m_margin; // Margin + btScalar m_friction; // Friction + btScalar m_cfm[2]; // Constraint force mixing + }; + /* Anchor */ + struct Anchor + { + Node* m_node; // Node pointer + btVector3 m_local; // Anchor position in body space + btRigidBody* m_body; // Body + btMatrix3x3 m_c0; // Impulse matrix + btVector3 m_c1; // Relative anchor + btScalar m_c2; // ima*dt + }; + /* Note */ + struct Note : Element + { + const char* m_text; // Text + btVector3 m_offset; // Offset + int m_rank; // Rank + Node* m_nodes[4]; // Nodes + btScalar m_coords[4]; // Coordinates + }; + /* Pose */ + struct Pose + { + bool m_bvolume; // Is valid + bool m_bframe; // Is frame + btScalar m_volume; // Rest volume + tVector3Array m_pos; // Reference positions + tScalarArray m_wgh; // Weights + btVector3 m_com; // COM + btMatrix3x3 m_rot; // Rotation + btMatrix3x3 m_scl; // Scale + btMatrix3x3 m_aqq; // Base scaling + }; + /* Cluster */ + struct Cluster + { + btAlignedObjectArray m_nodes; + tScalarArray m_masses; + tVector3Array m_framerefs; + btTransform m_framexform; + btScalar m_idmass; + btScalar m_imass; + btMatrix3x3 m_locii; + btMatrix3x3 m_invwi; + btVector3 m_com; + btVector3 m_vimpulses[2]; + btVector3 m_dimpulses[2]; + int m_nvimpulses; + int m_ndimpulses; + btVector3 m_lv; + btVector3 m_av; + btDbvtNode* m_leaf; + btScalar m_ndamping; /* Node damping */ + btScalar m_ldamping; /* Linear damping */ + btScalar m_adamping; /* Angular damping */ + btScalar m_matching; + btScalar m_maxSelfCollisionImpulse; + btScalar m_selfCollisionImpulseFactor; + bool m_containsAnchor; + bool m_collide; + int m_clusterIndex; + Cluster() : m_leaf(0),m_ndamping(0),m_ldamping(0),m_adamping(0),m_matching(0) + ,m_maxSelfCollisionImpulse(100.f), + m_selfCollisionImpulseFactor(0.01f), + m_containsAnchor(false) + {} + }; + /* Impulse */ + struct Impulse + { + btVector3 m_velocity; + btVector3 m_drift; + int m_asVelocity:1; + int m_asDrift:1; + Impulse() : m_velocity(0,0,0),m_drift(0,0,0),m_asVelocity(0),m_asDrift(0) {} + Impulse operator -() const + { + Impulse i=*this; + i.m_velocity=-i.m_velocity; + i.m_drift=-i.m_drift; + return(i); + } + Impulse operator*(btScalar x) const + { + Impulse i=*this; + i.m_velocity*=x; + i.m_drift*=x; + return(i); + } + }; + /* Body */ + struct Body + { + Cluster* m_soft; + btRigidBody* m_rigid; + btCollisionObject* m_collisionObject; + + Body() : m_soft(0),m_rigid(0),m_collisionObject(0) {} + Body(Cluster* p) : m_soft(p),m_rigid(0),m_collisionObject(0) {} + Body(btCollisionObject* colObj) : m_soft(0),m_collisionObject(colObj) + { + m_rigid = btRigidBody::upcast(m_collisionObject); + } + + void activate() const + { + if(m_rigid) m_rigid->activate(); + } + const btMatrix3x3& invWorldInertia() const + { + static const btMatrix3x3 iwi(0,0,0,0,0,0,0,0,0); + if(m_rigid) return(m_rigid->getInvInertiaTensorWorld()); + if(m_soft) return(m_soft->m_invwi); + return(iwi); + } + btScalar invMass() const + { + if(m_rigid) return(m_rigid->getInvMass()); + if(m_soft) return(m_soft->m_imass); + return(0); + } + const btTransform& xform() const + { + static const btTransform identity=btTransform::getIdentity(); + if(m_collisionObject) return(m_collisionObject->getInterpolationWorldTransform()); + if(m_soft) return(m_soft->m_framexform); + return(identity); + } + btVector3 linearVelocity() const + { + if(m_rigid) return(m_rigid->getLinearVelocity()); + if(m_soft) return(m_soft->m_lv); + return(btVector3(0,0,0)); + } + btVector3 angularVelocity(const btVector3& rpos) const + { + if(m_rigid) return(btCross(m_rigid->getAngularVelocity(),rpos)); + if(m_soft) return(btCross(m_soft->m_av,rpos)); + return(btVector3(0,0,0)); + } + btVector3 angularVelocity() const + { + if(m_rigid) return(m_rigid->getAngularVelocity()); + if(m_soft) return(m_soft->m_av); + return(btVector3(0,0,0)); + } + btVector3 velocity(const btVector3& rpos) const + { + return(linearVelocity()+angularVelocity(rpos)); + } + void applyVImpulse(const btVector3& impulse,const btVector3& rpos) const + { + if(m_rigid) m_rigid->applyImpulse(impulse,rpos); + if(m_soft) btSoftBody::clusterVImpulse(m_soft,rpos,impulse); + } + void applyDImpulse(const btVector3& impulse,const btVector3& rpos) const + { + if(m_rigid) m_rigid->applyImpulse(impulse,rpos); + if(m_soft) btSoftBody::clusterDImpulse(m_soft,rpos,impulse); + } + void applyImpulse(const Impulse& impulse,const btVector3& rpos) const + { + if(impulse.m_asVelocity) + { +// printf("impulse.m_velocity = %f,%f,%f\n",impulse.m_velocity.getX(),impulse.m_velocity.getY(),impulse.m_velocity.getZ()); + applyVImpulse(impulse.m_velocity,rpos); + } + if(impulse.m_asDrift) + { +// printf("impulse.m_drift = %f,%f,%f\n",impulse.m_drift.getX(),impulse.m_drift.getY(),impulse.m_drift.getZ()); + applyDImpulse(impulse.m_drift,rpos); + } + } + void applyVAImpulse(const btVector3& impulse) const + { + if(m_rigid) m_rigid->applyTorqueImpulse(impulse); + if(m_soft) btSoftBody::clusterVAImpulse(m_soft,impulse); + } + void applyDAImpulse(const btVector3& impulse) const + { + if(m_rigid) m_rigid->applyTorqueImpulse(impulse); + if(m_soft) btSoftBody::clusterDAImpulse(m_soft,impulse); + } + void applyAImpulse(const Impulse& impulse) const + { + if(impulse.m_asVelocity) applyVAImpulse(impulse.m_velocity); + if(impulse.m_asDrift) applyDAImpulse(impulse.m_drift); + } + void applyDCImpulse(const btVector3& impulse) const + { + if(m_rigid) m_rigid->applyCentralImpulse(impulse); + if(m_soft) btSoftBody::clusterDCImpulse(m_soft,impulse); + } + }; + /* Joint */ + struct Joint + { + struct eType { enum _ { + Linear, + Angular, + Contact + };}; + struct Specs + { + Specs() : erp(1),cfm(1),split(1) {} + btScalar erp; + btScalar cfm; + btScalar split; + }; + Body m_bodies[2]; + btVector3 m_refs[2]; + btScalar m_cfm; + btScalar m_erp; + btScalar m_split; + btVector3 m_drift; + btVector3 m_sdrift; + btMatrix3x3 m_massmatrix; + bool m_delete; + virtual ~Joint() {} + Joint() : m_delete(false) {} + virtual void Prepare(btScalar dt,int iterations); + virtual void Solve(btScalar dt,btScalar sor)=0; + virtual void Terminate(btScalar dt)=0; + virtual eType::_ Type() const=0; + }; + /* LJoint */ + struct LJoint : Joint + { + struct Specs : Joint::Specs + { + btVector3 position; + }; + btVector3 m_rpos[2]; + void Prepare(btScalar dt,int iterations); + void Solve(btScalar dt,btScalar sor); + void Terminate(btScalar dt); + eType::_ Type() const { return(eType::Linear); } + }; + /* AJoint */ + struct AJoint : Joint + { + struct IControl + { + virtual void Prepare(AJoint*) {} + virtual btScalar Speed(AJoint*,btScalar current) { return(current); } + static IControl* Default() { static IControl def;return(&def); } + }; + struct Specs : Joint::Specs + { + Specs() : icontrol(IControl::Default()) {} + btVector3 axis; + IControl* icontrol; + }; + btVector3 m_axis[2]; + IControl* m_icontrol; + void Prepare(btScalar dt,int iterations); + void Solve(btScalar dt,btScalar sor); + void Terminate(btScalar dt); + eType::_ Type() const { return(eType::Angular); } + }; + /* CJoint */ + struct CJoint : Joint + { + int m_life; + int m_maxlife; + btVector3 m_rpos[2]; + btVector3 m_normal; + btScalar m_friction; + void Prepare(btScalar dt,int iterations); + void Solve(btScalar dt,btScalar sor); + void Terminate(btScalar dt); + eType::_ Type() const { return(eType::Contact); } + }; + /* Config */ + struct Config + { + eAeroModel::_ aeromodel; // Aerodynamic model (default: V_Point) + btScalar kVCF; // Velocities correction factor (Baumgarte) + btScalar kDP; // Damping coefficient [0,1] + btScalar kDG; // Drag coefficient [0,+inf] + btScalar kLF; // Lift coefficient [0,+inf] + btScalar kPR; // Pressure coefficient [-inf,+inf] + btScalar kVC; // Volume conversation coefficient [0,+inf] + btScalar kDF; // Dynamic friction coefficient [0,1] + btScalar kMT; // Pose matching coefficient [0,1] + btScalar kCHR; // Rigid contacts hardness [0,1] + btScalar kKHR; // Kinetic contacts hardness [0,1] + btScalar kSHR; // Soft contacts hardness [0,1] + btScalar kAHR; // Anchors hardness [0,1] + btScalar kSRHR_CL; // Soft vs rigid hardness [0,1] (cluster only) + btScalar kSKHR_CL; // Soft vs kinetic hardness [0,1] (cluster only) + btScalar kSSHR_CL; // Soft vs soft hardness [0,1] (cluster only) + btScalar kSR_SPLT_CL; // Soft vs rigid impulse split [0,1] (cluster only) + btScalar kSK_SPLT_CL; // Soft vs rigid impulse split [0,1] (cluster only) + btScalar kSS_SPLT_CL; // Soft vs rigid impulse split [0,1] (cluster only) + btScalar maxvolume; // Maximum volume ratio for pose + btScalar timescale; // Time scale + int viterations; // Velocities solver iterations + int piterations; // Positions solver iterations + int diterations; // Drift solver iterations + int citerations; // Cluster solver iterations + int collisions; // Collisions flags + tVSolverArray m_vsequence; // Velocity solvers sequence + tPSolverArray m_psequence; // Position solvers sequence + tPSolverArray m_dsequence; // Drift solvers sequence + }; + /* SolverState */ + struct SolverState + { + btScalar sdt; // dt*timescale + btScalar isdt; // 1/sdt + btScalar velmrg; // velocity margin + btScalar radmrg; // radial margin + btScalar updmrg; // Update margin + }; + /// RayFromToCaster takes a ray from, ray to (instead of direction!) + struct RayFromToCaster : btDbvt::ICollide + { + btVector3 m_rayFrom; + btVector3 m_rayTo; + btVector3 m_rayNormalizedDirection; + btScalar m_mint; + Face* m_face; + int m_tests; + RayFromToCaster(const btVector3& rayFrom,const btVector3& rayTo,btScalar mxt); + void Process(const btDbvtNode* leaf); + + static inline btScalar rayFromToTriangle(const btVector3& rayFrom, + const btVector3& rayTo, + const btVector3& rayNormalizedDirection, + const btVector3& a, + const btVector3& b, + const btVector3& c, + btScalar maxt=SIMD_INFINITY); + }; + + // + // Typedef's + // + + typedef void (*psolver_t)(btSoftBody*,btScalar,btScalar); + typedef void (*vsolver_t)(btSoftBody*,btScalar); + typedef btAlignedObjectArray tClusterArray; + typedef btAlignedObjectArray tNoteArray; + typedef btAlignedObjectArray tNodeArray; + typedef btAlignedObjectArray tLeafArray; + typedef btAlignedObjectArray tLinkArray; + typedef btAlignedObjectArray tFaceArray; + typedef btAlignedObjectArray tTetraArray; + typedef btAlignedObjectArray tAnchorArray; + typedef btAlignedObjectArray tRContactArray; + typedef btAlignedObjectArray tSContactArray; + typedef btAlignedObjectArray tMaterialArray; + typedef btAlignedObjectArray tJointArray; + typedef btAlignedObjectArray tSoftBodyArray; + + // + // Fields + // + + Config m_cfg; // Configuration + SolverState m_sst; // Solver state + Pose m_pose; // Pose + void* m_tag; // User data + btSoftBodyWorldInfo* m_worldInfo; // World info + tNoteArray m_notes; // Notes + tNodeArray m_nodes; // Nodes + tLinkArray m_links; // Links + tFaceArray m_faces; // Faces + tTetraArray m_tetras; // Tetras + tAnchorArray m_anchors; // Anchors + tRContactArray m_rcontacts; // Rigid contacts + tSContactArray m_scontacts; // Soft contacts + tJointArray m_joints; // Joints + tMaterialArray m_materials; // Materials + btScalar m_timeacc; // Time accumulator + btVector3 m_bounds[2]; // Spatial bounds + bool m_bUpdateRtCst; // Update runtime constants + btDbvt m_ndbvt; // Nodes tree + btDbvt m_fdbvt; // Faces tree + btDbvt m_cdbvt; // Clusters tree + tClusterArray m_clusters; // Clusters + + btAlignedObjectArraym_clusterConnectivity;//cluster connectivity, for self-collision + + btTransform m_initialWorldTransform; + + // + // Api + // + + /* ctor */ + btSoftBody( btSoftBodyWorldInfo* worldInfo,int node_count, + const btVector3* x, + const btScalar* m); + /* dtor */ + virtual ~btSoftBody(); + /* Check for existing link */ + + btAlignedObjectArray m_userIndexMapping; + + btSoftBodyWorldInfo* getWorldInfo() + { + return m_worldInfo; + } + + ///@todo: avoid internal softbody shape hack and move collision code to collision library + virtual void setCollisionShape(btCollisionShape* collisionShape) + { + + } + + bool checkLink( int node0, + int node1) const; + bool checkLink( const Node* node0, + const Node* node1) const; + /* Check for existring face */ + bool checkFace( int node0, + int node1, + int node2) const; + /* Append material */ + Material* appendMaterial(); + /* Append note */ + void appendNote( const char* text, + const btVector3& o, + const btVector4& c=btVector4(1,0,0,0), + Node* n0=0, + Node* n1=0, + Node* n2=0, + Node* n3=0); + void appendNote( const char* text, + const btVector3& o, + Node* feature); + void appendNote( const char* text, + const btVector3& o, + Link* feature); + void appendNote( const char* text, + const btVector3& o, + Face* feature); + /* Append node */ + void appendNode( const btVector3& x,btScalar m); + /* Append link */ + void appendLink(int model=-1,Material* mat=0); + void appendLink( int node0, + int node1, + Material* mat=0, + bool bcheckexist=false); + void appendLink( Node* node0, + Node* node1, + Material* mat=0, + bool bcheckexist=false); + /* Append face */ + void appendFace(int model=-1,Material* mat=0); + void appendFace( int node0, + int node1, + int node2, + Material* mat=0); + void appendTetra(int model,Material* mat); + // + void appendTetra(int node0, + int node1, + int node2, + int node3, + Material* mat=0); + + + /* Append anchor */ + void appendAnchor( int node, + btRigidBody* body, bool disableCollisionBetweenLinkedBodies=false); + /* Append linear joint */ + void appendLinearJoint(const LJoint::Specs& specs,Cluster* body0,Body body1); + void appendLinearJoint(const LJoint::Specs& specs,Body body=Body()); + void appendLinearJoint(const LJoint::Specs& specs,btSoftBody* body); + /* Append linear joint */ + void appendAngularJoint(const AJoint::Specs& specs,Cluster* body0,Body body1); + void appendAngularJoint(const AJoint::Specs& specs,Body body=Body()); + void appendAngularJoint(const AJoint::Specs& specs,btSoftBody* body); + /* Add force (or gravity) to the entire body */ + void addForce( const btVector3& force); + /* Add force (or gravity) to a node of the body */ + void addForce( const btVector3& force, + int node); + /* Add velocity to the entire body */ + void addVelocity( const btVector3& velocity); + + /* Set velocity for the entire body */ + void setVelocity( const btVector3& velocity); + + /* Add velocity to a node of the body */ + void addVelocity( const btVector3& velocity, + int node); + /* Set mass */ + void setMass( int node, + btScalar mass); + /* Get mass */ + btScalar getMass( int node) const; + /* Get total mass */ + btScalar getTotalMass() const; + /* Set total mass (weighted by previous masses) */ + void setTotalMass( btScalar mass, + bool fromfaces=false); + /* Set total density */ + void setTotalDensity(btScalar density); + /* Set volume mass (using tetrahedrons) */ + void setVolumeMass( btScalar mass); + /* Set volume density (using tetrahedrons) */ + void setVolumeDensity( btScalar density); + /* Transform */ + void transform( const btTransform& trs); + /* Translate */ + void translate( const btVector3& trs); + /* Rotate */ + void rotate( const btQuaternion& rot); + /* Scale */ + void scale( const btVector3& scl); + /* Set current state as pose */ + void setPose( bool bvolume, + bool bframe); + /* Return the volume */ + btScalar getVolume() const; + /* Cluster count */ + int clusterCount() const; + /* Cluster center of mass */ + static btVector3 clusterCom(const Cluster* cluster); + btVector3 clusterCom(int cluster) const; + /* Cluster velocity at rpos */ + static btVector3 clusterVelocity(const Cluster* cluster,const btVector3& rpos); + /* Cluster impulse */ + static void clusterVImpulse(Cluster* cluster,const btVector3& rpos,const btVector3& impulse); + static void clusterDImpulse(Cluster* cluster,const btVector3& rpos,const btVector3& impulse); + static void clusterImpulse(Cluster* cluster,const btVector3& rpos,const Impulse& impulse); + static void clusterVAImpulse(Cluster* cluster,const btVector3& impulse); + static void clusterDAImpulse(Cluster* cluster,const btVector3& impulse); + static void clusterAImpulse(Cluster* cluster,const Impulse& impulse); + static void clusterDCImpulse(Cluster* cluster,const btVector3& impulse); + /* Generate bending constraints based on distance in the adjency graph */ + int generateBendingConstraints( int distance, + Material* mat=0); + /* Randomize constraints to reduce solver bias */ + void randomizeConstraints(); + /* Release clusters */ + void releaseCluster(int index); + void releaseClusters(); + /* Generate clusters (K-mean) */ + ///generateClusters with k=0 will create a convex cluster for each tetrahedron or triangle + ///otherwise an approximation will be used (better performance) + int generateClusters(int k,int maxiterations=8192); + /* Refine */ + void refine(ImplicitFn* ifn,btScalar accurary,bool cut); + /* CutLink */ + bool cutLink(int node0,int node1,btScalar position); + bool cutLink(const Node* node0,const Node* node1,btScalar position); + + ///Ray casting using rayFrom and rayTo in worldspace, (not direction!) + bool rayTest(const btVector3& rayFrom, + const btVector3& rayTo, + sRayCast& results); + /* Solver presets */ + void setSolver(eSolverPresets::_ preset); + /* predictMotion */ + void predictMotion(btScalar dt); + /* solveConstraints */ + void solveConstraints(); + /* staticSolve */ + void staticSolve(int iterations); + /* solveCommonConstraints */ + static void solveCommonConstraints(btSoftBody** bodies,int count,int iterations); + /* solveClusters */ + static void solveClusters(const btAlignedObjectArray& bodies); + /* integrateMotion */ + void integrateMotion(); + /* defaultCollisionHandlers */ + void defaultCollisionHandler(btCollisionObject* pco); + void defaultCollisionHandler(btSoftBody* psb); + + // + // Cast + // + + static const btSoftBody* upcast(const btCollisionObject* colObj) + { + if (colObj->getInternalType()==CO_SOFT_BODY) + return (const btSoftBody*)colObj; + return 0; + } + static btSoftBody* upcast(btCollisionObject* colObj) + { + if (colObj->getInternalType()==CO_SOFT_BODY) + return (btSoftBody*)colObj; + return 0; + } + + // + // ::btCollisionObject + // + + virtual void getAabb(btVector3& aabbMin,btVector3& aabbMax) const + { + aabbMin = m_bounds[0]; + aabbMax = m_bounds[1]; + } + // + // Private + // + void pointersToIndices(); + void indicesToPointers(const int* map=0); + + int rayTest(const btVector3& rayFrom,const btVector3& rayTo, + btScalar& mint,eFeature::_& feature,int& index,bool bcountonly) const; + void initializeFaceTree(); + btVector3 evaluateCom() const; + bool checkContact(btCollisionObject* colObj,const btVector3& x,btScalar margin,btSoftBody::sCti& cti) const; + void updateNormals(); + void updateBounds(); + void updatePose(); + void updateConstants(); + void initializeClusters(); + void updateClusters(); + void cleanupClusters(); + void prepareClusters(int iterations); + void solveClusters(btScalar sor); + void applyClusters(bool drift); + void dampClusters(); + void applyForces(); + static void PSolve_Anchors(btSoftBody* psb,btScalar kst,btScalar ti); + static void PSolve_RContacts(btSoftBody* psb,btScalar kst,btScalar ti); + static void PSolve_SContacts(btSoftBody* psb,btScalar,btScalar ti); + static void PSolve_Links(btSoftBody* psb,btScalar kst,btScalar ti); + static void VSolve_Links(btSoftBody* psb,btScalar kst); + static psolver_t getSolver(ePSolver::_ solver); + static vsolver_t getSolver(eVSolver::_ solver); + +}; + + + +#endif //_BT_SOFT_BODY_H diff --git a/extern/bullet2/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp b/extern/bullet2/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp new file mode 100644 index 00000000000..04ee7ea77cf --- /dev/null +++ b/extern/bullet2/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp @@ -0,0 +1,368 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btSoftBodyConcaveCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "BulletCollision/CollisionShapes/btMultiSphereShape.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "BulletCollision/CollisionShapes/btConcaveShape.h" +#include "BulletCollision/CollisionDispatch/btManifoldResult.h" +#include "BulletCollision/NarrowPhaseCollision/btRaycastCallback.h" +#include "BulletCollision/CollisionShapes/btTriangleShape.h" +#include "BulletCollision/CollisionShapes/btSphereShape.h" +#include "BulletCollision/CollisionShapes/btTetrahedronShape.h" +#include "BulletCollision/CollisionShapes/btConvexHullShape.h" + + + +#include "LinearMath/btIDebugDraw.h" +#include "BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h" +#include "BulletSoftBody/btSoftBody.h" + +#define BT_SOFTBODY_TRIANGLE_EXTRUSION btScalar(0.06)//make this configurable + +btSoftBodyConcaveCollisionAlgorithm::btSoftBodyConcaveCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1,bool isSwapped) +: btCollisionAlgorithm(ci), +m_isSwapped(isSwapped), +m_btSoftBodyTriangleCallback(ci.m_dispatcher1,body0,body1,isSwapped) +{ +} + + + +btSoftBodyConcaveCollisionAlgorithm::~btSoftBodyConcaveCollisionAlgorithm() +{ +} + + + +btSoftBodyTriangleCallback::btSoftBodyTriangleCallback(btDispatcher* dispatcher,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped): +m_dispatcher(dispatcher), +m_dispatchInfoPtr(0) +{ + m_softBody = (btSoftBody*) (isSwapped? body1:body0); + m_triBody = isSwapped? body0:body1; + + // + // create the manifold from the dispatcher 'manifold pool' + // + // m_manifoldPtr = m_dispatcher->getNewManifold(m_convexBody,m_triBody); + + clearCache(); +} + +btSoftBodyTriangleCallback::~btSoftBodyTriangleCallback() +{ + clearCache(); + // m_dispatcher->releaseManifold( m_manifoldPtr ); + +} + + +void btSoftBodyTriangleCallback::clearCache() +{ + for (int i=0;im_childShape); + m_softBody->getWorldInfo()->m_sparsesdf.RemoveReferences(tmp->m_childShape);//necessary? + delete tmp->m_childShape; + } + m_shapeCache.clear(); +} + + +void btSoftBodyTriangleCallback::processTriangle(btVector3* triangle,int partId, int triangleIndex) +{ + //just for debugging purposes + //printf("triangle %d",m_triangleCount++); + btCollisionObject* ob = static_cast(m_triBody); + btCollisionAlgorithmConstructionInfo ci; + ci.m_dispatcher1 = m_dispatcher; + + ///debug drawing of the overlapping triangles + if (m_dispatchInfoPtr && m_dispatchInfoPtr->m_debugDraw && m_dispatchInfoPtr->m_debugDraw->getDebugMode() &btIDebugDraw::DBG_DrawWireframe) + { + btVector3 color(1,1,0); + btTransform& tr = ob->getWorldTransform(); + m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[0]),tr(triangle[1]),color); + m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[1]),tr(triangle[2]),color); + m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[2]),tr(triangle[0]),color); + } + + btTriIndex triIndex(partId,triangleIndex,0); + btHashKey triKey(triIndex.getUid()); + + + btTriIndex* shapeIndex = m_shapeCache[triKey]; + if (shapeIndex) + { + btCollisionShape* tm = shapeIndex->m_childShape; + btAssert(tm); + + //copy over user pointers to temporary shape + tm->setUserPointer(ob->getRootCollisionShape()->getUserPointer()); + + btCollisionShape* tmpShape = ob->getCollisionShape(); + ob->internalSetTemporaryCollisionShape( tm ); + + + btCollisionAlgorithm* colAlgo = ci.m_dispatcher1->findAlgorithm(m_softBody,m_triBody,0);//m_manifoldPtr); + + colAlgo->processCollision(m_softBody,m_triBody,*m_dispatchInfoPtr,m_resultOut); + colAlgo->~btCollisionAlgorithm(); + ci.m_dispatcher1->freeCollisionAlgorithm(colAlgo); + ob->internalSetTemporaryCollisionShape( tmpShape); + return; + } + + //aabb filter is already applied! + + //btCollisionObject* colObj = static_cast(m_convexProxy->m_clientObject); + + // if (m_softBody->getCollisionShape()->getShapeType()== + { + // btVector3 other; + btVector3 normal = (triangle[1]-triangle[0]).cross(triangle[2]-triangle[0]); + normal.normalize(); + normal*= BT_SOFTBODY_TRIANGLE_EXTRUSION; + // other=(triangle[0]+triangle[1]+triangle[2])*0.333333f; + // other+=normal*22.f; + btVector3 pts[6] = {triangle[0]+normal, + triangle[1]+normal, + triangle[2]+normal, + triangle[0]-normal, + triangle[1]-normal, + triangle[2]-normal}; + + btConvexHullShape* tm = new btConvexHullShape(&pts[0].getX(),6); + + + // btBU_Simplex1to4 tm(triangle[0],triangle[1],triangle[2],other); + + //btTriangleShape tm(triangle[0],triangle[1],triangle[2]); + // tm.setMargin(m_collisionMarginTriangle); + + //copy over user pointers to temporary shape + tm->setUserPointer(ob->getRootCollisionShape()->getUserPointer()); + + btCollisionShape* tmpShape = ob->getCollisionShape(); + ob->internalSetTemporaryCollisionShape( tm ); + + + btCollisionAlgorithm* colAlgo = ci.m_dispatcher1->findAlgorithm(m_softBody,m_triBody,0);//m_manifoldPtr); + ///this should use the btDispatcher, so the actual registered algorithm is used + // btConvexConvexAlgorithm cvxcvxalgo(m_manifoldPtr,ci,m_convexBody,m_triBody); + + //m_resultOut->setShapeIdentifiersB(partId,triangleIndex); + // cvxcvxalgo.processCollision(m_convexBody,m_triBody,*m_dispatchInfoPtr,m_resultOut); + colAlgo->processCollision(m_softBody,m_triBody,*m_dispatchInfoPtr,m_resultOut); + colAlgo->~btCollisionAlgorithm(); + ci.m_dispatcher1->freeCollisionAlgorithm(colAlgo); + + + ob->internalSetTemporaryCollisionShape( tmpShape ); + triIndex.m_childShape = tm; + m_shapeCache.insert(triKey,triIndex); + + } + + + +} + + + +void btSoftBodyTriangleCallback::setTimeStepAndCounters(btScalar collisionMarginTriangle,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + m_dispatchInfoPtr = &dispatchInfo; + m_collisionMarginTriangle = collisionMarginTriangle+btScalar(BT_SOFTBODY_TRIANGLE_EXTRUSION); + m_resultOut = resultOut; + + + btVector3 aabbWorldSpaceMin,aabbWorldSpaceMax; + m_softBody->getAabb(aabbWorldSpaceMin,aabbWorldSpaceMax); + btVector3 halfExtents = (aabbWorldSpaceMax-aabbWorldSpaceMin)*btScalar(0.5); + btVector3 softBodyCenter = (aabbWorldSpaceMax+aabbWorldSpaceMin)*btScalar(0.5); + + btTransform softTransform; + softTransform.setIdentity(); + softTransform.setOrigin(softBodyCenter); + + btTransform convexInTriangleSpace; + convexInTriangleSpace = m_triBody->getWorldTransform().inverse() * softTransform; + btTransformAabb(halfExtents,m_collisionMarginTriangle,convexInTriangleSpace,m_aabbMin,m_aabbMax); +} + +void btSoftBodyConcaveCollisionAlgorithm::clearCache() +{ + m_btSoftBodyTriangleCallback.clearCache(); + +} + +void btSoftBodyConcaveCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + + + //btCollisionObject* convexBody = m_isSwapped ? body1 : body0; + btCollisionObject* triBody = m_isSwapped ? body0 : body1; + + if (triBody->getCollisionShape()->isConcave()) + { + + + btCollisionObject* triOb = triBody; + btConcaveShape* concaveShape = static_cast( triOb->getCollisionShape()); + + // if (convexBody->getCollisionShape()->isConvex()) + { + btScalar collisionMarginTriangle = concaveShape->getMargin(); + + // resultOut->setPersistentManifold(m_btSoftBodyTriangleCallback.m_manifoldPtr); + m_btSoftBodyTriangleCallback.setTimeStepAndCounters(collisionMarginTriangle,dispatchInfo,resultOut); + + //Disable persistency. previously, some older algorithm calculated all contacts in one go, so you can clear it here. + //m_dispatcher->clearManifold(m_btSoftBodyTriangleCallback.m_manifoldPtr); + + // m_btSoftBodyTriangleCallback.m_manifoldPtr->setBodies(convexBody,triBody); + + + concaveShape->processAllTriangles( &m_btSoftBodyTriangleCallback,m_btSoftBodyTriangleCallback.getAabbMin(),m_btSoftBodyTriangleCallback.getAabbMax()); + + // resultOut->refreshContactPoints(); + + } + + } + +} + + +btScalar btSoftBodyConcaveCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + (void)resultOut; + (void)dispatchInfo; + btCollisionObject* convexbody = m_isSwapped ? body1 : body0; + btCollisionObject* triBody = m_isSwapped ? body0 : body1; + + + //quick approximation using raycast, todo: hook up to the continuous collision detection (one of the btConvexCast) + + //only perform CCD above a certain threshold, this prevents blocking on the long run + //because object in a blocked ccd state (hitfraction<1) get their linear velocity halved each frame... + btScalar squareMot0 = (convexbody->getInterpolationWorldTransform().getOrigin() - convexbody->getWorldTransform().getOrigin()).length2(); + if (squareMot0 < convexbody->getCcdSquareMotionThreshold()) + { + return btScalar(1.); + } + + //const btVector3& from = convexbody->m_worldTransform.getOrigin(); + //btVector3 to = convexbody->m_interpolationWorldTransform.getOrigin(); + //todo: only do if the motion exceeds the 'radius' + + btTransform triInv = triBody->getWorldTransform().inverse(); + btTransform convexFromLocal = triInv * convexbody->getWorldTransform(); + btTransform convexToLocal = triInv * convexbody->getInterpolationWorldTransform(); + + struct LocalTriangleSphereCastCallback : public btTriangleCallback + { + btTransform m_ccdSphereFromTrans; + btTransform m_ccdSphereToTrans; + btTransform m_meshTransform; + + btScalar m_ccdSphereRadius; + btScalar m_hitFraction; + + + LocalTriangleSphereCastCallback(const btTransform& from,const btTransform& to,btScalar ccdSphereRadius,btScalar hitFraction) + :m_ccdSphereFromTrans(from), + m_ccdSphereToTrans(to), + m_ccdSphereRadius(ccdSphereRadius), + m_hitFraction(hitFraction) + { + } + + + virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex) + { + (void)partId; + (void)triangleIndex; + //do a swept sphere for now + btTransform ident; + ident.setIdentity(); + btConvexCast::CastResult castResult; + castResult.m_fraction = m_hitFraction; + btSphereShape pointShape(m_ccdSphereRadius); + btTriangleShape triShape(triangle[0],triangle[1],triangle[2]); + btVoronoiSimplexSolver simplexSolver; + btSubsimplexConvexCast convexCaster(&pointShape,&triShape,&simplexSolver); + //GjkConvexCast convexCaster(&pointShape,convexShape,&simplexSolver); + //ContinuousConvexCollision convexCaster(&pointShape,convexShape,&simplexSolver,0); + //local space? + + if (convexCaster.calcTimeOfImpact(m_ccdSphereFromTrans,m_ccdSphereToTrans, + ident,ident,castResult)) + { + if (m_hitFraction > castResult.m_fraction) + m_hitFraction = castResult.m_fraction; + } + + } + + }; + + + + + + if (triBody->getCollisionShape()->isConcave()) + { + btVector3 rayAabbMin = convexFromLocal.getOrigin(); + rayAabbMin.setMin(convexToLocal.getOrigin()); + btVector3 rayAabbMax = convexFromLocal.getOrigin(); + rayAabbMax.setMax(convexToLocal.getOrigin()); + btScalar ccdRadius0 = convexbody->getCcdSweptSphereRadius(); + rayAabbMin -= btVector3(ccdRadius0,ccdRadius0,ccdRadius0); + rayAabbMax += btVector3(ccdRadius0,ccdRadius0,ccdRadius0); + + btScalar curHitFraction = btScalar(1.); //is this available? + LocalTriangleSphereCastCallback raycastCallback(convexFromLocal,convexToLocal, + convexbody->getCcdSweptSphereRadius(),curHitFraction); + + raycastCallback.m_hitFraction = convexbody->getHitFraction(); + + btCollisionObject* concavebody = triBody; + + btConcaveShape* triangleMesh = (btConcaveShape*) concavebody->getCollisionShape(); + + if (triangleMesh) + { + triangleMesh->processAllTriangles(&raycastCallback,rayAabbMin,rayAabbMax); + } + + + + if (raycastCallback.m_hitFraction < convexbody->getHitFraction()) + { + convexbody->setHitFraction( raycastCallback.m_hitFraction); + return raycastCallback.m_hitFraction; + } + } + + return btScalar(1.); + +} diff --git a/extern/bullet2/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h b/extern/bullet2/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h new file mode 100644 index 00000000000..a6ea33717bc --- /dev/null +++ b/extern/bullet2/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h @@ -0,0 +1,153 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SOFT_BODY_CONCAVE_COLLISION_ALGORITHM_H +#define SOFT_BODY_CONCAVE_COLLISION_ALGORITHM_H + +#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" +#include "BulletCollision/BroadphaseCollision/btDispatcher.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h" +#include "BulletCollision/CollisionShapes/btTriangleCallback.h" +#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" +class btDispatcher; +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" +class btSoftBody; +class btCollisionShape; + +#include "LinearMath/btHashMap.h" + +#include "BulletCollision/BroadphaseCollision/btQuantizedBvh.h" //for definition of MAX_NUM_PARTS_IN_BITS + +struct btTriIndex +{ + int m_PartIdTriangleIndex; + class btCollisionShape* m_childShape; + + btTriIndex(int partId,int triangleIndex,btCollisionShape* shape) + { + m_PartIdTriangleIndex = (partId<<(31-MAX_NUM_PARTS_IN_BITS)) | triangleIndex; + m_childShape = shape; + } + + int getTriangleIndex() const + { + // Get only the lower bits where the triangle index is stored + return (m_PartIdTriangleIndex&~((~0)<<(31-MAX_NUM_PARTS_IN_BITS))); + } + int getPartId() const + { + // Get only the highest bits where the part index is stored + return (m_PartIdTriangleIndex>>(31-MAX_NUM_PARTS_IN_BITS)); + } + int getUid() const + { + return m_PartIdTriangleIndex; + } +}; + + +///For each triangle in the concave mesh that overlaps with the AABB of a soft body (m_softBody), processTriangle is called. +class btSoftBodyTriangleCallback : public btTriangleCallback +{ + btSoftBody* m_softBody; + btCollisionObject* m_triBody; + + btVector3 m_aabbMin; + btVector3 m_aabbMax ; + + btManifoldResult* m_resultOut; + + btDispatcher* m_dispatcher; + const btDispatcherInfo* m_dispatchInfoPtr; + btScalar m_collisionMarginTriangle; + + btHashMap,btTriIndex> m_shapeCache; + +public: + int m_triangleCount; + + // btPersistentManifold* m_manifoldPtr; + + btSoftBodyTriangleCallback(btDispatcher* dispatcher,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped); + + void setTimeStepAndCounters(btScalar collisionMarginTriangle,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual ~btSoftBodyTriangleCallback(); + + virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex); + + void clearCache(); + + SIMD_FORCE_INLINE const btVector3& getAabbMin() const + { + return m_aabbMin; + } + SIMD_FORCE_INLINE const btVector3& getAabbMax() const + { + return m_aabbMax; + } + +}; + + + + +/// btSoftBodyConcaveCollisionAlgorithm supports collision between soft body shapes and (concave) trianges meshes. +class btSoftBodyConcaveCollisionAlgorithm : public btCollisionAlgorithm +{ + + bool m_isSwapped; + + btSoftBodyTriangleCallback m_btSoftBodyTriangleCallback; + +public: + + btSoftBodyConcaveCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped); + + virtual ~btSoftBodyConcaveCollisionAlgorithm(); + + virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual void getAllContactManifolds(btManifoldArray& manifoldArray) + { + //we don't add any manifolds + } + + void clearCache(); + + struct CreateFunc :public btCollisionAlgorithmCreateFunc + { + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) + { + void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSoftBodyConcaveCollisionAlgorithm)); + return new(mem) btSoftBodyConcaveCollisionAlgorithm(ci,body0,body1,false); + } + }; + + struct SwappedCreateFunc :public btCollisionAlgorithmCreateFunc + { + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) + { + void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSoftBodyConcaveCollisionAlgorithm)); + return new(mem) btSoftBodyConcaveCollisionAlgorithm(ci,body0,body1,true); + } + }; + +}; + +#endif //SOFT_BODY_CONCAVE_COLLISION_ALGORITHM_H diff --git a/extern/bullet2/BulletSoftBody/btSoftBodyHelpers.cpp b/extern/bullet2/BulletSoftBody/btSoftBodyHelpers.cpp new file mode 100644 index 00000000000..516485bf4e5 --- /dev/null +++ b/extern/bullet2/BulletSoftBody/btSoftBodyHelpers.cpp @@ -0,0 +1,1019 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ +///btSoftBodyHelpers.cpp by Nathanael Presson + +#include "btSoftBodyInternals.h" +#include +#include +#include "btSoftBodyHelpers.h" +#include "LinearMath/btConvexHull.h" + +// +static void drawVertex( btIDebugDraw* idraw, + const btVector3& x,btScalar s,const btVector3& c) +{ + idraw->drawLine(x-btVector3(s,0,0),x+btVector3(s,0,0),c); + idraw->drawLine(x-btVector3(0,s,0),x+btVector3(0,s,0),c); + idraw->drawLine(x-btVector3(0,0,s),x+btVector3(0,0,s),c); +} + +// +static void drawBox( btIDebugDraw* idraw, + const btVector3& mins, + const btVector3& maxs, + const btVector3& color) +{ + const btVector3 c[]={ btVector3(mins.x(),mins.y(),mins.z()), + btVector3(maxs.x(),mins.y(),mins.z()), + btVector3(maxs.x(),maxs.y(),mins.z()), + btVector3(mins.x(),maxs.y(),mins.z()), + btVector3(mins.x(),mins.y(),maxs.z()), + btVector3(maxs.x(),mins.y(),maxs.z()), + btVector3(maxs.x(),maxs.y(),maxs.z()), + btVector3(mins.x(),maxs.y(),maxs.z())}; + idraw->drawLine(c[0],c[1],color);idraw->drawLine(c[1],c[2],color); + idraw->drawLine(c[2],c[3],color);idraw->drawLine(c[3],c[0],color); + idraw->drawLine(c[4],c[5],color);idraw->drawLine(c[5],c[6],color); + idraw->drawLine(c[6],c[7],color);idraw->drawLine(c[7],c[4],color); + idraw->drawLine(c[0],c[4],color);idraw->drawLine(c[1],c[5],color); + idraw->drawLine(c[2],c[6],color);idraw->drawLine(c[3],c[7],color); +} + +// +static void drawTree( btIDebugDraw* idraw, + const btDbvtNode* node, + int depth, + const btVector3& ncolor, + const btVector3& lcolor, + int mindepth, + int maxdepth) +{ + if(node) + { + if(node->isinternal()&&((depthchilds[0],depth+1,ncolor,lcolor,mindepth,maxdepth); + drawTree(idraw,node->childs[1],depth+1,ncolor,lcolor,mindepth,maxdepth); + } + if(depth>=mindepth) + { + const btScalar scl=(btScalar)(node->isinternal()?1:1); + const btVector3 mi=node->volume.Center()-node->volume.Extents()*scl; + const btVector3 mx=node->volume.Center()+node->volume.Extents()*scl; + drawBox(idraw,mi,mx,node->isleaf()?lcolor:ncolor); + } + } +} + +// +template +static inline T sum(const btAlignedObjectArray& items) +{ + T v; + if(items.size()) + { + v=items[0]; + for(int i=1,ni=items.size();i +static inline void add(btAlignedObjectArray& items,const Q& value) +{ + for(int i=0,ni=items.size();i +static inline void mul(btAlignedObjectArray& items,const Q& value) +{ + for(int i=0,ni=items.size();i +static inline T average(const btAlignedObjectArray& items) +{ + const btScalar n=(btScalar)(items.size()>0?items.size():1); + return(sum(items)/n); +} + +// +static inline btScalar tetravolume(const btVector3& x0, + const btVector3& x1, + const btVector3& x2, + const btVector3& x3) +{ + const btVector3 a=x1-x0; + const btVector3 b=x2-x0; + const btVector3 c=x3-x0; + return(btDot(a,btCross(b,c))); +} + +// +#if 0 +static btVector3 stresscolor(btScalar stress) +{ + static const btVector3 spectrum[]= { btVector3(1,0,1), + btVector3(0,0,1), + btVector3(0,1,1), + btVector3(0,1,0), + btVector3(1,1,0), + btVector3(1,0,0), + btVector3(1,0,0)}; + static const int ncolors=sizeof(spectrum)/sizeof(spectrum[0])-1; + static const btScalar one=1; + stress=btMax(0,btMin(1,stress))*ncolors; + const int sel=(int)stress; + const btScalar frc=stress-sel; + return(spectrum[sel]+(spectrum[sel+1]-spectrum[sel])*frc); +} +#endif + +// +void btSoftBodyHelpers::Draw( btSoftBody* psb, + btIDebugDraw* idraw, + int drawflags) +{ + const btScalar scl=(btScalar)0.1; + const btScalar nscl=scl*5; + const btVector3 lcolor=btVector3(0,0,0); + const btVector3 ncolor=btVector3(1,1,1); + const btVector3 ccolor=btVector3(1,0,0); + int i,j,nj; + + /* Nodes */ + if(0!=(drawflags&fDrawFlags::Nodes)) + { + for(i=0;im_nodes.size();++i) + { + const btSoftBody::Node& n=psb->m_nodes[i]; + if(0==(n.m_material->m_flags&btSoftBody::fMaterial::DebugDraw)) continue; + idraw->drawLine(n.m_x-btVector3(scl,0,0),n.m_x+btVector3(scl,0,0),btVector3(1,0,0)); + idraw->drawLine(n.m_x-btVector3(0,scl,0),n.m_x+btVector3(0,scl,0),btVector3(0,1,0)); + idraw->drawLine(n.m_x-btVector3(0,0,scl),n.m_x+btVector3(0,0,scl),btVector3(0,0,1)); + } + } + /* Links */ + if(0!=(drawflags&fDrawFlags::Links)) + { + for(i=0;im_links.size();++i) + { + const btSoftBody::Link& l=psb->m_links[i]; + if(0==(l.m_material->m_flags&btSoftBody::fMaterial::DebugDraw)) continue; + idraw->drawLine(l.m_n[0]->m_x,l.m_n[1]->m_x,lcolor); + } + } + /* Normals */ + if(0!=(drawflags&fDrawFlags::Normals)) + { + for(i=0;im_nodes.size();++i) + { + const btSoftBody::Node& n=psb->m_nodes[i]; + if(0==(n.m_material->m_flags&btSoftBody::fMaterial::DebugDraw)) continue; + const btVector3 d=n.m_n*nscl; + idraw->drawLine(n.m_x,n.m_x+d,ncolor); + idraw->drawLine(n.m_x,n.m_x-d,ncolor*0.5); + } + } + /* Contacts */ + if(0!=(drawflags&fDrawFlags::Contacts)) + { + static const btVector3 axis[]={btVector3(1,0,0), + btVector3(0,1,0), + btVector3(0,0,1)}; + for(i=0;im_rcontacts.size();++i) + { + const btSoftBody::RContact& c=psb->m_rcontacts[i]; + const btVector3 o= c.m_node->m_x-c.m_cti.m_normal* + (btDot(c.m_node->m_x,c.m_cti.m_normal)+c.m_cti.m_offset); + const btVector3 x=btCross(c.m_cti.m_normal,axis[c.m_cti.m_normal.minAxis()]).normalized(); + const btVector3 y=btCross(x,c.m_cti.m_normal).normalized(); + idraw->drawLine(o-x*nscl,o+x*nscl,ccolor); + idraw->drawLine(o-y*nscl,o+y*nscl,ccolor); + idraw->drawLine(o,o+c.m_cti.m_normal*nscl*3,btVector3(1,1,0)); + } + } + /* Anchors */ + if(0!=(drawflags&fDrawFlags::Anchors)) + { + for(i=0;im_anchors.size();++i) + { + const btSoftBody::Anchor& a=psb->m_anchors[i]; + const btVector3 q=a.m_body->getWorldTransform()*a.m_local; + drawVertex(idraw,a.m_node->m_x,0.25,btVector3(1,0,0)); + drawVertex(idraw,q,0.25,btVector3(0,1,0)); + idraw->drawLine(a.m_node->m_x,q,btVector3(1,1,1)); + } + for(i=0;im_nodes.size();++i) + { + const btSoftBody::Node& n=psb->m_nodes[i]; + if(0==(n.m_material->m_flags&btSoftBody::fMaterial::DebugDraw)) continue; + if(n.m_im<=0) + { + drawVertex(idraw,n.m_x,0.25,btVector3(1,0,0)); + } + } + } + /* Faces */ + if(0!=(drawflags&fDrawFlags::Faces)) + { + const btScalar scl=(btScalar)0.8; + const btScalar alp=(btScalar)1; + const btVector3 col(0,(btScalar)0.7,0); + for(i=0;im_faces.size();++i) + { + const btSoftBody::Face& f=psb->m_faces[i]; + if(0==(f.m_material->m_flags&btSoftBody::fMaterial::DebugDraw)) continue; + const btVector3 x[]={f.m_n[0]->m_x,f.m_n[1]->m_x,f.m_n[2]->m_x}; + const btVector3 c=(x[0]+x[1]+x[2])/3; + idraw->drawTriangle((x[0]-c)*scl+c, + (x[1]-c)*scl+c, + (x[2]-c)*scl+c, + col,alp); + } + } + /* Clusters */ + if(0!=(drawflags&fDrawFlags::Clusters)) + { + srand(1806); + for(i=0;im_clusters.size();++i) + { + if(psb->m_clusters[i]->m_collide) + { + btVector3 color( rand()/(btScalar)RAND_MAX, + rand()/(btScalar)RAND_MAX, + rand()/(btScalar)RAND_MAX); + color=color.normalized()*0.75; + btAlignedObjectArray vertices; + vertices.resize(psb->m_clusters[i]->m_nodes.size()); + for(j=0,nj=vertices.size();jm_clusters[i]->m_nodes[j]->m_x; + } + HullDesc hdsc(QF_TRIANGLES,vertices.size(),&vertices[0]); + HullResult hres; + HullLibrary hlib; + hdsc.mMaxVertices=vertices.size(); + hlib.CreateConvexHull(hdsc,hres); + const btVector3 center=average(hres.m_OutputVertices); + add(hres.m_OutputVertices,-center); + mul(hres.m_OutputVertices,(btScalar)1); + add(hres.m_OutputVertices,center); + for(j=0;j<(int)hres.mNumFaces;++j) + { + const int idx[]={hres.m_Indices[j*3+0],hres.m_Indices[j*3+1],hres.m_Indices[j*3+2]}; + idraw->drawTriangle(hres.m_OutputVertices[idx[0]], + hres.m_OutputVertices[idx[1]], + hres.m_OutputVertices[idx[2]], + color,1); + } + hlib.ReleaseResult(hres); + } + /* Velocities */ +#if 0 + for(int j=0;jm_clusters[i].m_nodes.size();++j) + { + const btSoftBody::Cluster& c=psb->m_clusters[i]; + const btVector3 r=c.m_nodes[j]->m_x-c.m_com; + const btVector3 v=c.m_lv+btCross(c.m_av,r); + idraw->drawLine(c.m_nodes[j]->m_x,c.m_nodes[j]->m_x+v,btVector3(1,0,0)); + } +#endif + /* Frame */ + btSoftBody::Cluster& c=*psb->m_clusters[i]; + idraw->drawLine(c.m_com,c.m_framexform*btVector3(10,0,0),btVector3(1,0,0)); + idraw->drawLine(c.m_com,c.m_framexform*btVector3(0,10,0),btVector3(0,1,0)); + idraw->drawLine(c.m_com,c.m_framexform*btVector3(0,0,10),btVector3(0,0,1)); + } + } + + /* Tetras */ + if(0!=(drawflags&fDrawFlags::Tetras)) + { + const btScalar scl=(btScalar)0.8; + const btScalar alp=(btScalar)1; + const btVector3 col((btScalar)0.7,(btScalar)0.7,(btScalar)0.7); + for(int i=0;im_tetras.size();++i) + { + const btSoftBody::Tetra& t=psb->m_tetras[i]; + if(0==(t.m_material->m_flags&btSoftBody::fMaterial::DebugDraw)) continue; + const btVector3 x[]={t.m_n[0]->m_x,t.m_n[1]->m_x,t.m_n[2]->m_x,t.m_n[3]->m_x}; + const btVector3 c=(x[0]+x[1]+x[2]+x[3])/4; + idraw->drawTriangle((x[0]-c)*scl+c,(x[1]-c)*scl+c,(x[2]-c)*scl+c,col,alp); + idraw->drawTriangle((x[0]-c)*scl+c,(x[1]-c)*scl+c,(x[3]-c)*scl+c,col,alp); + idraw->drawTriangle((x[1]-c)*scl+c,(x[2]-c)*scl+c,(x[3]-c)*scl+c,col,alp); + idraw->drawTriangle((x[2]-c)*scl+c,(x[0]-c)*scl+c,(x[3]-c)*scl+c,col,alp); + } + } + + /* Notes */ + if(0!=(drawflags&fDrawFlags::Notes)) + { + for(i=0;im_notes.size();++i) + { + const btSoftBody::Note& n=psb->m_notes[i]; + btVector3 p=n.m_offset; + for(int j=0;jm_x*n.m_coords[j]; + } + idraw->draw3dText(p,n.m_text); + } + } + /* Node tree */ + if(0!=(drawflags&fDrawFlags::NodeTree)) DrawNodeTree(psb,idraw); + /* Face tree */ + if(0!=(drawflags&fDrawFlags::FaceTree)) DrawFaceTree(psb,idraw); + /* Cluster tree */ + if(0!=(drawflags&fDrawFlags::ClusterTree)) DrawClusterTree(psb,idraw); + /* Joints */ + if(0!=(drawflags&fDrawFlags::Joints)) + { + for(i=0;im_joints.size();++i) + { + const btSoftBody::Joint* pj=psb->m_joints[i]; + switch(pj->Type()) + { + case btSoftBody::Joint::eType::Linear: + { + const btSoftBody::LJoint* pjl=(const btSoftBody::LJoint*)pj; + const btVector3 a0=pj->m_bodies[0].xform()*pjl->m_refs[0]; + const btVector3 a1=pj->m_bodies[1].xform()*pjl->m_refs[1]; + idraw->drawLine(pj->m_bodies[0].xform().getOrigin(),a0,btVector3(1,1,0)); + idraw->drawLine(pj->m_bodies[1].xform().getOrigin(),a1,btVector3(0,1,1)); + drawVertex(idraw,a0,0.25,btVector3(1,1,0)); + drawVertex(idraw,a1,0.25,btVector3(0,1,1)); + } + break; + case btSoftBody::Joint::eType::Angular: + { + //const btSoftBody::AJoint* pja=(const btSoftBody::AJoint*)pj; + const btVector3 o0=pj->m_bodies[0].xform().getOrigin(); + const btVector3 o1=pj->m_bodies[1].xform().getOrigin(); + const btVector3 a0=pj->m_bodies[0].xform().getBasis()*pj->m_refs[0]; + const btVector3 a1=pj->m_bodies[1].xform().getBasis()*pj->m_refs[1]; + idraw->drawLine(o0,o0+a0*10,btVector3(1,1,0)); + idraw->drawLine(o0,o0+a1*10,btVector3(1,1,0)); + idraw->drawLine(o1,o1+a0*10,btVector3(0,1,1)); + idraw->drawLine(o1,o1+a1*10,btVector3(0,1,1)); + break; + } + default: + { + } + + } + } + } +} + +// +void btSoftBodyHelpers::DrawInfos( btSoftBody* psb, + btIDebugDraw* idraw, + bool masses, + bool areas, + bool /*stress*/) +{ + for(int i=0;im_nodes.size();++i) + { + const btSoftBody::Node& n=psb->m_nodes[i]; + char text[2048]={0}; + char buff[1024]; + if(masses) + { + sprintf(buff," M(%.2f)",1/n.m_im); + strcat(text,buff); + } + if(areas) + { + sprintf(buff," A(%.2f)",n.m_area); + strcat(text,buff); + } + if(text[0]) idraw->draw3dText(n.m_x,text); + } +} + +// +void btSoftBodyHelpers::DrawNodeTree( btSoftBody* psb, + btIDebugDraw* idraw, + int mindepth, + int maxdepth) +{ + drawTree(idraw,psb->m_ndbvt.m_root,0,btVector3(1,0,1),btVector3(1,1,1),mindepth,maxdepth); +} + +// +void btSoftBodyHelpers::DrawFaceTree( btSoftBody* psb, + btIDebugDraw* idraw, + int mindepth, + int maxdepth) +{ + drawTree(idraw,psb->m_fdbvt.m_root,0,btVector3(0,1,0),btVector3(1,0,0),mindepth,maxdepth); +} + +// +void btSoftBodyHelpers::DrawClusterTree( btSoftBody* psb, + btIDebugDraw* idraw, + int mindepth, + int maxdepth) +{ + drawTree(idraw,psb->m_cdbvt.m_root,0,btVector3(0,1,1),btVector3(1,0,0),mindepth,maxdepth); +} + +// +void btSoftBodyHelpers::DrawFrame( btSoftBody* psb, + btIDebugDraw* idraw) +{ + if(psb->m_pose.m_bframe) + { + static const btScalar ascl=10; + static const btScalar nscl=(btScalar)0.1; + const btVector3 com=psb->m_pose.m_com; + const btMatrix3x3 trs=psb->m_pose.m_rot*psb->m_pose.m_scl; + const btVector3 Xaxis=(trs*btVector3(1,0,0)).normalized(); + const btVector3 Yaxis=(trs*btVector3(0,1,0)).normalized(); + const btVector3 Zaxis=(trs*btVector3(0,0,1)).normalized(); + idraw->drawLine(com,com+Xaxis*ascl,btVector3(1,0,0)); + idraw->drawLine(com,com+Yaxis*ascl,btVector3(0,1,0)); + idraw->drawLine(com,com+Zaxis*ascl,btVector3(0,0,1)); + for(int i=0;im_pose.m_pos.size();++i) + { + const btVector3 x=com+trs*psb->m_pose.m_pos[i]; + drawVertex(idraw,x,nscl,btVector3(1,0,1)); + } + } +} + +// +btSoftBody* btSoftBodyHelpers::CreateRope( btSoftBodyWorldInfo& worldInfo, const btVector3& from, + const btVector3& to, + int res, + int fixeds) +{ + /* Create nodes */ + const int r=res+2; + btVector3* x=new btVector3[r]; + btScalar* m=new btScalar[r]; + int i; + + for(i=0;isetMass(0,0); + if(fixeds&2) psb->setMass(r-1,0); + delete[] x; + delete[] m; + /* Create links */ + for(i=1;iappendLink(i-1,i); + } + /* Finished */ + return(psb); +} + +// +btSoftBody* btSoftBodyHelpers::CreatePatch(btSoftBodyWorldInfo& worldInfo,const btVector3& corner00, + const btVector3& corner10, + const btVector3& corner01, + const btVector3& corner11, + int resx, + int resy, + int fixeds, + bool gendiags) +{ +#define IDX(_x_,_y_) ((_y_)*rx+(_x_)) + /* Create nodes */ + if((resx<2)||(resy<2)) return(0); + const int rx=resx; + const int ry=resy; + const int tot=rx*ry; + btVector3* x=new btVector3[tot]; + btScalar* m=new btScalar[tot]; + int iy; + + for(iy=0;iysetMass(IDX(0,0),0); + if(fixeds&2) psb->setMass(IDX(rx-1,0),0); + if(fixeds&4) psb->setMass(IDX(0,ry-1),0); + if(fixeds&8) psb->setMass(IDX(rx-1,ry-1),0); + delete[] x; + delete[] m; + /* Create links and faces */ + for(iy=0;iyappendLink(idx,IDX(ix+1,iy)); + if(mdy) psb->appendLink(idx,IDX(ix,iy+1)); + if(mdx&&mdy) + { + if((ix+iy)&1) + { + psb->appendFace(IDX(ix,iy),IDX(ix+1,iy),IDX(ix+1,iy+1)); + psb->appendFace(IDX(ix,iy),IDX(ix+1,iy+1),IDX(ix,iy+1)); + if(gendiags) + { + psb->appendLink(IDX(ix,iy),IDX(ix+1,iy+1)); + } + } + else + { + psb->appendFace(IDX(ix,iy+1),IDX(ix,iy),IDX(ix+1,iy)); + psb->appendFace(IDX(ix,iy+1),IDX(ix+1,iy),IDX(ix+1,iy+1)); + if(gendiags) + { + psb->appendLink(IDX(ix+1,iy),IDX(ix,iy+1)); + } + } + } + } + } + /* Finished */ +#undef IDX + return(psb); +} + +// +btSoftBody* btSoftBodyHelpers::CreatePatchUV(btSoftBodyWorldInfo& worldInfo, + const btVector3& corner00, + const btVector3& corner10, + const btVector3& corner01, + const btVector3& corner11, + int resx, + int resy, + int fixeds, + bool gendiags, + float* tex_coords) +{ + + /* + * + * corners: + * + * [0][0] corner00 ------- corner01 [resx][0] + * | | + * | | + * [0][resy] corner10 -------- corner11 [resx][resy] + * + * + * + * + * + * + * "fixedgs" map: + * + * corner00 --> +1 + * corner01 --> +2 + * corner10 --> +4 + * corner11 --> +8 + * upper middle --> +16 + * left middle --> +32 + * right middle --> +64 + * lower middle --> +128 + * center --> +256 + * + * + * tex_coords size (resx-1)*(resy-1)*12 + * + * + * + * SINGLE QUAD INTERNALS + * + * 1) btSoftBody's nodes and links, + * diagonal link is optional ("gendiags") + * + * + * node00 ------ node01 + * | . + * | . + * | . + * | . + * | . + * node10 node11 + * + * + * + * 2) Faces: + * two triangles, + * UV Coordinates (hier example for single quad) + * + * (0,1) (0,1) (1,1) + * 1 |\ 3 \-----| 2 + * | \ \ | + * | \ \ | + * | \ \ | + * | \ \ | + * 2 |-----\ 3 \| 1 + * (0,0) (1,0) (1,0) + * + * + * + * + * + * + */ + +#define IDX(_x_,_y_) ((_y_)*rx+(_x_)) + /* Create nodes */ + if((resx<2)||(resy<2)) return(0); + const int rx=resx; + const int ry=resy; + const int tot=rx*ry; + btVector3* x=new btVector3[tot]; + btScalar* m=new btScalar[tot]; + + int iy; + + for(iy=0;iysetMass(IDX(0,0),0); + if(fixeds&2) psb->setMass(IDX(rx-1,0),0); + if(fixeds&4) psb->setMass(IDX(0,ry-1),0); + if(fixeds&8) psb->setMass(IDX(rx-1,ry-1),0); + if(fixeds&16) psb->setMass(IDX((rx-1)/2,0),0); + if(fixeds&32) psb->setMass(IDX(0,(ry-1)/2),0); + if(fixeds&64) psb->setMass(IDX(rx-1,(ry-1)/2),0); + if(fixeds&128) psb->setMass(IDX((rx-1)/2,ry-1),0); + if(fixeds&256) psb->setMass(IDX((rx-1)/2,(ry-1)/2),0); + delete[] x; + delete[] m; + + + int z = 0; + /* Create links and faces */ + for(iy=0;iyappendLink(node00,node01); + if(mdy) psb->appendLink(node00,node10); + if(mdx&&mdy) + { + psb->appendFace(node00,node10,node11); + if (tex_coords) { + tex_coords[z+0]=CalculateUV(resx,resy,ix,iy,0); + tex_coords[z+1]=CalculateUV(resx,resy,ix,iy,1); + tex_coords[z+2]=CalculateUV(resx,resy,ix,iy,0); + tex_coords[z+3]=CalculateUV(resx,resy,ix,iy,2); + tex_coords[z+4]=CalculateUV(resx,resy,ix,iy,3); + tex_coords[z+5]=CalculateUV(resx,resy,ix,iy,2); + } + psb->appendFace(node11,node01,node00); + if (tex_coords) { + tex_coords[z+6 ]=CalculateUV(resx,resy,ix,iy,3); + tex_coords[z+7 ]=CalculateUV(resx,resy,ix,iy,2); + tex_coords[z+8 ]=CalculateUV(resx,resy,ix,iy,3); + tex_coords[z+9 ]=CalculateUV(resx,resy,ix,iy,1); + tex_coords[z+10]=CalculateUV(resx,resy,ix,iy,0); + tex_coords[z+11]=CalculateUV(resx,resy,ix,iy,1); + } + if (gendiags) psb->appendLink(node00,node11); + z += 12; + } + } + } + /* Finished */ +#undef IDX + return(psb); +} + +float btSoftBodyHelpers::CalculateUV(int resx,int resy,int ix,int iy,int id) +{ + + /* + * + * + * node00 --- node01 + * | | + * node10 --- node11 + * + * + * ID map: + * + * node00 s --> 0 + * node00 t --> 1 + * + * node01 s --> 3 + * node01 t --> 1 + * + * node10 s --> 0 + * node10 t --> 2 + * + * node11 s --> 3 + * node11 t --> 2 + * + * + */ + + float tc=0.0f; + if (id == 0) { + tc = (1.0f/((resx-1))*ix); + } + else if (id==1) { + tc = (1.0f/((resy-1))*(resy-1-iy)); + } + else if (id==2) { + tc = (1.0f/((resy-1))*(resy-1-iy-1)); + } + else if (id==3) { + tc = (1.0f/((resx-1))*(ix+1)); + } + return tc; +} +// +btSoftBody* btSoftBodyHelpers::CreateEllipsoid(btSoftBodyWorldInfo& worldInfo,const btVector3& center, + const btVector3& radius, + int res) +{ + struct Hammersley + { + static void Generate(btVector3* x,int n) + { + for(int i=0;i>=1) if(j&1) t+=p; + btScalar w=2*t-1; + btScalar a=(SIMD_PI+2*i*SIMD_PI)/n; + btScalar s=btSqrt(1-w*w); + *x++=btVector3(s*btCos(a),s*btSin(a),w); + } + } + }; + btAlignedObjectArray vtx; + vtx.resize(3+res); + Hammersley::Generate(&vtx[0],vtx.size()); + for(int i=0;i chks; + btAlignedObjectArray vtx; + chks.resize(maxidx*maxidx,false); + vtx.resize(maxidx); + for(i=0,j=0,ni=maxidx*3;iappendLink(idx[j],idx[k]); + } + } +#undef IDX + psb->appendFace(idx[0],idx[1],idx[2]); + } + + if (randomizeConstraints) + { + psb->randomizeConstraints(); + } + + return(psb); +} + +// +btSoftBody* btSoftBodyHelpers::CreateFromConvexHull(btSoftBodyWorldInfo& worldInfo, const btVector3* vertices, + int nvertices, bool randomizeConstraints) +{ + HullDesc hdsc(QF_TRIANGLES,nvertices,vertices); + HullResult hres; + HullLibrary hlib;/*??*/ + hdsc.mMaxVertices=nvertices; + hlib.CreateConvexHull(hdsc,hres); + btSoftBody* psb=new btSoftBody(&worldInfo,(int)hres.mNumOutputVertices, + &hres.m_OutputVertices[0],0); + for(int i=0;i<(int)hres.mNumFaces;++i) + { + const int idx[]={ hres.m_Indices[i*3+0], + hres.m_Indices[i*3+1], + hres.m_Indices[i*3+2]}; + if(idx[0]appendLink( idx[0],idx[1]); + if(idx[1]appendLink( idx[1],idx[2]); + if(idx[2]appendLink( idx[2],idx[0]); + psb->appendFace(idx[0],idx[1],idx[2]); + } + hlib.ReleaseResult(hres); + if (randomizeConstraints) + { + psb->randomizeConstraints(); + } + return(psb); +} + + + + +static int nextLine(const char* buffer) +{ + int numBytesRead=0; + + while (*buffer != '\n') + { + buffer++; + numBytesRead++; + } + + + if (buffer[0]==0x0a) + { + buffer++; + numBytesRead++; + } + return numBytesRead; +} + +/* Create from TetGen .ele, .face, .node data */ +btSoftBody* btSoftBodyHelpers::CreateFromTetGenData(btSoftBodyWorldInfo& worldInfo, + const char* ele, + const char* face, + const char* node, + bool bfacelinks, + bool btetralinks, + bool bfacesfromtetras) +{ +btAlignedObjectArray pos; +int nnode=0; +int ndims=0; +int nattrb=0; +int hasbounds=0; +int result = sscanf(node,"%d %d %d %d",&nnode,&ndims,&nattrb,&hasbounds); +result = sscanf(node,"%d %d %d %d",&nnode,&ndims,&nattrb,&hasbounds); +node += nextLine(node); + +pos.resize(nnode); +for(int i=0;i>index; +// sn>>x;sn>>y;sn>>z; + node += nextLine(node); + + //for(int j=0;j>a; + + //if(hasbounds) + // sn>>bound; + + pos[index].setX(btScalar(x)); + pos[index].setY(btScalar(y)); + pos[index].setZ(btScalar(z)); + } +btSoftBody* psb=new btSoftBody(&worldInfo,nnode,&pos[0],0); +#if 0 +if(face&&face[0]) + { + int nface=0; + sf>>nface;sf>>hasbounds; + for(int i=0;i>index; + sf>>ni[0];sf>>ni[1];sf>>ni[2]; + sf>>bound; + psb->appendFace(ni[0],ni[1],ni[2]); + if(btetralinks) + { + psb->appendLink(ni[0],ni[1],0,true); + psb->appendLink(ni[1],ni[2],0,true); + psb->appendLink(ni[2],ni[0],0,true); + } + } + } +#endif + +if(ele&&ele[0]) + { + int ntetra=0; + int ncorner=0; + int neattrb=0; + sscanf(ele,"%d %d %d",&ntetra,&ncorner,&neattrb); + ele += nextLine(ele); + + //se>>ntetra;se>>ncorner;se>>neattrb; + for(int i=0;i>index; + //se>>ni[0];se>>ni[1];se>>ni[2];se>>ni[3]; + sscanf(ele,"%d %d %d %d %d",&index,&ni[0],&ni[1],&ni[2],&ni[3]); + ele+=nextLine(ele); + //for(int j=0;j>a; + psb->appendTetra(ni[0],ni[1],ni[2],ni[3]); + if(btetralinks) + { + psb->appendLink(ni[0],ni[1],0,true); + psb->appendLink(ni[1],ni[2],0,true); + psb->appendLink(ni[2],ni[0],0,true); + psb->appendLink(ni[0],ni[3],0,true); + psb->appendLink(ni[1],ni[3],0,true); + psb->appendLink(ni[2],ni[3],0,true); + } + } + } +printf("Nodes: %u\r\n",psb->m_nodes.size()); +printf("Links: %u\r\n",psb->m_links.size()); +printf("Faces: %u\r\n",psb->m_faces.size()); +printf("Tetras: %u\r\n",psb->m_tetras.size()); +return(psb); +} + diff --git a/extern/bullet2/BulletSoftBody/btSoftBodyHelpers.h b/extern/bullet2/BulletSoftBody/btSoftBodyHelpers.h new file mode 100644 index 00000000000..9675d6765b5 --- /dev/null +++ b/extern/bullet2/BulletSoftBody/btSoftBodyHelpers.h @@ -0,0 +1,143 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2008 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SOFT_BODY_HELPERS_H +#define SOFT_BODY_HELPERS_H + +#include "btSoftBody.h" + +// +// Helpers +// + +/* fDrawFlags */ +struct fDrawFlags { enum _ { + Nodes = 0x0001, + Links = 0x0002, + Faces = 0x0004, + Tetras = 0x0008, + Normals = 0x0010, + Contacts = 0x0020, + Anchors = 0x0040, + Notes = 0x0080, + Clusters = 0x0100, + NodeTree = 0x0200, + FaceTree = 0x0400, + ClusterTree = 0x0800, + Joints = 0x1000, + /* presets */ + Std = Links+Faces+Tetras+Anchors+Notes+Joints, + StdTetra = Std-Faces+Tetras +};}; + +struct btSoftBodyHelpers +{ + /* Draw body */ + static void Draw( btSoftBody* psb, + btIDebugDraw* idraw, + int drawflags=fDrawFlags::Std); + /* Draw body infos */ + static void DrawInfos( btSoftBody* psb, + btIDebugDraw* idraw, + bool masses, + bool areas, + bool stress); + /* Draw node tree */ + static void DrawNodeTree( btSoftBody* psb, + btIDebugDraw* idraw, + int mindepth=0, + int maxdepth=-1); + /* Draw face tree */ + static void DrawFaceTree( btSoftBody* psb, + btIDebugDraw* idraw, + int mindepth=0, + int maxdepth=-1); + /* Draw cluster tree */ + static void DrawClusterTree(btSoftBody* psb, + btIDebugDraw* idraw, + int mindepth=0, + int maxdepth=-1); + /* Draw rigid frame */ + static void DrawFrame( btSoftBody* psb, + btIDebugDraw* idraw); + /* Create a rope */ + static btSoftBody* CreateRope( btSoftBodyWorldInfo& worldInfo, + const btVector3& from, + const btVector3& to, + int res, + int fixeds); + /* Create a patch */ + static btSoftBody* CreatePatch(btSoftBodyWorldInfo& worldInfo, + const btVector3& corner00, + const btVector3& corner10, + const btVector3& corner01, + const btVector3& corner11, + int resx, + int resy, + int fixeds, + bool gendiags); + /* Create a patch with UV Texture Coordinates */ + static btSoftBody* CreatePatchUV(btSoftBodyWorldInfo& worldInfo, + const btVector3& corner00, + const btVector3& corner10, + const btVector3& corner01, + const btVector3& corner11, + int resx, + int resy, + int fixeds, + bool gendiags, + float* tex_coords=0); + static float CalculateUV(int resx,int resy,int ix,int iy,int id); + /* Create an ellipsoid */ + static btSoftBody* CreateEllipsoid(btSoftBodyWorldInfo& worldInfo, + const btVector3& center, + const btVector3& radius, + int res); + /* Create from trimesh */ + static btSoftBody* CreateFromTriMesh( btSoftBodyWorldInfo& worldInfo, + const btScalar* vertices, + const int* triangles, + int ntriangles, + bool randomizeConstraints = true); + /* Create from convex-hull */ + static btSoftBody* CreateFromConvexHull( btSoftBodyWorldInfo& worldInfo, + const btVector3* vertices, + int nvertices, + bool randomizeConstraints = true); + + + /* Export TetGen compatible .smesh file */ + static void ExportAsSMeshFile( btSoftBody* psb, + const char* filename); + /* Create from TetGen .ele, .face, .node files */ + static btSoftBody* CreateFromTetGenFile( btSoftBodyWorldInfo& worldInfo, + const char* ele, + const char* face, + const char* node, + bool bfacelinks, + bool btetralinks, + bool bfacesfromtetras); + /* Create from TetGen .ele, .face, .node data */ + static btSoftBody* CreateFromTetGenData( btSoftBodyWorldInfo& worldInfo, + const char* ele, + const char* face, + const char* node, + bool bfacelinks, + bool btetralinks, + bool bfacesfromtetras); + +}; + +#endif //SOFT_BODY_HELPERS_H diff --git a/extern/bullet2/BulletSoftBody/btSoftBodyInternals.h b/extern/bullet2/BulletSoftBody/btSoftBodyInternals.h new file mode 100644 index 00000000000..2cb7744cbb1 --- /dev/null +++ b/extern/bullet2/BulletSoftBody/btSoftBodyInternals.h @@ -0,0 +1,931 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ +///btSoftBody implementation by Nathanael Presson + +#ifndef _BT_SOFT_BODY_INTERNALS_H +#define _BT_SOFT_BODY_INTERNALS_H + +#include "btSoftBody.h" + + +#include "LinearMath/btQuickprof.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h" +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" +#include "BulletCollision/CollisionShapes/btConvexInternalShape.h" +#include "BulletCollision/NarrowPhaseCollision/btGjkEpa2.h" + +// +// btSymMatrix +// +template +struct btSymMatrix +{ + btSymMatrix() : dim(0) {} + btSymMatrix(int n,const T& init=T()) { resize(n,init); } + void resize(int n,const T& init=T()) { dim=n;store.resize((n*(n+1))/2,init); } + int index(int c,int r) const { if(c>r) btSwap(c,r);btAssert(r store; + int dim; +}; + +// +// btSoftBodyCollisionShape +// +class btSoftBodyCollisionShape : public btConcaveShape +{ +public: + btSoftBody* m_body; + + btSoftBodyCollisionShape(btSoftBody* backptr) + { + m_shapeType = SOFTBODY_SHAPE_PROXYTYPE; + m_body=backptr; + } + + virtual ~btSoftBodyCollisionShape() + { + + } + + void processAllTriangles(btTriangleCallback* /*callback*/,const btVector3& /*aabbMin*/,const btVector3& /*aabbMax*/) const + { + //not yet + btAssert(0); + } + + ///getAabb returns the axis aligned bounding box in the coordinate frame of the given transform t. + virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const + { + /* t should be identity, but better be safe than...fast? */ + const btVector3 mins=m_body->m_bounds[0]; + const btVector3 maxs=m_body->m_bounds[1]; + const btVector3 crns[]={t*btVector3(mins.x(),mins.y(),mins.z()), + t*btVector3(maxs.x(),mins.y(),mins.z()), + t*btVector3(maxs.x(),maxs.y(),mins.z()), + t*btVector3(mins.x(),maxs.y(),mins.z()), + t*btVector3(mins.x(),mins.y(),maxs.z()), + t*btVector3(maxs.x(),mins.y(),maxs.z()), + t*btVector3(maxs.x(),maxs.y(),maxs.z()), + t*btVector3(mins.x(),maxs.y(),maxs.z())}; + aabbMin=aabbMax=crns[0]; + for(int i=1;i<8;++i) + { + aabbMin.setMin(crns[i]); + aabbMax.setMax(crns[i]); + } + } + + + virtual void setLocalScaling(const btVector3& /*scaling*/) + { + ///na + } + virtual const btVector3& getLocalScaling() const + { + static const btVector3 dummy(1,1,1); + return dummy; + } + virtual void calculateLocalInertia(btScalar /*mass*/,btVector3& /*inertia*/) const + { + ///not yet + btAssert(0); + } + virtual const char* getName()const + { + return "SoftBody"; + } + +}; + +// +// btSoftClusterCollisionShape +// +class btSoftClusterCollisionShape : public btConvexInternalShape +{ +public: + const btSoftBody::Cluster* m_cluster; + + btSoftClusterCollisionShape (const btSoftBody::Cluster* cluster) : m_cluster(cluster) { setMargin(0); } + + + virtual btVector3 localGetSupportingVertex(const btVector3& vec) const + { + btSoftBody::Node* const * n=&m_cluster->m_nodes[0]; + btScalar d=btDot(vec,n[0]->m_x); + int j=0; + for(int i=1,ni=m_cluster->m_nodes.size();im_x); + if(k>d) { d=k;j=i; } + } + return(n[j]->m_x); + } + virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const + { + return(localGetSupportingVertex(vec)); + } + //notice that the vectors should be unit length + virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const + {} + + + virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const + {} + + virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const + {} + + virtual int getShapeType() const { return SOFTBODY_SHAPE_PROXYTYPE; } + + //debugging + virtual const char* getName()const {return "SOFTCLUSTER";} + + virtual void setMargin(btScalar margin) + { + btConvexInternalShape::setMargin(margin); + } + virtual btScalar getMargin() const + { + return getMargin(); + } +}; + +// +// Inline's +// + +// +template +static inline void ZeroInitialize(T& value) +{ + static const T zerodummy; + value=zerodummy; +} +// +template +static inline bool CompLess(const T& a,const T& b) +{ return(a +static inline bool CompGreater(const T& a,const T& b) +{ return(a>b); } +// +template +static inline T Lerp(const T& a,const T& b,btScalar t) +{ return(a+(b-a)*t); } +// +template +static inline T InvLerp(const T& a,const T& b,btScalar t) +{ return((b+a*t-b*t)/(a*b)); } +// +static inline btMatrix3x3 Lerp( const btMatrix3x3& a, + const btMatrix3x3& b, + btScalar t) +{ + btMatrix3x3 r; + r[0]=Lerp(a[0],b[0],t); + r[1]=Lerp(a[1],b[1],t); + r[2]=Lerp(a[2],b[2],t); + return(r); +} +// +static inline btVector3 Clamp(const btVector3& v,btScalar maxlength) +{ + const btScalar sql=v.length2(); + if(sql>(maxlength*maxlength)) + return((v*maxlength)/btSqrt(sql)); + else + return(v); +} +// +template +static inline T Clamp(const T& x,const T& l,const T& h) +{ return(xh?h:x); } +// +template +static inline T Sq(const T& x) +{ return(x*x); } +// +template +static inline T Cube(const T& x) +{ return(x*x*x); } +// +template +static inline T Sign(const T& x) +{ return((T)(x<0?-1:+1)); } +// +template +static inline bool SameSign(const T& x,const T& y) +{ return((x*y)>0); } +// +static inline btScalar ClusterMetric(const btVector3& x,const btVector3& y) +{ + const btVector3 d=x-y; + return(btFabs(d[0])+btFabs(d[1])+btFabs(d[2])); +} +// +static inline btMatrix3x3 ScaleAlongAxis(const btVector3& a,btScalar s) +{ + const btScalar xx=a.x()*a.x(); + const btScalar yy=a.y()*a.y(); + const btScalar zz=a.z()*a.z(); + const btScalar xy=a.x()*a.y(); + const btScalar yz=a.y()*a.z(); + const btScalar zx=a.z()*a.x(); + btMatrix3x3 m; + m[0]=btVector3(1-xx+xx*s,xy*s-xy,zx*s-zx); + m[1]=btVector3(xy*s-xy,1-yy+yy*s,yz*s-yz); + m[2]=btVector3(zx*s-zx,yz*s-yz,1-zz+zz*s); + return(m); +} +// +static inline btMatrix3x3 Cross(const btVector3& v) +{ + btMatrix3x3 m; + m[0]=btVector3(0,-v.z(),+v.y()); + m[1]=btVector3(+v.z(),0,-v.x()); + m[2]=btVector3(-v.y(),+v.x(),0); + return(m); +} +// +static inline btMatrix3x3 Diagonal(btScalar x) +{ + btMatrix3x3 m; + m[0]=btVector3(x,0,0); + m[1]=btVector3(0,x,0); + m[2]=btVector3(0,0,x); + return(m); +} +// +static inline btMatrix3x3 Add(const btMatrix3x3& a, + const btMatrix3x3& b) +{ + btMatrix3x3 r; + for(int i=0;i<3;++i) r[i]=a[i]+b[i]; + return(r); +} +// +static inline btMatrix3x3 Sub(const btMatrix3x3& a, + const btMatrix3x3& b) +{ + btMatrix3x3 r; + for(int i=0;i<3;++i) r[i]=a[i]-b[i]; + return(r); +} +// +static inline btMatrix3x3 Mul(const btMatrix3x3& a, + btScalar b) +{ + btMatrix3x3 r; + for(int i=0;i<3;++i) r[i]=a[i]*b; + return(r); +} +// +static inline void Orthogonalize(btMatrix3x3& m) +{ + m[2]=btCross(m[0],m[1]).normalized(); + m[1]=btCross(m[2],m[0]).normalized(); + m[0]=btCross(m[1],m[2]).normalized(); +} +// +static inline btMatrix3x3 MassMatrix(btScalar im,const btMatrix3x3& iwi,const btVector3& r) +{ + const btMatrix3x3 cr=Cross(r); + return(Sub(Diagonal(im),cr*iwi*cr)); +} + +// +static inline btMatrix3x3 ImpulseMatrix( btScalar dt, + btScalar ima, + btScalar imb, + const btMatrix3x3& iwi, + const btVector3& r) +{ + return(Diagonal(1/dt)*Add(Diagonal(ima),MassMatrix(imb,iwi,r)).inverse()); +} + +// +static inline btMatrix3x3 ImpulseMatrix( btScalar ima,const btMatrix3x3& iia,const btVector3& ra, + btScalar imb,const btMatrix3x3& iib,const btVector3& rb) +{ + return(Add(MassMatrix(ima,iia,ra),MassMatrix(imb,iib,rb)).inverse()); +} + +// +static inline btMatrix3x3 AngularImpulseMatrix( const btMatrix3x3& iia, + const btMatrix3x3& iib) +{ + return(Add(iia,iib).inverse()); +} + +// +static inline btVector3 ProjectOnAxis( const btVector3& v, + const btVector3& a) +{ + return(a*btDot(v,a)); +} +// +static inline btVector3 ProjectOnPlane( const btVector3& v, + const btVector3& a) +{ + return(v-ProjectOnAxis(v,a)); +} + +// +static inline void ProjectOrigin( const btVector3& a, + const btVector3& b, + btVector3& prj, + btScalar& sqd) +{ + const btVector3 d=b-a; + const btScalar m2=d.length2(); + if(m2>SIMD_EPSILON) + { + const btScalar t=Clamp(-btDot(a,d)/m2,0,1); + const btVector3 p=a+d*t; + const btScalar l2=p.length2(); + if(l2SIMD_EPSILON) + { + const btVector3 n=q/btSqrt(m2); + const btScalar k=btDot(a,n); + const btScalar k2=k*k; + if(k20)&& + (btDot(btCross(b-p,c-p),q)>0)&& + (btDot(btCross(c-p,a-p),q)>0)) + { + prj=p; + sqd=k2; + } + else + { + ProjectOrigin(a,b,prj,sqd); + ProjectOrigin(b,c,prj,sqd); + ProjectOrigin(c,a,prj,sqd); + } + } + } +} + +// +template +static inline T BaryEval( const T& a, + const T& b, + const T& c, + const btVector3& coord) +{ + return(a*coord.x()+b*coord.y()+c*coord.z()); +} +// +static inline btVector3 BaryCoord( const btVector3& a, + const btVector3& b, + const btVector3& c, + const btVector3& p) +{ + const btScalar w[]={ btCross(a-p,b-p).length(), + btCross(b-p,c-p).length(), + btCross(c-p,a-p).length()}; + const btScalar isum=1/(w[0]+w[1]+w[2]); + return(btVector3(w[1]*isum,w[2]*isum,w[0]*isum)); +} + +// +static btScalar ImplicitSolve( btSoftBody::ImplicitFn* fn, + const btVector3& a, + const btVector3& b, + const btScalar accuracy, + const int maxiterations=256) +{ + btScalar span[2]={0,1}; + btScalar values[2]={fn->Eval(a),fn->Eval(b)}; + if(values[0]>values[1]) + { + btSwap(span[0],span[1]); + btSwap(values[0],values[1]); + } + if(values[0]>-accuracy) return(-1); + if(values[1]<+accuracy) return(-1); + for(int i=0;iEval(Lerp(a,b,t)); + if((t<=0)||(t>=1)) break; + if(btFabs(v)SIMD_EPSILON) + return(v/l); + else + return(btVector3(0,0,0)); +} + +// +static inline btDbvtVolume VolumeOf( const btSoftBody::Face& f, + btScalar margin) +{ + const btVector3* pts[]={ &f.m_n[0]->m_x, + &f.m_n[1]->m_x, + &f.m_n[2]->m_x}; + btDbvtVolume vol=btDbvtVolume::FromPoints(pts,3); + vol.Expand(btVector3(margin,margin,margin)); + return(vol); +} + +// +static inline btVector3 CenterOf( const btSoftBody::Face& f) +{ + return((f.m_n[0]->m_x+f.m_n[1]->m_x+f.m_n[2]->m_x)/3); +} + +// +static inline btScalar AreaOf( const btVector3& x0, + const btVector3& x1, + const btVector3& x2) +{ + const btVector3 a=x1-x0; + const btVector3 b=x2-x0; + const btVector3 cr=btCross(a,b); + const btScalar area=cr.length(); + return(area); +} + +// +static inline btScalar VolumeOf( const btVector3& x0, + const btVector3& x1, + const btVector3& x2, + const btVector3& x3) +{ + const btVector3 a=x1-x0; + const btVector3 b=x2-x0; + const btVector3 c=x3-x0; + return(btDot(a,btCross(b,c))); +} + +// +static void EvaluateMedium( const btSoftBodyWorldInfo* wfi, + const btVector3& x, + btSoftBody::sMedium& medium) +{ + medium.m_velocity = btVector3(0,0,0); + medium.m_pressure = 0; + medium.m_density = wfi->air_density; + if(wfi->water_density>0) + { + const btScalar depth=-(btDot(x,wfi->water_normal)+wfi->water_offset); + if(depth>0) + { + medium.m_density = wfi->water_density; + medium.m_pressure = depth*wfi->water_density*wfi->m_gravity.length(); + } + } +} + +// +static inline void ApplyClampedForce( btSoftBody::Node& n, + const btVector3& f, + btScalar dt) +{ + const btScalar dtim=dt*n.m_im; + if((f*dtim).length2()>n.m_v.length2()) + {/* Clamp */ + n.m_f-=ProjectOnAxis(n.m_v,f.normalized())/dtim; + } + else + {/* Apply */ + n.m_f+=f; + } +} + +// +static inline int MatchEdge( const btSoftBody::Node* a, + const btSoftBody::Node* b, + const btSoftBody::Node* ma, + const btSoftBody::Node* mb) +{ + if((a==ma)&&(b==mb)) return(0); + if((a==mb)&&(b==ma)) return(1); + return(-1); +} + +// +// btEigen : Extract eigen system, +// straitforward implementation of http://math.fullerton.edu/mathews/n2003/JacobiMethodMod.html +// outputs are NOT sorted. +// +struct btEigen +{ + static int system(btMatrix3x3& a,btMatrix3x3* vectors,btVector3* values=0) + { + static const int maxiterations=16; + static const btScalar accuracy=(btScalar)0.0001; + btMatrix3x3& v=*vectors; + int iterations=0; + vectors->setIdentity(); + do { + int p=0,q=1; + if(btFabs(a[p][q])accuracy) + { + const btScalar w=(a[q][q]-a[p][p])/(2*a[p][q]); + const btScalar z=btFabs(w); + const btScalar t=w/(z*(btSqrt(1+w*w)+z)); + if(t==t)/* [WARNING] let hope that one does not get thrown aways by some compilers... */ + { + const btScalar c=1/btSqrt(t*t+1); + const btScalar s=c*t; + mulPQ(a,c,s,p,q); + mulTPQ(a,c,s,p,q); + mulPQ(v,c,s,p,q); + } else break; + } else break; + } while((++iterations)accuracy) det=ndet; else break; + } + /* Final orthogonalization */ + Orthogonalize(q); + /* Compute 'S' */ + s=q.transpose()*m; + } + else + { + q.setIdentity(); + s.setIdentity(); + } + return(i); +} + +// +// btSoftColliders +// +struct btSoftColliders +{ + // + // ClusterBase + // + struct ClusterBase : btDbvt::ICollide + { + btScalar erp; + btScalar idt; + btScalar m_margin; + btScalar friction; + btScalar threshold; + ClusterBase() + { + erp =(btScalar)1; + idt =0; + m_margin =0; + friction =0; + threshold =(btScalar)0; + } + bool SolveContact( const btGjkEpaSolver2::sResults& res, + btSoftBody::Body ba,btSoftBody::Body bb, + btSoftBody::CJoint& joint) + { + if(res.distancedata; + btSoftClusterCollisionShape cshape(cluster); + + const btConvexShape* rshape=(const btConvexShape*)m_colObj->getCollisionShape(); + + ///don't collide an anchored cluster with a static/kinematic object + if(m_colObj->isStaticOrKinematicObject() && cluster->m_containsAnchor) + return; + + btGjkEpaSolver2::sResults res; + if(btGjkEpaSolver2::SignedDistance( &cshape,btTransform::getIdentity(), + rshape,m_colObj->getInterpolationWorldTransform(), + btVector3(1,0,0),res)) + { + btSoftBody::CJoint joint; + if(SolveContact(res,cluster,m_colObj,joint))//prb,joint)) + { + btSoftBody::CJoint* pj=new(btAlignedAlloc(sizeof(btSoftBody::CJoint),16)) btSoftBody::CJoint(); + *pj=joint;psb->m_joints.push_back(pj); + if(m_colObj->isStaticOrKinematicObject()) + { + pj->m_erp *= psb->m_cfg.kSKHR_CL; + pj->m_split *= psb->m_cfg.kSK_SPLT_CL; + } + else + { + pj->m_erp *= psb->m_cfg.kSRHR_CL; + pj->m_split *= psb->m_cfg.kSR_SPLT_CL; + } + } + } + } + void Process(btSoftBody* ps,btCollisionObject* colOb) + { + psb = ps; + m_colObj = colOb; + idt = ps->m_sst.isdt; + m_margin = m_colObj->getCollisionShape()->getMargin()+psb->getCollisionShape()->getMargin(); + ///Bullet rigid body uses multiply instead of minimum to determine combined friction. Some customization would be useful. + friction = btMin(psb->m_cfg.kDF,m_colObj->getFriction()); + btVector3 mins; + btVector3 maxs; + + ATTRIBUTE_ALIGNED16(btDbvtVolume) volume; + colOb->getCollisionShape()->getAabb(colOb->getInterpolationWorldTransform(),mins,maxs); + volume=btDbvtVolume::FromMM(mins,maxs); + volume.Expand(btVector3(1,1,1)*m_margin); + ps->m_cdbvt.collideTV(ps->m_cdbvt.m_root,volume,*this); + } + }; + // + // CollideCL_SS + // + struct CollideCL_SS : ClusterBase + { + btSoftBody* bodies[2]; + void Process(const btDbvtNode* la,const btDbvtNode* lb) + { + btSoftBody::Cluster* cla=(btSoftBody::Cluster*)la->data; + btSoftBody::Cluster* clb=(btSoftBody::Cluster*)lb->data; + + + bool connected=false; + if ((bodies[0]==bodies[1])&&(bodies[0]->m_clusterConnectivity.size())) + { + connected = bodies[0]->m_clusterConnectivity[cla->m_clusterIndex+bodies[0]->m_clusters.size()*clb->m_clusterIndex]; + } + + if (!connected) + { + btSoftClusterCollisionShape csa(cla); + btSoftClusterCollisionShape csb(clb); + btGjkEpaSolver2::sResults res; + if(btGjkEpaSolver2::SignedDistance( &csa,btTransform::getIdentity(), + &csb,btTransform::getIdentity(), + cla->m_com-clb->m_com,res)) + { + btSoftBody::CJoint joint; + if(SolveContact(res,cla,clb,joint)) + { + btSoftBody::CJoint* pj=new(btAlignedAlloc(sizeof(btSoftBody::CJoint),16)) btSoftBody::CJoint(); + *pj=joint;bodies[0]->m_joints.push_back(pj); + pj->m_erp *= btMax(bodies[0]->m_cfg.kSSHR_CL,bodies[1]->m_cfg.kSSHR_CL); + pj->m_split *= (bodies[0]->m_cfg.kSS_SPLT_CL+bodies[1]->m_cfg.kSS_SPLT_CL)/2; + } + } + } else + { + static int count=0; + count++; + //printf("count=%d\n",count); + + } + } + void Process(btSoftBody* psa,btSoftBody* psb) + { + idt = psa->m_sst.isdt; + //m_margin = (psa->getCollisionShape()->getMargin()+psb->getCollisionShape()->getMargin())/2; + m_margin = (psa->getCollisionShape()->getMargin()+psb->getCollisionShape()->getMargin()); + friction = btMin(psa->m_cfg.kDF,psb->m_cfg.kDF); + bodies[0] = psa; + bodies[1] = psb; + psa->m_cdbvt.collideTT(psa->m_cdbvt.m_root,psb->m_cdbvt.m_root,*this); + } + }; + // + // CollideSDF_RS + // + struct CollideSDF_RS : btDbvt::ICollide + { + void Process(const btDbvtNode* leaf) + { + btSoftBody::Node* node=(btSoftBody::Node*)leaf->data; + DoNode(*node); + } + void DoNode(btSoftBody::Node& n) const + { + const btScalar m=n.m_im>0?dynmargin:stamargin; + btSoftBody::RContact c; + if( (!n.m_battach)&& + psb->checkContact(m_colObj1,n.m_x,m,c.m_cti)) + { + const btScalar ima=n.m_im; + const btScalar imb= m_rigidBody? m_rigidBody->getInvMass() : 0.f; + const btScalar ms=ima+imb; + if(ms>0) + { + const btTransform& wtr=m_rigidBody?m_rigidBody->getInterpolationWorldTransform() : m_colObj1->getWorldTransform(); + static const btMatrix3x3 iwiStatic(0,0,0,0,0,0,0,0,0); + const btMatrix3x3& iwi=m_rigidBody?m_rigidBody->getInvInertiaTensorWorld() : iwiStatic; + const btVector3 ra=n.m_x-wtr.getOrigin(); + const btVector3 va=m_rigidBody ? m_rigidBody->getVelocityInLocalPoint(ra)*psb->m_sst.sdt : btVector3(0,0,0); + const btVector3 vb=n.m_x-n.m_q; + const btVector3 vr=vb-va; + const btScalar dn=btDot(vr,c.m_cti.m_normal); + const btVector3 fv=vr-c.m_cti.m_normal*dn; + const btScalar fc=psb->m_cfg.kDF*m_colObj1->getFriction(); + c.m_node = &n; + c.m_c0 = ImpulseMatrix(psb->m_sst.sdt,ima,imb,iwi,ra); + c.m_c1 = ra; + c.m_c2 = ima*psb->m_sst.sdt; + c.m_c3 = fv.length2()<(btFabs(dn)*fc)?0:1-fc; + c.m_c4 = m_colObj1->isStaticOrKinematicObject()?psb->m_cfg.kKHR:psb->m_cfg.kCHR; + psb->m_rcontacts.push_back(c); + if (m_rigidBody) + m_rigidBody->activate(); + } + } + } + btSoftBody* psb; + btCollisionObject* m_colObj1; + btRigidBody* m_rigidBody; + btScalar dynmargin; + btScalar stamargin; + }; + // + // CollideVF_SS + // + struct CollideVF_SS : btDbvt::ICollide + { + void Process(const btDbvtNode* lnode, + const btDbvtNode* lface) + { + btSoftBody::Node* node=(btSoftBody::Node*)lnode->data; + btSoftBody::Face* face=(btSoftBody::Face*)lface->data; + btVector3 o=node->m_x; + btVector3 p; + btScalar d=SIMD_INFINITY; + ProjectOrigin( face->m_n[0]->m_x-o, + face->m_n[1]->m_x-o, + face->m_n[2]->m_x-o, + p,d); + const btScalar m=mrg+(o-node->m_q).length()*2; + if(d<(m*m)) + { + const btSoftBody::Node* n[]={face->m_n[0],face->m_n[1],face->m_n[2]}; + const btVector3 w=BaryCoord(n[0]->m_x,n[1]->m_x,n[2]->m_x,p+o); + const btScalar ma=node->m_im; + btScalar mb=BaryEval(n[0]->m_im,n[1]->m_im,n[2]->m_im,w); + if( (n[0]->m_im<=0)|| + (n[1]->m_im<=0)|| + (n[2]->m_im<=0)) + { + mb=0; + } + const btScalar ms=ma+mb; + if(ms>0) + { + btSoftBody::SContact c; + c.m_normal = p/-btSqrt(d); + c.m_margin = m; + c.m_node = node; + c.m_face = face; + c.m_weights = w; + c.m_friction = btMax(psb[0]->m_cfg.kDF,psb[1]->m_cfg.kDF); + c.m_cfm[0] = ma/ms*psb[0]->m_cfg.kSHR; + c.m_cfm[1] = mb/ms*psb[1]->m_cfg.kSHR; + psb[0]->m_scontacts.push_back(c); + } + } + } + btSoftBody* psb[2]; + btScalar mrg; + }; +}; + +#endif //_BT_SOFT_BODY_INTERNALS_H diff --git a/extern/bullet2/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp b/extern/bullet2/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp new file mode 100644 index 00000000000..f5a67f6d895 --- /dev/null +++ b/extern/bullet2/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp @@ -0,0 +1,134 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btSoftBodyRigidBodyCollisionConfiguration.h" +#include "btSoftRigidCollisionAlgorithm.h" +#include "btSoftBodyConcaveCollisionAlgorithm.h" +#include "btSoftSoftCollisionAlgorithm.h" + +#include "LinearMath/btPoolAllocator.h" + +#define ENABLE_SOFTBODY_CONCAVE_COLLISIONS 1 + +btSoftBodyRigidBodyCollisionConfiguration::btSoftBodyRigidBodyCollisionConfiguration(const btDefaultCollisionConstructionInfo& constructionInfo) +:btDefaultCollisionConfiguration(constructionInfo) +{ + void* mem; + + mem = btAlignedAlloc(sizeof(btSoftSoftCollisionAlgorithm::CreateFunc),16); + m_softSoftCreateFunc = new(mem) btSoftSoftCollisionAlgorithm::CreateFunc; + + mem = btAlignedAlloc(sizeof(btSoftRigidCollisionAlgorithm::CreateFunc),16); + m_softRigidConvexCreateFunc = new(mem) btSoftRigidCollisionAlgorithm::CreateFunc; + + mem = btAlignedAlloc(sizeof(btSoftRigidCollisionAlgorithm::CreateFunc),16); + m_swappedSoftRigidConvexCreateFunc = new(mem) btSoftRigidCollisionAlgorithm::CreateFunc; + m_swappedSoftRigidConvexCreateFunc->m_swapped=true; + +#ifdef ENABLE_SOFTBODY_CONCAVE_COLLISIONS + mem = btAlignedAlloc(sizeof(btSoftBodyConcaveCollisionAlgorithm::CreateFunc),16); + m_softRigidConcaveCreateFunc = new(mem) btSoftBodyConcaveCollisionAlgorithm::CreateFunc; + + mem = btAlignedAlloc(sizeof(btSoftBodyConcaveCollisionAlgorithm::CreateFunc),16); + m_swappedSoftRigidConcaveCreateFunc = new(mem) btSoftBodyConcaveCollisionAlgorithm::SwappedCreateFunc; + m_swappedSoftRigidConcaveCreateFunc->m_swapped=true; +#endif + + //replace pool by a new one, with potential larger size + + if (m_ownsCollisionAlgorithmPool && m_collisionAlgorithmPool) + { + int curElemSize = m_collisionAlgorithmPool->getElementSize(); + ///calculate maximum element size, big enough to fit any collision algorithm in the memory pool + + + int maxSize0 = sizeof(btSoftSoftCollisionAlgorithm); + int maxSize1 = sizeof(btSoftRigidCollisionAlgorithm); + int maxSize2 = sizeof(btSoftBodyConcaveCollisionAlgorithm); + + int collisionAlgorithmMaxElementSize = btMax(maxSize0,maxSize1); + collisionAlgorithmMaxElementSize = btMax(collisionAlgorithmMaxElementSize,maxSize2); + + if (collisionAlgorithmMaxElementSize > curElemSize) + { + m_collisionAlgorithmPool->~btPoolAllocator(); + btAlignedFree(m_collisionAlgorithmPool); + void* mem = btAlignedAlloc(sizeof(btPoolAllocator),16); + m_collisionAlgorithmPool = new(mem) btPoolAllocator(collisionAlgorithmMaxElementSize,constructionInfo.m_defaultMaxCollisionAlgorithmPoolSize); + } + } + +} + +btSoftBodyRigidBodyCollisionConfiguration::~btSoftBodyRigidBodyCollisionConfiguration() +{ + m_softSoftCreateFunc->~btCollisionAlgorithmCreateFunc(); + btAlignedFree( m_softSoftCreateFunc); + + m_softRigidConvexCreateFunc->~btCollisionAlgorithmCreateFunc(); + btAlignedFree( m_softRigidConvexCreateFunc); + + m_swappedSoftRigidConvexCreateFunc->~btCollisionAlgorithmCreateFunc(); + btAlignedFree( m_swappedSoftRigidConvexCreateFunc); + +#ifdef ENABLE_SOFTBODY_CONCAVE_COLLISIONS + m_softRigidConcaveCreateFunc->~btCollisionAlgorithmCreateFunc(); + btAlignedFree( m_softRigidConcaveCreateFunc); + + m_swappedSoftRigidConcaveCreateFunc->~btCollisionAlgorithmCreateFunc(); + btAlignedFree( m_swappedSoftRigidConcaveCreateFunc); +#endif +} + +///creation of soft-soft and soft-rigid, and otherwise fallback to base class implementation +btCollisionAlgorithmCreateFunc* btSoftBodyRigidBodyCollisionConfiguration::getCollisionAlgorithmCreateFunc(int proxyType0,int proxyType1) +{ + + ///try to handle the softbody interactions first + + if ((proxyType0 == SOFTBODY_SHAPE_PROXYTYPE ) && (proxyType1==SOFTBODY_SHAPE_PROXYTYPE)) + { + return m_softSoftCreateFunc; + } + + ///softbody versus convex + if (proxyType0 == SOFTBODY_SHAPE_PROXYTYPE && btBroadphaseProxy::isConvex(proxyType1)) + { + return m_softRigidConvexCreateFunc; + } + + ///convex versus soft body + if (btBroadphaseProxy::isConvex(proxyType0) && proxyType1 == SOFTBODY_SHAPE_PROXYTYPE ) + { + return m_swappedSoftRigidConvexCreateFunc; + } + +#ifdef ENABLE_SOFTBODY_CONCAVE_COLLISIONS + ///softbody versus convex + if (proxyType0 == SOFTBODY_SHAPE_PROXYTYPE && btBroadphaseProxy::isConcave(proxyType1)) + { + return m_softRigidConcaveCreateFunc; + } + + ///convex versus soft body + if (btBroadphaseProxy::isConcave(proxyType0) && proxyType1 == SOFTBODY_SHAPE_PROXYTYPE ) + { + return m_swappedSoftRigidConcaveCreateFunc; + } +#endif + + ///fallback to the regular rigid collision shape + return btDefaultCollisionConfiguration::getCollisionAlgorithmCreateFunc(proxyType0,proxyType1); +} diff --git a/extern/bullet2/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h b/extern/bullet2/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h new file mode 100644 index 00000000000..21addcfe2e1 --- /dev/null +++ b/extern/bullet2/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h @@ -0,0 +1,48 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_SOFTBODY_RIGIDBODY_COLLISION_CONFIGURATION +#define BT_SOFTBODY_RIGIDBODY_COLLISION_CONFIGURATION + +#include "BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h" + +class btVoronoiSimplexSolver; +class btGjkEpaPenetrationDepthSolver; + + +///btSoftBodyRigidBodyCollisionConfiguration add softbody interaction on top of btDefaultCollisionConfiguration +class btSoftBodyRigidBodyCollisionConfiguration : public btDefaultCollisionConfiguration +{ + + //default CreationFunctions, filling the m_doubleDispatch table + btCollisionAlgorithmCreateFunc* m_softSoftCreateFunc; + btCollisionAlgorithmCreateFunc* m_softRigidConvexCreateFunc; + btCollisionAlgorithmCreateFunc* m_swappedSoftRigidConvexCreateFunc; + btCollisionAlgorithmCreateFunc* m_softRigidConcaveCreateFunc; + btCollisionAlgorithmCreateFunc* m_swappedSoftRigidConcaveCreateFunc; + +public: + + btSoftBodyRigidBodyCollisionConfiguration(const btDefaultCollisionConstructionInfo& constructionInfo = btDefaultCollisionConstructionInfo()); + + virtual ~btSoftBodyRigidBodyCollisionConfiguration(); + + ///creation of soft-soft and soft-rigid, and otherwise fallback to base class implementation + virtual btCollisionAlgorithmCreateFunc* getCollisionAlgorithmCreateFunc(int proxyType0,int proxyType1); + +}; + +#endif //BT_SOFTBODY_RIGIDBODY_COLLISION_CONFIGURATION + diff --git a/extern/bullet2/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp b/extern/bullet2/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp new file mode 100644 index 00000000000..11ad9e7daba --- /dev/null +++ b/extern/bullet2/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp @@ -0,0 +1,82 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btSoftRigidCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" +#include "BulletCollision/CollisionShapes/btSphereShape.h" +#include "BulletCollision/CollisionShapes/btBoxShape.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "btSoftBody.h" +///TODO: include all the shapes that the softbody can collide with +///alternatively, implement special case collision algorithms (just like for rigid collision shapes) + +//#include + +btSoftRigidCollisionAlgorithm::btSoftRigidCollisionAlgorithm(btPersistentManifold* /*mf*/,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* /*col0*/,btCollisionObject* /*col1*/, bool isSwapped) +: btCollisionAlgorithm(ci), +//m_ownManifold(false), +//m_manifoldPtr(mf), +m_isSwapped(isSwapped) +{ +} + + +btSoftRigidCollisionAlgorithm::~btSoftRigidCollisionAlgorithm() +{ + + //m_softBody->m_overlappingRigidBodies.remove(m_rigidCollisionObject); + + /*if (m_ownManifold) + { + if (m_manifoldPtr) + m_dispatcher->releaseManifold(m_manifoldPtr); + } + */ + +} + + +#include + +void btSoftRigidCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + (void)dispatchInfo; + (void)resultOut; + //printf("btSoftRigidCollisionAlgorithm\n"); + + btSoftBody* softBody = m_isSwapped? (btSoftBody*)body1 : (btSoftBody*)body0; + btCollisionObject* rigidCollisionObject = m_isSwapped? body0 : body1; + + if (softBody->m_collisionDisabledObjects.findLinearSearch(rigidCollisionObject)==softBody->m_collisionDisabledObjects.size()) + { + softBody->defaultCollisionHandler(rigidCollisionObject); + } + + +} + +btScalar btSoftRigidCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) +{ + (void)resultOut; + (void)dispatchInfo; + (void)col0; + (void)col1; + + //not yet + return btScalar(1.); +} + + + diff --git a/extern/bullet2/BulletSoftBody/btSoftRigidCollisionAlgorithm.h b/extern/bullet2/BulletSoftBody/btSoftRigidCollisionAlgorithm.h new file mode 100644 index 00000000000..adc3844e363 --- /dev/null +++ b/extern/bullet2/BulletSoftBody/btSoftRigidCollisionAlgorithm.h @@ -0,0 +1,75 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SOFT_RIGID_COLLISION_ALGORITHM_H +#define SOFT_RIGID_COLLISION_ALGORITHM_H + +#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" +class btPersistentManifold; +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" + +#include "LinearMath/btVector3.h" +class btSoftBody; + +/// btSoftRigidCollisionAlgorithm provides collision detection between btSoftBody and btRigidBody +class btSoftRigidCollisionAlgorithm : public btCollisionAlgorithm +{ + // bool m_ownManifold; + // btPersistentManifold* m_manifoldPtr; + + btSoftBody* m_softBody; + btCollisionObject* m_rigidCollisionObject; + + ///for rigid versus soft (instead of soft versus rigid), we use this swapped boolean + bool m_isSwapped; + +public: + + btSoftRigidCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* col0,btCollisionObject* col1, bool isSwapped); + + virtual ~btSoftRigidCollisionAlgorithm(); + + virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual void getAllContactManifolds(btManifoldArray& manifoldArray) + { + //we don't add any manifolds + } + + + struct CreateFunc :public btCollisionAlgorithmCreateFunc + { + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) + { + void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSoftRigidCollisionAlgorithm)); + if (!m_swapped) + { + return new(mem) btSoftRigidCollisionAlgorithm(0,ci,body0,body1,false); + } else + { + return new(mem) btSoftRigidCollisionAlgorithm(0,ci,body0,body1,true); + } + } + }; + +}; + +#endif //SOFT_RIGID_COLLISION_ALGORITHM_H + + diff --git a/extern/bullet2/BulletSoftBody/btSoftRigidDynamicsWorld.cpp b/extern/bullet2/BulletSoftBody/btSoftRigidDynamicsWorld.cpp new file mode 100644 index 00000000000..9a3d040b593 --- /dev/null +++ b/extern/bullet2/BulletSoftBody/btSoftRigidDynamicsWorld.cpp @@ -0,0 +1,292 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#include "btSoftRigidDynamicsWorld.h" +#include "LinearMath/btQuickprof.h" + +//softbody & helpers +#include "btSoftBody.h" +#include "btSoftBodyHelpers.h" + + + + + +btSoftRigidDynamicsWorld::btSoftRigidDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration) +:btDiscreteDynamicsWorld(dispatcher,pairCache,constraintSolver,collisionConfiguration) +{ + m_drawFlags = fDrawFlags::Std; + m_drawNodeTree = true; + m_drawFaceTree = false; + m_drawClusterTree = false; + m_sbi.m_broadphase = pairCache; + m_sbi.m_dispatcher = dispatcher; + m_sbi.m_sparsesdf.Initialize(); + m_sbi.m_sparsesdf.Reset(); + +} + +btSoftRigidDynamicsWorld::~btSoftRigidDynamicsWorld() +{ + +} + +void btSoftRigidDynamicsWorld::predictUnconstraintMotion(btScalar timeStep) +{ + btDiscreteDynamicsWorld::predictUnconstraintMotion( timeStep); + + for ( int i=0;ipredictMotion(timeStep); + } +} + +void btSoftRigidDynamicsWorld::internalSingleStepSimulation( btScalar timeStep) +{ + btDiscreteDynamicsWorld::internalSingleStepSimulation( timeStep ); + + ///solve soft bodies constraints + solveSoftBodiesConstraints(); + + //self collisions + for ( int i=0;idefaultCollisionHandler(psb); + } + + ///update soft bodies + updateSoftBodies(); + +} + +void btSoftRigidDynamicsWorld::updateSoftBodies() +{ + BT_PROFILE("updateSoftBodies"); + + for ( int i=0;iintegrateMotion(); + } +} + +void btSoftRigidDynamicsWorld::solveSoftBodiesConstraints() +{ + BT_PROFILE("solveSoftConstraints"); + + if(m_softBodies.size()) + { + btSoftBody::solveClusters(m_softBodies); + } + + for(int i=0;isolveConstraints(); + } +} + +void btSoftRigidDynamicsWorld::addSoftBody(btSoftBody* body,short int collisionFilterGroup,short int collisionFilterMask) +{ + m_softBodies.push_back(body); + + btCollisionWorld::addCollisionObject(body, + collisionFilterGroup, + collisionFilterMask); + +} + +void btSoftRigidDynamicsWorld::removeSoftBody(btSoftBody* body) +{ + m_softBodies.remove(body); + + btCollisionWorld::removeCollisionObject(body); +} + +void btSoftRigidDynamicsWorld::removeCollisionObject(btCollisionObject* collisionObject) +{ + btSoftBody* body = btSoftBody::upcast(collisionObject); + if (body) + removeSoftBody(body); + else + btDiscreteDynamicsWorld::removeCollisionObject(collisionObject); +} + +void btSoftRigidDynamicsWorld::debugDrawWorld() +{ + btDiscreteDynamicsWorld::debugDrawWorld(); + + if (getDebugDrawer()) + { + int i; + for ( i=0;im_softBodies.size();i++) + { + btSoftBody* psb=(btSoftBody*)this->m_softBodies[i]; + btSoftBodyHelpers::DrawFrame(psb,m_debugDrawer); + btSoftBodyHelpers::Draw(psb,m_debugDrawer,m_drawFlags); + if (m_debugDrawer && (m_debugDrawer->getDebugMode() & btIDebugDraw::DBG_DrawAabb)) + { + if(m_drawNodeTree) btSoftBodyHelpers::DrawNodeTree(psb,m_debugDrawer); + if(m_drawFaceTree) btSoftBodyHelpers::DrawFaceTree(psb,m_debugDrawer); + if(m_drawClusterTree) btSoftBodyHelpers::DrawClusterTree(psb,m_debugDrawer); + } + } + } +} + + + + +struct btSoftSingleRayCallback : public btBroadphaseRayCallback +{ + btVector3 m_rayFromWorld; + btVector3 m_rayToWorld; + btTransform m_rayFromTrans; + btTransform m_rayToTrans; + btVector3 m_hitNormal; + + const btSoftRigidDynamicsWorld* m_world; + btCollisionWorld::RayResultCallback& m_resultCallback; + + btSoftSingleRayCallback(const btVector3& rayFromWorld,const btVector3& rayToWorld,const btSoftRigidDynamicsWorld* world,btCollisionWorld::RayResultCallback& resultCallback) + :m_rayFromWorld(rayFromWorld), + m_rayToWorld(rayToWorld), + m_world(world), + m_resultCallback(resultCallback) + { + m_rayFromTrans.setIdentity(); + m_rayFromTrans.setOrigin(m_rayFromWorld); + m_rayToTrans.setIdentity(); + m_rayToTrans.setOrigin(m_rayToWorld); + + btVector3 rayDir = (rayToWorld-rayFromWorld); + + rayDir.normalize (); + ///what about division by zero? --> just set rayDirection[i] to INF/1e30 + m_rayDirectionInverse[0] = rayDir[0] == btScalar(0.0) ? btScalar(1e30) : btScalar(1.0) / rayDir[0]; + m_rayDirectionInverse[1] = rayDir[1] == btScalar(0.0) ? btScalar(1e30) : btScalar(1.0) / rayDir[1]; + m_rayDirectionInverse[2] = rayDir[2] == btScalar(0.0) ? btScalar(1e30) : btScalar(1.0) / rayDir[2]; + m_signs[0] = m_rayDirectionInverse[0] < 0.0; + m_signs[1] = m_rayDirectionInverse[1] < 0.0; + m_signs[2] = m_rayDirectionInverse[2] < 0.0; + + m_lambda_max = rayDir.dot(m_rayToWorld-m_rayFromWorld); + + } + + + + virtual bool process(const btBroadphaseProxy* proxy) + { + ///terminate further ray tests, once the closestHitFraction reached zero + if (m_resultCallback.m_closestHitFraction == btScalar(0.f)) + return false; + + btCollisionObject* collisionObject = (btCollisionObject*)proxy->m_clientObject; + + //only perform raycast if filterMask matches + if(m_resultCallback.needsCollision(collisionObject->getBroadphaseHandle())) + { + //RigidcollisionObject* collisionObject = ctrl->GetRigidcollisionObject(); + //btVector3 collisionObjectAabbMin,collisionObjectAabbMax; +#if 0 +#ifdef RECALCULATE_AABB + btVector3 collisionObjectAabbMin,collisionObjectAabbMax; + collisionObject->getCollisionShape()->getAabb(collisionObject->getWorldTransform(),collisionObjectAabbMin,collisionObjectAabbMax); +#else + //getBroadphase()->getAabb(collisionObject->getBroadphaseHandle(),collisionObjectAabbMin,collisionObjectAabbMax); + const btVector3& collisionObjectAabbMin = collisionObject->getBroadphaseHandle()->m_aabbMin; + const btVector3& collisionObjectAabbMax = collisionObject->getBroadphaseHandle()->m_aabbMax; +#endif +#endif + //btScalar hitLambda = m_resultCallback.m_closestHitFraction; + //culling already done by broadphase + //if (btRayAabb(m_rayFromWorld,m_rayToWorld,collisionObjectAabbMin,collisionObjectAabbMax,hitLambda,m_hitNormal)) + { + m_world->rayTestSingle(m_rayFromTrans,m_rayToTrans, + collisionObject, + collisionObject->getCollisionShape(), + collisionObject->getWorldTransform(), + m_resultCallback); + } + } + return true; + } +}; + +void btSoftRigidDynamicsWorld::rayTest(const btVector3& rayFromWorld, const btVector3& rayToWorld, RayResultCallback& resultCallback) const +{ + BT_PROFILE("rayTest"); + /// use the broadphase to accelerate the search for objects, based on their aabb + /// and for each object with ray-aabb overlap, perform an exact ray test + btSoftSingleRayCallback rayCB(rayFromWorld,rayToWorld,this,resultCallback); + +#ifndef USE_BRUTEFORCE_RAYBROADPHASE + m_broadphasePairCache->rayTest(rayFromWorld,rayToWorld,rayCB); +#else + for (int i=0;igetNumCollisionObjects();i++) + { + rayCB.process(m_collisionObjects[i]->getBroadphaseHandle()); + } +#endif //USE_BRUTEFORCE_RAYBROADPHASE + +} + + +void btSoftRigidDynamicsWorld::rayTestSingle(const btTransform& rayFromTrans,const btTransform& rayToTrans, + btCollisionObject* collisionObject, + const btCollisionShape* collisionShape, + const btTransform& colObjWorldTransform, + RayResultCallback& resultCallback) +{ + if (collisionShape->isSoftBody()) { + btSoftBody* softBody = btSoftBody::upcast(collisionObject); + if (softBody) { + btSoftBody::sRayCast softResult; + if (softBody->rayTest(rayFromTrans.getOrigin(), rayToTrans.getOrigin(), softResult)) + { + + if (softResult.fraction<= resultCallback.m_closestHitFraction) + { + + btCollisionWorld::LocalShapeInfo shapeInfo; + shapeInfo.m_shapePart = 0; + shapeInfo.m_triangleIndex = softResult.index; + // get the normal + btVector3 normal = softBody->m_faces[softResult.index].m_normal; + btVector3 rayDir = rayToTrans.getOrigin() - rayFromTrans.getOrigin(); + if (normal.dot(rayDir) > 0) { + // normal always point toward origin of the ray + normal = -normal; + } + btCollisionWorld::LocalRayResult rayResult + (collisionObject, + &shapeInfo, + normal, + softResult.fraction); + bool normalInWorldSpace = true; + resultCallback.addSingleResult(rayResult,normalInWorldSpace); + } + } + } + } + else { + btCollisionWorld::rayTestSingle(rayFromTrans,rayToTrans,collisionObject,collisionShape,colObjWorldTransform,resultCallback); + } +} diff --git a/extern/bullet2/BulletSoftBody/btSoftRigidDynamicsWorld.h b/extern/bullet2/BulletSoftBody/btSoftRigidDynamicsWorld.h new file mode 100644 index 00000000000..f36a9b360c2 --- /dev/null +++ b/extern/bullet2/BulletSoftBody/btSoftRigidDynamicsWorld.h @@ -0,0 +1,97 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_SOFT_RIGID_DYNAMICS_WORLD_H +#define BT_SOFT_RIGID_DYNAMICS_WORLD_H + +#include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h" +#include "btSoftBody.h" + +typedef btAlignedObjectArray btSoftBodyArray; + +class btSoftRigidDynamicsWorld : public btDiscreteDynamicsWorld +{ + + btSoftBodyArray m_softBodies; + int m_drawFlags; + bool m_drawNodeTree; + bool m_drawFaceTree; + bool m_drawClusterTree; + btSoftBodyWorldInfo m_sbi; + +protected: + + virtual void predictUnconstraintMotion(btScalar timeStep); + + virtual void internalSingleStepSimulation( btScalar timeStep); + + void updateSoftBodies(); + + void solveSoftBodiesConstraints(); + + +public: + + btSoftRigidDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration); + + virtual ~btSoftRigidDynamicsWorld(); + + virtual void debugDrawWorld(); + + void addSoftBody(btSoftBody* body,short int collisionFilterGroup=btBroadphaseProxy::DefaultFilter,short int collisionFilterMask=btBroadphaseProxy::AllFilter); + + void removeSoftBody(btSoftBody* body); + + ///removeCollisionObject will first check if it is a rigid body, if so call removeRigidBody otherwise call btDiscreteDynamicsWorld::removeCollisionObject + virtual void removeCollisionObject(btCollisionObject* collisionObject); + + int getDrawFlags() const { return(m_drawFlags); } + void setDrawFlags(int f) { m_drawFlags=f; } + + btSoftBodyWorldInfo& getWorldInfo() + { + return m_sbi; + } + const btSoftBodyWorldInfo& getWorldInfo() const + { + return m_sbi; + } + + + btSoftBodyArray& getSoftBodyArray() + { + return m_softBodies; + } + + const btSoftBodyArray& getSoftBodyArray() const + { + return m_softBodies; + } + + + virtual void rayTest(const btVector3& rayFromWorld, const btVector3& rayToWorld, RayResultCallback& resultCallback) const; + + /// rayTestSingle performs a raycast call and calls the resultCallback. It is used internally by rayTest. + /// In a future implementation, we consider moving the ray test as a virtual method in btCollisionShape. + /// This allows more customization. + static void rayTestSingle(const btTransform& rayFromTrans,const btTransform& rayToTrans, + btCollisionObject* collisionObject, + const btCollisionShape* collisionShape, + const btTransform& colObjWorldTransform, + RayResultCallback& resultCallback); + +}; + +#endif //BT_SOFT_RIGID_DYNAMICS_WORLD_H diff --git a/extern/bullet2/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp b/extern/bullet2/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp new file mode 100644 index 00000000000..85a727944e0 --- /dev/null +++ b/extern/bullet2/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp @@ -0,0 +1,46 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btSoftSoftCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" +#include "BulletCollision/CollisionShapes/btBoxShape.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "btSoftBody.h" + +#define USE_PERSISTENT_CONTACTS 1 + +btSoftSoftCollisionAlgorithm::btSoftSoftCollisionAlgorithm(btPersistentManifold* /*mf*/,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* /*obj0*/,btCollisionObject* /*obj1*/) +: btCollisionAlgorithm(ci) +//m_ownManifold(false), +//m_manifoldPtr(mf) +{ +} + +btSoftSoftCollisionAlgorithm::~btSoftSoftCollisionAlgorithm() +{ +} + +void btSoftSoftCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& /*dispatchInfo*/,btManifoldResult* /*resultOut*/) +{ + btSoftBody* soft0 = (btSoftBody*)body0; + btSoftBody* soft1 = (btSoftBody*)body1; + soft0->defaultCollisionHandler(soft1); +} + +btScalar btSoftSoftCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* /*body0*/,btCollisionObject* /*body1*/,const btDispatcherInfo& /*dispatchInfo*/,btManifoldResult* /*resultOut*/) +{ + //not yet + return 1.f; +} diff --git a/extern/bullet2/BulletSoftBody/btSoftSoftCollisionAlgorithm.h b/extern/bullet2/BulletSoftBody/btSoftSoftCollisionAlgorithm.h new file mode 100644 index 00000000000..1b34e0af60f --- /dev/null +++ b/extern/bullet2/BulletSoftBody/btSoftSoftCollisionAlgorithm.h @@ -0,0 +1,69 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SOFT_SOFT_COLLISION_ALGORITHM_H +#define SOFT_SOFT_COLLISION_ALGORITHM_H + +#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" +#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" +#include "BulletCollision/BroadphaseCollision/btDispatcher.h" +#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" + +class btPersistentManifold; +class btSoftBody; + +///collision detection between two btSoftBody shapes +class btSoftSoftCollisionAlgorithm : public btCollisionAlgorithm +{ + bool m_ownManifold; + btPersistentManifold* m_manifoldPtr; + + btSoftBody* m_softBody0; + btSoftBody* m_softBody1; + + +public: + btSoftSoftCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci) + : btCollisionAlgorithm(ci) {} + + virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); + + virtual void getAllContactManifolds(btManifoldArray& manifoldArray) + { + if (m_manifoldPtr && m_ownManifold) + manifoldArray.push_back(m_manifoldPtr); + } + + btSoftSoftCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1); + + virtual ~btSoftSoftCollisionAlgorithm(); + + struct CreateFunc :public btCollisionAlgorithmCreateFunc + { + virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) + { + int bbsize = sizeof(btSoftSoftCollisionAlgorithm); + void* ptr = ci.m_dispatcher1->allocateCollisionAlgorithm(bbsize); + return new(ptr) btSoftSoftCollisionAlgorithm(0,ci,body0,body1); + } + }; + +}; + +#endif //SOFT_SOFT_COLLISION_ALGORITHM_H + + diff --git a/extern/bullet2/BulletSoftBody/btSparseSDF.h b/extern/bullet2/BulletSoftBody/btSparseSDF.h new file mode 100644 index 00000000000..cc4266732ae --- /dev/null +++ b/extern/bullet2/BulletSoftBody/btSparseSDF.h @@ -0,0 +1,306 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ +///btSparseSdf implementation by Nathanael Presson + +#ifndef _14F9D17F_EAE8_4aba_B41C_292DB2AA70F3_ +#define _14F9D17F_EAE8_4aba_B41C_292DB2AA70F3_ + +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" +#include "BulletCollision/NarrowPhaseCollision/btGjkEpa2.h" + +// Modified Paul Hsieh hash +template +unsigned int HsiehHash(const void* pdata) +{ + const unsigned short* data=(const unsigned short*)pdata; + unsigned hash=DWORDLEN<<2,tmp; + for(int i=0;i>11; + } + hash^=hash<<3;hash+=hash>>5; + hash^=hash<<4;hash+=hash>>17; + hash^=hash<<25;hash+=hash>>6; + return(hash); +} + +template +struct btSparseSdf +{ + // + // Inner types + // + struct IntFrac + { + int b; + int i; + btScalar f; + }; + struct Cell + { + btScalar d[CELLSIZE+1][CELLSIZE+1][CELLSIZE+1]; + int c[3]; + int puid; + unsigned hash; + btCollisionShape* pclient; + Cell* next; + }; + // + // Fields + // + + btAlignedObjectArray cells; + btScalar voxelsz; + int puid; + int ncells; + int nprobes; + int nqueries; + + // + // Methods + // + + // + void Initialize(int hashsize=2383) + { + cells.resize(hashsize,0); + Reset(); + } + // + void Reset() + { + for(int i=0,ni=cells.size();inext; + delete pc; + pc=pn; + } + } + voxelsz =0.25; + puid =0; + ncells =0; + nprobes =1; + nqueries =1; + } + // + void GarbageCollect(int lifetime=256) + { + const int life=puid-lifetime; + for(int i=0;inext; + if(pc->puidnext=pn; else root=pn; + delete pc;pc=pp;--ncells; + } + pp=pc;pc=pn; + } + } + //printf("GC[%d]: %d cells, PpQ: %f\r\n",puid,ncells,nprobes/(btScalar)nqueries); + nqueries=1; + nprobes=1; + ++puid; ///@todo: Reset puid's when int range limit is reached */ + /* else setup a priority list... */ + } + // + int RemoveReferences(btCollisionShape* pcs) + { + int refcount=0; + for(int i=0;inext; + if(pc->pclient==pcs) + { + if(pp) pp->next=pn; else root=pn; + delete pc;pc=pp;++refcount; + } + pp=pc;pc=pn; + } + } + return(refcount); + } + // + btScalar Evaluate( const btVector3& x, + btCollisionShape* shape, + btVector3& normal, + btScalar margin) + { + /* Lookup cell */ + const btVector3 scx=x/voxelsz; + const IntFrac ix=Decompose(scx.x()); + const IntFrac iy=Decompose(scx.y()); + const IntFrac iz=Decompose(scx.z()); + const unsigned h=Hash(ix.b,iy.b,iz.b,shape); + Cell*& root=cells[static_cast(h%cells.size())]; + Cell* c=root; + ++nqueries; + while(c) + { + ++nprobes; + if( (c->hash==h) && + (c->c[0]==ix.b) && + (c->c[1]==iy.b) && + (c->c[2]==iz.b) && + (c->pclient==shape)) + { break; } + else + { c=c->next; } + } + if(!c) + { + ++nprobes; + ++ncells; + c=new Cell(); + c->next=root;root=c; + c->pclient=shape; + c->hash=h; + c->c[0]=ix.b;c->c[1]=iy.b;c->c[2]=iz.b; + BuildCell(*c); + } + c->puid=puid; + /* Extract infos */ + const int o[]={ ix.i,iy.i,iz.i}; + const btScalar d[]={ c->d[o[0]+0][o[1]+0][o[2]+0], + c->d[o[0]+1][o[1]+0][o[2]+0], + c->d[o[0]+1][o[1]+1][o[2]+0], + c->d[o[0]+0][o[1]+1][o[2]+0], + c->d[o[0]+0][o[1]+0][o[2]+1], + c->d[o[0]+1][o[1]+0][o[2]+1], + c->d[o[0]+1][o[1]+1][o[2]+1], + c->d[o[0]+0][o[1]+1][o[2]+1]}; + /* Normal */ +#if 1 + const btScalar gx[]={ d[1]-d[0],d[2]-d[3], + d[5]-d[4],d[6]-d[7]}; + const btScalar gy[]={ d[3]-d[0],d[2]-d[1], + d[7]-d[4],d[6]-d[5]}; + const btScalar gz[]={ d[4]-d[0],d[5]-d[1], + d[7]-d[3],d[6]-d[2]}; + normal.setX(Lerp( Lerp(gx[0],gx[1],iy.f), + Lerp(gx[2],gx[3],iy.f),iz.f)); + normal.setY(Lerp( Lerp(gy[0],gy[1],ix.f), + Lerp(gy[2],gy[3],ix.f),iz.f)); + normal.setZ(Lerp( Lerp(gz[0],gz[1],ix.f), + Lerp(gz[2],gz[3],ix.f),iy.f)); + normal = normal.normalized(); +#else + normal = btVector3(d[1]-d[0],d[3]-d[0],d[4]-d[0]).normalized(); +#endif + /* Distance */ + const btScalar d0=Lerp(Lerp(d[0],d[1],ix.f), + Lerp(d[3],d[2],ix.f),iy.f); + const btScalar d1=Lerp(Lerp(d[4],d[5],ix.f), + Lerp(d[7],d[6],ix.f),iy.f); + return(Lerp(d0,d1,iz.f)-margin); + } + // + void BuildCell(Cell& c) + { + const btVector3 org=btVector3( (btScalar)c.c[0], + (btScalar)c.c[1], + (btScalar)c.c[2]) * + CELLSIZE*voxelsz; + for(int k=0;k<=CELLSIZE;++k) + { + const btScalar z=voxelsz*k+org.z(); + for(int j=0;j<=CELLSIZE;++j) + { + const btScalar y=voxelsz*j+org.y(); + for(int i=0;i<=CELLSIZE;++i) + { + const btScalar x=voxelsz*i+org.x(); + c.d[i][j][k]=DistanceToShape( btVector3(x,y,z), + c.pclient); + } + } + } + } + // + static inline btScalar DistanceToShape(const btVector3& x, + btCollisionShape* shape) + { + btTransform unit; + unit.setIdentity(); + if(shape->isConvex()) + { + btGjkEpaSolver2::sResults res; + btConvexShape* csh=static_cast(shape); + return(btGjkEpaSolver2::SignedDistance(x,0,csh,unit,res)); + } + return(0); + } + // + static inline IntFrac Decompose(btScalar x) + { + /* That one need a lot of improvements... */ + /* Remove test, faster floor... */ + IntFrac r; + x/=CELLSIZE; + const int o=x<0?(int)(-x+1):0; + x+=o;r.b=(int)x; + const btScalar k=(x-r.b)*CELLSIZE; + r.i=(int)k;r.f=k-r.i;r.b-=o; + return(r); + } + // + static inline btScalar Lerp(btScalar a,btScalar b,btScalar t) + { + return(a+(b-a)*t); + } + + + + // + static inline unsigned int Hash(int x,int y,int z,btCollisionShape* shape) + { + struct btS + { + int x,y,z; + void* p; + }; + + btS myset; + + myset.x=x;myset.y=y;myset.z=z;myset.p=shape; + const void* ptr = &myset; + + unsigned int result = HsiehHash (ptr); + + + return result; + } +}; + + +#endif diff --git a/extern/bullet2/CMakeLists.txt b/extern/bullet2/CMakeLists.txt index 3054ed98908..9b8a5a7e00e 100644 --- a/extern/bullet2/CMakeLists.txt +++ b/extern/bullet2/CMakeLists.txt @@ -1,43 +1,4 @@ -# $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2006, Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): Jacques Beaurai, Erwin Coumans -# -# ***** END GPL LICENSE BLOCK ***** - -SET(INC . src) - -FILE(GLOB SRC - src/LinearMath/*.cpp - src/BulletCollision/BroadphaseCollision/*.cpp - src/BulletCollision/CollisionShapes/*.cpp - src/BulletCollision/NarrowPhaseCollision/*.cpp - src/BulletCollision/Gimpact/*.cpp - src/BulletCollision/CollisionDispatch/*.cpp - src/BulletDynamics/ConstraintSolver/*.cpp - src/BulletDynamics/Vehicle/*.cpp - src/BulletDynamics/Dynamics/*.cpp - src/BulletSoftBody/*.cpp -) - -BLENDERLIB(extern_bullet "${SRC}" "${INC}") - +ADD_SUBDIRECTORY(BulletCollision) +ADD_SUBDIRECTORY(BulletDynamics) +ADD_SUBDIRECTORY(LinearMath) +ADD_SUBDIRECTORY(BulletSoftBody ) diff --git a/extern/bullet2/LinearMath/CMakeLists.txt b/extern/bullet2/LinearMath/CMakeLists.txt new file mode 100644 index 00000000000..faec5ebee5a --- /dev/null +++ b/extern/bullet2/LinearMath/CMakeLists.txt @@ -0,0 +1,61 @@ + +INCLUDE_DIRECTORIES( + ${BULLET_PHYSICS_SOURCE_DIR}/src +) + +SET(LinearMath_SRCS + btAlignedAllocator.cpp + btConvexHull.cpp + btGeometryUtil.cpp + btQuickprof.cpp + btSerializer.cpp +) + +SET(LinearMath_HDRS + btAabbUtil2.h + btAlignedAllocator.h + btAlignedObjectArray.h + btConvexHull.h + btDefaultMotionState.h + btGeometryUtil.h + btHashMap.h + btIDebugDraw.h + btList.h + btMatrix3x3.h + btMinMax.h + btMotionState.h + btPoolAllocator.h + btQuadWord.h + btQuaternion.h + btQuickprof.h + btRandom.h + btScalar.h + btSerializer.h + btStackAlloc.h + btTransform.h + btTransformUtil.h + btVector3.h +) + +ADD_LIBRARY(LinearMath ${LinearMath_SRCS} ${LinearMath_HDRS}) +SET_TARGET_PROPERTIES(LinearMath PROPERTIES VERSION ${BULLET_VERSION}) +SET_TARGET_PROPERTIES(LinearMath PROPERTIES SOVERSION ${BULLET_VERSION}) + +IF (INSTALL_LIBS) + IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) + #FILES_MATCHING requires CMake 2.6 + IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) + IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + INSTALL(TARGETS LinearMath DESTINATION .) + ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + INSTALL(TARGETS LinearMath DESTINATION lib${LIB_SUFFIX}) + INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h") + ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) + + IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + SET_TARGET_PROPERTIES(LinearMath PROPERTIES FRAMEWORK true) + SET_TARGET_PROPERTIES(LinearMath PROPERTIES PUBLIC_HEADER ${LinearMath_HDRS}) + ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) +ENDIF (INSTALL_LIBS) \ No newline at end of file diff --git a/extern/bullet2/LinearMath/btAabbUtil2.h b/extern/bullet2/LinearMath/btAabbUtil2.h new file mode 100644 index 00000000000..532ce1bf633 --- /dev/null +++ b/extern/bullet2/LinearMath/btAabbUtil2.h @@ -0,0 +1,236 @@ +/* +Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#ifndef AABB_UTIL2 +#define AABB_UTIL2 + +#include "btTransform.h" +#include "btVector3.h" +#include "btMinMax.h" + + + +SIMD_FORCE_INLINE void AabbExpand (btVector3& aabbMin, + btVector3& aabbMax, + const btVector3& expansionMin, + const btVector3& expansionMax) +{ + aabbMin = aabbMin + expansionMin; + aabbMax = aabbMax + expansionMax; +} + +/// conservative test for overlap between two aabbs +SIMD_FORCE_INLINE bool TestPointAgainstAabb2(const btVector3 &aabbMin1, const btVector3 &aabbMax1, + const btVector3 &point) +{ + bool overlap = true; + overlap = (aabbMin1.getX() > point.getX() || aabbMax1.getX() < point.getX()) ? false : overlap; + overlap = (aabbMin1.getZ() > point.getZ() || aabbMax1.getZ() < point.getZ()) ? false : overlap; + overlap = (aabbMin1.getY() > point.getY() || aabbMax1.getY() < point.getY()) ? false : overlap; + return overlap; +} + + +/// conservative test for overlap between two aabbs +SIMD_FORCE_INLINE bool TestAabbAgainstAabb2(const btVector3 &aabbMin1, const btVector3 &aabbMax1, + const btVector3 &aabbMin2, const btVector3 &aabbMax2) +{ + bool overlap = true; + overlap = (aabbMin1.getX() > aabbMax2.getX() || aabbMax1.getX() < aabbMin2.getX()) ? false : overlap; + overlap = (aabbMin1.getZ() > aabbMax2.getZ() || aabbMax1.getZ() < aabbMin2.getZ()) ? false : overlap; + overlap = (aabbMin1.getY() > aabbMax2.getY() || aabbMax1.getY() < aabbMin2.getY()) ? false : overlap; + return overlap; +} + +/// conservative test for overlap between triangle and aabb +SIMD_FORCE_INLINE bool TestTriangleAgainstAabb2(const btVector3 *vertices, + const btVector3 &aabbMin, const btVector3 &aabbMax) +{ + const btVector3 &p1 = vertices[0]; + const btVector3 &p2 = vertices[1]; + const btVector3 &p3 = vertices[2]; + + if (btMin(btMin(p1[0], p2[0]), p3[0]) > aabbMax[0]) return false; + if (btMax(btMax(p1[0], p2[0]), p3[0]) < aabbMin[0]) return false; + + if (btMin(btMin(p1[2], p2[2]), p3[2]) > aabbMax[2]) return false; + if (btMax(btMax(p1[2], p2[2]), p3[2]) < aabbMin[2]) return false; + + if (btMin(btMin(p1[1], p2[1]), p3[1]) > aabbMax[1]) return false; + if (btMax(btMax(p1[1], p2[1]), p3[1]) < aabbMin[1]) return false; + return true; +} + + +SIMD_FORCE_INLINE int btOutcode(const btVector3& p,const btVector3& halfExtent) +{ + return (p.getX() < -halfExtent.getX() ? 0x01 : 0x0) | + (p.getX() > halfExtent.getX() ? 0x08 : 0x0) | + (p.getY() < -halfExtent.getY() ? 0x02 : 0x0) | + (p.getY() > halfExtent.getY() ? 0x10 : 0x0) | + (p.getZ() < -halfExtent.getZ() ? 0x4 : 0x0) | + (p.getZ() > halfExtent.getZ() ? 0x20 : 0x0); +} + + + +SIMD_FORCE_INLINE bool btRayAabb2(const btVector3& rayFrom, + const btVector3& rayInvDirection, + const unsigned int raySign[3], + const btVector3 bounds[2], + btScalar& tmin, + btScalar lambda_min, + btScalar lambda_max) +{ + btScalar tmax, tymin, tymax, tzmin, tzmax; + tmin = (bounds[raySign[0]].getX() - rayFrom.getX()) * rayInvDirection.getX(); + tmax = (bounds[1-raySign[0]].getX() - rayFrom.getX()) * rayInvDirection.getX(); + tymin = (bounds[raySign[1]].getY() - rayFrom.getY()) * rayInvDirection.getY(); + tymax = (bounds[1-raySign[1]].getY() - rayFrom.getY()) * rayInvDirection.getY(); + + if ( (tmin > tymax) || (tymin > tmax) ) + return false; + + if (tymin > tmin) + tmin = tymin; + + if (tymax < tmax) + tmax = tymax; + + tzmin = (bounds[raySign[2]].getZ() - rayFrom.getZ()) * rayInvDirection.getZ(); + tzmax = (bounds[1-raySign[2]].getZ() - rayFrom.getZ()) * rayInvDirection.getZ(); + + if ( (tmin > tzmax) || (tzmin > tmax) ) + return false; + if (tzmin > tmin) + tmin = tzmin; + if (tzmax < tmax) + tmax = tzmax; + return ( (tmin < lambda_max) && (tmax > lambda_min) ); +} + +SIMD_FORCE_INLINE bool btRayAabb(const btVector3& rayFrom, + const btVector3& rayTo, + const btVector3& aabbMin, + const btVector3& aabbMax, + btScalar& param, btVector3& normal) +{ + btVector3 aabbHalfExtent = (aabbMax-aabbMin)* btScalar(0.5); + btVector3 aabbCenter = (aabbMax+aabbMin)* btScalar(0.5); + btVector3 source = rayFrom - aabbCenter; + btVector3 target = rayTo - aabbCenter; + int sourceOutcode = btOutcode(source,aabbHalfExtent); + int targetOutcode = btOutcode(target,aabbHalfExtent); + if ((sourceOutcode & targetOutcode) == 0x0) + { + btScalar lambda_enter = btScalar(0.0); + btScalar lambda_exit = param; + btVector3 r = target - source; + int i; + btScalar normSign = 1; + btVector3 hitNormal(0,0,0); + int bit=1; + + for (int j=0;j<2;j++) + { + for (i = 0; i != 3; ++i) + { + if (sourceOutcode & bit) + { + btScalar lambda = (-source[i] - aabbHalfExtent[i]*normSign) / r[i]; + if (lambda_enter <= lambda) + { + lambda_enter = lambda; + hitNormal.setValue(0,0,0); + hitNormal[i] = normSign; + } + } + else if (targetOutcode & bit) + { + btScalar lambda = (-source[i] - aabbHalfExtent[i]*normSign) / r[i]; + btSetMin(lambda_exit, lambda); + } + bit<<=1; + } + normSign = btScalar(-1.); + } + if (lambda_enter <= lambda_exit) + { + param = lambda_enter; + normal = hitNormal; + return true; + } + } + return false; +} + + + +SIMD_FORCE_INLINE void btTransformAabb(const btVector3& halfExtents, btScalar margin,const btTransform& t,btVector3& aabbMinOut,btVector3& aabbMaxOut) +{ + btVector3 halfExtentsWithMargin = halfExtents+btVector3(margin,margin,margin); + btMatrix3x3 abs_b = t.getBasis().absolute(); + btVector3 center = t.getOrigin(); + btVector3 extent = btVector3(abs_b[0].dot(halfExtentsWithMargin), + abs_b[1].dot(halfExtentsWithMargin), + abs_b[2].dot(halfExtentsWithMargin)); + aabbMinOut = center - extent; + aabbMaxOut = center + extent; +} + + +SIMD_FORCE_INLINE void btTransformAabb(const btVector3& localAabbMin,const btVector3& localAabbMax, btScalar margin,const btTransform& trans,btVector3& aabbMinOut,btVector3& aabbMaxOut) +{ + btAssert(localAabbMin.getX() <= localAabbMax.getX()); + btAssert(localAabbMin.getY() <= localAabbMax.getY()); + btAssert(localAabbMin.getZ() <= localAabbMax.getZ()); + btVector3 localHalfExtents = btScalar(0.5)*(localAabbMax-localAabbMin); + localHalfExtents+=btVector3(margin,margin,margin); + + btVector3 localCenter = btScalar(0.5)*(localAabbMax+localAabbMin); + btMatrix3x3 abs_b = trans.getBasis().absolute(); + btVector3 center = trans(localCenter); + btVector3 extent = btVector3(abs_b[0].dot(localHalfExtents), + abs_b[1].dot(localHalfExtents), + abs_b[2].dot(localHalfExtents)); + aabbMinOut = center-extent; + aabbMaxOut = center+extent; +} + +#define USE_BANCHLESS 1 +#ifdef USE_BANCHLESS + //This block replaces the block below and uses no branches, and replaces the 8 bit return with a 32 bit return for improved performance (~3x on XBox 360) + SIMD_FORCE_INLINE unsigned testQuantizedAabbAgainstQuantizedAabb(const unsigned short int* aabbMin1,const unsigned short int* aabbMax1,const unsigned short int* aabbMin2,const unsigned short int* aabbMax2) + { + return static_cast(btSelect((unsigned)((aabbMin1[0] <= aabbMax2[0]) & (aabbMax1[0] >= aabbMin2[0]) + & (aabbMin1[2] <= aabbMax2[2]) & (aabbMax1[2] >= aabbMin2[2]) + & (aabbMin1[1] <= aabbMax2[1]) & (aabbMax1[1] >= aabbMin2[1])), + 1, 0)); + } +#else + SIMD_FORCE_INLINE bool testQuantizedAabbAgainstQuantizedAabb(const unsigned short int* aabbMin1,const unsigned short int* aabbMax1,const unsigned short int* aabbMin2,const unsigned short int* aabbMax2) + { + bool overlap = true; + overlap = (aabbMin1[0] > aabbMax2[0] || aabbMax1[0] < aabbMin2[0]) ? false : overlap; + overlap = (aabbMin1[2] > aabbMax2[2] || aabbMax1[2] < aabbMin2[2]) ? false : overlap; + overlap = (aabbMin1[1] > aabbMax2[1] || aabbMax1[1] < aabbMin2[1]) ? false : overlap; + return overlap; + } +#endif //USE_BANCHLESS + +#endif + + diff --git a/extern/bullet2/LinearMath/btAlignedAllocator.cpp b/extern/bullet2/LinearMath/btAlignedAllocator.cpp new file mode 100644 index 00000000000..a3d790f8abc --- /dev/null +++ b/extern/bullet2/LinearMath/btAlignedAllocator.cpp @@ -0,0 +1,205 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#include "btAlignedAllocator.h" + +int gNumAlignedAllocs = 0; +int gNumAlignedFree = 0; +int gTotalBytesAlignedAllocs = 0;//detect memory leaks + +static void *btAllocDefault(size_t size) +{ + return malloc(size); +} + +static void btFreeDefault(void *ptr) +{ + free(ptr); +} + +static btAllocFunc *sAllocFunc = btAllocDefault; +static btFreeFunc *sFreeFunc = btFreeDefault; + + + +#if defined (BT_HAS_ALIGNED_ALLOCATOR) +#include +static void *btAlignedAllocDefault(size_t size, int alignment) +{ + return _aligned_malloc(size, (size_t)alignment); +} + +static void btAlignedFreeDefault(void *ptr) +{ + _aligned_free(ptr); +} +#elif defined(__CELLOS_LV2__) +#include + +static inline void *btAlignedAllocDefault(size_t size, int alignment) +{ + return memalign(alignment, size); +} + +static inline void btAlignedFreeDefault(void *ptr) +{ + free(ptr); +} +#else +static inline void *btAlignedAllocDefault(size_t size, int alignment) +{ + void *ret; + char *real; + unsigned long offset; + + real = (char *)sAllocFunc(size + sizeof(void *) + (alignment-1)); + if (real) { + offset = (alignment - (unsigned long)(real + sizeof(void *))) & (alignment-1); + ret = (void *)((real + sizeof(void *)) + offset); + *((void **)(ret)-1) = (void *)(real); + } else { + ret = (void *)(real); + } + return (ret); +} + +static inline void btAlignedFreeDefault(void *ptr) +{ + void* real; + + if (ptr) { + real = *((void **)(ptr)-1); + sFreeFunc(real); + } +} +#endif + + +static btAlignedAllocFunc *sAlignedAllocFunc = btAlignedAllocDefault; +static btAlignedFreeFunc *sAlignedFreeFunc = btAlignedFreeDefault; + +void btAlignedAllocSetCustomAligned(btAlignedAllocFunc *allocFunc, btAlignedFreeFunc *freeFunc) +{ + sAlignedAllocFunc = allocFunc ? allocFunc : btAlignedAllocDefault; + sAlignedFreeFunc = freeFunc ? freeFunc : btAlignedFreeDefault; +} + +void btAlignedAllocSetCustom(btAllocFunc *allocFunc, btFreeFunc *freeFunc) +{ + sAllocFunc = allocFunc ? allocFunc : btAllocDefault; + sFreeFunc = freeFunc ? freeFunc : btFreeDefault; +} + +#ifdef BT_DEBUG_MEMORY_ALLOCATIONS +//this generic allocator provides the total allocated number of bytes +#include + +void* btAlignedAllocInternal (size_t size, int alignment,int line,char* filename) +{ + void *ret; + char *real; + unsigned long offset; + + gTotalBytesAlignedAllocs += size; + gNumAlignedAllocs++; + + + real = (char *)sAllocFunc(size + 2*sizeof(void *) + (alignment-1)); + if (real) { + offset = (alignment - (unsigned long)(real + 2*sizeof(void *))) & +(alignment-1); + ret = (void *)((real + 2*sizeof(void *)) + offset); + *((void **)(ret)-1) = (void *)(real); + *((int*)(ret)-2) = size; + + } else { + ret = (void *)(real);//?? + } + + printf("allocation#%d at address %x, from %s,line %d, size %d\n",gNumAlignedAllocs,real, filename,line,size); + + int* ptr = (int*)ret; + *ptr = 12; + return (ret); +} + +void btAlignedFreeInternal (void* ptr,int line,char* filename) +{ + + void* real; + gNumAlignedFree++; + + if (ptr) { + real = *((void **)(ptr)-1); + int size = *((int*)(ptr)-2); + gTotalBytesAlignedAllocs -= size; + + printf("free #%d at address %x, from %s,line %d, size %d\n",gNumAlignedFree,real, filename,line,size); + + sFreeFunc(real); + } else + { + printf("NULL ptr\n"); + } +} + +#else //BT_DEBUG_MEMORY_ALLOCATIONS + +void* btAlignedAllocInternal (size_t size, int alignment) +{ + gNumAlignedAllocs++; + void* ptr; +#if defined (BT_HAS_ALIGNED_ALLOCATOR) || defined(__CELLOS_LV2__) + ptr = sAlignedAllocFunc(size, alignment); +#else + char *real; + unsigned long offset; + + real = (char *)sAllocFunc(size + sizeof(void *) + (alignment-1)); + if (real) { + offset = (alignment - (unsigned long)(real + sizeof(void *))) & (alignment-1); + ptr = (void *)((real + sizeof(void *)) + offset); + *((void **)(ptr)-1) = (void *)(real); + } else { + ptr = (void *)(real); + } +#endif // defined (BT_HAS_ALIGNED_ALLOCATOR) || defined(__CELLOS_LV2__) +// printf("btAlignedAllocInternal %d, %x\n",size,ptr); + return ptr; +} + +void btAlignedFreeInternal (void* ptr) +{ + if (!ptr) + { + return; + } + + gNumAlignedFree++; +// printf("btAlignedFreeInternal %x\n",ptr); +#if defined (BT_HAS_ALIGNED_ALLOCATOR) || defined(__CELLOS_LV2__) + sAlignedFreeFunc(ptr); +#else + void* real; + + if (ptr) { + real = *((void **)(ptr)-1); + sFreeFunc(real); + } +#endif // defined (BT_HAS_ALIGNED_ALLOCATOR) || defined(__CELLOS_LV2__) +} + +#endif //BT_DEBUG_MEMORY_ALLOCATIONS + diff --git a/extern/bullet2/LinearMath/btAlignedAllocator.h b/extern/bullet2/LinearMath/btAlignedAllocator.h new file mode 100644 index 00000000000..f168f3c66c7 --- /dev/null +++ b/extern/bullet2/LinearMath/btAlignedAllocator.h @@ -0,0 +1,107 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_ALIGNED_ALLOCATOR +#define BT_ALIGNED_ALLOCATOR + +///we probably replace this with our own aligned memory allocator +///so we replace _aligned_malloc and _aligned_free with our own +///that is better portable and more predictable + +#include "btScalar.h" +//#define BT_DEBUG_MEMORY_ALLOCATIONS 1 +#ifdef BT_DEBUG_MEMORY_ALLOCATIONS + +#define btAlignedAlloc(a,b) \ + btAlignedAllocInternal(a,b,__LINE__,__FILE__) + +#define btAlignedFree(ptr) \ + btAlignedFreeInternal(ptr,__LINE__,__FILE__) + +void* btAlignedAllocInternal (size_t size, int alignment,int line,char* filename); + +void btAlignedFreeInternal (void* ptr,int line,char* filename); + +#else + void* btAlignedAllocInternal (size_t size, int alignment); + void btAlignedFreeInternal (void* ptr); + + #define btAlignedAlloc(size,alignment) btAlignedAllocInternal(size,alignment) + #define btAlignedFree(ptr) btAlignedFreeInternal(ptr) + +#endif +typedef int size_type; + +typedef void *(btAlignedAllocFunc)(size_t size, int alignment); +typedef void (btAlignedFreeFunc)(void *memblock); +typedef void *(btAllocFunc)(size_t size); +typedef void (btFreeFunc)(void *memblock); + +///The developer can let all Bullet memory allocations go through a custom memory allocator, using btAlignedAllocSetCustom +void btAlignedAllocSetCustom(btAllocFunc *allocFunc, btFreeFunc *freeFunc); +///If the developer has already an custom aligned allocator, then btAlignedAllocSetCustomAligned can be used. The default aligned allocator pre-allocates extra memory using the non-aligned allocator, and instruments it. +void btAlignedAllocSetCustomAligned(btAlignedAllocFunc *allocFunc, btAlignedFreeFunc *freeFunc); + + +///The btAlignedAllocator is a portable class for aligned memory allocations. +///Default implementations for unaligned and aligned allocations can be overridden by a custom allocator using btAlignedAllocSetCustom and btAlignedAllocSetCustomAligned. +template < typename T , unsigned Alignment > +class btAlignedAllocator { + + typedef btAlignedAllocator< T , Alignment > self_type; + +public: + + //just going down a list: + btAlignedAllocator() {} + /* + btAlignedAllocator( const self_type & ) {} + */ + + template < typename Other > + btAlignedAllocator( const btAlignedAllocator< Other , Alignment > & ) {} + + typedef const T* const_pointer; + typedef const T& const_reference; + typedef T* pointer; + typedef T& reference; + typedef T value_type; + + pointer address ( reference ref ) const { return &ref; } + const_pointer address ( const_reference ref ) const { return &ref; } + pointer allocate ( size_type n , const_pointer * hint = 0 ) { + (void)hint; + return reinterpret_cast< pointer >(btAlignedAlloc( sizeof(value_type) * n , Alignment )); + } + void construct ( pointer ptr , const value_type & value ) { new (ptr) value_type( value ); } + void deallocate( pointer ptr ) { + btAlignedFree( reinterpret_cast< void * >( ptr ) ); + } + void destroy ( pointer ptr ) { ptr->~value_type(); } + + + template < typename O > struct rebind { + typedef btAlignedAllocator< O , Alignment > other; + }; + template < typename O > + self_type & operator=( const btAlignedAllocator< O , Alignment > & ) { return *this; } + + friend bool operator==( const self_type & , const self_type & ) { return true; } +}; + + + +#endif //BT_ALIGNED_ALLOCATOR + diff --git a/extern/bullet2/LinearMath/btAlignedObjectArray.h b/extern/bullet2/LinearMath/btAlignedObjectArray.h new file mode 100644 index 00000000000..257317b21f7 --- /dev/null +++ b/extern/bullet2/LinearMath/btAlignedObjectArray.h @@ -0,0 +1,464 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef BT_OBJECT_ARRAY__ +#define BT_OBJECT_ARRAY__ + +#include "btScalar.h" // has definitions like SIMD_FORCE_INLINE +#include "btAlignedAllocator.h" + +///If the platform doesn't support placement new, you can disable BT_USE_PLACEMENT_NEW +///then the btAlignedObjectArray doesn't support objects with virtual methods, and non-trivial constructors/destructors +///You can enable BT_USE_MEMCPY, then swapping elements in the array will use memcpy instead of operator= +///see discussion here: http://continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1231 and +///http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1240 + +#define BT_USE_PLACEMENT_NEW 1 +//#define BT_USE_MEMCPY 1 //disable, because it is cumbersome to find out for each platform where memcpy is defined. It can be in or or otherwise... + +#ifdef BT_USE_MEMCPY +#include +#include +#endif //BT_USE_MEMCPY + +#ifdef BT_USE_PLACEMENT_NEW +#include //for placement new +#endif //BT_USE_PLACEMENT_NEW + + +///The btAlignedObjectArray template class uses a subset of the stl::vector interface for its methods +///It is developed to replace stl::vector to avoid portability issues, including STL alignment issues to add SIMD/SSE data +template +//template +class btAlignedObjectArray +{ + btAlignedAllocator m_allocator; + + int m_size; + int m_capacity; + T* m_data; + //PCK: added this line + bool m_ownsMemory; + + protected: + SIMD_FORCE_INLINE int allocSize(int size) + { + return (size ? size*2 : 1); + } + SIMD_FORCE_INLINE void copy(int start,int end, T* dest) const + { + int i; + for (i=start;i size()) + { + reserve(newsize); + } +#ifdef BT_USE_PLACEMENT_NEW + for (int i=curSize;i + void quickSortInternal(L CompareFunc,int lo, int hi) + { + // lo is the lower index, hi is the upper index + // of the region of array a that is to be sorted + int i=lo, j=hi; + T x=m_data[(lo+hi)/2]; + + // partition + do + { + while (CompareFunc(m_data[i],x)) + i++; + while (CompareFunc(x,m_data[j])) + j--; + if (i<=j) + { + swap(i,j); + i++; j--; + } + } while (i<=j); + + // recursion + if (lo + void quickSort(L CompareFunc) + { + //don't sort 0 or 1 elements + if (size()>1) + { + quickSortInternal(CompareFunc,0,size()-1); + } + } + + + ///heap sort from http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Sort/Heap/ + template + void downHeap(T *pArr, int k, int n,L CompareFunc) + { + /* PRE: a[k+1..N] is a heap */ + /* POST: a[k..N] is a heap */ + + T temp = pArr[k - 1]; + /* k has child(s) */ + while (k <= n/2) + { + int child = 2*k; + + if ((child < n) && CompareFunc(pArr[child - 1] , pArr[child])) + { + child++; + } + /* pick larger child */ + if (CompareFunc(temp , pArr[child - 1])) + { + /* move child up */ + pArr[k - 1] = pArr[child - 1]; + k = child; + } + else + { + break; + } + } + pArr[k - 1] = temp; + } /*downHeap*/ + + void swap(int index0,int index1) + { +#ifdef BT_USE_MEMCPY + char temp[sizeof(T)]; + memcpy(temp,&m_data[index0],sizeof(T)); + memcpy(&m_data[index0],&m_data[index1],sizeof(T)); + memcpy(&m_data[index1],temp,sizeof(T)); +#else + T temp = m_data[index0]; + m_data[index0] = m_data[index1]; + m_data[index1] = temp; +#endif //BT_USE_PLACEMENT_NEW + + } + + template + void heapSort(L CompareFunc) + { + /* sort a[0..N-1], N.B. 0 to N-1 */ + int k; + int n = m_size; + for (k = n/2; k > 0; k--) + { + downHeap(m_data, k, n, CompareFunc); + } + + /* a[1..N] is now a heap */ + while ( n>=1 ) + { + swap(0,n-1); /* largest of a[0..n-1] */ + + + n = n - 1; + /* restore a[1..i-1] heap */ + downHeap(m_data, 1, n, CompareFunc); + } + } + + ///non-recursive binary search, assumes sorted array + int findBinarySearch(const T& key) const + { + int first = 0; + int last = size(); + + //assume sorted array + while (first <= last) { + int mid = (first + last) / 2; // compute mid point. + if (key > m_data[mid]) + first = mid + 1; // repeat search in top half. + else if (key < m_data[mid]) + last = mid - 1; // repeat search in bottom half. + else + return mid; // found it. return position ///// + } + return size(); // failed to find key + } + + + int findLinearSearch(const T& key) const + { + int index=size(); + int i; + + for (i=0;i + +#include "btConvexHull.h" +#include "btAlignedObjectArray.h" +#include "btMinMax.h" +#include "btVector3.h" + + + +template +void Swap(T &a,T &b) +{ + T tmp = a; + a=b; + b=tmp; +} + + +//---------------------------------- + +class int3 +{ +public: + int x,y,z; + int3(){}; + int3(int _x,int _y, int _z){x=_x;y=_y;z=_z;} + const int& operator[](int i) const {return (&x)[i];} + int& operator[](int i) {return (&x)[i];} +}; + + +//------- btPlane ---------- + + +inline btPlane PlaneFlip(const btPlane &plane){return btPlane(-plane.normal,-plane.dist);} +inline int operator==( const btPlane &a, const btPlane &b ) { return (a.normal==b.normal && a.dist==b.dist); } +inline int coplanar( const btPlane &a, const btPlane &b ) { return (a==b || a==PlaneFlip(b)); } + + +//--------- Utility Functions ------ + +btVector3 PlaneLineIntersection(const btPlane &plane, const btVector3 &p0, const btVector3 &p1); +btVector3 PlaneProject(const btPlane &plane, const btVector3 &point); + +btVector3 ThreePlaneIntersection(const btPlane &p0,const btPlane &p1, const btPlane &p2); +btVector3 ThreePlaneIntersection(const btPlane &p0,const btPlane &p1, const btPlane &p2) +{ + btVector3 N1 = p0.normal; + btVector3 N2 = p1.normal; + btVector3 N3 = p2.normal; + + btVector3 n2n3; n2n3 = N2.cross(N3); + btVector3 n3n1; n3n1 = N3.cross(N1); + btVector3 n1n2; n1n2 = N1.cross(N2); + + btScalar quotient = (N1.dot(n2n3)); + + btAssert(btFabs(quotient) > btScalar(0.000001)); + + quotient = btScalar(-1.) / quotient; + n2n3 *= p0.dist; + n3n1 *= p1.dist; + n1n2 *= p2.dist; + btVector3 potentialVertex = n2n3; + potentialVertex += n3n1; + potentialVertex += n1n2; + potentialVertex *= quotient; + + btVector3 result(potentialVertex.getX(),potentialVertex.getY(),potentialVertex.getZ()); + return result; + +} + +btScalar DistanceBetweenLines(const btVector3 &ustart, const btVector3 &udir, const btVector3 &vstart, const btVector3 &vdir, btVector3 *upoint=NULL, btVector3 *vpoint=NULL); +btVector3 TriNormal(const btVector3 &v0, const btVector3 &v1, const btVector3 &v2); +btVector3 NormalOf(const btVector3 *vert, const int n); + + +btVector3 PlaneLineIntersection(const btPlane &plane, const btVector3 &p0, const btVector3 &p1) +{ + // returns the point where the line p0-p1 intersects the plane n&d + static btVector3 dif; + dif = p1-p0; + btScalar dn= btDot(plane.normal,dif); + btScalar t = -(plane.dist+btDot(plane.normal,p0) )/dn; + return p0 + (dif*t); +} + +btVector3 PlaneProject(const btPlane &plane, const btVector3 &point) +{ + return point - plane.normal * (btDot(point,plane.normal)+plane.dist); +} + +btVector3 TriNormal(const btVector3 &v0, const btVector3 &v1, const btVector3 &v2) +{ + // return the normal of the triangle + // inscribed by v0, v1, and v2 + btVector3 cp=btCross(v1-v0,v2-v1); + btScalar m=cp.length(); + if(m==0) return btVector3(1,0,0); + return cp*(btScalar(1.0)/m); +} + + +btScalar DistanceBetweenLines(const btVector3 &ustart, const btVector3 &udir, const btVector3 &vstart, const btVector3 &vdir, btVector3 *upoint, btVector3 *vpoint) +{ + static btVector3 cp; + cp = btCross(udir,vdir).normalized(); + + btScalar distu = -btDot(cp,ustart); + btScalar distv = -btDot(cp,vstart); + btScalar dist = (btScalar)fabs(distu-distv); + if(upoint) + { + btPlane plane; + plane.normal = btCross(vdir,cp).normalized(); + plane.dist = -btDot(plane.normal,vstart); + *upoint = PlaneLineIntersection(plane,ustart,ustart+udir); + } + if(vpoint) + { + btPlane plane; + plane.normal = btCross(udir,cp).normalized(); + plane.dist = -btDot(plane.normal,ustart); + *vpoint = PlaneLineIntersection(plane,vstart,vstart+vdir); + } + return dist; +} + + + + + + + +#define COPLANAR (0) +#define UNDER (1) +#define OVER (2) +#define SPLIT (OVER|UNDER) +#define PAPERWIDTH (btScalar(0.001)) + +btScalar planetestepsilon = PAPERWIDTH; + + + +typedef ConvexH::HalfEdge HalfEdge; + +ConvexH::ConvexH(int vertices_size,int edges_size,int facets_size) +{ + vertices.resize(vertices_size); + edges.resize(edges_size); + facets.resize(facets_size); +} + + +int PlaneTest(const btPlane &p, const btVector3 &v); +int PlaneTest(const btPlane &p, const btVector3 &v) { + btScalar a = btDot(v,p.normal)+p.dist; + int flag = (a>planetestepsilon)?OVER:((a<-planetestepsilon)?UNDER:COPLANAR); + return flag; +} + +int SplitTest(ConvexH &convex,const btPlane &plane); +int SplitTest(ConvexH &convex,const btPlane &plane) { + int flag=0; + for(int i=0;i +int maxdirfiltered(const T *p,int count,const T &dir,btAlignedObjectArray &allow) +{ + btAssert(count); + int m=-1; + for(int i=0;ibtDot(p[m],dir)) + m=i; + } + btAssert(m!=-1); + return m; +} + +btVector3 orth(const btVector3 &v); +btVector3 orth(const btVector3 &v) +{ + btVector3 a=btCross(v,btVector3(0,0,1)); + btVector3 b=btCross(v,btVector3(0,1,0)); + if (a.length() > b.length()) + { + return a.normalized(); + } else { + return b.normalized(); + } +} + + +template +int maxdirsterid(const T *p,int count,const T &dir,btAlignedObjectArray &allow) +{ + int m=-1; + while(m==-1) + { + m = maxdirfiltered(p,count,dir,allow); + if(allow[m]==3) return m; + T u = orth(dir); + T v = btCross(u,dir); + int ma=-1; + for(btScalar x = btScalar(0.0) ; x<= btScalar(360.0) ; x+= btScalar(45.0)) + { + btScalar s = btSin(SIMD_RADS_PER_DEG*(x)); + btScalar c = btCos(SIMD_RADS_PER_DEG*(x)); + int mb = maxdirfiltered(p,count,dir+(u*s+v*c)*btScalar(0.025),allow); + if(ma==m && mb==m) + { + allow[m]=3; + return m; + } + if(ma!=-1 && ma!=mb) // Yuck - this is really ugly + { + int mc = ma; + for(btScalar xx = x-btScalar(40.0) ; xx <= x ; xx+= btScalar(5.0)) + { + btScalar s = btSin(SIMD_RADS_PER_DEG*(xx)); + btScalar c = btCos(SIMD_RADS_PER_DEG*(xx)); + int md = maxdirfiltered(p,count,dir+(u*s+v*c)*btScalar(0.025),allow); + if(mc==m && md==m) + { + allow[m]=3; + return m; + } + mc=md; + } + } + ma=mb; + } + allow[m]=0; + m=-1; + } + btAssert(0); + return m; +} + + + + +int operator ==(const int3 &a,const int3 &b); +int operator ==(const int3 &a,const int3 &b) +{ + for(int i=0;i<3;i++) + { + if(a[i]!=b[i]) return 0; + } + return 1; +} + + +int above(btVector3* vertices,const int3& t, const btVector3 &p, btScalar epsilon); +int above(btVector3* vertices,const int3& t, const btVector3 &p, btScalar epsilon) +{ + btVector3 n=TriNormal(vertices[t[0]],vertices[t[1]],vertices[t[2]]); + return (btDot(n,p-vertices[t[0]]) > epsilon); // EPSILON??? +} +int hasedge(const int3 &t, int a,int b); +int hasedge(const int3 &t, int a,int b) +{ + for(int i=0;i<3;i++) + { + int i1= (i+1)%3; + if(t[i]==a && t[i1]==b) return 1; + } + return 0; +} +int hasvert(const int3 &t, int v); +int hasvert(const int3 &t, int v) +{ + return (t[0]==v || t[1]==v || t[2]==v) ; +} +int shareedge(const int3 &a,const int3 &b); +int shareedge(const int3 &a,const int3 &b) +{ + int i; + for(i=0;i<3;i++) + { + int i1= (i+1)%3; + if(hasedge(a,b[i1],b[i])) return 1; + } + return 0; +} + +class btHullTriangle; + + + +class btHullTriangle : public int3 +{ +public: + int3 n; + int id; + int vmax; + btScalar rise; + btHullTriangle(int a,int b,int c):int3(a,b,c),n(-1,-1,-1) + { + vmax=-1; + rise = btScalar(0.0); + } + ~btHullTriangle() + { + } + int &neib(int a,int b); +}; + + +int &btHullTriangle::neib(int a,int b) +{ + static int er=-1; + int i; + for(i=0;i<3;i++) + { + int i1=(i+1)%3; + int i2=(i+2)%3; + if((*this)[i]==a && (*this)[i1]==b) return n[i2]; + if((*this)[i]==b && (*this)[i1]==a) return n[i2]; + } + btAssert(0); + return er; +} +void HullLibrary::b2bfix(btHullTriangle* s,btHullTriangle*t) +{ + int i; + for(i=0;i<3;i++) + { + int i1=(i+1)%3; + int i2=(i+2)%3; + int a = (*s)[i1]; + int b = (*s)[i2]; + btAssert(m_tris[s->neib(a,b)]->neib(b,a) == s->id); + btAssert(m_tris[t->neib(a,b)]->neib(b,a) == t->id); + m_tris[s->neib(a,b)]->neib(b,a) = t->neib(b,a); + m_tris[t->neib(b,a)]->neib(a,b) = s->neib(a,b); + } +} + +void HullLibrary::removeb2b(btHullTriangle* s,btHullTriangle*t) +{ + b2bfix(s,t); + deAllocateTriangle(s); + + deAllocateTriangle(t); +} + +void HullLibrary::checkit(btHullTriangle *t) +{ + (void)t; + + int i; + btAssert(m_tris[t->id]==t); + for(i=0;i<3;i++) + { + int i1=(i+1)%3; + int i2=(i+2)%3; + int a = (*t)[i1]; + int b = (*t)[i2]; + + // release compile fix + (void)i1; + (void)i2; + (void)a; + (void)b; + + btAssert(a!=b); + btAssert( m_tris[t->n[i]]->neib(b,a) == t->id); + } +} + +btHullTriangle* HullLibrary::allocateTriangle(int a,int b,int c) +{ + void* mem = btAlignedAlloc(sizeof(btHullTriangle),16); + btHullTriangle* tr = new (mem)btHullTriangle(a,b,c); + tr->id = m_tris.size(); + m_tris.push_back(tr); + + return tr; +} + +void HullLibrary::deAllocateTriangle(btHullTriangle* tri) +{ + btAssert(m_tris[tri->id]==tri); + m_tris[tri->id]=NULL; + tri->~btHullTriangle(); + btAlignedFree(tri); +} + + +void HullLibrary::extrude(btHullTriangle *t0,int v) +{ + int3 t= *t0; + int n = m_tris.size(); + btHullTriangle* ta = allocateTriangle(v,t[1],t[2]); + ta->n = int3(t0->n[0],n+1,n+2); + m_tris[t0->n[0]]->neib(t[1],t[2]) = n+0; + btHullTriangle* tb = allocateTriangle(v,t[2],t[0]); + tb->n = int3(t0->n[1],n+2,n+0); + m_tris[t0->n[1]]->neib(t[2],t[0]) = n+1; + btHullTriangle* tc = allocateTriangle(v,t[0],t[1]); + tc->n = int3(t0->n[2],n+0,n+1); + m_tris[t0->n[2]]->neib(t[0],t[1]) = n+2; + checkit(ta); + checkit(tb); + checkit(tc); + if(hasvert(*m_tris[ta->n[0]],v)) removeb2b(ta,m_tris[ta->n[0]]); + if(hasvert(*m_tris[tb->n[0]],v)) removeb2b(tb,m_tris[tb->n[0]]); + if(hasvert(*m_tris[tc->n[0]],v)) removeb2b(tc,m_tris[tc->n[0]]); + deAllocateTriangle(t0); + +} + +btHullTriangle* HullLibrary::extrudable(btScalar epsilon) +{ + int i; + btHullTriangle *t=NULL; + for(i=0;iriserise)) + { + t = m_tris[i]; + } + } + return (t->rise >epsilon)?t:NULL ; +} + + + + +int4 HullLibrary::FindSimplex(btVector3 *verts,int verts_count,btAlignedObjectArray &allow) +{ + btVector3 basis[3]; + basis[0] = btVector3( btScalar(0.01), btScalar(0.02), btScalar(1.0) ); + int p0 = maxdirsterid(verts,verts_count, basis[0],allow); + int p1 = maxdirsterid(verts,verts_count,-basis[0],allow); + basis[0] = verts[p0]-verts[p1]; + if(p0==p1 || basis[0]==btVector3(0,0,0)) + return int4(-1,-1,-1,-1); + basis[1] = btCross(btVector3( btScalar(1),btScalar(0.02), btScalar(0)),basis[0]); + basis[2] = btCross(btVector3(btScalar(-0.02), btScalar(1), btScalar(0)),basis[0]); + if (basis[1].length() > basis[2].length()) + { + basis[1].normalize(); + } else { + basis[1] = basis[2]; + basis[1].normalize (); + } + int p2 = maxdirsterid(verts,verts_count,basis[1],allow); + if(p2 == p0 || p2 == p1) + { + p2 = maxdirsterid(verts,verts_count,-basis[1],allow); + } + if(p2 == p0 || p2 == p1) + return int4(-1,-1,-1,-1); + basis[1] = verts[p2] - verts[p0]; + basis[2] = btCross(basis[1],basis[0]).normalized(); + int p3 = maxdirsterid(verts,verts_count,basis[2],allow); + if(p3==p0||p3==p1||p3==p2) p3 = maxdirsterid(verts,verts_count,-basis[2],allow); + if(p3==p0||p3==p1||p3==p2) + return int4(-1,-1,-1,-1); + btAssert(!(p0==p1||p0==p2||p0==p3||p1==p2||p1==p3||p2==p3)); + if(btDot(verts[p3]-verts[p0],btCross(verts[p1]-verts[p0],verts[p2]-verts[p0])) <0) {Swap(p2,p3);} + return int4(p0,p1,p2,p3); +} + +int HullLibrary::calchullgen(btVector3 *verts,int verts_count, int vlimit) +{ + if(verts_count <4) return 0; + if(vlimit==0) vlimit=1000000000; + int j; + btVector3 bmin(*verts),bmax(*verts); + btAlignedObjectArray isextreme; + isextreme.reserve(verts_count); + btAlignedObjectArray allow; + allow.reserve(verts_count); + + for(j=0;jn=int3(2,3,1); + btHullTriangle *t1 = allocateTriangle(p[3],p[2],p[0]); t1->n=int3(3,2,0); + btHullTriangle *t2 = allocateTriangle(p[0],p[1],p[3]); t2->n=int3(0,1,3); + btHullTriangle *t3 = allocateTriangle(p[1],p[0],p[2]); t3->n=int3(1,0,2); + isextreme[p[0]]=isextreme[p[1]]=isextreme[p[2]]=isextreme[p[3]]=1; + checkit(t0);checkit(t1);checkit(t2);checkit(t3); + + for(j=0;jvmax<0); + btVector3 n=TriNormal(verts[(*t)[0]],verts[(*t)[1]],verts[(*t)[2]]); + t->vmax = maxdirsterid(verts,verts_count,n,allow); + t->rise = btDot(n,verts[t->vmax]-verts[(*t)[0]]); + } + btHullTriangle *te; + vlimit-=4; + while(vlimit >0 && ((te=extrudable(epsilon)) != 0)) + { + int3 ti=*te; + int v=te->vmax; + btAssert(v != -1); + btAssert(!isextreme[v]); // wtf we've already done this vertex + isextreme[v]=1; + //if(v==p0 || v==p1 || v==p2 || v==p3) continue; // done these already + j=m_tris.size(); + while(j--) { + if(!m_tris[j]) continue; + int3 t=*m_tris[j]; + if(above(verts,t,verts[v],btScalar(0.01)*epsilon)) + { + extrude(m_tris[j],v); + } + } + // now check for those degenerate cases where we have a flipped triangle or a really skinny triangle + j=m_tris.size(); + while(j--) + { + if(!m_tris[j]) continue; + if(!hasvert(*m_tris[j],v)) break; + int3 nt=*m_tris[j]; + if(above(verts,nt,center,btScalar(0.01)*epsilon) || btCross(verts[nt[1]]-verts[nt[0]],verts[nt[2]]-verts[nt[1]]).length()< epsilon*epsilon*btScalar(0.1) ) + { + btHullTriangle *nb = m_tris[m_tris[j]->n[0]]; + btAssert(nb);btAssert(!hasvert(*nb,v));btAssert(nb->idvmax>=0) break; + btVector3 n=TriNormal(verts[(*t)[0]],verts[(*t)[1]],verts[(*t)[2]]); + t->vmax = maxdirsterid(verts,verts_count,n,allow); + if(isextreme[t->vmax]) + { + t->vmax=-1; // already done that vertex - algorithm needs to be able to terminate. + } + else + { + t->rise = btDot(n,verts[t->vmax]-verts[(*t)[0]]); + } + } + vlimit --; + } + return 1; +} + +int HullLibrary::calchull(btVector3 *verts,int verts_count, TUIntArray& tris_out, int &tris_count,int vlimit) +{ + int rc=calchullgen(verts,verts_count, vlimit) ; + if(!rc) return 0; + btAlignedObjectArray ts; + int i; + + for(i=0;i(ts[i]); + } + m_tris.resize(0); + + return 1; +} + + + + + +bool HullLibrary::ComputeHull(unsigned int vcount,const btVector3 *vertices,PHullResult &result,unsigned int vlimit) +{ + + int tris_count; + int ret = calchull( (btVector3 *) vertices, (int) vcount, result.m_Indices, tris_count, static_cast(vlimit) ); + if(!ret) return false; + result.mIndexCount = (unsigned int) (tris_count*3); + result.mFaceCount = (unsigned int) tris_count; + result.mVertices = (btVector3*) vertices; + result.mVcount = (unsigned int) vcount; + return true; + +} + + +void ReleaseHull(PHullResult &result); +void ReleaseHull(PHullResult &result) +{ + if ( result.m_Indices.size() ) + { + result.m_Indices.clear(); + } + + result.mVcount = 0; + result.mIndexCount = 0; + result.mVertices = 0; +} + + +//********************************************************************* +//********************************************************************* +//******** HullLib header +//********************************************************************* +//********************************************************************* + +//********************************************************************* +//********************************************************************* +//******** HullLib implementation +//********************************************************************* +//********************************************************************* + +HullError HullLibrary::CreateConvexHull(const HullDesc &desc, // describes the input request + HullResult &result) // contains the resulst +{ + HullError ret = QE_FAIL; + + + PHullResult hr; + + unsigned int vcount = desc.mVcount; + if ( vcount < 8 ) vcount = 8; + + btAlignedObjectArray vertexSource; + vertexSource.resize(static_cast(vcount)); + + btVector3 scale; + + unsigned int ovcount; + + bool ok = CleanupVertices(desc.mVcount,desc.mVertices, desc.mVertexStride, ovcount, &vertexSource[0], desc.mNormalEpsilon, scale ); // normalize point cloud, remove duplicates! + + if ( ok ) + { + + +// if ( 1 ) // scale vertices back to their original size. + { + for (unsigned int i=0; i(i)]; + v[0]*=scale[0]; + v[1]*=scale[1]; + v[2]*=scale[2]; + } + } + + ok = ComputeHull(ovcount,&vertexSource[0],hr,desc.mMaxVertices); + + if ( ok ) + { + + // re-index triangle mesh so it refers to only used vertices, rebuild a new vertex table. + btAlignedObjectArray vertexScratch; + vertexScratch.resize(static_cast(hr.mVcount)); + + BringOutYourDead(hr.mVertices,hr.mVcount, &vertexScratch[0], ovcount, &hr.m_Indices[0], hr.mIndexCount ); + + ret = QE_OK; + + if ( desc.HasHullFlag(QF_TRIANGLES) ) // if he wants the results as triangle! + { + result.mPolygons = false; + result.mNumOutputVertices = ovcount; + result.m_OutputVertices.resize(static_cast(ovcount)); + result.mNumFaces = hr.mFaceCount; + result.mNumIndices = hr.mIndexCount; + + result.m_Indices.resize(static_cast(hr.mIndexCount)); + + memcpy(&result.m_OutputVertices[0], &vertexScratch[0], sizeof(btVector3)*ovcount ); + + if ( desc.HasHullFlag(QF_REVERSE_ORDER) ) + { + + const unsigned int *source = &hr.m_Indices[0]; + unsigned int *dest = &result.m_Indices[0]; + + for (unsigned int i=0; i(ovcount)); + result.mNumFaces = hr.mFaceCount; + result.mNumIndices = hr.mIndexCount+hr.mFaceCount; + result.m_Indices.resize(static_cast(result.mNumIndices)); + memcpy(&result.m_OutputVertices[0], &vertexScratch[0], sizeof(btVector3)*ovcount ); + +// if ( 1 ) + { + const unsigned int *source = &hr.m_Indices[0]; + unsigned int *dest = &result.m_Indices[0]; + for (unsigned int i=0; i bmax[j] ) bmax[j] = p[j]; + } + } + } + + btScalar dx = bmax[0] - bmin[0]; + btScalar dy = bmax[1] - bmin[1]; + btScalar dz = bmax[2] - bmin[2]; + + btVector3 center; + + center[0] = dx*btScalar(0.5) + bmin[0]; + center[1] = dy*btScalar(0.5) + bmin[1]; + center[2] = dz*btScalar(0.5) + bmin[2]; + + if ( dx < EPSILON || dy < EPSILON || dz < EPSILON || svcount < 3 ) + { + + btScalar len = FLT_MAX; + + if ( dx > EPSILON && dx < len ) len = dx; + if ( dy > EPSILON && dy < len ) len = dy; + if ( dz > EPSILON && dz < len ) len = dz; + + if ( len == FLT_MAX ) + { + dx = dy = dz = btScalar(0.01); // one centimeter + } + else + { + if ( dx < EPSILON ) dx = len * btScalar(0.05); // 1/5th the shortest non-zero edge. + if ( dy < EPSILON ) dy = len * btScalar(0.05); + if ( dz < EPSILON ) dz = len * btScalar(0.05); + } + + btScalar x1 = center[0] - dx; + btScalar x2 = center[0] + dx; + + btScalar y1 = center[1] - dy; + btScalar y2 = center[1] + dy; + + btScalar z1 = center[2] - dz; + btScalar z2 = center[2] + dz; + + addPoint(vcount,vertices,x1,y1,z1); + addPoint(vcount,vertices,x2,y1,z1); + addPoint(vcount,vertices,x2,y2,z1); + addPoint(vcount,vertices,x1,y2,z1); + addPoint(vcount,vertices,x1,y1,z2); + addPoint(vcount,vertices,x2,y1,z2); + addPoint(vcount,vertices,x2,y2,z2); + addPoint(vcount,vertices,x1,y2,z2); + + return true; // return cube + + + } + else + { + if ( scale ) + { + scale[0] = dx; + scale[1] = dy; + scale[2] = dz; + + recip[0] = 1 / dx; + recip[1] = 1 / dy; + recip[2] = 1 / dz; + + center[0]*=recip[0]; + center[1]*=recip[1]; + center[2]*=recip[2]; + + } + + } + + + + vtx = (const char *) svertices; + + for (unsigned int i=0; igetX(); + btScalar py = p->getY(); + btScalar pz = p->getZ(); + + if ( scale ) + { + px = px*recip[0]; // normalize + py = py*recip[1]; // normalize + pz = pz*recip[2]; // normalize + } + +// if ( 1 ) + { + unsigned int j; + + for (j=0; j dist2 ) + { + v[0] = px; + v[1] = py; + v[2] = pz; + + } + + break; + } + } + + if ( j == vcount ) + { + btVector3& dest = vertices[vcount]; + dest[0] = px; + dest[1] = py; + dest[2] = pz; + vcount++; + } + m_vertexIndexMapping.push_back(j); + } + } + + // ok..now make sure we didn't prune so many vertices it is now invalid. +// if ( 1 ) + { + btScalar bmin[3] = { FLT_MAX, FLT_MAX, FLT_MAX }; + btScalar bmax[3] = { -FLT_MAX, -FLT_MAX, -FLT_MAX }; + + for (unsigned int i=0; i bmax[j] ) bmax[j] = p[j]; + } + } + + btScalar dx = bmax[0] - bmin[0]; + btScalar dy = bmax[1] - bmin[1]; + btScalar dz = bmax[2] - bmin[2]; + + if ( dx < EPSILON || dy < EPSILON || dz < EPSILON || vcount < 3) + { + btScalar cx = dx*btScalar(0.5) + bmin[0]; + btScalar cy = dy*btScalar(0.5) + bmin[1]; + btScalar cz = dz*btScalar(0.5) + bmin[2]; + + btScalar len = FLT_MAX; + + if ( dx >= EPSILON && dx < len ) len = dx; + if ( dy >= EPSILON && dy < len ) len = dy; + if ( dz >= EPSILON && dz < len ) len = dz; + + if ( len == FLT_MAX ) + { + dx = dy = dz = btScalar(0.01); // one centimeter + } + else + { + if ( dx < EPSILON ) dx = len * btScalar(0.05); // 1/5th the shortest non-zero edge. + if ( dy < EPSILON ) dy = len * btScalar(0.05); + if ( dz < EPSILON ) dz = len * btScalar(0.05); + } + + btScalar x1 = cx - dx; + btScalar x2 = cx + dx; + + btScalar y1 = cy - dy; + btScalar y2 = cy + dy; + + btScalar z1 = cz - dz; + btScalar z2 = cz + dz; + + vcount = 0; // add box + + addPoint(vcount,vertices,x1,y1,z1); + addPoint(vcount,vertices,x2,y1,z1); + addPoint(vcount,vertices,x2,y2,z1); + addPoint(vcount,vertices,x1,y2,z1); + addPoint(vcount,vertices,x1,y1,z2); + addPoint(vcount,vertices,x2,y1,z2); + addPoint(vcount,vertices,x2,y2,z2); + addPoint(vcount,vertices,x1,y2,z2); + + return true; + } + } + + return true; +} + +void HullLibrary::BringOutYourDead(const btVector3* verts,unsigned int vcount, btVector3* overts,unsigned int &ocount,unsigned int *indices,unsigned indexcount) +{ + btAlignedObjectArraytmpIndices; + tmpIndices.resize(m_vertexIndexMapping.size()); + int i; + + for (i=0;i(vcount)); + memset(&usedIndices[0],0,sizeof(unsigned int)*vcount); + + ocount = 0; + + for (i=0; i= 0 && v < vcount ); + + if ( usedIndices[static_cast(v)] ) // if already remapped + { + indices[i] = usedIndices[static_cast(v)]-1; // index to new array + } + else + { + + indices[i] = ocount; // new index mapping + + overts[ocount][0] = verts[v][0]; // copy old vert to new vert array + overts[ocount][1] = verts[v][1]; + overts[ocount][2] = verts[v][2]; + + for (int k=0;k=0 && ocount <= vcount ); + + usedIndices[static_cast(v)] = ocount; // assign new index remapping + + + } + } + + +} diff --git a/extern/bullet2/LinearMath/btConvexHull.h b/extern/bullet2/LinearMath/btConvexHull.h new file mode 100644 index 00000000000..a23fa4d550f --- /dev/null +++ b/extern/bullet2/LinearMath/btConvexHull.h @@ -0,0 +1,241 @@ + +/* +Stan Melax Convex Hull Computation +Copyright (c) 2008 Stan Melax http://www.melax.com/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +///includes modifications/improvements by John Ratcliff, see BringOutYourDead below. + +#ifndef CD_HULL_H +#define CD_HULL_H + +#include "btVector3.h" +#include "btAlignedObjectArray.h" + +typedef btAlignedObjectArray TUIntArray; + +class HullResult +{ +public: + HullResult(void) + { + mPolygons = true; + mNumOutputVertices = 0; + mNumFaces = 0; + mNumIndices = 0; + } + bool mPolygons; // true if indices represents polygons, false indices are triangles + unsigned int mNumOutputVertices; // number of vertices in the output hull + btAlignedObjectArray m_OutputVertices; // array of vertices + unsigned int mNumFaces; // the number of faces produced + unsigned int mNumIndices; // the total number of indices + btAlignedObjectArray m_Indices; // pointer to indices. + +// If triangles, then indices are array indexes into the vertex list. +// If polygons, indices are in the form (number of points in face) (p1, p2, p3, ..) etc.. +}; + +enum HullFlag +{ + QF_TRIANGLES = (1<<0), // report results as triangles, not polygons. + QF_REVERSE_ORDER = (1<<1), // reverse order of the triangle indices. + QF_DEFAULT = QF_TRIANGLES +}; + + +class HullDesc +{ +public: + HullDesc(void) + { + mFlags = QF_DEFAULT; + mVcount = 0; + mVertices = 0; + mVertexStride = sizeof(btVector3); + mNormalEpsilon = 0.001f; + mMaxVertices = 4096; // maximum number of points to be considered for a convex hull. + mMaxFaces = 4096; + }; + + HullDesc(HullFlag flag, + unsigned int vcount, + const btVector3 *vertices, + unsigned int stride = sizeof(btVector3)) + { + mFlags = flag; + mVcount = vcount; + mVertices = vertices; + mVertexStride = stride; + mNormalEpsilon = btScalar(0.001); + mMaxVertices = 4096; + } + + bool HasHullFlag(HullFlag flag) const + { + if ( mFlags & flag ) return true; + return false; + } + + void SetHullFlag(HullFlag flag) + { + mFlags|=flag; + } + + void ClearHullFlag(HullFlag flag) + { + mFlags&=~flag; + } + + unsigned int mFlags; // flags to use when generating the convex hull. + unsigned int mVcount; // number of vertices in the input point cloud + const btVector3 *mVertices; // the array of vertices. + unsigned int mVertexStride; // the stride of each vertex, in bytes. + btScalar mNormalEpsilon; // the epsilon for removing duplicates. This is a normalized value, if normalized bit is on. + unsigned int mMaxVertices; // maximum number of vertices to be considered for the hull! + unsigned int mMaxFaces; +}; + +enum HullError +{ + QE_OK, // success! + QE_FAIL // failed. +}; + +class btPlane +{ + public: + btVector3 normal; + btScalar dist; // distance below origin - the D from plane equasion Ax+By+Cz+D=0 + btPlane(const btVector3 &n,btScalar d):normal(n),dist(d){} + btPlane():normal(),dist(0){} + +}; + + + +class ConvexH +{ + public: + class HalfEdge + { + public: + short ea; // the other half of the edge (index into edges list) + unsigned char v; // the vertex at the start of this edge (index into vertices list) + unsigned char p; // the facet on which this edge lies (index into facets list) + HalfEdge(){} + HalfEdge(short _ea,unsigned char _v, unsigned char _p):ea(_ea),v(_v),p(_p){} + }; + ConvexH() + { + } + ~ConvexH() + { + } + btAlignedObjectArray vertices; + btAlignedObjectArray edges; + btAlignedObjectArray facets; + ConvexH(int vertices_size,int edges_size,int facets_size); +}; + + +class int4 +{ +public: + int x,y,z,w; + int4(){}; + int4(int _x,int _y, int _z,int _w){x=_x;y=_y;z=_z;w=_w;} + const int& operator[](int i) const {return (&x)[i];} + int& operator[](int i) {return (&x)[i];} +}; + +class PHullResult +{ +public: + + PHullResult(void) + { + mVcount = 0; + mIndexCount = 0; + mFaceCount = 0; + mVertices = 0; + } + + unsigned int mVcount; + unsigned int mIndexCount; + unsigned int mFaceCount; + btVector3* mVertices; + TUIntArray m_Indices; +}; + + + +///The HullLibrary class can create a convex hull from a collection of vertices, using the ComputeHull method. +///The btShapeHull class uses this HullLibrary to create a approximate convex mesh given a general (non-polyhedral) convex shape. +class HullLibrary +{ + + btAlignedObjectArray m_tris; + +public: + + btAlignedObjectArray m_vertexIndexMapping; + + + HullError CreateConvexHull(const HullDesc& desc, // describes the input request + HullResult& result); // contains the resulst + HullError ReleaseResult(HullResult &result); // release memory allocated for this result, we are done with it. + +private: + + bool ComputeHull(unsigned int vcount,const btVector3 *vertices,PHullResult &result,unsigned int vlimit); + + class btHullTriangle* allocateTriangle(int a,int b,int c); + void deAllocateTriangle(btHullTriangle*); + void b2bfix(btHullTriangle* s,btHullTriangle*t); + + void removeb2b(btHullTriangle* s,btHullTriangle*t); + + void checkit(btHullTriangle *t); + + btHullTriangle* extrudable(btScalar epsilon); + + int calchull(btVector3 *verts,int verts_count, TUIntArray& tris_out, int &tris_count,int vlimit); + + int calchullgen(btVector3 *verts,int verts_count, int vlimit); + + int4 FindSimplex(btVector3 *verts,int verts_count,btAlignedObjectArray &allow); + + class ConvexH* ConvexHCrop(ConvexH& convex,const btPlane& slice); + + void extrude(class btHullTriangle* t0,int v); + + ConvexH* test_cube(); + + //BringOutYourDead (John Ratcliff): When you create a convex hull you hand it a large input set of vertices forming a 'point cloud'. + //After the hull is generated it give you back a set of polygon faces which index the *original* point cloud. + //The thing is, often times, there are many 'dead vertices' in the point cloud that are on longer referenced by the hull. + //The routine 'BringOutYourDead' find only the referenced vertices, copies them to an new buffer, and re-indexes the hull so that it is a minimal representation. + void BringOutYourDead(const btVector3* verts,unsigned int vcount, btVector3* overts,unsigned int &ocount,unsigned int* indices,unsigned indexcount); + + bool CleanupVertices(unsigned int svcount, + const btVector3* svertices, + unsigned int stride, + unsigned int &vcount, // output number of vertices + btVector3* vertices, // location to store the results. + btScalar normalepsilon, + btVector3& scale); +}; + + +#endif + diff --git a/extern/bullet2/LinearMath/btDefaultMotionState.h b/extern/bullet2/LinearMath/btDefaultMotionState.h new file mode 100644 index 00000000000..7858a10d219 --- /dev/null +++ b/extern/bullet2/LinearMath/btDefaultMotionState.h @@ -0,0 +1,40 @@ +#ifndef DEFAULT_MOTION_STATE_H +#define DEFAULT_MOTION_STATE_H + +#include "btMotionState.h" + +///The btDefaultMotionState provides a common implementation to synchronize world transforms with offsets. +struct btDefaultMotionState : public btMotionState +{ + btTransform m_graphicsWorldTrans; + btTransform m_centerOfMassOffset; + btTransform m_startWorldTrans; + void* m_userPointer; + + btDefaultMotionState(const btTransform& startTrans = btTransform::getIdentity(),const btTransform& centerOfMassOffset = btTransform::getIdentity()) + : m_graphicsWorldTrans(startTrans), + m_centerOfMassOffset(centerOfMassOffset), + m_startWorldTrans(startTrans), + m_userPointer(0) + + { + } + + ///synchronizes world transform from user to physics + virtual void getWorldTransform(btTransform& centerOfMassWorldTrans ) const + { + centerOfMassWorldTrans = m_centerOfMassOffset.inverse() * m_graphicsWorldTrans ; + } + + ///synchronizes world transform from physics to user + ///Bullet only calls the update of worldtransform for active objects + virtual void setWorldTransform(const btTransform& centerOfMassWorldTrans) + { + m_graphicsWorldTrans = centerOfMassWorldTrans * m_centerOfMassOffset ; + } + + + +}; + +#endif //DEFAULT_MOTION_STATE_H diff --git a/extern/bullet2/LinearMath/btGeometryUtil.cpp b/extern/bullet2/LinearMath/btGeometryUtil.cpp new file mode 100644 index 00000000000..5ac230f712f --- /dev/null +++ b/extern/bullet2/LinearMath/btGeometryUtil.cpp @@ -0,0 +1,185 @@ +/* +Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#include "btGeometryUtil.h" + + +/* + Make sure this dummy function never changes so that it + can be used by probes that are checking whether the + library is actually installed. +*/ +extern "C" +{ + void btBulletMathProbe (); + + void btBulletMathProbe () {} +} + + +bool btGeometryUtil::isPointInsidePlanes(const btAlignedObjectArray& planeEquations, const btVector3& point, btScalar margin) +{ + int numbrushes = planeEquations.size(); + for (int i=0;ibtScalar(0.)) + { + return false; + } + } + return true; + +} + + +bool btGeometryUtil::areVerticesBehindPlane(const btVector3& planeNormal, const btAlignedObjectArray& vertices, btScalar margin) +{ + int numvertices = vertices.size(); + for (int i=0;ibtScalar(0.)) + { + return false; + } + } + return true; +} + +bool notExist(const btVector3& planeEquation,const btAlignedObjectArray& planeEquations); + +bool notExist(const btVector3& planeEquation,const btAlignedObjectArray& planeEquations) +{ + int numbrushes = planeEquations.size(); + for (int i=0;i btScalar(0.999)) + { + return false; + } + } + return true; +} + +void btGeometryUtil::getPlaneEquationsFromVertices(btAlignedObjectArray& vertices, btAlignedObjectArray& planeEquationsOut ) +{ + const int numvertices = vertices.size(); + // brute force: + for (int i=0;i btScalar(0.0001)) + { + planeEquation.normalize(); + if (notExist(planeEquation,planeEquationsOut)) + { + planeEquation[3] = -planeEquation.dot(N1); + + //check if inside, and replace supportingVertexOut if needed + if (areVerticesBehindPlane(planeEquation,vertices,btScalar(0.01))) + { + planeEquationsOut.push_back(planeEquation); + } + } + } + normalSign = btScalar(-1.); + } + + } + } + } + +} + +void btGeometryUtil::getVerticesFromPlaneEquations(const btAlignedObjectArray& planeEquations , btAlignedObjectArray& verticesOut ) +{ + const int numbrushes = planeEquations.size(); + // brute force: + for (int i=0;i btScalar(0.0001) ) && + ( n3n1.length2() > btScalar(0.0001) ) && + ( n1n2.length2() > btScalar(0.0001) ) ) + { + //point P out of 3 plane equations: + + // d1 ( N2 * N3 ) + d2 ( N3 * N1 ) + d3 ( N1 * N2 ) + //P = ------------------------------------------------------------------------- + // N1 . ( N2 * N3 ) + + + btScalar quotient = (N1.dot(n2n3)); + if (btFabs(quotient) > btScalar(0.000001)) + { + quotient = btScalar(-1.) / quotient; + n2n3 *= N1[3]; + n3n1 *= N2[3]; + n1n2 *= N3[3]; + btVector3 potentialVertex = n2n3; + potentialVertex += n3n1; + potentialVertex += n1n2; + potentialVertex *= quotient; + + //check if inside, and replace supportingVertexOut if needed + if (isPointInsidePlanes(planeEquations,potentialVertex,btScalar(0.01))) + { + verticesOut.push_back(potentialVertex); + } + } + } + } + } + } +} + diff --git a/extern/bullet2/LinearMath/btGeometryUtil.h b/extern/bullet2/LinearMath/btGeometryUtil.h new file mode 100644 index 00000000000..a4b13b45609 --- /dev/null +++ b/extern/bullet2/LinearMath/btGeometryUtil.h @@ -0,0 +1,42 @@ +/* +Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef BT_GEOMETRY_UTIL_H +#define BT_GEOMETRY_UTIL_H + +#include "btVector3.h" +#include "btAlignedObjectArray.h" + +///The btGeometryUtil helper class provides a few methods to convert between plane equations and vertices. +class btGeometryUtil +{ + public: + + + static void getPlaneEquationsFromVertices(btAlignedObjectArray& vertices, btAlignedObjectArray& planeEquationsOut ); + + static void getVerticesFromPlaneEquations(const btAlignedObjectArray& planeEquations , btAlignedObjectArray& verticesOut ); + + static bool isInside(const btAlignedObjectArray& vertices, const btVector3& planeNormal, btScalar margin); + + static bool isPointInsidePlanes(const btAlignedObjectArray& planeEquations, const btVector3& point, btScalar margin); + + static bool areVerticesBehindPlane(const btVector3& planeNormal, const btAlignedObjectArray& vertices, btScalar margin); + +}; + + +#endif //BT_GEOMETRY_UTIL_H + diff --git a/extern/bullet2/LinearMath/btHashMap.h b/extern/bullet2/LinearMath/btHashMap.h new file mode 100644 index 00000000000..7d66db56949 --- /dev/null +++ b/extern/bullet2/LinearMath/btHashMap.h @@ -0,0 +1,434 @@ +#ifndef BT_HASH_MAP_H +#define BT_HASH_MAP_H + +#include "btAlignedObjectArray.h" + +///very basic hashable string implementation, compatible with btHashMap +struct btHashString +{ + const char* m_string; + unsigned int m_hash; + + SIMD_FORCE_INLINE unsigned int getHash()const + { + return m_hash; + } + + btHashString(const char* name) + :m_string(name) + { + /* magic numbers from http://www.isthe.com/chongo/tech/comp/fnv/ */ + static const unsigned int InitialFNV = 2166136261u; + static const unsigned int FNVMultiple = 16777619u; + + /* Fowler / Noll / Vo (FNV) Hash */ + unsigned int hash = InitialFNV; + + for(int i = 0; m_string[i]; i++) + { + hash = hash ^ (m_string[i]); /* xor the low 8 bits */ + hash = hash * FNVMultiple; /* multiply by the magic number */ + } + m_hash = hash; + } + + int portableStringCompare(const char* src, const char* dst) const + { + int ret = 0 ; + + while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst) + ++src, ++dst; + + if ( ret < 0 ) + ret = -1 ; + else if ( ret > 0 ) + ret = 1 ; + + return( ret ); + } + + bool equals(const btHashString& other) const + { + return (m_string == other.m_string) || + (0==portableStringCompare(m_string,other.m_string)); + + } + +}; + +const int BT_HASH_NULL=0xffffffff; + + +class btHashInt +{ + int m_uid; +public: + btHashInt(int uid) :m_uid(uid) + { + } + + int getUid1() const + { + return m_uid; + } + + void setUid1(int uid) + { + m_uid = uid; + } + + bool equals(const btHashInt& other) const + { + return getUid1() == other.getUid1(); + } + //to our success + SIMD_FORCE_INLINE unsigned int getHash()const + { + int key = m_uid; + // Thomas Wang's hash + key += ~(key << 15); key ^= (key >> 10); key += (key << 3); key ^= (key >> 6); key += ~(key << 11); key ^= (key >> 16); + return key; + } +}; + + + +class btHashPtr +{ + + union + { + const void* m_pointer; + int m_hashValues[2]; + }; + +public: + + btHashPtr(const void* ptr) + :m_pointer(ptr) + { + } + + const void* getPointer() const + { + return m_pointer; + } + + bool equals(const btHashPtr& other) const + { + return getPointer() == other.getPointer(); + } + + //to our success + SIMD_FORCE_INLINE unsigned int getHash()const + { + const bool VOID_IS_8 = ((sizeof(void*)==8)); + + int key = VOID_IS_8? m_hashValues[0]+m_hashValues[1] : m_hashValues[0]; + + // Thomas Wang's hash + key += ~(key << 15); key ^= (key >> 10); key += (key << 3); key ^= (key >> 6); key += ~(key << 11); key ^= (key >> 16); + return key; + } + + +}; + + +template +class btHashKeyPtr +{ + int m_uid; +public: + + btHashKeyPtr(int uid) :m_uid(uid) + { + } + + int getUid1() const + { + return m_uid; + } + + bool equals(const btHashKeyPtr& other) const + { + return getUid1() == other.getUid1(); + } + + //to our success + SIMD_FORCE_INLINE unsigned int getHash()const + { + int key = m_uid; + // Thomas Wang's hash + key += ~(key << 15); key ^= (key >> 10); key += (key << 3); key ^= (key >> 6); key += ~(key << 11); key ^= (key >> 16); + return key; + } + + +}; + + +template +class btHashKey +{ + int m_uid; +public: + + btHashKey(int uid) :m_uid(uid) + { + } + + int getUid1() const + { + return m_uid; + } + + bool equals(const btHashKey& other) const + { + return getUid1() == other.getUid1(); + } + //to our success + SIMD_FORCE_INLINE unsigned int getHash()const + { + int key = m_uid; + // Thomas Wang's hash + key += ~(key << 15); key ^= (key >> 10); key += (key << 3); key ^= (key >> 6); key += ~(key << 11); key ^= (key >> 16); + return key; + } +}; + + +///The btHashMap template class implements a generic and lightweight hashmap. +///A basic sample of how to use btHashMap is located in Demos\BasicDemo\main.cpp +template +class btHashMap +{ + +protected: + btAlignedObjectArray m_hashTable; + btAlignedObjectArray m_next; + + btAlignedObjectArray m_valueArray; + btAlignedObjectArray m_keyArray; + + void growTables(const Key& key) + { + int newCapacity = m_valueArray.capacity(); + + if (m_hashTable.size() < newCapacity) + { + //grow hashtable and next table + int curHashtableSize = m_hashTable.size(); + + m_hashTable.resize(newCapacity); + m_next.resize(newCapacity); + + int i; + + for (i= 0; i < newCapacity; ++i) + { + m_hashTable[i] = BT_HASH_NULL; + } + for (i = 0; i < newCapacity; ++i) + { + m_next[i] = BT_HASH_NULL; + } + + for(i=0;i= (unsigned int)m_hashTable.size()) + { + return BT_HASH_NULL; + } + + int index = m_hashTable[hash]; + while ((index != BT_HASH_NULL) && key.equals(m_keyArray[index]) == false) + { + index = m_next[index]; + } + return index; + } + + void clear() + { + m_hashTable.clear(); + m_next.clear(); + m_valueArray.clear(); + m_keyArray.clear(); + } + +}; + +#endif //BT_HASH_MAP_H diff --git a/extern/bullet2/LinearMath/btIDebugDraw.h b/extern/bullet2/LinearMath/btIDebugDraw.h new file mode 100644 index 00000000000..1ca303182c1 --- /dev/null +++ b/extern/bullet2/LinearMath/btIDebugDraw.h @@ -0,0 +1,316 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef IDEBUG_DRAW__H +#define IDEBUG_DRAW__H + +#include "btVector3.h" +#include "btTransform.h" + + +///The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations. +///Typical use case: create a debug drawer object, and assign it to a btCollisionWorld or btDynamicsWorld using setDebugDrawer and call debugDrawWorld. +///A class that implements the btIDebugDraw interface has to implement the drawLine method at a minimum. +///For color arguments the X,Y,Z components refer to Red, Green and Blue each in the range [0..1] +class btIDebugDraw +{ + public: + + enum DebugDrawModes + { + DBG_NoDebug=0, + DBG_DrawWireframe = 1, + DBG_DrawAabb=2, + DBG_DrawFeaturesText=4, + DBG_DrawContactPoints=8, + DBG_NoDeactivation=16, + DBG_NoHelpText = 32, + DBG_DrawText=64, + DBG_ProfileTimings = 128, + DBG_EnableSatComparison = 256, + DBG_DisableBulletLCP = 512, + DBG_EnableCCD = 1024, + DBG_DrawConstraints = (1 << 11), + DBG_DrawConstraintLimits = (1 << 12), + DBG_FastWireframe = (1<<13), + DBG_MAX_DEBUG_DRAW_MODE + }; + + virtual ~btIDebugDraw() {}; + + virtual void drawLine(const btVector3& from,const btVector3& to,const btVector3& color)=0; + + virtual void drawLine(const btVector3& from,const btVector3& to, const btVector3& fromColor, const btVector3& toColor) + { + (void) toColor; + drawLine (from, to, fromColor); + } + + void drawSphere(btScalar radius, const btTransform& transform, const btVector3& color) + { + btVector3 start = transform.getOrigin(); + + const btVector3 xoffs = transform.getBasis() * btVector3(radius,0,0); + const btVector3 yoffs = transform.getBasis() * btVector3(0,radius,0); + const btVector3 zoffs = transform.getBasis() * btVector3(0,0,radius); + + // XY + drawLine(start-xoffs, start+yoffs, color); + drawLine(start+yoffs, start+xoffs, color); + drawLine(start+xoffs, start-yoffs, color); + drawLine(start-yoffs, start-xoffs, color); + + // XZ + drawLine(start-xoffs, start+zoffs, color); + drawLine(start+zoffs, start+xoffs, color); + drawLine(start+xoffs, start-zoffs, color); + drawLine(start-zoffs, start-xoffs, color); + + // YZ + drawLine(start-yoffs, start+zoffs, color); + drawLine(start+zoffs, start+yoffs, color); + drawLine(start+yoffs, start-zoffs, color); + drawLine(start-zoffs, start-yoffs, color); + } + + virtual void drawSphere (const btVector3& p, btScalar radius, const btVector3& color) + { + btTransform tr; + tr.setIdentity(); + tr.setOrigin(p); + drawSphere(radius,tr,color); + } + + virtual void drawTriangle(const btVector3& v0,const btVector3& v1,const btVector3& v2,const btVector3& /*n0*/,const btVector3& /*n1*/,const btVector3& /*n2*/,const btVector3& color, btScalar alpha) + { + drawTriangle(v0,v1,v2,color,alpha); + } + virtual void drawTriangle(const btVector3& v0,const btVector3& v1,const btVector3& v2,const btVector3& color, btScalar /*alpha*/) + { + drawLine(v0,v1,color); + drawLine(v1,v2,color); + drawLine(v2,v0,color); + } + + virtual void drawContactPoint(const btVector3& PointOnB,const btVector3& normalOnB,btScalar distance,int lifeTime,const btVector3& color)=0; + + virtual void reportErrorWarning(const char* warningString) = 0; + + virtual void draw3dText(const btVector3& location,const char* textString) = 0; + + virtual void setDebugMode(int debugMode) =0; + + virtual int getDebugMode() const = 0; + + virtual void drawAabb(const btVector3& from,const btVector3& to,const btVector3& color) + { + + btVector3 halfExtents = (to-from)* 0.5f; + btVector3 center = (to+from) *0.5f; + int i,j; + + btVector3 edgecoord(1.f,1.f,1.f),pa,pb; + for (i=0;i<4;i++) + { + for (j=0;j<3;j++) + { + pa = btVector3(edgecoord[0]*halfExtents[0], edgecoord[1]*halfExtents[1], + edgecoord[2]*halfExtents[2]); + pa+=center; + + int othercoord = j%3; + edgecoord[othercoord]*=-1.f; + pb = btVector3(edgecoord[0]*halfExtents[0], edgecoord[1]*halfExtents[1], + edgecoord[2]*halfExtents[2]); + pb+=center; + + drawLine(pa,pb,color); + } + edgecoord = btVector3(-1.f,-1.f,-1.f); + if (i<3) + edgecoord[i]*=-1.f; + } + } + virtual void drawTransform(const btTransform& transform, btScalar orthoLen) + { + btVector3 start = transform.getOrigin(); + drawLine(start, start+transform.getBasis() * btVector3(orthoLen, 0, 0), btVector3(0.7f,0,0)); + drawLine(start, start+transform.getBasis() * btVector3(0, orthoLen, 0), btVector3(0,0.7f,0)); + drawLine(start, start+transform.getBasis() * btVector3(0, 0, orthoLen), btVector3(0,0,0.7f)); + } + + virtual void drawArc(const btVector3& center, const btVector3& normal, const btVector3& axis, btScalar radiusA, btScalar radiusB, btScalar minAngle, btScalar maxAngle, + const btVector3& color, bool drawSect, btScalar stepDegrees = btScalar(10.f)) + { + const btVector3& vx = axis; + btVector3 vy = normal.cross(axis); + btScalar step = stepDegrees * SIMD_RADS_PER_DEG; + int nSteps = (int)((maxAngle - minAngle) / step); + if(!nSteps) nSteps = 1; + btVector3 prev = center + radiusA * vx * btCos(minAngle) + radiusB * vy * btSin(minAngle); + if(drawSect) + { + drawLine(center, prev, color); + } + for(int i = 1; i <= nSteps; i++) + { + btScalar angle = minAngle + (maxAngle - minAngle) * btScalar(i) / btScalar(nSteps); + btVector3 next = center + radiusA * vx * btCos(angle) + radiusB * vy * btSin(angle); + drawLine(prev, next, color); + prev = next; + } + if(drawSect) + { + drawLine(center, prev, color); + } + } + virtual void drawSpherePatch(const btVector3& center, const btVector3& up, const btVector3& axis, btScalar radius, + btScalar minTh, btScalar maxTh, btScalar minPs, btScalar maxPs, const btVector3& color, btScalar stepDegrees = btScalar(10.f)) + { + btVector3 vA[74]; + btVector3 vB[74]; + btVector3 *pvA = vA, *pvB = vB, *pT; + btVector3 npole = center + up * radius; + btVector3 spole = center - up * radius; + btVector3 arcStart; + btScalar step = stepDegrees * SIMD_RADS_PER_DEG; + const btVector3& kv = up; + const btVector3& iv = axis; + btVector3 jv = kv.cross(iv); + bool drawN = false; + bool drawS = false; + if(minTh <= -SIMD_HALF_PI) + { + minTh = -SIMD_HALF_PI + step; + drawN = true; + } + if(maxTh >= SIMD_HALF_PI) + { + maxTh = SIMD_HALF_PI - step; + drawS = true; + } + if(minTh > maxTh) + { + minTh = -SIMD_HALF_PI + step; + maxTh = SIMD_HALF_PI - step; + drawN = drawS = true; + } + int n_hor = (int)((maxTh - minTh) / step) + 1; + if(n_hor < 2) n_hor = 2; + btScalar step_h = (maxTh - minTh) / btScalar(n_hor - 1); + bool isClosed = false; + if(minPs > maxPs) + { + minPs = -SIMD_PI + step; + maxPs = SIMD_PI; + isClosed = true; + } + else if((maxPs - minPs) >= SIMD_PI * btScalar(2.f)) + { + isClosed = true; + } + else + { + isClosed = false; + } + int n_vert = (int)((maxPs - minPs) / step) + 1; + if(n_vert < 2) n_vert = 2; + btScalar step_v = (maxPs - minPs) / btScalar(n_vert - 1); + for(int i = 0; i < n_hor; i++) + { + btScalar th = minTh + btScalar(i) * step_h; + btScalar sth = radius * btSin(th); + btScalar cth = radius * btCos(th); + for(int j = 0; j < n_vert; j++) + { + btScalar psi = minPs + btScalar(j) * step_v; + btScalar sps = btSin(psi); + btScalar cps = btCos(psi); + pvB[j] = center + cth * cps * iv + cth * sps * jv + sth * kv; + if(i) + { + drawLine(pvA[j], pvB[j], color); + } + else if(drawS) + { + drawLine(spole, pvB[j], color); + } + if(j) + { + drawLine(pvB[j-1], pvB[j], color); + } + else + { + arcStart = pvB[j]; + } + if((i == (n_hor - 1)) && drawN) + { + drawLine(npole, pvB[j], color); + } + if(isClosed) + { + if(j == (n_vert-1)) + { + drawLine(arcStart, pvB[j], color); + } + } + else + { + if(((!i) || (i == (n_hor-1))) && ((!j) || (j == (n_vert-1)))) + { + drawLine(center, pvB[j], color); + } + } + } + pT = pvA; pvA = pvB; pvB = pT; + } + } + + virtual void drawBox(const btVector3& bbMin, const btVector3& bbMax, const btVector3& color) + { + drawLine(btVector3(bbMin[0], bbMin[1], bbMin[2]), btVector3(bbMax[0], bbMin[1], bbMin[2]), color); + drawLine(btVector3(bbMax[0], bbMin[1], bbMin[2]), btVector3(bbMax[0], bbMax[1], bbMin[2]), color); + drawLine(btVector3(bbMax[0], bbMax[1], bbMin[2]), btVector3(bbMin[0], bbMax[1], bbMin[2]), color); + drawLine(btVector3(bbMin[0], bbMax[1], bbMin[2]), btVector3(bbMin[0], bbMin[1], bbMin[2]), color); + drawLine(btVector3(bbMin[0], bbMin[1], bbMin[2]), btVector3(bbMin[0], bbMin[1], bbMax[2]), color); + drawLine(btVector3(bbMax[0], bbMin[1], bbMin[2]), btVector3(bbMax[0], bbMin[1], bbMax[2]), color); + drawLine(btVector3(bbMax[0], bbMax[1], bbMin[2]), btVector3(bbMax[0], bbMax[1], bbMax[2]), color); + drawLine(btVector3(bbMin[0], bbMax[1], bbMin[2]), btVector3(bbMin[0], bbMax[1], bbMax[2]), color); + drawLine(btVector3(bbMin[0], bbMin[1], bbMax[2]), btVector3(bbMax[0], bbMin[1], bbMax[2]), color); + drawLine(btVector3(bbMax[0], bbMin[1], bbMax[2]), btVector3(bbMax[0], bbMax[1], bbMax[2]), color); + drawLine(btVector3(bbMax[0], bbMax[1], bbMax[2]), btVector3(bbMin[0], bbMax[1], bbMax[2]), color); + drawLine(btVector3(bbMin[0], bbMax[1], bbMax[2]), btVector3(bbMin[0], bbMin[1], bbMax[2]), color); + } + virtual void drawBox(const btVector3& bbMin, const btVector3& bbMax, const btTransform& trans, const btVector3& color) + { + drawLine(trans * btVector3(bbMin[0], bbMin[1], bbMin[2]), trans * btVector3(bbMax[0], bbMin[1], bbMin[2]), color); + drawLine(trans * btVector3(bbMax[0], bbMin[1], bbMin[2]), trans * btVector3(bbMax[0], bbMax[1], bbMin[2]), color); + drawLine(trans * btVector3(bbMax[0], bbMax[1], bbMin[2]), trans * btVector3(bbMin[0], bbMax[1], bbMin[2]), color); + drawLine(trans * btVector3(bbMin[0], bbMax[1], bbMin[2]), trans * btVector3(bbMin[0], bbMin[1], bbMin[2]), color); + drawLine(trans * btVector3(bbMin[0], bbMin[1], bbMin[2]), trans * btVector3(bbMin[0], bbMin[1], bbMax[2]), color); + drawLine(trans * btVector3(bbMax[0], bbMin[1], bbMin[2]), trans * btVector3(bbMax[0], bbMin[1], bbMax[2]), color); + drawLine(trans * btVector3(bbMax[0], bbMax[1], bbMin[2]), trans * btVector3(bbMax[0], bbMax[1], bbMax[2]), color); + drawLine(trans * btVector3(bbMin[0], bbMax[1], bbMin[2]), trans * btVector3(bbMin[0], bbMax[1], bbMax[2]), color); + drawLine(trans * btVector3(bbMin[0], bbMin[1], bbMax[2]), trans * btVector3(bbMax[0], bbMin[1], bbMax[2]), color); + drawLine(trans * btVector3(bbMax[0], bbMin[1], bbMax[2]), trans * btVector3(bbMax[0], bbMax[1], bbMax[2]), color); + drawLine(trans * btVector3(bbMax[0], bbMax[1], bbMax[2]), trans * btVector3(bbMin[0], bbMax[1], bbMax[2]), color); + drawLine(trans * btVector3(bbMin[0], bbMax[1], bbMax[2]), trans * btVector3(bbMin[0], bbMin[1], bbMax[2]), color); + } +}; + + +#endif //IDEBUG_DRAW__H + diff --git a/extern/bullet2/LinearMath/btList.h b/extern/bullet2/LinearMath/btList.h new file mode 100644 index 00000000000..c87b47faf2b --- /dev/null +++ b/extern/bullet2/LinearMath/btList.h @@ -0,0 +1,73 @@ +/* +Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#ifndef GEN_LIST_H +#define GEN_LIST_H + +class btGEN_Link { +public: + btGEN_Link() : m_next(0), m_prev(0) {} + btGEN_Link(btGEN_Link *next, btGEN_Link *prev) : m_next(next), m_prev(prev) {} + + btGEN_Link *getNext() const { return m_next; } + btGEN_Link *getPrev() const { return m_prev; } + + bool isHead() const { return m_prev == 0; } + bool isTail() const { return m_next == 0; } + + void insertBefore(btGEN_Link *link) { + m_next = link; + m_prev = link->m_prev; + m_next->m_prev = this; + m_prev->m_next = this; + } + + void insertAfter(btGEN_Link *link) { + m_next = link->m_next; + m_prev = link; + m_next->m_prev = this; + m_prev->m_next = this; + } + + void remove() { + m_next->m_prev = m_prev; + m_prev->m_next = m_next; + } + +private: + btGEN_Link *m_next; + btGEN_Link *m_prev; +}; + +class btGEN_List { +public: + btGEN_List() : m_head(&m_tail, 0), m_tail(0, &m_head) {} + + btGEN_Link *getHead() const { return m_head.getNext(); } + btGEN_Link *getTail() const { return m_tail.getPrev(); } + + void addHead(btGEN_Link *link) { link->insertAfter(&m_head); } + void addTail(btGEN_Link *link) { link->insertBefore(&m_tail); } + +private: + btGEN_Link m_head; + btGEN_Link m_tail; +}; + +#endif + + + diff --git a/extern/bullet2/LinearMath/btMatrix3x3.h b/extern/bullet2/LinearMath/btMatrix3x3.h new file mode 100644 index 00000000000..3c37f6e4f1b --- /dev/null +++ b/extern/bullet2/LinearMath/btMatrix3x3.h @@ -0,0 +1,688 @@ +/* +Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef BT_MATRIX3x3_H +#define BT_MATRIX3x3_H + +#include "btVector3.h" +#include "btQuaternion.h" + +#ifdef BT_USE_DOUBLE_PRECISION +#define btMatrix3x3Data btMatrix3x3DoubleData +#else +#define btMatrix3x3Data btMatrix3x3FloatData +#endif //BT_USE_DOUBLE_PRECISION + + +/**@brief The btMatrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with btQuaternion, btTransform and btVector3. +* Make sure to only include a pure orthogonal matrix without scaling. */ +class btMatrix3x3 { + + ///Data storage for the matrix, each vector is a row of the matrix + btVector3 m_el[3]; + +public: + /** @brief No initializaion constructor */ + btMatrix3x3 () {} + + // explicit btMatrix3x3(const btScalar *m) { setFromOpenGLSubMatrix(m); } + + /**@brief Constructor from Quaternion */ + explicit btMatrix3x3(const btQuaternion& q) { setRotation(q); } + /* + template + Matrix3x3(const btScalar& yaw, const btScalar& pitch, const btScalar& roll) + { + setEulerYPR(yaw, pitch, roll); + } + */ + /** @brief Constructor with row major formatting */ + btMatrix3x3(const btScalar& xx, const btScalar& xy, const btScalar& xz, + const btScalar& yx, const btScalar& yy, const btScalar& yz, + const btScalar& zx, const btScalar& zy, const btScalar& zz) + { + setValue(xx, xy, xz, + yx, yy, yz, + zx, zy, zz); + } + /** @brief Copy constructor */ + SIMD_FORCE_INLINE btMatrix3x3 (const btMatrix3x3& other) + { + m_el[0] = other.m_el[0]; + m_el[1] = other.m_el[1]; + m_el[2] = other.m_el[2]; + } + /** @brief Assignment Operator */ + SIMD_FORCE_INLINE btMatrix3x3& operator=(const btMatrix3x3& other) + { + m_el[0] = other.m_el[0]; + m_el[1] = other.m_el[1]; + m_el[2] = other.m_el[2]; + return *this; + } + + /** @brief Get a column of the matrix as a vector + * @param i Column number 0 indexed */ + SIMD_FORCE_INLINE btVector3 getColumn(int i) const + { + return btVector3(m_el[0][i],m_el[1][i],m_el[2][i]); + } + + + /** @brief Get a row of the matrix as a vector + * @param i Row number 0 indexed */ + SIMD_FORCE_INLINE const btVector3& getRow(int i) const + { + btFullAssert(0 <= i && i < 3); + return m_el[i]; + } + + /** @brief Get a mutable reference to a row of the matrix as a vector + * @param i Row number 0 indexed */ + SIMD_FORCE_INLINE btVector3& operator[](int i) + { + btFullAssert(0 <= i && i < 3); + return m_el[i]; + } + + /** @brief Get a const reference to a row of the matrix as a vector + * @param i Row number 0 indexed */ + SIMD_FORCE_INLINE const btVector3& operator[](int i) const + { + btFullAssert(0 <= i && i < 3); + return m_el[i]; + } + + /** @brief Multiply by the target matrix on the right + * @param m Rotation matrix to be applied + * Equivilant to this = this * m */ + btMatrix3x3& operator*=(const btMatrix3x3& m); + + /** @brief Set from a carray of btScalars + * @param m A pointer to the beginning of an array of 9 btScalars */ + void setFromOpenGLSubMatrix(const btScalar *m) + { + m_el[0].setValue(m[0],m[4],m[8]); + m_el[1].setValue(m[1],m[5],m[9]); + m_el[2].setValue(m[2],m[6],m[10]); + + } + /** @brief Set the values of the matrix explicitly (row major) + * @param xx Top left + * @param xy Top Middle + * @param xz Top Right + * @param yx Middle Left + * @param yy Middle Middle + * @param yz Middle Right + * @param zx Bottom Left + * @param zy Bottom Middle + * @param zz Bottom Right*/ + void setValue(const btScalar& xx, const btScalar& xy, const btScalar& xz, + const btScalar& yx, const btScalar& yy, const btScalar& yz, + const btScalar& zx, const btScalar& zy, const btScalar& zz) + { + m_el[0].setValue(xx,xy,xz); + m_el[1].setValue(yx,yy,yz); + m_el[2].setValue(zx,zy,zz); + } + + /** @brief Set the matrix from a quaternion + * @param q The Quaternion to match */ + void setRotation(const btQuaternion& q) + { + btScalar d = q.length2(); + btFullAssert(d != btScalar(0.0)); + btScalar s = btScalar(2.0) / d; + btScalar xs = q.x() * s, ys = q.y() * s, zs = q.z() * s; + btScalar wx = q.w() * xs, wy = q.w() * ys, wz = q.w() * zs; + btScalar xx = q.x() * xs, xy = q.x() * ys, xz = q.x() * zs; + btScalar yy = q.y() * ys, yz = q.y() * zs, zz = q.z() * zs; + setValue(btScalar(1.0) - (yy + zz), xy - wz, xz + wy, + xy + wz, btScalar(1.0) - (xx + zz), yz - wx, + xz - wy, yz + wx, btScalar(1.0) - (xx + yy)); + } + + + /** @brief Set the matrix from euler angles using YPR around YXZ respectively + * @param yaw Yaw about Y axis + * @param pitch Pitch about X axis + * @param roll Roll about Z axis + */ + void setEulerYPR(const btScalar& yaw, const btScalar& pitch, const btScalar& roll) + { + setEulerZYX(roll, pitch, yaw); + } + + /** @brief Set the matrix from euler angles YPR around ZYX axes + * @param eulerX Roll about X axis + * @param eulerY Pitch around Y axis + * @param eulerZ Yaw aboud Z axis + * + * These angles are used to produce a rotation matrix. The euler + * angles are applied in ZYX order. I.e a vector is first rotated + * about X then Y and then Z + **/ + void setEulerZYX(btScalar eulerX,btScalar eulerY,btScalar eulerZ) { + ///@todo proposed to reverse this since it's labeled zyx but takes arguments xyz and it will match all other parts of the code + btScalar ci ( btCos(eulerX)); + btScalar cj ( btCos(eulerY)); + btScalar ch ( btCos(eulerZ)); + btScalar si ( btSin(eulerX)); + btScalar sj ( btSin(eulerY)); + btScalar sh ( btSin(eulerZ)); + btScalar cc = ci * ch; + btScalar cs = ci * sh; + btScalar sc = si * ch; + btScalar ss = si * sh; + + setValue(cj * ch, sj * sc - cs, sj * cc + ss, + cj * sh, sj * ss + cc, sj * cs - sc, + -sj, cj * si, cj * ci); + } + + /**@brief Set the matrix to the identity */ + void setIdentity() + { + setValue(btScalar(1.0), btScalar(0.0), btScalar(0.0), + btScalar(0.0), btScalar(1.0), btScalar(0.0), + btScalar(0.0), btScalar(0.0), btScalar(1.0)); + } + + static const btMatrix3x3& getIdentity() + { + static const btMatrix3x3 identityMatrix(btScalar(1.0), btScalar(0.0), btScalar(0.0), + btScalar(0.0), btScalar(1.0), btScalar(0.0), + btScalar(0.0), btScalar(0.0), btScalar(1.0)); + return identityMatrix; + } + + /**@brief Fill the values of the matrix into a 9 element array + * @param m The array to be filled */ + void getOpenGLSubMatrix(btScalar *m) const + { + m[0] = btScalar(m_el[0].x()); + m[1] = btScalar(m_el[1].x()); + m[2] = btScalar(m_el[2].x()); + m[3] = btScalar(0.0); + m[4] = btScalar(m_el[0].y()); + m[5] = btScalar(m_el[1].y()); + m[6] = btScalar(m_el[2].y()); + m[7] = btScalar(0.0); + m[8] = btScalar(m_el[0].z()); + m[9] = btScalar(m_el[1].z()); + m[10] = btScalar(m_el[2].z()); + m[11] = btScalar(0.0); + } + + /**@brief Get the matrix represented as a quaternion + * @param q The quaternion which will be set */ + void getRotation(btQuaternion& q) const + { + btScalar trace = m_el[0].x() + m_el[1].y() + m_el[2].z(); + btScalar temp[4]; + + if (trace > btScalar(0.0)) + { + btScalar s = btSqrt(trace + btScalar(1.0)); + temp[3]=(s * btScalar(0.5)); + s = btScalar(0.5) / s; + + temp[0]=((m_el[2].y() - m_el[1].z()) * s); + temp[1]=((m_el[0].z() - m_el[2].x()) * s); + temp[2]=((m_el[1].x() - m_el[0].y()) * s); + } + else + { + int i = m_el[0].x() < m_el[1].y() ? + (m_el[1].y() < m_el[2].z() ? 2 : 1) : + (m_el[0].x() < m_el[2].z() ? 2 : 0); + int j = (i + 1) % 3; + int k = (i + 2) % 3; + + btScalar s = btSqrt(m_el[i][i] - m_el[j][j] - m_el[k][k] + btScalar(1.0)); + temp[i] = s * btScalar(0.5); + s = btScalar(0.5) / s; + + temp[3] = (m_el[k][j] - m_el[j][k]) * s; + temp[j] = (m_el[j][i] + m_el[i][j]) * s; + temp[k] = (m_el[k][i] + m_el[i][k]) * s; + } + q.setValue(temp[0],temp[1],temp[2],temp[3]); + } + + /**@brief Get the matrix represented as euler angles around YXZ, roundtrip with setEulerYPR + * @param yaw Yaw around Y axis + * @param pitch Pitch around X axis + * @param roll around Z axis */ + void getEulerYPR(btScalar& yaw, btScalar& pitch, btScalar& roll) const + { + + // first use the normal calculus + yaw = btScalar(btAtan2(m_el[1].x(), m_el[0].x())); + pitch = btScalar(btAsin(-m_el[2].x())); + roll = btScalar(btAtan2(m_el[2].y(), m_el[2].z())); + + // on pitch = +/-HalfPI + if (btFabs(pitch)==SIMD_HALF_PI) + { + if (yaw>0) + yaw-=SIMD_PI; + else + yaw+=SIMD_PI; + + if (roll>0) + roll-=SIMD_PI; + else + roll+=SIMD_PI; + } + }; + + + /**@brief Get the matrix represented as euler angles around ZYX + * @param yaw Yaw around X axis + * @param pitch Pitch around Y axis + * @param roll around X axis + * @param solution_number Which solution of two possible solutions ( 1 or 2) are possible values*/ + void getEulerZYX(btScalar& yaw, btScalar& pitch, btScalar& roll, unsigned int solution_number = 1) const + { + struct Euler + { + btScalar yaw; + btScalar pitch; + btScalar roll; + }; + + Euler euler_out; + Euler euler_out2; //second solution + //get the pointer to the raw data + + // Check that pitch is not at a singularity + if (btFabs(m_el[2].x()) >= 1) + { + euler_out.yaw = 0; + euler_out2.yaw = 0; + + // From difference of angles formula + btScalar delta = btAtan2(m_el[0].x(),m_el[0].z()); + if (m_el[2].x() > 0) //gimbal locked up + { + euler_out.pitch = SIMD_PI / btScalar(2.0); + euler_out2.pitch = SIMD_PI / btScalar(2.0); + euler_out.roll = euler_out.pitch + delta; + euler_out2.roll = euler_out.pitch + delta; + } + else // gimbal locked down + { + euler_out.pitch = -SIMD_PI / btScalar(2.0); + euler_out2.pitch = -SIMD_PI / btScalar(2.0); + euler_out.roll = -euler_out.pitch + delta; + euler_out2.roll = -euler_out.pitch + delta; + } + } + else + { + euler_out.pitch = - btAsin(m_el[2].x()); + euler_out2.pitch = SIMD_PI - euler_out.pitch; + + euler_out.roll = btAtan2(m_el[2].y()/btCos(euler_out.pitch), + m_el[2].z()/btCos(euler_out.pitch)); + euler_out2.roll = btAtan2(m_el[2].y()/btCos(euler_out2.pitch), + m_el[2].z()/btCos(euler_out2.pitch)); + + euler_out.yaw = btAtan2(m_el[1].x()/btCos(euler_out.pitch), + m_el[0].x()/btCos(euler_out.pitch)); + euler_out2.yaw = btAtan2(m_el[1].x()/btCos(euler_out2.pitch), + m_el[0].x()/btCos(euler_out2.pitch)); + } + + if (solution_number == 1) + { + yaw = euler_out.yaw; + pitch = euler_out.pitch; + roll = euler_out.roll; + } + else + { + yaw = euler_out2.yaw; + pitch = euler_out2.pitch; + roll = euler_out2.roll; + } + } + + /**@brief Create a scaled copy of the matrix + * @param s Scaling vector The elements of the vector will scale each column */ + + btMatrix3x3 scaled(const btVector3& s) const + { + return btMatrix3x3(m_el[0].x() * s.x(), m_el[0].y() * s.y(), m_el[0].z() * s.z(), + m_el[1].x() * s.x(), m_el[1].y() * s.y(), m_el[1].z() * s.z(), + m_el[2].x() * s.x(), m_el[2].y() * s.y(), m_el[2].z() * s.z()); + } + + /**@brief Return the determinant of the matrix */ + btScalar determinant() const; + /**@brief Return the adjoint of the matrix */ + btMatrix3x3 adjoint() const; + /**@brief Return the matrix with all values non negative */ + btMatrix3x3 absolute() const; + /**@brief Return the transpose of the matrix */ + btMatrix3x3 transpose() const; + /**@brief Return the inverse of the matrix */ + btMatrix3x3 inverse() const; + + btMatrix3x3 transposeTimes(const btMatrix3x3& m) const; + btMatrix3x3 timesTranspose(const btMatrix3x3& m) const; + + SIMD_FORCE_INLINE btScalar tdotx(const btVector3& v) const + { + return m_el[0].x() * v.x() + m_el[1].x() * v.y() + m_el[2].x() * v.z(); + } + SIMD_FORCE_INLINE btScalar tdoty(const btVector3& v) const + { + return m_el[0].y() * v.x() + m_el[1].y() * v.y() + m_el[2].y() * v.z(); + } + SIMD_FORCE_INLINE btScalar tdotz(const btVector3& v) const + { + return m_el[0].z() * v.x() + m_el[1].z() * v.y() + m_el[2].z() * v.z(); + } + + + /**@brief diagonalizes this matrix by the Jacobi method. + * @param rot stores the rotation from the coordinate system in which the matrix is diagonal to the original + * coordinate system, i.e., old_this = rot * new_this * rot^T. + * @param threshold See iteration + * @param iteration The iteration stops when all off-diagonal elements are less than the threshold multiplied + * by the sum of the absolute values of the diagonal, or when maxSteps have been executed. + * + * Note that this matrix is assumed to be symmetric. + */ + void diagonalize(btMatrix3x3& rot, btScalar threshold, int maxSteps) + { + rot.setIdentity(); + for (int step = maxSteps; step > 0; step--) + { + // find off-diagonal element [p][q] with largest magnitude + int p = 0; + int q = 1; + int r = 2; + btScalar max = btFabs(m_el[0][1]); + btScalar v = btFabs(m_el[0][2]); + if (v > max) + { + q = 2; + r = 1; + max = v; + } + v = btFabs(m_el[1][2]); + if (v > max) + { + p = 1; + q = 2; + r = 0; + max = v; + } + + btScalar t = threshold * (btFabs(m_el[0][0]) + btFabs(m_el[1][1]) + btFabs(m_el[2][2])); + if (max <= t) + { + if (max <= SIMD_EPSILON * t) + { + return; + } + step = 1; + } + + // compute Jacobi rotation J which leads to a zero for element [p][q] + btScalar mpq = m_el[p][q]; + btScalar theta = (m_el[q][q] - m_el[p][p]) / (2 * mpq); + btScalar theta2 = theta * theta; + btScalar cos; + btScalar sin; + if (theta2 * theta2 < btScalar(10 / SIMD_EPSILON)) + { + t = (theta >= 0) ? 1 / (theta + btSqrt(1 + theta2)) + : 1 / (theta - btSqrt(1 + theta2)); + cos = 1 / btSqrt(1 + t * t); + sin = cos * t; + } + else + { + // approximation for large theta-value, i.e., a nearly diagonal matrix + t = 1 / (theta * (2 + btScalar(0.5) / theta2)); + cos = 1 - btScalar(0.5) * t * t; + sin = cos * t; + } + + // apply rotation to matrix (this = J^T * this * J) + m_el[p][q] = m_el[q][p] = 0; + m_el[p][p] -= t * mpq; + m_el[q][q] += t * mpq; + btScalar mrp = m_el[r][p]; + btScalar mrq = m_el[r][q]; + m_el[r][p] = m_el[p][r] = cos * mrp - sin * mrq; + m_el[r][q] = m_el[q][r] = cos * mrq + sin * mrp; + + // apply rotation to rot (rot = rot * J) + for (int i = 0; i < 3; i++) + { + btVector3& row = rot[i]; + mrp = row[p]; + mrq = row[q]; + row[p] = cos * mrp - sin * mrq; + row[q] = cos * mrq + sin * mrp; + } + } + } + + + + + /**@brief Calculate the matrix cofactor + * @param r1 The first row to use for calculating the cofactor + * @param c1 The first column to use for calculating the cofactor + * @param r1 The second row to use for calculating the cofactor + * @param c1 The second column to use for calculating the cofactor + * See http://en.wikipedia.org/wiki/Cofactor_(linear_algebra) for more details + */ + btScalar cofac(int r1, int c1, int r2, int c2) const + { + return m_el[r1][c1] * m_el[r2][c2] - m_el[r1][c2] * m_el[r2][c1]; + } + + void serialize(struct btMatrix3x3Data& dataOut) const; + + void serializeFloat(struct btMatrix3x3FloatData& dataOut) const; + + void deSerialize(const struct btMatrix3x3Data& dataIn); + + void deSerializeFloat(const struct btMatrix3x3FloatData& dataIn); + + void deSerializeDouble(const struct btMatrix3x3DoubleData& dataIn); + +}; + + +SIMD_FORCE_INLINE btMatrix3x3& +btMatrix3x3::operator*=(const btMatrix3x3& m) +{ + setValue(m.tdotx(m_el[0]), m.tdoty(m_el[0]), m.tdotz(m_el[0]), + m.tdotx(m_el[1]), m.tdoty(m_el[1]), m.tdotz(m_el[1]), + m.tdotx(m_el[2]), m.tdoty(m_el[2]), m.tdotz(m_el[2])); + return *this; +} + +SIMD_FORCE_INLINE btScalar +btMatrix3x3::determinant() const +{ + return btTriple((*this)[0], (*this)[1], (*this)[2]); +} + + +SIMD_FORCE_INLINE btMatrix3x3 +btMatrix3x3::absolute() const +{ + return btMatrix3x3( + btFabs(m_el[0].x()), btFabs(m_el[0].y()), btFabs(m_el[0].z()), + btFabs(m_el[1].x()), btFabs(m_el[1].y()), btFabs(m_el[1].z()), + btFabs(m_el[2].x()), btFabs(m_el[2].y()), btFabs(m_el[2].z())); +} + +SIMD_FORCE_INLINE btMatrix3x3 +btMatrix3x3::transpose() const +{ + return btMatrix3x3(m_el[0].x(), m_el[1].x(), m_el[2].x(), + m_el[0].y(), m_el[1].y(), m_el[2].y(), + m_el[0].z(), m_el[1].z(), m_el[2].z()); +} + +SIMD_FORCE_INLINE btMatrix3x3 +btMatrix3x3::adjoint() const +{ + return btMatrix3x3(cofac(1, 1, 2, 2), cofac(0, 2, 2, 1), cofac(0, 1, 1, 2), + cofac(1, 2, 2, 0), cofac(0, 0, 2, 2), cofac(0, 2, 1, 0), + cofac(1, 0, 2, 1), cofac(0, 1, 2, 0), cofac(0, 0, 1, 1)); +} + +SIMD_FORCE_INLINE btMatrix3x3 +btMatrix3x3::inverse() const +{ + btVector3 co(cofac(1, 1, 2, 2), cofac(1, 2, 2, 0), cofac(1, 0, 2, 1)); + btScalar det = (*this)[0].dot(co); + btFullAssert(det != btScalar(0.0)); + btScalar s = btScalar(1.0) / det; + return btMatrix3x3(co.x() * s, cofac(0, 2, 2, 1) * s, cofac(0, 1, 1, 2) * s, + co.y() * s, cofac(0, 0, 2, 2) * s, cofac(0, 2, 1, 0) * s, + co.z() * s, cofac(0, 1, 2, 0) * s, cofac(0, 0, 1, 1) * s); +} + +SIMD_FORCE_INLINE btMatrix3x3 +btMatrix3x3::transposeTimes(const btMatrix3x3& m) const +{ + return btMatrix3x3( + m_el[0].x() * m[0].x() + m_el[1].x() * m[1].x() + m_el[2].x() * m[2].x(), + m_el[0].x() * m[0].y() + m_el[1].x() * m[1].y() + m_el[2].x() * m[2].y(), + m_el[0].x() * m[0].z() + m_el[1].x() * m[1].z() + m_el[2].x() * m[2].z(), + m_el[0].y() * m[0].x() + m_el[1].y() * m[1].x() + m_el[2].y() * m[2].x(), + m_el[0].y() * m[0].y() + m_el[1].y() * m[1].y() + m_el[2].y() * m[2].y(), + m_el[0].y() * m[0].z() + m_el[1].y() * m[1].z() + m_el[2].y() * m[2].z(), + m_el[0].z() * m[0].x() + m_el[1].z() * m[1].x() + m_el[2].z() * m[2].x(), + m_el[0].z() * m[0].y() + m_el[1].z() * m[1].y() + m_el[2].z() * m[2].y(), + m_el[0].z() * m[0].z() + m_el[1].z() * m[1].z() + m_el[2].z() * m[2].z()); +} + +SIMD_FORCE_INLINE btMatrix3x3 +btMatrix3x3::timesTranspose(const btMatrix3x3& m) const +{ + return btMatrix3x3( + m_el[0].dot(m[0]), m_el[0].dot(m[1]), m_el[0].dot(m[2]), + m_el[1].dot(m[0]), m_el[1].dot(m[1]), m_el[1].dot(m[2]), + m_el[2].dot(m[0]), m_el[2].dot(m[1]), m_el[2].dot(m[2])); + +} + +SIMD_FORCE_INLINE btVector3 +operator*(const btMatrix3x3& m, const btVector3& v) +{ + return btVector3(m[0].dot(v), m[1].dot(v), m[2].dot(v)); +} + + +SIMD_FORCE_INLINE btVector3 +operator*(const btVector3& v, const btMatrix3x3& m) +{ + return btVector3(m.tdotx(v), m.tdoty(v), m.tdotz(v)); +} + +SIMD_FORCE_INLINE btMatrix3x3 +operator*(const btMatrix3x3& m1, const btMatrix3x3& m2) +{ + return btMatrix3x3( + m2.tdotx( m1[0]), m2.tdoty( m1[0]), m2.tdotz( m1[0]), + m2.tdotx( m1[1]), m2.tdoty( m1[1]), m2.tdotz( m1[1]), + m2.tdotx( m1[2]), m2.tdoty( m1[2]), m2.tdotz( m1[2])); +} + +/* +SIMD_FORCE_INLINE btMatrix3x3 btMultTransposeLeft(const btMatrix3x3& m1, const btMatrix3x3& m2) { +return btMatrix3x3( +m1[0][0] * m2[0][0] + m1[1][0] * m2[1][0] + m1[2][0] * m2[2][0], +m1[0][0] * m2[0][1] + m1[1][0] * m2[1][1] + m1[2][0] * m2[2][1], +m1[0][0] * m2[0][2] + m1[1][0] * m2[1][2] + m1[2][0] * m2[2][2], +m1[0][1] * m2[0][0] + m1[1][1] * m2[1][0] + m1[2][1] * m2[2][0], +m1[0][1] * m2[0][1] + m1[1][1] * m2[1][1] + m1[2][1] * m2[2][1], +m1[0][1] * m2[0][2] + m1[1][1] * m2[1][2] + m1[2][1] * m2[2][2], +m1[0][2] * m2[0][0] + m1[1][2] * m2[1][0] + m1[2][2] * m2[2][0], +m1[0][2] * m2[0][1] + m1[1][2] * m2[1][1] + m1[2][2] * m2[2][1], +m1[0][2] * m2[0][2] + m1[1][2] * m2[1][2] + m1[2][2] * m2[2][2]); +} +*/ + +/**@brief Equality operator between two matrices +* It will test all elements are equal. */ +SIMD_FORCE_INLINE bool operator==(const btMatrix3x3& m1, const btMatrix3x3& m2) +{ + return ( m1[0][0] == m2[0][0] && m1[1][0] == m2[1][0] && m1[2][0] == m2[2][0] && + m1[0][1] == m2[0][1] && m1[1][1] == m2[1][1] && m1[2][1] == m2[2][1] && + m1[0][2] == m2[0][2] && m1[1][2] == m2[1][2] && m1[2][2] == m2[2][2] ); +} + +///for serialization +struct btMatrix3x3FloatData +{ + btVector3FloatData m_el[3]; +}; + +///for serialization +struct btMatrix3x3DoubleData +{ + btVector3DoubleData m_el[3]; +}; + + + + +SIMD_FORCE_INLINE void btMatrix3x3::serialize(struct btMatrix3x3Data& dataOut) const +{ + for (int i=0;i<3;i++) + m_el[i].serialize(dataOut.m_el[i]); +} + +SIMD_FORCE_INLINE void btMatrix3x3::serializeFloat(struct btMatrix3x3FloatData& dataOut) const +{ + for (int i=0;i<3;i++) + m_el[i].serializeFloat(dataOut.m_el[i]); +} + + +SIMD_FORCE_INLINE void btMatrix3x3::deSerialize(const struct btMatrix3x3Data& dataIn) +{ + for (int i=0;i<3;i++) + m_el[i].deSerialize(dataIn.m_el[i]); +} + +SIMD_FORCE_INLINE void btMatrix3x3::deSerializeFloat(const struct btMatrix3x3FloatData& dataIn) +{ + for (int i=0;i<3;i++) + m_el[i].deSerializeFloat(dataIn.m_el[i]); +} + +SIMD_FORCE_INLINE void btMatrix3x3::deSerializeDouble(const struct btMatrix3x3DoubleData& dataIn) +{ + for (int i=0;i<3;i++) + m_el[i].deSerializeDouble(dataIn.m_el[i]); +} + +#endif //BT_MATRIX3x3_H + diff --git a/extern/bullet2/LinearMath/btMinMax.h b/extern/bullet2/LinearMath/btMinMax.h new file mode 100644 index 00000000000..5e27d62a4a4 --- /dev/null +++ b/extern/bullet2/LinearMath/btMinMax.h @@ -0,0 +1,69 @@ +/* +Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#ifndef GEN_MINMAX_H +#define GEN_MINMAX_H + +template +SIMD_FORCE_INLINE const T& btMin(const T& a, const T& b) +{ + return a < b ? a : b ; +} + +template +SIMD_FORCE_INLINE const T& btMax(const T& a, const T& b) +{ + return a > b ? a : b; +} + +template +SIMD_FORCE_INLINE const T& GEN_clamped(const T& a, const T& lb, const T& ub) +{ + return a < lb ? lb : (ub < a ? ub : a); +} + +template +SIMD_FORCE_INLINE void btSetMin(T& a, const T& b) +{ + if (b < a) + { + a = b; + } +} + +template +SIMD_FORCE_INLINE void btSetMax(T& a, const T& b) +{ + if (a < b) + { + a = b; + } +} + +template +SIMD_FORCE_INLINE void GEN_clamp(T& a, const T& lb, const T& ub) +{ + if (a < lb) + { + a = lb; + } + else if (ub < a) + { + a = ub; + } +} + +#endif diff --git a/extern/bullet2/LinearMath/btMotionState.h b/extern/bullet2/LinearMath/btMotionState.h new file mode 100644 index 00000000000..94318140902 --- /dev/null +++ b/extern/bullet2/LinearMath/btMotionState.h @@ -0,0 +1,40 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_MOTIONSTATE_H +#define BT_MOTIONSTATE_H + +#include "btTransform.h" + +///The btMotionState interface class allows the dynamics world to synchronize and interpolate the updated world transforms with graphics +///For optimizations, potentially only moving objects get synchronized (using setWorldPosition/setWorldOrientation) +class btMotionState +{ + public: + + virtual ~btMotionState() + { + + } + + virtual void getWorldTransform(btTransform& worldTrans ) const =0; + + //Bullet only calls the update of worldtransform for active objects + virtual void setWorldTransform(const btTransform& worldTrans)=0; + + +}; + +#endif //BT_MOTIONSTATE_H diff --git a/extern/bullet2/LinearMath/btPoolAllocator.h b/extern/bullet2/LinearMath/btPoolAllocator.h new file mode 100644 index 00000000000..39d2559c747 --- /dev/null +++ b/extern/bullet2/LinearMath/btPoolAllocator.h @@ -0,0 +1,102 @@ +/* +Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef _BT_POOL_ALLOCATOR_H +#define _BT_POOL_ALLOCATOR_H + +#include "btScalar.h" +#include "btAlignedAllocator.h" + +///The btPoolAllocator class allows to efficiently allocate a large pool of objects, instead of dynamically allocating them separately. +class btPoolAllocator +{ + int m_elemSize; + int m_maxElements; + int m_freeCount; + void* m_firstFree; + unsigned char* m_pool; + +public: + + btPoolAllocator(int elemSize, int maxElements) + :m_elemSize(elemSize), + m_maxElements(maxElements) + { + m_pool = (unsigned char*) btAlignedAlloc( static_cast(m_elemSize*m_maxElements),16); + + unsigned char* p = m_pool; + m_firstFree = p; + m_freeCount = m_maxElements; + int count = m_maxElements; + while (--count) { + *(void**)p = (p + m_elemSize); + p += m_elemSize; + } + *(void**)p = 0; + } + + ~btPoolAllocator() + { + btAlignedFree( m_pool); + } + + int getFreeCount() const + { + return m_freeCount; + } + + void* allocate(int size) + { + // release mode fix + (void)size; + btAssert(!size || size<=m_elemSize); + btAssert(m_freeCount>0); + void* result = m_firstFree; + m_firstFree = *(void**)m_firstFree; + --m_freeCount; + return result; + } + + bool validPtr(void* ptr) + { + if (ptr) { + if (((unsigned char*)ptr >= m_pool && (unsigned char*)ptr < m_pool + m_maxElements * m_elemSize)) + { + return true; + } + } + return false; + } + + void freeMemory(void* ptr) + { + if (ptr) { + btAssert((unsigned char*)ptr >= m_pool && (unsigned char*)ptr < m_pool + m_maxElements * m_elemSize); + + *(void**)ptr = m_firstFree; + m_firstFree = ptr; + ++m_freeCount; + } + } + + int getElementSize() const + { + return m_elemSize; + } + + +}; + +#endif //_BT_POOL_ALLOCATOR_H diff --git a/extern/bullet2/LinearMath/btQuadWord.h b/extern/bullet2/LinearMath/btQuadWord.h new file mode 100644 index 00000000000..c657afd2bb1 --- /dev/null +++ b/extern/bullet2/LinearMath/btQuadWord.h @@ -0,0 +1,180 @@ +/* +Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef SIMD_QUADWORD_H +#define SIMD_QUADWORD_H + +#include "btScalar.h" +#include "btMinMax.h" + + +#if defined (__CELLOS_LV2) && defined (__SPU__) +#include +#endif + +/**@brief The btQuadWord class is base class for btVector3 and btQuaternion. + * Some issues under PS3 Linux with IBM 2.1 SDK, gcc compiler prevent from using aligned quadword. + */ +#ifndef USE_LIBSPE2 +ATTRIBUTE_ALIGNED16(class) btQuadWord +#else +class btQuadWord +#endif +{ +protected: + +#if defined (__SPU__) && defined (__CELLOS_LV2__) + union { + vec_float4 mVec128; + btScalar m_floats[4]; + }; +public: + vec_float4 get128() const + { + return mVec128; + } +protected: +#else //__CELLOS_LV2__ __SPU__ + btScalar m_floats[4]; +#endif //__CELLOS_LV2__ __SPU__ + + public: + + + /**@brief Return the x value */ + SIMD_FORCE_INLINE const btScalar& getX() const { return m_floats[0]; } + /**@brief Return the y value */ + SIMD_FORCE_INLINE const btScalar& getY() const { return m_floats[1]; } + /**@brief Return the z value */ + SIMD_FORCE_INLINE const btScalar& getZ() const { return m_floats[2]; } + /**@brief Set the x value */ + SIMD_FORCE_INLINE void setX(btScalar x) { m_floats[0] = x;}; + /**@brief Set the y value */ + SIMD_FORCE_INLINE void setY(btScalar y) { m_floats[1] = y;}; + /**@brief Set the z value */ + SIMD_FORCE_INLINE void setZ(btScalar z) { m_floats[2] = z;}; + /**@brief Set the w value */ + SIMD_FORCE_INLINE void setW(btScalar w) { m_floats[3] = w;}; + /**@brief Return the x value */ + SIMD_FORCE_INLINE const btScalar& x() const { return m_floats[0]; } + /**@brief Return the y value */ + SIMD_FORCE_INLINE const btScalar& y() const { return m_floats[1]; } + /**@brief Return the z value */ + SIMD_FORCE_INLINE const btScalar& z() const { return m_floats[2]; } + /**@brief Return the w value */ + SIMD_FORCE_INLINE const btScalar& w() const { return m_floats[3]; } + + //SIMD_FORCE_INLINE btScalar& operator[](int i) { return (&m_floats[0])[i]; } + //SIMD_FORCE_INLINE const btScalar& operator[](int i) const { return (&m_floats[0])[i]; } + ///operator btScalar*() replaces operator[], using implicit conversion. We added operator != and operator == to avoid pointer comparisons. + SIMD_FORCE_INLINE operator btScalar *() { return &m_floats[0]; } + SIMD_FORCE_INLINE operator const btScalar *() const { return &m_floats[0]; } + + SIMD_FORCE_INLINE bool operator==(const btQuadWord& other) const + { + return ((m_floats[3]==other.m_floats[3]) && (m_floats[2]==other.m_floats[2]) && (m_floats[1]==other.m_floats[1]) && (m_floats[0]==other.m_floats[0])); + } + + SIMD_FORCE_INLINE bool operator!=(const btQuadWord& other) const + { + return !(*this == other); + } + + /**@brief Set x,y,z and zero w + * @param x Value of x + * @param y Value of y + * @param z Value of z + */ + SIMD_FORCE_INLINE void setValue(const btScalar& x, const btScalar& y, const btScalar& z) + { + m_floats[0]=x; + m_floats[1]=y; + m_floats[2]=z; + m_floats[3] = 0.f; + } + +/* void getValue(btScalar *m) const + { + m[0] = m_floats[0]; + m[1] = m_floats[1]; + m[2] = m_floats[2]; + } +*/ +/**@brief Set the values + * @param x Value of x + * @param y Value of y + * @param z Value of z + * @param w Value of w + */ + SIMD_FORCE_INLINE void setValue(const btScalar& x, const btScalar& y, const btScalar& z,const btScalar& w) + { + m_floats[0]=x; + m_floats[1]=y; + m_floats[2]=z; + m_floats[3]=w; + } + /**@brief No initialization constructor */ + SIMD_FORCE_INLINE btQuadWord() + // :m_floats[0](btScalar(0.)),m_floats[1](btScalar(0.)),m_floats[2](btScalar(0.)),m_floats[3](btScalar(0.)) + { + } + + /**@brief Three argument constructor (zeros w) + * @param x Value of x + * @param y Value of y + * @param z Value of z + */ + SIMD_FORCE_INLINE btQuadWord(const btScalar& x, const btScalar& y, const btScalar& z) + { + m_floats[0] = x, m_floats[1] = y, m_floats[2] = z, m_floats[3] = 0.0f; + } + +/**@brief Initializing constructor + * @param x Value of x + * @param y Value of y + * @param z Value of z + * @param w Value of w + */ + SIMD_FORCE_INLINE btQuadWord(const btScalar& x, const btScalar& y, const btScalar& z,const btScalar& w) + { + m_floats[0] = x, m_floats[1] = y, m_floats[2] = z, m_floats[3] = w; + } + + /**@brief Set each element to the max of the current values and the values of another btQuadWord + * @param other The other btQuadWord to compare with + */ + SIMD_FORCE_INLINE void setMax(const btQuadWord& other) + { + btSetMax(m_floats[0], other.m_floats[0]); + btSetMax(m_floats[1], other.m_floats[1]); + btSetMax(m_floats[2], other.m_floats[2]); + btSetMax(m_floats[3], other.m_floats[3]); + } + /**@brief Set each element to the min of the current values and the values of another btQuadWord + * @param other The other btQuadWord to compare with + */ + SIMD_FORCE_INLINE void setMin(const btQuadWord& other) + { + btSetMin(m_floats[0], other.m_floats[0]); + btSetMin(m_floats[1], other.m_floats[1]); + btSetMin(m_floats[2], other.m_floats[2]); + btSetMin(m_floats[3], other.m_floats[3]); + } + + + +}; + +#endif //SIMD_QUADWORD_H diff --git a/extern/bullet2/LinearMath/btQuaternion.h b/extern/bullet2/LinearMath/btQuaternion.h new file mode 100644 index 00000000000..15cf5f868d9 --- /dev/null +++ b/extern/bullet2/LinearMath/btQuaternion.h @@ -0,0 +1,433 @@ +/* +Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#ifndef SIMD__QUATERNION_H_ +#define SIMD__QUATERNION_H_ + + +#include "btVector3.h" +#include "btQuadWord.h" + +/**@brief The btQuaternion implements quaternion to perform linear algebra rotations in combination with btMatrix3x3, btVector3 and btTransform. */ +class btQuaternion : public btQuadWord { +public: + /**@brief No initialization constructor */ + btQuaternion() {} + + // template + // explicit Quaternion(const btScalar *v) : Tuple4(v) {} + /**@brief Constructor from scalars */ + btQuaternion(const btScalar& x, const btScalar& y, const btScalar& z, const btScalar& w) + : btQuadWord(x, y, z, w) + {} + /**@brief Axis angle Constructor + * @param axis The axis which the rotation is around + * @param angle The magnitude of the rotation around the angle (Radians) */ + btQuaternion(const btVector3& axis, const btScalar& angle) + { + setRotation(axis, angle); + } + /**@brief Constructor from Euler angles + * @param yaw Angle around Y unless BT_EULER_DEFAULT_ZYX defined then Z + * @param pitch Angle around X unless BT_EULER_DEFAULT_ZYX defined then Y + * @param roll Angle around Z unless BT_EULER_DEFAULT_ZYX defined then X */ + btQuaternion(const btScalar& yaw, const btScalar& pitch, const btScalar& roll) + { +#ifndef BT_EULER_DEFAULT_ZYX + setEuler(yaw, pitch, roll); +#else + setEulerZYX(yaw, pitch, roll); +#endif + } + /**@brief Set the rotation using axis angle notation + * @param axis The axis around which to rotate + * @param angle The magnitude of the rotation in Radians */ + void setRotation(const btVector3& axis, const btScalar& angle) + { + btScalar d = axis.length(); + btAssert(d != btScalar(0.0)); + btScalar s = btSin(angle * btScalar(0.5)) / d; + setValue(axis.x() * s, axis.y() * s, axis.z() * s, + btCos(angle * btScalar(0.5))); + } + /**@brief Set the quaternion using Euler angles + * @param yaw Angle around Y + * @param pitch Angle around X + * @param roll Angle around Z */ + void setEuler(const btScalar& yaw, const btScalar& pitch, const btScalar& roll) + { + btScalar halfYaw = btScalar(yaw) * btScalar(0.5); + btScalar halfPitch = btScalar(pitch) * btScalar(0.5); + btScalar halfRoll = btScalar(roll) * btScalar(0.5); + btScalar cosYaw = btCos(halfYaw); + btScalar sinYaw = btSin(halfYaw); + btScalar cosPitch = btCos(halfPitch); + btScalar sinPitch = btSin(halfPitch); + btScalar cosRoll = btCos(halfRoll); + btScalar sinRoll = btSin(halfRoll); + setValue(cosRoll * sinPitch * cosYaw + sinRoll * cosPitch * sinYaw, + cosRoll * cosPitch * sinYaw - sinRoll * sinPitch * cosYaw, + sinRoll * cosPitch * cosYaw - cosRoll * sinPitch * sinYaw, + cosRoll * cosPitch * cosYaw + sinRoll * sinPitch * sinYaw); + } + /**@brief Set the quaternion using euler angles + * @param yaw Angle around Z + * @param pitch Angle around Y + * @param roll Angle around X */ + void setEulerZYX(const btScalar& yaw, const btScalar& pitch, const btScalar& roll) + { + btScalar halfYaw = btScalar(yaw) * btScalar(0.5); + btScalar halfPitch = btScalar(pitch) * btScalar(0.5); + btScalar halfRoll = btScalar(roll) * btScalar(0.5); + btScalar cosYaw = btCos(halfYaw); + btScalar sinYaw = btSin(halfYaw); + btScalar cosPitch = btCos(halfPitch); + btScalar sinPitch = btSin(halfPitch); + btScalar cosRoll = btCos(halfRoll); + btScalar sinRoll = btSin(halfRoll); + setValue(sinRoll * cosPitch * cosYaw - cosRoll * sinPitch * sinYaw, //x + cosRoll * sinPitch * cosYaw + sinRoll * cosPitch * sinYaw, //y + cosRoll * cosPitch * sinYaw - sinRoll * sinPitch * cosYaw, //z + cosRoll * cosPitch * cosYaw + sinRoll * sinPitch * sinYaw); //formerly yzx + } + /**@brief Add two quaternions + * @param q The quaternion to add to this one */ + SIMD_FORCE_INLINE btQuaternion& operator+=(const btQuaternion& q) + { + m_floats[0] += q.x(); m_floats[1] += q.y(); m_floats[2] += q.z(); m_floats[3] += q.m_floats[3]; + return *this; + } + + /**@brief Subtract out a quaternion + * @param q The quaternion to subtract from this one */ + btQuaternion& operator-=(const btQuaternion& q) + { + m_floats[0] -= q.x(); m_floats[1] -= q.y(); m_floats[2] -= q.z(); m_floats[3] -= q.m_floats[3]; + return *this; + } + + /**@brief Scale this quaternion + * @param s The scalar to scale by */ + btQuaternion& operator*=(const btScalar& s) + { + m_floats[0] *= s; m_floats[1] *= s; m_floats[2] *= s; m_floats[3] *= s; + return *this; + } + + /**@brief Multiply this quaternion by q on the right + * @param q The other quaternion + * Equivilant to this = this * q */ + btQuaternion& operator*=(const btQuaternion& q) + { + setValue(m_floats[3] * q.x() + m_floats[0] * q.m_floats[3] + m_floats[1] * q.z() - m_floats[2] * q.y(), + m_floats[3] * q.y() + m_floats[1] * q.m_floats[3] + m_floats[2] * q.x() - m_floats[0] * q.z(), + m_floats[3] * q.z() + m_floats[2] * q.m_floats[3] + m_floats[0] * q.y() - m_floats[1] * q.x(), + m_floats[3] * q.m_floats[3] - m_floats[0] * q.x() - m_floats[1] * q.y() - m_floats[2] * q.z()); + return *this; + } + /**@brief Return the dot product between this quaternion and another + * @param q The other quaternion */ + btScalar dot(const btQuaternion& q) const + { + return m_floats[0] * q.x() + m_floats[1] * q.y() + m_floats[2] * q.z() + m_floats[3] * q.m_floats[3]; + } + + /**@brief Return the length squared of the quaternion */ + btScalar length2() const + { + return dot(*this); + } + + /**@brief Return the length of the quaternion */ + btScalar length() const + { + return btSqrt(length2()); + } + + /**@brief Normalize the quaternion + * Such that x^2 + y^2 + z^2 +w^2 = 1 */ + btQuaternion& normalize() + { + return *this /= length(); + } + + /**@brief Return a scaled version of this quaternion + * @param s The scale factor */ + SIMD_FORCE_INLINE btQuaternion + operator*(const btScalar& s) const + { + return btQuaternion(x() * s, y() * s, z() * s, m_floats[3] * s); + } + + + /**@brief Return an inversely scaled versionof this quaternion + * @param s The inverse scale factor */ + btQuaternion operator/(const btScalar& s) const + { + btAssert(s != btScalar(0.0)); + return *this * (btScalar(1.0) / s); + } + + /**@brief Inversely scale this quaternion + * @param s The scale factor */ + btQuaternion& operator/=(const btScalar& s) + { + btAssert(s != btScalar(0.0)); + return *this *= btScalar(1.0) / s; + } + + /**@brief Return a normalized version of this quaternion */ + btQuaternion normalized() const + { + return *this / length(); + } + /**@brief Return the angle between this quaternion and the other + * @param q The other quaternion */ + btScalar angle(const btQuaternion& q) const + { + btScalar s = btSqrt(length2() * q.length2()); + btAssert(s != btScalar(0.0)); + return btAcos(dot(q) / s); + } + /**@brief Return the angle of rotation represented by this quaternion */ + btScalar getAngle() const + { + btScalar s = btScalar(2.) * btAcos(m_floats[3]); + return s; + } + + /**@brief Return the axis of the rotation represented by this quaternion */ + btVector3 getAxis() const + { + btScalar s_squared = btScalar(1.) - btPow(m_floats[3], btScalar(2.)); + if (s_squared < btScalar(10.) * SIMD_EPSILON) //Check for divide by zero + return btVector3(1.0, 0.0, 0.0); // Arbitrary + btScalar s = btSqrt(s_squared); + return btVector3(m_floats[0] / s, m_floats[1] / s, m_floats[2] / s); + } + + /**@brief Return the inverse of this quaternion */ + btQuaternion inverse() const + { + return btQuaternion(-m_floats[0], -m_floats[1], -m_floats[2], m_floats[3]); + } + + /**@brief Return the sum of this quaternion and the other + * @param q2 The other quaternion */ + SIMD_FORCE_INLINE btQuaternion + operator+(const btQuaternion& q2) const + { + const btQuaternion& q1 = *this; + return btQuaternion(q1.x() + q2.x(), q1.y() + q2.y(), q1.z() + q2.z(), q1.m_floats[3] + q2.m_floats[3]); + } + + /**@brief Return the difference between this quaternion and the other + * @param q2 The other quaternion */ + SIMD_FORCE_INLINE btQuaternion + operator-(const btQuaternion& q2) const + { + const btQuaternion& q1 = *this; + return btQuaternion(q1.x() - q2.x(), q1.y() - q2.y(), q1.z() - q2.z(), q1.m_floats[3] - q2.m_floats[3]); + } + + /**@brief Return the negative of this quaternion + * This simply negates each element */ + SIMD_FORCE_INLINE btQuaternion operator-() const + { + const btQuaternion& q2 = *this; + return btQuaternion( - q2.x(), - q2.y(), - q2.z(), - q2.m_floats[3]); + } + /**@todo document this and it's use */ + SIMD_FORCE_INLINE btQuaternion farthest( const btQuaternion& qd) const + { + btQuaternion diff,sum; + diff = *this - qd; + sum = *this + qd; + if( diff.dot(diff) > sum.dot(sum) ) + return qd; + return (-qd); + } + + /**@todo document this and it's use */ + SIMD_FORCE_INLINE btQuaternion nearest( const btQuaternion& qd) const + { + btQuaternion diff,sum; + diff = *this - qd; + sum = *this + qd; + if( diff.dot(diff) < sum.dot(sum) ) + return qd; + return (-qd); + } + + + /**@brief Return the quaternion which is the result of Spherical Linear Interpolation between this and the other quaternion + * @param q The other quaternion to interpolate with + * @param t The ratio between this and q to interpolate. If t = 0 the result is this, if t=1 the result is q. + * Slerp interpolates assuming constant velocity. */ + btQuaternion slerp(const btQuaternion& q, const btScalar& t) const + { + btScalar theta = angle(q); + if (theta != btScalar(0.0)) + { + btScalar d = btScalar(1.0) / btSin(theta); + btScalar s0 = btSin((btScalar(1.0) - t) * theta); + btScalar s1 = btSin(t * theta); + if (dot(q) < 0) // Take care of long angle case see http://en.wikipedia.org/wiki/Slerp + return btQuaternion((m_floats[0] * s0 + -q.x() * s1) * d, + (m_floats[1] * s0 + -q.y() * s1) * d, + (m_floats[2] * s0 + -q.z() * s1) * d, + (m_floats[3] * s0 + -q.m_floats[3] * s1) * d); + else + return btQuaternion((m_floats[0] * s0 + q.x() * s1) * d, + (m_floats[1] * s0 + q.y() * s1) * d, + (m_floats[2] * s0 + q.z() * s1) * d, + (m_floats[3] * s0 + q.m_floats[3] * s1) * d); + + } + else + { + return *this; + } + } + + static const btQuaternion& getIdentity() + { + static const btQuaternion identityQuat(btScalar(0.),btScalar(0.),btScalar(0.),btScalar(1.)); + return identityQuat; + } + + SIMD_FORCE_INLINE const btScalar& getW() const { return m_floats[3]; } + + +}; + + +/**@brief Return the negative of a quaternion */ +SIMD_FORCE_INLINE btQuaternion +operator-(const btQuaternion& q) +{ + return btQuaternion(-q.x(), -q.y(), -q.z(), -q.w()); +} + + + +/**@brief Return the product of two quaternions */ +SIMD_FORCE_INLINE btQuaternion +operator*(const btQuaternion& q1, const btQuaternion& q2) { + return btQuaternion(q1.w() * q2.x() + q1.x() * q2.w() + q1.y() * q2.z() - q1.z() * q2.y(), + q1.w() * q2.y() + q1.y() * q2.w() + q1.z() * q2.x() - q1.x() * q2.z(), + q1.w() * q2.z() + q1.z() * q2.w() + q1.x() * q2.y() - q1.y() * q2.x(), + q1.w() * q2.w() - q1.x() * q2.x() - q1.y() * q2.y() - q1.z() * q2.z()); +} + +SIMD_FORCE_INLINE btQuaternion +operator*(const btQuaternion& q, const btVector3& w) +{ + return btQuaternion( q.w() * w.x() + q.y() * w.z() - q.z() * w.y(), + q.w() * w.y() + q.z() * w.x() - q.x() * w.z(), + q.w() * w.z() + q.x() * w.y() - q.y() * w.x(), + -q.x() * w.x() - q.y() * w.y() - q.z() * w.z()); +} + +SIMD_FORCE_INLINE btQuaternion +operator*(const btVector3& w, const btQuaternion& q) +{ + return btQuaternion( w.x() * q.w() + w.y() * q.z() - w.z() * q.y(), + w.y() * q.w() + w.z() * q.x() - w.x() * q.z(), + w.z() * q.w() + w.x() * q.y() - w.y() * q.x(), + -w.x() * q.x() - w.y() * q.y() - w.z() * q.z()); +} + +/**@brief Calculate the dot product between two quaternions */ +SIMD_FORCE_INLINE btScalar +dot(const btQuaternion& q1, const btQuaternion& q2) +{ + return q1.dot(q2); +} + + +/**@brief Return the length of a quaternion */ +SIMD_FORCE_INLINE btScalar +length(const btQuaternion& q) +{ + return q.length(); +} + +/**@brief Return the angle between two quaternions*/ +SIMD_FORCE_INLINE btScalar +angle(const btQuaternion& q1, const btQuaternion& q2) +{ + return q1.angle(q2); +} + +/**@brief Return the inverse of a quaternion*/ +SIMD_FORCE_INLINE btQuaternion +inverse(const btQuaternion& q) +{ + return q.inverse(); +} + +/**@brief Return the result of spherical linear interpolation betwen two quaternions + * @param q1 The first quaternion + * @param q2 The second quaternion + * @param t The ration between q1 and q2. t = 0 return q1, t=1 returns q2 + * Slerp assumes constant velocity between positions. */ +SIMD_FORCE_INLINE btQuaternion +slerp(const btQuaternion& q1, const btQuaternion& q2, const btScalar& t) +{ + return q1.slerp(q2, t); +} + +SIMD_FORCE_INLINE btVector3 +quatRotate(const btQuaternion& rotation, const btVector3& v) +{ + btQuaternion q = rotation * v; + q *= rotation.inverse(); + return btVector3(q.getX(),q.getY(),q.getZ()); +} + +SIMD_FORCE_INLINE btQuaternion +shortestArcQuat(const btVector3& v0, const btVector3& v1) // Game Programming Gems 2.10. make sure v0,v1 are normalized +{ + btVector3 c = v0.cross(v1); + btScalar d = v0.dot(v1); + + if (d < -1.0 + SIMD_EPSILON) + { + btVector3 n,unused; + btPlaneSpace1(v0,n,unused); + return btQuaternion(n.x(),n.y(),n.z(),0.0f); // just pick any vector that is orthogonal to v0 + } + + btScalar s = btSqrt((1.0f + d) * 2.0f); + btScalar rs = 1.0f / s; + + return btQuaternion(c.getX()*rs,c.getY()*rs,c.getZ()*rs,s * 0.5f); +} + +SIMD_FORCE_INLINE btQuaternion +shortestArcQuatNormalize2(btVector3& v0,btVector3& v1) +{ + v0.normalize(); + v1.normalize(); + return shortestArcQuat(v0,v1); +} + +#endif + + + + diff --git a/extern/bullet2/LinearMath/btQuickprof.cpp b/extern/bullet2/LinearMath/btQuickprof.cpp new file mode 100644 index 00000000000..61247d28fbf --- /dev/null +++ b/extern/bullet2/LinearMath/btQuickprof.cpp @@ -0,0 +1,346 @@ +/* + +*************************************************************************************************** +** +** profile.cpp +** +** Real-Time Hierarchical Profiling for Game Programming Gems 3 +** +** by Greg Hjelstrom & Byon Garrabrant +** +***************************************************************************************************/ + +// Credits: The Clock class was inspired by the Timer classes in +// Ogre (www.ogre3d.org). + +#include "btQuickprof.h" + + +#ifdef USE_BT_CLOCK + +static btClock gProfileClock; + +inline void Profile_Get_Ticks(unsigned long int * ticks) +{ + *ticks = gProfileClock.getTimeMicroseconds(); +} + +inline float Profile_Get_Tick_Rate(void) +{ +// return 1000000.f; + return 1000.f; + +} + + + +/*************************************************************************************************** +** +** CProfileNode +** +***************************************************************************************************/ + +/*********************************************************************************************** + * INPUT: * + * name - pointer to a static string which is the name of this profile node * + * parent - parent pointer * + * * + * WARNINGS: * + * The name is assumed to be a static pointer, only the pointer is stored and compared for * + * efficiency reasons. * + *=============================================================================================*/ +CProfileNode::CProfileNode( const char * name, CProfileNode * parent ) : + Name( name ), + TotalCalls( 0 ), + TotalTime( 0 ), + StartTime( 0 ), + RecursionCounter( 0 ), + Parent( parent ), + Child( NULL ), + Sibling( NULL ) +{ + Reset(); +} + + +void CProfileNode::CleanupMemory() +{ + delete ( Child); + Child = NULL; + delete ( Sibling); + Sibling = NULL; +} + +CProfileNode::~CProfileNode( void ) +{ + delete ( Child); + delete ( Sibling); +} + + +/*********************************************************************************************** + * INPUT: * + * name - static string pointer to the name of the node we are searching for * + * * + * WARNINGS: * + * All profile names are assumed to be static strings so this function uses pointer compares * + * to find the named node. * + *=============================================================================================*/ +CProfileNode * CProfileNode::Get_Sub_Node( const char * name ) +{ + // Try to find this sub node + CProfileNode * child = Child; + while ( child ) { + if ( child->Name == name ) { + return child; + } + child = child->Sibling; + } + + // We didn't find it, so add it + + CProfileNode * node = new CProfileNode( name, this ); + node->Sibling = Child; + Child = node; + return node; +} + + +void CProfileNode::Reset( void ) +{ + TotalCalls = 0; + TotalTime = 0.0f; + + + if ( Child ) { + Child->Reset(); + } + if ( Sibling ) { + Sibling->Reset(); + } +} + + +void CProfileNode::Call( void ) +{ + TotalCalls++; + if (RecursionCounter++ == 0) { + Profile_Get_Ticks(&StartTime); + } +} + + +bool CProfileNode::Return( void ) +{ + if ( --RecursionCounter == 0 && TotalCalls != 0 ) { + unsigned long int time; + Profile_Get_Ticks(&time); + time-=StartTime; + TotalTime += (float)time / Profile_Get_Tick_Rate(); + } + return ( RecursionCounter == 0 ); +} + + +/*************************************************************************************************** +** +** CProfileIterator +** +***************************************************************************************************/ +CProfileIterator::CProfileIterator( CProfileNode * start ) +{ + CurrentParent = start; + CurrentChild = CurrentParent->Get_Child(); +} + + +void CProfileIterator::First(void) +{ + CurrentChild = CurrentParent->Get_Child(); +} + + +void CProfileIterator::Next(void) +{ + CurrentChild = CurrentChild->Get_Sibling(); +} + + +bool CProfileIterator::Is_Done(void) +{ + return CurrentChild == NULL; +} + + +void CProfileIterator::Enter_Child( int index ) +{ + CurrentChild = CurrentParent->Get_Child(); + while ( (CurrentChild != NULL) && (index != 0) ) { + index--; + CurrentChild = CurrentChild->Get_Sibling(); + } + + if ( CurrentChild != NULL ) { + CurrentParent = CurrentChild; + CurrentChild = CurrentParent->Get_Child(); + } +} + + +void CProfileIterator::Enter_Parent( void ) +{ + if ( CurrentParent->Get_Parent() != NULL ) { + CurrentParent = CurrentParent->Get_Parent(); + } + CurrentChild = CurrentParent->Get_Child(); +} + + +/*************************************************************************************************** +** +** CProfileManager +** +***************************************************************************************************/ + +CProfileNode CProfileManager::Root( "Root", NULL ); +CProfileNode * CProfileManager::CurrentNode = &CProfileManager::Root; +int CProfileManager::FrameCounter = 0; +unsigned long int CProfileManager::ResetTime = 0; + + +/*********************************************************************************************** + * CProfileManager::Start_Profile -- Begin a named profile * + * * + * Steps one level deeper into the tree, if a child already exists with the specified name * + * then it accumulates the profiling; otherwise a new child node is added to the profile tree. * + * * + * INPUT: * + * name - name of this profiling record * + * * + * WARNINGS: * + * The string used is assumed to be a static string; pointer compares are used throughout * + * the profiling code for efficiency. * + *=============================================================================================*/ +void CProfileManager::Start_Profile( const char * name ) +{ + if (name != CurrentNode->Get_Name()) { + CurrentNode = CurrentNode->Get_Sub_Node( name ); + } + + CurrentNode->Call(); +} + + +/*********************************************************************************************** + * CProfileManager::Stop_Profile -- Stop timing and record the results. * + *=============================================================================================*/ +void CProfileManager::Stop_Profile( void ) +{ + // Return will indicate whether we should back up to our parent (we may + // be profiling a recursive function) + if (CurrentNode->Return()) { + CurrentNode = CurrentNode->Get_Parent(); + } +} + + +/*********************************************************************************************** + * CProfileManager::Reset -- Reset the contents of the profiling system * + * * + * This resets everything except for the tree structure. All of the timing data is reset. * + *=============================================================================================*/ +void CProfileManager::Reset( void ) +{ + gProfileClock.reset(); + Root.Reset(); + Root.Call(); + FrameCounter = 0; + Profile_Get_Ticks(&ResetTime); +} + + +/*********************************************************************************************** + * CProfileManager::Increment_Frame_Counter -- Increment the frame counter * + *=============================================================================================*/ +void CProfileManager::Increment_Frame_Counter( void ) +{ + FrameCounter++; +} + + +/*********************************************************************************************** + * CProfileManager::Get_Time_Since_Reset -- returns the elapsed time since last reset * + *=============================================================================================*/ +float CProfileManager::Get_Time_Since_Reset( void ) +{ + unsigned long int time; + Profile_Get_Ticks(&time); + time -= ResetTime; + return (float)time / Profile_Get_Tick_Rate(); +} + +#include + +void CProfileManager::dumpRecursive(CProfileIterator* profileIterator, int spacing) +{ + profileIterator->First(); + if (profileIterator->Is_Done()) + return; + + float accumulated_time=0,parent_time = profileIterator->Is_Root() ? CProfileManager::Get_Time_Since_Reset() : profileIterator->Get_Current_Parent_Total_Time(); + int i; + int frames_since_reset = CProfileManager::Get_Frame_Count_Since_Reset(); + for (i=0;iGet_Current_Parent_Name(), parent_time ); + float totalTime = 0.f; + + + int numChildren = 0; + + for (i = 0; !profileIterator->Is_Done(); i++,profileIterator->Next()) + { + numChildren++; + float current_total_time = profileIterator->Get_Current_Total_Time(); + accumulated_time += current_total_time; + float fraction = parent_time > SIMD_EPSILON ? (current_total_time / parent_time) * 100 : 0.f; + { + int i; for (i=0;iGet_Current_Name(), fraction,(current_total_time / (double)frames_since_reset),profileIterator->Get_Current_Total_Calls()); + totalTime += current_total_time; + //recurse into children + } + + if (parent_time < accumulated_time) + { + printf("what's wrong\n"); + } + for (i=0;i SIMD_EPSILON ? ((parent_time - accumulated_time) / parent_time) * 100 : 0.f, parent_time - accumulated_time); + + for (i=0;iEnter_Child(i); + dumpRecursive(profileIterator,spacing+3); + profileIterator->Enter_Parent(); + } +} + + + +void CProfileManager::dumpAll() +{ + CProfileIterator* profileIterator = 0; + profileIterator = CProfileManager::Get_Iterator(); + + dumpRecursive(profileIterator,0); + + CProfileManager::Release_Iterator(profileIterator); +} + + + +#endif //USE_BT_CLOCK + diff --git a/extern/bullet2/LinearMath/btQuickprof.h b/extern/bullet2/LinearMath/btQuickprof.h new file mode 100644 index 00000000000..d048f98e310 --- /dev/null +++ b/extern/bullet2/LinearMath/btQuickprof.h @@ -0,0 +1,370 @@ + +/*************************************************************************************************** +** +** Real-Time Hierarchical Profiling for Game Programming Gems 3 +** +** by Greg Hjelstrom & Byon Garrabrant +** +***************************************************************************************************/ + +// Credits: The Clock class was inspired by the Timer classes in +// Ogre (www.ogre3d.org). + + + +#ifndef QUICK_PROF_H +#define QUICK_PROF_H + +//To disable built-in profiling, please comment out next line +//#define BT_NO_PROFILE 1 +#ifndef BT_NO_PROFILE + +#include "btScalar.h" +#include "btAlignedAllocator.h" +#include + + + + +//if you don't need btClock, you can comment next line +#define USE_BT_CLOCK 1 + +#ifdef USE_BT_CLOCK +#ifdef __CELLOS_LV2__ +#include +#include +#include +#endif + +#if defined (SUNOS) || defined (__SUNOS__) +#include +#endif + +#if defined(WIN32) || defined(_WIN32) + +#define USE_WINDOWS_TIMERS +#define WIN32_LEAN_AND_MEAN +#define NOWINRES +#define NOMCX +#define NOIME +#ifdef _XBOX +#include +#else +#include +#endif +#include + +#else +#include +#endif + +#define mymin(a,b) (a > b ? a : b) + +///The btClock is a portable basic clock that measures accurate time in seconds, use for profiling. +class btClock +{ +public: + btClock() + { +#ifdef USE_WINDOWS_TIMERS + QueryPerformanceFrequency(&mClockFrequency); +#endif + reset(); + } + + ~btClock() + { + } + + /// Resets the initial reference time. + void reset() + { +#ifdef USE_WINDOWS_TIMERS + QueryPerformanceCounter(&mStartTime); + mStartTick = GetTickCount(); + mPrevElapsedTime = 0; +#else +#ifdef __CELLOS_LV2__ + + typedef uint64_t ClockSize; + ClockSize newTime; + //__asm __volatile__( "mftb %0" : "=r" (newTime) : : "memory"); + SYS_TIMEBASE_GET( newTime ); + mStartTime = newTime; +#else + gettimeofday(&mStartTime, 0); +#endif + +#endif + } + + /// Returns the time in ms since the last call to reset or since + /// the btClock was created. + unsigned long int getTimeMilliseconds() + { +#ifdef USE_WINDOWS_TIMERS + LARGE_INTEGER currentTime; + QueryPerformanceCounter(¤tTime); + LONGLONG elapsedTime = currentTime.QuadPart - + mStartTime.QuadPart; + + // Compute the number of millisecond ticks elapsed. + unsigned long msecTicks = (unsigned long)(1000 * elapsedTime / + mClockFrequency.QuadPart); + + // Check for unexpected leaps in the Win32 performance counter. + // (This is caused by unexpected data across the PCI to ISA + // bridge, aka south bridge. See Microsoft KB274323.) + unsigned long elapsedTicks = GetTickCount() - mStartTick; + signed long msecOff = (signed long)(msecTicks - elapsedTicks); + if (msecOff < -100 || msecOff > 100) + { + // Adjust the starting time forwards. + LONGLONG msecAdjustment = mymin(msecOff * + mClockFrequency.QuadPart / 1000, elapsedTime - + mPrevElapsedTime); + mStartTime.QuadPart += msecAdjustment; + elapsedTime -= msecAdjustment; + + // Recompute the number of millisecond ticks elapsed. + msecTicks = (unsigned long)(1000 * elapsedTime / + mClockFrequency.QuadPart); + } + + // Store the current elapsed time for adjustments next time. + mPrevElapsedTime = elapsedTime; + + return msecTicks; +#else + +#ifdef __CELLOS_LV2__ + uint64_t freq=sys_time_get_timebase_frequency(); + double dFreq=((double) freq) / 1000.0; + typedef uint64_t ClockSize; + ClockSize newTime; + SYS_TIMEBASE_GET( newTime ); + //__asm __volatile__( "mftb %0" : "=r" (newTime) : : "memory"); + + return (unsigned long int)((double(newTime-mStartTime)) / dFreq); +#else + + struct timeval currentTime; + gettimeofday(¤tTime, 0); + return (currentTime.tv_sec - mStartTime.tv_sec) * 1000 + + (currentTime.tv_usec - mStartTime.tv_usec) / 1000; +#endif //__CELLOS_LV2__ +#endif + } + + /// Returns the time in us since the last call to reset or since + /// the Clock was created. + unsigned long int getTimeMicroseconds() + { +#ifdef USE_WINDOWS_TIMERS + LARGE_INTEGER currentTime; + QueryPerformanceCounter(¤tTime); + LONGLONG elapsedTime = currentTime.QuadPart - + mStartTime.QuadPart; + + // Compute the number of millisecond ticks elapsed. + unsigned long msecTicks = (unsigned long)(1000 * elapsedTime / + mClockFrequency.QuadPart); + + // Check for unexpected leaps in the Win32 performance counter. + // (This is caused by unexpected data across the PCI to ISA + // bridge, aka south bridge. See Microsoft KB274323.) + unsigned long elapsedTicks = GetTickCount() - mStartTick; + signed long msecOff = (signed long)(msecTicks - elapsedTicks); + if (msecOff < -100 || msecOff > 100) + { + // Adjust the starting time forwards. + LONGLONG msecAdjustment = mymin(msecOff * + mClockFrequency.QuadPart / 1000, elapsedTime - + mPrevElapsedTime); + mStartTime.QuadPart += msecAdjustment; + elapsedTime -= msecAdjustment; + } + + // Store the current elapsed time for adjustments next time. + mPrevElapsedTime = elapsedTime; + + // Convert to microseconds. + unsigned long usecTicks = (unsigned long)(1000000 * elapsedTime / + mClockFrequency.QuadPart); + + return usecTicks; +#else + +#ifdef __CELLOS_LV2__ + uint64_t freq=sys_time_get_timebase_frequency(); + double dFreq=((double) freq)/ 1000000.0; + typedef uint64_t ClockSize; + ClockSize newTime; + //__asm __volatile__( "mftb %0" : "=r" (newTime) : : "memory"); + SYS_TIMEBASE_GET( newTime ); + + return (unsigned long int)((double(newTime-mStartTime)) / dFreq); +#else + + struct timeval currentTime; + gettimeofday(¤tTime, 0); + return (currentTime.tv_sec - mStartTime.tv_sec) * 1000000 + + (currentTime.tv_usec - mStartTime.tv_usec); +#endif//__CELLOS_LV2__ +#endif + } + +private: +#ifdef USE_WINDOWS_TIMERS + LARGE_INTEGER mClockFrequency; + DWORD mStartTick; + LONGLONG mPrevElapsedTime; + LARGE_INTEGER mStartTime; +#else +#ifdef __CELLOS_LV2__ + uint64_t mStartTime; +#else + struct timeval mStartTime; +#endif +#endif //__CELLOS_LV2__ + +}; + +#endif //USE_BT_CLOCK + + + + +///A node in the Profile Hierarchy Tree +class CProfileNode { + +public: + CProfileNode( const char * name, CProfileNode * parent ); + ~CProfileNode( void ); + + CProfileNode * Get_Sub_Node( const char * name ); + + CProfileNode * Get_Parent( void ) { return Parent; } + CProfileNode * Get_Sibling( void ) { return Sibling; } + CProfileNode * Get_Child( void ) { return Child; } + + void CleanupMemory(); + void Reset( void ); + void Call( void ); + bool Return( void ); + + const char * Get_Name( void ) { return Name; } + int Get_Total_Calls( void ) { return TotalCalls; } + float Get_Total_Time( void ) { return TotalTime; } + +protected: + + const char * Name; + int TotalCalls; + float TotalTime; + unsigned long int StartTime; + int RecursionCounter; + + CProfileNode * Parent; + CProfileNode * Child; + CProfileNode * Sibling; +}; + +///An iterator to navigate through the tree +class CProfileIterator +{ +public: + // Access all the children of the current parent + void First(void); + void Next(void); + bool Is_Done(void); + bool Is_Root(void) { return (CurrentParent->Get_Parent() == 0); } + + void Enter_Child( int index ); // Make the given child the new parent + void Enter_Largest_Child( void ); // Make the largest child the new parent + void Enter_Parent( void ); // Make the current parent's parent the new parent + + // Access the current child + const char * Get_Current_Name( void ) { return CurrentChild->Get_Name(); } + int Get_Current_Total_Calls( void ) { return CurrentChild->Get_Total_Calls(); } + float Get_Current_Total_Time( void ) { return CurrentChild->Get_Total_Time(); } + + // Access the current parent + const char * Get_Current_Parent_Name( void ) { return CurrentParent->Get_Name(); } + int Get_Current_Parent_Total_Calls( void ) { return CurrentParent->Get_Total_Calls(); } + float Get_Current_Parent_Total_Time( void ) { return CurrentParent->Get_Total_Time(); } + +protected: + + CProfileNode * CurrentParent; + CProfileNode * CurrentChild; + + CProfileIterator( CProfileNode * start ); + friend class CProfileManager; +}; + + +///The Manager for the Profile system +class CProfileManager { +public: + static void Start_Profile( const char * name ); + static void Stop_Profile( void ); + + static void CleanupMemory(void) + { + Root.CleanupMemory(); + } + + static void Reset( void ); + static void Increment_Frame_Counter( void ); + static int Get_Frame_Count_Since_Reset( void ) { return FrameCounter; } + static float Get_Time_Since_Reset( void ); + + static CProfileIterator * Get_Iterator( void ) + { + + return new CProfileIterator( &Root ); + } + static void Release_Iterator( CProfileIterator * iterator ) { delete ( iterator); } + + static void dumpRecursive(CProfileIterator* profileIterator, int spacing); + + static void dumpAll(); + +private: + static CProfileNode Root; + static CProfileNode * CurrentNode; + static int FrameCounter; + static unsigned long int ResetTime; +}; + + +///ProfileSampleClass is a simple way to profile a function's scope +///Use the BT_PROFILE macro at the start of scope to time +class CProfileSample { +public: + CProfileSample( const char * name ) + { + CProfileManager::Start_Profile( name ); + } + + ~CProfileSample( void ) + { + CProfileManager::Stop_Profile(); + } +}; + + +#define BT_PROFILE( name ) CProfileSample __profile( name ) + +#else + +#define BT_PROFILE( name ) + +#endif //#ifndef BT_NO_PROFILE + + + +#endif //QUICK_PROF_H + + diff --git a/extern/bullet2/LinearMath/btRandom.h b/extern/bullet2/LinearMath/btRandom.h new file mode 100644 index 00000000000..fdf65e01caf --- /dev/null +++ b/extern/bullet2/LinearMath/btRandom.h @@ -0,0 +1,42 @@ +/* +Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#ifndef GEN_RANDOM_H +#define GEN_RANDOM_H + +#ifdef MT19937 + +#include +#include + +#define GEN_RAND_MAX UINT_MAX + +SIMD_FORCE_INLINE void GEN_srand(unsigned int seed) { init_genrand(seed); } +SIMD_FORCE_INLINE unsigned int GEN_rand() { return genrand_int32(); } + +#else + +#include + +#define GEN_RAND_MAX RAND_MAX + +SIMD_FORCE_INLINE void GEN_srand(unsigned int seed) { srand(seed); } +SIMD_FORCE_INLINE unsigned int GEN_rand() { return rand(); } + +#endif + +#endif + diff --git a/extern/bullet2/LinearMath/btScalar.h b/extern/bullet2/LinearMath/btScalar.h new file mode 100644 index 00000000000..9f6ceb3e0d3 --- /dev/null +++ b/extern/bullet2/LinearMath/btScalar.h @@ -0,0 +1,517 @@ +/* +Copyright (c) 2003-2009 Erwin Coumans http://bullet.googlecode.com + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#ifndef SIMD___SCALAR_H +#define SIMD___SCALAR_H + +#ifdef BT_MANAGED_CODE +//Aligned data types not supported in managed code +#pragma unmanaged +#endif + + +#include +#include //size_t for MSVC 6.0 +#include +#include +#include + +/* SVN $Revision$ on $Date$ from http://bullet.googlecode.com*/ +#define BT_BULLET_VERSION 276 + +inline int btGetVersion() +{ + return BT_BULLET_VERSION; +} + +#if defined(DEBUG) || defined (_DEBUG) +#define BT_DEBUG +#endif + + +#ifdef _WIN32 + + #if defined(__MINGW32__) || defined(__CYGWIN__) || (defined (_MSC_VER) && _MSC_VER < 1300) + + #define SIMD_FORCE_INLINE inline + #define ATTRIBUTE_ALIGNED16(a) a + #define ATTRIBUTE_ALIGNED64(a) a + #define ATTRIBUTE_ALIGNED128(a) a + #else + //#define BT_HAS_ALIGNED_ALLOCATOR + #pragma warning(disable : 4324) // disable padding warning +// #pragma warning(disable:4530) // Disable the exception disable but used in MSCV Stl warning. +// #pragma warning(disable:4996) //Turn off warnings about deprecated C routines +// #pragma warning(disable:4786) // Disable the "debug name too long" warning + + #define SIMD_FORCE_INLINE __forceinline + #define ATTRIBUTE_ALIGNED16(a) __declspec(align(16)) a + #define ATTRIBUTE_ALIGNED64(a) __declspec(align(64)) a + #define ATTRIBUTE_ALIGNED128(a) __declspec (align(128)) a + #ifdef _XBOX + #define BT_USE_VMX128 + + #include + #define BT_HAVE_NATIVE_FSEL + #define btFsel(a,b,c) __fsel((a),(b),(c)) + #else + +#if (defined (_WIN32) && (_MSC_VER) && _MSC_VER >= 1400) && (!defined (BT_USE_DOUBLE_PRECISION)) + #define BT_USE_SSE + #include +#endif + + #endif//_XBOX + + #endif //__MINGW32__ + + #include +#ifdef BT_DEBUG + #define btAssert assert +#else + #define btAssert(x) +#endif + //btFullAssert is optional, slows down a lot + #define btFullAssert(x) + + #define btLikely(_c) _c + #define btUnlikely(_c) _c + +#else + +#if defined (__CELLOS_LV2__) + #define SIMD_FORCE_INLINE inline + #define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16))) + #define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64))) + #define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128))) + #ifndef assert + #include + #endif +#ifdef BT_DEBUG + #define btAssert assert +#else + #define btAssert(x) +#endif + //btFullAssert is optional, slows down a lot + #define btFullAssert(x) + + #define btLikely(_c) _c + #define btUnlikely(_c) _c + +#else + +#ifdef USE_LIBSPE2 + + #define SIMD_FORCE_INLINE __inline + #define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16))) + #define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64))) + #define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128))) + #ifndef assert + #include + #endif +#ifdef BT_DEBUG + #define btAssert assert +#else + #define btAssert(x) +#endif + //btFullAssert is optional, slows down a lot + #define btFullAssert(x) + + + #define btLikely(_c) __builtin_expect((_c), 1) + #define btUnlikely(_c) __builtin_expect((_c), 0) + + +#else + //non-windows systems + +#if (defined (__APPLE__) && defined (__i386__) && (!defined (BT_USE_DOUBLE_PRECISION))) + #define BT_USE_SSE + #include + + #define SIMD_FORCE_INLINE inline +///@todo: check out alignment methods for other platforms/compilers + #define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16))) + #define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64))) + #define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128))) + #ifndef assert + #include + #endif + + #if defined(DEBUG) || defined (_DEBUG) + #define btAssert assert + #else + #define btAssert(x) + #endif + + //btFullAssert is optional, slows down a lot + #define btFullAssert(x) + #define btLikely(_c) _c + #define btUnlikely(_c) _c + +#else + + #define SIMD_FORCE_INLINE inline + ///@todo: check out alignment methods for other platforms/compilers + ///#define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16))) + ///#define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64))) + ///#define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128))) + #define ATTRIBUTE_ALIGNED16(a) a + #define ATTRIBUTE_ALIGNED64(a) a + #define ATTRIBUTE_ALIGNED128(a) a + #ifndef assert + #include + #endif + +#if defined(DEBUG) || defined (_DEBUG) + #define btAssert assert +#else + #define btAssert(x) +#endif + + //btFullAssert is optional, slows down a lot + #define btFullAssert(x) + #define btLikely(_c) _c + #define btUnlikely(_c) _c +#endif //__APPLE__ + +#endif // LIBSPE2 + +#endif //__CELLOS_LV2__ +#endif + + +///The btScalar type abstracts floating point numbers, to easily switch between double and single floating point precision. +#if defined(BT_USE_DOUBLE_PRECISION) +typedef double btScalar; +//this number could be bigger in double precision +#define BT_LARGE_FLOAT 1e30 +#else +typedef float btScalar; +//keep BT_LARGE_FLOAT*BT_LARGE_FLOAT < FLT_MAX +#define BT_LARGE_FLOAT 1e18f +#endif + + + +#define BT_DECLARE_ALIGNED_ALLOCATOR() \ + SIMD_FORCE_INLINE void* operator new(size_t sizeInBytes) { return btAlignedAlloc(sizeInBytes,16); } \ + SIMD_FORCE_INLINE void operator delete(void* ptr) { btAlignedFree(ptr); } \ + SIMD_FORCE_INLINE void* operator new(size_t, void* ptr) { return ptr; } \ + SIMD_FORCE_INLINE void operator delete(void*, void*) { } \ + SIMD_FORCE_INLINE void* operator new[](size_t sizeInBytes) { return btAlignedAlloc(sizeInBytes,16); } \ + SIMD_FORCE_INLINE void operator delete[](void* ptr) { btAlignedFree(ptr); } \ + SIMD_FORCE_INLINE void* operator new[](size_t, void* ptr) { return ptr; } \ + SIMD_FORCE_INLINE void operator delete[](void*, void*) { } \ + + + +#if defined(BT_USE_DOUBLE_PRECISION) || defined(BT_FORCE_DOUBLE_FUNCTIONS) + +SIMD_FORCE_INLINE btScalar btSqrt(btScalar x) { return sqrt(x); } +SIMD_FORCE_INLINE btScalar btFabs(btScalar x) { return fabs(x); } +SIMD_FORCE_INLINE btScalar btCos(btScalar x) { return cos(x); } +SIMD_FORCE_INLINE btScalar btSin(btScalar x) { return sin(x); } +SIMD_FORCE_INLINE btScalar btTan(btScalar x) { return tan(x); } +SIMD_FORCE_INLINE btScalar btAcos(btScalar x) { if (xbtScalar(1)) x=btScalar(1); return acos(x); } +SIMD_FORCE_INLINE btScalar btAsin(btScalar x) { if (xbtScalar(1)) x=btScalar(1); return asin(x); } +SIMD_FORCE_INLINE btScalar btAtan(btScalar x) { return atan(x); } +SIMD_FORCE_INLINE btScalar btAtan2(btScalar x, btScalar y) { return atan2(x, y); } +SIMD_FORCE_INLINE btScalar btExp(btScalar x) { return exp(x); } +SIMD_FORCE_INLINE btScalar btLog(btScalar x) { return log(x); } +SIMD_FORCE_INLINE btScalar btPow(btScalar x,btScalar y) { return pow(x,y); } +SIMD_FORCE_INLINE btScalar btFmod(btScalar x,btScalar y) { return fmod(x,y); } + +#else + +SIMD_FORCE_INLINE btScalar btSqrt(btScalar y) +{ +#ifdef USE_APPROXIMATION + double x, z, tempf; + unsigned long *tfptr = ((unsigned long *)&tempf) + 1; + + tempf = y; + *tfptr = (0xbfcdd90a - *tfptr)>>1; /* estimate of 1/sqrt(y) */ + x = tempf; + z = y*btScalar(0.5); /* hoist out the “/2” */ + x = (btScalar(1.5)*x)-(x*x)*(x*z); /* iteration formula */ + x = (btScalar(1.5)*x)-(x*x)*(x*z); + x = (btScalar(1.5)*x)-(x*x)*(x*z); + x = (btScalar(1.5)*x)-(x*x)*(x*z); + x = (btScalar(1.5)*x)-(x*x)*(x*z); + return x*y; +#else + return sqrtf(y); +#endif +} +SIMD_FORCE_INLINE btScalar btFabs(btScalar x) { return fabsf(x); } +SIMD_FORCE_INLINE btScalar btCos(btScalar x) { return cosf(x); } +SIMD_FORCE_INLINE btScalar btSin(btScalar x) { return sinf(x); } +SIMD_FORCE_INLINE btScalar btTan(btScalar x) { return tanf(x); } +SIMD_FORCE_INLINE btScalar btAcos(btScalar x) { + if (xbtScalar(1)) + x=btScalar(1); + return acosf(x); +} +SIMD_FORCE_INLINE btScalar btAsin(btScalar x) { + if (xbtScalar(1)) + x=btScalar(1); + return asinf(x); +} +SIMD_FORCE_INLINE btScalar btAtan(btScalar x) { return atanf(x); } +SIMD_FORCE_INLINE btScalar btAtan2(btScalar x, btScalar y) { return atan2f(x, y); } +SIMD_FORCE_INLINE btScalar btExp(btScalar x) { return expf(x); } +SIMD_FORCE_INLINE btScalar btLog(btScalar x) { return logf(x); } +SIMD_FORCE_INLINE btScalar btPow(btScalar x,btScalar y) { return powf(x,y); } +SIMD_FORCE_INLINE btScalar btFmod(btScalar x,btScalar y) { return fmodf(x,y); } + +#endif + +#define SIMD_2_PI btScalar(6.283185307179586232) +#define SIMD_PI (SIMD_2_PI * btScalar(0.5)) +#define SIMD_HALF_PI (SIMD_2_PI * btScalar(0.25)) +#define SIMD_RADS_PER_DEG (SIMD_2_PI / btScalar(360.0)) +#define SIMD_DEGS_PER_RAD (btScalar(360.0) / SIMD_2_PI) +#define SIMDSQRT12 btScalar(0.7071067811865475244008443621048490) + +#define btRecipSqrt(x) ((btScalar)(btScalar(1.0)/btSqrt(btScalar(x)))) /* reciprocal square root */ + + +#ifdef BT_USE_DOUBLE_PRECISION +#define SIMD_EPSILON DBL_EPSILON +#define SIMD_INFINITY DBL_MAX +#else +#define SIMD_EPSILON FLT_EPSILON +#define SIMD_INFINITY FLT_MAX +#endif + +SIMD_FORCE_INLINE btScalar btAtan2Fast(btScalar y, btScalar x) +{ + btScalar coeff_1 = SIMD_PI / 4.0f; + btScalar coeff_2 = 3.0f * coeff_1; + btScalar abs_y = btFabs(y); + btScalar angle; + if (x >= 0.0f) { + btScalar r = (x - abs_y) / (x + abs_y); + angle = coeff_1 - coeff_1 * r; + } else { + btScalar r = (x + abs_y) / (abs_y - x); + angle = coeff_2 - coeff_1 * r; + } + return (y < 0.0f) ? -angle : angle; +} + +SIMD_FORCE_INLINE bool btFuzzyZero(btScalar x) { return btFabs(x) < SIMD_EPSILON; } + +SIMD_FORCE_INLINE bool btEqual(btScalar a, btScalar eps) { + return (((a) <= eps) && !((a) < -eps)); +} +SIMD_FORCE_INLINE bool btGreaterEqual (btScalar a, btScalar eps) { + return (!((a) <= eps)); +} + + +SIMD_FORCE_INLINE int btIsNegative(btScalar x) { + return x < btScalar(0.0) ? 1 : 0; +} + +SIMD_FORCE_INLINE btScalar btRadians(btScalar x) { return x * SIMD_RADS_PER_DEG; } +SIMD_FORCE_INLINE btScalar btDegrees(btScalar x) { return x * SIMD_DEGS_PER_RAD; } + +#define BT_DECLARE_HANDLE(name) typedef struct name##__ { int unused; } *name + +#ifndef btFsel +SIMD_FORCE_INLINE btScalar btFsel(btScalar a, btScalar b, btScalar c) +{ + return a >= 0 ? b : c; +} +#endif +#define btFsels(a,b,c) (btScalar)btFsel(a,b,c) + + +SIMD_FORCE_INLINE bool btMachineIsLittleEndian() +{ + long int i = 1; + const char *p = (const char *) &i; + if (p[0] == 1) // Lowest address contains the least significant byte + return true; + else + return false; +} + + + +///btSelect avoids branches, which makes performance much better for consoles like Playstation 3 and XBox 360 +///Thanks Phil Knight. See also http://www.cellperformance.com/articles/2006/04/more_techniques_for_eliminatin_1.html +SIMD_FORCE_INLINE unsigned btSelect(unsigned condition, unsigned valueIfConditionNonZero, unsigned valueIfConditionZero) +{ + // Set testNz to 0xFFFFFFFF if condition is nonzero, 0x00000000 if condition is zero + // Rely on positive value or'ed with its negative having sign bit on + // and zero value or'ed with its negative (which is still zero) having sign bit off + // Use arithmetic shift right, shifting the sign bit through all 32 bits + unsigned testNz = (unsigned)(((int)condition | -(int)condition) >> 31); + unsigned testEqz = ~testNz; + return ((valueIfConditionNonZero & testNz) | (valueIfConditionZero & testEqz)); +} +SIMD_FORCE_INLINE int btSelect(unsigned condition, int valueIfConditionNonZero, int valueIfConditionZero) +{ + unsigned testNz = (unsigned)(((int)condition | -(int)condition) >> 31); + unsigned testEqz = ~testNz; + return static_cast((valueIfConditionNonZero & testNz) | (valueIfConditionZero & testEqz)); +} +SIMD_FORCE_INLINE float btSelect(unsigned condition, float valueIfConditionNonZero, float valueIfConditionZero) +{ +#ifdef BT_HAVE_NATIVE_FSEL + return (float)btFsel((btScalar)condition - btScalar(1.0f), valueIfConditionNonZero, valueIfConditionZero); +#else + return (condition != 0) ? valueIfConditionNonZero : valueIfConditionZero; +#endif +} + +template SIMD_FORCE_INLINE void btSwap(T& a, T& b) +{ + T tmp = a; + a = b; + b = tmp; +} + + +//PCK: endian swapping functions +SIMD_FORCE_INLINE unsigned btSwapEndian(unsigned val) +{ + return (((val & 0xff000000) >> 24) | ((val & 0x00ff0000) >> 8) | ((val & 0x0000ff00) << 8) | ((val & 0x000000ff) << 24)); +} + +SIMD_FORCE_INLINE unsigned short btSwapEndian(unsigned short val) +{ + return static_cast(((val & 0xff00) >> 8) | ((val & 0x00ff) << 8)); +} + +SIMD_FORCE_INLINE unsigned btSwapEndian(int val) +{ + return btSwapEndian((unsigned)val); +} + +SIMD_FORCE_INLINE unsigned short btSwapEndian(short val) +{ + return btSwapEndian((unsigned short) val); +} + +///btSwapFloat uses using char pointers to swap the endianness +////btSwapFloat/btSwapDouble will NOT return a float, because the machine might 'correct' invalid floating point values +///Not all values of sign/exponent/mantissa are valid floating point numbers according to IEEE 754. +///When a floating point unit is faced with an invalid value, it may actually change the value, or worse, throw an exception. +///In most systems, running user mode code, you wouldn't get an exception, but instead the hardware/os/runtime will 'fix' the number for you. +///so instead of returning a float/double, we return integer/long long integer +SIMD_FORCE_INLINE unsigned int btSwapEndianFloat(float d) +{ + unsigned int a = 0; + unsigned char *dst = (unsigned char *)&a; + unsigned char *src = (unsigned char *)&d; + + dst[0] = src[3]; + dst[1] = src[2]; + dst[2] = src[1]; + dst[3] = src[0]; + return a; +} + +// unswap using char pointers +SIMD_FORCE_INLINE float btUnswapEndianFloat(unsigned int a) +{ + float d = 0.0f; + unsigned char *src = (unsigned char *)&a; + unsigned char *dst = (unsigned char *)&d; + + dst[0] = src[3]; + dst[1] = src[2]; + dst[2] = src[1]; + dst[3] = src[0]; + + return d; +} + + +// swap using char pointers +SIMD_FORCE_INLINE void btSwapEndianDouble(double d, unsigned char* dst) +{ + unsigned char *src = (unsigned char *)&d; + + dst[0] = src[7]; + dst[1] = src[6]; + dst[2] = src[5]; + dst[3] = src[4]; + dst[4] = src[3]; + dst[5] = src[2]; + dst[6] = src[1]; + dst[7] = src[0]; + +} + +// unswap using char pointers +SIMD_FORCE_INLINE double btUnswapEndianDouble(const unsigned char *src) +{ + double d = 0.0; + unsigned char *dst = (unsigned char *)&d; + + dst[0] = src[7]; + dst[1] = src[6]; + dst[2] = src[5]; + dst[3] = src[4]; + dst[4] = src[3]; + dst[5] = src[2]; + dst[6] = src[1]; + dst[7] = src[0]; + + return d; +} + +// returns normalized value in range [-SIMD_PI, SIMD_PI] +SIMD_FORCE_INLINE btScalar btNormalizeAngle(btScalar angleInRadians) +{ + angleInRadians = btFmod(angleInRadians, SIMD_2_PI); + if(angleInRadians < -SIMD_PI) + { + return angleInRadians + SIMD_2_PI; + } + else if(angleInRadians > SIMD_PI) + { + return angleInRadians - SIMD_2_PI; + } + else + { + return angleInRadians; + } +} + +///rudimentary class to provide type info +struct btTypedObject +{ + btTypedObject(int objectType) + :m_objectType(objectType) + { + } + int m_objectType; + inline int getObjectType() const + { + return m_objectType; + } +}; +#endif //SIMD___SCALAR_H diff --git a/extern/bullet2/LinearMath/btSerializer.cpp b/extern/bullet2/LinearMath/btSerializer.cpp new file mode 100644 index 00000000000..10f613a0aba --- /dev/null +++ b/extern/bullet2/LinearMath/btSerializer.cpp @@ -0,0 +1,577 @@ +unsigned char sBulletDNAstr64[]= { +83,68,78,65,78,65,77,69,-79,0,0,0,109,95,115,105,122,101,0,109, +95,99,97,112,97,99,105,116,121,0,42,109,95,100,97,116,97,0,109,95, +99,111,108,108,105,115,105,111,110,83,104,97,112,101,115,0,109,95,99,111, +108,108,105,115,105,111,110,79,98,106,101,99,116,115,0,109,95,99,111,110, +115,116,114,97,105,110,116,115,0,42,102,105,114,115,116,0,42,108,97,115, +116,0,109,95,102,108,111,97,116,115,91,52,93,0,109,95,101,108,91,51, +93,0,109,95,98,97,115,105,115,0,109,95,111,114,105,103,105,110,0,109, +95,114,111,111,116,78,111,100,101,73,110,100,101,120,0,109,95,115,117,98, +116,114,101,101,83,105,122,101,0,109,95,113,117,97,110,116,105,122,101,100, +65,97,98,98,77,105,110,91,51,93,0,109,95,113,117,97,110,116,105,122, +101,100,65,97,98,98,77,97,120,91,51,93,0,109,95,97,97,98,98,77, +105,110,79,114,103,0,109,95,97,97,98,98,77,97,120,79,114,103,0,109, +95,101,115,99,97,112,101,73,110,100,101,120,0,109,95,115,117,98,80,97, +114,116,0,109,95,116,114,105,97,110,103,108,101,73,110,100,101,120,0,109, +95,112,97,100,91,52,93,0,109,95,101,115,99,97,112,101,73,110,100,101, +120,79,114,84,114,105,97,110,103,108,101,73,110,100,101,120,0,109,95,98, +118,104,65,97,98,98,77,105,110,0,109,95,98,118,104,65,97,98,98,77, +97,120,0,109,95,98,118,104,81,117,97,110,116,105,122,97,116,105,111,110, +0,109,95,99,117,114,78,111,100,101,73,110,100,101,120,0,109,95,117,115, +101,81,117,97,110,116,105,122,97,116,105,111,110,0,109,95,110,117,109,67, +111,110,116,105,103,117,111,117,115,76,101,97,102,78,111,100,101,115,0,109, +95,110,117,109,81,117,97,110,116,105,122,101,100,67,111,110,116,105,103,117, +111,117,115,78,111,100,101,115,0,42,109,95,99,111,110,116,105,103,117,111, +117,115,78,111,100,101,115,80,116,114,0,42,109,95,113,117,97,110,116,105, +122,101,100,67,111,110,116,105,103,117,111,117,115,78,111,100,101,115,80,116, +114,0,42,109,95,115,117,98,84,114,101,101,73,110,102,111,80,116,114,0, +109,95,116,114,97,118,101,114,115,97,108,77,111,100,101,0,109,95,110,117, +109,83,117,98,116,114,101,101,72,101,97,100,101,114,115,0,42,109,95,110, +97,109,101,0,109,95,115,104,97,112,101,84,121,112,101,0,109,95,112,97, +100,100,105,110,103,91,52,93,0,109,95,99,111,108,108,105,115,105,111,110, +83,104,97,112,101,68,97,116,97,0,109,95,108,111,99,97,108,83,99,97, +108,105,110,103,0,109,95,112,108,97,110,101,78,111,114,109,97,108,0,109, +95,112,108,97,110,101,67,111,110,115,116,97,110,116,0,109,95,105,109,112, +108,105,99,105,116,83,104,97,112,101,68,105,109,101,110,115,105,111,110,115, +0,109,95,99,111,108,108,105,115,105,111,110,77,97,114,103,105,110,0,109, +95,112,97,100,100,105,110,103,0,109,95,112,111,115,0,109,95,114,97,100, +105,117,115,0,109,95,99,111,110,118,101,120,73,110,116,101,114,110,97,108, +83,104,97,112,101,68,97,116,97,0,42,109,95,108,111,99,97,108,80,111, +115,105,116,105,111,110,65,114,114,97,121,80,116,114,0,109,95,108,111,99, +97,108,80,111,115,105,116,105,111,110,65,114,114,97,121,83,105,122,101,0, +109,95,118,97,108,117,101,0,109,95,112,97,100,91,50,93,0,109,95,118, +97,108,117,101,115,91,51,93,0,42,109,95,118,101,114,116,105,99,101,115, +51,102,0,42,109,95,118,101,114,116,105,99,101,115,51,100,0,42,109,95, +105,110,100,105,99,101,115,51,50,0,42,109,95,51,105,110,100,105,99,101, +115,49,54,0,42,109,95,105,110,100,105,99,101,115,49,54,0,109,95,110, +117,109,84,114,105,97,110,103,108,101,115,0,109,95,110,117,109,86,101,114, +116,105,99,101,115,0,42,109,95,109,101,115,104,80,97,114,116,115,80,116, +114,0,109,95,115,99,97,108,105,110,103,0,109,95,110,117,109,77,101,115, +104,80,97,114,116,115,0,109,95,109,101,115,104,73,110,116,101,114,102,97, +99,101,0,42,109,95,113,117,97,110,116,105,122,101,100,70,108,111,97,116, +66,118,104,0,42,109,95,113,117,97,110,116,105,122,101,100,68,111,117,98, +108,101,66,118,104,0,42,109,95,116,114,105,97,110,103,108,101,73,110,102, +111,77,97,112,0,109,95,112,97,100,51,91,52,93,0,109,95,116,114,97, +110,115,102,111,114,109,0,42,109,95,99,104,105,108,100,83,104,97,112,101, +0,109,95,99,104,105,108,100,83,104,97,112,101,84,121,112,101,0,109,95, +99,104,105,108,100,77,97,114,103,105,110,0,42,109,95,99,104,105,108,100, +83,104,97,112,101,80,116,114,0,109,95,110,117,109,67,104,105,108,100,83, +104,97,112,101,115,0,109,95,117,112,65,120,105,115,0,109,95,102,108,97, +103,115,0,109,95,101,100,103,101,86,48,86,49,65,110,103,108,101,0,109, +95,101,100,103,101,86,49,86,50,65,110,103,108,101,0,109,95,101,100,103, +101,86,50,86,48,65,110,103,108,101,0,42,109,95,104,97,115,104,84,97, +98,108,101,80,116,114,0,42,109,95,110,101,120,116,80,116,114,0,42,109, +95,118,97,108,117,101,65,114,114,97,121,80,116,114,0,42,109,95,107,101, +121,65,114,114,97,121,80,116,114,0,109,95,99,111,110,118,101,120,69,112, +115,105,108,111,110,0,109,95,112,108,97,110,97,114,69,112,115,105,108,111, +110,0,109,95,101,113,117,97,108,86,101,114,116,101,120,84,104,114,101,115, +104,111,108,100,0,109,95,101,100,103,101,68,105,115,116,97,110,99,101,84, +104,114,101,115,104,111,108,100,0,109,95,122,101,114,111,65,114,101,97,84, +104,114,101,115,104,111,108,100,0,109,95,110,101,120,116,83,105,122,101,0, +109,95,104,97,115,104,84,97,98,108,101,83,105,122,101,0,109,95,110,117, +109,86,97,108,117,101,115,0,109,95,110,117,109,75,101,121,115,0,109,95, +103,105,109,112,97,99,116,83,117,98,84,121,112,101,0,42,109,95,117,110, +115,99,97,108,101,100,80,111,105,110,116,115,70,108,111,97,116,80,116,114, +0,42,109,95,117,110,115,99,97,108,101,100,80,111,105,110,116,115,68,111, +117,98,108,101,80,116,114,0,109,95,110,117,109,85,110,115,99,97,108,101, +100,80,111,105,110,116,115,0,109,95,112,97,100,100,105,110,103,51,91,52, +93,0,42,109,95,98,114,111,97,100,112,104,97,115,101,72,97,110,100,108, +101,0,42,109,95,99,111,108,108,105,115,105,111,110,83,104,97,112,101,0, +42,109,95,114,111,111,116,67,111,108,108,105,115,105,111,110,83,104,97,112, +101,0,109,95,119,111,114,108,100,84,114,97,110,115,102,111,114,109,0,109, +95,105,110,116,101,114,112,111,108,97,116,105,111,110,87,111,114,108,100,84, +114,97,110,115,102,111,114,109,0,109,95,105,110,116,101,114,112,111,108,97, +116,105,111,110,76,105,110,101,97,114,86,101,108,111,99,105,116,121,0,109, +95,105,110,116,101,114,112,111,108,97,116,105,111,110,65,110,103,117,108,97, +114,86,101,108,111,99,105,116,121,0,109,95,97,110,105,115,111,116,114,111, +112,105,99,70,114,105,99,116,105,111,110,0,109,95,99,111,110,116,97,99, +116,80,114,111,99,101,115,115,105,110,103,84,104,114,101,115,104,111,108,100, +0,109,95,100,101,97,99,116,105,118,97,116,105,111,110,84,105,109,101,0, +109,95,102,114,105,99,116,105,111,110,0,109,95,114,101,115,116,105,116,117, +116,105,111,110,0,109,95,104,105,116,70,114,97,99,116,105,111,110,0,109, +95,99,99,100,83,119,101,112,116,83,112,104,101,114,101,82,97,100,105,117, +115,0,109,95,99,99,100,77,111,116,105,111,110,84,104,114,101,115,104,111, +108,100,0,109,95,104,97,115,65,110,105,115,111,116,114,111,112,105,99,70, +114,105,99,116,105,111,110,0,109,95,99,111,108,108,105,115,105,111,110,70, +108,97,103,115,0,109,95,105,115,108,97,110,100,84,97,103,49,0,109,95, +99,111,109,112,97,110,105,111,110,73,100,0,109,95,97,99,116,105,118,97, +116,105,111,110,83,116,97,116,101,49,0,109,95,105,110,116,101,114,110,97, +108,84,121,112,101,0,109,95,99,104,101,99,107,67,111,108,108,105,100,101, +87,105,116,104,0,109,95,99,111,108,108,105,115,105,111,110,79,98,106,101, +99,116,68,97,116,97,0,109,95,105,110,118,73,110,101,114,116,105,97,84, +101,110,115,111,114,87,111,114,108,100,0,109,95,108,105,110,101,97,114,86, +101,108,111,99,105,116,121,0,109,95,97,110,103,117,108,97,114,86,101,108, +111,99,105,116,121,0,109,95,97,110,103,117,108,97,114,70,97,99,116,111, +114,0,109,95,108,105,110,101,97,114,70,97,99,116,111,114,0,109,95,103, +114,97,118,105,116,121,0,109,95,103,114,97,118,105,116,121,95,97,99,99, +101,108,101,114,97,116,105,111,110,0,109,95,105,110,118,73,110,101,114,116, +105,97,76,111,99,97,108,0,109,95,116,111,116,97,108,70,111,114,99,101, +0,109,95,116,111,116,97,108,84,111,114,113,117,101,0,109,95,105,110,118, +101,114,115,101,77,97,115,115,0,109,95,108,105,110,101,97,114,68,97,109, +112,105,110,103,0,109,95,97,110,103,117,108,97,114,68,97,109,112,105,110, +103,0,109,95,97,100,100,105,116,105,111,110,97,108,68,97,109,112,105,110, +103,70,97,99,116,111,114,0,109,95,97,100,100,105,116,105,111,110,97,108, +76,105,110,101,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111, +108,100,83,113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110, +103,117,108,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111,108, +100,83,113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110,103, +117,108,97,114,68,97,109,112,105,110,103,70,97,99,116,111,114,0,109,95, +108,105,110,101,97,114,83,108,101,101,112,105,110,103,84,104,114,101,115,104, +111,108,100,0,109,95,97,110,103,117,108,97,114,83,108,101,101,112,105,110, +103,84,104,114,101,115,104,111,108,100,0,109,95,97,100,100,105,116,105,111, +110,97,108,68,97,109,112,105,110,103,0,109,95,110,117,109,67,111,110,115, +116,114,97,105,110,116,82,111,119,115,0,110,117,98,0,42,109,95,114,98, +65,0,42,109,95,114,98,66,0,109,95,111,98,106,101,99,116,84,121,112, +101,0,109,95,117,115,101,114,67,111,110,115,116,114,97,105,110,116,84,121, +112,101,0,109,95,117,115,101,114,67,111,110,115,116,114,97,105,110,116,73, +100,0,109,95,110,101,101,100,115,70,101,101,100,98,97,99,107,0,109,95, +97,112,112,108,105,101,100,73,109,112,117,108,115,101,0,109,95,100,98,103, +68,114,97,119,83,105,122,101,0,109,95,100,105,115,97,98,108,101,67,111, +108,108,105,115,105,111,110,115,66,101,116,119,101,101,110,76,105,110,107,101, +100,66,111,100,105,101,115,0,109,95,112,97,100,52,91,52,93,0,109,95, +116,121,112,101,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,109, +95,112,105,118,111,116,73,110,65,0,109,95,112,105,118,111,116,73,110,66, +0,109,95,114,98,65,70,114,97,109,101,0,109,95,114,98,66,70,114,97, +109,101,0,109,95,117,115,101,82,101,102,101,114,101,110,99,101,70,114,97, +109,101,65,0,109,95,97,110,103,117,108,97,114,79,110,108,121,0,109,95, +101,110,97,98,108,101,65,110,103,117,108,97,114,77,111,116,111,114,0,109, +95,109,111,116,111,114,84,97,114,103,101,116,86,101,108,111,99,105,116,121, +0,109,95,109,97,120,77,111,116,111,114,73,109,112,117,108,115,101,0,109, +95,108,111,119,101,114,76,105,109,105,116,0,109,95,117,112,112,101,114,76, +105,109,105,116,0,109,95,108,105,109,105,116,83,111,102,116,110,101,115,115, +0,109,95,98,105,97,115,70,97,99,116,111,114,0,109,95,114,101,108,97, +120,97,116,105,111,110,70,97,99,116,111,114,0,109,95,115,119,105,110,103, +83,112,97,110,49,0,109,95,115,119,105,110,103,83,112,97,110,50,0,109, +95,116,119,105,115,116,83,112,97,110,0,109,95,100,97,109,112,105,110,103, +0,109,95,108,105,110,101,97,114,85,112,112,101,114,76,105,109,105,116,0, +109,95,108,105,110,101,97,114,76,111,119,101,114,76,105,109,105,116,0,109, +95,97,110,103,117,108,97,114,85,112,112,101,114,76,105,109,105,116,0,109, +95,97,110,103,117,108,97,114,76,111,119,101,114,76,105,109,105,116,0,109, +95,117,115,101,76,105,110,101,97,114,82,101,102,101,114,101,110,99,101,70, +114,97,109,101,65,0,109,95,117,115,101,79,102,102,115,101,116,70,111,114, +67,111,110,115,116,114,97,105,110,116,70,114,97,109,101,0,84,89,80,69, +58,0,0,0,99,104,97,114,0,117,99,104,97,114,0,115,104,111,114,116, +0,117,115,104,111,114,116,0,105,110,116,0,108,111,110,103,0,117,108,111, +110,103,0,102,108,111,97,116,0,100,111,117,98,108,101,0,118,111,105,100, +0,80,111,105,110,116,101,114,65,114,114,97,121,0,98,116,80,104,121,115, +105,99,115,83,121,115,116,101,109,0,76,105,115,116,66,97,115,101,0,98, +116,86,101,99,116,111,114,51,70,108,111,97,116,68,97,116,97,0,98,116, +86,101,99,116,111,114,51,68,111,117,98,108,101,68,97,116,97,0,98,116, +77,97,116,114,105,120,51,120,51,70,108,111,97,116,68,97,116,97,0,98, +116,77,97,116,114,105,120,51,120,51,68,111,117,98,108,101,68,97,116,97, +0,98,116,84,114,97,110,115,102,111,114,109,70,108,111,97,116,68,97,116, +97,0,98,116,84,114,97,110,115,102,111,114,109,68,111,117,98,108,101,68, +97,116,97,0,98,116,66,118,104,83,117,98,116,114,101,101,73,110,102,111, +68,97,116,97,0,98,116,79,112,116,105,109,105,122,101,100,66,118,104,78, +111,100,101,70,108,111,97,116,68,97,116,97,0,98,116,79,112,116,105,109, +105,122,101,100,66,118,104,78,111,100,101,68,111,117,98,108,101,68,97,116, +97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,78,111,100,101, +68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,70, +108,111,97,116,68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100, +66,118,104,68,111,117,98,108,101,68,97,116,97,0,98,116,67,111,108,108, +105,115,105,111,110,83,104,97,112,101,68,97,116,97,0,98,116,83,116,97, +116,105,99,80,108,97,110,101,83,104,97,112,101,68,97,116,97,0,98,116, +67,111,110,118,101,120,73,110,116,101,114,110,97,108,83,104,97,112,101,68, +97,116,97,0,98,116,80,111,115,105,116,105,111,110,65,110,100,82,97,100, +105,117,115,0,98,116,77,117,108,116,105,83,112,104,101,114,101,83,104,97, +112,101,68,97,116,97,0,98,116,73,110,116,73,110,100,101,120,68,97,116, +97,0,98,116,83,104,111,114,116,73,110,116,73,110,100,101,120,68,97,116, +97,0,98,116,83,104,111,114,116,73,110,116,73,110,100,101,120,84,114,105, +112,108,101,116,68,97,116,97,0,98,116,77,101,115,104,80,97,114,116,68, +97,116,97,0,98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110, +116,101,114,102,97,99,101,68,97,116,97,0,98,116,84,114,105,97,110,103, +108,101,77,101,115,104,83,104,97,112,101,68,97,116,97,0,98,116,84,114, +105,97,110,103,108,101,73,110,102,111,77,97,112,68,97,116,97,0,98,116, +67,111,109,112,111,117,110,100,83,104,97,112,101,67,104,105,108,100,68,97, +116,97,0,98,116,67,111,109,112,111,117,110,100,83,104,97,112,101,68,97, +116,97,0,98,116,67,121,108,105,110,100,101,114,83,104,97,112,101,68,97, +116,97,0,98,116,67,97,112,115,117,108,101,83,104,97,112,101,68,97,116, +97,0,98,116,84,114,105,97,110,103,108,101,73,110,102,111,68,97,116,97, +0,98,116,71,73,109,112,97,99,116,77,101,115,104,83,104,97,112,101,68, +97,116,97,0,98,116,67,111,110,118,101,120,72,117,108,108,83,104,97,112, +101,68,97,116,97,0,98,116,67,111,108,108,105,115,105,111,110,79,98,106, +101,99,116,68,111,117,98,108,101,68,97,116,97,0,98,116,67,111,108,108, +105,115,105,111,110,79,98,106,101,99,116,70,108,111,97,116,68,97,116,97, +0,98,116,82,105,103,105,100,66,111,100,121,70,108,111,97,116,68,97,116, +97,0,98,116,82,105,103,105,100,66,111,100,121,68,111,117,98,108,101,68, +97,116,97,0,98,116,67,111,110,115,116,114,97,105,110,116,73,110,102,111, +49,0,98,116,84,121,112,101,100,67,111,110,115,116,114,97,105,110,116,68, +97,116,97,0,98,116,82,105,103,105,100,66,111,100,121,68,97,116,97,0, +98,116,80,111,105,110,116,50,80,111,105,110,116,67,111,110,115,116,114,97, +105,110,116,70,108,111,97,116,68,97,116,97,0,98,116,80,111,105,110,116, +50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,68,111,117,98, +108,101,68,97,116,97,0,98,116,72,105,110,103,101,67,111,110,115,116,114, +97,105,110,116,68,111,117,98,108,101,68,97,116,97,0,98,116,72,105,110, +103,101,67,111,110,115,116,114,97,105,110,116,70,108,111,97,116,68,97,116, +97,0,98,116,67,111,110,101,84,119,105,115,116,67,111,110,115,116,114,97, +105,110,116,68,97,116,97,0,98,116,71,101,110,101,114,105,99,54,68,111, +102,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,98,116,83,108, +105,100,101,114,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,0, +84,76,69,78,1,0,1,0,2,0,2,0,4,0,4,0,4,0,4,0, +8,0,0,0,16,0,48,0,16,0,16,0,32,0,48,0,96,0,64,0, +-128,0,20,0,48,0,80,0,16,0,96,0,-112,0,16,0,56,0,56,0, +20,0,72,0,4,0,4,0,8,0,48,0,32,0,80,0,72,0,80,0, +32,0,64,0,64,0,16,0,72,0,80,0,-40,1,8,1,-16,1,-88,3, +8,0,56,0,0,0,88,0,120,0,96,1,-32,0,-40,0,0,1,-48,0, +83,84,82,67,47,0,0,0,10,0,3,0,4,0,0,0,4,0,1,0, +9,0,2,0,11,0,3,0,10,0,3,0,10,0,4,0,10,0,5,0, +12,0,2,0,9,0,6,0,9,0,7,0,13,0,1,0,7,0,8,0, +14,0,1,0,8,0,8,0,15,0,1,0,13,0,9,0,16,0,1,0, +14,0,9,0,17,0,2,0,15,0,10,0,13,0,11,0,18,0,2,0, +16,0,10,0,14,0,11,0,19,0,4,0,4,0,12,0,4,0,13,0, +2,0,14,0,2,0,15,0,20,0,6,0,13,0,16,0,13,0,17,0, +4,0,18,0,4,0,19,0,4,0,20,0,0,0,21,0,21,0,6,0, +14,0,16,0,14,0,17,0,4,0,18,0,4,0,19,0,4,0,20,0, +0,0,21,0,22,0,3,0,2,0,14,0,2,0,15,0,4,0,22,0, +23,0,12,0,13,0,23,0,13,0,24,0,13,0,25,0,4,0,26,0, +4,0,27,0,4,0,28,0,4,0,29,0,20,0,30,0,22,0,31,0, +19,0,32,0,4,0,33,0,4,0,34,0,24,0,12,0,14,0,23,0, +14,0,24,0,14,0,25,0,4,0,26,0,4,0,27,0,4,0,28,0, +4,0,29,0,21,0,30,0,22,0,31,0,4,0,33,0,4,0,34,0, +19,0,32,0,25,0,3,0,0,0,35,0,4,0,36,0,0,0,37,0, +26,0,5,0,25,0,38,0,13,0,39,0,13,0,40,0,7,0,41,0, +0,0,21,0,27,0,5,0,25,0,38,0,13,0,39,0,13,0,42,0, +7,0,43,0,4,0,44,0,28,0,2,0,13,0,45,0,7,0,46,0, +29,0,4,0,27,0,47,0,28,0,48,0,4,0,49,0,0,0,37,0, +30,0,1,0,4,0,50,0,31,0,2,0,2,0,50,0,0,0,51,0, +32,0,2,0,2,0,52,0,0,0,51,0,33,0,7,0,13,0,53,0, +14,0,54,0,30,0,55,0,32,0,56,0,31,0,57,0,4,0,58,0, +4,0,59,0,34,0,4,0,33,0,60,0,13,0,61,0,4,0,62,0, +0,0,37,0,35,0,7,0,25,0,38,0,34,0,63,0,23,0,64,0, +24,0,65,0,36,0,66,0,7,0,43,0,0,0,67,0,37,0,4,0, +17,0,68,0,25,0,69,0,4,0,70,0,7,0,71,0,38,0,4,0, +25,0,38,0,37,0,72,0,4,0,73,0,7,0,43,0,39,0,3,0, +27,0,47,0,4,0,74,0,0,0,37,0,40,0,3,0,27,0,47,0, +4,0,74,0,0,0,37,0,41,0,4,0,4,0,75,0,7,0,76,0, +7,0,77,0,7,0,78,0,36,0,14,0,4,0,79,0,4,0,80,0, +41,0,81,0,4,0,82,0,7,0,83,0,7,0,84,0,7,0,85,0, +7,0,86,0,7,0,87,0,4,0,88,0,4,0,89,0,4,0,90,0, +4,0,91,0,0,0,37,0,42,0,5,0,25,0,38,0,34,0,63,0, +13,0,39,0,7,0,43,0,4,0,92,0,43,0,5,0,27,0,47,0, +13,0,93,0,14,0,94,0,4,0,95,0,0,0,96,0,44,0,24,0, +9,0,97,0,9,0,98,0,25,0,99,0,0,0,35,0,18,0,100,0, +18,0,101,0,14,0,102,0,14,0,103,0,14,0,104,0,8,0,105,0, +8,0,106,0,8,0,107,0,8,0,108,0,8,0,109,0,8,0,110,0, +8,0,111,0,4,0,112,0,4,0,113,0,4,0,114,0,4,0,115,0, +4,0,116,0,4,0,117,0,4,0,118,0,0,0,37,0,45,0,23,0, +9,0,97,0,9,0,98,0,25,0,99,0,0,0,35,0,17,0,100,0, +17,0,101,0,13,0,102,0,13,0,103,0,13,0,104,0,7,0,105,0, +7,0,106,0,7,0,107,0,7,0,108,0,7,0,109,0,7,0,110,0, +7,0,111,0,4,0,112,0,4,0,113,0,4,0,114,0,4,0,115,0, +4,0,116,0,4,0,117,0,4,0,118,0,46,0,21,0,45,0,119,0, +15,0,120,0,13,0,121,0,13,0,122,0,13,0,123,0,13,0,124,0, +13,0,125,0,13,0,126,0,13,0,127,0,13,0,-128,0,13,0,-127,0, +7,0,-126,0,7,0,-125,0,7,0,-124,0,7,0,-123,0,7,0,-122,0, +7,0,-121,0,7,0,-120,0,7,0,-119,0,7,0,-118,0,4,0,-117,0, +47,0,22,0,44,0,119,0,16,0,120,0,14,0,121,0,14,0,122,0, +14,0,123,0,14,0,124,0,14,0,125,0,14,0,126,0,14,0,127,0, +14,0,-128,0,14,0,-127,0,8,0,-126,0,8,0,-125,0,8,0,-124,0, +8,0,-123,0,8,0,-122,0,8,0,-121,0,8,0,-120,0,8,0,-119,0, +8,0,-118,0,4,0,-117,0,0,0,37,0,48,0,2,0,4,0,-116,0, +4,0,-115,0,49,0,11,0,50,0,-114,0,50,0,-113,0,0,0,35,0, +4,0,-112,0,4,0,-111,0,4,0,-110,0,4,0,-109,0,7,0,-108,0, +7,0,-107,0,4,0,-106,0,0,0,-105,0,51,0,3,0,49,0,-104,0, +13,0,-103,0,13,0,-102,0,52,0,3,0,49,0,-104,0,14,0,-103,0, +14,0,-102,0,53,0,13,0,49,0,-104,0,18,0,-101,0,18,0,-100,0, +4,0,-99,0,4,0,-98,0,4,0,-97,0,7,0,-96,0,7,0,-95,0, +7,0,-94,0,7,0,-93,0,7,0,-92,0,7,0,-91,0,7,0,-90,0, +54,0,13,0,49,0,-104,0,17,0,-101,0,17,0,-100,0,4,0,-99,0, +4,0,-98,0,4,0,-97,0,7,0,-96,0,7,0,-95,0,7,0,-94,0, +7,0,-93,0,7,0,-92,0,7,0,-91,0,7,0,-90,0,55,0,11,0, +49,0,-104,0,17,0,-101,0,17,0,-100,0,7,0,-89,0,7,0,-88,0, +7,0,-87,0,7,0,-92,0,7,0,-91,0,7,0,-90,0,7,0,-86,0, +0,0,21,0,56,0,9,0,49,0,-104,0,17,0,-101,0,17,0,-100,0, +13,0,-85,0,13,0,-84,0,13,0,-83,0,13,0,-82,0,4,0,-81,0, +4,0,-80,0,57,0,9,0,49,0,-104,0,17,0,-101,0,17,0,-100,0, +7,0,-85,0,7,0,-84,0,7,0,-83,0,7,0,-82,0,4,0,-81,0, +4,0,-80,0,}; +int sBulletDNAlen64= sizeof(sBulletDNAstr64); + +unsigned char sBulletDNAstr[]= { +83,68,78,65,78,65,77,69,-79,0,0,0,109,95,115,105,122,101,0,109, +95,99,97,112,97,99,105,116,121,0,42,109,95,100,97,116,97,0,109,95, +99,111,108,108,105,115,105,111,110,83,104,97,112,101,115,0,109,95,99,111, +108,108,105,115,105,111,110,79,98,106,101,99,116,115,0,109,95,99,111,110, +115,116,114,97,105,110,116,115,0,42,102,105,114,115,116,0,42,108,97,115, +116,0,109,95,102,108,111,97,116,115,91,52,93,0,109,95,101,108,91,51, +93,0,109,95,98,97,115,105,115,0,109,95,111,114,105,103,105,110,0,109, +95,114,111,111,116,78,111,100,101,73,110,100,101,120,0,109,95,115,117,98, +116,114,101,101,83,105,122,101,0,109,95,113,117,97,110,116,105,122,101,100, +65,97,98,98,77,105,110,91,51,93,0,109,95,113,117,97,110,116,105,122, +101,100,65,97,98,98,77,97,120,91,51,93,0,109,95,97,97,98,98,77, +105,110,79,114,103,0,109,95,97,97,98,98,77,97,120,79,114,103,0,109, +95,101,115,99,97,112,101,73,110,100,101,120,0,109,95,115,117,98,80,97, +114,116,0,109,95,116,114,105,97,110,103,108,101,73,110,100,101,120,0,109, +95,112,97,100,91,52,93,0,109,95,101,115,99,97,112,101,73,110,100,101, +120,79,114,84,114,105,97,110,103,108,101,73,110,100,101,120,0,109,95,98, +118,104,65,97,98,98,77,105,110,0,109,95,98,118,104,65,97,98,98,77, +97,120,0,109,95,98,118,104,81,117,97,110,116,105,122,97,116,105,111,110, +0,109,95,99,117,114,78,111,100,101,73,110,100,101,120,0,109,95,117,115, +101,81,117,97,110,116,105,122,97,116,105,111,110,0,109,95,110,117,109,67, +111,110,116,105,103,117,111,117,115,76,101,97,102,78,111,100,101,115,0,109, +95,110,117,109,81,117,97,110,116,105,122,101,100,67,111,110,116,105,103,117, +111,117,115,78,111,100,101,115,0,42,109,95,99,111,110,116,105,103,117,111, +117,115,78,111,100,101,115,80,116,114,0,42,109,95,113,117,97,110,116,105, +122,101,100,67,111,110,116,105,103,117,111,117,115,78,111,100,101,115,80,116, +114,0,42,109,95,115,117,98,84,114,101,101,73,110,102,111,80,116,114,0, +109,95,116,114,97,118,101,114,115,97,108,77,111,100,101,0,109,95,110,117, +109,83,117,98,116,114,101,101,72,101,97,100,101,114,115,0,42,109,95,110, +97,109,101,0,109,95,115,104,97,112,101,84,121,112,101,0,109,95,112,97, +100,100,105,110,103,91,52,93,0,109,95,99,111,108,108,105,115,105,111,110, +83,104,97,112,101,68,97,116,97,0,109,95,108,111,99,97,108,83,99,97, +108,105,110,103,0,109,95,112,108,97,110,101,78,111,114,109,97,108,0,109, +95,112,108,97,110,101,67,111,110,115,116,97,110,116,0,109,95,105,109,112, +108,105,99,105,116,83,104,97,112,101,68,105,109,101,110,115,105,111,110,115, +0,109,95,99,111,108,108,105,115,105,111,110,77,97,114,103,105,110,0,109, +95,112,97,100,100,105,110,103,0,109,95,112,111,115,0,109,95,114,97,100, +105,117,115,0,109,95,99,111,110,118,101,120,73,110,116,101,114,110,97,108, +83,104,97,112,101,68,97,116,97,0,42,109,95,108,111,99,97,108,80,111, +115,105,116,105,111,110,65,114,114,97,121,80,116,114,0,109,95,108,111,99, +97,108,80,111,115,105,116,105,111,110,65,114,114,97,121,83,105,122,101,0, +109,95,118,97,108,117,101,0,109,95,112,97,100,91,50,93,0,109,95,118, +97,108,117,101,115,91,51,93,0,42,109,95,118,101,114,116,105,99,101,115, +51,102,0,42,109,95,118,101,114,116,105,99,101,115,51,100,0,42,109,95, +105,110,100,105,99,101,115,51,50,0,42,109,95,51,105,110,100,105,99,101, +115,49,54,0,42,109,95,105,110,100,105,99,101,115,49,54,0,109,95,110, +117,109,84,114,105,97,110,103,108,101,115,0,109,95,110,117,109,86,101,114, +116,105,99,101,115,0,42,109,95,109,101,115,104,80,97,114,116,115,80,116, +114,0,109,95,115,99,97,108,105,110,103,0,109,95,110,117,109,77,101,115, +104,80,97,114,116,115,0,109,95,109,101,115,104,73,110,116,101,114,102,97, +99,101,0,42,109,95,113,117,97,110,116,105,122,101,100,70,108,111,97,116, +66,118,104,0,42,109,95,113,117,97,110,116,105,122,101,100,68,111,117,98, +108,101,66,118,104,0,42,109,95,116,114,105,97,110,103,108,101,73,110,102, +111,77,97,112,0,109,95,112,97,100,51,91,52,93,0,109,95,116,114,97, +110,115,102,111,114,109,0,42,109,95,99,104,105,108,100,83,104,97,112,101, +0,109,95,99,104,105,108,100,83,104,97,112,101,84,121,112,101,0,109,95, +99,104,105,108,100,77,97,114,103,105,110,0,42,109,95,99,104,105,108,100, +83,104,97,112,101,80,116,114,0,109,95,110,117,109,67,104,105,108,100,83, +104,97,112,101,115,0,109,95,117,112,65,120,105,115,0,109,95,102,108,97, +103,115,0,109,95,101,100,103,101,86,48,86,49,65,110,103,108,101,0,109, +95,101,100,103,101,86,49,86,50,65,110,103,108,101,0,109,95,101,100,103, +101,86,50,86,48,65,110,103,108,101,0,42,109,95,104,97,115,104,84,97, +98,108,101,80,116,114,0,42,109,95,110,101,120,116,80,116,114,0,42,109, +95,118,97,108,117,101,65,114,114,97,121,80,116,114,0,42,109,95,107,101, +121,65,114,114,97,121,80,116,114,0,109,95,99,111,110,118,101,120,69,112, +115,105,108,111,110,0,109,95,112,108,97,110,97,114,69,112,115,105,108,111, +110,0,109,95,101,113,117,97,108,86,101,114,116,101,120,84,104,114,101,115, +104,111,108,100,0,109,95,101,100,103,101,68,105,115,116,97,110,99,101,84, +104,114,101,115,104,111,108,100,0,109,95,122,101,114,111,65,114,101,97,84, +104,114,101,115,104,111,108,100,0,109,95,110,101,120,116,83,105,122,101,0, +109,95,104,97,115,104,84,97,98,108,101,83,105,122,101,0,109,95,110,117, +109,86,97,108,117,101,115,0,109,95,110,117,109,75,101,121,115,0,109,95, +103,105,109,112,97,99,116,83,117,98,84,121,112,101,0,42,109,95,117,110, +115,99,97,108,101,100,80,111,105,110,116,115,70,108,111,97,116,80,116,114, +0,42,109,95,117,110,115,99,97,108,101,100,80,111,105,110,116,115,68,111, +117,98,108,101,80,116,114,0,109,95,110,117,109,85,110,115,99,97,108,101, +100,80,111,105,110,116,115,0,109,95,112,97,100,100,105,110,103,51,91,52, +93,0,42,109,95,98,114,111,97,100,112,104,97,115,101,72,97,110,100,108, +101,0,42,109,95,99,111,108,108,105,115,105,111,110,83,104,97,112,101,0, +42,109,95,114,111,111,116,67,111,108,108,105,115,105,111,110,83,104,97,112, +101,0,109,95,119,111,114,108,100,84,114,97,110,115,102,111,114,109,0,109, +95,105,110,116,101,114,112,111,108,97,116,105,111,110,87,111,114,108,100,84, +114,97,110,115,102,111,114,109,0,109,95,105,110,116,101,114,112,111,108,97, +116,105,111,110,76,105,110,101,97,114,86,101,108,111,99,105,116,121,0,109, +95,105,110,116,101,114,112,111,108,97,116,105,111,110,65,110,103,117,108,97, +114,86,101,108,111,99,105,116,121,0,109,95,97,110,105,115,111,116,114,111, +112,105,99,70,114,105,99,116,105,111,110,0,109,95,99,111,110,116,97,99, +116,80,114,111,99,101,115,115,105,110,103,84,104,114,101,115,104,111,108,100, +0,109,95,100,101,97,99,116,105,118,97,116,105,111,110,84,105,109,101,0, +109,95,102,114,105,99,116,105,111,110,0,109,95,114,101,115,116,105,116,117, +116,105,111,110,0,109,95,104,105,116,70,114,97,99,116,105,111,110,0,109, +95,99,99,100,83,119,101,112,116,83,112,104,101,114,101,82,97,100,105,117, +115,0,109,95,99,99,100,77,111,116,105,111,110,84,104,114,101,115,104,111, +108,100,0,109,95,104,97,115,65,110,105,115,111,116,114,111,112,105,99,70, +114,105,99,116,105,111,110,0,109,95,99,111,108,108,105,115,105,111,110,70, +108,97,103,115,0,109,95,105,115,108,97,110,100,84,97,103,49,0,109,95, +99,111,109,112,97,110,105,111,110,73,100,0,109,95,97,99,116,105,118,97, +116,105,111,110,83,116,97,116,101,49,0,109,95,105,110,116,101,114,110,97, +108,84,121,112,101,0,109,95,99,104,101,99,107,67,111,108,108,105,100,101, +87,105,116,104,0,109,95,99,111,108,108,105,115,105,111,110,79,98,106,101, +99,116,68,97,116,97,0,109,95,105,110,118,73,110,101,114,116,105,97,84, +101,110,115,111,114,87,111,114,108,100,0,109,95,108,105,110,101,97,114,86, +101,108,111,99,105,116,121,0,109,95,97,110,103,117,108,97,114,86,101,108, +111,99,105,116,121,0,109,95,97,110,103,117,108,97,114,70,97,99,116,111, +114,0,109,95,108,105,110,101,97,114,70,97,99,116,111,114,0,109,95,103, +114,97,118,105,116,121,0,109,95,103,114,97,118,105,116,121,95,97,99,99, +101,108,101,114,97,116,105,111,110,0,109,95,105,110,118,73,110,101,114,116, +105,97,76,111,99,97,108,0,109,95,116,111,116,97,108,70,111,114,99,101, +0,109,95,116,111,116,97,108,84,111,114,113,117,101,0,109,95,105,110,118, +101,114,115,101,77,97,115,115,0,109,95,108,105,110,101,97,114,68,97,109, +112,105,110,103,0,109,95,97,110,103,117,108,97,114,68,97,109,112,105,110, +103,0,109,95,97,100,100,105,116,105,111,110,97,108,68,97,109,112,105,110, +103,70,97,99,116,111,114,0,109,95,97,100,100,105,116,105,111,110,97,108, +76,105,110,101,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111, +108,100,83,113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110, +103,117,108,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111,108, +100,83,113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110,103, +117,108,97,114,68,97,109,112,105,110,103,70,97,99,116,111,114,0,109,95, +108,105,110,101,97,114,83,108,101,101,112,105,110,103,84,104,114,101,115,104, +111,108,100,0,109,95,97,110,103,117,108,97,114,83,108,101,101,112,105,110, +103,84,104,114,101,115,104,111,108,100,0,109,95,97,100,100,105,116,105,111, +110,97,108,68,97,109,112,105,110,103,0,109,95,110,117,109,67,111,110,115, +116,114,97,105,110,116,82,111,119,115,0,110,117,98,0,42,109,95,114,98, +65,0,42,109,95,114,98,66,0,109,95,111,98,106,101,99,116,84,121,112, +101,0,109,95,117,115,101,114,67,111,110,115,116,114,97,105,110,116,84,121, +112,101,0,109,95,117,115,101,114,67,111,110,115,116,114,97,105,110,116,73, +100,0,109,95,110,101,101,100,115,70,101,101,100,98,97,99,107,0,109,95, +97,112,112,108,105,101,100,73,109,112,117,108,115,101,0,109,95,100,98,103, +68,114,97,119,83,105,122,101,0,109,95,100,105,115,97,98,108,101,67,111, +108,108,105,115,105,111,110,115,66,101,116,119,101,101,110,76,105,110,107,101, +100,66,111,100,105,101,115,0,109,95,112,97,100,52,91,52,93,0,109,95, +116,121,112,101,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,109, +95,112,105,118,111,116,73,110,65,0,109,95,112,105,118,111,116,73,110,66, +0,109,95,114,98,65,70,114,97,109,101,0,109,95,114,98,66,70,114,97, +109,101,0,109,95,117,115,101,82,101,102,101,114,101,110,99,101,70,114,97, +109,101,65,0,109,95,97,110,103,117,108,97,114,79,110,108,121,0,109,95, +101,110,97,98,108,101,65,110,103,117,108,97,114,77,111,116,111,114,0,109, +95,109,111,116,111,114,84,97,114,103,101,116,86,101,108,111,99,105,116,121, +0,109,95,109,97,120,77,111,116,111,114,73,109,112,117,108,115,101,0,109, +95,108,111,119,101,114,76,105,109,105,116,0,109,95,117,112,112,101,114,76, +105,109,105,116,0,109,95,108,105,109,105,116,83,111,102,116,110,101,115,115, +0,109,95,98,105,97,115,70,97,99,116,111,114,0,109,95,114,101,108,97, +120,97,116,105,111,110,70,97,99,116,111,114,0,109,95,115,119,105,110,103, +83,112,97,110,49,0,109,95,115,119,105,110,103,83,112,97,110,50,0,109, +95,116,119,105,115,116,83,112,97,110,0,109,95,100,97,109,112,105,110,103, +0,109,95,108,105,110,101,97,114,85,112,112,101,114,76,105,109,105,116,0, +109,95,108,105,110,101,97,114,76,111,119,101,114,76,105,109,105,116,0,109, +95,97,110,103,117,108,97,114,85,112,112,101,114,76,105,109,105,116,0,109, +95,97,110,103,117,108,97,114,76,111,119,101,114,76,105,109,105,116,0,109, +95,117,115,101,76,105,110,101,97,114,82,101,102,101,114,101,110,99,101,70, +114,97,109,101,65,0,109,95,117,115,101,79,102,102,115,101,116,70,111,114, +67,111,110,115,116,114,97,105,110,116,70,114,97,109,101,0,84,89,80,69, +58,0,0,0,99,104,97,114,0,117,99,104,97,114,0,115,104,111,114,116, +0,117,115,104,111,114,116,0,105,110,116,0,108,111,110,103,0,117,108,111, +110,103,0,102,108,111,97,116,0,100,111,117,98,108,101,0,118,111,105,100, +0,80,111,105,110,116,101,114,65,114,114,97,121,0,98,116,80,104,121,115, +105,99,115,83,121,115,116,101,109,0,76,105,115,116,66,97,115,101,0,98, +116,86,101,99,116,111,114,51,70,108,111,97,116,68,97,116,97,0,98,116, +86,101,99,116,111,114,51,68,111,117,98,108,101,68,97,116,97,0,98,116, +77,97,116,114,105,120,51,120,51,70,108,111,97,116,68,97,116,97,0,98, +116,77,97,116,114,105,120,51,120,51,68,111,117,98,108,101,68,97,116,97, +0,98,116,84,114,97,110,115,102,111,114,109,70,108,111,97,116,68,97,116, +97,0,98,116,84,114,97,110,115,102,111,114,109,68,111,117,98,108,101,68, +97,116,97,0,98,116,66,118,104,83,117,98,116,114,101,101,73,110,102,111, +68,97,116,97,0,98,116,79,112,116,105,109,105,122,101,100,66,118,104,78, +111,100,101,70,108,111,97,116,68,97,116,97,0,98,116,79,112,116,105,109, +105,122,101,100,66,118,104,78,111,100,101,68,111,117,98,108,101,68,97,116, +97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,78,111,100,101, +68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,70, +108,111,97,116,68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100, +66,118,104,68,111,117,98,108,101,68,97,116,97,0,98,116,67,111,108,108, +105,115,105,111,110,83,104,97,112,101,68,97,116,97,0,98,116,83,116,97, +116,105,99,80,108,97,110,101,83,104,97,112,101,68,97,116,97,0,98,116, +67,111,110,118,101,120,73,110,116,101,114,110,97,108,83,104,97,112,101,68, +97,116,97,0,98,116,80,111,115,105,116,105,111,110,65,110,100,82,97,100, +105,117,115,0,98,116,77,117,108,116,105,83,112,104,101,114,101,83,104,97, +112,101,68,97,116,97,0,98,116,73,110,116,73,110,100,101,120,68,97,116, +97,0,98,116,83,104,111,114,116,73,110,116,73,110,100,101,120,68,97,116, +97,0,98,116,83,104,111,114,116,73,110,116,73,110,100,101,120,84,114,105, +112,108,101,116,68,97,116,97,0,98,116,77,101,115,104,80,97,114,116,68, +97,116,97,0,98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110, +116,101,114,102,97,99,101,68,97,116,97,0,98,116,84,114,105,97,110,103, +108,101,77,101,115,104,83,104,97,112,101,68,97,116,97,0,98,116,84,114, +105,97,110,103,108,101,73,110,102,111,77,97,112,68,97,116,97,0,98,116, +67,111,109,112,111,117,110,100,83,104,97,112,101,67,104,105,108,100,68,97, +116,97,0,98,116,67,111,109,112,111,117,110,100,83,104,97,112,101,68,97, +116,97,0,98,116,67,121,108,105,110,100,101,114,83,104,97,112,101,68,97, +116,97,0,98,116,67,97,112,115,117,108,101,83,104,97,112,101,68,97,116, +97,0,98,116,84,114,105,97,110,103,108,101,73,110,102,111,68,97,116,97, +0,98,116,71,73,109,112,97,99,116,77,101,115,104,83,104,97,112,101,68, +97,116,97,0,98,116,67,111,110,118,101,120,72,117,108,108,83,104,97,112, +101,68,97,116,97,0,98,116,67,111,108,108,105,115,105,111,110,79,98,106, +101,99,116,68,111,117,98,108,101,68,97,116,97,0,98,116,67,111,108,108, +105,115,105,111,110,79,98,106,101,99,116,70,108,111,97,116,68,97,116,97, +0,98,116,82,105,103,105,100,66,111,100,121,70,108,111,97,116,68,97,116, +97,0,98,116,82,105,103,105,100,66,111,100,121,68,111,117,98,108,101,68, +97,116,97,0,98,116,67,111,110,115,116,114,97,105,110,116,73,110,102,111, +49,0,98,116,84,121,112,101,100,67,111,110,115,116,114,97,105,110,116,68, +97,116,97,0,98,116,82,105,103,105,100,66,111,100,121,68,97,116,97,0, +98,116,80,111,105,110,116,50,80,111,105,110,116,67,111,110,115,116,114,97, +105,110,116,70,108,111,97,116,68,97,116,97,0,98,116,80,111,105,110,116, +50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,68,111,117,98, +108,101,68,97,116,97,0,98,116,72,105,110,103,101,67,111,110,115,116,114, +97,105,110,116,68,111,117,98,108,101,68,97,116,97,0,98,116,72,105,110, +103,101,67,111,110,115,116,114,97,105,110,116,70,108,111,97,116,68,97,116, +97,0,98,116,67,111,110,101,84,119,105,115,116,67,111,110,115,116,114,97, +105,110,116,68,97,116,97,0,98,116,71,101,110,101,114,105,99,54,68,111, +102,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,98,116,83,108, +105,100,101,114,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,0, +84,76,69,78,1,0,1,0,2,0,2,0,4,0,4,0,4,0,4,0, +8,0,0,0,12,0,36,0,8,0,16,0,32,0,48,0,96,0,64,0, +-128,0,20,0,48,0,80,0,16,0,84,0,-124,0,12,0,52,0,52,0, +20,0,64,0,4,0,4,0,8,0,28,0,28,0,60,0,56,0,76,0, +24,0,60,0,60,0,16,0,64,0,68,0,-56,1,-8,0,-32,1,-104,3, +8,0,44,0,0,0,76,0,108,0,84,1,-44,0,-52,0,-12,0,-60,0, +83,84,82,67,47,0,0,0,10,0,3,0,4,0,0,0,4,0,1,0, +9,0,2,0,11,0,3,0,10,0,3,0,10,0,4,0,10,0,5,0, +12,0,2,0,9,0,6,0,9,0,7,0,13,0,1,0,7,0,8,0, +14,0,1,0,8,0,8,0,15,0,1,0,13,0,9,0,16,0,1,0, +14,0,9,0,17,0,2,0,15,0,10,0,13,0,11,0,18,0,2,0, +16,0,10,0,14,0,11,0,19,0,4,0,4,0,12,0,4,0,13,0, +2,0,14,0,2,0,15,0,20,0,6,0,13,0,16,0,13,0,17,0, +4,0,18,0,4,0,19,0,4,0,20,0,0,0,21,0,21,0,6,0, +14,0,16,0,14,0,17,0,4,0,18,0,4,0,19,0,4,0,20,0, +0,0,21,0,22,0,3,0,2,0,14,0,2,0,15,0,4,0,22,0, +23,0,12,0,13,0,23,0,13,0,24,0,13,0,25,0,4,0,26,0, +4,0,27,0,4,0,28,0,4,0,29,0,20,0,30,0,22,0,31,0, +19,0,32,0,4,0,33,0,4,0,34,0,24,0,12,0,14,0,23,0, +14,0,24,0,14,0,25,0,4,0,26,0,4,0,27,0,4,0,28,0, +4,0,29,0,21,0,30,0,22,0,31,0,4,0,33,0,4,0,34,0, +19,0,32,0,25,0,3,0,0,0,35,0,4,0,36,0,0,0,37,0, +26,0,5,0,25,0,38,0,13,0,39,0,13,0,40,0,7,0,41,0, +0,0,21,0,27,0,5,0,25,0,38,0,13,0,39,0,13,0,42,0, +7,0,43,0,4,0,44,0,28,0,2,0,13,0,45,0,7,0,46,0, +29,0,4,0,27,0,47,0,28,0,48,0,4,0,49,0,0,0,37,0, +30,0,1,0,4,0,50,0,31,0,2,0,2,0,50,0,0,0,51,0, +32,0,2,0,2,0,52,0,0,0,51,0,33,0,7,0,13,0,53,0, +14,0,54,0,30,0,55,0,32,0,56,0,31,0,57,0,4,0,58,0, +4,0,59,0,34,0,4,0,33,0,60,0,13,0,61,0,4,0,62,0, +0,0,37,0,35,0,7,0,25,0,38,0,34,0,63,0,23,0,64,0, +24,0,65,0,36,0,66,0,7,0,43,0,0,0,67,0,37,0,4,0, +17,0,68,0,25,0,69,0,4,0,70,0,7,0,71,0,38,0,4,0, +25,0,38,0,37,0,72,0,4,0,73,0,7,0,43,0,39,0,3,0, +27,0,47,0,4,0,74,0,0,0,37,0,40,0,3,0,27,0,47,0, +4,0,74,0,0,0,37,0,41,0,4,0,4,0,75,0,7,0,76,0, +7,0,77,0,7,0,78,0,36,0,14,0,4,0,79,0,4,0,80,0, +41,0,81,0,4,0,82,0,7,0,83,0,7,0,84,0,7,0,85,0, +7,0,86,0,7,0,87,0,4,0,88,0,4,0,89,0,4,0,90,0, +4,0,91,0,0,0,37,0,42,0,5,0,25,0,38,0,34,0,63,0, +13,0,39,0,7,0,43,0,4,0,92,0,43,0,5,0,27,0,47,0, +13,0,93,0,14,0,94,0,4,0,95,0,0,0,96,0,44,0,24,0, +9,0,97,0,9,0,98,0,25,0,99,0,0,0,35,0,18,0,100,0, +18,0,101,0,14,0,102,0,14,0,103,0,14,0,104,0,8,0,105,0, +8,0,106,0,8,0,107,0,8,0,108,0,8,0,109,0,8,0,110,0, +8,0,111,0,4,0,112,0,4,0,113,0,4,0,114,0,4,0,115,0, +4,0,116,0,4,0,117,0,4,0,118,0,0,0,37,0,45,0,23,0, +9,0,97,0,9,0,98,0,25,0,99,0,0,0,35,0,17,0,100,0, +17,0,101,0,13,0,102,0,13,0,103,0,13,0,104,0,7,0,105,0, +7,0,106,0,7,0,107,0,7,0,108,0,7,0,109,0,7,0,110,0, +7,0,111,0,4,0,112,0,4,0,113,0,4,0,114,0,4,0,115,0, +4,0,116,0,4,0,117,0,4,0,118,0,46,0,21,0,45,0,119,0, +15,0,120,0,13,0,121,0,13,0,122,0,13,0,123,0,13,0,124,0, +13,0,125,0,13,0,126,0,13,0,127,0,13,0,-128,0,13,0,-127,0, +7,0,-126,0,7,0,-125,0,7,0,-124,0,7,0,-123,0,7,0,-122,0, +7,0,-121,0,7,0,-120,0,7,0,-119,0,7,0,-118,0,4,0,-117,0, +47,0,22,0,44,0,119,0,16,0,120,0,14,0,121,0,14,0,122,0, +14,0,123,0,14,0,124,0,14,0,125,0,14,0,126,0,14,0,127,0, +14,0,-128,0,14,0,-127,0,8,0,-126,0,8,0,-125,0,8,0,-124,0, +8,0,-123,0,8,0,-122,0,8,0,-121,0,8,0,-120,0,8,0,-119,0, +8,0,-118,0,4,0,-117,0,0,0,37,0,48,0,2,0,4,0,-116,0, +4,0,-115,0,49,0,11,0,50,0,-114,0,50,0,-113,0,0,0,35,0, +4,0,-112,0,4,0,-111,0,4,0,-110,0,4,0,-109,0,7,0,-108,0, +7,0,-107,0,4,0,-106,0,0,0,-105,0,51,0,3,0,49,0,-104,0, +13,0,-103,0,13,0,-102,0,52,0,3,0,49,0,-104,0,14,0,-103,0, +14,0,-102,0,53,0,13,0,49,0,-104,0,18,0,-101,0,18,0,-100,0, +4,0,-99,0,4,0,-98,0,4,0,-97,0,7,0,-96,0,7,0,-95,0, +7,0,-94,0,7,0,-93,0,7,0,-92,0,7,0,-91,0,7,0,-90,0, +54,0,13,0,49,0,-104,0,17,0,-101,0,17,0,-100,0,4,0,-99,0, +4,0,-98,0,4,0,-97,0,7,0,-96,0,7,0,-95,0,7,0,-94,0, +7,0,-93,0,7,0,-92,0,7,0,-91,0,7,0,-90,0,55,0,11,0, +49,0,-104,0,17,0,-101,0,17,0,-100,0,7,0,-89,0,7,0,-88,0, +7,0,-87,0,7,0,-92,0,7,0,-91,0,7,0,-90,0,7,0,-86,0, +0,0,21,0,56,0,9,0,49,0,-104,0,17,0,-101,0,17,0,-100,0, +13,0,-85,0,13,0,-84,0,13,0,-83,0,13,0,-82,0,4,0,-81,0, +4,0,-80,0,57,0,9,0,49,0,-104,0,17,0,-101,0,17,0,-100,0, +7,0,-85,0,7,0,-84,0,7,0,-83,0,7,0,-82,0,4,0,-81,0, +4,0,-80,0,}; +int sBulletDNAlen= sizeof(sBulletDNAstr); diff --git a/extern/bullet2/LinearMath/btSerializer.h b/extern/bullet2/LinearMath/btSerializer.h new file mode 100644 index 00000000000..57f4c1e9e47 --- /dev/null +++ b/extern/bullet2/LinearMath/btSerializer.h @@ -0,0 +1,604 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BT_SERIALIZER_H +#define BT_SERIALIZER_H + +#include "btScalar.h" // has definitions like SIMD_FORCE_INLINE +#include "btStackAlloc.h" +#include "btHashMap.h" + +#if !defined( __CELLOS_LV2__) && !defined(__MWERKS__) +#include +#endif +#include + + + +///only the 32bit versions for now +extern unsigned char sBulletDNAstr[]; +extern int sBulletDNAlen; +extern unsigned char sBulletDNAstr64[]; +extern int sBulletDNAlen64; + +SIMD_FORCE_INLINE int btStrLen(const char* str) +{ + if (!str) + return(0); + int len = 0; + + while (*str != 0) + { + str++; + len++; + } + + return len; +} + + +class btChunk +{ +public: + int m_chunkCode; + int m_length; + void *m_oldPtr; + int m_dna_nr; + int m_number; +}; + +enum btSerializationFlags +{ + BT_SERIALIZE_NO_BVH = 1, + BT_SERIALIZE_NO_TRIANGLEINFOMAP = 2, + BT_SERIALIZE_NO_DUPLICATE_ASSERT = 4 +}; + +class btSerializer +{ + +public: + + virtual ~btSerializer() {} + + virtual const unsigned char* getBufferPointer() const = 0; + + virtual int getCurrentBufferSize() const = 0; + + virtual btChunk* allocate(size_t size, int numElements) = 0; + + virtual void finalizeChunk(btChunk* chunk, const char* structType, int chunkCode,void* oldPtr)= 0; + + virtual void* findPointer(void* oldPtr) = 0; + + virtual void* getUniquePointer(void*oldPtr) = 0; + + virtual void startSerialization() = 0; + + virtual void finishSerialization() = 0; + + virtual const char* findNameForPointer(const void* ptr) const = 0; + + virtual void registerNameForPointer(const void* ptr, const char* name) = 0; + + virtual void serializeName(const char* ptr) = 0; + + virtual int getSerializationFlags() const = 0; + + virtual void setSerializationFlags(int flags) = 0; + + +}; + + + +#define BT_HEADER_LENGTH 12 +#if defined(__sgi) || defined (__sparc) || defined (__sparc__) || defined (__PPC__) || defined (__ppc__) || defined (__BIG_ENDIAN__) +# define MAKE_ID(a,b,c,d) ( (int)(a)<<24 | (int)(b)<<16 | (c)<<8 | (d) ) +#else +# define MAKE_ID(a,b,c,d) ( (int)(d)<<24 | (int)(c)<<16 | (b)<<8 | (a) ) +#endif + +#define BT_COLLISIONOBJECT_CODE MAKE_ID('C','O','B','J') +#define BT_RIGIDBODY_CODE MAKE_ID('R','B','D','Y') +#define BT_CONSTRAINT_CODE MAKE_ID('C','O','N','S') +#define BT_BOXSHAPE_CODE MAKE_ID('B','O','X','S') +#define BT_QUANTIZED_BVH_CODE MAKE_ID('Q','B','V','H') +#define BT_TRIANLGE_INFO_MAP MAKE_ID('T','M','A','P') +#define BT_SHAPE_CODE MAKE_ID('S','H','A','P') +#define BT_ARRAY_CODE MAKE_ID('A','R','A','Y') + + +struct btPointerUid +{ + union + { + void* m_ptr; + int m_uniqueIds[2]; + }; +}; + + +class btDefaultSerializer : public btSerializer +{ + + + btAlignedObjectArray mTypes; + btAlignedObjectArray mStructs; + btAlignedObjectArray mTlens; + btHashMap mStructReverse; + btHashMap mTypeLookup; + + + btHashMap m_chunkP; + + btHashMap m_nameMap; + + btHashMap m_uniquePointers; + int m_uniqueIdGenerator; + + int m_totalSize; + unsigned char* m_buffer; + int m_currentSize; + void* m_dna; + int m_dnaLength; + + int m_serializationFlags; + + + btAlignedObjectArray m_chunkPtrs; + +protected: + + virtual void* findPointer(void* oldPtr) + { + void** ptr = m_chunkP.find(oldPtr); + if (ptr && *ptr) + return *ptr; + return 0; + } + + + + + + void writeDNA() + { + unsigned char* dnaTarget = m_buffer+m_currentSize; + memcpy(dnaTarget,m_dna,m_dnaLength); + m_currentSize += m_dnaLength; + } + + int getReverseType(const char *type) const + { + + btHashString key(type); + const int* valuePtr = mTypeLookup.find(key); + if (valuePtr) + return *valuePtr; + + return -1; + } + + void initDNA(const char* bdnaOrg,int dnalen) + { + ///was already initialized + if (m_dna) + return; + + int littleEndian= 1; + littleEndian= ((char*)&littleEndian)[0]; + + + m_dna = btAlignedAlloc(dnalen,16); + memcpy(m_dna,bdnaOrg,dnalen); + m_dnaLength = dnalen; + + int *intPtr=0; + short *shtPtr=0; + char *cp = 0;int dataLen =0;long nr=0; + intPtr = (int*)m_dna; + + /* + SDNA (4 bytes) (magic number) + NAME (4 bytes) + (4 bytes) amount of names (int) + + + */ + + if (strncmp((const char*)m_dna, "SDNA", 4)==0) + { + // skip ++ NAME + intPtr++; intPtr++; + } + + // Parse names + if (!littleEndian) + *intPtr = btSwapEndian(*intPtr); + + dataLen = *intPtr; + + intPtr++; + + cp = (char*)intPtr; + int i; + for ( i=0; i amount of types (int) + + + */ + + intPtr = (int*)cp; + assert(strncmp(cp, "TYPE", 4)==0); intPtr++; + + if (!littleEndian) + *intPtr = btSwapEndian(*intPtr); + + dataLen = *intPtr; + intPtr++; + + + cp = (char*)intPtr; + for (i=0; i (short) the lengths of types + + */ + + // Parse type lens + intPtr = (int*)cp; + assert(strncmp(cp, "TLEN", 4)==0); intPtr++; + + dataLen = (int)mTypes.size(); + + shtPtr = (short*)intPtr; + for (i=0; i amount of structs (int) + + + + + + + */ + + intPtr = (int*)shtPtr; + cp = (char*)intPtr; + assert(strncmp(cp, "STRC", 4)==0); intPtr++; + + if (!littleEndian) + *intPtr = btSwapEndian(*intPtr); + dataLen = *intPtr ; + intPtr++; + + + shtPtr = (short*)intPtr; + for (i=0; im_ptr; + } + m_uniqueIdGenerator++; + + btPointerUid uid; + uid.m_uniqueIds[0] = m_uniqueIdGenerator; + uid.m_uniqueIds[1] = m_uniqueIdGenerator; + m_uniquePointers.insert(oldPtr,uid); + return uid.m_ptr; + + } + + virtual const unsigned char* getBufferPointer() const + { + return m_buffer; + } + + virtual int getCurrentBufferSize() const + { + return m_currentSize; + } + + virtual void finalizeChunk(btChunk* chunk, const char* structType, int chunkCode,void* oldPtr) + { + if (!(m_serializationFlags&BT_SERIALIZE_NO_DUPLICATE_ASSERT)) + { + btAssert(!findPointer(oldPtr)); + } + + chunk->m_dna_nr = getReverseType(structType); + + chunk->m_chunkCode = chunkCode; + + void* uniquePtr = getUniquePointer(oldPtr); + + m_chunkP.insert(oldPtr,uniquePtr);//chunk->m_oldPtr); + chunk->m_oldPtr = uniquePtr;//oldPtr; + + } + + + + + + virtual btChunk* allocate(size_t size, int numElements) + { + + unsigned char* ptr = m_buffer+m_currentSize; + m_currentSize += int(size)*numElements+sizeof(btChunk); + btAssert(m_currentSizem_chunkCode = 0; + chunk->m_oldPtr = data; + chunk->m_length = int(size)*numElements; + chunk->m_number = numElements; + + m_chunkPtrs.push_back(chunk); + + + return chunk; + } + + virtual const char* findNameForPointer(const void* ptr) const + { + const char*const * namePtr = m_nameMap.find(ptr); + if (namePtr && *namePtr) + return *namePtr; + return 0; + + } + + virtual void registerNameForPointer(const void* ptr, const char* name) + { + m_nameMap.insert(ptr,name); + } + + virtual void serializeName(const char* name) + { + if (name) + { + //don't serialize name twice + if (findPointer((void*)name)) + return; + + int len = btStrLen(name); + if (len) + { + + int newLen = len+1; + int padding = ((newLen+3)&~3)-newLen; + newLen += padding; + + //serialize name string now + btChunk* chunk = allocate(sizeof(char),newLen); + char* destinationName = (char*)chunk->m_oldPtr; + for (int i=0;i(totalsize - usedsize); + } + + unsigned char* allocate(unsigned int size) + { + const unsigned int nus(usedsize+size); + if(nusprevious = current; + pb->address = data+usedsize; + current = pb; + return(pb); + } + SIMD_FORCE_INLINE void endBlock(btBlock* block) + { + btAssert(block==current); + //Raise(L"Unmatched blocks"); + if(block==current) + { + current = block->previous; + usedsize = (unsigned int)((block->address-data)-sizeof(btBlock)); + } + } + +private: + void ctor() + { + data = 0; + totalsize = 0; + usedsize = 0; + current = 0; + ischild = false; + } + unsigned char* data; + unsigned int totalsize; + unsigned int usedsize; + btBlock* current; + bool ischild; +}; + +#endif //BT_STACK_ALLOC diff --git a/extern/bullet2/LinearMath/btTransform.h b/extern/bullet2/LinearMath/btTransform.h new file mode 100644 index 00000000000..187b09116cc --- /dev/null +++ b/extern/bullet2/LinearMath/btTransform.h @@ -0,0 +1,307 @@ +/* +Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#ifndef btTransform_H +#define btTransform_H + + +#include "btMatrix3x3.h" + +#ifdef BT_USE_DOUBLE_PRECISION +#define btTransformData btTransformDoubleData +#else +#define btTransformData btTransformFloatData +#endif + + + + +/**@brief The btTransform class supports rigid transforms with only translation and rotation and no scaling/shear. + *It can be used in combination with btVector3, btQuaternion and btMatrix3x3 linear algebra classes. */ +class btTransform { + + ///Storage for the rotation + btMatrix3x3 m_basis; + ///Storage for the translation + btVector3 m_origin; + +public: + + /**@brief No initialization constructor */ + btTransform() {} + /**@brief Constructor from btQuaternion (optional btVector3 ) + * @param q Rotation from quaternion + * @param c Translation from Vector (default 0,0,0) */ + explicit SIMD_FORCE_INLINE btTransform(const btQuaternion& q, + const btVector3& c = btVector3(btScalar(0), btScalar(0), btScalar(0))) + : m_basis(q), + m_origin(c) + {} + + /**@brief Constructor from btMatrix3x3 (optional btVector3) + * @param b Rotation from Matrix + * @param c Translation from Vector default (0,0,0)*/ + explicit SIMD_FORCE_INLINE btTransform(const btMatrix3x3& b, + const btVector3& c = btVector3(btScalar(0), btScalar(0), btScalar(0))) + : m_basis(b), + m_origin(c) + {} + /**@brief Copy constructor */ + SIMD_FORCE_INLINE btTransform (const btTransform& other) + : m_basis(other.m_basis), + m_origin(other.m_origin) + { + } + /**@brief Assignment Operator */ + SIMD_FORCE_INLINE btTransform& operator=(const btTransform& other) + { + m_basis = other.m_basis; + m_origin = other.m_origin; + return *this; + } + + + /**@brief Set the current transform as the value of the product of two transforms + * @param t1 Transform 1 + * @param t2 Transform 2 + * This = Transform1 * Transform2 */ + SIMD_FORCE_INLINE void mult(const btTransform& t1, const btTransform& t2) { + m_basis = t1.m_basis * t2.m_basis; + m_origin = t1(t2.m_origin); + } + +/* void multInverseLeft(const btTransform& t1, const btTransform& t2) { + btVector3 v = t2.m_origin - t1.m_origin; + m_basis = btMultTransposeLeft(t1.m_basis, t2.m_basis); + m_origin = v * t1.m_basis; + } + */ + +/**@brief Return the transform of the vector */ + SIMD_FORCE_INLINE btVector3 operator()(const btVector3& x) const + { + return btVector3(m_basis[0].dot(x) + m_origin.x(), + m_basis[1].dot(x) + m_origin.y(), + m_basis[2].dot(x) + m_origin.z()); + } + + /**@brief Return the transform of the vector */ + SIMD_FORCE_INLINE btVector3 operator*(const btVector3& x) const + { + return (*this)(x); + } + + /**@brief Return the transform of the btQuaternion */ + SIMD_FORCE_INLINE btQuaternion operator*(const btQuaternion& q) const + { + return getRotation() * q; + } + + /**@brief Return the basis matrix for the rotation */ + SIMD_FORCE_INLINE btMatrix3x3& getBasis() { return m_basis; } + /**@brief Return the basis matrix for the rotation */ + SIMD_FORCE_INLINE const btMatrix3x3& getBasis() const { return m_basis; } + + /**@brief Return the origin vector translation */ + SIMD_FORCE_INLINE btVector3& getOrigin() { return m_origin; } + /**@brief Return the origin vector translation */ + SIMD_FORCE_INLINE const btVector3& getOrigin() const { return m_origin; } + + /**@brief Return a quaternion representing the rotation */ + btQuaternion getRotation() const { + btQuaternion q; + m_basis.getRotation(q); + return q; + } + + + /**@brief Set from an array + * @param m A pointer to a 15 element array (12 rotation(row major padded on the right by 1), and 3 translation */ + void setFromOpenGLMatrix(const btScalar *m) + { + m_basis.setFromOpenGLSubMatrix(m); + m_origin.setValue(m[12],m[13],m[14]); + } + + /**@brief Fill an array representation + * @param m A pointer to a 15 element array (12 rotation(row major padded on the right by 1), and 3 translation */ + void getOpenGLMatrix(btScalar *m) const + { + m_basis.getOpenGLSubMatrix(m); + m[12] = m_origin.x(); + m[13] = m_origin.y(); + m[14] = m_origin.z(); + m[15] = btScalar(1.0); + } + + /**@brief Set the translational element + * @param origin The vector to set the translation to */ + SIMD_FORCE_INLINE void setOrigin(const btVector3& origin) + { + m_origin = origin; + } + + SIMD_FORCE_INLINE btVector3 invXform(const btVector3& inVec) const; + + + /**@brief Set the rotational element by btMatrix3x3 */ + SIMD_FORCE_INLINE void setBasis(const btMatrix3x3& basis) + { + m_basis = basis; + } + + /**@brief Set the rotational element by btQuaternion */ + SIMD_FORCE_INLINE void setRotation(const btQuaternion& q) + { + m_basis.setRotation(q); + } + + + /**@brief Set this transformation to the identity */ + void setIdentity() + { + m_basis.setIdentity(); + m_origin.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0)); + } + + /**@brief Multiply this Transform by another(this = this * another) + * @param t The other transform */ + btTransform& operator*=(const btTransform& t) + { + m_origin += m_basis * t.m_origin; + m_basis *= t.m_basis; + return *this; + } + + /**@brief Return the inverse of this transform */ + btTransform inverse() const + { + btMatrix3x3 inv = m_basis.transpose(); + return btTransform(inv, inv * -m_origin); + } + + /**@brief Return the inverse of this transform times the other transform + * @param t The other transform + * return this.inverse() * the other */ + btTransform inverseTimes(const btTransform& t) const; + + /**@brief Return the product of this transform and the other */ + btTransform operator*(const btTransform& t) const; + + /**@brief Return an identity transform */ + static const btTransform& getIdentity() + { + static const btTransform identityTransform(btMatrix3x3::getIdentity()); + return identityTransform; + } + + void serialize(struct btTransformData& dataOut) const; + + void serializeFloat(struct btTransformFloatData& dataOut) const; + + void deSerialize(const struct btTransformData& dataIn); + + void deSerializeDouble(const struct btTransformDoubleData& dataIn); + + void deSerializeFloat(const struct btTransformFloatData& dataIn); + +}; + + +SIMD_FORCE_INLINE btVector3 +btTransform::invXform(const btVector3& inVec) const +{ + btVector3 v = inVec - m_origin; + return (m_basis.transpose() * v); +} + +SIMD_FORCE_INLINE btTransform +btTransform::inverseTimes(const btTransform& t) const +{ + btVector3 v = t.getOrigin() - m_origin; + return btTransform(m_basis.transposeTimes(t.m_basis), + v * m_basis); +} + +SIMD_FORCE_INLINE btTransform +btTransform::operator*(const btTransform& t) const +{ + return btTransform(m_basis * t.m_basis, + (*this)(t.m_origin)); +} + +/**@brief Test if two transforms have all elements equal */ +SIMD_FORCE_INLINE bool operator==(const btTransform& t1, const btTransform& t2) +{ + return ( t1.getBasis() == t2.getBasis() && + t1.getOrigin() == t2.getOrigin() ); +} + + +///for serialization +struct btTransformFloatData +{ + btMatrix3x3FloatData m_basis; + btVector3FloatData m_origin; +}; + +struct btTransformDoubleData +{ + btMatrix3x3DoubleData m_basis; + btVector3DoubleData m_origin; +}; + + + +SIMD_FORCE_INLINE void btTransform::serialize(btTransformData& dataOut) const +{ + m_basis.serialize(dataOut.m_basis); + m_origin.serialize(dataOut.m_origin); +} + +SIMD_FORCE_INLINE void btTransform::serializeFloat(btTransformFloatData& dataOut) const +{ + m_basis.serializeFloat(dataOut.m_basis); + m_origin.serializeFloat(dataOut.m_origin); +} + + +SIMD_FORCE_INLINE void btTransform::deSerialize(const btTransformData& dataIn) +{ + m_basis.deSerialize(dataIn.m_basis); + m_origin.deSerialize(dataIn.m_origin); +} + +SIMD_FORCE_INLINE void btTransform::deSerializeFloat(const btTransformFloatData& dataIn) +{ + m_basis.deSerializeFloat(dataIn.m_basis); + m_origin.deSerializeFloat(dataIn.m_origin); +} + +SIMD_FORCE_INLINE void btTransform::deSerializeDouble(const btTransformDoubleData& dataIn) +{ + m_basis.deSerializeDouble(dataIn.m_basis); + m_origin.deSerializeDouble(dataIn.m_origin); +} + + +#endif + + + + + + diff --git a/extern/bullet2/LinearMath/btTransformUtil.h b/extern/bullet2/LinearMath/btTransformUtil.h new file mode 100644 index 00000000000..dd9057546d8 --- /dev/null +++ b/extern/bullet2/LinearMath/btTransformUtil.h @@ -0,0 +1,228 @@ +/* +Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +#ifndef SIMD_TRANSFORM_UTIL_H +#define SIMD_TRANSFORM_UTIL_H + +#include "btTransform.h" +#define ANGULAR_MOTION_THRESHOLD btScalar(0.5)*SIMD_HALF_PI + + + + +SIMD_FORCE_INLINE btVector3 btAabbSupport(const btVector3& halfExtents,const btVector3& supportDir) +{ + return btVector3(supportDir.x() < btScalar(0.0) ? -halfExtents.x() : halfExtents.x(), + supportDir.y() < btScalar(0.0) ? -halfExtents.y() : halfExtents.y(), + supportDir.z() < btScalar(0.0) ? -halfExtents.z() : halfExtents.z()); +} + + + + + + +/// Utils related to temporal transforms +class btTransformUtil +{ + +public: + + static void integrateTransform(const btTransform& curTrans,const btVector3& linvel,const btVector3& angvel,btScalar timeStep,btTransform& predictedTransform) + { + predictedTransform.setOrigin(curTrans.getOrigin() + linvel * timeStep); +// #define QUATERNION_DERIVATIVE + #ifdef QUATERNION_DERIVATIVE + btQuaternion predictedOrn = curTrans.getRotation(); + predictedOrn += (angvel * predictedOrn) * (timeStep * btScalar(0.5)); + predictedOrn.normalize(); + #else + //Exponential map + //google for "Practical Parameterization of Rotations Using the Exponential Map", F. Sebastian Grassia + + btVector3 axis; + btScalar fAngle = angvel.length(); + //limit the angular motion + if (fAngle*timeStep > ANGULAR_MOTION_THRESHOLD) + { + fAngle = ANGULAR_MOTION_THRESHOLD / timeStep; + } + + if ( fAngle < btScalar(0.001) ) + { + // use Taylor's expansions of sync function + axis = angvel*( btScalar(0.5)*timeStep-(timeStep*timeStep*timeStep)*(btScalar(0.020833333333))*fAngle*fAngle ); + } + else + { + // sync(fAngle) = sin(c*fAngle)/t + axis = angvel*( btSin(btScalar(0.5)*fAngle*timeStep)/fAngle ); + } + btQuaternion dorn (axis.x(),axis.y(),axis.z(),btCos( fAngle*timeStep*btScalar(0.5) )); + btQuaternion orn0 = curTrans.getRotation(); + + btQuaternion predictedOrn = dorn * orn0; + predictedOrn.normalize(); + #endif + predictedTransform.setRotation(predictedOrn); + } + + static void calculateVelocityQuaternion(const btVector3& pos0,const btVector3& pos1,const btQuaternion& orn0,const btQuaternion& orn1,btScalar timeStep,btVector3& linVel,btVector3& angVel) + { + linVel = (pos1 - pos0) / timeStep; + btVector3 axis; + btScalar angle; + if (orn0 != orn1) + { + calculateDiffAxisAngleQuaternion(orn0,orn1,axis,angle); + angVel = axis * angle / timeStep; + } else + { + angVel.setValue(0,0,0); + } + } + + static void calculateDiffAxisAngleQuaternion(const btQuaternion& orn0,const btQuaternion& orn1a,btVector3& axis,btScalar& angle) + { + btQuaternion orn1 = orn0.nearest(orn1a); + btQuaternion dorn = orn1 * orn0.inverse(); + angle = dorn.getAngle(); + axis = btVector3(dorn.x(),dorn.y(),dorn.z()); + axis[3] = btScalar(0.); + //check for axis length + btScalar len = axis.length2(); + if (len < SIMD_EPSILON*SIMD_EPSILON) + axis = btVector3(btScalar(1.),btScalar(0.),btScalar(0.)); + else + axis /= btSqrt(len); + } + + static void calculateVelocity(const btTransform& transform0,const btTransform& transform1,btScalar timeStep,btVector3& linVel,btVector3& angVel) + { + linVel = (transform1.getOrigin() - transform0.getOrigin()) / timeStep; + btVector3 axis; + btScalar angle; + calculateDiffAxisAngle(transform0,transform1,axis,angle); + angVel = axis * angle / timeStep; + } + + static void calculateDiffAxisAngle(const btTransform& transform0,const btTransform& transform1,btVector3& axis,btScalar& angle) + { + btMatrix3x3 dmat = transform1.getBasis() * transform0.getBasis().inverse(); + btQuaternion dorn; + dmat.getRotation(dorn); + + ///floating point inaccuracy can lead to w component > 1..., which breaks + dorn.normalize(); + + angle = dorn.getAngle(); + axis = btVector3(dorn.x(),dorn.y(),dorn.z()); + axis[3] = btScalar(0.); + //check for axis length + btScalar len = axis.length2(); + if (len < SIMD_EPSILON*SIMD_EPSILON) + axis = btVector3(btScalar(1.),btScalar(0.),btScalar(0.)); + else + axis /= btSqrt(len); + } + +}; + + +///The btConvexSeparatingDistanceUtil can help speed up convex collision detection +///by conservatively updating a cached separating distance/vector instead of re-calculating the closest distance +class btConvexSeparatingDistanceUtil +{ + btQuaternion m_ornA; + btQuaternion m_ornB; + btVector3 m_posA; + btVector3 m_posB; + + btVector3 m_separatingNormal; + + btScalar m_boundingRadiusA; + btScalar m_boundingRadiusB; + btScalar m_separatingDistance; + +public: + + btConvexSeparatingDistanceUtil(btScalar boundingRadiusA,btScalar boundingRadiusB) + :m_boundingRadiusA(boundingRadiusA), + m_boundingRadiusB(boundingRadiusB), + m_separatingDistance(0.f) + { + } + + btScalar getConservativeSeparatingDistance() + { + return m_separatingDistance; + } + + void updateSeparatingDistance(const btTransform& transA,const btTransform& transB) + { + const btVector3& toPosA = transA.getOrigin(); + const btVector3& toPosB = transB.getOrigin(); + btQuaternion toOrnA = transA.getRotation(); + btQuaternion toOrnB = transB.getRotation(); + + if (m_separatingDistance>0.f) + { + + + btVector3 linVelA,angVelA,linVelB,angVelB; + btTransformUtil::calculateVelocityQuaternion(m_posA,toPosA,m_ornA,toOrnA,btScalar(1.),linVelA,angVelA); + btTransformUtil::calculateVelocityQuaternion(m_posB,toPosB,m_ornB,toOrnB,btScalar(1.),linVelB,angVelB); + btScalar maxAngularProjectedVelocity = angVelA.length() * m_boundingRadiusA + angVelB.length() * m_boundingRadiusB; + btVector3 relLinVel = (linVelB-linVelA); + btScalar relLinVelocLength = (linVelB-linVelA).dot(m_separatingNormal); + if (relLinVelocLength<0.f) + { + relLinVelocLength = 0.f; + } + + btScalar projectedMotion = maxAngularProjectedVelocity +relLinVelocLength; + m_separatingDistance -= projectedMotion; + } + + m_posA = toPosA; + m_posB = toPosB; + m_ornA = toOrnA; + m_ornB = toOrnB; + } + + void initSeparatingDistance(const btVector3& separatingVector,btScalar separatingDistance,const btTransform& transA,const btTransform& transB) + { + m_separatingDistance = separatingDistance; + + if (m_separatingDistance>0.f) + { + m_separatingNormal = separatingVector; + + const btVector3& toPosA = transA.getOrigin(); + const btVector3& toPosB = transB.getOrigin(); + btQuaternion toOrnA = transA.getRotation(); + btQuaternion toOrnB = transB.getRotation(); + m_posA = toPosA; + m_posB = toPosB; + m_ornA = toOrnA; + m_ornB = toOrnB; + } + } + +}; + + +#endif //SIMD_TRANSFORM_UTIL_H + diff --git a/extern/bullet2/LinearMath/btVector3.h b/extern/bullet2/LinearMath/btVector3.h new file mode 100644 index 00000000000..84446f2298a --- /dev/null +++ b/extern/bullet2/LinearMath/btVector3.h @@ -0,0 +1,744 @@ +/* +Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + + +#ifndef SIMD__VECTOR3_H +#define SIMD__VECTOR3_H + + +#include "btScalar.h" +#include "btMinMax.h" + +#ifdef BT_USE_DOUBLE_PRECISION +#define btVector3Data btVector3DoubleData +#define btVector3DataName "btVector3DoubleData" +#else +#define btVector3Data btVector3FloatData +#define btVector3DataName "btVector3FloatData" +#endif //BT_USE_DOUBLE_PRECISION + + + + +/**@brief btVector3 can be used to represent 3D points and vectors. + * It has an un-used w component to suit 16-byte alignment when btVector3 is stored in containers. This extra component can be used by derived classes (Quaternion?) or by user + * Ideally, this class should be replaced by a platform optimized SIMD version that keeps the data in registers + */ +ATTRIBUTE_ALIGNED16(class) btVector3 +{ +public: + +#if defined (__SPU__) && defined (__CELLOS_LV2__) + btScalar m_floats[4]; +public: + SIMD_FORCE_INLINE const vec_float4& get128() const + { + return *((const vec_float4*)&m_floats[0]); + } +public: +#else //__CELLOS_LV2__ __SPU__ +#ifdef BT_USE_SSE // _WIN32 + union { + __m128 mVec128; + btScalar m_floats[4]; + }; + SIMD_FORCE_INLINE __m128 get128() const + { + return mVec128; + } + SIMD_FORCE_INLINE void set128(__m128 v128) + { + mVec128 = v128; + } +#else + btScalar m_floats[4]; +#endif +#endif //__CELLOS_LV2__ __SPU__ + + public: + + /**@brief No initialization constructor */ + SIMD_FORCE_INLINE btVector3() {} + + + + /**@brief Constructor from scalars + * @param x X value + * @param y Y value + * @param z Z value + */ + SIMD_FORCE_INLINE btVector3(const btScalar& x, const btScalar& y, const btScalar& z) + { + m_floats[0] = x; + m_floats[1] = y; + m_floats[2] = z; + m_floats[3] = btScalar(0.); + } + + +/**@brief Add a vector to this one + * @param The vector to add to this one */ + SIMD_FORCE_INLINE btVector3& operator+=(const btVector3& v) + { + + m_floats[0] += v.m_floats[0]; m_floats[1] += v.m_floats[1];m_floats[2] += v.m_floats[2]; + return *this; + } + + + /**@brief Subtract a vector from this one + * @param The vector to subtract */ + SIMD_FORCE_INLINE btVector3& operator-=(const btVector3& v) + { + m_floats[0] -= v.m_floats[0]; m_floats[1] -= v.m_floats[1];m_floats[2] -= v.m_floats[2]; + return *this; + } + /**@brief Scale the vector + * @param s Scale factor */ + SIMD_FORCE_INLINE btVector3& operator*=(const btScalar& s) + { + m_floats[0] *= s; m_floats[1] *= s;m_floats[2] *= s; + return *this; + } + + /**@brief Inversely scale the vector + * @param s Scale factor to divide by */ + SIMD_FORCE_INLINE btVector3& operator/=(const btScalar& s) + { + btFullAssert(s != btScalar(0.0)); + return *this *= btScalar(1.0) / s; + } + + /**@brief Return the dot product + * @param v The other vector in the dot product */ + SIMD_FORCE_INLINE btScalar dot(const btVector3& v) const + { + return m_floats[0] * v.m_floats[0] + m_floats[1] * v.m_floats[1] +m_floats[2] * v.m_floats[2]; + } + + /**@brief Return the length of the vector squared */ + SIMD_FORCE_INLINE btScalar length2() const + { + return dot(*this); + } + + /**@brief Return the length of the vector */ + SIMD_FORCE_INLINE btScalar length() const + { + return btSqrt(length2()); + } + + /**@brief Return the distance squared between the ends of this and another vector + * This is symantically treating the vector like a point */ + SIMD_FORCE_INLINE btScalar distance2(const btVector3& v) const; + + /**@brief Return the distance between the ends of this and another vector + * This is symantically treating the vector like a point */ + SIMD_FORCE_INLINE btScalar distance(const btVector3& v) const; + + /**@brief Normalize this vector + * x^2 + y^2 + z^2 = 1 */ + SIMD_FORCE_INLINE btVector3& normalize() + { + return *this /= length(); + } + + /**@brief Return a normalized version of this vector */ + SIMD_FORCE_INLINE btVector3 normalized() const; + + /**@brief Rotate this vector + * @param wAxis The axis to rotate about + * @param angle The angle to rotate by */ + SIMD_FORCE_INLINE btVector3 rotate( const btVector3& wAxis, const btScalar angle ); + + /**@brief Return the angle between this and another vector + * @param v The other vector */ + SIMD_FORCE_INLINE btScalar angle(const btVector3& v) const + { + btScalar s = btSqrt(length2() * v.length2()); + btFullAssert(s != btScalar(0.0)); + return btAcos(dot(v) / s); + } + /**@brief Return a vector will the absolute values of each element */ + SIMD_FORCE_INLINE btVector3 absolute() const + { + return btVector3( + btFabs(m_floats[0]), + btFabs(m_floats[1]), + btFabs(m_floats[2])); + } + /**@brief Return the cross product between this and another vector + * @param v The other vector */ + SIMD_FORCE_INLINE btVector3 cross(const btVector3& v) const + { + return btVector3( + m_floats[1] * v.m_floats[2] -m_floats[2] * v.m_floats[1], + m_floats[2] * v.m_floats[0] - m_floats[0] * v.m_floats[2], + m_floats[0] * v.m_floats[1] - m_floats[1] * v.m_floats[0]); + } + + SIMD_FORCE_INLINE btScalar triple(const btVector3& v1, const btVector3& v2) const + { + return m_floats[0] * (v1.m_floats[1] * v2.m_floats[2] - v1.m_floats[2] * v2.m_floats[1]) + + m_floats[1] * (v1.m_floats[2] * v2.m_floats[0] - v1.m_floats[0] * v2.m_floats[2]) + + m_floats[2] * (v1.m_floats[0] * v2.m_floats[1] - v1.m_floats[1] * v2.m_floats[0]); + } + + /**@brief Return the axis with the smallest value + * Note return values are 0,1,2 for x, y, or z */ + SIMD_FORCE_INLINE int minAxis() const + { + return m_floats[0] < m_floats[1] ? (m_floats[0] return this, t=1 => return other) */ + SIMD_FORCE_INLINE btVector3 lerp(const btVector3& v, const btScalar& t) const + { + return btVector3(m_floats[0] + (v.m_floats[0] - m_floats[0]) * t, + m_floats[1] + (v.m_floats[1] - m_floats[1]) * t, + m_floats[2] + (v.m_floats[2] -m_floats[2]) * t); + } + + /**@brief Elementwise multiply this vector by the other + * @param v The other vector */ + SIMD_FORCE_INLINE btVector3& operator*=(const btVector3& v) + { + m_floats[0] *= v.m_floats[0]; m_floats[1] *= v.m_floats[1];m_floats[2] *= v.m_floats[2]; + return *this; + } + + /**@brief Return the x value */ + SIMD_FORCE_INLINE const btScalar& getX() const { return m_floats[0]; } + /**@brief Return the y value */ + SIMD_FORCE_INLINE const btScalar& getY() const { return m_floats[1]; } + /**@brief Return the z value */ + SIMD_FORCE_INLINE const btScalar& getZ() const { return m_floats[2]; } + /**@brief Set the x value */ + SIMD_FORCE_INLINE void setX(btScalar x) { m_floats[0] = x;}; + /**@brief Set the y value */ + SIMD_FORCE_INLINE void setY(btScalar y) { m_floats[1] = y;}; + /**@brief Set the z value */ + SIMD_FORCE_INLINE void setZ(btScalar z) {m_floats[2] = z;}; + /**@brief Set the w value */ + SIMD_FORCE_INLINE void setW(btScalar w) { m_floats[3] = w;}; + /**@brief Return the x value */ + SIMD_FORCE_INLINE const btScalar& x() const { return m_floats[0]; } + /**@brief Return the y value */ + SIMD_FORCE_INLINE const btScalar& y() const { return m_floats[1]; } + /**@brief Return the z value */ + SIMD_FORCE_INLINE const btScalar& z() const { return m_floats[2]; } + /**@brief Return the w value */ + SIMD_FORCE_INLINE const btScalar& w() const { return m_floats[3]; } + + //SIMD_FORCE_INLINE btScalar& operator[](int i) { return (&m_floats[0])[i]; } + //SIMD_FORCE_INLINE const btScalar& operator[](int i) const { return (&m_floats[0])[i]; } + ///operator btScalar*() replaces operator[], using implicit conversion. We added operator != and operator == to avoid pointer comparisons. + SIMD_FORCE_INLINE operator btScalar *() { return &m_floats[0]; } + SIMD_FORCE_INLINE operator const btScalar *() const { return &m_floats[0]; } + + SIMD_FORCE_INLINE bool operator==(const btVector3& other) const + { + return ((m_floats[3]==other.m_floats[3]) && (m_floats[2]==other.m_floats[2]) && (m_floats[1]==other.m_floats[1]) && (m_floats[0]==other.m_floats[0])); + } + + SIMD_FORCE_INLINE bool operator!=(const btVector3& other) const + { + return !(*this == other); + } + + /**@brief Set each element to the max of the current values and the values of another btVector3 + * @param other The other btVector3 to compare with + */ + SIMD_FORCE_INLINE void setMax(const btVector3& other) + { + btSetMax(m_floats[0], other.m_floats[0]); + btSetMax(m_floats[1], other.m_floats[1]); + btSetMax(m_floats[2], other.m_floats[2]); + btSetMax(m_floats[3], other.w()); + } + /**@brief Set each element to the min of the current values and the values of another btVector3 + * @param other The other btVector3 to compare with + */ + SIMD_FORCE_INLINE void setMin(const btVector3& other) + { + btSetMin(m_floats[0], other.m_floats[0]); + btSetMin(m_floats[1], other.m_floats[1]); + btSetMin(m_floats[2], other.m_floats[2]); + btSetMin(m_floats[3], other.w()); + } + + SIMD_FORCE_INLINE void setValue(const btScalar& x, const btScalar& y, const btScalar& z) + { + m_floats[0]=x; + m_floats[1]=y; + m_floats[2]=z; + m_floats[3] = btScalar(0.); + } + + void getSkewSymmetricMatrix(btVector3* v0,btVector3* v1,btVector3* v2) const + { + v0->setValue(0. ,-z() ,y()); + v1->setValue(z() ,0. ,-x()); + v2->setValue(-y() ,x() ,0.); + } + + void setZero() + { + setValue(btScalar(0.),btScalar(0.),btScalar(0.)); + } + + SIMD_FORCE_INLINE bool isZero() const + { + return m_floats[0] == btScalar(0) && m_floats[1] == btScalar(0) && m_floats[2] == btScalar(0); + } + + SIMD_FORCE_INLINE bool fuzzyZero() const + { + return length2() < SIMD_EPSILON; + } + + SIMD_FORCE_INLINE void serialize(struct btVector3Data& dataOut) const; + + SIMD_FORCE_INLINE void deSerialize(const struct btVector3Data& dataIn); + + SIMD_FORCE_INLINE void serializeFloat(struct btVector3FloatData& dataOut) const; + + SIMD_FORCE_INLINE void deSerializeFloat(const struct btVector3FloatData& dataIn); + + SIMD_FORCE_INLINE void serializeDouble(struct btVector3DoubleData& dataOut) const; + + SIMD_FORCE_INLINE void deSerializeDouble(const struct btVector3DoubleData& dataIn); + +}; + +/**@brief Return the sum of two vectors (Point symantics)*/ +SIMD_FORCE_INLINE btVector3 +operator+(const btVector3& v1, const btVector3& v2) +{ + return btVector3(v1.m_floats[0] + v2.m_floats[0], v1.m_floats[1] + v2.m_floats[1], v1.m_floats[2] + v2.m_floats[2]); +} + +/**@brief Return the elementwise product of two vectors */ +SIMD_FORCE_INLINE btVector3 +operator*(const btVector3& v1, const btVector3& v2) +{ + return btVector3(v1.m_floats[0] * v2.m_floats[0], v1.m_floats[1] * v2.m_floats[1], v1.m_floats[2] * v2.m_floats[2]); +} + +/**@brief Return the difference between two vectors */ +SIMD_FORCE_INLINE btVector3 +operator-(const btVector3& v1, const btVector3& v2) +{ + return btVector3(v1.m_floats[0] - v2.m_floats[0], v1.m_floats[1] - v2.m_floats[1], v1.m_floats[2] - v2.m_floats[2]); +} +/**@brief Return the negative of the vector */ +SIMD_FORCE_INLINE btVector3 +operator-(const btVector3& v) +{ + return btVector3(-v.m_floats[0], -v.m_floats[1], -v.m_floats[2]); +} + +/**@brief Return the vector scaled by s */ +SIMD_FORCE_INLINE btVector3 +operator*(const btVector3& v, const btScalar& s) +{ + return btVector3(v.m_floats[0] * s, v.m_floats[1] * s, v.m_floats[2] * s); +} + +/**@brief Return the vector scaled by s */ +SIMD_FORCE_INLINE btVector3 +operator*(const btScalar& s, const btVector3& v) +{ + return v * s; +} + +/**@brief Return the vector inversely scaled by s */ +SIMD_FORCE_INLINE btVector3 +operator/(const btVector3& v, const btScalar& s) +{ + btFullAssert(s != btScalar(0.0)); + return v * (btScalar(1.0) / s); +} + +/**@brief Return the vector inversely scaled by s */ +SIMD_FORCE_INLINE btVector3 +operator/(const btVector3& v1, const btVector3& v2) +{ + return btVector3(v1.m_floats[0] / v2.m_floats[0],v1.m_floats[1] / v2.m_floats[1],v1.m_floats[2] / v2.m_floats[2]); +} + +/**@brief Return the dot product between two vectors */ +SIMD_FORCE_INLINE btScalar +btDot(const btVector3& v1, const btVector3& v2) +{ + return v1.dot(v2); +} + + +/**@brief Return the distance squared between two vectors */ +SIMD_FORCE_INLINE btScalar +btDistance2(const btVector3& v1, const btVector3& v2) +{ + return v1.distance2(v2); +} + + +/**@brief Return the distance between two vectors */ +SIMD_FORCE_INLINE btScalar +btDistance(const btVector3& v1, const btVector3& v2) +{ + return v1.distance(v2); +} + +/**@brief Return the angle between two vectors */ +SIMD_FORCE_INLINE btScalar +btAngle(const btVector3& v1, const btVector3& v2) +{ + return v1.angle(v2); +} + +/**@brief Return the cross product of two vectors */ +SIMD_FORCE_INLINE btVector3 +btCross(const btVector3& v1, const btVector3& v2) +{ + return v1.cross(v2); +} + +SIMD_FORCE_INLINE btScalar +btTriple(const btVector3& v1, const btVector3& v2, const btVector3& v3) +{ + return v1.triple(v2, v3); +} + +/**@brief Return the linear interpolation between two vectors + * @param v1 One vector + * @param v2 The other vector + * @param t The ration of this to v (t = 0 => return v1, t=1 => return v2) */ +SIMD_FORCE_INLINE btVector3 +lerp(const btVector3& v1, const btVector3& v2, const btScalar& t) +{ + return v1.lerp(v2, t); +} + + + +SIMD_FORCE_INLINE btScalar btVector3::distance2(const btVector3& v) const +{ + return (v - *this).length2(); +} + +SIMD_FORCE_INLINE btScalar btVector3::distance(const btVector3& v) const +{ + return (v - *this).length(); +} + +SIMD_FORCE_INLINE btVector3 btVector3::normalized() const +{ + return *this / length(); +} + +SIMD_FORCE_INLINE btVector3 btVector3::rotate( const btVector3& wAxis, const btScalar angle ) +{ + // wAxis must be a unit lenght vector + + btVector3 o = wAxis * wAxis.dot( *this ); + btVector3 x = *this - o; + btVector3 y; + + y = wAxis.cross( *this ); + + return ( o + x * btCos( angle ) + y * btSin( angle ) ); +} + +class btVector4 : public btVector3 +{ +public: + + SIMD_FORCE_INLINE btVector4() {} + + + SIMD_FORCE_INLINE btVector4(const btScalar& x, const btScalar& y, const btScalar& z,const btScalar& w) + : btVector3(x,y,z) + { + m_floats[3] = w; + } + + + SIMD_FORCE_INLINE btVector4 absolute4() const + { + return btVector4( + btFabs(m_floats[0]), + btFabs(m_floats[1]), + btFabs(m_floats[2]), + btFabs(m_floats[3])); + } + + + + btScalar getW() const { return m_floats[3];} + + + SIMD_FORCE_INLINE int maxAxis4() const + { + int maxIndex = -1; + btScalar maxVal = btScalar(-BT_LARGE_FLOAT); + if (m_floats[0] > maxVal) + { + maxIndex = 0; + maxVal = m_floats[0]; + } + if (m_floats[1] > maxVal) + { + maxIndex = 1; + maxVal = m_floats[1]; + } + if (m_floats[2] > maxVal) + { + maxIndex = 2; + maxVal =m_floats[2]; + } + if (m_floats[3] > maxVal) + { + maxIndex = 3; + maxVal = m_floats[3]; + } + + + + + return maxIndex; + + } + + + SIMD_FORCE_INLINE int minAxis4() const + { + int minIndex = -1; + btScalar minVal = btScalar(BT_LARGE_FLOAT); + if (m_floats[0] < minVal) + { + minIndex = 0; + minVal = m_floats[0]; + } + if (m_floats[1] < minVal) + { + minIndex = 1; + minVal = m_floats[1]; + } + if (m_floats[2] < minVal) + { + minIndex = 2; + minVal =m_floats[2]; + } + if (m_floats[3] < minVal) + { + minIndex = 3; + minVal = m_floats[3]; + } + + return minIndex; + + } + + + SIMD_FORCE_INLINE int closestAxis4() const + { + return absolute4().maxAxis4(); + } + + + + + /**@brief Set x,y,z and zero w + * @param x Value of x + * @param y Value of y + * @param z Value of z + */ + + +/* void getValue(btScalar *m) const + { + m[0] = m_floats[0]; + m[1] = m_floats[1]; + m[2] =m_floats[2]; + } +*/ +/**@brief Set the values + * @param x Value of x + * @param y Value of y + * @param z Value of z + * @param w Value of w + */ + SIMD_FORCE_INLINE void setValue(const btScalar& x, const btScalar& y, const btScalar& z,const btScalar& w) + { + m_floats[0]=x; + m_floats[1]=y; + m_floats[2]=z; + m_floats[3]=w; + } + + +}; + + +///btSwapVector3Endian swaps vector endianness, useful for network and cross-platform serialization +SIMD_FORCE_INLINE void btSwapScalarEndian(const btScalar& sourceVal, btScalar& destVal) +{ + #ifdef BT_USE_DOUBLE_PRECISION + unsigned char* dest = (unsigned char*) &destVal; + unsigned char* src = (unsigned char*) &sourceVal; + dest[0] = src[7]; + dest[1] = src[6]; + dest[2] = src[5]; + dest[3] = src[4]; + dest[4] = src[3]; + dest[5] = src[2]; + dest[6] = src[1]; + dest[7] = src[0]; +#else + unsigned char* dest = (unsigned char*) &destVal; + unsigned char* src = (unsigned char*) &sourceVal; + dest[0] = src[3]; + dest[1] = src[2]; + dest[2] = src[1]; + dest[3] = src[0]; +#endif //BT_USE_DOUBLE_PRECISION +} +///btSwapVector3Endian swaps vector endianness, useful for network and cross-platform serialization +SIMD_FORCE_INLINE void btSwapVector3Endian(const btVector3& sourceVec, btVector3& destVec) +{ + for (int i=0;i<4;i++) + { + btSwapScalarEndian(sourceVec[i],destVec[i]); + } + +} + +///btUnSwapVector3Endian swaps vector endianness, useful for network and cross-platform serialization +SIMD_FORCE_INLINE void btUnSwapVector3Endian(btVector3& vector) +{ + + btVector3 swappedVec; + for (int i=0;i<4;i++) + { + btSwapScalarEndian(vector[i],swappedVec[i]); + } + vector = swappedVec; +} + +SIMD_FORCE_INLINE void btPlaneSpace1 (const btVector3& n, btVector3& p, btVector3& q) +{ + if (btFabs(n.z()) > SIMDSQRT12) { + // choose p in y-z plane + btScalar a = n[1]*n[1] + n[2]*n[2]; + btScalar k = btRecipSqrt (a); + p.setValue(0,-n[2]*k,n[1]*k); + // set q = n x p + q.setValue(a*k,-n[0]*p[2],n[0]*p[1]); + } + else { + // choose p in x-y plane + btScalar a = n.x()*n.x() + n.y()*n.y(); + btScalar k = btRecipSqrt (a); + p.setValue(-n.y()*k,n.x()*k,0); + // set q = n x p + q.setValue(-n.z()*p.y(),n.z()*p.x(),a*k); + } +} + + +struct btVector3FloatData +{ + float m_floats[4]; +}; + +struct btVector3DoubleData +{ + double m_floats[4]; + +}; + +SIMD_FORCE_INLINE void btVector3::serializeFloat(struct btVector3FloatData& dataOut) const +{ + ///could also do a memcpy, check if it is worth it + for (int i=0;i<4;i++) + dataOut.m_floats[i] = float(m_floats[i]); +} + +SIMD_FORCE_INLINE void btVector3::deSerializeFloat(const struct btVector3FloatData& dataIn) +{ + for (int i=0;i<4;i++) + m_floats[i] = btScalar(dataIn.m_floats[i]); +} + + +SIMD_FORCE_INLINE void btVector3::serializeDouble(struct btVector3DoubleData& dataOut) const +{ + ///could also do a memcpy, check if it is worth it + for (int i=0;i<4;i++) + dataOut.m_floats[i] = double(m_floats[i]); +} + +SIMD_FORCE_INLINE void btVector3::deSerializeDouble(const struct btVector3DoubleData& dataIn) +{ + for (int i=0;i<4;i++) + m_floats[i] = btScalar(dataIn.m_floats[i]); +} + + +SIMD_FORCE_INLINE void btVector3::serialize(struct btVector3Data& dataOut) const +{ + ///could also do a memcpy, check if it is worth it + for (int i=0;i<4;i++) + dataOut.m_floats[i] = m_floats[i]; +} + +SIMD_FORCE_INLINE void btVector3::deSerialize(const struct btVector3Data& dataIn) +{ + for (int i=0;i<4;i++) + m_floats[i] = dataIn.m_floats[i]; +} + + +#endif //SIMD__VECTOR3_H diff --git a/extern/bullet2/Makefile b/extern/bullet2/Makefile index d974569e63d..554179558d9 100644 --- a/extern/bullet2/Makefile +++ b/extern/bullet2/Makefile @@ -1,5 +1,3 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 # # $Id$ # @@ -19,47 +17,56 @@ # along with this program; if not, write to the Free Software Foundation, # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # -# The Original Code is Copyright (C) 2002 by Hans Lambermont +# 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): +# Contributor(s): none yet. # # ***** END GPL LICENSE BLOCK ***** +# + LIBNAME = bullet2 -include nan_definitions.mk -SOURCEDIR = extern/$(LIBNAME) DIR = $(OCGDIR)/extern/$(LIBNAME) -DIRS = src -DISTDIR = src BULLETDIRS = \ LinearMath \ BulletCollision/BroadphaseCollision \ BulletCollision/CollisionShapes \ BulletCollision/NarrowPhaseCollision \ +BulletCollision/CollisionDispatch \ BulletCollision/Gimpact \ -BulletCollision//CollisionDispatch \ BulletDynamics/ConstraintSolver \ BulletDynamics/Vehicle \ BulletDynamics/Dynamics \ BulletSoftBody -include nan_subdirs.mk +CCSRCS = $(wildcard \ +LinearMath/*.cpp \ +BulletCollision/BroadphaseCollision/*.cpp \ +BulletCollision/CollisionShapes/*.cpp \ +BulletCollision/NarrowPhaseCollision/*.cpp \ +BulletCollision/CollisionDispatch/*.cpp \ +BulletCollision/Gimpact/*.cpp \ +BulletDynamics/ConstraintSolver/*.cpp \ +BulletDynamics/Vehicle/*.cpp \ +BulletDynamics/Dynamics/*.cpp \ +BulletSoftBody/*.cpp) -CP = $(NANBLENDERHOME)/intern/tools/cpifdiff.sh +CPPFLAGS += -D_LIB -I. -IBulletCollision -IBulletDynamics -ILinearMath -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_BULLET2) ] || mkdir -p $(NAN_BULLET2) - @[ -d $(NAN_BULLET2)/include ] || mkdir -p $(NAN_BULLET2)/include +all debug:: objdirs + +include nan_compile.mk + +.PHONY: objdirs clean +objdirs: @for i in $(BULLETDIRS); do \ - [ -d $(NAN_BULLET2)/include/$$i ] || mkdir -p $(NAN_BULLET2)/include/$$i; \ - $(CP) $(DISTDIR)/$$i/*.h $(NAN_BULLET2)/include/$$i; \ + [ -d $(DIR)/$(DEBUG_DIR)$$i ] || mkdir -p $(DIR)/$(DEBUG_DIR)$$i; \ done - @[ -d $(NAN_BULLET2)/lib ] || mkdir -p $(NAN_BULLET2)/lib - @$(CP) $(DISTDIR)/*.h $(NAN_BULLET2)/include - @$(CP) $(OCGDIR)/extern/bullet2/libbullet2.a $(NAN_BULLET2)/lib -ifeq ($(OS),darwin) - ranlib $(NAN_BULLET2)/lib/libbullet2.a -endif + +clean:: + rm -rf $(DIR) + rm -rf $(NAN_BULLET2)/lib/libbullet2.a + rm -rf $(NAN_BULLET2)/include diff --git a/extern/bullet2/MiniCL/cl.h b/extern/bullet2/MiniCL/cl.h new file mode 100644 index 00000000000..b0cda4237e0 --- /dev/null +++ b/extern/bullet2/MiniCL/cl.h @@ -0,0 +1,865 @@ +/******************************************************************************* + * Copyright (c) 2008-2009 The Khronos Group Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and/or associated documentation files (the + * "Materials"), to deal in the Materials without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Materials, and to + * permit persons to whom the Materials are furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Materials. + * + * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. + ******************************************************************************/ + +#ifndef __OPENCL_CL_H +#define __OPENCL_CL_H + +#ifdef __APPLE__ +#include +#else +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/******************************************************************************/ + +typedef struct _cl_platform_id * cl_platform_id; +typedef struct _cl_device_id * cl_device_id; +typedef struct _cl_context * cl_context; +typedef struct _cl_command_queue * cl_command_queue; +typedef struct _cl_mem * cl_mem; +typedef struct _cl_program * cl_program; +typedef struct _cl_kernel * cl_kernel; +typedef struct _cl_event * cl_event; +typedef struct _cl_sampler * cl_sampler; + +typedef cl_uint cl_bool; /* WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed to be the same size as the bool in kernels. */ +typedef cl_ulong cl_bitfield; +typedef cl_bitfield cl_device_type; +typedef cl_uint cl_platform_info; +typedef cl_uint cl_device_info; +typedef cl_bitfield cl_device_address_info; +typedef cl_bitfield cl_device_fp_config; +typedef cl_uint cl_device_mem_cache_type; +typedef cl_uint cl_device_local_mem_type; +typedef cl_bitfield cl_device_exec_capabilities; +typedef cl_bitfield cl_command_queue_properties; + +typedef intptr_t cl_context_properties; +typedef cl_uint cl_context_info; +typedef cl_uint cl_command_queue_info; +typedef cl_uint cl_channel_order; +typedef cl_uint cl_channel_type; +typedef cl_bitfield cl_mem_flags; +typedef cl_uint cl_mem_object_type; +typedef cl_uint cl_mem_info; +typedef cl_uint cl_image_info; +typedef cl_uint cl_addressing_mode; +typedef cl_uint cl_filter_mode; +typedef cl_uint cl_sampler_info; +typedef cl_bitfield cl_map_flags; +typedef cl_uint cl_program_info; +typedef cl_uint cl_program_build_info; +typedef cl_int cl_build_status; +typedef cl_uint cl_kernel_info; +typedef cl_uint cl_kernel_work_group_info; +typedef cl_uint cl_event_info; +typedef cl_uint cl_command_type; +typedef cl_uint cl_profiling_info; + +typedef struct _cl_image_format { + cl_channel_order image_channel_order; + cl_channel_type image_channel_data_type; +} cl_image_format; + +/******************************************************************************/ + +// Error Codes +#define CL_SUCCESS 0 +#define CL_DEVICE_NOT_FOUND -1 +#define CL_DEVICE_NOT_AVAILABLE -2 +#define CL_DEVICE_COMPILER_NOT_AVAILABLE -3 +#define CL_MEM_OBJECT_ALLOCATION_FAILURE -4 +#define CL_OUT_OF_RESOURCES -5 +#define CL_OUT_OF_HOST_MEMORY -6 +#define CL_PROFILING_INFO_NOT_AVAILABLE -7 +#define CL_MEM_COPY_OVERLAP -8 +#define CL_IMAGE_FORMAT_MISMATCH -9 +#define CL_IMAGE_FORMAT_NOT_SUPPORTED -10 +#define CL_BUILD_PROGRAM_FAILURE -11 +#define CL_MAP_FAILURE -12 + +#define CL_INVALID_VALUE -30 +#define CL_INVALID_DEVICE_TYPE -31 +#define CL_INVALID_PLATFORM -32 +#define CL_INVALID_DEVICE -33 +#define CL_INVALID_CONTEXT -34 +#define CL_INVALID_QUEUE_PROPERTIES -35 +#define CL_INVALID_COMMAND_QUEUE -36 +#define CL_INVALID_HOST_PTR -37 +#define CL_INVALID_MEM_OBJECT -38 +#define CL_INVALID_IMAGE_FORMAT_DESCRIPTOR -39 +#define CL_INVALID_IMAGE_SIZE -40 +#define CL_INVALID_SAMPLER -41 +#define CL_INVALID_BINARY -42 +#define CL_INVALID_BUILD_OPTIONS -43 +#define CL_INVALID_PROGRAM -44 +#define CL_INVALID_PROGRAM_EXECUTABLE -45 +#define CL_INVALID_KERNEL_NAME -46 +#define CL_INVALID_KERNEL_DEFINITION -47 +#define CL_INVALID_KERNEL -48 +#define CL_INVALID_ARG_INDEX -49 +#define CL_INVALID_ARG_VALUE -50 +#define CL_INVALID_ARG_SIZE -51 +#define CL_INVALID_KERNEL_ARGS -52 +#define CL_INVALID_WORK_DIMENSION -53 +#define CL_INVALID_WORK_GROUP_SIZE -54 +#define CL_INVALID_WORK_ITEM_SIZE -55 +#define CL_INVALID_GLOBAL_OFFSET -56 +#define CL_INVALID_EVENT_WAIT_LIST -57 +#define CL_INVALID_EVENT -58 +#define CL_INVALID_OPERATION -59 +#define CL_INVALID_GL_OBJECT -60 +#define CL_INVALID_BUFFER_SIZE -61 +#define CL_INVALID_MIP_LEVEL -62 + +// OpenCL Version +#define CL_VERSION_1_0 1 + +// cl_bool +#define CL_FALSE 0 +#define CL_TRUE 1 + +// cl_platform_info +#define CL_PLATFORM_PROFILE 0x0900 +#define CL_PLATFORM_VERSION 0x0901 +#define CL_PLATFORM_NAME 0x0902 +#define CL_PLATFORM_VENDOR 0x0903 +#define CL_PLATFORM_EXTENSIONS 0x0904 + +// cl_device_type - bitfield +#define CL_DEVICE_TYPE_DEFAULT (1 << 0) +#define CL_DEVICE_TYPE_CPU (1 << 1) +#define CL_DEVICE_TYPE_GPU (1 << 2) +#define CL_DEVICE_TYPE_ACCELERATOR (1 << 3) +#define CL_DEVICE_TYPE_ALL 0xFFFFFFFF + +// cl_device_info +#define CL_DEVICE_TYPE 0x1000 +#define CL_DEVICE_VENDOR_ID 0x1001 +#define CL_DEVICE_MAX_COMPUTE_UNITS 0x1002 +#define CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS 0x1003 +#define CL_DEVICE_MAX_WORK_GROUP_SIZE 0x1004 +#define CL_DEVICE_MAX_WORK_ITEM_SIZES 0x1005 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR 0x1006 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT 0x1007 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT 0x1008 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG 0x1009 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT 0x100A +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE 0x100B +#define CL_DEVICE_MAX_CLOCK_FREQUENCY 0x100C +#define CL_DEVICE_ADDRESS_BITS 0x100D +#define CL_DEVICE_MAX_READ_IMAGE_ARGS 0x100E +#define CL_DEVICE_MAX_WRITE_IMAGE_ARGS 0x100F +#define CL_DEVICE_MAX_MEM_ALLOC_SIZE 0x1010 +#define CL_DEVICE_IMAGE2D_MAX_WIDTH 0x1011 +#define CL_DEVICE_IMAGE2D_MAX_HEIGHT 0x1012 +#define CL_DEVICE_IMAGE3D_MAX_WIDTH 0x1013 +#define CL_DEVICE_IMAGE3D_MAX_HEIGHT 0x1014 +#define CL_DEVICE_IMAGE3D_MAX_DEPTH 0x1015 +#define CL_DEVICE_IMAGE_SUPPORT 0x1016 +#define CL_DEVICE_MAX_PARAMETER_SIZE 0x1017 +#define CL_DEVICE_MAX_SAMPLERS 0x1018 +#define CL_DEVICE_MEM_BASE_ADDR_ALIGN 0x1019 +#define CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE 0x101A +#define CL_DEVICE_SINGLE_FP_CONFIG 0x101B +#define CL_DEVICE_GLOBAL_MEM_CACHE_TYPE 0x101C +#define CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE 0x101D +#define CL_DEVICE_GLOBAL_MEM_CACHE_SIZE 0x101E +#define CL_DEVICE_GLOBAL_MEM_SIZE 0x101F +#define CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE 0x1020 +#define CL_DEVICE_MAX_CONSTANT_ARGS 0x1021 +#define CL_DEVICE_LOCAL_MEM_TYPE 0x1022 +#define CL_DEVICE_LOCAL_MEM_SIZE 0x1023 +#define CL_DEVICE_ERROR_CORRECTION_SUPPORT 0x1024 +#define CL_DEVICE_PROFILING_TIMER_RESOLUTION 0x1025 +#define CL_DEVICE_ENDIAN_LITTLE 0x1026 +#define CL_DEVICE_AVAILABLE 0x1027 +#define CL_DEVICE_COMPILER_AVAILABLE 0x1028 +#define CL_DEVICE_EXECUTION_CAPABILITIES 0x1029 +#define CL_DEVICE_QUEUE_PROPERTIES 0x102A +#define CL_DEVICE_NAME 0x102B +#define CL_DEVICE_VENDOR 0x102C +#define CL_DRIVER_VERSION 0x102D +#define CL_DEVICE_PROFILE 0x102E +#define CL_DEVICE_VERSION 0x102F +#define CL_DEVICE_EXTENSIONS 0x1030 +#define CL_DEVICE_PLATFORM 0x1031 + +// cl_device_address_info - bitfield +#define CL_DEVICE_ADDRESS_32_BITS (1 << 0) +#define CL_DEVICE_ADDRESS_64_BITS (1 << 1) + +// cl_device_fp_config - bitfield +#define CL_FP_DENORM (1 << 0) +#define CL_FP_INF_NAN (1 << 1) +#define CL_FP_ROUND_TO_NEAREST (1 << 2) +#define CL_FP_ROUND_TO_ZERO (1 << 3) +#define CL_FP_ROUND_TO_INF (1 << 4) +#define CL_FP_FMA (1 << 5) + +// cl_device_mem_cache_type +#define CL_NONE 0x0 +#define CL_READ_ONLY_CACHE 0x1 +#define CL_READ_WRITE_CACHE 0x2 + +// cl_device_local_mem_type +#define CL_LOCAL 0x1 +#define CL_GLOBAL 0x2 + +// cl_device_exec_capabilities - bitfield +#define CL_EXEC_KERNEL (1 << 0) +#define CL_EXEC_NATIVE_KERNEL (1 << 1) + +// cl_command_queue_properties - bitfield +#define CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE (1 << 0) +#define CL_QUEUE_PROFILING_ENABLE (1 << 1) + +// cl_context_info +#define CL_CONTEXT_REFERENCE_COUNT 0x1080 +#define CL_CONTEXT_NUM_DEVICES 0x1081 +#define CL_CONTEXT_DEVICES 0x1082 +#define CL_CONTEXT_PROPERTIES 0x1083 +#define CL_CONTEXT_PLATFORM 0x1084 + +// cl_command_queue_info +#define CL_QUEUE_CONTEXT 0x1090 +#define CL_QUEUE_DEVICE 0x1091 +#define CL_QUEUE_REFERENCE_COUNT 0x1092 +#define CL_QUEUE_PROPERTIES 0x1093 + +// cl_mem_flags - bitfield +#define CL_MEM_READ_WRITE (1 << 0) +#define CL_MEM_WRITE_ONLY (1 << 1) +#define CL_MEM_READ_ONLY (1 << 2) +#define CL_MEM_USE_HOST_PTR (1 << 3) +#define CL_MEM_ALLOC_HOST_PTR (1 << 4) +#define CL_MEM_COPY_HOST_PTR (1 << 5) + +// cl_channel_order +#define CL_R 0x10B0 +#define CL_A 0x10B1 +#define CL_RG 0x10B2 +#define CL_RA 0x10B3 +#define CL_RGB 0x10B4 +#define CL_RGBA 0x10B5 +#define CL_BGRA 0x10B6 +#define CL_ARGB 0x10B7 +#define CL_INTENSITY 0x10B8 +#define CL_LUMINANCE 0x10B9 + +// cl_channel_type +#define CL_SNORM_INT8 0x10D0 +#define CL_SNORM_INT16 0x10D1 +#define CL_UNORM_INT8 0x10D2 +#define CL_UNORM_INT16 0x10D3 +#define CL_UNORM_SHORT_565 0x10D4 +#define CL_UNORM_SHORT_555 0x10D5 +#define CL_UNORM_INT_101010 0x10D6 +#define CL_SIGNED_INT8 0x10D7 +#define CL_SIGNED_INT16 0x10D8 +#define CL_SIGNED_INT32 0x10D9 +#define CL_UNSIGNED_INT8 0x10DA +#define CL_UNSIGNED_INT16 0x10DB +#define CL_UNSIGNED_INT32 0x10DC +#define CL_HALF_FLOAT 0x10DD +#define CL_FLOAT 0x10DE + +// cl_mem_object_type +#define CL_MEM_OBJECT_BUFFER 0x10F0 +#define CL_MEM_OBJECT_IMAGE2D 0x10F1 +#define CL_MEM_OBJECT_IMAGE3D 0x10F2 + +// cl_mem_info +#define CL_MEM_TYPE 0x1100 +#define CL_MEM_FLAGS 0x1101 +#define CL_MEM_SIZE 0x1102 +#define CL_MEM_HOST_PTR 0x1103 +#define CL_MEM_MAP_COUNT 0x1104 +#define CL_MEM_REFERENCE_COUNT 0x1105 +#define CL_MEM_CONTEXT 0x1106 + +// cl_image_info +#define CL_IMAGE_FORMAT 0x1110 +#define CL_IMAGE_ELEMENT_SIZE 0x1111 +#define CL_IMAGE_ROW_PITCH 0x1112 +#define CL_IMAGE_SLICE_PITCH 0x1113 +#define CL_IMAGE_WIDTH 0x1114 +#define CL_IMAGE_HEIGHT 0x1115 +#define CL_IMAGE_DEPTH 0x1116 + +// cl_addressing_mode +#define CL_ADDRESS_NONE 0x1130 +#define CL_ADDRESS_CLAMP_TO_EDGE 0x1131 +#define CL_ADDRESS_CLAMP 0x1132 +#define CL_ADDRESS_REPEAT 0x1133 + +// cl_filter_mode +#define CL_FILTER_NEAREST 0x1140 +#define CL_FILTER_LINEAR 0x1141 + +// cl_sampler_info +#define CL_SAMPLER_REFERENCE_COUNT 0x1150 +#define CL_SAMPLER_CONTEXT 0x1151 +#define CL_SAMPLER_NORMALIZED_COORDS 0x1152 +#define CL_SAMPLER_ADDRESSING_MODE 0x1153 +#define CL_SAMPLER_FILTER_MODE 0x1154 + +// cl_map_flags - bitfield +#define CL_MAP_READ (1 << 0) +#define CL_MAP_WRITE (1 << 1) + +// cl_program_info +#define CL_PROGRAM_REFERENCE_COUNT 0x1160 +#define CL_PROGRAM_CONTEXT 0x1161 +#define CL_PROGRAM_NUM_DEVICES 0x1162 +#define CL_PROGRAM_DEVICES 0x1163 +#define CL_PROGRAM_SOURCE 0x1164 +#define CL_PROGRAM_BINARY_SIZES 0x1165 +#define CL_PROGRAM_BINARIES 0x1166 + +// cl_program_build_info +#define CL_PROGRAM_BUILD_STATUS 0x1181 +#define CL_PROGRAM_BUILD_OPTIONS 0x1182 +#define CL_PROGRAM_BUILD_LOG 0x1183 + +// cl_build_status +#define CL_BUILD_SUCCESS 0 +#define CL_BUILD_NONE -1 +#define CL_BUILD_ERROR -2 +#define CL_BUILD_IN_PROGRESS -3 + +// cl_kernel_info +#define CL_KERNEL_FUNCTION_NAME 0x1190 +#define CL_KERNEL_NUM_ARGS 0x1191 +#define CL_KERNEL_REFERENCE_COUNT 0x1192 +#define CL_KERNEL_CONTEXT 0x1193 +#define CL_KERNEL_PROGRAM 0x1194 + +// cl_kernel_work_group_info +#define CL_KERNEL_WORK_GROUP_SIZE 0x11B0 +#define CL_KERNEL_COMPILE_WORK_GROUP_SIZE 0x11B1 +#define CL_KERNEL_LOCAL_MEM_SIZE 0x11B2 + +// cl_event_info +#define CL_EVENT_COMMAND_QUEUE 0x11D0 +#define CL_EVENT_COMMAND_TYPE 0x11D1 +#define CL_EVENT_REFERENCE_COUNT 0x11D2 +#define CL_EVENT_COMMAND_EXECUTION_STATUS 0x11D3 + +// cl_command_type +#define CL_COMMAND_NDRANGE_KERNEL 0x11F0 +#define CL_COMMAND_TASK 0x11F1 +#define CL_COMMAND_NATIVE_KERNEL 0x11F2 +#define CL_COMMAND_READ_BUFFER 0x11F3 +#define CL_COMMAND_WRITE_BUFFER 0x11F4 +#define CL_COMMAND_COPY_BUFFER 0x11F5 +#define CL_COMMAND_READ_IMAGE 0x11F6 +#define CL_COMMAND_WRITE_IMAGE 0x11F7 +#define CL_COMMAND_COPY_IMAGE 0x11F8 +#define CL_COMMAND_COPY_IMAGE_TO_BUFFER 0x11F9 +#define CL_COMMAND_COPY_BUFFER_TO_IMAGE 0x11FA +#define CL_COMMAND_MAP_BUFFER 0x11FB +#define CL_COMMAND_MAP_IMAGE 0x11FC +#define CL_COMMAND_UNMAP_MEM_OBJECT 0x11FD +#define CL_COMMAND_MARKER 0x11FE +#define CL_COMMAND_WAIT_FOR_EVENTS 0x11FF +#define CL_COMMAND_BARRIER 0x1200 +#define CL_COMMAND_ACQUIRE_GL_OBJECTS 0x1201 +#define CL_COMMAND_RELEASE_GL_OBJECTS 0x1202 + +// command execution status +#define CL_COMPLETE 0x0 +#define CL_RUNNING 0x1 +#define CL_SUBMITTED 0x2 +#define CL_QUEUED 0x3 + +// cl_profiling_info +#define CL_PROFILING_COMMAND_QUEUED 0x1280 +#define CL_PROFILING_COMMAND_SUBMIT 0x1281 +#define CL_PROFILING_COMMAND_START 0x1282 +#define CL_PROFILING_COMMAND_END 0x1283 + +/********************************************************************************************************/ + +// Platform API +extern CL_API_ENTRY cl_int CL_API_CALL +clGetPlatformIDs(cl_uint /* num_entries */, + cl_platform_id * /* platforms */, + cl_uint * /* num_platforms */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetPlatformInfo(cl_platform_id /* platform */, + cl_platform_info /* param_name */, + size_t /* param_value_size */, + void * /* param_value */, + size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +// Device APIs +extern CL_API_ENTRY cl_int CL_API_CALL +clGetDeviceIDs(cl_platform_id /* platform */, + cl_device_type /* device_type */, + cl_uint /* num_entries */, + cl_device_id * /* devices */, + cl_uint * /* num_devices */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetDeviceInfo(cl_device_id /* device */, + cl_device_info /* param_name */, + size_t /* param_value_size */, + void * /* param_value */, + size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +// Context APIs +extern CL_API_ENTRY cl_context CL_API_CALL +clCreateContext(cl_context_properties * /* properties */, + cl_uint /* num_devices */, + const cl_device_id * /* devices */, + void (*pfn_notify)(const char *, const void *, size_t, void *) /* pfn_notify */, + void * /* user_data */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_context CL_API_CALL +clCreateContextFromType(cl_context_properties * /* properties */, + cl_device_type /* device_type */, + void (*pfn_notify)(const char *, const void *, size_t, void *) /* pfn_notify */, + void * /* user_data */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clRetainContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clReleaseContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetContextInfo(cl_context /* context */, + cl_context_info /* param_name */, + size_t /* param_value_size */, + void * /* param_value */, + size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +// Command Queue APIs +extern CL_API_ENTRY cl_command_queue CL_API_CALL +clCreateCommandQueue(cl_context /* context */, + cl_device_id /* device */, + cl_command_queue_properties /* properties */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clRetainCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clReleaseCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetCommandQueueInfo(cl_command_queue /* command_queue */, + cl_command_queue_info /* param_name */, + size_t /* param_value_size */, + void * /* param_value */, + size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clSetCommandQueueProperty(cl_command_queue /* command_queue */, + cl_command_queue_properties /* properties */, + cl_bool /* enable */, + cl_command_queue_properties * /* old_properties */) CL_API_SUFFIX__VERSION_1_0; + +// Memory Object APIs +extern CL_API_ENTRY cl_mem CL_API_CALL +clCreateBuffer(cl_context /* context */, + cl_mem_flags /* flags */, + size_t /* size */, + void * /* host_ptr */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_mem CL_API_CALL +clCreateImage2D(cl_context /* context */, + cl_mem_flags /* flags */, + const cl_image_format * /* image_format */, + size_t /* image_width */, + size_t /* image_height */, + size_t /* image_row_pitch */, + void * /* host_ptr */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_mem CL_API_CALL +clCreateImage3D(cl_context /* context */, + cl_mem_flags /* flags */, + const cl_image_format * /* image_format */, + size_t /* image_width */, + size_t /* image_height */, + size_t /* image_depth */, + size_t /* image_row_pitch */, + size_t /* image_slice_pitch */, + void * /* host_ptr */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clRetainMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clReleaseMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetSupportedImageFormats(cl_context /* context */, + cl_mem_flags /* flags */, + cl_mem_object_type /* image_type */, + cl_uint /* num_entries */, + cl_image_format * /* image_formats */, + cl_uint * /* num_image_formats */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetMemObjectInfo(cl_mem /* memobj */, + cl_mem_info /* param_name */, + size_t /* param_value_size */, + void * /* param_value */, + size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetImageInfo(cl_mem /* image */, + cl_image_info /* param_name */, + size_t /* param_value_size */, + void * /* param_value */, + size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +// Sampler APIs +extern CL_API_ENTRY cl_sampler CL_API_CALL +clCreateSampler(cl_context /* context */, + cl_bool /* normalized_coords */, + cl_addressing_mode /* addressing_mode */, + cl_filter_mode /* filter_mode */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clRetainSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clReleaseSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetSamplerInfo(cl_sampler /* sampler */, + cl_sampler_info /* param_name */, + size_t /* param_value_size */, + void * /* param_value */, + size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +// Program Object APIs +extern CL_API_ENTRY cl_program CL_API_CALL +clCreateProgramWithSource(cl_context /* context */, + cl_uint /* count */, + const char ** /* strings */, + const size_t * /* lengths */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_program CL_API_CALL +clCreateProgramWithBinary(cl_context /* context */, + cl_uint /* num_devices */, + const cl_device_id * /* device_list */, + const size_t * /* lengths */, + const unsigned char ** /* binaries */, + cl_int * /* binary_status */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clRetainProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clReleaseProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clBuildProgram(cl_program /* program */, + cl_uint /* num_devices */, + const cl_device_id * /* device_list */, + const char * /* options */, + void (*pfn_notify)(cl_program /* program */, void * /* user_data */), + void * /* user_data */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clUnloadCompiler(void) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetProgramInfo(cl_program /* program */, + cl_program_info /* param_name */, + size_t /* param_value_size */, + void * /* param_value */, + size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetProgramBuildInfo(cl_program /* program */, + cl_device_id /* device */, + cl_program_build_info /* param_name */, + size_t /* param_value_size */, + void * /* param_value */, + size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +// Kernel Object APIs +extern CL_API_ENTRY cl_kernel CL_API_CALL +clCreateKernel(cl_program /* program */, + const char * /* kernel_name */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clCreateKernelsInProgram(cl_program /* program */, + cl_uint /* num_kernels */, + cl_kernel * /* kernels */, + cl_uint * /* num_kernels_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clRetainKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clReleaseKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clSetKernelArg(cl_kernel /* kernel */, + cl_uint /* arg_index */, + size_t /* arg_size */, + const void * /* arg_value */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetKernelInfo(cl_kernel /* kernel */, + cl_kernel_info /* param_name */, + size_t /* param_value_size */, + void * /* param_value */, + size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetKernelWorkGroupInfo(cl_kernel /* kernel */, + cl_device_id /* device */, + cl_kernel_work_group_info /* param_name */, + size_t /* param_value_size */, + void * /* param_value */, + size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +// Event Object APIs +extern CL_API_ENTRY cl_int CL_API_CALL +clWaitForEvents(cl_uint /* num_events */, + const cl_event * /* event_list */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetEventInfo(cl_event /* event */, + cl_event_info /* param_name */, + size_t /* param_value_size */, + void * /* param_value */, + size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clRetainEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clReleaseEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0; + +// Profiling APIs +extern CL_API_ENTRY cl_int CL_API_CALL +clGetEventProfilingInfo(cl_event /* event */, + cl_profiling_info /* param_name */, + size_t /* param_value_size */, + void * /* param_value */, + size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +// Flush and Finish APIs +extern CL_API_ENTRY cl_int CL_API_CALL +clFlush(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clFinish(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; + +// Enqueued Commands APIs +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueReadBuffer(cl_command_queue /* command_queue */, + cl_mem /* buffer */, + cl_bool /* blocking_read */, + size_t /* offset */, + size_t /* cb */, + void * /* ptr */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueWriteBuffer(cl_command_queue /* command_queue */, + cl_mem /* buffer */, + cl_bool /* blocking_write */, + size_t /* offset */, + size_t /* cb */, + const void * /* ptr */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueCopyBuffer(cl_command_queue /* command_queue */, + cl_mem /* src_buffer */, + cl_mem /* dst_buffer */, + size_t /* src_offset */, + size_t /* dst_offset */, + size_t /* cb */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueReadImage(cl_command_queue /* command_queue */, + cl_mem /* image */, + cl_bool /* blocking_read */, + const size_t * /* origin[3] */, + const size_t * /* region[3] */, + size_t /* row_pitch */, + size_t /* slice_pitch */, + void * /* ptr */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueWriteImage(cl_command_queue /* command_queue */, + cl_mem /* image */, + cl_bool /* blocking_write */, + const size_t * /* origin[3] */, + const size_t * /* region[3] */, + size_t /* input_row_pitch */, + size_t /* input_slice_pitch */, + const void * /* ptr */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueCopyImage(cl_command_queue /* command_queue */, + cl_mem /* src_image */, + cl_mem /* dst_image */, + const size_t * /* src_origin[3] */, + const size_t * /* dst_origin[3] */, + const size_t * /* region[3] */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueCopyImageToBuffer(cl_command_queue /* command_queue */, + cl_mem /* src_image */, + cl_mem /* dst_buffer */, + const size_t * /* src_origin[3] */, + const size_t * /* region[3] */, + size_t /* dst_offset */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueCopyBufferToImage(cl_command_queue /* command_queue */, + cl_mem /* src_buffer */, + cl_mem /* dst_image */, + size_t /* src_offset */, + const size_t * /* dst_origin[3] */, + const size_t * /* region[3] */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY void * CL_API_CALL +clEnqueueMapBuffer(cl_command_queue /* command_queue */, + cl_mem /* buffer */, + cl_bool /* blocking_map */, + cl_map_flags /* map_flags */, + size_t /* offset */, + size_t /* cb */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY void * CL_API_CALL +clEnqueueMapImage(cl_command_queue /* command_queue */, + cl_mem /* image */, + cl_bool /* blocking_map */, + cl_map_flags /* map_flags */, + const size_t * /* origin[3] */, + const size_t * /* region[3] */, + size_t * /* image_row_pitch */, + size_t * /* image_slice_pitch */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueUnmapMemObject(cl_command_queue /* command_queue */, + cl_mem /* memobj */, + void * /* mapped_ptr */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueNDRangeKernel(cl_command_queue /* command_queue */, + cl_kernel /* kernel */, + cl_uint /* work_dim */, + const size_t * /* global_work_offset */, + const size_t * /* global_work_size */, + const size_t * /* local_work_size */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueTask(cl_command_queue /* command_queue */, + cl_kernel /* kernel */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueNativeKernel(cl_command_queue /* command_queue */, + void (*user_func)(void *), + void * /* args */, + size_t /* cb_args */, + cl_uint /* num_mem_objects */, + const cl_mem * /* mem_list */, + const void ** /* args_mem_loc */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueMarker(cl_command_queue /* command_queue */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueWaitForEvents(cl_command_queue /* command_queue */, + cl_uint /* num_events */, + const cl_event * /* event_list */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueBarrier(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; + +#ifdef __cplusplus +} +#endif + +#endif // __OPENCL_CL_H + diff --git a/extern/bullet2/MiniCL/cl_MiniCL_Defs.h b/extern/bullet2/MiniCL/cl_MiniCL_Defs.h new file mode 100644 index 00000000000..cad0b2590cd --- /dev/null +++ b/extern/bullet2/MiniCL/cl_MiniCL_Defs.h @@ -0,0 +1,265 @@ +/* +Bullet Continuous Collision Detection and Physics Library, Copyright (c) 2007 Erwin Coumans + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +*/ + +#include +#include +#include "LinearMath/btScalar.h" + +#include "MiniCL/cl.h" + + +#define __kernel +#define __global +#define __local +#define get_global_id(a) __guid_arg +#define get_local_id(a) ((__guid_arg) % gMiniCLNumOutstandingTasks) +#define get_local_size(a) (gMiniCLNumOutstandingTasks) +#define get_group_id(a) ((__guid_arg) / gMiniCLNumOutstandingTasks) + +#define CLK_LOCAL_MEM_FENCE 0x01 +#define CLK_GLOBAL_MEM_FENCE 0x02 + +static void barrier(unsigned int a) +{ + // TODO : implement +} + +ATTRIBUTE_ALIGNED16(struct) float8 +{ + float s0; + float s1; + float s2; + float s3; + float s4; + float s5; + float s6; + float s7; + + float8(float scalar) + { + s0=s1=s2=s3=s4=s5=s6=s7=scalar; + } +}; + +ATTRIBUTE_ALIGNED16(struct) float4 +{ + float x,y,z,w; + float4() {} + float4(float v) + { + x = y = z = w = v; + } + float4 operator*(const float4& other) + { + float4 tmp; + tmp.x = x*other.x; + tmp.y = y*other.y; + tmp.z = z*other.z; + tmp.w = w*other.w; + return tmp; + } + + float4 operator*(const float& other) + { + float4 tmp; + tmp.x = x*other; + tmp.y = y*other; + tmp.z = z*other; + tmp.w = w*other; + return tmp; + } + + + + float4& operator+=(const float4& other) + { + x += other.x; + y += other.y; + z += other.z; + w += other.w; + return *this; + } + + float4& operator-=(const float4& other) + { + x -= other.x; + y -= other.y; + z -= other.z; + w -= other.w; + return *this; + } + + float4& operator *=(float scalar) + { + x *= scalar; + y *= scalar; + z *= scalar; + w *= scalar; + return (*this); + } + + + + + +}; + +static float4 fabs(const float4& a) +{ + float4 tmp; + tmp.x = a.x < 0.f ? 0.f : a.x; + tmp.y = a.y < 0.f ? 0.f : a.y; + tmp.z = a.z < 0.f ? 0.f : a.z; + tmp.w = a.w < 0.f ? 0.f : a.w; + return tmp; +} +static float4 operator+(const float4& a,const float4& b) +{ + float4 tmp; + tmp.x = a.x + b.x; + tmp.y = a.y + b.y; + tmp.z = a.z + b.z; + tmp.w = a.w + b.w; + return tmp; +} + +static float4 operator-(const float4& a,const float4& b) +{ + float4 tmp; + tmp.x = a.x - b.x; + tmp.y = a.y - b.y; + tmp.z = a.z - b.z; + tmp.w = a.w - b.w; + return tmp; +} +static float4 operator*(float a,const float4& b) +{ + float4 tmp; + tmp.x = a * b.x; + tmp.y = a * b.y; + tmp.z = a * b.z; + tmp.w = a * b.w; + return tmp; +} + + +static float dot(const float4&a ,const float4& b) +{ + float4 tmp; + tmp.x = a.x*b.x; + tmp.y = a.y*b.y; + tmp.z = a.z*b.z; + tmp.w = a.w*b.w; + return tmp.x+tmp.y+tmp.z+tmp.w; +} + +static float4 cross(const float4&a ,const float4& b) +{ + float4 tmp; + tmp.x = a.y*b.z - a.z*b.y; + tmp.y = -a.x*b.z + a.z*b.x; + tmp.z = a.x*b.y - a.y*b.x; + tmp.w = 0.f; + return tmp; +} + +static float max(float a, float b) +{ + return (a >= b) ? a : b; +} + + +static float min(float a, float b) +{ + return (a <= b) ? a : b; +} + +static float fmax(float a, float b) +{ + return (a >= b) ? a : b; +} + +static float fmin(float a, float b) +{ + return (a <= b) ? a : b; +} + +struct int2 +{ + int x,y; +}; + +struct uint2 +{ + unsigned int x,y; +}; + +//typedef int2 uint2; + +typedef unsigned int uint; + +struct int4 +{ + int x,y,z,w; +}; + +struct uint4 +{ + unsigned int x,y,z,w; + uint4() {} + uint4(uint val) { x = y = z = w = val; } + uint4& operator+=(const uint4& other) + { + x += other.x; + y += other.y; + z += other.z; + w += other.w; + return *this; + } +}; +static uint4 operator+(const uint4& a,const uint4& b) +{ + uint4 tmp; + tmp.x = a.x + b.x; + tmp.y = a.y + b.y; + tmp.z = a.z + b.z; + tmp.w = a.w + b.w; + return tmp; +} +static uint4 operator-(const uint4& a,const uint4& b) +{ + uint4 tmp; + tmp.x = a.x - b.x; + tmp.y = a.y - b.y; + tmp.z = a.z - b.z; + tmp.w = a.w - b.w; + return tmp; +} + +#define native_sqrt sqrtf +#define native_sin sinf +#define native_cos cosf +#define native_powr powf + +#define GUID_ARG ,int __guid_arg +#define GUID_ARG_VAL ,__guid_arg + + +#define as_int(a) (*((int*)&(a))) + +extern "C" int gMiniCLNumOutstandingTasks; +// extern "C" void __kernel_func(); + + diff --git a/extern/bullet2/MiniCL/cl_gl.h b/extern/bullet2/MiniCL/cl_gl.h new file mode 100644 index 00000000000..71bdaaa6ef5 --- /dev/null +++ b/extern/bullet2/MiniCL/cl_gl.h @@ -0,0 +1,113 @@ +/********************************************************************************** + * Copyright (c) 2008-2009 The Khronos Group Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and/or associated documentation files (the + * "Materials"), to deal in the Materials without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Materials, and to + * permit persons to whom the Materials are furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Materials. + * + * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. + **********************************************************************************/ + +#ifndef __OPENCL_CL_GL_H +#define __OPENCL_CL_GL_H + +#ifdef __APPLE__ +#include +#else +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +// NOTE: Make sure that appropriate GL header file is included separately + +typedef cl_uint cl_gl_object_type; +typedef cl_uint cl_gl_texture_info; +typedef cl_uint cl_gl_platform_info; + +// cl_gl_object_type +#define CL_GL_OBJECT_BUFFER 0x2000 +#define CL_GL_OBJECT_TEXTURE2D 0x2001 +#define CL_GL_OBJECT_TEXTURE3D 0x2002 +#define CL_GL_OBJECT_RENDERBUFFER 0x2003 + +// cl_gl_texture_info +#define CL_GL_TEXTURE_TARGET 0x2004 +#define CL_GL_MIPMAP_LEVEL 0x2005 + +extern CL_API_ENTRY cl_mem CL_API_CALL +clCreateFromGLBuffer(cl_context /* context */, + cl_mem_flags /* flags */, + GLuint /* bufobj */, + int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_mem CL_API_CALL +clCreateFromGLTexture2D(cl_context /* context */, + cl_mem_flags /* flags */, + GLenum /* target */, + GLint /* miplevel */, + GLuint /* texture */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_mem CL_API_CALL +clCreateFromGLTexture3D(cl_context /* context */, + cl_mem_flags /* flags */, + GLenum /* target */, + GLint /* miplevel */, + GLuint /* texture */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_mem CL_API_CALL +clCreateFromGLRenderbuffer(cl_context /* context */, + cl_mem_flags /* flags */, + GLuint /* renderbuffer */, + cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetGLObjectInfo(cl_mem /* memobj */, + cl_gl_object_type * /* gl_object_type */, + GLuint * /* gl_object_name */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clGetGLTextureInfo(cl_mem /* memobj */, + cl_gl_texture_info /* param_name */, + size_t /* param_value_size */, + void * /* param_value */, + size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueAcquireGLObjects(cl_command_queue /* command_queue */, + cl_uint /* num_objects */, + const cl_mem * /* mem_objects */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueReleaseGLObjects(cl_command_queue /* command_queue */, + cl_uint /* num_objects */, + const cl_mem * /* mem_objects */, + cl_uint /* num_events_in_wait_list */, + const cl_event * /* event_wait_list */, + cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; + +#ifdef __cplusplus +} +#endif + +#endif // __OPENCL_CL_GL_H diff --git a/extern/bullet2/MiniCL/cl_platform.h b/extern/bullet2/MiniCL/cl_platform.h new file mode 100644 index 00000000000..3d372e3058d --- /dev/null +++ b/extern/bullet2/MiniCL/cl_platform.h @@ -0,0 +1,254 @@ +/********************************************************************************** + * Copyright (c) 2008-2009 The Khronos Group Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and/or associated documentation files (the + * "Materials"), to deal in the Materials without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Materials, and to + * permit persons to whom the Materials are furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Materials. + * + * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. + **********************************************************************************/ + +#ifndef __CL_PLATFORM_H +#define __CL_PLATFORM_H + +#define CL_PLATFORM_MINI_CL 0x12345 + +struct MiniCLKernelDesc +{ + MiniCLKernelDesc(void* pCode, char* pName); +}; + +#define MINICL_REGISTER(__kernel_func) static MiniCLKernelDesc __kernel_func##Desc((void*)__kernel_func, #__kernel_func); + + +#ifdef __APPLE__ + /* Contains #defines for AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER below */ + #include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define CL_API_ENTRY +#define CL_API_CALL +#ifdef __APPLE__ +#define CL_API_SUFFIX__VERSION_1_0 // AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER +#define CL_EXTENSION_WEAK_LINK __attribute__((weak_import)) +#else +#define CL_API_SUFFIX__VERSION_1_0 +#define CL_EXTENSION_WEAK_LINK +#endif + +#if defined (_WIN32) && ! defined (__MINGW32__) +typedef signed __int8 int8_t; +typedef unsigned __int8 uint8_t; +typedef signed __int16 int16_t; +typedef unsigned __int16 uint16_t; +typedef signed __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef signed __int64 int64_t; +typedef unsigned __int64 uint64_t; + +typedef int8_t cl_char; +typedef uint8_t cl_uchar; +typedef int16_t cl_short ; +typedef uint16_t cl_ushort ; +typedef int32_t cl_int ; +typedef uint32_t cl_uint ; +typedef int64_t cl_long ; +typedef uint64_t cl_ulong ; + +typedef uint16_t cl_half ; +typedef float cl_float ; +typedef double cl_double ; + + +typedef int8_t cl_char2[2] ; +typedef int8_t cl_char4[4] ; +typedef int8_t cl_char8[8] ; +typedef int8_t cl_char16[16] ; +typedef uint8_t cl_uchar2[2] ; +typedef uint8_t cl_uchar4[4] ; +typedef uint8_t cl_uchar8[8] ; +typedef uint8_t cl_uchar16[16] ; + +typedef int16_t cl_short2[2] ; +typedef int16_t cl_short4[4] ; +typedef int16_t cl_short8[8] ; +typedef int16_t cl_short16[16] ; +typedef uint16_t cl_ushort2[2] ; +typedef uint16_t cl_ushort4[4] ; +typedef uint16_t cl_ushort8[8] ; +typedef uint16_t cl_ushort16[16] ; + +typedef int32_t cl_int2[2] ; +typedef int32_t cl_int4[4] ; +typedef int32_t cl_int8[8] ; +typedef int32_t cl_int16[16] ; +typedef uint32_t cl_uint2[2] ; +typedef uint32_t cl_uint4[4] ; +typedef uint32_t cl_uint8[8] ; +typedef uint32_t cl_uint16[16] ; + +typedef int64_t cl_long2[2] ; +typedef int64_t cl_long4[4] ; +typedef int64_t cl_long8[8] ; +typedef int64_t cl_long16[16] ; +typedef uint64_t cl_ulong2[2] ; +typedef uint64_t cl_ulong4[4] ; +typedef uint64_t cl_ulong8[8] ; +typedef uint64_t cl_ulong16[16] ; + +typedef float cl_float2[2] ; +typedef float cl_float4[4] ; +typedef float cl_float8[8] ; +typedef float cl_float16[16] ; + +typedef double cl_double2[2] ; +typedef double cl_double4[4] ; +typedef double cl_double8[8] ; +typedef double cl_double16[16] ; + + +#else +#include + +/* scalar types */ +typedef int8_t cl_char; +typedef uint8_t cl_uchar; +typedef int16_t cl_short __attribute__((aligned(2))); +typedef uint16_t cl_ushort __attribute__((aligned(2))); +typedef int32_t cl_int __attribute__((aligned(4))); +typedef uint32_t cl_uint __attribute__((aligned(4))); +typedef int64_t cl_long __attribute__((aligned(8))); +typedef uint64_t cl_ulong __attribute__((aligned(8))); + +typedef uint16_t cl_half __attribute__((aligned(2))); +typedef float cl_float __attribute__((aligned(4))); +typedef double cl_double __attribute__((aligned(8))); + + +/* + * Vector types + * + * Note: OpenCL requires that all types be naturally aligned. + * This means that vector types must be naturally aligned. + * For example, a vector of four floats must be aligned to + * a 16 byte boundary (calculated as 4 * the natural 4-byte + * alignment of the float). The alignment qualifiers here + * will only function properly if your compiler supports them + * and if you don't actively work to defeat them. For example, + * in order for a cl_float4 to be 16 byte aligned in a struct, + * the start of the struct must itself be 16-byte aligned. + * + * Maintaining proper alignment is the user's responsibility. + */ +typedef int8_t cl_char2[2] __attribute__((aligned(2))); +typedef int8_t cl_char4[4] __attribute__((aligned(4))); +typedef int8_t cl_char8[8] __attribute__((aligned(8))); +typedef int8_t cl_char16[16] __attribute__((aligned(16))); +typedef uint8_t cl_uchar2[2] __attribute__((aligned(2))); +typedef uint8_t cl_uchar4[4] __attribute__((aligned(4))); +typedef uint8_t cl_uchar8[8] __attribute__((aligned(8))); +typedef uint8_t cl_uchar16[16] __attribute__((aligned(16))); + +typedef int16_t cl_short2[2] __attribute__((aligned(4))); +typedef int16_t cl_short4[4] __attribute__((aligned(8))); +typedef int16_t cl_short8[8] __attribute__((aligned(16))); +typedef int16_t cl_short16[16] __attribute__((aligned(32))); +typedef uint16_t cl_ushort2[2] __attribute__((aligned(4))); +typedef uint16_t cl_ushort4[4] __attribute__((aligned(8))); +typedef uint16_t cl_ushort8[8] __attribute__((aligned(16))); +typedef uint16_t cl_ushort16[16] __attribute__((aligned(32))); + +typedef int32_t cl_int2[2] __attribute__((aligned(8))); +typedef int32_t cl_int4[4] __attribute__((aligned(16))); +typedef int32_t cl_int8[8] __attribute__((aligned(32))); +typedef int32_t cl_int16[16] __attribute__((aligned(64))); +typedef uint32_t cl_uint2[2] __attribute__((aligned(8))); +typedef uint32_t cl_uint4[4] __attribute__((aligned(16))); +typedef uint32_t cl_uint8[8] __attribute__((aligned(32))); +typedef uint32_t cl_uint16[16] __attribute__((aligned(64))); + +typedef int64_t cl_long2[2] __attribute__((aligned(16))); +typedef int64_t cl_long4[4] __attribute__((aligned(32))); +typedef int64_t cl_long8[8] __attribute__((aligned(64))); +typedef int64_t cl_long16[16] __attribute__((aligned(128))); +typedef uint64_t cl_ulong2[2] __attribute__((aligned(16))); +typedef uint64_t cl_ulong4[4] __attribute__((aligned(32))); +typedef uint64_t cl_ulong8[8] __attribute__((aligned(64))); +typedef uint64_t cl_ulong16[16] __attribute__((aligned(128))); + +typedef float cl_float2[2] __attribute__((aligned(8))); +typedef float cl_float4[4] __attribute__((aligned(16))); +typedef float cl_float8[8] __attribute__((aligned(32))); +typedef float cl_float16[16] __attribute__((aligned(64))); + +typedef double cl_double2[2] __attribute__((aligned(16))); +typedef double cl_double4[4] __attribute__((aligned(32))); +typedef double cl_double8[8] __attribute__((aligned(64))); +typedef double cl_double16[16] __attribute__((aligned(128))); +#endif + +#include + +/* and a few goodies to go with them */ +#define CL_CHAR_BIT 8 +#define CL_SCHAR_MAX 127 +#define CL_SCHAR_MIN (-127-1) +#define CL_CHAR_MAX CL_SCHAR_MAX +#define CL_CHAR_MIN CL_SCHAR_MIN +#define CL_UCHAR_MAX 255 +#define CL_SHRT_MAX 32767 +#define CL_SHRT_MIN (-32767-1) +#define CL_USHRT_MAX 65535 +#define CL_INT_MAX 2147483647 +#define CL_INT_MIN (-2147483647-1) +#define CL_UINT_MAX 0xffffffffU +#define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL) +#define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL) +#define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL) + +#define CL_FLT_DIG 6 +#define CL_FLT_MANT_DIG 24 +#define CL_FLT_MAX_10_EXP +38 +#define CL_FLT_MAX_EXP +128 +#define CL_FLT_MIN_10_EXP -37 +#define CL_FLT_MIN_EXP -125 +#define CL_FLT_RADIX 2 +#define CL_FLT_MAX 0x1.fffffep127f +#define CL_FLT_MIN 0x1.0p-126f +#define CL_FLT_EPSILON 0x1.0p-23f + +#define CL_DBL_DIG 15 +#define CL_DBL_MANT_DIG 53 +#define CL_DBL_MAX_10_EXP +308 +#define CL_DBL_MAX_EXP +1024 +#define CL_DBL_MIN_10_EXP -307 +#define CL_DBL_MIN_EXP -1021 +#define CL_DBL_RADIX 2 +#define CL_DBL_MAX 0x1.fffffffffffffp1023 +#define CL_DBL_MIN 0x1.0p-1022 +#define CL_DBL_EPSILON 0x1.0p-52 + +/* There are no vector types for half */ + +#ifdef __cplusplus +} +#endif + +#endif // __CL_PLATFORM_H diff --git a/extern/bullet2/SConscript b/extern/bullet2/SConscript new file mode 100644 index 00000000000..5cb9185d6a1 --- /dev/null +++ b/extern/bullet2/SConscript @@ -0,0 +1,45 @@ +#!/usr/bin/python +import sys +import os + +Import('env') + +defs = '' +cflags = [] + +if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): + defs += ' WIN32 NDEBUG _WINDOWS' + #cflags += ['/MT', '/W3', '/GX', '/O2', '/Op'] + cflags += ['/MT', '/W3', '/GX', '/Og', '/Ot', '/Ob1', '/Op', '/G6', '/O3', '/EHcs'] +elif env['OURPLATFORM']=='win32-mingw': + defs += ' NDEBUG' + cflags += ['-O2'] +elif sys.platform=='linux2' or sys.platform=='linux-i386' or sys.platform=='freebsd4' or sys.platform=='freebsd5': + defs += ' NDEBUG' + cflags += ['-O2'] +elif sys.platform=='darwin': + defs += ' NDEBUG' + cflags += ['-O2','-pipe', '-fPIC', '-funsigned-char', '-ffast-math'] + +linearmath_src = env.Glob("LinearMath/*.cpp") + +bulletdyn_src = env.Glob("BulletDynamics/Vehicle/*.cpp") + env.Glob("BulletDynamics/ConstraintSolver/*.cpp") + env.Glob("BulletDynamics/Dynamics/*.cpp") + +collision_broadphase_src = env.Glob("BulletCollision/BroadphaseCollision/*.cpp") +collision_dispatch_src = env.Glob("BulletCollision/CollisionDispatch/*.cpp") +collision_gimpact_src = env.Glob("BulletCollision/Gimpact/*.cpp") +collision_shapes_src = env.Glob("BulletCollision/CollisionShapes/*.cpp") +collision_narrowphase_src = env.Glob("BulletCollision/NarrowPhaseCollision/*.cpp") + +softbody_src = env.Glob("BulletSoftBody/*.cpp") + +incs = '. BulletCollision BulletDynamics LinearMath BulletSoftBody' + +env.BlenderLib ( libname = 'extern_bullet2linmath', sources=linearmath_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[20,137], compileflags=cflags ) +env.BlenderLib ( libname = 'extern_bullet2dynamics', sources=bulletdyn_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[19,136], compileflags=cflags ) +env.BlenderLib ( libname = 'extern_bullet2collision_broadphase', sources=collision_broadphase_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[25,145], compileflags=cflags ) +env.BlenderLib ( libname = 'extern_bullet2collision_dispatch', sources=collision_dispatch_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[20,138], compileflags=cflags ) +env.BlenderLib ( libname = 'extern_bullet2collision_gimpact', sources=collision_gimpact_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[20,138], compileflags=cflags ) +env.BlenderLib ( libname = 'extern_bullet2collision_shapes', sources=collision_shapes_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[20,138], compileflags=cflags ) +env.BlenderLib ( libname = 'extern_bullet2collision_narrowphase', sources=collision_narrowphase_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[20,138], compileflags=cflags ) +env.BlenderLib ( libname = 'extern_bullet2softbody', sources=softbody_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[30,135], compileflags=cflags ) diff --git a/extern/bullet2/btBulletCollisionCommon.h b/extern/bullet2/btBulletCollisionCommon.h new file mode 100644 index 00000000000..9a7bffbb97d --- /dev/null +++ b/extern/bullet2/btBulletCollisionCommon.h @@ -0,0 +1,68 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BULLET_COLLISION_COMMON_H +#define BULLET_COLLISION_COMMON_H + +///Common headerfile includes for Bullet Collision Detection + +///Bullet's btCollisionWorld and btCollisionObject definitions +#include "BulletCollision/CollisionDispatch/btCollisionWorld.h" +#include "BulletCollision/CollisionDispatch/btCollisionObject.h" + +///Collision Shapes +#include "BulletCollision/CollisionShapes/btBoxShape.h" +#include "BulletCollision/CollisionShapes/btSphereShape.h" +#include "BulletCollision/CollisionShapes/btCapsuleShape.h" +#include "BulletCollision/CollisionShapes/btCylinderShape.h" +#include "BulletCollision/CollisionShapes/btConeShape.h" +#include "BulletCollision/CollisionShapes/btStaticPlaneShape.h" +#include "BulletCollision/CollisionShapes/btConvexHullShape.h" +#include "BulletCollision/CollisionShapes/btTriangleMesh.h" +#include "BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h" +#include "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h" +#include "BulletCollision/CollisionShapes/btTriangleMeshShape.h" +#include "BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h" +#include "BulletCollision/CollisionShapes/btCompoundShape.h" +#include "BulletCollision/CollisionShapes/btTetrahedronShape.h" +#include "BulletCollision/CollisionShapes/btEmptyShape.h" +#include "BulletCollision/CollisionShapes/btMultiSphereShape.h" +#include "BulletCollision/CollisionShapes/btUniformScalingShape.h" + +///Narrowphase Collision Detector +#include "BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h" + +//btSphereBoxCollisionAlgorithm is broken, use gjk for now +//#include "BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h" +#include "BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h" + +///Dispatching and generation of collision pairs (broadphase) +#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" +#include "BulletCollision/BroadphaseCollision/btSimpleBroadphase.h" +#include "BulletCollision/BroadphaseCollision/btAxisSweep3.h" +#include "BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h" +#include "BulletCollision/BroadphaseCollision/btDbvtBroadphase.h" + +///Math library & Utils +#include "LinearMath/btQuaternion.h" +#include "LinearMath/btTransform.h" +#include "LinearMath/btDefaultMotionState.h" +#include "LinearMath/btQuickprof.h" +#include "LinearMath/btIDebugDraw.h" +#include "LinearMath/btSerializer.h" + + +#endif //BULLET_COLLISION_COMMON_H + diff --git a/extern/bullet2/btBulletDynamicsCommon.h b/extern/bullet2/btBulletDynamicsCommon.h new file mode 100644 index 00000000000..db8b37989f5 --- /dev/null +++ b/extern/bullet2/btBulletDynamicsCommon.h @@ -0,0 +1,49 @@ +/* +Bullet Continuous Collision Detection and Physics Library +Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef BULLET_DYNAMICS_COMMON_H +#define BULLET_DYNAMICS_COMMON_H + +///Common headerfile includes for Bullet Dynamics, including Collision Detection +#include "btBulletCollisionCommon.h" + +#include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h" +#include "BulletDynamics/Dynamics/btContinuousDynamicsWorld.h" + +#include "BulletDynamics/Dynamics/btSimpleDynamicsWorld.h" +#include "BulletDynamics/Dynamics/btRigidBody.h" + +#include "BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h" +#include "BulletDynamics/ConstraintSolver/btHingeConstraint.h" +#include "BulletDynamics/ConstraintSolver/btConeTwistConstraint.h" +#include "BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h" +#include "BulletDynamics/ConstraintSolver/btSliderConstraint.h" +#include "BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h" +#include "BulletDynamics/ConstraintSolver/btUniversalConstraint.h" +#include "BulletDynamics/ConstraintSolver/btHinge2Constraint.h" + +#include "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h" + + +///Vehicle simulation, with wheel contact simulated by raycasts +#include "BulletDynamics/Vehicle/btRaycastVehicle.h" + + + + + + +#endif //BULLET_DYNAMICS_COMMON_H + From 3398d901a17fbb093f593830b3ee40f32ada993c Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Thu, 17 Jun 2010 03:29:16 +0000 Subject: [PATCH 111/674] Revert changes back to original state, before 29506. --- extern/bullet2/Bullet-C-Api.h | 176 - .../BroadphaseCollision/btAxisSweep3.cpp | 37 - .../BroadphaseCollision/btAxisSweep3.h | 1051 ------ .../btBroadphaseInterface.h | 82 - .../BroadphaseCollision/btBroadphaseProxy.cpp | 17 - .../BroadphaseCollision/btBroadphaseProxy.h | 270 -- .../btCollisionAlgorithm.cpp | 23 - .../btCollisionAlgorithm.h | 80 - .../BroadphaseCollision/btDbvt.cpp | 1295 -------- .../BroadphaseCollision/btDbvt.h | 1256 ------- .../BroadphaseCollision/btDbvtBroadphase.cpp | 796 ----- .../BroadphaseCollision/btDbvtBroadphase.h | 146 - .../BroadphaseCollision/btDispatcher.cpp | 22 - .../BroadphaseCollision/btDispatcher.h | 106 - .../btMultiSapBroadphase.cpp | 489 --- .../btMultiSapBroadphase.h | 151 - .../btOverlappingPairCache.cpp | 633 ---- .../btOverlappingPairCache.h | 469 --- .../btOverlappingPairCallback.h | 40 - .../BroadphaseCollision/btQuantizedBvh.cpp | 1375 -------- .../BroadphaseCollision/btQuantizedBvh.h | 579 ---- .../btSimpleBroadphase.cpp | 349 -- .../BroadphaseCollision/btSimpleBroadphase.h | 171 - extern/bullet2/BulletCollision/CMakeLists.txt | 273 -- .../SphereTriangleDetector.cpp | 209 -- .../SphereTriangleDetector.h | 51 - .../btActivatingCollisionAlgorithm.cpp | 47 - .../btActivatingCollisionAlgorithm.h | 36 - .../btBox2dBox2dCollisionAlgorithm.cpp | 435 --- .../btBox2dBox2dCollisionAlgorithm.h | 66 - .../btBoxBoxCollisionAlgorithm.cpp | 85 - .../btBoxBoxCollisionAlgorithm.h | 66 - .../CollisionDispatch/btBoxBoxDetector.cpp | 704 ---- .../CollisionDispatch/btBoxBoxDetector.h | 44 - .../btCollisionConfiguration.h | 47 - .../CollisionDispatch/btCollisionCreateFunc.h | 45 - .../btCollisionDispatcher.cpp | 303 -- .../CollisionDispatch/btCollisionDispatcher.h | 159 - .../CollisionDispatch/btCollisionObject.cpp | 115 - .../CollisionDispatch/btCollisionObject.h | 508 --- .../CollisionDispatch/btCollisionWorld.cpp | 1416 -------- .../CollisionDispatch/btCollisionWorld.h | 470 --- .../btCompoundCollisionAlgorithm.cpp | 351 -- .../btCompoundCollisionAlgorithm.h | 86 - .../btConvex2dConvex2dAlgorithm.cpp | 247 -- .../btConvex2dConvex2dAlgorithm.h | 95 - .../btConvexConcaveCollisionAlgorithm.cpp | 321 -- .../btConvexConcaveCollisionAlgorithm.h | 116 - .../btConvexConvexAlgorithm.cpp | 574 ---- .../btConvexConvexAlgorithm.h | 109 - .../btConvexPlaneCollisionAlgorithm.cpp | 155 - .../btConvexPlaneCollisionAlgorithm.h | 84 - .../btDefaultCollisionConfiguration.cpp | 298 -- .../btDefaultCollisionConfiguration.h | 135 - .../btEmptyCollisionAlgorithm.cpp | 34 - .../btEmptyCollisionAlgorithm.h | 54 - .../CollisionDispatch/btGhostObject.cpp | 171 - .../CollisionDispatch/btGhostObject.h | 175 - .../btInternalEdgeUtility.cpp | 772 ----- .../CollisionDispatch/btInternalEdgeUtility.h | 46 - .../CollisionDispatch/btManifoldResult.cpp | 134 - .../CollisionDispatch/btManifoldResult.h | 128 - .../btSimulationIslandManager.cpp | 392 --- .../btSimulationIslandManager.h | 81 - .../btSphereBoxCollisionAlgorithm.cpp | 260 -- .../btSphereBoxCollisionAlgorithm.h | 75 - .../btSphereSphereCollisionAlgorithm.cpp | 105 - .../btSphereSphereCollisionAlgorithm.h | 66 - .../btSphereTriangleCollisionAlgorithm.cpp | 84 - .../btSphereTriangleCollisionAlgorithm.h | 69 - .../CollisionDispatch/btUnionFind.cpp | 81 - .../CollisionDispatch/btUnionFind.h | 126 - .../CollisionShapes/btBox2dShape.cpp | 42 - .../CollisionShapes/btBox2dShape.h | 363 -- .../CollisionShapes/btBoxShape.cpp | 41 - .../CollisionShapes/btBoxShape.h | 318 -- .../btBvhTriangleMeshShape.cpp | 466 --- .../CollisionShapes/btBvhTriangleMeshShape.h | 139 - .../CollisionShapes/btCapsuleShape.cpp | 171 - .../CollisionShapes/btCapsuleShape.h | 173 - .../CollisionShapes/btCollisionMargin.h | 26 - .../CollisionShapes/btCollisionShape.cpp | 119 - .../CollisionShapes/btCollisionShape.h | 150 - .../CollisionShapes/btCompoundShape.cpp | 323 -- .../CollisionShapes/btCompoundShape.h | 206 -- .../CollisionShapes/btConcaveShape.cpp | 27 - .../CollisionShapes/btConcaveShape.h | 60 - .../CollisionShapes/btConeShape.cpp | 133 - .../CollisionShapes/btConeShape.h | 100 - .../CollisionShapes/btConvex2dShape.cpp | 92 - .../CollisionShapes/btConvex2dShape.h | 80 - .../CollisionShapes/btConvexHullShape.cpp | 223 -- .../CollisionShapes/btConvexHullShape.h | 120 - .../CollisionShapes/btConvexInternalShape.cpp | 151 - .../CollisionShapes/btConvexInternalShape.h | 202 -- .../btConvexPointCloudShape.cpp | 157 - .../CollisionShapes/btConvexPointCloudShape.h | 105 - .../CollisionShapes/btConvexShape.cpp | 429 --- .../CollisionShapes/btConvexShape.h | 82 - .../btConvexTriangleMeshShape.cpp | 315 -- .../btConvexTriangleMeshShape.h | 75 - .../CollisionShapes/btCylinderShape.cpp | 222 -- .../CollisionShapes/btCylinderShape.h | 192 -- .../CollisionShapes/btEmptyShape.cpp | 50 - .../CollisionShapes/btEmptyShape.h | 70 - .../btHeightfieldTerrainShape.cpp | 411 --- .../btHeightfieldTerrainShape.h | 161 - .../CollisionShapes/btMaterial.h | 35 - .../CollisionShapes/btMinkowskiSumShape.cpp | 60 - .../CollisionShapes/btMinkowskiSumShape.h | 60 - .../CollisionShapes/btMultiSphereShape.cpp | 167 - .../CollisionShapes/btMultiSphereShape.h | 99 - .../btMultimaterialTriangleMeshShape.cpp | 45 - .../btMultimaterialTriangleMeshShape.h | 121 - .../CollisionShapes/btOptimizedBvh.cpp | 391 --- .../CollisionShapes/btOptimizedBvh.h | 65 - .../btPolyhedralConvexShape.cpp | 193 -- .../CollisionShapes/btPolyhedralConvexShape.h | 98 - .../btScaledBvhTriangleMeshShape.cpp | 121 - .../btScaledBvhTriangleMeshShape.h | 62 - .../CollisionShapes/btShapeHull.cpp | 170 - .../CollisionShapes/btShapeHull.h | 59 - .../CollisionShapes/btSphereShape.cpp | 71 - .../CollisionShapes/btSphereShape.h | 73 - .../CollisionShapes/btStaticPlaneShape.cpp | 107 - .../CollisionShapes/btStaticPlaneShape.h | 103 - .../btStridingMeshInterface.cpp | 331 -- .../CollisionShapes/btStridingMeshInterface.h | 154 - .../CollisionShapes/btTetrahedronShape.cpp | 218 -- .../CollisionShapes/btTetrahedronShape.h | 74 - .../CollisionShapes/btTriangleBuffer.cpp | 35 - .../CollisionShapes/btTriangleBuffer.h | 69 - .../CollisionShapes/btTriangleCallback.cpp | 28 - .../CollisionShapes/btTriangleCallback.h | 42 - .../btTriangleIndexVertexArray.cpp | 95 - .../btTriangleIndexVertexArray.h | 131 - .../btTriangleIndexVertexMaterialArray.cpp | 86 - .../btTriangleIndexVertexMaterialArray.h | 84 - .../CollisionShapes/btTriangleInfoMap.h | 238 -- .../CollisionShapes/btTriangleMesh.cpp | 140 - .../CollisionShapes/btTriangleMesh.h | 69 - .../CollisionShapes/btTriangleMeshShape.cpp | 211 -- .../CollisionShapes/btTriangleMeshShape.h | 89 - .../CollisionShapes/btTriangleShape.h | 182 - .../CollisionShapes/btUniformScalingShape.cpp | 115 - .../CollisionShapes/btUniformScalingShape.h | 87 - extern/bullet2/BulletCollision/Doxyfile | 746 ----- .../BulletCollision/Gimpact/btBoxCollision.h | 647 ---- .../BulletCollision/Gimpact/btClipPolygon.h | 182 - .../Gimpact/btContactProcessing.cpp | 181 - .../Gimpact/btContactProcessing.h | 145 - .../BulletCollision/Gimpact/btGImpactBvh.cpp | 498 --- .../BulletCollision/Gimpact/btGImpactBvh.h | 396 --- .../Gimpact/btGImpactCollisionAlgorithm.cpp | 904 ----- .../Gimpact/btGImpactCollisionAlgorithm.h | 306 -- .../Gimpact/btGImpactMassUtil.h | 60 - .../Gimpact/btGImpactQuantizedBvh.cpp | 528 --- .../Gimpact/btGImpactQuantizedBvh.h | 372 --- .../Gimpact/btGImpactShape.cpp | 203 -- .../BulletCollision/Gimpact/btGImpactShape.h | 1171 ------- .../Gimpact/btGenericPoolAllocator.cpp | 283 -- .../Gimpact/btGenericPoolAllocator.h | 163 - .../Gimpact/btGeometryOperations.h | 212 -- .../BulletCollision/Gimpact/btQuantization.h | 88 - .../Gimpact/btTriangleShapeEx.cpp | 218 -- .../Gimpact/btTriangleShapeEx.h | 180 - .../BulletCollision/Gimpact/gim_array.h | 326 -- .../Gimpact/gim_basic_geometry_operations.h | 543 --- .../BulletCollision/Gimpact/gim_bitset.h | 123 - .../Gimpact/gim_box_collision.h | 590 ---- .../BulletCollision/Gimpact/gim_box_set.cpp | 182 - .../BulletCollision/Gimpact/gim_box_set.h | 674 ---- .../Gimpact/gim_clip_polygon.h | 210 -- .../BulletCollision/Gimpact/gim_contact.cpp | 146 - .../BulletCollision/Gimpact/gim_contact.h | 164 - .../BulletCollision/Gimpact/gim_geom_types.h | 97 - .../BulletCollision/Gimpact/gim_geometry.h | 42 - .../BulletCollision/Gimpact/gim_hash_table.h | 902 ----- .../BulletCollision/Gimpact/gim_linear_math.h | 1573 --------- .../BulletCollision/Gimpact/gim_math.h | 157 - .../BulletCollision/Gimpact/gim_memory.cpp | 135 - .../BulletCollision/Gimpact/gim_memory.h | 190 -- .../BulletCollision/Gimpact/gim_radixsort.h | 406 --- .../Gimpact/gim_tri_collision.cpp | 640 ---- .../Gimpact/gim_tri_collision.h | 379 --- .../btContinuousConvexCollision.cpp | 236 -- .../btContinuousConvexCollision.h | 52 - .../NarrowPhaseCollision/btConvexCast.cpp | 20 - .../NarrowPhaseCollision/btConvexCast.h | 73 - .../btConvexPenetrationDepthSolver.h | 42 - .../btDiscreteCollisionDetectorInterface.h | 89 - .../NarrowPhaseCollision/btGjkConvexCast.cpp | 176 - .../NarrowPhaseCollision/btGjkConvexCast.h | 50 - .../NarrowPhaseCollision/btGjkEpa2.cpp | 989 ------ .../NarrowPhaseCollision/btGjkEpa2.h | 73 - .../btGjkEpaPenetrationDepthSolver.cpp | 66 - .../btGjkEpaPenetrationDepthSolver.h | 43 - .../btGjkPairDetector.cpp | 456 --- .../NarrowPhaseCollision/btGjkPairDetector.h | 103 - .../NarrowPhaseCollision/btManifoldPoint.h | 138 - .../btMinkowskiPenetrationDepthSolver.cpp | 362 -- .../btMinkowskiPenetrationDepthSolver.h | 40 - .../btPersistentManifold.cpp | 260 -- .../btPersistentManifold.h | 208 -- .../NarrowPhaseCollision/btPointCollector.h | 64 - .../btRaycastCallback.cpp | 175 - .../NarrowPhaseCollision/btRaycastCallback.h | 71 - .../btSimplexSolverInterface.h | 63 - .../btSubSimplexConvexCast.cpp | 160 - .../btSubSimplexConvexCast.h | 50 - .../btVoronoiSimplexSolver.cpp | 609 ---- .../btVoronoiSimplexSolver.h | 178 - extern/bullet2/BulletDynamics/CMakeLists.txt | 112 - .../btCharacterControllerInterface.h | 45 - .../btKinematicCharacterController.cpp | 553 ---- .../btKinematicCharacterController.h | 145 - .../btConeTwistConstraint.cpp | 1117 ------- .../ConstraintSolver/btConeTwistConstraint.h | 332 -- .../ConstraintSolver/btConstraintSolver.h | 52 - .../ConstraintSolver/btContactConstraint.cpp | 134 - .../ConstraintSolver/btContactConstraint.h | 68 - .../ConstraintSolver/btContactSolverInfo.h | 87 - .../btGeneric6DofConstraint.cpp | 1012 ------ .../btGeneric6DofConstraint.h | 588 ---- .../btGeneric6DofSpringConstraint.cpp | 146 - .../btGeneric6DofSpringConstraint.h | 54 - .../ConstraintSolver/btHinge2Constraint.cpp | 66 - .../ConstraintSolver/btHinge2Constraint.h | 58 - .../ConstraintSolver/btHingeConstraint.cpp | 992 ------ .../ConstraintSolver/btHingeConstraint.h | 332 -- .../ConstraintSolver/btJacobianEntry.h | 156 - .../btPoint2PointConstraint.cpp | 229 -- .../btPoint2PointConstraint.h | 161 - .../btSequentialImpulseConstraintSolver.cpp | 1174 ------- .../btSequentialImpulseConstraintSolver.h | 132 - .../ConstraintSolver/btSliderConstraint.cpp | 857 ----- .../ConstraintSolver/btSliderConstraint.h | 321 -- .../btSolve2LinearConstraint.cpp | 255 -- .../btSolve2LinearConstraint.h | 107 - .../ConstraintSolver/btSolverBody.h | 191 -- .../ConstraintSolver/btSolverConstraint.h | 96 - .../ConstraintSolver/btTypedConstraint.cpp | 136 - .../ConstraintSolver/btTypedConstraint.h | 302 -- .../btUniversalConstraint.cpp | 63 - .../ConstraintSolver/btUniversalConstraint.h | 60 - .../BulletDynamics/Dynamics/Bullet-C-API.cpp | 405 --- .../Dynamics/btActionInterface.h | 50 - .../Dynamics/btContinuousDynamicsWorld.cpp | 196 -- .../Dynamics/btContinuousDynamicsWorld.h | 46 - .../Dynamics/btDiscreteDynamicsWorld.cpp | 1161 ------- .../Dynamics/btDiscreteDynamicsWorld.h | 198 -- .../BulletDynamics/Dynamics/btDynamicsWorld.h | 148 - .../BulletDynamics/Dynamics/btRigidBody.cpp | 400 --- .../BulletDynamics/Dynamics/btRigidBody.h | 670 ---- .../Dynamics/btSimpleDynamicsWorld.cpp | 253 -- .../Dynamics/btSimpleDynamicsWorld.h | 81 - .../Vehicle/btRaycastVehicle.cpp | 758 ----- .../BulletDynamics/Vehicle/btRaycastVehicle.h | 236 -- .../Vehicle/btVehicleRaycaster.h | 35 - .../BulletDynamics/Vehicle/btWheelInfo.cpp | 56 - .../BulletDynamics/Vehicle/btWheelInfo.h | 119 - .../BulletMultiThreaded/CMakeLists.txt | 92 - .../BulletMultiThreaded/Makefile.original | 187 -- extern/bullet2/BulletMultiThreaded/MiniCL.cpp | 517 --- .../MiniCLTask/MiniCLTask.cpp | 74 - .../MiniCLTask/MiniCLTask.h | 62 - .../MiniCLTaskScheduler.cpp | 519 --- .../BulletMultiThreaded/MiniCLTaskScheduler.h | 194 -- .../BulletMultiThreaded/PlatformDefinitions.h | 84 - .../PosixThreadSupport.cpp | 249 -- .../BulletMultiThreaded/PosixThreadSupport.h | 124 - .../BulletMultiThreaded/PpuAddressSpace.h | 20 - .../SequentialThreadSupport.cpp | 93 - .../SequentialThreadSupport.h | 92 - .../SpuCollisionObjectWrapper.cpp | 48 - .../SpuCollisionObjectWrapper.h | 40 - .../SpuCollisionTaskProcess.cpp | 318 -- .../SpuCollisionTaskProcess.h | 163 - .../SpuContactManifoldCollisionAlgorithm.cpp | 69 - .../SpuContactManifoldCollisionAlgorithm.h | 120 - .../BulletMultiThreaded/SpuDoubleBuffer.h | 110 - .../BulletMultiThreaded/SpuFakeDma.cpp | 211 -- .../bullet2/BulletMultiThreaded/SpuFakeDma.h | 135 - .../SpuGatheringCollisionDispatcher.cpp | 251 -- .../SpuGatheringCollisionDispatcher.h | 72 - .../BulletMultiThreaded/SpuLibspe2Support.cpp | 257 -- .../BulletMultiThreaded/SpuLibspe2Support.h | 180 - .../SpuNarrowPhaseCollisionTask/Box.h | 172 - .../SpuCollisionShapes.cpp | 302 -- .../SpuCollisionShapes.h | 126 - .../SpuContactResult.cpp | 242 -- .../SpuContactResult.h | 106 - .../SpuConvexPenetrationDepthSolver.h | 51 - .../SpuGatheringCollisionTask.cpp | 1381 -------- .../SpuGatheringCollisionTask.h | 140 - .../SpuLocalSupport.h | 19 - .../SpuMinkowskiPenetrationDepthSolver.cpp | 348 -- .../SpuMinkowskiPenetrationDepthSolver.h | 48 - .../SpuPreferredPenetrationDirections.h | 70 - .../boxBoxDistance.cpp | 1155 ------- .../boxBoxDistance.h | 66 - .../SpuNarrowPhaseCollisionTask/readme.txt | 1 - .../SpuSampleTask/SpuSampleTask.cpp | 214 -- .../SpuSampleTask/SpuSampleTask.h | 54 - .../SpuSampleTask/readme.txt | 1 - .../SpuSampleTaskProcess.cpp | 222 -- .../SpuSampleTaskProcess.h | 153 - extern/bullet2/BulletMultiThreaded/SpuSync.h | 148 - .../Win32ThreadSupport.cpp | 262 -- .../BulletMultiThreaded/Win32ThreadSupport.h | 132 - .../btGpu3DGridBroadphase.cpp | 590 ---- .../btGpu3DGridBroadphase.h | 138 - .../btGpu3DGridBroadphaseSharedCode.h | 430 --- .../btGpu3DGridBroadphaseSharedDefs.h | 61 - .../btGpu3DGridBroadphaseSharedTypes.h | 67 - .../BulletMultiThreaded/btGpuDefines.h | 211 -- .../btGpuUtilsSharedCode.h | 55 - .../btGpuUtilsSharedDefs.h | 52 - .../btParallelConstraintSolver.cpp | 74 - .../btParallelConstraintSolver.h | 42 - .../btThreadSupportInterface.cpp | 22 - .../btThreadSupportInterface.h | 50 - .../vectormath/scalar/cpp/boolInVec.h | 225 -- .../vectormath/scalar/cpp/floatInVec.h | 343 -- .../vectormath/scalar/cpp/mat_aos.h | 1630 --------- .../vectormath/scalar/cpp/quat_aos.h | 433 --- .../vectormath/scalar/cpp/vec_aos.h | 1426 -------- .../vectormath/scalar/cpp/vectormath_aos.h | 1872 ----------- .../BulletMultiThreaded/vectormath2bullet.h | 80 - extern/bullet2/BulletSoftBody/CMakeLists.txt | 52 - extern/bullet2/BulletSoftBody/btSoftBody.cpp | 2931 ----------------- extern/bullet2/BulletSoftBody/btSoftBody.h | 891 ----- .../btSoftBodyConcaveCollisionAlgorithm.cpp | 368 --- .../btSoftBodyConcaveCollisionAlgorithm.h | 153 - .../BulletSoftBody/btSoftBodyHelpers.cpp | 1019 ------ .../BulletSoftBody/btSoftBodyHelpers.h | 143 - .../BulletSoftBody/btSoftBodyInternals.h | 931 ------ ...oftBodyRigidBodyCollisionConfiguration.cpp | 134 - ...tSoftBodyRigidBodyCollisionConfiguration.h | 48 - .../btSoftRigidCollisionAlgorithm.cpp | 82 - .../btSoftRigidCollisionAlgorithm.h | 75 - .../btSoftRigidDynamicsWorld.cpp | 292 -- .../BulletSoftBody/btSoftRigidDynamicsWorld.h | 97 - .../btSoftSoftCollisionAlgorithm.cpp | 46 - .../btSoftSoftCollisionAlgorithm.h | 69 - extern/bullet2/BulletSoftBody/btSparseSDF.h | 306 -- extern/bullet2/CMakeLists.txt | 47 +- extern/bullet2/LinearMath/CMakeLists.txt | 61 - extern/bullet2/LinearMath/btAabbUtil2.h | 236 -- .../bullet2/LinearMath/btAlignedAllocator.cpp | 205 -- .../bullet2/LinearMath/btAlignedAllocator.h | 107 - .../bullet2/LinearMath/btAlignedObjectArray.h | 464 --- extern/bullet2/LinearMath/btConvexHull.cpp | 1174 ------- extern/bullet2/LinearMath/btConvexHull.h | 241 -- .../bullet2/LinearMath/btDefaultMotionState.h | 40 - extern/bullet2/LinearMath/btGeometryUtil.cpp | 185 -- extern/bullet2/LinearMath/btGeometryUtil.h | 42 - extern/bullet2/LinearMath/btHashMap.h | 434 --- extern/bullet2/LinearMath/btIDebugDraw.h | 316 -- extern/bullet2/LinearMath/btList.h | 73 - extern/bullet2/LinearMath/btMatrix3x3.h | 688 ---- extern/bullet2/LinearMath/btMinMax.h | 69 - extern/bullet2/LinearMath/btMotionState.h | 40 - extern/bullet2/LinearMath/btPoolAllocator.h | 102 - extern/bullet2/LinearMath/btQuadWord.h | 180 - extern/bullet2/LinearMath/btQuaternion.h | 433 --- extern/bullet2/LinearMath/btQuickprof.cpp | 346 -- extern/bullet2/LinearMath/btQuickprof.h | 370 --- extern/bullet2/LinearMath/btRandom.h | 42 - extern/bullet2/LinearMath/btScalar.h | 517 --- extern/bullet2/LinearMath/btSerializer.cpp | 577 ---- extern/bullet2/LinearMath/btSerializer.h | 604 ---- extern/bullet2/LinearMath/btStackAlloc.h | 116 - extern/bullet2/LinearMath/btTransform.h | 307 -- extern/bullet2/LinearMath/btTransformUtil.h | 228 -- extern/bullet2/LinearMath/btVector3.h | 744 ----- extern/bullet2/Makefile | 51 +- extern/bullet2/MiniCL/cl.h | 865 ----- extern/bullet2/MiniCL/cl_MiniCL_Defs.h | 265 -- extern/bullet2/MiniCL/cl_gl.h | 113 - extern/bullet2/MiniCL/cl_platform.h | 254 -- extern/bullet2/SConscript | 45 - extern/bullet2/btBulletCollisionCommon.h | 68 - extern/bullet2/btBulletDynamicsCommon.h | 49 - 384 files changed, 65 insertions(+), 101206 deletions(-) delete mode 100644 extern/bullet2/Bullet-C-Api.h delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btAxisSweep3.h delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btDbvt.cpp delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btDbvt.h delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btDispatcher.cpp delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btDispatcher.h delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btQuantizedBvh.h delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp delete mode 100644 extern/bullet2/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h delete mode 100644 extern/bullet2/BulletCollision/CMakeLists.txt delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/SphereTriangleDetector.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxDetector.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCollisionConfiguration.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCollisionDispatcher.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCollisionObject.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCollisionObject.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCollisionWorld.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCollisionWorld.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btGhostObject.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btGhostObject.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btManifoldResult.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btManifoldResult.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btSimulationIslandManager.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btUnionFind.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionDispatch/btUnionFind.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btBox2dShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btBox2dShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btBoxShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btBoxShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btCapsuleShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btCapsuleShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btCollisionMargin.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btCollisionShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btCollisionShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btCompoundShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btCompoundShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConcaveShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConcaveShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConeShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConeShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvex2dShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvex2dShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexHullShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexHullShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexInternalShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexInternalShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexPointCloudShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btCylinderShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btCylinderShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btEmptyShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btEmptyShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btMaterial.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btMinkowskiSumShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btMultiSphereShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btMultiSphereShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btOptimizedBvh.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btOptimizedBvh.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btShapeHull.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btShapeHull.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btSphereShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btSphereShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btStaticPlaneShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btStridingMeshInterface.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTetrahedronShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTetrahedronShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleBuffer.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleBuffer.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleCallback.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleCallback.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleInfoMap.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleMesh.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleMesh.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleMeshShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btTriangleShape.h delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btUniformScalingShape.cpp delete mode 100644 extern/bullet2/BulletCollision/CollisionShapes/btUniformScalingShape.h delete mode 100644 extern/bullet2/BulletCollision/Doxyfile delete mode 100644 extern/bullet2/BulletCollision/Gimpact/btBoxCollision.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/btClipPolygon.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/btContactProcessing.cpp delete mode 100644 extern/bullet2/BulletCollision/Gimpact/btContactProcessing.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/btGImpactBvh.cpp delete mode 100644 extern/bullet2/BulletCollision/Gimpact/btGImpactBvh.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp delete mode 100644 extern/bullet2/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/btGImpactMassUtil.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp delete mode 100644 extern/bullet2/BulletCollision/Gimpact/btGImpactQuantizedBvh.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/btGImpactShape.cpp delete mode 100644 extern/bullet2/BulletCollision/Gimpact/btGImpactShape.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/btGenericPoolAllocator.cpp delete mode 100644 extern/bullet2/BulletCollision/Gimpact/btGenericPoolAllocator.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/btGeometryOperations.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/btQuantization.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/btTriangleShapeEx.cpp delete mode 100644 extern/bullet2/BulletCollision/Gimpact/btTriangleShapeEx.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_array.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_basic_geometry_operations.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_bitset.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_box_collision.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_box_set.cpp delete mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_box_set.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_clip_polygon.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_contact.cpp delete mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_contact.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_geom_types.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_geometry.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_hash_table.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_linear_math.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_math.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_memory.cpp delete mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_memory.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_radixsort.h delete mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_tri_collision.cpp delete mode 100644 extern/bullet2/BulletCollision/Gimpact/gim_tri_collision.h delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexCast.h delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btPointCollector.h delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp delete mode 100644 extern/bullet2/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h delete mode 100644 extern/bullet2/BulletDynamics/CMakeLists.txt delete mode 100644 extern/bullet2/BulletDynamics/Character/btCharacterControllerInterface.h delete mode 100644 extern/bullet2/BulletDynamics/Character/btKinematicCharacterController.cpp delete mode 100644 extern/bullet2/BulletDynamics/Character/btKinematicCharacterController.h delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btConstraintSolver.h delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btContactConstraint.cpp delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btContactConstraint.h delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btContactSolverInfo.h delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btHinge2Constraint.h delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btHingeConstraint.h delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btJacobianEntry.h delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btSliderConstraint.h delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btSolverBody.h delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btSolverConstraint.h delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btTypedConstraint.h delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp delete mode 100644 extern/bullet2/BulletDynamics/ConstraintSolver/btUniversalConstraint.h delete mode 100644 extern/bullet2/BulletDynamics/Dynamics/Bullet-C-API.cpp delete mode 100644 extern/bullet2/BulletDynamics/Dynamics/btActionInterface.h delete mode 100644 extern/bullet2/BulletDynamics/Dynamics/btContinuousDynamicsWorld.cpp delete mode 100644 extern/bullet2/BulletDynamics/Dynamics/btContinuousDynamicsWorld.h delete mode 100644 extern/bullet2/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp delete mode 100644 extern/bullet2/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h delete mode 100644 extern/bullet2/BulletDynamics/Dynamics/btDynamicsWorld.h delete mode 100644 extern/bullet2/BulletDynamics/Dynamics/btRigidBody.cpp delete mode 100644 extern/bullet2/BulletDynamics/Dynamics/btRigidBody.h delete mode 100644 extern/bullet2/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp delete mode 100644 extern/bullet2/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h delete mode 100644 extern/bullet2/BulletDynamics/Vehicle/btRaycastVehicle.cpp delete mode 100644 extern/bullet2/BulletDynamics/Vehicle/btRaycastVehicle.h delete mode 100644 extern/bullet2/BulletDynamics/Vehicle/btVehicleRaycaster.h delete mode 100644 extern/bullet2/BulletDynamics/Vehicle/btWheelInfo.cpp delete mode 100644 extern/bullet2/BulletDynamics/Vehicle/btWheelInfo.h delete mode 100644 extern/bullet2/BulletMultiThreaded/CMakeLists.txt delete mode 100644 extern/bullet2/BulletMultiThreaded/Makefile.original delete mode 100644 extern/bullet2/BulletMultiThreaded/MiniCL.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/MiniCLTask/MiniCLTask.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/MiniCLTask/MiniCLTask.h delete mode 100644 extern/bullet2/BulletMultiThreaded/MiniCLTaskScheduler.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/MiniCLTaskScheduler.h delete mode 100644 extern/bullet2/BulletMultiThreaded/PlatformDefinitions.h delete mode 100644 extern/bullet2/BulletMultiThreaded/PosixThreadSupport.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/PosixThreadSupport.h delete mode 100644 extern/bullet2/BulletMultiThreaded/PpuAddressSpace.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SequentialThreadSupport.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/SequentialThreadSupport.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuCollisionObjectWrapper.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuCollisionObjectWrapper.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuCollisionTaskProcess.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuCollisionTaskProcess.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuDoubleBuffer.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuFakeDma.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuFakeDma.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuGatheringCollisionDispatcher.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuLibspe2Support.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuLibspe2Support.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/Box.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuConvexPenetrationDepthSolver.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuLocalSupport.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuPreferredPenetrationDirections.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/readme.txt delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuSampleTask/readme.txt delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuSampleTaskProcess.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuSampleTaskProcess.h delete mode 100644 extern/bullet2/BulletMultiThreaded/SpuSync.h delete mode 100644 extern/bullet2/BulletMultiThreaded/Win32ThreadSupport.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/Win32ThreadSupport.h delete mode 100644 extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphase.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphase.h delete mode 100644 extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedCode.h delete mode 100644 extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedDefs.h delete mode 100644 extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedTypes.h delete mode 100644 extern/bullet2/BulletMultiThreaded/btGpuDefines.h delete mode 100644 extern/bullet2/BulletMultiThreaded/btGpuUtilsSharedCode.h delete mode 100644 extern/bullet2/BulletMultiThreaded/btGpuUtilsSharedDefs.h delete mode 100644 extern/bullet2/BulletMultiThreaded/btParallelConstraintSolver.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/btParallelConstraintSolver.h delete mode 100644 extern/bullet2/BulletMultiThreaded/btThreadSupportInterface.cpp delete mode 100644 extern/bullet2/BulletMultiThreaded/btThreadSupportInterface.h delete mode 100644 extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/boolInVec.h delete mode 100644 extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/floatInVec.h delete mode 100644 extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/mat_aos.h delete mode 100644 extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/quat_aos.h delete mode 100644 extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/vec_aos.h delete mode 100644 extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/vectormath_aos.h delete mode 100644 extern/bullet2/BulletMultiThreaded/vectormath2bullet.h delete mode 100644 extern/bullet2/BulletSoftBody/CMakeLists.txt delete mode 100644 extern/bullet2/BulletSoftBody/btSoftBody.cpp delete mode 100644 extern/bullet2/BulletSoftBody/btSoftBody.h delete mode 100644 extern/bullet2/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp delete mode 100644 extern/bullet2/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h delete mode 100644 extern/bullet2/BulletSoftBody/btSoftBodyHelpers.cpp delete mode 100644 extern/bullet2/BulletSoftBody/btSoftBodyHelpers.h delete mode 100644 extern/bullet2/BulletSoftBody/btSoftBodyInternals.h delete mode 100644 extern/bullet2/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp delete mode 100644 extern/bullet2/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h delete mode 100644 extern/bullet2/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp delete mode 100644 extern/bullet2/BulletSoftBody/btSoftRigidCollisionAlgorithm.h delete mode 100644 extern/bullet2/BulletSoftBody/btSoftRigidDynamicsWorld.cpp delete mode 100644 extern/bullet2/BulletSoftBody/btSoftRigidDynamicsWorld.h delete mode 100644 extern/bullet2/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp delete mode 100644 extern/bullet2/BulletSoftBody/btSoftSoftCollisionAlgorithm.h delete mode 100644 extern/bullet2/BulletSoftBody/btSparseSDF.h delete mode 100644 extern/bullet2/LinearMath/CMakeLists.txt delete mode 100644 extern/bullet2/LinearMath/btAabbUtil2.h delete mode 100644 extern/bullet2/LinearMath/btAlignedAllocator.cpp delete mode 100644 extern/bullet2/LinearMath/btAlignedAllocator.h delete mode 100644 extern/bullet2/LinearMath/btAlignedObjectArray.h delete mode 100644 extern/bullet2/LinearMath/btConvexHull.cpp delete mode 100644 extern/bullet2/LinearMath/btConvexHull.h delete mode 100644 extern/bullet2/LinearMath/btDefaultMotionState.h delete mode 100644 extern/bullet2/LinearMath/btGeometryUtil.cpp delete mode 100644 extern/bullet2/LinearMath/btGeometryUtil.h delete mode 100644 extern/bullet2/LinearMath/btHashMap.h delete mode 100644 extern/bullet2/LinearMath/btIDebugDraw.h delete mode 100644 extern/bullet2/LinearMath/btList.h delete mode 100644 extern/bullet2/LinearMath/btMatrix3x3.h delete mode 100644 extern/bullet2/LinearMath/btMinMax.h delete mode 100644 extern/bullet2/LinearMath/btMotionState.h delete mode 100644 extern/bullet2/LinearMath/btPoolAllocator.h delete mode 100644 extern/bullet2/LinearMath/btQuadWord.h delete mode 100644 extern/bullet2/LinearMath/btQuaternion.h delete mode 100644 extern/bullet2/LinearMath/btQuickprof.cpp delete mode 100644 extern/bullet2/LinearMath/btQuickprof.h delete mode 100644 extern/bullet2/LinearMath/btRandom.h delete mode 100644 extern/bullet2/LinearMath/btScalar.h delete mode 100644 extern/bullet2/LinearMath/btSerializer.cpp delete mode 100644 extern/bullet2/LinearMath/btSerializer.h delete mode 100644 extern/bullet2/LinearMath/btStackAlloc.h delete mode 100644 extern/bullet2/LinearMath/btTransform.h delete mode 100644 extern/bullet2/LinearMath/btTransformUtil.h delete mode 100644 extern/bullet2/LinearMath/btVector3.h delete mode 100644 extern/bullet2/MiniCL/cl.h delete mode 100644 extern/bullet2/MiniCL/cl_MiniCL_Defs.h delete mode 100644 extern/bullet2/MiniCL/cl_gl.h delete mode 100644 extern/bullet2/MiniCL/cl_platform.h delete mode 100644 extern/bullet2/SConscript delete mode 100644 extern/bullet2/btBulletCollisionCommon.h delete mode 100644 extern/bullet2/btBulletDynamicsCommon.h diff --git a/extern/bullet2/Bullet-C-Api.h b/extern/bullet2/Bullet-C-Api.h deleted file mode 100644 index f309aba2816..00000000000 --- a/extern/bullet2/Bullet-C-Api.h +++ /dev/null @@ -1,176 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -/* - Draft high-level generic physics C-API. For low-level access, use the physics SDK native API's. - Work in progress, functionality will be added on demand. - - If possible, use the richer Bullet C++ API, by including "btBulletDynamicsCommon.h" -*/ - -#ifndef BULLET_C_API_H -#define BULLET_C_API_H - -#define PL_DECLARE_HANDLE(name) typedef struct name##__ { int unused; } *name - -#ifdef BT_USE_DOUBLE_PRECISION -typedef double plReal; -#else -typedef float plReal; -#endif - -typedef plReal plVector3[3]; -typedef plReal plQuaternion[4]; - -#ifdef __cplusplus -extern "C" { -#endif - -/** Particular physics SDK (C-API) */ - PL_DECLARE_HANDLE(plPhysicsSdkHandle); - -/** Dynamics world, belonging to some physics SDK (C-API)*/ - PL_DECLARE_HANDLE(plDynamicsWorldHandle); - -/** Rigid Body that can be part of a Dynamics World (C-API)*/ - PL_DECLARE_HANDLE(plRigidBodyHandle); - -/** Collision Shape/Geometry, property of a Rigid Body (C-API)*/ - PL_DECLARE_HANDLE(plCollisionShapeHandle); - -/** Constraint for Rigid Bodies (C-API)*/ - PL_DECLARE_HANDLE(plConstraintHandle); - -/** Triangle Mesh interface (C-API)*/ - PL_DECLARE_HANDLE(plMeshInterfaceHandle); - -/** Broadphase Scene/Proxy Handles (C-API)*/ - PL_DECLARE_HANDLE(plCollisionBroadphaseHandle); - PL_DECLARE_HANDLE(plBroadphaseProxyHandle); - PL_DECLARE_HANDLE(plCollisionWorldHandle); - -/** - Create and Delete a Physics SDK -*/ - - extern plPhysicsSdkHandle plNewBulletSdk(); //this could be also another sdk, like ODE, PhysX etc. - extern void plDeletePhysicsSdk(plPhysicsSdkHandle physicsSdk); - -/** Collision World, not strictly necessary, you can also just create a Dynamics World with Rigid Bodies which internally manages the Collision World with Collision Objects */ - - typedef void(*btBroadphaseCallback)(void* clientData, void* object1,void* object2); - - extern plCollisionBroadphaseHandle plCreateSapBroadphase(btBroadphaseCallback beginCallback,btBroadphaseCallback endCallback); - - extern void plDestroyBroadphase(plCollisionBroadphaseHandle bp); - - extern plBroadphaseProxyHandle plCreateProxy(plCollisionBroadphaseHandle bp, void* clientData, plReal minX,plReal minY,plReal minZ, plReal maxX,plReal maxY, plReal maxZ); - - extern void plDestroyProxy(plCollisionBroadphaseHandle bp, plBroadphaseProxyHandle proxyHandle); - - extern void plSetBoundingBox(plBroadphaseProxyHandle proxyHandle, plReal minX,plReal minY,plReal minZ, plReal maxX,plReal maxY, plReal maxZ); - -/* todo: add pair cache support with queries like add/remove/find pair */ - - extern plCollisionWorldHandle plCreateCollisionWorld(plPhysicsSdkHandle physicsSdk); - -/* todo: add/remove objects */ - - -/* Dynamics World */ - - extern plDynamicsWorldHandle plCreateDynamicsWorld(plPhysicsSdkHandle physicsSdk); - - extern void plDeleteDynamicsWorld(plDynamicsWorldHandle world); - - extern void plStepSimulation(plDynamicsWorldHandle, plReal timeStep); - - extern void plAddRigidBody(plDynamicsWorldHandle world, plRigidBodyHandle object); - - extern void plRemoveRigidBody(plDynamicsWorldHandle world, plRigidBodyHandle object); - - -/* Rigid Body */ - - extern plRigidBodyHandle plCreateRigidBody( void* user_data, float mass, plCollisionShapeHandle cshape ); - - extern void plDeleteRigidBody(plRigidBodyHandle body); - - -/* Collision Shape definition */ - - extern plCollisionShapeHandle plNewSphereShape(plReal radius); - extern plCollisionShapeHandle plNewBoxShape(plReal x, plReal y, plReal z); - extern plCollisionShapeHandle plNewCapsuleShape(plReal radius, plReal height); - extern plCollisionShapeHandle plNewConeShape(plReal radius, plReal height); - extern plCollisionShapeHandle plNewCylinderShape(plReal radius, plReal height); - extern plCollisionShapeHandle plNewCompoundShape(); - extern void plAddChildShape(plCollisionShapeHandle compoundShape,plCollisionShapeHandle childShape, plVector3 childPos,plQuaternion childOrn); - - extern void plDeleteShape(plCollisionShapeHandle shape); - - /* Convex Meshes */ - extern plCollisionShapeHandle plNewConvexHullShape(); - extern void plAddVertex(plCollisionShapeHandle convexHull, plReal x,plReal y,plReal z); -/* Concave static triangle meshes */ - extern plMeshInterfaceHandle plNewMeshInterface(); - extern void plAddTriangle(plMeshInterfaceHandle meshHandle, plVector3 v0,plVector3 v1,plVector3 v2); - extern plCollisionShapeHandle plNewStaticTriangleMeshShape(plMeshInterfaceHandle); - - extern void plSetScaling(plCollisionShapeHandle shape, plVector3 scaling); - -/* SOLID has Response Callback/Table/Management */ -/* PhysX has Triggers, User Callbacks and filtering */ -/* ODE has the typedef void dNearCallback (void *data, dGeomID o1, dGeomID o2); */ - -/* typedef void plUpdatedPositionCallback(void* userData, plRigidBodyHandle rbHandle, plVector3 pos); */ -/* typedef void plUpdatedOrientationCallback(void* userData, plRigidBodyHandle rbHandle, plQuaternion orientation); */ - - /* get world transform */ - extern void plGetOpenGLMatrix(plRigidBodyHandle object, plReal* matrix); - extern void plGetPosition(plRigidBodyHandle object,plVector3 position); - extern void plGetOrientation(plRigidBodyHandle object,plQuaternion orientation); - - /* set world transform (position/orientation) */ - extern void plSetPosition(plRigidBodyHandle object, const plVector3 position); - extern void plSetOrientation(plRigidBodyHandle object, const plQuaternion orientation); - extern void plSetEuler(plReal yaw,plReal pitch,plReal roll, plQuaternion orient); - extern void plSetOpenGLMatrix(plRigidBodyHandle object, plReal* matrix); - - typedef struct plRayCastResult { - plRigidBodyHandle m_body; - plCollisionShapeHandle m_shape; - plVector3 m_positionWorld; - plVector3 m_normalWorld; - } plRayCastResult; - - extern int plRayCast(plDynamicsWorldHandle world, const plVector3 rayStart, const plVector3 rayEnd, plRayCastResult res); - - /* Sweep API */ - - /* extern plRigidBodyHandle plObjectCast(plDynamicsWorldHandle world, const plVector3 rayStart, const plVector3 rayEnd, plVector3 hitpoint, plVector3 normal); */ - - /* Continuous Collision Detection API */ - - // needed for source/blender/blenkernel/intern/collision.c - double plNearestPoints(float p1[3], float p2[3], float p3[3], float q1[3], float q2[3], float q3[3], float *pa, float *pb, float normal[3]); - -#ifdef __cplusplus -} -#endif - - -#endif //BULLET_C_API_H - diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp deleted file mode 100644 index 77763305b1b..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp +++ /dev/null @@ -1,37 +0,0 @@ - -//Bullet Continuous Collision Detection and Physics Library -//Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - - -// -// btAxisSweep3 -// -// Copyright (c) 2006 Simon Hobbs -// -// This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -// -// 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// -// 3. This notice may not be removed or altered from any source distribution. -#include "btAxisSweep3.h" - - -btAxisSweep3::btAxisSweep3(const btVector3& worldAabbMin,const btVector3& worldAabbMax, unsigned short int maxHandles, btOverlappingPairCache* pairCache, bool disableRaycastAccelerator) -:btAxisSweep3Internal(worldAabbMin,worldAabbMax,0xfffe,0xffff,maxHandles,pairCache,disableRaycastAccelerator) -{ - // 1 handle is reserved as sentinel - btAssert(maxHandles > 1 && maxHandles < 32767); - -} - - -bt32BitAxisSweep3::bt32BitAxisSweep3(const btVector3& worldAabbMin,const btVector3& worldAabbMax, unsigned int maxHandles , btOverlappingPairCache* pairCache , bool disableRaycastAccelerator) -:btAxisSweep3Internal(worldAabbMin,worldAabbMax,0xfffffffe,0x7fffffff,maxHandles,pairCache,disableRaycastAccelerator) -{ - // 1 handle is reserved as sentinel - btAssert(maxHandles > 1 && maxHandles < 2147483647); -} diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btAxisSweep3.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btAxisSweep3.h deleted file mode 100644 index 07167af3baf..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btAxisSweep3.h +++ /dev/null @@ -1,1051 +0,0 @@ -//Bullet Continuous Collision Detection and Physics Library -//Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -// -// btAxisSweep3.h -// -// Copyright (c) 2006 Simon Hobbs -// -// This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -// -// 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -// -// 3. This notice may not be removed or altered from any source distribution. - -#ifndef AXIS_SWEEP_3_H -#define AXIS_SWEEP_3_H - -#include "LinearMath/btVector3.h" -#include "btOverlappingPairCache.h" -#include "btBroadphaseInterface.h" -#include "btBroadphaseProxy.h" -#include "btOverlappingPairCallback.h" -#include "btDbvtBroadphase.h" - -//#define DEBUG_BROADPHASE 1 -#define USE_OVERLAP_TEST_ON_REMOVES 1 - -/// The internal templace class btAxisSweep3Internal implements the sweep and prune broadphase. -/// It uses quantized integers to represent the begin and end points for each of the 3 axis. -/// Dont use this class directly, use btAxisSweep3 or bt32BitAxisSweep3 instead. -template -class btAxisSweep3Internal : public btBroadphaseInterface -{ -protected: - - BP_FP_INT_TYPE m_bpHandleMask; - BP_FP_INT_TYPE m_handleSentinel; - -public: - - BT_DECLARE_ALIGNED_ALLOCATOR(); - - class Edge - { - public: - BP_FP_INT_TYPE m_pos; // low bit is min/max - BP_FP_INT_TYPE m_handle; - - BP_FP_INT_TYPE IsMax() const {return static_cast(m_pos & 1);} - }; - -public: - class Handle : public btBroadphaseProxy - { - public: - BT_DECLARE_ALIGNED_ALLOCATOR(); - - // indexes into the edge arrays - BP_FP_INT_TYPE m_minEdges[3], m_maxEdges[3]; // 6 * 2 = 12 -// BP_FP_INT_TYPE m_uniqueId; - btBroadphaseProxy* m_dbvtProxy;//for faster raycast - //void* m_pOwner; this is now in btBroadphaseProxy.m_clientObject - - SIMD_FORCE_INLINE void SetNextFree(BP_FP_INT_TYPE next) {m_minEdges[0] = next;} - SIMD_FORCE_INLINE BP_FP_INT_TYPE GetNextFree() const {return m_minEdges[0];} - }; // 24 bytes + 24 for Edge structures = 44 bytes total per entry - - -protected: - btVector3 m_worldAabbMin; // overall system bounds - btVector3 m_worldAabbMax; // overall system bounds - - btVector3 m_quantize; // scaling factor for quantization - - BP_FP_INT_TYPE m_numHandles; // number of active handles - BP_FP_INT_TYPE m_maxHandles; // max number of handles - Handle* m_pHandles; // handles pool - - BP_FP_INT_TYPE m_firstFreeHandle; // free handles list - - Edge* m_pEdges[3]; // edge arrays for the 3 axes (each array has m_maxHandles * 2 + 2 sentinel entries) - void* m_pEdgesRawPtr[3]; - - btOverlappingPairCache* m_pairCache; - - ///btOverlappingPairCallback is an additional optional user callback for adding/removing overlapping pairs, similar interface to btOverlappingPairCache. - btOverlappingPairCallback* m_userPairCallback; - - bool m_ownsPairCache; - - int m_invalidPair; - - ///additional dynamic aabb structure, used to accelerate ray cast queries. - ///can be disabled using a optional argument in the constructor - btDbvtBroadphase* m_raycastAccelerator; - btOverlappingPairCache* m_nullPairCache; - - - // allocation/deallocation - BP_FP_INT_TYPE allocHandle(); - void freeHandle(BP_FP_INT_TYPE handle); - - - bool testOverlap2D(const Handle* pHandleA, const Handle* pHandleB,int axis0,int axis1); - -#ifdef DEBUG_BROADPHASE - void debugPrintAxis(int axis,bool checkCardinality=true); -#endif //DEBUG_BROADPHASE - - //Overlap* AddOverlap(BP_FP_INT_TYPE handleA, BP_FP_INT_TYPE handleB); - //void RemoveOverlap(BP_FP_INT_TYPE handleA, BP_FP_INT_TYPE handleB); - - - - void sortMinDown(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps ); - void sortMinUp(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps ); - void sortMaxDown(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps ); - void sortMaxUp(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps ); - -public: - - btAxisSweep3Internal(const btVector3& worldAabbMin,const btVector3& worldAabbMax, BP_FP_INT_TYPE handleMask, BP_FP_INT_TYPE handleSentinel, BP_FP_INT_TYPE maxHandles = 16384, btOverlappingPairCache* pairCache=0,bool disableRaycastAccelerator = false); - - virtual ~btAxisSweep3Internal(); - - BP_FP_INT_TYPE getNumHandles() const - { - return m_numHandles; - } - - virtual void calculateOverlappingPairs(btDispatcher* dispatcher); - - BP_FP_INT_TYPE addHandle(const btVector3& aabbMin,const btVector3& aabbMax, void* pOwner,short int collisionFilterGroup,short int collisionFilterMask,btDispatcher* dispatcher,void* multiSapProxy); - void removeHandle(BP_FP_INT_TYPE handle,btDispatcher* dispatcher); - void updateHandle(BP_FP_INT_TYPE handle, const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* dispatcher); - SIMD_FORCE_INLINE Handle* getHandle(BP_FP_INT_TYPE index) const {return m_pHandles + index;} - - virtual void resetPool(btDispatcher* dispatcher); - - void processAllOverlappingPairs(btOverlapCallback* callback); - - //Broadphase Interface - virtual btBroadphaseProxy* createProxy( const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr ,short int collisionFilterGroup,short int collisionFilterMask,btDispatcher* dispatcher,void* multiSapProxy); - virtual void destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher); - virtual void setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* dispatcher); - virtual void getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const; - - virtual void rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin=btVector3(0,0,0), const btVector3& aabbMax = btVector3(0,0,0)); - virtual void aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback); - - - void quantize(BP_FP_INT_TYPE* out, const btVector3& point, int isMax) const; - ///unQuantize should be conservative: aabbMin/aabbMax should be larger then 'getAabb' result - void unQuantize(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const; - - bool testAabbOverlap(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1); - - btOverlappingPairCache* getOverlappingPairCache() - { - return m_pairCache; - } - const btOverlappingPairCache* getOverlappingPairCache() const - { - return m_pairCache; - } - - void setOverlappingPairUserCallback(btOverlappingPairCallback* pairCallback) - { - m_userPairCallback = pairCallback; - } - const btOverlappingPairCallback* getOverlappingPairUserCallback() const - { - return m_userPairCallback; - } - - ///getAabb returns the axis aligned bounding box in the 'global' coordinate frame - ///will add some transform later - virtual void getBroadphaseAabb(btVector3& aabbMin,btVector3& aabbMax) const - { - aabbMin = m_worldAabbMin; - aabbMax = m_worldAabbMax; - } - - virtual void printStats() - { -/* printf("btAxisSweep3.h\n"); - printf("numHandles = %d, maxHandles = %d\n",m_numHandles,m_maxHandles); - printf("aabbMin=%f,%f,%f,aabbMax=%f,%f,%f\n",m_worldAabbMin.getX(),m_worldAabbMin.getY(),m_worldAabbMin.getZ(), - m_worldAabbMax.getX(),m_worldAabbMax.getY(),m_worldAabbMax.getZ()); - */ - - } - -}; - -//////////////////////////////////////////////////////////////////// - - - - -#ifdef DEBUG_BROADPHASE -#include - -template -void btAxisSweep3::debugPrintAxis(int axis, bool checkCardinality) -{ - int numEdges = m_pHandles[0].m_maxEdges[axis]; - printf("SAP Axis %d, numEdges=%d\n",axis,numEdges); - - int i; - for (i=0;im_handle); - int handleIndex = pEdge->IsMax()? pHandlePrev->m_maxEdges[axis] : pHandlePrev->m_minEdges[axis]; - char beginOrEnd; - beginOrEnd=pEdge->IsMax()?'E':'B'; - printf(" [%c,h=%d,p=%x,i=%d]\n",beginOrEnd,pEdge->m_handle,pEdge->m_pos,handleIndex); - } - - if (checkCardinality) - btAssert(numEdges == m_numHandles*2+1); -} -#endif //DEBUG_BROADPHASE - -template -btBroadphaseProxy* btAxisSweep3Internal::createProxy( const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr,short int collisionFilterGroup,short int collisionFilterMask,btDispatcher* dispatcher,void* multiSapProxy) -{ - (void)shapeType; - BP_FP_INT_TYPE handleId = addHandle(aabbMin,aabbMax, userPtr,collisionFilterGroup,collisionFilterMask,dispatcher,multiSapProxy); - - Handle* handle = getHandle(handleId); - - if (m_raycastAccelerator) - { - btBroadphaseProxy* rayProxy = m_raycastAccelerator->createProxy(aabbMin,aabbMax,shapeType,userPtr,collisionFilterGroup,collisionFilterMask,dispatcher,0); - handle->m_dbvtProxy = rayProxy; - } - return handle; -} - - - -template -void btAxisSweep3Internal::destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher) -{ - Handle* handle = static_cast(proxy); - if (m_raycastAccelerator) - m_raycastAccelerator->destroyProxy(handle->m_dbvtProxy,dispatcher); - removeHandle(static_cast(handle->m_uniqueId), dispatcher); -} - -template -void btAxisSweep3Internal::setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* dispatcher) -{ - Handle* handle = static_cast(proxy); - handle->m_aabbMin = aabbMin; - handle->m_aabbMax = aabbMax; - updateHandle(static_cast(handle->m_uniqueId), aabbMin, aabbMax,dispatcher); - if (m_raycastAccelerator) - m_raycastAccelerator->setAabb(handle->m_dbvtProxy,aabbMin,aabbMax,dispatcher); - -} - -template -void btAxisSweep3Internal::rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback,const btVector3& aabbMin,const btVector3& aabbMax) -{ - if (m_raycastAccelerator) - { - m_raycastAccelerator->rayTest(rayFrom,rayTo,rayCallback,aabbMin,aabbMax); - } else - { - //choose axis? - BP_FP_INT_TYPE axis = 0; - //for each proxy - for (BP_FP_INT_TYPE i=1;i -void btAxisSweep3Internal::aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback) -{ - if (m_raycastAccelerator) - { - m_raycastAccelerator->aabbTest(aabbMin,aabbMax,callback); - } else - { - //choose axis? - BP_FP_INT_TYPE axis = 0; - //for each proxy - for (BP_FP_INT_TYPE i=1;im_aabbMin,handle->m_aabbMax)) - { - callback.process(handle); - } - } - } - } -} - - - -template -void btAxisSweep3Internal::getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const -{ - Handle* pHandle = static_cast(proxy); - aabbMin = pHandle->m_aabbMin; - aabbMax = pHandle->m_aabbMax; -} - - -template -void btAxisSweep3Internal::unQuantize(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const -{ - Handle* pHandle = static_cast(proxy); - - unsigned short vecInMin[3]; - unsigned short vecInMax[3]; - - vecInMin[0] = m_pEdges[0][pHandle->m_minEdges[0]].m_pos ; - vecInMax[0] = m_pEdges[0][pHandle->m_maxEdges[0]].m_pos +1 ; - vecInMin[1] = m_pEdges[1][pHandle->m_minEdges[1]].m_pos ; - vecInMax[1] = m_pEdges[1][pHandle->m_maxEdges[1]].m_pos +1 ; - vecInMin[2] = m_pEdges[2][pHandle->m_minEdges[2]].m_pos ; - vecInMax[2] = m_pEdges[2][pHandle->m_maxEdges[2]].m_pos +1 ; - - aabbMin.setValue((btScalar)(vecInMin[0]) / (m_quantize.getX()),(btScalar)(vecInMin[1]) / (m_quantize.getY()),(btScalar)(vecInMin[2]) / (m_quantize.getZ())); - aabbMin += m_worldAabbMin; - - aabbMax.setValue((btScalar)(vecInMax[0]) / (m_quantize.getX()),(btScalar)(vecInMax[1]) / (m_quantize.getY()),(btScalar)(vecInMax[2]) / (m_quantize.getZ())); - aabbMax += m_worldAabbMin; -} - - - - -template -btAxisSweep3Internal::btAxisSweep3Internal(const btVector3& worldAabbMin,const btVector3& worldAabbMax, BP_FP_INT_TYPE handleMask, BP_FP_INT_TYPE handleSentinel,BP_FP_INT_TYPE userMaxHandles, btOverlappingPairCache* pairCache , bool disableRaycastAccelerator) -:m_bpHandleMask(handleMask), -m_handleSentinel(handleSentinel), -m_pairCache(pairCache), -m_userPairCallback(0), -m_ownsPairCache(false), -m_invalidPair(0), -m_raycastAccelerator(0) -{ - BP_FP_INT_TYPE maxHandles = static_cast(userMaxHandles+1);//need to add one sentinel handle - - if (!m_pairCache) - { - void* ptr = btAlignedAlloc(sizeof(btHashedOverlappingPairCache),16); - m_pairCache = new(ptr) btHashedOverlappingPairCache(); - m_ownsPairCache = true; - } - - if (!disableRaycastAccelerator) - { - m_nullPairCache = new (btAlignedAlloc(sizeof(btNullPairCache),16)) btNullPairCache(); - m_raycastAccelerator = new (btAlignedAlloc(sizeof(btDbvtBroadphase),16)) btDbvtBroadphase(m_nullPairCache);//m_pairCache); - m_raycastAccelerator->m_deferedcollide = true;//don't add/remove pairs - } - - //btAssert(bounds.HasVolume()); - - // init bounds - m_worldAabbMin = worldAabbMin; - m_worldAabbMax = worldAabbMax; - - btVector3 aabbSize = m_worldAabbMax - m_worldAabbMin; - - BP_FP_INT_TYPE maxInt = m_handleSentinel; - - m_quantize = btVector3(btScalar(maxInt),btScalar(maxInt),btScalar(maxInt)) / aabbSize; - - // allocate handles buffer, using btAlignedAlloc, and put all handles on free list - m_pHandles = new Handle[maxHandles]; - - m_maxHandles = maxHandles; - m_numHandles = 0; - - // handle 0 is reserved as the null index, and is also used as the sentinel - m_firstFreeHandle = 1; - { - for (BP_FP_INT_TYPE i = m_firstFreeHandle; i < maxHandles; i++) - m_pHandles[i].SetNextFree(static_cast(i + 1)); - m_pHandles[maxHandles - 1].SetNextFree(0); - } - - { - // allocate edge buffers - for (int i = 0; i < 3; i++) - { - m_pEdgesRawPtr[i] = btAlignedAlloc(sizeof(Edge)*maxHandles*2,16); - m_pEdges[i] = new(m_pEdgesRawPtr[i]) Edge[maxHandles * 2]; - } - } - //removed overlap management - - // make boundary sentinels - - m_pHandles[0].m_clientObject = 0; - - for (int axis = 0; axis < 3; axis++) - { - m_pHandles[0].m_minEdges[axis] = 0; - m_pHandles[0].m_maxEdges[axis] = 1; - - m_pEdges[axis][0].m_pos = 0; - m_pEdges[axis][0].m_handle = 0; - m_pEdges[axis][1].m_pos = m_handleSentinel; - m_pEdges[axis][1].m_handle = 0; -#ifdef DEBUG_BROADPHASE - debugPrintAxis(axis); -#endif //DEBUG_BROADPHASE - - } - -} - -template -btAxisSweep3Internal::~btAxisSweep3Internal() -{ - if (m_raycastAccelerator) - { - m_nullPairCache->~btOverlappingPairCache(); - btAlignedFree(m_nullPairCache); - m_raycastAccelerator->~btDbvtBroadphase(); - btAlignedFree (m_raycastAccelerator); - } - - for (int i = 2; i >= 0; i--) - { - btAlignedFree(m_pEdgesRawPtr[i]); - } - delete [] m_pHandles; - - if (m_ownsPairCache) - { - m_pairCache->~btOverlappingPairCache(); - btAlignedFree(m_pairCache); - } -} - -template -void btAxisSweep3Internal::quantize(BP_FP_INT_TYPE* out, const btVector3& point, int isMax) const -{ -#ifdef OLD_CLAMPING_METHOD - ///problem with this clamping method is that the floating point during quantization might still go outside the range [(0|isMax) .. (m_handleSentinel&m_bpHandleMask]|isMax] - ///see http://code.google.com/p/bullet/issues/detail?id=87 - btVector3 clampedPoint(point); - clampedPoint.setMax(m_worldAabbMin); - clampedPoint.setMin(m_worldAabbMax); - btVector3 v = (clampedPoint - m_worldAabbMin) * m_quantize; - out[0] = (BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v.getX() & m_bpHandleMask) | isMax); - out[1] = (BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v.getY() & m_bpHandleMask) | isMax); - out[2] = (BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v.getZ() & m_bpHandleMask) | isMax); -#else - btVector3 v = (point - m_worldAabbMin) * m_quantize; - out[0]=(v[0]<=0)?(BP_FP_INT_TYPE)isMax:(v[0]>=m_handleSentinel)?(BP_FP_INT_TYPE)((m_handleSentinel&m_bpHandleMask)|isMax):(BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v[0]&m_bpHandleMask)|isMax); - out[1]=(v[1]<=0)?(BP_FP_INT_TYPE)isMax:(v[1]>=m_handleSentinel)?(BP_FP_INT_TYPE)((m_handleSentinel&m_bpHandleMask)|isMax):(BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v[1]&m_bpHandleMask)|isMax); - out[2]=(v[2]<=0)?(BP_FP_INT_TYPE)isMax:(v[2]>=m_handleSentinel)?(BP_FP_INT_TYPE)((m_handleSentinel&m_bpHandleMask)|isMax):(BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v[2]&m_bpHandleMask)|isMax); -#endif //OLD_CLAMPING_METHOD -} - - -template -BP_FP_INT_TYPE btAxisSweep3Internal::allocHandle() -{ - btAssert(m_firstFreeHandle); - - BP_FP_INT_TYPE handle = m_firstFreeHandle; - m_firstFreeHandle = getHandle(handle)->GetNextFree(); - m_numHandles++; - - return handle; -} - -template -void btAxisSweep3Internal::freeHandle(BP_FP_INT_TYPE handle) -{ - btAssert(handle > 0 && handle < m_maxHandles); - - getHandle(handle)->SetNextFree(m_firstFreeHandle); - m_firstFreeHandle = handle; - - m_numHandles--; -} - - -template -BP_FP_INT_TYPE btAxisSweep3Internal::addHandle(const btVector3& aabbMin,const btVector3& aabbMax, void* pOwner,short int collisionFilterGroup,short int collisionFilterMask,btDispatcher* dispatcher,void* multiSapProxy) -{ - // quantize the bounds - BP_FP_INT_TYPE min[3], max[3]; - quantize(min, aabbMin, 0); - quantize(max, aabbMax, 1); - - // allocate a handle - BP_FP_INT_TYPE handle = allocHandle(); - - - Handle* pHandle = getHandle(handle); - - pHandle->m_uniqueId = static_cast(handle); - //pHandle->m_pOverlaps = 0; - pHandle->m_clientObject = pOwner; - pHandle->m_collisionFilterGroup = collisionFilterGroup; - pHandle->m_collisionFilterMask = collisionFilterMask; - pHandle->m_multiSapParentProxy = multiSapProxy; - - // compute current limit of edge arrays - BP_FP_INT_TYPE limit = static_cast(m_numHandles * 2); - - - // insert new edges just inside the max boundary edge - for (BP_FP_INT_TYPE axis = 0; axis < 3; axis++) - { - - m_pHandles[0].m_maxEdges[axis] += 2; - - m_pEdges[axis][limit + 1] = m_pEdges[axis][limit - 1]; - - m_pEdges[axis][limit - 1].m_pos = min[axis]; - m_pEdges[axis][limit - 1].m_handle = handle; - - m_pEdges[axis][limit].m_pos = max[axis]; - m_pEdges[axis][limit].m_handle = handle; - - pHandle->m_minEdges[axis] = static_cast(limit - 1); - pHandle->m_maxEdges[axis] = limit; - } - - // now sort the new edges to their correct position - sortMinDown(0, pHandle->m_minEdges[0], dispatcher,false); - sortMaxDown(0, pHandle->m_maxEdges[0], dispatcher,false); - sortMinDown(1, pHandle->m_minEdges[1], dispatcher,false); - sortMaxDown(1, pHandle->m_maxEdges[1], dispatcher,false); - sortMinDown(2, pHandle->m_minEdges[2], dispatcher,true); - sortMaxDown(2, pHandle->m_maxEdges[2], dispatcher,true); - - - return handle; -} - - -template -void btAxisSweep3Internal::removeHandle(BP_FP_INT_TYPE handle,btDispatcher* dispatcher) -{ - - Handle* pHandle = getHandle(handle); - - //explicitly remove the pairs containing the proxy - //we could do it also in the sortMinUp (passing true) - ///@todo: compare performance - if (!m_pairCache->hasDeferredRemoval()) - { - m_pairCache->removeOverlappingPairsContainingProxy(pHandle,dispatcher); - } - - // compute current limit of edge arrays - int limit = static_cast(m_numHandles * 2); - - int axis; - - for (axis = 0;axis<3;axis++) - { - m_pHandles[0].m_maxEdges[axis] -= 2; - } - - // remove the edges by sorting them up to the end of the list - for ( axis = 0; axis < 3; axis++) - { - Edge* pEdges = m_pEdges[axis]; - BP_FP_INT_TYPE max = pHandle->m_maxEdges[axis]; - pEdges[max].m_pos = m_handleSentinel; - - sortMaxUp(axis,max,dispatcher,false); - - - BP_FP_INT_TYPE i = pHandle->m_minEdges[axis]; - pEdges[i].m_pos = m_handleSentinel; - - - sortMinUp(axis,i,dispatcher,false); - - pEdges[limit-1].m_handle = 0; - pEdges[limit-1].m_pos = m_handleSentinel; - -#ifdef DEBUG_BROADPHASE - debugPrintAxis(axis,false); -#endif //DEBUG_BROADPHASE - - - } - - - // free the handle - freeHandle(handle); - - -} - -template -void btAxisSweep3Internal::resetPool(btDispatcher* dispatcher) -{ - if (m_numHandles == 0) - { - m_firstFreeHandle = 1; - { - for (BP_FP_INT_TYPE i = m_firstFreeHandle; i < m_maxHandles; i++) - m_pHandles[i].SetNextFree(static_cast(i + 1)); - m_pHandles[m_maxHandles - 1].SetNextFree(0); - } - } -} - - -extern int gOverlappingPairs; -//#include - -template -void btAxisSweep3Internal::calculateOverlappingPairs(btDispatcher* dispatcher) -{ - - if (m_pairCache->hasDeferredRemoval()) - { - - btBroadphasePairArray& overlappingPairArray = m_pairCache->getOverlappingPairArray(); - - //perform a sort, to find duplicates and to sort 'invalid' pairs to the end - overlappingPairArray.quickSort(btBroadphasePairSortPredicate()); - - overlappingPairArray.resize(overlappingPairArray.size() - m_invalidPair); - m_invalidPair = 0; - - - int i; - - btBroadphasePair previousPair; - previousPair.m_pProxy0 = 0; - previousPair.m_pProxy1 = 0; - previousPair.m_algorithm = 0; - - - for (i=0;iprocessOverlap(pair); - } else - { - needsRemoval = true; - } - } else - { - //remove duplicate - needsRemoval = true; - //should have no algorithm - btAssert(!pair.m_algorithm); - } - - if (needsRemoval) - { - m_pairCache->cleanOverlappingPair(pair,dispatcher); - - // m_overlappingPairArray.swap(i,m_overlappingPairArray.size()-1); - // m_overlappingPairArray.pop_back(); - pair.m_pProxy0 = 0; - pair.m_pProxy1 = 0; - m_invalidPair++; - gOverlappingPairs--; - } - - } - - ///if you don't like to skip the invalid pairs in the array, execute following code: - #define CLEAN_INVALID_PAIRS 1 - #ifdef CLEAN_INVALID_PAIRS - - //perform a sort, to sort 'invalid' pairs to the end - overlappingPairArray.quickSort(btBroadphasePairSortPredicate()); - - overlappingPairArray.resize(overlappingPairArray.size() - m_invalidPair); - m_invalidPair = 0; - #endif//CLEAN_INVALID_PAIRS - - //printf("overlappingPairArray.size()=%d\n",overlappingPairArray.size()); - } - -} - - -template -bool btAxisSweep3Internal::testAabbOverlap(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) -{ - const Handle* pHandleA = static_cast(proxy0); - const Handle* pHandleB = static_cast(proxy1); - - //optimization 1: check the array index (memory address), instead of the m_pos - - for (int axis = 0; axis < 3; axis++) - { - if (pHandleA->m_maxEdges[axis] < pHandleB->m_minEdges[axis] || - pHandleB->m_maxEdges[axis] < pHandleA->m_minEdges[axis]) - { - return false; - } - } - return true; -} - -template -bool btAxisSweep3Internal::testOverlap2D(const Handle* pHandleA, const Handle* pHandleB,int axis0,int axis1) -{ - //optimization 1: check the array index (memory address), instead of the m_pos - - if (pHandleA->m_maxEdges[axis0] < pHandleB->m_minEdges[axis0] || - pHandleB->m_maxEdges[axis0] < pHandleA->m_minEdges[axis0] || - pHandleA->m_maxEdges[axis1] < pHandleB->m_minEdges[axis1] || - pHandleB->m_maxEdges[axis1] < pHandleA->m_minEdges[axis1]) - { - return false; - } - return true; -} - -template -void btAxisSweep3Internal::updateHandle(BP_FP_INT_TYPE handle, const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* dispatcher) -{ -// btAssert(bounds.IsFinite()); - //btAssert(bounds.HasVolume()); - - Handle* pHandle = getHandle(handle); - - // quantize the new bounds - BP_FP_INT_TYPE min[3], max[3]; - quantize(min, aabbMin, 0); - quantize(max, aabbMax, 1); - - // update changed edges - for (int axis = 0; axis < 3; axis++) - { - BP_FP_INT_TYPE emin = pHandle->m_minEdges[axis]; - BP_FP_INT_TYPE emax = pHandle->m_maxEdges[axis]; - - int dmin = (int)min[axis] - (int)m_pEdges[axis][emin].m_pos; - int dmax = (int)max[axis] - (int)m_pEdges[axis][emax].m_pos; - - m_pEdges[axis][emin].m_pos = min[axis]; - m_pEdges[axis][emax].m_pos = max[axis]; - - // expand (only adds overlaps) - if (dmin < 0) - sortMinDown(axis, emin,dispatcher,true); - - if (dmax > 0) - sortMaxUp(axis, emax,dispatcher,true); - - // shrink (only removes overlaps) - if (dmin > 0) - sortMinUp(axis, emin,dispatcher,true); - - if (dmax < 0) - sortMaxDown(axis, emax,dispatcher,true); - -#ifdef DEBUG_BROADPHASE - debugPrintAxis(axis); -#endif //DEBUG_BROADPHASE - } - - -} - - - - -// sorting a min edge downwards can only ever *add* overlaps -template -void btAxisSweep3Internal::sortMinDown(int axis, BP_FP_INT_TYPE edge, btDispatcher* /* dispatcher */, bool updateOverlaps) -{ - - Edge* pEdge = m_pEdges[axis] + edge; - Edge* pPrev = pEdge - 1; - Handle* pHandleEdge = getHandle(pEdge->m_handle); - - while (pEdge->m_pos < pPrev->m_pos) - { - Handle* pHandlePrev = getHandle(pPrev->m_handle); - - if (pPrev->IsMax()) - { - // if previous edge is a maximum check the bounds and add an overlap if necessary - const int axis1 = (1 << axis) & 3; - const int axis2 = (1 << axis1) & 3; - if (updateOverlaps && testOverlap2D(pHandleEdge, pHandlePrev,axis1,axis2)) - { - m_pairCache->addOverlappingPair(pHandleEdge,pHandlePrev); - if (m_userPairCallback) - m_userPairCallback->addOverlappingPair(pHandleEdge,pHandlePrev); - - //AddOverlap(pEdge->m_handle, pPrev->m_handle); - - } - - // update edge reference in other handle - pHandlePrev->m_maxEdges[axis]++; - } - else - pHandlePrev->m_minEdges[axis]++; - - pHandleEdge->m_minEdges[axis]--; - - // swap the edges - Edge swap = *pEdge; - *pEdge = *pPrev; - *pPrev = swap; - - // decrement - pEdge--; - pPrev--; - } - -#ifdef DEBUG_BROADPHASE - debugPrintAxis(axis); -#endif //DEBUG_BROADPHASE - -} - -// sorting a min edge upwards can only ever *remove* overlaps -template -void btAxisSweep3Internal::sortMinUp(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps) -{ - Edge* pEdge = m_pEdges[axis] + edge; - Edge* pNext = pEdge + 1; - Handle* pHandleEdge = getHandle(pEdge->m_handle); - - while (pNext->m_handle && (pEdge->m_pos >= pNext->m_pos)) - { - Handle* pHandleNext = getHandle(pNext->m_handle); - - if (pNext->IsMax()) - { - Handle* handle0 = getHandle(pEdge->m_handle); - Handle* handle1 = getHandle(pNext->m_handle); - const int axis1 = (1 << axis) & 3; - const int axis2 = (1 << axis1) & 3; - - // if next edge is maximum remove any overlap between the two handles - if (updateOverlaps -#ifdef USE_OVERLAP_TEST_ON_REMOVES - && testOverlap2D(handle0,handle1,axis1,axis2) -#endif //USE_OVERLAP_TEST_ON_REMOVES - ) - { - - - m_pairCache->removeOverlappingPair(handle0,handle1,dispatcher); - if (m_userPairCallback) - m_userPairCallback->removeOverlappingPair(handle0,handle1,dispatcher); - - } - - - // update edge reference in other handle - pHandleNext->m_maxEdges[axis]--; - } - else - pHandleNext->m_minEdges[axis]--; - - pHandleEdge->m_minEdges[axis]++; - - // swap the edges - Edge swap = *pEdge; - *pEdge = *pNext; - *pNext = swap; - - // increment - pEdge++; - pNext++; - } - - -} - -// sorting a max edge downwards can only ever *remove* overlaps -template -void btAxisSweep3Internal::sortMaxDown(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps) -{ - - Edge* pEdge = m_pEdges[axis] + edge; - Edge* pPrev = pEdge - 1; - Handle* pHandleEdge = getHandle(pEdge->m_handle); - - while (pEdge->m_pos < pPrev->m_pos) - { - Handle* pHandlePrev = getHandle(pPrev->m_handle); - - if (!pPrev->IsMax()) - { - // if previous edge was a minimum remove any overlap between the two handles - Handle* handle0 = getHandle(pEdge->m_handle); - Handle* handle1 = getHandle(pPrev->m_handle); - const int axis1 = (1 << axis) & 3; - const int axis2 = (1 << axis1) & 3; - - if (updateOverlaps -#ifdef USE_OVERLAP_TEST_ON_REMOVES - && testOverlap2D(handle0,handle1,axis1,axis2) -#endif //USE_OVERLAP_TEST_ON_REMOVES - ) - { - //this is done during the overlappingpairarray iteration/narrowphase collision - - - m_pairCache->removeOverlappingPair(handle0,handle1,dispatcher); - if (m_userPairCallback) - m_userPairCallback->removeOverlappingPair(handle0,handle1,dispatcher); - - - - } - - // update edge reference in other handle - pHandlePrev->m_minEdges[axis]++;; - } - else - pHandlePrev->m_maxEdges[axis]++; - - pHandleEdge->m_maxEdges[axis]--; - - // swap the edges - Edge swap = *pEdge; - *pEdge = *pPrev; - *pPrev = swap; - - // decrement - pEdge--; - pPrev--; - } - - -#ifdef DEBUG_BROADPHASE - debugPrintAxis(axis); -#endif //DEBUG_BROADPHASE - -} - -// sorting a max edge upwards can only ever *add* overlaps -template -void btAxisSweep3Internal::sortMaxUp(int axis, BP_FP_INT_TYPE edge, btDispatcher* /* dispatcher */, bool updateOverlaps) -{ - Edge* pEdge = m_pEdges[axis] + edge; - Edge* pNext = pEdge + 1; - Handle* pHandleEdge = getHandle(pEdge->m_handle); - - while (pNext->m_handle && (pEdge->m_pos >= pNext->m_pos)) - { - Handle* pHandleNext = getHandle(pNext->m_handle); - - const int axis1 = (1 << axis) & 3; - const int axis2 = (1 << axis1) & 3; - - if (!pNext->IsMax()) - { - // if next edge is a minimum check the bounds and add an overlap if necessary - if (updateOverlaps && testOverlap2D(pHandleEdge, pHandleNext,axis1,axis2)) - { - Handle* handle0 = getHandle(pEdge->m_handle); - Handle* handle1 = getHandle(pNext->m_handle); - m_pairCache->addOverlappingPair(handle0,handle1); - if (m_userPairCallback) - m_userPairCallback->addOverlappingPair(handle0,handle1); - } - - // update edge reference in other handle - pHandleNext->m_minEdges[axis]--; - } - else - pHandleNext->m_maxEdges[axis]--; - - pHandleEdge->m_maxEdges[axis]++; - - // swap the edges - Edge swap = *pEdge; - *pEdge = *pNext; - *pNext = swap; - - // increment - pEdge++; - pNext++; - } - -} - - - -//////////////////////////////////////////////////////////////////// - - -/// The btAxisSweep3 is an efficient implementation of the 3d axis sweep and prune broadphase. -/// It uses arrays rather then lists for storage of the 3 axis. Also it operates using 16 bit integer coordinates instead of floats. -/// For large worlds and many objects, use bt32BitAxisSweep3 or btDbvtBroadphase instead. bt32BitAxisSweep3 has higher precision and allows more then 16384 objects at the cost of more memory and bit of performance. -class btAxisSweep3 : public btAxisSweep3Internal -{ -public: - - btAxisSweep3(const btVector3& worldAabbMin,const btVector3& worldAabbMax, unsigned short int maxHandles = 16384, btOverlappingPairCache* pairCache = 0, bool disableRaycastAccelerator = false); - -}; - -/// The bt32BitAxisSweep3 allows higher precision quantization and more objects compared to the btAxisSweep3 sweep and prune. -/// This comes at the cost of more memory per handle, and a bit slower performance. -/// It uses arrays rather then lists for storage of the 3 axis. -class bt32BitAxisSweep3 : public btAxisSweep3Internal -{ -public: - - bt32BitAxisSweep3(const btVector3& worldAabbMin,const btVector3& worldAabbMax, unsigned int maxHandles = 1500000, btOverlappingPairCache* pairCache = 0, bool disableRaycastAccelerator = false); - -}; - -#endif - diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h deleted file mode 100644 index fe414effbfc..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h +++ /dev/null @@ -1,82 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BROADPHASE_INTERFACE_H -#define BROADPHASE_INTERFACE_H - - - -struct btDispatcherInfo; -class btDispatcher; -#include "btBroadphaseProxy.h" - -class btOverlappingPairCache; - - - -struct btBroadphaseAabbCallback -{ - virtual ~btBroadphaseAabbCallback() {} - virtual bool process(const btBroadphaseProxy* proxy) = 0; -}; - - -struct btBroadphaseRayCallback : public btBroadphaseAabbCallback -{ - ///added some cached data to accelerate ray-AABB tests - btVector3 m_rayDirectionInverse; - unsigned int m_signs[3]; - btScalar m_lambda_max; - - virtual ~btBroadphaseRayCallback() {} -}; - -#include "LinearMath/btVector3.h" - -///The btBroadphaseInterface class provides an interface to detect aabb-overlapping object pairs. -///Some implementations for this broadphase interface include btAxisSweep3, bt32BitAxisSweep3 and btDbvtBroadphase. -///The actual overlapping pair management, storage, adding and removing of pairs is dealt by the btOverlappingPairCache class. -class btBroadphaseInterface -{ -public: - virtual ~btBroadphaseInterface() {} - - virtual btBroadphaseProxy* createProxy( const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr, short int collisionFilterGroup,short int collisionFilterMask, btDispatcher* dispatcher,void* multiSapProxy) =0; - virtual void destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher)=0; - virtual void setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax, btDispatcher* dispatcher)=0; - virtual void getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const =0; - - virtual void rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin=btVector3(0,0,0), const btVector3& aabbMax = btVector3(0,0,0)) = 0; - - virtual void aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback) = 0; - - ///calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during the set aabb - virtual void calculateOverlappingPairs(btDispatcher* dispatcher)=0; - - virtual btOverlappingPairCache* getOverlappingPairCache()=0; - virtual const btOverlappingPairCache* getOverlappingPairCache() const =0; - - ///getAabb returns the axis aligned bounding box in the 'global' coordinate frame - ///will add some transform later - virtual void getBroadphaseAabb(btVector3& aabbMin,btVector3& aabbMax) const =0; - - ///reset broadphase internal structures, to ensure determinism/reproducability - virtual void resetPool(btDispatcher* dispatcher) { (void) dispatcher; }; - - virtual void printStats() = 0; - -}; - -#endif //BROADPHASE_INTERFACE_H diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp deleted file mode 100644 index f4d7341f8dd..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp +++ /dev/null @@ -1,17 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btBroadphaseProxy.h" - diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h deleted file mode 100644 index 62d349739c3..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h +++ /dev/null @@ -1,270 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BROADPHASE_PROXY_H -#define BROADPHASE_PROXY_H - -#include "LinearMath/btScalar.h" //for SIMD_FORCE_INLINE -#include "LinearMath/btVector3.h" -#include "LinearMath/btAlignedAllocator.h" - - -/// btDispatcher uses these types -/// IMPORTANT NOTE:The types are ordered polyhedral, implicit convex and concave -/// to facilitate type checking -/// CUSTOM_POLYHEDRAL_SHAPE_TYPE,CUSTOM_CONVEX_SHAPE_TYPE and CUSTOM_CONCAVE_SHAPE_TYPE can be used to extend Bullet without modifying source code -enum BroadphaseNativeTypes -{ - // polyhedral convex shapes - BOX_SHAPE_PROXYTYPE, - TRIANGLE_SHAPE_PROXYTYPE, - TETRAHEDRAL_SHAPE_PROXYTYPE, - CONVEX_TRIANGLEMESH_SHAPE_PROXYTYPE, - CONVEX_HULL_SHAPE_PROXYTYPE, - CONVEX_POINT_CLOUD_SHAPE_PROXYTYPE, - CUSTOM_POLYHEDRAL_SHAPE_TYPE, -//implicit convex shapes -IMPLICIT_CONVEX_SHAPES_START_HERE, - SPHERE_SHAPE_PROXYTYPE, - MULTI_SPHERE_SHAPE_PROXYTYPE, - CAPSULE_SHAPE_PROXYTYPE, - CONE_SHAPE_PROXYTYPE, - CONVEX_SHAPE_PROXYTYPE, - CYLINDER_SHAPE_PROXYTYPE, - UNIFORM_SCALING_SHAPE_PROXYTYPE, - MINKOWSKI_SUM_SHAPE_PROXYTYPE, - MINKOWSKI_DIFFERENCE_SHAPE_PROXYTYPE, - BOX_2D_SHAPE_PROXYTYPE, - CONVEX_2D_SHAPE_PROXYTYPE, - CUSTOM_CONVEX_SHAPE_TYPE, -//concave shapes -CONCAVE_SHAPES_START_HERE, - //keep all the convex shapetype below here, for the check IsConvexShape in broadphase proxy! - TRIANGLE_MESH_SHAPE_PROXYTYPE, - SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE, - ///used for demo integration FAST/Swift collision library and Bullet - FAST_CONCAVE_MESH_PROXYTYPE, - //terrain - TERRAIN_SHAPE_PROXYTYPE, -///Used for GIMPACT Trimesh integration - GIMPACT_SHAPE_PROXYTYPE, -///Multimaterial mesh - MULTIMATERIAL_TRIANGLE_MESH_PROXYTYPE, - - EMPTY_SHAPE_PROXYTYPE, - STATIC_PLANE_PROXYTYPE, - CUSTOM_CONCAVE_SHAPE_TYPE, -CONCAVE_SHAPES_END_HERE, - - COMPOUND_SHAPE_PROXYTYPE, - - SOFTBODY_SHAPE_PROXYTYPE, - HFFLUID_SHAPE_PROXYTYPE, - HFFLUID_BUOYANT_CONVEX_SHAPE_PROXYTYPE, - INVALID_SHAPE_PROXYTYPE, - - MAX_BROADPHASE_COLLISION_TYPES - -}; - - -///The btBroadphaseProxy is the main class that can be used with the Bullet broadphases. -///It stores collision shape type information, collision filter information and a client object, typically a btCollisionObject or btRigidBody. -ATTRIBUTE_ALIGNED16(struct) btBroadphaseProxy -{ - -BT_DECLARE_ALIGNED_ALLOCATOR(); - - ///optional filtering to cull potential collisions - enum CollisionFilterGroups - { - DefaultFilter = 1, - StaticFilter = 2, - KinematicFilter = 4, - DebrisFilter = 8, - SensorTrigger = 16, - CharacterFilter = 32, - AllFilter = -1 //all bits sets: DefaultFilter | StaticFilter | KinematicFilter | DebrisFilter | SensorTrigger - }; - - //Usually the client btCollisionObject or Rigidbody class - void* m_clientObject; - short int m_collisionFilterGroup; - short int m_collisionFilterMask; - void* m_multiSapParentProxy; - int m_uniqueId;//m_uniqueId is introduced for paircache. could get rid of this, by calculating the address offset etc. - - btVector3 m_aabbMin; - btVector3 m_aabbMax; - - SIMD_FORCE_INLINE int getUid() const - { - return m_uniqueId; - } - - //used for memory pools - btBroadphaseProxy() :m_clientObject(0),m_multiSapParentProxy(0) - { - } - - btBroadphaseProxy(const btVector3& aabbMin,const btVector3& aabbMax,void* userPtr,short int collisionFilterGroup, short int collisionFilterMask,void* multiSapParentProxy=0) - :m_clientObject(userPtr), - m_collisionFilterGroup(collisionFilterGroup), - m_collisionFilterMask(collisionFilterMask), - m_aabbMin(aabbMin), - m_aabbMax(aabbMax) - { - m_multiSapParentProxy = multiSapParentProxy; - } - - - - static SIMD_FORCE_INLINE bool isPolyhedral(int proxyType) - { - return (proxyType < IMPLICIT_CONVEX_SHAPES_START_HERE); - } - - static SIMD_FORCE_INLINE bool isConvex(int proxyType) - { - return (proxyType < CONCAVE_SHAPES_START_HERE); - } - - static SIMD_FORCE_INLINE bool isNonMoving(int proxyType) - { - return (isConcave(proxyType) && !(proxyType==GIMPACT_SHAPE_PROXYTYPE)); - } - - static SIMD_FORCE_INLINE bool isConcave(int proxyType) - { - return ((proxyType > CONCAVE_SHAPES_START_HERE) && - (proxyType < CONCAVE_SHAPES_END_HERE)); - } - static SIMD_FORCE_INLINE bool isCompound(int proxyType) - { - return (proxyType == COMPOUND_SHAPE_PROXYTYPE); - } - - static SIMD_FORCE_INLINE bool isSoftBody(int proxyType) - { - return (proxyType == SOFTBODY_SHAPE_PROXYTYPE); - } - - static SIMD_FORCE_INLINE bool isInfinite(int proxyType) - { - return (proxyType == STATIC_PLANE_PROXYTYPE); - } - - static SIMD_FORCE_INLINE bool isConvex2d(int proxyType) - { - return (proxyType == BOX_2D_SHAPE_PROXYTYPE) || (proxyType == CONVEX_2D_SHAPE_PROXYTYPE); - } - - -} -; - -class btCollisionAlgorithm; - -struct btBroadphaseProxy; - - - -///The btBroadphasePair class contains a pair of aabb-overlapping objects. -///A btDispatcher can search a btCollisionAlgorithm that performs exact/narrowphase collision detection on the actual collision shapes. -ATTRIBUTE_ALIGNED16(struct) btBroadphasePair -{ - btBroadphasePair () - : - m_pProxy0(0), - m_pProxy1(0), - m_algorithm(0), - m_internalInfo1(0) - { - } - -BT_DECLARE_ALIGNED_ALLOCATOR(); - - btBroadphasePair(const btBroadphasePair& other) - : m_pProxy0(other.m_pProxy0), - m_pProxy1(other.m_pProxy1), - m_algorithm(other.m_algorithm), - m_internalInfo1(other.m_internalInfo1) - { - } - btBroadphasePair(btBroadphaseProxy& proxy0,btBroadphaseProxy& proxy1) - { - - //keep them sorted, so the std::set operations work - if (proxy0.m_uniqueId < proxy1.m_uniqueId) - { - m_pProxy0 = &proxy0; - m_pProxy1 = &proxy1; - } - else - { - m_pProxy0 = &proxy1; - m_pProxy1 = &proxy0; - } - - m_algorithm = 0; - m_internalInfo1 = 0; - - } - - btBroadphaseProxy* m_pProxy0; - btBroadphaseProxy* m_pProxy1; - - mutable btCollisionAlgorithm* m_algorithm; - union { void* m_internalInfo1; int m_internalTmpValue;};//don't use this data, it will be removed in future version. - -}; - -/* -//comparison for set operation, see Solid DT_Encounter -SIMD_FORCE_INLINE bool operator<(const btBroadphasePair& a, const btBroadphasePair& b) -{ - return a.m_pProxy0 < b.m_pProxy0 || - (a.m_pProxy0 == b.m_pProxy0 && a.m_pProxy1 < b.m_pProxy1); -} -*/ - - - -class btBroadphasePairSortPredicate -{ - public: - - bool operator() ( const btBroadphasePair& a, const btBroadphasePair& b ) - { - const int uidA0 = a.m_pProxy0 ? a.m_pProxy0->m_uniqueId : -1; - const int uidB0 = b.m_pProxy0 ? b.m_pProxy0->m_uniqueId : -1; - const int uidA1 = a.m_pProxy1 ? a.m_pProxy1->m_uniqueId : -1; - const int uidB1 = b.m_pProxy1 ? b.m_pProxy1->m_uniqueId : -1; - - return uidA0 > uidB0 || - (a.m_pProxy0 == b.m_pProxy0 && uidA1 > uidB1) || - (a.m_pProxy0 == b.m_pProxy0 && a.m_pProxy1 == b.m_pProxy1 && a.m_algorithm > b.m_algorithm); - } -}; - - -SIMD_FORCE_INLINE bool operator==(const btBroadphasePair& a, const btBroadphasePair& b) -{ - return (a.m_pProxy0 == b.m_pProxy0) && (a.m_pProxy1 == b.m_pProxy1); -} - - -#endif //BROADPHASE_PROXY_H - diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp deleted file mode 100644 index c95d1be0f2c..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btCollisionAlgorithm.h" -#include "btDispatcher.h" - -btCollisionAlgorithm::btCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci) -{ - m_dispatcher = ci.m_dispatcher1; -} - diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h deleted file mode 100644 index 1618ad9fdd3..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h +++ /dev/null @@ -1,80 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef COLLISION_ALGORITHM_H -#define COLLISION_ALGORITHM_H - -#include "LinearMath/btScalar.h" -#include "LinearMath/btAlignedObjectArray.h" - -struct btBroadphaseProxy; -class btDispatcher; -class btManifoldResult; -class btCollisionObject; -struct btDispatcherInfo; -class btPersistentManifold; - -typedef btAlignedObjectArray btManifoldArray; - -struct btCollisionAlgorithmConstructionInfo -{ - btCollisionAlgorithmConstructionInfo() - :m_dispatcher1(0), - m_manifold(0) - { - } - btCollisionAlgorithmConstructionInfo(btDispatcher* dispatcher,int temp) - :m_dispatcher1(dispatcher) - { - (void)temp; - } - - btDispatcher* m_dispatcher1; - btPersistentManifold* m_manifold; - - int getDispatcherId(); - -}; - - -///btCollisionAlgorithm is an collision interface that is compatible with the Broadphase and btDispatcher. -///It is persistent over frames -class btCollisionAlgorithm -{ - -protected: - - btDispatcher* m_dispatcher; - -protected: - int getDispatcherId(); - -public: - - btCollisionAlgorithm() {}; - - btCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci); - - virtual ~btCollisionAlgorithm() {}; - - virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) = 0; - - virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) = 0; - - virtual void getAllContactManifolds(btManifoldArray& manifoldArray) = 0; -}; - - -#endif //COLLISION_ALGORITHM_H diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btDbvt.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btDbvt.cpp deleted file mode 100644 index ff32ec1d43a..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btDbvt.cpp +++ /dev/null @@ -1,1295 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ -///btDbvt implementation by Nathanael Presson - -#include "btDbvt.h" - -// -typedef btAlignedObjectArray tNodeArray; -typedef btAlignedObjectArray tConstNodeArray; - -// -struct btDbvtNodeEnumerator : btDbvt::ICollide -{ - tConstNodeArray nodes; - void Process(const btDbvtNode* n) { nodes.push_back(n); } -}; - -// -static DBVT_INLINE int indexof(const btDbvtNode* node) -{ - return(node->parent->childs[1]==node); -} - -// -static DBVT_INLINE btDbvtVolume merge( const btDbvtVolume& a, - const btDbvtVolume& b) -{ -#if (DBVT_MERGE_IMPL==DBVT_IMPL_SSE) - ATTRIBUTE_ALIGNED16(char locals[sizeof(btDbvtAabbMm)]); - btDbvtVolume& res=*(btDbvtVolume*)locals; -#else - btDbvtVolume res; -#endif - Merge(a,b,res); - return(res); -} - -// volume+edge lengths -static DBVT_INLINE btScalar size(const btDbvtVolume& a) -{ - const btVector3 edges=a.Lengths(); - return( edges.x()*edges.y()*edges.z()+ - edges.x()+edges.y()+edges.z()); -} - -// -static void getmaxdepth(const btDbvtNode* node,int depth,int& maxdepth) -{ - if(node->isinternal()) - { - getmaxdepth(node->childs[0],depth+1,maxdepth); - getmaxdepth(node->childs[0],depth+1,maxdepth); - } else maxdepth=btMax(maxdepth,depth); -} - -// -static DBVT_INLINE void deletenode( btDbvt* pdbvt, - btDbvtNode* node) -{ - btAlignedFree(pdbvt->m_free); - pdbvt->m_free=node; -} - -// -static void recursedeletenode( btDbvt* pdbvt, - btDbvtNode* node) -{ - if(!node->isleaf()) - { - recursedeletenode(pdbvt,node->childs[0]); - recursedeletenode(pdbvt,node->childs[1]); - } - if(node==pdbvt->m_root) pdbvt->m_root=0; - deletenode(pdbvt,node); -} - -// -static DBVT_INLINE btDbvtNode* createnode( btDbvt* pdbvt, - btDbvtNode* parent, - void* data) -{ - btDbvtNode* node; - if(pdbvt->m_free) - { node=pdbvt->m_free;pdbvt->m_free=0; } - else - { node=new(btAlignedAlloc(sizeof(btDbvtNode),16)) btDbvtNode(); } - node->parent = parent; - node->data = data; - node->childs[1] = 0; - return(node); -} - -// -static DBVT_INLINE btDbvtNode* createnode( btDbvt* pdbvt, - btDbvtNode* parent, - const btDbvtVolume& volume, - void* data) -{ - btDbvtNode* node=createnode(pdbvt,parent,data); - node->volume=volume; - return(node); -} - -// -static DBVT_INLINE btDbvtNode* createnode( btDbvt* pdbvt, - btDbvtNode* parent, - const btDbvtVolume& volume0, - const btDbvtVolume& volume1, - void* data) -{ - btDbvtNode* node=createnode(pdbvt,parent,data); - Merge(volume0,volume1,node->volume); - return(node); -} - -// -static void insertleaf( btDbvt* pdbvt, - btDbvtNode* root, - btDbvtNode* leaf) -{ - if(!pdbvt->m_root) - { - pdbvt->m_root = leaf; - leaf->parent = 0; - } - else - { - if(!root->isleaf()) - { - do { - root=root->childs[Select( leaf->volume, - root->childs[0]->volume, - root->childs[1]->volume)]; - } while(!root->isleaf()); - } - btDbvtNode* prev=root->parent; - btDbvtNode* node=createnode(pdbvt,prev,leaf->volume,root->volume,0); - if(prev) - { - prev->childs[indexof(root)] = node; - node->childs[0] = root;root->parent=node; - node->childs[1] = leaf;leaf->parent=node; - do { - if(!prev->volume.Contain(node->volume)) - Merge(prev->childs[0]->volume,prev->childs[1]->volume,prev->volume); - else - break; - node=prev; - } while(0!=(prev=node->parent)); - } - else - { - node->childs[0] = root;root->parent=node; - node->childs[1] = leaf;leaf->parent=node; - pdbvt->m_root = node; - } - } -} - -// -static btDbvtNode* removeleaf( btDbvt* pdbvt, - btDbvtNode* leaf) -{ - if(leaf==pdbvt->m_root) - { - pdbvt->m_root=0; - return(0); - } - else - { - btDbvtNode* parent=leaf->parent; - btDbvtNode* prev=parent->parent; - btDbvtNode* sibling=parent->childs[1-indexof(leaf)]; - if(prev) - { - prev->childs[indexof(parent)]=sibling; - sibling->parent=prev; - deletenode(pdbvt,parent); - while(prev) - { - const btDbvtVolume pb=prev->volume; - Merge(prev->childs[0]->volume,prev->childs[1]->volume,prev->volume); - if(NotEqual(pb,prev->volume)) - { - prev=prev->parent; - } else break; - } - return(prev?prev:pdbvt->m_root); - } - else - { - pdbvt->m_root=sibling; - sibling->parent=0; - deletenode(pdbvt,parent); - return(pdbvt->m_root); - } - } -} - -// -static void fetchleaves(btDbvt* pdbvt, - btDbvtNode* root, - tNodeArray& leaves, - int depth=-1) -{ - if(root->isinternal()&&depth) - { - fetchleaves(pdbvt,root->childs[0],leaves,depth-1); - fetchleaves(pdbvt,root->childs[1],leaves,depth-1); - deletenode(pdbvt,root); - } - else - { - leaves.push_back(root); - } -} - -// -static void split( const tNodeArray& leaves, - tNodeArray& left, - tNodeArray& right, - const btVector3& org, - const btVector3& axis) -{ - left.resize(0); - right.resize(0); - for(int i=0,ni=leaves.size();ivolume.Center()-org)<0) - left.push_back(leaves[i]); - else - right.push_back(leaves[i]); - } -} - -// -static btDbvtVolume bounds( const tNodeArray& leaves) -{ -#if DBVT_MERGE_IMPL==DBVT_IMPL_SSE - ATTRIBUTE_ALIGNED16(char locals[sizeof(btDbvtVolume)]); - btDbvtVolume& volume=*(btDbvtVolume*)locals; - volume=leaves[0]->volume; -#else - btDbvtVolume volume=leaves[0]->volume; -#endif - for(int i=1,ni=leaves.size();ivolume,volume); - } - return(volume); -} - -// -static void bottomup( btDbvt* pdbvt, - tNodeArray& leaves) -{ - while(leaves.size()>1) - { - btScalar minsize=SIMD_INFINITY; - int minidx[2]={-1,-1}; - for(int i=0;ivolume,leaves[j]->volume)); - if(szvolume,n[1]->volume,0); - p->childs[0] = n[0]; - p->childs[1] = n[1]; - n[0]->parent = p; - n[1]->parent = p; - leaves[minidx[0]] = p; - leaves.swap(minidx[1],leaves.size()-1); - leaves.pop_back(); - } -} - -// -static btDbvtNode* topdown(btDbvt* pdbvt, - tNodeArray& leaves, - int bu_treshold) -{ - static const btVector3 axis[]={btVector3(1,0,0), - btVector3(0,1,0), - btVector3(0,0,1)}; - if(leaves.size()>1) - { - if(leaves.size()>bu_treshold) - { - const btDbvtVolume vol=bounds(leaves); - const btVector3 org=vol.Center(); - tNodeArray sets[2]; - int bestaxis=-1; - int bestmidp=leaves.size(); - int splitcount[3][2]={{0,0},{0,0},{0,0}}; - int i; - for( i=0;ivolume.Center()-org; - for(int j=0;j<3;++j) - { - ++splitcount[j][btDot(x,axis[j])>0?1:0]; - } - } - for( i=0;i<3;++i) - { - if((splitcount[i][0]>0)&&(splitcount[i][1]>0)) - { - const int midp=(int)btFabs(btScalar(splitcount[i][0]-splitcount[i][1])); - if(midp=0) - { - sets[0].reserve(splitcount[bestaxis][0]); - sets[1].reserve(splitcount[bestaxis][1]); - split(leaves,sets[0],sets[1],org,axis[bestaxis]); - } - else - { - sets[0].reserve(leaves.size()/2+1); - sets[1].reserve(leaves.size()/2); - for(int i=0,ni=leaves.size();ichilds[0]=topdown(pdbvt,sets[0],bu_treshold); - node->childs[1]=topdown(pdbvt,sets[1],bu_treshold); - node->childs[0]->parent=node; - node->childs[1]->parent=node; - return(node); - } - else - { - bottomup(pdbvt,leaves); - return(leaves[0]); - } - } - return(leaves[0]); -} - -// -static DBVT_INLINE btDbvtNode* sort(btDbvtNode* n,btDbvtNode*& r) -{ - btDbvtNode* p=n->parent; - btAssert(n->isinternal()); - if(p>n) - { - const int i=indexof(n); - const int j=1-i; - btDbvtNode* s=p->childs[j]; - btDbvtNode* q=p->parent; - btAssert(n==p->childs[i]); - if(q) q->childs[indexof(p)]=n; else r=n; - s->parent=n; - p->parent=n; - n->parent=q; - p->childs[0]=n->childs[0]; - p->childs[1]=n->childs[1]; - n->childs[0]->parent=p; - n->childs[1]->parent=p; - n->childs[i]=p; - n->childs[j]=s; - btSwap(p->volume,n->volume); - return(p); - } - return(n); -} - -#if 0 -static DBVT_INLINE btDbvtNode* walkup(btDbvtNode* n,int count) -{ - while(n&&(count--)) n=n->parent; - return(n); -} -#endif - -// -// Api -// - -// -btDbvt::btDbvt() -{ - m_root = 0; - m_free = 0; - m_lkhd = -1; - m_leaves = 0; - m_opath = 0; -} - -// -btDbvt::~btDbvt() -{ - clear(); -} - -// -void btDbvt::clear() -{ - if(m_root) - recursedeletenode(this,m_root); - btAlignedFree(m_free); - m_free=0; - m_lkhd = -1; - m_stkStack.clear(); - m_opath = 0; - -} - -// -void btDbvt::optimizeBottomUp() -{ - if(m_root) - { - tNodeArray leaves; - leaves.reserve(m_leaves); - fetchleaves(this,m_root,leaves); - bottomup(this,leaves); - m_root=leaves[0]; - } -} - -// -void btDbvt::optimizeTopDown(int bu_treshold) -{ - if(m_root) - { - tNodeArray leaves; - leaves.reserve(m_leaves); - fetchleaves(this,m_root,leaves); - m_root=topdown(this,leaves,bu_treshold); - } -} - -// -void btDbvt::optimizeIncremental(int passes) -{ - if(passes<0) passes=m_leaves; - if(m_root&&(passes>0)) - { - do { - btDbvtNode* node=m_root; - unsigned bit=0; - while(node->isinternal()) - { - node=sort(node,m_root)->childs[(m_opath>>bit)&1]; - bit=(bit+1)&(sizeof(unsigned)*8-1); - } - update(node); - ++m_opath; - } while(--passes); - } -} - -// -btDbvtNode* btDbvt::insert(const btDbvtVolume& volume,void* data) -{ - btDbvtNode* leaf=createnode(this,0,volume,data); - insertleaf(this,m_root,leaf); - ++m_leaves; - return(leaf); -} - -// -void btDbvt::update(btDbvtNode* leaf,int lookahead) -{ - btDbvtNode* root=removeleaf(this,leaf); - if(root) - { - if(lookahead>=0) - { - for(int i=0;(iparent;++i) - { - root=root->parent; - } - } else root=m_root; - } - insertleaf(this,root,leaf); -} - -// -void btDbvt::update(btDbvtNode* leaf,btDbvtVolume& volume) -{ - btDbvtNode* root=removeleaf(this,leaf); - if(root) - { - if(m_lkhd>=0) - { - for(int i=0;(iparent;++i) - { - root=root->parent; - } - } else root=m_root; - } - leaf->volume=volume; - insertleaf(this,root,leaf); -} - -// -bool btDbvt::update(btDbvtNode* leaf,btDbvtVolume& volume,const btVector3& velocity,btScalar margin) -{ - if(leaf->volume.Contain(volume)) return(false); - volume.Expand(btVector3(margin,margin,margin)); - volume.SignedExpand(velocity); - update(leaf,volume); - return(true); -} - -// -bool btDbvt::update(btDbvtNode* leaf,btDbvtVolume& volume,const btVector3& velocity) -{ - if(leaf->volume.Contain(volume)) return(false); - volume.SignedExpand(velocity); - update(leaf,volume); - return(true); -} - -// -bool btDbvt::update(btDbvtNode* leaf,btDbvtVolume& volume,btScalar margin) -{ - if(leaf->volume.Contain(volume)) return(false); - volume.Expand(btVector3(margin,margin,margin)); - update(leaf,volume); - return(true); -} - -// -void btDbvt::remove(btDbvtNode* leaf) -{ - removeleaf(this,leaf); - deletenode(this,leaf); - --m_leaves; -} - -// -void btDbvt::write(IWriter* iwriter) const -{ - btDbvtNodeEnumerator nodes; - nodes.nodes.reserve(m_leaves*2); - enumNodes(m_root,nodes); - iwriter->Prepare(m_root,nodes.nodes.size()); - for(int i=0;iparent) p=nodes.nodes.findLinearSearch(n->parent); - if(n->isinternal()) - { - const int c0=nodes.nodes.findLinearSearch(n->childs[0]); - const int c1=nodes.nodes.findLinearSearch(n->childs[1]); - iwriter->WriteNode(n,i,p,c0,c1); - } - else - { - iwriter->WriteLeaf(n,i,p); - } - } -} - -// -void btDbvt::clone(btDbvt& dest,IClone* iclone) const -{ - dest.clear(); - if(m_root!=0) - { - btAlignedObjectArray stack; - stack.reserve(m_leaves); - stack.push_back(sStkCLN(m_root,0)); - do { - const int i=stack.size()-1; - const sStkCLN e=stack[i]; - btDbvtNode* n=createnode(&dest,e.parent,e.node->volume,e.node->data); - stack.pop_back(); - if(e.parent!=0) - e.parent->childs[i&1]=n; - else - dest.m_root=n; - if(e.node->isinternal()) - { - stack.push_back(sStkCLN(e.node->childs[0],n)); - stack.push_back(sStkCLN(e.node->childs[1],n)); - } - else - { - iclone->CloneLeaf(n); - } - } while(stack.size()>0); - } -} - -// -int btDbvt::maxdepth(const btDbvtNode* node) -{ - int depth=0; - if(node) getmaxdepth(node,1,depth); - return(depth); -} - -// -int btDbvt::countLeaves(const btDbvtNode* node) -{ - if(node->isinternal()) - return(countLeaves(node->childs[0])+countLeaves(node->childs[1])); - else - return(1); -} - -// -void btDbvt::extractLeaves(const btDbvtNode* node,btAlignedObjectArray& leaves) -{ - if(node->isinternal()) - { - extractLeaves(node->childs[0],leaves); - extractLeaves(node->childs[1],leaves); - } - else - { - leaves.push_back(node); - } -} - -// -#if DBVT_ENABLE_BENCHMARK - -#include -#include -#include "LinearMath/btQuickProf.h" - -/* -q6600,2.4ghz - -/Ox /Ob2 /Oi /Ot /I "." /I "..\.." /I "..\..\src" /D "NDEBUG" /D "_LIB" /D "_WINDOWS" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "WIN32" -/GF /FD /MT /GS- /Gy /arch:SSE2 /Zc:wchar_t- /Fp"..\..\out\release8\build\libbulletcollision\libbulletcollision.pch" -/Fo"..\..\out\release8\build\libbulletcollision\\" -/Fd"..\..\out\release8\build\libbulletcollision\bulletcollision.pdb" -/W3 /nologo /c /Wp64 /Zi /errorReport:prompt - -Benchmarking dbvt... -World scale: 100.000000 -Extents base: 1.000000 -Extents range: 4.000000 -Leaves: 8192 -sizeof(btDbvtVolume): 32 bytes -sizeof(btDbvtNode): 44 bytes -[1] btDbvtVolume intersections: 3499 ms (-1%) -[2] btDbvtVolume merges: 1934 ms (0%) -[3] btDbvt::collideTT: 5485 ms (-21%) -[4] btDbvt::collideTT self: 2814 ms (-20%) -[5] btDbvt::collideTT xform: 7379 ms (-1%) -[6] btDbvt::collideTT xform,self: 7270 ms (-2%) -[7] btDbvt::rayTest: 6314 ms (0%),(332143 r/s) -[8] insert/remove: 2093 ms (0%),(1001983 ir/s) -[9] updates (teleport): 1879 ms (-3%),(1116100 u/s) -[10] updates (jitter): 1244 ms (-4%),(1685813 u/s) -[11] optimize (incremental): 2514 ms (0%),(1668000 o/s) -[12] btDbvtVolume notequal: 3659 ms (0%) -[13] culling(OCL+fullsort): 2218 ms (0%),(461 t/s) -[14] culling(OCL+qsort): 3688 ms (5%),(2221 t/s) -[15] culling(KDOP+qsort): 1139 ms (-1%),(7192 t/s) -[16] insert/remove batch(256): 5092 ms (0%),(823704 bir/s) -[17] btDbvtVolume select: 3419 ms (0%) -*/ - -struct btDbvtBenchmark -{ - struct NilPolicy : btDbvt::ICollide - { - NilPolicy() : m_pcount(0),m_depth(-SIMD_INFINITY),m_checksort(true) {} - void Process(const btDbvtNode*,const btDbvtNode*) { ++m_pcount; } - void Process(const btDbvtNode*) { ++m_pcount; } - void Process(const btDbvtNode*,btScalar depth) - { - ++m_pcount; - if(m_checksort) - { if(depth>=m_depth) m_depth=depth; else printf("wrong depth: %f (should be >= %f)\r\n",depth,m_depth); } - } - int m_pcount; - btScalar m_depth; - bool m_checksort; - }; - struct P14 : btDbvt::ICollide - { - struct Node - { - const btDbvtNode* leaf; - btScalar depth; - }; - void Process(const btDbvtNode* leaf,btScalar depth) - { - Node n; - n.leaf = leaf; - n.depth = depth; - } - static int sortfnc(const Node& a,const Node& b) - { - if(a.depthb.depth) return(-1); - return(0); - } - btAlignedObjectArray m_nodes; - }; - struct P15 : btDbvt::ICollide - { - struct Node - { - const btDbvtNode* leaf; - btScalar depth; - }; - void Process(const btDbvtNode* leaf) - { - Node n; - n.leaf = leaf; - n.depth = dot(leaf->volume.Center(),m_axis); - } - static int sortfnc(const Node& a,const Node& b) - { - if(a.depthb.depth) return(-1); - return(0); - } - btAlignedObjectArray m_nodes; - btVector3 m_axis; - }; - static btScalar RandUnit() - { - return(rand()/(btScalar)RAND_MAX); - } - static btVector3 RandVector3() - { - return(btVector3(RandUnit(),RandUnit(),RandUnit())); - } - static btVector3 RandVector3(btScalar cs) - { - return(RandVector3()*cs-btVector3(cs,cs,cs)/2); - } - static btDbvtVolume RandVolume(btScalar cs,btScalar eb,btScalar es) - { - return(btDbvtVolume::FromCE(RandVector3(cs),btVector3(eb,eb,eb)+RandVector3()*es)); - } - static btTransform RandTransform(btScalar cs) - { - btTransform t; - t.setOrigin(RandVector3(cs)); - t.setRotation(btQuaternion(RandUnit()*SIMD_PI*2,RandUnit()*SIMD_PI*2,RandUnit()*SIMD_PI*2).normalized()); - return(t); - } - static void RandTree(btScalar cs,btScalar eb,btScalar es,int leaves,btDbvt& dbvt) - { - dbvt.clear(); - for(int i=0;i volumes; - btAlignedObjectArray results; - volumes.resize(cfgLeaves); - results.resize(cfgLeaves); - for(int i=0;i volumes; - btAlignedObjectArray results; - volumes.resize(cfgLeaves); - results.resize(cfgLeaves); - for(int i=0;i transforms; - btDbvtBenchmark::NilPolicy policy; - transforms.resize(cfgBenchmark5_Iterations); - for(int i=0;i transforms; - btDbvtBenchmark::NilPolicy policy; - transforms.resize(cfgBenchmark6_Iterations); - for(int i=0;i rayorg; - btAlignedObjectArray raydir; - btDbvtBenchmark::NilPolicy policy; - rayorg.resize(cfgBenchmark7_Iterations); - raydir.resize(cfgBenchmark7_Iterations); - for(int i=0;i leaves; - btDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt); - dbvt.optimizeTopDown(); - dbvt.extractLeaves(dbvt.m_root,leaves); - printf("[9] updates (teleport): "); - wallclock.reset(); - for(int i=0;i(leaves[rand()%cfgLeaves]), - btDbvtBenchmark::RandVolume(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale)); - } - } - const int time=(int)wallclock.getTimeMilliseconds(); - const int up=cfgBenchmark9_Passes*cfgBenchmark9_Iterations; - printf("%u ms (%i%%),(%u u/s)\r\n",time,(time-cfgBenchmark9_Reference)*100/time,up*1000/time); - } - if(cfgBenchmark10_Enable) - {// Benchmark 10 - srand(380843); - btDbvt dbvt; - btAlignedObjectArray leaves; - btAlignedObjectArray vectors; - vectors.resize(cfgBenchmark10_Iterations); - for(int i=0;i(leaves[rand()%cfgLeaves]); - btDbvtVolume v=btDbvtVolume::FromMM(l->volume.Mins()+d,l->volume.Maxs()+d); - dbvt.update(l,v); - } - } - const int time=(int)wallclock.getTimeMilliseconds(); - const int up=cfgBenchmark10_Passes*cfgBenchmark10_Iterations; - printf("%u ms (%i%%),(%u u/s)\r\n",time,(time-cfgBenchmark10_Reference)*100/time,up*1000/time); - } - if(cfgBenchmark11_Enable) - {// Benchmark 11 - srand(380843); - btDbvt dbvt; - btDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt); - dbvt.optimizeTopDown(); - printf("[11] optimize (incremental): "); - wallclock.reset(); - for(int i=0;i volumes; - btAlignedObjectArray results; - volumes.resize(cfgLeaves); - results.resize(cfgLeaves); - for(int i=0;i vectors; - btDbvtBenchmark::NilPolicy policy; - vectors.resize(cfgBenchmark13_Iterations); - for(int i=0;i vectors; - btDbvtBenchmark::P14 policy; - vectors.resize(cfgBenchmark14_Iterations); - for(int i=0;i vectors; - btDbvtBenchmark::P15 policy; - vectors.resize(cfgBenchmark15_Iterations); - for(int i=0;i batch; - btDbvtBenchmark::RandTree(cfgVolumeCenterScale,cfgVolumeExentsBase,cfgVolumeExentsScale,cfgLeaves,dbvt); - dbvt.optimizeTopDown(); - batch.reserve(cfgBenchmark16_BatchCount); - printf("[16] insert/remove batch(%u): ",cfgBenchmark16_BatchCount); - wallclock.reset(); - for(int i=0;i volumes; - btAlignedObjectArray results; - btAlignedObjectArray indices; - volumes.resize(cfgLeaves); - results.resize(cfgLeaves); - indices.resize(cfgLeaves); - for(int i=0;i= 1400) -#define DBVT_USE_TEMPLATE 1 -#else -#define DBVT_USE_TEMPLATE 0 -#endif -#else -#define DBVT_USE_TEMPLATE 0 -#endif - -// Use only intrinsics instead of inline asm -#define DBVT_USE_INTRINSIC_SSE 1 - -// Using memmov for collideOCL -#define DBVT_USE_MEMMOVE 1 - -// Enable benchmarking code -#define DBVT_ENABLE_BENCHMARK 0 - -// Inlining -#define DBVT_INLINE SIMD_FORCE_INLINE - -// Specific methods implementation - -//SSE gives errors on a MSVC 7.1 -#if defined (BT_USE_SSE) && defined (_WIN32) -#define DBVT_SELECT_IMPL DBVT_IMPL_SSE -#define DBVT_MERGE_IMPL DBVT_IMPL_SSE -#define DBVT_INT0_IMPL DBVT_IMPL_SSE -#else -#define DBVT_SELECT_IMPL DBVT_IMPL_GENERIC -#define DBVT_MERGE_IMPL DBVT_IMPL_GENERIC -#define DBVT_INT0_IMPL DBVT_IMPL_GENERIC -#endif - -#if (DBVT_SELECT_IMPL==DBVT_IMPL_SSE)|| \ - (DBVT_MERGE_IMPL==DBVT_IMPL_SSE)|| \ - (DBVT_INT0_IMPL==DBVT_IMPL_SSE) -#include -#endif - -// -// Auto config and checks -// - -#if DBVT_USE_TEMPLATE -#define DBVT_VIRTUAL -#define DBVT_VIRTUAL_DTOR(a) -#define DBVT_PREFIX template -#define DBVT_IPOLICY T& policy -#define DBVT_CHECKTYPE static const ICollide& typechecker=*(T*)1;(void)typechecker; -#else -#define DBVT_VIRTUAL_DTOR(a) virtual ~a() {} -#define DBVT_VIRTUAL virtual -#define DBVT_PREFIX -#define DBVT_IPOLICY ICollide& policy -#define DBVT_CHECKTYPE -#endif - -#if DBVT_USE_MEMMOVE -#if !defined( __CELLOS_LV2__) && !defined(__MWERKS__) -#include -#endif -#include -#endif - -#ifndef DBVT_USE_TEMPLATE -#error "DBVT_USE_TEMPLATE undefined" -#endif - -#ifndef DBVT_USE_MEMMOVE -#error "DBVT_USE_MEMMOVE undefined" -#endif - -#ifndef DBVT_ENABLE_BENCHMARK -#error "DBVT_ENABLE_BENCHMARK undefined" -#endif - -#ifndef DBVT_SELECT_IMPL -#error "DBVT_SELECT_IMPL undefined" -#endif - -#ifndef DBVT_MERGE_IMPL -#error "DBVT_MERGE_IMPL undefined" -#endif - -#ifndef DBVT_INT0_IMPL -#error "DBVT_INT0_IMPL undefined" -#endif - -// -// Defaults volumes -// - -/* btDbvtAabbMm */ -struct btDbvtAabbMm -{ - DBVT_INLINE btVector3 Center() const { return((mi+mx)/2); } - DBVT_INLINE btVector3 Lengths() const { return(mx-mi); } - DBVT_INLINE btVector3 Extents() const { return((mx-mi)/2); } - DBVT_INLINE const btVector3& Mins() const { return(mi); } - DBVT_INLINE const btVector3& Maxs() const { return(mx); } - static inline btDbvtAabbMm FromCE(const btVector3& c,const btVector3& e); - static inline btDbvtAabbMm FromCR(const btVector3& c,btScalar r); - static inline btDbvtAabbMm FromMM(const btVector3& mi,const btVector3& mx); - static inline btDbvtAabbMm FromPoints(const btVector3* pts,int n); - static inline btDbvtAabbMm FromPoints(const btVector3** ppts,int n); - DBVT_INLINE void Expand(const btVector3& e); - DBVT_INLINE void SignedExpand(const btVector3& e); - DBVT_INLINE bool Contain(const btDbvtAabbMm& a) const; - DBVT_INLINE int Classify(const btVector3& n,btScalar o,int s) const; - DBVT_INLINE btScalar ProjectMinimum(const btVector3& v,unsigned signs) const; - DBVT_INLINE friend bool Intersect( const btDbvtAabbMm& a, - const btDbvtAabbMm& b); - - DBVT_INLINE friend bool Intersect( const btDbvtAabbMm& a, - const btVector3& b); - - DBVT_INLINE friend btScalar Proximity( const btDbvtAabbMm& a, - const btDbvtAabbMm& b); - DBVT_INLINE friend int Select( const btDbvtAabbMm& o, - const btDbvtAabbMm& a, - const btDbvtAabbMm& b); - DBVT_INLINE friend void Merge( const btDbvtAabbMm& a, - const btDbvtAabbMm& b, - btDbvtAabbMm& r); - DBVT_INLINE friend bool NotEqual( const btDbvtAabbMm& a, - const btDbvtAabbMm& b); -private: - DBVT_INLINE void AddSpan(const btVector3& d,btScalar& smi,btScalar& smx) const; -private: - btVector3 mi,mx; -}; - -// Types -typedef btDbvtAabbMm btDbvtVolume; - -/* btDbvtNode */ -struct btDbvtNode -{ - btDbvtVolume volume; - btDbvtNode* parent; - DBVT_INLINE bool isleaf() const { return(childs[1]==0); } - DBVT_INLINE bool isinternal() const { return(!isleaf()); } - union - { - btDbvtNode* childs[2]; - void* data; - int dataAsInt; - }; -}; - -///The btDbvt class implements a fast dynamic bounding volume tree based on axis aligned bounding boxes (aabb tree). -///This btDbvt is used for soft body collision detection and for the btDbvtBroadphase. It has a fast insert, remove and update of nodes. -///Unlike the btQuantizedBvh, nodes can be dynamically moved around, which allows for change in topology of the underlying data structure. -struct btDbvt -{ - /* Stack element */ - struct sStkNN - { - const btDbvtNode* a; - const btDbvtNode* b; - sStkNN() {} - sStkNN(const btDbvtNode* na,const btDbvtNode* nb) : a(na),b(nb) {} - }; - struct sStkNP - { - const btDbvtNode* node; - int mask; - sStkNP(const btDbvtNode* n,unsigned m) : node(n),mask(m) {} - }; - struct sStkNPS - { - const btDbvtNode* node; - int mask; - btScalar value; - sStkNPS() {} - sStkNPS(const btDbvtNode* n,unsigned m,btScalar v) : node(n),mask(m),value(v) {} - }; - struct sStkCLN - { - const btDbvtNode* node; - btDbvtNode* parent; - sStkCLN(const btDbvtNode* n,btDbvtNode* p) : node(n),parent(p) {} - }; - // Policies/Interfaces - - /* ICollide */ - struct ICollide - { - DBVT_VIRTUAL_DTOR(ICollide) - DBVT_VIRTUAL void Process(const btDbvtNode*,const btDbvtNode*) {} - DBVT_VIRTUAL void Process(const btDbvtNode*) {} - DBVT_VIRTUAL void Process(const btDbvtNode* n,btScalar) { Process(n); } - DBVT_VIRTUAL bool Descent(const btDbvtNode*) { return(true); } - DBVT_VIRTUAL bool AllLeaves(const btDbvtNode*) { return(true); } - }; - /* IWriter */ - struct IWriter - { - virtual ~IWriter() {} - virtual void Prepare(const btDbvtNode* root,int numnodes)=0; - virtual void WriteNode(const btDbvtNode*,int index,int parent,int child0,int child1)=0; - virtual void WriteLeaf(const btDbvtNode*,int index,int parent)=0; - }; - /* IClone */ - struct IClone - { - virtual ~IClone() {} - virtual void CloneLeaf(btDbvtNode*) {} - }; - - // Constants - enum { - SIMPLE_STACKSIZE = 64, - DOUBLE_STACKSIZE = SIMPLE_STACKSIZE*2 - }; - - // Fields - btDbvtNode* m_root; - btDbvtNode* m_free; - int m_lkhd; - int m_leaves; - unsigned m_opath; - - - btAlignedObjectArray m_stkStack; - - - // Methods - btDbvt(); - ~btDbvt(); - void clear(); - bool empty() const { return(0==m_root); } - void optimizeBottomUp(); - void optimizeTopDown(int bu_treshold=128); - void optimizeIncremental(int passes); - btDbvtNode* insert(const btDbvtVolume& box,void* data); - void update(btDbvtNode* leaf,int lookahead=-1); - void update(btDbvtNode* leaf,btDbvtVolume& volume); - bool update(btDbvtNode* leaf,btDbvtVolume& volume,const btVector3& velocity,btScalar margin); - bool update(btDbvtNode* leaf,btDbvtVolume& volume,const btVector3& velocity); - bool update(btDbvtNode* leaf,btDbvtVolume& volume,btScalar margin); - void remove(btDbvtNode* leaf); - void write(IWriter* iwriter) const; - void clone(btDbvt& dest,IClone* iclone=0) const; - static int maxdepth(const btDbvtNode* node); - static int countLeaves(const btDbvtNode* node); - static void extractLeaves(const btDbvtNode* node,btAlignedObjectArray& leaves); -#if DBVT_ENABLE_BENCHMARK - static void benchmark(); -#else - static void benchmark(){} -#endif - // DBVT_IPOLICY must support ICollide policy/interface - DBVT_PREFIX - static void enumNodes( const btDbvtNode* root, - DBVT_IPOLICY); - DBVT_PREFIX - static void enumLeaves( const btDbvtNode* root, - DBVT_IPOLICY); - DBVT_PREFIX - void collideTT( const btDbvtNode* root0, - const btDbvtNode* root1, - DBVT_IPOLICY); - - DBVT_PREFIX - void collideTTpersistentStack( const btDbvtNode* root0, - const btDbvtNode* root1, - DBVT_IPOLICY); -#if 0 - DBVT_PREFIX - void collideTT( const btDbvtNode* root0, - const btDbvtNode* root1, - const btTransform& xform, - DBVT_IPOLICY); - DBVT_PREFIX - void collideTT( const btDbvtNode* root0, - const btTransform& xform0, - const btDbvtNode* root1, - const btTransform& xform1, - DBVT_IPOLICY); -#endif - - DBVT_PREFIX - void collideTV( const btDbvtNode* root, - const btDbvtVolume& volume, - DBVT_IPOLICY); - ///rayTest is a re-entrant ray test, and can be called in parallel as long as the btAlignedAlloc is thread-safe (uses locking etc) - ///rayTest is slower than rayTestInternal, because it builds a local stack, using memory allocations, and it recomputes signs/rayDirectionInverses each time - DBVT_PREFIX - static void rayTest( const btDbvtNode* root, - const btVector3& rayFrom, - const btVector3& rayTo, - DBVT_IPOLICY); - ///rayTestInternal is faster than rayTest, because it uses a persistent stack (to reduce dynamic memory allocations to a minimum) and it uses precomputed signs/rayInverseDirections - ///rayTestInternal is used by btDbvtBroadphase to accelerate world ray casts - DBVT_PREFIX - void rayTestInternal( const btDbvtNode* root, - const btVector3& rayFrom, - const btVector3& rayTo, - const btVector3& rayDirectionInverse, - unsigned int signs[3], - btScalar lambda_max, - const btVector3& aabbMin, - const btVector3& aabbMax, - DBVT_IPOLICY) const; - - DBVT_PREFIX - static void collideKDOP(const btDbvtNode* root, - const btVector3* normals, - const btScalar* offsets, - int count, - DBVT_IPOLICY); - DBVT_PREFIX - static void collideOCL( const btDbvtNode* root, - const btVector3* normals, - const btScalar* offsets, - const btVector3& sortaxis, - int count, - DBVT_IPOLICY, - bool fullsort=true); - DBVT_PREFIX - static void collideTU( const btDbvtNode* root, - DBVT_IPOLICY); - // Helpers - static DBVT_INLINE int nearest(const int* i,const btDbvt::sStkNPS* a,btScalar v,int l,int h) - { - int m=0; - while(l>1; - if(a[i[m]].value>=v) l=m+1; else h=m; - } - return(h); - } - static DBVT_INLINE int allocate( btAlignedObjectArray& ifree, - btAlignedObjectArray& stock, - const sStkNPS& value) - { - int i; - if(ifree.size()>0) - { i=ifree[ifree.size()-1];ifree.pop_back();stock[i]=value; } - else - { i=stock.size();stock.push_back(value); } - return(i); - } - // -private: - btDbvt(const btDbvt&) {} -}; - -// -// Inline's -// - -// -inline btDbvtAabbMm btDbvtAabbMm::FromCE(const btVector3& c,const btVector3& e) -{ - btDbvtAabbMm box; - box.mi=c-e;box.mx=c+e; - return(box); -} - -// -inline btDbvtAabbMm btDbvtAabbMm::FromCR(const btVector3& c,btScalar r) -{ - return(FromCE(c,btVector3(r,r,r))); -} - -// -inline btDbvtAabbMm btDbvtAabbMm::FromMM(const btVector3& mi,const btVector3& mx) -{ - btDbvtAabbMm box; - box.mi=mi;box.mx=mx; - return(box); -} - -// -inline btDbvtAabbMm btDbvtAabbMm::FromPoints(const btVector3* pts,int n) -{ - btDbvtAabbMm box; - box.mi=box.mx=pts[0]; - for(int i=1;i0) mx.setX(mx.x()+e[0]); else mi.setX(mi.x()+e[0]); - if(e.y()>0) mx.setY(mx.y()+e[1]); else mi.setY(mi.y()+e[1]); - if(e.z()>0) mx.setZ(mx.z()+e[2]); else mi.setZ(mi.z()+e[2]); -} - -// -DBVT_INLINE bool btDbvtAabbMm::Contain(const btDbvtAabbMm& a) const -{ - return( (mi.x()<=a.mi.x())&& - (mi.y()<=a.mi.y())&& - (mi.z()<=a.mi.z())&& - (mx.x()>=a.mx.x())&& - (mx.y()>=a.mx.y())&& - (mx.z()>=a.mx.z())); -} - -// -DBVT_INLINE int btDbvtAabbMm::Classify(const btVector3& n,btScalar o,int s) const -{ - btVector3 pi,px; - switch(s) - { - case (0+0+0): px=btVector3(mi.x(),mi.y(),mi.z()); - pi=btVector3(mx.x(),mx.y(),mx.z());break; - case (1+0+0): px=btVector3(mx.x(),mi.y(),mi.z()); - pi=btVector3(mi.x(),mx.y(),mx.z());break; - case (0+2+0): px=btVector3(mi.x(),mx.y(),mi.z()); - pi=btVector3(mx.x(),mi.y(),mx.z());break; - case (1+2+0): px=btVector3(mx.x(),mx.y(),mi.z()); - pi=btVector3(mi.x(),mi.y(),mx.z());break; - case (0+0+4): px=btVector3(mi.x(),mi.y(),mx.z()); - pi=btVector3(mx.x(),mx.y(),mi.z());break; - case (1+0+4): px=btVector3(mx.x(),mi.y(),mx.z()); - pi=btVector3(mi.x(),mx.y(),mi.z());break; - case (0+2+4): px=btVector3(mi.x(),mx.y(),mx.z()); - pi=btVector3(mx.x(),mi.y(),mi.z());break; - case (1+2+4): px=btVector3(mx.x(),mx.y(),mx.z()); - pi=btVector3(mi.x(),mi.y(),mi.z());break; - } - if((btDot(n,px)+o)<0) return(-1); - if((btDot(n,pi)+o)>=0) return(+1); - return(0); -} - -// -DBVT_INLINE btScalar btDbvtAabbMm::ProjectMinimum(const btVector3& v,unsigned signs) const -{ - const btVector3* b[]={&mx,&mi}; - const btVector3 p( b[(signs>>0)&1]->x(), - b[(signs>>1)&1]->y(), - b[(signs>>2)&1]->z()); - return(btDot(p,v)); -} - -// -DBVT_INLINE void btDbvtAabbMm::AddSpan(const btVector3& d,btScalar& smi,btScalar& smx) const -{ - for(int i=0;i<3;++i) - { - if(d[i]<0) - { smi+=mx[i]*d[i];smx+=mi[i]*d[i]; } - else - { smi+=mi[i]*d[i];smx+=mx[i]*d[i]; } - } -} - -// -DBVT_INLINE bool Intersect( const btDbvtAabbMm& a, - const btDbvtAabbMm& b) -{ -#if DBVT_INT0_IMPL == DBVT_IMPL_SSE - const __m128 rt(_mm_or_ps( _mm_cmplt_ps(_mm_load_ps(b.mx),_mm_load_ps(a.mi)), - _mm_cmplt_ps(_mm_load_ps(a.mx),_mm_load_ps(b.mi)))); - const __int32* pu((const __int32*)&rt); - return((pu[0]|pu[1]|pu[2])==0); -#else - return( (a.mi.x()<=b.mx.x())&& - (a.mx.x()>=b.mi.x())&& - (a.mi.y()<=b.mx.y())&& - (a.mx.y()>=b.mi.y())&& - (a.mi.z()<=b.mx.z())&& - (a.mx.z()>=b.mi.z())); -#endif -} - - - -// -DBVT_INLINE bool Intersect( const btDbvtAabbMm& a, - const btVector3& b) -{ - return( (b.x()>=a.mi.x())&& - (b.y()>=a.mi.y())&& - (b.z()>=a.mi.z())&& - (b.x()<=a.mx.x())&& - (b.y()<=a.mx.y())&& - (b.z()<=a.mx.z())); -} - - - - - -////////////////////////////////////// - - -// -DBVT_INLINE btScalar Proximity( const btDbvtAabbMm& a, - const btDbvtAabbMm& b) -{ - const btVector3 d=(a.mi+a.mx)-(b.mi+b.mx); - return(btFabs(d.x())+btFabs(d.y())+btFabs(d.z())); -} - - - -// -DBVT_INLINE int Select( const btDbvtAabbMm& o, - const btDbvtAabbMm& a, - const btDbvtAabbMm& b) -{ -#if DBVT_SELECT_IMPL == DBVT_IMPL_SSE - static ATTRIBUTE_ALIGNED16(const unsigned __int32) mask[]={0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff}; - ///@todo: the intrinsic version is 11% slower -#if DBVT_USE_INTRINSIC_SSE - - union btSSEUnion ///NOTE: if we use more intrinsics, move btSSEUnion into the LinearMath directory - { - __m128 ssereg; - float floats[4]; - int ints[4]; - }; - - __m128 omi(_mm_load_ps(o.mi)); - omi=_mm_add_ps(omi,_mm_load_ps(o.mx)); - __m128 ami(_mm_load_ps(a.mi)); - ami=_mm_add_ps(ami,_mm_load_ps(a.mx)); - ami=_mm_sub_ps(ami,omi); - ami=_mm_and_ps(ami,_mm_load_ps((const float*)mask)); - __m128 bmi(_mm_load_ps(b.mi)); - bmi=_mm_add_ps(bmi,_mm_load_ps(b.mx)); - bmi=_mm_sub_ps(bmi,omi); - bmi=_mm_and_ps(bmi,_mm_load_ps((const float*)mask)); - __m128 t0(_mm_movehl_ps(ami,ami)); - ami=_mm_add_ps(ami,t0); - ami=_mm_add_ss(ami,_mm_shuffle_ps(ami,ami,1)); - __m128 t1(_mm_movehl_ps(bmi,bmi)); - bmi=_mm_add_ps(bmi,t1); - bmi=_mm_add_ss(bmi,_mm_shuffle_ps(bmi,bmi,1)); - - btSSEUnion tmp; - tmp.ssereg = _mm_cmple_ss(bmi,ami); - return tmp.ints[0]&1; - -#else - ATTRIBUTE_ALIGNED16(__int32 r[1]); - __asm - { - mov eax,o - mov ecx,a - mov edx,b - movaps xmm0,[eax] - movaps xmm5,mask - addps xmm0,[eax+16] - movaps xmm1,[ecx] - movaps xmm2,[edx] - addps xmm1,[ecx+16] - addps xmm2,[edx+16] - subps xmm1,xmm0 - subps xmm2,xmm0 - andps xmm1,xmm5 - andps xmm2,xmm5 - movhlps xmm3,xmm1 - movhlps xmm4,xmm2 - addps xmm1,xmm3 - addps xmm2,xmm4 - pshufd xmm3,xmm1,1 - pshufd xmm4,xmm2,1 - addss xmm1,xmm3 - addss xmm2,xmm4 - cmpless xmm2,xmm1 - movss r,xmm2 - } - return(r[0]&1); -#endif -#else - return(Proximity(o,a)b.mx[i]) r.mx[i]=a.mx[i]; else r.mx[i]=b.mx[i]; - } -#endif -} - -// -DBVT_INLINE bool NotEqual( const btDbvtAabbMm& a, - const btDbvtAabbMm& b) -{ - return( (a.mi.x()!=b.mi.x())|| - (a.mi.y()!=b.mi.y())|| - (a.mi.z()!=b.mi.z())|| - (a.mx.x()!=b.mx.x())|| - (a.mx.y()!=b.mx.y())|| - (a.mx.z()!=b.mx.z())); -} - -// -// Inline's -// - -// -DBVT_PREFIX -inline void btDbvt::enumNodes( const btDbvtNode* root, - DBVT_IPOLICY) -{ - DBVT_CHECKTYPE - policy.Process(root); - if(root->isinternal()) - { - enumNodes(root->childs[0],policy); - enumNodes(root->childs[1],policy); - } -} - -// -DBVT_PREFIX -inline void btDbvt::enumLeaves( const btDbvtNode* root, - DBVT_IPOLICY) -{ - DBVT_CHECKTYPE - if(root->isinternal()) - { - enumLeaves(root->childs[0],policy); - enumLeaves(root->childs[1],policy); - } - else - { - policy.Process(root); - } -} - -// -DBVT_PREFIX -inline void btDbvt::collideTT( const btDbvtNode* root0, - const btDbvtNode* root1, - DBVT_IPOLICY) -{ - DBVT_CHECKTYPE - if(root0&&root1) - { - int depth=1; - int treshold=DOUBLE_STACKSIZE-4; - btAlignedObjectArray stkStack; - stkStack.resize(DOUBLE_STACKSIZE); - stkStack[0]=sStkNN(root0,root1); - do { - sStkNN p=stkStack[--depth]; - if(depth>treshold) - { - stkStack.resize(stkStack.size()*2); - treshold=stkStack.size()-4; - } - if(p.a==p.b) - { - if(p.a->isinternal()) - { - stkStack[depth++]=sStkNN(p.a->childs[0],p.a->childs[0]); - stkStack[depth++]=sStkNN(p.a->childs[1],p.a->childs[1]); - stkStack[depth++]=sStkNN(p.a->childs[0],p.a->childs[1]); - } - } - else if(Intersect(p.a->volume,p.b->volume)) - { - if(p.a->isinternal()) - { - if(p.b->isinternal()) - { - stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[0]); - stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[0]); - stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[1]); - stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[1]); - } - else - { - stkStack[depth++]=sStkNN(p.a->childs[0],p.b); - stkStack[depth++]=sStkNN(p.a->childs[1],p.b); - } - } - else - { - if(p.b->isinternal()) - { - stkStack[depth++]=sStkNN(p.a,p.b->childs[0]); - stkStack[depth++]=sStkNN(p.a,p.b->childs[1]); - } - else - { - policy.Process(p.a,p.b); - } - } - } - } while(depth); - } -} - - - -DBVT_PREFIX -inline void btDbvt::collideTTpersistentStack( const btDbvtNode* root0, - const btDbvtNode* root1, - DBVT_IPOLICY) -{ - DBVT_CHECKTYPE - if(root0&&root1) - { - int depth=1; - int treshold=DOUBLE_STACKSIZE-4; - - m_stkStack.resize(DOUBLE_STACKSIZE); - m_stkStack[0]=sStkNN(root0,root1); - do { - sStkNN p=m_stkStack[--depth]; - if(depth>treshold) - { - m_stkStack.resize(m_stkStack.size()*2); - treshold=m_stkStack.size()-4; - } - if(p.a==p.b) - { - if(p.a->isinternal()) - { - m_stkStack[depth++]=sStkNN(p.a->childs[0],p.a->childs[0]); - m_stkStack[depth++]=sStkNN(p.a->childs[1],p.a->childs[1]); - m_stkStack[depth++]=sStkNN(p.a->childs[0],p.a->childs[1]); - } - } - else if(Intersect(p.a->volume,p.b->volume)) - { - if(p.a->isinternal()) - { - if(p.b->isinternal()) - { - m_stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[0]); - m_stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[0]); - m_stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[1]); - m_stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[1]); - } - else - { - m_stkStack[depth++]=sStkNN(p.a->childs[0],p.b); - m_stkStack[depth++]=sStkNN(p.a->childs[1],p.b); - } - } - else - { - if(p.b->isinternal()) - { - m_stkStack[depth++]=sStkNN(p.a,p.b->childs[0]); - m_stkStack[depth++]=sStkNN(p.a,p.b->childs[1]); - } - else - { - policy.Process(p.a,p.b); - } - } - } - } while(depth); - } -} - -#if 0 -// -DBVT_PREFIX -inline void btDbvt::collideTT( const btDbvtNode* root0, - const btDbvtNode* root1, - const btTransform& xform, - DBVT_IPOLICY) -{ - DBVT_CHECKTYPE - if(root0&&root1) - { - int depth=1; - int treshold=DOUBLE_STACKSIZE-4; - btAlignedObjectArray stkStack; - stkStack.resize(DOUBLE_STACKSIZE); - stkStack[0]=sStkNN(root0,root1); - do { - sStkNN p=stkStack[--depth]; - if(Intersect(p.a->volume,p.b->volume,xform)) - { - if(depth>treshold) - { - stkStack.resize(stkStack.size()*2); - treshold=stkStack.size()-4; - } - if(p.a->isinternal()) - { - if(p.b->isinternal()) - { - stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[0]); - stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[0]); - stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[1]); - stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[1]); - } - else - { - stkStack[depth++]=sStkNN(p.a->childs[0],p.b); - stkStack[depth++]=sStkNN(p.a->childs[1],p.b); - } - } - else - { - if(p.b->isinternal()) - { - stkStack[depth++]=sStkNN(p.a,p.b->childs[0]); - stkStack[depth++]=sStkNN(p.a,p.b->childs[1]); - } - else - { - policy.Process(p.a,p.b); - } - } - } - } while(depth); - } -} -// -DBVT_PREFIX -inline void btDbvt::collideTT( const btDbvtNode* root0, - const btTransform& xform0, - const btDbvtNode* root1, - const btTransform& xform1, - DBVT_IPOLICY) -{ - const btTransform xform=xform0.inverse()*xform1; - collideTT(root0,root1,xform,policy); -} -#endif - -// -DBVT_PREFIX -inline void btDbvt::collideTV( const btDbvtNode* root, - const btDbvtVolume& vol, - DBVT_IPOLICY) -{ - DBVT_CHECKTYPE - if(root) - { - ATTRIBUTE_ALIGNED16(btDbvtVolume) volume(vol); - btAlignedObjectArray stack; - stack.resize(0); - stack.reserve(SIMPLE_STACKSIZE); - stack.push_back(root); - do { - const btDbvtNode* n=stack[stack.size()-1]; - stack.pop_back(); - if(Intersect(n->volume,volume)) - { - if(n->isinternal()) - { - stack.push_back(n->childs[0]); - stack.push_back(n->childs[1]); - } - else - { - policy.Process(n); - } - } - } while(stack.size()>0); - } -} - -DBVT_PREFIX -inline void btDbvt::rayTestInternal( const btDbvtNode* root, - const btVector3& rayFrom, - const btVector3& rayTo, - const btVector3& rayDirectionInverse, - unsigned int signs[3], - btScalar lambda_max, - const btVector3& aabbMin, - const btVector3& aabbMax, - DBVT_IPOLICY) const -{ - (void) rayTo; - DBVT_CHECKTYPE - if(root) - { - btVector3 resultNormal; - - int depth=1; - int treshold=DOUBLE_STACKSIZE-2; - btAlignedObjectArray stack; - stack.resize(DOUBLE_STACKSIZE); - stack[0]=root; - btVector3 bounds[2]; - do - { - const btDbvtNode* node=stack[--depth]; - bounds[0] = node->volume.Mins()-aabbMax; - bounds[1] = node->volume.Maxs()-aabbMin; - btScalar tmin=1.f,lambda_min=0.f; - unsigned int result1=false; - result1 = btRayAabb2(rayFrom,rayDirectionInverse,signs,bounds,tmin,lambda_min,lambda_max); - if(result1) - { - if(node->isinternal()) - { - if(depth>treshold) - { - stack.resize(stack.size()*2); - treshold=stack.size()-2; - } - stack[depth++]=node->childs[0]; - stack[depth++]=node->childs[1]; - } - else - { - policy.Process(node); - } - } - } while(depth); - } -} - -// -DBVT_PREFIX -inline void btDbvt::rayTest( const btDbvtNode* root, - const btVector3& rayFrom, - const btVector3& rayTo, - DBVT_IPOLICY) -{ - DBVT_CHECKTYPE - if(root) - { - btVector3 rayDir = (rayTo-rayFrom); - rayDir.normalize (); - - ///what about division by zero? --> just set rayDirection[i] to INF/BT_LARGE_FLOAT - btVector3 rayDirectionInverse; - rayDirectionInverse[0] = rayDir[0] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[0]; - rayDirectionInverse[1] = rayDir[1] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[1]; - rayDirectionInverse[2] = rayDir[2] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[2]; - unsigned int signs[3] = { rayDirectionInverse[0] < 0.0, rayDirectionInverse[1] < 0.0, rayDirectionInverse[2] < 0.0}; - - btScalar lambda_max = rayDir.dot(rayTo-rayFrom); - - btVector3 resultNormal; - - btAlignedObjectArray stack; - - int depth=1; - int treshold=DOUBLE_STACKSIZE-2; - - stack.resize(DOUBLE_STACKSIZE); - stack[0]=root; - btVector3 bounds[2]; - do { - const btDbvtNode* node=stack[--depth]; - - bounds[0] = node->volume.Mins(); - bounds[1] = node->volume.Maxs(); - - btScalar tmin=1.f,lambda_min=0.f; - unsigned int result1 = btRayAabb2(rayFrom,rayDirectionInverse,signs,bounds,tmin,lambda_min,lambda_max); - -#ifdef COMPARE_BTRAY_AABB2 - btScalar param=1.f; - bool result2 = btRayAabb(rayFrom,rayTo,node->volume.Mins(),node->volume.Maxs(),param,resultNormal); - btAssert(result1 == result2); -#endif //TEST_BTRAY_AABB2 - - if(result1) - { - if(node->isinternal()) - { - if(depth>treshold) - { - stack.resize(stack.size()*2); - treshold=stack.size()-2; - } - stack[depth++]=node->childs[0]; - stack[depth++]=node->childs[1]; - } - else - { - policy.Process(node); - } - } - } while(depth); - - } -} - -// -DBVT_PREFIX -inline void btDbvt::collideKDOP(const btDbvtNode* root, - const btVector3* normals, - const btScalar* offsets, - int count, - DBVT_IPOLICY) -{ - DBVT_CHECKTYPE - if(root) - { - const int inside=(1< stack; - int signs[sizeof(unsigned)*8]; - btAssert(count=0)?1:0)+ - ((normals[i].y()>=0)?2:0)+ - ((normals[i].z()>=0)?4:0); - } - stack.reserve(SIMPLE_STACKSIZE); - stack.push_back(sStkNP(root,0)); - do { - sStkNP se=stack[stack.size()-1]; - bool out=false; - stack.pop_back(); - for(int i=0,j=1;(!out)&&(ivolume.Classify(normals[i],offsets[i],signs[i]); - switch(side) - { - case -1: out=true;break; - case +1: se.mask|=j;break; - } - } - } - if(!out) - { - if((se.mask!=inside)&&(se.node->isinternal())) - { - stack.push_back(sStkNP(se.node->childs[0],se.mask)); - stack.push_back(sStkNP(se.node->childs[1],se.mask)); - } - else - { - if(policy.AllLeaves(se.node)) enumLeaves(se.node,policy); - } - } - } while(stack.size()); - } -} - -// -DBVT_PREFIX -inline void btDbvt::collideOCL( const btDbvtNode* root, - const btVector3* normals, - const btScalar* offsets, - const btVector3& sortaxis, - int count, - DBVT_IPOLICY, - bool fsort) -{ - DBVT_CHECKTYPE - if(root) - { - const unsigned srtsgns=(sortaxis[0]>=0?1:0)+ - (sortaxis[1]>=0?2:0)+ - (sortaxis[2]>=0?4:0); - const int inside=(1< stock; - btAlignedObjectArray ifree; - btAlignedObjectArray stack; - int signs[sizeof(unsigned)*8]; - btAssert(count=0)?1:0)+ - ((normals[i].y()>=0)?2:0)+ - ((normals[i].z()>=0)?4:0); - } - stock.reserve(SIMPLE_STACKSIZE); - stack.reserve(SIMPLE_STACKSIZE); - ifree.reserve(SIMPLE_STACKSIZE); - stack.push_back(allocate(ifree,stock,sStkNPS(root,0,root->volume.ProjectMinimum(sortaxis,srtsgns)))); - do { - const int id=stack[stack.size()-1]; - sStkNPS se=stock[id]; - stack.pop_back();ifree.push_back(id); - if(se.mask!=inside) - { - bool out=false; - for(int i=0,j=1;(!out)&&(ivolume.Classify(normals[i],offsets[i],signs[i]); - switch(side) - { - case -1: out=true;break; - case +1: se.mask|=j;break; - } - } - } - if(out) continue; - } - if(policy.Descent(se.node)) - { - if(se.node->isinternal()) - { - const btDbvtNode* pns[]={ se.node->childs[0],se.node->childs[1]}; - sStkNPS nes[]={ sStkNPS(pns[0],se.mask,pns[0]->volume.ProjectMinimum(sortaxis,srtsgns)), - sStkNPS(pns[1],se.mask,pns[1]->volume.ProjectMinimum(sortaxis,srtsgns))}; - const int q=nes[0].value0)) - { - /* Insert 0 */ - j=nearest(&stack[0],&stock[0],nes[q].value,0,stack.size()); - stack.push_back(0); -#if DBVT_USE_MEMMOVE - memmove(&stack[j+1],&stack[j],sizeof(int)*(stack.size()-j-1)); -#else - for(int k=stack.size()-1;k>j;--k) stack[k]=stack[k-1]; -#endif - stack[j]=allocate(ifree,stock,nes[q]); - /* Insert 1 */ - j=nearest(&stack[0],&stock[0],nes[1-q].value,j,stack.size()); - stack.push_back(0); -#if DBVT_USE_MEMMOVE - memmove(&stack[j+1],&stack[j],sizeof(int)*(stack.size()-j-1)); -#else - for(int k=stack.size()-1;k>j;--k) stack[k]=stack[k-1]; -#endif - stack[j]=allocate(ifree,stock,nes[1-q]); - } - else - { - stack.push_back(allocate(ifree,stock,nes[q])); - stack.push_back(allocate(ifree,stock,nes[1-q])); - } - } - else - { - policy.Process(se.node,se.value); - } - } - } while(stack.size()); - } -} - -// -DBVT_PREFIX -inline void btDbvt::collideTU( const btDbvtNode* root, - DBVT_IPOLICY) -{ - DBVT_CHECKTYPE - if(root) - { - btAlignedObjectArray stack; - stack.reserve(SIMPLE_STACKSIZE); - stack.push_back(root); - do { - const btDbvtNode* n=stack[stack.size()-1]; - stack.pop_back(); - if(policy.Descent(n)) - { - if(n->isinternal()) - { stack.push_back(n->childs[0]);stack.push_back(n->childs[1]); } - else - { policy.Process(n); } - } - } while(stack.size()>0); - } -} - -// -// PP Cleanup -// - -#undef DBVT_USE_MEMMOVE -#undef DBVT_USE_TEMPLATE -#undef DBVT_VIRTUAL_DTOR -#undef DBVT_VIRTUAL -#undef DBVT_PREFIX -#undef DBVT_IPOLICY -#undef DBVT_CHECKTYPE -#undef DBVT_IMPL_GENERIC -#undef DBVT_IMPL_SSE -#undef DBVT_USE_INTRINSIC_SSE -#undef DBVT_SELECT_IMPL -#undef DBVT_MERGE_IMPL -#undef DBVT_INT0_IMPL - -#endif diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp deleted file mode 100644 index 75cfac64368..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp +++ /dev/null @@ -1,796 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -///btDbvtBroadphase implementation by Nathanael Presson - -#include "btDbvtBroadphase.h" - -// -// Profiling -// - -#if DBVT_BP_PROFILE||DBVT_BP_ENABLE_BENCHMARK -#include -#endif - -#if DBVT_BP_PROFILE -struct ProfileScope -{ - __forceinline ProfileScope(btClock& clock,unsigned long& value) : - m_clock(&clock),m_value(&value),m_base(clock.getTimeMicroseconds()) - { - } - __forceinline ~ProfileScope() - { - (*m_value)+=m_clock->getTimeMicroseconds()-m_base; - } - btClock* m_clock; - unsigned long* m_value; - unsigned long m_base; -}; -#define SPC(_value_) ProfileScope spc_scope(m_clock,_value_) -#else -#define SPC(_value_) -#endif - -// -// Helpers -// - -// -template -static inline void listappend(T* item,T*& list) -{ - item->links[0]=0; - item->links[1]=list; - if(list) list->links[0]=item; - list=item; -} - -// -template -static inline void listremove(T* item,T*& list) -{ - if(item->links[0]) item->links[0]->links[1]=item->links[1]; else list=item->links[1]; - if(item->links[1]) item->links[1]->links[0]=item->links[0]; -} - -// -template -static inline int listcount(T* root) -{ - int n=0; - while(root) { ++n;root=root->links[1]; } - return(n); -} - -// -template -static inline void clear(T& value) -{ - static const struct ZeroDummy : T {} zerodummy; - value=zerodummy; -} - -// -// Colliders -// - -/* Tree collider */ -struct btDbvtTreeCollider : btDbvt::ICollide -{ - btDbvtBroadphase* pbp; - btDbvtProxy* proxy; - btDbvtTreeCollider(btDbvtBroadphase* p) : pbp(p) {} - void Process(const btDbvtNode* na,const btDbvtNode* nb) - { - if(na!=nb) - { - btDbvtProxy* pa=(btDbvtProxy*)na->data; - btDbvtProxy* pb=(btDbvtProxy*)nb->data; -#if DBVT_BP_SORTPAIRS - if(pa->m_uniqueId>pb->m_uniqueId) - btSwap(pa,pb); -#endif - pbp->m_paircache->addOverlappingPair(pa,pb); - ++pbp->m_newpairs; - } - } - void Process(const btDbvtNode* n) - { - Process(n,proxy->leaf); - } -}; - -// -// btDbvtBroadphase -// - -// -btDbvtBroadphase::btDbvtBroadphase(btOverlappingPairCache* paircache) -{ - m_deferedcollide = false; - m_needcleanup = true; - m_releasepaircache = (paircache!=0)?false:true; - m_prediction = 0; - m_stageCurrent = 0; - m_fixedleft = 0; - m_fupdates = 1; - m_dupdates = 0; - m_cupdates = 10; - m_newpairs = 1; - m_updates_call = 0; - m_updates_done = 0; - m_updates_ratio = 0; - m_paircache = paircache? paircache : new(btAlignedAlloc(sizeof(btHashedOverlappingPairCache),16)) btHashedOverlappingPairCache(); - m_gid = 0; - m_pid = 0; - m_cid = 0; - for(int i=0;i<=STAGECOUNT;++i) - { - m_stageRoots[i]=0; - } -#if DBVT_BP_PROFILE - clear(m_profiling); -#endif -} - -// -btDbvtBroadphase::~btDbvtBroadphase() -{ - if(m_releasepaircache) - { - m_paircache->~btOverlappingPairCache(); - btAlignedFree(m_paircache); - } -} - -// -btBroadphaseProxy* btDbvtBroadphase::createProxy( const btVector3& aabbMin, - const btVector3& aabbMax, - int /*shapeType*/, - void* userPtr, - short int collisionFilterGroup, - short int collisionFilterMask, - btDispatcher* /*dispatcher*/, - void* /*multiSapProxy*/) -{ - btDbvtProxy* proxy=new(btAlignedAlloc(sizeof(btDbvtProxy),16)) btDbvtProxy( aabbMin,aabbMax,userPtr, - collisionFilterGroup, - collisionFilterMask); - - btDbvtAabbMm aabb = btDbvtVolume::FromMM(aabbMin,aabbMax); - - //bproxy->aabb = btDbvtVolume::FromMM(aabbMin,aabbMax); - proxy->stage = m_stageCurrent; - proxy->m_uniqueId = ++m_gid; - proxy->leaf = m_sets[0].insert(aabb,proxy); - listappend(proxy,m_stageRoots[m_stageCurrent]); - if(!m_deferedcollide) - { - btDbvtTreeCollider collider(this); - collider.proxy=proxy; - m_sets[0].collideTV(m_sets[0].m_root,aabb,collider); - m_sets[1].collideTV(m_sets[1].m_root,aabb,collider); - } - return(proxy); -} - -// -void btDbvtBroadphase::destroyProxy( btBroadphaseProxy* absproxy, - btDispatcher* dispatcher) -{ - btDbvtProxy* proxy=(btDbvtProxy*)absproxy; - if(proxy->stage==STAGECOUNT) - m_sets[1].remove(proxy->leaf); - else - m_sets[0].remove(proxy->leaf); - listremove(proxy,m_stageRoots[proxy->stage]); - m_paircache->removeOverlappingPairsContainingProxy(proxy,dispatcher); - btAlignedFree(proxy); - m_needcleanup=true; -} - -void btDbvtBroadphase::getAabb(btBroadphaseProxy* absproxy,btVector3& aabbMin, btVector3& aabbMax ) const -{ - btDbvtProxy* proxy=(btDbvtProxy*)absproxy; - aabbMin = proxy->m_aabbMin; - aabbMax = proxy->m_aabbMax; -} - -struct BroadphaseRayTester : btDbvt::ICollide -{ - btBroadphaseRayCallback& m_rayCallback; - BroadphaseRayTester(btBroadphaseRayCallback& orgCallback) - :m_rayCallback(orgCallback) - { - } - void Process(const btDbvtNode* leaf) - { - btDbvtProxy* proxy=(btDbvtProxy*)leaf->data; - m_rayCallback.process(proxy); - } -}; - -void btDbvtBroadphase::rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback,const btVector3& aabbMin,const btVector3& aabbMax) -{ - BroadphaseRayTester callback(rayCallback); - - m_sets[0].rayTestInternal( m_sets[0].m_root, - rayFrom, - rayTo, - rayCallback.m_rayDirectionInverse, - rayCallback.m_signs, - rayCallback.m_lambda_max, - aabbMin, - aabbMax, - callback); - - m_sets[1].rayTestInternal( m_sets[1].m_root, - rayFrom, - rayTo, - rayCallback.m_rayDirectionInverse, - rayCallback.m_signs, - rayCallback.m_lambda_max, - aabbMin, - aabbMax, - callback); - -} - - -struct BroadphaseAabbTester : btDbvt::ICollide -{ - btBroadphaseAabbCallback& m_aabbCallback; - BroadphaseAabbTester(btBroadphaseAabbCallback& orgCallback) - :m_aabbCallback(orgCallback) - { - } - void Process(const btDbvtNode* leaf) - { - btDbvtProxy* proxy=(btDbvtProxy*)leaf->data; - m_aabbCallback.process(proxy); - } -}; - -void btDbvtBroadphase::aabbTest(const btVector3& aabbMin,const btVector3& aabbMax,btBroadphaseAabbCallback& aabbCallback) -{ - BroadphaseAabbTester callback(aabbCallback); - - const ATTRIBUTE_ALIGNED16(btDbvtVolume) bounds=btDbvtVolume::FromMM(aabbMin,aabbMax); - //process all children, that overlap with the given AABB bounds - m_sets[0].collideTV(m_sets[0].m_root,bounds,callback); - m_sets[1].collideTV(m_sets[1].m_root,bounds,callback); - -} - - - -// -void btDbvtBroadphase::setAabb( btBroadphaseProxy* absproxy, - const btVector3& aabbMin, - const btVector3& aabbMax, - btDispatcher* /*dispatcher*/) -{ - btDbvtProxy* proxy=(btDbvtProxy*)absproxy; - ATTRIBUTE_ALIGNED16(btDbvtVolume) aabb=btDbvtVolume::FromMM(aabbMin,aabbMax); -#if DBVT_BP_PREVENTFALSEUPDATE - if(NotEqual(aabb,proxy->leaf->volume)) -#endif - { - bool docollide=false; - if(proxy->stage==STAGECOUNT) - {/* fixed -> dynamic set */ - m_sets[1].remove(proxy->leaf); - proxy->leaf=m_sets[0].insert(aabb,proxy); - docollide=true; - } - else - {/* dynamic set */ - ++m_updates_call; - if(Intersect(proxy->leaf->volume,aabb)) - {/* Moving */ - - const btVector3 delta=aabbMin-proxy->m_aabbMin; - btVector3 velocity(((proxy->m_aabbMax-proxy->m_aabbMin)/2)*m_prediction); - if(delta[0]<0) velocity[0]=-velocity[0]; - if(delta[1]<0) velocity[1]=-velocity[1]; - if(delta[2]<0) velocity[2]=-velocity[2]; - if ( -#ifdef DBVT_BP_MARGIN - m_sets[0].update(proxy->leaf,aabb,velocity,DBVT_BP_MARGIN) -#else - m_sets[0].update(proxy->leaf,aabb,velocity) -#endif - ) - { - ++m_updates_done; - docollide=true; - } - } - else - {/* Teleporting */ - m_sets[0].update(proxy->leaf,aabb); - ++m_updates_done; - docollide=true; - } - } - listremove(proxy,m_stageRoots[proxy->stage]); - proxy->m_aabbMin = aabbMin; - proxy->m_aabbMax = aabbMax; - proxy->stage = m_stageCurrent; - listappend(proxy,m_stageRoots[m_stageCurrent]); - if(docollide) - { - m_needcleanup=true; - if(!m_deferedcollide) - { - btDbvtTreeCollider collider(this); - m_sets[1].collideTTpersistentStack(m_sets[1].m_root,proxy->leaf,collider); - m_sets[0].collideTTpersistentStack(m_sets[0].m_root,proxy->leaf,collider); - } - } - } -} - - -// -void btDbvtBroadphase::setAabbForceUpdate( btBroadphaseProxy* absproxy, - const btVector3& aabbMin, - const btVector3& aabbMax, - btDispatcher* /*dispatcher*/) -{ - btDbvtProxy* proxy=(btDbvtProxy*)absproxy; - ATTRIBUTE_ALIGNED16(btDbvtVolume) aabb=btDbvtVolume::FromMM(aabbMin,aabbMax); - bool docollide=false; - if(proxy->stage==STAGECOUNT) - {/* fixed -> dynamic set */ - m_sets[1].remove(proxy->leaf); - proxy->leaf=m_sets[0].insert(aabb,proxy); - docollide=true; - } - else - {/* dynamic set */ - ++m_updates_call; - /* Teleporting */ - m_sets[0].update(proxy->leaf,aabb); - ++m_updates_done; - docollide=true; - } - listremove(proxy,m_stageRoots[proxy->stage]); - proxy->m_aabbMin = aabbMin; - proxy->m_aabbMax = aabbMax; - proxy->stage = m_stageCurrent; - listappend(proxy,m_stageRoots[m_stageCurrent]); - if(docollide) - { - m_needcleanup=true; - if(!m_deferedcollide) - { - btDbvtTreeCollider collider(this); - m_sets[1].collideTTpersistentStack(m_sets[1].m_root,proxy->leaf,collider); - m_sets[0].collideTTpersistentStack(m_sets[0].m_root,proxy->leaf,collider); - } - } -} - -// -void btDbvtBroadphase::calculateOverlappingPairs(btDispatcher* dispatcher) -{ - collide(dispatcher); -#if DBVT_BP_PROFILE - if(0==(m_pid%DBVT_BP_PROFILING_RATE)) - { - printf("fixed(%u) dynamics(%u) pairs(%u)\r\n",m_sets[1].m_leaves,m_sets[0].m_leaves,m_paircache->getNumOverlappingPairs()); - unsigned int total=m_profiling.m_total; - if(total<=0) total=1; - printf("ddcollide: %u%% (%uus)\r\n",(50+m_profiling.m_ddcollide*100)/total,m_profiling.m_ddcollide/DBVT_BP_PROFILING_RATE); - printf("fdcollide: %u%% (%uus)\r\n",(50+m_profiling.m_fdcollide*100)/total,m_profiling.m_fdcollide/DBVT_BP_PROFILING_RATE); - printf("cleanup: %u%% (%uus)\r\n",(50+m_profiling.m_cleanup*100)/total,m_profiling.m_cleanup/DBVT_BP_PROFILING_RATE); - printf("total: %uus\r\n",total/DBVT_BP_PROFILING_RATE); - const unsigned long sum=m_profiling.m_ddcollide+ - m_profiling.m_fdcollide+ - m_profiling.m_cleanup; - printf("leaked: %u%% (%uus)\r\n",100-((50+sum*100)/total),(total-sum)/DBVT_BP_PROFILING_RATE); - printf("job counts: %u%%\r\n",(m_profiling.m_jobcount*100)/((m_sets[0].m_leaves+m_sets[1].m_leaves)*DBVT_BP_PROFILING_RATE)); - clear(m_profiling); - m_clock.reset(); - } -#endif - - performDeferredRemoval(dispatcher); - -} - -void btDbvtBroadphase::performDeferredRemoval(btDispatcher* dispatcher) -{ - - if (m_paircache->hasDeferredRemoval()) - { - - btBroadphasePairArray& overlappingPairArray = m_paircache->getOverlappingPairArray(); - - //perform a sort, to find duplicates and to sort 'invalid' pairs to the end - overlappingPairArray.quickSort(btBroadphasePairSortPredicate()); - - int invalidPair = 0; - - - int i; - - btBroadphasePair previousPair; - previousPair.m_pProxy0 = 0; - previousPair.m_pProxy1 = 0; - previousPair.m_algorithm = 0; - - - for (i=0;ileaf->volume,pb->leaf->volume); - - if (hasOverlap) - { - needsRemoval = false; - } else - { - needsRemoval = true; - } - } else - { - //remove duplicate - needsRemoval = true; - //should have no algorithm - btAssert(!pair.m_algorithm); - } - - if (needsRemoval) - { - m_paircache->cleanOverlappingPair(pair,dispatcher); - - pair.m_pProxy0 = 0; - pair.m_pProxy1 = 0; - invalidPair++; - } - - } - - //perform a sort, to sort 'invalid' pairs to the end - overlappingPairArray.quickSort(btBroadphasePairSortPredicate()); - overlappingPairArray.resize(overlappingPairArray.size() - invalidPair); - } -} - -// -void btDbvtBroadphase::collide(btDispatcher* dispatcher) -{ - /*printf("---------------------------------------------------------\n"); - printf("m_sets[0].m_leaves=%d\n",m_sets[0].m_leaves); - printf("m_sets[1].m_leaves=%d\n",m_sets[1].m_leaves); - printf("numPairs = %d\n",getOverlappingPairCache()->getNumOverlappingPairs()); - { - int i; - for (i=0;igetNumOverlappingPairs();i++) - { - printf("pair[%d]=(%d,%d),",i,getOverlappingPairCache()->getOverlappingPairArray()[i].m_pProxy0->getUid(), - getOverlappingPairCache()->getOverlappingPairArray()[i].m_pProxy1->getUid()); - } - printf("\n"); - } -*/ - - - - SPC(m_profiling.m_total); - /* optimize */ - m_sets[0].optimizeIncremental(1+(m_sets[0].m_leaves*m_dupdates)/100); - if(m_fixedleft) - { - const int count=1+(m_sets[1].m_leaves*m_fupdates)/100; - m_sets[1].optimizeIncremental(1+(m_sets[1].m_leaves*m_fupdates)/100); - m_fixedleft=btMax(0,m_fixedleft-count); - } - /* dynamic -> fixed set */ - m_stageCurrent=(m_stageCurrent+1)%STAGECOUNT; - btDbvtProxy* current=m_stageRoots[m_stageCurrent]; - if(current) - { - btDbvtTreeCollider collider(this); - do { - btDbvtProxy* next=current->links[1]; - listremove(current,m_stageRoots[current->stage]); - listappend(current,m_stageRoots[STAGECOUNT]); -#if DBVT_BP_ACCURATESLEEPING - m_paircache->removeOverlappingPairsContainingProxy(current,dispatcher); - collider.proxy=current; - btDbvt::collideTV(m_sets[0].m_root,current->aabb,collider); - btDbvt::collideTV(m_sets[1].m_root,current->aabb,collider); -#endif - m_sets[0].remove(current->leaf); - ATTRIBUTE_ALIGNED16(btDbvtVolume) curAabb=btDbvtVolume::FromMM(current->m_aabbMin,current->m_aabbMax); - current->leaf = m_sets[1].insert(curAabb,current); - current->stage = STAGECOUNT; - current = next; - } while(current); - m_fixedleft=m_sets[1].m_leaves; - m_needcleanup=true; - } - /* collide dynamics */ - { - btDbvtTreeCollider collider(this); - if(m_deferedcollide) - { - SPC(m_profiling.m_fdcollide); - m_sets[0].collideTTpersistentStack(m_sets[0].m_root,m_sets[1].m_root,collider); - } - if(m_deferedcollide) - { - SPC(m_profiling.m_ddcollide); - m_sets[0].collideTTpersistentStack(m_sets[0].m_root,m_sets[0].m_root,collider); - } - } - /* clean up */ - if(m_needcleanup) - { - SPC(m_profiling.m_cleanup); - btBroadphasePairArray& pairs=m_paircache->getOverlappingPairArray(); - if(pairs.size()>0) - { - - int ni=btMin(pairs.size(),btMax(m_newpairs,(pairs.size()*m_cupdates)/100)); - for(int i=0;ileaf->volume,pb->leaf->volume)) - { -#if DBVT_BP_SORTPAIRS - if(pa->m_uniqueId>pb->m_uniqueId) - btSwap(pa,pb); -#endif - m_paircache->removeOverlappingPair(pa,pb,dispatcher); - --ni;--i; - } - } - if(pairs.size()>0) m_cid=(m_cid+ni)%pairs.size(); else m_cid=0; - } - } - ++m_pid; - m_newpairs=1; - m_needcleanup=false; - if(m_updates_call>0) - { m_updates_ratio=m_updates_done/(btScalar)m_updates_call; } - else - { m_updates_ratio=0; } - m_updates_done/=2; - m_updates_call/=2; -} - -// -void btDbvtBroadphase::optimize() -{ - m_sets[0].optimizeTopDown(); - m_sets[1].optimizeTopDown(); -} - -// -btOverlappingPairCache* btDbvtBroadphase::getOverlappingPairCache() -{ - return(m_paircache); -} - -// -const btOverlappingPairCache* btDbvtBroadphase::getOverlappingPairCache() const -{ - return(m_paircache); -} - -// -void btDbvtBroadphase::getBroadphaseAabb(btVector3& aabbMin,btVector3& aabbMax) const -{ - - ATTRIBUTE_ALIGNED16(btDbvtVolume) bounds; - - if(!m_sets[0].empty()) - if(!m_sets[1].empty()) Merge( m_sets[0].m_root->volume, - m_sets[1].m_root->volume,bounds); - else - bounds=m_sets[0].m_root->volume; - else if(!m_sets[1].empty()) bounds=m_sets[1].m_root->volume; - else - bounds=btDbvtVolume::FromCR(btVector3(0,0,0),0); - aabbMin=bounds.Mins(); - aabbMax=bounds.Maxs(); -} - -void btDbvtBroadphase::resetPool(btDispatcher* dispatcher) -{ - - int totalObjects = m_sets[0].m_leaves + m_sets[1].m_leaves; - if (!totalObjects) - { - //reset internal dynamic tree data structures - m_sets[0].clear(); - m_sets[1].clear(); - - m_deferedcollide = false; - m_needcleanup = true; - m_stageCurrent = 0; - m_fixedleft = 0; - m_fupdates = 1; - m_dupdates = 0; - m_cupdates = 10; - m_newpairs = 1; - m_updates_call = 0; - m_updates_done = 0; - m_updates_ratio = 0; - - m_gid = 0; - m_pid = 0; - m_cid = 0; - for(int i=0;i<=STAGECOUNT;++i) - { - m_stageRoots[i]=0; - } - } -} - -// -void btDbvtBroadphase::printStats() -{} - -// -#if DBVT_BP_ENABLE_BENCHMARK - -struct btBroadphaseBenchmark -{ - struct Experiment - { - const char* name; - int object_count; - int update_count; - int spawn_count; - int iterations; - btScalar speed; - btScalar amplitude; - }; - struct Object - { - btVector3 center; - btVector3 extents; - btBroadphaseProxy* proxy; - btScalar time; - void update(btScalar speed,btScalar amplitude,btBroadphaseInterface* pbi) - { - time += speed; - center[0] = btCos(time*(btScalar)2.17)*amplitude+ - btSin(time)*amplitude/2; - center[1] = btCos(time*(btScalar)1.38)*amplitude+ - btSin(time)*amplitude; - center[2] = btSin(time*(btScalar)0.777)*amplitude; - pbi->setAabb(proxy,center-extents,center+extents,0); - } - }; - static int UnsignedRand(int range=RAND_MAX-1) { return(rand()%(range+1)); } - static btScalar UnitRand() { return(UnsignedRand(16384)/(btScalar)16384); } - static void OutputTime(const char* name,btClock& c,unsigned count=0) - { - const unsigned long us=c.getTimeMicroseconds(); - const unsigned long ms=(us+500)/1000; - const btScalar sec=us/(btScalar)(1000*1000); - if(count>0) - printf("%s : %u us (%u ms), %.2f/s\r\n",name,us,ms,count/sec); - else - printf("%s : %u us (%u ms)\r\n",name,us,ms); - } -}; - -void btDbvtBroadphase::benchmark(btBroadphaseInterface* pbi) -{ - static const btBroadphaseBenchmark::Experiment experiments[]= - { - {"1024o.10%",1024,10,0,8192,(btScalar)0.005,(btScalar)100}, - /*{"4096o.10%",4096,10,0,8192,(btScalar)0.005,(btScalar)100}, - {"8192o.10%",8192,10,0,8192,(btScalar)0.005,(btScalar)100},*/ - }; - static const int nexperiments=sizeof(experiments)/sizeof(experiments[0]); - btAlignedObjectArray objects; - btClock wallclock; - /* Begin */ - for(int iexp=0;iexpcenter[0]=btBroadphaseBenchmark::UnitRand()*50; - po->center[1]=btBroadphaseBenchmark::UnitRand()*50; - po->center[2]=btBroadphaseBenchmark::UnitRand()*50; - po->extents[0]=btBroadphaseBenchmark::UnitRand()*2+2; - po->extents[1]=btBroadphaseBenchmark::UnitRand()*2+2; - po->extents[2]=btBroadphaseBenchmark::UnitRand()*2+2; - po->time=btBroadphaseBenchmark::UnitRand()*2000; - po->proxy=pbi->createProxy(po->center-po->extents,po->center+po->extents,0,po,1,1,0,0); - objects.push_back(po); - } - btBroadphaseBenchmark::OutputTime("\tInitialization",wallclock); - /* First update */ - wallclock.reset(); - for(int i=0;iupdate(speed,amplitude,pbi); - } - btBroadphaseBenchmark::OutputTime("\tFirst update",wallclock); - /* Updates */ - wallclock.reset(); - for(int i=0;iupdate(speed,amplitude,pbi); - } - pbi->calculateOverlappingPairs(0); - } - btBroadphaseBenchmark::OutputTime("\tUpdate",wallclock,experiment.iterations); - /* Clean up */ - wallclock.reset(); - for(int i=0;idestroyProxy(objects[i]->proxy,0); - delete objects[i]; - } - objects.resize(0); - btBroadphaseBenchmark::OutputTime("\tRelease",wallclock); - } - -} -#else -void btDbvtBroadphase::benchmark(btBroadphaseInterface*) -{} -#endif - -#if DBVT_BP_PROFILE -#undef SPC -#endif - diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h deleted file mode 100644 index 18b64ad0e57..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h +++ /dev/null @@ -1,146 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -///btDbvtBroadphase implementation by Nathanael Presson -#ifndef BT_DBVT_BROADPHASE_H -#define BT_DBVT_BROADPHASE_H - -#include "BulletCollision/BroadphaseCollision/btDbvt.h" -#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h" - -// -// Compile time config -// - -#define DBVT_BP_PROFILE 0 -//#define DBVT_BP_SORTPAIRS 1 -#define DBVT_BP_PREVENTFALSEUPDATE 0 -#define DBVT_BP_ACCURATESLEEPING 0 -#define DBVT_BP_ENABLE_BENCHMARK 0 -#define DBVT_BP_MARGIN (btScalar)0.05 - -#if DBVT_BP_PROFILE -#define DBVT_BP_PROFILING_RATE 256 -#include "LinearMath/btQuickprof.h" -#endif - -// -// btDbvtProxy -// -struct btDbvtProxy : btBroadphaseProxy -{ - /* Fields */ - //btDbvtAabbMm aabb; - btDbvtNode* leaf; - btDbvtProxy* links[2]; - int stage; - /* ctor */ - btDbvtProxy(const btVector3& aabbMin,const btVector3& aabbMax,void* userPtr,short int collisionFilterGroup, short int collisionFilterMask) : - btBroadphaseProxy(aabbMin,aabbMax,userPtr,collisionFilterGroup,collisionFilterMask) - { - links[0]=links[1]=0; - } -}; - -typedef btAlignedObjectArray btDbvtProxyArray; - -///The btDbvtBroadphase implements a broadphase using two dynamic AABB bounding volume hierarchies/trees (see btDbvt). -///One tree is used for static/non-moving objects, and another tree is used for dynamic objects. Objects can move from one tree to the other. -///This is a very fast broadphase, especially for very dynamic worlds where many objects are moving. Its insert/add and remove of objects is generally faster than the sweep and prune broadphases btAxisSweep3 and bt32BitAxisSweep3. -struct btDbvtBroadphase : btBroadphaseInterface -{ - /* Config */ - enum { - DYNAMIC_SET = 0, /* Dynamic set index */ - FIXED_SET = 1, /* Fixed set index */ - STAGECOUNT = 2 /* Number of stages */ - }; - /* Fields */ - btDbvt m_sets[2]; // Dbvt sets - btDbvtProxy* m_stageRoots[STAGECOUNT+1]; // Stages list - btOverlappingPairCache* m_paircache; // Pair cache - btScalar m_prediction; // Velocity prediction - int m_stageCurrent; // Current stage - int m_fupdates; // % of fixed updates per frame - int m_dupdates; // % of dynamic updates per frame - int m_cupdates; // % of cleanup updates per frame - int m_newpairs; // Number of pairs created - int m_fixedleft; // Fixed optimization left - unsigned m_updates_call; // Number of updates call - unsigned m_updates_done; // Number of updates done - btScalar m_updates_ratio; // m_updates_done/m_updates_call - int m_pid; // Parse id - int m_cid; // Cleanup index - int m_gid; // Gen id - bool m_releasepaircache; // Release pair cache on delete - bool m_deferedcollide; // Defere dynamic/static collision to collide call - bool m_needcleanup; // Need to run cleanup? -#if DBVT_BP_PROFILE - btClock m_clock; - struct { - unsigned long m_total; - unsigned long m_ddcollide; - unsigned long m_fdcollide; - unsigned long m_cleanup; - unsigned long m_jobcount; - } m_profiling; -#endif - /* Methods */ - btDbvtBroadphase(btOverlappingPairCache* paircache=0); - ~btDbvtBroadphase(); - void collide(btDispatcher* dispatcher); - void optimize(); - - /* btBroadphaseInterface Implementation */ - btBroadphaseProxy* createProxy(const btVector3& aabbMin,const btVector3& aabbMax,int shapeType,void* userPtr,short int collisionFilterGroup,short int collisionFilterMask,btDispatcher* dispatcher,void* multiSapProxy); - virtual void destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher); - virtual void setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* dispatcher); - virtual void rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin=btVector3(0,0,0), const btVector3& aabbMax = btVector3(0,0,0)); - virtual void aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback); - - virtual void getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const; - virtual void calculateOverlappingPairs(btDispatcher* dispatcher); - virtual btOverlappingPairCache* getOverlappingPairCache(); - virtual const btOverlappingPairCache* getOverlappingPairCache() const; - virtual void getBroadphaseAabb(btVector3& aabbMin,btVector3& aabbMax) const; - virtual void printStats(); - - - ///reset broadphase internal structures, to ensure determinism/reproducability - virtual void resetPool(btDispatcher* dispatcher); - - void performDeferredRemoval(btDispatcher* dispatcher); - - void setVelocityPrediction(btScalar prediction) - { - m_prediction = prediction; - } - btScalar getVelocityPrediction() const - { - return m_prediction; - } - - ///this setAabbForceUpdate is similar to setAabb but always forces the aabb update. - ///it is not part of the btBroadphaseInterface but specific to btDbvtBroadphase. - ///it bypasses certain optimizations that prevent aabb updates (when the aabb shrinks), see - ///http://code.google.com/p/bullet/issues/detail?id=223 - void setAabbForceUpdate( btBroadphaseProxy* absproxy,const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* /*dispatcher*/); - - static void benchmark(btBroadphaseInterface*); - - -}; - -#endif diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btDispatcher.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btDispatcher.cpp deleted file mode 100644 index 20768225b3a..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btDispatcher.cpp +++ /dev/null @@ -1,22 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btDispatcher.h" - -btDispatcher::~btDispatcher() -{ - -} - diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btDispatcher.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btDispatcher.h deleted file mode 100644 index 699c66b82bd..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btDispatcher.h +++ /dev/null @@ -1,106 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef _DISPATCHER_H -#define _DISPATCHER_H - -#include "LinearMath/btScalar.h" - -class btCollisionAlgorithm; -struct btBroadphaseProxy; -class btRigidBody; -class btCollisionObject; -class btOverlappingPairCache; - - -class btPersistentManifold; -class btStackAlloc; - -struct btDispatcherInfo -{ - enum DispatchFunc - { - DISPATCH_DISCRETE = 1, - DISPATCH_CONTINUOUS - }; - btDispatcherInfo() - :m_timeStep(btScalar(0.)), - m_stepCount(0), - m_dispatchFunc(DISPATCH_DISCRETE), - m_timeOfImpact(btScalar(1.)), - m_useContinuous(false), - m_debugDraw(0), - m_enableSatConvex(false), - m_enableSPU(true), - m_useEpa(true), - m_allowedCcdPenetration(btScalar(0.04)), - m_useConvexConservativeDistanceUtil(false), - m_convexConservativeDistanceThreshold(0.0f), - m_stackAllocator(0) - { - - } - btScalar m_timeStep; - int m_stepCount; - int m_dispatchFunc; - mutable btScalar m_timeOfImpact; - bool m_useContinuous; - class btIDebugDraw* m_debugDraw; - bool m_enableSatConvex; - bool m_enableSPU; - bool m_useEpa; - btScalar m_allowedCcdPenetration; - bool m_useConvexConservativeDistanceUtil; - btScalar m_convexConservativeDistanceThreshold; - btStackAlloc* m_stackAllocator; -}; - -///The btDispatcher interface class can be used in combination with broadphase to dispatch calculations for overlapping pairs. -///For example for pairwise collision detection, calculating contact points stored in btPersistentManifold or user callbacks (game logic). -class btDispatcher -{ - - -public: - virtual ~btDispatcher() ; - - virtual btCollisionAlgorithm* findAlgorithm(btCollisionObject* body0,btCollisionObject* body1,btPersistentManifold* sharedManifold=0) = 0; - - virtual btPersistentManifold* getNewManifold(void* body0,void* body1)=0; - - virtual void releaseManifold(btPersistentManifold* manifold)=0; - - virtual void clearManifold(btPersistentManifold* manifold)=0; - - virtual bool needsCollision(btCollisionObject* body0,btCollisionObject* body1) = 0; - - virtual bool needsResponse(btCollisionObject* body0,btCollisionObject* body1)=0; - - virtual void dispatchAllCollisionPairs(btOverlappingPairCache* pairCache,const btDispatcherInfo& dispatchInfo,btDispatcher* dispatcher) =0; - - virtual int getNumManifolds() const = 0; - - virtual btPersistentManifold* getManifoldByIndexInternal(int index) = 0; - - virtual btPersistentManifold** getInternalManifoldPointer() = 0; - - virtual void* allocateCollisionAlgorithm(int size) = 0; - - virtual void freeCollisionAlgorithm(void* ptr) = 0; - -}; - - -#endif //_DISPATCHER_H diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp deleted file mode 100644 index 6712f528e97..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp +++ /dev/null @@ -1,489 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btMultiSapBroadphase.h" - -#include "btSimpleBroadphase.h" -#include "LinearMath/btAabbUtil2.h" -#include "btQuantizedBvh.h" - -/// btSapBroadphaseArray m_sapBroadphases; - -/// btOverlappingPairCache* m_overlappingPairs; -extern int gOverlappingPairs; - -/* -class btMultiSapSortedOverlappingPairCache : public btSortedOverlappingPairCache -{ -public: - - virtual btBroadphasePair* addOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) - { - return btSortedOverlappingPairCache::addOverlappingPair((btBroadphaseProxy*)proxy0->m_multiSapParentProxy,(btBroadphaseProxy*)proxy1->m_multiSapParentProxy); - } -}; - -*/ - -btMultiSapBroadphase::btMultiSapBroadphase(int /*maxProxies*/,btOverlappingPairCache* pairCache) -:m_overlappingPairs(pairCache), -m_optimizedAabbTree(0), -m_ownsPairCache(false), -m_invalidPair(0) -{ - if (!m_overlappingPairs) - { - m_ownsPairCache = true; - void* mem = btAlignedAlloc(sizeof(btSortedOverlappingPairCache),16); - m_overlappingPairs = new (mem)btSortedOverlappingPairCache(); - } - - struct btMultiSapOverlapFilterCallback : public btOverlapFilterCallback - { - virtual ~btMultiSapOverlapFilterCallback() - {} - // return true when pairs need collision - virtual bool needBroadphaseCollision(btBroadphaseProxy* childProxy0,btBroadphaseProxy* childProxy1) const - { - btBroadphaseProxy* multiProxy0 = (btBroadphaseProxy*)childProxy0->m_multiSapParentProxy; - btBroadphaseProxy* multiProxy1 = (btBroadphaseProxy*)childProxy1->m_multiSapParentProxy; - - bool collides = (multiProxy0->m_collisionFilterGroup & multiProxy1->m_collisionFilterMask) != 0; - collides = collides && (multiProxy1->m_collisionFilterGroup & multiProxy0->m_collisionFilterMask); - - return collides; - } - }; - - void* mem = btAlignedAlloc(sizeof(btMultiSapOverlapFilterCallback),16); - m_filterCallback = new (mem)btMultiSapOverlapFilterCallback(); - - m_overlappingPairs->setOverlapFilterCallback(m_filterCallback); -// mem = btAlignedAlloc(sizeof(btSimpleBroadphase),16); -// m_simpleBroadphase = new (mem) btSimpleBroadphase(maxProxies,m_overlappingPairs); -} - -btMultiSapBroadphase::~btMultiSapBroadphase() -{ - if (m_ownsPairCache) - { - m_overlappingPairs->~btOverlappingPairCache(); - btAlignedFree(m_overlappingPairs); - } -} - - -void btMultiSapBroadphase::buildTree(const btVector3& bvhAabbMin,const btVector3& bvhAabbMax) -{ - m_optimizedAabbTree = new btQuantizedBvh(); - m_optimizedAabbTree->setQuantizationValues(bvhAabbMin,bvhAabbMax); - QuantizedNodeArray& nodes = m_optimizedAabbTree->getLeafNodeArray(); - for (int i=0;igetBroadphaseAabb(aabbMin,aabbMax); - m_optimizedAabbTree->quantize(&node.m_quantizedAabbMin[0],aabbMin,0); - m_optimizedAabbTree->quantize(&node.m_quantizedAabbMax[0],aabbMax,1); - int partId = 0; - node.m_escapeIndexOrTriangleIndex = (partId<<(31-MAX_NUM_PARTS_IN_BITS)) | i; - nodes.push_back(node); - } - m_optimizedAabbTree->buildInternal(); -} - -btBroadphaseProxy* btMultiSapBroadphase::createProxy( const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr, short int collisionFilterGroup,short int collisionFilterMask, btDispatcher* dispatcher,void* /*ignoreMe*/) -{ - //void* ignoreMe -> we could think of recursive multi-sap, if someone is interested - - void* mem = btAlignedAlloc(sizeof(btMultiSapProxy),16); - btMultiSapProxy* proxy = new (mem)btMultiSapProxy(aabbMin, aabbMax,shapeType,userPtr, collisionFilterGroup,collisionFilterMask); - m_multiSapProxies.push_back(proxy); - - ///this should deal with inserting/removal into child broadphases - setAabb(proxy,aabbMin,aabbMax,dispatcher); - return proxy; -} - -void btMultiSapBroadphase::destroyProxy(btBroadphaseProxy* /*proxy*/,btDispatcher* /*dispatcher*/) -{ - ///not yet - btAssert(0); - -} - - -void btMultiSapBroadphase::addToChildBroadphase(btMultiSapProxy* parentMultiSapProxy, btBroadphaseProxy* childProxy, btBroadphaseInterface* childBroadphase) -{ - void* mem = btAlignedAlloc(sizeof(btBridgeProxy),16); - btBridgeProxy* bridgeProxyRef = new(mem) btBridgeProxy; - bridgeProxyRef->m_childProxy = childProxy; - bridgeProxyRef->m_childBroadphase = childBroadphase; - parentMultiSapProxy->m_bridgeProxies.push_back(bridgeProxyRef); -} - - -bool boxIsContainedWithinBox(const btVector3& amin,const btVector3& amax,const btVector3& bmin,const btVector3& bmax); -bool boxIsContainedWithinBox(const btVector3& amin,const btVector3& amax,const btVector3& bmin,const btVector3& bmax) -{ -return -amin.getX() >= bmin.getX() && amax.getX() <= bmax.getX() && -amin.getY() >= bmin.getY() && amax.getY() <= bmax.getY() && -amin.getZ() >= bmin.getZ() && amax.getZ() <= bmax.getZ(); -} - - - - - - -void btMultiSapBroadphase::getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const -{ - btMultiSapProxy* multiProxy = static_cast(proxy); - aabbMin = multiProxy->m_aabbMin; - aabbMax = multiProxy->m_aabbMax; -} - -void btMultiSapBroadphase::rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin,const btVector3& aabbMax) -{ - for (int i=0;i - -void btMultiSapBroadphase::setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax, btDispatcher* dispatcher) -{ - btMultiSapProxy* multiProxy = static_cast(proxy); - multiProxy->m_aabbMin = aabbMin; - multiProxy->m_aabbMax = aabbMax; - - -// bool fullyContained = false; -// bool alreadyInSimple = false; - - - - - struct MyNodeOverlapCallback : public btNodeOverlapCallback - { - btMultiSapBroadphase* m_multiSap; - btMultiSapProxy* m_multiProxy; - btDispatcher* m_dispatcher; - - MyNodeOverlapCallback(btMultiSapBroadphase* multiSap,btMultiSapProxy* multiProxy,btDispatcher* dispatcher) - :m_multiSap(multiSap), - m_multiProxy(multiProxy), - m_dispatcher(dispatcher) - { - - } - - virtual void processNode(int /*nodeSubPart*/, int broadphaseIndex) - { - btBroadphaseInterface* childBroadphase = m_multiSap->getBroadphaseArray()[broadphaseIndex]; - - int containingBroadphaseIndex = -1; - //already found? - for (int i=0;im_bridgeProxies.size();i++) - { - - if (m_multiProxy->m_bridgeProxies[i]->m_childBroadphase == childBroadphase) - { - containingBroadphaseIndex = i; - break; - } - } - if (containingBroadphaseIndex<0) - { - //add it - btBroadphaseProxy* childProxy = childBroadphase->createProxy(m_multiProxy->m_aabbMin,m_multiProxy->m_aabbMax,m_multiProxy->m_shapeType,m_multiProxy->m_clientObject,m_multiProxy->m_collisionFilterGroup,m_multiProxy->m_collisionFilterMask, m_dispatcher,m_multiProxy); - m_multiSap->addToChildBroadphase(m_multiProxy,childProxy,childBroadphase); - - } - } - }; - - MyNodeOverlapCallback myNodeCallback(this,multiProxy,dispatcher); - - - - - if (m_optimizedAabbTree) - m_optimizedAabbTree->reportAabbOverlappingNodex(&myNodeCallback,aabbMin,aabbMax); - - int i; - - for ( i=0;im_bridgeProxies.size();i++) - { - btVector3 worldAabbMin,worldAabbMax; - multiProxy->m_bridgeProxies[i]->m_childBroadphase->getBroadphaseAabb(worldAabbMin,worldAabbMax); - bool overlapsBroadphase = TestAabbAgainstAabb2(worldAabbMin,worldAabbMax,multiProxy->m_aabbMin,multiProxy->m_aabbMax); - if (!overlapsBroadphase) - { - //remove it now - btBridgeProxy* bridgeProxy = multiProxy->m_bridgeProxies[i]; - - btBroadphaseProxy* childProxy = bridgeProxy->m_childProxy; - bridgeProxy->m_childBroadphase->destroyProxy(childProxy,dispatcher); - - multiProxy->m_bridgeProxies.swap( i,multiProxy->m_bridgeProxies.size()-1); - multiProxy->m_bridgeProxies.pop_back(); - - } - } - - - /* - - if (1) - { - - //find broadphase that contain this multiProxy - int numChildBroadphases = getBroadphaseArray().size(); - for (int i=0;igetBroadphaseAabb(worldAabbMin,worldAabbMax); - bool overlapsBroadphase = TestAabbAgainstAabb2(worldAabbMin,worldAabbMax,multiProxy->m_aabbMin,multiProxy->m_aabbMax); - - // fullyContained = fullyContained || boxIsContainedWithinBox(worldAabbMin,worldAabbMax,multiProxy->m_aabbMin,multiProxy->m_aabbMax); - int containingBroadphaseIndex = -1; - - //if already contains this - - for (int i=0;im_bridgeProxies.size();i++) - { - if (multiProxy->m_bridgeProxies[i]->m_childBroadphase == childBroadphase) - { - containingBroadphaseIndex = i; - } - alreadyInSimple = alreadyInSimple || (multiProxy->m_bridgeProxies[i]->m_childBroadphase == m_simpleBroadphase); - } - - if (overlapsBroadphase) - { - if (containingBroadphaseIndex<0) - { - btBroadphaseProxy* childProxy = childBroadphase->createProxy(aabbMin,aabbMax,multiProxy->m_shapeType,multiProxy->m_clientObject,multiProxy->m_collisionFilterGroup,multiProxy->m_collisionFilterMask, dispatcher); - childProxy->m_multiSapParentProxy = multiProxy; - addToChildBroadphase(multiProxy,childProxy,childBroadphase); - } - } else - { - if (containingBroadphaseIndex>=0) - { - //remove - btBridgeProxy* bridgeProxy = multiProxy->m_bridgeProxies[containingBroadphaseIndex]; - - btBroadphaseProxy* childProxy = bridgeProxy->m_childProxy; - bridgeProxy->m_childBroadphase->destroyProxy(childProxy,dispatcher); - - multiProxy->m_bridgeProxies.swap( containingBroadphaseIndex,multiProxy->m_bridgeProxies.size()-1); - multiProxy->m_bridgeProxies.pop_back(); - } - } - } - - - ///If we are in no other child broadphase, stick the proxy in the global 'simple' broadphase (brute force) - ///hopefully we don't end up with many entries here (can assert/provide feedback on stats) - if (0)//!multiProxy->m_bridgeProxies.size()) - { - ///we don't pass the userPtr but our multisap proxy. We need to patch this, before processing an actual collision - ///this is needed to be able to calculate the aabb overlap - btBroadphaseProxy* childProxy = m_simpleBroadphase->createProxy(aabbMin,aabbMax,multiProxy->m_shapeType,multiProxy->m_clientObject,multiProxy->m_collisionFilterGroup,multiProxy->m_collisionFilterMask, dispatcher); - childProxy->m_multiSapParentProxy = multiProxy; - addToChildBroadphase(multiProxy,childProxy,m_simpleBroadphase); - } - } - - if (!multiProxy->m_bridgeProxies.size()) - { - ///we don't pass the userPtr but our multisap proxy. We need to patch this, before processing an actual collision - ///this is needed to be able to calculate the aabb overlap - btBroadphaseProxy* childProxy = m_simpleBroadphase->createProxy(aabbMin,aabbMax,multiProxy->m_shapeType,multiProxy->m_clientObject,multiProxy->m_collisionFilterGroup,multiProxy->m_collisionFilterMask, dispatcher); - childProxy->m_multiSapParentProxy = multiProxy; - addToChildBroadphase(multiProxy,childProxy,m_simpleBroadphase); - } -*/ - - - //update - for ( i=0;im_bridgeProxies.size();i++) - { - btBridgeProxy* bridgeProxyRef = multiProxy->m_bridgeProxies[i]; - bridgeProxyRef->m_childBroadphase->setAabb(bridgeProxyRef->m_childProxy,aabbMin,aabbMax,dispatcher); - } - -} -bool stopUpdating=false; - - - -class btMultiSapBroadphasePairSortPredicate -{ - public: - - bool operator() ( const btBroadphasePair& a1, const btBroadphasePair& b1 ) - { - btMultiSapBroadphase::btMultiSapProxy* aProxy0 = a1.m_pProxy0 ? (btMultiSapBroadphase::btMultiSapProxy*)a1.m_pProxy0->m_multiSapParentProxy : 0; - btMultiSapBroadphase::btMultiSapProxy* aProxy1 = a1.m_pProxy1 ? (btMultiSapBroadphase::btMultiSapProxy*)a1.m_pProxy1->m_multiSapParentProxy : 0; - btMultiSapBroadphase::btMultiSapProxy* bProxy0 = b1.m_pProxy0 ? (btMultiSapBroadphase::btMultiSapProxy*)b1.m_pProxy0->m_multiSapParentProxy : 0; - btMultiSapBroadphase::btMultiSapProxy* bProxy1 = b1.m_pProxy1 ? (btMultiSapBroadphase::btMultiSapProxy*)b1.m_pProxy1->m_multiSapParentProxy : 0; - - return aProxy0 > bProxy0 || - (aProxy0 == bProxy0 && aProxy1 > bProxy1) || - (aProxy0 == bProxy0 && aProxy1 == bProxy1 && a1.m_algorithm > b1.m_algorithm); - } -}; - - - ///calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during the set aabb -void btMultiSapBroadphase::calculateOverlappingPairs(btDispatcher* dispatcher) -{ - -// m_simpleBroadphase->calculateOverlappingPairs(dispatcher); - - if (!stopUpdating && getOverlappingPairCache()->hasDeferredRemoval()) - { - - btBroadphasePairArray& overlappingPairArray = getOverlappingPairCache()->getOverlappingPairArray(); - - // quicksort(overlappingPairArray,0,overlappingPairArray.size()); - - overlappingPairArray.quickSort(btMultiSapBroadphasePairSortPredicate()); - - //perform a sort, to find duplicates and to sort 'invalid' pairs to the end - // overlappingPairArray.heapSort(btMultiSapBroadphasePairSortPredicate()); - - overlappingPairArray.resize(overlappingPairArray.size() - m_invalidPair); - m_invalidPair = 0; - - - int i; - - btBroadphasePair previousPair; - previousPair.m_pProxy0 = 0; - previousPair.m_pProxy1 = 0; - previousPair.m_algorithm = 0; - - - for (i=0;im_multiSapParentProxy : 0; - btMultiSapProxy* aProxy1 = pair.m_pProxy1 ? (btMultiSapProxy*)pair.m_pProxy1->m_multiSapParentProxy : 0; - btMultiSapProxy* bProxy0 = previousPair.m_pProxy0 ? (btMultiSapProxy*)previousPair.m_pProxy0->m_multiSapParentProxy : 0; - btMultiSapProxy* bProxy1 = previousPair.m_pProxy1 ? (btMultiSapProxy*)previousPair.m_pProxy1->m_multiSapParentProxy : 0; - - bool isDuplicate = (aProxy0 == bProxy0) && (aProxy1 == bProxy1); - - previousPair = pair; - - bool needsRemoval = false; - - if (!isDuplicate) - { - bool hasOverlap = testAabbOverlap(pair.m_pProxy0,pair.m_pProxy1); - - if (hasOverlap) - { - needsRemoval = false;//callback->processOverlap(pair); - } else - { - needsRemoval = true; - } - } else - { - //remove duplicate - needsRemoval = true; - //should have no algorithm - btAssert(!pair.m_algorithm); - } - - if (needsRemoval) - { - getOverlappingPairCache()->cleanOverlappingPair(pair,dispatcher); - - // m_overlappingPairArray.swap(i,m_overlappingPairArray.size()-1); - // m_overlappingPairArray.pop_back(); - pair.m_pProxy0 = 0; - pair.m_pProxy1 = 0; - m_invalidPair++; - gOverlappingPairs--; - } - - } - - ///if you don't like to skip the invalid pairs in the array, execute following code: - #define CLEAN_INVALID_PAIRS 1 - #ifdef CLEAN_INVALID_PAIRS - - //perform a sort, to sort 'invalid' pairs to the end - //overlappingPairArray.heapSort(btMultiSapBroadphasePairSortPredicate()); - overlappingPairArray.quickSort(btMultiSapBroadphasePairSortPredicate()); - - overlappingPairArray.resize(overlappingPairArray.size() - m_invalidPair); - m_invalidPair = 0; - #endif//CLEAN_INVALID_PAIRS - - //printf("overlappingPairArray.size()=%d\n",overlappingPairArray.size()); - } - - -} - - -bool btMultiSapBroadphase::testAabbOverlap(btBroadphaseProxy* childProxy0,btBroadphaseProxy* childProxy1) -{ - btMultiSapProxy* multiSapProxy0 = (btMultiSapProxy*)childProxy0->m_multiSapParentProxy; - btMultiSapProxy* multiSapProxy1 = (btMultiSapProxy*)childProxy1->m_multiSapParentProxy; - - return TestAabbAgainstAabb2(multiSapProxy0->m_aabbMin,multiSapProxy0->m_aabbMax, - multiSapProxy1->m_aabbMin,multiSapProxy1->m_aabbMax); - -} - - -void btMultiSapBroadphase::printStats() -{ -/* printf("---------------------------------\n"); - - printf("btMultiSapBroadphase.h\n"); - printf("numHandles = %d\n",m_multiSapProxies.size()); - //find broadphase that contain this multiProxy - int numChildBroadphases = getBroadphaseArray().size(); - for (int i=0;iprintStats(); - - } - */ - -} - -void btMultiSapBroadphase::resetPool(btDispatcher* dispatcher) -{ - // not yet -} diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h deleted file mode 100644 index 7bcfe6b132a..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h +++ /dev/null @@ -1,151 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ -#ifndef BT_MULTI_SAP_BROADPHASE -#define BT_MULTI_SAP_BROADPHASE - -#include "btBroadphaseInterface.h" -#include "LinearMath/btAlignedObjectArray.h" -#include "btOverlappingPairCache.h" - - -class btBroadphaseInterface; -class btSimpleBroadphase; - - -typedef btAlignedObjectArray btSapBroadphaseArray; - -///The btMultiSapBroadphase is a research project, not recommended to use in production. Use btAxisSweep3 or btDbvtBroadphase instead. -///The btMultiSapBroadphase is a broadphase that contains multiple SAP broadphases. -///The user can add SAP broadphases that cover the world. A btBroadphaseProxy can be in multiple child broadphases at the same time. -///A btQuantizedBvh acceleration structures finds overlapping SAPs for each btBroadphaseProxy. -///See http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=328 -///and http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1329 -class btMultiSapBroadphase :public btBroadphaseInterface -{ - btSapBroadphaseArray m_sapBroadphases; - - btSimpleBroadphase* m_simpleBroadphase; - - btOverlappingPairCache* m_overlappingPairs; - - class btQuantizedBvh* m_optimizedAabbTree; - - - bool m_ownsPairCache; - - btOverlapFilterCallback* m_filterCallback; - - int m_invalidPair; - - struct btBridgeProxy - { - btBroadphaseProxy* m_childProxy; - btBroadphaseInterface* m_childBroadphase; - }; - - -public: - - struct btMultiSapProxy : public btBroadphaseProxy - { - - ///array with all the entries that this proxy belongs to - btAlignedObjectArray m_bridgeProxies; - btVector3 m_aabbMin; - btVector3 m_aabbMax; - - int m_shapeType; - -/* void* m_userPtr; - short int m_collisionFilterGroup; - short int m_collisionFilterMask; -*/ - btMultiSapProxy(const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr, short int collisionFilterGroup,short int collisionFilterMask) - :btBroadphaseProxy(aabbMin,aabbMax,userPtr,collisionFilterGroup,collisionFilterMask), - m_aabbMin(aabbMin), - m_aabbMax(aabbMax), - m_shapeType(shapeType) - { - m_multiSapParentProxy =this; - } - - - }; - -protected: - - - btAlignedObjectArray m_multiSapProxies; - -public: - - btMultiSapBroadphase(int maxProxies = 16384,btOverlappingPairCache* pairCache=0); - - - btSapBroadphaseArray& getBroadphaseArray() - { - return m_sapBroadphases; - } - - const btSapBroadphaseArray& getBroadphaseArray() const - { - return m_sapBroadphases; - } - - virtual ~btMultiSapBroadphase(); - - virtual btBroadphaseProxy* createProxy( const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr, short int collisionFilterGroup,short int collisionFilterMask, btDispatcher* dispatcher,void* multiSapProxy); - virtual void destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher); - virtual void setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax, btDispatcher* dispatcher); - virtual void getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const; - - virtual void rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback,const btVector3& aabbMin=btVector3(0,0,0),const btVector3& aabbMax=btVector3(0,0,0)); - - void addToChildBroadphase(btMultiSapProxy* parentMultiSapProxy, btBroadphaseProxy* childProxy, btBroadphaseInterface* childBroadphase); - - ///calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during the set aabb - virtual void calculateOverlappingPairs(btDispatcher* dispatcher); - - bool testAabbOverlap(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1); - - virtual btOverlappingPairCache* getOverlappingPairCache() - { - return m_overlappingPairs; - } - virtual const btOverlappingPairCache* getOverlappingPairCache() const - { - return m_overlappingPairs; - } - - ///getAabb returns the axis aligned bounding box in the 'global' coordinate frame - ///will add some transform later - virtual void getBroadphaseAabb(btVector3& aabbMin,btVector3& aabbMax) const - { - aabbMin.setValue(-BT_LARGE_FLOAT,-BT_LARGE_FLOAT,-BT_LARGE_FLOAT); - aabbMax.setValue(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT); - } - - void buildTree(const btVector3& bvhAabbMin,const btVector3& bvhAabbMax); - - virtual void printStats(); - - void quicksort (btBroadphasePairArray& a, int lo, int hi); - - ///reset broadphase internal structures, to ensure determinism/reproducability - virtual void resetPool(btDispatcher* dispatcher); - -}; - -#endif //BT_MULTI_SAP_BROADPHASE diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp deleted file mode 100644 index 041bbe05ae2..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp +++ /dev/null @@ -1,633 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#include "btOverlappingPairCache.h" - -#include "btDispatcher.h" -#include "btCollisionAlgorithm.h" -#include "LinearMath/btAabbUtil2.h" - -#include - -int gOverlappingPairs = 0; - -int gRemovePairs =0; -int gAddedPairs =0; -int gFindPairs =0; - - - - -btHashedOverlappingPairCache::btHashedOverlappingPairCache(): - m_overlapFilterCallback(0), - m_blockedForChanges(false), - m_ghostPairCallback(0) -{ - int initialAllocatedSize= 2; - m_overlappingPairArray.reserve(initialAllocatedSize); - growTables(); -} - - - - -btHashedOverlappingPairCache::~btHashedOverlappingPairCache() -{ -} - - - -void btHashedOverlappingPairCache::cleanOverlappingPair(btBroadphasePair& pair,btDispatcher* dispatcher) -{ - if (pair.m_algorithm) - { - { - pair.m_algorithm->~btCollisionAlgorithm(); - dispatcher->freeCollisionAlgorithm(pair.m_algorithm); - pair.m_algorithm=0; - } - } -} - - - - -void btHashedOverlappingPairCache::cleanProxyFromPairs(btBroadphaseProxy* proxy,btDispatcher* dispatcher) -{ - - class CleanPairCallback : public btOverlapCallback - { - btBroadphaseProxy* m_cleanProxy; - btOverlappingPairCache* m_pairCache; - btDispatcher* m_dispatcher; - - public: - CleanPairCallback(btBroadphaseProxy* cleanProxy,btOverlappingPairCache* pairCache,btDispatcher* dispatcher) - :m_cleanProxy(cleanProxy), - m_pairCache(pairCache), - m_dispatcher(dispatcher) - { - } - virtual bool processOverlap(btBroadphasePair& pair) - { - if ((pair.m_pProxy0 == m_cleanProxy) || - (pair.m_pProxy1 == m_cleanProxy)) - { - m_pairCache->cleanOverlappingPair(pair,m_dispatcher); - } - return false; - } - - }; - - CleanPairCallback cleanPairs(proxy,this,dispatcher); - - processAllOverlappingPairs(&cleanPairs,dispatcher); - -} - - - - -void btHashedOverlappingPairCache::removeOverlappingPairsContainingProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher) -{ - - class RemovePairCallback : public btOverlapCallback - { - btBroadphaseProxy* m_obsoleteProxy; - - public: - RemovePairCallback(btBroadphaseProxy* obsoleteProxy) - :m_obsoleteProxy(obsoleteProxy) - { - } - virtual bool processOverlap(btBroadphasePair& pair) - { - return ((pair.m_pProxy0 == m_obsoleteProxy) || - (pair.m_pProxy1 == m_obsoleteProxy)); - } - - }; - - - RemovePairCallback removeCallback(proxy); - - processAllOverlappingPairs(&removeCallback,dispatcher); -} - - - - - -btBroadphasePair* btHashedOverlappingPairCache::findPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1) -{ - gFindPairs++; - if(proxy0->m_uniqueId>proxy1->m_uniqueId) - btSwap(proxy0,proxy1); - int proxyId1 = proxy0->getUid(); - int proxyId2 = proxy1->getUid(); - - /*if (proxyId1 > proxyId2) - btSwap(proxyId1, proxyId2);*/ - - int hash = static_cast(getHash(static_cast(proxyId1), static_cast(proxyId2)) & (m_overlappingPairArray.capacity()-1)); - - if (hash >= m_hashTable.size()) - { - return NULL; - } - - int index = m_hashTable[hash]; - while (index != BT_NULL_PAIR && equalsPair(m_overlappingPairArray[index], proxyId1, proxyId2) == false) - { - index = m_next[index]; - } - - if (index == BT_NULL_PAIR) - { - return NULL; - } - - btAssert(index < m_overlappingPairArray.size()); - - return &m_overlappingPairArray[index]; -} - -//#include - -void btHashedOverlappingPairCache::growTables() -{ - - int newCapacity = m_overlappingPairArray.capacity(); - - if (m_hashTable.size() < newCapacity) - { - //grow hashtable and next table - int curHashtableSize = m_hashTable.size(); - - m_hashTable.resize(newCapacity); - m_next.resize(newCapacity); - - - int i; - - for (i= 0; i < newCapacity; ++i) - { - m_hashTable[i] = BT_NULL_PAIR; - } - for (i = 0; i < newCapacity; ++i) - { - m_next[i] = BT_NULL_PAIR; - } - - for(i=0;igetUid(); - int proxyId2 = pair.m_pProxy1->getUid(); - /*if (proxyId1 > proxyId2) - btSwap(proxyId1, proxyId2);*/ - int hashValue = static_cast(getHash(static_cast(proxyId1),static_cast(proxyId2)) & (m_overlappingPairArray.capacity()-1)); // New hash value with new mask - m_next[i] = m_hashTable[hashValue]; - m_hashTable[hashValue] = i; - } - - - } -} - -btBroadphasePair* btHashedOverlappingPairCache::internalAddPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1) -{ - if(proxy0->m_uniqueId>proxy1->m_uniqueId) - btSwap(proxy0,proxy1); - int proxyId1 = proxy0->getUid(); - int proxyId2 = proxy1->getUid(); - - /*if (proxyId1 > proxyId2) - btSwap(proxyId1, proxyId2);*/ - - int hash = static_cast(getHash(static_cast(proxyId1),static_cast(proxyId2)) & (m_overlappingPairArray.capacity()-1)); // New hash value with new mask - - - btBroadphasePair* pair = internalFindPair(proxy0, proxy1, hash); - if (pair != NULL) - { - return pair; - } - /*for(int i=0;i%u\r\n",proxyId1,proxyId2); - internalFindPair(proxy0, proxy1, hash); - } - }*/ - int count = m_overlappingPairArray.size(); - int oldCapacity = m_overlappingPairArray.capacity(); - void* mem = &m_overlappingPairArray.expandNonInitializing(); - - //this is where we add an actual pair, so also call the 'ghost' - if (m_ghostPairCallback) - m_ghostPairCallback->addOverlappingPair(proxy0,proxy1); - - int newCapacity = m_overlappingPairArray.capacity(); - - if (oldCapacity < newCapacity) - { - growTables(); - //hash with new capacity - hash = static_cast(getHash(static_cast(proxyId1),static_cast(proxyId2)) & (m_overlappingPairArray.capacity()-1)); - } - - pair = new (mem) btBroadphasePair(*proxy0,*proxy1); -// pair->m_pProxy0 = proxy0; -// pair->m_pProxy1 = proxy1; - pair->m_algorithm = 0; - pair->m_internalTmpValue = 0; - - - m_next[count] = m_hashTable[hash]; - m_hashTable[hash] = count; - - return pair; -} - - - -void* btHashedOverlappingPairCache::removeOverlappingPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1,btDispatcher* dispatcher) -{ - gRemovePairs++; - if(proxy0->m_uniqueId>proxy1->m_uniqueId) - btSwap(proxy0,proxy1); - int proxyId1 = proxy0->getUid(); - int proxyId2 = proxy1->getUid(); - - /*if (proxyId1 > proxyId2) - btSwap(proxyId1, proxyId2);*/ - - int hash = static_cast(getHash(static_cast(proxyId1),static_cast(proxyId2)) & (m_overlappingPairArray.capacity()-1)); - - btBroadphasePair* pair = internalFindPair(proxy0, proxy1, hash); - if (pair == NULL) - { - return 0; - } - - cleanOverlappingPair(*pair,dispatcher); - - void* userData = pair->m_internalInfo1; - - btAssert(pair->m_pProxy0->getUid() == proxyId1); - btAssert(pair->m_pProxy1->getUid() == proxyId2); - - int pairIndex = int(pair - &m_overlappingPairArray[0]); - btAssert(pairIndex < m_overlappingPairArray.size()); - - // Remove the pair from the hash table. - int index = m_hashTable[hash]; - btAssert(index != BT_NULL_PAIR); - - int previous = BT_NULL_PAIR; - while (index != pairIndex) - { - previous = index; - index = m_next[index]; - } - - if (previous != BT_NULL_PAIR) - { - btAssert(m_next[previous] == pairIndex); - m_next[previous] = m_next[pairIndex]; - } - else - { - m_hashTable[hash] = m_next[pairIndex]; - } - - // We now move the last pair into spot of the - // pair being removed. We need to fix the hash - // table indices to support the move. - - int lastPairIndex = m_overlappingPairArray.size() - 1; - - if (m_ghostPairCallback) - m_ghostPairCallback->removeOverlappingPair(proxy0, proxy1,dispatcher); - - // If the removed pair is the last pair, we are done. - if (lastPairIndex == pairIndex) - { - m_overlappingPairArray.pop_back(); - return userData; - } - - // Remove the last pair from the hash table. - const btBroadphasePair* last = &m_overlappingPairArray[lastPairIndex]; - /* missing swap here too, Nat. */ - int lastHash = static_cast(getHash(static_cast(last->m_pProxy0->getUid()), static_cast(last->m_pProxy1->getUid())) & (m_overlappingPairArray.capacity()-1)); - - index = m_hashTable[lastHash]; - btAssert(index != BT_NULL_PAIR); - - previous = BT_NULL_PAIR; - while (index != lastPairIndex) - { - previous = index; - index = m_next[index]; - } - - if (previous != BT_NULL_PAIR) - { - btAssert(m_next[previous] == lastPairIndex); - m_next[previous] = m_next[lastPairIndex]; - } - else - { - m_hashTable[lastHash] = m_next[lastPairIndex]; - } - - // Copy the last pair into the remove pair's spot. - m_overlappingPairArray[pairIndex] = m_overlappingPairArray[lastPairIndex]; - - // Insert the last pair into the hash table - m_next[pairIndex] = m_hashTable[lastHash]; - m_hashTable[lastHash] = pairIndex; - - m_overlappingPairArray.pop_back(); - - return userData; -} -//#include - -void btHashedOverlappingPairCache::processAllOverlappingPairs(btOverlapCallback* callback,btDispatcher* dispatcher) -{ - - int i; - -// printf("m_overlappingPairArray.size()=%d\n",m_overlappingPairArray.size()); - for (i=0;iprocessOverlap(*pair)) - { - removeOverlappingPair(pair->m_pProxy0,pair->m_pProxy1,dispatcher); - - gOverlappingPairs--; - } else - { - i++; - } - } -} - -void btHashedOverlappingPairCache::sortOverlappingPairs(btDispatcher* dispatcher) -{ - ///need to keep hashmap in sync with pair address, so rebuild all - btBroadphasePairArray tmpPairs; - int i; - for (i=0;iremoveOverlappingPair(proxy0, proxy1,dispatcher); - - m_overlappingPairArray.swap(findIndex,m_overlappingPairArray.capacity()-1); - m_overlappingPairArray.pop_back(); - return userData; - } - } - - return 0; -} - - - - - - - - -btBroadphasePair* btSortedOverlappingPairCache::addOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) -{ - //don't add overlap with own - btAssert(proxy0 != proxy1); - - if (!needsBroadphaseCollision(proxy0,proxy1)) - return 0; - - void* mem = &m_overlappingPairArray.expandNonInitializing(); - btBroadphasePair* pair = new (mem) btBroadphasePair(*proxy0,*proxy1); - - gOverlappingPairs++; - gAddedPairs++; - - if (m_ghostPairCallback) - m_ghostPairCallback->addOverlappingPair(proxy0, proxy1); - return pair; - -} - -///this findPair becomes really slow. Either sort the list to speedup the query, or -///use a different solution. It is mainly used for Removing overlapping pairs. Removal could be delayed. -///we could keep a linked list in each proxy, and store pair in one of the proxies (with lowest memory address) -///Also we can use a 2D bitmap, which can be useful for a future GPU implementation - btBroadphasePair* btSortedOverlappingPairCache::findPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) -{ - if (!needsBroadphaseCollision(proxy0,proxy1)) - return 0; - - btBroadphasePair tmpPair(*proxy0,*proxy1); - int findIndex = m_overlappingPairArray.findLinearSearch(tmpPair); - - if (findIndex < m_overlappingPairArray.size()) - { - //btAssert(it != m_overlappingPairSet.end()); - btBroadphasePair* pair = &m_overlappingPairArray[findIndex]; - return pair; - } - return 0; -} - - - - - - - - - - -//#include - -void btSortedOverlappingPairCache::processAllOverlappingPairs(btOverlapCallback* callback,btDispatcher* dispatcher) -{ - - int i; - - for (i=0;iprocessOverlap(*pair)) - { - cleanOverlappingPair(*pair,dispatcher); - pair->m_pProxy0 = 0; - pair->m_pProxy1 = 0; - m_overlappingPairArray.swap(i,m_overlappingPairArray.size()-1); - m_overlappingPairArray.pop_back(); - gOverlappingPairs--; - } else - { - i++; - } - } -} - - - - -btSortedOverlappingPairCache::btSortedOverlappingPairCache(): - m_blockedForChanges(false), - m_hasDeferredRemoval(true), - m_overlapFilterCallback(0), - m_ghostPairCallback(0) -{ - int initialAllocatedSize= 2; - m_overlappingPairArray.reserve(initialAllocatedSize); -} - -btSortedOverlappingPairCache::~btSortedOverlappingPairCache() -{ -} - -void btSortedOverlappingPairCache::cleanOverlappingPair(btBroadphasePair& pair,btDispatcher* dispatcher) -{ - if (pair.m_algorithm) - { - { - pair.m_algorithm->~btCollisionAlgorithm(); - dispatcher->freeCollisionAlgorithm(pair.m_algorithm); - pair.m_algorithm=0; - gRemovePairs--; - } - } -} - - -void btSortedOverlappingPairCache::cleanProxyFromPairs(btBroadphaseProxy* proxy,btDispatcher* dispatcher) -{ - - class CleanPairCallback : public btOverlapCallback - { - btBroadphaseProxy* m_cleanProxy; - btOverlappingPairCache* m_pairCache; - btDispatcher* m_dispatcher; - - public: - CleanPairCallback(btBroadphaseProxy* cleanProxy,btOverlappingPairCache* pairCache,btDispatcher* dispatcher) - :m_cleanProxy(cleanProxy), - m_pairCache(pairCache), - m_dispatcher(dispatcher) - { - } - virtual bool processOverlap(btBroadphasePair& pair) - { - if ((pair.m_pProxy0 == m_cleanProxy) || - (pair.m_pProxy1 == m_cleanProxy)) - { - m_pairCache->cleanOverlappingPair(pair,m_dispatcher); - } - return false; - } - - }; - - CleanPairCallback cleanPairs(proxy,this,dispatcher); - - processAllOverlappingPairs(&cleanPairs,dispatcher); - -} - - -void btSortedOverlappingPairCache::removeOverlappingPairsContainingProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher) -{ - - class RemovePairCallback : public btOverlapCallback - { - btBroadphaseProxy* m_obsoleteProxy; - - public: - RemovePairCallback(btBroadphaseProxy* obsoleteProxy) - :m_obsoleteProxy(obsoleteProxy) - { - } - virtual bool processOverlap(btBroadphasePair& pair) - { - return ((pair.m_pProxy0 == m_obsoleteProxy) || - (pair.m_pProxy1 == m_obsoleteProxy)); - } - - }; - - RemovePairCallback removeCallback(proxy); - - processAllOverlappingPairs(&removeCallback,dispatcher); -} - -void btSortedOverlappingPairCache::sortOverlappingPairs(btDispatcher* dispatcher) -{ - //should already be sorted -} - diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h deleted file mode 100644 index 3945afb8d70..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h +++ /dev/null @@ -1,469 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef OVERLAPPING_PAIR_CACHE_H -#define OVERLAPPING_PAIR_CACHE_H - - -#include "btBroadphaseInterface.h" -#include "btBroadphaseProxy.h" -#include "btOverlappingPairCallback.h" - -#include "LinearMath/btAlignedObjectArray.h" -class btDispatcher; - -typedef btAlignedObjectArray btBroadphasePairArray; - -struct btOverlapCallback -{ - virtual ~btOverlapCallback() - {} - //return true for deletion of the pair - virtual bool processOverlap(btBroadphasePair& pair) = 0; - -}; - -struct btOverlapFilterCallback -{ - virtual ~btOverlapFilterCallback() - {} - // return true when pairs need collision - virtual bool needBroadphaseCollision(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) const = 0; -}; - - - - - - - -extern int gRemovePairs; -extern int gAddedPairs; -extern int gFindPairs; - -const int BT_NULL_PAIR=0xffffffff; - -///The btOverlappingPairCache provides an interface for overlapping pair management (add, remove, storage), used by the btBroadphaseInterface broadphases. -///The btHashedOverlappingPairCache and btSortedOverlappingPairCache classes are two implementations. -class btOverlappingPairCache : public btOverlappingPairCallback -{ -public: - virtual ~btOverlappingPairCache() {} // this is needed so we can get to the derived class destructor - - virtual btBroadphasePair* getOverlappingPairArrayPtr() = 0; - - virtual const btBroadphasePair* getOverlappingPairArrayPtr() const = 0; - - virtual btBroadphasePairArray& getOverlappingPairArray() = 0; - - virtual void cleanOverlappingPair(btBroadphasePair& pair,btDispatcher* dispatcher) = 0; - - virtual int getNumOverlappingPairs() const = 0; - - virtual void cleanProxyFromPairs(btBroadphaseProxy* proxy,btDispatcher* dispatcher) = 0; - - virtual void setOverlapFilterCallback(btOverlapFilterCallback* callback) = 0; - - virtual void processAllOverlappingPairs(btOverlapCallback*,btDispatcher* dispatcher) = 0; - - virtual btBroadphasePair* findPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1) = 0; - - virtual bool hasDeferredRemoval() = 0; - - virtual void setInternalGhostPairCallback(btOverlappingPairCallback* ghostPairCallback)=0; - - virtual void sortOverlappingPairs(btDispatcher* dispatcher) = 0; - - -}; - -/// Hash-space based Pair Cache, thanks to Erin Catto, Box2D, http://www.box2d.org, and Pierre Terdiman, Codercorner, http://codercorner.com -class btHashedOverlappingPairCache : public btOverlappingPairCache -{ - btBroadphasePairArray m_overlappingPairArray; - btOverlapFilterCallback* m_overlapFilterCallback; - bool m_blockedForChanges; - - -public: - btHashedOverlappingPairCache(); - virtual ~btHashedOverlappingPairCache(); - - - void removeOverlappingPairsContainingProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher); - - virtual void* removeOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1,btDispatcher* dispatcher); - - SIMD_FORCE_INLINE bool needsBroadphaseCollision(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) const - { - if (m_overlapFilterCallback) - return m_overlapFilterCallback->needBroadphaseCollision(proxy0,proxy1); - - bool collides = (proxy0->m_collisionFilterGroup & proxy1->m_collisionFilterMask) != 0; - collides = collides && (proxy1->m_collisionFilterGroup & proxy0->m_collisionFilterMask); - - return collides; - } - - // Add a pair and return the new pair. If the pair already exists, - // no new pair is created and the old one is returned. - virtual btBroadphasePair* addOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) - { - gAddedPairs++; - - if (!needsBroadphaseCollision(proxy0,proxy1)) - return 0; - - return internalAddPair(proxy0,proxy1); - } - - - - void cleanProxyFromPairs(btBroadphaseProxy* proxy,btDispatcher* dispatcher); - - - virtual void processAllOverlappingPairs(btOverlapCallback*,btDispatcher* dispatcher); - - virtual btBroadphasePair* getOverlappingPairArrayPtr() - { - return &m_overlappingPairArray[0]; - } - - const btBroadphasePair* getOverlappingPairArrayPtr() const - { - return &m_overlappingPairArray[0]; - } - - btBroadphasePairArray& getOverlappingPairArray() - { - return m_overlappingPairArray; - } - - const btBroadphasePairArray& getOverlappingPairArray() const - { - return m_overlappingPairArray; - } - - void cleanOverlappingPair(btBroadphasePair& pair,btDispatcher* dispatcher); - - - - btBroadphasePair* findPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1); - - int GetCount() const { return m_overlappingPairArray.size(); } -// btBroadphasePair* GetPairs() { return m_pairs; } - - btOverlapFilterCallback* getOverlapFilterCallback() - { - return m_overlapFilterCallback; - } - - void setOverlapFilterCallback(btOverlapFilterCallback* callback) - { - m_overlapFilterCallback = callback; - } - - int getNumOverlappingPairs() const - { - return m_overlappingPairArray.size(); - } -private: - - btBroadphasePair* internalAddPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1); - - void growTables(); - - SIMD_FORCE_INLINE bool equalsPair(const btBroadphasePair& pair, int proxyId1, int proxyId2) - { - return pair.m_pProxy0->getUid() == proxyId1 && pair.m_pProxy1->getUid() == proxyId2; - } - - /* - // Thomas Wang's hash, see: http://www.concentric.net/~Ttwang/tech/inthash.htm - // This assumes proxyId1 and proxyId2 are 16-bit. - SIMD_FORCE_INLINE int getHash(int proxyId1, int proxyId2) - { - int key = (proxyId2 << 16) | proxyId1; - key = ~key + (key << 15); - key = key ^ (key >> 12); - key = key + (key << 2); - key = key ^ (key >> 4); - key = key * 2057; - key = key ^ (key >> 16); - return key; - } - */ - - - - SIMD_FORCE_INLINE unsigned int getHash(unsigned int proxyId1, unsigned int proxyId2) - { - int key = static_cast(((unsigned int)proxyId1) | (((unsigned int)proxyId2) <<16)); - // Thomas Wang's hash - - key += ~(key << 15); - key ^= (key >> 10); - key += (key << 3); - key ^= (key >> 6); - key += ~(key << 11); - key ^= (key >> 16); - return static_cast(key); - } - - - - - - SIMD_FORCE_INLINE btBroadphasePair* internalFindPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1, int hash) - { - int proxyId1 = proxy0->getUid(); - int proxyId2 = proxy1->getUid(); - #if 0 // wrong, 'equalsPair' use unsorted uids, copy-past devil striked again. Nat. - if (proxyId1 > proxyId2) - btSwap(proxyId1, proxyId2); - #endif - - int index = m_hashTable[hash]; - - while( index != BT_NULL_PAIR && equalsPair(m_overlappingPairArray[index], proxyId1, proxyId2) == false) - { - index = m_next[index]; - } - - if ( index == BT_NULL_PAIR ) - { - return NULL; - } - - btAssert(index < m_overlappingPairArray.size()); - - return &m_overlappingPairArray[index]; - } - - virtual bool hasDeferredRemoval() - { - return false; - } - - virtual void setInternalGhostPairCallback(btOverlappingPairCallback* ghostPairCallback) - { - m_ghostPairCallback = ghostPairCallback; - } - - virtual void sortOverlappingPairs(btDispatcher* dispatcher); - - -protected: - - btAlignedObjectArray m_hashTable; - btAlignedObjectArray m_next; - btOverlappingPairCallback* m_ghostPairCallback; - -}; - - - - -///btSortedOverlappingPairCache maintains the objects with overlapping AABB -///Typically managed by the Broadphase, Axis3Sweep or btSimpleBroadphase -class btSortedOverlappingPairCache : public btOverlappingPairCache -{ - protected: - //avoid brute-force finding all the time - btBroadphasePairArray m_overlappingPairArray; - - //during the dispatch, check that user doesn't destroy/create proxy - bool m_blockedForChanges; - - ///by default, do the removal during the pair traversal - bool m_hasDeferredRemoval; - - //if set, use the callback instead of the built in filter in needBroadphaseCollision - btOverlapFilterCallback* m_overlapFilterCallback; - - btOverlappingPairCallback* m_ghostPairCallback; - - public: - - btSortedOverlappingPairCache(); - virtual ~btSortedOverlappingPairCache(); - - virtual void processAllOverlappingPairs(btOverlapCallback*,btDispatcher* dispatcher); - - void* removeOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1,btDispatcher* dispatcher); - - void cleanOverlappingPair(btBroadphasePair& pair,btDispatcher* dispatcher); - - btBroadphasePair* addOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1); - - btBroadphasePair* findPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1); - - - void cleanProxyFromPairs(btBroadphaseProxy* proxy,btDispatcher* dispatcher); - - void removeOverlappingPairsContainingProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher); - - - inline bool needsBroadphaseCollision(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) const - { - if (m_overlapFilterCallback) - return m_overlapFilterCallback->needBroadphaseCollision(proxy0,proxy1); - - bool collides = (proxy0->m_collisionFilterGroup & proxy1->m_collisionFilterMask) != 0; - collides = collides && (proxy1->m_collisionFilterGroup & proxy0->m_collisionFilterMask); - - return collides; - } - - btBroadphasePairArray& getOverlappingPairArray() - { - return m_overlappingPairArray; - } - - const btBroadphasePairArray& getOverlappingPairArray() const - { - return m_overlappingPairArray; - } - - - - - btBroadphasePair* getOverlappingPairArrayPtr() - { - return &m_overlappingPairArray[0]; - } - - const btBroadphasePair* getOverlappingPairArrayPtr() const - { - return &m_overlappingPairArray[0]; - } - - int getNumOverlappingPairs() const - { - return m_overlappingPairArray.size(); - } - - btOverlapFilterCallback* getOverlapFilterCallback() - { - return m_overlapFilterCallback; - } - - void setOverlapFilterCallback(btOverlapFilterCallback* callback) - { - m_overlapFilterCallback = callback; - } - - virtual bool hasDeferredRemoval() - { - return m_hasDeferredRemoval; - } - - virtual void setInternalGhostPairCallback(btOverlappingPairCallback* ghostPairCallback) - { - m_ghostPairCallback = ghostPairCallback; - } - - virtual void sortOverlappingPairs(btDispatcher* dispatcher); - - -}; - - - -///btNullPairCache skips add/removal of overlapping pairs. Userful for benchmarking and unit testing. -class btNullPairCache : public btOverlappingPairCache -{ - - btBroadphasePairArray m_overlappingPairArray; - -public: - - virtual btBroadphasePair* getOverlappingPairArrayPtr() - { - return &m_overlappingPairArray[0]; - } - const btBroadphasePair* getOverlappingPairArrayPtr() const - { - return &m_overlappingPairArray[0]; - } - btBroadphasePairArray& getOverlappingPairArray() - { - return m_overlappingPairArray; - } - - virtual void cleanOverlappingPair(btBroadphasePair& /*pair*/,btDispatcher* /*dispatcher*/) - { - - } - - virtual int getNumOverlappingPairs() const - { - return 0; - } - - virtual void cleanProxyFromPairs(btBroadphaseProxy* /*proxy*/,btDispatcher* /*dispatcher*/) - { - - } - - virtual void setOverlapFilterCallback(btOverlapFilterCallback* /*callback*/) - { - } - - virtual void processAllOverlappingPairs(btOverlapCallback*,btDispatcher* /*dispatcher*/) - { - } - - virtual btBroadphasePair* findPair(btBroadphaseProxy* /*proxy0*/, btBroadphaseProxy* /*proxy1*/) - { - return 0; - } - - virtual bool hasDeferredRemoval() - { - return true; - } - - virtual void setInternalGhostPairCallback(btOverlappingPairCallback* /* ghostPairCallback */) - { - - } - - virtual btBroadphasePair* addOverlappingPair(btBroadphaseProxy* /*proxy0*/,btBroadphaseProxy* /*proxy1*/) - { - return 0; - } - - virtual void* removeOverlappingPair(btBroadphaseProxy* /*proxy0*/,btBroadphaseProxy* /*proxy1*/,btDispatcher* /*dispatcher*/) - { - return 0; - } - - virtual void removeOverlappingPairsContainingProxy(btBroadphaseProxy* /*proxy0*/,btDispatcher* /*dispatcher*/) - { - } - - virtual void sortOverlappingPairs(btDispatcher* dispatcher) - { - (void) dispatcher; - } - - -}; - - -#endif //OVERLAPPING_PAIR_CACHE_H - - diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h deleted file mode 100644 index 9c7b6f81367..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h +++ /dev/null @@ -1,40 +0,0 @@ - -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef OVERLAPPING_PAIR_CALLBACK_H -#define OVERLAPPING_PAIR_CALLBACK_H - -class btDispatcher; -struct btBroadphasePair; - -///The btOverlappingPairCallback class is an additional optional broadphase user callback for adding/removing overlapping pairs, similar interface to btOverlappingPairCache. -class btOverlappingPairCallback -{ -public: - virtual ~btOverlappingPairCallback() - { - - } - - virtual btBroadphasePair* addOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) = 0; - - virtual void* removeOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1,btDispatcher* dispatcher) = 0; - - virtual void removeOverlappingPairsContainingProxy(btBroadphaseProxy* proxy0,btDispatcher* dispatcher) = 0; - -}; - -#endif //OVERLAPPING_PAIR_CALLBACK_H diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp deleted file mode 100644 index c911435a946..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp +++ /dev/null @@ -1,1375 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btQuantizedBvh.h" - -#include "LinearMath/btAabbUtil2.h" -#include "LinearMath/btIDebugDraw.h" -#include "LinearMath/btSerializer.h" - -#define RAYAABB2 - -btQuantizedBvh::btQuantizedBvh() : - m_bulletVersion(BT_BULLET_VERSION), - m_useQuantization(false), - //m_traversalMode(TRAVERSAL_STACKLESS_CACHE_FRIENDLY) - m_traversalMode(TRAVERSAL_STACKLESS) - //m_traversalMode(TRAVERSAL_RECURSIVE) - ,m_subtreeHeaderCount(0) //PCK: add this line -{ - m_bvhAabbMin.setValue(-SIMD_INFINITY,-SIMD_INFINITY,-SIMD_INFINITY); - m_bvhAabbMax.setValue(SIMD_INFINITY,SIMD_INFINITY,SIMD_INFINITY); -} - - - - - -void btQuantizedBvh::buildInternal() -{ - ///assumes that caller filled in the m_quantizedLeafNodes - m_useQuantization = true; - int numLeafNodes = 0; - - if (m_useQuantization) - { - //now we have an array of leafnodes in m_leafNodes - numLeafNodes = m_quantizedLeafNodes.size(); - - m_quantizedContiguousNodes.resize(2*numLeafNodes); - - } - - m_curNodeIndex = 0; - - buildTree(0,numLeafNodes); - - ///if the entire tree is small then subtree size, we need to create a header info for the tree - if(m_useQuantization && !m_SubtreeHeaders.size()) - { - btBvhSubtreeInfo& subtree = m_SubtreeHeaders.expand(); - subtree.setAabbFromQuantizeNode(m_quantizedContiguousNodes[0]); - subtree.m_rootNodeIndex = 0; - subtree.m_subtreeSize = m_quantizedContiguousNodes[0].isLeafNode() ? 1 : m_quantizedContiguousNodes[0].getEscapeIndex(); - } - - //PCK: update the copy of the size - m_subtreeHeaderCount = m_SubtreeHeaders.size(); - - //PCK: clear m_quantizedLeafNodes and m_leafNodes, they are temporary - m_quantizedLeafNodes.clear(); - m_leafNodes.clear(); -} - - - -///just for debugging, to visualize the individual patches/subtrees -#ifdef DEBUG_PATCH_COLORS -btVector3 color[4]= -{ - btVector3(1,0,0), - btVector3(0,1,0), - btVector3(0,0,1), - btVector3(0,1,1) -}; -#endif //DEBUG_PATCH_COLORS - - - -void btQuantizedBvh::setQuantizationValues(const btVector3& bvhAabbMin,const btVector3& bvhAabbMax,btScalar quantizationMargin) -{ - //enlarge the AABB to avoid division by zero when initializing the quantization values - btVector3 clampValue(quantizationMargin,quantizationMargin,quantizationMargin); - m_bvhAabbMin = bvhAabbMin - clampValue; - m_bvhAabbMax = bvhAabbMax + clampValue; - btVector3 aabbSize = m_bvhAabbMax - m_bvhAabbMin; - m_bvhQuantization = btVector3(btScalar(65533.0),btScalar(65533.0),btScalar(65533.0)) / aabbSize; - m_useQuantization = true; -} - - - - -btQuantizedBvh::~btQuantizedBvh() -{ -} - -#ifdef DEBUG_TREE_BUILDING -int gStackDepth = 0; -int gMaxStackDepth = 0; -#endif //DEBUG_TREE_BUILDING - -void btQuantizedBvh::buildTree (int startIndex,int endIndex) -{ -#ifdef DEBUG_TREE_BUILDING - gStackDepth++; - if (gStackDepth > gMaxStackDepth) - gMaxStackDepth = gStackDepth; -#endif //DEBUG_TREE_BUILDING - - - int splitAxis, splitIndex, i; - int numIndices =endIndex-startIndex; - int curIndex = m_curNodeIndex; - - btAssert(numIndices>0); - - if (numIndices==1) - { -#ifdef DEBUG_TREE_BUILDING - gStackDepth--; -#endif //DEBUG_TREE_BUILDING - - assignInternalNodeFromLeafNode(m_curNodeIndex,startIndex); - - m_curNodeIndex++; - return; - } - //calculate Best Splitting Axis and where to split it. Sort the incoming 'leafNodes' array within range 'startIndex/endIndex'. - - splitAxis = calcSplittingAxis(startIndex,endIndex); - - splitIndex = sortAndCalcSplittingIndex(startIndex,endIndex,splitAxis); - - int internalNodeIndex = m_curNodeIndex; - - //set the min aabb to 'inf' or a max value, and set the max aabb to a -inf/minimum value. - //the aabb will be expanded during buildTree/mergeInternalNodeAabb with actual node values - setInternalNodeAabbMin(m_curNodeIndex,m_bvhAabbMax);//can't use btVector3(SIMD_INFINITY,SIMD_INFINITY,SIMD_INFINITY)) because of quantization - setInternalNodeAabbMax(m_curNodeIndex,m_bvhAabbMin);//can't use btVector3(-SIMD_INFINITY,-SIMD_INFINITY,-SIMD_INFINITY)) because of quantization - - - for (i=startIndex;im_escapeIndex; - - int leftChildNodexIndex = m_curNodeIndex; - - //build left child tree - buildTree(startIndex,splitIndex); - - int rightChildNodexIndex = m_curNodeIndex; - //build right child tree - buildTree(splitIndex,endIndex); - -#ifdef DEBUG_TREE_BUILDING - gStackDepth--; -#endif //DEBUG_TREE_BUILDING - - int escapeIndex = m_curNodeIndex - curIndex; - - if (m_useQuantization) - { - //escapeIndex is the number of nodes of this subtree - const int sizeQuantizedNode =sizeof(btQuantizedBvhNode); - const int treeSizeInBytes = escapeIndex * sizeQuantizedNode; - if (treeSizeInBytes > MAX_SUBTREE_SIZE_IN_BYTES) - { - updateSubtreeHeaders(leftChildNodexIndex,rightChildNodexIndex); - } - } else - { - - } - - setInternalNodeEscapeIndex(internalNodeIndex,escapeIndex); - -} - -void btQuantizedBvh::updateSubtreeHeaders(int leftChildNodexIndex,int rightChildNodexIndex) -{ - btAssert(m_useQuantization); - - btQuantizedBvhNode& leftChildNode = m_quantizedContiguousNodes[leftChildNodexIndex]; - int leftSubTreeSize = leftChildNode.isLeafNode() ? 1 : leftChildNode.getEscapeIndex(); - int leftSubTreeSizeInBytes = leftSubTreeSize * static_cast(sizeof(btQuantizedBvhNode)); - - btQuantizedBvhNode& rightChildNode = m_quantizedContiguousNodes[rightChildNodexIndex]; - int rightSubTreeSize = rightChildNode.isLeafNode() ? 1 : rightChildNode.getEscapeIndex(); - int rightSubTreeSizeInBytes = rightSubTreeSize * static_cast(sizeof(btQuantizedBvhNode)); - - if(leftSubTreeSizeInBytes <= MAX_SUBTREE_SIZE_IN_BYTES) - { - btBvhSubtreeInfo& subtree = m_SubtreeHeaders.expand(); - subtree.setAabbFromQuantizeNode(leftChildNode); - subtree.m_rootNodeIndex = leftChildNodexIndex; - subtree.m_subtreeSize = leftSubTreeSize; - } - - if(rightSubTreeSizeInBytes <= MAX_SUBTREE_SIZE_IN_BYTES) - { - btBvhSubtreeInfo& subtree = m_SubtreeHeaders.expand(); - subtree.setAabbFromQuantizeNode(rightChildNode); - subtree.m_rootNodeIndex = rightChildNodexIndex; - subtree.m_subtreeSize = rightSubTreeSize; - } - - //PCK: update the copy of the size - m_subtreeHeaderCount = m_SubtreeHeaders.size(); -} - - -int btQuantizedBvh::sortAndCalcSplittingIndex(int startIndex,int endIndex,int splitAxis) -{ - int i; - int splitIndex =startIndex; - int numIndices = endIndex - startIndex; - btScalar splitValue; - - btVector3 means(btScalar(0.),btScalar(0.),btScalar(0.)); - for (i=startIndex;i splitValue) - { - //swap - swapLeafNodes(i,splitIndex); - splitIndex++; - } - } - - //if the splitIndex causes unbalanced trees, fix this by using the center in between startIndex and endIndex - //otherwise the tree-building might fail due to stack-overflows in certain cases. - //unbalanced1 is unsafe: it can cause stack overflows - //bool unbalanced1 = ((splitIndex==startIndex) || (splitIndex == (endIndex-1))); - - //unbalanced2 should work too: always use center (perfect balanced trees) - //bool unbalanced2 = true; - - //this should be safe too: - int rangeBalancedIndices = numIndices/3; - bool unbalanced = ((splitIndex<=(startIndex+rangeBalancedIndices)) || (splitIndex >=(endIndex-1-rangeBalancedIndices))); - - if (unbalanced) - { - splitIndex = startIndex+ (numIndices>>1); - } - - bool unbal = (splitIndex==startIndex) || (splitIndex == (endIndex)); - (void)unbal; - btAssert(!unbal); - - return splitIndex; -} - - -int btQuantizedBvh::calcSplittingAxis(int startIndex,int endIndex) -{ - int i; - - btVector3 means(btScalar(0.),btScalar(0.),btScalar(0.)); - btVector3 variance(btScalar(0.),btScalar(0.),btScalar(0.)); - int numIndices = endIndex-startIndex; - - for (i=startIndex;im_aabbMinOrg,rootNode->m_aabbMaxOrg); - isLeafNode = rootNode->m_escapeIndex == -1; - - //PCK: unsigned instead of bool - if (isLeafNode && (aabbOverlap != 0)) - { - nodeCallback->processNode(rootNode->m_subPart,rootNode->m_triangleIndex); - } - - //PCK: unsigned instead of bool - if ((aabbOverlap != 0) || isLeafNode) - { - rootNode++; - curIndex++; - } else - { - escapeIndex = rootNode->m_escapeIndex; - rootNode += escapeIndex; - curIndex += escapeIndex; - } - } - if (maxIterations < walkIterations) - maxIterations = walkIterations; - -} - -/* -///this was the original recursive traversal, before we optimized towards stackless traversal -void btQuantizedBvh::walkTree(btOptimizedBvhNode* rootNode,btNodeOverlapCallback* nodeCallback,const btVector3& aabbMin,const btVector3& aabbMax) const -{ - bool isLeafNode, aabbOverlap = TestAabbAgainstAabb2(aabbMin,aabbMax,rootNode->m_aabbMin,rootNode->m_aabbMax); - if (aabbOverlap) - { - isLeafNode = (!rootNode->m_leftChild && !rootNode->m_rightChild); - if (isLeafNode) - { - nodeCallback->processNode(rootNode); - } else - { - walkTree(rootNode->m_leftChild,nodeCallback,aabbMin,aabbMax); - walkTree(rootNode->m_rightChild,nodeCallback,aabbMin,aabbMax); - } - } - -} -*/ - -void btQuantizedBvh::walkRecursiveQuantizedTreeAgainstQueryAabb(const btQuantizedBvhNode* currentNode,btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax) const -{ - btAssert(m_useQuantization); - - bool isLeafNode; - //PCK: unsigned instead of bool - unsigned aabbOverlap; - - //PCK: unsigned instead of bool - aabbOverlap = testQuantizedAabbAgainstQuantizedAabb(quantizedQueryAabbMin,quantizedQueryAabbMax,currentNode->m_quantizedAabbMin,currentNode->m_quantizedAabbMax); - isLeafNode = currentNode->isLeafNode(); - - //PCK: unsigned instead of bool - if (aabbOverlap != 0) - { - if (isLeafNode) - { - nodeCallback->processNode(currentNode->getPartId(),currentNode->getTriangleIndex()); - } else - { - //process left and right children - const btQuantizedBvhNode* leftChildNode = currentNode+1; - walkRecursiveQuantizedTreeAgainstQueryAabb(leftChildNode,nodeCallback,quantizedQueryAabbMin,quantizedQueryAabbMax); - - const btQuantizedBvhNode* rightChildNode = leftChildNode->isLeafNode() ? leftChildNode+1:leftChildNode+leftChildNode->getEscapeIndex(); - walkRecursiveQuantizedTreeAgainstQueryAabb(rightChildNode,nodeCallback,quantizedQueryAabbMin,quantizedQueryAabbMax); - } - } -} - - - -void btQuantizedBvh::walkStacklessTreeAgainstRay(btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin, const btVector3& aabbMax, int startNodeIndex,int endNodeIndex) const -{ - btAssert(!m_useQuantization); - - const btOptimizedBvhNode* rootNode = &m_contiguousNodes[0]; - int escapeIndex, curIndex = 0; - int walkIterations = 0; - bool isLeafNode; - //PCK: unsigned instead of bool - unsigned aabbOverlap=0; - unsigned rayBoxOverlap=0; - btScalar lambda_max = 1.0; - - /* Quick pruning by quantized box */ - btVector3 rayAabbMin = raySource; - btVector3 rayAabbMax = raySource; - rayAabbMin.setMin(rayTarget); - rayAabbMax.setMax(rayTarget); - - /* Add box cast extents to bounding box */ - rayAabbMin += aabbMin; - rayAabbMax += aabbMax; - -#ifdef RAYAABB2 - btVector3 rayDir = (rayTarget-raySource); - rayDir.normalize (); - lambda_max = rayDir.dot(rayTarget-raySource); - ///what about division by zero? --> just set rayDirection[i] to 1.0 - btVector3 rayDirectionInverse; - rayDirectionInverse[0] = rayDir[0] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[0]; - rayDirectionInverse[1] = rayDir[1] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[1]; - rayDirectionInverse[2] = rayDir[2] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[2]; - unsigned int sign[3] = { rayDirectionInverse[0] < 0.0, rayDirectionInverse[1] < 0.0, rayDirectionInverse[2] < 0.0}; -#endif - - btVector3 bounds[2]; - - while (curIndex < m_curNodeIndex) - { - btScalar param = 1.0; - //catch bugs in tree data - btAssert (walkIterations < m_curNodeIndex); - - walkIterations++; - - bounds[0] = rootNode->m_aabbMinOrg; - bounds[1] = rootNode->m_aabbMaxOrg; - /* Add box cast extents */ - bounds[0] -= aabbMax; - bounds[1] -= aabbMin; - - aabbOverlap = TestAabbAgainstAabb2(rayAabbMin,rayAabbMax,rootNode->m_aabbMinOrg,rootNode->m_aabbMaxOrg); - //perhaps profile if it is worth doing the aabbOverlap test first - -#ifdef RAYAABB2 - ///careful with this check: need to check division by zero (above) and fix the unQuantize method - ///thanks Joerg/hiker for the reproduction case! - ///http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=1858 - rayBoxOverlap = aabbOverlap ? btRayAabb2 (raySource, rayDirectionInverse, sign, bounds, param, 0.0f, lambda_max) : false; - -#else - btVector3 normal; - rayBoxOverlap = btRayAabb(raySource, rayTarget,bounds[0],bounds[1],param, normal); -#endif - - isLeafNode = rootNode->m_escapeIndex == -1; - - //PCK: unsigned instead of bool - if (isLeafNode && (rayBoxOverlap != 0)) - { - nodeCallback->processNode(rootNode->m_subPart,rootNode->m_triangleIndex); - } - - //PCK: unsigned instead of bool - if ((rayBoxOverlap != 0) || isLeafNode) - { - rootNode++; - curIndex++; - } else - { - escapeIndex = rootNode->m_escapeIndex; - rootNode += escapeIndex; - curIndex += escapeIndex; - } - } - if (maxIterations < walkIterations) - maxIterations = walkIterations; - -} - - - -void btQuantizedBvh::walkStacklessQuantizedTreeAgainstRay(btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin, const btVector3& aabbMax, int startNodeIndex,int endNodeIndex) const -{ - btAssert(m_useQuantization); - - int curIndex = startNodeIndex; - int walkIterations = 0; - int subTreeSize = endNodeIndex - startNodeIndex; - (void)subTreeSize; - - const btQuantizedBvhNode* rootNode = &m_quantizedContiguousNodes[startNodeIndex]; - int escapeIndex; - - bool isLeafNode; - //PCK: unsigned instead of bool - unsigned boxBoxOverlap = 0; - unsigned rayBoxOverlap = 0; - - btScalar lambda_max = 1.0; - -#ifdef RAYAABB2 - btVector3 rayDirection = (rayTarget-raySource); - rayDirection.normalize (); - lambda_max = rayDirection.dot(rayTarget-raySource); - ///what about division by zero? --> just set rayDirection[i] to 1.0 - rayDirection[0] = rayDirection[0] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDirection[0]; - rayDirection[1] = rayDirection[1] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDirection[1]; - rayDirection[2] = rayDirection[2] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDirection[2]; - unsigned int sign[3] = { rayDirection[0] < 0.0, rayDirection[1] < 0.0, rayDirection[2] < 0.0}; -#endif - - /* Quick pruning by quantized box */ - btVector3 rayAabbMin = raySource; - btVector3 rayAabbMax = raySource; - rayAabbMin.setMin(rayTarget); - rayAabbMax.setMax(rayTarget); - - /* Add box cast extents to bounding box */ - rayAabbMin += aabbMin; - rayAabbMax += aabbMax; - - unsigned short int quantizedQueryAabbMin[3]; - unsigned short int quantizedQueryAabbMax[3]; - quantizeWithClamp(quantizedQueryAabbMin,rayAabbMin,0); - quantizeWithClamp(quantizedQueryAabbMax,rayAabbMax,1); - - while (curIndex < endNodeIndex) - { - -//#define VISUALLY_ANALYZE_BVH 1 -#ifdef VISUALLY_ANALYZE_BVH - //some code snippet to debugDraw aabb, to visually analyze bvh structure - static int drawPatch = 0; - //need some global access to a debugDrawer - extern btIDebugDraw* debugDrawerPtr; - if (curIndex==drawPatch) - { - btVector3 aabbMin,aabbMax; - aabbMin = unQuantize(rootNode->m_quantizedAabbMin); - aabbMax = unQuantize(rootNode->m_quantizedAabbMax); - btVector3 color(1,0,0); - debugDrawerPtr->drawAabb(aabbMin,aabbMax,color); - } -#endif//VISUALLY_ANALYZE_BVH - - //catch bugs in tree data - btAssert (walkIterations < subTreeSize); - - walkIterations++; - //PCK: unsigned instead of bool - // only interested if this is closer than any previous hit - btScalar param = 1.0; - rayBoxOverlap = 0; - boxBoxOverlap = testQuantizedAabbAgainstQuantizedAabb(quantizedQueryAabbMin,quantizedQueryAabbMax,rootNode->m_quantizedAabbMin,rootNode->m_quantizedAabbMax); - isLeafNode = rootNode->isLeafNode(); - if (boxBoxOverlap) - { - btVector3 bounds[2]; - bounds[0] = unQuantize(rootNode->m_quantizedAabbMin); - bounds[1] = unQuantize(rootNode->m_quantizedAabbMax); - /* Add box cast extents */ - bounds[0] -= aabbMax; - bounds[1] -= aabbMin; - btVector3 normal; -#if 0 - bool ra2 = btRayAabb2 (raySource, rayDirection, sign, bounds, param, 0.0, lambda_max); - bool ra = btRayAabb (raySource, rayTarget, bounds[0], bounds[1], param, normal); - if (ra2 != ra) - { - printf("functions don't match\n"); - } -#endif -#ifdef RAYAABB2 - ///careful with this check: need to check division by zero (above) and fix the unQuantize method - ///thanks Joerg/hiker for the reproduction case! - ///http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=1858 - - //BT_PROFILE("btRayAabb2"); - rayBoxOverlap = btRayAabb2 (raySource, rayDirection, sign, bounds, param, 0.0f, lambda_max); - -#else - rayBoxOverlap = true;//btRayAabb(raySource, rayTarget, bounds[0], bounds[1], param, normal); -#endif - } - - if (isLeafNode && rayBoxOverlap) - { - nodeCallback->processNode(rootNode->getPartId(),rootNode->getTriangleIndex()); - } - - //PCK: unsigned instead of bool - if ((rayBoxOverlap != 0) || isLeafNode) - { - rootNode++; - curIndex++; - } else - { - escapeIndex = rootNode->getEscapeIndex(); - rootNode += escapeIndex; - curIndex += escapeIndex; - } - } - if (maxIterations < walkIterations) - maxIterations = walkIterations; - -} - -void btQuantizedBvh::walkStacklessQuantizedTree(btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax,int startNodeIndex,int endNodeIndex) const -{ - btAssert(m_useQuantization); - - int curIndex = startNodeIndex; - int walkIterations = 0; - int subTreeSize = endNodeIndex - startNodeIndex; - (void)subTreeSize; - - const btQuantizedBvhNode* rootNode = &m_quantizedContiguousNodes[startNodeIndex]; - int escapeIndex; - - bool isLeafNode; - //PCK: unsigned instead of bool - unsigned aabbOverlap; - - while (curIndex < endNodeIndex) - { - -//#define VISUALLY_ANALYZE_BVH 1 -#ifdef VISUALLY_ANALYZE_BVH - //some code snippet to debugDraw aabb, to visually analyze bvh structure - static int drawPatch = 0; - //need some global access to a debugDrawer - extern btIDebugDraw* debugDrawerPtr; - if (curIndex==drawPatch) - { - btVector3 aabbMin,aabbMax; - aabbMin = unQuantize(rootNode->m_quantizedAabbMin); - aabbMax = unQuantize(rootNode->m_quantizedAabbMax); - btVector3 color(1,0,0); - debugDrawerPtr->drawAabb(aabbMin,aabbMax,color); - } -#endif//VISUALLY_ANALYZE_BVH - - //catch bugs in tree data - btAssert (walkIterations < subTreeSize); - - walkIterations++; - //PCK: unsigned instead of bool - aabbOverlap = testQuantizedAabbAgainstQuantizedAabb(quantizedQueryAabbMin,quantizedQueryAabbMax,rootNode->m_quantizedAabbMin,rootNode->m_quantizedAabbMax); - isLeafNode = rootNode->isLeafNode(); - - if (isLeafNode && aabbOverlap) - { - nodeCallback->processNode(rootNode->getPartId(),rootNode->getTriangleIndex()); - } - - //PCK: unsigned instead of bool - if ((aabbOverlap != 0) || isLeafNode) - { - rootNode++; - curIndex++; - } else - { - escapeIndex = rootNode->getEscapeIndex(); - rootNode += escapeIndex; - curIndex += escapeIndex; - } - } - if (maxIterations < walkIterations) - maxIterations = walkIterations; - -} - -//This traversal can be called from Playstation 3 SPU -void btQuantizedBvh::walkStacklessQuantizedTreeCacheFriendly(btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax) const -{ - btAssert(m_useQuantization); - - int i; - - - for (i=0;im_SubtreeHeaders.size();i++) - { - const btBvhSubtreeInfo& subtree = m_SubtreeHeaders[i]; - - //PCK: unsigned instead of bool - unsigned overlap = testQuantizedAabbAgainstQuantizedAabb(quantizedQueryAabbMin,quantizedQueryAabbMax,subtree.m_quantizedAabbMin,subtree.m_quantizedAabbMax); - if (overlap != 0) - { - walkStacklessQuantizedTree(nodeCallback,quantizedQueryAabbMin,quantizedQueryAabbMax, - subtree.m_rootNodeIndex, - subtree.m_rootNodeIndex+subtree.m_subtreeSize); - } - } -} - - -void btQuantizedBvh::reportRayOverlappingNodex (btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget) const -{ - reportBoxCastOverlappingNodex(nodeCallback,raySource,rayTarget,btVector3(0,0,0),btVector3(0,0,0)); -} - - -void btQuantizedBvh::reportBoxCastOverlappingNodex(btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin,const btVector3& aabbMax) const -{ - //always use stackless - - if (m_useQuantization) - { - walkStacklessQuantizedTreeAgainstRay(nodeCallback, raySource, rayTarget, aabbMin, aabbMax, 0, m_curNodeIndex); - } - else - { - walkStacklessTreeAgainstRay(nodeCallback, raySource, rayTarget, aabbMin, aabbMax, 0, m_curNodeIndex); - } - /* - { - //recursive traversal - btVector3 qaabbMin = raySource; - btVector3 qaabbMax = raySource; - qaabbMin.setMin(rayTarget); - qaabbMax.setMax(rayTarget); - qaabbMin += aabbMin; - qaabbMax += aabbMax; - reportAabbOverlappingNodex(nodeCallback,qaabbMin,qaabbMax); - } - */ - -} - - -void btQuantizedBvh::swapLeafNodes(int i,int splitIndex) -{ - if (m_useQuantization) - { - btQuantizedBvhNode tmp = m_quantizedLeafNodes[i]; - m_quantizedLeafNodes[i] = m_quantizedLeafNodes[splitIndex]; - m_quantizedLeafNodes[splitIndex] = tmp; - } else - { - btOptimizedBvhNode tmp = m_leafNodes[i]; - m_leafNodes[i] = m_leafNodes[splitIndex]; - m_leafNodes[splitIndex] = tmp; - } -} - -void btQuantizedBvh::assignInternalNodeFromLeafNode(int internalNode,int leafNodeIndex) -{ - if (m_useQuantization) - { - m_quantizedContiguousNodes[internalNode] = m_quantizedLeafNodes[leafNodeIndex]; - } else - { - m_contiguousNodes[internalNode] = m_leafNodes[leafNodeIndex]; - } -} - -//PCK: include -#include - -#if 0 -//PCK: consts -static const unsigned BVH_ALIGNMENT = 16; -static const unsigned BVH_ALIGNMENT_MASK = BVH_ALIGNMENT-1; - -static const unsigned BVH_ALIGNMENT_BLOCKS = 2; -#endif - - -unsigned int btQuantizedBvh::getAlignmentSerializationPadding() -{ - // I changed this to 0 since the extra padding is not needed or used. - return 0;//BVH_ALIGNMENT_BLOCKS * BVH_ALIGNMENT; -} - -unsigned btQuantizedBvh::calculateSerializeBufferSize() const -{ - unsigned baseSize = sizeof(btQuantizedBvh) + getAlignmentSerializationPadding(); - baseSize += sizeof(btBvhSubtreeInfo) * m_subtreeHeaderCount; - if (m_useQuantization) - { - return baseSize + m_curNodeIndex * sizeof(btQuantizedBvhNode); - } - return baseSize + m_curNodeIndex * sizeof(btOptimizedBvhNode); -} - -bool btQuantizedBvh::serialize(void *o_alignedDataBuffer, unsigned /*i_dataBufferSize */, bool i_swapEndian) const -{ - btAssert(m_subtreeHeaderCount == m_SubtreeHeaders.size()); - m_subtreeHeaderCount = m_SubtreeHeaders.size(); - -/* if (i_dataBufferSize < calculateSerializeBufferSize() || o_alignedDataBuffer == NULL || (((unsigned)o_alignedDataBuffer & BVH_ALIGNMENT_MASK) != 0)) - { - ///check alignedment for buffer? - btAssert(0); - return false; - } -*/ - - btQuantizedBvh *targetBvh = (btQuantizedBvh *)o_alignedDataBuffer; - - // construct the class so the virtual function table, etc will be set up - // Also, m_leafNodes and m_quantizedLeafNodes will be initialized to default values by the constructor - new (targetBvh) btQuantizedBvh; - - if (i_swapEndian) - { - targetBvh->m_curNodeIndex = static_cast(btSwapEndian(m_curNodeIndex)); - - - btSwapVector3Endian(m_bvhAabbMin,targetBvh->m_bvhAabbMin); - btSwapVector3Endian(m_bvhAabbMax,targetBvh->m_bvhAabbMax); - btSwapVector3Endian(m_bvhQuantization,targetBvh->m_bvhQuantization); - - targetBvh->m_traversalMode = (btTraversalMode)btSwapEndian(m_traversalMode); - targetBvh->m_subtreeHeaderCount = static_cast(btSwapEndian(m_subtreeHeaderCount)); - } - else - { - targetBvh->m_curNodeIndex = m_curNodeIndex; - targetBvh->m_bvhAabbMin = m_bvhAabbMin; - targetBvh->m_bvhAabbMax = m_bvhAabbMax; - targetBvh->m_bvhQuantization = m_bvhQuantization; - targetBvh->m_traversalMode = m_traversalMode; - targetBvh->m_subtreeHeaderCount = m_subtreeHeaderCount; - } - - targetBvh->m_useQuantization = m_useQuantization; - - unsigned char *nodeData = (unsigned char *)targetBvh; - nodeData += sizeof(btQuantizedBvh); - - unsigned sizeToAdd = 0;//(BVH_ALIGNMENT-((unsigned)nodeData & BVH_ALIGNMENT_MASK))&BVH_ALIGNMENT_MASK; - nodeData += sizeToAdd; - - int nodeCount = m_curNodeIndex; - - if (m_useQuantization) - { - targetBvh->m_quantizedContiguousNodes.initializeFromBuffer(nodeData, nodeCount, nodeCount); - - if (i_swapEndian) - { - for (int nodeIndex = 0; nodeIndex < nodeCount; nodeIndex++) - { - targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[0] = btSwapEndian(m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[0]); - targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[1] = btSwapEndian(m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[1]); - targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[2] = btSwapEndian(m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[2]); - - targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[0] = btSwapEndian(m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[0]); - targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[1] = btSwapEndian(m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[1]); - targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[2] = btSwapEndian(m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[2]); - - targetBvh->m_quantizedContiguousNodes[nodeIndex].m_escapeIndexOrTriangleIndex = static_cast(btSwapEndian(m_quantizedContiguousNodes[nodeIndex].m_escapeIndexOrTriangleIndex)); - } - } - else - { - for (int nodeIndex = 0; nodeIndex < nodeCount; nodeIndex++) - { - - targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[0] = m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[0]; - targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[1] = m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[1]; - targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[2] = m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[2]; - - targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[0] = m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[0]; - targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[1] = m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[1]; - targetBvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[2] = m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[2]; - - targetBvh->m_quantizedContiguousNodes[nodeIndex].m_escapeIndexOrTriangleIndex = m_quantizedContiguousNodes[nodeIndex].m_escapeIndexOrTriangleIndex; - - - } - } - nodeData += sizeof(btQuantizedBvhNode) * nodeCount; - - // this clears the pointer in the member variable it doesn't really do anything to the data - // it does call the destructor on the contained objects, but they are all classes with no destructor defined - // so the memory (which is not freed) is left alone - targetBvh->m_quantizedContiguousNodes.initializeFromBuffer(NULL, 0, 0); - } - else - { - targetBvh->m_contiguousNodes.initializeFromBuffer(nodeData, nodeCount, nodeCount); - - if (i_swapEndian) - { - for (int nodeIndex = 0; nodeIndex < nodeCount; nodeIndex++) - { - btSwapVector3Endian(m_contiguousNodes[nodeIndex].m_aabbMinOrg, targetBvh->m_contiguousNodes[nodeIndex].m_aabbMinOrg); - btSwapVector3Endian(m_contiguousNodes[nodeIndex].m_aabbMaxOrg, targetBvh->m_contiguousNodes[nodeIndex].m_aabbMaxOrg); - - targetBvh->m_contiguousNodes[nodeIndex].m_escapeIndex = static_cast(btSwapEndian(m_contiguousNodes[nodeIndex].m_escapeIndex)); - targetBvh->m_contiguousNodes[nodeIndex].m_subPart = static_cast(btSwapEndian(m_contiguousNodes[nodeIndex].m_subPart)); - targetBvh->m_contiguousNodes[nodeIndex].m_triangleIndex = static_cast(btSwapEndian(m_contiguousNodes[nodeIndex].m_triangleIndex)); - } - } - else - { - for (int nodeIndex = 0; nodeIndex < nodeCount; nodeIndex++) - { - targetBvh->m_contiguousNodes[nodeIndex].m_aabbMinOrg = m_contiguousNodes[nodeIndex].m_aabbMinOrg; - targetBvh->m_contiguousNodes[nodeIndex].m_aabbMaxOrg = m_contiguousNodes[nodeIndex].m_aabbMaxOrg; - - targetBvh->m_contiguousNodes[nodeIndex].m_escapeIndex = m_contiguousNodes[nodeIndex].m_escapeIndex; - targetBvh->m_contiguousNodes[nodeIndex].m_subPart = m_contiguousNodes[nodeIndex].m_subPart; - targetBvh->m_contiguousNodes[nodeIndex].m_triangleIndex = m_contiguousNodes[nodeIndex].m_triangleIndex; - } - } - nodeData += sizeof(btOptimizedBvhNode) * nodeCount; - - // this clears the pointer in the member variable it doesn't really do anything to the data - // it does call the destructor on the contained objects, but they are all classes with no destructor defined - // so the memory (which is not freed) is left alone - targetBvh->m_contiguousNodes.initializeFromBuffer(NULL, 0, 0); - } - - sizeToAdd = 0;//(BVH_ALIGNMENT-((unsigned)nodeData & BVH_ALIGNMENT_MASK))&BVH_ALIGNMENT_MASK; - nodeData += sizeToAdd; - - // Now serialize the subtree headers - targetBvh->m_SubtreeHeaders.initializeFromBuffer(nodeData, m_subtreeHeaderCount, m_subtreeHeaderCount); - if (i_swapEndian) - { - for (int i = 0; i < m_subtreeHeaderCount; i++) - { - targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMin[0] = btSwapEndian(m_SubtreeHeaders[i].m_quantizedAabbMin[0]); - targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMin[1] = btSwapEndian(m_SubtreeHeaders[i].m_quantizedAabbMin[1]); - targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMin[2] = btSwapEndian(m_SubtreeHeaders[i].m_quantizedAabbMin[2]); - - targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMax[0] = btSwapEndian(m_SubtreeHeaders[i].m_quantizedAabbMax[0]); - targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMax[1] = btSwapEndian(m_SubtreeHeaders[i].m_quantizedAabbMax[1]); - targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMax[2] = btSwapEndian(m_SubtreeHeaders[i].m_quantizedAabbMax[2]); - - targetBvh->m_SubtreeHeaders[i].m_rootNodeIndex = static_cast(btSwapEndian(m_SubtreeHeaders[i].m_rootNodeIndex)); - targetBvh->m_SubtreeHeaders[i].m_subtreeSize = static_cast(btSwapEndian(m_SubtreeHeaders[i].m_subtreeSize)); - } - } - else - { - for (int i = 0; i < m_subtreeHeaderCount; i++) - { - targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMin[0] = (m_SubtreeHeaders[i].m_quantizedAabbMin[0]); - targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMin[1] = (m_SubtreeHeaders[i].m_quantizedAabbMin[1]); - targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMin[2] = (m_SubtreeHeaders[i].m_quantizedAabbMin[2]); - - targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMax[0] = (m_SubtreeHeaders[i].m_quantizedAabbMax[0]); - targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMax[1] = (m_SubtreeHeaders[i].m_quantizedAabbMax[1]); - targetBvh->m_SubtreeHeaders[i].m_quantizedAabbMax[2] = (m_SubtreeHeaders[i].m_quantizedAabbMax[2]); - - targetBvh->m_SubtreeHeaders[i].m_rootNodeIndex = (m_SubtreeHeaders[i].m_rootNodeIndex); - targetBvh->m_SubtreeHeaders[i].m_subtreeSize = (m_SubtreeHeaders[i].m_subtreeSize); - - // need to clear padding in destination buffer - targetBvh->m_SubtreeHeaders[i].m_padding[0] = 0; - targetBvh->m_SubtreeHeaders[i].m_padding[1] = 0; - targetBvh->m_SubtreeHeaders[i].m_padding[2] = 0; - } - } - nodeData += sizeof(btBvhSubtreeInfo) * m_subtreeHeaderCount; - - // this clears the pointer in the member variable it doesn't really do anything to the data - // it does call the destructor on the contained objects, but they are all classes with no destructor defined - // so the memory (which is not freed) is left alone - targetBvh->m_SubtreeHeaders.initializeFromBuffer(NULL, 0, 0); - - // this wipes the virtual function table pointer at the start of the buffer for the class - *((void**)o_alignedDataBuffer) = NULL; - - return true; -} - -btQuantizedBvh *btQuantizedBvh::deSerializeInPlace(void *i_alignedDataBuffer, unsigned int i_dataBufferSize, bool i_swapEndian) -{ - - if (i_alignedDataBuffer == NULL)// || (((unsigned)i_alignedDataBuffer & BVH_ALIGNMENT_MASK) != 0)) - { - return NULL; - } - btQuantizedBvh *bvh = (btQuantizedBvh *)i_alignedDataBuffer; - - if (i_swapEndian) - { - bvh->m_curNodeIndex = static_cast(btSwapEndian(bvh->m_curNodeIndex)); - - btUnSwapVector3Endian(bvh->m_bvhAabbMin); - btUnSwapVector3Endian(bvh->m_bvhAabbMax); - btUnSwapVector3Endian(bvh->m_bvhQuantization); - - bvh->m_traversalMode = (btTraversalMode)btSwapEndian(bvh->m_traversalMode); - bvh->m_subtreeHeaderCount = static_cast(btSwapEndian(bvh->m_subtreeHeaderCount)); - } - - unsigned int calculatedBufSize = bvh->calculateSerializeBufferSize(); - btAssert(calculatedBufSize <= i_dataBufferSize); - - if (calculatedBufSize > i_dataBufferSize) - { - return NULL; - } - - unsigned char *nodeData = (unsigned char *)bvh; - nodeData += sizeof(btQuantizedBvh); - - unsigned sizeToAdd = 0;//(BVH_ALIGNMENT-((unsigned)nodeData & BVH_ALIGNMENT_MASK))&BVH_ALIGNMENT_MASK; - nodeData += sizeToAdd; - - int nodeCount = bvh->m_curNodeIndex; - - // Must call placement new to fill in virtual function table, etc, but we don't want to overwrite most data, so call a special version of the constructor - // Also, m_leafNodes and m_quantizedLeafNodes will be initialized to default values by the constructor - new (bvh) btQuantizedBvh(*bvh, false); - - if (bvh->m_useQuantization) - { - bvh->m_quantizedContiguousNodes.initializeFromBuffer(nodeData, nodeCount, nodeCount); - - if (i_swapEndian) - { - for (int nodeIndex = 0; nodeIndex < nodeCount; nodeIndex++) - { - bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[0] = btSwapEndian(bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[0]); - bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[1] = btSwapEndian(bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[1]); - bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[2] = btSwapEndian(bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[2]); - - bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[0] = btSwapEndian(bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[0]); - bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[1] = btSwapEndian(bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[1]); - bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[2] = btSwapEndian(bvh->m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[2]); - - bvh->m_quantizedContiguousNodes[nodeIndex].m_escapeIndexOrTriangleIndex = static_cast(btSwapEndian(bvh->m_quantizedContiguousNodes[nodeIndex].m_escapeIndexOrTriangleIndex)); - } - } - nodeData += sizeof(btQuantizedBvhNode) * nodeCount; - } - else - { - bvh->m_contiguousNodes.initializeFromBuffer(nodeData, nodeCount, nodeCount); - - if (i_swapEndian) - { - for (int nodeIndex = 0; nodeIndex < nodeCount; nodeIndex++) - { - btUnSwapVector3Endian(bvh->m_contiguousNodes[nodeIndex].m_aabbMinOrg); - btUnSwapVector3Endian(bvh->m_contiguousNodes[nodeIndex].m_aabbMaxOrg); - - bvh->m_contiguousNodes[nodeIndex].m_escapeIndex = static_cast(btSwapEndian(bvh->m_contiguousNodes[nodeIndex].m_escapeIndex)); - bvh->m_contiguousNodes[nodeIndex].m_subPart = static_cast(btSwapEndian(bvh->m_contiguousNodes[nodeIndex].m_subPart)); - bvh->m_contiguousNodes[nodeIndex].m_triangleIndex = static_cast(btSwapEndian(bvh->m_contiguousNodes[nodeIndex].m_triangleIndex)); - } - } - nodeData += sizeof(btOptimizedBvhNode) * nodeCount; - } - - sizeToAdd = 0;//(BVH_ALIGNMENT-((unsigned)nodeData & BVH_ALIGNMENT_MASK))&BVH_ALIGNMENT_MASK; - nodeData += sizeToAdd; - - // Now serialize the subtree headers - bvh->m_SubtreeHeaders.initializeFromBuffer(nodeData, bvh->m_subtreeHeaderCount, bvh->m_subtreeHeaderCount); - if (i_swapEndian) - { - for (int i = 0; i < bvh->m_subtreeHeaderCount; i++) - { - bvh->m_SubtreeHeaders[i].m_quantizedAabbMin[0] = btSwapEndian(bvh->m_SubtreeHeaders[i].m_quantizedAabbMin[0]); - bvh->m_SubtreeHeaders[i].m_quantizedAabbMin[1] = btSwapEndian(bvh->m_SubtreeHeaders[i].m_quantizedAabbMin[1]); - bvh->m_SubtreeHeaders[i].m_quantizedAabbMin[2] = btSwapEndian(bvh->m_SubtreeHeaders[i].m_quantizedAabbMin[2]); - - bvh->m_SubtreeHeaders[i].m_quantizedAabbMax[0] = btSwapEndian(bvh->m_SubtreeHeaders[i].m_quantizedAabbMax[0]); - bvh->m_SubtreeHeaders[i].m_quantizedAabbMax[1] = btSwapEndian(bvh->m_SubtreeHeaders[i].m_quantizedAabbMax[1]); - bvh->m_SubtreeHeaders[i].m_quantizedAabbMax[2] = btSwapEndian(bvh->m_SubtreeHeaders[i].m_quantizedAabbMax[2]); - - bvh->m_SubtreeHeaders[i].m_rootNodeIndex = static_cast(btSwapEndian(bvh->m_SubtreeHeaders[i].m_rootNodeIndex)); - bvh->m_SubtreeHeaders[i].m_subtreeSize = static_cast(btSwapEndian(bvh->m_SubtreeHeaders[i].m_subtreeSize)); - } - } - - return bvh; -} - -// Constructor that prevents btVector3's default constructor from being called -btQuantizedBvh::btQuantizedBvh(btQuantizedBvh &self, bool /* ownsMemory */) : -m_bvhAabbMin(self.m_bvhAabbMin), -m_bvhAabbMax(self.m_bvhAabbMax), -m_bvhQuantization(self.m_bvhQuantization), -m_bulletVersion(BT_BULLET_VERSION) -{ - -} - -void btQuantizedBvh::deSerializeFloat(struct btQuantizedBvhFloatData& quantizedBvhFloatData) -{ - m_bvhAabbMax.deSerializeFloat(quantizedBvhFloatData.m_bvhAabbMax); - m_bvhAabbMin.deSerializeFloat(quantizedBvhFloatData.m_bvhAabbMin); - m_bvhQuantization.deSerializeFloat(quantizedBvhFloatData.m_bvhQuantization); - - m_curNodeIndex = quantizedBvhFloatData.m_curNodeIndex; - m_useQuantization = quantizedBvhFloatData.m_useQuantization!=0; - - { - int numElem = quantizedBvhFloatData.m_numContiguousLeafNodes; - m_contiguousNodes.resize(numElem); - - if (numElem) - { - btOptimizedBvhNodeFloatData* memPtr = quantizedBvhFloatData.m_contiguousNodesPtr; - - for (int i=0;im_aabbMaxOrg); - m_contiguousNodes[i].m_aabbMinOrg.deSerializeFloat(memPtr->m_aabbMinOrg); - m_contiguousNodes[i].m_escapeIndex = memPtr->m_escapeIndex; - m_contiguousNodes[i].m_subPart = memPtr->m_subPart; - m_contiguousNodes[i].m_triangleIndex = memPtr->m_triangleIndex; - } - } - } - - { - int numElem = quantizedBvhFloatData.m_numQuantizedContiguousNodes; - m_quantizedContiguousNodes.resize(numElem); - - if (numElem) - { - btQuantizedBvhNodeData* memPtr = quantizedBvhFloatData.m_quantizedContiguousNodesPtr; - for (int i=0;im_escapeIndexOrTriangleIndex; - m_quantizedContiguousNodes[i].m_quantizedAabbMax[0] = memPtr->m_quantizedAabbMax[0]; - m_quantizedContiguousNodes[i].m_quantizedAabbMax[1] = memPtr->m_quantizedAabbMax[1]; - m_quantizedContiguousNodes[i].m_quantizedAabbMax[2] = memPtr->m_quantizedAabbMax[2]; - m_quantizedContiguousNodes[i].m_quantizedAabbMin[0] = memPtr->m_quantizedAabbMin[0]; - m_quantizedContiguousNodes[i].m_quantizedAabbMin[1] = memPtr->m_quantizedAabbMin[1]; - m_quantizedContiguousNodes[i].m_quantizedAabbMin[2] = memPtr->m_quantizedAabbMin[2]; - } - } - } - - m_traversalMode = btTraversalMode(quantizedBvhFloatData.m_traversalMode); - - { - int numElem = quantizedBvhFloatData.m_numSubtreeHeaders; - m_SubtreeHeaders.resize(numElem); - if (numElem) - { - btBvhSubtreeInfoData* memPtr = quantizedBvhFloatData.m_subTreeInfoPtr; - for (int i=0;im_quantizedAabbMax[0] ; - m_SubtreeHeaders[i].m_quantizedAabbMax[1] = memPtr->m_quantizedAabbMax[1]; - m_SubtreeHeaders[i].m_quantizedAabbMax[2] = memPtr->m_quantizedAabbMax[2]; - m_SubtreeHeaders[i].m_quantizedAabbMin[0] = memPtr->m_quantizedAabbMin[0]; - m_SubtreeHeaders[i].m_quantizedAabbMin[1] = memPtr->m_quantizedAabbMin[1]; - m_SubtreeHeaders[i].m_quantizedAabbMin[2] = memPtr->m_quantizedAabbMin[2]; - m_SubtreeHeaders[i].m_rootNodeIndex = memPtr->m_rootNodeIndex; - m_SubtreeHeaders[i].m_subtreeSize = memPtr->m_subtreeSize; - } - } - } -} - -void btQuantizedBvh::deSerializeDouble(struct btQuantizedBvhDoubleData& quantizedBvhDoubleData) -{ - m_bvhAabbMax.deSerializeDouble(quantizedBvhDoubleData.m_bvhAabbMax); - m_bvhAabbMin.deSerializeDouble(quantizedBvhDoubleData.m_bvhAabbMin); - m_bvhQuantization.deSerializeDouble(quantizedBvhDoubleData.m_bvhQuantization); - - m_curNodeIndex = quantizedBvhDoubleData.m_curNodeIndex; - m_useQuantization = quantizedBvhDoubleData.m_useQuantization!=0; - - { - int numElem = quantizedBvhDoubleData.m_numContiguousLeafNodes; - m_contiguousNodes.resize(numElem); - - if (numElem) - { - btOptimizedBvhNodeDoubleData* memPtr = quantizedBvhDoubleData.m_contiguousNodesPtr; - - for (int i=0;im_aabbMaxOrg); - m_contiguousNodes[i].m_aabbMinOrg.deSerializeDouble(memPtr->m_aabbMinOrg); - m_contiguousNodes[i].m_escapeIndex = memPtr->m_escapeIndex; - m_contiguousNodes[i].m_subPart = memPtr->m_subPart; - m_contiguousNodes[i].m_triangleIndex = memPtr->m_triangleIndex; - } - } - } - - { - int numElem = quantizedBvhDoubleData.m_numQuantizedContiguousNodes; - m_quantizedContiguousNodes.resize(numElem); - - if (numElem) - { - btQuantizedBvhNodeData* memPtr = quantizedBvhDoubleData.m_quantizedContiguousNodesPtr; - for (int i=0;im_escapeIndexOrTriangleIndex; - m_quantizedContiguousNodes[i].m_quantizedAabbMax[0] = memPtr->m_quantizedAabbMax[0]; - m_quantizedContiguousNodes[i].m_quantizedAabbMax[1] = memPtr->m_quantizedAabbMax[1]; - m_quantizedContiguousNodes[i].m_quantizedAabbMax[2] = memPtr->m_quantizedAabbMax[2]; - m_quantizedContiguousNodes[i].m_quantizedAabbMin[0] = memPtr->m_quantizedAabbMin[0]; - m_quantizedContiguousNodes[i].m_quantizedAabbMin[1] = memPtr->m_quantizedAabbMin[1]; - m_quantizedContiguousNodes[i].m_quantizedAabbMin[2] = memPtr->m_quantizedAabbMin[2]; - } - } - } - - m_traversalMode = btTraversalMode(quantizedBvhDoubleData.m_traversalMode); - - { - int numElem = quantizedBvhDoubleData.m_numSubtreeHeaders; - m_SubtreeHeaders.resize(numElem); - if (numElem) - { - btBvhSubtreeInfoData* memPtr = quantizedBvhDoubleData.m_subTreeInfoPtr; - for (int i=0;im_quantizedAabbMax[0] ; - m_SubtreeHeaders[i].m_quantizedAabbMax[1] = memPtr->m_quantizedAabbMax[1]; - m_SubtreeHeaders[i].m_quantizedAabbMax[2] = memPtr->m_quantizedAabbMax[2]; - m_SubtreeHeaders[i].m_quantizedAabbMin[0] = memPtr->m_quantizedAabbMin[0]; - m_SubtreeHeaders[i].m_quantizedAabbMin[1] = memPtr->m_quantizedAabbMin[1]; - m_SubtreeHeaders[i].m_quantizedAabbMin[2] = memPtr->m_quantizedAabbMin[2]; - m_SubtreeHeaders[i].m_rootNodeIndex = memPtr->m_rootNodeIndex; - m_SubtreeHeaders[i].m_subtreeSize = memPtr->m_subtreeSize; - } - } - } - -} - - - -///fills the dataBuffer and returns the struct name (and 0 on failure) -const char* btQuantizedBvh::serialize(void* dataBuffer, btSerializer* serializer) const -{ - btQuantizedBvhData* quantizedData = (btQuantizedBvhData*)dataBuffer; - - m_bvhAabbMax.serialize(quantizedData->m_bvhAabbMax); - m_bvhAabbMin.serialize(quantizedData->m_bvhAabbMin); - m_bvhQuantization.serialize(quantizedData->m_bvhQuantization); - - quantizedData->m_curNodeIndex = m_curNodeIndex; - quantizedData->m_useQuantization = m_useQuantization; - - quantizedData->m_numContiguousLeafNodes = m_contiguousNodes.size(); - quantizedData->m_contiguousNodesPtr = (btOptimizedBvhNodeData*) (m_contiguousNodes.size() ? serializer->getUniquePointer((void*)&m_contiguousNodes[0]) : 0); - if (quantizedData->m_contiguousNodesPtr) - { - int sz = sizeof(btOptimizedBvhNodeData); - int numElem = m_contiguousNodes.size(); - btChunk* chunk = serializer->allocate(sz,numElem); - btOptimizedBvhNodeData* memPtr = (btOptimizedBvhNodeData*)chunk->m_oldPtr; - for (int i=0;im_aabbMaxOrg); - m_contiguousNodes[i].m_aabbMinOrg.serialize(memPtr->m_aabbMinOrg); - memPtr->m_escapeIndex = m_contiguousNodes[i].m_escapeIndex; - memPtr->m_subPart = m_contiguousNodes[i].m_subPart; - memPtr->m_triangleIndex = m_contiguousNodes[i].m_triangleIndex; - } - serializer->finalizeChunk(chunk,"btOptimizedBvhNodeData",BT_ARRAY_CODE,(void*)&m_contiguousNodes[0]); - } - - quantizedData->m_numQuantizedContiguousNodes = m_quantizedContiguousNodes.size(); -// printf("quantizedData->m_numQuantizedContiguousNodes=%d\n",quantizedData->m_numQuantizedContiguousNodes); - quantizedData->m_quantizedContiguousNodesPtr =(btQuantizedBvhNodeData*) (m_quantizedContiguousNodes.size() ? serializer->getUniquePointer((void*)&m_quantizedContiguousNodes[0]) : 0); - if (quantizedData->m_quantizedContiguousNodesPtr) - { - int sz = sizeof(btQuantizedBvhNodeData); - int numElem = m_quantizedContiguousNodes.size(); - btChunk* chunk = serializer->allocate(sz,numElem); - btQuantizedBvhNodeData* memPtr = (btQuantizedBvhNodeData*)chunk->m_oldPtr; - for (int i=0;im_escapeIndexOrTriangleIndex = m_quantizedContiguousNodes[i].m_escapeIndexOrTriangleIndex; - memPtr->m_quantizedAabbMax[0] = m_quantizedContiguousNodes[i].m_quantizedAabbMax[0]; - memPtr->m_quantizedAabbMax[1] = m_quantizedContiguousNodes[i].m_quantizedAabbMax[1]; - memPtr->m_quantizedAabbMax[2] = m_quantizedContiguousNodes[i].m_quantizedAabbMax[2]; - memPtr->m_quantizedAabbMin[0] = m_quantizedContiguousNodes[i].m_quantizedAabbMin[0]; - memPtr->m_quantizedAabbMin[1] = m_quantizedContiguousNodes[i].m_quantizedAabbMin[1]; - memPtr->m_quantizedAabbMin[2] = m_quantizedContiguousNodes[i].m_quantizedAabbMin[2]; - } - serializer->finalizeChunk(chunk,"btQuantizedBvhNodeData",BT_ARRAY_CODE,(void*)&m_quantizedContiguousNodes[0]); - } - - quantizedData->m_traversalMode = int(m_traversalMode); - quantizedData->m_numSubtreeHeaders = m_SubtreeHeaders.size(); - - quantizedData->m_subTreeInfoPtr = (btBvhSubtreeInfoData*) (m_SubtreeHeaders.size() ? serializer->getUniquePointer((void*)&m_SubtreeHeaders[0]) : 0); - if (quantizedData->m_subTreeInfoPtr) - { - int sz = sizeof(btBvhSubtreeInfoData); - int numElem = m_SubtreeHeaders.size(); - btChunk* chunk = serializer->allocate(sz,numElem); - btBvhSubtreeInfoData* memPtr = (btBvhSubtreeInfoData*)chunk->m_oldPtr; - for (int i=0;im_quantizedAabbMax[0] = m_SubtreeHeaders[i].m_quantizedAabbMax[0]; - memPtr->m_quantizedAabbMax[1] = m_SubtreeHeaders[i].m_quantizedAabbMax[1]; - memPtr->m_quantizedAabbMax[2] = m_SubtreeHeaders[i].m_quantizedAabbMax[2]; - memPtr->m_quantizedAabbMin[0] = m_SubtreeHeaders[i].m_quantizedAabbMin[0]; - memPtr->m_quantizedAabbMin[1] = m_SubtreeHeaders[i].m_quantizedAabbMin[1]; - memPtr->m_quantizedAabbMin[2] = m_SubtreeHeaders[i].m_quantizedAabbMin[2]; - - memPtr->m_rootNodeIndex = m_SubtreeHeaders[i].m_rootNodeIndex; - memPtr->m_subtreeSize = m_SubtreeHeaders[i].m_subtreeSize; - } - serializer->finalizeChunk(chunk,"btBvhSubtreeInfoData",BT_ARRAY_CODE,(void*)&m_SubtreeHeaders[0]); - } - return btQuantizedBvhDataName; -} - - - - - diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btQuantizedBvh.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btQuantizedBvh.h deleted file mode 100644 index aa30d43a025..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btQuantizedBvh.h +++ /dev/null @@ -1,579 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef QUANTIZED_BVH_H -#define QUANTIZED_BVH_H - -class btSerializer; - -//#define DEBUG_CHECK_DEQUANTIZATION 1 -#ifdef DEBUG_CHECK_DEQUANTIZATION -#ifdef __SPU__ -#define printf spu_printf -#endif //__SPU__ - -#include -#include -#endif //DEBUG_CHECK_DEQUANTIZATION - -#include "LinearMath/btVector3.h" -#include "LinearMath/btAlignedAllocator.h" - -#ifdef BT_USE_DOUBLE_PRECISION -#define btQuantizedBvhData btQuantizedBvhDoubleData -#define btOptimizedBvhNodeData btOptimizedBvhNodeDoubleData -#define btQuantizedBvhDataName "btQuantizedBvhDoubleData" -#else -#define btQuantizedBvhData btQuantizedBvhFloatData -#define btOptimizedBvhNodeData btOptimizedBvhNodeFloatData -#define btQuantizedBvhDataName "btQuantizedBvhFloatData" -#endif - - - -//http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/vclrf__m128.asp - - -//Note: currently we have 16 bytes per quantized node -#define MAX_SUBTREE_SIZE_IN_BYTES 2048 - -// 10 gives the potential for 1024 parts, with at most 2^21 (2097152) (minus one -// actually) triangles each (since the sign bit is reserved -#define MAX_NUM_PARTS_IN_BITS 10 - -///btQuantizedBvhNode is a compressed aabb node, 16 bytes. -///Node can be used for leafnode or internal node. Leafnodes can point to 32-bit triangle index (non-negative range). -ATTRIBUTE_ALIGNED16 (struct) btQuantizedBvhNode -{ - BT_DECLARE_ALIGNED_ALLOCATOR(); - - //12 bytes - unsigned short int m_quantizedAabbMin[3]; - unsigned short int m_quantizedAabbMax[3]; - //4 bytes - int m_escapeIndexOrTriangleIndex; - - bool isLeafNode() const - { - //skipindex is negative (internal node), triangleindex >=0 (leafnode) - return (m_escapeIndexOrTriangleIndex >= 0); - } - int getEscapeIndex() const - { - btAssert(!isLeafNode()); - return -m_escapeIndexOrTriangleIndex; - } - int getTriangleIndex() const - { - btAssert(isLeafNode()); - // Get only the lower bits where the triangle index is stored - return (m_escapeIndexOrTriangleIndex&~((~0)<<(31-MAX_NUM_PARTS_IN_BITS))); - } - int getPartId() const - { - btAssert(isLeafNode()); - // Get only the highest bits where the part index is stored - return (m_escapeIndexOrTriangleIndex>>(31-MAX_NUM_PARTS_IN_BITS)); - } -} -; - -/// btOptimizedBvhNode contains both internal and leaf node information. -/// Total node size is 44 bytes / node. You can use the compressed version of 16 bytes. -ATTRIBUTE_ALIGNED16 (struct) btOptimizedBvhNode -{ - BT_DECLARE_ALIGNED_ALLOCATOR(); - - //32 bytes - btVector3 m_aabbMinOrg; - btVector3 m_aabbMaxOrg; - - //4 - int m_escapeIndex; - - //8 - //for child nodes - int m_subPart; - int m_triangleIndex; - int m_padding[5];//bad, due to alignment - - -}; - - -///btBvhSubtreeInfo provides info to gather a subtree of limited size -ATTRIBUTE_ALIGNED16(class) btBvhSubtreeInfo -{ -public: - BT_DECLARE_ALIGNED_ALLOCATOR(); - - //12 bytes - unsigned short int m_quantizedAabbMin[3]; - unsigned short int m_quantizedAabbMax[3]; - //4 bytes, points to the root of the subtree - int m_rootNodeIndex; - //4 bytes - int m_subtreeSize; - int m_padding[3]; - - btBvhSubtreeInfo() - { - //memset(&m_padding[0], 0, sizeof(m_padding)); - } - - - void setAabbFromQuantizeNode(const btQuantizedBvhNode& quantizedNode) - { - m_quantizedAabbMin[0] = quantizedNode.m_quantizedAabbMin[0]; - m_quantizedAabbMin[1] = quantizedNode.m_quantizedAabbMin[1]; - m_quantizedAabbMin[2] = quantizedNode.m_quantizedAabbMin[2]; - m_quantizedAabbMax[0] = quantizedNode.m_quantizedAabbMax[0]; - m_quantizedAabbMax[1] = quantizedNode.m_quantizedAabbMax[1]; - m_quantizedAabbMax[2] = quantizedNode.m_quantizedAabbMax[2]; - } -} -; - - -class btNodeOverlapCallback -{ -public: - virtual ~btNodeOverlapCallback() {}; - - virtual void processNode(int subPart, int triangleIndex) = 0; -}; - -#include "LinearMath/btAlignedAllocator.h" -#include "LinearMath/btAlignedObjectArray.h" - - - -///for code readability: -typedef btAlignedObjectArray NodeArray; -typedef btAlignedObjectArray QuantizedNodeArray; -typedef btAlignedObjectArray BvhSubtreeInfoArray; - - -///The btQuantizedBvh class stores an AABB tree that can be quickly traversed on CPU and Cell SPU. -///It is used by the btBvhTriangleMeshShape as midphase, and by the btMultiSapBroadphase. -///It is recommended to use quantization for better performance and lower memory requirements. -ATTRIBUTE_ALIGNED16(class) btQuantizedBvh -{ -public: - enum btTraversalMode - { - TRAVERSAL_STACKLESS = 0, - TRAVERSAL_STACKLESS_CACHE_FRIENDLY, - TRAVERSAL_RECURSIVE - }; - -protected: - - - btVector3 m_bvhAabbMin; - btVector3 m_bvhAabbMax; - btVector3 m_bvhQuantization; - - int m_bulletVersion; //for serialization versioning. It could also be used to detect endianess. - - int m_curNodeIndex; - //quantization data - bool m_useQuantization; - - - - NodeArray m_leafNodes; - NodeArray m_contiguousNodes; - QuantizedNodeArray m_quantizedLeafNodes; - QuantizedNodeArray m_quantizedContiguousNodes; - - btTraversalMode m_traversalMode; - BvhSubtreeInfoArray m_SubtreeHeaders; - - //This is only used for serialization so we don't have to add serialization directly to btAlignedObjectArray - mutable int m_subtreeHeaderCount; - - - - - - ///two versions, one for quantized and normal nodes. This allows code-reuse while maintaining readability (no template/macro!) - ///this might be refactored into a virtual, it is usually not calculated at run-time - void setInternalNodeAabbMin(int nodeIndex, const btVector3& aabbMin) - { - if (m_useQuantization) - { - quantize(&m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[0] ,aabbMin,0); - } else - { - m_contiguousNodes[nodeIndex].m_aabbMinOrg = aabbMin; - - } - } - void setInternalNodeAabbMax(int nodeIndex,const btVector3& aabbMax) - { - if (m_useQuantization) - { - quantize(&m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[0],aabbMax,1); - } else - { - m_contiguousNodes[nodeIndex].m_aabbMaxOrg = aabbMax; - } - } - - btVector3 getAabbMin(int nodeIndex) const - { - if (m_useQuantization) - { - return unQuantize(&m_quantizedLeafNodes[nodeIndex].m_quantizedAabbMin[0]); - } - //non-quantized - return m_leafNodes[nodeIndex].m_aabbMinOrg; - - } - btVector3 getAabbMax(int nodeIndex) const - { - if (m_useQuantization) - { - return unQuantize(&m_quantizedLeafNodes[nodeIndex].m_quantizedAabbMax[0]); - } - //non-quantized - return m_leafNodes[nodeIndex].m_aabbMaxOrg; - - } - - - void setInternalNodeEscapeIndex(int nodeIndex, int escapeIndex) - { - if (m_useQuantization) - { - m_quantizedContiguousNodes[nodeIndex].m_escapeIndexOrTriangleIndex = -escapeIndex; - } - else - { - m_contiguousNodes[nodeIndex].m_escapeIndex = escapeIndex; - } - - } - - void mergeInternalNodeAabb(int nodeIndex,const btVector3& newAabbMin,const btVector3& newAabbMax) - { - if (m_useQuantization) - { - unsigned short int quantizedAabbMin[3]; - unsigned short int quantizedAabbMax[3]; - quantize(quantizedAabbMin,newAabbMin,0); - quantize(quantizedAabbMax,newAabbMax,1); - for (int i=0;i<3;i++) - { - if (m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[i] > quantizedAabbMin[i]) - m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[i] = quantizedAabbMin[i]; - - if (m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[i] < quantizedAabbMax[i]) - m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[i] = quantizedAabbMax[i]; - - } - } else - { - //non-quantized - m_contiguousNodes[nodeIndex].m_aabbMinOrg.setMin(newAabbMin); - m_contiguousNodes[nodeIndex].m_aabbMaxOrg.setMax(newAabbMax); - } - } - - void swapLeafNodes(int firstIndex,int secondIndex); - - void assignInternalNodeFromLeafNode(int internalNode,int leafNodeIndex); - -protected: - - - - void buildTree (int startIndex,int endIndex); - - int calcSplittingAxis(int startIndex,int endIndex); - - int sortAndCalcSplittingIndex(int startIndex,int endIndex,int splitAxis); - - void walkStacklessTree(btNodeOverlapCallback* nodeCallback,const btVector3& aabbMin,const btVector3& aabbMax) const; - - void walkStacklessQuantizedTreeAgainstRay(btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin, const btVector3& aabbMax, int startNodeIndex,int endNodeIndex) const; - void walkStacklessQuantizedTree(btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax,int startNodeIndex,int endNodeIndex) const; - void walkStacklessTreeAgainstRay(btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin, const btVector3& aabbMax, int startNodeIndex,int endNodeIndex) const; - - ///tree traversal designed for small-memory processors like PS3 SPU - void walkStacklessQuantizedTreeCacheFriendly(btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax) const; - - ///use the 16-byte stackless 'skipindex' node tree to do a recursive traversal - void walkRecursiveQuantizedTreeAgainstQueryAabb(const btQuantizedBvhNode* currentNode,btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax) const; - - ///use the 16-byte stackless 'skipindex' node tree to do a recursive traversal - void walkRecursiveQuantizedTreeAgainstQuantizedTree(const btQuantizedBvhNode* treeNodeA,const btQuantizedBvhNode* treeNodeB,btNodeOverlapCallback* nodeCallback) const; - - - - - void updateSubtreeHeaders(int leftChildNodexIndex,int rightChildNodexIndex); - -public: - - BT_DECLARE_ALIGNED_ALLOCATOR(); - - btQuantizedBvh(); - - virtual ~btQuantizedBvh(); - - - ///***************************************** expert/internal use only ************************* - void setQuantizationValues(const btVector3& bvhAabbMin,const btVector3& bvhAabbMax,btScalar quantizationMargin=btScalar(1.0)); - QuantizedNodeArray& getLeafNodeArray() { return m_quantizedLeafNodes; } - ///buildInternal is expert use only: assumes that setQuantizationValues and LeafNodeArray are initialized - void buildInternal(); - ///***************************************** expert/internal use only ************************* - - void reportAabbOverlappingNodex(btNodeOverlapCallback* nodeCallback,const btVector3& aabbMin,const btVector3& aabbMax) const; - void reportRayOverlappingNodex (btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget) const; - void reportBoxCastOverlappingNodex(btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin,const btVector3& aabbMax) const; - - SIMD_FORCE_INLINE void quantize(unsigned short* out, const btVector3& point,int isMax) const - { - - btAssert(m_useQuantization); - - btAssert(point.getX() <= m_bvhAabbMax.getX()); - btAssert(point.getY() <= m_bvhAabbMax.getY()); - btAssert(point.getZ() <= m_bvhAabbMax.getZ()); - - btAssert(point.getX() >= m_bvhAabbMin.getX()); - btAssert(point.getY() >= m_bvhAabbMin.getY()); - btAssert(point.getZ() >= m_bvhAabbMin.getZ()); - - btVector3 v = (point - m_bvhAabbMin) * m_bvhQuantization; - ///Make sure rounding is done in a way that unQuantize(quantizeWithClamp(...)) is conservative - ///end-points always set the first bit, so that they are sorted properly (so that neighbouring AABBs overlap properly) - ///@todo: double-check this - if (isMax) - { - out[0] = (unsigned short) (((unsigned short)(v.getX()+btScalar(1.)) | 1)); - out[1] = (unsigned short) (((unsigned short)(v.getY()+btScalar(1.)) | 1)); - out[2] = (unsigned short) (((unsigned short)(v.getZ()+btScalar(1.)) | 1)); - } else - { - out[0] = (unsigned short) (((unsigned short)(v.getX()) & 0xfffe)); - out[1] = (unsigned short) (((unsigned short)(v.getY()) & 0xfffe)); - out[2] = (unsigned short) (((unsigned short)(v.getZ()) & 0xfffe)); - } - - -#ifdef DEBUG_CHECK_DEQUANTIZATION - btVector3 newPoint = unQuantize(out); - if (isMax) - { - if (newPoint.getX() < point.getX()) - { - printf("unconservative X, diffX = %f, oldX=%f,newX=%f\n",newPoint.getX()-point.getX(), newPoint.getX(),point.getX()); - } - if (newPoint.getY() < point.getY()) - { - printf("unconservative Y, diffY = %f, oldY=%f,newY=%f\n",newPoint.getY()-point.getY(), newPoint.getY(),point.getY()); - } - if (newPoint.getZ() < point.getZ()) - { - - printf("unconservative Z, diffZ = %f, oldZ=%f,newZ=%f\n",newPoint.getZ()-point.getZ(), newPoint.getZ(),point.getZ()); - } - } else - { - if (newPoint.getX() > point.getX()) - { - printf("unconservative X, diffX = %f, oldX=%f,newX=%f\n",newPoint.getX()-point.getX(), newPoint.getX(),point.getX()); - } - if (newPoint.getY() > point.getY()) - { - printf("unconservative Y, diffY = %f, oldY=%f,newY=%f\n",newPoint.getY()-point.getY(), newPoint.getY(),point.getY()); - } - if (newPoint.getZ() > point.getZ()) - { - printf("unconservative Z, diffZ = %f, oldZ=%f,newZ=%f\n",newPoint.getZ()-point.getZ(), newPoint.getZ(),point.getZ()); - } - } -#endif //DEBUG_CHECK_DEQUANTIZATION - - } - - - SIMD_FORCE_INLINE void quantizeWithClamp(unsigned short* out, const btVector3& point2,int isMax) const - { - - btAssert(m_useQuantization); - - btVector3 clampedPoint(point2); - clampedPoint.setMax(m_bvhAabbMin); - clampedPoint.setMin(m_bvhAabbMax); - - quantize(out,clampedPoint,isMax); - - } - - SIMD_FORCE_INLINE btVector3 unQuantize(const unsigned short* vecIn) const - { - btVector3 vecOut; - vecOut.setValue( - (btScalar)(vecIn[0]) / (m_bvhQuantization.getX()), - (btScalar)(vecIn[1]) / (m_bvhQuantization.getY()), - (btScalar)(vecIn[2]) / (m_bvhQuantization.getZ())); - vecOut += m_bvhAabbMin; - return vecOut; - } - - ///setTraversalMode let's you choose between stackless, recursive or stackless cache friendly tree traversal. Note this is only implemented for quantized trees. - void setTraversalMode(btTraversalMode traversalMode) - { - m_traversalMode = traversalMode; - } - - - SIMD_FORCE_INLINE QuantizedNodeArray& getQuantizedNodeArray() - { - return m_quantizedContiguousNodes; - } - - - SIMD_FORCE_INLINE BvhSubtreeInfoArray& getSubtreeInfoArray() - { - return m_SubtreeHeaders; - } - -//////////////////////////////////////////////////////////////////// - - /////Calculate space needed to store BVH for serialization - unsigned calculateSerializeBufferSize() const; - - /// Data buffer MUST be 16 byte aligned - virtual bool serialize(void *o_alignedDataBuffer, unsigned i_dataBufferSize, bool i_swapEndian) const; - - ///deSerializeInPlace loads and initializes a BVH from a buffer in memory 'in place' - static btQuantizedBvh *deSerializeInPlace(void *i_alignedDataBuffer, unsigned int i_dataBufferSize, bool i_swapEndian); - - static unsigned int getAlignmentSerializationPadding(); -////////////////////////////////////////////////////////////////////// - - - virtual int calculateSerializeBufferSizeNew() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; - - virtual void deSerializeFloat(struct btQuantizedBvhFloatData& quantizedBvhFloatData); - - virtual void deSerializeDouble(struct btQuantizedBvhDoubleData& quantizedBvhDoubleData); - - -//////////////////////////////////////////////////////////////////// - - SIMD_FORCE_INLINE bool isQuantized() - { - return m_useQuantization; - } - -private: - // Special "copy" constructor that allows for in-place deserialization - // Prevents btVector3's default constructor from being called, but doesn't inialize much else - // ownsMemory should most likely be false if deserializing, and if you are not, don't call this (it also changes the function signature, which we need) - btQuantizedBvh(btQuantizedBvh &other, bool ownsMemory); - -} -; - - -struct btBvhSubtreeInfoData -{ - int m_rootNodeIndex; - int m_subtreeSize; - unsigned short m_quantizedAabbMin[3]; - unsigned short m_quantizedAabbMax[3]; -}; - -struct btOptimizedBvhNodeFloatData -{ - btVector3FloatData m_aabbMinOrg; - btVector3FloatData m_aabbMaxOrg; - int m_escapeIndex; - int m_subPart; - int m_triangleIndex; - char m_pad[4]; -}; - -struct btOptimizedBvhNodeDoubleData -{ - btVector3DoubleData m_aabbMinOrg; - btVector3DoubleData m_aabbMaxOrg; - int m_escapeIndex; - int m_subPart; - int m_triangleIndex; - char m_pad[4]; -}; - - -struct btQuantizedBvhNodeData -{ - unsigned short m_quantizedAabbMin[3]; - unsigned short m_quantizedAabbMax[3]; - int m_escapeIndexOrTriangleIndex; -}; - -struct btQuantizedBvhFloatData -{ - btVector3FloatData m_bvhAabbMin; - btVector3FloatData m_bvhAabbMax; - btVector3FloatData m_bvhQuantization; - int m_curNodeIndex; - int m_useQuantization; - int m_numContiguousLeafNodes; - int m_numQuantizedContiguousNodes; - btOptimizedBvhNodeFloatData *m_contiguousNodesPtr; - btQuantizedBvhNodeData *m_quantizedContiguousNodesPtr; - btBvhSubtreeInfoData *m_subTreeInfoPtr; - int m_traversalMode; - int m_numSubtreeHeaders; - -}; - -struct btQuantizedBvhDoubleData -{ - btVector3DoubleData m_bvhAabbMin; - btVector3DoubleData m_bvhAabbMax; - btVector3DoubleData m_bvhQuantization; - int m_curNodeIndex; - int m_useQuantization; - int m_numContiguousLeafNodes; - int m_numQuantizedContiguousNodes; - btOptimizedBvhNodeDoubleData *m_contiguousNodesPtr; - btQuantizedBvhNodeData *m_quantizedContiguousNodesPtr; - - int m_traversalMode; - int m_numSubtreeHeaders; - btBvhSubtreeInfoData *m_subTreeInfoPtr; -}; - - -SIMD_FORCE_INLINE int btQuantizedBvh::calculateSerializeBufferSizeNew() const -{ - return sizeof(btQuantizedBvhData); -} - - - -#endif //QUANTIZED_BVH_H diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp b/extern/bullet2/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp deleted file mode 100644 index 752fcd0fef2..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp +++ /dev/null @@ -1,349 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btSimpleBroadphase.h" -#include "BulletCollision/BroadphaseCollision/btDispatcher.h" -#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" - -#include "LinearMath/btVector3.h" -#include "LinearMath/btTransform.h" -#include "LinearMath/btMatrix3x3.h" -#include "LinearMath/btAabbUtil2.h" - -#include - -extern int gOverlappingPairs; - -void btSimpleBroadphase::validate() -{ - for (int i=0;i~btOverlappingPairCache(); - btAlignedFree(m_pairCache); - } -} - - -btBroadphaseProxy* btSimpleBroadphase::createProxy( const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr ,short int collisionFilterGroup,short int collisionFilterMask, btDispatcher* /*dispatcher*/,void* multiSapProxy) -{ - if (m_numHandles >= m_maxHandles) - { - btAssert(0); - return 0; //should never happen, but don't let the game crash ;-) - } - btAssert(aabbMin[0]<= aabbMax[0] && aabbMin[1]<= aabbMax[1] && aabbMin[2]<= aabbMax[2]); - - int newHandleIndex = allocHandle(); - btSimpleBroadphaseProxy* proxy = new (&m_pHandles[newHandleIndex])btSimpleBroadphaseProxy(aabbMin,aabbMax,shapeType,userPtr,collisionFilterGroup,collisionFilterMask,multiSapProxy); - - return proxy; -} - -class RemovingOverlapCallback : public btOverlapCallback -{ -protected: - virtual bool processOverlap(btBroadphasePair& pair) - { - (void)pair; - btAssert(0); - return false; - } -}; - -class RemovePairContainingProxy -{ - - btBroadphaseProxy* m_targetProxy; - public: - virtual ~RemovePairContainingProxy() - { - } -protected: - virtual bool processOverlap(btBroadphasePair& pair) - { - btSimpleBroadphaseProxy* proxy0 = static_cast(pair.m_pProxy0); - btSimpleBroadphaseProxy* proxy1 = static_cast(pair.m_pProxy1); - - return ((m_targetProxy == proxy0 || m_targetProxy == proxy1)); - }; -}; - -void btSimpleBroadphase::destroyProxy(btBroadphaseProxy* proxyOrg,btDispatcher* dispatcher) -{ - - btSimpleBroadphaseProxy* proxy0 = static_cast(proxyOrg); - freeHandle(proxy0); - - m_pairCache->removeOverlappingPairsContainingProxy(proxyOrg,dispatcher); - - //validate(); - -} - -void btSimpleBroadphase::getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const -{ - const btSimpleBroadphaseProxy* sbp = getSimpleProxyFromProxy(proxy); - aabbMin = sbp->m_aabbMin; - aabbMax = sbp->m_aabbMax; -} - -void btSimpleBroadphase::setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax, btDispatcher* /*dispatcher*/) -{ - btSimpleBroadphaseProxy* sbp = getSimpleProxyFromProxy(proxy); - sbp->m_aabbMin = aabbMin; - sbp->m_aabbMax = aabbMax; -} - -void btSimpleBroadphase::rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin,const btVector3& aabbMax) -{ - for (int i=0; i <= m_LastHandleIndex; i++) - { - btSimpleBroadphaseProxy* proxy = &m_pHandles[i]; - if(!proxy->m_clientObject) - { - continue; - } - rayCallback.process(proxy); - } -} - - -void btSimpleBroadphase::aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback) -{ - for (int i=0; i <= m_LastHandleIndex; i++) - { - btSimpleBroadphaseProxy* proxy = &m_pHandles[i]; - if(!proxy->m_clientObject) - { - continue; - } - if (TestAabbAgainstAabb2(aabbMin,aabbMax,proxy->m_aabbMin,proxy->m_aabbMax)) - { - callback.process(proxy); - } - } -} - - - - - - - -bool btSimpleBroadphase::aabbOverlap(btSimpleBroadphaseProxy* proxy0,btSimpleBroadphaseProxy* proxy1) -{ - return proxy0->m_aabbMin[0] <= proxy1->m_aabbMax[0] && proxy1->m_aabbMin[0] <= proxy0->m_aabbMax[0] && - proxy0->m_aabbMin[1] <= proxy1->m_aabbMax[1] && proxy1->m_aabbMin[1] <= proxy0->m_aabbMax[1] && - proxy0->m_aabbMin[2] <= proxy1->m_aabbMax[2] && proxy1->m_aabbMin[2] <= proxy0->m_aabbMax[2]; - -} - - - -//then remove non-overlapping ones -class CheckOverlapCallback : public btOverlapCallback -{ -public: - virtual bool processOverlap(btBroadphasePair& pair) - { - return (!btSimpleBroadphase::aabbOverlap(static_cast(pair.m_pProxy0),static_cast(pair.m_pProxy1))); - } -}; - -void btSimpleBroadphase::calculateOverlappingPairs(btDispatcher* dispatcher) -{ - //first check for new overlapping pairs - int i,j; - if (m_numHandles >= 0) - { - int new_largest_index = -1; - for (i=0; i <= m_LastHandleIndex; i++) - { - btSimpleBroadphaseProxy* proxy0 = &m_pHandles[i]; - if(!proxy0->m_clientObject) - { - continue; - } - new_largest_index = i; - for (j=i+1; j <= m_LastHandleIndex; j++) - { - btSimpleBroadphaseProxy* proxy1 = &m_pHandles[j]; - btAssert(proxy0 != proxy1); - if(!proxy1->m_clientObject) - { - continue; - } - - btSimpleBroadphaseProxy* p0 = getSimpleProxyFromProxy(proxy0); - btSimpleBroadphaseProxy* p1 = getSimpleProxyFromProxy(proxy1); - - if (aabbOverlap(p0,p1)) - { - if ( !m_pairCache->findPair(proxy0,proxy1)) - { - m_pairCache->addOverlappingPair(proxy0,proxy1); - } - } else - { - if (!m_pairCache->hasDeferredRemoval()) - { - if ( m_pairCache->findPair(proxy0,proxy1)) - { - m_pairCache->removeOverlappingPair(proxy0,proxy1,dispatcher); - } - } - } - } - } - - m_LastHandleIndex = new_largest_index; - - if (m_ownsPairCache && m_pairCache->hasDeferredRemoval()) - { - - btBroadphasePairArray& overlappingPairArray = m_pairCache->getOverlappingPairArray(); - - //perform a sort, to find duplicates and to sort 'invalid' pairs to the end - overlappingPairArray.quickSort(btBroadphasePairSortPredicate()); - - overlappingPairArray.resize(overlappingPairArray.size() - m_invalidPair); - m_invalidPair = 0; - - - btBroadphasePair previousPair; - previousPair.m_pProxy0 = 0; - previousPair.m_pProxy1 = 0; - previousPair.m_algorithm = 0; - - - for (i=0;iprocessOverlap(pair); - } else - { - needsRemoval = true; - } - } else - { - //remove duplicate - needsRemoval = true; - //should have no algorithm - btAssert(!pair.m_algorithm); - } - - if (needsRemoval) - { - m_pairCache->cleanOverlappingPair(pair,dispatcher); - - // m_overlappingPairArray.swap(i,m_overlappingPairArray.size()-1); - // m_overlappingPairArray.pop_back(); - pair.m_pProxy0 = 0; - pair.m_pProxy1 = 0; - m_invalidPair++; - gOverlappingPairs--; - } - - } - - ///if you don't like to skip the invalid pairs in the array, execute following code: -#define CLEAN_INVALID_PAIRS 1 -#ifdef CLEAN_INVALID_PAIRS - - //perform a sort, to sort 'invalid' pairs to the end - overlappingPairArray.quickSort(btBroadphasePairSortPredicate()); - - overlappingPairArray.resize(overlappingPairArray.size() - m_invalidPair); - m_invalidPair = 0; -#endif//CLEAN_INVALID_PAIRS - - } - } -} - - -bool btSimpleBroadphase::testAabbOverlap(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) -{ - btSimpleBroadphaseProxy* p0 = getSimpleProxyFromProxy(proxy0); - btSimpleBroadphaseProxy* p1 = getSimpleProxyFromProxy(proxy1); - return aabbOverlap(p0,p1); -} - -void btSimpleBroadphase::resetPool(btDispatcher* dispatcher) -{ - //not yet -} diff --git a/extern/bullet2/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h b/extern/bullet2/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h deleted file mode 100644 index 3e7c7ee3b62..00000000000 --- a/extern/bullet2/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h +++ /dev/null @@ -1,171 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef SIMPLE_BROADPHASE_H -#define SIMPLE_BROADPHASE_H - - -#include "btOverlappingPairCache.h" - - -struct btSimpleBroadphaseProxy : public btBroadphaseProxy -{ - int m_nextFree; - -// int m_handleId; - - - btSimpleBroadphaseProxy() {}; - - btSimpleBroadphaseProxy(const btVector3& minpt,const btVector3& maxpt,int shapeType,void* userPtr,short int collisionFilterGroup,short int collisionFilterMask,void* multiSapProxy) - :btBroadphaseProxy(minpt,maxpt,userPtr,collisionFilterGroup,collisionFilterMask,multiSapProxy) - { - (void)shapeType; - } - - - SIMD_FORCE_INLINE void SetNextFree(int next) {m_nextFree = next;} - SIMD_FORCE_INLINE int GetNextFree() const {return m_nextFree;} - - - - -}; - -///The SimpleBroadphase is just a unit-test for btAxisSweep3, bt32BitAxisSweep3, or btDbvtBroadphase, so use those classes instead. -///It is a brute force aabb culling broadphase based on O(n^2) aabb checks -class btSimpleBroadphase : public btBroadphaseInterface -{ - -protected: - - int m_numHandles; // number of active handles - int m_maxHandles; // max number of handles - int m_LastHandleIndex; - - btSimpleBroadphaseProxy* m_pHandles; // handles pool - - void* m_pHandlesRawPtr; - int m_firstFreeHandle; // free handles list - - int allocHandle() - { - btAssert(m_numHandles < m_maxHandles); - int freeHandle = m_firstFreeHandle; - m_firstFreeHandle = m_pHandles[freeHandle].GetNextFree(); - m_numHandles++; - if(freeHandle > m_LastHandleIndex) - { - m_LastHandleIndex = freeHandle; - } - return freeHandle; - } - - void freeHandle(btSimpleBroadphaseProxy* proxy) - { - int handle = int(proxy-m_pHandles); - btAssert(handle >= 0 && handle < m_maxHandles); - if(handle == m_LastHandleIndex) - { - m_LastHandleIndex--; - } - proxy->SetNextFree(m_firstFreeHandle); - m_firstFreeHandle = handle; - - proxy->m_clientObject = 0; - - m_numHandles--; - } - - btOverlappingPairCache* m_pairCache; - bool m_ownsPairCache; - - int m_invalidPair; - - - - inline btSimpleBroadphaseProxy* getSimpleProxyFromProxy(btBroadphaseProxy* proxy) - { - btSimpleBroadphaseProxy* proxy0 = static_cast(proxy); - return proxy0; - } - - inline const btSimpleBroadphaseProxy* getSimpleProxyFromProxy(btBroadphaseProxy* proxy) const - { - const btSimpleBroadphaseProxy* proxy0 = static_cast(proxy); - return proxy0; - } - - ///reset broadphase internal structures, to ensure determinism/reproducability - virtual void resetPool(btDispatcher* dispatcher); - - - void validate(); - -protected: - - - - -public: - btSimpleBroadphase(int maxProxies=16384,btOverlappingPairCache* overlappingPairCache=0); - virtual ~btSimpleBroadphase(); - - - static bool aabbOverlap(btSimpleBroadphaseProxy* proxy0,btSimpleBroadphaseProxy* proxy1); - - - virtual btBroadphaseProxy* createProxy( const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr ,short int collisionFilterGroup,short int collisionFilterMask, btDispatcher* dispatcher,void* multiSapProxy); - - virtual void calculateOverlappingPairs(btDispatcher* dispatcher); - - virtual void destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher); - virtual void setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax, btDispatcher* dispatcher); - virtual void getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const; - - virtual void rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin=btVector3(0,0,0),const btVector3& aabbMax=btVector3(0,0,0)); - virtual void aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback); - - btOverlappingPairCache* getOverlappingPairCache() - { - return m_pairCache; - } - const btOverlappingPairCache* getOverlappingPairCache() const - { - return m_pairCache; - } - - bool testAabbOverlap(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1); - - - ///getAabb returns the axis aligned bounding box in the 'global' coordinate frame - ///will add some transform later - virtual void getBroadphaseAabb(btVector3& aabbMin,btVector3& aabbMax) const - { - aabbMin.setValue(-BT_LARGE_FLOAT,-BT_LARGE_FLOAT,-BT_LARGE_FLOAT); - aabbMax.setValue(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT); - } - - virtual void printStats() - { -// printf("btSimpleBroadphase.h\n"); -// printf("numHandles = %d, maxHandles = %d\n",m_numHandles,m_maxHandles); - } -}; - - - -#endif //SIMPLE_BROADPHASE_H - diff --git a/extern/bullet2/BulletCollision/CMakeLists.txt b/extern/bullet2/BulletCollision/CMakeLists.txt deleted file mode 100644 index a1159dce466..00000000000 --- a/extern/bullet2/BulletCollision/CMakeLists.txt +++ /dev/null @@ -1,273 +0,0 @@ -INCLUDE_DIRECTORIES( ${BULLET_PHYSICS_SOURCE_DIR}/src ) - -SET(BulletCollision_SRCS - BroadphaseCollision/btAxisSweep3.cpp - BroadphaseCollision/btBroadphaseProxy.cpp - BroadphaseCollision/btCollisionAlgorithm.cpp - BroadphaseCollision/btDbvt.cpp - BroadphaseCollision/btDbvtBroadphase.cpp - BroadphaseCollision/btDispatcher.cpp - BroadphaseCollision/btMultiSapBroadphase.cpp - BroadphaseCollision/btOverlappingPairCache.cpp - BroadphaseCollision/btQuantizedBvh.cpp - BroadphaseCollision/btSimpleBroadphase.cpp - CollisionDispatch/btActivatingCollisionAlgorithm.cpp - CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp - CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp - CollisionDispatch/btBoxBoxDetector.cpp - CollisionDispatch/btCollisionDispatcher.cpp - CollisionDispatch/btCollisionObject.cpp - CollisionDispatch/btCollisionWorld.cpp - CollisionDispatch/btCompoundCollisionAlgorithm.cpp - CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp - CollisionDispatch/btConvexConvexAlgorithm.cpp - CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp - CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp - CollisionDispatch/btDefaultCollisionConfiguration.cpp - CollisionDispatch/btEmptyCollisionAlgorithm.cpp - CollisionDispatch/btGhostObject.cpp - CollisionDispatch/btInternalEdgeUtility.cpp - CollisionDispatch/btInternalEdgeUtility.h - CollisionDispatch/btManifoldResult.cpp - CollisionDispatch/btSimulationIslandManager.cpp - CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp - CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp - CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp - CollisionDispatch/btUnionFind.cpp - CollisionDispatch/SphereTriangleDetector.cpp - CollisionShapes/btBoxShape.cpp - CollisionShapes/btBox2dShape.cpp - CollisionShapes/btBvhTriangleMeshShape.cpp - CollisionShapes/btCapsuleShape.cpp - CollisionShapes/btCollisionShape.cpp - CollisionShapes/btCompoundShape.cpp - CollisionShapes/btConcaveShape.cpp - CollisionShapes/btConeShape.cpp - CollisionShapes/btConvexHullShape.cpp - CollisionShapes/btConvexInternalShape.cpp - CollisionShapes/btConvexPointCloudShape.cpp - CollisionShapes/btConvexShape.cpp - CollisionShapes/btConvex2dShape.cpp - CollisionShapes/btConvexTriangleMeshShape.cpp - CollisionShapes/btCylinderShape.cpp - CollisionShapes/btEmptyShape.cpp - CollisionShapes/btHeightfieldTerrainShape.cpp - CollisionShapes/btMinkowskiSumShape.cpp - CollisionShapes/btMultimaterialTriangleMeshShape.cpp - CollisionShapes/btMultiSphereShape.cpp - CollisionShapes/btOptimizedBvh.cpp - CollisionShapes/btPolyhedralConvexShape.cpp - CollisionShapes/btScaledBvhTriangleMeshShape.cpp - CollisionShapes/btShapeHull.cpp - CollisionShapes/btSphereShape.cpp - CollisionShapes/btStaticPlaneShape.cpp - CollisionShapes/btStridingMeshInterface.cpp - CollisionShapes/btTetrahedronShape.cpp - CollisionShapes/btTriangleBuffer.cpp - CollisionShapes/btTriangleCallback.cpp - CollisionShapes/btTriangleIndexVertexArray.cpp - CollisionShapes/btTriangleIndexVertexMaterialArray.cpp - CollisionShapes/btTriangleMesh.cpp - CollisionShapes/btTriangleMeshShape.cpp - CollisionShapes/btUniformScalingShape.cpp - Gimpact/btContactProcessing.cpp - Gimpact/btGenericPoolAllocator.cpp - Gimpact/btGImpactBvh.cpp - Gimpact/btGImpactCollisionAlgorithm.cpp - Gimpact/btGImpactQuantizedBvh.cpp - Gimpact/btGImpactShape.cpp - Gimpact/btTriangleShapeEx.cpp - Gimpact/gim_box_set.cpp - Gimpact/gim_contact.cpp - Gimpact/gim_memory.cpp - Gimpact/gim_tri_collision.cpp - NarrowPhaseCollision/btContinuousConvexCollision.cpp - NarrowPhaseCollision/btConvexCast.cpp - NarrowPhaseCollision/btGjkConvexCast.cpp - NarrowPhaseCollision/btGjkEpa2.cpp - NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp - NarrowPhaseCollision/btGjkPairDetector.cpp - NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp - NarrowPhaseCollision/btPersistentManifold.cpp - NarrowPhaseCollision/btRaycastCallback.cpp - NarrowPhaseCollision/btSubSimplexConvexCast.cpp - NarrowPhaseCollision/btVoronoiSimplexSolver.cpp -) - -SET(Root_HDRS - ../btBulletCollisionCommon.h -) -SET(BroadphaseCollision_HDRS - BroadphaseCollision/btAxisSweep3.h - BroadphaseCollision/btBroadphaseInterface.h - BroadphaseCollision/btBroadphaseProxy.h - BroadphaseCollision/btCollisionAlgorithm.h - BroadphaseCollision/btDbvt.h - BroadphaseCollision/btDbvtBroadphase.h - BroadphaseCollision/btDispatcher.h - BroadphaseCollision/btMultiSapBroadphase.h - BroadphaseCollision/btOverlappingPairCache.h - BroadphaseCollision/btOverlappingPairCallback.h - BroadphaseCollision/btQuantizedBvh.h - BroadphaseCollision/btSimpleBroadphase.h -) -SET(CollisionDispatch_HDRS - CollisionDispatch/btActivatingCollisionAlgorithm.h - CollisionDispatch/btBoxBoxCollisionAlgorithm.h - CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h - CollisionDispatch/btBoxBoxDetector.h - CollisionDispatch/btCollisionConfiguration.h - CollisionDispatch/btCollisionCreateFunc.h - CollisionDispatch/btCollisionDispatcher.h - CollisionDispatch/btCollisionObject.h - CollisionDispatch/btCollisionWorld.h - CollisionDispatch/btCompoundCollisionAlgorithm.h - CollisionDispatch/btConvexConcaveCollisionAlgorithm.h - CollisionDispatch/btConvexConvexAlgorithm.h - CollisionDispatch/btConvex2dConvex2dAlgorithm.h - CollisionDispatch/btConvexPlaneCollisionAlgorithm.h - CollisionDispatch/btDefaultCollisionConfiguration.h - CollisionDispatch/btEmptyCollisionAlgorithm.h - CollisionDispatch/btGhostObject.h - CollisionDispatch/btManifoldResult.h - CollisionDispatch/btSimulationIslandManager.h - CollisionDispatch/btSphereBoxCollisionAlgorithm.h - CollisionDispatch/btSphereSphereCollisionAlgorithm.h - CollisionDispatch/btSphereTriangleCollisionAlgorithm.h - CollisionDispatch/btUnionFind.h - CollisionDispatch/SphereTriangleDetector.h -) -SET(CollisionShapes_HDRS - CollisionShapes/btBoxShape.h - CollisionShapes/btBox2dShape.h - CollisionShapes/btBvhTriangleMeshShape.h - CollisionShapes/btCapsuleShape.h - CollisionShapes/btCollisionMargin.h - CollisionShapes/btCollisionShape.h - CollisionShapes/btCompoundShape.h - CollisionShapes/btConcaveShape.h - CollisionShapes/btConeShape.h - CollisionShapes/btConvexHullShape.h - CollisionShapes/btConvexInternalShape.h - CollisionShapes/btConvexPointCloudShape.h - CollisionShapes/btConvexShape.h - CollisionShapes/btConvex2dShape.h - CollisionShapes/btConvexTriangleMeshShape.h - CollisionShapes/btCylinderShape.h - CollisionShapes/btEmptyShape.h - CollisionShapes/btHeightfieldTerrainShape.h - CollisionShapes/btMaterial.h - CollisionShapes/btMinkowskiSumShape.h - CollisionShapes/btMultimaterialTriangleMeshShape.h - CollisionShapes/btMultiSphereShape.h - CollisionShapes/btOptimizedBvh.h - CollisionShapes/btPolyhedralConvexShape.h - CollisionShapes/btScaledBvhTriangleMeshShape.h - CollisionShapes/btShapeHull.h - CollisionShapes/btSphereShape.h - CollisionShapes/btStaticPlaneShape.h - CollisionShapes/btStridingMeshInterface.h - CollisionShapes/btTetrahedronShape.h - CollisionShapes/btTriangleBuffer.h - CollisionShapes/btTriangleCallback.h - CollisionShapes/btTriangleIndexVertexArray.h - CollisionShapes/btTriangleIndexVertexMaterialArray.h - CollisionShapes/btTriangleInfoMap.h - CollisionShapes/btTriangleMesh.h - CollisionShapes/btTriangleMeshShape.h - CollisionShapes/btTriangleShape.h - CollisionShapes/btUniformScalingShape.h -) -SET(Gimpact_HDRS - Gimpact/btBoxCollision.h - Gimpact/btClipPolygon.h - Gimpact/btContactProcessing.h - Gimpact/btGenericPoolAllocator.h - Gimpact/btGeometryOperations.h - Gimpact/btGImpactBvh.h - Gimpact/btGImpactCollisionAlgorithm.h - Gimpact/btGImpactMassUtil.h - Gimpact/btGImpactQuantizedBvh.h - Gimpact/btGImpactShape.h - Gimpact/btQuantization.h - Gimpact/btTriangleShapeEx.h - Gimpact/gim_array.h - Gimpact/gim_basic_geometry_operations.h - Gimpact/gim_bitset.h - Gimpact/gim_box_collision.h - Gimpact/gim_box_set.h - Gimpact/gim_clip_polygon.h - Gimpact/gim_contact.h - Gimpact/gim_geom_types.h - Gimpact/gim_geometry.h - Gimpact/gim_hash_table.h - Gimpact/gim_linear_math.h - Gimpact/gim_math.h - Gimpact/gim_memory.h - Gimpact/gim_radixsort.h - Gimpact/gim_tri_collision.h -) -SET(NarrowPhaseCollision_HDRS - NarrowPhaseCollision/btContinuousConvexCollision.h - NarrowPhaseCollision/btConvexCast.h - NarrowPhaseCollision/btConvexPenetrationDepthSolver.h - NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h - NarrowPhaseCollision/btGjkConvexCast.h - NarrowPhaseCollision/btGjkEpa2.h - NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h - NarrowPhaseCollision/btGjkPairDetector.h - NarrowPhaseCollision/btManifoldPoint.h - NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h - NarrowPhaseCollision/btPersistentManifold.h - NarrowPhaseCollision/btPointCollector.h - NarrowPhaseCollision/btRaycastCallback.h - NarrowPhaseCollision/btSimplexSolverInterface.h - NarrowPhaseCollision/btSubSimplexConvexCast.h - NarrowPhaseCollision/btVoronoiSimplexSolver.h -) - -SET(BulletCollision_HDRS - ${Root_HDRS} - ${BroadphaseCollision_HDRS} - ${CollisionDispatch_HDRS} - ${CollisionShapes_HDRS} - ${Gimpact_HDRS} - ${NarrowPhaseCollision_HDRS} -) - - -ADD_LIBRARY(BulletCollision ${BulletCollision_SRCS} ${BulletCollision_HDRS}) -SET_TARGET_PROPERTIES(BulletCollision PROPERTIES VERSION ${BULLET_VERSION}) -SET_TARGET_PROPERTIES(BulletCollision PROPERTIES SOVERSION ${BULLET_VERSION}) -IF (BUILD_SHARED_LIBS) - TARGET_LINK_LIBRARIES(BulletCollision LinearMath) -ENDIF (BUILD_SHARED_LIBS) - - -IF (INSTALL_LIBS) - IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) - #INSTALL of other files requires CMake 2.6 - IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS BulletCollision DESTINATION .) - ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS BulletCollision DESTINATION lib${LIB_SUFFIX}) - INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h") - INSTALL(FILES ../btBulletCollisionCommon.h DESTINATION include/BulletCollision) - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - SET_TARGET_PROPERTIES(BulletCollision PROPERTIES FRAMEWORK true) - - SET_TARGET_PROPERTIES(BulletCollision PROPERTIES PUBLIC_HEADER ${Root_HDRS}) - # Have to list out sub-directories manually: - SET_PROPERTY(SOURCE ${BroadphaseCollision_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/BroadphaseCollision) - SET_PROPERTY(SOURCE ${CollisionDispatch_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/CollisionDispatch) - SET_PROPERTY(SOURCE ${CollisionShapes_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/CollisionShapes) - SET_PROPERTY(SOURCE ${Gimpact_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/Gimpact) - SET_PROPERTY(SOURCE ${NarrowPhaseCollision_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/NarrowPhaseCollision) - - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) -ENDIF (INSTALL_LIBS) \ No newline at end of file diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp deleted file mode 100644 index f76755fbb6a..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp +++ /dev/null @@ -1,209 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "LinearMath/btScalar.h" -#include "SphereTriangleDetector.h" -#include "BulletCollision/CollisionShapes/btTriangleShape.h" -#include "BulletCollision/CollisionShapes/btSphereShape.h" - - -SphereTriangleDetector::SphereTriangleDetector(btSphereShape* sphere,btTriangleShape* triangle,btScalar contactBreakingThreshold) -:m_sphere(sphere), -m_triangle(triangle), -m_contactBreakingThreshold(contactBreakingThreshold) -{ - -} - -void SphereTriangleDetector::getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults) -{ - - (void)debugDraw; - const btTransform& transformA = input.m_transformA; - const btTransform& transformB = input.m_transformB; - - btVector3 point,normal; - btScalar timeOfImpact = btScalar(1.); - btScalar depth = btScalar(0.); -// output.m_distance = btScalar(BT_LARGE_FLOAT); - //move sphere into triangle space - btTransform sphereInTr = transformB.inverseTimes(transformA); - - if (collide(sphereInTr.getOrigin(),point,normal,depth,timeOfImpact,m_contactBreakingThreshold)) - { - if (swapResults) - { - btVector3 normalOnB = transformB.getBasis()*normal; - btVector3 normalOnA = -normalOnB; - btVector3 pointOnA = transformB*point+normalOnB*depth; - output.addContactPoint(normalOnA,pointOnA,depth); - } else - { - output.addContactPoint(transformB.getBasis()*normal,transformB*point,depth); - } - } - -} - -#define MAX_OVERLAP btScalar(0.) - - - -// See also geometrictools.com -// Basic idea: D = |p - (lo + t0*lv)| where t0 = lv . (p - lo) / lv . lv -btScalar SegmentSqrDistance(const btVector3& from, const btVector3& to,const btVector3 &p, btVector3 &nearest); - -btScalar SegmentSqrDistance(const btVector3& from, const btVector3& to,const btVector3 &p, btVector3 &nearest) { - btVector3 diff = p - from; - btVector3 v = to - from; - btScalar t = v.dot(diff); - - if (t > 0) { - btScalar dotVV = v.dot(v); - if (t < dotVV) { - t /= dotVV; - diff -= t*v; - } else { - t = 1; - diff -= v; - } - } else - t = 0; - - nearest = from + t*v; - return diff.dot(diff); -} - -bool SphereTriangleDetector::facecontains(const btVector3 &p,const btVector3* vertices,btVector3& normal) { - btVector3 lp(p); - btVector3 lnormal(normal); - - return pointInTriangle(vertices, lnormal, &lp); -} - -///combined discrete/continuous sphere-triangle -bool SphereTriangleDetector::collide(const btVector3& sphereCenter,btVector3 &point, btVector3& resultNormal, btScalar& depth, btScalar &timeOfImpact, btScalar contactBreakingThreshold) -{ - - const btVector3* vertices = &m_triangle->getVertexPtr(0); - const btVector3& c = sphereCenter; - btScalar r = m_sphere->getRadius(); - - btVector3 delta (0,0,0); - - btVector3 normal = (vertices[1]-vertices[0]).cross(vertices[2]-vertices[0]); - normal.normalize(); - btVector3 p1ToCentre = c - vertices[0]; - btScalar distanceFromPlane = p1ToCentre.dot(normal); - - if (distanceFromPlane < btScalar(0.)) - { - //triangle facing the other way - - distanceFromPlane *= btScalar(-1.); - normal *= btScalar(-1.); - } - - btScalar contactMargin = contactBreakingThreshold; - bool isInsideContactPlane = distanceFromPlane < r + contactMargin; - bool isInsideShellPlane = distanceFromPlane < r; - - btScalar deltaDotNormal = delta.dot(normal); - if (!isInsideShellPlane && deltaDotNormal >= btScalar(0.0)) - return false; - - // Check for contact / intersection - bool hasContact = false; - btVector3 contactPoint; - if (isInsideContactPlane) { - if (facecontains(c,vertices,normal)) { - // Inside the contact wedge - touches a point on the shell plane - hasContact = true; - contactPoint = c - normal*distanceFromPlane; - } else { - // Could be inside one of the contact capsules - btScalar contactCapsuleRadiusSqr = (r + contactMargin) * (r + contactMargin); - btVector3 nearestOnEdge; - for (int i = 0; i < m_triangle->getNumEdges(); i++) { - - btVector3 pa; - btVector3 pb; - - m_triangle->getEdge(i,pa,pb); - - btScalar distanceSqr = SegmentSqrDistance(pa,pb,c, nearestOnEdge); - if (distanceSqr < contactCapsuleRadiusSqr) { - // Yep, we're inside a capsule - hasContact = true; - contactPoint = nearestOnEdge; - } - - } - } - } - - if (hasContact) { - btVector3 contactToCentre = c - contactPoint; - btScalar distanceSqr = contactToCentre.length2(); - if (distanceSqr < (r - MAX_OVERLAP)*(r - MAX_OVERLAP)) { - btScalar distance = btSqrt(distanceSqr); - resultNormal = contactToCentre; - resultNormal.normalize(); - point = contactPoint; - depth = -(r-distance); - return true; - } - - if (delta.dot(contactToCentre) >= btScalar(0.0)) - return false; - - // Moving towards the contact point -> collision - point = contactPoint; - timeOfImpact = btScalar(0.0); - return true; - } - - return false; -} - - -bool SphereTriangleDetector::pointInTriangle(const btVector3 vertices[], const btVector3 &normal, btVector3 *p ) -{ - const btVector3* p1 = &vertices[0]; - const btVector3* p2 = &vertices[1]; - const btVector3* p3 = &vertices[2]; - - btVector3 edge1( *p2 - *p1 ); - btVector3 edge2( *p3 - *p2 ); - btVector3 edge3( *p1 - *p3 ); - - btVector3 p1_to_p( *p - *p1 ); - btVector3 p2_to_p( *p - *p2 ); - btVector3 p3_to_p( *p - *p3 ); - - btVector3 edge1_normal( edge1.cross(normal)); - btVector3 edge2_normal( edge2.cross(normal)); - btVector3 edge3_normal( edge3.cross(normal)); - - btScalar r1, r2, r3; - r1 = edge1_normal.dot( p1_to_p ); - r2 = edge2_normal.dot( p2_to_p ); - r3 = edge3_normal.dot( p3_to_p ); - if ( ( r1 > 0 && r2 > 0 && r3 > 0 ) || - ( r1 <= 0 && r2 <= 0 && r3 <= 0 ) ) - return true; - return false; - -} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/SphereTriangleDetector.h b/extern/bullet2/BulletCollision/CollisionDispatch/SphereTriangleDetector.h deleted file mode 100644 index f656e5c323a..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/SphereTriangleDetector.h +++ /dev/null @@ -1,51 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef SPHERE_TRIANGLE_DETECTOR_H -#define SPHERE_TRIANGLE_DETECTOR_H - -#include "BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h" - - - -class btSphereShape; -class btTriangleShape; - - - -/// sphere-triangle to match the btDiscreteCollisionDetectorInterface -struct SphereTriangleDetector : public btDiscreteCollisionDetectorInterface -{ - virtual void getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults=false); - - SphereTriangleDetector(btSphereShape* sphere,btTriangleShape* triangle, btScalar contactBreakingThreshold); - - virtual ~SphereTriangleDetector() {}; - - bool collide(const btVector3& sphereCenter,btVector3 &point, btVector3& resultNormal, btScalar& depth, btScalar &timeOfImpact, btScalar contactBreakingThreshold); - -private: - - - bool pointInTriangle(const btVector3 vertices[], const btVector3 &normal, btVector3 *p ); - bool facecontains(const btVector3 &p,const btVector3* vertices,btVector3& normal); - - btSphereShape* m_sphere; - btTriangleShape* m_triangle; - btScalar m_contactBreakingThreshold; - -}; -#endif //SPHERE_TRIANGLE_DETECTOR_H - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp deleted file mode 100644 index 7e5da6c5872..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2008 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btActivatingCollisionAlgorithm.h" -#include "btCollisionDispatcher.h" -#include "btCollisionObject.h" - -btActivatingCollisionAlgorithm::btActivatingCollisionAlgorithm (const btCollisionAlgorithmConstructionInfo& ci) -:btCollisionAlgorithm(ci) -//, -//m_colObj0(0), -//m_colObj1(0) -{ -} -btActivatingCollisionAlgorithm::btActivatingCollisionAlgorithm (const btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* colObj0,btCollisionObject* colObj1) -:btCollisionAlgorithm(ci) -//, -//m_colObj0(0), -//m_colObj1(0) -{ -// if (ci.m_dispatcher1->needsCollision(colObj0,colObj1)) -// { -// m_colObj0 = colObj0; -// m_colObj1 = colObj1; -// -// m_colObj0->activate(); -// m_colObj1->activate(); -// } -} - -btActivatingCollisionAlgorithm::~btActivatingCollisionAlgorithm() -{ -// m_colObj0->activate(); -// m_colObj1->activate(); -} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h deleted file mode 100644 index 25fe088942d..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2008 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef __BT_ACTIVATING_COLLISION_ALGORITHM_H -#define __BT_ACTIVATING_COLLISION_ALGORITHM_H - -#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" - -///This class is not enabled yet (work-in-progress) to more aggressively activate objects. -class btActivatingCollisionAlgorithm : public btCollisionAlgorithm -{ -// btCollisionObject* m_colObj0; -// btCollisionObject* m_colObj1; - -public: - - btActivatingCollisionAlgorithm (const btCollisionAlgorithmConstructionInfo& ci); - - btActivatingCollisionAlgorithm (const btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* colObj0,btCollisionObject* colObj1); - - virtual ~btActivatingCollisionAlgorithm(); - -}; -#endif //__BT_ACTIVATING_COLLISION_ALGORITHM_H diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp deleted file mode 100644 index 2182d0d7e49..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp +++ /dev/null @@ -1,435 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -* The b2CollidePolygons routines are Copyright (c) 2006-2007 Erin Catto http://www.gphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -///btBox2dBox2dCollisionAlgorithm, with modified b2CollidePolygons routines from the Box2D library. -///The modifications include: switching from b2Vec to btVector3, redefinition of b2Dot, b2Cross - -#include "btBox2dBox2dCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" -#include "BulletCollision/CollisionShapes/btBoxShape.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "BulletCollision/CollisionDispatch/btBoxBoxDetector.h" -#include "BulletCollision/CollisionShapes/btBox2dShape.h" - -#define USE_PERSISTENT_CONTACTS 1 - -btBox2dBox2dCollisionAlgorithm::btBox2dBox2dCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* obj0,btCollisionObject* obj1) -: btActivatingCollisionAlgorithm(ci,obj0,obj1), -m_ownManifold(false), -m_manifoldPtr(mf) -{ - if (!m_manifoldPtr && m_dispatcher->needsCollision(obj0,obj1)) - { - m_manifoldPtr = m_dispatcher->getNewManifold(obj0,obj1); - m_ownManifold = true; - } -} - -btBox2dBox2dCollisionAlgorithm::~btBox2dBox2dCollisionAlgorithm() -{ - - if (m_ownManifold) - { - if (m_manifoldPtr) - m_dispatcher->releaseManifold(m_manifoldPtr); - } - -} - - -void b2CollidePolygons(btManifoldResult* manifold, const btBox2dShape* polyA, const btTransform& xfA, const btBox2dShape* polyB, const btTransform& xfB); - -//#include -void btBox2dBox2dCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - if (!m_manifoldPtr) - return; - - btCollisionObject* col0 = body0; - btCollisionObject* col1 = body1; - btBox2dShape* box0 = (btBox2dShape*)col0->getCollisionShape(); - btBox2dShape* box1 = (btBox2dShape*)col1->getCollisionShape(); - - resultOut->setPersistentManifold(m_manifoldPtr); - - b2CollidePolygons(resultOut,box0,col0->getWorldTransform(),box1,col1->getWorldTransform()); - - // refreshContactPoints is only necessary when using persistent contact points. otherwise all points are newly added - if (m_ownManifold) - { - resultOut->refreshContactPoints(); - } - -} - -btScalar btBox2dBox2dCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* /*body0*/,btCollisionObject* /*body1*/,const btDispatcherInfo& /*dispatchInfo*/,btManifoldResult* /*resultOut*/) -{ - //not yet - return 1.f; -} - - -struct ClipVertex -{ - btVector3 v; - int id; - //b2ContactID id; - //b2ContactID id; -}; - -#define b2Dot(a,b) (a).dot(b) -#define b2Mul(a,b) (a)*(b) -#define b2MulT(a,b) (a).transpose()*(b) -#define b2Cross(a,b) (a).cross(b) -#define btCrossS(a,s) btVector3(s * a.getY(), -s * a.getX(),0.f) - -int b2_maxManifoldPoints =2; - -static int ClipSegmentToLine(ClipVertex vOut[2], ClipVertex vIn[2], - const btVector3& normal, btScalar offset) -{ - // Start with no output points - int numOut = 0; - - // Calculate the distance of end points to the line - btScalar distance0 = b2Dot(normal, vIn[0].v) - offset; - btScalar distance1 = b2Dot(normal, vIn[1].v) - offset; - - // If the points are behind the plane - if (distance0 <= 0.0f) vOut[numOut++] = vIn[0]; - if (distance1 <= 0.0f) vOut[numOut++] = vIn[1]; - - // If the points are on different sides of the plane - if (distance0 * distance1 < 0.0f) - { - // Find intersection point of edge and plane - btScalar interp = distance0 / (distance0 - distance1); - vOut[numOut].v = vIn[0].v + interp * (vIn[1].v - vIn[0].v); - if (distance0 > 0.0f) - { - vOut[numOut].id = vIn[0].id; - } - else - { - vOut[numOut].id = vIn[1].id; - } - ++numOut; - } - - return numOut; -} - -// Find the separation between poly1 and poly2 for a give edge normal on poly1. -static btScalar EdgeSeparation(const btBox2dShape* poly1, const btTransform& xf1, int edge1, - const btBox2dShape* poly2, const btTransform& xf2) -{ - const btVector3* vertices1 = poly1->getVertices(); - const btVector3* normals1 = poly1->getNormals(); - - int count2 = poly2->getVertexCount(); - const btVector3* vertices2 = poly2->getVertices(); - - btAssert(0 <= edge1 && edge1 < poly1->getVertexCount()); - - // Convert normal from poly1's frame into poly2's frame. - btVector3 normal1World = b2Mul(xf1.getBasis(), normals1[edge1]); - btVector3 normal1 = b2MulT(xf2.getBasis(), normal1World); - - // Find support vertex on poly2 for -normal. - int index = 0; - btScalar minDot = BT_LARGE_FLOAT; - - for (int i = 0; i < count2; ++i) - { - btScalar dot = b2Dot(vertices2[i], normal1); - if (dot < minDot) - { - minDot = dot; - index = i; - } - } - - btVector3 v1 = b2Mul(xf1, vertices1[edge1]); - btVector3 v2 = b2Mul(xf2, vertices2[index]); - btScalar separation = b2Dot(v2 - v1, normal1World); - return separation; -} - -// Find the max separation between poly1 and poly2 using edge normals from poly1. -static btScalar FindMaxSeparation(int* edgeIndex, - const btBox2dShape* poly1, const btTransform& xf1, - const btBox2dShape* poly2, const btTransform& xf2) -{ - int count1 = poly1->getVertexCount(); - const btVector3* normals1 = poly1->getNormals(); - - // Vector pointing from the centroid of poly1 to the centroid of poly2. - btVector3 d = b2Mul(xf2, poly2->getCentroid()) - b2Mul(xf1, poly1->getCentroid()); - btVector3 dLocal1 = b2MulT(xf1.getBasis(), d); - - // Find edge normal on poly1 that has the largest projection onto d. - int edge = 0; - btScalar maxDot = -BT_LARGE_FLOAT; - for (int i = 0; i < count1; ++i) - { - btScalar dot = b2Dot(normals1[i], dLocal1); - if (dot > maxDot) - { - maxDot = dot; - edge = i; - } - } - - // Get the separation for the edge normal. - btScalar s = EdgeSeparation(poly1, xf1, edge, poly2, xf2); - if (s > 0.0f) - { - return s; - } - - // Check the separation for the previous edge normal. - int prevEdge = edge - 1 >= 0 ? edge - 1 : count1 - 1; - btScalar sPrev = EdgeSeparation(poly1, xf1, prevEdge, poly2, xf2); - if (sPrev > 0.0f) - { - return sPrev; - } - - // Check the separation for the next edge normal. - int nextEdge = edge + 1 < count1 ? edge + 1 : 0; - btScalar sNext = EdgeSeparation(poly1, xf1, nextEdge, poly2, xf2); - if (sNext > 0.0f) - { - return sNext; - } - - // Find the best edge and the search direction. - int bestEdge; - btScalar bestSeparation; - int increment; - if (sPrev > s && sPrev > sNext) - { - increment = -1; - bestEdge = prevEdge; - bestSeparation = sPrev; - } - else if (sNext > s) - { - increment = 1; - bestEdge = nextEdge; - bestSeparation = sNext; - } - else - { - *edgeIndex = edge; - return s; - } - - // Perform a local search for the best edge normal. - for ( ; ; ) - { - if (increment == -1) - edge = bestEdge - 1 >= 0 ? bestEdge - 1 : count1 - 1; - else - edge = bestEdge + 1 < count1 ? bestEdge + 1 : 0; - - s = EdgeSeparation(poly1, xf1, edge, poly2, xf2); - if (s > 0.0f) - { - return s; - } - - if (s > bestSeparation) - { - bestEdge = edge; - bestSeparation = s; - } - else - { - break; - } - } - - *edgeIndex = bestEdge; - return bestSeparation; -} - -static void FindIncidentEdge(ClipVertex c[2], - const btBox2dShape* poly1, const btTransform& xf1, int edge1, - const btBox2dShape* poly2, const btTransform& xf2) -{ - const btVector3* normals1 = poly1->getNormals(); - - int count2 = poly2->getVertexCount(); - const btVector3* vertices2 = poly2->getVertices(); - const btVector3* normals2 = poly2->getNormals(); - - btAssert(0 <= edge1 && edge1 < poly1->getVertexCount()); - - // Get the normal of the reference edge in poly2's frame. - btVector3 normal1 = b2MulT(xf2.getBasis(), b2Mul(xf1.getBasis(), normals1[edge1])); - - // Find the incident edge on poly2. - int index = 0; - btScalar minDot = BT_LARGE_FLOAT; - for (int i = 0; i < count2; ++i) - { - btScalar dot = b2Dot(normal1, normals2[i]); - if (dot < minDot) - { - minDot = dot; - index = i; - } - } - - // Build the clip vertices for the incident edge. - int i1 = index; - int i2 = i1 + 1 < count2 ? i1 + 1 : 0; - - c[0].v = b2Mul(xf2, vertices2[i1]); -// c[0].id.features.referenceEdge = (unsigned char)edge1; -// c[0].id.features.incidentEdge = (unsigned char)i1; -// c[0].id.features.incidentVertex = 0; - - c[1].v = b2Mul(xf2, vertices2[i2]); -// c[1].id.features.referenceEdge = (unsigned char)edge1; -// c[1].id.features.incidentEdge = (unsigned char)i2; -// c[1].id.features.incidentVertex = 1; -} - -// Find edge normal of max separation on A - return if separating axis is found -// Find edge normal of max separation on B - return if separation axis is found -// Choose reference edge as min(minA, minB) -// Find incident edge -// Clip - -// The normal points from 1 to 2 -void b2CollidePolygons(btManifoldResult* manifold, - const btBox2dShape* polyA, const btTransform& xfA, - const btBox2dShape* polyB, const btTransform& xfB) -{ - - int edgeA = 0; - btScalar separationA = FindMaxSeparation(&edgeA, polyA, xfA, polyB, xfB); - if (separationA > 0.0f) - return; - - int edgeB = 0; - btScalar separationB = FindMaxSeparation(&edgeB, polyB, xfB, polyA, xfA); - if (separationB > 0.0f) - return; - - const btBox2dShape* poly1; // reference poly - const btBox2dShape* poly2; // incident poly - btTransform xf1, xf2; - int edge1; // reference edge - unsigned char flip; - const btScalar k_relativeTol = 0.98f; - const btScalar k_absoluteTol = 0.001f; - - // TODO_ERIN use "radius" of poly for absolute tolerance. - if (separationB > k_relativeTol * separationA + k_absoluteTol) - { - poly1 = polyB; - poly2 = polyA; - xf1 = xfB; - xf2 = xfA; - edge1 = edgeB; - flip = 1; - } - else - { - poly1 = polyA; - poly2 = polyB; - xf1 = xfA; - xf2 = xfB; - edge1 = edgeA; - flip = 0; - } - - ClipVertex incidentEdge[2]; - FindIncidentEdge(incidentEdge, poly1, xf1, edge1, poly2, xf2); - - int count1 = poly1->getVertexCount(); - const btVector3* vertices1 = poly1->getVertices(); - - btVector3 v11 = vertices1[edge1]; - btVector3 v12 = edge1 + 1 < count1 ? vertices1[edge1+1] : vertices1[0]; - - btVector3 dv = v12 - v11; - btVector3 sideNormal = b2Mul(xf1.getBasis(), v12 - v11); - sideNormal.normalize(); - btVector3 frontNormal = btCrossS(sideNormal, 1.0f); - - - v11 = b2Mul(xf1, v11); - v12 = b2Mul(xf1, v12); - - btScalar frontOffset = b2Dot(frontNormal, v11); - btScalar sideOffset1 = -b2Dot(sideNormal, v11); - btScalar sideOffset2 = b2Dot(sideNormal, v12); - - // Clip incident edge against extruded edge1 side edges. - ClipVertex clipPoints1[2]; - clipPoints1[0].v.setValue(0,0,0); - clipPoints1[1].v.setValue(0,0,0); - - ClipVertex clipPoints2[2]; - clipPoints2[0].v.setValue(0,0,0); - clipPoints2[1].v.setValue(0,0,0); - - - int np; - - // Clip to box side 1 - np = ClipSegmentToLine(clipPoints1, incidentEdge, -sideNormal, sideOffset1); - - if (np < 2) - return; - - // Clip to negative box side 1 - np = ClipSegmentToLine(clipPoints2, clipPoints1, sideNormal, sideOffset2); - - if (np < 2) - { - return; - } - - // Now clipPoints2 contains the clipped points. - btVector3 manifoldNormal = flip ? -frontNormal : frontNormal; - - int pointCount = 0; - for (int i = 0; i < b2_maxManifoldPoints; ++i) - { - btScalar separation = b2Dot(frontNormal, clipPoints2[i].v) - frontOffset; - - if (separation <= 0.0f) - { - - //b2ManifoldPoint* cp = manifold->points + pointCount; - //btScalar separation = separation; - //cp->localPoint1 = b2MulT(xfA, clipPoints2[i].v); - //cp->localPoint2 = b2MulT(xfB, clipPoints2[i].v); - - manifold->addContactPoint(-manifoldNormal,clipPoints2[i].v,separation); - -// cp->id = clipPoints2[i].id; -// cp->id.features.flip = flip; - ++pointCount; - } - } - -// manifold->pointCount = pointCount;} -} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h deleted file mode 100644 index 21342175238..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h +++ /dev/null @@ -1,66 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BOX_2D_BOX_2D__COLLISION_ALGORITHM_H -#define BOX_2D_BOX_2D__COLLISION_ALGORITHM_H - -#include "BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/BroadphaseCollision/btDispatcher.h" -#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" - -class btPersistentManifold; - -///box-box collision detection -class btBox2dBox2dCollisionAlgorithm : public btActivatingCollisionAlgorithm -{ - bool m_ownManifold; - btPersistentManifold* m_manifoldPtr; - -public: - btBox2dBox2dCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci) - : btActivatingCollisionAlgorithm(ci) {} - - virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - btBox2dBox2dCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1); - - virtual ~btBox2dBox2dCollisionAlgorithm(); - - virtual void getAllContactManifolds(btManifoldArray& manifoldArray) - { - if (m_manifoldPtr && m_ownManifold) - { - manifoldArray.push_back(m_manifoldPtr); - } - } - - - struct CreateFunc :public btCollisionAlgorithmCreateFunc - { - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) - { - int bbsize = sizeof(btBox2dBox2dCollisionAlgorithm); - void* ptr = ci.m_dispatcher1->allocateCollisionAlgorithm(bbsize); - return new(ptr) btBox2dBox2dCollisionAlgorithm(0,ci,body0,body1); - } - }; - -}; - -#endif //BOX_2D_BOX_2D__COLLISION_ALGORITHM_H - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp deleted file mode 100644 index 49628853493..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp +++ /dev/null @@ -1,85 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btBoxBoxCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" -#include "BulletCollision/CollisionShapes/btBoxShape.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "btBoxBoxDetector.h" - -#define USE_PERSISTENT_CONTACTS 1 - -btBoxBoxCollisionAlgorithm::btBoxBoxCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* obj0,btCollisionObject* obj1) -: btActivatingCollisionAlgorithm(ci,obj0,obj1), -m_ownManifold(false), -m_manifoldPtr(mf) -{ - if (!m_manifoldPtr && m_dispatcher->needsCollision(obj0,obj1)) - { - m_manifoldPtr = m_dispatcher->getNewManifold(obj0,obj1); - m_ownManifold = true; - } -} - -btBoxBoxCollisionAlgorithm::~btBoxBoxCollisionAlgorithm() -{ - if (m_ownManifold) - { - if (m_manifoldPtr) - m_dispatcher->releaseManifold(m_manifoldPtr); - } -} - -void btBoxBoxCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - if (!m_manifoldPtr) - return; - - btCollisionObject* col0 = body0; - btCollisionObject* col1 = body1; - btBoxShape* box0 = (btBoxShape*)col0->getCollisionShape(); - btBoxShape* box1 = (btBoxShape*)col1->getCollisionShape(); - - - - /// report a contact. internally this will be kept persistent, and contact reduction is done - resultOut->setPersistentManifold(m_manifoldPtr); -#ifndef USE_PERSISTENT_CONTACTS - m_manifoldPtr->clearManifold(); -#endif //USE_PERSISTENT_CONTACTS - - btDiscreteCollisionDetectorInterface::ClosestPointInput input; - input.m_maximumDistanceSquared = BT_LARGE_FLOAT; - input.m_transformA = body0->getWorldTransform(); - input.m_transformB = body1->getWorldTransform(); - - btBoxBoxDetector detector(box0,box1); - detector.getClosestPoints(input,*resultOut,dispatchInfo.m_debugDraw); - -#ifdef USE_PERSISTENT_CONTACTS - // refreshContactPoints is only necessary when using persistent contact points. otherwise all points are newly added - if (m_ownManifold) - { - resultOut->refreshContactPoints(); - } -#endif //USE_PERSISTENT_CONTACTS - -} - -btScalar btBoxBoxCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* /*body0*/,btCollisionObject* /*body1*/,const btDispatcherInfo& /*dispatchInfo*/,btManifoldResult* /*resultOut*/) -{ - //not yet - return 1.f; -} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h deleted file mode 100644 index e7d2cc25c22..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h +++ /dev/null @@ -1,66 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BOX_BOX__COLLISION_ALGORITHM_H -#define BOX_BOX__COLLISION_ALGORITHM_H - -#include "btActivatingCollisionAlgorithm.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/BroadphaseCollision/btDispatcher.h" -#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" - -class btPersistentManifold; - -///box-box collision detection -class btBoxBoxCollisionAlgorithm : public btActivatingCollisionAlgorithm -{ - bool m_ownManifold; - btPersistentManifold* m_manifoldPtr; - -public: - btBoxBoxCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci) - : btActivatingCollisionAlgorithm(ci) {} - - virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - btBoxBoxCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1); - - virtual ~btBoxBoxCollisionAlgorithm(); - - virtual void getAllContactManifolds(btManifoldArray& manifoldArray) - { - if (m_manifoldPtr && m_ownManifold) - { - manifoldArray.push_back(m_manifoldPtr); - } - } - - - struct CreateFunc :public btCollisionAlgorithmCreateFunc - { - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) - { - int bbsize = sizeof(btBoxBoxCollisionAlgorithm); - void* ptr = ci.m_dispatcher1->allocateCollisionAlgorithm(bbsize); - return new(ptr) btBoxBoxCollisionAlgorithm(0,ci,body0,body1); - } - }; - -}; - -#endif //BOX_BOX__COLLISION_ALGORITHM_H - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp deleted file mode 100644 index bcd42ca169b..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp +++ /dev/null @@ -1,704 +0,0 @@ -/* - * Box-Box collision detection re-distributed under the ZLib license with permission from Russell L. Smith - * Original version is from Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. - * All rights reserved. Email: russ@q12.org Web: www.q12.org - Bullet Continuous Collision Detection and Physics Library - Bullet is Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -///ODE box-box collision detection is adapted to work with Bullet - -#include "btBoxBoxDetector.h" -#include "BulletCollision/CollisionShapes/btBoxShape.h" - -#include -#include - -btBoxBoxDetector::btBoxBoxDetector(btBoxShape* box1,btBoxShape* box2) -: m_box1(box1), -m_box2(box2) -{ - -} - - -// given two boxes (p1,R1,side1) and (p2,R2,side2), collide them together and -// generate contact points. this returns 0 if there is no contact otherwise -// it returns the number of contacts generated. -// `normal' returns the contact normal. -// `depth' returns the maximum penetration depth along that normal. -// `return_code' returns a number indicating the type of contact that was -// detected: -// 1,2,3 = box 2 intersects with a face of box 1 -// 4,5,6 = box 1 intersects with a face of box 2 -// 7..15 = edge-edge contact -// `maxc' is the maximum number of contacts allowed to be generated, i.e. -// the size of the `contact' array. -// `contact' and `skip' are the contact array information provided to the -// collision functions. this function only fills in the position and depth -// fields. -struct dContactGeom; -#define dDOTpq(a,b,p,q) ((a)[0]*(b)[0] + (a)[p]*(b)[q] + (a)[2*(p)]*(b)[2*(q)]) -#define dInfinity FLT_MAX - - -/*PURE_INLINE btScalar dDOT (const btScalar *a, const btScalar *b) { return dDOTpq(a,b,1,1); } -PURE_INLINE btScalar dDOT13 (const btScalar *a, const btScalar *b) { return dDOTpq(a,b,1,3); } -PURE_INLINE btScalar dDOT31 (const btScalar *a, const btScalar *b) { return dDOTpq(a,b,3,1); } -PURE_INLINE btScalar dDOT33 (const btScalar *a, const btScalar *b) { return dDOTpq(a,b,3,3); } -*/ -static btScalar dDOT (const btScalar *a, const btScalar *b) { return dDOTpq(a,b,1,1); } -static btScalar dDOT44 (const btScalar *a, const btScalar *b) { return dDOTpq(a,b,4,4); } -static btScalar dDOT41 (const btScalar *a, const btScalar *b) { return dDOTpq(a,b,4,1); } -static btScalar dDOT14 (const btScalar *a, const btScalar *b) { return dDOTpq(a,b,1,4); } -#define dMULTIPLYOP1_331(A,op,B,C) \ -{\ - (A)[0] op dDOT41((B),(C)); \ - (A)[1] op dDOT41((B+1),(C)); \ - (A)[2] op dDOT41((B+2),(C)); \ -} - -#define dMULTIPLYOP0_331(A,op,B,C) \ -{ \ - (A)[0] op dDOT((B),(C)); \ - (A)[1] op dDOT((B+4),(C)); \ - (A)[2] op dDOT((B+8),(C)); \ -} - -#define dMULTIPLY1_331(A,B,C) dMULTIPLYOP1_331(A,=,B,C) -#define dMULTIPLY0_331(A,B,C) dMULTIPLYOP0_331(A,=,B,C) - -typedef btScalar dMatrix3[4*3]; - -void dLineClosestApproach (const btVector3& pa, const btVector3& ua, - const btVector3& pb, const btVector3& ub, - btScalar *alpha, btScalar *beta); -void dLineClosestApproach (const btVector3& pa, const btVector3& ua, - const btVector3& pb, const btVector3& ub, - btScalar *alpha, btScalar *beta) -{ - btVector3 p; - p[0] = pb[0] - pa[0]; - p[1] = pb[1] - pa[1]; - p[2] = pb[2] - pa[2]; - btScalar uaub = dDOT(ua,ub); - btScalar q1 = dDOT(ua,p); - btScalar q2 = -dDOT(ub,p); - btScalar d = 1-uaub*uaub; - if (d <= btScalar(0.0001f)) { - // @@@ this needs to be made more robust - *alpha = 0; - *beta = 0; - } - else { - d = 1.f/d; - *alpha = (q1 + uaub*q2)*d; - *beta = (uaub*q1 + q2)*d; - } -} - - - -// find all the intersection points between the 2D rectangle with vertices -// at (+/-h[0],+/-h[1]) and the 2D quadrilateral with vertices (p[0],p[1]), -// (p[2],p[3]),(p[4],p[5]),(p[6],p[7]). -// -// the intersection points are returned as x,y pairs in the 'ret' array. -// the number of intersection points is returned by the function (this will -// be in the range 0 to 8). - -static int intersectRectQuad2 (btScalar h[2], btScalar p[8], btScalar ret[16]) -{ - // q (and r) contain nq (and nr) coordinate points for the current (and - // chopped) polygons - int nq=4,nr=0; - btScalar buffer[16]; - btScalar *q = p; - btScalar *r = ret; - for (int dir=0; dir <= 1; dir++) { - // direction notation: xy[0] = x axis, xy[1] = y axis - for (int sign=-1; sign <= 1; sign += 2) { - // chop q along the line xy[dir] = sign*h[dir] - btScalar *pq = q; - btScalar *pr = r; - nr = 0; - for (int i=nq; i > 0; i--) { - // go through all points in q and all lines between adjacent points - if (sign*pq[dir] < h[dir]) { - // this point is inside the chopping line - pr[0] = pq[0]; - pr[1] = pq[1]; - pr += 2; - nr++; - if (nr & 8) { - q = r; - goto done; - } - } - btScalar *nextq = (i > 1) ? pq+2 : q; - if ((sign*pq[dir] < h[dir]) ^ (sign*nextq[dir] < h[dir])) { - // this line crosses the chopping line - pr[1-dir] = pq[1-dir] + (nextq[1-dir]-pq[1-dir]) / - (nextq[dir]-pq[dir]) * (sign*h[dir]-pq[dir]); - pr[dir] = sign*h[dir]; - pr += 2; - nr++; - if (nr & 8) { - q = r; - goto done; - } - } - pq += 2; - } - q = r; - r = (q==ret) ? buffer : ret; - nq = nr; - } - } - done: - if (q != ret) memcpy (ret,q,nr*2*sizeof(btScalar)); - return nr; -} - - -#define M__PI 3.14159265f - -// given n points in the plane (array p, of size 2*n), generate m points that -// best represent the whole set. the definition of 'best' here is not -// predetermined - the idea is to select points that give good box-box -// collision detection behavior. the chosen point indexes are returned in the -// array iret (of size m). 'i0' is always the first entry in the array. -// n must be in the range [1..8]. m must be in the range [1..n]. i0 must be -// in the range [0..n-1]. - -void cullPoints2 (int n, btScalar p[], int m, int i0, int iret[]); -void cullPoints2 (int n, btScalar p[], int m, int i0, int iret[]) -{ - // compute the centroid of the polygon in cx,cy - int i,j; - btScalar a,cx,cy,q; - if (n==1) { - cx = p[0]; - cy = p[1]; - } - else if (n==2) { - cx = btScalar(0.5)*(p[0] + p[2]); - cy = btScalar(0.5)*(p[1] + p[3]); - } - else { - a = 0; - cx = 0; - cy = 0; - for (i=0; i<(n-1); i++) { - q = p[i*2]*p[i*2+3] - p[i*2+2]*p[i*2+1]; - a += q; - cx += q*(p[i*2]+p[i*2+2]); - cy += q*(p[i*2+1]+p[i*2+3]); - } - q = p[n*2-2]*p[1] - p[0]*p[n*2-1]; - if (btFabs(a+q) > SIMD_EPSILON) - { - a = 1.f/(btScalar(3.0)*(a+q)); - } else - { - a=BT_LARGE_FLOAT; - } - cx = a*(cx + q*(p[n*2-2]+p[0])); - cy = a*(cy + q*(p[n*2-1]+p[1])); - } - - // compute the angle of each point w.r.t. the centroid - btScalar A[8]; - for (i=0; i M__PI) a -= 2*M__PI; - btScalar maxdiff=1e9,diff; - - *iret = i0; // iret is not allowed to keep this value, but it sometimes does, when diff=#QNAN0 - - for (i=0; i M__PI) diff = 2*M__PI - diff; - if (diff < maxdiff) { - maxdiff = diff; - *iret = i; - } - } - } -#if defined(DEBUG) || defined (_DEBUG) - btAssert (*iret != i0); // ensure iret got set -#endif - avail[*iret] = 0; - iret++; - } -} - - - -int dBoxBox2 (const btVector3& p1, const dMatrix3 R1, - const btVector3& side1, const btVector3& p2, - const dMatrix3 R2, const btVector3& side2, - btVector3& normal, btScalar *depth, int *return_code, - int maxc, dContactGeom * /*contact*/, int /*skip*/,btDiscreteCollisionDetectorInterface::Result& output); -int dBoxBox2 (const btVector3& p1, const dMatrix3 R1, - const btVector3& side1, const btVector3& p2, - const dMatrix3 R2, const btVector3& side2, - btVector3& normal, btScalar *depth, int *return_code, - int maxc, dContactGeom * /*contact*/, int /*skip*/,btDiscreteCollisionDetectorInterface::Result& output) -{ - const btScalar fudge_factor = btScalar(1.05); - btVector3 p,pp,normalC(0.f,0.f,0.f); - const btScalar *normalR = 0; - btScalar A[3],B[3],R11,R12,R13,R21,R22,R23,R31,R32,R33, - Q11,Q12,Q13,Q21,Q22,Q23,Q31,Q32,Q33,s,s2,l; - int i,j,invert_normal,code; - - // get vector from centers of box 1 to box 2, relative to box 1 - p = p2 - p1; - dMULTIPLY1_331 (pp,R1,p); // get pp = p relative to body 1 - - // get side lengths / 2 - A[0] = side1[0]*btScalar(0.5); - A[1] = side1[1]*btScalar(0.5); - A[2] = side1[2]*btScalar(0.5); - B[0] = side2[0]*btScalar(0.5); - B[1] = side2[1]*btScalar(0.5); - B[2] = side2[2]*btScalar(0.5); - - // Rij is R1'*R2, i.e. the relative rotation between R1 and R2 - R11 = dDOT44(R1+0,R2+0); R12 = dDOT44(R1+0,R2+1); R13 = dDOT44(R1+0,R2+2); - R21 = dDOT44(R1+1,R2+0); R22 = dDOT44(R1+1,R2+1); R23 = dDOT44(R1+1,R2+2); - R31 = dDOT44(R1+2,R2+0); R32 = dDOT44(R1+2,R2+1); R33 = dDOT44(R1+2,R2+2); - - Q11 = btFabs(R11); Q12 = btFabs(R12); Q13 = btFabs(R13); - Q21 = btFabs(R21); Q22 = btFabs(R22); Q23 = btFabs(R23); - Q31 = btFabs(R31); Q32 = btFabs(R32); Q33 = btFabs(R33); - - // for all 15 possible separating axes: - // * see if the axis separates the boxes. if so, return 0. - // * find the depth of the penetration along the separating axis (s2) - // * if this is the largest depth so far, record it. - // the normal vector will be set to the separating axis with the smallest - // depth. note: normalR is set to point to a column of R1 or R2 if that is - // the smallest depth normal so far. otherwise normalR is 0 and normalC is - // set to a vector relative to body 1. invert_normal is 1 if the sign of - // the normal should be flipped. - -#define TST(expr1,expr2,norm,cc) \ - s2 = btFabs(expr1) - (expr2); \ - if (s2 > 0) return 0; \ - if (s2 > s) { \ - s = s2; \ - normalR = norm; \ - invert_normal = ((expr1) < 0); \ - code = (cc); \ - } - - s = -dInfinity; - invert_normal = 0; - code = 0; - - // separating axis = u1,u2,u3 - TST (pp[0],(A[0] + B[0]*Q11 + B[1]*Q12 + B[2]*Q13),R1+0,1); - TST (pp[1],(A[1] + B[0]*Q21 + B[1]*Q22 + B[2]*Q23),R1+1,2); - TST (pp[2],(A[2] + B[0]*Q31 + B[1]*Q32 + B[2]*Q33),R1+2,3); - - // separating axis = v1,v2,v3 - TST (dDOT41(R2+0,p),(A[0]*Q11 + A[1]*Q21 + A[2]*Q31 + B[0]),R2+0,4); - TST (dDOT41(R2+1,p),(A[0]*Q12 + A[1]*Q22 + A[2]*Q32 + B[1]),R2+1,5); - TST (dDOT41(R2+2,p),(A[0]*Q13 + A[1]*Q23 + A[2]*Q33 + B[2]),R2+2,6); - - // note: cross product axes need to be scaled when s is computed. - // normal (n1,n2,n3) is relative to box 1. -#undef TST -#define TST(expr1,expr2,n1,n2,n3,cc) \ - s2 = btFabs(expr1) - (expr2); \ - if (s2 > SIMD_EPSILON) return 0; \ - l = btSqrt((n1)*(n1) + (n2)*(n2) + (n3)*(n3)); \ - if (l > SIMD_EPSILON) { \ - s2 /= l; \ - if (s2*fudge_factor > s) { \ - s = s2; \ - normalR = 0; \ - normalC[0] = (n1)/l; normalC[1] = (n2)/l; normalC[2] = (n3)/l; \ - invert_normal = ((expr1) < 0); \ - code = (cc); \ - } \ - } - - // separating axis = u1 x (v1,v2,v3) - TST(pp[2]*R21-pp[1]*R31,(A[1]*Q31+A[2]*Q21+B[1]*Q13+B[2]*Q12),0,-R31,R21,7); - TST(pp[2]*R22-pp[1]*R32,(A[1]*Q32+A[2]*Q22+B[0]*Q13+B[2]*Q11),0,-R32,R22,8); - TST(pp[2]*R23-pp[1]*R33,(A[1]*Q33+A[2]*Q23+B[0]*Q12+B[1]*Q11),0,-R33,R23,9); - - // separating axis = u2 x (v1,v2,v3) - TST(pp[0]*R31-pp[2]*R11,(A[0]*Q31+A[2]*Q11+B[1]*Q23+B[2]*Q22),R31,0,-R11,10); - TST(pp[0]*R32-pp[2]*R12,(A[0]*Q32+A[2]*Q12+B[0]*Q23+B[2]*Q21),R32,0,-R12,11); - TST(pp[0]*R33-pp[2]*R13,(A[0]*Q33+A[2]*Q13+B[0]*Q22+B[1]*Q21),R33,0,-R13,12); - - // separating axis = u3 x (v1,v2,v3) - TST(pp[1]*R11-pp[0]*R21,(A[0]*Q21+A[1]*Q11+B[1]*Q33+B[2]*Q32),-R21,R11,0,13); - TST(pp[1]*R12-pp[0]*R22,(A[0]*Q22+A[1]*Q12+B[0]*Q33+B[2]*Q31),-R22,R12,0,14); - TST(pp[1]*R13-pp[0]*R23,(A[0]*Q23+A[1]*Q13+B[0]*Q32+B[1]*Q31),-R23,R13,0,15); - -#undef TST - - if (!code) return 0; - - // if we get to this point, the boxes interpenetrate. compute the normal - // in global coordinates. - if (normalR) { - normal[0] = normalR[0]; - normal[1] = normalR[4]; - normal[2] = normalR[8]; - } - else { - dMULTIPLY0_331 (normal,R1,normalC); - } - if (invert_normal) { - normal[0] = -normal[0]; - normal[1] = -normal[1]; - normal[2] = -normal[2]; - } - *depth = -s; - - // compute contact point(s) - - if (code > 6) { - // an edge from box 1 touches an edge from box 2. - // find a point pa on the intersecting edge of box 1 - btVector3 pa; - btScalar sign; - for (i=0; i<3; i++) pa[i] = p1[i]; - for (j=0; j<3; j++) { - sign = (dDOT14(normal,R1+j) > 0) ? btScalar(1.0) : btScalar(-1.0); - for (i=0; i<3; i++) pa[i] += sign * A[j] * R1[i*4+j]; - } - - // find a point pb on the intersecting edge of box 2 - btVector3 pb; - for (i=0; i<3; i++) pb[i] = p2[i]; - for (j=0; j<3; j++) { - sign = (dDOT14(normal,R2+j) > 0) ? btScalar(-1.0) : btScalar(1.0); - for (i=0; i<3; i++) pb[i] += sign * B[j] * R2[i*4+j]; - } - - btScalar alpha,beta; - btVector3 ua,ub; - for (i=0; i<3; i++) ua[i] = R1[((code)-7)/3 + i*4]; - for (i=0; i<3; i++) ub[i] = R2[((code)-7)%3 + i*4]; - - dLineClosestApproach (pa,ua,pb,ub,&alpha,&beta); - for (i=0; i<3; i++) pa[i] += ua[i]*alpha; - for (i=0; i<3; i++) pb[i] += ub[i]*beta; - - { - - //contact[0].pos[i] = btScalar(0.5)*(pa[i]+pb[i]); - //contact[0].depth = *depth; - btVector3 pointInWorld; - -#ifdef USE_CENTER_POINT - for (i=0; i<3; i++) - pointInWorld[i] = (pa[i]+pb[i])*btScalar(0.5); - output.addContactPoint(-normal,pointInWorld,-*depth); -#else - output.addContactPoint(-normal,pb,-*depth); - -#endif // - *return_code = code; - } - return 1; - } - - // okay, we have a face-something intersection (because the separating - // axis is perpendicular to a face). define face 'a' to be the reference - // face (i.e. the normal vector is perpendicular to this) and face 'b' to be - // the incident face (the closest face of the other box). - - const btScalar *Ra,*Rb,*pa,*pb,*Sa,*Sb; - if (code <= 3) { - Ra = R1; - Rb = R2; - pa = p1; - pb = p2; - Sa = A; - Sb = B; - } - else { - Ra = R2; - Rb = R1; - pa = p2; - pb = p1; - Sa = B; - Sb = A; - } - - // nr = normal vector of reference face dotted with axes of incident box. - // anr = absolute values of nr. - btVector3 normal2,nr,anr; - if (code <= 3) { - normal2[0] = normal[0]; - normal2[1] = normal[1]; - normal2[2] = normal[2]; - } - else { - normal2[0] = -normal[0]; - normal2[1] = -normal[1]; - normal2[2] = -normal[2]; - } - dMULTIPLY1_331 (nr,Rb,normal2); - anr[0] = btFabs (nr[0]); - anr[1] = btFabs (nr[1]); - anr[2] = btFabs (nr[2]); - - // find the largest compontent of anr: this corresponds to the normal - // for the indident face. the other axis numbers of the indicent face - // are stored in a1,a2. - int lanr,a1,a2; - if (anr[1] > anr[0]) { - if (anr[1] > anr[2]) { - a1 = 0; - lanr = 1; - a2 = 2; - } - else { - a1 = 0; - a2 = 1; - lanr = 2; - } - } - else { - if (anr[0] > anr[2]) { - lanr = 0; - a1 = 1; - a2 = 2; - } - else { - a1 = 0; - a2 = 1; - lanr = 2; - } - } - - // compute center point of incident face, in reference-face coordinates - btVector3 center; - if (nr[lanr] < 0) { - for (i=0; i<3; i++) center[i] = pb[i] - pa[i] + Sb[lanr] * Rb[i*4+lanr]; - } - else { - for (i=0; i<3; i++) center[i] = pb[i] - pa[i] - Sb[lanr] * Rb[i*4+lanr]; - } - - // find the normal and non-normal axis numbers of the reference box - int codeN,code1,code2; - if (code <= 3) codeN = code-1; else codeN = code-4; - if (codeN==0) { - code1 = 1; - code2 = 2; - } - else if (codeN==1) { - code1 = 0; - code2 = 2; - } - else { - code1 = 0; - code2 = 1; - } - - // find the four corners of the incident face, in reference-face coordinates - btScalar quad[8]; // 2D coordinate of incident face (x,y pairs) - btScalar c1,c2,m11,m12,m21,m22; - c1 = dDOT14 (center,Ra+code1); - c2 = dDOT14 (center,Ra+code2); - // optimize this? - we have already computed this data above, but it is not - // stored in an easy-to-index format. for now it's quicker just to recompute - // the four dot products. - m11 = dDOT44 (Ra+code1,Rb+a1); - m12 = dDOT44 (Ra+code1,Rb+a2); - m21 = dDOT44 (Ra+code2,Rb+a1); - m22 = dDOT44 (Ra+code2,Rb+a2); - { - btScalar k1 = m11*Sb[a1]; - btScalar k2 = m21*Sb[a1]; - btScalar k3 = m12*Sb[a2]; - btScalar k4 = m22*Sb[a2]; - quad[0] = c1 - k1 - k3; - quad[1] = c2 - k2 - k4; - quad[2] = c1 - k1 + k3; - quad[3] = c2 - k2 + k4; - quad[4] = c1 + k1 + k3; - quad[5] = c2 + k2 + k4; - quad[6] = c1 + k1 - k3; - quad[7] = c2 + k2 - k4; - } - - // find the size of the reference face - btScalar rect[2]; - rect[0] = Sa[code1]; - rect[1] = Sa[code2]; - - // intersect the incident and reference faces - btScalar ret[16]; - int n = intersectRectQuad2 (rect,quad,ret); - if (n < 1) return 0; // this should never happen - - // convert the intersection points into reference-face coordinates, - // and compute the contact position and depth for each point. only keep - // those points that have a positive (penetrating) depth. delete points in - // the 'ret' array as necessary so that 'point' and 'ret' correspond. - btScalar point[3*8]; // penetrating contact points - btScalar dep[8]; // depths for those points - btScalar det1 = 1.f/(m11*m22 - m12*m21); - m11 *= det1; - m12 *= det1; - m21 *= det1; - m22 *= det1; - int cnum = 0; // number of penetrating contact points found - for (j=0; j < n; j++) { - btScalar k1 = m22*(ret[j*2]-c1) - m12*(ret[j*2+1]-c2); - btScalar k2 = -m21*(ret[j*2]-c1) + m11*(ret[j*2+1]-c2); - for (i=0; i<3; i++) point[cnum*3+i] = - center[i] + k1*Rb[i*4+a1] + k2*Rb[i*4+a2]; - dep[cnum] = Sa[codeN] - dDOT(normal2,point+cnum*3); - if (dep[cnum] >= 0) { - ret[cnum*2] = ret[j*2]; - ret[cnum*2+1] = ret[j*2+1]; - cnum++; - } - } - if (cnum < 1) return 0; // this should never happen - - // we can't generate more contacts than we actually have - if (maxc > cnum) maxc = cnum; - if (maxc < 1) maxc = 1; - - if (cnum <= maxc) { - - if (code<4) - { - // we have less contacts than we need, so we use them all - for (j=0; j < cnum; j++) - { - btVector3 pointInWorld; - for (i=0; i<3; i++) - pointInWorld[i] = point[j*3+i] + pa[i]; - output.addContactPoint(-normal,pointInWorld,-dep[j]); - - } - } else - { - // we have less contacts than we need, so we use them all - for (j=0; j < cnum; j++) - { - btVector3 pointInWorld; - for (i=0; i<3; i++) - pointInWorld[i] = point[j*3+i] + pa[i]-normal[i]*dep[j]; - //pointInWorld[i] = point[j*3+i] + pa[i]; - output.addContactPoint(-normal,pointInWorld,-dep[j]); - } - } - } - else { - // we have more contacts than are wanted, some of them must be culled. - // find the deepest point, it is always the first contact. - int i1 = 0; - btScalar maxdepth = dep[0]; - for (i=1; i maxdepth) { - maxdepth = dep[i]; - i1 = i; - } - } - - int iret[8]; - cullPoints2 (cnum,ret,maxc,i1,iret); - - for (j=0; j < maxc; j++) { -// dContactGeom *con = CONTACT(contact,skip*j); - // for (i=0; i<3; i++) con->pos[i] = point[iret[j]*3+i] + pa[i]; - // con->depth = dep[iret[j]]; - - btVector3 posInWorld; - for (i=0; i<3; i++) - posInWorld[i] = point[iret[j]*3+i] + pa[i]; - if (code<4) - { - output.addContactPoint(-normal,posInWorld,-dep[iret[j]]); - } else - { - output.addContactPoint(-normal,posInWorld-normal*dep[iret[j]],-dep[iret[j]]); - } - } - cnum = maxc; - } - - *return_code = code; - return cnum; -} - -void btBoxBoxDetector::getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* /*debugDraw*/,bool /*swapResults*/) -{ - - const btTransform& transformA = input.m_transformA; - const btTransform& transformB = input.m_transformB; - - int skip = 0; - dContactGeom *contact = 0; - - dMatrix3 R1; - dMatrix3 R2; - - for (int j=0;j<3;j++) - { - R1[0+4*j] = transformA.getBasis()[j].x(); - R2[0+4*j] = transformB.getBasis()[j].x(); - - R1[1+4*j] = transformA.getBasis()[j].y(); - R2[1+4*j] = transformB.getBasis()[j].y(); - - - R1[2+4*j] = transformA.getBasis()[j].z(); - R2[2+4*j] = transformB.getBasis()[j].z(); - - } - - - - btVector3 normal; - btScalar depth; - int return_code; - int maxc = 4; - - - dBoxBox2 (transformA.getOrigin(), - R1, - 2.f*m_box1->getHalfExtentsWithMargin(), - transformB.getOrigin(), - R2, - 2.f*m_box2->getHalfExtentsWithMargin(), - normal, &depth, &return_code, - maxc, contact, skip, - output - ); - -} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxDetector.h b/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxDetector.h deleted file mode 100644 index 605294d47bd..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btBoxBoxDetector.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Box-Box collision detection re-distributed under the ZLib license with permission from Russell L. Smith - * Original version is from Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. - * All rights reserved. Email: russ@q12.org Web: www.q12.org - -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ -#ifndef BOX_BOX_DETECTOR_H -#define BOX_BOX_DETECTOR_H - - -class btBoxShape; -#include "BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h" - - -/// btBoxBoxDetector wraps the ODE box-box collision detector -/// re-distributed under the Zlib license with permission from Russell L. Smith -struct btBoxBoxDetector : public btDiscreteCollisionDetectorInterface -{ - btBoxShape* m_box1; - btBoxShape* m_box2; - -public: - - btBoxBoxDetector(btBoxShape* box1,btBoxShape* box2); - - virtual ~btBoxBoxDetector() {}; - - virtual void getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults=false); - -}; - -#endif //BT_BOX_BOX_DETECTOR_H diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionConfiguration.h b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionConfiguration.h deleted file mode 100644 index 1db51a36d03..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionConfiguration.h +++ /dev/null @@ -1,47 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BT_COLLISION_CONFIGURATION -#define BT_COLLISION_CONFIGURATION -struct btCollisionAlgorithmCreateFunc; - -class btStackAlloc; -class btPoolAllocator; - -///btCollisionConfiguration allows to configure Bullet collision detection -///stack allocator size, default collision algorithms and persistent manifold pool size -///@todo: describe the meaning -class btCollisionConfiguration -{ - -public: - - virtual ~btCollisionConfiguration() - { - } - - ///memory pools - virtual btPoolAllocator* getPersistentManifoldPool() = 0; - - virtual btPoolAllocator* getCollisionAlgorithmPool() = 0; - - virtual btStackAlloc* getStackAllocator() = 0; - - virtual btCollisionAlgorithmCreateFunc* getCollisionAlgorithmCreateFunc(int proxyType0,int proxyType1) =0; - -}; - -#endif //BT_COLLISION_CONFIGURATION - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h deleted file mode 100644 index a6da5f61a3c..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h +++ /dev/null @@ -1,45 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef COLLISION_CREATE_FUNC -#define COLLISION_CREATE_FUNC - -#include "LinearMath/btAlignedObjectArray.h" -class btCollisionAlgorithm; -class btCollisionObject; - -struct btCollisionAlgorithmConstructionInfo; - -///Used by the btCollisionDispatcher to register and create instances for btCollisionAlgorithm -struct btCollisionAlgorithmCreateFunc -{ - bool m_swapped; - - btCollisionAlgorithmCreateFunc() - :m_swapped(false) - { - } - virtual ~btCollisionAlgorithmCreateFunc(){}; - - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& , btCollisionObject* body0,btCollisionObject* body1) - { - - (void)body0; - (void)body1; - return 0; - } -}; -#endif //COLLISION_CREATE_FUNC - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp deleted file mode 100644 index 9fed44a19f7..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp +++ /dev/null @@ -1,303 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#include "btCollisionDispatcher.h" - - -#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" - -#include "BulletCollision/CollisionShapes/btCollisionShape.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h" -#include "LinearMath/btPoolAllocator.h" -#include "BulletCollision/CollisionDispatch/btCollisionConfiguration.h" - -int gNumManifold = 0; - -#ifdef BT_DEBUG -#include -#endif - - -btCollisionDispatcher::btCollisionDispatcher (btCollisionConfiguration* collisionConfiguration): -m_dispatcherFlags(btCollisionDispatcher::CD_USE_RELATIVE_CONTACT_BREAKING_THRESHOLD), - m_collisionConfiguration(collisionConfiguration) -{ - int i; - - setNearCallback(defaultNearCallback); - - m_collisionAlgorithmPoolAllocator = collisionConfiguration->getCollisionAlgorithmPool(); - - m_persistentManifoldPoolAllocator = collisionConfiguration->getPersistentManifoldPool(); - - for (i=0;igetCollisionAlgorithmCreateFunc(i,j); - btAssert(m_doubleDispatch[i][j]); - } - } - - -} - - -void btCollisionDispatcher::registerCollisionCreateFunc(int proxyType0, int proxyType1, btCollisionAlgorithmCreateFunc *createFunc) -{ - m_doubleDispatch[proxyType0][proxyType1] = createFunc; -} - -btCollisionDispatcher::~btCollisionDispatcher() -{ -} - -btPersistentManifold* btCollisionDispatcher::getNewManifold(void* b0,void* b1) -{ - gNumManifold++; - - //btAssert(gNumManifold < 65535); - - - btCollisionObject* body0 = (btCollisionObject*)b0; - btCollisionObject* body1 = (btCollisionObject*)b1; - - //optional relative contact breaking threshold, turned on by default (use setDispatcherFlags to switch off feature for improved performance) - - btScalar contactBreakingThreshold = (m_dispatcherFlags & btCollisionDispatcher::CD_USE_RELATIVE_CONTACT_BREAKING_THRESHOLD) ? - btMin(body0->getCollisionShape()->getContactBreakingThreshold(gContactBreakingThreshold) , body1->getCollisionShape()->getContactBreakingThreshold(gContactBreakingThreshold)) - : gContactBreakingThreshold ; - - btScalar contactProcessingThreshold = btMin(body0->getContactProcessingThreshold(),body1->getContactProcessingThreshold()); - - void* mem = 0; - - if (m_persistentManifoldPoolAllocator->getFreeCount()) - { - mem = m_persistentManifoldPoolAllocator->allocate(sizeof(btPersistentManifold)); - } else - { - mem = btAlignedAlloc(sizeof(btPersistentManifold),16); - - } - btPersistentManifold* manifold = new(mem) btPersistentManifold (body0,body1,0,contactBreakingThreshold,contactProcessingThreshold); - manifold->m_index1a = m_manifoldsPtr.size(); - m_manifoldsPtr.push_back(manifold); - - return manifold; -} - -void btCollisionDispatcher::clearManifold(btPersistentManifold* manifold) -{ - manifold->clearManifold(); -} - - -void btCollisionDispatcher::releaseManifold(btPersistentManifold* manifold) -{ - - gNumManifold--; - - //printf("releaseManifold: gNumManifold %d\n",gNumManifold); - clearManifold(manifold); - - int findIndex = manifold->m_index1a; - btAssert(findIndex < m_manifoldsPtr.size()); - m_manifoldsPtr.swap(findIndex,m_manifoldsPtr.size()-1); - m_manifoldsPtr[findIndex]->m_index1a = findIndex; - m_manifoldsPtr.pop_back(); - - manifold->~btPersistentManifold(); - if (m_persistentManifoldPoolAllocator->validPtr(manifold)) - { - m_persistentManifoldPoolAllocator->freeMemory(manifold); - } else - { - btAlignedFree(manifold); - } - -} - - - -btCollisionAlgorithm* btCollisionDispatcher::findAlgorithm(btCollisionObject* body0,btCollisionObject* body1,btPersistentManifold* sharedManifold) -{ - - btCollisionAlgorithmConstructionInfo ci; - - ci.m_dispatcher1 = this; - ci.m_manifold = sharedManifold; - btCollisionAlgorithm* algo = m_doubleDispatch[body0->getCollisionShape()->getShapeType()][body1->getCollisionShape()->getShapeType()]->CreateCollisionAlgorithm(ci,body0,body1); - - return algo; -} - - - - -bool btCollisionDispatcher::needsResponse(btCollisionObject* body0,btCollisionObject* body1) -{ - //here you can do filtering - bool hasResponse = - (body0->hasContactResponse() && body1->hasContactResponse()); - //no response between two static/kinematic bodies: - hasResponse = hasResponse && - ((!body0->isStaticOrKinematicObject()) ||(! body1->isStaticOrKinematicObject())); - return hasResponse; -} - -bool btCollisionDispatcher::needsCollision(btCollisionObject* body0,btCollisionObject* body1) -{ - btAssert(body0); - btAssert(body1); - - bool needsCollision = true; - -#ifdef BT_DEBUG - if (!(m_dispatcherFlags & btCollisionDispatcher::CD_STATIC_STATIC_REPORTED)) - { - //broadphase filtering already deals with this - if ((body0->isStaticObject() || body0->isKinematicObject()) && - (body1->isStaticObject() || body1->isKinematicObject())) - { - m_dispatcherFlags |= btCollisionDispatcher::CD_STATIC_STATIC_REPORTED; - printf("warning btCollisionDispatcher::needsCollision: static-static collision!\n"); - } - } -#endif //BT_DEBUG - - if ((!body0->isActive()) && (!body1->isActive())) - needsCollision = false; - else if (!body0->checkCollideWith(body1)) - needsCollision = false; - - return needsCollision ; - -} - - - -///interface for iterating all overlapping collision pairs, no matter how those pairs are stored (array, set, map etc) -///this is useful for the collision dispatcher. -class btCollisionPairCallback : public btOverlapCallback -{ - const btDispatcherInfo& m_dispatchInfo; - btCollisionDispatcher* m_dispatcher; - -public: - - btCollisionPairCallback(const btDispatcherInfo& dispatchInfo,btCollisionDispatcher* dispatcher) - :m_dispatchInfo(dispatchInfo), - m_dispatcher(dispatcher) - { - } - - /*btCollisionPairCallback& operator=(btCollisionPairCallback& other) - { - m_dispatchInfo = other.m_dispatchInfo; - m_dispatcher = other.m_dispatcher; - return *this; - } - */ - - - virtual ~btCollisionPairCallback() {} - - - virtual bool processOverlap(btBroadphasePair& pair) - { - (*m_dispatcher->getNearCallback())(pair,*m_dispatcher,m_dispatchInfo); - - return false; - } -}; - - - -void btCollisionDispatcher::dispatchAllCollisionPairs(btOverlappingPairCache* pairCache,const btDispatcherInfo& dispatchInfo,btDispatcher* dispatcher) -{ - //m_blockedForChanges = true; - - btCollisionPairCallback collisionCallback(dispatchInfo,this); - - pairCache->processAllOverlappingPairs(&collisionCallback,dispatcher); - - //m_blockedForChanges = false; - -} - - - - -//by default, Bullet will use this near callback -void btCollisionDispatcher::defaultNearCallback(btBroadphasePair& collisionPair, btCollisionDispatcher& dispatcher, const btDispatcherInfo& dispatchInfo) -{ - btCollisionObject* colObj0 = (btCollisionObject*)collisionPair.m_pProxy0->m_clientObject; - btCollisionObject* colObj1 = (btCollisionObject*)collisionPair.m_pProxy1->m_clientObject; - - if (dispatcher.needsCollision(colObj0,colObj1)) - { - //dispatcher will keep algorithms persistent in the collision pair - if (!collisionPair.m_algorithm) - { - collisionPair.m_algorithm = dispatcher.findAlgorithm(colObj0,colObj1); - } - - if (collisionPair.m_algorithm) - { - btManifoldResult contactPointResult(colObj0,colObj1); - - if (dispatchInfo.m_dispatchFunc == btDispatcherInfo::DISPATCH_DISCRETE) - { - //discrete collision detection query - collisionPair.m_algorithm->processCollision(colObj0,colObj1,dispatchInfo,&contactPointResult); - } else - { - //continuous collision detection query, time of impact (toi) - btScalar toi = collisionPair.m_algorithm->calculateTimeOfImpact(colObj0,colObj1,dispatchInfo,&contactPointResult); - if (dispatchInfo.m_timeOfImpact > toi) - dispatchInfo.m_timeOfImpact = toi; - - } - } - } - -} - - -void* btCollisionDispatcher::allocateCollisionAlgorithm(int size) -{ - if (m_collisionAlgorithmPoolAllocator->getFreeCount()) - { - return m_collisionAlgorithmPoolAllocator->allocate(size); - } - - //warn user for overflow? - return btAlignedAlloc(static_cast(size), 16); -} - -void btCollisionDispatcher::freeCollisionAlgorithm(void* ptr) -{ - if (m_collisionAlgorithmPoolAllocator->validPtr(ptr)) - { - m_collisionAlgorithmPoolAllocator->freeMemory(ptr); - } else - { - btAlignedFree(ptr); - } -} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionDispatcher.h b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionDispatcher.h deleted file mode 100644 index 09ed1d67e1c..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionDispatcher.h +++ /dev/null @@ -1,159 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef COLLISION__DISPATCHER_H -#define COLLISION__DISPATCHER_H - -#include "BulletCollision/BroadphaseCollision/btDispatcher.h" -#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" - -#include "BulletCollision/CollisionDispatch/btManifoldResult.h" - -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "LinearMath/btAlignedObjectArray.h" - -class btIDebugDraw; -class btOverlappingPairCache; -class btPoolAllocator; -class btCollisionConfiguration; - -#include "btCollisionCreateFunc.h" - -#define USE_DISPATCH_REGISTRY_ARRAY 1 - -class btCollisionDispatcher; -///user can override this nearcallback for collision filtering and more finegrained control over collision detection -typedef void (*btNearCallback)(btBroadphasePair& collisionPair, btCollisionDispatcher& dispatcher, const btDispatcherInfo& dispatchInfo); - - -///btCollisionDispatcher supports algorithms that handle ConvexConvex and ConvexConcave collision pairs. -///Time of Impact, Closest Points and Penetration Depth. -class btCollisionDispatcher : public btDispatcher -{ - int m_dispatcherFlags; - - btAlignedObjectArray m_manifoldsPtr; - - btManifoldResult m_defaultManifoldResult; - - btNearCallback m_nearCallback; - - btPoolAllocator* m_collisionAlgorithmPoolAllocator; - - btPoolAllocator* m_persistentManifoldPoolAllocator; - - btCollisionAlgorithmCreateFunc* m_doubleDispatch[MAX_BROADPHASE_COLLISION_TYPES][MAX_BROADPHASE_COLLISION_TYPES]; - - btCollisionConfiguration* m_collisionConfiguration; - - -public: - - enum DispatcherFlags - { - CD_STATIC_STATIC_REPORTED = 1, - CD_USE_RELATIVE_CONTACT_BREAKING_THRESHOLD = 2 - }; - - int getDispatherFlags() const - { - return m_dispatcherFlags; - } - - void setDispatcherFlags(int flags) - { - (void) flags; - m_dispatcherFlags = 0; - } - - ///registerCollisionCreateFunc allows registration of custom/alternative collision create functions - void registerCollisionCreateFunc(int proxyType0,int proxyType1, btCollisionAlgorithmCreateFunc* createFunc); - - int getNumManifolds() const - { - return int( m_manifoldsPtr.size()); - } - - btPersistentManifold** getInternalManifoldPointer() - { - return &m_manifoldsPtr[0]; - } - - btPersistentManifold* getManifoldByIndexInternal(int index) - { - return m_manifoldsPtr[index]; - } - - const btPersistentManifold* getManifoldByIndexInternal(int index) const - { - return m_manifoldsPtr[index]; - } - - btCollisionDispatcher (btCollisionConfiguration* collisionConfiguration); - - virtual ~btCollisionDispatcher(); - - virtual btPersistentManifold* getNewManifold(void* b0,void* b1); - - virtual void releaseManifold(btPersistentManifold* manifold); - - - virtual void clearManifold(btPersistentManifold* manifold); - - - btCollisionAlgorithm* findAlgorithm(btCollisionObject* body0,btCollisionObject* body1,btPersistentManifold* sharedManifold = 0); - - virtual bool needsCollision(btCollisionObject* body0,btCollisionObject* body1); - - virtual bool needsResponse(btCollisionObject* body0,btCollisionObject* body1); - - virtual void dispatchAllCollisionPairs(btOverlappingPairCache* pairCache,const btDispatcherInfo& dispatchInfo,btDispatcher* dispatcher) ; - - void setNearCallback(btNearCallback nearCallback) - { - m_nearCallback = nearCallback; - } - - btNearCallback getNearCallback() const - { - return m_nearCallback; - } - - //by default, Bullet will use this near callback - static void defaultNearCallback(btBroadphasePair& collisionPair, btCollisionDispatcher& dispatcher, const btDispatcherInfo& dispatchInfo); - - virtual void* allocateCollisionAlgorithm(int size); - - virtual void freeCollisionAlgorithm(void* ptr); - - btCollisionConfiguration* getCollisionConfiguration() - { - return m_collisionConfiguration; - } - - const btCollisionConfiguration* getCollisionConfiguration() const - { - return m_collisionConfiguration; - } - - void setCollisionConfiguration(btCollisionConfiguration* config) - { - m_collisionConfiguration = config; - } - -}; - -#endif //COLLISION__DISPATCHER_H - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionObject.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionObject.cpp deleted file mode 100644 index ffb2d1edc75..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionObject.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btCollisionObject.h" -#include "LinearMath/btSerializer.h" - -btCollisionObject::btCollisionObject() - : m_anisotropicFriction(1.f,1.f,1.f), - m_hasAnisotropicFriction(false), - m_contactProcessingThreshold(BT_LARGE_FLOAT), - m_broadphaseHandle(0), - m_collisionShape(0), - m_rootCollisionShape(0), - m_collisionFlags(btCollisionObject::CF_STATIC_OBJECT), - m_islandTag1(-1), - m_companionId(-1), - m_activationState1(1), - m_deactivationTime(btScalar(0.)), - m_friction(btScalar(0.5)), - m_restitution(btScalar(0.)), - m_internalType(CO_COLLISION_OBJECT), - m_userObjectPointer(0), - m_hitFraction(btScalar(1.)), - m_ccdSweptSphereRadius(btScalar(0.)), - m_ccdMotionThreshold(btScalar(0.)), - m_checkCollideWith(false) -{ - m_worldTransform.setIdentity(); -} - -btCollisionObject::~btCollisionObject() -{ -} - -void btCollisionObject::setActivationState(int newState) -{ - if ( (m_activationState1 != DISABLE_DEACTIVATION) && (m_activationState1 != DISABLE_SIMULATION)) - m_activationState1 = newState; -} - -void btCollisionObject::forceActivationState(int newState) -{ - m_activationState1 = newState; -} - -void btCollisionObject::activate(bool forceActivation) -{ - if (forceActivation || !(m_collisionFlags & (CF_STATIC_OBJECT|CF_KINEMATIC_OBJECT))) - { - setActivationState(ACTIVE_TAG); - m_deactivationTime = btScalar(0.); - } -} - -const char* btCollisionObject::serialize(void* dataBuffer, btSerializer* serializer) const -{ - - btCollisionObjectData* dataOut = (btCollisionObjectData*)dataBuffer; - - m_worldTransform.serialize(dataOut->m_worldTransform); - m_interpolationWorldTransform.serialize(dataOut->m_interpolationWorldTransform); - m_interpolationLinearVelocity.serialize(dataOut->m_interpolationLinearVelocity); - m_interpolationAngularVelocity.serialize(dataOut->m_interpolationAngularVelocity); - m_anisotropicFriction.serialize(dataOut->m_anisotropicFriction); - dataOut->m_hasAnisotropicFriction = m_hasAnisotropicFriction; - dataOut->m_contactProcessingThreshold = m_contactProcessingThreshold; - dataOut->m_broadphaseHandle = 0; - dataOut->m_collisionShape = serializer->getUniquePointer(m_collisionShape); - dataOut->m_rootCollisionShape = 0;//@todo - dataOut->m_collisionFlags = m_collisionFlags; - dataOut->m_islandTag1 = m_islandTag1; - dataOut->m_companionId = m_companionId; - dataOut->m_activationState1 = m_activationState1; - dataOut->m_activationState1 = m_activationState1; - dataOut->m_deactivationTime = m_deactivationTime; - dataOut->m_friction = m_friction; - dataOut->m_restitution = m_restitution; - dataOut->m_internalType = m_internalType; - - char* name = (char*) serializer->findNameForPointer(this); - dataOut->m_name = (char*)serializer->getUniquePointer(name); - if (dataOut->m_name) - { - serializer->serializeName(name); - } - dataOut->m_hitFraction = m_hitFraction; - dataOut->m_ccdSweptSphereRadius = m_ccdSweptSphereRadius; - dataOut->m_ccdMotionThreshold = m_ccdMotionThreshold; - dataOut->m_ccdMotionThreshold = m_ccdMotionThreshold; - dataOut->m_checkCollideWith = m_checkCollideWith; - - return btCollisionObjectDataName; -} - - -void btCollisionObject::serializeSingleObject(class btSerializer* serializer) const -{ - int len = calculateSerializeBufferSize(); - btChunk* chunk = serializer->allocate(len,1); - const char* structType = serialize(chunk->m_oldPtr, serializer); - serializer->finalizeChunk(chunk,structType,BT_COLLISIONOBJECT_CODE,(void*)this); -} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionObject.h b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionObject.h deleted file mode 100644 index 549b404dc07..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionObject.h +++ /dev/null @@ -1,508 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef COLLISION_OBJECT_H -#define COLLISION_OBJECT_H - -#include "LinearMath/btTransform.h" - -//island management, m_activationState1 -#define ACTIVE_TAG 1 -#define ISLAND_SLEEPING 2 -#define WANTS_DEACTIVATION 3 -#define DISABLE_DEACTIVATION 4 -#define DISABLE_SIMULATION 5 - -struct btBroadphaseProxy; -class btCollisionShape; -struct btCollisionShapeData; -#include "LinearMath/btMotionState.h" -#include "LinearMath/btAlignedAllocator.h" -#include "LinearMath/btAlignedObjectArray.h" - -typedef btAlignedObjectArray btCollisionObjectArray; - -#ifdef BT_USE_DOUBLE_PRECISION -#define btCollisionObjectData btCollisionObjectDoubleData -#define btCollisionObjectDataName "btCollisionObjectDoubleData" -#else -#define btCollisionObjectData btCollisionObjectFloatData -#define btCollisionObjectDataName "btCollisionObjectFloatData" -#endif - - -/// btCollisionObject can be used to manage collision detection objects. -/// btCollisionObject maintains all information that is needed for a collision detection: Shape, Transform and AABB proxy. -/// They can be added to the btCollisionWorld. -ATTRIBUTE_ALIGNED16(class) btCollisionObject -{ - -protected: - - btTransform m_worldTransform; - - ///m_interpolationWorldTransform is used for CCD and interpolation - ///it can be either previous or future (predicted) transform - btTransform m_interpolationWorldTransform; - //those two are experimental: just added for bullet time effect, so you can still apply impulses (directly modifying velocities) - //without destroying the continuous interpolated motion (which uses this interpolation velocities) - btVector3 m_interpolationLinearVelocity; - btVector3 m_interpolationAngularVelocity; - - btVector3 m_anisotropicFriction; - int m_hasAnisotropicFriction; - btScalar m_contactProcessingThreshold; - - btBroadphaseProxy* m_broadphaseHandle; - btCollisionShape* m_collisionShape; - - ///m_rootCollisionShape is temporarily used to store the original collision shape - ///The m_collisionShape might be temporarily replaced by a child collision shape during collision detection purposes - ///If it is NULL, the m_collisionShape is not temporarily replaced. - btCollisionShape* m_rootCollisionShape; - - int m_collisionFlags; - - int m_islandTag1; - int m_companionId; - - int m_activationState1; - btScalar m_deactivationTime; - - btScalar m_friction; - btScalar m_restitution; - - ///m_internalType is reserved to distinguish Bullet's btCollisionObject, btRigidBody, btSoftBody, btGhostObject etc. - ///do not assign your own m_internalType unless you write a new dynamics object class. - int m_internalType; - - ///users can point to their objects, m_userPointer is not used by Bullet, see setUserPointer/getUserPointer - void* m_userObjectPointer; - - ///time of impact calculation - btScalar m_hitFraction; - - ///Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm:: - btScalar m_ccdSweptSphereRadius; - - /// Don't do continuous collision detection if the motion (in one step) is less then m_ccdMotionThreshold - btScalar m_ccdMotionThreshold; - - /// If some object should have elaborate collision filtering by sub-classes - int m_checkCollideWith; - - virtual bool checkCollideWithOverride(btCollisionObject* /* co */) - { - return true; - } - -public: - - BT_DECLARE_ALIGNED_ALLOCATOR(); - - enum CollisionFlags - { - CF_STATIC_OBJECT= 1, - CF_KINEMATIC_OBJECT= 2, - CF_NO_CONTACT_RESPONSE = 4, - CF_CUSTOM_MATERIAL_CALLBACK = 8,//this allows per-triangle material (friction/restitution) - CF_CHARACTER_OBJECT = 16, - CF_DISABLE_VISUALIZE_OBJECT = 32, //disable debug drawing - CF_DISABLE_SPU_COLLISION_PROCESSING = 64//disable parallel/SPU processing - }; - - enum CollisionObjectTypes - { - CO_COLLISION_OBJECT =1, - CO_RIGID_BODY, - ///CO_GHOST_OBJECT keeps track of all objects overlapping its AABB and that pass its collision filter - ///It is useful for collision sensors, explosion objects, character controller etc. - CO_GHOST_OBJECT, - CO_SOFT_BODY, - CO_HF_FLUID - }; - - SIMD_FORCE_INLINE bool mergesSimulationIslands() const - { - ///static objects, kinematic and object without contact response don't merge islands - return ((m_collisionFlags & (CF_STATIC_OBJECT | CF_KINEMATIC_OBJECT | CF_NO_CONTACT_RESPONSE) )==0); - } - - const btVector3& getAnisotropicFriction() const - { - return m_anisotropicFriction; - } - void setAnisotropicFriction(const btVector3& anisotropicFriction) - { - m_anisotropicFriction = anisotropicFriction; - m_hasAnisotropicFriction = (anisotropicFriction[0]!=1.f) || (anisotropicFriction[1]!=1.f) || (anisotropicFriction[2]!=1.f); - } - bool hasAnisotropicFriction() const - { - return m_hasAnisotropicFriction!=0; - } - - ///the constraint solver can discard solving contacts, if the distance is above this threshold. 0 by default. - ///Note that using contacts with positive distance can improve stability. It increases, however, the chance of colliding with degerate contacts, such as 'interior' triangle edges - void setContactProcessingThreshold( btScalar contactProcessingThreshold) - { - m_contactProcessingThreshold = contactProcessingThreshold; - } - btScalar getContactProcessingThreshold() const - { - return m_contactProcessingThreshold; - } - - SIMD_FORCE_INLINE bool isStaticObject() const { - return (m_collisionFlags & CF_STATIC_OBJECT) != 0; - } - - SIMD_FORCE_INLINE bool isKinematicObject() const - { - return (m_collisionFlags & CF_KINEMATIC_OBJECT) != 0; - } - - SIMD_FORCE_INLINE bool isStaticOrKinematicObject() const - { - return (m_collisionFlags & (CF_KINEMATIC_OBJECT | CF_STATIC_OBJECT)) != 0 ; - } - - SIMD_FORCE_INLINE bool hasContactResponse() const { - return (m_collisionFlags & CF_NO_CONTACT_RESPONSE)==0; - } - - - btCollisionObject(); - - virtual ~btCollisionObject(); - - virtual void setCollisionShape(btCollisionShape* collisionShape) - { - m_collisionShape = collisionShape; - m_rootCollisionShape = collisionShape; - } - - SIMD_FORCE_INLINE const btCollisionShape* getCollisionShape() const - { - return m_collisionShape; - } - - SIMD_FORCE_INLINE btCollisionShape* getCollisionShape() - { - return m_collisionShape; - } - - SIMD_FORCE_INLINE const btCollisionShape* getRootCollisionShape() const - { - return m_rootCollisionShape; - } - - SIMD_FORCE_INLINE btCollisionShape* getRootCollisionShape() - { - return m_rootCollisionShape; - } - - ///Avoid using this internal API call - ///internalSetTemporaryCollisionShape is used to temporary replace the actual collision shape by a child collision shape. - void internalSetTemporaryCollisionShape(btCollisionShape* collisionShape) - { - m_collisionShape = collisionShape; - } - - SIMD_FORCE_INLINE int getActivationState() const { return m_activationState1;} - - void setActivationState(int newState); - - void setDeactivationTime(btScalar time) - { - m_deactivationTime = time; - } - btScalar getDeactivationTime() const - { - return m_deactivationTime; - } - - void forceActivationState(int newState); - - void activate(bool forceActivation = false); - - SIMD_FORCE_INLINE bool isActive() const - { - return ((getActivationState() != ISLAND_SLEEPING) && (getActivationState() != DISABLE_SIMULATION)); - } - - void setRestitution(btScalar rest) - { - m_restitution = rest; - } - btScalar getRestitution() const - { - return m_restitution; - } - void setFriction(btScalar frict) - { - m_friction = frict; - } - btScalar getFriction() const - { - return m_friction; - } - - ///reserved for Bullet internal usage - int getInternalType() const - { - return m_internalType; - } - - btTransform& getWorldTransform() - { - return m_worldTransform; - } - - const btTransform& getWorldTransform() const - { - return m_worldTransform; - } - - void setWorldTransform(const btTransform& worldTrans) - { - m_worldTransform = worldTrans; - } - - - SIMD_FORCE_INLINE btBroadphaseProxy* getBroadphaseHandle() - { - return m_broadphaseHandle; - } - - SIMD_FORCE_INLINE const btBroadphaseProxy* getBroadphaseHandle() const - { - return m_broadphaseHandle; - } - - void setBroadphaseHandle(btBroadphaseProxy* handle) - { - m_broadphaseHandle = handle; - } - - - const btTransform& getInterpolationWorldTransform() const - { - return m_interpolationWorldTransform; - } - - btTransform& getInterpolationWorldTransform() - { - return m_interpolationWorldTransform; - } - - void setInterpolationWorldTransform(const btTransform& trans) - { - m_interpolationWorldTransform = trans; - } - - void setInterpolationLinearVelocity(const btVector3& linvel) - { - m_interpolationLinearVelocity = linvel; - } - - void setInterpolationAngularVelocity(const btVector3& angvel) - { - m_interpolationAngularVelocity = angvel; - } - - const btVector3& getInterpolationLinearVelocity() const - { - return m_interpolationLinearVelocity; - } - - const btVector3& getInterpolationAngularVelocity() const - { - return m_interpolationAngularVelocity; - } - - SIMD_FORCE_INLINE int getIslandTag() const - { - return m_islandTag1; - } - - void setIslandTag(int tag) - { - m_islandTag1 = tag; - } - - SIMD_FORCE_INLINE int getCompanionId() const - { - return m_companionId; - } - - void setCompanionId(int id) - { - m_companionId = id; - } - - SIMD_FORCE_INLINE btScalar getHitFraction() const - { - return m_hitFraction; - } - - void setHitFraction(btScalar hitFraction) - { - m_hitFraction = hitFraction; - } - - - SIMD_FORCE_INLINE int getCollisionFlags() const - { - return m_collisionFlags; - } - - void setCollisionFlags(int flags) - { - m_collisionFlags = flags; - } - - ///Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm:: - btScalar getCcdSweptSphereRadius() const - { - return m_ccdSweptSphereRadius; - } - - ///Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm:: - void setCcdSweptSphereRadius(btScalar radius) - { - m_ccdSweptSphereRadius = radius; - } - - btScalar getCcdMotionThreshold() const - { - return m_ccdMotionThreshold; - } - - btScalar getCcdSquareMotionThreshold() const - { - return m_ccdMotionThreshold*m_ccdMotionThreshold; - } - - - - /// Don't do continuous collision detection if the motion (in one step) is less then m_ccdMotionThreshold - void setCcdMotionThreshold(btScalar ccdMotionThreshold) - { - m_ccdMotionThreshold = ccdMotionThreshold; - } - - ///users can point to their objects, userPointer is not used by Bullet - void* getUserPointer() const - { - return m_userObjectPointer; - } - - ///users can point to their objects, userPointer is not used by Bullet - void setUserPointer(void* userPointer) - { - m_userObjectPointer = userPointer; - } - - - inline bool checkCollideWith(btCollisionObject* co) - { - if (m_checkCollideWith) - return checkCollideWithOverride(co); - - return true; - } - - virtual int calculateSerializeBufferSize() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, class btSerializer* serializer) const; - - virtual void serializeSingleObject(class btSerializer* serializer) const; - -}; - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btCollisionObjectDoubleData -{ - void *m_broadphaseHandle; - void *m_collisionShape; - btCollisionShapeData *m_rootCollisionShape; - char *m_name; - - btTransformDoubleData m_worldTransform; - btTransformDoubleData m_interpolationWorldTransform; - btVector3DoubleData m_interpolationLinearVelocity; - btVector3DoubleData m_interpolationAngularVelocity; - btVector3DoubleData m_anisotropicFriction; - double m_contactProcessingThreshold; - double m_deactivationTime; - double m_friction; - double m_restitution; - double m_hitFraction; - double m_ccdSweptSphereRadius; - double m_ccdMotionThreshold; - - int m_hasAnisotropicFriction; - int m_collisionFlags; - int m_islandTag1; - int m_companionId; - int m_activationState1; - int m_internalType; - int m_checkCollideWith; - - char m_padding[4]; -}; - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btCollisionObjectFloatData -{ - void *m_broadphaseHandle; - void *m_collisionShape; - btCollisionShapeData *m_rootCollisionShape; - char *m_name; - - btTransformFloatData m_worldTransform; - btTransformFloatData m_interpolationWorldTransform; - btVector3FloatData m_interpolationLinearVelocity; - btVector3FloatData m_interpolationAngularVelocity; - btVector3FloatData m_anisotropicFriction; - float m_contactProcessingThreshold; - float m_deactivationTime; - float m_friction; - float m_restitution; - float m_hitFraction; - float m_ccdSweptSphereRadius; - float m_ccdMotionThreshold; - - int m_hasAnisotropicFriction; - int m_collisionFlags; - int m_islandTag1; - int m_companionId; - int m_activationState1; - int m_internalType; - int m_checkCollideWith; -}; - - - -SIMD_FORCE_INLINE int btCollisionObject::calculateSerializeBufferSize() const -{ - return sizeof(btCollisionObjectData); -} - - - -#endif //COLLISION_OBJECT_H diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionWorld.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionWorld.cpp deleted file mode 100644 index e478d1bb16c..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionWorld.cpp +++ /dev/null @@ -1,1416 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btCollisionWorld.h" -#include "btCollisionDispatcher.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "BulletCollision/CollisionShapes/btCollisionShape.h" -#include "BulletCollision/CollisionShapes/btConvexShape.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h" -#include "BulletCollision/CollisionShapes/btSphereShape.h" //for raycasting -#include "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h" //for raycasting -#include "BulletCollision/NarrowPhaseCollision/btRaycastCallback.h" -#include "BulletCollision/CollisionShapes/btCompoundShape.h" -#include "BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h" -#include "BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h" -#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h" -#include "LinearMath/btAabbUtil2.h" -#include "LinearMath/btQuickprof.h" -#include "LinearMath/btStackAlloc.h" -#include "LinearMath/btSerializer.h" - -//#define USE_BRUTEFORCE_RAYBROADPHASE 1 -//RECALCULATE_AABB is slower, but benefit is that you don't need to call 'stepSimulation' or 'updateAabbs' before using a rayTest -//#define RECALCULATE_AABB_RAYCAST 1 - -//When the user doesn't provide dispatcher or broadphase, create basic versions (and delete them in destructor) -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" -#include "BulletCollision/BroadphaseCollision/btSimpleBroadphase.h" -#include "BulletCollision/CollisionDispatch/btCollisionConfiguration.h" - - -///for debug drawing - -//for debug rendering -#include "BulletCollision/CollisionShapes/btBoxShape.h" -#include "BulletCollision/CollisionShapes/btCapsuleShape.h" -#include "BulletCollision/CollisionShapes/btCompoundShape.h" -#include "BulletCollision/CollisionShapes/btConeShape.h" -#include "BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h" -#include "BulletCollision/CollisionShapes/btCylinderShape.h" -#include "BulletCollision/CollisionShapes/btMultiSphereShape.h" -#include "BulletCollision/CollisionShapes/btPolyhedralConvexShape.h" -#include "BulletCollision/CollisionShapes/btSphereShape.h" -#include "BulletCollision/CollisionShapes/btTriangleCallback.h" -#include "BulletCollision/CollisionShapes/btTriangleMeshShape.h" -#include "BulletCollision/CollisionShapes/btStaticPlaneShape.h" - - - -btCollisionWorld::btCollisionWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache, btCollisionConfiguration* collisionConfiguration) -:m_dispatcher1(dispatcher), -m_broadphasePairCache(pairCache), -m_debugDrawer(0), -m_forceUpdateAllAabbs(true) -{ - m_stackAlloc = collisionConfiguration->getStackAllocator(); - m_dispatchInfo.m_stackAllocator = m_stackAlloc; -} - - -btCollisionWorld::~btCollisionWorld() -{ - - //clean up remaining objects - int i; - for (i=0;igetBroadphaseHandle(); - if (bp) - { - // - // only clear the cached algorithms - // - getBroadphase()->getOverlappingPairCache()->cleanProxyFromPairs(bp,m_dispatcher1); - getBroadphase()->destroyProxy(bp,m_dispatcher1); - collisionObject->setBroadphaseHandle(0); - } - } - - -} - - - - - - - - - - -void btCollisionWorld::addCollisionObject(btCollisionObject* collisionObject,short int collisionFilterGroup,short int collisionFilterMask) -{ - - btAssert(collisionObject); - - //check that the object isn't already added - btAssert( m_collisionObjects.findLinearSearch(collisionObject) == m_collisionObjects.size()); - - m_collisionObjects.push_back(collisionObject); - - //calculate new AABB - btTransform trans = collisionObject->getWorldTransform(); - - btVector3 minAabb; - btVector3 maxAabb; - collisionObject->getCollisionShape()->getAabb(trans,minAabb,maxAabb); - - int type = collisionObject->getCollisionShape()->getShapeType(); - collisionObject->setBroadphaseHandle( getBroadphase()->createProxy( - minAabb, - maxAabb, - type, - collisionObject, - collisionFilterGroup, - collisionFilterMask, - m_dispatcher1,0 - )) ; - - - - - -} - - - -void btCollisionWorld::updateSingleAabb(btCollisionObject* colObj) -{ - btVector3 minAabb,maxAabb; - colObj->getCollisionShape()->getAabb(colObj->getWorldTransform(), minAabb,maxAabb); - //need to increase the aabb for contact thresholds - btVector3 contactThreshold(gContactBreakingThreshold,gContactBreakingThreshold,gContactBreakingThreshold); - minAabb -= contactThreshold; - maxAabb += contactThreshold; - - btBroadphaseInterface* bp = (btBroadphaseInterface*)m_broadphasePairCache; - - //moving objects should be moderately sized, probably something wrong if not - if ( colObj->isStaticObject() || ((maxAabb-minAabb).length2() < btScalar(1e12))) - { - bp->setAabb(colObj->getBroadphaseHandle(),minAabb,maxAabb, m_dispatcher1); - } else - { - //something went wrong, investigate - //this assert is unwanted in 3D modelers (danger of loosing work) - colObj->setActivationState(DISABLE_SIMULATION); - - static bool reportMe = true; - if (reportMe && m_debugDrawer) - { - reportMe = false; - m_debugDrawer->reportErrorWarning("Overflow in AABB, object removed from simulation"); - m_debugDrawer->reportErrorWarning("If you can reproduce this, please email bugs@continuousphysics.com\n"); - m_debugDrawer->reportErrorWarning("Please include above information, your Platform, version of OS.\n"); - m_debugDrawer->reportErrorWarning("Thanks.\n"); - } - } -} - -void btCollisionWorld::updateAabbs() -{ - BT_PROFILE("updateAabbs"); - - btTransform predictedTrans; - for ( int i=0;iisActive()) - { - updateSingleAabb(colObj); - } - } -} - - - -void btCollisionWorld::performDiscreteCollisionDetection() -{ - BT_PROFILE("performDiscreteCollisionDetection"); - - btDispatcherInfo& dispatchInfo = getDispatchInfo(); - - updateAabbs(); - - { - BT_PROFILE("calculateOverlappingPairs"); - m_broadphasePairCache->calculateOverlappingPairs(m_dispatcher1); - } - - - btDispatcher* dispatcher = getDispatcher(); - { - BT_PROFILE("dispatchAllCollisionPairs"); - if (dispatcher) - dispatcher->dispatchAllCollisionPairs(m_broadphasePairCache->getOverlappingPairCache(),dispatchInfo,m_dispatcher1); - } - -} - - - -void btCollisionWorld::removeCollisionObject(btCollisionObject* collisionObject) -{ - - - //bool removeFromBroadphase = false; - - { - - btBroadphaseProxy* bp = collisionObject->getBroadphaseHandle(); - if (bp) - { - // - // only clear the cached algorithms - // - getBroadphase()->getOverlappingPairCache()->cleanProxyFromPairs(bp,m_dispatcher1); - getBroadphase()->destroyProxy(bp,m_dispatcher1); - collisionObject->setBroadphaseHandle(0); - } - } - - - //swapremove - m_collisionObjects.remove(collisionObject); - -} - - - -void btCollisionWorld::rayTestSingle(const btTransform& rayFromTrans,const btTransform& rayToTrans, - btCollisionObject* collisionObject, - const btCollisionShape* collisionShape, - const btTransform& colObjWorldTransform, - RayResultCallback& resultCallback) -{ - btSphereShape pointShape(btScalar(0.0)); - pointShape.setMargin(0.f); - const btConvexShape* castShape = &pointShape; - - if (collisionShape->isConvex()) - { - // BT_PROFILE("rayTestConvex"); - btConvexCast::CastResult castResult; - castResult.m_fraction = resultCallback.m_closestHitFraction; - - btConvexShape* convexShape = (btConvexShape*) collisionShape; - btVoronoiSimplexSolver simplexSolver; -#define USE_SUBSIMPLEX_CONVEX_CAST 1 -#ifdef USE_SUBSIMPLEX_CONVEX_CAST - btSubsimplexConvexCast convexCaster(castShape,convexShape,&simplexSolver); -#else - //btGjkConvexCast convexCaster(castShape,convexShape,&simplexSolver); - //btContinuousConvexCollision convexCaster(castShape,convexShape,&simplexSolver,0); -#endif //#USE_SUBSIMPLEX_CONVEX_CAST - - if (convexCaster.calcTimeOfImpact(rayFromTrans,rayToTrans,colObjWorldTransform,colObjWorldTransform,castResult)) - { - //add hit - if (castResult.m_normal.length2() > btScalar(0.0001)) - { - if (castResult.m_fraction < resultCallback.m_closestHitFraction) - { -#ifdef USE_SUBSIMPLEX_CONVEX_CAST - //rotate normal into worldspace - castResult.m_normal = rayFromTrans.getBasis() * castResult.m_normal; -#endif //USE_SUBSIMPLEX_CONVEX_CAST - - castResult.m_normal.normalize(); - btCollisionWorld::LocalRayResult localRayResult - ( - collisionObject, - 0, - castResult.m_normal, - castResult.m_fraction - ); - - bool normalInWorldSpace = true; - resultCallback.addSingleResult(localRayResult, normalInWorldSpace); - - } - } - } - } else { - if (collisionShape->isConcave()) - { - // BT_PROFILE("rayTestConcave"); - if (collisionShape->getShapeType()==TRIANGLE_MESH_SHAPE_PROXYTYPE) - { - ///optimized version for btBvhTriangleMeshShape - btBvhTriangleMeshShape* triangleMesh = (btBvhTriangleMeshShape*)collisionShape; - btTransform worldTocollisionObject = colObjWorldTransform.inverse(); - btVector3 rayFromLocal = worldTocollisionObject * rayFromTrans.getOrigin(); - btVector3 rayToLocal = worldTocollisionObject * rayToTrans.getOrigin(); - - //ConvexCast::CastResult - struct BridgeTriangleRaycastCallback : public btTriangleRaycastCallback - { - btCollisionWorld::RayResultCallback* m_resultCallback; - btCollisionObject* m_collisionObject; - btTriangleMeshShape* m_triangleMesh; - - btTransform m_colObjWorldTransform; - - BridgeTriangleRaycastCallback( const btVector3& from,const btVector3& to, - btCollisionWorld::RayResultCallback* resultCallback, btCollisionObject* collisionObject,btTriangleMeshShape* triangleMesh,const btTransform& colObjWorldTransform): - //@BP Mod - btTriangleRaycastCallback(from,to, resultCallback->m_flags), - m_resultCallback(resultCallback), - m_collisionObject(collisionObject), - m_triangleMesh(triangleMesh), - m_colObjWorldTransform(colObjWorldTransform) - { - } - - - virtual btScalar reportHit(const btVector3& hitNormalLocal, btScalar hitFraction, int partId, int triangleIndex ) - { - btCollisionWorld::LocalShapeInfo shapeInfo; - shapeInfo.m_shapePart = partId; - shapeInfo.m_triangleIndex = triangleIndex; - - btVector3 hitNormalWorld = m_colObjWorldTransform.getBasis() * hitNormalLocal; - - btCollisionWorld::LocalRayResult rayResult - (m_collisionObject, - &shapeInfo, - hitNormalWorld, - hitFraction); - - bool normalInWorldSpace = true; - return m_resultCallback->addSingleResult(rayResult,normalInWorldSpace); - } - - }; - - BridgeTriangleRaycastCallback rcb(rayFromLocal,rayToLocal,&resultCallback,collisionObject,triangleMesh,colObjWorldTransform); - rcb.m_hitFraction = resultCallback.m_closestHitFraction; - triangleMesh->performRaycast(&rcb,rayFromLocal,rayToLocal); - } else - { - //generic (slower) case - btConcaveShape* concaveShape = (btConcaveShape*)collisionShape; - - btTransform worldTocollisionObject = colObjWorldTransform.inverse(); - - btVector3 rayFromLocal = worldTocollisionObject * rayFromTrans.getOrigin(); - btVector3 rayToLocal = worldTocollisionObject * rayToTrans.getOrigin(); - - //ConvexCast::CastResult - - struct BridgeTriangleRaycastCallback : public btTriangleRaycastCallback - { - btCollisionWorld::RayResultCallback* m_resultCallback; - btCollisionObject* m_collisionObject; - btConcaveShape* m_triangleMesh; - - btTransform m_colObjWorldTransform; - - BridgeTriangleRaycastCallback( const btVector3& from,const btVector3& to, - btCollisionWorld::RayResultCallback* resultCallback, btCollisionObject* collisionObject,btConcaveShape* triangleMesh, const btTransform& colObjWorldTransform): - //@BP Mod - btTriangleRaycastCallback(from,to, resultCallback->m_flags), - m_resultCallback(resultCallback), - m_collisionObject(collisionObject), - m_triangleMesh(triangleMesh), - m_colObjWorldTransform(colObjWorldTransform) - { - } - - - virtual btScalar reportHit(const btVector3& hitNormalLocal, btScalar hitFraction, int partId, int triangleIndex ) - { - btCollisionWorld::LocalShapeInfo shapeInfo; - shapeInfo.m_shapePart = partId; - shapeInfo.m_triangleIndex = triangleIndex; - - btVector3 hitNormalWorld = m_colObjWorldTransform.getBasis() * hitNormalLocal; - - btCollisionWorld::LocalRayResult rayResult - (m_collisionObject, - &shapeInfo, - hitNormalWorld, - hitFraction); - - bool normalInWorldSpace = true; - return m_resultCallback->addSingleResult(rayResult,normalInWorldSpace); - } - - }; - - - BridgeTriangleRaycastCallback rcb(rayFromLocal,rayToLocal,&resultCallback,collisionObject,concaveShape, colObjWorldTransform); - rcb.m_hitFraction = resultCallback.m_closestHitFraction; - - btVector3 rayAabbMinLocal = rayFromLocal; - rayAabbMinLocal.setMin(rayToLocal); - btVector3 rayAabbMaxLocal = rayFromLocal; - rayAabbMaxLocal.setMax(rayToLocal); - - concaveShape->processAllTriangles(&rcb,rayAabbMinLocal,rayAabbMaxLocal); - } - } else { - // BT_PROFILE("rayTestCompound"); - ///@todo: use AABB tree or other BVH acceleration structure, see btDbvt - if (collisionShape->isCompound()) - { - const btCompoundShape* compoundShape = static_cast(collisionShape); - int i=0; - for (i=0;igetNumChildShapes();i++) - { - btTransform childTrans = compoundShape->getChildTransform(i); - const btCollisionShape* childCollisionShape = compoundShape->getChildShape(i); - btTransform childWorldTrans = colObjWorldTransform * childTrans; - // replace collision shape so that callback can determine the triangle - btCollisionShape* saveCollisionShape = collisionObject->getCollisionShape(); - collisionObject->internalSetTemporaryCollisionShape((btCollisionShape*)childCollisionShape); - struct LocalInfoAdder2 : public RayResultCallback { - int m_i; - RayResultCallback* m_userCallback; - LocalInfoAdder2 (int i, RayResultCallback *user) - : m_i(i), m_userCallback(user) - { - } - virtual btScalar addSingleResult (btCollisionWorld::LocalRayResult &r, bool b) - { - btCollisionWorld::LocalShapeInfo shapeInfo; - shapeInfo.m_shapePart = -1; - shapeInfo.m_triangleIndex = m_i; - if (r.m_localShapeInfo == NULL) - r.m_localShapeInfo = &shapeInfo; - return m_userCallback->addSingleResult(r, b); - } - }; - - LocalInfoAdder2 my_cb(i, &resultCallback); - my_cb.m_closestHitFraction = resultCallback.m_closestHitFraction; - - - rayTestSingle(rayFromTrans,rayToTrans, - collisionObject, - childCollisionShape, - childWorldTrans, - my_cb); - // restore - collisionObject->internalSetTemporaryCollisionShape(saveCollisionShape); - } - } - } - } -} - -void btCollisionWorld::objectQuerySingle(const btConvexShape* castShape,const btTransform& convexFromTrans,const btTransform& convexToTrans, - btCollisionObject* collisionObject, - const btCollisionShape* collisionShape, - const btTransform& colObjWorldTransform, - ConvexResultCallback& resultCallback, btScalar allowedPenetration) -{ - if (collisionShape->isConvex()) - { - //BT_PROFILE("convexSweepConvex"); - btConvexCast::CastResult castResult; - castResult.m_allowedPenetration = allowedPenetration; - castResult.m_fraction = resultCallback.m_closestHitFraction;//btScalar(1.);//?? - - btConvexShape* convexShape = (btConvexShape*) collisionShape; - btVoronoiSimplexSolver simplexSolver; - btGjkEpaPenetrationDepthSolver gjkEpaPenetrationSolver; - - btContinuousConvexCollision convexCaster1(castShape,convexShape,&simplexSolver,&gjkEpaPenetrationSolver); - //btGjkConvexCast convexCaster2(castShape,convexShape,&simplexSolver); - //btSubsimplexConvexCast convexCaster3(castShape,convexShape,&simplexSolver); - - btConvexCast* castPtr = &convexCaster1; - - - - if (castPtr->calcTimeOfImpact(convexFromTrans,convexToTrans,colObjWorldTransform,colObjWorldTransform,castResult)) - { - //add hit - if (castResult.m_normal.length2() > btScalar(0.0001)) - { - if (castResult.m_fraction < resultCallback.m_closestHitFraction) - { - castResult.m_normal.normalize(); - btCollisionWorld::LocalConvexResult localConvexResult - ( - collisionObject, - 0, - castResult.m_normal, - castResult.m_hitPoint, - castResult.m_fraction - ); - - bool normalInWorldSpace = true; - resultCallback.addSingleResult(localConvexResult, normalInWorldSpace); - - } - } - } - } else { - if (collisionShape->isConcave()) - { - if (collisionShape->getShapeType()==TRIANGLE_MESH_SHAPE_PROXYTYPE) - { - //BT_PROFILE("convexSweepbtBvhTriangleMesh"); - btBvhTriangleMeshShape* triangleMesh = (btBvhTriangleMeshShape*)collisionShape; - btTransform worldTocollisionObject = colObjWorldTransform.inverse(); - btVector3 convexFromLocal = worldTocollisionObject * convexFromTrans.getOrigin(); - btVector3 convexToLocal = worldTocollisionObject * convexToTrans.getOrigin(); - // rotation of box in local mesh space = MeshRotation^-1 * ConvexToRotation - btTransform rotationXform = btTransform(worldTocollisionObject.getBasis() * convexToTrans.getBasis()); - - //ConvexCast::CastResult - struct BridgeTriangleConvexcastCallback : public btTriangleConvexcastCallback - { - btCollisionWorld::ConvexResultCallback* m_resultCallback; - btCollisionObject* m_collisionObject; - btTriangleMeshShape* m_triangleMesh; - - BridgeTriangleConvexcastCallback(const btConvexShape* castShape, const btTransform& from,const btTransform& to, - btCollisionWorld::ConvexResultCallback* resultCallback, btCollisionObject* collisionObject,btTriangleMeshShape* triangleMesh, const btTransform& triangleToWorld): - btTriangleConvexcastCallback(castShape, from,to, triangleToWorld, triangleMesh->getMargin()), - m_resultCallback(resultCallback), - m_collisionObject(collisionObject), - m_triangleMesh(triangleMesh) - { - } - - - virtual btScalar reportHit(const btVector3& hitNormalLocal, const btVector3& hitPointLocal, btScalar hitFraction, int partId, int triangleIndex ) - { - btCollisionWorld::LocalShapeInfo shapeInfo; - shapeInfo.m_shapePart = partId; - shapeInfo.m_triangleIndex = triangleIndex; - if (hitFraction <= m_resultCallback->m_closestHitFraction) - { - - btCollisionWorld::LocalConvexResult convexResult - (m_collisionObject, - &shapeInfo, - hitNormalLocal, - hitPointLocal, - hitFraction); - - bool normalInWorldSpace = true; - - - return m_resultCallback->addSingleResult(convexResult,normalInWorldSpace); - } - return hitFraction; - } - - }; - - BridgeTriangleConvexcastCallback tccb(castShape, convexFromTrans,convexToTrans,&resultCallback,collisionObject,triangleMesh, colObjWorldTransform); - tccb.m_hitFraction = resultCallback.m_closestHitFraction; - btVector3 boxMinLocal, boxMaxLocal; - castShape->getAabb(rotationXform, boxMinLocal, boxMaxLocal); - triangleMesh->performConvexcast(&tccb,convexFromLocal,convexToLocal,boxMinLocal, boxMaxLocal); - } else - { - //BT_PROFILE("convexSweepConcave"); - btConcaveShape* concaveShape = (btConcaveShape*)collisionShape; - btTransform worldTocollisionObject = colObjWorldTransform.inverse(); - btVector3 convexFromLocal = worldTocollisionObject * convexFromTrans.getOrigin(); - btVector3 convexToLocal = worldTocollisionObject * convexToTrans.getOrigin(); - // rotation of box in local mesh space = MeshRotation^-1 * ConvexToRotation - btTransform rotationXform = btTransform(worldTocollisionObject.getBasis() * convexToTrans.getBasis()); - - //ConvexCast::CastResult - struct BridgeTriangleConvexcastCallback : public btTriangleConvexcastCallback - { - btCollisionWorld::ConvexResultCallback* m_resultCallback; - btCollisionObject* m_collisionObject; - btConcaveShape* m_triangleMesh; - - BridgeTriangleConvexcastCallback(const btConvexShape* castShape, const btTransform& from,const btTransform& to, - btCollisionWorld::ConvexResultCallback* resultCallback, btCollisionObject* collisionObject,btConcaveShape* triangleMesh, const btTransform& triangleToWorld): - btTriangleConvexcastCallback(castShape, from,to, triangleToWorld, triangleMesh->getMargin()), - m_resultCallback(resultCallback), - m_collisionObject(collisionObject), - m_triangleMesh(triangleMesh) - { - } - - - virtual btScalar reportHit(const btVector3& hitNormalLocal, const btVector3& hitPointLocal, btScalar hitFraction, int partId, int triangleIndex ) - { - btCollisionWorld::LocalShapeInfo shapeInfo; - shapeInfo.m_shapePart = partId; - shapeInfo.m_triangleIndex = triangleIndex; - if (hitFraction <= m_resultCallback->m_closestHitFraction) - { - - btCollisionWorld::LocalConvexResult convexResult - (m_collisionObject, - &shapeInfo, - hitNormalLocal, - hitPointLocal, - hitFraction); - - bool normalInWorldSpace = false; - - return m_resultCallback->addSingleResult(convexResult,normalInWorldSpace); - } - return hitFraction; - } - - }; - - BridgeTriangleConvexcastCallback tccb(castShape, convexFromTrans,convexToTrans,&resultCallback,collisionObject,concaveShape, colObjWorldTransform); - tccb.m_hitFraction = resultCallback.m_closestHitFraction; - btVector3 boxMinLocal, boxMaxLocal; - castShape->getAabb(rotationXform, boxMinLocal, boxMaxLocal); - - btVector3 rayAabbMinLocal = convexFromLocal; - rayAabbMinLocal.setMin(convexToLocal); - btVector3 rayAabbMaxLocal = convexFromLocal; - rayAabbMaxLocal.setMax(convexToLocal); - rayAabbMinLocal += boxMinLocal; - rayAabbMaxLocal += boxMaxLocal; - concaveShape->processAllTriangles(&tccb,rayAabbMinLocal,rayAabbMaxLocal); - } - } else { - ///@todo : use AABB tree or other BVH acceleration structure! - if (collisionShape->isCompound()) - { - BT_PROFILE("convexSweepCompound"); - const btCompoundShape* compoundShape = static_cast(collisionShape); - int i=0; - for (i=0;igetNumChildShapes();i++) - { - btTransform childTrans = compoundShape->getChildTransform(i); - const btCollisionShape* childCollisionShape = compoundShape->getChildShape(i); - btTransform childWorldTrans = colObjWorldTransform * childTrans; - // replace collision shape so that callback can determine the triangle - btCollisionShape* saveCollisionShape = collisionObject->getCollisionShape(); - collisionObject->internalSetTemporaryCollisionShape((btCollisionShape*)childCollisionShape); - struct LocalInfoAdder : public ConvexResultCallback { - ConvexResultCallback* m_userCallback; - int m_i; - - LocalInfoAdder (int i, ConvexResultCallback *user) - : m_userCallback(user),m_i(i) { } - virtual btScalar addSingleResult (btCollisionWorld::LocalConvexResult& r, bool b) - { - btCollisionWorld::LocalShapeInfo shapeInfo; - shapeInfo.m_shapePart = -1; - shapeInfo.m_triangleIndex = m_i; - if (r.m_localShapeInfo == NULL) - r.m_localShapeInfo = &shapeInfo; - return m_userCallback->addSingleResult(r, b); - } - }; - - LocalInfoAdder my_cb(i, &resultCallback); - my_cb.m_closestHitFraction = resultCallback.m_closestHitFraction; - - objectQuerySingle(castShape, convexFromTrans,convexToTrans, - collisionObject, - childCollisionShape, - childWorldTrans, - my_cb, allowedPenetration); - // restore - collisionObject->internalSetTemporaryCollisionShape(saveCollisionShape); - } - } - } - } -} - - -struct btSingleRayCallback : public btBroadphaseRayCallback -{ - - btVector3 m_rayFromWorld; - btVector3 m_rayToWorld; - btTransform m_rayFromTrans; - btTransform m_rayToTrans; - btVector3 m_hitNormal; - - const btCollisionWorld* m_world; - btCollisionWorld::RayResultCallback& m_resultCallback; - - btSingleRayCallback(const btVector3& rayFromWorld,const btVector3& rayToWorld,const btCollisionWorld* world,btCollisionWorld::RayResultCallback& resultCallback) - :m_rayFromWorld(rayFromWorld), - m_rayToWorld(rayToWorld), - m_world(world), - m_resultCallback(resultCallback) - { - m_rayFromTrans.setIdentity(); - m_rayFromTrans.setOrigin(m_rayFromWorld); - m_rayToTrans.setIdentity(); - m_rayToTrans.setOrigin(m_rayToWorld); - - btVector3 rayDir = (rayToWorld-rayFromWorld); - - rayDir.normalize (); - ///what about division by zero? --> just set rayDirection[i] to INF/BT_LARGE_FLOAT - m_rayDirectionInverse[0] = rayDir[0] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[0]; - m_rayDirectionInverse[1] = rayDir[1] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[1]; - m_rayDirectionInverse[2] = rayDir[2] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[2]; - m_signs[0] = m_rayDirectionInverse[0] < 0.0; - m_signs[1] = m_rayDirectionInverse[1] < 0.0; - m_signs[2] = m_rayDirectionInverse[2] < 0.0; - - m_lambda_max = rayDir.dot(m_rayToWorld-m_rayFromWorld); - - } - - - - virtual bool process(const btBroadphaseProxy* proxy) - { - ///terminate further ray tests, once the closestHitFraction reached zero - if (m_resultCallback.m_closestHitFraction == btScalar(0.f)) - return false; - - btCollisionObject* collisionObject = (btCollisionObject*)proxy->m_clientObject; - - //only perform raycast if filterMask matches - if(m_resultCallback.needsCollision(collisionObject->getBroadphaseHandle())) - { - //RigidcollisionObject* collisionObject = ctrl->GetRigidcollisionObject(); - //btVector3 collisionObjectAabbMin,collisionObjectAabbMax; -#if 0 -#ifdef RECALCULATE_AABB - btVector3 collisionObjectAabbMin,collisionObjectAabbMax; - collisionObject->getCollisionShape()->getAabb(collisionObject->getWorldTransform(),collisionObjectAabbMin,collisionObjectAabbMax); -#else - //getBroadphase()->getAabb(collisionObject->getBroadphaseHandle(),collisionObjectAabbMin,collisionObjectAabbMax); - const btVector3& collisionObjectAabbMin = collisionObject->getBroadphaseHandle()->m_aabbMin; - const btVector3& collisionObjectAabbMax = collisionObject->getBroadphaseHandle()->m_aabbMax; -#endif -#endif - //btScalar hitLambda = m_resultCallback.m_closestHitFraction; - //culling already done by broadphase - //if (btRayAabb(m_rayFromWorld,m_rayToWorld,collisionObjectAabbMin,collisionObjectAabbMax,hitLambda,m_hitNormal)) - { - m_world->rayTestSingle(m_rayFromTrans,m_rayToTrans, - collisionObject, - collisionObject->getCollisionShape(), - collisionObject->getWorldTransform(), - m_resultCallback); - } - } - return true; - } -}; - -void btCollisionWorld::rayTest(const btVector3& rayFromWorld, const btVector3& rayToWorld, RayResultCallback& resultCallback) const -{ - //BT_PROFILE("rayTest"); - /// use the broadphase to accelerate the search for objects, based on their aabb - /// and for each object with ray-aabb overlap, perform an exact ray test - btSingleRayCallback rayCB(rayFromWorld,rayToWorld,this,resultCallback); - -#ifndef USE_BRUTEFORCE_RAYBROADPHASE - m_broadphasePairCache->rayTest(rayFromWorld,rayToWorld,rayCB); -#else - for (int i=0;igetNumCollisionObjects();i++) - { - rayCB.process(m_collisionObjects[i]->getBroadphaseHandle()); - } -#endif //USE_BRUTEFORCE_RAYBROADPHASE - -} - - -struct btSingleSweepCallback : public btBroadphaseRayCallback -{ - - btTransform m_convexFromTrans; - btTransform m_convexToTrans; - btVector3 m_hitNormal; - const btCollisionWorld* m_world; - btCollisionWorld::ConvexResultCallback& m_resultCallback; - btScalar m_allowedCcdPenetration; - const btConvexShape* m_castShape; - - - btSingleSweepCallback(const btConvexShape* castShape, const btTransform& convexFromTrans,const btTransform& convexToTrans,const btCollisionWorld* world,btCollisionWorld::ConvexResultCallback& resultCallback,btScalar allowedPenetration) - :m_convexFromTrans(convexFromTrans), - m_convexToTrans(convexToTrans), - m_world(world), - m_resultCallback(resultCallback), - m_allowedCcdPenetration(allowedPenetration), - m_castShape(castShape) - { - btVector3 unnormalizedRayDir = (m_convexToTrans.getOrigin()-m_convexFromTrans.getOrigin()); - btVector3 rayDir = unnormalizedRayDir.normalized(); - ///what about division by zero? --> just set rayDirection[i] to INF/BT_LARGE_FLOAT - m_rayDirectionInverse[0] = rayDir[0] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[0]; - m_rayDirectionInverse[1] = rayDir[1] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[1]; - m_rayDirectionInverse[2] = rayDir[2] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[2]; - m_signs[0] = m_rayDirectionInverse[0] < 0.0; - m_signs[1] = m_rayDirectionInverse[1] < 0.0; - m_signs[2] = m_rayDirectionInverse[2] < 0.0; - - m_lambda_max = rayDir.dot(unnormalizedRayDir); - - } - - virtual bool process(const btBroadphaseProxy* proxy) - { - ///terminate further convex sweep tests, once the closestHitFraction reached zero - if (m_resultCallback.m_closestHitFraction == btScalar(0.f)) - return false; - - btCollisionObject* collisionObject = (btCollisionObject*)proxy->m_clientObject; - - //only perform raycast if filterMask matches - if(m_resultCallback.needsCollision(collisionObject->getBroadphaseHandle())) { - //RigidcollisionObject* collisionObject = ctrl->GetRigidcollisionObject(); - m_world->objectQuerySingle(m_castShape, m_convexFromTrans,m_convexToTrans, - collisionObject, - collisionObject->getCollisionShape(), - collisionObject->getWorldTransform(), - m_resultCallback, - m_allowedCcdPenetration); - } - - return true; - } -}; - - - -void btCollisionWorld::convexSweepTest(const btConvexShape* castShape, const btTransform& convexFromWorld, const btTransform& convexToWorld, ConvexResultCallback& resultCallback, btScalar allowedCcdPenetration) const -{ - - BT_PROFILE("convexSweepTest"); - /// use the broadphase to accelerate the search for objects, based on their aabb - /// and for each object with ray-aabb overlap, perform an exact ray test - /// unfortunately the implementation for rayTest and convexSweepTest duplicated, albeit practically identical - - - - btTransform convexFromTrans,convexToTrans; - convexFromTrans = convexFromWorld; - convexToTrans = convexToWorld; - btVector3 castShapeAabbMin, castShapeAabbMax; - /* Compute AABB that encompasses angular movement */ - { - btVector3 linVel, angVel; - btTransformUtil::calculateVelocity (convexFromTrans, convexToTrans, 1.0, linVel, angVel); - btVector3 zeroLinVel; - zeroLinVel.setValue(0,0,0); - btTransform R; - R.setIdentity (); - R.setRotation (convexFromTrans.getRotation()); - castShape->calculateTemporalAabb (R, zeroLinVel, angVel, 1.0, castShapeAabbMin, castShapeAabbMax); - } - -#ifndef USE_BRUTEFORCE_RAYBROADPHASE - - btSingleSweepCallback convexCB(castShape,convexFromWorld,convexToWorld,this,resultCallback,allowedCcdPenetration); - - m_broadphasePairCache->rayTest(convexFromTrans.getOrigin(),convexToTrans.getOrigin(),convexCB,castShapeAabbMin,castShapeAabbMax); - -#else - /// go over all objects, and if the ray intersects their aabb + cast shape aabb, - // do a ray-shape query using convexCaster (CCD) - int i; - for (i=0;igetBroadphaseHandle())) { - //RigidcollisionObject* collisionObject = ctrl->GetRigidcollisionObject(); - btVector3 collisionObjectAabbMin,collisionObjectAabbMax; - collisionObject->getCollisionShape()->getAabb(collisionObject->getWorldTransform(),collisionObjectAabbMin,collisionObjectAabbMax); - AabbExpand (collisionObjectAabbMin, collisionObjectAabbMax, castShapeAabbMin, castShapeAabbMax); - btScalar hitLambda = btScalar(1.); //could use resultCallback.m_closestHitFraction, but needs testing - btVector3 hitNormal; - if (btRayAabb(convexFromWorld.getOrigin(),convexToWorld.getOrigin(),collisionObjectAabbMin,collisionObjectAabbMax,hitLambda,hitNormal)) - { - objectQuerySingle(castShape, convexFromTrans,convexToTrans, - collisionObject, - collisionObject->getCollisionShape(), - collisionObject->getWorldTransform(), - resultCallback, - allowedCcdPenetration); - } - } - } -#endif //USE_BRUTEFORCE_RAYBROADPHASE -} - - - -struct btBridgedManifoldResult : public btManifoldResult -{ - - btCollisionWorld::ContactResultCallback& m_resultCallback; - - btBridgedManifoldResult( btCollisionObject* obj0,btCollisionObject* obj1,btCollisionWorld::ContactResultCallback& resultCallback ) - :btManifoldResult(obj0,obj1), - m_resultCallback(resultCallback) - { - } - - virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth) - { - bool isSwapped = m_manifoldPtr->getBody0() != m_body0; - btVector3 pointA = pointInWorld + normalOnBInWorld * depth; - btVector3 localA; - btVector3 localB; - if (isSwapped) - { - localA = m_rootTransB.invXform(pointA ); - localB = m_rootTransA.invXform(pointInWorld); - } else - { - localA = m_rootTransA.invXform(pointA ); - localB = m_rootTransB.invXform(pointInWorld); - } - - btManifoldPoint newPt(localA,localB,normalOnBInWorld,depth); - newPt.m_positionWorldOnA = pointA; - newPt.m_positionWorldOnB = pointInWorld; - - //BP mod, store contact triangles. - if (isSwapped) - { - newPt.m_partId0 = m_partId1; - newPt.m_partId1 = m_partId0; - newPt.m_index0 = m_index1; - newPt.m_index1 = m_index0; - } else - { - newPt.m_partId0 = m_partId0; - newPt.m_partId1 = m_partId1; - newPt.m_index0 = m_index0; - newPt.m_index1 = m_index1; - } - - //experimental feature info, for per-triangle material etc. - btCollisionObject* obj0 = isSwapped? m_body1 : m_body0; - btCollisionObject* obj1 = isSwapped? m_body0 : m_body1; - m_resultCallback.addSingleResult(newPt,obj0,newPt.m_partId0,newPt.m_index0,obj1,newPt.m_partId1,newPt.m_index1); - - } - -}; - - - -struct btSingleContactCallback : public btBroadphaseAabbCallback -{ - - btCollisionObject* m_collisionObject; - btCollisionWorld* m_world; - btCollisionWorld::ContactResultCallback& m_resultCallback; - - - btSingleContactCallback(btCollisionObject* collisionObject, btCollisionWorld* world,btCollisionWorld::ContactResultCallback& resultCallback) - :m_collisionObject(collisionObject), - m_world(world), - m_resultCallback(resultCallback) - { - } - - virtual bool process(const btBroadphaseProxy* proxy) - { - btCollisionObject* collisionObject = (btCollisionObject*)proxy->m_clientObject; - if (collisionObject == m_collisionObject) - return true; - - //only perform raycast if filterMask matches - if(m_resultCallback.needsCollision(collisionObject->getBroadphaseHandle())) - { - btCollisionAlgorithm* algorithm = m_world->getDispatcher()->findAlgorithm(m_collisionObject,collisionObject); - if (algorithm) - { - btBridgedManifoldResult contactPointResult(m_collisionObject,collisionObject, m_resultCallback); - //discrete collision detection query - algorithm->processCollision(m_collisionObject,collisionObject, m_world->getDispatchInfo(),&contactPointResult); - - algorithm->~btCollisionAlgorithm(); - m_world->getDispatcher()->freeCollisionAlgorithm(algorithm); - } - } - return true; - } -}; - - -///contactTest performs a discrete collision test against all objects in the btCollisionWorld, and calls the resultCallback. -///it reports one or more contact points for every overlapping object (including the one with deepest penetration) -void btCollisionWorld::contactTest( btCollisionObject* colObj, ContactResultCallback& resultCallback) -{ - btVector3 aabbMin,aabbMax; - colObj->getCollisionShape()->getAabb(colObj->getWorldTransform(),aabbMin,aabbMax); - btSingleContactCallback contactCB(colObj,this,resultCallback); - - m_broadphasePairCache->aabbTest(aabbMin,aabbMax,contactCB); -} - - -///contactTest performs a discrete collision test between two collision objects and calls the resultCallback if overlap if detected. -///it reports one or more contact points (including the one with deepest penetration) -void btCollisionWorld::contactPairTest(btCollisionObject* colObjA, btCollisionObject* colObjB, ContactResultCallback& resultCallback) -{ - btCollisionAlgorithm* algorithm = getDispatcher()->findAlgorithm(colObjA,colObjB); - if (algorithm) - { - btBridgedManifoldResult contactPointResult(colObjA,colObjB, resultCallback); - //discrete collision detection query - algorithm->processCollision(colObjA,colObjB, getDispatchInfo(),&contactPointResult); - - algorithm->~btCollisionAlgorithm(); - getDispatcher()->freeCollisionAlgorithm(algorithm); - } - -} - - - - -class DebugDrawcallback : public btTriangleCallback, public btInternalTriangleIndexCallback -{ - btIDebugDraw* m_debugDrawer; - btVector3 m_color; - btTransform m_worldTrans; - -public: - - DebugDrawcallback(btIDebugDraw* debugDrawer,const btTransform& worldTrans,const btVector3& color) : - m_debugDrawer(debugDrawer), - m_color(color), - m_worldTrans(worldTrans) - { - } - - virtual void internalProcessTriangleIndex(btVector3* triangle,int partId,int triangleIndex) - { - processTriangle(triangle,partId,triangleIndex); - } - - virtual void processTriangle(btVector3* triangle,int partId, int triangleIndex) - { - (void)partId; - (void)triangleIndex; - - btVector3 wv0,wv1,wv2; - wv0 = m_worldTrans*triangle[0]; - wv1 = m_worldTrans*triangle[1]; - wv2 = m_worldTrans*triangle[2]; - btVector3 center = (wv0+wv1+wv2)*btScalar(1./3.); - - btVector3 normal = (wv1-wv0).cross(wv2-wv0); - normal.normalize(); - btVector3 normalColor(1,1,0); - m_debugDrawer->drawLine(center,center+normal,normalColor); - - - - - m_debugDrawer->drawLine(wv0,wv1,m_color); - m_debugDrawer->drawLine(wv1,wv2,m_color); - m_debugDrawer->drawLine(wv2,wv0,m_color); - } -}; - - -void btCollisionWorld::debugDrawObject(const btTransform& worldTransform, const btCollisionShape* shape, const btVector3& color) -{ - // Draw a small simplex at the center of the object - { - btVector3 start = worldTransform.getOrigin(); - getDebugDrawer()->drawLine(start, start+worldTransform.getBasis() * btVector3(1,0,0), btVector3(1,0,0)); - getDebugDrawer()->drawLine(start, start+worldTransform.getBasis() * btVector3(0,1,0), btVector3(0,1,0)); - getDebugDrawer()->drawLine(start, start+worldTransform.getBasis() * btVector3(0,0,1), btVector3(0,0,1)); - } - - if (shape->getShapeType() == COMPOUND_SHAPE_PROXYTYPE) - { - const btCompoundShape* compoundShape = static_cast(shape); - for (int i=compoundShape->getNumChildShapes()-1;i>=0;i--) - { - btTransform childTrans = compoundShape->getChildTransform(i); - const btCollisionShape* colShape = compoundShape->getChildShape(i); - debugDrawObject(worldTransform*childTrans,colShape,color); - } - - } else - { - switch (shape->getShapeType()) - { - - case BOX_SHAPE_PROXYTYPE: - { - const btBoxShape* boxShape = static_cast(shape); - btVector3 halfExtents = boxShape->getHalfExtentsWithMargin(); - getDebugDrawer()->drawBox(-halfExtents,halfExtents,worldTransform,color); - break; - } - - case SPHERE_SHAPE_PROXYTYPE: - { - const btSphereShape* sphereShape = static_cast(shape); - btScalar radius = sphereShape->getMargin();//radius doesn't include the margin, so draw with margin - - getDebugDrawer()->drawSphere(radius, worldTransform, color); - break; - } - case MULTI_SPHERE_SHAPE_PROXYTYPE: - { - const btMultiSphereShape* multiSphereShape = static_cast(shape); - - btTransform childTransform; - childTransform.setIdentity(); - - for (int i = multiSphereShape->getSphereCount()-1; i>=0;i--) - { - childTransform.setOrigin(multiSphereShape->getSpherePosition(i)); - getDebugDrawer()->drawSphere(multiSphereShape->getSphereRadius(i), worldTransform*childTransform, color); - } - - break; - } - case CAPSULE_SHAPE_PROXYTYPE: - { - const btCapsuleShape* capsuleShape = static_cast(shape); - - btScalar radius = capsuleShape->getRadius(); - btScalar halfHeight = capsuleShape->getHalfHeight(); - - int upAxis = capsuleShape->getUpAxis(); - - - btVector3 capStart(0.f,0.f,0.f); - capStart[upAxis] = -halfHeight; - - btVector3 capEnd(0.f,0.f,0.f); - capEnd[upAxis] = halfHeight; - - // Draw the ends - { - - btTransform childTransform = worldTransform; - childTransform.getOrigin() = worldTransform * capStart; - getDebugDrawer()->drawSphere(radius, childTransform, color); - } - - { - btTransform childTransform = worldTransform; - childTransform.getOrigin() = worldTransform * capEnd; - getDebugDrawer()->drawSphere(radius, childTransform, color); - } - - // Draw some additional lines - btVector3 start = worldTransform.getOrigin(); - - - capStart[(upAxis+1)%3] = radius; - capEnd[(upAxis+1)%3] = radius; - getDebugDrawer()->drawLine(start+worldTransform.getBasis() * capStart,start+worldTransform.getBasis() * capEnd, color); - capStart[(upAxis+1)%3] = -radius; - capEnd[(upAxis+1)%3] = -radius; - getDebugDrawer()->drawLine(start+worldTransform.getBasis() * capStart,start+worldTransform.getBasis() * capEnd, color); - - capStart[(upAxis+1)%3] = 0.f; - capEnd[(upAxis+1)%3] = 0.f; - - capStart[(upAxis+2)%3] = radius; - capEnd[(upAxis+2)%3] = radius; - getDebugDrawer()->drawLine(start+worldTransform.getBasis() * capStart,start+worldTransform.getBasis() * capEnd, color); - capStart[(upAxis+2)%3] = -radius; - capEnd[(upAxis+2)%3] = -radius; - getDebugDrawer()->drawLine(start+worldTransform.getBasis() * capStart,start+worldTransform.getBasis() * capEnd, color); - - - break; - } - case CONE_SHAPE_PROXYTYPE: - { - const btConeShape* coneShape = static_cast(shape); - btScalar radius = coneShape->getRadius();//+coneShape->getMargin(); - btScalar height = coneShape->getHeight();//+coneShape->getMargin(); - btVector3 start = worldTransform.getOrigin(); - - int upAxis= coneShape->getConeUpIndex(); - - - btVector3 offsetHeight(0,0,0); - offsetHeight[upAxis] = height * btScalar(0.5); - btVector3 offsetRadius(0,0,0); - offsetRadius[(upAxis+1)%3] = radius; - btVector3 offset2Radius(0,0,0); - offset2Radius[(upAxis+2)%3] = radius; - - getDebugDrawer()->drawLine(start+worldTransform.getBasis() * (offsetHeight),start+worldTransform.getBasis() * (-offsetHeight+offsetRadius),color); - getDebugDrawer()->drawLine(start+worldTransform.getBasis() * (offsetHeight),start+worldTransform.getBasis() * (-offsetHeight-offsetRadius),color); - getDebugDrawer()->drawLine(start+worldTransform.getBasis() * (offsetHeight),start+worldTransform.getBasis() * (-offsetHeight+offset2Radius),color); - getDebugDrawer()->drawLine(start+worldTransform.getBasis() * (offsetHeight),start+worldTransform.getBasis() * (-offsetHeight-offset2Radius),color); - - - - break; - - } - case CYLINDER_SHAPE_PROXYTYPE: - { - const btCylinderShape* cylinder = static_cast(shape); - int upAxis = cylinder->getUpAxis(); - btScalar radius = cylinder->getRadius(); - btScalar halfHeight = cylinder->getHalfExtentsWithMargin()[upAxis]; - btVector3 start = worldTransform.getOrigin(); - btVector3 offsetHeight(0,0,0); - offsetHeight[upAxis] = halfHeight; - btVector3 offsetRadius(0,0,0); - offsetRadius[(upAxis+1)%3] = radius; - getDebugDrawer()->drawLine(start+worldTransform.getBasis() * (offsetHeight+offsetRadius),start+worldTransform.getBasis() * (-offsetHeight+offsetRadius),color); - getDebugDrawer()->drawLine(start+worldTransform.getBasis() * (offsetHeight-offsetRadius),start+worldTransform.getBasis() * (-offsetHeight-offsetRadius),color); - break; - } - - case STATIC_PLANE_PROXYTYPE: - { - const btStaticPlaneShape* staticPlaneShape = static_cast(shape); - btScalar planeConst = staticPlaneShape->getPlaneConstant(); - const btVector3& planeNormal = staticPlaneShape->getPlaneNormal(); - btVector3 planeOrigin = planeNormal * planeConst; - btVector3 vec0,vec1; - btPlaneSpace1(planeNormal,vec0,vec1); - btScalar vecLen = 100.f; - btVector3 pt0 = planeOrigin + vec0*vecLen; - btVector3 pt1 = planeOrigin - vec0*vecLen; - btVector3 pt2 = planeOrigin + vec1*vecLen; - btVector3 pt3 = planeOrigin - vec1*vecLen; - getDebugDrawer()->drawLine(worldTransform*pt0,worldTransform*pt1,color); - getDebugDrawer()->drawLine(worldTransform*pt2,worldTransform*pt3,color); - break; - - } - default: - { - - if (shape->isConcave()) - { - btConcaveShape* concaveMesh = (btConcaveShape*) shape; - - ///@todo pass camera, for some culling? no -> we are not a graphics lib - btVector3 aabbMax(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); - btVector3 aabbMin(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); - - DebugDrawcallback drawCallback(getDebugDrawer(),worldTransform,color); - concaveMesh->processAllTriangles(&drawCallback,aabbMin,aabbMax); - - } - - if (shape->getShapeType() == CONVEX_TRIANGLEMESH_SHAPE_PROXYTYPE) - { - btConvexTriangleMeshShape* convexMesh = (btConvexTriangleMeshShape*) shape; - //todo: pass camera for some culling - btVector3 aabbMax(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); - btVector3 aabbMin(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); - //DebugDrawcallback drawCallback; - DebugDrawcallback drawCallback(getDebugDrawer(),worldTransform,color); - convexMesh->getMeshInterface()->InternalProcessAllTriangles(&drawCallback,aabbMin,aabbMax); - } - - - /// for polyhedral shapes - if (shape->isPolyhedral()) - { - btPolyhedralConvexShape* polyshape = (btPolyhedralConvexShape*) shape; - - int i; - for (i=0;igetNumEdges();i++) - { - btVector3 a,b; - polyshape->getEdge(i,a,b); - btVector3 wa = worldTransform * a; - btVector3 wb = worldTransform * b; - getDebugDrawer()->drawLine(wa,wb,color); - - } - - - } - } - } - } -} - - -void btCollisionWorld::debugDrawWorld() -{ - if (getDebugDrawer() && getDebugDrawer()->getDebugMode() & btIDebugDraw::DBG_DrawContactPoints) - { - int numManifolds = getDispatcher()->getNumManifolds(); - btVector3 color(0,0,0); - for (int i=0;igetManifoldByIndexInternal(i); - //btCollisionObject* obA = static_cast(contactManifold->getBody0()); - //btCollisionObject* obB = static_cast(contactManifold->getBody1()); - - int numContacts = contactManifold->getNumContacts(); - for (int j=0;jgetContactPoint(j); - getDebugDrawer()->drawContactPoint(cp.m_positionWorldOnB,cp.m_normalWorldOnB,cp.getDistance(),cp.getLifeTime(),color); - } - } - } - - if (getDebugDrawer() && getDebugDrawer()->getDebugMode() & (btIDebugDraw::DBG_DrawWireframe | btIDebugDraw::DBG_DrawAabb)) - { - int i; - - for ( i=0;igetCollisionFlags() & btCollisionObject::CF_DISABLE_VISUALIZE_OBJECT)==0) - { - if (getDebugDrawer() && getDebugDrawer()->getDebugMode() & btIDebugDraw::DBG_DrawWireframe) - { - btVector3 color(btScalar(1.),btScalar(1.),btScalar(1.)); - switch(colObj->getActivationState()) - { - case ACTIVE_TAG: - color = btVector3(btScalar(1.),btScalar(1.),btScalar(1.)); break; - case ISLAND_SLEEPING: - color = btVector3(btScalar(0.),btScalar(1.),btScalar(0.));break; - case WANTS_DEACTIVATION: - color = btVector3(btScalar(0.),btScalar(1.),btScalar(1.));break; - case DISABLE_DEACTIVATION: - color = btVector3(btScalar(1.),btScalar(0.),btScalar(0.));break; - case DISABLE_SIMULATION: - color = btVector3(btScalar(1.),btScalar(1.),btScalar(0.));break; - default: - { - color = btVector3(btScalar(1),btScalar(0.),btScalar(0.)); - } - }; - - debugDrawObject(colObj->getWorldTransform(),colObj->getCollisionShape(),color); - } - if (m_debugDrawer && (m_debugDrawer->getDebugMode() & btIDebugDraw::DBG_DrawAabb)) - { - btVector3 minAabb,maxAabb; - btVector3 colorvec(1,0,0); - colObj->getCollisionShape()->getAabb(colObj->getWorldTransform(), minAabb,maxAabb); - m_debugDrawer->drawAabb(minAabb,maxAabb,colorvec); - } - } - - } - } -} - - -void btCollisionWorld::serializeCollisionObjects(btSerializer* serializer) -{ - int i; - //serialize all collision objects - for (i=0;igetInternalType() == btCollisionObject::CO_COLLISION_OBJECT) - { - colObj->serializeSingleObject(serializer); - } - } - - ///keep track of shapes already serialized - btHashMap serializedShapes; - - for (i=0;igetCollisionShape(); - - if (!serializedShapes.find(shape)) - { - serializedShapes.insert(shape,shape); - shape->serializeSingleShape(serializer); - } - } - -} - - -void btCollisionWorld::serialize(btSerializer* serializer) -{ - - serializer->startSerialization(); - - serializeCollisionObjects(serializer); - - serializer->finishSerialization(); -} - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionWorld.h b/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionWorld.h deleted file mode 100644 index 0bb34b375c6..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btCollisionWorld.h +++ /dev/null @@ -1,470 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://bulletphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -/** - * @mainpage Bullet Documentation - * - * @section intro_sec Introduction - * Bullet Collision Detection & Physics SDK - * - * Bullet is a Collision Detection and Rigid Body Dynamics Library. The Library is Open Source and free for commercial use, under the ZLib license ( http://opensource.org/licenses/zlib-license.php ). - * - * The main documentation is Bullet_User_Manual.pdf, included in the source code distribution. - * There is the Physics Forum for feedback and general Collision Detection and Physics discussions. - * Please visit http://www.bulletphysics.com - * - * @section install_sec Installation - * - * @subsection step1 Step 1: Download - * You can download the Bullet Physics Library from the Google Code repository: http://code.google.com/p/bullet/downloads/list - * - * @subsection step2 Step 2: Building - * Bullet main build system for all platforms is cmake, you can download http://www.cmake.org - * cmake can autogenerate projectfiles for Microsoft Visual Studio, Apple Xcode, KDevelop and Unix Makefiles. - * The easiest is to run the CMake cmake-gui graphical user interface and choose the options and generate projectfiles. - * You can also use cmake in the command-line. Here are some examples for various platforms: - * cmake . -G "Visual Studio 9 2008" - * cmake . -G Xcode - * cmake . -G "Unix Makefiles" - * Although cmake is recommended, you can also use autotools for UNIX: ./autogen.sh ./configure to create a Makefile and then run make. - * - * @subsection step3 Step 3: Testing demos - * Try to run and experiment with BasicDemo executable as a starting point. - * Bullet can be used in several ways, as Full Rigid Body simulation, as Collision Detector Library or Low Level / Snippets like the GJK Closest Point calculation. - * The Dependencies can be seen in this documentation under Directories - * - * @subsection step4 Step 4: Integrating in your application, full Rigid Body and Soft Body simulation - * Check out BasicDemo how to create a btDynamicsWorld, btRigidBody and btCollisionShape, Stepping the simulation and synchronizing your graphics object transform. - * Check out SoftDemo how to use soft body dynamics, using btSoftRigidDynamicsWorld. - * @subsection step5 Step 5 : Integrate the Collision Detection Library (without Dynamics and other Extras) - * Bullet Collision Detection can also be used without the Dynamics/Extras. - * Check out btCollisionWorld and btCollisionObject, and the CollisionInterfaceDemo. - * @subsection step6 Step 6 : Use Snippets like the GJK Closest Point calculation. - * Bullet has been designed in a modular way keeping dependencies to a minimum. The ConvexHullDistance demo demonstrates direct use of btGjkPairDetector. - * - * @section copyright Copyright - * For up-to-data information and copyright and contributors list check out the Bullet_User_Manual.pdf - * - */ - - - -#ifndef COLLISION_WORLD_H -#define COLLISION_WORLD_H - -class btStackAlloc; -class btCollisionShape; -class btConvexShape; -class btBroadphaseInterface; -class btSerializer; - -#include "LinearMath/btVector3.h" -#include "LinearMath/btTransform.h" -#include "btCollisionObject.h" -#include "btCollisionDispatcher.h" -#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h" -#include "LinearMath/btAlignedObjectArray.h" - -///CollisionWorld is interface and container for the collision detection -class btCollisionWorld -{ - - -protected: - - btAlignedObjectArray m_collisionObjects; - - btDispatcher* m_dispatcher1; - - btDispatcherInfo m_dispatchInfo; - - btStackAlloc* m_stackAlloc; - - btBroadphaseInterface* m_broadphasePairCache; - - btIDebugDraw* m_debugDrawer; - - ///m_forceUpdateAllAabbs can be set to false as an optimization to only update active object AABBs - ///it is true by default, because it is error-prone (setting the position of static objects wouldn't update their AABB) - bool m_forceUpdateAllAabbs; - - void serializeCollisionObjects(btSerializer* serializer); - -public: - - //this constructor doesn't own the dispatcher and paircache/broadphase - btCollisionWorld(btDispatcher* dispatcher,btBroadphaseInterface* broadphasePairCache, btCollisionConfiguration* collisionConfiguration); - - virtual ~btCollisionWorld(); - - void setBroadphase(btBroadphaseInterface* pairCache) - { - m_broadphasePairCache = pairCache; - } - - const btBroadphaseInterface* getBroadphase() const - { - return m_broadphasePairCache; - } - - btBroadphaseInterface* getBroadphase() - { - return m_broadphasePairCache; - } - - btOverlappingPairCache* getPairCache() - { - return m_broadphasePairCache->getOverlappingPairCache(); - } - - - btDispatcher* getDispatcher() - { - return m_dispatcher1; - } - - const btDispatcher* getDispatcher() const - { - return m_dispatcher1; - } - - void updateSingleAabb(btCollisionObject* colObj); - - virtual void updateAabbs(); - - virtual void setDebugDrawer(btIDebugDraw* debugDrawer) - { - m_debugDrawer = debugDrawer; - } - - virtual btIDebugDraw* getDebugDrawer() - { - return m_debugDrawer; - } - - virtual void debugDrawWorld(); - - virtual void debugDrawObject(const btTransform& worldTransform, const btCollisionShape* shape, const btVector3& color); - - - ///LocalShapeInfo gives extra information for complex shapes - ///Currently, only btTriangleMeshShape is available, so it just contains triangleIndex and subpart - struct LocalShapeInfo - { - int m_shapePart; - int m_triangleIndex; - - //const btCollisionShape* m_shapeTemp; - //const btTransform* m_shapeLocalTransform; - }; - - struct LocalRayResult - { - LocalRayResult(btCollisionObject* collisionObject, - LocalShapeInfo* localShapeInfo, - const btVector3& hitNormalLocal, - btScalar hitFraction) - :m_collisionObject(collisionObject), - m_localShapeInfo(localShapeInfo), - m_hitNormalLocal(hitNormalLocal), - m_hitFraction(hitFraction) - { - } - - btCollisionObject* m_collisionObject; - LocalShapeInfo* m_localShapeInfo; - btVector3 m_hitNormalLocal; - btScalar m_hitFraction; - - }; - - ///RayResultCallback is used to report new raycast results - struct RayResultCallback - { - btScalar m_closestHitFraction; - btCollisionObject* m_collisionObject; - short int m_collisionFilterGroup; - short int m_collisionFilterMask; - //@BP Mod - Custom flags, currently used to enable backface culling on tri-meshes, see btRaycastCallback - unsigned int m_flags; - - virtual ~RayResultCallback() - { - } - bool hasHit() const - { - return (m_collisionObject != 0); - } - - RayResultCallback() - :m_closestHitFraction(btScalar(1.)), - m_collisionObject(0), - m_collisionFilterGroup(btBroadphaseProxy::DefaultFilter), - m_collisionFilterMask(btBroadphaseProxy::AllFilter), - //@BP Mod - m_flags(0) - { - } - - virtual bool needsCollision(btBroadphaseProxy* proxy0) const - { - bool collides = (proxy0->m_collisionFilterGroup & m_collisionFilterMask) != 0; - collides = collides && (m_collisionFilterGroup & proxy0->m_collisionFilterMask); - return collides; - } - - - virtual btScalar addSingleResult(LocalRayResult& rayResult,bool normalInWorldSpace) = 0; - }; - - struct ClosestRayResultCallback : public RayResultCallback - { - ClosestRayResultCallback(const btVector3& rayFromWorld,const btVector3& rayToWorld) - :m_rayFromWorld(rayFromWorld), - m_rayToWorld(rayToWorld) - { - } - - btVector3 m_rayFromWorld;//used to calculate hitPointWorld from hitFraction - btVector3 m_rayToWorld; - - btVector3 m_hitNormalWorld; - btVector3 m_hitPointWorld; - - virtual btScalar addSingleResult(LocalRayResult& rayResult,bool normalInWorldSpace) - { - //caller already does the filter on the m_closestHitFraction - btAssert(rayResult.m_hitFraction <= m_closestHitFraction); - - m_closestHitFraction = rayResult.m_hitFraction; - m_collisionObject = rayResult.m_collisionObject; - if (normalInWorldSpace) - { - m_hitNormalWorld = rayResult.m_hitNormalLocal; - } else - { - ///need to transform normal into worldspace - m_hitNormalWorld = m_collisionObject->getWorldTransform().getBasis()*rayResult.m_hitNormalLocal; - } - m_hitPointWorld.setInterpolate3(m_rayFromWorld,m_rayToWorld,rayResult.m_hitFraction); - return rayResult.m_hitFraction; - } - }; - - - struct LocalConvexResult - { - LocalConvexResult(btCollisionObject* hitCollisionObject, - LocalShapeInfo* localShapeInfo, - const btVector3& hitNormalLocal, - const btVector3& hitPointLocal, - btScalar hitFraction - ) - :m_hitCollisionObject(hitCollisionObject), - m_localShapeInfo(localShapeInfo), - m_hitNormalLocal(hitNormalLocal), - m_hitPointLocal(hitPointLocal), - m_hitFraction(hitFraction) - { - } - - btCollisionObject* m_hitCollisionObject; - LocalShapeInfo* m_localShapeInfo; - btVector3 m_hitNormalLocal; - btVector3 m_hitPointLocal; - btScalar m_hitFraction; - }; - - ///RayResultCallback is used to report new raycast results - struct ConvexResultCallback - { - btScalar m_closestHitFraction; - short int m_collisionFilterGroup; - short int m_collisionFilterMask; - - ConvexResultCallback() - :m_closestHitFraction(btScalar(1.)), - m_collisionFilterGroup(btBroadphaseProxy::DefaultFilter), - m_collisionFilterMask(btBroadphaseProxy::AllFilter) - { - } - - virtual ~ConvexResultCallback() - { - } - - bool hasHit() const - { - return (m_closestHitFraction < btScalar(1.)); - } - - - - virtual bool needsCollision(btBroadphaseProxy* proxy0) const - { - bool collides = (proxy0->m_collisionFilterGroup & m_collisionFilterMask) != 0; - collides = collides && (m_collisionFilterGroup & proxy0->m_collisionFilterMask); - return collides; - } - - virtual btScalar addSingleResult(LocalConvexResult& convexResult,bool normalInWorldSpace) = 0; - }; - - struct ClosestConvexResultCallback : public ConvexResultCallback - { - ClosestConvexResultCallback(const btVector3& convexFromWorld,const btVector3& convexToWorld) - :m_convexFromWorld(convexFromWorld), - m_convexToWorld(convexToWorld), - m_hitCollisionObject(0) - { - } - - btVector3 m_convexFromWorld;//used to calculate hitPointWorld from hitFraction - btVector3 m_convexToWorld; - - btVector3 m_hitNormalWorld; - btVector3 m_hitPointWorld; - btCollisionObject* m_hitCollisionObject; - - virtual btScalar addSingleResult(LocalConvexResult& convexResult,bool normalInWorldSpace) - { -//caller already does the filter on the m_closestHitFraction - btAssert(convexResult.m_hitFraction <= m_closestHitFraction); - - m_closestHitFraction = convexResult.m_hitFraction; - m_hitCollisionObject = convexResult.m_hitCollisionObject; - if (normalInWorldSpace) - { - m_hitNormalWorld = convexResult.m_hitNormalLocal; - } else - { - ///need to transform normal into worldspace - m_hitNormalWorld = m_hitCollisionObject->getWorldTransform().getBasis()*convexResult.m_hitNormalLocal; - } - m_hitPointWorld = convexResult.m_hitPointLocal; - return convexResult.m_hitFraction; - } - }; - - ///ContactResultCallback is used to report contact points - struct ContactResultCallback - { - short int m_collisionFilterGroup; - short int m_collisionFilterMask; - - ContactResultCallback() - :m_collisionFilterGroup(btBroadphaseProxy::DefaultFilter), - m_collisionFilterMask(btBroadphaseProxy::AllFilter) - { - } - - virtual ~ContactResultCallback() - { - } - - virtual bool needsCollision(btBroadphaseProxy* proxy0) const - { - bool collides = (proxy0->m_collisionFilterGroup & m_collisionFilterMask) != 0; - collides = collides && (m_collisionFilterGroup & proxy0->m_collisionFilterMask); - return collides; - } - - virtual btScalar addSingleResult(btManifoldPoint& cp, const btCollisionObject* colObj0,int partId0,int index0,const btCollisionObject* colObj1,int partId1,int index1) = 0; - }; - - - - int getNumCollisionObjects() const - { - return int(m_collisionObjects.size()); - } - - /// rayTest performs a raycast on all objects in the btCollisionWorld, and calls the resultCallback - /// This allows for several queries: first hit, all hits, any hit, dependent on the value returned by the callback. - virtual void rayTest(const btVector3& rayFromWorld, const btVector3& rayToWorld, RayResultCallback& resultCallback) const; - - /// convexTest performs a swept convex cast on all objects in the btCollisionWorld, and calls the resultCallback - /// This allows for several queries: first hit, all hits, any hit, dependent on the value return by the callback. - void convexSweepTest (const btConvexShape* castShape, const btTransform& from, const btTransform& to, ConvexResultCallback& resultCallback, btScalar allowedCcdPenetration = btScalar(0.)) const; - - ///contactTest performs a discrete collision test between colObj against all objects in the btCollisionWorld, and calls the resultCallback. - ///it reports one or more contact points for every overlapping object (including the one with deepest penetration) - void contactTest(btCollisionObject* colObj, ContactResultCallback& resultCallback); - - ///contactTest performs a discrete collision test between two collision objects and calls the resultCallback if overlap if detected. - ///it reports one or more contact points (including the one with deepest penetration) - void contactPairTest(btCollisionObject* colObjA, btCollisionObject* colObjB, ContactResultCallback& resultCallback); - - - /// rayTestSingle performs a raycast call and calls the resultCallback. It is used internally by rayTest. - /// In a future implementation, we consider moving the ray test as a virtual method in btCollisionShape. - /// This allows more customization. - static void rayTestSingle(const btTransform& rayFromTrans,const btTransform& rayToTrans, - btCollisionObject* collisionObject, - const btCollisionShape* collisionShape, - const btTransform& colObjWorldTransform, - RayResultCallback& resultCallback); - - /// objectQuerySingle performs a collision detection query and calls the resultCallback. It is used internally by rayTest. - static void objectQuerySingle(const btConvexShape* castShape, const btTransform& rayFromTrans,const btTransform& rayToTrans, - btCollisionObject* collisionObject, - const btCollisionShape* collisionShape, - const btTransform& colObjWorldTransform, - ConvexResultCallback& resultCallback, btScalar allowedPenetration); - - virtual void addCollisionObject(btCollisionObject* collisionObject,short int collisionFilterGroup=btBroadphaseProxy::DefaultFilter,short int collisionFilterMask=btBroadphaseProxy::AllFilter); - - btCollisionObjectArray& getCollisionObjectArray() - { - return m_collisionObjects; - } - - const btCollisionObjectArray& getCollisionObjectArray() const - { - return m_collisionObjects; - } - - - virtual void removeCollisionObject(btCollisionObject* collisionObject); - - virtual void performDiscreteCollisionDetection(); - - btDispatcherInfo& getDispatchInfo() - { - return m_dispatchInfo; - } - - const btDispatcherInfo& getDispatchInfo() const - { - return m_dispatchInfo; - } - - bool getForceUpdateAllAabbs() const - { - return m_forceUpdateAllAabbs; - } - void setForceUpdateAllAabbs( bool forceUpdateAllAabbs) - { - m_forceUpdateAllAabbs = forceUpdateAllAabbs; - } - - ///Preliminary serialization test for Bullet 2.76. Loading those files requires a separate parser (Bullet/Demos/SerializeDemo) - virtual void serialize(btSerializer* serializer); - -}; - - -#endif //COLLISION_WORLD_H diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp deleted file mode 100644 index 250c6badcd4..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp +++ /dev/null @@ -1,351 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "BulletCollision/CollisionShapes/btCompoundShape.h" -#include "BulletCollision/BroadphaseCollision/btDbvt.h" -#include "LinearMath/btIDebugDraw.h" -#include "LinearMath/btAabbUtil2.h" -#include "btManifoldResult.h" - -btCompoundCollisionAlgorithm::btCompoundCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped) -:btActivatingCollisionAlgorithm(ci,body0,body1), -m_isSwapped(isSwapped), -m_sharedManifold(ci.m_manifold) -{ - m_ownsManifold = false; - - btCollisionObject* colObj = m_isSwapped? body1 : body0; - btAssert (colObj->getCollisionShape()->isCompound()); - - btCompoundShape* compoundShape = static_cast(colObj->getCollisionShape()); - m_compoundShapeRevision = compoundShape->getUpdateRevision(); - - preallocateChildAlgorithms(body0,body1); -} - -void btCompoundCollisionAlgorithm::preallocateChildAlgorithms(btCollisionObject* body0,btCollisionObject* body1) -{ - btCollisionObject* colObj = m_isSwapped? body1 : body0; - btCollisionObject* otherObj = m_isSwapped? body0 : body1; - btAssert (colObj->getCollisionShape()->isCompound()); - - btCompoundShape* compoundShape = static_cast(colObj->getCollisionShape()); - - int numChildren = compoundShape->getNumChildShapes(); - int i; - - m_childCollisionAlgorithms.resize(numChildren); - for (i=0;igetDynamicAabbTree()) - { - m_childCollisionAlgorithms[i] = 0; - } else - { - btCollisionShape* tmpShape = colObj->getCollisionShape(); - btCollisionShape* childShape = compoundShape->getChildShape(i); - colObj->internalSetTemporaryCollisionShape( childShape ); - m_childCollisionAlgorithms[i] = m_dispatcher->findAlgorithm(colObj,otherObj,m_sharedManifold); - colObj->internalSetTemporaryCollisionShape( tmpShape ); - } - } -} - -void btCompoundCollisionAlgorithm::removeChildAlgorithms() -{ - int numChildren = m_childCollisionAlgorithms.size(); - int i; - for (i=0;i~btCollisionAlgorithm(); - m_dispatcher->freeCollisionAlgorithm(m_childCollisionAlgorithms[i]); - } - } -} - -btCompoundCollisionAlgorithm::~btCompoundCollisionAlgorithm() -{ - removeChildAlgorithms(); -} - - - - -struct btCompoundLeafCallback : btDbvt::ICollide -{ - -public: - - btCollisionObject* m_compoundColObj; - btCollisionObject* m_otherObj; - btDispatcher* m_dispatcher; - const btDispatcherInfo& m_dispatchInfo; - btManifoldResult* m_resultOut; - btCollisionAlgorithm** m_childCollisionAlgorithms; - btPersistentManifold* m_sharedManifold; - - - - - btCompoundLeafCallback (btCollisionObject* compoundObj,btCollisionObject* otherObj,btDispatcher* dispatcher,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut,btCollisionAlgorithm** childCollisionAlgorithms,btPersistentManifold* sharedManifold) - :m_compoundColObj(compoundObj),m_otherObj(otherObj),m_dispatcher(dispatcher),m_dispatchInfo(dispatchInfo),m_resultOut(resultOut), - m_childCollisionAlgorithms(childCollisionAlgorithms), - m_sharedManifold(sharedManifold) - { - - } - - - void ProcessChildShape(btCollisionShape* childShape,int index) - { - - btCompoundShape* compoundShape = static_cast(m_compoundColObj->getCollisionShape()); - - - //backup - btTransform orgTrans = m_compoundColObj->getWorldTransform(); - btTransform orgInterpolationTrans = m_compoundColObj->getInterpolationWorldTransform(); - const btTransform& childTrans = compoundShape->getChildTransform(index); - btTransform newChildWorldTrans = orgTrans*childTrans ; - - //perform an AABB check first - btVector3 aabbMin0,aabbMax0,aabbMin1,aabbMax1; - childShape->getAabb(newChildWorldTrans,aabbMin0,aabbMax0); - m_otherObj->getCollisionShape()->getAabb(m_otherObj->getWorldTransform(),aabbMin1,aabbMax1); - - if (TestAabbAgainstAabb2(aabbMin0,aabbMax0,aabbMin1,aabbMax1)) - { - - m_compoundColObj->setWorldTransform( newChildWorldTrans); - m_compoundColObj->setInterpolationWorldTransform(newChildWorldTrans); - - //the contactpoint is still projected back using the original inverted worldtrans - btCollisionShape* tmpShape = m_compoundColObj->getCollisionShape(); - m_compoundColObj->internalSetTemporaryCollisionShape( childShape ); - - if (!m_childCollisionAlgorithms[index]) - m_childCollisionAlgorithms[index] = m_dispatcher->findAlgorithm(m_compoundColObj,m_otherObj,m_sharedManifold); - - ///detect swapping case - if (m_resultOut->getBody0Internal() == m_compoundColObj) - { - m_resultOut->setShapeIdentifiersA(-1,index); - } else - { - m_resultOut->setShapeIdentifiersB(-1,index); - } - - m_childCollisionAlgorithms[index]->processCollision(m_compoundColObj,m_otherObj,m_dispatchInfo,m_resultOut); - if (m_dispatchInfo.m_debugDraw && (m_dispatchInfo.m_debugDraw->getDebugMode() & btIDebugDraw::DBG_DrawAabb)) - { - btVector3 worldAabbMin,worldAabbMax; - m_dispatchInfo.m_debugDraw->drawAabb(aabbMin0,aabbMax0,btVector3(1,1,1)); - m_dispatchInfo.m_debugDraw->drawAabb(aabbMin1,aabbMax1,btVector3(1,1,1)); - } - - //revert back transform - m_compoundColObj->internalSetTemporaryCollisionShape( tmpShape); - m_compoundColObj->setWorldTransform( orgTrans ); - m_compoundColObj->setInterpolationWorldTransform(orgInterpolationTrans); - } - } - void Process(const btDbvtNode* leaf) - { - int index = leaf->dataAsInt; - - btCompoundShape* compoundShape = static_cast(m_compoundColObj->getCollisionShape()); - btCollisionShape* childShape = compoundShape->getChildShape(index); - if (m_dispatchInfo.m_debugDraw && (m_dispatchInfo.m_debugDraw->getDebugMode() & btIDebugDraw::DBG_DrawAabb)) - { - btVector3 worldAabbMin,worldAabbMax; - btTransform orgTrans = m_compoundColObj->getWorldTransform(); - btTransformAabb(leaf->volume.Mins(),leaf->volume.Maxs(),0.,orgTrans,worldAabbMin,worldAabbMax); - m_dispatchInfo.m_debugDraw->drawAabb(worldAabbMin,worldAabbMax,btVector3(1,0,0)); - } - ProcessChildShape(childShape,index); - - } -}; - - - - - - -void btCompoundCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - btCollisionObject* colObj = m_isSwapped? body1 : body0; - btCollisionObject* otherObj = m_isSwapped? body0 : body1; - - - - btAssert (colObj->getCollisionShape()->isCompound()); - btCompoundShape* compoundShape = static_cast(colObj->getCollisionShape()); - - ///btCompoundShape might have changed: - ////make sure the internal child collision algorithm caches are still valid - if (compoundShape->getUpdateRevision() != m_compoundShapeRevision) - { - ///clear and update all - removeChildAlgorithms(); - - preallocateChildAlgorithms(body0,body1); - } - - - btDbvt* tree = compoundShape->getDynamicAabbTree(); - //use a dynamic aabb tree to cull potential child-overlaps - btCompoundLeafCallback callback(colObj,otherObj,m_dispatcher,dispatchInfo,resultOut,&m_childCollisionAlgorithms[0],m_sharedManifold); - - ///we need to refresh all contact manifolds - ///note that we should actually recursively traverse all children, btCompoundShape can nested more then 1 level deep - ///so we should add a 'refreshManifolds' in the btCollisionAlgorithm - { - int i; - btManifoldArray manifoldArray; - for (i=0;igetAllContactManifolds(manifoldArray); - for (int m=0;mgetNumContacts()) - { - resultOut->setPersistentManifold(manifoldArray[m]); - resultOut->refreshContactPoints(); - resultOut->setPersistentManifold(0);//??necessary? - } - } - manifoldArray.clear(); - } - } - } - - if (tree) - { - - btVector3 localAabbMin,localAabbMax; - btTransform otherInCompoundSpace; - otherInCompoundSpace = colObj->getWorldTransform().inverse() * otherObj->getWorldTransform(); - otherObj->getCollisionShape()->getAabb(otherInCompoundSpace,localAabbMin,localAabbMax); - - const ATTRIBUTE_ALIGNED16(btDbvtVolume) bounds=btDbvtVolume::FromMM(localAabbMin,localAabbMax); - //process all children, that overlap with the given AABB bounds - tree->collideTV(tree->m_root,bounds,callback); - - } else - { - //iterate over all children, perform an AABB check inside ProcessChildShape - int numChildren = m_childCollisionAlgorithms.size(); - int i; - for (i=0;igetChildShape(i),i); - } - } - - { - //iterate over all children, perform an AABB check inside ProcessChildShape - int numChildren = m_childCollisionAlgorithms.size(); - int i; - btManifoldArray manifoldArray; - - for (i=0;igetChildShape(i); - //if not longer overlapping, remove the algorithm - btTransform orgTrans = colObj->getWorldTransform(); - btTransform orgInterpolationTrans = colObj->getInterpolationWorldTransform(); - const btTransform& childTrans = compoundShape->getChildTransform(i); - btTransform newChildWorldTrans = orgTrans*childTrans ; - - //perform an AABB check first - btVector3 aabbMin0,aabbMax0,aabbMin1,aabbMax1; - childShape->getAabb(newChildWorldTrans,aabbMin0,aabbMax0); - otherObj->getCollisionShape()->getAabb(otherObj->getWorldTransform(),aabbMin1,aabbMax1); - - if (!TestAabbAgainstAabb2(aabbMin0,aabbMax0,aabbMin1,aabbMax1)) - { - m_childCollisionAlgorithms[i]->~btCollisionAlgorithm(); - m_dispatcher->freeCollisionAlgorithm(m_childCollisionAlgorithms[i]); - m_childCollisionAlgorithms[i] = 0; - } - - } - - } - - - - } -} - -btScalar btCompoundCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - - btCollisionObject* colObj = m_isSwapped? body1 : body0; - btCollisionObject* otherObj = m_isSwapped? body0 : body1; - - btAssert (colObj->getCollisionShape()->isCompound()); - - btCompoundShape* compoundShape = static_cast(colObj->getCollisionShape()); - - //We will use the OptimizedBVH, AABB tree to cull potential child-overlaps - //If both proxies are Compound, we will deal with that directly, by performing sequential/parallel tree traversals - //given Proxy0 and Proxy1, if both have a tree, Tree0 and Tree1, this means: - //determine overlapping nodes of Proxy1 using Proxy0 AABB against Tree1 - //then use each overlapping node AABB against Tree0 - //and vise versa. - - btScalar hitFraction = btScalar(1.); - - int numChildren = m_childCollisionAlgorithms.size(); - int i; - for (i=0;igetChildShape(i); - - //backup - btTransform orgTrans = colObj->getWorldTransform(); - - const btTransform& childTrans = compoundShape->getChildTransform(i); - //btTransform newChildWorldTrans = orgTrans*childTrans ; - colObj->setWorldTransform( orgTrans*childTrans ); - - btCollisionShape* tmpShape = colObj->getCollisionShape(); - colObj->internalSetTemporaryCollisionShape( childShape ); - btScalar frac = m_childCollisionAlgorithms[i]->calculateTimeOfImpact(colObj,otherObj,dispatchInfo,resultOut); - if (fracinternalSetTemporaryCollisionShape( tmpShape); - colObj->setWorldTransform( orgTrans); - } - return hitFraction; - -} - - - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h deleted file mode 100644 index 255e0af668c..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h +++ /dev/null @@ -1,86 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef COMPOUND_COLLISION_ALGORITHM_H -#define COMPOUND_COLLISION_ALGORITHM_H - -#include "btActivatingCollisionAlgorithm.h" -#include "BulletCollision/BroadphaseCollision/btDispatcher.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h" - -#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" -class btDispatcher; -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "btCollisionCreateFunc.h" -#include "LinearMath/btAlignedObjectArray.h" -class btDispatcher; -class btCollisionObject; - -/// btCompoundCollisionAlgorithm supports collision between CompoundCollisionShapes and other collision shapes -class btCompoundCollisionAlgorithm : public btActivatingCollisionAlgorithm -{ - btAlignedObjectArray m_childCollisionAlgorithms; - bool m_isSwapped; - - class btPersistentManifold* m_sharedManifold; - bool m_ownsManifold; - - int m_compoundShapeRevision;//to keep track of changes, so that childAlgorithm array can be updated - - void removeChildAlgorithms(); - - void preallocateChildAlgorithms(btCollisionObject* body0,btCollisionObject* body1); - -public: - - btCompoundCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped); - - virtual ~btCompoundCollisionAlgorithm(); - - virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual void getAllContactManifolds(btManifoldArray& manifoldArray) - { - int i; - for (i=0;igetAllContactManifolds(manifoldArray); - } - } - - struct CreateFunc :public btCollisionAlgorithmCreateFunc - { - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) - { - void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btCompoundCollisionAlgorithm)); - return new(mem) btCompoundCollisionAlgorithm(ci,body0,body1,false); - } - }; - - struct SwappedCreateFunc :public btCollisionAlgorithmCreateFunc - { - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) - { - void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btCompoundCollisionAlgorithm)); - return new(mem) btCompoundCollisionAlgorithm(ci,body0,body1,true); - } - }; - -}; - -#endif //COMPOUND_COLLISION_ALGORITHM_H diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp deleted file mode 100644 index db7f884ac82..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp +++ /dev/null @@ -1,247 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btConvex2dConvex2dAlgorithm.h" - -//#include -#include "BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "BulletCollision/CollisionShapes/btConvexShape.h" -#include "BulletCollision/CollisionShapes/btCapsuleShape.h" - - -#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" -#include "BulletCollision/CollisionShapes/btBoxShape.h" -#include "BulletCollision/CollisionDispatch/btManifoldResult.h" - -#include "BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h" -#include "BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h" -#include "BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h" - - - -#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h" -#include "BulletCollision/CollisionShapes/btSphereShape.h" - -#include "BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h" - -#include "BulletCollision/NarrowPhaseCollision/btGjkEpa2.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h" - - -btConvex2dConvex2dAlgorithm::CreateFunc::CreateFunc(btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver) -{ - m_numPerturbationIterations = 0; - m_minimumPointsPerturbationThreshold = 3; - m_simplexSolver = simplexSolver; - m_pdSolver = pdSolver; -} - -btConvex2dConvex2dAlgorithm::CreateFunc::~CreateFunc() -{ -} - -btConvex2dConvex2dAlgorithm::btConvex2dConvex2dAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver,int numPerturbationIterations, int minimumPointsPerturbationThreshold) -: btActivatingCollisionAlgorithm(ci,body0,body1), -m_simplexSolver(simplexSolver), -m_pdSolver(pdSolver), -m_ownManifold (false), -m_manifoldPtr(mf), -m_lowLevelOfDetail(false), - m_numPerturbationIterations(numPerturbationIterations), -m_minimumPointsPerturbationThreshold(minimumPointsPerturbationThreshold) -{ - (void)body0; - (void)body1; -} - - - - -btConvex2dConvex2dAlgorithm::~btConvex2dConvex2dAlgorithm() -{ - if (m_ownManifold) - { - if (m_manifoldPtr) - m_dispatcher->releaseManifold(m_manifoldPtr); - } -} - -void btConvex2dConvex2dAlgorithm ::setLowLevelOfDetail(bool useLowLevel) -{ - m_lowLevelOfDetail = useLowLevel; -} - - - -extern btScalar gContactBreakingThreshold; - - -// -// Convex-Convex collision algorithm -// -void btConvex2dConvex2dAlgorithm ::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - - if (!m_manifoldPtr) - { - //swapped? - m_manifoldPtr = m_dispatcher->getNewManifold(body0,body1); - m_ownManifold = true; - } - resultOut->setPersistentManifold(m_manifoldPtr); - - //comment-out next line to test multi-contact generation - //resultOut->getPersistentManifold()->clearManifold(); - - - btConvexShape* min0 = static_cast(body0->getCollisionShape()); - btConvexShape* min1 = static_cast(body1->getCollisionShape()); - - btVector3 normalOnB; - btVector3 pointOnBWorld; - - { - - - btGjkPairDetector::ClosestPointInput input; - - btGjkPairDetector gjkPairDetector(min0,min1,m_simplexSolver,m_pdSolver); - //TODO: if (dispatchInfo.m_useContinuous) - gjkPairDetector.setMinkowskiA(min0); - gjkPairDetector.setMinkowskiB(min1); - - { - input.m_maximumDistanceSquared = min0->getMargin() + min1->getMargin() + m_manifoldPtr->getContactBreakingThreshold(); - input.m_maximumDistanceSquared*= input.m_maximumDistanceSquared; - } - - input.m_stackAlloc = dispatchInfo.m_stackAllocator; - input.m_transformA = body0->getWorldTransform(); - input.m_transformB = body1->getWorldTransform(); - - gjkPairDetector.getClosestPoints(input,*resultOut,dispatchInfo.m_debugDraw); - - btVector3 v0,v1; - btVector3 sepNormalWorldSpace; - - } - - if (m_ownManifold) - { - resultOut->refreshContactPoints(); - } - -} - - - - -btScalar btConvex2dConvex2dAlgorithm::calculateTimeOfImpact(btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - (void)resultOut; - (void)dispatchInfo; - ///Rather then checking ALL pairs, only calculate TOI when motion exceeds threshold - - ///Linear motion for one of objects needs to exceed m_ccdSquareMotionThreshold - ///col0->m_worldTransform, - btScalar resultFraction = btScalar(1.); - - - btScalar squareMot0 = (col0->getInterpolationWorldTransform().getOrigin() - col0->getWorldTransform().getOrigin()).length2(); - btScalar squareMot1 = (col1->getInterpolationWorldTransform().getOrigin() - col1->getWorldTransform().getOrigin()).length2(); - - if (squareMot0 < col0->getCcdSquareMotionThreshold() && - squareMot1 < col1->getCcdSquareMotionThreshold()) - return resultFraction; - - - //An adhoc way of testing the Continuous Collision Detection algorithms - //One object is approximated as a sphere, to simplify things - //Starting in penetration should report no time of impact - //For proper CCD, better accuracy and handling of 'allowed' penetration should be added - //also the mainloop of the physics should have a kind of toi queue (something like Brian Mirtich's application of Timewarp for Rigidbodies) - - - /// Convex0 against sphere for Convex1 - { - btConvexShape* convex0 = static_cast(col0->getCollisionShape()); - - btSphereShape sphere1(col1->getCcdSweptSphereRadius()); //todo: allow non-zero sphere sizes, for better approximation - btConvexCast::CastResult result; - btVoronoiSimplexSolver voronoiSimplex; - //SubsimplexConvexCast ccd0(&sphere,min0,&voronoiSimplex); - ///Simplification, one object is simplified as a sphere - btGjkConvexCast ccd1( convex0 ,&sphere1,&voronoiSimplex); - //ContinuousConvexCollision ccd(min0,min1,&voronoiSimplex,0); - if (ccd1.calcTimeOfImpact(col0->getWorldTransform(),col0->getInterpolationWorldTransform(), - col1->getWorldTransform(),col1->getInterpolationWorldTransform(),result)) - { - - //store result.m_fraction in both bodies - - if (col0->getHitFraction()> result.m_fraction) - col0->setHitFraction( result.m_fraction ); - - if (col1->getHitFraction() > result.m_fraction) - col1->setHitFraction( result.m_fraction); - - if (resultFraction > result.m_fraction) - resultFraction = result.m_fraction; - - } - - - - - } - - /// Sphere (for convex0) against Convex1 - { - btConvexShape* convex1 = static_cast(col1->getCollisionShape()); - - btSphereShape sphere0(col0->getCcdSweptSphereRadius()); //todo: allow non-zero sphere sizes, for better approximation - btConvexCast::CastResult result; - btVoronoiSimplexSolver voronoiSimplex; - //SubsimplexConvexCast ccd0(&sphere,min0,&voronoiSimplex); - ///Simplification, one object is simplified as a sphere - btGjkConvexCast ccd1(&sphere0,convex1,&voronoiSimplex); - //ContinuousConvexCollision ccd(min0,min1,&voronoiSimplex,0); - if (ccd1.calcTimeOfImpact(col0->getWorldTransform(),col0->getInterpolationWorldTransform(), - col1->getWorldTransform(),col1->getInterpolationWorldTransform(),result)) - { - - //store result.m_fraction in both bodies - - if (col0->getHitFraction() > result.m_fraction) - col0->setHitFraction( result.m_fraction); - - if (col1->getHitFraction() > result.m_fraction) - col1->setHitFraction( result.m_fraction); - - if (resultFraction > result.m_fraction) - resultFraction = result.m_fraction; - - } - } - - return resultFraction; - -} - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h deleted file mode 100644 index 5738401401e..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h +++ /dev/null @@ -1,95 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef CONVEX_2D_CONVEX_2D_ALGORITHM_H -#define CONVEX_2D_CONVEX_2D_ALGORITHM_H - -#include "BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h" -#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h" -#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" -#include "LinearMath/btTransformUtil.h" //for btConvexSeparatingDistanceUtil - -class btConvexPenetrationDepthSolver; - - -///The convex2dConvex2dAlgorithm collision algorithm support 2d collision detection for btConvex2dShape -///Currently it requires the btMinkowskiPenetrationDepthSolver, it has support for 2d penetration depth computation -class btConvex2dConvex2dAlgorithm : public btActivatingCollisionAlgorithm -{ - btSimplexSolverInterface* m_simplexSolver; - btConvexPenetrationDepthSolver* m_pdSolver; - - - bool m_ownManifold; - btPersistentManifold* m_manifoldPtr; - bool m_lowLevelOfDetail; - - int m_numPerturbationIterations; - int m_minimumPointsPerturbationThreshold; - -public: - - btConvex2dConvex2dAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1, btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver, int numPerturbationIterations, int minimumPointsPerturbationThreshold); - - - virtual ~btConvex2dConvex2dAlgorithm(); - - virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual void getAllContactManifolds(btManifoldArray& manifoldArray) - { - ///should we use m_ownManifold to avoid adding duplicates? - if (m_manifoldPtr && m_ownManifold) - manifoldArray.push_back(m_manifoldPtr); - } - - - void setLowLevelOfDetail(bool useLowLevel); - - - const btPersistentManifold* getManifold() - { - return m_manifoldPtr; - } - - struct CreateFunc :public btCollisionAlgorithmCreateFunc - { - - btConvexPenetrationDepthSolver* m_pdSolver; - btSimplexSolverInterface* m_simplexSolver; - int m_numPerturbationIterations; - int m_minimumPointsPerturbationThreshold; - - CreateFunc(btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver); - - virtual ~CreateFunc(); - - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) - { - void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvex2dConvex2dAlgorithm)); - return new(mem) btConvex2dConvex2dAlgorithm(ci.m_manifold,ci,body0,body1,m_simplexSolver,m_pdSolver,m_numPerturbationIterations,m_minimumPointsPerturbationThreshold); - } - }; - - -}; - -#endif //CONVEX_2D_CONVEX_2D_ALGORITHM_H diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp deleted file mode 100644 index 268ec4b6c7e..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp +++ /dev/null @@ -1,321 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btConvexConcaveCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "BulletCollision/CollisionShapes/btMultiSphereShape.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/CollisionShapes/btConcaveShape.h" -#include "BulletCollision/CollisionDispatch/btManifoldResult.h" -#include "BulletCollision/NarrowPhaseCollision/btRaycastCallback.h" -#include "BulletCollision/CollisionShapes/btTriangleShape.h" -#include "BulletCollision/CollisionShapes/btSphereShape.h" -#include "LinearMath/btIDebugDraw.h" -#include "BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h" - -btConvexConcaveCollisionAlgorithm::btConvexConcaveCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1,bool isSwapped) -: btActivatingCollisionAlgorithm(ci,body0,body1), -m_isSwapped(isSwapped), -m_btConvexTriangleCallback(ci.m_dispatcher1,body0,body1,isSwapped) -{ -} - -btConvexConcaveCollisionAlgorithm::~btConvexConcaveCollisionAlgorithm() -{ -} - -void btConvexConcaveCollisionAlgorithm::getAllContactManifolds(btManifoldArray& manifoldArray) -{ - if (m_btConvexTriangleCallback.m_manifoldPtr) - { - manifoldArray.push_back(m_btConvexTriangleCallback.m_manifoldPtr); - } -} - - -btConvexTriangleCallback::btConvexTriangleCallback(btDispatcher* dispatcher,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped): - m_dispatcher(dispatcher), - m_dispatchInfoPtr(0) -{ - m_convexBody = isSwapped? body1:body0; - m_triBody = isSwapped? body0:body1; - - // - // create the manifold from the dispatcher 'manifold pool' - // - m_manifoldPtr = m_dispatcher->getNewManifold(m_convexBody,m_triBody); - - clearCache(); -} - -btConvexTriangleCallback::~btConvexTriangleCallback() -{ - clearCache(); - m_dispatcher->releaseManifold( m_manifoldPtr ); - -} - - -void btConvexTriangleCallback::clearCache() -{ - m_dispatcher->clearManifold(m_manifoldPtr); -} - - - -void btConvexTriangleCallback::processTriangle(btVector3* triangle,int partId, int triangleIndex) -{ - - //just for debugging purposes - //printf("triangle %d",m_triangleCount++); - - - //aabb filter is already applied! - - btCollisionAlgorithmConstructionInfo ci; - ci.m_dispatcher1 = m_dispatcher; - - btCollisionObject* ob = static_cast(m_triBody); - - - - ///debug drawing of the overlapping triangles - if (m_dispatchInfoPtr && m_dispatchInfoPtr->m_debugDraw && (m_dispatchInfoPtr->m_debugDraw->getDebugMode() &btIDebugDraw::DBG_DrawWireframe )) - { - btVector3 color(1,1,0); - btTransform& tr = ob->getWorldTransform(); - m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[0]),tr(triangle[1]),color); - m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[1]),tr(triangle[2]),color); - m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[2]),tr(triangle[0]),color); - - //btVector3 center = triangle[0] + triangle[1]+triangle[2]; - //center *= btScalar(0.333333); - //m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[0]),tr(center),color); - //m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[1]),tr(center),color); - //m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[2]),tr(center),color); - - } - - - //btCollisionObject* colObj = static_cast(m_convexProxy->m_clientObject); - - if (m_convexBody->getCollisionShape()->isConvex()) - { - btTriangleShape tm(triangle[0],triangle[1],triangle[2]); - tm.setMargin(m_collisionMarginTriangle); - - btCollisionShape* tmpShape = ob->getCollisionShape(); - ob->internalSetTemporaryCollisionShape( &tm ); - - btCollisionAlgorithm* colAlgo = ci.m_dispatcher1->findAlgorithm(m_convexBody,m_triBody,m_manifoldPtr); - - if (m_resultOut->getBody0Internal() == m_triBody) - { - m_resultOut->setShapeIdentifiersA(partId,triangleIndex); - } - else - { - m_resultOut->setShapeIdentifiersB(partId,triangleIndex); - } - - colAlgo->processCollision(m_convexBody,m_triBody,*m_dispatchInfoPtr,m_resultOut); - colAlgo->~btCollisionAlgorithm(); - ci.m_dispatcher1->freeCollisionAlgorithm(colAlgo); - ob->internalSetTemporaryCollisionShape( tmpShape); - } - - -} - - - -void btConvexTriangleCallback::setTimeStepAndCounters(btScalar collisionMarginTriangle,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - m_dispatchInfoPtr = &dispatchInfo; - m_collisionMarginTriangle = collisionMarginTriangle; - m_resultOut = resultOut; - - //recalc aabbs - btTransform convexInTriangleSpace; - convexInTriangleSpace = m_triBody->getWorldTransform().inverse() * m_convexBody->getWorldTransform(); - btCollisionShape* convexShape = static_cast(m_convexBody->getCollisionShape()); - //CollisionShape* triangleShape = static_cast(triBody->m_collisionShape); - convexShape->getAabb(convexInTriangleSpace,m_aabbMin,m_aabbMax); - btScalar extraMargin = collisionMarginTriangle; - btVector3 extra(extraMargin,extraMargin,extraMargin); - - m_aabbMax += extra; - m_aabbMin -= extra; - -} - -void btConvexConcaveCollisionAlgorithm::clearCache() -{ - m_btConvexTriangleCallback.clearCache(); - -} - -void btConvexConcaveCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - - - btCollisionObject* convexBody = m_isSwapped ? body1 : body0; - btCollisionObject* triBody = m_isSwapped ? body0 : body1; - - if (triBody->getCollisionShape()->isConcave()) - { - - - btCollisionObject* triOb = triBody; - btConcaveShape* concaveShape = static_cast( triOb->getCollisionShape()); - - if (convexBody->getCollisionShape()->isConvex()) - { - btScalar collisionMarginTriangle = concaveShape->getMargin(); - - resultOut->setPersistentManifold(m_btConvexTriangleCallback.m_manifoldPtr); - m_btConvexTriangleCallback.setTimeStepAndCounters(collisionMarginTriangle,dispatchInfo,resultOut); - - //Disable persistency. previously, some older algorithm calculated all contacts in one go, so you can clear it here. - //m_dispatcher->clearManifold(m_btConvexTriangleCallback.m_manifoldPtr); - - m_btConvexTriangleCallback.m_manifoldPtr->setBodies(convexBody,triBody); - - concaveShape->processAllTriangles( &m_btConvexTriangleCallback,m_btConvexTriangleCallback.getAabbMin(),m_btConvexTriangleCallback.getAabbMax()); - - resultOut->refreshContactPoints(); - - } - - } - -} - - -btScalar btConvexConcaveCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - (void)resultOut; - (void)dispatchInfo; - btCollisionObject* convexbody = m_isSwapped ? body1 : body0; - btCollisionObject* triBody = m_isSwapped ? body0 : body1; - - - //quick approximation using raycast, todo: hook up to the continuous collision detection (one of the btConvexCast) - - //only perform CCD above a certain threshold, this prevents blocking on the long run - //because object in a blocked ccd state (hitfraction<1) get their linear velocity halved each frame... - btScalar squareMot0 = (convexbody->getInterpolationWorldTransform().getOrigin() - convexbody->getWorldTransform().getOrigin()).length2(); - if (squareMot0 < convexbody->getCcdSquareMotionThreshold()) - { - return btScalar(1.); - } - - //const btVector3& from = convexbody->m_worldTransform.getOrigin(); - //btVector3 to = convexbody->m_interpolationWorldTransform.getOrigin(); - //todo: only do if the motion exceeds the 'radius' - - btTransform triInv = triBody->getWorldTransform().inverse(); - btTransform convexFromLocal = triInv * convexbody->getWorldTransform(); - btTransform convexToLocal = triInv * convexbody->getInterpolationWorldTransform(); - - struct LocalTriangleSphereCastCallback : public btTriangleCallback - { - btTransform m_ccdSphereFromTrans; - btTransform m_ccdSphereToTrans; - btTransform m_meshTransform; - - btScalar m_ccdSphereRadius; - btScalar m_hitFraction; - - - LocalTriangleSphereCastCallback(const btTransform& from,const btTransform& to,btScalar ccdSphereRadius,btScalar hitFraction) - :m_ccdSphereFromTrans(from), - m_ccdSphereToTrans(to), - m_ccdSphereRadius(ccdSphereRadius), - m_hitFraction(hitFraction) - { - } - - - virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex) - { - (void)partId; - (void)triangleIndex; - //do a swept sphere for now - btTransform ident; - ident.setIdentity(); - btConvexCast::CastResult castResult; - castResult.m_fraction = m_hitFraction; - btSphereShape pointShape(m_ccdSphereRadius); - btTriangleShape triShape(triangle[0],triangle[1],triangle[2]); - btVoronoiSimplexSolver simplexSolver; - btSubsimplexConvexCast convexCaster(&pointShape,&triShape,&simplexSolver); - //GjkConvexCast convexCaster(&pointShape,convexShape,&simplexSolver); - //ContinuousConvexCollision convexCaster(&pointShape,convexShape,&simplexSolver,0); - //local space? - - if (convexCaster.calcTimeOfImpact(m_ccdSphereFromTrans,m_ccdSphereToTrans, - ident,ident,castResult)) - { - if (m_hitFraction > castResult.m_fraction) - m_hitFraction = castResult.m_fraction; - } - - } - - }; - - - - - - if (triBody->getCollisionShape()->isConcave()) - { - btVector3 rayAabbMin = convexFromLocal.getOrigin(); - rayAabbMin.setMin(convexToLocal.getOrigin()); - btVector3 rayAabbMax = convexFromLocal.getOrigin(); - rayAabbMax.setMax(convexToLocal.getOrigin()); - btScalar ccdRadius0 = convexbody->getCcdSweptSphereRadius(); - rayAabbMin -= btVector3(ccdRadius0,ccdRadius0,ccdRadius0); - rayAabbMax += btVector3(ccdRadius0,ccdRadius0,ccdRadius0); - - btScalar curHitFraction = btScalar(1.); //is this available? - LocalTriangleSphereCastCallback raycastCallback(convexFromLocal,convexToLocal, - convexbody->getCcdSweptSphereRadius(),curHitFraction); - - raycastCallback.m_hitFraction = convexbody->getHitFraction(); - - btCollisionObject* concavebody = triBody; - - btConcaveShape* triangleMesh = (btConcaveShape*) concavebody->getCollisionShape(); - - if (triangleMesh) - { - triangleMesh->processAllTriangles(&raycastCallback,rayAabbMin,rayAabbMax); - } - - - - if (raycastCallback.m_hitFraction < convexbody->getHitFraction()) - { - convexbody->setHitFraction( raycastCallback.m_hitFraction); - return raycastCallback.m_hitFraction; - } - } - - return btScalar(1.); - -} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h deleted file mode 100644 index 984a4c39e8e..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h +++ /dev/null @@ -1,116 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef CONVEX_CONCAVE_COLLISION_ALGORITHM_H -#define CONVEX_CONCAVE_COLLISION_ALGORITHM_H - -#include "btActivatingCollisionAlgorithm.h" -#include "BulletCollision/BroadphaseCollision/btDispatcher.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h" -#include "BulletCollision/CollisionShapes/btTriangleCallback.h" -#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" -class btDispatcher; -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "btCollisionCreateFunc.h" - -///For each triangle in the concave mesh that overlaps with the AABB of a convex (m_convexProxy), processTriangle is called. -class btConvexTriangleCallback : public btTriangleCallback -{ - btCollisionObject* m_convexBody; - btCollisionObject* m_triBody; - - btVector3 m_aabbMin; - btVector3 m_aabbMax ; - - - btManifoldResult* m_resultOut; - btDispatcher* m_dispatcher; - const btDispatcherInfo* m_dispatchInfoPtr; - btScalar m_collisionMarginTriangle; - -public: -int m_triangleCount; - - btPersistentManifold* m_manifoldPtr; - - btConvexTriangleCallback(btDispatcher* dispatcher,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped); - - void setTimeStepAndCounters(btScalar collisionMarginTriangle,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual ~btConvexTriangleCallback(); - - virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex); - - void clearCache(); - - SIMD_FORCE_INLINE const btVector3& getAabbMin() const - { - return m_aabbMin; - } - SIMD_FORCE_INLINE const btVector3& getAabbMax() const - { - return m_aabbMax; - } - -}; - - - - -/// btConvexConcaveCollisionAlgorithm supports collision between convex shapes and (concave) trianges meshes. -class btConvexConcaveCollisionAlgorithm : public btActivatingCollisionAlgorithm -{ - - bool m_isSwapped; - - btConvexTriangleCallback m_btConvexTriangleCallback; - - - -public: - - btConvexConcaveCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped); - - virtual ~btConvexConcaveCollisionAlgorithm(); - - virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual void getAllContactManifolds(btManifoldArray& manifoldArray); - - void clearCache(); - - struct CreateFunc :public btCollisionAlgorithmCreateFunc - { - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) - { - void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvexConcaveCollisionAlgorithm)); - return new(mem) btConvexConcaveCollisionAlgorithm(ci,body0,body1,false); - } - }; - - struct SwappedCreateFunc :public btCollisionAlgorithmCreateFunc - { - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) - { - void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvexConcaveCollisionAlgorithm)); - return new(mem) btConvexConcaveCollisionAlgorithm(ci,body0,body1,true); - } - }; - -}; - -#endif //CONVEX_CONCAVE_COLLISION_ALGORITHM_H diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp deleted file mode 100644 index c1d988aedff..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp +++ /dev/null @@ -1,574 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -///Specialized capsule-capsule collision algorithm has been added for Bullet 2.75 release to increase ragdoll performance -///If you experience problems with capsule-capsule collision, try to define BT_DISABLE_CAPSULE_CAPSULE_COLLIDER and report it in the Bullet forums -///with reproduction case -//define BT_DISABLE_CAPSULE_CAPSULE_COLLIDER 1 - -#include "btConvexConvexAlgorithm.h" - -//#include -#include "BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "BulletCollision/CollisionShapes/btConvexShape.h" -#include "BulletCollision/CollisionShapes/btCapsuleShape.h" - - -#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" -#include "BulletCollision/CollisionShapes/btBoxShape.h" -#include "BulletCollision/CollisionDispatch/btManifoldResult.h" - -#include "BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h" -#include "BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h" -#include "BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h" - - - -#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h" -#include "BulletCollision/CollisionShapes/btSphereShape.h" - -#include "BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h" - -#include "BulletCollision/NarrowPhaseCollision/btGjkEpa2.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h" - - - -/////////// - - - -static SIMD_FORCE_INLINE void segmentsClosestPoints( - btVector3& ptsVector, - btVector3& offsetA, - btVector3& offsetB, - btScalar& tA, btScalar& tB, - const btVector3& translation, - const btVector3& dirA, btScalar hlenA, - const btVector3& dirB, btScalar hlenB ) -{ - // compute the parameters of the closest points on each line segment - - btScalar dirA_dot_dirB = btDot(dirA,dirB); - btScalar dirA_dot_trans = btDot(dirA,translation); - btScalar dirB_dot_trans = btDot(dirB,translation); - - btScalar denom = 1.0f - dirA_dot_dirB * dirA_dot_dirB; - - if ( denom == 0.0f ) { - tA = 0.0f; - } else { - tA = ( dirA_dot_trans - dirB_dot_trans * dirA_dot_dirB ) / denom; - if ( tA < -hlenA ) - tA = -hlenA; - else if ( tA > hlenA ) - tA = hlenA; - } - - tB = tA * dirA_dot_dirB - dirB_dot_trans; - - if ( tB < -hlenB ) { - tB = -hlenB; - tA = tB * dirA_dot_dirB + dirA_dot_trans; - - if ( tA < -hlenA ) - tA = -hlenA; - else if ( tA > hlenA ) - tA = hlenA; - } else if ( tB > hlenB ) { - tB = hlenB; - tA = tB * dirA_dot_dirB + dirA_dot_trans; - - if ( tA < -hlenA ) - tA = -hlenA; - else if ( tA > hlenA ) - tA = hlenA; - } - - // compute the closest points relative to segment centers. - - offsetA = dirA * tA; - offsetB = dirB * tB; - - ptsVector = translation - offsetA + offsetB; -} - - -static SIMD_FORCE_INLINE btScalar capsuleCapsuleDistance( - btVector3& normalOnB, - btVector3& pointOnB, - btScalar capsuleLengthA, - btScalar capsuleRadiusA, - btScalar capsuleLengthB, - btScalar capsuleRadiusB, - int capsuleAxisA, - int capsuleAxisB, - const btTransform& transformA, - const btTransform& transformB, - btScalar distanceThreshold ) -{ - btVector3 directionA = transformA.getBasis().getColumn(capsuleAxisA); - btVector3 translationA = transformA.getOrigin(); - btVector3 directionB = transformB.getBasis().getColumn(capsuleAxisB); - btVector3 translationB = transformB.getOrigin(); - - // translation between centers - - btVector3 translation = translationB - translationA; - - // compute the closest points of the capsule line segments - - btVector3 ptsVector; // the vector between the closest points - - btVector3 offsetA, offsetB; // offsets from segment centers to their closest points - btScalar tA, tB; // parameters on line segment - - segmentsClosestPoints( ptsVector, offsetA, offsetB, tA, tB, translation, - directionA, capsuleLengthA, directionB, capsuleLengthB ); - - btScalar distance = ptsVector.length() - capsuleRadiusA - capsuleRadiusB; - - if ( distance > distanceThreshold ) - return distance; - - btScalar lenSqr = ptsVector.length2(); - if (lenSqr<= (SIMD_EPSILON*SIMD_EPSILON)) - { - //degenerate case where 2 capsules are likely at the same location: take a vector tangential to 'directionA' - btVector3 q; - btPlaneSpace1(directionA,normalOnB,q); - } else - { - // compute the contact normal - normalOnB = ptsVector*-btRecipSqrt(lenSqr); - } - pointOnB = transformB.getOrigin()+offsetB + normalOnB * capsuleRadiusB; - - return distance; -} - - - - - - - -////////// - - - - - -btConvexConvexAlgorithm::CreateFunc::CreateFunc(btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver) -{ - m_numPerturbationIterations = 0; - m_minimumPointsPerturbationThreshold = 3; - m_simplexSolver = simplexSolver; - m_pdSolver = pdSolver; -} - -btConvexConvexAlgorithm::CreateFunc::~CreateFunc() -{ -} - -btConvexConvexAlgorithm::btConvexConvexAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver,int numPerturbationIterations, int minimumPointsPerturbationThreshold) -: btActivatingCollisionAlgorithm(ci,body0,body1), -m_simplexSolver(simplexSolver), -m_pdSolver(pdSolver), -m_ownManifold (false), -m_manifoldPtr(mf), -m_lowLevelOfDetail(false), -#ifdef USE_SEPDISTANCE_UTIL2 -m_sepDistance((static_cast(body0->getCollisionShape()))->getAngularMotionDisc(), - (static_cast(body1->getCollisionShape()))->getAngularMotionDisc()), -#endif -m_numPerturbationIterations(numPerturbationIterations), -m_minimumPointsPerturbationThreshold(minimumPointsPerturbationThreshold) -{ - (void)body0; - (void)body1; -} - - - - -btConvexConvexAlgorithm::~btConvexConvexAlgorithm() -{ - if (m_ownManifold) - { - if (m_manifoldPtr) - m_dispatcher->releaseManifold(m_manifoldPtr); - } -} - -void btConvexConvexAlgorithm ::setLowLevelOfDetail(bool useLowLevel) -{ - m_lowLevelOfDetail = useLowLevel; -} - - -struct btPerturbedContactResult : public btManifoldResult -{ - btManifoldResult* m_originalManifoldResult; - btTransform m_transformA; - btTransform m_transformB; - btTransform m_unPerturbedTransform; - bool m_perturbA; - btIDebugDraw* m_debugDrawer; - - - btPerturbedContactResult(btManifoldResult* originalResult,const btTransform& transformA,const btTransform& transformB,const btTransform& unPerturbedTransform,bool perturbA,btIDebugDraw* debugDrawer) - :m_originalManifoldResult(originalResult), - m_transformA(transformA), - m_transformB(transformB), - m_unPerturbedTransform(unPerturbedTransform), - m_perturbA(perturbA), - m_debugDrawer(debugDrawer) - { - } - virtual ~ btPerturbedContactResult() - { - } - - virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar orgDepth) - { - btVector3 endPt,startPt; - btScalar newDepth; - btVector3 newNormal; - - if (m_perturbA) - { - btVector3 endPtOrg = pointInWorld + normalOnBInWorld*orgDepth; - endPt = (m_unPerturbedTransform*m_transformA.inverse())(endPtOrg); - newDepth = (endPt - pointInWorld).dot(normalOnBInWorld); - startPt = endPt+normalOnBInWorld*newDepth; - } else - { - endPt = pointInWorld + normalOnBInWorld*orgDepth; - startPt = (m_unPerturbedTransform*m_transformB.inverse())(pointInWorld); - newDepth = (endPt - startPt).dot(normalOnBInWorld); - - } - -//#define DEBUG_CONTACTS 1 -#ifdef DEBUG_CONTACTS - m_debugDrawer->drawLine(startPt,endPt,btVector3(1,0,0)); - m_debugDrawer->drawSphere(startPt,0.05,btVector3(0,1,0)); - m_debugDrawer->drawSphere(endPt,0.05,btVector3(0,0,1)); -#endif //DEBUG_CONTACTS - - - m_originalManifoldResult->addContactPoint(normalOnBInWorld,startPt,newDepth); - } - -}; - -extern btScalar gContactBreakingThreshold; - - -// -// Convex-Convex collision algorithm -// -void btConvexConvexAlgorithm ::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - - if (!m_manifoldPtr) - { - //swapped? - m_manifoldPtr = m_dispatcher->getNewManifold(body0,body1); - m_ownManifold = true; - } - resultOut->setPersistentManifold(m_manifoldPtr); - - //comment-out next line to test multi-contact generation - //resultOut->getPersistentManifold()->clearManifold(); - - - btConvexShape* min0 = static_cast(body0->getCollisionShape()); - btConvexShape* min1 = static_cast(body1->getCollisionShape()); - - btVector3 normalOnB; - btVector3 pointOnBWorld; -#ifndef BT_DISABLE_CAPSULE_CAPSULE_COLLIDER - if ((min0->getShapeType() == CAPSULE_SHAPE_PROXYTYPE) && (min1->getShapeType() == CAPSULE_SHAPE_PROXYTYPE)) - { - btCapsuleShape* capsuleA = (btCapsuleShape*) min0; - btCapsuleShape* capsuleB = (btCapsuleShape*) min1; - btVector3 localScalingA = capsuleA->getLocalScaling(); - btVector3 localScalingB = capsuleB->getLocalScaling(); - - btScalar threshold = m_manifoldPtr->getContactBreakingThreshold(); - - btScalar dist = capsuleCapsuleDistance(normalOnB, pointOnBWorld,capsuleA->getHalfHeight(),capsuleA->getRadius(), - capsuleB->getHalfHeight(),capsuleB->getRadius(),capsuleA->getUpAxis(),capsuleB->getUpAxis(), - body0->getWorldTransform(),body1->getWorldTransform(),threshold); - - if (dist=(SIMD_EPSILON*SIMD_EPSILON)); - resultOut->addContactPoint(normalOnB,pointOnBWorld,dist); - } - resultOut->refreshContactPoints(); - return; - } -#endif //BT_DISABLE_CAPSULE_CAPSULE_COLLIDER - - -#ifdef USE_SEPDISTANCE_UTIL2 - if (dispatchInfo.m_useConvexConservativeDistanceUtil) - { - m_sepDistance.updateSeparatingDistance(body0->getWorldTransform(),body1->getWorldTransform()); - } - - if (!dispatchInfo.m_useConvexConservativeDistanceUtil || m_sepDistance.getConservativeSeparatingDistance()<=0.f) -#endif //USE_SEPDISTANCE_UTIL2 - - { - - - btGjkPairDetector::ClosestPointInput input; - - btGjkPairDetector gjkPairDetector(min0,min1,m_simplexSolver,m_pdSolver); - //TODO: if (dispatchInfo.m_useContinuous) - gjkPairDetector.setMinkowskiA(min0); - gjkPairDetector.setMinkowskiB(min1); - -#ifdef USE_SEPDISTANCE_UTIL2 - if (dispatchInfo.m_useConvexConservativeDistanceUtil) - { - input.m_maximumDistanceSquared = BT_LARGE_FLOAT; - } else -#endif //USE_SEPDISTANCE_UTIL2 - { - input.m_maximumDistanceSquared = min0->getMargin() + min1->getMargin() + m_manifoldPtr->getContactBreakingThreshold(); - input.m_maximumDistanceSquared*= input.m_maximumDistanceSquared; - } - - input.m_stackAlloc = dispatchInfo.m_stackAllocator; - input.m_transformA = body0->getWorldTransform(); - input.m_transformB = body1->getWorldTransform(); - - gjkPairDetector.getClosestPoints(input,*resultOut,dispatchInfo.m_debugDraw); - - - -#ifdef USE_SEPDISTANCE_UTIL2 - btScalar sepDist = 0.f; - if (dispatchInfo.m_useConvexConservativeDistanceUtil) - { - sepDist = gjkPairDetector.getCachedSeparatingDistance(); - if (sepDist>SIMD_EPSILON) - { - sepDist += dispatchInfo.m_convexConservativeDistanceThreshold; - //now perturbe directions to get multiple contact points - - } - } -#endif //USE_SEPDISTANCE_UTIL2 - - //now perform 'm_numPerturbationIterations' collision queries with the perturbated collision objects - - //perform perturbation when more then 'm_minimumPointsPerturbationThreshold' points - if (m_numPerturbationIterations && resultOut->getPersistentManifold()->getNumContacts() < m_minimumPointsPerturbationThreshold) - { - - int i; - btVector3 v0,v1; - btVector3 sepNormalWorldSpace; - - sepNormalWorldSpace = gjkPairDetector.getCachedSeparatingAxis().normalized(); - btPlaneSpace1(sepNormalWorldSpace,v0,v1); - - - bool perturbeA = true; - const btScalar angleLimit = 0.125f * SIMD_PI; - btScalar perturbeAngle; - btScalar radiusA = min0->getAngularMotionDisc(); - btScalar radiusB = min1->getAngularMotionDisc(); - if (radiusA < radiusB) - { - perturbeAngle = gContactBreakingThreshold /radiusA; - perturbeA = true; - } else - { - perturbeAngle = gContactBreakingThreshold / radiusB; - perturbeA = false; - } - if ( perturbeAngle > angleLimit ) - perturbeAngle = angleLimit; - - btTransform unPerturbedTransform; - if (perturbeA) - { - unPerturbedTransform = input.m_transformA; - } else - { - unPerturbedTransform = input.m_transformB; - } - - for ( i=0;iSIMD_EPSILON) - { - btQuaternion perturbeRot(v0,perturbeAngle); - btScalar iterationAngle = i*(SIMD_2_PI/btScalar(m_numPerturbationIterations)); - btQuaternion rotq(sepNormalWorldSpace,iterationAngle); - - - if (perturbeA) - { - input.m_transformA.setBasis( btMatrix3x3(rotq.inverse()*perturbeRot*rotq)*body0->getWorldTransform().getBasis()); - input.m_transformB = body1->getWorldTransform(); -#ifdef DEBUG_CONTACTS - dispatchInfo.m_debugDraw->drawTransform(input.m_transformA,10.0); -#endif //DEBUG_CONTACTS - } else - { - input.m_transformA = body0->getWorldTransform(); - input.m_transformB.setBasis( btMatrix3x3(rotq.inverse()*perturbeRot*rotq)*body1->getWorldTransform().getBasis()); -#ifdef DEBUG_CONTACTS - dispatchInfo.m_debugDraw->drawTransform(input.m_transformB,10.0); -#endif - } - - btPerturbedContactResult perturbedResultOut(resultOut,input.m_transformA,input.m_transformB,unPerturbedTransform,perturbeA,dispatchInfo.m_debugDraw); - gjkPairDetector.getClosestPoints(input,perturbedResultOut,dispatchInfo.m_debugDraw); - } - - } - } - - - -#ifdef USE_SEPDISTANCE_UTIL2 - if (dispatchInfo.m_useConvexConservativeDistanceUtil && (sepDist>SIMD_EPSILON)) - { - m_sepDistance.initSeparatingDistance(gjkPairDetector.getCachedSeparatingAxis(),sepDist,body0->getWorldTransform(),body1->getWorldTransform()); - } -#endif //USE_SEPDISTANCE_UTIL2 - - - } - - if (m_ownManifold) - { - resultOut->refreshContactPoints(); - } - -} - - - -bool disableCcd = false; -btScalar btConvexConvexAlgorithm::calculateTimeOfImpact(btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - (void)resultOut; - (void)dispatchInfo; - ///Rather then checking ALL pairs, only calculate TOI when motion exceeds threshold - - ///Linear motion for one of objects needs to exceed m_ccdSquareMotionThreshold - ///col0->m_worldTransform, - btScalar resultFraction = btScalar(1.); - - - btScalar squareMot0 = (col0->getInterpolationWorldTransform().getOrigin() - col0->getWorldTransform().getOrigin()).length2(); - btScalar squareMot1 = (col1->getInterpolationWorldTransform().getOrigin() - col1->getWorldTransform().getOrigin()).length2(); - - if (squareMot0 < col0->getCcdSquareMotionThreshold() && - squareMot1 < col1->getCcdSquareMotionThreshold()) - return resultFraction; - - if (disableCcd) - return btScalar(1.); - - - //An adhoc way of testing the Continuous Collision Detection algorithms - //One object is approximated as a sphere, to simplify things - //Starting in penetration should report no time of impact - //For proper CCD, better accuracy and handling of 'allowed' penetration should be added - //also the mainloop of the physics should have a kind of toi queue (something like Brian Mirtich's application of Timewarp for Rigidbodies) - - - /// Convex0 against sphere for Convex1 - { - btConvexShape* convex0 = static_cast(col0->getCollisionShape()); - - btSphereShape sphere1(col1->getCcdSweptSphereRadius()); //todo: allow non-zero sphere sizes, for better approximation - btConvexCast::CastResult result; - btVoronoiSimplexSolver voronoiSimplex; - //SubsimplexConvexCast ccd0(&sphere,min0,&voronoiSimplex); - ///Simplification, one object is simplified as a sphere - btGjkConvexCast ccd1( convex0 ,&sphere1,&voronoiSimplex); - //ContinuousConvexCollision ccd(min0,min1,&voronoiSimplex,0); - if (ccd1.calcTimeOfImpact(col0->getWorldTransform(),col0->getInterpolationWorldTransform(), - col1->getWorldTransform(),col1->getInterpolationWorldTransform(),result)) - { - - //store result.m_fraction in both bodies - - if (col0->getHitFraction()> result.m_fraction) - col0->setHitFraction( result.m_fraction ); - - if (col1->getHitFraction() > result.m_fraction) - col1->setHitFraction( result.m_fraction); - - if (resultFraction > result.m_fraction) - resultFraction = result.m_fraction; - - } - - - - - } - - /// Sphere (for convex0) against Convex1 - { - btConvexShape* convex1 = static_cast(col1->getCollisionShape()); - - btSphereShape sphere0(col0->getCcdSweptSphereRadius()); //todo: allow non-zero sphere sizes, for better approximation - btConvexCast::CastResult result; - btVoronoiSimplexSolver voronoiSimplex; - //SubsimplexConvexCast ccd0(&sphere,min0,&voronoiSimplex); - ///Simplification, one object is simplified as a sphere - btGjkConvexCast ccd1(&sphere0,convex1,&voronoiSimplex); - //ContinuousConvexCollision ccd(min0,min1,&voronoiSimplex,0); - if (ccd1.calcTimeOfImpact(col0->getWorldTransform(),col0->getInterpolationWorldTransform(), - col1->getWorldTransform(),col1->getInterpolationWorldTransform(),result)) - { - - //store result.m_fraction in both bodies - - if (col0->getHitFraction() > result.m_fraction) - col0->setHitFraction( result.m_fraction); - - if (col1->getHitFraction() > result.m_fraction) - col1->setHitFraction( result.m_fraction); - - if (resultFraction > result.m_fraction) - resultFraction = result.m_fraction; - - } - } - - return resultFraction; - -} - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h deleted file mode 100644 index d38aff6862c..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h +++ /dev/null @@ -1,109 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef CONVEX_CONVEX_ALGORITHM_H -#define CONVEX_CONVEX_ALGORITHM_H - -#include "btActivatingCollisionAlgorithm.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h" -#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h" -#include "btCollisionCreateFunc.h" -#include "btCollisionDispatcher.h" -#include "LinearMath/btTransformUtil.h" //for btConvexSeparatingDistanceUtil - -class btConvexPenetrationDepthSolver; - -///Enabling USE_SEPDISTANCE_UTIL2 requires 100% reliable distance computation. However, when using large size ratios GJK can be imprecise -///so the distance is not conservative. In that case, enabling this USE_SEPDISTANCE_UTIL2 would result in failing/missing collisions. -///Either improve GJK for large size ratios (testing a 100 units versus a 0.1 unit object) or only enable the util -///for certain pairs that have a small size ratio - -//#define USE_SEPDISTANCE_UTIL2 1 - -///The convexConvexAlgorithm collision algorithm implements time of impact, convex closest points and penetration depth calculations between two convex objects. -///Multiple contact points are calculated by perturbing the orientation of the smallest object orthogonal to the separating normal. -///This idea was described by Gino van den Bergen in this forum topic http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=4&t=288&p=888#p888 -class btConvexConvexAlgorithm : public btActivatingCollisionAlgorithm -{ -#ifdef USE_SEPDISTANCE_UTIL2 - btConvexSeparatingDistanceUtil m_sepDistance; -#endif - btSimplexSolverInterface* m_simplexSolver; - btConvexPenetrationDepthSolver* m_pdSolver; - - - bool m_ownManifold; - btPersistentManifold* m_manifoldPtr; - bool m_lowLevelOfDetail; - - int m_numPerturbationIterations; - int m_minimumPointsPerturbationThreshold; - - - ///cache separating vector to speedup collision detection - - -public: - - btConvexConvexAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1, btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver, int numPerturbationIterations, int minimumPointsPerturbationThreshold); - - - virtual ~btConvexConvexAlgorithm(); - - virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual void getAllContactManifolds(btManifoldArray& manifoldArray) - { - ///should we use m_ownManifold to avoid adding duplicates? - if (m_manifoldPtr && m_ownManifold) - manifoldArray.push_back(m_manifoldPtr); - } - - - void setLowLevelOfDetail(bool useLowLevel); - - - const btPersistentManifold* getManifold() - { - return m_manifoldPtr; - } - - struct CreateFunc :public btCollisionAlgorithmCreateFunc - { - - btConvexPenetrationDepthSolver* m_pdSolver; - btSimplexSolverInterface* m_simplexSolver; - int m_numPerturbationIterations; - int m_minimumPointsPerturbationThreshold; - - CreateFunc(btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver); - - virtual ~CreateFunc(); - - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) - { - void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvexConvexAlgorithm)); - return new(mem) btConvexConvexAlgorithm(ci.m_manifold,ci,body0,body1,m_simplexSolver,m_pdSolver,m_numPerturbationIterations,m_minimumPointsPerturbationThreshold); - } - }; - - -}; - -#endif //CONVEX_CONVEX_ALGORITHM_H diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp deleted file mode 100644 index dda85dc693f..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp +++ /dev/null @@ -1,155 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btConvexPlaneCollisionAlgorithm.h" - -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "BulletCollision/CollisionShapes/btConvexShape.h" -#include "BulletCollision/CollisionShapes/btStaticPlaneShape.h" - -//#include - -btConvexPlaneCollisionAlgorithm::btConvexPlaneCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* col0,btCollisionObject* col1, bool isSwapped, int numPerturbationIterations,int minimumPointsPerturbationThreshold) -: btCollisionAlgorithm(ci), -m_ownManifold(false), -m_manifoldPtr(mf), -m_isSwapped(isSwapped), -m_numPerturbationIterations(numPerturbationIterations), -m_minimumPointsPerturbationThreshold(minimumPointsPerturbationThreshold) -{ - btCollisionObject* convexObj = m_isSwapped? col1 : col0; - btCollisionObject* planeObj = m_isSwapped? col0 : col1; - - if (!m_manifoldPtr && m_dispatcher->needsCollision(convexObj,planeObj)) - { - m_manifoldPtr = m_dispatcher->getNewManifold(convexObj,planeObj); - m_ownManifold = true; - } -} - - -btConvexPlaneCollisionAlgorithm::~btConvexPlaneCollisionAlgorithm() -{ - if (m_ownManifold) - { - if (m_manifoldPtr) - m_dispatcher->releaseManifold(m_manifoldPtr); - } -} - -void btConvexPlaneCollisionAlgorithm::collideSingleContact (const btQuaternion& perturbeRot, btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - btCollisionObject* convexObj = m_isSwapped? body1 : body0; - btCollisionObject* planeObj = m_isSwapped? body0: body1; - - btConvexShape* convexShape = (btConvexShape*) convexObj->getCollisionShape(); - btStaticPlaneShape* planeShape = (btStaticPlaneShape*) planeObj->getCollisionShape(); - - bool hasCollision = false; - const btVector3& planeNormal = planeShape->getPlaneNormal(); - const btScalar& planeConstant = planeShape->getPlaneConstant(); - - btTransform convexWorldTransform = convexObj->getWorldTransform(); - btTransform convexInPlaneTrans; - convexInPlaneTrans= planeObj->getWorldTransform().inverse() * convexWorldTransform; - //now perturbe the convex-world transform - convexWorldTransform.getBasis()*=btMatrix3x3(perturbeRot); - btTransform planeInConvex; - planeInConvex= convexWorldTransform.inverse() * planeObj->getWorldTransform(); - - btVector3 vtx = convexShape->localGetSupportingVertex(planeInConvex.getBasis()*-planeNormal); - - btVector3 vtxInPlane = convexInPlaneTrans(vtx); - btScalar distance = (planeNormal.dot(vtxInPlane) - planeConstant); - - btVector3 vtxInPlaneProjected = vtxInPlane - distance*planeNormal; - btVector3 vtxInPlaneWorld = planeObj->getWorldTransform() * vtxInPlaneProjected; - - hasCollision = distance < m_manifoldPtr->getContactBreakingThreshold(); - resultOut->setPersistentManifold(m_manifoldPtr); - if (hasCollision) - { - /// report a contact. internally this will be kept persistent, and contact reduction is done - btVector3 normalOnSurfaceB = planeObj->getWorldTransform().getBasis() * planeNormal; - btVector3 pOnB = vtxInPlaneWorld; - resultOut->addContactPoint(normalOnSurfaceB,pOnB,distance); - } -} - - -void btConvexPlaneCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - (void)dispatchInfo; - if (!m_manifoldPtr) - return; - - btCollisionObject* convexObj = m_isSwapped? body1 : body0; - btCollisionObject* planeObj = m_isSwapped? body0: body1; - - btConvexShape* convexShape = (btConvexShape*) convexObj->getCollisionShape(); - btStaticPlaneShape* planeShape = (btStaticPlaneShape*) planeObj->getCollisionShape(); - - - const btVector3& planeNormal = planeShape->getPlaneNormal(); - //const btScalar& planeConstant = planeShape->getPlaneConstant(); - - //first perform a collision query with the non-perturbated collision objects - { - btQuaternion rotq(0,0,0,1); - collideSingleContact(rotq,body0,body1,dispatchInfo,resultOut); - } - - if (resultOut->getPersistentManifold()->getNumContacts()getAngularMotionDisc(); - perturbeAngle = gContactBreakingThreshold / radius; - if ( perturbeAngle > angleLimit ) - perturbeAngle = angleLimit; - - btQuaternion perturbeRot(v0,perturbeAngle); - for (int i=0;igetNumContacts()) - { - resultOut->refreshContactPoints(); - } - } -} - -btScalar btConvexPlaneCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - (void)resultOut; - (void)dispatchInfo; - (void)col0; - (void)col1; - - //not yet - return btScalar(1.); -} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h deleted file mode 100644 index f49ac45e772..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h +++ /dev/null @@ -1,84 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef CONVEX_PLANE_COLLISION_ALGORITHM_H -#define CONVEX_PLANE_COLLISION_ALGORITHM_H - -#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" -class btPersistentManifold; -#include "btCollisionDispatcher.h" - -#include "LinearMath/btVector3.h" - -/// btSphereBoxCollisionAlgorithm provides sphere-box collision detection. -/// Other features are frame-coherency (persistent data) and collision response. -class btConvexPlaneCollisionAlgorithm : public btCollisionAlgorithm -{ - bool m_ownManifold; - btPersistentManifold* m_manifoldPtr; - bool m_isSwapped; - int m_numPerturbationIterations; - int m_minimumPointsPerturbationThreshold; - -public: - - btConvexPlaneCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* col0,btCollisionObject* col1, bool isSwapped, int numPerturbationIterations,int minimumPointsPerturbationThreshold); - - virtual ~btConvexPlaneCollisionAlgorithm(); - - virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - void collideSingleContact (const btQuaternion& perturbeRot, btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual void getAllContactManifolds(btManifoldArray& manifoldArray) - { - if (m_manifoldPtr && m_ownManifold) - { - manifoldArray.push_back(m_manifoldPtr); - } - } - - struct CreateFunc :public btCollisionAlgorithmCreateFunc - { - int m_numPerturbationIterations; - int m_minimumPointsPerturbationThreshold; - - CreateFunc() - : m_numPerturbationIterations(1), - m_minimumPointsPerturbationThreshold(1) - { - } - - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) - { - void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvexPlaneCollisionAlgorithm)); - if (!m_swapped) - { - return new(mem) btConvexPlaneCollisionAlgorithm(0,ci,body0,body1,false,m_numPerturbationIterations,m_minimumPointsPerturbationThreshold); - } else - { - return new(mem) btConvexPlaneCollisionAlgorithm(0,ci,body0,body1,true,m_numPerturbationIterations,m_minimumPointsPerturbationThreshold); - } - } - }; - -}; - -#endif //CONVEX_PLANE_COLLISION_ALGORITHM_H - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp deleted file mode 100644 index c27d8ce0752..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp +++ /dev/null @@ -1,298 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btDefaultCollisionConfiguration.h" - -#include "BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h" -#ifdef USE_BUGGY_SPHERE_BOX_ALGORITHM -#include "BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h" -#endif //USE_BUGGY_SPHERE_BOX_ALGORITHM -#include "BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h" -#include "BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h" -#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h" - - - -#include "LinearMath/btStackAlloc.h" -#include "LinearMath/btPoolAllocator.h" - - - - - -btDefaultCollisionConfiguration::btDefaultCollisionConfiguration(const btDefaultCollisionConstructionInfo& constructionInfo) -//btDefaultCollisionConfiguration::btDefaultCollisionConfiguration(btStackAlloc* stackAlloc,btPoolAllocator* persistentManifoldPool,btPoolAllocator* collisionAlgorithmPool) -{ - - void* mem = btAlignedAlloc(sizeof(btVoronoiSimplexSolver),16); - m_simplexSolver = new (mem)btVoronoiSimplexSolver(); - - if (constructionInfo.m_useEpaPenetrationAlgorithm) - { - mem = btAlignedAlloc(sizeof(btGjkEpaPenetrationDepthSolver),16); - m_pdSolver = new (mem)btGjkEpaPenetrationDepthSolver; - }else - { - mem = btAlignedAlloc(sizeof(btMinkowskiPenetrationDepthSolver),16); - m_pdSolver = new (mem)btMinkowskiPenetrationDepthSolver; - } - - //default CreationFunctions, filling the m_doubleDispatch table - mem = btAlignedAlloc(sizeof(btConvexConvexAlgorithm::CreateFunc),16); - m_convexConvexCreateFunc = new(mem) btConvexConvexAlgorithm::CreateFunc(m_simplexSolver,m_pdSolver); - mem = btAlignedAlloc(sizeof(btConvexConcaveCollisionAlgorithm::CreateFunc),16); - m_convexConcaveCreateFunc = new (mem)btConvexConcaveCollisionAlgorithm::CreateFunc; - mem = btAlignedAlloc(sizeof(btConvexConcaveCollisionAlgorithm::CreateFunc),16); - m_swappedConvexConcaveCreateFunc = new (mem)btConvexConcaveCollisionAlgorithm::SwappedCreateFunc; - mem = btAlignedAlloc(sizeof(btCompoundCollisionAlgorithm::CreateFunc),16); - m_compoundCreateFunc = new (mem)btCompoundCollisionAlgorithm::CreateFunc; - mem = btAlignedAlloc(sizeof(btCompoundCollisionAlgorithm::SwappedCreateFunc),16); - m_swappedCompoundCreateFunc = new (mem)btCompoundCollisionAlgorithm::SwappedCreateFunc; - mem = btAlignedAlloc(sizeof(btEmptyAlgorithm::CreateFunc),16); - m_emptyCreateFunc = new(mem) btEmptyAlgorithm::CreateFunc; - - mem = btAlignedAlloc(sizeof(btSphereSphereCollisionAlgorithm::CreateFunc),16); - m_sphereSphereCF = new(mem) btSphereSphereCollisionAlgorithm::CreateFunc; -#ifdef USE_BUGGY_SPHERE_BOX_ALGORITHM - mem = btAlignedAlloc(sizeof(btSphereBoxCollisionAlgorithm::CreateFunc),16); - m_sphereBoxCF = new(mem) btSphereBoxCollisionAlgorithm::CreateFunc; - mem = btAlignedAlloc(sizeof(btSphereBoxCollisionAlgorithm::CreateFunc),16); - m_boxSphereCF = new (mem)btSphereBoxCollisionAlgorithm::CreateFunc; - m_boxSphereCF->m_swapped = true; -#endif //USE_BUGGY_SPHERE_BOX_ALGORITHM - - mem = btAlignedAlloc(sizeof(btSphereTriangleCollisionAlgorithm::CreateFunc),16); - m_sphereTriangleCF = new (mem)btSphereTriangleCollisionAlgorithm::CreateFunc; - mem = btAlignedAlloc(sizeof(btSphereTriangleCollisionAlgorithm::CreateFunc),16); - m_triangleSphereCF = new (mem)btSphereTriangleCollisionAlgorithm::CreateFunc; - m_triangleSphereCF->m_swapped = true; - - mem = btAlignedAlloc(sizeof(btBoxBoxCollisionAlgorithm::CreateFunc),16); - m_boxBoxCF = new(mem)btBoxBoxCollisionAlgorithm::CreateFunc; - - //convex versus plane - mem = btAlignedAlloc (sizeof(btConvexPlaneCollisionAlgorithm::CreateFunc),16); - m_convexPlaneCF = new (mem) btConvexPlaneCollisionAlgorithm::CreateFunc; - mem = btAlignedAlloc (sizeof(btConvexPlaneCollisionAlgorithm::CreateFunc),16); - m_planeConvexCF = new (mem) btConvexPlaneCollisionAlgorithm::CreateFunc; - m_planeConvexCF->m_swapped = true; - - ///calculate maximum element size, big enough to fit any collision algorithm in the memory pool - int maxSize = sizeof(btConvexConvexAlgorithm); - int maxSize2 = sizeof(btConvexConcaveCollisionAlgorithm); - int maxSize3 = sizeof(btCompoundCollisionAlgorithm); - int sl = sizeof(btConvexSeparatingDistanceUtil); - sl = sizeof(btGjkPairDetector); - int collisionAlgorithmMaxElementSize = btMax(maxSize,constructionInfo.m_customCollisionAlgorithmMaxElementSize); - collisionAlgorithmMaxElementSize = btMax(collisionAlgorithmMaxElementSize,maxSize2); - collisionAlgorithmMaxElementSize = btMax(collisionAlgorithmMaxElementSize,maxSize3); - - if (constructionInfo.m_stackAlloc) - { - m_ownsStackAllocator = false; - this->m_stackAlloc = constructionInfo.m_stackAlloc; - } else - { - m_ownsStackAllocator = true; - void* mem = btAlignedAlloc(sizeof(btStackAlloc),16); - m_stackAlloc = new(mem)btStackAlloc(constructionInfo.m_defaultStackAllocatorSize); - } - - if (constructionInfo.m_persistentManifoldPool) - { - m_ownsPersistentManifoldPool = false; - m_persistentManifoldPool = constructionInfo.m_persistentManifoldPool; - } else - { - m_ownsPersistentManifoldPool = true; - void* mem = btAlignedAlloc(sizeof(btPoolAllocator),16); - m_persistentManifoldPool = new (mem) btPoolAllocator(sizeof(btPersistentManifold),constructionInfo.m_defaultMaxPersistentManifoldPoolSize); - } - - if (constructionInfo.m_collisionAlgorithmPool) - { - m_ownsCollisionAlgorithmPool = false; - m_collisionAlgorithmPool = constructionInfo.m_collisionAlgorithmPool; - } else - { - m_ownsCollisionAlgorithmPool = true; - void* mem = btAlignedAlloc(sizeof(btPoolAllocator),16); - m_collisionAlgorithmPool = new(mem) btPoolAllocator(collisionAlgorithmMaxElementSize,constructionInfo.m_defaultMaxCollisionAlgorithmPoolSize); - } - - -} - -btDefaultCollisionConfiguration::~btDefaultCollisionConfiguration() -{ - if (m_ownsStackAllocator) - { - m_stackAlloc->destroy(); - m_stackAlloc->~btStackAlloc(); - btAlignedFree(m_stackAlloc); - } - if (m_ownsCollisionAlgorithmPool) - { - m_collisionAlgorithmPool->~btPoolAllocator(); - btAlignedFree(m_collisionAlgorithmPool); - } - if (m_ownsPersistentManifoldPool) - { - m_persistentManifoldPool->~btPoolAllocator(); - btAlignedFree(m_persistentManifoldPool); - } - - m_convexConvexCreateFunc->~btCollisionAlgorithmCreateFunc(); - btAlignedFree( m_convexConvexCreateFunc); - - m_convexConcaveCreateFunc->~btCollisionAlgorithmCreateFunc(); - btAlignedFree( m_convexConcaveCreateFunc); - m_swappedConvexConcaveCreateFunc->~btCollisionAlgorithmCreateFunc(); - btAlignedFree( m_swappedConvexConcaveCreateFunc); - - m_compoundCreateFunc->~btCollisionAlgorithmCreateFunc(); - btAlignedFree( m_compoundCreateFunc); - - m_swappedCompoundCreateFunc->~btCollisionAlgorithmCreateFunc(); - btAlignedFree( m_swappedCompoundCreateFunc); - - m_emptyCreateFunc->~btCollisionAlgorithmCreateFunc(); - btAlignedFree( m_emptyCreateFunc); - - m_sphereSphereCF->~btCollisionAlgorithmCreateFunc(); - btAlignedFree( m_sphereSphereCF); - -#ifdef USE_BUGGY_SPHERE_BOX_ALGORITHM - m_sphereBoxCF->~btCollisionAlgorithmCreateFunc(); - btAlignedFree( m_sphereBoxCF); - m_boxSphereCF->~btCollisionAlgorithmCreateFunc(); - btAlignedFree( m_boxSphereCF); -#endif //USE_BUGGY_SPHERE_BOX_ALGORITHM - - m_sphereTriangleCF->~btCollisionAlgorithmCreateFunc(); - btAlignedFree( m_sphereTriangleCF); - m_triangleSphereCF->~btCollisionAlgorithmCreateFunc(); - btAlignedFree( m_triangleSphereCF); - m_boxBoxCF->~btCollisionAlgorithmCreateFunc(); - btAlignedFree( m_boxBoxCF); - - m_convexPlaneCF->~btCollisionAlgorithmCreateFunc(); - btAlignedFree( m_convexPlaneCF); - m_planeConvexCF->~btCollisionAlgorithmCreateFunc(); - btAlignedFree( m_planeConvexCF); - - m_simplexSolver->~btVoronoiSimplexSolver(); - btAlignedFree(m_simplexSolver); - - m_pdSolver->~btConvexPenetrationDepthSolver(); - - btAlignedFree(m_pdSolver); - - -} - - -btCollisionAlgorithmCreateFunc* btDefaultCollisionConfiguration::getCollisionAlgorithmCreateFunc(int proxyType0,int proxyType1) -{ - - - - if ((proxyType0 == SPHERE_SHAPE_PROXYTYPE) && (proxyType1==SPHERE_SHAPE_PROXYTYPE)) - { - return m_sphereSphereCF; - } -#ifdef USE_BUGGY_SPHERE_BOX_ALGORITHM - if ((proxyType0 == SPHERE_SHAPE_PROXYTYPE) && (proxyType1==BOX_SHAPE_PROXYTYPE)) - { - return m_sphereBoxCF; - } - - if ((proxyType0 == BOX_SHAPE_PROXYTYPE ) && (proxyType1==SPHERE_SHAPE_PROXYTYPE)) - { - return m_boxSphereCF; - } -#endif //USE_BUGGY_SPHERE_BOX_ALGORITHM - - - if ((proxyType0 == SPHERE_SHAPE_PROXYTYPE ) && (proxyType1==TRIANGLE_SHAPE_PROXYTYPE)) - { - return m_sphereTriangleCF; - } - - if ((proxyType0 == TRIANGLE_SHAPE_PROXYTYPE ) && (proxyType1==SPHERE_SHAPE_PROXYTYPE)) - { - return m_triangleSphereCF; - } - - if ((proxyType0 == BOX_SHAPE_PROXYTYPE) && (proxyType1 == BOX_SHAPE_PROXYTYPE)) - { - return m_boxBoxCF; - } - - if (btBroadphaseProxy::isConvex(proxyType0) && (proxyType1 == STATIC_PLANE_PROXYTYPE)) - { - return m_convexPlaneCF; - } - - if (btBroadphaseProxy::isConvex(proxyType1) && (proxyType0 == STATIC_PLANE_PROXYTYPE)) - { - return m_planeConvexCF; - } - - - - if (btBroadphaseProxy::isConvex(proxyType0) && btBroadphaseProxy::isConvex(proxyType1)) - { - return m_convexConvexCreateFunc; - } - - if (btBroadphaseProxy::isConvex(proxyType0) && btBroadphaseProxy::isConcave(proxyType1)) - { - return m_convexConcaveCreateFunc; - } - - if (btBroadphaseProxy::isConvex(proxyType1) && btBroadphaseProxy::isConcave(proxyType0)) - { - return m_swappedConvexConcaveCreateFunc; - } - - if (btBroadphaseProxy::isCompound(proxyType0)) - { - return m_compoundCreateFunc; - } else - { - if (btBroadphaseProxy::isCompound(proxyType1)) - { - return m_swappedCompoundCreateFunc; - } - } - - //failed to find an algorithm - return m_emptyCreateFunc; -} - -void btDefaultCollisionConfiguration::setConvexConvexMultipointIterations(int numPerturbationIterations, int minimumPointsPerturbationThreshold) -{ - btConvexConvexAlgorithm::CreateFunc* convexConvex = (btConvexConvexAlgorithm::CreateFunc*) m_convexConvexCreateFunc; - convexConvex->m_numPerturbationIterations = numPerturbationIterations; - convexConvex->m_minimumPointsPerturbationThreshold = minimumPointsPerturbationThreshold; -} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h b/extern/bullet2/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h deleted file mode 100644 index 6aa0d8c270f..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h +++ /dev/null @@ -1,135 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BT_DEFAULT_COLLISION_CONFIGURATION -#define BT_DEFAULT_COLLISION_CONFIGURATION - -#include "btCollisionConfiguration.h" -class btVoronoiSimplexSolver; -class btConvexPenetrationDepthSolver; - -struct btDefaultCollisionConstructionInfo -{ - btStackAlloc* m_stackAlloc; - btPoolAllocator* m_persistentManifoldPool; - btPoolAllocator* m_collisionAlgorithmPool; - int m_defaultMaxPersistentManifoldPoolSize; - int m_defaultMaxCollisionAlgorithmPoolSize; - int m_customCollisionAlgorithmMaxElementSize; - int m_defaultStackAllocatorSize; - int m_useEpaPenetrationAlgorithm; - - btDefaultCollisionConstructionInfo() - :m_stackAlloc(0), - m_persistentManifoldPool(0), - m_collisionAlgorithmPool(0), - m_defaultMaxPersistentManifoldPoolSize(4096), - m_defaultMaxCollisionAlgorithmPoolSize(4096), - m_customCollisionAlgorithmMaxElementSize(0), - m_defaultStackAllocatorSize(0), - m_useEpaPenetrationAlgorithm(true) - { - } -}; - - - -///btCollisionConfiguration allows to configure Bullet collision detection -///stack allocator, pool memory allocators -///@todo: describe the meaning -class btDefaultCollisionConfiguration : public btCollisionConfiguration -{ - -protected: - - int m_persistentManifoldPoolSize; - - btStackAlloc* m_stackAlloc; - bool m_ownsStackAllocator; - - btPoolAllocator* m_persistentManifoldPool; - bool m_ownsPersistentManifoldPool; - - - btPoolAllocator* m_collisionAlgorithmPool; - bool m_ownsCollisionAlgorithmPool; - - //default simplex/penetration depth solvers - btVoronoiSimplexSolver* m_simplexSolver; - btConvexPenetrationDepthSolver* m_pdSolver; - - //default CreationFunctions, filling the m_doubleDispatch table - btCollisionAlgorithmCreateFunc* m_convexConvexCreateFunc; - btCollisionAlgorithmCreateFunc* m_convexConcaveCreateFunc; - btCollisionAlgorithmCreateFunc* m_swappedConvexConcaveCreateFunc; - btCollisionAlgorithmCreateFunc* m_compoundCreateFunc; - btCollisionAlgorithmCreateFunc* m_swappedCompoundCreateFunc; - btCollisionAlgorithmCreateFunc* m_emptyCreateFunc; - btCollisionAlgorithmCreateFunc* m_sphereSphereCF; -#ifdef USE_BUGGY_SPHERE_BOX_ALGORITHM - btCollisionAlgorithmCreateFunc* m_sphereBoxCF; - btCollisionAlgorithmCreateFunc* m_boxSphereCF; -#endif //USE_BUGGY_SPHERE_BOX_ALGORITHM - - btCollisionAlgorithmCreateFunc* m_boxBoxCF; - btCollisionAlgorithmCreateFunc* m_sphereTriangleCF; - btCollisionAlgorithmCreateFunc* m_triangleSphereCF; - btCollisionAlgorithmCreateFunc* m_planeConvexCF; - btCollisionAlgorithmCreateFunc* m_convexPlaneCF; - -public: - - - btDefaultCollisionConfiguration(const btDefaultCollisionConstructionInfo& constructionInfo = btDefaultCollisionConstructionInfo()); - - virtual ~btDefaultCollisionConfiguration(); - - ///memory pools - virtual btPoolAllocator* getPersistentManifoldPool() - { - return m_persistentManifoldPool; - } - - virtual btPoolAllocator* getCollisionAlgorithmPool() - { - return m_collisionAlgorithmPool; - } - - virtual btStackAlloc* getStackAllocator() - { - return m_stackAlloc; - } - - virtual btVoronoiSimplexSolver* getSimplexSolver() - { - return m_simplexSolver; - } - - - virtual btCollisionAlgorithmCreateFunc* getCollisionAlgorithmCreateFunc(int proxyType0,int proxyType1); - - ///Use this method to allow to generate multiple contact points between at once, between two objects using the generic convex-convex algorithm. - ///By default, this feature is disabled for best performance. - ///@param numPerturbationIterations controls the number of collision queries. Set it to zero to disable the feature. - ///@param minimumPointsPerturbationThreshold is the minimum number of points in the contact cache, above which the feature is disabled - ///3 is a good value for both params, if you want to enable the feature. This is because the default contact cache contains a maximum of 4 points, and one collision query at the unperturbed orientation is performed first. - ///See Bullet/Demos/CollisionDemo for an example how this feature gathers multiple points. - ///@todo we could add a per-object setting of those parameters, for level-of-detail collision detection. - void setConvexConvexMultipointIterations(int numPerturbationIterations=3, int minimumPointsPerturbationThreshold = 3); - -}; - -#endif //BT_DEFAULT_COLLISION_CONFIGURATION - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp deleted file mode 100644 index 936054387c4..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btEmptyCollisionAlgorithm.h" - - - -btEmptyAlgorithm::btEmptyAlgorithm(const btCollisionAlgorithmConstructionInfo& ci) - : btCollisionAlgorithm(ci) -{ -} - -void btEmptyAlgorithm::processCollision (btCollisionObject* ,btCollisionObject* ,const btDispatcherInfo& ,btManifoldResult* ) -{ -} - -btScalar btEmptyAlgorithm::calculateTimeOfImpact(btCollisionObject* ,btCollisionObject* ,const btDispatcherInfo& ,btManifoldResult* ) -{ - return btScalar(1.); -} - - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h deleted file mode 100644 index e54721dec21..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef EMPTY_ALGORITH -#define EMPTY_ALGORITH -#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" -#include "btCollisionCreateFunc.h" -#include "btCollisionDispatcher.h" - -#define ATTRIBUTE_ALIGNED(a) - -///EmptyAlgorithm is a stub for unsupported collision pairs. -///The dispatcher can dispatch a persistent btEmptyAlgorithm to avoid a search every frame. -class btEmptyAlgorithm : public btCollisionAlgorithm -{ - -public: - - btEmptyAlgorithm(const btCollisionAlgorithmConstructionInfo& ci); - - virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual void getAllContactManifolds(btManifoldArray& manifoldArray) - { - } - - struct CreateFunc :public btCollisionAlgorithmCreateFunc - { - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) - { - (void)body0; - (void)body1; - void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btEmptyAlgorithm)); - return new(mem) btEmptyAlgorithm(ci); - } - }; - -} ATTRIBUTE_ALIGNED(16); - -#endif //EMPTY_ALGORITH diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btGhostObject.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btGhostObject.cpp deleted file mode 100644 index 86141fa6899..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btGhostObject.cpp +++ /dev/null @@ -1,171 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2008 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btGhostObject.h" -#include "btCollisionWorld.h" -#include "BulletCollision/CollisionShapes/btConvexShape.h" -#include "LinearMath/btAabbUtil2.h" - -btGhostObject::btGhostObject() -{ - m_internalType = CO_GHOST_OBJECT; -} - -btGhostObject::~btGhostObject() -{ - ///btGhostObject should have been removed from the world, so no overlapping objects - btAssert(!m_overlappingObjects.size()); -} - - -void btGhostObject::addOverlappingObjectInternal(btBroadphaseProxy* otherProxy,btBroadphaseProxy* thisProxy) -{ - btCollisionObject* otherObject = (btCollisionObject*)otherProxy->m_clientObject; - btAssert(otherObject); - ///if this linearSearch becomes too slow (too many overlapping objects) we should add a more appropriate data structure - int index = m_overlappingObjects.findLinearSearch(otherObject); - if (index==m_overlappingObjects.size()) - { - //not found - m_overlappingObjects.push_back(otherObject); - } -} - -void btGhostObject::removeOverlappingObjectInternal(btBroadphaseProxy* otherProxy,btDispatcher* dispatcher,btBroadphaseProxy* thisProxy) -{ - btCollisionObject* otherObject = (btCollisionObject*)otherProxy->m_clientObject; - btAssert(otherObject); - int index = m_overlappingObjects.findLinearSearch(otherObject); - if (index~btHashedOverlappingPairCache(); - btAlignedFree( m_hashPairCache ); -} - -void btPairCachingGhostObject::addOverlappingObjectInternal(btBroadphaseProxy* otherProxy,btBroadphaseProxy* thisProxy) -{ - btBroadphaseProxy*actualThisProxy = thisProxy ? thisProxy : getBroadphaseHandle(); - btAssert(actualThisProxy); - - btCollisionObject* otherObject = (btCollisionObject*)otherProxy->m_clientObject; - btAssert(otherObject); - int index = m_overlappingObjects.findLinearSearch(otherObject); - if (index==m_overlappingObjects.size()) - { - m_overlappingObjects.push_back(otherObject); - m_hashPairCache->addOverlappingPair(actualThisProxy,otherProxy); - } -} - -void btPairCachingGhostObject::removeOverlappingObjectInternal(btBroadphaseProxy* otherProxy,btDispatcher* dispatcher,btBroadphaseProxy* thisProxy1) -{ - btCollisionObject* otherObject = (btCollisionObject*)otherProxy->m_clientObject; - btBroadphaseProxy* actualThisProxy = thisProxy1 ? thisProxy1 : getBroadphaseHandle(); - btAssert(actualThisProxy); - - btAssert(otherObject); - int index = m_overlappingObjects.findLinearSearch(otherObject); - if (indexremoveOverlappingPair(actualThisProxy,otherProxy,dispatcher); - } -} - - -void btGhostObject::convexSweepTest(const btConvexShape* castShape, const btTransform& convexFromWorld, const btTransform& convexToWorld, btCollisionWorld::ConvexResultCallback& resultCallback, btScalar allowedCcdPenetration) const -{ - btTransform convexFromTrans,convexToTrans; - convexFromTrans = convexFromWorld; - convexToTrans = convexToWorld; - btVector3 castShapeAabbMin, castShapeAabbMax; - /* Compute AABB that encompasses angular movement */ - { - btVector3 linVel, angVel; - btTransformUtil::calculateVelocity (convexFromTrans, convexToTrans, 1.0, linVel, angVel); - btTransform R; - R.setIdentity (); - R.setRotation (convexFromTrans.getRotation()); - castShape->calculateTemporalAabb (R, linVel, angVel, 1.0, castShapeAabbMin, castShapeAabbMax); - } - - /// go over all objects, and if the ray intersects their aabb + cast shape aabb, - // do a ray-shape query using convexCaster (CCD) - int i; - for (i=0;igetBroadphaseHandle())) { - //RigidcollisionObject* collisionObject = ctrl->GetRigidcollisionObject(); - btVector3 collisionObjectAabbMin,collisionObjectAabbMax; - collisionObject->getCollisionShape()->getAabb(collisionObject->getWorldTransform(),collisionObjectAabbMin,collisionObjectAabbMax); - AabbExpand (collisionObjectAabbMin, collisionObjectAabbMax, castShapeAabbMin, castShapeAabbMax); - btScalar hitLambda = btScalar(1.); //could use resultCallback.m_closestHitFraction, but needs testing - btVector3 hitNormal; - if (btRayAabb(convexFromWorld.getOrigin(),convexToWorld.getOrigin(),collisionObjectAabbMin,collisionObjectAabbMax,hitLambda,hitNormal)) - { - btCollisionWorld::objectQuerySingle(castShape, convexFromTrans,convexToTrans, - collisionObject, - collisionObject->getCollisionShape(), - collisionObject->getWorldTransform(), - resultCallback, - allowedCcdPenetration); - } - } - } - -} - -void btGhostObject::rayTest(const btVector3& rayFromWorld, const btVector3& rayToWorld, btCollisionWorld::RayResultCallback& resultCallback) const -{ - btTransform rayFromTrans; - rayFromTrans.setIdentity(); - rayFromTrans.setOrigin(rayFromWorld); - btTransform rayToTrans; - rayToTrans.setIdentity(); - rayToTrans.setOrigin(rayToWorld); - - - int i; - for (i=0;igetBroadphaseHandle())) - { - btCollisionWorld::rayTestSingle(rayFromTrans,rayToTrans, - collisionObject, - collisionObject->getCollisionShape(), - collisionObject->getWorldTransform(), - resultCallback); - } - } -} - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btGhostObject.h b/extern/bullet2/BulletCollision/CollisionDispatch/btGhostObject.h deleted file mode 100644 index 61910d9b30d..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btGhostObject.h +++ /dev/null @@ -1,175 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2008 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BT_GHOST_OBJECT_H -#define BT_GHOST_OBJECT_H - - -#include "btCollisionObject.h" -#include "BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h" -#include "LinearMath/btAlignedAllocator.h" -#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h" -#include "btCollisionWorld.h" - -class btConvexShape; - -class btDispatcher; - -///The btGhostObject can keep track of all objects that are overlapping -///By default, this overlap is based on the AABB -///This is useful for creating a character controller, collision sensors/triggers, explosions etc. -///We plan on adding rayTest and other queries for the btGhostObject -ATTRIBUTE_ALIGNED16(class) btGhostObject : public btCollisionObject -{ -protected: - - btAlignedObjectArray m_overlappingObjects; - -public: - - btGhostObject(); - - virtual ~btGhostObject(); - - void convexSweepTest(const class btConvexShape* castShape, const btTransform& convexFromWorld, const btTransform& convexToWorld, btCollisionWorld::ConvexResultCallback& resultCallback, btScalar allowedCcdPenetration = 0.f) const; - - void rayTest(const btVector3& rayFromWorld, const btVector3& rayToWorld, btCollisionWorld::RayResultCallback& resultCallback) const; - - ///this method is mainly for expert/internal use only. - virtual void addOverlappingObjectInternal(btBroadphaseProxy* otherProxy, btBroadphaseProxy* thisProxy=0); - ///this method is mainly for expert/internal use only. - virtual void removeOverlappingObjectInternal(btBroadphaseProxy* otherProxy,btDispatcher* dispatcher,btBroadphaseProxy* thisProxy=0); - - int getNumOverlappingObjects() const - { - return m_overlappingObjects.size(); - } - - btCollisionObject* getOverlappingObject(int index) - { - return m_overlappingObjects[index]; - } - - const btCollisionObject* getOverlappingObject(int index) const - { - return m_overlappingObjects[index]; - } - - btAlignedObjectArray& getOverlappingPairs() - { - return m_overlappingObjects; - } - - const btAlignedObjectArray getOverlappingPairs() const - { - return m_overlappingObjects; - } - - // - // internal cast - // - - static const btGhostObject* upcast(const btCollisionObject* colObj) - { - if (colObj->getInternalType()==CO_GHOST_OBJECT) - return (const btGhostObject*)colObj; - return 0; - } - static btGhostObject* upcast(btCollisionObject* colObj) - { - if (colObj->getInternalType()==CO_GHOST_OBJECT) - return (btGhostObject*)colObj; - return 0; - } - -}; - -class btPairCachingGhostObject : public btGhostObject -{ - btHashedOverlappingPairCache* m_hashPairCache; - -public: - - btPairCachingGhostObject(); - - virtual ~btPairCachingGhostObject(); - - ///this method is mainly for expert/internal use only. - virtual void addOverlappingObjectInternal(btBroadphaseProxy* otherProxy, btBroadphaseProxy* thisProxy=0); - - virtual void removeOverlappingObjectInternal(btBroadphaseProxy* otherProxy,btDispatcher* dispatcher,btBroadphaseProxy* thisProxy=0); - - btHashedOverlappingPairCache* getOverlappingPairCache() - { - return m_hashPairCache; - } - -}; - - - -///The btGhostPairCallback interfaces and forwards adding and removal of overlapping pairs from the btBroadphaseInterface to btGhostObject. -class btGhostPairCallback : public btOverlappingPairCallback -{ - -public: - btGhostPairCallback() - { - } - - virtual ~btGhostPairCallback() - { - - } - - virtual btBroadphasePair* addOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) - { - btCollisionObject* colObj0 = (btCollisionObject*) proxy0->m_clientObject; - btCollisionObject* colObj1 = (btCollisionObject*) proxy1->m_clientObject; - btGhostObject* ghost0 = btGhostObject::upcast(colObj0); - btGhostObject* ghost1 = btGhostObject::upcast(colObj1); - if (ghost0) - ghost0->addOverlappingObjectInternal(proxy1, proxy0); - if (ghost1) - ghost1->addOverlappingObjectInternal(proxy0, proxy1); - return 0; - } - - virtual void* removeOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1,btDispatcher* dispatcher) - { - btCollisionObject* colObj0 = (btCollisionObject*) proxy0->m_clientObject; - btCollisionObject* colObj1 = (btCollisionObject*) proxy1->m_clientObject; - btGhostObject* ghost0 = btGhostObject::upcast(colObj0); - btGhostObject* ghost1 = btGhostObject::upcast(colObj1); - if (ghost0) - ghost0->removeOverlappingObjectInternal(proxy1,dispatcher,proxy0); - if (ghost1) - ghost1->removeOverlappingObjectInternal(proxy0,dispatcher,proxy1); - return 0; - } - - virtual void removeOverlappingPairsContainingProxy(btBroadphaseProxy* proxy0,btDispatcher* dispatcher) - { - btAssert(0); - //need to keep track of all ghost objects and call them here - //m_hashPairCache->removeOverlappingPairsContainingProxy(proxy0,dispatcher); - } - - - -}; - -#endif - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp deleted file mode 100644 index 5cceb04dbb4..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp +++ /dev/null @@ -1,772 +0,0 @@ -#include "btInternalEdgeUtility.h" - -#include "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h" -#include "BulletCollision/CollisionShapes/btTriangleShape.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "BulletCollision/NarrowPhaseCollision/btManifoldPoint.h" -#include "LinearMath/btIDebugDraw.h" - - -//#define DEBUG_INTERNAL_EDGE - - -#ifdef DEBUG_INTERNAL_EDGE -#include -#endif //DEBUG_INTERNAL_EDGE - - -#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW -static btIDebugDraw* gDebugDrawer = 0; - -void btSetDebugDrawer(btIDebugDraw* debugDrawer) -{ - gDebugDrawer = debugDrawer; -} - -static void btDebugDrawLine(const btVector3& from,const btVector3& to, const btVector3& color) -{ - if (gDebugDrawer) - gDebugDrawer->drawLine(from,to,color); -} -#endif //BT_INTERNAL_EDGE_DEBUG_DRAW - - -static int btGetHash(int partId, int triangleIndex) -{ - int hash = (partId<<(31-MAX_NUM_PARTS_IN_BITS)) | triangleIndex; - return hash; -} - - - -static btScalar btGetAngle(const btVector3& edgeA, const btVector3& normalA,const btVector3& normalB) -{ - const btVector3 refAxis0 = edgeA; - const btVector3 refAxis1 = normalA; - const btVector3 swingAxis = normalB; - btScalar angle = btAtan2(swingAxis.dot(refAxis0), swingAxis.dot(refAxis1)); - return angle; -} - - -struct btConnectivityProcessor : public btTriangleCallback -{ - int m_partIdA; - int m_triangleIndexA; - btVector3* m_triangleVerticesA; - btTriangleInfoMap* m_triangleInfoMap; - - - virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex) - { - //skip self-collisions - if ((m_partIdA == partId) && (m_triangleIndexA == triangleIndex)) - return; - - //skip duplicates (disabled for now) - //if ((m_partIdA <= partId) && (m_triangleIndexA <= triangleIndex)) - // return; - - //search for shared vertices and edges - int numshared = 0; - int sharedVertsA[3]={-1,-1,-1}; - int sharedVertsB[3]={-1,-1,-1}; - - ///skip degenerate triangles - btScalar crossBSqr = ((triangle[1]-triangle[0]).cross(triangle[2]-triangle[0])).length2(); - if (crossBSqr < m_triangleInfoMap->m_equalVertexThreshold) - return; - - - btScalar crossASqr = ((m_triangleVerticesA[1]-m_triangleVerticesA[0]).cross(m_triangleVerticesA[2]-m_triangleVerticesA[0])).length2(); - ///skip degenerate triangles - if (crossASqr< m_triangleInfoMap->m_equalVertexThreshold) - return; - -#if 0 - printf("triangle A[0] = (%f,%f,%f)\ntriangle A[1] = (%f,%f,%f)\ntriangle A[2] = (%f,%f,%f)\n", - m_triangleVerticesA[0].getX(),m_triangleVerticesA[0].getY(),m_triangleVerticesA[0].getZ(), - m_triangleVerticesA[1].getX(),m_triangleVerticesA[1].getY(),m_triangleVerticesA[1].getZ(), - m_triangleVerticesA[2].getX(),m_triangleVerticesA[2].getY(),m_triangleVerticesA[2].getZ()); - - printf("partId=%d, triangleIndex=%d\n",partId,triangleIndex); - printf("triangle B[0] = (%f,%f,%f)\ntriangle B[1] = (%f,%f,%f)\ntriangle B[2] = (%f,%f,%f)\n", - triangle[0].getX(),triangle[0].getY(),triangle[0].getZ(), - triangle[1].getX(),triangle[1].getY(),triangle[1].getZ(), - triangle[2].getX(),triangle[2].getY(),triangle[2].getZ()); -#endif - - for (int i=0;i<3;i++) - { - for (int j=0;j<3;j++) - { - if ( (m_triangleVerticesA[i]-triangle[j]).length2() < m_triangleInfoMap->m_equalVertexThreshold) - { - sharedVertsA[numshared] = i; - sharedVertsB[numshared] = j; - numshared++; - ///degenerate case - if(numshared >= 3) - return; - } - } - ///degenerate case - if(numshared >= 3) - return; - } - switch (numshared) - { - case 0: - { - break; - } - case 1: - { - //shared vertex - break; - } - case 2: - { - //shared edge - //we need to make sure the edge is in the order V2V0 and not V0V2 so that the signs are correct - if (sharedVertsA[0] == 0 && sharedVertsA[1] == 2) - { - sharedVertsA[0] = 2; - sharedVertsA[1] = 0; - int tmp = sharedVertsB[1]; - sharedVertsB[1] = sharedVertsB[0]; - sharedVertsB[0] = tmp; - } - - int hash = btGetHash(m_partIdA,m_triangleIndexA); - - btTriangleInfo* info = m_triangleInfoMap->find(hash); - if (!info) - { - btTriangleInfo tmp; - m_triangleInfoMap->insert(hash,tmp); - info = m_triangleInfoMap->find(hash); - } - - int sumvertsA = sharedVertsA[0]+sharedVertsA[1]; - int otherIndexA = 3-sumvertsA; - - - btVector3 edge(m_triangleVerticesA[sharedVertsA[1]]-m_triangleVerticesA[sharedVertsA[0]]); - - btTriangleShape tA(m_triangleVerticesA[0],m_triangleVerticesA[1],m_triangleVerticesA[2]); - int otherIndexB = 3-(sharedVertsB[0]+sharedVertsB[1]); - - btTriangleShape tB(triangle[sharedVertsB[1]],triangle[sharedVertsB[0]],triangle[otherIndexB]); - //btTriangleShape tB(triangle[0],triangle[1],triangle[2]); - - btVector3 normalA; - btVector3 normalB; - tA.calcNormal(normalA); - tB.calcNormal(normalB); - edge.normalize(); - btVector3 edgeCrossA = edge.cross(normalA).normalize(); - - { - btVector3 tmp = m_triangleVerticesA[otherIndexA]-m_triangleVerticesA[sharedVertsA[0]]; - if (edgeCrossA.dot(tmp) < 0) - { - edgeCrossA*=-1; - } - } - - btVector3 edgeCrossB = edge.cross(normalB).normalize(); - - { - btVector3 tmp = triangle[otherIndexB]-triangle[sharedVertsB[0]]; - if (edgeCrossB.dot(tmp) < 0) - { - edgeCrossB*=-1; - } - } - - btScalar angle2 = 0; - btScalar ang4 = 0.f; - - - btVector3 calculatedEdge = edgeCrossA.cross(edgeCrossB); - btScalar len2 = calculatedEdge.length2(); - - btScalar correctedAngle(0); - btVector3 calculatedNormalB = normalA; - bool isConvex = false; - - if (len2m_planarEpsilon) - { - angle2 = 0.f; - ang4 = 0.f; - } else - { - - calculatedEdge.normalize(); - btVector3 calculatedNormalA = calculatedEdge.cross(edgeCrossA); - calculatedNormalA.normalize(); - angle2 = btGetAngle(calculatedNormalA,edgeCrossA,edgeCrossB); - ang4 = SIMD_PI-angle2; - btScalar dotA = normalA.dot(edgeCrossB); - ///@todo: check if we need some epsilon, due to floating point imprecision - isConvex = (dotA<0.); - - correctedAngle = isConvex ? ang4 : -ang4; - btQuaternion orn2(calculatedEdge,-correctedAngle); - calculatedNormalB = btMatrix3x3(orn2)*normalA; - - - } - - - - - - //alternatively use - //btVector3 calculatedNormalB2 = quatRotate(orn,normalA); - - - switch (sumvertsA) - { - case 1: - { - btVector3 edge = m_triangleVerticesA[0]-m_triangleVerticesA[1]; - btQuaternion orn(edge,-correctedAngle); - btVector3 computedNormalB = quatRotate(orn,normalA); - btScalar bla = computedNormalB.dot(normalB); - if (bla<0) - { - computedNormalB*=-1; - info->m_flags |= TRI_INFO_V0V1_SWAP_NORMALB; - } -#ifdef DEBUG_INTERNAL_EDGE - if ((computedNormalB-normalB).length()>0.0001) - { - printf("warning: normals not identical\n"); - } -#endif//DEBUG_INTERNAL_EDGE - - info->m_edgeV0V1Angle = -correctedAngle; - - if (isConvex) - info->m_flags |= TRI_INFO_V0V1_CONVEX; - break; - } - case 2: - { - btVector3 edge = m_triangleVerticesA[2]-m_triangleVerticesA[0]; - btQuaternion orn(edge,-correctedAngle); - btVector3 computedNormalB = quatRotate(orn,normalA); - if (computedNormalB.dot(normalB)<0) - { - computedNormalB*=-1; - info->m_flags |= TRI_INFO_V2V0_SWAP_NORMALB; - } - -#ifdef DEBUG_INTERNAL_EDGE - if ((computedNormalB-normalB).length()>0.0001) - { - printf("warning: normals not identical\n"); - } -#endif //DEBUG_INTERNAL_EDGE - info->m_edgeV2V0Angle = -correctedAngle; - if (isConvex) - info->m_flags |= TRI_INFO_V2V0_CONVEX; - break; - } - case 3: - { - btVector3 edge = m_triangleVerticesA[1]-m_triangleVerticesA[2]; - btQuaternion orn(edge,-correctedAngle); - btVector3 computedNormalB = quatRotate(orn,normalA); - if (computedNormalB.dot(normalB)<0) - { - info->m_flags |= TRI_INFO_V1V2_SWAP_NORMALB; - computedNormalB*=-1; - } -#ifdef DEBUG_INTERNAL_EDGE - if ((computedNormalB-normalB).length()>0.0001) - { - printf("warning: normals not identical\n"); - } -#endif //DEBUG_INTERNAL_EDGE - info->m_edgeV1V2Angle = -correctedAngle; - - if (isConvex) - info->m_flags |= TRI_INFO_V1V2_CONVEX; - break; - } - } - - break; - } - default: - { - // printf("warning: duplicate triangle\n"); - } - - } - } -}; -///////////////////////////////////////////////////////// -///////////////////////////////////////////////////////// - -void btGenerateInternalEdgeInfo (btBvhTriangleMeshShape*trimeshShape, btTriangleInfoMap* triangleInfoMap) -{ - //the user pointer shouldn't already be used for other purposes, we intend to store connectivity info there! - if (trimeshShape->getTriangleInfoMap()) - return; - - trimeshShape->setTriangleInfoMap(triangleInfoMap); - - btStridingMeshInterface* meshInterface = trimeshShape->getMeshInterface(); - const btVector3& meshScaling = meshInterface->getScaling(); - - for (int partId = 0; partId< meshInterface->getNumSubParts();partId++) - { - const unsigned char *vertexbase = 0; - int numverts = 0; - PHY_ScalarType type = PHY_INTEGER; - int stride = 0; - const unsigned char *indexbase = 0; - int indexstride = 0; - int numfaces = 0; - PHY_ScalarType indicestype = PHY_INTEGER; - //PHY_ScalarType indexType=0; - - btVector3 triangleVerts[3]; - meshInterface->getLockedReadOnlyVertexIndexBase(&vertexbase,numverts, type,stride,&indexbase,indexstride,numfaces,indicestype,partId); - btVector3 aabbMin,aabbMax; - - for (int triangleIndex = 0 ; triangleIndex < numfaces;triangleIndex++) - { - unsigned int* gfxbase = (unsigned int*)(indexbase+triangleIndex*indexstride); - - for (int j=2;j>=0;j--) - { - - int graphicsindex = indicestype==PHY_SHORT?((unsigned short*)gfxbase)[j]:gfxbase[j]; - if (type == PHY_FLOAT) - { - float* graphicsbase = (float*)(vertexbase+graphicsindex*stride); - triangleVerts[j] = btVector3( - graphicsbase[0]*meshScaling.getX(), - graphicsbase[1]*meshScaling.getY(), - graphicsbase[2]*meshScaling.getZ()); - } - else - { - double* graphicsbase = (double*)(vertexbase+graphicsindex*stride); - triangleVerts[j] = btVector3( btScalar(graphicsbase[0]*meshScaling.getX()), btScalar(graphicsbase[1]*meshScaling.getY()), btScalar(graphicsbase[2]*meshScaling.getZ())); - } - } - aabbMin.setValue(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); - aabbMax.setValue(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); - aabbMin.setMin(triangleVerts[0]); - aabbMax.setMax(triangleVerts[0]); - aabbMin.setMin(triangleVerts[1]); - aabbMax.setMax(triangleVerts[1]); - aabbMin.setMin(triangleVerts[2]); - aabbMax.setMax(triangleVerts[2]); - - btConnectivityProcessor connectivityProcessor; - connectivityProcessor.m_partIdA = partId; - connectivityProcessor.m_triangleIndexA = triangleIndex; - connectivityProcessor.m_triangleVerticesA = &triangleVerts[0]; - connectivityProcessor.m_triangleInfoMap = triangleInfoMap; - - trimeshShape->processAllTriangles(&connectivityProcessor,aabbMin,aabbMax); - } - - } - -} - - - - -// Given a point and a line segment (defined by two points), compute the closest point -// in the line. Cap the point at the endpoints of the line segment. -void btNearestPointInLineSegment(const btVector3 &point, const btVector3& line0, const btVector3& line1, btVector3& nearestPoint) -{ - btVector3 lineDelta = line1 - line0; - - // Handle degenerate lines - if ( lineDelta.fuzzyZero()) - { - nearestPoint = line0; - } - else - { - btScalar delta = (point-line0).dot(lineDelta) / (lineDelta).dot(lineDelta); - - // Clamp the point to conform to the segment's endpoints - if ( delta < 0 ) - delta = 0; - else if ( delta > 1 ) - delta = 1; - - nearestPoint = line0 + lineDelta*delta; - } -} - - - - -bool btClampNormal(const btVector3& edge,const btVector3& tri_normal_org,const btVector3& localContactNormalOnB, btScalar correctedEdgeAngle, btVector3 & clampedLocalNormal) -{ - btVector3 tri_normal = tri_normal_org; - //we only have a local triangle normal, not a local contact normal -> only normal in world space... - //either compute the current angle all in local space, or all in world space - - btVector3 edgeCross = edge.cross(tri_normal).normalize(); - btScalar curAngle = btGetAngle(edgeCross,tri_normal,localContactNormalOnB); - - if (correctedEdgeAngle<0) - { - if (curAngle < correctedEdgeAngle) - { - btScalar diffAngle = correctedEdgeAngle-curAngle; - btQuaternion rotation(edge,diffAngle ); - clampedLocalNormal = btMatrix3x3(rotation)*localContactNormalOnB; - return true; - } - } - - if (correctedEdgeAngle>=0) - { - if (curAngle > correctedEdgeAngle) - { - btScalar diffAngle = correctedEdgeAngle-curAngle; - btQuaternion rotation(edge,diffAngle ); - clampedLocalNormal = btMatrix3x3(rotation)*localContactNormalOnB; - return true; - } - } - return false; -} - - - -/// Changes a btManifoldPoint collision normal to the normal from the mesh. -void btAdjustInternalEdgeContacts(btManifoldPoint& cp, const btCollisionObject* colObj0,const btCollisionObject* colObj1, int partId0, int index0, int normalAdjustFlags) -{ - //btAssert(colObj0->getCollisionShape()->getShapeType() == TRIANGLE_SHAPE_PROXYTYPE); - if (colObj0->getCollisionShape()->getShapeType() != TRIANGLE_SHAPE_PROXYTYPE) - return; - - btBvhTriangleMeshShape* trimesh = (btBvhTriangleMeshShape*)colObj0->getRootCollisionShape(); - btTriangleInfoMap* triangleInfoMapPtr = (btTriangleInfoMap*) trimesh->getTriangleInfoMap(); - if (!triangleInfoMapPtr) - return; - - int hash = btGetHash(partId0,index0); - - - btTriangleInfo* info = triangleInfoMapPtr->find(hash); - if (!info) - return; - - btScalar frontFacing = (normalAdjustFlags & BT_TRIANGLE_CONVEX_BACKFACE_MODE)==0? 1.f : -1.f; - - const btTriangleShape* tri_shape = static_cast(colObj0->getCollisionShape()); - btVector3 v0,v1,v2; - tri_shape->getVertex(0,v0); - tri_shape->getVertex(1,v1); - tri_shape->getVertex(2,v2); - - btVector3 center = (v0+v1+v2)*btScalar(1./3.); - - btVector3 red(1,0,0), green(0,1,0),blue(0,0,1),white(1,1,1),black(0,0,0); - btVector3 tri_normal; - tri_shape->calcNormal(tri_normal); - - //btScalar dot = tri_normal.dot(cp.m_normalWorldOnB); - btVector3 nearest; - btNearestPointInLineSegment(cp.m_localPointB,v0,v1,nearest); - - btVector3 contact = cp.m_localPointB; -#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW - const btTransform& tr = colObj0->getWorldTransform(); - btDebugDrawLine(tr*nearest,tr*cp.m_localPointB,red); -#endif //BT_INTERNAL_EDGE_DEBUG_DRAW - - - - bool isNearEdge = false; - - int numConcaveEdgeHits = 0; - int numConvexEdgeHits = 0; - - btVector3 localContactNormalOnB = colObj0->getWorldTransform().getBasis().transpose() * cp.m_normalWorldOnB; - localContactNormalOnB.normalize();//is this necessary? - - if ((info->m_edgeV0V1Angle)< SIMD_2_PI) - { -#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW - btDebugDrawLine(tr*contact,tr*(contact+cp.m_normalWorldOnB*10),black); -#endif - btScalar len = (contact-nearest).length(); - if(lenm_edgeDistanceThreshold) - { - btVector3 edge(v0-v1); - isNearEdge = true; - - if (info->m_edgeV0V1Angle==btScalar(0)) - { - numConcaveEdgeHits++; - } else - { - - bool isEdgeConvex = (info->m_flags & TRI_INFO_V0V1_CONVEX); - btScalar swapFactor = isEdgeConvex ? btScalar(1) : btScalar(-1); - #ifdef BT_INTERNAL_EDGE_DEBUG_DRAW - btDebugDrawLine(tr*nearest,tr*(nearest+swapFactor*tri_normal*10),white); - #endif //BT_INTERNAL_EDGE_DEBUG_DRAW - - btVector3 nA = swapFactor * tri_normal; - - btQuaternion orn(edge,info->m_edgeV0V1Angle); - btVector3 computedNormalB = quatRotate(orn,tri_normal); - if (info->m_flags & TRI_INFO_V0V1_SWAP_NORMALB) - computedNormalB*=-1; - btVector3 nB = swapFactor*computedNormalB; - - btScalar NdotA = localContactNormalOnB.dot(nA); - btScalar NdotB = localContactNormalOnB.dot(nB); - bool backFacingNormal = (NdotA< triangleInfoMapPtr->m_convexEpsilon) && (NdotBm_convexEpsilon); - -#ifdef DEBUG_INTERNAL_EDGE - { - - btDebugDrawLine(cp.getPositionWorldOnB(),cp.getPositionWorldOnB()+tr.getBasis()*(nB*20),red); - } -#endif //DEBUG_INTERNAL_EDGE - - - if (backFacingNormal) - { - numConcaveEdgeHits++; - } - else - { - numConvexEdgeHits++; - btVector3 clampedLocalNormal; - bool isClamped = btClampNormal(edge,swapFactor*tri_normal,localContactNormalOnB, info->m_edgeV0V1Angle,clampedLocalNormal); - if (isClamped) - { - if (((normalAdjustFlags & BT_TRIANGLE_CONVEX_DOUBLE_SIDED)!=0) || (clampedLocalNormal.dot(frontFacing*tri_normal)>0)) - { - btVector3 newNormal = colObj0->getWorldTransform().getBasis() * clampedLocalNormal; - // cp.m_distance1 = cp.m_distance1 * newNormal.dot(cp.m_normalWorldOnB); - cp.m_normalWorldOnB = newNormal; - // Reproject collision point along normal. (what about cp.m_distance1?) - cp.m_positionWorldOnB = cp.m_positionWorldOnA - cp.m_normalWorldOnB * cp.m_distance1; - cp.m_localPointB = colObj0->getWorldTransform().invXform(cp.m_positionWorldOnB); - - } - } - } - } - } - } - - btNearestPointInLineSegment(contact,v1,v2,nearest); -#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW - btDebugDrawLine(tr*nearest,tr*cp.m_localPointB,green); -#endif //BT_INTERNAL_EDGE_DEBUG_DRAW - - if ((info->m_edgeV1V2Angle)< SIMD_2_PI) - { -#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW - btDebugDrawLine(tr*contact,tr*(contact+cp.m_normalWorldOnB*10),black); -#endif //BT_INTERNAL_EDGE_DEBUG_DRAW - - - - btScalar len = (contact-nearest).length(); - if(lenm_edgeDistanceThreshold) - { - isNearEdge = true; -#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW - btDebugDrawLine(tr*nearest,tr*(nearest+tri_normal*10),white); -#endif //BT_INTERNAL_EDGE_DEBUG_DRAW - - btVector3 edge(v1-v2); - - isNearEdge = true; - - if (info->m_edgeV1V2Angle == btScalar(0)) - { - numConcaveEdgeHits++; - } else - { - bool isEdgeConvex = (info->m_flags & TRI_INFO_V1V2_CONVEX)!=0; - btScalar swapFactor = isEdgeConvex ? btScalar(1) : btScalar(-1); - #ifdef BT_INTERNAL_EDGE_DEBUG_DRAW - btDebugDrawLine(tr*nearest,tr*(nearest+swapFactor*tri_normal*10),white); - #endif //BT_INTERNAL_EDGE_DEBUG_DRAW - - btVector3 nA = swapFactor * tri_normal; - - btQuaternion orn(edge,info->m_edgeV1V2Angle); - btVector3 computedNormalB = quatRotate(orn,tri_normal); - if (info->m_flags & TRI_INFO_V1V2_SWAP_NORMALB) - computedNormalB*=-1; - btVector3 nB = swapFactor*computedNormalB; - -#ifdef DEBUG_INTERNAL_EDGE - { - btDebugDrawLine(cp.getPositionWorldOnB(),cp.getPositionWorldOnB()+tr.getBasis()*(nB*20),red); - } -#endif //DEBUG_INTERNAL_EDGE - - - btScalar NdotA = localContactNormalOnB.dot(nA); - btScalar NdotB = localContactNormalOnB.dot(nB); - bool backFacingNormal = (NdotA< triangleInfoMapPtr->m_convexEpsilon) && (NdotBm_convexEpsilon); - - if (backFacingNormal) - { - numConcaveEdgeHits++; - } - else - { - numConvexEdgeHits++; - btVector3 localContactNormalOnB = colObj0->getWorldTransform().getBasis().transpose() * cp.m_normalWorldOnB; - btVector3 clampedLocalNormal; - bool isClamped = btClampNormal(edge,swapFactor*tri_normal,localContactNormalOnB, info->m_edgeV1V2Angle,clampedLocalNormal); - if (isClamped) - { - if (((normalAdjustFlags & BT_TRIANGLE_CONVEX_DOUBLE_SIDED)!=0) || (clampedLocalNormal.dot(frontFacing*tri_normal)>0)) - { - btVector3 newNormal = colObj0->getWorldTransform().getBasis() * clampedLocalNormal; - // cp.m_distance1 = cp.m_distance1 * newNormal.dot(cp.m_normalWorldOnB); - cp.m_normalWorldOnB = newNormal; - // Reproject collision point along normal. - cp.m_positionWorldOnB = cp.m_positionWorldOnA - cp.m_normalWorldOnB * cp.m_distance1; - cp.m_localPointB = colObj0->getWorldTransform().invXform(cp.m_positionWorldOnB); - } - } - } - } - } - } - - btNearestPointInLineSegment(contact,v2,v0,nearest); -#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW - btDebugDrawLine(tr*nearest,tr*cp.m_localPointB,blue); -#endif //BT_INTERNAL_EDGE_DEBUG_DRAW - - if ((info->m_edgeV2V0Angle)< SIMD_2_PI) - { - -#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW - btDebugDrawLine(tr*contact,tr*(contact+cp.m_normalWorldOnB*10),black); -#endif //BT_INTERNAL_EDGE_DEBUG_DRAW - - btScalar len = (contact-nearest).length(); - if(lenm_edgeDistanceThreshold) - { - isNearEdge = true; -#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW - btDebugDrawLine(tr*nearest,tr*(nearest+tri_normal*10),white); -#endif //BT_INTERNAL_EDGE_DEBUG_DRAW - - btVector3 edge(v2-v0); - - if (info->m_edgeV2V0Angle==btScalar(0)) - { - numConcaveEdgeHits++; - } else - { - - bool isEdgeConvex = (info->m_flags & TRI_INFO_V2V0_CONVEX)!=0; - btScalar swapFactor = isEdgeConvex ? btScalar(1) : btScalar(-1); - #ifdef BT_INTERNAL_EDGE_DEBUG_DRAW - btDebugDrawLine(tr*nearest,tr*(nearest+swapFactor*tri_normal*10),white); - #endif //BT_INTERNAL_EDGE_DEBUG_DRAW - - btVector3 nA = swapFactor * tri_normal; - btQuaternion orn(edge,info->m_edgeV2V0Angle); - btVector3 computedNormalB = quatRotate(orn,tri_normal); - if (info->m_flags & TRI_INFO_V2V0_SWAP_NORMALB) - computedNormalB*=-1; - btVector3 nB = swapFactor*computedNormalB; - -#ifdef DEBUG_INTERNAL_EDGE - { - btDebugDrawLine(cp.getPositionWorldOnB(),cp.getPositionWorldOnB()+tr.getBasis()*(nB*20),red); - } -#endif //DEBUG_INTERNAL_EDGE - - btScalar NdotA = localContactNormalOnB.dot(nA); - btScalar NdotB = localContactNormalOnB.dot(nB); - bool backFacingNormal = (NdotA< triangleInfoMapPtr->m_convexEpsilon) && (NdotBm_convexEpsilon); - - if (backFacingNormal) - { - numConcaveEdgeHits++; - } - else - { - numConvexEdgeHits++; - // printf("hitting convex edge\n"); - - - btVector3 localContactNormalOnB = colObj0->getWorldTransform().getBasis().transpose() * cp.m_normalWorldOnB; - btVector3 clampedLocalNormal; - bool isClamped = btClampNormal(edge,swapFactor*tri_normal,localContactNormalOnB,info->m_edgeV2V0Angle,clampedLocalNormal); - if (isClamped) - { - if (((normalAdjustFlags & BT_TRIANGLE_CONVEX_DOUBLE_SIDED)!=0) || (clampedLocalNormal.dot(frontFacing*tri_normal)>0)) - { - btVector3 newNormal = colObj0->getWorldTransform().getBasis() * clampedLocalNormal; - // cp.m_distance1 = cp.m_distance1 * newNormal.dot(cp.m_normalWorldOnB); - cp.m_normalWorldOnB = newNormal; - // Reproject collision point along normal. - cp.m_positionWorldOnB = cp.m_positionWorldOnA - cp.m_normalWorldOnB * cp.m_distance1; - cp.m_localPointB = colObj0->getWorldTransform().invXform(cp.m_positionWorldOnB); - } - } - } - } - - - } - } - -#ifdef DEBUG_INTERNAL_EDGE - { - btVector3 color(0,1,1); - btDebugDrawLine(cp.getPositionWorldOnB(),cp.getPositionWorldOnB()+cp.m_normalWorldOnB*10,color); - } -#endif //DEBUG_INTERNAL_EDGE - - if (isNearEdge) - { - - if (numConcaveEdgeHits>0) - { - if ((normalAdjustFlags & BT_TRIANGLE_CONCAVE_DOUBLE_SIDED)!=0) - { - //fix tri_normal so it pointing the same direction as the current local contact normal - if (tri_normal.dot(localContactNormalOnB) < 0) - { - tri_normal *= -1; - } - cp.m_normalWorldOnB = colObj0->getWorldTransform().getBasis()*tri_normal; - } else - { - //modify the normal to be the triangle normal (or backfacing normal) - cp.m_normalWorldOnB = colObj0->getWorldTransform().getBasis() *(tri_normal *frontFacing); - } - - - // Reproject collision point along normal. - cp.m_positionWorldOnB = cp.m_positionWorldOnA - cp.m_normalWorldOnB * cp.m_distance1; - cp.m_localPointB = colObj0->getWorldTransform().invXform(cp.m_positionWorldOnB); - } - } -} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h b/extern/bullet2/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h deleted file mode 100644 index 9efb0122bb8..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h +++ /dev/null @@ -1,46 +0,0 @@ - -#ifndef BT_INTERNAL_EDGE_UTILITY_H -#define BT_INTERNAL_EDGE_UTILITY_H - -#include "LinearMath/btHashMap.h" -#include "LinearMath/btVector3.h" - -#include "BulletCollision/CollisionShapes/btTriangleInfoMap.h" - -///The btInternalEdgeUtility helps to avoid or reduce artifacts due to wrong collision normals caused by internal edges. -///See also http://code.google.com/p/bullet/issues/detail?id=27 - -class btBvhTriangleMeshShape; -class btCollisionObject; -class btManifoldPoint; -class btIDebugDraw; - - - -enum btInternalEdgeAdjustFlags -{ - BT_TRIANGLE_CONVEX_BACKFACE_MODE = 1, - BT_TRIANGLE_CONCAVE_DOUBLE_SIDED = 2, //double sided options are experimental, single sided is recommended - BT_TRIANGLE_CONVEX_DOUBLE_SIDED = 4 -}; - - -///Call btGenerateInternalEdgeInfo to create triangle info, store in the shape 'userInfo' -void btGenerateInternalEdgeInfo (btBvhTriangleMeshShape*trimeshShape, btTriangleInfoMap* triangleInfoMap); - - -///Call the btFixMeshNormal to adjust the collision normal, using the triangle info map (generated using btGenerateInternalEdgeInfo) -///If this info map is missing, or the triangle is not store in this map, nothing will be done -void btAdjustInternalEdgeContacts(btManifoldPoint& cp, const btCollisionObject* trimeshColObj0,const btCollisionObject* otherColObj1, int partId0, int index0, int normalAdjustFlags = 0); - -///Enable the BT_INTERNAL_EDGE_DEBUG_DRAW define and call btSetDebugDrawer, to get visual info to see if the internal edge utility works properly. -///If the utility doesn't work properly, you might have to adjust the threshold values in btTriangleInfoMap -//#define BT_INTERNAL_EDGE_DEBUG_DRAW - -#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW -void btSetDebugDrawer(btIDebugDraw* debugDrawer); -#endif //BT_INTERNAL_EDGE_DEBUG_DRAW - - -#endif //BT_INTERNAL_EDGE_UTILITY_H - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btManifoldResult.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btManifoldResult.cpp deleted file mode 100644 index e607bdbee58..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btManifoldResult.cpp +++ /dev/null @@ -1,134 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btManifoldResult.h" -#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" - - -///This is to allow MaterialCombiner/Custom Friction/Restitution values -ContactAddedCallback gContactAddedCallback=0; - -///User can override this material combiner by implementing gContactAddedCallback and setting body0->m_collisionFlags |= btCollisionObject::customMaterialCallback; -inline btScalar calculateCombinedFriction(const btCollisionObject* body0,const btCollisionObject* body1) -{ - btScalar friction = body0->getFriction() * body1->getFriction(); - - const btScalar MAX_FRICTION = btScalar(10.); - if (friction < -MAX_FRICTION) - friction = -MAX_FRICTION; - if (friction > MAX_FRICTION) - friction = MAX_FRICTION; - return friction; - -} - -inline btScalar calculateCombinedRestitution(const btCollisionObject* body0,const btCollisionObject* body1) -{ - return body0->getRestitution() * body1->getRestitution(); -} - - - -btManifoldResult::btManifoldResult(btCollisionObject* body0,btCollisionObject* body1) - :m_manifoldPtr(0), - m_body0(body0), - m_body1(body1) -#ifdef DEBUG_PART_INDEX - ,m_partId0(-1), - m_partId1(-1), - m_index0(-1), - m_index1(-1) -#endif //DEBUG_PART_INDEX -{ - m_rootTransA = body0->getWorldTransform(); - m_rootTransB = body1->getWorldTransform(); -} - - -void btManifoldResult::addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth) -{ - btAssert(m_manifoldPtr); - //order in manifold needs to match - - if (depth > m_manifoldPtr->getContactBreakingThreshold()) - return; - - bool isSwapped = m_manifoldPtr->getBody0() != m_body0; - - btVector3 pointA = pointInWorld + normalOnBInWorld * depth; - - btVector3 localA; - btVector3 localB; - - if (isSwapped) - { - localA = m_rootTransB.invXform(pointA ); - localB = m_rootTransA.invXform(pointInWorld); - } else - { - localA = m_rootTransA.invXform(pointA ); - localB = m_rootTransB.invXform(pointInWorld); - } - - btManifoldPoint newPt(localA,localB,normalOnBInWorld,depth); - newPt.m_positionWorldOnA = pointA; - newPt.m_positionWorldOnB = pointInWorld; - - int insertIndex = m_manifoldPtr->getCacheEntry(newPt); - - newPt.m_combinedFriction = calculateCombinedFriction(m_body0,m_body1); - newPt.m_combinedRestitution = calculateCombinedRestitution(m_body0,m_body1); - - //BP mod, store contact triangles. - if (isSwapped) - { - newPt.m_partId0 = m_partId1; - newPt.m_partId1 = m_partId0; - newPt.m_index0 = m_index1; - newPt.m_index1 = m_index0; - } else - { - newPt.m_partId0 = m_partId0; - newPt.m_partId1 = m_partId1; - newPt.m_index0 = m_index0; - newPt.m_index1 = m_index1; - } - //printf("depth=%f\n",depth); - ///@todo, check this for any side effects - if (insertIndex >= 0) - { - //const btManifoldPoint& oldPoint = m_manifoldPtr->getContactPoint(insertIndex); - m_manifoldPtr->replaceContactPoint(newPt,insertIndex); - } else - { - insertIndex = m_manifoldPtr->addManifoldPoint(newPt); - } - - //User can override friction and/or restitution - if (gContactAddedCallback && - //and if either of the two bodies requires custom material - ((m_body0->getCollisionFlags() & btCollisionObject::CF_CUSTOM_MATERIAL_CALLBACK) || - (m_body1->getCollisionFlags() & btCollisionObject::CF_CUSTOM_MATERIAL_CALLBACK))) - { - //experimental feature info, for per-triangle material etc. - btCollisionObject* obj0 = isSwapped? m_body1 : m_body0; - btCollisionObject* obj1 = isSwapped? m_body0 : m_body1; - (*gContactAddedCallback)(m_manifoldPtr->getContactPoint(insertIndex),obj0,newPt.m_partId0,newPt.m_index0,obj1,newPt.m_partId1,newPt.m_index1); - } - -} - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btManifoldResult.h b/extern/bullet2/BulletCollision/CollisionDispatch/btManifoldResult.h deleted file mode 100644 index 927e2bc4f76..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btManifoldResult.h +++ /dev/null @@ -1,128 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#ifndef MANIFOLD_RESULT_H -#define MANIFOLD_RESULT_H - -class btCollisionObject; -#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" -class btManifoldPoint; - -#include "BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h" - -#include "LinearMath/btTransform.h" - -typedef bool (*ContactAddedCallback)(btManifoldPoint& cp, const btCollisionObject* colObj0,int partId0,int index0,const btCollisionObject* colObj1,int partId1,int index1); -extern ContactAddedCallback gContactAddedCallback; - -//#define DEBUG_PART_INDEX 1 - - -///btManifoldResult is a helper class to manage contact results. -class btManifoldResult : public btDiscreteCollisionDetectorInterface::Result -{ -protected: - - btPersistentManifold* m_manifoldPtr; - - //we need this for compounds - btTransform m_rootTransA; - btTransform m_rootTransB; - - btCollisionObject* m_body0; - btCollisionObject* m_body1; - int m_partId0; - int m_partId1; - int m_index0; - int m_index1; - - -public: - - btManifoldResult() -#ifdef DEBUG_PART_INDEX - : - m_partId0(-1), - m_partId1(-1), - m_index0(-1), - m_index1(-1) -#endif //DEBUG_PART_INDEX - { - } - - btManifoldResult(btCollisionObject* body0,btCollisionObject* body1); - - virtual ~btManifoldResult() {}; - - void setPersistentManifold(btPersistentManifold* manifoldPtr) - { - m_manifoldPtr = manifoldPtr; - } - - const btPersistentManifold* getPersistentManifold() const - { - return m_manifoldPtr; - } - btPersistentManifold* getPersistentManifold() - { - return m_manifoldPtr; - } - - virtual void setShapeIdentifiersA(int partId0,int index0) - { - m_partId0=partId0; - m_index0=index0; - } - - virtual void setShapeIdentifiersB( int partId1,int index1) - { - m_partId1=partId1; - m_index1=index1; - } - - - virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth); - - SIMD_FORCE_INLINE void refreshContactPoints() - { - btAssert(m_manifoldPtr); - if (!m_manifoldPtr->getNumContacts()) - return; - - bool isSwapped = m_manifoldPtr->getBody0() != m_body0; - - if (isSwapped) - { - m_manifoldPtr->refreshContactPoints(m_rootTransB,m_rootTransA); - } else - { - m_manifoldPtr->refreshContactPoints(m_rootTransA,m_rootTransB); - } - } - - const btCollisionObject* getBody0Internal() const - { - return m_body0; - } - - const btCollisionObject* getBody1Internal() const - { - return m_body1; - } - -}; - -#endif //MANIFOLD_RESULT_H diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp deleted file mode 100644 index 0a41ab9a512..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp +++ /dev/null @@ -1,392 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "LinearMath/btScalar.h" -#include "btSimulationIslandManager.h" -#include "BulletCollision/BroadphaseCollision/btDispatcher.h" -#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "BulletCollision/CollisionDispatch/btCollisionWorld.h" - -//#include -#include "LinearMath/btQuickprof.h" - -btSimulationIslandManager::btSimulationIslandManager(): -m_splitIslands(true) -{ -} - -btSimulationIslandManager::~btSimulationIslandManager() -{ -} - - -void btSimulationIslandManager::initUnionFind(int n) -{ - m_unionFind.reset(n); -} - - -void btSimulationIslandManager::findUnions(btDispatcher* /* dispatcher */,btCollisionWorld* colWorld) -{ - - { - btOverlappingPairCache* pairCachePtr = colWorld->getPairCache(); - const int numOverlappingPairs = pairCachePtr->getNumOverlappingPairs(); - btBroadphasePair* pairPtr = pairCachePtr->getOverlappingPairArrayPtr(); - - for (int i=0;im_clientObject; - btCollisionObject* colObj1 = (btCollisionObject*)collisionPair.m_pProxy1->m_clientObject; - - if (((colObj0) && ((colObj0)->mergesSimulationIslands())) && - ((colObj1) && ((colObj1)->mergesSimulationIslands()))) - { - - m_unionFind.unite((colObj0)->getIslandTag(), - (colObj1)->getIslandTag()); - } - } - } -} - - -void btSimulationIslandManager::updateActivationState(btCollisionWorld* colWorld,btDispatcher* dispatcher) -{ - - initUnionFind( int (colWorld->getCollisionObjectArray().size())); - - // put the index into m_controllers into m_tag - { - - int index = 0; - int i; - for (i=0;igetCollisionObjectArray().size(); i++) - { - btCollisionObject* collisionObject= colWorld->getCollisionObjectArray()[i]; - collisionObject->setIslandTag(index); - collisionObject->setCompanionId(-1); - collisionObject->setHitFraction(btScalar(1.)); - index++; - - } - } - // do the union find - - findUnions(dispatcher,colWorld); - - - -} - - - - -void btSimulationIslandManager::storeIslandActivationState(btCollisionWorld* colWorld) -{ - // put the islandId ('find' value) into m_tag - { - - - int index = 0; - int i; - for (i=0;igetCollisionObjectArray().size();i++) - { - btCollisionObject* collisionObject= colWorld->getCollisionObjectArray()[i]; - if (!collisionObject->isStaticOrKinematicObject()) - { - collisionObject->setIslandTag( m_unionFind.find(index) ); - collisionObject->setCompanionId(-1); - } else - { - collisionObject->setIslandTag(-1); - collisionObject->setCompanionId(-2); - } - index++; - } - } -} - -inline int getIslandId(const btPersistentManifold* lhs) -{ - int islandId; - const btCollisionObject* rcolObj0 = static_cast(lhs->getBody0()); - const btCollisionObject* rcolObj1 = static_cast(lhs->getBody1()); - islandId= rcolObj0->getIslandTag()>=0?rcolObj0->getIslandTag():rcolObj1->getIslandTag(); - return islandId; - -} - - - -/// function object that routes calls to operator< -class btPersistentManifoldSortPredicate -{ - public: - - SIMD_FORCE_INLINE bool operator() ( const btPersistentManifold* lhs, const btPersistentManifold* rhs ) - { - return getIslandId(lhs) < getIslandId(rhs); - } -}; - - -void btSimulationIslandManager::buildIslands(btDispatcher* dispatcher,btCollisionWorld* collisionWorld) -{ - - BT_PROFILE("islandUnionFindAndQuickSort"); - - btCollisionObjectArray& collisionObjects = collisionWorld->getCollisionObjectArray(); - - m_islandmanifold.resize(0); - - //we are going to sort the unionfind array, and store the element id in the size - //afterwards, we clean unionfind, to make sure no-one uses it anymore - - getUnionFind().sortIslands(); - int numElem = getUnionFind().getNumElements(); - - int endIslandIndex=1; - int startIslandIndex; - - - //update the sleeping state for bodies, if all are sleeping - for ( startIslandIndex=0;startIslandIndexgetIslandTag() != islandId) && (colObj0->getIslandTag() != -1)) - { -// printf("error in island management\n"); - } - - btAssert((colObj0->getIslandTag() == islandId) || (colObj0->getIslandTag() == -1)); - if (colObj0->getIslandTag() == islandId) - { - if (colObj0->getActivationState()== ACTIVE_TAG) - { - allSleeping = false; - } - if (colObj0->getActivationState()== DISABLE_DEACTIVATION) - { - allSleeping = false; - } - } - } - - - if (allSleeping) - { - int idx; - for (idx=startIslandIndex;idxgetIslandTag() != islandId) && (colObj0->getIslandTag() != -1)) - { -// printf("error in island management\n"); - } - - btAssert((colObj0->getIslandTag() == islandId) || (colObj0->getIslandTag() == -1)); - - if (colObj0->getIslandTag() == islandId) - { - colObj0->setActivationState( ISLAND_SLEEPING ); - } - } - } else - { - - int idx; - for (idx=startIslandIndex;idxgetIslandTag() != islandId) && (colObj0->getIslandTag() != -1)) - { -// printf("error in island management\n"); - } - - btAssert((colObj0->getIslandTag() == islandId) || (colObj0->getIslandTag() == -1)); - - if (colObj0->getIslandTag() == islandId) - { - if ( colObj0->getActivationState() == ISLAND_SLEEPING) - { - colObj0->setActivationState( WANTS_DEACTIVATION); - colObj0->setDeactivationTime(0.f); - } - } - } - } - } - - - int i; - int maxNumManifolds = dispatcher->getNumManifolds(); - -//#define SPLIT_ISLANDS 1 -//#ifdef SPLIT_ISLANDS - - -//#endif //SPLIT_ISLANDS - - - for (i=0;igetManifoldByIndexInternal(i); - - btCollisionObject* colObj0 = static_cast(manifold->getBody0()); - btCollisionObject* colObj1 = static_cast(manifold->getBody1()); - - ///@todo: check sleeping conditions! - if (((colObj0) && colObj0->getActivationState() != ISLAND_SLEEPING) || - ((colObj1) && colObj1->getActivationState() != ISLAND_SLEEPING)) - { - - //kinematic objects don't merge islands, but wake up all connected objects - if (colObj0->isKinematicObject() && colObj0->getActivationState() != ISLAND_SLEEPING) - { - colObj1->activate(); - } - if (colObj1->isKinematicObject() && colObj1->getActivationState() != ISLAND_SLEEPING) - { - colObj0->activate(); - } - if(m_splitIslands) - { - //filtering for response - if (dispatcher->needsResponse(colObj0,colObj1)) - m_islandmanifold.push_back(manifold); - } - } - } -} - - - -///@todo: this is random access, it can be walked 'cache friendly'! -void btSimulationIslandManager::buildAndProcessIslands(btDispatcher* dispatcher,btCollisionWorld* collisionWorld, IslandCallback* callback) -{ - btCollisionObjectArray& collisionObjects = collisionWorld->getCollisionObjectArray(); - - buildIslands(dispatcher,collisionWorld); - - int endIslandIndex=1; - int startIslandIndex; - int numElem = getUnionFind().getNumElements(); - - BT_PROFILE("processIslands"); - - if(!m_splitIslands) - { - btPersistentManifold** manifold = dispatcher->getInternalManifoldPointer(); - int maxNumManifolds = dispatcher->getNumManifolds(); - callback->ProcessIsland(&collisionObjects[0],collisionObjects.size(),manifold,maxNumManifolds, -1); - } - else - { - // Sort manifolds, based on islands - // Sort the vector using predicate and std::sort - //std::sort(islandmanifold.begin(), islandmanifold.end(), btPersistentManifoldSortPredicate); - - int numManifolds = int (m_islandmanifold.size()); - - //we should do radix sort, it it much faster (O(n) instead of O (n log2(n)) - m_islandmanifold.quickSort(btPersistentManifoldSortPredicate()); - - //now process all active islands (sets of manifolds for now) - - int startManifoldIndex = 0; - int endManifoldIndex = 1; - - //int islandId; - - - - // printf("Start Islands\n"); - - //traverse the simulation islands, and call the solver, unless all objects are sleeping/deactivated - for ( startIslandIndex=0;startIslandIndexisActive()) - islandSleeping = true; - } - - - //find the accompanying contact manifold for this islandId - int numIslandManifolds = 0; - btPersistentManifold** startManifold = 0; - - if (startManifoldIndexProcessIsland(&m_islandBodies[0],m_islandBodies.size(),startManifold,numIslandManifolds, islandId); - // printf("Island callback of size:%d bodies, %d manifolds\n",islandBodies.size(),numIslandManifolds); - } - - if (numIslandManifolds) - { - startManifoldIndex = endManifoldIndex; - } - - m_islandBodies.resize(0); - } - } // else if(!splitIslands) - -} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btSimulationIslandManager.h b/extern/bullet2/BulletCollision/CollisionDispatch/btSimulationIslandManager.h deleted file mode 100644 index d059f5d6b0d..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btSimulationIslandManager.h +++ /dev/null @@ -1,81 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef SIMULATION_ISLAND_MANAGER_H -#define SIMULATION_ISLAND_MANAGER_H - -#include "BulletCollision/CollisionDispatch/btUnionFind.h" -#include "btCollisionCreateFunc.h" -#include "LinearMath/btAlignedObjectArray.h" -#include "btCollisionObject.h" - -class btCollisionObject; -class btCollisionWorld; -class btDispatcher; -class btPersistentManifold; - - -///SimulationIslandManager creates and handles simulation islands, using btUnionFind -class btSimulationIslandManager -{ - btUnionFind m_unionFind; - - btAlignedObjectArray m_islandmanifold; - btAlignedObjectArray m_islandBodies; - - bool m_splitIslands; - -public: - btSimulationIslandManager(); - virtual ~btSimulationIslandManager(); - - - void initUnionFind(int n); - - - btUnionFind& getUnionFind() { return m_unionFind;} - - virtual void updateActivationState(btCollisionWorld* colWorld,btDispatcher* dispatcher); - virtual void storeIslandActivationState(btCollisionWorld* world); - - - void findUnions(btDispatcher* dispatcher,btCollisionWorld* colWorld); - - - - struct IslandCallback - { - virtual ~IslandCallback() {}; - - virtual void ProcessIsland(btCollisionObject** bodies,int numBodies,class btPersistentManifold** manifolds,int numManifolds, int islandId) = 0; - }; - - void buildAndProcessIslands(btDispatcher* dispatcher,btCollisionWorld* collisionWorld, IslandCallback* callback); - - void buildIslands(btDispatcher* dispatcher,btCollisionWorld* colWorld); - - bool getSplitIslands() - { - return m_splitIslands; - } - void setSplitIslands(bool doSplitIslands) - { - m_splitIslands = doSplitIslands; - } - -}; - -#endif //SIMULATION_ISLAND_MANAGER_H - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp deleted file mode 100644 index 8df876928c1..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp +++ /dev/null @@ -1,260 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btSphereBoxCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" -#include "BulletCollision/CollisionShapes/btSphereShape.h" -#include "BulletCollision/CollisionShapes/btBoxShape.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -//#include - -btSphereBoxCollisionAlgorithm::btSphereBoxCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* col0,btCollisionObject* col1, bool isSwapped) -: btActivatingCollisionAlgorithm(ci,col0,col1), -m_ownManifold(false), -m_manifoldPtr(mf), -m_isSwapped(isSwapped) -{ - btCollisionObject* sphereObj = m_isSwapped? col1 : col0; - btCollisionObject* boxObj = m_isSwapped? col0 : col1; - - if (!m_manifoldPtr && m_dispatcher->needsCollision(sphereObj,boxObj)) - { - m_manifoldPtr = m_dispatcher->getNewManifold(sphereObj,boxObj); - m_ownManifold = true; - } -} - - -btSphereBoxCollisionAlgorithm::~btSphereBoxCollisionAlgorithm() -{ - if (m_ownManifold) - { - if (m_manifoldPtr) - m_dispatcher->releaseManifold(m_manifoldPtr); - } -} - - - -void btSphereBoxCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - (void)dispatchInfo; - (void)resultOut; - if (!m_manifoldPtr) - return; - - btCollisionObject* sphereObj = m_isSwapped? body1 : body0; - btCollisionObject* boxObj = m_isSwapped? body0 : body1; - - - btSphereShape* sphere0 = (btSphereShape*)sphereObj->getCollisionShape(); - - btVector3 normalOnSurfaceB; - btVector3 pOnBox,pOnSphere; - btVector3 sphereCenter = sphereObj->getWorldTransform().getOrigin(); - btScalar radius = sphere0->getRadius(); - - btScalar dist = getSphereDistance(boxObj,pOnBox,pOnSphere,sphereCenter,radius); - - resultOut->setPersistentManifold(m_manifoldPtr); - - if (dist < SIMD_EPSILON) - { - btVector3 normalOnSurfaceB = (pOnBox- pOnSphere).normalize(); - - /// report a contact. internally this will be kept persistent, and contact reduction is done - - resultOut->addContactPoint(normalOnSurfaceB,pOnBox,dist); - - } - - if (m_ownManifold) - { - if (m_manifoldPtr->getNumContacts()) - { - resultOut->refreshContactPoints(); - } - } - -} - -btScalar btSphereBoxCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - (void)resultOut; - (void)dispatchInfo; - (void)col0; - (void)col1; - - //not yet - return btScalar(1.); -} - - -btScalar btSphereBoxCollisionAlgorithm::getSphereDistance(btCollisionObject* boxObj, btVector3& pointOnBox, btVector3& v3PointOnSphere, const btVector3& sphereCenter, btScalar fRadius ) -{ - - btScalar margins; - btVector3 bounds[2]; - btBoxShape* boxShape= (btBoxShape*)boxObj->getCollisionShape(); - - bounds[0] = -boxShape->getHalfExtentsWithoutMargin(); - bounds[1] = boxShape->getHalfExtentsWithoutMargin(); - - margins = boxShape->getMargin();//also add sphereShape margin? - - const btTransform& m44T = boxObj->getWorldTransform(); - - btVector3 boundsVec[2]; - btScalar fPenetration; - - boundsVec[0] = bounds[0]; - boundsVec[1] = bounds[1]; - - btVector3 marginsVec( margins, margins, margins ); - - // add margins - bounds[0] += marginsVec; - bounds[1] -= marginsVec; - - ///////////////////////////////////////////////// - - btVector3 tmp, prel, n[6], normal, v3P; - btScalar fSep = btScalar(10000000.0), fSepThis; - - n[0].setValue( btScalar(-1.0), btScalar(0.0), btScalar(0.0) ); - n[1].setValue( btScalar(0.0), btScalar(-1.0), btScalar(0.0) ); - n[2].setValue( btScalar(0.0), btScalar(0.0), btScalar(-1.0) ); - n[3].setValue( btScalar(1.0), btScalar(0.0), btScalar(0.0) ); - n[4].setValue( btScalar(0.0), btScalar(1.0), btScalar(0.0) ); - n[5].setValue( btScalar(0.0), btScalar(0.0), btScalar(1.0) ); - - // convert point in local space - prel = m44T.invXform( sphereCenter); - - bool bFound = false; - - v3P = prel; - - for (int i=0;i<6;i++) - { - int j = i<3? 0:1; - if ( (fSepThis = ((v3P-bounds[j]) .dot(n[i]))) > btScalar(0.0) ) - { - v3P = v3P - n[i]*fSepThis; - bFound = true; - } - } - - // - - if ( bFound ) - { - bounds[0] = boundsVec[0]; - bounds[1] = boundsVec[1]; - - normal = (prel - v3P).normalize(); - pointOnBox = v3P + normal*margins; - v3PointOnSphere = prel - normal*fRadius; - - if ( ((v3PointOnSphere - pointOnBox) .dot (normal)) > btScalar(0.0) ) - { - return btScalar(1.0); - } - - // transform back in world space - tmp = m44T( pointOnBox); - pointOnBox = tmp; - tmp = m44T( v3PointOnSphere); - v3PointOnSphere = tmp; - btScalar fSeps2 = (pointOnBox-v3PointOnSphere).length2(); - - //if this fails, fallback into deeper penetration case, below - if (fSeps2 > SIMD_EPSILON) - { - fSep = - btSqrt(fSeps2); - normal = (pointOnBox-v3PointOnSphere); - normal *= btScalar(1.)/fSep; - } - - return fSep; - } - - ////////////////////////////////////////////////// - // Deep penetration case - - fPenetration = getSpherePenetration( boxObj,pointOnBox, v3PointOnSphere, sphereCenter, fRadius,bounds[0],bounds[1] ); - - bounds[0] = boundsVec[0]; - bounds[1] = boundsVec[1]; - - if ( fPenetration <= btScalar(0.0) ) - return (fPenetration-margins); - else - return btScalar(1.0); -} - -btScalar btSphereBoxCollisionAlgorithm::getSpherePenetration( btCollisionObject* boxObj,btVector3& pointOnBox, btVector3& v3PointOnSphere, const btVector3& sphereCenter, btScalar fRadius, const btVector3& aabbMin, const btVector3& aabbMax) -{ - - btVector3 bounds[2]; - - bounds[0] = aabbMin; - bounds[1] = aabbMax; - - btVector3 p0, tmp, prel, n[6], normal; - btScalar fSep = btScalar(-10000000.0), fSepThis; - - // set p0 and normal to a default value to shup up GCC - p0.setValue(btScalar(0.), btScalar(0.), btScalar(0.)); - normal.setValue(btScalar(0.), btScalar(0.), btScalar(0.)); - - n[0].setValue( btScalar(-1.0), btScalar(0.0), btScalar(0.0) ); - n[1].setValue( btScalar(0.0), btScalar(-1.0), btScalar(0.0) ); - n[2].setValue( btScalar(0.0), btScalar(0.0), btScalar(-1.0) ); - n[3].setValue( btScalar(1.0), btScalar(0.0), btScalar(0.0) ); - n[4].setValue( btScalar(0.0), btScalar(1.0), btScalar(0.0) ); - n[5].setValue( btScalar(0.0), btScalar(0.0), btScalar(1.0) ); - - const btTransform& m44T = boxObj->getWorldTransform(); - - // convert point in local space - prel = m44T.invXform( sphereCenter); - - /////////// - - for (int i=0;i<6;i++) - { - int j = i<3 ? 0:1; - if ( (fSepThis = ((prel-bounds[j]) .dot( n[i]))-fRadius) > btScalar(0.0) ) return btScalar(1.0); - if ( fSepThis > fSep ) - { - p0 = bounds[j]; normal = (btVector3&)n[i]; - fSep = fSepThis; - } - } - - pointOnBox = prel - normal*(normal.dot((prel-p0))); - v3PointOnSphere = pointOnBox + normal*fSep; - - // transform back in world space - tmp = m44T( pointOnBox); - pointOnBox = tmp; - tmp = m44T( v3PointOnSphere); v3PointOnSphere = tmp; - normal = (pointOnBox-v3PointOnSphere).normalize(); - - return fSep; - -} - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h deleted file mode 100644 index 47111d1c4af..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h +++ /dev/null @@ -1,75 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef SPHERE_BOX_COLLISION_ALGORITHM_H -#define SPHERE_BOX_COLLISION_ALGORITHM_H - -#include "btActivatingCollisionAlgorithm.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" -class btPersistentManifold; -#include "btCollisionDispatcher.h" - -#include "LinearMath/btVector3.h" - -/// btSphereBoxCollisionAlgorithm provides sphere-box collision detection. -/// Other features are frame-coherency (persistent data) and collision response. -class btSphereBoxCollisionAlgorithm : public btActivatingCollisionAlgorithm -{ - bool m_ownManifold; - btPersistentManifold* m_manifoldPtr; - bool m_isSwapped; - -public: - - btSphereBoxCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* col0,btCollisionObject* col1, bool isSwapped); - - virtual ~btSphereBoxCollisionAlgorithm(); - - virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual void getAllContactManifolds(btManifoldArray& manifoldArray) - { - if (m_manifoldPtr && m_ownManifold) - { - manifoldArray.push_back(m_manifoldPtr); - } - } - - btScalar getSphereDistance( btCollisionObject* boxObj,btVector3& v3PointOnBox, btVector3& v3PointOnSphere, const btVector3& v3SphereCenter, btScalar fRadius ); - - btScalar getSpherePenetration( btCollisionObject* boxObj, btVector3& v3PointOnBox, btVector3& v3PointOnSphere, const btVector3& v3SphereCenter, btScalar fRadius, const btVector3& aabbMin, const btVector3& aabbMax); - - struct CreateFunc :public btCollisionAlgorithmCreateFunc - { - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) - { - void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSphereBoxCollisionAlgorithm)); - if (!m_swapped) - { - return new(mem) btSphereBoxCollisionAlgorithm(0,ci,body0,body1,false); - } else - { - return new(mem) btSphereBoxCollisionAlgorithm(0,ci,body0,body1,true); - } - } - }; - -}; - -#endif //SPHERE_BOX_COLLISION_ALGORITHM_H - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp deleted file mode 100644 index 5c4e78fe518..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp +++ /dev/null @@ -1,105 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btSphereSphereCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" -#include "BulletCollision/CollisionShapes/btSphereShape.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" - -btSphereSphereCollisionAlgorithm::btSphereSphereCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* col0,btCollisionObject* col1) -: btActivatingCollisionAlgorithm(ci,col0,col1), -m_ownManifold(false), -m_manifoldPtr(mf) -{ - if (!m_manifoldPtr) - { - m_manifoldPtr = m_dispatcher->getNewManifold(col0,col1); - m_ownManifold = true; - } -} - -btSphereSphereCollisionAlgorithm::~btSphereSphereCollisionAlgorithm() -{ - if (m_ownManifold) - { - if (m_manifoldPtr) - m_dispatcher->releaseManifold(m_manifoldPtr); - } -} - -void btSphereSphereCollisionAlgorithm::processCollision (btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - (void)dispatchInfo; - - if (!m_manifoldPtr) - return; - - resultOut->setPersistentManifold(m_manifoldPtr); - - btSphereShape* sphere0 = (btSphereShape*)col0->getCollisionShape(); - btSphereShape* sphere1 = (btSphereShape*)col1->getCollisionShape(); - - btVector3 diff = col0->getWorldTransform().getOrigin()- col1->getWorldTransform().getOrigin(); - btScalar len = diff.length(); - btScalar radius0 = sphere0->getRadius(); - btScalar radius1 = sphere1->getRadius(); - -#ifdef CLEAR_MANIFOLD - m_manifoldPtr->clearManifold(); //don't do this, it disables warmstarting -#endif - - ///iff distance positive, don't generate a new contact - if ( len > (radius0+radius1)) - { -#ifndef CLEAR_MANIFOLD - resultOut->refreshContactPoints(); -#endif //CLEAR_MANIFOLD - return; - } - ///distance (negative means penetration) - btScalar dist = len - (radius0+radius1); - - btVector3 normalOnSurfaceB(1,0,0); - if (len > SIMD_EPSILON) - { - normalOnSurfaceB = diff / len; - } - - ///point on A (worldspace) - ///btVector3 pos0 = col0->getWorldTransform().getOrigin() - radius0 * normalOnSurfaceB; - ///point on B (worldspace) - btVector3 pos1 = col1->getWorldTransform().getOrigin() + radius1* normalOnSurfaceB; - - /// report a contact. internally this will be kept persistent, and contact reduction is done - - - resultOut->addContactPoint(normalOnSurfaceB,pos1,dist); - -#ifndef CLEAR_MANIFOLD - resultOut->refreshContactPoints(); -#endif //CLEAR_MANIFOLD - -} - -btScalar btSphereSphereCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - (void)col0; - (void)col1; - (void)dispatchInfo; - (void)resultOut; - - //not yet - return btScalar(1.); -} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h deleted file mode 100644 index 7d07512ca66..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h +++ /dev/null @@ -1,66 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef SPHERE_SPHERE_COLLISION_ALGORITHM_H -#define SPHERE_SPHERE_COLLISION_ALGORITHM_H - -#include "btActivatingCollisionAlgorithm.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" -#include "btCollisionDispatcher.h" - -class btPersistentManifold; - -/// btSphereSphereCollisionAlgorithm provides sphere-sphere collision detection. -/// Other features are frame-coherency (persistent data) and collision response. -/// Also provides the most basic sample for custom/user btCollisionAlgorithm -class btSphereSphereCollisionAlgorithm : public btActivatingCollisionAlgorithm -{ - bool m_ownManifold; - btPersistentManifold* m_manifoldPtr; - -public: - btSphereSphereCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1); - - btSphereSphereCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci) - : btActivatingCollisionAlgorithm(ci) {} - - virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual void getAllContactManifolds(btManifoldArray& manifoldArray) - { - if (m_manifoldPtr && m_ownManifold) - { - manifoldArray.push_back(m_manifoldPtr); - } - } - - virtual ~btSphereSphereCollisionAlgorithm(); - - struct CreateFunc :public btCollisionAlgorithmCreateFunc - { - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) - { - void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSphereSphereCollisionAlgorithm)); - return new(mem) btSphereSphereCollisionAlgorithm(0,ci,body0,body1); - } - }; - -}; - -#endif //SPHERE_SPHERE_COLLISION_ALGORITHM_H - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp deleted file mode 100644 index c327c3ff72a..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btSphereTriangleCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" -#include "BulletCollision/CollisionShapes/btSphereShape.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "SphereTriangleDetector.h" - - -btSphereTriangleCollisionAlgorithm::btSphereTriangleCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* col0,btCollisionObject* col1,bool swapped) -: btActivatingCollisionAlgorithm(ci,col0,col1), -m_ownManifold(false), -m_manifoldPtr(mf), -m_swapped(swapped) -{ - if (!m_manifoldPtr) - { - m_manifoldPtr = m_dispatcher->getNewManifold(col0,col1); - m_ownManifold = true; - } -} - -btSphereTriangleCollisionAlgorithm::~btSphereTriangleCollisionAlgorithm() -{ - if (m_ownManifold) - { - if (m_manifoldPtr) - m_dispatcher->releaseManifold(m_manifoldPtr); - } -} - -void btSphereTriangleCollisionAlgorithm::processCollision (btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - if (!m_manifoldPtr) - return; - - btCollisionObject* sphereObj = m_swapped? col1 : col0; - btCollisionObject* triObj = m_swapped? col0 : col1; - - btSphereShape* sphere = (btSphereShape*)sphereObj->getCollisionShape(); - btTriangleShape* triangle = (btTriangleShape*)triObj->getCollisionShape(); - - /// report a contact. internally this will be kept persistent, and contact reduction is done - resultOut->setPersistentManifold(m_manifoldPtr); - SphereTriangleDetector detector(sphere,triangle, m_manifoldPtr->getContactBreakingThreshold()); - - btDiscreteCollisionDetectorInterface::ClosestPointInput input; - input.m_maximumDistanceSquared = btScalar(BT_LARGE_FLOAT);///@todo: tighter bounds - input.m_transformA = sphereObj->getWorldTransform(); - input.m_transformB = triObj->getWorldTransform(); - - bool swapResults = m_swapped; - - detector.getClosestPoints(input,*resultOut,dispatchInfo.m_debugDraw,swapResults); - - if (m_ownManifold) - resultOut->refreshContactPoints(); - -} - -btScalar btSphereTriangleCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - (void)resultOut; - (void)dispatchInfo; - (void)col0; - (void)col1; - - //not yet - return btScalar(1.); -} diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h b/extern/bullet2/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h deleted file mode 100644 index 606c3635ae9..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h +++ /dev/null @@ -1,69 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef SPHERE_TRIANGLE_COLLISION_ALGORITHM_H -#define SPHERE_TRIANGLE_COLLISION_ALGORITHM_H - -#include "btActivatingCollisionAlgorithm.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" -class btPersistentManifold; -#include "btCollisionDispatcher.h" - -/// btSphereSphereCollisionAlgorithm provides sphere-sphere collision detection. -/// Other features are frame-coherency (persistent data) and collision response. -/// Also provides the most basic sample for custom/user btCollisionAlgorithm -class btSphereTriangleCollisionAlgorithm : public btActivatingCollisionAlgorithm -{ - bool m_ownManifold; - btPersistentManifold* m_manifoldPtr; - bool m_swapped; - -public: - btSphereTriangleCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,bool swapped); - - btSphereTriangleCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci) - : btActivatingCollisionAlgorithm(ci) {} - - virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual void getAllContactManifolds(btManifoldArray& manifoldArray) - { - if (m_manifoldPtr && m_ownManifold) - { - manifoldArray.push_back(m_manifoldPtr); - } - } - - virtual ~btSphereTriangleCollisionAlgorithm(); - - struct CreateFunc :public btCollisionAlgorithmCreateFunc - { - - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) - { - - void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSphereTriangleCollisionAlgorithm)); - - return new(mem) btSphereTriangleCollisionAlgorithm(ci.m_manifold,ci,body0,body1,m_swapped); - } - }; - -}; - -#endif //SPHERE_TRIANGLE_COLLISION_ALGORITHM_H - diff --git a/extern/bullet2/BulletCollision/CollisionDispatch/btUnionFind.cpp b/extern/bullet2/BulletCollision/CollisionDispatch/btUnionFind.cpp deleted file mode 100644 index c561df06109..00000000000 --- a/extern/bullet2/BulletCollision/CollisionDispatch/btUnionFind.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btUnionFind.h" - - - -btUnionFind::~btUnionFind() -{ - Free(); - -} - -btUnionFind::btUnionFind() -{ - -} - -void btUnionFind::allocate(int N) -{ - m_elements.resize(N); -} -void btUnionFind::Free() -{ - m_elements.clear(); -} - - -void btUnionFind::reset(int N) -{ - allocate(N); - - for (int i = 0; i < N; i++) - { - m_elements[i].m_id = i; m_elements[i].m_sz = 1; - } -} - - -class btUnionFindElementSortPredicate -{ - public: - - bool operator() ( const btElement& lhs, const btElement& rhs ) - { - return lhs.m_id < rhs.m_id; - } -}; - -///this is a special operation, destroying the content of btUnionFind. -///it sorts the elements, based on island id, in order to make it easy to iterate over islands -void btUnionFind::sortIslands() -{ - - //first store the original body index, and islandId - int numElements = m_elements.size(); - - for (int i=0;i m_elements; - - public: - - btUnionFind(); - ~btUnionFind(); - - - //this is a special operation, destroying the content of btUnionFind. - //it sorts the elements, based on island id, in order to make it easy to iterate over islands - void sortIslands(); - - void reset(int N); - - SIMD_FORCE_INLINE int getNumElements() const - { - return int(m_elements.size()); - } - SIMD_FORCE_INLINE bool isRoot(int x) const - { - return (x == m_elements[x].m_id); - } - - btElement& getElement(int index) - { - return m_elements[index]; - } - const btElement& getElement(int index) const - { - return m_elements[index]; - } - - void allocate(int N); - void Free(); - - - - - int find(int p, int q) - { - return (find(p) == find(q)); - } - - void unite(int p, int q) - { - int i = find(p), j = find(q); - if (i == j) - return; - -#ifndef USE_PATH_COMPRESSION - //weighted quick union, this keeps the 'trees' balanced, and keeps performance of unite O( log(n) ) - if (m_elements[i].m_sz < m_elements[j].m_sz) - { - m_elements[i].m_id = j; m_elements[j].m_sz += m_elements[i].m_sz; - } - else - { - m_elements[j].m_id = i; m_elements[i].m_sz += m_elements[j].m_sz; - } -#else - m_elements[i].m_id = j; m_elements[j].m_sz += m_elements[i].m_sz; -#endif //USE_PATH_COMPRESSION - } - - int find(int x) - { - //btAssert(x < m_N); - //btAssert(x >= 0); - - while (x != m_elements[x].m_id) - { - //not really a reason not to use path compression, and it flattens the trees/improves find performance dramatically - - #ifdef USE_PATH_COMPRESSION - const btElement* elementPtr = &m_elements[m_elements[x].m_id]; - m_elements[x].m_id = elementPtr->m_id; - x = elementPtr->m_id; - #else// - x = m_elements[x].m_id; - #endif - //btAssert(x < m_N); - //btAssert(x >= 0); - - } - return x; - } - - - }; - - -#endif //UNION_FIND_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btBox2dShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btBox2dShape.cpp deleted file mode 100644 index ecce028c2e6..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btBox2dShape.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btBox2dShape.h" - - -//{ - - -void btBox2dShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const -{ - btTransformAabb(getHalfExtentsWithoutMargin(),getMargin(),t,aabbMin,aabbMax); -} - - -void btBox2dShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const -{ - //btScalar margin = btScalar(0.); - btVector3 halfExtents = getHalfExtentsWithMargin(); - - btScalar lx=btScalar(2.)*(halfExtents.x()); - btScalar ly=btScalar(2.)*(halfExtents.y()); - btScalar lz=btScalar(2.)*(halfExtents.z()); - - inertia.setValue(mass/(btScalar(12.0)) * (ly*ly + lz*lz), - mass/(btScalar(12.0)) * (lx*lx + lz*lz), - mass/(btScalar(12.0)) * (lx*lx + ly*ly)); - -} - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btBox2dShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btBox2dShape.h deleted file mode 100644 index fc032069c03..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btBox2dShape.h +++ /dev/null @@ -1,363 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef OBB_BOX_2D_SHAPE_H -#define OBB_BOX_2D_SHAPE_H - -#include "BulletCollision/CollisionShapes/btPolyhedralConvexShape.h" -#include "BulletCollision/CollisionShapes/btCollisionMargin.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "LinearMath/btVector3.h" -#include "LinearMath/btMinMax.h" - -///The btBox2dShape is a box primitive around the origin, its sides axis aligned with length specified by half extents, in local shape coordinates. When used as part of a btCollisionObject or btRigidBody it will be an oriented box in world space. -class btBox2dShape: public btPolyhedralConvexShape -{ - - //btVector3 m_boxHalfExtents1; //use m_implicitShapeDimensions instead - - btVector3 m_centroid; - btVector3 m_vertices[4]; - btVector3 m_normals[4]; - -public: - - btVector3 getHalfExtentsWithMargin() const - { - btVector3 halfExtents = getHalfExtentsWithoutMargin(); - btVector3 margin(getMargin(),getMargin(),getMargin()); - halfExtents += margin; - return halfExtents; - } - - const btVector3& getHalfExtentsWithoutMargin() const - { - return m_implicitShapeDimensions;//changed in Bullet 2.63: assume the scaling and margin are included - } - - - virtual btVector3 localGetSupportingVertex(const btVector3& vec) const - { - btVector3 halfExtents = getHalfExtentsWithoutMargin(); - btVector3 margin(getMargin(),getMargin(),getMargin()); - halfExtents += margin; - - return btVector3(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()), - btFsels(vec.y(), halfExtents.y(), -halfExtents.y()), - btFsels(vec.z(), halfExtents.z(), -halfExtents.z())); - } - - SIMD_FORCE_INLINE btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const - { - const btVector3& halfExtents = getHalfExtentsWithoutMargin(); - - return btVector3(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()), - btFsels(vec.y(), halfExtents.y(), -halfExtents.y()), - btFsels(vec.z(), halfExtents.z(), -halfExtents.z())); - } - - virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const - { - const btVector3& halfExtents = getHalfExtentsWithoutMargin(); - - for (int i=0;i>1)) - halfExtents.y() * ((i&2)>>1), - halfExtents.z() * (1-((i&4)>>2)) - halfExtents.z() * ((i&4)>>2)); - } - - - virtual void getPlaneEquation(btVector4& plane,int i) const - { - btVector3 halfExtents = getHalfExtentsWithoutMargin(); - - switch (i) - { - case 0: - plane.setValue(btScalar(1.),btScalar(0.),btScalar(0.),-halfExtents.x()); - break; - case 1: - plane.setValue(btScalar(-1.),btScalar(0.),btScalar(0.),-halfExtents.x()); - break; - case 2: - plane.setValue(btScalar(0.),btScalar(1.),btScalar(0.),-halfExtents.y()); - break; - case 3: - plane.setValue(btScalar(0.),btScalar(-1.),btScalar(0.),-halfExtents.y()); - break; - case 4: - plane.setValue(btScalar(0.),btScalar(0.),btScalar(1.),-halfExtents.z()); - break; - case 5: - plane.setValue(btScalar(0.),btScalar(0.),btScalar(-1.),-halfExtents.z()); - break; - default: - btAssert(0); - } - } - - - virtual void getEdge(int i,btVector3& pa,btVector3& pb) const - //virtual void getEdge(int i,Edge& edge) const - { - int edgeVert0 = 0; - int edgeVert1 = 0; - - switch (i) - { - case 0: - edgeVert0 = 0; - edgeVert1 = 1; - break; - case 1: - edgeVert0 = 0; - edgeVert1 = 2; - break; - case 2: - edgeVert0 = 1; - edgeVert1 = 3; - - break; - case 3: - edgeVert0 = 2; - edgeVert1 = 3; - break; - case 4: - edgeVert0 = 0; - edgeVert1 = 4; - break; - case 5: - edgeVert0 = 1; - edgeVert1 = 5; - - break; - case 6: - edgeVert0 = 2; - edgeVert1 = 6; - break; - case 7: - edgeVert0 = 3; - edgeVert1 = 7; - break; - case 8: - edgeVert0 = 4; - edgeVert1 = 5; - break; - case 9: - edgeVert0 = 4; - edgeVert1 = 6; - break; - case 10: - edgeVert0 = 5; - edgeVert1 = 7; - break; - case 11: - edgeVert0 = 6; - edgeVert1 = 7; - break; - default: - btAssert(0); - - } - - getVertex(edgeVert0,pa ); - getVertex(edgeVert1,pb ); - } - - - - - - virtual bool isInside(const btVector3& pt,btScalar tolerance) const - { - btVector3 halfExtents = getHalfExtentsWithoutMargin(); - - //btScalar minDist = 2*tolerance; - - bool result = (pt.x() <= (halfExtents.x()+tolerance)) && - (pt.x() >= (-halfExtents.x()-tolerance)) && - (pt.y() <= (halfExtents.y()+tolerance)) && - (pt.y() >= (-halfExtents.y()-tolerance)) && - (pt.z() <= (halfExtents.z()+tolerance)) && - (pt.z() >= (-halfExtents.z()-tolerance)); - - return result; - } - - - //debugging - virtual const char* getName()const - { - return "Box2d"; - } - - virtual int getNumPreferredPenetrationDirections() const - { - return 6; - } - - virtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const - { - switch (index) - { - case 0: - penetrationVector.setValue(btScalar(1.),btScalar(0.),btScalar(0.)); - break; - case 1: - penetrationVector.setValue(btScalar(-1.),btScalar(0.),btScalar(0.)); - break; - case 2: - penetrationVector.setValue(btScalar(0.),btScalar(1.),btScalar(0.)); - break; - case 3: - penetrationVector.setValue(btScalar(0.),btScalar(-1.),btScalar(0.)); - break; - case 4: - penetrationVector.setValue(btScalar(0.),btScalar(0.),btScalar(1.)); - break; - case 5: - penetrationVector.setValue(btScalar(0.),btScalar(0.),btScalar(-1.)); - break; - default: - btAssert(0); - } - } - -}; - -#endif //OBB_BOX_2D_SHAPE_H - - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btBoxShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btBoxShape.cpp deleted file mode 100644 index c6644efbef3..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btBoxShape.cpp +++ /dev/null @@ -1,41 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ -#include "btBoxShape.h" - - -//{ - - -void btBoxShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const -{ - btTransformAabb(getHalfExtentsWithoutMargin(),getMargin(),t,aabbMin,aabbMax); -} - - -void btBoxShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const -{ - //btScalar margin = btScalar(0.); - btVector3 halfExtents = getHalfExtentsWithMargin(); - - btScalar lx=btScalar(2.)*(halfExtents.x()); - btScalar ly=btScalar(2.)*(halfExtents.y()); - btScalar lz=btScalar(2.)*(halfExtents.z()); - - inertia.setValue(mass/(btScalar(12.0)) * (ly*ly + lz*lz), - mass/(btScalar(12.0)) * (lx*lx + lz*lz), - mass/(btScalar(12.0)) * (lx*lx + ly*ly)); - -} - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btBoxShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btBoxShape.h deleted file mode 100644 index b405efc8e3c..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btBoxShape.h +++ /dev/null @@ -1,318 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef OBB_BOX_MINKOWSKI_H -#define OBB_BOX_MINKOWSKI_H - -#include "btPolyhedralConvexShape.h" -#include "btCollisionMargin.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "LinearMath/btVector3.h" -#include "LinearMath/btMinMax.h" - -///The btBoxShape is a box primitive around the origin, its sides axis aligned with length specified by half extents, in local shape coordinates. When used as part of a btCollisionObject or btRigidBody it will be an oriented box in world space. -class btBoxShape: public btPolyhedralConvexShape -{ - - //btVector3 m_boxHalfExtents1; //use m_implicitShapeDimensions instead - - -public: - - btVector3 getHalfExtentsWithMargin() const - { - btVector3 halfExtents = getHalfExtentsWithoutMargin(); - btVector3 margin(getMargin(),getMargin(),getMargin()); - halfExtents += margin; - return halfExtents; - } - - const btVector3& getHalfExtentsWithoutMargin() const - { - return m_implicitShapeDimensions;//scaling is included, margin is not - } - - - virtual btVector3 localGetSupportingVertex(const btVector3& vec) const - { - btVector3 halfExtents = getHalfExtentsWithoutMargin(); - btVector3 margin(getMargin(),getMargin(),getMargin()); - halfExtents += margin; - - return btVector3(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()), - btFsels(vec.y(), halfExtents.y(), -halfExtents.y()), - btFsels(vec.z(), halfExtents.z(), -halfExtents.z())); - } - - SIMD_FORCE_INLINE btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const - { - const btVector3& halfExtents = getHalfExtentsWithoutMargin(); - - return btVector3(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()), - btFsels(vec.y(), halfExtents.y(), -halfExtents.y()), - btFsels(vec.z(), halfExtents.z(), -halfExtents.z())); - } - - virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const - { - const btVector3& halfExtents = getHalfExtentsWithoutMargin(); - - for (int i=0;i>1)) - halfExtents.y() * ((i&2)>>1), - halfExtents.z() * (1-((i&4)>>2)) - halfExtents.z() * ((i&4)>>2)); - } - - - virtual void getPlaneEquation(btVector4& plane,int i) const - { - btVector3 halfExtents = getHalfExtentsWithoutMargin(); - - switch (i) - { - case 0: - plane.setValue(btScalar(1.),btScalar(0.),btScalar(0.),-halfExtents.x()); - break; - case 1: - plane.setValue(btScalar(-1.),btScalar(0.),btScalar(0.),-halfExtents.x()); - break; - case 2: - plane.setValue(btScalar(0.),btScalar(1.),btScalar(0.),-halfExtents.y()); - break; - case 3: - plane.setValue(btScalar(0.),btScalar(-1.),btScalar(0.),-halfExtents.y()); - break; - case 4: - plane.setValue(btScalar(0.),btScalar(0.),btScalar(1.),-halfExtents.z()); - break; - case 5: - plane.setValue(btScalar(0.),btScalar(0.),btScalar(-1.),-halfExtents.z()); - break; - default: - btAssert(0); - } - } - - - virtual void getEdge(int i,btVector3& pa,btVector3& pb) const - //virtual void getEdge(int i,Edge& edge) const - { - int edgeVert0 = 0; - int edgeVert1 = 0; - - switch (i) - { - case 0: - edgeVert0 = 0; - edgeVert1 = 1; - break; - case 1: - edgeVert0 = 0; - edgeVert1 = 2; - break; - case 2: - edgeVert0 = 1; - edgeVert1 = 3; - - break; - case 3: - edgeVert0 = 2; - edgeVert1 = 3; - break; - case 4: - edgeVert0 = 0; - edgeVert1 = 4; - break; - case 5: - edgeVert0 = 1; - edgeVert1 = 5; - - break; - case 6: - edgeVert0 = 2; - edgeVert1 = 6; - break; - case 7: - edgeVert0 = 3; - edgeVert1 = 7; - break; - case 8: - edgeVert0 = 4; - edgeVert1 = 5; - break; - case 9: - edgeVert0 = 4; - edgeVert1 = 6; - break; - case 10: - edgeVert0 = 5; - edgeVert1 = 7; - break; - case 11: - edgeVert0 = 6; - edgeVert1 = 7; - break; - default: - btAssert(0); - - } - - getVertex(edgeVert0,pa ); - getVertex(edgeVert1,pb ); - } - - - - - - virtual bool isInside(const btVector3& pt,btScalar tolerance) const - { - btVector3 halfExtents = getHalfExtentsWithoutMargin(); - - //btScalar minDist = 2*tolerance; - - bool result = (pt.x() <= (halfExtents.x()+tolerance)) && - (pt.x() >= (-halfExtents.x()-tolerance)) && - (pt.y() <= (halfExtents.y()+tolerance)) && - (pt.y() >= (-halfExtents.y()-tolerance)) && - (pt.z() <= (halfExtents.z()+tolerance)) && - (pt.z() >= (-halfExtents.z()-tolerance)); - - return result; - } - - - //debugging - virtual const char* getName()const - { - return "Box"; - } - - virtual int getNumPreferredPenetrationDirections() const - { - return 6; - } - - virtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const - { - switch (index) - { - case 0: - penetrationVector.setValue(btScalar(1.),btScalar(0.),btScalar(0.)); - break; - case 1: - penetrationVector.setValue(btScalar(-1.),btScalar(0.),btScalar(0.)); - break; - case 2: - penetrationVector.setValue(btScalar(0.),btScalar(1.),btScalar(0.)); - break; - case 3: - penetrationVector.setValue(btScalar(0.),btScalar(-1.),btScalar(0.)); - break; - case 4: - penetrationVector.setValue(btScalar(0.),btScalar(0.),btScalar(1.)); - break; - case 5: - penetrationVector.setValue(btScalar(0.),btScalar(0.),btScalar(-1.)); - break; - default: - btAssert(0); - } - } - -}; - - -#endif //OBB_BOX_MINKOWSKI_H - - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp deleted file mode 100644 index b71ee03d042..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp +++ /dev/null @@ -1,466 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -//#define DISABLE_BVH - -#include "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h" -#include "BulletCollision/CollisionShapes/btOptimizedBvh.h" -#include "LinearMath/btSerializer.h" - -///Bvh Concave triangle mesh is a static-triangle mesh shape with Bounding Volume Hierarchy optimization. -///Uses an interface to access the triangles to allow for sharing graphics/physics triangles. -btBvhTriangleMeshShape::btBvhTriangleMeshShape(btStridingMeshInterface* meshInterface, bool useQuantizedAabbCompression, bool buildBvh) -:btTriangleMeshShape(meshInterface), -m_bvh(0), -m_triangleInfoMap(0), -m_useQuantizedAabbCompression(useQuantizedAabbCompression), -m_ownsBvh(false) -{ - m_shapeType = TRIANGLE_MESH_SHAPE_PROXYTYPE; - //construct bvh from meshInterface -#ifndef DISABLE_BVH - - if (buildBvh) - { - buildOptimizedBvh(); - } - -#endif //DISABLE_BVH - -} - -btBvhTriangleMeshShape::btBvhTriangleMeshShape(btStridingMeshInterface* meshInterface, bool useQuantizedAabbCompression,const btVector3& bvhAabbMin,const btVector3& bvhAabbMax,bool buildBvh) -:btTriangleMeshShape(meshInterface), -m_bvh(0), -m_triangleInfoMap(0), -m_useQuantizedAabbCompression(useQuantizedAabbCompression), -m_ownsBvh(false) -{ - m_shapeType = TRIANGLE_MESH_SHAPE_PROXYTYPE; - //construct bvh from meshInterface -#ifndef DISABLE_BVH - - if (buildBvh) - { - void* mem = btAlignedAlloc(sizeof(btOptimizedBvh),16); - m_bvh = new (mem) btOptimizedBvh(); - - m_bvh->build(meshInterface,m_useQuantizedAabbCompression,bvhAabbMin,bvhAabbMax); - m_ownsBvh = true; - } - -#endif //DISABLE_BVH - -} - -void btBvhTriangleMeshShape::partialRefitTree(const btVector3& aabbMin,const btVector3& aabbMax) -{ - m_bvh->refitPartial( m_meshInterface,aabbMin,aabbMax ); - - m_localAabbMin.setMin(aabbMin); - m_localAabbMax.setMax(aabbMax); -} - - -void btBvhTriangleMeshShape::refitTree(const btVector3& aabbMin,const btVector3& aabbMax) -{ - m_bvh->refit( m_meshInterface, aabbMin,aabbMax ); - - recalcLocalAabb(); -} - -btBvhTriangleMeshShape::~btBvhTriangleMeshShape() -{ - if (m_ownsBvh) - { - m_bvh->~btOptimizedBvh(); - btAlignedFree(m_bvh); - } -} - -void btBvhTriangleMeshShape::performRaycast (btTriangleCallback* callback, const btVector3& raySource, const btVector3& rayTarget) -{ - struct MyNodeOverlapCallback : public btNodeOverlapCallback - { - btStridingMeshInterface* m_meshInterface; - btTriangleCallback* m_callback; - - MyNodeOverlapCallback(btTriangleCallback* callback,btStridingMeshInterface* meshInterface) - :m_meshInterface(meshInterface), - m_callback(callback) - { - } - - virtual void processNode(int nodeSubPart, int nodeTriangleIndex) - { - btVector3 m_triangle[3]; - const unsigned char *vertexbase; - int numverts; - PHY_ScalarType type; - int stride; - const unsigned char *indexbase; - int indexstride; - int numfaces; - PHY_ScalarType indicestype; - - m_meshInterface->getLockedReadOnlyVertexIndexBase( - &vertexbase, - numverts, - type, - stride, - &indexbase, - indexstride, - numfaces, - indicestype, - nodeSubPart); - - unsigned int* gfxbase = (unsigned int*)(indexbase+nodeTriangleIndex*indexstride); - btAssert(indicestype==PHY_INTEGER||indicestype==PHY_SHORT); - - const btVector3& meshScaling = m_meshInterface->getScaling(); - for (int j=2;j>=0;j--) - { - int graphicsindex = indicestype==PHY_SHORT?((unsigned short*)gfxbase)[j]:gfxbase[j]; - - if (type == PHY_FLOAT) - { - float* graphicsbase = (float*)(vertexbase+graphicsindex*stride); - - m_triangle[j] = btVector3(graphicsbase[0]*meshScaling.getX(),graphicsbase[1]*meshScaling.getY(),graphicsbase[2]*meshScaling.getZ()); - } - else - { - double* graphicsbase = (double*)(vertexbase+graphicsindex*stride); - - m_triangle[j] = btVector3(btScalar(graphicsbase[0])*meshScaling.getX(),btScalar(graphicsbase[1])*meshScaling.getY(),btScalar(graphicsbase[2])*meshScaling.getZ()); - } - } - - /* Perform ray vs. triangle collision here */ - m_callback->processTriangle(m_triangle,nodeSubPart,nodeTriangleIndex); - m_meshInterface->unLockReadOnlyVertexBase(nodeSubPart); - } - }; - - MyNodeOverlapCallback myNodeCallback(callback,m_meshInterface); - - m_bvh->reportRayOverlappingNodex(&myNodeCallback,raySource,rayTarget); -} - -void btBvhTriangleMeshShape::performConvexcast (btTriangleCallback* callback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin, const btVector3& aabbMax) -{ - struct MyNodeOverlapCallback : public btNodeOverlapCallback - { - btStridingMeshInterface* m_meshInterface; - btTriangleCallback* m_callback; - - MyNodeOverlapCallback(btTriangleCallback* callback,btStridingMeshInterface* meshInterface) - :m_meshInterface(meshInterface), - m_callback(callback) - { - } - - virtual void processNode(int nodeSubPart, int nodeTriangleIndex) - { - btVector3 m_triangle[3]; - const unsigned char *vertexbase; - int numverts; - PHY_ScalarType type; - int stride; - const unsigned char *indexbase; - int indexstride; - int numfaces; - PHY_ScalarType indicestype; - - m_meshInterface->getLockedReadOnlyVertexIndexBase( - &vertexbase, - numverts, - type, - stride, - &indexbase, - indexstride, - numfaces, - indicestype, - nodeSubPart); - - unsigned int* gfxbase = (unsigned int*)(indexbase+nodeTriangleIndex*indexstride); - btAssert(indicestype==PHY_INTEGER||indicestype==PHY_SHORT); - - const btVector3& meshScaling = m_meshInterface->getScaling(); - for (int j=2;j>=0;j--) - { - int graphicsindex = indicestype==PHY_SHORT?((unsigned short*)gfxbase)[j]:gfxbase[j]; - - if (type == PHY_FLOAT) - { - float* graphicsbase = (float*)(vertexbase+graphicsindex*stride); - - m_triangle[j] = btVector3(graphicsbase[0]*meshScaling.getX(),graphicsbase[1]*meshScaling.getY(),graphicsbase[2]*meshScaling.getZ()); - } - else - { - double* graphicsbase = (double*)(vertexbase+graphicsindex*stride); - - m_triangle[j] = btVector3(btScalar(graphicsbase[0])*meshScaling.getX(),btScalar(graphicsbase[1])*meshScaling.getY(),btScalar(graphicsbase[2])*meshScaling.getZ()); - } - } - - /* Perform ray vs. triangle collision here */ - m_callback->processTriangle(m_triangle,nodeSubPart,nodeTriangleIndex); - m_meshInterface->unLockReadOnlyVertexBase(nodeSubPart); - } - }; - - MyNodeOverlapCallback myNodeCallback(callback,m_meshInterface); - - m_bvh->reportBoxCastOverlappingNodex (&myNodeCallback, raySource, rayTarget, aabbMin, aabbMax); -} - -//perform bvh tree traversal and report overlapping triangles to 'callback' -void btBvhTriangleMeshShape::processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const -{ - -#ifdef DISABLE_BVH - //brute force traverse all triangles - btTriangleMeshShape::processAllTriangles(callback,aabbMin,aabbMax); -#else - - //first get all the nodes - - - struct MyNodeOverlapCallback : public btNodeOverlapCallback - { - btStridingMeshInterface* m_meshInterface; - btTriangleCallback* m_callback; - btVector3 m_triangle[3]; - - - MyNodeOverlapCallback(btTriangleCallback* callback,btStridingMeshInterface* meshInterface) - :m_meshInterface(meshInterface), - m_callback(callback) - { - } - - virtual void processNode(int nodeSubPart, int nodeTriangleIndex) - { - const unsigned char *vertexbase; - int numverts; - PHY_ScalarType type; - int stride; - const unsigned char *indexbase; - int indexstride; - int numfaces; - PHY_ScalarType indicestype; - - - m_meshInterface->getLockedReadOnlyVertexIndexBase( - &vertexbase, - numverts, - type, - stride, - &indexbase, - indexstride, - numfaces, - indicestype, - nodeSubPart); - - unsigned int* gfxbase = (unsigned int*)(indexbase+nodeTriangleIndex*indexstride); - btAssert(indicestype==PHY_INTEGER||indicestype==PHY_SHORT); - - const btVector3& meshScaling = m_meshInterface->getScaling(); - for (int j=2;j>=0;j--) - { - - int graphicsindex = indicestype==PHY_SHORT?((unsigned short*)gfxbase)[j]:gfxbase[j]; - - -#ifdef DEBUG_TRIANGLE_MESH - printf("%d ,",graphicsindex); -#endif //DEBUG_TRIANGLE_MESH - if (type == PHY_FLOAT) - { - float* graphicsbase = (float*)(vertexbase+graphicsindex*stride); - - m_triangle[j] = btVector3( - graphicsbase[0]*meshScaling.getX(), - graphicsbase[1]*meshScaling.getY(), - graphicsbase[2]*meshScaling.getZ()); - } - else - { - double* graphicsbase = (double*)(vertexbase+graphicsindex*stride); - - m_triangle[j] = btVector3( - btScalar(graphicsbase[0])*meshScaling.getX(), - btScalar(graphicsbase[1])*meshScaling.getY(), - btScalar(graphicsbase[2])*meshScaling.getZ()); - } -#ifdef DEBUG_TRIANGLE_MESH - printf("triangle vertices:%f,%f,%f\n",triangle[j].x(),triangle[j].y(),triangle[j].z()); -#endif //DEBUG_TRIANGLE_MESH - } - - m_callback->processTriangle(m_triangle,nodeSubPart,nodeTriangleIndex); - m_meshInterface->unLockReadOnlyVertexBase(nodeSubPart); - } - - }; - - MyNodeOverlapCallback myNodeCallback(callback,m_meshInterface); - - m_bvh->reportAabbOverlappingNodex(&myNodeCallback,aabbMin,aabbMax); - - -#endif//DISABLE_BVH - - -} - -void btBvhTriangleMeshShape::setLocalScaling(const btVector3& scaling) -{ - if ((getLocalScaling() -scaling).length2() > SIMD_EPSILON) - { - btTriangleMeshShape::setLocalScaling(scaling); - buildOptimizedBvh(); - } -} - -void btBvhTriangleMeshShape::buildOptimizedBvh() -{ - if (m_ownsBvh) - { - m_bvh->~btOptimizedBvh(); - btAlignedFree(m_bvh); - } - ///m_localAabbMin/m_localAabbMax is already re-calculated in btTriangleMeshShape. We could just scale aabb, but this needs some more work - void* mem = btAlignedAlloc(sizeof(btOptimizedBvh),16); - m_bvh = new(mem) btOptimizedBvh(); - //rebuild the bvh... - m_bvh->build(m_meshInterface,m_useQuantizedAabbCompression,m_localAabbMin,m_localAabbMax); - m_ownsBvh = true; -} - -void btBvhTriangleMeshShape::setOptimizedBvh(btOptimizedBvh* bvh, const btVector3& scaling) -{ - btAssert(!m_bvh); - btAssert(!m_ownsBvh); - - m_bvh = bvh; - m_ownsBvh = false; - // update the scaling without rebuilding the bvh - if ((getLocalScaling() -scaling).length2() > SIMD_EPSILON) - { - btTriangleMeshShape::setLocalScaling(scaling); - } -} - - - -///fills the dataBuffer and returns the struct name (and 0 on failure) -const char* btBvhTriangleMeshShape::serialize(void* dataBuffer, btSerializer* serializer) const -{ - btTriangleMeshShapeData* trimeshData = (btTriangleMeshShapeData*) dataBuffer; - - btCollisionShape::serialize(&trimeshData->m_collisionShapeData,serializer); - - m_meshInterface->serialize(&trimeshData->m_meshInterface, serializer); - - trimeshData->m_collisionMargin = float(m_collisionMargin); - - - - if (m_bvh && !(serializer->getSerializationFlags()&BT_SERIALIZE_NO_BVH)) - { - void* chunk = serializer->findPointer(m_bvh); - if (chunk) - { -#ifdef BT_USE_DOUBLE_PRECISION - trimeshData->m_quantizedDoubleBvh = (btQuantizedBvhData*)chunk; - trimeshData->m_quantizedFloatBvh = 0; -#else - trimeshData->m_quantizedFloatBvh = (btQuantizedBvhData*)chunk; - trimeshData->m_quantizedDoubleBvh= 0; -#endif //BT_USE_DOUBLE_PRECISION - } else - { - -#ifdef BT_USE_DOUBLE_PRECISION - trimeshData->m_quantizedDoubleBvh = (btQuantizedBvhData*)serializer->getUniquePointer(m_bvh); - trimeshData->m_quantizedFloatBvh = 0; -#else - trimeshData->m_quantizedFloatBvh = (btQuantizedBvhData*)serializer->getUniquePointer(m_bvh); - trimeshData->m_quantizedDoubleBvh= 0; -#endif //BT_USE_DOUBLE_PRECISION - - int sz = m_bvh->calculateSerializeBufferSizeNew(); - btChunk* chunk = serializer->allocate(sz,1); - const char* structType = m_bvh->serialize(chunk->m_oldPtr, serializer); - serializer->finalizeChunk(chunk,structType,BT_QUANTIZED_BVH_CODE,m_bvh); - } - } else - { - trimeshData->m_quantizedFloatBvh = 0; - trimeshData->m_quantizedDoubleBvh = 0; - } - - - - if (m_triangleInfoMap && !(serializer->getSerializationFlags()&BT_SERIALIZE_NO_TRIANGLEINFOMAP)) - { - void* chunk = serializer->findPointer(m_triangleInfoMap); - if (chunk) - { - trimeshData->m_triangleInfoMap = (btTriangleInfoMapData*)chunk; - } else - { - trimeshData->m_triangleInfoMap = (btTriangleInfoMapData*)serializer->getUniquePointer(m_triangleInfoMap); - int sz = m_triangleInfoMap->calculateSerializeBufferSize(); - btChunk* chunk = serializer->allocate(sz,1); - const char* structType = m_triangleInfoMap->serialize(chunk->m_oldPtr, serializer); - serializer->finalizeChunk(chunk,structType,BT_TRIANLGE_INFO_MAP,m_triangleInfoMap); - } - } else - { - trimeshData->m_triangleInfoMap = 0; - } - - return "btTriangleMeshShapeData"; -} - -void btBvhTriangleMeshShape::serializeSingleBvh(btSerializer* serializer) const -{ - if (m_bvh) - { - int len = m_bvh->calculateSerializeBufferSizeNew(); //make sure not to use calculateSerializeBufferSize because it is used for in-place - btChunk* chunk = serializer->allocate(len,1); - const char* structType = m_bvh->serialize(chunk->m_oldPtr, serializer); - serializer->finalizeChunk(chunk,structType,BT_QUANTIZED_BVH_CODE,(void*)m_bvh); - } -} - -void btBvhTriangleMeshShape::serializeSingleTriangleInfoMap(btSerializer* serializer) const -{ - if (m_triangleInfoMap) - { - int len = m_triangleInfoMap->calculateSerializeBufferSize(); - btChunk* chunk = serializer->allocate(len,1); - const char* structType = m_triangleInfoMap->serialize(chunk->m_oldPtr, serializer); - serializer->finalizeChunk(chunk,structType,BT_TRIANLGE_INFO_MAP,(void*)m_triangleInfoMap); - } -} - - - - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h deleted file mode 100644 index e4d4386ae50..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h +++ /dev/null @@ -1,139 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BVH_TRIANGLE_MESH_SHAPE_H -#define BVH_TRIANGLE_MESH_SHAPE_H - -#include "btTriangleMeshShape.h" -#include "btOptimizedBvh.h" -#include "LinearMath/btAlignedAllocator.h" -#include "btTriangleInfoMap.h" - -///The btBvhTriangleMeshShape is a static-triangle mesh shape with several optimizations, such as bounding volume hierarchy and cache friendly traversal for PlayStation 3 Cell SPU. It is recommended to enable useQuantizedAabbCompression for better memory usage. -///It takes a triangle mesh as input, for example a btTriangleMesh or btTriangleIndexVertexArray. The btBvhTriangleMeshShape class allows for triangle mesh deformations by a refit or partialRefit method. -///Instead of building the bounding volume hierarchy acceleration structure, it is also possible to serialize (save) and deserialize (load) the structure from disk. -///See Demos\ConcaveDemo\ConcavePhysicsDemo.cpp for an example. -ATTRIBUTE_ALIGNED16(class) btBvhTriangleMeshShape : public btTriangleMeshShape -{ - - btOptimizedBvh* m_bvh; - btTriangleInfoMap* m_triangleInfoMap; - - bool m_useQuantizedAabbCompression; - bool m_ownsBvh; - bool m_pad[11];////need padding due to alignment - -public: - - BT_DECLARE_ALIGNED_ALLOCATOR(); - - btBvhTriangleMeshShape() : btTriangleMeshShape(0),m_bvh(0),m_triangleInfoMap(0),m_ownsBvh(false) {m_shapeType = TRIANGLE_MESH_SHAPE_PROXYTYPE;}; - btBvhTriangleMeshShape(btStridingMeshInterface* meshInterface, bool useQuantizedAabbCompression, bool buildBvh = true); - - ///optionally pass in a larger bvh aabb, used for quantization. This allows for deformations within this aabb - btBvhTriangleMeshShape(btStridingMeshInterface* meshInterface, bool useQuantizedAabbCompression,const btVector3& bvhAabbMin,const btVector3& bvhAabbMax, bool buildBvh = true); - - virtual ~btBvhTriangleMeshShape(); - - bool getOwnsBvh () const - { - return m_ownsBvh; - } - - - - void performRaycast (btTriangleCallback* callback, const btVector3& raySource, const btVector3& rayTarget); - void performConvexcast (btTriangleCallback* callback, const btVector3& boxSource, const btVector3& boxTarget, const btVector3& boxMin, const btVector3& boxMax); - - virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const; - - void refitTree(const btVector3& aabbMin,const btVector3& aabbMax); - - ///for a fast incremental refit of parts of the tree. Note: the entire AABB of the tree will become more conservative, it never shrinks - void partialRefitTree(const btVector3& aabbMin,const btVector3& aabbMax); - - //debugging - virtual const char* getName()const {return "BVHTRIANGLEMESH";} - - - virtual void setLocalScaling(const btVector3& scaling); - - btOptimizedBvh* getOptimizedBvh() - { - return m_bvh; - } - - void setOptimizedBvh(btOptimizedBvh* bvh, const btVector3& localScaling=btVector3(1,1,1)); - - void buildOptimizedBvh(); - - bool usesQuantizedAabbCompression() const - { - return m_useQuantizedAabbCompression; - } - - void setTriangleInfoMap(btTriangleInfoMap* triangleInfoMap) - { - m_triangleInfoMap = triangleInfoMap; - } - - const btTriangleInfoMap* getTriangleInfoMap() const - { - return m_triangleInfoMap; - } - - btTriangleInfoMap* getTriangleInfoMap() - { - return m_triangleInfoMap; - } - - virtual int calculateSerializeBufferSize() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; - - virtual void serializeSingleBvh(btSerializer* serializer) const; - - virtual void serializeSingleTriangleInfoMap(btSerializer* serializer) const; - -}; - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btTriangleMeshShapeData -{ - btCollisionShapeData m_collisionShapeData; - - btStridingMeshInterfaceData m_meshInterface; - - btQuantizedBvhFloatData *m_quantizedFloatBvh; - btQuantizedBvhDoubleData *m_quantizedDoubleBvh; - - btTriangleInfoMapData *m_triangleInfoMap; - - float m_collisionMargin; - - char m_pad3[4]; - -}; - - -SIMD_FORCE_INLINE int btBvhTriangleMeshShape::calculateSerializeBufferSize() const -{ - return sizeof(btTriangleMeshShapeData); -} - - - -#endif //BVH_TRIANGLE_MESH_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btCapsuleShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btCapsuleShape.cpp deleted file mode 100644 index 2faa11d4360..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btCapsuleShape.cpp +++ /dev/null @@ -1,171 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btCapsuleShape.h" - -#include "BulletCollision/CollisionShapes/btCollisionMargin.h" -#include "LinearMath/btQuaternion.h" - -btCapsuleShape::btCapsuleShape(btScalar radius, btScalar height) : btConvexInternalShape () -{ - m_shapeType = CAPSULE_SHAPE_PROXYTYPE; - m_upAxis = 1; - m_implicitShapeDimensions.setValue(radius,0.5f*height,radius); -} - - - btVector3 btCapsuleShape::localGetSupportingVertexWithoutMargin(const btVector3& vec0)const -{ - - btVector3 supVec(0,0,0); - - btScalar maxDot(btScalar(-BT_LARGE_FLOAT)); - - btVector3 vec = vec0; - btScalar lenSqr = vec.length2(); - if (lenSqr < btScalar(0.0001)) - { - vec.setValue(1,0,0); - } else - { - btScalar rlen = btScalar(1.) / btSqrt(lenSqr ); - vec *= rlen; - } - - btVector3 vtx; - btScalar newDot; - - btScalar radius = getRadius(); - - - { - btVector3 pos(0,0,0); - pos[getUpAxis()] = getHalfHeight(); - - vtx = pos +vec*m_localScaling*(radius) - vec * getMargin(); - newDot = vec.dot(vtx); - if (newDot > maxDot) - { - maxDot = newDot; - supVec = vtx; - } - } - { - btVector3 pos(0,0,0); - pos[getUpAxis()] = -getHalfHeight(); - - vtx = pos +vec*m_localScaling*(radius) - vec * getMargin(); - newDot = vec.dot(vtx); - if (newDot > maxDot) - { - maxDot = newDot; - supVec = vtx; - } - } - - return supVec; - -} - - void btCapsuleShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const -{ - - - btScalar radius = getRadius(); - - for (int j=0;j maxDot) - { - maxDot = newDot; - supportVerticesOut[j] = vtx; - } - } - { - btVector3 pos(0,0,0); - pos[getUpAxis()] = -getHalfHeight(); - vtx = pos +vec*m_localScaling*(radius) - vec * getMargin(); - newDot = vec.dot(vtx); - if (newDot > maxDot) - { - maxDot = newDot; - supportVerticesOut[j] = vtx; - } - } - - } -} - - -void btCapsuleShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const -{ - //as an approximation, take the inertia of the box that bounds the spheres - - btTransform ident; - ident.setIdentity(); - - - btScalar radius = getRadius(); - - btVector3 halfExtents(radius,radius,radius); - halfExtents[getUpAxis()]+=getHalfHeight(); - - btScalar margin = CONVEX_DISTANCE_MARGIN; - - btScalar lx=btScalar(2.)*(halfExtents[0]+margin); - btScalar ly=btScalar(2.)*(halfExtents[1]+margin); - btScalar lz=btScalar(2.)*(halfExtents[2]+margin); - const btScalar x2 = lx*lx; - const btScalar y2 = ly*ly; - const btScalar z2 = lz*lz; - const btScalar scaledmass = mass * btScalar(.08333333); - - inertia[0] = scaledmass * (y2+z2); - inertia[1] = scaledmass * (x2+z2); - inertia[2] = scaledmass * (x2+y2); - -} - -btCapsuleShapeX::btCapsuleShapeX(btScalar radius,btScalar height) -{ - m_upAxis = 0; - m_implicitShapeDimensions.setValue(0.5f*height, radius,radius); -} - - - - - - -btCapsuleShapeZ::btCapsuleShapeZ(btScalar radius,btScalar height) -{ - m_upAxis = 2; - m_implicitShapeDimensions.setValue(radius,radius,0.5f*height); -} - - - - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btCapsuleShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btCapsuleShape.h deleted file mode 100644 index ab763abf808..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btCapsuleShape.h +++ /dev/null @@ -1,173 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BT_CAPSULE_SHAPE_H -#define BT_CAPSULE_SHAPE_H - -#include "btConvexInternalShape.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types - - -///The btCapsuleShape represents a capsule around the Y axis, there is also the btCapsuleShapeX aligned around the X axis and btCapsuleShapeZ around the Z axis. -///The total height is height+2*radius, so the height is just the height between the center of each 'sphere' of the capsule caps. -///The btCapsuleShape is a convex hull of two spheres. The btMultiSphereShape is a more general collision shape that takes the convex hull of multiple sphere, so it can also represent a capsule when just using two spheres. -class btCapsuleShape : public btConvexInternalShape -{ -protected: - int m_upAxis; - -protected: - ///only used for btCapsuleShapeZ and btCapsuleShapeX subclasses. - btCapsuleShape() : btConvexInternalShape() {m_shapeType = CAPSULE_SHAPE_PROXYTYPE;}; - -public: - btCapsuleShape(btScalar radius,btScalar height); - - ///CollisionShape Interface - virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; - - /// btConvexShape Interface - virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const; - - virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const; - - virtual void setMargin(btScalar collisionMargin) - { - //correct the m_implicitShapeDimensions for the margin - btVector3 oldMargin(getMargin(),getMargin(),getMargin()); - btVector3 implicitShapeDimensionsWithMargin = m_implicitShapeDimensions+oldMargin; - - btConvexInternalShape::setMargin(collisionMargin); - btVector3 newMargin(getMargin(),getMargin(),getMargin()); - m_implicitShapeDimensions = implicitShapeDimensionsWithMargin - newMargin; - - } - - virtual void getAabb (const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const - { - btVector3 halfExtents(getRadius(),getRadius(),getRadius()); - halfExtents[m_upAxis] = getRadius() + getHalfHeight(); - halfExtents += btVector3(getMargin(),getMargin(),getMargin()); - btMatrix3x3 abs_b = t.getBasis().absolute(); - btVector3 center = t.getOrigin(); - btVector3 extent = btVector3(abs_b[0].dot(halfExtents),abs_b[1].dot(halfExtents),abs_b[2].dot(halfExtents)); - - aabbMin = center - extent; - aabbMax = center + extent; - } - - virtual const char* getName()const - { - return "CapsuleShape"; - } - - int getUpAxis() const - { - return m_upAxis; - } - - btScalar getRadius() const - { - int radiusAxis = (m_upAxis+2)%3; - return m_implicitShapeDimensions[radiusAxis]; - } - - btScalar getHalfHeight() const - { - return m_implicitShapeDimensions[m_upAxis]; - } - - virtual void setLocalScaling(const btVector3& scaling) - { - btVector3 oldMargin(getMargin(),getMargin(),getMargin()); - btVector3 implicitShapeDimensionsWithMargin = m_implicitShapeDimensions+oldMargin; - btVector3 unScaledImplicitShapeDimensionsWithMargin = implicitShapeDimensionsWithMargin / m_localScaling; - - btConvexInternalShape::setLocalScaling(scaling); - - m_implicitShapeDimensions = (unScaledImplicitShapeDimensionsWithMargin * m_localScaling) - oldMargin; - - } - - virtual int calculateSerializeBufferSize() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; - - -}; - -///btCapsuleShapeX represents a capsule around the Z axis -///the total height is height+2*radius, so the height is just the height between the center of each 'sphere' of the capsule caps. -class btCapsuleShapeX : public btCapsuleShape -{ -public: - - btCapsuleShapeX(btScalar radius,btScalar height); - - //debugging - virtual const char* getName()const - { - return "CapsuleX"; - } - - - -}; - -///btCapsuleShapeZ represents a capsule around the Z axis -///the total height is height+2*radius, so the height is just the height between the center of each 'sphere' of the capsule caps. -class btCapsuleShapeZ : public btCapsuleShape -{ -public: - btCapsuleShapeZ(btScalar radius,btScalar height); - - //debugging - virtual const char* getName()const - { - return "CapsuleZ"; - } - - -}; - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btCapsuleShapeData -{ - btConvexInternalShapeData m_convexInternalShapeData; - - int m_upAxis; - - char m_padding[4]; -}; - -SIMD_FORCE_INLINE int btCapsuleShape::calculateSerializeBufferSize() const -{ - return sizeof(btCapsuleShapeData); -} - - ///fills the dataBuffer and returns the struct name (and 0 on failure) -SIMD_FORCE_INLINE const char* btCapsuleShape::serialize(void* dataBuffer, btSerializer* serializer) const -{ - btCapsuleShapeData* shapeData = (btCapsuleShapeData*) dataBuffer; - - btConvexInternalShape::serialize(&shapeData->m_convexInternalShapeData,serializer); - - shapeData->m_upAxis = m_upAxis; - - return "btCapsuleShapeData"; -} - -#endif //BT_CAPSULE_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btCollisionMargin.h b/extern/bullet2/BulletCollision/CollisionShapes/btCollisionMargin.h deleted file mode 100644 index 18fd026041f..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btCollisionMargin.h +++ /dev/null @@ -1,26 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef COLLISION_MARGIN_H -#define COLLISION_MARGIN_H - -//used by Gjk and some other algorithms - -#define CONVEX_DISTANCE_MARGIN btScalar(0.04)// btScalar(0.1)//;//btScalar(0.01) - - - -#endif //COLLISION_MARGIN_H - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btCollisionShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btCollisionShape.cpp deleted file mode 100644 index 39ee21cad73..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btCollisionShape.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ -#include "BulletCollision/CollisionShapes/btCollisionShape.h" -#include "LinearMath/btSerializer.h" - -/* - Make sure this dummy function never changes so that it - can be used by probes that are checking whether the - library is actually installed. -*/ -extern "C" -{ -void btBulletCollisionProbe (); - -void btBulletCollisionProbe () {} -} - - - -void btCollisionShape::getBoundingSphere(btVector3& center,btScalar& radius) const -{ - btTransform tr; - tr.setIdentity(); - btVector3 aabbMin,aabbMax; - - getAabb(tr,aabbMin,aabbMax); - - radius = (aabbMax-aabbMin).length()*btScalar(0.5); - center = (aabbMin+aabbMax)*btScalar(0.5); -} - - -btScalar btCollisionShape::getContactBreakingThreshold(btScalar defaultContactThreshold) const -{ - return getAngularMotionDisc() * defaultContactThreshold; -} - -btScalar btCollisionShape::getAngularMotionDisc() const -{ - ///@todo cache this value, to improve performance - btVector3 center; - btScalar disc; - getBoundingSphere(center,disc); - disc += (center).length(); - return disc; -} - -void btCollisionShape::calculateTemporalAabb(const btTransform& curTrans,const btVector3& linvel,const btVector3& angvel,btScalar timeStep, btVector3& temporalAabbMin,btVector3& temporalAabbMax) const -{ - //start with static aabb - getAabb(curTrans,temporalAabbMin,temporalAabbMax); - - btScalar temporalAabbMaxx = temporalAabbMax.getX(); - btScalar temporalAabbMaxy = temporalAabbMax.getY(); - btScalar temporalAabbMaxz = temporalAabbMax.getZ(); - btScalar temporalAabbMinx = temporalAabbMin.getX(); - btScalar temporalAabbMiny = temporalAabbMin.getY(); - btScalar temporalAabbMinz = temporalAabbMin.getZ(); - - // add linear motion - btVector3 linMotion = linvel*timeStep; - ///@todo: simd would have a vector max/min operation, instead of per-element access - if (linMotion.x() > btScalar(0.)) - temporalAabbMaxx += linMotion.x(); - else - temporalAabbMinx += linMotion.x(); - if (linMotion.y() > btScalar(0.)) - temporalAabbMaxy += linMotion.y(); - else - temporalAabbMiny += linMotion.y(); - if (linMotion.z() > btScalar(0.)) - temporalAabbMaxz += linMotion.z(); - else - temporalAabbMinz += linMotion.z(); - - //add conservative angular motion - btScalar angularMotion = angvel.length() * getAngularMotionDisc() * timeStep; - btVector3 angularMotion3d(angularMotion,angularMotion,angularMotion); - temporalAabbMin = btVector3(temporalAabbMinx,temporalAabbMiny,temporalAabbMinz); - temporalAabbMax = btVector3(temporalAabbMaxx,temporalAabbMaxy,temporalAabbMaxz); - - temporalAabbMin -= angularMotion3d; - temporalAabbMax += angularMotion3d; -} - -///fills the dataBuffer and returns the struct name (and 0 on failure) -const char* btCollisionShape::serialize(void* dataBuffer, btSerializer* serializer) const -{ - btCollisionShapeData* shapeData = (btCollisionShapeData*) dataBuffer; - char* name = (char*) serializer->findNameForPointer(this); - shapeData->m_name = (char*)serializer->getUniquePointer(name); - if (shapeData->m_name) - { - serializer->serializeName(name); - } - shapeData->m_shapeType = m_shapeType; - //shapeData->m_padding//?? - return "btCollisionShapeData"; -} - -void btCollisionShape::serializeSingleShape(btSerializer* serializer) const -{ - int len = calculateSerializeBufferSize(); - btChunk* chunk = serializer->allocate(len,1); - const char* structType = serialize(chunk->m_oldPtr, serializer); - serializer->finalizeChunk(chunk,structType,BT_SHAPE_CODE,(void*)this); -} \ No newline at end of file diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btCollisionShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btCollisionShape.h deleted file mode 100644 index f32bd736a99..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btCollisionShape.h +++ /dev/null @@ -1,150 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef COLLISION_SHAPE_H -#define COLLISION_SHAPE_H - -#include "LinearMath/btTransform.h" -#include "LinearMath/btVector3.h" -#include "LinearMath/btMatrix3x3.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" //for the shape types -class btSerializer; - - -///The btCollisionShape class provides an interface for collision shapes that can be shared among btCollisionObjects. -class btCollisionShape -{ -protected: - int m_shapeType; - void* m_userPointer; - -public: - - btCollisionShape() : m_shapeType (INVALID_SHAPE_PROXYTYPE), m_userPointer(0) - { - } - - virtual ~btCollisionShape() - { - } - - ///getAabb returns the axis aligned bounding box in the coordinate frame of the given transform t. - virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const =0; - - virtual void getBoundingSphere(btVector3& center,btScalar& radius) const; - - ///getAngularMotionDisc returns the maximus radius needed for Conservative Advancement to handle time-of-impact with rotations. - virtual btScalar getAngularMotionDisc() const; - - virtual btScalar getContactBreakingThreshold(btScalar defaultContactThresholdFactor) const; - - - ///calculateTemporalAabb calculates the enclosing aabb for the moving object over interval [0..timeStep) - ///result is conservative - void calculateTemporalAabb(const btTransform& curTrans,const btVector3& linvel,const btVector3& angvel,btScalar timeStep, btVector3& temporalAabbMin,btVector3& temporalAabbMax) const; - - - - SIMD_FORCE_INLINE bool isPolyhedral() const - { - return btBroadphaseProxy::isPolyhedral(getShapeType()); - } - - SIMD_FORCE_INLINE bool isConvex2d() const - { - return btBroadphaseProxy::isConvex2d(getShapeType()); - } - - SIMD_FORCE_INLINE bool isConvex() const - { - return btBroadphaseProxy::isConvex(getShapeType()); - } - SIMD_FORCE_INLINE bool isNonMoving() const - { - return btBroadphaseProxy::isNonMoving(getShapeType()); - } - SIMD_FORCE_INLINE bool isConcave() const - { - return btBroadphaseProxy::isConcave(getShapeType()); - } - SIMD_FORCE_INLINE bool isCompound() const - { - return btBroadphaseProxy::isCompound(getShapeType()); - } - - SIMD_FORCE_INLINE bool isSoftBody() const - { - return btBroadphaseProxy::isSoftBody(getShapeType()); - } - - ///isInfinite is used to catch simulation error (aabb check) - SIMD_FORCE_INLINE bool isInfinite() const - { - return btBroadphaseProxy::isInfinite(getShapeType()); - } - -#ifndef __SPU__ - virtual void setLocalScaling(const btVector3& scaling) =0; - virtual const btVector3& getLocalScaling() const =0; - virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const = 0; - - -//debugging support - virtual const char* getName()const =0 ; -#endif //__SPU__ - - - int getShapeType() const { return m_shapeType; } - virtual void setMargin(btScalar margin) = 0; - virtual btScalar getMargin() const = 0; - - - ///optional user data pointer - void setUserPointer(void* userPtr) - { - m_userPointer = userPtr; - } - - void* getUserPointer() const - { - return m_userPointer; - } - - virtual int calculateSerializeBufferSize() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; - - virtual void serializeSingleShape(btSerializer* serializer) const; - -}; - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btCollisionShapeData -{ - char *m_name; - int m_shapeType; - char m_padding[4]; -}; - -SIMD_FORCE_INLINE int btCollisionShape::calculateSerializeBufferSize() const -{ - return sizeof(btCollisionShapeData); -} - - - -#endif //COLLISION_SHAPE_H - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btCompoundShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btCompoundShape.cpp deleted file mode 100644 index 36906a75f34..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btCompoundShape.cpp +++ /dev/null @@ -1,323 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btCompoundShape.h" -#include "btCollisionShape.h" -#include "BulletCollision/BroadphaseCollision/btDbvt.h" -#include "LinearMath/btSerializer.h" - -btCompoundShape::btCompoundShape(bool enableDynamicAabbTree) -: m_localAabbMin(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)), -m_localAabbMax(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)), -m_dynamicAabbTree(0), -m_updateRevision(1), -m_collisionMargin(btScalar(0.)), -m_localScaling(btScalar(1.),btScalar(1.),btScalar(1.)) -{ - m_shapeType = COMPOUND_SHAPE_PROXYTYPE; - - if (enableDynamicAabbTree) - { - void* mem = btAlignedAlloc(sizeof(btDbvt),16); - m_dynamicAabbTree = new(mem) btDbvt(); - btAssert(mem==m_dynamicAabbTree); - } -} - - -btCompoundShape::~btCompoundShape() -{ - if (m_dynamicAabbTree) - { - m_dynamicAabbTree->~btDbvt(); - btAlignedFree(m_dynamicAabbTree); - } -} - -void btCompoundShape::addChildShape(const btTransform& localTransform,btCollisionShape* shape) -{ - m_updateRevision++; - //m_childTransforms.push_back(localTransform); - //m_childShapes.push_back(shape); - btCompoundShapeChild child; - child.m_transform = localTransform; - child.m_childShape = shape; - child.m_childShapeType = shape->getShapeType(); - child.m_childMargin = shape->getMargin(); - - - //extend the local aabbMin/aabbMax - btVector3 localAabbMin,localAabbMax; - shape->getAabb(localTransform,localAabbMin,localAabbMax); - for (int i=0;i<3;i++) - { - if (m_localAabbMin[i] > localAabbMin[i]) - { - m_localAabbMin[i] = localAabbMin[i]; - } - if (m_localAabbMax[i] < localAabbMax[i]) - { - m_localAabbMax[i] = localAabbMax[i]; - } - - } - if (m_dynamicAabbTree) - { - const btDbvtVolume bounds=btDbvtVolume::FromMM(localAabbMin,localAabbMax); - int index = m_children.size(); - child.m_node = m_dynamicAabbTree->insert(bounds,(void*)index); - } - - m_children.push_back(child); - -} - -void btCompoundShape::updateChildTransform(int childIndex, const btTransform& newChildTransform) -{ - m_children[childIndex].m_transform = newChildTransform; - - if (m_dynamicAabbTree) - { - ///update the dynamic aabb tree - btVector3 localAabbMin,localAabbMax; - m_children[childIndex].m_childShape->getAabb(newChildTransform,localAabbMin,localAabbMax); - ATTRIBUTE_ALIGNED16(btDbvtVolume) bounds=btDbvtVolume::FromMM(localAabbMin,localAabbMax); - //int index = m_children.size()-1; - m_dynamicAabbTree->update(m_children[childIndex].m_node,bounds); - } - - recalculateLocalAabb(); -} - -void btCompoundShape::removeChildShapeByIndex(int childShapeIndex) -{ - m_updateRevision++; - btAssert(childShapeIndex >=0 && childShapeIndex < m_children.size()); - if (m_dynamicAabbTree) - { - m_dynamicAabbTree->remove(m_children[childShapeIndex].m_node); - } - m_children.swap(childShapeIndex,m_children.size()-1); - m_children.pop_back(); - -} - - - -void btCompoundShape::removeChildShape(btCollisionShape* shape) -{ - m_updateRevision++; - // Find the children containing the shape specified, and remove those children. - //note: there might be multiple children using the same shape! - for(int i = m_children.size()-1; i >= 0 ; i--) - { - if(m_children[i].m_childShape == shape) - { - removeChildShapeByIndex(i); - } - } - - - - recalculateLocalAabb(); -} - -void btCompoundShape::recalculateLocalAabb() -{ - // Recalculate the local aabb - // Brute force, it iterates over all the shapes left. - - m_localAabbMin = btVector3(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); - m_localAabbMax = btVector3(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); - - //extend the local aabbMin/aabbMax - for (int j = 0; j < m_children.size(); j++) - { - btVector3 localAabbMin,localAabbMax; - m_children[j].m_childShape->getAabb(m_children[j].m_transform, localAabbMin, localAabbMax); - for (int i=0;i<3;i++) - { - if (m_localAabbMin[i] > localAabbMin[i]) - m_localAabbMin[i] = localAabbMin[i]; - if (m_localAabbMax[i] < localAabbMax[i]) - m_localAabbMax[i] = localAabbMax[i]; - } - } -} - -///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version -void btCompoundShape::getAabb(const btTransform& trans,btVector3& aabbMin,btVector3& aabbMax) const -{ - btVector3 localHalfExtents = btScalar(0.5)*(m_localAabbMax-m_localAabbMin); - btVector3 localCenter = btScalar(0.5)*(m_localAabbMax+m_localAabbMin); - - //avoid an illegal AABB when there are no children - if (!m_children.size()) - { - localHalfExtents.setValue(0,0,0); - localCenter.setValue(0,0,0); - } - localHalfExtents += btVector3(getMargin(),getMargin(),getMargin()); - - - btMatrix3x3 abs_b = trans.getBasis().absolute(); - - btVector3 center = trans(localCenter); - - btVector3 extent = btVector3(abs_b[0].dot(localHalfExtents), - abs_b[1].dot(localHalfExtents), - abs_b[2].dot(localHalfExtents)); - aabbMin = center-extent; - aabbMax = center+extent; - -} - -void btCompoundShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const -{ - //approximation: take the inertia from the aabb for now - btTransform ident; - ident.setIdentity(); - btVector3 aabbMin,aabbMax; - getAabb(ident,aabbMin,aabbMax); - - btVector3 halfExtents = (aabbMax-aabbMin)*btScalar(0.5); - - btScalar lx=btScalar(2.)*(halfExtents.x()); - btScalar ly=btScalar(2.)*(halfExtents.y()); - btScalar lz=btScalar(2.)*(halfExtents.z()); - - inertia[0] = mass/(btScalar(12.0)) * (ly*ly + lz*lz); - inertia[1] = mass/(btScalar(12.0)) * (lx*lx + lz*lz); - inertia[2] = mass/(btScalar(12.0)) * (lx*lx + ly*ly); - -} - - - - -void btCompoundShape::calculatePrincipalAxisTransform(btScalar* masses, btTransform& principal, btVector3& inertia) const -{ - int n = m_children.size(); - - btScalar totalMass = 0; - btVector3 center(0, 0, 0); - int k; - - for (k = 0; k < n; k++) - { - center += m_children[k].m_transform.getOrigin() * masses[k]; - totalMass += masses[k]; - } - center /= totalMass; - principal.setOrigin(center); - - btMatrix3x3 tensor(0, 0, 0, 0, 0, 0, 0, 0, 0); - for ( k = 0; k < n; k++) - { - btVector3 i; - m_children[k].m_childShape->calculateLocalInertia(masses[k], i); - - const btTransform& t = m_children[k].m_transform; - btVector3 o = t.getOrigin() - center; - - //compute inertia tensor in coordinate system of compound shape - btMatrix3x3 j = t.getBasis().transpose(); - j[0] *= i[0]; - j[1] *= i[1]; - j[2] *= i[2]; - j = t.getBasis() * j; - - //add inertia tensor - tensor[0] += j[0]; - tensor[1] += j[1]; - tensor[2] += j[2]; - - //compute inertia tensor of pointmass at o - btScalar o2 = o.length2(); - j[0].setValue(o2, 0, 0); - j[1].setValue(0, o2, 0); - j[2].setValue(0, 0, o2); - j[0] += o * -o.x(); - j[1] += o * -o.y(); - j[2] += o * -o.z(); - - //add inertia tensor of pointmass - tensor[0] += masses[k] * j[0]; - tensor[1] += masses[k] * j[1]; - tensor[2] += masses[k] * j[2]; - } - - tensor.diagonalize(principal.getBasis(), btScalar(0.00001), 20); - inertia.setValue(tensor[0][0], tensor[1][1], tensor[2][2]); -} - - - -void btCompoundShape::setLocalScaling(const btVector3& scaling) -{ - - for(int i = 0; i < m_children.size(); i++) - { - btTransform childTrans = getChildTransform(i); - btVector3 childScale = m_children[i].m_childShape->getLocalScaling(); -// childScale = childScale * (childTrans.getBasis() * scaling); - childScale = childScale * scaling / m_localScaling; - m_children[i].m_childShape->setLocalScaling(childScale); - childTrans.setOrigin((childTrans.getOrigin())*scaling); - updateChildTransform(i, childTrans); - recalculateLocalAabb(); - } - m_localScaling = scaling; -} - - - - -///fills the dataBuffer and returns the struct name (and 0 on failure) -const char* btCompoundShape::serialize(void* dataBuffer, btSerializer* serializer) const -{ - - btCompoundShapeData* shapeData = (btCompoundShapeData*) dataBuffer; - btCollisionShape::serialize(&shapeData->m_collisionShapeData, serializer); - - shapeData->m_collisionMargin = float(m_collisionMargin); - shapeData->m_numChildShapes = m_children.size(); - shapeData->m_childShapePtr = 0; - if (shapeData->m_numChildShapes) - { - btChunk* chunk = serializer->allocate(sizeof(btCompoundShapeChildData),shapeData->m_numChildShapes); - btCompoundShapeChildData* memPtr = (btCompoundShapeChildData*)chunk->m_oldPtr; - shapeData->m_childShapePtr = (btCompoundShapeChildData*)serializer->getUniquePointer(memPtr); - - for (int i=0;im_numChildShapes;i++,memPtr++) - { - memPtr->m_childMargin = float(m_children[i].m_childMargin); - memPtr->m_childShape = (btCollisionShapeData*)serializer->getUniquePointer(m_children[i].m_childShape); - //don't serialize shapes that already have been serialized - if (!serializer->findPointer(m_children[i].m_childShape)) - { - btChunk* chunk = serializer->allocate(m_children[i].m_childShape->calculateSerializeBufferSize(),1); - const char* structType = m_children[i].m_childShape->serialize(chunk->m_oldPtr,serializer); - serializer->finalizeChunk(chunk,structType,BT_SHAPE_CODE,m_children[i].m_childShape); - } - - memPtr->m_childShapeType = m_children[i].m_childShapeType; - m_children[i].m_transform.serializeFloat(memPtr->m_transform); - } - serializer->finalizeChunk(chunk,"btCompoundShapeChildData",BT_ARRAY_CODE,chunk->m_oldPtr); - } - return "btCompoundShapeData"; -} - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btCompoundShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btCompoundShape.h deleted file mode 100644 index 179bb00918c..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btCompoundShape.h +++ /dev/null @@ -1,206 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef COMPOUND_SHAPE_H -#define COMPOUND_SHAPE_H - -#include "btCollisionShape.h" - -#include "LinearMath/btVector3.h" -#include "LinearMath/btTransform.h" -#include "LinearMath/btMatrix3x3.h" -#include "btCollisionMargin.h" -#include "LinearMath/btAlignedObjectArray.h" - -//class btOptimizedBvh; -struct btDbvt; - -ATTRIBUTE_ALIGNED16(struct) btCompoundShapeChild -{ - BT_DECLARE_ALIGNED_ALLOCATOR(); - - btTransform m_transform; - btCollisionShape* m_childShape; - int m_childShapeType; - btScalar m_childMargin; - struct btDbvtNode* m_node; -}; - -SIMD_FORCE_INLINE bool operator==(const btCompoundShapeChild& c1, const btCompoundShapeChild& c2) -{ - return ( c1.m_transform == c2.m_transform && - c1.m_childShape == c2.m_childShape && - c1.m_childShapeType == c2.m_childShapeType && - c1.m_childMargin == c2.m_childMargin ); -} - -/// The btCompoundShape allows to store multiple other btCollisionShapes -/// This allows for moving concave collision objects. This is more general then the static concave btBvhTriangleMeshShape. -/// It has an (optional) dynamic aabb tree to accelerate early rejection tests. -/// @todo: This aabb tree can also be use to speed up ray tests on btCompoundShape, see http://code.google.com/p/bullet/issues/detail?id=25 -/// Currently, removal of child shapes is only supported when disabling the aabb tree (pass 'false' in the constructor of btCompoundShape) -ATTRIBUTE_ALIGNED16(class) btCompoundShape : public btCollisionShape -{ - btAlignedObjectArray m_children; - btVector3 m_localAabbMin; - btVector3 m_localAabbMax; - - btDbvt* m_dynamicAabbTree; - - ///increment m_updateRevision when adding/removing/replacing child shapes, so that some caches can be updated - int m_updateRevision; - - btScalar m_collisionMargin; - -protected: - btVector3 m_localScaling; - -public: - BT_DECLARE_ALIGNED_ALLOCATOR(); - - btCompoundShape(bool enableDynamicAabbTree = true); - - virtual ~btCompoundShape(); - - void addChildShape(const btTransform& localTransform,btCollisionShape* shape); - - /// Remove all children shapes that contain the specified shape - virtual void removeChildShape(btCollisionShape* shape); - - void removeChildShapeByIndex(int childShapeindex); - - - int getNumChildShapes() const - { - return int (m_children.size()); - } - - btCollisionShape* getChildShape(int index) - { - return m_children[index].m_childShape; - } - const btCollisionShape* getChildShape(int index) const - { - return m_children[index].m_childShape; - } - - btTransform& getChildTransform(int index) - { - return m_children[index].m_transform; - } - const btTransform& getChildTransform(int index) const - { - return m_children[index].m_transform; - } - - ///set a new transform for a child, and update internal data structures (local aabb and dynamic tree) - void updateChildTransform(int childIndex, const btTransform& newChildTransform); - - - btCompoundShapeChild* getChildList() - { - return &m_children[0]; - } - - ///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version - virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; - - /** Re-calculate the local Aabb. Is called at the end of removeChildShapes. - Use this yourself if you modify the children or their transforms. */ - virtual void recalculateLocalAabb(); - - virtual void setLocalScaling(const btVector3& scaling); - - virtual const btVector3& getLocalScaling() const - { - return m_localScaling; - } - - virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; - - virtual void setMargin(btScalar margin) - { - m_collisionMargin = margin; - } - virtual btScalar getMargin() const - { - return m_collisionMargin; - } - virtual const char* getName()const - { - return "Compound"; - } - - - btDbvt* getDynamicAabbTree() - { - return m_dynamicAabbTree; - } - - ///computes the exact moment of inertia and the transform from the coordinate system defined by the principal axes of the moment of inertia - ///and the center of mass to the current coordinate system. "masses" points to an array of masses of the children. The resulting transform - ///"principal" has to be applied inversely to all children transforms in order for the local coordinate system of the compound - ///shape to be centered at the center of mass and to coincide with the principal axes. This also necessitates a correction of the world transform - ///of the collision object by the principal transform. - void calculatePrincipalAxisTransform(btScalar* masses, btTransform& principal, btVector3& inertia) const; - - int getUpdateRevision() const - { - return m_updateRevision; - } - - virtual int calculateSerializeBufferSize() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; - - -}; - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btCompoundShapeChildData -{ - btTransformFloatData m_transform; - btCollisionShapeData *m_childShape; - int m_childShapeType; - float m_childMargin; -}; - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btCompoundShapeData -{ - btCollisionShapeData m_collisionShapeData; - - btCompoundShapeChildData *m_childShapePtr; - - int m_numChildShapes; - - float m_collisionMargin; - -}; - - -SIMD_FORCE_INLINE int btCompoundShape::calculateSerializeBufferSize() const -{ - return sizeof(btCompoundShapeData); -} - - - - - - - -#endif //COMPOUND_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConcaveShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btConcaveShape.cpp deleted file mode 100644 index 58ff84a5b02..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btConcaveShape.cpp +++ /dev/null @@ -1,27 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btConcaveShape.h" - -btConcaveShape::btConcaveShape() : m_collisionMargin(btScalar(0.)) -{ - -} - -btConcaveShape::~btConcaveShape() -{ - -} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConcaveShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btConcaveShape.h deleted file mode 100644 index 2a370a47c75..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btConcaveShape.h +++ /dev/null @@ -1,60 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef CONCAVE_SHAPE_H -#define CONCAVE_SHAPE_H - -#include "btCollisionShape.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types -#include "btTriangleCallback.h" - -/// PHY_ScalarType enumerates possible scalar types. -/// See the btStridingMeshInterface or btHeightfieldTerrainShape for its use -typedef enum PHY_ScalarType { - PHY_FLOAT, - PHY_DOUBLE, - PHY_INTEGER, - PHY_SHORT, - PHY_FIXEDPOINT88, - PHY_UCHAR -} PHY_ScalarType; - -///The btConcaveShape class provides an interface for non-moving (static) concave shapes. -///It has been implemented by the btStaticPlaneShape, btBvhTriangleMeshShape and btHeightfieldTerrainShape. -class btConcaveShape : public btCollisionShape -{ -protected: - btScalar m_collisionMargin; - -public: - btConcaveShape(); - - virtual ~btConcaveShape(); - - virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const = 0; - - virtual btScalar getMargin() const { - return m_collisionMargin; - } - virtual void setMargin(btScalar collisionMargin) - { - m_collisionMargin = collisionMargin; - } - - - -}; - -#endif //CONCAVE_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConeShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btConeShape.cpp deleted file mode 100644 index dfa3f941eeb..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btConeShape.cpp +++ /dev/null @@ -1,133 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btConeShape.h" - - - -btConeShape::btConeShape (btScalar radius,btScalar height): btConvexInternalShape (), -m_radius (radius), -m_height(height) -{ - m_shapeType = CONE_SHAPE_PROXYTYPE; - setConeUpIndex(1); - btVector3 halfExtents; - m_sinAngle = (m_radius / btSqrt(m_radius * m_radius + m_height * m_height)); -} - -btConeShapeZ::btConeShapeZ (btScalar radius,btScalar height): -btConeShape(radius,height) -{ - setConeUpIndex(2); -} - -btConeShapeX::btConeShapeX (btScalar radius,btScalar height): -btConeShape(radius,height) -{ - setConeUpIndex(0); -} - -///choose upAxis index -void btConeShape::setConeUpIndex(int upIndex) -{ - switch (upIndex) - { - case 0: - m_coneIndices[0] = 1; - m_coneIndices[1] = 0; - m_coneIndices[2] = 2; - break; - case 1: - m_coneIndices[0] = 0; - m_coneIndices[1] = 1; - m_coneIndices[2] = 2; - break; - case 2: - m_coneIndices[0] = 0; - m_coneIndices[1] = 2; - m_coneIndices[2] = 1; - break; - default: - btAssert(0); - }; -} - -btVector3 btConeShape::coneLocalSupport(const btVector3& v) const -{ - - btScalar halfHeight = m_height * btScalar(0.5); - - if (v[m_coneIndices[1]] > v.length() * m_sinAngle) - { - btVector3 tmp; - - tmp[m_coneIndices[0]] = btScalar(0.); - tmp[m_coneIndices[1]] = halfHeight; - tmp[m_coneIndices[2]] = btScalar(0.); - return tmp; - } - else { - btScalar s = btSqrt(v[m_coneIndices[0]] * v[m_coneIndices[0]] + v[m_coneIndices[2]] * v[m_coneIndices[2]]); - if (s > SIMD_EPSILON) { - btScalar d = m_radius / s; - btVector3 tmp; - tmp[m_coneIndices[0]] = v[m_coneIndices[0]] * d; - tmp[m_coneIndices[1]] = -halfHeight; - tmp[m_coneIndices[2]] = v[m_coneIndices[2]] * d; - return tmp; - } - else { - btVector3 tmp; - tmp[m_coneIndices[0]] = btScalar(0.); - tmp[m_coneIndices[1]] = -halfHeight; - tmp[m_coneIndices[2]] = btScalar(0.); - return tmp; - } - } - -} - -btVector3 btConeShape::localGetSupportingVertexWithoutMargin(const btVector3& vec) const -{ - return coneLocalSupport(vec); -} - -void btConeShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const -{ - for (int i=0;ilocalGetSupportingVertexWithoutMargin(vec); -} - -void btConvex2dShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const -{ - m_childConvexShape->batchedUnitVectorGetSupportingVertexWithoutMargin(vectors,supportVerticesOut,numVectors); -} - - -btVector3 btConvex2dShape::localGetSupportingVertex(const btVector3& vec)const -{ - return m_childConvexShape->localGetSupportingVertex(vec); -} - - -void btConvex2dShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const -{ - ///this linear upscaling is not realistic, but we don't deal with large mass ratios... - m_childConvexShape->calculateLocalInertia(mass,inertia); -} - - - ///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version -void btConvex2dShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const -{ - m_childConvexShape->getAabb(t,aabbMin,aabbMax); -} - -void btConvex2dShape::getAabbSlow(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const -{ - m_childConvexShape->getAabbSlow(t,aabbMin,aabbMax); -} - -void btConvex2dShape::setLocalScaling(const btVector3& scaling) -{ - m_childConvexShape->setLocalScaling(scaling); -} - -const btVector3& btConvex2dShape::getLocalScaling() const -{ - return m_childConvexShape->getLocalScaling(); -} - -void btConvex2dShape::setMargin(btScalar margin) -{ - m_childConvexShape->setMargin(margin); -} -btScalar btConvex2dShape::getMargin() const -{ - return m_childConvexShape->getMargin(); -} - -int btConvex2dShape::getNumPreferredPenetrationDirections() const -{ - return m_childConvexShape->getNumPreferredPenetrationDirections(); -} - -void btConvex2dShape::getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const -{ - m_childConvexShape->getPreferredPenetrationDirection(index,penetrationVector); -} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvex2dShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btConvex2dShape.h deleted file mode 100644 index 58166c8291a..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btConvex2dShape.h +++ /dev/null @@ -1,80 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BT_CONVEX_2D_SHAPE_H -#define BT_CONVEX_2D_SHAPE_H - -#include "BulletCollision/CollisionShapes/btConvexShape.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types - -///The btConvex2dShape allows to use arbitrary convex shapes are 2d convex shapes, with the Z component assumed to be 0. -///For 2d boxes, the btBox2dShape is recommended. -class btConvex2dShape : public btConvexShape -{ - btConvexShape* m_childConvexShape; - - public: - - btConvex2dShape( btConvexShape* convexChildShape); - - virtual ~btConvex2dShape(); - - virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const; - - virtual btVector3 localGetSupportingVertex(const btVector3& vec)const; - - virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const; - - virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; - - btConvexShape* getChildShape() - { - return m_childConvexShape; - } - - const btConvexShape* getChildShape() const - { - return m_childConvexShape; - } - - virtual const char* getName()const - { - return "Convex2dShape"; - } - - - - /////////////////////////// - - - ///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version - void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; - - virtual void getAabbSlow(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; - - virtual void setLocalScaling(const btVector3& scaling) ; - virtual const btVector3& getLocalScaling() const ; - - virtual void setMargin(btScalar margin); - virtual btScalar getMargin() const; - - virtual int getNumPreferredPenetrationDirections() const; - - virtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const; - - -}; - -#endif //BT_CONVEX_2D_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexHullShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btConvexHullShape.cpp deleted file mode 100644 index 2c39cabca54..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btConvexHullShape.cpp +++ /dev/null @@ -1,223 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btConvexHullShape.h" -#include "BulletCollision/CollisionShapes/btCollisionMargin.h" - -#include "LinearMath/btQuaternion.h" -#include "LinearMath/btSerializer.h" - -btConvexHullShape ::btConvexHullShape (const btScalar* points,int numPoints,int stride) : btPolyhedralConvexAabbCachingShape () -{ - m_shapeType = CONVEX_HULL_SHAPE_PROXYTYPE; - m_unscaledPoints.resize(numPoints); - - unsigned char* pointsAddress = (unsigned char*)points; - - for (int i=0;i maxDot) - { - maxDot = newDot; - supVec = vtx; - } - } - return supVec; -} - -void btConvexHullShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const -{ - btScalar newDot; - //use 'w' component of supportVerticesOut? - { - for (int i=0;i supportVerticesOut[j][3]) - { - //WARNING: don't swap next lines, the w component would get overwritten! - supportVerticesOut[j] = vtx; - supportVerticesOut[j][3] = newDot; - } - } - } - - - -} - - - -btVector3 btConvexHullShape::localGetSupportingVertex(const btVector3& vec)const -{ - btVector3 supVertex = localGetSupportingVertexWithoutMargin(vec); - - if ( getMargin()!=btScalar(0.) ) - { - btVector3 vecnorm = vec; - if (vecnorm .length2() < (SIMD_EPSILON*SIMD_EPSILON)) - { - vecnorm.setValue(btScalar(-1.),btScalar(-1.),btScalar(-1.)); - } - vecnorm.normalize(); - supVertex+= getMargin() * vecnorm; - } - return supVertex; -} - - - - - - - - - -//currently just for debugging (drawing), perhaps future support for algebraic continuous collision detection -//Please note that you can debug-draw btConvexHullShape with the Raytracer Demo -int btConvexHullShape::getNumVertices() const -{ - return m_unscaledPoints.size(); -} - -int btConvexHullShape::getNumEdges() const -{ - return m_unscaledPoints.size(); -} - -void btConvexHullShape::getEdge(int i,btVector3& pa,btVector3& pb) const -{ - - int index0 = i%m_unscaledPoints.size(); - int index1 = (i+1)%m_unscaledPoints.size(); - pa = getScaledPoint(index0); - pb = getScaledPoint(index1); -} - -void btConvexHullShape::getVertex(int i,btVector3& vtx) const -{ - vtx = getScaledPoint(i); -} - -int btConvexHullShape::getNumPlanes() const -{ - return 0; -} - -void btConvexHullShape::getPlane(btVector3& ,btVector3& ,int ) const -{ - - btAssert(0); -} - -//not yet -bool btConvexHullShape::isInside(const btVector3& ,btScalar ) const -{ - btAssert(0); - return false; -} - -///fills the dataBuffer and returns the struct name (and 0 on failure) -const char* btConvexHullShape::serialize(void* dataBuffer, btSerializer* serializer) const -{ - //int szc = sizeof(btConvexHullShapeData); - btConvexHullShapeData* shapeData = (btConvexHullShapeData*) dataBuffer; - btConvexInternalShape::serialize(&shapeData->m_convexInternalShapeData, serializer); - - int numElem = m_unscaledPoints.size(); - shapeData->m_numUnscaledPoints = numElem; -#ifdef BT_USE_DOUBLE_PRECISION - shapeData->m_unscaledPointsFloatPtr = 0; - shapeData->m_unscaledPointsDoublePtr = numElem ? (btVector3Data*)serializer->getUniquePointer((void*)&m_unscaledPoints[0]): 0; -#else - shapeData->m_unscaledPointsFloatPtr = numElem ? (btVector3Data*)serializer->getUniquePointer((void*)&m_unscaledPoints[0]): 0; - shapeData->m_unscaledPointsDoublePtr = 0; -#endif - - if (numElem) - { - int sz = sizeof(btVector3Data); - // int sz2 = sizeof(btVector3DoubleData); - // int sz3 = sizeof(btVector3FloatData); - btChunk* chunk = serializer->allocate(sz,numElem); - btVector3Data* memPtr = (btVector3Data*)chunk->m_oldPtr; - for (int i=0;ifinalizeChunk(chunk,btVector3DataName,BT_ARRAY_CODE,(void*)&m_unscaledPoints[0]); - } - - return "btConvexHullShapeData"; -} - - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexHullShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btConvexHullShape.h deleted file mode 100644 index bf960f4df92..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btConvexHullShape.h +++ /dev/null @@ -1,120 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef CONVEX_HULL_SHAPE_H -#define CONVEX_HULL_SHAPE_H - -#include "btPolyhedralConvexShape.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types -#include "LinearMath/btAlignedObjectArray.h" - - -///The btConvexHullShape implements an implicit convex hull of an array of vertices. -///Bullet provides a general and fast collision detector for convex shapes based on GJK and EPA using localGetSupportingVertex. -ATTRIBUTE_ALIGNED16(class) btConvexHullShape : public btPolyhedralConvexAabbCachingShape -{ - btAlignedObjectArray m_unscaledPoints; - -public: - BT_DECLARE_ALIGNED_ALLOCATOR(); - - - ///this constructor optionally takes in a pointer to points. Each point is assumed to be 3 consecutive btScalar (x,y,z), the striding defines the number of bytes between each point, in memory. - ///It is easier to not pass any points in the constructor, and just add one point at a time, using addPoint. - ///btConvexHullShape make an internal copy of the points. - btConvexHullShape(const btScalar* points=0,int numPoints=0, int stride=sizeof(btVector3)); - - void addPoint(const btVector3& point); - - - btVector3* getUnscaledPoints() - { - return &m_unscaledPoints[0]; - } - - const btVector3* getUnscaledPoints() const - { - return &m_unscaledPoints[0]; - } - - ///getPoints is obsolete, please use getUnscaledPoints - const btVector3* getPoints() const - { - return getUnscaledPoints(); - } - - - - - SIMD_FORCE_INLINE btVector3 getScaledPoint(int i) const - { - return m_unscaledPoints[i] * m_localScaling; - } - - SIMD_FORCE_INLINE int getNumPoints() const - { - return m_unscaledPoints.size(); - } - - virtual btVector3 localGetSupportingVertex(const btVector3& vec)const; - virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const; - virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const; - - - - //debugging - virtual const char* getName()const {return "Convex";} - - - virtual int getNumVertices() const; - virtual int getNumEdges() const; - virtual void getEdge(int i,btVector3& pa,btVector3& pb) const; - virtual void getVertex(int i,btVector3& vtx) const; - virtual int getNumPlanes() const; - virtual void getPlane(btVector3& planeNormal,btVector3& planeSupport,int i ) const; - virtual bool isInside(const btVector3& pt,btScalar tolerance) const; - - ///in case we receive negative scaling - virtual void setLocalScaling(const btVector3& scaling); - - virtual int calculateSerializeBufferSize() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; - -}; - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btConvexHullShapeData -{ - btConvexInternalShapeData m_convexInternalShapeData; - - btVector3FloatData *m_unscaledPointsFloatPtr; - btVector3DoubleData *m_unscaledPointsDoublePtr; - - int m_numUnscaledPoints; - char m_padding3[4]; - -}; - - -SIMD_FORCE_INLINE int btConvexHullShape::calculateSerializeBufferSize() const -{ - return sizeof(btConvexHullShapeData); -} - - -#endif //CONVEX_HULL_SHAPE_H - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexInternalShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btConvexInternalShape.cpp deleted file mode 100644 index 083d60b1b1e..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btConvexInternalShape.cpp +++ /dev/null @@ -1,151 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btConvexInternalShape.h" - - - -btConvexInternalShape::btConvexInternalShape() -: m_localScaling(btScalar(1.),btScalar(1.),btScalar(1.)), -m_collisionMargin(CONVEX_DISTANCE_MARGIN) -{ -} - - -void btConvexInternalShape::setLocalScaling(const btVector3& scaling) -{ - m_localScaling = scaling.absolute(); -} - - - -void btConvexInternalShape::getAabbSlow(const btTransform& trans,btVector3&minAabb,btVector3&maxAabb) const -{ -#ifndef __SPU__ - //use localGetSupportingVertexWithoutMargin? - btScalar margin = getMargin(); - for (int i=0;i<3;i++) - { - btVector3 vec(btScalar(0.),btScalar(0.),btScalar(0.)); - vec[i] = btScalar(1.); - - btVector3 sv = localGetSupportingVertex(vec*trans.getBasis()); - - btVector3 tmp = trans(sv); - maxAabb[i] = tmp[i]+margin; - vec[i] = btScalar(-1.); - tmp = trans(localGetSupportingVertex(vec*trans.getBasis())); - minAabb[i] = tmp[i]-margin; - } -#endif -} - - - -btVector3 btConvexInternalShape::localGetSupportingVertex(const btVector3& vec)const -{ -#ifndef __SPU__ - - btVector3 supVertex = localGetSupportingVertexWithoutMargin(vec); - - if ( getMargin()!=btScalar(0.) ) - { - btVector3 vecnorm = vec; - if (vecnorm .length2() < (SIMD_EPSILON*SIMD_EPSILON)) - { - vecnorm.setValue(btScalar(-1.),btScalar(-1.),btScalar(-1.)); - } - vecnorm.normalize(); - supVertex+= getMargin() * vecnorm; - } - return supVertex; - -#else - btAssert(0); - return btVector3(0,0,0); -#endif //__SPU__ - - } - - -btConvexInternalAabbCachingShape::btConvexInternalAabbCachingShape() - : btConvexInternalShape(), -m_localAabbMin(1,1,1), -m_localAabbMax(-1,-1,-1), -m_isLocalAabbValid(false) -{ -} - - -void btConvexInternalAabbCachingShape::getAabb(const btTransform& trans,btVector3& aabbMin,btVector3& aabbMax) const -{ - getNonvirtualAabb(trans,aabbMin,aabbMax,getMargin()); -} - -void btConvexInternalAabbCachingShape::setLocalScaling(const btVector3& scaling) -{ - btConvexInternalShape::setLocalScaling(scaling); - recalcLocalAabb(); -} - - -void btConvexInternalAabbCachingShape::recalcLocalAabb() -{ - m_isLocalAabbValid = true; - - #if 1 - static const btVector3 _directions[] = - { - btVector3( 1., 0., 0.), - btVector3( 0., 1., 0.), - btVector3( 0., 0., 1.), - btVector3( -1., 0., 0.), - btVector3( 0., -1., 0.), - btVector3( 0., 0., -1.) - }; - - btVector3 _supporting[] = - { - btVector3( 0., 0., 0.), - btVector3( 0., 0., 0.), - btVector3( 0., 0., 0.), - btVector3( 0., 0., 0.), - btVector3( 0., 0., 0.), - btVector3( 0., 0., 0.) - }; - - batchedUnitVectorGetSupportingVertexWithoutMargin(_directions, _supporting, 6); - - for ( int i = 0; i < 3; ++i ) - { - m_localAabbMax[i] = _supporting[i][i] + m_collisionMargin; - m_localAabbMin[i] = _supporting[i + 3][i] - m_collisionMargin; - } - - #else - - for (int i=0;i<3;i++) - { - btVector3 vec(btScalar(0.),btScalar(0.),btScalar(0.)); - vec[i] = btScalar(1.); - btVector3 tmp = localGetSupportingVertex(vec); - m_localAabbMax[i] = tmp[i]+m_collisionMargin; - vec[i] = btScalar(-1.); - tmp = localGetSupportingVertex(vec); - m_localAabbMin[i] = tmp[i]-m_collisionMargin; - } - #endif -} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexInternalShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btConvexInternalShape.h deleted file mode 100644 index 12527731804..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btConvexInternalShape.h +++ /dev/null @@ -1,202 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BT_CONVEX_INTERNAL_SHAPE_H -#define BT_CONVEX_INTERNAL_SHAPE_H - -#include "btConvexShape.h" -#include "LinearMath/btAabbUtil2.h" - - -///The btConvexInternalShape is an internal base class, shared by most convex shape implementations. -class btConvexInternalShape : public btConvexShape -{ - - protected: - - //local scaling. collisionMargin is not scaled ! - btVector3 m_localScaling; - - btVector3 m_implicitShapeDimensions; - - btScalar m_collisionMargin; - - btScalar m_padding; - - btConvexInternalShape(); - -public: - - - - virtual ~btConvexInternalShape() - { - - } - - virtual btVector3 localGetSupportingVertex(const btVector3& vec)const; - - const btVector3& getImplicitShapeDimensions() const - { - return m_implicitShapeDimensions; - } - - ///warning: use setImplicitShapeDimensions with care - ///changing a collision shape while the body is in the world is not recommended, - ///it is best to remove the body from the world, then make the change, and re-add it - ///alternatively flush the contact points, see documentation for 'cleanProxyFromPairs' - void setImplicitShapeDimensions(const btVector3& dimensions) - { - m_implicitShapeDimensions = dimensions; - } - - ///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version - void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const - { - getAabbSlow(t,aabbMin,aabbMax); - } - - - - virtual void getAabbSlow(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; - - - virtual void setLocalScaling(const btVector3& scaling); - virtual const btVector3& getLocalScaling() const - { - return m_localScaling; - } - - const btVector3& getLocalScalingNV() const - { - return m_localScaling; - } - - virtual void setMargin(btScalar margin) - { - m_collisionMargin = margin; - } - virtual btScalar getMargin() const - { - return m_collisionMargin; - } - - btScalar getMarginNV() const - { - return m_collisionMargin; - } - - virtual int getNumPreferredPenetrationDirections() const - { - return 0; - } - - virtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const - { - (void)penetrationVector; - (void)index; - btAssert(0); - } - - virtual int calculateSerializeBufferSize() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; - - -}; - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btConvexInternalShapeData -{ - btCollisionShapeData m_collisionShapeData; - - btVector3FloatData m_localScaling; - - btVector3FloatData m_implicitShapeDimensions; - - float m_collisionMargin; - - int m_padding; - -}; - - - -SIMD_FORCE_INLINE int btConvexInternalShape::calculateSerializeBufferSize() const -{ - return sizeof(btConvexInternalShapeData); -} - -///fills the dataBuffer and returns the struct name (and 0 on failure) -SIMD_FORCE_INLINE const char* btConvexInternalShape::serialize(void* dataBuffer, btSerializer* serializer) const -{ - btConvexInternalShapeData* shapeData = (btConvexInternalShapeData*) dataBuffer; - btCollisionShape::serialize(&shapeData->m_collisionShapeData, serializer); - - m_implicitShapeDimensions.serializeFloat(shapeData->m_implicitShapeDimensions); - m_localScaling.serializeFloat(shapeData->m_localScaling); - shapeData->m_collisionMargin = float(m_collisionMargin); - - return "btConvexInternalShapeData"; -} - - - - -///btConvexInternalAabbCachingShape adds local aabb caching for convex shapes, to avoid expensive bounding box calculations -class btConvexInternalAabbCachingShape : public btConvexInternalShape -{ - btVector3 m_localAabbMin; - btVector3 m_localAabbMax; - bool m_isLocalAabbValid; - -protected: - - btConvexInternalAabbCachingShape(); - - void setCachedLocalAabb (const btVector3& aabbMin, const btVector3& aabbMax) - { - m_isLocalAabbValid = true; - m_localAabbMin = aabbMin; - m_localAabbMax = aabbMax; - } - - inline void getCachedLocalAabb (btVector3& aabbMin, btVector3& aabbMax) const - { - btAssert(m_isLocalAabbValid); - aabbMin = m_localAabbMin; - aabbMax = m_localAabbMax; - } - - inline void getNonvirtualAabb(const btTransform& trans,btVector3& aabbMin,btVector3& aabbMax, btScalar margin) const - { - - //lazy evaluation of local aabb - btAssert(m_isLocalAabbValid); - btTransformAabb(m_localAabbMin,m_localAabbMax,margin,trans,aabbMin,aabbMax); - } - -public: - - virtual void setLocalScaling(const btVector3& scaling); - - virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; - - void recalcLocalAabb(); - -}; - -#endif //BT_CONVEX_INTERNAL_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp deleted file mode 100644 index c1b155aef45..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp +++ /dev/null @@ -1,157 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btConvexPointCloudShape.h" -#include "BulletCollision/CollisionShapes/btCollisionMargin.h" - -#include "LinearMath/btQuaternion.h" - -void btConvexPointCloudShape::setLocalScaling(const btVector3& scaling) -{ - m_localScaling = scaling; - recalcLocalAabb(); -} - -#ifndef __SPU__ -btVector3 btConvexPointCloudShape::localGetSupportingVertexWithoutMargin(const btVector3& vec0)const -{ - btVector3 supVec(btScalar(0.),btScalar(0.),btScalar(0.)); - btScalar newDot,maxDot = btScalar(-BT_LARGE_FLOAT); - - btVector3 vec = vec0; - btScalar lenSqr = vec.length2(); - if (lenSqr < btScalar(0.0001)) - { - vec.setValue(1,0,0); - } else - { - btScalar rlen = btScalar(1.) / btSqrt(lenSqr ); - vec *= rlen; - } - - - for (int i=0;i maxDot) - { - maxDot = newDot; - supVec = vtx; - } - } - return supVec; -} - -void btConvexPointCloudShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const -{ - btScalar newDot; - //use 'w' component of supportVerticesOut? - { - for (int i=0;i supportVerticesOut[j][3]) - { - //WARNING: don't swap next lines, the w component would get overwritten! - supportVerticesOut[j] = vtx; - supportVerticesOut[j][3] = newDot; - } - } - } - - - -} - - - -btVector3 btConvexPointCloudShape::localGetSupportingVertex(const btVector3& vec)const -{ - btVector3 supVertex = localGetSupportingVertexWithoutMargin(vec); - - if ( getMargin()!=btScalar(0.) ) - { - btVector3 vecnorm = vec; - if (vecnorm .length2() < (SIMD_EPSILON*SIMD_EPSILON)) - { - vecnorm.setValue(btScalar(-1.),btScalar(-1.),btScalar(-1.)); - } - vecnorm.normalize(); - supVertex+= getMargin() * vecnorm; - } - return supVertex; -} - - -#endif - - - - - - -//currently just for debugging (drawing), perhaps future support for algebraic continuous collision detection -//Please note that you can debug-draw btConvexHullShape with the Raytracer Demo -int btConvexPointCloudShape::getNumVertices() const -{ - return m_numPoints; -} - -int btConvexPointCloudShape::getNumEdges() const -{ - return 0; -} - -void btConvexPointCloudShape::getEdge(int i,btVector3& pa,btVector3& pb) const -{ - btAssert (0); -} - -void btConvexPointCloudShape::getVertex(int i,btVector3& vtx) const -{ - vtx = m_unscaledPoints[i]*m_localScaling; -} - -int btConvexPointCloudShape::getNumPlanes() const -{ - return 0; -} - -void btConvexPointCloudShape::getPlane(btVector3& ,btVector3& ,int ) const -{ - - btAssert(0); -} - -//not yet -bool btConvexPointCloudShape::isInside(const btVector3& ,btScalar ) const -{ - btAssert(0); - return false; -} - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexPointCloudShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btConvexPointCloudShape.h deleted file mode 100644 index 54b5afac3ec..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btConvexPointCloudShape.h +++ /dev/null @@ -1,105 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BT_CONVEX_POINT_CLOUD_SHAPE_H -#define BT_CONVEX_POINT_CLOUD_SHAPE_H - -#include "btPolyhedralConvexShape.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types -#include "LinearMath/btAlignedObjectArray.h" - -///The btConvexPointCloudShape implements an implicit convex hull of an array of vertices. -ATTRIBUTE_ALIGNED16(class) btConvexPointCloudShape : public btPolyhedralConvexAabbCachingShape -{ - btVector3* m_unscaledPoints; - int m_numPoints; - -public: - BT_DECLARE_ALIGNED_ALLOCATOR(); - - btConvexPointCloudShape() - { - m_localScaling.setValue(1.f,1.f,1.f); - m_shapeType = CONVEX_POINT_CLOUD_SHAPE_PROXYTYPE; - m_unscaledPoints = 0; - m_numPoints = 0; - } - - btConvexPointCloudShape(btVector3* points,int numPoints, const btVector3& localScaling,bool computeAabb = true) - { - m_localScaling = localScaling; - m_shapeType = CONVEX_POINT_CLOUD_SHAPE_PROXYTYPE; - m_unscaledPoints = points; - m_numPoints = numPoints; - - if (computeAabb) - recalcLocalAabb(); - } - - void setPoints (btVector3* points, int numPoints, bool computeAabb = true,const btVector3& localScaling=btVector3(1.f,1.f,1.f)) - { - m_unscaledPoints = points; - m_numPoints = numPoints; - m_localScaling = localScaling; - - if (computeAabb) - recalcLocalAabb(); - } - - SIMD_FORCE_INLINE btVector3* getUnscaledPoints() - { - return m_unscaledPoints; - } - - SIMD_FORCE_INLINE const btVector3* getUnscaledPoints() const - { - return m_unscaledPoints; - } - - SIMD_FORCE_INLINE int getNumPoints() const - { - return m_numPoints; - } - - SIMD_FORCE_INLINE btVector3 getScaledPoint( int index) const - { - return m_unscaledPoints[index] * m_localScaling; - } - -#ifndef __SPU__ - virtual btVector3 localGetSupportingVertex(const btVector3& vec)const; - virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const; - virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const; -#endif - - - //debugging - virtual const char* getName()const {return "ConvexPointCloud";} - - virtual int getNumVertices() const; - virtual int getNumEdges() const; - virtual void getEdge(int i,btVector3& pa,btVector3& pb) const; - virtual void getVertex(int i,btVector3& vtx) const; - virtual int getNumPlanes() const; - virtual void getPlane(btVector3& planeNormal,btVector3& planeSupport,int i ) const; - virtual bool isInside(const btVector3& pt,btScalar tolerance) const; - - ///in case we receive negative scaling - virtual void setLocalScaling(const btVector3& scaling); -}; - - -#endif //BT_CONVEX_POINT_CLOUD_SHAPE_H - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btConvexShape.cpp deleted file mode 100644 index f5f3aa58aa4..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btConvexShape.cpp +++ /dev/null @@ -1,429 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btConvexShape.h" -#include "btTriangleShape.h" -#include "btSphereShape.h" -#include "btCylinderShape.h" -#include "btCapsuleShape.h" -#include "btConvexHullShape.h" -#include "btConvexPointCloudShape.h" - -///not supported on IBM SDK, until we fix the alignment of btVector3 -#if defined (__CELLOS_LV2__) && defined (__SPU__) -#include -static inline vec_float4 vec_dot3( vec_float4 vec0, vec_float4 vec1 ) -{ - vec_float4 result; - result = spu_mul( vec0, vec1 ); - result = spu_madd( spu_rlqwbyte( vec0, 4 ), spu_rlqwbyte( vec1, 4 ), result ); - return spu_madd( spu_rlqwbyte( vec0, 8 ), spu_rlqwbyte( vec1, 8 ), result ); -} -#endif //__SPU__ - -btConvexShape::btConvexShape () -{ -} - -btConvexShape::~btConvexShape() -{ - -} - - - -static btVector3 convexHullSupport (const btVector3& localDirOrg, const btVector3* points, int numPoints, const btVector3& localScaling) -{ - - btVector3 vec = localDirOrg * localScaling; - -#if defined (__CELLOS_LV2__) && defined (__SPU__) - - btVector3 localDir = vec; - - vec_float4 v_distMax = {-FLT_MAX,0,0,0}; - vec_int4 v_idxMax = {-999,0,0,0}; - int v=0; - int numverts = numPoints; - - for(;v<(int)numverts-4;v+=4) { - vec_float4 p0 = vec_dot3(points[v ].get128(),localDir.get128()); - vec_float4 p1 = vec_dot3(points[v+1].get128(),localDir.get128()); - vec_float4 p2 = vec_dot3(points[v+2].get128(),localDir.get128()); - vec_float4 p3 = vec_dot3(points[v+3].get128(),localDir.get128()); - const vec_int4 i0 = {v ,0,0,0}; - const vec_int4 i1 = {v+1,0,0,0}; - const vec_int4 i2 = {v+2,0,0,0}; - const vec_int4 i3 = {v+3,0,0,0}; - vec_uint4 retGt01 = spu_cmpgt(p0,p1); - vec_float4 pmax01 = spu_sel(p1,p0,retGt01); - vec_int4 imax01 = spu_sel(i1,i0,retGt01); - vec_uint4 retGt23 = spu_cmpgt(p2,p3); - vec_float4 pmax23 = spu_sel(p3,p2,retGt23); - vec_int4 imax23 = spu_sel(i3,i2,retGt23); - vec_uint4 retGt0123 = spu_cmpgt(pmax01,pmax23); - vec_float4 pmax0123 = spu_sel(pmax23,pmax01,retGt0123); - vec_int4 imax0123 = spu_sel(imax23,imax01,retGt0123); - vec_uint4 retGtMax = spu_cmpgt(v_distMax,pmax0123); - v_distMax = spu_sel(pmax0123,v_distMax,retGtMax); - v_idxMax = spu_sel(imax0123,v_idxMax,retGtMax); - } - for(;v<(int)numverts;v++) { - vec_float4 p = vec_dot3(points[v].get128(),localDir.get128()); - const vec_int4 i = {v,0,0,0}; - vec_uint4 retGtMax = spu_cmpgt(v_distMax,p); - v_distMax = spu_sel(p,v_distMax,retGtMax); - v_idxMax = spu_sel(i,v_idxMax,retGtMax); - } - int ptIndex = spu_extract(v_idxMax,0); - const btVector3& supVec= points[ptIndex] * localScaling; - return supVec; -#else - - btScalar newDot,maxDot = btScalar(-BT_LARGE_FLOAT); - int ptIndex = -1; - - for (int i=0;i maxDot) - { - maxDot = newDot; - ptIndex = i; - } - } - btAssert(ptIndex >= 0); - btVector3 supVec = points[ptIndex] * localScaling; - return supVec; -#endif //__SPU__ -} - -btVector3 btConvexShape::localGetSupportVertexWithoutMarginNonVirtual (const btVector3& localDir) const -{ - switch (m_shapeType) - { - case SPHERE_SHAPE_PROXYTYPE: - { - return btVector3(0,0,0); - } - case BOX_SHAPE_PROXYTYPE: - { - btBoxShape* convexShape = (btBoxShape*)this; - const btVector3& halfExtents = convexShape->getImplicitShapeDimensions(); - - return btVector3(btFsels(localDir.x(), halfExtents.x(), -halfExtents.x()), - btFsels(localDir.y(), halfExtents.y(), -halfExtents.y()), - btFsels(localDir.z(), halfExtents.z(), -halfExtents.z())); - } - case TRIANGLE_SHAPE_PROXYTYPE: - { - btTriangleShape* triangleShape = (btTriangleShape*)this; - btVector3 dir(localDir.getX(),localDir.getY(),localDir.getZ()); - btVector3* vertices = &triangleShape->m_vertices1[0]; - btVector3 dots(dir.dot(vertices[0]), dir.dot(vertices[1]), dir.dot(vertices[2])); - btVector3 sup = vertices[dots.maxAxis()]; - return btVector3(sup.getX(),sup.getY(),sup.getZ()); - } - case CYLINDER_SHAPE_PROXYTYPE: - { - btCylinderShape* cylShape = (btCylinderShape*)this; - //mapping of halfextents/dimension onto radius/height depends on how cylinder local orientation is (upAxis) - - btVector3 halfExtents = cylShape->getImplicitShapeDimensions(); - btVector3 v(localDir.getX(),localDir.getY(),localDir.getZ()); - int cylinderUpAxis = cylShape->getUpAxis(); - int XX(1),YY(0),ZZ(2); - - switch (cylinderUpAxis) - { - case 0: - { - XX = 1; - YY = 0; - ZZ = 2; - } - break; - case 1: - { - XX = 0; - YY = 1; - ZZ = 2; - } - break; - case 2: - { - XX = 0; - YY = 2; - ZZ = 1; - - } - break; - default: - btAssert(0); - break; - }; - - btScalar radius = halfExtents[XX]; - btScalar halfHeight = halfExtents[cylinderUpAxis]; - - btVector3 tmp; - btScalar d ; - - btScalar s = btSqrt(v[XX] * v[XX] + v[ZZ] * v[ZZ]); - if (s != btScalar(0.0)) - { - d = radius / s; - tmp[XX] = v[XX] * d; - tmp[YY] = v[YY] < 0.0 ? -halfHeight : halfHeight; - tmp[ZZ] = v[ZZ] * d; - return btVector3(tmp.getX(),tmp.getY(),tmp.getZ()); - } else { - tmp[XX] = radius; - tmp[YY] = v[YY] < 0.0 ? -halfHeight : halfHeight; - tmp[ZZ] = btScalar(0.0); - return btVector3(tmp.getX(),tmp.getY(),tmp.getZ()); - } - } - case CAPSULE_SHAPE_PROXYTYPE: - { - btVector3 vec0(localDir.getX(),localDir.getY(),localDir.getZ()); - - btCapsuleShape* capsuleShape = (btCapsuleShape*)this; - btScalar halfHeight = capsuleShape->getHalfHeight(); - int capsuleUpAxis = capsuleShape->getUpAxis(); - - btScalar radius = capsuleShape->getRadius(); - btVector3 supVec(0,0,0); - - btScalar maxDot(btScalar(-BT_LARGE_FLOAT)); - - btVector3 vec = vec0; - btScalar lenSqr = vec.length2(); - if (lenSqr < btScalar(0.0001)) - { - vec.setValue(1,0,0); - } else - { - btScalar rlen = btScalar(1.) / btSqrt(lenSqr ); - vec *= rlen; - } - btVector3 vtx; - btScalar newDot; - { - btVector3 pos(0,0,0); - pos[capsuleUpAxis] = halfHeight; - - //vtx = pos +vec*(radius); - vtx = pos +vec*capsuleShape->getLocalScalingNV()*(radius) - vec * capsuleShape->getMarginNV(); - newDot = vec.dot(vtx); - - - if (newDot > maxDot) - { - maxDot = newDot; - supVec = vtx; - } - } - { - btVector3 pos(0,0,0); - pos[capsuleUpAxis] = -halfHeight; - - //vtx = pos +vec*(radius); - vtx = pos +vec*capsuleShape->getLocalScalingNV()*(radius) - vec * capsuleShape->getMarginNV(); - newDot = vec.dot(vtx); - if (newDot > maxDot) - { - maxDot = newDot; - supVec = vtx; - } - } - return btVector3(supVec.getX(),supVec.getY(),supVec.getZ()); - } - case CONVEX_POINT_CLOUD_SHAPE_PROXYTYPE: - { - btConvexPointCloudShape* convexPointCloudShape = (btConvexPointCloudShape*)this; - btVector3* points = convexPointCloudShape->getUnscaledPoints (); - int numPoints = convexPointCloudShape->getNumPoints (); - return convexHullSupport (localDir, points, numPoints,convexPointCloudShape->getLocalScalingNV()); - } - case CONVEX_HULL_SHAPE_PROXYTYPE: - { - btConvexHullShape* convexHullShape = (btConvexHullShape*)this; - btVector3* points = convexHullShape->getUnscaledPoints(); - int numPoints = convexHullShape->getNumPoints (); - return convexHullSupport (localDir, points, numPoints,convexHullShape->getLocalScalingNV()); - } - default: -#ifndef __SPU__ - return this->localGetSupportingVertexWithoutMargin (localDir); -#else - btAssert (0); -#endif - } - - // should never reach here - btAssert (0); - return btVector3 (btScalar(0.0f), btScalar(0.0f), btScalar(0.0f)); -} - -btVector3 btConvexShape::localGetSupportVertexNonVirtual (const btVector3& localDir) const -{ - btVector3 localDirNorm = localDir; - if (localDirNorm .length2() < (SIMD_EPSILON*SIMD_EPSILON)) - { - localDirNorm.setValue(btScalar(-1.),btScalar(-1.),btScalar(-1.)); - } - localDirNorm.normalize (); - - return localGetSupportVertexWithoutMarginNonVirtual(localDirNorm)+ getMarginNonVirtual() * localDirNorm; -} - -/* TODO: This should be bumped up to btCollisionShape () */ -btScalar btConvexShape::getMarginNonVirtual () const -{ - switch (m_shapeType) - { - case SPHERE_SHAPE_PROXYTYPE: - { - btSphereShape* sphereShape = (btSphereShape*)this; - return sphereShape->getRadius (); - } - case BOX_SHAPE_PROXYTYPE: - { - btBoxShape* convexShape = (btBoxShape*)this; - return convexShape->getMarginNV (); - } - case TRIANGLE_SHAPE_PROXYTYPE: - { - btTriangleShape* triangleShape = (btTriangleShape*)this; - return triangleShape->getMarginNV (); - } - case CYLINDER_SHAPE_PROXYTYPE: - { - btCylinderShape* cylShape = (btCylinderShape*)this; - return cylShape->getMarginNV(); - } - case CAPSULE_SHAPE_PROXYTYPE: - { - btCapsuleShape* capsuleShape = (btCapsuleShape*)this; - return capsuleShape->getMarginNV(); - } - case CONVEX_POINT_CLOUD_SHAPE_PROXYTYPE: - /* fall through */ - case CONVEX_HULL_SHAPE_PROXYTYPE: - { - btPolyhedralConvexShape* convexHullShape = (btPolyhedralConvexShape*)this; - return convexHullShape->getMarginNV(); - } - default: -#ifndef __SPU__ - return this->getMargin (); -#else - btAssert (0); -#endif - } - - // should never reach here - btAssert (0); - return btScalar(0.0f); -} -#ifndef __SPU__ -void btConvexShape::getAabbNonVirtual (const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const -{ - switch (m_shapeType) - { - case SPHERE_SHAPE_PROXYTYPE: - { - btSphereShape* sphereShape = (btSphereShape*)this; - btScalar radius = sphereShape->getImplicitShapeDimensions().getX();// * convexShape->getLocalScaling().getX(); - btScalar margin = radius + sphereShape->getMarginNonVirtual(); - const btVector3& center = t.getOrigin(); - btVector3 extent(margin,margin,margin); - aabbMin = center - extent; - aabbMax = center + extent; - } - break; - case CYLINDER_SHAPE_PROXYTYPE: - /* fall through */ - case BOX_SHAPE_PROXYTYPE: - { - btBoxShape* convexShape = (btBoxShape*)this; - btScalar margin=convexShape->getMarginNonVirtual(); - btVector3 halfExtents = convexShape->getImplicitShapeDimensions(); - halfExtents += btVector3(margin,margin,margin); - btMatrix3x3 abs_b = t.getBasis().absolute(); - btVector3 center = t.getOrigin(); - btVector3 extent = btVector3(abs_b[0].dot(halfExtents),abs_b[1].dot(halfExtents),abs_b[2].dot(halfExtents)); - - aabbMin = center - extent; - aabbMax = center + extent; - break; - } - case TRIANGLE_SHAPE_PROXYTYPE: - { - btTriangleShape* triangleShape = (btTriangleShape*)this; - btScalar margin = triangleShape->getMarginNonVirtual(); - for (int i=0;i<3;i++) - { - btVector3 vec(btScalar(0.),btScalar(0.),btScalar(0.)); - vec[i] = btScalar(1.); - - btVector3 sv = localGetSupportVertexWithoutMarginNonVirtual(vec*t.getBasis()); - - btVector3 tmp = t(sv); - aabbMax[i] = tmp[i]+margin; - vec[i] = btScalar(-1.); - tmp = t(localGetSupportVertexWithoutMarginNonVirtual(vec*t.getBasis())); - aabbMin[i] = tmp[i]-margin; - } - } - break; - case CAPSULE_SHAPE_PROXYTYPE: - { - btCapsuleShape* capsuleShape = (btCapsuleShape*)this; - btVector3 halfExtents(capsuleShape->getRadius(),capsuleShape->getRadius(),capsuleShape->getRadius()); - int m_upAxis = capsuleShape->getUpAxis(); - halfExtents[m_upAxis] = capsuleShape->getRadius() + capsuleShape->getHalfHeight(); - halfExtents += btVector3(capsuleShape->getMarginNonVirtual(),capsuleShape->getMarginNonVirtual(),capsuleShape->getMarginNonVirtual()); - btMatrix3x3 abs_b = t.getBasis().absolute(); - btVector3 center = t.getOrigin(); - btVector3 extent = btVector3(abs_b[0].dot(halfExtents),abs_b[1].dot(halfExtents),abs_b[2].dot(halfExtents)); - aabbMin = center - extent; - aabbMax = center + extent; - } - break; - case CONVEX_POINT_CLOUD_SHAPE_PROXYTYPE: - case CONVEX_HULL_SHAPE_PROXYTYPE: - { - btPolyhedralConvexAabbCachingShape* convexHullShape = (btPolyhedralConvexAabbCachingShape*)this; - btScalar margin = convexHullShape->getMarginNonVirtual(); - convexHullShape->getNonvirtualAabb (t, aabbMin, aabbMax, margin); - } - break; - default: -#ifndef __SPU__ - this->getAabb (t, aabbMin, aabbMax); -#else - btAssert (0); -#endif - break; - } - - // should never reach here - btAssert (0); -} - -#endif //__SPU__ diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btConvexShape.h deleted file mode 100644 index 9c158259c1c..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btConvexShape.h +++ /dev/null @@ -1,82 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef CONVEX_SHAPE_INTERFACE1 -#define CONVEX_SHAPE_INTERFACE1 - -#include "btCollisionShape.h" - -#include "LinearMath/btVector3.h" -#include "LinearMath/btTransform.h" -#include "LinearMath/btMatrix3x3.h" -#include "btCollisionMargin.h" -#include "LinearMath/btAlignedAllocator.h" - -#define MAX_PREFERRED_PENETRATION_DIRECTIONS 10 - -/// The btConvexShape is an abstract shape interface, implemented by all convex shapes such as btBoxShape, btConvexHullShape etc. -/// It describes general convex shapes using the localGetSupportingVertex interface, used by collision detectors such as btGjkPairDetector. -ATTRIBUTE_ALIGNED16(class) btConvexShape : public btCollisionShape -{ - - -public: - - BT_DECLARE_ALIGNED_ALLOCATOR(); - - btConvexShape (); - - virtual ~btConvexShape(); - - virtual btVector3 localGetSupportingVertex(const btVector3& vec)const = 0; - - //////// - #ifndef __SPU__ - virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const=0; - #endif //#ifndef __SPU__ - - btVector3 localGetSupportVertexWithoutMarginNonVirtual (const btVector3& vec) const; - btVector3 localGetSupportVertexNonVirtual (const btVector3& vec) const; - btScalar getMarginNonVirtual () const; - void getAabbNonVirtual (const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const; - - - //notice that the vectors should be unit length - virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const= 0; - - ///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version - void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const =0; - - virtual void getAabbSlow(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const =0; - - virtual void setLocalScaling(const btVector3& scaling) =0; - virtual const btVector3& getLocalScaling() const =0; - - virtual void setMargin(btScalar margin)=0; - - virtual btScalar getMargin() const=0; - - virtual int getNumPreferredPenetrationDirections() const=0; - - virtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const=0; - - - - -}; - - - -#endif //CONVEX_SHAPE_INTERFACE1 diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp deleted file mode 100644 index 0f9ced554b8..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp +++ /dev/null @@ -1,315 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btConvexTriangleMeshShape.h" -#include "BulletCollision/CollisionShapes/btCollisionMargin.h" - -#include "LinearMath/btQuaternion.h" -#include "BulletCollision/CollisionShapes/btStridingMeshInterface.h" - - -btConvexTriangleMeshShape ::btConvexTriangleMeshShape (btStridingMeshInterface* meshInterface, bool calcAabb) -: btPolyhedralConvexAabbCachingShape(), m_stridingMesh(meshInterface) -{ - m_shapeType = CONVEX_TRIANGLEMESH_SHAPE_PROXYTYPE; - if ( calcAabb ) - recalcLocalAabb(); -} - - - - -///It's not nice to have all this virtual function overhead, so perhaps we can also gather the points once -///but then we are duplicating -class LocalSupportVertexCallback: public btInternalTriangleIndexCallback -{ - - btVector3 m_supportVertexLocal; -public: - - btScalar m_maxDot; - btVector3 m_supportVecLocal; - - LocalSupportVertexCallback(const btVector3& supportVecLocal) - : m_supportVertexLocal(btScalar(0.),btScalar(0.),btScalar(0.)), - m_maxDot(btScalar(-BT_LARGE_FLOAT)), - m_supportVecLocal(supportVecLocal) - { - } - - virtual void internalProcessTriangleIndex(btVector3* triangle,int partId,int triangleIndex) - { - (void)triangleIndex; - (void)partId; - - for (int i=0;i<3;i++) - { - btScalar dot = m_supportVecLocal.dot(triangle[i]); - if (dot > m_maxDot) - { - m_maxDot = dot; - m_supportVertexLocal = triangle[i]; - } - } - } - - btVector3 GetSupportVertexLocal() - { - return m_supportVertexLocal; - } - -}; - - - - - -btVector3 btConvexTriangleMeshShape::localGetSupportingVertexWithoutMargin(const btVector3& vec0)const -{ - btVector3 supVec(btScalar(0.),btScalar(0.),btScalar(0.)); - - btVector3 vec = vec0; - btScalar lenSqr = vec.length2(); - if (lenSqr < btScalar(0.0001)) - { - vec.setValue(1,0,0); - } else - { - btScalar rlen = btScalar(1.) / btSqrt(lenSqr ); - vec *= rlen; - } - - LocalSupportVertexCallback supportCallback(vec); - btVector3 aabbMax(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); - m_stridingMesh->InternalProcessAllTriangles(&supportCallback,-aabbMax,aabbMax); - supVec = supportCallback.GetSupportVertexLocal(); - - return supVec; -} - -void btConvexTriangleMeshShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const -{ - //use 'w' component of supportVerticesOut? - { - for (int i=0;iInternalProcessAllTriangles(&supportCallback,-aabbMax,aabbMax); - supportVerticesOut[j] = supportCallback.GetSupportVertexLocal(); - } - -} - - - -btVector3 btConvexTriangleMeshShape::localGetSupportingVertex(const btVector3& vec)const -{ - btVector3 supVertex = localGetSupportingVertexWithoutMargin(vec); - - if ( getMargin()!=btScalar(0.) ) - { - btVector3 vecnorm = vec; - if (vecnorm .length2() < (SIMD_EPSILON*SIMD_EPSILON)) - { - vecnorm.setValue(btScalar(-1.),btScalar(-1.),btScalar(-1.)); - } - vecnorm.normalize(); - supVertex+= getMargin() * vecnorm; - } - return supVertex; -} - - - - - - - - - -//currently just for debugging (drawing), perhaps future support for algebraic continuous collision detection -//Please note that you can debug-draw btConvexTriangleMeshShape with the Raytracer Demo -int btConvexTriangleMeshShape::getNumVertices() const -{ - //cache this? - return 0; - -} - -int btConvexTriangleMeshShape::getNumEdges() const -{ - return 0; -} - -void btConvexTriangleMeshShape::getEdge(int ,btVector3& ,btVector3& ) const -{ - btAssert(0); -} - -void btConvexTriangleMeshShape::getVertex(int ,btVector3& ) const -{ - btAssert(0); -} - -int btConvexTriangleMeshShape::getNumPlanes() const -{ - return 0; -} - -void btConvexTriangleMeshShape::getPlane(btVector3& ,btVector3& ,int ) const -{ - btAssert(0); -} - -//not yet -bool btConvexTriangleMeshShape::isInside(const btVector3& ,btScalar ) const -{ - btAssert(0); - return false; -} - - - -void btConvexTriangleMeshShape::setLocalScaling(const btVector3& scaling) -{ - m_stridingMesh->setScaling(scaling); - - recalcLocalAabb(); - -} - - -const btVector3& btConvexTriangleMeshShape::getLocalScaling() const -{ - return m_stridingMesh->getScaling(); -} - -void btConvexTriangleMeshShape::calculatePrincipalAxisTransform(btTransform& principal, btVector3& inertia, btScalar& volume) const -{ - class CenterCallback: public btInternalTriangleIndexCallback - { - bool first; - btVector3 ref; - btVector3 sum; - btScalar volume; - - public: - - CenterCallback() : first(true), ref(0, 0, 0), sum(0, 0, 0), volume(0) - { - } - - virtual void internalProcessTriangleIndex(btVector3* triangle, int partId, int triangleIndex) - { - (void) triangleIndex; - (void) partId; - if (first) - { - ref = triangle[0]; - first = false; - } - else - { - btScalar vol = btFabs((triangle[0] - ref).triple(triangle[1] - ref, triangle[2] - ref)); - sum += (btScalar(0.25) * vol) * ((triangle[0] + triangle[1] + triangle[2] + ref)); - volume += vol; - } - } - - btVector3 getCenter() - { - return (volume > 0) ? sum / volume : ref; - } - - btScalar getVolume() - { - return volume * btScalar(1. / 6); - } - - }; - - class InertiaCallback: public btInternalTriangleIndexCallback - { - btMatrix3x3 sum; - btVector3 center; - - public: - - InertiaCallback(btVector3& center) : sum(0, 0, 0, 0, 0, 0, 0, 0, 0), center(center) - { - } - - virtual void internalProcessTriangleIndex(btVector3* triangle, int partId, int triangleIndex) - { - (void) triangleIndex; - (void) partId; - btMatrix3x3 i; - btVector3 a = triangle[0] - center; - btVector3 b = triangle[1] - center; - btVector3 c = triangle[2] - center; - btScalar volNeg = -btFabs(a.triple(b, c)) * btScalar(1. / 6); - for (int j = 0; j < 3; j++) - { - for (int k = 0; k <= j; k++) - { - i[j][k] = i[k][j] = volNeg * (btScalar(0.1) * (a[j] * a[k] + b[j] * b[k] + c[j] * c[k]) - + btScalar(0.05) * (a[j] * b[k] + a[k] * b[j] + a[j] * c[k] + a[k] * c[j] + b[j] * c[k] + b[k] * c[j])); - } - } - btScalar i00 = -i[0][0]; - btScalar i11 = -i[1][1]; - btScalar i22 = -i[2][2]; - i[0][0] = i11 + i22; - i[1][1] = i22 + i00; - i[2][2] = i00 + i11; - sum[0] += i[0]; - sum[1] += i[1]; - sum[2] += i[2]; - } - - btMatrix3x3& getInertia() - { - return sum; - } - - }; - - CenterCallback centerCallback; - btVector3 aabbMax(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); - m_stridingMesh->InternalProcessAllTriangles(¢erCallback, -aabbMax, aabbMax); - btVector3 center = centerCallback.getCenter(); - principal.setOrigin(center); - volume = centerCallback.getVolume(); - - InertiaCallback inertiaCallback(center); - m_stridingMesh->InternalProcessAllTriangles(&inertiaCallback, -aabbMax, aabbMax); - - btMatrix3x3& i = inertiaCallback.getInertia(); - i.diagonalize(principal.getBasis(), btScalar(0.00001), 20); - inertia.setValue(i[0][0], i[1][1], i[2][2]); - inertia /= volume; -} - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h deleted file mode 100644 index f5167e74b80..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h +++ /dev/null @@ -1,75 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ -#ifndef CONVEX_TRIANGLEMESH_SHAPE_H -#define CONVEX_TRIANGLEMESH_SHAPE_H - - -#include "btPolyhedralConvexShape.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types - - -/// The btConvexTriangleMeshShape is a convex hull of a triangle mesh, but the performance is not as good as btConvexHullShape. -/// A small benefit of this class is that it uses the btStridingMeshInterface, so you can avoid the duplication of the triangle mesh data. Nevertheless, most users should use the much better performing btConvexHullShape instead. -class btConvexTriangleMeshShape : public btPolyhedralConvexAabbCachingShape -{ - - class btStridingMeshInterface* m_stridingMesh; - -public: - btConvexTriangleMeshShape(btStridingMeshInterface* meshInterface, bool calcAabb = true); - - class btStridingMeshInterface* getMeshInterface() - { - return m_stridingMesh; - } - const class btStridingMeshInterface* getMeshInterface() const - { - return m_stridingMesh; - } - - virtual btVector3 localGetSupportingVertex(const btVector3& vec)const; - virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const; - virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const; - - //debugging - virtual const char* getName()const {return "ConvexTrimesh";} - - virtual int getNumVertices() const; - virtual int getNumEdges() const; - virtual void getEdge(int i,btVector3& pa,btVector3& pb) const; - virtual void getVertex(int i,btVector3& vtx) const; - virtual int getNumPlanes() const; - virtual void getPlane(btVector3& planeNormal,btVector3& planeSupport,int i ) const; - virtual bool isInside(const btVector3& pt,btScalar tolerance) const; - - - virtual void setLocalScaling(const btVector3& scaling); - virtual const btVector3& getLocalScaling() const; - - ///computes the exact moment of inertia and the transform from the coordinate system defined by the principal axes of the moment of inertia - ///and the center of mass to the current coordinate system. A mass of 1 is assumed, for other masses just multiply the computed "inertia" - ///by the mass. The resulting transform "principal" has to be applied inversely to the mesh in order for the local coordinate system of the - ///shape to be centered at the center of mass and to coincide with the principal axes. This also necessitates a correction of the world transform - ///of the collision object by the principal transform. This method also computes the volume of the convex mesh. - void calculatePrincipalAxisTransform(btTransform& principal, btVector3& inertia, btScalar& volume) const; - -}; - - - -#endif //CONVEX_TRIANGLEMESH_SHAPE_H - - - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btCylinderShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btCylinderShape.cpp deleted file mode 100644 index 26880930479..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btCylinderShape.cpp +++ /dev/null @@ -1,222 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btCylinderShape.h" - -btCylinderShape::btCylinderShape (const btVector3& halfExtents) -:btConvexInternalShape(), -m_upAxis(1) -{ - btVector3 margin(getMargin(),getMargin(),getMargin()); - m_implicitShapeDimensions = (halfExtents * m_localScaling) - margin; - m_shapeType = CYLINDER_SHAPE_PROXYTYPE; -} - - -btCylinderShapeX::btCylinderShapeX (const btVector3& halfExtents) -:btCylinderShape(halfExtents) -{ - m_upAxis = 0; - -} - - -btCylinderShapeZ::btCylinderShapeZ (const btVector3& halfExtents) -:btCylinderShape(halfExtents) -{ - m_upAxis = 2; - -} - -void btCylinderShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const -{ - btTransformAabb(getHalfExtentsWithoutMargin(),getMargin(),t,aabbMin,aabbMax); -} - -void btCylinderShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const -{ - //approximation of box shape, todo: implement cylinder shape inertia before people notice ;-) - btVector3 halfExtents = getHalfExtentsWithMargin(); - - btScalar lx=btScalar(2.)*(halfExtents.x()); - btScalar ly=btScalar(2.)*(halfExtents.y()); - btScalar lz=btScalar(2.)*(halfExtents.z()); - - inertia.setValue(mass/(btScalar(12.0)) * (ly*ly + lz*lz), - mass/(btScalar(12.0)) * (lx*lx + lz*lz), - mass/(btScalar(12.0)) * (lx*lx + ly*ly)); - -} - - -SIMD_FORCE_INLINE btVector3 CylinderLocalSupportX(const btVector3& halfExtents,const btVector3& v) -{ -const int cylinderUpAxis = 0; -const int XX = 1; -const int YY = 0; -const int ZZ = 2; - - //mapping depends on how cylinder local orientation is - // extents of the cylinder is: X,Y is for radius, and Z for height - - - btScalar radius = halfExtents[XX]; - btScalar halfHeight = halfExtents[cylinderUpAxis]; - - - btVector3 tmp; - btScalar d ; - - btScalar s = btSqrt(v[XX] * v[XX] + v[ZZ] * v[ZZ]); - if (s != btScalar(0.0)) - { - d = radius / s; - tmp[XX] = v[XX] * d; - tmp[YY] = v[YY] < 0.0 ? -halfHeight : halfHeight; - tmp[ZZ] = v[ZZ] * d; - return tmp; - } - else - { - tmp[XX] = radius; - tmp[YY] = v[YY] < 0.0 ? -halfHeight : halfHeight; - tmp[ZZ] = btScalar(0.0); - return tmp; - } - - -} - - - - - - -inline btVector3 CylinderLocalSupportY(const btVector3& halfExtents,const btVector3& v) -{ - -const int cylinderUpAxis = 1; -const int XX = 0; -const int YY = 1; -const int ZZ = 2; - - - btScalar radius = halfExtents[XX]; - btScalar halfHeight = halfExtents[cylinderUpAxis]; - - - btVector3 tmp; - btScalar d ; - - btScalar s = btSqrt(v[XX] * v[XX] + v[ZZ] * v[ZZ]); - if (s != btScalar(0.0)) - { - d = radius / s; - tmp[XX] = v[XX] * d; - tmp[YY] = v[YY] < 0.0 ? -halfHeight : halfHeight; - tmp[ZZ] = v[ZZ] * d; - return tmp; - } - else - { - tmp[XX] = radius; - tmp[YY] = v[YY] < 0.0 ? -halfHeight : halfHeight; - tmp[ZZ] = btScalar(0.0); - return tmp; - } - -} - -inline btVector3 CylinderLocalSupportZ(const btVector3& halfExtents,const btVector3& v) -{ -const int cylinderUpAxis = 2; -const int XX = 0; -const int YY = 2; -const int ZZ = 1; - - //mapping depends on how cylinder local orientation is - // extents of the cylinder is: X,Y is for radius, and Z for height - - - btScalar radius = halfExtents[XX]; - btScalar halfHeight = halfExtents[cylinderUpAxis]; - - - btVector3 tmp; - btScalar d ; - - btScalar s = btSqrt(v[XX] * v[XX] + v[ZZ] * v[ZZ]); - if (s != btScalar(0.0)) - { - d = radius / s; - tmp[XX] = v[XX] * d; - tmp[YY] = v[YY] < 0.0 ? -halfHeight : halfHeight; - tmp[ZZ] = v[ZZ] * d; - return tmp; - } - else - { - tmp[XX] = radius; - tmp[YY] = v[YY] < 0.0 ? -halfHeight : halfHeight; - tmp[ZZ] = btScalar(0.0); - return tmp; - } - - -} - -btVector3 btCylinderShapeX::localGetSupportingVertexWithoutMargin(const btVector3& vec)const -{ - return CylinderLocalSupportX(getHalfExtentsWithoutMargin(),vec); -} - - -btVector3 btCylinderShapeZ::localGetSupportingVertexWithoutMargin(const btVector3& vec)const -{ - return CylinderLocalSupportZ(getHalfExtentsWithoutMargin(),vec); -} -btVector3 btCylinderShape::localGetSupportingVertexWithoutMargin(const btVector3& vec)const -{ - return CylinderLocalSupportY(getHalfExtentsWithoutMargin(),vec); -} - -void btCylinderShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const -{ - for (int i=0;im_convexInternalShapeData,serializer); - - shapeData->m_upAxis = m_upAxis; - - return "btCylinderShapeData"; -} - - - -#endif //CYLINDER_MINKOWSKI_H - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btEmptyShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btEmptyShape.cpp deleted file mode 100644 index a9e6df5c58e..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btEmptyShape.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btEmptyShape.h" - - -#include "btCollisionShape.h" - - -btEmptyShape::btEmptyShape() : btConcaveShape () -{ - m_shapeType = EMPTY_SHAPE_PROXYTYPE; -} - - -btEmptyShape::~btEmptyShape() -{ -} - - - ///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version -void btEmptyShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const -{ - btVector3 margin(getMargin(),getMargin(),getMargin()); - - aabbMin = t.getOrigin() - margin; - - aabbMax = t.getOrigin() + margin; - -} - -void btEmptyShape::calculateLocalInertia(btScalar ,btVector3& ) const -{ - btAssert(0); -} - - - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btEmptyShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btEmptyShape.h deleted file mode 100644 index 9f6b4435c29..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btEmptyShape.h +++ /dev/null @@ -1,70 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef EMPTY_SHAPE_H -#define EMPTY_SHAPE_H - -#include "btConcaveShape.h" - -#include "LinearMath/btVector3.h" -#include "LinearMath/btTransform.h" -#include "LinearMath/btMatrix3x3.h" -#include "btCollisionMargin.h" - - - - -/// The btEmptyShape is a collision shape without actual collision detection shape, so most users should ignore this class. -/// It can be replaced by another shape during runtime, but the inertia tensor should be recomputed. -class btEmptyShape : public btConcaveShape -{ -public: - btEmptyShape(); - - virtual ~btEmptyShape(); - - - ///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version - void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; - - - virtual void setLocalScaling(const btVector3& scaling) - { - m_localScaling = scaling; - } - virtual const btVector3& getLocalScaling() const - { - return m_localScaling; - } - - virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; - - virtual const char* getName()const - { - return "Empty"; - } - - virtual void processAllTriangles(btTriangleCallback* ,const btVector3& ,const btVector3& ) const - { - } - -protected: - btVector3 m_localScaling; - -}; - - - -#endif //EMPTY_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp deleted file mode 100644 index 3a1e6f4a2b9..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp +++ /dev/null @@ -1,411 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btHeightfieldTerrainShape.h" - -#include "LinearMath/btTransformUtil.h" - - - -btHeightfieldTerrainShape::btHeightfieldTerrainShape -( -int heightStickWidth, int heightStickLength, void* heightfieldData, -btScalar heightScale, btScalar minHeight, btScalar maxHeight,int upAxis, -PHY_ScalarType hdt, bool flipQuadEdges -) -{ - initialize(heightStickWidth, heightStickLength, heightfieldData, - heightScale, minHeight, maxHeight, upAxis, hdt, - flipQuadEdges); -} - - - -btHeightfieldTerrainShape::btHeightfieldTerrainShape(int heightStickWidth, int heightStickLength,void* heightfieldData,btScalar maxHeight,int upAxis,bool useFloatData,bool flipQuadEdges) -{ - // legacy constructor: support only float or unsigned char, - // and min height is zero - PHY_ScalarType hdt = (useFloatData) ? PHY_FLOAT : PHY_UCHAR; - btScalar minHeight = 0.0; - - // previously, height = uchar * maxHeight / 65535. - // So to preserve legacy behavior, heightScale = maxHeight / 65535 - btScalar heightScale = maxHeight / 65535; - - initialize(heightStickWidth, heightStickLength, heightfieldData, - heightScale, minHeight, maxHeight, upAxis, hdt, - flipQuadEdges); -} - - - -void btHeightfieldTerrainShape::initialize -( -int heightStickWidth, int heightStickLength, void* heightfieldData, -btScalar heightScale, btScalar minHeight, btScalar maxHeight, int upAxis, -PHY_ScalarType hdt, bool flipQuadEdges -) -{ - // validation - btAssert(heightStickWidth > 1 && "bad width"); - btAssert(heightStickLength > 1 && "bad length"); - btAssert(heightfieldData && "null heightfield data"); - // btAssert(heightScale) -- do we care? Trust caller here - btAssert(minHeight <= maxHeight && "bad min/max height"); - btAssert(upAxis >= 0 && upAxis < 3 && - "bad upAxis--should be in range [0,2]"); - btAssert(hdt != PHY_UCHAR || hdt != PHY_FLOAT || hdt != PHY_SHORT && - "Bad height data type enum"); - - // initialize member variables - m_shapeType = TERRAIN_SHAPE_PROXYTYPE; - m_heightStickWidth = heightStickWidth; - m_heightStickLength = heightStickLength; - m_minHeight = minHeight; - m_maxHeight = maxHeight; - m_width = (btScalar) (heightStickWidth - 1); - m_length = (btScalar) (heightStickLength - 1); - m_heightScale = heightScale; - m_heightfieldDataUnknown = heightfieldData; - m_heightDataType = hdt; - m_flipQuadEdges = flipQuadEdges; - m_useDiamondSubdivision = false; - m_upAxis = upAxis; - m_localScaling.setValue(btScalar(1.), btScalar(1.), btScalar(1.)); - - // determine min/max axis-aligned bounding box (aabb) values - switch (m_upAxis) - { - case 0: - { - m_localAabbMin.setValue(m_minHeight, 0, 0); - m_localAabbMax.setValue(m_maxHeight, m_width, m_length); - break; - } - case 1: - { - m_localAabbMin.setValue(0, m_minHeight, 0); - m_localAabbMax.setValue(m_width, m_maxHeight, m_length); - break; - }; - case 2: - { - m_localAabbMin.setValue(0, 0, m_minHeight); - m_localAabbMax.setValue(m_width, m_length, m_maxHeight); - break; - } - default: - { - //need to get valid m_upAxis - btAssert(0 && "Bad m_upAxis"); - } - } - - // remember origin (defined as exact middle of aabb) - m_localOrigin = btScalar(0.5) * (m_localAabbMin + m_localAabbMax); -} - - - -btHeightfieldTerrainShape::~btHeightfieldTerrainShape() -{ -} - - - -void btHeightfieldTerrainShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const -{ - btVector3 halfExtents = (m_localAabbMax-m_localAabbMin)* m_localScaling * btScalar(0.5); - - btVector3 localOrigin(0, 0, 0); - localOrigin[m_upAxis] = (m_minHeight + m_maxHeight) * btScalar(0.5); - localOrigin *= m_localScaling; - - btMatrix3x3 abs_b = t.getBasis().absolute(); - btVector3 center = t.getOrigin(); - btVector3 extent = btVector3(abs_b[0].dot(halfExtents), - abs_b[1].dot(halfExtents), - abs_b[2].dot(halfExtents)); - extent += btVector3(getMargin(),getMargin(),getMargin()); - - aabbMin = center - extent; - aabbMax = center + extent; -} - - -/// This returns the "raw" (user's initial) height, not the actual height. -/// The actual height needs to be adjusted to be relative to the center -/// of the heightfield's AABB. -btScalar -btHeightfieldTerrainShape::getRawHeightFieldValue(int x,int y) const -{ - btScalar val = 0.f; - switch (m_heightDataType) - { - case PHY_FLOAT: - { - val = m_heightfieldDataFloat[(y*m_heightStickWidth)+x]; - break; - } - - case PHY_UCHAR: - { - unsigned char heightFieldValue = m_heightfieldDataUnsignedChar[(y*m_heightStickWidth)+x]; - val = heightFieldValue * m_heightScale; - break; - } - - case PHY_SHORT: - { - short hfValue = m_heightfieldDataShort[(y * m_heightStickWidth) + x]; - val = hfValue * m_heightScale; - break; - } - - default: - { - btAssert(!"Bad m_heightDataType"); - } - } - - return val; -} - - - - -/// this returns the vertex in bullet-local coordinates -void btHeightfieldTerrainShape::getVertex(int x,int y,btVector3& vertex) const -{ - btAssert(x>=0); - btAssert(y>=0); - btAssert(xstartX) - startX = quantizedAabbMin[1]; - if (quantizedAabbMax[1]startJ) - startJ = quantizedAabbMin[2]; - if (quantizedAabbMax[2]startX) - startX = quantizedAabbMin[0]; - if (quantizedAabbMax[0]startJ) - startJ = quantizedAabbMin[2]; - if (quantizedAabbMax[2]startX) - startX = quantizedAabbMin[0]; - if (quantizedAabbMax[0]startJ) - startJ = quantizedAabbMin[1]; - if (quantizedAabbMax[1]processTriangle(vertices,x,j); - //second triangle - getVertex(x,j,vertices[0]); - getVertex(x+1,j+1,vertices[1]); - getVertex(x,j+1,vertices[2]); - callback->processTriangle(vertices,x,j); - } else - { - //first triangle - getVertex(x,j,vertices[0]); - getVertex(x,j+1,vertices[1]); - getVertex(x+1,j,vertices[2]); - callback->processTriangle(vertices,x,j); - //second triangle - getVertex(x+1,j,vertices[0]); - getVertex(x,j+1,vertices[1]); - getVertex(x+1,j+1,vertices[2]); - callback->processTriangle(vertices,x,j); - } - } - } - - - -} - -void btHeightfieldTerrainShape::calculateLocalInertia(btScalar ,btVector3& inertia) const -{ - //moving concave objects not supported - - inertia.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); -} - -void btHeightfieldTerrainShape::setLocalScaling(const btVector3& scaling) -{ - m_localScaling = scaling; -} -const btVector3& btHeightfieldTerrainShape::getLocalScaling() const -{ - return m_localScaling; -} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h deleted file mode 100644 index 4f5d1e35bf3..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h +++ /dev/null @@ -1,161 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef HEIGHTFIELD_TERRAIN_SHAPE_H -#define HEIGHTFIELD_TERRAIN_SHAPE_H - -#include "btConcaveShape.h" - -///btHeightfieldTerrainShape simulates a 2D heightfield terrain -/** - The caller is responsible for maintaining the heightfield array; this - class does not make a copy. - - The heightfield can be dynamic so long as the min/max height values - capture the extremes (heights must always be in that range). - - The local origin of the heightfield is assumed to be the exact - center (as determined by width and length and height, with each - axis multiplied by the localScaling). - - \b NOTE: be careful with coordinates. If you have a heightfield with a local - min height of -100m, and a max height of +500m, you may be tempted to place it - at the origin (0,0) and expect the heights in world coordinates to be - -100 to +500 meters. - Actually, the heights will be -300 to +300m, because bullet will re-center - the heightfield based on its AABB (which is determined by the min/max - heights). So keep in mind that once you create a btHeightfieldTerrainShape - object, the heights will be adjusted relative to the center of the AABB. This - is different to the behavior of many rendering engines, but is useful for - physics engines. - - Most (but not all) rendering and heightfield libraries assume upAxis = 1 - (that is, the y-axis is "up"). This class allows any of the 3 coordinates - to be "up". Make sure your choice of axis is consistent with your rendering - system. - - The heightfield heights are determined from the data type used for the - heightfieldData array. - - - PHY_UCHAR: height at a point is the uchar value at the - grid point, multipled by heightScale. uchar isn't recommended - because of its inability to deal with negative values, and - low resolution (8-bit). - - - PHY_SHORT: height at a point is the short int value at that grid - point, multipled by heightScale. - - - PHY_FLOAT: height at a point is the float value at that grid - point. heightScale is ignored when using the float heightfield - data type. - - Whatever the caller specifies as minHeight and maxHeight will be honored. - The class will not inspect the heightfield to discover the actual minimum - or maximum heights. These values are used to determine the heightfield's - axis-aligned bounding box, multiplied by localScaling. - - For usage and testing see the TerrainDemo. - */ -class btHeightfieldTerrainShape : public btConcaveShape -{ -protected: - btVector3 m_localAabbMin; - btVector3 m_localAabbMax; - btVector3 m_localOrigin; - - ///terrain data - int m_heightStickWidth; - int m_heightStickLength; - btScalar m_minHeight; - btScalar m_maxHeight; - btScalar m_width; - btScalar m_length; - btScalar m_heightScale; - union - { - unsigned char* m_heightfieldDataUnsignedChar; - short* m_heightfieldDataShort; - btScalar* m_heightfieldDataFloat; - void* m_heightfieldDataUnknown; - }; - - PHY_ScalarType m_heightDataType; - bool m_flipQuadEdges; - bool m_useDiamondSubdivision; - - int m_upAxis; - - btVector3 m_localScaling; - - virtual btScalar getRawHeightFieldValue(int x,int y) const; - void quantizeWithClamp(int* out, const btVector3& point,int isMax) const; - void getVertex(int x,int y,btVector3& vertex) const; - - - - /// protected initialization - /** - Handles the work of constructors so that public constructors can be - backwards-compatible without a lot of copy/paste. - */ - void initialize(int heightStickWidth, int heightStickLength, - void* heightfieldData, btScalar heightScale, - btScalar minHeight, btScalar maxHeight, int upAxis, - PHY_ScalarType heightDataType, bool flipQuadEdges); - -public: - /// preferred constructor - /** - This constructor supports a range of heightfield - data types, and allows for a non-zero minimum height value. - heightScale is needed for any integer-based heightfield data types. - */ - btHeightfieldTerrainShape(int heightStickWidth,int heightStickLength, - void* heightfieldData, btScalar heightScale, - btScalar minHeight, btScalar maxHeight, - int upAxis, PHY_ScalarType heightDataType, - bool flipQuadEdges); - - /// legacy constructor - /** - The legacy constructor assumes the heightfield has a minimum height - of zero. Only unsigned char or floats are supported. For legacy - compatibility reasons, heightScale is calculated as maxHeight / 65535 - (and is only used when useFloatData = false). - */ - btHeightfieldTerrainShape(int heightStickWidth,int heightStickLength,void* heightfieldData, btScalar maxHeight,int upAxis,bool useFloatData,bool flipQuadEdges); - - virtual ~btHeightfieldTerrainShape(); - - - void setUseDiamondSubdivision(bool useDiamondSubdivision=true) { m_useDiamondSubdivision = useDiamondSubdivision;} - - - virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; - - virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const; - - virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; - - virtual void setLocalScaling(const btVector3& scaling); - - virtual const btVector3& getLocalScaling() const; - - //debugging - virtual const char* getName()const {return "HEIGHTFIELD";} - -}; - -#endif //HEIGHTFIELD_TERRAIN_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btMaterial.h b/extern/bullet2/BulletCollision/CollisionShapes/btMaterial.h deleted file mode 100644 index 030e167da50..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btMaterial.h +++ /dev/null @@ -1,35 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -/// This file was created by Alex Silverman - -#ifndef MATERIAL_H -#define MATERIAL_H - -// Material class to be used by btMultimaterialTriangleMeshShape to store triangle properties -class btMaterial -{ - // public members so that materials can change due to world events -public: - btScalar m_friction; - btScalar m_restitution; - int pad[2]; - - btMaterial(){} - btMaterial(btScalar fric, btScalar rest) { m_friction = fric; m_restitution = rest; } -}; - -#endif // MATERIAL_H - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp deleted file mode 100644 index 06707e24e55..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp +++ /dev/null @@ -1,60 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btMinkowskiSumShape.h" - - -btMinkowskiSumShape::btMinkowskiSumShape(const btConvexShape* shapeA,const btConvexShape* shapeB) -: btConvexInternalShape (), -m_shapeA(shapeA), -m_shapeB(shapeB) -{ - m_shapeType = MINKOWSKI_DIFFERENCE_SHAPE_PROXYTYPE; - m_transA.setIdentity(); - m_transB.setIdentity(); -} - -btVector3 btMinkowskiSumShape::localGetSupportingVertexWithoutMargin(const btVector3& vec)const -{ - btVector3 supVertexA = m_transA(m_shapeA->localGetSupportingVertexWithoutMargin(vec*m_transA.getBasis())); - btVector3 supVertexB = m_transB(m_shapeB->localGetSupportingVertexWithoutMargin(-vec*m_transB.getBasis())); - return supVertexA - supVertexB; -} - -void btMinkowskiSumShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const -{ - ///@todo: could make recursive use of batching. probably this shape is not used frequently. - for (int i=0;igetMargin() + m_shapeB->getMargin(); -} - - -void btMinkowskiSumShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const -{ - (void)mass; - btAssert(0); - inertia.setValue(0,0,0); -} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btMinkowskiSumShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btMinkowskiSumShape.h deleted file mode 100644 index d6fd040213b..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btMinkowskiSumShape.h +++ /dev/null @@ -1,60 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef MINKOWSKI_SUM_SHAPE_H -#define MINKOWSKI_SUM_SHAPE_H - -#include "btConvexInternalShape.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types - -/// The btMinkowskiSumShape is only for advanced users. This shape represents implicit based minkowski sum of two convex implicit shapes. -class btMinkowskiSumShape : public btConvexInternalShape -{ - - btTransform m_transA; - btTransform m_transB; - const btConvexShape* m_shapeA; - const btConvexShape* m_shapeB; - -public: - - btMinkowskiSumShape(const btConvexShape* shapeA,const btConvexShape* shapeB); - - virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const; - - virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const; - - - virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; - - void setTransformA(const btTransform& transA) { m_transA = transA;} - void setTransformB(const btTransform& transB) { m_transB = transB;} - - const btTransform& getTransformA()const { return m_transA;} - const btTransform& GetTransformB()const { return m_transB;} - - - virtual btScalar getMargin() const; - - const btConvexShape* getShapeA() const { return m_shapeA;} - const btConvexShape* getShapeB() const { return m_shapeB;} - - virtual const char* getName()const - { - return "MinkowskiSum"; - } -}; - -#endif //MINKOWSKI_SUM_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btMultiSphereShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btMultiSphereShape.cpp deleted file mode 100644 index c996bfcdaba..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btMultiSphereShape.cpp +++ /dev/null @@ -1,167 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#include "btMultiSphereShape.h" -#include "BulletCollision/CollisionShapes/btCollisionMargin.h" -#include "LinearMath/btQuaternion.h" -#include "LinearMath/btSerializer.h" - -btMultiSphereShape::btMultiSphereShape (const btVector3* positions,const btScalar* radi,int numSpheres) -:btConvexInternalAabbCachingShape () -{ - m_shapeType = MULTI_SPHERE_SHAPE_PROXYTYPE; - //btScalar startMargin = btScalar(BT_LARGE_FLOAT); - - m_localPositionArray.resize(numSpheres); - m_radiArray.resize(numSpheres); - for (int i=0;i maxDot) - { - maxDot = newDot; - supVec = vtx; - } - } - - return supVec; - -} - - void btMultiSphereShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const -{ - - for (int j=0;j maxDot) - { - maxDot = newDot; - supportVerticesOut[j] = vtx; - } - } - } -} - - - - - - - - -void btMultiSphereShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const -{ - //as an approximation, take the inertia of the box that bounds the spheres - - btVector3 localAabbMin,localAabbMax; - getCachedLocalAabb(localAabbMin,localAabbMax); - btVector3 halfExtents = (localAabbMax-localAabbMin)*btScalar(0.5); - - btScalar lx=btScalar(2.)*(halfExtents.x()); - btScalar ly=btScalar(2.)*(halfExtents.y()); - btScalar lz=btScalar(2.)*(halfExtents.z()); - - inertia.setValue(mass/(btScalar(12.0)) * (ly*ly + lz*lz), - mass/(btScalar(12.0)) * (lx*lx + lz*lz), - mass/(btScalar(12.0)) * (lx*lx + ly*ly)); - -} - - -///fills the dataBuffer and returns the struct name (and 0 on failure) -const char* btMultiSphereShape::serialize(void* dataBuffer, btSerializer* serializer) const -{ - btMultiSphereShapeData* shapeData = (btMultiSphereShapeData*) dataBuffer; - btConvexInternalShape::serialize(&shapeData->m_convexInternalShapeData, serializer); - - int numElem = m_localPositionArray.size(); - shapeData->m_localPositionArrayPtr = numElem ? (btPositionAndRadius*)serializer->getUniquePointer((void*)&m_localPositionArray[0]): 0; - - shapeData->m_localPositionArraySize = numElem; - if (numElem) - { - btChunk* chunk = serializer->allocate(sizeof(btPositionAndRadius),numElem); - btPositionAndRadius* memPtr = (btPositionAndRadius*)chunk->m_oldPtr; - for (int i=0;im_pos); - memPtr->m_radius = float(m_radiArray[i]); - } - serializer->finalizeChunk(chunk,"btPositionAndRadius",BT_ARRAY_CODE,(void*)&m_localPositionArray[0]); - } - - return "btMultiSphereShapeData"; -} - - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btMultiSphereShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btMultiSphereShape.h deleted file mode 100644 index 3db7e320889..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btMultiSphereShape.h +++ /dev/null @@ -1,99 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef MULTI_SPHERE_MINKOWSKI_H -#define MULTI_SPHERE_MINKOWSKI_H - -#include "btConvexInternalShape.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types -#include "LinearMath/btAlignedObjectArray.h" -#include "LinearMath/btAabbUtil2.h" - - - -///The btMultiSphereShape represents the convex hull of a collection of spheres. You can create special capsules or other smooth volumes. -///It is possible to animate the spheres for deformation, but call 'recalcLocalAabb' after changing any sphere position/radius -class btMultiSphereShape : public btConvexInternalAabbCachingShape -{ - - btAlignedObjectArray m_localPositionArray; - btAlignedObjectArray m_radiArray; - -public: - btMultiSphereShape (const btVector3* positions,const btScalar* radi,int numSpheres); - - ///CollisionShape Interface - virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; - - /// btConvexShape Interface - virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const; - - virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const; - - int getSphereCount() const - { - return m_localPositionArray.size(); - } - - const btVector3& getSpherePosition(int index) const - { - return m_localPositionArray[index]; - } - - btScalar getSphereRadius(int index) const - { - return m_radiArray[index]; - } - - - virtual const char* getName()const - { - return "MultiSphere"; - } - - virtual int calculateSerializeBufferSize() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; - - -}; - - -struct btPositionAndRadius -{ - btVector3FloatData m_pos; - float m_radius; -}; - -struct btMultiSphereShapeData -{ - btConvexInternalShapeData m_convexInternalShapeData; - - btPositionAndRadius *m_localPositionArrayPtr; - int m_localPositionArraySize; - char m_padding[4]; -}; - - - -SIMD_FORCE_INLINE int btMultiSphereShape::calculateSerializeBufferSize() const -{ - return sizeof(btMultiSphereShapeData); -} - - - -#endif //MULTI_SPHERE_MINKOWSKI_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp deleted file mode 100644 index 58799ac96ad..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp +++ /dev/null @@ -1,45 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -/// This file was created by Alex Silverman - -#include "BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h" -#include "BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h" -//#include "BulletCollision/CollisionShapes/btOptimizedBvh.h" - - -///Obtains the material for a specific triangle -const btMaterial * btMultimaterialTriangleMeshShape::getMaterialProperties(int partID, int triIndex) -{ - const unsigned char * materialBase = 0; - int numMaterials; - PHY_ScalarType materialType; - int materialStride; - const unsigned char * triangleMaterialBase = 0; - int numTriangles; - int triangleMaterialStride; - PHY_ScalarType triangleType; - - ((btTriangleIndexVertexMaterialArray*)m_meshInterface)->getLockedReadOnlyMaterialBase(&materialBase, numMaterials, materialType, materialStride, - &triangleMaterialBase, numTriangles, triangleMaterialStride, triangleType, partID); - - // return the pointer to the place with the friction for the triangle - // TODO: This depends on whether it's a moving mesh or not - // BUG IN GIMPACT - //return (btScalar*)(&materialBase[triangleMaterialBase[(triIndex-1) * triangleMaterialStride] * materialStride]); - int * matInd = (int *)(&(triangleMaterialBase[(triIndex * triangleMaterialStride)])); - btMaterial *matVal = (btMaterial *)(&(materialBase[*matInd * materialStride])); - return (matVal); -} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h deleted file mode 100644 index d42ba114349..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h +++ /dev/null @@ -1,121 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -/// This file was created by Alex Silverman - -#ifndef BVH_TRIANGLE_MATERIAL_MESH_SHAPE_H -#define BVH_TRIANGLE_MATERIAL_MESH_SHAPE_H - -#include "btBvhTriangleMeshShape.h" -#include "btMaterial.h" - -///The BvhTriangleMaterialMeshShape extends the btBvhTriangleMeshShape. Its main contribution is the interface into a material array, which allows per-triangle friction and restitution. -ATTRIBUTE_ALIGNED16(class) btMultimaterialTriangleMeshShape : public btBvhTriangleMeshShape -{ - btAlignedObjectArray m_materialList; - int ** m_triangleMaterials; - -public: - - BT_DECLARE_ALIGNED_ALLOCATOR(); - - btMultimaterialTriangleMeshShape(): btBvhTriangleMeshShape() {m_shapeType = MULTIMATERIAL_TRIANGLE_MESH_PROXYTYPE;} - btMultimaterialTriangleMeshShape(btStridingMeshInterface* meshInterface, bool useQuantizedAabbCompression, bool buildBvh = true): - btBvhTriangleMeshShape(meshInterface, useQuantizedAabbCompression, buildBvh) - { - m_shapeType = MULTIMATERIAL_TRIANGLE_MESH_PROXYTYPE; - - const unsigned char *vertexbase; - int numverts; - PHY_ScalarType type; - int stride; - const unsigned char *indexbase; - int indexstride; - int numfaces; - PHY_ScalarType indicestype; - - //m_materialLookup = (int**)(btAlignedAlloc(sizeof(int*) * meshInterface->getNumSubParts(), 16)); - - for(int i = 0; i < meshInterface->getNumSubParts(); i++) - { - m_meshInterface->getLockedReadOnlyVertexIndexBase( - &vertexbase, - numverts, - type, - stride, - &indexbase, - indexstride, - numfaces, - indicestype, - i); - //m_materialLookup[i] = (int*)(btAlignedAlloc(sizeof(int) * numfaces, 16)); - } - } - - ///optionally pass in a larger bvh aabb, used for quantization. This allows for deformations within this aabb - btMultimaterialTriangleMeshShape(btStridingMeshInterface* meshInterface, bool useQuantizedAabbCompression,const btVector3& bvhAabbMin,const btVector3& bvhAabbMax, bool buildBvh = true): - btBvhTriangleMeshShape(meshInterface, useQuantizedAabbCompression, bvhAabbMin, bvhAabbMax, buildBvh) - { - m_shapeType = MULTIMATERIAL_TRIANGLE_MESH_PROXYTYPE; - - const unsigned char *vertexbase; - int numverts; - PHY_ScalarType type; - int stride; - const unsigned char *indexbase; - int indexstride; - int numfaces; - PHY_ScalarType indicestype; - - //m_materialLookup = (int**)(btAlignedAlloc(sizeof(int*) * meshInterface->getNumSubParts(), 16)); - - for(int i = 0; i < meshInterface->getNumSubParts(); i++) - { - m_meshInterface->getLockedReadOnlyVertexIndexBase( - &vertexbase, - numverts, - type, - stride, - &indexbase, - indexstride, - numfaces, - indicestype, - i); - //m_materialLookup[i] = (int*)(btAlignedAlloc(sizeof(int) * numfaces * 2, 16)); - } - } - - virtual ~btMultimaterialTriangleMeshShape() - { -/* - for(int i = 0; i < m_meshInterface->getNumSubParts(); i++) - { - btAlignedFree(m_materialValues[i]); - m_materialLookup[i] = NULL; - } - btAlignedFree(m_materialValues); - m_materialLookup = NULL; -*/ - } - //debugging - virtual const char* getName()const {return "MULTIMATERIALTRIANGLEMESH";} - - ///Obtains the material for a specific triangle - const btMaterial * getMaterialProperties(int partID, int triIndex); - -} -; - -#endif //BVH_TRIANGLE_MATERIAL_MESH_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btOptimizedBvh.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btOptimizedBvh.cpp deleted file mode 100644 index 981b8a2652c..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btOptimizedBvh.cpp +++ /dev/null @@ -1,391 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btOptimizedBvh.h" -#include "btStridingMeshInterface.h" -#include "LinearMath/btAabbUtil2.h" -#include "LinearMath/btIDebugDraw.h" - - -btOptimizedBvh::btOptimizedBvh() -{ -} - -btOptimizedBvh::~btOptimizedBvh() -{ -} - - -void btOptimizedBvh::build(btStridingMeshInterface* triangles, bool useQuantizedAabbCompression, const btVector3& bvhAabbMin, const btVector3& bvhAabbMax) -{ - m_useQuantization = useQuantizedAabbCompression; - - - // NodeArray triangleNodes; - - struct NodeTriangleCallback : public btInternalTriangleIndexCallback - { - - NodeArray& m_triangleNodes; - - NodeTriangleCallback& operator=(NodeTriangleCallback& other) - { - m_triangleNodes = other.m_triangleNodes; - return *this; - } - - NodeTriangleCallback(NodeArray& triangleNodes) - :m_triangleNodes(triangleNodes) - { - } - - virtual void internalProcessTriangleIndex(btVector3* triangle,int partId,int triangleIndex) - { - btOptimizedBvhNode node; - btVector3 aabbMin,aabbMax; - aabbMin.setValue(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); - aabbMax.setValue(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); - aabbMin.setMin(triangle[0]); - aabbMax.setMax(triangle[0]); - aabbMin.setMin(triangle[1]); - aabbMax.setMax(triangle[1]); - aabbMin.setMin(triangle[2]); - aabbMax.setMax(triangle[2]); - - //with quantization? - node.m_aabbMinOrg = aabbMin; - node.m_aabbMaxOrg = aabbMax; - - node.m_escapeIndex = -1; - - //for child nodes - node.m_subPart = partId; - node.m_triangleIndex = triangleIndex; - m_triangleNodes.push_back(node); - } - }; - struct QuantizedNodeTriangleCallback : public btInternalTriangleIndexCallback - { - QuantizedNodeArray& m_triangleNodes; - const btQuantizedBvh* m_optimizedTree; // for quantization - - QuantizedNodeTriangleCallback& operator=(QuantizedNodeTriangleCallback& other) - { - m_triangleNodes = other.m_triangleNodes; - m_optimizedTree = other.m_optimizedTree; - return *this; - } - - QuantizedNodeTriangleCallback(QuantizedNodeArray& triangleNodes,const btQuantizedBvh* tree) - :m_triangleNodes(triangleNodes),m_optimizedTree(tree) - { - } - - virtual void internalProcessTriangleIndex(btVector3* triangle,int partId,int triangleIndex) - { - // The partId and triangle index must fit in the same (positive) integer - btAssert(partId < (1<=0); - - btQuantizedBvhNode node; - btVector3 aabbMin,aabbMax; - aabbMin.setValue(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); - aabbMax.setValue(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); - aabbMin.setMin(triangle[0]); - aabbMax.setMax(triangle[0]); - aabbMin.setMin(triangle[1]); - aabbMax.setMax(triangle[1]); - aabbMin.setMin(triangle[2]); - aabbMax.setMax(triangle[2]); - - //PCK: add these checks for zero dimensions of aabb - const btScalar MIN_AABB_DIMENSION = btScalar(0.002); - const btScalar MIN_AABB_HALF_DIMENSION = btScalar(0.001); - if (aabbMax.x() - aabbMin.x() < MIN_AABB_DIMENSION) - { - aabbMax.setX(aabbMax.x() + MIN_AABB_HALF_DIMENSION); - aabbMin.setX(aabbMin.x() - MIN_AABB_HALF_DIMENSION); - } - if (aabbMax.y() - aabbMin.y() < MIN_AABB_DIMENSION) - { - aabbMax.setY(aabbMax.y() + MIN_AABB_HALF_DIMENSION); - aabbMin.setY(aabbMin.y() - MIN_AABB_HALF_DIMENSION); - } - if (aabbMax.z() - aabbMin.z() < MIN_AABB_DIMENSION) - { - aabbMax.setZ(aabbMax.z() + MIN_AABB_HALF_DIMENSION); - aabbMin.setZ(aabbMin.z() - MIN_AABB_HALF_DIMENSION); - } - - m_optimizedTree->quantize(&node.m_quantizedAabbMin[0],aabbMin,0); - m_optimizedTree->quantize(&node.m_quantizedAabbMax[0],aabbMax,1); - - node.m_escapeIndexOrTriangleIndex = (partId<<(31-MAX_NUM_PARTS_IN_BITS)) | triangleIndex; - - m_triangleNodes.push_back(node); - } - }; - - - - int numLeafNodes = 0; - - - if (m_useQuantization) - { - - //initialize quantization values - setQuantizationValues(bvhAabbMin,bvhAabbMax); - - QuantizedNodeTriangleCallback callback(m_quantizedLeafNodes,this); - - - triangles->InternalProcessAllTriangles(&callback,m_bvhAabbMin,m_bvhAabbMax); - - //now we have an array of leafnodes in m_leafNodes - numLeafNodes = m_quantizedLeafNodes.size(); - - - m_quantizedContiguousNodes.resize(2*numLeafNodes); - - - } else - { - NodeTriangleCallback callback(m_leafNodes); - - btVector3 aabbMin(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); - btVector3 aabbMax(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); - - triangles->InternalProcessAllTriangles(&callback,aabbMin,aabbMax); - - //now we have an array of leafnodes in m_leafNodes - numLeafNodes = m_leafNodes.size(); - - m_contiguousNodes.resize(2*numLeafNodes); - } - - m_curNodeIndex = 0; - - buildTree(0,numLeafNodes); - - ///if the entire tree is small then subtree size, we need to create a header info for the tree - if(m_useQuantization && !m_SubtreeHeaders.size()) - { - btBvhSubtreeInfo& subtree = m_SubtreeHeaders.expand(); - subtree.setAabbFromQuantizeNode(m_quantizedContiguousNodes[0]); - subtree.m_rootNodeIndex = 0; - subtree.m_subtreeSize = m_quantizedContiguousNodes[0].isLeafNode() ? 1 : m_quantizedContiguousNodes[0].getEscapeIndex(); - } - - //PCK: update the copy of the size - m_subtreeHeaderCount = m_SubtreeHeaders.size(); - - //PCK: clear m_quantizedLeafNodes and m_leafNodes, they are temporary - m_quantizedLeafNodes.clear(); - m_leafNodes.clear(); -} - - - - -void btOptimizedBvh::refit(btStridingMeshInterface* meshInterface,const btVector3& aabbMin,const btVector3& aabbMax) -{ - if (m_useQuantization) - { - - setQuantizationValues(aabbMin,aabbMax); - - updateBvhNodes(meshInterface,0,m_curNodeIndex,0); - - ///now update all subtree headers - - int i; - for (i=0;i m_bvhAabbMin.getX()); - btAssert(aabbMin.getY() > m_bvhAabbMin.getY()); - btAssert(aabbMin.getZ() > m_bvhAabbMin.getZ()); - - btAssert(aabbMax.getX() < m_bvhAabbMax.getX()); - btAssert(aabbMax.getY() < m_bvhAabbMax.getY()); - btAssert(aabbMax.getZ() < m_bvhAabbMax.getZ()); - - ///we should update all quantization values, using updateBvhNodes(meshInterface); - ///but we only update chunks that overlap the given aabb - - unsigned short quantizedQueryAabbMin[3]; - unsigned short quantizedQueryAabbMax[3]; - - quantize(&quantizedQueryAabbMin[0],aabbMin,0); - quantize(&quantizedQueryAabbMax[0],aabbMax,1); - - int i; - for (i=0;im_SubtreeHeaders.size();i++) - { - btBvhSubtreeInfo& subtree = m_SubtreeHeaders[i]; - - //PCK: unsigned instead of bool - unsigned overlap = testQuantizedAabbAgainstQuantizedAabb(quantizedQueryAabbMin,quantizedQueryAabbMax,subtree.m_quantizedAabbMin,subtree.m_quantizedAabbMax); - if (overlap != 0) - { - updateBvhNodes(meshInterface,subtree.m_rootNodeIndex,subtree.m_rootNodeIndex+subtree.m_subtreeSize,i); - - subtree.setAabbFromQuantizeNode(m_quantizedContiguousNodes[subtree.m_rootNodeIndex]); - } - } - -} - -void btOptimizedBvh::updateBvhNodes(btStridingMeshInterface* meshInterface,int firstNode,int endNode,int index) -{ - (void)index; - - btAssert(m_useQuantization); - - int curNodeSubPart=-1; - - //get access info to trianglemesh data - const unsigned char *vertexbase = 0; - int numverts = 0; - PHY_ScalarType type = PHY_INTEGER; - int stride = 0; - const unsigned char *indexbase = 0; - int indexstride = 0; - int numfaces = 0; - PHY_ScalarType indicestype = PHY_INTEGER; - - btVector3 triangleVerts[3]; - btVector3 aabbMin,aabbMax; - const btVector3& meshScaling = meshInterface->getScaling(); - - int i; - for (i=endNode-1;i>=firstNode;i--) - { - - - btQuantizedBvhNode& curNode = m_quantizedContiguousNodes[i]; - if (curNode.isLeafNode()) - { - //recalc aabb from triangle data - int nodeSubPart = curNode.getPartId(); - int nodeTriangleIndex = curNode.getTriangleIndex(); - if (nodeSubPart != curNodeSubPart) - { - if (curNodeSubPart >= 0) - meshInterface->unLockReadOnlyVertexBase(curNodeSubPart); - meshInterface->getLockedReadOnlyVertexIndexBase(&vertexbase,numverts, type,stride,&indexbase,indexstride,numfaces,indicestype,nodeSubPart); - - curNodeSubPart = nodeSubPart; - btAssert(indicestype==PHY_INTEGER||indicestype==PHY_SHORT); - } - //triangles->getLockedReadOnlyVertexIndexBase(vertexBase,numVerts, - - unsigned int* gfxbase = (unsigned int*)(indexbase+nodeTriangleIndex*indexstride); - - - for (int j=2;j>=0;j--) - { - - int graphicsindex = indicestype==PHY_SHORT?((unsigned short*)gfxbase)[j]:gfxbase[j]; - if (type == PHY_FLOAT) - { - float* graphicsbase = (float*)(vertexbase+graphicsindex*stride); - triangleVerts[j] = btVector3( - graphicsbase[0]*meshScaling.getX(), - graphicsbase[1]*meshScaling.getY(), - graphicsbase[2]*meshScaling.getZ()); - } - else - { - double* graphicsbase = (double*)(vertexbase+graphicsindex*stride); - triangleVerts[j] = btVector3( btScalar(graphicsbase[0]*meshScaling.getX()), btScalar(graphicsbase[1]*meshScaling.getY()), btScalar(graphicsbase[2]*meshScaling.getZ())); - } - } - - - - aabbMin.setValue(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); - aabbMax.setValue(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); - aabbMin.setMin(triangleVerts[0]); - aabbMax.setMax(triangleVerts[0]); - aabbMin.setMin(triangleVerts[1]); - aabbMax.setMax(triangleVerts[1]); - aabbMin.setMin(triangleVerts[2]); - aabbMax.setMax(triangleVerts[2]); - - quantize(&curNode.m_quantizedAabbMin[0],aabbMin,0); - quantize(&curNode.m_quantizedAabbMax[0],aabbMax,1); - - } else - { - //combine aabb from both children - - btQuantizedBvhNode* leftChildNode = &m_quantizedContiguousNodes[i+1]; - - btQuantizedBvhNode* rightChildNode = leftChildNode->isLeafNode() ? &m_quantizedContiguousNodes[i+2] : - &m_quantizedContiguousNodes[i+1+leftChildNode->getEscapeIndex()]; - - - { - for (int i=0;i<3;i++) - { - curNode.m_quantizedAabbMin[i] = leftChildNode->m_quantizedAabbMin[i]; - if (curNode.m_quantizedAabbMin[i]>rightChildNode->m_quantizedAabbMin[i]) - curNode.m_quantizedAabbMin[i]=rightChildNode->m_quantizedAabbMin[i]; - - curNode.m_quantizedAabbMax[i] = leftChildNode->m_quantizedAabbMax[i]; - if (curNode.m_quantizedAabbMax[i] < rightChildNode->m_quantizedAabbMax[i]) - curNode.m_quantizedAabbMax[i] = rightChildNode->m_quantizedAabbMax[i]; - } - } - } - - } - - if (curNodeSubPart >= 0) - meshInterface->unLockReadOnlyVertexBase(curNodeSubPart); - - -} - -///deSerializeInPlace loads and initializes a BVH from a buffer in memory 'in place' -btOptimizedBvh* btOptimizedBvh::deSerializeInPlace(void *i_alignedDataBuffer, unsigned int i_dataBufferSize, bool i_swapEndian) -{ - btQuantizedBvh* bvh = btQuantizedBvh::deSerializeInPlace(i_alignedDataBuffer,i_dataBufferSize,i_swapEndian); - - //we don't add additional data so just do a static upcast - return static_cast(bvh); -} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btOptimizedBvh.h b/extern/bullet2/BulletCollision/CollisionShapes/btOptimizedBvh.h deleted file mode 100644 index 749fe6005dd..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btOptimizedBvh.h +++ /dev/null @@ -1,65 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -///Contains contributions from Disney Studio's - -#ifndef OPTIMIZED_BVH_H -#define OPTIMIZED_BVH_H - -#include "BulletCollision/BroadphaseCollision/btQuantizedBvh.h" - -class btStridingMeshInterface; - - -///The btOptimizedBvh extends the btQuantizedBvh to create AABB tree for triangle meshes, through the btStridingMeshInterface. -ATTRIBUTE_ALIGNED16(class) btOptimizedBvh : public btQuantizedBvh -{ - -public: - BT_DECLARE_ALIGNED_ALLOCATOR(); - -protected: - -public: - - btOptimizedBvh(); - - virtual ~btOptimizedBvh(); - - void build(btStridingMeshInterface* triangles,bool useQuantizedAabbCompression, const btVector3& bvhAabbMin, const btVector3& bvhAabbMax); - - void refit(btStridingMeshInterface* triangles,const btVector3& aabbMin,const btVector3& aabbMax); - - void refitPartial(btStridingMeshInterface* triangles,const btVector3& aabbMin, const btVector3& aabbMax); - - void updateBvhNodes(btStridingMeshInterface* meshInterface,int firstNode,int endNode,int index); - - /// Data buffer MUST be 16 byte aligned - virtual bool serializeInPlace(void *o_alignedDataBuffer, unsigned i_dataBufferSize, bool i_swapEndian) const - { - return btQuantizedBvh::serialize(o_alignedDataBuffer,i_dataBufferSize,i_swapEndian); - - } - - ///deSerializeInPlace loads and initializes a BVH from a buffer in memory 'in place' - static btOptimizedBvh *deSerializeInPlace(void *i_alignedDataBuffer, unsigned int i_dataBufferSize, bool i_swapEndian); - - -}; - - -#endif //OPTIMIZED_BVH_H - - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp deleted file mode 100644 index b1ecb3e432c..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp +++ /dev/null @@ -1,193 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "BulletCollision/CollisionShapes/btPolyhedralConvexShape.h" - -btPolyhedralConvexShape::btPolyhedralConvexShape() :btConvexInternalShape() -{ - -} - - -btVector3 btPolyhedralConvexShape::localGetSupportingVertexWithoutMargin(const btVector3& vec0)const -{ - - - btVector3 supVec(0,0,0); -#ifndef __SPU__ - int i; - btScalar maxDot(btScalar(-BT_LARGE_FLOAT)); - - btVector3 vec = vec0; - btScalar lenSqr = vec.length2(); - if (lenSqr < btScalar(0.0001)) - { - vec.setValue(1,0,0); - } else - { - btScalar rlen = btScalar(1.) / btSqrt(lenSqr ); - vec *= rlen; - } - - btVector3 vtx; - btScalar newDot; - - for (i=0;i maxDot) - { - maxDot = newDot; - supVec = vtx; - } - } - - -#endif //__SPU__ - return supVec; -} - - - -void btPolyhedralConvexShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const -{ -#ifndef __SPU__ - int i; - - btVector3 vtx; - btScalar newDot; - - for (i=0;i supportVerticesOut[j][3]) - { - //WARNING: don't swap next lines, the w component would get overwritten! - supportVerticesOut[j] = vtx; - supportVerticesOut[j][3] = newDot; - } - } - } -#endif //__SPU__ -} - - - -void btPolyhedralConvexShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const -{ -#ifndef __SPU__ - //not yet, return box inertia - - btScalar margin = getMargin(); - - btTransform ident; - ident.setIdentity(); - btVector3 aabbMin,aabbMax; - getAabb(ident,aabbMin,aabbMax); - btVector3 halfExtents = (aabbMax-aabbMin)*btScalar(0.5); - - btScalar lx=btScalar(2.)*(halfExtents.x()+margin); - btScalar ly=btScalar(2.)*(halfExtents.y()+margin); - btScalar lz=btScalar(2.)*(halfExtents.z()+margin); - const btScalar x2 = lx*lx; - const btScalar y2 = ly*ly; - const btScalar z2 = lz*lz; - const btScalar scaledmass = mass * btScalar(0.08333333); - - inertia = scaledmass * (btVector3(y2+z2,x2+z2,x2+y2)); -#endif //__SPU__ -} - - - -void btPolyhedralConvexAabbCachingShape::setLocalScaling(const btVector3& scaling) -{ - btConvexInternalShape::setLocalScaling(scaling); - recalcLocalAabb(); -} - -btPolyhedralConvexAabbCachingShape::btPolyhedralConvexAabbCachingShape() -:btPolyhedralConvexShape(), -m_localAabbMin(1,1,1), -m_localAabbMax(-1,-1,-1), -m_isLocalAabbValid(false) -{ -} - -void btPolyhedralConvexAabbCachingShape::getAabb(const btTransform& trans,btVector3& aabbMin,btVector3& aabbMax) const -{ - getNonvirtualAabb(trans,aabbMin,aabbMax,getMargin()); -} - -void btPolyhedralConvexAabbCachingShape::recalcLocalAabb() -{ - m_isLocalAabbValid = true; - - #if 1 - static const btVector3 _directions[] = - { - btVector3( 1., 0., 0.), - btVector3( 0., 1., 0.), - btVector3( 0., 0., 1.), - btVector3( -1., 0., 0.), - btVector3( 0., -1., 0.), - btVector3( 0., 0., -1.) - }; - - btVector3 _supporting[] = - { - btVector3( 0., 0., 0.), - btVector3( 0., 0., 0.), - btVector3( 0., 0., 0.), - btVector3( 0., 0., 0.), - btVector3( 0., 0., 0.), - btVector3( 0., 0., 0.) - }; - - batchedUnitVectorGetSupportingVertexWithoutMargin(_directions, _supporting, 6); - - for ( int i = 0; i < 3; ++i ) - { - m_localAabbMax[i] = _supporting[i][i] + m_collisionMargin; - m_localAabbMin[i] = _supporting[i + 3][i] - m_collisionMargin; - } - - #else - - for (int i=0;i<3;i++) - { - btVector3 vec(btScalar(0.),btScalar(0.),btScalar(0.)); - vec[i] = btScalar(1.); - btVector3 tmp = localGetSupportingVertex(vec); - m_localAabbMax[i] = tmp[i]+m_collisionMargin; - vec[i] = btScalar(-1.); - tmp = localGetSupportingVertex(vec); - m_localAabbMin[i] = tmp[i]-m_collisionMargin; - } - #endif -} - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h deleted file mode 100644 index 2c691b95652..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h +++ /dev/null @@ -1,98 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BU_SHAPE -#define BU_SHAPE - -#include "LinearMath/btMatrix3x3.h" -#include "btConvexInternalShape.h" - - -///The btPolyhedralConvexShape is an internal interface class for polyhedral convex shapes. -class btPolyhedralConvexShape : public btConvexInternalShape -{ - -protected: - -public: - - btPolyhedralConvexShape(); - - //brute force implementations - - virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const; - virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const; - - virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; - - - virtual int getNumVertices() const = 0 ; - virtual int getNumEdges() const = 0; - virtual void getEdge(int i,btVector3& pa,btVector3& pb) const = 0; - virtual void getVertex(int i,btVector3& vtx) const = 0; - virtual int getNumPlanes() const = 0; - virtual void getPlane(btVector3& planeNormal,btVector3& planeSupport,int i ) const = 0; -// virtual int getIndex(int i) const = 0 ; - - virtual bool isInside(const btVector3& pt,btScalar tolerance) const = 0; - -}; - - -///The btPolyhedralConvexAabbCachingShape adds aabb caching to the btPolyhedralConvexShape -class btPolyhedralConvexAabbCachingShape : public btPolyhedralConvexShape -{ - - btVector3 m_localAabbMin; - btVector3 m_localAabbMax; - bool m_isLocalAabbValid; - -protected: - - void setCachedLocalAabb (const btVector3& aabbMin, const btVector3& aabbMax) - { - m_isLocalAabbValid = true; - m_localAabbMin = aabbMin; - m_localAabbMax = aabbMax; - } - - inline void getCachedLocalAabb (btVector3& aabbMin, btVector3& aabbMax) const - { - btAssert(m_isLocalAabbValid); - aabbMin = m_localAabbMin; - aabbMax = m_localAabbMax; - } - -public: - - btPolyhedralConvexAabbCachingShape(); - - inline void getNonvirtualAabb(const btTransform& trans,btVector3& aabbMin,btVector3& aabbMax, btScalar margin) const - { - - //lazy evaluation of local aabb - btAssert(m_isLocalAabbValid); - btTransformAabb(m_localAabbMin,m_localAabbMax,margin,trans,aabbMin,aabbMax); - } - - virtual void setLocalScaling(const btVector3& scaling); - - virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; - - void recalcLocalAabb(); - -}; - -#endif //BU_SHAPE diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp deleted file mode 100644 index d964e1e48ed..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btScaledBvhTriangleMeshShape.h" - -btScaledBvhTriangleMeshShape::btScaledBvhTriangleMeshShape(btBvhTriangleMeshShape* childShape,const btVector3& localScaling) -:m_localScaling(localScaling),m_bvhTriMeshShape(childShape) -{ - m_shapeType = SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE; -} - -btScaledBvhTriangleMeshShape::~btScaledBvhTriangleMeshShape() -{ -} - - -class btScaledTriangleCallback : public btTriangleCallback -{ - btTriangleCallback* m_originalCallback; - - btVector3 m_localScaling; - -public: - - btScaledTriangleCallback(btTriangleCallback* originalCallback,const btVector3& localScaling) - :m_originalCallback(originalCallback), - m_localScaling(localScaling) - { - } - - virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex) - { - btVector3 newTriangle[3]; - newTriangle[0] = triangle[0]*m_localScaling; - newTriangle[1] = triangle[1]*m_localScaling; - newTriangle[2] = triangle[2]*m_localScaling; - m_originalCallback->processTriangle(&newTriangle[0],partId,triangleIndex); - } -}; - -void btScaledBvhTriangleMeshShape::processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const -{ - btScaledTriangleCallback scaledCallback(callback,m_localScaling); - - btVector3 invLocalScaling(1.f/m_localScaling.getX(),1.f/m_localScaling.getY(),1.f/m_localScaling.getZ()); - btVector3 scaledAabbMin,scaledAabbMax; - - ///support negative scaling - scaledAabbMin[0] = m_localScaling.getX() >= 0. ? aabbMin[0] * invLocalScaling[0] : aabbMax[0] * invLocalScaling[0]; - scaledAabbMin[1] = m_localScaling.getY() >= 0. ? aabbMin[1] * invLocalScaling[1] : aabbMax[1] * invLocalScaling[1]; - scaledAabbMin[2] = m_localScaling.getZ() >= 0. ? aabbMin[2] * invLocalScaling[2] : aabbMax[2] * invLocalScaling[2]; - - scaledAabbMax[0] = m_localScaling.getX() <= 0. ? aabbMin[0] * invLocalScaling[0] : aabbMax[0] * invLocalScaling[0]; - scaledAabbMax[1] = m_localScaling.getY() <= 0. ? aabbMin[1] * invLocalScaling[1] : aabbMax[1] * invLocalScaling[1]; - scaledAabbMax[2] = m_localScaling.getZ() <= 0. ? aabbMin[2] * invLocalScaling[2] : aabbMax[2] * invLocalScaling[2]; - - - m_bvhTriMeshShape->processAllTriangles(&scaledCallback,scaledAabbMin,scaledAabbMax); -} - - -void btScaledBvhTriangleMeshShape::getAabb(const btTransform& trans,btVector3& aabbMin,btVector3& aabbMax) const -{ - btVector3 localAabbMin = m_bvhTriMeshShape->getLocalAabbMin(); - btVector3 localAabbMax = m_bvhTriMeshShape->getLocalAabbMax(); - - btVector3 tmpLocalAabbMin = localAabbMin * m_localScaling; - btVector3 tmpLocalAabbMax = localAabbMax * m_localScaling; - - localAabbMin[0] = (m_localScaling.getX() >= 0.) ? tmpLocalAabbMin[0] : tmpLocalAabbMax[0]; - localAabbMin[1] = (m_localScaling.getY() >= 0.) ? tmpLocalAabbMin[1] : tmpLocalAabbMax[1]; - localAabbMin[2] = (m_localScaling.getZ() >= 0.) ? tmpLocalAabbMin[2] : tmpLocalAabbMax[2]; - localAabbMax[0] = (m_localScaling.getX() <= 0.) ? tmpLocalAabbMin[0] : tmpLocalAabbMax[0]; - localAabbMax[1] = (m_localScaling.getY() <= 0.) ? tmpLocalAabbMin[1] : tmpLocalAabbMax[1]; - localAabbMax[2] = (m_localScaling.getZ() <= 0.) ? tmpLocalAabbMin[2] : tmpLocalAabbMax[2]; - - btVector3 localHalfExtents = btScalar(0.5)*(localAabbMax-localAabbMin); - btScalar margin = m_bvhTriMeshShape->getMargin(); - localHalfExtents += btVector3(margin,margin,margin); - btVector3 localCenter = btScalar(0.5)*(localAabbMax+localAabbMin); - - btMatrix3x3 abs_b = trans.getBasis().absolute(); - - btVector3 center = trans(localCenter); - - btVector3 extent = btVector3(abs_b[0].dot(localHalfExtents), - abs_b[1].dot(localHalfExtents), - abs_b[2].dot(localHalfExtents)); - aabbMin = center - extent; - aabbMax = center + extent; - -} - -void btScaledBvhTriangleMeshShape::setLocalScaling(const btVector3& scaling) -{ - m_localScaling = scaling; -} - -const btVector3& btScaledBvhTriangleMeshShape::getLocalScaling() const -{ - return m_localScaling; -} - -void btScaledBvhTriangleMeshShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const -{ - ///don't make this a movable object! -// btAssert(0); -} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h deleted file mode 100644 index d720b1b4f89..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef SCALED_BVH_TRIANGLE_MESH_SHAPE_H -#define SCALED_BVH_TRIANGLE_MESH_SHAPE_H - -#include "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h" - - -///The btScaledBvhTriangleMeshShape allows to instance a scaled version of an existing btBvhTriangleMeshShape. -///Note that each btBvhTriangleMeshShape still can have its own local scaling, independent from this btScaledBvhTriangleMeshShape 'localScaling' -ATTRIBUTE_ALIGNED16(class) btScaledBvhTriangleMeshShape : public btConcaveShape -{ - - - btVector3 m_localScaling; - - btBvhTriangleMeshShape* m_bvhTriMeshShape; - -public: - - - btScaledBvhTriangleMeshShape(btBvhTriangleMeshShape* childShape,const btVector3& localScaling); - - virtual ~btScaledBvhTriangleMeshShape(); - - - virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; - virtual void setLocalScaling(const btVector3& scaling); - virtual const btVector3& getLocalScaling() const; - virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; - - virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const; - - btBvhTriangleMeshShape* getChildShape() - { - return m_bvhTriMeshShape; - } - - const btBvhTriangleMeshShape* getChildShape() const - { - return m_bvhTriMeshShape; - } - - //debugging - virtual const char* getName()const {return "SCALEDBVHTRIANGLEMESH";} - -}; - -#endif //BVH_TRIANGLE_MESH_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btShapeHull.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btShapeHull.cpp deleted file mode 100644 index 3beaf865801..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btShapeHull.cpp +++ /dev/null @@ -1,170 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -//btShapeHull was implemented by John McCutchan. - - -#include "btShapeHull.h" -#include "LinearMath/btConvexHull.h" - -#define NUM_UNITSPHERE_POINTS 42 - -btShapeHull::btShapeHull (const btConvexShape* shape) -{ - m_shape = shape; - m_vertices.clear (); - m_indices.clear(); - m_numIndices = 0; -} - -btShapeHull::~btShapeHull () -{ - m_indices.clear(); - m_vertices.clear (); -} - -bool -btShapeHull::buildHull (btScalar /*margin*/) -{ - int numSampleDirections = NUM_UNITSPHERE_POINTS; - { - int numPDA = m_shape->getNumPreferredPenetrationDirections(); - if (numPDA) - { - for (int i=0;igetPreferredPenetrationDirection(i,norm); - getUnitSpherePoints()[numSampleDirections] = norm; - numSampleDirections++; - } - } - } - - btVector3 supportPoints[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2]; - int i; - for (i = 0; i < numSampleDirections; i++) - { - supportPoints[i] = m_shape->localGetSupportingVertex(getUnitSpherePoints()[i]); - } - - HullDesc hd; - hd.mFlags = QF_TRIANGLES; - hd.mVcount = static_cast(numSampleDirections); - -#ifdef BT_USE_DOUBLE_PRECISION - hd.mVertices = &supportPoints[0]; - hd.mVertexStride = sizeof(btVector3); -#else - hd.mVertices = &supportPoints[0]; - hd.mVertexStride = sizeof (btVector3); -#endif - - HullLibrary hl; - HullResult hr; - if (hl.CreateConvexHull (hd, hr) == QE_FAIL) - { - return false; - } - - m_vertices.resize (static_cast(hr.mNumOutputVertices)); - - - for (i = 0; i < static_cast(hr.mNumOutputVertices); i++) - { - m_vertices[i] = hr.m_OutputVertices[i]; - } - m_numIndices = hr.mNumIndices; - m_indices.resize(static_cast(m_numIndices)); - for (i = 0; i < static_cast(m_numIndices); i++) - { - m_indices[i] = hr.m_Indices[i]; - } - - // free temporary hull result that we just copied - hl.ReleaseResult (hr); - - return true; -} - -int -btShapeHull::numTriangles () const -{ - return static_cast(m_numIndices / 3); -} - -int -btShapeHull::numVertices () const -{ - return m_vertices.size (); -} - -int -btShapeHull::numIndices () const -{ - return static_cast(m_numIndices); -} - - -btVector3* btShapeHull::getUnitSpherePoints() -{ - static btVector3 sUnitSpherePoints[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2] = - { - btVector3(btScalar(0.000000) , btScalar(-0.000000),btScalar(-1.000000)), - btVector3(btScalar(0.723608) , btScalar(-0.525725),btScalar(-0.447219)), - btVector3(btScalar(-0.276388) , btScalar(-0.850649),btScalar(-0.447219)), - btVector3(btScalar(-0.894426) , btScalar(-0.000000),btScalar(-0.447216)), - btVector3(btScalar(-0.276388) , btScalar(0.850649),btScalar(-0.447220)), - btVector3(btScalar(0.723608) , btScalar(0.525725),btScalar(-0.447219)), - btVector3(btScalar(0.276388) , btScalar(-0.850649),btScalar(0.447220)), - btVector3(btScalar(-0.723608) , btScalar(-0.525725),btScalar(0.447219)), - btVector3(btScalar(-0.723608) , btScalar(0.525725),btScalar(0.447219)), - btVector3(btScalar(0.276388) , btScalar(0.850649),btScalar(0.447219)), - btVector3(btScalar(0.894426) , btScalar(0.000000),btScalar(0.447216)), - btVector3(btScalar(-0.000000) , btScalar(0.000000),btScalar(1.000000)), - btVector3(btScalar(0.425323) , btScalar(-0.309011),btScalar(-0.850654)), - btVector3(btScalar(-0.162456) , btScalar(-0.499995),btScalar(-0.850654)), - btVector3(btScalar(0.262869) , btScalar(-0.809012),btScalar(-0.525738)), - btVector3(btScalar(0.425323) , btScalar(0.309011),btScalar(-0.850654)), - btVector3(btScalar(0.850648) , btScalar(-0.000000),btScalar(-0.525736)), - btVector3(btScalar(-0.525730) , btScalar(-0.000000),btScalar(-0.850652)), - btVector3(btScalar(-0.688190) , btScalar(-0.499997),btScalar(-0.525736)), - btVector3(btScalar(-0.162456) , btScalar(0.499995),btScalar(-0.850654)), - btVector3(btScalar(-0.688190) , btScalar(0.499997),btScalar(-0.525736)), - btVector3(btScalar(0.262869) , btScalar(0.809012),btScalar(-0.525738)), - btVector3(btScalar(0.951058) , btScalar(0.309013),btScalar(0.000000)), - btVector3(btScalar(0.951058) , btScalar(-0.309013),btScalar(0.000000)), - btVector3(btScalar(0.587786) , btScalar(-0.809017),btScalar(0.000000)), - btVector3(btScalar(0.000000) , btScalar(-1.000000),btScalar(0.000000)), - btVector3(btScalar(-0.587786) , btScalar(-0.809017),btScalar(0.000000)), - btVector3(btScalar(-0.951058) , btScalar(-0.309013),btScalar(-0.000000)), - btVector3(btScalar(-0.951058) , btScalar(0.309013),btScalar(-0.000000)), - btVector3(btScalar(-0.587786) , btScalar(0.809017),btScalar(-0.000000)), - btVector3(btScalar(-0.000000) , btScalar(1.000000),btScalar(-0.000000)), - btVector3(btScalar(0.587786) , btScalar(0.809017),btScalar(-0.000000)), - btVector3(btScalar(0.688190) , btScalar(-0.499997),btScalar(0.525736)), - btVector3(btScalar(-0.262869) , btScalar(-0.809012),btScalar(0.525738)), - btVector3(btScalar(-0.850648) , btScalar(0.000000),btScalar(0.525736)), - btVector3(btScalar(-0.262869) , btScalar(0.809012),btScalar(0.525738)), - btVector3(btScalar(0.688190) , btScalar(0.499997),btScalar(0.525736)), - btVector3(btScalar(0.525730) , btScalar(0.000000),btScalar(0.850652)), - btVector3(btScalar(0.162456) , btScalar(-0.499995),btScalar(0.850654)), - btVector3(btScalar(-0.425323) , btScalar(-0.309011),btScalar(0.850654)), - btVector3(btScalar(-0.425323) , btScalar(0.309011),btScalar(0.850654)), - btVector3(btScalar(0.162456) , btScalar(0.499995),btScalar(0.850654)) - }; - return sUnitSpherePoints; -} - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btShapeHull.h b/extern/bullet2/BulletCollision/CollisionShapes/btShapeHull.h deleted file mode 100644 index 07b3500f994..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btShapeHull.h +++ /dev/null @@ -1,59 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -///btShapeHull implemented by John McCutchan. - -#ifndef _SHAPE_HULL_H -#define _SHAPE_HULL_H - -#include "LinearMath/btAlignedObjectArray.h" -#include "BulletCollision/CollisionShapes/btConvexShape.h" - - -///The btShapeHull class takes a btConvexShape, builds a simplified convex hull using btConvexHull and provides triangle indices and vertices. -///It can be useful for to simplify a complex convex object and for visualization of a non-polyhedral convex object. -///It approximates the convex hull using the supporting vertex of 42 directions. -class btShapeHull -{ -protected: - - btAlignedObjectArray m_vertices; - btAlignedObjectArray m_indices; - unsigned int m_numIndices; - const btConvexShape* m_shape; - - static btVector3* getUnitSpherePoints(); - -public: - btShapeHull (const btConvexShape* shape); - ~btShapeHull (); - - bool buildHull (btScalar margin); - - int numTriangles () const; - int numVertices () const; - int numIndices () const; - - const btVector3* getVertexPointer() const - { - return &m_vertices[0]; - } - const unsigned int* getIndexPointer() const - { - return &m_indices[0]; - } -}; - -#endif //_SHAPE_HULL_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btSphereShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btSphereShape.cpp deleted file mode 100644 index b9a736c0fdd..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btSphereShape.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btSphereShape.h" -#include "BulletCollision/CollisionShapes/btCollisionMargin.h" - -#include "LinearMath/btQuaternion.h" - -btVector3 btSphereShape::localGetSupportingVertexWithoutMargin(const btVector3& vec)const -{ - (void)vec; - return btVector3(btScalar(0.),btScalar(0.),btScalar(0.)); -} - -void btSphereShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const -{ - (void)vectors; - - for (int i=0;iprocessTriangle(triangle,0,0); - - triangle[0] = projectedCenter - tangentDir0*radius - tangentDir1*radius; - triangle[1] = projectedCenter - tangentDir0*radius + tangentDir1*radius; - triangle[2] = projectedCenter + tangentDir0*radius + tangentDir1*radius; - - callback->processTriangle(triangle,0,1); - -} - -void btStaticPlaneShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const -{ - (void)mass; - - //moving concave objects not supported - - inertia.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); -} - -void btStaticPlaneShape::setLocalScaling(const btVector3& scaling) -{ - m_localScaling = scaling; -} -const btVector3& btStaticPlaneShape::getLocalScaling() const -{ - return m_localScaling; -} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btStaticPlaneShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btStaticPlaneShape.h deleted file mode 100644 index beb53ef33a1..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btStaticPlaneShape.h +++ /dev/null @@ -1,103 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef STATIC_PLANE_SHAPE_H -#define STATIC_PLANE_SHAPE_H - -#include "btConcaveShape.h" - - -///The btStaticPlaneShape simulates an infinite non-moving (static) collision plane. -ATTRIBUTE_ALIGNED16(class) btStaticPlaneShape : public btConcaveShape -{ -protected: - btVector3 m_localAabbMin; - btVector3 m_localAabbMax; - - btVector3 m_planeNormal; - btScalar m_planeConstant; - btVector3 m_localScaling; - -public: - btStaticPlaneShape(const btVector3& planeNormal,btScalar planeConstant); - - virtual ~btStaticPlaneShape(); - - - virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; - - virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const; - - virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; - - virtual void setLocalScaling(const btVector3& scaling); - virtual const btVector3& getLocalScaling() const; - - const btVector3& getPlaneNormal() const - { - return m_planeNormal; - } - - const btScalar& getPlaneConstant() const - { - return m_planeConstant; - } - - //debugging - virtual const char* getName()const {return "STATICPLANE";} - - virtual int calculateSerializeBufferSize() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; - - -}; - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btStaticPlaneShapeData -{ - btCollisionShapeData m_collisionShapeData; - - btVector3FloatData m_localScaling; - btVector3FloatData m_planeNormal; - float m_planeConstant; - char m_pad[4]; -}; - - -SIMD_FORCE_INLINE int btStaticPlaneShape::calculateSerializeBufferSize() const -{ - return sizeof(btStaticPlaneShapeData); -} - -///fills the dataBuffer and returns the struct name (and 0 on failure) -SIMD_FORCE_INLINE const char* btStaticPlaneShape::serialize(void* dataBuffer, btSerializer* serializer) const -{ - btStaticPlaneShapeData* planeData = (btStaticPlaneShapeData*) dataBuffer; - btCollisionShape::serialize(&planeData->m_collisionShapeData,serializer); - - m_localScaling.serializeFloat(planeData->m_localScaling); - m_planeNormal.serializeFloat(planeData->m_planeNormal); - planeData->m_planeConstant = float(m_planeConstant); - - return "btStaticPlaneShapeData"; -} - - -#endif //STATIC_PLANE_SHAPE_H - - - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp deleted file mode 100644 index 8624531ab52..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp +++ /dev/null @@ -1,331 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btStridingMeshInterface.h" -#include "LinearMath/btSerializer.h" - -btStridingMeshInterface::~btStridingMeshInterface() -{ - -} - - -void btStridingMeshInterface::InternalProcessAllTriangles(btInternalTriangleIndexCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const -{ - (void)aabbMin; - (void)aabbMax; - int numtotalphysicsverts = 0; - int part,graphicssubparts = getNumSubParts(); - const unsigned char * vertexbase; - const unsigned char * indexbase; - int indexstride; - PHY_ScalarType type; - PHY_ScalarType gfxindextype; - int stride,numverts,numtriangles; - int gfxindex; - btVector3 triangle[3]; - - btVector3 meshScaling = getScaling(); - - ///if the number of parts is big, the performance might drop due to the innerloop switch on indextype - for (part=0;partinternalProcessTriangleIndex(triangle,part,gfxindex); - } - break; - } - case PHY_SHORT: - { - for (gfxindex=0;gfxindexinternalProcessTriangleIndex(triangle,part,gfxindex); - } - break; - } - default: - btAssert((gfxindextype == PHY_INTEGER) || (gfxindextype == PHY_SHORT)); - } - break; - } - - case PHY_DOUBLE: - { - double* graphicsbase; - - switch (gfxindextype) - { - case PHY_INTEGER: - { - for (gfxindex=0;gfxindexinternalProcessTriangleIndex(triangle,part,gfxindex); - } - break; - } - case PHY_SHORT: - { - for (gfxindex=0;gfxindexinternalProcessTriangleIndex(triangle,part,gfxindex); - } - break; - } - default: - btAssert((gfxindextype == PHY_INTEGER) || (gfxindextype == PHY_SHORT)); - } - break; - } - default: - btAssert((type == PHY_FLOAT) || (type == PHY_DOUBLE)); - } - - unLockReadOnlyVertexBase(part); - } -} - -void btStridingMeshInterface::calculateAabbBruteForce(btVector3& aabbMin,btVector3& aabbMax) -{ - - struct AabbCalculationCallback : public btInternalTriangleIndexCallback - { - btVector3 m_aabbMin; - btVector3 m_aabbMax; - - AabbCalculationCallback() - { - m_aabbMin.setValue(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); - m_aabbMax.setValue(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); - } - - virtual void internalProcessTriangleIndex(btVector3* triangle,int partId,int triangleIndex) - { - (void)partId; - (void)triangleIndex; - - m_aabbMin.setMin(triangle[0]); - m_aabbMax.setMax(triangle[0]); - m_aabbMin.setMin(triangle[1]); - m_aabbMax.setMax(triangle[1]); - m_aabbMin.setMin(triangle[2]); - m_aabbMax.setMax(triangle[2]); - } - }; - - //first calculate the total aabb for all triangles - AabbCalculationCallback aabbCallback; - aabbMin.setValue(btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT),btScalar(-BT_LARGE_FLOAT)); - aabbMax.setValue(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); - InternalProcessAllTriangles(&aabbCallback,aabbMin,aabbMax); - - aabbMin = aabbCallback.m_aabbMin; - aabbMax = aabbCallback.m_aabbMax; -} - - - -///fills the dataBuffer and returns the struct name (and 0 on failure) -const char* btStridingMeshInterface::serialize(void* dataBuffer, btSerializer* serializer) const -{ - btStridingMeshInterfaceData* trimeshData = (btStridingMeshInterfaceData*) dataBuffer; - - trimeshData->m_numMeshParts = getNumSubParts(); - - //void* uniquePtr = 0; - - trimeshData->m_meshPartsPtr = 0; - - if (trimeshData->m_numMeshParts) - { - btChunk* chunk = serializer->allocate(sizeof(btMeshPartData),trimeshData->m_numMeshParts); - btMeshPartData* memPtr = (btMeshPartData*)chunk->m_oldPtr; - trimeshData->m_meshPartsPtr = (btMeshPartData *)serializer->getUniquePointer(memPtr); - - - // int numtotalphysicsverts = 0; - int part,graphicssubparts = getNumSubParts(); - const unsigned char * vertexbase; - const unsigned char * indexbase; - int indexstride; - PHY_ScalarType type; - PHY_ScalarType gfxindextype; - int stride,numverts,numtriangles; - int gfxindex; - // btVector3 triangle[3]; - - btVector3 meshScaling = getScaling(); - - ///if the number of parts is big, the performance might drop due to the innerloop switch on indextype - for (part=0;partm_numTriangles = numtriangles;//indices = 3*numtriangles - memPtr->m_numVertices = numverts; - memPtr->m_indices16 = 0; - memPtr->m_indices32 = 0; - memPtr->m_3indices16 = 0; - memPtr->m_vertices3f = 0; - memPtr->m_vertices3d = 0; - - switch (gfxindextype) - { - case PHY_INTEGER: - { - int numindices = numtriangles*3; - - if (numindices) - { - btChunk* chunk = serializer->allocate(sizeof(btIntIndexData),numindices); - btIntIndexData* tmpIndices = (btIntIndexData*)chunk->m_oldPtr; - memPtr->m_indices32 = (btIntIndexData*)serializer->getUniquePointer(tmpIndices); - for (gfxindex=0;gfxindexfinalizeChunk(chunk,"btIntIndexData",BT_ARRAY_CODE,(void*)chunk->m_oldPtr); - } - break; - } - case PHY_SHORT: - { - if (numtriangles) - { - btChunk* chunk = serializer->allocate(sizeof(btShortIntIndexTripletData),numtriangles); - btShortIntIndexTripletData* tmpIndices = (btShortIntIndexTripletData*)chunk->m_oldPtr; - memPtr->m_3indices16 = (btShortIntIndexTripletData*) serializer->getUniquePointer(tmpIndices); - for (gfxindex=0;gfxindexfinalizeChunk(chunk,"btShortIntIndexTripletData",BT_ARRAY_CODE,(void*)chunk->m_oldPtr); - } - break; - } - default: - { - btAssert(0); - //unknown index type - } - } - - switch (type) - { - case PHY_FLOAT: - { - float* graphicsbase; - - if (numverts) - { - btChunk* chunk = serializer->allocate(sizeof(btVector3FloatData),numverts); - btVector3FloatData* tmpVertices = (btVector3FloatData*) chunk->m_oldPtr; - memPtr->m_vertices3f = (btVector3FloatData *)serializer->getUniquePointer(tmpVertices); - for (int i=0;ifinalizeChunk(chunk,"btVector3FloatData",BT_ARRAY_CODE,(void*)chunk->m_oldPtr); - } - break; - } - - case PHY_DOUBLE: - { - if (numverts) - { - btChunk* chunk = serializer->allocate(sizeof(btVector3DoubleData),numverts); - btVector3DoubleData* tmpVertices = (btVector3DoubleData*) chunk->m_oldPtr; - memPtr->m_vertices3d = (btVector3DoubleData *) serializer->getUniquePointer(tmpVertices); - for (int i=0;ifinalizeChunk(chunk,"btVector3DoubleData",BT_ARRAY_CODE,(void*)chunk->m_oldPtr); - } - break; - } - - default: - btAssert((type == PHY_FLOAT) || (type == PHY_DOUBLE)); - } - - unLockReadOnlyVertexBase(part); - } - - serializer->finalizeChunk(chunk,"btMeshPartData",BT_ARRAY_CODE,chunk->m_oldPtr); - } - - - m_scaling.serializeFloat(trimeshData->m_scaling); - return "btStridingMeshInterfaceData"; -} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btStridingMeshInterface.h b/extern/bullet2/BulletCollision/CollisionShapes/btStridingMeshInterface.h deleted file mode 100644 index e0c1b54f8a8..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btStridingMeshInterface.h +++ /dev/null @@ -1,154 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef STRIDING_MESHINTERFACE_H -#define STRIDING_MESHINTERFACE_H - -#include "LinearMath/btVector3.h" -#include "btTriangleCallback.h" -#include "btConcaveShape.h" - - - - - -/// The btStridingMeshInterface is the interface class for high performance generic access to triangle meshes, used in combination with btBvhTriangleMeshShape and some other collision shapes. -/// Using index striding of 3*sizeof(integer) it can use triangle arrays, using index striding of 1*sizeof(integer) it can handle triangle strips. -/// It allows for sharing graphics and collision meshes. Also it provides locking/unlocking of graphics meshes that are in gpu memory. -class btStridingMeshInterface -{ - protected: - - btVector3 m_scaling; - - public: - btStridingMeshInterface() :m_scaling(btScalar(1.),btScalar(1.),btScalar(1.)) - { - - } - - virtual ~btStridingMeshInterface(); - - - - virtual void InternalProcessAllTriangles(btInternalTriangleIndexCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const; - - ///brute force method to calculate aabb - void calculateAabbBruteForce(btVector3& aabbMin,btVector3& aabbMax); - - /// get read and write access to a subpart of a triangle mesh - /// this subpart has a continuous array of vertices and indices - /// in this way the mesh can be handled as chunks of memory with striding - /// very similar to OpenGL vertexarray support - /// make a call to unLockVertexBase when the read and write access is finished - virtual void getLockedVertexIndexBase(unsigned char **vertexbase, int& numverts,PHY_ScalarType& type, int& stride,unsigned char **indexbase,int & indexstride,int& numfaces,PHY_ScalarType& indicestype,int subpart=0)=0; - - virtual void getLockedReadOnlyVertexIndexBase(const unsigned char **vertexbase, int& numverts,PHY_ScalarType& type, int& stride,const unsigned char **indexbase,int & indexstride,int& numfaces,PHY_ScalarType& indicestype,int subpart=0) const=0; - - /// unLockVertexBase finishes the access to a subpart of the triangle mesh - /// make a call to unLockVertexBase when the read and write access (using getLockedVertexIndexBase) is finished - virtual void unLockVertexBase(int subpart)=0; - - virtual void unLockReadOnlyVertexBase(int subpart) const=0; - - - /// getNumSubParts returns the number of seperate subparts - /// each subpart has a continuous array of vertices and indices - virtual int getNumSubParts() const=0; - - virtual void preallocateVertices(int numverts)=0; - virtual void preallocateIndices(int numindices)=0; - - virtual bool hasPremadeAabb() const { return false; } - virtual void setPremadeAabb(const btVector3& aabbMin, const btVector3& aabbMax ) const - { - (void) aabbMin; - (void) aabbMax; - } - virtual void getPremadeAabb(btVector3* aabbMin, btVector3* aabbMax ) const - { - (void) aabbMin; - (void) aabbMax; - } - - const btVector3& getScaling() const { - return m_scaling; - } - void setScaling(const btVector3& scaling) - { - m_scaling = scaling; - } - - virtual int calculateSerializeBufferSize() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; - - -}; - -struct btIntIndexData -{ - int m_value; -}; - -struct btShortIntIndexData -{ - short m_value; - char m_pad[2]; -}; - -struct btShortIntIndexTripletData -{ - short m_values[3]; - char m_pad[2]; -}; - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btMeshPartData -{ - btVector3FloatData *m_vertices3f; - btVector3DoubleData *m_vertices3d; - - btIntIndexData *m_indices32; - btShortIntIndexTripletData *m_3indices16; - - btShortIntIndexData *m_indices16;//backwards compatibility - - int m_numTriangles;//length of m_indices = m_numTriangles - int m_numVertices; -}; - - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btStridingMeshInterfaceData -{ - btMeshPartData *m_meshPartsPtr; - btVector3FloatData m_scaling; - int m_numMeshParts; - char m_padding[4]; -}; - - - - -SIMD_FORCE_INLINE int btStridingMeshInterface::calculateSerializeBufferSize() const -{ - return sizeof(btStridingMeshInterfaceData); -} - - - -#endif //STRIDING_MESHINTERFACE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTetrahedronShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btTetrahedronShape.cpp deleted file mode 100644 index 52f346bf726..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btTetrahedronShape.cpp +++ /dev/null @@ -1,218 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btTetrahedronShape.h" -#include "LinearMath/btMatrix3x3.h" - -btBU_Simplex1to4::btBU_Simplex1to4() : btPolyhedralConvexAabbCachingShape (), -m_numVertices(0) -{ - m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; -} - -btBU_Simplex1to4::btBU_Simplex1to4(const btVector3& pt0) : btPolyhedralConvexAabbCachingShape (), -m_numVertices(0) -{ - m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; - addVertex(pt0); -} - -btBU_Simplex1to4::btBU_Simplex1to4(const btVector3& pt0,const btVector3& pt1) : btPolyhedralConvexAabbCachingShape (), -m_numVertices(0) -{ - m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; - addVertex(pt0); - addVertex(pt1); -} - -btBU_Simplex1to4::btBU_Simplex1to4(const btVector3& pt0,const btVector3& pt1,const btVector3& pt2) : btPolyhedralConvexAabbCachingShape (), -m_numVertices(0) -{ - m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; - addVertex(pt0); - addVertex(pt1); - addVertex(pt2); -} - -btBU_Simplex1to4::btBU_Simplex1to4(const btVector3& pt0,const btVector3& pt1,const btVector3& pt2,const btVector3& pt3) : btPolyhedralConvexAabbCachingShape (), -m_numVertices(0) -{ - m_shapeType = TETRAHEDRAL_SHAPE_PROXYTYPE; - addVertex(pt0); - addVertex(pt1); - addVertex(pt2); - addVertex(pt3); -} - - -void btBU_Simplex1to4::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const -{ -#if 1 - btPolyhedralConvexAabbCachingShape::getAabb(t,aabbMin,aabbMax); -#else - aabbMin.setValue(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT); - aabbMax.setValue(-BT_LARGE_FLOAT,-BT_LARGE_FLOAT,-BT_LARGE_FLOAT); - - //just transform the vertices in worldspace, and take their AABB - for (int i=0;iprocessAllTriangles(&triBuf,aabbMin, aabbMax); -/// for (int i=0;i m_triangleBuffer; - -public: - - - virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex); - - int getNumTriangles() const - { - return int(m_triangleBuffer.size()); - } - - const btTriangle& getTriangle(int index) const - { - return m_triangleBuffer[index]; - } - - void clearBuffer() - { - m_triangleBuffer.clear(); - } - -}; - - -#endif //BT_TRIANGLE_BUFFER_H - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleCallback.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleCallback.cpp deleted file mode 100644 index f558bf6d241..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleCallback.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btTriangleCallback.h" - -btTriangleCallback::~btTriangleCallback() -{ - -} - - -btInternalTriangleIndexCallback::~btInternalTriangleIndexCallback() -{ - -} - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleCallback.h b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleCallback.h deleted file mode 100644 index 0499702b05b..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleCallback.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef TRIANGLE_CALLBACK_H -#define TRIANGLE_CALLBACK_H - -#include "LinearMath/btVector3.h" - - -///The btTriangleCallback provides a callback for each overlapping triangle when calling processAllTriangles. -///This callback is called by processAllTriangles for all btConcaveShape derived class, such as btBvhTriangleMeshShape, btStaticPlaneShape and btHeightfieldTerrainShape. -class btTriangleCallback -{ -public: - - virtual ~btTriangleCallback(); - virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex) = 0; -}; - -class btInternalTriangleIndexCallback -{ -public: - - virtual ~btInternalTriangleIndexCallback(); - virtual void internalProcessTriangleIndex(btVector3* triangle,int partId,int triangleIndex) = 0; -}; - - - -#endif //TRIANGLE_CALLBACK_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp deleted file mode 100644 index a665024cb61..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp +++ /dev/null @@ -1,95 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btTriangleIndexVertexArray.h" - -btTriangleIndexVertexArray::btTriangleIndexVertexArray(int numTriangles,int* triangleIndexBase,int triangleIndexStride,int numVertices,btScalar* vertexBase,int vertexStride) -: m_hasAabb(0) -{ - btIndexedMesh mesh; - - mesh.m_numTriangles = numTriangles; - mesh.m_triangleIndexBase = (const unsigned char *)triangleIndexBase; - mesh.m_triangleIndexStride = triangleIndexStride; - mesh.m_numVertices = numVertices; - mesh.m_vertexBase = (const unsigned char *)vertexBase; - mesh.m_vertexStride = vertexStride; - - addIndexedMesh(mesh); - -} - -btTriangleIndexVertexArray::~btTriangleIndexVertexArray() -{ - -} - -void btTriangleIndexVertexArray::getLockedVertexIndexBase(unsigned char **vertexbase, int& numverts,PHY_ScalarType& type, int& vertexStride,unsigned char **indexbase,int & indexstride,int& numfaces,PHY_ScalarType& indicestype,int subpart) -{ - btAssert(subpart< getNumSubParts() ); - - btIndexedMesh& mesh = m_indexedMeshes[subpart]; - - numverts = mesh.m_numVertices; - (*vertexbase) = (unsigned char *) mesh.m_vertexBase; - - type = mesh.m_vertexType; - - vertexStride = mesh.m_vertexStride; - - numfaces = mesh.m_numTriangles; - - (*indexbase) = (unsigned char *)mesh.m_triangleIndexBase; - indexstride = mesh.m_triangleIndexStride; - indicestype = mesh.m_indexType; -} - -void btTriangleIndexVertexArray::getLockedReadOnlyVertexIndexBase(const unsigned char **vertexbase, int& numverts,PHY_ScalarType& type, int& vertexStride,const unsigned char **indexbase,int & indexstride,int& numfaces,PHY_ScalarType& indicestype,int subpart) const -{ - const btIndexedMesh& mesh = m_indexedMeshes[subpart]; - - numverts = mesh.m_numVertices; - (*vertexbase) = (const unsigned char *)mesh.m_vertexBase; - - type = mesh.m_vertexType; - - vertexStride = mesh.m_vertexStride; - - numfaces = mesh.m_numTriangles; - (*indexbase) = (const unsigned char *)mesh.m_triangleIndexBase; - indexstride = mesh.m_triangleIndexStride; - indicestype = mesh.m_indexType; -} - -bool btTriangleIndexVertexArray::hasPremadeAabb() const -{ - return (m_hasAabb == 1); -} - - -void btTriangleIndexVertexArray::setPremadeAabb(const btVector3& aabbMin, const btVector3& aabbMax ) const -{ - m_aabbMin = aabbMin; - m_aabbMax = aabbMax; - m_hasAabb = 1; // this is intentionally an int see notes in header -} - -void btTriangleIndexVertexArray::getPremadeAabb(btVector3* aabbMin, btVector3* aabbMax ) const -{ - *aabbMin = m_aabbMin; - *aabbMax = m_aabbMax; -} - - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h deleted file mode 100644 index c64ea6e7043..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h +++ /dev/null @@ -1,131 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BT_TRIANGLE_INDEX_VERTEX_ARRAY_H -#define BT_TRIANGLE_INDEX_VERTEX_ARRAY_H - -#include "btStridingMeshInterface.h" -#include "LinearMath/btAlignedObjectArray.h" -#include "LinearMath/btScalar.h" - - -///The btIndexedMesh indexes a single vertex and index array. Multiple btIndexedMesh objects can be passed into a btTriangleIndexVertexArray using addIndexedMesh. -///Instead of the number of indices, we pass the number of triangles. -ATTRIBUTE_ALIGNED16( struct) btIndexedMesh -{ - BT_DECLARE_ALIGNED_ALLOCATOR(); - - int m_numTriangles; - const unsigned char * m_triangleIndexBase; - int m_triangleIndexStride; - int m_numVertices; - const unsigned char * m_vertexBase; - int m_vertexStride; - - // The index type is set when adding an indexed mesh to the - // btTriangleIndexVertexArray, do not set it manually - PHY_ScalarType m_indexType; - - // The vertex type has a default type similar to Bullet's precision mode (float or double) - // but can be set manually if you for example run Bullet with double precision but have - // mesh data in single precision.. - PHY_ScalarType m_vertexType; - - - btIndexedMesh() - :m_indexType(PHY_INTEGER), -#ifdef BT_USE_DOUBLE_PRECISION - m_vertexType(PHY_DOUBLE) -#else // BT_USE_DOUBLE_PRECISION - m_vertexType(PHY_FLOAT) -#endif // BT_USE_DOUBLE_PRECISION - { - } -} -; - - -typedef btAlignedObjectArray IndexedMeshArray; - -///The btTriangleIndexVertexArray allows to access multiple triangle meshes, by indexing into existing triangle/index arrays. -///Additional meshes can be added using addIndexedMesh -///No duplcate is made of the vertex/index data, it only indexes into external vertex/index arrays. -///So keep those arrays around during the lifetime of this btTriangleIndexVertexArray. -ATTRIBUTE_ALIGNED16( class) btTriangleIndexVertexArray : public btStridingMeshInterface -{ -protected: - IndexedMeshArray m_indexedMeshes; - int m_pad[2]; - mutable int m_hasAabb; // using int instead of bool to maintain alignment - mutable btVector3 m_aabbMin; - mutable btVector3 m_aabbMax; - -public: - - BT_DECLARE_ALIGNED_ALLOCATOR(); - - btTriangleIndexVertexArray() : m_hasAabb(0) - { - } - - virtual ~btTriangleIndexVertexArray(); - - //just to be backwards compatible - btTriangleIndexVertexArray(int numTriangles,int* triangleIndexBase,int triangleIndexStride,int numVertices,btScalar* vertexBase,int vertexStride); - - void addIndexedMesh(const btIndexedMesh& mesh, PHY_ScalarType indexType = PHY_INTEGER) - { - m_indexedMeshes.push_back(mesh); - m_indexedMeshes[m_indexedMeshes.size()-1].m_indexType = indexType; - } - - - virtual void getLockedVertexIndexBase(unsigned char **vertexbase, int& numverts,PHY_ScalarType& type, int& vertexStride,unsigned char **indexbase,int & indexstride,int& numfaces,PHY_ScalarType& indicestype,int subpart=0); - - virtual void getLockedReadOnlyVertexIndexBase(const unsigned char **vertexbase, int& numverts,PHY_ScalarType& type, int& vertexStride,const unsigned char **indexbase,int & indexstride,int& numfaces,PHY_ScalarType& indicestype,int subpart=0) const; - - /// unLockVertexBase finishes the access to a subpart of the triangle mesh - /// make a call to unLockVertexBase when the read and write access (using getLockedVertexIndexBase) is finished - virtual void unLockVertexBase(int subpart) {(void)subpart;} - - virtual void unLockReadOnlyVertexBase(int subpart) const {(void)subpart;} - - /// getNumSubParts returns the number of seperate subparts - /// each subpart has a continuous array of vertices and indices - virtual int getNumSubParts() const { - return (int)m_indexedMeshes.size(); - } - - IndexedMeshArray& getIndexedMeshArray() - { - return m_indexedMeshes; - } - - const IndexedMeshArray& getIndexedMeshArray() const - { - return m_indexedMeshes; - } - - virtual void preallocateVertices(int numverts){(void) numverts;} - virtual void preallocateIndices(int numindices){(void) numindices;} - - virtual bool hasPremadeAabb() const; - virtual void setPremadeAabb(const btVector3& aabbMin, const btVector3& aabbMax ) const; - virtual void getPremadeAabb(btVector3* aabbMin, btVector3* aabbMax ) const; - -} -; - -#endif //BT_TRIANGLE_INDEX_VERTEX_ARRAY_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp deleted file mode 100644 index dc562941ad6..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -///This file was created by Alex Silverman - -#include "btTriangleIndexVertexMaterialArray.h" - -btTriangleIndexVertexMaterialArray::btTriangleIndexVertexMaterialArray(int numTriangles,int* triangleIndexBase,int triangleIndexStride, - int numVertices,btScalar* vertexBase,int vertexStride, - int numMaterials, unsigned char* materialBase, int materialStride, - int* triangleMaterialsBase, int materialIndexStride) : -btTriangleIndexVertexArray(numTriangles, triangleIndexBase, triangleIndexStride, numVertices, vertexBase, vertexStride) -{ - btMaterialProperties mat; - - mat.m_numMaterials = numMaterials; - mat.m_materialBase = materialBase; - mat.m_materialStride = materialStride; -#ifdef BT_USE_DOUBLE_PRECISION - mat.m_materialType = PHY_DOUBLE; -#else - mat.m_materialType = PHY_FLOAT; -#endif - - mat.m_numTriangles = numTriangles; - mat.m_triangleMaterialsBase = (unsigned char *)triangleMaterialsBase; - mat.m_triangleMaterialStride = materialIndexStride; - mat.m_triangleType = PHY_INTEGER; - - addMaterialProperties(mat); -} - - -void btTriangleIndexVertexMaterialArray::getLockedMaterialBase(unsigned char **materialBase, int& numMaterials, PHY_ScalarType& materialType, int& materialStride, - unsigned char ** triangleMaterialBase, int& numTriangles, int& triangleMaterialStride, PHY_ScalarType& triangleType, int subpart) -{ - btAssert(subpart< getNumSubParts() ); - - btMaterialProperties& mats = m_materials[subpart]; - - numMaterials = mats.m_numMaterials; - (*materialBase) = (unsigned char *) mats.m_materialBase; -#ifdef BT_USE_DOUBLE_PRECISION - materialType = PHY_DOUBLE; -#else - materialType = PHY_FLOAT; -#endif - materialStride = mats.m_materialStride; - - numTriangles = mats.m_numTriangles; - (*triangleMaterialBase) = (unsigned char *)mats.m_triangleMaterialsBase; - triangleMaterialStride = mats.m_triangleMaterialStride; - triangleType = mats.m_triangleType; -} - -void btTriangleIndexVertexMaterialArray::getLockedReadOnlyMaterialBase(const unsigned char **materialBase, int& numMaterials, PHY_ScalarType& materialType, int& materialStride, - const unsigned char ** triangleMaterialBase, int& numTriangles, int& triangleMaterialStride, PHY_ScalarType& triangleType, int subpart) -{ - btMaterialProperties& mats = m_materials[subpart]; - - numMaterials = mats.m_numMaterials; - (*materialBase) = (const unsigned char *) mats.m_materialBase; -#ifdef BT_USE_DOUBLE_PRECISION - materialType = PHY_DOUBLE; -#else - materialType = PHY_FLOAT; -#endif - materialStride = mats.m_materialStride; - - numTriangles = mats.m_numTriangles; - (*triangleMaterialBase) = (const unsigned char *)mats.m_triangleMaterialsBase; - triangleMaterialStride = mats.m_triangleMaterialStride; - triangleType = mats.m_triangleType; -} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h deleted file mode 100644 index ba4f7b46076..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h +++ /dev/null @@ -1,84 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -///This file was created by Alex Silverman - -#ifndef BT_MULTIMATERIAL_TRIANGLE_INDEX_VERTEX_ARRAY_H -#define BT_MULTIMATERIAL_TRIANGLE_INDEX_VERTEX_ARRAY_H - -#include "btTriangleIndexVertexArray.h" - - -ATTRIBUTE_ALIGNED16( struct) btMaterialProperties -{ - ///m_materialBase ==========> 2 btScalar values make up one material, friction then restitution - int m_numMaterials; - const unsigned char * m_materialBase; - int m_materialStride; - PHY_ScalarType m_materialType; - ///m_numTriangles <=========== This exists in the btIndexedMesh object for the same subpart, but since we're - /// padding the structure, it can be reproduced at no real cost - ///m_triangleMaterials =====> 1 integer value makes up one entry - /// eg: m_triangleMaterials[1] = 5; // This will set triangle 2 to use material 5 - int m_numTriangles; - const unsigned char * m_triangleMaterialsBase; - int m_triangleMaterialStride; - ///m_triangleType <========== Automatically set in addMaterialProperties - PHY_ScalarType m_triangleType; -}; - -typedef btAlignedObjectArray MaterialArray; - -///Teh btTriangleIndexVertexMaterialArray is built on TriangleIndexVertexArray -///The addition of a material array allows for the utilization of the partID and -///triangleIndex that are returned in the ContactAddedCallback. As with -///TriangleIndexVertexArray, no duplicate is made of the material data, so it -///is the users responsibility to maintain the array during the lifetime of the -///TriangleIndexVertexMaterialArray. -ATTRIBUTE_ALIGNED16(class) btTriangleIndexVertexMaterialArray : public btTriangleIndexVertexArray -{ -protected: - MaterialArray m_materials; - -public: - BT_DECLARE_ALIGNED_ALLOCATOR(); - - btTriangleIndexVertexMaterialArray() - { - } - - btTriangleIndexVertexMaterialArray(int numTriangles,int* triangleIndexBase,int triangleIndexStride, - int numVertices,btScalar* vertexBase,int vertexStride, - int numMaterials, unsigned char* materialBase, int materialStride, - int* triangleMaterialsBase, int materialIndexStride); - - virtual ~btTriangleIndexVertexMaterialArray() {} - - void addMaterialProperties(const btMaterialProperties& mat, PHY_ScalarType triangleType = PHY_INTEGER) - { - m_materials.push_back(mat); - m_materials[m_materials.size()-1].m_triangleType = triangleType; - } - - virtual void getLockedMaterialBase(unsigned char **materialBase, int& numMaterials, PHY_ScalarType& materialType, int& materialStride, - unsigned char ** triangleMaterialBase, int& numTriangles, int& triangleMaterialStride, PHY_ScalarType& triangleType ,int subpart = 0); - - virtual void getLockedReadOnlyMaterialBase(const unsigned char **materialBase, int& numMaterials, PHY_ScalarType& materialType, int& materialStride, - const unsigned char ** triangleMaterialBase, int& numTriangles, int& triangleMaterialStride, PHY_ScalarType& triangleType, int subpart = 0); - -} -; - -#endif //BT_MULTIMATERIAL_TRIANGLE_INDEX_VERTEX_ARRAY_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleInfoMap.h b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleInfoMap.h deleted file mode 100644 index 282a7702e80..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleInfoMap.h +++ /dev/null @@ -1,238 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2010 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef _BT_TRIANGLE_INFO_MAP_H -#define _BT_TRIANGLE_INFO_MAP_H - - -#include "LinearMath/btHashMap.h" -#include "LinearMath/btSerializer.h" - - -///for btTriangleInfo m_flags -#define TRI_INFO_V0V1_CONVEX 1 -#define TRI_INFO_V1V2_CONVEX 2 -#define TRI_INFO_V2V0_CONVEX 4 - -#define TRI_INFO_V0V1_SWAP_NORMALB 8 -#define TRI_INFO_V1V2_SWAP_NORMALB 16 -#define TRI_INFO_V2V0_SWAP_NORMALB 32 - - -///The btTriangleInfo structure stores information to adjust collision normals to avoid collisions against internal edges -///it can be generated using -struct btTriangleInfo -{ - btTriangleInfo() - { - m_edgeV0V1Angle = SIMD_2_PI; - m_edgeV1V2Angle = SIMD_2_PI; - m_edgeV2V0Angle = SIMD_2_PI; - m_flags=0; - } - - int m_flags; - - btScalar m_edgeV0V1Angle; - btScalar m_edgeV1V2Angle; - btScalar m_edgeV2V0Angle; - -}; - -typedef btHashMap btInternalTriangleInfoMap; - - -///The btTriangleInfoMap stores edge angle information for some triangles. You can compute this information yourself or using btGenerateInternalEdgeInfo. -struct btTriangleInfoMap : public btInternalTriangleInfoMap -{ - btScalar m_convexEpsilon;///used to determine if an edge or contact normal is convex, using the dot product - btScalar m_planarEpsilon; ///used to determine if a triangle edge is planar with zero angle - btScalar m_equalVertexThreshold; ///used to compute connectivity: if the distance between two vertices is smaller than m_equalVertexThreshold, they are considered to be 'shared' - btScalar m_edgeDistanceThreshold; ///used to determine edge contacts: if the closest distance between a contact point and an edge is smaller than this distance threshold it is considered to "hit the edge" - btScalar m_zeroAreaThreshold; ///used to determine if a triangle is degenerate (length squared of cross product of 2 triangle edges < threshold) - - - btTriangleInfoMap() - { - m_convexEpsilon = 0.00f; - m_planarEpsilon = 0.0001f; - m_equalVertexThreshold = btScalar(0.0001)*btScalar(0.0001); - m_edgeDistanceThreshold = btScalar(0.1); - m_zeroAreaThreshold = btScalar(0.0001)*btScalar(0.0001); - } - virtual ~btTriangleInfoMap() {} - - virtual int calculateSerializeBufferSize() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; - - void deSerialize(struct btTriangleInfoMapData& data); - -}; - -struct btTriangleInfoData -{ - int m_flags; - float m_edgeV0V1Angle; - float m_edgeV1V2Angle; - float m_edgeV2V0Angle; -}; - -struct btTriangleInfoMapData -{ - int *m_hashTablePtr; - int *m_nextPtr; - btTriangleInfoData *m_valueArrayPtr; - int *m_keyArrayPtr; - - float m_convexEpsilon; - float m_planarEpsilon; - float m_equalVertexThreshold; - float m_edgeDistanceThreshold; - float m_zeroAreaThreshold; - - int m_nextSize; - int m_hashTableSize; - int m_numValues; - int m_numKeys; - char m_padding[4]; -}; - -SIMD_FORCE_INLINE int btTriangleInfoMap::calculateSerializeBufferSize() const -{ - return sizeof(btTriangleInfoMapData); -} - -///fills the dataBuffer and returns the struct name (and 0 on failure) -SIMD_FORCE_INLINE const char* btTriangleInfoMap::serialize(void* dataBuffer, btSerializer* serializer) const -{ - btTriangleInfoMapData* tmapData = (btTriangleInfoMapData*) dataBuffer; - tmapData->m_convexEpsilon = m_convexEpsilon; - tmapData->m_planarEpsilon = m_planarEpsilon; - tmapData->m_equalVertexThreshold = m_equalVertexThreshold; - tmapData->m_edgeDistanceThreshold = m_edgeDistanceThreshold; - tmapData->m_zeroAreaThreshold = m_zeroAreaThreshold; - - tmapData->m_hashTableSize = m_hashTable.size(); - - tmapData->m_hashTablePtr = tmapData->m_hashTableSize ? (int*)serializer->getUniquePointer((void*)&m_hashTable[0]) : 0; - if (tmapData->m_hashTablePtr) - { - //serialize an int buffer - int sz = sizeof(int); - int numElem = tmapData->m_hashTableSize; - btChunk* chunk = serializer->allocate(sz,numElem); - int* memPtr = (int*)chunk->m_oldPtr; - for (int i=0;ifinalizeChunk(chunk,"int",BT_ARRAY_CODE,(void*)&m_hashTable[0]); - - } - - tmapData->m_nextSize = m_next.size(); - tmapData->m_nextPtr = tmapData->m_nextSize? (int*)serializer->getUniquePointer((void*)&m_next[0]): 0; - if (tmapData->m_nextPtr) - { - int sz = sizeof(int); - int numElem = tmapData->m_nextSize; - btChunk* chunk = serializer->allocate(sz,numElem); - int* memPtr = (int*)chunk->m_oldPtr; - for (int i=0;ifinalizeChunk(chunk,"int",BT_ARRAY_CODE,(void*)&m_next[0]); - } - - tmapData->m_numValues = m_valueArray.size(); - tmapData->m_valueArrayPtr = tmapData->m_numValues ? (btTriangleInfoData*)serializer->getUniquePointer((void*)&m_valueArray[0]): 0; - if (tmapData->m_valueArrayPtr) - { - int sz = sizeof(btTriangleInfoData); - int numElem = tmapData->m_numValues; - btChunk* chunk = serializer->allocate(sz,numElem); - btTriangleInfoData* memPtr = (btTriangleInfoData*)chunk->m_oldPtr; - for (int i=0;im_edgeV0V1Angle = m_valueArray[i].m_edgeV0V1Angle; - memPtr->m_edgeV1V2Angle = m_valueArray[i].m_edgeV1V2Angle; - memPtr->m_edgeV2V0Angle = m_valueArray[i].m_edgeV2V0Angle; - memPtr->m_flags = m_valueArray[i].m_flags; - } - serializer->finalizeChunk(chunk,"btTriangleInfoData",BT_ARRAY_CODE,(void*) &m_valueArray[0]); - } - - tmapData->m_numKeys = m_keyArray.size(); - tmapData->m_keyArrayPtr = tmapData->m_numKeys ? (int*)serializer->getUniquePointer((void*)&m_keyArray[0]) : 0; - if (tmapData->m_keyArrayPtr) - { - int sz = sizeof(int); - int numElem = tmapData->m_numValues; - btChunk* chunk = serializer->allocate(sz,numElem); - int* memPtr = (int*)chunk->m_oldPtr; - for (int i=0;ifinalizeChunk(chunk,"int",BT_ARRAY_CODE,(void*) &m_keyArray[0]); - - } - return "btTriangleInfoMapData"; -} - - - -///fills the dataBuffer and returns the struct name (and 0 on failure) -SIMD_FORCE_INLINE void btTriangleInfoMap::deSerialize(btTriangleInfoMapData& tmapData ) -{ - - - m_convexEpsilon = tmapData.m_convexEpsilon; - m_planarEpsilon = tmapData.m_planarEpsilon; - m_equalVertexThreshold = tmapData.m_equalVertexThreshold; - m_edgeDistanceThreshold = tmapData.m_edgeDistanceThreshold; - m_zeroAreaThreshold = tmapData.m_zeroAreaThreshold; - m_hashTable.resize(tmapData.m_hashTableSize); - int i =0; - for (i=0;i m_4componentVertices; - btAlignedObjectArray m_3componentVertices; - - btAlignedObjectArray m_32bitIndices; - btAlignedObjectArray m_16bitIndices; - bool m_use32bitIndices; - bool m_use4componentVertices; - - - public: - btScalar m_weldingThreshold; - - btTriangleMesh (bool use32bitIndices=true,bool use4componentVertices=true); - - bool getUse32bitIndices() const - { - return m_use32bitIndices; - } - - bool getUse4componentVertices() const - { - return m_use4componentVertices; - } - ///By default addTriangle won't search for duplicate vertices, because the search is very slow for large triangle meshes. - ///In general it is better to directly use btTriangleIndexVertexArray instead. - void addTriangle(const btVector3& vertex0,const btVector3& vertex1,const btVector3& vertex2, bool removeDuplicateVertices=false); - - int getNumTriangles() const; - - virtual void preallocateVertices(int numverts){(void) numverts;} - virtual void preallocateIndices(int numindices){(void) numindices;} - - ///findOrAddVertex is an internal method, use addTriangle instead - int findOrAddVertex(const btVector3& vertex, bool removeDuplicateVertices); - ///addIndex is an internal method, use addTriangle instead - void addIndex(int index); - -}; - -#endif //TRIANGLE_MESH_H - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp deleted file mode 100644 index 683684da770..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp +++ /dev/null @@ -1,211 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btTriangleMeshShape.h" -#include "LinearMath/btVector3.h" -#include "LinearMath/btQuaternion.h" -#include "btStridingMeshInterface.h" -#include "LinearMath/btAabbUtil2.h" -#include "BulletCollision/CollisionShapes/btCollisionMargin.h" - - -btTriangleMeshShape::btTriangleMeshShape(btStridingMeshInterface* meshInterface) -: btConcaveShape (), m_meshInterface(meshInterface) -{ - m_shapeType = TRIANGLE_MESH_SHAPE_PROXYTYPE; - if(meshInterface->hasPremadeAabb()) - { - meshInterface->getPremadeAabb(&m_localAabbMin, &m_localAabbMax); - } - else - { - recalcLocalAabb(); - } -} - - -btTriangleMeshShape::~btTriangleMeshShape() -{ - -} - - - - -void btTriangleMeshShape::getAabb(const btTransform& trans,btVector3& aabbMin,btVector3& aabbMax) const -{ - - btVector3 localHalfExtents = btScalar(0.5)*(m_localAabbMax-m_localAabbMin); - localHalfExtents += btVector3(getMargin(),getMargin(),getMargin()); - btVector3 localCenter = btScalar(0.5)*(m_localAabbMax+m_localAabbMin); - - btMatrix3x3 abs_b = trans.getBasis().absolute(); - - btVector3 center = trans(localCenter); - - btVector3 extent = btVector3(abs_b[0].dot(localHalfExtents), - abs_b[1].dot(localHalfExtents), - abs_b[2].dot(localHalfExtents)); - aabbMin = center - extent; - aabbMax = center + extent; - - -} - -void btTriangleMeshShape::recalcLocalAabb() -{ - for (int i=0;i<3;i++) - { - btVector3 vec(btScalar(0.),btScalar(0.),btScalar(0.)); - vec[i] = btScalar(1.); - btVector3 tmp = localGetSupportingVertex(vec); - m_localAabbMax[i] = tmp[i]+m_collisionMargin; - vec[i] = btScalar(-1.); - tmp = localGetSupportingVertex(vec); - m_localAabbMin[i] = tmp[i]-m_collisionMargin; - } -} - - - -class SupportVertexCallback : public btTriangleCallback -{ - - btVector3 m_supportVertexLocal; -public: - - btTransform m_worldTrans; - btScalar m_maxDot; - btVector3 m_supportVecLocal; - - SupportVertexCallback(const btVector3& supportVecWorld,const btTransform& trans) - : m_supportVertexLocal(btScalar(0.),btScalar(0.),btScalar(0.)), m_worldTrans(trans) ,m_maxDot(btScalar(-BT_LARGE_FLOAT)) - - { - m_supportVecLocal = supportVecWorld * m_worldTrans.getBasis(); - } - - virtual void processTriangle( btVector3* triangle,int partId, int triangleIndex) - { - (void)partId; - (void)triangleIndex; - for (int i=0;i<3;i++) - { - btScalar dot = m_supportVecLocal.dot(triangle[i]); - if (dot > m_maxDot) - { - m_maxDot = dot; - m_supportVertexLocal = triangle[i]; - } - } - } - - btVector3 GetSupportVertexWorldSpace() - { - return m_worldTrans(m_supportVertexLocal); - } - - btVector3 GetSupportVertexLocal() - { - return m_supportVertexLocal; - } - -}; - - -void btTriangleMeshShape::setLocalScaling(const btVector3& scaling) -{ - m_meshInterface->setScaling(scaling); - recalcLocalAabb(); -} - -const btVector3& btTriangleMeshShape::getLocalScaling() const -{ - return m_meshInterface->getScaling(); -} - - - - - - -//#define DEBUG_TRIANGLE_MESH - - - -void btTriangleMeshShape::processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const -{ - struct FilteredCallback : public btInternalTriangleIndexCallback - { - btTriangleCallback* m_callback; - btVector3 m_aabbMin; - btVector3 m_aabbMax; - - FilteredCallback(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) - :m_callback(callback), - m_aabbMin(aabbMin), - m_aabbMax(aabbMax) - { - } - - virtual void internalProcessTriangleIndex(btVector3* triangle,int partId,int triangleIndex) - { - if (TestTriangleAgainstAabb2(&triangle[0],m_aabbMin,m_aabbMax)) - { - //check aabb in triangle-space, before doing this - m_callback->processTriangle(triangle,partId,triangleIndex); - } - - } - - }; - - FilteredCallback filterCallback(callback,aabbMin,aabbMax); - - m_meshInterface->InternalProcessAllTriangles(&filterCallback,aabbMin,aabbMax); -} - - - - - -void btTriangleMeshShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const -{ - (void)mass; - //moving concave objects not supported - btAssert(0); - inertia.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); -} - - -btVector3 btTriangleMeshShape::localGetSupportingVertex(const btVector3& vec) const -{ - btVector3 supportVertex; - - btTransform ident; - ident.setIdentity(); - - SupportVertexCallback supportCallback(vec,ident); - - btVector3 aabbMax(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); - - processAllTriangles(&supportCallback,-aabbMax,aabbMax); - - supportVertex = supportCallback.GetSupportVertexLocal(); - - return supportVertex; -} - - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleMeshShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleMeshShape.h deleted file mode 100644 index 2216698d275..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleMeshShape.h +++ /dev/null @@ -1,89 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef TRIANGLE_MESH_SHAPE_H -#define TRIANGLE_MESH_SHAPE_H - -#include "btConcaveShape.h" -#include "btStridingMeshInterface.h" - - -///The btTriangleMeshShape is an internal concave triangle mesh interface. Don't use this class directly, use btBvhTriangleMeshShape instead. -class btTriangleMeshShape : public btConcaveShape -{ -protected: - btVector3 m_localAabbMin; - btVector3 m_localAabbMax; - btStridingMeshInterface* m_meshInterface; - - ///btTriangleMeshShape constructor has been disabled/protected, so that users will not mistakenly use this class. - ///Don't use btTriangleMeshShape but use btBvhTriangleMeshShape instead! - btTriangleMeshShape(btStridingMeshInterface* meshInterface); - -public: - - virtual ~btTriangleMeshShape(); - - virtual btVector3 localGetSupportingVertex(const btVector3& vec) const; - - virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const - { - btAssert(0); - return localGetSupportingVertex(vec); - } - - void recalcLocalAabb(); - - virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; - - virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const; - - virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; - - virtual void setLocalScaling(const btVector3& scaling); - virtual const btVector3& getLocalScaling() const; - - btStridingMeshInterface* getMeshInterface() - { - return m_meshInterface; - } - - const btStridingMeshInterface* getMeshInterface() const - { - return m_meshInterface; - } - - const btVector3& getLocalAabbMin() const - { - return m_localAabbMin; - } - const btVector3& getLocalAabbMax() const - { - return m_localAabbMax; - } - - - - //debugging - virtual const char* getName()const {return "TRIANGLEMESH";} - - - -}; - - - - -#endif //TRIANGLE_MESH_SHAPE_H diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btTriangleShape.h deleted file mode 100644 index 847147cf6b4..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btTriangleShape.h +++ /dev/null @@ -1,182 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef OBB_TRIANGLE_MINKOWSKI_H -#define OBB_TRIANGLE_MINKOWSKI_H - -#include "btConvexShape.h" -#include "btBoxShape.h" - -ATTRIBUTE_ALIGNED16(class) btTriangleShape : public btPolyhedralConvexShape -{ - - -public: - - btVector3 m_vertices1[3]; - - virtual int getNumVertices() const - { - return 3; - } - - btVector3& getVertexPtr(int index) - { - return m_vertices1[index]; - } - - const btVector3& getVertexPtr(int index) const - { - return m_vertices1[index]; - } - virtual void getVertex(int index,btVector3& vert) const - { - vert = m_vertices1[index]; - } - - virtual int getNumEdges() const - { - return 3; - } - - virtual void getEdge(int i,btVector3& pa,btVector3& pb) const - { - getVertex(i,pa); - getVertex((i+1)%3,pb); - } - - - virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax)const - { -// btAssert(0); - getAabbSlow(t,aabbMin,aabbMax); - } - - btVector3 localGetSupportingVertexWithoutMargin(const btVector3& dir)const - { - btVector3 dots(dir.dot(m_vertices1[0]), dir.dot(m_vertices1[1]), dir.dot(m_vertices1[2])); - return m_vertices1[dots.maxAxis()]; - - } - - virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const - { - for (int i=0;i= -tolerance && dist <= tolerance) - { - //inside check on edge-planes - int i; - for (i=0;i<3;i++) - { - btVector3 pa,pb; - getEdge(i,pa,pb); - btVector3 edge = pb-pa; - btVector3 edgeNormal = edge.cross(normal); - edgeNormal.normalize(); - btScalar dist = pt.dot( edgeNormal); - btScalar edgeConst = pa.dot(edgeNormal); - dist -= edgeConst; - if (dist < -tolerance) - return false; - } - - return true; - } - - return false; - } - //debugging - virtual const char* getName()const - { - return "Triangle"; - } - - virtual int getNumPreferredPenetrationDirections() const - { - return 2; - } - - virtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const - { - calcNormal(penetrationVector); - if (index) - penetrationVector *= btScalar(-1.); - } - - -}; - -#endif //OBB_TRIANGLE_MINKOWSKI_H - diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btUniformScalingShape.cpp b/extern/bullet2/BulletCollision/CollisionShapes/btUniformScalingShape.cpp deleted file mode 100644 index 8e86f6bf290..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btUniformScalingShape.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btUniformScalingShape.h" - -btUniformScalingShape::btUniformScalingShape( btConvexShape* convexChildShape,btScalar uniformScalingFactor): -btConvexShape (), m_childConvexShape(convexChildShape), -m_uniformScalingFactor(uniformScalingFactor) -{ - m_shapeType = UNIFORM_SCALING_SHAPE_PROXYTYPE; -} - -btUniformScalingShape::~btUniformScalingShape() -{ -} - - -btVector3 btUniformScalingShape::localGetSupportingVertexWithoutMargin(const btVector3& vec)const -{ - btVector3 tmpVertex; - tmpVertex = m_childConvexShape->localGetSupportingVertexWithoutMargin(vec); - return tmpVertex*m_uniformScalingFactor; -} - -void btUniformScalingShape::batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const -{ - m_childConvexShape->batchedUnitVectorGetSupportingVertexWithoutMargin(vectors,supportVerticesOut,numVectors); - int i; - for (i=0;ilocalGetSupportingVertex(vec); - return tmpVertex*m_uniformScalingFactor; -} - - -void btUniformScalingShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const -{ - - ///this linear upscaling is not realistic, but we don't deal with large mass ratios... - btVector3 tmpInertia; - m_childConvexShape->calculateLocalInertia(mass,tmpInertia); - inertia = tmpInertia * m_uniformScalingFactor; -} - - - ///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version -void btUniformScalingShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const -{ - m_childConvexShape->getAabb(t,aabbMin,aabbMax); - btVector3 aabbCenter = (aabbMax+aabbMin)*btScalar(0.5); - btVector3 scaledAabbHalfExtends = (aabbMax-aabbMin)*btScalar(0.5)*m_uniformScalingFactor; - - aabbMin = aabbCenter - scaledAabbHalfExtends; - aabbMax = aabbCenter + scaledAabbHalfExtends; - -} - -void btUniformScalingShape::getAabbSlow(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const -{ - m_childConvexShape->getAabbSlow(t,aabbMin,aabbMax); - btVector3 aabbCenter = (aabbMax+aabbMin)*btScalar(0.5); - btVector3 scaledAabbHalfExtends = (aabbMax-aabbMin)*btScalar(0.5)*m_uniformScalingFactor; - - aabbMin = aabbCenter - scaledAabbHalfExtends; - aabbMax = aabbCenter + scaledAabbHalfExtends; -} - -void btUniformScalingShape::setLocalScaling(const btVector3& scaling) -{ - m_childConvexShape->setLocalScaling(scaling); -} - -const btVector3& btUniformScalingShape::getLocalScaling() const -{ - return m_childConvexShape->getLocalScaling(); -} - -void btUniformScalingShape::setMargin(btScalar margin) -{ - m_childConvexShape->setMargin(margin); -} -btScalar btUniformScalingShape::getMargin() const -{ - return m_childConvexShape->getMargin() * m_uniformScalingFactor; -} - -int btUniformScalingShape::getNumPreferredPenetrationDirections() const -{ - return m_childConvexShape->getNumPreferredPenetrationDirections(); -} - -void btUniformScalingShape::getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const -{ - m_childConvexShape->getPreferredPenetrationDirection(index,penetrationVector); -} diff --git a/extern/bullet2/BulletCollision/CollisionShapes/btUniformScalingShape.h b/extern/bullet2/BulletCollision/CollisionShapes/btUniformScalingShape.h deleted file mode 100644 index cbf7e6fd3ed..00000000000 --- a/extern/bullet2/BulletCollision/CollisionShapes/btUniformScalingShape.h +++ /dev/null @@ -1,87 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BT_UNIFORM_SCALING_SHAPE_H -#define BT_UNIFORM_SCALING_SHAPE_H - -#include "btConvexShape.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types - -///The btUniformScalingShape allows to re-use uniform scaled instances of btConvexShape in a memory efficient way. -///Istead of using btUniformScalingShape, it is better to use the non-uniform setLocalScaling method on convex shapes that implement it. -class btUniformScalingShape : public btConvexShape -{ - btConvexShape* m_childConvexShape; - - btScalar m_uniformScalingFactor; - - public: - - btUniformScalingShape( btConvexShape* convexChildShape, btScalar uniformScalingFactor); - - virtual ~btUniformScalingShape(); - - virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const; - - virtual btVector3 localGetSupportingVertex(const btVector3& vec)const; - - virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const; - - virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; - - btScalar getUniformScalingFactor() const - { - return m_uniformScalingFactor; - } - - btConvexShape* getChildShape() - { - return m_childConvexShape; - } - - const btConvexShape* getChildShape() const - { - return m_childConvexShape; - } - - virtual const char* getName()const - { - return "UniformScalingShape"; - } - - - - /////////////////////////// - - - ///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version - void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; - - virtual void getAabbSlow(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; - - virtual void setLocalScaling(const btVector3& scaling) ; - virtual const btVector3& getLocalScaling() const ; - - virtual void setMargin(btScalar margin); - virtual btScalar getMargin() const; - - virtual int getNumPreferredPenetrationDirections() const; - - virtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const; - - -}; - -#endif //BT_UNIFORM_SCALING_SHAPE_H diff --git a/extern/bullet2/BulletCollision/Doxyfile b/extern/bullet2/BulletCollision/Doxyfile deleted file mode 100644 index 4ecb6acb62f..00000000000 --- a/extern/bullet2/BulletCollision/Doxyfile +++ /dev/null @@ -1,746 +0,0 @@ -# Doxyfile 1.2.4 - -# This file describes the settings to be used by doxygen for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# General configuration options -#--------------------------------------------------------------------------- - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. -PROJECT_NAME = "Bullet Continuous Collision Detection Library" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, -# Korean, Hungarian, Norwegian, Spanish, Romanian, Russian, Croatian, -# Polish, Portuguese and Slovene. - -OUTPUT_LANGUAGE = English - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = YES - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = YES - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these class will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = NO - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. It is allowed to use relative paths in the argument list. - -STRIP_FROM_PATH = - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a class diagram (in Html and LaTeX) for classes with base or -# super classes. Setting the tag to NO turns the diagrams off. - -CLASS_DIAGRAMS = YES - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower case letters. If set to YES upper case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# users are adviced to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like the Qt-style comments (thus requiring an -# explict @brief command for a brief description. - -JAVADOC_AUTOBRIEF = YES - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# reimplements. - -INHERIT_DOCS = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 8 - -# The ENABLE_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = . - - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -FILE_PATTERNS = *.h *.cpp *.c - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. - -EXCLUDE_PATTERNS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. - -INPUT_FILTER = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse. - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = NO - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# If the GENERATE_TREEVIEW tag is set to YES, a side pannel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript and frames is required (for instance Netscape 4.0+ -# or Internet explorer 4.0+). - -GENERATE_TREEVIEW = NO - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = NO - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = NO - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimised for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using a WORD or other. -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assigments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. Warning: This feature -# is still experimental and very incomplete. - -GENERATE_XML = NO - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_PREDEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = ../../generic/extern - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. - -PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -#--------------------------------------------------------------------------- -# Configuration::addtions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES tag can be used to specify one or more tagfiles. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = YES - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to -# YES then doxygen will generate a graph for each documented file showing -# the direct and indirect include dependencies of the file with other -# documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to -# YES then doxygen will generate a graph for each documented header file showing -# the documented files that directly or indirectly include this file - -INCLUDED_BY_GRAPH = YES - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found on the path. - -DOT_PATH = - -# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_WIDTH = 1024 - -# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_HEIGHT = 1024 - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -#--------------------------------------------------------------------------- -# Configuration::addtions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = NO - -# The CGI_NAME tag should be the name of the CGI script that -# starts the search engine (doxysearch) with the correct parameters. -# A script with this name will be generated by doxygen. - -CGI_NAME = search.cgi - -# The CGI_URL tag should be the absolute URL to the directory where the -# cgi binaries are located. See the documentation of your http daemon for -# details. - -CGI_URL = - -# The DOC_URL tag should be the absolute URL to the directory where the -# documentation is located. If left blank the absolute path to the -# documentation, with file:// prepended to it, will be used. - -DOC_URL = - -# The DOC_ABSPATH tag should be the absolute path to the directory where the -# documentation is located. If left blank the directory on the local machine -# will be used. - -DOC_ABSPATH = - -# The BIN_ABSPATH tag must point to the directory where the doxysearch binary -# is installed. - -BIN_ABSPATH = c:\program files\doxygen\bin - -# The EXT_DOC_PATHS tag can be used to specify one or more paths to -# documentation generated for other projects. This allows doxysearch to search -# the documentation for these projects as well. - -EXT_DOC_PATHS = diff --git a/extern/bullet2/BulletCollision/Gimpact/btBoxCollision.h b/extern/bullet2/BulletCollision/Gimpact/btBoxCollision.h deleted file mode 100644 index 827a3c89587..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/btBoxCollision.h +++ /dev/null @@ -1,647 +0,0 @@ -#ifndef BT_BOX_COLLISION_H_INCLUDED -#define BT_BOX_COLLISION_H_INCLUDED - -/*! \file gim_box_collision.h -\author Francisco Len Nßjera -*/ -/* -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "LinearMath/btTransform.h" - - -///Swap numbers -#define BT_SWAP_NUMBERS(a,b){ \ - a = a+b; \ - b = a-b; \ - a = a-b; \ -}\ - - -#define BT_MAX(a,b) (ab?b:a) - -#define BT_GREATER(x, y) btFabs(x) > (y) - -#define BT_MAX3(a,b,c) BT_MAX(a,BT_MAX(b,c)) -#define BT_MIN3(a,b,c) BT_MIN(a,BT_MIN(b,c)) - - - - - - -enum eBT_PLANE_INTERSECTION_TYPE -{ - BT_CONST_BACK_PLANE = 0, - BT_CONST_COLLIDE_PLANE, - BT_CONST_FRONT_PLANE -}; - -//SIMD_FORCE_INLINE bool test_cross_edge_box( -// const btVector3 & edge, -// const btVector3 & absolute_edge, -// const btVector3 & pointa, -// const btVector3 & pointb, const btVector3 & extend, -// int dir_index0, -// int dir_index1 -// int component_index0, -// int component_index1) -//{ -// // dir coords are -z and y -// -// const btScalar dir0 = -edge[dir_index0]; -// const btScalar dir1 = edge[dir_index1]; -// btScalar pmin = pointa[component_index0]*dir0 + pointa[component_index1]*dir1; -// btScalar pmax = pointb[component_index0]*dir0 + pointb[component_index1]*dir1; -// //find minmax -// if(pmin>pmax) -// { -// BT_SWAP_NUMBERS(pmin,pmax); -// } -// //find extends -// const btScalar rad = extend[component_index0] * absolute_edge[dir_index0] + -// extend[component_index1] * absolute_edge[dir_index1]; -// -// if(pmin>rad || -rad>pmax) return false; -// return true; -//} -// -//SIMD_FORCE_INLINE bool test_cross_edge_box_X_axis( -// const btVector3 & edge, -// const btVector3 & absolute_edge, -// const btVector3 & pointa, -// const btVector3 & pointb, btVector3 & extend) -//{ -// -// return test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,2,1,1,2); -//} -// -// -//SIMD_FORCE_INLINE bool test_cross_edge_box_Y_axis( -// const btVector3 & edge, -// const btVector3 & absolute_edge, -// const btVector3 & pointa, -// const btVector3 & pointb, btVector3 & extend) -//{ -// -// return test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,0,2,2,0); -//} -// -//SIMD_FORCE_INLINE bool test_cross_edge_box_Z_axis( -// const btVector3 & edge, -// const btVector3 & absolute_edge, -// const btVector3 & pointa, -// const btVector3 & pointb, btVector3 & extend) -//{ -// -// return test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,1,0,0,1); -//} - - -#define TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,i_dir_0,i_dir_1,i_comp_0,i_comp_1)\ -{\ - const btScalar dir0 = -edge[i_dir_0];\ - const btScalar dir1 = edge[i_dir_1];\ - btScalar pmin = pointa[i_comp_0]*dir0 + pointa[i_comp_1]*dir1;\ - btScalar pmax = pointb[i_comp_0]*dir0 + pointb[i_comp_1]*dir1;\ - if(pmin>pmax)\ - {\ - BT_SWAP_NUMBERS(pmin,pmax); \ - }\ - const btScalar abs_dir0 = absolute_edge[i_dir_0];\ - const btScalar abs_dir1 = absolute_edge[i_dir_1];\ - const btScalar rad = _extend[i_comp_0] * abs_dir0 + _extend[i_comp_1] * abs_dir1;\ - if(pmin>rad || -rad>pmax) return false;\ -}\ - - -#define TEST_CROSS_EDGE_BOX_X_AXIS_MCR(edge,absolute_edge,pointa,pointb,_extend)\ -{\ - TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,2,1,1,2);\ -}\ - -#define TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(edge,absolute_edge,pointa,pointb,_extend)\ -{\ - TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,0,2,2,0);\ -}\ - -#define TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(edge,absolute_edge,pointa,pointb,_extend)\ -{\ - TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,1,0,0,1);\ -}\ - - -//! Returns the dot product between a vec3f and the col of a matrix -SIMD_FORCE_INLINE btScalar bt_mat3_dot_col( -const btMatrix3x3 & mat, const btVector3 & vec3, int colindex) -{ - return vec3[0]*mat[0][colindex] + vec3[1]*mat[1][colindex] + vec3[2]*mat[2][colindex]; -} - - -//! Class for transforming a model1 to the space of model0 -ATTRIBUTE_ALIGNED16 (class) BT_BOX_BOX_TRANSFORM_CACHE -{ -public: - btVector3 m_T1to0;//!< Transforms translation of model1 to model 0 - btMatrix3x3 m_R1to0;//!< Transforms Rotation of model1 to model 0, equal to R0' * R1 - btMatrix3x3 m_AR;//!< Absolute value of m_R1to0 - - SIMD_FORCE_INLINE void calc_absolute_matrix() - { -// static const btVector3 vepsi(1e-6f,1e-6f,1e-6f); -// m_AR[0] = vepsi + m_R1to0[0].absolute(); -// m_AR[1] = vepsi + m_R1to0[1].absolute(); -// m_AR[2] = vepsi + m_R1to0[2].absolute(); - - int i,j; - - for(i=0;i<3;i++) - { - for(j=0;j<3;j++ ) - { - m_AR[i][j] = 1e-6f + btFabs(m_R1to0[i][j]); - } - } - - } - - BT_BOX_BOX_TRANSFORM_CACHE() - { - } - - - - //! Calc the transformation relative 1 to 0. Inverts matrics by transposing - SIMD_FORCE_INLINE void calc_from_homogenic(const btTransform & trans0,const btTransform & trans1) - { - - btTransform temp_trans = trans0.inverse(); - temp_trans = temp_trans * trans1; - - m_T1to0 = temp_trans.getOrigin(); - m_R1to0 = temp_trans.getBasis(); - - - calc_absolute_matrix(); - } - - //! Calcs the full invertion of the matrices. Useful for scaling matrices - SIMD_FORCE_INLINE void calc_from_full_invert(const btTransform & trans0,const btTransform & trans1) - { - m_R1to0 = trans0.getBasis().inverse(); - m_T1to0 = m_R1to0 * (-trans0.getOrigin()); - - m_T1to0 += m_R1to0*trans1.getOrigin(); - m_R1to0 *= trans1.getBasis(); - - calc_absolute_matrix(); - } - - SIMD_FORCE_INLINE btVector3 transform(const btVector3 & point) const - { - return btVector3(m_R1to0[0].dot(point) + m_T1to0.x(), - m_R1to0[1].dot(point) + m_T1to0.y(), - m_R1to0[2].dot(point) + m_T1to0.z()); - } -}; - - -#define BOX_PLANE_EPSILON 0.000001f - -//! Axis aligned box -ATTRIBUTE_ALIGNED16 (class) btAABB -{ -public: - btVector3 m_min; - btVector3 m_max; - - btAABB() - {} - - - btAABB(const btVector3 & V1, - const btVector3 & V2, - const btVector3 & V3) - { - m_min[0] = BT_MIN3(V1[0],V2[0],V3[0]); - m_min[1] = BT_MIN3(V1[1],V2[1],V3[1]); - m_min[2] = BT_MIN3(V1[2],V2[2],V3[2]); - - m_max[0] = BT_MAX3(V1[0],V2[0],V3[0]); - m_max[1] = BT_MAX3(V1[1],V2[1],V3[1]); - m_max[2] = BT_MAX3(V1[2],V2[2],V3[2]); - } - - btAABB(const btVector3 & V1, - const btVector3 & V2, - const btVector3 & V3, - btScalar margin) - { - m_min[0] = BT_MIN3(V1[0],V2[0],V3[0]); - m_min[1] = BT_MIN3(V1[1],V2[1],V3[1]); - m_min[2] = BT_MIN3(V1[2],V2[2],V3[2]); - - m_max[0] = BT_MAX3(V1[0],V2[0],V3[0]); - m_max[1] = BT_MAX3(V1[1],V2[1],V3[1]); - m_max[2] = BT_MAX3(V1[2],V2[2],V3[2]); - - m_min[0] -= margin; - m_min[1] -= margin; - m_min[2] -= margin; - m_max[0] += margin; - m_max[1] += margin; - m_max[2] += margin; - } - - btAABB(const btAABB &other): - m_min(other.m_min),m_max(other.m_max) - { - } - - btAABB(const btAABB &other,btScalar margin ): - m_min(other.m_min),m_max(other.m_max) - { - m_min[0] -= margin; - m_min[1] -= margin; - m_min[2] -= margin; - m_max[0] += margin; - m_max[1] += margin; - m_max[2] += margin; - } - - SIMD_FORCE_INLINE void invalidate() - { - m_min[0] = SIMD_INFINITY; - m_min[1] = SIMD_INFINITY; - m_min[2] = SIMD_INFINITY; - m_max[0] = -SIMD_INFINITY; - m_max[1] = -SIMD_INFINITY; - m_max[2] = -SIMD_INFINITY; - } - - SIMD_FORCE_INLINE void increment_margin(btScalar margin) - { - m_min[0] -= margin; - m_min[1] -= margin; - m_min[2] -= margin; - m_max[0] += margin; - m_max[1] += margin; - m_max[2] += margin; - } - - SIMD_FORCE_INLINE void copy_with_margin(const btAABB &other, btScalar margin) - { - m_min[0] = other.m_min[0] - margin; - m_min[1] = other.m_min[1] - margin; - m_min[2] = other.m_min[2] - margin; - - m_max[0] = other.m_max[0] + margin; - m_max[1] = other.m_max[1] + margin; - m_max[2] = other.m_max[2] + margin; - } - - template - SIMD_FORCE_INLINE void calc_from_triangle( - const CLASS_POINT & V1, - const CLASS_POINT & V2, - const CLASS_POINT & V3) - { - m_min[0] = BT_MIN3(V1[0],V2[0],V3[0]); - m_min[1] = BT_MIN3(V1[1],V2[1],V3[1]); - m_min[2] = BT_MIN3(V1[2],V2[2],V3[2]); - - m_max[0] = BT_MAX3(V1[0],V2[0],V3[0]); - m_max[1] = BT_MAX3(V1[1],V2[1],V3[1]); - m_max[2] = BT_MAX3(V1[2],V2[2],V3[2]); - } - - template - SIMD_FORCE_INLINE void calc_from_triangle_margin( - const CLASS_POINT & V1, - const CLASS_POINT & V2, - const CLASS_POINT & V3, btScalar margin) - { - m_min[0] = BT_MIN3(V1[0],V2[0],V3[0]); - m_min[1] = BT_MIN3(V1[1],V2[1],V3[1]); - m_min[2] = BT_MIN3(V1[2],V2[2],V3[2]); - - m_max[0] = BT_MAX3(V1[0],V2[0],V3[0]); - m_max[1] = BT_MAX3(V1[1],V2[1],V3[1]); - m_max[2] = BT_MAX3(V1[2],V2[2],V3[2]); - - m_min[0] -= margin; - m_min[1] -= margin; - m_min[2] -= margin; - m_max[0] += margin; - m_max[1] += margin; - m_max[2] += margin; - } - - //! Apply a transform to an AABB - SIMD_FORCE_INLINE void appy_transform(const btTransform & trans) - { - btVector3 center = (m_max+m_min)*0.5f; - btVector3 extends = m_max - center; - // Compute new center - center = trans(center); - - btVector3 textends(extends.dot(trans.getBasis().getRow(0).absolute()), - extends.dot(trans.getBasis().getRow(1).absolute()), - extends.dot(trans.getBasis().getRow(2).absolute())); - - m_min = center - textends; - m_max = center + textends; - } - - - //! Apply a transform to an AABB - SIMD_FORCE_INLINE void appy_transform_trans_cache(const BT_BOX_BOX_TRANSFORM_CACHE & trans) - { - btVector3 center = (m_max+m_min)*0.5f; - btVector3 extends = m_max - center; - // Compute new center - center = trans.transform(center); - - btVector3 textends(extends.dot(trans.m_R1to0.getRow(0).absolute()), - extends.dot(trans.m_R1to0.getRow(1).absolute()), - extends.dot(trans.m_R1to0.getRow(2).absolute())); - - m_min = center - textends; - m_max = center + textends; - } - - //! Merges a Box - SIMD_FORCE_INLINE void merge(const btAABB & box) - { - m_min[0] = BT_MIN(m_min[0],box.m_min[0]); - m_min[1] = BT_MIN(m_min[1],box.m_min[1]); - m_min[2] = BT_MIN(m_min[2],box.m_min[2]); - - m_max[0] = BT_MAX(m_max[0],box.m_max[0]); - m_max[1] = BT_MAX(m_max[1],box.m_max[1]); - m_max[2] = BT_MAX(m_max[2],box.m_max[2]); - } - - //! Merges a point - template - SIMD_FORCE_INLINE void merge_point(const CLASS_POINT & point) - { - m_min[0] = BT_MIN(m_min[0],point[0]); - m_min[1] = BT_MIN(m_min[1],point[1]); - m_min[2] = BT_MIN(m_min[2],point[2]); - - m_max[0] = BT_MAX(m_max[0],point[0]); - m_max[1] = BT_MAX(m_max[1],point[1]); - m_max[2] = BT_MAX(m_max[2],point[2]); - } - - //! Gets the extend and center - SIMD_FORCE_INLINE void get_center_extend(btVector3 & center,btVector3 & extend) const - { - center = (m_max+m_min)*0.5f; - extend = m_max - center; - } - - //! Finds the intersecting box between this box and the other. - SIMD_FORCE_INLINE void find_intersection(const btAABB & other, btAABB & intersection) const - { - intersection.m_min[0] = BT_MAX(other.m_min[0],m_min[0]); - intersection.m_min[1] = BT_MAX(other.m_min[1],m_min[1]); - intersection.m_min[2] = BT_MAX(other.m_min[2],m_min[2]); - - intersection.m_max[0] = BT_MIN(other.m_max[0],m_max[0]); - intersection.m_max[1] = BT_MIN(other.m_max[1],m_max[1]); - intersection.m_max[2] = BT_MIN(other.m_max[2],m_max[2]); - } - - - SIMD_FORCE_INLINE bool has_collision(const btAABB & other) const - { - if(m_min[0] > other.m_max[0] || - m_max[0] < other.m_min[0] || - m_min[1] > other.m_max[1] || - m_max[1] < other.m_min[1] || - m_min[2] > other.m_max[2] || - m_max[2] < other.m_min[2]) - { - return false; - } - return true; - } - - /*! \brief Finds the Ray intersection parameter. - \param aabb Aligned box - \param vorigin A vec3f with the origin of the ray - \param vdir A vec3f with the direction of the ray - */ - SIMD_FORCE_INLINE bool collide_ray(const btVector3 & vorigin,const btVector3 & vdir) const - { - btVector3 extents,center; - this->get_center_extend(center,extents);; - - btScalar Dx = vorigin[0] - center[0]; - if(BT_GREATER(Dx, extents[0]) && Dx*vdir[0]>=0.0f) return false; - btScalar Dy = vorigin[1] - center[1]; - if(BT_GREATER(Dy, extents[1]) && Dy*vdir[1]>=0.0f) return false; - btScalar Dz = vorigin[2] - center[2]; - if(BT_GREATER(Dz, extents[2]) && Dz*vdir[2]>=0.0f) return false; - - - btScalar f = vdir[1] * Dz - vdir[2] * Dy; - if(btFabs(f) > extents[1]*btFabs(vdir[2]) + extents[2]*btFabs(vdir[1])) return false; - f = vdir[2] * Dx - vdir[0] * Dz; - if(btFabs(f) > extents[0]*btFabs(vdir[2]) + extents[2]*btFabs(vdir[0]))return false; - f = vdir[0] * Dy - vdir[1] * Dx; - if(btFabs(f) > extents[0]*btFabs(vdir[1]) + extents[1]*btFabs(vdir[0]))return false; - return true; - } - - - SIMD_FORCE_INLINE void projection_interval(const btVector3 & direction, btScalar &vmin, btScalar &vmax) const - { - btVector3 center = (m_max+m_min)*0.5f; - btVector3 extend = m_max-center; - - btScalar _fOrigin = direction.dot(center); - btScalar _fMaximumExtent = extend.dot(direction.absolute()); - vmin = _fOrigin - _fMaximumExtent; - vmax = _fOrigin + _fMaximumExtent; - } - - SIMD_FORCE_INLINE eBT_PLANE_INTERSECTION_TYPE plane_classify(const btVector4 &plane) const - { - btScalar _fmin,_fmax; - this->projection_interval(plane,_fmin,_fmax); - - if(plane[3] > _fmax + BOX_PLANE_EPSILON) - { - return BT_CONST_BACK_PLANE; // 0 - } - - if(plane[3]+BOX_PLANE_EPSILON >=_fmin) - { - return BT_CONST_COLLIDE_PLANE; //1 - } - return BT_CONST_FRONT_PLANE;//2 - } - - SIMD_FORCE_INLINE bool overlapping_trans_conservative(const btAABB & box, btTransform & trans1_to_0) const - { - btAABB tbox = box; - tbox.appy_transform(trans1_to_0); - return has_collision(tbox); - } - - SIMD_FORCE_INLINE bool overlapping_trans_conservative2(const btAABB & box, - const BT_BOX_BOX_TRANSFORM_CACHE & trans1_to_0) const - { - btAABB tbox = box; - tbox.appy_transform_trans_cache(trans1_to_0); - return has_collision(tbox); - } - - //! transcache is the transformation cache from box to this AABB - SIMD_FORCE_INLINE bool overlapping_trans_cache( - const btAABB & box,const BT_BOX_BOX_TRANSFORM_CACHE & transcache, bool fulltest) const - { - - //Taken from OPCODE - btVector3 ea,eb;//extends - btVector3 ca,cb;//extends - get_center_extend(ca,ea); - box.get_center_extend(cb,eb); - - - btVector3 T; - btScalar t,t2; - int i; - - // Class I : A's basis vectors - for(i=0;i<3;i++) - { - T[i] = transcache.m_R1to0[i].dot(cb) + transcache.m_T1to0[i] - ca[i]; - t = transcache.m_AR[i].dot(eb) + ea[i]; - if(BT_GREATER(T[i], t)) return false; - } - // Class II : B's basis vectors - for(i=0;i<3;i++) - { - t = bt_mat3_dot_col(transcache.m_R1to0,T,i); - t2 = bt_mat3_dot_col(transcache.m_AR,ea,i) + eb[i]; - if(BT_GREATER(t,t2)) return false; - } - // Class III : 9 cross products - if(fulltest) - { - int j,m,n,o,p,q,r; - for(i=0;i<3;i++) - { - m = (i+1)%3; - n = (i+2)%3; - o = i==0?1:0; - p = i==2?1:2; - for(j=0;j<3;j++) - { - q = j==2?1:2; - r = j==0?1:0; - t = T[n]*transcache.m_R1to0[m][j] - T[m]*transcache.m_R1to0[n][j]; - t2 = ea[o]*transcache.m_AR[p][j] + ea[p]*transcache.m_AR[o][j] + - eb[r]*transcache.m_AR[i][q] + eb[q]*transcache.m_AR[i][r]; - if(BT_GREATER(t,t2)) return false; - } - } - } - return true; - } - - //! Simple test for planes. - SIMD_FORCE_INLINE bool collide_plane( - const btVector4 & plane) const - { - eBT_PLANE_INTERSECTION_TYPE classify = plane_classify(plane); - return (classify == BT_CONST_COLLIDE_PLANE); - } - - //! test for a triangle, with edges - SIMD_FORCE_INLINE bool collide_triangle_exact( - const btVector3 & p1, - const btVector3 & p2, - const btVector3 & p3, - const btVector4 & triangle_plane) const - { - if(!collide_plane(triangle_plane)) return false; - - btVector3 center,extends; - this->get_center_extend(center,extends); - - const btVector3 v1(p1 - center); - const btVector3 v2(p2 - center); - const btVector3 v3(p3 - center); - - //First axis - btVector3 diff(v2 - v1); - btVector3 abs_diff = diff.absolute(); - //Test With X axis - TEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff,abs_diff,v1,v3,extends); - //Test With Y axis - TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff,abs_diff,v1,v3,extends); - //Test With Z axis - TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff,abs_diff,v1,v3,extends); - - - diff = v3 - v2; - abs_diff = diff.absolute(); - //Test With X axis - TEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff,abs_diff,v2,v1,extends); - //Test With Y axis - TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff,abs_diff,v2,v1,extends); - //Test With Z axis - TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff,abs_diff,v2,v1,extends); - - diff = v1 - v3; - abs_diff = diff.absolute(); - //Test With X axis - TEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff,abs_diff,v3,v2,extends); - //Test With Y axis - TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff,abs_diff,v3,v2,extends); - //Test With Z axis - TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff,abs_diff,v3,v2,extends); - - return true; - } -}; - - -//! Compairison of transformation objects -SIMD_FORCE_INLINE bool btCompareTransformsEqual(const btTransform & t1,const btTransform & t2) -{ - if(!(t1.getOrigin() == t2.getOrigin()) ) return false; - - if(!(t1.getBasis().getRow(0) == t2.getBasis().getRow(0)) ) return false; - if(!(t1.getBasis().getRow(1) == t2.getBasis().getRow(1)) ) return false; - if(!(t1.getBasis().getRow(2) == t2.getBasis().getRow(2)) ) return false; - return true; -} - - - -#endif // GIM_BOX_COLLISION_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/btClipPolygon.h b/extern/bullet2/BulletCollision/Gimpact/btClipPolygon.h deleted file mode 100644 index 5de391a7561..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/btClipPolygon.h +++ /dev/null @@ -1,182 +0,0 @@ -#ifndef BT_CLIP_POLYGON_H_INCLUDED -#define BT_CLIP_POLYGON_H_INCLUDED - -/*! \file btClipPolygon.h -\author Francisco Len Nßjera -*/ -/* -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "LinearMath/btTransform.h" -#include "LinearMath/btGeometryUtil.h" - - -SIMD_FORCE_INLINE btScalar bt_distance_point_plane(const btVector4 & plane,const btVector3 &point) -{ - return point.dot(plane) - plane[3]; -} - -/*! Vector blending -Takes two vectors a, b, blends them together*/ -SIMD_FORCE_INLINE void bt_vec_blend(btVector3 &vr, const btVector3 &va,const btVector3 &vb, btScalar blend_factor) -{ - vr = (1-blend_factor)*va + blend_factor*vb; -} - -//! This function calcs the distance from a 3D plane -SIMD_FORCE_INLINE void bt_plane_clip_polygon_collect( - const btVector3 & point0, - const btVector3 & point1, - btScalar dist0, - btScalar dist1, - btVector3 * clipped, - int & clipped_count) -{ - bool _prevclassif = (dist0>SIMD_EPSILON); - bool _classif = (dist1>SIMD_EPSILON); - if(_classif!=_prevclassif) - { - btScalar blendfactor = -dist0/(dist1-dist0); - bt_vec_blend(clipped[clipped_count],point0,point1,blendfactor); - clipped_count++; - } - if(!_classif) - { - clipped[clipped_count] = point1; - clipped_count++; - } -} - - -//! Clips a polygon by a plane -/*! -*\return The count of the clipped counts -*/ -SIMD_FORCE_INLINE int bt_plane_clip_polygon( - const btVector4 & plane, - const btVector3 * polygon_points, - int polygon_point_count, - btVector3 * clipped) -{ - int clipped_count = 0; - - - //clip first point - btScalar firstdist = bt_distance_point_plane(plane,polygon_points[0]);; - if(!(firstdist>SIMD_EPSILON)) - { - clipped[clipped_count] = polygon_points[0]; - clipped_count++; - } - - btScalar olddist = firstdist; - for(int i=1;iSIMD_EPSILON)) - { - clipped[clipped_count] = point0; - clipped_count++; - } - - // point 1 - btScalar olddist = firstdist; - btScalar dist = bt_distance_point_plane(plane,point1); - - bt_plane_clip_polygon_collect( - point0,point1, - olddist, - dist, - clipped, - clipped_count); - - olddist = dist; - - - // point 2 - dist = bt_distance_point_plane(plane,point2); - - bt_plane_clip_polygon_collect( - point1,point2, - olddist, - dist, - clipped, - clipped_count); - olddist = dist; - - - - //RETURN TO FIRST point0 - bt_plane_clip_polygon_collect( - point2,point0, - olddist, - firstdist, - clipped, - clipped_count); - - return clipped_count; -} - - - - - -#endif // GIM_TRI_COLLISION_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/btContactProcessing.cpp b/extern/bullet2/BulletCollision/Gimpact/btContactProcessing.cpp deleted file mode 100644 index c3b697bdd1e..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/btContactProcessing.cpp +++ /dev/null @@ -1,181 +0,0 @@ - -/* -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ -#include "btContactProcessing.h" - -#define MAX_COINCIDENT 8 - -struct CONTACT_KEY_TOKEN -{ - unsigned int m_key; - int m_value; - CONTACT_KEY_TOKEN() - { - } - - CONTACT_KEY_TOKEN(unsigned int key,int token) - { - m_key = key; - m_value = token; - } - - CONTACT_KEY_TOKEN(const CONTACT_KEY_TOKEN& rtoken) - { - m_key = rtoken.m_key; - m_value = rtoken.m_value; - } - - inline bool operator <(const CONTACT_KEY_TOKEN& other) const - { - return (m_key < other.m_key); - } - - inline bool operator >(const CONTACT_KEY_TOKEN& other) const - { - return (m_key > other.m_key); - } - -}; - -class CONTACT_KEY_TOKEN_COMP -{ - public: - - bool operator() ( const CONTACT_KEY_TOKEN& a, const CONTACT_KEY_TOKEN& b ) - { - return ( a < b ); - } -}; - - -void btContactArray::merge_contacts( - const btContactArray & contacts, bool normal_contact_average) -{ - clear(); - - int i; - if(contacts.size()==0) return; - - - if(contacts.size()==1) - { - push_back(contacts[0]); - return; - } - - btAlignedObjectArray keycontacts; - - keycontacts.reserve(contacts.size()); - - //fill key contacts - - for ( i = 0;im_depth - CONTACT_DIFF_EPSILON > scontact->m_depth)//) - { - *pcontact = *scontact; - coincident_count = 0; - } - else if(normal_contact_average) - { - if(btFabs(pcontact->m_depth - scontact->m_depth)m_normal; - coincident_count++; - } - } - } - } - else - {//add new contact - - if(normal_contact_average && coincident_count>0) - { - pcontact->interpolate_normals(coincident_normals,coincident_count); - coincident_count = 0; - } - - push_back(*scontact); - pcontact = &(*this)[this->size()-1]; - } - last_key = key; - } -} - -void btContactArray::merge_contacts_unique(const btContactArray & contacts) -{ - clear(); - - if(contacts.size()==0) return; - - if(contacts.size()==1) - { - push_back(contacts[0]); - return; - } - - GIM_CONTACT average_contact = contacts[0]; - - for (int i=1;i -{ -public: - btContactArray() - { - reserve(64); - } - - SIMD_FORCE_INLINE void push_contact( - const btVector3 &point,const btVector3 & normal, - btScalar depth, int feature1, int feature2) - { - push_back( GIM_CONTACT(point,normal,depth,feature1,feature2) ); - } - - SIMD_FORCE_INLINE void push_triangle_contacts( - const GIM_TRIANGLE_CONTACT & tricontact, - int feature1,int feature2) - { - for(int i = 0;i splitValue) - { - //swap - primitive_boxes.swap(i,splitIndex); - //swapLeafNodes(i,splitIndex); - splitIndex++; - } - } - - //if the splitIndex causes unbalanced trees, fix this by using the center in between startIndex and endIndex - //otherwise the tree-building might fail due to stack-overflows in certain cases. - //unbalanced1 is unsafe: it can cause stack overflows - //bool unbalanced1 = ((splitIndex==startIndex) || (splitIndex == (endIndex-1))); - - //unbalanced2 should work too: always use center (perfect balanced trees) - //bool unbalanced2 = true; - - //this should be safe too: - int rangeBalancedIndices = numIndices/3; - bool unbalanced = ((splitIndex<=(startIndex+rangeBalancedIndices)) || (splitIndex >=(endIndex-1-rangeBalancedIndices))); - - if (unbalanced) - { - splitIndex = startIndex+ (numIndices>>1); - } - - btAssert(!((splitIndex==startIndex) || (splitIndex == (endIndex)))); - - return splitIndex; - -} - - -void btBvhTree::_build_sub_tree(GIM_BVH_DATA_ARRAY & primitive_boxes, int startIndex, int endIndex) -{ - int curIndex = m_num_nodes; - m_num_nodes++; - - btAssert((endIndex-startIndex)>0); - - if ((endIndex-startIndex)==1) - { - //We have a leaf node - setNodeBound(curIndex,primitive_boxes[startIndex].m_bound); - m_node_array[curIndex].setDataIndex(primitive_boxes[startIndex].m_data); - - return; - } - //calculate Best Splitting Axis and where to split it. Sort the incoming 'leafNodes' array within range 'startIndex/endIndex'. - - //split axis - int splitIndex = _calc_splitting_axis(primitive_boxes,startIndex,endIndex); - - splitIndex = _sort_and_calc_splitting_index( - primitive_boxes,startIndex,endIndex, - splitIndex//split axis - ); - - - //calc this node bounding box - - btAABB node_bound; - node_bound.invalidate(); - - for (int i=startIndex;iget_primitive_box(getNodeData(nodecount),leafbox); - setNodeBound(nodecount,leafbox); - } - else - { - //const GIM_BVH_TREE_NODE * nodepointer = get_node_pointer(nodecount); - //get left bound - btAABB bound; - bound.invalidate(); - - btAABB temp_box; - - int child_node = getLeftNode(nodecount); - if(child_node) - { - getNodeBound(child_node,temp_box); - bound.merge(temp_box); - } - - child_node = getRightNode(nodecount); - if(child_node) - { - getNodeBound(child_node,temp_box); - bound.merge(temp_box); - } - - setNodeBound(nodecount,bound); - } - } -} - -//! this rebuild the entire set -void btGImpactBvh::buildSet() -{ - //obtain primitive boxes - GIM_BVH_DATA_ARRAY primitive_boxes; - primitive_boxes.resize(m_primitive_manager->get_primitive_count()); - - for (int i = 0;iget_primitive_box(i,primitive_boxes[i].m_bound); - primitive_boxes[i].m_data = i; - } - - m_box_tree.build_tree(primitive_boxes); -} - -//! returns the indices of the primitives in the m_primitive_manager -bool btGImpactBvh::boxQuery(const btAABB & box, btAlignedObjectArray & collided_results) const -{ - int curIndex = 0; - int numNodes = getNodeCount(); - - while (curIndex < numNodes) - { - btAABB bound; - getNodeBound(curIndex,bound); - - //catch bugs in tree data - - bool aabbOverlap = bound.has_collision(box); - bool isleafnode = isLeafNode(curIndex); - - if (isleafnode && aabbOverlap) - { - collided_results.push_back(getNodeData(curIndex)); - } - - if (aabbOverlap || isleafnode) - { - //next subnode - curIndex++; - } - else - { - //skip node - curIndex+= getEscapeNodeIndex(curIndex); - } - } - if(collided_results.size()>0) return true; - return false; -} - - - -//! returns the indices of the primitives in the m_primitive_manager -bool btGImpactBvh::rayQuery( - const btVector3 & ray_dir,const btVector3 & ray_origin , - btAlignedObjectArray & collided_results) const -{ - int curIndex = 0; - int numNodes = getNodeCount(); - - while (curIndex < numNodes) - { - btAABB bound; - getNodeBound(curIndex,bound); - - //catch bugs in tree data - - bool aabbOverlap = bound.collide_ray(ray_origin,ray_dir); - bool isleafnode = isLeafNode(curIndex); - - if (isleafnode && aabbOverlap) - { - collided_results.push_back(getNodeData( curIndex)); - } - - if (aabbOverlap || isleafnode) - { - //next subnode - curIndex++; - } - else - { - //skip node - curIndex+= getEscapeNodeIndex(curIndex); - } - } - if(collided_results.size()>0) return true; - return false; -} - - -SIMD_FORCE_INLINE bool _node_collision( - btGImpactBvh * boxset0, btGImpactBvh * boxset1, - const BT_BOX_BOX_TRANSFORM_CACHE & trans_cache_1to0, - int node0 ,int node1, bool complete_primitive_tests) -{ - btAABB box0; - boxset0->getNodeBound(node0,box0); - btAABB box1; - boxset1->getNodeBound(node1,box1); - - return box0.overlapping_trans_cache(box1,trans_cache_1to0,complete_primitive_tests ); -// box1.appy_transform_trans_cache(trans_cache_1to0); -// return box0.has_collision(box1); - -} - - -//stackless recursive collision routine -static void _find_collision_pairs_recursive( - btGImpactBvh * boxset0, btGImpactBvh * boxset1, - btPairSet * collision_pairs, - const BT_BOX_BOX_TRANSFORM_CACHE & trans_cache_1to0, - int node0, int node1, bool complete_primitive_tests) -{ - - - - if( _node_collision( - boxset0,boxset1,trans_cache_1to0, - node0,node1,complete_primitive_tests) ==false) return;//avoid colliding internal nodes - - if(boxset0->isLeafNode(node0)) - { - if(boxset1->isLeafNode(node1)) - { - // collision result - collision_pairs->push_pair( - boxset0->getNodeData(node0),boxset1->getNodeData(node1)); - return; - } - else - { - - //collide left recursive - - _find_collision_pairs_recursive( - boxset0,boxset1, - collision_pairs,trans_cache_1to0, - node0,boxset1->getLeftNode(node1),false); - - //collide right recursive - _find_collision_pairs_recursive( - boxset0,boxset1, - collision_pairs,trans_cache_1to0, - node0,boxset1->getRightNode(node1),false); - - - } - } - else - { - if(boxset1->isLeafNode(node1)) - { - - //collide left recursive - _find_collision_pairs_recursive( - boxset0,boxset1, - collision_pairs,trans_cache_1to0, - boxset0->getLeftNode(node0),node1,false); - - - //collide right recursive - - _find_collision_pairs_recursive( - boxset0,boxset1, - collision_pairs,trans_cache_1to0, - boxset0->getRightNode(node0),node1,false); - - - } - else - { - //collide left0 left1 - - - - _find_collision_pairs_recursive( - boxset0,boxset1, - collision_pairs,trans_cache_1to0, - boxset0->getLeftNode(node0),boxset1->getLeftNode(node1),false); - - //collide left0 right1 - - _find_collision_pairs_recursive( - boxset0,boxset1, - collision_pairs,trans_cache_1to0, - boxset0->getLeftNode(node0),boxset1->getRightNode(node1),false); - - - //collide right0 left1 - - _find_collision_pairs_recursive( - boxset0,boxset1, - collision_pairs,trans_cache_1to0, - boxset0->getRightNode(node0),boxset1->getLeftNode(node1),false); - - //collide right0 right1 - - _find_collision_pairs_recursive( - boxset0,boxset1, - collision_pairs,trans_cache_1to0, - boxset0->getRightNode(node0),boxset1->getRightNode(node1),false); - - }// else if node1 is not a leaf - }// else if node0 is not a leaf -} - - -void btGImpactBvh::find_collision(btGImpactBvh * boxset0, const btTransform & trans0, - btGImpactBvh * boxset1, const btTransform & trans1, - btPairSet & collision_pairs) -{ - - if(boxset0->getNodeCount()==0 || boxset1->getNodeCount()==0 ) return; - - BT_BOX_BOX_TRANSFORM_CACHE trans_cache_1to0; - - trans_cache_1to0.calc_from_homogenic(trans0,trans1); - -#ifdef TRI_COLLISION_PROFILING - bt_begin_gim02_tree_time(); -#endif //TRI_COLLISION_PROFILING - - _find_collision_pairs_recursive( - boxset0,boxset1, - &collision_pairs,trans_cache_1to0,0,0,true); -#ifdef TRI_COLLISION_PROFILING - bt_end_gim02_tree_time(); -#endif //TRI_COLLISION_PROFILING - -} - diff --git a/extern/bullet2/BulletCollision/Gimpact/btGImpactBvh.h b/extern/bullet2/BulletCollision/Gimpact/btGImpactBvh.h deleted file mode 100644 index 074de4a4694..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/btGImpactBvh.h +++ /dev/null @@ -1,396 +0,0 @@ -#ifndef GIM_BOX_SET_H_INCLUDED -#define GIM_BOX_SET_H_INCLUDED - -/*! \file gim_box_set.h -\author Francisco Len Nßjera -*/ -/* -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "LinearMath/btAlignedObjectArray.h" - -#include "btBoxCollision.h" -#include "btTriangleShapeEx.h" - - - - - -//! Overlapping pair -struct GIM_PAIR -{ - int m_index1; - int m_index2; - GIM_PAIR() - {} - - GIM_PAIR(const GIM_PAIR & p) - { - m_index1 = p.m_index1; - m_index2 = p.m_index2; - } - - GIM_PAIR(int index1, int index2) - { - m_index1 = index1; - m_index2 = index2; - } -}; - -//! A pairset array -class btPairSet: public btAlignedObjectArray -{ -public: - btPairSet() - { - reserve(32); - } - inline void push_pair(int index1,int index2) - { - push_back(GIM_PAIR(index1,index2)); - } - - inline void push_pair_inv(int index1,int index2) - { - push_back(GIM_PAIR(index2,index1)); - } -}; - - -///GIM_BVH_DATA is an internal GIMPACT collision structure to contain axis aligned bounding box -struct GIM_BVH_DATA -{ - btAABB m_bound; - int m_data; -}; - -//! Node Structure for trees -class GIM_BVH_TREE_NODE -{ -public: - btAABB m_bound; -protected: - int m_escapeIndexOrDataIndex; -public: - GIM_BVH_TREE_NODE() - { - m_escapeIndexOrDataIndex = 0; - } - - SIMD_FORCE_INLINE bool isLeafNode() const - { - //skipindex is negative (internal node), triangleindex >=0 (leafnode) - return (m_escapeIndexOrDataIndex>=0); - } - - SIMD_FORCE_INLINE int getEscapeIndex() const - { - //btAssert(m_escapeIndexOrDataIndex < 0); - return -m_escapeIndexOrDataIndex; - } - - SIMD_FORCE_INLINE void setEscapeIndex(int index) - { - m_escapeIndexOrDataIndex = -index; - } - - SIMD_FORCE_INLINE int getDataIndex() const - { - //btAssert(m_escapeIndexOrDataIndex >= 0); - - return m_escapeIndexOrDataIndex; - } - - SIMD_FORCE_INLINE void setDataIndex(int index) - { - m_escapeIndexOrDataIndex = index; - } - -}; - - -class GIM_BVH_DATA_ARRAY:public btAlignedObjectArray -{ -}; - - -class GIM_BVH_TREE_NODE_ARRAY:public btAlignedObjectArray -{ -}; - - - - -//! Basic Box tree structure -class btBvhTree -{ -protected: - int m_num_nodes; - GIM_BVH_TREE_NODE_ARRAY m_node_array; -protected: - int _sort_and_calc_splitting_index( - GIM_BVH_DATA_ARRAY & primitive_boxes, - int startIndex, int endIndex, int splitAxis); - - int _calc_splitting_axis(GIM_BVH_DATA_ARRAY & primitive_boxes, int startIndex, int endIndex); - - void _build_sub_tree(GIM_BVH_DATA_ARRAY & primitive_boxes, int startIndex, int endIndex); -public: - btBvhTree() - { - m_num_nodes = 0; - } - - //! prototype functions for box tree management - //!@{ - void build_tree(GIM_BVH_DATA_ARRAY & primitive_boxes); - - SIMD_FORCE_INLINE void clearNodes() - { - m_node_array.clear(); - m_num_nodes = 0; - } - - //! node count - SIMD_FORCE_INLINE int getNodeCount() const - { - return m_num_nodes; - } - - //! tells if the node is a leaf - SIMD_FORCE_INLINE bool isLeafNode(int nodeindex) const - { - return m_node_array[nodeindex].isLeafNode(); - } - - SIMD_FORCE_INLINE int getNodeData(int nodeindex) const - { - return m_node_array[nodeindex].getDataIndex(); - } - - SIMD_FORCE_INLINE void getNodeBound(int nodeindex, btAABB & bound) const - { - bound = m_node_array[nodeindex].m_bound; - } - - SIMD_FORCE_INLINE void setNodeBound(int nodeindex, const btAABB & bound) - { - m_node_array[nodeindex].m_bound = bound; - } - - SIMD_FORCE_INLINE int getLeftNode(int nodeindex) const - { - return nodeindex+1; - } - - SIMD_FORCE_INLINE int getRightNode(int nodeindex) const - { - if(m_node_array[nodeindex+1].isLeafNode()) return nodeindex+2; - return nodeindex+1 + m_node_array[nodeindex+1].getEscapeIndex(); - } - - SIMD_FORCE_INLINE int getEscapeNodeIndex(int nodeindex) const - { - return m_node_array[nodeindex].getEscapeIndex(); - } - - SIMD_FORCE_INLINE const GIM_BVH_TREE_NODE * get_node_pointer(int index = 0) const - { - return &m_node_array[index]; - } - - //!@} -}; - - -//! Prototype Base class for primitive classification -/*! -This class is a wrapper for primitive collections. -This tells relevant info for the Bounding Box set classes, which take care of space classification. -This class can manage Compound shapes and trimeshes, and if it is managing trimesh then the Hierarchy Bounding Box classes will take advantage of primitive Vs Box overlapping tests for getting optimal results and less Per Box compairisons. -*/ -class btPrimitiveManagerBase -{ -public: - - virtual ~btPrimitiveManagerBase() {} - - //! determines if this manager consist on only triangles, which special case will be optimized - virtual bool is_trimesh() const = 0; - virtual int get_primitive_count() const = 0; - virtual void get_primitive_box(int prim_index ,btAABB & primbox) const = 0; - //! retrieves only the points of the triangle, and the collision margin - virtual void get_primitive_triangle(int prim_index,btPrimitiveTriangle & triangle) const= 0; -}; - - -//! Structure for containing Boxes -/*! -This class offers an structure for managing a box tree of primitives. -Requires a Primitive prototype (like btPrimitiveManagerBase ) -*/ -class btGImpactBvh -{ -protected: - btBvhTree m_box_tree; - btPrimitiveManagerBase * m_primitive_manager; - -protected: - //stackless refit - void refit(); -public: - - //! this constructor doesn't build the tree. you must call buildSet - btGImpactBvh() - { - m_primitive_manager = NULL; - } - - //! this constructor doesn't build the tree. you must call buildSet - btGImpactBvh(btPrimitiveManagerBase * primitive_manager) - { - m_primitive_manager = primitive_manager; - } - - SIMD_FORCE_INLINE btAABB getGlobalBox() const - { - btAABB totalbox; - getNodeBound(0, totalbox); - return totalbox; - } - - SIMD_FORCE_INLINE void setPrimitiveManager(btPrimitiveManagerBase * primitive_manager) - { - m_primitive_manager = primitive_manager; - } - - SIMD_FORCE_INLINE btPrimitiveManagerBase * getPrimitiveManager() const - { - return m_primitive_manager; - } - - -//! node manager prototype functions -///@{ - - //! this attemps to refit the box set. - SIMD_FORCE_INLINE void update() - { - refit(); - } - - //! this rebuild the entire set - void buildSet(); - - //! returns the indices of the primitives in the m_primitive_manager - bool boxQuery(const btAABB & box, btAlignedObjectArray & collided_results) const; - - //! returns the indices of the primitives in the m_primitive_manager - SIMD_FORCE_INLINE bool boxQueryTrans(const btAABB & box, - const btTransform & transform, btAlignedObjectArray & collided_results) const - { - btAABB transbox=box; - transbox.appy_transform(transform); - return boxQuery(transbox,collided_results); - } - - //! returns the indices of the primitives in the m_primitive_manager - bool rayQuery( - const btVector3 & ray_dir,const btVector3 & ray_origin , - btAlignedObjectArray & collided_results) const; - - //! tells if this set has hierarcht - SIMD_FORCE_INLINE bool hasHierarchy() const - { - return true; - } - - //! tells if this set is a trimesh - SIMD_FORCE_INLINE bool isTrimesh() const - { - return m_primitive_manager->is_trimesh(); - } - - //! node count - SIMD_FORCE_INLINE int getNodeCount() const - { - return m_box_tree.getNodeCount(); - } - - //! tells if the node is a leaf - SIMD_FORCE_INLINE bool isLeafNode(int nodeindex) const - { - return m_box_tree.isLeafNode(nodeindex); - } - - SIMD_FORCE_INLINE int getNodeData(int nodeindex) const - { - return m_box_tree.getNodeData(nodeindex); - } - - SIMD_FORCE_INLINE void getNodeBound(int nodeindex, btAABB & bound) const - { - m_box_tree.getNodeBound(nodeindex, bound); - } - - SIMD_FORCE_INLINE void setNodeBound(int nodeindex, const btAABB & bound) - { - m_box_tree.setNodeBound(nodeindex, bound); - } - - - SIMD_FORCE_INLINE int getLeftNode(int nodeindex) const - { - return m_box_tree.getLeftNode(nodeindex); - } - - SIMD_FORCE_INLINE int getRightNode(int nodeindex) const - { - return m_box_tree.getRightNode(nodeindex); - } - - SIMD_FORCE_INLINE int getEscapeNodeIndex(int nodeindex) const - { - return m_box_tree.getEscapeNodeIndex(nodeindex); - } - - SIMD_FORCE_INLINE void getNodeTriangle(int nodeindex,btPrimitiveTriangle & triangle) const - { - m_primitive_manager->get_primitive_triangle(getNodeData(nodeindex),triangle); - } - - - SIMD_FORCE_INLINE const GIM_BVH_TREE_NODE * get_node_pointer(int index = 0) const - { - return m_box_tree.get_node_pointer(index); - } - - - static float getAverageTreeCollisionTime(); - - - static void find_collision(btGImpactBvh * boxset1, const btTransform & trans1, - btGImpactBvh * boxset2, const btTransform & trans2, - btPairSet & collision_pairs); -}; - - -#endif // GIM_BOXPRUNING_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp b/extern/bullet2/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp deleted file mode 100644 index 2f2c09ffc03..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp +++ /dev/null @@ -1,904 +0,0 @@ -/* -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ -/* -Author: Francisco Len Nßjera -Concave-Concave Collision - -*/ - -#include "BulletCollision/CollisionDispatch/btManifoldResult.h" -#include "LinearMath/btIDebugDraw.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "BulletCollision/CollisionShapes/btBoxShape.h" -#include "btGImpactCollisionAlgorithm.h" -#include "btContactProcessing.h" -#include "LinearMath/btQuickprof.h" - - -//! Class for accessing the plane equation -class btPlaneShape : public btStaticPlaneShape -{ -public: - - btPlaneShape(const btVector3& v, float f) - :btStaticPlaneShape(v,f) - { - } - - void get_plane_equation(btVector4 &equation) - { - equation[0] = m_planeNormal[0]; - equation[1] = m_planeNormal[1]; - equation[2] = m_planeNormal[2]; - equation[3] = m_planeConstant; - } - - - void get_plane_equation_transformed(const btTransform & trans,btVector4 &equation) - { - equation[0] = trans.getBasis().getRow(0).dot(m_planeNormal); - equation[1] = trans.getBasis().getRow(1).dot(m_planeNormal); - equation[2] = trans.getBasis().getRow(2).dot(m_planeNormal); - equation[3] = trans.getOrigin().dot(m_planeNormal) + m_planeConstant; - } -}; - - - -////////////////////////////////////////////////////////////////////////////////////////////// -#ifdef TRI_COLLISION_PROFILING - -btClock g_triangle_clock; - -float g_accum_triangle_collision_time = 0; -int g_count_triangle_collision = 0; - -void bt_begin_gim02_tri_time() -{ - g_triangle_clock.reset(); -} - -void bt_end_gim02_tri_time() -{ - g_accum_triangle_collision_time += g_triangle_clock.getTimeMicroseconds(); - g_count_triangle_collision++; -} -#endif //TRI_COLLISION_PROFILING -//! Retrieving shapes shapes -/*! -Declared here due of insuficent space on Pool allocators -*/ -//!@{ -class GIM_ShapeRetriever -{ -public: - btGImpactShapeInterface * m_gim_shape; - btTriangleShapeEx m_trishape; - btTetrahedronShapeEx m_tetrashape; - -public: - class ChildShapeRetriever - { - public: - GIM_ShapeRetriever * m_parent; - virtual btCollisionShape * getChildShape(int index) - { - return m_parent->m_gim_shape->getChildShape(index); - } - virtual ~ChildShapeRetriever() {} - }; - - class TriangleShapeRetriever:public ChildShapeRetriever - { - public: - - virtual btCollisionShape * getChildShape(int index) - { - m_parent->m_gim_shape->getBulletTriangle(index,m_parent->m_trishape); - return &m_parent->m_trishape; - } - virtual ~TriangleShapeRetriever() {} - }; - - class TetraShapeRetriever:public ChildShapeRetriever - { - public: - - virtual btCollisionShape * getChildShape(int index) - { - m_parent->m_gim_shape->getBulletTetrahedron(index,m_parent->m_tetrashape); - return &m_parent->m_tetrashape; - } - }; -public: - ChildShapeRetriever m_child_retriever; - TriangleShapeRetriever m_tri_retriever; - TetraShapeRetriever m_tetra_retriever; - ChildShapeRetriever * m_current_retriever; - - GIM_ShapeRetriever(btGImpactShapeInterface * gim_shape) - { - m_gim_shape = gim_shape; - //select retriever - if(m_gim_shape->needsRetrieveTriangles()) - { - m_current_retriever = &m_tri_retriever; - } - else if(m_gim_shape->needsRetrieveTetrahedrons()) - { - m_current_retriever = &m_tetra_retriever; - } - else - { - m_current_retriever = &m_child_retriever; - } - - m_current_retriever->m_parent = this; - } - - btCollisionShape * getChildShape(int index) - { - return m_current_retriever->getChildShape(index); - } - - -}; - - - -//!@} - - -#ifdef TRI_COLLISION_PROFILING - -//! Gets the average time in miliseconds of tree collisions -float btGImpactCollisionAlgorithm::getAverageTreeCollisionTime() -{ - return btGImpactBoxSet::getAverageTreeCollisionTime(); - -} - -//! Gets the average time in miliseconds of triangle collisions -float btGImpactCollisionAlgorithm::getAverageTriangleCollisionTime() -{ - if(g_count_triangle_collision == 0) return 0; - - float avgtime = g_accum_triangle_collision_time; - avgtime /= (float)g_count_triangle_collision; - - g_accum_triangle_collision_time = 0; - g_count_triangle_collision = 0; - - return avgtime; -} - -#endif //TRI_COLLISION_PROFILING - - - -btGImpactCollisionAlgorithm::btGImpactCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) -: btActivatingCollisionAlgorithm(ci,body0,body1) -{ - m_manifoldPtr = NULL; - m_convex_algorithm = NULL; -} - -btGImpactCollisionAlgorithm::~btGImpactCollisionAlgorithm() -{ - clearCache(); -} - - - - - -void btGImpactCollisionAlgorithm::addContactPoint(btCollisionObject * body0, - btCollisionObject * body1, - const btVector3 & point, - const btVector3 & normal, - btScalar distance) -{ - m_resultOut->setShapeIdentifiersA(m_part0,m_triface0); - m_resultOut->setShapeIdentifiersB(m_part1,m_triface1); - checkManifold(body0,body1); - m_resultOut->addContactPoint(normal,point,distance); -} - - -void btGImpactCollisionAlgorithm::shape_vs_shape_collision( - btCollisionObject * body0, - btCollisionObject * body1, - btCollisionShape * shape0, - btCollisionShape * shape1) -{ - - btCollisionShape* tmpShape0 = body0->getCollisionShape(); - btCollisionShape* tmpShape1 = body1->getCollisionShape(); - - body0->internalSetTemporaryCollisionShape(shape0); - body1->internalSetTemporaryCollisionShape(shape1); - - { - btCollisionAlgorithm* algor = newAlgorithm(body0,body1); - // post : checkManifold is called - - m_resultOut->setShapeIdentifiersA(m_part0,m_triface0); - m_resultOut->setShapeIdentifiersB(m_part1,m_triface1); - - algor->processCollision(body0,body1,*m_dispatchInfo,m_resultOut); - - algor->~btCollisionAlgorithm(); - m_dispatcher->freeCollisionAlgorithm(algor); - } - - body0->internalSetTemporaryCollisionShape(tmpShape0); - body1->internalSetTemporaryCollisionShape(tmpShape1); -} - -void btGImpactCollisionAlgorithm::convex_vs_convex_collision( - btCollisionObject * body0, - btCollisionObject * body1, - btCollisionShape * shape0, - btCollisionShape * shape1) -{ - - btCollisionShape* tmpShape0 = body0->getCollisionShape(); - btCollisionShape* tmpShape1 = body1->getCollisionShape(); - - body0->internalSetTemporaryCollisionShape(shape0); - body1->internalSetTemporaryCollisionShape(shape1); - - - m_resultOut->setShapeIdentifiersA(m_part0,m_triface0); - m_resultOut->setShapeIdentifiersB(m_part1,m_triface1); - - checkConvexAlgorithm(body0,body1); - m_convex_algorithm->processCollision(body0,body1,*m_dispatchInfo,m_resultOut); - - body0->internalSetTemporaryCollisionShape(tmpShape0); - body1->internalSetTemporaryCollisionShape(tmpShape1); - -} - - - - -void btGImpactCollisionAlgorithm::gimpact_vs_gimpact_find_pairs( - const btTransform & trans0, - const btTransform & trans1, - btGImpactShapeInterface * shape0, - btGImpactShapeInterface * shape1,btPairSet & pairset) -{ - if(shape0->hasBoxSet() && shape1->hasBoxSet()) - { - btGImpactBoxSet::find_collision(shape0->getBoxSet(),trans0,shape1->getBoxSet(),trans1,pairset); - } - else - { - btAABB boxshape0; - btAABB boxshape1; - int i = shape0->getNumChildShapes(); - - while(i--) - { - shape0->getChildAabb(i,trans0,boxshape0.m_min,boxshape0.m_max); - - int j = shape1->getNumChildShapes(); - while(j--) - { - shape1->getChildAabb(i,trans1,boxshape1.m_min,boxshape1.m_max); - - if(boxshape1.has_collision(boxshape0)) - { - pairset.push_pair(i,j); - } - } - } - } - - -} - - -void btGImpactCollisionAlgorithm::gimpact_vs_shape_find_pairs( - const btTransform & trans0, - const btTransform & trans1, - btGImpactShapeInterface * shape0, - btCollisionShape * shape1, - btAlignedObjectArray & collided_primitives) -{ - - btAABB boxshape; - - - if(shape0->hasBoxSet()) - { - btTransform trans1to0 = trans0.inverse(); - trans1to0 *= trans1; - - shape1->getAabb(trans1to0,boxshape.m_min,boxshape.m_max); - - shape0->getBoxSet()->boxQuery(boxshape, collided_primitives); - } - else - { - shape1->getAabb(trans1,boxshape.m_min,boxshape.m_max); - - btAABB boxshape0; - int i = shape0->getNumChildShapes(); - - while(i--) - { - shape0->getChildAabb(i,trans0,boxshape0.m_min,boxshape0.m_max); - - if(boxshape.has_collision(boxshape0)) - { - collided_primitives.push_back(i); - } - } - - } - -} - - -void btGImpactCollisionAlgorithm::collide_gjk_triangles(btCollisionObject * body0, - btCollisionObject * body1, - btGImpactMeshShapePart * shape0, - btGImpactMeshShapePart * shape1, - const int * pairs, int pair_count) -{ - btTriangleShapeEx tri0; - btTriangleShapeEx tri1; - - shape0->lockChildShapes(); - shape1->lockChildShapes(); - - const int * pair_pointer = pairs; - - while(pair_count--) - { - - m_triface0 = *(pair_pointer); - m_triface1 = *(pair_pointer+1); - pair_pointer+=2; - - - - shape0->getBulletTriangle(m_triface0,tri0); - shape1->getBulletTriangle(m_triface1,tri1); - - - //collide two convex shapes - if(tri0.overlap_test_conservative(tri1)) - { - convex_vs_convex_collision(body0,body1,&tri0,&tri1); - } - - } - - shape0->unlockChildShapes(); - shape1->unlockChildShapes(); -} - -void btGImpactCollisionAlgorithm::collide_sat_triangles(btCollisionObject * body0, - btCollisionObject * body1, - btGImpactMeshShapePart * shape0, - btGImpactMeshShapePart * shape1, - const int * pairs, int pair_count) -{ - btTransform orgtrans0 = body0->getWorldTransform(); - btTransform orgtrans1 = body1->getWorldTransform(); - - btPrimitiveTriangle ptri0; - btPrimitiveTriangle ptri1; - GIM_TRIANGLE_CONTACT contact_data; - - shape0->lockChildShapes(); - shape1->lockChildShapes(); - - const int * pair_pointer = pairs; - - while(pair_count--) - { - - m_triface0 = *(pair_pointer); - m_triface1 = *(pair_pointer+1); - pair_pointer+=2; - - - shape0->getPrimitiveTriangle(m_triface0,ptri0); - shape1->getPrimitiveTriangle(m_triface1,ptri1); - - #ifdef TRI_COLLISION_PROFILING - bt_begin_gim02_tri_time(); - #endif - - ptri0.applyTransform(orgtrans0); - ptri1.applyTransform(orgtrans1); - - - //build planes - ptri0.buildTriPlane(); - ptri1.buildTriPlane(); - // test conservative - - - - if(ptri0.overlap_test_conservative(ptri1)) - { - if(ptri0.find_triangle_collision_clip_method(ptri1,contact_data)) - { - - int j = contact_data.m_point_count; - while(j--) - { - - addContactPoint(body0, body1, - contact_data.m_points[j], - contact_data.m_separating_normal, - -contact_data.m_penetration_depth); - } - } - } - - #ifdef TRI_COLLISION_PROFILING - bt_end_gim02_tri_time(); - #endif - - } - - shape0->unlockChildShapes(); - shape1->unlockChildShapes(); - -} - - -void btGImpactCollisionAlgorithm::gimpact_vs_gimpact( - btCollisionObject * body0, - btCollisionObject * body1, - btGImpactShapeInterface * shape0, - btGImpactShapeInterface * shape1) -{ - - if(shape0->getGImpactShapeType()==CONST_GIMPACT_TRIMESH_SHAPE) - { - btGImpactMeshShape * meshshape0 = static_cast(shape0); - m_part0 = meshshape0->getMeshPartCount(); - - while(m_part0--) - { - gimpact_vs_gimpact(body0,body1,meshshape0->getMeshPart(m_part0),shape1); - } - - return; - } - - if(shape1->getGImpactShapeType()==CONST_GIMPACT_TRIMESH_SHAPE) - { - btGImpactMeshShape * meshshape1 = static_cast(shape1); - m_part1 = meshshape1->getMeshPartCount(); - - while(m_part1--) - { - - gimpact_vs_gimpact(body0,body1,shape0,meshshape1->getMeshPart(m_part1)); - - } - - return; - } - - - btTransform orgtrans0 = body0->getWorldTransform(); - btTransform orgtrans1 = body1->getWorldTransform(); - - btPairSet pairset; - - gimpact_vs_gimpact_find_pairs(orgtrans0,orgtrans1,shape0,shape1,pairset); - - if(pairset.size()== 0) return; - - if(shape0->getGImpactShapeType() == CONST_GIMPACT_TRIMESH_SHAPE_PART && - shape1->getGImpactShapeType() == CONST_GIMPACT_TRIMESH_SHAPE_PART) - { - btGImpactMeshShapePart * shapepart0 = static_cast(shape0); - btGImpactMeshShapePart * shapepart1 = static_cast(shape1); - //specialized function - #ifdef BULLET_TRIANGLE_COLLISION - collide_gjk_triangles(body0,body1,shapepart0,shapepart1,&pairset[0].m_index1,pairset.size()); - #else - collide_sat_triangles(body0,body1,shapepart0,shapepart1,&pairset[0].m_index1,pairset.size()); - #endif - - return; - } - - //general function - - shape0->lockChildShapes(); - shape1->lockChildShapes(); - - GIM_ShapeRetriever retriever0(shape0); - GIM_ShapeRetriever retriever1(shape1); - - bool child_has_transform0 = shape0->childrenHasTransform(); - bool child_has_transform1 = shape1->childrenHasTransform(); - - int i = pairset.size(); - while(i--) - { - GIM_PAIR * pair = &pairset[i]; - m_triface0 = pair->m_index1; - m_triface1 = pair->m_index2; - btCollisionShape * colshape0 = retriever0.getChildShape(m_triface0); - btCollisionShape * colshape1 = retriever1.getChildShape(m_triface1); - - if(child_has_transform0) - { - body0->setWorldTransform(orgtrans0*shape0->getChildTransform(m_triface0)); - } - - if(child_has_transform1) - { - body1->setWorldTransform(orgtrans1*shape1->getChildTransform(m_triface1)); - } - - //collide two convex shapes - convex_vs_convex_collision(body0,body1,colshape0,colshape1); - - - if(child_has_transform0) - { - body0->setWorldTransform(orgtrans0); - } - - if(child_has_transform1) - { - body1->setWorldTransform(orgtrans1); - } - - } - - shape0->unlockChildShapes(); - shape1->unlockChildShapes(); -} - -void btGImpactCollisionAlgorithm::gimpact_vs_shape(btCollisionObject * body0, - btCollisionObject * body1, - btGImpactShapeInterface * shape0, - btCollisionShape * shape1,bool swapped) -{ - if(shape0->getGImpactShapeType()==CONST_GIMPACT_TRIMESH_SHAPE) - { - btGImpactMeshShape * meshshape0 = static_cast(shape0); - int& part = swapped ? m_part1 : m_part0; - part = meshshape0->getMeshPartCount(); - - while(part--) - { - - gimpact_vs_shape(body0, - body1, - meshshape0->getMeshPart(part), - shape1,swapped); - - } - - return; - } - - #ifdef GIMPACT_VS_PLANE_COLLISION - if(shape0->getGImpactShapeType() == CONST_GIMPACT_TRIMESH_SHAPE_PART && - shape1->getShapeType() == STATIC_PLANE_PROXYTYPE) - { - btGImpactMeshShapePart * shapepart = static_cast(shape0); - btStaticPlaneShape * planeshape = static_cast(shape1); - gimpacttrimeshpart_vs_plane_collision(body0,body1,shapepart,planeshape,swapped); - return; - } - - #endif - - - - if(shape1->isCompound()) - { - btCompoundShape * compoundshape = static_cast(shape1); - gimpact_vs_compoundshape(body0,body1,shape0,compoundshape,swapped); - return; - } - else if(shape1->isConcave()) - { - btConcaveShape * concaveshape = static_cast(shape1); - gimpact_vs_concave(body0,body1,shape0,concaveshape,swapped); - return; - } - - - btTransform orgtrans0 = body0->getWorldTransform(); - - btTransform orgtrans1 = body1->getWorldTransform(); - - btAlignedObjectArray collided_results; - - gimpact_vs_shape_find_pairs(orgtrans0,orgtrans1,shape0,shape1,collided_results); - - if(collided_results.size() == 0) return; - - - shape0->lockChildShapes(); - - GIM_ShapeRetriever retriever0(shape0); - - - bool child_has_transform0 = shape0->childrenHasTransform(); - - - int i = collided_results.size(); - - while(i--) - { - int child_index = collided_results[i]; - if(swapped) - m_triface1 = child_index; - else - m_triface0 = child_index; - - btCollisionShape * colshape0 = retriever0.getChildShape(child_index); - - if(child_has_transform0) - { - body0->setWorldTransform(orgtrans0*shape0->getChildTransform(child_index)); - } - - //collide two shapes - if(swapped) - { - shape_vs_shape_collision(body1,body0,shape1,colshape0); - } - else - { - shape_vs_shape_collision(body0,body1,colshape0,shape1); - } - - //restore transforms - if(child_has_transform0) - { - body0->setWorldTransform(orgtrans0); - } - - } - - shape0->unlockChildShapes(); - -} - -void btGImpactCollisionAlgorithm::gimpact_vs_compoundshape(btCollisionObject * body0, - btCollisionObject * body1, - btGImpactShapeInterface * shape0, - btCompoundShape * shape1,bool swapped) -{ - btTransform orgtrans1 = body1->getWorldTransform(); - - int i = shape1->getNumChildShapes(); - while(i--) - { - - btCollisionShape * colshape1 = shape1->getChildShape(i); - btTransform childtrans1 = orgtrans1*shape1->getChildTransform(i); - - body1->setWorldTransform(childtrans1); - - //collide child shape - gimpact_vs_shape(body0, body1, - shape0,colshape1,swapped); - - - //restore transforms - body1->setWorldTransform(orgtrans1); - } -} - -void btGImpactCollisionAlgorithm::gimpacttrimeshpart_vs_plane_collision( - btCollisionObject * body0, - btCollisionObject * body1, - btGImpactMeshShapePart * shape0, - btStaticPlaneShape * shape1,bool swapped) -{ - - - btTransform orgtrans0 = body0->getWorldTransform(); - btTransform orgtrans1 = body1->getWorldTransform(); - - btPlaneShape * planeshape = static_cast(shape1); - btVector4 plane; - planeshape->get_plane_equation_transformed(orgtrans1,plane); - - //test box against plane - - btAABB tribox; - shape0->getAabb(orgtrans0,tribox.m_min,tribox.m_max); - tribox.increment_margin(planeshape->getMargin()); - - if( tribox.plane_classify(plane)!= BT_CONST_COLLIDE_PLANE) return; - - shape0->lockChildShapes(); - - btScalar margin = shape0->getMargin() + planeshape->getMargin(); - - btVector3 vertex; - int vi = shape0->getVertexCount(); - while(vi--) - { - shape0->getVertex(vi,vertex); - vertex = orgtrans0(vertex); - - btScalar distance = vertex.dot(plane) - plane[3] - margin; - - if(distance<0.0)//add contact - { - if(swapped) - { - addContactPoint(body1, body0, - vertex, - -plane, - distance); - } - else - { - addContactPoint(body0, body1, - vertex, - plane, - distance); - } - } - } - - shape0->unlockChildShapes(); -} - - - - -class btGImpactTriangleCallback: public btTriangleCallback -{ -public: - btGImpactCollisionAlgorithm * algorithm; - btCollisionObject * body0; - btCollisionObject * body1; - btGImpactShapeInterface * gimpactshape0; - bool swapped; - btScalar margin; - - virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex) - { - btTriangleShapeEx tri1(triangle[0],triangle[1],triangle[2]); - tri1.setMargin(margin); - if(swapped) - { - algorithm->setPart0(partId); - algorithm->setFace0(triangleIndex); - } - else - { - algorithm->setPart1(partId); - algorithm->setFace1(triangleIndex); - } - algorithm->gimpact_vs_shape( - body0,body1,gimpactshape0,&tri1,swapped); - } -}; - - - - -void btGImpactCollisionAlgorithm::gimpact_vs_concave( - btCollisionObject * body0, - btCollisionObject * body1, - btGImpactShapeInterface * shape0, - btConcaveShape * shape1,bool swapped) -{ - //create the callback - btGImpactTriangleCallback tricallback; - tricallback.algorithm = this; - tricallback.body0 = body0; - tricallback.body1 = body1; - tricallback.gimpactshape0 = shape0; - tricallback.swapped = swapped; - tricallback.margin = shape1->getMargin(); - - //getting the trimesh AABB - btTransform gimpactInConcaveSpace; - - gimpactInConcaveSpace = body1->getWorldTransform().inverse() * body0->getWorldTransform(); - - btVector3 minAABB,maxAABB; - shape0->getAabb(gimpactInConcaveSpace,minAABB,maxAABB); - - shape1->processAllTriangles(&tricallback,minAABB,maxAABB); - -} - - - -void btGImpactCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - clearCache(); - - m_resultOut = resultOut; - m_dispatchInfo = &dispatchInfo; - btGImpactShapeInterface * gimpactshape0; - btGImpactShapeInterface * gimpactshape1; - - if (body0->getCollisionShape()->getShapeType()==GIMPACT_SHAPE_PROXYTYPE) - { - gimpactshape0 = static_cast(body0->getCollisionShape()); - - if( body1->getCollisionShape()->getShapeType()==GIMPACT_SHAPE_PROXYTYPE ) - { - gimpactshape1 = static_cast(body1->getCollisionShape()); - - gimpact_vs_gimpact(body0,body1,gimpactshape0,gimpactshape1); - } - else - { - gimpact_vs_shape(body0,body1,gimpactshape0,body1->getCollisionShape(),false); - } - - } - else if (body1->getCollisionShape()->getShapeType()==GIMPACT_SHAPE_PROXYTYPE ) - { - gimpactshape1 = static_cast(body1->getCollisionShape()); - - gimpact_vs_shape(body1,body0,gimpactshape1,body0->getCollisionShape(),true); - } -} - - -btScalar btGImpactCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - return 1.f; - -} - -///////////////////////////////////// REGISTERING ALGORITHM ////////////////////////////////////////////// - - - -//! Use this function for register the algorithm externally -void btGImpactCollisionAlgorithm::registerAlgorithm(btCollisionDispatcher * dispatcher) -{ - - static btGImpactCollisionAlgorithm::CreateFunc s_gimpact_cf; - - int i; - - for ( i = 0;i < MAX_BROADPHASE_COLLISION_TYPES ;i++ ) - { - dispatcher->registerCollisionCreateFunc(GIMPACT_SHAPE_PROXYTYPE,i ,&s_gimpact_cf); - } - - for ( i = 0;i < MAX_BROADPHASE_COLLISION_TYPES ;i++ ) - { - dispatcher->registerCollisionCreateFunc(i,GIMPACT_SHAPE_PROXYTYPE ,&s_gimpact_cf); - } - -} diff --git a/extern/bullet2/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h b/extern/bullet2/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h deleted file mode 100644 index 453472aa034..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h +++ /dev/null @@ -1,306 +0,0 @@ -/*! \file btGImpactShape.h -\author Francisco Len Nßjera -*/ -/* -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BVH_CONCAVE_COLLISION_ALGORITHM_H -#define BVH_CONCAVE_COLLISION_ALGORITHM_H - -#include "BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h" -#include "BulletCollision/BroadphaseCollision/btDispatcher.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h" -#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" -class btDispatcher; -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" - -#include "LinearMath/btAlignedObjectArray.h" - -#include "btGImpactShape.h" -#include "BulletCollision/CollisionShapes/btStaticPlaneShape.h" -#include "BulletCollision/CollisionShapes/btCompoundShape.h" -#include "BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h" -#include "LinearMath/btIDebugDraw.h" - - - -//! Collision Algorithm for GImpact Shapes -/*! -For register this algorithm in Bullet, proceed as following: - \code -btCollisionDispatcher * dispatcher = static_cast(m_dynamicsWorld ->getDispatcher()); -btGImpactCollisionAlgorithm::registerAlgorithm(dispatcher); - \endcode -*/ -class btGImpactCollisionAlgorithm : public btActivatingCollisionAlgorithm -{ -protected: - btCollisionAlgorithm * m_convex_algorithm; - btPersistentManifold * m_manifoldPtr; - btManifoldResult* m_resultOut; - const btDispatcherInfo * m_dispatchInfo; - int m_triface0; - int m_part0; - int m_triface1; - int m_part1; - - - //! Creates a new contact point - SIMD_FORCE_INLINE btPersistentManifold* newContactManifold(btCollisionObject* body0,btCollisionObject* body1) - { - m_manifoldPtr = m_dispatcher->getNewManifold(body0,body1); - return m_manifoldPtr; - } - - SIMD_FORCE_INLINE void destroyConvexAlgorithm() - { - if(m_convex_algorithm) - { - m_convex_algorithm->~btCollisionAlgorithm(); - m_dispatcher->freeCollisionAlgorithm( m_convex_algorithm); - m_convex_algorithm = NULL; - } - } - - SIMD_FORCE_INLINE void destroyContactManifolds() - { - if(m_manifoldPtr == NULL) return; - m_dispatcher->releaseManifold(m_manifoldPtr); - m_manifoldPtr = NULL; - } - - SIMD_FORCE_INLINE void clearCache() - { - destroyContactManifolds(); - destroyConvexAlgorithm(); - - m_triface0 = -1; - m_part0 = -1; - m_triface1 = -1; - m_part1 = -1; - } - - SIMD_FORCE_INLINE btPersistentManifold* getLastManifold() - { - return m_manifoldPtr; - } - - - // Call before process collision - SIMD_FORCE_INLINE void checkManifold(btCollisionObject* body0,btCollisionObject* body1) - { - if(getLastManifold() == 0) - { - newContactManifold(body0,body1); - } - - m_resultOut->setPersistentManifold(getLastManifold()); - } - - // Call before process collision - SIMD_FORCE_INLINE btCollisionAlgorithm * newAlgorithm(btCollisionObject* body0,btCollisionObject* body1) - { - checkManifold(body0,body1); - - btCollisionAlgorithm * convex_algorithm = m_dispatcher->findAlgorithm( - body0,body1,getLastManifold()); - return convex_algorithm ; - } - - // Call before process collision - SIMD_FORCE_INLINE void checkConvexAlgorithm(btCollisionObject* body0,btCollisionObject* body1) - { - if(m_convex_algorithm) return; - m_convex_algorithm = newAlgorithm(body0,body1); - } - - - - - void addContactPoint(btCollisionObject * body0, - btCollisionObject * body1, - const btVector3 & point, - const btVector3 & normal, - btScalar distance); - -//! Collision routines -//!@{ - - void collide_gjk_triangles(btCollisionObject * body0, - btCollisionObject * body1, - btGImpactMeshShapePart * shape0, - btGImpactMeshShapePart * shape1, - const int * pairs, int pair_count); - - void collide_sat_triangles(btCollisionObject * body0, - btCollisionObject * body1, - btGImpactMeshShapePart * shape0, - btGImpactMeshShapePart * shape1, - const int * pairs, int pair_count); - - - - - void shape_vs_shape_collision( - btCollisionObject * body0, - btCollisionObject * body1, - btCollisionShape * shape0, - btCollisionShape * shape1); - - void convex_vs_convex_collision(btCollisionObject * body0, - btCollisionObject * body1, - btCollisionShape * shape0, - btCollisionShape * shape1); - - - - void gimpact_vs_gimpact_find_pairs( - const btTransform & trans0, - const btTransform & trans1, - btGImpactShapeInterface * shape0, - btGImpactShapeInterface * shape1,btPairSet & pairset); - - void gimpact_vs_shape_find_pairs( - const btTransform & trans0, - const btTransform & trans1, - btGImpactShapeInterface * shape0, - btCollisionShape * shape1, - btAlignedObjectArray & collided_primitives); - - - void gimpacttrimeshpart_vs_plane_collision( - btCollisionObject * body0, - btCollisionObject * body1, - btGImpactMeshShapePart * shape0, - btStaticPlaneShape * shape1,bool swapped); - - -public: - - btGImpactCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1); - - virtual ~btGImpactCollisionAlgorithm(); - - virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual void getAllContactManifolds(btManifoldArray& manifoldArray) - { - if (m_manifoldPtr) - manifoldArray.push_back(m_manifoldPtr); - } - - - struct CreateFunc :public btCollisionAlgorithmCreateFunc - { - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) - { - void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btGImpactCollisionAlgorithm)); - return new(mem) btGImpactCollisionAlgorithm(ci,body0,body1); - } - }; - - //! Use this function for register the algorithm externally - static void registerAlgorithm(btCollisionDispatcher * dispatcher); - - //! Gets the average time in miliseconds of tree collisions - static float getAverageTreeCollisionTime(); - - //! Gets the average time in miliseconds of triangle collisions - static float getAverageTriangleCollisionTime(); - - - //! Collides two gimpact shapes - /*! - \pre shape0 and shape1 couldn't be btGImpactMeshShape objects - */ - - - void gimpact_vs_gimpact(btCollisionObject * body0, - btCollisionObject * body1, - btGImpactShapeInterface * shape0, - btGImpactShapeInterface * shape1); - - void gimpact_vs_shape(btCollisionObject * body0, - btCollisionObject * body1, - btGImpactShapeInterface * shape0, - btCollisionShape * shape1,bool swapped); - - void gimpact_vs_compoundshape(btCollisionObject * body0, - btCollisionObject * body1, - btGImpactShapeInterface * shape0, - btCompoundShape * shape1,bool swapped); - - void gimpact_vs_concave( - btCollisionObject * body0, - btCollisionObject * body1, - btGImpactShapeInterface * shape0, - btConcaveShape * shape1,bool swapped); - - - - - /// Accessor/Mutator pairs for Part and triangleID - void setFace0(int value) - { - m_triface0 = value; - } - int getFace0() - { - return m_triface0; - } - void setFace1(int value) - { - m_triface1 = value; - } - int getFace1() - { - return m_triface1; - } - void setPart0(int value) - { - m_part0 = value; - } - int getPart0() - { - return m_part0; - } - void setPart1(int value) - { - m_part1 = value; - } - int getPart1() - { - return m_part1; - } - -}; - - -//algorithm details -//#define BULLET_TRIANGLE_COLLISION 1 -#define GIMPACT_VS_PLANE_COLLISION 1 - - - -#endif //BVH_CONCAVE_COLLISION_ALGORITHM_H diff --git a/extern/bullet2/BulletCollision/Gimpact/btGImpactMassUtil.h b/extern/bullet2/BulletCollision/Gimpact/btGImpactMassUtil.h deleted file mode 100644 index 0a10f3cdb7b..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/btGImpactMassUtil.h +++ /dev/null @@ -1,60 +0,0 @@ -/*! \file btGImpactMassUtil.h -\author Francisco Len Nßjera -*/ -/* -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#ifndef GIMPACT_MASS_UTIL_H -#define GIMPACT_MASS_UTIL_H - -#include "LinearMath/btTransform.h" - - - -SIMD_FORCE_INLINE btVector3 gim_inertia_add_transformed( - const btVector3 & source_inertia, const btVector3 & added_inertia, const btTransform & transform) -{ - btMatrix3x3 rotatedTensor = transform.getBasis().scaled(added_inertia) * transform.getBasis().transpose(); - - btScalar x2 = transform.getOrigin()[0]; - x2*= x2; - btScalar y2 = transform.getOrigin()[1]; - y2*= y2; - btScalar z2 = transform.getOrigin()[2]; - z2*= z2; - - btScalar ix = rotatedTensor[0][0]*(y2+z2); - btScalar iy = rotatedTensor[1][1]*(x2+z2); - btScalar iz = rotatedTensor[2][2]*(x2+y2); - - return btVector3(source_inertia[0]+ix,source_inertia[1]+iy,source_inertia[2] + iz); -} - -SIMD_FORCE_INLINE btVector3 gim_get_point_inertia(const btVector3 & point, btScalar mass) -{ - btScalar x2 = point[0]*point[0]; - btScalar y2 = point[1]*point[1]; - btScalar z2 = point[2]*point[2]; - return btVector3(mass*(y2+z2),mass*(x2+z2),mass*(x2+y2)); -} - - -#endif //GIMPACT_MESH_SHAPE_H diff --git a/extern/bullet2/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp b/extern/bullet2/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp deleted file mode 100644 index ea1647a8129..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp +++ /dev/null @@ -1,528 +0,0 @@ -/*! \file gim_box_set.h -\author Francisco Len Nßjera -*/ -/* -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btGImpactQuantizedBvh.h" -#include "LinearMath/btQuickprof.h" - -#ifdef TRI_COLLISION_PROFILING -btClock g_q_tree_clock; - - -float g_q_accum_tree_collision_time = 0; -int g_q_count_traversing = 0; - - -void bt_begin_gim02_q_tree_time() -{ - g_q_tree_clock.reset(); -} - -void bt_end_gim02_q_tree_time() -{ - g_q_accum_tree_collision_time += g_q_tree_clock.getTimeMicroseconds(); - g_q_count_traversing++; -} - - -//! Gets the average time in miliseconds of tree collisions -float btGImpactQuantizedBvh::getAverageTreeCollisionTime() -{ - if(g_q_count_traversing == 0) return 0; - - float avgtime = g_q_accum_tree_collision_time; - avgtime /= (float)g_q_count_traversing; - - g_q_accum_tree_collision_time = 0; - g_q_count_traversing = 0; - return avgtime; - -// float avgtime = g_q_count_traversing; -// g_q_count_traversing = 0; -// return avgtime; - -} - -#endif //TRI_COLLISION_PROFILING - -/////////////////////// btQuantizedBvhTree ///////////////////////////////// - -void btQuantizedBvhTree::calc_quantization( - GIM_BVH_DATA_ARRAY & primitive_boxes, btScalar boundMargin) -{ - //calc globa box - btAABB global_bound; - global_bound.invalidate(); - - for (int i=0;i splitValue) - { - //swap - primitive_boxes.swap(i,splitIndex); - //swapLeafNodes(i,splitIndex); - splitIndex++; - } - } - - //if the splitIndex causes unbalanced trees, fix this by using the center in between startIndex and endIndex - //otherwise the tree-building might fail due to stack-overflows in certain cases. - //unbalanced1 is unsafe: it can cause stack overflows - //bool unbalanced1 = ((splitIndex==startIndex) || (splitIndex == (endIndex-1))); - - //unbalanced2 should work too: always use center (perfect balanced trees) - //bool unbalanced2 = true; - - //this should be safe too: - int rangeBalancedIndices = numIndices/3; - bool unbalanced = ((splitIndex<=(startIndex+rangeBalancedIndices)) || (splitIndex >=(endIndex-1-rangeBalancedIndices))); - - if (unbalanced) - { - splitIndex = startIndex+ (numIndices>>1); - } - - btAssert(!((splitIndex==startIndex) || (splitIndex == (endIndex)))); - - return splitIndex; - -} - - -void btQuantizedBvhTree::_build_sub_tree(GIM_BVH_DATA_ARRAY & primitive_boxes, int startIndex, int endIndex) -{ - int curIndex = m_num_nodes; - m_num_nodes++; - - btAssert((endIndex-startIndex)>0); - - if ((endIndex-startIndex)==1) - { - //We have a leaf node - setNodeBound(curIndex,primitive_boxes[startIndex].m_bound); - m_node_array[curIndex].setDataIndex(primitive_boxes[startIndex].m_data); - - return; - } - //calculate Best Splitting Axis and where to split it. Sort the incoming 'leafNodes' array within range 'startIndex/endIndex'. - - //split axis - int splitIndex = _calc_splitting_axis(primitive_boxes,startIndex,endIndex); - - splitIndex = _sort_and_calc_splitting_index( - primitive_boxes,startIndex,endIndex, - splitIndex//split axis - ); - - - //calc this node bounding box - - btAABB node_bound; - node_bound.invalidate(); - - for (int i=startIndex;iget_primitive_box(getNodeData(nodecount),leafbox); - setNodeBound(nodecount,leafbox); - } - else - { - //const GIM_BVH_TREE_NODE * nodepointer = get_node_pointer(nodecount); - //get left bound - btAABB bound; - bound.invalidate(); - - btAABB temp_box; - - int child_node = getLeftNode(nodecount); - if(child_node) - { - getNodeBound(child_node,temp_box); - bound.merge(temp_box); - } - - child_node = getRightNode(nodecount); - if(child_node) - { - getNodeBound(child_node,temp_box); - bound.merge(temp_box); - } - - setNodeBound(nodecount,bound); - } - } -} - -//! this rebuild the entire set -void btGImpactQuantizedBvh::buildSet() -{ - //obtain primitive boxes - GIM_BVH_DATA_ARRAY primitive_boxes; - primitive_boxes.resize(m_primitive_manager->get_primitive_count()); - - for (int i = 0;iget_primitive_box(i,primitive_boxes[i].m_bound); - primitive_boxes[i].m_data = i; - } - - m_box_tree.build_tree(primitive_boxes); -} - -//! returns the indices of the primitives in the m_primitive_manager -bool btGImpactQuantizedBvh::boxQuery(const btAABB & box, btAlignedObjectArray & collided_results) const -{ - int curIndex = 0; - int numNodes = getNodeCount(); - - //quantize box - - unsigned short quantizedMin[3]; - unsigned short quantizedMax[3]; - - m_box_tree.quantizePoint(quantizedMin,box.m_min); - m_box_tree.quantizePoint(quantizedMax,box.m_max); - - - while (curIndex < numNodes) - { - - //catch bugs in tree data - - bool aabbOverlap = m_box_tree.testQuantizedBoxOverlapp(curIndex, quantizedMin,quantizedMax); - bool isleafnode = isLeafNode(curIndex); - - if (isleafnode && aabbOverlap) - { - collided_results.push_back(getNodeData(curIndex)); - } - - if (aabbOverlap || isleafnode) - { - //next subnode - curIndex++; - } - else - { - //skip node - curIndex+= getEscapeNodeIndex(curIndex); - } - } - if(collided_results.size()>0) return true; - return false; -} - - - -//! returns the indices of the primitives in the m_primitive_manager -bool btGImpactQuantizedBvh::rayQuery( - const btVector3 & ray_dir,const btVector3 & ray_origin , - btAlignedObjectArray & collided_results) const -{ - int curIndex = 0; - int numNodes = getNodeCount(); - - while (curIndex < numNodes) - { - btAABB bound; - getNodeBound(curIndex,bound); - - //catch bugs in tree data - - bool aabbOverlap = bound.collide_ray(ray_origin,ray_dir); - bool isleafnode = isLeafNode(curIndex); - - if (isleafnode && aabbOverlap) - { - collided_results.push_back(getNodeData( curIndex)); - } - - if (aabbOverlap || isleafnode) - { - //next subnode - curIndex++; - } - else - { - //skip node - curIndex+= getEscapeNodeIndex(curIndex); - } - } - if(collided_results.size()>0) return true; - return false; -} - - -SIMD_FORCE_INLINE bool _quantized_node_collision( - btGImpactQuantizedBvh * boxset0, btGImpactQuantizedBvh * boxset1, - const BT_BOX_BOX_TRANSFORM_CACHE & trans_cache_1to0, - int node0 ,int node1, bool complete_primitive_tests) -{ - btAABB box0; - boxset0->getNodeBound(node0,box0); - btAABB box1; - boxset1->getNodeBound(node1,box1); - - return box0.overlapping_trans_cache(box1,trans_cache_1to0,complete_primitive_tests ); -// box1.appy_transform_trans_cache(trans_cache_1to0); -// return box0.has_collision(box1); - -} - - -//stackless recursive collision routine -static void _find_quantized_collision_pairs_recursive( - btGImpactQuantizedBvh * boxset0, btGImpactQuantizedBvh * boxset1, - btPairSet * collision_pairs, - const BT_BOX_BOX_TRANSFORM_CACHE & trans_cache_1to0, - int node0, int node1, bool complete_primitive_tests) -{ - - - - if( _quantized_node_collision( - boxset0,boxset1,trans_cache_1to0, - node0,node1,complete_primitive_tests) ==false) return;//avoid colliding internal nodes - - if(boxset0->isLeafNode(node0)) - { - if(boxset1->isLeafNode(node1)) - { - // collision result - collision_pairs->push_pair( - boxset0->getNodeData(node0),boxset1->getNodeData(node1)); - return; - } - else - { - - //collide left recursive - - _find_quantized_collision_pairs_recursive( - boxset0,boxset1, - collision_pairs,trans_cache_1to0, - node0,boxset1->getLeftNode(node1),false); - - //collide right recursive - _find_quantized_collision_pairs_recursive( - boxset0,boxset1, - collision_pairs,trans_cache_1to0, - node0,boxset1->getRightNode(node1),false); - - - } - } - else - { - if(boxset1->isLeafNode(node1)) - { - - //collide left recursive - _find_quantized_collision_pairs_recursive( - boxset0,boxset1, - collision_pairs,trans_cache_1to0, - boxset0->getLeftNode(node0),node1,false); - - - //collide right recursive - - _find_quantized_collision_pairs_recursive( - boxset0,boxset1, - collision_pairs,trans_cache_1to0, - boxset0->getRightNode(node0),node1,false); - - - } - else - { - //collide left0 left1 - - - - _find_quantized_collision_pairs_recursive( - boxset0,boxset1, - collision_pairs,trans_cache_1to0, - boxset0->getLeftNode(node0),boxset1->getLeftNode(node1),false); - - //collide left0 right1 - - _find_quantized_collision_pairs_recursive( - boxset0,boxset1, - collision_pairs,trans_cache_1to0, - boxset0->getLeftNode(node0),boxset1->getRightNode(node1),false); - - - //collide right0 left1 - - _find_quantized_collision_pairs_recursive( - boxset0,boxset1, - collision_pairs,trans_cache_1to0, - boxset0->getRightNode(node0),boxset1->getLeftNode(node1),false); - - //collide right0 right1 - - _find_quantized_collision_pairs_recursive( - boxset0,boxset1, - collision_pairs,trans_cache_1to0, - boxset0->getRightNode(node0),boxset1->getRightNode(node1),false); - - }// else if node1 is not a leaf - }// else if node0 is not a leaf -} - - -void btGImpactQuantizedBvh::find_collision(btGImpactQuantizedBvh * boxset0, const btTransform & trans0, - btGImpactQuantizedBvh * boxset1, const btTransform & trans1, - btPairSet & collision_pairs) -{ - - if(boxset0->getNodeCount()==0 || boxset1->getNodeCount()==0 ) return; - - BT_BOX_BOX_TRANSFORM_CACHE trans_cache_1to0; - - trans_cache_1to0.calc_from_homogenic(trans0,trans1); - -#ifdef TRI_COLLISION_PROFILING - bt_begin_gim02_q_tree_time(); -#endif //TRI_COLLISION_PROFILING - - _find_quantized_collision_pairs_recursive( - boxset0,boxset1, - &collision_pairs,trans_cache_1to0,0,0,true); -#ifdef TRI_COLLISION_PROFILING - bt_end_gim02_q_tree_time(); -#endif //TRI_COLLISION_PROFILING - -} - - diff --git a/extern/bullet2/BulletCollision/Gimpact/btGImpactQuantizedBvh.h b/extern/bullet2/BulletCollision/Gimpact/btGImpactQuantizedBvh.h deleted file mode 100644 index e9cccac75f5..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/btGImpactQuantizedBvh.h +++ /dev/null @@ -1,372 +0,0 @@ -#ifndef GIM_QUANTIZED_SET_H_INCLUDED -#define GIM_QUANTIZED_SET_H_INCLUDED - -/*! \file btGImpactQuantizedBvh.h -\author Francisco Len Nßjera -*/ -/* -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btGImpactBvh.h" -#include "btQuantization.h" - - - - - -///btQuantizedBvhNode is a compressed aabb node, 16 bytes. -///Node can be used for leafnode or internal node. Leafnodes can point to 32-bit triangle index (non-negative range). -ATTRIBUTE_ALIGNED16 (struct) BT_QUANTIZED_BVH_NODE -{ - //12 bytes - unsigned short int m_quantizedAabbMin[3]; - unsigned short int m_quantizedAabbMax[3]; - //4 bytes - int m_escapeIndexOrDataIndex; - - BT_QUANTIZED_BVH_NODE() - { - m_escapeIndexOrDataIndex = 0; - } - - SIMD_FORCE_INLINE bool isLeafNode() const - { - //skipindex is negative (internal node), triangleindex >=0 (leafnode) - return (m_escapeIndexOrDataIndex>=0); - } - - SIMD_FORCE_INLINE int getEscapeIndex() const - { - //btAssert(m_escapeIndexOrDataIndex < 0); - return -m_escapeIndexOrDataIndex; - } - - SIMD_FORCE_INLINE void setEscapeIndex(int index) - { - m_escapeIndexOrDataIndex = -index; - } - - SIMD_FORCE_INLINE int getDataIndex() const - { - //btAssert(m_escapeIndexOrDataIndex >= 0); - - return m_escapeIndexOrDataIndex; - } - - SIMD_FORCE_INLINE void setDataIndex(int index) - { - m_escapeIndexOrDataIndex = index; - } - - SIMD_FORCE_INLINE bool testQuantizedBoxOverlapp( - unsigned short * quantizedMin,unsigned short * quantizedMax) const - { - if(m_quantizedAabbMin[0] > quantizedMax[0] || - m_quantizedAabbMax[0] < quantizedMin[0] || - m_quantizedAabbMin[1] > quantizedMax[1] || - m_quantizedAabbMax[1] < quantizedMin[1] || - m_quantizedAabbMin[2] > quantizedMax[2] || - m_quantizedAabbMax[2] < quantizedMin[2]) - { - return false; - } - return true; - } - -}; - - - -class GIM_QUANTIZED_BVH_NODE_ARRAY:public btAlignedObjectArray -{ -}; - - - - -//! Basic Box tree structure -class btQuantizedBvhTree -{ -protected: - int m_num_nodes; - GIM_QUANTIZED_BVH_NODE_ARRAY m_node_array; - btAABB m_global_bound; - btVector3 m_bvhQuantization; -protected: - void calc_quantization(GIM_BVH_DATA_ARRAY & primitive_boxes, btScalar boundMargin = btScalar(1.0) ); - - int _sort_and_calc_splitting_index( - GIM_BVH_DATA_ARRAY & primitive_boxes, - int startIndex, int endIndex, int splitAxis); - - int _calc_splitting_axis(GIM_BVH_DATA_ARRAY & primitive_boxes, int startIndex, int endIndex); - - void _build_sub_tree(GIM_BVH_DATA_ARRAY & primitive_boxes, int startIndex, int endIndex); -public: - btQuantizedBvhTree() - { - m_num_nodes = 0; - } - - //! prototype functions for box tree management - //!@{ - void build_tree(GIM_BVH_DATA_ARRAY & primitive_boxes); - - SIMD_FORCE_INLINE void quantizePoint( - unsigned short * quantizedpoint, const btVector3 & point) const - { - bt_quantize_clamp(quantizedpoint,point,m_global_bound.m_min,m_global_bound.m_max,m_bvhQuantization); - } - - - SIMD_FORCE_INLINE bool testQuantizedBoxOverlapp( - int node_index, - unsigned short * quantizedMin,unsigned short * quantizedMax) const - { - return m_node_array[node_index].testQuantizedBoxOverlapp(quantizedMin,quantizedMax); - } - - SIMD_FORCE_INLINE void clearNodes() - { - m_node_array.clear(); - m_num_nodes = 0; - } - - //! node count - SIMD_FORCE_INLINE int getNodeCount() const - { - return m_num_nodes; - } - - //! tells if the node is a leaf - SIMD_FORCE_INLINE bool isLeafNode(int nodeindex) const - { - return m_node_array[nodeindex].isLeafNode(); - } - - SIMD_FORCE_INLINE int getNodeData(int nodeindex) const - { - return m_node_array[nodeindex].getDataIndex(); - } - - SIMD_FORCE_INLINE void getNodeBound(int nodeindex, btAABB & bound) const - { - bound.m_min = bt_unquantize( - m_node_array[nodeindex].m_quantizedAabbMin, - m_global_bound.m_min,m_bvhQuantization); - - bound.m_max = bt_unquantize( - m_node_array[nodeindex].m_quantizedAabbMax, - m_global_bound.m_min,m_bvhQuantization); - } - - SIMD_FORCE_INLINE void setNodeBound(int nodeindex, const btAABB & bound) - { - bt_quantize_clamp( m_node_array[nodeindex].m_quantizedAabbMin, - bound.m_min, - m_global_bound.m_min, - m_global_bound.m_max, - m_bvhQuantization); - - bt_quantize_clamp( m_node_array[nodeindex].m_quantizedAabbMax, - bound.m_max, - m_global_bound.m_min, - m_global_bound.m_max, - m_bvhQuantization); - } - - SIMD_FORCE_INLINE int getLeftNode(int nodeindex) const - { - return nodeindex+1; - } - - SIMD_FORCE_INLINE int getRightNode(int nodeindex) const - { - if(m_node_array[nodeindex+1].isLeafNode()) return nodeindex+2; - return nodeindex+1 + m_node_array[nodeindex+1].getEscapeIndex(); - } - - SIMD_FORCE_INLINE int getEscapeNodeIndex(int nodeindex) const - { - return m_node_array[nodeindex].getEscapeIndex(); - } - - SIMD_FORCE_INLINE const BT_QUANTIZED_BVH_NODE * get_node_pointer(int index = 0) const - { - return &m_node_array[index]; - } - - //!@} -}; - - - -//! Structure for containing Boxes -/*! -This class offers an structure for managing a box tree of primitives. -Requires a Primitive prototype (like btPrimitiveManagerBase ) -*/ -class btGImpactQuantizedBvh -{ -protected: - btQuantizedBvhTree m_box_tree; - btPrimitiveManagerBase * m_primitive_manager; - -protected: - //stackless refit - void refit(); -public: - - //! this constructor doesn't build the tree. you must call buildSet - btGImpactQuantizedBvh() - { - m_primitive_manager = NULL; - } - - //! this constructor doesn't build the tree. you must call buildSet - btGImpactQuantizedBvh(btPrimitiveManagerBase * primitive_manager) - { - m_primitive_manager = primitive_manager; - } - - SIMD_FORCE_INLINE btAABB getGlobalBox() const - { - btAABB totalbox; - getNodeBound(0, totalbox); - return totalbox; - } - - SIMD_FORCE_INLINE void setPrimitiveManager(btPrimitiveManagerBase * primitive_manager) - { - m_primitive_manager = primitive_manager; - } - - SIMD_FORCE_INLINE btPrimitiveManagerBase * getPrimitiveManager() const - { - return m_primitive_manager; - } - - -//! node manager prototype functions -///@{ - - //! this attemps to refit the box set. - SIMD_FORCE_INLINE void update() - { - refit(); - } - - //! this rebuild the entire set - void buildSet(); - - //! returns the indices of the primitives in the m_primitive_manager - bool boxQuery(const btAABB & box, btAlignedObjectArray & collided_results) const; - - //! returns the indices of the primitives in the m_primitive_manager - SIMD_FORCE_INLINE bool boxQueryTrans(const btAABB & box, - const btTransform & transform, btAlignedObjectArray & collided_results) const - { - btAABB transbox=box; - transbox.appy_transform(transform); - return boxQuery(transbox,collided_results); - } - - //! returns the indices of the primitives in the m_primitive_manager - bool rayQuery( - const btVector3 & ray_dir,const btVector3 & ray_origin , - btAlignedObjectArray & collided_results) const; - - //! tells if this set has hierarcht - SIMD_FORCE_INLINE bool hasHierarchy() const - { - return true; - } - - //! tells if this set is a trimesh - SIMD_FORCE_INLINE bool isTrimesh() const - { - return m_primitive_manager->is_trimesh(); - } - - //! node count - SIMD_FORCE_INLINE int getNodeCount() const - { - return m_box_tree.getNodeCount(); - } - - //! tells if the node is a leaf - SIMD_FORCE_INLINE bool isLeafNode(int nodeindex) const - { - return m_box_tree.isLeafNode(nodeindex); - } - - SIMD_FORCE_INLINE int getNodeData(int nodeindex) const - { - return m_box_tree.getNodeData(nodeindex); - } - - SIMD_FORCE_INLINE void getNodeBound(int nodeindex, btAABB & bound) const - { - m_box_tree.getNodeBound(nodeindex, bound); - } - - SIMD_FORCE_INLINE void setNodeBound(int nodeindex, const btAABB & bound) - { - m_box_tree.setNodeBound(nodeindex, bound); - } - - - SIMD_FORCE_INLINE int getLeftNode(int nodeindex) const - { - return m_box_tree.getLeftNode(nodeindex); - } - - SIMD_FORCE_INLINE int getRightNode(int nodeindex) const - { - return m_box_tree.getRightNode(nodeindex); - } - - SIMD_FORCE_INLINE int getEscapeNodeIndex(int nodeindex) const - { - return m_box_tree.getEscapeNodeIndex(nodeindex); - } - - SIMD_FORCE_INLINE void getNodeTriangle(int nodeindex,btPrimitiveTriangle & triangle) const - { - m_primitive_manager->get_primitive_triangle(getNodeData(nodeindex),triangle); - } - - - SIMD_FORCE_INLINE const BT_QUANTIZED_BVH_NODE * get_node_pointer(int index = 0) const - { - return m_box_tree.get_node_pointer(index); - } - - - static float getAverageTreeCollisionTime(); - - - static void find_collision(btGImpactQuantizedBvh * boxset1, const btTransform & trans1, - btGImpactQuantizedBvh * boxset2, const btTransform & trans2, - btPairSet & collision_pairs); -}; - - -#endif // GIM_BOXPRUNING_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/btGImpactShape.cpp b/extern/bullet2/BulletCollision/Gimpact/btGImpactShape.cpp deleted file mode 100644 index cceace55e4b..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/btGImpactShape.cpp +++ /dev/null @@ -1,203 +0,0 @@ -/* -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btGImpactShape.h" -#include "btGImpactMassUtil.h" - - -#define CALC_EXACT_INERTIA 1 - -void btGImpactCompoundShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const -{ - lockChildShapes(); -#ifdef CALC_EXACT_INERTIA - inertia.setValue(0.f,0.f,0.f); - - int i = this->getNumChildShapes(); - btScalar shapemass = mass/btScalar(i); - - while(i--) - { - btVector3 temp_inertia; - m_childShapes[i]->calculateLocalInertia(shapemass,temp_inertia); - if(childrenHasTransform()) - { - inertia = gim_inertia_add_transformed( inertia,temp_inertia,m_childTransforms[i]); - } - else - { - inertia = gim_inertia_add_transformed( inertia,temp_inertia,btTransform::getIdentity()); - } - - } - -#else - - // Calc box inertia - - btScalar lx= m_localAABB.m_max[0] - m_localAABB.m_min[0]; - btScalar ly= m_localAABB.m_max[1] - m_localAABB.m_min[1]; - btScalar lz= m_localAABB.m_max[2] - m_localAABB.m_min[2]; - const btScalar x2 = lx*lx; - const btScalar y2 = ly*ly; - const btScalar z2 = lz*lz; - const btScalar scaledmass = mass * btScalar(0.08333333); - - inertia = scaledmass * (btVector3(y2+z2,x2+z2,x2+y2)); - -#endif - unlockChildShapes(); -} - - - -void btGImpactMeshShapePart::calculateLocalInertia(btScalar mass,btVector3& inertia) const -{ - lockChildShapes(); - - -#ifdef CALC_EXACT_INERTIA - inertia.setValue(0.f,0.f,0.f); - - int i = this->getVertexCount(); - btScalar pointmass = mass/btScalar(i); - - while(i--) - { - btVector3 pointintertia; - this->getVertex(i,pointintertia); - pointintertia = gim_get_point_inertia(pointintertia,pointmass); - inertia+=pointintertia; - } - -#else - - // Calc box inertia - - btScalar lx= m_localAABB.m_max[0] - m_localAABB.m_min[0]; - btScalar ly= m_localAABB.m_max[1] - m_localAABB.m_min[1]; - btScalar lz= m_localAABB.m_max[2] - m_localAABB.m_min[2]; - const btScalar x2 = lx*lx; - const btScalar y2 = ly*ly; - const btScalar z2 = lz*lz; - const btScalar scaledmass = mass * btScalar(0.08333333); - - inertia = scaledmass * (btVector3(y2+z2,x2+z2,x2+y2)); - -#endif - - unlockChildShapes(); -} - -void btGImpactMeshShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const -{ - -#ifdef CALC_EXACT_INERTIA - inertia.setValue(0.f,0.f,0.f); - - int i = this->getMeshPartCount(); - btScalar partmass = mass/btScalar(i); - - while(i--) - { - btVector3 partinertia; - getMeshPart(i)->calculateLocalInertia(partmass,partinertia); - inertia+=partinertia; - } - -#else - - // Calc box inertia - - btScalar lx= m_localAABB.m_max[0] - m_localAABB.m_min[0]; - btScalar ly= m_localAABB.m_max[1] - m_localAABB.m_min[1]; - btScalar lz= m_localAABB.m_max[2] - m_localAABB.m_min[2]; - const btScalar x2 = lx*lx; - const btScalar y2 = ly*ly; - const btScalar z2 = lz*lz; - const btScalar scaledmass = mass * btScalar(0.08333333); - - inertia = scaledmass * (btVector3(y2+z2,x2+z2,x2+y2)); - -#endif -} - -void btGImpactMeshShape::rayTest(const btVector3& rayFrom, const btVector3& rayTo, btCollisionWorld::RayResultCallback& resultCallback) const -{ -} - - -void btGImpactMeshShapePart::processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const -{ - lockChildShapes(); - btAABB box; - box.m_min = aabbMin; - box.m_max = aabbMax; - - btAlignedObjectArray collided; - m_box_set.boxQuery(box,collided); - - if(collided.size()==0) - { - unlockChildShapes(); - return; - } - - int part = (int)getPart(); - btPrimitiveTriangle triangle; - int i = collided.size(); - while(i--) - { - this->getPrimitiveTriangle(collided[i],triangle); - callback->processTriangle(triangle.m_vertices,part,collided[i]); - } - unlockChildShapes(); - -} - -void btGImpactMeshShape::processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const -{ - int i = m_mesh_parts.size(); - while(i--) - { - m_mesh_parts[i]->processAllTriangles(callback,aabbMin,aabbMax); - } -} - - -///fills the dataBuffer and returns the struct name (and 0 on failure) -const char* btGImpactMeshShape::serialize(void* dataBuffer, btSerializer* serializer) const -{ - btGImpactMeshShapeData* trimeshData = (btGImpactMeshShapeData*) dataBuffer; - - btCollisionShape::serialize(&trimeshData->m_collisionShapeData,serializer); - - m_meshInterface->serialize(&trimeshData->m_meshInterface, serializer); - - trimeshData->m_collisionMargin = float(m_collisionMargin); - - localScaling.serializeFloat(trimeshData->m_localScaling); - - trimeshData->m_gimpactSubType = int(getGImpactShapeType()); - - return "btGImpactMeshShapeData"; -} - diff --git a/extern/bullet2/BulletCollision/Gimpact/btGImpactShape.h b/extern/bullet2/BulletCollision/Gimpact/btGImpactShape.h deleted file mode 100644 index 90015bb9ac0..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/btGImpactShape.h +++ /dev/null @@ -1,1171 +0,0 @@ -/*! \file btGImpactShape.h -\author Francisco Len Nßjera -*/ -/* -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#ifndef GIMPACT_SHAPE_H -#define GIMPACT_SHAPE_H - -#include "BulletCollision/CollisionShapes/btCollisionShape.h" -#include "BulletCollision/CollisionShapes/btTriangleShape.h" -#include "BulletCollision/CollisionShapes/btStridingMeshInterface.h" -#include "BulletCollision/CollisionShapes/btCollisionMargin.h" -#include "BulletCollision/CollisionDispatch/btCollisionWorld.h" -#include "BulletCollision/CollisionShapes/btConcaveShape.h" -#include "BulletCollision/CollisionShapes/btTetrahedronShape.h" -#include "LinearMath/btVector3.h" -#include "LinearMath/btTransform.h" -#include "LinearMath/btMatrix3x3.h" -#include "LinearMath/btAlignedObjectArray.h" - -#include "btGImpactQuantizedBvh.h" // box tree class - - -//! declare Quantized trees, (you can change to float based trees) -typedef btGImpactQuantizedBvh btGImpactBoxSet; - -enum eGIMPACT_SHAPE_TYPE -{ - CONST_GIMPACT_COMPOUND_SHAPE = 0, - CONST_GIMPACT_TRIMESH_SHAPE_PART, - CONST_GIMPACT_TRIMESH_SHAPE -}; - - -//! Helper class for tetrahedrons -class btTetrahedronShapeEx:public btBU_Simplex1to4 -{ -public: - btTetrahedronShapeEx() - { - m_numVertices = 4; - } - - - SIMD_FORCE_INLINE void setVertices( - const btVector3 & v0,const btVector3 & v1, - const btVector3 & v2,const btVector3 & v3) - { - m_vertices[0] = v0; - m_vertices[1] = v1; - m_vertices[2] = v2; - m_vertices[3] = v3; - recalcLocalAabb(); - } -}; - - -//! Base class for gimpact shapes -class btGImpactShapeInterface : public btConcaveShape -{ -protected: - btAABB m_localAABB; - bool m_needs_update; - btVector3 localScaling; - btGImpactBoxSet m_box_set;// optionally boxset - - //! use this function for perfofm refit in bounding boxes - //! use this function for perfofm refit in bounding boxes - virtual void calcLocalAABB() - { - lockChildShapes(); - if(m_box_set.getNodeCount() == 0) - { - m_box_set.buildSet(); - } - else - { - m_box_set.update(); - } - unlockChildShapes(); - - m_localAABB = m_box_set.getGlobalBox(); - } - - -public: - btGImpactShapeInterface() - { - m_shapeType=GIMPACT_SHAPE_PROXYTYPE; - m_localAABB.invalidate(); - m_needs_update = true; - localScaling.setValue(1.f,1.f,1.f); - } - - - //! performs refit operation - /*! - Updates the entire Box set of this shape. - \pre postUpdate() must be called for attemps to calculating the box set, else this function - will does nothing. - \post if m_needs_update == true, then it calls calcLocalAABB(); - */ - SIMD_FORCE_INLINE void updateBound() - { - if(!m_needs_update) return; - calcLocalAABB(); - m_needs_update = false; - } - - //! If the Bounding box is not updated, then this class attemps to calculate it. - /*! - \post Calls updateBound() for update the box set. - */ - void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const - { - btAABB transformedbox = m_localAABB; - transformedbox.appy_transform(t); - aabbMin = transformedbox.m_min; - aabbMax = transformedbox.m_max; - } - - //! Tells to this object that is needed to refit the box set - virtual void postUpdate() - { - m_needs_update = true; - } - - //! Obtains the local box, which is the global calculated box of the total of subshapes - SIMD_FORCE_INLINE const btAABB & getLocalBox() - { - return m_localAABB; - } - - - virtual int getShapeType() const - { - return GIMPACT_SHAPE_PROXYTYPE; - } - - /*! - \post You must call updateBound() for update the box set. - */ - virtual void setLocalScaling(const btVector3& scaling) - { - localScaling = scaling; - postUpdate(); - } - - virtual const btVector3& getLocalScaling() const - { - return localScaling; - } - - - virtual void setMargin(btScalar margin) - { - m_collisionMargin = margin; - int i = getNumChildShapes(); - while(i--) - { - btCollisionShape* child = getChildShape(i); - child->setMargin(margin); - } - - m_needs_update = true; - } - - - //! Subshape member functions - //!@{ - - //! Base method for determinig which kind of GIMPACT shape we get - virtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const = 0 ; - - //! gets boxset - SIMD_FORCE_INLINE btGImpactBoxSet * getBoxSet() - { - return &m_box_set; - } - - //! Determines if this class has a hierarchy structure for sorting its primitives - SIMD_FORCE_INLINE bool hasBoxSet() const - { - if(m_box_set.getNodeCount() == 0) return false; - return true; - } - - //! Obtains the primitive manager - virtual const btPrimitiveManagerBase * getPrimitiveManager() const = 0; - - - //! Gets the number of children - virtual int getNumChildShapes() const = 0; - - //! if true, then its children must get transforms. - virtual bool childrenHasTransform() const = 0; - - //! Determines if this shape has triangles - virtual bool needsRetrieveTriangles() const = 0; - - //! Determines if this shape has tetrahedrons - virtual bool needsRetrieveTetrahedrons() const = 0; - - virtual void getBulletTriangle(int prim_index,btTriangleShapeEx & triangle) const = 0; - - virtual void getBulletTetrahedron(int prim_index,btTetrahedronShapeEx & tetrahedron) const = 0; - - - - //! call when reading child shapes - virtual void lockChildShapes() const - { - } - - virtual void unlockChildShapes() const - { - } - - //! if this trimesh - SIMD_FORCE_INLINE void getPrimitiveTriangle(int index,btPrimitiveTriangle & triangle) const - { - getPrimitiveManager()->get_primitive_triangle(index,triangle); - } - - - //! Retrieves the bound from a child - /*! - */ - virtual void getChildAabb(int child_index,const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const - { - btAABB child_aabb; - getPrimitiveManager()->get_primitive_box(child_index,child_aabb); - child_aabb.appy_transform(t); - aabbMin = child_aabb.m_min; - aabbMax = child_aabb.m_max; - } - - //! Gets the children - virtual btCollisionShape* getChildShape(int index) = 0; - - - //! Gets the child - virtual const btCollisionShape* getChildShape(int index) const = 0; - - //! Gets the children transform - virtual btTransform getChildTransform(int index) const = 0; - - //! Sets the children transform - /*! - \post You must call updateBound() for update the box set. - */ - virtual void setChildTransform(int index, const btTransform & transform) = 0; - - //!@} - - - //! virtual method for ray collision - virtual void rayTest(const btVector3& rayFrom, const btVector3& rayTo, btCollisionWorld::RayResultCallback& resultCallback) const - { - (void) rayFrom; (void) rayTo; (void) resultCallback; - } - - //! Function for retrieve triangles. - /*! - It gives the triangles in local space - */ - virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const - { - (void) callback; (void) aabbMin; (void) aabbMax; - } - - //!@} - -}; - - -//! btGImpactCompoundShape allows to handle multiple btCollisionShape objects at once -/*! -This class only can manage Convex subshapes -*/ -class btGImpactCompoundShape : public btGImpactShapeInterface -{ -public: - //! compound primitive manager - class CompoundPrimitiveManager:public btPrimitiveManagerBase - { - public: - virtual ~CompoundPrimitiveManager() {} - btGImpactCompoundShape * m_compoundShape; - - - CompoundPrimitiveManager(const CompoundPrimitiveManager& compound) - : btPrimitiveManagerBase() - { - m_compoundShape = compound.m_compoundShape; - } - - CompoundPrimitiveManager(btGImpactCompoundShape * compoundShape) - { - m_compoundShape = compoundShape; - } - - CompoundPrimitiveManager() - { - m_compoundShape = NULL; - } - - virtual bool is_trimesh() const - { - return false; - } - - virtual int get_primitive_count() const - { - return (int )m_compoundShape->getNumChildShapes(); - } - - virtual void get_primitive_box(int prim_index ,btAABB & primbox) const - { - btTransform prim_trans; - if(m_compoundShape->childrenHasTransform()) - { - prim_trans = m_compoundShape->getChildTransform(prim_index); - } - else - { - prim_trans.setIdentity(); - } - const btCollisionShape* shape = m_compoundShape->getChildShape(prim_index); - shape->getAabb(prim_trans,primbox.m_min,primbox.m_max); - } - - virtual void get_primitive_triangle(int prim_index,btPrimitiveTriangle & triangle) const - { - btAssert(0); - (void) prim_index; (void) triangle; - } - - }; - - - -protected: - CompoundPrimitiveManager m_primitive_manager; - btAlignedObjectArray m_childTransforms; - btAlignedObjectArray m_childShapes; - - -public: - - btGImpactCompoundShape(bool children_has_transform = true) - { - (void) children_has_transform; - m_primitive_manager.m_compoundShape = this; - m_box_set.setPrimitiveManager(&m_primitive_manager); - } - - virtual ~btGImpactCompoundShape() - { - } - - - //! if true, then its children must get transforms. - virtual bool childrenHasTransform() const - { - if(m_childTransforms.size()==0) return false; - return true; - } - - - //! Obtains the primitive manager - virtual const btPrimitiveManagerBase * getPrimitiveManager() const - { - return &m_primitive_manager; - } - - //! Obtains the compopund primitive manager - SIMD_FORCE_INLINE CompoundPrimitiveManager * getCompoundPrimitiveManager() - { - return &m_primitive_manager; - } - - //! Gets the number of children - virtual int getNumChildShapes() const - { - return m_childShapes.size(); - } - - - //! Use this method for adding children. Only Convex shapes are allowed. - void addChildShape(const btTransform& localTransform,btCollisionShape* shape) - { - btAssert(shape->isConvex()); - m_childTransforms.push_back(localTransform); - m_childShapes.push_back(shape); - } - - //! Use this method for adding children. Only Convex shapes are allowed. - void addChildShape(btCollisionShape* shape) - { - btAssert(shape->isConvex()); - m_childShapes.push_back(shape); - } - - //! Gets the children - virtual btCollisionShape* getChildShape(int index) - { - return m_childShapes[index]; - } - - //! Gets the children - virtual const btCollisionShape* getChildShape(int index) const - { - return m_childShapes[index]; - } - - //! Retrieves the bound from a child - /*! - */ - virtual void getChildAabb(int child_index,const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const - { - - if(childrenHasTransform()) - { - m_childShapes[child_index]->getAabb(t*m_childTransforms[child_index],aabbMin,aabbMax); - } - else - { - m_childShapes[child_index]->getAabb(t,aabbMin,aabbMax); - } - } - - - //! Gets the children transform - virtual btTransform getChildTransform(int index) const - { - btAssert(m_childTransforms.size() == m_childShapes.size()); - return m_childTransforms[index]; - } - - //! Sets the children transform - /*! - \post You must call updateBound() for update the box set. - */ - virtual void setChildTransform(int index, const btTransform & transform) - { - btAssert(m_childTransforms.size() == m_childShapes.size()); - m_childTransforms[index] = transform; - postUpdate(); - } - - //! Determines if this shape has triangles - virtual bool needsRetrieveTriangles() const - { - return false; - } - - //! Determines if this shape has tetrahedrons - virtual bool needsRetrieveTetrahedrons() const - { - return false; - } - - - virtual void getBulletTriangle(int prim_index,btTriangleShapeEx & triangle) const - { - (void) prim_index; (void) triangle; - btAssert(0); - } - - virtual void getBulletTetrahedron(int prim_index,btTetrahedronShapeEx & tetrahedron) const - { - (void) prim_index; (void) tetrahedron; - btAssert(0); - } - - - //! Calculates the exact inertia tensor for this shape - virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; - - virtual const char* getName()const - { - return "GImpactCompound"; - } - - virtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const - { - return CONST_GIMPACT_COMPOUND_SHAPE; - } - -}; - - - -//! This class manages a sub part of a mesh supplied by the btStridingMeshInterface interface. -/*! -- Simply create this shape by passing the btStridingMeshInterface to the constructor btGImpactMeshShapePart, then you must call updateBound() after creating the mesh -- When making operations with this shape, you must call lock before accessing to the trimesh primitives, and then call unlock -- You can handle deformable meshes with this shape, by calling postUpdate() every time when changing the mesh vertices. - -*/ -class btGImpactMeshShapePart : public btGImpactShapeInterface -{ -public: - //! Trimesh primitive manager - /*! - Manages the info from btStridingMeshInterface object and controls the Lock/Unlock mechanism - */ - class TrimeshPrimitiveManager:public btPrimitiveManagerBase - { - public: - btScalar m_margin; - btStridingMeshInterface * m_meshInterface; - btVector3 m_scale; - int m_part; - int m_lock_count; - const unsigned char *vertexbase; - int numverts; - PHY_ScalarType type; - int stride; - const unsigned char *indexbase; - int indexstride; - int numfaces; - PHY_ScalarType indicestype; - - TrimeshPrimitiveManager() - { - m_meshInterface = NULL; - m_part = 0; - m_margin = 0.01f; - m_scale = btVector3(1.f,1.f,1.f); - m_lock_count = 0; - vertexbase = 0; - numverts = 0; - stride = 0; - indexbase = 0; - indexstride = 0; - numfaces = 0; - } - - TrimeshPrimitiveManager(const TrimeshPrimitiveManager & manager) - : btPrimitiveManagerBase() - { - m_meshInterface = manager.m_meshInterface; - m_part = manager.m_part; - m_margin = manager.m_margin; - m_scale = manager.m_scale; - m_lock_count = 0; - vertexbase = 0; - numverts = 0; - stride = 0; - indexbase = 0; - indexstride = 0; - numfaces = 0; - - } - - TrimeshPrimitiveManager( - btStridingMeshInterface * meshInterface, int part) - { - m_meshInterface = meshInterface; - m_part = part; - m_scale = m_meshInterface->getScaling(); - m_margin = 0.1f; - m_lock_count = 0; - vertexbase = 0; - numverts = 0; - stride = 0; - indexbase = 0; - indexstride = 0; - numfaces = 0; - - } - - virtual ~TrimeshPrimitiveManager() {} - - void lock() - { - if(m_lock_count>0) - { - m_lock_count++; - return; - } - m_meshInterface->getLockedReadOnlyVertexIndexBase( - &vertexbase,numverts, - type, stride,&indexbase, indexstride, numfaces,indicestype,m_part); - - m_lock_count = 1; - } - - void unlock() - { - if(m_lock_count == 0) return; - if(m_lock_count>1) - { - --m_lock_count; - return; - } - m_meshInterface->unLockReadOnlyVertexBase(m_part); - vertexbase = NULL; - m_lock_count = 0; - } - - virtual bool is_trimesh() const - { - return true; - } - - virtual int get_primitive_count() const - { - return (int )numfaces; - } - - SIMD_FORCE_INLINE int get_vertex_count() const - { - return (int )numverts; - } - - SIMD_FORCE_INLINE void get_indices(int face_index,int &i0,int &i1,int &i2) const - { - if(indicestype == PHY_SHORT) - { - short * s_indices = (short *)(indexbase + face_index*indexstride); - i0 = s_indices[0]; - i1 = s_indices[1]; - i2 = s_indices[2]; - } - else - { - int * i_indices = (int *)(indexbase + face_index*indexstride); - i0 = i_indices[0]; - i1 = i_indices[1]; - i2 = i_indices[2]; - } - } - - SIMD_FORCE_INLINE void get_vertex(int vertex_index, btVector3 & vertex) const - { - if(type == PHY_DOUBLE) - { - double * dvertices = (double *)(vertexbase + vertex_index*stride); - vertex[0] = btScalar(dvertices[0]*m_scale[0]); - vertex[1] = btScalar(dvertices[1]*m_scale[1]); - vertex[2] = btScalar(dvertices[2]*m_scale[2]); - } - else - { - float * svertices = (float *)(vertexbase + vertex_index*stride); - vertex[0] = svertices[0]*m_scale[0]; - vertex[1] = svertices[1]*m_scale[1]; - vertex[2] = svertices[2]*m_scale[2]; - } - } - - virtual void get_primitive_box(int prim_index ,btAABB & primbox) const - { - btPrimitiveTriangle triangle; - get_primitive_triangle(prim_index,triangle); - primbox.calc_from_triangle_margin( - triangle.m_vertices[0], - triangle.m_vertices[1],triangle.m_vertices[2],triangle.m_margin); - } - - virtual void get_primitive_triangle(int prim_index,btPrimitiveTriangle & triangle) const - { - int indices[3]; - get_indices(prim_index,indices[0],indices[1],indices[2]); - get_vertex(indices[0],triangle.m_vertices[0]); - get_vertex(indices[1],triangle.m_vertices[1]); - get_vertex(indices[2],triangle.m_vertices[2]); - triangle.m_margin = m_margin; - } - - SIMD_FORCE_INLINE void get_bullet_triangle(int prim_index,btTriangleShapeEx & triangle) const - { - int indices[3]; - get_indices(prim_index,indices[0],indices[1],indices[2]); - get_vertex(indices[0],triangle.m_vertices1[0]); - get_vertex(indices[1],triangle.m_vertices1[1]); - get_vertex(indices[2],triangle.m_vertices1[2]); - triangle.setMargin(m_margin); - } - - }; - - -protected: - TrimeshPrimitiveManager m_primitive_manager; -public: - - btGImpactMeshShapePart() - { - m_box_set.setPrimitiveManager(&m_primitive_manager); - } - - - btGImpactMeshShapePart(btStridingMeshInterface * meshInterface, int part) - { - m_primitive_manager.m_meshInterface = meshInterface; - m_primitive_manager.m_part = part; - m_box_set.setPrimitiveManager(&m_primitive_manager); - } - - virtual ~btGImpactMeshShapePart() - { - } - - //! if true, then its children must get transforms. - virtual bool childrenHasTransform() const - { - return false; - } - - - //! call when reading child shapes - virtual void lockChildShapes() const - { - void * dummy = (void*)(m_box_set.getPrimitiveManager()); - TrimeshPrimitiveManager * dummymanager = static_cast(dummy); - dummymanager->lock(); - } - - virtual void unlockChildShapes() const - { - void * dummy = (void*)(m_box_set.getPrimitiveManager()); - TrimeshPrimitiveManager * dummymanager = static_cast(dummy); - dummymanager->unlock(); - } - - //! Gets the number of children - virtual int getNumChildShapes() const - { - return m_primitive_manager.get_primitive_count(); - } - - - //! Gets the children - virtual btCollisionShape* getChildShape(int index) - { - (void) index; - btAssert(0); - return NULL; - } - - - - //! Gets the child - virtual const btCollisionShape* getChildShape(int index) const - { - (void) index; - btAssert(0); - return NULL; - } - - //! Gets the children transform - virtual btTransform getChildTransform(int index) const - { - (void) index; - btAssert(0); - return btTransform(); - } - - //! Sets the children transform - /*! - \post You must call updateBound() for update the box set. - */ - virtual void setChildTransform(int index, const btTransform & transform) - { - (void) index; - (void) transform; - btAssert(0); - } - - - //! Obtains the primitive manager - virtual const btPrimitiveManagerBase * getPrimitiveManager() const - { - return &m_primitive_manager; - } - - SIMD_FORCE_INLINE TrimeshPrimitiveManager * getTrimeshPrimitiveManager() - { - return &m_primitive_manager; - } - - - - - - virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; - - - - - virtual const char* getName()const - { - return "GImpactMeshShapePart"; - } - - virtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const - { - return CONST_GIMPACT_TRIMESH_SHAPE_PART; - } - - //! Determines if this shape has triangles - virtual bool needsRetrieveTriangles() const - { - return true; - } - - //! Determines if this shape has tetrahedrons - virtual bool needsRetrieveTetrahedrons() const - { - return false; - } - - virtual void getBulletTriangle(int prim_index,btTriangleShapeEx & triangle) const - { - m_primitive_manager.get_bullet_triangle(prim_index,triangle); - } - - virtual void getBulletTetrahedron(int prim_index,btTetrahedronShapeEx & tetrahedron) const - { - (void) prim_index; - (void) tetrahedron; - btAssert(0); - } - - - - SIMD_FORCE_INLINE int getVertexCount() const - { - return m_primitive_manager.get_vertex_count(); - } - - SIMD_FORCE_INLINE void getVertex(int vertex_index, btVector3 & vertex) const - { - m_primitive_manager.get_vertex(vertex_index,vertex); - } - - SIMD_FORCE_INLINE void setMargin(btScalar margin) - { - m_primitive_manager.m_margin = margin; - postUpdate(); - } - - SIMD_FORCE_INLINE btScalar getMargin() const - { - return m_primitive_manager.m_margin; - } - - virtual void setLocalScaling(const btVector3& scaling) - { - m_primitive_manager.m_scale = scaling; - postUpdate(); - } - - virtual const btVector3& getLocalScaling() const - { - return m_primitive_manager.m_scale; - } - - SIMD_FORCE_INLINE int getPart() const - { - return (int)m_primitive_manager.m_part; - } - - virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const; -}; - - -//! This class manages a mesh supplied by the btStridingMeshInterface interface. -/*! -Set of btGImpactMeshShapePart parts -- Simply create this shape by passing the btStridingMeshInterface to the constructor btGImpactMeshShape, then you must call updateBound() after creating the mesh - -- You can handle deformable meshes with this shape, by calling postUpdate() every time when changing the mesh vertices. - -*/ -class btGImpactMeshShape : public btGImpactShapeInterface -{ - btStridingMeshInterface* m_meshInterface; - -protected: - btAlignedObjectArray m_mesh_parts; - void buildMeshParts(btStridingMeshInterface * meshInterface) - { - for (int i=0;igetNumSubParts() ;++i ) - { - btGImpactMeshShapePart * newpart = new btGImpactMeshShapePart(meshInterface,i); - m_mesh_parts.push_back(newpart); - } - } - - //! use this function for perfofm refit in bounding boxes - virtual void calcLocalAABB() - { - m_localAABB.invalidate(); - int i = m_mesh_parts.size(); - while(i--) - { - m_mesh_parts[i]->updateBound(); - m_localAABB.merge(m_mesh_parts[i]->getLocalBox()); - } - } - -public: - btGImpactMeshShape(btStridingMeshInterface * meshInterface) - { - m_meshInterface = meshInterface; - buildMeshParts(meshInterface); - } - - virtual ~btGImpactMeshShape() - { - int i = m_mesh_parts.size(); - while(i--) - { - btGImpactMeshShapePart * part = m_mesh_parts[i]; - delete part; - } - m_mesh_parts.clear(); - } - - - btStridingMeshInterface* getMeshInterface() - { - return m_meshInterface; - } - - const btStridingMeshInterface* getMeshInterface() const - { - return m_meshInterface; - } - - int getMeshPartCount() const - { - return m_mesh_parts.size(); - } - - btGImpactMeshShapePart * getMeshPart(int index) - { - return m_mesh_parts[index]; - } - - - - const btGImpactMeshShapePart * getMeshPart(int index) const - { - return m_mesh_parts[index]; - } - - - virtual void setLocalScaling(const btVector3& scaling) - { - localScaling = scaling; - - int i = m_mesh_parts.size(); - while(i--) - { - btGImpactMeshShapePart * part = m_mesh_parts[i]; - part->setLocalScaling(scaling); - } - - m_needs_update = true; - } - - virtual void setMargin(btScalar margin) - { - m_collisionMargin = margin; - - int i = m_mesh_parts.size(); - while(i--) - { - btGImpactMeshShapePart * part = m_mesh_parts[i]; - part->setMargin(margin); - } - - m_needs_update = true; - } - - //! Tells to this object that is needed to refit all the meshes - virtual void postUpdate() - { - int i = m_mesh_parts.size(); - while(i--) - { - btGImpactMeshShapePart * part = m_mesh_parts[i]; - part->postUpdate(); - } - - m_needs_update = true; - } - - virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; - - - //! Obtains the primitive manager - virtual const btPrimitiveManagerBase * getPrimitiveManager() const - { - btAssert(0); - return NULL; - } - - - //! Gets the number of children - virtual int getNumChildShapes() const - { - btAssert(0); - return 0; - } - - - //! if true, then its children must get transforms. - virtual bool childrenHasTransform() const - { - btAssert(0); - return false; - } - - //! Determines if this shape has triangles - virtual bool needsRetrieveTriangles() const - { - btAssert(0); - return false; - } - - //! Determines if this shape has tetrahedrons - virtual bool needsRetrieveTetrahedrons() const - { - btAssert(0); - return false; - } - - virtual void getBulletTriangle(int prim_index,btTriangleShapeEx & triangle) const - { - (void) prim_index; (void) triangle; - btAssert(0); - } - - virtual void getBulletTetrahedron(int prim_index,btTetrahedronShapeEx & tetrahedron) const - { - (void) prim_index; (void) tetrahedron; - btAssert(0); - } - - //! call when reading child shapes - virtual void lockChildShapes() const - { - btAssert(0); - } - - virtual void unlockChildShapes() const - { - btAssert(0); - } - - - - - //! Retrieves the bound from a child - /*! - */ - virtual void getChildAabb(int child_index,const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const - { - (void) child_index; (void) t; (void) aabbMin; (void) aabbMax; - btAssert(0); - } - - //! Gets the children - virtual btCollisionShape* getChildShape(int index) - { - (void) index; - btAssert(0); - return NULL; - } - - - //! Gets the child - virtual const btCollisionShape* getChildShape(int index) const - { - (void) index; - btAssert(0); - return NULL; - } - - //! Gets the children transform - virtual btTransform getChildTransform(int index) const - { - (void) index; - btAssert(0); - return btTransform(); - } - - //! Sets the children transform - /*! - \post You must call updateBound() for update the box set. - */ - virtual void setChildTransform(int index, const btTransform & transform) - { - (void) index; (void) transform; - btAssert(0); - } - - - virtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const - { - return CONST_GIMPACT_TRIMESH_SHAPE; - } - - - virtual const char* getName()const - { - return "GImpactMesh"; - } - - virtual void rayTest(const btVector3& rayFrom, const btVector3& rayTo, btCollisionWorld::RayResultCallback& resultCallback) const; - - //! Function for retrieve triangles. - /*! - It gives the triangles in local space - */ - virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const; - - virtual int calculateSerializeBufferSize() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; - -}; - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btGImpactMeshShapeData -{ - btCollisionShapeData m_collisionShapeData; - - btStridingMeshInterfaceData m_meshInterface; - - btVector3FloatData m_localScaling; - - float m_collisionMargin; - - int m_gimpactSubType; -}; - -SIMD_FORCE_INLINE int btGImpactMeshShape::calculateSerializeBufferSize() const -{ - return sizeof(btGImpactMeshShapeData); -} - - -#endif //GIMPACT_MESH_SHAPE_H diff --git a/extern/bullet2/BulletCollision/Gimpact/btGenericPoolAllocator.cpp b/extern/bullet2/BulletCollision/Gimpact/btGenericPoolAllocator.cpp deleted file mode 100644 index 956fa0430e3..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/btGenericPoolAllocator.cpp +++ /dev/null @@ -1,283 +0,0 @@ -/*! \file btGenericPoolAllocator.cpp -\author Francisco Len Nßjera. email projectileman@yahoo.com - -General purpose allocator class -*/ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btGenericPoolAllocator.h" - - - -/// *************** btGenericMemoryPool ******************/////////// - -size_t btGenericMemoryPool::allocate_from_free_nodes(size_t num_elements) -{ - size_t ptr = BT_UINT_MAX; - - if(m_free_nodes_count == 0) return BT_UINT_MAX; - // find an avaliable free node with the correct size - size_t revindex = m_free_nodes_count; - - while(revindex-- && ptr == BT_UINT_MAX) - { - if(m_allocated_sizes[m_free_nodes[revindex]]>=num_elements) - { - ptr = revindex; - } - } - if(ptr == BT_UINT_MAX) return BT_UINT_MAX; // not found - - - revindex = ptr; - ptr = m_free_nodes[revindex]; - // post: ptr contains the node index, and revindex the index in m_free_nodes - - size_t finalsize = m_allocated_sizes[ptr]; - finalsize -= num_elements; - - m_allocated_sizes[ptr] = num_elements; - - // post: finalsize>=0, m_allocated_sizes[ptr] has the requested size - - if(finalsize>0) // preserve free node, there are some free memory - { - m_free_nodes[revindex] = ptr + num_elements; - m_allocated_sizes[ptr + num_elements] = finalsize; - } - else // delete free node - { - // swap with end - m_free_nodes[revindex] = m_free_nodes[m_free_nodes_count-1]; - m_free_nodes_count--; - } - - return ptr; -} - -size_t btGenericMemoryPool::allocate_from_pool(size_t num_elements) -{ - if(m_allocated_count+num_elements>m_max_element_count) return BT_UINT_MAX; - - size_t ptr = m_allocated_count; - - m_allocated_sizes[m_allocated_count] = num_elements; - m_allocated_count+=num_elements; - - return ptr; -} - - -void btGenericMemoryPool::init_pool(size_t element_size, size_t element_count) -{ - m_allocated_count = 0; - m_free_nodes_count = 0; - - m_element_size = element_size; - m_max_element_count = element_count; - - - - - m_pool = (unsigned char *) btAlignedAlloc(m_element_size*m_max_element_count,16); - m_free_nodes = (size_t *) btAlignedAlloc(sizeof(size_t)*m_max_element_count,16); - m_allocated_sizes = (size_t *) btAlignedAlloc(sizeof(size_t)*m_max_element_count,16); - - for (size_t i = 0;i< m_max_element_count;i++ ) - { - m_allocated_sizes[i] = 0; - } -} - -void btGenericMemoryPool::end_pool() -{ - btAlignedFree(m_pool); - btAlignedFree(m_free_nodes); - btAlignedFree(m_allocated_sizes); - m_allocated_count = 0; - m_free_nodes_count = 0; -} - - -//! Allocates memory in pool -/*! -\param size_bytes size in bytes of the buffer -*/ -void * btGenericMemoryPool::allocate(size_t size_bytes) -{ - - size_t module = size_bytes%m_element_size; - size_t element_count = size_bytes/m_element_size; - if(module>0) element_count++; - - size_t alloc_pos = allocate_from_free_nodes(element_count); - // a free node is found - if(alloc_pos != BT_UINT_MAX) - { - return get_element_data(alloc_pos); - } - // allocate directly on pool - alloc_pos = allocate_from_pool(element_count); - - if(alloc_pos == BT_UINT_MAX) return NULL; // not space - return get_element_data(alloc_pos); -} - -bool btGenericMemoryPool::freeMemory(void * pointer) -{ - unsigned char * pointer_pos = (unsigned char *)pointer; - unsigned char * pool_pos = (unsigned char *)m_pool; - // calc offset - if(pointer_pos=get_pool_capacity()) return false;// far away - - // find free position - m_free_nodes[m_free_nodes_count] = offset/m_element_size; - m_free_nodes_count++; - return true; -} - - -/// *******************! btGenericPoolAllocator *******************!/// - - -btGenericPoolAllocator::~btGenericPoolAllocator() -{ - // destroy pools - size_t i; - for (i=0;iend_pool(); - btAlignedFree(m_pools[i]); - } -} - - -// creates a pool -btGenericMemoryPool * btGenericPoolAllocator::push_new_pool() -{ - if(m_pool_count >= BT_DEFAULT_MAX_POOLS) return NULL; - - btGenericMemoryPool * newptr = (btGenericMemoryPool *)btAlignedAlloc(sizeof(btGenericMemoryPool),16); - - m_pools[m_pool_count] = newptr; - - m_pools[m_pool_count]->init_pool(m_pool_element_size,m_pool_element_count); - - m_pool_count++; - return newptr; -} - -void * btGenericPoolAllocator::failback_alloc(size_t size_bytes) -{ - - btGenericMemoryPool * pool = NULL; - - - if(size_bytes<=get_pool_capacity()) - { - pool = push_new_pool(); - } - - if(pool==NULL) // failback - { - return btAlignedAlloc(size_bytes,16); - } - - return pool->allocate(size_bytes); -} - -bool btGenericPoolAllocator::failback_free(void * pointer) -{ - btAlignedFree(pointer); - return true; -} - - -//! Allocates memory in pool -/*! -\param size_bytes size in bytes of the buffer -*/ -void * btGenericPoolAllocator::allocate(size_t size_bytes) -{ - void * ptr = NULL; - - size_t i = 0; - while(iallocate(size_bytes); - ++i; - } - - if(ptr) return ptr; - - return failback_alloc(size_bytes); -} - -bool btGenericPoolAllocator::freeMemory(void * pointer) -{ - bool result = false; - - size_t i = 0; - while(ifreeMemory(pointer); - ++i; - } - - if(result) return true; - - return failback_free(pointer); -} - -/// ************** STANDARD ALLOCATOR ***************************/// - - -#define BT_DEFAULT_POOL_SIZE 32768 -#define BT_DEFAULT_POOL_ELEMENT_SIZE 8 - -// main allocator -class GIM_STANDARD_ALLOCATOR: public btGenericPoolAllocator -{ -public: - GIM_STANDARD_ALLOCATOR():btGenericPoolAllocator(BT_DEFAULT_POOL_ELEMENT_SIZE,BT_DEFAULT_POOL_SIZE) - { - } -}; - -// global allocator -GIM_STANDARD_ALLOCATOR g_main_allocator; - - -void * btPoolAlloc(size_t size) -{ - return g_main_allocator.allocate(size); -} - -void * btPoolRealloc(void *ptr, size_t oldsize, size_t newsize) -{ - void * newptr = btPoolAlloc(newsize); - size_t copysize = oldsize -#include -#include -#include "LinearMath/btAlignedAllocator.h" - -#define BT_UINT_MAX UINT_MAX -#define BT_DEFAULT_MAX_POOLS 16 - - -//! Generic Pool class -class btGenericMemoryPool -{ -public: - unsigned char * m_pool; //[m_element_size*m_max_element_count]; - size_t * m_free_nodes; //[m_max_element_count];//! free nodes - size_t * m_allocated_sizes;//[m_max_element_count];//! Number of elements allocated per node - size_t m_allocated_count; - size_t m_free_nodes_count; -protected: - size_t m_element_size; - size_t m_max_element_count; - - size_t allocate_from_free_nodes(size_t num_elements); - size_t allocate_from_pool(size_t num_elements); - -public: - - void init_pool(size_t element_size, size_t element_count); - - void end_pool(); - - - btGenericMemoryPool(size_t element_size, size_t element_count) - { - init_pool(element_size, element_count); - } - - ~btGenericMemoryPool() - { - end_pool(); - } - - - inline size_t get_pool_capacity() - { - return m_element_size*m_max_element_count; - } - - inline size_t gem_element_size() - { - return m_element_size; - } - - inline size_t get_max_element_count() - { - return m_max_element_count; - } - - inline size_t get_allocated_count() - { - return m_allocated_count; - } - - inline size_t get_free_positions_count() - { - return m_free_nodes_count; - } - - inline void * get_element_data(size_t element_index) - { - return &m_pool[element_index*m_element_size]; - } - - //! Allocates memory in pool - /*! - \param size_bytes size in bytes of the buffer - */ - void * allocate(size_t size_bytes); - - bool freeMemory(void * pointer); -}; - - - - -//! Generic Allocator with pools -/*! -General purpose Allocator which can create Memory Pools dynamiacally as needed. -*/ -class btGenericPoolAllocator -{ -protected: - size_t m_pool_element_size; - size_t m_pool_element_count; -public: - btGenericMemoryPool * m_pools[BT_DEFAULT_MAX_POOLS]; - size_t m_pool_count; - - - inline size_t get_pool_capacity() - { - return m_pool_element_size*m_pool_element_count; - } - - -protected: - // creates a pool - btGenericMemoryPool * push_new_pool(); - - void * failback_alloc(size_t size_bytes); - - bool failback_free(void * pointer); -public: - - btGenericPoolAllocator(size_t pool_element_size, size_t pool_element_count) - { - m_pool_count = 0; - m_pool_element_size = pool_element_size; - m_pool_element_count = pool_element_count; - } - - virtual ~btGenericPoolAllocator(); - - //! Allocates memory in pool - /*! - \param size_bytes size in bytes of the buffer - */ - void * allocate(size_t size_bytes); - - bool freeMemory(void * pointer); -}; - - - -void * btPoolAlloc(size_t size); -void * btPoolRealloc(void *ptr, size_t oldsize, size_t newsize); -void btPoolFree(void *ptr); - - -#endif diff --git a/extern/bullet2/BulletCollision/Gimpact/btGeometryOperations.h b/extern/bullet2/BulletCollision/Gimpact/btGeometryOperations.h deleted file mode 100644 index bc5a416ddb7..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/btGeometryOperations.h +++ /dev/null @@ -1,212 +0,0 @@ -#ifndef BT_BASIC_GEOMETRY_OPERATIONS_H_INCLUDED -#define BT_BASIC_GEOMETRY_OPERATIONS_H_INCLUDED - -/*! \file btGeometryOperations.h -*\author Francisco Len Nßjera - -*/ -/* -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btBoxCollision.h" - - - - - -#define PLANEDIREPSILON 0.0000001f -#define PARALELENORMALS 0.000001f - - -#define BT_CLAMP(number,minval,maxval) (numbermaxval?maxval:number)) - -/// Calc a plane from a triangle edge an a normal. plane is a vec4f -SIMD_FORCE_INLINE void bt_edge_plane(const btVector3 & e1,const btVector3 & e2, const btVector3 & normal,btVector4 & plane) -{ - btVector3 planenormal = (e2-e1).cross(normal); - planenormal.normalize(); - plane.setValue(planenormal[0],planenormal[1],planenormal[2],e2.dot(planenormal)); -} - - - -//***************** SEGMENT and LINE FUNCTIONS **********************************/// - -/*! Finds the closest point(cp) to (v) on a segment (e1,e2) - */ -SIMD_FORCE_INLINE void bt_closest_point_on_segment( - btVector3 & cp, const btVector3 & v, - const btVector3 &e1,const btVector3 &e2) -{ - btVector3 n = e2-e1; - cp = v - e1; - btScalar _scalar = cp.dot(n)/n.dot(n); - if(_scalar <0.0f) - { - cp = e1; - } - else if(_scalar >1.0f) - { - cp = e2; - } - else - { - cp = _scalar*n + e1; - } -} - - -//! line plane collision -/*! -*\return - -0 if the ray never intersects - -1 if the ray collides in front - -2 if the ray collides in back -*/ - -SIMD_FORCE_INLINE int bt_line_plane_collision( - const btVector4 & plane, - const btVector3 & vDir, - const btVector3 & vPoint, - btVector3 & pout, - btScalar &tparam, - btScalar tmin, btScalar tmax) -{ - - btScalar _dotdir = vDir.dot(plane); - - if(btFabs(_dotdir)tmax) - { - returnvalue = 0; - tparam = tmax; - } - pout = tparam*vDir + vPoint; - return returnvalue; -} - - -//! Find closest points on segments -SIMD_FORCE_INLINE void bt_segment_collision( - const btVector3 & vA1, - const btVector3 & vA2, - const btVector3 & vB1, - const btVector3 & vB2, - btVector3 & vPointA, - btVector3 & vPointB) -{ - btVector3 AD = vA2 - vA1; - btVector3 BD = vB2 - vB1; - btVector3 N = AD.cross(BD); - btScalar tp = N.length2(); - - btVector4 _M;//plane - - if(tp_M[1]) - { - invert_b_order = true; - BT_SWAP_NUMBERS(_M[0],_M[1]); - } - _M[2] = vA1.dot(AD); - _M[3] = vA2.dot(AD); - //mid points - N[0] = (_M[0]+_M[1])*0.5f; - N[1] = (_M[2]+_M[3])*0.5f; - - if(N[0]=0.0f) - { - if (_dist>m_penetration_depth) - { - m_penetration_depth = _dist; - point_indices[0] = _k; - m_point_count=1; - } - else if ((_dist+SIMD_EPSILON)>=m_penetration_depth) - { - point_indices[m_point_count] = _k; - m_point_count++; - } - } - } - - for ( _k=0;_k0.0f&&dis1>0.0f&&dis2>0.0f) return false; - - // classify points on this triangle - dis0 = bt_distance_point_plane(other.m_plane,m_vertices[0]) - total_margin; - - dis1 = bt_distance_point_plane(other.m_plane,m_vertices[1]) - total_margin; - - dis2 = bt_distance_point_plane(other.m_plane,m_vertices[2]) - total_margin; - - if (dis0>0.0f&&dis1>0.0f&&dis2>0.0f) return false; - - return true; -} - -int btPrimitiveTriangle::clip_triangle(btPrimitiveTriangle & other, btVector3 * clipped_points ) -{ - // edge 0 - - btVector3 temp_points[MAX_TRI_CLIPPING]; - - - btVector4 edgeplane; - - get_edge_plane(0,edgeplane); - - - int clipped_count = bt_plane_clip_triangle( - edgeplane,other.m_vertices[0],other.m_vertices[1],other.m_vertices[2],temp_points); - - if (clipped_count == 0) return 0; - - btVector3 temp_points1[MAX_TRI_CLIPPING]; - - - // edge 1 - get_edge_plane(1,edgeplane); - - - clipped_count = bt_plane_clip_polygon(edgeplane,temp_points,clipped_count,temp_points1); - - if (clipped_count == 0) return 0; - - // edge 2 - get_edge_plane(2,edgeplane); - - clipped_count = bt_plane_clip_polygon( - edgeplane,temp_points1,clipped_count,clipped_points); - - return clipped_count; -} - -bool btPrimitiveTriangle::find_triangle_collision_clip_method(btPrimitiveTriangle & other, GIM_TRIANGLE_CONTACT & contacts) -{ - btScalar margin = m_margin + other.m_margin; - - btVector3 clipped_points[MAX_TRI_CLIPPING]; - int clipped_count; - //create planes - // plane v vs U points - - GIM_TRIANGLE_CONTACT contacts1; - - contacts1.m_separating_normal = m_plane; - - - clipped_count = clip_triangle(other,clipped_points); - - if (clipped_count == 0 ) - { - return false;//Reject - } - - //find most deep interval face1 - contacts1.merge_points(contacts1.m_separating_normal,margin,clipped_points,clipped_count); - if (contacts1.m_point_count == 0) return false; // too far - //Normal pointing to this triangle - contacts1.m_separating_normal *= -1.f; - - - //Clip tri1 by tri2 edges - GIM_TRIANGLE_CONTACT contacts2; - contacts2.m_separating_normal = other.m_plane; - - clipped_count = other.clip_triangle(*this,clipped_points); - - if (clipped_count == 0 ) - { - return false;//Reject - } - - //find most deep interval face1 - contacts2.merge_points(contacts2.m_separating_normal,margin,clipped_points,clipped_count); - if (contacts2.m_point_count == 0) return false; // too far - - - - - ////check most dir for contacts - if (contacts2.m_penetration_depth0.0f&&dis1>0.0f&&dis2>0.0f) return false; - - // classify points on this triangle - dis0 = bt_distance_point_plane(plane1,m_vertices1[0]) - total_margin; - - dis1 = bt_distance_point_plane(plane1,m_vertices1[1]) - total_margin; - - dis2 = bt_distance_point_plane(plane1,m_vertices1[2]) - total_margin; - - if (dis0>0.0f&&dis1>0.0f&&dis2>0.0f) return false; - - return true; -} - - diff --git a/extern/bullet2/BulletCollision/Gimpact/btTriangleShapeEx.h b/extern/bullet2/BulletCollision/Gimpact/btTriangleShapeEx.h deleted file mode 100644 index bbd6b630c02..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/btTriangleShapeEx.h +++ /dev/null @@ -1,180 +0,0 @@ -/*! \file btGImpactShape.h -\author Francisco Len Nßjera -*/ -/* -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#ifndef TRIANGLE_SHAPE_EX_H -#define TRIANGLE_SHAPE_EX_H - -#include "BulletCollision/CollisionShapes/btCollisionShape.h" -#include "BulletCollision/CollisionShapes/btTriangleShape.h" -#include "btBoxCollision.h" -#include "btClipPolygon.h" -#include "btGeometryOperations.h" - - -#define MAX_TRI_CLIPPING 16 - -//! Structure for collision -struct GIM_TRIANGLE_CONTACT -{ - btScalar m_penetration_depth; - int m_point_count; - btVector4 m_separating_normal; - btVector3 m_points[MAX_TRI_CLIPPING]; - - SIMD_FORCE_INLINE void copy_from(const GIM_TRIANGLE_CONTACT& other) - { - m_penetration_depth = other.m_penetration_depth; - m_separating_normal = other.m_separating_normal; - m_point_count = other.m_point_count; - int i = m_point_count; - while(i--) - { - m_points[i] = other.m_points[i]; - } - } - - GIM_TRIANGLE_CONTACT() - { - } - - GIM_TRIANGLE_CONTACT(const GIM_TRIANGLE_CONTACT& other) - { - copy_from(other); - } - - //! classify points that are closer - void merge_points(const btVector4 & plane, - btScalar margin, const btVector3 * points, int point_count); - -}; - - - -class btPrimitiveTriangle -{ -public: - btVector3 m_vertices[3]; - btVector4 m_plane; - btScalar m_margin; - btScalar m_dummy; - btPrimitiveTriangle():m_margin(0.01f) - { - - } - - - SIMD_FORCE_INLINE void buildTriPlane() - { - btVector3 normal = (m_vertices[1]-m_vertices[0]).cross(m_vertices[2]-m_vertices[0]); - normal.normalize(); - m_plane.setValue(normal[0],normal[1],normal[2],m_vertices[0].dot(normal)); - } - - //! Test if triangles could collide - bool overlap_test_conservative(const btPrimitiveTriangle& other); - - //! Calcs the plane which is paralele to the edge and perpendicular to the triangle plane - /*! - \pre this triangle must have its plane calculated. - */ - SIMD_FORCE_INLINE void get_edge_plane(int edge_index, btVector4 &plane) const - { - const btVector3 & e0 = m_vertices[edge_index]; - const btVector3 & e1 = m_vertices[(edge_index+1)%3]; - bt_edge_plane(e0,e1,m_plane,plane); - } - - void applyTransform(const btTransform& t) - { - m_vertices[0] = t(m_vertices[0]); - m_vertices[1] = t(m_vertices[1]); - m_vertices[2] = t(m_vertices[2]); - } - - //! Clips the triangle against this - /*! - \pre clipped_points must have MAX_TRI_CLIPPING size, and this triangle must have its plane calculated. - \return the number of clipped points - */ - int clip_triangle(btPrimitiveTriangle & other, btVector3 * clipped_points ); - - //! Find collision using the clipping method - /*! - \pre this triangle and other must have their triangles calculated - */ - bool find_triangle_collision_clip_method(btPrimitiveTriangle & other, GIM_TRIANGLE_CONTACT & contacts); -}; - - - -//! Helper class for colliding Bullet Triangle Shapes -/*! -This class implements a better getAabb method than the previous btTriangleShape class -*/ -class btTriangleShapeEx: public btTriangleShape -{ -public: - - btTriangleShapeEx():btTriangleShape(btVector3(0,0,0),btVector3(0,0,0),btVector3(0,0,0)) - { - } - - btTriangleShapeEx(const btVector3& p0,const btVector3& p1,const btVector3& p2): btTriangleShape(p0,p1,p2) - { - } - - btTriangleShapeEx(const btTriangleShapeEx & other): btTriangleShape(other.m_vertices1[0],other.m_vertices1[1],other.m_vertices1[2]) - { - } - - virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax)const - { - btVector3 tv0 = t(m_vertices1[0]); - btVector3 tv1 = t(m_vertices1[1]); - btVector3 tv2 = t(m_vertices1[2]); - - btAABB trianglebox(tv0,tv1,tv2,m_collisionMargin); - aabbMin = trianglebox.m_min; - aabbMax = trianglebox.m_max; - } - - void applyTransform(const btTransform& t) - { - m_vertices1[0] = t(m_vertices1[0]); - m_vertices1[1] = t(m_vertices1[1]); - m_vertices1[2] = t(m_vertices1[2]); - } - - SIMD_FORCE_INLINE void buildTriPlane(btVector4 & plane) const - { - btVector3 normal = (m_vertices1[1]-m_vertices1[0]).cross(m_vertices1[2]-m_vertices1[0]); - normal.normalize(); - plane.setValue(normal[0],normal[1],normal[2],m_vertices1[0].dot(normal)); - } - - bool overlap_test_conservative(const btTriangleShapeEx& other); -}; - - -#endif //TRIANGLE_MESH_SHAPE_H diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_array.h b/extern/bullet2/BulletCollision/Gimpact/gim_array.h deleted file mode 100644 index c8161d252d5..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/gim_array.h +++ /dev/null @@ -1,326 +0,0 @@ -#ifndef GIM_ARRAY_H_INCLUDED -#define GIM_ARRAY_H_INCLUDED -/*! \file gim_array.h -\author Francisco Len Nßjera -*/ -/* ------------------------------------------------------------------------------ -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - This library is free software; you can redistribute it and/or - modify it under the terms of EITHER: - (1) The GNU Lesser General Public License as published by the Free - Software Foundation; either version 2.1 of the License, or (at - your option) any later version. The text of the GNU Lesser - General Public License is included with this library in the - file GIMPACT-LICENSE-LGPL.TXT. - (2) The BSD-style license that is included with this library in - the file GIMPACT-LICENSE-BSD.TXT. - (3) The zlib/libpng license that is included with this library in - the file GIMPACT-LICENSE-ZLIB.TXT. - - This library 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 files - GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. - ------------------------------------------------------------------------------ -*/ - -#include "gim_memory.h" - - -#define GIM_ARRAY_GROW_INCREMENT 2 -#define GIM_ARRAY_GROW_FACTOR 2 - -//! Very simple array container with fast access and simd memory -template -class gim_array -{ -public: -//! properties -//!@{ - T *m_data; - GUINT m_size; - GUINT m_allocated_size; -//!@} -//! protected operations -//!@{ - - inline void destroyData() - { - m_allocated_size = 0; - if(m_data==NULL) return; - gim_free(m_data); - m_data = NULL; - } - - inline bool resizeData(GUINT newsize) - { - if(newsize==0) - { - destroyData(); - return true; - } - - if(m_size>0) - { - m_data = (T*)gim_realloc(m_data,m_size*sizeof(T),newsize*sizeof(T)); - } - else - { - m_data = (T*)gim_alloc(newsize*sizeof(T)); - } - m_allocated_size = newsize; - return true; - } - - inline bool growingCheck() - { - if(m_allocated_size<=m_size) - { - GUINT requestsize = m_size; - m_size = m_allocated_size; - if(resizeData((requestsize+GIM_ARRAY_GROW_INCREMENT)*GIM_ARRAY_GROW_FACTOR)==false) return false; - } - return true; - } - -//!@} -//! public operations -//!@{ - inline bool reserve(GUINT size) - { - if(m_allocated_size>=size) return false; - return resizeData(size); - } - - inline void clear_range(GUINT start_range) - { - while(m_size>start_range) - { - m_data[--m_size].~T(); - } - } - - inline void clear() - { - if(m_size==0)return; - clear_range(0); - } - - inline void clear_memory() - { - clear(); - destroyData(); - } - - gim_array() - { - m_data = 0; - m_size = 0; - m_allocated_size = 0; - } - - gim_array(GUINT reservesize) - { - m_data = 0; - m_size = 0; - - m_allocated_size = 0; - reserve(reservesize); - } - - ~gim_array() - { - clear_memory(); - } - - inline GUINT size() const - { - return m_size; - } - - inline GUINT max_size() const - { - return m_allocated_size; - } - - inline T & operator[](size_t i) - { - return m_data[i]; - } - inline const T & operator[](size_t i) const - { - return m_data[i]; - } - - inline T * pointer(){ return m_data;} - inline const T * pointer() const - { return m_data;} - - - inline T * get_pointer_at(GUINT i) - { - return m_data + i; - } - - inline const T * get_pointer_at(GUINT i) const - { - return m_data + i; - } - - inline T & at(GUINT i) - { - return m_data[i]; - } - - inline const T & at(GUINT i) const - { - return m_data[i]; - } - - inline T & front() - { - return *m_data; - } - - inline const T & front() const - { - return *m_data; - } - - inline T & back() - { - return m_data[m_size-1]; - } - - inline const T & back() const - { - return m_data[m_size-1]; - } - - - inline void swap(GUINT i, GUINT j) - { - gim_swap_elements(m_data,i,j); - } - - inline void push_back(const T & obj) - { - this->growingCheck(); - m_data[m_size] = obj; - m_size++; - } - - //!Simply increase the m_size, doesn't call the new element constructor - inline void push_back_mem() - { - this->growingCheck(); - m_size++; - } - - inline void push_back_memcpy(const T & obj) - { - this->growingCheck(); - irr_simd_memcpy(&m_data[m_size],&obj,sizeof(T)); - m_size++; - } - - inline void pop_back() - { - m_size--; - m_data[m_size].~T(); - } - - //!Simply decrease the m_size, doesn't call the deleted element destructor - inline void pop_back_mem() - { - m_size--; - } - - //! fast erase - inline void erase(GUINT index) - { - if(indexgrowingCheck(); - for(GUINT i = m_size;i>index;i--) - { - gim_simd_memcpy(m_data+i,m_data+i-1,sizeof(T)); - } - m_size++; - } - - inline void insert(const T & obj,GUINT index) - { - insert_mem(index); - m_data[index] = obj; - } - - inline void resize(GUINT size, bool call_constructor = true) - { - - if(size>m_size) - { - reserve(size); - if(call_constructor) - { - T obj; - while(m_size -SIMD_FORCE_INLINE bool POINT_IN_HULL( - const CLASS_POINT& point,const CLASS_PLANE * planes,GUINT plane_count) -{ - GREAL _dis; - for (GUINT _i = 0;_i< plane_count;++_i) - { - _dis = DISTANCE_PLANE_POINT(planes[_i],point); - if(_dis>0.0f) return false; - } - return true; -} - -template -SIMD_FORCE_INLINE void PLANE_CLIP_SEGMENT( - const CLASS_POINT& s1, - const CLASS_POINT &s2,const CLASS_PLANE &plane,CLASS_POINT &clipped) -{ - GREAL _dis1,_dis2; - _dis1 = DISTANCE_PLANE_POINT(plane,s1); - VEC_DIFF(clipped,s2,s1); - _dis2 = VEC_DOT(clipped,plane); - VEC_SCALE(clipped,-_dis1/_dis2,clipped); - VEC_SUM(clipped,clipped,s1); -} - -enum ePLANE_INTERSECTION_TYPE -{ - G_BACK_PLANE = 0, - G_COLLIDE_PLANE, - G_FRONT_PLANE -}; - -enum eLINE_PLANE_INTERSECTION_TYPE -{ - G_FRONT_PLANE_S1 = 0, - G_FRONT_PLANE_S2, - G_BACK_PLANE_S1, - G_BACK_PLANE_S2, - G_COLLIDE_PLANE_S1, - G_COLLIDE_PLANE_S2 -}; - -//! Confirms if the plane intersect the edge or nor -/*! -intersection type must have the following values -
      -
    • 0 : Segment in front of plane, s1 closest -
    • 1 : Segment in front of plane, s2 closest -
    • 2 : Segment in back of plane, s1 closest -
    • 3 : Segment in back of plane, s2 closest -
    • 4 : Segment collides plane, s1 in back -
    • 5 : Segment collides plane, s2 in back -
    -*/ - -template -SIMD_FORCE_INLINE eLINE_PLANE_INTERSECTION_TYPE PLANE_CLIP_SEGMENT2( - const CLASS_POINT& s1, - const CLASS_POINT &s2, - const CLASS_PLANE &plane,CLASS_POINT &clipped) -{ - GREAL _dis1 = DISTANCE_PLANE_POINT(plane,s1); - GREAL _dis2 = DISTANCE_PLANE_POINT(plane,s2); - if(_dis1 >-G_EPSILON && _dis2 >-G_EPSILON) - { - if(_dis1<_dis2) return G_FRONT_PLANE_S1; - return G_FRONT_PLANE_S2; - } - else if(_dis1 _dis2) return G_BACK_PLANE_S1; - return G_BACK_PLANE_S2; - } - - VEC_DIFF(clipped,s2,s1); - _dis2 = VEC_DOT(clipped,plane); - VEC_SCALE(clipped,-_dis1/_dis2,clipped); - VEC_SUM(clipped,clipped,s1); - if(_dis1<_dis2) return G_COLLIDE_PLANE_S1; - return G_COLLIDE_PLANE_S2; -} - -//! Confirms if the plane intersect the edge or not -/*! -clipped1 and clipped2 are the vertices behind the plane. -clipped1 is the closest - -intersection_type must have the following values -
      -
    • 0 : Segment in front of plane, s1 closest -
    • 1 : Segment in front of plane, s2 closest -
    • 2 : Segment in back of plane, s1 closest -
    • 3 : Segment in back of plane, s2 closest -
    • 4 : Segment collides plane, s1 in back -
    • 5 : Segment collides plane, s2 in back -
    -*/ -template -SIMD_FORCE_INLINE eLINE_PLANE_INTERSECTION_TYPE PLANE_CLIP_SEGMENT_CLOSEST( - const CLASS_POINT& s1, - const CLASS_POINT &s2, - const CLASS_PLANE &plane, - CLASS_POINT &clipped1,CLASS_POINT &clipped2) -{ - eLINE_PLANE_INTERSECTION_TYPE intersection_type = PLANE_CLIP_SEGMENT2(s1,s2,plane,clipped1); - switch(intersection_type) - { - case G_FRONT_PLANE_S1: - VEC_COPY(clipped1,s1); - VEC_COPY(clipped2,s2); - break; - case G_FRONT_PLANE_S2: - VEC_COPY(clipped1,s2); - VEC_COPY(clipped2,s1); - break; - case G_BACK_PLANE_S1: - VEC_COPY(clipped1,s1); - VEC_COPY(clipped2,s2); - break; - case G_BACK_PLANE_S2: - VEC_COPY(clipped1,s2); - VEC_COPY(clipped2,s1); - break; - case G_COLLIDE_PLANE_S1: - VEC_COPY(clipped2,s1); - break; - case G_COLLIDE_PLANE_S2: - VEC_COPY(clipped2,s2); - break; - } - return intersection_type; -} - - -//! Finds the 2 smallest cartesian coordinates of a plane normal -#define PLANE_MINOR_AXES(plane, i0, i1) VEC_MINOR_AXES(plane, i0, i1) - -//! Ray plane collision in one way -/*! -Intersects plane in one way only. The ray must face the plane (normals must be in opossite directions).
    -It uses the PLANEDIREPSILON constant. -*/ -template -SIMD_FORCE_INLINE bool RAY_PLANE_COLLISION( - const CLASS_PLANE & plane, - const CLASS_POINT & vDir, - const CLASS_POINT & vPoint, - CLASS_POINT & pout,T &tparam) -{ - GREAL _dis,_dotdir; - _dotdir = VEC_DOT(plane,vDir); - if(_dotdir -SIMD_FORCE_INLINE GUINT LINE_PLANE_COLLISION( - const CLASS_PLANE & plane, - const CLASS_POINT & vDir, - const CLASS_POINT & vPoint, - CLASS_POINT & pout, - T &tparam, - T tmin, T tmax) -{ - GREAL _dis,_dotdir; - _dotdir = VEC_DOT(plane,vDir); - if(btFabs(_dotdir)tmax) - { - returnvalue = 0; - tparam = tmax; - } - - VEC_SCALE(pout,tparam,vDir); - VEC_SUM(pout,vPoint,pout); - return returnvalue; -} - -/*! \brief Returns the Ray on which 2 planes intersect if they do. - Written by Rodrigo Hernandez on ODE convex collision - - \param p1 Plane 1 - \param p2 Plane 2 - \param p Contains the origin of the ray upon returning if planes intersect - \param d Contains the direction of the ray upon returning if planes intersect - \return true if the planes intersect, 0 if paralell. - -*/ -template -SIMD_FORCE_INLINE bool INTERSECT_PLANES( - const CLASS_PLANE &p1, - const CLASS_PLANE &p2, - CLASS_POINT &p, - CLASS_POINT &d) -{ - VEC_CROSS(d,p1,p2); - GREAL denom = VEC_DOT(d, d); - if(GIM_IS_ZERO(denom)) return false; - vec3f _n; - _n[0]=p1[3]*p2[0] - p2[3]*p1[0]; - _n[1]=p1[3]*p2[1] - p2[3]*p1[1]; - _n[2]=p1[3]*p2[2] - p2[3]*p1[2]; - VEC_CROSS(p,_n,d); - p[0]/=denom; - p[1]/=denom; - p[2]/=denom; - return true; -} - -//***************** SEGMENT and LINE FUNCTIONS **********************************/// - -/*! Finds the closest point(cp) to (v) on a segment (e1,e2) - */ -template -SIMD_FORCE_INLINE void CLOSEST_POINT_ON_SEGMENT( - CLASS_POINT & cp, const CLASS_POINT & v, - const CLASS_POINT &e1,const CLASS_POINT &e2) -{ - vec3f _n; - VEC_DIFF(_n,e2,e1); - VEC_DIFF(cp,v,e1); - GREAL _scalar = VEC_DOT(cp, _n); - _scalar/= VEC_DOT(_n, _n); - if(_scalar <0.0f) - { - VEC_COPY(cp,e1); - } - else if(_scalar >1.0f) - { - VEC_COPY(cp,e2); - } - else - { - VEC_SCALE(cp,_scalar,_n); - VEC_SUM(cp,cp,e1); - } -} - - -/*! \brief Finds the line params where these lines intersect. - -\param dir1 Direction of line 1 -\param point1 Point of line 1 -\param dir2 Direction of line 2 -\param point2 Point of line 2 -\param t1 Result Parameter for line 1 -\param t2 Result Parameter for line 2 -\param dointersect 0 if the lines won't intersect, else 1 - -*/ -template -SIMD_FORCE_INLINE bool LINE_INTERSECTION_PARAMS( - const CLASS_POINT & dir1, - CLASS_POINT & point1, - const CLASS_POINT & dir2, - CLASS_POINT & point2, - T& t1,T& t2) -{ - GREAL det; - GREAL e1e1 = VEC_DOT(dir1,dir1); - GREAL e1e2 = VEC_DOT(dir1,dir2); - GREAL e2e2 = VEC_DOT(dir2,dir2); - vec3f p1p2; - VEC_DIFF(p1p2,point1,point2); - GREAL p1p2e1 = VEC_DOT(p1p2,dir1); - GREAL p1p2e2 = VEC_DOT(p1p2,dir2); - det = e1e2*e1e2 - e1e1*e2e2; - if(GIM_IS_ZERO(det)) return false; - t1 = (e1e2*p1p2e2 - e2e2*p1p2e1)/det; - t2 = (e1e1*p1p2e2 - e1e2*p1p2e1)/det; - return true; -} - -//! Find closest points on segments -template -SIMD_FORCE_INLINE void SEGMENT_COLLISION( - const CLASS_POINT & vA1, - const CLASS_POINT & vA2, - const CLASS_POINT & vB1, - const CLASS_POINT & vB2, - CLASS_POINT & vPointA, - CLASS_POINT & vPointB) -{ - CLASS_POINT _AD,_BD,_N; - vec4f _M;//plane - VEC_DIFF(_AD,vA2,vA1); - VEC_DIFF(_BD,vB2,vB1); - VEC_CROSS(_N,_AD,_BD); - GREAL _tp = VEC_DOT(_N,_N); - if(_tp_M[1]) - { - invert_b_order = true; - GIM_SWAP_NUMBERS(_M[0],_M[1]); - } - _M[2] = VEC_DOT(vA1,_AD); - _M[3] = VEC_DOT(vA2,_AD); - //mid points - _N[0] = (_M[0]+_M[1])*0.5f; - _N[1] = (_M[2]+_M[3])*0.5f; - - if(_N[0]<_N[1]) - { - if(_M[1]<_M[2]) - { - vPointB = invert_b_order?vB1:vB2; - vPointA = vA1; - } - else if(_M[1]<_M[3]) - { - vPointB = invert_b_order?vB1:vB2; - CLOSEST_POINT_ON_SEGMENT(vPointA,vPointB,vA1,vA2); - } - else - { - vPointA = vA2; - CLOSEST_POINT_ON_SEGMENT(vPointB,vPointA,vB1,vB2); - } - } - else - { - if(_M[3]<_M[0]) - { - vPointB = invert_b_order?vB2:vB1; - vPointA = vA2; - } - else if(_M[3]<_M[1]) - { - vPointA = vA2; - CLOSEST_POINT_ON_SEGMENT(vPointB,vPointA,vB1,vB2); - } - else - { - vPointB = invert_b_order?vB1:vB2; - CLOSEST_POINT_ON_SEGMENT(vPointA,vPointB,vA1,vA2); - } - } - return; - } - - - VEC_CROSS(_M,_N,_BD); - _M[3] = VEC_DOT(_M,vB1); - - LINE_PLANE_COLLISION(_M,_AD,vA1,vPointA,_tp,btScalar(0), btScalar(1)); - /*Closest point on segment*/ - VEC_DIFF(vPointB,vPointA,vB1); - _tp = VEC_DOT(vPointB, _BD); - _tp/= VEC_DOT(_BD, _BD); - _tp = GIM_CLAMP(_tp,0.0f,1.0f); - VEC_SCALE(vPointB,_tp,_BD); - VEC_SUM(vPointB,vPointB,vB1); -} - - - - -//! Line box intersection in one dimension -/*! - -*\param pos Position of the ray -*\param dir Projection of the Direction of the ray -*\param bmin Minimum bound of the box -*\param bmax Maximum bound of the box -*\param tfirst the minimum projection. Assign to 0 at first. -*\param tlast the maximum projection. Assign to INFINITY at first. -*\return true if there is an intersection. -*/ -template -SIMD_FORCE_INLINE bool BOX_AXIS_INTERSECT(T pos, T dir,T bmin, T bmax, T & tfirst, T & tlast) -{ - if(GIM_IS_ZERO(dir)) - { - return !(pos < bmin || pos > bmax); - } - GREAL a0 = (bmin - pos) / dir; - GREAL a1 = (bmax - pos) / dir; - if(a0 > a1) GIM_SWAP_NUMBERS(a0, a1); - tfirst = GIM_MAX(a0, tfirst); - tlast = GIM_MIN(a1, tlast); - if (tlast < tfirst) return false; - return true; -} - - -//! Sorts 3 componets -template -SIMD_FORCE_INLINE void SORT_3_INDICES( - const T * values, - GUINT * order_indices) -{ - //get minimum - order_indices[0] = values[0] < values[1] ? (values[0] < values[2] ? 0 : 2) : (values[1] < values[2] ? 1 : 2); - - //get second and third - GUINT i0 = (order_indices[0] + 1)%3; - GUINT i1 = (i0 + 1)%3; - - if(values[i0] < values[i1]) - { - order_indices[1] = i0; - order_indices[2] = i1; - } - else - { - order_indices[1] = i1; - order_indices[2] = i0; - } -} - - - - - -#endif // GIM_VECTOR_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_bitset.h b/extern/bullet2/BulletCollision/Gimpact/gim_bitset.h deleted file mode 100644 index 322004a8d5b..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/gim_bitset.h +++ /dev/null @@ -1,123 +0,0 @@ -#ifndef GIM_BITSET_H_INCLUDED -#define GIM_BITSET_H_INCLUDED -/*! \file gim_bitset.h -\author Francisco Len Nßjera -*/ -/* ------------------------------------------------------------------------------ -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - This library is free software; you can redistribute it and/or - modify it under the terms of EITHER: - (1) The GNU Lesser General Public License as published by the Free - Software Foundation; either version 2.1 of the License, or (at - your option) any later version. The text of the GNU Lesser - General Public License is included with this library in the - file GIMPACT-LICENSE-LGPL.TXT. - (2) The BSD-style license that is included with this library in - the file GIMPACT-LICENSE-BSD.TXT. - (3) The zlib/libpng license that is included with this library in - the file GIMPACT-LICENSE-ZLIB.TXT. - - This library 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 files - GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. - ------------------------------------------------------------------------------ -*/ - -#include "gim_array.h" - - -#define GUINT_BIT_COUNT 32 -#define GUINT_EXPONENT 5 - -class gim_bitset -{ -public: - gim_array m_container; - - gim_bitset() - { - - } - - gim_bitset(GUINT bits_count) - { - resize(bits_count); - } - - ~gim_bitset() - { - } - - inline bool resize(GUINT newsize) - { - GUINT oldsize = m_container.size(); - m_container.resize(newsize/GUINT_BIT_COUNT + 1,false); - while(oldsize=size()) - { - resize(bit_index); - } - m_container[bit_index >> GUINT_EXPONENT] |= (1 << (bit_index & (GUINT_BIT_COUNT-1))); - } - - ///Return 0 or 1 - inline char get(GUINT bit_index) - { - if(bit_index>=size()) - { - return 0; - } - char value = m_container[bit_index >> GUINT_EXPONENT] & - (1 << (bit_index & (GUINT_BIT_COUNT-1))); - return value; - } - - inline void clear(GUINT bit_index) - { - m_container[bit_index >> GUINT_EXPONENT] &= ~(1 << (bit_index & (GUINT_BIT_COUNT-1))); - } -}; - - - - - -#endif // GIM_CONTAINERS_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_box_collision.h b/extern/bullet2/BulletCollision/Gimpact/gim_box_collision.h deleted file mode 100644 index 0add5e4b99f..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/gim_box_collision.h +++ /dev/null @@ -1,590 +0,0 @@ -#ifndef GIM_BOX_COLLISION_H_INCLUDED -#define GIM_BOX_COLLISION_H_INCLUDED - -/*! \file gim_box_collision.h -\author Francisco Len Nßjera -*/ -/* ------------------------------------------------------------------------------ -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - This library is free software; you can redistribute it and/or - modify it under the terms of EITHER: - (1) The GNU Lesser General Public License as published by the Free - Software Foundation; either version 2.1 of the License, or (at - your option) any later version. The text of the GNU Lesser - General Public License is included with this library in the - file GIMPACT-LICENSE-LGPL.TXT. - (2) The BSD-style license that is included with this library in - the file GIMPACT-LICENSE-BSD.TXT. - (3) The zlib/libpng license that is included with this library in - the file GIMPACT-LICENSE-ZLIB.TXT. - - This library 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 files - GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. - ------------------------------------------------------------------------------ -*/ -#include "gim_basic_geometry_operations.h" -#include "LinearMath/btTransform.h" - - - -//SIMD_FORCE_INLINE bool test_cross_edge_box( -// const btVector3 & edge, -// const btVector3 & absolute_edge, -// const btVector3 & pointa, -// const btVector3 & pointb, const btVector3 & extend, -// int dir_index0, -// int dir_index1 -// int component_index0, -// int component_index1) -//{ -// // dir coords are -z and y -// -// const btScalar dir0 = -edge[dir_index0]; -// const btScalar dir1 = edge[dir_index1]; -// btScalar pmin = pointa[component_index0]*dir0 + pointa[component_index1]*dir1; -// btScalar pmax = pointb[component_index0]*dir0 + pointb[component_index1]*dir1; -// //find minmax -// if(pmin>pmax) -// { -// GIM_SWAP_NUMBERS(pmin,pmax); -// } -// //find extends -// const btScalar rad = extend[component_index0] * absolute_edge[dir_index0] + -// extend[component_index1] * absolute_edge[dir_index1]; -// -// if(pmin>rad || -rad>pmax) return false; -// return true; -//} -// -//SIMD_FORCE_INLINE bool test_cross_edge_box_X_axis( -// const btVector3 & edge, -// const btVector3 & absolute_edge, -// const btVector3 & pointa, -// const btVector3 & pointb, btVector3 & extend) -//{ -// -// return test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,2,1,1,2); -//} -// -// -//SIMD_FORCE_INLINE bool test_cross_edge_box_Y_axis( -// const btVector3 & edge, -// const btVector3 & absolute_edge, -// const btVector3 & pointa, -// const btVector3 & pointb, btVector3 & extend) -//{ -// -// return test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,0,2,2,0); -//} -// -//SIMD_FORCE_INLINE bool test_cross_edge_box_Z_axis( -// const btVector3 & edge, -// const btVector3 & absolute_edge, -// const btVector3 & pointa, -// const btVector3 & pointb, btVector3 & extend) -//{ -// -// return test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,1,0,0,1); -//} - -#define TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,i_dir_0,i_dir_1,i_comp_0,i_comp_1)\ -{\ - const btScalar dir0 = -edge[i_dir_0];\ - const btScalar dir1 = edge[i_dir_1];\ - btScalar pmin = pointa[i_comp_0]*dir0 + pointa[i_comp_1]*dir1;\ - btScalar pmax = pointb[i_comp_0]*dir0 + pointb[i_comp_1]*dir1;\ - if(pmin>pmax)\ - {\ - GIM_SWAP_NUMBERS(pmin,pmax); \ - }\ - const btScalar abs_dir0 = absolute_edge[i_dir_0];\ - const btScalar abs_dir1 = absolute_edge[i_dir_1];\ - const btScalar rad = _extend[i_comp_0] * abs_dir0 + _extend[i_comp_1] * abs_dir1;\ - if(pmin>rad || -rad>pmax) return false;\ -}\ - - -#define TEST_CROSS_EDGE_BOX_X_AXIS_MCR(edge,absolute_edge,pointa,pointb,_extend)\ -{\ - TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,2,1,1,2);\ -}\ - -#define TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(edge,absolute_edge,pointa,pointb,_extend)\ -{\ - TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,0,2,2,0);\ -}\ - -#define TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(edge,absolute_edge,pointa,pointb,_extend)\ -{\ - TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,1,0,0,1);\ -}\ - - - -//! Class for transforming a model1 to the space of model0 -class GIM_BOX_BOX_TRANSFORM_CACHE -{ -public: - btVector3 m_T1to0;//!< Transforms translation of model1 to model 0 - btMatrix3x3 m_R1to0;//!< Transforms Rotation of model1 to model 0, equal to R0' * R1 - btMatrix3x3 m_AR;//!< Absolute value of m_R1to0 - - SIMD_FORCE_INLINE void calc_absolute_matrix() - { - static const btVector3 vepsi(1e-6f,1e-6f,1e-6f); - m_AR[0] = vepsi + m_R1to0[0].absolute(); - m_AR[1] = vepsi + m_R1to0[1].absolute(); - m_AR[2] = vepsi + m_R1to0[2].absolute(); - } - - GIM_BOX_BOX_TRANSFORM_CACHE() - { - } - - - GIM_BOX_BOX_TRANSFORM_CACHE(mat4f trans1_to_0) - { - COPY_MATRIX_3X3(m_R1to0,trans1_to_0) - MAT_GET_TRANSLATION(trans1_to_0,m_T1to0) - calc_absolute_matrix(); - } - - //! Calc the transformation relative 1 to 0. Inverts matrics by transposing - SIMD_FORCE_INLINE void calc_from_homogenic(const btTransform & trans0,const btTransform & trans1) - { - - m_R1to0 = trans0.getBasis().transpose(); - m_T1to0 = m_R1to0 * (-trans0.getOrigin()); - - m_T1to0 += m_R1to0*trans1.getOrigin(); - m_R1to0 *= trans1.getBasis(); - - calc_absolute_matrix(); - } - - //! Calcs the full invertion of the matrices. Useful for scaling matrices - SIMD_FORCE_INLINE void calc_from_full_invert(const btTransform & trans0,const btTransform & trans1) - { - m_R1to0 = trans0.getBasis().inverse(); - m_T1to0 = m_R1to0 * (-trans0.getOrigin()); - - m_T1to0 += m_R1to0*trans1.getOrigin(); - m_R1to0 *= trans1.getBasis(); - - calc_absolute_matrix(); - } - - SIMD_FORCE_INLINE btVector3 transform(const btVector3 & point) - { - return btVector3(m_R1to0[0].dot(point) + m_T1to0.x(), - m_R1to0[1].dot(point) + m_T1to0.y(), - m_R1to0[2].dot(point) + m_T1to0.z()); - } -}; - - -#define BOX_PLANE_EPSILON 0.000001f - -//! Axis aligned box -class GIM_AABB -{ -public: - btVector3 m_min; - btVector3 m_max; - - GIM_AABB() - {} - - - GIM_AABB(const btVector3 & V1, - const btVector3 & V2, - const btVector3 & V3) - { - m_min[0] = GIM_MIN3(V1[0],V2[0],V3[0]); - m_min[1] = GIM_MIN3(V1[1],V2[1],V3[1]); - m_min[2] = GIM_MIN3(V1[2],V2[2],V3[2]); - - m_max[0] = GIM_MAX3(V1[0],V2[0],V3[0]); - m_max[1] = GIM_MAX3(V1[1],V2[1],V3[1]); - m_max[2] = GIM_MAX3(V1[2],V2[2],V3[2]); - } - - GIM_AABB(const btVector3 & V1, - const btVector3 & V2, - const btVector3 & V3, - GREAL margin) - { - m_min[0] = GIM_MIN3(V1[0],V2[0],V3[0]); - m_min[1] = GIM_MIN3(V1[1],V2[1],V3[1]); - m_min[2] = GIM_MIN3(V1[2],V2[2],V3[2]); - - m_max[0] = GIM_MAX3(V1[0],V2[0],V3[0]); - m_max[1] = GIM_MAX3(V1[1],V2[1],V3[1]); - m_max[2] = GIM_MAX3(V1[2],V2[2],V3[2]); - - m_min[0] -= margin; - m_min[1] -= margin; - m_min[2] -= margin; - m_max[0] += margin; - m_max[1] += margin; - m_max[2] += margin; - } - - GIM_AABB(const GIM_AABB &other): - m_min(other.m_min),m_max(other.m_max) - { - } - - GIM_AABB(const GIM_AABB &other,btScalar margin ): - m_min(other.m_min),m_max(other.m_max) - { - m_min[0] -= margin; - m_min[1] -= margin; - m_min[2] -= margin; - m_max[0] += margin; - m_max[1] += margin; - m_max[2] += margin; - } - - SIMD_FORCE_INLINE void invalidate() - { - m_min[0] = G_REAL_INFINITY; - m_min[1] = G_REAL_INFINITY; - m_min[2] = G_REAL_INFINITY; - m_max[0] = -G_REAL_INFINITY; - m_max[1] = -G_REAL_INFINITY; - m_max[2] = -G_REAL_INFINITY; - } - - SIMD_FORCE_INLINE void increment_margin(btScalar margin) - { - m_min[0] -= margin; - m_min[1] -= margin; - m_min[2] -= margin; - m_max[0] += margin; - m_max[1] += margin; - m_max[2] += margin; - } - - SIMD_FORCE_INLINE void copy_with_margin(const GIM_AABB &other, btScalar margin) - { - m_min[0] = other.m_min[0] - margin; - m_min[1] = other.m_min[1] - margin; - m_min[2] = other.m_min[2] - margin; - - m_max[0] = other.m_max[0] + margin; - m_max[1] = other.m_max[1] + margin; - m_max[2] = other.m_max[2] + margin; - } - - template - SIMD_FORCE_INLINE void calc_from_triangle( - const CLASS_POINT & V1, - const CLASS_POINT & V2, - const CLASS_POINT & V3) - { - m_min[0] = GIM_MIN3(V1[0],V2[0],V3[0]); - m_min[1] = GIM_MIN3(V1[1],V2[1],V3[1]); - m_min[2] = GIM_MIN3(V1[2],V2[2],V3[2]); - - m_max[0] = GIM_MAX3(V1[0],V2[0],V3[0]); - m_max[1] = GIM_MAX3(V1[1],V2[1],V3[1]); - m_max[2] = GIM_MAX3(V1[2],V2[2],V3[2]); - } - - template - SIMD_FORCE_INLINE void calc_from_triangle_margin( - const CLASS_POINT & V1, - const CLASS_POINT & V2, - const CLASS_POINT & V3, btScalar margin) - { - m_min[0] = GIM_MIN3(V1[0],V2[0],V3[0]); - m_min[1] = GIM_MIN3(V1[1],V2[1],V3[1]); - m_min[2] = GIM_MIN3(V1[2],V2[2],V3[2]); - - m_max[0] = GIM_MAX3(V1[0],V2[0],V3[0]); - m_max[1] = GIM_MAX3(V1[1],V2[1],V3[1]); - m_max[2] = GIM_MAX3(V1[2],V2[2],V3[2]); - - m_min[0] -= margin; - m_min[1] -= margin; - m_min[2] -= margin; - m_max[0] += margin; - m_max[1] += margin; - m_max[2] += margin; - } - - //! Apply a transform to an AABB - SIMD_FORCE_INLINE void appy_transform(const btTransform & trans) - { - btVector3 center = (m_max+m_min)*0.5f; - btVector3 extends = m_max - center; - // Compute new center - center = trans(center); - - btVector3 textends(extends.dot(trans.getBasis().getRow(0).absolute()), - extends.dot(trans.getBasis().getRow(1).absolute()), - extends.dot(trans.getBasis().getRow(2).absolute())); - - m_min = center - textends; - m_max = center + textends; - } - - //! Merges a Box - SIMD_FORCE_INLINE void merge(const GIM_AABB & box) - { - m_min[0] = GIM_MIN(m_min[0],box.m_min[0]); - m_min[1] = GIM_MIN(m_min[1],box.m_min[1]); - m_min[2] = GIM_MIN(m_min[2],box.m_min[2]); - - m_max[0] = GIM_MAX(m_max[0],box.m_max[0]); - m_max[1] = GIM_MAX(m_max[1],box.m_max[1]); - m_max[2] = GIM_MAX(m_max[2],box.m_max[2]); - } - - //! Merges a point - template - SIMD_FORCE_INLINE void merge_point(const CLASS_POINT & point) - { - m_min[0] = GIM_MIN(m_min[0],point[0]); - m_min[1] = GIM_MIN(m_min[1],point[1]); - m_min[2] = GIM_MIN(m_min[2],point[2]); - - m_max[0] = GIM_MAX(m_max[0],point[0]); - m_max[1] = GIM_MAX(m_max[1],point[1]); - m_max[2] = GIM_MAX(m_max[2],point[2]); - } - - //! Gets the extend and center - SIMD_FORCE_INLINE void get_center_extend(btVector3 & center,btVector3 & extend) const - { - center = (m_max+m_min)*0.5f; - extend = m_max - center; - } - - //! Finds the intersecting box between this box and the other. - SIMD_FORCE_INLINE void find_intersection(const GIM_AABB & other, GIM_AABB & intersection) const - { - intersection.m_min[0] = GIM_MAX(other.m_min[0],m_min[0]); - intersection.m_min[1] = GIM_MAX(other.m_min[1],m_min[1]); - intersection.m_min[2] = GIM_MAX(other.m_min[2],m_min[2]); - - intersection.m_max[0] = GIM_MIN(other.m_max[0],m_max[0]); - intersection.m_max[1] = GIM_MIN(other.m_max[1],m_max[1]); - intersection.m_max[2] = GIM_MIN(other.m_max[2],m_max[2]); - } - - - SIMD_FORCE_INLINE bool has_collision(const GIM_AABB & other) const - { - if(m_min[0] > other.m_max[0] || - m_max[0] < other.m_min[0] || - m_min[1] > other.m_max[1] || - m_max[1] < other.m_min[1] || - m_min[2] > other.m_max[2] || - m_max[2] < other.m_min[2]) - { - return false; - } - return true; - } - - /*! \brief Finds the Ray intersection parameter. - \param aabb Aligned box - \param vorigin A vec3f with the origin of the ray - \param vdir A vec3f with the direction of the ray - */ - SIMD_FORCE_INLINE bool collide_ray(const btVector3 & vorigin,const btVector3 & vdir) - { - btVector3 extents,center; - this->get_center_extend(center,extents);; - - btScalar Dx = vorigin[0] - center[0]; - if(GIM_GREATER(Dx, extents[0]) && Dx*vdir[0]>=0.0f) return false; - btScalar Dy = vorigin[1] - center[1]; - if(GIM_GREATER(Dy, extents[1]) && Dy*vdir[1]>=0.0f) return false; - btScalar Dz = vorigin[2] - center[2]; - if(GIM_GREATER(Dz, extents[2]) && Dz*vdir[2]>=0.0f) return false; - - - btScalar f = vdir[1] * Dz - vdir[2] * Dy; - if(btFabs(f) > extents[1]*btFabs(vdir[2]) + extents[2]*btFabs(vdir[1])) return false; - f = vdir[2] * Dx - vdir[0] * Dz; - if(btFabs(f) > extents[0]*btFabs(vdir[2]) + extents[2]*btFabs(vdir[0]))return false; - f = vdir[0] * Dy - vdir[1] * Dx; - if(btFabs(f) > extents[0]*btFabs(vdir[1]) + extents[1]*btFabs(vdir[0]))return false; - return true; - } - - - SIMD_FORCE_INLINE void projection_interval(const btVector3 & direction, btScalar &vmin, btScalar &vmax) const - { - btVector3 center = (m_max+m_min)*0.5f; - btVector3 extend = m_max-center; - - btScalar _fOrigin = direction.dot(center); - btScalar _fMaximumExtent = extend.dot(direction.absolute()); - vmin = _fOrigin - _fMaximumExtent; - vmax = _fOrigin + _fMaximumExtent; - } - - SIMD_FORCE_INLINE ePLANE_INTERSECTION_TYPE plane_classify(const btVector4 &plane) const - { - btScalar _fmin,_fmax; - this->projection_interval(plane,_fmin,_fmax); - - if(plane[3] > _fmax + BOX_PLANE_EPSILON) - { - return G_BACK_PLANE; // 0 - } - - if(plane[3]+BOX_PLANE_EPSILON >=_fmin) - { - return G_COLLIDE_PLANE; //1 - } - return G_FRONT_PLANE;//2 - } - - SIMD_FORCE_INLINE bool overlapping_trans_conservative(const GIM_AABB & box, btTransform & trans1_to_0) - { - GIM_AABB tbox = box; - tbox.appy_transform(trans1_to_0); - return has_collision(tbox); - } - - //! transcache is the transformation cache from box to this AABB - SIMD_FORCE_INLINE bool overlapping_trans_cache( - const GIM_AABB & box,const GIM_BOX_BOX_TRANSFORM_CACHE & transcache, bool fulltest) - { - - //Taken from OPCODE - btVector3 ea,eb;//extends - btVector3 ca,cb;//extends - get_center_extend(ca,ea); - box.get_center_extend(cb,eb); - - - btVector3 T; - btScalar t,t2; - int i; - - // Class I : A's basis vectors - for(i=0;i<3;i++) - { - T[i] = transcache.m_R1to0[i].dot(cb) + transcache.m_T1to0[i] - ca[i]; - t = transcache.m_AR[i].dot(eb) + ea[i]; - if(GIM_GREATER(T[i], t)) return false; - } - // Class II : B's basis vectors - for(i=0;i<3;i++) - { - t = MAT_DOT_COL(transcache.m_R1to0,T,i); - t2 = MAT_DOT_COL(transcache.m_AR,ea,i) + eb[i]; - if(GIM_GREATER(t,t2)) return false; - } - // Class III : 9 cross products - if(fulltest) - { - int j,m,n,o,p,q,r; - for(i=0;i<3;i++) - { - m = (i+1)%3; - n = (i+2)%3; - o = i==0?1:0; - p = i==2?1:2; - for(j=0;j<3;j++) - { - q = j==2?1:2; - r = j==0?1:0; - t = T[n]*transcache.m_R1to0[m][j] - T[m]*transcache.m_R1to0[n][j]; - t2 = ea[o]*transcache.m_AR[p][j] + ea[p]*transcache.m_AR[o][j] + - eb[r]*transcache.m_AR[i][q] + eb[q]*transcache.m_AR[i][r]; - if(GIM_GREATER(t,t2)) return false; - } - } - } - return true; - } - - //! Simple test for planes. - SIMD_FORCE_INLINE bool collide_plane( - const btVector4 & plane) - { - ePLANE_INTERSECTION_TYPE classify = plane_classify(plane); - return (classify == G_COLLIDE_PLANE); - } - - //! test for a triangle, with edges - SIMD_FORCE_INLINE bool collide_triangle_exact( - const btVector3 & p1, - const btVector3 & p2, - const btVector3 & p3, - const btVector4 & triangle_plane) - { - if(!collide_plane(triangle_plane)) return false; - - btVector3 center,extends; - this->get_center_extend(center,extends); - - const btVector3 v1(p1 - center); - const btVector3 v2(p2 - center); - const btVector3 v3(p3 - center); - - //First axis - btVector3 diff(v2 - v1); - btVector3 abs_diff = diff.absolute(); - //Test With X axis - TEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff,abs_diff,v1,v3,extends); - //Test With Y axis - TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff,abs_diff,v1,v3,extends); - //Test With Z axis - TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff,abs_diff,v1,v3,extends); - - - diff = v3 - v2; - abs_diff = diff.absolute(); - //Test With X axis - TEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff,abs_diff,v2,v1,extends); - //Test With Y axis - TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff,abs_diff,v2,v1,extends); - //Test With Z axis - TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff,abs_diff,v2,v1,extends); - - diff = v1 - v3; - abs_diff = diff.absolute(); - //Test With X axis - TEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff,abs_diff,v3,v2,extends); - //Test With Y axis - TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff,abs_diff,v3,v2,extends); - //Test With Z axis - TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff,abs_diff,v3,v2,extends); - - return true; - } -}; - - -//! Compairison of transformation objects -SIMD_FORCE_INLINE bool btCompareTransformsEqual(const btTransform & t1,const btTransform & t2) -{ - if(!(t1.getOrigin() == t2.getOrigin()) ) return false; - - if(!(t1.getBasis().getRow(0) == t2.getBasis().getRow(0)) ) return false; - if(!(t1.getBasis().getRow(1) == t2.getBasis().getRow(1)) ) return false; - if(!(t1.getBasis().getRow(2) == t2.getBasis().getRow(2)) ) return false; - return true; -} - - - -#endif // GIM_BOX_COLLISION_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_box_set.cpp b/extern/bullet2/BulletCollision/Gimpact/gim_box_set.cpp deleted file mode 100644 index 0c3d7ba8db0..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/gim_box_set.cpp +++ /dev/null @@ -1,182 +0,0 @@ - -/* ------------------------------------------------------------------------------ -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - This library is free software; you can redistribute it and/or - modify it under the terms of EITHER: - (1) The GNU Lesser General Public License as published by the Free - Software Foundation; either version 2.1 of the License, or (at - your option) any later version. The text of the GNU Lesser - General Public License is included with this library in the - file GIMPACT-LICENSE-LGPL.TXT. - (2) The BSD-style license that is included with this library in - the file GIMPACT-LICENSE-BSD.TXT. - (3) The zlib/libpng license that is included with this library in - the file GIMPACT-LICENSE-ZLIB.TXT. - - This library 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 files - GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. - ------------------------------------------------------------------------------ -*/ - - -#include "gim_box_set.h" - - -GUINT GIM_BOX_TREE::_calc_splitting_axis( - gim_array & primitive_boxes, GUINT startIndex, GUINT endIndex) -{ - GUINT i; - - btVector3 means(btScalar(0.),btScalar(0.),btScalar(0.)); - btVector3 variance(btScalar(0.),btScalar(0.),btScalar(0.)); - GUINT numIndices = endIndex-startIndex; - - for (i=startIndex;i & primitive_boxes, GUINT startIndex, - GUINT endIndex, GUINT splitAxis) -{ - GUINT i; - GUINT splitIndex =startIndex; - GUINT numIndices = endIndex - startIndex; - - // average of centers - btScalar splitValue = 0.0f; - for (i=startIndex;i splitValue) - { - //swap - primitive_boxes.swap(i,splitIndex); - splitIndex++; - } - } - - //if the splitIndex causes unbalanced trees, fix this by using the center in between startIndex and endIndex - //otherwise the tree-building might fail due to stack-overflows in certain cases. - //unbalanced1 is unsafe: it can cause stack overflows - //bool unbalanced1 = ((splitIndex==startIndex) || (splitIndex == (endIndex-1))); - - //unbalanced2 should work too: always use center (perfect balanced trees) - //bool unbalanced2 = true; - - //this should be safe too: - GUINT rangeBalancedIndices = numIndices/3; - bool unbalanced = ((splitIndex<=(startIndex+rangeBalancedIndices)) || (splitIndex >=(endIndex-1-rangeBalancedIndices))); - - if (unbalanced) - { - splitIndex = startIndex+ (numIndices>>1); - } - - btAssert(!((splitIndex==startIndex) || (splitIndex == (endIndex)))); - - return splitIndex; -} - - -void GIM_BOX_TREE::_build_sub_tree(gim_array & primitive_boxes, GUINT startIndex, GUINT endIndex) -{ - GUINT current_index = m_num_nodes++; - - btAssert((endIndex-startIndex)>0); - - if((endIndex-startIndex) == 1) //we got a leaf - { - m_node_array[current_index].m_left = 0; - m_node_array[current_index].m_right = 0; - m_node_array[current_index].m_escapeIndex = 0; - - m_node_array[current_index].m_bound = primitive_boxes[startIndex].m_bound; - m_node_array[current_index].m_data = primitive_boxes[startIndex].m_data; - return; - } - - //configure inner node - - GUINT splitIndex; - - //calc this node bounding box - m_node_array[current_index].m_bound.invalidate(); - for (splitIndex=startIndex;splitIndex & primitive_boxes) -{ - // initialize node count to 0 - m_num_nodes = 0; - // allocate nodes - m_node_array.resize(primitive_boxes.size()*2); - - _build_sub_tree(primitive_boxes, 0, primitive_boxes.size()); -} - - diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_box_set.h b/extern/bullet2/BulletCollision/Gimpact/gim_box_set.h deleted file mode 100644 index 45c4a6a8471..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/gim_box_set.h +++ /dev/null @@ -1,674 +0,0 @@ -#ifndef GIM_BOX_SET_H_INCLUDED -#define GIM_BOX_SET_H_INCLUDED - -/*! \file gim_box_set.h -\author Francisco Len Nßjera -*/ -/* ------------------------------------------------------------------------------ -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - This library is free software; you can redistribute it and/or - modify it under the terms of EITHER: - (1) The GNU Lesser General Public License as published by the Free - Software Foundation; either version 2.1 of the License, or (at - your option) any later version. The text of the GNU Lesser - General Public License is included with this library in the - file GIMPACT-LICENSE-LGPL.TXT. - (2) The BSD-style license that is included with this library in - the file GIMPACT-LICENSE-BSD.TXT. - (3) The zlib/libpng license that is included with this library in - the file GIMPACT-LICENSE-ZLIB.TXT. - - This library 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 files - GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. - ------------------------------------------------------------------------------ -*/ - - -#include "gim_array.h" -#include "gim_radixsort.h" -#include "gim_box_collision.h" -#include "gim_tri_collision.h" - - - -//! Overlapping pair -struct GIM_PAIR -{ - GUINT m_index1; - GUINT m_index2; - GIM_PAIR() - {} - - GIM_PAIR(const GIM_PAIR & p) - { - m_index1 = p.m_index1; - m_index2 = p.m_index2; - } - - GIM_PAIR(GUINT index1, GUINT index2) - { - m_index1 = index1; - m_index2 = index2; - } -}; - -//! A pairset array -class gim_pair_set: public gim_array -{ -public: - gim_pair_set():gim_array(32) - { - } - inline void push_pair(GUINT index1,GUINT index2) - { - push_back(GIM_PAIR(index1,index2)); - } - - inline void push_pair_inv(GUINT index1,GUINT index2) - { - push_back(GIM_PAIR(index2,index1)); - } -}; - - -//! Prototype Base class for primitive classification -/*! -This class is a wrapper for primitive collections. -This tells relevant info for the Bounding Box set classes, which take care of space classification. -This class can manage Compound shapes and trimeshes, and if it is managing trimesh then the Hierarchy Bounding Box classes will take advantage of primitive Vs Box overlapping tests for getting optimal results and less Per Box compairisons. -*/ -class GIM_PRIMITIVE_MANAGER_PROTOTYPE -{ -public: - - virtual ~GIM_PRIMITIVE_MANAGER_PROTOTYPE() {} - //! determines if this manager consist on only triangles, which special case will be optimized - virtual bool is_trimesh() = 0; - virtual GUINT get_primitive_count() = 0; - virtual void get_primitive_box(GUINT prim_index ,GIM_AABB & primbox) = 0; - virtual void get_primitive_triangle(GUINT prim_index,GIM_TRIANGLE & triangle) = 0; -}; - - -struct GIM_AABB_DATA -{ - GIM_AABB m_bound; - GUINT m_data; -}; - -//! Node Structure for trees -struct GIM_BOX_TREE_NODE -{ - GIM_AABB m_bound; - GUINT m_left;//!< Left subtree - GUINT m_right;//!< Right subtree - GUINT m_escapeIndex;//!< Scape index for traversing - GUINT m_data;//!< primitive index if apply - - GIM_BOX_TREE_NODE() - { - m_left = 0; - m_right = 0; - m_escapeIndex = 0; - m_data = 0; - } - - SIMD_FORCE_INLINE bool is_leaf_node() const - { - return (!m_left && !m_right); - } -}; - -//! Basic Box tree structure -class GIM_BOX_TREE -{ -protected: - GUINT m_num_nodes; - gim_array m_node_array; -protected: - GUINT _sort_and_calc_splitting_index( - gim_array & primitive_boxes, - GUINT startIndex, GUINT endIndex, GUINT splitAxis); - - GUINT _calc_splitting_axis(gim_array & primitive_boxes, GUINT startIndex, GUINT endIndex); - - void _build_sub_tree(gim_array & primitive_boxes, GUINT startIndex, GUINT endIndex); -public: - GIM_BOX_TREE() - { - m_num_nodes = 0; - } - - //! prototype functions for box tree management - //!@{ - void build_tree(gim_array & primitive_boxes); - - SIMD_FORCE_INLINE void clearNodes() - { - m_node_array.clear(); - m_num_nodes = 0; - } - - //! node count - SIMD_FORCE_INLINE GUINT getNodeCount() const - { - return m_num_nodes; - } - - //! tells if the node is a leaf - SIMD_FORCE_INLINE bool isLeafNode(GUINT nodeindex) const - { - return m_node_array[nodeindex].is_leaf_node(); - } - - SIMD_FORCE_INLINE GUINT getNodeData(GUINT nodeindex) const - { - return m_node_array[nodeindex].m_data; - } - - SIMD_FORCE_INLINE void getNodeBound(GUINT nodeindex, GIM_AABB & bound) const - { - bound = m_node_array[nodeindex].m_bound; - } - - SIMD_FORCE_INLINE void setNodeBound(GUINT nodeindex, const GIM_AABB & bound) - { - m_node_array[nodeindex].m_bound = bound; - } - - SIMD_FORCE_INLINE GUINT getLeftNodeIndex(GUINT nodeindex) const - { - return m_node_array[nodeindex].m_left; - } - - SIMD_FORCE_INLINE GUINT getRightNodeIndex(GUINT nodeindex) const - { - return m_node_array[nodeindex].m_right; - } - - SIMD_FORCE_INLINE GUINT getScapeNodeIndex(GUINT nodeindex) const - { - return m_node_array[nodeindex].m_escapeIndex; - } - - //!@} -}; - - -//! Generic Box Tree Template -/*! -This class offers an structure for managing a box tree of primitives. -Requires a Primitive prototype (like GIM_PRIMITIVE_MANAGER_PROTOTYPE ) and -a Box tree structure ( like GIM_BOX_TREE). -*/ -template -class GIM_BOX_TREE_TEMPLATE_SET -{ -protected: - _GIM_PRIMITIVE_MANAGER_PROTOTYPE m_primitive_manager; - _GIM_BOX_TREE_PROTOTYPE m_box_tree; -protected: - //stackless refit - SIMD_FORCE_INLINE void refit() - { - GUINT nodecount = getNodeCount(); - while(nodecount--) - { - if(isLeafNode(nodecount)) - { - GIM_AABB leafbox; - m_primitive_manager.get_primitive_box(getNodeData(nodecount),leafbox); - setNodeBound(nodecount,leafbox); - } - else - { - //get left bound - GUINT childindex = getLeftNodeIndex(nodecount); - GIM_AABB bound; - getNodeBound(childindex,bound); - //get right bound - childindex = getRightNodeIndex(nodecount); - GIM_AABB bound2; - getNodeBound(childindex,bound2); - bound.merge(bound2); - - setNodeBound(nodecount,bound); - } - } - } -public: - - GIM_BOX_TREE_TEMPLATE_SET() - { - } - - SIMD_FORCE_INLINE GIM_AABB getGlobalBox() const - { - GIM_AABB totalbox; - getNodeBound(0, totalbox); - return totalbox; - } - - SIMD_FORCE_INLINE void setPrimitiveManager(const _GIM_PRIMITIVE_MANAGER_PROTOTYPE & primitive_manager) - { - m_primitive_manager = primitive_manager; - } - - const _GIM_PRIMITIVE_MANAGER_PROTOTYPE & getPrimitiveManager() const - { - return m_primitive_manager; - } - - _GIM_PRIMITIVE_MANAGER_PROTOTYPE & getPrimitiveManager() - { - return m_primitive_manager; - } - -//! node manager prototype functions -///@{ - - //! this attemps to refit the box set. - SIMD_FORCE_INLINE void update() - { - refit(); - } - - //! this rebuild the entire set - SIMD_FORCE_INLINE void buildSet() - { - //obtain primitive boxes - gim_array primitive_boxes; - primitive_boxes.resize(m_primitive_manager.get_primitive_count(),false); - - for (GUINT i = 0;i & collided_results) const - { - GUINT curIndex = 0; - GUINT numNodes = getNodeCount(); - - while (curIndex < numNodes) - { - GIM_AABB bound; - getNodeBound(curIndex,bound); - - //catch bugs in tree data - - bool aabbOverlap = bound.has_collision(box); - bool isleafnode = isLeafNode(curIndex); - - if (isleafnode && aabbOverlap) - { - collided_results.push_back(getNodeData(curIndex)); - } - - if (aabbOverlap || isleafnode) - { - //next subnode - curIndex++; - } - else - { - //skip node - curIndex+= getScapeNodeIndex(curIndex); - } - } - if(collided_results.size()>0) return true; - return false; - } - - //! returns the indices of the primitives in the m_primitive_manager - SIMD_FORCE_INLINE bool boxQueryTrans(const GIM_AABB & box, - const btTransform & transform, gim_array & collided_results) const - { - GIM_AABB transbox=box; - transbox.appy_transform(transform); - return boxQuery(transbox,collided_results); - } - - //! returns the indices of the primitives in the m_primitive_manager - SIMD_FORCE_INLINE bool rayQuery( - const btVector3 & ray_dir,const btVector3 & ray_origin , - gim_array & collided_results) const - { - GUINT curIndex = 0; - GUINT numNodes = getNodeCount(); - - while (curIndex < numNodes) - { - GIM_AABB bound; - getNodeBound(curIndex,bound); - - //catch bugs in tree data - - bool aabbOverlap = bound.collide_ray(ray_origin,ray_dir); - bool isleafnode = isLeafNode(curIndex); - - if (isleafnode && aabbOverlap) - { - collided_results.push_back(getNodeData( curIndex)); - } - - if (aabbOverlap || isleafnode) - { - //next subnode - curIndex++; - } - else - { - //skip node - curIndex+= getScapeNodeIndex(curIndex); - } - } - if(collided_results.size()>0) return true; - return false; - } - - //! tells if this set has hierarcht - SIMD_FORCE_INLINE bool hasHierarchy() const - { - return true; - } - - //! tells if this set is a trimesh - SIMD_FORCE_INLINE bool isTrimesh() const - { - return m_primitive_manager.is_trimesh(); - } - - //! node count - SIMD_FORCE_INLINE GUINT getNodeCount() const - { - return m_box_tree.getNodeCount(); - } - - //! tells if the node is a leaf - SIMD_FORCE_INLINE bool isLeafNode(GUINT nodeindex) const - { - return m_box_tree.isLeafNode(nodeindex); - } - - SIMD_FORCE_INLINE GUINT getNodeData(GUINT nodeindex) const - { - return m_box_tree.getNodeData(nodeindex); - } - - SIMD_FORCE_INLINE void getNodeBound(GUINT nodeindex, GIM_AABB & bound) const - { - m_box_tree.getNodeBound(nodeindex, bound); - } - - SIMD_FORCE_INLINE void setNodeBound(GUINT nodeindex, const GIM_AABB & bound) - { - m_box_tree.setNodeBound(nodeindex, bound); - } - - SIMD_FORCE_INLINE GUINT getLeftNodeIndex(GUINT nodeindex) const - { - return m_box_tree.getLeftNodeIndex(nodeindex); - } - - SIMD_FORCE_INLINE GUINT getRightNodeIndex(GUINT nodeindex) const - { - return m_box_tree.getRightNodeIndex(nodeindex); - } - - SIMD_FORCE_INLINE GUINT getScapeNodeIndex(GUINT nodeindex) const - { - return m_box_tree.getScapeNodeIndex(nodeindex); - } - - SIMD_FORCE_INLINE void getNodeTriangle(GUINT nodeindex,GIM_TRIANGLE & triangle) const - { - m_primitive_manager.get_primitive_triangle(getNodeData(nodeindex),triangle); - } - -}; - -//! Class for Box Tree Sets -/*! -this has the GIM_BOX_TREE implementation for bounding boxes. -*/ -template -class GIM_BOX_TREE_SET: public GIM_BOX_TREE_TEMPLATE_SET< _GIM_PRIMITIVE_MANAGER_PROTOTYPE, GIM_BOX_TREE> -{ -public: - -}; - - - - - -/// GIM_BOX_SET collision methods -template -class GIM_TREE_TREE_COLLIDER -{ -public: - gim_pair_set * m_collision_pairs; - BOX_SET_CLASS0 * m_boxset0; - BOX_SET_CLASS1 * m_boxset1; - GUINT current_node0; - GUINT current_node1; - bool node0_is_leaf; - bool node1_is_leaf; - bool t0_is_trimesh; - bool t1_is_trimesh; - bool node0_has_triangle; - bool node1_has_triangle; - GIM_AABB m_box0; - GIM_AABB m_box1; - GIM_BOX_BOX_TRANSFORM_CACHE trans_cache_1to0; - btTransform trans_cache_0to1; - GIM_TRIANGLE m_tri0; - btVector4 m_tri0_plane; - GIM_TRIANGLE m_tri1; - btVector4 m_tri1_plane; - - -public: - GIM_TREE_TREE_COLLIDER() - { - current_node0 = G_UINT_INFINITY; - current_node1 = G_UINT_INFINITY; - } -protected: - SIMD_FORCE_INLINE void retrieve_node0_triangle(GUINT node0) - { - if(node0_has_triangle) return; - m_boxset0->getNodeTriangle(node0,m_tri0); - //transform triangle - m_tri0.m_vertices[0] = trans_cache_0to1(m_tri0.m_vertices[0]); - m_tri0.m_vertices[1] = trans_cache_0to1(m_tri0.m_vertices[1]); - m_tri0.m_vertices[2] = trans_cache_0to1(m_tri0.m_vertices[2]); - m_tri0.get_plane(m_tri0_plane); - - node0_has_triangle = true; - } - - SIMD_FORCE_INLINE void retrieve_node1_triangle(GUINT node1) - { - if(node1_has_triangle) return; - m_boxset1->getNodeTriangle(node1,m_tri1); - //transform triangle - m_tri1.m_vertices[0] = trans_cache_1to0.transform(m_tri1.m_vertices[0]); - m_tri1.m_vertices[1] = trans_cache_1to0.transform(m_tri1.m_vertices[1]); - m_tri1.m_vertices[2] = trans_cache_1to0.transform(m_tri1.m_vertices[2]); - m_tri1.get_plane(m_tri1_plane); - - node1_has_triangle = true; - } - - SIMD_FORCE_INLINE void retrieve_node0_info(GUINT node0) - { - if(node0 == current_node0) return; - m_boxset0->getNodeBound(node0,m_box0); - node0_is_leaf = m_boxset0->isLeafNode(node0); - node0_has_triangle = false; - current_node0 = node0; - } - - SIMD_FORCE_INLINE void retrieve_node1_info(GUINT node1) - { - if(node1 == current_node1) return; - m_boxset1->getNodeBound(node1,m_box1); - node1_is_leaf = m_boxset1->isLeafNode(node1); - node1_has_triangle = false; - current_node1 = node1; - } - - SIMD_FORCE_INLINE bool node_collision(GUINT node0 ,GUINT node1) - { - retrieve_node0_info(node0); - retrieve_node1_info(node1); - bool result = m_box0.overlapping_trans_cache(m_box1,trans_cache_1to0,true); - if(!result) return false; - - if(t0_is_trimesh && node0_is_leaf) - { - //perform primitive vs box collision - retrieve_node0_triangle(node0); - //do triangle vs box collision - m_box1.increment_margin(m_tri0.m_margin); - - result = m_box1.collide_triangle_exact( - m_tri0.m_vertices[0],m_tri0.m_vertices[1],m_tri0.m_vertices[2],m_tri0_plane); - - m_box1.increment_margin(-m_tri0.m_margin); - - if(!result) return false; - return true; - } - else if(t1_is_trimesh && node1_is_leaf) - { - //perform primitive vs box collision - retrieve_node1_triangle(node1); - //do triangle vs box collision - m_box0.increment_margin(m_tri1.m_margin); - - result = m_box0.collide_triangle_exact( - m_tri1.m_vertices[0],m_tri1.m_vertices[1],m_tri1.m_vertices[2],m_tri1_plane); - - m_box0.increment_margin(-m_tri1.m_margin); - - if(!result) return false; - return true; - } - return true; - } - - //stackless collision routine - void find_collision_pairs() - { - gim_pair_set stack_collisions; - stack_collisions.reserve(32); - - //add the first pair - stack_collisions.push_pair(0,0); - - - while(stack_collisions.size()) - { - //retrieve the last pair and pop - GUINT node0 = stack_collisions.back().m_index1; - GUINT node1 = stack_collisions.back().m_index2; - stack_collisions.pop_back(); - if(node_collision(node0,node1)) // a collision is found - { - if(node0_is_leaf) - { - if(node1_is_leaf) - { - m_collision_pairs->push_pair(m_boxset0->getNodeData(node0),m_boxset1->getNodeData(node1)); - } - else - { - //collide left - stack_collisions.push_pair(node0,m_boxset1->getLeftNodeIndex(node1)); - - //collide right - stack_collisions.push_pair(node0,m_boxset1->getRightNodeIndex(node1)); - } - } - else - { - if(node1_is_leaf) - { - //collide left - stack_collisions.push_pair(m_boxset0->getLeftNodeIndex(node0),node1); - //collide right - stack_collisions.push_pair(m_boxset0->getRightNodeIndex(node0),node1); - } - else - { - GUINT left0 = m_boxset0->getLeftNodeIndex(node0); - GUINT right0 = m_boxset0->getRightNodeIndex(node0); - GUINT left1 = m_boxset1->getLeftNodeIndex(node1); - GUINT right1 = m_boxset1->getRightNodeIndex(node1); - //collide left - stack_collisions.push_pair(left0,left1); - //collide right - stack_collisions.push_pair(left0,right1); - //collide left - stack_collisions.push_pair(right0,left1); - //collide right - stack_collisions.push_pair(right0,right1); - - }// else if node1 is not a leaf - }// else if node0 is not a leaf - - }// if(node_collision(node0,node1)) - }//while(stack_collisions.size()) - } -public: - void find_collision(BOX_SET_CLASS0 * boxset1, const btTransform & trans1, - BOX_SET_CLASS1 * boxset2, const btTransform & trans2, - gim_pair_set & collision_pairs, bool complete_primitive_tests = true) - { - m_collision_pairs = &collision_pairs; - m_boxset0 = boxset1; - m_boxset1 = boxset2; - - trans_cache_1to0.calc_from_homogenic(trans1,trans2); - - trans_cache_0to1 = trans2.inverse(); - trans_cache_0to1 *= trans1; - - - if(complete_primitive_tests) - { - t0_is_trimesh = boxset1->getPrimitiveManager().is_trimesh(); - t1_is_trimesh = boxset2->getPrimitiveManager().is_trimesh(); - } - else - { - t0_is_trimesh = false; - t1_is_trimesh = false; - } - - find_collision_pairs(); - } -}; - - -#endif // GIM_BOXPRUNING_H_INCLUDED - - diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_clip_polygon.h b/extern/bullet2/BulletCollision/Gimpact/gim_clip_polygon.h deleted file mode 100644 index a91fd3aa422..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/gim_clip_polygon.h +++ /dev/null @@ -1,210 +0,0 @@ -#ifndef GIM_CLIP_POLYGON_H_INCLUDED -#define GIM_CLIP_POLYGON_H_INCLUDED - -/*! \file gim_tri_collision.h -\author Francisco Len Nßjera -*/ -/* ------------------------------------------------------------------------------ -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - This library is free software; you can redistribute it and/or - modify it under the terms of EITHER: - (1) The GNU Lesser General Public License as published by the Free - Software Foundation; either version 2.1 of the License, or (at - your option) any later version. The text of the GNU Lesser - General Public License is included with this library in the - file GIMPACT-LICENSE-LGPL.TXT. - (2) The BSD-style license that is included with this library in - the file GIMPACT-LICENSE-BSD.TXT. - (3) The zlib/libpng license that is included with this library in - the file GIMPACT-LICENSE-ZLIB.TXT. - - This library 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 files - GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. - ------------------------------------------------------------------------------ -*/ - - -//! This function calcs the distance from a 3D plane -class DISTANCE_PLANE_3D_FUNC -{ -public: - template - inline GREAL operator()(const CLASS_PLANE & plane, const CLASS_POINT & point) - { - return DISTANCE_PLANE_POINT(plane, point); - } -}; - - - -template -SIMD_FORCE_INLINE void PLANE_CLIP_POLYGON_COLLECT( - const CLASS_POINT & point0, - const CLASS_POINT & point1, - GREAL dist0, - GREAL dist1, - CLASS_POINT * clipped, - GUINT & clipped_count) -{ - GUINT _prevclassif = (dist0>G_EPSILON); - GUINT _classif = (dist1>G_EPSILON); - if(_classif!=_prevclassif) - { - GREAL blendfactor = -dist0/(dist1-dist0); - VEC_BLEND(clipped[clipped_count],point0,point1,blendfactor); - clipped_count++; - } - if(!_classif) - { - VEC_COPY(clipped[clipped_count],point1); - clipped_count++; - } -} - - -//! Clips a polygon by a plane -/*! -*\return The count of the clipped counts -*/ -template -SIMD_FORCE_INLINE GUINT PLANE_CLIP_POLYGON_GENERIC( - const CLASS_PLANE & plane, - const CLASS_POINT * polygon_points, - GUINT polygon_point_count, - CLASS_POINT * clipped,DISTANCE_PLANE_FUNC distance_func) -{ - GUINT clipped_count = 0; - - - //clip first point - GREAL firstdist = distance_func(plane,polygon_points[0]);; - if(!(firstdist>G_EPSILON)) - { - VEC_COPY(clipped[clipped_count],polygon_points[0]); - clipped_count++; - } - - GREAL olddist = firstdist; - for(GUINT _i=1;_i -SIMD_FORCE_INLINE GUINT PLANE_CLIP_TRIANGLE_GENERIC( - const CLASS_PLANE & plane, - const CLASS_POINT & point0, - const CLASS_POINT & point1, - const CLASS_POINT & point2, - CLASS_POINT * clipped,DISTANCE_PLANE_FUNC distance_func) -{ - GUINT clipped_count = 0; - - //clip first point - GREAL firstdist = distance_func(plane,point0);; - if(!(firstdist>G_EPSILON)) - { - VEC_COPY(clipped[clipped_count],point0); - clipped_count++; - } - - // point 1 - GREAL olddist = firstdist; - GREAL dist = distance_func(plane,point1); - - PLANE_CLIP_POLYGON_COLLECT( - point0,point1, - olddist, - dist, - clipped, - clipped_count); - - olddist = dist; - - - // point 2 - dist = distance_func(plane,point2); - - PLANE_CLIP_POLYGON_COLLECT( - point1,point2, - olddist, - dist, - clipped, - clipped_count); - olddist = dist; - - - - //RETURN TO FIRST point - PLANE_CLIP_POLYGON_COLLECT( - point2,point0, - olddist, - firstdist, - clipped, - clipped_count); - - return clipped_count; -} - - -template -SIMD_FORCE_INLINE GUINT PLANE_CLIP_POLYGON3D( - const CLASS_PLANE & plane, - const CLASS_POINT * polygon_points, - GUINT polygon_point_count, - CLASS_POINT * clipped) -{ - return PLANE_CLIP_POLYGON_GENERIC(plane,polygon_points,polygon_point_count,clipped,DISTANCE_PLANE_3D_FUNC()); -} - - -template -SIMD_FORCE_INLINE GUINT PLANE_CLIP_TRIANGLE3D( - const CLASS_PLANE & plane, - const CLASS_POINT & point0, - const CLASS_POINT & point1, - const CLASS_POINT & point2, - CLASS_POINT * clipped) -{ - return PLANE_CLIP_TRIANGLE_GENERIC(plane,point0,point1,point2,clipped,DISTANCE_PLANE_3D_FUNC()); -} - - - -#endif // GIM_TRI_COLLISION_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_contact.cpp b/extern/bullet2/BulletCollision/Gimpact/gim_contact.cpp deleted file mode 100644 index 20e41de089f..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/gim_contact.cpp +++ /dev/null @@ -1,146 +0,0 @@ - -/* ------------------------------------------------------------------------------ -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - This library is free software; you can redistribute it and/or - modify it under the terms of EITHER: - (1) The GNU Lesser General Public License as published by the Free - Software Foundation; either version 2.1 of the License, or (at - your option) any later version. The text of the GNU Lesser - General Public License is included with this library in the - file GIMPACT-LICENSE-LGPL.TXT. - (2) The BSD-style license that is included with this library in - the file GIMPACT-LICENSE-BSD.TXT. - (3) The zlib/libpng license that is included with this library in - the file GIMPACT-LICENSE-ZLIB.TXT. - - This library 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 files - GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. - ------------------------------------------------------------------------------ -*/ - -#include "gim_contact.h" - -#define MAX_COINCIDENT 8 - -void gim_contact_array::merge_contacts( - const gim_contact_array & contacts, bool normal_contact_average) -{ - clear(); - - if(contacts.size()==1) - { - push_back(contacts.back()); - return; - } - - gim_array keycontacts(contacts.size()); - keycontacts.resize(contacts.size(),false); - - //fill key contacts - - GUINT i; - - for (i = 0;im_depth - CONTACT_DIFF_EPSILON > scontact->m_depth)//) - { - *pcontact = *scontact; - coincident_count = 0; - } - else if(normal_contact_average) - { - if(btFabs(pcontact->m_depth - scontact->m_depth)m_normal; - coincident_count++; - } - } - } - } - else - {//add new contact - - if(normal_contact_average && coincident_count>0) - { - pcontact->interpolate_normals(coincident_normals,coincident_count); - coincident_count = 0; - } - - push_back(*scontact); - pcontact = &back(); - } - last_key = key; - } -} - -void gim_contact_array::merge_contacts_unique(const gim_contact_array & contacts) -{ - clear(); - - if(contacts.size()==1) - { - push_back(contacts.back()); - return; - } - - GIM_CONTACT average_contact = contacts.back(); - - for (GUINT i=1;i -{ -public: - gim_contact_array():gim_array(64) - { - } - - SIMD_FORCE_INLINE void push_contact(const btVector3 &point,const btVector3 & normal, - GREAL depth, GUINT feature1, GUINT feature2) - { - push_back_mem(); - GIM_CONTACT & newele = back(); - newele.m_point = point; - newele.m_normal = normal; - newele.m_depth = depth; - newele.m_feature1 = feature1; - newele.m_feature2 = feature2; - } - - SIMD_FORCE_INLINE void push_triangle_contacts( - const GIM_TRIANGLE_CONTACT_DATA & tricontact, - GUINT feature1,GUINT feature2) - { - for(GUINT i = 0;i -struct GIM_HASH_TABLE_NODE -{ - GUINT m_key; - T m_data; - GIM_HASH_TABLE_NODE() - { - } - - GIM_HASH_TABLE_NODE(const GIM_HASH_TABLE_NODE & value) - { - m_key = value.m_key; - m_data = value.m_data; - } - - GIM_HASH_TABLE_NODE(GUINT key, const T & data) - { - m_key = key; - m_data = data; - } - - bool operator <(const GIM_HASH_TABLE_NODE & other) const - { - ///inverse order, further objects are first - if(m_key < other.m_key) return true; - return false; - } - - bool operator >(const GIM_HASH_TABLE_NODE & other) const - { - ///inverse order, further objects are first - if(m_key > other.m_key) return true; - return false; - } - - bool operator ==(const GIM_HASH_TABLE_NODE & other) const - { - ///inverse order, further objects are first - if(m_key == other.m_key) return true; - return false; - } -}; - -///Macro for getting the key -class GIM_HASH_NODE_GET_KEY -{ -public: - template - inline GUINT operator()( const T& a) - { - return a.m_key; - } -}; - - - -///Macro for comparing the key and the element -class GIM_HASH_NODE_CMP_KEY_MACRO -{ -public: - template - inline int operator() ( const T& a, GUINT key) - { - return ((int)(a.m_key - key)); - } -}; - -///Macro for comparing Hash nodes -class GIM_HASH_NODE_CMP_MACRO -{ -public: - template - inline int operator() ( const T& a, const T& b ) - { - return ((int)(a.m_key - b.m_key)); - } -}; - - - - - -//! Sorting for hash table -/*! -switch automatically between quicksort and radixsort -*/ -template -void gim_sort_hash_node_array(T * array, GUINT array_count) -{ - if(array_count - -
      -
    • if node_size = 0, then this container becomes a simple sorted array allocator. reserve_size is used for reserve memory in m_nodes. -When the array size reaches the size equivalent to 'min_hash_table_size', then it becomes a hash table by calling check_for_switching_to_hashtable. -
    • If node_size != 0, then this container becomes a hash table for ever -
    - -*/ -template -class gim_hash_table -{ -protected: - typedef GIM_HASH_TABLE_NODE _node_type; - - //!The nodes - //array< _node_type, SuperAllocator<_node_type> > m_nodes; - gim_array< _node_type > m_nodes; - //SuperBufferedArray< _node_type > m_nodes; - bool m_sorted; - - ///Hash table data management. The hash table has the indices to the corresponding m_nodes array - GUINT * m_hash_table;//!< - GUINT m_table_size;//!< - GUINT m_node_size;//!< - GUINT m_min_hash_table_size; - - - - //! Returns the cell index - inline GUINT _find_cell(GUINT hashkey) - { - _node_type * nodesptr = m_nodes.pointer(); - GUINT start_index = (hashkey%m_table_size)*m_node_size; - GUINT end_index = start_index + m_node_size; - - while(start_index= m_nodes.size()) return false; - if(m_nodes[index].m_key != GIM_INVALID_HASH) - { - //Search for the avaliable cell in buffer - GUINT cell_index = _find_cell(m_nodes[index].m_key); - - btAssert(cell_index!=GIM_INVALID_HASH); - btAssert(m_hash_table[cell_index]==index); - - m_hash_table[cell_index] = GIM_INVALID_HASH; - } - - return this->_erase_unsorted(index); - } - - //! erase by key in hash table - inline bool _erase_hash_table(GUINT hashkey) - { - if(hashkey == GIM_INVALID_HASH) return false; - - //Search for the avaliable cell in buffer - GUINT cell_index = _find_cell(hashkey); - if(cell_index ==GIM_INVALID_HASH) return false; - - GUINT index = m_hash_table[cell_index]; - m_hash_table[cell_index] = GIM_INVALID_HASH; - - return this->_erase_unsorted(index); - } - - - - //! insert an element in hash table - /*! - If the element exists, this won't insert the element - \return the index in the array of the existing element,or GIM_INVALID_HASH if the element has been inserted - If so, the element has been inserted at the last position of the array. - */ - inline GUINT _insert_hash_table(GUINT hashkey, const T & value) - { - if(hashkey==GIM_INVALID_HASH) - { - //Insert anyway - _insert_unsorted(hashkey,value); - return GIM_INVALID_HASH; - } - - GUINT cell_index = _assign_hash_table_cell(hashkey); - - GUINT value_key = m_hash_table[cell_index]; - - if(value_key!= GIM_INVALID_HASH) return value_key;// Not overrited - - m_hash_table[cell_index] = m_nodes.size(); - - _insert_unsorted(hashkey,value); - return GIM_INVALID_HASH; - } - - //! insert an element in hash table. - /*! - If the element exists, this replaces the element. - \return the index in the array of the existing element,or GIM_INVALID_HASH if the element has been inserted - If so, the element has been inserted at the last position of the array. - */ - inline GUINT _insert_hash_table_replace(GUINT hashkey, const T & value) - { - if(hashkey==GIM_INVALID_HASH) - { - //Insert anyway - _insert_unsorted(hashkey,value); - return GIM_INVALID_HASH; - } - - GUINT cell_index = _assign_hash_table_cell(hashkey); - - GUINT value_key = m_hash_table[cell_index]; - - if(value_key!= GIM_INVALID_HASH) - {//replaces the existing - m_nodes[value_key] = _node_type(hashkey,value); - return value_key;// index of the replaced element - } - - m_hash_table[cell_index] = m_nodes.size(); - - _insert_unsorted(hashkey,value); - return GIM_INVALID_HASH; - - } - - - ///Sorted array data management. The hash table has the indices to the corresponding m_nodes array - inline bool _erase_sorted(GUINT index) - { - if(index>=(GUINT)m_nodes.size()) return false; - m_nodes.erase_sorted(index); - if(m_nodes.size()<2) m_sorted = false; - return true; - } - - //! faster, but unsorted - inline bool _erase_unsorted(GUINT index) - { - if(index>=m_nodes.size()) return false; - - GUINT lastindex = m_nodes.size()-1; - if(indexcheck_for_switching_to_hashtable(); - } - - //! Insert an element in an ordered array - inline GUINT _insert_sorted(GUINT hashkey, const T & value) - { - if(hashkey==GIM_INVALID_HASH || size()==0) - { - m_nodes.push_back(_node_type(hashkey,value)); - return GIM_INVALID_HASH; - } - //Insert at last position - //Sort element - - - GUINT result_ind=0; - GUINT last_index = m_nodes.size()-1; - _node_type * ptr = m_nodes.pointer(); - - bool found = gim_binary_search_ex( - ptr,0,last_index,result_ind,hashkey,GIM_HASH_NODE_CMP_KEY_MACRO()); - - - //Insert before found index - if(found) - { - return result_ind; - } - else - { - _insert_in_pos(hashkey, value, result_ind); - } - return GIM_INVALID_HASH; - } - - inline GUINT _insert_sorted_replace(GUINT hashkey, const T & value) - { - if(hashkey==GIM_INVALID_HASH || size()==0) - { - m_nodes.push_back(_node_type(hashkey,value)); - return GIM_INVALID_HASH; - } - //Insert at last position - //Sort element - GUINT result_ind; - GUINT last_index = m_nodes.size()-1; - _node_type * ptr = m_nodes.pointer(); - - bool found = gim_binary_search_ex( - ptr,0,last_index,result_ind,hashkey,GIM_HASH_NODE_CMP_KEY_MACRO()); - - //Insert before found index - if(found) - { - m_nodes[result_ind] = _node_type(hashkey,value); - } - else - { - _insert_in_pos(hashkey, value, result_ind); - } - return result_ind; - } - - //! Fast insertion in m_nodes array - inline GUINT _insert_unsorted(GUINT hashkey, const T & value) - { - m_nodes.push_back(_node_type(hashkey,value)); - m_sorted = false; - return GIM_INVALID_HASH; - } - - - -public: - - /*! -
  • if node_size = 0, then this container becomes a simple sorted array allocator. reserve_size is used for reserve memory in m_nodes. - When the array size reaches the size equivalent to 'min_hash_table_size', then it becomes a hash table by calling check_for_switching_to_hashtable. -
  • If node_size != 0, then this container becomes a hash table for ever - - */ - gim_hash_table(GUINT reserve_size = GIM_DEFAULT_HASH_TABLE_SIZE, - GUINT node_size = GIM_DEFAULT_HASH_TABLE_NODE_SIZE, - GUINT min_hash_table_size = GIM_INVALID_HASH) - { - m_hash_table = NULL; - m_table_size = 0; - m_sorted = false; - m_node_size = node_size; - m_min_hash_table_size = min_hash_table_size; - - if(m_node_size!=0) - { - if(reserve_size!=0) - { - m_nodes.reserve(reserve_size); - _reserve_table_memory(reserve_size); - _invalidate_keys(); - } - else - { - m_nodes.reserve(GIM_DEFAULT_HASH_TABLE_SIZE); - _reserve_table_memory(GIM_DEFAULT_HASH_TABLE_SIZE); - _invalidate_keys(); - } - } - else if(reserve_size!=0) - { - m_nodes.reserve(reserve_size); - } - - } - - ~gim_hash_table() - { - _destroy(); - } - - inline bool is_hash_table() - { - if(m_hash_table) return true; - return false; - } - - inline bool is_sorted() - { - if(size()<2) return true; - return m_sorted; - } - - bool sort() - { - if(is_sorted()) return true; - if(m_nodes.size()<2) return false; - - - _node_type * ptr = m_nodes.pointer(); - GUINT siz = m_nodes.size(); - gim_sort_hash_node_array(ptr,siz); - m_sorted=true; - - - - if(m_hash_table) - { - _rehash(); - } - return true; - } - - bool switch_to_hashtable() - { - if(m_hash_table) return false; - if(m_node_size==0) m_node_size = GIM_DEFAULT_HASH_TABLE_NODE_SIZE; - if(m_nodes.size()m_hash_table) return true; - - if(!(m_nodes.size()< m_min_hash_table_size)) - { - if(m_node_size == 0) - { - m_node_size = GIM_DEFAULT_HASH_TABLE_NODE_SIZE; - } - - _resize_table(m_nodes.size()+1); - return true; - } - return false; - } - - inline void set_sorted(bool value) - { - m_sorted = value; - } - - //! Retrieves the amount of keys. - inline GUINT size() const - { - return m_nodes.size(); - } - - //! Retrieves the hash key. - inline GUINT get_key(GUINT index) const - { - return m_nodes[index].m_key; - } - - //! Retrieves the value by index - /*! - */ - inline T * get_value_by_index(GUINT index) - { - return &m_nodes[index].m_data; - } - - inline const T& operator[](GUINT index) const - { - return m_nodes[index].m_data; - } - - inline T& operator[](GUINT index) - { - return m_nodes[index].m_data; - } - - //! Finds the index of the element with the key - /*! - \return the index in the array of the existing element,or GIM_INVALID_HASH if the element has been inserted - If so, the element has been inserted at the last position of the array. - */ - inline GUINT find(GUINT hashkey) - { - if(m_hash_table) - { - GUINT cell_index = _find_cell(hashkey); - if(cell_index==GIM_INVALID_HASH) return GIM_INVALID_HASH; - return m_hash_table[cell_index]; - } - GUINT last_index = m_nodes.size(); - if(last_index<2) - { - if(last_index==0) return GIM_INVALID_HASH; - if(m_nodes[0].m_key == hashkey) return 0; - return GIM_INVALID_HASH; - } - else if(m_sorted) - { - //Binary search - GUINT result_ind = 0; - last_index--; - _node_type * ptr = m_nodes.pointer(); - - bool found = gim_binary_search_ex(ptr,0,last_index,result_ind,hashkey,GIM_HASH_NODE_CMP_KEY_MACRO()); - - - if(found) return result_ind; - } - return GIM_INVALID_HASH; - } - - //! Retrieves the value associated with the index - /*! - \return the found element, or null - */ - inline T * get_value(GUINT hashkey) - { - GUINT index = find(hashkey); - if(index == GIM_INVALID_HASH) return NULL; - return &m_nodes[index].m_data; - } - - - /*! - */ - inline bool erase_by_index(GUINT index) - { - if(index > m_nodes.size()) return false; - - if(m_hash_table == NULL) - { - if(is_sorted()) - { - return this->_erase_sorted(index); - } - else - { - return this->_erase_unsorted(index); - } - } - else - { - return this->_erase_by_index_hash_table(index); - } - return false; - } - - - - inline bool erase_by_index_unsorted(GUINT index) - { - if(index > m_nodes.size()) return false; - - if(m_hash_table == NULL) - { - return this->_erase_unsorted(index); - } - else - { - return this->_erase_by_index_hash_table(index); - } - return false; - } - - - - /*! - - */ - inline bool erase_by_key(GUINT hashkey) - { - if(size()==0) return false; - - if(m_hash_table) - { - return this->_erase_hash_table(hashkey); - } - //Binary search - - if(is_sorted()==false) return false; - - GUINT result_ind = find(hashkey); - if(result_ind!= GIM_INVALID_HASH) - { - return this->_erase_sorted(result_ind); - } - return false; - } - - void clear() - { - m_nodes.clear(); - - if(m_hash_table==NULL) return; - GUINT datasize = m_table_size*m_node_size; - //Initialize the hashkeys. - GUINT i; - for(i=0;i_insert_hash_table(hashkey,element); - } - if(this->is_sorted()) - { - return this->_insert_sorted(hashkey,element); - } - return this->_insert_unsorted(hashkey,element); - } - - //! Insert an element into the hash, and could overrite an existing object with the same hash. - /*! - \return If GIM_INVALID_HASH, the object has been inserted succesfully. Else it returns the position - of the replaced element. - */ - inline GUINT insert_override(GUINT hashkey, const T & element) - { - if(m_hash_table) - { - return this->_insert_hash_table_replace(hashkey,element); - } - if(this->is_sorted()) - { - return this->_insert_sorted_replace(hashkey,element); - } - this->_insert_unsorted(hashkey,element); - return m_nodes.size(); - } - - - - //! Insert an element into the hash,But if this container is a sorted array, this inserts it unsorted - /*! - */ - inline GUINT insert_unsorted(GUINT hashkey,const T & element) - { - if(m_hash_table) - { - return this->_insert_hash_table(hashkey,element); - } - return this->_insert_unsorted(hashkey,element); - } - - -}; - - - -#endif // GIM_CONTAINERS_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_linear_math.h b/extern/bullet2/BulletCollision/Gimpact/gim_linear_math.h deleted file mode 100644 index 0247d4e61cc..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/gim_linear_math.h +++ /dev/null @@ -1,1573 +0,0 @@ -#ifndef GIM_LINEAR_H_INCLUDED -#define GIM_LINEAR_H_INCLUDED - -/*! \file gim_linear_math.h -*\author Francisco Len Nßjera -Type Independant Vector and matrix operations. -*/ -/* ------------------------------------------------------------------------------ -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - This library is free software; you can redistribute it and/or - modify it under the terms of EITHER: - (1) The GNU Lesser General Public License as published by the Free - Software Foundation; either version 2.1 of the License, or (at - your option) any later version. The text of the GNU Lesser - General Public License is included with this library in the - file GIMPACT-LICENSE-LGPL.TXT. - (2) The BSD-style license that is included with this library in - the file GIMPACT-LICENSE-BSD.TXT. - (3) The zlib/libpng license that is included with this library in - the file GIMPACT-LICENSE-ZLIB.TXT. - - This library 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 files - GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. - ------------------------------------------------------------------------------ -*/ - - -#include "gim_math.h" -#include "gim_geom_types.h" - - - - -//! Zero out a 2D vector -#define VEC_ZERO_2(a) \ -{ \ - (a)[0] = (a)[1] = 0.0f; \ -}\ - - -//! Zero out a 3D vector -#define VEC_ZERO(a) \ -{ \ - (a)[0] = (a)[1] = (a)[2] = 0.0f; \ -}\ - - -/// Zero out a 4D vector -#define VEC_ZERO_4(a) \ -{ \ - (a)[0] = (a)[1] = (a)[2] = (a)[3] = 0.0f; \ -}\ - - -/// Vector copy -#define VEC_COPY_2(b,a) \ -{ \ - (b)[0] = (a)[0]; \ - (b)[1] = (a)[1]; \ -}\ - - -/// Copy 3D vector -#define VEC_COPY(b,a) \ -{ \ - (b)[0] = (a)[0]; \ - (b)[1] = (a)[1]; \ - (b)[2] = (a)[2]; \ -}\ - - -/// Copy 4D vector -#define VEC_COPY_4(b,a) \ -{ \ - (b)[0] = (a)[0]; \ - (b)[1] = (a)[1]; \ - (b)[2] = (a)[2]; \ - (b)[3] = (a)[3]; \ -}\ - -/// VECTOR SWAP -#define VEC_SWAP(b,a) \ -{ \ - GIM_SWAP_NUMBERS((b)[0],(a)[0]);\ - GIM_SWAP_NUMBERS((b)[1],(a)[1]);\ - GIM_SWAP_NUMBERS((b)[2],(a)[2]);\ -}\ - -/// Vector difference -#define VEC_DIFF_2(v21,v2,v1) \ -{ \ - (v21)[0] = (v2)[0] - (v1)[0]; \ - (v21)[1] = (v2)[1] - (v1)[1]; \ -}\ - - -/// Vector difference -#define VEC_DIFF(v21,v2,v1) \ -{ \ - (v21)[0] = (v2)[0] - (v1)[0]; \ - (v21)[1] = (v2)[1] - (v1)[1]; \ - (v21)[2] = (v2)[2] - (v1)[2]; \ -}\ - - -/// Vector difference -#define VEC_DIFF_4(v21,v2,v1) \ -{ \ - (v21)[0] = (v2)[0] - (v1)[0]; \ - (v21)[1] = (v2)[1] - (v1)[1]; \ - (v21)[2] = (v2)[2] - (v1)[2]; \ - (v21)[3] = (v2)[3] - (v1)[3]; \ -}\ - - -/// Vector sum -#define VEC_SUM_2(v21,v2,v1) \ -{ \ - (v21)[0] = (v2)[0] + (v1)[0]; \ - (v21)[1] = (v2)[1] + (v1)[1]; \ -}\ - - -/// Vector sum -#define VEC_SUM(v21,v2,v1) \ -{ \ - (v21)[0] = (v2)[0] + (v1)[0]; \ - (v21)[1] = (v2)[1] + (v1)[1]; \ - (v21)[2] = (v2)[2] + (v1)[2]; \ -}\ - - -/// Vector sum -#define VEC_SUM_4(v21,v2,v1) \ -{ \ - (v21)[0] = (v2)[0] + (v1)[0]; \ - (v21)[1] = (v2)[1] + (v1)[1]; \ - (v21)[2] = (v2)[2] + (v1)[2]; \ - (v21)[3] = (v2)[3] + (v1)[3]; \ -}\ - - -/// scalar times vector -#define VEC_SCALE_2(c,a,b) \ -{ \ - (c)[0] = (a)*(b)[0]; \ - (c)[1] = (a)*(b)[1]; \ -}\ - - -/// scalar times vector -#define VEC_SCALE(c,a,b) \ -{ \ - (c)[0] = (a)*(b)[0]; \ - (c)[1] = (a)*(b)[1]; \ - (c)[2] = (a)*(b)[2]; \ -}\ - - -/// scalar times vector -#define VEC_SCALE_4(c,a,b) \ -{ \ - (c)[0] = (a)*(b)[0]; \ - (c)[1] = (a)*(b)[1]; \ - (c)[2] = (a)*(b)[2]; \ - (c)[3] = (a)*(b)[3]; \ -}\ - - -/// accumulate scaled vector -#define VEC_ACCUM_2(c,a,b) \ -{ \ - (c)[0] += (a)*(b)[0]; \ - (c)[1] += (a)*(b)[1]; \ -}\ - - -/// accumulate scaled vector -#define VEC_ACCUM(c,a,b) \ -{ \ - (c)[0] += (a)*(b)[0]; \ - (c)[1] += (a)*(b)[1]; \ - (c)[2] += (a)*(b)[2]; \ -}\ - - -/// accumulate scaled vector -#define VEC_ACCUM_4(c,a,b) \ -{ \ - (c)[0] += (a)*(b)[0]; \ - (c)[1] += (a)*(b)[1]; \ - (c)[2] += (a)*(b)[2]; \ - (c)[3] += (a)*(b)[3]; \ -}\ - - -/// Vector dot product -#define VEC_DOT_2(a,b) ((a)[0]*(b)[0] + (a)[1]*(b)[1]) - - -/// Vector dot product -#define VEC_DOT(a,b) ((a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2]) - -/// Vector dot product -#define VEC_DOT_4(a,b) ((a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2] + (a)[3]*(b)[3]) - -/// vector impact parameter (squared) -#define VEC_IMPACT_SQ(bsq,direction,position) {\ - GREAL _llel_ = VEC_DOT(direction, position);\ - bsq = VEC_DOT(position, position) - _llel_*_llel_;\ -}\ - - -/// vector impact parameter -#define VEC_IMPACT(bsq,direction,position) {\ - VEC_IMPACT_SQ(bsq,direction,position); \ - GIM_SQRT(bsq,bsq); \ -}\ - -/// Vector length -#define VEC_LENGTH_2(a,l)\ -{\ - GREAL _pp = VEC_DOT_2(a,a);\ - GIM_SQRT(_pp,l);\ -}\ - - -/// Vector length -#define VEC_LENGTH(a,l)\ -{\ - GREAL _pp = VEC_DOT(a,a);\ - GIM_SQRT(_pp,l);\ -}\ - - -/// Vector length -#define VEC_LENGTH_4(a,l)\ -{\ - GREAL _pp = VEC_DOT_4(a,a);\ - GIM_SQRT(_pp,l);\ -}\ - -/// Vector inv length -#define VEC_INV_LENGTH_2(a,l)\ -{\ - GREAL _pp = VEC_DOT_2(a,a);\ - GIM_INV_SQRT(_pp,l);\ -}\ - - -/// Vector inv length -#define VEC_INV_LENGTH(a,l)\ -{\ - GREAL _pp = VEC_DOT(a,a);\ - GIM_INV_SQRT(_pp,l);\ -}\ - - -/// Vector inv length -#define VEC_INV_LENGTH_4(a,l)\ -{\ - GREAL _pp = VEC_DOT_4(a,a);\ - GIM_INV_SQRT(_pp,l);\ -}\ - - - -/// distance between two points -#define VEC_DISTANCE(_len,_va,_vb) {\ - vec3f _tmp_; \ - VEC_DIFF(_tmp_, _vb, _va); \ - VEC_LENGTH(_tmp_,_len); \ -}\ - - -/// Vector length -#define VEC_CONJUGATE_LENGTH(a,l)\ -{\ - GREAL _pp = 1.0 - a[0]*a[0] - a[1]*a[1] - a[2]*a[2];\ - GIM_SQRT(_pp,l);\ -}\ - - -/// Vector length -#define VEC_NORMALIZE(a) { \ - GREAL len;\ - VEC_INV_LENGTH(a,len); \ - if(lenA[1]?(A[0]>A[2]?0:2):(A[1]>A[2]?1:2);\ -}\ - -//! Finds the 2 smallest cartesian coordinates from a vector -#define VEC_MINOR_AXES(vec, i0, i1)\ -{\ - VEC_MAYOR_COORD(vec,i0);\ - i0 = (i0+1)%3;\ - i1 = (i0+1)%3;\ -}\ - - - - -#define VEC_EQUAL(v1,v2) (v1[0]==v2[0]&&v1[1]==v2[1]&&v1[2]==v2[2]) - -#define VEC_NEAR_EQUAL(v1,v2) (GIM_NEAR_EQUAL(v1[0],v2[0])&&GIM_NEAR_EQUAL(v1[1],v2[1])&&GIM_NEAR_EQUAL(v1[2],v2[2])) - - -/// Vector cross -#define X_AXIS_CROSS_VEC(dst,src)\ -{ \ - dst[0] = 0.0f; \ - dst[1] = -src[2]; \ - dst[2] = src[1]; \ -}\ - -#define Y_AXIS_CROSS_VEC(dst,src)\ -{ \ - dst[0] = src[2]; \ - dst[1] = 0.0f; \ - dst[2] = -src[0]; \ -}\ - -#define Z_AXIS_CROSS_VEC(dst,src)\ -{ \ - dst[0] = -src[1]; \ - dst[1] = src[0]; \ - dst[2] = 0.0f; \ -}\ - - - - - - -/// initialize matrix -#define IDENTIFY_MATRIX_3X3(m) \ -{ \ - m[0][0] = 1.0; \ - m[0][1] = 0.0; \ - m[0][2] = 0.0; \ - \ - m[1][0] = 0.0; \ - m[1][1] = 1.0; \ - m[1][2] = 0.0; \ - \ - m[2][0] = 0.0; \ - m[2][1] = 0.0; \ - m[2][2] = 1.0; \ -}\ - -/*! initialize matrix */ -#define IDENTIFY_MATRIX_4X4(m) \ -{ \ - m[0][0] = 1.0; \ - m[0][1] = 0.0; \ - m[0][2] = 0.0; \ - m[0][3] = 0.0; \ - \ - m[1][0] = 0.0; \ - m[1][1] = 1.0; \ - m[1][2] = 0.0; \ - m[1][3] = 0.0; \ - \ - m[2][0] = 0.0; \ - m[2][1] = 0.0; \ - m[2][2] = 1.0; \ - m[2][3] = 0.0; \ - \ - m[3][0] = 0.0; \ - m[3][1] = 0.0; \ - m[3][2] = 0.0; \ - m[3][3] = 1.0; \ -}\ - -/*! initialize matrix */ -#define ZERO_MATRIX_4X4(m) \ -{ \ - m[0][0] = 0.0; \ - m[0][1] = 0.0; \ - m[0][2] = 0.0; \ - m[0][3] = 0.0; \ - \ - m[1][0] = 0.0; \ - m[1][1] = 0.0; \ - m[1][2] = 0.0; \ - m[1][3] = 0.0; \ - \ - m[2][0] = 0.0; \ - m[2][1] = 0.0; \ - m[2][2] = 0.0; \ - m[2][3] = 0.0; \ - \ - m[3][0] = 0.0; \ - m[3][1] = 0.0; \ - m[3][2] = 0.0; \ - m[3][3] = 0.0; \ -}\ - -/*! matrix rotation X */ -#define ROTX_CS(m,cosine,sine) \ -{ \ - /* rotation about the x-axis */ \ - \ - m[0][0] = 1.0; \ - m[0][1] = 0.0; \ - m[0][2] = 0.0; \ - m[0][3] = 0.0; \ - \ - m[1][0] = 0.0; \ - m[1][1] = (cosine); \ - m[1][2] = (sine); \ - m[1][3] = 0.0; \ - \ - m[2][0] = 0.0; \ - m[2][1] = -(sine); \ - m[2][2] = (cosine); \ - m[2][3] = 0.0; \ - \ - m[3][0] = 0.0; \ - m[3][1] = 0.0; \ - m[3][2] = 0.0; \ - m[3][3] = 1.0; \ -}\ - -/*! matrix rotation Y */ -#define ROTY_CS(m,cosine,sine) \ -{ \ - /* rotation about the y-axis */ \ - \ - m[0][0] = (cosine); \ - m[0][1] = 0.0; \ - m[0][2] = -(sine); \ - m[0][3] = 0.0; \ - \ - m[1][0] = 0.0; \ - m[1][1] = 1.0; \ - m[1][2] = 0.0; \ - m[1][3] = 0.0; \ - \ - m[2][0] = (sine); \ - m[2][1] = 0.0; \ - m[2][2] = (cosine); \ - m[2][3] = 0.0; \ - \ - m[3][0] = 0.0; \ - m[3][1] = 0.0; \ - m[3][2] = 0.0; \ - m[3][3] = 1.0; \ -}\ - -/*! matrix rotation Z */ -#define ROTZ_CS(m,cosine,sine) \ -{ \ - /* rotation about the z-axis */ \ - \ - m[0][0] = (cosine); \ - m[0][1] = (sine); \ - m[0][2] = 0.0; \ - m[0][3] = 0.0; \ - \ - m[1][0] = -(sine); \ - m[1][1] = (cosine); \ - m[1][2] = 0.0; \ - m[1][3] = 0.0; \ - \ - m[2][0] = 0.0; \ - m[2][1] = 0.0; \ - m[2][2] = 1.0; \ - m[2][3] = 0.0; \ - \ - m[3][0] = 0.0; \ - m[3][1] = 0.0; \ - m[3][2] = 0.0; \ - m[3][3] = 1.0; \ -}\ - -/*! matrix copy */ -#define COPY_MATRIX_2X2(b,a) \ -{ \ - b[0][0] = a[0][0]; \ - b[0][1] = a[0][1]; \ - \ - b[1][0] = a[1][0]; \ - b[1][1] = a[1][1]; \ - \ -}\ - - -/*! matrix copy */ -#define COPY_MATRIX_2X3(b,a) \ -{ \ - b[0][0] = a[0][0]; \ - b[0][1] = a[0][1]; \ - b[0][2] = a[0][2]; \ - \ - b[1][0] = a[1][0]; \ - b[1][1] = a[1][1]; \ - b[1][2] = a[1][2]; \ -}\ - - -/*! matrix copy */ -#define COPY_MATRIX_3X3(b,a) \ -{ \ - b[0][0] = a[0][0]; \ - b[0][1] = a[0][1]; \ - b[0][2] = a[0][2]; \ - \ - b[1][0] = a[1][0]; \ - b[1][1] = a[1][1]; \ - b[1][2] = a[1][2]; \ - \ - b[2][0] = a[2][0]; \ - b[2][1] = a[2][1]; \ - b[2][2] = a[2][2]; \ -}\ - - -/*! matrix copy */ -#define COPY_MATRIX_4X4(b,a) \ -{ \ - b[0][0] = a[0][0]; \ - b[0][1] = a[0][1]; \ - b[0][2] = a[0][2]; \ - b[0][3] = a[0][3]; \ - \ - b[1][0] = a[1][0]; \ - b[1][1] = a[1][1]; \ - b[1][2] = a[1][2]; \ - b[1][3] = a[1][3]; \ - \ - b[2][0] = a[2][0]; \ - b[2][1] = a[2][1]; \ - b[2][2] = a[2][2]; \ - b[2][3] = a[2][3]; \ - \ - b[3][0] = a[3][0]; \ - b[3][1] = a[3][1]; \ - b[3][2] = a[3][2]; \ - b[3][3] = a[3][3]; \ -}\ - - -/*! matrix transpose */ -#define TRANSPOSE_MATRIX_2X2(b,a) \ -{ \ - b[0][0] = a[0][0]; \ - b[0][1] = a[1][0]; \ - \ - b[1][0] = a[0][1]; \ - b[1][1] = a[1][1]; \ -}\ - - -/*! matrix transpose */ -#define TRANSPOSE_MATRIX_3X3(b,a) \ -{ \ - b[0][0] = a[0][0]; \ - b[0][1] = a[1][0]; \ - b[0][2] = a[2][0]; \ - \ - b[1][0] = a[0][1]; \ - b[1][1] = a[1][1]; \ - b[1][2] = a[2][1]; \ - \ - b[2][0] = a[0][2]; \ - b[2][1] = a[1][2]; \ - b[2][2] = a[2][2]; \ -}\ - - -/*! matrix transpose */ -#define TRANSPOSE_MATRIX_4X4(b,a) \ -{ \ - b[0][0] = a[0][0]; \ - b[0][1] = a[1][0]; \ - b[0][2] = a[2][0]; \ - b[0][3] = a[3][0]; \ - \ - b[1][0] = a[0][1]; \ - b[1][1] = a[1][1]; \ - b[1][2] = a[2][1]; \ - b[1][3] = a[3][1]; \ - \ - b[2][0] = a[0][2]; \ - b[2][1] = a[1][2]; \ - b[2][2] = a[2][2]; \ - b[2][3] = a[3][2]; \ - \ - b[3][0] = a[0][3]; \ - b[3][1] = a[1][3]; \ - b[3][2] = a[2][3]; \ - b[3][3] = a[3][3]; \ -}\ - - -/*! multiply matrix by scalar */ -#define SCALE_MATRIX_2X2(b,s,a) \ -{ \ - b[0][0] = (s) * a[0][0]; \ - b[0][1] = (s) * a[0][1]; \ - \ - b[1][0] = (s) * a[1][0]; \ - b[1][1] = (s) * a[1][1]; \ -}\ - - -/*! multiply matrix by scalar */ -#define SCALE_MATRIX_3X3(b,s,a) \ -{ \ - b[0][0] = (s) * a[0][0]; \ - b[0][1] = (s) * a[0][1]; \ - b[0][2] = (s) * a[0][2]; \ - \ - b[1][0] = (s) * a[1][0]; \ - b[1][1] = (s) * a[1][1]; \ - b[1][2] = (s) * a[1][2]; \ - \ - b[2][0] = (s) * a[2][0]; \ - b[2][1] = (s) * a[2][1]; \ - b[2][2] = (s) * a[2][2]; \ -}\ - - -/*! multiply matrix by scalar */ -#define SCALE_MATRIX_4X4(b,s,a) \ -{ \ - b[0][0] = (s) * a[0][0]; \ - b[0][1] = (s) * a[0][1]; \ - b[0][2] = (s) * a[0][2]; \ - b[0][3] = (s) * a[0][3]; \ - \ - b[1][0] = (s) * a[1][0]; \ - b[1][1] = (s) * a[1][1]; \ - b[1][2] = (s) * a[1][2]; \ - b[1][3] = (s) * a[1][3]; \ - \ - b[2][0] = (s) * a[2][0]; \ - b[2][1] = (s) * a[2][1]; \ - b[2][2] = (s) * a[2][2]; \ - b[2][3] = (s) * a[2][3]; \ - \ - b[3][0] = s * a[3][0]; \ - b[3][1] = s * a[3][1]; \ - b[3][2] = s * a[3][2]; \ - b[3][3] = s * a[3][3]; \ -}\ - - -/*! multiply matrix by scalar */ -#define SCALE_VEC_MATRIX_2X2(b,svec,a) \ -{ \ - b[0][0] = svec[0] * a[0][0]; \ - b[1][0] = svec[0] * a[1][0]; \ - \ - b[0][1] = svec[1] * a[0][1]; \ - b[1][1] = svec[1] * a[1][1]; \ -}\ - - -/*! multiply matrix by scalar. Each columns is scaled by each scalar vector component */ -#define SCALE_VEC_MATRIX_3X3(b,svec,a) \ -{ \ - b[0][0] = svec[0] * a[0][0]; \ - b[1][0] = svec[0] * a[1][0]; \ - b[2][0] = svec[0] * a[2][0]; \ - \ - b[0][1] = svec[1] * a[0][1]; \ - b[1][1] = svec[1] * a[1][1]; \ - b[2][1] = svec[1] * a[2][1]; \ - \ - b[0][2] = svec[2] * a[0][2]; \ - b[1][2] = svec[2] * a[1][2]; \ - b[2][2] = svec[2] * a[2][2]; \ -}\ - - -/*! multiply matrix by scalar */ -#define SCALE_VEC_MATRIX_4X4(b,svec,a) \ -{ \ - b[0][0] = svec[0] * a[0][0]; \ - b[1][0] = svec[0] * a[1][0]; \ - b[2][0] = svec[0] * a[2][0]; \ - b[3][0] = svec[0] * a[3][0]; \ - \ - b[0][1] = svec[1] * a[0][1]; \ - b[1][1] = svec[1] * a[1][1]; \ - b[2][1] = svec[1] * a[2][1]; \ - b[3][1] = svec[1] * a[3][1]; \ - \ - b[0][2] = svec[2] * a[0][2]; \ - b[1][2] = svec[2] * a[1][2]; \ - b[2][2] = svec[2] * a[2][2]; \ - b[3][2] = svec[2] * a[3][2]; \ - \ - b[0][3] = svec[3] * a[0][3]; \ - b[1][3] = svec[3] * a[1][3]; \ - b[2][3] = svec[3] * a[2][3]; \ - b[3][3] = svec[3] * a[3][3]; \ -}\ - - -/*! multiply matrix by scalar */ -#define ACCUM_SCALE_MATRIX_2X2(b,s,a) \ -{ \ - b[0][0] += (s) * a[0][0]; \ - b[0][1] += (s) * a[0][1]; \ - \ - b[1][0] += (s) * a[1][0]; \ - b[1][1] += (s) * a[1][1]; \ -}\ - - -/*! multiply matrix by scalar */ -#define ACCUM_SCALE_MATRIX_3X3(b,s,a) \ -{ \ - b[0][0] += (s) * a[0][0]; \ - b[0][1] += (s) * a[0][1]; \ - b[0][2] += (s) * a[0][2]; \ - \ - b[1][0] += (s) * a[1][0]; \ - b[1][1] += (s) * a[1][1]; \ - b[1][2] += (s) * a[1][2]; \ - \ - b[2][0] += (s) * a[2][0]; \ - b[2][1] += (s) * a[2][1]; \ - b[2][2] += (s) * a[2][2]; \ -}\ - - -/*! multiply matrix by scalar */ -#define ACCUM_SCALE_MATRIX_4X4(b,s,a) \ -{ \ - b[0][0] += (s) * a[0][0]; \ - b[0][1] += (s) * a[0][1]; \ - b[0][2] += (s) * a[0][2]; \ - b[0][3] += (s) * a[0][3]; \ - \ - b[1][0] += (s) * a[1][0]; \ - b[1][1] += (s) * a[1][1]; \ - b[1][2] += (s) * a[1][2]; \ - b[1][3] += (s) * a[1][3]; \ - \ - b[2][0] += (s) * a[2][0]; \ - b[2][1] += (s) * a[2][1]; \ - b[2][2] += (s) * a[2][2]; \ - b[2][3] += (s) * a[2][3]; \ - \ - b[3][0] += (s) * a[3][0]; \ - b[3][1] += (s) * a[3][1]; \ - b[3][2] += (s) * a[3][2]; \ - b[3][3] += (s) * a[3][3]; \ -}\ - -/*! matrix product */ -/*! c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/ -#define MATRIX_PRODUCT_2X2(c,a,b) \ -{ \ - c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]; \ - c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]; \ - \ - c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]; \ - c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]; \ - \ -}\ - -/*! matrix product */ -/*! c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/ -#define MATRIX_PRODUCT_3X3(c,a,b) \ -{ \ - c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]; \ - c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1]; \ - c[0][2] = a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2]; \ - \ - c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]+a[1][2]*b[2][0]; \ - c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][2]*b[2][1]; \ - c[1][2] = a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2]; \ - \ - c[2][0] = a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0]; \ - c[2][1] = a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][2]*b[2][1]; \ - c[2][2] = a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2]; \ -}\ - - -/*! matrix product */ -/*! c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/ -#define MATRIX_PRODUCT_4X4(c,a,b) \ -{ \ - c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]+a[0][3]*b[3][0];\ - c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1]+a[0][3]*b[3][1];\ - c[0][2] = a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2]+a[0][3]*b[3][2];\ - c[0][3] = a[0][0]*b[0][3]+a[0][1]*b[1][3]+a[0][2]*b[2][3]+a[0][3]*b[3][3];\ - \ - c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]+a[1][2]*b[2][0]+a[1][3]*b[3][0];\ - c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][2]*b[2][1]+a[1][3]*b[3][1];\ - c[1][2] = a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2]+a[1][3]*b[3][2];\ - c[1][3] = a[1][0]*b[0][3]+a[1][1]*b[1][3]+a[1][2]*b[2][3]+a[1][3]*b[3][3];\ - \ - c[2][0] = a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0]+a[2][3]*b[3][0];\ - c[2][1] = a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][2]*b[2][1]+a[2][3]*b[3][1];\ - c[2][2] = a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2]+a[2][3]*b[3][2];\ - c[2][3] = a[2][0]*b[0][3]+a[2][1]*b[1][3]+a[2][2]*b[2][3]+a[2][3]*b[3][3];\ - \ - c[3][0] = a[3][0]*b[0][0]+a[3][1]*b[1][0]+a[3][2]*b[2][0]+a[3][3]*b[3][0];\ - c[3][1] = a[3][0]*b[0][1]+a[3][1]*b[1][1]+a[3][2]*b[2][1]+a[3][3]*b[3][1];\ - c[3][2] = a[3][0]*b[0][2]+a[3][1]*b[1][2]+a[3][2]*b[2][2]+a[3][3]*b[3][2];\ - c[3][3] = a[3][0]*b[0][3]+a[3][1]*b[1][3]+a[3][2]*b[2][3]+a[3][3]*b[3][3];\ -}\ - - -/*! matrix times vector */ -#define MAT_DOT_VEC_2X2(p,m,v) \ -{ \ - p[0] = m[0][0]*v[0] + m[0][1]*v[1]; \ - p[1] = m[1][0]*v[0] + m[1][1]*v[1]; \ -}\ - - -/*! matrix times vector */ -#define MAT_DOT_VEC_3X3(p,m,v) \ -{ \ - p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2]; \ - p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2]; \ - p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2]; \ -}\ - - -/*! matrix times vector -v is a vec4f -*/ -#define MAT_DOT_VEC_4X4(p,m,v) \ -{ \ - p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2] + m[0][3]*v[3]; \ - p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2] + m[1][3]*v[3]; \ - p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2] + m[2][3]*v[3]; \ - p[3] = m[3][0]*v[0] + m[3][1]*v[1] + m[3][2]*v[2] + m[3][3]*v[3]; \ -}\ - -/*! matrix times vector -v is a vec3f -and m is a mat4f
    -Last column is added as the position -*/ -#define MAT_DOT_VEC_3X4(p,m,v) \ -{ \ - p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2] + m[0][3]; \ - p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2] + m[1][3]; \ - p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2] + m[2][3]; \ -}\ - - -/*! vector transpose times matrix */ -/*! p[j] = v[0]*m[0][j] + v[1]*m[1][j] + v[2]*m[2][j]; */ -#define VEC_DOT_MAT_3X3(p,v,m) \ -{ \ - p[0] = v[0]*m[0][0] + v[1]*m[1][0] + v[2]*m[2][0]; \ - p[1] = v[0]*m[0][1] + v[1]*m[1][1] + v[2]*m[2][1]; \ - p[2] = v[0]*m[0][2] + v[1]*m[1][2] + v[2]*m[2][2]; \ -}\ - - -/*! affine matrix times vector */ -/** The matrix is assumed to be an affine matrix, with last two - * entries representing a translation */ -#define MAT_DOT_VEC_2X3(p,m,v) \ -{ \ - p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]; \ - p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]; \ -}\ - -//! Transform a plane -#define MAT_TRANSFORM_PLANE_4X4(pout,m,plane)\ -{ \ - pout[0] = m[0][0]*plane[0] + m[0][1]*plane[1] + m[0][2]*plane[2];\ - pout[1] = m[1][0]*plane[0] + m[1][1]*plane[1] + m[1][2]*plane[2];\ - pout[2] = m[2][0]*plane[0] + m[2][1]*plane[1] + m[2][2]*plane[2];\ - pout[3] = m[0][3]*pout[0] + m[1][3]*pout[1] + m[2][3]*pout[2] + plane[3];\ -}\ - - - -/** inverse transpose of matrix times vector - * - * This macro computes inverse transpose of matrix m, - * and multiplies vector v into it, to yeild vector p - * - * DANGER !!! Do Not use this on normal vectors!!! - * It will leave normals the wrong length !!! - * See macro below for use on normals. - */ -#define INV_TRANSP_MAT_DOT_VEC_2X2(p,m,v) \ -{ \ - GREAL det; \ - \ - det = m[0][0]*m[1][1] - m[0][1]*m[1][0]; \ - p[0] = m[1][1]*v[0] - m[1][0]*v[1]; \ - p[1] = - m[0][1]*v[0] + m[0][0]*v[1]; \ - \ - /* if matrix not singular, and not orthonormal, then renormalize */ \ - if ((det!=1.0f) && (det != 0.0f)) { \ - det = 1.0f / det; \ - p[0] *= det; \ - p[1] *= det; \ - } \ -}\ - - -/** transform normal vector by inverse transpose of matrix - * and then renormalize the vector - * - * This macro computes inverse transpose of matrix m, - * and multiplies vector v into it, to yeild vector p - * Vector p is then normalized. - */ -#define NORM_XFORM_2X2(p,m,v) \ -{ \ - GREAL len; \ - \ - /* do nothing if off-diagonals are zero and diagonals are \ - * equal */ \ - if ((m[0][1] != 0.0) || (m[1][0] != 0.0) || (m[0][0] != m[1][1])) { \ - p[0] = m[1][1]*v[0] - m[1][0]*v[1]; \ - p[1] = - m[0][1]*v[0] + m[0][0]*v[1]; \ - \ - len = p[0]*p[0] + p[1]*p[1]; \ - GIM_INV_SQRT(len,len); \ - p[0] *= len; \ - p[1] *= len; \ - } else { \ - VEC_COPY_2 (p, v); \ - } \ -}\ - - -/** outer product of vector times vector transpose - * - * The outer product of vector v and vector transpose t yeilds - * dyadic matrix m. - */ -#define OUTER_PRODUCT_2X2(m,v,t) \ -{ \ - m[0][0] = v[0] * t[0]; \ - m[0][1] = v[0] * t[1]; \ - \ - m[1][0] = v[1] * t[0]; \ - m[1][1] = v[1] * t[1]; \ -}\ - - -/** outer product of vector times vector transpose - * - * The outer product of vector v and vector transpose t yeilds - * dyadic matrix m. - */ -#define OUTER_PRODUCT_3X3(m,v,t) \ -{ \ - m[0][0] = v[0] * t[0]; \ - m[0][1] = v[0] * t[1]; \ - m[0][2] = v[0] * t[2]; \ - \ - m[1][0] = v[1] * t[0]; \ - m[1][1] = v[1] * t[1]; \ - m[1][2] = v[1] * t[2]; \ - \ - m[2][0] = v[2] * t[0]; \ - m[2][1] = v[2] * t[1]; \ - m[2][2] = v[2] * t[2]; \ -}\ - - -/** outer product of vector times vector transpose - * - * The outer product of vector v and vector transpose t yeilds - * dyadic matrix m. - */ -#define OUTER_PRODUCT_4X4(m,v,t) \ -{ \ - m[0][0] = v[0] * t[0]; \ - m[0][1] = v[0] * t[1]; \ - m[0][2] = v[0] * t[2]; \ - m[0][3] = v[0] * t[3]; \ - \ - m[1][0] = v[1] * t[0]; \ - m[1][1] = v[1] * t[1]; \ - m[1][2] = v[1] * t[2]; \ - m[1][3] = v[1] * t[3]; \ - \ - m[2][0] = v[2] * t[0]; \ - m[2][1] = v[2] * t[1]; \ - m[2][2] = v[2] * t[2]; \ - m[2][3] = v[2] * t[3]; \ - \ - m[3][0] = v[3] * t[0]; \ - m[3][1] = v[3] * t[1]; \ - m[3][2] = v[3] * t[2]; \ - m[3][3] = v[3] * t[3]; \ -}\ - - -/** outer product of vector times vector transpose - * - * The outer product of vector v and vector transpose t yeilds - * dyadic matrix m. - */ -#define ACCUM_OUTER_PRODUCT_2X2(m,v,t) \ -{ \ - m[0][0] += v[0] * t[0]; \ - m[0][1] += v[0] * t[1]; \ - \ - m[1][0] += v[1] * t[0]; \ - m[1][1] += v[1] * t[1]; \ -}\ - - -/** outer product of vector times vector transpose - * - * The outer product of vector v and vector transpose t yeilds - * dyadic matrix m. - */ -#define ACCUM_OUTER_PRODUCT_3X3(m,v,t) \ -{ \ - m[0][0] += v[0] * t[0]; \ - m[0][1] += v[0] * t[1]; \ - m[0][2] += v[0] * t[2]; \ - \ - m[1][0] += v[1] * t[0]; \ - m[1][1] += v[1] * t[1]; \ - m[1][2] += v[1] * t[2]; \ - \ - m[2][0] += v[2] * t[0]; \ - m[2][1] += v[2] * t[1]; \ - m[2][2] += v[2] * t[2]; \ -}\ - - -/** outer product of vector times vector transpose - * - * The outer product of vector v and vector transpose t yeilds - * dyadic matrix m. - */ -#define ACCUM_OUTER_PRODUCT_4X4(m,v,t) \ -{ \ - m[0][0] += v[0] * t[0]; \ - m[0][1] += v[0] * t[1]; \ - m[0][2] += v[0] * t[2]; \ - m[0][3] += v[0] * t[3]; \ - \ - m[1][0] += v[1] * t[0]; \ - m[1][1] += v[1] * t[1]; \ - m[1][2] += v[1] * t[2]; \ - m[1][3] += v[1] * t[3]; \ - \ - m[2][0] += v[2] * t[0]; \ - m[2][1] += v[2] * t[1]; \ - m[2][2] += v[2] * t[2]; \ - m[2][3] += v[2] * t[3]; \ - \ - m[3][0] += v[3] * t[0]; \ - m[3][1] += v[3] * t[1]; \ - m[3][2] += v[3] * t[2]; \ - m[3][3] += v[3] * t[3]; \ -}\ - - -/** determinant of matrix - * - * Computes determinant of matrix m, returning d - */ -#define DETERMINANT_2X2(d,m) \ -{ \ - d = m[0][0] * m[1][1] - m[0][1] * m[1][0]; \ -}\ - - -/** determinant of matrix - * - * Computes determinant of matrix m, returning d - */ -#define DETERMINANT_3X3(d,m) \ -{ \ - d = m[0][0] * (m[1][1]*m[2][2] - m[1][2] * m[2][1]); \ - d -= m[0][1] * (m[1][0]*m[2][2] - m[1][2] * m[2][0]); \ - d += m[0][2] * (m[1][0]*m[2][1] - m[1][1] * m[2][0]); \ -}\ - - -/** i,j,th cofactor of a 4x4 matrix - * - */ -#define COFACTOR_4X4_IJ(fac,m,i,j) \ -{ \ - GUINT __ii[4], __jj[4], __k; \ - \ - for (__k=0; __k -*/ -#define INV_MAT_DOT_VEC_3X3(p,m,v) \ -{ \ - p[0] = MAT_DOT_COL(m,v,0); \ - p[1] = MAT_DOT_COL(m,v,1); \ - p[2] = MAT_DOT_COL(m,v,2); \ -}\ - - - -#endif // GIM_VECTOR_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_math.h b/extern/bullet2/BulletCollision/Gimpact/gim_math.h deleted file mode 100644 index 8b9e6806ef7..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/gim_math.h +++ /dev/null @@ -1,157 +0,0 @@ -#ifndef GIM_MATH_H_INCLUDED -#define GIM_MATH_H_INCLUDED -/*! \file gim_math.h -\author Francisco Len Nßjera -*/ -/* ------------------------------------------------------------------------------ -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - This library is free software; you can redistribute it and/or - modify it under the terms of EITHER: - (1) The GNU Lesser General Public License as published by the Free - Software Foundation; either version 2.1 of the License, or (at - your option) any later version. The text of the GNU Lesser - General Public License is included with this library in the - file GIMPACT-LICENSE-LGPL.TXT. - (2) The BSD-style license that is included with this library in - the file GIMPACT-LICENSE-BSD.TXT. - (3) The zlib/libpng license that is included with this library in - the file GIMPACT-LICENSE-ZLIB.TXT. - - This library 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 files - GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. - ------------------------------------------------------------------------------ -*/ - -#include "LinearMath/btScalar.h" - - - -#define GREAL btScalar -#define GREAL2 double -#define GINT int -#define GUINT unsigned int -#define GSHORT short -#define GUSHORT unsigned short -#define GINT64 long long -#define GUINT64 unsigned long long - - - -#define G_PI 3.14159265358979f -#define G_HALF_PI 1.5707963f -//267948966 -#define G_TWO_PI 6.28318530f -//71795864 -#define G_ROOT3 1.73205f -#define G_ROOT2 1.41421f -#define G_UINT_INFINITY 0xffffffff //!< A very very high value -#define G_REAL_INFINITY FLT_MAX -#define G_SIGN_BITMASK 0x80000000 -#define G_EPSILON SIMD_EPSILON - - - -enum GIM_SCALAR_TYPES -{ - G_STYPE_REAL =0, - G_STYPE_REAL2, - G_STYPE_SHORT, - G_STYPE_USHORT, - G_STYPE_INT, - G_STYPE_UINT, - G_STYPE_INT64, - G_STYPE_UINT64 -}; - - - -#define G_DEGTORAD(X) ((X)*3.1415926f/180.0f) -#define G_RADTODEG(X) ((X)*180.0f/3.1415926f) - -//! Integer representation of a floating-point value. -#define GIM_IR(x) ((GUINT&)(x)) - -//! Signed integer representation of a floating-point value. -#define GIM_SIR(x) ((GINT&)(x)) - -//! Absolute integer representation of a floating-point value -#define GIM_AIR(x) (GIM_IR(x)&0x7fffffff) - -//! Floating-point representation of an integer value. -#define GIM_FR(x) ((GREAL&)(x)) - -#define GIM_MAX(a,b) (ab?b:a) - -#define GIM_MAX3(a,b,c) GIM_MAX(a,GIM_MAX(b,c)) -#define GIM_MIN3(a,b,c) GIM_MIN(a,GIM_MIN(b,c)) - -#define GIM_IS_ZERO(value) (value < G_EPSILON && value > -G_EPSILON) - -#define GIM_IS_NEGATIVE(value) (value <= -G_EPSILON) - -#define GIM_IS_POSISITVE(value) (value >= G_EPSILON) - -#define GIM_NEAR_EQUAL(v1,v2) GIM_IS_ZERO((v1-v2)) - -///returns a clamped number -#define GIM_CLAMP(number,minval,maxval) (numbermaxval?maxval:number)) - -#define GIM_GREATER(x, y) btFabs(x) > (y) - -///Swap numbers -#define GIM_SWAP_NUMBERS(a,b){ \ - a = a+b; \ - b = a-b; \ - a = a-b; \ -}\ - -#define GIM_INV_SQRT(va,isva)\ -{\ - if(va<=0.0000001f)\ - {\ - isva = G_REAL_INFINITY;\ - }\ - else\ - {\ - GREAL _x = va * 0.5f;\ - GUINT _y = 0x5f3759df - ( GIM_IR(va) >> 1);\ - isva = GIM_FR(_y);\ - isva = isva * ( 1.5f - ( _x * isva * isva ) );\ - }\ -}\ - -#define GIM_SQRT(va,sva)\ -{\ - GIM_INV_SQRT(va,sva);\ - sva = 1.0f/sva;\ -}\ - -//! Computes 1.0f / sqrtf(x). Comes from Quake3. See http://www.magic-software.com/3DGEDInvSqrt.html -inline GREAL gim_inv_sqrt(GREAL f) -{ - GREAL r; - GIM_INV_SQRT(f,r); - return r; -} - -inline GREAL gim_sqrt(GREAL f) -{ - GREAL r; - GIM_SQRT(f,r); - return r; -} - - - -#endif // GIM_MATH_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_memory.cpp b/extern/bullet2/BulletCollision/Gimpact/gim_memory.cpp deleted file mode 100644 index 1636eb7867c..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/gim_memory.cpp +++ /dev/null @@ -1,135 +0,0 @@ -/* ------------------------------------------------------------------------------ -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - This library is free software; you can redistribute it and/or - modify it under the terms of EITHER: - (1) The GNU Lesser General Public License as published by the Free - Software Foundation; either version 2.1 of the License, or (at - your option) any later version. The text of the GNU Lesser - General Public License is included with this library in the - file GIMPACT-LICENSE-LGPL.TXT. - (2) The BSD-style license that is included with this library in - the file GIMPACT-LICENSE-BSD.TXT. - (3) The zlib/libpng license that is included with this library in - the file GIMPACT-LICENSE-ZLIB.TXT. - - This library 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 files - GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. - ------------------------------------------------------------------------------ -*/ - - -#include "gim_memory.h" -#include "stdlib.h" - -#ifdef GIM_SIMD_MEMORY -#include "LinearMath/btAlignedAllocator.h" -#endif - -static gim_alloc_function *g_allocfn = 0; -static gim_alloca_function *g_allocafn = 0; -static gim_realloc_function *g_reallocfn = 0; -static gim_free_function *g_freefn = 0; - -void gim_set_alloc_handler (gim_alloc_function *fn) -{ - g_allocfn = fn; -} - -void gim_set_alloca_handler (gim_alloca_function *fn) -{ - g_allocafn = fn; -} - -void gim_set_realloc_handler (gim_realloc_function *fn) -{ - g_reallocfn = fn; -} - -void gim_set_free_handler (gim_free_function *fn) -{ - g_freefn = fn; -} - -gim_alloc_function *gim_get_alloc_handler() -{ - return g_allocfn; -} - -gim_alloca_function *gim_get_alloca_handler() -{ - return g_allocafn; -} - - -gim_realloc_function *gim_get_realloc_handler () -{ - return g_reallocfn; -} - - -gim_free_function *gim_get_free_handler () -{ - return g_freefn; -} - - -void * gim_alloc(size_t size) -{ - void * ptr; - if (g_allocfn) - { - ptr = g_allocfn(size); - } - else - { -#ifdef GIM_SIMD_MEMORY - ptr = btAlignedAlloc(size,16); -#else - ptr = malloc(size); -#endif - } - return ptr; -} - -void * gim_alloca(size_t size) -{ - if (g_allocafn) return g_allocafn(size); else return gim_alloc(size); -} - - -void * gim_realloc(void *ptr, size_t oldsize, size_t newsize) -{ - void * newptr = gim_alloc(newsize); - size_t copysize = oldsize - -#ifdef PREFETCH -#include // for prefetch -#define pfval 64 -#define pfval2 128 -//! Prefetch 64 -#define pf(_x,_i) _mm_prefetch((void *)(_x + _i + pfval), 0) -//! Prefetch 128 -#define pf2(_x,_i) _mm_prefetch((void *)(_x + _i + pfval2), 0) -#else -//! Prefetch 64 -#define pf(_x,_i) -//! Prefetch 128 -#define pf2(_x,_i) -#endif - - -///Functions for manip packed arrays of numbers -#define GIM_COPY_ARRAYS(dest_array,source_array,element_count)\ -{\ - for (GUINT _i_=0;_i_=SIMD_T_SIZE) - { - *(ui_dst_ptr++) = *(ui_src_ptr++); - copysize-=SIMD_T_SIZE; - } - if(copysize==0) return; -*/ - - char * c_src_ptr = (char *)src; - char * c_dst_ptr = (char *)dst; - while(copysize>0) - { - *(c_dst_ptr++) = *(c_src_ptr++); - copysize--; - } - return; -#else - memcpy(dst,src,copysize); -#endif -} - - - -template -inline void gim_swap_elements(T* _array,size_t _i,size_t _j) -{ - T _e_tmp_ = _array[_i]; - _array[_i] = _array[_j]; - _array[_j] = _e_tmp_; -} - - -template -inline void gim_swap_elements_memcpy(T* _array,size_t _i,size_t _j) -{ - char _e_tmp_[sizeof(T)]; - gim_simd_memcpy(_e_tmp_,&_array[_i],sizeof(T)); - gim_simd_memcpy(&_array[_i],&_array[_j],sizeof(T)); - gim_simd_memcpy(&_array[_j],_e_tmp_,sizeof(T)); -} - -template -inline void gim_swap_elements_ptr(char * _array,size_t _i,size_t _j) -{ - char _e_tmp_[SIZE]; - _i*=SIZE; - _j*=SIZE; - gim_simd_memcpy(_e_tmp_,_array+_i,SIZE); - gim_simd_memcpy(_array+_i,_array+_j,SIZE); - gim_simd_memcpy(_array+_j,_e_tmp_,SIZE); -} - -#endif // GIM_MEMORY_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_radixsort.h b/extern/bullet2/BulletCollision/Gimpact/gim_radixsort.h deleted file mode 100644 index f7dadbbca93..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/gim_radixsort.h +++ /dev/null @@ -1,406 +0,0 @@ -#ifndef GIM_RADIXSORT_H_INCLUDED -#define GIM_RADIXSORT_H_INCLUDED -/*! \file gim_radixsort.h -\author Francisco Len Nßjera. -Based on the work of Michael Herf : "fast floating-point radix sort" -Avaliable on http://www.stereopsis.com/radix.html -*/ -/* ------------------------------------------------------------------------------ -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - This library is free software; you can redistribute it and/or - modify it under the terms of EITHER: - (1) The GNU Lesser General Public License as published by the Free - Software Foundation; either version 2.1 of the License, or (at - your option) any later version. The text of the GNU Lesser - General Public License is included with this library in the - file GIMPACT-LICENSE-LGPL.TXT. - (2) The BSD-style license that is included with this library in - the file GIMPACT-LICENSE-BSD.TXT. - (3) The zlib/libpng license that is included with this library in - the file GIMPACT-LICENSE-ZLIB.TXT. - - This library 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 files - GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. - ------------------------------------------------------------------------------ -*/ - -#include "gim_memory.h" - -///Macros for sorting. -//! Prototype for comparators -class less_comparator -{ - public: - - template - inline int operator() ( const T& a, const Z& b ) - { - return ( ab?1:0)); - } -}; - -//! Prototype for comparators -class integer_comparator -{ - public: - - template - inline int operator() ( const T& a, const T& b ) - { - return (int)(a-b); - } -}; - -//!Prototype for getting the integer representation of an object -class uint_key_func -{ -public: - template - inline GUINT operator()( const T& a) - { - return (GUINT)a; - } -}; - - -//!Prototype for copying elements -class copy_elements_func -{ -public: - template - inline void operator()(T& a,T& b) - { - a = b; - } -}; - -//!Prototype for copying elements -class memcopy_elements_func -{ -public: - template - inline void operator()(T& a,T& b) - { - gim_simd_memcpy(&a,&b,sizeof(T)); - } -}; - - -//! @{ -struct GIM_RSORT_TOKEN -{ - GUINT m_key; - GUINT m_value; - GIM_RSORT_TOKEN() - { - } - GIM_RSORT_TOKEN(const GIM_RSORT_TOKEN& rtoken) - { - m_key = rtoken.m_key; - m_value = rtoken.m_value; - } - - inline bool operator <(const GIM_RSORT_TOKEN& other) const - { - return (m_key < other.m_key); - } - - inline bool operator >(const GIM_RSORT_TOKEN& other) const - { - return (m_key > other.m_key); - } -}; - -//! Prototype for comparators -class GIM_RSORT_TOKEN_COMPARATOR -{ - public: - - inline int operator()( const GIM_RSORT_TOKEN& a, const GIM_RSORT_TOKEN& b ) - { - return (int)((a.m_key) - (b.m_key)); - } -}; - - - -#define kHist 2048 -// ---- utils for accessing 11-bit quantities -#define D11_0(x) (x & 0x7FF) -#define D11_1(x) (x >> 11 & 0x7FF) -#define D11_2(x) (x >> 22 ) - - - -///Radix sort for unsigned integer keys -inline void gim_radix_sort_rtokens( - GIM_RSORT_TOKEN * array, - GIM_RSORT_TOKEN * sorted, GUINT element_count) -{ - GUINT i; - GUINT b0[kHist * 3]; - GUINT *b1 = b0 + kHist; - GUINT *b2 = b1 + kHist; - for (i = 0; i < kHist * 3; ++i) - { - b0[i] = 0; - } - GUINT fi; - GUINT pos; - for (i = 0; i < element_count; ++i) - { - fi = array[i].m_key; - b0[D11_0(fi)] ++; - b1[D11_1(fi)] ++; - b2[D11_2(fi)] ++; - } - { - GUINT sum0 = 0, sum1 = 0, sum2 = 0; - GUINT tsum; - for (i = 0; i < kHist; ++i) - { - tsum = b0[i] + sum0; - b0[i] = sum0 - 1; - sum0 = tsum; - tsum = b1[i] + sum1; - b1[i] = sum1 - 1; - sum1 = tsum; - tsum = b2[i] + sum2; - b2[i] = sum2 - 1; - sum2 = tsum; - } - } - for (i = 0; i < element_count; ++i) - { - fi = array[i].m_key; - pos = D11_0(fi); - pos = ++b0[pos]; - sorted[pos].m_key = array[i].m_key; - sorted[pos].m_value = array[i].m_value; - } - for (i = 0; i < element_count; ++i) - { - fi = sorted[i].m_key; - pos = D11_1(fi); - pos = ++b1[pos]; - array[pos].m_key = sorted[i].m_key; - array[pos].m_value = sorted[i].m_value; - } - for (i = 0; i < element_count; ++i) - { - fi = array[i].m_key; - pos = D11_2(fi); - pos = ++b2[pos]; - sorted[pos].m_key = array[i].m_key; - sorted[pos].m_value = array[i].m_value; - } -} - - - - -/// Get the sorted tokens from an array. For generic use. Tokens are IRR_RSORT_TOKEN -/*! -*\param array Array of elements to sort -*\param sorted_tokens Tokens of sorted elements -*\param element_count element count -*\param uintkey_macro Functor which retrieves the integer representation of an array element -*/ -template -void gim_radix_sort_array_tokens( - T* array , - GIM_RSORT_TOKEN * sorted_tokens, - GUINT element_count,GETKEY_CLASS uintkey_macro) -{ - GIM_RSORT_TOKEN * _unsorted = (GIM_RSORT_TOKEN *) gim_alloc(sizeof(GIM_RSORT_TOKEN)*element_count); - for (GUINT _i=0;_i -void gim_radix_sort( - T * array, GUINT element_count, - GETKEY_CLASS get_uintkey_macro, COPY_CLASS copy_elements_macro) -{ - GIM_RSORT_TOKEN * _sorted = (GIM_RSORT_TOKEN *) gim_alloc(sizeof(GIM_RSORT_TOKEN)*element_count); - gim_radix_sort_array_tokens(array,_sorted,element_count,get_uintkey_macro); - T * _original_array = (T *) gim_alloc(sizeof(T)*element_count); - gim_simd_memcpy(_original_array,array,sizeof(T)*element_count); - for (GUINT _i=0;_i -bool gim_binary_search_ex( - const T* _array, GUINT _start_i, - GUINT _end_i,GUINT & _result_index, - const KEYCLASS & _search_key, - COMP_CLASS _comp_macro) -{ - GUINT _k; - int _comp_result; - GUINT _i = _start_i; - GUINT _j = _end_i+1; - while (_i < _j) - { - _k = (_j+_i-1)/2; - _comp_result = _comp_macro(_array[_k], _search_key); - if (_comp_result == 0) - { - _result_index = _k; - return true; - } - else if (_comp_result < 0) - { - _i = _k+1; - } - else - { - _j = _k; - } - } - _result_index = _i; - return false; -} - - - -//! Failsafe Iterative binary search,Template version -/*! -If the element is not found, it returns the nearest upper element position, may be the further position after the last element. -\param _array -\param _start_i the beginning of the array -\param _end_i the ending index of the array -\param _search_key Value to find -\param _result_index the index of the found element, or if not found then it will get the index of the closest bigger value -\return true if found, else false -*/ -template -bool gim_binary_search( - const T*_array,GUINT _start_i, - GUINT _end_i,const T & _search_key, - GUINT & _result_index) -{ - GUINT _i = _start_i; - GUINT _j = _end_i+1; - GUINT _k; - while(_i < _j) - { - _k = (_j+_i-1)/2; - if(_array[_k]==_search_key) - { - _result_index = _k; - return true; - } - else if (_array[_k]<_search_key) - { - _i = _k+1; - } - else - { - _j = _k; - } - } - _result_index = _i; - return false; -} - - - -///heap sort from http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Sort/Heap/ -template -void gim_down_heap(T *pArr, GUINT k, GUINT n,COMP_CLASS CompareFunc) -{ - /* PRE: a[k+1..N] is a heap */ - /* POST: a[k..N] is a heap */ - - T temp = pArr[k - 1]; - /* k has child(s) */ - while (k <= n/2) - { - int child = 2*k; - - if ((child < (int)n) && CompareFunc(pArr[child - 1] , pArr[child])<0) - { - child++; - } - /* pick larger child */ - if (CompareFunc(temp , pArr[child - 1])<0) - { - /* move child up */ - pArr[k - 1] = pArr[child - 1]; - k = child; - } - else - { - break; - } - } - pArr[k - 1] = temp; -} /*downHeap*/ - - -template -void gim_heap_sort(T *pArr, GUINT element_count, COMP_CLASS CompareFunc) -{ - /* sort a[0..N-1], N.B. 0 to N-1 */ - GUINT k; - GUINT n = element_count; - for (k = n/2; k > 0; k--) - { - gim_down_heap(pArr, k, n, CompareFunc); - } - - /* a[1..N] is now a heap */ - while ( n>=2 ) - { - gim_swap_elements(pArr,0,n-1); /* largest of a[0..n-1] */ - --n; - /* restore a[1..i-1] heap */ - gim_down_heap(pArr, 1, n, CompareFunc); - } -} - - - - -#endif // GIM_RADIXSORT_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/Gimpact/gim_tri_collision.cpp b/extern/bullet2/BulletCollision/Gimpact/gim_tri_collision.cpp deleted file mode 100644 index 74d734146a7..00000000000 --- a/extern/bullet2/BulletCollision/Gimpact/gim_tri_collision.cpp +++ /dev/null @@ -1,640 +0,0 @@ - -/*! \file gim_tri_collision.h -\author Francisco Len Nßjera -*/ -/* ------------------------------------------------------------------------------ -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371. -email: projectileman@yahoo.com - - This library is free software; you can redistribute it and/or - modify it under the terms of EITHER: - (1) The GNU Lesser General Public License as published by the Free - Software Foundation; either version 2.1 of the License, or (at - your option) any later version. The text of the GNU Lesser - General Public License is included with this library in the - file GIMPACT-LICENSE-LGPL.TXT. - (2) The BSD-style license that is included with this library in - the file GIMPACT-LICENSE-BSD.TXT. - (3) The zlib/libpng license that is included with this library in - the file GIMPACT-LICENSE-ZLIB.TXT. - - This library 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 files - GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details. - ------------------------------------------------------------------------------ -*/ - -#include "gim_tri_collision.h" - - -#define TRI_LOCAL_EPSILON 0.000001f -#define MIN_EDGE_EDGE_DIS 0.00001f - - -class GIM_TRIANGLE_CALCULATION_CACHE -{ -public: - GREAL margin; - btVector3 tu_vertices[3]; - btVector3 tv_vertices[3]; - btVector4 tu_plane; - btVector4 tv_plane; - btVector3 closest_point_u; - btVector3 closest_point_v; - btVector3 edge_edge_dir; - btVector3 distances; - GREAL du[4]; - GREAL du0du1; - GREAL du0du2; - GREAL dv[4]; - GREAL dv0dv1; - GREAL dv0dv2; - btVector3 temp_points[MAX_TRI_CLIPPING]; - btVector3 temp_points1[MAX_TRI_CLIPPING]; - btVector3 contact_points[MAX_TRI_CLIPPING]; - - - - //! if returns false, the faces are paralele - SIMD_FORCE_INLINE bool compute_intervals( - const GREAL &D0, - const GREAL &D1, - const GREAL &D2, - const GREAL &D0D1, - const GREAL &D0D2, - GREAL & scale_edge0, - GREAL & scale_edge1, - GUINT &edge_index0, - GUINT &edge_index1) - { - if(D0D1>0.0f) - { - /* here we know that D0D2<=0.0 */ - /* that is D0, D1 are on the same side, D2 on the other or on the plane */ - scale_edge0 = -D2/(D0-D2); - scale_edge1 = -D1/(D2-D1); - edge_index0 = 2;edge_index1 = 1; - } - else if(D0D2>0.0f) - { - /* here we know that d0d1<=0.0 */ - scale_edge0 = -D0/(D1-D0); - scale_edge1 = -D1/(D2-D1); - edge_index0 = 0;edge_index1 = 1; - } - else if(D1*D2>0.0f || D0!=0.0f) - { - /* here we know that d0d1<=0.0 or that D0!=0.0 */ - scale_edge0 = -D0/(D1-D0); - scale_edge1 = -D2/(D0-D2); - edge_index0 = 0 ;edge_index1 = 2; - } - else - { - return false; - } - return true; - } - - - //! clip triangle - /*! - */ - SIMD_FORCE_INLINE GUINT clip_triangle( - const btVector4 & tri_plane, - const btVector3 * tripoints, - const btVector3 * srcpoints, - btVector3 * clip_points) - { - // edge 0 - - btVector4 edgeplane; - - EDGE_PLANE(tripoints[0],tripoints[1],tri_plane,edgeplane); - - GUINT clipped_count = PLANE_CLIP_TRIANGLE3D( - edgeplane,srcpoints[0],srcpoints[1],srcpoints[2],temp_points); - - if(clipped_count == 0) return 0; - - // edge 1 - - EDGE_PLANE(tripoints[1],tripoints[2],tri_plane,edgeplane); - - clipped_count = PLANE_CLIP_POLYGON3D( - edgeplane,temp_points,clipped_count,temp_points1); - - if(clipped_count == 0) return 0; - - // edge 2 - - EDGE_PLANE(tripoints[2],tripoints[0],tri_plane,edgeplane); - - clipped_count = PLANE_CLIP_POLYGON3D( - edgeplane,temp_points1,clipped_count,clip_points); - - return clipped_count; - - - /*GUINT i0 = (tri_plane.closestAxis()+1)%3; - GUINT i1 = (i0+1)%3; - // edge 0 - btVector3 temp_points[MAX_TRI_CLIPPING]; - btVector3 temp_points1[MAX_TRI_CLIPPING]; - - GUINT clipped_count= PLANE_CLIP_TRIANGLE_GENERIC( - 0,srcpoints[0],srcpoints[1],srcpoints[2],temp_points, - DISTANCE_EDGE(tripoints[0],tripoints[1],i0,i1)); - - - if(clipped_count == 0) return 0; - - // edge 1 - clipped_count = PLANE_CLIP_POLYGON_GENERIC( - 0,temp_points,clipped_count,temp_points1, - DISTANCE_EDGE(tripoints[1],tripoints[2],i0,i1)); - - if(clipped_count == 0) return 0; - - // edge 2 - clipped_count = PLANE_CLIP_POLYGON_GENERIC( - 0,temp_points1,clipped_count,clipped_points, - DISTANCE_EDGE(tripoints[2],tripoints[0],i0,i1)); - - return clipped_count;*/ - } - - SIMD_FORCE_INLINE void sort_isect( - GREAL & isect0,GREAL & isect1,GUINT &e0,GUINT &e1,btVector3 & vec0,btVector3 & vec1) - { - if(isect1=isect_v[1]) // face U casts face V - { - return 1; - } - else if(isect_v[0]<=isect_u[0]) // face V casts face U - { - return 2; - } - // closest points - closest_point_u = up_e1; - closest_point_v = vp_e0; - // calc edges and separation - - if(isect_u[1]+ MIN_EDGE_EDGE_DIS=isect_u[1]) // face V casts face U - { - return 2; - } - else if(isect_u[0]<=isect_v[0]) // face U casts face V - { - return 1; - } - // closest points - closest_point_u = up_e0; - closest_point_v = vp_e1; - // calc edges and separation - - if(isect_v[1]+MIN_EDGE_EDGE_DIS0.0f && du0du2>0.0f) // same sign on all of them + not equal 0 ? - { - if(du[0]<0) //we need test behind the triangle plane - { - distances[0] = GIM_MAX3(du[0],du[1],du[2]); - distances[0] = -distances[0]; - if(distances[0]>margin) return false; //never intersect - - //reorder triangle v - VEC_SWAP(tv_vertices[0],tv_vertices[1]); - VEC_SCALE_4(tv_plane,-1.0f,tv_plane); - } - else - { - distances[0] = GIM_MIN3(du[0],du[1],du[2]); - if(distances[0]>margin) return false; //never intersect - } - } - else - { - //Look if we need to invert the triangle - distances[0] = (du[0]+du[1]+du[2])/3.0f; //centroid - - if(distances[0]<0.0f) - { - //reorder triangle v - VEC_SWAP(tv_vertices[0],tv_vertices[1]); - VEC_SCALE_4(tv_plane,-1.0f,tv_plane); - - distances[0] = GIM_MAX3(du[0],du[1],du[2]); - distances[0] = -distances[0]; - } - else - { - distances[0] = GIM_MIN3(du[0],du[1],du[2]); - } - } - - - // plane U vs V points - - TRIANGLE_PLANE(tu_vertices[0],tu_vertices[1],tu_vertices[2],tu_plane); - - dv[0] = DISTANCE_PLANE_POINT(tu_plane,tv_vertices[0]); - dv[1] = DISTANCE_PLANE_POINT(tu_plane,tv_vertices[1]); - dv[2] = DISTANCE_PLANE_POINT(tu_plane,tv_vertices[2]); - - dv0dv1 = dv[0] * dv[1]; - dv0dv2 = dv[0] * dv[2]; - - - if(dv0dv1>0.0f && dv0dv2>0.0f) // same sign on all of them + not equal 0 ? - { - if(dv[0]<0) //we need test behind the triangle plane - { - distances[1] = GIM_MAX3(dv[0],dv[1],dv[2]); - distances[1] = -distances[1]; - if(distances[1]>margin) return false; //never intersect - - //reorder triangle u - VEC_SWAP(tu_vertices[0],tu_vertices[1]); - VEC_SCALE_4(tu_plane,-1.0f,tu_plane); - } - else - { - distances[1] = GIM_MIN3(dv[0],dv[1],dv[2]); - if(distances[1]>margin) return false; //never intersect - } - } - else - { - //Look if we need to invert the triangle - distances[1] = (dv[0]+dv[1]+dv[2])/3.0f; //centroid - - if(distances[1]<0.0f) - { - //reorder triangle v - VEC_SWAP(tu_vertices[0],tu_vertices[1]); - VEC_SCALE_4(tu_plane,-1.0f,tu_plane); - - distances[1] = GIM_MAX3(dv[0],dv[1],dv[2]); - distances[1] = -distances[1]; - } - else - { - distances[1] = GIM_MIN3(dv[0],dv[1],dv[2]); - } - } - - GUINT bl; - /* bl = cross_line_intersection_test(); - if(bl==3) - { - //take edge direction too - bl = distances.maxAxis(); - } - else - {*/ - bl = 0; - if(distances[0]margin) return false; - - contacts.m_penetration_depth = -distances[2] + margin; - contacts.m_points[0] = closest_point_v; - contacts.m_point_count = 1; - VEC_COPY(contacts.m_separating_normal,edge_edge_dir); - - return true; - } - - //clip face against other - - - GUINT point_count; - //TODO - if(bl == 0) //clip U points against V - { - point_count = clip_triangle(tv_plane,tv_vertices,tu_vertices,contact_points); - if(point_count == 0) return false; - contacts.merge_points(tv_plane,margin,contact_points,point_count); - } - else //clip V points against U - { - point_count = clip_triangle(tu_plane,tu_vertices,tv_vertices,contact_points); - if(point_count == 0) return false; - contacts.merge_points(tu_plane,margin,contact_points,point_count); - contacts.m_separating_normal *= -1.f; - } - if(contacts.m_point_count == 0) return false; - return true; - } - -}; - - -/*class GIM_TRIANGLE_CALCULATION_CACHE -{ -public: - GREAL margin; - GUINT clipped_count; - btVector3 tu_vertices[3]; - btVector3 tv_vertices[3]; - btVector3 temp_points[MAX_TRI_CLIPPING]; - btVector3 temp_points1[MAX_TRI_CLIPPING]; - btVector3 clipped_points[MAX_TRI_CLIPPING]; - GIM_TRIANGLE_CONTACT_DATA contacts1; - GIM_TRIANGLE_CONTACT_DATA contacts2; - - - //! clip triangle - GUINT clip_triangle( - const btVector4 & tri_plane, - const btVector3 * tripoints, - const btVector3 * srcpoints, - btVector3 * clipped_points) - { - // edge 0 - - btVector4 edgeplane; - - EDGE_PLANE(tripoints[0],tripoints[1],tri_plane,edgeplane); - - GUINT clipped_count = PLANE_CLIP_TRIANGLE3D( - edgeplane,srcpoints[0],srcpoints[1],srcpoints[2],temp_points); - - if(clipped_count == 0) return 0; - - // edge 1 - - EDGE_PLANE(tripoints[1],tripoints[2],tri_plane,edgeplane); - - clipped_count = PLANE_CLIP_POLYGON3D( - edgeplane,temp_points,clipped_count,temp_points1); - - if(clipped_count == 0) return 0; - - // edge 2 - - EDGE_PLANE(tripoints[2],tripoints[0],tri_plane,edgeplane); - - clipped_count = PLANE_CLIP_POLYGON3D( - edgeplane,temp_points1,clipped_count,clipped_points); - - return clipped_count; - } - - - - - //! collides only on one side - bool triangle_collision( - const btVector3 & u0, - const btVector3 & u1, - const btVector3 & u2, - GREAL margin_u, - const btVector3 & v0, - const btVector3 & v1, - const btVector3 & v2, - GREAL margin_v, - GIM_TRIANGLE_CONTACT_DATA & contacts) - { - - margin = margin_u + margin_v; - - - tu_vertices[0] = u0; - tu_vertices[1] = u1; - tu_vertices[2] = u2; - - tv_vertices[0] = v0; - tv_vertices[1] = v1; - tv_vertices[2] = v2; - - //create planes - // plane v vs U points - - - TRIANGLE_PLANE(tv_vertices[0],tv_vertices[1],tv_vertices[2],contacts1.m_separating_normal); - - clipped_count = clip_triangle( - contacts1.m_separating_normal,tv_vertices,tu_vertices,clipped_points); - - if(clipped_count == 0 ) - { - return false;//Reject - } - - //find most deep interval face1 - contacts1.merge_points(contacts1.m_separating_normal,margin,clipped_points,clipped_count); - if(contacts1.m_point_count == 0) return false; // too far - - //Normal pointing to triangle1 - //contacts1.m_separating_normal *= -1.f; - - //Clip tri1 by tri2 edges - - TRIANGLE_PLANE(tu_vertices[0],tu_vertices[1],tu_vertices[2],contacts2.m_separating_normal); - - clipped_count = clip_triangle( - contacts2.m_separating_normal,tu_vertices,tv_vertices,clipped_points); - - if(clipped_count == 0 ) - { - return false;//Reject - } - - //find most deep interval face1 - contacts2.merge_points(contacts2.m_separating_normal,margin,clipped_points,clipped_count); - if(contacts2.m_point_count == 0) return false; // too far - - contacts2.m_separating_normal *= -1.f; - - ////check most dir for contacts - if(contacts2.m_penetration_depth - SIMD_FORCE_INLINE void mergepoints_generic(const CLASS_PLANE & plane, - GREAL margin, const btVector3 * points, GUINT point_count, DISTANCE_FUNC distance_func) - { - m_point_count = 0; - m_penetration_depth= -1000.0f; - - GUINT point_indices[MAX_TRI_CLIPPING]; - - GUINT _k; - - for(_k=0;_k=0.0f) - { - if(_dist>m_penetration_depth) - { - m_penetration_depth = _dist; - point_indices[0] = _k; - m_point_count=1; - } - else if((_dist+G_EPSILON)>=m_penetration_depth) - { - point_indices[m_point_count] = _k; - m_point_count++; - } - } - } - - for( _k=0;_k u*axe1[i1] + ((vecproj[i2] - u*axe1[i2])/axe2[i2])*axe2[i1] = vecproj[i1] - - --> u*axe1[i1] + vecproj[i2]*axe2[i1]/axe2[i2] - u*axe1[i2]*axe2[i1]/axe2[i2] = vecproj[i1] - - --> u*(axe1[i1] - axe1[i2]*axe2[i1]/axe2[i2]) = vecproj[i1] - vecproj[i2]*axe2[i1]/axe2[i2] - - --> u*((axe1[i1]*axe2[i2] - axe1[i2]*axe2[i1])/axe2[i2]) = (vecproj[i1]*axe2[i2] - vecproj[i2]*axe2[i1])/axe2[i2] - - --> u*(axe1[i1]*axe2[i2] - axe1[i2]*axe2[i1]) = vecproj[i1]*axe2[i2] - vecproj[i2]*axe2[i1] - - --> u = (vecproj[i1]*axe2[i2] - vecproj[i2]*axe2[i1]) /(axe1[i1]*axe2[i2] - axe1[i2]*axe2[i1]) - -if 0.0<= u+v <=1.0 then they are inside of triangle - - \return false if the point is outside of triangle.This function doesn't take the margin - */ - SIMD_FORCE_INLINE bool get_uv_parameters( - const btVector3 & point, - const btVector3 & tri_plane, - GREAL & u, GREAL & v) const - { - btVector3 _axe1 = m_vertices[1]-m_vertices[0]; - btVector3 _axe2 = m_vertices[2]-m_vertices[0]; - btVector3 _vecproj = point - m_vertices[0]; - GUINT _i1 = (tri_plane.closestAxis()+1)%3; - GUINT _i2 = (_i1+1)%3; - if(btFabs(_axe2[_i2])G_EPSILON) - { - return false; - } - } - return true; - } - - //! is point in triangle beam? - /*! - Test if point is in triangle, with m_margin tolerance - */ - SIMD_FORCE_INLINE bool is_point_inside(const btVector3 & point, const btVector3 & tri_normal) const - { - //Test with edge 0 - btVector4 edge_plane; - this->get_edge_plane(0,tri_normal,edge_plane); - GREAL dist = DISTANCE_PLANE_POINT(edge_plane,point); - if(dist-m_margin>0.0f) return false; // outside plane - - this->get_edge_plane(1,tri_normal,edge_plane); - dist = DISTANCE_PLANE_POINT(edge_plane,point); - if(dist-m_margin>0.0f) return false; // outside plane - - this->get_edge_plane(2,tri_normal,edge_plane); - dist = DISTANCE_PLANE_POINT(edge_plane,point); - if(dist-m_margin>0.0f) return false; // outside plane - return true; - } - - - //! Bidireccional ray collision - SIMD_FORCE_INLINE bool ray_collision( - const btVector3 & vPoint, - const btVector3 & vDir, btVector3 & pout, btVector3 & triangle_normal, - GREAL & tparam, GREAL tmax = G_REAL_INFINITY) - { - btVector4 faceplane; - { - btVector3 dif1 = m_vertices[1] - m_vertices[0]; - btVector3 dif2 = m_vertices[2] - m_vertices[0]; - VEC_CROSS(faceplane,dif1,dif2); - faceplane[3] = m_vertices[0].dot(faceplane); - } - - GUINT res = LINE_PLANE_COLLISION(faceplane,vDir,vPoint,pout,tparam, btScalar(0), tmax); - if(res == 0) return false; - if(! is_point_inside(pout,faceplane)) return false; - - if(res==2) //invert normal - { - triangle_normal.setValue(-faceplane[0],-faceplane[1],-faceplane[2]); - } - else - { - triangle_normal.setValue(faceplane[0],faceplane[1],faceplane[2]); - } - - VEC_NORMALIZE(triangle_normal); - - return true; - } - - - //! one direccion ray collision - SIMD_FORCE_INLINE bool ray_collision_front_side( - const btVector3 & vPoint, - const btVector3 & vDir, btVector3 & pout, btVector3 & triangle_normal, - GREAL & tparam, GREAL tmax = G_REAL_INFINITY) - { - btVector4 faceplane; - { - btVector3 dif1 = m_vertices[1] - m_vertices[0]; - btVector3 dif2 = m_vertices[2] - m_vertices[0]; - VEC_CROSS(faceplane,dif1,dif2); - faceplane[3] = m_vertices[0].dot(faceplane); - } - - GUINT res = LINE_PLANE_COLLISION(faceplane,vDir,vPoint,pout,tparam, btScalar(0), tmax); - if(res != 1) return false; - - if(!is_point_inside(pout,faceplane)) return false; - - triangle_normal.setValue(faceplane[0],faceplane[1],faceplane[2]); - - VEC_NORMALIZE(triangle_normal); - - return true; - } - -}; - - - - -#endif // GIM_TRI_COLLISION_H_INCLUDED diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp deleted file mode 100644 index 9ee83e7d561..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp +++ /dev/null @@ -1,236 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btContinuousConvexCollision.h" -#include "BulletCollision/CollisionShapes/btConvexShape.h" -#include "BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h" -#include "LinearMath/btTransformUtil.h" -#include "BulletCollision/CollisionShapes/btSphereShape.h" - -#include "btGjkPairDetector.h" -#include "btPointCollector.h" - - - -btContinuousConvexCollision::btContinuousConvexCollision ( const btConvexShape* convexA,const btConvexShape* convexB,btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* penetrationDepthSolver) -:m_simplexSolver(simplexSolver), -m_penetrationDepthSolver(penetrationDepthSolver), -m_convexA(convexA),m_convexB(convexB) -{ -} - -/// This maximum should not be necessary. It allows for untested/degenerate cases in production code. -/// You don't want your game ever to lock-up. -#define MAX_ITERATIONS 64 - -bool btContinuousConvexCollision::calcTimeOfImpact( - const btTransform& fromA, - const btTransform& toA, - const btTransform& fromB, - const btTransform& toB, - CastResult& result) -{ - - m_simplexSolver->reset(); - - /// compute linear and angular velocity for this interval, to interpolate - btVector3 linVelA,angVelA,linVelB,angVelB; - btTransformUtil::calculateVelocity(fromA,toA,btScalar(1.),linVelA,angVelA); - btTransformUtil::calculateVelocity(fromB,toB,btScalar(1.),linVelB,angVelB); - - - btScalar boundingRadiusA = m_convexA->getAngularMotionDisc(); - btScalar boundingRadiusB = m_convexB->getAngularMotionDisc(); - - btScalar maxAngularProjectedVelocity = angVelA.length() * boundingRadiusA + angVelB.length() * boundingRadiusB; - btVector3 relLinVel = (linVelB-linVelA); - - btScalar relLinVelocLength = (linVelB-linVelA).length(); - - if ((relLinVelocLength+maxAngularProjectedVelocity) == 0.f) - return false; - - - btScalar radius = btScalar(0.001); - - btScalar lambda = btScalar(0.); - btVector3 v(1,0,0); - - int maxIter = MAX_ITERATIONS; - - btVector3 n; - n.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); - bool hasResult = false; - btVector3 c; - - btScalar lastLambda = lambda; - //btScalar epsilon = btScalar(0.001); - - int numIter = 0; - //first solution, using GJK - - - btTransform identityTrans; - identityTrans.setIdentity(); - - btSphereShape raySphere(btScalar(0.0)); - raySphere.setMargin(btScalar(0.)); - - -// result.drawCoordSystem(sphereTr); - - btPointCollector pointCollector1; - - { - - btGjkPairDetector gjk(m_convexA,m_convexB,m_convexA->getShapeType(),m_convexB->getShapeType(),m_convexA->getMargin(),m_convexB->getMargin(),m_simplexSolver,m_penetrationDepthSolver); - btGjkPairDetector::ClosestPointInput input; - - //we don't use margins during CCD - // gjk.setIgnoreMargin(true); - - input.m_transformA = fromA; - input.m_transformB = fromB; - gjk.getClosestPoints(input,pointCollector1,0); - - hasResult = pointCollector1.m_hasResult; - c = pointCollector1.m_pointInWorld; - } - - if (hasResult) - { - btScalar dist; - dist = pointCollector1.m_distance; - n = pointCollector1.m_normalOnBInWorld; - - btScalar projectedLinearVelocity = relLinVel.dot(n); - - //not close enough - while (dist > radius) - { - if (result.m_debugDrawer) - { - result.m_debugDrawer->drawSphere(c,0.2f,btVector3(1,1,1)); - } - numIter++; - if (numIter > maxIter) - { - return false; //todo: report a failure - } - btScalar dLambda = btScalar(0.); - - projectedLinearVelocity = relLinVel.dot(n); - - //calculate safe moving fraction from distance / (linear+rotational velocity) - - //btScalar clippedDist = GEN_min(angularConservativeRadius,dist); - //btScalar clippedDist = dist; - - //don't report time of impact for motion away from the contact normal (or causes minor penetration) - if ((projectedLinearVelocity+ maxAngularProjectedVelocity)<=SIMD_EPSILON) - return false; - - dLambda = dist / (projectedLinearVelocity+ maxAngularProjectedVelocity); - - - - lambda = lambda + dLambda; - - if (lambda > btScalar(1.)) - return false; - - if (lambda < btScalar(0.)) - return false; - - - //todo: next check with relative epsilon - if (lambda <= lastLambda) - { - return false; - //n.setValue(0,0,0); - break; - } - lastLambda = lambda; - - - - //interpolate to next lambda - btTransform interpolatedTransA,interpolatedTransB,relativeTrans; - - btTransformUtil::integrateTransform(fromA,linVelA,angVelA,lambda,interpolatedTransA); - btTransformUtil::integrateTransform(fromB,linVelB,angVelB,lambda,interpolatedTransB); - relativeTrans = interpolatedTransB.inverseTimes(interpolatedTransA); - - if (result.m_debugDrawer) - { - result.m_debugDrawer->drawSphere(interpolatedTransA.getOrigin(),0.2f,btVector3(1,0,0)); - } - - result.DebugDraw( lambda ); - - btPointCollector pointCollector; - btGjkPairDetector gjk(m_convexA,m_convexB,m_simplexSolver,m_penetrationDepthSolver); - btGjkPairDetector::ClosestPointInput input; - input.m_transformA = interpolatedTransA; - input.m_transformB = interpolatedTransB; - gjk.getClosestPoints(input,pointCollector,0); - if (pointCollector.m_hasResult) - { - if (pointCollector.m_distance < btScalar(0.)) - { - //degenerate ?! - result.m_fraction = lastLambda; - n = pointCollector.m_normalOnBInWorld; - result.m_normal=n;//.setValue(1,1,1);// = n; - result.m_hitPoint = pointCollector.m_pointInWorld; - return true; - } - c = pointCollector.m_pointInWorld; - n = pointCollector.m_normalOnBInWorld; - dist = pointCollector.m_distance; - } else - { - //?? - return false; - } - - - } - - if ((projectedLinearVelocity+ maxAngularProjectedVelocity)<=result.m_allowedPenetration)//SIMD_EPSILON) - return false; - - result.m_fraction = lambda; - result.m_normal = n; - result.m_hitPoint = c; - return true; - } - - return false; - -/* -//todo: - //if movement away from normal, discard result - btVector3 move = transBLocalTo.getOrigin() - transBLocalFrom.getOrigin(); - if (result.m_fraction < btScalar(1.)) - { - if (move.dot(result.m_normal) <= btScalar(0.)) - { - } - } -*/ - -} diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h deleted file mode 100644 index 28c2b4d6156..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h +++ /dev/null @@ -1,52 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#ifndef CONTINUOUS_COLLISION_CONVEX_CAST_H -#define CONTINUOUS_COLLISION_CONVEX_CAST_H - -#include "btConvexCast.h" -#include "btSimplexSolverInterface.h" -class btConvexPenetrationDepthSolver; -class btConvexShape; - -/// btContinuousConvexCollision implements angular and linear time of impact for convex objects. -/// Based on Brian Mirtich's Conservative Advancement idea (PhD thesis). -/// Algorithm operates in worldspace, in order to keep inbetween motion globally consistent. -/// It uses GJK at the moment. Future improvement would use minkowski sum / supporting vertex, merging innerloops -class btContinuousConvexCollision : public btConvexCast -{ - btSimplexSolverInterface* m_simplexSolver; - btConvexPenetrationDepthSolver* m_penetrationDepthSolver; - const btConvexShape* m_convexA; - const btConvexShape* m_convexB; - - -public: - - btContinuousConvexCollision (const btConvexShape* shapeA,const btConvexShape* shapeB ,btSimplexSolverInterface* simplexSolver,btConvexPenetrationDepthSolver* penetrationDepthSolver); - - virtual bool calcTimeOfImpact( - const btTransform& fromA, - const btTransform& toA, - const btTransform& fromB, - const btTransform& toB, - CastResult& result); - - -}; - -#endif //CONTINUOUS_COLLISION_CONVEX_CAST_H - diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp deleted file mode 100644 index d2a1310b232..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btConvexCast.h" - -btConvexCast::~btConvexCast() -{ -} diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexCast.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexCast.h deleted file mode 100644 index b0bce341e41..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexCast.h +++ /dev/null @@ -1,73 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#ifndef CONVEX_CAST_H -#define CONVEX_CAST_H - -#include "LinearMath/btTransform.h" -#include "LinearMath/btVector3.h" -#include "LinearMath/btScalar.h" -class btMinkowskiSumShape; -#include "LinearMath/btIDebugDraw.h" - -/// btConvexCast is an interface for Casting -class btConvexCast -{ -public: - - - virtual ~btConvexCast(); - - ///RayResult stores the closest result - /// alternatively, add a callback method to decide about closest/all results - struct CastResult - { - //virtual bool addRayResult(const btVector3& normal,btScalar fraction) = 0; - - virtual void DebugDraw(btScalar fraction) {(void)fraction;} - virtual void drawCoordSystem(const btTransform& trans) {(void)trans;} - - CastResult() - :m_fraction(btScalar(BT_LARGE_FLOAT)), - m_debugDrawer(0), - m_allowedPenetration(btScalar(0)) - { - } - - - virtual ~CastResult() {}; - - btTransform m_hitTransformA; - btTransform m_hitTransformB; - btVector3 m_normal; - btVector3 m_hitPoint; - btScalar m_fraction; //input and output - btIDebugDraw* m_debugDrawer; - btScalar m_allowedPenetration; - - }; - - - /// cast a convex against another convex object - virtual bool calcTimeOfImpact( - const btTransform& fromA, - const btTransform& toA, - const btTransform& fromB, - const btTransform& toB, - CastResult& result) = 0; -}; - -#endif //CONVEX_CAST_H diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h deleted file mode 100644 index 7e3fde8e291..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#ifndef __CONVEX_PENETRATION_DEPTH_H -#define __CONVEX_PENETRATION_DEPTH_H - -class btStackAlloc; -class btVector3; -#include "btSimplexSolverInterface.h" -class btConvexShape; -class btTransform; - -///ConvexPenetrationDepthSolver provides an interface for penetration depth calculation. -class btConvexPenetrationDepthSolver -{ -public: - - virtual ~btConvexPenetrationDepthSolver() {}; - virtual bool calcPenDepth( btSimplexSolverInterface& simplexSolver, - const btConvexShape* convexA,const btConvexShape* convexB, - const btTransform& transA,const btTransform& transB, - btVector3& v, btVector3& pa, btVector3& pb, - class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc - ) = 0; - - -}; -#endif //CONVEX_PENETRATION_DEPTH_H - diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h deleted file mode 100644 index bc711ad495c..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h +++ /dev/null @@ -1,89 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#ifndef DISCRETE_COLLISION_DETECTOR1_INTERFACE_H -#define DISCRETE_COLLISION_DETECTOR1_INTERFACE_H -#include "LinearMath/btTransform.h" -#include "LinearMath/btVector3.h" -class btStackAlloc; - -/// This interface is made to be used by an iterative approach to do TimeOfImpact calculations -/// This interface allows to query for closest points and penetration depth between two (convex) objects -/// the closest point is on the second object (B), and the normal points from the surface on B towards A. -/// distance is between closest points on B and closest point on A. So you can calculate closest point on A -/// by taking closestPointInA = closestPointInB + m_distance * m_normalOnSurfaceB -struct btDiscreteCollisionDetectorInterface -{ - - struct Result - { - - virtual ~Result(){} - - ///setShapeIdentifiersA/B provides experimental support for per-triangle material / custom material combiner - virtual void setShapeIdentifiersA(int partId0,int index0)=0; - virtual void setShapeIdentifiersB(int partId1,int index1)=0; - virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth)=0; - }; - - struct ClosestPointInput - { - ClosestPointInput() - :m_maximumDistanceSquared(btScalar(BT_LARGE_FLOAT)), - m_stackAlloc(0) - { - } - - btTransform m_transformA; - btTransform m_transformB; - btScalar m_maximumDistanceSquared; - btStackAlloc* m_stackAlloc; - }; - - virtual ~btDiscreteCollisionDetectorInterface() {}; - - // - // give either closest points (distance > 0) or penetration (distance) - // the normal always points from B towards A - // - virtual void getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults=false) = 0; - -}; - -struct btStorageResult : public btDiscreteCollisionDetectorInterface::Result -{ - btVector3 m_normalOnSurfaceB; - btVector3 m_closestPointInB; - btScalar m_distance; //negative means penetration ! - - btStorageResult() : m_distance(btScalar(BT_LARGE_FLOAT)) - { - - } - virtual ~btStorageResult() {}; - - virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth) - { - if (depth < m_distance) - { - m_normalOnSurfaceB = normalOnBInWorld; - m_closestPointInB = pointInWorld; - m_distance = depth; - } - } -}; - -#endif //DISCRETE_COLLISION_DETECTOR_INTERFACE1_H diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp deleted file mode 100644 index bef697a0a11..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp +++ /dev/null @@ -1,176 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#include "btGjkConvexCast.h" -#include "BulletCollision/CollisionShapes/btSphereShape.h" -#include "btGjkPairDetector.h" -#include "btPointCollector.h" -#include "LinearMath/btTransformUtil.h" - -#ifdef BT_USE_DOUBLE_PRECISION -#define MAX_ITERATIONS 64 -#else -#define MAX_ITERATIONS 32 -#endif - -btGjkConvexCast::btGjkConvexCast(const btConvexShape* convexA,const btConvexShape* convexB,btSimplexSolverInterface* simplexSolver) -:m_simplexSolver(simplexSolver), -m_convexA(convexA), -m_convexB(convexB) -{ -} - -bool btGjkConvexCast::calcTimeOfImpact( - const btTransform& fromA, - const btTransform& toA, - const btTransform& fromB, - const btTransform& toB, - CastResult& result) -{ - - - m_simplexSolver->reset(); - - /// compute linear velocity for this interval, to interpolate - //assume no rotation/angular velocity, assert here? - btVector3 linVelA,linVelB; - linVelA = toA.getOrigin()-fromA.getOrigin(); - linVelB = toB.getOrigin()-fromB.getOrigin(); - - btScalar radius = btScalar(0.001); - btScalar lambda = btScalar(0.); - btVector3 v(1,0,0); - - int maxIter = MAX_ITERATIONS; - - btVector3 n; - n.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); - bool hasResult = false; - btVector3 c; - btVector3 r = (linVelA-linVelB); - - btScalar lastLambda = lambda; - //btScalar epsilon = btScalar(0.001); - - int numIter = 0; - //first solution, using GJK - - - btTransform identityTrans; - identityTrans.setIdentity(); - - -// result.drawCoordSystem(sphereTr); - - btPointCollector pointCollector; - - - btGjkPairDetector gjk(m_convexA,m_convexB,m_simplexSolver,0);//m_penetrationDepthSolver); - btGjkPairDetector::ClosestPointInput input; - - //we don't use margins during CCD - // gjk.setIgnoreMargin(true); - - input.m_transformA = fromA; - input.m_transformB = fromB; - gjk.getClosestPoints(input,pointCollector,0); - - hasResult = pointCollector.m_hasResult; - c = pointCollector.m_pointInWorld; - - if (hasResult) - { - btScalar dist; - dist = pointCollector.m_distance; - n = pointCollector.m_normalOnBInWorld; - - - - //not close enough - while (dist > radius) - { - numIter++; - if (numIter > maxIter) - { - return false; //todo: report a failure - } - btScalar dLambda = btScalar(0.); - - btScalar projectedLinearVelocity = r.dot(n); - - dLambda = dist / (projectedLinearVelocity); - - lambda = lambda - dLambda; - - if (lambda > btScalar(1.)) - return false; - - if (lambda < btScalar(0.)) - return false; - - //todo: next check with relative epsilon - if (lambda <= lastLambda) - { - return false; - //n.setValue(0,0,0); - break; - } - lastLambda = lambda; - - //interpolate to next lambda - result.DebugDraw( lambda ); - input.m_transformA.getOrigin().setInterpolate3(fromA.getOrigin(),toA.getOrigin(),lambda); - input.m_transformB.getOrigin().setInterpolate3(fromB.getOrigin(),toB.getOrigin(),lambda); - - gjk.getClosestPoints(input,pointCollector,0); - if (pointCollector.m_hasResult) - { - if (pointCollector.m_distance < btScalar(0.)) - { - result.m_fraction = lastLambda; - n = pointCollector.m_normalOnBInWorld; - result.m_normal=n; - result.m_hitPoint = pointCollector.m_pointInWorld; - return true; - } - c = pointCollector.m_pointInWorld; - n = pointCollector.m_normalOnBInWorld; - dist = pointCollector.m_distance; - } else - { - //?? - return false; - } - - } - - //is n normalized? - //don't report time of impact for motion away from the contact normal (or causes minor penetration) - if (n.dot(r)>=-result.m_allowedPenetration) - return false; - - result.m_fraction = lambda; - result.m_normal = n; - result.m_hitPoint = c; - return true; - } - - return false; - - -} - diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h deleted file mode 100644 index a977c9e83f7..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#ifndef GJK_CONVEX_CAST_H -#define GJK_CONVEX_CAST_H - -#include "BulletCollision/CollisionShapes/btCollisionMargin.h" - -#include "LinearMath/btVector3.h" -#include "btConvexCast.h" -class btConvexShape; -class btMinkowskiSumShape; -#include "btSimplexSolverInterface.h" - -///GjkConvexCast performs a raycast on a convex object using support mapping. -class btGjkConvexCast : public btConvexCast -{ - btSimplexSolverInterface* m_simplexSolver; - const btConvexShape* m_convexA; - const btConvexShape* m_convexB; - -public: - - btGjkConvexCast(const btConvexShape* convexA,const btConvexShape* convexB,btSimplexSolverInterface* simplexSolver); - - /// cast a convex against another convex object - virtual bool calcTimeOfImpact( - const btTransform& fromA, - const btTransform& toA, - const btTransform& fromB, - const btTransform& toB, - CastResult& result); - -}; - -#endif //GJK_CONVEX_CAST_H diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp deleted file mode 100644 index f74261d4b21..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp +++ /dev/null @@ -1,989 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2008 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the -use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not -claim that you wrote the original software. If you use this software in a -product, an acknowledgment in the product documentation would be appreciated -but is not required. -2. Altered source versions must be plainly marked as such, and must not be -misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -/* -GJK-EPA collision solver by Nathanael Presson, 2008 -*/ -#include "BulletCollision/CollisionShapes/btConvexInternalShape.h" -#include "BulletCollision/CollisionShapes/btSphereShape.h" -#include "btGjkEpa2.h" - -#if defined(DEBUG) || defined (_DEBUG) -#include //for debug printf -#ifdef __SPU__ -#include -#define printf spu_printf -#endif //__SPU__ -#endif - -namespace gjkepa2_impl -{ - - // Config - - /* GJK */ -#define GJK_MAX_ITERATIONS 128 -#define GJK_ACCURARY ((btScalar)0.0001) -#define GJK_MIN_DISTANCE ((btScalar)0.0001) -#define GJK_DUPLICATED_EPS ((btScalar)0.0001) -#define GJK_SIMPLEX2_EPS ((btScalar)0.0) -#define GJK_SIMPLEX3_EPS ((btScalar)0.0) -#define GJK_SIMPLEX4_EPS ((btScalar)0.0) - - /* EPA */ -#define EPA_MAX_VERTICES 64 -#define EPA_MAX_FACES (EPA_MAX_VERTICES*2) -#define EPA_MAX_ITERATIONS 255 -#define EPA_ACCURACY ((btScalar)0.0001) -#define EPA_FALLBACK (10*EPA_ACCURACY) -#define EPA_PLANE_EPS ((btScalar)0.00001) -#define EPA_INSIDE_EPS ((btScalar)0.01) - - - // Shorthands - typedef unsigned int U; - typedef unsigned char U1; - - // MinkowskiDiff - struct MinkowskiDiff - { - const btConvexShape* m_shapes[2]; - btMatrix3x3 m_toshape1; - btTransform m_toshape0; -#ifdef __SPU__ - bool m_enableMargin; -#else - btVector3 (btConvexShape::*Ls)(const btVector3&) const; -#endif//__SPU__ - - - MinkowskiDiff() - { - - } -#ifdef __SPU__ - void EnableMargin(bool enable) - { - m_enableMargin = enable; - } - inline btVector3 Support0(const btVector3& d) const - { - if (m_enableMargin) - { - return m_shapes[0]->localGetSupportVertexNonVirtual(d); - } else - { - return m_shapes[0]->localGetSupportVertexWithoutMarginNonVirtual(d); - } - } - inline btVector3 Support1(const btVector3& d) const - { - if (m_enableMargin) - { - return m_toshape0*(m_shapes[1]->localGetSupportVertexNonVirtual(m_toshape1*d)); - } else - { - return m_toshape0*(m_shapes[1]->localGetSupportVertexWithoutMarginNonVirtual(m_toshape1*d)); - } - } -#else - void EnableMargin(bool enable) - { - if(enable) - Ls=&btConvexShape::localGetSupportVertexNonVirtual; - else - Ls=&btConvexShape::localGetSupportVertexWithoutMarginNonVirtual; - } - inline btVector3 Support0(const btVector3& d) const - { - return(((m_shapes[0])->*(Ls))(d)); - } - inline btVector3 Support1(const btVector3& d) const - { - return(m_toshape0*((m_shapes[1])->*(Ls))(m_toshape1*d)); - } -#endif //__SPU__ - - inline btVector3 Support(const btVector3& d) const - { - return(Support0(d)-Support1(-d)); - } - btVector3 Support(const btVector3& d,U index) const - { - if(index) - return(Support1(d)); - else - return(Support0(d)); - } - }; - - typedef MinkowskiDiff tShape; - - - // GJK - struct GJK - { - /* Types */ - struct sSV - { - btVector3 d,w; - }; - struct sSimplex - { - sSV* c[4]; - btScalar p[4]; - U rank; - }; - struct eStatus { enum _ { - Valid, - Inside, - Failed };}; - /* Fields */ - tShape m_shape; - btVector3 m_ray; - btScalar m_distance; - sSimplex m_simplices[2]; - sSV m_store[4]; - sSV* m_free[4]; - U m_nfree; - U m_current; - sSimplex* m_simplex; - eStatus::_ m_status; - /* Methods */ - GJK() - { - Initialize(); - } - void Initialize() - { - m_ray = btVector3(0,0,0); - m_nfree = 0; - m_status = eStatus::Failed; - m_current = 0; - m_distance = 0; - } - eStatus::_ Evaluate(const tShape& shapearg,const btVector3& guess) - { - U iterations=0; - btScalar sqdist=0; - btScalar alpha=0; - btVector3 lastw[4]; - U clastw=0; - /* Initialize solver */ - m_free[0] = &m_store[0]; - m_free[1] = &m_store[1]; - m_free[2] = &m_store[2]; - m_free[3] = &m_store[3]; - m_nfree = 4; - m_current = 0; - m_status = eStatus::Valid; - m_shape = shapearg; - m_distance = 0; - /* Initialize simplex */ - m_simplices[0].rank = 0; - m_ray = guess; - const btScalar sqrl= m_ray.length2(); - appendvertice(m_simplices[0],sqrl>0?-m_ray:btVector3(1,0,0)); - m_simplices[0].p[0] = 1; - m_ray = m_simplices[0].c[0]->w; - sqdist = sqrl; - lastw[0] = - lastw[1] = - lastw[2] = - lastw[3] = m_ray; - /* Loop */ - do { - const U next=1-m_current; - sSimplex& cs=m_simplices[m_current]; - sSimplex& ns=m_simplices[next]; - /* Check zero */ - const btScalar rl=m_ray.length(); - if(rlw; - bool found=false; - for(U i=0;i<4;++i) - { - if((w-lastw[i]).length2()w, - cs.c[1]->w, - weights,mask);break; - case 3: sqdist=projectorigin( cs.c[0]->w, - cs.c[1]->w, - cs.c[2]->w, - weights,mask);break; - case 4: sqdist=projectorigin( cs.c[0]->w, - cs.c[1]->w, - cs.c[2]->w, - cs.c[3]->w, - weights,mask);break; - } - if(sqdist>=0) - {/* Valid */ - ns.rank = 0; - m_ray = btVector3(0,0,0); - m_current = next; - for(U i=0,ni=cs.rank;iw*weights[i]; - } - else - { - m_free[m_nfree++] = cs.c[i]; - } - } - if(mask==15) m_status=eStatus::Inside; - } - else - {/* Return old simplex */ - removevertice(m_simplices[m_current]); - break; - } - m_status=((++iterations)rank) - { - case 1: - { - for(U i=0;i<3;++i) - { - btVector3 axis=btVector3(0,0,0); - axis[i]=1; - appendvertice(*m_simplex, axis); - if(EncloseOrigin()) return(true); - removevertice(*m_simplex); - appendvertice(*m_simplex,-axis); - if(EncloseOrigin()) return(true); - removevertice(*m_simplex); - } - } - break; - case 2: - { - const btVector3 d=m_simplex->c[1]->w-m_simplex->c[0]->w; - for(U i=0;i<3;++i) - { - btVector3 axis=btVector3(0,0,0); - axis[i]=1; - const btVector3 p=btCross(d,axis); - if(p.length2()>0) - { - appendvertice(*m_simplex, p); - if(EncloseOrigin()) return(true); - removevertice(*m_simplex); - appendvertice(*m_simplex,-p); - if(EncloseOrigin()) return(true); - removevertice(*m_simplex); - } - } - } - break; - case 3: - { - const btVector3 n=btCross(m_simplex->c[1]->w-m_simplex->c[0]->w, - m_simplex->c[2]->w-m_simplex->c[0]->w); - if(n.length2()>0) - { - appendvertice(*m_simplex,n); - if(EncloseOrigin()) return(true); - removevertice(*m_simplex); - appendvertice(*m_simplex,-n); - if(EncloseOrigin()) return(true); - removevertice(*m_simplex); - } - } - break; - case 4: - { - if(btFabs(det( m_simplex->c[0]->w-m_simplex->c[3]->w, - m_simplex->c[1]->w-m_simplex->c[3]->w, - m_simplex->c[2]->w-m_simplex->c[3]->w))>0) - return(true); - } - break; - } - return(false); - } - /* Internals */ - void getsupport(const btVector3& d,sSV& sv) const - { - sv.d = d/d.length(); - sv.w = m_shape.Support(sv.d); - } - void removevertice(sSimplex& simplex) - { - m_free[m_nfree++]=simplex.c[--simplex.rank]; - } - void appendvertice(sSimplex& simplex,const btVector3& v) - { - simplex.p[simplex.rank]=0; - simplex.c[simplex.rank]=m_free[--m_nfree]; - getsupport(v,*simplex.c[simplex.rank++]); - } - static btScalar det(const btVector3& a,const btVector3& b,const btVector3& c) - { - return( a.y()*b.z()*c.x()+a.z()*b.x()*c.y()- - a.x()*b.z()*c.y()-a.y()*b.x()*c.z()+ - a.x()*b.y()*c.z()-a.z()*b.y()*c.x()); - } - static btScalar projectorigin( const btVector3& a, - const btVector3& b, - btScalar* w,U& m) - { - const btVector3 d=b-a; - const btScalar l=d.length2(); - if(l>GJK_SIMPLEX2_EPS) - { - const btScalar t(l>0?-btDot(a,d)/l:0); - if(t>=1) { w[0]=0;w[1]=1;m=2;return(b.length2()); } - else if(t<=0) { w[0]=1;w[1]=0;m=1;return(a.length2()); } - else { w[0]=1-(w[1]=t);m=3;return((a+d*t).length2()); } - } - return(-1); - } - static btScalar projectorigin( const btVector3& a, - const btVector3& b, - const btVector3& c, - btScalar* w,U& m) - { - static const U imd3[]={1,2,0}; - const btVector3* vt[]={&a,&b,&c}; - const btVector3 dl[]={a-b,b-c,c-a}; - const btVector3 n=btCross(dl[0],dl[1]); - const btScalar l=n.length2(); - if(l>GJK_SIMPLEX3_EPS) - { - btScalar mindist=-1; - btScalar subw[2]={0.f,0.f}; - U subm(0); - for(U i=0;i<3;++i) - { - if(btDot(*vt[i],btCross(dl[i],n))>0) - { - const U j=imd3[i]; - const btScalar subd(projectorigin(*vt[i],*vt[j],subw,subm)); - if((mindist<0)||(subd(((subm&1)?1<GJK_SIMPLEX4_EPS)) - { - btScalar mindist=-1; - btScalar subw[3]={0.f,0.f,0.f}; - U subm(0); - for(U i=0;i<3;++i) - { - const U j=imd3[i]; - const btScalar s=vl*btDot(d,btCross(dl[i],dl[j])); - if(s>0) - { - const btScalar subd=projectorigin(*vt[i],*vt[j],d,subw,subm); - if((mindist<0)||(subd((subm&1?1<e[ea]=(U1)eb;fa->f[ea]=fb; - fb->e[eb]=(U1)ea;fb->f[eb]=fa; - } - static inline void append(sList& list,sFace* face) - { - face->l[0] = 0; - face->l[1] = list.root; - if(list.root) list.root->l[0]=face; - list.root = face; - ++list.count; - } - static inline void remove(sList& list,sFace* face) - { - if(face->l[1]) face->l[1]->l[0]=face->l[0]; - if(face->l[0]) face->l[0]->l[1]=face->l[1]; - if(face==list.root) list.root=face->l[1]; - --list.count; - } - - - void Initialize() - { - m_status = eStatus::Failed; - m_normal = btVector3(0,0,0); - m_depth = 0; - m_nextsv = 0; - for(U i=0;i1)&&gjk.EncloseOrigin()) - { - - /* Clean up */ - while(m_hull.root) - { - sFace* f = m_hull.root; - remove(m_hull,f); - append(m_stock,f); - } - m_status = eStatus::Valid; - m_nextsv = 0; - /* Orient simplex */ - if(gjk.det( simplex.c[0]->w-simplex.c[3]->w, - simplex.c[1]->w-simplex.c[3]->w, - simplex.c[2]->w-simplex.c[3]->w)<0) - { - btSwap(simplex.c[0],simplex.c[1]); - btSwap(simplex.p[0],simplex.p[1]); - } - /* Build initial hull */ - sFace* tetra[]={newface(simplex.c[0],simplex.c[1],simplex.c[2],true), - newface(simplex.c[1],simplex.c[0],simplex.c[3],true), - newface(simplex.c[2],simplex.c[1],simplex.c[3],true), - newface(simplex.c[0],simplex.c[2],simplex.c[3],true)}; - if(m_hull.count==4) - { - sFace* best=findbest(); - sFace outer=*best; - U pass=0; - U iterations=0; - bind(tetra[0],0,tetra[1],0); - bind(tetra[0],1,tetra[2],0); - bind(tetra[0],2,tetra[3],0); - bind(tetra[1],1,tetra[3],2); - bind(tetra[1],2,tetra[2],1); - bind(tetra[2],2,tetra[3],1); - m_status=eStatus::Valid; - for(;iterationspass = (U1)(++pass); - gjk.getsupport(best->n,*w); - const btScalar wdist=btDot(best->n,w->w)-best->d; - if(wdist>EPA_ACCURACY) - { - for(U j=0;(j<3)&&valid;++j) - { - valid&=expand( pass,w, - best->f[j],best->e[j], - horizon); - } - if(valid&&(horizon.nf>=3)) - { - bind(horizon.cf,1,horizon.ff,2); - remove(m_hull,best); - append(m_stock,best); - best=findbest(); - if(best->p>=outer.p) outer=*best; - } else { m_status=eStatus::InvalidHull;break; } - } else { m_status=eStatus::AccuraryReached;break; } - } else { m_status=eStatus::OutOfVertices;break; } - } - const btVector3 projection=outer.n*outer.d; - m_normal = outer.n; - m_depth = outer.d; - m_result.rank = 3; - m_result.c[0] = outer.c[0]; - m_result.c[1] = outer.c[1]; - m_result.c[2] = outer.c[2]; - m_result.p[0] = btCross( outer.c[1]->w-projection, - outer.c[2]->w-projection).length(); - m_result.p[1] = btCross( outer.c[2]->w-projection, - outer.c[0]->w-projection).length(); - m_result.p[2] = btCross( outer.c[0]->w-projection, - outer.c[1]->w-projection).length(); - const btScalar sum=m_result.p[0]+m_result.p[1]+m_result.p[2]; - m_result.p[0] /= sum; - m_result.p[1] /= sum; - m_result.p[2] /= sum; - return(m_status); - } - } - /* Fallback */ - m_status = eStatus::FallBack; - m_normal = -guess; - const btScalar nl=m_normal.length(); - if(nl>0) - m_normal = m_normal/nl; - else - m_normal = btVector3(1,0,0); - m_depth = 0; - m_result.rank=1; - m_result.c[0]=simplex.c[0]; - m_result.p[0]=1; - return(m_status); - } - sFace* newface(sSV* a,sSV* b,sSV* c,bool forced) - { - if(m_stock.root) - { - sFace* face=m_stock.root; - remove(m_stock,face); - append(m_hull,face); - face->pass = 0; - face->c[0] = a; - face->c[1] = b; - face->c[2] = c; - face->n = btCross(b->w-a->w,c->w-a->w); - const btScalar l=face->n.length(); - const bool v=l>EPA_ACCURACY; - face->p = btMin(btMin( - btDot(a->w,btCross(face->n,a->w-b->w)), - btDot(b->w,btCross(face->n,b->w-c->w))), - btDot(c->w,btCross(face->n,c->w-a->w))) / - (v?l:1); - face->p = face->p>=-EPA_INSIDE_EPS?0:face->p; - if(v) - { - face->d = btDot(a->w,face->n)/l; - face->n /= l; - if(forced||(face->d>=-EPA_PLANE_EPS)) - { - return(face); - } else m_status=eStatus::NonConvex; - } else m_status=eStatus::Degenerated; - remove(m_hull,face); - append(m_stock,face); - return(0); - } - m_status=m_stock.root?eStatus::OutOfVertices:eStatus::OutOfFaces; - return(0); - } - sFace* findbest() - { - sFace* minf=m_hull.root; - btScalar mind=minf->d*minf->d; - btScalar maxp=minf->p; - for(sFace* f=minf->l[1];f;f=f->l[1]) - { - const btScalar sqd=f->d*f->d; - if((f->p>=maxp)&&(sqdp; - } - } - return(minf); - } - bool expand(U pass,sSV* w,sFace* f,U e,sHorizon& horizon) - { - static const U i1m3[]={1,2,0}; - static const U i2m3[]={2,0,1}; - if(f->pass!=pass) - { - const U e1=i1m3[e]; - if((btDot(f->n,w->w)-f->d)<-EPA_PLANE_EPS) - { - sFace* nf=newface(f->c[e1],f->c[e],w,false); - if(nf) - { - bind(nf,0,f,e); - if(horizon.cf) bind(horizon.cf,1,nf,2); else horizon.ff=nf; - horizon.cf=nf; - ++horizon.nf; - return(true); - } - } - else - { - const U e2=i2m3[e]; - f->pass = (U1)pass; - if( expand(pass,w,f->f[e1],f->e[e1],horizon)&& - expand(pass,w,f->f[e2],f->e[e2],horizon)) - { - remove(m_hull,f); - append(m_stock,f); - return(true); - } - } - } - return(false); - } - - }; - - // - static void Initialize( const btConvexShape* shape0,const btTransform& wtrs0, - const btConvexShape* shape1,const btTransform& wtrs1, - btGjkEpaSolver2::sResults& results, - tShape& shape, - bool withmargins) - { - /* Results */ - results.witnesses[0] = - results.witnesses[1] = btVector3(0,0,0); - results.status = btGjkEpaSolver2::sResults::Separated; - /* Shape */ - shape.m_shapes[0] = shape0; - shape.m_shapes[1] = shape1; - shape.m_toshape1 = wtrs1.getBasis().transposeTimes(wtrs0.getBasis()); - shape.m_toshape0 = wtrs0.inverseTimes(wtrs1); - shape.EnableMargin(withmargins); - } - -} - -// -// Api -// - -using namespace gjkepa2_impl; - -// -int btGjkEpaSolver2::StackSizeRequirement() -{ - return(sizeof(GJK)+sizeof(EPA)); -} - -// -bool btGjkEpaSolver2::Distance( const btConvexShape* shape0, - const btTransform& wtrs0, - const btConvexShape* shape1, - const btTransform& wtrs1, - const btVector3& guess, - sResults& results) -{ - tShape shape; - Initialize(shape0,wtrs0,shape1,wtrs1,results,shape,false); - GJK gjk; - GJK::eStatus::_ gjk_status=gjk.Evaluate(shape,guess); - if(gjk_status==GJK::eStatus::Valid) - { - btVector3 w0=btVector3(0,0,0); - btVector3 w1=btVector3(0,0,0); - for(U i=0;irank;++i) - { - const btScalar p=gjk.m_simplex->p[i]; - w0+=shape.Support( gjk.m_simplex->c[i]->d,0)*p; - w1+=shape.Support(-gjk.m_simplex->c[i]->d,1)*p; - } - results.witnesses[0] = wtrs0*w0; - results.witnesses[1] = wtrs0*w1; - results.normal = w0-w1; - results.distance = results.normal.length(); - results.normal /= results.distance>GJK_MIN_DISTANCE?results.distance:1; - return(true); - } - else - { - results.status = gjk_status==GJK::eStatus::Inside? - sResults::Penetrating : - sResults::GJK_Failed ; - return(false); - } -} - -// -bool btGjkEpaSolver2::Penetration( const btConvexShape* shape0, - const btTransform& wtrs0, - const btConvexShape* shape1, - const btTransform& wtrs1, - const btVector3& guess, - sResults& results, - bool usemargins) -{ - tShape shape; - Initialize(shape0,wtrs0,shape1,wtrs1,results,shape,usemargins); - GJK gjk; - GJK::eStatus::_ gjk_status=gjk.Evaluate(shape,-guess); - switch(gjk_status) - { - case GJK::eStatus::Inside: - { - EPA epa; - EPA::eStatus::_ epa_status=epa.Evaluate(gjk,-guess); - if(epa_status!=EPA::eStatus::Failed) - { - btVector3 w0=btVector3(0,0,0); - for(U i=0;id,0)*epa.m_result.p[i]; - } - results.status = sResults::Penetrating; - results.witnesses[0] = wtrs0*w0; - results.witnesses[1] = wtrs0*(w0-epa.m_normal*epa.m_depth); - results.normal = -epa.m_normal; - results.distance = -epa.m_depth; - return(true); - } else results.status=sResults::EPA_Failed; - } - break; - case GJK::eStatus::Failed: - results.status=sResults::GJK_Failed; - break; - default: - { - } - } - return(false); -} - -#ifndef __SPU__ -// -btScalar btGjkEpaSolver2::SignedDistance(const btVector3& position, - btScalar margin, - const btConvexShape* shape0, - const btTransform& wtrs0, - sResults& results) -{ - tShape shape; - btSphereShape shape1(margin); - btTransform wtrs1(btQuaternion(0,0,0,1),position); - Initialize(shape0,wtrs0,&shape1,wtrs1,results,shape,false); - GJK gjk; - GJK::eStatus::_ gjk_status=gjk.Evaluate(shape,btVector3(1,1,1)); - if(gjk_status==GJK::eStatus::Valid) - { - btVector3 w0=btVector3(0,0,0); - btVector3 w1=btVector3(0,0,0); - for(U i=0;irank;++i) - { - const btScalar p=gjk.m_simplex->p[i]; - w0+=shape.Support( gjk.m_simplex->c[i]->d,0)*p; - w1+=shape.Support(-gjk.m_simplex->c[i]->d,1)*p; - } - results.witnesses[0] = wtrs0*w0; - results.witnesses[1] = wtrs0*w1; - const btVector3 delta= results.witnesses[1]- - results.witnesses[0]; - const btScalar margin= shape0->getMarginNonVirtual()+ - shape1.getMarginNonVirtual(); - const btScalar length= delta.length(); - results.normal = delta/length; - results.witnesses[0] += results.normal*margin; - return(length-margin); - } - else - { - if(gjk_status==GJK::eStatus::Inside) - { - if(Penetration(shape0,wtrs0,&shape1,wtrs1,gjk.m_ray,results)) - { - const btVector3 delta= results.witnesses[0]- - results.witnesses[1]; - const btScalar length= delta.length(); - if (length >= SIMD_EPSILON) - results.normal = delta/length; - return(-length); - } - } - } - return(SIMD_INFINITY); -} - -// -bool btGjkEpaSolver2::SignedDistance(const btConvexShape* shape0, - const btTransform& wtrs0, - const btConvexShape* shape1, - const btTransform& wtrs1, - const btVector3& guess, - sResults& results) -{ - if(!Distance(shape0,wtrs0,shape1,wtrs1,guess,results)) - return(Penetration(shape0,wtrs0,shape1,wtrs1,guess,results,false)); - else - return(true); -} -#endif //__SPU__ - -/* Symbols cleanup */ - -#undef GJK_MAX_ITERATIONS -#undef GJK_ACCURARY -#undef GJK_MIN_DISTANCE -#undef GJK_DUPLICATED_EPS -#undef GJK_SIMPLEX2_EPS -#undef GJK_SIMPLEX3_EPS -#undef GJK_SIMPLEX4_EPS - -#undef EPA_MAX_VERTICES -#undef EPA_MAX_FACES -#undef EPA_MAX_ITERATIONS -#undef EPA_ACCURACY -#undef EPA_FALLBACK -#undef EPA_PLANE_EPS -#undef EPA_INSIDE_EPS diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h deleted file mode 100644 index 2296527d7db..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h +++ /dev/null @@ -1,73 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2008 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the -use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not -claim that you wrote the original software. If you use this software in a -product, an acknowledgment in the product documentation would be appreciated -but is not required. -2. Altered source versions must be plainly marked as such, and must not be -misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -/* -GJK-EPA collision solver by Nathanael Presson, 2008 -*/ -#ifndef _68DA1F85_90B7_4bb0_A705_83B4040A75C6_ -#define _68DA1F85_90B7_4bb0_A705_83B4040A75C6_ -#include "BulletCollision/CollisionShapes/btConvexShape.h" - -///btGjkEpaSolver contributed under zlib by Nathanael Presson -struct btGjkEpaSolver2 -{ -struct sResults - { - enum eStatus - { - Separated, /* Shapes doesnt penetrate */ - Penetrating, /* Shapes are penetrating */ - GJK_Failed, /* GJK phase fail, no big issue, shapes are probably just 'touching' */ - EPA_Failed /* EPA phase fail, bigger problem, need to save parameters, and debug */ - } status; - btVector3 witnesses[2]; - btVector3 normal; - btScalar distance; - }; - -static int StackSizeRequirement(); - -static bool Distance( const btConvexShape* shape0,const btTransform& wtrs0, - const btConvexShape* shape1,const btTransform& wtrs1, - const btVector3& guess, - sResults& results); - -static bool Penetration(const btConvexShape* shape0,const btTransform& wtrs0, - const btConvexShape* shape1,const btTransform& wtrs1, - const btVector3& guess, - sResults& results, - bool usemargins=true); -#ifndef __SPU__ -static btScalar SignedDistance( const btVector3& position, - btScalar margin, - const btConvexShape* shape, - const btTransform& wtrs, - sResults& results); - -static bool SignedDistance( const btConvexShape* shape0,const btTransform& wtrs0, - const btConvexShape* shape1,const btTransform& wtrs1, - const btVector3& guess, - sResults& results); -#endif //__SPU__ - -}; - -#endif diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp deleted file mode 100644 index c6dc3f3a672..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -EPA Copyright (c) Ricardo Padrela 2006 - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "BulletCollision/CollisionShapes/btConvexShape.h" -#include "btGjkEpaPenetrationDepthSolver.h" - - -#include "BulletCollision/NarrowPhaseCollision/btGjkEpa2.h" - -bool btGjkEpaPenetrationDepthSolver::calcPenDepth( btSimplexSolverInterface& simplexSolver, - const btConvexShape* pConvexA, const btConvexShape* pConvexB, - const btTransform& transformA, const btTransform& transformB, - btVector3& v, btVector3& wWitnessOnA, btVector3& wWitnessOnB, - class btIDebugDraw* debugDraw, btStackAlloc* stackAlloc ) -{ - - (void)debugDraw; - (void)v; - (void)simplexSolver; - -// const btScalar radialmargin(btScalar(0.)); - - btVector3 guessVector(transformA.getOrigin()-transformB.getOrigin()); - btGjkEpaSolver2::sResults results; - - - if(btGjkEpaSolver2::Penetration(pConvexA,transformA, - pConvexB,transformB, - guessVector,results)) - - { - // debugDraw->drawLine(results.witnesses[1],results.witnesses[1]+results.normal,btVector3(255,0,0)); - //resultOut->addContactPoint(results.normal,results.witnesses[1],-results.depth); - wWitnessOnA = results.witnesses[0]; - wWitnessOnB = results.witnesses[1]; - v = results.normal; - return true; - } else - { - if(btGjkEpaSolver2::Distance(pConvexA,transformA,pConvexB,transformB,guessVector,results)) - { - wWitnessOnA = results.witnesses[0]; - wWitnessOnB = results.witnesses[1]; - v = results.normal; - return false; - } - } - - return false; -} - - diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h deleted file mode 100644 index a49689a1501..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h +++ /dev/null @@ -1,43 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -EPA Copyright (c) Ricardo Padrela 2006 - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ -#ifndef BT_GJP_EPA_PENETRATION_DEPTH_H -#define BT_GJP_EPA_PENETRATION_DEPTH_H - -#include "btConvexPenetrationDepthSolver.h" - -///EpaPenetrationDepthSolver uses the Expanding Polytope Algorithm to -///calculate the penetration depth between two convex shapes. -class btGjkEpaPenetrationDepthSolver : public btConvexPenetrationDepthSolver -{ - public : - - btGjkEpaPenetrationDepthSolver() - { - } - - bool calcPenDepth( btSimplexSolverInterface& simplexSolver, - const btConvexShape* pConvexA, const btConvexShape* pConvexB, - const btTransform& transformA, const btTransform& transformB, - btVector3& v, btVector3& wWitnessOnA, btVector3& wWitnessOnB, - class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc ); - - private : - -}; - -#endif // BT_GJP_EPA_PENETRATION_DEPTH_H - diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp deleted file mode 100644 index 1a561957368..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp +++ /dev/null @@ -1,456 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btGjkPairDetector.h" -#include "BulletCollision/CollisionShapes/btConvexShape.h" -#include "BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h" -#include "BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h" - - - -#if defined(DEBUG) || defined (_DEBUG) -//#define TEST_NON_VIRTUAL 1 -#include //for debug printf -#ifdef __SPU__ -#include -#define printf spu_printf -//#define DEBUG_SPU_COLLISION_DETECTION 1 -#endif //__SPU__ -#endif - -//must be above the machine epsilon -#define REL_ERROR2 btScalar(1.0e-6) - -//temp globals, to improve GJK/EPA/penetration calculations -int gNumDeepPenetrationChecks = 0; -int gNumGjkChecks = 0; - - -btGjkPairDetector::btGjkPairDetector(const btConvexShape* objectA,const btConvexShape* objectB,btSimplexSolverInterface* simplexSolver,btConvexPenetrationDepthSolver* penetrationDepthSolver) -:m_cachedSeparatingAxis(btScalar(0.),btScalar(1.),btScalar(0.)), -m_penetrationDepthSolver(penetrationDepthSolver), -m_simplexSolver(simplexSolver), -m_minkowskiA(objectA), -m_minkowskiB(objectB), -m_shapeTypeA(objectA->getShapeType()), -m_shapeTypeB(objectB->getShapeType()), -m_marginA(objectA->getMargin()), -m_marginB(objectB->getMargin()), -m_ignoreMargin(false), -m_lastUsedMethod(-1), -m_catchDegeneracies(1) -{ -} -btGjkPairDetector::btGjkPairDetector(const btConvexShape* objectA,const btConvexShape* objectB,int shapeTypeA,int shapeTypeB,btScalar marginA, btScalar marginB, btSimplexSolverInterface* simplexSolver,btConvexPenetrationDepthSolver* penetrationDepthSolver) -:m_cachedSeparatingAxis(btScalar(0.),btScalar(1.),btScalar(0.)), -m_penetrationDepthSolver(penetrationDepthSolver), -m_simplexSolver(simplexSolver), -m_minkowskiA(objectA), -m_minkowskiB(objectB), -m_shapeTypeA(shapeTypeA), -m_shapeTypeB(shapeTypeB), -m_marginA(marginA), -m_marginB(marginB), -m_ignoreMargin(false), -m_lastUsedMethod(-1), -m_catchDegeneracies(1) -{ -} - -void btGjkPairDetector::getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults) -{ - (void)swapResults; - - getClosestPointsNonVirtual(input,output,debugDraw); -} - -#ifdef __SPU__ -void btGjkPairDetector::getClosestPointsNonVirtual(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw) -#else -void btGjkPairDetector::getClosestPointsNonVirtual(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw) -#endif -{ - m_cachedSeparatingDistance = 0.f; - - btScalar distance=btScalar(0.); - btVector3 normalInB(btScalar(0.),btScalar(0.),btScalar(0.)); - btVector3 pointOnA,pointOnB; - btTransform localTransA = input.m_transformA; - btTransform localTransB = input.m_transformB; - btVector3 positionOffset = (localTransA.getOrigin() + localTransB.getOrigin()) * btScalar(0.5); - localTransA.getOrigin() -= positionOffset; - localTransB.getOrigin() -= positionOffset; - - bool check2d = m_minkowskiA->isConvex2d() && m_minkowskiB->isConvex2d(); - - btScalar marginA = m_marginA; - btScalar marginB = m_marginB; - - gNumGjkChecks++; - -#ifdef DEBUG_SPU_COLLISION_DETECTION - spu_printf("inside gjk\n"); -#endif - //for CCD we don't use margins - if (m_ignoreMargin) - { - marginA = btScalar(0.); - marginB = btScalar(0.); -#ifdef DEBUG_SPU_COLLISION_DETECTION - spu_printf("ignoring margin\n"); -#endif - } - - m_curIter = 0; - int gGjkMaxIter = 1000;//this is to catch invalid input, perhaps check for #NaN? - m_cachedSeparatingAxis.setValue(0,1,0); - - bool isValid = false; - bool checkSimplex = false; - bool checkPenetration = true; - m_degenerateSimplex = 0; - - m_lastUsedMethod = -1; - - { - btScalar squaredDistance = BT_LARGE_FLOAT; - btScalar delta = btScalar(0.); - - btScalar margin = marginA + marginB; - - - - m_simplexSolver->reset(); - - for ( ; ; ) - //while (true) - { - - btVector3 seperatingAxisInA = (-m_cachedSeparatingAxis)* input.m_transformA.getBasis(); - btVector3 seperatingAxisInB = m_cachedSeparatingAxis* input.m_transformB.getBasis(); - -#if 1 - - btVector3 pInA = m_minkowskiA->localGetSupportVertexWithoutMarginNonVirtual(seperatingAxisInA); - btVector3 qInB = m_minkowskiB->localGetSupportVertexWithoutMarginNonVirtual(seperatingAxisInB); - -// btVector3 pInA = localGetSupportingVertexWithoutMargin(m_shapeTypeA, m_minkowskiA, seperatingAxisInA,input.m_convexVertexData[0]);//, &featureIndexA); -// btVector3 qInB = localGetSupportingVertexWithoutMargin(m_shapeTypeB, m_minkowskiB, seperatingAxisInB,input.m_convexVertexData[1]);//, &featureIndexB); - -#else -#ifdef __SPU__ - btVector3 pInA = m_minkowskiA->localGetSupportVertexWithoutMarginNonVirtual(seperatingAxisInA); - btVector3 qInB = m_minkowskiB->localGetSupportVertexWithoutMarginNonVirtual(seperatingAxisInB); -#else - btVector3 pInA = m_minkowskiA->localGetSupportingVertexWithoutMargin(seperatingAxisInA); - btVector3 qInB = m_minkowskiB->localGetSupportingVertexWithoutMargin(seperatingAxisInB); -#ifdef TEST_NON_VIRTUAL - btVector3 pInAv = m_minkowskiA->localGetSupportingVertexWithoutMargin(seperatingAxisInA); - btVector3 qInBv = m_minkowskiB->localGetSupportingVertexWithoutMargin(seperatingAxisInB); - btAssert((pInAv-pInA).length() < 0.0001); - btAssert((qInBv-qInB).length() < 0.0001); -#endif // -#endif //__SPU__ -#endif - - - btVector3 pWorld = localTransA(pInA); - btVector3 qWorld = localTransB(qInB); - -#ifdef DEBUG_SPU_COLLISION_DETECTION - spu_printf("got local supporting vertices\n"); -#endif - - if (check2d) - { - pWorld[2] = 0.f; - qWorld[2] = 0.f; - } - - btVector3 w = pWorld - qWorld; - delta = m_cachedSeparatingAxis.dot(w); - - // potential exit, they don't overlap - if ((delta > btScalar(0.0)) && (delta * delta > squaredDistance * input.m_maximumDistanceSquared)) - { - m_degenerateSimplex = 10; - checkSimplex=true; - //checkPenetration = false; - break; - } - - //exit 0: the new point is already in the simplex, or we didn't come any closer - if (m_simplexSolver->inSimplex(w)) - { - m_degenerateSimplex = 1; - checkSimplex = true; - break; - } - // are we getting any closer ? - btScalar f0 = squaredDistance - delta; - btScalar f1 = squaredDistance * REL_ERROR2; - - if (f0 <= f1) - { - if (f0 <= btScalar(0.)) - { - m_degenerateSimplex = 2; - } else - { - m_degenerateSimplex = 11; - } - checkSimplex = true; - break; - } - -#ifdef DEBUG_SPU_COLLISION_DETECTION - spu_printf("addVertex 1\n"); -#endif - //add current vertex to simplex - m_simplexSolver->addVertex(w, pWorld, qWorld); -#ifdef DEBUG_SPU_COLLISION_DETECTION - spu_printf("addVertex 2\n"); -#endif - btVector3 newCachedSeparatingAxis; - - //calculate the closest point to the origin (update vector v) - if (!m_simplexSolver->closest(newCachedSeparatingAxis)) - { - m_degenerateSimplex = 3; - checkSimplex = true; - break; - } - - if(newCachedSeparatingAxis.length2()previousSquaredDistance) - { - m_degenerateSimplex = 7; - squaredDistance = previousSquaredDistance; - checkSimplex = false; - break; - } -#endif // - - m_cachedSeparatingAxis = newCachedSeparatingAxis; - - //redundant m_simplexSolver->compute_points(pointOnA, pointOnB); - - //are we getting any closer ? - if (previousSquaredDistance - squaredDistance <= SIMD_EPSILON * previousSquaredDistance) - { - m_simplexSolver->backup_closest(m_cachedSeparatingAxis); - checkSimplex = true; - m_degenerateSimplex = 12; - - break; - } - - //degeneracy, this is typically due to invalid/uninitialized worldtransforms for a btCollisionObject - if (m_curIter++ > gGjkMaxIter) - { - #if defined(DEBUG) || defined (_DEBUG) || defined (DEBUG_SPU_COLLISION_DETECTION) - - printf("btGjkPairDetector maxIter exceeded:%i\n",m_curIter); - printf("sepAxis=(%f,%f,%f), squaredDistance = %f, shapeTypeA=%i,shapeTypeB=%i\n", - m_cachedSeparatingAxis.getX(), - m_cachedSeparatingAxis.getY(), - m_cachedSeparatingAxis.getZ(), - squaredDistance, - m_minkowskiA->getShapeType(), - m_minkowskiB->getShapeType()); - - #endif - break; - - } - - - bool check = (!m_simplexSolver->fullSimplex()); - //bool check = (!m_simplexSolver->fullSimplex() && squaredDistance > SIMD_EPSILON * m_simplexSolver->maxVertex()); - - if (!check) - { - //do we need this backup_closest here ? - m_simplexSolver->backup_closest(m_cachedSeparatingAxis); - m_degenerateSimplex = 13; - break; - } - } - - if (checkSimplex) - { - m_simplexSolver->compute_points(pointOnA, pointOnB); - normalInB = pointOnA-pointOnB; - btScalar lenSqr =m_cachedSeparatingAxis.length2(); - - //valid normal - if (lenSqr < 0.0001) - { - m_degenerateSimplex = 5; - } - if (lenSqr > SIMD_EPSILON*SIMD_EPSILON) - { - btScalar rlen = btScalar(1.) / btSqrt(lenSqr ); - normalInB *= rlen; //normalize - btScalar s = btSqrt(squaredDistance); - - btAssert(s > btScalar(0.0)); - pointOnA -= m_cachedSeparatingAxis * (marginA / s); - pointOnB += m_cachedSeparatingAxis * (marginB / s); - distance = ((btScalar(1.)/rlen) - margin); - isValid = true; - - m_lastUsedMethod = 1; - } else - { - m_lastUsedMethod = 2; - } - } - - bool catchDegeneratePenetrationCase = - (m_catchDegeneracies && m_penetrationDepthSolver && m_degenerateSimplex && ((distance+margin) < 0.01)); - - //if (checkPenetration && !isValid) - if (checkPenetration && (!isValid || catchDegeneratePenetrationCase )) - { - //penetration case - - //if there is no way to handle penetrations, bail out - if (m_penetrationDepthSolver) - { - // Penetration depth case. - btVector3 tmpPointOnA,tmpPointOnB; - - gNumDeepPenetrationChecks++; - m_cachedSeparatingAxis.setZero(); - - bool isValid2 = m_penetrationDepthSolver->calcPenDepth( - *m_simplexSolver, - m_minkowskiA,m_minkowskiB, - localTransA,localTransB, - m_cachedSeparatingAxis, tmpPointOnA, tmpPointOnB, - debugDraw,input.m_stackAlloc - ); - - - if (isValid2) - { - btVector3 tmpNormalInB = tmpPointOnB-tmpPointOnA; - btScalar lenSqr = tmpNormalInB.length2(); - if (lenSqr <= (SIMD_EPSILON*SIMD_EPSILON)) - { - tmpNormalInB = m_cachedSeparatingAxis; - lenSqr = m_cachedSeparatingAxis.length2(); - } - - if (lenSqr > (SIMD_EPSILON*SIMD_EPSILON)) - { - tmpNormalInB /= btSqrt(lenSqr); - btScalar distance2 = -(tmpPointOnA-tmpPointOnB).length(); - //only replace valid penetrations when the result is deeper (check) - if (!isValid || (distance2 < distance)) - { - distance = distance2; - pointOnA = tmpPointOnA; - pointOnB = tmpPointOnB; - normalInB = tmpNormalInB; - isValid = true; - m_lastUsedMethod = 3; - } else - { - m_lastUsedMethod = 8; - } - } else - { - m_lastUsedMethod = 9; - } - } else - - { - ///this is another degenerate case, where the initial GJK calculation reports a degenerate case - ///EPA reports no penetration, and the second GJK (using the supporting vector without margin) - ///reports a valid positive distance. Use the results of the second GJK instead of failing. - ///thanks to Jacob.Langford for the reproduction case - ///http://code.google.com/p/bullet/issues/detail?id=250 - - - if (m_cachedSeparatingAxis.length2() > btScalar(0.)) - { - btScalar distance2 = (tmpPointOnA-tmpPointOnB).length()-margin; - //only replace valid distances when the distance is less - if (!isValid || (distance2 < distance)) - { - distance = distance2; - pointOnA = tmpPointOnA; - pointOnB = tmpPointOnB; - pointOnA -= m_cachedSeparatingAxis * marginA ; - pointOnB += m_cachedSeparatingAxis * marginB ; - normalInB = m_cachedSeparatingAxis; - normalInB.normalize(); - isValid = true; - m_lastUsedMethod = 6; - } else - { - m_lastUsedMethod = 5; - } - } - } - - } - - } - } - - - - if (isValid && ((distance < 0) || (distance*distance < input.m_maximumDistanceSquared))) - { -#if 0 -///some debugging -// if (check2d) - { - printf("n = %2.3f,%2.3f,%2.3f. ",normalInB[0],normalInB[1],normalInB[2]); - printf("distance = %2.3f exit=%d deg=%d\n",distance,m_lastUsedMethod,m_degenerateSimplex); - } -#endif - - m_cachedSeparatingAxis = normalInB; - m_cachedSeparatingDistance = distance; - - output.addContactPoint( - normalInB, - pointOnB+positionOffset, - distance); - - } - - -} - - - - - diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h deleted file mode 100644 index cc6287c86b0..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h +++ /dev/null @@ -1,103 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - - -#ifndef GJK_PAIR_DETECTOR_H -#define GJK_PAIR_DETECTOR_H - -#include "btDiscreteCollisionDetectorInterface.h" -#include "BulletCollision/CollisionShapes/btCollisionMargin.h" - -class btConvexShape; -#include "btSimplexSolverInterface.h" -class btConvexPenetrationDepthSolver; - -/// btGjkPairDetector uses GJK to implement the btDiscreteCollisionDetectorInterface -class btGjkPairDetector : public btDiscreteCollisionDetectorInterface -{ - - - btVector3 m_cachedSeparatingAxis; - btConvexPenetrationDepthSolver* m_penetrationDepthSolver; - btSimplexSolverInterface* m_simplexSolver; - const btConvexShape* m_minkowskiA; - const btConvexShape* m_minkowskiB; - int m_shapeTypeA; - int m_shapeTypeB; - btScalar m_marginA; - btScalar m_marginB; - - bool m_ignoreMargin; - btScalar m_cachedSeparatingDistance; - - -public: - - //some debugging to fix degeneracy problems - int m_lastUsedMethod; - int m_curIter; - int m_degenerateSimplex; - int m_catchDegeneracies; - - - btGjkPairDetector(const btConvexShape* objectA,const btConvexShape* objectB,btSimplexSolverInterface* simplexSolver,btConvexPenetrationDepthSolver* penetrationDepthSolver); - btGjkPairDetector(const btConvexShape* objectA,const btConvexShape* objectB,int shapeTypeA,int shapeTypeB,btScalar marginA, btScalar marginB, btSimplexSolverInterface* simplexSolver,btConvexPenetrationDepthSolver* penetrationDepthSolver); - virtual ~btGjkPairDetector() {}; - - virtual void getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults=false); - - void getClosestPointsNonVirtual(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw); - - - void setMinkowskiA(btConvexShape* minkA) - { - m_minkowskiA = minkA; - } - - void setMinkowskiB(btConvexShape* minkB) - { - m_minkowskiB = minkB; - } - void setCachedSeperatingAxis(const btVector3& seperatingAxis) - { - m_cachedSeparatingAxis = seperatingAxis; - } - - const btVector3& getCachedSeparatingAxis() const - { - return m_cachedSeparatingAxis; - } - btScalar getCachedSeparatingDistance() const - { - return m_cachedSeparatingDistance; - } - - void setPenetrationDepthSolver(btConvexPenetrationDepthSolver* penetrationDepthSolver) - { - m_penetrationDepthSolver = penetrationDepthSolver; - } - - ///don't use setIgnoreMargin, it's for Bullet's internal use - void setIgnoreMargin(bool ignoreMargin) - { - m_ignoreMargin = ignoreMargin; - } - - -}; - -#endif //GJK_PAIR_DETECTOR_H diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h deleted file mode 100644 index 5987699f126..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h +++ /dev/null @@ -1,138 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef MANIFOLD_CONTACT_POINT_H -#define MANIFOLD_CONTACT_POINT_H - -#include "LinearMath/btVector3.h" -#include "LinearMath/btTransformUtil.h" - - - - - -/// ManifoldContactPoint collects and maintains persistent contactpoints. -/// used to improve stability and performance of rigidbody dynamics response. -class btManifoldPoint - { - public: - btManifoldPoint() - :m_userPersistentData(0), - m_appliedImpulse(0.f), - m_lateralFrictionInitialized(false), - m_appliedImpulseLateral1(0.f), - m_appliedImpulseLateral2(0.f), - m_contactMotion1(0.f), - m_contactMotion2(0.f), - m_contactCFM1(0.f), - m_contactCFM2(0.f), - m_lifeTime(0) - { - } - - btManifoldPoint( const btVector3 &pointA, const btVector3 &pointB, - const btVector3 &normal, - btScalar distance ) : - m_localPointA( pointA ), - m_localPointB( pointB ), - m_normalWorldOnB( normal ), - m_distance1( distance ), - m_combinedFriction(btScalar(0.)), - m_combinedRestitution(btScalar(0.)), - m_userPersistentData(0), - m_appliedImpulse(0.f), - m_lateralFrictionInitialized(false), - m_appliedImpulseLateral1(0.f), - m_appliedImpulseLateral2(0.f), - m_contactMotion1(0.f), - m_contactMotion2(0.f), - m_contactCFM1(0.f), - m_contactCFM2(0.f), - m_lifeTime(0) - { - - - } - - - - btVector3 m_localPointA; - btVector3 m_localPointB; - btVector3 m_positionWorldOnB; - ///m_positionWorldOnA is redundant information, see getPositionWorldOnA(), but for clarity - btVector3 m_positionWorldOnA; - btVector3 m_normalWorldOnB; - - btScalar m_distance1; - btScalar m_combinedFriction; - btScalar m_combinedRestitution; - - //BP mod, store contact triangles. - int m_partId0; - int m_partId1; - int m_index0; - int m_index1; - - mutable void* m_userPersistentData; - btScalar m_appliedImpulse; - - bool m_lateralFrictionInitialized; - btScalar m_appliedImpulseLateral1; - btScalar m_appliedImpulseLateral2; - btScalar m_contactMotion1; - btScalar m_contactMotion2; - btScalar m_contactCFM1; - btScalar m_contactCFM2; - - int m_lifeTime;//lifetime of the contactpoint in frames - - btVector3 m_lateralFrictionDir1; - btVector3 m_lateralFrictionDir2; - - btScalar getDistance() const - { - return m_distance1; - } - int getLifeTime() const - { - return m_lifeTime; - } - - const btVector3& getPositionWorldOnA() const { - return m_positionWorldOnA; -// return m_positionWorldOnB + m_normalWorldOnB * m_distance1; - } - - const btVector3& getPositionWorldOnB() const - { - return m_positionWorldOnB; - } - - void setDistance(btScalar dist) - { - m_distance1 = dist; - } - - ///this returns the most recent applied impulse, to satisfy contact constraints by the constraint solver - btScalar getAppliedImpulse() const - { - return m_appliedImpulse; - } - - - - }; - -#endif //MANIFOLD_CONTACT_POINT_H diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp deleted file mode 100644 index fe31f08d61a..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp +++ /dev/null @@ -1,362 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btMinkowskiPenetrationDepthSolver.h" -#include "BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h" -#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h" -#include "BulletCollision/CollisionShapes/btConvexShape.h" - -#define NUM_UNITSPHERE_POINTS 42 - - -bool btMinkowskiPenetrationDepthSolver::calcPenDepth(btSimplexSolverInterface& simplexSolver, - const btConvexShape* convexA,const btConvexShape* convexB, - const btTransform& transA,const btTransform& transB, - btVector3& v, btVector3& pa, btVector3& pb, - class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc - ) -{ - - (void)stackAlloc; - (void)v; - - bool check2d= convexA->isConvex2d() && convexB->isConvex2d(); - - struct btIntermediateResult : public btDiscreteCollisionDetectorInterface::Result - { - - btIntermediateResult():m_hasResult(false) - { - } - - btVector3 m_normalOnBInWorld; - btVector3 m_pointInWorld; - btScalar m_depth; - bool m_hasResult; - - virtual void setShapeIdentifiersA(int partId0,int index0) - { - (void)partId0; - (void)index0; - } - virtual void setShapeIdentifiersB(int partId1,int index1) - { - (void)partId1; - (void)index1; - } - void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth) - { - m_normalOnBInWorld = normalOnBInWorld; - m_pointInWorld = pointInWorld; - m_depth = depth; - m_hasResult = true; - } - }; - - //just take fixed number of orientation, and sample the penetration depth in that direction - btScalar minProj = btScalar(BT_LARGE_FLOAT); - btVector3 minNorm(btScalar(0.), btScalar(0.), btScalar(0.)); - btVector3 minA,minB; - btVector3 seperatingAxisInA,seperatingAxisInB; - btVector3 pInA,qInB,pWorld,qWorld,w; - -#ifndef __SPU__ -#define USE_BATCHED_SUPPORT 1 -#endif -#ifdef USE_BATCHED_SUPPORT - - btVector3 supportVerticesABatch[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2]; - btVector3 supportVerticesBBatch[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2]; - btVector3 seperatingAxisInABatch[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2]; - btVector3 seperatingAxisInBBatch[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2]; - int i; - - int numSampleDirections = NUM_UNITSPHERE_POINTS; - - for (i=0;igetNumPreferredPenetrationDirections(); - if (numPDA) - { - for (int i=0;igetPreferredPenetrationDirection(i,norm); - norm = transA.getBasis() * norm; - getPenetrationDirections()[numSampleDirections] = norm; - seperatingAxisInABatch[numSampleDirections] = (-norm) * transA.getBasis(); - seperatingAxisInBBatch[numSampleDirections] = norm * transB.getBasis(); - numSampleDirections++; - } - } - } - - { - int numPDB = convexB->getNumPreferredPenetrationDirections(); - if (numPDB) - { - for (int i=0;igetPreferredPenetrationDirection(i,norm); - norm = transB.getBasis() * norm; - getPenetrationDirections()[numSampleDirections] = norm; - seperatingAxisInABatch[numSampleDirections] = (-norm) * transA.getBasis(); - seperatingAxisInBBatch[numSampleDirections] = norm * transB.getBasis(); - numSampleDirections++; - } - } - } - - - - - convexA->batchedUnitVectorGetSupportingVertexWithoutMargin(seperatingAxisInABatch,supportVerticesABatch,numSampleDirections); - convexB->batchedUnitVectorGetSupportingVertexWithoutMargin(seperatingAxisInBBatch,supportVerticesBBatch,numSampleDirections); - - for (i=0;i0.01) - { - - seperatingAxisInA = seperatingAxisInABatch[i]; - seperatingAxisInB = seperatingAxisInBBatch[i]; - - pInA = supportVerticesABatch[i]; - qInB = supportVerticesBBatch[i]; - - pWorld = transA(pInA); - qWorld = transB(qInB); - if (check2d) - { - pWorld[2] = 0.f; - qWorld[2] = 0.f; - } - - w = qWorld - pWorld; - btScalar delta = norm.dot(w); - //find smallest delta - if (delta < minProj) - { - minProj = delta; - minNorm = norm; - minA = pWorld; - minB = qWorld; - } - } - } -#else - - int numSampleDirections = NUM_UNITSPHERE_POINTS; - -#ifndef __SPU__ - { - int numPDA = convexA->getNumPreferredPenetrationDirections(); - if (numPDA) - { - for (int i=0;igetPreferredPenetrationDirection(i,norm); - norm = transA.getBasis() * norm; - getPenetrationDirections()[numSampleDirections] = norm; - numSampleDirections++; - } - } - } - - { - int numPDB = convexB->getNumPreferredPenetrationDirections(); - if (numPDB) - { - for (int i=0;igetPreferredPenetrationDirection(i,norm); - norm = transB.getBasis() * norm; - getPenetrationDirections()[numSampleDirections] = norm; - numSampleDirections++; - } - } - } -#endif // __SPU__ - - for (int i=0;ilocalGetSupportVertexWithoutMarginNonVirtual(seperatingAxisInA); - qInB = convexB->localGetSupportVertexWithoutMarginNonVirtual(seperatingAxisInB); - pWorld = transA(pInA); - qWorld = transB(qInB); - w = qWorld - pWorld; - btScalar delta = norm.dot(w); - //find smallest delta - if (delta < minProj) - { - minProj = delta; - minNorm = norm; - minA = pWorld; - minB = qWorld; - } - } -#endif //USE_BATCHED_SUPPORT - - //add the margins - - minA += minNorm*convexA->getMarginNonVirtual(); - minB -= minNorm*convexB->getMarginNonVirtual(); - //no penetration - if (minProj < btScalar(0.)) - return false; - - btScalar extraSeparation = 0.5f;///scale dependent - minProj += extraSeparation+(convexA->getMarginNonVirtual() + convexB->getMarginNonVirtual()); - - - - - -//#define DEBUG_DRAW 1 -#ifdef DEBUG_DRAW - if (debugDraw) - { - btVector3 color(0,1,0); - debugDraw->drawLine(minA,minB,color); - color = btVector3 (1,1,1); - btVector3 vec = minB-minA; - btScalar prj2 = minNorm.dot(vec); - debugDraw->drawLine(minA,minA+(minNorm*minProj),color); - - } -#endif //DEBUG_DRAW - - - - btGjkPairDetector gjkdet(convexA,convexB,&simplexSolver,0); - - btScalar offsetDist = minProj; - btVector3 offset = minNorm * offsetDist; - - - - btGjkPairDetector::ClosestPointInput input; - - btVector3 newOrg = transA.getOrigin() + offset; - - btTransform displacedTrans = transA; - displacedTrans.setOrigin(newOrg); - - input.m_transformA = displacedTrans; - input.m_transformB = transB; - input.m_maximumDistanceSquared = btScalar(BT_LARGE_FLOAT);//minProj; - - btIntermediateResult res; - gjkdet.setCachedSeperatingAxis(-minNorm); - gjkdet.getClosestPoints(input,res,debugDraw); - - btScalar correctedMinNorm = minProj - res.m_depth; - - - //the penetration depth is over-estimated, relax it - btScalar penetration_relaxation= btScalar(1.); - minNorm*=penetration_relaxation; - - - if (res.m_hasResult) - { - - pa = res.m_pointInWorld - minNorm * correctedMinNorm; - pb = res.m_pointInWorld; - v = minNorm; - -#ifdef DEBUG_DRAW - if (debugDraw) - { - btVector3 color(1,0,0); - debugDraw->drawLine(pa,pb,color); - } -#endif//DEBUG_DRAW - - - } - return res.m_hasResult; -} - -btVector3* btMinkowskiPenetrationDepthSolver::getPenetrationDirections() -{ - static btVector3 sPenetrationDirections[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2] = - { - btVector3(btScalar(0.000000) , btScalar(-0.000000),btScalar(-1.000000)), - btVector3(btScalar(0.723608) , btScalar(-0.525725),btScalar(-0.447219)), - btVector3(btScalar(-0.276388) , btScalar(-0.850649),btScalar(-0.447219)), - btVector3(btScalar(-0.894426) , btScalar(-0.000000),btScalar(-0.447216)), - btVector3(btScalar(-0.276388) , btScalar(0.850649),btScalar(-0.447220)), - btVector3(btScalar(0.723608) , btScalar(0.525725),btScalar(-0.447219)), - btVector3(btScalar(0.276388) , btScalar(-0.850649),btScalar(0.447220)), - btVector3(btScalar(-0.723608) , btScalar(-0.525725),btScalar(0.447219)), - btVector3(btScalar(-0.723608) , btScalar(0.525725),btScalar(0.447219)), - btVector3(btScalar(0.276388) , btScalar(0.850649),btScalar(0.447219)), - btVector3(btScalar(0.894426) , btScalar(0.000000),btScalar(0.447216)), - btVector3(btScalar(-0.000000) , btScalar(0.000000),btScalar(1.000000)), - btVector3(btScalar(0.425323) , btScalar(-0.309011),btScalar(-0.850654)), - btVector3(btScalar(-0.162456) , btScalar(-0.499995),btScalar(-0.850654)), - btVector3(btScalar(0.262869) , btScalar(-0.809012),btScalar(-0.525738)), - btVector3(btScalar(0.425323) , btScalar(0.309011),btScalar(-0.850654)), - btVector3(btScalar(0.850648) , btScalar(-0.000000),btScalar(-0.525736)), - btVector3(btScalar(-0.525730) , btScalar(-0.000000),btScalar(-0.850652)), - btVector3(btScalar(-0.688190) , btScalar(-0.499997),btScalar(-0.525736)), - btVector3(btScalar(-0.162456) , btScalar(0.499995),btScalar(-0.850654)), - btVector3(btScalar(-0.688190) , btScalar(0.499997),btScalar(-0.525736)), - btVector3(btScalar(0.262869) , btScalar(0.809012),btScalar(-0.525738)), - btVector3(btScalar(0.951058) , btScalar(0.309013),btScalar(0.000000)), - btVector3(btScalar(0.951058) , btScalar(-0.309013),btScalar(0.000000)), - btVector3(btScalar(0.587786) , btScalar(-0.809017),btScalar(0.000000)), - btVector3(btScalar(0.000000) , btScalar(-1.000000),btScalar(0.000000)), - btVector3(btScalar(-0.587786) , btScalar(-0.809017),btScalar(0.000000)), - btVector3(btScalar(-0.951058) , btScalar(-0.309013),btScalar(-0.000000)), - btVector3(btScalar(-0.951058) , btScalar(0.309013),btScalar(-0.000000)), - btVector3(btScalar(-0.587786) , btScalar(0.809017),btScalar(-0.000000)), - btVector3(btScalar(-0.000000) , btScalar(1.000000),btScalar(-0.000000)), - btVector3(btScalar(0.587786) , btScalar(0.809017),btScalar(-0.000000)), - btVector3(btScalar(0.688190) , btScalar(-0.499997),btScalar(0.525736)), - btVector3(btScalar(-0.262869) , btScalar(-0.809012),btScalar(0.525738)), - btVector3(btScalar(-0.850648) , btScalar(0.000000),btScalar(0.525736)), - btVector3(btScalar(-0.262869) , btScalar(0.809012),btScalar(0.525738)), - btVector3(btScalar(0.688190) , btScalar(0.499997),btScalar(0.525736)), - btVector3(btScalar(0.525730) , btScalar(0.000000),btScalar(0.850652)), - btVector3(btScalar(0.162456) , btScalar(-0.499995),btScalar(0.850654)), - btVector3(btScalar(-0.425323) , btScalar(-0.309011),btScalar(0.850654)), - btVector3(btScalar(-0.425323) , btScalar(0.309011),btScalar(0.850654)), - btVector3(btScalar(0.162456) , btScalar(0.499995),btScalar(0.850654)) - }; - - return sPenetrationDirections; -} - - diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h deleted file mode 100644 index 7b6c8a63779..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h +++ /dev/null @@ -1,40 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef MINKOWSKI_PENETRATION_DEPTH_SOLVER_H -#define MINKOWSKI_PENETRATION_DEPTH_SOLVER_H - -#include "btConvexPenetrationDepthSolver.h" - -///MinkowskiPenetrationDepthSolver implements bruteforce penetration depth estimation. -///Implementation is based on sampling the depth using support mapping, and using GJK step to get the witness points. -class btMinkowskiPenetrationDepthSolver : public btConvexPenetrationDepthSolver -{ -protected: - - static btVector3* getPenetrationDirections(); - -public: - - virtual bool calcPenDepth( btSimplexSolverInterface& simplexSolver, - const btConvexShape* convexA,const btConvexShape* convexB, - const btTransform& transA,const btTransform& transB, - btVector3& v, btVector3& pa, btVector3& pb, - class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc - ); -}; - -#endif //MINKOWSKI_PENETRATION_DEPTH_SOLVER_H - diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp deleted file mode 100644 index 924a8af87d1..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp +++ /dev/null @@ -1,260 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btPersistentManifold.h" -#include "LinearMath/btTransform.h" - - -btScalar gContactBreakingThreshold = btScalar(0.02); -ContactDestroyedCallback gContactDestroyedCallback = 0; -ContactProcessedCallback gContactProcessedCallback = 0; - - - -btPersistentManifold::btPersistentManifold() -:btTypedObject(BT_PERSISTENT_MANIFOLD_TYPE), -m_body0(0), -m_body1(0), -m_cachedPoints (0), -m_index1a(0) -{ -} - - - - -#ifdef DEBUG_PERSISTENCY -#include -void btPersistentManifold::DebugPersistency() -{ - int i; - printf("DebugPersistency : numPoints %d\n",m_cachedPoints); - for (i=0;i1) - printf("error in clearUserCache\n"); - } - } - btAssert(occurance<=0); -#endif //DEBUG_PERSISTENCY - - if (pt.m_userPersistentData && gContactDestroyedCallback) - { - (*gContactDestroyedCallback)(pt.m_userPersistentData); - pt.m_userPersistentData = 0; - } - -#ifdef DEBUG_PERSISTENCY - DebugPersistency(); -#endif - } - - -} - - -int btPersistentManifold::sortCachedPoints(const btManifoldPoint& pt) -{ - - //calculate 4 possible cases areas, and take biggest area - //also need to keep 'deepest' - - int maxPenetrationIndex = -1; -#define KEEP_DEEPEST_POINT 1 -#ifdef KEEP_DEEPEST_POINT - btScalar maxPenetration = pt.getDistance(); - for (int i=0;i<4;i++) - { - if (m_pointCache[i].getDistance() < maxPenetration) - { - maxPenetrationIndex = i; - maxPenetration = m_pointCache[i].getDistance(); - } - } -#endif //KEEP_DEEPEST_POINT - - btScalar res0(btScalar(0.)),res1(btScalar(0.)),res2(btScalar(0.)),res3(btScalar(0.)); - if (maxPenetrationIndex != 0) - { - btVector3 a0 = pt.m_localPointA-m_pointCache[1].m_localPointA; - btVector3 b0 = m_pointCache[3].m_localPointA-m_pointCache[2].m_localPointA; - btVector3 cross = a0.cross(b0); - res0 = cross.length2(); - } - if (maxPenetrationIndex != 1) - { - btVector3 a1 = pt.m_localPointA-m_pointCache[0].m_localPointA; - btVector3 b1 = m_pointCache[3].m_localPointA-m_pointCache[2].m_localPointA; - btVector3 cross = a1.cross(b1); - res1 = cross.length2(); - } - - if (maxPenetrationIndex != 2) - { - btVector3 a2 = pt.m_localPointA-m_pointCache[0].m_localPointA; - btVector3 b2 = m_pointCache[3].m_localPointA-m_pointCache[1].m_localPointA; - btVector3 cross = a2.cross(b2); - res2 = cross.length2(); - } - - if (maxPenetrationIndex != 3) - { - btVector3 a3 = pt.m_localPointA-m_pointCache[0].m_localPointA; - btVector3 b3 = m_pointCache[2].m_localPointA-m_pointCache[1].m_localPointA; - btVector3 cross = a3.cross(b3); - res3 = cross.length2(); - } - - btVector4 maxvec(res0,res1,res2,res3); - int biggestarea = maxvec.closestAxis4(); - return biggestarea; -} - - -int btPersistentManifold::getCacheEntry(const btManifoldPoint& newPoint) const -{ - btScalar shortestDist = getContactBreakingThreshold() * getContactBreakingThreshold(); - int size = getNumContacts(); - int nearestPoint = -1; - for( int i = 0; i < size; i++ ) - { - const btManifoldPoint &mp = m_pointCache[i]; - - btVector3 diffA = mp.m_localPointA- newPoint.m_localPointA; - const btScalar distToManiPoint = diffA.dot(diffA); - if( distToManiPoint < shortestDist ) - { - shortestDist = distToManiPoint; - nearestPoint = i; - } - } - return nearestPoint; -} - -int btPersistentManifold::addManifoldPoint(const btManifoldPoint& newPoint) -{ - btAssert(validContactDistance(newPoint)); - - int insertIndex = getNumContacts(); - if (insertIndex == MANIFOLD_CACHE_SIZE) - { -#if MANIFOLD_CACHE_SIZE >= 4 - //sort cache so best points come first, based on area - insertIndex = sortCachedPoints(newPoint); -#else - insertIndex = 0; -#endif - clearUserCache(m_pointCache[insertIndex]); - - } else - { - m_cachedPoints++; - - - } - if (insertIndex<0) - insertIndex=0; - - btAssert(m_pointCache[insertIndex].m_userPersistentData==0); - m_pointCache[insertIndex] = newPoint; - return insertIndex; -} - -btScalar btPersistentManifold::getContactBreakingThreshold() const -{ - return m_contactBreakingThreshold; -} - - - -void btPersistentManifold::refreshContactPoints(const btTransform& trA,const btTransform& trB) -{ - int i; -#ifdef DEBUG_PERSISTENCY - printf("refreshContactPoints posA = (%f,%f,%f) posB = (%f,%f,%f)\n", - trA.getOrigin().getX(), - trA.getOrigin().getY(), - trA.getOrigin().getZ(), - trB.getOrigin().getX(), - trB.getOrigin().getY(), - trB.getOrigin().getZ()); -#endif //DEBUG_PERSISTENCY - /// first refresh worldspace positions and distance - for (i=getNumContacts()-1;i>=0;i--) - { - btManifoldPoint &manifoldPoint = m_pointCache[i]; - manifoldPoint.m_positionWorldOnA = trA( manifoldPoint.m_localPointA ); - manifoldPoint.m_positionWorldOnB = trB( manifoldPoint.m_localPointB ); - manifoldPoint.m_distance1 = (manifoldPoint.m_positionWorldOnA - manifoldPoint.m_positionWorldOnB).dot(manifoldPoint.m_normalWorldOnB); - manifoldPoint.m_lifeTime++; - } - - /// then - btScalar distance2d; - btVector3 projectedDifference,projectedPoint; - for (i=getNumContacts()-1;i>=0;i--) - { - - btManifoldPoint &manifoldPoint = m_pointCache[i]; - //contact becomes invalid when signed distance exceeds margin (projected on contactnormal direction) - if (!validContactDistance(manifoldPoint)) - { - removeContactPoint(i); - } else - { - //contact also becomes invalid when relative movement orthogonal to normal exceeds margin - projectedPoint = manifoldPoint.m_positionWorldOnA - manifoldPoint.m_normalWorldOnB * manifoldPoint.m_distance1; - projectedDifference = manifoldPoint.m_positionWorldOnB - projectedPoint; - distance2d = projectedDifference.dot(projectedDifference); - if (distance2d > getContactBreakingThreshold()*getContactBreakingThreshold() ) - { - removeContactPoint(i); - } else - { - //contact point processed callback - if (gContactProcessedCallback) - (*gContactProcessedCallback)(manifoldPoint,m_body0,m_body1); - } - } - } -#ifdef DEBUG_PERSISTENCY - DebugPersistency(); -#endif // -} - - - - - diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h deleted file mode 100644 index c075c548095..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h +++ /dev/null @@ -1,208 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef PERSISTENT_MANIFOLD_H -#define PERSISTENT_MANIFOLD_H - - -#include "LinearMath/btVector3.h" -#include "LinearMath/btTransform.h" -#include "btManifoldPoint.h" -#include "LinearMath/btAlignedAllocator.h" - -struct btCollisionResult; - -///maximum contact breaking and merging threshold -extern btScalar gContactBreakingThreshold; - -typedef bool (*ContactDestroyedCallback)(void* userPersistentData); -typedef bool (*ContactProcessedCallback)(btManifoldPoint& cp,void* body0,void* body1); -extern ContactDestroyedCallback gContactDestroyedCallback; -extern ContactProcessedCallback gContactProcessedCallback; - - -enum btContactManifoldTypes -{ - BT_PERSISTENT_MANIFOLD_TYPE = 1, - MAX_CONTACT_MANIFOLD_TYPE -}; - -#define MANIFOLD_CACHE_SIZE 4 - -///btPersistentManifold is a contact point cache, it stays persistent as long as objects are overlapping in the broadphase. -///Those contact points are created by the collision narrow phase. -///The cache can be empty, or hold 1,2,3 or 4 points. Some collision algorithms (GJK) might only add one point at a time. -///updates/refreshes old contact points, and throw them away if necessary (distance becomes too large) -///reduces the cache to 4 points, when more then 4 points are added, using following rules: -///the contact point with deepest penetration is always kept, and it tries to maximuze the area covered by the points -///note that some pairs of objects might have more then one contact manifold. -ATTRIBUTE_ALIGNED16( class) btPersistentManifold : public btTypedObject -{ - - btManifoldPoint m_pointCache[MANIFOLD_CACHE_SIZE]; - - /// this two body pointers can point to the physics rigidbody class. - /// void* will allow any rigidbody class - void* m_body0; - void* m_body1; - int m_cachedPoints; - - btScalar m_contactBreakingThreshold; - btScalar m_contactProcessingThreshold; - - - /// sort cached points so most isolated points come first - int sortCachedPoints(const btManifoldPoint& pt); - - int findContactPoint(const btManifoldPoint* unUsed, int numUnused,const btManifoldPoint& pt); - -public: - - BT_DECLARE_ALIGNED_ALLOCATOR(); - - int m_index1a; - - btPersistentManifold(); - - btPersistentManifold(void* body0,void* body1,int , btScalar contactBreakingThreshold,btScalar contactProcessingThreshold) - : btTypedObject(BT_PERSISTENT_MANIFOLD_TYPE), - m_body0(body0),m_body1(body1),m_cachedPoints(0), - m_contactBreakingThreshold(contactBreakingThreshold), - m_contactProcessingThreshold(contactProcessingThreshold) - { - } - - SIMD_FORCE_INLINE void* getBody0() { return m_body0;} - SIMD_FORCE_INLINE void* getBody1() { return m_body1;} - - SIMD_FORCE_INLINE const void* getBody0() const { return m_body0;} - SIMD_FORCE_INLINE const void* getBody1() const { return m_body1;} - - void setBodies(void* body0,void* body1) - { - m_body0 = body0; - m_body1 = body1; - } - - void clearUserCache(btManifoldPoint& pt); - -#ifdef DEBUG_PERSISTENCY - void DebugPersistency(); -#endif // - - SIMD_FORCE_INLINE int getNumContacts() const { return m_cachedPoints;} - - SIMD_FORCE_INLINE const btManifoldPoint& getContactPoint(int index) const - { - btAssert(index < m_cachedPoints); - return m_pointCache[index]; - } - - SIMD_FORCE_INLINE btManifoldPoint& getContactPoint(int index) - { - btAssert(index < m_cachedPoints); - return m_pointCache[index]; - } - - ///@todo: get this margin from the current physics / collision environment - btScalar getContactBreakingThreshold() const; - - btScalar getContactProcessingThreshold() const - { - return m_contactProcessingThreshold; - } - - int getCacheEntry(const btManifoldPoint& newPoint) const; - - int addManifoldPoint( const btManifoldPoint& newPoint); - - void removeContactPoint (int index) - { - clearUserCache(m_pointCache[index]); - - int lastUsedIndex = getNumContacts() - 1; -// m_pointCache[index] = m_pointCache[lastUsedIndex]; - if(index != lastUsedIndex) - { - m_pointCache[index] = m_pointCache[lastUsedIndex]; - //get rid of duplicated userPersistentData pointer - m_pointCache[lastUsedIndex].m_userPersistentData = 0; - m_pointCache[lastUsedIndex].m_appliedImpulse = 0.f; - m_pointCache[lastUsedIndex].m_lateralFrictionInitialized = false; - m_pointCache[lastUsedIndex].m_appliedImpulseLateral1 = 0.f; - m_pointCache[lastUsedIndex].m_appliedImpulseLateral2 = 0.f; - m_pointCache[lastUsedIndex].m_lifeTime = 0; - } - - btAssert(m_pointCache[lastUsedIndex].m_userPersistentData==0); - m_cachedPoints--; - } - void replaceContactPoint(const btManifoldPoint& newPoint,int insertIndex) - { - btAssert(validContactDistance(newPoint)); - -#define MAINTAIN_PERSISTENCY 1 -#ifdef MAINTAIN_PERSISTENCY - int lifeTime = m_pointCache[insertIndex].getLifeTime(); - btScalar appliedImpulse = m_pointCache[insertIndex].m_appliedImpulse; - btScalar appliedLateralImpulse1 = m_pointCache[insertIndex].m_appliedImpulseLateral1; - btScalar appliedLateralImpulse2 = m_pointCache[insertIndex].m_appliedImpulseLateral2; - - btAssert(lifeTime>=0); - void* cache = m_pointCache[insertIndex].m_userPersistentData; - - m_pointCache[insertIndex] = newPoint; - - m_pointCache[insertIndex].m_userPersistentData = cache; - m_pointCache[insertIndex].m_appliedImpulse = appliedImpulse; - m_pointCache[insertIndex].m_appliedImpulseLateral1 = appliedLateralImpulse1; - m_pointCache[insertIndex].m_appliedImpulseLateral2 = appliedLateralImpulse2; - - m_pointCache[insertIndex].m_lifeTime = lifeTime; -#else - clearUserCache(m_pointCache[insertIndex]); - m_pointCache[insertIndex] = newPoint; - -#endif - } - - bool validContactDistance(const btManifoldPoint& pt) const - { - return pt.m_distance1 <= getContactBreakingThreshold(); - } - /// calculated new worldspace coordinates and depth, and reject points that exceed the collision margin - void refreshContactPoints( const btTransform& trA,const btTransform& trB); - - - SIMD_FORCE_INLINE void clearManifold() - { - int i; - for (i=0;i - -#include "BulletCollision/CollisionShapes/btConvexShape.h" -#include "BulletCollision/CollisionShapes/btTriangleShape.h" -#include "BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h" -#include "BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h" -#include "btRaycastCallback.h" - -btTriangleRaycastCallback::btTriangleRaycastCallback(const btVector3& from,const btVector3& to, unsigned int flags) - : - m_from(from), - m_to(to), - //@BP Mod - m_flags(flags), - m_hitFraction(btScalar(1.)) -{ - -} - - - -void btTriangleRaycastCallback::processTriangle(btVector3* triangle,int partId, int triangleIndex) -{ - const btVector3 &vert0=triangle[0]; - const btVector3 &vert1=triangle[1]; - const btVector3 &vert2=triangle[2]; - - btVector3 v10; v10 = vert1 - vert0 ; - btVector3 v20; v20 = vert2 - vert0 ; - - btVector3 triangleNormal; triangleNormal = v10.cross( v20 ); - - const btScalar dist = vert0.dot(triangleNormal); - btScalar dist_a = triangleNormal.dot(m_from) ; - dist_a-= dist; - btScalar dist_b = triangleNormal.dot(m_to); - dist_b -= dist; - - if ( dist_a * dist_b >= btScalar(0.0) ) - { - return ; // same sign - } - //@BP Mod - Backface filtering - if (((m_flags & kF_FilterBackfaces) != 0) && (dist_a > btScalar(0.0))) - { - // Backface, skip check - return; - } - - const btScalar proj_length=dist_a-dist_b; - const btScalar distance = (dist_a)/(proj_length); - // Now we have the intersection point on the plane, we'll see if it's inside the triangle - // Add an epsilon as a tolerance for the raycast, - // in case the ray hits exacly on the edge of the triangle. - // It must be scaled for the triangle size. - - if(distance < m_hitFraction) - { - - - btScalar edge_tolerance =triangleNormal.length2(); - edge_tolerance *= btScalar(-0.0001); - btVector3 point; point.setInterpolate3( m_from, m_to, distance); - { - btVector3 v0p; v0p = vert0 - point; - btVector3 v1p; v1p = vert1 - point; - btVector3 cp0; cp0 = v0p.cross( v1p ); - - if ( (btScalar)(cp0.dot(triangleNormal)) >=edge_tolerance) - { - - - btVector3 v2p; v2p = vert2 - point; - btVector3 cp1; - cp1 = v1p.cross( v2p); - if ( (btScalar)(cp1.dot(triangleNormal)) >=edge_tolerance) - { - btVector3 cp2; - cp2 = v2p.cross(v0p); - - if ( (btScalar)(cp2.dot(triangleNormal)) >=edge_tolerance) - { - //@BP Mod - // Triangle normal isn't normalized - triangleNormal.normalize(); - - //@BP Mod - Allow for unflipped normal when raycasting against backfaces - if (((m_flags & kF_KeepUnflippedNormal) != 0) || (dist_a <= btScalar(0.0))) - { - m_hitFraction = reportHit(-triangleNormal,distance,partId,triangleIndex); - } - else - { - m_hitFraction = reportHit(triangleNormal,distance,partId,triangleIndex); - } - } - } - } - } - } -} - - -btTriangleConvexcastCallback::btTriangleConvexcastCallback (const btConvexShape* convexShape, const btTransform& convexShapeFrom, const btTransform& convexShapeTo, const btTransform& triangleToWorld, const btScalar triangleCollisionMargin) -{ - m_convexShape = convexShape; - m_convexShapeFrom = convexShapeFrom; - m_convexShapeTo = convexShapeTo; - m_triangleToWorld = triangleToWorld; - m_hitFraction = 1.0; - m_triangleCollisionMargin = triangleCollisionMargin; -} - -void -btTriangleConvexcastCallback::processTriangle (btVector3* triangle, int partId, int triangleIndex) -{ - btTriangleShape triangleShape (triangle[0], triangle[1], triangle[2]); - triangleShape.setMargin(m_triangleCollisionMargin); - - btVoronoiSimplexSolver simplexSolver; - btGjkEpaPenetrationDepthSolver gjkEpaPenetrationSolver; - -//#define USE_SUBSIMPLEX_CONVEX_CAST 1 -//if you reenable USE_SUBSIMPLEX_CONVEX_CAST see commented out code below -#ifdef USE_SUBSIMPLEX_CONVEX_CAST - btSubsimplexConvexCast convexCaster(m_convexShape, &triangleShape, &simplexSolver); -#else - //btGjkConvexCast convexCaster(m_convexShape,&triangleShape,&simplexSolver); - btContinuousConvexCollision convexCaster(m_convexShape,&triangleShape,&simplexSolver,&gjkEpaPenetrationSolver); -#endif //#USE_SUBSIMPLEX_CONVEX_CAST - - btConvexCast::CastResult castResult; - castResult.m_fraction = btScalar(1.); - if (convexCaster.calcTimeOfImpact(m_convexShapeFrom,m_convexShapeTo,m_triangleToWorld, m_triangleToWorld, castResult)) - { - //add hit - if (castResult.m_normal.length2() > btScalar(0.0001)) - { - if (castResult.m_fraction < m_hitFraction) - { -/* btContinuousConvexCast's normal is already in world space */ -/* -#ifdef USE_SUBSIMPLEX_CONVEX_CAST - //rotate normal into worldspace - castResult.m_normal = m_convexShapeFrom.getBasis() * castResult.m_normal; -#endif //USE_SUBSIMPLEX_CONVEX_CAST -*/ - castResult.m_normal.normalize(); - - reportHit (castResult.m_normal, - castResult.m_hitPoint, - castResult.m_fraction, - partId, - triangleIndex); - } - } - } -} diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h deleted file mode 100644 index 3a1ab388c13..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h +++ /dev/null @@ -1,71 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef RAYCAST_TRI_CALLBACK_H -#define RAYCAST_TRI_CALLBACK_H - -#include "BulletCollision/CollisionShapes/btTriangleCallback.h" -#include "LinearMath/btTransform.h" -struct btBroadphaseProxy; -class btConvexShape; - -class btTriangleRaycastCallback: public btTriangleCallback -{ -public: - - //input - btVector3 m_from; - btVector3 m_to; - - //@BP Mod - allow backface filtering and unflipped normals - enum EFlags - { - kF_None = 0, - kF_FilterBackfaces = 1 << 0, - kF_KeepUnflippedNormal = 1 << 1, // Prevents returned face normal getting flipped when a ray hits a back-facing triangle - - kF_Terminator = 0xFFFFFFFF - }; - unsigned int m_flags; - - btScalar m_hitFraction; - - btTriangleRaycastCallback(const btVector3& from,const btVector3& to, unsigned int flags=0); - - virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex); - - virtual btScalar reportHit(const btVector3& hitNormalLocal, btScalar hitFraction, int partId, int triangleIndex ) = 0; - -}; - -class btTriangleConvexcastCallback : public btTriangleCallback -{ -public: - const btConvexShape* m_convexShape; - btTransform m_convexShapeFrom; - btTransform m_convexShapeTo; - btTransform m_triangleToWorld; - btScalar m_hitFraction; - btScalar m_triangleCollisionMargin; - - btTriangleConvexcastCallback (const btConvexShape* convexShape, const btTransform& convexShapeFrom, const btTransform& convexShapeTo, const btTransform& triangleToWorld, const btScalar triangleCollisionMargin); - - virtual void processTriangle (btVector3* triangle, int partId, int triangleIndex); - - virtual btScalar reportHit (const btVector3& hitNormalLocal, const btVector3& hitPointLocal, btScalar hitFraction, int partId, int triangleIndex) = 0; -}; - -#endif //RAYCAST_TRI_CALLBACK_H - diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h deleted file mode 100644 index 823b4e7158b..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h +++ /dev/null @@ -1,63 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#ifndef SIMPLEX_SOLVER_INTERFACE_H -#define SIMPLEX_SOLVER_INTERFACE_H - -#include "LinearMath/btVector3.h" - -#define NO_VIRTUAL_INTERFACE 1 -#ifdef NO_VIRTUAL_INTERFACE -#include "btVoronoiSimplexSolver.h" -#define btSimplexSolverInterface btVoronoiSimplexSolver -#else - -/// btSimplexSolverInterface can incrementally calculate distance between origin and up to 4 vertices -/// Used by GJK or Linear Casting. Can be implemented by the Johnson-algorithm or alternative approaches based on -/// voronoi regions or barycentric coordinates -class btSimplexSolverInterface -{ - public: - virtual ~btSimplexSolverInterface() {}; - - virtual void reset() = 0; - - virtual void addVertex(const btVector3& w, const btVector3& p, const btVector3& q) = 0; - - virtual bool closest(btVector3& v) = 0; - - virtual btScalar maxVertex() = 0; - - virtual bool fullSimplex() const = 0; - - virtual int getSimplex(btVector3 *pBuf, btVector3 *qBuf, btVector3 *yBuf) const = 0; - - virtual bool inSimplex(const btVector3& w) = 0; - - virtual void backup_closest(btVector3& v) = 0; - - virtual bool emptySimplex() const = 0; - - virtual void compute_points(btVector3& p1, btVector3& p2) = 0; - - virtual int numVertices() const =0; - - -}; -#endif -#endif //SIMPLEX_SOLVER_INTERFACE_H - diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp deleted file mode 100644 index 18eb662de2f..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp +++ /dev/null @@ -1,160 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btSubSimplexConvexCast.h" -#include "BulletCollision/CollisionShapes/btConvexShape.h" - -#include "BulletCollision/CollisionShapes/btMinkowskiSumShape.h" -#include "BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h" -#include "btPointCollector.h" -#include "LinearMath/btTransformUtil.h" - -btSubsimplexConvexCast::btSubsimplexConvexCast (const btConvexShape* convexA,const btConvexShape* convexB,btSimplexSolverInterface* simplexSolver) -:m_simplexSolver(simplexSolver), -m_convexA(convexA),m_convexB(convexB) -{ -} - -///Typically the conservative advancement reaches solution in a few iterations, clip it to 32 for degenerate cases. -///See discussion about this here http://continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=565 -#ifdef BT_USE_DOUBLE_PRECISION -#define MAX_ITERATIONS 64 -#else -#define MAX_ITERATIONS 32 -#endif -bool btSubsimplexConvexCast::calcTimeOfImpact( - const btTransform& fromA, - const btTransform& toA, - const btTransform& fromB, - const btTransform& toB, - CastResult& result) -{ - - m_simplexSolver->reset(); - - btVector3 linVelA,linVelB; - linVelA = toA.getOrigin()-fromA.getOrigin(); - linVelB = toB.getOrigin()-fromB.getOrigin(); - - btScalar lambda = btScalar(0.); - - btTransform interpolatedTransA = fromA; - btTransform interpolatedTransB = fromB; - - ///take relative motion - btVector3 r = (linVelA-linVelB); - btVector3 v; - - btVector3 supVertexA = fromA(m_convexA->localGetSupportingVertex(-r*fromA.getBasis())); - btVector3 supVertexB = fromB(m_convexB->localGetSupportingVertex(r*fromB.getBasis())); - v = supVertexA-supVertexB; - int maxIter = MAX_ITERATIONS; - - btVector3 n; - n.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); - bool hasResult = false; - btVector3 c; - - btScalar lastLambda = lambda; - - - btScalar dist2 = v.length2(); -#ifdef BT_USE_DOUBLE_PRECISION - btScalar epsilon = btScalar(0.0001); -#else - btScalar epsilon = btScalar(0.0001); -#endif //BT_USE_DOUBLE_PRECISION - btVector3 w,p; - btScalar VdotR; - - while ( (dist2 > epsilon) && maxIter--) - { - supVertexA = interpolatedTransA(m_convexA->localGetSupportingVertex(-v*interpolatedTransA.getBasis())); - supVertexB = interpolatedTransB(m_convexB->localGetSupportingVertex(v*interpolatedTransB.getBasis())); - w = supVertexA-supVertexB; - - btScalar VdotW = v.dot(w); - - if (lambda > btScalar(1.0)) - { - return false; - } - - if ( VdotW > btScalar(0.)) - { - VdotR = v.dot(r); - - if (VdotR >= -(SIMD_EPSILON*SIMD_EPSILON)) - return false; - else - { - lambda = lambda - VdotW / VdotR; - //interpolate to next lambda - // x = s + lambda * r; - interpolatedTransA.getOrigin().setInterpolate3(fromA.getOrigin(),toA.getOrigin(),lambda); - interpolatedTransB.getOrigin().setInterpolate3(fromB.getOrigin(),toB.getOrigin(),lambda); - //m_simplexSolver->reset(); - //check next line - w = supVertexA-supVertexB; - lastLambda = lambda; - n = v; - hasResult = true; - } - } - ///Just like regular GJK only add the vertex if it isn't already (close) to current vertex, it would lead to divisions by zero and NaN etc. - if (!m_simplexSolver->inSimplex(w)) - m_simplexSolver->addVertex( w, supVertexA , supVertexB); - - if (m_simplexSolver->closest(v)) - { - dist2 = v.length2(); - hasResult = true; - //todo: check this normal for validity - //n=v; - //printf("V=%f , %f, %f\n",v[0],v[1],v[2]); - //printf("DIST2=%f\n",dist2); - //printf("numverts = %i\n",m_simplexSolver->numVertices()); - } else - { - dist2 = btScalar(0.); - } - } - - //int numiter = MAX_ITERATIONS - maxIter; -// printf("number of iterations: %d", numiter); - - //don't report a time of impact when moving 'away' from the hitnormal - - - result.m_fraction = lambda; - if (n.length2() >= (SIMD_EPSILON*SIMD_EPSILON)) - result.m_normal = n.normalized(); - else - result.m_normal = btVector3(btScalar(0.0), btScalar(0.0), btScalar(0.0)); - - //don't report time of impact for motion away from the contact normal (or causes minor penetration) - if (result.m_normal.dot(r)>=-result.m_allowedPenetration) - return false; - - btVector3 hitA,hitB; - m_simplexSolver->compute_points(hitA,hitB); - result.m_hitPoint=hitB; - return true; -} - - - - diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h deleted file mode 100644 index 05662db5d23..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#ifndef SUBSIMPLEX_CONVEX_CAST_H -#define SUBSIMPLEX_CONVEX_CAST_H - -#include "btConvexCast.h" -#include "btSimplexSolverInterface.h" -class btConvexShape; - -/// btSubsimplexConvexCast implements Gino van den Bergens' paper -///"Ray Casting against bteral Convex Objects with Application to Continuous Collision Detection" -/// GJK based Ray Cast, optimized version -/// Objects should not start in overlap, otherwise results are not defined. -class btSubsimplexConvexCast : public btConvexCast -{ - btSimplexSolverInterface* m_simplexSolver; - const btConvexShape* m_convexA; - const btConvexShape* m_convexB; - -public: - - btSubsimplexConvexCast (const btConvexShape* shapeA,const btConvexShape* shapeB,btSimplexSolverInterface* simplexSolver); - - //virtual ~btSubsimplexConvexCast(); - ///SimsimplexConvexCast calculateTimeOfImpact calculates the time of impact+normal for the linear cast (sweep) between two moving objects. - ///Precondition is that objects should not penetration/overlap at the start from the interval. Overlap can be tested using btGjkPairDetector. - virtual bool calcTimeOfImpact( - const btTransform& fromA, - const btTransform& toA, - const btTransform& fromB, - const btTransform& toB, - CastResult& result); - -}; - -#endif //SUBSIMPLEX_CONVEX_CAST_H diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp deleted file mode 100644 index a775198ab29..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp +++ /dev/null @@ -1,609 +0,0 @@ - -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - - Elsevier CDROM license agreements grants nonexclusive license to use the software - for any purpose, commercial or non-commercial as long as the following credit is included - identifying the original source of the software: - - Parts of the source are "from the book Real-Time Collision Detection by - Christer Ericson, published by Morgan Kaufmann Publishers, - (c) 2005 Elsevier Inc." - -*/ - - -#include "btVoronoiSimplexSolver.h" - -#define VERTA 0 -#define VERTB 1 -#define VERTC 2 -#define VERTD 3 - -#define CATCH_DEGENERATE_TETRAHEDRON 1 -void btVoronoiSimplexSolver::removeVertex(int index) -{ - - btAssert(m_numVertices>0); - m_numVertices--; - m_simplexVectorW[index] = m_simplexVectorW[m_numVertices]; - m_simplexPointsP[index] = m_simplexPointsP[m_numVertices]; - m_simplexPointsQ[index] = m_simplexPointsQ[m_numVertices]; -} - -void btVoronoiSimplexSolver::reduceVertices (const btUsageBitfield& usedVerts) -{ - if ((numVertices() >= 4) && (!usedVerts.usedVertexD)) - removeVertex(3); - - if ((numVertices() >= 3) && (!usedVerts.usedVertexC)) - removeVertex(2); - - if ((numVertices() >= 2) && (!usedVerts.usedVertexB)) - removeVertex(1); - - if ((numVertices() >= 1) && (!usedVerts.usedVertexA)) - removeVertex(0); - -} - - - - - -//clear the simplex, remove all the vertices -void btVoronoiSimplexSolver::reset() -{ - m_cachedValidClosest = false; - m_numVertices = 0; - m_needsUpdate = true; - m_lastW = btVector3(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)); - m_cachedBC.reset(); -} - - - - //add a vertex -void btVoronoiSimplexSolver::addVertex(const btVector3& w, const btVector3& p, const btVector3& q) -{ - m_lastW = w; - m_needsUpdate = true; - - m_simplexVectorW[m_numVertices] = w; - m_simplexPointsP[m_numVertices] = p; - m_simplexPointsQ[m_numVertices] = q; - - m_numVertices++; -} - -bool btVoronoiSimplexSolver::updateClosestVectorAndPoints() -{ - - if (m_needsUpdate) - { - m_cachedBC.reset(); - - m_needsUpdate = false; - - switch (numVertices()) - { - case 0: - m_cachedValidClosest = false; - break; - case 1: - { - m_cachedP1 = m_simplexPointsP[0]; - m_cachedP2 = m_simplexPointsQ[0]; - m_cachedV = m_cachedP1-m_cachedP2; //== m_simplexVectorW[0] - m_cachedBC.reset(); - m_cachedBC.setBarycentricCoordinates(btScalar(1.),btScalar(0.),btScalar(0.),btScalar(0.)); - m_cachedValidClosest = m_cachedBC.isValid(); - break; - }; - case 2: - { - //closest point origin from line segment - const btVector3& from = m_simplexVectorW[0]; - const btVector3& to = m_simplexVectorW[1]; - btVector3 nearest; - - btVector3 p (btScalar(0.),btScalar(0.),btScalar(0.)); - btVector3 diff = p - from; - btVector3 v = to - from; - btScalar t = v.dot(diff); - - if (t > 0) { - btScalar dotVV = v.dot(v); - if (t < dotVV) { - t /= dotVV; - diff -= t*v; - m_cachedBC.m_usedVertices.usedVertexA = true; - m_cachedBC.m_usedVertices.usedVertexB = true; - } else { - t = 1; - diff -= v; - //reduce to 1 point - m_cachedBC.m_usedVertices.usedVertexB = true; - } - } else - { - t = 0; - //reduce to 1 point - m_cachedBC.m_usedVertices.usedVertexA = true; - } - m_cachedBC.setBarycentricCoordinates(1-t,t); - nearest = from + t*v; - - m_cachedP1 = m_simplexPointsP[0] + t * (m_simplexPointsP[1] - m_simplexPointsP[0]); - m_cachedP2 = m_simplexPointsQ[0] + t * (m_simplexPointsQ[1] - m_simplexPointsQ[0]); - m_cachedV = m_cachedP1 - m_cachedP2; - - reduceVertices(m_cachedBC.m_usedVertices); - - m_cachedValidClosest = m_cachedBC.isValid(); - break; - } - case 3: - { - //closest point origin from triangle - btVector3 p (btScalar(0.),btScalar(0.),btScalar(0.)); - - const btVector3& a = m_simplexVectorW[0]; - const btVector3& b = m_simplexVectorW[1]; - const btVector3& c = m_simplexVectorW[2]; - - closestPtPointTriangle(p,a,b,c,m_cachedBC); - m_cachedP1 = m_simplexPointsP[0] * m_cachedBC.m_barycentricCoords[0] + - m_simplexPointsP[1] * m_cachedBC.m_barycentricCoords[1] + - m_simplexPointsP[2] * m_cachedBC.m_barycentricCoords[2]; - - m_cachedP2 = m_simplexPointsQ[0] * m_cachedBC.m_barycentricCoords[0] + - m_simplexPointsQ[1] * m_cachedBC.m_barycentricCoords[1] + - m_simplexPointsQ[2] * m_cachedBC.m_barycentricCoords[2]; - - m_cachedV = m_cachedP1-m_cachedP2; - - reduceVertices (m_cachedBC.m_usedVertices); - m_cachedValidClosest = m_cachedBC.isValid(); - - break; - } - case 4: - { - - - btVector3 p (btScalar(0.),btScalar(0.),btScalar(0.)); - - const btVector3& a = m_simplexVectorW[0]; - const btVector3& b = m_simplexVectorW[1]; - const btVector3& c = m_simplexVectorW[2]; - const btVector3& d = m_simplexVectorW[3]; - - bool hasSeperation = closestPtPointTetrahedron(p,a,b,c,d,m_cachedBC); - - if (hasSeperation) - { - - m_cachedP1 = m_simplexPointsP[0] * m_cachedBC.m_barycentricCoords[0] + - m_simplexPointsP[1] * m_cachedBC.m_barycentricCoords[1] + - m_simplexPointsP[2] * m_cachedBC.m_barycentricCoords[2] + - m_simplexPointsP[3] * m_cachedBC.m_barycentricCoords[3]; - - m_cachedP2 = m_simplexPointsQ[0] * m_cachedBC.m_barycentricCoords[0] + - m_simplexPointsQ[1] * m_cachedBC.m_barycentricCoords[1] + - m_simplexPointsQ[2] * m_cachedBC.m_barycentricCoords[2] + - m_simplexPointsQ[3] * m_cachedBC.m_barycentricCoords[3]; - - m_cachedV = m_cachedP1-m_cachedP2; - reduceVertices (m_cachedBC.m_usedVertices); - } else - { -// printf("sub distance got penetration\n"); - - if (m_cachedBC.m_degenerate) - { - m_cachedValidClosest = false; - } else - { - m_cachedValidClosest = true; - //degenerate case == false, penetration = true + zero - m_cachedV.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); - } - break; - } - - m_cachedValidClosest = m_cachedBC.isValid(); - - //closest point origin from tetrahedron - break; - } - default: - { - m_cachedValidClosest = false; - } - }; - } - - return m_cachedValidClosest; - -} - -//return/calculate the closest vertex -bool btVoronoiSimplexSolver::closest(btVector3& v) -{ - bool succes = updateClosestVectorAndPoints(); - v = m_cachedV; - return succes; -} - - - -btScalar btVoronoiSimplexSolver::maxVertex() -{ - int i, numverts = numVertices(); - btScalar maxV = btScalar(0.); - for (i=0;i= btScalar(0.0) && d4 <= d3) - { - result.m_closestPointOnSimplex = b; - result.m_usedVertices.usedVertexB = true; - result.setBarycentricCoordinates(0,1,0); - - return true; // b; // barycentric coordinates (0,1,0) - } - // Check if P in edge region of AB, if so return projection of P onto AB - btScalar vc = d1*d4 - d3*d2; - if (vc <= btScalar(0.0) && d1 >= btScalar(0.0) && d3 <= btScalar(0.0)) { - btScalar v = d1 / (d1 - d3); - result.m_closestPointOnSimplex = a + v * ab; - result.m_usedVertices.usedVertexA = true; - result.m_usedVertices.usedVertexB = true; - result.setBarycentricCoordinates(1-v,v,0); - return true; - //return a + v * ab; // barycentric coordinates (1-v,v,0) - } - - // Check if P in vertex region outside C - btVector3 cp = p - c; - btScalar d5 = ab.dot(cp); - btScalar d6 = ac.dot(cp); - if (d6 >= btScalar(0.0) && d5 <= d6) - { - result.m_closestPointOnSimplex = c; - result.m_usedVertices.usedVertexC = true; - result.setBarycentricCoordinates(0,0,1); - return true;//c; // barycentric coordinates (0,0,1) - } - - // Check if P in edge region of AC, if so return projection of P onto AC - btScalar vb = d5*d2 - d1*d6; - if (vb <= btScalar(0.0) && d2 >= btScalar(0.0) && d6 <= btScalar(0.0)) { - btScalar w = d2 / (d2 - d6); - result.m_closestPointOnSimplex = a + w * ac; - result.m_usedVertices.usedVertexA = true; - result.m_usedVertices.usedVertexC = true; - result.setBarycentricCoordinates(1-w,0,w); - return true; - //return a + w * ac; // barycentric coordinates (1-w,0,w) - } - - // Check if P in edge region of BC, if so return projection of P onto BC - btScalar va = d3*d6 - d5*d4; - if (va <= btScalar(0.0) && (d4 - d3) >= btScalar(0.0) && (d5 - d6) >= btScalar(0.0)) { - btScalar w = (d4 - d3) / ((d4 - d3) + (d5 - d6)); - - result.m_closestPointOnSimplex = b + w * (c - b); - result.m_usedVertices.usedVertexB = true; - result.m_usedVertices.usedVertexC = true; - result.setBarycentricCoordinates(0,1-w,w); - return true; - // return b + w * (c - b); // barycentric coordinates (0,1-w,w) - } - - // P inside face region. Compute Q through its barycentric coordinates (u,v,w) - btScalar denom = btScalar(1.0) / (va + vb + vc); - btScalar v = vb * denom; - btScalar w = vc * denom; - - result.m_closestPointOnSimplex = a + ab * v + ac * w; - result.m_usedVertices.usedVertexA = true; - result.m_usedVertices.usedVertexB = true; - result.m_usedVertices.usedVertexC = true; - result.setBarycentricCoordinates(1-v-w,v,w); - - return true; -// return a + ab * v + ac * w; // = u*a + v*b + w*c, u = va * denom = btScalar(1.0) - v - w - -} - - - - - -/// Test if point p and d lie on opposite sides of plane through abc -int btVoronoiSimplexSolver::pointOutsideOfPlane(const btVector3& p, const btVector3& a, const btVector3& b, const btVector3& c, const btVector3& d) -{ - btVector3 normal = (b-a).cross(c-a); - - btScalar signp = (p - a).dot(normal); // [AP AB AC] - btScalar signd = (d - a).dot( normal); // [AD AB AC] - -#ifdef CATCH_DEGENERATE_TETRAHEDRON -#ifdef BT_USE_DOUBLE_PRECISION -if (signd * signd < (btScalar(1e-8) * btScalar(1e-8))) - { - return -1; - } -#else - if (signd * signd < (btScalar(1e-4) * btScalar(1e-4))) - { -// printf("affine dependent/degenerate\n");// - return -1; - } -#endif - -#endif - // Points on opposite sides if expression signs are opposite - return signp * signd < btScalar(0.); -} - - -bool btVoronoiSimplexSolver::closestPtPointTetrahedron(const btVector3& p, const btVector3& a, const btVector3& b, const btVector3& c, const btVector3& d, btSubSimplexClosestResult& finalResult) -{ - btSubSimplexClosestResult tempResult; - - // Start out assuming point inside all halfspaces, so closest to itself - finalResult.m_closestPointOnSimplex = p; - finalResult.m_usedVertices.reset(); - finalResult.m_usedVertices.usedVertexA = true; - finalResult.m_usedVertices.usedVertexB = true; - finalResult.m_usedVertices.usedVertexC = true; - finalResult.m_usedVertices.usedVertexD = true; - - int pointOutsideABC = pointOutsideOfPlane(p, a, b, c, d); - int pointOutsideACD = pointOutsideOfPlane(p, a, c, d, b); - int pointOutsideADB = pointOutsideOfPlane(p, a, d, b, c); - int pointOutsideBDC = pointOutsideOfPlane(p, b, d, c, a); - - if (pointOutsideABC < 0 || pointOutsideACD < 0 || pointOutsideADB < 0 || pointOutsideBDC < 0) - { - finalResult.m_degenerate = true; - return false; - } - - if (!pointOutsideABC && !pointOutsideACD && !pointOutsideADB && !pointOutsideBDC) - { - return false; - } - - - btScalar bestSqDist = FLT_MAX; - // If point outside face abc then compute closest point on abc - if (pointOutsideABC) - { - closestPtPointTriangle(p, a, b, c,tempResult); - btVector3 q = tempResult.m_closestPointOnSimplex; - - btScalar sqDist = (q - p).dot( q - p); - // Update best closest point if (squared) distance is less than current best - if (sqDist < bestSqDist) { - bestSqDist = sqDist; - finalResult.m_closestPointOnSimplex = q; - //convert result bitmask! - finalResult.m_usedVertices.reset(); - finalResult.m_usedVertices.usedVertexA = tempResult.m_usedVertices.usedVertexA; - finalResult.m_usedVertices.usedVertexB = tempResult.m_usedVertices.usedVertexB; - finalResult.m_usedVertices.usedVertexC = tempResult.m_usedVertices.usedVertexC; - finalResult.setBarycentricCoordinates( - tempResult.m_barycentricCoords[VERTA], - tempResult.m_barycentricCoords[VERTB], - tempResult.m_barycentricCoords[VERTC], - 0 - ); - - } - } - - - // Repeat test for face acd - if (pointOutsideACD) - { - closestPtPointTriangle(p, a, c, d,tempResult); - btVector3 q = tempResult.m_closestPointOnSimplex; - //convert result bitmask! - - btScalar sqDist = (q - p).dot( q - p); - if (sqDist < bestSqDist) - { - bestSqDist = sqDist; - finalResult.m_closestPointOnSimplex = q; - finalResult.m_usedVertices.reset(); - finalResult.m_usedVertices.usedVertexA = tempResult.m_usedVertices.usedVertexA; - - finalResult.m_usedVertices.usedVertexC = tempResult.m_usedVertices.usedVertexB; - finalResult.m_usedVertices.usedVertexD = tempResult.m_usedVertices.usedVertexC; - finalResult.setBarycentricCoordinates( - tempResult.m_barycentricCoords[VERTA], - 0, - tempResult.m_barycentricCoords[VERTB], - tempResult.m_barycentricCoords[VERTC] - ); - - } - } - // Repeat test for face adb - - - if (pointOutsideADB) - { - closestPtPointTriangle(p, a, d, b,tempResult); - btVector3 q = tempResult.m_closestPointOnSimplex; - //convert result bitmask! - - btScalar sqDist = (q - p).dot( q - p); - if (sqDist < bestSqDist) - { - bestSqDist = sqDist; - finalResult.m_closestPointOnSimplex = q; - finalResult.m_usedVertices.reset(); - finalResult.m_usedVertices.usedVertexA = tempResult.m_usedVertices.usedVertexA; - finalResult.m_usedVertices.usedVertexB = tempResult.m_usedVertices.usedVertexC; - - finalResult.m_usedVertices.usedVertexD = tempResult.m_usedVertices.usedVertexB; - finalResult.setBarycentricCoordinates( - tempResult.m_barycentricCoords[VERTA], - tempResult.m_barycentricCoords[VERTC], - 0, - tempResult.m_barycentricCoords[VERTB] - ); - - } - } - // Repeat test for face bdc - - - if (pointOutsideBDC) - { - closestPtPointTriangle(p, b, d, c,tempResult); - btVector3 q = tempResult.m_closestPointOnSimplex; - //convert result bitmask! - btScalar sqDist = (q - p).dot( q - p); - if (sqDist < bestSqDist) - { - bestSqDist = sqDist; - finalResult.m_closestPointOnSimplex = q; - finalResult.m_usedVertices.reset(); - // - finalResult.m_usedVertices.usedVertexB = tempResult.m_usedVertices.usedVertexA; - finalResult.m_usedVertices.usedVertexC = tempResult.m_usedVertices.usedVertexC; - finalResult.m_usedVertices.usedVertexD = tempResult.m_usedVertices.usedVertexB; - - finalResult.setBarycentricCoordinates( - 0, - tempResult.m_barycentricCoords[VERTA], - tempResult.m_barycentricCoords[VERTC], - tempResult.m_barycentricCoords[VERTB] - ); - - } - } - - //help! we ended up full ! - - if (finalResult.m_usedVertices.usedVertexA && - finalResult.m_usedVertices.usedVertexB && - finalResult.m_usedVertices.usedVertexC && - finalResult.m_usedVertices.usedVertexD) - { - return true; - } - - return true; -} - diff --git a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h b/extern/bullet2/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h deleted file mode 100644 index 9a4f552924c..00000000000 --- a/extern/bullet2/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h +++ /dev/null @@ -1,178 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#ifndef btVoronoiSimplexSolver_H -#define btVoronoiSimplexSolver_H - -#include "btSimplexSolverInterface.h" - - - -#define VORONOI_SIMPLEX_MAX_VERTS 5 - -///disable next define, or use defaultCollisionConfiguration->getSimplexSolver()->setEqualVertexThreshold(0.f) to disable/configure -#define BT_USE_EQUAL_VERTEX_THRESHOLD -#define VORONOI_DEFAULT_EQUAL_VERTEX_THRESHOLD 0.0001f - - -struct btUsageBitfield{ - btUsageBitfield() - { - reset(); - } - - void reset() - { - usedVertexA = false; - usedVertexB = false; - usedVertexC = false; - usedVertexD = false; - } - unsigned short usedVertexA : 1; - unsigned short usedVertexB : 1; - unsigned short usedVertexC : 1; - unsigned short usedVertexD : 1; - unsigned short unused1 : 1; - unsigned short unused2 : 1; - unsigned short unused3 : 1; - unsigned short unused4 : 1; -}; - - -struct btSubSimplexClosestResult -{ - btVector3 m_closestPointOnSimplex; - //MASK for m_usedVertices - //stores the simplex vertex-usage, using the MASK, - // if m_usedVertices & MASK then the related vertex is used - btUsageBitfield m_usedVertices; - btScalar m_barycentricCoords[4]; - bool m_degenerate; - - void reset() - { - m_degenerate = false; - setBarycentricCoordinates(); - m_usedVertices.reset(); - } - bool isValid() - { - bool valid = (m_barycentricCoords[0] >= btScalar(0.)) && - (m_barycentricCoords[1] >= btScalar(0.)) && - (m_barycentricCoords[2] >= btScalar(0.)) && - (m_barycentricCoords[3] >= btScalar(0.)); - - - return valid; - } - void setBarycentricCoordinates(btScalar a=btScalar(0.),btScalar b=btScalar(0.),btScalar c=btScalar(0.),btScalar d=btScalar(0.)) - { - m_barycentricCoords[0] = a; - m_barycentricCoords[1] = b; - m_barycentricCoords[2] = c; - m_barycentricCoords[3] = d; - } - -}; - -/// btVoronoiSimplexSolver is an implementation of the closest point distance algorithm from a 1-4 points simplex to the origin. -/// Can be used with GJK, as an alternative to Johnson distance algorithm. -#ifdef NO_VIRTUAL_INTERFACE -class btVoronoiSimplexSolver -#else -class btVoronoiSimplexSolver : public btSimplexSolverInterface -#endif -{ -public: - - int m_numVertices; - - btVector3 m_simplexVectorW[VORONOI_SIMPLEX_MAX_VERTS]; - btVector3 m_simplexPointsP[VORONOI_SIMPLEX_MAX_VERTS]; - btVector3 m_simplexPointsQ[VORONOI_SIMPLEX_MAX_VERTS]; - - - - btVector3 m_cachedP1; - btVector3 m_cachedP2; - btVector3 m_cachedV; - btVector3 m_lastW; - - btScalar m_equalVertexThreshold; - bool m_cachedValidClosest; - - - btSubSimplexClosestResult m_cachedBC; - - bool m_needsUpdate; - - void removeVertex(int index); - void reduceVertices (const btUsageBitfield& usedVerts); - bool updateClosestVectorAndPoints(); - - bool closestPtPointTetrahedron(const btVector3& p, const btVector3& a, const btVector3& b, const btVector3& c, const btVector3& d, btSubSimplexClosestResult& finalResult); - int pointOutsideOfPlane(const btVector3& p, const btVector3& a, const btVector3& b, const btVector3& c, const btVector3& d); - bool closestPtPointTriangle(const btVector3& p, const btVector3& a, const btVector3& b, const btVector3& c,btSubSimplexClosestResult& result); - -public: - - btVoronoiSimplexSolver() - : m_equalVertexThreshold(VORONOI_DEFAULT_EQUAL_VERTEX_THRESHOLD) - { - } - void reset(); - - void addVertex(const btVector3& w, const btVector3& p, const btVector3& q); - - void setEqualVertexThreshold(btScalar threshold) - { - m_equalVertexThreshold = threshold; - } - - btScalar getEqualVertexThreshold() const - { - return m_equalVertexThreshold; - } - - bool closest(btVector3& v); - - btScalar maxVertex(); - - bool fullSimplex() const - { - return (m_numVertices == 4); - } - - int getSimplex(btVector3 *pBuf, btVector3 *qBuf, btVector3 *yBuf) const; - - bool inSimplex(const btVector3& w); - - void backup_closest(btVector3& v) ; - - bool emptySimplex() const ; - - void compute_points(btVector3& p1, btVector3& p2) ; - - int numVertices() const - { - return m_numVertices; - } - - -}; - -#endif //VoronoiSimplexSolver diff --git a/extern/bullet2/BulletDynamics/CMakeLists.txt b/extern/bullet2/BulletDynamics/CMakeLists.txt deleted file mode 100644 index 7516e2b957f..00000000000 --- a/extern/bullet2/BulletDynamics/CMakeLists.txt +++ /dev/null @@ -1,112 +0,0 @@ -INCLUDE_DIRECTORIES( ${BULLET_PHYSICS_SOURCE_DIR}/src ) - - - -SET(BulletDynamics_SRCS - Character/btKinematicCharacterController.cpp - ConstraintSolver/btConeTwistConstraint.cpp - ConstraintSolver/btContactConstraint.cpp - ConstraintSolver/btGeneric6DofConstraint.cpp - ConstraintSolver/btGeneric6DofSpringConstraint.cpp - ConstraintSolver/btHinge2Constraint.cpp - ConstraintSolver/btHingeConstraint.cpp - ConstraintSolver/btPoint2PointConstraint.cpp - ConstraintSolver/btSequentialImpulseConstraintSolver.cpp - ConstraintSolver/btSliderConstraint.cpp - ConstraintSolver/btSolve2LinearConstraint.cpp - ConstraintSolver/btTypedConstraint.cpp - ConstraintSolver/btUniversalConstraint.cpp - Dynamics/btContinuousDynamicsWorld.cpp - Dynamics/btDiscreteDynamicsWorld.cpp - Dynamics/btRigidBody.cpp - Dynamics/btSimpleDynamicsWorld.cpp - Dynamics/Bullet-C-API.cpp - Vehicle/btRaycastVehicle.cpp - Vehicle/btWheelInfo.cpp -) - -SET(Root_HDRS - ../btBulletDynamicsCommon.h - ../btBulletCollisionCommon.h -) -SET(ConstraintSolver_HDRS - ConstraintSolver/btConeTwistConstraint.h - ConstraintSolver/btConstraintSolver.h - ConstraintSolver/btContactConstraint.h - ConstraintSolver/btContactSolverInfo.h - ConstraintSolver/btGeneric6DofConstraint.h - ConstraintSolver/btGeneric6DofSpringConstraint.h - ConstraintSolver/btHinge2Constraint.h - ConstraintSolver/btHingeConstraint.h - ConstraintSolver/btJacobianEntry.h - ConstraintSolver/btPoint2PointConstraint.h - ConstraintSolver/btSequentialImpulseConstraintSolver.h - ConstraintSolver/btSliderConstraint.h - ConstraintSolver/btSolve2LinearConstraint.h - ConstraintSolver/btSolverBody.h - ConstraintSolver/btSolverConstraint.h - ConstraintSolver/btTypedConstraint.h - ConstraintSolver/btUniversalConstraint.h -) -SET(Dynamics_HDRS - Dynamics/btActionInterface.h - Dynamics/btContinuousDynamicsWorld.h - Dynamics/btDiscreteDynamicsWorld.h - Dynamics/btDynamicsWorld.h - Dynamics/btSimpleDynamicsWorld.h - Dynamics/btRigidBody.h -) -SET(Vehicle_HDRS - Vehicle/btRaycastVehicle.h - Vehicle/btVehicleRaycaster.h - Vehicle/btWheelInfo.h -) - -SET(Character_HDRS - Character/btCharacterControllerInterface.h - Character/btKinematicCharacterController.h -) - - - -SET(BulletDynamics_HDRS - ${Root_HDRS} - ${ConstraintSolver_HDRS} - ${Dynamics_HDRS} - ${Vehicle_HDRS} - ${Character_HDRS} -) - - -ADD_LIBRARY(BulletDynamics ${BulletDynamics_SRCS} ${BulletDynamics_HDRS}) -SET_TARGET_PROPERTIES(BulletDynamics PROPERTIES VERSION ${BULLET_VERSION}) -SET_TARGET_PROPERTIES(BulletDynamics PROPERTIES SOVERSION ${BULLET_VERSION}) -IF (BUILD_SHARED_LIBS) - TARGET_LINK_LIBRARIES(BulletDynamics BulletCollision LinearMath) -ENDIF (BUILD_SHARED_LIBS) - -IF (INSTALL_LIBS) - IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) - IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS BulletDynamics DESTINATION .) - ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS BulletDynamics DESTINATION lib${LIB_SUFFIX}) - INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h") - INSTALL(FILES ../btBulletDynamicsCommon.h DESTINATION include/BulletDynamics) - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - SET_TARGET_PROPERTIES(BulletDynamics PROPERTIES FRAMEWORK true) - - SET_TARGET_PROPERTIES(BulletDynamics PROPERTIES PUBLIC_HEADER ${Root_HDRS}) - # Have to list out sub-directories manually: - SET_PROPERTY(SOURCE ${ConstraintSolver_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/ConstraintSolver) - SET_PROPERTY(SOURCE ${Dynamics_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/Dynamics) - SET_PROPERTY(SOURCE ${Vehicle_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/Vehicle) - SET_PROPERTY(SOURCE ${Character_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/Character) - - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) -ENDIF (INSTALL_LIBS) \ No newline at end of file diff --git a/extern/bullet2/BulletDynamics/Character/btCharacterControllerInterface.h b/extern/bullet2/BulletDynamics/Character/btCharacterControllerInterface.h deleted file mode 100644 index 19373daa241..00000000000 --- a/extern/bullet2/BulletDynamics/Character/btCharacterControllerInterface.h +++ /dev/null @@ -1,45 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2008 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef CHARACTER_CONTROLLER_INTERFACE_H -#define CHARACTER_CONTROLLER_INTERFACE_H - -#include "LinearMath/btVector3.h" -#include "BulletDynamics/Dynamics/btActionInterface.h" - -class btCollisionShape; -class btRigidBody; -class btCollisionWorld; - -class btCharacterControllerInterface : public btActionInterface -{ -public: - btCharacterControllerInterface () {}; - virtual ~btCharacterControllerInterface () {}; - - virtual void setWalkDirection(const btVector3& walkDirection) = 0; - virtual void setVelocityForTimeInterval(const btVector3& velocity, btScalar timeInterval) = 0; - virtual void reset () = 0; - virtual void warp (const btVector3& origin) = 0; - - virtual void preStep ( btCollisionWorld* collisionWorld) = 0; - virtual void playerStep (btCollisionWorld* collisionWorld, btScalar dt) = 0; - virtual bool canJump () const = 0; - virtual void jump () = 0; - - virtual bool onGround () const = 0; -}; - -#endif diff --git a/extern/bullet2/BulletDynamics/Character/btKinematicCharacterController.cpp b/extern/bullet2/BulletDynamics/Character/btKinematicCharacterController.cpp deleted file mode 100644 index d551218272e..00000000000 --- a/extern/bullet2/BulletDynamics/Character/btKinematicCharacterController.cpp +++ /dev/null @@ -1,553 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2008 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "LinearMath/btIDebugDraw.h" -#include "BulletCollision/CollisionDispatch/btGhostObject.h" -#include "BulletCollision/CollisionShapes/btMultiSphereShape.h" -#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h" -#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btCollisionWorld.h" -#include "LinearMath/btDefaultMotionState.h" -#include "btKinematicCharacterController.h" - - -// static helper method -static btVector3 -getNormalizedVector(const btVector3& v) -{ - btVector3 n = v.normalized(); - if (n.length() < SIMD_EPSILON) { - n.setValue(0, 0, 0); - } - return n; -} - - -///@todo Interact with dynamic objects, -///Ride kinematicly animated platforms properly -///More realistic (or maybe just a config option) falling -/// -> Should integrate falling velocity manually and use that in stepDown() -///Support jumping -///Support ducking -class btKinematicClosestNotMeRayResultCallback : public btCollisionWorld::ClosestRayResultCallback -{ -public: - btKinematicClosestNotMeRayResultCallback (btCollisionObject* me) : btCollisionWorld::ClosestRayResultCallback(btVector3(0.0, 0.0, 0.0), btVector3(0.0, 0.0, 0.0)) - { - m_me = me; - } - - virtual btScalar addSingleResult(btCollisionWorld::LocalRayResult& rayResult,bool normalInWorldSpace) - { - if (rayResult.m_collisionObject == m_me) - return 1.0; - - return ClosestRayResultCallback::addSingleResult (rayResult, normalInWorldSpace); - } -protected: - btCollisionObject* m_me; -}; - -class btKinematicClosestNotMeConvexResultCallback : public btCollisionWorld::ClosestConvexResultCallback -{ -public: - btKinematicClosestNotMeConvexResultCallback (btCollisionObject* me) : btCollisionWorld::ClosestConvexResultCallback(btVector3(0.0, 0.0, 0.0), btVector3(0.0, 0.0, 0.0)) - { - m_me = me; - } - - virtual btScalar addSingleResult(btCollisionWorld::LocalConvexResult& convexResult,bool normalInWorldSpace) - { - if (convexResult.m_hitCollisionObject == m_me) - return 1.0; - - return ClosestConvexResultCallback::addSingleResult (convexResult, normalInWorldSpace); - } -protected: - btCollisionObject* m_me; -}; - -/* - * Returns the reflection direction of a ray going 'direction' hitting a surface with normal 'normal' - * - * from: http://www-cs-students.stanford.edu/~adityagp/final/node3.html - */ -btVector3 btKinematicCharacterController::computeReflectionDirection (const btVector3& direction, const btVector3& normal) -{ - return direction - (btScalar(2.0) * direction.dot(normal)) * normal; -} - -/* - * Returns the portion of 'direction' that is parallel to 'normal' - */ -btVector3 btKinematicCharacterController::parallelComponent (const btVector3& direction, const btVector3& normal) -{ - btScalar magnitude = direction.dot(normal); - return normal * magnitude; -} - -/* - * Returns the portion of 'direction' that is perpindicular to 'normal' - */ -btVector3 btKinematicCharacterController::perpindicularComponent (const btVector3& direction, const btVector3& normal) -{ - return direction - parallelComponent(direction, normal); -} - -btKinematicCharacterController::btKinematicCharacterController (btPairCachingGhostObject* ghostObject,btConvexShape* convexShape,btScalar stepHeight, int upAxis) -{ - m_upAxis = upAxis; - m_addedMargin = 0.02f; - m_walkDirection.setValue(0,0,0); - m_useGhostObjectSweepTest = true; - m_ghostObject = ghostObject; - m_stepHeight = stepHeight; - m_turnAngle = btScalar(0.0); - m_convexShape=convexShape; - m_useWalkDirection = true; // use walk direction by default, legacy behavior - m_velocityTimeInterval = 0.0; -} - -btKinematicCharacterController::~btKinematicCharacterController () -{ -} - -btPairCachingGhostObject* btKinematicCharacterController::getGhostObject() -{ - return m_ghostObject; -} - -bool btKinematicCharacterController::recoverFromPenetration ( btCollisionWorld* collisionWorld) -{ - - bool penetration = false; - - collisionWorld->getDispatcher()->dispatchAllCollisionPairs(m_ghostObject->getOverlappingPairCache(), collisionWorld->getDispatchInfo(), collisionWorld->getDispatcher()); - - m_currentPosition = m_ghostObject->getWorldTransform().getOrigin(); - - btScalar maxPen = btScalar(0.0); - for (int i = 0; i < m_ghostObject->getOverlappingPairCache()->getNumOverlappingPairs(); i++) - { - m_manifoldArray.resize(0); - - btBroadphasePair* collisionPair = &m_ghostObject->getOverlappingPairCache()->getOverlappingPairArray()[i]; - - if (collisionPair->m_algorithm) - collisionPair->m_algorithm->getAllContactManifolds(m_manifoldArray); - - - for (int j=0;jgetBody0() == m_ghostObject ? btScalar(-1.0) : btScalar(1.0); - for (int p=0;pgetNumContacts();p++) - { - const btManifoldPoint&pt = manifold->getContactPoint(p); - - if (pt.getDistance() < 0.0) - { - if (pt.getDistance() < maxPen) - { - maxPen = pt.getDistance(); - m_touchingNormal = pt.m_normalWorldOnB * directionSign;//?? - - } - m_currentPosition += pt.m_normalWorldOnB * directionSign * pt.getDistance() * btScalar(0.2); - penetration = true; - } else { - //printf("touching %f\n", pt.getDistance()); - } - } - - //manifold->clearManifold(); - } - } - btTransform newTrans = m_ghostObject->getWorldTransform(); - newTrans.setOrigin(m_currentPosition); - m_ghostObject->setWorldTransform(newTrans); -// printf("m_touchingNormal = %f,%f,%f\n",m_touchingNormal[0],m_touchingNormal[1],m_touchingNormal[2]); - return penetration; -} - -void btKinematicCharacterController::stepUp ( btCollisionWorld* world) -{ - // phase 1: up - btTransform start, end; - m_targetPosition = m_currentPosition + getUpAxisDirections()[m_upAxis] * m_stepHeight; - - start.setIdentity (); - end.setIdentity (); - - /* FIXME: Handle penetration properly */ - start.setOrigin (m_currentPosition + getUpAxisDirections()[m_upAxis] * btScalar(0.1f)); - end.setOrigin (m_targetPosition); - - btKinematicClosestNotMeConvexResultCallback callback (m_ghostObject); - callback.m_collisionFilterGroup = getGhostObject()->getBroadphaseHandle()->m_collisionFilterGroup; - callback.m_collisionFilterMask = getGhostObject()->getBroadphaseHandle()->m_collisionFilterMask; - - if (m_useGhostObjectSweepTest) - { - m_ghostObject->convexSweepTest (m_convexShape, start, end, callback, world->getDispatchInfo().m_allowedCcdPenetration); - } - else - { - world->convexSweepTest (m_convexShape, start, end, callback); - } - - if (callback.hasHit()) - { - // we moved up only a fraction of the step height - m_currentStepOffset = m_stepHeight * callback.m_closestHitFraction; - m_currentPosition.setInterpolate3 (m_currentPosition, m_targetPosition, callback.m_closestHitFraction); - } else { - m_currentStepOffset = m_stepHeight; - m_currentPosition = m_targetPosition; - } -} - -void btKinematicCharacterController::updateTargetPositionBasedOnCollision (const btVector3& hitNormal, btScalar tangentMag, btScalar normalMag) -{ - btVector3 movementDirection = m_targetPosition - m_currentPosition; - btScalar movementLength = movementDirection.length(); - if (movementLength>SIMD_EPSILON) - { - movementDirection.normalize(); - - btVector3 reflectDir = computeReflectionDirection (movementDirection, hitNormal); - reflectDir.normalize(); - - btVector3 parallelDir, perpindicularDir; - - parallelDir = parallelComponent (reflectDir, hitNormal); - perpindicularDir = perpindicularComponent (reflectDir, hitNormal); - - m_targetPosition = m_currentPosition; - if (0)//tangentMag != 0.0) - { - btVector3 parComponent = parallelDir * btScalar (tangentMag*movementLength); -// printf("parComponent=%f,%f,%f\n",parComponent[0],parComponent[1],parComponent[2]); - m_targetPosition += parComponent; - } - - if (normalMag != 0.0) - { - btVector3 perpComponent = perpindicularDir * btScalar (normalMag*movementLength); -// printf("perpComponent=%f,%f,%f\n",perpComponent[0],perpComponent[1],perpComponent[2]); - m_targetPosition += perpComponent; - } - } else - { -// printf("movementLength don't normalize a zero vector\n"); - } -} - -void btKinematicCharacterController::stepForwardAndStrafe ( btCollisionWorld* collisionWorld, const btVector3& walkMove) -{ - // printf("m_normalizedDirection=%f,%f,%f\n", - // m_normalizedDirection[0],m_normalizedDirection[1],m_normalizedDirection[2]); - // phase 2: forward and strafe - btTransform start, end; - m_targetPosition = m_currentPosition + walkMove; - start.setIdentity (); - end.setIdentity (); - - btScalar fraction = 1.0; - btScalar distance2 = (m_currentPosition-m_targetPosition).length2(); -// printf("distance2=%f\n",distance2); - - if (m_touchingContact) - { - if (m_normalizedDirection.dot(m_touchingNormal) > btScalar(0.0)) - updateTargetPositionBasedOnCollision (m_touchingNormal); - } - - int maxIter = 10; - - while (fraction > btScalar(0.01) && maxIter-- > 0) - { - start.setOrigin (m_currentPosition); - end.setOrigin (m_targetPosition); - - btKinematicClosestNotMeConvexResultCallback callback (m_ghostObject); - callback.m_collisionFilterGroup = getGhostObject()->getBroadphaseHandle()->m_collisionFilterGroup; - callback.m_collisionFilterMask = getGhostObject()->getBroadphaseHandle()->m_collisionFilterMask; - - - btScalar margin = m_convexShape->getMargin(); - m_convexShape->setMargin(margin + m_addedMargin); - - - if (m_useGhostObjectSweepTest) - { - m_ghostObject->convexSweepTest (m_convexShape, start, end, callback, collisionWorld->getDispatchInfo().m_allowedCcdPenetration); - } else - { - collisionWorld->convexSweepTest (m_convexShape, start, end, callback, collisionWorld->getDispatchInfo().m_allowedCcdPenetration); - } - - m_convexShape->setMargin(margin); - - - fraction -= callback.m_closestHitFraction; - - if (callback.hasHit()) - { - // we moved only a fraction - btScalar hitDistance = (callback.m_hitPointWorld - m_currentPosition).length(); - if (hitDistance<0.f) - { -// printf("neg dist?\n"); - } - - /* If the distance is farther than the collision margin, move */ - if (hitDistance > m_addedMargin) - { -// printf("callback.m_closestHitFraction=%f\n",callback.m_closestHitFraction); - m_currentPosition.setInterpolate3 (m_currentPosition, m_targetPosition, callback.m_closestHitFraction); - } - - updateTargetPositionBasedOnCollision (callback.m_hitNormalWorld); - btVector3 currentDir = m_targetPosition - m_currentPosition; - distance2 = currentDir.length2(); - if (distance2 > SIMD_EPSILON) - { - currentDir.normalize(); - /* See Quake2: "If velocity is against original velocity, stop ead to avoid tiny oscilations in sloping corners." */ - if (currentDir.dot(m_normalizedDirection) <= btScalar(0.0)) - { - break; - } - } else - { -// printf("currentDir: don't normalize a zero vector\n"); - break; - } - } else { - // we moved whole way - m_currentPosition = m_targetPosition; - } - - // if (callback.m_closestHitFraction == 0.f) - // break; - - } -} - -void btKinematicCharacterController::stepDown ( btCollisionWorld* collisionWorld, btScalar dt) -{ - btTransform start, end; - - // phase 3: down - btVector3 step_drop = getUpAxisDirections()[m_upAxis] * m_currentStepOffset; - btVector3 gravity_drop = getUpAxisDirections()[m_upAxis] * m_stepHeight; - m_targetPosition -= (step_drop + gravity_drop); - - start.setIdentity (); - end.setIdentity (); - - start.setOrigin (m_currentPosition); - end.setOrigin (m_targetPosition); - - btKinematicClosestNotMeConvexResultCallback callback (m_ghostObject); - callback.m_collisionFilterGroup = getGhostObject()->getBroadphaseHandle()->m_collisionFilterGroup; - callback.m_collisionFilterMask = getGhostObject()->getBroadphaseHandle()->m_collisionFilterMask; - - if (m_useGhostObjectSweepTest) - { - m_ghostObject->convexSweepTest (m_convexShape, start, end, callback, collisionWorld->getDispatchInfo().m_allowedCcdPenetration); - } else - { - collisionWorld->convexSweepTest (m_convexShape, start, end, callback, collisionWorld->getDispatchInfo().m_allowedCcdPenetration); - } - - if (callback.hasHit()) - { - // we dropped a fraction of the height -> hit floor - m_currentPosition.setInterpolate3 (m_currentPosition, m_targetPosition, callback.m_closestHitFraction); - } else { - // we dropped the full height - - m_currentPosition = m_targetPosition; - } -} - - - -void btKinematicCharacterController::setWalkDirection -( -const btVector3& walkDirection -) -{ - m_useWalkDirection = true; - m_walkDirection = walkDirection; - m_normalizedDirection = getNormalizedVector(m_walkDirection); -} - - - -void btKinematicCharacterController::setVelocityForTimeInterval -( -const btVector3& velocity, -btScalar timeInterval -) -{ -// printf("setVelocity!\n"); -// printf(" interval: %f\n", timeInterval); -// printf(" velocity: (%f, %f, %f)\n", -// velocity.x(), velocity.y(), velocity.z()); - - m_useWalkDirection = false; - m_walkDirection = velocity; - m_normalizedDirection = getNormalizedVector(m_walkDirection); - m_velocityTimeInterval = timeInterval; -} - - - -void btKinematicCharacterController::reset () -{ -} - -void btKinematicCharacterController::warp (const btVector3& origin) -{ - btTransform xform; - xform.setIdentity(); - xform.setOrigin (origin); - m_ghostObject->setWorldTransform (xform); -} - - -void btKinematicCharacterController::preStep ( btCollisionWorld* collisionWorld) -{ - - int numPenetrationLoops = 0; - m_touchingContact = false; - while (recoverFromPenetration (collisionWorld)) - { - numPenetrationLoops++; - m_touchingContact = true; - if (numPenetrationLoops > 4) - { -// printf("character could not recover from penetration = %d\n", numPenetrationLoops); - break; - } - } - - m_currentPosition = m_ghostObject->getWorldTransform().getOrigin(); - m_targetPosition = m_currentPosition; -// printf("m_targetPosition=%f,%f,%f\n",m_targetPosition[0],m_targetPosition[1],m_targetPosition[2]); - - -} - -void btKinematicCharacterController::playerStep ( btCollisionWorld* collisionWorld, btScalar dt) -{ -// printf("playerStep(): "); -// printf(" dt = %f", dt); - - // quick check... - if (!m_useWalkDirection && m_velocityTimeInterval <= 0.0) { -// printf("\n"); - return; // no motion - } - - btTransform xform; - xform = m_ghostObject->getWorldTransform (); - -// printf("walkDirection(%f,%f,%f)\n",walkDirection[0],walkDirection[1],walkDirection[2]); -// printf("walkSpeed=%f\n",walkSpeed); - - stepUp (collisionWorld); - if (m_useWalkDirection) { - stepForwardAndStrafe (collisionWorld, m_walkDirection); - } else { - //printf(" time: %f", m_velocityTimeInterval); - // still have some time left for moving! - btScalar dtMoving = - (dt < m_velocityTimeInterval) ? dt : m_velocityTimeInterval; - m_velocityTimeInterval -= dt; - - // how far will we move while we are moving? - btVector3 move = m_walkDirection * dtMoving; - - // printf(" dtMoving: %f", dtMoving); - - // okay, step - stepForwardAndStrafe(collisionWorld, move); - } - stepDown (collisionWorld, dt); - - // printf("\n"); - - xform.setOrigin (m_currentPosition); - m_ghostObject->setWorldTransform (xform); -} - -void btKinematicCharacterController::setFallSpeed (btScalar fallSpeed) -{ - m_fallSpeed = fallSpeed; -} - -void btKinematicCharacterController::setJumpSpeed (btScalar jumpSpeed) -{ - m_jumpSpeed = jumpSpeed; -} - -void btKinematicCharacterController::setMaxJumpHeight (btScalar maxJumpHeight) -{ - m_maxJumpHeight = maxJumpHeight; -} - -bool btKinematicCharacterController::canJump () const -{ - return onGround(); -} - -void btKinematicCharacterController::jump () -{ - if (!canJump()) - return; - -#if 0 - currently no jumping. - btTransform xform; - m_rigidBody->getMotionState()->getWorldTransform (xform); - btVector3 up = xform.getBasis()[1]; - up.normalize (); - btScalar magnitude = (btScalar(1.0)/m_rigidBody->getInvMass()) * btScalar(8.0); - m_rigidBody->applyCentralImpulse (up * magnitude); -#endif -} - -bool btKinematicCharacterController::onGround () const -{ - return true; -} - - -void btKinematicCharacterController::debugDraw(btIDebugDraw* debugDrawer) -{ -} - - -btVector3* btKinematicCharacterController::getUpAxisDirections() -{ - static btVector3 sUpAxisDirection[3] = { btVector3(1.0f, 0.0f, 0.0f), btVector3(0.0f, 1.0f, 0.0f), btVector3(0.0f, 0.0f, 1.0f) }; - - return sUpAxisDirection; -} \ No newline at end of file diff --git a/extern/bullet2/BulletDynamics/Character/btKinematicCharacterController.h b/extern/bullet2/BulletDynamics/Character/btKinematicCharacterController.h deleted file mode 100644 index 16bf5df7e70..00000000000 --- a/extern/bullet2/BulletDynamics/Character/btKinematicCharacterController.h +++ /dev/null @@ -1,145 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2008 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef KINEMATIC_CHARACTER_CONTROLLER_H -#define KINEMATIC_CHARACTER_CONTROLLER_H - -#include "LinearMath/btVector3.h" - -#include "btCharacterControllerInterface.h" - -#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" - - -class btCollisionShape; -class btRigidBody; -class btCollisionWorld; -class btCollisionDispatcher; -class btPairCachingGhostObject; - -///btKinematicCharacterController is an object that supports a sliding motion in a world. -///It uses a ghost object and convex sweep test to test for upcoming collisions. This is combined with discrete collision detection to recover from penetrations. -///Interaction between btKinematicCharacterController and dynamic rigid bodies needs to be explicity implemented by the user. -class btKinematicCharacterController : public btCharacterControllerInterface -{ -protected: - - btScalar m_halfHeight; - - btPairCachingGhostObject* m_ghostObject; - btConvexShape* m_convexShape;//is also in m_ghostObject, but it needs to be convex, so we store it here to avoid upcast - - btScalar m_fallSpeed; - btScalar m_jumpSpeed; - btScalar m_maxJumpHeight; - - btScalar m_turnAngle; - - btScalar m_stepHeight; - - btScalar m_addedMargin;//@todo: remove this and fix the code - - ///this is the desired walk direction, set by the user - btVector3 m_walkDirection; - btVector3 m_normalizedDirection; - - //some internal variables - btVector3 m_currentPosition; - btScalar m_currentStepOffset; - btVector3 m_targetPosition; - - ///keep track of the contact manifolds - btManifoldArray m_manifoldArray; - - bool m_touchingContact; - btVector3 m_touchingNormal; - - bool m_useGhostObjectSweepTest; - bool m_useWalkDirection; - btScalar m_velocityTimeInterval; - int m_upAxis; - - static btVector3* getUpAxisDirections(); - - btVector3 computeReflectionDirection (const btVector3& direction, const btVector3& normal); - btVector3 parallelComponent (const btVector3& direction, const btVector3& normal); - btVector3 perpindicularComponent (const btVector3& direction, const btVector3& normal); - - bool recoverFromPenetration ( btCollisionWorld* collisionWorld); - void stepUp (btCollisionWorld* collisionWorld); - void updateTargetPositionBasedOnCollision (const btVector3& hit_normal, btScalar tangentMag = btScalar(0.0), btScalar normalMag = btScalar(1.0)); - void stepForwardAndStrafe (btCollisionWorld* collisionWorld, const btVector3& walkMove); - void stepDown (btCollisionWorld* collisionWorld, btScalar dt); -public: - btKinematicCharacterController (btPairCachingGhostObject* ghostObject,btConvexShape* convexShape,btScalar stepHeight, int upAxis = 1); - ~btKinematicCharacterController (); - - - ///btActionInterface interface - virtual void updateAction( btCollisionWorld* collisionWorld,btScalar deltaTime) - { - preStep ( collisionWorld); - playerStep (collisionWorld, deltaTime); - } - - ///btActionInterface interface - void debugDraw(btIDebugDraw* debugDrawer); - - void setUpAxis (int axis) - { - if (axis < 0) - axis = 0; - if (axis > 2) - axis = 2; - m_upAxis = axis; - } - - /// This should probably be called setPositionIncrementPerSimulatorStep. - /// This is neither a direction nor a velocity, but the amount to - /// increment the position each simulation iteration, regardless - /// of dt. - /// This call will reset any velocity set by setVelocityForTimeInterval(). - virtual void setWalkDirection(const btVector3& walkDirection); - - /// Caller provides a velocity with which the character should move for - /// the given time period. After the time period, velocity is reset - /// to zero. - /// This call will reset any walk direction set by setWalkDirection(). - /// Negative time intervals will result in no motion. - virtual void setVelocityForTimeInterval(const btVector3& velocity, - btScalar timeInterval); - - void reset (); - void warp (const btVector3& origin); - - void preStep ( btCollisionWorld* collisionWorld); - void playerStep ( btCollisionWorld* collisionWorld, btScalar dt); - - void setFallSpeed (btScalar fallSpeed); - void setJumpSpeed (btScalar jumpSpeed); - void setMaxJumpHeight (btScalar maxJumpHeight); - bool canJump () const; - void jump (); - - btPairCachingGhostObject* getGhostObject(); - void setUseGhostSweepTest(bool useGhostObjectSweepTest) - { - m_useGhostObjectSweepTest = useGhostObjectSweepTest; - } - - bool onGround () const; -}; - -#endif // KINEMATIC_CHARACTER_CONTROLLER_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp deleted file mode 100644 index bf77c495404..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp +++ /dev/null @@ -1,1117 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -btConeTwistConstraint is Copyright (c) 2007 Starbreeze Studios - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -Written by: Marcus Hennix -*/ - - -#include "btConeTwistConstraint.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include "LinearMath/btTransformUtil.h" -#include "LinearMath/btMinMax.h" -#include - - - -//#define CONETWIST_USE_OBSOLETE_SOLVER true -#define CONETWIST_USE_OBSOLETE_SOLVER false -#define CONETWIST_DEF_FIX_THRESH btScalar(.05f) - - -SIMD_FORCE_INLINE btScalar computeAngularImpulseDenominator(const btVector3& axis, const btMatrix3x3& invInertiaWorld) -{ - btVector3 vec = axis * invInertiaWorld; - return axis.dot(vec); -} - - - - -btConeTwistConstraint::btConeTwistConstraint(btRigidBody& rbA,btRigidBody& rbB, - const btTransform& rbAFrame,const btTransform& rbBFrame) - :btTypedConstraint(CONETWIST_CONSTRAINT_TYPE, rbA,rbB),m_rbAFrame(rbAFrame),m_rbBFrame(rbBFrame), - m_angularOnly(false), - m_useSolveConstraintObsolete(CONETWIST_USE_OBSOLETE_SOLVER) -{ - init(); -} - -btConeTwistConstraint::btConeTwistConstraint(btRigidBody& rbA,const btTransform& rbAFrame) - :btTypedConstraint(CONETWIST_CONSTRAINT_TYPE,rbA),m_rbAFrame(rbAFrame), - m_angularOnly(false), - m_useSolveConstraintObsolete(CONETWIST_USE_OBSOLETE_SOLVER) -{ - m_rbBFrame = m_rbAFrame; - init(); -} - - -void btConeTwistConstraint::init() -{ - m_angularOnly = false; - m_solveTwistLimit = false; - m_solveSwingLimit = false; - m_bMotorEnabled = false; - m_maxMotorImpulse = btScalar(-1); - - setLimit(btScalar(BT_LARGE_FLOAT), btScalar(BT_LARGE_FLOAT), btScalar(BT_LARGE_FLOAT)); - m_damping = btScalar(0.01); - m_fixThresh = CONETWIST_DEF_FIX_THRESH; - m_flags = 0; - m_linCFM = btScalar(0.f); - m_linERP = btScalar(0.7f); - m_angCFM = btScalar(0.f); -} - - -void btConeTwistConstraint::getInfo1 (btConstraintInfo1* info) -{ - if (m_useSolveConstraintObsolete) - { - info->m_numConstraintRows = 0; - info->nub = 0; - } - else - { - info->m_numConstraintRows = 3; - info->nub = 3; - calcAngleInfo2(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform(),m_rbA.getInvInertiaTensorWorld(),m_rbB.getInvInertiaTensorWorld()); - if(m_solveSwingLimit) - { - info->m_numConstraintRows++; - info->nub--; - if((m_swingSpan1 < m_fixThresh) && (m_swingSpan2 < m_fixThresh)) - { - info->m_numConstraintRows++; - info->nub--; - } - } - if(m_solveTwistLimit) - { - info->m_numConstraintRows++; - info->nub--; - } - } -} - -void btConeTwistConstraint::getInfo1NonVirtual (btConstraintInfo1* info) -{ - //always reserve 6 rows: object transform is not available on SPU - info->m_numConstraintRows = 6; - info->nub = 0; - -} - - -void btConeTwistConstraint::getInfo2 (btConstraintInfo2* info) -{ - getInfo2NonVirtual(info,m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform(),m_rbA.getInvInertiaTensorWorld(),m_rbB.getInvInertiaTensorWorld()); -} - -void btConeTwistConstraint::getInfo2NonVirtual (btConstraintInfo2* info,const btTransform& transA,const btTransform& transB,const btMatrix3x3& invInertiaWorldA,const btMatrix3x3& invInertiaWorldB) -{ - calcAngleInfo2(transA,transB,invInertiaWorldA,invInertiaWorldB); - - btAssert(!m_useSolveConstraintObsolete); - // set jacobian - info->m_J1linearAxis[0] = 1; - info->m_J1linearAxis[info->rowskip+1] = 1; - info->m_J1linearAxis[2*info->rowskip+2] = 1; - btVector3 a1 = transA.getBasis() * m_rbAFrame.getOrigin(); - { - btVector3* angular0 = (btVector3*)(info->m_J1angularAxis); - btVector3* angular1 = (btVector3*)(info->m_J1angularAxis+info->rowskip); - btVector3* angular2 = (btVector3*)(info->m_J1angularAxis+2*info->rowskip); - btVector3 a1neg = -a1; - a1neg.getSkewSymmetricMatrix(angular0,angular1,angular2); - } - btVector3 a2 = transB.getBasis() * m_rbBFrame.getOrigin(); - { - btVector3* angular0 = (btVector3*)(info->m_J2angularAxis); - btVector3* angular1 = (btVector3*)(info->m_J2angularAxis+info->rowskip); - btVector3* angular2 = (btVector3*)(info->m_J2angularAxis+2*info->rowskip); - a2.getSkewSymmetricMatrix(angular0,angular1,angular2); - } - // set right hand side - btScalar linERP = (m_flags & BT_CONETWIST_FLAGS_LIN_ERP) ? m_linERP : info->erp; - btScalar k = info->fps * linERP; - int j; - for (j=0; j<3; j++) - { - info->m_constraintError[j*info->rowskip] = k * (a2[j] + transB.getOrigin()[j] - a1[j] - transA.getOrigin()[j]); - info->m_lowerLimit[j*info->rowskip] = -SIMD_INFINITY; - info->m_upperLimit[j*info->rowskip] = SIMD_INFINITY; - if(m_flags & BT_CONETWIST_FLAGS_LIN_CFM) - { - info->cfm[j*info->rowskip] = m_linCFM; - } - } - int row = 3; - int srow = row * info->rowskip; - btVector3 ax1; - // angular limits - if(m_solveSwingLimit) - { - btScalar *J1 = info->m_J1angularAxis; - btScalar *J2 = info->m_J2angularAxis; - if((m_swingSpan1 < m_fixThresh) && (m_swingSpan2 < m_fixThresh)) - { - btTransform trA = transA*m_rbAFrame; - btVector3 p = trA.getBasis().getColumn(1); - btVector3 q = trA.getBasis().getColumn(2); - int srow1 = srow + info->rowskip; - J1[srow+0] = p[0]; - J1[srow+1] = p[1]; - J1[srow+2] = p[2]; - J1[srow1+0] = q[0]; - J1[srow1+1] = q[1]; - J1[srow1+2] = q[2]; - J2[srow+0] = -p[0]; - J2[srow+1] = -p[1]; - J2[srow+2] = -p[2]; - J2[srow1+0] = -q[0]; - J2[srow1+1] = -q[1]; - J2[srow1+2] = -q[2]; - btScalar fact = info->fps * m_relaxationFactor; - info->m_constraintError[srow] = fact * m_swingAxis.dot(p); - info->m_constraintError[srow1] = fact * m_swingAxis.dot(q); - info->m_lowerLimit[srow] = -SIMD_INFINITY; - info->m_upperLimit[srow] = SIMD_INFINITY; - info->m_lowerLimit[srow1] = -SIMD_INFINITY; - info->m_upperLimit[srow1] = SIMD_INFINITY; - srow = srow1 + info->rowskip; - } - else - { - ax1 = m_swingAxis * m_relaxationFactor * m_relaxationFactor; - J1[srow+0] = ax1[0]; - J1[srow+1] = ax1[1]; - J1[srow+2] = ax1[2]; - J2[srow+0] = -ax1[0]; - J2[srow+1] = -ax1[1]; - J2[srow+2] = -ax1[2]; - btScalar k = info->fps * m_biasFactor; - - info->m_constraintError[srow] = k * m_swingCorrection; - if(m_flags & BT_CONETWIST_FLAGS_ANG_CFM) - { - info->cfm[srow] = m_angCFM; - } - // m_swingCorrection is always positive or 0 - info->m_lowerLimit[srow] = 0; - info->m_upperLimit[srow] = SIMD_INFINITY; - srow += info->rowskip; - } - } - if(m_solveTwistLimit) - { - ax1 = m_twistAxis * m_relaxationFactor * m_relaxationFactor; - btScalar *J1 = info->m_J1angularAxis; - btScalar *J2 = info->m_J2angularAxis; - J1[srow+0] = ax1[0]; - J1[srow+1] = ax1[1]; - J1[srow+2] = ax1[2]; - J2[srow+0] = -ax1[0]; - J2[srow+1] = -ax1[1]; - J2[srow+2] = -ax1[2]; - btScalar k = info->fps * m_biasFactor; - info->m_constraintError[srow] = k * m_twistCorrection; - if(m_flags & BT_CONETWIST_FLAGS_ANG_CFM) - { - info->cfm[srow] = m_angCFM; - } - if(m_twistSpan > 0.0f) - { - - if(m_twistCorrection > 0.0f) - { - info->m_lowerLimit[srow] = 0; - info->m_upperLimit[srow] = SIMD_INFINITY; - } - else - { - info->m_lowerLimit[srow] = -SIMD_INFINITY; - info->m_upperLimit[srow] = 0; - } - } - else - { - info->m_lowerLimit[srow] = -SIMD_INFINITY; - info->m_upperLimit[srow] = SIMD_INFINITY; - } - srow += info->rowskip; - } -} - - - -void btConeTwistConstraint::buildJacobian() -{ - if (m_useSolveConstraintObsolete) - { - m_appliedImpulse = btScalar(0.); - m_accTwistLimitImpulse = btScalar(0.); - m_accSwingLimitImpulse = btScalar(0.); - m_accMotorImpulse = btVector3(0.,0.,0.); - - if (!m_angularOnly) - { - btVector3 pivotAInW = m_rbA.getCenterOfMassTransform()*m_rbAFrame.getOrigin(); - btVector3 pivotBInW = m_rbB.getCenterOfMassTransform()*m_rbBFrame.getOrigin(); - btVector3 relPos = pivotBInW - pivotAInW; - - btVector3 normal[3]; - if (relPos.length2() > SIMD_EPSILON) - { - normal[0] = relPos.normalized(); - } - else - { - normal[0].setValue(btScalar(1.0),0,0); - } - - btPlaneSpace1(normal[0], normal[1], normal[2]); - - for (int i=0;i<3;i++) - { - new (&m_jac[i]) btJacobianEntry( - m_rbA.getCenterOfMassTransform().getBasis().transpose(), - m_rbB.getCenterOfMassTransform().getBasis().transpose(), - pivotAInW - m_rbA.getCenterOfMassPosition(), - pivotBInW - m_rbB.getCenterOfMassPosition(), - normal[i], - m_rbA.getInvInertiaDiagLocal(), - m_rbA.getInvMass(), - m_rbB.getInvInertiaDiagLocal(), - m_rbB.getInvMass()); - } - } - - calcAngleInfo2(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform(),m_rbA.getInvInertiaTensorWorld(),m_rbB.getInvInertiaTensorWorld()); - } -} - - - -void btConeTwistConstraint::solveConstraintObsolete(btRigidBody& bodyA,btRigidBody& bodyB,btScalar timeStep) -{ - #ifndef __SPU__ - if (m_useSolveConstraintObsolete) - { - btVector3 pivotAInW = m_rbA.getCenterOfMassTransform()*m_rbAFrame.getOrigin(); - btVector3 pivotBInW = m_rbB.getCenterOfMassTransform()*m_rbBFrame.getOrigin(); - - btScalar tau = btScalar(0.3); - - //linear part - if (!m_angularOnly) - { - btVector3 rel_pos1 = pivotAInW - m_rbA.getCenterOfMassPosition(); - btVector3 rel_pos2 = pivotBInW - m_rbB.getCenterOfMassPosition(); - - btVector3 vel1; - bodyA.internalGetVelocityInLocalPointObsolete(rel_pos1,vel1); - btVector3 vel2; - bodyB.internalGetVelocityInLocalPointObsolete(rel_pos2,vel2); - btVector3 vel = vel1 - vel2; - - for (int i=0;i<3;i++) - { - const btVector3& normal = m_jac[i].m_linearJointAxis; - btScalar jacDiagABInv = btScalar(1.) / m_jac[i].getDiagonal(); - - btScalar rel_vel; - rel_vel = normal.dot(vel); - //positional error (zeroth order error) - btScalar depth = -(pivotAInW - pivotBInW).dot(normal); //this is the error projected on the normal - btScalar impulse = depth*tau/timeStep * jacDiagABInv - rel_vel * jacDiagABInv; - m_appliedImpulse += impulse; - - btVector3 ftorqueAxis1 = rel_pos1.cross(normal); - btVector3 ftorqueAxis2 = rel_pos2.cross(normal); - bodyA.internalApplyImpulse(normal*m_rbA.getInvMass(), m_rbA.getInvInertiaTensorWorld()*ftorqueAxis1,impulse); - bodyB.internalApplyImpulse(normal*m_rbB.getInvMass(), m_rbB.getInvInertiaTensorWorld()*ftorqueAxis2,-impulse); - - } - } - - // apply motor - if (m_bMotorEnabled) - { - // compute current and predicted transforms - btTransform trACur = m_rbA.getCenterOfMassTransform(); - btTransform trBCur = m_rbB.getCenterOfMassTransform(); - btVector3 omegaA; bodyA.internalGetAngularVelocity(omegaA); - btVector3 omegaB; bodyB.internalGetAngularVelocity(omegaB); - btTransform trAPred; trAPred.setIdentity(); - btVector3 zerovec(0,0,0); - btTransformUtil::integrateTransform( - trACur, zerovec, omegaA, timeStep, trAPred); - btTransform trBPred; trBPred.setIdentity(); - btTransformUtil::integrateTransform( - trBCur, zerovec, omegaB, timeStep, trBPred); - - // compute desired transforms in world - btTransform trPose(m_qTarget); - btTransform trABDes = m_rbBFrame * trPose * m_rbAFrame.inverse(); - btTransform trADes = trBPred * trABDes; - btTransform trBDes = trAPred * trABDes.inverse(); - - // compute desired omegas in world - btVector3 omegaADes, omegaBDes; - - btTransformUtil::calculateVelocity(trACur, trADes, timeStep, zerovec, omegaADes); - btTransformUtil::calculateVelocity(trBCur, trBDes, timeStep, zerovec, omegaBDes); - - // compute delta omegas - btVector3 dOmegaA = omegaADes - omegaA; - btVector3 dOmegaB = omegaBDes - omegaB; - - // compute weighted avg axis of dOmega (weighting based on inertias) - btVector3 axisA, axisB; - btScalar kAxisAInv = 0, kAxisBInv = 0; - - if (dOmegaA.length2() > SIMD_EPSILON) - { - axisA = dOmegaA.normalized(); - kAxisAInv = getRigidBodyA().computeAngularImpulseDenominator(axisA); - } - - if (dOmegaB.length2() > SIMD_EPSILON) - { - axisB = dOmegaB.normalized(); - kAxisBInv = getRigidBodyB().computeAngularImpulseDenominator(axisB); - } - - btVector3 avgAxis = kAxisAInv * axisA + kAxisBInv * axisB; - - static bool bDoTorque = true; - if (bDoTorque && avgAxis.length2() > SIMD_EPSILON) - { - avgAxis.normalize(); - kAxisAInv = getRigidBodyA().computeAngularImpulseDenominator(avgAxis); - kAxisBInv = getRigidBodyB().computeAngularImpulseDenominator(avgAxis); - btScalar kInvCombined = kAxisAInv + kAxisBInv; - - btVector3 impulse = (kAxisAInv * dOmegaA - kAxisBInv * dOmegaB) / - (kInvCombined * kInvCombined); - - if (m_maxMotorImpulse >= 0) - { - btScalar fMaxImpulse = m_maxMotorImpulse; - if (m_bNormalizedMotorStrength) - fMaxImpulse = fMaxImpulse/kAxisAInv; - - btVector3 newUnclampedAccImpulse = m_accMotorImpulse + impulse; - btScalar newUnclampedMag = newUnclampedAccImpulse.length(); - if (newUnclampedMag > fMaxImpulse) - { - newUnclampedAccImpulse.normalize(); - newUnclampedAccImpulse *= fMaxImpulse; - impulse = newUnclampedAccImpulse - m_accMotorImpulse; - } - m_accMotorImpulse += impulse; - } - - btScalar impulseMag = impulse.length(); - btVector3 impulseAxis = impulse / impulseMag; - - bodyA.internalApplyImpulse(btVector3(0,0,0), m_rbA.getInvInertiaTensorWorld()*impulseAxis, impulseMag); - bodyB.internalApplyImpulse(btVector3(0,0,0), m_rbB.getInvInertiaTensorWorld()*impulseAxis, -impulseMag); - - } - } - else if (m_damping > SIMD_EPSILON) // no motor: do a little damping - { - btVector3 angVelA; bodyA.internalGetAngularVelocity(angVelA); - btVector3 angVelB; bodyB.internalGetAngularVelocity(angVelB); - btVector3 relVel = angVelB - angVelA; - if (relVel.length2() > SIMD_EPSILON) - { - btVector3 relVelAxis = relVel.normalized(); - btScalar m_kDamping = btScalar(1.) / - (getRigidBodyA().computeAngularImpulseDenominator(relVelAxis) + - getRigidBodyB().computeAngularImpulseDenominator(relVelAxis)); - btVector3 impulse = m_damping * m_kDamping * relVel; - - btScalar impulseMag = impulse.length(); - btVector3 impulseAxis = impulse / impulseMag; - bodyA.internalApplyImpulse(btVector3(0,0,0), m_rbA.getInvInertiaTensorWorld()*impulseAxis, impulseMag); - bodyB.internalApplyImpulse(btVector3(0,0,0), m_rbB.getInvInertiaTensorWorld()*impulseAxis, -impulseMag); - } - } - - // joint limits - { - ///solve angular part - btVector3 angVelA; - bodyA.internalGetAngularVelocity(angVelA); - btVector3 angVelB; - bodyB.internalGetAngularVelocity(angVelB); - - // solve swing limit - if (m_solveSwingLimit) - { - btScalar amplitude = m_swingLimitRatio * m_swingCorrection*m_biasFactor/timeStep; - btScalar relSwingVel = (angVelB - angVelA).dot(m_swingAxis); - if (relSwingVel > 0) - amplitude += m_swingLimitRatio * relSwingVel * m_relaxationFactor; - btScalar impulseMag = amplitude * m_kSwing; - - // Clamp the accumulated impulse - btScalar temp = m_accSwingLimitImpulse; - m_accSwingLimitImpulse = btMax(m_accSwingLimitImpulse + impulseMag, btScalar(0.0) ); - impulseMag = m_accSwingLimitImpulse - temp; - - btVector3 impulse = m_swingAxis * impulseMag; - - // don't let cone response affect twist - // (this can happen since body A's twist doesn't match body B's AND we use an elliptical cone limit) - { - btVector3 impulseTwistCouple = impulse.dot(m_twistAxisA) * m_twistAxisA; - btVector3 impulseNoTwistCouple = impulse - impulseTwistCouple; - impulse = impulseNoTwistCouple; - } - - impulseMag = impulse.length(); - btVector3 noTwistSwingAxis = impulse / impulseMag; - - bodyA.internalApplyImpulse(btVector3(0,0,0), m_rbA.getInvInertiaTensorWorld()*noTwistSwingAxis, impulseMag); - bodyB.internalApplyImpulse(btVector3(0,0,0), m_rbB.getInvInertiaTensorWorld()*noTwistSwingAxis, -impulseMag); - } - - - // solve twist limit - if (m_solveTwistLimit) - { - btScalar amplitude = m_twistLimitRatio * m_twistCorrection*m_biasFactor/timeStep; - btScalar relTwistVel = (angVelB - angVelA).dot( m_twistAxis ); - if (relTwistVel > 0) // only damp when moving towards limit (m_twistAxis flipping is important) - amplitude += m_twistLimitRatio * relTwistVel * m_relaxationFactor; - btScalar impulseMag = amplitude * m_kTwist; - - // Clamp the accumulated impulse - btScalar temp = m_accTwistLimitImpulse; - m_accTwistLimitImpulse = btMax(m_accTwistLimitImpulse + impulseMag, btScalar(0.0) ); - impulseMag = m_accTwistLimitImpulse - temp; - - btVector3 impulse = m_twistAxis * impulseMag; - - bodyA.internalApplyImpulse(btVector3(0,0,0), m_rbA.getInvInertiaTensorWorld()*m_twistAxis,impulseMag); - bodyB.internalApplyImpulse(btVector3(0,0,0), m_rbB.getInvInertiaTensorWorld()*m_twistAxis,-impulseMag); - } - } - } -#else -btAssert(0); -#endif //__SPU__ -} - - - - -void btConeTwistConstraint::updateRHS(btScalar timeStep) -{ - (void)timeStep; - -} - - -#ifndef __SPU__ -void btConeTwistConstraint::calcAngleInfo() -{ - m_swingCorrection = btScalar(0.); - m_twistLimitSign = btScalar(0.); - m_solveTwistLimit = false; - m_solveSwingLimit = false; - - btVector3 b1Axis1,b1Axis2,b1Axis3; - btVector3 b2Axis1,b2Axis2; - - b1Axis1 = getRigidBodyA().getCenterOfMassTransform().getBasis() * this->m_rbAFrame.getBasis().getColumn(0); - b2Axis1 = getRigidBodyB().getCenterOfMassTransform().getBasis() * this->m_rbBFrame.getBasis().getColumn(0); - - btScalar swing1=btScalar(0.),swing2 = btScalar(0.); - - btScalar swx=btScalar(0.),swy = btScalar(0.); - btScalar thresh = btScalar(10.); - btScalar fact; - - // Get Frame into world space - if (m_swingSpan1 >= btScalar(0.05f)) - { - b1Axis2 = getRigidBodyA().getCenterOfMassTransform().getBasis() * this->m_rbAFrame.getBasis().getColumn(1); - swx = b2Axis1.dot(b1Axis1); - swy = b2Axis1.dot(b1Axis2); - swing1 = btAtan2Fast(swy, swx); - fact = (swy*swy + swx*swx) * thresh * thresh; - fact = fact / (fact + btScalar(1.0)); - swing1 *= fact; - } - - if (m_swingSpan2 >= btScalar(0.05f)) - { - b1Axis3 = getRigidBodyA().getCenterOfMassTransform().getBasis() * this->m_rbAFrame.getBasis().getColumn(2); - swx = b2Axis1.dot(b1Axis1); - swy = b2Axis1.dot(b1Axis3); - swing2 = btAtan2Fast(swy, swx); - fact = (swy*swy + swx*swx) * thresh * thresh; - fact = fact / (fact + btScalar(1.0)); - swing2 *= fact; - } - - btScalar RMaxAngle1Sq = 1.0f / (m_swingSpan1*m_swingSpan1); - btScalar RMaxAngle2Sq = 1.0f / (m_swingSpan2*m_swingSpan2); - btScalar EllipseAngle = btFabs(swing1*swing1)* RMaxAngle1Sq + btFabs(swing2*swing2) * RMaxAngle2Sq; - - if (EllipseAngle > 1.0f) - { - m_swingCorrection = EllipseAngle-1.0f; - m_solveSwingLimit = true; - // Calculate necessary axis & factors - m_swingAxis = b2Axis1.cross(b1Axis2* b2Axis1.dot(b1Axis2) + b1Axis3* b2Axis1.dot(b1Axis3)); - m_swingAxis.normalize(); - btScalar swingAxisSign = (b2Axis1.dot(b1Axis1) >= 0.0f) ? 1.0f : -1.0f; - m_swingAxis *= swingAxisSign; - } - - // Twist limits - if (m_twistSpan >= btScalar(0.)) - { - btVector3 b2Axis2 = getRigidBodyB().getCenterOfMassTransform().getBasis() * this->m_rbBFrame.getBasis().getColumn(1); - btQuaternion rotationArc = shortestArcQuat(b2Axis1,b1Axis1); - btVector3 TwistRef = quatRotate(rotationArc,b2Axis2); - btScalar twist = btAtan2Fast( TwistRef.dot(b1Axis3), TwistRef.dot(b1Axis2) ); - m_twistAngle = twist; - -// btScalar lockedFreeFactor = (m_twistSpan > btScalar(0.05f)) ? m_limitSoftness : btScalar(0.); - btScalar lockedFreeFactor = (m_twistSpan > btScalar(0.05f)) ? btScalar(1.0f) : btScalar(0.); - if (twist <= -m_twistSpan*lockedFreeFactor) - { - m_twistCorrection = -(twist + m_twistSpan); - m_solveTwistLimit = true; - m_twistAxis = (b2Axis1 + b1Axis1) * 0.5f; - m_twistAxis.normalize(); - m_twistAxis *= -1.0f; - } - else if (twist > m_twistSpan*lockedFreeFactor) - { - m_twistCorrection = (twist - m_twistSpan); - m_solveTwistLimit = true; - m_twistAxis = (b2Axis1 + b1Axis1) * 0.5f; - m_twistAxis.normalize(); - } - } -} -#endif //__SPU__ - -static btVector3 vTwist(1,0,0); // twist axis in constraint's space - - - -void btConeTwistConstraint::calcAngleInfo2(const btTransform& transA, const btTransform& transB, const btMatrix3x3& invInertiaWorldA,const btMatrix3x3& invInertiaWorldB) -{ - m_swingCorrection = btScalar(0.); - m_twistLimitSign = btScalar(0.); - m_solveTwistLimit = false; - m_solveSwingLimit = false; - // compute rotation of A wrt B (in constraint space) - if (m_bMotorEnabled && (!m_useSolveConstraintObsolete)) - { // it is assumed that setMotorTarget() was alredy called - // and motor target m_qTarget is within constraint limits - // TODO : split rotation to pure swing and pure twist - // compute desired transforms in world - btTransform trPose(m_qTarget); - btTransform trA = transA * m_rbAFrame; - btTransform trB = transB * m_rbBFrame; - btTransform trDeltaAB = trB * trPose * trA.inverse(); - btQuaternion qDeltaAB = trDeltaAB.getRotation(); - btVector3 swingAxis = btVector3(qDeltaAB.x(), qDeltaAB.y(), qDeltaAB.z()); - m_swingAxis = swingAxis; - m_swingAxis.normalize(); - m_swingCorrection = qDeltaAB.getAngle(); - if(!btFuzzyZero(m_swingCorrection)) - { - m_solveSwingLimit = true; - } - return; - } - - - { - // compute rotation of A wrt B (in constraint space) - btQuaternion qA = transA.getRotation() * m_rbAFrame.getRotation(); - btQuaternion qB = transB.getRotation() * m_rbBFrame.getRotation(); - btQuaternion qAB = qB.inverse() * qA; - // split rotation into cone and twist - // (all this is done from B's perspective. Maybe I should be averaging axes...) - btVector3 vConeNoTwist = quatRotate(qAB, vTwist); vConeNoTwist.normalize(); - btQuaternion qABCone = shortestArcQuat(vTwist, vConeNoTwist); qABCone.normalize(); - btQuaternion qABTwist = qABCone.inverse() * qAB; qABTwist.normalize(); - - if (m_swingSpan1 >= m_fixThresh && m_swingSpan2 >= m_fixThresh) - { - btScalar swingAngle, swingLimit = 0; btVector3 swingAxis; - computeConeLimitInfo(qABCone, swingAngle, swingAxis, swingLimit); - - if (swingAngle > swingLimit * m_limitSoftness) - { - m_solveSwingLimit = true; - - // compute limit ratio: 0->1, where - // 0 == beginning of soft limit - // 1 == hard/real limit - m_swingLimitRatio = 1.f; - if (swingAngle < swingLimit && m_limitSoftness < 1.f - SIMD_EPSILON) - { - m_swingLimitRatio = (swingAngle - swingLimit * m_limitSoftness)/ - (swingLimit - swingLimit * m_limitSoftness); - } - - // swing correction tries to get back to soft limit - m_swingCorrection = swingAngle - (swingLimit * m_limitSoftness); - - // adjustment of swing axis (based on ellipse normal) - adjustSwingAxisToUseEllipseNormal(swingAxis); - - // Calculate necessary axis & factors - m_swingAxis = quatRotate(qB, -swingAxis); - - m_twistAxisA.setValue(0,0,0); - - m_kSwing = btScalar(1.) / - (computeAngularImpulseDenominator(m_swingAxis,invInertiaWorldA) + - computeAngularImpulseDenominator(m_swingAxis,invInertiaWorldB)); - } - } - else - { - // you haven't set any limits; - // or you're trying to set at least one of the swing limits too small. (if so, do you really want a conetwist constraint?) - // anyway, we have either hinge or fixed joint - btVector3 ivA = transA.getBasis() * m_rbAFrame.getBasis().getColumn(0); - btVector3 jvA = transA.getBasis() * m_rbAFrame.getBasis().getColumn(1); - btVector3 kvA = transA.getBasis() * m_rbAFrame.getBasis().getColumn(2); - btVector3 ivB = transB.getBasis() * m_rbBFrame.getBasis().getColumn(0); - btVector3 target; - btScalar x = ivB.dot(ivA); - btScalar y = ivB.dot(jvA); - btScalar z = ivB.dot(kvA); - if((m_swingSpan1 < m_fixThresh) && (m_swingSpan2 < m_fixThresh)) - { // fixed. We'll need to add one more row to constraint - if((!btFuzzyZero(y)) || (!(btFuzzyZero(z)))) - { - m_solveSwingLimit = true; - m_swingAxis = -ivB.cross(ivA); - } - } - else - { - if(m_swingSpan1 < m_fixThresh) - { // hinge around Y axis - if(!(btFuzzyZero(y))) - { - m_solveSwingLimit = true; - if(m_swingSpan2 >= m_fixThresh) - { - y = btScalar(0.f); - btScalar span2 = btAtan2(z, x); - if(span2 > m_swingSpan2) - { - x = btCos(m_swingSpan2); - z = btSin(m_swingSpan2); - } - else if(span2 < -m_swingSpan2) - { - x = btCos(m_swingSpan2); - z = -btSin(m_swingSpan2); - } - } - } - } - else - { // hinge around Z axis - if(!btFuzzyZero(z)) - { - m_solveSwingLimit = true; - if(m_swingSpan1 >= m_fixThresh) - { - z = btScalar(0.f); - btScalar span1 = btAtan2(y, x); - if(span1 > m_swingSpan1) - { - x = btCos(m_swingSpan1); - y = btSin(m_swingSpan1); - } - else if(span1 < -m_swingSpan1) - { - x = btCos(m_swingSpan1); - y = -btSin(m_swingSpan1); - } - } - } - } - target[0] = x * ivA[0] + y * jvA[0] + z * kvA[0]; - target[1] = x * ivA[1] + y * jvA[1] + z * kvA[1]; - target[2] = x * ivA[2] + y * jvA[2] + z * kvA[2]; - target.normalize(); - m_swingAxis = -ivB.cross(target); - m_swingCorrection = m_swingAxis.length(); - m_swingAxis.normalize(); - } - } - - if (m_twistSpan >= btScalar(0.f)) - { - btVector3 twistAxis; - computeTwistLimitInfo(qABTwist, m_twistAngle, twistAxis); - - if (m_twistAngle > m_twistSpan*m_limitSoftness) - { - m_solveTwistLimit = true; - - m_twistLimitRatio = 1.f; - if (m_twistAngle < m_twistSpan && m_limitSoftness < 1.f - SIMD_EPSILON) - { - m_twistLimitRatio = (m_twistAngle - m_twistSpan * m_limitSoftness)/ - (m_twistSpan - m_twistSpan * m_limitSoftness); - } - - // twist correction tries to get back to soft limit - m_twistCorrection = m_twistAngle - (m_twistSpan * m_limitSoftness); - - m_twistAxis = quatRotate(qB, -twistAxis); - - m_kTwist = btScalar(1.) / - (computeAngularImpulseDenominator(m_twistAxis,invInertiaWorldA) + - computeAngularImpulseDenominator(m_twistAxis,invInertiaWorldB)); - } - - if (m_solveSwingLimit) - m_twistAxisA = quatRotate(qA, -twistAxis); - } - else - { - m_twistAngle = btScalar(0.f); - } - } -} - - - -// given a cone rotation in constraint space, (pre: twist must already be removed) -// this method computes its corresponding swing angle and axis. -// more interestingly, it computes the cone/swing limit (angle) for this cone "pose". -void btConeTwistConstraint::computeConeLimitInfo(const btQuaternion& qCone, - btScalar& swingAngle, // out - btVector3& vSwingAxis, // out - btScalar& swingLimit) // out -{ - swingAngle = qCone.getAngle(); - if (swingAngle > SIMD_EPSILON) - { - vSwingAxis = btVector3(qCone.x(), qCone.y(), qCone.z()); - vSwingAxis.normalize(); - if (fabs(vSwingAxis.x()) > SIMD_EPSILON) - { - // non-zero twist?! this should never happen. - int wtf = 0; wtf = wtf; - } - - // Compute limit for given swing. tricky: - // Given a swing axis, we're looking for the intersection with the bounding cone ellipse. - // (Since we're dealing with angles, this ellipse is embedded on the surface of a sphere.) - - // For starters, compute the direction from center to surface of ellipse. - // This is just the perpendicular (ie. rotate 2D vector by PI/2) of the swing axis. - // (vSwingAxis is the cone rotation (in z,y); change vars and rotate to (x,y) coords.) - btScalar xEllipse = vSwingAxis.y(); - btScalar yEllipse = -vSwingAxis.z(); - - // Now, we use the slope of the vector (using x/yEllipse) and find the length - // of the line that intersects the ellipse: - // x^2 y^2 - // --- + --- = 1, where a and b are semi-major axes 2 and 1 respectively (ie. the limits) - // a^2 b^2 - // Do the math and it should be clear. - - swingLimit = m_swingSpan1; // if xEllipse == 0, we have a pure vSwingAxis.z rotation: just use swingspan1 - if (fabs(xEllipse) > SIMD_EPSILON) - { - btScalar surfaceSlope2 = (yEllipse*yEllipse)/(xEllipse*xEllipse); - btScalar norm = 1 / (m_swingSpan2 * m_swingSpan2); - norm += surfaceSlope2 / (m_swingSpan1 * m_swingSpan1); - btScalar swingLimit2 = (1 + surfaceSlope2) / norm; - swingLimit = sqrt(swingLimit2); - } - - // test! - /*swingLimit = m_swingSpan2; - if (fabs(vSwingAxis.z()) > SIMD_EPSILON) - { - btScalar mag_2 = m_swingSpan1*m_swingSpan1 + m_swingSpan2*m_swingSpan2; - btScalar sinphi = m_swingSpan2 / sqrt(mag_2); - btScalar phi = asin(sinphi); - btScalar theta = atan2(fabs(vSwingAxis.y()),fabs(vSwingAxis.z())); - btScalar alpha = 3.14159f - theta - phi; - btScalar sinalpha = sin(alpha); - swingLimit = m_swingSpan1 * sinphi/sinalpha; - }*/ - } - else if (swingAngle < 0) - { - // this should never happen! - int wtf = 0; wtf = wtf; - } -} - -btVector3 btConeTwistConstraint::GetPointForAngle(btScalar fAngleInRadians, btScalar fLength) const -{ - // compute x/y in ellipse using cone angle (0 -> 2*PI along surface of cone) - btScalar xEllipse = btCos(fAngleInRadians); - btScalar yEllipse = btSin(fAngleInRadians); - - // Use the slope of the vector (using x/yEllipse) and find the length - // of the line that intersects the ellipse: - // x^2 y^2 - // --- + --- = 1, where a and b are semi-major axes 2 and 1 respectively (ie. the limits) - // a^2 b^2 - // Do the math and it should be clear. - - float swingLimit = m_swingSpan1; // if xEllipse == 0, just use axis b (1) - if (fabs(xEllipse) > SIMD_EPSILON) - { - btScalar surfaceSlope2 = (yEllipse*yEllipse)/(xEllipse*xEllipse); - btScalar norm = 1 / (m_swingSpan2 * m_swingSpan2); - norm += surfaceSlope2 / (m_swingSpan1 * m_swingSpan1); - btScalar swingLimit2 = (1 + surfaceSlope2) / norm; - swingLimit = sqrt(swingLimit2); - } - - // convert into point in constraint space: - // note: twist is x-axis, swing 1 and 2 are along the z and y axes respectively - btVector3 vSwingAxis(0, xEllipse, -yEllipse); - btQuaternion qSwing(vSwingAxis, swingLimit); - btVector3 vPointInConstraintSpace(fLength,0,0); - return quatRotate(qSwing, vPointInConstraintSpace); -} - -// given a twist rotation in constraint space, (pre: cone must already be removed) -// this method computes its corresponding angle and axis. -void btConeTwistConstraint::computeTwistLimitInfo(const btQuaternion& qTwist, - btScalar& twistAngle, // out - btVector3& vTwistAxis) // out -{ - btQuaternion qMinTwist = qTwist; - twistAngle = qTwist.getAngle(); - - if (twistAngle > SIMD_PI) // long way around. flip quat and recalculate. - { - qMinTwist = operator-(qTwist); - twistAngle = qMinTwist.getAngle(); - } - if (twistAngle < 0) - { - // this should never happen - int wtf = 0; wtf = wtf; - } - - vTwistAxis = btVector3(qMinTwist.x(), qMinTwist.y(), qMinTwist.z()); - if (twistAngle > SIMD_EPSILON) - vTwistAxis.normalize(); -} - - -void btConeTwistConstraint::adjustSwingAxisToUseEllipseNormal(btVector3& vSwingAxis) const -{ - // the swing axis is computed as the "twist-free" cone rotation, - // but the cone limit is not circular, but elliptical (if swingspan1 != swingspan2). - // so, if we're outside the limits, the closest way back inside the cone isn't - // along the vector back to the center. better (and more stable) to use the ellipse normal. - - // convert swing axis to direction from center to surface of ellipse - // (ie. rotate 2D vector by PI/2) - btScalar y = -vSwingAxis.z(); - btScalar z = vSwingAxis.y(); - - // do the math... - if (fabs(z) > SIMD_EPSILON) // avoid division by 0. and we don't need an update if z == 0. - { - // compute gradient/normal of ellipse surface at current "point" - btScalar grad = y/z; - grad *= m_swingSpan2 / m_swingSpan1; - - // adjust y/z to represent normal at point (instead of vector to point) - if (y > 0) - y = fabs(grad * z); - else - y = -fabs(grad * z); - - // convert ellipse direction back to swing axis - vSwingAxis.setZ(-y); - vSwingAxis.setY( z); - vSwingAxis.normalize(); - } -} - - - -void btConeTwistConstraint::setMotorTarget(const btQuaternion &q) -{ - btTransform trACur = m_rbA.getCenterOfMassTransform(); - btTransform trBCur = m_rbB.getCenterOfMassTransform(); - btTransform trABCur = trBCur.inverse() * trACur; - btQuaternion qABCur = trABCur.getRotation(); - btTransform trConstraintCur = (trBCur * m_rbBFrame).inverse() * (trACur * m_rbAFrame); - btQuaternion qConstraintCur = trConstraintCur.getRotation(); - - btQuaternion qConstraint = m_rbBFrame.getRotation().inverse() * q * m_rbAFrame.getRotation(); - setMotorTargetInConstraintSpace(qConstraint); -} - - -void btConeTwistConstraint::setMotorTargetInConstraintSpace(const btQuaternion &q) -{ - m_qTarget = q; - - // clamp motor target to within limits - { - btScalar softness = 1.f;//m_limitSoftness; - - // split into twist and cone - btVector3 vTwisted = quatRotate(m_qTarget, vTwist); - btQuaternion qTargetCone = shortestArcQuat(vTwist, vTwisted); qTargetCone.normalize(); - btQuaternion qTargetTwist = qTargetCone.inverse() * m_qTarget; qTargetTwist.normalize(); - - // clamp cone - if (m_swingSpan1 >= btScalar(0.05f) && m_swingSpan2 >= btScalar(0.05f)) - { - btScalar swingAngle, swingLimit; btVector3 swingAxis; - computeConeLimitInfo(qTargetCone, swingAngle, swingAxis, swingLimit); - - if (fabs(swingAngle) > SIMD_EPSILON) - { - if (swingAngle > swingLimit*softness) - swingAngle = swingLimit*softness; - else if (swingAngle < -swingLimit*softness) - swingAngle = -swingLimit*softness; - qTargetCone = btQuaternion(swingAxis, swingAngle); - } - } - - // clamp twist - if (m_twistSpan >= btScalar(0.05f)) - { - btScalar twistAngle; btVector3 twistAxis; - computeTwistLimitInfo(qTargetTwist, twistAngle, twistAxis); - - if (fabs(twistAngle) > SIMD_EPSILON) - { - // eddy todo: limitSoftness used here??? - if (twistAngle > m_twistSpan*softness) - twistAngle = m_twistSpan*softness; - else if (twistAngle < -m_twistSpan*softness) - twistAngle = -m_twistSpan*softness; - qTargetTwist = btQuaternion(twistAxis, twistAngle); - } - } - - m_qTarget = qTargetCone * qTargetTwist; - } -} - -///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). -///If no axis is provided, it uses the default axis for this constraint. -void btConeTwistConstraint::setParam(int num, btScalar value, int axis) -{ - switch(num) - { - case BT_CONSTRAINT_ERP : - case BT_CONSTRAINT_STOP_ERP : - if((axis >= 0) && (axis < 3)) - { - m_linERP = value; - m_flags |= BT_CONETWIST_FLAGS_LIN_ERP; - } - else - { - m_biasFactor = value; - } - break; - case BT_CONSTRAINT_CFM : - case BT_CONSTRAINT_STOP_CFM : - if((axis >= 0) && (axis < 3)) - { - m_linCFM = value; - m_flags |= BT_CONETWIST_FLAGS_LIN_CFM; - } - else - { - m_angCFM = value; - m_flags |= BT_CONETWIST_FLAGS_ANG_CFM; - } - break; - default: - btAssertConstrParams(0); - break; - } -} - -///return the local value of parameter -btScalar btConeTwistConstraint::getParam(int num, int axis) const -{ - btScalar retVal = 0; - switch(num) - { - case BT_CONSTRAINT_ERP : - case BT_CONSTRAINT_STOP_ERP : - if((axis >= 0) && (axis < 3)) - { - btAssertConstrParams(m_flags & BT_CONETWIST_FLAGS_LIN_ERP); - retVal = m_linERP; - } - else if((axis >= 3) && (axis < 6)) - { - retVal = m_biasFactor; - } - else - { - btAssertConstrParams(0); - } - break; - case BT_CONSTRAINT_CFM : - case BT_CONSTRAINT_STOP_CFM : - if((axis >= 0) && (axis < 3)) - { - btAssertConstrParams(m_flags & BT_CONETWIST_FLAGS_LIN_CFM); - retVal = m_linCFM; - } - else if((axis >= 3) && (axis < 6)) - { - btAssertConstrParams(m_flags & BT_CONETWIST_FLAGS_ANG_CFM); - retVal = m_angCFM; - } - else - { - btAssertConstrParams(0); - } - break; - default : - btAssertConstrParams(0); - } - return retVal; -} - - - diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h deleted file mode 100644 index f310d474e7a..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h +++ /dev/null @@ -1,332 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -btConeTwistConstraint is Copyright (c) 2007 Starbreeze Studios - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -Written by: Marcus Hennix -*/ - - - -/* -Overview: - -btConeTwistConstraint can be used to simulate ragdoll joints (upper arm, leg etc). -It is a fixed translation, 3 degree-of-freedom (DOF) rotational "joint". -It divides the 3 rotational DOFs into swing (movement within a cone) and twist. -Swing is divided into swing1 and swing2 which can have different limits, giving an elliptical shape. -(Note: the cone's base isn't flat, so this ellipse is "embedded" on the surface of a sphere.) - -In the contraint's frame of reference: -twist is along the x-axis, -and swing 1 and 2 are along the z and y axes respectively. -*/ - - - -#ifndef CONETWISTCONSTRAINT_H -#define CONETWISTCONSTRAINT_H - -#include "LinearMath/btVector3.h" -#include "btJacobianEntry.h" -#include "btTypedConstraint.h" - -class btRigidBody; - -enum btConeTwistFlags -{ - BT_CONETWIST_FLAGS_LIN_CFM = 1, - BT_CONETWIST_FLAGS_LIN_ERP = 2, - BT_CONETWIST_FLAGS_ANG_CFM = 4 -}; - -///btConeTwistConstraint can be used to simulate ragdoll joints (upper arm, leg etc) -class btConeTwistConstraint : public btTypedConstraint -{ -#ifdef IN_PARALLELL_SOLVER -public: -#endif - btJacobianEntry m_jac[3]; //3 orthogonal linear constraints - - btTransform m_rbAFrame; - btTransform m_rbBFrame; - - btScalar m_limitSoftness; - btScalar m_biasFactor; - btScalar m_relaxationFactor; - - btScalar m_damping; - - btScalar m_swingSpan1; - btScalar m_swingSpan2; - btScalar m_twistSpan; - - btScalar m_fixThresh; - - btVector3 m_swingAxis; - btVector3 m_twistAxis; - - btScalar m_kSwing; - btScalar m_kTwist; - - btScalar m_twistLimitSign; - btScalar m_swingCorrection; - btScalar m_twistCorrection; - - btScalar m_twistAngle; - - btScalar m_accSwingLimitImpulse; - btScalar m_accTwistLimitImpulse; - - bool m_angularOnly; - bool m_solveTwistLimit; - bool m_solveSwingLimit; - - bool m_useSolveConstraintObsolete; - - // not yet used... - btScalar m_swingLimitRatio; - btScalar m_twistLimitRatio; - btVector3 m_twistAxisA; - - // motor - bool m_bMotorEnabled; - bool m_bNormalizedMotorStrength; - btQuaternion m_qTarget; - btScalar m_maxMotorImpulse; - btVector3 m_accMotorImpulse; - - // parameters - int m_flags; - btScalar m_linCFM; - btScalar m_linERP; - btScalar m_angCFM; - -protected: - - void init(); - - void computeConeLimitInfo(const btQuaternion& qCone, // in - btScalar& swingAngle, btVector3& vSwingAxis, btScalar& swingLimit); // all outs - - void computeTwistLimitInfo(const btQuaternion& qTwist, // in - btScalar& twistAngle, btVector3& vTwistAxis); // all outs - - void adjustSwingAxisToUseEllipseNormal(btVector3& vSwingAxis) const; - - -public: - - btConeTwistConstraint(btRigidBody& rbA,btRigidBody& rbB,const btTransform& rbAFrame, const btTransform& rbBFrame); - - btConeTwistConstraint(btRigidBody& rbA,const btTransform& rbAFrame); - - virtual void buildJacobian(); - - virtual void getInfo1 (btConstraintInfo1* info); - - void getInfo1NonVirtual(btConstraintInfo1* info); - - virtual void getInfo2 (btConstraintInfo2* info); - - void getInfo2NonVirtual(btConstraintInfo2* info,const btTransform& transA,const btTransform& transB,const btMatrix3x3& invInertiaWorldA,const btMatrix3x3& invInertiaWorldB); - - virtual void solveConstraintObsolete(btRigidBody& bodyA,btRigidBody& bodyB,btScalar timeStep); - - void updateRHS(btScalar timeStep); - - const btRigidBody& getRigidBodyA() const - { - return m_rbA; - } - const btRigidBody& getRigidBodyB() const - { - return m_rbB; - } - - void setAngularOnly(bool angularOnly) - { - m_angularOnly = angularOnly; - } - - void setLimit(int limitIndex,btScalar limitValue) - { - switch (limitIndex) - { - case 3: - { - m_twistSpan = limitValue; - break; - } - case 4: - { - m_swingSpan2 = limitValue; - break; - } - case 5: - { - m_swingSpan1 = limitValue; - break; - } - default: - { - } - }; - } - - // setLimit(), a few notes: - // _softness: - // 0->1, recommend ~0.8->1. - // describes % of limits where movement is free. - // beyond this softness %, the limit is gradually enforced until the "hard" (1.0) limit is reached. - // _biasFactor: - // 0->1?, recommend 0.3 +/-0.3 or so. - // strength with which constraint resists zeroth order (angular, not angular velocity) limit violation. - // __relaxationFactor: - // 0->1, recommend to stay near 1. - // the lower the value, the less the constraint will fight velocities which violate the angular limits. - void setLimit(btScalar _swingSpan1,btScalar _swingSpan2,btScalar _twistSpan, btScalar _softness = 1.f, btScalar _biasFactor = 0.3f, btScalar _relaxationFactor = 1.0f) - { - m_swingSpan1 = _swingSpan1; - m_swingSpan2 = _swingSpan2; - m_twistSpan = _twistSpan; - - m_limitSoftness = _softness; - m_biasFactor = _biasFactor; - m_relaxationFactor = _relaxationFactor; - } - - const btTransform& getAFrame() { return m_rbAFrame; }; - const btTransform& getBFrame() { return m_rbBFrame; }; - - inline int getSolveTwistLimit() - { - return m_solveTwistLimit; - } - - inline int getSolveSwingLimit() - { - return m_solveTwistLimit; - } - - inline btScalar getTwistLimitSign() - { - return m_twistLimitSign; - } - - void calcAngleInfo(); - void calcAngleInfo2(const btTransform& transA, const btTransform& transB,const btMatrix3x3& invInertiaWorldA,const btMatrix3x3& invInertiaWorldB); - - inline btScalar getSwingSpan1() - { - return m_swingSpan1; - } - inline btScalar getSwingSpan2() - { - return m_swingSpan2; - } - inline btScalar getTwistSpan() - { - return m_twistSpan; - } - inline btScalar getTwistAngle() - { - return m_twistAngle; - } - bool isPastSwingLimit() { return m_solveSwingLimit; } - - - void setDamping(btScalar damping) { m_damping = damping; } - - void enableMotor(bool b) { m_bMotorEnabled = b; } - void setMaxMotorImpulse(btScalar maxMotorImpulse) { m_maxMotorImpulse = maxMotorImpulse; m_bNormalizedMotorStrength = false; } - void setMaxMotorImpulseNormalized(btScalar maxMotorImpulse) { m_maxMotorImpulse = maxMotorImpulse; m_bNormalizedMotorStrength = true; } - - btScalar getFixThresh() { return m_fixThresh; } - void setFixThresh(btScalar fixThresh) { m_fixThresh = fixThresh; } - - // setMotorTarget: - // q: the desired rotation of bodyA wrt bodyB. - // note: if q violates the joint limits, the internal target is clamped to avoid conflicting impulses (very bad for stability) - // note: don't forget to enableMotor() - void setMotorTarget(const btQuaternion &q); - - // same as above, but q is the desired rotation of frameA wrt frameB in constraint space - void setMotorTargetInConstraintSpace(const btQuaternion &q); - - btVector3 GetPointForAngle(btScalar fAngleInRadians, btScalar fLength) const; - - ///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). - ///If no axis is provided, it uses the default axis for this constraint. - virtual void setParam(int num, btScalar value, int axis = -1); - ///return the local value of parameter - virtual btScalar getParam(int num, int axis = -1) const; - - virtual int calculateSerializeBufferSize() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; - -}; - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btConeTwistConstraintData -{ - btTypedConstraintData m_typeConstraintData; - btTransformFloatData m_rbAFrame; - btTransformFloatData m_rbBFrame; - - //limits - float m_swingSpan1; - float m_swingSpan2; - float m_twistSpan; - float m_limitSoftness; - float m_biasFactor; - float m_relaxationFactor; - - float m_damping; - - char m_pad[4]; - -}; - - - -SIMD_FORCE_INLINE int btConeTwistConstraint::calculateSerializeBufferSize() const -{ - return sizeof(btConeTwistConstraintData); - -} - - - ///fills the dataBuffer and returns the struct name (and 0 on failure) -SIMD_FORCE_INLINE const char* btConeTwistConstraint::serialize(void* dataBuffer, btSerializer* serializer) const -{ - btConeTwistConstraintData* cone = (btConeTwistConstraintData*) dataBuffer; - btTypedConstraint::serialize(&cone->m_typeConstraintData,serializer); - - m_rbAFrame.serializeFloat(cone->m_rbAFrame); - m_rbBFrame.serializeFloat(cone->m_rbBFrame); - - cone->m_swingSpan1 = float(m_swingSpan1); - cone->m_swingSpan2 = float(m_swingSpan2); - cone->m_twistSpan = float(m_twistSpan); - cone->m_limitSoftness = float(m_limitSoftness); - cone->m_biasFactor = float(m_biasFactor); - cone->m_relaxationFactor = float(m_relaxationFactor); - cone->m_damping = float(m_damping); - - return "btConeTwistConstraintData"; -} - - -#endif //CONETWISTCONSTRAINT_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btConstraintSolver.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btConstraintSolver.h deleted file mode 100644 index 7a8e9c1953d..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btConstraintSolver.h +++ /dev/null @@ -1,52 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef CONSTRAINT_SOLVER_H -#define CONSTRAINT_SOLVER_H - -#include "LinearMath/btScalar.h" - -class btPersistentManifold; -class btRigidBody; -class btCollisionObject; -class btTypedConstraint; -struct btContactSolverInfo; -struct btBroadphaseProxy; -class btIDebugDraw; -class btStackAlloc; -class btDispatcher; -/// btConstraintSolver provides solver interface -class btConstraintSolver -{ - -public: - - virtual ~btConstraintSolver() {} - - virtual void prepareSolve (int /* numBodies */, int /* numManifolds */) {;} - - ///solve a group of constraints - virtual btScalar solveGroup(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifold,int numManifolds,btTypedConstraint** constraints,int numConstraints, const btContactSolverInfo& info,class btIDebugDraw* debugDrawer, btStackAlloc* stackAlloc,btDispatcher* dispatcher) = 0; - - virtual void allSolved (const btContactSolverInfo& /* info */,class btIDebugDraw* /* debugDrawer */, btStackAlloc* /* stackAlloc */) {;} - - ///clear internal cached data and reset random seed - virtual void reset() = 0; -}; - - - - -#endif //CONSTRAINT_SOLVER_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btContactConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btContactConstraint.cpp deleted file mode 100644 index d97096d9f26..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btContactConstraint.cpp +++ /dev/null @@ -1,134 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btContactConstraint.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include "LinearMath/btVector3.h" -#include "btJacobianEntry.h" -#include "btContactSolverInfo.h" -#include "LinearMath/btMinMax.h" -#include "BulletCollision/NarrowPhaseCollision/btManifoldPoint.h" - - - -btContactConstraint::btContactConstraint(btPersistentManifold* contactManifold,btRigidBody& rbA,btRigidBody& rbB) -:btTypedConstraint(CONTACT_CONSTRAINT_TYPE,rbA,rbB), - m_contactManifold(*contactManifold) -{ - -} - -btContactConstraint::~btContactConstraint() -{ - -} - -void btContactConstraint::setContactManifold(btPersistentManifold* contactManifold) -{ - m_contactManifold = *contactManifold; -} - -void btContactConstraint::getInfo1 (btConstraintInfo1* info) -{ - -} - -void btContactConstraint::getInfo2 (btConstraintInfo2* info) -{ - -} - -void btContactConstraint::buildJacobian() -{ - -} - - - - - -#include "btContactConstraint.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include "LinearMath/btVector3.h" -#include "btJacobianEntry.h" -#include "btContactSolverInfo.h" -#include "LinearMath/btMinMax.h" -#include "BulletCollision/NarrowPhaseCollision/btManifoldPoint.h" - -#define ASSERT2 btAssert - -#define USE_INTERNAL_APPLY_IMPULSE 1 - - -//bilateral constraint between two dynamic objects -void resolveSingleBilateral(btRigidBody& body1, const btVector3& pos1, - btRigidBody& body2, const btVector3& pos2, - btScalar distance, const btVector3& normal,btScalar& impulse ,btScalar timeStep) -{ - (void)timeStep; - (void)distance; - - - btScalar normalLenSqr = normal.length2(); - ASSERT2(btFabs(normalLenSqr) < btScalar(1.1)); - if (normalLenSqr > btScalar(1.1)) - { - impulse = btScalar(0.); - return; - } - btVector3 rel_pos1 = pos1 - body1.getCenterOfMassPosition(); - btVector3 rel_pos2 = pos2 - body2.getCenterOfMassPosition(); - //this jacobian entry could be re-used for all iterations - - btVector3 vel1 = body1.getVelocityInLocalPoint(rel_pos1); - btVector3 vel2 = body2.getVelocityInLocalPoint(rel_pos2); - btVector3 vel = vel1 - vel2; - - - btJacobianEntry jac(body1.getCenterOfMassTransform().getBasis().transpose(), - body2.getCenterOfMassTransform().getBasis().transpose(), - rel_pos1,rel_pos2,normal,body1.getInvInertiaDiagLocal(),body1.getInvMass(), - body2.getInvInertiaDiagLocal(),body2.getInvMass()); - - btScalar jacDiagAB = jac.getDiagonal(); - btScalar jacDiagABInv = btScalar(1.) / jacDiagAB; - - btScalar rel_vel = jac.getRelativeVelocity( - body1.getLinearVelocity(), - body1.getCenterOfMassTransform().getBasis().transpose() * body1.getAngularVelocity(), - body2.getLinearVelocity(), - body2.getCenterOfMassTransform().getBasis().transpose() * body2.getAngularVelocity()); - btScalar a; - a=jacDiagABInv; - - - rel_vel = normal.dot(vel); - - //todo: move this into proper structure - btScalar contactDamping = btScalar(0.2); - -#ifdef ONLY_USE_LINEAR_MASS - btScalar massTerm = btScalar(1.) / (body1.getInvMass() + body2.getInvMass()); - impulse = - contactDamping * rel_vel * massTerm; -#else - btScalar velocityImpulse = -contactDamping * rel_vel * jacDiagABInv; - impulse = velocityImpulse; -#endif -} - - - - diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btContactConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btContactConstraint.h deleted file mode 100644 index 63c1a417bc1..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btContactConstraint.h +++ /dev/null @@ -1,68 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef CONTACT_CONSTRAINT_H -#define CONTACT_CONSTRAINT_H - -#include "LinearMath/btVector3.h" -#include "btJacobianEntry.h" -#include "btTypedConstraint.h" -#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" - -///btContactConstraint can be automatically created to solve contact constraints using the unified btTypedConstraint interface -ATTRIBUTE_ALIGNED16(class) btContactConstraint : public btTypedConstraint -{ -protected: - - btPersistentManifold m_contactManifold; - -public: - - - btContactConstraint(btPersistentManifold* contactManifold,btRigidBody& rbA,btRigidBody& rbB); - - void setContactManifold(btPersistentManifold* contactManifold); - - btPersistentManifold* getContactManifold() - { - return &m_contactManifold; - } - - const btPersistentManifold* getContactManifold() const - { - return &m_contactManifold; - } - - virtual ~btContactConstraint(); - - virtual void getInfo1 (btConstraintInfo1* info); - - virtual void getInfo2 (btConstraintInfo2* info); - - ///obsolete methods - virtual void buildJacobian(); - - -}; - - -///resolveSingleBilateral is an obsolete methods used for vehicle friction between two dynamic objects -void resolveSingleBilateral(btRigidBody& body1, const btVector3& pos1, - btRigidBody& body2, const btVector3& pos2, - btScalar distance, const btVector3& normal,btScalar& impulse ,btScalar timeStep); - - - -#endif //CONTACT_CONSTRAINT_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btContactSolverInfo.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btContactSolverInfo.h deleted file mode 100644 index 1025da42f5e..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btContactSolverInfo.h +++ /dev/null @@ -1,87 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef CONTACT_SOLVER_INFO -#define CONTACT_SOLVER_INFO - -enum btSolverMode -{ - SOLVER_RANDMIZE_ORDER = 1, - SOLVER_FRICTION_SEPARATE = 2, - SOLVER_USE_WARMSTARTING = 4, - SOLVER_USE_FRICTION_WARMSTARTING = 8, - SOLVER_USE_2_FRICTION_DIRECTIONS = 16, - SOLVER_ENABLE_FRICTION_DIRECTION_CACHING = 32, - SOLVER_DISABLE_VELOCITY_DEPENDENT_FRICTION_DIRECTION = 64, - SOLVER_CACHE_FRIENDLY = 128, - SOLVER_SIMD = 256, //enabled for Windows, the solver innerloop is branchless SIMD, 40% faster than FPU/scalar version - SOLVER_CUDA = 512 //will be open sourced during Game Developers Conference 2009. Much faster. -}; - -struct btContactSolverInfoData -{ - - - btScalar m_tau; - btScalar m_damping; - btScalar m_friction; - btScalar m_timeStep; - btScalar m_restitution; - int m_numIterations; - btScalar m_maxErrorReduction; - btScalar m_sor; - btScalar m_erp;//used as Baumgarte factor - btScalar m_erp2;//used in Split Impulse - btScalar m_globalCfm;//constraint force mixing - int m_splitImpulse; - btScalar m_splitImpulsePenetrationThreshold; - btScalar m_linearSlop; - btScalar m_warmstartingFactor; - - int m_solverMode; - int m_restingContactRestitutionThreshold; - int m_minimumSolverBatchSize; - - -}; - -struct btContactSolverInfo : public btContactSolverInfoData -{ - - - - inline btContactSolverInfo() - { - m_tau = btScalar(0.6); - m_damping = btScalar(1.0); - m_friction = btScalar(0.3); - m_restitution = btScalar(0.); - m_maxErrorReduction = btScalar(20.); - m_numIterations = 10; - m_erp = btScalar(0.2); - m_erp2 = btScalar(0.1); - m_globalCfm = btScalar(0.); - m_sor = btScalar(1.); - m_splitImpulse = false; - m_splitImpulsePenetrationThreshold = -0.02f; - m_linearSlop = btScalar(0.0); - m_warmstartingFactor=btScalar(0.85); - m_solverMode = SOLVER_USE_WARMSTARTING | SOLVER_SIMD;// | SOLVER_RANDMIZE_ORDER; - m_restingContactRestitutionThreshold = 2;//resting contact lifetime threshold to disable restitution - m_minimumSolverBatchSize = 128; //try to combine islands until the amount of constraints reaches this limit - } -}; - -#endif //CONTACT_SOLVER_INFO diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp deleted file mode 100644 index a970d706284..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp +++ /dev/null @@ -1,1012 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ -/* -2007-09-09 -Refactored by Francisco Le?n -email: projectileman@yahoo.com -http://gimpact.sf.net -*/ - -#include "btGeneric6DofConstraint.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include "LinearMath/btTransformUtil.h" -#include "LinearMath/btTransformUtil.h" -#include - - - -#define D6_USE_OBSOLETE_METHOD false -#define D6_USE_FRAME_OFFSET true - - - - - - -btGeneric6DofConstraint::btGeneric6DofConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB, bool useLinearReferenceFrameA) -: btTypedConstraint(D6_CONSTRAINT_TYPE, rbA, rbB) -, m_frameInA(frameInA) -, m_frameInB(frameInB), -m_useLinearReferenceFrameA(useLinearReferenceFrameA), -m_useOffsetForConstraintFrame(D6_USE_FRAME_OFFSET), -m_flags(0), -m_useSolveConstraintObsolete(D6_USE_OBSOLETE_METHOD) -{ - calculateTransforms(); -} - - - -btGeneric6DofConstraint::btGeneric6DofConstraint(btRigidBody& rbB, const btTransform& frameInB, bool useLinearReferenceFrameB) - : btTypedConstraint(D6_CONSTRAINT_TYPE, getFixedBody(), rbB), - m_frameInB(frameInB), - m_useLinearReferenceFrameA(useLinearReferenceFrameB), - m_useOffsetForConstraintFrame(D6_USE_FRAME_OFFSET), - m_flags(0), - m_useSolveConstraintObsolete(false) -{ - ///not providing rigidbody A means implicitly using worldspace for body A - m_frameInA = rbB.getCenterOfMassTransform() * m_frameInB; - calculateTransforms(); -} - - - - -#define GENERIC_D6_DISABLE_WARMSTARTING 1 - - - -btScalar btGetMatrixElem(const btMatrix3x3& mat, int index); -btScalar btGetMatrixElem(const btMatrix3x3& mat, int index) -{ - int i = index%3; - int j = index/3; - return mat[i][j]; -} - - - -///MatrixToEulerXYZ from http://www.geometrictools.com/LibFoundation/Mathematics/Wm4Matrix3.inl.html -bool matrixToEulerXYZ(const btMatrix3x3& mat,btVector3& xyz); -bool matrixToEulerXYZ(const btMatrix3x3& mat,btVector3& xyz) -{ - // // rot = cy*cz -cy*sz sy - // // cz*sx*sy+cx*sz cx*cz-sx*sy*sz -cy*sx - // // -cx*cz*sy+sx*sz cz*sx+cx*sy*sz cx*cy - // - - btScalar fi = btGetMatrixElem(mat,2); - if (fi < btScalar(1.0f)) - { - if (fi > btScalar(-1.0f)) - { - xyz[0] = btAtan2(-btGetMatrixElem(mat,5),btGetMatrixElem(mat,8)); - xyz[1] = btAsin(btGetMatrixElem(mat,2)); - xyz[2] = btAtan2(-btGetMatrixElem(mat,1),btGetMatrixElem(mat,0)); - return true; - } - else - { - // WARNING. Not unique. XA - ZA = -atan2(r10,r11) - xyz[0] = -btAtan2(btGetMatrixElem(mat,3),btGetMatrixElem(mat,4)); - xyz[1] = -SIMD_HALF_PI; - xyz[2] = btScalar(0.0); - return false; - } - } - else - { - // WARNING. Not unique. XAngle + ZAngle = atan2(r10,r11) - xyz[0] = btAtan2(btGetMatrixElem(mat,3),btGetMatrixElem(mat,4)); - xyz[1] = SIMD_HALF_PI; - xyz[2] = 0.0; - } - return false; -} - -//////////////////////////// btRotationalLimitMotor //////////////////////////////////// - -int btRotationalLimitMotor::testLimitValue(btScalar test_value) -{ - if(m_loLimit>m_hiLimit) - { - m_currentLimit = 0;//Free from violation - return 0; - } - if (test_value < m_loLimit) - { - m_currentLimit = 1;//low limit violation - m_currentLimitError = test_value - m_loLimit; - return 1; - } - else if (test_value> m_hiLimit) - { - m_currentLimit = 2;//High limit violation - m_currentLimitError = test_value - m_hiLimit; - return 2; - }; - - m_currentLimit = 0;//Free from violation - return 0; - -} - - - -btScalar btRotationalLimitMotor::solveAngularLimits( - btScalar timeStep,btVector3& axis,btScalar jacDiagABInv, - btRigidBody * body0, btRigidBody * body1 ) -{ - if (needApplyTorques()==false) return 0.0f; - - btScalar target_velocity = m_targetVelocity; - btScalar maxMotorForce = m_maxMotorForce; - - //current error correction - if (m_currentLimit!=0) - { - target_velocity = -m_stopERP*m_currentLimitError/(timeStep); - maxMotorForce = m_maxLimitForce; - } - - maxMotorForce *= timeStep; - - // current velocity difference - - btVector3 angVelA; - body0->internalGetAngularVelocity(angVelA); - btVector3 angVelB; - body1->internalGetAngularVelocity(angVelB); - - btVector3 vel_diff; - vel_diff = angVelA-angVelB; - - - - btScalar rel_vel = axis.dot(vel_diff); - - // correction velocity - btScalar motor_relvel = m_limitSoftness*(target_velocity - m_damping*rel_vel); - - - if ( motor_relvel < SIMD_EPSILON && motor_relvel > -SIMD_EPSILON ) - { - return 0.0f;//no need for applying force - } - - - // correction impulse - btScalar unclippedMotorImpulse = (1+m_bounce)*motor_relvel*jacDiagABInv; - - // clip correction impulse - btScalar clippedMotorImpulse; - - ///@todo: should clip against accumulated impulse - if (unclippedMotorImpulse>0.0f) - { - clippedMotorImpulse = unclippedMotorImpulse > maxMotorForce? maxMotorForce: unclippedMotorImpulse; - } - else - { - clippedMotorImpulse = unclippedMotorImpulse < -maxMotorForce ? -maxMotorForce: unclippedMotorImpulse; - } - - - // sort with accumulated impulses - btScalar lo = btScalar(-BT_LARGE_FLOAT); - btScalar hi = btScalar(BT_LARGE_FLOAT); - - btScalar oldaccumImpulse = m_accumulatedImpulse; - btScalar sum = oldaccumImpulse + clippedMotorImpulse; - m_accumulatedImpulse = sum > hi ? btScalar(0.) : sum < lo ? btScalar(0.) : sum; - - clippedMotorImpulse = m_accumulatedImpulse - oldaccumImpulse; - - btVector3 motorImp = clippedMotorImpulse * axis; - - //body0->applyTorqueImpulse(motorImp); - //body1->applyTorqueImpulse(-motorImp); - - body0->internalApplyImpulse(btVector3(0,0,0), body0->getInvInertiaTensorWorld()*axis,clippedMotorImpulse); - body1->internalApplyImpulse(btVector3(0,0,0), body1->getInvInertiaTensorWorld()*axis,-clippedMotorImpulse); - - - return clippedMotorImpulse; - - -} - -//////////////////////////// End btRotationalLimitMotor //////////////////////////////////// - - - - -//////////////////////////// btTranslationalLimitMotor //////////////////////////////////// - - -int btTranslationalLimitMotor::testLimitValue(int limitIndex, btScalar test_value) -{ - btScalar loLimit = m_lowerLimit[limitIndex]; - btScalar hiLimit = m_upperLimit[limitIndex]; - if(loLimit > hiLimit) - { - m_currentLimit[limitIndex] = 0;//Free from violation - m_currentLimitError[limitIndex] = btScalar(0.f); - return 0; - } - - if (test_value < loLimit) - { - m_currentLimit[limitIndex] = 2;//low limit violation - m_currentLimitError[limitIndex] = test_value - loLimit; - return 2; - } - else if (test_value> hiLimit) - { - m_currentLimit[limitIndex] = 1;//High limit violation - m_currentLimitError[limitIndex] = test_value - hiLimit; - return 1; - }; - - m_currentLimit[limitIndex] = 0;//Free from violation - m_currentLimitError[limitIndex] = btScalar(0.f); - return 0; -} - - - -btScalar btTranslationalLimitMotor::solveLinearAxis( - btScalar timeStep, - btScalar jacDiagABInv, - btRigidBody& body1,const btVector3 &pointInA, - btRigidBody& body2,const btVector3 &pointInB, - int limit_index, - const btVector3 & axis_normal_on_a, - const btVector3 & anchorPos) -{ - - ///find relative velocity - // btVector3 rel_pos1 = pointInA - body1.getCenterOfMassPosition(); - // btVector3 rel_pos2 = pointInB - body2.getCenterOfMassPosition(); - btVector3 rel_pos1 = anchorPos - body1.getCenterOfMassPosition(); - btVector3 rel_pos2 = anchorPos - body2.getCenterOfMassPosition(); - - btVector3 vel1; - body1.internalGetVelocityInLocalPointObsolete(rel_pos1,vel1); - btVector3 vel2; - body2.internalGetVelocityInLocalPointObsolete(rel_pos2,vel2); - btVector3 vel = vel1 - vel2; - - btScalar rel_vel = axis_normal_on_a.dot(vel); - - - - /// apply displacement correction - - //positional error (zeroth order error) - btScalar depth = -(pointInA - pointInB).dot(axis_normal_on_a); - btScalar lo = btScalar(-BT_LARGE_FLOAT); - btScalar hi = btScalar(BT_LARGE_FLOAT); - - btScalar minLimit = m_lowerLimit[limit_index]; - btScalar maxLimit = m_upperLimit[limit_index]; - - //handle the limits - if (minLimit < maxLimit) - { - { - if (depth > maxLimit) - { - depth -= maxLimit; - lo = btScalar(0.); - - } - else - { - if (depth < minLimit) - { - depth -= minLimit; - hi = btScalar(0.); - } - else - { - return 0.0f; - } - } - } - } - - btScalar normalImpulse= m_limitSoftness*(m_restitution*depth/timeStep - m_damping*rel_vel) * jacDiagABInv; - - - - - btScalar oldNormalImpulse = m_accumulatedImpulse[limit_index]; - btScalar sum = oldNormalImpulse + normalImpulse; - m_accumulatedImpulse[limit_index] = sum > hi ? btScalar(0.) : sum < lo ? btScalar(0.) : sum; - normalImpulse = m_accumulatedImpulse[limit_index] - oldNormalImpulse; - - btVector3 impulse_vector = axis_normal_on_a * normalImpulse; - //body1.applyImpulse( impulse_vector, rel_pos1); - //body2.applyImpulse(-impulse_vector, rel_pos2); - - btVector3 ftorqueAxis1 = rel_pos1.cross(axis_normal_on_a); - btVector3 ftorqueAxis2 = rel_pos2.cross(axis_normal_on_a); - body1.internalApplyImpulse(axis_normal_on_a*body1.getInvMass(), body1.getInvInertiaTensorWorld()*ftorqueAxis1,normalImpulse); - body2.internalApplyImpulse(axis_normal_on_a*body2.getInvMass(), body2.getInvInertiaTensorWorld()*ftorqueAxis2,-normalImpulse); - - - - - return normalImpulse; -} - -//////////////////////////// btTranslationalLimitMotor //////////////////////////////////// - -void btGeneric6DofConstraint::calculateAngleInfo() -{ - btMatrix3x3 relative_frame = m_calculatedTransformA.getBasis().inverse()*m_calculatedTransformB.getBasis(); - matrixToEulerXYZ(relative_frame,m_calculatedAxisAngleDiff); - // in euler angle mode we do not actually constrain the angular velocity - // along the axes axis[0] and axis[2] (although we do use axis[1]) : - // - // to get constrain w2-w1 along ...not - // ------ --------------------- ------ - // d(angle[0])/dt = 0 ax[1] x ax[2] ax[0] - // d(angle[1])/dt = 0 ax[1] - // d(angle[2])/dt = 0 ax[0] x ax[1] ax[2] - // - // constraining w2-w1 along an axis 'a' means that a'*(w2-w1)=0. - // to prove the result for angle[0], write the expression for angle[0] from - // GetInfo1 then take the derivative. to prove this for angle[2] it is - // easier to take the euler rate expression for d(angle[2])/dt with respect - // to the components of w and set that to 0. - btVector3 axis0 = m_calculatedTransformB.getBasis().getColumn(0); - btVector3 axis2 = m_calculatedTransformA.getBasis().getColumn(2); - - m_calculatedAxis[1] = axis2.cross(axis0); - m_calculatedAxis[0] = m_calculatedAxis[1].cross(axis2); - m_calculatedAxis[2] = axis0.cross(m_calculatedAxis[1]); - - m_calculatedAxis[0].normalize(); - m_calculatedAxis[1].normalize(); - m_calculatedAxis[2].normalize(); - -} - -void btGeneric6DofConstraint::calculateTransforms() -{ - calculateTransforms(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); -} - -void btGeneric6DofConstraint::calculateTransforms(const btTransform& transA,const btTransform& transB) -{ - m_calculatedTransformA = transA * m_frameInA; - m_calculatedTransformB = transB * m_frameInB; - calculateLinearInfo(); - calculateAngleInfo(); - if(m_useOffsetForConstraintFrame) - { // get weight factors depending on masses - btScalar miA = getRigidBodyA().getInvMass(); - btScalar miB = getRigidBodyB().getInvMass(); - m_hasStaticBody = (miA < SIMD_EPSILON) || (miB < SIMD_EPSILON); - btScalar miS = miA + miB; - if(miS > btScalar(0.f)) - { - m_factA = miB / miS; - } - else - { - m_factA = btScalar(0.5f); - } - m_factB = btScalar(1.0f) - m_factA; - } -} - - - -void btGeneric6DofConstraint::buildLinearJacobian( - btJacobianEntry & jacLinear,const btVector3 & normalWorld, - const btVector3 & pivotAInW,const btVector3 & pivotBInW) -{ - new (&jacLinear) btJacobianEntry( - m_rbA.getCenterOfMassTransform().getBasis().transpose(), - m_rbB.getCenterOfMassTransform().getBasis().transpose(), - pivotAInW - m_rbA.getCenterOfMassPosition(), - pivotBInW - m_rbB.getCenterOfMassPosition(), - normalWorld, - m_rbA.getInvInertiaDiagLocal(), - m_rbA.getInvMass(), - m_rbB.getInvInertiaDiagLocal(), - m_rbB.getInvMass()); -} - - - -void btGeneric6DofConstraint::buildAngularJacobian( - btJacobianEntry & jacAngular,const btVector3 & jointAxisW) -{ - new (&jacAngular) btJacobianEntry(jointAxisW, - m_rbA.getCenterOfMassTransform().getBasis().transpose(), - m_rbB.getCenterOfMassTransform().getBasis().transpose(), - m_rbA.getInvInertiaDiagLocal(), - m_rbB.getInvInertiaDiagLocal()); - -} - - - -bool btGeneric6DofConstraint::testAngularLimitMotor(int axis_index) -{ - btScalar angle = m_calculatedAxisAngleDiff[axis_index]; - angle = btAdjustAngleToLimits(angle, m_angularLimits[axis_index].m_loLimit, m_angularLimits[axis_index].m_hiLimit); - m_angularLimits[axis_index].m_currentPosition = angle; - //test limits - m_angularLimits[axis_index].testLimitValue(angle); - return m_angularLimits[axis_index].needApplyTorques(); -} - - - -void btGeneric6DofConstraint::buildJacobian() -{ -#ifndef __SPU__ - if (m_useSolveConstraintObsolete) - { - - // Clear accumulated impulses for the next simulation step - m_linearLimits.m_accumulatedImpulse.setValue(btScalar(0.), btScalar(0.), btScalar(0.)); - int i; - for(i = 0; i < 3; i++) - { - m_angularLimits[i].m_accumulatedImpulse = btScalar(0.); - } - //calculates transform - calculateTransforms(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); - - // const btVector3& pivotAInW = m_calculatedTransformA.getOrigin(); - // const btVector3& pivotBInW = m_calculatedTransformB.getOrigin(); - calcAnchorPos(); - btVector3 pivotAInW = m_AnchorPos; - btVector3 pivotBInW = m_AnchorPos; - - // not used here - // btVector3 rel_pos1 = pivotAInW - m_rbA.getCenterOfMassPosition(); - // btVector3 rel_pos2 = pivotBInW - m_rbB.getCenterOfMassPosition(); - - btVector3 normalWorld; - //linear part - for (i=0;i<3;i++) - { - if (m_linearLimits.isLimited(i)) - { - if (m_useLinearReferenceFrameA) - normalWorld = m_calculatedTransformA.getBasis().getColumn(i); - else - normalWorld = m_calculatedTransformB.getBasis().getColumn(i); - - buildLinearJacobian( - m_jacLinear[i],normalWorld , - pivotAInW,pivotBInW); - - } - } - - // angular part - for (i=0;i<3;i++) - { - //calculates error angle - if (testAngularLimitMotor(i)) - { - normalWorld = this->getAxis(i); - // Create angular atom - buildAngularJacobian(m_jacAng[i],normalWorld); - } - } - - } -#endif //__SPU__ - -} - - -void btGeneric6DofConstraint::getInfo1 (btConstraintInfo1* info) -{ - if (m_useSolveConstraintObsolete) - { - info->m_numConstraintRows = 0; - info->nub = 0; - } else - { - //prepare constraint - calculateTransforms(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); - info->m_numConstraintRows = 0; - info->nub = 6; - int i; - //test linear limits - for(i = 0; i < 3; i++) - { - if(m_linearLimits.needApplyForce(i)) - { - info->m_numConstraintRows++; - info->nub--; - } - } - //test angular limits - for (i=0;i<3 ;i++ ) - { - if(testAngularLimitMotor(i)) - { - info->m_numConstraintRows++; - info->nub--; - } - } - } -} - -void btGeneric6DofConstraint::getInfo1NonVirtual (btConstraintInfo1* info) -{ - if (m_useSolveConstraintObsolete) - { - info->m_numConstraintRows = 0; - info->nub = 0; - } else - { - //pre-allocate all 6 - info->m_numConstraintRows = 6; - info->nub = 0; - } -} - - -void btGeneric6DofConstraint::getInfo2 (btConstraintInfo2* info) -{ - getInfo2NonVirtual(info,m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform(), m_rbA.getLinearVelocity(),m_rbB.getLinearVelocity(),m_rbA.getAngularVelocity(), m_rbB.getAngularVelocity()); -} - -void btGeneric6DofConstraint::getInfo2NonVirtual (btConstraintInfo2* info, const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB) -{ - btAssert(!m_useSolveConstraintObsolete); - //prepare constraint - calculateTransforms(transA,transB); - if(m_useOffsetForConstraintFrame) - { // for stability better to solve angular limits first - int row = setAngularLimits(info, 0,transA,transB,linVelA,linVelB,angVelA,angVelB); - setLinearLimits(info, row, transA,transB,linVelA,linVelB,angVelA,angVelB); - } - else - { // leave old version for compatibility - int row = setLinearLimits(info, 0, transA,transB,linVelA,linVelB,angVelA,angVelB); - setAngularLimits(info, row,transA,transB,linVelA,linVelB,angVelA,angVelB); - } -} - - - -int btGeneric6DofConstraint::setLinearLimits(btConstraintInfo2* info, int row, const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB) -{ -// int row = 0; - //solve linear limits - btRotationalLimitMotor limot; - for (int i=0;i<3 ;i++ ) - { - if(m_linearLimits.needApplyForce(i)) - { // re-use rotational motor code - limot.m_bounce = btScalar(0.f); - limot.m_currentLimit = m_linearLimits.m_currentLimit[i]; - limot.m_currentPosition = m_linearLimits.m_currentLinearDiff[i]; - limot.m_currentLimitError = m_linearLimits.m_currentLimitError[i]; - limot.m_damping = m_linearLimits.m_damping; - limot.m_enableMotor = m_linearLimits.m_enableMotor[i]; - limot.m_hiLimit = m_linearLimits.m_upperLimit[i]; - limot.m_limitSoftness = m_linearLimits.m_limitSoftness; - limot.m_loLimit = m_linearLimits.m_lowerLimit[i]; - limot.m_maxLimitForce = btScalar(0.f); - limot.m_maxMotorForce = m_linearLimits.m_maxMotorForce[i]; - limot.m_targetVelocity = m_linearLimits.m_targetVelocity[i]; - btVector3 axis = m_calculatedTransformA.getBasis().getColumn(i); - int flags = m_flags >> (i * BT_6DOF_FLAGS_AXIS_SHIFT); - limot.m_normalCFM = (flags & BT_6DOF_FLAGS_CFM_NORM) ? m_linearLimits.m_normalCFM[i] : info->cfm[0]; - limot.m_stopCFM = (flags & BT_6DOF_FLAGS_CFM_STOP) ? m_linearLimits.m_stopCFM[i] : info->cfm[0]; - limot.m_stopERP = (flags & BT_6DOF_FLAGS_ERP_STOP) ? m_linearLimits.m_stopERP[i] : info->erp; - if(m_useOffsetForConstraintFrame) - { - int indx1 = (i + 1) % 3; - int indx2 = (i + 2) % 3; - int rotAllowed = 1; // rotations around orthos to current axis - if(m_angularLimits[indx1].m_currentLimit && m_angularLimits[indx2].m_currentLimit) - { - rotAllowed = 0; - } - row += get_limit_motor_info2(&limot, transA,transB,linVelA,linVelB,angVelA,angVelB, info, row, axis, 0, rotAllowed); - } - else - { - row += get_limit_motor_info2(&limot, transA,transB,linVelA,linVelB,angVelA,angVelB, info, row, axis, 0); - } - } - } - return row; -} - - - -int btGeneric6DofConstraint::setAngularLimits(btConstraintInfo2 *info, int row_offset, const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB) -{ - btGeneric6DofConstraint * d6constraint = this; - int row = row_offset; - //solve angular limits - for (int i=0;i<3 ;i++ ) - { - if(d6constraint->getRotationalLimitMotor(i)->needApplyTorques()) - { - btVector3 axis = d6constraint->getAxis(i); - int flags = m_flags >> ((i + 3) * BT_6DOF_FLAGS_AXIS_SHIFT); - if(!(flags & BT_6DOF_FLAGS_CFM_NORM)) - { - m_angularLimits[i].m_normalCFM = info->cfm[0]; - } - if(!(flags & BT_6DOF_FLAGS_CFM_STOP)) - { - m_angularLimits[i].m_stopCFM = info->cfm[0]; - } - if(!(flags & BT_6DOF_FLAGS_ERP_STOP)) - { - m_angularLimits[i].m_stopERP = info->erp; - } - row += get_limit_motor_info2(d6constraint->getRotationalLimitMotor(i), - transA,transB,linVelA,linVelB,angVelA,angVelB, info,row,axis,1); - } - } - - return row; -} - - - - -void btGeneric6DofConstraint::updateRHS(btScalar timeStep) -{ - (void)timeStep; - -} - - - -btVector3 btGeneric6DofConstraint::getAxis(int axis_index) const -{ - return m_calculatedAxis[axis_index]; -} - - -btScalar btGeneric6DofConstraint::getRelativePivotPosition(int axisIndex) const -{ - return m_calculatedLinearDiff[axisIndex]; -} - - -btScalar btGeneric6DofConstraint::getAngle(int axisIndex) const -{ - return m_calculatedAxisAngleDiff[axisIndex]; -} - - - -void btGeneric6DofConstraint::calcAnchorPos(void) -{ - btScalar imA = m_rbA.getInvMass(); - btScalar imB = m_rbB.getInvMass(); - btScalar weight; - if(imB == btScalar(0.0)) - { - weight = btScalar(1.0); - } - else - { - weight = imA / (imA + imB); - } - const btVector3& pA = m_calculatedTransformA.getOrigin(); - const btVector3& pB = m_calculatedTransformB.getOrigin(); - m_AnchorPos = pA * weight + pB * (btScalar(1.0) - weight); - return; -} - - - -void btGeneric6DofConstraint::calculateLinearInfo() -{ - m_calculatedLinearDiff = m_calculatedTransformB.getOrigin() - m_calculatedTransformA.getOrigin(); - m_calculatedLinearDiff = m_calculatedTransformA.getBasis().inverse() * m_calculatedLinearDiff; - for(int i = 0; i < 3; i++) - { - m_linearLimits.m_currentLinearDiff[i] = m_calculatedLinearDiff[i]; - m_linearLimits.testLimitValue(i, m_calculatedLinearDiff[i]); - } -} - - - -int btGeneric6DofConstraint::get_limit_motor_info2( - btRotationalLimitMotor * limot, - const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB, - btConstraintInfo2 *info, int row, btVector3& ax1, int rotational,int rotAllowed) -{ - int srow = row * info->rowskip; - int powered = limot->m_enableMotor; - int limit = limot->m_currentLimit; - if (powered || limit) - { // if the joint is powered, or has joint limits, add in the extra row - btScalar *J1 = rotational ? info->m_J1angularAxis : info->m_J1linearAxis; - btScalar *J2 = rotational ? info->m_J2angularAxis : 0; - J1[srow+0] = ax1[0]; - J1[srow+1] = ax1[1]; - J1[srow+2] = ax1[2]; - if(rotational) - { - J2[srow+0] = -ax1[0]; - J2[srow+1] = -ax1[1]; - J2[srow+2] = -ax1[2]; - } - if((!rotational)) - { - if (m_useOffsetForConstraintFrame) - { - btVector3 tmpA, tmpB, relA, relB; - // get vector from bodyB to frameB in WCS - relB = m_calculatedTransformB.getOrigin() - transB.getOrigin(); - // get its projection to constraint axis - btVector3 projB = ax1 * relB.dot(ax1); - // get vector directed from bodyB to constraint axis (and orthogonal to it) - btVector3 orthoB = relB - projB; - // same for bodyA - relA = m_calculatedTransformA.getOrigin() - transA.getOrigin(); - btVector3 projA = ax1 * relA.dot(ax1); - btVector3 orthoA = relA - projA; - // get desired offset between frames A and B along constraint axis - btScalar desiredOffs = limot->m_currentPosition - limot->m_currentLimitError; - // desired vector from projection of center of bodyA to projection of center of bodyB to constraint axis - btVector3 totalDist = projA + ax1 * desiredOffs - projB; - // get offset vectors relA and relB - relA = orthoA + totalDist * m_factA; - relB = orthoB - totalDist * m_factB; - tmpA = relA.cross(ax1); - tmpB = relB.cross(ax1); - if(m_hasStaticBody && (!rotAllowed)) - { - tmpA *= m_factA; - tmpB *= m_factB; - } - int i; - for (i=0; i<3; i++) info->m_J1angularAxis[srow+i] = tmpA[i]; - for (i=0; i<3; i++) info->m_J2angularAxis[srow+i] = -tmpB[i]; - } else - { - btVector3 ltd; // Linear Torque Decoupling vector - btVector3 c = m_calculatedTransformB.getOrigin() - transA.getOrigin(); - ltd = c.cross(ax1); - info->m_J1angularAxis[srow+0] = ltd[0]; - info->m_J1angularAxis[srow+1] = ltd[1]; - info->m_J1angularAxis[srow+2] = ltd[2]; - - c = m_calculatedTransformB.getOrigin() - transB.getOrigin(); - ltd = -c.cross(ax1); - info->m_J2angularAxis[srow+0] = ltd[0]; - info->m_J2angularAxis[srow+1] = ltd[1]; - info->m_J2angularAxis[srow+2] = ltd[2]; - } - } - // if we're limited low and high simultaneously, the joint motor is - // ineffective - if (limit && (limot->m_loLimit == limot->m_hiLimit)) powered = 0; - info->m_constraintError[srow] = btScalar(0.f); - if (powered) - { - info->cfm[srow] = limot->m_normalCFM; - if(!limit) - { - btScalar tag_vel = rotational ? limot->m_targetVelocity : -limot->m_targetVelocity; - - btScalar mot_fact = getMotorFactor( limot->m_currentPosition, - limot->m_loLimit, - limot->m_hiLimit, - tag_vel, - info->fps * limot->m_stopERP); - info->m_constraintError[srow] += mot_fact * limot->m_targetVelocity; - info->m_lowerLimit[srow] = -limot->m_maxMotorForce; - info->m_upperLimit[srow] = limot->m_maxMotorForce; - } - } - if(limit) - { - btScalar k = info->fps * limot->m_stopERP; - if(!rotational) - { - info->m_constraintError[srow] += k * limot->m_currentLimitError; - } - else - { - info->m_constraintError[srow] += -k * limot->m_currentLimitError; - } - info->cfm[srow] = limot->m_stopCFM; - if (limot->m_loLimit == limot->m_hiLimit) - { // limited low and high simultaneously - info->m_lowerLimit[srow] = -SIMD_INFINITY; - info->m_upperLimit[srow] = SIMD_INFINITY; - } - else - { - if (limit == 1) - { - info->m_lowerLimit[srow] = 0; - info->m_upperLimit[srow] = SIMD_INFINITY; - } - else - { - info->m_lowerLimit[srow] = -SIMD_INFINITY; - info->m_upperLimit[srow] = 0; - } - // deal with bounce - if (limot->m_bounce > 0) - { - // calculate joint velocity - btScalar vel; - if (rotational) - { - vel = angVelA.dot(ax1); -//make sure that if no body -> angVelB == zero vec -// if (body1) - vel -= angVelB.dot(ax1); - } - else - { - vel = linVelA.dot(ax1); -//make sure that if no body -> angVelB == zero vec -// if (body1) - vel -= linVelB.dot(ax1); - } - // only apply bounce if the velocity is incoming, and if the - // resulting c[] exceeds what we already have. - if (limit == 1) - { - if (vel < 0) - { - btScalar newc = -limot->m_bounce* vel; - if (newc > info->m_constraintError[srow]) - info->m_constraintError[srow] = newc; - } - } - else - { - if (vel > 0) - { - btScalar newc = -limot->m_bounce * vel; - if (newc < info->m_constraintError[srow]) - info->m_constraintError[srow] = newc; - } - } - } - } - } - return 1; - } - else return 0; -} - - - - - - - ///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). - ///If no axis is provided, it uses the default axis for this constraint. -void btGeneric6DofConstraint::setParam(int num, btScalar value, int axis) -{ - if((axis >= 0) && (axis < 3)) - { - switch(num) - { - case BT_CONSTRAINT_STOP_ERP : - m_linearLimits.m_stopERP[axis] = value; - m_flags |= BT_6DOF_FLAGS_ERP_STOP << (axis * BT_6DOF_FLAGS_AXIS_SHIFT); - break; - case BT_CONSTRAINT_STOP_CFM : - m_linearLimits.m_stopCFM[axis] = value; - m_flags |= BT_6DOF_FLAGS_CFM_STOP << (axis * BT_6DOF_FLAGS_AXIS_SHIFT); - break; - case BT_CONSTRAINT_CFM : - m_linearLimits.m_normalCFM[axis] = value; - m_flags |= BT_6DOF_FLAGS_CFM_NORM << (axis * BT_6DOF_FLAGS_AXIS_SHIFT); - break; - default : - btAssertConstrParams(0); - } - } - else if((axis >=3) && (axis < 6)) - { - switch(num) - { - case BT_CONSTRAINT_STOP_ERP : - m_angularLimits[axis - 3].m_stopERP = value; - m_flags |= BT_6DOF_FLAGS_ERP_STOP << (axis * BT_6DOF_FLAGS_AXIS_SHIFT); - break; - case BT_CONSTRAINT_STOP_CFM : - m_angularLimits[axis - 3].m_stopCFM = value; - m_flags |= BT_6DOF_FLAGS_CFM_STOP << (axis * BT_6DOF_FLAGS_AXIS_SHIFT); - break; - case BT_CONSTRAINT_CFM : - m_angularLimits[axis - 3].m_normalCFM = value; - m_flags |= BT_6DOF_FLAGS_CFM_NORM << (axis * BT_6DOF_FLAGS_AXIS_SHIFT); - break; - default : - btAssertConstrParams(0); - } - } - else - { - btAssertConstrParams(0); - } -} - - ///return the local value of parameter -btScalar btGeneric6DofConstraint::getParam(int num, int axis) const -{ - btScalar retVal = 0; - if((axis >= 0) && (axis < 3)) - { - switch(num) - { - case BT_CONSTRAINT_STOP_ERP : - btAssertConstrParams(m_flags & (BT_6DOF_FLAGS_ERP_STOP << (axis * BT_6DOF_FLAGS_AXIS_SHIFT))); - retVal = m_linearLimits.m_stopERP[axis]; - break; - case BT_CONSTRAINT_STOP_CFM : - btAssertConstrParams(m_flags & (BT_6DOF_FLAGS_CFM_STOP << (axis * BT_6DOF_FLAGS_AXIS_SHIFT))); - retVal = m_linearLimits.m_stopCFM[axis]; - break; - case BT_CONSTRAINT_CFM : - btAssertConstrParams(m_flags & (BT_6DOF_FLAGS_CFM_NORM << (axis * BT_6DOF_FLAGS_AXIS_SHIFT))); - retVal = m_linearLimits.m_normalCFM[axis]; - break; - default : - btAssertConstrParams(0); - } - } - else if((axis >=3) && (axis < 6)) - { - switch(num) - { - case BT_CONSTRAINT_STOP_ERP : - btAssertConstrParams(m_flags & (BT_6DOF_FLAGS_ERP_STOP << (axis * BT_6DOF_FLAGS_AXIS_SHIFT))); - retVal = m_angularLimits[axis - 3].m_stopERP; - break; - case BT_CONSTRAINT_STOP_CFM : - btAssertConstrParams(m_flags & (BT_6DOF_FLAGS_CFM_STOP << (axis * BT_6DOF_FLAGS_AXIS_SHIFT))); - retVal = m_angularLimits[axis - 3].m_stopCFM; - break; - case BT_CONSTRAINT_CFM : - btAssertConstrParams(m_flags & (BT_6DOF_FLAGS_CFM_NORM << (axis * BT_6DOF_FLAGS_AXIS_SHIFT))); - retVal = m_angularLimits[axis - 3].m_normalCFM; - break; - default : - btAssertConstrParams(0); - } - } - else - { - btAssertConstrParams(0); - } - return retVal; -} diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h deleted file mode 100644 index 2653d26dc3f..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h +++ /dev/null @@ -1,588 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -/// 2009 March: btGeneric6DofConstraint refactored by Roman Ponomarev -/// Added support for generic constraint solver through getInfo1/getInfo2 methods - -/* -2007-09-09 -btGeneric6DofConstraint Refactored by Francisco Le?n -email: projectileman@yahoo.com -http://gimpact.sf.net -*/ - - -#ifndef GENERIC_6DOF_CONSTRAINT_H -#define GENERIC_6DOF_CONSTRAINT_H - -#include "LinearMath/btVector3.h" -#include "btJacobianEntry.h" -#include "btTypedConstraint.h" - -class btRigidBody; - - - - -//! Rotation Limit structure for generic joints -class btRotationalLimitMotor -{ -public: - //! limit_parameters - //!@{ - btScalar m_loLimit;//!< joint limit - btScalar m_hiLimit;//!< joint limit - btScalar m_targetVelocity;//!< target motor velocity - btScalar m_maxMotorForce;//!< max force on motor - btScalar m_maxLimitForce;//!< max force on limit - btScalar m_damping;//!< Damping. - btScalar m_limitSoftness;//! Relaxation factor - btScalar m_normalCFM;//!< Constraint force mixing factor - btScalar m_stopERP;//!< Error tolerance factor when joint is at limit - btScalar m_stopCFM;//!< Constraint force mixing factor when joint is at limit - btScalar m_bounce;//!< restitution factor - bool m_enableMotor; - - //!@} - - //! temp_variables - //!@{ - btScalar m_currentLimitError;//! How much is violated this limit - btScalar m_currentPosition; //! current value of angle - int m_currentLimit;//!< 0=free, 1=at lo limit, 2=at hi limit - btScalar m_accumulatedImpulse; - //!@} - - btRotationalLimitMotor() - { - m_accumulatedImpulse = 0.f; - m_targetVelocity = 0; - m_maxMotorForce = 0.1f; - m_maxLimitForce = 300.0f; - m_loLimit = 1.0f; - m_hiLimit = -1.0f; - m_normalCFM = 0.f; - m_stopERP = 0.2f; - m_stopCFM = 0.f; - m_bounce = 0.0f; - m_damping = 1.0f; - m_limitSoftness = 0.5f; - m_currentLimit = 0; - m_currentLimitError = 0; - m_enableMotor = false; - } - - btRotationalLimitMotor(const btRotationalLimitMotor & limot) - { - m_targetVelocity = limot.m_targetVelocity; - m_maxMotorForce = limot.m_maxMotorForce; - m_limitSoftness = limot.m_limitSoftness; - m_loLimit = limot.m_loLimit; - m_hiLimit = limot.m_hiLimit; - m_normalCFM = limot.m_normalCFM; - m_stopERP = limot.m_stopERP; - m_stopCFM = limot.m_stopCFM; - m_bounce = limot.m_bounce; - m_currentLimit = limot.m_currentLimit; - m_currentLimitError = limot.m_currentLimitError; - m_enableMotor = limot.m_enableMotor; - } - - - - //! Is limited - bool isLimited() - { - if(m_loLimit > m_hiLimit) return false; - return true; - } - - //! Need apply correction - bool needApplyTorques() - { - if(m_currentLimit == 0 && m_enableMotor == false) return false; - return true; - } - - //! calculates error - /*! - calculates m_currentLimit and m_currentLimitError. - */ - int testLimitValue(btScalar test_value); - - //! apply the correction impulses for two bodies - btScalar solveAngularLimits(btScalar timeStep,btVector3& axis, btScalar jacDiagABInv,btRigidBody * body0, btRigidBody * body1); - -}; - - - -class btTranslationalLimitMotor -{ -public: - btVector3 m_lowerLimit;//!< the constraint lower limits - btVector3 m_upperLimit;//!< the constraint upper limits - btVector3 m_accumulatedImpulse; - //! Linear_Limit_parameters - //!@{ - btScalar m_limitSoftness;//!< Softness for linear limit - btScalar m_damping;//!< Damping for linear limit - btScalar m_restitution;//! Bounce parameter for linear limit - btVector3 m_normalCFM;//!< Constraint force mixing factor - btVector3 m_stopERP;//!< Error tolerance factor when joint is at limit - btVector3 m_stopCFM;//!< Constraint force mixing factor when joint is at limit - //!@} - bool m_enableMotor[3]; - btVector3 m_targetVelocity;//!< target motor velocity - btVector3 m_maxMotorForce;//!< max force on motor - btVector3 m_currentLimitError;//! How much is violated this limit - btVector3 m_currentLinearDiff;//! Current relative offset of constraint frames - int m_currentLimit[3];//!< 0=free, 1=at lower limit, 2=at upper limit - - btTranslationalLimitMotor() - { - m_lowerLimit.setValue(0.f,0.f,0.f); - m_upperLimit.setValue(0.f,0.f,0.f); - m_accumulatedImpulse.setValue(0.f,0.f,0.f); - m_normalCFM.setValue(0.f, 0.f, 0.f); - m_stopERP.setValue(0.2f, 0.2f, 0.2f); - m_stopCFM.setValue(0.f, 0.f, 0.f); - - m_limitSoftness = 0.7f; - m_damping = btScalar(1.0f); - m_restitution = btScalar(0.5f); - for(int i=0; i < 3; i++) - { - m_enableMotor[i] = false; - m_targetVelocity[i] = btScalar(0.f); - m_maxMotorForce[i] = btScalar(0.f); - } - } - - btTranslationalLimitMotor(const btTranslationalLimitMotor & other ) - { - m_lowerLimit = other.m_lowerLimit; - m_upperLimit = other.m_upperLimit; - m_accumulatedImpulse = other.m_accumulatedImpulse; - - m_limitSoftness = other.m_limitSoftness ; - m_damping = other.m_damping; - m_restitution = other.m_restitution; - m_normalCFM = other.m_normalCFM; - m_stopERP = other.m_stopERP; - m_stopCFM = other.m_stopCFM; - - for(int i=0; i < 3; i++) - { - m_enableMotor[i] = other.m_enableMotor[i]; - m_targetVelocity[i] = other.m_targetVelocity[i]; - m_maxMotorForce[i] = other.m_maxMotorForce[i]; - } - } - - //! Test limit - /*! - - free means upper < lower, - - locked means upper == lower - - limited means upper > lower - - limitIndex: first 3 are linear, next 3 are angular - */ - inline bool isLimited(int limitIndex) - { - return (m_upperLimit[limitIndex] >= m_lowerLimit[limitIndex]); - } - inline bool needApplyForce(int limitIndex) - { - if(m_currentLimit[limitIndex] == 0 && m_enableMotor[limitIndex] == false) return false; - return true; - } - int testLimitValue(int limitIndex, btScalar test_value); - - - btScalar solveLinearAxis( - btScalar timeStep, - btScalar jacDiagABInv, - btRigidBody& body1,const btVector3 &pointInA, - btRigidBody& body2,const btVector3 &pointInB, - int limit_index, - const btVector3 & axis_normal_on_a, - const btVector3 & anchorPos); - - -}; - -enum bt6DofFlags -{ - BT_6DOF_FLAGS_CFM_NORM = 1, - BT_6DOF_FLAGS_CFM_STOP = 2, - BT_6DOF_FLAGS_ERP_STOP = 4 -}; -#define BT_6DOF_FLAGS_AXIS_SHIFT 3 // bits per axis - - -/// btGeneric6DofConstraint between two rigidbodies each with a pivotpoint that descibes the axis location in local space -/*! -btGeneric6DofConstraint can leave any of the 6 degree of freedom 'free' or 'locked'. -currently this limit supports rotational motors
    -
      -
    • For Linear limits, use btGeneric6DofConstraint.setLinearUpperLimit, btGeneric6DofConstraint.setLinearLowerLimit. You can set the parameters with the btTranslationalLimitMotor structure accsesible through the btGeneric6DofConstraint.getTranslationalLimitMotor method. -At this moment translational motors are not supported. May be in the future.
    • - -
    • For Angular limits, use the btRotationalLimitMotor structure for configuring the limit. -This is accessible through btGeneric6DofConstraint.getLimitMotor method, -This brings support for limit parameters and motors.
    • - -
    • Angulars limits have these possible ranges: - - - - - - - - - - - - - - - - - - -
      AXISMIN ANGLEMAX ANGLE
      X-PIPI
      Y-PI/2PI/2
      Z-PIPI
      -
    • -
    - -*/ -class btGeneric6DofConstraint : public btTypedConstraint -{ -protected: - - //! relative_frames - //!@{ - btTransform m_frameInA;//!< the constraint space w.r.t body A - btTransform m_frameInB;//!< the constraint space w.r.t body B - //!@} - - //! Jacobians - //!@{ - btJacobianEntry m_jacLinear[3];//!< 3 orthogonal linear constraints - btJacobianEntry m_jacAng[3];//!< 3 orthogonal angular constraints - //!@} - - //! Linear_Limit_parameters - //!@{ - btTranslationalLimitMotor m_linearLimits; - //!@} - - - //! hinge_parameters - //!@{ - btRotationalLimitMotor m_angularLimits[3]; - //!@} - - -protected: - //! temporal variables - //!@{ - btScalar m_timeStep; - btTransform m_calculatedTransformA; - btTransform m_calculatedTransformB; - btVector3 m_calculatedAxisAngleDiff; - btVector3 m_calculatedAxis[3]; - btVector3 m_calculatedLinearDiff; - btScalar m_factA; - btScalar m_factB; - bool m_hasStaticBody; - - btVector3 m_AnchorPos; // point betwen pivots of bodies A and B to solve linear axes - - bool m_useLinearReferenceFrameA; - bool m_useOffsetForConstraintFrame; - - int m_flags; - - //!@} - - btGeneric6DofConstraint& operator=(btGeneric6DofConstraint& other) - { - btAssert(0); - (void) other; - return *this; - } - - - int setAngularLimits(btConstraintInfo2 *info, int row_offset,const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB); - - int setLinearLimits(btConstraintInfo2 *info, int row, const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB); - - void buildLinearJacobian( - btJacobianEntry & jacLinear,const btVector3 & normalWorld, - const btVector3 & pivotAInW,const btVector3 & pivotBInW); - - void buildAngularJacobian(btJacobianEntry & jacAngular,const btVector3 & jointAxisW); - - // tests linear limits - void calculateLinearInfo(); - - //! calcs the euler angles between the two bodies. - void calculateAngleInfo(); - - - -public: - - ///for backwards compatibility during the transition to 'getInfo/getInfo2' - bool m_useSolveConstraintObsolete; - - btGeneric6DofConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA); - btGeneric6DofConstraint(btRigidBody& rbB, const btTransform& frameInB, bool useLinearReferenceFrameB); - - //! Calcs global transform of the offsets - /*! - Calcs the global transform for the joint offset for body A an B, and also calcs the agle differences between the bodies. - \sa btGeneric6DofConstraint.getCalculatedTransformA , btGeneric6DofConstraint.getCalculatedTransformB, btGeneric6DofConstraint.calculateAngleInfo - */ - void calculateTransforms(const btTransform& transA,const btTransform& transB); - - void calculateTransforms(); - - //! Gets the global transform of the offset for body A - /*! - \sa btGeneric6DofConstraint.getFrameOffsetA, btGeneric6DofConstraint.getFrameOffsetB, btGeneric6DofConstraint.calculateAngleInfo. - */ - const btTransform & getCalculatedTransformA() const - { - return m_calculatedTransformA; - } - - //! Gets the global transform of the offset for body B - /*! - \sa btGeneric6DofConstraint.getFrameOffsetA, btGeneric6DofConstraint.getFrameOffsetB, btGeneric6DofConstraint.calculateAngleInfo. - */ - const btTransform & getCalculatedTransformB() const - { - return m_calculatedTransformB; - } - - const btTransform & getFrameOffsetA() const - { - return m_frameInA; - } - - const btTransform & getFrameOffsetB() const - { - return m_frameInB; - } - - - btTransform & getFrameOffsetA() - { - return m_frameInA; - } - - btTransform & getFrameOffsetB() - { - return m_frameInB; - } - - - //! performs Jacobian calculation, and also calculates angle differences and axis - virtual void buildJacobian(); - - virtual void getInfo1 (btConstraintInfo1* info); - - void getInfo1NonVirtual (btConstraintInfo1* info); - - virtual void getInfo2 (btConstraintInfo2* info); - - void getInfo2NonVirtual (btConstraintInfo2* info,const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB); - - - void updateRHS(btScalar timeStep); - - //! Get the rotation axis in global coordinates - /*! - \pre btGeneric6DofConstraint.buildJacobian must be called previously. - */ - btVector3 getAxis(int axis_index) const; - - //! Get the relative Euler angle - /*! - \pre btGeneric6DofConstraint::calculateTransforms() must be called previously. - */ - btScalar getAngle(int axis_index) const; - - //! Get the relative position of the constraint pivot - /*! - \pre btGeneric6DofConstraint::calculateTransforms() must be called previously. - */ - btScalar getRelativePivotPosition(int axis_index) const; - - - //! Test angular limit. - /*! - Calculates angular correction and returns true if limit needs to be corrected. - \pre btGeneric6DofConstraint::calculateTransforms() must be called previously. - */ - bool testAngularLimitMotor(int axis_index); - - void setLinearLowerLimit(const btVector3& linearLower) - { - m_linearLimits.m_lowerLimit = linearLower; - } - - void setLinearUpperLimit(const btVector3& linearUpper) - { - m_linearLimits.m_upperLimit = linearUpper; - } - - void setAngularLowerLimit(const btVector3& angularLower) - { - for(int i = 0; i < 3; i++) - m_angularLimits[i].m_loLimit = btNormalizeAngle(angularLower[i]); - } - - void setAngularUpperLimit(const btVector3& angularUpper) - { - for(int i = 0; i < 3; i++) - m_angularLimits[i].m_hiLimit = btNormalizeAngle(angularUpper[i]); - } - - //! Retrieves the angular limit informacion - btRotationalLimitMotor * getRotationalLimitMotor(int index) - { - return &m_angularLimits[index]; - } - - //! Retrieves the limit informacion - btTranslationalLimitMotor * getTranslationalLimitMotor() - { - return &m_linearLimits; - } - - //first 3 are linear, next 3 are angular - void setLimit(int axis, btScalar lo, btScalar hi) - { - if(axis<3) - { - m_linearLimits.m_lowerLimit[axis] = lo; - m_linearLimits.m_upperLimit[axis] = hi; - } - else - { - lo = btNormalizeAngle(lo); - hi = btNormalizeAngle(hi); - m_angularLimits[axis-3].m_loLimit = lo; - m_angularLimits[axis-3].m_hiLimit = hi; - } - } - - //! Test limit - /*! - - free means upper < lower, - - locked means upper == lower - - limited means upper > lower - - limitIndex: first 3 are linear, next 3 are angular - */ - bool isLimited(int limitIndex) - { - if(limitIndex<3) - { - return m_linearLimits.isLimited(limitIndex); - - } - return m_angularLimits[limitIndex-3].isLimited(); - } - - virtual void calcAnchorPos(void); // overridable - - int get_limit_motor_info2( btRotationalLimitMotor * limot, - const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB, - btConstraintInfo2 *info, int row, btVector3& ax1, int rotational, int rotAllowed = false); - - // access for UseFrameOffset - bool getUseFrameOffset() { return m_useOffsetForConstraintFrame; } - void setUseFrameOffset(bool frameOffsetOnOff) { m_useOffsetForConstraintFrame = frameOffsetOnOff; } - - ///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). - ///If no axis is provided, it uses the default axis for this constraint. - virtual void setParam(int num, btScalar value, int axis = -1); - ///return the local value of parameter - virtual btScalar getParam(int num, int axis = -1) const; - - virtual int calculateSerializeBufferSize() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; - - -}; - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btGeneric6DofConstraintData -{ - btTypedConstraintData m_typeConstraintData; - btTransformFloatData m_rbAFrame; // constraint axii. Assumes z is hinge axis. - btTransformFloatData m_rbBFrame; - - btVector3FloatData m_linearUpperLimit; - btVector3FloatData m_linearLowerLimit; - - btVector3FloatData m_angularUpperLimit; - btVector3FloatData m_angularLowerLimit; - - int m_useLinearReferenceFrameA; - int m_useOffsetForConstraintFrame; -}; - -SIMD_FORCE_INLINE int btGeneric6DofConstraint::calculateSerializeBufferSize() const -{ - return sizeof(btGeneric6DofConstraintData); -} - - ///fills the dataBuffer and returns the struct name (and 0 on failure) -SIMD_FORCE_INLINE const char* btGeneric6DofConstraint::serialize(void* dataBuffer, btSerializer* serializer) const -{ - - btGeneric6DofConstraintData* dof = (btGeneric6DofConstraintData*)dataBuffer; - btTypedConstraint::serialize(&dof->m_typeConstraintData,serializer); - - m_frameInA.serializeFloat(dof->m_rbAFrame); - m_frameInB.serializeFloat(dof->m_rbBFrame); - - - int i; - for (i=0;i<3;i++) - { - dof->m_angularLowerLimit.m_floats[i] = float(m_angularLimits[i].m_loLimit); - dof->m_angularUpperLimit.m_floats[i] = float(m_angularLimits[i].m_hiLimit); - dof->m_linearLowerLimit.m_floats[i] = float(m_linearLimits.m_lowerLimit[i]); - dof->m_linearUpperLimit.m_floats[i] = float(m_linearLimits.m_upperLimit[i]); - } - - dof->m_useLinearReferenceFrameA = m_useLinearReferenceFrameA? 1 : 0; - dof->m_useOffsetForConstraintFrame = m_useOffsetForConstraintFrame ? 1 : 0; - - return "btGeneric6DofConstraintData"; -} - - - - - -#endif //GENERIC_6DOF_CONSTRAINT_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp deleted file mode 100644 index 3fa7de4ddb8..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp +++ /dev/null @@ -1,146 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org -Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btGeneric6DofSpringConstraint.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include "LinearMath/btTransformUtil.h" - - -btGeneric6DofSpringConstraint::btGeneric6DofSpringConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA) - : btGeneric6DofConstraint(rbA, rbB, frameInA, frameInB, useLinearReferenceFrameA) -{ - for(int i = 0; i < 6; i++) - { - m_springEnabled[i] = false; - m_equilibriumPoint[i] = btScalar(0.f); - m_springStiffness[i] = btScalar(0.f); - m_springDamping[i] = btScalar(1.f); - } -} - - -void btGeneric6DofSpringConstraint::enableSpring(int index, bool onOff) -{ - btAssert((index >= 0) && (index < 6)); - m_springEnabled[index] = onOff; - if(index < 3) - { - m_linearLimits.m_enableMotor[index] = onOff; - } - else - { - m_angularLimits[index - 3].m_enableMotor = onOff; - } -} - - - -void btGeneric6DofSpringConstraint::setStiffness(int index, btScalar stiffness) -{ - btAssert((index >= 0) && (index < 6)); - m_springStiffness[index] = stiffness; -} - - -void btGeneric6DofSpringConstraint::setDamping(int index, btScalar damping) -{ - btAssert((index >= 0) && (index < 6)); - m_springDamping[index] = damping; -} - - -void btGeneric6DofSpringConstraint::setEquilibriumPoint() -{ - calculateTransforms(); - int i; - - for( i = 0; i < 3; i++) - { - m_equilibriumPoint[i] = m_calculatedLinearDiff[i]; - } - for(i = 0; i < 3; i++) - { - m_equilibriumPoint[i + 3] = m_calculatedAxisAngleDiff[i]; - } -} - - - -void btGeneric6DofSpringConstraint::setEquilibriumPoint(int index) -{ - btAssert((index >= 0) && (index < 6)); - calculateTransforms(); - if(index < 3) - { - m_equilibriumPoint[index] = m_calculatedLinearDiff[index]; - } - else - { - m_equilibriumPoint[index] = m_calculatedAxisAngleDiff[index - 3]; - } -} - - - -void btGeneric6DofSpringConstraint::internalUpdateSprings(btConstraintInfo2* info) -{ - // it is assumed that calculateTransforms() have been called before this call - int i; - btVector3 relVel = m_rbB.getLinearVelocity() - m_rbA.getLinearVelocity(); - for(i = 0; i < 3; i++) - { - if(m_springEnabled[i]) - { - // get current position of constraint - btScalar currPos = m_calculatedLinearDiff[i]; - // calculate difference - btScalar delta = currPos - m_equilibriumPoint[i]; - // spring force is (delta * m_stiffness) according to Hooke's Law - btScalar force = delta * m_springStiffness[i]; - btScalar velFactor = info->fps * m_springDamping[i] / btScalar(info->m_numIterations); - m_linearLimits.m_targetVelocity[i] = velFactor * force; - m_linearLimits.m_maxMotorForce[i] = btFabs(force) / info->fps; - } - } - for(i = 0; i < 3; i++) - { - if(m_springEnabled[i + 3]) - { - // get current position of constraint - btScalar currPos = m_calculatedAxisAngleDiff[i]; - // calculate difference - btScalar delta = currPos - m_equilibriumPoint[i+3]; - // spring force is (-delta * m_stiffness) according to Hooke's Law - btScalar force = -delta * m_springStiffness[i+3]; - btScalar velFactor = info->fps * m_springDamping[i+3] / btScalar(info->m_numIterations); - m_angularLimits[i].m_targetVelocity = velFactor * force; - m_angularLimits[i].m_maxMotorForce = btFabs(force) / info->fps; - } - } -} - - -void btGeneric6DofSpringConstraint::getInfo2(btConstraintInfo2* info) -{ - // this will be called by constraint solver at the constraint setup stage - // set current motor parameters - internalUpdateSprings(info); - // do the rest of job for constraint setup - btGeneric6DofConstraint::getInfo2(info); -} - - - - diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h deleted file mode 100644 index e0c1fc9ae39..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org -Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef GENERIC_6DOF_SPRING_CONSTRAINT_H -#define GENERIC_6DOF_SPRING_CONSTRAINT_H - - -#include "LinearMath/btVector3.h" -#include "btTypedConstraint.h" -#include "btGeneric6DofConstraint.h" - - -/// Generic 6 DOF constraint that allows to set spring motors to any translational and rotational DOF - -/// DOF index used in enableSpring() and setStiffness() means: -/// 0 : translation X -/// 1 : translation Y -/// 2 : translation Z -/// 3 : rotation X (3rd Euler rotational around new position of X axis, range [-PI+epsilon, PI-epsilon] ) -/// 4 : rotation Y (2nd Euler rotational around new position of Y axis, range [-PI/2+epsilon, PI/2-epsilon] ) -/// 5 : rotation Z (1st Euler rotational around Z axis, range [-PI+epsilon, PI-epsilon] ) - -class btGeneric6DofSpringConstraint : public btGeneric6DofConstraint -{ -protected: - bool m_springEnabled[6]; - btScalar m_equilibriumPoint[6]; - btScalar m_springStiffness[6]; - btScalar m_springDamping[6]; // between 0 and 1 (1 == no damping) - void internalUpdateSprings(btConstraintInfo2* info); -public: - btGeneric6DofSpringConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA); - void enableSpring(int index, bool onOff); - void setStiffness(int index, btScalar stiffness); - void setDamping(int index, btScalar damping); - void setEquilibriumPoint(); // set the current constraint position/orientation as an equilibrium point for all DOF - void setEquilibriumPoint(int index); // set the current constraint position/orientation as an equilibrium point for given DOF - virtual void getInfo2 (btConstraintInfo2* info); -}; - -#endif // GENERIC_6DOF_SPRING_CONSTRAINT_H - diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp deleted file mode 100644 index 29123d526b4..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org -Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#include "btHinge2Constraint.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include "LinearMath/btTransformUtil.h" - - - -// constructor -// anchor, axis1 and axis2 are in world coordinate system -// axis1 must be orthogonal to axis2 -btHinge2Constraint::btHinge2Constraint(btRigidBody& rbA, btRigidBody& rbB, btVector3& anchor, btVector3& axis1, btVector3& axis2) -: btGeneric6DofSpringConstraint(rbA, rbB, btTransform::getIdentity(), btTransform::getIdentity(), true), - m_anchor(anchor), - m_axis1(axis1), - m_axis2(axis2) -{ - // build frame basis - // 6DOF constraint uses Euler angles and to define limits - // it is assumed that rotational order is : - // Z - first, allowed limits are (-PI,PI); - // new position of Y - second (allowed limits are (-PI/2 + epsilon, PI/2 - epsilon), where epsilon is a small positive number - // used to prevent constraint from instability on poles; - // new position of X, allowed limits are (-PI,PI); - // So to simulate ODE Universal joint we should use parent axis as Z, child axis as Y and limit all other DOFs - // Build the frame in world coordinate system first - btVector3 zAxis = axis1.normalize(); - btVector3 xAxis = axis2.normalize(); - btVector3 yAxis = zAxis.cross(xAxis); // we want right coordinate system - btTransform frameInW; - frameInW.setIdentity(); - frameInW.getBasis().setValue( xAxis[0], yAxis[0], zAxis[0], - xAxis[1], yAxis[1], zAxis[1], - xAxis[2], yAxis[2], zAxis[2]); - frameInW.setOrigin(anchor); - // now get constraint frame in local coordinate systems - m_frameInA = rbA.getCenterOfMassTransform().inverse() * frameInW; - m_frameInB = rbB.getCenterOfMassTransform().inverse() * frameInW; - // sei limits - setLinearLowerLimit(btVector3(0.f, 0.f, -1.f)); - setLinearUpperLimit(btVector3(0.f, 0.f, 1.f)); - // like front wheels of a car - setAngularLowerLimit(btVector3(1.f, 0.f, -SIMD_HALF_PI * 0.5f)); - setAngularUpperLimit(btVector3(-1.f, 0.f, SIMD_HALF_PI * 0.5f)); - // enable suspension - enableSpring(2, true); - setStiffness(2, SIMD_PI * SIMD_PI * 4.f); // period 1 sec for 1 kilogramm weel :-) - setDamping(2, 0.01f); - setEquilibriumPoint(); -} - diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btHinge2Constraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btHinge2Constraint.h deleted file mode 100644 index 15fd4a014cc..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btHinge2Constraint.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org -Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef HINGE2_CONSTRAINT_H -#define HINGE2_CONSTRAINT_H - - - -#include "LinearMath/btVector3.h" -#include "btTypedConstraint.h" -#include "btGeneric6DofSpringConstraint.h" - - - -// Constraint similar to ODE Hinge2 Joint -// has 3 degrees of frredom: -// 2 rotational degrees of freedom, similar to Euler rotations around Z (axis 1) and X (axis 2) -// 1 translational (along axis Z) with suspension spring - -class btHinge2Constraint : public btGeneric6DofSpringConstraint -{ -protected: - btVector3 m_anchor; - btVector3 m_axis1; - btVector3 m_axis2; -public: - // constructor - // anchor, axis1 and axis2 are in world coordinate system - // axis1 must be orthogonal to axis2 - btHinge2Constraint(btRigidBody& rbA, btRigidBody& rbB, btVector3& anchor, btVector3& axis1, btVector3& axis2); - // access - const btVector3& getAnchor() { return m_calculatedTransformA.getOrigin(); } - const btVector3& getAnchor2() { return m_calculatedTransformB.getOrigin(); } - const btVector3& getAxis1() { return m_axis1; } - const btVector3& getAxis2() { return m_axis2; } - btScalar getAngle1() { return getAngle(2); } - btScalar getAngle2() { return getAngle(0); } - // limits - void setUpperLimit(btScalar ang1max) { setAngularUpperLimit(btVector3(-1.f, 0.f, ang1max)); } - void setLowerLimit(btScalar ang1min) { setAngularLowerLimit(btVector3( 1.f, 0.f, ang1min)); } -}; - - - -#endif // HINGE2_CONSTRAINT_H - diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp deleted file mode 100644 index 2bfa55a2933..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp +++ /dev/null @@ -1,992 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btHingeConstraint.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include "LinearMath/btTransformUtil.h" -#include "LinearMath/btMinMax.h" -#include -#include "btSolverBody.h" - - - -//#define HINGE_USE_OBSOLETE_SOLVER false -#define HINGE_USE_OBSOLETE_SOLVER false - -#define HINGE_USE_FRAME_OFFSET true - -#ifndef __SPU__ - - - - - -btHingeConstraint::btHingeConstraint(btRigidBody& rbA,btRigidBody& rbB, const btVector3& pivotInA,const btVector3& pivotInB, - btVector3& axisInA,btVector3& axisInB, bool useReferenceFrameA) - :btTypedConstraint(HINGE_CONSTRAINT_TYPE, rbA,rbB), - m_angularOnly(false), - m_enableAngularMotor(false), - m_useSolveConstraintObsolete(HINGE_USE_OBSOLETE_SOLVER), - m_useOffsetForConstraintFrame(HINGE_USE_FRAME_OFFSET), - m_useReferenceFrameA(useReferenceFrameA), - m_flags(0) -{ - m_rbAFrame.getOrigin() = pivotInA; - - // since no frame is given, assume this to be zero angle and just pick rb transform axis - btVector3 rbAxisA1 = rbA.getCenterOfMassTransform().getBasis().getColumn(0); - - btVector3 rbAxisA2; - btScalar projection = axisInA.dot(rbAxisA1); - if (projection >= 1.0f - SIMD_EPSILON) { - rbAxisA1 = -rbA.getCenterOfMassTransform().getBasis().getColumn(2); - rbAxisA2 = rbA.getCenterOfMassTransform().getBasis().getColumn(1); - } else if (projection <= -1.0f + SIMD_EPSILON) { - rbAxisA1 = rbA.getCenterOfMassTransform().getBasis().getColumn(2); - rbAxisA2 = rbA.getCenterOfMassTransform().getBasis().getColumn(1); - } else { - rbAxisA2 = axisInA.cross(rbAxisA1); - rbAxisA1 = rbAxisA2.cross(axisInA); - } - - m_rbAFrame.getBasis().setValue( rbAxisA1.getX(),rbAxisA2.getX(),axisInA.getX(), - rbAxisA1.getY(),rbAxisA2.getY(),axisInA.getY(), - rbAxisA1.getZ(),rbAxisA2.getZ(),axisInA.getZ() ); - - btQuaternion rotationArc = shortestArcQuat(axisInA,axisInB); - btVector3 rbAxisB1 = quatRotate(rotationArc,rbAxisA1); - btVector3 rbAxisB2 = axisInB.cross(rbAxisB1); - - m_rbBFrame.getOrigin() = pivotInB; - m_rbBFrame.getBasis().setValue( rbAxisB1.getX(),rbAxisB2.getX(),axisInB.getX(), - rbAxisB1.getY(),rbAxisB2.getY(),axisInB.getY(), - rbAxisB1.getZ(),rbAxisB2.getZ(),axisInB.getZ() ); - - //start with free - m_lowerLimit = btScalar(1.0f); - m_upperLimit = btScalar(-1.0f); - m_biasFactor = 0.3f; - m_relaxationFactor = 1.0f; - m_limitSoftness = 0.9f; - m_solveLimit = false; - m_referenceSign = m_useReferenceFrameA ? btScalar(-1.f) : btScalar(1.f); -} - - - -btHingeConstraint::btHingeConstraint(btRigidBody& rbA,const btVector3& pivotInA,btVector3& axisInA, bool useReferenceFrameA) -:btTypedConstraint(HINGE_CONSTRAINT_TYPE, rbA), m_angularOnly(false), m_enableAngularMotor(false), -m_useSolveConstraintObsolete(HINGE_USE_OBSOLETE_SOLVER), -m_useOffsetForConstraintFrame(HINGE_USE_FRAME_OFFSET), -m_useReferenceFrameA(useReferenceFrameA), -m_flags(0) -{ - - // since no frame is given, assume this to be zero angle and just pick rb transform axis - // fixed axis in worldspace - btVector3 rbAxisA1, rbAxisA2; - btPlaneSpace1(axisInA, rbAxisA1, rbAxisA2); - - m_rbAFrame.getOrigin() = pivotInA; - m_rbAFrame.getBasis().setValue( rbAxisA1.getX(),rbAxisA2.getX(),axisInA.getX(), - rbAxisA1.getY(),rbAxisA2.getY(),axisInA.getY(), - rbAxisA1.getZ(),rbAxisA2.getZ(),axisInA.getZ() ); - - btVector3 axisInB = rbA.getCenterOfMassTransform().getBasis() * axisInA; - - btQuaternion rotationArc = shortestArcQuat(axisInA,axisInB); - btVector3 rbAxisB1 = quatRotate(rotationArc,rbAxisA1); - btVector3 rbAxisB2 = axisInB.cross(rbAxisB1); - - - m_rbBFrame.getOrigin() = rbA.getCenterOfMassTransform()(pivotInA); - m_rbBFrame.getBasis().setValue( rbAxisB1.getX(),rbAxisB2.getX(),axisInB.getX(), - rbAxisB1.getY(),rbAxisB2.getY(),axisInB.getY(), - rbAxisB1.getZ(),rbAxisB2.getZ(),axisInB.getZ() ); - - //start with free - m_lowerLimit = btScalar(1.0f); - m_upperLimit = btScalar(-1.0f); - m_biasFactor = 0.3f; - m_relaxationFactor = 1.0f; - m_limitSoftness = 0.9f; - m_solveLimit = false; - m_referenceSign = m_useReferenceFrameA ? btScalar(-1.f) : btScalar(1.f); -} - - - -btHingeConstraint::btHingeConstraint(btRigidBody& rbA,btRigidBody& rbB, - const btTransform& rbAFrame, const btTransform& rbBFrame, bool useReferenceFrameA) -:btTypedConstraint(HINGE_CONSTRAINT_TYPE, rbA,rbB),m_rbAFrame(rbAFrame),m_rbBFrame(rbBFrame), -m_angularOnly(false), -m_enableAngularMotor(false), -m_useSolveConstraintObsolete(HINGE_USE_OBSOLETE_SOLVER), -m_useOffsetForConstraintFrame(HINGE_USE_FRAME_OFFSET), -m_useReferenceFrameA(useReferenceFrameA), -m_flags(0) -{ - //start with free - m_lowerLimit = btScalar(1.0f); - m_upperLimit = btScalar(-1.0f); - m_biasFactor = 0.3f; - m_relaxationFactor = 1.0f; - m_limitSoftness = 0.9f; - m_solveLimit = false; - m_referenceSign = m_useReferenceFrameA ? btScalar(-1.f) : btScalar(1.f); -} - - - -btHingeConstraint::btHingeConstraint(btRigidBody& rbA, const btTransform& rbAFrame, bool useReferenceFrameA) -:btTypedConstraint(HINGE_CONSTRAINT_TYPE, rbA),m_rbAFrame(rbAFrame),m_rbBFrame(rbAFrame), -m_angularOnly(false), -m_enableAngularMotor(false), -m_useSolveConstraintObsolete(HINGE_USE_OBSOLETE_SOLVER), -m_useOffsetForConstraintFrame(HINGE_USE_FRAME_OFFSET), -m_useReferenceFrameA(useReferenceFrameA), -m_flags(0) -{ - ///not providing rigidbody B means implicitly using worldspace for body B - - m_rbBFrame.getOrigin() = m_rbA.getCenterOfMassTransform()(m_rbAFrame.getOrigin()); - - //start with free - m_lowerLimit = btScalar(1.0f); - m_upperLimit = btScalar(-1.0f); - m_biasFactor = 0.3f; - m_relaxationFactor = 1.0f; - m_limitSoftness = 0.9f; - m_solveLimit = false; - m_referenceSign = m_useReferenceFrameA ? btScalar(-1.f) : btScalar(1.f); -} - - - -void btHingeConstraint::buildJacobian() -{ - if (m_useSolveConstraintObsolete) - { - m_appliedImpulse = btScalar(0.); - m_accMotorImpulse = btScalar(0.); - - if (!m_angularOnly) - { - btVector3 pivotAInW = m_rbA.getCenterOfMassTransform()*m_rbAFrame.getOrigin(); - btVector3 pivotBInW = m_rbB.getCenterOfMassTransform()*m_rbBFrame.getOrigin(); - btVector3 relPos = pivotBInW - pivotAInW; - - btVector3 normal[3]; - if (relPos.length2() > SIMD_EPSILON) - { - normal[0] = relPos.normalized(); - } - else - { - normal[0].setValue(btScalar(1.0),0,0); - } - - btPlaneSpace1(normal[0], normal[1], normal[2]); - - for (int i=0;i<3;i++) - { - new (&m_jac[i]) btJacobianEntry( - m_rbA.getCenterOfMassTransform().getBasis().transpose(), - m_rbB.getCenterOfMassTransform().getBasis().transpose(), - pivotAInW - m_rbA.getCenterOfMassPosition(), - pivotBInW - m_rbB.getCenterOfMassPosition(), - normal[i], - m_rbA.getInvInertiaDiagLocal(), - m_rbA.getInvMass(), - m_rbB.getInvInertiaDiagLocal(), - m_rbB.getInvMass()); - } - } - - //calculate two perpendicular jointAxis, orthogonal to hingeAxis - //these two jointAxis require equal angular velocities for both bodies - - //this is unused for now, it's a todo - btVector3 jointAxis0local; - btVector3 jointAxis1local; - - btPlaneSpace1(m_rbAFrame.getBasis().getColumn(2),jointAxis0local,jointAxis1local); - - btVector3 jointAxis0 = getRigidBodyA().getCenterOfMassTransform().getBasis() * jointAxis0local; - btVector3 jointAxis1 = getRigidBodyA().getCenterOfMassTransform().getBasis() * jointAxis1local; - btVector3 hingeAxisWorld = getRigidBodyA().getCenterOfMassTransform().getBasis() * m_rbAFrame.getBasis().getColumn(2); - - new (&m_jacAng[0]) btJacobianEntry(jointAxis0, - m_rbA.getCenterOfMassTransform().getBasis().transpose(), - m_rbB.getCenterOfMassTransform().getBasis().transpose(), - m_rbA.getInvInertiaDiagLocal(), - m_rbB.getInvInertiaDiagLocal()); - - new (&m_jacAng[1]) btJacobianEntry(jointAxis1, - m_rbA.getCenterOfMassTransform().getBasis().transpose(), - m_rbB.getCenterOfMassTransform().getBasis().transpose(), - m_rbA.getInvInertiaDiagLocal(), - m_rbB.getInvInertiaDiagLocal()); - - new (&m_jacAng[2]) btJacobianEntry(hingeAxisWorld, - m_rbA.getCenterOfMassTransform().getBasis().transpose(), - m_rbB.getCenterOfMassTransform().getBasis().transpose(), - m_rbA.getInvInertiaDiagLocal(), - m_rbB.getInvInertiaDiagLocal()); - - // clear accumulator - m_accLimitImpulse = btScalar(0.); - - // test angular limit - testLimit(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); - - //Compute K = J*W*J' for hinge axis - btVector3 axisA = getRigidBodyA().getCenterOfMassTransform().getBasis() * m_rbAFrame.getBasis().getColumn(2); - m_kHinge = 1.0f / (getRigidBodyA().computeAngularImpulseDenominator(axisA) + - getRigidBodyB().computeAngularImpulseDenominator(axisA)); - - } -} - - -#endif //__SPU__ - - -void btHingeConstraint::getInfo1(btConstraintInfo1* info) -{ - if (m_useSolveConstraintObsolete) - { - info->m_numConstraintRows = 0; - info->nub = 0; - } - else - { - info->m_numConstraintRows = 5; // Fixed 3 linear + 2 angular - info->nub = 1; - //always add the row, to avoid computation (data is not available yet) - //prepare constraint - testLimit(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); - if(getSolveLimit() || getEnableAngularMotor()) - { - info->m_numConstraintRows++; // limit 3rd anguar as well - info->nub--; - } - - } -} - -void btHingeConstraint::getInfo1NonVirtual(btConstraintInfo1* info) -{ - if (m_useSolveConstraintObsolete) - { - info->m_numConstraintRows = 0; - info->nub = 0; - } - else - { - //always add the 'limit' row, to avoid computation (data is not available yet) - info->m_numConstraintRows = 6; // Fixed 3 linear + 2 angular - info->nub = 0; - } -} - -void btHingeConstraint::getInfo2 (btConstraintInfo2* info) -{ - if(m_useOffsetForConstraintFrame) - { - getInfo2InternalUsingFrameOffset(info, m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform(),m_rbA.getAngularVelocity(),m_rbB.getAngularVelocity()); - } - else - { - getInfo2Internal(info, m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform(),m_rbA.getAngularVelocity(),m_rbB.getAngularVelocity()); - } -} - - -void btHingeConstraint::getInfo2NonVirtual (btConstraintInfo2* info,const btTransform& transA,const btTransform& transB,const btVector3& angVelA,const btVector3& angVelB) -{ - ///the regular (virtual) implementation getInfo2 already performs 'testLimit' during getInfo1, so we need to do it now - testLimit(transA,transB); - - getInfo2Internal(info,transA,transB,angVelA,angVelB); -} - - -void btHingeConstraint::getInfo2Internal(btConstraintInfo2* info, const btTransform& transA,const btTransform& transB,const btVector3& angVelA,const btVector3& angVelB) -{ - - btAssert(!m_useSolveConstraintObsolete); - int i, skip = info->rowskip; - // transforms in world space - btTransform trA = transA*m_rbAFrame; - btTransform trB = transB*m_rbBFrame; - // pivot point - btVector3 pivotAInW = trA.getOrigin(); - btVector3 pivotBInW = trB.getOrigin(); -#if 0 - if (0) - { - for (i=0;i<6;i++) - { - info->m_J1linearAxis[i*skip]=0; - info->m_J1linearAxis[i*skip+1]=0; - info->m_J1linearAxis[i*skip+2]=0; - - info->m_J1angularAxis[i*skip]=0; - info->m_J1angularAxis[i*skip+1]=0; - info->m_J1angularAxis[i*skip+2]=0; - - info->m_J2angularAxis[i*skip]=0; - info->m_J2angularAxis[i*skip+1]=0; - info->m_J2angularAxis[i*skip+2]=0; - - info->m_constraintError[i*skip]=0.f; - } - } -#endif //#if 0 - // linear (all fixed) - info->m_J1linearAxis[0] = 1; - info->m_J1linearAxis[skip + 1] = 1; - info->m_J1linearAxis[2 * skip + 2] = 1; - - - - - - btVector3 a1 = pivotAInW - transA.getOrigin(); - { - btVector3* angular0 = (btVector3*)(info->m_J1angularAxis); - btVector3* angular1 = (btVector3*)(info->m_J1angularAxis + skip); - btVector3* angular2 = (btVector3*)(info->m_J1angularAxis + 2 * skip); - btVector3 a1neg = -a1; - a1neg.getSkewSymmetricMatrix(angular0,angular1,angular2); - } - btVector3 a2 = pivotBInW - transB.getOrigin(); - { - btVector3* angular0 = (btVector3*)(info->m_J2angularAxis); - btVector3* angular1 = (btVector3*)(info->m_J2angularAxis + skip); - btVector3* angular2 = (btVector3*)(info->m_J2angularAxis + 2 * skip); - a2.getSkewSymmetricMatrix(angular0,angular1,angular2); - } - // linear RHS - btScalar k = info->fps * info->erp; - for(i = 0; i < 3; i++) - { - info->m_constraintError[i * skip] = k * (pivotBInW[i] - pivotAInW[i]); - } - // make rotations around X and Y equal - // the hinge axis should be the only unconstrained - // rotational axis, the angular velocity of the two bodies perpendicular to - // the hinge axis should be equal. thus the constraint equations are - // p*w1 - p*w2 = 0 - // q*w1 - q*w2 = 0 - // where p and q are unit vectors normal to the hinge axis, and w1 and w2 - // are the angular velocity vectors of the two bodies. - // get hinge axis (Z) - btVector3 ax1 = trA.getBasis().getColumn(2); - // get 2 orthos to hinge axis (X, Y) - btVector3 p = trA.getBasis().getColumn(0); - btVector3 q = trA.getBasis().getColumn(1); - // set the two hinge angular rows - int s3 = 3 * info->rowskip; - int s4 = 4 * info->rowskip; - - info->m_J1angularAxis[s3 + 0] = p[0]; - info->m_J1angularAxis[s3 + 1] = p[1]; - info->m_J1angularAxis[s3 + 2] = p[2]; - info->m_J1angularAxis[s4 + 0] = q[0]; - info->m_J1angularAxis[s4 + 1] = q[1]; - info->m_J1angularAxis[s4 + 2] = q[2]; - - info->m_J2angularAxis[s3 + 0] = -p[0]; - info->m_J2angularAxis[s3 + 1] = -p[1]; - info->m_J2angularAxis[s3 + 2] = -p[2]; - info->m_J2angularAxis[s4 + 0] = -q[0]; - info->m_J2angularAxis[s4 + 1] = -q[1]; - info->m_J2angularAxis[s4 + 2] = -q[2]; - // compute the right hand side of the constraint equation. set relative - // body velocities along p and q to bring the hinge back into alignment. - // if ax1,ax2 are the unit length hinge axes as computed from body1 and - // body2, we need to rotate both bodies along the axis u = (ax1 x ax2). - // if `theta' is the angle between ax1 and ax2, we need an angular velocity - // along u to cover angle erp*theta in one step : - // |angular_velocity| = angle/time = erp*theta / stepsize - // = (erp*fps) * theta - // angular_velocity = |angular_velocity| * (ax1 x ax2) / |ax1 x ax2| - // = (erp*fps) * theta * (ax1 x ax2) / sin(theta) - // ...as ax1 and ax2 are unit length. if theta is smallish, - // theta ~= sin(theta), so - // angular_velocity = (erp*fps) * (ax1 x ax2) - // ax1 x ax2 is in the plane space of ax1, so we project the angular - // velocity to p and q to find the right hand side. - btVector3 ax2 = trB.getBasis().getColumn(2); - btVector3 u = ax1.cross(ax2); - info->m_constraintError[s3] = k * u.dot(p); - info->m_constraintError[s4] = k * u.dot(q); - // check angular limits - int nrow = 4; // last filled row - int srow; - btScalar limit_err = btScalar(0.0); - int limit = 0; - if(getSolveLimit()) - { - limit_err = m_correction * m_referenceSign; - limit = (limit_err > btScalar(0.0)) ? 1 : 2; - } - // if the hinge has joint limits or motor, add in the extra row - int powered = 0; - if(getEnableAngularMotor()) - { - powered = 1; - } - if(limit || powered) - { - nrow++; - srow = nrow * info->rowskip; - info->m_J1angularAxis[srow+0] = ax1[0]; - info->m_J1angularAxis[srow+1] = ax1[1]; - info->m_J1angularAxis[srow+2] = ax1[2]; - - info->m_J2angularAxis[srow+0] = -ax1[0]; - info->m_J2angularAxis[srow+1] = -ax1[1]; - info->m_J2angularAxis[srow+2] = -ax1[2]; - - btScalar lostop = getLowerLimit(); - btScalar histop = getUpperLimit(); - if(limit && (lostop == histop)) - { // the joint motor is ineffective - powered = 0; - } - info->m_constraintError[srow] = btScalar(0.0f); - btScalar currERP = (m_flags & BT_HINGE_FLAGS_ERP_STOP) ? m_stopERP : info->erp; - if(powered) - { - if(m_flags & BT_HINGE_FLAGS_CFM_NORM) - { - info->cfm[srow] = m_normalCFM; - } - btScalar mot_fact = getMotorFactor(m_hingeAngle, lostop, histop, m_motorTargetVelocity, info->fps * currERP); - info->m_constraintError[srow] += mot_fact * m_motorTargetVelocity * m_referenceSign; - info->m_lowerLimit[srow] = - m_maxMotorImpulse; - info->m_upperLimit[srow] = m_maxMotorImpulse; - } - if(limit) - { - k = info->fps * currERP; - info->m_constraintError[srow] += k * limit_err; - if(m_flags & BT_HINGE_FLAGS_CFM_STOP) - { - info->cfm[srow] = m_stopCFM; - } - if(lostop == histop) - { - // limited low and high simultaneously - info->m_lowerLimit[srow] = -SIMD_INFINITY; - info->m_upperLimit[srow] = SIMD_INFINITY; - } - else if(limit == 1) - { // low limit - info->m_lowerLimit[srow] = 0; - info->m_upperLimit[srow] = SIMD_INFINITY; - } - else - { // high limit - info->m_lowerLimit[srow] = -SIMD_INFINITY; - info->m_upperLimit[srow] = 0; - } - // bounce (we'll use slider parameter abs(1.0 - m_dampingLimAng) for that) - btScalar bounce = m_relaxationFactor; - if(bounce > btScalar(0.0)) - { - btScalar vel = angVelA.dot(ax1); - vel -= angVelB.dot(ax1); - // only apply bounce if the velocity is incoming, and if the - // resulting c[] exceeds what we already have. - if(limit == 1) - { // low limit - if(vel < 0) - { - btScalar newc = -bounce * vel; - if(newc > info->m_constraintError[srow]) - { - info->m_constraintError[srow] = newc; - } - } - } - else - { // high limit - all those computations are reversed - if(vel > 0) - { - btScalar newc = -bounce * vel; - if(newc < info->m_constraintError[srow]) - { - info->m_constraintError[srow] = newc; - } - } - } - } - info->m_constraintError[srow] *= m_biasFactor; - } // if(limit) - } // if angular limit or powered -} - - - - - - -void btHingeConstraint::updateRHS(btScalar timeStep) -{ - (void)timeStep; - -} - - -btScalar btHingeConstraint::getHingeAngle() -{ - return getHingeAngle(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); -} - -btScalar btHingeConstraint::getHingeAngle(const btTransform& transA,const btTransform& transB) -{ - const btVector3 refAxis0 = transA.getBasis() * m_rbAFrame.getBasis().getColumn(0); - const btVector3 refAxis1 = transA.getBasis() * m_rbAFrame.getBasis().getColumn(1); - const btVector3 swingAxis = transB.getBasis() * m_rbBFrame.getBasis().getColumn(1); -// btScalar angle = btAtan2Fast(swingAxis.dot(refAxis0), swingAxis.dot(refAxis1)); - btScalar angle = btAtan2(swingAxis.dot(refAxis0), swingAxis.dot(refAxis1)); - return m_referenceSign * angle; -} - - -#if 0 -void btHingeConstraint::testLimit() -{ - // Compute limit information - m_hingeAngle = getHingeAngle(); - m_correction = btScalar(0.); - m_limitSign = btScalar(0.); - m_solveLimit = false; - if (m_lowerLimit <= m_upperLimit) - { - if (m_hingeAngle <= m_lowerLimit) - { - m_correction = (m_lowerLimit - m_hingeAngle); - m_limitSign = 1.0f; - m_solveLimit = true; - } - else if (m_hingeAngle >= m_upperLimit) - { - m_correction = m_upperLimit - m_hingeAngle; - m_limitSign = -1.0f; - m_solveLimit = true; - } - } - return; -} -#else - - -void btHingeConstraint::testLimit(const btTransform& transA,const btTransform& transB) -{ - // Compute limit information - m_hingeAngle = getHingeAngle(transA,transB); - m_correction = btScalar(0.); - m_limitSign = btScalar(0.); - m_solveLimit = false; - if (m_lowerLimit <= m_upperLimit) - { - m_hingeAngle = btAdjustAngleToLimits(m_hingeAngle, m_lowerLimit, m_upperLimit); - if (m_hingeAngle <= m_lowerLimit) - { - m_correction = (m_lowerLimit - m_hingeAngle); - m_limitSign = 1.0f; - m_solveLimit = true; - } - else if (m_hingeAngle >= m_upperLimit) - { - m_correction = m_upperLimit - m_hingeAngle; - m_limitSign = -1.0f; - m_solveLimit = true; - } - } - return; -} -#endif - -static btVector3 vHinge(0, 0, btScalar(1)); - -void btHingeConstraint::setMotorTarget(const btQuaternion& qAinB, btScalar dt) -{ - // convert target from body to constraint space - btQuaternion qConstraint = m_rbBFrame.getRotation().inverse() * qAinB * m_rbAFrame.getRotation(); - qConstraint.normalize(); - - // extract "pure" hinge component - btVector3 vNoHinge = quatRotate(qConstraint, vHinge); vNoHinge.normalize(); - btQuaternion qNoHinge = shortestArcQuat(vHinge, vNoHinge); - btQuaternion qHinge = qNoHinge.inverse() * qConstraint; - qHinge.normalize(); - - // compute angular target, clamped to limits - btScalar targetAngle = qHinge.getAngle(); - if (targetAngle > SIMD_PI) // long way around. flip quat and recalculate. - { - qHinge = operator-(qHinge); - targetAngle = qHinge.getAngle(); - } - if (qHinge.getZ() < 0) - targetAngle = -targetAngle; - - setMotorTarget(targetAngle, dt); -} - -void btHingeConstraint::setMotorTarget(btScalar targetAngle, btScalar dt) -{ - if (m_lowerLimit < m_upperLimit) - { - if (targetAngle < m_lowerLimit) - targetAngle = m_lowerLimit; - else if (targetAngle > m_upperLimit) - targetAngle = m_upperLimit; - } - - // compute angular velocity - btScalar curAngle = getHingeAngle(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); - btScalar dAngle = targetAngle - curAngle; - m_motorTargetVelocity = dAngle / dt; -} - - - -void btHingeConstraint::getInfo2InternalUsingFrameOffset(btConstraintInfo2* info, const btTransform& transA,const btTransform& transB,const btVector3& angVelA,const btVector3& angVelB) -{ - btAssert(!m_useSolveConstraintObsolete); - int i, s = info->rowskip; - // transforms in world space - btTransform trA = transA*m_rbAFrame; - btTransform trB = transB*m_rbBFrame; - // pivot point - btVector3 pivotAInW = trA.getOrigin(); - btVector3 pivotBInW = trB.getOrigin(); -#if 1 - // difference between frames in WCS - btVector3 ofs = trB.getOrigin() - trA.getOrigin(); - // now get weight factors depending on masses - btScalar miA = getRigidBodyA().getInvMass(); - btScalar miB = getRigidBodyB().getInvMass(); - bool hasStaticBody = (miA < SIMD_EPSILON) || (miB < SIMD_EPSILON); - btScalar miS = miA + miB; - btScalar factA, factB; - if(miS > btScalar(0.f)) - { - factA = miB / miS; - } - else - { - factA = btScalar(0.5f); - } - factB = btScalar(1.0f) - factA; - // get the desired direction of hinge axis - // as weighted sum of Z-orthos of frameA and frameB in WCS - btVector3 ax1A = trA.getBasis().getColumn(2); - btVector3 ax1B = trB.getBasis().getColumn(2); - btVector3 ax1 = ax1A * factA + ax1B * factB; - ax1.normalize(); - // fill first 3 rows - // we want: velA + wA x relA == velB + wB x relB - btTransform bodyA_trans = transA; - btTransform bodyB_trans = transB; - int s0 = 0; - int s1 = s; - int s2 = s * 2; - int nrow = 2; // last filled row - btVector3 tmpA, tmpB, relA, relB, p, q; - // get vector from bodyB to frameB in WCS - relB = trB.getOrigin() - bodyB_trans.getOrigin(); - // get its projection to hinge axis - btVector3 projB = ax1 * relB.dot(ax1); - // get vector directed from bodyB to hinge axis (and orthogonal to it) - btVector3 orthoB = relB - projB; - // same for bodyA - relA = trA.getOrigin() - bodyA_trans.getOrigin(); - btVector3 projA = ax1 * relA.dot(ax1); - btVector3 orthoA = relA - projA; - btVector3 totalDist = projA - projB; - // get offset vectors relA and relB - relA = orthoA + totalDist * factA; - relB = orthoB - totalDist * factB; - // now choose average ortho to hinge axis - p = orthoB * factA + orthoA * factB; - btScalar len2 = p.length2(); - if(len2 > SIMD_EPSILON) - { - p /= btSqrt(len2); - } - else - { - p = trA.getBasis().getColumn(1); - } - // make one more ortho - q = ax1.cross(p); - // fill three rows - tmpA = relA.cross(p); - tmpB = relB.cross(p); - for (i=0; i<3; i++) info->m_J1angularAxis[s0+i] = tmpA[i]; - for (i=0; i<3; i++) info->m_J2angularAxis[s0+i] = -tmpB[i]; - tmpA = relA.cross(q); - tmpB = relB.cross(q); - if(hasStaticBody && getSolveLimit()) - { // to make constraint between static and dynamic objects more rigid - // remove wA (or wB) from equation if angular limit is hit - tmpB *= factB; - tmpA *= factA; - } - for (i=0; i<3; i++) info->m_J1angularAxis[s1+i] = tmpA[i]; - for (i=0; i<3; i++) info->m_J2angularAxis[s1+i] = -tmpB[i]; - tmpA = relA.cross(ax1); - tmpB = relB.cross(ax1); - if(hasStaticBody) - { // to make constraint between static and dynamic objects more rigid - // remove wA (or wB) from equation - tmpB *= factB; - tmpA *= factA; - } - for (i=0; i<3; i++) info->m_J1angularAxis[s2+i] = tmpA[i]; - for (i=0; i<3; i++) info->m_J2angularAxis[s2+i] = -tmpB[i]; - - for (i=0; i<3; i++) info->m_J1linearAxis[s0+i] = p[i]; - for (i=0; i<3; i++) info->m_J1linearAxis[s1+i] = q[i]; - for (i=0; i<3; i++) info->m_J1linearAxis[s2+i] = ax1[i]; - // compute three elements of right hand side - btScalar k = info->fps * info->erp; - btScalar rhs = k * p.dot(ofs); - info->m_constraintError[s0] = rhs; - rhs = k * q.dot(ofs); - info->m_constraintError[s1] = rhs; - rhs = k * ax1.dot(ofs); - info->m_constraintError[s2] = rhs; - // the hinge axis should be the only unconstrained - // rotational axis, the angular velocity of the two bodies perpendicular to - // the hinge axis should be equal. thus the constraint equations are - // p*w1 - p*w2 = 0 - // q*w1 - q*w2 = 0 - // where p and q are unit vectors normal to the hinge axis, and w1 and w2 - // are the angular velocity vectors of the two bodies. - int s3 = 3 * s; - int s4 = 4 * s; - info->m_J1angularAxis[s3 + 0] = p[0]; - info->m_J1angularAxis[s3 + 1] = p[1]; - info->m_J1angularAxis[s3 + 2] = p[2]; - info->m_J1angularAxis[s4 + 0] = q[0]; - info->m_J1angularAxis[s4 + 1] = q[1]; - info->m_J1angularAxis[s4 + 2] = q[2]; - - info->m_J2angularAxis[s3 + 0] = -p[0]; - info->m_J2angularAxis[s3 + 1] = -p[1]; - info->m_J2angularAxis[s3 + 2] = -p[2]; - info->m_J2angularAxis[s4 + 0] = -q[0]; - info->m_J2angularAxis[s4 + 1] = -q[1]; - info->m_J2angularAxis[s4 + 2] = -q[2]; - // compute the right hand side of the constraint equation. set relative - // body velocities along p and q to bring the hinge back into alignment. - // if ax1A,ax1B are the unit length hinge axes as computed from bodyA and - // bodyB, we need to rotate both bodies along the axis u = (ax1 x ax2). - // if "theta" is the angle between ax1 and ax2, we need an angular velocity - // along u to cover angle erp*theta in one step : - // |angular_velocity| = angle/time = erp*theta / stepsize - // = (erp*fps) * theta - // angular_velocity = |angular_velocity| * (ax1 x ax2) / |ax1 x ax2| - // = (erp*fps) * theta * (ax1 x ax2) / sin(theta) - // ...as ax1 and ax2 are unit length. if theta is smallish, - // theta ~= sin(theta), so - // angular_velocity = (erp*fps) * (ax1 x ax2) - // ax1 x ax2 is in the plane space of ax1, so we project the angular - // velocity to p and q to find the right hand side. - k = info->fps * info->erp; - btVector3 u = ax1A.cross(ax1B); - info->m_constraintError[s3] = k * u.dot(p); - info->m_constraintError[s4] = k * u.dot(q); -#endif - // check angular limits - nrow = 4; // last filled row - int srow; - btScalar limit_err = btScalar(0.0); - int limit = 0; - if(getSolveLimit()) - { - limit_err = m_correction * m_referenceSign; - limit = (limit_err > btScalar(0.0)) ? 1 : 2; - } - // if the hinge has joint limits or motor, add in the extra row - int powered = 0; - if(getEnableAngularMotor()) - { - powered = 1; - } - if(limit || powered) - { - nrow++; - srow = nrow * info->rowskip; - info->m_J1angularAxis[srow+0] = ax1[0]; - info->m_J1angularAxis[srow+1] = ax1[1]; - info->m_J1angularAxis[srow+2] = ax1[2]; - - info->m_J2angularAxis[srow+0] = -ax1[0]; - info->m_J2angularAxis[srow+1] = -ax1[1]; - info->m_J2angularAxis[srow+2] = -ax1[2]; - - btScalar lostop = getLowerLimit(); - btScalar histop = getUpperLimit(); - if(limit && (lostop == histop)) - { // the joint motor is ineffective - powered = 0; - } - info->m_constraintError[srow] = btScalar(0.0f); - btScalar currERP = (m_flags & BT_HINGE_FLAGS_ERP_STOP) ? m_stopERP : info->erp; - if(powered) - { - if(m_flags & BT_HINGE_FLAGS_CFM_NORM) - { - info->cfm[srow] = m_normalCFM; - } - btScalar mot_fact = getMotorFactor(m_hingeAngle, lostop, histop, m_motorTargetVelocity, info->fps * currERP); - info->m_constraintError[srow] += mot_fact * m_motorTargetVelocity * m_referenceSign; - info->m_lowerLimit[srow] = - m_maxMotorImpulse; - info->m_upperLimit[srow] = m_maxMotorImpulse; - } - if(limit) - { - k = info->fps * currERP; - info->m_constraintError[srow] += k * limit_err; - if(m_flags & BT_HINGE_FLAGS_CFM_STOP) - { - info->cfm[srow] = m_stopCFM; - } - if(lostop == histop) - { - // limited low and high simultaneously - info->m_lowerLimit[srow] = -SIMD_INFINITY; - info->m_upperLimit[srow] = SIMD_INFINITY; - } - else if(limit == 1) - { // low limit - info->m_lowerLimit[srow] = 0; - info->m_upperLimit[srow] = SIMD_INFINITY; - } - else - { // high limit - info->m_lowerLimit[srow] = -SIMD_INFINITY; - info->m_upperLimit[srow] = 0; - } - // bounce (we'll use slider parameter abs(1.0 - m_dampingLimAng) for that) - btScalar bounce = m_relaxationFactor; - if(bounce > btScalar(0.0)) - { - btScalar vel = angVelA.dot(ax1); - vel -= angVelB.dot(ax1); - // only apply bounce if the velocity is incoming, and if the - // resulting c[] exceeds what we already have. - if(limit == 1) - { // low limit - if(vel < 0) - { - btScalar newc = -bounce * vel; - if(newc > info->m_constraintError[srow]) - { - info->m_constraintError[srow] = newc; - } - } - } - else - { // high limit - all those computations are reversed - if(vel > 0) - { - btScalar newc = -bounce * vel; - if(newc < info->m_constraintError[srow]) - { - info->m_constraintError[srow] = newc; - } - } - } - } - info->m_constraintError[srow] *= m_biasFactor; - } // if(limit) - } // if angular limit or powered -} - - -///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). -///If no axis is provided, it uses the default axis for this constraint. -void btHingeConstraint::setParam(int num, btScalar value, int axis) -{ - if((axis == -1) || (axis == 5)) - { - switch(num) - { - case BT_CONSTRAINT_STOP_ERP : - m_stopERP = value; - m_flags |= BT_HINGE_FLAGS_ERP_STOP; - break; - case BT_CONSTRAINT_STOP_CFM : - m_stopCFM = value; - m_flags |= BT_HINGE_FLAGS_CFM_STOP; - break; - case BT_CONSTRAINT_CFM : - m_normalCFM = value; - m_flags |= BT_HINGE_FLAGS_CFM_NORM; - break; - default : - btAssertConstrParams(0); - } - } - else - { - btAssertConstrParams(0); - } -} - -///return the local value of parameter -btScalar btHingeConstraint::getParam(int num, int axis) const -{ - btScalar retVal = 0; - if((axis == -1) || (axis == 5)) - { - switch(num) - { - case BT_CONSTRAINT_STOP_ERP : - btAssertConstrParams(m_flags & BT_HINGE_FLAGS_ERP_STOP); - retVal = m_stopERP; - break; - case BT_CONSTRAINT_STOP_CFM : - btAssertConstrParams(m_flags & BT_HINGE_FLAGS_CFM_STOP); - retVal = m_stopCFM; - break; - case BT_CONSTRAINT_CFM : - btAssertConstrParams(m_flags & BT_HINGE_FLAGS_CFM_NORM); - retVal = m_normalCFM; - break; - default : - btAssertConstrParams(0); - } - } - else - { - btAssertConstrParams(0); - } - return retVal; -} - - diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btHingeConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btHingeConstraint.h deleted file mode 100644 index a65f3638ed5..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btHingeConstraint.h +++ /dev/null @@ -1,332 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -/* Hinge Constraint by Dirk Gregorius. Limits added by Marcus Hennix at Starbreeze Studios */ - -#ifndef HINGECONSTRAINT_H -#define HINGECONSTRAINT_H - -#include "LinearMath/btVector3.h" -#include "btJacobianEntry.h" -#include "btTypedConstraint.h" - -class btRigidBody; - -#ifdef BT_USE_DOUBLE_PRECISION -#define btHingeConstraintData btHingeConstraintDoubleData -#define btHingeConstraintDataName "btHingeConstraintDoubleData" -#else -#define btHingeConstraintData btHingeConstraintFloatData -#define btHingeConstraintDataName "btHingeConstraintFloatData" -#endif //BT_USE_DOUBLE_PRECISION - - -enum btHingeFlags -{ - BT_HINGE_FLAGS_CFM_STOP = 1, - BT_HINGE_FLAGS_ERP_STOP = 2, - BT_HINGE_FLAGS_CFM_NORM = 4 -}; - - -/// hinge constraint between two rigidbodies each with a pivotpoint that descibes the axis location in local space -/// axis defines the orientation of the hinge axis -ATTRIBUTE_ALIGNED16(class) btHingeConstraint : public btTypedConstraint -{ -#ifdef IN_PARALLELL_SOLVER -public: -#endif - btJacobianEntry m_jac[3]; //3 orthogonal linear constraints - btJacobianEntry m_jacAng[3]; //2 orthogonal angular constraints+ 1 for limit/motor - - btTransform m_rbAFrame; // constraint axii. Assumes z is hinge axis. - btTransform m_rbBFrame; - - btScalar m_motorTargetVelocity; - btScalar m_maxMotorImpulse; - - btScalar m_limitSoftness; - btScalar m_biasFactor; - btScalar m_relaxationFactor; - - btScalar m_lowerLimit; - btScalar m_upperLimit; - - btScalar m_kHinge; - - btScalar m_limitSign; - btScalar m_correction; - - btScalar m_accLimitImpulse; - btScalar m_hingeAngle; - btScalar m_referenceSign; - - bool m_angularOnly; - bool m_enableAngularMotor; - bool m_solveLimit; - bool m_useSolveConstraintObsolete; - bool m_useOffsetForConstraintFrame; - bool m_useReferenceFrameA; - - btScalar m_accMotorImpulse; - - int m_flags; - btScalar m_normalCFM; - btScalar m_stopCFM; - btScalar m_stopERP; - - -public: - - btHingeConstraint(btRigidBody& rbA,btRigidBody& rbB, const btVector3& pivotInA,const btVector3& pivotInB, btVector3& axisInA,btVector3& axisInB, bool useReferenceFrameA = false); - - btHingeConstraint(btRigidBody& rbA,const btVector3& pivotInA,btVector3& axisInA, bool useReferenceFrameA = false); - - btHingeConstraint(btRigidBody& rbA,btRigidBody& rbB, const btTransform& rbAFrame, const btTransform& rbBFrame, bool useReferenceFrameA = false); - - btHingeConstraint(btRigidBody& rbA,const btTransform& rbAFrame, bool useReferenceFrameA = false); - - - virtual void buildJacobian(); - - virtual void getInfo1 (btConstraintInfo1* info); - - void getInfo1NonVirtual(btConstraintInfo1* info); - - virtual void getInfo2 (btConstraintInfo2* info); - - void getInfo2NonVirtual(btConstraintInfo2* info,const btTransform& transA,const btTransform& transB,const btVector3& angVelA,const btVector3& angVelB); - - void getInfo2Internal(btConstraintInfo2* info,const btTransform& transA,const btTransform& transB,const btVector3& angVelA,const btVector3& angVelB); - void getInfo2InternalUsingFrameOffset(btConstraintInfo2* info,const btTransform& transA,const btTransform& transB,const btVector3& angVelA,const btVector3& angVelB); - - - void updateRHS(btScalar timeStep); - - const btRigidBody& getRigidBodyA() const - { - return m_rbA; - } - const btRigidBody& getRigidBodyB() const - { - return m_rbB; - } - - btRigidBody& getRigidBodyA() - { - return m_rbA; - } - - btRigidBody& getRigidBodyB() - { - return m_rbB; - } - - void setAngularOnly(bool angularOnly) - { - m_angularOnly = angularOnly; - } - - void enableAngularMotor(bool enableMotor,btScalar targetVelocity,btScalar maxMotorImpulse) - { - m_enableAngularMotor = enableMotor; - m_motorTargetVelocity = targetVelocity; - m_maxMotorImpulse = maxMotorImpulse; - } - - // extra motor API, including ability to set a target rotation (as opposed to angular velocity) - // note: setMotorTarget sets angular velocity under the hood, so you must call it every tick to - // maintain a given angular target. - void enableMotor(bool enableMotor) { m_enableAngularMotor = enableMotor; } - void setMaxMotorImpulse(btScalar maxMotorImpulse) { m_maxMotorImpulse = maxMotorImpulse; } - void setMotorTarget(const btQuaternion& qAinB, btScalar dt); // qAinB is rotation of body A wrt body B. - void setMotorTarget(btScalar targetAngle, btScalar dt); - - - void setLimit(btScalar low,btScalar high,btScalar _softness = 0.9f, btScalar _biasFactor = 0.3f, btScalar _relaxationFactor = 1.0f) - { - m_lowerLimit = btNormalizeAngle(low); - m_upperLimit = btNormalizeAngle(high); - - m_limitSoftness = _softness; - m_biasFactor = _biasFactor; - m_relaxationFactor = _relaxationFactor; - - } - - void setAxis(btVector3& axisInA) - { - btVector3 rbAxisA1, rbAxisA2; - btPlaneSpace1(axisInA, rbAxisA1, rbAxisA2); - btVector3 pivotInA = m_rbAFrame.getOrigin(); -// m_rbAFrame.getOrigin() = pivotInA; - m_rbAFrame.getBasis().setValue( rbAxisA1.getX(),rbAxisA2.getX(),axisInA.getX(), - rbAxisA1.getY(),rbAxisA2.getY(),axisInA.getY(), - rbAxisA1.getZ(),rbAxisA2.getZ(),axisInA.getZ() ); - - btVector3 axisInB = m_rbA.getCenterOfMassTransform().getBasis() * axisInA; - - btQuaternion rotationArc = shortestArcQuat(axisInA,axisInB); - btVector3 rbAxisB1 = quatRotate(rotationArc,rbAxisA1); - btVector3 rbAxisB2 = axisInB.cross(rbAxisB1); - - - m_rbBFrame.getOrigin() = m_rbA.getCenterOfMassTransform()(pivotInA); - m_rbBFrame.getBasis().setValue( rbAxisB1.getX(),rbAxisB2.getX(),axisInB.getX(), - rbAxisB1.getY(),rbAxisB2.getY(),axisInB.getY(), - rbAxisB1.getZ(),rbAxisB2.getZ(),axisInB.getZ() ); - } - - btScalar getLowerLimit() const - { - return m_lowerLimit; - } - - btScalar getUpperLimit() const - { - return m_upperLimit; - } - - - btScalar getHingeAngle(); - - btScalar getHingeAngle(const btTransform& transA,const btTransform& transB); - - void testLimit(const btTransform& transA,const btTransform& transB); - - - const btTransform& getAFrame() const { return m_rbAFrame; }; - const btTransform& getBFrame() const { return m_rbBFrame; }; - - btTransform& getAFrame() { return m_rbAFrame; }; - btTransform& getBFrame() { return m_rbBFrame; }; - - inline int getSolveLimit() - { - return m_solveLimit; - } - - inline btScalar getLimitSign() - { - return m_limitSign; - } - - inline bool getAngularOnly() - { - return m_angularOnly; - } - inline bool getEnableAngularMotor() - { - return m_enableAngularMotor; - } - inline btScalar getMotorTargetVelosity() - { - return m_motorTargetVelocity; - } - inline btScalar getMaxMotorImpulse() - { - return m_maxMotorImpulse; - } - // access for UseFrameOffset - bool getUseFrameOffset() { return m_useOffsetForConstraintFrame; } - void setUseFrameOffset(bool frameOffsetOnOff) { m_useOffsetForConstraintFrame = frameOffsetOnOff; } - - - ///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). - ///If no axis is provided, it uses the default axis for this constraint. - virtual void setParam(int num, btScalar value, int axis = -1); - ///return the local value of parameter - virtual btScalar getParam(int num, int axis = -1) const; - - virtual int calculateSerializeBufferSize() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; - - -}; - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btHingeConstraintDoubleData -{ - btTypedConstraintData m_typeConstraintData; - btTransformDoubleData m_rbAFrame; // constraint axii. Assumes z is hinge axis. - btTransformDoubleData m_rbBFrame; - int m_useReferenceFrameA; - int m_angularOnly; - int m_enableAngularMotor; - float m_motorTargetVelocity; - float m_maxMotorImpulse; - - float m_lowerLimit; - float m_upperLimit; - float m_limitSoftness; - float m_biasFactor; - float m_relaxationFactor; - -}; -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btHingeConstraintFloatData -{ - btTypedConstraintData m_typeConstraintData; - btTransformFloatData m_rbAFrame; // constraint axii. Assumes z is hinge axis. - btTransformFloatData m_rbBFrame; - int m_useReferenceFrameA; - int m_angularOnly; - - int m_enableAngularMotor; - float m_motorTargetVelocity; - float m_maxMotorImpulse; - - float m_lowerLimit; - float m_upperLimit; - float m_limitSoftness; - float m_biasFactor; - float m_relaxationFactor; - -}; - - - -SIMD_FORCE_INLINE int btHingeConstraint::calculateSerializeBufferSize() const -{ - return sizeof(btHingeConstraintData); -} - - ///fills the dataBuffer and returns the struct name (and 0 on failure) -SIMD_FORCE_INLINE const char* btHingeConstraint::serialize(void* dataBuffer, btSerializer* serializer) const -{ - btHingeConstraintData* hingeData = (btHingeConstraintData*)dataBuffer; - btTypedConstraint::serialize(&hingeData->m_typeConstraintData,serializer); - - m_rbAFrame.serialize(hingeData->m_rbAFrame); - m_rbBFrame.serialize(hingeData->m_rbBFrame); - - hingeData->m_angularOnly = m_angularOnly; - hingeData->m_enableAngularMotor = m_enableAngularMotor; - hingeData->m_maxMotorImpulse = float(m_maxMotorImpulse); - hingeData->m_motorTargetVelocity = float(m_motorTargetVelocity); - hingeData->m_useReferenceFrameA = m_useReferenceFrameA; - - hingeData->m_lowerLimit = float(m_lowerLimit); - hingeData->m_upperLimit = float(m_upperLimit); - hingeData->m_limitSoftness = float(m_limitSoftness); - hingeData->m_biasFactor = float(m_biasFactor); - hingeData->m_relaxationFactor = float(m_relaxationFactor); - - return btHingeConstraintDataName; -} - -#endif //HINGECONSTRAINT_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btJacobianEntry.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btJacobianEntry.h deleted file mode 100644 index 22a8af66b8e..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btJacobianEntry.h +++ /dev/null @@ -1,156 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef JACOBIAN_ENTRY_H -#define JACOBIAN_ENTRY_H - -#include "LinearMath/btVector3.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" - - -//notes: -// Another memory optimization would be to store m_1MinvJt in the remaining 3 w components -// which makes the btJacobianEntry memory layout 16 bytes -// if you only are interested in angular part, just feed massInvA and massInvB zero - -/// Jacobian entry is an abstraction that allows to describe constraints -/// it can be used in combination with a constraint solver -/// Can be used to relate the effect of an impulse to the constraint error -ATTRIBUTE_ALIGNED16(class) btJacobianEntry -{ -public: - btJacobianEntry() {}; - //constraint between two different rigidbodies - btJacobianEntry( - const btMatrix3x3& world2A, - const btMatrix3x3& world2B, - const btVector3& rel_pos1,const btVector3& rel_pos2, - const btVector3& jointAxis, - const btVector3& inertiaInvA, - const btScalar massInvA, - const btVector3& inertiaInvB, - const btScalar massInvB) - :m_linearJointAxis(jointAxis) - { - m_aJ = world2A*(rel_pos1.cross(m_linearJointAxis)); - m_bJ = world2B*(rel_pos2.cross(-m_linearJointAxis)); - m_0MinvJt = inertiaInvA * m_aJ; - m_1MinvJt = inertiaInvB * m_bJ; - m_Adiag = massInvA + m_0MinvJt.dot(m_aJ) + massInvB + m_1MinvJt.dot(m_bJ); - - btAssert(m_Adiag > btScalar(0.0)); - } - - //angular constraint between two different rigidbodies - btJacobianEntry(const btVector3& jointAxis, - const btMatrix3x3& world2A, - const btMatrix3x3& world2B, - const btVector3& inertiaInvA, - const btVector3& inertiaInvB) - :m_linearJointAxis(btVector3(btScalar(0.),btScalar(0.),btScalar(0.))) - { - m_aJ= world2A*jointAxis; - m_bJ = world2B*-jointAxis; - m_0MinvJt = inertiaInvA * m_aJ; - m_1MinvJt = inertiaInvB * m_bJ; - m_Adiag = m_0MinvJt.dot(m_aJ) + m_1MinvJt.dot(m_bJ); - - btAssert(m_Adiag > btScalar(0.0)); - } - - //angular constraint between two different rigidbodies - btJacobianEntry(const btVector3& axisInA, - const btVector3& axisInB, - const btVector3& inertiaInvA, - const btVector3& inertiaInvB) - : m_linearJointAxis(btVector3(btScalar(0.),btScalar(0.),btScalar(0.))) - , m_aJ(axisInA) - , m_bJ(-axisInB) - { - m_0MinvJt = inertiaInvA * m_aJ; - m_1MinvJt = inertiaInvB * m_bJ; - m_Adiag = m_0MinvJt.dot(m_aJ) + m_1MinvJt.dot(m_bJ); - - btAssert(m_Adiag > btScalar(0.0)); - } - - //constraint on one rigidbody - btJacobianEntry( - const btMatrix3x3& world2A, - const btVector3& rel_pos1,const btVector3& rel_pos2, - const btVector3& jointAxis, - const btVector3& inertiaInvA, - const btScalar massInvA) - :m_linearJointAxis(jointAxis) - { - m_aJ= world2A*(rel_pos1.cross(jointAxis)); - m_bJ = world2A*(rel_pos2.cross(-jointAxis)); - m_0MinvJt = inertiaInvA * m_aJ; - m_1MinvJt = btVector3(btScalar(0.),btScalar(0.),btScalar(0.)); - m_Adiag = massInvA + m_0MinvJt.dot(m_aJ); - - btAssert(m_Adiag > btScalar(0.0)); - } - - btScalar getDiagonal() const { return m_Adiag; } - - // for two constraints on the same rigidbody (for example vehicle friction) - btScalar getNonDiagonal(const btJacobianEntry& jacB, const btScalar massInvA) const - { - const btJacobianEntry& jacA = *this; - btScalar lin = massInvA * jacA.m_linearJointAxis.dot(jacB.m_linearJointAxis); - btScalar ang = jacA.m_0MinvJt.dot(jacB.m_aJ); - return lin + ang; - } - - - - // for two constraints on sharing two same rigidbodies (for example two contact points between two rigidbodies) - btScalar getNonDiagonal(const btJacobianEntry& jacB,const btScalar massInvA,const btScalar massInvB) const - { - const btJacobianEntry& jacA = *this; - btVector3 lin = jacA.m_linearJointAxis * jacB.m_linearJointAxis; - btVector3 ang0 = jacA.m_0MinvJt * jacB.m_aJ; - btVector3 ang1 = jacA.m_1MinvJt * jacB.m_bJ; - btVector3 lin0 = massInvA * lin ; - btVector3 lin1 = massInvB * lin; - btVector3 sum = ang0+ang1+lin0+lin1; - return sum[0]+sum[1]+sum[2]; - } - - btScalar getRelativeVelocity(const btVector3& linvelA,const btVector3& angvelA,const btVector3& linvelB,const btVector3& angvelB) - { - btVector3 linrel = linvelA - linvelB; - btVector3 angvela = angvelA * m_aJ; - btVector3 angvelb = angvelB * m_bJ; - linrel *= m_linearJointAxis; - angvela += angvelb; - angvela += linrel; - btScalar rel_vel2 = angvela[0]+angvela[1]+angvela[2]; - return rel_vel2 + SIMD_EPSILON; - } -//private: - - btVector3 m_linearJointAxis; - btVector3 m_aJ; - btVector3 m_bJ; - btVector3 m_0MinvJt; - btVector3 m_1MinvJt; - //Optimization: can be stored in the w/last component of one of the vectors - btScalar m_Adiag; - -}; - -#endif //JACOBIAN_ENTRY_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp deleted file mode 100644 index 50ad71ab505..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp +++ /dev/null @@ -1,229 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btPoint2PointConstraint.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include - - - - - -btPoint2PointConstraint::btPoint2PointConstraint(btRigidBody& rbA,btRigidBody& rbB, const btVector3& pivotInA,const btVector3& pivotInB) -:btTypedConstraint(POINT2POINT_CONSTRAINT_TYPE,rbA,rbB),m_pivotInA(pivotInA),m_pivotInB(pivotInB), -m_flags(0), -m_useSolveConstraintObsolete(false) -{ - -} - - -btPoint2PointConstraint::btPoint2PointConstraint(btRigidBody& rbA,const btVector3& pivotInA) -:btTypedConstraint(POINT2POINT_CONSTRAINT_TYPE,rbA),m_pivotInA(pivotInA),m_pivotInB(rbA.getCenterOfMassTransform()(pivotInA)), -m_flags(0), -m_useSolveConstraintObsolete(false) -{ - -} - -void btPoint2PointConstraint::buildJacobian() -{ - - ///we need it for both methods - { - m_appliedImpulse = btScalar(0.); - - btVector3 normal(0,0,0); - - for (int i=0;i<3;i++) - { - normal[i] = 1; - new (&m_jac[i]) btJacobianEntry( - m_rbA.getCenterOfMassTransform().getBasis().transpose(), - m_rbB.getCenterOfMassTransform().getBasis().transpose(), - m_rbA.getCenterOfMassTransform()*m_pivotInA - m_rbA.getCenterOfMassPosition(), - m_rbB.getCenterOfMassTransform()*m_pivotInB - m_rbB.getCenterOfMassPosition(), - normal, - m_rbA.getInvInertiaDiagLocal(), - m_rbA.getInvMass(), - m_rbB.getInvInertiaDiagLocal(), - m_rbB.getInvMass()); - normal[i] = 0; - } - } - - -} - -void btPoint2PointConstraint::getInfo1 (btConstraintInfo1* info) -{ - getInfo1NonVirtual(info); -} - -void btPoint2PointConstraint::getInfo1NonVirtual (btConstraintInfo1* info) -{ - if (m_useSolveConstraintObsolete) - { - info->m_numConstraintRows = 0; - info->nub = 0; - } else - { - info->m_numConstraintRows = 3; - info->nub = 3; - } -} - - - - -void btPoint2PointConstraint::getInfo2 (btConstraintInfo2* info) -{ - getInfo2NonVirtual(info, m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); -} - -void btPoint2PointConstraint::getInfo2NonVirtual (btConstraintInfo2* info, const btTransform& body0_trans, const btTransform& body1_trans) -{ - btAssert(!m_useSolveConstraintObsolete); - - //retrieve matrices - - // anchor points in global coordinates with respect to body PORs. - - // set jacobian - info->m_J1linearAxis[0] = 1; - info->m_J1linearAxis[info->rowskip+1] = 1; - info->m_J1linearAxis[2*info->rowskip+2] = 1; - - btVector3 a1 = body0_trans.getBasis()*getPivotInA(); - { - btVector3* angular0 = (btVector3*)(info->m_J1angularAxis); - btVector3* angular1 = (btVector3*)(info->m_J1angularAxis+info->rowskip); - btVector3* angular2 = (btVector3*)(info->m_J1angularAxis+2*info->rowskip); - btVector3 a1neg = -a1; - a1neg.getSkewSymmetricMatrix(angular0,angular1,angular2); - } - - /*info->m_J2linearAxis[0] = -1; - info->m_J2linearAxis[s+1] = -1; - info->m_J2linearAxis[2*s+2] = -1; - */ - - btVector3 a2 = body1_trans.getBasis()*getPivotInB(); - - { - btVector3 a2n = -a2; - btVector3* angular0 = (btVector3*)(info->m_J2angularAxis); - btVector3* angular1 = (btVector3*)(info->m_J2angularAxis+info->rowskip); - btVector3* angular2 = (btVector3*)(info->m_J2angularAxis+2*info->rowskip); - a2.getSkewSymmetricMatrix(angular0,angular1,angular2); - } - - - - // set right hand side - btScalar currERP = (m_flags & BT_P2P_FLAGS_ERP) ? m_erp : info->erp; - btScalar k = info->fps * currERP; - int j; - for (j=0; j<3; j++) - { - info->m_constraintError[j*info->rowskip] = k * (a2[j] + body1_trans.getOrigin()[j] - a1[j] - body0_trans.getOrigin()[j]); - //printf("info->m_constraintError[%d]=%f\n",j,info->m_constraintError[j]); - } - if(m_flags & BT_P2P_FLAGS_CFM) - { - for (j=0; j<3; j++) - { - info->cfm[j*info->rowskip] = m_cfm; - } - } - - btScalar impulseClamp = m_setting.m_impulseClamp;// - for (j=0; j<3; j++) - { - if (m_setting.m_impulseClamp > 0) - { - info->m_lowerLimit[j*info->rowskip] = -impulseClamp; - info->m_upperLimit[j*info->rowskip] = impulseClamp; - } - } - -} - - - -void btPoint2PointConstraint::updateRHS(btScalar timeStep) -{ - (void)timeStep; - -} - -///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). -///If no axis is provided, it uses the default axis for this constraint. -void btPoint2PointConstraint::setParam(int num, btScalar value, int axis) -{ - if(axis != -1) - { - btAssertConstrParams(0); - } - else - { - switch(num) - { - case BT_CONSTRAINT_ERP : - case BT_CONSTRAINT_STOP_ERP : - m_erp = value; - m_flags |= BT_P2P_FLAGS_ERP; - break; - case BT_CONSTRAINT_CFM : - case BT_CONSTRAINT_STOP_CFM : - m_cfm = value; - m_flags |= BT_P2P_FLAGS_CFM; - break; - default: - btAssertConstrParams(0); - } - } -} - -///return the local value of parameter -btScalar btPoint2PointConstraint::getParam(int num, int axis) const -{ - btScalar retVal(SIMD_INFINITY); - if(axis != -1) - { - btAssertConstrParams(0); - } - else - { - switch(num) - { - case BT_CONSTRAINT_ERP : - case BT_CONSTRAINT_STOP_ERP : - btAssertConstrParams(m_flags & BT_P2P_FLAGS_ERP); - retVal = m_erp; - break; - case BT_CONSTRAINT_CFM : - case BT_CONSTRAINT_STOP_CFM : - btAssertConstrParams(m_flags & BT_P2P_FLAGS_CFM); - retVal = m_cfm; - break; - default: - btAssertConstrParams(0); - } - } - return retVal; -} - diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h deleted file mode 100644 index b589ee68254..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h +++ /dev/null @@ -1,161 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef POINT2POINTCONSTRAINT_H -#define POINT2POINTCONSTRAINT_H - -#include "LinearMath/btVector3.h" -#include "btJacobianEntry.h" -#include "btTypedConstraint.h" - -class btRigidBody; - - -#ifdef BT_USE_DOUBLE_PRECISION -#define btPoint2PointConstraintData btPoint2PointConstraintDoubleData -#define btPoint2PointConstraintDataName "btPoint2PointConstraintDoubleData" -#else -#define btPoint2PointConstraintData btPoint2PointConstraintFloatData -#define btPoint2PointConstraintDataName "btPoint2PointConstraintFloatData" -#endif //BT_USE_DOUBLE_PRECISION - -struct btConstraintSetting -{ - btConstraintSetting() : - m_tau(btScalar(0.3)), - m_damping(btScalar(1.)), - m_impulseClamp(btScalar(0.)) - { - } - btScalar m_tau; - btScalar m_damping; - btScalar m_impulseClamp; -}; - -enum btPoint2PointFlags -{ - BT_P2P_FLAGS_ERP = 1, - BT_P2P_FLAGS_CFM = 2 -}; - -/// point to point constraint between two rigidbodies each with a pivotpoint that descibes the 'ballsocket' location in local space -ATTRIBUTE_ALIGNED16(class) btPoint2PointConstraint : public btTypedConstraint -{ -#ifdef IN_PARALLELL_SOLVER -public: -#endif - btJacobianEntry m_jac[3]; //3 orthogonal linear constraints - - btVector3 m_pivotInA; - btVector3 m_pivotInB; - - int m_flags; - btScalar m_erp; - btScalar m_cfm; - -public: - - ///for backwards compatibility during the transition to 'getInfo/getInfo2' - bool m_useSolveConstraintObsolete; - - btConstraintSetting m_setting; - - btPoint2PointConstraint(btRigidBody& rbA,btRigidBody& rbB, const btVector3& pivotInA,const btVector3& pivotInB); - - btPoint2PointConstraint(btRigidBody& rbA,const btVector3& pivotInA); - - - virtual void buildJacobian(); - - virtual void getInfo1 (btConstraintInfo1* info); - - void getInfo1NonVirtual (btConstraintInfo1* info); - - virtual void getInfo2 (btConstraintInfo2* info); - - void getInfo2NonVirtual (btConstraintInfo2* info, const btTransform& body0_trans, const btTransform& body1_trans); - - void updateRHS(btScalar timeStep); - - void setPivotA(const btVector3& pivotA) - { - m_pivotInA = pivotA; - } - - void setPivotB(const btVector3& pivotB) - { - m_pivotInB = pivotB; - } - - const btVector3& getPivotInA() const - { - return m_pivotInA; - } - - const btVector3& getPivotInB() const - { - return m_pivotInB; - } - - ///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). - ///If no axis is provided, it uses the default axis for this constraint. - virtual void setParam(int num, btScalar value, int axis = -1); - ///return the local value of parameter - virtual btScalar getParam(int num, int axis = -1) const; - - virtual int calculateSerializeBufferSize() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; - - -}; - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btPoint2PointConstraintFloatData -{ - btTypedConstraintData m_typeConstraintData; - btVector3FloatData m_pivotInA; - btVector3FloatData m_pivotInB; -}; - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btPoint2PointConstraintDoubleData -{ - btTypedConstraintData m_typeConstraintData; - btVector3DoubleData m_pivotInA; - btVector3DoubleData m_pivotInB; -}; - - -SIMD_FORCE_INLINE int btPoint2PointConstraint::calculateSerializeBufferSize() const -{ - return sizeof(btPoint2PointConstraintData); - -} - - ///fills the dataBuffer and returns the struct name (and 0 on failure) -SIMD_FORCE_INLINE const char* btPoint2PointConstraint::serialize(void* dataBuffer, btSerializer* serializer) const -{ - btPoint2PointConstraintData* p2pData = (btPoint2PointConstraintData*)dataBuffer; - - btTypedConstraint::serialize(&p2pData->m_typeConstraintData,serializer); - m_pivotInA.serialize(p2pData->m_pivotInA); - m_pivotInB.serialize(p2pData->m_pivotInB); - - return btPoint2PointConstraintDataName; -} - -#endif //POINT2POINTCONSTRAINT_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp deleted file mode 100644 index 4e1048823c0..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp +++ /dev/null @@ -1,1174 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -//#define COMPUTE_IMPULSE_DENOM 1 -//It is not necessary (redundant) to refresh contact manifolds, this refresh has been moved to the collision algorithms. - -#include "btSequentialImpulseConstraintSolver.h" -#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include "btContactConstraint.h" -#include "btSolve2LinearConstraint.h" -#include "btContactSolverInfo.h" -#include "LinearMath/btIDebugDraw.h" -#include "btJacobianEntry.h" -#include "LinearMath/btMinMax.h" -#include "BulletDynamics/ConstraintSolver/btTypedConstraint.h" -#include -#include "LinearMath/btStackAlloc.h" -#include "LinearMath/btQuickprof.h" -#include "btSolverBody.h" -#include "btSolverConstraint.h" -#include "LinearMath/btAlignedObjectArray.h" -#include //for memset - -int gNumSplitImpulseRecoveries = 0; - -btSequentialImpulseConstraintSolver::btSequentialImpulseConstraintSolver() -:m_btSeed2(0) -{ - -} - -btSequentialImpulseConstraintSolver::~btSequentialImpulseConstraintSolver() -{ -} - -#ifdef USE_SIMD -#include -#define vec_splat(x, e) _mm_shuffle_ps(x, x, _MM_SHUFFLE(e,e,e,e)) -static inline __m128 _vmathVfDot3( __m128 vec0, __m128 vec1 ) -{ - __m128 result = _mm_mul_ps( vec0, vec1); - return _mm_add_ps( vec_splat( result, 0 ), _mm_add_ps( vec_splat( result, 1 ), vec_splat( result, 2 ) ) ); -} -#endif//USE_SIMD - -// Project Gauss Seidel or the equivalent Sequential Impulse -void btSequentialImpulseConstraintSolver::resolveSingleConstraintRowGenericSIMD(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& c) -{ -#ifdef USE_SIMD - __m128 cpAppliedImp = _mm_set1_ps(c.m_appliedImpulse); - __m128 lowerLimit1 = _mm_set1_ps(c.m_lowerLimit); - __m128 upperLimit1 = _mm_set1_ps(c.m_upperLimit); - __m128 deltaImpulse = _mm_sub_ps(_mm_set1_ps(c.m_rhs), _mm_mul_ps(_mm_set1_ps(c.m_appliedImpulse),_mm_set1_ps(c.m_cfm))); - __m128 deltaVel1Dotn = _mm_add_ps(_vmathVfDot3(c.m_contactNormal.mVec128,body1.internalGetDeltaLinearVelocity().mVec128), _vmathVfDot3(c.m_relpos1CrossNormal.mVec128,body1.internalGetDeltaAngularVelocity().mVec128)); - __m128 deltaVel2Dotn = _mm_sub_ps(_vmathVfDot3(c.m_relpos2CrossNormal.mVec128,body2.internalGetDeltaAngularVelocity().mVec128),_vmathVfDot3((c.m_contactNormal).mVec128,body2.internalGetDeltaLinearVelocity().mVec128)); - deltaImpulse = _mm_sub_ps(deltaImpulse,_mm_mul_ps(deltaVel1Dotn,_mm_set1_ps(c.m_jacDiagABInv))); - deltaImpulse = _mm_sub_ps(deltaImpulse,_mm_mul_ps(deltaVel2Dotn,_mm_set1_ps(c.m_jacDiagABInv))); - btSimdScalar sum = _mm_add_ps(cpAppliedImp,deltaImpulse); - btSimdScalar resultLowerLess,resultUpperLess; - resultLowerLess = _mm_cmplt_ps(sum,lowerLimit1); - resultUpperLess = _mm_cmplt_ps(sum,upperLimit1); - __m128 lowMinApplied = _mm_sub_ps(lowerLimit1,cpAppliedImp); - deltaImpulse = _mm_or_ps( _mm_and_ps(resultLowerLess, lowMinApplied), _mm_andnot_ps(resultLowerLess, deltaImpulse) ); - c.m_appliedImpulse = _mm_or_ps( _mm_and_ps(resultLowerLess, lowerLimit1), _mm_andnot_ps(resultLowerLess, sum) ); - __m128 upperMinApplied = _mm_sub_ps(upperLimit1,cpAppliedImp); - deltaImpulse = _mm_or_ps( _mm_and_ps(resultUpperLess, deltaImpulse), _mm_andnot_ps(resultUpperLess, upperMinApplied) ); - c.m_appliedImpulse = _mm_or_ps( _mm_and_ps(resultUpperLess, c.m_appliedImpulse), _mm_andnot_ps(resultUpperLess, upperLimit1) ); - __m128 linearComponentA = _mm_mul_ps(c.m_contactNormal.mVec128,body1.internalGetInvMass().mVec128); - __m128 linearComponentB = _mm_mul_ps((c.m_contactNormal).mVec128,body2.internalGetInvMass().mVec128); - __m128 impulseMagnitude = deltaImpulse; - body1.internalGetDeltaLinearVelocity().mVec128 = _mm_add_ps(body1.internalGetDeltaLinearVelocity().mVec128,_mm_mul_ps(linearComponentA,impulseMagnitude)); - body1.internalGetDeltaAngularVelocity().mVec128 = _mm_add_ps(body1.internalGetDeltaAngularVelocity().mVec128 ,_mm_mul_ps(c.m_angularComponentA.mVec128,impulseMagnitude)); - body2.internalGetDeltaLinearVelocity().mVec128 = _mm_sub_ps(body2.internalGetDeltaLinearVelocity().mVec128,_mm_mul_ps(linearComponentB,impulseMagnitude)); - body2.internalGetDeltaAngularVelocity().mVec128 = _mm_add_ps(body2.internalGetDeltaAngularVelocity().mVec128 ,_mm_mul_ps(c.m_angularComponentB.mVec128,impulseMagnitude)); -#else - resolveSingleConstraintRowGeneric(body1,body2,c); -#endif -} - -// Project Gauss Seidel or the equivalent Sequential Impulse - void btSequentialImpulseConstraintSolver::resolveSingleConstraintRowGeneric(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& c) -{ - btScalar deltaImpulse = c.m_rhs-btScalar(c.m_appliedImpulse)*c.m_cfm; - const btScalar deltaVel1Dotn = c.m_contactNormal.dot(body1.internalGetDeltaLinearVelocity()) + c.m_relpos1CrossNormal.dot(body1.internalGetDeltaAngularVelocity()); - const btScalar deltaVel2Dotn = -c.m_contactNormal.dot(body2.internalGetDeltaLinearVelocity()) + c.m_relpos2CrossNormal.dot(body2.internalGetDeltaAngularVelocity()); - -// const btScalar delta_rel_vel = deltaVel1Dotn-deltaVel2Dotn; - deltaImpulse -= deltaVel1Dotn*c.m_jacDiagABInv; - deltaImpulse -= deltaVel2Dotn*c.m_jacDiagABInv; - - const btScalar sum = btScalar(c.m_appliedImpulse) + deltaImpulse; - if (sum < c.m_lowerLimit) - { - deltaImpulse = c.m_lowerLimit-c.m_appliedImpulse; - c.m_appliedImpulse = c.m_lowerLimit; - } - else if (sum > c.m_upperLimit) - { - deltaImpulse = c.m_upperLimit-c.m_appliedImpulse; - c.m_appliedImpulse = c.m_upperLimit; - } - else - { - c.m_appliedImpulse = sum; - } - body1.internalApplyImpulse(c.m_contactNormal*body1.internalGetInvMass(),c.m_angularComponentA,deltaImpulse); - body2.internalApplyImpulse(-c.m_contactNormal*body2.internalGetInvMass(),c.m_angularComponentB,deltaImpulse); -} - - void btSequentialImpulseConstraintSolver::resolveSingleConstraintRowLowerLimitSIMD(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& c) -{ -#ifdef USE_SIMD - __m128 cpAppliedImp = _mm_set1_ps(c.m_appliedImpulse); - __m128 lowerLimit1 = _mm_set1_ps(c.m_lowerLimit); - __m128 upperLimit1 = _mm_set1_ps(c.m_upperLimit); - __m128 deltaImpulse = _mm_sub_ps(_mm_set1_ps(c.m_rhs), _mm_mul_ps(_mm_set1_ps(c.m_appliedImpulse),_mm_set1_ps(c.m_cfm))); - __m128 deltaVel1Dotn = _mm_add_ps(_vmathVfDot3(c.m_contactNormal.mVec128,body1.internalGetDeltaLinearVelocity().mVec128), _vmathVfDot3(c.m_relpos1CrossNormal.mVec128,body1.internalGetDeltaAngularVelocity().mVec128)); - __m128 deltaVel2Dotn = _mm_sub_ps(_vmathVfDot3(c.m_relpos2CrossNormal.mVec128,body2.internalGetDeltaAngularVelocity().mVec128),_vmathVfDot3((c.m_contactNormal).mVec128,body2.internalGetDeltaLinearVelocity().mVec128)); - deltaImpulse = _mm_sub_ps(deltaImpulse,_mm_mul_ps(deltaVel1Dotn,_mm_set1_ps(c.m_jacDiagABInv))); - deltaImpulse = _mm_sub_ps(deltaImpulse,_mm_mul_ps(deltaVel2Dotn,_mm_set1_ps(c.m_jacDiagABInv))); - btSimdScalar sum = _mm_add_ps(cpAppliedImp,deltaImpulse); - btSimdScalar resultLowerLess,resultUpperLess; - resultLowerLess = _mm_cmplt_ps(sum,lowerLimit1); - resultUpperLess = _mm_cmplt_ps(sum,upperLimit1); - __m128 lowMinApplied = _mm_sub_ps(lowerLimit1,cpAppliedImp); - deltaImpulse = _mm_or_ps( _mm_and_ps(resultLowerLess, lowMinApplied), _mm_andnot_ps(resultLowerLess, deltaImpulse) ); - c.m_appliedImpulse = _mm_or_ps( _mm_and_ps(resultLowerLess, lowerLimit1), _mm_andnot_ps(resultLowerLess, sum) ); - __m128 linearComponentA = _mm_mul_ps(c.m_contactNormal.mVec128,body1.internalGetInvMass().mVec128); - __m128 linearComponentB = _mm_mul_ps((c.m_contactNormal).mVec128,body2.internalGetInvMass().mVec128); - __m128 impulseMagnitude = deltaImpulse; - body1.internalGetDeltaLinearVelocity().mVec128 = _mm_add_ps(body1.internalGetDeltaLinearVelocity().mVec128,_mm_mul_ps(linearComponentA,impulseMagnitude)); - body1.internalGetDeltaAngularVelocity().mVec128 = _mm_add_ps(body1.internalGetDeltaAngularVelocity().mVec128 ,_mm_mul_ps(c.m_angularComponentA.mVec128,impulseMagnitude)); - body2.internalGetDeltaLinearVelocity().mVec128 = _mm_sub_ps(body2.internalGetDeltaLinearVelocity().mVec128,_mm_mul_ps(linearComponentB,impulseMagnitude)); - body2.internalGetDeltaAngularVelocity().mVec128 = _mm_add_ps(body2.internalGetDeltaAngularVelocity().mVec128 ,_mm_mul_ps(c.m_angularComponentB.mVec128,impulseMagnitude)); -#else - resolveSingleConstraintRowLowerLimit(body1,body2,c); -#endif -} - -// Project Gauss Seidel or the equivalent Sequential Impulse - void btSequentialImpulseConstraintSolver::resolveSingleConstraintRowLowerLimit(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& c) -{ - btScalar deltaImpulse = c.m_rhs-btScalar(c.m_appliedImpulse)*c.m_cfm; - const btScalar deltaVel1Dotn = c.m_contactNormal.dot(body1.internalGetDeltaLinearVelocity()) + c.m_relpos1CrossNormal.dot(body1.internalGetDeltaAngularVelocity()); - const btScalar deltaVel2Dotn = -c.m_contactNormal.dot(body2.internalGetDeltaLinearVelocity()) + c.m_relpos2CrossNormal.dot(body2.internalGetDeltaAngularVelocity()); - - deltaImpulse -= deltaVel1Dotn*c.m_jacDiagABInv; - deltaImpulse -= deltaVel2Dotn*c.m_jacDiagABInv; - const btScalar sum = btScalar(c.m_appliedImpulse) + deltaImpulse; - if (sum < c.m_lowerLimit) - { - deltaImpulse = c.m_lowerLimit-c.m_appliedImpulse; - c.m_appliedImpulse = c.m_lowerLimit; - } - else - { - c.m_appliedImpulse = sum; - } - body1.internalApplyImpulse(c.m_contactNormal*body1.internalGetInvMass(),c.m_angularComponentA,deltaImpulse); - body2.internalApplyImpulse(-c.m_contactNormal*body2.internalGetInvMass(),c.m_angularComponentB,deltaImpulse); -} - - -void btSequentialImpulseConstraintSolver::resolveSplitPenetrationImpulseCacheFriendly( - btRigidBody& body1, - btRigidBody& body2, - const btSolverConstraint& c) -{ - if (c.m_rhsPenetration) - { - gNumSplitImpulseRecoveries++; - btScalar deltaImpulse = c.m_rhsPenetration-btScalar(c.m_appliedPushImpulse)*c.m_cfm; - const btScalar deltaVel1Dotn = c.m_contactNormal.dot(body1.internalGetPushVelocity()) + c.m_relpos1CrossNormal.dot(body1.internalGetTurnVelocity()); - const btScalar deltaVel2Dotn = -c.m_contactNormal.dot(body2.internalGetPushVelocity()) + c.m_relpos2CrossNormal.dot(body2.internalGetTurnVelocity()); - - deltaImpulse -= deltaVel1Dotn*c.m_jacDiagABInv; - deltaImpulse -= deltaVel2Dotn*c.m_jacDiagABInv; - const btScalar sum = btScalar(c.m_appliedPushImpulse) + deltaImpulse; - if (sum < c.m_lowerLimit) - { - deltaImpulse = c.m_lowerLimit-c.m_appliedPushImpulse; - c.m_appliedPushImpulse = c.m_lowerLimit; - } - else - { - c.m_appliedPushImpulse = sum; - } - body1.internalApplyPushImpulse(c.m_contactNormal*body1.internalGetInvMass(),c.m_angularComponentA,deltaImpulse); - body2.internalApplyPushImpulse(-c.m_contactNormal*body2.internalGetInvMass(),c.m_angularComponentB,deltaImpulse); - } -} - - void btSequentialImpulseConstraintSolver::resolveSplitPenetrationSIMD(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& c) -{ -#ifdef USE_SIMD - if (!c.m_rhsPenetration) - return; - - gNumSplitImpulseRecoveries++; - - __m128 cpAppliedImp = _mm_set1_ps(c.m_appliedPushImpulse); - __m128 lowerLimit1 = _mm_set1_ps(c.m_lowerLimit); - __m128 upperLimit1 = _mm_set1_ps(c.m_upperLimit); - __m128 deltaImpulse = _mm_sub_ps(_mm_set1_ps(c.m_rhsPenetration), _mm_mul_ps(_mm_set1_ps(c.m_appliedPushImpulse),_mm_set1_ps(c.m_cfm))); - __m128 deltaVel1Dotn = _mm_add_ps(_vmathVfDot3(c.m_contactNormal.mVec128,body1.internalGetPushVelocity().mVec128), _vmathVfDot3(c.m_relpos1CrossNormal.mVec128,body1.internalGetTurnVelocity().mVec128)); - __m128 deltaVel2Dotn = _mm_sub_ps(_vmathVfDot3(c.m_relpos2CrossNormal.mVec128,body2.internalGetTurnVelocity().mVec128),_vmathVfDot3((c.m_contactNormal).mVec128,body2.internalGetPushVelocity().mVec128)); - deltaImpulse = _mm_sub_ps(deltaImpulse,_mm_mul_ps(deltaVel1Dotn,_mm_set1_ps(c.m_jacDiagABInv))); - deltaImpulse = _mm_sub_ps(deltaImpulse,_mm_mul_ps(deltaVel2Dotn,_mm_set1_ps(c.m_jacDiagABInv))); - btSimdScalar sum = _mm_add_ps(cpAppliedImp,deltaImpulse); - btSimdScalar resultLowerLess,resultUpperLess; - resultLowerLess = _mm_cmplt_ps(sum,lowerLimit1); - resultUpperLess = _mm_cmplt_ps(sum,upperLimit1); - __m128 lowMinApplied = _mm_sub_ps(lowerLimit1,cpAppliedImp); - deltaImpulse = _mm_or_ps( _mm_and_ps(resultLowerLess, lowMinApplied), _mm_andnot_ps(resultLowerLess, deltaImpulse) ); - c.m_appliedImpulse = _mm_or_ps( _mm_and_ps(resultLowerLess, lowerLimit1), _mm_andnot_ps(resultLowerLess, sum) ); - __m128 linearComponentA = _mm_mul_ps(c.m_contactNormal.mVec128,body1.internalGetInvMass().mVec128); - __m128 linearComponentB = _mm_mul_ps((c.m_contactNormal).mVec128,body2.internalGetInvMass().mVec128); - __m128 impulseMagnitude = deltaImpulse; - body1.internalGetPushVelocity().mVec128 = _mm_add_ps(body1.internalGetPushVelocity().mVec128,_mm_mul_ps(linearComponentA,impulseMagnitude)); - body1.internalGetTurnVelocity().mVec128 = _mm_add_ps(body1.internalGetTurnVelocity().mVec128 ,_mm_mul_ps(c.m_angularComponentA.mVec128,impulseMagnitude)); - body2.internalGetPushVelocity().mVec128 = _mm_sub_ps(body2.internalGetPushVelocity().mVec128,_mm_mul_ps(linearComponentB,impulseMagnitude)); - body2.internalGetTurnVelocity().mVec128 = _mm_add_ps(body2.internalGetTurnVelocity().mVec128 ,_mm_mul_ps(c.m_angularComponentB.mVec128,impulseMagnitude)); -#else - resolveSplitPenetrationImpulseCacheFriendly(body1,body2,c); -#endif -} - - - -unsigned long btSequentialImpulseConstraintSolver::btRand2() -{ - m_btSeed2 = (1664525L*m_btSeed2 + 1013904223L) & 0xffffffff; - return m_btSeed2; -} - - - -//See ODE: adam's all-int straightforward(?) dRandInt (0..n-1) -int btSequentialImpulseConstraintSolver::btRandInt2 (int n) -{ - // seems good; xor-fold and modulus - const unsigned long un = static_cast(n); - unsigned long r = btRand2(); - - // note: probably more aggressive than it needs to be -- might be - // able to get away without one or two of the innermost branches. - if (un <= 0x00010000UL) { - r ^= (r >> 16); - if (un <= 0x00000100UL) { - r ^= (r >> 8); - if (un <= 0x00000010UL) { - r ^= (r >> 4); - if (un <= 0x00000004UL) { - r ^= (r >> 2); - if (un <= 0x00000002UL) { - r ^= (r >> 1); - } - } - } - } - } - - return (int) (r % un); -} - - -#if 0 -void btSequentialImpulseConstraintSolver::initSolverBody(btSolverBody* solverBody, btCollisionObject* collisionObject) -{ - btRigidBody* rb = collisionObject? btRigidBody::upcast(collisionObject) : 0; - - solverBody->internalGetDeltaLinearVelocity().setValue(0.f,0.f,0.f); - solverBody->internalGetDeltaAngularVelocity().setValue(0.f,0.f,0.f); - solverBody->internalGetPushVelocity().setValue(0.f,0.f,0.f); - solverBody->internalGetTurnVelocity().setValue(0.f,0.f,0.f); - - if (rb) - { - solverBody->internalGetInvMass() = btVector3(rb->getInvMass(),rb->getInvMass(),rb->getInvMass())*rb->getLinearFactor(); - solverBody->m_originalBody = rb; - solverBody->m_angularFactor = rb->getAngularFactor(); - } else - { - solverBody->internalGetInvMass().setValue(0,0,0); - solverBody->m_originalBody = 0; - solverBody->m_angularFactor.setValue(1,1,1); - } -} -#endif - - - - - -btScalar btSequentialImpulseConstraintSolver::restitutionCurve(btScalar rel_vel, btScalar restitution) -{ - btScalar rest = restitution * -rel_vel; - return rest; -} - - - -void applyAnisotropicFriction(btCollisionObject* colObj,btVector3& frictionDirection); -void applyAnisotropicFriction(btCollisionObject* colObj,btVector3& frictionDirection) -{ - if (colObj && colObj->hasAnisotropicFriction()) - { - // transform to local coordinates - btVector3 loc_lateral = frictionDirection * colObj->getWorldTransform().getBasis(); - const btVector3& friction_scaling = colObj->getAnisotropicFriction(); - //apply anisotropic friction - loc_lateral *= friction_scaling; - // ... and transform it back to global coordinates - frictionDirection = colObj->getWorldTransform().getBasis() * loc_lateral; - } -} - - -void btSequentialImpulseConstraintSolver::setupFrictionConstraint(btSolverConstraint& solverConstraint, const btVector3& normalAxis,btRigidBody* solverBodyA,btRigidBody* solverBodyB,btManifoldPoint& cp,const btVector3& rel_pos1,const btVector3& rel_pos2,btCollisionObject* colObj0,btCollisionObject* colObj1, btScalar relaxation, btScalar desiredVelocity, btScalar cfmSlip) -{ - - - btRigidBody* body0=btRigidBody::upcast(colObj0); - btRigidBody* body1=btRigidBody::upcast(colObj1); - - solverConstraint.m_contactNormal = normalAxis; - - solverConstraint.m_solverBodyA = body0 ? body0 : &getFixedBody(); - solverConstraint.m_solverBodyB = body1 ? body1 : &getFixedBody(); - - solverConstraint.m_friction = cp.m_combinedFriction; - solverConstraint.m_originalContactPoint = 0; - - solverConstraint.m_appliedImpulse = 0.f; - solverConstraint.m_appliedPushImpulse = 0.f; - - { - btVector3 ftorqueAxis1 = rel_pos1.cross(solverConstraint.m_contactNormal); - solverConstraint.m_relpos1CrossNormal = ftorqueAxis1; - solverConstraint.m_angularComponentA = body0 ? body0->getInvInertiaTensorWorld()*ftorqueAxis1*body0->getAngularFactor() : btVector3(0,0,0); - } - { - btVector3 ftorqueAxis1 = rel_pos2.cross(-solverConstraint.m_contactNormal); - solverConstraint.m_relpos2CrossNormal = ftorqueAxis1; - solverConstraint.m_angularComponentB = body1 ? body1->getInvInertiaTensorWorld()*ftorqueAxis1*body1->getAngularFactor() : btVector3(0,0,0); - } - -#ifdef COMPUTE_IMPULSE_DENOM - btScalar denom0 = rb0->computeImpulseDenominator(pos1,solverConstraint.m_contactNormal); - btScalar denom1 = rb1->computeImpulseDenominator(pos2,solverConstraint.m_contactNormal); -#else - btVector3 vec; - btScalar denom0 = 0.f; - btScalar denom1 = 0.f; - if (body0) - { - vec = ( solverConstraint.m_angularComponentA).cross(rel_pos1); - denom0 = body0->getInvMass() + normalAxis.dot(vec); - } - if (body1) - { - vec = ( -solverConstraint.m_angularComponentB).cross(rel_pos2); - denom1 = body1->getInvMass() + normalAxis.dot(vec); - } - - -#endif //COMPUTE_IMPULSE_DENOM - btScalar denom = relaxation/(denom0+denom1); - solverConstraint.m_jacDiagABInv = denom; - -#ifdef _USE_JACOBIAN - solverConstraint.m_jac = btJacobianEntry ( - rel_pos1,rel_pos2,solverConstraint.m_contactNormal, - body0->getInvInertiaDiagLocal(), - body0->getInvMass(), - body1->getInvInertiaDiagLocal(), - body1->getInvMass()); -#endif //_USE_JACOBIAN - - - { - btScalar rel_vel; - btScalar vel1Dotn = solverConstraint.m_contactNormal.dot(body0?body0->getLinearVelocity():btVector3(0,0,0)) - + solverConstraint.m_relpos1CrossNormal.dot(body0?body0->getAngularVelocity():btVector3(0,0,0)); - btScalar vel2Dotn = -solverConstraint.m_contactNormal.dot(body1?body1->getLinearVelocity():btVector3(0,0,0)) - + solverConstraint.m_relpos2CrossNormal.dot(body1?body1->getAngularVelocity():btVector3(0,0,0)); - - rel_vel = vel1Dotn+vel2Dotn; - -// btScalar positionalError = 0.f; - - btSimdScalar velocityError = desiredVelocity - rel_vel; - btSimdScalar velocityImpulse = velocityError * btSimdScalar(solverConstraint.m_jacDiagABInv); - solverConstraint.m_rhs = velocityImpulse; - solverConstraint.m_cfm = cfmSlip; - solverConstraint.m_lowerLimit = 0; - solverConstraint.m_upperLimit = 1e10f; - } -} - - - -btSolverConstraint& btSequentialImpulseConstraintSolver::addFrictionConstraint(const btVector3& normalAxis,btRigidBody* solverBodyA,btRigidBody* solverBodyB,int frictionIndex,btManifoldPoint& cp,const btVector3& rel_pos1,const btVector3& rel_pos2,btCollisionObject* colObj0,btCollisionObject* colObj1, btScalar relaxation, btScalar desiredVelocity, btScalar cfmSlip) -{ - btSolverConstraint& solverConstraint = m_tmpSolverContactFrictionConstraintPool.expandNonInitializing(); - solverConstraint.m_frictionIndex = frictionIndex; - setupFrictionConstraint(solverConstraint, normalAxis, solverBodyA, solverBodyB, cp, rel_pos1, rel_pos2, - colObj0, colObj1, relaxation, desiredVelocity, cfmSlip); - return solverConstraint; -} - -int btSequentialImpulseConstraintSolver::getOrInitSolverBody(btCollisionObject& body) -{ -#if 0 - int solverBodyIdA = -1; - - if (body.getCompanionId() >= 0) - { - //body has already been converted - solverBodyIdA = body.getCompanionId(); - } else - { - btRigidBody* rb = btRigidBody::upcast(&body); - if (rb && rb->getInvMass()) - { - solverBodyIdA = m_tmpSolverBodyPool.size(); - btSolverBody& solverBody = m_tmpSolverBodyPool.expand(); - initSolverBody(&solverBody,&body); - body.setCompanionId(solverBodyIdA); - } else - { - return 0;//assume first one is a fixed solver body - } - } - return solverBodyIdA; -#endif - return 0; -} -#include - - -void btSequentialImpulseConstraintSolver::setupContactConstraint(btSolverConstraint& solverConstraint, - btCollisionObject* colObj0, btCollisionObject* colObj1, - btManifoldPoint& cp, const btContactSolverInfo& infoGlobal, - btVector3& vel, btScalar& rel_vel, btScalar& relaxation, - btVector3& rel_pos1, btVector3& rel_pos2) -{ - btRigidBody* rb0 = btRigidBody::upcast(colObj0); - btRigidBody* rb1 = btRigidBody::upcast(colObj1); - - const btVector3& pos1 = cp.getPositionWorldOnA(); - const btVector3& pos2 = cp.getPositionWorldOnB(); - -// btVector3 rel_pos1 = pos1 - colObj0->getWorldTransform().getOrigin(); -// btVector3 rel_pos2 = pos2 - colObj1->getWorldTransform().getOrigin(); - rel_pos1 = pos1 - colObj0->getWorldTransform().getOrigin(); - rel_pos2 = pos2 - colObj1->getWorldTransform().getOrigin(); - - relaxation = 1.f; - - btVector3 torqueAxis0 = rel_pos1.cross(cp.m_normalWorldOnB); - solverConstraint.m_angularComponentA = rb0 ? rb0->getInvInertiaTensorWorld()*torqueAxis0*rb0->getAngularFactor() : btVector3(0,0,0); - btVector3 torqueAxis1 = rel_pos2.cross(cp.m_normalWorldOnB); - solverConstraint.m_angularComponentB = rb1 ? rb1->getInvInertiaTensorWorld()*-torqueAxis1*rb1->getAngularFactor() : btVector3(0,0,0); - - { -#ifdef COMPUTE_IMPULSE_DENOM - btScalar denom0 = rb0->computeImpulseDenominator(pos1,cp.m_normalWorldOnB); - btScalar denom1 = rb1->computeImpulseDenominator(pos2,cp.m_normalWorldOnB); -#else - btVector3 vec; - btScalar denom0 = 0.f; - btScalar denom1 = 0.f; - if (rb0) - { - vec = ( solverConstraint.m_angularComponentA).cross(rel_pos1); - denom0 = rb0->getInvMass() + cp.m_normalWorldOnB.dot(vec); - } - if (rb1) - { - vec = ( -solverConstraint.m_angularComponentB).cross(rel_pos2); - denom1 = rb1->getInvMass() + cp.m_normalWorldOnB.dot(vec); - } -#endif //COMPUTE_IMPULSE_DENOM - - btScalar denom = relaxation/(denom0+denom1); - solverConstraint.m_jacDiagABInv = denom; - } - - solverConstraint.m_contactNormal = cp.m_normalWorldOnB; - solverConstraint.m_relpos1CrossNormal = rel_pos1.cross(cp.m_normalWorldOnB); - solverConstraint.m_relpos2CrossNormal = rel_pos2.cross(-cp.m_normalWorldOnB); - - - - - btVector3 vel1 = rb0 ? rb0->getVelocityInLocalPoint(rel_pos1) : btVector3(0,0,0); - btVector3 vel2 = rb1 ? rb1->getVelocityInLocalPoint(rel_pos2) : btVector3(0,0,0); - vel = vel1 - vel2; - rel_vel = cp.m_normalWorldOnB.dot(vel); - - btScalar penetration = cp.getDistance()+infoGlobal.m_linearSlop; - - - solverConstraint.m_friction = cp.m_combinedFriction; - - btScalar restitution = 0.f; - - if (cp.m_lifeTime>infoGlobal.m_restingContactRestitutionThreshold) - { - restitution = 0.f; - } else - { - restitution = restitutionCurve(rel_vel, cp.m_combinedRestitution); - if (restitution <= btScalar(0.)) - { - restitution = 0.f; - }; - } - - - ///warm starting (or zero if disabled) - if (infoGlobal.m_solverMode & SOLVER_USE_WARMSTARTING) - { - solverConstraint.m_appliedImpulse = cp.m_appliedImpulse * infoGlobal.m_warmstartingFactor; - if (rb0) - rb0->internalApplyImpulse(solverConstraint.m_contactNormal*rb0->getInvMass()*rb0->getLinearFactor(),solverConstraint.m_angularComponentA,solverConstraint.m_appliedImpulse); - if (rb1) - rb1->internalApplyImpulse(solverConstraint.m_contactNormal*rb1->getInvMass()*rb1->getLinearFactor(),-solverConstraint.m_angularComponentB,-solverConstraint.m_appliedImpulse); - } else - { - solverConstraint.m_appliedImpulse = 0.f; - } - - solverConstraint.m_appliedPushImpulse = 0.f; - - { - btScalar rel_vel; - btScalar vel1Dotn = solverConstraint.m_contactNormal.dot(rb0?rb0->getLinearVelocity():btVector3(0,0,0)) - + solverConstraint.m_relpos1CrossNormal.dot(rb0?rb0->getAngularVelocity():btVector3(0,0,0)); - btScalar vel2Dotn = -solverConstraint.m_contactNormal.dot(rb1?rb1->getLinearVelocity():btVector3(0,0,0)) - + solverConstraint.m_relpos2CrossNormal.dot(rb1?rb1->getAngularVelocity():btVector3(0,0,0)); - - rel_vel = vel1Dotn+vel2Dotn; - - btScalar positionalError = 0.f; - positionalError = -penetration * infoGlobal.m_erp/infoGlobal.m_timeStep; - btScalar velocityError = restitution - rel_vel;// * damping; - btScalar penetrationImpulse = positionalError*solverConstraint.m_jacDiagABInv; - btScalar velocityImpulse = velocityError *solverConstraint.m_jacDiagABInv; - if (!infoGlobal.m_splitImpulse || (penetration > infoGlobal.m_splitImpulsePenetrationThreshold)) - { - //combine position and velocity into rhs - solverConstraint.m_rhs = penetrationImpulse+velocityImpulse; - solverConstraint.m_rhsPenetration = 0.f; - } else - { - //split position and velocity into rhs and m_rhsPenetration - solverConstraint.m_rhs = velocityImpulse; - solverConstraint.m_rhsPenetration = penetrationImpulse; - } - solverConstraint.m_cfm = 0.f; - solverConstraint.m_lowerLimit = 0; - solverConstraint.m_upperLimit = 1e10f; - } - - - - -} - - - -void btSequentialImpulseConstraintSolver::setFrictionConstraintImpulse( btSolverConstraint& solverConstraint, - btRigidBody* rb0, btRigidBody* rb1, - btManifoldPoint& cp, const btContactSolverInfo& infoGlobal) -{ - if (infoGlobal.m_solverMode & SOLVER_USE_FRICTION_WARMSTARTING) - { - { - btSolverConstraint& frictionConstraint1 = m_tmpSolverContactFrictionConstraintPool[solverConstraint.m_frictionIndex]; - if (infoGlobal.m_solverMode & SOLVER_USE_WARMSTARTING) - { - frictionConstraint1.m_appliedImpulse = cp.m_appliedImpulseLateral1 * infoGlobal.m_warmstartingFactor; - if (rb0) - rb0->internalApplyImpulse(frictionConstraint1.m_contactNormal*rb0->getInvMass()*rb0->getLinearFactor(),frictionConstraint1.m_angularComponentA,frictionConstraint1.m_appliedImpulse); - if (rb1) - rb1->internalApplyImpulse(frictionConstraint1.m_contactNormal*rb1->getInvMass()*rb1->getLinearFactor(),-frictionConstraint1.m_angularComponentB,-frictionConstraint1.m_appliedImpulse); - } else - { - frictionConstraint1.m_appliedImpulse = 0.f; - } - } - - if ((infoGlobal.m_solverMode & SOLVER_USE_2_FRICTION_DIRECTIONS)) - { - btSolverConstraint& frictionConstraint2 = m_tmpSolverContactFrictionConstraintPool[solverConstraint.m_frictionIndex+1]; - if (infoGlobal.m_solverMode & SOLVER_USE_WARMSTARTING) - { - frictionConstraint2.m_appliedImpulse = cp.m_appliedImpulseLateral2 * infoGlobal.m_warmstartingFactor; - if (rb0) - rb0->internalApplyImpulse(frictionConstraint2.m_contactNormal*rb0->getInvMass(),frictionConstraint2.m_angularComponentA,frictionConstraint2.m_appliedImpulse); - if (rb1) - rb1->internalApplyImpulse(frictionConstraint2.m_contactNormal*rb1->getInvMass(),-frictionConstraint2.m_angularComponentB,-frictionConstraint2.m_appliedImpulse); - } else - { - frictionConstraint2.m_appliedImpulse = 0.f; - } - } - } else - { - btSolverConstraint& frictionConstraint1 = m_tmpSolverContactFrictionConstraintPool[solverConstraint.m_frictionIndex]; - frictionConstraint1.m_appliedImpulse = 0.f; - if ((infoGlobal.m_solverMode & SOLVER_USE_2_FRICTION_DIRECTIONS)) - { - btSolverConstraint& frictionConstraint2 = m_tmpSolverContactFrictionConstraintPool[solverConstraint.m_frictionIndex+1]; - frictionConstraint2.m_appliedImpulse = 0.f; - } - } -} - - - - -void btSequentialImpulseConstraintSolver::convertContact(btPersistentManifold* manifold,const btContactSolverInfo& infoGlobal) -{ - btCollisionObject* colObj0=0,*colObj1=0; - - colObj0 = (btCollisionObject*)manifold->getBody0(); - colObj1 = (btCollisionObject*)manifold->getBody1(); - - - btRigidBody* solverBodyA = btRigidBody::upcast(colObj0); - btRigidBody* solverBodyB = btRigidBody::upcast(colObj1); - - ///avoid collision response between two static objects - if ((!solverBodyA || !solverBodyA->getInvMass()) && (!solverBodyB || !solverBodyB->getInvMass())) - return; - - for (int j=0;jgetNumContacts();j++) - { - - btManifoldPoint& cp = manifold->getContactPoint(j); - - if (cp.getDistance() <= manifold->getContactProcessingThreshold()) - { - btVector3 rel_pos1; - btVector3 rel_pos2; - btScalar relaxation; - btScalar rel_vel; - btVector3 vel; - - int frictionIndex = m_tmpSolverContactConstraintPool.size(); - btSolverConstraint& solverConstraint = m_tmpSolverContactConstraintPool.expandNonInitializing(); - btRigidBody* rb0 = btRigidBody::upcast(colObj0); - btRigidBody* rb1 = btRigidBody::upcast(colObj1); - solverConstraint.m_solverBodyA = rb0? rb0 : &getFixedBody(); - solverConstraint.m_solverBodyB = rb1? rb1 : &getFixedBody(); - solverConstraint.m_originalContactPoint = &cp; - - setupContactConstraint(solverConstraint, colObj0, colObj1, cp, infoGlobal, vel, rel_vel, relaxation, rel_pos1, rel_pos2); - -// const btVector3& pos1 = cp.getPositionWorldOnA(); -// const btVector3& pos2 = cp.getPositionWorldOnB(); - - /////setup the friction constraints - - solverConstraint.m_frictionIndex = m_tmpSolverContactFrictionConstraintPool.size(); - - if (!(infoGlobal.m_solverMode & SOLVER_ENABLE_FRICTION_DIRECTION_CACHING) || !cp.m_lateralFrictionInitialized) - { - cp.m_lateralFrictionDir1 = vel - cp.m_normalWorldOnB * rel_vel; - btScalar lat_rel_vel = cp.m_lateralFrictionDir1.length2(); - if (!(infoGlobal.m_solverMode & SOLVER_DISABLE_VELOCITY_DEPENDENT_FRICTION_DIRECTION) && lat_rel_vel > SIMD_EPSILON) - { - cp.m_lateralFrictionDir1 /= btSqrt(lat_rel_vel); - if((infoGlobal.m_solverMode & SOLVER_USE_2_FRICTION_DIRECTIONS)) - { - cp.m_lateralFrictionDir2 = cp.m_lateralFrictionDir1.cross(cp.m_normalWorldOnB); - cp.m_lateralFrictionDir2.normalize();//?? - applyAnisotropicFriction(colObj0,cp.m_lateralFrictionDir2); - applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir2); - addFrictionConstraint(cp.m_lateralFrictionDir2,solverBodyA,solverBodyB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1, relaxation); - } - - applyAnisotropicFriction(colObj0,cp.m_lateralFrictionDir1); - applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir1); - addFrictionConstraint(cp.m_lateralFrictionDir1,solverBodyA,solverBodyB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1, relaxation); - cp.m_lateralFrictionInitialized = true; - } else - { - //re-calculate friction direction every frame, todo: check if this is really needed - btPlaneSpace1(cp.m_normalWorldOnB,cp.m_lateralFrictionDir1,cp.m_lateralFrictionDir2); - if ((infoGlobal.m_solverMode & SOLVER_USE_2_FRICTION_DIRECTIONS)) - { - applyAnisotropicFriction(colObj0,cp.m_lateralFrictionDir2); - applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir2); - addFrictionConstraint(cp.m_lateralFrictionDir2,solverBodyA,solverBodyB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1, relaxation); - } - - applyAnisotropicFriction(colObj0,cp.m_lateralFrictionDir1); - applyAnisotropicFriction(colObj1,cp.m_lateralFrictionDir1); - addFrictionConstraint(cp.m_lateralFrictionDir1,solverBodyA,solverBodyB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1, relaxation); - - cp.m_lateralFrictionInitialized = true; - } - - } else - { - addFrictionConstraint(cp.m_lateralFrictionDir1,solverBodyA,solverBodyB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1, relaxation,cp.m_contactMotion1, cp.m_contactCFM1); - if ((infoGlobal.m_solverMode & SOLVER_USE_2_FRICTION_DIRECTIONS)) - addFrictionConstraint(cp.m_lateralFrictionDir2,solverBodyA,solverBodyB,frictionIndex,cp,rel_pos1,rel_pos2,colObj0,colObj1, relaxation, cp.m_contactMotion2, cp.m_contactCFM2); - } - - setFrictionConstraintImpulse( solverConstraint, rb0, rb1, cp, infoGlobal); - - } - } -} - - -btScalar btSequentialImpulseConstraintSolver::solveGroupCacheFriendlySetup(btCollisionObject** /*bodies */,int /*numBodies */,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc) -{ - BT_PROFILE("solveGroupCacheFriendlySetup"); - (void)stackAlloc; - (void)debugDrawer; - - - if (!(numConstraints + numManifolds)) - { - // printf("empty\n"); - return 0.f; - } - - if (1) - { - int j; - for (j=0;jbuildJacobian(); - } - } - //btRigidBody* rb0=0,*rb1=0; - - //if (1) - { - { - - int totalNumRows = 0; - int i; - - m_tmpConstraintSizesPool.resize(numConstraints); - //calculate the total number of contraint rows - for (i=0;igetInfo1(&info1); - totalNumRows += info1.m_numConstraintRows; - } - m_tmpSolverNonContactConstraintPool.resize(totalNumRows); - - - ///setup the btSolverConstraints - int currentRow = 0; - - for (i=0;igetRigidBodyA(); - btRigidBody& rbB = constraint->getRigidBodyB(); - - - int j; - for ( j=0;jm_contactNormal; - info2.m_J1angularAxis = currentConstraintRow->m_relpos1CrossNormal; - info2.m_J2linearAxis = 0; - info2.m_J2angularAxis = currentConstraintRow->m_relpos2CrossNormal; - info2.rowskip = sizeof(btSolverConstraint)/sizeof(btScalar);//check this - ///the size of btSolverConstraint needs be a multiple of btScalar - btAssert(info2.rowskip*sizeof(btScalar)== sizeof(btSolverConstraint)); - info2.m_constraintError = ¤tConstraintRow->m_rhs; - currentConstraintRow->m_cfm = infoGlobal.m_globalCfm; - info2.cfm = ¤tConstraintRow->m_cfm; - info2.m_lowerLimit = ¤tConstraintRow->m_lowerLimit; - info2.m_upperLimit = ¤tConstraintRow->m_upperLimit; - info2.m_numIterations = infoGlobal.m_numIterations; - constraints[i]->getInfo2(&info2); - - ///finalize the constraint setup - for ( j=0;jgetRigidBodyA().getInvInertiaTensorWorld()*ftorqueAxis1*constraint->getRigidBodyA().getAngularFactor(); - } - { - const btVector3& ftorqueAxis2 = solverConstraint.m_relpos2CrossNormal; - solverConstraint.m_angularComponentB = constraint->getRigidBodyB().getInvInertiaTensorWorld()*ftorqueAxis2*constraint->getRigidBodyB().getAngularFactor(); - } - - { - btVector3 iMJlA = solverConstraint.m_contactNormal*rbA.getInvMass(); - btVector3 iMJaA = rbA.getInvInertiaTensorWorld()*solverConstraint.m_relpos1CrossNormal; - btVector3 iMJlB = solverConstraint.m_contactNormal*rbB.getInvMass();//sign of normal? - btVector3 iMJaB = rbB.getInvInertiaTensorWorld()*solverConstraint.m_relpos2CrossNormal; - - btScalar sum = iMJlA.dot(solverConstraint.m_contactNormal); - sum += iMJaA.dot(solverConstraint.m_relpos1CrossNormal); - sum += iMJlB.dot(solverConstraint.m_contactNormal); - sum += iMJaB.dot(solverConstraint.m_relpos2CrossNormal); - - solverConstraint.m_jacDiagABInv = btScalar(1.)/sum; - } - - - ///fix rhs - ///todo: add force/torque accelerators - { - btScalar rel_vel; - btScalar vel1Dotn = solverConstraint.m_contactNormal.dot(rbA.getLinearVelocity()) + solverConstraint.m_relpos1CrossNormal.dot(rbA.getAngularVelocity()); - btScalar vel2Dotn = -solverConstraint.m_contactNormal.dot(rbB.getLinearVelocity()) + solverConstraint.m_relpos2CrossNormal.dot(rbB.getAngularVelocity()); - - rel_vel = vel1Dotn+vel2Dotn; - - btScalar restitution = 0.f; - btScalar positionalError = solverConstraint.m_rhs;//already filled in by getConstraintInfo2 - btScalar velocityError = restitution - rel_vel;// * damping; - btScalar penetrationImpulse = positionalError*solverConstraint.m_jacDiagABInv; - btScalar velocityImpulse = velocityError *solverConstraint.m_jacDiagABInv; - solverConstraint.m_rhs = penetrationImpulse+velocityImpulse; - solverConstraint.m_appliedImpulse = 0.f; - - } - } - } - currentRow+=m_tmpConstraintSizesPool[i].m_numConstraintRows; - } - } - - { - int i; - btPersistentManifold* manifold = 0; -// btCollisionObject* colObj0=0,*colObj1=0; - - - for (i=0;isolveConstraintObsolete(constraints[j]->getRigidBodyA(),constraints[j]->getRigidBodyB(),infoGlobal.m_timeStep); - } - - ///solve all contact constraints using SIMD, if available - int numPoolConstraints = m_tmpSolverContactConstraintPool.size(); - for (j=0;jbtScalar(0)) - { - solveManifold.m_lowerLimit = -(solveManifold.m_friction*totalImpulse); - solveManifold.m_upperLimit = solveManifold.m_friction*totalImpulse; - - resolveSingleConstraintRowGenericSIMD(*solveManifold.m_solverBodyA, *solveManifold.m_solverBodyB,solveManifold); - } - } - } else - { - - ///solve all joint constraints - for (j=0;jsolveConstraintObsolete(constraints[j]->getRigidBodyA(),constraints[j]->getRigidBodyB(),infoGlobal.m_timeStep); - } - ///solve all contact constraints - int numPoolConstraints = m_tmpSolverContactConstraintPool.size(); - for (j=0;jbtScalar(0)) - { - solveManifold.m_lowerLimit = -(solveManifold.m_friction*totalImpulse); - solveManifold.m_upperLimit = solveManifold.m_friction*totalImpulse; - - resolveSingleConstraintRowGeneric(*solveManifold.m_solverBodyA,*solveManifold.m_solverBodyB,solveManifold); - } - } - } - return 0.f; -} - - -void btSequentialImpulseConstraintSolver::solveGroupCacheFriendlySplitImpulseIterations(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc) -{ - int iteration; - if (infoGlobal.m_splitImpulse) - { - if (infoGlobal.m_solverMode & SOLVER_SIMD) - { - for ( iteration = 0;iterationm_appliedImpulse = solveManifold.m_appliedImpulse; - if (infoGlobal.m_solverMode & SOLVER_USE_FRICTION_WARMSTARTING) - { - pt->m_appliedImpulseLateral1 = m_tmpSolverContactFrictionConstraintPool[solveManifold.m_frictionIndex].m_appliedImpulse; - pt->m_appliedImpulseLateral2 = m_tmpSolverContactFrictionConstraintPool[solveManifold.m_frictionIndex+1].m_appliedImpulse; - } - - //do a callback here? - } - - numPoolConstraints = m_tmpSolverNonContactConstraintPool.size(); - for (j=0;jinternalGetAppliedImpulse(); - sum += solverConstr.m_appliedImpulse; - constr->internalSetAppliedImpulse(sum); - } - - - if (infoGlobal.m_splitImpulse) - { - for ( i=0;iinternalWritebackVelocity(infoGlobal.m_timeStep); - } - } else - { - for ( i=0;iinternalWritebackVelocity(); - } - } - - - m_tmpSolverContactConstraintPool.resize(0); - m_tmpSolverNonContactConstraintPool.resize(0); - m_tmpSolverContactFrictionConstraintPool.resize(0); - - return 0.f; -} - - - -/// btSequentialImpulseConstraintSolver Sequentially applies impulses -btScalar btSequentialImpulseConstraintSolver::solveGroup(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc,btDispatcher* /*dispatcher*/) -{ - - BT_PROFILE("solveGroup"); - //you need to provide at least some bodies - btAssert(bodies); - btAssert(numBodies); - - solveGroupCacheFriendlySetup( bodies, numBodies, manifoldPtr, numManifolds,constraints, numConstraints,infoGlobal,debugDrawer, stackAlloc); - - solveGroupCacheFriendlyIterations(bodies, numBodies, manifoldPtr, numManifolds,constraints, numConstraints,infoGlobal,debugDrawer, stackAlloc); - - solveGroupCacheFriendlyFinish(bodies, numBodies, manifoldPtr, numManifolds,constraints, numConstraints,infoGlobal,debugDrawer, stackAlloc); - - return 0.f; -} - -void btSequentialImpulseConstraintSolver::reset() -{ - m_btSeed2 = 0; -} - - diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h deleted file mode 100644 index a26fbad787b..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h +++ /dev/null @@ -1,132 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H -#define SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H - -#include "btConstraintSolver.h" -class btIDebugDraw; -#include "btContactConstraint.h" -#include "btSolverBody.h" -#include "btSolverConstraint.h" -#include "btTypedConstraint.h" -#include "BulletCollision/NarrowPhaseCollision/btManifoldPoint.h" - -///The btSequentialImpulseConstraintSolver is a fast SIMD implementation of the Projected Gauss Seidel (iterative LCP) method. -class btSequentialImpulseConstraintSolver : public btConstraintSolver -{ -protected: - - btConstraintArray m_tmpSolverContactConstraintPool; - btConstraintArray m_tmpSolverNonContactConstraintPool; - btConstraintArray m_tmpSolverContactFrictionConstraintPool; - btAlignedObjectArray m_orderTmpConstraintPool; - btAlignedObjectArray m_orderFrictionConstraintPool; - btAlignedObjectArray m_tmpConstraintSizesPool; - - void setupFrictionConstraint( btSolverConstraint& solverConstraint, const btVector3& normalAxis,btRigidBody* solverBodyA,btRigidBody* solverBodyIdB, - btManifoldPoint& cp,const btVector3& rel_pos1,const btVector3& rel_pos2, - btCollisionObject* colObj0,btCollisionObject* colObj1, btScalar relaxation, - btScalar desiredVelocity=0., btScalar cfmSlip=0.); - - btSolverConstraint& addFrictionConstraint(const btVector3& normalAxis,btRigidBody* solverBodyA,btRigidBody* solverBodyB,int frictionIndex,btManifoldPoint& cp,const btVector3& rel_pos1,const btVector3& rel_pos2,btCollisionObject* colObj0,btCollisionObject* colObj1, btScalar relaxation, btScalar desiredVelocity=0., btScalar cfmSlip=0.); - - void setupContactConstraint(btSolverConstraint& solverConstraint, btCollisionObject* colObj0, btCollisionObject* colObj1, btManifoldPoint& cp, - const btContactSolverInfo& infoGlobal, btVector3& vel, btScalar& rel_vel, btScalar& relaxation, - btVector3& rel_pos1, btVector3& rel_pos2); - - void setFrictionConstraintImpulse( btSolverConstraint& solverConstraint, btRigidBody* rb0, btRigidBody* rb1, - btManifoldPoint& cp, const btContactSolverInfo& infoGlobal); - - ///m_btSeed2 is used for re-arranging the constraint rows. improves convergence/quality of friction - unsigned long m_btSeed2; - -// void initSolverBody(btSolverBody* solverBody, btCollisionObject* collisionObject); - btScalar restitutionCurve(btScalar rel_vel, btScalar restitution); - - void convertContact(btPersistentManifold* manifold,const btContactSolverInfo& infoGlobal); - - - void resolveSplitPenetrationSIMD( - btRigidBody& body1, - btRigidBody& body2, - const btSolverConstraint& contactConstraint); - - void resolveSplitPenetrationImpulseCacheFriendly( - btRigidBody& body1, - btRigidBody& body2, - const btSolverConstraint& contactConstraint); - - //internal method - int getOrInitSolverBody(btCollisionObject& body); - - void resolveSingleConstraintRowGeneric(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& contactConstraint); - - void resolveSingleConstraintRowGenericSIMD(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& contactConstraint); - - void resolveSingleConstraintRowLowerLimit(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& contactConstraint); - - void resolveSingleConstraintRowLowerLimitSIMD(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& contactConstraint); - -protected: - static btRigidBody& getFixedBody() - { - static btRigidBody s_fixed(0, 0,0); - s_fixed.setMassProps(btScalar(0.),btVector3(btScalar(0.),btScalar(0.),btScalar(0.))); - return s_fixed; - } - virtual void solveGroupCacheFriendlySplitImpulseIterations(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc); - virtual btScalar solveGroupCacheFriendlyFinish(btCollisionObject** bodies ,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc); - btScalar solveSingleIteration(int iteration, btCollisionObject** bodies ,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc); - - virtual btScalar solveGroupCacheFriendlySetup(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc); - virtual btScalar solveGroupCacheFriendlyIterations(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc); - - -public: - - - btSequentialImpulseConstraintSolver(); - virtual ~btSequentialImpulseConstraintSolver(); - - virtual btScalar solveGroup(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifold,int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& info, btIDebugDraw* debugDrawer, btStackAlloc* stackAlloc,btDispatcher* dispatcher); - - - - ///clear internal cached data and reset random seed - virtual void reset(); - - unsigned long btRand2(); - - int btRandInt2 (int n); - - void setRandSeed(unsigned long seed) - { - m_btSeed2 = seed; - } - unsigned long getRandSeed() const - { - return m_btSeed2; - } - -}; - -#ifndef BT_PREFER_SIMD -typedef btSequentialImpulseConstraintSolver btSequentialImpulseConstraintSolverPrefered; -#endif - - -#endif //SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H - diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp deleted file mode 100644 index b69f46da1b4..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp +++ /dev/null @@ -1,857 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -/* -Added by Roman Ponomarev (rponom@gmail.com) -April 04, 2008 -*/ - - - -#include "btSliderConstraint.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include "LinearMath/btTransformUtil.h" -#include - -#define USE_OFFSET_FOR_CONSTANT_FRAME true - -void btSliderConstraint::initParams() -{ - m_lowerLinLimit = btScalar(1.0); - m_upperLinLimit = btScalar(-1.0); - m_lowerAngLimit = btScalar(0.); - m_upperAngLimit = btScalar(0.); - m_softnessDirLin = SLIDER_CONSTRAINT_DEF_SOFTNESS; - m_restitutionDirLin = SLIDER_CONSTRAINT_DEF_RESTITUTION; - m_dampingDirLin = btScalar(0.); - m_cfmDirLin = SLIDER_CONSTRAINT_DEF_CFM; - m_softnessDirAng = SLIDER_CONSTRAINT_DEF_SOFTNESS; - m_restitutionDirAng = SLIDER_CONSTRAINT_DEF_RESTITUTION; - m_dampingDirAng = btScalar(0.); - m_cfmDirAng = SLIDER_CONSTRAINT_DEF_CFM; - m_softnessOrthoLin = SLIDER_CONSTRAINT_DEF_SOFTNESS; - m_restitutionOrthoLin = SLIDER_CONSTRAINT_DEF_RESTITUTION; - m_dampingOrthoLin = SLIDER_CONSTRAINT_DEF_DAMPING; - m_cfmOrthoLin = SLIDER_CONSTRAINT_DEF_CFM; - m_softnessOrthoAng = SLIDER_CONSTRAINT_DEF_SOFTNESS; - m_restitutionOrthoAng = SLIDER_CONSTRAINT_DEF_RESTITUTION; - m_dampingOrthoAng = SLIDER_CONSTRAINT_DEF_DAMPING; - m_cfmOrthoAng = SLIDER_CONSTRAINT_DEF_CFM; - m_softnessLimLin = SLIDER_CONSTRAINT_DEF_SOFTNESS; - m_restitutionLimLin = SLIDER_CONSTRAINT_DEF_RESTITUTION; - m_dampingLimLin = SLIDER_CONSTRAINT_DEF_DAMPING; - m_cfmLimLin = SLIDER_CONSTRAINT_DEF_CFM; - m_softnessLimAng = SLIDER_CONSTRAINT_DEF_SOFTNESS; - m_restitutionLimAng = SLIDER_CONSTRAINT_DEF_RESTITUTION; - m_dampingLimAng = SLIDER_CONSTRAINT_DEF_DAMPING; - m_cfmLimAng = SLIDER_CONSTRAINT_DEF_CFM; - - m_poweredLinMotor = false; - m_targetLinMotorVelocity = btScalar(0.); - m_maxLinMotorForce = btScalar(0.); - m_accumulatedLinMotorImpulse = btScalar(0.0); - - m_poweredAngMotor = false; - m_targetAngMotorVelocity = btScalar(0.); - m_maxAngMotorForce = btScalar(0.); - m_accumulatedAngMotorImpulse = btScalar(0.0); - - m_flags = 0; - m_flags = 0; - - m_useOffsetForConstraintFrame = USE_OFFSET_FOR_CONSTANT_FRAME; - - calculateTransforms(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); -} - - - - - -btSliderConstraint::btSliderConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB, bool useLinearReferenceFrameA) - : btTypedConstraint(SLIDER_CONSTRAINT_TYPE, rbA, rbB), - m_useSolveConstraintObsolete(false), - m_frameInA(frameInA), - m_frameInB(frameInB), - m_useLinearReferenceFrameA(useLinearReferenceFrameA) -{ - initParams(); -} - - - -btSliderConstraint::btSliderConstraint(btRigidBody& rbB, const btTransform& frameInB, bool useLinearReferenceFrameA) - : btTypedConstraint(SLIDER_CONSTRAINT_TYPE, getFixedBody(), rbB), - m_useSolveConstraintObsolete(false), - m_frameInB(frameInB), - m_useLinearReferenceFrameA(useLinearReferenceFrameA) -{ - ///not providing rigidbody A means implicitly using worldspace for body A - m_frameInA = rbB.getCenterOfMassTransform() * m_frameInB; -// m_frameInA.getOrigin() = m_rbA.getCenterOfMassTransform()(m_frameInA.getOrigin()); - - initParams(); -} - - - - - - -void btSliderConstraint::getInfo1(btConstraintInfo1* info) -{ - if (m_useSolveConstraintObsolete) - { - info->m_numConstraintRows = 0; - info->nub = 0; - } - else - { - info->m_numConstraintRows = 4; // Fixed 2 linear + 2 angular - info->nub = 2; - //prepare constraint - calculateTransforms(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform()); - testAngLimits(); - testLinLimits(); - if(getSolveLinLimit() || getPoweredLinMotor()) - { - info->m_numConstraintRows++; // limit 3rd linear as well - info->nub--; - } - if(getSolveAngLimit() || getPoweredAngMotor()) - { - info->m_numConstraintRows++; // limit 3rd angular as well - info->nub--; - } - } -} - -void btSliderConstraint::getInfo1NonVirtual(btConstraintInfo1* info) -{ - - info->m_numConstraintRows = 6; // Fixed 2 linear + 2 angular + 1 limit (even if not used) - info->nub = 0; -} - -void btSliderConstraint::getInfo2(btConstraintInfo2* info) -{ - getInfo2NonVirtual(info,m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform(), m_rbA.getLinearVelocity(),m_rbB.getLinearVelocity(), m_rbA.getInvMass(),m_rbB.getInvMass()); -} - - - - - - - -void btSliderConstraint::calculateTransforms(const btTransform& transA,const btTransform& transB) -{ - if(m_useLinearReferenceFrameA || (!m_useSolveConstraintObsolete)) - { - m_calculatedTransformA = transA * m_frameInA; - m_calculatedTransformB = transB * m_frameInB; - } - else - { - m_calculatedTransformA = transB * m_frameInB; - m_calculatedTransformB = transA * m_frameInA; - } - m_realPivotAInW = m_calculatedTransformA.getOrigin(); - m_realPivotBInW = m_calculatedTransformB.getOrigin(); - m_sliderAxis = m_calculatedTransformA.getBasis().getColumn(0); // along X - if(m_useLinearReferenceFrameA || m_useSolveConstraintObsolete) - { - m_delta = m_realPivotBInW - m_realPivotAInW; - } - else - { - m_delta = m_realPivotAInW - m_realPivotBInW; - } - m_projPivotInW = m_realPivotAInW + m_sliderAxis.dot(m_delta) * m_sliderAxis; - btVector3 normalWorld; - int i; - //linear part - for(i = 0; i < 3; i++) - { - normalWorld = m_calculatedTransformA.getBasis().getColumn(i); - m_depth[i] = m_delta.dot(normalWorld); - } -} - - - -void btSliderConstraint::testLinLimits(void) -{ - m_solveLinLim = false; - m_linPos = m_depth[0]; - if(m_lowerLinLimit <= m_upperLinLimit) - { - if(m_depth[0] > m_upperLinLimit) - { - m_depth[0] -= m_upperLinLimit; - m_solveLinLim = true; - } - else if(m_depth[0] < m_lowerLinLimit) - { - m_depth[0] -= m_lowerLinLimit; - m_solveLinLim = true; - } - else - { - m_depth[0] = btScalar(0.); - } - } - else - { - m_depth[0] = btScalar(0.); - } -} - - - -void btSliderConstraint::testAngLimits(void) -{ - m_angDepth = btScalar(0.); - m_solveAngLim = false; - if(m_lowerAngLimit <= m_upperAngLimit) - { - const btVector3 axisA0 = m_calculatedTransformA.getBasis().getColumn(1); - const btVector3 axisA1 = m_calculatedTransformA.getBasis().getColumn(2); - const btVector3 axisB0 = m_calculatedTransformB.getBasis().getColumn(1); -// btScalar rot = btAtan2Fast(axisB0.dot(axisA1), axisB0.dot(axisA0)); - btScalar rot = btAtan2(axisB0.dot(axisA1), axisB0.dot(axisA0)); - rot = btAdjustAngleToLimits(rot, m_lowerAngLimit, m_upperAngLimit); - m_angPos = rot; - if(rot < m_lowerAngLimit) - { - m_angDepth = rot - m_lowerAngLimit; - m_solveAngLim = true; - } - else if(rot > m_upperAngLimit) - { - m_angDepth = rot - m_upperAngLimit; - m_solveAngLim = true; - } - } -} - -btVector3 btSliderConstraint::getAncorInA(void) -{ - btVector3 ancorInA; - ancorInA = m_realPivotAInW + (m_lowerLinLimit + m_upperLinLimit) * btScalar(0.5) * m_sliderAxis; - ancorInA = m_rbA.getCenterOfMassTransform().inverse() * ancorInA; - return ancorInA; -} - - - -btVector3 btSliderConstraint::getAncorInB(void) -{ - btVector3 ancorInB; - ancorInB = m_frameInB.getOrigin(); - return ancorInB; -} - - -void btSliderConstraint::getInfo2NonVirtual(btConstraintInfo2* info, const btTransform& transA,const btTransform& transB, const btVector3& linVelA,const btVector3& linVelB, btScalar rbAinvMass,btScalar rbBinvMass ) -{ - const btTransform& trA = getCalculatedTransformA(); - const btTransform& trB = getCalculatedTransformB(); - - btAssert(!m_useSolveConstraintObsolete); - int i, s = info->rowskip; - - btScalar signFact = m_useLinearReferenceFrameA ? btScalar(1.0f) : btScalar(-1.0f); - - // difference between frames in WCS - btVector3 ofs = trB.getOrigin() - trA.getOrigin(); - // now get weight factors depending on masses - btScalar miA = rbAinvMass; - btScalar miB = rbBinvMass; - bool hasStaticBody = (miA < SIMD_EPSILON) || (miB < SIMD_EPSILON); - btScalar miS = miA + miB; - btScalar factA, factB; - if(miS > btScalar(0.f)) - { - factA = miB / miS; - } - else - { - factA = btScalar(0.5f); - } - factB = btScalar(1.0f) - factA; - btVector3 ax1, p, q; - btVector3 ax1A = trA.getBasis().getColumn(0); - btVector3 ax1B = trB.getBasis().getColumn(0); - if(m_useOffsetForConstraintFrame) - { - // get the desired direction of slider axis - // as weighted sum of X-orthos of frameA and frameB in WCS - ax1 = ax1A * factA + ax1B * factB; - ax1.normalize(); - // construct two orthos to slider axis - btPlaneSpace1 (ax1, p, q); - } - else - { // old way - use frameA - ax1 = trA.getBasis().getColumn(0); - // get 2 orthos to slider axis (Y, Z) - p = trA.getBasis().getColumn(1); - q = trA.getBasis().getColumn(2); - } - // make rotations around these orthos equal - // the slider axis should be the only unconstrained - // rotational axis, the angular velocity of the two bodies perpendicular to - // the slider axis should be equal. thus the constraint equations are - // p*w1 - p*w2 = 0 - // q*w1 - q*w2 = 0 - // where p and q are unit vectors normal to the slider axis, and w1 and w2 - // are the angular velocity vectors of the two bodies. - info->m_J1angularAxis[0] = p[0]; - info->m_J1angularAxis[1] = p[1]; - info->m_J1angularAxis[2] = p[2]; - info->m_J1angularAxis[s+0] = q[0]; - info->m_J1angularAxis[s+1] = q[1]; - info->m_J1angularAxis[s+2] = q[2]; - - info->m_J2angularAxis[0] = -p[0]; - info->m_J2angularAxis[1] = -p[1]; - info->m_J2angularAxis[2] = -p[2]; - info->m_J2angularAxis[s+0] = -q[0]; - info->m_J2angularAxis[s+1] = -q[1]; - info->m_J2angularAxis[s+2] = -q[2]; - // compute the right hand side of the constraint equation. set relative - // body velocities along p and q to bring the slider back into alignment. - // if ax1A,ax1B are the unit length slider axes as computed from bodyA and - // bodyB, we need to rotate both bodies along the axis u = (ax1 x ax2). - // if "theta" is the angle between ax1 and ax2, we need an angular velocity - // along u to cover angle erp*theta in one step : - // |angular_velocity| = angle/time = erp*theta / stepsize - // = (erp*fps) * theta - // angular_velocity = |angular_velocity| * (ax1 x ax2) / |ax1 x ax2| - // = (erp*fps) * theta * (ax1 x ax2) / sin(theta) - // ...as ax1 and ax2 are unit length. if theta is smallish, - // theta ~= sin(theta), so - // angular_velocity = (erp*fps) * (ax1 x ax2) - // ax1 x ax2 is in the plane space of ax1, so we project the angular - // velocity to p and q to find the right hand side. -// btScalar k = info->fps * info->erp * getSoftnessOrthoAng(); - btScalar currERP = (m_flags & BT_SLIDER_FLAGS_ERP_ORTANG) ? m_softnessOrthoAng : m_softnessOrthoAng * info->erp; - btScalar k = info->fps * currERP; - - btVector3 u = ax1A.cross(ax1B); - info->m_constraintError[0] = k * u.dot(p); - info->m_constraintError[s] = k * u.dot(q); - if(m_flags & BT_SLIDER_FLAGS_CFM_ORTANG) - { - info->cfm[0] = m_cfmOrthoAng; - info->cfm[s] = m_cfmOrthoAng; - } - - int nrow = 1; // last filled row - int srow; - btScalar limit_err; - int limit; - int powered; - - // next two rows. - // we want: velA + wA x relA == velB + wB x relB ... but this would - // result in three equations, so we project along two orthos to the slider axis - - btTransform bodyA_trans = transA; - btTransform bodyB_trans = transB; - nrow++; - int s2 = nrow * s; - nrow++; - int s3 = nrow * s; - btVector3 tmpA(0,0,0), tmpB(0,0,0), relA(0,0,0), relB(0,0,0), c(0,0,0); - if(m_useOffsetForConstraintFrame) - { - // get vector from bodyB to frameB in WCS - relB = trB.getOrigin() - bodyB_trans.getOrigin(); - // get its projection to slider axis - btVector3 projB = ax1 * relB.dot(ax1); - // get vector directed from bodyB to slider axis (and orthogonal to it) - btVector3 orthoB = relB - projB; - // same for bodyA - relA = trA.getOrigin() - bodyA_trans.getOrigin(); - btVector3 projA = ax1 * relA.dot(ax1); - btVector3 orthoA = relA - projA; - // get desired offset between frames A and B along slider axis - btScalar sliderOffs = m_linPos - m_depth[0]; - // desired vector from projection of center of bodyA to projection of center of bodyB to slider axis - btVector3 totalDist = projA + ax1 * sliderOffs - projB; - // get offset vectors relA and relB - relA = orthoA + totalDist * factA; - relB = orthoB - totalDist * factB; - // now choose average ortho to slider axis - p = orthoB * factA + orthoA * factB; - btScalar len2 = p.length2(); - if(len2 > SIMD_EPSILON) - { - p /= btSqrt(len2); - } - else - { - p = trA.getBasis().getColumn(1); - } - // make one more ortho - q = ax1.cross(p); - // fill two rows - tmpA = relA.cross(p); - tmpB = relB.cross(p); - for (i=0; i<3; i++) info->m_J1angularAxis[s2+i] = tmpA[i]; - for (i=0; i<3; i++) info->m_J2angularAxis[s2+i] = -tmpB[i]; - tmpA = relA.cross(q); - tmpB = relB.cross(q); - if(hasStaticBody && getSolveAngLimit()) - { // to make constraint between static and dynamic objects more rigid - // remove wA (or wB) from equation if angular limit is hit - tmpB *= factB; - tmpA *= factA; - } - for (i=0; i<3; i++) info->m_J1angularAxis[s3+i] = tmpA[i]; - for (i=0; i<3; i++) info->m_J2angularAxis[s3+i] = -tmpB[i]; - for (i=0; i<3; i++) info->m_J1linearAxis[s2+i] = p[i]; - for (i=0; i<3; i++) info->m_J1linearAxis[s3+i] = q[i]; - } - else - { // old way - maybe incorrect if bodies are not on the slider axis - // see discussion "Bug in slider constraint" http://bulletphysics.org/Bullet/phpBB3/viewtopic.php?f=9&t=4024&start=0 - c = bodyB_trans.getOrigin() - bodyA_trans.getOrigin(); - btVector3 tmp = c.cross(p); - for (i=0; i<3; i++) info->m_J1angularAxis[s2+i] = factA*tmp[i]; - for (i=0; i<3; i++) info->m_J2angularAxis[s2+i] = factB*tmp[i]; - tmp = c.cross(q); - for (i=0; i<3; i++) info->m_J1angularAxis[s3+i] = factA*tmp[i]; - for (i=0; i<3; i++) info->m_J2angularAxis[s3+i] = factB*tmp[i]; - - for (i=0; i<3; i++) info->m_J1linearAxis[s2+i] = p[i]; - for (i=0; i<3; i++) info->m_J1linearAxis[s3+i] = q[i]; - } - // compute two elements of right hand side - - // k = info->fps * info->erp * getSoftnessOrthoLin(); - currERP = (m_flags & BT_SLIDER_FLAGS_ERP_ORTLIN) ? m_softnessOrthoLin : m_softnessOrthoLin * info->erp; - k = info->fps * currERP; - - btScalar rhs = k * p.dot(ofs); - info->m_constraintError[s2] = rhs; - rhs = k * q.dot(ofs); - info->m_constraintError[s3] = rhs; - if(m_flags & BT_SLIDER_FLAGS_CFM_ORTLIN) - { - info->cfm[s2] = m_cfmOrthoLin; - info->cfm[s3] = m_cfmOrthoLin; - } - - - // check linear limits - limit_err = btScalar(0.0); - limit = 0; - if(getSolveLinLimit()) - { - limit_err = getLinDepth() * signFact; - limit = (limit_err > btScalar(0.0)) ? 2 : 1; - } - powered = 0; - if(getPoweredLinMotor()) - { - powered = 1; - } - // if the slider has joint limits or motor, add in the extra row - if (limit || powered) - { - nrow++; - srow = nrow * info->rowskip; - info->m_J1linearAxis[srow+0] = ax1[0]; - info->m_J1linearAxis[srow+1] = ax1[1]; - info->m_J1linearAxis[srow+2] = ax1[2]; - // linear torque decoupling step: - // - // we have to be careful that the linear constraint forces (+/- ax1) applied to the two bodies - // do not create a torque couple. in other words, the points that the - // constraint force is applied at must lie along the same ax1 axis. - // a torque couple will result in limited slider-jointed free - // bodies from gaining angular momentum. - if(m_useOffsetForConstraintFrame) - { - // this is needed only when bodyA and bodyB are both dynamic. - if(!hasStaticBody) - { - tmpA = relA.cross(ax1); - tmpB = relB.cross(ax1); - info->m_J1angularAxis[srow+0] = tmpA[0]; - info->m_J1angularAxis[srow+1] = tmpA[1]; - info->m_J1angularAxis[srow+2] = tmpA[2]; - info->m_J2angularAxis[srow+0] = -tmpB[0]; - info->m_J2angularAxis[srow+1] = -tmpB[1]; - info->m_J2angularAxis[srow+2] = -tmpB[2]; - } - } - else - { // The old way. May be incorrect if bodies are not on the slider axis - btVector3 ltd; // Linear Torque Decoupling vector (a torque) - ltd = c.cross(ax1); - info->m_J1angularAxis[srow+0] = factA*ltd[0]; - info->m_J1angularAxis[srow+1] = factA*ltd[1]; - info->m_J1angularAxis[srow+2] = factA*ltd[2]; - info->m_J2angularAxis[srow+0] = factB*ltd[0]; - info->m_J2angularAxis[srow+1] = factB*ltd[1]; - info->m_J2angularAxis[srow+2] = factB*ltd[2]; - } - // right-hand part - btScalar lostop = getLowerLinLimit(); - btScalar histop = getUpperLinLimit(); - if(limit && (lostop == histop)) - { // the joint motor is ineffective - powered = 0; - } - info->m_constraintError[srow] = 0.; - info->m_lowerLimit[srow] = 0.; - info->m_upperLimit[srow] = 0.; - currERP = (m_flags & BT_SLIDER_FLAGS_ERP_LIMLIN) ? m_softnessLimLin : info->erp; - if(powered) - { - if(m_flags & BT_SLIDER_FLAGS_CFM_DIRLIN) - { - info->cfm[srow] = m_cfmDirLin; - } - btScalar tag_vel = getTargetLinMotorVelocity(); - btScalar mot_fact = getMotorFactor(m_linPos, m_lowerLinLimit, m_upperLinLimit, tag_vel, info->fps * currERP); - info->m_constraintError[srow] -= signFact * mot_fact * getTargetLinMotorVelocity(); - info->m_lowerLimit[srow] += -getMaxLinMotorForce() * info->fps; - info->m_upperLimit[srow] += getMaxLinMotorForce() * info->fps; - } - if(limit) - { - k = info->fps * currERP; - info->m_constraintError[srow] += k * limit_err; - if(m_flags & BT_SLIDER_FLAGS_CFM_LIMLIN) - { - info->cfm[srow] = m_cfmLimLin; - } - if(lostop == histop) - { // limited low and high simultaneously - info->m_lowerLimit[srow] = -SIMD_INFINITY; - info->m_upperLimit[srow] = SIMD_INFINITY; - } - else if(limit == 1) - { // low limit - info->m_lowerLimit[srow] = -SIMD_INFINITY; - info->m_upperLimit[srow] = 0; - } - else - { // high limit - info->m_lowerLimit[srow] = 0; - info->m_upperLimit[srow] = SIMD_INFINITY; - } - // bounce (we'll use slider parameter abs(1.0 - m_dampingLimLin) for that) - btScalar bounce = btFabs(btScalar(1.0) - getDampingLimLin()); - if(bounce > btScalar(0.0)) - { - btScalar vel = linVelA.dot(ax1); - vel -= linVelB.dot(ax1); - vel *= signFact; - // only apply bounce if the velocity is incoming, and if the - // resulting c[] exceeds what we already have. - if(limit == 1) - { // low limit - if(vel < 0) - { - btScalar newc = -bounce * vel; - if (newc > info->m_constraintError[srow]) - { - info->m_constraintError[srow] = newc; - } - } - } - else - { // high limit - all those computations are reversed - if(vel > 0) - { - btScalar newc = -bounce * vel; - if(newc < info->m_constraintError[srow]) - { - info->m_constraintError[srow] = newc; - } - } - } - } - info->m_constraintError[srow] *= getSoftnessLimLin(); - } // if(limit) - } // if linear limit - // check angular limits - limit_err = btScalar(0.0); - limit = 0; - if(getSolveAngLimit()) - { - limit_err = getAngDepth(); - limit = (limit_err > btScalar(0.0)) ? 1 : 2; - } - // if the slider has joint limits, add in the extra row - powered = 0; - if(getPoweredAngMotor()) - { - powered = 1; - } - if(limit || powered) - { - nrow++; - srow = nrow * info->rowskip; - info->m_J1angularAxis[srow+0] = ax1[0]; - info->m_J1angularAxis[srow+1] = ax1[1]; - info->m_J1angularAxis[srow+2] = ax1[2]; - - info->m_J2angularAxis[srow+0] = -ax1[0]; - info->m_J2angularAxis[srow+1] = -ax1[1]; - info->m_J2angularAxis[srow+2] = -ax1[2]; - - btScalar lostop = getLowerAngLimit(); - btScalar histop = getUpperAngLimit(); - if(limit && (lostop == histop)) - { // the joint motor is ineffective - powered = 0; - } - currERP = (m_flags & BT_SLIDER_FLAGS_ERP_LIMANG) ? m_softnessLimAng : info->erp; - if(powered) - { - if(m_flags & BT_SLIDER_FLAGS_CFM_DIRANG) - { - info->cfm[srow] = m_cfmDirAng; - } - btScalar mot_fact = getMotorFactor(m_angPos, m_lowerAngLimit, m_upperAngLimit, getTargetAngMotorVelocity(), info->fps * currERP); - info->m_constraintError[srow] = mot_fact * getTargetAngMotorVelocity(); - info->m_lowerLimit[srow] = -getMaxAngMotorForce() * info->fps; - info->m_upperLimit[srow] = getMaxAngMotorForce() * info->fps; - } - if(limit) - { - k = info->fps * currERP; - info->m_constraintError[srow] += k * limit_err; - if(m_flags & BT_SLIDER_FLAGS_CFM_LIMANG) - { - info->cfm[srow] = m_cfmLimAng; - } - if(lostop == histop) - { - // limited low and high simultaneously - info->m_lowerLimit[srow] = -SIMD_INFINITY; - info->m_upperLimit[srow] = SIMD_INFINITY; - } - else if(limit == 1) - { // low limit - info->m_lowerLimit[srow] = 0; - info->m_upperLimit[srow] = SIMD_INFINITY; - } - else - { // high limit - info->m_lowerLimit[srow] = -SIMD_INFINITY; - info->m_upperLimit[srow] = 0; - } - // bounce (we'll use slider parameter abs(1.0 - m_dampingLimAng) for that) - btScalar bounce = btFabs(btScalar(1.0) - getDampingLimAng()); - if(bounce > btScalar(0.0)) - { - btScalar vel = m_rbA.getAngularVelocity().dot(ax1); - vel -= m_rbB.getAngularVelocity().dot(ax1); - // only apply bounce if the velocity is incoming, and if the - // resulting c[] exceeds what we already have. - if(limit == 1) - { // low limit - if(vel < 0) - { - btScalar newc = -bounce * vel; - if(newc > info->m_constraintError[srow]) - { - info->m_constraintError[srow] = newc; - } - } - } - else - { // high limit - all those computations are reversed - if(vel > 0) - { - btScalar newc = -bounce * vel; - if(newc < info->m_constraintError[srow]) - { - info->m_constraintError[srow] = newc; - } - } - } - } - info->m_constraintError[srow] *= getSoftnessLimAng(); - } // if(limit) - } // if angular limit or powered -} - - -///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). -///If no axis is provided, it uses the default axis for this constraint. -void btSliderConstraint::setParam(int num, btScalar value, int axis) -{ - switch(num) - { - case BT_CONSTRAINT_STOP_ERP : - if(axis < 1) - { - m_softnessLimLin = value; - m_flags |= BT_SLIDER_FLAGS_ERP_LIMLIN; - } - else if(axis < 3) - { - m_softnessOrthoLin = value; - m_flags |= BT_SLIDER_FLAGS_ERP_ORTLIN; - } - else if(axis == 3) - { - m_softnessLimAng = value; - m_flags |= BT_SLIDER_FLAGS_ERP_LIMANG; - } - else if(axis < 6) - { - m_softnessOrthoAng = value; - m_flags |= BT_SLIDER_FLAGS_ERP_ORTANG; - } - else - { - btAssertConstrParams(0); - } - break; - case BT_CONSTRAINT_CFM : - if(axis < 1) - { - m_cfmDirLin = value; - m_flags |= BT_SLIDER_FLAGS_CFM_DIRLIN; - } - else if(axis == 3) - { - m_cfmDirAng = value; - m_flags |= BT_SLIDER_FLAGS_CFM_DIRANG; - } - else - { - btAssertConstrParams(0); - } - break; - case BT_CONSTRAINT_STOP_CFM : - if(axis < 1) - { - m_cfmLimLin = value; - m_flags |= BT_SLIDER_FLAGS_CFM_LIMLIN; - } - else if(axis < 3) - { - m_cfmOrthoLin = value; - m_flags |= BT_SLIDER_FLAGS_CFM_ORTLIN; - } - else if(axis == 3) - { - m_cfmLimAng = value; - m_flags |= BT_SLIDER_FLAGS_CFM_LIMANG; - } - else if(axis < 6) - { - m_cfmOrthoAng = value; - m_flags |= BT_SLIDER_FLAGS_CFM_ORTANG; - } - else - { - btAssertConstrParams(0); - } - break; - } -} - -///return the local value of parameter -btScalar btSliderConstraint::getParam(int num, int axis) const -{ - btScalar retVal(SIMD_INFINITY); - switch(num) - { - case BT_CONSTRAINT_STOP_ERP : - if(axis < 1) - { - btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_ERP_LIMLIN); - retVal = m_softnessLimLin; - } - else if(axis < 3) - { - btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_ERP_ORTLIN); - retVal = m_softnessOrthoLin; - } - else if(axis == 3) - { - btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_ERP_LIMANG); - retVal = m_softnessLimAng; - } - else if(axis < 6) - { - btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_ERP_ORTANG); - retVal = m_softnessOrthoAng; - } - else - { - btAssertConstrParams(0); - } - break; - case BT_CONSTRAINT_CFM : - if(axis < 1) - { - btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_CFM_DIRLIN); - retVal = m_cfmDirLin; - } - else if(axis == 3) - { - btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_CFM_DIRANG); - retVal = m_cfmDirAng; - } - else - { - btAssertConstrParams(0); - } - break; - case BT_CONSTRAINT_STOP_CFM : - if(axis < 1) - { - btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_CFM_LIMLIN); - retVal = m_cfmLimLin; - } - else if(axis < 3) - { - btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_CFM_ORTLIN); - retVal = m_cfmOrthoLin; - } - else if(axis == 3) - { - btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_CFM_LIMANG); - retVal = m_cfmLimAng; - } - else if(axis < 6) - { - btAssertConstrParams(m_flags & BT_SLIDER_FLAGS_CFM_ORTANG); - retVal = m_cfmOrthoAng; - } - else - { - btAssertConstrParams(0); - } - break; - } - return retVal; -} - - - diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btSliderConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btSliderConstraint.h deleted file mode 100644 index 7d2a5022753..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btSliderConstraint.h +++ /dev/null @@ -1,321 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -/* -Added by Roman Ponomarev (rponom@gmail.com) -April 04, 2008 - -TODO: - - add clamping od accumulated impulse to improve stability - - add conversion for ODE constraint solver -*/ - -#ifndef SLIDER_CONSTRAINT_H -#define SLIDER_CONSTRAINT_H - - - -#include "LinearMath/btVector3.h" -#include "btJacobianEntry.h" -#include "btTypedConstraint.h" - - - -class btRigidBody; - - - -#define SLIDER_CONSTRAINT_DEF_SOFTNESS (btScalar(1.0)) -#define SLIDER_CONSTRAINT_DEF_DAMPING (btScalar(1.0)) -#define SLIDER_CONSTRAINT_DEF_RESTITUTION (btScalar(0.7)) -#define SLIDER_CONSTRAINT_DEF_CFM (btScalar(0.f)) - - -enum btSliderFlags -{ - BT_SLIDER_FLAGS_CFM_DIRLIN = (1 << 0), - BT_SLIDER_FLAGS_ERP_DIRLIN = (1 << 1), - BT_SLIDER_FLAGS_CFM_DIRANG = (1 << 2), - BT_SLIDER_FLAGS_ERP_DIRANG = (1 << 3), - BT_SLIDER_FLAGS_CFM_ORTLIN = (1 << 4), - BT_SLIDER_FLAGS_ERP_ORTLIN = (1 << 5), - BT_SLIDER_FLAGS_CFM_ORTANG = (1 << 6), - BT_SLIDER_FLAGS_ERP_ORTANG = (1 << 7), - BT_SLIDER_FLAGS_CFM_LIMLIN = (1 << 8), - BT_SLIDER_FLAGS_ERP_LIMLIN = (1 << 9), - BT_SLIDER_FLAGS_CFM_LIMANG = (1 << 10), - BT_SLIDER_FLAGS_ERP_LIMANG = (1 << 11) -}; - - -class btSliderConstraint : public btTypedConstraint -{ -protected: - ///for backwards compatibility during the transition to 'getInfo/getInfo2' - bool m_useSolveConstraintObsolete; - bool m_useOffsetForConstraintFrame; - btTransform m_frameInA; - btTransform m_frameInB; - // use frameA fo define limits, if true - bool m_useLinearReferenceFrameA; - // linear limits - btScalar m_lowerLinLimit; - btScalar m_upperLinLimit; - // angular limits - btScalar m_lowerAngLimit; - btScalar m_upperAngLimit; - // softness, restitution and damping for different cases - // DirLin - moving inside linear limits - // LimLin - hitting linear limit - // DirAng - moving inside angular limits - // LimAng - hitting angular limit - // OrthoLin, OrthoAng - against constraint axis - btScalar m_softnessDirLin; - btScalar m_restitutionDirLin; - btScalar m_dampingDirLin; - btScalar m_cfmDirLin; - - btScalar m_softnessDirAng; - btScalar m_restitutionDirAng; - btScalar m_dampingDirAng; - btScalar m_cfmDirAng; - - btScalar m_softnessLimLin; - btScalar m_restitutionLimLin; - btScalar m_dampingLimLin; - btScalar m_cfmLimLin; - - btScalar m_softnessLimAng; - btScalar m_restitutionLimAng; - btScalar m_dampingLimAng; - btScalar m_cfmLimAng; - - btScalar m_softnessOrthoLin; - btScalar m_restitutionOrthoLin; - btScalar m_dampingOrthoLin; - btScalar m_cfmOrthoLin; - - btScalar m_softnessOrthoAng; - btScalar m_restitutionOrthoAng; - btScalar m_dampingOrthoAng; - btScalar m_cfmOrthoAng; - - // for interlal use - bool m_solveLinLim; - bool m_solveAngLim; - - int m_flags; - - btJacobianEntry m_jacLin[3]; - btScalar m_jacLinDiagABInv[3]; - - btJacobianEntry m_jacAng[3]; - - btScalar m_timeStep; - btTransform m_calculatedTransformA; - btTransform m_calculatedTransformB; - - btVector3 m_sliderAxis; - btVector3 m_realPivotAInW; - btVector3 m_realPivotBInW; - btVector3 m_projPivotInW; - btVector3 m_delta; - btVector3 m_depth; - btVector3 m_relPosA; - btVector3 m_relPosB; - - btScalar m_linPos; - btScalar m_angPos; - - btScalar m_angDepth; - btScalar m_kAngle; - - bool m_poweredLinMotor; - btScalar m_targetLinMotorVelocity; - btScalar m_maxLinMotorForce; - btScalar m_accumulatedLinMotorImpulse; - - bool m_poweredAngMotor; - btScalar m_targetAngMotorVelocity; - btScalar m_maxAngMotorForce; - btScalar m_accumulatedAngMotorImpulse; - - //------------------------ - void initParams(); -public: - // constructors - btSliderConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA); - btSliderConstraint(btRigidBody& rbB, const btTransform& frameInB, bool useLinearReferenceFrameA); - - // overrides - - virtual void getInfo1 (btConstraintInfo1* info); - - void getInfo1NonVirtual(btConstraintInfo1* info); - - virtual void getInfo2 (btConstraintInfo2* info); - - void getInfo2NonVirtual(btConstraintInfo2* info, const btTransform& transA, const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB, btScalar rbAinvMass,btScalar rbBinvMass); - - - // access - const btRigidBody& getRigidBodyA() const { return m_rbA; } - const btRigidBody& getRigidBodyB() const { return m_rbB; } - const btTransform & getCalculatedTransformA() const { return m_calculatedTransformA; } - const btTransform & getCalculatedTransformB() const { return m_calculatedTransformB; } - const btTransform & getFrameOffsetA() const { return m_frameInA; } - const btTransform & getFrameOffsetB() const { return m_frameInB; } - btTransform & getFrameOffsetA() { return m_frameInA; } - btTransform & getFrameOffsetB() { return m_frameInB; } - btScalar getLowerLinLimit() { return m_lowerLinLimit; } - void setLowerLinLimit(btScalar lowerLimit) { m_lowerLinLimit = lowerLimit; } - btScalar getUpperLinLimit() { return m_upperLinLimit; } - void setUpperLinLimit(btScalar upperLimit) { m_upperLinLimit = upperLimit; } - btScalar getLowerAngLimit() { return m_lowerAngLimit; } - void setLowerAngLimit(btScalar lowerLimit) { m_lowerAngLimit = btNormalizeAngle(lowerLimit); } - btScalar getUpperAngLimit() { return m_upperAngLimit; } - void setUpperAngLimit(btScalar upperLimit) { m_upperAngLimit = btNormalizeAngle(upperLimit); } - bool getUseLinearReferenceFrameA() { return m_useLinearReferenceFrameA; } - btScalar getSoftnessDirLin() { return m_softnessDirLin; } - btScalar getRestitutionDirLin() { return m_restitutionDirLin; } - btScalar getDampingDirLin() { return m_dampingDirLin ; } - btScalar getSoftnessDirAng() { return m_softnessDirAng; } - btScalar getRestitutionDirAng() { return m_restitutionDirAng; } - btScalar getDampingDirAng() { return m_dampingDirAng; } - btScalar getSoftnessLimLin() { return m_softnessLimLin; } - btScalar getRestitutionLimLin() { return m_restitutionLimLin; } - btScalar getDampingLimLin() { return m_dampingLimLin; } - btScalar getSoftnessLimAng() { return m_softnessLimAng; } - btScalar getRestitutionLimAng() { return m_restitutionLimAng; } - btScalar getDampingLimAng() { return m_dampingLimAng; } - btScalar getSoftnessOrthoLin() { return m_softnessOrthoLin; } - btScalar getRestitutionOrthoLin() { return m_restitutionOrthoLin; } - btScalar getDampingOrthoLin() { return m_dampingOrthoLin; } - btScalar getSoftnessOrthoAng() { return m_softnessOrthoAng; } - btScalar getRestitutionOrthoAng() { return m_restitutionOrthoAng; } - btScalar getDampingOrthoAng() { return m_dampingOrthoAng; } - void setSoftnessDirLin(btScalar softnessDirLin) { m_softnessDirLin = softnessDirLin; } - void setRestitutionDirLin(btScalar restitutionDirLin) { m_restitutionDirLin = restitutionDirLin; } - void setDampingDirLin(btScalar dampingDirLin) { m_dampingDirLin = dampingDirLin; } - void setSoftnessDirAng(btScalar softnessDirAng) { m_softnessDirAng = softnessDirAng; } - void setRestitutionDirAng(btScalar restitutionDirAng) { m_restitutionDirAng = restitutionDirAng; } - void setDampingDirAng(btScalar dampingDirAng) { m_dampingDirAng = dampingDirAng; } - void setSoftnessLimLin(btScalar softnessLimLin) { m_softnessLimLin = softnessLimLin; } - void setRestitutionLimLin(btScalar restitutionLimLin) { m_restitutionLimLin = restitutionLimLin; } - void setDampingLimLin(btScalar dampingLimLin) { m_dampingLimLin = dampingLimLin; } - void setSoftnessLimAng(btScalar softnessLimAng) { m_softnessLimAng = softnessLimAng; } - void setRestitutionLimAng(btScalar restitutionLimAng) { m_restitutionLimAng = restitutionLimAng; } - void setDampingLimAng(btScalar dampingLimAng) { m_dampingLimAng = dampingLimAng; } - void setSoftnessOrthoLin(btScalar softnessOrthoLin) { m_softnessOrthoLin = softnessOrthoLin; } - void setRestitutionOrthoLin(btScalar restitutionOrthoLin) { m_restitutionOrthoLin = restitutionOrthoLin; } - void setDampingOrthoLin(btScalar dampingOrthoLin) { m_dampingOrthoLin = dampingOrthoLin; } - void setSoftnessOrthoAng(btScalar softnessOrthoAng) { m_softnessOrthoAng = softnessOrthoAng; } - void setRestitutionOrthoAng(btScalar restitutionOrthoAng) { m_restitutionOrthoAng = restitutionOrthoAng; } - void setDampingOrthoAng(btScalar dampingOrthoAng) { m_dampingOrthoAng = dampingOrthoAng; } - void setPoweredLinMotor(bool onOff) { m_poweredLinMotor = onOff; } - bool getPoweredLinMotor() { return m_poweredLinMotor; } - void setTargetLinMotorVelocity(btScalar targetLinMotorVelocity) { m_targetLinMotorVelocity = targetLinMotorVelocity; } - btScalar getTargetLinMotorVelocity() { return m_targetLinMotorVelocity; } - void setMaxLinMotorForce(btScalar maxLinMotorForce) { m_maxLinMotorForce = maxLinMotorForce; } - btScalar getMaxLinMotorForce() { return m_maxLinMotorForce; } - void setPoweredAngMotor(bool onOff) { m_poweredAngMotor = onOff; } - bool getPoweredAngMotor() { return m_poweredAngMotor; } - void setTargetAngMotorVelocity(btScalar targetAngMotorVelocity) { m_targetAngMotorVelocity = targetAngMotorVelocity; } - btScalar getTargetAngMotorVelocity() { return m_targetAngMotorVelocity; } - void setMaxAngMotorForce(btScalar maxAngMotorForce) { m_maxAngMotorForce = maxAngMotorForce; } - btScalar getMaxAngMotorForce() { return m_maxAngMotorForce; } - btScalar getLinearPos() { return m_linPos; } - - - // access for ODE solver - bool getSolveLinLimit() { return m_solveLinLim; } - btScalar getLinDepth() { return m_depth[0]; } - bool getSolveAngLimit() { return m_solveAngLim; } - btScalar getAngDepth() { return m_angDepth; } - // shared code used by ODE solver - void calculateTransforms(const btTransform& transA,const btTransform& transB); - void testLinLimits(); - void testAngLimits(); - // access for PE Solver - btVector3 getAncorInA(); - btVector3 getAncorInB(); - // access for UseFrameOffset - bool getUseFrameOffset() { return m_useOffsetForConstraintFrame; } - void setUseFrameOffset(bool frameOffsetOnOff) { m_useOffsetForConstraintFrame = frameOffsetOnOff; } - - ///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). - ///If no axis is provided, it uses the default axis for this constraint. - virtual void setParam(int num, btScalar value, int axis = -1); - ///return the local value of parameter - virtual btScalar getParam(int num, int axis = -1) const; - - virtual int calculateSerializeBufferSize() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; - - -}; - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btSliderConstraintData -{ - btTypedConstraintData m_typeConstraintData; - btTransformFloatData m_rbAFrame; // constraint axii. Assumes z is hinge axis. - btTransformFloatData m_rbBFrame; - - float m_linearUpperLimit; - float m_linearLowerLimit; - - float m_angularUpperLimit; - float m_angularLowerLimit; - - int m_useLinearReferenceFrameA; - int m_useOffsetForConstraintFrame; - -}; - - -SIMD_FORCE_INLINE int btSliderConstraint::calculateSerializeBufferSize() const -{ - return sizeof(btSliderConstraintData); -} - - ///fills the dataBuffer and returns the struct name (and 0 on failure) -SIMD_FORCE_INLINE const char* btSliderConstraint::serialize(void* dataBuffer, btSerializer* serializer) const -{ - - btSliderConstraintData* sliderData = (btSliderConstraintData*) dataBuffer; - btTypedConstraint::serialize(&sliderData->m_typeConstraintData,serializer); - - m_frameInA.serializeFloat(sliderData->m_rbAFrame); - m_frameInB.serializeFloat(sliderData->m_rbBFrame); - - sliderData->m_linearUpperLimit = float(m_upperLinLimit); - sliderData->m_linearLowerLimit = float(m_lowerLinLimit); - - sliderData->m_angularUpperLimit = float(m_upperAngLimit); - sliderData->m_angularLowerLimit = float(m_lowerAngLimit); - - sliderData->m_useLinearReferenceFrameA = m_useLinearReferenceFrameA; - sliderData->m_useOffsetForConstraintFrame = m_useOffsetForConstraintFrame; - - return "btSliderConstraintData"; -} - - - -#endif //SLIDER_CONSTRAINT_H - diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp deleted file mode 100644 index 0c7dbd668bb..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp +++ /dev/null @@ -1,255 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#include "btSolve2LinearConstraint.h" - -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include "LinearMath/btVector3.h" -#include "btJacobianEntry.h" - - -void btSolve2LinearConstraint::resolveUnilateralPairConstraint( - btRigidBody* body1, - btRigidBody* body2, - - const btMatrix3x3& world2A, - const btMatrix3x3& world2B, - - const btVector3& invInertiaADiag, - const btScalar invMassA, - const btVector3& linvelA,const btVector3& angvelA, - const btVector3& rel_posA1, - const btVector3& invInertiaBDiag, - const btScalar invMassB, - const btVector3& linvelB,const btVector3& angvelB, - const btVector3& rel_posA2, - - btScalar depthA, const btVector3& normalA, - const btVector3& rel_posB1,const btVector3& rel_posB2, - btScalar depthB, const btVector3& normalB, - btScalar& imp0,btScalar& imp1) -{ - (void)linvelA; - (void)linvelB; - (void)angvelB; - (void)angvelA; - - - - imp0 = btScalar(0.); - imp1 = btScalar(0.); - - btScalar len = btFabs(normalA.length()) - btScalar(1.); - if (btFabs(len) >= SIMD_EPSILON) - return; - - btAssert(len < SIMD_EPSILON); - - - //this jacobian entry could be re-used for all iterations - btJacobianEntry jacA(world2A,world2B,rel_posA1,rel_posA2,normalA,invInertiaADiag,invMassA, - invInertiaBDiag,invMassB); - btJacobianEntry jacB(world2A,world2B,rel_posB1,rel_posB2,normalB,invInertiaADiag,invMassA, - invInertiaBDiag,invMassB); - - //const btScalar vel0 = jacA.getRelativeVelocity(linvelA,angvelA,linvelB,angvelB); - //const btScalar vel1 = jacB.getRelativeVelocity(linvelA,angvelA,linvelB,angvelB); - - const btScalar vel0 = normalA.dot(body1->getVelocityInLocalPoint(rel_posA1)-body2->getVelocityInLocalPoint(rel_posA1)); - const btScalar vel1 = normalB.dot(body1->getVelocityInLocalPoint(rel_posB1)-body2->getVelocityInLocalPoint(rel_posB1)); - -// btScalar penetrationImpulse = (depth*contactTau*timeCorrection) * massTerm;//jacDiagABInv - btScalar massTerm = btScalar(1.) / (invMassA + invMassB); - - - // calculate rhs (or error) terms - const btScalar dv0 = depthA * m_tau * massTerm - vel0 * m_damping; - const btScalar dv1 = depthB * m_tau * massTerm - vel1 * m_damping; - - - // dC/dv * dv = -C - - // jacobian * impulse = -error - // - - //impulse = jacobianInverse * -error - - // inverting 2x2 symmetric system (offdiagonal are equal!) - // - - - btScalar nonDiag = jacA.getNonDiagonal(jacB,invMassA,invMassB); - btScalar invDet = btScalar(1.0) / (jacA.getDiagonal() * jacB.getDiagonal() - nonDiag * nonDiag ); - - //imp0 = dv0 * jacA.getDiagonal() * invDet + dv1 * -nonDiag * invDet; - //imp1 = dv1 * jacB.getDiagonal() * invDet + dv0 * - nonDiag * invDet; - - imp0 = dv0 * jacA.getDiagonal() * invDet + dv1 * -nonDiag * invDet; - imp1 = dv1 * jacB.getDiagonal() * invDet + dv0 * - nonDiag * invDet; - - //[a b] [d -c] - //[c d] inverse = (1 / determinant) * [-b a] where determinant is (ad - bc) - - //[jA nD] * [imp0] = [dv0] - //[nD jB] [imp1] [dv1] - -} - - - -void btSolve2LinearConstraint::resolveBilateralPairConstraint( - btRigidBody* body1, - btRigidBody* body2, - const btMatrix3x3& world2A, - const btMatrix3x3& world2B, - - const btVector3& invInertiaADiag, - const btScalar invMassA, - const btVector3& linvelA,const btVector3& angvelA, - const btVector3& rel_posA1, - const btVector3& invInertiaBDiag, - const btScalar invMassB, - const btVector3& linvelB,const btVector3& angvelB, - const btVector3& rel_posA2, - - btScalar depthA, const btVector3& normalA, - const btVector3& rel_posB1,const btVector3& rel_posB2, - btScalar depthB, const btVector3& normalB, - btScalar& imp0,btScalar& imp1) -{ - - (void)linvelA; - (void)linvelB; - (void)angvelA; - (void)angvelB; - - - - imp0 = btScalar(0.); - imp1 = btScalar(0.); - - btScalar len = btFabs(normalA.length()) - btScalar(1.); - if (btFabs(len) >= SIMD_EPSILON) - return; - - btAssert(len < SIMD_EPSILON); - - - //this jacobian entry could be re-used for all iterations - btJacobianEntry jacA(world2A,world2B,rel_posA1,rel_posA2,normalA,invInertiaADiag,invMassA, - invInertiaBDiag,invMassB); - btJacobianEntry jacB(world2A,world2B,rel_posB1,rel_posB2,normalB,invInertiaADiag,invMassA, - invInertiaBDiag,invMassB); - - //const btScalar vel0 = jacA.getRelativeVelocity(linvelA,angvelA,linvelB,angvelB); - //const btScalar vel1 = jacB.getRelativeVelocity(linvelA,angvelA,linvelB,angvelB); - - const btScalar vel0 = normalA.dot(body1->getVelocityInLocalPoint(rel_posA1)-body2->getVelocityInLocalPoint(rel_posA1)); - const btScalar vel1 = normalB.dot(body1->getVelocityInLocalPoint(rel_posB1)-body2->getVelocityInLocalPoint(rel_posB1)); - - // calculate rhs (or error) terms - const btScalar dv0 = depthA * m_tau - vel0 * m_damping; - const btScalar dv1 = depthB * m_tau - vel1 * m_damping; - - // dC/dv * dv = -C - - // jacobian * impulse = -error - // - - //impulse = jacobianInverse * -error - - // inverting 2x2 symmetric system (offdiagonal are equal!) - // - - - btScalar nonDiag = jacA.getNonDiagonal(jacB,invMassA,invMassB); - btScalar invDet = btScalar(1.0) / (jacA.getDiagonal() * jacB.getDiagonal() - nonDiag * nonDiag ); - - //imp0 = dv0 * jacA.getDiagonal() * invDet + dv1 * -nonDiag * invDet; - //imp1 = dv1 * jacB.getDiagonal() * invDet + dv0 * - nonDiag * invDet; - - imp0 = dv0 * jacA.getDiagonal() * invDet + dv1 * -nonDiag * invDet; - imp1 = dv1 * jacB.getDiagonal() * invDet + dv0 * - nonDiag * invDet; - - //[a b] [d -c] - //[c d] inverse = (1 / determinant) * [-b a] where determinant is (ad - bc) - - //[jA nD] * [imp0] = [dv0] - //[nD jB] [imp1] [dv1] - - if ( imp0 > btScalar(0.0)) - { - if ( imp1 > btScalar(0.0) ) - { - //both positive - } - else - { - imp1 = btScalar(0.); - - // now imp0>0 imp1<0 - imp0 = dv0 / jacA.getDiagonal(); - if ( imp0 > btScalar(0.0) ) - { - } else - { - imp0 = btScalar(0.); - } - } - } - else - { - imp0 = btScalar(0.); - - imp1 = dv1 / jacB.getDiagonal(); - if ( imp1 <= btScalar(0.0) ) - { - imp1 = btScalar(0.); - // now imp0>0 imp1<0 - imp0 = dv0 / jacA.getDiagonal(); - if ( imp0 > btScalar(0.0) ) - { - } else - { - imp0 = btScalar(0.); - } - } else - { - } - } -} - - -/* -void btSolve2LinearConstraint::resolveAngularConstraint( const btMatrix3x3& invInertiaAWS, - const btScalar invMassA, - const btVector3& linvelA,const btVector3& angvelA, - const btVector3& rel_posA1, - const btMatrix3x3& invInertiaBWS, - const btScalar invMassB, - const btVector3& linvelB,const btVector3& angvelB, - const btVector3& rel_posA2, - - btScalar depthA, const btVector3& normalA, - const btVector3& rel_posB1,const btVector3& rel_posB2, - btScalar depthB, const btVector3& normalB, - btScalar& imp0,btScalar& imp1) -{ - -} -*/ - diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h deleted file mode 100644 index 057d3fac827..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h +++ /dev/null @@ -1,107 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef SOLVE_2LINEAR_CONSTRAINT_H -#define SOLVE_2LINEAR_CONSTRAINT_H - -#include "LinearMath/btMatrix3x3.h" -#include "LinearMath/btVector3.h" - - -class btRigidBody; - - - -/// constraint class used for lateral tyre friction. -class btSolve2LinearConstraint -{ - btScalar m_tau; - btScalar m_damping; - -public: - - btSolve2LinearConstraint(btScalar tau,btScalar damping) - { - m_tau = tau; - m_damping = damping; - } - // - // solve unilateral constraint (equality, direct method) - // - void resolveUnilateralPairConstraint( - btRigidBody* body0, - btRigidBody* body1, - - const btMatrix3x3& world2A, - const btMatrix3x3& world2B, - - const btVector3& invInertiaADiag, - const btScalar invMassA, - const btVector3& linvelA,const btVector3& angvelA, - const btVector3& rel_posA1, - const btVector3& invInertiaBDiag, - const btScalar invMassB, - const btVector3& linvelB,const btVector3& angvelB, - const btVector3& rel_posA2, - - btScalar depthA, const btVector3& normalA, - const btVector3& rel_posB1,const btVector3& rel_posB2, - btScalar depthB, const btVector3& normalB, - btScalar& imp0,btScalar& imp1); - - - // - // solving 2x2 lcp problem (inequality, direct solution ) - // - void resolveBilateralPairConstraint( - btRigidBody* body0, - btRigidBody* body1, - const btMatrix3x3& world2A, - const btMatrix3x3& world2B, - - const btVector3& invInertiaADiag, - const btScalar invMassA, - const btVector3& linvelA,const btVector3& angvelA, - const btVector3& rel_posA1, - const btVector3& invInertiaBDiag, - const btScalar invMassB, - const btVector3& linvelB,const btVector3& angvelB, - const btVector3& rel_posA2, - - btScalar depthA, const btVector3& normalA, - const btVector3& rel_posB1,const btVector3& rel_posB2, - btScalar depthB, const btVector3& normalB, - btScalar& imp0,btScalar& imp1); - -/* - void resolveAngularConstraint( const btMatrix3x3& invInertiaAWS, - const btScalar invMassA, - const btVector3& linvelA,const btVector3& angvelA, - const btVector3& rel_posA1, - const btMatrix3x3& invInertiaBWS, - const btScalar invMassB, - const btVector3& linvelB,const btVector3& angvelB, - const btVector3& rel_posA2, - - btScalar depthA, const btVector3& normalA, - const btVector3& rel_posB1,const btVector3& rel_posB2, - btScalar depthB, const btVector3& normalB, - btScalar& imp0,btScalar& imp1); - -*/ - -}; - -#endif //SOLVE_2LINEAR_CONSTRAINT_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btSolverBody.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btSolverBody.h deleted file mode 100644 index 8de515812ee..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btSolverBody.h +++ /dev/null @@ -1,191 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BT_SOLVER_BODY_H -#define BT_SOLVER_BODY_H - -class btRigidBody; -#include "LinearMath/btVector3.h" -#include "LinearMath/btMatrix3x3.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include "LinearMath/btAlignedAllocator.h" -#include "LinearMath/btTransformUtil.h" - -///Until we get other contributions, only use SIMD on Windows, when using Visual Studio 2008 or later, and not double precision -#ifdef BT_USE_SSE -#define USE_SIMD 1 -#endif // - - -#ifdef USE_SIMD - -struct btSimdScalar -{ - SIMD_FORCE_INLINE btSimdScalar() - { - - } - - SIMD_FORCE_INLINE btSimdScalar(float fl) - :m_vec128 (_mm_set1_ps(fl)) - { - } - - SIMD_FORCE_INLINE btSimdScalar(__m128 v128) - :m_vec128(v128) - { - } - union - { - __m128 m_vec128; - float m_floats[4]; - int m_ints[4]; - btScalar m_unusedPadding; - }; - SIMD_FORCE_INLINE __m128 get128() - { - return m_vec128; - } - - SIMD_FORCE_INLINE const __m128 get128() const - { - return m_vec128; - } - - SIMD_FORCE_INLINE void set128(__m128 v128) - { - m_vec128 = v128; - } - - SIMD_FORCE_INLINE operator __m128() - { - return m_vec128; - } - SIMD_FORCE_INLINE operator const __m128() const - { - return m_vec128; - } - - SIMD_FORCE_INLINE operator float() const - { - return m_floats[0]; - } - -}; - -///@brief Return the elementwise product of two btSimdScalar -SIMD_FORCE_INLINE btSimdScalar -operator*(const btSimdScalar& v1, const btSimdScalar& v2) -{ - return btSimdScalar(_mm_mul_ps(v1.get128(),v2.get128())); -} - -///@brief Return the elementwise product of two btSimdScalar -SIMD_FORCE_INLINE btSimdScalar -operator+(const btSimdScalar& v1, const btSimdScalar& v2) -{ - return btSimdScalar(_mm_add_ps(v1.get128(),v2.get128())); -} - - -#else -#define btSimdScalar btScalar -#endif - -///The btSolverBody is an internal datastructure for the constraint solver. Only necessary data is packed to increase cache coherence/performance. -ATTRIBUTE_ALIGNED64 (struct) btSolverBodyObsolete -{ - BT_DECLARE_ALIGNED_ALLOCATOR(); - btVector3 m_deltaLinearVelocity; - btVector3 m_deltaAngularVelocity; - btVector3 m_angularFactor; - btVector3 m_invMass; - btRigidBody* m_originalBody; - btVector3 m_pushVelocity; - btVector3 m_turnVelocity; - - - SIMD_FORCE_INLINE void getVelocityInLocalPointObsolete(const btVector3& rel_pos, btVector3& velocity ) const - { - if (m_originalBody) - velocity = m_originalBody->getLinearVelocity()+m_deltaLinearVelocity + (m_originalBody->getAngularVelocity()+m_deltaAngularVelocity).cross(rel_pos); - else - velocity.setValue(0,0,0); - } - - SIMD_FORCE_INLINE void getAngularVelocity(btVector3& angVel) const - { - if (m_originalBody) - angVel = m_originalBody->getAngularVelocity()+m_deltaAngularVelocity; - else - angVel.setValue(0,0,0); - } - - - //Optimization for the iterative solver: avoid calculating constant terms involving inertia, normal, relative position - SIMD_FORCE_INLINE void applyImpulse(const btVector3& linearComponent, const btVector3& angularComponent,const btScalar impulseMagnitude) - { - //if (m_invMass) - { - m_deltaLinearVelocity += linearComponent*impulseMagnitude; - m_deltaAngularVelocity += angularComponent*(impulseMagnitude*m_angularFactor); - } - } - - SIMD_FORCE_INLINE void internalApplyPushImpulse(const btVector3& linearComponent, const btVector3& angularComponent,btScalar impulseMagnitude) - { - if (m_originalBody) - { - m_pushVelocity += linearComponent*impulseMagnitude; - m_turnVelocity += angularComponent*(impulseMagnitude*m_angularFactor); - } - } - - void writebackVelocity() - { - if (m_originalBody) - { - m_originalBody->setLinearVelocity(m_originalBody->getLinearVelocity()+ m_deltaLinearVelocity); - m_originalBody->setAngularVelocity(m_originalBody->getAngularVelocity()+m_deltaAngularVelocity); - - //m_originalBody->setCompanionId(-1); - } - } - - - void writebackVelocity(btScalar timeStep) - { - (void) timeStep; - if (m_originalBody) - { - m_originalBody->setLinearVelocity(m_originalBody->getLinearVelocity()+ m_deltaLinearVelocity); - m_originalBody->setAngularVelocity(m_originalBody->getAngularVelocity()+m_deltaAngularVelocity); - - //correct the position/orientation based on push/turn recovery - btTransform newTransform; - btTransformUtil::integrateTransform(m_originalBody->getWorldTransform(),m_pushVelocity,m_turnVelocity,timeStep,newTransform); - m_originalBody->setWorldTransform(newTransform); - - //m_originalBody->setCompanionId(-1); - } - } - - - -}; - -#endif //BT_SOLVER_BODY_H - - diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btSolverConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btSolverConstraint.h deleted file mode 100644 index 929cf6d3ee3..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btSolverConstraint.h +++ /dev/null @@ -1,96 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BT_SOLVER_CONSTRAINT_H -#define BT_SOLVER_CONSTRAINT_H - -class btRigidBody; -#include "LinearMath/btVector3.h" -#include "LinearMath/btMatrix3x3.h" -#include "btJacobianEntry.h" - -//#define NO_FRICTION_TANGENTIALS 1 -#include "btSolverBody.h" - - -///1D constraint along a normal axis between bodyA and bodyB. It can be combined to solve contact and friction constraints. -ATTRIBUTE_ALIGNED64 (struct) btSolverConstraint -{ - BT_DECLARE_ALIGNED_ALLOCATOR(); - - btVector3 m_relpos1CrossNormal; - btVector3 m_contactNormal; - - btVector3 m_relpos2CrossNormal; - //btVector3 m_contactNormal2;//usually m_contactNormal2 == -m_contactNormal - - btVector3 m_angularComponentA; - btVector3 m_angularComponentB; - - mutable btSimdScalar m_appliedPushImpulse; - mutable btSimdScalar m_appliedImpulse; - - - btScalar m_friction; - btScalar m_jacDiagABInv; - union - { - int m_numConsecutiveRowsPerKernel; - btScalar m_unusedPadding0; - }; - - union - { - int m_frictionIndex; - btScalar m_unusedPadding1; - }; - union - { - btRigidBody* m_solverBodyA; - btScalar m_unusedPadding2; - }; - union - { - btRigidBody* m_solverBodyB; - btScalar m_unusedPadding3; - }; - - union - { - void* m_originalContactPoint; - btScalar m_unusedPadding4; - }; - - btScalar m_rhs; - btScalar m_cfm; - btScalar m_lowerLimit; - btScalar m_upperLimit; - - btScalar m_rhsPenetration; - - enum btSolverConstraintType - { - BT_SOLVER_CONTACT_1D = 0, - BT_SOLVER_FRICTION_1D - }; -}; - -typedef btAlignedObjectArray btConstraintArray; - - -#endif //BT_SOLVER_CONSTRAINT_H - - - diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp deleted file mode 100644 index e7c94b19308..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp +++ /dev/null @@ -1,136 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btTypedConstraint.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include "LinearMath/btSerializer.h" - - -#define DEFAULT_DEBUGDRAW_SIZE btScalar(0.3f) - -btTypedConstraint::btTypedConstraint(btTypedConstraintType type, btRigidBody& rbA) -:btTypedObject(type), -m_userConstraintType(-1), -m_userConstraintId(-1), -m_needsFeedback(false), -m_rbA(rbA), -m_rbB(getFixedBody()), -m_appliedImpulse(btScalar(0.)), -m_dbgDrawSize(DEFAULT_DEBUGDRAW_SIZE) -{ -} - - -btTypedConstraint::btTypedConstraint(btTypedConstraintType type, btRigidBody& rbA,btRigidBody& rbB) -:btTypedObject(type), -m_userConstraintType(-1), -m_userConstraintId(-1), -m_needsFeedback(false), -m_rbA(rbA), -m_rbB(rbB), -m_appliedImpulse(btScalar(0.)), -m_dbgDrawSize(DEFAULT_DEBUGDRAW_SIZE) -{ -} - - - - -btScalar btTypedConstraint::getMotorFactor(btScalar pos, btScalar lowLim, btScalar uppLim, btScalar vel, btScalar timeFact) -{ - if(lowLim > uppLim) - { - return btScalar(1.0f); - } - else if(lowLim == uppLim) - { - return btScalar(0.0f); - } - btScalar lim_fact = btScalar(1.0f); - btScalar delta_max = vel / timeFact; - if(delta_max < btScalar(0.0f)) - { - if((pos >= lowLim) && (pos < (lowLim - delta_max))) - { - lim_fact = (lowLim - pos) / delta_max; - } - else if(pos < lowLim) - { - lim_fact = btScalar(0.0f); - } - else - { - lim_fact = btScalar(1.0f); - } - } - else if(delta_max > btScalar(0.0f)) - { - if((pos <= uppLim) && (pos > (uppLim - delta_max))) - { - lim_fact = (uppLim - pos) / delta_max; - } - else if(pos > uppLim) - { - lim_fact = btScalar(0.0f); - } - else - { - lim_fact = btScalar(1.0f); - } - } - else - { - lim_fact = btScalar(0.0f); - } - return lim_fact; -} - -///fills the dataBuffer and returns the struct name (and 0 on failure) -const char* btTypedConstraint::serialize(void* dataBuffer, btSerializer* serializer) const -{ - btTypedConstraintData* tcd = (btTypedConstraintData*) dataBuffer; - - tcd->m_rbA = (btRigidBodyData*)serializer->getUniquePointer(&m_rbA); - tcd->m_rbB = (btRigidBodyData*)serializer->getUniquePointer(&m_rbB); - char* name = (char*) serializer->findNameForPointer(this); - tcd->m_name = (char*)serializer->getUniquePointer(name); - if (tcd->m_name) - { - serializer->serializeName(name); - } - - tcd->m_objectType = m_objectType; - tcd->m_needsFeedback = m_needsFeedback; - tcd->m_userConstraintId =m_userConstraintId; - tcd->m_userConstraintType =m_userConstraintType; - - tcd->m_appliedImpulse = float(m_appliedImpulse); - tcd->m_dbgDrawSize = float(m_dbgDrawSize ); - - tcd->m_disableCollisionsBetweenLinkedBodies = false; - - int i; - for (i=0;im_disableCollisionsBetweenLinkedBodies = true; - for (i=0;im_disableCollisionsBetweenLinkedBodies = true; - - return "btTypedConstraintData"; -} - - diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btTypedConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btTypedConstraint.h deleted file mode 100644 index b24dc4a40ed..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btTypedConstraint.h +++ /dev/null @@ -1,302 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2010 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef TYPED_CONSTRAINT_H -#define TYPED_CONSTRAINT_H - -class btRigidBody; -#include "LinearMath/btScalar.h" -#include "btSolverConstraint.h" -#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" - -class btSerializer; - -enum btTypedConstraintType -{ - POINT2POINT_CONSTRAINT_TYPE=MAX_CONTACT_MANIFOLD_TYPE+1, - HINGE_CONSTRAINT_TYPE, - CONETWIST_CONSTRAINT_TYPE, - D6_CONSTRAINT_TYPE, - SLIDER_CONSTRAINT_TYPE, - CONTACT_CONSTRAINT_TYPE -}; - - -enum btConstraintParams -{ - BT_CONSTRAINT_ERP=1, - BT_CONSTRAINT_STOP_ERP, - BT_CONSTRAINT_CFM, - BT_CONSTRAINT_STOP_CFM -}; - -#if 1 - #define btAssertConstrParams(_par) btAssert(_par) -#else - #define btAssertConstrParams(_par) -#endif - - -///TypedConstraint is the baseclass for Bullet constraints and vehicles -class btTypedConstraint : public btTypedObject -{ - int m_userConstraintType; - int m_userConstraintId; - bool m_needsFeedback; - - btTypedConstraint& operator=(btTypedConstraint& other) - { - btAssert(0); - (void) other; - return *this; - } - -protected: - btRigidBody& m_rbA; - btRigidBody& m_rbB; - btScalar m_appliedImpulse; - btScalar m_dbgDrawSize; - - ///internal method used by the constraint solver, don't use them directly - btScalar getMotorFactor(btScalar pos, btScalar lowLim, btScalar uppLim, btScalar vel, btScalar timeFact); - - static btRigidBody& getFixedBody() - { - static btRigidBody s_fixed(0, 0,0); - s_fixed.setMassProps(btScalar(0.),btVector3(btScalar(0.),btScalar(0.),btScalar(0.))); - return s_fixed; - } - - -public: - - virtual ~btTypedConstraint() {}; - btTypedConstraint(btTypedConstraintType type, btRigidBody& rbA); - btTypedConstraint(btTypedConstraintType type, btRigidBody& rbA,btRigidBody& rbB); - - struct btConstraintInfo1 { - int m_numConstraintRows,nub; - }; - - struct btConstraintInfo2 { - // integrator parameters: frames per second (1/stepsize), default error - // reduction parameter (0..1). - btScalar fps,erp; - - // for the first and second body, pointers to two (linear and angular) - // n*3 jacobian sub matrices, stored by rows. these matrices will have - // been initialized to 0 on entry. if the second body is zero then the - // J2xx pointers may be 0. - btScalar *m_J1linearAxis,*m_J1angularAxis,*m_J2linearAxis,*m_J2angularAxis; - - // elements to jump from one row to the next in J's - int rowskip; - - // right hand sides of the equation J*v = c + cfm * lambda. cfm is the - // "constraint force mixing" vector. c is set to zero on entry, cfm is - // set to a constant value (typically very small or zero) value on entry. - btScalar *m_constraintError,*cfm; - - // lo and hi limits for variables (set to -/+ infinity on entry). - btScalar *m_lowerLimit,*m_upperLimit; - - // findex vector for variables. see the LCP solver interface for a - // description of what this does. this is set to -1 on entry. - // note that the returned indexes are relative to the first index of - // the constraint. - int *findex; - // number of solver iterations - int m_numIterations; - }; - - ///internal method used by the constraint solver, don't use them directly - virtual void buildJacobian() {}; - - ///internal method used by the constraint solver, don't use them directly - virtual void setupSolverConstraint(btConstraintArray& ca, int solverBodyA,int solverBodyB, btScalar timeStep) - { - (void)ca; - (void)solverBodyA; - (void)solverBodyB; - (void)timeStep; - } - - ///internal method used by the constraint solver, don't use them directly - virtual void getInfo1 (btConstraintInfo1* info)=0; - - ///internal method used by the constraint solver, don't use them directly - virtual void getInfo2 (btConstraintInfo2* info)=0; - - ///internal method used by the constraint solver, don't use them directly - void internalSetAppliedImpulse(btScalar appliedImpulse) - { - m_appliedImpulse = appliedImpulse; - } - ///internal method used by the constraint solver, don't use them directly - btScalar internalGetAppliedImpulse() - { - return m_appliedImpulse; - } - - ///internal method used by the constraint solver, don't use them directly - virtual void solveConstraintObsolete(btRigidBody& bodyA,btRigidBody& bodyB,btScalar timeStep) {}; - - - const btRigidBody& getRigidBodyA() const - { - return m_rbA; - } - const btRigidBody& getRigidBodyB() const - { - return m_rbB; - } - - btRigidBody& getRigidBodyA() - { - return m_rbA; - } - btRigidBody& getRigidBodyB() - { - return m_rbB; - } - - int getUserConstraintType() const - { - return m_userConstraintType ; - } - - void setUserConstraintType(int userConstraintType) - { - m_userConstraintType = userConstraintType; - }; - - void setUserConstraintId(int uid) - { - m_userConstraintId = uid; - } - - int getUserConstraintId() const - { - return m_userConstraintId; - } - - int getUid() const - { - return m_userConstraintId; - } - - bool needsFeedback() const - { - return m_needsFeedback; - } - - ///enableFeedback will allow to read the applied linear and angular impulse - ///use getAppliedImpulse, getAppliedLinearImpulse and getAppliedAngularImpulse to read feedback information - void enableFeedback(bool needsFeedback) - { - m_needsFeedback = needsFeedback; - } - - ///getAppliedImpulse is an estimated total applied impulse. - ///This feedback could be used to determine breaking constraints or playing sounds. - btScalar getAppliedImpulse() const - { - btAssert(m_needsFeedback); - return m_appliedImpulse; - } - - btTypedConstraintType getConstraintType () const - { - return btTypedConstraintType(m_objectType); - } - - void setDbgDrawSize(btScalar dbgDrawSize) - { - m_dbgDrawSize = dbgDrawSize; - } - btScalar getDbgDrawSize() - { - return m_dbgDrawSize; - } - - ///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). - ///If no axis is provided, it uses the default axis for this constraint. - virtual void setParam(int num, btScalar value, int axis = -1) = 0; - - ///return the local value of parameter - virtual btScalar getParam(int num, int axis = -1) const = 0; - - virtual int calculateSerializeBufferSize() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const; - -}; - -// returns angle in range [-SIMD_2_PI, SIMD_2_PI], closest to one of the limits -// all arguments should be normalized angles (i.e. in range [-SIMD_PI, SIMD_PI]) -SIMD_FORCE_INLINE btScalar btAdjustAngleToLimits(btScalar angleInRadians, btScalar angleLowerLimitInRadians, btScalar angleUpperLimitInRadians) -{ - if(angleLowerLimitInRadians >= angleUpperLimitInRadians) - { - return angleInRadians; - } - else if(angleInRadians < angleLowerLimitInRadians) - { - btScalar diffLo = btNormalizeAngle(angleLowerLimitInRadians - angleInRadians); // this is positive - btScalar diffHi = btFabs(btNormalizeAngle(angleUpperLimitInRadians - angleInRadians)); - return (diffLo < diffHi) ? angleInRadians : (angleInRadians + SIMD_2_PI); - } - else if(angleInRadians > angleUpperLimitInRadians) - { - btScalar diffHi = btNormalizeAngle(angleInRadians - angleUpperLimitInRadians); // this is positive - btScalar diffLo = btFabs(btNormalizeAngle(angleInRadians - angleLowerLimitInRadians)); - return (diffLo < diffHi) ? (angleInRadians - SIMD_2_PI) : angleInRadians; - } - else - { - return angleInRadians; - } -} - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btTypedConstraintData -{ - btRigidBodyData *m_rbA; - btRigidBodyData *m_rbB; - char *m_name; - - int m_objectType; - int m_userConstraintType; - int m_userConstraintId; - int m_needsFeedback; - - float m_appliedImpulse; - float m_dbgDrawSize; - - int m_disableCollisionsBetweenLinkedBodies; - char m_pad4[4]; - -}; - -SIMD_FORCE_INLINE int btTypedConstraint::calculateSerializeBufferSize() const -{ - return sizeof(btTypedConstraintData); -} - - - - -#endif //TYPED_CONSTRAINT_H diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp b/extern/bullet2/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp deleted file mode 100644 index 3a4c2afa642..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org -Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#include "btUniversalConstraint.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include "LinearMath/btTransformUtil.h" - - - -#define UNIV_EPS btScalar(0.01f) - - -// constructor -// anchor, axis1 and axis2 are in world coordinate system -// axis1 must be orthogonal to axis2 -btUniversalConstraint::btUniversalConstraint(btRigidBody& rbA, btRigidBody& rbB, btVector3& anchor, btVector3& axis1, btVector3& axis2) -: btGeneric6DofConstraint(rbA, rbB, btTransform::getIdentity(), btTransform::getIdentity(), true), - m_anchor(anchor), - m_axis1(axis1), - m_axis2(axis2) -{ - // build frame basis - // 6DOF constraint uses Euler angles and to define limits - // it is assumed that rotational order is : - // Z - first, allowed limits are (-PI,PI); - // new position of Y - second (allowed limits are (-PI/2 + epsilon, PI/2 - epsilon), where epsilon is a small positive number - // used to prevent constraint from instability on poles; - // new position of X, allowed limits are (-PI,PI); - // So to simulate ODE Universal joint we should use parent axis as Z, child axis as Y and limit all other DOFs - // Build the frame in world coordinate system first - btVector3 zAxis = axis1.normalize(); - btVector3 yAxis = axis2.normalize(); - btVector3 xAxis = yAxis.cross(zAxis); // we want right coordinate system - btTransform frameInW; - frameInW.setIdentity(); - frameInW.getBasis().setValue( xAxis[0], yAxis[0], zAxis[0], - xAxis[1], yAxis[1], zAxis[1], - xAxis[2], yAxis[2], zAxis[2]); - frameInW.setOrigin(anchor); - // now get constraint frame in local coordinate systems - m_frameInA = rbA.getCenterOfMassTransform().inverse() * frameInW; - m_frameInB = rbB.getCenterOfMassTransform().inverse() * frameInW; - // sei limits - setLinearLowerLimit(btVector3(0., 0., 0.)); - setLinearUpperLimit(btVector3(0., 0., 0.)); - setAngularLowerLimit(btVector3(0.f, -SIMD_HALF_PI + UNIV_EPS, -SIMD_PI + UNIV_EPS)); - setAngularUpperLimit(btVector3(0.f, SIMD_HALF_PI - UNIV_EPS, SIMD_PI - UNIV_EPS)); -} - diff --git a/extern/bullet2/BulletDynamics/ConstraintSolver/btUniversalConstraint.h b/extern/bullet2/BulletDynamics/ConstraintSolver/btUniversalConstraint.h deleted file mode 100644 index 4e64a7d7e0e..00000000000 --- a/extern/bullet2/BulletDynamics/ConstraintSolver/btUniversalConstraint.h +++ /dev/null @@ -1,60 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org -Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef UNIVERSAL_CONSTRAINT_H -#define UNIVERSAL_CONSTRAINT_H - - - -#include "LinearMath/btVector3.h" -#include "btTypedConstraint.h" -#include "btGeneric6DofConstraint.h" - - - -/// Constraint similar to ODE Universal Joint -/// has 2 rotatioonal degrees of freedom, similar to Euler rotations around Z (axis 1) -/// and Y (axis 2) -/// Description from ODE manual : -/// "Given axis 1 on body 1, and axis 2 on body 2 that is perpendicular to axis 1, it keeps them perpendicular. -/// In other words, rotation of the two bodies about the direction perpendicular to the two axes will be equal." - -class btUniversalConstraint : public btGeneric6DofConstraint -{ -protected: - btVector3 m_anchor; - btVector3 m_axis1; - btVector3 m_axis2; -public: - // constructor - // anchor, axis1 and axis2 are in world coordinate system - // axis1 must be orthogonal to axis2 - btUniversalConstraint(btRigidBody& rbA, btRigidBody& rbB, btVector3& anchor, btVector3& axis1, btVector3& axis2); - // access - const btVector3& getAnchor() { return m_calculatedTransformA.getOrigin(); } - const btVector3& getAnchor2() { return m_calculatedTransformB.getOrigin(); } - const btVector3& getAxis1() { return m_axis1; } - const btVector3& getAxis2() { return m_axis2; } - btScalar getAngle1() { return getAngle(2); } - btScalar getAngle2() { return getAngle(1); } - // limits - void setUpperLimit(btScalar ang1max, btScalar ang2max) { setAngularUpperLimit(btVector3(0.f, ang1max, ang2max)); } - void setLowerLimit(btScalar ang1min, btScalar ang2min) { setAngularLowerLimit(btVector3(0.f, ang1min, ang2min)); } -}; - - - -#endif // UNIVERSAL_CONSTRAINT_H - diff --git a/extern/bullet2/BulletDynamics/Dynamics/Bullet-C-API.cpp b/extern/bullet2/BulletDynamics/Dynamics/Bullet-C-API.cpp deleted file mode 100644 index bd8e2748383..00000000000 --- a/extern/bullet2/BulletDynamics/Dynamics/Bullet-C-API.cpp +++ /dev/null @@ -1,405 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -/* - Draft high-level generic physics C-API. For low-level access, use the physics SDK native API's. - Work in progress, functionality will be added on demand. - - If possible, use the richer Bullet C++ API, by including -*/ - -#include "Bullet-C-Api.h" -#include "btBulletDynamicsCommon.h" -#include "LinearMath/btAlignedAllocator.h" - - - -#include "LinearMath/btVector3.h" -#include "LinearMath/btScalar.h" -#include "LinearMath/btMatrix3x3.h" -#include "LinearMath/btTransform.h" -#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h" -#include "BulletCollision/CollisionShapes/btTriangleShape.h" - -#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h" -#include "BulletCollision/NarrowPhaseCollision/btPointCollector.h" -#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h" -#include "BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkEpa2.h" -#include "BulletCollision/CollisionShapes/btMinkowskiSumShape.h" -#include "BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h" -#include "BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h" -#include "BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h" - - -/* - Create and Delete a Physics SDK -*/ - -struct btPhysicsSdk -{ - -// btDispatcher* m_dispatcher; -// btOverlappingPairCache* m_pairCache; -// btConstraintSolver* m_constraintSolver - - btVector3 m_worldAabbMin; - btVector3 m_worldAabbMax; - - - //todo: version, hardware/optimization settings etc? - btPhysicsSdk() - :m_worldAabbMin(-1000,-1000,-1000), - m_worldAabbMax(1000,1000,1000) - { - - } - - -}; - -plPhysicsSdkHandle plNewBulletSdk() -{ - void* mem = btAlignedAlloc(sizeof(btPhysicsSdk),16); - return (plPhysicsSdkHandle)new (mem)btPhysicsSdk; -} - -void plDeletePhysicsSdk(plPhysicsSdkHandle physicsSdk) -{ - btPhysicsSdk* phys = reinterpret_cast(physicsSdk); - btAlignedFree(phys); -} - - -/* Dynamics World */ -plDynamicsWorldHandle plCreateDynamicsWorld(plPhysicsSdkHandle physicsSdkHandle) -{ - btPhysicsSdk* physicsSdk = reinterpret_cast(physicsSdkHandle); - void* mem = btAlignedAlloc(sizeof(btDefaultCollisionConfiguration),16); - btDefaultCollisionConfiguration* collisionConfiguration = new (mem)btDefaultCollisionConfiguration(); - mem = btAlignedAlloc(sizeof(btCollisionDispatcher),16); - btDispatcher* dispatcher = new (mem)btCollisionDispatcher(collisionConfiguration); - mem = btAlignedAlloc(sizeof(btAxisSweep3),16); - btBroadphaseInterface* pairCache = new (mem)btAxisSweep3(physicsSdk->m_worldAabbMin,physicsSdk->m_worldAabbMax); - mem = btAlignedAlloc(sizeof(btSequentialImpulseConstraintSolver),16); - btConstraintSolver* constraintSolver = new(mem) btSequentialImpulseConstraintSolver(); - - mem = btAlignedAlloc(sizeof(btDiscreteDynamicsWorld),16); - return (plDynamicsWorldHandle) new (mem)btDiscreteDynamicsWorld(dispatcher,pairCache,constraintSolver,collisionConfiguration); -} -void plDeleteDynamicsWorld(plDynamicsWorldHandle world) -{ - //todo: also clean up the other allocations, axisSweep, pairCache,dispatcher,constraintSolver,collisionConfiguration - btDynamicsWorld* dynamicsWorld = reinterpret_cast< btDynamicsWorld* >(world); - btAlignedFree(dynamicsWorld); -} - -void plStepSimulation(plDynamicsWorldHandle world, plReal timeStep) -{ - btDynamicsWorld* dynamicsWorld = reinterpret_cast< btDynamicsWorld* >(world); - btAssert(dynamicsWorld); - dynamicsWorld->stepSimulation(timeStep); -} - -void plAddRigidBody(plDynamicsWorldHandle world, plRigidBodyHandle object) -{ - btDynamicsWorld* dynamicsWorld = reinterpret_cast< btDynamicsWorld* >(world); - btAssert(dynamicsWorld); - btRigidBody* body = reinterpret_cast< btRigidBody* >(object); - btAssert(body); - - dynamicsWorld->addRigidBody(body); -} - -void plRemoveRigidBody(plDynamicsWorldHandle world, plRigidBodyHandle object) -{ - btDynamicsWorld* dynamicsWorld = reinterpret_cast< btDynamicsWorld* >(world); - btAssert(dynamicsWorld); - btRigidBody* body = reinterpret_cast< btRigidBody* >(object); - btAssert(body); - - dynamicsWorld->removeRigidBody(body); -} - -/* Rigid Body */ - -plRigidBodyHandle plCreateRigidBody( void* user_data, float mass, plCollisionShapeHandle cshape ) -{ - btTransform trans; - trans.setIdentity(); - btVector3 localInertia(0,0,0); - btCollisionShape* shape = reinterpret_cast( cshape); - btAssert(shape); - if (mass) - { - shape->calculateLocalInertia(mass,localInertia); - } - void* mem = btAlignedAlloc(sizeof(btRigidBody),16); - btRigidBody::btRigidBodyConstructionInfo rbci(mass, 0,shape,localInertia); - btRigidBody* body = new (mem)btRigidBody(rbci); - body->setWorldTransform(trans); - body->setUserPointer(user_data); - return (plRigidBodyHandle) body; -} - -void plDeleteRigidBody(plRigidBodyHandle cbody) -{ - btRigidBody* body = reinterpret_cast< btRigidBody* >(cbody); - btAssert(body); - btAlignedFree( body); -} - - -/* Collision Shape definition */ - -plCollisionShapeHandle plNewSphereShape(plReal radius) -{ - void* mem = btAlignedAlloc(sizeof(btSphereShape),16); - return (plCollisionShapeHandle) new (mem)btSphereShape(radius); - -} - -plCollisionShapeHandle plNewBoxShape(plReal x, plReal y, plReal z) -{ - void* mem = btAlignedAlloc(sizeof(btBoxShape),16); - return (plCollisionShapeHandle) new (mem)btBoxShape(btVector3(x,y,z)); -} - -plCollisionShapeHandle plNewCapsuleShape(plReal radius, plReal height) -{ - //capsule is convex hull of 2 spheres, so use btMultiSphereShape - - const int numSpheres = 2; - btVector3 positions[numSpheres] = {btVector3(0,height,0),btVector3(0,-height,0)}; - btScalar radi[numSpheres] = {radius,radius}; - void* mem = btAlignedAlloc(sizeof(btMultiSphereShape),16); - return (plCollisionShapeHandle) new (mem)btMultiSphereShape(positions,radi,numSpheres); -} -plCollisionShapeHandle plNewConeShape(plReal radius, plReal height) -{ - void* mem = btAlignedAlloc(sizeof(btConeShape),16); - return (plCollisionShapeHandle) new (mem)btConeShape(radius,height); -} - -plCollisionShapeHandle plNewCylinderShape(plReal radius, plReal height) -{ - void* mem = btAlignedAlloc(sizeof(btCylinderShape),16); - return (plCollisionShapeHandle) new (mem)btCylinderShape(btVector3(radius,height,radius)); -} - -/* Convex Meshes */ -plCollisionShapeHandle plNewConvexHullShape() -{ - void* mem = btAlignedAlloc(sizeof(btConvexHullShape),16); - return (plCollisionShapeHandle) new (mem)btConvexHullShape(); -} - - -/* Concave static triangle meshes */ -plMeshInterfaceHandle plNewMeshInterface() -{ - return 0; -} - -plCollisionShapeHandle plNewCompoundShape() -{ - void* mem = btAlignedAlloc(sizeof(btCompoundShape),16); - return (plCollisionShapeHandle) new (mem)btCompoundShape(); -} - -void plAddChildShape(plCollisionShapeHandle compoundShapeHandle,plCollisionShapeHandle childShapeHandle, plVector3 childPos,plQuaternion childOrn) -{ - btCollisionShape* colShape = reinterpret_cast(compoundShapeHandle); - btAssert(colShape->getShapeType() == COMPOUND_SHAPE_PROXYTYPE); - btCompoundShape* compoundShape = reinterpret_cast(colShape); - btCollisionShape* childShape = reinterpret_cast(childShapeHandle); - btTransform localTrans; - localTrans.setIdentity(); - localTrans.setOrigin(btVector3(childPos[0],childPos[1],childPos[2])); - localTrans.setRotation(btQuaternion(childOrn[0],childOrn[1],childOrn[2],childOrn[3])); - compoundShape->addChildShape(localTrans,childShape); -} - -void plSetEuler(plReal yaw,plReal pitch,plReal roll, plQuaternion orient) -{ - btQuaternion orn; - orn.setEuler(yaw,pitch,roll); - orient[0] = orn.getX(); - orient[1] = orn.getY(); - orient[2] = orn.getZ(); - orient[3] = orn.getW(); - -} - - -// extern void plAddTriangle(plMeshInterfaceHandle meshHandle, plVector3 v0,plVector3 v1,plVector3 v2); -// extern plCollisionShapeHandle plNewStaticTriangleMeshShape(plMeshInterfaceHandle); - - -void plAddVertex(plCollisionShapeHandle cshape, plReal x,plReal y,plReal z) -{ - btCollisionShape* colShape = reinterpret_cast( cshape); - (void)colShape; - btAssert(colShape->getShapeType()==CONVEX_HULL_SHAPE_PROXYTYPE); - btConvexHullShape* convexHullShape = reinterpret_cast( cshape); - convexHullShape->addPoint(btVector3(x,y,z)); - -} - -void plDeleteShape(plCollisionShapeHandle cshape) -{ - btCollisionShape* shape = reinterpret_cast( cshape); - btAssert(shape); - btAlignedFree(shape); -} -void plSetScaling(plCollisionShapeHandle cshape, plVector3 cscaling) -{ - btCollisionShape* shape = reinterpret_cast( cshape); - btAssert(shape); - btVector3 scaling(cscaling[0],cscaling[1],cscaling[2]); - shape->setLocalScaling(scaling); -} - - - -void plSetPosition(plRigidBodyHandle object, const plVector3 position) -{ - btRigidBody* body = reinterpret_cast< btRigidBody* >(object); - btAssert(body); - btVector3 pos(position[0],position[1],position[2]); - btTransform worldTrans = body->getWorldTransform(); - worldTrans.setOrigin(pos); - body->setWorldTransform(worldTrans); -} - -void plSetOrientation(plRigidBodyHandle object, const plQuaternion orientation) -{ - btRigidBody* body = reinterpret_cast< btRigidBody* >(object); - btAssert(body); - btQuaternion orn(orientation[0],orientation[1],orientation[2],orientation[3]); - btTransform worldTrans = body->getWorldTransform(); - worldTrans.setRotation(orn); - body->setWorldTransform(worldTrans); -} - -void plSetOpenGLMatrix(plRigidBodyHandle object, plReal* matrix) -{ - btRigidBody* body = reinterpret_cast< btRigidBody* >(object); - btAssert(body); - btTransform& worldTrans = body->getWorldTransform(); - worldTrans.setFromOpenGLMatrix(matrix); -} - -void plGetOpenGLMatrix(plRigidBodyHandle object, plReal* matrix) -{ - btRigidBody* body = reinterpret_cast< btRigidBody* >(object); - btAssert(body); - body->getWorldTransform().getOpenGLMatrix(matrix); - -} - -void plGetPosition(plRigidBodyHandle object,plVector3 position) -{ - btRigidBody* body = reinterpret_cast< btRigidBody* >(object); - btAssert(body); - const btVector3& pos = body->getWorldTransform().getOrigin(); - position[0] = pos.getX(); - position[1] = pos.getY(); - position[2] = pos.getZ(); -} - -void plGetOrientation(plRigidBodyHandle object,plQuaternion orientation) -{ - btRigidBody* body = reinterpret_cast< btRigidBody* >(object); - btAssert(body); - const btQuaternion& orn = body->getWorldTransform().getRotation(); - orientation[0] = orn.getX(); - orientation[1] = orn.getY(); - orientation[2] = orn.getZ(); - orientation[3] = orn.getW(); -} - - - -//plRigidBodyHandle plRayCast(plDynamicsWorldHandle world, const plVector3 rayStart, const plVector3 rayEnd, plVector3 hitpoint, plVector3 normal); - -// extern plRigidBodyHandle plObjectCast(plDynamicsWorldHandle world, const plVector3 rayStart, const plVector3 rayEnd, plVector3 hitpoint, plVector3 normal); - -double plNearestPoints(float p1[3], float p2[3], float p3[3], float q1[3], float q2[3], float q3[3], float *pa, float *pb, float normal[3]) -{ - btVector3 vp(p1[0], p1[1], p1[2]); - btTriangleShape trishapeA(vp, - btVector3(p2[0], p2[1], p2[2]), - btVector3(p3[0], p3[1], p3[2])); - trishapeA.setMargin(0.000001f); - btVector3 vq(q1[0], q1[1], q1[2]); - btTriangleShape trishapeB(vq, - btVector3(q2[0], q2[1], q2[2]), - btVector3(q3[0], q3[1], q3[2])); - trishapeB.setMargin(0.000001f); - - // btVoronoiSimplexSolver sGjkSimplexSolver; - // btGjkEpaPenetrationDepthSolver penSolverPtr; - - static btSimplexSolverInterface sGjkSimplexSolver; - sGjkSimplexSolver.reset(); - - static btGjkEpaPenetrationDepthSolver Solver0; - static btMinkowskiPenetrationDepthSolver Solver1; - - btConvexPenetrationDepthSolver* Solver = NULL; - - Solver = &Solver1; - - btGjkPairDetector convexConvex(&trishapeA ,&trishapeB,&sGjkSimplexSolver,Solver); - - convexConvex.m_catchDegeneracies = 1; - - // btGjkPairDetector convexConvex(&trishapeA ,&trishapeB,&sGjkSimplexSolver,0); - - btPointCollector gjkOutput; - btGjkPairDetector::ClosestPointInput input; - - - btTransform tr; - tr.setIdentity(); - - input.m_transformA = tr; - input.m_transformB = tr; - - convexConvex.getClosestPoints(input, gjkOutput, 0); - - - if (gjkOutput.m_hasResult) - { - - pb[0] = pa[0] = gjkOutput.m_pointInWorld[0]; - pb[1] = pa[1] = gjkOutput.m_pointInWorld[1]; - pb[2] = pa[2] = gjkOutput.m_pointInWorld[2]; - - pb[0]+= gjkOutput.m_normalOnBInWorld[0] * gjkOutput.m_distance; - pb[1]+= gjkOutput.m_normalOnBInWorld[1] * gjkOutput.m_distance; - pb[2]+= gjkOutput.m_normalOnBInWorld[2] * gjkOutput.m_distance; - - normal[0] = gjkOutput.m_normalOnBInWorld[0]; - normal[1] = gjkOutput.m_normalOnBInWorld[1]; - normal[2] = gjkOutput.m_normalOnBInWorld[2]; - - return gjkOutput.m_distance; - } - return -1.0f; -} - diff --git a/extern/bullet2/BulletDynamics/Dynamics/btActionInterface.h b/extern/bullet2/BulletDynamics/Dynamics/btActionInterface.h deleted file mode 100644 index 40a07c6eae3..00000000000 --- a/extern/bullet2/BulletDynamics/Dynamics/btActionInterface.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef _BT_ACTION_INTERFACE_H -#define _BT_ACTION_INTERFACE_H - -class btIDebugDraw; -class btCollisionWorld; - -#include "LinearMath/btScalar.h" -#include "btRigidBody.h" - -///Basic interface to allow actions such as vehicles and characters to be updated inside a btDynamicsWorld -class btActionInterface -{ -protected: - - static btRigidBody& getFixedBody() - { - static btRigidBody s_fixed(0, 0,0); - s_fixed.setMassProps(btScalar(0.),btVector3(btScalar(0.),btScalar(0.),btScalar(0.))); - return s_fixed; - } - -public: - - virtual ~btActionInterface() - { - } - - virtual void updateAction( btCollisionWorld* collisionWorld, btScalar deltaTimeStep)=0; - - virtual void debugDraw(btIDebugDraw* debugDrawer) = 0; - -}; - -#endif //_BT_ACTION_INTERFACE_H - diff --git a/extern/bullet2/BulletDynamics/Dynamics/btContinuousDynamicsWorld.cpp b/extern/bullet2/BulletDynamics/Dynamics/btContinuousDynamicsWorld.cpp deleted file mode 100644 index 23501c4435e..00000000000 --- a/extern/bullet2/BulletDynamics/Dynamics/btContinuousDynamicsWorld.cpp +++ /dev/null @@ -1,196 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btContinuousDynamicsWorld.h" -#include "LinearMath/btQuickprof.h" - -//collision detection -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" -#include "BulletCollision/BroadphaseCollision/btSimpleBroadphase.h" -#include "BulletCollision/CollisionShapes/btCollisionShape.h" -#include "BulletCollision/CollisionDispatch/btSimulationIslandManager.h" - -//rigidbody & constraints -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h" -#include "BulletDynamics/ConstraintSolver/btContactSolverInfo.h" -#include "BulletDynamics/ConstraintSolver/btTypedConstraint.h" - - - -#include - -btContinuousDynamicsWorld::btContinuousDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration) -:btDiscreteDynamicsWorld(dispatcher,pairCache,constraintSolver,collisionConfiguration) -{ -} - -btContinuousDynamicsWorld::~btContinuousDynamicsWorld() -{ -} - - -void btContinuousDynamicsWorld::internalSingleStepSimulation( btScalar timeStep) -{ - - startProfiling(timeStep); - - if(0 != m_internalPreTickCallback) { - (*m_internalPreTickCallback)(this, timeStep); - } - - - ///update aabbs information - updateAabbs(); - //static int frame=0; -// printf("frame %d\n",frame++); - - ///apply gravity, predict motion - predictUnconstraintMotion(timeStep); - - btDispatcherInfo& dispatchInfo = getDispatchInfo(); - - dispatchInfo.m_timeStep = timeStep; - dispatchInfo.m_stepCount = 0; - dispatchInfo.m_debugDraw = getDebugDrawer(); - - ///perform collision detection - performDiscreteCollisionDetection(); - - calculateSimulationIslands(); - - - getSolverInfo().m_timeStep = timeStep; - - - - ///solve contact and other joint constraints - solveConstraints(getSolverInfo()); - - ///CallbackTriggers(); - calculateTimeOfImpacts(timeStep); - - btScalar toi = dispatchInfo.m_timeOfImpact; -// if (toi < 1.f) -// printf("toi = %f\n",toi); - if (toi < 0.f) - printf("toi = %f\n",toi); - - - ///integrate transforms - integrateTransforms(timeStep * toi); - - ///update vehicle simulation - updateActions(timeStep); - - updateActivationState( timeStep ); - - if(0 != m_internalTickCallback) { - (*m_internalTickCallback)(this, timeStep); - } -} - -void btContinuousDynamicsWorld::calculateTimeOfImpacts(btScalar timeStep) -{ - ///these should be 'temporal' aabbs! - updateTemporalAabbs(timeStep); - - ///'toi' is the global smallest time of impact. However, we just calculate the time of impact for each object individually. - ///so we handle the case moving versus static properly, and we cheat for moving versus moving - btScalar toi = 1.f; - - - btDispatcherInfo& dispatchInfo = getDispatchInfo(); - dispatchInfo.m_timeStep = timeStep; - dispatchInfo.m_timeOfImpact = 1.f; - dispatchInfo.m_stepCount = 0; - dispatchInfo.m_dispatchFunc = btDispatcherInfo::DISPATCH_CONTINUOUS; - - ///calculate time of impact for overlapping pairs - - - btDispatcher* dispatcher = getDispatcher(); - if (dispatcher) - dispatcher->dispatchAllCollisionPairs(m_broadphasePairCache->getOverlappingPairCache(),dispatchInfo,m_dispatcher1); - - toi = dispatchInfo.m_timeOfImpact; - - dispatchInfo.m_dispatchFunc = btDispatcherInfo::DISPATCH_DISCRETE; - -} - -void btContinuousDynamicsWorld::updateTemporalAabbs(btScalar timeStep) -{ - - btVector3 temporalAabbMin,temporalAabbMax; - - for ( int i=0;igetCollisionShape()->getAabb(m_collisionObjects[i]->getWorldTransform(),temporalAabbMin,temporalAabbMax); - const btVector3& linvel = body->getLinearVelocity(); - - //make the AABB temporal - btScalar temporalAabbMaxx = temporalAabbMax.getX(); - btScalar temporalAabbMaxy = temporalAabbMax.getY(); - btScalar temporalAabbMaxz = temporalAabbMax.getZ(); - btScalar temporalAabbMinx = temporalAabbMin.getX(); - btScalar temporalAabbMiny = temporalAabbMin.getY(); - btScalar temporalAabbMinz = temporalAabbMin.getZ(); - - // add linear motion - btVector3 linMotion = linvel*timeStep; - - if (linMotion.x() > 0.f) - temporalAabbMaxx += linMotion.x(); - else - temporalAabbMinx += linMotion.x(); - if (linMotion.y() > 0.f) - temporalAabbMaxy += linMotion.y(); - else - temporalAabbMiny += linMotion.y(); - if (linMotion.z() > 0.f) - temporalAabbMaxz += linMotion.z(); - else - temporalAabbMinz += linMotion.z(); - - //add conservative angular motion - btScalar angularMotion(0);// = angvel.length() * GetAngularMotionDisc() * timeStep; - btVector3 angularMotion3d(angularMotion,angularMotion,angularMotion); - temporalAabbMin = btVector3(temporalAabbMinx,temporalAabbMiny,temporalAabbMinz); - temporalAabbMax = btVector3(temporalAabbMaxx,temporalAabbMaxy,temporalAabbMaxz); - - temporalAabbMin -= angularMotion3d; - temporalAabbMax += angularMotion3d; - - m_broadphasePairCache->setAabb(body->getBroadphaseHandle(),temporalAabbMin,temporalAabbMax,m_dispatcher1); - } - } - - //update aabb (of all moved objects) - - m_broadphasePairCache->calculateOverlappingPairs(m_dispatcher1); - - - -} - - - diff --git a/extern/bullet2/BulletDynamics/Dynamics/btContinuousDynamicsWorld.h b/extern/bullet2/BulletDynamics/Dynamics/btContinuousDynamicsWorld.h deleted file mode 100644 index 61c8dea03eb..00000000000 --- a/extern/bullet2/BulletDynamics/Dynamics/btContinuousDynamicsWorld.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BT_CONTINUOUS_DYNAMICS_WORLD_H -#define BT_CONTINUOUS_DYNAMICS_WORLD_H - -#include "btDiscreteDynamicsWorld.h" - -///btContinuousDynamicsWorld adds optional (per object) continuous collision detection for fast moving objects to the btDiscreteDynamicsWorld. -///This copes with fast moving objects that otherwise would tunnel/miss collisions. -///Under construction, don't use yet! Please use btDiscreteDynamicsWorld instead. -class btContinuousDynamicsWorld : public btDiscreteDynamicsWorld -{ - - void updateTemporalAabbs(btScalar timeStep); - - public: - - btContinuousDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration); - virtual ~btContinuousDynamicsWorld(); - - ///time stepping with calculation of time of impact for selected fast moving objects - virtual void internalSingleStepSimulation( btScalar timeStep); - - virtual void calculateTimeOfImpacts(btScalar timeStep); - - virtual btDynamicsWorldType getWorldType() const - { - return BT_CONTINUOUS_DYNAMICS_WORLD; - } - -}; - -#endif //BT_CONTINUOUS_DYNAMICS_WORLD_H diff --git a/extern/bullet2/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp b/extern/bullet2/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp deleted file mode 100644 index a88ed1cafa8..00000000000 --- a/extern/bullet2/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp +++ /dev/null @@ -1,1161 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btDiscreteDynamicsWorld.h" - -//collision detection -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" -#include "BulletCollision/BroadphaseCollision/btSimpleBroadphase.h" -#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" -#include "BulletCollision/CollisionShapes/btCollisionShape.h" -#include "BulletCollision/CollisionDispatch/btSimulationIslandManager.h" -#include "LinearMath/btTransformUtil.h" -#include "LinearMath/btQuickprof.h" - -//rigidbody & constraints -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h" -#include "BulletDynamics/ConstraintSolver/btContactSolverInfo.h" -#include "BulletDynamics/ConstraintSolver/btTypedConstraint.h" -#include "BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h" -#include "BulletDynamics/ConstraintSolver/btHingeConstraint.h" -#include "BulletDynamics/ConstraintSolver/btConeTwistConstraint.h" -#include "BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h" -#include "BulletDynamics/ConstraintSolver/btSliderConstraint.h" - -#include "LinearMath/btIDebugDraw.h" -#include "BulletCollision/CollisionShapes/btSphereShape.h" - - -#include "BulletDynamics/Dynamics/btActionInterface.h" -#include "LinearMath/btQuickprof.h" -#include "LinearMath/btMotionState.h" - -#include "LinearMath/btSerializer.h" - - - -btDiscreteDynamicsWorld::btDiscreteDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver, btCollisionConfiguration* collisionConfiguration) -:btDynamicsWorld(dispatcher,pairCache,collisionConfiguration), -m_constraintSolver(constraintSolver), -m_gravity(0,-10,0), -m_localTime(btScalar(1.)/btScalar(60.)), -m_synchronizeAllMotionStates(false), -m_profileTimings(0) -{ - if (!m_constraintSolver) - { - void* mem = btAlignedAlloc(sizeof(btSequentialImpulseConstraintSolver),16); - m_constraintSolver = new (mem) btSequentialImpulseConstraintSolver; - m_ownsConstraintSolver = true; - } else - { - m_ownsConstraintSolver = false; - } - - { - void* mem = btAlignedAlloc(sizeof(btSimulationIslandManager),16); - m_islandManager = new (mem) btSimulationIslandManager(); - } - - m_ownsIslandManager = true; -} - - -btDiscreteDynamicsWorld::~btDiscreteDynamicsWorld() -{ - //only delete it when we created it - if (m_ownsIslandManager) - { - m_islandManager->~btSimulationIslandManager(); - btAlignedFree( m_islandManager); - } - if (m_ownsConstraintSolver) - { - - m_constraintSolver->~btConstraintSolver(); - btAlignedFree(m_constraintSolver); - } -} - -void btDiscreteDynamicsWorld::saveKinematicState(btScalar timeStep) -{ -///would like to iterate over m_nonStaticRigidBodies, but unfortunately old API allows -///to switch status _after_ adding kinematic objects to the world -///fix it for Bullet 3.x release - for (int i=0;igetActivationState() != ISLAND_SLEEPING) - { - if (body->isKinematicObject()) - { - //to calculate velocities next frame - body->saveKinematicState(timeStep); - } - } - } - -} - -void btDiscreteDynamicsWorld::debugDrawWorld() -{ - BT_PROFILE("debugDrawWorld"); - - btCollisionWorld::debugDrawWorld(); - - bool drawConstraints = false; - if (getDebugDrawer()) - { - int mode = getDebugDrawer()->getDebugMode(); - if(mode & (btIDebugDraw::DBG_DrawConstraints | btIDebugDraw::DBG_DrawConstraintLimits)) - { - drawConstraints = true; - } - } - if(drawConstraints) - { - for(int i = getNumConstraints()-1; i>=0 ;i--) - { - btTypedConstraint* constraint = getConstraint(i); - debugDrawConstraint(constraint); - } - } - - - - if (getDebugDrawer() && getDebugDrawer()->getDebugMode() & (btIDebugDraw::DBG_DrawWireframe | btIDebugDraw::DBG_DrawAabb)) - { - int i; - - if (getDebugDrawer() && getDebugDrawer()->getDebugMode()) - { - for (i=0;idebugDraw(m_debugDrawer); - } - } - } -} - -void btDiscreteDynamicsWorld::clearForces() -{ - ///@todo: iterate over awake simulation islands! - for ( int i=0;iclearForces(); - } -} - -///apply gravity, call this once per timestep -void btDiscreteDynamicsWorld::applyGravity() -{ - ///@todo: iterate over awake simulation islands! - for ( int i=0;iisActive()) - { - body->applyGravity(); - } - } -} - - -void btDiscreteDynamicsWorld::synchronizeSingleMotionState(btRigidBody* body) -{ - btAssert(body); - - if (body->getMotionState() && !body->isStaticOrKinematicObject()) - { - //we need to call the update at least once, even for sleeping objects - //otherwise the 'graphics' transform never updates properly - ///@todo: add 'dirty' flag - //if (body->getActivationState() != ISLAND_SLEEPING) - { - btTransform interpolatedTransform; - btTransformUtil::integrateTransform(body->getInterpolationWorldTransform(), - body->getInterpolationLinearVelocity(),body->getInterpolationAngularVelocity(),m_localTime*body->getHitFraction(),interpolatedTransform); - body->getMotionState()->setWorldTransform(interpolatedTransform); - } - } -} - - -void btDiscreteDynamicsWorld::synchronizeMotionStates() -{ - BT_PROFILE("synchronizeMotionStates"); - if (m_synchronizeAllMotionStates) - { - //iterate over all collision objects - for ( int i=0;iisActive()) - synchronizeSingleMotionState(body); - } - } -} - - -int btDiscreteDynamicsWorld::stepSimulation( btScalar timeStep,int maxSubSteps, btScalar fixedTimeStep) -{ - startProfiling(timeStep); - - BT_PROFILE("stepSimulation"); - - int numSimulationSubSteps = 0; - - if (maxSubSteps) - { - //fixed timestep with interpolation - m_localTime += timeStep; - if (m_localTime >= fixedTimeStep) - { - numSimulationSubSteps = int( m_localTime / fixedTimeStep); - m_localTime -= numSimulationSubSteps * fixedTimeStep; - } - } else - { - //variable timestep - fixedTimeStep = timeStep; - m_localTime = timeStep; - if (btFuzzyZero(timeStep)) - { - numSimulationSubSteps = 0; - maxSubSteps = 0; - } else - { - numSimulationSubSteps = 1; - maxSubSteps = 1; - } - } - - //process some debugging flags - if (getDebugDrawer()) - { - btIDebugDraw* debugDrawer = getDebugDrawer (); - gDisableDeactivation = (debugDrawer->getDebugMode() & btIDebugDraw::DBG_NoDeactivation) != 0; - } - if (numSimulationSubSteps) - { - - //clamp the number of substeps, to prevent simulation grinding spiralling down to a halt - int clampedSimulationSteps = (numSimulationSubSteps > maxSubSteps)? maxSubSteps : numSimulationSubSteps; - - saveKinematicState(fixedTimeStep*clampedSimulationSteps); - - applyGravity(); - - - - for (int i=0;iisActive() && !(body->getFlags() &BT_DISABLE_WORLD_GRAVITY)) - { - body->setGravity(gravity); - } - } -} - -btVector3 btDiscreteDynamicsWorld::getGravity () const -{ - return m_gravity; -} - -void btDiscreteDynamicsWorld::addCollisionObject(btCollisionObject* collisionObject,short int collisionFilterGroup,short int collisionFilterMask) -{ - btCollisionWorld::addCollisionObject(collisionObject,collisionFilterGroup,collisionFilterMask); -} - -void btDiscreteDynamicsWorld::removeCollisionObject(btCollisionObject* collisionObject) -{ - btRigidBody* body = btRigidBody::upcast(collisionObject); - if (body) - removeRigidBody(body); - else - btCollisionWorld::removeCollisionObject(collisionObject); -} - -void btDiscreteDynamicsWorld::removeRigidBody(btRigidBody* body) -{ - m_nonStaticRigidBodies.remove(body); - btCollisionWorld::removeCollisionObject(body); -} - - -void btDiscreteDynamicsWorld::addRigidBody(btRigidBody* body) -{ - if (!body->isStaticOrKinematicObject() && !(body->getFlags() &BT_DISABLE_WORLD_GRAVITY)) - { - body->setGravity(m_gravity); - } - - if (body->getCollisionShape()) - { - if (!body->isStaticObject()) - { - m_nonStaticRigidBodies.push_back(body); - } else - { - body->setActivationState(ISLAND_SLEEPING); - } - - bool isDynamic = !(body->isStaticObject() || body->isKinematicObject()); - short collisionFilterGroup = isDynamic? short(btBroadphaseProxy::DefaultFilter) : short(btBroadphaseProxy::StaticFilter); - short collisionFilterMask = isDynamic? short(btBroadphaseProxy::AllFilter) : short(btBroadphaseProxy::AllFilter ^ btBroadphaseProxy::StaticFilter); - - addCollisionObject(body,collisionFilterGroup,collisionFilterMask); - } -} - -void btDiscreteDynamicsWorld::addRigidBody(btRigidBody* body, short group, short mask) -{ - if (!body->isStaticOrKinematicObject() && !(body->getFlags() &BT_DISABLE_WORLD_GRAVITY)) - { - body->setGravity(m_gravity); - } - - if (body->getCollisionShape()) - { - if (!body->isStaticObject()) - { - m_nonStaticRigidBodies.push_back(body); - } - else - { - body->setActivationState(ISLAND_SLEEPING); - } - addCollisionObject(body,group,mask); - } -} - - -void btDiscreteDynamicsWorld::updateActions(btScalar timeStep) -{ - BT_PROFILE("updateActions"); - - for ( int i=0;iupdateAction( this, timeStep); - } -} - - -void btDiscreteDynamicsWorld::updateActivationState(btScalar timeStep) -{ - BT_PROFILE("updateActivationState"); - - for ( int i=0;iupdateDeactivation(timeStep); - - if (body->wantsSleeping()) - { - if (body->isStaticOrKinematicObject()) - { - body->setActivationState(ISLAND_SLEEPING); - } else - { - if (body->getActivationState() == ACTIVE_TAG) - body->setActivationState( WANTS_DEACTIVATION ); - if (body->getActivationState() == ISLAND_SLEEPING) - { - body->setAngularVelocity(btVector3(0,0,0)); - body->setLinearVelocity(btVector3(0,0,0)); - } - - } - } else - { - if (body->getActivationState() != DISABLE_DEACTIVATION) - body->setActivationState( ACTIVE_TAG ); - } - } - } -} - -void btDiscreteDynamicsWorld::addConstraint(btTypedConstraint* constraint,bool disableCollisionsBetweenLinkedBodies) -{ - m_constraints.push_back(constraint); - if (disableCollisionsBetweenLinkedBodies) - { - constraint->getRigidBodyA().addConstraintRef(constraint); - constraint->getRigidBodyB().addConstraintRef(constraint); - } -} - -void btDiscreteDynamicsWorld::removeConstraint(btTypedConstraint* constraint) -{ - m_constraints.remove(constraint); - constraint->getRigidBodyA().removeConstraintRef(constraint); - constraint->getRigidBodyB().removeConstraintRef(constraint); -} - -void btDiscreteDynamicsWorld::addAction(btActionInterface* action) -{ - m_actions.push_back(action); -} - -void btDiscreteDynamicsWorld::removeAction(btActionInterface* action) -{ - m_actions.remove(action); -} - - -void btDiscreteDynamicsWorld::addVehicle(btActionInterface* vehicle) -{ - addAction(vehicle); -} - -void btDiscreteDynamicsWorld::removeVehicle(btActionInterface* vehicle) -{ - removeAction(vehicle); -} - -void btDiscreteDynamicsWorld::addCharacter(btActionInterface* character) -{ - addAction(character); -} - -void btDiscreteDynamicsWorld::removeCharacter(btActionInterface* character) -{ - removeAction(character); -} - - -SIMD_FORCE_INLINE int btGetConstraintIslandId(const btTypedConstraint* lhs) -{ - int islandId; - - const btCollisionObject& rcolObj0 = lhs->getRigidBodyA(); - const btCollisionObject& rcolObj1 = lhs->getRigidBodyB(); - islandId= rcolObj0.getIslandTag()>=0?rcolObj0.getIslandTag():rcolObj1.getIslandTag(); - return islandId; - -} - - -class btSortConstraintOnIslandPredicate -{ - public: - - bool operator() ( const btTypedConstraint* lhs, const btTypedConstraint* rhs ) - { - int rIslandId0,lIslandId0; - rIslandId0 = btGetConstraintIslandId(rhs); - lIslandId0 = btGetConstraintIslandId(lhs); - return lIslandId0 < rIslandId0; - } -}; - - - -void btDiscreteDynamicsWorld::solveConstraints(btContactSolverInfo& solverInfo) -{ - BT_PROFILE("solveConstraints"); - - struct InplaceSolverIslandCallback : public btSimulationIslandManager::IslandCallback - { - - btContactSolverInfo& m_solverInfo; - btConstraintSolver* m_solver; - btTypedConstraint** m_sortedConstraints; - int m_numConstraints; - btIDebugDraw* m_debugDrawer; - btStackAlloc* m_stackAlloc; - btDispatcher* m_dispatcher; - - btAlignedObjectArray m_bodies; - btAlignedObjectArray m_manifolds; - btAlignedObjectArray m_constraints; - - - InplaceSolverIslandCallback( - btContactSolverInfo& solverInfo, - btConstraintSolver* solver, - btTypedConstraint** sortedConstraints, - int numConstraints, - btIDebugDraw* debugDrawer, - btStackAlloc* stackAlloc, - btDispatcher* dispatcher) - :m_solverInfo(solverInfo), - m_solver(solver), - m_sortedConstraints(sortedConstraints), - m_numConstraints(numConstraints), - m_debugDrawer(debugDrawer), - m_stackAlloc(stackAlloc), - m_dispatcher(dispatcher) - { - - } - - - InplaceSolverIslandCallback& operator=(InplaceSolverIslandCallback& other) - { - btAssert(0); - (void)other; - return *this; - } - virtual void ProcessIsland(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifolds,int numManifolds, int islandId) - { - if (islandId<0) - { - if (numManifolds + m_numConstraints) - { - ///we don't split islands, so all constraints/contact manifolds/bodies are passed into the solver regardless the island id - m_solver->solveGroup( bodies,numBodies,manifolds, numManifolds,&m_sortedConstraints[0],m_numConstraints,m_solverInfo,m_debugDrawer,m_stackAlloc,m_dispatcher); - } - } else - { - //also add all non-contact constraints/joints for this island - btTypedConstraint** startConstraint = 0; - int numCurConstraints = 0; - int i; - - //find the first constraint for this island - for (i=0;isolveGroup( bodies,numBodies,manifolds, numManifolds,startConstraint,numCurConstraints,m_solverInfo,m_debugDrawer,m_stackAlloc,m_dispatcher); - } - } else - { - - for (i=0;im_solverInfo.m_minimumSolverBatchSize) - { - processConstraints(); - } else - { - //printf("deferred\n"); - } - } - } - } - void processConstraints() - { - if (m_manifolds.size() + m_constraints.size()>0) - { - m_solver->solveGroup( &m_bodies[0],m_bodies.size(), &m_manifolds[0], m_manifolds.size(), &m_constraints[0], m_constraints.size() ,m_solverInfo,m_debugDrawer,m_stackAlloc,m_dispatcher); - } - m_bodies.resize(0); - m_manifolds.resize(0); - m_constraints.resize(0); - - } - - }; - - - - //sorted version of all btTypedConstraint, based on islandId - btAlignedObjectArray sortedConstraints; - sortedConstraints.resize( m_constraints.size()); - int i; - for (i=0;iprepareSolve(getCollisionWorld()->getNumCollisionObjects(), getCollisionWorld()->getDispatcher()->getNumManifolds()); - - /// solve all the constraints for this island - m_islandManager->buildAndProcessIslands(getCollisionWorld()->getDispatcher(),getCollisionWorld(),&solverCallback); - - solverCallback.processConstraints(); - - m_constraintSolver->allSolved(solverInfo, m_debugDrawer, m_stackAlloc); -} - - - - -void btDiscreteDynamicsWorld::calculateSimulationIslands() -{ - BT_PROFILE("calculateSimulationIslands"); - - getSimulationIslandManager()->updateActivationState(getCollisionWorld(),getCollisionWorld()->getDispatcher()); - - { - int i; - int numConstraints = int(m_constraints.size()); - for (i=0;i< numConstraints ; i++ ) - { - btTypedConstraint* constraint = m_constraints[i]; - - const btRigidBody* colObj0 = &constraint->getRigidBodyA(); - const btRigidBody* colObj1 = &constraint->getRigidBodyB(); - - if (((colObj0) && (!(colObj0)->isStaticOrKinematicObject())) && - ((colObj1) && (!(colObj1)->isStaticOrKinematicObject()))) - { - if (colObj0->isActive() || colObj1->isActive()) - { - - getSimulationIslandManager()->getUnionFind().unite((colObj0)->getIslandTag(), - (colObj1)->getIslandTag()); - } - } - } - } - - //Store the island id in each body - getSimulationIslandManager()->storeIslandActivationState(getCollisionWorld()); - - -} - - - - -class btClosestNotMeConvexResultCallback : public btCollisionWorld::ClosestConvexResultCallback -{ - btCollisionObject* m_me; - btScalar m_allowedPenetration; - btOverlappingPairCache* m_pairCache; - btDispatcher* m_dispatcher; - - -public: - btClosestNotMeConvexResultCallback (btCollisionObject* me,const btVector3& fromA,const btVector3& toA,btOverlappingPairCache* pairCache,btDispatcher* dispatcher) : - btCollisionWorld::ClosestConvexResultCallback(fromA,toA), - m_me(me), - m_allowedPenetration(0.0f), - m_pairCache(pairCache), - m_dispatcher(dispatcher) - { - } - - virtual btScalar addSingleResult(btCollisionWorld::LocalConvexResult& convexResult,bool normalInWorldSpace) - { - if (convexResult.m_hitCollisionObject == m_me) - return 1.0f; - - //ignore result if there is no contact response - if(!convexResult.m_hitCollisionObject->hasContactResponse()) - return 1.0f; - - btVector3 linVelA,linVelB; - linVelA = m_convexToWorld-m_convexFromWorld; - linVelB = btVector3(0,0,0);//toB.getOrigin()-fromB.getOrigin(); - - btVector3 relativeVelocity = (linVelA-linVelB); - //don't report time of impact for motion away from the contact normal (or causes minor penetration) - if (convexResult.m_hitNormalLocal.dot(relativeVelocity)>=-m_allowedPenetration) - return 1.f; - - return ClosestConvexResultCallback::addSingleResult (convexResult, normalInWorldSpace); - } - - virtual bool needsCollision(btBroadphaseProxy* proxy0) const - { - //don't collide with itself - if (proxy0->m_clientObject == m_me) - return false; - - ///don't do CCD when the collision filters are not matching - if (!ClosestConvexResultCallback::needsCollision(proxy0)) - return false; - - btCollisionObject* otherObj = (btCollisionObject*) proxy0->m_clientObject; - - //call needsResponse, see http://code.google.com/p/bullet/issues/detail?id=179 - if (m_dispatcher->needsResponse(m_me,otherObj)) - { - ///don't do CCD when there are already contact points (touching contact/penetration) - btAlignedObjectArray manifoldArray; - btBroadphasePair* collisionPair = m_pairCache->findPair(m_me->getBroadphaseHandle(),proxy0); - if (collisionPair) - { - if (collisionPair->m_algorithm) - { - manifoldArray.resize(0); - collisionPair->m_algorithm->getAllContactManifolds(manifoldArray); - for (int j=0;jgetNumContacts()>0) - return false; - } - } - } - } - return true; - } - - -}; - -///internal debugging variable. this value shouldn't be too high -int gNumClampedCcdMotions=0; - -//#include "stdio.h" -void btDiscreteDynamicsWorld::integrateTransforms(btScalar timeStep) -{ - BT_PROFILE("integrateTransforms"); - btTransform predictedTrans; - for ( int i=0;isetHitFraction(1.f); - - if (body->isActive() && (!body->isStaticOrKinematicObject())) - { - body->predictIntegratedTransform(timeStep, predictedTrans); - btScalar squareMotion = (predictedTrans.getOrigin()-body->getWorldTransform().getOrigin()).length2(); - - if (body->getCcdSquareMotionThreshold() && body->getCcdSquareMotionThreshold() < squareMotion) - { - BT_PROFILE("CCD motion clamping"); - if (body->getCollisionShape()->isConvex()) - { - gNumClampedCcdMotions++; - - btClosestNotMeConvexResultCallback sweepResults(body,body->getWorldTransform().getOrigin(),predictedTrans.getOrigin(),getBroadphase()->getOverlappingPairCache(),getDispatcher()); - //btConvexShape* convexShape = static_cast(body->getCollisionShape()); - btSphereShape tmpSphere(body->getCcdSweptSphereRadius());//btConvexShape* convexShape = static_cast(body->getCollisionShape()); - - sweepResults.m_collisionFilterGroup = body->getBroadphaseProxy()->m_collisionFilterGroup; - sweepResults.m_collisionFilterMask = body->getBroadphaseProxy()->m_collisionFilterMask; - - convexSweepTest(&tmpSphere,body->getWorldTransform(),predictedTrans,sweepResults); - if (sweepResults.hasHit() && (sweepResults.m_closestHitFraction < 1.f)) - { - body->setHitFraction(sweepResults.m_closestHitFraction); - body->predictIntegratedTransform(timeStep*body->getHitFraction(), predictedTrans); - body->setHitFraction(0.f); -// printf("clamped integration to hit fraction = %f\n",fraction); - } - } - } - - body->proceedToTransform( predictedTrans); - } - } -} - - - - - -void btDiscreteDynamicsWorld::predictUnconstraintMotion(btScalar timeStep) -{ - BT_PROFILE("predictUnconstraintMotion"); - for ( int i=0;iisStaticOrKinematicObject()) - { - body->integrateVelocities( timeStep); - //damping - body->applyDamping(timeStep); - - body->predictIntegratedTransform(timeStep,body->getInterpolationWorldTransform()); - } - } -} - - -void btDiscreteDynamicsWorld::startProfiling(btScalar timeStep) -{ - (void)timeStep; - -#ifndef BT_NO_PROFILE - CProfileManager::Reset(); -#endif //BT_NO_PROFILE - -} - - - - - - -void btDiscreteDynamicsWorld::debugDrawConstraint(btTypedConstraint* constraint) -{ - bool drawFrames = (getDebugDrawer()->getDebugMode() & btIDebugDraw::DBG_DrawConstraints) != 0; - bool drawLimits = (getDebugDrawer()->getDebugMode() & btIDebugDraw::DBG_DrawConstraintLimits) != 0; - btScalar dbgDrawSize = constraint->getDbgDrawSize(); - if(dbgDrawSize <= btScalar(0.f)) - { - return; - } - - switch(constraint->getConstraintType()) - { - case POINT2POINT_CONSTRAINT_TYPE: - { - btPoint2PointConstraint* p2pC = (btPoint2PointConstraint*)constraint; - btTransform tr; - tr.setIdentity(); - btVector3 pivot = p2pC->getPivotInA(); - pivot = p2pC->getRigidBodyA().getCenterOfMassTransform() * pivot; - tr.setOrigin(pivot); - getDebugDrawer()->drawTransform(tr, dbgDrawSize); - // that ideally should draw the same frame - pivot = p2pC->getPivotInB(); - pivot = p2pC->getRigidBodyB().getCenterOfMassTransform() * pivot; - tr.setOrigin(pivot); - if(drawFrames) getDebugDrawer()->drawTransform(tr, dbgDrawSize); - } - break; - case HINGE_CONSTRAINT_TYPE: - { - btHingeConstraint* pHinge = (btHingeConstraint*)constraint; - btTransform tr = pHinge->getRigidBodyA().getCenterOfMassTransform() * pHinge->getAFrame(); - if(drawFrames) getDebugDrawer()->drawTransform(tr, dbgDrawSize); - tr = pHinge->getRigidBodyB().getCenterOfMassTransform() * pHinge->getBFrame(); - if(drawFrames) getDebugDrawer()->drawTransform(tr, dbgDrawSize); - btScalar minAng = pHinge->getLowerLimit(); - btScalar maxAng = pHinge->getUpperLimit(); - if(minAng == maxAng) - { - break; - } - bool drawSect = true; - if(minAng > maxAng) - { - minAng = btScalar(0.f); - maxAng = SIMD_2_PI; - drawSect = false; - } - if(drawLimits) - { - btVector3& center = tr.getOrigin(); - btVector3 normal = tr.getBasis().getColumn(2); - btVector3 axis = tr.getBasis().getColumn(0); - getDebugDrawer()->drawArc(center, normal, axis, dbgDrawSize, dbgDrawSize, minAng, maxAng, btVector3(0,0,0), drawSect); - } - } - break; - case CONETWIST_CONSTRAINT_TYPE: - { - btConeTwistConstraint* pCT = (btConeTwistConstraint*)constraint; - btTransform tr = pCT->getRigidBodyA().getCenterOfMassTransform() * pCT->getAFrame(); - if(drawFrames) getDebugDrawer()->drawTransform(tr, dbgDrawSize); - tr = pCT->getRigidBodyB().getCenterOfMassTransform() * pCT->getBFrame(); - if(drawFrames) getDebugDrawer()->drawTransform(tr, dbgDrawSize); - if(drawLimits) - { - //const btScalar length = btScalar(5); - const btScalar length = dbgDrawSize; - static int nSegments = 8*4; - btScalar fAngleInRadians = btScalar(2.*3.1415926) * (btScalar)(nSegments-1)/btScalar(nSegments); - btVector3 pPrev = pCT->GetPointForAngle(fAngleInRadians, length); - pPrev = tr * pPrev; - for (int i=0; iGetPointForAngle(fAngleInRadians, length); - pCur = tr * pCur; - getDebugDrawer()->drawLine(pPrev, pCur, btVector3(0,0,0)); - - if (i%(nSegments/8) == 0) - getDebugDrawer()->drawLine(tr.getOrigin(), pCur, btVector3(0,0,0)); - - pPrev = pCur; - } - btScalar tws = pCT->getTwistSpan(); - btScalar twa = pCT->getTwistAngle(); - bool useFrameB = (pCT->getRigidBodyB().getInvMass() > btScalar(0.f)); - if(useFrameB) - { - tr = pCT->getRigidBodyB().getCenterOfMassTransform() * pCT->getBFrame(); - } - else - { - tr = pCT->getRigidBodyA().getCenterOfMassTransform() * pCT->getAFrame(); - } - btVector3 pivot = tr.getOrigin(); - btVector3 normal = tr.getBasis().getColumn(0); - btVector3 axis1 = tr.getBasis().getColumn(1); - getDebugDrawer()->drawArc(pivot, normal, axis1, dbgDrawSize, dbgDrawSize, -twa-tws, -twa+tws, btVector3(0,0,0), true); - - } - } - break; - case D6_CONSTRAINT_TYPE: - { - btGeneric6DofConstraint* p6DOF = (btGeneric6DofConstraint*)constraint; - btTransform tr = p6DOF->getCalculatedTransformA(); - if(drawFrames) getDebugDrawer()->drawTransform(tr, dbgDrawSize); - tr = p6DOF->getCalculatedTransformB(); - if(drawFrames) getDebugDrawer()->drawTransform(tr, dbgDrawSize); - if(drawLimits) - { - tr = p6DOF->getCalculatedTransformA(); - const btVector3& center = p6DOF->getCalculatedTransformB().getOrigin(); - btVector3 up = tr.getBasis().getColumn(2); - btVector3 axis = tr.getBasis().getColumn(0); - btScalar minTh = p6DOF->getRotationalLimitMotor(1)->m_loLimit; - btScalar maxTh = p6DOF->getRotationalLimitMotor(1)->m_hiLimit; - btScalar minPs = p6DOF->getRotationalLimitMotor(2)->m_loLimit; - btScalar maxPs = p6DOF->getRotationalLimitMotor(2)->m_hiLimit; - getDebugDrawer()->drawSpherePatch(center, up, axis, dbgDrawSize * btScalar(.9f), minTh, maxTh, minPs, maxPs, btVector3(0,0,0)); - axis = tr.getBasis().getColumn(1); - btScalar ay = p6DOF->getAngle(1); - btScalar az = p6DOF->getAngle(2); - btScalar cy = btCos(ay); - btScalar sy = btSin(ay); - btScalar cz = btCos(az); - btScalar sz = btSin(az); - btVector3 ref; - ref[0] = cy*cz*axis[0] + cy*sz*axis[1] - sy*axis[2]; - ref[1] = -sz*axis[0] + cz*axis[1]; - ref[2] = cz*sy*axis[0] + sz*sy*axis[1] + cy*axis[2]; - tr = p6DOF->getCalculatedTransformB(); - btVector3 normal = -tr.getBasis().getColumn(0); - btScalar minFi = p6DOF->getRotationalLimitMotor(0)->m_loLimit; - btScalar maxFi = p6DOF->getRotationalLimitMotor(0)->m_hiLimit; - if(minFi > maxFi) - { - getDebugDrawer()->drawArc(center, normal, ref, dbgDrawSize, dbgDrawSize, -SIMD_PI, SIMD_PI, btVector3(0,0,0), false); - } - else if(minFi < maxFi) - { - getDebugDrawer()->drawArc(center, normal, ref, dbgDrawSize, dbgDrawSize, minFi, maxFi, btVector3(0,0,0), true); - } - tr = p6DOF->getCalculatedTransformA(); - btVector3 bbMin = p6DOF->getTranslationalLimitMotor()->m_lowerLimit; - btVector3 bbMax = p6DOF->getTranslationalLimitMotor()->m_upperLimit; - getDebugDrawer()->drawBox(bbMin, bbMax, tr, btVector3(0,0,0)); - } - } - break; - case SLIDER_CONSTRAINT_TYPE: - { - btSliderConstraint* pSlider = (btSliderConstraint*)constraint; - btTransform tr = pSlider->getCalculatedTransformA(); - if(drawFrames) getDebugDrawer()->drawTransform(tr, dbgDrawSize); - tr = pSlider->getCalculatedTransformB(); - if(drawFrames) getDebugDrawer()->drawTransform(tr, dbgDrawSize); - if(drawLimits) - { - btTransform tr = pSlider->getUseLinearReferenceFrameA() ? pSlider->getCalculatedTransformA() : pSlider->getCalculatedTransformB(); - btVector3 li_min = tr * btVector3(pSlider->getLowerLinLimit(), 0.f, 0.f); - btVector3 li_max = tr * btVector3(pSlider->getUpperLinLimit(), 0.f, 0.f); - getDebugDrawer()->drawLine(li_min, li_max, btVector3(0, 0, 0)); - btVector3 normal = tr.getBasis().getColumn(0); - btVector3 axis = tr.getBasis().getColumn(1); - btScalar a_min = pSlider->getLowerAngLimit(); - btScalar a_max = pSlider->getUpperAngLimit(); - const btVector3& center = pSlider->getCalculatedTransformB().getOrigin(); - getDebugDrawer()->drawArc(center, normal, axis, dbgDrawSize, dbgDrawSize, a_min, a_max, btVector3(0,0,0), true); - } - } - break; - default : - break; - } - return; -} - - - - - -void btDiscreteDynamicsWorld::setConstraintSolver(btConstraintSolver* solver) -{ - if (m_ownsConstraintSolver) - { - btAlignedFree( m_constraintSolver); - } - m_ownsConstraintSolver = false; - m_constraintSolver = solver; -} - -btConstraintSolver* btDiscreteDynamicsWorld::getConstraintSolver() -{ - return m_constraintSolver; -} - - -int btDiscreteDynamicsWorld::getNumConstraints() const -{ - return int(m_constraints.size()); -} -btTypedConstraint* btDiscreteDynamicsWorld::getConstraint(int index) -{ - return m_constraints[index]; -} -const btTypedConstraint* btDiscreteDynamicsWorld::getConstraint(int index) const -{ - return m_constraints[index]; -} - - - -void btDiscreteDynamicsWorld::serializeRigidBodies(btSerializer* serializer) -{ - int i; - //serialize all collision objects - for (i=0;igetInternalType() == btCollisionObject::CO_RIGID_BODY) - { - int len = colObj->calculateSerializeBufferSize(); - btChunk* chunk = serializer->allocate(len,1); - const char* structType = colObj->serialize(chunk->m_oldPtr, serializer); - serializer->finalizeChunk(chunk,structType,BT_RIGIDBODY_CODE,colObj); - } - } - - for (i=0;icalculateSerializeBufferSize(); - btChunk* chunk = serializer->allocate(size,1); - const char* structType = constraint->serialize(chunk->m_oldPtr,serializer); - serializer->finalizeChunk(chunk,structType,BT_CONSTRAINT_CODE,constraint); - } -} - - -void btDiscreteDynamicsWorld::serialize(btSerializer* serializer) -{ - - serializer->startSerialization(); - - serializeRigidBodies(serializer); - - serializeCollisionObjects(serializer); - - serializer->finishSerialization(); -} - diff --git a/extern/bullet2/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h b/extern/bullet2/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h deleted file mode 100644 index df47c29044f..00000000000 --- a/extern/bullet2/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h +++ /dev/null @@ -1,198 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#ifndef BT_DISCRETE_DYNAMICS_WORLD_H -#define BT_DISCRETE_DYNAMICS_WORLD_H - -#include "btDynamicsWorld.h" - -class btDispatcher; -class btOverlappingPairCache; -class btConstraintSolver; -class btSimulationIslandManager; -class btTypedConstraint; -class btActionInterface; - -class btIDebugDraw; -#include "LinearMath/btAlignedObjectArray.h" - - -///btDiscreteDynamicsWorld provides discrete rigid body simulation -///those classes replace the obsolete CcdPhysicsEnvironment/CcdPhysicsController -class btDiscreteDynamicsWorld : public btDynamicsWorld -{ -protected: - - btConstraintSolver* m_constraintSolver; - - btSimulationIslandManager* m_islandManager; - - btAlignedObjectArray m_constraints; - - btAlignedObjectArray m_nonStaticRigidBodies; - - btVector3 m_gravity; - - //for variable timesteps - btScalar m_localTime; - //for variable timesteps - - bool m_ownsIslandManager; - bool m_ownsConstraintSolver; - bool m_synchronizeAllMotionStates; - - btAlignedObjectArray m_actions; - - int m_profileTimings; - - virtual void predictUnconstraintMotion(btScalar timeStep); - - virtual void integrateTransforms(btScalar timeStep); - - virtual void calculateSimulationIslands(); - - virtual void solveConstraints(btContactSolverInfo& solverInfo); - - void updateActivationState(btScalar timeStep); - - void updateActions(btScalar timeStep); - - void startProfiling(btScalar timeStep); - - virtual void internalSingleStepSimulation( btScalar timeStep); - - - virtual void saveKinematicState(btScalar timeStep); - - void serializeRigidBodies(btSerializer* serializer); - -public: - - - ///this btDiscreteDynamicsWorld constructor gets created objects from the user, and will not delete those - btDiscreteDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration); - - virtual ~btDiscreteDynamicsWorld(); - - ///if maxSubSteps > 0, it will interpolate motion between fixedTimeStep's - virtual int stepSimulation( btScalar timeStep,int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.)); - - - virtual void synchronizeMotionStates(); - - ///this can be useful to synchronize a single rigid body -> graphics object - void synchronizeSingleMotionState(btRigidBody* body); - - virtual void addConstraint(btTypedConstraint* constraint, bool disableCollisionsBetweenLinkedBodies=false); - - virtual void removeConstraint(btTypedConstraint* constraint); - - virtual void addAction(btActionInterface*); - - virtual void removeAction(btActionInterface*); - - btSimulationIslandManager* getSimulationIslandManager() - { - return m_islandManager; - } - - const btSimulationIslandManager* getSimulationIslandManager() const - { - return m_islandManager; - } - - btCollisionWorld* getCollisionWorld() - { - return this; - } - - virtual void setGravity(const btVector3& gravity); - - virtual btVector3 getGravity () const; - - virtual void addCollisionObject(btCollisionObject* collisionObject,short int collisionFilterGroup=btBroadphaseProxy::StaticFilter,short int collisionFilterMask=btBroadphaseProxy::AllFilter ^ btBroadphaseProxy::StaticFilter); - - virtual void addRigidBody(btRigidBody* body); - - virtual void addRigidBody(btRigidBody* body, short group, short mask); - - virtual void removeRigidBody(btRigidBody* body); - - ///removeCollisionObject will first check if it is a rigid body, if so call removeRigidBody otherwise call btCollisionWorld::removeCollisionObject - virtual void removeCollisionObject(btCollisionObject* collisionObject); - - - void debugDrawConstraint(btTypedConstraint* constraint); - - virtual void debugDrawWorld(); - - virtual void setConstraintSolver(btConstraintSolver* solver); - - virtual btConstraintSolver* getConstraintSolver(); - - virtual int getNumConstraints() const; - - virtual btTypedConstraint* getConstraint(int index) ; - - virtual const btTypedConstraint* getConstraint(int index) const; - - - virtual btDynamicsWorldType getWorldType() const - { - return BT_DISCRETE_DYNAMICS_WORLD; - } - - ///the forces on each rigidbody is accumulating together with gravity. clear this after each timestep. - virtual void clearForces(); - - ///apply gravity, call this once per timestep - virtual void applyGravity(); - - virtual void setNumTasks(int numTasks) - { - (void) numTasks; - } - - ///obsolete, use updateActions instead - virtual void updateVehicles(btScalar timeStep) - { - updateActions(timeStep); - } - - ///obsolete, use addAction instead - virtual void addVehicle(btActionInterface* vehicle); - ///obsolete, use removeAction instead - virtual void removeVehicle(btActionInterface* vehicle); - ///obsolete, use addAction instead - virtual void addCharacter(btActionInterface* character); - ///obsolete, use removeAction instead - virtual void removeCharacter(btActionInterface* character); - - void setSynchronizeAllMotionStates(bool synchronizeAll) - { - m_synchronizeAllMotionStates = synchronizeAll; - } - bool getSynchronizeAllMotionStates() const - { - return m_synchronizeAllMotionStates; - } - - ///Preliminary serialization test for Bullet 2.76. Loading those files requires a separate parser (see Bullet/Demos/SerializeDemo) - virtual void serialize(btSerializer* serializer); - -}; - -#endif //BT_DISCRETE_DYNAMICS_WORLD_H diff --git a/extern/bullet2/BulletDynamics/Dynamics/btDynamicsWorld.h b/extern/bullet2/BulletDynamics/Dynamics/btDynamicsWorld.h deleted file mode 100644 index a7b85afbec9..00000000000 --- a/extern/bullet2/BulletDynamics/Dynamics/btDynamicsWorld.h +++ /dev/null @@ -1,148 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BT_DYNAMICS_WORLD_H -#define BT_DYNAMICS_WORLD_H - -#include "BulletCollision/CollisionDispatch/btCollisionWorld.h" -#include "BulletDynamics/ConstraintSolver/btContactSolverInfo.h" - -class btTypedConstraint; -class btActionInterface; -class btConstraintSolver; -class btDynamicsWorld; - - -/// Type for the callback for each tick -typedef void (*btInternalTickCallback)(btDynamicsWorld *world, btScalar timeStep); - -enum btDynamicsWorldType -{ - BT_SIMPLE_DYNAMICS_WORLD=1, - BT_DISCRETE_DYNAMICS_WORLD=2, - BT_CONTINUOUS_DYNAMICS_WORLD=3 -}; - -///The btDynamicsWorld is the interface class for several dynamics implementation, basic, discrete, parallel, and continuous etc. -class btDynamicsWorld : public btCollisionWorld -{ - -protected: - btInternalTickCallback m_internalTickCallback; - btInternalTickCallback m_internalPreTickCallback; - void* m_worldUserInfo; - - btContactSolverInfo m_solverInfo; - -public: - - - btDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* broadphase,btCollisionConfiguration* collisionConfiguration) - :btCollisionWorld(dispatcher,broadphase,collisionConfiguration), m_internalTickCallback(0),m_internalPreTickCallback(0), m_worldUserInfo(0) - { - } - - virtual ~btDynamicsWorld() - { - } - - ///stepSimulation proceeds the simulation over 'timeStep', units in preferably in seconds. - ///By default, Bullet will subdivide the timestep in constant substeps of each 'fixedTimeStep'. - ///in order to keep the simulation real-time, the maximum number of substeps can be clamped to 'maxSubSteps'. - ///You can disable subdividing the timestep/substepping by passing maxSubSteps=0 as second argument to stepSimulation, but in that case you have to keep the timeStep constant. - virtual int stepSimulation( btScalar timeStep,int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.))=0; - - virtual void debugDrawWorld() = 0; - - virtual void addConstraint(btTypedConstraint* constraint, bool disableCollisionsBetweenLinkedBodies=false) - { - (void)constraint; (void)disableCollisionsBetweenLinkedBodies; - } - - virtual void removeConstraint(btTypedConstraint* constraint) {(void)constraint;} - - virtual void addAction(btActionInterface* action) = 0; - - virtual void removeAction(btActionInterface* action) = 0; - - //once a rigidbody is added to the dynamics world, it will get this gravity assigned - //existing rigidbodies in the world get gravity assigned too, during this method - virtual void setGravity(const btVector3& gravity) = 0; - virtual btVector3 getGravity () const = 0; - - virtual void synchronizeMotionStates() = 0; - - virtual void addRigidBody(btRigidBody* body) = 0; - - virtual void removeRigidBody(btRigidBody* body) = 0; - - virtual void setConstraintSolver(btConstraintSolver* solver) = 0; - - virtual btConstraintSolver* getConstraintSolver() = 0; - - virtual int getNumConstraints() const { return 0; } - - virtual btTypedConstraint* getConstraint(int index) { (void)index; return 0; } - - virtual const btTypedConstraint* getConstraint(int index) const { (void)index; return 0; } - - virtual btDynamicsWorldType getWorldType() const=0; - - virtual void clearForces() = 0; - - /// Set the callback for when an internal tick (simulation substep) happens, optional user info - void setInternalTickCallback(btInternalTickCallback cb, void* worldUserInfo=0,bool isPreTick=false) - { - if (isPreTick) - { - m_internalPreTickCallback = cb; - } else - { - m_internalTickCallback = cb; - } - m_worldUserInfo = worldUserInfo; - } - - void setWorldUserInfo(void* worldUserInfo) - { - m_worldUserInfo = worldUserInfo; - } - - void* getWorldUserInfo() const - { - return m_worldUserInfo; - } - - btContactSolverInfo& getSolverInfo() - { - return m_solverInfo; - } - - - ///obsolete, use addAction instead. - virtual void addVehicle(btActionInterface* vehicle) {(void)vehicle;} - ///obsolete, use removeAction instead - virtual void removeVehicle(btActionInterface* vehicle) {(void)vehicle;} - ///obsolete, use addAction instead. - virtual void addCharacter(btActionInterface* character) {(void)character;} - ///obsolete, use removeAction instead - virtual void removeCharacter(btActionInterface* character) {(void)character;} - - -}; - -#endif //BT_DYNAMICS_WORLD_H - - diff --git a/extern/bullet2/BulletDynamics/Dynamics/btRigidBody.cpp b/extern/bullet2/BulletDynamics/Dynamics/btRigidBody.cpp deleted file mode 100644 index 35de8e47570..00000000000 --- a/extern/bullet2/BulletDynamics/Dynamics/btRigidBody.cpp +++ /dev/null @@ -1,400 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btRigidBody.h" -#include "BulletCollision/CollisionShapes/btConvexShape.h" -#include "LinearMath/btMinMax.h" -#include "LinearMath/btTransformUtil.h" -#include "LinearMath/btMotionState.h" -#include "BulletDynamics/ConstraintSolver/btTypedConstraint.h" -#include "LinearMath/btSerializer.h" - -//'temporarily' global variables -btScalar gDeactivationTime = btScalar(2.); -bool gDisableDeactivation = false; -static int uniqueId = 0; - - -btRigidBody::btRigidBody(const btRigidBody::btRigidBodyConstructionInfo& constructionInfo) -{ - setupRigidBody(constructionInfo); -} - -btRigidBody::btRigidBody(btScalar mass, btMotionState *motionState, btCollisionShape *collisionShape, const btVector3 &localInertia) -{ - btRigidBodyConstructionInfo cinfo(mass,motionState,collisionShape,localInertia); - setupRigidBody(cinfo); -} - -void btRigidBody::setupRigidBody(const btRigidBody::btRigidBodyConstructionInfo& constructionInfo) -{ - - m_internalType=CO_RIGID_BODY; - - m_linearVelocity.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0)); - m_angularVelocity.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); - m_angularFactor.setValue(1,1,1); - m_linearFactor.setValue(1,1,1); - m_gravity.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0)); - m_gravity_acceleration.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0)); - m_totalForce.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0)); - m_totalTorque.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0)), - m_linearDamping = btScalar(0.); - m_angularDamping = btScalar(0.5); - m_linearSleepingThreshold = constructionInfo.m_linearSleepingThreshold; - m_angularSleepingThreshold = constructionInfo.m_angularSleepingThreshold; - m_optionalMotionState = constructionInfo.m_motionState; - m_contactSolverType = 0; - m_frictionSolverType = 0; - m_additionalDamping = constructionInfo.m_additionalDamping; - m_additionalDampingFactor = constructionInfo.m_additionalDampingFactor; - m_additionalLinearDampingThresholdSqr = constructionInfo.m_additionalLinearDampingThresholdSqr; - m_additionalAngularDampingThresholdSqr = constructionInfo.m_additionalAngularDampingThresholdSqr; - m_additionalAngularDampingFactor = constructionInfo.m_additionalAngularDampingFactor; - - if (m_optionalMotionState) - { - m_optionalMotionState->getWorldTransform(m_worldTransform); - } else - { - m_worldTransform = constructionInfo.m_startWorldTransform; - } - - m_interpolationWorldTransform = m_worldTransform; - m_interpolationLinearVelocity.setValue(0,0,0); - m_interpolationAngularVelocity.setValue(0,0,0); - - //moved to btCollisionObject - m_friction = constructionInfo.m_friction; - m_restitution = constructionInfo.m_restitution; - - setCollisionShape( constructionInfo.m_collisionShape ); - m_debugBodyId = uniqueId++; - - setMassProps(constructionInfo.m_mass, constructionInfo.m_localInertia); - setDamping(constructionInfo.m_linearDamping, constructionInfo.m_angularDamping); - updateInertiaTensor(); - - m_rigidbodyFlags = 0; - - - m_deltaLinearVelocity.setZero(); - m_deltaAngularVelocity.setZero(); - m_invMass = m_inverseMass*m_linearFactor; - m_pushVelocity.setZero(); - m_turnVelocity.setZero(); - - - -} - - -void btRigidBody::predictIntegratedTransform(btScalar timeStep,btTransform& predictedTransform) -{ - btTransformUtil::integrateTransform(m_worldTransform,m_linearVelocity,m_angularVelocity,timeStep,predictedTransform); -} - -void btRigidBody::saveKinematicState(btScalar timeStep) -{ - //todo: clamp to some (user definable) safe minimum timestep, to limit maximum angular/linear velocities - if (timeStep != btScalar(0.)) - { - //if we use motionstate to synchronize world transforms, get the new kinematic/animated world transform - if (getMotionState()) - getMotionState()->getWorldTransform(m_worldTransform); - btVector3 linVel,angVel; - - btTransformUtil::calculateVelocity(m_interpolationWorldTransform,m_worldTransform,timeStep,m_linearVelocity,m_angularVelocity); - m_interpolationLinearVelocity = m_linearVelocity; - m_interpolationAngularVelocity = m_angularVelocity; - m_interpolationWorldTransform = m_worldTransform; - //printf("angular = %f %f %f\n",m_angularVelocity.getX(),m_angularVelocity.getY(),m_angularVelocity.getZ()); - } -} - -void btRigidBody::getAabb(btVector3& aabbMin,btVector3& aabbMax) const -{ - getCollisionShape()->getAabb(m_worldTransform,aabbMin,aabbMax); -} - - - - -void btRigidBody::setGravity(const btVector3& acceleration) -{ - if (m_inverseMass != btScalar(0.0)) - { - m_gravity = acceleration * (btScalar(1.0) / m_inverseMass); - } - m_gravity_acceleration = acceleration; -} - - - - - - -void btRigidBody::setDamping(btScalar lin_damping, btScalar ang_damping) -{ - m_linearDamping = GEN_clamped(lin_damping, (btScalar)btScalar(0.0), (btScalar)btScalar(1.0)); - m_angularDamping = GEN_clamped(ang_damping, (btScalar)btScalar(0.0), (btScalar)btScalar(1.0)); -} - - - - -///applyDamping damps the velocity, using the given m_linearDamping and m_angularDamping -void btRigidBody::applyDamping(btScalar timeStep) -{ - //On new damping: see discussion/issue report here: http://code.google.com/p/bullet/issues/detail?id=74 - //todo: do some performance comparisons (but other parts of the engine are probably bottleneck anyway - -//#define USE_OLD_DAMPING_METHOD 1 -#ifdef USE_OLD_DAMPING_METHOD - m_linearVelocity *= GEN_clamped((btScalar(1.) - timeStep * m_linearDamping), (btScalar)btScalar(0.0), (btScalar)btScalar(1.0)); - m_angularVelocity *= GEN_clamped((btScalar(1.) - timeStep * m_angularDamping), (btScalar)btScalar(0.0), (btScalar)btScalar(1.0)); -#else - m_linearVelocity *= btPow(btScalar(1)-m_linearDamping, timeStep); - m_angularVelocity *= btPow(btScalar(1)-m_angularDamping, timeStep); -#endif - - if (m_additionalDamping) - { - //Additional damping can help avoiding lowpass jitter motion, help stability for ragdolls etc. - //Such damping is undesirable, so once the overall simulation quality of the rigid body dynamics system has improved, this should become obsolete - if ((m_angularVelocity.length2() < m_additionalAngularDampingThresholdSqr) && - (m_linearVelocity.length2() < m_additionalLinearDampingThresholdSqr)) - { - m_angularVelocity *= m_additionalDampingFactor; - m_linearVelocity *= m_additionalDampingFactor; - } - - - btScalar speed = m_linearVelocity.length(); - if (speed < m_linearDamping) - { - btScalar dampVel = btScalar(0.005); - if (speed > dampVel) - { - btVector3 dir = m_linearVelocity.normalized(); - m_linearVelocity -= dir * dampVel; - } else - { - m_linearVelocity.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); - } - } - - btScalar angSpeed = m_angularVelocity.length(); - if (angSpeed < m_angularDamping) - { - btScalar angDampVel = btScalar(0.005); - if (angSpeed > angDampVel) - { - btVector3 dir = m_angularVelocity.normalized(); - m_angularVelocity -= dir * angDampVel; - } else - { - m_angularVelocity.setValue(btScalar(0.),btScalar(0.),btScalar(0.)); - } - } - } -} - - -void btRigidBody::applyGravity() -{ - if (isStaticOrKinematicObject()) - return; - - applyCentralForce(m_gravity); - -} - -void btRigidBody::proceedToTransform(const btTransform& newTrans) -{ - setCenterOfMassTransform( newTrans ); -} - - -void btRigidBody::setMassProps(btScalar mass, const btVector3& inertia) -{ - if (mass == btScalar(0.)) - { - m_collisionFlags |= btCollisionObject::CF_STATIC_OBJECT; - m_inverseMass = btScalar(0.); - } else - { - m_collisionFlags &= (~btCollisionObject::CF_STATIC_OBJECT); - m_inverseMass = btScalar(1.0) / mass; - } - - m_invInertiaLocal.setValue(inertia.x() != btScalar(0.0) ? btScalar(1.0) / inertia.x(): btScalar(0.0), - inertia.y() != btScalar(0.0) ? btScalar(1.0) / inertia.y(): btScalar(0.0), - inertia.z() != btScalar(0.0) ? btScalar(1.0) / inertia.z(): btScalar(0.0)); - - m_invMass = m_linearFactor*m_inverseMass; -} - - - -void btRigidBody::updateInertiaTensor() -{ - m_invInertiaTensorWorld = m_worldTransform.getBasis().scaled(m_invInertiaLocal) * m_worldTransform.getBasis().transpose(); -} - - -void btRigidBody::integrateVelocities(btScalar step) -{ - if (isStaticOrKinematicObject()) - return; - - m_linearVelocity += m_totalForce * (m_inverseMass * step); - m_angularVelocity += m_invInertiaTensorWorld * m_totalTorque * step; - -#define MAX_ANGVEL SIMD_HALF_PI - /// clamp angular velocity. collision calculations will fail on higher angular velocities - btScalar angvel = m_angularVelocity.length(); - if (angvel*step > MAX_ANGVEL) - { - m_angularVelocity *= (MAX_ANGVEL/step) /angvel; - } - -} - -btQuaternion btRigidBody::getOrientation() const -{ - btQuaternion orn; - m_worldTransform.getBasis().getRotation(orn); - return orn; -} - - -void btRigidBody::setCenterOfMassTransform(const btTransform& xform) -{ - - if (isStaticOrKinematicObject()) - { - m_interpolationWorldTransform = m_worldTransform; - } else - { - m_interpolationWorldTransform = xform; - } - m_interpolationLinearVelocity = getLinearVelocity(); - m_interpolationAngularVelocity = getAngularVelocity(); - m_worldTransform = xform; - updateInertiaTensor(); -} - - -bool btRigidBody::checkCollideWithOverride(btCollisionObject* co) -{ - btRigidBody* otherRb = btRigidBody::upcast(co); - if (!otherRb) - return true; - - for (int i = 0; i < m_constraintRefs.size(); ++i) - { - btTypedConstraint* c = m_constraintRefs[i]; - if (&c->getRigidBodyA() == otherRb || &c->getRigidBodyB() == otherRb) - return false; - } - - return true; -} - -void btRigidBody::internalWritebackVelocity(btScalar timeStep) -{ - (void) timeStep; - if (m_inverseMass) - { - setLinearVelocity(getLinearVelocity()+ m_deltaLinearVelocity); - setAngularVelocity(getAngularVelocity()+m_deltaAngularVelocity); - - //correct the position/orientation based on push/turn recovery - btTransform newTransform; - btTransformUtil::integrateTransform(getWorldTransform(),m_pushVelocity,m_turnVelocity,timeStep,newTransform); - setWorldTransform(newTransform); - //m_originalBody->setCompanionId(-1); - } - m_deltaLinearVelocity.setZero(); - m_deltaAngularVelocity .setZero(); - m_pushVelocity.setZero(); - m_turnVelocity.setZero(); -} - - - -void btRigidBody::addConstraintRef(btTypedConstraint* c) -{ - int index = m_constraintRefs.findLinearSearch(c); - if (index == m_constraintRefs.size()) - m_constraintRefs.push_back(c); - - m_checkCollideWith = true; -} - -void btRigidBody::removeConstraintRef(btTypedConstraint* c) -{ - m_constraintRefs.remove(c); - m_checkCollideWith = m_constraintRefs.size() > 0; -} - -int btRigidBody::calculateSerializeBufferSize() const -{ - int sz = sizeof(btRigidBodyData); - return sz; -} - - ///fills the dataBuffer and returns the struct name (and 0 on failure) -const char* btRigidBody::serialize(void* dataBuffer, class btSerializer* serializer) const -{ - btRigidBodyData* rbd = (btRigidBodyData*) dataBuffer; - - btCollisionObject::serialize(&rbd->m_collisionObjectData, serializer); - - m_invInertiaTensorWorld.serialize(rbd->m_invInertiaTensorWorld); - m_linearVelocity.serialize(rbd->m_linearVelocity); - m_angularVelocity.serialize(rbd->m_angularVelocity); - rbd->m_inverseMass = m_inverseMass; - m_angularFactor.serialize(rbd->m_angularFactor); - m_linearFactor.serialize(rbd->m_linearFactor); - m_gravity.serialize(rbd->m_gravity); - m_gravity_acceleration.serialize(rbd->m_gravity_acceleration); - m_invInertiaLocal.serialize(rbd->m_invInertiaLocal); - m_totalForce.serialize(rbd->m_totalForce); - m_totalTorque.serialize(rbd->m_totalTorque); - rbd->m_linearDamping = m_linearDamping; - rbd->m_angularDamping = m_angularDamping; - rbd->m_additionalDamping = m_additionalDamping; - rbd->m_additionalDampingFactor = m_additionalDampingFactor; - rbd->m_additionalLinearDampingThresholdSqr = m_additionalLinearDampingThresholdSqr; - rbd->m_additionalAngularDampingThresholdSqr = m_additionalAngularDampingThresholdSqr; - rbd->m_additionalAngularDampingFactor = m_additionalAngularDampingFactor; - rbd->m_linearSleepingThreshold=m_linearSleepingThreshold; - rbd->m_angularSleepingThreshold = m_angularSleepingThreshold; - - return btRigidBodyDataName; -} - - - -void btRigidBody::serializeSingleObject(class btSerializer* serializer) const -{ - btChunk* chunk = serializer->allocate(calculateSerializeBufferSize(),1); - const char* structType = serialize(chunk->m_oldPtr, serializer); - serializer->finalizeChunk(chunk,structType,BT_RIGIDBODY_CODE,(void*)this); -} - - diff --git a/extern/bullet2/BulletDynamics/Dynamics/btRigidBody.h b/extern/bullet2/BulletDynamics/Dynamics/btRigidBody.h deleted file mode 100644 index 571a30ce6b8..00000000000 --- a/extern/bullet2/BulletDynamics/Dynamics/btRigidBody.h +++ /dev/null @@ -1,670 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef RIGIDBODY_H -#define RIGIDBODY_H - -#include "LinearMath/btAlignedObjectArray.h" -#include "LinearMath/btTransform.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" - -class btCollisionShape; -class btMotionState; -class btTypedConstraint; - - -extern btScalar gDeactivationTime; -extern bool gDisableDeactivation; - -#ifdef BT_USE_DOUBLE_PRECISION -#define btRigidBodyData btRigidBodyDoubleData -#define btRigidBodyDataName "btRigidBodyDoubleData" -#else -#define btRigidBodyData btRigidBodyFloatData -#define btRigidBodyDataName "btRigidBodyFloatData" -#endif //BT_USE_DOUBLE_PRECISION - - -enum btRigidBodyFlags -{ - BT_DISABLE_WORLD_GRAVITY = 1 -}; - - -///The btRigidBody is the main class for rigid body objects. It is derived from btCollisionObject, so it keeps a pointer to a btCollisionShape. -///It is recommended for performance and memory use to share btCollisionShape objects whenever possible. -///There are 3 types of rigid bodies: -///- A) Dynamic rigid bodies, with positive mass. Motion is controlled by rigid body dynamics. -///- B) Fixed objects with zero mass. They are not moving (basically collision objects) -///- C) Kinematic objects, which are objects without mass, but the user can move them. There is on-way interaction, and Bullet calculates a velocity based on the timestep and previous and current world transform. -///Bullet automatically deactivates dynamic rigid bodies, when the velocity is below a threshold for a given time. -///Deactivated (sleeping) rigid bodies don't take any processing time, except a minor broadphase collision detection impact (to allow active objects to activate/wake up sleeping objects) -class btRigidBody : public btCollisionObject -{ - - btMatrix3x3 m_invInertiaTensorWorld; - btVector3 m_linearVelocity; - btVector3 m_angularVelocity; - btScalar m_inverseMass; - btVector3 m_linearFactor; - - btVector3 m_gravity; - btVector3 m_gravity_acceleration; - btVector3 m_invInertiaLocal; - btVector3 m_totalForce; - btVector3 m_totalTorque; - - btScalar m_linearDamping; - btScalar m_angularDamping; - - bool m_additionalDamping; - btScalar m_additionalDampingFactor; - btScalar m_additionalLinearDampingThresholdSqr; - btScalar m_additionalAngularDampingThresholdSqr; - btScalar m_additionalAngularDampingFactor; - - - btScalar m_linearSleepingThreshold; - btScalar m_angularSleepingThreshold; - - //m_optionalMotionState allows to automatic synchronize the world transform for active objects - btMotionState* m_optionalMotionState; - - //keep track of typed constraints referencing this rigid body - btAlignedObjectArray m_constraintRefs; - - int m_rigidbodyFlags; - - int m_debugBodyId; - - -protected: - - ATTRIBUTE_ALIGNED64(btVector3 m_deltaLinearVelocity); - btVector3 m_deltaAngularVelocity; - btVector3 m_angularFactor; - btVector3 m_invMass; - btVector3 m_pushVelocity; - btVector3 m_turnVelocity; - - -public: - - - ///The btRigidBodyConstructionInfo structure provides information to create a rigid body. Setting mass to zero creates a fixed (non-dynamic) rigid body. - ///For dynamic objects, you can use the collision shape to approximate the local inertia tensor, otherwise use the zero vector (default argument) - ///You can use the motion state to synchronize the world transform between physics and graphics objects. - ///And if the motion state is provided, the rigid body will initialize its initial world transform from the motion state, - ///m_startWorldTransform is only used when you don't provide a motion state. - struct btRigidBodyConstructionInfo - { - btScalar m_mass; - - ///When a motionState is provided, the rigid body will initialize its world transform from the motion state - ///In this case, m_startWorldTransform is ignored. - btMotionState* m_motionState; - btTransform m_startWorldTransform; - - btCollisionShape* m_collisionShape; - btVector3 m_localInertia; - btScalar m_linearDamping; - btScalar m_angularDamping; - - ///best simulation results when friction is non-zero - btScalar m_friction; - ///best simulation results using zero restitution. - btScalar m_restitution; - - btScalar m_linearSleepingThreshold; - btScalar m_angularSleepingThreshold; - - //Additional damping can help avoiding lowpass jitter motion, help stability for ragdolls etc. - //Such damping is undesirable, so once the overall simulation quality of the rigid body dynamics system has improved, this should become obsolete - bool m_additionalDamping; - btScalar m_additionalDampingFactor; - btScalar m_additionalLinearDampingThresholdSqr; - btScalar m_additionalAngularDampingThresholdSqr; - btScalar m_additionalAngularDampingFactor; - - btRigidBodyConstructionInfo( btScalar mass, btMotionState* motionState, btCollisionShape* collisionShape, const btVector3& localInertia=btVector3(0,0,0)): - m_mass(mass), - m_motionState(motionState), - m_collisionShape(collisionShape), - m_localInertia(localInertia), - m_linearDamping(btScalar(0.)), - m_angularDamping(btScalar(0.)), - m_friction(btScalar(0.5)), - m_restitution(btScalar(0.)), - m_linearSleepingThreshold(btScalar(0.8)), - m_angularSleepingThreshold(btScalar(1.f)), - m_additionalDamping(false), - m_additionalDampingFactor(btScalar(0.005)), - m_additionalLinearDampingThresholdSqr(btScalar(0.01)), - m_additionalAngularDampingThresholdSqr(btScalar(0.01)), - m_additionalAngularDampingFactor(btScalar(0.01)) - { - m_startWorldTransform.setIdentity(); - } - }; - - ///btRigidBody constructor using construction info - btRigidBody( const btRigidBodyConstructionInfo& constructionInfo); - - ///btRigidBody constructor for backwards compatibility. - ///To specify friction (etc) during rigid body construction, please use the other constructor (using btRigidBodyConstructionInfo) - btRigidBody( btScalar mass, btMotionState* motionState, btCollisionShape* collisionShape, const btVector3& localInertia=btVector3(0,0,0)); - - - virtual ~btRigidBody() - { - //No constraints should point to this rigidbody - //Remove constraints from the dynamics world before you delete the related rigidbodies. - btAssert(m_constraintRefs.size()==0); - } - -protected: - - ///setupRigidBody is only used internally by the constructor - void setupRigidBody(const btRigidBodyConstructionInfo& constructionInfo); - -public: - - void proceedToTransform(const btTransform& newTrans); - - ///to keep collision detection and dynamics separate we don't store a rigidbody pointer - ///but a rigidbody is derived from btCollisionObject, so we can safely perform an upcast - static const btRigidBody* upcast(const btCollisionObject* colObj) - { - if (colObj->getInternalType()==btCollisionObject::CO_RIGID_BODY) - return (const btRigidBody*)colObj; - return 0; - } - static btRigidBody* upcast(btCollisionObject* colObj) - { - if (colObj->getInternalType()==btCollisionObject::CO_RIGID_BODY) - return (btRigidBody*)colObj; - return 0; - } - - /// continuous collision detection needs prediction - void predictIntegratedTransform(btScalar step, btTransform& predictedTransform) ; - - void saveKinematicState(btScalar step); - - void applyGravity(); - - void setGravity(const btVector3& acceleration); - - const btVector3& getGravity() const - { - return m_gravity_acceleration; - } - - void setDamping(btScalar lin_damping, btScalar ang_damping); - - btScalar getLinearDamping() const - { - return m_linearDamping; - } - - btScalar getAngularDamping() const - { - return m_angularDamping; - } - - btScalar getLinearSleepingThreshold() const - { - return m_linearSleepingThreshold; - } - - btScalar getAngularSleepingThreshold() const - { - return m_angularSleepingThreshold; - } - - void applyDamping(btScalar timeStep); - - SIMD_FORCE_INLINE const btCollisionShape* getCollisionShape() const { - return m_collisionShape; - } - - SIMD_FORCE_INLINE btCollisionShape* getCollisionShape() { - return m_collisionShape; - } - - void setMassProps(btScalar mass, const btVector3& inertia); - - const btVector3& getLinearFactor() const - { - return m_linearFactor; - } - void setLinearFactor(const btVector3& linearFactor) - { - m_linearFactor = linearFactor; - m_invMass = m_linearFactor*m_inverseMass; - } - btScalar getInvMass() const { return m_inverseMass; } - const btMatrix3x3& getInvInertiaTensorWorld() const { - return m_invInertiaTensorWorld; - } - - void integrateVelocities(btScalar step); - - void setCenterOfMassTransform(const btTransform& xform); - - void applyCentralForce(const btVector3& force) - { - m_totalForce += force*m_linearFactor; - } - - const btVector3& getTotalForce() - { - return m_totalForce; - }; - - const btVector3& getTotalTorque() - { - return m_totalTorque; - }; - - const btVector3& getInvInertiaDiagLocal() const - { - return m_invInertiaLocal; - }; - - void setInvInertiaDiagLocal(const btVector3& diagInvInertia) - { - m_invInertiaLocal = diagInvInertia; - } - - void setSleepingThresholds(btScalar linear,btScalar angular) - { - m_linearSleepingThreshold = linear; - m_angularSleepingThreshold = angular; - } - - void applyTorque(const btVector3& torque) - { - m_totalTorque += torque*m_angularFactor; - } - - void applyForce(const btVector3& force, const btVector3& rel_pos) - { - applyCentralForce(force); - applyTorque(rel_pos.cross(force*m_linearFactor)); - } - - void applyCentralImpulse(const btVector3& impulse) - { - m_linearVelocity += impulse *m_linearFactor * m_inverseMass; - } - - void applyTorqueImpulse(const btVector3& torque) - { - m_angularVelocity += m_invInertiaTensorWorld * torque * m_angularFactor; - } - - void applyImpulse(const btVector3& impulse, const btVector3& rel_pos) - { - if (m_inverseMass != btScalar(0.)) - { - applyCentralImpulse(impulse); - if (m_angularFactor) - { - applyTorqueImpulse(rel_pos.cross(impulse*m_linearFactor)); - } - } - } - - void clearForces() - { - m_totalForce.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0)); - m_totalTorque.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0)); - } - - void updateInertiaTensor(); - - const btVector3& getCenterOfMassPosition() const { - return m_worldTransform.getOrigin(); - } - btQuaternion getOrientation() const; - - const btTransform& getCenterOfMassTransform() const { - return m_worldTransform; - } - const btVector3& getLinearVelocity() const { - return m_linearVelocity; - } - const btVector3& getAngularVelocity() const { - return m_angularVelocity; - } - - - inline void setLinearVelocity(const btVector3& lin_vel) - { - m_linearVelocity = lin_vel; - } - - inline void setAngularVelocity(const btVector3& ang_vel) - { - m_angularVelocity = ang_vel; - } - - btVector3 getVelocityInLocalPoint(const btVector3& rel_pos) const - { - //we also calculate lin/ang velocity for kinematic objects - return m_linearVelocity + m_angularVelocity.cross(rel_pos); - - //for kinematic objects, we could also use use: - // return (m_worldTransform(rel_pos) - m_interpolationWorldTransform(rel_pos)) / m_kinematicTimeStep; - } - - void translate(const btVector3& v) - { - m_worldTransform.getOrigin() += v; - } - - - void getAabb(btVector3& aabbMin,btVector3& aabbMax) const; - - - - - - SIMD_FORCE_INLINE btScalar computeImpulseDenominator(const btVector3& pos, const btVector3& normal) const - { - btVector3 r0 = pos - getCenterOfMassPosition(); - - btVector3 c0 = (r0).cross(normal); - - btVector3 vec = (c0 * getInvInertiaTensorWorld()).cross(r0); - - return m_inverseMass + normal.dot(vec); - - } - - SIMD_FORCE_INLINE btScalar computeAngularImpulseDenominator(const btVector3& axis) const - { - btVector3 vec = axis * getInvInertiaTensorWorld(); - return axis.dot(vec); - } - - SIMD_FORCE_INLINE void updateDeactivation(btScalar timeStep) - { - if ( (getActivationState() == ISLAND_SLEEPING) || (getActivationState() == DISABLE_DEACTIVATION)) - return; - - if ((getLinearVelocity().length2() < m_linearSleepingThreshold*m_linearSleepingThreshold) && - (getAngularVelocity().length2() < m_angularSleepingThreshold*m_angularSleepingThreshold)) - { - m_deactivationTime += timeStep; - } else - { - m_deactivationTime=btScalar(0.); - setActivationState(0); - } - - } - - SIMD_FORCE_INLINE bool wantsSleeping() - { - - if (getActivationState() == DISABLE_DEACTIVATION) - return false; - - //disable deactivation - if (gDisableDeactivation || (gDeactivationTime == btScalar(0.))) - return false; - - if ( (getActivationState() == ISLAND_SLEEPING) || (getActivationState() == WANTS_DEACTIVATION)) - return true; - - if (m_deactivationTime> gDeactivationTime) - { - return true; - } - return false; - } - - - - const btBroadphaseProxy* getBroadphaseProxy() const - { - return m_broadphaseHandle; - } - btBroadphaseProxy* getBroadphaseProxy() - { - return m_broadphaseHandle; - } - void setNewBroadphaseProxy(btBroadphaseProxy* broadphaseProxy) - { - m_broadphaseHandle = broadphaseProxy; - } - - //btMotionState allows to automatic synchronize the world transform for active objects - btMotionState* getMotionState() - { - return m_optionalMotionState; - } - const btMotionState* getMotionState() const - { - return m_optionalMotionState; - } - void setMotionState(btMotionState* motionState) - { - m_optionalMotionState = motionState; - if (m_optionalMotionState) - motionState->getWorldTransform(m_worldTransform); - } - - //for experimental overriding of friction/contact solver func - int m_contactSolverType; - int m_frictionSolverType; - - void setAngularFactor(const btVector3& angFac) - { - m_angularFactor = angFac; - } - - void setAngularFactor(btScalar angFac) - { - m_angularFactor.setValue(angFac,angFac,angFac); - } - const btVector3& getAngularFactor() const - { - return m_angularFactor; - } - - //is this rigidbody added to a btCollisionWorld/btDynamicsWorld/btBroadphase? - bool isInWorld() const - { - return (getBroadphaseProxy() != 0); - } - - virtual bool checkCollideWithOverride(btCollisionObject* co); - - void addConstraintRef(btTypedConstraint* c); - void removeConstraintRef(btTypedConstraint* c); - - btTypedConstraint* getConstraintRef(int index) - { - return m_constraintRefs[index]; - } - - int getNumConstraintRefs() - { - return m_constraintRefs.size(); - } - - void setFlags(int flags) - { - m_rigidbodyFlags = flags; - } - - int getFlags() const - { - return m_rigidbodyFlags; - } - - - //////////////////////////////////////////////// - ///some internal methods, don't use them - - btVector3& internalGetDeltaLinearVelocity() - { - return m_deltaLinearVelocity; - } - - btVector3& internalGetDeltaAngularVelocity() - { - return m_deltaAngularVelocity; - } - - const btVector3& internalGetAngularFactor() const - { - return m_angularFactor; - } - - const btVector3& internalGetInvMass() const - { - return m_invMass; - } - - btVector3& internalGetPushVelocity() - { - return m_pushVelocity; - } - - btVector3& internalGetTurnVelocity() - { - return m_turnVelocity; - } - - SIMD_FORCE_INLINE void internalGetVelocityInLocalPointObsolete(const btVector3& rel_pos, btVector3& velocity ) const - { - velocity = getLinearVelocity()+m_deltaLinearVelocity + (getAngularVelocity()+m_deltaAngularVelocity).cross(rel_pos); - } - - SIMD_FORCE_INLINE void internalGetAngularVelocity(btVector3& angVel) const - { - angVel = getAngularVelocity()+m_deltaAngularVelocity; - } - - - //Optimization for the iterative solver: avoid calculating constant terms involving inertia, normal, relative position - SIMD_FORCE_INLINE void internalApplyImpulse(const btVector3& linearComponent, const btVector3& angularComponent,const btScalar impulseMagnitude) - { - if (m_inverseMass) - { - m_deltaLinearVelocity += linearComponent*impulseMagnitude; - m_deltaAngularVelocity += angularComponent*(impulseMagnitude*m_angularFactor); - } - } - - SIMD_FORCE_INLINE void internalApplyPushImpulse(const btVector3& linearComponent, const btVector3& angularComponent,btScalar impulseMagnitude) - { - if (m_inverseMass) - { - m_pushVelocity += linearComponent*impulseMagnitude; - m_turnVelocity += angularComponent*(impulseMagnitude*m_angularFactor); - } - } - - void internalWritebackVelocity() - { - if (m_inverseMass) - { - setLinearVelocity(getLinearVelocity()+ m_deltaLinearVelocity); - setAngularVelocity(getAngularVelocity()+m_deltaAngularVelocity); - m_deltaLinearVelocity.setZero(); - m_deltaAngularVelocity .setZero(); - //m_originalBody->setCompanionId(-1); - } - } - - - void internalWritebackVelocity(btScalar timeStep); - - - /////////////////////////////////////////////// - - virtual int calculateSerializeBufferSize() const; - - ///fills the dataBuffer and returns the struct name (and 0 on failure) - virtual const char* serialize(void* dataBuffer, class btSerializer* serializer) const; - - virtual void serializeSingleObject(class btSerializer* serializer) const; - -}; - -//@todo add m_optionalMotionState and m_constraintRefs to btRigidBodyData -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btRigidBodyFloatData -{ - btCollisionObjectFloatData m_collisionObjectData; - btMatrix3x3FloatData m_invInertiaTensorWorld; - btVector3FloatData m_linearVelocity; - btVector3FloatData m_angularVelocity; - btVector3FloatData m_angularFactor; - btVector3FloatData m_linearFactor; - btVector3FloatData m_gravity; - btVector3FloatData m_gravity_acceleration; - btVector3FloatData m_invInertiaLocal; - btVector3FloatData m_totalForce; - btVector3FloatData m_totalTorque; - float m_inverseMass; - float m_linearDamping; - float m_angularDamping; - float m_additionalDampingFactor; - float m_additionalLinearDampingThresholdSqr; - float m_additionalAngularDampingThresholdSqr; - float m_additionalAngularDampingFactor; - float m_linearSleepingThreshold; - float m_angularSleepingThreshold; - int m_additionalDamping; -}; - -///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 -struct btRigidBodyDoubleData -{ - btCollisionObjectDoubleData m_collisionObjectData; - btMatrix3x3DoubleData m_invInertiaTensorWorld; - btVector3DoubleData m_linearVelocity; - btVector3DoubleData m_angularVelocity; - btVector3DoubleData m_angularFactor; - btVector3DoubleData m_linearFactor; - btVector3DoubleData m_gravity; - btVector3DoubleData m_gravity_acceleration; - btVector3DoubleData m_invInertiaLocal; - btVector3DoubleData m_totalForce; - btVector3DoubleData m_totalTorque; - double m_inverseMass; - double m_linearDamping; - double m_angularDamping; - double m_additionalDampingFactor; - double m_additionalLinearDampingThresholdSqr; - double m_additionalAngularDampingThresholdSqr; - double m_additionalAngularDampingFactor; - double m_linearSleepingThreshold; - double m_angularSleepingThreshold; - int m_additionalDamping; - char m_padding[4]; -}; - - - -#endif - diff --git a/extern/bullet2/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp b/extern/bullet2/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp deleted file mode 100644 index ae449f292f6..00000000000 --- a/extern/bullet2/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp +++ /dev/null @@ -1,253 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btSimpleDynamicsWorld.h" -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" -#include "BulletCollision/BroadphaseCollision/btSimpleBroadphase.h" -#include "BulletCollision/CollisionShapes/btCollisionShape.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h" -#include "BulletDynamics/ConstraintSolver/btContactSolverInfo.h" - - -/* - Make sure this dummy function never changes so that it - can be used by probes that are checking whether the - library is actually installed. -*/ -extern "C" -{ - void btBulletDynamicsProbe (); - void btBulletDynamicsProbe () {} -} - - - - -btSimpleDynamicsWorld::btSimpleDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration) -:btDynamicsWorld(dispatcher,pairCache,collisionConfiguration), -m_constraintSolver(constraintSolver), -m_ownsConstraintSolver(false), -m_gravity(0,0,-10) -{ - -} - - -btSimpleDynamicsWorld::~btSimpleDynamicsWorld() -{ - if (m_ownsConstraintSolver) - btAlignedFree( m_constraintSolver); -} - -int btSimpleDynamicsWorld::stepSimulation( btScalar timeStep,int maxSubSteps, btScalar fixedTimeStep) -{ - (void)fixedTimeStep; - (void)maxSubSteps; - - - ///apply gravity, predict motion - predictUnconstraintMotion(timeStep); - - btDispatcherInfo& dispatchInfo = getDispatchInfo(); - dispatchInfo.m_timeStep = timeStep; - dispatchInfo.m_stepCount = 0; - dispatchInfo.m_debugDraw = getDebugDrawer(); - - ///perform collision detection - performDiscreteCollisionDetection(); - - ///solve contact constraints - int numManifolds = m_dispatcher1->getNumManifolds(); - if (numManifolds) - { - btPersistentManifold** manifoldPtr = ((btCollisionDispatcher*)m_dispatcher1)->getInternalManifoldPointer(); - - btContactSolverInfo infoGlobal; - infoGlobal.m_timeStep = timeStep; - m_constraintSolver->prepareSolve(0,numManifolds); - m_constraintSolver->solveGroup(0,0,manifoldPtr, numManifolds,0,0,infoGlobal,m_debugDrawer, m_stackAlloc,m_dispatcher1); - m_constraintSolver->allSolved(infoGlobal,m_debugDrawer, m_stackAlloc); - } - - ///integrate transforms - integrateTransforms(timeStep); - - updateAabbs(); - - synchronizeMotionStates(); - - clearForces(); - - return 1; - -} - -void btSimpleDynamicsWorld::clearForces() -{ - ///@todo: iterate over awake simulation islands! - for ( int i=0;iclearForces(); - } - } -} - - -void btSimpleDynamicsWorld::setGravity(const btVector3& gravity) -{ - m_gravity = gravity; - for ( int i=0;isetGravity(gravity); - } - } -} - -btVector3 btSimpleDynamicsWorld::getGravity () const -{ - return m_gravity; -} - -void btSimpleDynamicsWorld::removeRigidBody(btRigidBody* body) -{ - btCollisionWorld::removeCollisionObject(body); -} - -void btSimpleDynamicsWorld::removeCollisionObject(btCollisionObject* collisionObject) -{ - btRigidBody* body = btRigidBody::upcast(collisionObject); - if (body) - removeRigidBody(body); - else - btCollisionWorld::removeCollisionObject(collisionObject); -} - - -void btSimpleDynamicsWorld::addRigidBody(btRigidBody* body) -{ - body->setGravity(m_gravity); - - if (body->getCollisionShape()) - { - addCollisionObject(body); - } -} - -void btSimpleDynamicsWorld::updateAabbs() -{ - btTransform predictedTrans; - for ( int i=0;iisActive() && (!body->isStaticObject())) - { - btVector3 minAabb,maxAabb; - colObj->getCollisionShape()->getAabb(colObj->getWorldTransform(), minAabb,maxAabb); - btBroadphaseInterface* bp = getBroadphase(); - bp->setAabb(body->getBroadphaseHandle(),minAabb,maxAabb, m_dispatcher1); - } - } - } -} - -void btSimpleDynamicsWorld::integrateTransforms(btScalar timeStep) -{ - btTransform predictedTrans; - for ( int i=0;iisActive() && (!body->isStaticObject())) - { - body->predictIntegratedTransform(timeStep, predictedTrans); - body->proceedToTransform( predictedTrans); - } - } - } -} - - - -void btSimpleDynamicsWorld::predictUnconstraintMotion(btScalar timeStep) -{ - for ( int i=0;iisStaticObject()) - { - if (body->isActive()) - { - body->applyGravity(); - body->integrateVelocities( timeStep); - body->applyDamping(timeStep); - body->predictIntegratedTransform(timeStep,body->getInterpolationWorldTransform()); - } - } - } - } -} - - -void btSimpleDynamicsWorld::synchronizeMotionStates() -{ - ///@todo: iterate over awake simulation islands! - for ( int i=0;igetMotionState()) - { - if (body->getActivationState() != ISLAND_SLEEPING) - { - body->getMotionState()->setWorldTransform(body->getWorldTransform()); - } - } - } - -} - - -void btSimpleDynamicsWorld::setConstraintSolver(btConstraintSolver* solver) -{ - if (m_ownsConstraintSolver) - { - btAlignedFree(m_constraintSolver); - } - m_ownsConstraintSolver = false; - m_constraintSolver = solver; -} - -btConstraintSolver* btSimpleDynamicsWorld::getConstraintSolver() -{ - return m_constraintSolver; -} diff --git a/extern/bullet2/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h b/extern/bullet2/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h deleted file mode 100644 index ad1f541340f..00000000000 --- a/extern/bullet2/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h +++ /dev/null @@ -1,81 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BT_SIMPLE_DYNAMICS_WORLD_H -#define BT_SIMPLE_DYNAMICS_WORLD_H - -#include "btDynamicsWorld.h" - -class btDispatcher; -class btOverlappingPairCache; -class btConstraintSolver; - -///The btSimpleDynamicsWorld serves as unit-test and to verify more complicated and optimized dynamics worlds. -///Please use btDiscreteDynamicsWorld instead (or btContinuousDynamicsWorld once it is finished). -class btSimpleDynamicsWorld : public btDynamicsWorld -{ -protected: - - btConstraintSolver* m_constraintSolver; - - bool m_ownsConstraintSolver; - - void predictUnconstraintMotion(btScalar timeStep); - - void integrateTransforms(btScalar timeStep); - - btVector3 m_gravity; - -public: - - - - ///this btSimpleDynamicsWorld constructor creates dispatcher, broadphase pairCache and constraintSolver - btSimpleDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration); - - virtual ~btSimpleDynamicsWorld(); - - ///maxSubSteps/fixedTimeStep for interpolation is currently ignored for btSimpleDynamicsWorld, use btDiscreteDynamicsWorld instead - virtual int stepSimulation( btScalar timeStep,int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.)); - - virtual void setGravity(const btVector3& gravity); - - virtual btVector3 getGravity () const; - - virtual void addRigidBody(btRigidBody* body); - - virtual void removeRigidBody(btRigidBody* body); - - ///removeCollisionObject will first check if it is a rigid body, if so call removeRigidBody otherwise call btCollisionWorld::removeCollisionObject - virtual void removeCollisionObject(btCollisionObject* collisionObject); - - virtual void updateAabbs(); - - virtual void synchronizeMotionStates(); - - virtual void setConstraintSolver(btConstraintSolver* solver); - - virtual btConstraintSolver* getConstraintSolver(); - - virtual btDynamicsWorldType getWorldType() const - { - return BT_SIMPLE_DYNAMICS_WORLD; - } - - virtual void clearForces(); - -}; - -#endif //BT_SIMPLE_DYNAMICS_WORLD_H diff --git a/extern/bullet2/BulletDynamics/Vehicle/btRaycastVehicle.cpp b/extern/bullet2/BulletDynamics/Vehicle/btRaycastVehicle.cpp deleted file mode 100644 index b42c024f178..00000000000 --- a/extern/bullet2/BulletDynamics/Vehicle/btRaycastVehicle.cpp +++ /dev/null @@ -1,758 +0,0 @@ -/* - * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/ - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies. - * Erwin Coumans makes no representations about the suitability - * of this software for any purpose. - * It is provided "as is" without express or implied warranty. -*/ - -#include "LinearMath/btVector3.h" -#include "btRaycastVehicle.h" - -#include "BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h" -#include "BulletDynamics/ConstraintSolver/btJacobianEntry.h" -#include "LinearMath/btQuaternion.h" -#include "BulletDynamics/Dynamics/btDynamicsWorld.h" -#include "btVehicleRaycaster.h" -#include "btWheelInfo.h" -#include "LinearMath/btMinMax.h" -#include "LinearMath/btIDebugDraw.h" -#include "BulletDynamics/ConstraintSolver/btContactConstraint.h" - - - -btRaycastVehicle::btRaycastVehicle(const btVehicleTuning& tuning,btRigidBody* chassis, btVehicleRaycaster* raycaster ) -:m_vehicleRaycaster(raycaster), -m_pitchControl(btScalar(0.)) -{ - m_chassisBody = chassis; - m_indexRightAxis = 0; - m_indexUpAxis = 2; - m_indexForwardAxis = 1; - defaultInit(tuning); -} - - -void btRaycastVehicle::defaultInit(const btVehicleTuning& tuning) -{ - (void)tuning; - m_currentVehicleSpeedKmHour = btScalar(0.); - m_steeringValue = btScalar(0.); - -} - - - -btRaycastVehicle::~btRaycastVehicle() -{ -} - - -// -// basically most of the code is general for 2 or 4 wheel vehicles, but some of it needs to be reviewed -// -btWheelInfo& btRaycastVehicle::addWheel( const btVector3& connectionPointCS, const btVector3& wheelDirectionCS0,const btVector3& wheelAxleCS, btScalar suspensionRestLength, btScalar wheelRadius,const btVehicleTuning& tuning, bool isFrontWheel) -{ - - btWheelInfoConstructionInfo ci; - - ci.m_chassisConnectionCS = connectionPointCS; - ci.m_wheelDirectionCS = wheelDirectionCS0; - ci.m_wheelAxleCS = wheelAxleCS; - ci.m_suspensionRestLength = suspensionRestLength; - ci.m_wheelRadius = wheelRadius; - ci.m_suspensionStiffness = tuning.m_suspensionStiffness; - ci.m_wheelsDampingCompression = tuning.m_suspensionCompression; - ci.m_wheelsDampingRelaxation = tuning.m_suspensionDamping; - ci.m_frictionSlip = tuning.m_frictionSlip; - ci.m_bIsFrontWheel = isFrontWheel; - ci.m_maxSuspensionTravelCm = tuning.m_maxSuspensionTravelCm; - ci.m_maxSuspensionForce = tuning.m_maxSuspensionForce; - - m_wheelInfo.push_back( btWheelInfo(ci)); - - btWheelInfo& wheel = m_wheelInfo[getNumWheels()-1]; - - updateWheelTransformsWS( wheel , false ); - updateWheelTransform(getNumWheels()-1,false); - return wheel; -} - - - - -const btTransform& btRaycastVehicle::getWheelTransformWS( int wheelIndex ) const -{ - btAssert(wheelIndex < getNumWheels()); - const btWheelInfo& wheel = m_wheelInfo[wheelIndex]; - return wheel.m_worldTransform; - -} - -void btRaycastVehicle::updateWheelTransform( int wheelIndex , bool interpolatedTransform) -{ - - btWheelInfo& wheel = m_wheelInfo[ wheelIndex ]; - updateWheelTransformsWS(wheel,interpolatedTransform); - btVector3 up = -wheel.m_raycastInfo.m_wheelDirectionWS; - const btVector3& right = wheel.m_raycastInfo.m_wheelAxleWS; - btVector3 fwd = up.cross(right); - fwd = fwd.normalize(); -// up = right.cross(fwd); -// up.normalize(); - - //rotate around steering over de wheelAxleWS - btScalar steering = wheel.m_steering; - - btQuaternion steeringOrn(up,steering);//wheel.m_steering); - btMatrix3x3 steeringMat(steeringOrn); - - btQuaternion rotatingOrn(right,-wheel.m_rotation); - btMatrix3x3 rotatingMat(rotatingOrn); - - btMatrix3x3 basis2( - right[0],fwd[0],up[0], - right[1],fwd[1],up[1], - right[2],fwd[2],up[2] - ); - - wheel.m_worldTransform.setBasis(steeringMat * rotatingMat * basis2); - wheel.m_worldTransform.setOrigin( - wheel.m_raycastInfo.m_hardPointWS + wheel.m_raycastInfo.m_wheelDirectionWS * wheel.m_raycastInfo.m_suspensionLength - ); -} - -void btRaycastVehicle::resetSuspension() -{ - - int i; - for (i=0;igetMotionState())) - { - getRigidBody()->getMotionState()->getWorldTransform(chassisTrans); - } - - wheel.m_raycastInfo.m_hardPointWS = chassisTrans( wheel.m_chassisConnectionPointCS ); - wheel.m_raycastInfo.m_wheelDirectionWS = chassisTrans.getBasis() * wheel.m_wheelDirectionCS ; - wheel.m_raycastInfo.m_wheelAxleWS = chassisTrans.getBasis() * wheel.m_wheelAxleCS; -} - -btScalar btRaycastVehicle::rayCast(btWheelInfo& wheel) -{ - updateWheelTransformsWS( wheel,false); - - - btScalar depth = -1; - - btScalar raylen = wheel.getSuspensionRestLength()+wheel.m_wheelsRadius; - - btVector3 rayvector = wheel.m_raycastInfo.m_wheelDirectionWS * (raylen); - const btVector3& source = wheel.m_raycastInfo.m_hardPointWS; - wheel.m_raycastInfo.m_contactPointWS = source + rayvector; - const btVector3& target = wheel.m_raycastInfo.m_contactPointWS; - - btScalar param = btScalar(0.); - - btVehicleRaycaster::btVehicleRaycasterResult rayResults; - - btAssert(m_vehicleRaycaster); - - void* object = m_vehicleRaycaster->castRay(source,target,rayResults); - - wheel.m_raycastInfo.m_groundObject = 0; - - if (object) - { - param = rayResults.m_distFraction; - depth = raylen * rayResults.m_distFraction; - wheel.m_raycastInfo.m_contactNormalWS = rayResults.m_hitNormalInWorld; - wheel.m_raycastInfo.m_isInContact = true; - - wheel.m_raycastInfo.m_groundObject = &getFixedBody();///@todo for driving on dynamic/movable objects!; - //wheel.m_raycastInfo.m_groundObject = object; - - - btScalar hitDistance = param*raylen; - wheel.m_raycastInfo.m_suspensionLength = hitDistance - wheel.m_wheelsRadius; - //clamp on max suspension travel - - btScalar minSuspensionLength = wheel.getSuspensionRestLength() - wheel.m_maxSuspensionTravelCm*btScalar(0.01); - btScalar maxSuspensionLength = wheel.getSuspensionRestLength()+ wheel.m_maxSuspensionTravelCm*btScalar(0.01); - if (wheel.m_raycastInfo.m_suspensionLength < minSuspensionLength) - { - wheel.m_raycastInfo.m_suspensionLength = minSuspensionLength; - } - if (wheel.m_raycastInfo.m_suspensionLength > maxSuspensionLength) - { - wheel.m_raycastInfo.m_suspensionLength = maxSuspensionLength; - } - - wheel.m_raycastInfo.m_contactPointWS = rayResults.m_hitPointInWorld; - - btScalar denominator= wheel.m_raycastInfo.m_contactNormalWS.dot( wheel.m_raycastInfo.m_wheelDirectionWS ); - - btVector3 chassis_velocity_at_contactPoint; - btVector3 relpos = wheel.m_raycastInfo.m_contactPointWS-getRigidBody()->getCenterOfMassPosition(); - - chassis_velocity_at_contactPoint = getRigidBody()->getVelocityInLocalPoint(relpos); - - btScalar projVel = wheel.m_raycastInfo.m_contactNormalWS.dot( chassis_velocity_at_contactPoint ); - - if ( denominator >= btScalar(-0.1)) - { - wheel.m_suspensionRelativeVelocity = btScalar(0.0); - wheel.m_clippedInvContactDotSuspension = btScalar(1.0) / btScalar(0.1); - } - else - { - btScalar inv = btScalar(-1.) / denominator; - wheel.m_suspensionRelativeVelocity = projVel * inv; - wheel.m_clippedInvContactDotSuspension = inv; - } - - } else - { - //put wheel info as in rest position - wheel.m_raycastInfo.m_suspensionLength = wheel.getSuspensionRestLength(); - wheel.m_suspensionRelativeVelocity = btScalar(0.0); - wheel.m_raycastInfo.m_contactNormalWS = - wheel.m_raycastInfo.m_wheelDirectionWS; - wheel.m_clippedInvContactDotSuspension = btScalar(1.0); - } - - return depth; -} - - -const btTransform& btRaycastVehicle::getChassisWorldTransform() const -{ - /*if (getRigidBody()->getMotionState()) - { - btTransform chassisWorldTrans; - getRigidBody()->getMotionState()->getWorldTransform(chassisWorldTrans); - return chassisWorldTrans; - } - */ - - - return getRigidBody()->getCenterOfMassTransform(); -} - - -void btRaycastVehicle::updateVehicle( btScalar step ) -{ - { - for (int i=0;igetLinearVelocity().length(); - - const btTransform& chassisTrans = getChassisWorldTransform(); - - btVector3 forwardW ( - chassisTrans.getBasis()[0][m_indexForwardAxis], - chassisTrans.getBasis()[1][m_indexForwardAxis], - chassisTrans.getBasis()[2][m_indexForwardAxis]); - - if (forwardW.dot(getRigidBody()->getLinearVelocity()) < btScalar(0.)) - { - m_currentVehicleSpeedKmHour *= btScalar(-1.); - } - - // - // simulate suspension - // - - int i=0; - for (i=0;i wheel.m_maxSuspensionForce) - { - suspensionForce = wheel.m_maxSuspensionForce; - } - btVector3 impulse = wheel.m_raycastInfo.m_contactNormalWS * suspensionForce * step; - btVector3 relpos = wheel.m_raycastInfo.m_contactPointWS - getRigidBody()->getCenterOfMassPosition(); - - getRigidBody()->applyImpulse(impulse, relpos); - - } - - - - updateFriction( step); - - - for (i=0;igetCenterOfMassPosition(); - btVector3 vel = getRigidBody()->getVelocityInLocalPoint( relpos ); - - if (wheel.m_raycastInfo.m_isInContact) - { - const btTransform& chassisWorldTransform = getChassisWorldTransform(); - - btVector3 fwd ( - chassisWorldTransform.getBasis()[0][m_indexForwardAxis], - chassisWorldTransform.getBasis()[1][m_indexForwardAxis], - chassisWorldTransform.getBasis()[2][m_indexForwardAxis]); - - btScalar proj = fwd.dot(wheel.m_raycastInfo.m_contactNormalWS); - fwd -= wheel.m_raycastInfo.m_contactNormalWS * proj; - - btScalar proj2 = fwd.dot(vel); - - wheel.m_deltaRotation = (proj2 * step) / (wheel.m_wheelsRadius); - wheel.m_rotation += wheel.m_deltaRotation; - - } else - { - wheel.m_rotation += wheel.m_deltaRotation; - } - - wheel.m_deltaRotation *= btScalar(0.99);//damping of rotation when not in contact - - } - - - -} - - -void btRaycastVehicle::setSteeringValue(btScalar steering,int wheel) -{ - btAssert(wheel>=0 && wheel < getNumWheels()); - - btWheelInfo& wheelInfo = getWheelInfo(wheel); - wheelInfo.m_steering = steering; -} - - - -btScalar btRaycastVehicle::getSteeringValue(int wheel) const -{ - return getWheelInfo(wheel).m_steering; -} - - -void btRaycastVehicle::applyEngineForce(btScalar force, int wheel) -{ - btAssert(wheel>=0 && wheel < getNumWheels()); - btWheelInfo& wheelInfo = getWheelInfo(wheel); - wheelInfo.m_engineForce = force; -} - - -const btWheelInfo& btRaycastVehicle::getWheelInfo(int index) const -{ - btAssert((index >= 0) && (index < getNumWheels())); - - return m_wheelInfo[index]; -} - -btWheelInfo& btRaycastVehicle::getWheelInfo(int index) -{ - btAssert((index >= 0) && (index < getNumWheels())); - - return m_wheelInfo[index]; -} - -void btRaycastVehicle::setBrake(btScalar brake,int wheelIndex) -{ - btAssert((wheelIndex >= 0) && (wheelIndex < getNumWheels())); - getWheelInfo(wheelIndex).m_brake = brake; -} - - -void btRaycastVehicle::updateSuspension(btScalar deltaTime) -{ - (void)deltaTime; - - btScalar chassisMass = btScalar(1.) / m_chassisBody->getInvMass(); - - for (int w_it=0; w_itcomputeImpulseDenominator(frictionPosWorld,frictionDirectionWorld); - btScalar denom1 = body1->computeImpulseDenominator(frictionPosWorld,frictionDirectionWorld); - btScalar relaxation = 1.f; - m_jacDiagABInv = relaxation/(denom0+denom1); - } - - - -}; - -btScalar calcRollingFriction(btWheelContactPoint& contactPoint); -btScalar calcRollingFriction(btWheelContactPoint& contactPoint) -{ - - btScalar j1=0.f; - - const btVector3& contactPosWorld = contactPoint.m_frictionPositionWorld; - - btVector3 rel_pos1 = contactPosWorld - contactPoint.m_body0->getCenterOfMassPosition(); - btVector3 rel_pos2 = contactPosWorld - contactPoint.m_body1->getCenterOfMassPosition(); - - btScalar maxImpulse = contactPoint.m_maxImpulse; - - btVector3 vel1 = contactPoint.m_body0->getVelocityInLocalPoint(rel_pos1); - btVector3 vel2 = contactPoint.m_body1->getVelocityInLocalPoint(rel_pos2); - btVector3 vel = vel1 - vel2; - - btScalar vrel = contactPoint.m_frictionDirectionWorld.dot(vel); - - // calculate j that moves us to zero relative velocity - j1 = -vrel * contactPoint.m_jacDiagABInv; - btSetMin(j1, maxImpulse); - btSetMax(j1, -maxImpulse); - - return j1; -} - - - - -btScalar sideFrictionStiffness2 = btScalar(1.0); -void btRaycastVehicle::updateFriction(btScalar timeStep) -{ - - //calculate the impulse, so that the wheels don't move sidewards - int numWheel = getNumWheels(); - if (!numWheel) - return; - - m_forwardWS.resize(numWheel); - m_axle.resize(numWheel); - m_forwardImpulse.resize(numWheel); - m_sideImpulse.resize(numWheel); - - int numWheelsOnGround = 0; - - - //collapse all those loops into one! - for (int i=0;i maximpSquared) - { - sliding = true; - - btScalar factor = maximp / btSqrt(impulseSquared); - - m_wheelInfo[wheel].m_skidInfo *= factor; - } - } - - } - } - - - - - if (sliding) - { - for (int wheel = 0;wheel < getNumWheels(); wheel++) - { - if (m_sideImpulse[wheel] != btScalar(0.)) - { - if (m_wheelInfo[wheel].m_skidInfo< btScalar(1.)) - { - m_forwardImpulse[wheel] *= m_wheelInfo[wheel].m_skidInfo; - m_sideImpulse[wheel] *= m_wheelInfo[wheel].m_skidInfo; - } - } - } - } - - // apply the impulses - { - for (int wheel = 0;wheelgetCenterOfMassPosition(); - - if (m_forwardImpulse[wheel] != btScalar(0.)) - { - m_chassisBody->applyImpulse(m_forwardWS[wheel]*(m_forwardImpulse[wheel]),rel_pos); - } - if (m_sideImpulse[wheel] != btScalar(0.)) - { - class btRigidBody* groundObject = (class btRigidBody*) m_wheelInfo[wheel].m_raycastInfo.m_groundObject; - - btVector3 rel_pos2 = wheelInfo.m_raycastInfo.m_contactPointWS - - groundObject->getCenterOfMassPosition(); - - - btVector3 sideImp = m_axle[wheel] * m_sideImpulse[wheel]; - - rel_pos[m_indexUpAxis] *= wheelInfo.m_rollInfluence; - m_chassisBody->applyImpulse(sideImp,rel_pos); - - //apply friction impulse on the ground - groundObject->applyImpulse(-sideImp,rel_pos2); - } - } - } - - -} - - - -void btRaycastVehicle::debugDraw(btIDebugDraw* debugDrawer) -{ - - for (int v=0;vgetNumWheels();v++) - { - btVector3 wheelColor(0,1,1); - if (getWheelInfo(v).m_raycastInfo.m_isInContact) - { - wheelColor.setValue(0,0,1); - } else - { - wheelColor.setValue(1,0,1); - } - - btVector3 wheelPosWS = getWheelInfo(v).m_worldTransform.getOrigin(); - - btVector3 axle = btVector3( - getWheelInfo(v).m_worldTransform.getBasis()[0][getRightAxis()], - getWheelInfo(v).m_worldTransform.getBasis()[1][getRightAxis()], - getWheelInfo(v).m_worldTransform.getBasis()[2][getRightAxis()]); - - //debug wheels (cylinders) - debugDrawer->drawLine(wheelPosWS,wheelPosWS+axle,wheelColor); - debugDrawer->drawLine(wheelPosWS,getWheelInfo(v).m_raycastInfo.m_contactPointWS,wheelColor); - - } -} - - -void* btDefaultVehicleRaycaster::castRay(const btVector3& from,const btVector3& to, btVehicleRaycasterResult& result) -{ -// RayResultCallback& resultCallback; - - btCollisionWorld::ClosestRayResultCallback rayCallback(from,to); - - m_dynamicsWorld->rayTest(from, to, rayCallback); - - if (rayCallback.hasHit()) - { - - btRigidBody* body = btRigidBody::upcast(rayCallback.m_collisionObject); - if (body && body->hasContactResponse()) - { - result.m_hitPointInWorld = rayCallback.m_hitPointWorld; - result.m_hitNormalInWorld = rayCallback.m_hitNormalWorld; - result.m_hitNormalInWorld.normalize(); - result.m_distFraction = rayCallback.m_closestHitFraction; - return body; - } - } - return 0; -} - diff --git a/extern/bullet2/BulletDynamics/Vehicle/btRaycastVehicle.h b/extern/bullet2/BulletDynamics/Vehicle/btRaycastVehicle.h deleted file mode 100644 index 5ce80f4d275..00000000000 --- a/extern/bullet2/BulletDynamics/Vehicle/btRaycastVehicle.h +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/ - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies. - * Erwin Coumans makes no representations about the suitability - * of this software for any purpose. - * It is provided "as is" without express or implied warranty. -*/ -#ifndef RAYCASTVEHICLE_H -#define RAYCASTVEHICLE_H - -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include "BulletDynamics/ConstraintSolver/btTypedConstraint.h" -#include "btVehicleRaycaster.h" -class btDynamicsWorld; -#include "LinearMath/btAlignedObjectArray.h" -#include "btWheelInfo.h" -#include "BulletDynamics/Dynamics/btActionInterface.h" - -class btVehicleTuning; - -///rayCast vehicle, very special constraint that turn a rigidbody into a vehicle. -class btRaycastVehicle : public btActionInterface -{ - - btAlignedObjectArray m_forwardWS; - btAlignedObjectArray m_axle; - btAlignedObjectArray m_forwardImpulse; - btAlignedObjectArray m_sideImpulse; - - ///backwards compatibility - int m_userConstraintType; - int m_userConstraintId; - -public: - class btVehicleTuning - { - public: - - btVehicleTuning() - :m_suspensionStiffness(btScalar(5.88)), - m_suspensionCompression(btScalar(0.83)), - m_suspensionDamping(btScalar(0.88)), - m_maxSuspensionTravelCm(btScalar(500.)), - m_frictionSlip(btScalar(10.5)), - m_maxSuspensionForce(btScalar(6000.)) - { - } - btScalar m_suspensionStiffness; - btScalar m_suspensionCompression; - btScalar m_suspensionDamping; - btScalar m_maxSuspensionTravelCm; - btScalar m_frictionSlip; - btScalar m_maxSuspensionForce; - - }; -private: - - btScalar m_tau; - btScalar m_damping; - btVehicleRaycaster* m_vehicleRaycaster; - btScalar m_pitchControl; - btScalar m_steeringValue; - btScalar m_currentVehicleSpeedKmHour; - - btRigidBody* m_chassisBody; - - int m_indexRightAxis; - int m_indexUpAxis; - int m_indexForwardAxis; - - void defaultInit(const btVehicleTuning& tuning); - -public: - - //constructor to create a car from an existing rigidbody - btRaycastVehicle(const btVehicleTuning& tuning,btRigidBody* chassis, btVehicleRaycaster* raycaster ); - - virtual ~btRaycastVehicle() ; - - - ///btActionInterface interface - virtual void updateAction( btCollisionWorld* collisionWorld, btScalar step) - { - (void) collisionWorld; - updateVehicle(step); - } - - - ///btActionInterface interface - void debugDraw(btIDebugDraw* debugDrawer); - - const btTransform& getChassisWorldTransform() const; - - btScalar rayCast(btWheelInfo& wheel); - - virtual void updateVehicle(btScalar step); - - - void resetSuspension(); - - btScalar getSteeringValue(int wheel) const; - - void setSteeringValue(btScalar steering,int wheel); - - - void applyEngineForce(btScalar force, int wheel); - - const btTransform& getWheelTransformWS( int wheelIndex ) const; - - void updateWheelTransform( int wheelIndex, bool interpolatedTransform = true ); - - void setRaycastWheelInfo( int wheelIndex , bool isInContact, const btVector3& hitPoint, const btVector3& hitNormal,btScalar depth); - - btWheelInfo& addWheel( const btVector3& connectionPointCS0, const btVector3& wheelDirectionCS0,const btVector3& wheelAxleCS,btScalar suspensionRestLength,btScalar wheelRadius,const btVehicleTuning& tuning, bool isFrontWheel); - - inline int getNumWheels() const { - return int (m_wheelInfo.size()); - } - - btAlignedObjectArray m_wheelInfo; - - - const btWheelInfo& getWheelInfo(int index) const; - - btWheelInfo& getWheelInfo(int index); - - void updateWheelTransformsWS(btWheelInfo& wheel , bool interpolatedTransform = true); - - - void setBrake(btScalar brake,int wheelIndex); - - void setPitchControl(btScalar pitch) - { - m_pitchControl = pitch; - } - - void updateSuspension(btScalar deltaTime); - - virtual void updateFriction(btScalar timeStep); - - - - inline btRigidBody* getRigidBody() - { - return m_chassisBody; - } - - const btRigidBody* getRigidBody() const - { - return m_chassisBody; - } - - inline int getRightAxis() const - { - return m_indexRightAxis; - } - inline int getUpAxis() const - { - return m_indexUpAxis; - } - - inline int getForwardAxis() const - { - return m_indexForwardAxis; - } - - - ///Worldspace forward vector - btVector3 getForwardVector() const - { - const btTransform& chassisTrans = getChassisWorldTransform(); - - btVector3 forwardW ( - chassisTrans.getBasis()[0][m_indexForwardAxis], - chassisTrans.getBasis()[1][m_indexForwardAxis], - chassisTrans.getBasis()[2][m_indexForwardAxis]); - - return forwardW; - } - - ///Velocity of vehicle (positive if velocity vector has same direction as foward vector) - btScalar getCurrentSpeedKmHour() const - { - return m_currentVehicleSpeedKmHour; - } - - virtual void setCoordinateSystem(int rightIndex,int upIndex,int forwardIndex) - { - m_indexRightAxis = rightIndex; - m_indexUpAxis = upIndex; - m_indexForwardAxis = forwardIndex; - } - - - ///backwards compatibility - int getUserConstraintType() const - { - return m_userConstraintType ; - } - - void setUserConstraintType(int userConstraintType) - { - m_userConstraintType = userConstraintType; - }; - - void setUserConstraintId(int uid) - { - m_userConstraintId = uid; - } - - int getUserConstraintId() const - { - return m_userConstraintId; - } - -}; - -class btDefaultVehicleRaycaster : public btVehicleRaycaster -{ - btDynamicsWorld* m_dynamicsWorld; -public: - btDefaultVehicleRaycaster(btDynamicsWorld* world) - :m_dynamicsWorld(world) - { - } - - virtual void* castRay(const btVector3& from,const btVector3& to, btVehicleRaycasterResult& result); - -}; - - -#endif //RAYCASTVEHICLE_H - diff --git a/extern/bullet2/BulletDynamics/Vehicle/btVehicleRaycaster.h b/extern/bullet2/BulletDynamics/Vehicle/btVehicleRaycaster.h deleted file mode 100644 index 5112ce6d420..00000000000 --- a/extern/bullet2/BulletDynamics/Vehicle/btVehicleRaycaster.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/ - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies. - * Erwin Coumans makes no representations about the suitability - * of this software for any purpose. - * It is provided "as is" without express or implied warranty. -*/ -#ifndef VEHICLE_RAYCASTER_H -#define VEHICLE_RAYCASTER_H - -#include "LinearMath/btVector3.h" - -/// btVehicleRaycaster is provides interface for between vehicle simulation and raycasting -struct btVehicleRaycaster -{ -virtual ~btVehicleRaycaster() -{ -} - struct btVehicleRaycasterResult - { - btVehicleRaycasterResult() :m_distFraction(btScalar(-1.)){}; - btVector3 m_hitPointInWorld; - btVector3 m_hitNormalInWorld; - btScalar m_distFraction; - }; - - virtual void* castRay(const btVector3& from,const btVector3& to, btVehicleRaycasterResult& result) = 0; - -}; - -#endif //VEHICLE_RAYCASTER_H - diff --git a/extern/bullet2/BulletDynamics/Vehicle/btWheelInfo.cpp b/extern/bullet2/BulletDynamics/Vehicle/btWheelInfo.cpp deleted file mode 100644 index ef93c16fffc..00000000000 --- a/extern/bullet2/BulletDynamics/Vehicle/btWheelInfo.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/ - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies. - * Erwin Coumans makes no representations about the suitability - * of this software for any purpose. - * It is provided "as is" without express or implied warranty. -*/ -#include "btWheelInfo.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" // for pointvelocity - - -btScalar btWheelInfo::getSuspensionRestLength() const -{ - - return m_suspensionRestLength1; - -} - -void btWheelInfo::updateWheel(const btRigidBody& chassis,RaycastInfo& raycastInfo) -{ - (void)raycastInfo; - - - if (m_raycastInfo.m_isInContact) - - { - btScalar project= m_raycastInfo.m_contactNormalWS.dot( m_raycastInfo.m_wheelDirectionWS ); - btVector3 chassis_velocity_at_contactPoint; - btVector3 relpos = m_raycastInfo.m_contactPointWS - chassis.getCenterOfMassPosition(); - chassis_velocity_at_contactPoint = chassis.getVelocityInLocalPoint( relpos ); - btScalar projVel = m_raycastInfo.m_contactNormalWS.dot( chassis_velocity_at_contactPoint ); - if ( project >= btScalar(-0.1)) - { - m_suspensionRelativeVelocity = btScalar(0.0); - m_clippedInvContactDotSuspension = btScalar(1.0) / btScalar(0.1); - } - else - { - btScalar inv = btScalar(-1.) / project; - m_suspensionRelativeVelocity = projVel * inv; - m_clippedInvContactDotSuspension = inv; - } - - } - - else // Not in contact : position wheel in a nice (rest length) position - { - m_raycastInfo.m_suspensionLength = this->getSuspensionRestLength(); - m_suspensionRelativeVelocity = btScalar(0.0); - m_raycastInfo.m_contactNormalWS = -m_raycastInfo.m_wheelDirectionWS; - m_clippedInvContactDotSuspension = btScalar(1.0); - } -} diff --git a/extern/bullet2/BulletDynamics/Vehicle/btWheelInfo.h b/extern/bullet2/BulletDynamics/Vehicle/btWheelInfo.h deleted file mode 100644 index b74f8c80acb..00000000000 --- a/extern/bullet2/BulletDynamics/Vehicle/btWheelInfo.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/ - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies. - * Erwin Coumans makes no representations about the suitability - * of this software for any purpose. - * It is provided "as is" without express or implied warranty. -*/ -#ifndef WHEEL_INFO_H -#define WHEEL_INFO_H - -#include "LinearMath/btVector3.h" -#include "LinearMath/btTransform.h" - -class btRigidBody; - -struct btWheelInfoConstructionInfo -{ - btVector3 m_chassisConnectionCS; - btVector3 m_wheelDirectionCS; - btVector3 m_wheelAxleCS; - btScalar m_suspensionRestLength; - btScalar m_maxSuspensionTravelCm; - btScalar m_wheelRadius; - - btScalar m_suspensionStiffness; - btScalar m_wheelsDampingCompression; - btScalar m_wheelsDampingRelaxation; - btScalar m_frictionSlip; - btScalar m_maxSuspensionForce; - bool m_bIsFrontWheel; - -}; - -/// btWheelInfo contains information per wheel about friction and suspension. -struct btWheelInfo -{ - struct RaycastInfo - { - //set by raycaster - btVector3 m_contactNormalWS;//contactnormal - btVector3 m_contactPointWS;//raycast hitpoint - btScalar m_suspensionLength; - btVector3 m_hardPointWS;//raycast starting point - btVector3 m_wheelDirectionWS; //direction in worldspace - btVector3 m_wheelAxleWS; // axle in worldspace - bool m_isInContact; - void* m_groundObject; //could be general void* ptr - }; - - RaycastInfo m_raycastInfo; - - btTransform m_worldTransform; - - btVector3 m_chassisConnectionPointCS; //const - btVector3 m_wheelDirectionCS;//const - btVector3 m_wheelAxleCS; // const or modified by steering - btScalar m_suspensionRestLength1;//const - btScalar m_maxSuspensionTravelCm; - btScalar getSuspensionRestLength() const; - btScalar m_wheelsRadius;//const - btScalar m_suspensionStiffness;//const - btScalar m_wheelsDampingCompression;//const - btScalar m_wheelsDampingRelaxation;//const - btScalar m_frictionSlip; - btScalar m_steering; - btScalar m_rotation; - btScalar m_deltaRotation; - btScalar m_rollInfluence; - btScalar m_maxSuspensionForce; - - btScalar m_engineForce; - - btScalar m_brake; - - bool m_bIsFrontWheel; - - void* m_clientInfo;//can be used to store pointer to sync transforms... - - btWheelInfo(btWheelInfoConstructionInfo& ci) - - { - - m_suspensionRestLength1 = ci.m_suspensionRestLength; - m_maxSuspensionTravelCm = ci.m_maxSuspensionTravelCm; - - m_wheelsRadius = ci.m_wheelRadius; - m_suspensionStiffness = ci.m_suspensionStiffness; - m_wheelsDampingCompression = ci.m_wheelsDampingCompression; - m_wheelsDampingRelaxation = ci.m_wheelsDampingRelaxation; - m_chassisConnectionPointCS = ci.m_chassisConnectionCS; - m_wheelDirectionCS = ci.m_wheelDirectionCS; - m_wheelAxleCS = ci.m_wheelAxleCS; - m_frictionSlip = ci.m_frictionSlip; - m_steering = btScalar(0.); - m_engineForce = btScalar(0.); - m_rotation = btScalar(0.); - m_deltaRotation = btScalar(0.); - m_brake = btScalar(0.); - m_rollInfluence = btScalar(0.1); - m_bIsFrontWheel = ci.m_bIsFrontWheel; - m_maxSuspensionForce = ci.m_maxSuspensionForce; - - } - - void updateWheel(const btRigidBody& chassis,RaycastInfo& raycastInfo); - - btScalar m_clippedInvContactDotSuspension; - btScalar m_suspensionRelativeVelocity; - //calculated by suspension - btScalar m_wheelsSuspensionForce; - btScalar m_skidInfo; - -}; - -#endif //WHEEL_INFO_H - diff --git a/extern/bullet2/BulletMultiThreaded/CMakeLists.txt b/extern/bullet2/BulletMultiThreaded/CMakeLists.txt deleted file mode 100644 index 90f970afbfd..00000000000 --- a/extern/bullet2/BulletMultiThreaded/CMakeLists.txt +++ /dev/null @@ -1,92 +0,0 @@ -INCLUDE_DIRECTORIES( - ${BULLET_PHYSICS_SOURCE_DIR}/src - ${BULLET_PHYSICS_SOURCE_DIR}/src/BulletMultiThreaded/vectormath/scalar/cpp -) - -ADD_LIBRARY(BulletMultiThreaded - PlatformDefinitions.h - SpuFakeDma.cpp - SpuFakeDma.h - SpuDoubleBuffer.h - SpuLibspe2Support.cpp - SpuLibspe2Support.h - btThreadSupportInterface.cpp - btThreadSupportInterface.h - - Win32ThreadSupport.cpp - Win32ThreadSupport.h - PosixThreadSupport.cpp - PosixThreadSupport.h - SequentialThreadSupport.cpp - SequentialThreadSupport.h - SpuSampleTaskProcess.h - SpuSampleTaskProcess.cpp - - SpuCollisionObjectWrapper.cpp - SpuCollisionObjectWrapper.h - SpuCollisionTaskProcess.h - SpuCollisionTaskProcess.cpp - SpuGatheringCollisionDispatcher.h - SpuGatheringCollisionDispatcher.cpp - SpuContactManifoldCollisionAlgorithm.cpp - SpuContactManifoldCollisionAlgorithm.h - - btParallelConstraintSolver.cpp - btParallelConstraintSolver.h - - SpuNarrowPhaseCollisionTask/Box.h - SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp - SpuNarrowPhaseCollisionTask/boxBoxDistance.h - SpuNarrowPhaseCollisionTask/SpuContactResult.cpp - SpuNarrowPhaseCollisionTask/SpuContactResult.h - SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.cpp - SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.h - SpuNarrowPhaseCollisionTask/SpuConvexPenetrationDepthSolver.h - SpuNarrowPhaseCollisionTask/SpuPreferredPenetrationDirections.h - SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp - SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h - SpuNarrowPhaseCollisionTask/SpuCollisionShapes.cpp - SpuNarrowPhaseCollisionTask/SpuCollisionShapes.h - - -#Some GPU related stuff, mainly CUDA and perhaps OpenCL - btGpu3DGridBroadphase.cpp - btGpu3DGridBroadphase.h - btGpu3DGridBroadphaseSharedCode.h - btGpu3DGridBroadphaseSharedDefs.h - btGpu3DGridBroadphaseSharedTypes.h - btGpuDefines.h - btGpuUtilsSharedCode.h - btGpuUtilsSharedDefs.h - -#MiniCL provides a small subset of OpenCL - MiniCL.cpp - MiniCLTaskScheduler.cpp - MiniCLTaskScheduler.h - MiniCLTask/MiniCLTask.cpp - MiniCLTask/MiniCLTask.h - ../MiniCL/cl.h - ../MiniCL/cl_gl.h - ../MiniCL/cl_platform.h - ../MiniCL/cl_MiniCL_Defs.h -) - -IF (BUILD_SHARED_LIBS) - TARGET_LINK_LIBRARIES(BulletMultiThreaded BulletCollision) -ENDIF (BUILD_SHARED_LIBS) - -IF (INSTALL_LIBS) - IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) - #INSTALL of other files requires CMake 2.6 - IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - IF(INSTALL_EXTRA_LIBS) - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS BulletMultiThreaded DESTINATION .) - ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS BulletMultiThreaded DESTINATION lib) - INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h") - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (INSTALL_EXTRA_LIBS) - ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) -ENDIF (INSTALL_LIBS) \ No newline at end of file diff --git a/extern/bullet2/BulletMultiThreaded/Makefile.original b/extern/bullet2/BulletMultiThreaded/Makefile.original deleted file mode 100644 index 1edc9811f8d..00000000000 --- a/extern/bullet2/BulletMultiThreaded/Makefile.original +++ /dev/null @@ -1,187 +0,0 @@ -__ARCH_BITS__ := 32 - -# define macros -NARROWPHASEDIR=./SpuNarrowPhaseCollisionTask -SPU_TASKFILE=$(NARROWPHASEDIR)/SpuGatheringCollisionTask - -IBM_CELLSDK_VERSION := $(shell if [ -d /opt/cell ]; then echo "3.0"; fi) - -ifeq ("$(IBM_CELLSDK_VERSION)","3.0") - CELL_TOP ?= /opt/cell/sdk - CELL_SYSROOT := /opt/cell/sysroot -else - CELL_TOP ?= /opt/ibm/cell-sdk/prototype - CELL_SYSROOT := $(CELL_TOP)/sysroot -endif - - -USE_CCACHE=ccache -RM=rm -f -OUTDIR=./out -DEBUGFLAG=-DNDEBUG -LIBOUTDIR=../../lib/ibmsdk -COLLISIONDIR=../../src/BulletCollision -MATHDIR=../../src/LinearMath -ARCHITECTUREFLAG=-m$(__ARCH_BITS__) -ifeq "$(__ARCH_BITS__)" "64" - SPU_DEFFLAGS= -DUSE_LIBSPE2 -D__SPU__ -DUSE_ADDR64 -else - SPU_DEFFLAGS= -DUSE_LIBSPE2 -D__SPU__ -endif - -SPU_DEFFLAGS+=-DUSE_PE_BOX_BOX - -SPU_GCC=$(USE_CCACHE) /usr/bin/spu-gcc -SPU_INCLUDEDIR= -Ivectormath/scalar/cpp -I. -I$(CELL_SYSROOT)/usr/spu/include -I../../src -I$(NARROWPHASEDIR) -#SPU_CFLAGS= $(DEBUGFLAG) -W -Wall -Winline -Os -c -include spu_intrinsics.h -include stdbool.h -SPU_CFLAGS= $(DEBUGFLAG) -W -Wall -Winline -O3 -mbranch-hints -fomit-frame-pointer -ftree-vectorize -finline-functions -ftree-vect-loop-version -ftree-loop-optimize -ffast-math -fno-rtti -fno-exceptions -c -include spu_intrinsics.h -include stdbool.h - -SPU_LFLAGS= -Wl,-N -SPU_LIBRARIES=-lstdc++ -SPU_EMBED=/usr/bin/ppu-embedspu -SPU_AR=/usr/bin/ar -SYMBOLNAME=spu_program - -ifeq "$(__ARCH_BITS__)" "64" - PPU_DEFFLAGS= -DUSE_LIBSPE2 -DUSE_ADDR64 - PPU_GCC=$(USE_CCACHE) /usr/bin/ppu-gcc -else - PPU_DEFFLAGS= -DUSE_LIBSPE2 - PPU_GCC=$(USE_CCACHE) /usr/bin/ppu32-gcc -endif - -PPU_CFLAGS= $(ARCHITECTUREFLAG) $(DEBUGFLAG) -W -Wall -Winline -O3 -c -mabi=altivec -maltivec -include altivec.h -include stdbool.h -PPU_INCLUDEDIR= -I. -I$(CELL_SYSROOT)/usr/include -I../../src -I$(NARROWPHASEDIR) -PPU_LFLAGS= $(ARCHITECTUREFLAG) -Wl,-m,elf$(__ARCH_BITS__)ppc -PPU_LIBRARIES= -lstdc++ -lsupc++ -lgcc -lgcov -lspe2 -lpthread -L../../lib/ibmsdk -lbulletcollision -lbulletdynamics -lbulletmath -L$(CELL_SYSROOT)/usr/lib$(__ARCH_BITS__) -R$(CELL_SYSROOT)/usr/lib -PPU_AR=/usr/bin/ar - -MakeOut : -# rm -f -R $(OUTDIR) ; mkdir $(OUTDIR) - @echo "usage: make spu, make ppu, make all, or make clean" -# SPU -SpuTaskFile : MakeOut - $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/SpuTaskFile.o $(SPU_TASKFILE).cpp - -boxBoxDistance : MakeOut - $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(NARROWPHASEDIR)/$@.cpp - -SpuFakeDma : MakeOut - $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $@.cpp - -SpuContactManifoldCollisionAlgorithm_spu : MakeOut - $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o SpuContactManifoldCollisionAlgorithm.cpp - -SpuCollisionShapes : MakeOut - $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(NARROWPHASEDIR)/$@.cpp - -SpuContactResult : MakeOut - $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(NARROWPHASEDIR)/$@.cpp - -#SpuGatheringCollisionTask : MakeOut -# $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(NARROWPHASEDIR)/$@.cpp - -SpuGjkPairDetector: MakeOut - $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(NARROWPHASEDIR)/$@.cpp - -SpuMinkowskiPenetrationDepthSolver : MakeOut - $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(NARROWPHASEDIR)/$@.cpp - -SpuVoronoiSimplexSolver : MakeOut - $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(NARROWPHASEDIR)/$@.cpp - -#SpuLibspe2Support_spu : MakeOut -# $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o SpuLibspe2Support.cpp - -## SPU-Bullet -btPersistentManifold : MakeOut - $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(COLLISIONDIR)/NarrowPhaseCollision/$@.cpp - -btOptimizedBvh : MakeOut - $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(COLLISIONDIR)/CollisionShapes/$@.cpp - -btCollisionObject : MakeOut - $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(COLLISIONDIR)/CollisionDispatch/$@.cpp - -btTriangleCallback : MakeOut - $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(COLLISIONDIR)/CollisionShapes/$@.cpp - -btTriangleIndexVertexArray : MakeOut - $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(COLLISIONDIR)/CollisionShapes/$@.cpp - -btStridingMeshInterface : MakeOut - $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(COLLISIONDIR)/CollisionShapes/$@.cpp - -btAlignedAllocator : MakeOut - $(SPU_GCC) $(SPU_DEFFLAGS) $(SPU_CFLAGS) $(SPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $(MATHDIR)/$@.cpp - - -# PPU -SpuGatheringCollisionDispatcher : MakeOut - $(PPU_GCC) $(PPU_DEFFLAGS) $(PPU_CFLAGS) $(PPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $@.cpp - -SequentialThreadSupport: MakeOut - $(PPU_GCC) $(PPU_DEFFLAGS) $(PPU_CFLAGS) $(PPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $@.cpp - -SpuLibspe2Support: MakeOut - $(PPU_GCC) $(PPU_DEFFLAGS) $(PPU_CFLAGS) $(PPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $@.cpp - -btThreadSupportInterface: MakeOut - $(PPU_GCC) $(PPU_DEFFLAGS) $(PPU_CFLAGS) $(PPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $@.cpp - -SpuCollisionTaskProcess : MakeOut - $(PPU_GCC) $(PPU_DEFFLAGS) $(PPU_CFLAGS) $(PPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $@.cpp - -SpuContactManifoldCollisionAlgorithm : MakeOut - $(PPU_GCC) $(PPU_DEFFLAGS) $(PPU_CFLAGS) $(PPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $@.cpp - -SpuSampleTaskProcess : MakeOut - $(PPU_GCC) $(PPU_DEFFLAGS) $(PPU_CFLAGS) $(PPU_INCLUDEDIR) -o $(OUTDIR)/$@.o $@.cpp - - - -spu : boxBoxDistance SpuFakeDma SpuContactManifoldCollisionAlgorithm_spu SpuContactResult SpuTaskFile \ - SpuGjkPairDetector SpuMinkowskiPenetrationDepthSolver SpuVoronoiSimplexSolver SpuCollisionShapes \ - btPersistentManifold btOptimizedBvh btCollisionObject btTriangleCallback btTriangleIndexVertexArray \ - btStridingMeshInterface btAlignedAllocator - $(SPU_GCC) -o $(OUTDIR)/spuCollision.elf \ - $(OUTDIR)/SpuTaskFile.o \ - $(OUTDIR)/SpuFakeDma.o \ - $(OUTDIR)/boxBoxDistance.o \ - $(OUTDIR)/SpuContactManifoldCollisionAlgorithm_spu.o \ - $(OUTDIR)/SpuContactResult.o \ - $(OUTDIR)/SpuCollisionShapes.o \ - $(OUTDIR)/SpuGjkPairDetector.o \ - $(OUTDIR)/SpuMinkowskiPenetrationDepthSolver.o \ - $(OUTDIR)/SpuVoronoiSimplexSolver.o \ - $(OUTDIR)/btPersistentManifold.o \ - $(OUTDIR)/btTriangleCallback.o \ - $(OUTDIR)/btTriangleIndexVertexArray.o \ - $(OUTDIR)/btStridingMeshInterface.o \ - $(OUTDIR)/btAlignedAllocator.o \ - $(SPU_LFLAGS) $(SPU_LIBRARIES) - -spu-embed : spu - $(SPU_EMBED) $(ARCHITECTUREFLAG) $(SYMBOLNAME) $(OUTDIR)/spuCollision.elf $(OUTDIR)/$@.o - $(SPU_AR) -qcs $(LIBOUTDIR)/libspu.a $(OUTDIR)/$@.o - - - -ppu : SpuGatheringCollisionDispatcher SpuCollisionTaskProcess btThreadSupportInterface \ - SpuLibspe2Support SpuContactManifoldCollisionAlgorithm SpuSampleTaskProcess - $(PPU_AR) -qcs $(LIBOUTDIR)/bulletmultithreaded.a \ - $(OUTDIR)/SpuCollisionTaskProcess.o \ - $(OUTDIR)/SpuSampleTaskProcess.o \ - $(OUTDIR)/SpuGatheringCollisionDispatcher.o \ - $(OUTDIR)/SpuLibspe2Support.o \ - $(OUTDIR)/btThreadSupportInterface.o \ - $(OUTDIR)/SpuContactManifoldCollisionAlgorithm.o - -all : spu-embed ppu - -clean: - $(RM) $(OUTDIR)/* ; $(RM) $(LIBOUTDIR)/libspu.a ; $(RM) $(LIBOUTDIR)/bulletmultithreaded.a - - - - diff --git a/extern/bullet2/BulletMultiThreaded/MiniCL.cpp b/extern/bullet2/BulletMultiThreaded/MiniCL.cpp deleted file mode 100644 index b7f5a699312..00000000000 --- a/extern/bullet2/BulletMultiThreaded/MiniCL.cpp +++ /dev/null @@ -1,517 +0,0 @@ -/* - Copyright (C) 2010 Sony Computer Entertainment Inc. - All rights reserved. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -*/ - - -#include "MiniCL/cl.h" -#define __PHYSICS_COMMON_H__ 1 -#ifdef _WIN32 -#include "BulletMultiThreaded/Win32ThreadSupport.h" -#endif - -#include "BulletMultiThreaded/SequentialThreadSupport.h" -#include "MiniCLTaskScheduler.h" -#include "MiniCLTask/MiniCLTask.h" -#include "LinearMath/btMinMax.h" - -//#define DEBUG_MINICL_KERNELS 1 - - - - -CL_API_ENTRY cl_int CL_API_CALL clGetDeviceInfo( - cl_device_id device , - cl_device_info param_name , - size_t param_value_size , - void * param_value , - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0 -{ - - switch (param_name) - { - case CL_DEVICE_NAME: - { - char deviceName[] = "CPU"; - unsigned int nameLen = strlen(deviceName)+1; - assert(param_value_size>strlen(deviceName)); - if (nameLen < param_value_size) - { - const char* cpuName = "CPU"; - sprintf((char*)param_value,"%s",cpuName); - } else - { - printf("error: param_value_size should be at least %d, but it is %d\n",nameLen,param_value_size); - } - break; - } - case CL_DEVICE_TYPE: - { - if (param_value_size>=sizeof(cl_device_type)) - { - cl_device_type* deviceType = (cl_device_type*)param_value; - *deviceType = CL_DEVICE_TYPE_CPU; - } else - { - printf("error: param_value_size should be at least %d\n",sizeof(cl_device_type)); - } - break; - } - case CL_DEVICE_MAX_COMPUTE_UNITS: - { - if (param_value_size>=sizeof(cl_uint)) - { - cl_uint* numUnits = (cl_uint*)param_value; - *numUnits= 4; - } else - { - printf("error: param_value_size should be at least %d\n",sizeof(cl_uint)); - } - - break; - } - case CL_DEVICE_MAX_WORK_ITEM_SIZES: - { - size_t workitem_size[3]; - - if (param_value_size>=sizeof(workitem_size)) - { - size_t* workItemSize = (size_t*)param_value; - workItemSize[0] = 64; - workItemSize[1] = 24; - workItemSize[2] = 16; - } else - { - printf("error: param_value_size should be at least %d\n",sizeof(cl_uint)); - } - break; - } - case CL_DEVICE_MAX_CLOCK_FREQUENCY: - { - cl_uint* clock_frequency = (cl_uint*)param_value; - *clock_frequency = 3*1024; - break; - } - default: - { - printf("error: unsupported param_name:%d\n",param_name); - } - } - - - return 0; -} - -CL_API_ENTRY cl_int CL_API_CALL clReleaseMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0 -{ - return 0; -} - - - -CL_API_ENTRY cl_int CL_API_CALL clReleaseCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0 -{ - return 0; -} - -CL_API_ENTRY cl_int CL_API_CALL clReleaseProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0 -{ - return 0; -} - -CL_API_ENTRY cl_int CL_API_CALL clReleaseKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0 -{ - return 0; -} - - -// Enqueued Commands APIs -CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadBuffer(cl_command_queue command_queue , - cl_mem buffer , - cl_bool /* blocking_read */, - size_t offset , - size_t cb , - void * ptr , - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0 -{ - MiniCLTaskScheduler* scheduler = (MiniCLTaskScheduler*) command_queue; - - ///wait for all work items to be completed - scheduler->flush(); - - memcpy(ptr,(char*)buffer + offset,cb); - return 0; -} - - -CL_API_ENTRY cl_int clGetProgramBuildInfo(cl_program /* program */, - cl_device_id /* device */, - cl_program_build_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0 -{ - - return 0; -} - - -// Program Object APIs -CL_API_ENTRY cl_program -clCreateProgramWithSource(cl_context context , - cl_uint /* count */, - const char ** /* strings */, - const size_t * /* lengths */, - cl_int * errcode_ret ) CL_API_SUFFIX__VERSION_1_0 -{ - *errcode_ret = CL_SUCCESS; - return (cl_program)context; -} - -CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteBuffer(cl_command_queue command_queue , - cl_mem buffer , - cl_bool /* blocking_read */, - size_t offset, - size_t cb , - const void * ptr , - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0 -{ - MiniCLTaskScheduler* scheduler = (MiniCLTaskScheduler*) command_queue; - - ///wait for all work items to be completed - scheduler->flush(); - - memcpy((char*)buffer + offset, ptr,cb); - return 0; -} - -CL_API_ENTRY cl_int CL_API_CALL clFlush(cl_command_queue command_queue) -{ - MiniCLTaskScheduler* scheduler = (MiniCLTaskScheduler*) command_queue; - ///wait for all work items to be completed - scheduler->flush(); - return 0; -} - - -CL_API_ENTRY cl_int CL_API_CALL clEnqueueNDRangeKernel(cl_command_queue /* command_queue */, - cl_kernel clKernel , - cl_uint work_dim , - const size_t * /* global_work_offset */, - const size_t * global_work_size , - const size_t * /* local_work_size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0 -{ - - - MiniCLKernel* kernel = (MiniCLKernel*) clKernel; - for (unsigned int ii=0;iim_scheduler->getMaxNumOutstandingTasks(); - int numWorkItems = global_work_size[ii]; - -// //at minimum 64 work items per task -// int numWorkItemsPerTask = btMax(64,numWorkItems / maxTask); - int numWorkItemsPerTask = numWorkItems / maxTask; - if (!numWorkItemsPerTask) numWorkItemsPerTask = 1; - - for (int t=0;tm_scheduler->issueTask(t, endIndex, kernel); - t = endIndex; - } - } -/* - - void* bla = 0; - - scheduler->issueTask(bla,2,3); - scheduler->flush(); - - */ - - return 0; -} - -#define LOCAL_BUF_SIZE 32768 -static int sLocalMemBuf[LOCAL_BUF_SIZE * 4 + 16]; -static int* spLocalBufCurr = NULL; -static int sLocalBufUsed = LOCAL_BUF_SIZE; // so it will be reset at the first call -static void* localBufMalloc(int size) -{ - int size16 = (size + 15) >> 4; // in 16-byte units - if((sLocalBufUsed + size16) > LOCAL_BUF_SIZE) - { // reset - spLocalBufCurr = sLocalMemBuf; - while((long)spLocalBufCurr & 0x0F) spLocalBufCurr++; // align to 16 bytes - sLocalBufUsed = 0; - } - void* ret = spLocalBufCurr; - spLocalBufCurr += size16 * 4; - sLocalBufUsed += size; - return ret; -} - - - -CL_API_ENTRY cl_int CL_API_CALL clSetKernelArg(cl_kernel clKernel , - cl_uint arg_index , - size_t arg_size , - const void * arg_value ) CL_API_SUFFIX__VERSION_1_0 -{ - MiniCLKernel* kernel = (MiniCLKernel* ) clKernel; - btAssert(arg_size <= MINICL_MAX_ARGLENGTH); - if (arg_index>MINI_CL_MAX_ARG) - { - printf("error: clSetKernelArg arg_index (%d) exceeds %d\n",arg_index,MINI_CL_MAX_ARG); - } else - { -// if (arg_size>=MINICL_MAX_ARGLENGTH) - if (arg_size != MINICL_MAX_ARGLENGTH) - { - printf("error: clSetKernelArg argdata too large: %d (maximum is %d)\n",arg_size,MINICL_MAX_ARGLENGTH); - } - else - { - if(arg_value == NULL) - { // this is only for __local memory qualifier - void* ptr = localBufMalloc(arg_size); - kernel->m_argData[arg_index] = ptr; - } - else - { - memcpy(&(kernel->m_argData[arg_index]), arg_value, arg_size); - } - kernel->m_argSizes[arg_index] = arg_size; - if(arg_index >= kernel->m_numArgs) - { - kernel->m_numArgs = arg_index + 1; - kernel->updateLauncher(); - } - } - } - return 0; -} - -// Kernel Object APIs -CL_API_ENTRY cl_kernel CL_API_CALL clCreateKernel(cl_program program , - const char * kernel_name , - cl_int * errcode_ret ) CL_API_SUFFIX__VERSION_1_0 -{ - MiniCLTaskScheduler* scheduler = (MiniCLTaskScheduler*) program; - MiniCLKernel* kernel = new MiniCLKernel(); - int nameLen = strlen(kernel_name); - if(nameLen >= MINI_CL_MAX_KERNEL_NAME) - { - *errcode_ret = CL_INVALID_KERNEL_NAME; - return NULL; - } - strcpy(kernel->m_name, kernel_name); - kernel->m_numArgs = 0; - - //kernel->m_kernelProgramCommandId = scheduler->findProgramCommandIdByName(kernel_name); - //if (kernel->m_kernelProgramCommandId>=0) - //{ - // *errcode_ret = CL_SUCCESS; - //} else - //{ - // *errcode_ret = CL_INVALID_KERNEL_NAME; - //} - kernel->m_scheduler = scheduler; - if(kernel->registerSelf() == NULL) - { - *errcode_ret = CL_INVALID_KERNEL_NAME; - return NULL; - } - else - { - *errcode_ret = CL_SUCCESS; - } - - return (cl_kernel)kernel; - -} - - -CL_API_ENTRY cl_int CL_API_CALL clBuildProgram(cl_program /* program */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* options */, - void (*pfn_notify)(cl_program /* program */, void * /* user_data */), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_0 -{ - return CL_SUCCESS; -} - -CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithBinary(cl_context context , - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const size_t * /* lengths */, - const unsigned char ** /* binaries */, - cl_int * /* binary_status */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0 -{ - return (cl_program)context; -} - - -// Memory Object APIs -CL_API_ENTRY cl_mem CL_API_CALL clCreateBuffer(cl_context /* context */, - cl_mem_flags flags , - size_t size, - void * host_ptr , - cl_int * errcode_ret ) CL_API_SUFFIX__VERSION_1_0 -{ - cl_mem buf = (cl_mem)malloc(size); - if ((flags&CL_MEM_COPY_HOST_PTR) && host_ptr) - { - memcpy(buf,host_ptr,size); - } - *errcode_ret = 0; - return buf; -} - -// Command Queue APIs -CL_API_ENTRY cl_command_queue CL_API_CALL clCreateCommandQueue(cl_context context , - cl_device_id /* device */, - cl_command_queue_properties /* properties */, - cl_int * errcode_ret ) CL_API_SUFFIX__VERSION_1_0 -{ - *errcode_ret = 0; - return (cl_command_queue) context; -} - -extern CL_API_ENTRY cl_int CL_API_CALL clGetContextInfo(cl_context /* context */, - cl_context_info param_name , - size_t param_value_size , - void * param_value, - size_t * param_value_size_ret ) CL_API_SUFFIX__VERSION_1_0 -{ - - switch (param_name) - { - case CL_CONTEXT_DEVICES: - { - if (!param_value_size) - { - *param_value_size_ret = 13; - } else - { - const char* testName = "MiniCL_Test."; - sprintf((char*)param_value,"%s",testName); - } - break; - }; - default: - { - printf("unsupported\n"); - } - } - - return 0; -} - -CL_API_ENTRY cl_context CL_API_CALL clCreateContextFromType(cl_context_properties * /* properties */, - cl_device_type /* device_type */, - void (*pfn_notify)(const char *, const void *, size_t, void *) /* pfn_notify */, - void * /* user_data */, - cl_int * errcode_ret ) CL_API_SUFFIX__VERSION_1_0 -{ - int maxNumOutstandingTasks = 4; -// int maxNumOutstandingTasks = 2; -// int maxNumOutstandingTasks = 1; - gMiniCLNumOutstandingTasks = maxNumOutstandingTasks; - const int maxNumOfThreadSupports = 8; - static int sUniqueThreadSupportIndex = 0; - static char* sUniqueThreadSupportName[maxNumOfThreadSupports] = - { - "MiniCL_0", "MiniCL_1", "MiniCL_2", "MiniCL_3", "MiniCL_4", "MiniCL_5", "MiniCL_6", "MiniCL_7" - }; - -#ifdef DEBUG_MINICL_KERNELS - SequentialThreadSupport::SequentialThreadConstructionInfo stc("MiniCL",processMiniCLTask,createMiniCLLocalStoreMemory); - SequentialThreadSupport* threadSupport = new SequentialThreadSupport(stc); -#else - -#if _WIN32 - btAssert(sUniqueThreadSupportIndex < maxNumOfThreadSupports); - Win32ThreadSupport* threadSupport = new Win32ThreadSupport(Win32ThreadSupport::Win32ThreadConstructionInfo( -// "MiniCL", - sUniqueThreadSupportName[sUniqueThreadSupportIndex++], - processMiniCLTask, //processCollisionTask, - createMiniCLLocalStoreMemory,//createCollisionLocalStoreMemory, - maxNumOutstandingTasks)); -#else - ///todo: add posix thread support for other platforms - SequentialThreadSupport::SequentialThreadConstructionInfo stc("MiniCL",processMiniCLTask,createMiniCLLocalStoreMemory); - SequentialThreadSupport* threadSupport = new SequentialThreadSupport(stc); -#endif - -#endif //DEBUG_MINICL_KERNELS - - - MiniCLTaskScheduler* scheduler = new MiniCLTaskScheduler(threadSupport,maxNumOutstandingTasks); - - *errcode_ret = 0; - return (cl_context)scheduler; -} - -CL_API_ENTRY cl_int CL_API_CALL clReleaseContext(cl_context context ) CL_API_SUFFIX__VERSION_1_0 -{ - - MiniCLTaskScheduler* scheduler = (MiniCLTaskScheduler*) context; - - btThreadSupportInterface* threadSupport = scheduler->getThreadSupportInterface(); - delete scheduler; - delete threadSupport; - - return 0; -} -extern CL_API_ENTRY cl_int CL_API_CALL -clFinish(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0 -{ - return CL_SUCCESS; -} - - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelWorkGroupInfo(cl_kernel kernel , - cl_device_id /* device */, - cl_kernel_work_group_info wgi/* param_name */, - size_t sz /* param_value_size */, - void * ptr /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0 -{ - if((wgi == CL_KERNEL_WORK_GROUP_SIZE) - &&(sz == sizeof(int)) - &&(ptr != NULL)) - { - MiniCLKernel* miniCLKernel = (MiniCLKernel*)kernel; - MiniCLTaskScheduler* scheduler = miniCLKernel->m_scheduler; - *((int*)ptr) = scheduler->getMaxNumOutstandingTasks(); - return CL_SUCCESS; - } - else - { - return CL_INVALID_VALUE; - } -} diff --git a/extern/bullet2/BulletMultiThreaded/MiniCLTask/MiniCLTask.cpp b/extern/bullet2/BulletMultiThreaded/MiniCLTask/MiniCLTask.cpp deleted file mode 100644 index babb1d24af5..00000000000 --- a/extern/bullet2/BulletMultiThreaded/MiniCLTask/MiniCLTask.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library, Copyright (c) 2007 Erwin Coumans - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -*/ - - -#include "MiniCLTask.h" -#include "BulletMultiThreaded/PlatformDefinitions.h" -#include "BulletMultiThreaded/SpuFakeDma.h" -#include "LinearMath/btMinMax.h" -#include "MiniCLTask.h" -#include "BulletMultiThreaded/MiniCLTaskScheduler.h" - - -#ifdef __SPU__ -#include -#else -#include -#define spu_printf printf -#endif - -int gMiniCLNumOutstandingTasks = 0; - -struct MiniCLTask_LocalStoreMemory -{ - -}; - - -//-- MAIN METHOD -void processMiniCLTask(void* userPtr, void* lsMemory) -{ - // BT_PROFILE("processSampleTask"); - - MiniCLTask_LocalStoreMemory* localMemory = (MiniCLTask_LocalStoreMemory*)lsMemory; - - MiniCLTaskDesc* taskDescPtr = (MiniCLTaskDesc*)userPtr; - MiniCLTaskDesc& taskDesc = *taskDescPtr; - - for (unsigned int i=taskDesc.m_firstWorkUnit;im_launcher(&taskDesc, i); - } - -// printf("Compute Unit[%d] executed kernel %d work items [%d..%d)\n",taskDesc.m_taskId,taskDesc.m_kernelProgramId,taskDesc.m_firstWorkUnit,taskDesc.m_lastWorkUnit); - -} - - -#if defined(__CELLOS_LV2__) || defined (LIBSPE2) - -ATTRIBUTE_ALIGNED16(MiniCLTask_LocalStoreMemory gLocalStoreMemory); - -void* createMiniCLLocalStoreMemory() -{ - return &gLocalStoreMemory; -} -#else -void* createMiniCLLocalStoreMemory() -{ - return new MiniCLTask_LocalStoreMemory; -}; - -#endif diff --git a/extern/bullet2/BulletMultiThreaded/MiniCLTask/MiniCLTask.h b/extern/bullet2/BulletMultiThreaded/MiniCLTask/MiniCLTask.h deleted file mode 100644 index 7e78be0855e..00000000000 --- a/extern/bullet2/BulletMultiThreaded/MiniCLTask/MiniCLTask.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library, Copyright (c) 2007 Erwin Coumans - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -*/ - -#ifndef MINICL__TASK_H -#define MINICL__TASK_H - -#include "BulletMultiThreaded/PlatformDefinitions.h" -#include "LinearMath/btScalar.h" - -#include "LinearMath/btAlignedAllocator.h" - - -#define MINICL_MAX_ARGLENGTH (sizeof(void*)) -#define MINI_CL_MAX_ARG 16 -#define MINI_CL_MAX_KERNEL_NAME 256 - -struct MiniCLKernel; - -ATTRIBUTE_ALIGNED16(struct) MiniCLTaskDesc -{ - BT_DECLARE_ALIGNED_ALLOCATOR(); - - MiniCLTaskDesc() - { - for (int i=0;i - -#ifdef __SPU__ - - - -void SampleThreadFunc(void* userPtr,void* lsMemory) -{ - //do nothing - printf("hello world\n"); -} - - -void* SamplelsMemoryFunc() -{ - //don't create local store memory, just return 0 - return 0; -} - - -#else - - -#include "BulletMultiThreaded/btThreadSupportInterface.h" - -//# include "SPUAssert.h" -#include - -#include "MiniCL/cl_platform.h" - -extern "C" { - extern char SPU_SAMPLE_ELF_SYMBOL[]; -} - - -MiniCLTaskScheduler::MiniCLTaskScheduler(btThreadSupportInterface* threadInterface, int maxNumOutstandingTasks) -:m_threadInterface(threadInterface), -m_maxNumOutstandingTasks(maxNumOutstandingTasks) -{ - - m_taskBusy.resize(m_maxNumOutstandingTasks); - m_spuSampleTaskDesc.resize(m_maxNumOutstandingTasks); - - m_kernels.resize(0); - - for (int i = 0; i < m_maxNumOutstandingTasks; i++) - { - m_taskBusy[i] = false; - } - m_numBusyTasks = 0; - m_currentTask = 0; - - m_initialized = false; - - m_threadInterface->startSPU(); - - -} - -MiniCLTaskScheduler::~MiniCLTaskScheduler() -{ - m_threadInterface->stopSPU(); - -} - - - -void MiniCLTaskScheduler::initialize() -{ -#ifdef DEBUG_SPU_TASK_SCHEDULING - printf("MiniCLTaskScheduler::initialize()\n"); -#endif //DEBUG_SPU_TASK_SCHEDULING - - for (int i = 0; i < m_maxNumOutstandingTasks; i++) - { - m_taskBusy[i] = false; - } - m_numBusyTasks = 0; - m_currentTask = 0; - m_initialized = true; - -} - - -void MiniCLTaskScheduler::issueTask(int firstWorkUnit, int lastWorkUnit, MiniCLKernel* kernel) -{ - -#ifdef DEBUG_SPU_TASK_SCHEDULING - printf("MiniCLTaskScheduler::issueTask (m_currentTask= %d\)n", m_currentTask); -#endif //DEBUG_SPU_TASK_SCHEDULING - - m_taskBusy[m_currentTask] = true; - m_numBusyTasks++; - - MiniCLTaskDesc& taskDesc = m_spuSampleTaskDesc[m_currentTask]; - { - // send task description in event message - taskDesc.m_firstWorkUnit = firstWorkUnit; - taskDesc.m_lastWorkUnit = lastWorkUnit; - taskDesc.m_kernel = kernel; - //some bookkeeping to recognize finished tasks - taskDesc.m_taskId = m_currentTask; - -// for (int i=0;im_numArgs; i++) - { - taskDesc.m_argSizes[i] = kernel->m_argSizes[i]; - if (taskDesc.m_argSizes[i]) - { - taskDesc.m_argData[i] = kernel->m_argData[i]; -// memcpy(&taskDesc.m_argData[i],&argData[MINICL_MAX_ARGLENGTH*i],taskDesc.m_argSizes[i]); - } - } - } - - - m_threadInterface->sendRequest(1, (ppu_address_t) &taskDesc, m_currentTask); - - // if all tasks busy, wait for spu event to clear the task. - - if (m_numBusyTasks >= m_maxNumOutstandingTasks) - { - unsigned int taskId; - unsigned int outputSize; - - for (int i=0;iwaitForResponse(&taskId, &outputSize); - - //printf("PPU: after issue, received event: %u %d\n", taskId, outputSize); - - postProcess(taskId, outputSize); - - m_taskBusy[taskId] = false; - - m_numBusyTasks--; - } - - // find new task buffer - for (int i = 0; i < m_maxNumOutstandingTasks; i++) - { - if (!m_taskBusy[i]) - { - m_currentTask = i; - break; - } - } -} - - -///Optional PPU-size post processing for each task -void MiniCLTaskScheduler::postProcess(int taskId, int outputSize) -{ - -} - - -void MiniCLTaskScheduler::flush() -{ -#ifdef DEBUG_SPU_TASK_SCHEDULING - printf("\nSpuCollisionTaskProcess::flush()\n"); -#endif //DEBUG_SPU_TASK_SCHEDULING - - - // all tasks are issued, wait for all tasks to be complete - while(m_numBusyTasks > 0) - { -// Consolidating SPU code - unsigned int taskId; - unsigned int outputSize; - - for (int i=0;iwaitForResponse(&taskId, &outputSize); - } - - //printf("PPU: flushing, received event: %u %d\n", taskId, outputSize); - - postProcess(taskId, outputSize); - - m_taskBusy[taskId] = false; - - m_numBusyTasks--; - } - - -} - - - -typedef void (*MiniCLKernelLauncher0)(int); -typedef void (*MiniCLKernelLauncher1)(void*, int); -typedef void (*MiniCLKernelLauncher2)(void*, void*, int); -typedef void (*MiniCLKernelLauncher3)(void*, void*, void*, int); -typedef void (*MiniCLKernelLauncher4)(void*, void*, void*, void*, int); -typedef void (*MiniCLKernelLauncher5)(void*, void*, void*, void*, void*, int); -typedef void (*MiniCLKernelLauncher6)(void*, void*, void*, void*, void*, void*, int); -typedef void (*MiniCLKernelLauncher7)(void*, void*, void*, void*, void*, void*, void*, int); -typedef void (*MiniCLKernelLauncher8)(void*, void*, void*, void*, void*, void*, void*, void*, int); -typedef void (*MiniCLKernelLauncher9)(void*, void*, void*, void*, void*, void*, void*, void*, void*, int); -typedef void (*MiniCLKernelLauncher10)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int); -typedef void (*MiniCLKernelLauncher11)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int); -typedef void (*MiniCLKernelLauncher12)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int); -typedef void (*MiniCLKernelLauncher13)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int); -typedef void (*MiniCLKernelLauncher14)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int); -typedef void (*MiniCLKernelLauncher15)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int); -typedef void (*MiniCLKernelLauncher16)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, int); - - -static void kernelLauncher0(MiniCLTaskDesc* taskDesc, int guid) -{ - ((MiniCLKernelLauncher0)(taskDesc->m_kernel->m_launcher))(guid); -} -static void kernelLauncher1(MiniCLTaskDesc* taskDesc, int guid) -{ - ((MiniCLKernelLauncher1)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0], - guid); -} -static void kernelLauncher2(MiniCLTaskDesc* taskDesc, int guid) -{ - ((MiniCLKernelLauncher2)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0], - taskDesc->m_argData[1], - guid); -} -static void kernelLauncher3(MiniCLTaskDesc* taskDesc, int guid) -{ - ((MiniCLKernelLauncher3)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0], - taskDesc->m_argData[1], - taskDesc->m_argData[2], - guid); -} -static void kernelLauncher4(MiniCLTaskDesc* taskDesc, int guid) -{ - ((MiniCLKernelLauncher4)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0], - taskDesc->m_argData[1], - taskDesc->m_argData[2], - taskDesc->m_argData[3], - guid); -} -static void kernelLauncher5(MiniCLTaskDesc* taskDesc, int guid) -{ - ((MiniCLKernelLauncher5)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0], - taskDesc->m_argData[1], - taskDesc->m_argData[2], - taskDesc->m_argData[3], - taskDesc->m_argData[4], - guid); -} -static void kernelLauncher6(MiniCLTaskDesc* taskDesc, int guid) -{ - ((MiniCLKernelLauncher6)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0], - taskDesc->m_argData[1], - taskDesc->m_argData[2], - taskDesc->m_argData[3], - taskDesc->m_argData[4], - taskDesc->m_argData[5], - guid); -} -static void kernelLauncher7(MiniCLTaskDesc* taskDesc, int guid) -{ - ((MiniCLKernelLauncher7)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0], - taskDesc->m_argData[1], - taskDesc->m_argData[2], - taskDesc->m_argData[3], - taskDesc->m_argData[4], - taskDesc->m_argData[5], - taskDesc->m_argData[6], - guid); -} -static void kernelLauncher8(MiniCLTaskDesc* taskDesc, int guid) -{ - ((MiniCLKernelLauncher8)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0], - taskDesc->m_argData[1], - taskDesc->m_argData[2], - taskDesc->m_argData[3], - taskDesc->m_argData[4], - taskDesc->m_argData[5], - taskDesc->m_argData[6], - taskDesc->m_argData[7], - guid); -} -static void kernelLauncher9(MiniCLTaskDesc* taskDesc, int guid) -{ - ((MiniCLKernelLauncher9)(taskDesc->m_kernel->m_pCode))( taskDesc->m_argData[0], - taskDesc->m_argData[1], - taskDesc->m_argData[2], - taskDesc->m_argData[3], - taskDesc->m_argData[4], - taskDesc->m_argData[5], - taskDesc->m_argData[6], - taskDesc->m_argData[7], - taskDesc->m_argData[8], - guid); -} -static void kernelLauncher10(MiniCLTaskDesc* taskDesc, int guid) -{ - ((MiniCLKernelLauncher10)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0], - taskDesc->m_argData[1], - taskDesc->m_argData[2], - taskDesc->m_argData[3], - taskDesc->m_argData[4], - taskDesc->m_argData[5], - taskDesc->m_argData[6], - taskDesc->m_argData[7], - taskDesc->m_argData[8], - taskDesc->m_argData[9], - guid); -} -static void kernelLauncher11(MiniCLTaskDesc* taskDesc, int guid) -{ - ((MiniCLKernelLauncher11)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0], - taskDesc->m_argData[1], - taskDesc->m_argData[2], - taskDesc->m_argData[3], - taskDesc->m_argData[4], - taskDesc->m_argData[5], - taskDesc->m_argData[6], - taskDesc->m_argData[7], - taskDesc->m_argData[8], - taskDesc->m_argData[9], - taskDesc->m_argData[10], - guid); -} -static void kernelLauncher12(MiniCLTaskDesc* taskDesc, int guid) -{ - ((MiniCLKernelLauncher12)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0], - taskDesc->m_argData[1], - taskDesc->m_argData[2], - taskDesc->m_argData[3], - taskDesc->m_argData[4], - taskDesc->m_argData[5], - taskDesc->m_argData[6], - taskDesc->m_argData[7], - taskDesc->m_argData[8], - taskDesc->m_argData[9], - taskDesc->m_argData[10], - taskDesc->m_argData[11], - guid); -} -static void kernelLauncher13(MiniCLTaskDesc* taskDesc, int guid) -{ - ((MiniCLKernelLauncher13)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0], - taskDesc->m_argData[1], - taskDesc->m_argData[2], - taskDesc->m_argData[3], - taskDesc->m_argData[4], - taskDesc->m_argData[5], - taskDesc->m_argData[6], - taskDesc->m_argData[7], - taskDesc->m_argData[8], - taskDesc->m_argData[9], - taskDesc->m_argData[10], - taskDesc->m_argData[11], - taskDesc->m_argData[12], - guid); -} -static void kernelLauncher14(MiniCLTaskDesc* taskDesc, int guid) -{ - ((MiniCLKernelLauncher14)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0], - taskDesc->m_argData[1], - taskDesc->m_argData[2], - taskDesc->m_argData[3], - taskDesc->m_argData[4], - taskDesc->m_argData[5], - taskDesc->m_argData[6], - taskDesc->m_argData[7], - taskDesc->m_argData[8], - taskDesc->m_argData[9], - taskDesc->m_argData[10], - taskDesc->m_argData[11], - taskDesc->m_argData[12], - taskDesc->m_argData[13], - guid); -} -static void kernelLauncher15(MiniCLTaskDesc* taskDesc, int guid) -{ - ((MiniCLKernelLauncher15)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0], - taskDesc->m_argData[1], - taskDesc->m_argData[2], - taskDesc->m_argData[3], - taskDesc->m_argData[4], - taskDesc->m_argData[5], - taskDesc->m_argData[6], - taskDesc->m_argData[7], - taskDesc->m_argData[8], - taskDesc->m_argData[9], - taskDesc->m_argData[10], - taskDesc->m_argData[11], - taskDesc->m_argData[12], - taskDesc->m_argData[13], - taskDesc->m_argData[14], - guid); -} -static void kernelLauncher16(MiniCLTaskDesc* taskDesc, int guid) -{ - ((MiniCLKernelLauncher16)(taskDesc->m_kernel->m_pCode))(taskDesc->m_argData[0], - taskDesc->m_argData[1], - taskDesc->m_argData[2], - taskDesc->m_argData[3], - taskDesc->m_argData[4], - taskDesc->m_argData[5], - taskDesc->m_argData[6], - taskDesc->m_argData[7], - taskDesc->m_argData[8], - taskDesc->m_argData[9], - taskDesc->m_argData[10], - taskDesc->m_argData[11], - taskDesc->m_argData[12], - taskDesc->m_argData[13], - taskDesc->m_argData[14], - taskDesc->m_argData[15], - guid); -} - -static kernelLauncherCB spLauncherList[MINI_CL_MAX_ARG+1] = -{ - kernelLauncher0, - kernelLauncher1, - kernelLauncher2, - kernelLauncher3, - kernelLauncher4, - kernelLauncher5, - kernelLauncher6, - kernelLauncher7, - kernelLauncher8, - kernelLauncher9, - kernelLauncher10, - kernelLauncher11, - kernelLauncher12, - kernelLauncher13, - kernelLauncher14, - kernelLauncher15, - kernelLauncher16 -}; - -void MiniCLKernel::updateLauncher() -{ - m_launcher = spLauncherList[m_numArgs]; -} - -struct MiniCLKernelDescEntry -{ - void* pCode; - char* pName; -}; -static MiniCLKernelDescEntry spKernelDesc[256]; -static int sNumKernelDesc = 0; - -MiniCLKernelDesc::MiniCLKernelDesc(void* pCode, char* pName) -{ - for(int i = 0; i < sNumKernelDesc; i++) - { - if(!strcmp(pName, spKernelDesc[i].pName)) - { // already registered - btAssert(spKernelDesc[i].pCode == pCode); - return; - } - } - spKernelDesc[sNumKernelDesc].pCode = pCode; - spKernelDesc[sNumKernelDesc].pName = pName; - sNumKernelDesc++; -} - - -MiniCLKernel* MiniCLKernel::registerSelf() -{ - m_scheduler->registerKernel(this); - for(int i = 0; i < sNumKernelDesc; i++) - { - if(!strcmp(m_name, spKernelDesc[i].pName)) - { - m_pCode = spKernelDesc[i].pCode; - return this; - } - } - return NULL; -} - -#endif - - -#endif //USE_SAMPLE_PROCESS diff --git a/extern/bullet2/BulletMultiThreaded/MiniCLTaskScheduler.h b/extern/bullet2/BulletMultiThreaded/MiniCLTaskScheduler.h deleted file mode 100644 index 3061a713436..00000000000 --- a/extern/bullet2/BulletMultiThreaded/MiniCLTaskScheduler.h +++ /dev/null @@ -1,194 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#ifndef MINICL_TASK_SCHEDULER_H -#define MINICL_TASK_SCHEDULER_H - -#include - - -#include "BulletMultiThreaded/PlatformDefinitions.h" - -#include - -#include "LinearMath/btAlignedObjectArray.h" - - -#include "MiniCLTask/MiniCLTask.h" - -//just add your commands here, try to keep them globally unique for debugging purposes -#define CMD_SAMPLE_TASK_COMMAND 10 - -struct MiniCLKernel; - -/// MiniCLTaskScheduler handles SPU processing of collision pairs. -/// When PPU issues a task, it will look for completed task buffers -/// PPU will do postprocessing, dependent on workunit output (not likely) -class MiniCLTaskScheduler -{ - // track task buffers that are being used, and total busy tasks - btAlignedObjectArray m_taskBusy; - btAlignedObjectArray m_spuSampleTaskDesc; - - - btAlignedObjectArray m_kernels; - - - int m_numBusyTasks; - - // the current task and the current entry to insert a new work unit - int m_currentTask; - - bool m_initialized; - - void postProcess(int taskId, int outputSize); - - class btThreadSupportInterface* m_threadInterface; - - int m_maxNumOutstandingTasks; - - - -public: - MiniCLTaskScheduler(btThreadSupportInterface* threadInterface, int maxNumOutstandingTasks); - - ~MiniCLTaskScheduler(); - - ///call initialize in the beginning of the frame, before addCollisionPairToTask - void initialize(); - - void issueTask(int firstWorkUnit, int lastWorkUnit, MiniCLKernel* kernel); - - ///call flush to submit potential outstanding work to SPUs and wait for all involved SPUs to be finished - void flush(); - - class btThreadSupportInterface* getThreadSupportInterface() - { - return m_threadInterface; - } - - int findProgramCommandIdByName(const char* programName) const; - - int getMaxNumOutstandingTasks() const - { - return m_maxNumOutstandingTasks; - } - - void registerKernel(MiniCLKernel* kernel) - { - m_kernels.push_back(kernel); - } -}; - -typedef void (*kernelLauncherCB)(MiniCLTaskDesc* taskDesc, int guid); - -struct MiniCLKernel -{ - MiniCLTaskScheduler* m_scheduler; - -// int m_kernelProgramCommandId; - - char m_name[MINI_CL_MAX_KERNEL_NAME]; - unsigned int m_numArgs; - kernelLauncherCB m_launcher; - void* m_pCode; - void updateLauncher(); - MiniCLKernel* registerSelf(); - - void* m_argData[MINI_CL_MAX_ARG]; - int m_argSizes[MINI_CL_MAX_ARG]; -}; - - -#if defined(USE_LIBSPE2) && defined(__SPU__) -////////////////////MAIN///////////////////////////// -#include "../SpuLibspe2Support.h" -#include -#include -#include - -void * SamplelsMemoryFunc(); -void SampleThreadFunc(void* userPtr,void* lsMemory); - -//#define DEBUG_LIBSPE2_MAINLOOP - -int main(unsigned long long speid, addr64 argp, addr64 envp) -{ - printf("SPU is up \n"); - - ATTRIBUTE_ALIGNED128(btSpuStatus status); - ATTRIBUTE_ALIGNED16( SpuSampleTaskDesc taskDesc ) ; - unsigned int received_message = Spu_Mailbox_Event_Nothing; - bool shutdown = false; - - cellDmaGet(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(3)); - - status.m_status = Spu_Status_Free; - status.m_lsMemory.p = SamplelsMemoryFunc(); - - cellDmaLargePut(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(3)); - - - while (!shutdown) - { - received_message = spu_read_in_mbox(); - - - - switch(received_message) - { - case Spu_Mailbox_Event_Shutdown: - shutdown = true; - break; - case Spu_Mailbox_Event_Task: - // refresh the status -#ifdef DEBUG_LIBSPE2_MAINLOOP - printf("SPU recieved Task \n"); -#endif //DEBUG_LIBSPE2_MAINLOOP - cellDmaGet(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(3)); - - btAssert(status.m_status==Spu_Status_Occupied); - - cellDmaGet(&taskDesc, status.m_taskDesc.p, sizeof(SpuSampleTaskDesc), DMA_TAG(3), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(3)); - - SampleThreadFunc((void*)&taskDesc, reinterpret_cast (taskDesc.m_mainMemoryPtr) ); - break; - case Spu_Mailbox_Event_Nothing: - default: - break; - } - - // set to status free and wait for next task - status.m_status = Spu_Status_Free; - cellDmaLargePut(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(3)); - - - } - return 0; -} -////////////////////////////////////////////////////// -#endif - - - -#endif // MINICL_TASK_SCHEDULER_H - diff --git a/extern/bullet2/BulletMultiThreaded/PlatformDefinitions.h b/extern/bullet2/BulletMultiThreaded/PlatformDefinitions.h deleted file mode 100644 index 16362f4bce3..00000000000 --- a/extern/bullet2/BulletMultiThreaded/PlatformDefinitions.h +++ /dev/null @@ -1,84 +0,0 @@ -#ifndef TYPE_DEFINITIONS_H -#define TYPE_DEFINITIONS_H - -///This file provides some platform/compiler checks for common definitions - -#ifdef _WIN32 - -typedef union -{ - unsigned int u; - void *p; -} addr64; - -#define USE_WIN32_THREADING 1 - - #if defined(__MINGW32__) || defined(__CYGWIN__) || (defined (_MSC_VER) && _MSC_VER < 1300) - #else - #endif //__MINGW32__ - - typedef unsigned char uint8_t; -#ifndef __PHYSICS_COMMON_H__ -#ifndef __BT_SKIP_UINT64_H - typedef unsigned long int uint64_t; -#endif //__BT_SKIP_UINT64_H - typedef unsigned int uint32_t; -#endif //__PHYSICS_COMMON_H__ - typedef unsigned short uint16_t; - - #include - #define memalign(alignment, size) malloc(size); - -#include //memcpy - - - - #include - #define spu_printf printf - -#else - #include - #include - #include //for memcpy - -#if defined (__CELLOS_LV2__) - // Playstation 3 Cell SDK -#include - -#else - // posix system - -#define USE_PTHREADS (1) - -#ifdef USE_LIBSPE2 -#include -#define spu_printf printf -#define DWORD unsigned int - - typedef union - { - unsigned long long ull; - unsigned int ui[2]; - void *p; - } addr64; - - -#else - -#include -#define spu_printf printf - -#endif // USE_LIBSPE2 - -#endif //__CELLOS_LV2__ - -#endif - - -/* Included here because we need uint*_t typedefs */ -#include "PpuAddressSpace.h" - -#endif //TYPE_DEFINITIONS_H - - - diff --git a/extern/bullet2/BulletMultiThreaded/PosixThreadSupport.cpp b/extern/bullet2/BulletMultiThreaded/PosixThreadSupport.cpp deleted file mode 100644 index 540f0dcf106..00000000000 --- a/extern/bullet2/BulletMultiThreaded/PosixThreadSupport.cpp +++ /dev/null @@ -1,249 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include -#include "PosixThreadSupport.h" -#ifdef USE_PTHREADS -#include -#include - -#include "SpuCollisionTaskProcess.h" -#include "SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h" - -#define checkPThreadFunction(returnValue) \ - if(0 != returnValue) { \ - printf("PThread problem at line %i in file %s: %i %d\n", __LINE__, __FILE__, returnValue, errno); \ - } - -// The number of threads should be equal to the number of available cores -// Todo: each worker should be linked to a single core, using SetThreadIdealProcessor. - -// PosixThreadSupport helps to initialize/shutdown libspe2, start/stop SPU tasks and communication -// Setup and initialize SPU/CELL/Libspe2 -PosixThreadSupport::PosixThreadSupport(ThreadConstructionInfo& threadConstructionInfo) -{ - startThreads(threadConstructionInfo); -} - -// cleanup/shutdown Libspe2 -PosixThreadSupport::~PosixThreadSupport() -{ - stopSPU(); -} - -#if (defined (__APPLE__)) -#define NAMED_SEMAPHORES -#endif - -// this semaphore will signal, if and how many threads are finished with their work -static sem_t* mainSemaphore; - -static sem_t* createSem(const char* baseName) -{ - static int semCount = 0; -#ifdef NAMED_SEMAPHORES - /// Named semaphore begin - char name[32]; - snprintf(name, 32, "/%s-%d-%4.4d", baseName, getpid(), semCount++); - sem_t* tempSem = sem_open(name, O_CREAT, 0600, 0); - if (tempSem != reinterpret_cast(SEM_FAILED)) - { - //printf("Created \"%s\" Semaphore %x\n", name, tempSem); - } - else - { - //printf("Error creating Semaphore %d\n", errno); - exit(-1); - } - /// Named semaphore end -#else - sem_t* tempSem = new sem_t; - checkPThreadFunction(sem_init(tempSem, 0, 0)); -#endif - return tempSem; -} - -static void destroySem(sem_t* semaphore) -{ -#ifdef NAMED_SEMAPHORES - checkPThreadFunction(sem_close(semaphore)); -#else - checkPThreadFunction(sem_destroy(semaphore)); - delete semaphore; -#endif -} - -static void *threadFunction(void *argument) -{ - - PosixThreadSupport::btSpuStatus* status = (PosixThreadSupport::btSpuStatus*)argument; - - - while (1) - { - checkPThreadFunction(sem_wait(status->startSemaphore)); - - void* userPtr = status->m_userPtr; - - if (userPtr) - { - btAssert(status->m_status); - status->m_userThreadFunc(userPtr,status->m_lsMemory); - status->m_status = 2; - checkPThreadFunction(sem_post(mainSemaphore)); - status->threadUsed++; - } else { - //exit Thread - status->m_status = 3; - checkPThreadFunction(sem_post(mainSemaphore)); - printf("Thread with taskId %i exiting\n",status->m_taskId); - break; - } - - } - - printf("Thread TERMINATED\n"); - return 0; - -} - -///send messages to SPUs -void PosixThreadSupport::sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t taskId) -{ - /// gMidphaseSPU.sendRequest(CMD_GATHER_AND_PROCESS_PAIRLIST, (uint32_t) &taskDesc); - - ///we should spawn an SPU task here, and in 'waitForResponse' it should wait for response of the (one of) the first tasks that finished - - - - switch (uiCommand) - { - case CMD_GATHER_AND_PROCESS_PAIRLIST: - { - btSpuStatus& spuStatus = m_activeSpuStatus[taskId]; - btAssert(taskId >= 0); - btAssert(taskId < m_activeSpuStatus.size()); - - spuStatus.m_commandId = uiCommand; - spuStatus.m_status = 1; - spuStatus.m_userPtr = (void*)uiArgument0; - - // fire event to start new task - checkPThreadFunction(sem_post(spuStatus.startSemaphore)); - break; - } - default: - { - ///not implemented - btAssert(0); - } - - }; - - -} - - -///check for messages from SPUs -void PosixThreadSupport::waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1) -{ - ///We should wait for (one of) the first tasks to finish (or other SPU messages), and report its response - - ///A possible response can be 'yes, SPU handled it', or 'no, please do a PPU fallback' - - - btAssert(m_activeSpuStatus.size()); - - // wait for any of the threads to finish - checkPThreadFunction(sem_wait(mainSemaphore)); - - // get at least one thread which has finished - size_t last = -1; - - for(size_t t=0; t < size_t(m_activeSpuStatus.size()); ++t) { - if(2 == m_activeSpuStatus[t].m_status) { - last = t; - break; - } - } - - btSpuStatus& spuStatus = m_activeSpuStatus[last]; - - btAssert(spuStatus.m_status > 1); - spuStatus.m_status = 0; - - // need to find an active spu - btAssert(last >= 0); - - *puiArgument0 = spuStatus.m_taskId; - *puiArgument1 = spuStatus.m_status; -} - - - -void PosixThreadSupport::startThreads(ThreadConstructionInfo& threadConstructionInfo) -{ - printf("%s creating %i threads.\n", __FUNCTION__, threadConstructionInfo.m_numThreads); - m_activeSpuStatus.resize(threadConstructionInfo.m_numThreads); - - mainSemaphore = createSem("main"); - - for (int i=0;i < threadConstructionInfo.m_numThreads;i++) - { - printf("starting thread %d\n",i); - - btSpuStatus& spuStatus = m_activeSpuStatus[i]; - - spuStatus.startSemaphore = createSem("threadLocal"); - - checkPThreadFunction(pthread_create(&spuStatus.thread, NULL, &threadFunction, (void*)&spuStatus)); - - spuStatus.m_userPtr=0; - - spuStatus.m_taskId = i; - spuStatus.m_commandId = 0; - spuStatus.m_status = 0; - spuStatus.m_lsMemory = threadConstructionInfo.m_lsMemoryFunc(); - spuStatus.m_userThreadFunc = threadConstructionInfo.m_userThreadFunc; - spuStatus.threadUsed = 0; - - printf("started thread %d \n",i); - - } - -} - -void PosixThreadSupport::startSPU() -{ -} - - -///tell the task scheduler we are done with the SPU tasks -void PosixThreadSupport::stopSPU() -{ - for(size_t t=0; t < size_t(m_activeSpuStatus.size()); ++t) { - btSpuStatus& spuStatus = m_activeSpuStatus[t]; - printf("%s: Thread %i used: %ld\n", __FUNCTION__, int(t), spuStatus.threadUsed); - - destroySem(spuStatus.startSemaphore); - checkPThreadFunction(pthread_cancel(spuStatus.thread)); - } - destroySem(mainSemaphore); - - m_activeSpuStatus.clear(); -} - -#endif // USE_PTHREADS - diff --git a/extern/bullet2/BulletMultiThreaded/PosixThreadSupport.h b/extern/bullet2/BulletMultiThreaded/PosixThreadSupport.h deleted file mode 100644 index 7cc49115b4b..00000000000 --- a/extern/bullet2/BulletMultiThreaded/PosixThreadSupport.h +++ /dev/null @@ -1,124 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "LinearMath/btScalar.h" -#include "PlatformDefinitions.h" - -#ifdef USE_PTHREADS //platform specific defines are defined in PlatformDefinitions.h -#include -#include - -#ifndef POSIX_THREAD_SUPPORT_H -#define POSIX_THREAD_SUPPORT_H - -#include "LinearMath/btAlignedObjectArray.h" - -#include "btThreadSupportInterface.h" - - -typedef void (*PosixThreadFunc)(void* userPtr,void* lsMemory); -typedef void* (*PosixlsMemorySetupFunc)(); - -// PosixThreadSupport helps to initialize/shutdown libspe2, start/stop SPU tasks and communication -class PosixThreadSupport : public btThreadSupportInterface -{ -public: - typedef enum sStatus { - STATUS_BUSY, - STATUS_READY, - STATUS_FINISHED - } Status; - - // placeholder, until libspe2 support is there - struct btSpuStatus - { - uint32_t m_taskId; - uint32_t m_commandId; - uint32_t m_status; - - PosixThreadFunc m_userThreadFunc; - void* m_userPtr; //for taskDesc etc - void* m_lsMemory; //initialized using PosixLocalStoreMemorySetupFunc - - pthread_t thread; - sem_t* startSemaphore; - - unsigned long threadUsed; - }; -private: - - btAlignedObjectArray m_activeSpuStatus; -public: - ///Setup and initialize SPU/CELL/Libspe2 - - - - struct ThreadConstructionInfo - { - ThreadConstructionInfo(char* uniqueName, - PosixThreadFunc userThreadFunc, - PosixlsMemorySetupFunc lsMemoryFunc, - int numThreads=1, - int threadStackSize=65535 - ) - :m_uniqueName(uniqueName), - m_userThreadFunc(userThreadFunc), - m_lsMemoryFunc(lsMemoryFunc), - m_numThreads(numThreads), - m_threadStackSize(threadStackSize) - { - - } - - char* m_uniqueName; - PosixThreadFunc m_userThreadFunc; - PosixlsMemorySetupFunc m_lsMemoryFunc; - int m_numThreads; - int m_threadStackSize; - - }; - - PosixThreadSupport(ThreadConstructionInfo& threadConstructionInfo); - -///cleanup/shutdown Libspe2 - virtual ~PosixThreadSupport(); - - void startThreads(ThreadConstructionInfo& threadInfo); - - -///send messages to SPUs - virtual void sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t uiArgument1); - -///check for messages from SPUs - virtual void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1); - -///start the spus (can be called at the beginning of each frame, to make sure that the right SPU program is loaded) - virtual void startSPU(); - -///tell the task scheduler we are done with the SPU tasks - virtual void stopSPU(); - - virtual void setNumTasks(int numTasks) {} - - virtual int getNumTasks() const - { - return m_activeSpuStatus.size(); - } -}; - -#endif // POSIX_THREAD_SUPPORT_H - -#endif // USE_PTHREADS diff --git a/extern/bullet2/BulletMultiThreaded/PpuAddressSpace.h b/extern/bullet2/BulletMultiThreaded/PpuAddressSpace.h deleted file mode 100644 index f36fdfb3cd7..00000000000 --- a/extern/bullet2/BulletMultiThreaded/PpuAddressSpace.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef __PPU_ADDRESS_SPACE_H -#define __PPU_ADDRESS_SPACE_H - - -#ifdef _WIN32 -//stop those casting warnings until we have a better solution for ppu_address_t / void* / uint64 conversions -#pragma warning (disable: 4311) -#pragma warning (disable: 4312) -#endif //_WIN32 - -#if defined(_WIN64) || defined(__LP64__) || defined(__x86_64__) || defined(USE_ADDR64) -typedef uint64_t ppu_address_t; -#else - -typedef uint32_t ppu_address_t; - -#endif - -#endif - diff --git a/extern/bullet2/BulletMultiThreaded/SequentialThreadSupport.cpp b/extern/bullet2/BulletMultiThreaded/SequentialThreadSupport.cpp deleted file mode 100644 index 4e9c822bbc0..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SequentialThreadSupport.cpp +++ /dev/null @@ -1,93 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "SequentialThreadSupport.h" - - -#include "SpuCollisionTaskProcess.h" -#include "SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h" - -SequentialThreadSupport::SequentialThreadSupport(SequentialThreadConstructionInfo& threadConstructionInfo) -{ - startThreads(threadConstructionInfo); -} - -///cleanup/shutdown Libspe2 -SequentialThreadSupport::~SequentialThreadSupport() -{ - stopSPU(); -} - -#include - -///send messages to SPUs -void SequentialThreadSupport::sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t taskId) -{ - switch (uiCommand) - { - case CMD_GATHER_AND_PROCESS_PAIRLIST: - { - btSpuStatus& spuStatus = m_activeSpuStatus[0]; - spuStatus.m_userPtr=(void*)uiArgument0; - spuStatus.m_userThreadFunc(spuStatus.m_userPtr,spuStatus.m_lsMemory); - } - break; - default: - { - ///not implemented - btAssert(0 && "Not implemented"); - } - - }; - - -} - -///check for messages from SPUs -void SequentialThreadSupport::waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1) -{ - btAssert(m_activeSpuStatus.size()); - btSpuStatus& spuStatus = m_activeSpuStatus[0]; - *puiArgument0 = spuStatus.m_taskId; - *puiArgument1 = spuStatus.m_status; -} - -void SequentialThreadSupport::startThreads(SequentialThreadConstructionInfo& threadConstructionInfo) -{ - m_activeSpuStatus.resize(1); - printf("STS: Not starting any threads\n"); - btSpuStatus& spuStatus = m_activeSpuStatus[0]; - spuStatus.m_userPtr = 0; - spuStatus.m_taskId = 0; - spuStatus.m_commandId = 0; - spuStatus.m_status = 0; - spuStatus.m_lsMemory = threadConstructionInfo.m_lsMemoryFunc(); - spuStatus.m_userThreadFunc = threadConstructionInfo.m_userThreadFunc; - printf("STS: Created local store at %p for task %s\n", spuStatus.m_lsMemory, threadConstructionInfo.m_uniqueName); -} - -void SequentialThreadSupport::startSPU() -{ -} - -void SequentialThreadSupport::stopSPU() -{ - m_activeSpuStatus.clear(); -} - -void SequentialThreadSupport::setNumTasks(int numTasks) -{ - printf("SequentialThreadSupport::setNumTasks(%d) is not implemented and has no effect\n",numTasks); -} diff --git a/extern/bullet2/BulletMultiThreaded/SequentialThreadSupport.h b/extern/bullet2/BulletMultiThreaded/SequentialThreadSupport.h deleted file mode 100644 index 4256ebd2aa9..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SequentialThreadSupport.h +++ /dev/null @@ -1,92 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "LinearMath/btScalar.h" -#include "PlatformDefinitions.h" - - -#ifndef SEQUENTIAL_THREAD_SUPPORT_H -#define SEQUENTIAL_THREAD_SUPPORT_H - -#include "LinearMath/btAlignedObjectArray.h" - -#include "btThreadSupportInterface.h" - -typedef void (*SequentialThreadFunc)(void* userPtr,void* lsMemory); -typedef void* (*SequentiallsMemorySetupFunc)(); - - - -///The SequentialThreadSupport is a portable non-parallel implementation of the btThreadSupportInterface -///This is useful for debugging and porting SPU Tasks to other platforms. -class SequentialThreadSupport : public btThreadSupportInterface -{ -public: - struct btSpuStatus - { - uint32_t m_taskId; - uint32_t m_commandId; - uint32_t m_status; - - SequentialThreadFunc m_userThreadFunc; - - void* m_userPtr; //for taskDesc etc - void* m_lsMemory; //initialized using SequentiallsMemorySetupFunc - }; -private: - btAlignedObjectArray m_activeSpuStatus; - btAlignedObjectArray m_completeHandles; -public: - struct SequentialThreadConstructionInfo - { - SequentialThreadConstructionInfo (char* uniqueName, - SequentialThreadFunc userThreadFunc, - SequentiallsMemorySetupFunc lsMemoryFunc - ) - :m_uniqueName(uniqueName), - m_userThreadFunc(userThreadFunc), - m_lsMemoryFunc(lsMemoryFunc) - { - - } - - char* m_uniqueName; - SequentialThreadFunc m_userThreadFunc; - SequentiallsMemorySetupFunc m_lsMemoryFunc; - }; - - SequentialThreadSupport(SequentialThreadConstructionInfo& threadConstructionInfo); - virtual ~SequentialThreadSupport(); - void startThreads(SequentialThreadConstructionInfo& threadInfo); -///send messages to SPUs - virtual void sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t uiArgument1); -///check for messages from SPUs - virtual void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1); -///start the spus (can be called at the beginning of each frame, to make sure that the right SPU program is loaded) - virtual void startSPU(); -///tell the task scheduler we are done with the SPU tasks - virtual void stopSPU(); - - virtual void setNumTasks(int numTasks); - - virtual int getNumTasks() const - { - return 1; - } - -}; - -#endif //SEQUENTIAL_THREAD_SUPPORT_H - diff --git a/extern/bullet2/BulletMultiThreaded/SpuCollisionObjectWrapper.cpp b/extern/bullet2/BulletMultiThreaded/SpuCollisionObjectWrapper.cpp deleted file mode 100644 index 182aa269478..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuCollisionObjectWrapper.cpp +++ /dev/null @@ -1,48 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "SpuCollisionObjectWrapper.h" -#include "BulletCollision/CollisionShapes/btCollisionShape.h" - -SpuCollisionObjectWrapper::SpuCollisionObjectWrapper () -{ -} - -#ifndef __SPU__ -SpuCollisionObjectWrapper::SpuCollisionObjectWrapper (const btCollisionObject* collisionObject) -{ - m_shapeType = collisionObject->getCollisionShape()->getShapeType (); - m_collisionObjectPtr = (ppu_address_t)collisionObject; - m_margin = collisionObject->getCollisionShape()->getMargin (); -} -#endif - -int -SpuCollisionObjectWrapper::getShapeType () const -{ - return m_shapeType; -} - -float -SpuCollisionObjectWrapper::getCollisionMargin () const -{ - return m_margin; -} - -ppu_address_t -SpuCollisionObjectWrapper::getCollisionObjectPtr () const -{ - return m_collisionObjectPtr; -} diff --git a/extern/bullet2/BulletMultiThreaded/SpuCollisionObjectWrapper.h b/extern/bullet2/BulletMultiThreaded/SpuCollisionObjectWrapper.h deleted file mode 100644 index 36ea49209e2..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuCollisionObjectWrapper.h +++ /dev/null @@ -1,40 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef SPU_COLLISION_OBJECT_WRAPPER_H -#define SPU_COLLISION_OBJECT_WRAPPER_H - -#include "PlatformDefinitions.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" - -ATTRIBUTE_ALIGNED16(class) SpuCollisionObjectWrapper -{ -protected: - int m_shapeType; - float m_margin; - ppu_address_t m_collisionObjectPtr; - -public: - SpuCollisionObjectWrapper (); - - SpuCollisionObjectWrapper (const btCollisionObject* collisionObject); - - int getShapeType () const; - float getCollisionMargin () const; - ppu_address_t getCollisionObjectPtr () const; -}; - - -#endif //SPU_COLLISION_OBJECT_WRAPPER_H diff --git a/extern/bullet2/BulletMultiThreaded/SpuCollisionTaskProcess.cpp b/extern/bullet2/BulletMultiThreaded/SpuCollisionTaskProcess.cpp deleted file mode 100644 index 86eda8697d0..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuCollisionTaskProcess.cpp +++ /dev/null @@ -1,318 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -//#define DEBUG_SPU_TASK_SCHEDULING 1 - - -//class OptimizedBvhNode; - -#include "SpuCollisionTaskProcess.h" - - - - -void SpuCollisionTaskProcess::setNumTasks(int maxNumTasks) -{ - if (int(m_maxNumOutstandingTasks) != maxNumTasks) - { - m_maxNumOutstandingTasks = maxNumTasks; - m_taskBusy.resize(m_maxNumOutstandingTasks); - m_spuGatherTaskDesc.resize(m_maxNumOutstandingTasks); - - for (int i = 0; i < m_taskBusy.size(); i++) - { - m_taskBusy[i] = false; - } - - ///re-allocate task memory buffers - if (m_workUnitTaskBuffers != 0) - { - btAlignedFree(m_workUnitTaskBuffers); - } - - m_workUnitTaskBuffers = (unsigned char *)btAlignedAlloc(MIDPHASE_WORKUNIT_TASK_SIZE*m_maxNumOutstandingTasks, 128); - m_workUnitTaskBuffers = (unsigned char *)btAlignedAlloc(MIDPHASE_WORKUNIT_TASK_SIZE*6, 128); - } - -} - - - -SpuCollisionTaskProcess::SpuCollisionTaskProcess(class btThreadSupportInterface* threadInterface, unsigned int maxNumOutstandingTasks) -:m_threadInterface(threadInterface), -m_maxNumOutstandingTasks(0) -{ - m_workUnitTaskBuffers = (unsigned char *)0; - setNumTasks(maxNumOutstandingTasks); - m_numBusyTasks = 0; - m_currentTask = 0; - m_currentPage = 0; - m_currentPageEntry = 0; - -#ifdef DEBUG_SpuCollisionTaskProcess - m_initialized = false; -#endif - - m_threadInterface->startSPU(); - - //printf("sizeof vec_float4: %d\n", sizeof(vec_float4)); - printf("sizeof SpuGatherAndProcessWorkUnitInput: %d\n", int(sizeof(SpuGatherAndProcessWorkUnitInput))); - -} - -SpuCollisionTaskProcess::~SpuCollisionTaskProcess() -{ - - if (m_workUnitTaskBuffers != 0) - { - btAlignedFree(m_workUnitTaskBuffers); - m_workUnitTaskBuffers = 0; - } - - - - m_threadInterface->stopSPU(); - -} - - - -void SpuCollisionTaskProcess::initialize2(bool useEpa) -{ - -#ifdef DEBUG_SPU_TASK_SCHEDULING - printf("SpuCollisionTaskProcess::initialize()\n"); -#endif //DEBUG_SPU_TASK_SCHEDULING - - for (int i = 0; i < int (m_maxNumOutstandingTasks); i++) - { - m_taskBusy[i] = false; - } - m_numBusyTasks = 0; - m_currentTask = 0; - m_currentPage = 0; - m_currentPageEntry = 0; - m_useEpa = useEpa; - -#ifdef DEBUG_SpuCollisionTaskProcess - m_initialized = true; - btAssert(MIDPHASE_NUM_WORKUNITS_PER_TASK*sizeof(SpuGatherAndProcessWorkUnitInput) <= MIDPHASE_WORKUNIT_TASK_SIZE); -#endif -} - - -void SpuCollisionTaskProcess::issueTask2() -{ - -#ifdef DEBUG_SPU_TASK_SCHEDULING - printf("SpuCollisionTaskProcess::issueTask (m_currentTask= %d\n)", m_currentTask); -#endif //DEBUG_SPU_TASK_SCHEDULING - - m_taskBusy[m_currentTask] = true; - m_numBusyTasks++; - - - SpuGatherAndProcessPairsTaskDesc& taskDesc = m_spuGatherTaskDesc[m_currentTask]; - taskDesc.m_useEpa = m_useEpa; - - { - // send task description in event message - // no error checking here... - // but, currently, event queue can be no larger than NUM_WORKUNIT_TASKS. - - taskDesc.m_inPairPtr = reinterpret_cast(MIDPHASE_TASK_PTR(m_currentTask)); - - taskDesc.taskId = m_currentTask; - taskDesc.numPages = m_currentPage+1; - taskDesc.numOnLastPage = m_currentPageEntry; - } - - - - m_threadInterface->sendRequest(CMD_GATHER_AND_PROCESS_PAIRLIST, (ppu_address_t) &taskDesc,m_currentTask); - - // if all tasks busy, wait for spu event to clear the task. - - - if (m_numBusyTasks >= m_maxNumOutstandingTasks) - { - unsigned int taskId; - unsigned int outputSize; - - - for (int i=0;i=0); - - - m_threadInterface->waitForResponse(&taskId, &outputSize); - -// printf("issueTask taskId %d completed, numBusy=%d\n",taskId,m_numBusyTasks); - - //printf("PPU: after issue, received event: %u %d\n", taskId, outputSize); - - //postProcess(taskId, outputSize); - - m_taskBusy[taskId] = false; - - m_numBusyTasks--; - } - -} - -void SpuCollisionTaskProcess::addWorkToTask(void* pairArrayPtr,int startIndex,int endIndex) -{ -#ifdef DEBUG_SPU_TASK_SCHEDULING - printf("#"); -#endif //DEBUG_SPU_TASK_SCHEDULING - -#ifdef DEBUG_SpuCollisionTaskProcess - btAssert(m_initialized); - btAssert(m_workUnitTaskBuffers); - -#endif - - bool batch = true; - - if (batch) - { - if (m_currentPageEntry == MIDPHASE_NUM_WORKUNITS_PER_PAGE) - { - if (m_currentPage == MIDPHASE_NUM_WORKUNIT_PAGES-1) - { - // task buffer is full, issue current task. - // if all task buffers busy, this waits until SPU is done. - issueTask2(); - - // find new task buffer - for (unsigned int i = 0; i < m_maxNumOutstandingTasks; i++) - { - if (!m_taskBusy[i]) - { - m_currentTask = i; - //init the task data - - break; - } - } - - m_currentPage = 0; - } - else - { - m_currentPage++; - } - - m_currentPageEntry = 0; - } - } - - { - - - - SpuGatherAndProcessWorkUnitInput &wuInput = - *(reinterpret_cast - (MIDPHASE_ENTRY_PTR(m_currentTask, m_currentPage, m_currentPageEntry))); - - wuInput.m_pairArrayPtr = reinterpret_cast(pairArrayPtr); - wuInput.m_startIndex = startIndex; - wuInput.m_endIndex = endIndex; - - - - m_currentPageEntry++; - - if (!batch) - { - issueTask2(); - - // find new task buffer - for (unsigned int i = 0; i < m_maxNumOutstandingTasks; i++) - { - if (!m_taskBusy[i]) - { - m_currentTask = i; - //init the task data - - break; - } - } - - m_currentPage = 0; - m_currentPageEntry =0; - } - } -} - - -void -SpuCollisionTaskProcess::flush2() -{ -#ifdef DEBUG_SPU_TASK_SCHEDULING - printf("\nSpuCollisionTaskProcess::flush()\n"); -#endif //DEBUG_SPU_TASK_SCHEDULING - - // if there's a partially filled task buffer, submit that task - if (m_currentPage > 0 || m_currentPageEntry > 0) - { - issueTask2(); - } - - - // all tasks are issued, wait for all tasks to be complete - while(m_numBusyTasks > 0) - { - // Consolidating SPU code - unsigned int taskId=-1; - unsigned int outputSize; - - for (int i=0;i=0); - - - { - - // SPURS support. - m_threadInterface->waitForResponse(&taskId, &outputSize); - } -// printf("flush2 taskId %d completed, numBusy =%d \n",taskId,m_numBusyTasks); - //printf("PPU: flushing, received event: %u %d\n", taskId, outputSize); - - //postProcess(taskId, outputSize); - - m_taskBusy[taskId] = false; - - m_numBusyTasks--; - } - - -} diff --git a/extern/bullet2/BulletMultiThreaded/SpuCollisionTaskProcess.h b/extern/bullet2/BulletMultiThreaded/SpuCollisionTaskProcess.h deleted file mode 100644 index 2614be6c479..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuCollisionTaskProcess.h +++ /dev/null @@ -1,163 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef SPU_COLLISION_TASK_PROCESS_H -#define SPU_COLLISION_TASK_PROCESS_H - -#include - -#include "LinearMath/btScalar.h" - -#include "PlatformDefinitions.h" -#include "LinearMath/btAlignedObjectArray.h" -#include "SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h" // for definitions processCollisionTask and createCollisionLocalStoreMemory - -#include "btThreadSupportInterface.h" - - -//#include "SPUAssert.h" -#include - - -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "BulletCollision/CollisionShapes/btCollisionShape.h" -#include "BulletCollision/CollisionShapes/btConvexShape.h" - -#include "LinearMath/btAlignedAllocator.h" - -#include - - -#define DEBUG_SpuCollisionTaskProcess 1 - - -#define CMD_GATHER_AND_PROCESS_PAIRLIST 1 - -class btCollisionObject; -class btPersistentManifold; -class btDispatcher; - - -/////Task Description for SPU collision detection -//struct SpuGatherAndProcessPairsTaskDesc -//{ -// uint64_t inPtr;//m_pairArrayPtr; -// //mutex variable -// uint32_t m_someMutexVariableInMainMemory; -// -// uint64_t m_dispatcher; -// -// uint32_t numOnLastPage; -// -// uint16_t numPages; -// uint16_t taskId; -// -// struct CollisionTask_LocalStoreMemory* m_lsMemory; -//} -// -//#if defined(__CELLOS_LV2__) || defined(USE_LIBSPE2) -//__attribute__ ((aligned (16))) -//#endif -//; - - -///MidphaseWorkUnitInput stores individual primitive versus mesh collision detection input, to be processed by the SPU. -ATTRIBUTE_ALIGNED16(struct) SpuGatherAndProcessWorkUnitInput -{ - uint64_t m_pairArrayPtr; - int m_startIndex; - int m_endIndex; -}; - - - - -/// SpuCollisionTaskProcess handles SPU processing of collision pairs. -/// Maintains a set of task buffers. -/// When the task is full, the task is issued for SPUs to process. Contact output goes into btPersistentManifold -/// associated with each task. -/// When PPU issues a task, it will look for completed task buffers -/// PPU will do postprocessing, dependent on workunit output (not likely) -class SpuCollisionTaskProcess -{ - - unsigned char *m_workUnitTaskBuffers; - - - // track task buffers that are being used, and total busy tasks - btAlignedObjectArray m_taskBusy; - btAlignedObjectArray m_spuGatherTaskDesc; - - class btThreadSupportInterface* m_threadInterface; - - unsigned int m_maxNumOutstandingTasks; - - unsigned int m_numBusyTasks; - - // the current task and the current entry to insert a new work unit - unsigned int m_currentTask; - unsigned int m_currentPage; - unsigned int m_currentPageEntry; - - bool m_useEpa; - -#ifdef DEBUG_SpuCollisionTaskProcess - bool m_initialized; -#endif - void issueTask2(); - //void postProcess(unsigned int taskId, int outputSize); - -public: - SpuCollisionTaskProcess(btThreadSupportInterface* threadInterface, unsigned int maxNumOutstandingTasks); - - ~SpuCollisionTaskProcess(); - - ///call initialize in the beginning of the frame, before addCollisionPairToTask - void initialize2(bool useEpa = false); - - ///batch up additional work to a current task for SPU processing. When batch is full, it issues the task. - void addWorkToTask(void* pairArrayPtr,int startIndex,int endIndex); - - ///call flush to submit potential outstanding work to SPUs and wait for all involved SPUs to be finished - void flush2(); - - /// set the maximum number of SPU tasks allocated - void setNumTasks(int maxNumTasks); - - int getNumTasks() const - { - return m_maxNumOutstandingTasks; - } -}; - - - -#define MIDPHASE_TASK_PTR(task) (&m_workUnitTaskBuffers[0] + MIDPHASE_WORKUNIT_TASK_SIZE*task) -#define MIDPHASE_ENTRY_PTR(task,page,entry) (MIDPHASE_TASK_PTR(task) + MIDPHASE_WORKUNIT_PAGE_SIZE*page + sizeof(SpuGatherAndProcessWorkUnitInput)*entry) -#define MIDPHASE_OUTPUT_PTR(task) (&m_contactOutputBuffers[0] + MIDPHASE_MAX_CONTACT_BUFFER_SIZE*task) -#define MIDPHASE_TREENODES_PTR(task) (&m_complexShapeBuffers[0] + MIDPHASE_COMPLEX_SHAPE_BUFFER_SIZE*task) - - -#define MIDPHASE_WORKUNIT_PAGE_SIZE (16) -//#define MIDPHASE_WORKUNIT_PAGE_SIZE (128) - -#define MIDPHASE_NUM_WORKUNIT_PAGES 1 -#define MIDPHASE_WORKUNIT_TASK_SIZE (MIDPHASE_WORKUNIT_PAGE_SIZE*MIDPHASE_NUM_WORKUNIT_PAGES) -#define MIDPHASE_NUM_WORKUNITS_PER_PAGE (MIDPHASE_WORKUNIT_PAGE_SIZE / sizeof(SpuGatherAndProcessWorkUnitInput)) -#define MIDPHASE_NUM_WORKUNITS_PER_TASK (MIDPHASE_NUM_WORKUNITS_PER_PAGE*MIDPHASE_NUM_WORKUNIT_PAGES) - - -#endif // SPU_COLLISION_TASK_PROCESS_H - diff --git a/extern/bullet2/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.cpp b/extern/bullet2/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.cpp deleted file mode 100644 index 286b63191ee..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "SpuContactManifoldCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "BulletCollision/CollisionShapes/btCollisionShape.h" -#include "BulletCollision/CollisionShapes/btPolyhedralConvexShape.h" - - - - -void SpuContactManifoldCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - btAssert(0); -} - -btScalar SpuContactManifoldCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - btAssert(0); - return 1.f; -} - -#ifndef __SPU__ -SpuContactManifoldCollisionAlgorithm::SpuContactManifoldCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1) -:btCollisionAlgorithm(ci) -#ifdef USE_SEPDISTANCE_UTIL -,m_sepDistance(body0->getCollisionShape()->getAngularMotionDisc(),body1->getCollisionShape()->getAngularMotionDisc()) -#endif //USE_SEPDISTANCE_UTIL -{ - m_manifoldPtr = m_dispatcher->getNewManifold(body0,body1); - m_shapeType0 = body0->getCollisionShape()->getShapeType(); - m_shapeType1 = body1->getCollisionShape()->getShapeType(); - m_collisionMargin0 = body0->getCollisionShape()->getMargin(); - m_collisionMargin1 = body1->getCollisionShape()->getMargin(); - m_collisionObject0 = body0; - m_collisionObject1 = body1; - - if (body0->getCollisionShape()->isPolyhedral()) - { - btPolyhedralConvexShape* convex0 = (btPolyhedralConvexShape*)body0->getCollisionShape(); - m_shapeDimensions0 = convex0->getImplicitShapeDimensions(); - } - if (body1->getCollisionShape()->isPolyhedral()) - { - btPolyhedralConvexShape* convex1 = (btPolyhedralConvexShape*)body1->getCollisionShape(); - m_shapeDimensions1 = convex1->getImplicitShapeDimensions(); - } -} -#endif //__SPU__ - - -SpuContactManifoldCollisionAlgorithm::~SpuContactManifoldCollisionAlgorithm() -{ - if (m_manifoldPtr) - m_dispatcher->releaseManifold(m_manifoldPtr); -} diff --git a/extern/bullet2/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.h b/extern/bullet2/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.h deleted file mode 100644 index 151cb2c7966..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.h +++ /dev/null @@ -1,120 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef SPU_CONTACTMANIFOLD_COLLISION_ALGORITHM_H -#define SPU_CONTACTMANIFOLD_COLLISION_ALGORITHM_H - -#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" -#include "BulletCollision/BroadphaseCollision/btDispatcher.h" -#include "LinearMath/btTransformUtil.h" - -class btPersistentManifold; - -//#define USE_SEPDISTANCE_UTIL 1 - -/// SpuContactManifoldCollisionAlgorithm provides contact manifold and should be processed on SPU. -ATTRIBUTE_ALIGNED16(class) SpuContactManifoldCollisionAlgorithm : public btCollisionAlgorithm -{ - btVector3 m_shapeDimensions0; - btVector3 m_shapeDimensions1; - btPersistentManifold* m_manifoldPtr; - int m_shapeType0; - int m_shapeType1; - float m_collisionMargin0; - float m_collisionMargin1; - - btCollisionObject* m_collisionObject0; - btCollisionObject* m_collisionObject1; - - - - -public: - - virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - - SpuContactManifoldCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1); -#ifdef USE_SEPDISTANCE_UTIL - btConvexSeparatingDistanceUtil m_sepDistance; -#endif //USE_SEPDISTANCE_UTIL - - virtual ~SpuContactManifoldCollisionAlgorithm(); - - virtual void getAllContactManifolds(btManifoldArray& manifoldArray) - { - if (m_manifoldPtr) - manifoldArray.push_back(m_manifoldPtr); - } - - btPersistentManifold* getContactManifoldPtr() - { - return m_manifoldPtr; - } - - btCollisionObject* getCollisionObject0() - { - return m_collisionObject0; - } - - btCollisionObject* getCollisionObject1() - { - return m_collisionObject1; - } - - int getShapeType0() const - { - return m_shapeType0; - } - - int getShapeType1() const - { - return m_shapeType1; - } - float getCollisionMargin0() const - { - return m_collisionMargin0; - } - float getCollisionMargin1() const - { - return m_collisionMargin1; - } - - const btVector3& getShapeDimensions0() const - { - return m_shapeDimensions0; - } - - const btVector3& getShapeDimensions1() const - { - return m_shapeDimensions1; - } - - struct CreateFunc :public btCollisionAlgorithmCreateFunc - { - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) - { - void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(SpuContactManifoldCollisionAlgorithm)); - return new(mem) SpuContactManifoldCollisionAlgorithm(ci,body0,body1); - } - }; - -}; - -#endif //SPU_CONTACTMANIFOLD_COLLISION_ALGORITHM_H diff --git a/extern/bullet2/BulletMultiThreaded/SpuDoubleBuffer.h b/extern/bullet2/BulletMultiThreaded/SpuDoubleBuffer.h deleted file mode 100644 index a0695744bd5..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuDoubleBuffer.h +++ /dev/null @@ -1,110 +0,0 @@ -#ifndef DOUBLE_BUFFER_H -#define DOUBLE_BUFFER_H - -#include "SpuFakeDma.h" -#include "LinearMath/btScalar.h" - - -///DoubleBuffer -template -class DoubleBuffer -{ -#if defined(__SPU__) || defined(USE_LIBSPE2) - ATTRIBUTE_ALIGNED128( T m_buffer0[size] ) ; - ATTRIBUTE_ALIGNED128( T m_buffer1[size] ) ; -#else - T m_buffer0[size]; - T m_buffer1[size]; -#endif - - T *m_frontBuffer; - T *m_backBuffer; - - unsigned int m_dmaTag; - bool m_dmaPending; -public: - bool isPending() const { return m_dmaPending;} - DoubleBuffer(); - - void init (); - - // dma get and put commands - void backBufferDmaGet(uint64_t ea, unsigned int numBytes, unsigned int tag); - void backBufferDmaPut(uint64_t ea, unsigned int numBytes, unsigned int tag); - - // gets pointer to a buffer - T *getFront(); - T *getBack(); - - // if back buffer dma was started, wait for it to complete - // then move back to front and vice versa - T *swapBuffers(); -}; - -template -DoubleBuffer::DoubleBuffer() -{ - init (); -} - -template -void DoubleBuffer::init() -{ - this->m_dmaPending = false; - this->m_frontBuffer = &this->m_buffer0[0]; - this->m_backBuffer = &this->m_buffer1[0]; -} - -template -void -DoubleBuffer::backBufferDmaGet(uint64_t ea, unsigned int numBytes, unsigned int tag) -{ - m_dmaPending = true; - m_dmaTag = tag; - if (numBytes) - { - m_backBuffer = (T*)cellDmaLargeGetReadOnly(m_backBuffer, ea, numBytes, tag, 0, 0); - } -} - -template -void -DoubleBuffer::backBufferDmaPut(uint64_t ea, unsigned int numBytes, unsigned int tag) -{ - m_dmaPending = true; - m_dmaTag = tag; - cellDmaLargePut(m_backBuffer, ea, numBytes, tag, 0, 0); -} - -template -T * -DoubleBuffer::getFront() -{ - return m_frontBuffer; -} - -template -T * -DoubleBuffer::getBack() -{ - return m_backBuffer; -} - -template -T * -DoubleBuffer::swapBuffers() -{ - if (m_dmaPending) - { - cellDmaWaitTagStatusAll(1< //for btAssert -//Disabling memcpy sometimes helps debugging DMA - -#define USE_MEMCPY 1 -#ifdef USE_MEMCPY - -#endif - - -void* cellDmaLargeGetReadOnly(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid) -{ - -#if defined (__SPU__) || defined (USE_LIBSPE2) - cellDmaLargeGet(ls,ea,size,tag,tid,rid); - return ls; -#else - return (void*)(uint32_t)ea; -#endif -} - -void* cellDmaSmallGetReadOnly(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid) -{ -#if defined (__SPU__) || defined (USE_LIBSPE2) - mfc_get(ls,ea,size,tag,0,0); - return ls; -#else - return (void*)(uint32_t)ea; -#endif -} - - - - -void* cellDmaGetReadOnly(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid) -{ -#if defined (__SPU__) || defined (USE_LIBSPE2) - cellDmaGet(ls,ea,size,tag,tid,rid); - return ls; -#else - return (void*)(uint32_t)ea; -#endif -} - - -///this unalignedDma should not be frequently used, only for small data. It handles alignment and performs check on size (<16 bytes) -int stallingUnalignedDmaSmallGet(void *ls, uint64_t ea, uint32_t size) -{ - - btAssert(size<32); - - ATTRIBUTE_ALIGNED16(char tmpBuffer[32]); - - - char* localStore = (char*)ls; - uint32_t i; - - - ///make sure last 4 bits are the same, for cellDmaSmallGet - uint32_t last4BitsOffset = ea & 0x0f; - char* tmpTarget = tmpBuffer + last4BitsOffset; - -#if defined (__SPU__) || defined (USE_LIBSPE2) - - int remainingSize = size; - -//#define FORCE_cellDmaUnalignedGet 1 -#ifdef FORCE_cellDmaUnalignedGet - cellDmaUnalignedGet(tmpTarget,ea,size,DMA_TAG(1),0,0); -#else - char* remainingTmpTarget = tmpTarget; - uint64_t remainingEa = ea; - - while (remainingSize) - { - switch (remainingSize) - { - case 1: - case 2: - case 4: - case 8: - case 16: - { - mfc_get(remainingTmpTarget,remainingEa,remainingSize,DMA_TAG(1),0,0); - remainingSize=0; - break; - } - default: - { - //spu_printf("unaligned DMA with non-natural size:%d\n",remainingSize); - int actualSize = 0; - - if (remainingSize > 16) - actualSize = 16; - else - if (remainingSize >8) - actualSize=8; - else - if (remainingSize >4) - actualSize=4; - else - if (remainingSize >2) - actualSize=2; - mfc_get(remainingTmpTarget,remainingEa,actualSize,DMA_TAG(1),0,0); - remainingSize-=actualSize; - remainingTmpTarget+=actualSize; - remainingEa += actualSize; - } - } - } -#endif//FORCE_cellDmaUnalignedGet - -#else - char* mainMem = (char*)ea; - //copy into final destination -#ifdef USE_MEMCPY - - memcpy(tmpTarget,mainMem,size); -#else - for ( i=0;i -#include - -#define DMA_TAG(xfer) (xfer + 1) -#define DMA_MASK(xfer) (1 << DMA_TAG(xfer)) - -#else // !USE_LIBSPE2 - -#define DMA_TAG(xfer) (xfer + 1) -#define DMA_MASK(xfer) (1 << DMA_TAG(xfer)) - -#include - -#define DEBUG_DMA -#ifdef DEBUG_DMA -#define dUASSERT(a,b) if (!(a)) { printf(b);} -#define uintsize ppu_address_t - -#define cellDmaLargeGet(ls, ea, size, tag, tid, rid) if ( (((uintsize)ls%16) != ((uintsize)ea%16)) || ((((uintsize)ea%16) || ((uintsize)ls%16)) && (( ((uintsize)ls%16) != ((uintsize)size%16) ) || ( ((uintsize)ea%16) != ((uintsize)size%16) ) ) ) || ( ((uintsize)size%16) && ((uintsize)size!=1) && ((uintsize)size!=2) && ((uintsize)size!=4) && ((uintsize)size!=8) ) || (size >= 16384) || !(uintsize)ls || !(uintsize)ea) { \ - dUASSERT( (((uintsize)ea % 16) == 0) || (size < 16), "XDR Address not aligned: "); \ - dUASSERT( (((uintsize)ls % 16) == 0) || (size < 16), "LS Address not aligned: "); \ - dUASSERT( ((((uintsize)ls % size) == 0) && (((uintsize)ea % size) == 0)) || (size > 16), "Not naturally aligned: "); \ - dUASSERT((size == 1) || (size == 2) || (size == 4) || (size == 8) || ((size % 16) == 0), "size not a multiple of 16byte: "); \ - dUASSERT(size < 16384, "size too big: "); \ - dUASSERT( ((uintsize)ea%16)==((uintsize)ls%16), "wrong Quadword alignment of LS and EA: "); \ - dUASSERT(ea != 0, "Nullpointer EA: "); dUASSERT(ls != 0, "Nullpointer LS: ");\ - printf("GET %s:%d from: 0x%x, to: 0x%x - %d bytes\n", __FILE__, __LINE__, (unsigned int)ea,(unsigned int)ls,(unsigned int)size);\ - } \ - mfc_get(ls, ea, size, tag, tid, rid) -#define cellDmaGet(ls, ea, size, tag, tid, rid) if ( (((uintsize)ls%16) != ((uintsize)ea%16)) || ((((uintsize)ea%16) || ((uintsize)ls%16)) && (( ((uintsize)ls%16) != ((uintsize)size%16) ) || ( ((uintsize)ea%16) != ((uintsize)size%16) ) ) ) || ( ((uintsize)size%16) && ((uintsize)size!=1) && ((uintsize)size!=2) && ((uintsize)size!=4) && ((uintsize)size!=8) ) || (size >= 16384) || !(uintsize)ls || !(uintsize)ea) { \ - dUASSERT( (((uintsize)ea % 16) == 0) || (size < 16), "XDR Address not aligned: "); \ - dUASSERT( (((uintsize)ls % 16) == 0) || (size < 16), "LS Address not aligned: "); \ - dUASSERT( ((((uintsize)ls % size) == 0) && (((uintsize)ea % size) == 0)) || (size > 16), "Not naturally aligned: "); \ - dUASSERT((size == 1) || (size == 2) || (size == 4) || (size == 8) || ((size % 16) == 0), "size not a multiple of 16byte: "); \ - dUASSERT(size < 16384, "size too big: "); \ - dUASSERT( ((uintsize)ea%16)==((uintsize)ls%16), "wrong Quadword alignment of LS and EA: "); \ - dUASSERT(ea != 0, "Nullpointer EA: "); dUASSERT(ls != 0, "Nullpointer LS: ");\ - printf("GET %s:%d from: 0x%x, to: 0x%x - %d bytes\n", __FILE__, __LINE__, (unsigned int)ea,(unsigned int)ls,(unsigned int)size);\ - } \ - mfc_get(ls, ea, size, tag, tid, rid) -#define cellDmaLargePut(ls, ea, size, tag, tid, rid) if ( (((uintsize)ls%16) != ((uintsize)ea%16)) || ((((uintsize)ea%16) || ((uintsize)ls%16)) && (( ((uintsize)ls%16) != ((uintsize)size%16) ) || ( ((uintsize)ea%16) != ((uintsize)size%16) ) ) ) || ( ((uintsize)size%16) && ((uintsize)size!=1) && ((uintsize)size!=2) && ((uintsize)size!=4) && ((uintsize)size!=8) ) || (size >= 16384) || !(uintsize)ls || !(uintsize)ea) { \ - dUASSERT( (((uintsize)ea % 16) == 0) || (size < 16), "XDR Address not aligned: "); \ - dUASSERT( (((uintsize)ls % 16) == 0) || (size < 16), "LS Address not aligned: "); \ - dUASSERT( ((((uintsize)ls % size) == 0) && (((uintsize)ea % size) == 0)) || (size > 16), "Not naturally aligned: "); \ - dUASSERT((size == 1) || (size == 2) || (size == 4) || (size == 8) || ((size % 16) == 0), "size not a multiple of 16byte: "); \ - dUASSERT(size < 16384, "size too big: "); \ - dUASSERT( ((uintsize)ea%16)==((uintsize)ls%16), "wrong Quadword alignment of LS and EA: "); \ - dUASSERT(ea != 0, "Nullpointer EA: "); dUASSERT(ls != 0, "Nullpointer LS: ");\ - printf("PUT %s:%d from: 0x%x, to: 0x%x - %d bytes\n", __FILE__, __LINE__, (unsigned int)ls,(unsigned int)ea,(unsigned int)size); \ - } \ - mfc_put(ls, ea, size, tag, tid, rid) -#define cellDmaSmallGet(ls, ea, size, tag, tid, rid) if ( (((uintsize)ls%16) != ((uintsize)ea%16)) || ((((uintsize)ea%16) || ((uintsize)ls%16)) && (( ((uintsize)ls%16) != ((uintsize)size%16) ) || ( ((uintsize)ea%16) != ((uintsize)size%16) ) ) ) || ( ((uintsize)size%16) && ((uintsize)size!=1) && ((uintsize)size!=2) && ((uintsize)size!=4) && ((uintsize)size!=8) ) || (size >= 16384) || !(uintsize)ls || !(uintsize)ea) { \ - dUASSERT( (((uintsize)ea % 16) == 0) || (size < 16), "XDR Address not aligned: "); \ - dUASSERT( (((uintsize)ls % 16) == 0) || (size < 16), "LS Address not aligned: "); \ - dUASSERT( ((((uintsize)ls % size) == 0) && (((uintsize)ea % size) == 0)) || (size > 16), "Not naturally aligned: "); \ - dUASSERT((size == 1) || (size == 2) || (size == 4) || (size == 8) || ((size % 16) == 0), "size not a multiple of 16byte: "); \ - dUASSERT(size < 16384, "size too big: "); \ - dUASSERT( ((uintsize)ea%16)==((uintsize)ls%16), "wrong Quadword alignment of LS and EA: "); \ - dUASSERT(ea != 0, "Nullpointer EA: "); dUASSERT(ls != 0, "Nullpointer LS: ");\ - printf("GET %s:%d from: 0x%x, to: 0x%x - %d bytes\n", __FILE__, __LINE__, (unsigned int)ea,(unsigned int)ls,(unsigned int)size);\ - } \ - mfc_get(ls, ea, size, tag, tid, rid) -#define cellDmaWaitTagStatusAll(ignore) mfc_write_tag_mask(ignore) ; mfc_read_tag_status_all() - -#else -#define cellDmaLargeGet(ls, ea, size, tag, tid, rid) mfc_get(ls, ea, size, tag, tid, rid) -#define cellDmaGet(ls, ea, size, tag, tid, rid) mfc_get(ls, ea, size, tag, tid, rid) -#define cellDmaLargePut(ls, ea, size, tag, tid, rid) mfc_put(ls, ea, size, tag, tid, rid) -#define cellDmaSmallGet(ls, ea, size, tag, tid, rid) mfc_get(ls, ea, size, tag, tid, rid) -#define cellDmaWaitTagStatusAll(ignore) mfc_write_tag_mask(ignore) ; mfc_read_tag_status_all() -#endif // DEBUG_DMA - - - - - - - - -#endif // USE_LIBSPE2 -#else // !__SPU__ -//Simulate DMA using memcpy or direct access on non-CELL platforms that don't have DMAs and SPUs (Win32, Mac, Linux etc) -//Potential to add networked simulation using this interface - -#define DMA_TAG(a) (a) -#define DMA_MASK(a) (a) - - /// cellDmaLargeGet Win32 replacements for Cell DMA to allow simulating most of the SPU code (just memcpy) - int cellDmaLargeGet(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid); - int cellDmaGet(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid); - /// cellDmaLargePut Win32 replacements for Cell DMA to allow simulating most of the SPU code (just memcpy) - int cellDmaLargePut(const void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid); - /// cellDmaWaitTagStatusAll Win32 replacements for Cell DMA to allow simulating most of the SPU code (just memcpy) - void cellDmaWaitTagStatusAll(int ignore); - - -#endif //__CELLOS_LV2__ - -///stallingUnalignedDmaSmallGet internally uses DMA_TAG(1) -int stallingUnalignedDmaSmallGet(void *ls, uint64_t ea, uint32_t size); - - -void* cellDmaLargeGetReadOnly(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid); -void* cellDmaGetReadOnly(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid); -void* cellDmaSmallGetReadOnly(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid); - - -#endif //FAKE_DMA_H diff --git a/extern/bullet2/BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp b/extern/bullet2/BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp deleted file mode 100644 index ee0832f12e2..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp +++ /dev/null @@ -1,251 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "SpuGatheringCollisionDispatcher.h" -#include "SpuCollisionTaskProcess.h" - - -#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h" -#include "BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h" -#include "SpuContactManifoldCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "BulletCollision/CollisionShapes/btCollisionShape.h" -#include "LinearMath/btQuickprof.h" - - - - -SpuGatheringCollisionDispatcher::SpuGatheringCollisionDispatcher(class btThreadSupportInterface* threadInterface, unsigned int maxNumOutstandingTasks,btCollisionConfiguration* collisionConfiguration) -:btCollisionDispatcher(collisionConfiguration), -m_spuCollisionTaskProcess(0), -m_threadInterface(threadInterface), -m_maxNumOutstandingTasks(maxNumOutstandingTasks) -{ - -} - - -bool SpuGatheringCollisionDispatcher::supportsDispatchPairOnSpu(int proxyType0,int proxyType1) -{ - bool supported0 = ( - (proxyType0 == BOX_SHAPE_PROXYTYPE) || - (proxyType0 == TRIANGLE_SHAPE_PROXYTYPE) || - (proxyType0 == SPHERE_SHAPE_PROXYTYPE) || - (proxyType0 == CAPSULE_SHAPE_PROXYTYPE) || - (proxyType0 == CYLINDER_SHAPE_PROXYTYPE) || -// (proxyType0 == CONE_SHAPE_PROXYTYPE) || - (proxyType0 == TRIANGLE_MESH_SHAPE_PROXYTYPE) || - (proxyType0 == CONVEX_HULL_SHAPE_PROXYTYPE)|| - (proxyType0 == STATIC_PLANE_PROXYTYPE)|| - (proxyType0 == COMPOUND_SHAPE_PROXYTYPE) - ); - - bool supported1 = ( - (proxyType1 == BOX_SHAPE_PROXYTYPE) || - (proxyType1 == TRIANGLE_SHAPE_PROXYTYPE) || - (proxyType1 == SPHERE_SHAPE_PROXYTYPE) || - (proxyType1 == CAPSULE_SHAPE_PROXYTYPE) || - (proxyType1 == CYLINDER_SHAPE_PROXYTYPE) || -// (proxyType1 == CONE_SHAPE_PROXYTYPE) || - (proxyType1 == TRIANGLE_MESH_SHAPE_PROXYTYPE) || - (proxyType1 == CONVEX_HULL_SHAPE_PROXYTYPE) || - (proxyType1 == STATIC_PLANE_PROXYTYPE) || - (proxyType1 == COMPOUND_SHAPE_PROXYTYPE) - ); - - - return supported0 && supported1; -} - - - -SpuGatheringCollisionDispatcher::~SpuGatheringCollisionDispatcher() -{ - if (m_spuCollisionTaskProcess) - delete m_spuCollisionTaskProcess; - -} - -#include "stdio.h" - - - -///interface for iterating all overlapping collision pairs, no matter how those pairs are stored (array, set, map etc) -///this is useful for the collision dispatcher. -class btSpuCollisionPairCallback : public btOverlapCallback -{ - const btDispatcherInfo& m_dispatchInfo; - SpuGatheringCollisionDispatcher* m_dispatcher; - -public: - - btSpuCollisionPairCallback(const btDispatcherInfo& dispatchInfo, SpuGatheringCollisionDispatcher* dispatcher) - :m_dispatchInfo(dispatchInfo), - m_dispatcher(dispatcher) - { - } - - virtual bool processOverlap(btBroadphasePair& collisionPair) - { - - - //PPU version - //(*m_dispatcher->getNearCallback())(collisionPair,*m_dispatcher,m_dispatchInfo); - - //only support discrete collision detection for now, we could fallback on PPU/unoptimized version for TOI/CCD - btAssert(m_dispatchInfo.m_dispatchFunc == btDispatcherInfo::DISPATCH_DISCRETE); - - //by default, Bullet will use this near callback - { - ///userInfo is used to determine if the SPU has to handle this case or not (skip PPU tasks) - if (!collisionPair.m_internalTmpValue) - { - collisionPair.m_internalTmpValue = 1; - } - if (!collisionPair.m_algorithm) - { - btCollisionObject* colObj0 = (btCollisionObject*)collisionPair.m_pProxy0->m_clientObject; - btCollisionObject* colObj1 = (btCollisionObject*)collisionPair.m_pProxy1->m_clientObject; - - btCollisionAlgorithmConstructionInfo ci; - ci.m_dispatcher1 = m_dispatcher; - ci.m_manifold = 0; - - if (m_dispatcher->needsCollision(colObj0,colObj1)) - { - int proxyType0 = colObj0->getCollisionShape()->getShapeType(); - int proxyType1 = colObj1->getCollisionShape()->getShapeType(); - if (m_dispatcher->supportsDispatchPairOnSpu(proxyType0,proxyType1) - && (colObj0->getCollisionFlags() != btCollisionObject::CF_DISABLE_SPU_COLLISION_PROCESSING) - && (colObj1->getCollisionFlags() != btCollisionObject::CF_DISABLE_SPU_COLLISION_PROCESSING) - ) - { - int so = sizeof(SpuContactManifoldCollisionAlgorithm); -#ifdef ALLOCATE_SEPARATELY - void* mem = btAlignedAlloc(so,16);//m_dispatcher->allocateCollisionAlgorithm(so); -#else - void* mem = m_dispatcher->allocateCollisionAlgorithm(so); -#endif - collisionPair.m_algorithm = new(mem) SpuContactManifoldCollisionAlgorithm(ci,colObj0,colObj1); - collisionPair.m_internalTmpValue = 2; - } else - { - collisionPair.m_algorithm = m_dispatcher->findAlgorithm(colObj0,colObj1); - collisionPair.m_internalTmpValue = 3; - } - } - } - } - return false; - } -}; - -void SpuGatheringCollisionDispatcher::dispatchAllCollisionPairs(btOverlappingPairCache* pairCache,const btDispatcherInfo& dispatchInfo, btDispatcher* dispatcher) -{ - - if (dispatchInfo.m_enableSPU) - { - m_maxNumOutstandingTasks = m_threadInterface->getNumTasks(); - - { - BT_PROFILE("processAllOverlappingPairs"); - - if (!m_spuCollisionTaskProcess) - m_spuCollisionTaskProcess = new SpuCollisionTaskProcess(m_threadInterface,m_maxNumOutstandingTasks); - - m_spuCollisionTaskProcess->setNumTasks(m_maxNumOutstandingTasks); - // printf("m_maxNumOutstandingTasks =%d\n",m_maxNumOutstandingTasks); - - m_spuCollisionTaskProcess->initialize2(dispatchInfo.m_useEpa); - - - ///modified version of btCollisionDispatcher::dispatchAllCollisionPairs: - { - btSpuCollisionPairCallback collisionCallback(dispatchInfo,this); - - pairCache->processAllOverlappingPairs(&collisionCallback,dispatcher); - } - } - - //send one big batch - int numTotalPairs = pairCache->getNumOverlappingPairs(); - - btBroadphasePair* pairPtr = pairCache->getOverlappingPairArrayPtr(); - int i; - { - int pairRange = SPU_BATCHSIZE_BROADPHASE_PAIRS; - if (numTotalPairs < (m_spuCollisionTaskProcess->getNumTasks()*SPU_BATCHSIZE_BROADPHASE_PAIRS)) - { - pairRange = (numTotalPairs/m_spuCollisionTaskProcess->getNumTasks())+1; - } - - BT_PROFILE("addWorkToTask"); - for (i=0;iaddWorkToTask(pairPtr,i,endIndex); - i = endIndex; - } - } - - { - BT_PROFILE("PPU fallback"); - //handle PPU fallback pairs - for (i=0;im_clientObject; - btCollisionObject* colObj1 = (btCollisionObject*)collisionPair.m_pProxy1->m_clientObject; - - if (dispatcher->needsCollision(colObj0,colObj1)) - { - btManifoldResult contactPointResult(colObj0,colObj1); - - if (dispatchInfo.m_dispatchFunc == btDispatcherInfo::DISPATCH_DISCRETE) - { - //discrete collision detection query - collisionPair.m_algorithm->processCollision(colObj0,colObj1,dispatchInfo,&contactPointResult); - } else - { - //continuous collision detection query, time of impact (toi) - btScalar toi = collisionPair.m_algorithm->calculateTimeOfImpact(colObj0,colObj1,dispatchInfo,&contactPointResult); - if (dispatchInfo.m_timeOfImpact > toi) - dispatchInfo.m_timeOfImpact = toi; - - } - } - } - } - } - } - { - BT_PROFILE("flush2"); - //make sure all SPU work is done - m_spuCollisionTaskProcess->flush2(); - } - - } else - { - ///PPU fallback - ///!Need to make sure to clear all 'algorithms' when switching between SPU and PPU - btCollisionDispatcher::dispatchAllCollisionPairs(pairCache,dispatchInfo,dispatcher); - } -} diff --git a/extern/bullet2/BulletMultiThreaded/SpuGatheringCollisionDispatcher.h b/extern/bullet2/BulletMultiThreaded/SpuGatheringCollisionDispatcher.h deleted file mode 100644 index 7d5be88d71d..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuGatheringCollisionDispatcher.h +++ /dev/null @@ -1,72 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ -#ifndef SPU_GATHERING_COLLISION__DISPATCHER_H -#define SPU_GATHERING_COLLISION__DISPATCHER_H - -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" - - -///Tuning value to optimized SPU utilization -///Too small value means Task overhead is large compared to computation (too fine granularity) -///Too big value might render some SPUs are idle, while a few other SPUs are doing all work. -//#define SPU_BATCHSIZE_BROADPHASE_PAIRS 8 -//#define SPU_BATCHSIZE_BROADPHASE_PAIRS 16 -//#define SPU_BATCHSIZE_BROADPHASE_PAIRS 64 -#define SPU_BATCHSIZE_BROADPHASE_PAIRS 128 -//#define SPU_BATCHSIZE_BROADPHASE_PAIRS 256 -//#define SPU_BATCHSIZE_BROADPHASE_PAIRS 512 -//#define SPU_BATCHSIZE_BROADPHASE_PAIRS 1024 - - - -class SpuCollisionTaskProcess; - -///SpuGatheringCollisionDispatcher can use SPU to gather and calculate collision detection -///Time of Impact, Closest Points and Penetration Depth. -class SpuGatheringCollisionDispatcher : public btCollisionDispatcher -{ - - SpuCollisionTaskProcess* m_spuCollisionTaskProcess; - -protected: - - class btThreadSupportInterface* m_threadInterface; - - unsigned int m_maxNumOutstandingTasks; - - -public: - - //can be used by SPU collision algorithms - SpuCollisionTaskProcess* getSpuCollisionTaskProcess() - { - return m_spuCollisionTaskProcess; - } - - SpuGatheringCollisionDispatcher (class btThreadSupportInterface* threadInterface, unsigned int maxNumOutstandingTasks,btCollisionConfiguration* collisionConfiguration); - - virtual ~SpuGatheringCollisionDispatcher(); - - bool supportsDispatchPairOnSpu(int proxyType0,int proxyType1); - - virtual void dispatchAllCollisionPairs(btOverlappingPairCache* pairCache,const btDispatcherInfo& dispatchInfo,btDispatcher* dispatcher) ; - -}; - - - -#endif //SPU_GATHERING_COLLISION__DISPATCHER_H - - diff --git a/extern/bullet2/BulletMultiThreaded/SpuLibspe2Support.cpp b/extern/bullet2/BulletMultiThreaded/SpuLibspe2Support.cpp deleted file mode 100644 index a312450ed72..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuLibspe2Support.cpp +++ /dev/null @@ -1,257 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifdef USE_LIBSPE2 - -#include "SpuLibspe2Support.h" - - - - -//SpuLibspe2Support helps to initialize/shutdown libspe2, start/stop SPU tasks and communication -///Setup and initialize SPU/CELL/Libspe2 -SpuLibspe2Support::SpuLibspe2Support(spe_program_handle_t *speprog, int numThreads) -{ - this->program = speprog; - this->numThreads = ((numThreads <= spe_cpu_info_get(SPE_COUNT_PHYSICAL_SPES, -1)) ? numThreads : spe_cpu_info_get(SPE_COUNT_PHYSICAL_SPES, -1)); -} - -///cleanup/shutdown Libspe2 -SpuLibspe2Support::~SpuLibspe2Support() -{ - - stopSPU(); -} - - - -///send messages to SPUs -void SpuLibspe2Support::sendRequest(uint32_t uiCommand, uint32_t uiArgument0, uint32_t uiArgument1) -{ - spe_context_ptr_t context; - - switch (uiCommand) - { - case CMD_SAMPLE_TASK_COMMAND: - { - //get taskdescription - SpuSampleTaskDesc* taskDesc = (SpuSampleTaskDesc*) uiArgument0; - - btAssert(taskDesc->m_taskIdm_taskId]; - - //set data for spuStatus - spuStatus.m_commandId = uiCommand; - spuStatus.m_status = Spu_Status_Occupied; //set SPU as "occupied" - spuStatus.m_taskDesc.p = taskDesc; - - //get context - context = data[taskDesc->m_taskId].context; - - - taskDesc->m_mainMemoryPtr = reinterpret_cast (spuStatus.m_lsMemory.p); - - - break; - } - case CMD_GATHER_AND_PROCESS_PAIRLIST: - { - //get taskdescription - SpuGatherAndProcessPairsTaskDesc* taskDesc = (SpuGatherAndProcessPairsTaskDesc*) uiArgument0; - - btAssert(taskDesc->taskIdtaskId]; - - //set data for spuStatus - spuStatus.m_commandId = uiCommand; - spuStatus.m_status = Spu_Status_Occupied; //set SPU as "occupied" - spuStatus.m_taskDesc.p = taskDesc; - - //get context - context = data[taskDesc->taskId].context; - - - taskDesc->m_lsMemory = (CollisionTask_LocalStoreMemory*)spuStatus.m_lsMemory.p; - - break; - } - default: - { - ///not implemented - btAssert(0); - } - - }; - - - //write taskdescription in mailbox - unsigned int event = Spu_Mailbox_Event_Task; - spe_in_mbox_write(context, &event, 1, SPE_MBOX_ANY_NONBLOCKING); - -} - -///check for messages from SPUs -void SpuLibspe2Support::waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1) -{ - ///We should wait for (one of) the first tasks to finish (or other SPU messages), and report its response - - ///A possible response can be 'yes, SPU handled it', or 'no, please do a PPU fallback' - - btAssert(m_activeSpuStatus.size()); - - - int last = -1; - - //find an active spu/thread - while(last < 0) - { - for (int i=0;i=0); - - - - *puiArgument0 = spuStatus.m_taskId; - *puiArgument1 = spuStatus.m_status; - - -} - - -void SpuLibspe2Support::startSPU() -{ - this->internal_startSPU(); -} - - - -///start the spus group (can be called at the beginning of each frame, to make sure that the right SPU program is loaded) -void SpuLibspe2Support::internal_startSPU() -{ - m_activeSpuStatus.resize(numThreads); - - - for (int i=0; i < numThreads; i++) - { - - if(data[i].context == NULL) - { - - /* Create context */ - if ((data[i].context = spe_context_create(0, NULL)) == NULL) - { - perror ("Failed creating context"); - exit(1); - } - - /* Load program into context */ - if(spe_program_load(data[i].context, this->program)) - { - perror ("Failed loading program"); - exit(1); - } - - m_activeSpuStatus[i].m_status = Spu_Status_Startup; - m_activeSpuStatus[i].m_taskId = i; - m_activeSpuStatus[i].m_commandId = 0; - m_activeSpuStatus[i].m_lsMemory.p = NULL; - - - data[i].entry = SPE_DEFAULT_ENTRY; - data[i].flags = 0; - data[i].argp.p = &m_activeSpuStatus[i]; - data[i].envp.p = NULL; - - /* Create thread for each SPE context */ - if (pthread_create(&data[i].pthread, NULL, &ppu_pthread_function, &(data[i]) )) - { - perror ("Failed creating thread"); - exit(1); - } - /* - else - { - printf("started thread %d\n",i); - }*/ - } - } - - - for (int i=0; i < numThreads; i++) - { - if(data[i].context != NULL) - { - while( m_activeSpuStatus[i].m_status == Spu_Status_Startup) - { - // wait for spu to set up - sched_yield(); - } - printf("Spu %d is ready\n", i); - } - } -} - -///tell the task scheduler we are done with the SPU tasks -void SpuLibspe2Support::stopSPU() -{ - // wait for all threads to finish - int i; - for ( i = 0; i < this->numThreads; i++ ) - { - - unsigned int event = Spu_Mailbox_Event_Shutdown; - spe_context_ptr_t context = data[i].context; - spe_in_mbox_write(context, &event, 1, SPE_MBOX_ALL_BLOCKING); - pthread_join (data[i].pthread, NULL); - - } - // close SPE program - spe_image_close(program); - // destroy SPE contexts - for ( i = 0; i < this->numThreads; i++ ) - { - if(data[i].context != NULL) - { - spe_context_destroy (data[i].context); - } - } - - m_activeSpuStatus.clear(); - -} - - - -#endif //USE_LIBSPE2 - diff --git a/extern/bullet2/BulletMultiThreaded/SpuLibspe2Support.h b/extern/bullet2/BulletMultiThreaded/SpuLibspe2Support.h deleted file mode 100644 index a6d6baca47b..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuLibspe2Support.h +++ /dev/null @@ -1,180 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#ifndef SPU_LIBSPE2_SUPPORT_H -#define SPU_LIBSPE2_SUPPORT_H - -#include //for uint32_t etc. - -#ifdef USE_LIBSPE2 - -#include -#include -//#include "SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h" -#include "PlatformDefinitions.h" - - -//extern struct SpuGatherAndProcessPairsTaskDesc; - -enum -{ - Spu_Mailbox_Event_Nothing = 0, - Spu_Mailbox_Event_Task = 1, - Spu_Mailbox_Event_Shutdown = 2, - - Spu_Mailbox_Event_ForceDword = 0xFFFFFFFF - -}; - -enum -{ - Spu_Status_Free = 0, - Spu_Status_Occupied = 1, - Spu_Status_Startup = 2, - - Spu_Status_ForceDword = 0xFFFFFFFF - -}; - - -struct btSpuStatus -{ - uint32_t m_taskId; - uint32_t m_commandId; - uint32_t m_status; - - addr64 m_taskDesc; - addr64 m_lsMemory; - -} -__attribute__ ((aligned (128))) -; - - - -#ifndef __SPU__ - -#include "LinearMath/btAlignedObjectArray.h" -#include "SpuCollisionTaskProcess.h" -#include "SpuSampleTaskProcess.h" -#include "btThreadSupportInterface.h" -#include -#include -#include - -#define MAX_SPUS 4 - -typedef struct ppu_pthread_data -{ - spe_context_ptr_t context; - pthread_t pthread; - unsigned int entry; - unsigned int flags; - addr64 argp; - addr64 envp; - spe_stop_info_t stopinfo; -} ppu_pthread_data_t; - - -static void *ppu_pthread_function(void *arg) -{ - ppu_pthread_data_t * datap = (ppu_pthread_data_t *)arg; - /* - int rc; - do - {*/ - spe_context_run(datap->context, &datap->entry, datap->flags, datap->argp.p, datap->envp.p, &datap->stopinfo); - if (datap->stopinfo.stop_reason == SPE_EXIT) - { - if (datap->stopinfo.result.spe_exit_code != 0) - { - perror("FAILED: SPE returned a non-zero exit status: \n"); - exit(1); - } - } - else - { - perror("FAILED: SPE abnormally terminated\n"); - exit(1); - } - - - //} while (rc > 0); // loop until exit or error, and while any stop & signal - pthread_exit(NULL); -} - - - - - - -///SpuLibspe2Support helps to initialize/shutdown libspe2, start/stop SPU tasks and communication -class SpuLibspe2Support : public btThreadSupportInterface -{ - - btAlignedObjectArray m_activeSpuStatus; - -public: - //Setup and initialize SPU/CELL/Libspe2 - SpuLibspe2Support(spe_program_handle_t *speprog,int numThreads); - - // SPE program handle ptr. - spe_program_handle_t *program; - - // SPE program data - ppu_pthread_data_t data[MAX_SPUS]; - - //cleanup/shutdown Libspe2 - ~SpuLibspe2Support(); - - ///send messages to SPUs - void sendRequest(uint32_t uiCommand, uint32_t uiArgument0, uint32_t uiArgument1=0); - - //check for messages from SPUs - void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1); - - //start the spus (can be called at the beginning of each frame, to make sure that the right SPU program is loaded) - virtual void startSPU(); - - //tell the task scheduler we are done with the SPU tasks - virtual void stopSPU(); - - virtual void setNumTasks(int numTasks) - { - //changing the number of tasks after initialization is not implemented (yet) - } - -private: - - ///start the spus (can be called at the beginning of each frame, to make sure that the right SPU program is loaded) - void internal_startSPU(); - - - - - int numThreads; - -}; - -#endif // NOT __SPU__ - -#endif //USE_LIBSPE2 - -#endif //SPU_LIBSPE2_SUPPORT_H - - - - diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/Box.h b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/Box.h deleted file mode 100644 index 9bc2ebf51ec..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/Box.h +++ /dev/null @@ -1,172 +0,0 @@ -/* - Copyright (C) 2006, 2008 Sony Computer Entertainment Inc. - All rights reserved. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -*/ - -#ifndef __BOX_H__ -#define __BOX_H__ - - -#ifndef PE_REF -#define PE_REF(a) a& -#endif - -#include - -///only use a system-wide vectormath_aos.h on CELLOS_LV2 or if USE_SYSTEM_VECTORMATH -#if defined(__CELLOS_LV2__) || defined (USE_SYSTEM_VECTORMATH) -#include -#else -#include "BulletMultiThreaded/vectormath/scalar/cpp/vectormath_aos.h" -#endif - - - -using namespace Vectormath::Aos; - -enum FeatureType { F, E, V }; - -//---------------------------------------------------------------------------- -// Box -//---------------------------------------------------------------------------- -///The Box is an internal class used by the boxBoxDistance calculation. -class Box -{ -public: - Vector3 half; - - inline Box() - {} - inline Box(PE_REF(Vector3) half_); - inline Box(float hx, float hy, float hz); - - inline void Set(PE_REF(Vector3) half_); - inline void Set(float hx, float hy, float hz); - - inline Vector3 GetAABB(const Matrix3& rotation) const; -}; - -inline -Box::Box(PE_REF(Vector3) half_) -{ - Set(half_); -} - -inline -Box::Box(float hx, float hy, float hz) -{ - Set(hx, hy, hz); -} - -inline -void -Box::Set(PE_REF(Vector3) half_) -{ - half = half_; -} - -inline -void -Box::Set(float hx, float hy, float hz) -{ - half = Vector3(hx, hy, hz); -} - -inline -Vector3 -Box::GetAABB(const Matrix3& rotation) const -{ - return absPerElem(rotation) * half; -} - -//------------------------------------------------------------------------------------------------- -// BoxPoint -//------------------------------------------------------------------------------------------------- - -///The BoxPoint class is an internally used class to contain feature information for boxBoxDistance calculation. -class BoxPoint -{ -public: - BoxPoint() : localPoint(0.0f) {} - - Point3 localPoint; - FeatureType featureType; - int featureIdx; - - inline void setVertexFeature(int plusX, int plusY, int plusZ); - inline void setEdgeFeature(int dim0, int plus0, int dim1, int plus1); - inline void setFaceFeature(int dim, int plus); - - inline void getVertexFeature(int & plusX, int & plusY, int & plusZ) const; - inline void getEdgeFeature(int & dim0, int & plus0, int & dim1, int & plus1) const; - inline void getFaceFeature(int & dim, int & plus) const; -}; - -inline -void -BoxPoint::setVertexFeature(int plusX, int plusY, int plusZ) -{ - featureType = V; - featureIdx = plusX << 2 | plusY << 1 | plusZ; -} - -inline -void -BoxPoint::setEdgeFeature(int dim0, int plus0, int dim1, int plus1) -{ - featureType = E; - - if (dim0 > dim1) { - featureIdx = plus1 << 5 | dim1 << 3 | plus0 << 2 | dim0; - } else { - featureIdx = plus0 << 5 | dim0 << 3 | plus1 << 2 | dim1; - } -} - -inline -void -BoxPoint::setFaceFeature(int dim, int plus) -{ - featureType = F; - featureIdx = plus << 2 | dim; -} - -inline -void -BoxPoint::getVertexFeature(int & plusX, int & plusY, int & plusZ) const -{ - plusX = featureIdx >> 2; - plusY = featureIdx >> 1 & 1; - plusZ = featureIdx & 1; -} - -inline -void -BoxPoint::getEdgeFeature(int & dim0, int & plus0, int & dim1, int & plus1) const -{ - plus0 = featureIdx >> 5; - dim0 = featureIdx >> 3 & 3; - plus1 = featureIdx >> 2 & 1; - dim1 = featureIdx & 3; -} - -inline -void -BoxPoint::getFaceFeature(int & dim, int & plus) const -{ - plus = featureIdx >> 2; - dim = featureIdx & 3; -} - -#endif /* __BOX_H__ */ diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.cpp b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.cpp deleted file mode 100644 index dfcd8426695..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.cpp +++ /dev/null @@ -1,302 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "SpuCollisionShapes.h" - -///not supported on IBM SDK, until we fix the alignment of btVector3 -#if defined (__CELLOS_LV2__) && defined (__SPU__) -#include -static inline vec_float4 vec_dot3( vec_float4 vec0, vec_float4 vec1 ) -{ - vec_float4 result; - result = spu_mul( vec0, vec1 ); - result = spu_madd( spu_rlqwbyte( vec0, 4 ), spu_rlqwbyte( vec1, 4 ), result ); - return spu_madd( spu_rlqwbyte( vec0, 8 ), spu_rlqwbyte( vec1, 8 ), result ); -} -#endif //__SPU__ - - -void computeAabb (btVector3& aabbMin, btVector3& aabbMax, btConvexInternalShape* convexShape, ppu_address_t convexShapePtr, int shapeType, const btTransform& xform) -{ - //calculate the aabb, given the types... - switch (shapeType) - { - case CYLINDER_SHAPE_PROXYTYPE: - /* fall through */ - case BOX_SHAPE_PROXYTYPE: - { - btScalar margin=convexShape->getMarginNV(); - btVector3 halfExtents = convexShape->getImplicitShapeDimensions(); - halfExtents += btVector3(margin,margin,margin); - const btTransform& t = xform; - btMatrix3x3 abs_b = t.getBasis().absolute(); - btVector3 center = t.getOrigin(); - btVector3 extent = btVector3(abs_b[0].dot(halfExtents),abs_b[1].dot(halfExtents),abs_b[2].dot(halfExtents)); - - aabbMin = center - extent; - aabbMax = center + extent; - break; - } - case CAPSULE_SHAPE_PROXYTYPE: - { - btScalar margin=convexShape->getMarginNV(); - btVector3 halfExtents = convexShape->getImplicitShapeDimensions(); - //add the radius to y-axis to get full height - btScalar radius = halfExtents[0]; - halfExtents[1] += radius; - halfExtents += btVector3(margin,margin,margin); -#if 0 - int capsuleUpAxis = convexShape->getUpAxis(); - btScalar halfHeight = convexShape->getHalfHeight(); - btScalar radius = convexShape->getRadius(); - halfExtents[capsuleUpAxis] = radius + halfHeight; -#endif - const btTransform& t = xform; - btMatrix3x3 abs_b = t.getBasis().absolute(); - btVector3 center = t.getOrigin(); - btVector3 extent = btVector3(abs_b[0].dot(halfExtents),abs_b[1].dot(halfExtents),abs_b[2].dot(halfExtents)); - - aabbMin = center - extent; - aabbMax = center + extent; - break; - } - case SPHERE_SHAPE_PROXYTYPE: - { - btScalar radius = convexShape->getImplicitShapeDimensions().getX();// * convexShape->getLocalScaling().getX(); - btScalar margin = radius + convexShape->getMarginNV(); - const btTransform& t = xform; - const btVector3& center = t.getOrigin(); - btVector3 extent(margin,margin,margin); - aabbMin = center - extent; - aabbMax = center + extent; - break; - } - case CONVEX_HULL_SHAPE_PROXYTYPE: - { - ATTRIBUTE_ALIGNED16(char convexHullShape0[sizeof(btConvexHullShape)]); - cellDmaGet(&convexHullShape0, convexShapePtr , sizeof(btConvexHullShape), DMA_TAG(1), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(1)); - btConvexHullShape* localPtr = (btConvexHullShape*)&convexHullShape0; - const btTransform& t = xform; - btScalar margin = convexShape->getMarginNV(); - localPtr->getNonvirtualAabb(t,aabbMin,aabbMax,margin); - //spu_printf("SPU convex aabbMin=%f,%f,%f=\n",aabbMin.getX(),aabbMin.getY(),aabbMin.getZ()); - //spu_printf("SPU convex aabbMax=%f,%f,%f=\n",aabbMax.getX(),aabbMax.getY(),aabbMax.getZ()); - break; - } - default: - { - // spu_printf("SPU: unsupported shapetype %d in AABB calculation\n"); - } - }; -} - -void dmaBvhShapeData (bvhMeshShape_LocalStoreMemory* bvhMeshShape, btBvhTriangleMeshShape* triMeshShape) -{ - register int dmaSize; - register ppu_address_t dmaPpuAddress2; - - dmaSize = sizeof(btTriangleIndexVertexArray); - dmaPpuAddress2 = reinterpret_cast(triMeshShape->getMeshInterface()); - // spu_printf("trimeshShape->getMeshInterface() == %llx\n",dmaPpuAddress2); -#ifdef __SPU__ - cellDmaGet(&bvhMeshShape->gTriangleMeshInterfaceStorage, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); - bvhMeshShape->gTriangleMeshInterfacePtr = &bvhMeshShape->gTriangleMeshInterfaceStorage; -#else - bvhMeshShape->gTriangleMeshInterfacePtr = (btTriangleIndexVertexArray*)cellDmaGetReadOnly(&bvhMeshShape->gTriangleMeshInterfaceStorage, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); -#endif - - //cellDmaWaitTagStatusAll(DMA_MASK(1)); - - ///now DMA over the BVH - - dmaSize = sizeof(btOptimizedBvh); - dmaPpuAddress2 = reinterpret_cast(triMeshShape->getOptimizedBvh()); - //spu_printf("trimeshShape->getOptimizedBvh() == %llx\n",dmaPpuAddress2); - cellDmaGet(&bvhMeshShape->gOptimizedBvh, dmaPpuAddress2 , dmaSize, DMA_TAG(2), 0, 0); - //cellDmaWaitTagStatusAll(DMA_MASK(2)); - cellDmaWaitTagStatusAll(DMA_MASK(1) | DMA_MASK(2)); -} - -void dmaBvhIndexedMesh (btIndexedMesh* IndexMesh, IndexedMeshArray& indexArray, int index, uint32_t dmaTag) -{ - cellDmaGet(IndexMesh, (ppu_address_t)&indexArray[index] , sizeof(btIndexedMesh), DMA_TAG(dmaTag), 0, 0); - -} - -void dmaBvhSubTreeHeaders (btBvhSubtreeInfo* subTreeHeaders, ppu_address_t subTreePtr, int batchSize, uint32_t dmaTag) -{ - cellDmaGet(subTreeHeaders, subTreePtr, batchSize * sizeof(btBvhSubtreeInfo), DMA_TAG(dmaTag), 0, 0); -} - -void dmaBvhSubTreeNodes (btQuantizedBvhNode* nodes, const btBvhSubtreeInfo& subtree, QuantizedNodeArray& nodeArray, int dmaTag) -{ - cellDmaGet(nodes, reinterpret_cast(&nodeArray[subtree.m_rootNodeIndex]) , subtree.m_subtreeSize* sizeof(btQuantizedBvhNode), DMA_TAG(2), 0, 0); -} - -///getShapeTypeSize could easily be optimized, but it is not likely a bottleneck -int getShapeTypeSize(int shapeType) -{ - - - switch (shapeType) - { - case CYLINDER_SHAPE_PROXYTYPE: - { - int shapeSize = sizeof(btCylinderShape); - btAssert(shapeSize < MAX_SHAPE_SIZE); - return shapeSize; - } - case BOX_SHAPE_PROXYTYPE: - { - int shapeSize = sizeof(btBoxShape); - btAssert(shapeSize < MAX_SHAPE_SIZE); - return shapeSize; - } - case SPHERE_SHAPE_PROXYTYPE: - { - int shapeSize = sizeof(btSphereShape); - btAssert(shapeSize < MAX_SHAPE_SIZE); - return shapeSize; - } - case TRIANGLE_MESH_SHAPE_PROXYTYPE: - { - int shapeSize = sizeof(btBvhTriangleMeshShape); - btAssert(shapeSize < MAX_SHAPE_SIZE); - return shapeSize; - } - case CAPSULE_SHAPE_PROXYTYPE: - { - int shapeSize = sizeof(btCapsuleShape); - btAssert(shapeSize < MAX_SHAPE_SIZE); - return shapeSize; - } - - case CONVEX_HULL_SHAPE_PROXYTYPE: - { - int shapeSize = sizeof(btConvexHullShape); - btAssert(shapeSize < MAX_SHAPE_SIZE); - return shapeSize; - } - - case COMPOUND_SHAPE_PROXYTYPE: - { - int shapeSize = sizeof(btCompoundShape); - btAssert(shapeSize < MAX_SHAPE_SIZE); - return shapeSize; - } - case STATIC_PLANE_PROXYTYPE: - { - int shapeSize = sizeof(btStaticPlaneShape); - btAssert(shapeSize < MAX_SHAPE_SIZE); - return shapeSize; - } - - default: - btAssert(0); - //unsupported shapetype, please add here - return 0; - } -} - -void dmaConvexVertexData (SpuConvexPolyhedronVertexData* convexVertexData, btConvexHullShape* convexShapeSPU) -{ - convexVertexData->gNumConvexPoints = convexShapeSPU->getNumPoints(); - if (convexVertexData->gNumConvexPoints>MAX_NUM_SPU_CONVEX_POINTS) - { - btAssert(0); - // spu_printf("SPU: Error: MAX_NUM_SPU_CONVEX_POINTS(%d) exceeded: %d\n",MAX_NUM_SPU_CONVEX_POINTS,convexVertexData->gNumConvexPoints); - return; - } - - register int dmaSize = convexVertexData->gNumConvexPoints*sizeof(btVector3); - ppu_address_t pointsPPU = (ppu_address_t) convexShapeSPU->getUnscaledPoints(); - cellDmaGet(&convexVertexData->g_convexPointBuffer[0], pointsPPU , dmaSize, DMA_TAG(2), 0, 0); -} - -void dmaCollisionShape (void* collisionShapeLocation, ppu_address_t collisionShapePtr, uint32_t dmaTag, int shapeType) -{ - register int dmaSize = getShapeTypeSize(shapeType); - cellDmaGet(collisionShapeLocation, collisionShapePtr , dmaSize, DMA_TAG(dmaTag), 0, 0); - //cellDmaGetReadOnly(collisionShapeLocation, collisionShapePtr , dmaSize, DMA_TAG(dmaTag), 0, 0); - //cellDmaWaitTagStatusAll(DMA_MASK(dmaTag)); -} - -void dmaCompoundShapeInfo (CompoundShape_LocalStoreMemory* compoundShapeLocation, btCompoundShape* spuCompoundShape, uint32_t dmaTag) -{ - register int dmaSize; - register ppu_address_t dmaPpuAddress2; - int childShapeCount = spuCompoundShape->getNumChildShapes(); - dmaSize = childShapeCount * sizeof(btCompoundShapeChild); - dmaPpuAddress2 = (ppu_address_t)spuCompoundShape->getChildList(); - cellDmaGet(&compoundShapeLocation->gSubshapes[0], dmaPpuAddress2, dmaSize, DMA_TAG(dmaTag), 0, 0); -} - -void dmaCompoundSubShapes (CompoundShape_LocalStoreMemory* compoundShapeLocation, btCompoundShape* spuCompoundShape, uint32_t dmaTag) -{ - int childShapeCount = spuCompoundShape->getNumChildShapes(); - int i; - // DMA all the subshapes - for ( i = 0; i < childShapeCount; ++i) - { - btCompoundShapeChild& childShape = compoundShapeLocation->gSubshapes[i]; - dmaCollisionShape (&compoundShapeLocation->gSubshapeShape[i],(ppu_address_t)childShape.m_childShape, dmaTag, childShape.m_childShapeType); - } -} - - -void spuWalkStacklessQuantizedTree(btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax,const btQuantizedBvhNode* rootNode,int startNodeIndex,int endNodeIndex) -{ - - int curIndex = startNodeIndex; - int walkIterations = 0; -#ifdef BT_DEBUG - int subTreeSize = endNodeIndex - startNodeIndex; -#endif - - int escapeIndex; - - unsigned int aabbOverlap, isLeafNode; - - while (curIndex < endNodeIndex) - { - //catch bugs in tree data - btAssert (walkIterations < subTreeSize); - - walkIterations++; - aabbOverlap = spuTestQuantizedAabbAgainstQuantizedAabb(quantizedQueryAabbMin,quantizedQueryAabbMax,rootNode->m_quantizedAabbMin,rootNode->m_quantizedAabbMax); - isLeafNode = rootNode->isLeafNode(); - - if (isLeafNode && aabbOverlap) - { - //printf("overlap with node %d\n",rootNode->getTriangleIndex()); - nodeCallback->processNode(0,rootNode->getTriangleIndex()); - // spu_printf("SPU: overlap detected with triangleIndex:%d\n",rootNode->getTriangleIndex()); - } - - if (aabbOverlap || isLeafNode) - { - rootNode++; - curIndex++; - } else - { - escapeIndex = rootNode->getEscapeIndex(); - rootNode += escapeIndex; - curIndex += escapeIndex; - } - } - -} diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.h b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.h deleted file mode 100644 index d369395e160..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.h +++ /dev/null @@ -1,126 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ -#ifndef __SPU_COLLISION_SHAPES_H -#define __SPU_COLLISION_SHAPES_H - -#include "../SpuDoubleBuffer.h" - -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/CollisionShapes/btConvexInternalShape.h" -#include "BulletCollision/CollisionShapes/btCylinderShape.h" -#include "BulletCollision/CollisionShapes/btStaticPlaneShape.h" - -#include "BulletCollision/CollisionShapes/btOptimizedBvh.h" -#include "BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h" -#include "BulletCollision/CollisionShapes/btSphereShape.h" - -#include "BulletCollision/CollisionShapes/btCapsuleShape.h" - -#include "BulletCollision/CollisionShapes/btConvexShape.h" -#include "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h" -#include "BulletCollision/CollisionShapes/btConvexHullShape.h" -#include "BulletCollision/CollisionShapes/btCompoundShape.h" - -#define MAX_NUM_SPU_CONVEX_POINTS 128 - -ATTRIBUTE_ALIGNED16(struct) SpuConvexPolyhedronVertexData -{ - void* gSpuConvexShapePtr; - btVector3* gConvexPoints; - int gNumConvexPoints; - int unused; - ATTRIBUTE_ALIGNED16(btVector3 g_convexPointBuffer[MAX_NUM_SPU_CONVEX_POINTS]); -}; - -#define MAX_SHAPE_SIZE 256 - -ATTRIBUTE_ALIGNED16(struct) CollisionShape_LocalStoreMemory -{ - ATTRIBUTE_ALIGNED16(char collisionShape[MAX_SHAPE_SIZE]); -}; - -ATTRIBUTE_ALIGNED16(struct) CompoundShape_LocalStoreMemory -{ - // Compound data -#define MAX_SPU_COMPOUND_SUBSHAPES 16 - ATTRIBUTE_ALIGNED16(btCompoundShapeChild gSubshapes[MAX_SPU_COMPOUND_SUBSHAPES]); - ATTRIBUTE_ALIGNED16(char gSubshapeShape[MAX_SPU_COMPOUND_SUBSHAPES][MAX_SHAPE_SIZE]); -}; - -ATTRIBUTE_ALIGNED16(struct) bvhMeshShape_LocalStoreMemory -{ - //ATTRIBUTE_ALIGNED16(btOptimizedBvh gOptimizedBvh); - ATTRIBUTE_ALIGNED16(char gOptimizedBvh[sizeof(btOptimizedBvh)+16]); - btOptimizedBvh* getOptimizedBvh() - { - return (btOptimizedBvh*) gOptimizedBvh; - } - - ATTRIBUTE_ALIGNED16(btTriangleIndexVertexArray gTriangleMeshInterfaceStorage); - btTriangleIndexVertexArray* gTriangleMeshInterfacePtr; - ///only a single mesh part for now, we can add support for multiple parts, but quantized trees don't support this at the moment - ATTRIBUTE_ALIGNED16(btIndexedMesh gIndexMesh); - #define MAX_SPU_SUBTREE_HEADERS 32 - //1024 - ATTRIBUTE_ALIGNED16(btBvhSubtreeInfo gSubtreeHeaders[MAX_SPU_SUBTREE_HEADERS]); - ATTRIBUTE_ALIGNED16(btQuantizedBvhNode gSubtreeNodes[MAX_SUBTREE_SIZE_IN_BYTES/sizeof(btQuantizedBvhNode)]); -}; - - -void computeAabb (btVector3& aabbMin, btVector3& aabbMax, btConvexInternalShape* convexShape, ppu_address_t convexShapePtr, int shapeType, const btTransform& xform); -void dmaBvhShapeData (bvhMeshShape_LocalStoreMemory* bvhMeshShape, btBvhTriangleMeshShape* triMeshShape); -void dmaBvhIndexedMesh (btIndexedMesh* IndexMesh, IndexedMeshArray& indexArray, int index, uint32_t dmaTag); -void dmaBvhSubTreeHeaders (btBvhSubtreeInfo* subTreeHeaders, ppu_address_t subTreePtr, int batchSize, uint32_t dmaTag); -void dmaBvhSubTreeNodes (btQuantizedBvhNode* nodes, const btBvhSubtreeInfo& subtree, QuantizedNodeArray& nodeArray, int dmaTag); - -int getShapeTypeSize(int shapeType); -void dmaConvexVertexData (SpuConvexPolyhedronVertexData* convexVertexData, btConvexHullShape* convexShapeSPU); -void dmaCollisionShape (void* collisionShapeLocation, ppu_address_t collisionShapePtr, uint32_t dmaTag, int shapeType); -void dmaCompoundShapeInfo (CompoundShape_LocalStoreMemory* compoundShapeLocation, btCompoundShape* spuCompoundShape, uint32_t dmaTag); -void dmaCompoundSubShapes (CompoundShape_LocalStoreMemory* compoundShapeLocation, btCompoundShape* spuCompoundShape, uint32_t dmaTag); - - -#define USE_BRANCHFREE_TEST 1 -#ifdef USE_BRANCHFREE_TEST -SIMD_FORCE_INLINE unsigned int spuTestQuantizedAabbAgainstQuantizedAabb(unsigned short int* aabbMin1,unsigned short int* aabbMax1,const unsigned short int* aabbMin2,const unsigned short int* aabbMax2) -{ -#if defined(__CELLOS_LV2__) && defined (__SPU__) - vec_ushort8 vecMin = {aabbMin1[0],aabbMin2[0],aabbMin1[2],aabbMin2[2],aabbMin1[1],aabbMin2[1],0,0}; - vec_ushort8 vecMax = {aabbMax2[0],aabbMax1[0],aabbMax2[2],aabbMax1[2],aabbMax2[1],aabbMax1[1],0,0}; - vec_ushort8 isGt = spu_cmpgt(vecMin,vecMax); - return spu_extract(spu_gather(isGt),0)==0; - -#else - return btSelect((unsigned)((aabbMin1[0] <= aabbMax2[0]) & (aabbMax1[0] >= aabbMin2[0]) - & (aabbMin1[2] <= aabbMax2[2]) & (aabbMax1[2] >= aabbMin2[2]) - & (aabbMin1[1] <= aabbMax2[1]) & (aabbMax1[1] >= aabbMin2[1])), - 1, 0); -#endif -} -#else - -SIMD_FORCE_INLINE unsigned int spuTestQuantizedAabbAgainstQuantizedAabb(const unsigned short int* aabbMin1,const unsigned short int* aabbMax1,const unsigned short int* aabbMin2,const unsigned short int* aabbMax2) -{ - unsigned int overlap = 1; - overlap = (aabbMin1[0] > aabbMax2[0] || aabbMax1[0] < aabbMin2[0]) ? 0 : overlap; - overlap = (aabbMin1[2] > aabbMax2[2] || aabbMax1[2] < aabbMin2[2]) ? 0 : overlap; - overlap = (aabbMin1[1] > aabbMax2[1] || aabbMax1[1] < aabbMin2[1]) ? 0 : overlap; - return overlap; -} -#endif - -void spuWalkStacklessQuantizedTree(btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax,const btQuantizedBvhNode* rootNode,int startNodeIndex,int endNodeIndex); - -#endif diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.cpp b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.cpp deleted file mode 100644 index 8e540d9297b..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.cpp +++ /dev/null @@ -1,242 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "SpuContactResult.h" - -//#define DEBUG_SPU_COLLISION_DETECTION 1 - -#ifdef DEBUG_SPU_COLLISION_DETECTION -#ifndef __SPU__ -#include -#define spu_printf printf -#endif -#endif DEBUG_SPU_COLLISION_DETECTION - -SpuContactResult::SpuContactResult() -{ - m_manifoldAddress = 0; - m_spuManifold = NULL; - m_RequiresWriteBack = false; -} - - SpuContactResult::~SpuContactResult() -{ - g_manifoldDmaExport.swapBuffers(); -} - - ///User can override this material combiner by implementing gContactAddedCallback and setting body0->m_collisionFlags |= btCollisionObject::customMaterialCallback; -inline btScalar calculateCombinedFriction(btScalar friction0,btScalar friction1) -{ - btScalar friction = friction0*friction1; - - const btScalar MAX_FRICTION = btScalar(10.); - - if (friction < -MAX_FRICTION) - friction = -MAX_FRICTION; - if (friction > MAX_FRICTION) - friction = MAX_FRICTION; - return friction; - -} - -inline btScalar calculateCombinedRestitution(btScalar restitution0,btScalar restitution1) -{ - return restitution0*restitution1; -} - - - - void SpuContactResult::setContactInfo(btPersistentManifold* spuManifold, ppu_address_t manifoldAddress,const btTransform& worldTrans0,const btTransform& worldTrans1, btScalar restitution0,btScalar restitution1, btScalar friction0,btScalar friction1, bool isSwapped) - { - //spu_printf("SpuContactResult::setContactInfo ManifoldAddress: %lu\n", manifoldAddress); - m_rootWorldTransform0 = worldTrans0; - m_rootWorldTransform1 = worldTrans1; - m_manifoldAddress = manifoldAddress; - m_spuManifold = spuManifold; - - m_combinedFriction = calculateCombinedFriction(friction0,friction1); - m_combinedRestitution = calculateCombinedRestitution(restitution0,restitution1); - m_isSwapped = isSwapped; - } - - void SpuContactResult::setShapeIdentifiersA(int partId0,int index0) - { - - } - - void SpuContactResult::setShapeIdentifiersB(int partId1,int index1) - { - - } - - - - ///return true if it requires a dma transfer back -bool ManifoldResultAddContactPoint(const btVector3& normalOnBInWorld, - const btVector3& pointInWorld, - float depth, - btPersistentManifold* manifoldPtr, - btTransform& transA, - btTransform& transB, - btScalar combinedFriction, - btScalar combinedRestitution, - bool isSwapped) -{ - -// float contactTreshold = manifoldPtr->getContactBreakingThreshold(); - - //spu_printf("SPU: add contactpoint, depth:%f, contactTreshold %f, manifoldPtr %llx\n",depth,contactTreshold,manifoldPtr); - -#ifdef DEBUG_SPU_COLLISION_DETECTION - spu_printf("SPU: contactTreshold %f\n",contactTreshold); -#endif //DEBUG_SPU_COLLISION_DETECTION - if (depth > manifoldPtr->getContactBreakingThreshold()) - return false; - - btVector3 pointA; - btVector3 localA; - btVector3 localB; - btVector3 normal; - - - if (isSwapped) - { - normal = normalOnBInWorld * -1; - pointA = pointInWorld + normal * depth; - localA = transA.invXform(pointA ); - localB = transB.invXform(pointInWorld); - } - else - { - normal = normalOnBInWorld; - pointA = pointInWorld + normal * depth; - localA = transA.invXform(pointA ); - localB = transB.invXform(pointInWorld); - } - - btManifoldPoint newPt(localA,localB,normal,depth); - newPt.m_positionWorldOnA = pointA; - newPt.m_positionWorldOnB = pointInWorld; - - newPt.m_combinedFriction = combinedFriction; - newPt.m_combinedRestitution = combinedRestitution; - - - int insertIndex = manifoldPtr->getCacheEntry(newPt); - if (insertIndex >= 0) - { - // we need to replace the current contact point, otherwise small errors will accumulate (spheres start rolling etc) - manifoldPtr->replaceContactPoint(newPt,insertIndex); - return true; - - } else - { - - /* - ///@todo: SPU callbacks, either immediate (local on the SPU), or deferred - //User can override friction and/or restitution - if (gContactAddedCallback && - //and if either of the two bodies requires custom material - ((m_body0->m_collisionFlags & btCollisionObject::customMaterialCallback) || - (m_body1->m_collisionFlags & btCollisionObject::customMaterialCallback))) - { - //experimental feature info, for per-triangle material etc. - (*gContactAddedCallback)(newPt,m_body0,m_partId0,m_index0,m_body1,m_partId1,m_index1); - } - */ - manifoldPtr->addManifoldPoint(newPt); - return true; - - } - return false; - -} - - -void SpuContactResult::writeDoubleBufferedManifold(btPersistentManifold* lsManifold, btPersistentManifold* mmManifold) -{ - ///only write back the contact information on SPU. Other platforms avoid copying, and use the data in-place - ///see SpuFakeDma.cpp 'cellDmaLargeGetReadOnly' -#if defined (__SPU__) || defined (USE_LIBSPE2) - memcpy(g_manifoldDmaExport.getFront(),lsManifold,sizeof(btPersistentManifold)); - - g_manifoldDmaExport.swapBuffers(); - ppu_address_t mmAddr = (ppu_address_t)mmManifold; - g_manifoldDmaExport.backBufferDmaPut(mmAddr, sizeof(btPersistentManifold), DMA_TAG(9)); - // Should there be any kind of wait here? What if somebody tries to use this tag again? What if we call this function again really soon? - //no, the swapBuffers does the wait -#endif -} - -void SpuContactResult::addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth) -{ -#ifdef DEBUG_SPU_COLLISION_DETECTION - spu_printf("*** SpuContactResult::addContactPoint: depth = %f\n",depth); - spu_printf("*** normal = %f,%f,%f\n",normalOnBInWorld.getX(),normalOnBInWorld.getY(),normalOnBInWorld.getZ()); - spu_printf("*** position = %f,%f,%f\n",pointInWorld.getX(),pointInWorld.getY(),pointInWorld.getZ()); -#endif //DEBUG_SPU_COLLISION_DETECTION - - -#ifdef DEBUG_SPU_COLLISION_DETECTION - // int sman = sizeof(rage::phManifold); -// spu_printf("sizeof_manifold = %i\n",sman); -#endif //DEBUG_SPU_COLLISION_DETECTION - - btPersistentManifold* localManifold = m_spuManifold; - - btVector3 normalB(normalOnBInWorld.getX(),normalOnBInWorld.getY(),normalOnBInWorld.getZ()); - btVector3 pointWrld(pointInWorld.getX(),pointInWorld.getY(),pointInWorld.getZ()); - - //process the contact point - const bool retVal = ManifoldResultAddContactPoint(normalB, - pointWrld, - depth, - localManifold, - m_rootWorldTransform0, - m_rootWorldTransform1, - m_combinedFriction, - m_combinedRestitution, - m_isSwapped); - m_RequiresWriteBack = m_RequiresWriteBack || retVal; -} - -void SpuContactResult::flush() -{ - - if (m_spuManifold && m_spuManifold->getNumContacts()) - { - m_spuManifold->refreshContactPoints(m_rootWorldTransform0,m_rootWorldTransform1); - m_RequiresWriteBack = true; - } - - - if (m_RequiresWriteBack) - { -#ifdef DEBUG_SPU_COLLISION_DETECTION - spu_printf("SPU: Start SpuContactResult::flush (Put) DMA\n"); - spu_printf("Num contacts:%d\n", m_spuManifold->getNumContacts()); - spu_printf("Manifold address: %llu\n", m_manifoldAddress); -#endif //DEBUG_SPU_COLLISION_DETECTION - // spu_printf("writeDoubleBufferedManifold\n"); - writeDoubleBufferedManifold(m_spuManifold, (btPersistentManifold*)m_manifoldAddress); -#ifdef DEBUG_SPU_COLLISION_DETECTION - spu_printf("SPU: Finished (Put) DMA\n"); -#endif //DEBUG_SPU_COLLISION_DETECTION - } - m_spuManifold = NULL; - m_RequiresWriteBack = false; -} - - diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.h b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.h deleted file mode 100644 index 394f56dcbd1..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.h +++ /dev/null @@ -1,106 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef SPU_CONTACT_RESULT2_H -#define SPU_CONTACT_RESULT2_H - - -#ifndef _WIN32 -#include -#endif - - - -#include "../SpuDoubleBuffer.h" - - -#include "LinearMath/btTransform.h" - - -#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" -#include "BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h" - -class btCollisionShape; - - -struct SpuCollisionPairInput -{ - ppu_address_t m_collisionShapes[2]; - btCollisionShape* m_spuCollisionShapes[2]; - - ppu_address_t m_persistentManifoldPtr; - btVector3 m_primitiveDimensions0; - btVector3 m_primitiveDimensions1; - int m_shapeType0; - int m_shapeType1; - float m_collisionMargin0; - float m_collisionMargin1; - - btTransform m_worldTransform0; - btTransform m_worldTransform1; - - bool m_isSwapped; - bool m_useEpa; -}; - - -struct SpuClosestPointInput : public btDiscreteCollisionDetectorInterface::ClosestPointInput -{ - struct SpuConvexPolyhedronVertexData* m_convexVertexData[2]; -}; - -///SpuContactResult exports the contact points using double-buffered DMA transfers, only when needed -///So when an existing contact point is duplicated, no transfer/refresh is performed. -class SpuContactResult : public btDiscreteCollisionDetectorInterface::Result -{ - btTransform m_rootWorldTransform0; - btTransform m_rootWorldTransform1; - ppu_address_t m_manifoldAddress; - - btPersistentManifold* m_spuManifold; - bool m_RequiresWriteBack; - btScalar m_combinedFriction; - btScalar m_combinedRestitution; - - bool m_isSwapped; - - DoubleBuffer g_manifoldDmaExport; - - public: - SpuContactResult(); - virtual ~SpuContactResult(); - - btPersistentManifold* GetSpuManifold() const - { - return m_spuManifold; - } - - virtual void setShapeIdentifiersA(int partId0,int index0); - virtual void setShapeIdentifiersB(int partId1,int index1); - - void setContactInfo(btPersistentManifold* spuManifold, ppu_address_t manifoldAddress,const btTransform& worldTrans0,const btTransform& worldTrans1, btScalar restitution0,btScalar restitution1, btScalar friction0,btScalar friction01, bool isSwapped); - - - void writeDoubleBufferedManifold(btPersistentManifold* lsManifold, btPersistentManifold* mmManifold); - - virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth); - - void flush(); -}; - - - -#endif //SPU_CONTACT_RESULT2_H - diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuConvexPenetrationDepthSolver.h b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuConvexPenetrationDepthSolver.h deleted file mode 100644 index 449f19288c4..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuConvexPenetrationDepthSolver.h +++ /dev/null @@ -1,51 +0,0 @@ - -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#ifndef SPU_CONVEX_PENETRATION_DEPTH_H -#define SPU_CONVEX_PENETRATION_DEPTH_H - - - -class btStackAlloc; -class btIDebugDraw; -#include "BulletCollision/NarrowphaseCollision/btConvexPenetrationDepthSolver.h" - -#include "LinearMath/btTransform.h" - - -///ConvexPenetrationDepthSolver provides an interface for penetration depth calculation. -class SpuConvexPenetrationDepthSolver : public btConvexPenetrationDepthSolver -{ -public: - - virtual ~SpuConvexPenetrationDepthSolver() {}; - virtual bool calcPenDepth( SpuVoronoiSimplexSolver& simplexSolver, - void* convexA,void* convexB,int shapeTypeA, int shapeTypeB, float marginA, float marginB, - btTransform& transA,const btTransform& transB, - btVector3& v, btVector3& pa, btVector3& pb, - class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc, - struct SpuConvexPolyhedronVertexData* convexVertexDataA, - struct SpuConvexPolyhedronVertexData* convexVertexDataB - ) const = 0; - - -}; - - - -#endif //SPU_CONVEX_PENETRATION_DEPTH_H - diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp deleted file mode 100644 index c3dfaa793e3..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp +++ /dev/null @@ -1,1381 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "SpuGatheringCollisionTask.h" - -//#define DEBUG_SPU_COLLISION_DETECTION 1 -#include "../SpuDoubleBuffer.h" - -#include "../SpuCollisionTaskProcess.h" -#include "../SpuGatheringCollisionDispatcher.h" //for SPU_BATCHSIZE_BROADPHASE_PAIRS - -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "../SpuContactManifoldCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "SpuContactResult.h" -#include "BulletCollision/CollisionShapes/btOptimizedBvh.h" -#include "BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h" -#include "BulletCollision/CollisionShapes/btSphereShape.h" -#include "BulletCollision/CollisionShapes/btConvexPointCloudShape.h" - -#include "BulletCollision/CollisionShapes/btCapsuleShape.h" - -#include "BulletCollision/CollisionShapes/btConvexShape.h" -#include "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h" -#include "BulletCollision/CollisionShapes/btConvexHullShape.h" -#include "BulletCollision/CollisionShapes/btCompoundShape.h" - -#include "SpuMinkowskiPenetrationDepthSolver.h" -//#include "SpuEpaPenetrationDepthSolver.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h" - - -#include "boxBoxDistance.h" -#include "BulletMultiThreaded/vectormath2bullet.h" -#include "SpuCollisionShapes.h" //definition of SpuConvexPolyhedronVertexData -#include "BulletCollision/CollisionDispatch/btBoxBoxDetector.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h" -#include "BulletCollision/CollisionShapes/btTriangleShape.h" - -#ifdef __SPU__ -///Software caching from the IBM Cell SDK, it reduces 25% SPU time for our test cases -#ifndef USE_LIBSPE2 -#define USE_SOFTWARE_CACHE 1 -#endif -#endif //__SPU__ - -int gSkippedCol = 0; -int gProcessedCol = 0; - -//////////////////////////////////////////////// -/// software caching -#if USE_SOFTWARE_CACHE -#include -#include -#include -#include -#define SPE_CACHE_NWAY 4 -//#define SPE_CACHE_NSETS 32, 16 -#define SPE_CACHE_NSETS 8 -//#define SPE_CACHELINE_SIZE 512 -#define SPE_CACHELINE_SIZE 128 -#define SPE_CACHE_SET_TAGID(set) 15 -///make sure that spe_cache.h is below those defines! -#include "../Extras/software_cache/cache/include/spe_cache.h" - - -int g_CacheMisses=0; -int g_CacheHits=0; - -#if 0 // Added to allow cache misses and hits to be tracked, change this to 1 to restore unmodified version -#define spe_cache_read(ea) _spe_cache_lookup_xfer_wait_(ea, 0, 1) -#else -#define spe_cache_read(ea) \ -({ \ - int set, idx, line, byte; \ - _spe_cache_nway_lookup_(ea, set, idx); \ - \ - if (btUnlikely(idx < 0)) { \ - ++g_CacheMisses; \ - idx = _spe_cache_miss_(ea, set, -1); \ - spu_writech(22, SPE_CACHE_SET_TAGMASK(set)); \ - spu_mfcstat(MFC_TAG_UPDATE_ALL); \ - } \ - else \ - { \ - ++g_CacheHits; \ - } \ - line = _spe_cacheline_num_(set, idx); \ - byte = _spe_cacheline_byte_offset_(ea); \ - (void *) &spe_cache_mem[line + byte]; \ -}) - -#endif - -#endif // USE_SOFTWARE_CACHE - -bool gUseEpa = false; - -#ifdef USE_SN_TUNER -#include -#endif //USE_SN_TUNER - -#if defined (__SPU__) && !defined (USE_LIBSPE2) -#include -#elif defined (USE_LIBSPE2) -#define spu_printf(a) -#else -#define IGNORE_ALIGNMENT 1 -#include -#include -#define spu_printf printf - -#endif - -//int gNumConvexPoints0=0; - -///Make sure no destructors are called on this memory -struct CollisionTask_LocalStoreMemory -{ - ///This CollisionTask_LocalStoreMemory is mainly used for the SPU version, using explicit DMA - ///Other platforms can use other memory programming models. - - ATTRIBUTE_ALIGNED16(btBroadphasePair gBroadphasePairsBuffer[SPU_BATCHSIZE_BROADPHASE_PAIRS]); - DoubleBuffer g_workUnitTaskBuffers; - ATTRIBUTE_ALIGNED16(char gSpuContactManifoldAlgoBuffer [sizeof(SpuContactManifoldCollisionAlgorithm)+16]); - ATTRIBUTE_ALIGNED16(char gColObj0Buffer [sizeof(btCollisionObject)+16]); - ATTRIBUTE_ALIGNED16(char gColObj1Buffer [sizeof(btCollisionObject)+16]); - ///we reserve 32bit integer indices, even though they might be 16bit - ATTRIBUTE_ALIGNED16(int spuIndices[16]); - btPersistentManifold gPersistentManifoldBuffer; - CollisionShape_LocalStoreMemory gCollisionShapes[2]; - bvhMeshShape_LocalStoreMemory bvhShapeData; - SpuConvexPolyhedronVertexData convexVertexData[2]; - CompoundShape_LocalStoreMemory compoundShapeData[2]; - - ///The following pointers might either point into this local store memory, or to the original/other memory locations. - ///See SpuFakeDma for implementation of cellDmaSmallGetReadOnly. - btCollisionObject* m_lsColObj0Ptr; - btCollisionObject* m_lsColObj1Ptr; - btBroadphasePair* m_pairsPointer; - btPersistentManifold* m_lsManifoldPtr; - SpuContactManifoldCollisionAlgorithm* m_lsCollisionAlgorithmPtr; - - bool needsDmaPutContactManifoldAlgo; - - btCollisionObject* getColObj0() - { - return m_lsColObj0Ptr; - } - btCollisionObject* getColObj1() - { - return m_lsColObj1Ptr; - } - - - btBroadphasePair* getBroadphasePairPtr() - { - return m_pairsPointer; - } - - SpuContactManifoldCollisionAlgorithm* getlocalCollisionAlgorithm() - { - return m_lsCollisionAlgorithmPtr; - } - - btPersistentManifold* getContactManifoldPtr() - { - return m_lsManifoldPtr; - } -}; - - -#if defined(__CELLOS_LV2__) || defined(USE_LIBSPE2) - -ATTRIBUTE_ALIGNED16(CollisionTask_LocalStoreMemory gLocalStoreMemory); - -void* createCollisionLocalStoreMemory() -{ - return &gLocalStoreMemory; -} -#else -void* createCollisionLocalStoreMemory() -{ - return new CollisionTask_LocalStoreMemory; -} - -#endif - -void ProcessSpuConvexConvexCollision(SpuCollisionPairInput* wuInput, CollisionTask_LocalStoreMemory* lsMemPtr, SpuContactResult& spuContacts); - - -SIMD_FORCE_INLINE void small_cache_read(void* buffer, ppu_address_t ea, size_t size) -{ -#if USE_SOFTWARE_CACHE - // Check for alignment requirements. We need to make sure the entire request fits within one cache line, - // so the first and last bytes should fall on the same cache line - btAssert((ea & ~SPE_CACHELINE_MASK) == ((ea + size - 1) & ~SPE_CACHELINE_MASK)); - - void* ls = spe_cache_read(ea); - memcpy(buffer, ls, size); -#else - stallingUnalignedDmaSmallGet(buffer,ea,size); -#endif -} - -SIMD_FORCE_INLINE void small_cache_read_triple( void* ls0, ppu_address_t ea0, - void* ls1, ppu_address_t ea1, - void* ls2, ppu_address_t ea2, - size_t size) -{ - btAssert(size<16); - ATTRIBUTE_ALIGNED16(char tmpBuffer0[32]); - ATTRIBUTE_ALIGNED16(char tmpBuffer1[32]); - ATTRIBUTE_ALIGNED16(char tmpBuffer2[32]); - - uint32_t i; - - - ///make sure last 4 bits are the same, for cellDmaSmallGet - char* localStore0 = (char*)ls0; - uint32_t last4BitsOffset = ea0 & 0x0f; - char* tmpTarget0 = tmpBuffer0 + last4BitsOffset; -#ifdef __SPU__ - cellDmaSmallGet(tmpTarget0,ea0,size,DMA_TAG(1),0,0); -#else - tmpTarget0 = (char*)cellDmaSmallGetReadOnly(tmpTarget0,ea0,size,DMA_TAG(1),0,0); -#endif - - - char* localStore1 = (char*)ls1; - last4BitsOffset = ea1 & 0x0f; - char* tmpTarget1 = tmpBuffer1 + last4BitsOffset; -#ifdef __SPU__ - cellDmaSmallGet(tmpTarget1,ea1,size,DMA_TAG(1),0,0); -#else - tmpTarget1 = (char*)cellDmaSmallGetReadOnly(tmpTarget1,ea1,size,DMA_TAG(1),0,0); -#endif - - char* localStore2 = (char*)ls2; - last4BitsOffset = ea2 & 0x0f; - char* tmpTarget2 = tmpBuffer2 + last4BitsOffset; -#ifdef __SPU__ - cellDmaSmallGet(tmpTarget2,ea2,size,DMA_TAG(1),0,0); -#else - tmpTarget2 = (char*)cellDmaSmallGetReadOnly(tmpTarget2,ea2,size,DMA_TAG(1),0,0); -#endif - - - cellDmaWaitTagStatusAll( DMA_MASK(1) ); - - //this is slowish, perhaps memcpy on SPU is smarter? - for (i=0; btLikely( ibvhShapeData.gIndexMesh.m_indexType == PHY_SHORT) - { - unsigned short int* indexBasePtr = (unsigned short int*)(m_lsMemPtr->bvhShapeData.gIndexMesh.m_triangleIndexBase+triangleIndex*m_lsMemPtr->bvhShapeData.gIndexMesh.m_triangleIndexStride); - ATTRIBUTE_ALIGNED16(unsigned short int tmpIndices[3]); - - small_cache_read_triple(&tmpIndices[0],(ppu_address_t)&indexBasePtr[0], - &tmpIndices[1],(ppu_address_t)&indexBasePtr[1], - &tmpIndices[2],(ppu_address_t)&indexBasePtr[2], - sizeof(unsigned short int)); - - m_lsMemPtr->spuIndices[0] = int(tmpIndices[0]); - m_lsMemPtr->spuIndices[1] = int(tmpIndices[1]); - m_lsMemPtr->spuIndices[2] = int(tmpIndices[2]); - } else - { - unsigned int* indexBasePtr = (unsigned int*)(m_lsMemPtr->bvhShapeData.gIndexMesh.m_triangleIndexBase+triangleIndex*m_lsMemPtr->bvhShapeData.gIndexMesh.m_triangleIndexStride); - - small_cache_read_triple(&m_lsMemPtr->spuIndices[0],(ppu_address_t)&indexBasePtr[0], - &m_lsMemPtr->spuIndices[1],(ppu_address_t)&indexBasePtr[1], - &m_lsMemPtr->spuIndices[2],(ppu_address_t)&indexBasePtr[2], - sizeof(int)); - } - - // spu_printf("SPU index0=%d ,",spuIndices[0]); - // spu_printf("SPU index1=%d ,",spuIndices[1]); - // spu_printf("SPU index2=%d ,",spuIndices[2]); - // spu_printf("SPU: indexBasePtr=%llx\n",indexBasePtr); - - const btVector3& meshScaling = m_lsMemPtr->bvhShapeData.gTriangleMeshInterfacePtr->getScaling(); - for (int j=2;btLikely( j>=0 );j--) - { - int graphicsindex = m_lsMemPtr->spuIndices[j]; - - // spu_printf("SPU index=%d ,",graphicsindex); - btScalar* graphicsbasePtr = (btScalar*)(m_lsMemPtr->bvhShapeData.gIndexMesh.m_vertexBase+graphicsindex*m_lsMemPtr->bvhShapeData.gIndexMesh.m_vertexStride); - // spu_printf("SPU graphicsbasePtr=%llx\n",graphicsbasePtr); - - - ///handle un-aligned vertices... - - //another DMA for each vertex - small_cache_read_triple(&spuUnscaledVertex[0],(ppu_address_t)&graphicsbasePtr[0], - &spuUnscaledVertex[1],(ppu_address_t)&graphicsbasePtr[1], - &spuUnscaledVertex[2],(ppu_address_t)&graphicsbasePtr[2], - sizeof(btScalar)); - - m_tmpTriangleShape.getVertexPtr(j).setValue(spuUnscaledVertex[0]*meshScaling.getX(), - spuUnscaledVertex[1]*meshScaling.getY(), - spuUnscaledVertex[2]*meshScaling.getZ()); - - // spu_printf("SPU:triangle vertices:%f,%f,%f\n",spuTriangleVertices[j].x(),spuTriangleVertices[j].y(),spuTriangleVertices[j].z()); - } - - - SpuCollisionPairInput triangleConcaveInput(*m_wuInput); -// triangleConcaveInput.m_spuCollisionShapes[1] = &spuTriangleVertices[0]; - triangleConcaveInput.m_spuCollisionShapes[1] = &m_tmpTriangleShape; - triangleConcaveInput.m_shapeType1 = TRIANGLE_SHAPE_PROXYTYPE; - - m_spuContacts.setShapeIdentifiersB(subPart,triangleIndex); - - // m_spuContacts.flush(); - - ProcessSpuConvexConvexCollision(&triangleConcaveInput, m_lsMemPtr,m_spuContacts); - ///this flush should be automatic - // m_spuContacts.flush(); - } - -}; - - - -void btConvexPlaneCollideSingleContact (SpuCollisionPairInput* wuInput,CollisionTask_LocalStoreMemory* lsMemPtr,SpuContactResult& spuContacts) -{ - - btConvexShape* convexShape = (btConvexShape*) wuInput->m_spuCollisionShapes[0]; - btStaticPlaneShape* planeShape = (btStaticPlaneShape*) wuInput->m_spuCollisionShapes[1]; - - bool hasCollision = false; - const btVector3& planeNormal = planeShape->getPlaneNormal(); - const btScalar& planeConstant = planeShape->getPlaneConstant(); - - - btTransform convexWorldTransform = wuInput->m_worldTransform0; - btTransform convexInPlaneTrans; - convexInPlaneTrans= wuInput->m_worldTransform1.inverse() * convexWorldTransform; - btTransform planeInConvex; - planeInConvex= convexWorldTransform.inverse() * wuInput->m_worldTransform1; - - //btVector3 vtx = convexShape->localGetSupportVertexWithoutMarginNonVirtual(planeInConvex.getBasis()*-planeNormal); - btVector3 vtx = convexShape->localGetSupportVertexNonVirtual(planeInConvex.getBasis()*-planeNormal); - - btVector3 vtxInPlane = convexInPlaneTrans(vtx); - btScalar distance = (planeNormal.dot(vtxInPlane) - planeConstant); - - btVector3 vtxInPlaneProjected = vtxInPlane - distance*planeNormal; - btVector3 vtxInPlaneWorld = wuInput->m_worldTransform1 * vtxInPlaneProjected; - - hasCollision = distance < lsMemPtr->getContactManifoldPtr()->getContactBreakingThreshold(); - //resultOut->setPersistentManifold(m_manifoldPtr); - if (hasCollision) - { - /// report a contact. internally this will be kept persistent, and contact reduction is done - btVector3 normalOnSurfaceB =wuInput->m_worldTransform1.getBasis() * planeNormal; - btVector3 pOnB = vtxInPlaneWorld; - spuContacts.addContactPoint(normalOnSurfaceB,pOnB,distance); - } -} - -void ProcessConvexPlaneSpuCollision(SpuCollisionPairInput* wuInput, CollisionTask_LocalStoreMemory* lsMemPtr, SpuContactResult& spuContacts) -{ - - register int dmaSize = 0; - register ppu_address_t dmaPpuAddress2; - btPersistentManifold* manifold = (btPersistentManifold*)wuInput->m_persistentManifoldPtr; - - ///DMA in the vertices for convex shapes - ATTRIBUTE_ALIGNED16(char convexHullShape0[sizeof(btConvexHullShape)]); - ATTRIBUTE_ALIGNED16(char convexHullShape1[sizeof(btConvexHullShape)]); - - if ( btLikely( wuInput->m_shapeType0== CONVEX_HULL_SHAPE_PROXYTYPE ) ) - { - // spu_printf("SPU: DMA btConvexHullShape\n"); - - dmaSize = sizeof(btConvexHullShape); - dmaPpuAddress2 = wuInput->m_collisionShapes[0]; - - cellDmaGet(&convexHullShape0, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); - //cellDmaWaitTagStatusAll(DMA_MASK(1)); - } - - if ( btLikely( wuInput->m_shapeType1 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) - { - // spu_printf("SPU: DMA btConvexHullShape\n"); - dmaSize = sizeof(btConvexHullShape); - dmaPpuAddress2 = wuInput->m_collisionShapes[1]; - cellDmaGet(&convexHullShape1, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); - //cellDmaWaitTagStatusAll(DMA_MASK(1)); - } - - if ( btLikely( wuInput->m_shapeType0 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) - { - cellDmaWaitTagStatusAll(DMA_MASK(1)); - dmaConvexVertexData (&lsMemPtr->convexVertexData[0], (btConvexHullShape*)&convexHullShape0); - lsMemPtr->convexVertexData[0].gSpuConvexShapePtr = wuInput->m_spuCollisionShapes[0]; - } - - - if ( btLikely( wuInput->m_shapeType1 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) - { - cellDmaWaitTagStatusAll(DMA_MASK(1)); - dmaConvexVertexData (&lsMemPtr->convexVertexData[1], (btConvexHullShape*)&convexHullShape1); - lsMemPtr->convexVertexData[1].gSpuConvexShapePtr = wuInput->m_spuCollisionShapes[1]; - } - - - btConvexPointCloudShape cpc0,cpc1; - - if ( btLikely( wuInput->m_shapeType0 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) - { - cellDmaWaitTagStatusAll(DMA_MASK(2)); - lsMemPtr->convexVertexData[0].gConvexPoints = &lsMemPtr->convexVertexData[0].g_convexPointBuffer[0]; - btConvexHullShape* ch = (btConvexHullShape*)wuInput->m_spuCollisionShapes[0]; - const btVector3& localScaling = ch->getLocalScalingNV(); - cpc0.setPoints(lsMemPtr->convexVertexData[0].gConvexPoints,lsMemPtr->convexVertexData[0].gNumConvexPoints,false,localScaling); - wuInput->m_spuCollisionShapes[0] = &cpc0; - } - - if ( btLikely( wuInput->m_shapeType1 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) - { - cellDmaWaitTagStatusAll(DMA_MASK(2)); - lsMemPtr->convexVertexData[1].gConvexPoints = &lsMemPtr->convexVertexData[1].g_convexPointBuffer[0]; - btConvexHullShape* ch = (btConvexHullShape*)wuInput->m_spuCollisionShapes[1]; - const btVector3& localScaling = ch->getLocalScalingNV(); - cpc1.setPoints(lsMemPtr->convexVertexData[1].gConvexPoints,lsMemPtr->convexVertexData[1].gNumConvexPoints,false,localScaling); - wuInput->m_spuCollisionShapes[1] = &cpc1; - - } - - -// const btConvexShape* shape0Ptr = (const btConvexShape*)wuInput->m_spuCollisionShapes[0]; -// const btConvexShape* shape1Ptr = (const btConvexShape*)wuInput->m_spuCollisionShapes[1]; -// int shapeType0 = wuInput->m_shapeType0; -// int shapeType1 = wuInput->m_shapeType1; - float marginA = wuInput->m_collisionMargin0; - float marginB = wuInput->m_collisionMargin1; - - SpuClosestPointInput cpInput; - cpInput.m_convexVertexData[0] = &lsMemPtr->convexVertexData[0]; - cpInput.m_convexVertexData[1] = &lsMemPtr->convexVertexData[1]; - cpInput.m_transformA = wuInput->m_worldTransform0; - cpInput.m_transformB = wuInput->m_worldTransform1; - float sumMargin = (marginA+marginB+lsMemPtr->getContactManifoldPtr()->getContactBreakingThreshold()); - cpInput.m_maximumDistanceSquared = sumMargin * sumMargin; - - ppu_address_t manifoldAddress = (ppu_address_t)manifold; - - btPersistentManifold* spuManifold=lsMemPtr->getContactManifoldPtr(); - //spuContacts.setContactInfo(spuManifold,manifoldAddress,wuInput->m_worldTransform0,wuInput->m_worldTransform1,wuInput->m_isSwapped); - spuContacts.setContactInfo(spuManifold,manifoldAddress,lsMemPtr->getColObj0()->getWorldTransform(), - lsMemPtr->getColObj1()->getWorldTransform(), - lsMemPtr->getColObj0()->getRestitution(),lsMemPtr->getColObj1()->getRestitution(), - lsMemPtr->getColObj0()->getFriction(),lsMemPtr->getColObj1()->getFriction(), - wuInput->m_isSwapped); - - - btConvexPlaneCollideSingleContact(wuInput,lsMemPtr,spuContacts); - - - - -} - - - - -//////////////////////// -/// Convex versus Concave triangle mesh collision detection (handles concave triangle mesh versus sphere, box, cylinder, triangle, cone, convex polyhedron etc) -/////////////////// -void ProcessConvexConcaveSpuCollision(SpuCollisionPairInput* wuInput, CollisionTask_LocalStoreMemory* lsMemPtr, SpuContactResult& spuContacts) -{ - //order: first collision shape is convex, second concave. m_isSwapped is true, if the original order was opposite - - btBvhTriangleMeshShape* trimeshShape = (btBvhTriangleMeshShape*)wuInput->m_spuCollisionShapes[1]; - //need the mesh interface, for access to triangle vertices - dmaBvhShapeData (&lsMemPtr->bvhShapeData, trimeshShape); - - btVector3 aabbMin(-1,-400,-1); - btVector3 aabbMax(1,400,1); - - - //recalc aabbs - btTransform convexInTriangleSpace; - convexInTriangleSpace = wuInput->m_worldTransform1.inverse() * wuInput->m_worldTransform0; - btConvexInternalShape* convexShape = (btConvexInternalShape*)wuInput->m_spuCollisionShapes[0]; - - computeAabb (aabbMin, aabbMax, convexShape, wuInput->m_collisionShapes[0], wuInput->m_shapeType0, convexInTriangleSpace); - - - //CollisionShape* triangleShape = static_cast(triBody->m_collisionShape); - //convexShape->getAabb(convexInTriangleSpace,m_aabbMin,m_aabbMax); - - // btScalar extraMargin = collisionMarginTriangle; - // btVector3 extra(extraMargin,extraMargin,extraMargin); - // aabbMax += extra; - // aabbMin -= extra; - - ///quantize query AABB - unsigned short int quantizedQueryAabbMin[3]; - unsigned short int quantizedQueryAabbMax[3]; - lsMemPtr->bvhShapeData.getOptimizedBvh()->quantizeWithClamp(quantizedQueryAabbMin,aabbMin,0); - lsMemPtr->bvhShapeData.getOptimizedBvh()->quantizeWithClamp(quantizedQueryAabbMax,aabbMax,1); - - QuantizedNodeArray& nodeArray = lsMemPtr->bvhShapeData.getOptimizedBvh()->getQuantizedNodeArray(); - //spu_printf("SPU: numNodes = %d\n",nodeArray.size()); - - BvhSubtreeInfoArray& subTrees = lsMemPtr->bvhShapeData.getOptimizedBvh()->getSubtreeInfoArray(); - - - spuNodeCallback nodeCallback(wuInput,lsMemPtr,spuContacts); - IndexedMeshArray& indexArray = lsMemPtr->bvhShapeData.gTriangleMeshInterfacePtr->getIndexedMeshArray(); - //spu_printf("SPU:indexArray.size() = %d\n",indexArray.size()); - - // spu_printf("SPU: numSubTrees = %d\n",subTrees.size()); - //not likely to happen - if (subTrees.size() && indexArray.size() == 1) - { - ///DMA in the index info - dmaBvhIndexedMesh (&lsMemPtr->bvhShapeData.gIndexMesh, indexArray, 0 /* index into indexArray */, 1 /* dmaTag */); - cellDmaWaitTagStatusAll(DMA_MASK(1)); - - //display the headers - int numBatch = subTrees.size(); - for (int i=0;ibvhShapeData.gSubtreeHeaders[0], (ppu_address_t)(&subTrees[i]), nextBatch, 1); - cellDmaWaitTagStatusAll(DMA_MASK(1)); - - - // spu_printf("nextBatch = %d\n",nextBatch); - - for (int j=0;jbvhShapeData.gSubtreeHeaders[j]; - - unsigned int overlap = spuTestQuantizedAabbAgainstQuantizedAabb(quantizedQueryAabbMin,quantizedQueryAabbMax,subtree.m_quantizedAabbMin,subtree.m_quantizedAabbMax); - if (overlap) - { - btAssert(subtree.m_subtreeSize); - - //dma the actual nodes of this subtree - dmaBvhSubTreeNodes (&lsMemPtr->bvhShapeData.gSubtreeNodes[0], subtree, nodeArray, 2); - cellDmaWaitTagStatusAll(DMA_MASK(2)); - - /* Walk this subtree */ - spuWalkStacklessQuantizedTree(&nodeCallback,quantizedQueryAabbMin,quantizedQueryAabbMax, - &lsMemPtr->bvhShapeData.gSubtreeNodes[0], - 0, - subtree.m_subtreeSize); - } - // spu_printf("subtreeSize = %d\n",gSubtreeHeaders[j].m_subtreeSize); - } - - // unsigned short int m_quantizedAabbMin[3]; - // unsigned short int m_quantizedAabbMax[3]; - // int m_rootNodeIndex; - // int m_subtreeSize; - i+=nextBatch; - } - - //pre-fetch first tree, then loop and double buffer - } - -} - - -int stats[11]={0,0,0,0,0,0,0,0,0,0,0}; -int degenerateStats[11]={0,0,0,0,0,0,0,0,0,0,0}; - - -//////////////////////// -/// Convex versus Convex collision detection (handles collision between sphere, box, cylinder, triangle, cone, convex polyhedron etc) -/////////////////// -void ProcessSpuConvexConvexCollision(SpuCollisionPairInput* wuInput, CollisionTask_LocalStoreMemory* lsMemPtr, SpuContactResult& spuContacts) -{ - register int dmaSize; - register ppu_address_t dmaPpuAddress2; - -#ifdef DEBUG_SPU_COLLISION_DETECTION - //spu_printf("SPU: ProcessSpuConvexConvexCollision\n"); -#endif //DEBUG_SPU_COLLISION_DETECTION - //CollisionShape* shape0 = (CollisionShape*)wuInput->m_collisionShapes[0]; - //CollisionShape* shape1 = (CollisionShape*)wuInput->m_collisionShapes[1]; - btPersistentManifold* manifold = (btPersistentManifold*)wuInput->m_persistentManifoldPtr; - - bool genericGjk = true; - - if (genericGjk) - { - //try generic GJK - - - - //SpuConvexPenetrationDepthSolver* penetrationSolver=0; - btVoronoiSimplexSolver simplexSolver; - btGjkEpaPenetrationDepthSolver epaPenetrationSolver2; - - btConvexPenetrationDepthSolver* penetrationSolver = &epaPenetrationSolver2; - - //SpuMinkowskiPenetrationDepthSolver minkowskiPenetrationSolver; -#ifdef ENABLE_EPA - if (gUseEpa) - { - penetrationSolver = &epaPenetrationSolver2; - } else -#endif - { - //penetrationSolver = &minkowskiPenetrationSolver; - } - - - ///DMA in the vertices for convex shapes - ATTRIBUTE_ALIGNED16(char convexHullShape0[sizeof(btConvexHullShape)]); - ATTRIBUTE_ALIGNED16(char convexHullShape1[sizeof(btConvexHullShape)]); - - if ( btLikely( wuInput->m_shapeType0== CONVEX_HULL_SHAPE_PROXYTYPE ) ) - { - // spu_printf("SPU: DMA btConvexHullShape\n"); - - dmaSize = sizeof(btConvexHullShape); - dmaPpuAddress2 = wuInput->m_collisionShapes[0]; - - cellDmaGet(&convexHullShape0, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); - //cellDmaWaitTagStatusAll(DMA_MASK(1)); - } - - if ( btLikely( wuInput->m_shapeType1 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) - { - // spu_printf("SPU: DMA btConvexHullShape\n"); - dmaSize = sizeof(btConvexHullShape); - dmaPpuAddress2 = wuInput->m_collisionShapes[1]; - cellDmaGet(&convexHullShape1, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); - //cellDmaWaitTagStatusAll(DMA_MASK(1)); - } - - if ( btLikely( wuInput->m_shapeType0 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) - { - cellDmaWaitTagStatusAll(DMA_MASK(1)); - dmaConvexVertexData (&lsMemPtr->convexVertexData[0], (btConvexHullShape*)&convexHullShape0); - lsMemPtr->convexVertexData[0].gSpuConvexShapePtr = wuInput->m_spuCollisionShapes[0]; - } - - - if ( btLikely( wuInput->m_shapeType1 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) - { - cellDmaWaitTagStatusAll(DMA_MASK(1)); - dmaConvexVertexData (&lsMemPtr->convexVertexData[1], (btConvexHullShape*)&convexHullShape1); - lsMemPtr->convexVertexData[1].gSpuConvexShapePtr = wuInput->m_spuCollisionShapes[1]; - } - - - btConvexPointCloudShape cpc0,cpc1; - - if ( btLikely( wuInput->m_shapeType0 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) - { - cellDmaWaitTagStatusAll(DMA_MASK(2)); - lsMemPtr->convexVertexData[0].gConvexPoints = &lsMemPtr->convexVertexData[0].g_convexPointBuffer[0]; - btConvexHullShape* ch = (btConvexHullShape*)wuInput->m_spuCollisionShapes[0]; - const btVector3& localScaling = ch->getLocalScalingNV(); - cpc0.setPoints(lsMemPtr->convexVertexData[0].gConvexPoints,lsMemPtr->convexVertexData[0].gNumConvexPoints,false,localScaling); - wuInput->m_spuCollisionShapes[0] = &cpc0; - } - - if ( btLikely( wuInput->m_shapeType1 == CONVEX_HULL_SHAPE_PROXYTYPE ) ) - { - cellDmaWaitTagStatusAll(DMA_MASK(2)); - lsMemPtr->convexVertexData[1].gConvexPoints = &lsMemPtr->convexVertexData[1].g_convexPointBuffer[0]; - btConvexHullShape* ch = (btConvexHullShape*)wuInput->m_spuCollisionShapes[1]; - const btVector3& localScaling = ch->getLocalScalingNV(); - cpc1.setPoints(lsMemPtr->convexVertexData[1].gConvexPoints,lsMemPtr->convexVertexData[1].gNumConvexPoints,false,localScaling); - wuInput->m_spuCollisionShapes[1] = &cpc1; - - } - - - const btConvexShape* shape0Ptr = (const btConvexShape*)wuInput->m_spuCollisionShapes[0]; - const btConvexShape* shape1Ptr = (const btConvexShape*)wuInput->m_spuCollisionShapes[1]; - int shapeType0 = wuInput->m_shapeType0; - int shapeType1 = wuInput->m_shapeType1; - float marginA = wuInput->m_collisionMargin0; - float marginB = wuInput->m_collisionMargin1; - - SpuClosestPointInput cpInput; - cpInput.m_convexVertexData[0] = &lsMemPtr->convexVertexData[0]; - cpInput.m_convexVertexData[1] = &lsMemPtr->convexVertexData[1]; - cpInput.m_transformA = wuInput->m_worldTransform0; - cpInput.m_transformB = wuInput->m_worldTransform1; - float sumMargin = (marginA+marginB+lsMemPtr->getContactManifoldPtr()->getContactBreakingThreshold()); - cpInput.m_maximumDistanceSquared = sumMargin * sumMargin; - - ppu_address_t manifoldAddress = (ppu_address_t)manifold; - - btPersistentManifold* spuManifold=lsMemPtr->getContactManifoldPtr(); - //spuContacts.setContactInfo(spuManifold,manifoldAddress,wuInput->m_worldTransform0,wuInput->m_worldTransform1,wuInput->m_isSwapped); - spuContacts.setContactInfo(spuManifold,manifoldAddress,lsMemPtr->getColObj0()->getWorldTransform(), - lsMemPtr->getColObj1()->getWorldTransform(), - lsMemPtr->getColObj0()->getRestitution(),lsMemPtr->getColObj1()->getRestitution(), - lsMemPtr->getColObj0()->getFriction(),lsMemPtr->getColObj1()->getFriction(), - wuInput->m_isSwapped); - - { - btGjkPairDetector gjk(shape0Ptr,shape1Ptr,shapeType0,shapeType1,marginA,marginB,&simplexSolver,penetrationSolver);//&vsSolver,penetrationSolver); - gjk.getClosestPoints(cpInput,spuContacts,0);//,debugDraw); - - stats[gjk.m_lastUsedMethod]++; - degenerateStats[gjk.m_degenerateSimplex]++; - -#ifdef USE_SEPDISTANCE_UTIL - btScalar sepDist = gjk.getCachedSeparatingDistance()+spuManifold->getContactBreakingThreshold(); - lsMemPtr->getlocalCollisionAlgorithm()->m_sepDistance.initSeparatingDistance(gjk.getCachedSeparatingAxis(),sepDist,wuInput->m_worldTransform0,wuInput->m_worldTransform1); - lsMemPtr->needsDmaPutContactManifoldAlgo = true; -#endif //USE_SEPDISTANCE_UTIL - - } - - } - - -} - - -template void DoSwap(T& a, T& b) -{ - char tmp[sizeof(T)]; - memcpy(tmp, &a, sizeof(T)); - memcpy(&a, &b, sizeof(T)); - memcpy(&b, tmp, sizeof(T)); -} - -SIMD_FORCE_INLINE void dmaAndSetupCollisionObjects(SpuCollisionPairInput& collisionPairInput, CollisionTask_LocalStoreMemory& lsMem) -{ - register int dmaSize; - register ppu_address_t dmaPpuAddress2; - - dmaSize = sizeof(btCollisionObject);//btTransform); - dmaPpuAddress2 = /*collisionPairInput.m_isSwapped ? (ppu_address_t)lsMem.gProxyPtr1->m_clientObject :*/ (ppu_address_t)lsMem.getlocalCollisionAlgorithm()->getCollisionObject0(); - lsMem.m_lsColObj0Ptr = (btCollisionObject*)cellDmaGetReadOnly(&lsMem.gColObj0Buffer, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); - - dmaSize = sizeof(btCollisionObject);//btTransform); - dmaPpuAddress2 = /*collisionPairInput.m_isSwapped ? (ppu_address_t)lsMem.gProxyPtr0->m_clientObject :*/ (ppu_address_t)lsMem.getlocalCollisionAlgorithm()->getCollisionObject1(); - lsMem.m_lsColObj1Ptr = (btCollisionObject*)cellDmaGetReadOnly(&lsMem.gColObj1Buffer, dmaPpuAddress2 , dmaSize, DMA_TAG(2), 0, 0); - - cellDmaWaitTagStatusAll(DMA_MASK(1) | DMA_MASK(2)); - - btCollisionObject* ob0 = lsMem.getColObj0(); - btCollisionObject* ob1 = lsMem.getColObj1(); - - collisionPairInput.m_worldTransform0 = ob0->getWorldTransform(); - collisionPairInput.m_worldTransform1 = ob1->getWorldTransform(); -} - - - -void handleCollisionPair(SpuCollisionPairInput& collisionPairInput, CollisionTask_LocalStoreMemory& lsMem, - SpuContactResult &spuContacts, - ppu_address_t collisionShape0Ptr, void* collisionShape0Loc, - ppu_address_t collisionShape1Ptr, void* collisionShape1Loc, bool dmaShapes = true) -{ - - if (btBroadphaseProxy::isConvex(collisionPairInput.m_shapeType0) - && btBroadphaseProxy::isConvex(collisionPairInput.m_shapeType1)) - { - if (dmaShapes) - { - dmaCollisionShape (collisionShape0Loc, collisionShape0Ptr, 1, collisionPairInput.m_shapeType0); - dmaCollisionShape (collisionShape1Loc, collisionShape1Ptr, 2, collisionPairInput.m_shapeType1); - cellDmaWaitTagStatusAll(DMA_MASK(1) | DMA_MASK(2)); - } - - btConvexInternalShape* spuConvexShape0 = (btConvexInternalShape*)collisionShape0Loc; - btConvexInternalShape* spuConvexShape1 = (btConvexInternalShape*)collisionShape1Loc; - - btVector3 dim0 = spuConvexShape0->getImplicitShapeDimensions(); - btVector3 dim1 = spuConvexShape1->getImplicitShapeDimensions(); - - collisionPairInput.m_primitiveDimensions0 = dim0; - collisionPairInput.m_primitiveDimensions1 = dim1; - collisionPairInput.m_collisionShapes[0] = collisionShape0Ptr; - collisionPairInput.m_collisionShapes[1] = collisionShape1Ptr; - collisionPairInput.m_spuCollisionShapes[0] = spuConvexShape0; - collisionPairInput.m_spuCollisionShapes[1] = spuConvexShape1; - ProcessSpuConvexConvexCollision(&collisionPairInput,&lsMem,spuContacts); - } - else if (btBroadphaseProxy::isCompound(collisionPairInput.m_shapeType0) && - btBroadphaseProxy::isCompound(collisionPairInput.m_shapeType1)) - { - //snPause(); - - dmaCollisionShape (collisionShape0Loc, collisionShape0Ptr, 1, collisionPairInput.m_shapeType0); - dmaCollisionShape (collisionShape1Loc, collisionShape1Ptr, 2, collisionPairInput.m_shapeType1); - cellDmaWaitTagStatusAll(DMA_MASK(1) | DMA_MASK(2)); - - // Both are compounds, do N^2 CD for now - ///@todo: add some AABB-based pruning (probably not -> slower) - - btCompoundShape* spuCompoundShape0 = (btCompoundShape*)collisionShape0Loc; - btCompoundShape* spuCompoundShape1 = (btCompoundShape*)collisionShape1Loc; - - dmaCompoundShapeInfo (&lsMem.compoundShapeData[0], spuCompoundShape0, 1); - dmaCompoundShapeInfo (&lsMem.compoundShapeData[1], spuCompoundShape1, 2); - cellDmaWaitTagStatusAll(DMA_MASK(1) | DMA_MASK(2)); - - - dmaCompoundSubShapes (&lsMem.compoundShapeData[0], spuCompoundShape0, 1); - cellDmaWaitTagStatusAll(DMA_MASK(1)); - dmaCompoundSubShapes (&lsMem.compoundShapeData[1], spuCompoundShape1, 1); - cellDmaWaitTagStatusAll(DMA_MASK(1)); - - int childShapeCount0 = spuCompoundShape0->getNumChildShapes(); - int childShapeCount1 = spuCompoundShape1->getNumChildShapes(); - - // Start the N^2 - for (int i = 0; i < childShapeCount0; ++i) - { - btCompoundShapeChild& childShape0 = lsMem.compoundShapeData[0].gSubshapes[i]; - btAssert(!btBroadphaseProxy::isCompound(childShape0.m_childShapeType)); - - for (int j = 0; j < childShapeCount1; ++j) - { - btCompoundShapeChild& childShape1 = lsMem.compoundShapeData[1].gSubshapes[j]; - btAssert(!btBroadphaseProxy::isCompound(childShape1.m_childShapeType)); - - - /* Create a new collision pair input struct using the two child shapes */ - SpuCollisionPairInput cinput (collisionPairInput); - - cinput.m_worldTransform0 = collisionPairInput.m_worldTransform0 * childShape0.m_transform; - cinput.m_shapeType0 = childShape0.m_childShapeType; - cinput.m_collisionMargin0 = childShape0.m_childMargin; - - cinput.m_worldTransform1 = collisionPairInput.m_worldTransform1 * childShape1.m_transform; - cinput.m_shapeType1 = childShape1.m_childShapeType; - cinput.m_collisionMargin1 = childShape1.m_childMargin; - /* Recursively call handleCollisionPair () with new collision pair input */ - - handleCollisionPair(cinput, lsMem, spuContacts, - (ppu_address_t)childShape0.m_childShape, lsMem.compoundShapeData[0].gSubshapeShape[i], - (ppu_address_t)childShape1.m_childShape, lsMem.compoundShapeData[1].gSubshapeShape[j], false); - } - } - } - else if (btBroadphaseProxy::isCompound(collisionPairInput.m_shapeType0) ) - { - //snPause(); - - dmaCollisionShape (collisionShape0Loc, collisionShape0Ptr, 1, collisionPairInput.m_shapeType0); - dmaCollisionShape (collisionShape1Loc, collisionShape1Ptr, 2, collisionPairInput.m_shapeType1); - cellDmaWaitTagStatusAll(DMA_MASK(1) | DMA_MASK(2)); - - // object 0 compound, object 1 non-compound - btCompoundShape* spuCompoundShape = (btCompoundShape*)collisionShape0Loc; - dmaCompoundShapeInfo (&lsMem.compoundShapeData[0], spuCompoundShape, 1); - cellDmaWaitTagStatusAll(DMA_MASK(1)); - - int childShapeCount = spuCompoundShape->getNumChildShapes(); - - for (int i = 0; i < childShapeCount; ++i) - { - btCompoundShapeChild& childShape = lsMem.compoundShapeData[0].gSubshapes[i]; - btAssert(!btBroadphaseProxy::isCompound(childShape.m_childShapeType)); - // Dma the child shape - dmaCollisionShape (&lsMem.compoundShapeData[0].gSubshapeShape[i], (ppu_address_t)childShape.m_childShape, 1, childShape.m_childShapeType); - cellDmaWaitTagStatusAll(DMA_MASK(1)); - - SpuCollisionPairInput cinput (collisionPairInput); - cinput.m_worldTransform0 = collisionPairInput.m_worldTransform0 * childShape.m_transform; - cinput.m_shapeType0 = childShape.m_childShapeType; - cinput.m_collisionMargin0 = childShape.m_childMargin; - - handleCollisionPair(cinput, lsMem, spuContacts, - (ppu_address_t)childShape.m_childShape, lsMem.compoundShapeData[0].gSubshapeShape[i], - collisionShape1Ptr, collisionShape1Loc, false); - } - } - else if (btBroadphaseProxy::isCompound(collisionPairInput.m_shapeType1) ) - { - //snPause(); - - dmaCollisionShape (collisionShape0Loc, collisionShape0Ptr, 1, collisionPairInput.m_shapeType0); - dmaCollisionShape (collisionShape1Loc, collisionShape1Ptr, 2, collisionPairInput.m_shapeType1); - cellDmaWaitTagStatusAll(DMA_MASK(1) | DMA_MASK(2)); - // object 0 non-compound, object 1 compound - btCompoundShape* spuCompoundShape = (btCompoundShape*)collisionShape1Loc; - dmaCompoundShapeInfo (&lsMem.compoundShapeData[0], spuCompoundShape, 1); - cellDmaWaitTagStatusAll(DMA_MASK(1)); - - int childShapeCount = spuCompoundShape->getNumChildShapes(); - - for (int i = 0; i < childShapeCount; ++i) - { - btCompoundShapeChild& childShape = lsMem.compoundShapeData[0].gSubshapes[i]; - btAssert(!btBroadphaseProxy::isCompound(childShape.m_childShapeType)); - // Dma the child shape - dmaCollisionShape (&lsMem.compoundShapeData[0].gSubshapeShape[i], (ppu_address_t)childShape.m_childShape, 1, childShape.m_childShapeType); - cellDmaWaitTagStatusAll(DMA_MASK(1)); - - SpuCollisionPairInput cinput (collisionPairInput); - cinput.m_worldTransform1 = collisionPairInput.m_worldTransform1 * childShape.m_transform; - cinput.m_shapeType1 = childShape.m_childShapeType; - cinput.m_collisionMargin1 = childShape.m_childMargin; - handleCollisionPair(cinput, lsMem, spuContacts, - collisionShape0Ptr, collisionShape0Loc, - (ppu_address_t)childShape.m_childShape, lsMem.compoundShapeData[0].gSubshapeShape[i], false); - } - - } - else - { - //a non-convex shape is involved - bool handleConvexConcave = false; - - //snPause(); - - if (btBroadphaseProxy::isConcave(collisionPairInput.m_shapeType0) && - btBroadphaseProxy::isConvex(collisionPairInput.m_shapeType1)) - { - // Swap stuff - DoSwap(collisionShape0Ptr, collisionShape1Ptr); - DoSwap(collisionShape0Loc, collisionShape1Loc); - DoSwap(collisionPairInput.m_shapeType0, collisionPairInput.m_shapeType1); - DoSwap(collisionPairInput.m_worldTransform0, collisionPairInput.m_worldTransform1); - DoSwap(collisionPairInput.m_collisionMargin0, collisionPairInput.m_collisionMargin1); - - collisionPairInput.m_isSwapped = true; - } - - if (btBroadphaseProxy::isConvex(collisionPairInput.m_shapeType0)&& - btBroadphaseProxy::isConcave(collisionPairInput.m_shapeType1)) - { - handleConvexConcave = true; - } - if (handleConvexConcave) - { - if (dmaShapes) - { - dmaCollisionShape (collisionShape0Loc, collisionShape0Ptr, 1, collisionPairInput.m_shapeType0); - dmaCollisionShape (collisionShape1Loc, collisionShape1Ptr, 2, collisionPairInput.m_shapeType1); - cellDmaWaitTagStatusAll(DMA_MASK(1) | DMA_MASK(2)); - } - - if (collisionPairInput.m_shapeType1 == STATIC_PLANE_PROXYTYPE) - { - btConvexInternalShape* spuConvexShape0 = (btConvexInternalShape*)collisionShape0Loc; - btStaticPlaneShape* planeShape= (btStaticPlaneShape*)collisionShape1Loc; - - btVector3 dim0 = spuConvexShape0->getImplicitShapeDimensions(); - collisionPairInput.m_primitiveDimensions0 = dim0; - collisionPairInput.m_collisionShapes[0] = collisionShape0Ptr; - collisionPairInput.m_collisionShapes[1] = collisionShape1Ptr; - collisionPairInput.m_spuCollisionShapes[0] = spuConvexShape0; - collisionPairInput.m_spuCollisionShapes[1] = planeShape; - - ProcessConvexPlaneSpuCollision(&collisionPairInput,&lsMem,spuContacts); - } else - { - btConvexInternalShape* spuConvexShape0 = (btConvexInternalShape*)collisionShape0Loc; - btBvhTriangleMeshShape* trimeshShape = (btBvhTriangleMeshShape*)collisionShape1Loc; - - btVector3 dim0 = spuConvexShape0->getImplicitShapeDimensions(); - collisionPairInput.m_primitiveDimensions0 = dim0; - collisionPairInput.m_collisionShapes[0] = collisionShape0Ptr; - collisionPairInput.m_collisionShapes[1] = collisionShape1Ptr; - collisionPairInput.m_spuCollisionShapes[0] = spuConvexShape0; - collisionPairInput.m_spuCollisionShapes[1] = trimeshShape; - - ProcessConvexConcaveSpuCollision(&collisionPairInput,&lsMem,spuContacts); - } - } - - } - - spuContacts.flush(); - -} - - -void processCollisionTask(void* userPtr, void* lsMemPtr) -{ - - SpuGatherAndProcessPairsTaskDesc* taskDescPtr = (SpuGatherAndProcessPairsTaskDesc*)userPtr; - SpuGatherAndProcessPairsTaskDesc& taskDesc = *taskDescPtr; - CollisionTask_LocalStoreMemory* colMemPtr = (CollisionTask_LocalStoreMemory*)lsMemPtr; - CollisionTask_LocalStoreMemory& lsMem = *(colMemPtr); - - gUseEpa = taskDesc.m_useEpa; - - // spu_printf("taskDescPtr=%llx\n",taskDescPtr); - - SpuContactResult spuContacts; - - //////////////////// - - ppu_address_t dmaInPtr = taskDesc.m_inPairPtr; - unsigned int numPages = taskDesc.numPages; - unsigned int numOnLastPage = taskDesc.numOnLastPage; - - // prefetch first set of inputs and wait - lsMem.g_workUnitTaskBuffers.init(); - - unsigned int nextNumOnPage = (numPages > 1)? MIDPHASE_NUM_WORKUNITS_PER_PAGE : numOnLastPage; - lsMem.g_workUnitTaskBuffers.backBufferDmaGet(dmaInPtr, nextNumOnPage*sizeof(SpuGatherAndProcessWorkUnitInput), DMA_TAG(3)); - dmaInPtr += MIDPHASE_WORKUNIT_PAGE_SIZE; - - - register unsigned char *inputPtr; - register unsigned int numOnPage; - register unsigned int j; - SpuGatherAndProcessWorkUnitInput* wuInputs; - register int dmaSize; - register ppu_address_t dmaPpuAddress; - register ppu_address_t dmaPpuAddress2; - - int numPairs; - register int p; - SpuCollisionPairInput collisionPairInput; - - for (unsigned int i = 0; btLikely(i < numPages); i++) - { - - // wait for back buffer dma and swap buffers - inputPtr = lsMem.g_workUnitTaskBuffers.swapBuffers(); - - // number on current page is number prefetched last iteration - numOnPage = nextNumOnPage; - - - // prefetch next set of inputs -#if MIDPHASE_NUM_WORKUNIT_PAGES > 2 - if ( btLikely( i < numPages-1 ) ) -#else - if ( btUnlikely( i < numPages-1 ) ) -#endif - { - nextNumOnPage = (i == numPages-2)? numOnLastPage : MIDPHASE_NUM_WORKUNITS_PER_PAGE; - lsMem.g_workUnitTaskBuffers.backBufferDmaGet(dmaInPtr, nextNumOnPage*sizeof(SpuGatherAndProcessWorkUnitInput), DMA_TAG(3)); - dmaInPtr += MIDPHASE_WORKUNIT_PAGE_SIZE; - } - - wuInputs = reinterpret_cast(inputPtr); - - - for (j = 0; btLikely( j < numOnPage ); j++) - { -#ifdef DEBUG_SPU_COLLISION_DETECTION - // printMidphaseInput(&wuInputs[j]); -#endif //DEBUG_SPU_COLLISION_DETECTION - - - numPairs = wuInputs[j].m_endIndex - wuInputs[j].m_startIndex; - - if ( btLikely( numPairs ) ) - { - dmaSize = numPairs*sizeof(btBroadphasePair); - dmaPpuAddress = wuInputs[j].m_pairArrayPtr+wuInputs[j].m_startIndex * sizeof(btBroadphasePair); - lsMem.m_pairsPointer = (btBroadphasePair*)cellDmaGetReadOnly(&lsMem.gBroadphasePairsBuffer, dmaPpuAddress , dmaSize, DMA_TAG(1), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(1)); - - - for (p=0;pm_userInfo = %d\n",pair.m_userInfo); - spu_printf("pair->m_algorithm = %d\n",pair.m_algorithm); - spu_printf("pair->m_pProxy0 = %d\n",pair.m_pProxy0); - spu_printf("pair->m_pProxy1 = %d\n",pair.m_pProxy1); -#endif //DEBUG_SPU_COLLISION_DETECTION - - if (pair.m_internalTmpValue == 2 && pair.m_algorithm && pair.m_pProxy0 && pair.m_pProxy1) - { - dmaSize = sizeof(SpuContactManifoldCollisionAlgorithm); - dmaPpuAddress2 = (ppu_address_t)pair.m_algorithm; - lsMem.m_lsCollisionAlgorithmPtr = (SpuContactManifoldCollisionAlgorithm*)cellDmaGetReadOnly(&lsMem.gSpuContactManifoldAlgoBuffer, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); - - cellDmaWaitTagStatusAll(DMA_MASK(1)); - - lsMem.needsDmaPutContactManifoldAlgo = false; - - collisionPairInput.m_persistentManifoldPtr = (ppu_address_t) lsMem.getlocalCollisionAlgorithm()->getContactManifoldPtr(); - collisionPairInput.m_isSwapped = false; - - if (1) - { - - ///can wait on the combined DMA_MASK, or dma on the same tag - - -#ifdef DEBUG_SPU_COLLISION_DETECTION - // spu_printf("SPU collisionPairInput->m_shapeType0 = %d\n",collisionPairInput->m_shapeType0); - // spu_printf("SPU collisionPairInput->m_shapeType1 = %d\n",collisionPairInput->m_shapeType1); -#endif //DEBUG_SPU_COLLISION_DETECTION - - - dmaSize = sizeof(btPersistentManifold); - - dmaPpuAddress2 = collisionPairInput.m_persistentManifoldPtr; - lsMem.m_lsManifoldPtr = (btPersistentManifold*)cellDmaGetReadOnly(&lsMem.gPersistentManifoldBuffer, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); - - collisionPairInput.m_shapeType0 = lsMem.getlocalCollisionAlgorithm()->getShapeType0(); - collisionPairInput.m_shapeType1 = lsMem.getlocalCollisionAlgorithm()->getShapeType1(); - collisionPairInput.m_collisionMargin0 = lsMem.getlocalCollisionAlgorithm()->getCollisionMargin0(); - collisionPairInput.m_collisionMargin1 = lsMem.getlocalCollisionAlgorithm()->getCollisionMargin1(); - - - - //??cellDmaWaitTagStatusAll(DMA_MASK(1)); - - - if (1) - { - //snPause(); - - // Get the collision objects - dmaAndSetupCollisionObjects(collisionPairInput, lsMem); - - if (lsMem.getColObj0()->isActive() || lsMem.getColObj1()->isActive()) - { - - lsMem.needsDmaPutContactManifoldAlgo = true; -#ifdef USE_SEPDISTANCE_UTIL - lsMem.getlocalCollisionAlgorithm()->m_sepDistance.updateSeparatingDistance(collisionPairInput.m_worldTransform0,collisionPairInput.m_worldTransform1); -#endif //USE_SEPDISTANCE_UTIL - -#define USE_DEDICATED_BOX_BOX 1 -#ifdef USE_DEDICATED_BOX_BOX - bool boxbox = ((lsMem.getlocalCollisionAlgorithm()->getShapeType0()==BOX_SHAPE_PROXYTYPE)&& - (lsMem.getlocalCollisionAlgorithm()->getShapeType1()==BOX_SHAPE_PROXYTYPE)); - if (boxbox) - { - //spu_printf("boxbox dist = %f\n",distance); - btPersistentManifold* spuManifold=lsMem.getContactManifoldPtr(); - btPersistentManifold* manifold = (btPersistentManifold*)collisionPairInput.m_persistentManifoldPtr; - ppu_address_t manifoldAddress = (ppu_address_t)manifold; - - spuContacts.setContactInfo(spuManifold,manifoldAddress,lsMem.getColObj0()->getWorldTransform(), - lsMem.getColObj1()->getWorldTransform(), - lsMem.getColObj0()->getRestitution(),lsMem.getColObj1()->getRestitution(), - lsMem.getColObj0()->getFriction(),lsMem.getColObj1()->getFriction(), - collisionPairInput.m_isSwapped); - - - //float distance=0.f; - btVector3 normalInB; - - - if (//!gUseEpa && -#ifdef USE_SEPDISTANCE_UTIL - lsMem.getlocalCollisionAlgorithm()->m_sepDistance.getConservativeSeparatingDistance()<=0.f -#else - 1 -#endif - ) - { -//#define USE_PE_BOX_BOX 1 -#ifdef USE_PE_BOX_BOX - { - - //getCollisionMargin0 - btScalar margin0 = lsMem.getlocalCollisionAlgorithm()->getCollisionMargin0(); - btScalar margin1 = lsMem.getlocalCollisionAlgorithm()->getCollisionMargin1(); - btVector3 shapeDim0 = lsMem.getlocalCollisionAlgorithm()->getShapeDimensions0()+btVector3(margin0,margin0,margin0); - btVector3 shapeDim1 = lsMem.getlocalCollisionAlgorithm()->getShapeDimensions1()+btVector3(margin1,margin1,margin1); - - Box boxA(shapeDim0.getX(),shapeDim0.getY(),shapeDim0.getZ()); - Vector3 vmPos0 = getVmVector3(collisionPairInput.m_worldTransform0.getOrigin()); - Vector3 vmPos1 = getVmVector3(collisionPairInput.m_worldTransform1.getOrigin()); - Matrix3 vmMatrix0 = getVmMatrix3(collisionPairInput.m_worldTransform0.getBasis()); - Matrix3 vmMatrix1 = getVmMatrix3(collisionPairInput.m_worldTransform1.getBasis()); - - Transform3 transformA(vmMatrix0,vmPos0); - Box boxB(shapeDim1.getX(),shapeDim1.getY(),shapeDim1.getZ()); - Transform3 transformB(vmMatrix1,vmPos1); - BoxPoint resultClosestBoxPointA; - BoxPoint resultClosestBoxPointB; - Vector3 resultNormal; -#ifdef USE_SEPDISTANCE_UTIL - float distanceThreshold = FLT_MAX -#else - float distanceThreshold = 0.f; -#endif - - - distance = boxBoxDistance(resultNormal,resultClosestBoxPointA,resultClosestBoxPointB, boxA, transformA, boxB,transformB,distanceThreshold); - - normalInB = -getBtVector3(resultNormal); - - if(distance < spuManifold->getContactBreakingThreshold()) - { - btVector3 pointOnB = collisionPairInput.m_worldTransform1(getBtVector3(resultClosestBoxPointB.localPoint)); - - spuContacts.addContactPoint( - normalInB, - pointOnB, - distance); - } - } -#else - { - - btScalar margin0 = lsMem.getlocalCollisionAlgorithm()->getCollisionMargin0(); - btScalar margin1 = lsMem.getlocalCollisionAlgorithm()->getCollisionMargin1(); - btVector3 shapeDim0 = lsMem.getlocalCollisionAlgorithm()->getShapeDimensions0()+btVector3(margin0,margin0,margin0); - btVector3 shapeDim1 = lsMem.getlocalCollisionAlgorithm()->getShapeDimensions1()+btVector3(margin1,margin1,margin1); - - - btBoxShape box0(shapeDim0); - btBoxShape box1(shapeDim1); - - struct SpuBridgeContactCollector : public btDiscreteCollisionDetectorInterface::Result - { - SpuContactResult& m_spuContacts; - - virtual void setShapeIdentifiersA(int partId0,int index0) - { - m_spuContacts.setShapeIdentifiersA(partId0,index0); - } - virtual void setShapeIdentifiersB(int partId1,int index1) - { - m_spuContacts.setShapeIdentifiersB(partId1,index1); - } - virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth) - { - m_spuContacts.addContactPoint(normalOnBInWorld,pointInWorld,depth); - } - - SpuBridgeContactCollector(SpuContactResult& spuContacts) - :m_spuContacts(spuContacts) - { - - } - }; - - SpuBridgeContactCollector bridgeOutput(spuContacts); - - btDiscreteCollisionDetectorInterface::ClosestPointInput input; - input.m_maximumDistanceSquared = BT_LARGE_FLOAT; - input.m_transformA = collisionPairInput.m_worldTransform0; - input.m_transformB = collisionPairInput.m_worldTransform1; - - btBoxBoxDetector detector(&box0,&box1); - - detector.getClosestPoints(input,bridgeOutput,0); - - } -#endif //USE_PE_BOX_BOX - - lsMem.needsDmaPutContactManifoldAlgo = true; -#ifdef USE_SEPDISTANCE_UTIL - btScalar sepDist2 = distance+spuManifold->getContactBreakingThreshold(); - lsMem.getlocalCollisionAlgorithm()->m_sepDistance.initSeparatingDistance(normalInB,sepDist2,collisionPairInput.m_worldTransform0,collisionPairInput.m_worldTransform1); -#endif //USE_SEPDISTANCE_UTIL - gProcessedCol++; - } else - { - gSkippedCol++; - } - - spuContacts.flush(); - - - } else -#endif //USE_DEDICATED_BOX_BOX - { - if ( -#ifdef USE_SEPDISTANCE_UTIL - lsMem.getlocalCollisionAlgorithm()->m_sepDistance.getConservativeSeparatingDistance()<=0.f -#else - 1 -#endif //USE_SEPDISTANCE_UTIL - ) - { - handleCollisionPair(collisionPairInput, lsMem, spuContacts, - (ppu_address_t)lsMem.getColObj0()->getRootCollisionShape(), &lsMem.gCollisionShapes[0].collisionShape, - (ppu_address_t)lsMem.getColObj1()->getRootCollisionShape(), &lsMem.gCollisionShapes[1].collisionShape); - } else - { - //spu_printf("boxbox dist = %f\n",distance); - btPersistentManifold* spuManifold=lsMem.getContactManifoldPtr(); - btPersistentManifold* manifold = (btPersistentManifold*)collisionPairInput.m_persistentManifoldPtr; - ppu_address_t manifoldAddress = (ppu_address_t)manifold; - - spuContacts.setContactInfo(spuManifold,manifoldAddress,lsMem.getColObj0()->getWorldTransform(), - lsMem.getColObj1()->getWorldTransform(), - lsMem.getColObj0()->getRestitution(),lsMem.getColObj1()->getRestitution(), - lsMem.getColObj0()->getFriction(),lsMem.getColObj1()->getFriction(), - collisionPairInput.m_isSwapped); - - spuContacts.flush(); - } - } - - } - - } - } - -#ifdef USE_SEPDISTANCE_UTIL -#if defined (__SPU__) || defined (USE_LIBSPE2) - if (lsMem.needsDmaPutContactManifoldAlgo) - { - dmaSize = sizeof(SpuContactManifoldCollisionAlgorithm); - dmaPpuAddress2 = (ppu_address_t)pair.m_algorithm; - cellDmaLargePut(&lsMem.gSpuContactManifoldAlgoBuffer, dmaPpuAddress2 , dmaSize, DMA_TAG(1), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(1)); - } -#endif -#endif //#ifdef USE_SEPDISTANCE_UTIL - - } - } - } - } //end for (j = 0; j < numOnPage; j++) - - }// for - - - - return; -} - - diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h deleted file mode 100644 index bbaa555ee1b..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h +++ /dev/null @@ -1,140 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef SPU_GATHERING_COLLISION_TASK_H -#define SPU_GATHERING_COLLISION_TASK_H - -#include "../PlatformDefinitions.h" -//#define DEBUG_SPU_COLLISION_DETECTION 1 - - -///Task Description for SPU collision detection -struct SpuGatherAndProcessPairsTaskDesc -{ - ppu_address_t m_inPairPtr;//m_pairArrayPtr; - //mutex variable - uint32_t m_someMutexVariableInMainMemory; - - ppu_address_t m_dispatcher; - - uint32_t numOnLastPage; - - uint16_t numPages; - uint16_t taskId; - bool m_useEpa; - - struct CollisionTask_LocalStoreMemory* m_lsMemory; -} - -#if defined(__CELLOS_LV2__) || defined(USE_LIBSPE2) -__attribute__ ((aligned (128))) -#endif -; - - -void processCollisionTask(void* userPtr, void* lsMemory); - -void* createCollisionLocalStoreMemory(); - - -#if defined(USE_LIBSPE2) && defined(__SPU__) -#include "../SpuLibspe2Support.h" -#include -#include -#include - -//#define DEBUG_LIBSPE2_SPU_TASK - - - -int main(unsigned long long speid, addr64 argp, addr64 envp) -{ - printf("SPU: hello \n"); - - ATTRIBUTE_ALIGNED128(btSpuStatus status); - ATTRIBUTE_ALIGNED16( SpuGatherAndProcessPairsTaskDesc taskDesc ) ; - unsigned int received_message = Spu_Mailbox_Event_Nothing; - bool shutdown = false; - - cellDmaGet(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(3)); - - status.m_status = Spu_Status_Free; - status.m_lsMemory.p = createCollisionLocalStoreMemory(); - - cellDmaLargePut(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(3)); - - - while ( btLikely( !shutdown ) ) - { - - received_message = spu_read_in_mbox(); - - if( btLikely( received_message == Spu_Mailbox_Event_Task )) - { -#ifdef DEBUG_LIBSPE2_SPU_TASK - printf("SPU: received Spu_Mailbox_Event_Task\n"); -#endif //DEBUG_LIBSPE2_SPU_TASK - - // refresh the status - cellDmaGet(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(3)); - - btAssert(status.m_status==Spu_Status_Occupied); - - cellDmaGet(&taskDesc, status.m_taskDesc.p, sizeof(SpuGatherAndProcessPairsTaskDesc), DMA_TAG(3), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(3)); -#ifdef DEBUG_LIBSPE2_SPU_TASK - printf("SPU:processCollisionTask\n"); -#endif //DEBUG_LIBSPE2_SPU_TASK - processCollisionTask((void*)&taskDesc, taskDesc.m_lsMemory); - -#ifdef DEBUG_LIBSPE2_SPU_TASK - printf("SPU:finished processCollisionTask\n"); -#endif //DEBUG_LIBSPE2_SPU_TASK - } - else - { -#ifdef DEBUG_LIBSPE2_SPU_TASK - printf("SPU: received ShutDown\n"); -#endif //DEBUG_LIBSPE2_SPU_TASK - if( btLikely( received_message == Spu_Mailbox_Event_Shutdown ) ) - { - shutdown = true; - } - else - { - //printf("SPU - Sth. recieved\n"); - } - } - - // set to status free and wait for next task - status.m_status = Spu_Status_Free; - cellDmaLargePut(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(3)); - - - } - - printf("SPU: shutdown\n"); - return 0; -} -#endif // USE_LIBSPE2 - - -#endif //SPU_GATHERING_COLLISION_TASK_H - - diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuLocalSupport.h b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuLocalSupport.h deleted file mode 100644 index 8b89de03f59..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuLocalSupport.h +++ /dev/null @@ -1,19 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - - - diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.cpp b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.cpp deleted file mode 100644 index 9f7e64dd1b3..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.cpp +++ /dev/null @@ -1,348 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "SpuMinkowskiPenetrationDepthSolver.h" -#include "SpuContactResult.h" -#include "SpuPreferredPenetrationDirections.h" -#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h" -#include "SpuCollisionShapes.h" - -#define NUM_UNITSPHERE_POINTS 42 -static btVector3 sPenetrationDirections[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2] = -{ -btVector3(btScalar(0.000000) , btScalar(-0.000000),btScalar(-1.000000)), -btVector3(btScalar(0.723608) , btScalar(-0.525725),btScalar(-0.447219)), -btVector3(btScalar(-0.276388) , btScalar(-0.850649),btScalar(-0.447219)), -btVector3(btScalar(-0.894426) , btScalar(-0.000000),btScalar(-0.447216)), -btVector3(btScalar(-0.276388) , btScalar(0.850649),btScalar(-0.447220)), -btVector3(btScalar(0.723608) , btScalar(0.525725),btScalar(-0.447219)), -btVector3(btScalar(0.276388) , btScalar(-0.850649),btScalar(0.447220)), -btVector3(btScalar(-0.723608) , btScalar(-0.525725),btScalar(0.447219)), -btVector3(btScalar(-0.723608) , btScalar(0.525725),btScalar(0.447219)), -btVector3(btScalar(0.276388) , btScalar(0.850649),btScalar(0.447219)), -btVector3(btScalar(0.894426) , btScalar(0.000000),btScalar(0.447216)), -btVector3(btScalar(-0.000000) , btScalar(0.000000),btScalar(1.000000)), -btVector3(btScalar(0.425323) , btScalar(-0.309011),btScalar(-0.850654)), -btVector3(btScalar(-0.162456) , btScalar(-0.499995),btScalar(-0.850654)), -btVector3(btScalar(0.262869) , btScalar(-0.809012),btScalar(-0.525738)), -btVector3(btScalar(0.425323) , btScalar(0.309011),btScalar(-0.850654)), -btVector3(btScalar(0.850648) , btScalar(-0.000000),btScalar(-0.525736)), -btVector3(btScalar(-0.525730) , btScalar(-0.000000),btScalar(-0.850652)), -btVector3(btScalar(-0.688190) , btScalar(-0.499997),btScalar(-0.525736)), -btVector3(btScalar(-0.162456) , btScalar(0.499995),btScalar(-0.850654)), -btVector3(btScalar(-0.688190) , btScalar(0.499997),btScalar(-0.525736)), -btVector3(btScalar(0.262869) , btScalar(0.809012),btScalar(-0.525738)), -btVector3(btScalar(0.951058) , btScalar(0.309013),btScalar(0.000000)), -btVector3(btScalar(0.951058) , btScalar(-0.309013),btScalar(0.000000)), -btVector3(btScalar(0.587786) , btScalar(-0.809017),btScalar(0.000000)), -btVector3(btScalar(0.000000) , btScalar(-1.000000),btScalar(0.000000)), -btVector3(btScalar(-0.587786) , btScalar(-0.809017),btScalar(0.000000)), -btVector3(btScalar(-0.951058) , btScalar(-0.309013),btScalar(-0.000000)), -btVector3(btScalar(-0.951058) , btScalar(0.309013),btScalar(-0.000000)), -btVector3(btScalar(-0.587786) , btScalar(0.809017),btScalar(-0.000000)), -btVector3(btScalar(-0.000000) , btScalar(1.000000),btScalar(-0.000000)), -btVector3(btScalar(0.587786) , btScalar(0.809017),btScalar(-0.000000)), -btVector3(btScalar(0.688190) , btScalar(-0.499997),btScalar(0.525736)), -btVector3(btScalar(-0.262869) , btScalar(-0.809012),btScalar(0.525738)), -btVector3(btScalar(-0.850648) , btScalar(0.000000),btScalar(0.525736)), -btVector3(btScalar(-0.262869) , btScalar(0.809012),btScalar(0.525738)), -btVector3(btScalar(0.688190) , btScalar(0.499997),btScalar(0.525736)), -btVector3(btScalar(0.525730) , btScalar(0.000000),btScalar(0.850652)), -btVector3(btScalar(0.162456) , btScalar(-0.499995),btScalar(0.850654)), -btVector3(btScalar(-0.425323) , btScalar(-0.309011),btScalar(0.850654)), -btVector3(btScalar(-0.425323) , btScalar(0.309011),btScalar(0.850654)), -btVector3(btScalar(0.162456) , btScalar(0.499995),btScalar(0.850654)) -}; - - -bool SpuMinkowskiPenetrationDepthSolver::calcPenDepth( btSimplexSolverInterface& simplexSolver, - const btConvexShape* convexA,const btConvexShape* convexB, - const btTransform& transA,const btTransform& transB, - btVector3& v, btVector3& pa, btVector3& pb, - class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc) -{ -#if 0 - (void)stackAlloc; - (void)v; - - - struct btIntermediateResult : public SpuContactResult - { - - btIntermediateResult():m_hasResult(false) - { - } - - btVector3 m_normalOnBInWorld; - btVector3 m_pointInWorld; - btScalar m_depth; - bool m_hasResult; - - virtual void setShapeIdentifiersA(int partId0,int index0) - { - (void)partId0; - (void)index0; - } - - virtual void setShapeIdentifiersB(int partId1,int index1) - { - (void)partId1; - (void)index1; - } - void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth) - { - m_normalOnBInWorld = normalOnBInWorld; - m_pointInWorld = pointInWorld; - m_depth = depth; - m_hasResult = true; - } - }; - - //just take fixed number of orientation, and sample the penetration depth in that direction - btScalar minProj = btScalar(BT_LARGE_FLOAT); - btVector3 minNorm(0.f,0.f,0.f); - btVector3 minVertex; - btVector3 minA,minB; - btVector3 seperatingAxisInA,seperatingAxisInB; - btVector3 pInA,qInB,pWorld,qWorld,w; - -//#define USE_BATCHED_SUPPORT 1 -#ifdef USE_BATCHED_SUPPORT - - btVector3 supportVerticesABatch[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2]; - btVector3 supportVerticesBBatch[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2]; - btVector3 seperatingAxisInABatch[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2]; - btVector3 seperatingAxisInBBatch[NUM_UNITSPHERE_POINTS+MAX_PREFERRED_PENETRATION_DIRECTIONS*2]; - int i; - - int numSampleDirections = NUM_UNITSPHERE_POINTS; - - for (i=0;igetNumPreferredPenetrationDirections(); - if (numPDA) - { - for (int i=0;igetPreferredPenetrationDirection(i,norm); - norm = transA.getBasis() * norm; - sPenetrationDirections[numSampleDirections] = norm; - seperatingAxisInABatch[numSampleDirections] = (-norm) * transA.getBasis(); - seperatingAxisInBBatch[numSampleDirections] = norm * transB.getBasis(); - numSampleDirections++; - } - } - } - - { - int numPDB = convexB->getNumPreferredPenetrationDirections(); - if (numPDB) - { - for (int i=0;igetPreferredPenetrationDirection(i,norm); - norm = transB.getBasis() * norm; - sPenetrationDirections[numSampleDirections] = norm; - seperatingAxisInABatch[numSampleDirections] = (-norm) * transA.getBasis(); - seperatingAxisInBBatch[numSampleDirections] = norm * transB.getBasis(); - numSampleDirections++; - } - } - } - - - - convexA->batchedUnitVectorGetSupportingVertexWithoutMargin(seperatingAxisInABatch,supportVerticesABatch,numSampleDirections); - convexB->batchedUnitVectorGetSupportingVertexWithoutMargin(seperatingAxisInBBatch,supportVerticesBBatch,numSampleDirections); - - for (i=0;ilocalGetSupportVertexWithoutMarginNonVirtual( seperatingAxisInA);//, NULL); - qInB = convexB->localGetSupportVertexWithoutMarginNonVirtual(seperatingAxisInB);//, NULL); - - // pInA = convexA->localGetSupportingVertexWithoutMargin(seperatingAxisInA); - // qInB = convexB->localGetSupportingVertexWithoutMargin(seperatingAxisInB); - - pWorld = transA(pInA); - qWorld = transB(qInB); - w = qWorld - pWorld; - btScalar delta = norm.dot(w); - //find smallest delta - if (delta < minProj) - { - minProj = delta; - minNorm = norm; - minA = pWorld; - minB = qWorld; - } - } -#endif //USE_BATCHED_SUPPORT - - //add the margins - - minA += minNorm*marginA; - minB -= minNorm*marginB; - //no penetration - if (minProj < btScalar(0.)) - return false; - - minProj += (marginA + marginB) + btScalar(1.00); - - - - - -//#define DEBUG_DRAW 1 -#ifdef DEBUG_DRAW - if (debugDraw) - { - btVector3 color(0,1,0); - debugDraw->drawLine(minA,minB,color); - color = btVector3 (1,1,1); - btVector3 vec = minB-minA; - btScalar prj2 = minNorm.dot(vec); - debugDraw->drawLine(minA,minA+(minNorm*minProj),color); - - } -#endif //DEBUG_DRAW - - - btGjkPairDetector gjkdet(convexA,convexB,&simplexSolver,0); - - btScalar offsetDist = minProj; - btVector3 offset = minNorm * offsetDist; - - - SpuClosestPointInput input; - input.m_convexVertexData[0] = convexVertexDataA; - input.m_convexVertexData[1] = convexVertexDataB; - btVector3 newOrg = transA.getOrigin() + offset; - - btTransform displacedTrans = transA; - displacedTrans.setOrigin(newOrg); - - input.m_transformA = displacedTrans; - input.m_transformB = transB; - input.m_maximumDistanceSquared = btScalar(BT_LARGE_FLOAT);//minProj; - - btIntermediateResult res; - gjkdet.getClosestPoints(input,res,0); - - btScalar correctedMinNorm = minProj - res.m_depth; - - - //the penetration depth is over-estimated, relax it - btScalar penetration_relaxation= btScalar(1.); - minNorm*=penetration_relaxation; - - if (res.m_hasResult) - { - - pa = res.m_pointInWorld - minNorm * correctedMinNorm; - pb = res.m_pointInWorld; - -#ifdef DEBUG_DRAW - if (debugDraw) - { - btVector3 color(1,0,0); - debugDraw->drawLine(pa,pb,color); - } -#endif//DEBUG_DRAW - - - } else { - // could not seperate shapes - //btAssert (false); - } - return res.m_hasResult; -#endif - return false; -} - - - diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.h b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.h deleted file mode 100644 index 18ad223ed36..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.h +++ /dev/null @@ -1,48 +0,0 @@ - -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef MINKOWSKI_PENETRATION_DEPTH_SOLVER_H -#define MINKOWSKI_PENETRATION_DEPTH_SOLVER_H - - -#include "BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h" - -class btStackAlloc; -class btIDebugDraw; -class btVoronoiSimplexSolver; -class btConvexShape; - -///MinkowskiPenetrationDepthSolver implements bruteforce penetration depth estimation. -///Implementation is based on sampling the depth using support mapping, and using GJK step to get the witness points. -class SpuMinkowskiPenetrationDepthSolver : public btConvexPenetrationDepthSolver -{ -public: - SpuMinkowskiPenetrationDepthSolver() {} - virtual ~SpuMinkowskiPenetrationDepthSolver() {}; - - virtual bool calcPenDepth( btSimplexSolverInterface& simplexSolver, - const btConvexShape* convexA,const btConvexShape* convexB, - const btTransform& transA,const btTransform& transB, - btVector3& v, btVector3& pa, btVector3& pb, - class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc - ); - - -}; - - -#endif //MINKOWSKI_PENETRATION_DEPTH_SOLVER_H - diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuPreferredPenetrationDirections.h b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuPreferredPenetrationDirections.h deleted file mode 100644 index 774a0cb2eb1..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuPreferredPenetrationDirections.h +++ /dev/null @@ -1,70 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef _SPU_PREFERRED_PENETRATION_DIRECTIONS_H -#define _SPU_PREFERRED_PENETRATION_DIRECTIONS_H - - -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" - -int spuGetNumPreferredPenetrationDirections(int shapeType, void* shape) -{ - switch (shapeType) - { - case TRIANGLE_SHAPE_PROXYTYPE: - { - return 2; - //spu_printf("2\n"); - break; - } - default: - { -#if __ASSERT - spu_printf("spuGetNumPreferredPenetrationDirections() - Unsupported bound type: %d.\n", shapeType); -#endif // __ASSERT - } - } - - return 0; -} - -void spuGetPreferredPenetrationDirection(int shapeType, void* shape, int index, btVector3& penetrationVector) -{ - - - switch (shapeType) - { - case TRIANGLE_SHAPE_PROXYTYPE: - { - btVector3* vertices = (btVector3*)shape; - ///calcNormal - penetrationVector = (vertices[1]-vertices[0]).cross(vertices[2]-vertices[0]); - penetrationVector.normalize(); - if (index) - penetrationVector *= btScalar(-1.); - break; - } - default: - { - -#if __ASSERT - spu_printf("spuGetNumPreferredPenetrationDirections() - Unsupported bound type: %d.\n", shapeType); -#endif // __ASSERT - } - } - -} - -#endif //_SPU_PREFERRED_PENETRATION_DIRECTIONS_H diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp deleted file mode 100644 index 30642a39294..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp +++ /dev/null @@ -1,1155 +0,0 @@ -/* - Copyright (C) 2006, 2008 Sony Computer Entertainment Inc. - All rights reserved. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -*/ - - -#include "Box.h" - -static inline float sqr( float a ) -{ - return (a * a); -} - -enum BoxSepAxisType -{ - A_AXIS, B_AXIS, CROSS_AXIS -}; - -//------------------------------------------------------------------------------------------------- -// voronoiTol: bevels Voronoi planes slightly which helps when features are parallel. -//------------------------------------------------------------------------------------------------- - -static const float voronoiTol = -1.0e-5f; - -//------------------------------------------------------------------------------------------------- -// separating axis tests: gaps along each axis are computed, and the axis with the maximum -// gap is stored. cross product axes are normalized. -//------------------------------------------------------------------------------------------------- - -#define AaxisTest( dim, letter, first ) \ -{ \ - if ( first ) \ - { \ - maxGap = gap = gapsA.get##letter(); \ - if ( gap > distanceThreshold ) return gap; \ - axisType = A_AXIS; \ - faceDimA = dim; \ - axisA = identity.getCol##dim(); \ - } \ - else \ - { \ - gap = gapsA.get##letter(); \ - if ( gap > distanceThreshold ) return gap; \ - else if ( gap > maxGap ) \ - { \ - maxGap = gap; \ - axisType = A_AXIS; \ - faceDimA = dim; \ - axisA = identity.getCol##dim(); \ - } \ - } \ -} - - -#define BaxisTest( dim, letter ) \ -{ \ - gap = gapsB.get##letter(); \ - if ( gap > distanceThreshold ) return gap; \ - else if ( gap > maxGap ) \ - { \ - maxGap = gap; \ - axisType = B_AXIS; \ - faceDimB = dim; \ - axisB = identity.getCol##dim(); \ - } \ -} - -#define CrossAxisTest( dima, dimb, letterb ) \ -{ \ - const float lsqr_tolerance = 1.0e-30f; \ - float lsqr; \ - \ - lsqr = lsqrs.getCol##dima().get##letterb(); \ - \ - if ( lsqr > lsqr_tolerance ) \ - { \ - float l_recip = 1.0f / sqrtf( lsqr ); \ - gap = float(gapsAxB.getCol##dima().get##letterb()) * l_recip; \ - \ - if ( gap > distanceThreshold ) \ - { \ - return gap; \ - } \ - \ - if ( gap > maxGap ) \ - { \ - maxGap = gap; \ - axisType = CROSS_AXIS; \ - edgeDimA = dima; \ - edgeDimB = dimb; \ - axisA = cross(identity.getCol##dima(),matrixAB.getCol##dimb()) * l_recip; \ - } \ - } \ -} - -//------------------------------------------------------------------------------------------------- -// tests whether a vertex of box B and a face of box A are the closest features -//------------------------------------------------------------------------------------------------- - -inline -float -VertexBFaceATest( - bool & inVoronoi, - float & t0, - float & t1, - const Vector3 & hA, - PE_REF(Vector3) faceOffsetAB, - PE_REF(Vector3) faceOffsetBA, - const Matrix3 & matrixAB, - const Matrix3 & matrixBA, - PE_REF(Vector3) signsB, - PE_REF(Vector3) scalesB ) -{ - // compute a corner of box B in A's coordinate system - - Vector3 corner = - Vector3( faceOffsetAB + matrixAB.getCol0() * scalesB.getX() + matrixAB.getCol1() * scalesB.getY() ); - - // compute the parameters of the point on A, closest to this corner - - t0 = corner[0]; - t1 = corner[1]; - - if ( t0 > hA[0] ) - t0 = hA[0]; - else if ( t0 < -hA[0] ) - t0 = -hA[0]; - if ( t1 > hA[1] ) - t1 = hA[1]; - else if ( t1 < -hA[1] ) - t1 = -hA[1]; - - // do the Voronoi test: already know the point on B is in the Voronoi region of the - // point on A, check the reverse. - - Vector3 facePointB = - Vector3( mulPerElem( faceOffsetBA + matrixBA.getCol0() * t0 + matrixBA.getCol1() * t1 - scalesB, signsB ) ); - - inVoronoi = ( ( facePointB[0] >= voronoiTol * facePointB[2] ) && - ( facePointB[1] >= voronoiTol * facePointB[0] ) && - ( facePointB[2] >= voronoiTol * facePointB[1] ) ); - - return (sqr( corner[0] - t0 ) + sqr( corner[1] - t1 ) + sqr( corner[2] )); -} - -#define VertexBFaceA_SetNewMin() \ -{ \ - minDistSqr = distSqr; \ - localPointA.setX(t0); \ - localPointA.setY(t1); \ - localPointB.setX( scalesB.getX() ); \ - localPointB.setY( scalesB.getY() ); \ - featureA = F; \ - featureB = V; \ -} - -void -VertexBFaceATests( - bool & done, - float & minDistSqr, - Point3 & localPointA, - Point3 & localPointB, - FeatureType & featureA, - FeatureType & featureB, - const Vector3 & hA, - PE_REF(Vector3) faceOffsetAB, - PE_REF(Vector3) faceOffsetBA, - const Matrix3 & matrixAB, - const Matrix3 & matrixBA, - PE_REF(Vector3) signsB, - PE_REF(Vector3) scalesB, - bool first ) -{ - - float t0, t1; - float distSqr; - - distSqr = VertexBFaceATest( done, t0, t1, hA, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsB, scalesB ); - - if ( first ) { - VertexBFaceA_SetNewMin(); - } else { - if ( distSqr < minDistSqr ) { - VertexBFaceA_SetNewMin(); - } - } - - if ( done ) - return; - - signsB.setX( -signsB.getX() ); - scalesB.setX( -scalesB.getX() ); - - distSqr = VertexBFaceATest( done, t0, t1, hA, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsB, scalesB ); - - if ( distSqr < minDistSqr ) { - VertexBFaceA_SetNewMin(); - } - - if ( done ) - return; - - signsB.setY( -signsB.getY() ); - scalesB.setY( -scalesB.getY() ); - - distSqr = VertexBFaceATest( done, t0, t1, hA, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsB, scalesB ); - - if ( distSqr < minDistSqr ) { - VertexBFaceA_SetNewMin(); - } - - if ( done ) - return; - - signsB.setX( -signsB.getX() ); - scalesB.setX( -scalesB.getX() ); - - distSqr = VertexBFaceATest( done, t0, t1, hA, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsB, scalesB ); - - if ( distSqr < minDistSqr ) { - VertexBFaceA_SetNewMin(); - } -} - -//------------------------------------------------------------------------------------------------- -// VertexAFaceBTest: tests whether a vertex of box A and a face of box B are the closest features -//------------------------------------------------------------------------------------------------- - -inline -float -VertexAFaceBTest( - bool & inVoronoi, - float & t0, - float & t1, - const Vector3 & hB, - PE_REF(Vector3) faceOffsetAB, - PE_REF(Vector3) faceOffsetBA, - const Matrix3 & matrixAB, - const Matrix3 & matrixBA, - PE_REF(Vector3) signsA, - PE_REF(Vector3) scalesA ) -{ - Vector3 corner = - Vector3( faceOffsetBA + matrixBA.getCol0() * scalesA.getX() + matrixBA.getCol1() * scalesA.getY() ); - - t0 = corner[0]; - t1 = corner[1]; - - if ( t0 > hB[0] ) - t0 = hB[0]; - else if ( t0 < -hB[0] ) - t0 = -hB[0]; - if ( t1 > hB[1] ) - t1 = hB[1]; - else if ( t1 < -hB[1] ) - t1 = -hB[1]; - - Vector3 facePointA = - Vector3( mulPerElem( faceOffsetAB + matrixAB.getCol0() * t0 + matrixAB.getCol1() * t1 - scalesA, signsA ) ); - - inVoronoi = ( ( facePointA[0] >= voronoiTol * facePointA[2] ) && - ( facePointA[1] >= voronoiTol * facePointA[0] ) && - ( facePointA[2] >= voronoiTol * facePointA[1] ) ); - - return (sqr( corner[0] - t0 ) + sqr( corner[1] - t1 ) + sqr( corner[2] )); -} - -#define VertexAFaceB_SetNewMin() \ -{ \ - minDistSqr = distSqr; \ - localPointB.setX(t0); \ - localPointB.setY(t1); \ - localPointA.setX( scalesA.getX() ); \ - localPointA.setY( scalesA.getY() ); \ - featureA = V; \ - featureB = F; \ -} - -void -VertexAFaceBTests( - bool & done, - float & minDistSqr, - Point3 & localPointA, - Point3 & localPointB, - FeatureType & featureA, - FeatureType & featureB, - const Vector3 & hB, - PE_REF(Vector3) faceOffsetAB, - PE_REF(Vector3) faceOffsetBA, - const Matrix3 & matrixAB, - const Matrix3 & matrixBA, - PE_REF(Vector3) signsA, - PE_REF(Vector3) scalesA, - bool first ) -{ - float t0, t1; - float distSqr; - - distSqr = VertexAFaceBTest( done, t0, t1, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, scalesA ); - - if ( first ) { - VertexAFaceB_SetNewMin(); - } else { - if ( distSqr < minDistSqr ) { - VertexAFaceB_SetNewMin(); - } - } - - if ( done ) - return; - - signsA.setX( -signsA.getX() ); - scalesA.setX( -scalesA.getX() ); - - distSqr = VertexAFaceBTest( done, t0, t1, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, scalesA ); - - if ( distSqr < minDistSqr ) { - VertexAFaceB_SetNewMin(); - } - - if ( done ) - return; - - signsA.setY( -signsA.getY() ); - scalesA.setY( -scalesA.getY() ); - - distSqr = VertexAFaceBTest( done, t0, t1, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, scalesA ); - - if ( distSqr < minDistSqr ) { - VertexAFaceB_SetNewMin(); - } - - if ( done ) - return; - - signsA.setX( -signsA.getX() ); - scalesA.setX( -scalesA.getX() ); - - distSqr = VertexAFaceBTest( done, t0, t1, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, scalesA ); - - if ( distSqr < minDistSqr ) { - VertexAFaceB_SetNewMin(); - } -} - -//------------------------------------------------------------------------------------------------- -// EdgeEdgeTest: -// -// tests whether a pair of edges are the closest features -// -// note on the shorthand: -// 'a' & 'b' refer to the edges. -// 'c' is the dimension of the axis that points from the face center to the edge Center -// 'd' is the dimension of the edge Direction -// the dimension of the face normal is 2 -//------------------------------------------------------------------------------------------------- - -#define EdgeEdgeTest( ac, ac_letter, ad, ad_letter, bc, bc_letter, bd, bd_letter ) \ -{ \ - Vector3 edgeOffsetAB; \ - Vector3 edgeOffsetBA; \ - \ - edgeOffsetAB = faceOffsetAB + matrixAB.getCol##bc() * scalesB.get##bc_letter(); \ - edgeOffsetAB.set##ac_letter( edgeOffsetAB.get##ac_letter() - scalesA.get##ac_letter() ); \ - \ - edgeOffsetBA = faceOffsetBA + matrixBA.getCol##ac() * scalesA.get##ac_letter(); \ - edgeOffsetBA.set##bc_letter( edgeOffsetBA.get##bc_letter() - scalesB.get##bc_letter() ); \ - \ - float dirDot = matrixAB.getCol##bd().get##ad_letter(); \ - float denom = 1.0f - dirDot*dirDot; \ - float edgeOffsetAB_ad = edgeOffsetAB.get##ad_letter(); \ - float edgeOffsetBA_bd = edgeOffsetBA.get##bd_letter(); \ - \ - if ( denom == 0.0f ) \ - { \ - tA = 0.0f; \ - } \ - else \ - { \ - tA = ( edgeOffsetAB_ad + edgeOffsetBA_bd * dirDot ) / denom; \ - } \ - \ - if ( tA < -hA[ad] ) tA = -hA[ad]; \ - else if ( tA > hA[ad] ) tA = hA[ad]; \ - \ - tB = tA * dirDot + edgeOffsetBA_bd; \ - \ - if ( tB < -hB[bd] ) \ - { \ - tB = -hB[bd]; \ - tA = tB * dirDot + edgeOffsetAB_ad; \ - \ - if ( tA < -hA[ad] ) tA = -hA[ad]; \ - else if ( tA > hA[ad] ) tA = hA[ad]; \ - } \ - else if ( tB > hB[bd] ) \ - { \ - tB = hB[bd]; \ - tA = tB * dirDot + edgeOffsetAB_ad; \ - \ - if ( tA < -hA[ad] ) tA = -hA[ad]; \ - else if ( tA > hA[ad] ) tA = hA[ad]; \ - } \ - \ - Vector3 edgeOffAB = Vector3( mulPerElem( edgeOffsetAB + matrixAB.getCol##bd() * tB, signsA ) );\ - Vector3 edgeOffBA = Vector3( mulPerElem( edgeOffsetBA + matrixBA.getCol##ad() * tA, signsB ) );\ - \ - inVoronoi = ( edgeOffAB[ac] >= voronoiTol * edgeOffAB[2] ) && \ - ( edgeOffAB[2] >= voronoiTol * edgeOffAB[ac] ) && \ - ( edgeOffBA[bc] >= voronoiTol * edgeOffBA[2] ) && \ - ( edgeOffBA[2] >= voronoiTol * edgeOffBA[bc] ); \ - \ - edgeOffAB[ad] -= tA; \ - edgeOffBA[bd] -= tB; \ - \ - return dot(edgeOffAB,edgeOffAB); \ -} - -float -EdgeEdgeTest_0101( - bool & inVoronoi, - float & tA, - float & tB, - const Vector3 & hA, - const Vector3 & hB, - PE_REF(Vector3) faceOffsetAB, - PE_REF(Vector3) faceOffsetBA, - const Matrix3 & matrixAB, - const Matrix3 & matrixBA, - PE_REF(Vector3) signsA, - PE_REF(Vector3) signsB, - PE_REF(Vector3) scalesA, - PE_REF(Vector3) scalesB ) -{ - EdgeEdgeTest( 0, X, 1, Y, 0, X, 1, Y ); -} - -float -EdgeEdgeTest_0110( - bool & inVoronoi, - float & tA, - float & tB, - const Vector3 & hA, - const Vector3 & hB, - PE_REF(Vector3) faceOffsetAB, - PE_REF(Vector3) faceOffsetBA, - const Matrix3 & matrixAB, - const Matrix3 & matrixBA, - PE_REF(Vector3) signsA, - PE_REF(Vector3) signsB, - PE_REF(Vector3) scalesA, - PE_REF(Vector3) scalesB ) -{ - EdgeEdgeTest( 0, X, 1, Y, 1, Y, 0, X ); -} - -float -EdgeEdgeTest_1001( - bool & inVoronoi, - float & tA, - float & tB, - const Vector3 & hA, - const Vector3 & hB, - PE_REF(Vector3) faceOffsetAB, - PE_REF(Vector3) faceOffsetBA, - const Matrix3 & matrixAB, - const Matrix3 & matrixBA, - PE_REF(Vector3) signsA, - PE_REF(Vector3) signsB, - PE_REF(Vector3) scalesA, - PE_REF(Vector3) scalesB ) -{ - EdgeEdgeTest( 1, Y, 0, X, 0, X, 1, Y ); -} - -float -EdgeEdgeTest_1010( - bool & inVoronoi, - float & tA, - float & tB, - const Vector3 & hA, - const Vector3 & hB, - PE_REF(Vector3) faceOffsetAB, - PE_REF(Vector3) faceOffsetBA, - const Matrix3 & matrixAB, - const Matrix3 & matrixBA, - PE_REF(Vector3) signsA, - PE_REF(Vector3) signsB, - PE_REF(Vector3) scalesA, - PE_REF(Vector3) scalesB ) -{ - EdgeEdgeTest( 1, Y, 0, X, 1, Y, 0, X ); -} - -#define EdgeEdge_SetNewMin( ac_letter, ad_letter, bc_letter, bd_letter ) \ -{ \ - minDistSqr = distSqr; \ - localPointA.set##ac_letter(scalesA.get##ac_letter()); \ - localPointA.set##ad_letter(tA); \ - localPointB.set##bc_letter(scalesB.get##bc_letter()); \ - localPointB.set##bd_letter(tB); \ - otherFaceDimA = testOtherFaceDimA; \ - otherFaceDimB = testOtherFaceDimB; \ - featureA = E; \ - featureB = E; \ -} - -void -EdgeEdgeTests( - bool & done, - float & minDistSqr, - Point3 & localPointA, - Point3 & localPointB, - int & otherFaceDimA, - int & otherFaceDimB, - FeatureType & featureA, - FeatureType & featureB, - const Vector3 & hA, - const Vector3 & hB, - PE_REF(Vector3) faceOffsetAB, - PE_REF(Vector3) faceOffsetBA, - const Matrix3 & matrixAB, - const Matrix3 & matrixBA, - PE_REF(Vector3) signsA, - PE_REF(Vector3) signsB, - PE_REF(Vector3) scalesA, - PE_REF(Vector3) scalesB, - bool first ) -{ - - float distSqr; - float tA, tB; - - int testOtherFaceDimA, testOtherFaceDimB; - - testOtherFaceDimA = 0; - testOtherFaceDimB = 0; - - distSqr = EdgeEdgeTest_0101( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); - - if ( first ) { - EdgeEdge_SetNewMin( X, Y, X, Y ); - } else { - if ( distSqr < minDistSqr ) { - EdgeEdge_SetNewMin( X, Y, X, Y ); - } - } - - if ( done ) - return; - - signsA.setX( -signsA.getX() ); - scalesA.setX( -scalesA.getX() ); - - distSqr = EdgeEdgeTest_0101( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); - - if ( distSqr < minDistSqr ) { - EdgeEdge_SetNewMin( X, Y, X, Y ); - } - - if ( done ) - return; - - signsB.setX( -signsB.getX() ); - scalesB.setX( -scalesB.getX() ); - - distSqr = EdgeEdgeTest_0101( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); - - if ( distSqr < minDistSqr ) { - EdgeEdge_SetNewMin( X, Y, X, Y ); - } - - if ( done ) - return; - - signsA.setX( -signsA.getX() ); - scalesA.setX( -scalesA.getX() ); - - distSqr = EdgeEdgeTest_0101( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); - - if ( distSqr < minDistSqr ) { - EdgeEdge_SetNewMin( X, Y, X, Y ); - } - - if ( done ) - return; - - testOtherFaceDimA = 1; - testOtherFaceDimB = 0; - signsB.setX( -signsB.getX() ); - scalesB.setX( -scalesB.getX() ); - - distSqr = EdgeEdgeTest_1001( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); - - if ( distSqr < minDistSqr ) { - EdgeEdge_SetNewMin( Y, X, X, Y ); - } - - if ( done ) - return; - - signsA.setY( -signsA.getY() ); - scalesA.setY( -scalesA.getY() ); - - distSqr = EdgeEdgeTest_1001( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); - - if ( distSqr < minDistSqr ) { - EdgeEdge_SetNewMin( Y, X, X, Y ); - } - - if ( done ) - return; - - signsB.setX( -signsB.getX() ); - scalesB.setX( -scalesB.getX() ); - - distSqr = EdgeEdgeTest_1001( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); - - if ( distSqr < minDistSqr ) { - EdgeEdge_SetNewMin( Y, X, X, Y ); - } - - if ( done ) - return; - - signsA.setY( -signsA.getY() ); - scalesA.setY( -scalesA.getY() ); - - distSqr = EdgeEdgeTest_1001( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); - - if ( distSqr < minDistSqr ) { - EdgeEdge_SetNewMin( Y, X, X, Y ); - } - - if ( done ) - return; - - testOtherFaceDimA = 0; - testOtherFaceDimB = 1; - signsB.setX( -signsB.getX() ); - scalesB.setX( -scalesB.getX() ); - - distSqr = EdgeEdgeTest_0110( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); - - if ( distSqr < minDistSqr ) { - EdgeEdge_SetNewMin( X, Y, Y, X ); - } - - if ( done ) - return; - - signsA.setX( -signsA.getX() ); - scalesA.setX( -scalesA.getX() ); - - distSqr = EdgeEdgeTest_0110( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); - - if ( distSqr < minDistSqr ) { - EdgeEdge_SetNewMin( X, Y, Y, X ); - } - - if ( done ) - return; - - signsB.setY( -signsB.getY() ); - scalesB.setY( -scalesB.getY() ); - - distSqr = EdgeEdgeTest_0110( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); - - if ( distSqr < minDistSqr ) { - EdgeEdge_SetNewMin( X, Y, Y, X ); - } - - if ( done ) - return; - - signsA.setX( -signsA.getX() ); - scalesA.setX( -scalesA.getX() ); - - distSqr = EdgeEdgeTest_0110( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); - - if ( distSqr < minDistSqr ) { - EdgeEdge_SetNewMin( X, Y, Y, X ); - } - - if ( done ) - return; - - testOtherFaceDimA = 1; - testOtherFaceDimB = 1; - signsB.setY( -signsB.getY() ); - scalesB.setY( -scalesB.getY() ); - - distSqr = EdgeEdgeTest_1010( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); - - if ( distSqr < minDistSqr ) { - EdgeEdge_SetNewMin( Y, X, Y, X ); - } - - if ( done ) - return; - - signsA.setY( -signsA.getY() ); - scalesA.setY( -scalesA.getY() ); - - distSqr = EdgeEdgeTest_1010( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); - - if ( distSqr < minDistSqr ) { - EdgeEdge_SetNewMin( Y, X, Y, X ); - } - - if ( done ) - return; - - signsB.setY( -signsB.getY() ); - scalesB.setY( -scalesB.getY() ); - - distSqr = EdgeEdgeTest_1010( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); - - if ( distSqr < minDistSqr ) { - EdgeEdge_SetNewMin( Y, X, Y, X ); - } - - if ( done ) - return; - - signsA.setY( -signsA.getY() ); - scalesA.setY( -scalesA.getY() ); - - distSqr = EdgeEdgeTest_1010( done, tA, tB, hA, hB, faceOffsetAB, faceOffsetBA, - matrixAB, matrixBA, signsA, signsB, scalesA, scalesB ); - - if ( distSqr < minDistSqr ) { - EdgeEdge_SetNewMin( Y, X, Y, X ); - } -} - -float -boxBoxDistance( - Vector3& normal, - BoxPoint& boxPointA, - BoxPoint& boxPointB, - PE_REF(Box) boxA, const Transform3& transformA, - PE_REF(Box) boxB, const Transform3& transformB, - float distanceThreshold ) -{ - Matrix3 identity; - identity = Matrix3::identity(); - Vector3 ident[3]; - ident[0] = identity.getCol0(); - ident[1] = identity.getCol1(); - ident[2] = identity.getCol2(); - - // get relative transformations - - Transform3 transformAB, transformBA; - Matrix3 matrixAB, matrixBA; - Vector3 offsetAB, offsetBA; - - transformAB = orthoInverse(transformA) * transformB; - transformBA = orthoInverse(transformAB); - - matrixAB = transformAB.getUpper3x3(); - offsetAB = transformAB.getTranslation(); - matrixBA = transformBA.getUpper3x3(); - offsetBA = transformBA.getTranslation(); - - Matrix3 absMatrixAB = absPerElem(matrixAB); - Matrix3 absMatrixBA = absPerElem(matrixBA); - - // find separating axis with largest gap between projections - - BoxSepAxisType axisType; - Vector3 axisA(0.0f), axisB(0.0f); - float gap, maxGap; - int faceDimA = 0, faceDimB = 0, edgeDimA = 0, edgeDimB = 0; - - // face axes - - Vector3 gapsA = absPerElem(offsetAB) - boxA.half - absMatrixAB * boxB.half; - - AaxisTest(0,X,true); - AaxisTest(1,Y,false); - AaxisTest(2,Z,false); - - Vector3 gapsB = absPerElem(offsetBA) - boxB.half - absMatrixBA * boxA.half; - - BaxisTest(0,X); - BaxisTest(1,Y); - BaxisTest(2,Z); - - // cross product axes - - // ŠOÏ‚ª‚O‚̂Ƃ«‚Ì‘Îô - absMatrixAB += Matrix3(1.0e-5f); - absMatrixBA += Matrix3(1.0e-5f); - - Matrix3 lsqrs, projOffset, projAhalf, projBhalf; - - lsqrs.setCol0( mulPerElem( matrixBA.getCol2(), matrixBA.getCol2() ) + - mulPerElem( matrixBA.getCol1(), matrixBA.getCol1() ) ); - lsqrs.setCol1( mulPerElem( matrixBA.getCol2(), matrixBA.getCol2() ) + - mulPerElem( matrixBA.getCol0(), matrixBA.getCol0() ) ); - lsqrs.setCol2( mulPerElem( matrixBA.getCol1(), matrixBA.getCol1() ) + - mulPerElem( matrixBA.getCol0(), matrixBA.getCol0() ) ); - - projOffset.setCol0(matrixBA.getCol1() * offsetAB.getZ() - matrixBA.getCol2() * offsetAB.getY()); - projOffset.setCol1(matrixBA.getCol2() * offsetAB.getX() - matrixBA.getCol0() * offsetAB.getZ()); - projOffset.setCol2(matrixBA.getCol0() * offsetAB.getY() - matrixBA.getCol1() * offsetAB.getX()); - - projAhalf.setCol0(absMatrixBA.getCol1() * boxA.half.getZ() + absMatrixBA.getCol2() * boxA.half.getY()); - projAhalf.setCol1(absMatrixBA.getCol2() * boxA.half.getX() + absMatrixBA.getCol0() * boxA.half.getZ()); - projAhalf.setCol2(absMatrixBA.getCol0() * boxA.half.getY() + absMatrixBA.getCol1() * boxA.half.getX()); - - projBhalf.setCol0(absMatrixAB.getCol1() * boxB.half.getZ() + absMatrixAB.getCol2() * boxB.half.getY()); - projBhalf.setCol1(absMatrixAB.getCol2() * boxB.half.getX() + absMatrixAB.getCol0() * boxB.half.getZ()); - projBhalf.setCol2(absMatrixAB.getCol0() * boxB.half.getY() + absMatrixAB.getCol1() * boxB.half.getX()); - - Matrix3 gapsAxB = absPerElem(projOffset) - projAhalf - transpose(projBhalf); - - CrossAxisTest(0,0,X); - CrossAxisTest(0,1,Y); - CrossAxisTest(0,2,Z); - CrossAxisTest(1,0,X); - CrossAxisTest(1,1,Y); - CrossAxisTest(1,2,Z); - CrossAxisTest(2,0,X); - CrossAxisTest(2,1,Y); - CrossAxisTest(2,2,Z); - - // need to pick the face on each box whose normal best matches the separating axis. - // will transform vectors to be in the coordinate system of this face to simplify things later. - // for this, a permutation matrix can be used, which the next section computes. - - int dimA[3], dimB[3]; - - if ( axisType == A_AXIS ) { - if ( dot(axisA,offsetAB) < 0.0f ) - axisA = -axisA; - axisB = matrixBA * -axisA; - - Vector3 absAxisB = Vector3(absPerElem(axisB)); - - if ( ( absAxisB[0] > absAxisB[1] ) && ( absAxisB[0] > absAxisB[2] ) ) - faceDimB = 0; - else if ( absAxisB[1] > absAxisB[2] ) - faceDimB = 1; - else - faceDimB = 2; - } else if ( axisType == B_AXIS ) { - if ( dot(axisB,offsetBA) < 0.0f ) - axisB = -axisB; - axisA = matrixAB * -axisB; - - Vector3 absAxisA = Vector3(absPerElem(axisA)); - - if ( ( absAxisA[0] > absAxisA[1] ) && ( absAxisA[0] > absAxisA[2] ) ) - faceDimA = 0; - else if ( absAxisA[1] > absAxisA[2] ) - faceDimA = 1; - else - faceDimA = 2; - } - - if ( axisType == CROSS_AXIS ) { - if ( dot(axisA,offsetAB) < 0.0f ) - axisA = -axisA; - axisB = matrixBA * -axisA; - - Vector3 absAxisA = Vector3(absPerElem(axisA)); - Vector3 absAxisB = Vector3(absPerElem(axisB)); - - dimA[1] = edgeDimA; - dimB[1] = edgeDimB; - - if ( edgeDimA == 0 ) { - if ( absAxisA[1] > absAxisA[2] ) { - dimA[0] = 2; - dimA[2] = 1; - } else { - dimA[0] = 1; - dimA[2] = 2; - } - } else if ( edgeDimA == 1 ) { - if ( absAxisA[2] > absAxisA[0] ) { - dimA[0] = 0; - dimA[2] = 2; - } else { - dimA[0] = 2; - dimA[2] = 0; - } - } else { - if ( absAxisA[0] > absAxisA[1] ) { - dimA[0] = 1; - dimA[2] = 0; - } else { - dimA[0] = 0; - dimA[2] = 1; - } - } - - if ( edgeDimB == 0 ) { - if ( absAxisB[1] > absAxisB[2] ) { - dimB[0] = 2; - dimB[2] = 1; - } else { - dimB[0] = 1; - dimB[2] = 2; - } - } else if ( edgeDimB == 1 ) { - if ( absAxisB[2] > absAxisB[0] ) { - dimB[0] = 0; - dimB[2] = 2; - } else { - dimB[0] = 2; - dimB[2] = 0; - } - } else { - if ( absAxisB[0] > absAxisB[1] ) { - dimB[0] = 1; - dimB[2] = 0; - } else { - dimB[0] = 0; - dimB[2] = 1; - } - } - } else { - dimA[2] = faceDimA; - dimA[0] = (faceDimA+1)%3; - dimA[1] = (faceDimA+2)%3; - dimB[2] = faceDimB; - dimB[0] = (faceDimB+1)%3; - dimB[1] = (faceDimB+2)%3; - } - - Matrix3 aperm_col, bperm_col; - - aperm_col.setCol0(ident[dimA[0]]); - aperm_col.setCol1(ident[dimA[1]]); - aperm_col.setCol2(ident[dimA[2]]); - - bperm_col.setCol0(ident[dimB[0]]); - bperm_col.setCol1(ident[dimB[1]]); - bperm_col.setCol2(ident[dimB[2]]); - - Matrix3 aperm_row, bperm_row; - - aperm_row = transpose(aperm_col); - bperm_row = transpose(bperm_col); - - // permute all box parameters to be in the face coordinate systems - - Matrix3 matrixAB_perm = aperm_row * matrixAB * bperm_col; - Matrix3 matrixBA_perm = transpose(matrixAB_perm); - - Vector3 offsetAB_perm, offsetBA_perm; - - offsetAB_perm = aperm_row * offsetAB; - offsetBA_perm = bperm_row * offsetBA; - - Vector3 halfA_perm, halfB_perm; - - halfA_perm = aperm_row * boxA.half; - halfB_perm = bperm_row * boxB.half; - - // compute the vector between the centers of each face, in each face's coordinate frame - - Vector3 signsA_perm, signsB_perm, scalesA_perm, scalesB_perm, faceOffsetAB_perm, faceOffsetBA_perm; - - signsA_perm = copySignPerElem(Vector3(1.0f),aperm_row * axisA); - signsB_perm = copySignPerElem(Vector3(1.0f),bperm_row * axisB); - scalesA_perm = mulPerElem( signsA_perm, halfA_perm ); - scalesB_perm = mulPerElem( signsB_perm, halfB_perm ); - - faceOffsetAB_perm = offsetAB_perm + matrixAB_perm.getCol2() * scalesB_perm.getZ(); - faceOffsetAB_perm.setZ( faceOffsetAB_perm.getZ() - scalesA_perm.getZ() ); - - faceOffsetBA_perm = offsetBA_perm + matrixBA_perm.getCol2() * scalesA_perm.getZ(); - faceOffsetBA_perm.setZ( faceOffsetBA_perm.getZ() - scalesB_perm.getZ() ); - - if ( maxGap < 0.0f ) { - // if boxes overlap, this will separate the faces for finding points of penetration. - - faceOffsetAB_perm -= aperm_row * axisA * maxGap * 1.01f; - faceOffsetBA_perm -= bperm_row * axisB * maxGap * 1.01f; - } - - // for each vertex/face or edge/edge pair of the two faces, find the closest points. - // - // these points each have an associated box feature (vertex, edge, or face). if each - // point is in the external Voronoi region of the other's feature, they are the - // closest points of the boxes, and the algorithm can exit. - // - // the feature pairs are arranged so that in the general case, the first test will - // succeed. degenerate cases (parallel faces) may require up to all tests in the - // worst case. - // - // if for some reason no case passes the Voronoi test, the features with the minimum - // distance are returned. - - Point3 localPointA_perm, localPointB_perm; - float minDistSqr; - bool done; - - Vector3 hA_perm( halfA_perm ), hB_perm( halfB_perm ); - - localPointA_perm.setZ( scalesA_perm.getZ() ); - localPointB_perm.setZ( scalesB_perm.getZ() ); - scalesA_perm.setZ(0.0f); - scalesB_perm.setZ(0.0f); - - int otherFaceDimA, otherFaceDimB; - FeatureType featureA, featureB; - - if ( axisType == CROSS_AXIS ) { - EdgeEdgeTests( done, minDistSqr, localPointA_perm, localPointB_perm, - otherFaceDimA, otherFaceDimB, featureA, featureB, - hA_perm, hB_perm, faceOffsetAB_perm, faceOffsetBA_perm, - matrixAB_perm, matrixBA_perm, signsA_perm, signsB_perm, - scalesA_perm, scalesB_perm, true ); - - if ( !done ) { - VertexBFaceATests( done, minDistSqr, localPointA_perm, localPointB_perm, - featureA, featureB, - hA_perm, faceOffsetAB_perm, faceOffsetBA_perm, - matrixAB_perm, matrixBA_perm, signsB_perm, scalesB_perm, false ); - - if ( !done ) { - VertexAFaceBTests( done, minDistSqr, localPointA_perm, localPointB_perm, - featureA, featureB, - hB_perm, faceOffsetAB_perm, faceOffsetBA_perm, - matrixAB_perm, matrixBA_perm, signsA_perm, scalesA_perm, false ); - } - } - } else if ( axisType == B_AXIS ) { - VertexAFaceBTests( done, minDistSqr, localPointA_perm, localPointB_perm, - featureA, featureB, - hB_perm, faceOffsetAB_perm, faceOffsetBA_perm, - matrixAB_perm, matrixBA_perm, signsA_perm, scalesA_perm, true ); - - if ( !done ) { - VertexBFaceATests( done, minDistSqr, localPointA_perm, localPointB_perm, - featureA, featureB, - hA_perm, faceOffsetAB_perm, faceOffsetBA_perm, - matrixAB_perm, matrixBA_perm, signsB_perm, scalesB_perm, false ); - - if ( !done ) { - EdgeEdgeTests( done, minDistSqr, localPointA_perm, localPointB_perm, - otherFaceDimA, otherFaceDimB, featureA, featureB, - hA_perm, hB_perm, faceOffsetAB_perm, faceOffsetBA_perm, - matrixAB_perm, matrixBA_perm, signsA_perm, signsB_perm, - scalesA_perm, scalesB_perm, false ); - } - } - } else { - VertexBFaceATests( done, minDistSqr, localPointA_perm, localPointB_perm, - featureA, featureB, - hA_perm, faceOffsetAB_perm, faceOffsetBA_perm, - matrixAB_perm, matrixBA_perm, signsB_perm, scalesB_perm, true ); - - if ( !done ) { - VertexAFaceBTests( done, minDistSqr, localPointA_perm, localPointB_perm, - featureA, featureB, - hB_perm, faceOffsetAB_perm, faceOffsetBA_perm, - matrixAB_perm, matrixBA_perm, signsA_perm, scalesA_perm, false ); - - if ( !done ) { - EdgeEdgeTests( done, minDistSqr, localPointA_perm, localPointB_perm, - otherFaceDimA, otherFaceDimB, featureA, featureB, - hA_perm, hB_perm, faceOffsetAB_perm, faceOffsetBA_perm, - matrixAB_perm, matrixBA_perm, signsA_perm, signsB_perm, - scalesA_perm, scalesB_perm, false ); - } - } - } - - // convert local points from face-local to box-local coordinate system - - boxPointA.localPoint = Point3( aperm_col * Vector3( localPointA_perm ) ); - boxPointB.localPoint = Point3( bperm_col * Vector3( localPointB_perm ) ); - - // find which features of the boxes are involved. - // the only feature pairs which occur in this function are VF, FV, and EE, even though the - // closest points might actually lie on sub-features, as in a VF contact might be used for - // what's actually a VV contact. this means some feature pairs could possibly seem distinct - // from others, although their contact positions are the same. don't know yet whether this - // matters. - - int sA[3], sB[3]; - - sA[0] = boxPointA.localPoint.getX() > 0.0f; - sA[1] = boxPointA.localPoint.getY() > 0.0f; - sA[2] = boxPointA.localPoint.getZ() > 0.0f; - - sB[0] = boxPointB.localPoint.getX() > 0.0f; - sB[1] = boxPointB.localPoint.getY() > 0.0f; - sB[2] = boxPointB.localPoint.getZ() > 0.0f; - - if ( featureA == F ) { - boxPointA.setFaceFeature( dimA[2], sA[dimA[2]] ); - } else if ( featureA == E ) { - boxPointA.setEdgeFeature( dimA[2], sA[dimA[2]], dimA[otherFaceDimA], sA[dimA[otherFaceDimA]] ); - } else { - boxPointA.setVertexFeature( sA[0], sA[1], sA[2] ); - } - - if ( featureB == F ) { - boxPointB.setFaceFeature( dimB[2], sB[dimB[2]] ); - } else if ( featureB == E ) { - boxPointB.setEdgeFeature( dimB[2], sB[dimB[2]], dimB[otherFaceDimB], sB[dimB[otherFaceDimB]] ); - } else { - boxPointB.setVertexFeature( sB[0], sB[1], sB[2] ); - } - - normal = transformA * axisA; - - if ( maxGap < 0.0f ) { - return (maxGap); - } else { - return (sqrtf( minDistSqr )); - } -} diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.h b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.h deleted file mode 100644 index c58e257c026..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright (C) 2006, 2008 Sony Computer Entertainment Inc. - All rights reserved. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -*/ - - -#ifndef __BOXBOXDISTANCE_H__ -#define __BOXBOXDISTANCE_H__ - - -#include "Box.h" - -using namespace Vectormath::Aos; - -//--------------------------------------------------------------------------- -// boxBoxDistance: -// -// description: -// this computes info that can be used for the collision response of two boxes. when the boxes -// do not overlap, the points are set to the closest points of the boxes, and a positive -// distance between them is returned. if the boxes do overlap, a negative distance is returned -// and the points are set to two points that would touch after the boxes are translated apart. -// the contact normal gives the direction to repel or separate the boxes when they touch or -// overlap (it's being approximated here as one of the 15 "separating axis" directions). -// -// returns: -// positive or negative distance between two boxes. -// -// args: -// Vector3& normal: set to a unit contact normal pointing from box A to box B. -// -// BoxPoint& boxPointA, BoxPoint& boxPointB: -// set to a closest point or point of penetration on each box. -// -// Box boxA, Box boxB: -// boxes, represented as 3 half-widths -// -// const Transform3& transformA, const Transform3& transformB: -// box transformations, in world coordinates -// -// float distanceThreshold: -// the algorithm will exit early if it finds that the boxes are more distant than this -// threshold, and not compute a contact normal or points. if this distance returned -// exceeds the threshold, all the other output data may not have been computed. by -// default, this is set to MAX_FLOAT so it will have no effect. -// -//--------------------------------------------------------------------------- - -float -boxBoxDistance(Vector3& normal, BoxPoint& boxPointA, BoxPoint& boxPointB, - PE_REF(Box) boxA, const Transform3 & transformA, PE_REF(Box) boxB, - const Transform3 & transformB, - float distanceThreshold = FLT_MAX ); - -#endif /* __BOXBOXDISTANCE_H__ */ diff --git a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/readme.txt b/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/readme.txt deleted file mode 100644 index 5b4a907058f..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/readme.txt +++ /dev/null @@ -1 +0,0 @@ -Empty placeholder for future Libspe2 SPU task diff --git a/extern/bullet2/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.cpp b/extern/bullet2/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.cpp deleted file mode 100644 index fe61955572f..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.cpp +++ /dev/null @@ -1,214 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library, Copyright (c) 2007 Erwin Coumans - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -*/ - - -#include "SpuSampleTask.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include "../PlatformDefinitions.h" -#include "../SpuFakeDma.h" -#include "LinearMath/btMinMax.h" - -#ifdef __SPU__ -#include -#else -#include -#define spu_printf printf -#endif - -#define MAX_NUM_BODIES 8192 - -struct SampleTask_LocalStoreMemory -{ - ATTRIBUTE_ALIGNED16(char gLocalRigidBody [sizeof(btRigidBody)+16]); - ATTRIBUTE_ALIGNED16(void* gPointerArray[MAX_NUM_BODIES]); - -}; - - - - -//-- MAIN METHOD -void processSampleTask(void* userPtr, void* lsMemory) -{ - // BT_PROFILE("processSampleTask"); - - SampleTask_LocalStoreMemory* localMemory = (SampleTask_LocalStoreMemory*)lsMemory; - - SpuSampleTaskDesc* taskDescPtr = (SpuSampleTaskDesc*)userPtr; - SpuSampleTaskDesc& taskDesc = *taskDescPtr; - - switch (taskDesc.m_sampleCommand) - { - case CMD_SAMPLE_INTEGRATE_BODIES: - { - btTransform predictedTrans; - btCollisionObject** eaPtr = (btCollisionObject**)taskDesc.m_mainMemoryPtr; - - int batchSize = taskDesc.m_sampleValue; - if (batchSize>MAX_NUM_BODIES) - { - spu_printf("SPU Error: exceed number of bodies, see MAX_NUM_BODIES in SpuSampleTask.cpp\n"); - break; - } - int dmaArraySize = batchSize*sizeof(void*); - - uint64_t ppuArrayAddress = reinterpret_cast(eaPtr); - - // spu_printf("array location is at %llx, batchSize = %d, DMA size = %d\n",ppuArrayAddress,batchSize,dmaArraySize); - - if (dmaArraySize>=16) - { - cellDmaLargeGet((void*)&localMemory->gPointerArray[0], ppuArrayAddress , dmaArraySize, DMA_TAG(1), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(1)); - } else - { - stallingUnalignedDmaSmallGet((void*)&localMemory->gPointerArray[0], ppuArrayAddress , dmaArraySize); - } - - - for ( int i=0;igLocalRigidBody[0]; - void* shortAdd = localMemory->gPointerArray[i]; - uint64_t ppuRigidBodyAddress = reinterpret_cast(shortAdd); - - // spu_printf("cellDmaGet at CMD_SAMPLE_INTEGRATE_BODIES from %llx to %llx\n",ppuRigidBodyAddress,localPtr); - - int dmaBodySize = sizeof(btRigidBody); - - cellDmaGet((void*)localPtr, ppuRigidBodyAddress , dmaBodySize, DMA_TAG(1), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(1)); - - - float timeStep = 1.f/60.f; - - btRigidBody* body = (btRigidBody*) localPtr;//btRigidBody::upcast(colObj); - if (body) - { - if (body->isActive() && (!body->isStaticOrKinematicObject())) - { - body->predictIntegratedTransform(timeStep, predictedTrans); - body->proceedToTransform( predictedTrans); - void* ptr = (void*)localPtr; - // spu_printf("cellDmaLargePut from %llx to LS %llx\n",ptr,ppuRigidBodyAddress); - - cellDmaLargePut(ptr, ppuRigidBodyAddress , dmaBodySize, DMA_TAG(1), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(1)); - - } - } - - } - break; - } - - - case CMD_SAMPLE_PREDICT_MOTION_BODIES: - { - btTransform predictedTrans; - btCollisionObject** eaPtr = (btCollisionObject**)taskDesc.m_mainMemoryPtr; - - int batchSize = taskDesc.m_sampleValue; - int dmaArraySize = batchSize*sizeof(void*); - - if (batchSize>MAX_NUM_BODIES) - { - spu_printf("SPU Error: exceed number of bodies, see MAX_NUM_BODIES in SpuSampleTask.cpp\n"); - break; - } - - uint64_t ppuArrayAddress = reinterpret_cast(eaPtr); - - // spu_printf("array location is at %llx, batchSize = %d, DMA size = %d\n",ppuArrayAddress,batchSize,dmaArraySize); - - if (dmaArraySize>=16) - { - cellDmaLargeGet((void*)&localMemory->gPointerArray[0], ppuArrayAddress , dmaArraySize, DMA_TAG(1), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(1)); - } else - { - stallingUnalignedDmaSmallGet((void*)&localMemory->gPointerArray[0], ppuArrayAddress , dmaArraySize); - } - - - for ( int i=0;igLocalRigidBody[0]; - void* shortAdd = localMemory->gPointerArray[i]; - uint64_t ppuRigidBodyAddress = reinterpret_cast(shortAdd); - - // spu_printf("cellDmaGet at CMD_SAMPLE_INTEGRATE_BODIES from %llx to %llx\n",ppuRigidBodyAddress,localPtr); - - int dmaBodySize = sizeof(btRigidBody); - - cellDmaGet((void*)localPtr, ppuRigidBodyAddress , dmaBodySize, DMA_TAG(1), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(1)); - - - float timeStep = 1.f/60.f; - - btRigidBody* body = (btRigidBody*) localPtr;//btRigidBody::upcast(colObj); - if (body) - { - if (!body->isStaticOrKinematicObject()) - { - if (body->isActive()) - { - body->integrateVelocities( timeStep); - //damping - body->applyDamping(timeStep); - - body->predictIntegratedTransform(timeStep,body->getInterpolationWorldTransform()); - - void* ptr = (void*)localPtr; - cellDmaLargePut(ptr, ppuRigidBodyAddress , dmaBodySize, DMA_TAG(1), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(1)); - } - } - } - - } - break; - } - - - - default: - { - - } - }; -} - - -#if defined(__CELLOS_LV2__) || defined (LIBSPE2) - -ATTRIBUTE_ALIGNED16(SampleTask_LocalStoreMemory gLocalStoreMemory); - -void* createSampleLocalStoreMemory() -{ - return &gLocalStoreMemory; -} -#else -void* createSampleLocalStoreMemory() -{ - return new SampleTask_LocalStoreMemory; -}; - -#endif diff --git a/extern/bullet2/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.h b/extern/bullet2/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.h deleted file mode 100644 index c8ebdfd6232..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library, Copyright (c) 2007 Erwin Coumans - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -*/ - -#ifndef SPU_SAMPLE_TASK_H -#define SPU_SAMPLE_TASK_H - -#include "../PlatformDefinitions.h" -#include "LinearMath/btScalar.h" -#include "LinearMath/btVector3.h" -#include "LinearMath/btMatrix3x3.h" - -#include "LinearMath/btAlignedAllocator.h" - - -enum -{ - CMD_SAMPLE_INTEGRATE_BODIES = 1, - CMD_SAMPLE_PREDICT_MOTION_BODIES -}; - - - -ATTRIBUTE_ALIGNED16(struct) SpuSampleTaskDesc -{ - BT_DECLARE_ALIGNED_ALLOCATOR(); - - uint32_t m_sampleCommand; - uint32_t m_taskId; - - uint64_t m_mainMemoryPtr; - int m_sampleValue; - - -}; - - -void processSampleTask(void* userPtr, void* lsMemory); -void* createSampleLocalStoreMemory(); - - -#endif //SPU_SAMPLE_TASK_H - diff --git a/extern/bullet2/BulletMultiThreaded/SpuSampleTask/readme.txt b/extern/bullet2/BulletMultiThreaded/SpuSampleTask/readme.txt deleted file mode 100644 index 5b4a907058f..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuSampleTask/readme.txt +++ /dev/null @@ -1 +0,0 @@ -Empty placeholder for future Libspe2 SPU task diff --git a/extern/bullet2/BulletMultiThreaded/SpuSampleTaskProcess.cpp b/extern/bullet2/BulletMultiThreaded/SpuSampleTaskProcess.cpp deleted file mode 100644 index 11cb9e7c3f5..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuSampleTaskProcess.cpp +++ /dev/null @@ -1,222 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -//#define __CELLOS_LV2__ 1 - -#define USE_SAMPLE_PROCESS 1 -#ifdef USE_SAMPLE_PROCESS - - -#include "SpuSampleTaskProcess.h" -#include - -#ifdef __SPU__ - - - -void SampleThreadFunc(void* userPtr,void* lsMemory) -{ - //do nothing - printf("hello world\n"); -} - - -void* SamplelsMemoryFunc() -{ - //don't create local store memory, just return 0 - return 0; -} - - -#else - - -#include "btThreadSupportInterface.h" - -//# include "SPUAssert.h" -#include - - - -extern "C" { - extern char SPU_SAMPLE_ELF_SYMBOL[]; -} - - - - - -SpuSampleTaskProcess::SpuSampleTaskProcess(btThreadSupportInterface* threadInterface, int maxNumOutstandingTasks) -:m_threadInterface(threadInterface), -m_maxNumOutstandingTasks(maxNumOutstandingTasks) -{ - - m_taskBusy.resize(m_maxNumOutstandingTasks); - m_spuSampleTaskDesc.resize(m_maxNumOutstandingTasks); - - for (int i = 0; i < m_maxNumOutstandingTasks; i++) - { - m_taskBusy[i] = false; - } - m_numBusyTasks = 0; - m_currentTask = 0; - - m_initialized = false; - - m_threadInterface->startSPU(); - - -} - -SpuSampleTaskProcess::~SpuSampleTaskProcess() -{ - m_threadInterface->stopSPU(); - -} - - - -void SpuSampleTaskProcess::initialize() -{ -#ifdef DEBUG_SPU_TASK_SCHEDULING - printf("SpuSampleTaskProcess::initialize()\n"); -#endif //DEBUG_SPU_TASK_SCHEDULING - - for (int i = 0; i < m_maxNumOutstandingTasks; i++) - { - m_taskBusy[i] = false; - } - m_numBusyTasks = 0; - m_currentTask = 0; - m_initialized = true; - -} - - -void SpuSampleTaskProcess::issueTask(void* sampleMainMemPtr,int sampleValue,int sampleCommand) -{ - -#ifdef DEBUG_SPU_TASK_SCHEDULING - printf("SpuSampleTaskProcess::issueTask (m_currentTask= %d\)n", m_currentTask); -#endif //DEBUG_SPU_TASK_SCHEDULING - - m_taskBusy[m_currentTask] = true; - m_numBusyTasks++; - - SpuSampleTaskDesc& taskDesc = m_spuSampleTaskDesc[m_currentTask]; - { - // send task description in event message - // no error checking here... - // but, currently, event queue can be no larger than NUM_WORKUNIT_TASKS. - - taskDesc.m_mainMemoryPtr = reinterpret_cast(sampleMainMemPtr); - taskDesc.m_sampleValue = sampleValue; - taskDesc.m_sampleCommand = sampleCommand; - - //some bookkeeping to recognize finished tasks - taskDesc.m_taskId = m_currentTask; - } - - - m_threadInterface->sendRequest(1, (ppu_address_t) &taskDesc, m_currentTask); - - // if all tasks busy, wait for spu event to clear the task. - - if (m_numBusyTasks >= m_maxNumOutstandingTasks) - { - unsigned int taskId; - unsigned int outputSize; - - for (int i=0;iwaitForResponse(&taskId, &outputSize); - - //printf("PPU: after issue, received event: %u %d\n", taskId, outputSize); - - postProcess(taskId, outputSize); - - m_taskBusy[taskId] = false; - - m_numBusyTasks--; - } - - // find new task buffer - for (int i = 0; i < m_maxNumOutstandingTasks; i++) - { - if (!m_taskBusy[i]) - { - m_currentTask = i; - break; - } - } -} - - -///Optional PPU-size post processing for each task -void SpuSampleTaskProcess::postProcess(int taskId, int outputSize) -{ - -} - - -void SpuSampleTaskProcess::flush() -{ -#ifdef DEBUG_SPU_TASK_SCHEDULING - printf("\nSpuCollisionTaskProcess::flush()\n"); -#endif //DEBUG_SPU_TASK_SCHEDULING - - - // all tasks are issued, wait for all tasks to be complete - while(m_numBusyTasks > 0) - { -// Consolidating SPU code - unsigned int taskId; - unsigned int outputSize; - - for (int i=0;iwaitForResponse(&taskId, &outputSize); - } - - //printf("PPU: flushing, received event: %u %d\n", taskId, outputSize); - - postProcess(taskId, outputSize); - - m_taskBusy[taskId] = false; - - m_numBusyTasks--; - } - - -} - -#endif - - -#endif //USE_SAMPLE_PROCESS diff --git a/extern/bullet2/BulletMultiThreaded/SpuSampleTaskProcess.h b/extern/bullet2/BulletMultiThreaded/SpuSampleTaskProcess.h deleted file mode 100644 index d733a9a8528..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuSampleTaskProcess.h +++ /dev/null @@ -1,153 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef SPU_SAMPLE_TASK_PROCESS_H -#define SPU_SAMPLE_TASK_PROCESS_H - -#include - - -#include "PlatformDefinitions.h" - -#include - -#include "LinearMath/btAlignedObjectArray.h" - - -#include "SpuSampleTask/SpuSampleTask.h" - - -//just add your commands here, try to keep them globally unique for debugging purposes -#define CMD_SAMPLE_TASK_COMMAND 10 - - - -/// SpuSampleTaskProcess handles SPU processing of collision pairs. -/// When PPU issues a task, it will look for completed task buffers -/// PPU will do postprocessing, dependent on workunit output (not likely) -class SpuSampleTaskProcess -{ - // track task buffers that are being used, and total busy tasks - btAlignedObjectArray m_taskBusy; - btAlignedObjectArraym_spuSampleTaskDesc; - - int m_numBusyTasks; - - // the current task and the current entry to insert a new work unit - int m_currentTask; - - bool m_initialized; - - void postProcess(int taskId, int outputSize); - - class btThreadSupportInterface* m_threadInterface; - - int m_maxNumOutstandingTasks; - - - -public: - SpuSampleTaskProcess(btThreadSupportInterface* threadInterface, int maxNumOutstandingTasks); - - ~SpuSampleTaskProcess(); - - ///call initialize in the beginning of the frame, before addCollisionPairToTask - void initialize(); - - void issueTask(void* sampleMainMemPtr,int sampleValue,int sampleCommand); - - ///call flush to submit potential outstanding work to SPUs and wait for all involved SPUs to be finished - void flush(); -}; - - -#if defined(USE_LIBSPE2) && defined(__SPU__) -////////////////////MAIN///////////////////////////// -#include "../SpuLibspe2Support.h" -#include -#include -#include - -void * SamplelsMemoryFunc(); -void SampleThreadFunc(void* userPtr,void* lsMemory); - -//#define DEBUG_LIBSPE2_MAINLOOP - -int main(unsigned long long speid, addr64 argp, addr64 envp) -{ - printf("SPU is up \n"); - - ATTRIBUTE_ALIGNED128(btSpuStatus status); - ATTRIBUTE_ALIGNED16( SpuSampleTaskDesc taskDesc ) ; - unsigned int received_message = Spu_Mailbox_Event_Nothing; - bool shutdown = false; - - cellDmaGet(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(3)); - - status.m_status = Spu_Status_Free; - status.m_lsMemory.p = SamplelsMemoryFunc(); - - cellDmaLargePut(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(3)); - - - while (!shutdown) - { - received_message = spu_read_in_mbox(); - - - - switch(received_message) - { - case Spu_Mailbox_Event_Shutdown: - shutdown = true; - break; - case Spu_Mailbox_Event_Task: - // refresh the status -#ifdef DEBUG_LIBSPE2_MAINLOOP - printf("SPU recieved Task \n"); -#endif //DEBUG_LIBSPE2_MAINLOOP - cellDmaGet(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(3)); - - btAssert(status.m_status==Spu_Status_Occupied); - - cellDmaGet(&taskDesc, status.m_taskDesc.p, sizeof(SpuSampleTaskDesc), DMA_TAG(3), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(3)); - - SampleThreadFunc((void*)&taskDesc, reinterpret_cast (taskDesc.m_mainMemoryPtr) ); - break; - case Spu_Mailbox_Event_Nothing: - default: - break; - } - - // set to status free and wait for next task - status.m_status = Spu_Status_Free; - cellDmaLargePut(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0); - cellDmaWaitTagStatusAll(DMA_MASK(3)); - - - } - return 0; -} -////////////////////////////////////////////////////// -#endif - - - -#endif // SPU_SAMPLE_TASK_PROCESS_H - diff --git a/extern/bullet2/BulletMultiThreaded/SpuSync.h b/extern/bullet2/BulletMultiThreaded/SpuSync.h deleted file mode 100644 index b90d0fcbfd4..00000000000 --- a/extern/bullet2/BulletMultiThreaded/SpuSync.h +++ /dev/null @@ -1,148 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2007 Starbreeze Studios - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -Written by: Marten Svanfeldt -*/ - -#ifndef SPU_SYNC_H -#define SPU_SYNC_H - - -#include "PlatformDefinitions.h" - - -#if defined(WIN32) - -#define WIN32_LEAN_AND_MEAN -#ifdef _XBOX -#include -#else -#include -#endif - -///The btSpinlock is a structure to allow multi-platform synchronization. This allows to port the SPU tasks to other platforms. -class btSpinlock -{ -public: - //typedef volatile LONG SpinVariable; - typedef CRITICAL_SECTION SpinVariable; - - btSpinlock (SpinVariable* var) - : spinVariable (var) - {} - - void Init () - { - //*spinVariable = 0; - InitializeCriticalSection(spinVariable); - } - - void Lock () - { - EnterCriticalSection(spinVariable); - } - - void Unlock () - { - LeaveCriticalSection(spinVariable); - } - -private: - SpinVariable* spinVariable; -}; - - -#elif defined (__CELLOS_LV2__) - -//#include -#include - -///The btSpinlock is a structure to allow multi-platform synchronization. This allows to port the SPU tasks to other platforms. -class btSpinlock -{ -public: - typedef CellSyncMutex SpinVariable; - - btSpinlock (SpinVariable* var) - : spinVariable (var) - {} - - void Init () - { -#ifndef __SPU__ - //*spinVariable = 1; - cellSyncMutexInitialize(spinVariable); -#endif - } - - - - void Lock () - { -#ifdef __SPU__ - // lock semaphore - /*while (cellAtomicTestAndDecr32(atomic_buf, (uint64_t)spinVariable) == 0) - { - - };*/ - cellSyncMutexLock((uint64_t)spinVariable); -#endif - } - - void Unlock () - { -#ifdef __SPU__ - //cellAtomicIncr32(atomic_buf, (uint64_t)spinVariable); - cellSyncMutexUnlock((uint64_t)spinVariable); -#endif - } - - -private: - SpinVariable* spinVariable; - ATTRIBUTE_ALIGNED128(uint32_t atomic_buf[32]); -}; - -#else -//create a dummy implementation (without any locking) useful for serial processing -class btSpinlock -{ -public: - typedef int SpinVariable; - - btSpinlock (SpinVariable* var) - : spinVariable (var) - {} - - void Init () - { - } - - void Lock () - { - } - - void Unlock () - { - } - -private: - SpinVariable* spinVariable; -}; - - -#endif - - -#endif diff --git a/extern/bullet2/BulletMultiThreaded/Win32ThreadSupport.cpp b/extern/bullet2/BulletMultiThreaded/Win32ThreadSupport.cpp deleted file mode 100644 index 42b60a460e0..00000000000 --- a/extern/bullet2/BulletMultiThreaded/Win32ThreadSupport.cpp +++ /dev/null @@ -1,262 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "Win32ThreadSupport.h" - -#ifdef USE_WIN32_THREADING - -#include - -#include "SpuCollisionTaskProcess.h" - -#include "SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h" - - - -///The number of threads should be equal to the number of available cores -///@todo: each worker should be linked to a single core, using SetThreadIdealProcessor. - -///Win32ThreadSupport helps to initialize/shutdown libspe2, start/stop SPU tasks and communication -///Setup and initialize SPU/CELL/Libspe2 -Win32ThreadSupport::Win32ThreadSupport(const Win32ThreadConstructionInfo & threadConstructionInfo) -{ - m_maxNumTasks = threadConstructionInfo.m_numThreads; - startThreads(threadConstructionInfo); -} - -///cleanup/shutdown Libspe2 -Win32ThreadSupport::~Win32ThreadSupport() -{ - stopSPU(); -} - - - - -#include - -DWORD WINAPI Thread_no_1( LPVOID lpParam ) -{ - - Win32ThreadSupport::btSpuStatus* status = (Win32ThreadSupport::btSpuStatus*)lpParam; - - - while (1) - { - WaitForSingleObject(status->m_eventStartHandle,INFINITE); - - void* userPtr = status->m_userPtr; - - if (userPtr) - { - btAssert(status->m_status); - status->m_userThreadFunc(userPtr,status->m_lsMemory); - status->m_status = 2; - SetEvent(status->m_eventCompletetHandle); - } else - { - //exit Thread - status->m_status = 3; - SetEvent(status->m_eventCompletetHandle); - printf("Thread with taskId %i with handle %p exiting\n",status->m_taskId, status->m_threadHandle); - break; - } - - } - - printf("Thread TERMINATED\n"); - return 0; - -} - -///send messages to SPUs -void Win32ThreadSupport::sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t taskId) -{ - /// gMidphaseSPU.sendRequest(CMD_GATHER_AND_PROCESS_PAIRLIST, (ppu_address_t) &taskDesc); - - ///we should spawn an SPU task here, and in 'waitForResponse' it should wait for response of the (one of) the first tasks that finished - - - - switch (uiCommand) - { - case CMD_GATHER_AND_PROCESS_PAIRLIST: - { - - -//#define SINGLE_THREADED 1 -#ifdef SINGLE_THREADED - - btSpuStatus& spuStatus = m_activeSpuStatus[0]; - spuStatus.m_userPtr=(void*)uiArgument0; - spuStatus.m_userThreadFunc(spuStatus.m_userPtr,spuStatus.m_lsMemory); - HANDLE handle =0; -#else - - - btSpuStatus& spuStatus = m_activeSpuStatus[taskId]; - btAssert(taskId>=0); - btAssert(int(taskId) 1); - spuStatus.m_status = 0; - - ///need to find an active spu - btAssert(last>=0); - -#else - last=0; - btSpuStatus& spuStatus = m_activeSpuStatus[last]; -#endif //SINGLE_THREADED - - - - *puiArgument0 = spuStatus.m_taskId; - *puiArgument1 = spuStatus.m_status; - - -} - - - -void Win32ThreadSupport::startThreads(const Win32ThreadConstructionInfo& threadConstructionInfo) -{ - - m_activeSpuStatus.resize(threadConstructionInfo.m_numThreads); - m_completeHandles.resize(threadConstructionInfo.m_numThreads); - - m_maxNumTasks = threadConstructionInfo.m_numThreads; - - for (int i=0;i0) - { - WaitForSingleObject(spuStatus.m_eventCompletetHandle, INFINITE); - } - - - spuStatus.m_userPtr = 0; - SetEvent(spuStatus.m_eventStartHandle); - WaitForSingleObject(spuStatus.m_eventCompletetHandle, INFINITE); - - CloseHandle(spuStatus.m_eventCompletetHandle); - CloseHandle(spuStatus.m_eventStartHandle); - CloseHandle(spuStatus.m_threadHandle); - } - - m_activeSpuStatus.clear(); - m_completeHandles.clear(); - -} - -#endif //USE_WIN32_THREADING diff --git a/extern/bullet2/BulletMultiThreaded/Win32ThreadSupport.h b/extern/bullet2/BulletMultiThreaded/Win32ThreadSupport.h deleted file mode 100644 index c61ad901c07..00000000000 --- a/extern/bullet2/BulletMultiThreaded/Win32ThreadSupport.h +++ /dev/null @@ -1,132 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "LinearMath/btScalar.h" -#include "PlatformDefinitions.h" - -#ifdef USE_WIN32_THREADING //platform specific defines are defined in PlatformDefinitions.h - -#ifndef WIN32_THREAD_SUPPORT_H -#define WIN32_THREAD_SUPPORT_H - -#include "LinearMath/btAlignedObjectArray.h" - -#include "btThreadSupportInterface.h" - - -typedef void (*Win32ThreadFunc)(void* userPtr,void* lsMemory); -typedef void* (*Win32lsMemorySetupFunc)(); - - - - - - -///Win32ThreadSupport helps to initialize/shutdown libspe2, start/stop SPU tasks and communication -class Win32ThreadSupport : public btThreadSupportInterface -{ -public: - ///placeholder, until libspe2 support is there - struct btSpuStatus - { - uint32_t m_taskId; - uint32_t m_commandId; - uint32_t m_status; - - Win32ThreadFunc m_userThreadFunc; - void* m_userPtr; //for taskDesc etc - void* m_lsMemory; //initialized using Win32LocalStoreMemorySetupFunc - - void* m_threadHandle; //this one is calling 'Win32ThreadFunc' - - void* m_eventStartHandle; - char m_eventStartHandleName[32]; - - void* m_eventCompletetHandle; - char m_eventCompletetHandleName[32]; - - - }; -private: - - btAlignedObjectArray m_activeSpuStatus; - btAlignedObjectArray m_completeHandles; - - int m_maxNumTasks; -public: - ///Setup and initialize SPU/CELL/Libspe2 - - struct Win32ThreadConstructionInfo - { - Win32ThreadConstructionInfo(char* uniqueName, - Win32ThreadFunc userThreadFunc, - Win32lsMemorySetupFunc lsMemoryFunc, - int numThreads=1, - int threadStackSize=65535 - ) - :m_uniqueName(uniqueName), - m_userThreadFunc(userThreadFunc), - m_lsMemoryFunc(lsMemoryFunc), - m_numThreads(numThreads), - m_threadStackSize(threadStackSize) - { - - } - - char* m_uniqueName; - Win32ThreadFunc m_userThreadFunc; - Win32lsMemorySetupFunc m_lsMemoryFunc; - int m_numThreads; - int m_threadStackSize; - - }; - - - - Win32ThreadSupport(const Win32ThreadConstructionInfo& threadConstructionInfo); - -///cleanup/shutdown Libspe2 - virtual ~Win32ThreadSupport(); - - void startThreads(const Win32ThreadConstructionInfo& threadInfo); - - -///send messages to SPUs - virtual void sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t uiArgument1); - -///check for messages from SPUs - virtual void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1); - -///start the spus (can be called at the beginning of each frame, to make sure that the right SPU program is loaded) - virtual void startSPU(); - -///tell the task scheduler we are done with the SPU tasks - virtual void stopSPU(); - - virtual void setNumTasks(int numTasks) - { - m_maxNumTasks = numTasks; - } - - virtual int getNumTasks() const - { - return m_maxNumTasks; - } - -}; - -#endif //WIN32_THREAD_SUPPORT_H - -#endif //USE_WIN32_THREADING diff --git a/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphase.cpp b/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphase.cpp deleted file mode 100644 index 84a5e59f0af..00000000000 --- a/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphase.cpp +++ /dev/null @@ -1,590 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org -Copyright (C) 2006, 2009 Sony Computer Entertainment Inc. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -///The 3 following lines include the CPU implementation of the kernels, keep them in this order. -#include "BulletMultiThreaded/btGpuDefines.h" -#include "BulletMultiThreaded/btGpuUtilsSharedDefs.h" -#include "BulletMultiThreaded/btGpuUtilsSharedCode.h" - - - -#include "LinearMath/btAlignedAllocator.h" -#include "LinearMath/btQuickprof.h" -#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h" - - - -#include "btGpuDefines.h" -#include "btGpuUtilsSharedDefs.h" - -#include "btGpu3DGridBroadphaseSharedDefs.h" - -#include "btGpu3DGridBroadphase.h" -#include //for memset - - -#include - - - -static bt3DGridBroadphaseParams s3DGridBroadphaseParams; - - - -btGpu3DGridBroadphase::btGpu3DGridBroadphase( const btVector3& worldAabbMin,const btVector3& worldAabbMax, - int gridSizeX, int gridSizeY, int gridSizeZ, - int maxSmallProxies, int maxLargeProxies, int maxPairsPerBody, - int maxBodiesPerCell, - btScalar cellFactorAABB) : - btSimpleBroadphase(maxSmallProxies, -// new (btAlignedAlloc(sizeof(btSortedOverlappingPairCache),16)) btSortedOverlappingPairCache), - new (btAlignedAlloc(sizeof(btHashedOverlappingPairCache),16)) btHashedOverlappingPairCache), - m_bInitialized(false), - m_numBodies(0) -{ - _initialize(worldAabbMin, worldAabbMax, gridSizeX, gridSizeY, gridSizeZ, - maxSmallProxies, maxLargeProxies, maxPairsPerBody, - maxBodiesPerCell, cellFactorAABB); -} - - - -btGpu3DGridBroadphase::btGpu3DGridBroadphase( btOverlappingPairCache* overlappingPairCache, - const btVector3& worldAabbMin,const btVector3& worldAabbMax, - int gridSizeX, int gridSizeY, int gridSizeZ, - int maxSmallProxies, int maxLargeProxies, int maxPairsPerBody, - int maxBodiesPerCell, - btScalar cellFactorAABB) : - btSimpleBroadphase(maxSmallProxies, overlappingPairCache), - m_bInitialized(false), - m_numBodies(0) -{ - _initialize(worldAabbMin, worldAabbMax, gridSizeX, gridSizeY, gridSizeZ, - maxSmallProxies, maxLargeProxies, maxPairsPerBody, - maxBodiesPerCell, cellFactorAABB); -} - - - -btGpu3DGridBroadphase::~btGpu3DGridBroadphase() -{ - //btSimpleBroadphase will free memory of btSortedOverlappingPairCache, because m_ownsPairCache - assert(m_bInitialized); - _finalize(); -} - - - -void btGpu3DGridBroadphase::_initialize( const btVector3& worldAabbMin,const btVector3& worldAabbMax, - int gridSizeX, int gridSizeY, int gridSizeZ, - int maxSmallProxies, int maxLargeProxies, int maxPairsPerBody, - int maxBodiesPerCell, - btScalar cellFactorAABB) -{ - // set various paramerers - m_ownsPairCache = true; - m_params.m_gridSizeX = gridSizeX; - m_params.m_gridSizeY = gridSizeY; - m_params.m_gridSizeZ = gridSizeZ; - m_params.m_numCells = m_params.m_gridSizeX * m_params.m_gridSizeY * m_params.m_gridSizeZ; - btVector3 w_org = worldAabbMin; - m_params.m_worldOriginX = w_org.getX(); - m_params.m_worldOriginY = w_org.getY(); - m_params.m_worldOriginZ = w_org.getZ(); - btVector3 w_size = worldAabbMax - worldAabbMin; - m_params.m_cellSizeX = w_size.getX() / m_params.m_gridSizeX; - m_params.m_cellSizeY = w_size.getY() / m_params.m_gridSizeY; - m_params.m_cellSizeZ = w_size.getZ() / m_params.m_gridSizeZ; - m_maxRadius = btMin(btMin(m_params.m_cellSizeX, m_params.m_cellSizeY), m_params.m_cellSizeZ); - m_maxRadius *= btScalar(0.5f); - m_params.m_numBodies = m_numBodies; - m_params.m_maxBodiesPerCell = maxBodiesPerCell; - - m_numLargeHandles = 0; - m_maxLargeHandles = maxLargeProxies; - - m_maxPairsPerBody = maxPairsPerBody; - - m_cellFactorAABB = cellFactorAABB; - - m_LastLargeHandleIndex = -1; - - assert(!m_bInitialized); - // allocate host storage - m_hBodiesHash = new unsigned int[m_maxHandles * 2]; - memset(m_hBodiesHash, 0x00, m_maxHandles*2*sizeof(unsigned int)); - - m_hCellStart = new unsigned int[m_params.m_numCells]; - memset(m_hCellStart, 0x00, m_params.m_numCells * sizeof(unsigned int)); - - m_hPairBuffStartCurr = new unsigned int[m_maxHandles * 2 + 2]; - // --------------- for now, init with m_maxPairsPerBody for each body - m_hPairBuffStartCurr[0] = 0; - m_hPairBuffStartCurr[1] = 0; - for(int i = 1; i <= m_maxHandles; i++) - { - m_hPairBuffStartCurr[i * 2] = m_hPairBuffStartCurr[(i-1) * 2] + m_maxPairsPerBody; - m_hPairBuffStartCurr[i * 2 + 1] = 0; - } - //---------------- - unsigned int numAABB = m_maxHandles + m_maxLargeHandles; - m_hAABB = new bt3DGrid3F1U[numAABB * 2]; // AABB Min & Max - - m_hPairBuff = new unsigned int[m_maxHandles * m_maxPairsPerBody]; - memset(m_hPairBuff, 0x00, m_maxHandles * m_maxPairsPerBody * sizeof(unsigned int)); // needed? - - m_hPairScan = new unsigned int[m_maxHandles + 1]; - - m_hPairOut = new unsigned int[m_maxHandles * m_maxPairsPerBody]; - -// large proxies - - // allocate handles buffer and put all handles on free list - m_pLargeHandlesRawPtr = btAlignedAlloc(sizeof(btSimpleBroadphaseProxy) * m_maxLargeHandles, 16); - m_pLargeHandles = new(m_pLargeHandlesRawPtr) btSimpleBroadphaseProxy[m_maxLargeHandles]; - m_firstFreeLargeHandle = 0; - { - for (int i = m_firstFreeLargeHandle; i < m_maxLargeHandles; i++) - { - m_pLargeHandles[i].SetNextFree(i + 1); - m_pLargeHandles[i].m_uniqueId = m_maxHandles+2+i; - } - m_pLargeHandles[m_maxLargeHandles - 1].SetNextFree(0); - } - -// debug data - m_numPairsAdded = 0; - m_numOverflows = 0; - - m_bInitialized = true; -} - - - -void btGpu3DGridBroadphase::_finalize() -{ - assert(m_bInitialized); - delete [] m_hBodiesHash; - delete [] m_hCellStart; - delete [] m_hPairBuffStartCurr; - delete [] m_hAABB; - delete [] m_hPairBuff; - delete [] m_hPairScan; - delete [] m_hPairOut; - btAlignedFree(m_pLargeHandlesRawPtr); - m_bInitialized = false; -} - - - -void btGpu3DGridBroadphase::calculateOverlappingPairs(btDispatcher* dispatcher) -{ - if(m_numHandles <= 0) - { - BT_PROFILE("addLarge2LargePairsToCache"); - addLarge2LargePairsToCache(dispatcher); - return; - } - // update constants - setParameters(&m_params); - // prepare AABB array - prepareAABB(); - // calculate hash - calcHashAABB(); - // sort bodies based on hash - sortHash(); - // find start of each cell - findCellStart(); - // findOverlappingPairs (small/small) - findOverlappingPairs(); - // findOverlappingPairs (small/large) - findPairsLarge(); - // add pairs to CPU cache - computePairCacheChanges(); - scanOverlappingPairBuff(); - squeezeOverlappingPairBuff(); - addPairsToCache(dispatcher); - // find and add large/large pairs to CPU cache - addLarge2LargePairsToCache(dispatcher); - return; -} - - - -void btGpu3DGridBroadphase::addPairsToCache(btDispatcher* dispatcher) -{ - m_numPairsAdded = 0; - m_numPairsRemoved = 0; - for(int i = 0; i < m_numHandles; i++) - { - unsigned int num = m_hPairScan[i+1] - m_hPairScan[i]; - if(!num) - { - continue; - } - unsigned int* pInp = m_hPairOut + m_hPairScan[i]; - unsigned int index0 = m_hAABB[i * 2].uw; - btSimpleBroadphaseProxy* proxy0 = &m_pHandles[index0]; - for(unsigned int j = 0; j < num; j++) - { - unsigned int indx1_s = pInp[j]; - unsigned int index1 = indx1_s & (~BT_3DGRID_PAIR_ANY_FLG); - btSimpleBroadphaseProxy* proxy1; - if(index1 < (unsigned int)m_maxHandles) - { - proxy1 = &m_pHandles[index1]; - } - else - { - index1 -= m_maxHandles; - btAssert((index1 >= 0) && (index1 < (unsigned int)m_maxLargeHandles)); - proxy1 = &m_pLargeHandles[index1]; - } - if(indx1_s & BT_3DGRID_PAIR_NEW_FLG) - { - m_pairCache->addOverlappingPair(proxy0,proxy1); - m_numPairsAdded++; - } - else - { - m_pairCache->removeOverlappingPair(proxy0,proxy1,dispatcher); - m_numPairsRemoved++; - } - } - } -} - - - -btBroadphaseProxy* btGpu3DGridBroadphase::createProxy( const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr ,short int collisionFilterGroup,short int collisionFilterMask, btDispatcher* dispatcher,void* multiSapProxy) -{ - btBroadphaseProxy* proxy; - bool bIsLarge = isLargeProxy(aabbMin, aabbMax); - if(bIsLarge) - { - if (m_numLargeHandles >= m_maxLargeHandles) - { - ///you have to increase the cell size, so 'large' proxies become 'small' proxies (fitting a cell) - btAssert(0); - return 0; //should never happen, but don't let the game crash ;-) - } - btAssert((aabbMin[0]<= aabbMax[0]) && (aabbMin[1]<= aabbMax[1]) && (aabbMin[2]<= aabbMax[2])); - int newHandleIndex = allocLargeHandle(); - proxy = new (&m_pLargeHandles[newHandleIndex])btSimpleBroadphaseProxy(aabbMin,aabbMax,shapeType,userPtr,collisionFilterGroup,collisionFilterMask,multiSapProxy); - } - else - { - proxy = btSimpleBroadphase::createProxy(aabbMin, aabbMax, shapeType, userPtr, collisionFilterGroup, collisionFilterMask, dispatcher, multiSapProxy); - } - return proxy; -} - - - -void btGpu3DGridBroadphase::destroyProxy(btBroadphaseProxy* proxy, btDispatcher* dispatcher) -{ - bool bIsLarge = isLargeProxy(proxy); - if(bIsLarge) - { - - btSimpleBroadphaseProxy* proxy0 = static_cast(proxy); - freeLargeHandle(proxy0); - m_pairCache->removeOverlappingPairsContainingProxy(proxy,dispatcher); - } - else - { - btSimpleBroadphase::destroyProxy(proxy, dispatcher); - } - return; -} - - - -void btGpu3DGridBroadphase::resetPool(btDispatcher* dispatcher) -{ - m_hPairBuffStartCurr[0] = 0; - m_hPairBuffStartCurr[1] = 0; - for(int i = 1; i <= m_maxHandles; i++) - { - m_hPairBuffStartCurr[i * 2] = m_hPairBuffStartCurr[(i-1) * 2] + m_maxPairsPerBody; - m_hPairBuffStartCurr[i * 2 + 1] = 0; - } -} - - - -bool btGpu3DGridBroadphase::isLargeProxy(const btVector3& aabbMin, const btVector3& aabbMax) -{ - btVector3 diag = aabbMax - aabbMin; - - ///use the bounding sphere radius of this bounding box, to include rotation - btScalar radius = diag.length() * btScalar(0.5f); - radius *= m_cellFactorAABB; // user-defined factor - - return (radius > m_maxRadius); -} - - - -bool btGpu3DGridBroadphase::isLargeProxy(btBroadphaseProxy* proxy) -{ - return (proxy->getUid() >= (m_maxHandles+2)); -} - - - -void btGpu3DGridBroadphase::addLarge2LargePairsToCache(btDispatcher* dispatcher) -{ - int i,j; - if (m_numLargeHandles <= 0) - { - return; - } - int new_largest_index = -1; - for(i = 0; i <= m_LastLargeHandleIndex; i++) - { - btSimpleBroadphaseProxy* proxy0 = &m_pLargeHandles[i]; - if(!proxy0->m_clientObject) - { - continue; - } - new_largest_index = i; - for(j = i + 1; j <= m_LastLargeHandleIndex; j++) - { - btSimpleBroadphaseProxy* proxy1 = &m_pLargeHandles[j]; - if(!proxy1->m_clientObject) - { - continue; - } - btAssert(proxy0 != proxy1); - btSimpleBroadphaseProxy* p0 = getSimpleProxyFromProxy(proxy0); - btSimpleBroadphaseProxy* p1 = getSimpleProxyFromProxy(proxy1); - if(aabbOverlap(p0,p1)) - { - if (!m_pairCache->findPair(proxy0,proxy1)) - { - m_pairCache->addOverlappingPair(proxy0,proxy1); - } - } - else - { - if(m_pairCache->findPair(proxy0,proxy1)) - { - m_pairCache->removeOverlappingPair(proxy0,proxy1,dispatcher); - } - } - } - } - m_LastLargeHandleIndex = new_largest_index; - return; -} - - - -void btGpu3DGridBroadphase::rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback) -{ - btSimpleBroadphase::rayTest(rayFrom, rayTo, rayCallback); - for (int i=0; i <= m_LastLargeHandleIndex; i++) - { - btSimpleBroadphaseProxy* proxy = &m_pLargeHandles[i]; - if(!proxy->m_clientObject) - { - continue; - } - rayCallback.process(proxy); - } -} - - - -// -// overrides for CPU version -// - - - -void btGpu3DGridBroadphase::prepareAABB() -{ - BT_PROFILE("prepareAABB"); - bt3DGrid3F1U* pBB = m_hAABB; - int i; - int new_largest_index = -1; - unsigned int num_small = 0; - for(i = 0; i <= m_LastHandleIndex; i++) - { - btSimpleBroadphaseProxy* proxy0 = &m_pHandles[i]; - if(!proxy0->m_clientObject) - { - continue; - } - new_largest_index = i; - pBB->fx = proxy0->m_aabbMin.getX(); - pBB->fy = proxy0->m_aabbMin.getY(); - pBB->fz = proxy0->m_aabbMin.getZ(); - pBB->uw = i; - pBB++; - pBB->fx = proxy0->m_aabbMax.getX(); - pBB->fy = proxy0->m_aabbMax.getY(); - pBB->fz = proxy0->m_aabbMax.getZ(); - pBB->uw = num_small; - pBB++; - num_small++; - } - m_LastHandleIndex = new_largest_index; - new_largest_index = -1; - unsigned int num_large = 0; - for(i = 0; i <= m_LastLargeHandleIndex; i++) - { - btSimpleBroadphaseProxy* proxy0 = &m_pLargeHandles[i]; - if(!proxy0->m_clientObject) - { - continue; - } - new_largest_index = i; - pBB->fx = proxy0->m_aabbMin.getX(); - pBB->fy = proxy0->m_aabbMin.getY(); - pBB->fz = proxy0->m_aabbMin.getZ(); - pBB->uw = i + m_maxHandles; - pBB++; - pBB->fx = proxy0->m_aabbMax.getX(); - pBB->fy = proxy0->m_aabbMax.getY(); - pBB->fz = proxy0->m_aabbMax.getZ(); - pBB->uw = num_large + m_maxHandles; - pBB++; - num_large++; - } - m_LastLargeHandleIndex = new_largest_index; - // paranoid checks - btAssert(num_small == m_numHandles); - btAssert(num_large == m_numLargeHandles); - return; -} - - - -void btGpu3DGridBroadphase::setParameters(bt3DGridBroadphaseParams* hostParams) -{ - s3DGridBroadphaseParams = *hostParams; - return; -} - - - -void btGpu3DGridBroadphase::calcHashAABB() -{ - BT_PROFILE("bt3DGrid_calcHashAABB"); - btGpu_calcHashAABB(m_hAABB, m_hBodiesHash, m_numHandles); - return; -} - - - -void btGpu3DGridBroadphase::sortHash() -{ - class bt3DGridHashKey - { - public: - unsigned int hash; - unsigned int index; - void quickSort(bt3DGridHashKey* pData, int lo, int hi) - { - int i=lo, j=hi; - bt3DGridHashKey x = pData[(lo+hi)/2]; - do - { - while(pData[i].hash > x.hash) i++; - while(x.hash > pData[j].hash) j--; - if(i <= j) - { - bt3DGridHashKey t = pData[i]; - pData[i] = pData[j]; - pData[j] = t; - i++; j--; - } - } while(i <= j); - if(lo < j) pData->quickSort(pData, lo, j); - if(i < hi) pData->quickSort(pData, i, hi); - } - }; - BT_PROFILE("bt3DGrid_sortHash"); - bt3DGridHashKey* pHash = (bt3DGridHashKey*)m_hBodiesHash; - pHash->quickSort(pHash, 0, m_numHandles - 1); - return; -} - - - -void btGpu3DGridBroadphase::findCellStart() -{ - BT_PROFILE("bt3DGrid_findCellStart"); - btGpu_findCellStart(m_hBodiesHash, m_hCellStart, m_numHandles, m_params.m_numCells); - return; -} - - - -void btGpu3DGridBroadphase::findOverlappingPairs() -{ - BT_PROFILE("bt3DGrid_findOverlappingPairs"); - btGpu_findOverlappingPairs(m_hAABB, m_hBodiesHash, m_hCellStart, m_hPairBuff, m_hPairBuffStartCurr, m_numHandles); - return; -} - - - -void btGpu3DGridBroadphase::findPairsLarge() -{ - BT_PROFILE("bt3DGrid_findPairsLarge"); - btGpu_findPairsLarge(m_hAABB, m_hBodiesHash, m_hCellStart, m_hPairBuff, m_hPairBuffStartCurr, m_numHandles, m_numLargeHandles); - return; -} - - - -void btGpu3DGridBroadphase::computePairCacheChanges() -{ - BT_PROFILE("bt3DGrid_computePairCacheChanges"); - btGpu_computePairCacheChanges(m_hPairBuff, m_hPairBuffStartCurr, m_hPairScan, m_hAABB, m_numHandles); - return; -} - - - -void btGpu3DGridBroadphase::scanOverlappingPairBuff() -{ - BT_PROFILE("bt3DGrid_scanOverlappingPairBuff"); - m_hPairScan[0] = 0; - for(int i = 1; i <= m_numHandles; i++) - { - unsigned int delta = m_hPairScan[i]; - m_hPairScan[i] = m_hPairScan[i-1] + delta; - } - return; -} - - - -void btGpu3DGridBroadphase::squeezeOverlappingPairBuff() -{ - BT_PROFILE("bt3DGrid_squeezeOverlappingPairBuff"); - btGpu_squeezeOverlappingPairBuff(m_hPairBuff, m_hPairBuffStartCurr, m_hPairScan, m_hPairOut, m_hAABB, m_numHandles); - return; -} - - - -#include "btGpu3DGridBroadphaseSharedCode.h" - - diff --git a/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphase.h b/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphase.h deleted file mode 100644 index 1d49a0557ae..00000000000 --- a/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphase.h +++ /dev/null @@ -1,138 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org -Copyright (C) 2006, 2009 Sony Computer Entertainment Inc. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -//---------------------------------------------------------------------------------------- - -#ifndef BTGPU3DGRIDBROADPHASE_H -#define BTGPU3DGRIDBROADPHASE_H - -//---------------------------------------------------------------------------------------- - -#include "BulletCollision/BroadphaseCollision/btSimpleBroadphase.h" - -#include "btGpu3DGridBroadphaseSharedTypes.h" - -//---------------------------------------------------------------------------------------- - -///The btGpu3DGridBroadphase uses GPU-style code compiled for CPU to compute overlapping pairs - -class btGpu3DGridBroadphase : public btSimpleBroadphase -{ -protected: - bool m_bInitialized; - unsigned int m_numBodies; - unsigned int m_numCells; - unsigned int m_maxPairsPerBody; - btScalar m_cellFactorAABB; - unsigned int m_maxBodiesPerCell; - bt3DGridBroadphaseParams m_params; - btScalar m_maxRadius; - // CPU data - unsigned int* m_hBodiesHash; - unsigned int* m_hCellStart; - unsigned int* m_hPairBuffStartCurr; - bt3DGrid3F1U* m_hAABB; - unsigned int* m_hPairBuff; - unsigned int* m_hPairScan; - unsigned int* m_hPairOut; -// large proxies - int m_numLargeHandles; - int m_maxLargeHandles; - int m_LastLargeHandleIndex; - btSimpleBroadphaseProxy* m_pLargeHandles; - void* m_pLargeHandlesRawPtr; - int m_firstFreeLargeHandle; - int allocLargeHandle() - { - btAssert(m_numLargeHandles < m_maxLargeHandles); - int freeLargeHandle = m_firstFreeLargeHandle; - m_firstFreeLargeHandle = m_pLargeHandles[freeLargeHandle].GetNextFree(); - m_numLargeHandles++; - if(freeLargeHandle > m_LastLargeHandleIndex) - { - m_LastLargeHandleIndex = freeLargeHandle; - } - return freeLargeHandle; - } - void freeLargeHandle(btSimpleBroadphaseProxy* proxy) - { - int handle = int(proxy - m_pLargeHandles); - btAssert((handle >= 0) && (handle < m_maxHandles)); - if(handle == m_LastLargeHandleIndex) - { - m_LastLargeHandleIndex--; - } - proxy->SetNextFree(m_firstFreeLargeHandle); - m_firstFreeLargeHandle = handle; - proxy->m_clientObject = 0; - m_numLargeHandles--; - } - bool isLargeProxy(const btVector3& aabbMin, const btVector3& aabbMax); - bool isLargeProxy(btBroadphaseProxy* proxy); -// debug - unsigned int m_numPairsAdded; - unsigned int m_numPairsRemoved; - unsigned int m_numOverflows; -// -public: - btGpu3DGridBroadphase(const btVector3& worldAabbMin,const btVector3& worldAabbMax, - int gridSizeX, int gridSizeY, int gridSizeZ, - int maxSmallProxies, int maxLargeProxies, int maxPairsPerBody, - int maxBodiesPerCell = 8, - btScalar cellFactorAABB = btScalar(1.0f)); - btGpu3DGridBroadphase( btOverlappingPairCache* overlappingPairCache, - const btVector3& worldAabbMin,const btVector3& worldAabbMax, - int gridSizeX, int gridSizeY, int gridSizeZ, - int maxSmallProxies, int maxLargeProxies, int maxPairsPerBody, - int maxBodiesPerCell = 8, - btScalar cellFactorAABB = btScalar(1.0f)); - virtual ~btGpu3DGridBroadphase(); - virtual void calculateOverlappingPairs(btDispatcher* dispatcher); - - virtual btBroadphaseProxy* createProxy(const btVector3& aabbMin, const btVector3& aabbMax,int shapeType,void* userPtr ,short int collisionFilterGroup,short int collisionFilterMask, btDispatcher* dispatcher,void* multiSapProxy); - virtual void destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher); - virtual void rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback); - virtual void resetPool(btDispatcher* dispatcher); - -protected: - void _initialize( const btVector3& worldAabbMin,const btVector3& worldAabbMax, - int gridSizeX, int gridSizeY, int gridSizeZ, - int maxSmallProxies, int maxLargeProxies, int maxPairsPerBody, - int maxBodiesPerCell = 8, - btScalar cellFactorAABB = btScalar(1.0f)); - void _finalize(); - void addPairsToCache(btDispatcher* dispatcher); - void addLarge2LargePairsToCache(btDispatcher* dispatcher); - -// overrides for CPU version - virtual void setParameters(bt3DGridBroadphaseParams* hostParams); - virtual void prepareAABB(); - virtual void calcHashAABB(); - virtual void sortHash(); - virtual void findCellStart(); - virtual void findOverlappingPairs(); - virtual void findPairsLarge(); - virtual void computePairCacheChanges(); - virtual void scanOverlappingPairBuff(); - virtual void squeezeOverlappingPairBuff(); -}; - -//---------------------------------------------------------------------------------------- - -#endif //BTGPU3DGRIDBROADPHASE_H - -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- diff --git a/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedCode.h b/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedCode.h deleted file mode 100644 index e0afb87bb82..00000000000 --- a/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedCode.h +++ /dev/null @@ -1,430 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org -Copyright (C) 2006, 2009 Sony Computer Entertainment Inc. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -//---------------------------------------------------------------------------------------- - -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- -// K E R N E L F U N C T I O N S -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- - -// calculate position in uniform grid -BT_GPU___device__ int3 bt3DGrid_calcGridPos(float4 p) -{ - int3 gridPos; - gridPos.x = (int)floor((p.x - BT_GPU_params.m_worldOriginX) / BT_GPU_params.m_cellSizeX); - gridPos.y = (int)floor((p.y - BT_GPU_params.m_worldOriginY) / BT_GPU_params.m_cellSizeY); - gridPos.z = (int)floor((p.z - BT_GPU_params.m_worldOriginZ) / BT_GPU_params.m_cellSizeZ); - return gridPos; -} // bt3DGrid_calcGridPos() - -//---------------------------------------------------------------------------------------- - -// calculate address in grid from position (clamping to edges) -BT_GPU___device__ uint bt3DGrid_calcGridHash(int3 gridPos) -{ - gridPos.x = BT_GPU_max(0, BT_GPU_min(gridPos.x, (int)BT_GPU_params.m_gridSizeX - 1)); - gridPos.y = BT_GPU_max(0, BT_GPU_min(gridPos.y, (int)BT_GPU_params.m_gridSizeY - 1)); - gridPos.z = BT_GPU_max(0, BT_GPU_min(gridPos.z, (int)BT_GPU_params.m_gridSizeZ - 1)); - return BT_GPU___mul24(BT_GPU___mul24(gridPos.z, BT_GPU_params.m_gridSizeY), BT_GPU_params.m_gridSizeX) + BT_GPU___mul24(gridPos.y, BT_GPU_params.m_gridSizeX) + gridPos.x; -} // bt3DGrid_calcGridHash() - -//---------------------------------------------------------------------------------------- - -// calculate grid hash value for each body using its AABB -BT_GPU___global__ void calcHashAABBD(bt3DGrid3F1U* pAABB, uint2* pHash, uint numBodies) -{ - int index = BT_GPU___mul24(BT_GPU_blockIdx.x, BT_GPU_blockDim.x) + BT_GPU_threadIdx.x; - if(index >= (int)numBodies) - { - return; - } - bt3DGrid3F1U bbMin = pAABB[index*2]; - bt3DGrid3F1U bbMax = pAABB[index*2 + 1]; - float4 pos; - pos.x = (bbMin.fx + bbMax.fx) * 0.5f; - pos.y = (bbMin.fy + bbMax.fy) * 0.5f; - pos.z = (bbMin.fz + bbMax.fz) * 0.5f; - // get address in grid - int3 gridPos = bt3DGrid_calcGridPos(pos); - uint gridHash = bt3DGrid_calcGridHash(gridPos); - // store grid hash and body index - pHash[index] = BT_GPU_make_uint2(gridHash, index); -} // calcHashAABBD() - -//---------------------------------------------------------------------------------------- - -BT_GPU___global__ void findCellStartD(uint2* pHash, uint* cellStart, uint numBodies) -{ - int index = BT_GPU___mul24(BT_GPU_blockIdx.x, BT_GPU_blockDim.x) + BT_GPU_threadIdx.x; - if(index >= (int)numBodies) - { - return; - } - uint2 sortedData = pHash[index]; - // Load hash data into shared memory so that we can look - // at neighboring body's hash value without loading - // two hash values per thread - BT_GPU___shared__ uint sharedHash[257]; - sharedHash[BT_GPU_threadIdx.x+1] = sortedData.x; - if((index > 0) && (BT_GPU_threadIdx.x == 0)) - { - // first thread in block must load neighbor body hash - volatile uint2 prevData = pHash[index-1]; - sharedHash[0] = prevData.x; - } - BT_GPU___syncthreads(); - if((index == 0) || (sortedData.x != sharedHash[BT_GPU_threadIdx.x])) - { - cellStart[sortedData.x] = index; - } -} // findCellStartD() - -//---------------------------------------------------------------------------------------- - -BT_GPU___device__ uint cudaTestAABBOverlap(bt3DGrid3F1U min0, bt3DGrid3F1U max0, bt3DGrid3F1U min1, bt3DGrid3F1U max1) -{ - return (min0.fx <= max1.fx)&& (min1.fx <= max0.fx) && - (min0.fy <= max1.fy)&& (min1.fy <= max0.fy) && - (min0.fz <= max1.fz)&& (min1.fz <= max0.fz); -} // cudaTestAABBOverlap() - -//---------------------------------------------------------------------------------------- - -BT_GPU___device__ void findPairsInCell( int3 gridPos, - uint index, - uint2* pHash, - uint* pCellStart, - bt3DGrid3F1U* pAABB, - uint* pPairBuff, - uint2* pPairBuffStartCurr, - uint numBodies) -{ - if ( (gridPos.x < 0) || (gridPos.x > (int)BT_GPU_params.m_gridSizeX - 1) - || (gridPos.y < 0) || (gridPos.y > (int)BT_GPU_params.m_gridSizeY - 1) - || (gridPos.z < 0) || (gridPos.z > (int)BT_GPU_params.m_gridSizeZ - 1)) - { - return; - } - uint gridHash = bt3DGrid_calcGridHash(gridPos); - // get start of bucket for this cell - uint bucketStart = pCellStart[gridHash]; - if (bucketStart == 0xffffffff) - { - return; // cell empty - } - // iterate over bodies in this cell - uint2 sortedData = pHash[index]; - uint unsorted_indx = sortedData.y; - bt3DGrid3F1U min0 = BT_GPU_FETCH(pAABB, unsorted_indx*2); - bt3DGrid3F1U max0 = BT_GPU_FETCH(pAABB, unsorted_indx*2 + 1); - uint handleIndex = min0.uw; - uint2 start_curr = pPairBuffStartCurr[handleIndex]; - uint start = start_curr.x; - uint curr = start_curr.y; - uint2 start_curr_next = pPairBuffStartCurr[handleIndex+1]; - uint curr_max = start_curr_next.x - start - 1; - uint bucketEnd = bucketStart + BT_GPU_params.m_maxBodiesPerCell; - bucketEnd = (bucketEnd > numBodies) ? numBodies : bucketEnd; - for(uint index2 = bucketStart; index2 < bucketEnd; index2++) - { - uint2 cellData = pHash[index2]; - if (cellData.x != gridHash) - { - break; // no longer in same bucket - } - uint unsorted_indx2 = cellData.y; - if (unsorted_indx2 < unsorted_indx) // check not colliding with self - { - bt3DGrid3F1U min1 = BT_GPU_FETCH(pAABB, unsorted_indx2*2); - bt3DGrid3F1U max1 = BT_GPU_FETCH(pAABB, unsorted_indx2*2 + 1); - if(cudaTestAABBOverlap(min0, max0, min1, max1)) - { - uint handleIndex2 = min1.uw; - uint k; - for(k = 0; k < curr; k++) - { - uint old_pair = pPairBuff[start+k] & (~BT_3DGRID_PAIR_ANY_FLG); - if(old_pair == handleIndex2) - { - pPairBuff[start+k] |= BT_3DGRID_PAIR_FOUND_FLG; - break; - } - } - if(k == curr) - { - if(curr >= curr_max) - { // not a good solution, but let's avoid crash - break; - } - pPairBuff[start+curr] = handleIndex2 | BT_3DGRID_PAIR_NEW_FLG; - curr++; - } - } - } - } - pPairBuffStartCurr[handleIndex] = BT_GPU_make_uint2(start, curr); - return; -} // findPairsInCell() - -//---------------------------------------------------------------------------------------- - -BT_GPU___global__ void findOverlappingPairsD( bt3DGrid3F1U* pAABB, uint2* pHash, uint* pCellStart, - uint* pPairBuff, uint2* pPairBuffStartCurr, uint numBodies) -{ - int index = BT_GPU___mul24(BT_GPU_blockIdx.x, BT_GPU_blockDim.x) + BT_GPU_threadIdx.x; - if(index >= (int)numBodies) - { - return; - } - uint2 sortedData = pHash[index]; - uint unsorted_indx = sortedData.y; - bt3DGrid3F1U bbMin = BT_GPU_FETCH(pAABB, unsorted_indx*2); - bt3DGrid3F1U bbMax = BT_GPU_FETCH(pAABB, unsorted_indx*2 + 1); - float4 pos; - pos.x = (bbMin.fx + bbMax.fx) * 0.5f; - pos.y = (bbMin.fy + bbMax.fy) * 0.5f; - pos.z = (bbMin.fz + bbMax.fz) * 0.5f; - // get address in grid - int3 gridPos = bt3DGrid_calcGridPos(pos); - // examine only neighbouring cells - for(int z=-1; z<=1; z++) { - for(int y=-1; y<=1; y++) { - for(int x=-1; x<=1; x++) { - findPairsInCell(gridPos + BT_GPU_make_int3(x, y, z), index, pHash, pCellStart, pAABB, pPairBuff, pPairBuffStartCurr, numBodies); - } - } - } -} // findOverlappingPairsD() - -//---------------------------------------------------------------------------------------- - -BT_GPU___global__ void findPairsLargeD( bt3DGrid3F1U* pAABB, uint2* pHash, uint* pCellStart, uint* pPairBuff, - uint2* pPairBuffStartCurr, uint numBodies, uint numLarge) -{ - int index = BT_GPU___mul24(BT_GPU_blockIdx.x, BT_GPU_blockDim.x) + BT_GPU_threadIdx.x; - if(index >= (int)numBodies) - { - return; - } - uint2 sortedData = pHash[index]; - uint unsorted_indx = sortedData.y; - bt3DGrid3F1U min0 = BT_GPU_FETCH(pAABB, unsorted_indx*2); - bt3DGrid3F1U max0 = BT_GPU_FETCH(pAABB, unsorted_indx*2 + 1); - uint handleIndex = min0.uw; - uint2 start_curr = pPairBuffStartCurr[handleIndex]; - uint start = start_curr.x; - uint curr = start_curr.y; - uint2 start_curr_next = pPairBuffStartCurr[handleIndex+1]; - uint curr_max = start_curr_next.x - start - 1; - for(uint i = 0; i < numLarge; i++) - { - uint indx2 = numBodies + i; - bt3DGrid3F1U min1 = BT_GPU_FETCH(pAABB, indx2*2); - bt3DGrid3F1U max1 = BT_GPU_FETCH(pAABB, indx2*2 + 1); - if(cudaTestAABBOverlap(min0, max0, min1, max1)) - { - uint k; - uint handleIndex2 = min1.uw; - for(k = 0; k < curr; k++) - { - uint old_pair = pPairBuff[start+k] & (~BT_3DGRID_PAIR_ANY_FLG); - if(old_pair == handleIndex2) - { - pPairBuff[start+k] |= BT_3DGRID_PAIR_FOUND_FLG; - break; - } - } - if(k == curr) - { - pPairBuff[start+curr] = handleIndex2 | BT_3DGRID_PAIR_NEW_FLG; - if(curr >= curr_max) - { // not a good solution, but let's avoid crash - break; - } - curr++; - } - } - } - pPairBuffStartCurr[handleIndex] = BT_GPU_make_uint2(start, curr); - return; -} // findPairsLargeD() - -//---------------------------------------------------------------------------------------- - -BT_GPU___global__ void computePairCacheChangesD(uint* pPairBuff, uint2* pPairBuffStartCurr, - uint* pPairScan, bt3DGrid3F1U* pAABB, uint numBodies) -{ - int index = BT_GPU___mul24(BT_GPU_blockIdx.x, BT_GPU_blockDim.x) + BT_GPU_threadIdx.x; - if(index >= (int)numBodies) - { - return; - } - bt3DGrid3F1U bbMin = pAABB[index * 2]; - uint handleIndex = bbMin.uw; - uint2 start_curr = pPairBuffStartCurr[handleIndex]; - uint start = start_curr.x; - uint curr = start_curr.y; - uint *pInp = pPairBuff + start; - uint num_changes = 0; - for(uint k = 0; k < curr; k++, pInp++) - { - if(!((*pInp) & BT_3DGRID_PAIR_FOUND_FLG)) - { - num_changes++; - } - } - pPairScan[index+1] = num_changes; -} // computePairCacheChangesD() - -//---------------------------------------------------------------------------------------- - -BT_GPU___global__ void squeezeOverlappingPairBuffD(uint* pPairBuff, uint2* pPairBuffStartCurr, uint* pPairScan, - uint* pPairOut, bt3DGrid3F1U* pAABB, uint numBodies) -{ - int index = BT_GPU___mul24(BT_GPU_blockIdx.x, BT_GPU_blockDim.x) + BT_GPU_threadIdx.x; - if(index >= (int)numBodies) - { - return; - } - bt3DGrid3F1U bbMin = pAABB[index * 2]; - uint handleIndex = bbMin.uw; - uint2 start_curr = pPairBuffStartCurr[handleIndex]; - uint start = start_curr.x; - uint curr = start_curr.y; - uint* pInp = pPairBuff + start; - uint* pOut = pPairOut + pPairScan[index]; - uint* pOut2 = pInp; - uint num = 0; - for(uint k = 0; k < curr; k++, pInp++) - { - if(!((*pInp) & BT_3DGRID_PAIR_FOUND_FLG)) - { - *pOut = *pInp; - pOut++; - } - if((*pInp) & BT_3DGRID_PAIR_ANY_FLG) - { - *pOut2 = (*pInp) & (~BT_3DGRID_PAIR_ANY_FLG); - pOut2++; - num++; - } - } - pPairBuffStartCurr[handleIndex] = BT_GPU_make_uint2(start, num); -} // squeezeOverlappingPairBuffD() - - -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- -// E N D O F K E R N E L F U N C T I O N S -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- - -extern "C" -{ - -//---------------------------------------------------------------------------------------- - -void BT_GPU_PREF(calcHashAABB)(bt3DGrid3F1U* pAABB, unsigned int* hash, unsigned int numBodies) -{ - int numThreads, numBlocks; - BT_GPU_PREF(computeGridSize)(numBodies, 256, numBlocks, numThreads); - // execute the kernel - BT_GPU_EXECKERNEL(numBlocks, numThreads, calcHashAABBD, (pAABB, (uint2*)hash, numBodies)); - // check if kernel invocation generated an error - BT_GPU_CHECK_ERROR("calcHashAABBD kernel execution failed"); -} // calcHashAABB() - -//---------------------------------------------------------------------------------------- - -void BT_GPU_PREF(findCellStart(unsigned int* hash, unsigned int* cellStart, unsigned int numBodies, unsigned int numCells)) -{ - int numThreads, numBlocks; - BT_GPU_PREF(computeGridSize)(numBodies, 256, numBlocks, numThreads); - BT_GPU_SAFE_CALL(BT_GPU_Memset(cellStart, 0xffffffff, numCells*sizeof(uint))); - BT_GPU_EXECKERNEL(numBlocks, numThreads, findCellStartD, ((uint2*)hash, (uint*)cellStart, numBodies)); - BT_GPU_CHECK_ERROR("Kernel execution failed: findCellStartD"); -} // findCellStart() - -//---------------------------------------------------------------------------------------- - -void BT_GPU_PREF(findOverlappingPairs(bt3DGrid3F1U* pAABB, unsigned int* pHash, unsigned int* pCellStart, unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int numBodies)) -{ -#if B_CUDA_USE_TEX - BT_GPU_SAFE_CALL(cudaBindTexture(0, pAABBTex, pAABB, numBodies * 2 * sizeof(bt3DGrid3F1U))); -#endif - int numThreads, numBlocks; - BT_GPU_PREF(computeGridSize)(numBodies, 64, numBlocks, numThreads); - BT_GPU_EXECKERNEL(numBlocks, numThreads, findOverlappingPairsD, (pAABB,(uint2*)pHash,(uint*)pCellStart,(uint*)pPairBuff,(uint2*)pPairBuffStartCurr,numBodies)); - BT_GPU_CHECK_ERROR("Kernel execution failed: bt_CudaFindOverlappingPairsD"); -#if B_CUDA_USE_TEX - BT_GPU_SAFE_CALL(cudaUnbindTexture(pAABBTex)); -#endif -} // findOverlappingPairs() - -//---------------------------------------------------------------------------------------- - -void BT_GPU_PREF(findPairsLarge(bt3DGrid3F1U* pAABB, unsigned int* pHash, unsigned int* pCellStart, unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int numBodies, unsigned int numLarge)) -{ -#if B_CUDA_USE_TEX - BT_GPU_SAFE_CALL(cudaBindTexture(0, pAABBTex, pAABB, (numBodies+numLarge) * 2 * sizeof(bt3DGrid3F1U))); -#endif - int numThreads, numBlocks; - BT_GPU_PREF(computeGridSize)(numBodies, 64, numBlocks, numThreads); - BT_GPU_EXECKERNEL(numBlocks, numThreads, findPairsLargeD, (pAABB,(uint2*)pHash,(uint*)pCellStart,(uint*)pPairBuff,(uint2*)pPairBuffStartCurr,numBodies,numLarge)); - BT_GPU_CHECK_ERROR("Kernel execution failed: btCuda_findPairsLargeD"); -#if B_CUDA_USE_TEX - BT_GPU_SAFE_CALL(cudaUnbindTexture(pAABBTex)); -#endif -} // findPairsLarge() - -//---------------------------------------------------------------------------------------- - -void BT_GPU_PREF(computePairCacheChanges(unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int* pPairScan, bt3DGrid3F1U* pAABB, unsigned int numBodies)) -{ - int numThreads, numBlocks; - BT_GPU_PREF(computeGridSize)(numBodies, 256, numBlocks, numThreads); - BT_GPU_EXECKERNEL(numBlocks, numThreads, computePairCacheChangesD, ((uint*)pPairBuff,(uint2*)pPairBuffStartCurr,(uint*)pPairScan,pAABB,numBodies)); - BT_GPU_CHECK_ERROR("Kernel execution failed: btCudaComputePairCacheChangesD"); -} // computePairCacheChanges() - -//---------------------------------------------------------------------------------------- - -void BT_GPU_PREF(squeezeOverlappingPairBuff(unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int* pPairScan, unsigned int* pPairOut, bt3DGrid3F1U* pAABB, unsigned int numBodies)) -{ - int numThreads, numBlocks; - BT_GPU_PREF(computeGridSize)(numBodies, 256, numBlocks, numThreads); - BT_GPU_EXECKERNEL(numBlocks, numThreads, squeezeOverlappingPairBuffD, ((uint*)pPairBuff,(uint2*)pPairBuffStartCurr,(uint*)pPairScan,(uint*)pPairOut,pAABB,numBodies)); - BT_GPU_CHECK_ERROR("Kernel execution failed: btCudaSqueezeOverlappingPairBuffD"); -} // btCuda_squeezeOverlappingPairBuff() - -//------------------------------------------------------------------------------------------------ - -} // extern "C" - -//------------------------------------------------------------------------------------------------ -//------------------------------------------------------------------------------------------------ -//------------------------------------------------------------------------------------------------ diff --git a/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedDefs.h b/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedDefs.h deleted file mode 100644 index 607bda7edfd..00000000000 --- a/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedDefs.h +++ /dev/null @@ -1,61 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org -Copyright (C) 2006, 2009 Sony Computer Entertainment Inc. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -//---------------------------------------------------------------------------------------- - -// Shared definitions for GPU-based 3D Grid collision detection broadphase - -//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -// Keep this file free from Bullet headers -// it is included into both CUDA and CPU code -//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -//---------------------------------------------------------------------------------------- - -#ifndef BTGPU3DGRIDBROADPHASESHAREDDEFS_H -#define BTGPU3DGRIDBROADPHASESHAREDDEFS_H - -//---------------------------------------------------------------------------------------- - -#include "btGpu3DGridBroadphaseSharedTypes.h" - -//---------------------------------------------------------------------------------------- - -extern "C" -{ - -//---------------------------------------------------------------------------------------- - -void BT_GPU_PREF(calcHashAABB)(bt3DGrid3F1U* pAABB, unsigned int* hash, unsigned int numBodies); - -void BT_GPU_PREF(findCellStart)(unsigned int* hash, unsigned int* cellStart, unsigned int numBodies, unsigned int numCells); - -void BT_GPU_PREF(findOverlappingPairs)(bt3DGrid3F1U* pAABB, unsigned int* pHash, unsigned int* pCellStart, unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int numBodies); - -void BT_GPU_PREF(findPairsLarge)(bt3DGrid3F1U* pAABB, unsigned int* pHash, unsigned int* pCellStart, unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int numBodies, unsigned int numLarge); - -void BT_GPU_PREF(computePairCacheChanges)(unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int* pPairScan, bt3DGrid3F1U* pAABB, unsigned int numBodies); - -void BT_GPU_PREF(squeezeOverlappingPairBuff)(unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int* pPairScan, unsigned int* pPairOut, bt3DGrid3F1U* pAABB, unsigned int numBodies); - - -//---------------------------------------------------------------------------------------- - -} // extern "C" - -//---------------------------------------------------------------------------------------- - -#endif // BTGPU3DGRIDBROADPHASESHAREDDEFS_H - diff --git a/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedTypes.h b/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedTypes.h deleted file mode 100644 index 616a40094ca..00000000000 --- a/extern/bullet2/BulletMultiThreaded/btGpu3DGridBroadphaseSharedTypes.h +++ /dev/null @@ -1,67 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org -Copyright (C) 2006, 2009 Sony Computer Entertainment Inc. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -//---------------------------------------------------------------------------------------- - -// Shared definitions for GPU-based 3D Grid collision detection broadphase - -//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -// Keep this file free from Bullet headers -// it is included into both CUDA and CPU code -//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -//---------------------------------------------------------------------------------------- - -#ifndef BTGPU3DGRIDBROADPHASESHAREDTYPES_H -#define BTGPU3DGRIDBROADPHASESHAREDTYPES_H - -//---------------------------------------------------------------------------------------- - -#define BT_3DGRID_PAIR_FOUND_FLG (0x40000000) -#define BT_3DGRID_PAIR_NEW_FLG (0x20000000) -#define BT_3DGRID_PAIR_ANY_FLG (BT_3DGRID_PAIR_FOUND_FLG | BT_3DGRID_PAIR_NEW_FLG) - -//---------------------------------------------------------------------------------------- - -struct bt3DGridBroadphaseParams -{ - unsigned int m_gridSizeX; - unsigned int m_gridSizeY; - unsigned int m_gridSizeZ; - unsigned int m_numCells; - float m_worldOriginX; - float m_worldOriginY; - float m_worldOriginZ; - float m_cellSizeX; - float m_cellSizeY; - float m_cellSizeZ; - unsigned int m_numBodies; - unsigned int m_maxBodiesPerCell; -}; - -//---------------------------------------------------------------------------------------- - -struct bt3DGrid3F1U -{ - float fx; - float fy; - float fz; - unsigned int uw; -}; - -//---------------------------------------------------------------------------------------- - -#endif // BTGPU3DGRIDBROADPHASESHAREDTYPES_H - diff --git a/extern/bullet2/BulletMultiThreaded/btGpuDefines.h b/extern/bullet2/BulletMultiThreaded/btGpuDefines.h deleted file mode 100644 index f9315ab6496..00000000000 --- a/extern/bullet2/BulletMultiThreaded/btGpuDefines.h +++ /dev/null @@ -1,211 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org -Copyright (C) 2006, 2009 Sony Computer Entertainment Inc. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -// definitions for "GPU on CPU" code - - -#ifndef BT_GPU_DEFINES_H -#define BT_GPU_DEFINES_H - -typedef unsigned int uint; - -struct int2 -{ - int x, y; -}; - -struct uint2 -{ - unsigned int x, y; -}; - -struct int3 -{ - int x, y, z; -}; - -struct uint3 -{ - unsigned int x, y, z; -}; - -struct float4 -{ - float x, y, z, w; -}; - -struct float3 -{ - float x, y, z; -}; - - -#define BT_GPU___device__ inline -#define BT_GPU___devdata__ -#define BT_GPU___constant__ -#define BT_GPU_max(a, b) ((a) > (b) ? (a) : (b)) -#define BT_GPU_min(a, b) ((a) < (b) ? (a) : (b)) -#define BT_GPU_params s3DGridBroadphaseParams -#define BT_GPU___mul24(a, b) ((a)*(b)) -#define BT_GPU___global__ inline -#define BT_GPU___shared__ static -#define BT_GPU___syncthreads() -#define CUDART_PI_F SIMD_PI - -static inline uint2 bt3dGrid_make_uint2(unsigned int x, unsigned int y) -{ - uint2 t; t.x = x; t.y = y; return t; -} -#define BT_GPU_make_uint2(x, y) bt3dGrid_make_uint2(x, y) - -static inline int3 bt3dGrid_make_int3(int x, int y, int z) -{ - int3 t; t.x = x; t.y = y; t.z = z; return t; -} -#define BT_GPU_make_int3(x, y, z) bt3dGrid_make_int3(x, y, z) - -static inline float3 bt3dGrid_make_float3(float x, float y, float z) -{ - float3 t; t.x = x; t.y = y; t.z = z; return t; -} -#define BT_GPU_make_float3(x, y, z) bt3dGrid_make_float3(x, y, z) - -static inline float3 bt3dGrid_make_float34(float4 f) -{ - float3 t; t.x = f.x; t.y = f.y; t.z = f.z; return t; -} -#define BT_GPU_make_float34(f) bt3dGrid_make_float34(f) - -static inline float3 bt3dGrid_make_float31(float f) -{ - float3 t; t.x = t.y = t.z = f; return t; -} -#define BT_GPU_make_float31(x) bt3dGrid_make_float31(x) - -static inline float4 bt3dGrid_make_float42(float3 v, float f) -{ - float4 t; t.x = v.x; t.y = v.y; t.z = v.z; t.w = f; return t; -} -#define BT_GPU_make_float42(a, b) bt3dGrid_make_float42(a, b) - -static inline float4 bt3dGrid_make_float44(float a, float b, float c, float d) -{ - float4 t; t.x = a; t.y = b; t.z = c; t.w = d; return t; -} -#define BT_GPU_make_float44(a, b, c, d) bt3dGrid_make_float44(a, b, c, d) - -inline int3 operator+(int3 a, int3 b) -{ - return bt3dGrid_make_int3(a.x + b.x, a.y + b.y, a.z + b.z); -} - -inline float4 operator+(const float4& a, const float4& b) -{ - float4 r; r.x = a.x+b.x; r.y = a.y+b.y; r.z = a.z+b.z; r.w = a.w+b.w; return r; -} -inline float4 operator*(const float4& a, float fact) -{ - float4 r; r.x = a.x*fact; r.y = a.y*fact; r.z = a.z*fact; r.w = a.w*fact; return r; -} -inline float4 operator*(float fact, float4& a) -{ - return (a * fact); -} -inline float4& operator*=(float4& a, float fact) -{ - a = fact * a; - return a; -} -inline float4& operator+=(float4& a, const float4& b) -{ - a = a + b; - return a; -} - -inline float3 operator+(const float3& a, const float3& b) -{ - float3 r; r.x = a.x+b.x; r.y = a.y+b.y; r.z = a.z+b.z; return r; -} -inline float3 operator-(const float3& a, const float3& b) -{ - float3 r; r.x = a.x-b.x; r.y = a.y-b.y; r.z = a.z-b.z; return r; -} -static inline float bt3dGrid_dot(float3& a, float3& b) -{ - return a.x*b.x+a.y*b.y+a.z*b.z; -} -#define BT_GPU_dot(a,b) bt3dGrid_dot(a,b) - -static inline float bt3dGrid_dot4(float4& a, float4& b) -{ - return a.x*b.x+a.y*b.y+a.z*b.z+a.w*b.w; -} -#define BT_GPU_dot4(a,b) bt3dGrid_dot4(a,b) - -static inline float3 bt3dGrid_cross(const float3& a, const float3& b) -{ - float3 r; r.x = a.y*b.z-a.z*b.y; r.y = -a.x*b.z+a.z*b.x; r.z = a.x*b.y-a.y*b.x; return r; -} -#define BT_GPU_cross(a,b) bt3dGrid_cross(a,b) - - -inline float3 operator*(const float3& a, float fact) -{ - float3 r; r.x = a.x*fact; r.y = a.y*fact; r.z = a.z*fact; return r; -} - - -inline float3& operator+=(float3& a, const float3& b) -{ - a = a + b; - return a; -} -inline float3& operator-=(float3& a, const float3& b) -{ - a = a - b; - return a; -} -inline float3& operator*=(float3& a, float fact) -{ - a = a * fact; - return a; -} -inline float3 operator-(const float3& v) -{ - float3 r; r.x = -v.x; r.y = -v.y; r.z = -v.z; return r; -} - - -#define BT_GPU_FETCH(a, b) a[b] -#define BT_GPU_FETCH4(a, b) a[b] -#define BT_GPU_PREF(func) btGpu_##func -#define BT_GPU_SAFE_CALL(func) func -#define BT_GPU_Memset memset -#define BT_GPU_MemcpyToSymbol(a, b, c) memcpy(&a, b, c) -#define BT_GPU_BindTexture(a, b, c, d) -#define BT_GPU_UnbindTexture(a) - -static uint2 s_blockIdx, s_blockDim, s_threadIdx; -#define BT_GPU_blockIdx s_blockIdx -#define BT_GPU_blockDim s_blockDim -#define BT_GPU_threadIdx s_threadIdx -#define BT_GPU_EXECKERNEL(numb, numt, kfunc, args) {s_blockDim.x=numt;for(int nb=0;nb //for uint32_t etc. -#include "PlatformDefinitions.h" -#include "PpuAddressSpace.h" - -class btThreadSupportInterface -{ -public: - - virtual ~btThreadSupportInterface(); - -///send messages to SPUs - virtual void sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t uiArgument1) =0; - -///check for messages from SPUs - virtual void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1) =0; - -///start the spus (can be called at the beginning of each frame, to make sure that the right SPU program is loaded) - virtual void startSPU() =0; - -///tell the task scheduler we are done with the SPU tasks - virtual void stopSPU()=0; - - ///tell the task scheduler to use no more than numTasks tasks - virtual void setNumTasks(int numTasks)=0; - - virtual int getNumTasks() const = 0; - -}; - -#endif //THREAD_SUPPORT_INTERFACE_H - diff --git a/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/boolInVec.h b/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/boolInVec.h deleted file mode 100644 index c5eeeebd7a1..00000000000 --- a/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/boolInVec.h +++ /dev/null @@ -1,225 +0,0 @@ -/* - Copyright (C) 2009 Sony Computer Entertainment Inc. - All rights reserved. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -*/ - -#ifndef _BOOLINVEC_H -#define _BOOLINVEC_H - -#include -namespace Vectormath { - -class floatInVec; - -//-------------------------------------------------------------------------------------------------- -// boolInVec class -// - -class boolInVec -{ -private: - unsigned int mData; - -public: - // Default constructor; does no initialization - // - inline boolInVec( ) { }; - - // Construct from a value converted from float - // - inline boolInVec(floatInVec vec); - - // Explicit cast from bool - // - explicit inline boolInVec(bool scalar); - - // Explicit cast to bool - // - inline bool getAsBool() const; - -#ifndef _VECTORMATH_NO_SCALAR_CAST - // Implicit cast to bool - // - inline operator bool() const; -#endif - - // Boolean negation operator - // - inline const boolInVec operator ! () const; - - // Assignment operator - // - inline boolInVec& operator = (boolInVec vec); - - // Boolean and assignment operator - // - inline boolInVec& operator &= (boolInVec vec); - - // Boolean exclusive or assignment operator - // - inline boolInVec& operator ^= (boolInVec vec); - - // Boolean or assignment operator - // - inline boolInVec& operator |= (boolInVec vec); - -}; - -// Equal operator -// -inline const boolInVec operator == (boolInVec vec0, boolInVec vec1); - -// Not equal operator -// -inline const boolInVec operator != (boolInVec vec0, boolInVec vec1); - -// And operator -// -inline const boolInVec operator & (boolInVec vec0, boolInVec vec1); - -// Exclusive or operator -// -inline const boolInVec operator ^ (boolInVec vec0, boolInVec vec1); - -// Or operator -// -inline const boolInVec operator | (boolInVec vec0, boolInVec vec1); - -// Conditionally select between two values -// -inline const boolInVec select(boolInVec vec0, boolInVec vec1, boolInVec select_vec1); - - -} // namespace Vectormath - - -//-------------------------------------------------------------------------------------------------- -// boolInVec implementation -// - -#include "floatInVec.h" - -namespace Vectormath { - -inline -boolInVec::boolInVec(floatInVec vec) -{ - *this = (vec != floatInVec(0.0f)); -} - -inline -boolInVec::boolInVec(bool scalar) -{ - mData = -(int)scalar; -} - -inline -bool -boolInVec::getAsBool() const -{ - return (mData > 0); -} - -#ifndef _VECTORMATH_NO_SCALAR_CAST -inline -boolInVec::operator bool() const -{ - return getAsBool(); -} -#endif - -inline -const boolInVec -boolInVec::operator ! () const -{ - return boolInVec(!mData); -} - -inline -boolInVec& -boolInVec::operator = (boolInVec vec) -{ - mData = vec.mData; - return *this; -} - -inline -boolInVec& -boolInVec::operator &= (boolInVec vec) -{ - *this = *this & vec; - return *this; -} - -inline -boolInVec& -boolInVec::operator ^= (boolInVec vec) -{ - *this = *this ^ vec; - return *this; -} - -inline -boolInVec& -boolInVec::operator |= (boolInVec vec) -{ - *this = *this | vec; - return *this; -} - -inline -const boolInVec -operator == (boolInVec vec0, boolInVec vec1) -{ - return boolInVec(vec0.getAsBool() == vec1.getAsBool()); -} - -inline -const boolInVec -operator != (boolInVec vec0, boolInVec vec1) -{ - return !(vec0 == vec1); -} - -inline -const boolInVec -operator & (boolInVec vec0, boolInVec vec1) -{ - return boolInVec(vec0.getAsBool() & vec1.getAsBool()); -} - -inline -const boolInVec -operator | (boolInVec vec0, boolInVec vec1) -{ - return boolInVec(vec0.getAsBool() | vec1.getAsBool()); -} - -inline -const boolInVec -operator ^ (boolInVec vec0, boolInVec vec1) -{ - return boolInVec(vec0.getAsBool() ^ vec1.getAsBool()); -} - -inline -const boolInVec -select(boolInVec vec0, boolInVec vec1, boolInVec select_vec1) -{ - return (select_vec1.getAsBool() == 0) ? vec0 : vec1; -} - -} // namespace Vectormath - -#endif // boolInVec_h diff --git a/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/floatInVec.h b/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/floatInVec.h deleted file mode 100644 index 12d89e43d3e..00000000000 --- a/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/floatInVec.h +++ /dev/null @@ -1,343 +0,0 @@ -/* - Copyright (C) 2009 Sony Computer Entertainment Inc. - All rights reserved. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -*/ -#ifndef _FLOATINVEC_H -#define _FLOATINVEC_H - -#include -namespace Vectormath { - -class boolInVec; - -//-------------------------------------------------------------------------------------------------- -// floatInVec class -// - -// A class representing a scalar float value contained in a vector register -// This class does not support fastmath -class floatInVec -{ -private: - float mData; - -public: - // Default constructor; does no initialization - // - inline floatInVec( ) { }; - - // Construct from a value converted from bool - // - inline floatInVec(boolInVec vec); - - // Explicit cast from float - // - explicit inline floatInVec(float scalar); - - // Explicit cast to float - // - inline float getAsFloat() const; - -#ifndef _VECTORMATH_NO_SCALAR_CAST - // Implicit cast to float - // - inline operator float() const; -#endif - - // Post increment (add 1.0f) - // - inline const floatInVec operator ++ (int); - - // Post decrement (subtract 1.0f) - // - inline const floatInVec operator -- (int); - - // Pre increment (add 1.0f) - // - inline floatInVec& operator ++ (); - - // Pre decrement (subtract 1.0f) - // - inline floatInVec& operator -- (); - - // Negation operator - // - inline const floatInVec operator - () const; - - // Assignment operator - // - inline floatInVec& operator = (floatInVec vec); - - // Multiplication assignment operator - // - inline floatInVec& operator *= (floatInVec vec); - - // Division assignment operator - // - inline floatInVec& operator /= (floatInVec vec); - - // Addition assignment operator - // - inline floatInVec& operator += (floatInVec vec); - - // Subtraction assignment operator - // - inline floatInVec& operator -= (floatInVec vec); - -}; - -// Multiplication operator -// -inline const floatInVec operator * (floatInVec vec0, floatInVec vec1); - -// Division operator -// -inline const floatInVec operator / (floatInVec vec0, floatInVec vec1); - -// Addition operator -// -inline const floatInVec operator + (floatInVec vec0, floatInVec vec1); - -// Subtraction operator -// -inline const floatInVec operator - (floatInVec vec0, floatInVec vec1); - -// Less than operator -// -inline const boolInVec operator < (floatInVec vec0, floatInVec vec1); - -// Less than or equal operator -// -inline const boolInVec operator <= (floatInVec vec0, floatInVec vec1); - -// Greater than operator -// -inline const boolInVec operator > (floatInVec vec0, floatInVec vec1); - -// Greater than or equal operator -// -inline const boolInVec operator >= (floatInVec vec0, floatInVec vec1); - -// Equal operator -// -inline const boolInVec operator == (floatInVec vec0, floatInVec vec1); - -// Not equal operator -// -inline const boolInVec operator != (floatInVec vec0, floatInVec vec1); - -// Conditionally select between two values -// -inline const floatInVec select(floatInVec vec0, floatInVec vec1, boolInVec select_vec1); - - -} // namespace Vectormath - - -//-------------------------------------------------------------------------------------------------- -// floatInVec implementation -// - -#include "boolInVec.h" - -namespace Vectormath { - -inline -floatInVec::floatInVec(boolInVec vec) -{ - mData = float(vec.getAsBool()); -} - -inline -floatInVec::floatInVec(float scalar) -{ - mData = scalar; -} - -inline -float -floatInVec::getAsFloat() const -{ - return mData; -} - -#ifndef _VECTORMATH_NO_SCALAR_CAST -inline -floatInVec::operator float() const -{ - return getAsFloat(); -} -#endif - -inline -const floatInVec -floatInVec::operator ++ (int) -{ - float olddata = mData; - operator ++(); - return floatInVec(olddata); -} - -inline -const floatInVec -floatInVec::operator -- (int) -{ - float olddata = mData; - operator --(); - return floatInVec(olddata); -} - -inline -floatInVec& -floatInVec::operator ++ () -{ - *this += floatInVec(1.0f); - return *this; -} - -inline -floatInVec& -floatInVec::operator -- () -{ - *this -= floatInVec(1.0f); - return *this; -} - -inline -const floatInVec -floatInVec::operator - () const -{ - return floatInVec(-mData); -} - -inline -floatInVec& -floatInVec::operator = (floatInVec vec) -{ - mData = vec.mData; - return *this; -} - -inline -floatInVec& -floatInVec::operator *= (floatInVec vec) -{ - *this = *this * vec; - return *this; -} - -inline -floatInVec& -floatInVec::operator /= (floatInVec vec) -{ - *this = *this / vec; - return *this; -} - -inline -floatInVec& -floatInVec::operator += (floatInVec vec) -{ - *this = *this + vec; - return *this; -} - -inline -floatInVec& -floatInVec::operator -= (floatInVec vec) -{ - *this = *this - vec; - return *this; -} - -inline -const floatInVec -operator * (floatInVec vec0, floatInVec vec1) -{ - return floatInVec(vec0.getAsFloat() * vec1.getAsFloat()); -} - -inline -const floatInVec -operator / (floatInVec num, floatInVec den) -{ - return floatInVec(num.getAsFloat() / den.getAsFloat()); -} - -inline -const floatInVec -operator + (floatInVec vec0, floatInVec vec1) -{ - return floatInVec(vec0.getAsFloat() + vec1.getAsFloat()); -} - -inline -const floatInVec -operator - (floatInVec vec0, floatInVec vec1) -{ - return floatInVec(vec0.getAsFloat() - vec1.getAsFloat()); -} - -inline -const boolInVec -operator < (floatInVec vec0, floatInVec vec1) -{ - return boolInVec(vec0.getAsFloat() < vec1.getAsFloat()); -} - -inline -const boolInVec -operator <= (floatInVec vec0, floatInVec vec1) -{ - return !(vec0 > vec1); -} - -inline -const boolInVec -operator > (floatInVec vec0, floatInVec vec1) -{ - return boolInVec(vec0.getAsFloat() > vec1.getAsFloat()); -} - -inline -const boolInVec -operator >= (floatInVec vec0, floatInVec vec1) -{ - return !(vec0 < vec1); -} - -inline -const boolInVec -operator == (floatInVec vec0, floatInVec vec1) -{ - return boolInVec(vec0.getAsFloat() == vec1.getAsFloat()); -} - -inline -const boolInVec -operator != (floatInVec vec0, floatInVec vec1) -{ - return !(vec0 == vec1); -} - -inline -const floatInVec -select(floatInVec vec0, floatInVec vec1, boolInVec select_vec1) -{ - return (select_vec1.getAsBool() == 0) ? vec0 : vec1; -} - -} // namespace Vectormath - -#endif // floatInVec_h diff --git a/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/mat_aos.h b/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/mat_aos.h deleted file mode 100644 index e103243d1e0..00000000000 --- a/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/mat_aos.h +++ /dev/null @@ -1,1630 +0,0 @@ -/* - Copyright (C) 2009 Sony Computer Entertainment Inc. - All rights reserved. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -*/ - -#ifndef _VECTORMATH_MAT_AOS_CPP_H -#define _VECTORMATH_MAT_AOS_CPP_H - -namespace Vectormath { -namespace Aos { - -//----------------------------------------------------------------------------- -// Constants - -#define _VECTORMATH_PI_OVER_2 1.570796327f - -//----------------------------------------------------------------------------- -// Definitions - -inline Matrix3::Matrix3( const Matrix3 & mat ) -{ - mCol0 = mat.mCol0; - mCol1 = mat.mCol1; - mCol2 = mat.mCol2; -} - -inline Matrix3::Matrix3( float scalar ) -{ - mCol0 = Vector3( scalar ); - mCol1 = Vector3( scalar ); - mCol2 = Vector3( scalar ); -} - -inline Matrix3::Matrix3( const Quat & unitQuat ) -{ - float qx, qy, qz, qw, qx2, qy2, qz2, qxqx2, qyqy2, qzqz2, qxqy2, qyqz2, qzqw2, qxqz2, qyqw2, qxqw2; - qx = unitQuat.getX(); - qy = unitQuat.getY(); - qz = unitQuat.getZ(); - qw = unitQuat.getW(); - qx2 = ( qx + qx ); - qy2 = ( qy + qy ); - qz2 = ( qz + qz ); - qxqx2 = ( qx * qx2 ); - qxqy2 = ( qx * qy2 ); - qxqz2 = ( qx * qz2 ); - qxqw2 = ( qw * qx2 ); - qyqy2 = ( qy * qy2 ); - qyqz2 = ( qy * qz2 ); - qyqw2 = ( qw * qy2 ); - qzqz2 = ( qz * qz2 ); - qzqw2 = ( qw * qz2 ); - mCol0 = Vector3( ( ( 1.0f - qyqy2 ) - qzqz2 ), ( qxqy2 + qzqw2 ), ( qxqz2 - qyqw2 ) ); - mCol1 = Vector3( ( qxqy2 - qzqw2 ), ( ( 1.0f - qxqx2 ) - qzqz2 ), ( qyqz2 + qxqw2 ) ); - mCol2 = Vector3( ( qxqz2 + qyqw2 ), ( qyqz2 - qxqw2 ), ( ( 1.0f - qxqx2 ) - qyqy2 ) ); -} - -inline Matrix3::Matrix3( const Vector3 & _col0, const Vector3 & _col1, const Vector3 & _col2 ) -{ - mCol0 = _col0; - mCol1 = _col1; - mCol2 = _col2; -} - -inline Matrix3 & Matrix3::setCol0( const Vector3 & _col0 ) -{ - mCol0 = _col0; - return *this; -} - -inline Matrix3 & Matrix3::setCol1( const Vector3 & _col1 ) -{ - mCol1 = _col1; - return *this; -} - -inline Matrix3 & Matrix3::setCol2( const Vector3 & _col2 ) -{ - mCol2 = _col2; - return *this; -} - -inline Matrix3 & Matrix3::setCol( int col, const Vector3 & vec ) -{ - *(&mCol0 + col) = vec; - return *this; -} - -inline Matrix3 & Matrix3::setRow( int row, const Vector3 & vec ) -{ - mCol0.setElem( row, vec.getElem( 0 ) ); - mCol1.setElem( row, vec.getElem( 1 ) ); - mCol2.setElem( row, vec.getElem( 2 ) ); - return *this; -} - -inline Matrix3 & Matrix3::setElem( int col, int row, float val ) -{ - Vector3 tmpV3_0; - tmpV3_0 = this->getCol( col ); - tmpV3_0.setElem( row, val ); - this->setCol( col, tmpV3_0 ); - return *this; -} - -inline float Matrix3::getElem( int col, int row ) const -{ - return this->getCol( col ).getElem( row ); -} - -inline const Vector3 Matrix3::getCol0( ) const -{ - return mCol0; -} - -inline const Vector3 Matrix3::getCol1( ) const -{ - return mCol1; -} - -inline const Vector3 Matrix3::getCol2( ) const -{ - return mCol2; -} - -inline const Vector3 Matrix3::getCol( int col ) const -{ - return *(&mCol0 + col); -} - -inline const Vector3 Matrix3::getRow( int row ) const -{ - return Vector3( mCol0.getElem( row ), mCol1.getElem( row ), mCol2.getElem( row ) ); -} - -inline Vector3 & Matrix3::operator []( int col ) -{ - return *(&mCol0 + col); -} - -inline const Vector3 Matrix3::operator []( int col ) const -{ - return *(&mCol0 + col); -} - -inline Matrix3 & Matrix3::operator =( const Matrix3 & mat ) -{ - mCol0 = mat.mCol0; - mCol1 = mat.mCol1; - mCol2 = mat.mCol2; - return *this; -} - -inline const Matrix3 transpose( const Matrix3 & mat ) -{ - return Matrix3( - Vector3( mat.getCol0().getX(), mat.getCol1().getX(), mat.getCol2().getX() ), - Vector3( mat.getCol0().getY(), mat.getCol1().getY(), mat.getCol2().getY() ), - Vector3( mat.getCol0().getZ(), mat.getCol1().getZ(), mat.getCol2().getZ() ) - ); -} - -inline const Matrix3 inverse( const Matrix3 & mat ) -{ - Vector3 tmp0, tmp1, tmp2; - float detinv; - tmp0 = cross( mat.getCol1(), mat.getCol2() ); - tmp1 = cross( mat.getCol2(), mat.getCol0() ); - tmp2 = cross( mat.getCol0(), mat.getCol1() ); - detinv = ( 1.0f / dot( mat.getCol2(), tmp2 ) ); - return Matrix3( - Vector3( ( tmp0.getX() * detinv ), ( tmp1.getX() * detinv ), ( tmp2.getX() * detinv ) ), - Vector3( ( tmp0.getY() * detinv ), ( tmp1.getY() * detinv ), ( tmp2.getY() * detinv ) ), - Vector3( ( tmp0.getZ() * detinv ), ( tmp1.getZ() * detinv ), ( tmp2.getZ() * detinv ) ) - ); -} - -inline float determinant( const Matrix3 & mat ) -{ - return dot( mat.getCol2(), cross( mat.getCol0(), mat.getCol1() ) ); -} - -inline const Matrix3 Matrix3::operator +( const Matrix3 & mat ) const -{ - return Matrix3( - ( mCol0 + mat.mCol0 ), - ( mCol1 + mat.mCol1 ), - ( mCol2 + mat.mCol2 ) - ); -} - -inline const Matrix3 Matrix3::operator -( const Matrix3 & mat ) const -{ - return Matrix3( - ( mCol0 - mat.mCol0 ), - ( mCol1 - mat.mCol1 ), - ( mCol2 - mat.mCol2 ) - ); -} - -inline Matrix3 & Matrix3::operator +=( const Matrix3 & mat ) -{ - *this = *this + mat; - return *this; -} - -inline Matrix3 & Matrix3::operator -=( const Matrix3 & mat ) -{ - *this = *this - mat; - return *this; -} - -inline const Matrix3 Matrix3::operator -( ) const -{ - return Matrix3( - ( -mCol0 ), - ( -mCol1 ), - ( -mCol2 ) - ); -} - -inline const Matrix3 absPerElem( const Matrix3 & mat ) -{ - return Matrix3( - absPerElem( mat.getCol0() ), - absPerElem( mat.getCol1() ), - absPerElem( mat.getCol2() ) - ); -} - -inline const Matrix3 Matrix3::operator *( float scalar ) const -{ - return Matrix3( - ( mCol0 * scalar ), - ( mCol1 * scalar ), - ( mCol2 * scalar ) - ); -} - -inline Matrix3 & Matrix3::operator *=( float scalar ) -{ - *this = *this * scalar; - return *this; -} - -inline const Matrix3 operator *( float scalar, const Matrix3 & mat ) -{ - return mat * scalar; -} - -inline const Vector3 Matrix3::operator *( const Vector3 & vec ) const -{ - return Vector3( - ( ( ( mCol0.getX() * vec.getX() ) + ( mCol1.getX() * vec.getY() ) ) + ( mCol2.getX() * vec.getZ() ) ), - ( ( ( mCol0.getY() * vec.getX() ) + ( mCol1.getY() * vec.getY() ) ) + ( mCol2.getY() * vec.getZ() ) ), - ( ( ( mCol0.getZ() * vec.getX() ) + ( mCol1.getZ() * vec.getY() ) ) + ( mCol2.getZ() * vec.getZ() ) ) - ); -} - -inline const Matrix3 Matrix3::operator *( const Matrix3 & mat ) const -{ - return Matrix3( - ( *this * mat.mCol0 ), - ( *this * mat.mCol1 ), - ( *this * mat.mCol2 ) - ); -} - -inline Matrix3 & Matrix3::operator *=( const Matrix3 & mat ) -{ - *this = *this * mat; - return *this; -} - -inline const Matrix3 mulPerElem( const Matrix3 & mat0, const Matrix3 & mat1 ) -{ - return Matrix3( - mulPerElem( mat0.getCol0(), mat1.getCol0() ), - mulPerElem( mat0.getCol1(), mat1.getCol1() ), - mulPerElem( mat0.getCol2(), mat1.getCol2() ) - ); -} - -inline const Matrix3 Matrix3::identity( ) -{ - return Matrix3( - Vector3::xAxis( ), - Vector3::yAxis( ), - Vector3::zAxis( ) - ); -} - -inline const Matrix3 Matrix3::rotationX( float radians ) -{ - float s, c; - s = sinf( radians ); - c = cosf( radians ); - return Matrix3( - Vector3::xAxis( ), - Vector3( 0.0f, c, s ), - Vector3( 0.0f, -s, c ) - ); -} - -inline const Matrix3 Matrix3::rotationY( float radians ) -{ - float s, c; - s = sinf( radians ); - c = cosf( radians ); - return Matrix3( - Vector3( c, 0.0f, -s ), - Vector3::yAxis( ), - Vector3( s, 0.0f, c ) - ); -} - -inline const Matrix3 Matrix3::rotationZ( float radians ) -{ - float s, c; - s = sinf( radians ); - c = cosf( radians ); - return Matrix3( - Vector3( c, s, 0.0f ), - Vector3( -s, c, 0.0f ), - Vector3::zAxis( ) - ); -} - -inline const Matrix3 Matrix3::rotationZYX( const Vector3 & radiansXYZ ) -{ - float sX, cX, sY, cY, sZ, cZ, tmp0, tmp1; - sX = sinf( radiansXYZ.getX() ); - cX = cosf( radiansXYZ.getX() ); - sY = sinf( radiansXYZ.getY() ); - cY = cosf( radiansXYZ.getY() ); - sZ = sinf( radiansXYZ.getZ() ); - cZ = cosf( radiansXYZ.getZ() ); - tmp0 = ( cZ * sY ); - tmp1 = ( sZ * sY ); - return Matrix3( - Vector3( ( cZ * cY ), ( sZ * cY ), -sY ), - Vector3( ( ( tmp0 * sX ) - ( sZ * cX ) ), ( ( tmp1 * sX ) + ( cZ * cX ) ), ( cY * sX ) ), - Vector3( ( ( tmp0 * cX ) + ( sZ * sX ) ), ( ( tmp1 * cX ) - ( cZ * sX ) ), ( cY * cX ) ) - ); -} - -inline const Matrix3 Matrix3::rotation( float radians, const Vector3 & unitVec ) -{ - float x, y, z, s, c, oneMinusC, xy, yz, zx; - s = sinf( radians ); - c = cosf( radians ); - x = unitVec.getX(); - y = unitVec.getY(); - z = unitVec.getZ(); - xy = ( x * y ); - yz = ( y * z ); - zx = ( z * x ); - oneMinusC = ( 1.0f - c ); - return Matrix3( - Vector3( ( ( ( x * x ) * oneMinusC ) + c ), ( ( xy * oneMinusC ) + ( z * s ) ), ( ( zx * oneMinusC ) - ( y * s ) ) ), - Vector3( ( ( xy * oneMinusC ) - ( z * s ) ), ( ( ( y * y ) * oneMinusC ) + c ), ( ( yz * oneMinusC ) + ( x * s ) ) ), - Vector3( ( ( zx * oneMinusC ) + ( y * s ) ), ( ( yz * oneMinusC ) - ( x * s ) ), ( ( ( z * z ) * oneMinusC ) + c ) ) - ); -} - -inline const Matrix3 Matrix3::rotation( const Quat & unitQuat ) -{ - return Matrix3( unitQuat ); -} - -inline const Matrix3 Matrix3::scale( const Vector3 & scaleVec ) -{ - return Matrix3( - Vector3( scaleVec.getX(), 0.0f, 0.0f ), - Vector3( 0.0f, scaleVec.getY(), 0.0f ), - Vector3( 0.0f, 0.0f, scaleVec.getZ() ) - ); -} - -inline const Matrix3 appendScale( const Matrix3 & mat, const Vector3 & scaleVec ) -{ - return Matrix3( - ( mat.getCol0() * scaleVec.getX( ) ), - ( mat.getCol1() * scaleVec.getY( ) ), - ( mat.getCol2() * scaleVec.getZ( ) ) - ); -} - -inline const Matrix3 prependScale( const Vector3 & scaleVec, const Matrix3 & mat ) -{ - return Matrix3( - mulPerElem( mat.getCol0(), scaleVec ), - mulPerElem( mat.getCol1(), scaleVec ), - mulPerElem( mat.getCol2(), scaleVec ) - ); -} - -inline const Matrix3 select( const Matrix3 & mat0, const Matrix3 & mat1, bool select1 ) -{ - return Matrix3( - select( mat0.getCol0(), mat1.getCol0(), select1 ), - select( mat0.getCol1(), mat1.getCol1(), select1 ), - select( mat0.getCol2(), mat1.getCol2(), select1 ) - ); -} - -#ifdef _VECTORMATH_DEBUG - -inline void print( const Matrix3 & mat ) -{ - print( mat.getRow( 0 ) ); - print( mat.getRow( 1 ) ); - print( mat.getRow( 2 ) ); -} - -inline void print( const Matrix3 & mat, const char * name ) -{ - printf("%s:\n", name); - print( mat ); -} - -#endif - -inline Matrix4::Matrix4( const Matrix4 & mat ) -{ - mCol0 = mat.mCol0; - mCol1 = mat.mCol1; - mCol2 = mat.mCol2; - mCol3 = mat.mCol3; -} - -inline Matrix4::Matrix4( float scalar ) -{ - mCol0 = Vector4( scalar ); - mCol1 = Vector4( scalar ); - mCol2 = Vector4( scalar ); - mCol3 = Vector4( scalar ); -} - -inline Matrix4::Matrix4( const Transform3 & mat ) -{ - mCol0 = Vector4( mat.getCol0(), 0.0f ); - mCol1 = Vector4( mat.getCol1(), 0.0f ); - mCol2 = Vector4( mat.getCol2(), 0.0f ); - mCol3 = Vector4( mat.getCol3(), 1.0f ); -} - -inline Matrix4::Matrix4( const Vector4 & _col0, const Vector4 & _col1, const Vector4 & _col2, const Vector4 & _col3 ) -{ - mCol0 = _col0; - mCol1 = _col1; - mCol2 = _col2; - mCol3 = _col3; -} - -inline Matrix4::Matrix4( const Matrix3 & mat, const Vector3 & translateVec ) -{ - mCol0 = Vector4( mat.getCol0(), 0.0f ); - mCol1 = Vector4( mat.getCol1(), 0.0f ); - mCol2 = Vector4( mat.getCol2(), 0.0f ); - mCol3 = Vector4( translateVec, 1.0f ); -} - -inline Matrix4::Matrix4( const Quat & unitQuat, const Vector3 & translateVec ) -{ - Matrix3 mat; - mat = Matrix3( unitQuat ); - mCol0 = Vector4( mat.getCol0(), 0.0f ); - mCol1 = Vector4( mat.getCol1(), 0.0f ); - mCol2 = Vector4( mat.getCol2(), 0.0f ); - mCol3 = Vector4( translateVec, 1.0f ); -} - -inline Matrix4 & Matrix4::setCol0( const Vector4 & _col0 ) -{ - mCol0 = _col0; - return *this; -} - -inline Matrix4 & Matrix4::setCol1( const Vector4 & _col1 ) -{ - mCol1 = _col1; - return *this; -} - -inline Matrix4 & Matrix4::setCol2( const Vector4 & _col2 ) -{ - mCol2 = _col2; - return *this; -} - -inline Matrix4 & Matrix4::setCol3( const Vector4 & _col3 ) -{ - mCol3 = _col3; - return *this; -} - -inline Matrix4 & Matrix4::setCol( int col, const Vector4 & vec ) -{ - *(&mCol0 + col) = vec; - return *this; -} - -inline Matrix4 & Matrix4::setRow( int row, const Vector4 & vec ) -{ - mCol0.setElem( row, vec.getElem( 0 ) ); - mCol1.setElem( row, vec.getElem( 1 ) ); - mCol2.setElem( row, vec.getElem( 2 ) ); - mCol3.setElem( row, vec.getElem( 3 ) ); - return *this; -} - -inline Matrix4 & Matrix4::setElem( int col, int row, float val ) -{ - Vector4 tmpV3_0; - tmpV3_0 = this->getCol( col ); - tmpV3_0.setElem( row, val ); - this->setCol( col, tmpV3_0 ); - return *this; -} - -inline float Matrix4::getElem( int col, int row ) const -{ - return this->getCol( col ).getElem( row ); -} - -inline const Vector4 Matrix4::getCol0( ) const -{ - return mCol0; -} - -inline const Vector4 Matrix4::getCol1( ) const -{ - return mCol1; -} - -inline const Vector4 Matrix4::getCol2( ) const -{ - return mCol2; -} - -inline const Vector4 Matrix4::getCol3( ) const -{ - return mCol3; -} - -inline const Vector4 Matrix4::getCol( int col ) const -{ - return *(&mCol0 + col); -} - -inline const Vector4 Matrix4::getRow( int row ) const -{ - return Vector4( mCol0.getElem( row ), mCol1.getElem( row ), mCol2.getElem( row ), mCol3.getElem( row ) ); -} - -inline Vector4 & Matrix4::operator []( int col ) -{ - return *(&mCol0 + col); -} - -inline const Vector4 Matrix4::operator []( int col ) const -{ - return *(&mCol0 + col); -} - -inline Matrix4 & Matrix4::operator =( const Matrix4 & mat ) -{ - mCol0 = mat.mCol0; - mCol1 = mat.mCol1; - mCol2 = mat.mCol2; - mCol3 = mat.mCol3; - return *this; -} - -inline const Matrix4 transpose( const Matrix4 & mat ) -{ - return Matrix4( - Vector4( mat.getCol0().getX(), mat.getCol1().getX(), mat.getCol2().getX(), mat.getCol3().getX() ), - Vector4( mat.getCol0().getY(), mat.getCol1().getY(), mat.getCol2().getY(), mat.getCol3().getY() ), - Vector4( mat.getCol0().getZ(), mat.getCol1().getZ(), mat.getCol2().getZ(), mat.getCol3().getZ() ), - Vector4( mat.getCol0().getW(), mat.getCol1().getW(), mat.getCol2().getW(), mat.getCol3().getW() ) - ); -} - -inline const Matrix4 inverse( const Matrix4 & mat ) -{ - Vector4 res0, res1, res2, res3; - float mA, mB, mC, mD, mE, mF, mG, mH, mI, mJ, mK, mL, mM, mN, mO, mP, tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, detInv; - mA = mat.getCol0().getX(); - mB = mat.getCol0().getY(); - mC = mat.getCol0().getZ(); - mD = mat.getCol0().getW(); - mE = mat.getCol1().getX(); - mF = mat.getCol1().getY(); - mG = mat.getCol1().getZ(); - mH = mat.getCol1().getW(); - mI = mat.getCol2().getX(); - mJ = mat.getCol2().getY(); - mK = mat.getCol2().getZ(); - mL = mat.getCol2().getW(); - mM = mat.getCol3().getX(); - mN = mat.getCol3().getY(); - mO = mat.getCol3().getZ(); - mP = mat.getCol3().getW(); - tmp0 = ( ( mK * mD ) - ( mC * mL ) ); - tmp1 = ( ( mO * mH ) - ( mG * mP ) ); - tmp2 = ( ( mB * mK ) - ( mJ * mC ) ); - tmp3 = ( ( mF * mO ) - ( mN * mG ) ); - tmp4 = ( ( mJ * mD ) - ( mB * mL ) ); - tmp5 = ( ( mN * mH ) - ( mF * mP ) ); - res0.setX( ( ( ( mJ * tmp1 ) - ( mL * tmp3 ) ) - ( mK * tmp5 ) ) ); - res0.setY( ( ( ( mN * tmp0 ) - ( mP * tmp2 ) ) - ( mO * tmp4 ) ) ); - res0.setZ( ( ( ( mD * tmp3 ) + ( mC * tmp5 ) ) - ( mB * tmp1 ) ) ); - res0.setW( ( ( ( mH * tmp2 ) + ( mG * tmp4 ) ) - ( mF * tmp0 ) ) ); - detInv = ( 1.0f / ( ( ( ( mA * res0.getX() ) + ( mE * res0.getY() ) ) + ( mI * res0.getZ() ) ) + ( mM * res0.getW() ) ) ); - res1.setX( ( mI * tmp1 ) ); - res1.setY( ( mM * tmp0 ) ); - res1.setZ( ( mA * tmp1 ) ); - res1.setW( ( mE * tmp0 ) ); - res3.setX( ( mI * tmp3 ) ); - res3.setY( ( mM * tmp2 ) ); - res3.setZ( ( mA * tmp3 ) ); - res3.setW( ( mE * tmp2 ) ); - res2.setX( ( mI * tmp5 ) ); - res2.setY( ( mM * tmp4 ) ); - res2.setZ( ( mA * tmp5 ) ); - res2.setW( ( mE * tmp4 ) ); - tmp0 = ( ( mI * mB ) - ( mA * mJ ) ); - tmp1 = ( ( mM * mF ) - ( mE * mN ) ); - tmp2 = ( ( mI * mD ) - ( mA * mL ) ); - tmp3 = ( ( mM * mH ) - ( mE * mP ) ); - tmp4 = ( ( mI * mC ) - ( mA * mK ) ); - tmp5 = ( ( mM * mG ) - ( mE * mO ) ); - res2.setX( ( ( ( mL * tmp1 ) - ( mJ * tmp3 ) ) + res2.getX() ) ); - res2.setY( ( ( ( mP * tmp0 ) - ( mN * tmp2 ) ) + res2.getY() ) ); - res2.setZ( ( ( ( mB * tmp3 ) - ( mD * tmp1 ) ) - res2.getZ() ) ); - res2.setW( ( ( ( mF * tmp2 ) - ( mH * tmp0 ) ) - res2.getW() ) ); - res3.setX( ( ( ( mJ * tmp5 ) - ( mK * tmp1 ) ) + res3.getX() ) ); - res3.setY( ( ( ( mN * tmp4 ) - ( mO * tmp0 ) ) + res3.getY() ) ); - res3.setZ( ( ( ( mC * tmp1 ) - ( mB * tmp5 ) ) - res3.getZ() ) ); - res3.setW( ( ( ( mG * tmp0 ) - ( mF * tmp4 ) ) - res3.getW() ) ); - res1.setX( ( ( ( mK * tmp3 ) - ( mL * tmp5 ) ) - res1.getX() ) ); - res1.setY( ( ( ( mO * tmp2 ) - ( mP * tmp4 ) ) - res1.getY() ) ); - res1.setZ( ( ( ( mD * tmp5 ) - ( mC * tmp3 ) ) + res1.getZ() ) ); - res1.setW( ( ( ( mH * tmp4 ) - ( mG * tmp2 ) ) + res1.getW() ) ); - return Matrix4( - ( res0 * detInv ), - ( res1 * detInv ), - ( res2 * detInv ), - ( res3 * detInv ) - ); -} - -inline const Matrix4 affineInverse( const Matrix4 & mat ) -{ - Transform3 affineMat; - affineMat.setCol0( mat.getCol0().getXYZ( ) ); - affineMat.setCol1( mat.getCol1().getXYZ( ) ); - affineMat.setCol2( mat.getCol2().getXYZ( ) ); - affineMat.setCol3( mat.getCol3().getXYZ( ) ); - return Matrix4( inverse( affineMat ) ); -} - -inline const Matrix4 orthoInverse( const Matrix4 & mat ) -{ - Transform3 affineMat; - affineMat.setCol0( mat.getCol0().getXYZ( ) ); - affineMat.setCol1( mat.getCol1().getXYZ( ) ); - affineMat.setCol2( mat.getCol2().getXYZ( ) ); - affineMat.setCol3( mat.getCol3().getXYZ( ) ); - return Matrix4( orthoInverse( affineMat ) ); -} - -inline float determinant( const Matrix4 & mat ) -{ - float dx, dy, dz, dw, mA, mB, mC, mD, mE, mF, mG, mH, mI, mJ, mK, mL, mM, mN, mO, mP, tmp0, tmp1, tmp2, tmp3, tmp4, tmp5; - mA = mat.getCol0().getX(); - mB = mat.getCol0().getY(); - mC = mat.getCol0().getZ(); - mD = mat.getCol0().getW(); - mE = mat.getCol1().getX(); - mF = mat.getCol1().getY(); - mG = mat.getCol1().getZ(); - mH = mat.getCol1().getW(); - mI = mat.getCol2().getX(); - mJ = mat.getCol2().getY(); - mK = mat.getCol2().getZ(); - mL = mat.getCol2().getW(); - mM = mat.getCol3().getX(); - mN = mat.getCol3().getY(); - mO = mat.getCol3().getZ(); - mP = mat.getCol3().getW(); - tmp0 = ( ( mK * mD ) - ( mC * mL ) ); - tmp1 = ( ( mO * mH ) - ( mG * mP ) ); - tmp2 = ( ( mB * mK ) - ( mJ * mC ) ); - tmp3 = ( ( mF * mO ) - ( mN * mG ) ); - tmp4 = ( ( mJ * mD ) - ( mB * mL ) ); - tmp5 = ( ( mN * mH ) - ( mF * mP ) ); - dx = ( ( ( mJ * tmp1 ) - ( mL * tmp3 ) ) - ( mK * tmp5 ) ); - dy = ( ( ( mN * tmp0 ) - ( mP * tmp2 ) ) - ( mO * tmp4 ) ); - dz = ( ( ( mD * tmp3 ) + ( mC * tmp5 ) ) - ( mB * tmp1 ) ); - dw = ( ( ( mH * tmp2 ) + ( mG * tmp4 ) ) - ( mF * tmp0 ) ); - return ( ( ( ( mA * dx ) + ( mE * dy ) ) + ( mI * dz ) ) + ( mM * dw ) ); -} - -inline const Matrix4 Matrix4::operator +( const Matrix4 & mat ) const -{ - return Matrix4( - ( mCol0 + mat.mCol0 ), - ( mCol1 + mat.mCol1 ), - ( mCol2 + mat.mCol2 ), - ( mCol3 + mat.mCol3 ) - ); -} - -inline const Matrix4 Matrix4::operator -( const Matrix4 & mat ) const -{ - return Matrix4( - ( mCol0 - mat.mCol0 ), - ( mCol1 - mat.mCol1 ), - ( mCol2 - mat.mCol2 ), - ( mCol3 - mat.mCol3 ) - ); -} - -inline Matrix4 & Matrix4::operator +=( const Matrix4 & mat ) -{ - *this = *this + mat; - return *this; -} - -inline Matrix4 & Matrix4::operator -=( const Matrix4 & mat ) -{ - *this = *this - mat; - return *this; -} - -inline const Matrix4 Matrix4::operator -( ) const -{ - return Matrix4( - ( -mCol0 ), - ( -mCol1 ), - ( -mCol2 ), - ( -mCol3 ) - ); -} - -inline const Matrix4 absPerElem( const Matrix4 & mat ) -{ - return Matrix4( - absPerElem( mat.getCol0() ), - absPerElem( mat.getCol1() ), - absPerElem( mat.getCol2() ), - absPerElem( mat.getCol3() ) - ); -} - -inline const Matrix4 Matrix4::operator *( float scalar ) const -{ - return Matrix4( - ( mCol0 * scalar ), - ( mCol1 * scalar ), - ( mCol2 * scalar ), - ( mCol3 * scalar ) - ); -} - -inline Matrix4 & Matrix4::operator *=( float scalar ) -{ - *this = *this * scalar; - return *this; -} - -inline const Matrix4 operator *( float scalar, const Matrix4 & mat ) -{ - return mat * scalar; -} - -inline const Vector4 Matrix4::operator *( const Vector4 & vec ) const -{ - return Vector4( - ( ( ( ( mCol0.getX() * vec.getX() ) + ( mCol1.getX() * vec.getY() ) ) + ( mCol2.getX() * vec.getZ() ) ) + ( mCol3.getX() * vec.getW() ) ), - ( ( ( ( mCol0.getY() * vec.getX() ) + ( mCol1.getY() * vec.getY() ) ) + ( mCol2.getY() * vec.getZ() ) ) + ( mCol3.getY() * vec.getW() ) ), - ( ( ( ( mCol0.getZ() * vec.getX() ) + ( mCol1.getZ() * vec.getY() ) ) + ( mCol2.getZ() * vec.getZ() ) ) + ( mCol3.getZ() * vec.getW() ) ), - ( ( ( ( mCol0.getW() * vec.getX() ) + ( mCol1.getW() * vec.getY() ) ) + ( mCol2.getW() * vec.getZ() ) ) + ( mCol3.getW() * vec.getW() ) ) - ); -} - -inline const Vector4 Matrix4::operator *( const Vector3 & vec ) const -{ - return Vector4( - ( ( ( mCol0.getX() * vec.getX() ) + ( mCol1.getX() * vec.getY() ) ) + ( mCol2.getX() * vec.getZ() ) ), - ( ( ( mCol0.getY() * vec.getX() ) + ( mCol1.getY() * vec.getY() ) ) + ( mCol2.getY() * vec.getZ() ) ), - ( ( ( mCol0.getZ() * vec.getX() ) + ( mCol1.getZ() * vec.getY() ) ) + ( mCol2.getZ() * vec.getZ() ) ), - ( ( ( mCol0.getW() * vec.getX() ) + ( mCol1.getW() * vec.getY() ) ) + ( mCol2.getW() * vec.getZ() ) ) - ); -} - -inline const Vector4 Matrix4::operator *( const Point3 & pnt ) const -{ - return Vector4( - ( ( ( ( mCol0.getX() * pnt.getX() ) + ( mCol1.getX() * pnt.getY() ) ) + ( mCol2.getX() * pnt.getZ() ) ) + mCol3.getX() ), - ( ( ( ( mCol0.getY() * pnt.getX() ) + ( mCol1.getY() * pnt.getY() ) ) + ( mCol2.getY() * pnt.getZ() ) ) + mCol3.getY() ), - ( ( ( ( mCol0.getZ() * pnt.getX() ) + ( mCol1.getZ() * pnt.getY() ) ) + ( mCol2.getZ() * pnt.getZ() ) ) + mCol3.getZ() ), - ( ( ( ( mCol0.getW() * pnt.getX() ) + ( mCol1.getW() * pnt.getY() ) ) + ( mCol2.getW() * pnt.getZ() ) ) + mCol3.getW() ) - ); -} - -inline const Matrix4 Matrix4::operator *( const Matrix4 & mat ) const -{ - return Matrix4( - ( *this * mat.mCol0 ), - ( *this * mat.mCol1 ), - ( *this * mat.mCol2 ), - ( *this * mat.mCol3 ) - ); -} - -inline Matrix4 & Matrix4::operator *=( const Matrix4 & mat ) -{ - *this = *this * mat; - return *this; -} - -inline const Matrix4 Matrix4::operator *( const Transform3 & tfrm ) const -{ - return Matrix4( - ( *this * tfrm.getCol0() ), - ( *this * tfrm.getCol1() ), - ( *this * tfrm.getCol2() ), - ( *this * Point3( tfrm.getCol3() ) ) - ); -} - -inline Matrix4 & Matrix4::operator *=( const Transform3 & tfrm ) -{ - *this = *this * tfrm; - return *this; -} - -inline const Matrix4 mulPerElem( const Matrix4 & mat0, const Matrix4 & mat1 ) -{ - return Matrix4( - mulPerElem( mat0.getCol0(), mat1.getCol0() ), - mulPerElem( mat0.getCol1(), mat1.getCol1() ), - mulPerElem( mat0.getCol2(), mat1.getCol2() ), - mulPerElem( mat0.getCol3(), mat1.getCol3() ) - ); -} - -inline const Matrix4 Matrix4::identity( ) -{ - return Matrix4( - Vector4::xAxis( ), - Vector4::yAxis( ), - Vector4::zAxis( ), - Vector4::wAxis( ) - ); -} - -inline Matrix4 & Matrix4::setUpper3x3( const Matrix3 & mat3 ) -{ - mCol0.setXYZ( mat3.getCol0() ); - mCol1.setXYZ( mat3.getCol1() ); - mCol2.setXYZ( mat3.getCol2() ); - return *this; -} - -inline const Matrix3 Matrix4::getUpper3x3( ) const -{ - return Matrix3( - mCol0.getXYZ( ), - mCol1.getXYZ( ), - mCol2.getXYZ( ) - ); -} - -inline Matrix4 & Matrix4::setTranslation( const Vector3 & translateVec ) -{ - mCol3.setXYZ( translateVec ); - return *this; -} - -inline const Vector3 Matrix4::getTranslation( ) const -{ - return mCol3.getXYZ( ); -} - -inline const Matrix4 Matrix4::rotationX( float radians ) -{ - float s, c; - s = sinf( radians ); - c = cosf( radians ); - return Matrix4( - Vector4::xAxis( ), - Vector4( 0.0f, c, s, 0.0f ), - Vector4( 0.0f, -s, c, 0.0f ), - Vector4::wAxis( ) - ); -} - -inline const Matrix4 Matrix4::rotationY( float radians ) -{ - float s, c; - s = sinf( radians ); - c = cosf( radians ); - return Matrix4( - Vector4( c, 0.0f, -s, 0.0f ), - Vector4::yAxis( ), - Vector4( s, 0.0f, c, 0.0f ), - Vector4::wAxis( ) - ); -} - -inline const Matrix4 Matrix4::rotationZ( float radians ) -{ - float s, c; - s = sinf( radians ); - c = cosf( radians ); - return Matrix4( - Vector4( c, s, 0.0f, 0.0f ), - Vector4( -s, c, 0.0f, 0.0f ), - Vector4::zAxis( ), - Vector4::wAxis( ) - ); -} - -inline const Matrix4 Matrix4::rotationZYX( const Vector3 & radiansXYZ ) -{ - float sX, cX, sY, cY, sZ, cZ, tmp0, tmp1; - sX = sinf( radiansXYZ.getX() ); - cX = cosf( radiansXYZ.getX() ); - sY = sinf( radiansXYZ.getY() ); - cY = cosf( radiansXYZ.getY() ); - sZ = sinf( radiansXYZ.getZ() ); - cZ = cosf( radiansXYZ.getZ() ); - tmp0 = ( cZ * sY ); - tmp1 = ( sZ * sY ); - return Matrix4( - Vector4( ( cZ * cY ), ( sZ * cY ), -sY, 0.0f ), - Vector4( ( ( tmp0 * sX ) - ( sZ * cX ) ), ( ( tmp1 * sX ) + ( cZ * cX ) ), ( cY * sX ), 0.0f ), - Vector4( ( ( tmp0 * cX ) + ( sZ * sX ) ), ( ( tmp1 * cX ) - ( cZ * sX ) ), ( cY * cX ), 0.0f ), - Vector4::wAxis( ) - ); -} - -inline const Matrix4 Matrix4::rotation( float radians, const Vector3 & unitVec ) -{ - float x, y, z, s, c, oneMinusC, xy, yz, zx; - s = sinf( radians ); - c = cosf( radians ); - x = unitVec.getX(); - y = unitVec.getY(); - z = unitVec.getZ(); - xy = ( x * y ); - yz = ( y * z ); - zx = ( z * x ); - oneMinusC = ( 1.0f - c ); - return Matrix4( - Vector4( ( ( ( x * x ) * oneMinusC ) + c ), ( ( xy * oneMinusC ) + ( z * s ) ), ( ( zx * oneMinusC ) - ( y * s ) ), 0.0f ), - Vector4( ( ( xy * oneMinusC ) - ( z * s ) ), ( ( ( y * y ) * oneMinusC ) + c ), ( ( yz * oneMinusC ) + ( x * s ) ), 0.0f ), - Vector4( ( ( zx * oneMinusC ) + ( y * s ) ), ( ( yz * oneMinusC ) - ( x * s ) ), ( ( ( z * z ) * oneMinusC ) + c ), 0.0f ), - Vector4::wAxis( ) - ); -} - -inline const Matrix4 Matrix4::rotation( const Quat & unitQuat ) -{ - return Matrix4( Transform3::rotation( unitQuat ) ); -} - -inline const Matrix4 Matrix4::scale( const Vector3 & scaleVec ) -{ - return Matrix4( - Vector4( scaleVec.getX(), 0.0f, 0.0f, 0.0f ), - Vector4( 0.0f, scaleVec.getY(), 0.0f, 0.0f ), - Vector4( 0.0f, 0.0f, scaleVec.getZ(), 0.0f ), - Vector4::wAxis( ) - ); -} - -inline const Matrix4 appendScale( const Matrix4 & mat, const Vector3 & scaleVec ) -{ - return Matrix4( - ( mat.getCol0() * scaleVec.getX( ) ), - ( mat.getCol1() * scaleVec.getY( ) ), - ( mat.getCol2() * scaleVec.getZ( ) ), - mat.getCol3() - ); -} - -inline const Matrix4 prependScale( const Vector3 & scaleVec, const Matrix4 & mat ) -{ - Vector4 scale4; - scale4 = Vector4( scaleVec, 1.0f ); - return Matrix4( - mulPerElem( mat.getCol0(), scale4 ), - mulPerElem( mat.getCol1(), scale4 ), - mulPerElem( mat.getCol2(), scale4 ), - mulPerElem( mat.getCol3(), scale4 ) - ); -} - -inline const Matrix4 Matrix4::translation( const Vector3 & translateVec ) -{ - return Matrix4( - Vector4::xAxis( ), - Vector4::yAxis( ), - Vector4::zAxis( ), - Vector4( translateVec, 1.0f ) - ); -} - -inline const Matrix4 Matrix4::lookAt( const Point3 & eyePos, const Point3 & lookAtPos, const Vector3 & upVec ) -{ - Matrix4 m4EyeFrame; - Vector3 v3X, v3Y, v3Z; - v3Y = normalize( upVec ); - v3Z = normalize( ( eyePos - lookAtPos ) ); - v3X = normalize( cross( v3Y, v3Z ) ); - v3Y = cross( v3Z, v3X ); - m4EyeFrame = Matrix4( Vector4( v3X ), Vector4( v3Y ), Vector4( v3Z ), Vector4( eyePos ) ); - return orthoInverse( m4EyeFrame ); -} - -inline const Matrix4 Matrix4::perspective( float fovyRadians, float aspect, float zNear, float zFar ) -{ - float f, rangeInv; - f = tanf( ( (float)( _VECTORMATH_PI_OVER_2 ) - ( 0.5f * fovyRadians ) ) ); - rangeInv = ( 1.0f / ( zNear - zFar ) ); - return Matrix4( - Vector4( ( f / aspect ), 0.0f, 0.0f, 0.0f ), - Vector4( 0.0f, f, 0.0f, 0.0f ), - Vector4( 0.0f, 0.0f, ( ( zNear + zFar ) * rangeInv ), -1.0f ), - Vector4( 0.0f, 0.0f, ( ( ( zNear * zFar ) * rangeInv ) * 2.0f ), 0.0f ) - ); -} - -inline const Matrix4 Matrix4::frustum( float left, float right, float bottom, float top, float zNear, float zFar ) -{ - float sum_rl, sum_tb, sum_nf, inv_rl, inv_tb, inv_nf, n2; - sum_rl = ( right + left ); - sum_tb = ( top + bottom ); - sum_nf = ( zNear + zFar ); - inv_rl = ( 1.0f / ( right - left ) ); - inv_tb = ( 1.0f / ( top - bottom ) ); - inv_nf = ( 1.0f / ( zNear - zFar ) ); - n2 = ( zNear + zNear ); - return Matrix4( - Vector4( ( n2 * inv_rl ), 0.0f, 0.0f, 0.0f ), - Vector4( 0.0f, ( n2 * inv_tb ), 0.0f, 0.0f ), - Vector4( ( sum_rl * inv_rl ), ( sum_tb * inv_tb ), ( sum_nf * inv_nf ), -1.0f ), - Vector4( 0.0f, 0.0f, ( ( n2 * inv_nf ) * zFar ), 0.0f ) - ); -} - -inline const Matrix4 Matrix4::orthographic( float left, float right, float bottom, float top, float zNear, float zFar ) -{ - float sum_rl, sum_tb, sum_nf, inv_rl, inv_tb, inv_nf; - sum_rl = ( right + left ); - sum_tb = ( top + bottom ); - sum_nf = ( zNear + zFar ); - inv_rl = ( 1.0f / ( right - left ) ); - inv_tb = ( 1.0f / ( top - bottom ) ); - inv_nf = ( 1.0f / ( zNear - zFar ) ); - return Matrix4( - Vector4( ( inv_rl + inv_rl ), 0.0f, 0.0f, 0.0f ), - Vector4( 0.0f, ( inv_tb + inv_tb ), 0.0f, 0.0f ), - Vector4( 0.0f, 0.0f, ( inv_nf + inv_nf ), 0.0f ), - Vector4( ( -sum_rl * inv_rl ), ( -sum_tb * inv_tb ), ( sum_nf * inv_nf ), 1.0f ) - ); -} - -inline const Matrix4 select( const Matrix4 & mat0, const Matrix4 & mat1, bool select1 ) -{ - return Matrix4( - select( mat0.getCol0(), mat1.getCol0(), select1 ), - select( mat0.getCol1(), mat1.getCol1(), select1 ), - select( mat0.getCol2(), mat1.getCol2(), select1 ), - select( mat0.getCol3(), mat1.getCol3(), select1 ) - ); -} - -#ifdef _VECTORMATH_DEBUG - -inline void print( const Matrix4 & mat ) -{ - print( mat.getRow( 0 ) ); - print( mat.getRow( 1 ) ); - print( mat.getRow( 2 ) ); - print( mat.getRow( 3 ) ); -} - -inline void print( const Matrix4 & mat, const char * name ) -{ - printf("%s:\n", name); - print( mat ); -} - -#endif - -inline Transform3::Transform3( const Transform3 & tfrm ) -{ - mCol0 = tfrm.mCol0; - mCol1 = tfrm.mCol1; - mCol2 = tfrm.mCol2; - mCol3 = tfrm.mCol3; -} - -inline Transform3::Transform3( float scalar ) -{ - mCol0 = Vector3( scalar ); - mCol1 = Vector3( scalar ); - mCol2 = Vector3( scalar ); - mCol3 = Vector3( scalar ); -} - -inline Transform3::Transform3( const Vector3 & _col0, const Vector3 & _col1, const Vector3 & _col2, const Vector3 & _col3 ) -{ - mCol0 = _col0; - mCol1 = _col1; - mCol2 = _col2; - mCol3 = _col3; -} - -inline Transform3::Transform3( const Matrix3 & tfrm, const Vector3 & translateVec ) -{ - this->setUpper3x3( tfrm ); - this->setTranslation( translateVec ); -} - -inline Transform3::Transform3( const Quat & unitQuat, const Vector3 & translateVec ) -{ - this->setUpper3x3( Matrix3( unitQuat ) ); - this->setTranslation( translateVec ); -} - -inline Transform3 & Transform3::setCol0( const Vector3 & _col0 ) -{ - mCol0 = _col0; - return *this; -} - -inline Transform3 & Transform3::setCol1( const Vector3 & _col1 ) -{ - mCol1 = _col1; - return *this; -} - -inline Transform3 & Transform3::setCol2( const Vector3 & _col2 ) -{ - mCol2 = _col2; - return *this; -} - -inline Transform3 & Transform3::setCol3( const Vector3 & _col3 ) -{ - mCol3 = _col3; - return *this; -} - -inline Transform3 & Transform3::setCol( int col, const Vector3 & vec ) -{ - *(&mCol0 + col) = vec; - return *this; -} - -inline Transform3 & Transform3::setRow( int row, const Vector4 & vec ) -{ - mCol0.setElem( row, vec.getElem( 0 ) ); - mCol1.setElem( row, vec.getElem( 1 ) ); - mCol2.setElem( row, vec.getElem( 2 ) ); - mCol3.setElem( row, vec.getElem( 3 ) ); - return *this; -} - -inline Transform3 & Transform3::setElem( int col, int row, float val ) -{ - Vector3 tmpV3_0; - tmpV3_0 = this->getCol( col ); - tmpV3_0.setElem( row, val ); - this->setCol( col, tmpV3_0 ); - return *this; -} - -inline float Transform3::getElem( int col, int row ) const -{ - return this->getCol( col ).getElem( row ); -} - -inline const Vector3 Transform3::getCol0( ) const -{ - return mCol0; -} - -inline const Vector3 Transform3::getCol1( ) const -{ - return mCol1; -} - -inline const Vector3 Transform3::getCol2( ) const -{ - return mCol2; -} - -inline const Vector3 Transform3::getCol3( ) const -{ - return mCol3; -} - -inline const Vector3 Transform3::getCol( int col ) const -{ - return *(&mCol0 + col); -} - -inline const Vector4 Transform3::getRow( int row ) const -{ - return Vector4( mCol0.getElem( row ), mCol1.getElem( row ), mCol2.getElem( row ), mCol3.getElem( row ) ); -} - -inline Vector3 & Transform3::operator []( int col ) -{ - return *(&mCol0 + col); -} - -inline const Vector3 Transform3::operator []( int col ) const -{ - return *(&mCol0 + col); -} - -inline Transform3 & Transform3::operator =( const Transform3 & tfrm ) -{ - mCol0 = tfrm.mCol0; - mCol1 = tfrm.mCol1; - mCol2 = tfrm.mCol2; - mCol3 = tfrm.mCol3; - return *this; -} - -inline const Transform3 inverse( const Transform3 & tfrm ) -{ - Vector3 tmp0, tmp1, tmp2, inv0, inv1, inv2; - float detinv; - tmp0 = cross( tfrm.getCol1(), tfrm.getCol2() ); - tmp1 = cross( tfrm.getCol2(), tfrm.getCol0() ); - tmp2 = cross( tfrm.getCol0(), tfrm.getCol1() ); - detinv = ( 1.0f / dot( tfrm.getCol2(), tmp2 ) ); - inv0 = Vector3( ( tmp0.getX() * detinv ), ( tmp1.getX() * detinv ), ( tmp2.getX() * detinv ) ); - inv1 = Vector3( ( tmp0.getY() * detinv ), ( tmp1.getY() * detinv ), ( tmp2.getY() * detinv ) ); - inv2 = Vector3( ( tmp0.getZ() * detinv ), ( tmp1.getZ() * detinv ), ( tmp2.getZ() * detinv ) ); - return Transform3( - inv0, - inv1, - inv2, - Vector3( ( -( ( inv0 * tfrm.getCol3().getX() ) + ( ( inv1 * tfrm.getCol3().getY() ) + ( inv2 * tfrm.getCol3().getZ() ) ) ) ) ) - ); -} - -inline const Transform3 orthoInverse( const Transform3 & tfrm ) -{ - Vector3 inv0, inv1, inv2; - inv0 = Vector3( tfrm.getCol0().getX(), tfrm.getCol1().getX(), tfrm.getCol2().getX() ); - inv1 = Vector3( tfrm.getCol0().getY(), tfrm.getCol1().getY(), tfrm.getCol2().getY() ); - inv2 = Vector3( tfrm.getCol0().getZ(), tfrm.getCol1().getZ(), tfrm.getCol2().getZ() ); - return Transform3( - inv0, - inv1, - inv2, - Vector3( ( -( ( inv0 * tfrm.getCol3().getX() ) + ( ( inv1 * tfrm.getCol3().getY() ) + ( inv2 * tfrm.getCol3().getZ() ) ) ) ) ) - ); -} - -inline const Transform3 absPerElem( const Transform3 & tfrm ) -{ - return Transform3( - absPerElem( tfrm.getCol0() ), - absPerElem( tfrm.getCol1() ), - absPerElem( tfrm.getCol2() ), - absPerElem( tfrm.getCol3() ) - ); -} - -inline const Vector3 Transform3::operator *( const Vector3 & vec ) const -{ - return Vector3( - ( ( ( mCol0.getX() * vec.getX() ) + ( mCol1.getX() * vec.getY() ) ) + ( mCol2.getX() * vec.getZ() ) ), - ( ( ( mCol0.getY() * vec.getX() ) + ( mCol1.getY() * vec.getY() ) ) + ( mCol2.getY() * vec.getZ() ) ), - ( ( ( mCol0.getZ() * vec.getX() ) + ( mCol1.getZ() * vec.getY() ) ) + ( mCol2.getZ() * vec.getZ() ) ) - ); -} - -inline const Point3 Transform3::operator *( const Point3 & pnt ) const -{ - return Point3( - ( ( ( ( mCol0.getX() * pnt.getX() ) + ( mCol1.getX() * pnt.getY() ) ) + ( mCol2.getX() * pnt.getZ() ) ) + mCol3.getX() ), - ( ( ( ( mCol0.getY() * pnt.getX() ) + ( mCol1.getY() * pnt.getY() ) ) + ( mCol2.getY() * pnt.getZ() ) ) + mCol3.getY() ), - ( ( ( ( mCol0.getZ() * pnt.getX() ) + ( mCol1.getZ() * pnt.getY() ) ) + ( mCol2.getZ() * pnt.getZ() ) ) + mCol3.getZ() ) - ); -} - -inline const Transform3 Transform3::operator *( const Transform3 & tfrm ) const -{ - return Transform3( - ( *this * tfrm.mCol0 ), - ( *this * tfrm.mCol1 ), - ( *this * tfrm.mCol2 ), - Vector3( ( *this * Point3( tfrm.mCol3 ) ) ) - ); -} - -inline Transform3 & Transform3::operator *=( const Transform3 & tfrm ) -{ - *this = *this * tfrm; - return *this; -} - -inline const Transform3 mulPerElem( const Transform3 & tfrm0, const Transform3 & tfrm1 ) -{ - return Transform3( - mulPerElem( tfrm0.getCol0(), tfrm1.getCol0() ), - mulPerElem( tfrm0.getCol1(), tfrm1.getCol1() ), - mulPerElem( tfrm0.getCol2(), tfrm1.getCol2() ), - mulPerElem( tfrm0.getCol3(), tfrm1.getCol3() ) - ); -} - -inline const Transform3 Transform3::identity( ) -{ - return Transform3( - Vector3::xAxis( ), - Vector3::yAxis( ), - Vector3::zAxis( ), - Vector3( 0.0f ) - ); -} - -inline Transform3 & Transform3::setUpper3x3( const Matrix3 & tfrm ) -{ - mCol0 = tfrm.getCol0(); - mCol1 = tfrm.getCol1(); - mCol2 = tfrm.getCol2(); - return *this; -} - -inline const Matrix3 Transform3::getUpper3x3( ) const -{ - return Matrix3( mCol0, mCol1, mCol2 ); -} - -inline Transform3 & Transform3::setTranslation( const Vector3 & translateVec ) -{ - mCol3 = translateVec; - return *this; -} - -inline const Vector3 Transform3::getTranslation( ) const -{ - return mCol3; -} - -inline const Transform3 Transform3::rotationX( float radians ) -{ - float s, c; - s = sinf( radians ); - c = cosf( radians ); - return Transform3( - Vector3::xAxis( ), - Vector3( 0.0f, c, s ), - Vector3( 0.0f, -s, c ), - Vector3( 0.0f ) - ); -} - -inline const Transform3 Transform3::rotationY( float radians ) -{ - float s, c; - s = sinf( radians ); - c = cosf( radians ); - return Transform3( - Vector3( c, 0.0f, -s ), - Vector3::yAxis( ), - Vector3( s, 0.0f, c ), - Vector3( 0.0f ) - ); -} - -inline const Transform3 Transform3::rotationZ( float radians ) -{ - float s, c; - s = sinf( radians ); - c = cosf( radians ); - return Transform3( - Vector3( c, s, 0.0f ), - Vector3( -s, c, 0.0f ), - Vector3::zAxis( ), - Vector3( 0.0f ) - ); -} - -inline const Transform3 Transform3::rotationZYX( const Vector3 & radiansXYZ ) -{ - float sX, cX, sY, cY, sZ, cZ, tmp0, tmp1; - sX = sinf( radiansXYZ.getX() ); - cX = cosf( radiansXYZ.getX() ); - sY = sinf( radiansXYZ.getY() ); - cY = cosf( radiansXYZ.getY() ); - sZ = sinf( radiansXYZ.getZ() ); - cZ = cosf( radiansXYZ.getZ() ); - tmp0 = ( cZ * sY ); - tmp1 = ( sZ * sY ); - return Transform3( - Vector3( ( cZ * cY ), ( sZ * cY ), -sY ), - Vector3( ( ( tmp0 * sX ) - ( sZ * cX ) ), ( ( tmp1 * sX ) + ( cZ * cX ) ), ( cY * sX ) ), - Vector3( ( ( tmp0 * cX ) + ( sZ * sX ) ), ( ( tmp1 * cX ) - ( cZ * sX ) ), ( cY * cX ) ), - Vector3( 0.0f ) - ); -} - -inline const Transform3 Transform3::rotation( float radians, const Vector3 & unitVec ) -{ - return Transform3( Matrix3::rotation( radians, unitVec ), Vector3( 0.0f ) ); -} - -inline const Transform3 Transform3::rotation( const Quat & unitQuat ) -{ - return Transform3( Matrix3( unitQuat ), Vector3( 0.0f ) ); -} - -inline const Transform3 Transform3::scale( const Vector3 & scaleVec ) -{ - return Transform3( - Vector3( scaleVec.getX(), 0.0f, 0.0f ), - Vector3( 0.0f, scaleVec.getY(), 0.0f ), - Vector3( 0.0f, 0.0f, scaleVec.getZ() ), - Vector3( 0.0f ) - ); -} - -inline const Transform3 appendScale( const Transform3 & tfrm, const Vector3 & scaleVec ) -{ - return Transform3( - ( tfrm.getCol0() * scaleVec.getX( ) ), - ( tfrm.getCol1() * scaleVec.getY( ) ), - ( tfrm.getCol2() * scaleVec.getZ( ) ), - tfrm.getCol3() - ); -} - -inline const Transform3 prependScale( const Vector3 & scaleVec, const Transform3 & tfrm ) -{ - return Transform3( - mulPerElem( tfrm.getCol0(), scaleVec ), - mulPerElem( tfrm.getCol1(), scaleVec ), - mulPerElem( tfrm.getCol2(), scaleVec ), - mulPerElem( tfrm.getCol3(), scaleVec ) - ); -} - -inline const Transform3 Transform3::translation( const Vector3 & translateVec ) -{ - return Transform3( - Vector3::xAxis( ), - Vector3::yAxis( ), - Vector3::zAxis( ), - translateVec - ); -} - -inline const Transform3 select( const Transform3 & tfrm0, const Transform3 & tfrm1, bool select1 ) -{ - return Transform3( - select( tfrm0.getCol0(), tfrm1.getCol0(), select1 ), - select( tfrm0.getCol1(), tfrm1.getCol1(), select1 ), - select( tfrm0.getCol2(), tfrm1.getCol2(), select1 ), - select( tfrm0.getCol3(), tfrm1.getCol3(), select1 ) - ); -} - -#ifdef _VECTORMATH_DEBUG - -inline void print( const Transform3 & tfrm ) -{ - print( tfrm.getRow( 0 ) ); - print( tfrm.getRow( 1 ) ); - print( tfrm.getRow( 2 ) ); -} - -inline void print( const Transform3 & tfrm, const char * name ) -{ - printf("%s:\n", name); - print( tfrm ); -} - -#endif - -inline Quat::Quat( const Matrix3 & tfrm ) -{ - float trace, radicand, scale, xx, yx, zx, xy, yy, zy, xz, yz, zz, tmpx, tmpy, tmpz, tmpw, qx, qy, qz, qw; - int negTrace, ZgtX, ZgtY, YgtX; - int largestXorY, largestYorZ, largestZorX; - - xx = tfrm.getCol0().getX(); - yx = tfrm.getCol0().getY(); - zx = tfrm.getCol0().getZ(); - xy = tfrm.getCol1().getX(); - yy = tfrm.getCol1().getY(); - zy = tfrm.getCol1().getZ(); - xz = tfrm.getCol2().getX(); - yz = tfrm.getCol2().getY(); - zz = tfrm.getCol2().getZ(); - - trace = ( ( xx + yy ) + zz ); - - negTrace = ( trace < 0.0f ); - ZgtX = zz > xx; - ZgtY = zz > yy; - YgtX = yy > xx; - largestXorY = ( !ZgtX || !ZgtY ) && negTrace; - largestYorZ = ( YgtX || ZgtX ) && negTrace; - largestZorX = ( ZgtY || !YgtX ) && negTrace; - - if ( largestXorY ) - { - zz = -zz; - xy = -xy; - } - if ( largestYorZ ) - { - xx = -xx; - yz = -yz; - } - if ( largestZorX ) - { - yy = -yy; - zx = -zx; - } - - radicand = ( ( ( xx + yy ) + zz ) + 1.0f ); - scale = ( 0.5f * ( 1.0f / sqrtf( radicand ) ) ); - - tmpx = ( ( zy - yz ) * scale ); - tmpy = ( ( xz - zx ) * scale ); - tmpz = ( ( yx - xy ) * scale ); - tmpw = ( radicand * scale ); - qx = tmpx; - qy = tmpy; - qz = tmpz; - qw = tmpw; - - if ( largestXorY ) - { - qx = tmpw; - qy = tmpz; - qz = tmpy; - qw = tmpx; - } - if ( largestYorZ ) - { - tmpx = qx; - tmpz = qz; - qx = qy; - qy = tmpx; - qz = qw; - qw = tmpz; - } - - mX = qx; - mY = qy; - mZ = qz; - mW = qw; -} - -inline const Matrix3 outer( const Vector3 & tfrm0, const Vector3 & tfrm1 ) -{ - return Matrix3( - ( tfrm0 * tfrm1.getX( ) ), - ( tfrm0 * tfrm1.getY( ) ), - ( tfrm0 * tfrm1.getZ( ) ) - ); -} - -inline const Matrix4 outer( const Vector4 & tfrm0, const Vector4 & tfrm1 ) -{ - return Matrix4( - ( tfrm0 * tfrm1.getX( ) ), - ( tfrm0 * tfrm1.getY( ) ), - ( tfrm0 * tfrm1.getZ( ) ), - ( tfrm0 * tfrm1.getW( ) ) - ); -} - -inline const Vector3 rowMul( const Vector3 & vec, const Matrix3 & mat ) -{ - return Vector3( - ( ( ( vec.getX() * mat.getCol0().getX() ) + ( vec.getY() * mat.getCol0().getY() ) ) + ( vec.getZ() * mat.getCol0().getZ() ) ), - ( ( ( vec.getX() * mat.getCol1().getX() ) + ( vec.getY() * mat.getCol1().getY() ) ) + ( vec.getZ() * mat.getCol1().getZ() ) ), - ( ( ( vec.getX() * mat.getCol2().getX() ) + ( vec.getY() * mat.getCol2().getY() ) ) + ( vec.getZ() * mat.getCol2().getZ() ) ) - ); -} - -inline const Matrix3 crossMatrix( const Vector3 & vec ) -{ - return Matrix3( - Vector3( 0.0f, vec.getZ(), -vec.getY() ), - Vector3( -vec.getZ(), 0.0f, vec.getX() ), - Vector3( vec.getY(), -vec.getX(), 0.0f ) - ); -} - -inline const Matrix3 crossMatrixMul( const Vector3 & vec, const Matrix3 & mat ) -{ - return Matrix3( cross( vec, mat.getCol0() ), cross( vec, mat.getCol1() ), cross( vec, mat.getCol2() ) ); -} - -} // namespace Aos -} // namespace Vectormath - -#endif diff --git a/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/quat_aos.h b/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/quat_aos.h deleted file mode 100644 index 764e01708f9..00000000000 --- a/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/quat_aos.h +++ /dev/null @@ -1,433 +0,0 @@ -/* - Copyright (C) 2009 Sony Computer Entertainment Inc. - All rights reserved. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -*/ - -#ifndef _VECTORMATH_QUAT_AOS_CPP_H -#define _VECTORMATH_QUAT_AOS_CPP_H - -//----------------------------------------------------------------------------- -// Definitions - -#ifndef _VECTORMATH_INTERNAL_FUNCTIONS -#define _VECTORMATH_INTERNAL_FUNCTIONS - -#endif - -namespace Vectormath { -namespace Aos { - -inline Quat::Quat( const Quat & quat ) -{ - mX = quat.mX; - mY = quat.mY; - mZ = quat.mZ; - mW = quat.mW; -} - -inline Quat::Quat( float _x, float _y, float _z, float _w ) -{ - mX = _x; - mY = _y; - mZ = _z; - mW = _w; -} - -inline Quat::Quat( const Vector3 & xyz, float _w ) -{ - this->setXYZ( xyz ); - this->setW( _w ); -} - -inline Quat::Quat( const Vector4 & vec ) -{ - mX = vec.getX(); - mY = vec.getY(); - mZ = vec.getZ(); - mW = vec.getW(); -} - -inline Quat::Quat( float scalar ) -{ - mX = scalar; - mY = scalar; - mZ = scalar; - mW = scalar; -} - -inline const Quat Quat::identity( ) -{ - return Quat( 0.0f, 0.0f, 0.0f, 1.0f ); -} - -inline const Quat lerp( float t, const Quat & quat0, const Quat & quat1 ) -{ - return ( quat0 + ( ( quat1 - quat0 ) * t ) ); -} - -inline const Quat slerp( float t, const Quat & unitQuat0, const Quat & unitQuat1 ) -{ - Quat start; - float recipSinAngle, scale0, scale1, cosAngle, angle; - cosAngle = dot( unitQuat0, unitQuat1 ); - if ( cosAngle < 0.0f ) { - cosAngle = -cosAngle; - start = ( -unitQuat0 ); - } else { - start = unitQuat0; - } - if ( cosAngle < _VECTORMATH_SLERP_TOL ) { - angle = acosf( cosAngle ); - recipSinAngle = ( 1.0f / sinf( angle ) ); - scale0 = ( sinf( ( ( 1.0f - t ) * angle ) ) * recipSinAngle ); - scale1 = ( sinf( ( t * angle ) ) * recipSinAngle ); - } else { - scale0 = ( 1.0f - t ); - scale1 = t; - } - return ( ( start * scale0 ) + ( unitQuat1 * scale1 ) ); -} - -inline const Quat squad( float t, const Quat & unitQuat0, const Quat & unitQuat1, const Quat & unitQuat2, const Quat & unitQuat3 ) -{ - Quat tmp0, tmp1; - tmp0 = slerp( t, unitQuat0, unitQuat3 ); - tmp1 = slerp( t, unitQuat1, unitQuat2 ); - return slerp( ( ( 2.0f * t ) * ( 1.0f - t ) ), tmp0, tmp1 ); -} - -inline void loadXYZW( Quat & quat, const float * fptr ) -{ - quat = Quat( fptr[0], fptr[1], fptr[2], fptr[3] ); -} - -inline void storeXYZW( const Quat & quat, float * fptr ) -{ - fptr[0] = quat.getX(); - fptr[1] = quat.getY(); - fptr[2] = quat.getZ(); - fptr[3] = quat.getW(); -} - -inline Quat & Quat::operator =( const Quat & quat ) -{ - mX = quat.mX; - mY = quat.mY; - mZ = quat.mZ; - mW = quat.mW; - return *this; -} - -inline Quat & Quat::setXYZ( const Vector3 & vec ) -{ - mX = vec.getX(); - mY = vec.getY(); - mZ = vec.getZ(); - return *this; -} - -inline const Vector3 Quat::getXYZ( ) const -{ - return Vector3( mX, mY, mZ ); -} - -inline Quat & Quat::setX( float _x ) -{ - mX = _x; - return *this; -} - -inline float Quat::getX( ) const -{ - return mX; -} - -inline Quat & Quat::setY( float _y ) -{ - mY = _y; - return *this; -} - -inline float Quat::getY( ) const -{ - return mY; -} - -inline Quat & Quat::setZ( float _z ) -{ - mZ = _z; - return *this; -} - -inline float Quat::getZ( ) const -{ - return mZ; -} - -inline Quat & Quat::setW( float _w ) -{ - mW = _w; - return *this; -} - -inline float Quat::getW( ) const -{ - return mW; -} - -inline Quat & Quat::setElem( int idx, float value ) -{ - *(&mX + idx) = value; - return *this; -} - -inline float Quat::getElem( int idx ) const -{ - return *(&mX + idx); -} - -inline float & Quat::operator []( int idx ) -{ - return *(&mX + idx); -} - -inline float Quat::operator []( int idx ) const -{ - return *(&mX + idx); -} - -inline const Quat Quat::operator +( const Quat & quat ) const -{ - return Quat( - ( mX + quat.mX ), - ( mY + quat.mY ), - ( mZ + quat.mZ ), - ( mW + quat.mW ) - ); -} - -inline const Quat Quat::operator -( const Quat & quat ) const -{ - return Quat( - ( mX - quat.mX ), - ( mY - quat.mY ), - ( mZ - quat.mZ ), - ( mW - quat.mW ) - ); -} - -inline const Quat Quat::operator *( float scalar ) const -{ - return Quat( - ( mX * scalar ), - ( mY * scalar ), - ( mZ * scalar ), - ( mW * scalar ) - ); -} - -inline Quat & Quat::operator +=( const Quat & quat ) -{ - *this = *this + quat; - return *this; -} - -inline Quat & Quat::operator -=( const Quat & quat ) -{ - *this = *this - quat; - return *this; -} - -inline Quat & Quat::operator *=( float scalar ) -{ - *this = *this * scalar; - return *this; -} - -inline const Quat Quat::operator /( float scalar ) const -{ - return Quat( - ( mX / scalar ), - ( mY / scalar ), - ( mZ / scalar ), - ( mW / scalar ) - ); -} - -inline Quat & Quat::operator /=( float scalar ) -{ - *this = *this / scalar; - return *this; -} - -inline const Quat Quat::operator -( ) const -{ - return Quat( - -mX, - -mY, - -mZ, - -mW - ); -} - -inline const Quat operator *( float scalar, const Quat & quat ) -{ - return quat * scalar; -} - -inline float dot( const Quat & quat0, const Quat & quat1 ) -{ - float result; - result = ( quat0.getX() * quat1.getX() ); - result = ( result + ( quat0.getY() * quat1.getY() ) ); - result = ( result + ( quat0.getZ() * quat1.getZ() ) ); - result = ( result + ( quat0.getW() * quat1.getW() ) ); - return result; -} - -inline float norm( const Quat & quat ) -{ - float result; - result = ( quat.getX() * quat.getX() ); - result = ( result + ( quat.getY() * quat.getY() ) ); - result = ( result + ( quat.getZ() * quat.getZ() ) ); - result = ( result + ( quat.getW() * quat.getW() ) ); - return result; -} - -inline float length( const Quat & quat ) -{ - return ::sqrtf( norm( quat ) ); -} - -inline const Quat normalize( const Quat & quat ) -{ - float lenSqr, lenInv; - lenSqr = norm( quat ); - lenInv = ( 1.0f / sqrtf( lenSqr ) ); - return Quat( - ( quat.getX() * lenInv ), - ( quat.getY() * lenInv ), - ( quat.getZ() * lenInv ), - ( quat.getW() * lenInv ) - ); -} - -inline const Quat Quat::rotation( const Vector3 & unitVec0, const Vector3 & unitVec1 ) -{ - float cosHalfAngleX2, recipCosHalfAngleX2; - cosHalfAngleX2 = sqrtf( ( 2.0f * ( 1.0f + dot( unitVec0, unitVec1 ) ) ) ); - recipCosHalfAngleX2 = ( 1.0f / cosHalfAngleX2 ); - return Quat( ( cross( unitVec0, unitVec1 ) * recipCosHalfAngleX2 ), ( cosHalfAngleX2 * 0.5f ) ); -} - -inline const Quat Quat::rotation( float radians, const Vector3 & unitVec ) -{ - float s, c, angle; - angle = ( radians * 0.5f ); - s = sinf( angle ); - c = cosf( angle ); - return Quat( ( unitVec * s ), c ); -} - -inline const Quat Quat::rotationX( float radians ) -{ - float s, c, angle; - angle = ( radians * 0.5f ); - s = sinf( angle ); - c = cosf( angle ); - return Quat( s, 0.0f, 0.0f, c ); -} - -inline const Quat Quat::rotationY( float radians ) -{ - float s, c, angle; - angle = ( radians * 0.5f ); - s = sinf( angle ); - c = cosf( angle ); - return Quat( 0.0f, s, 0.0f, c ); -} - -inline const Quat Quat::rotationZ( float radians ) -{ - float s, c, angle; - angle = ( radians * 0.5f ); - s = sinf( angle ); - c = cosf( angle ); - return Quat( 0.0f, 0.0f, s, c ); -} - -inline const Quat Quat::operator *( const Quat & quat ) const -{ - return Quat( - ( ( ( ( mW * quat.mX ) + ( mX * quat.mW ) ) + ( mY * quat.mZ ) ) - ( mZ * quat.mY ) ), - ( ( ( ( mW * quat.mY ) + ( mY * quat.mW ) ) + ( mZ * quat.mX ) ) - ( mX * quat.mZ ) ), - ( ( ( ( mW * quat.mZ ) + ( mZ * quat.mW ) ) + ( mX * quat.mY ) ) - ( mY * quat.mX ) ), - ( ( ( ( mW * quat.mW ) - ( mX * quat.mX ) ) - ( mY * quat.mY ) ) - ( mZ * quat.mZ ) ) - ); -} - -inline Quat & Quat::operator *=( const Quat & quat ) -{ - *this = *this * quat; - return *this; -} - -inline const Vector3 rotate( const Quat & quat, const Vector3 & vec ) -{ - float tmpX, tmpY, tmpZ, tmpW; - tmpX = ( ( ( quat.getW() * vec.getX() ) + ( quat.getY() * vec.getZ() ) ) - ( quat.getZ() * vec.getY() ) ); - tmpY = ( ( ( quat.getW() * vec.getY() ) + ( quat.getZ() * vec.getX() ) ) - ( quat.getX() * vec.getZ() ) ); - tmpZ = ( ( ( quat.getW() * vec.getZ() ) + ( quat.getX() * vec.getY() ) ) - ( quat.getY() * vec.getX() ) ); - tmpW = ( ( ( quat.getX() * vec.getX() ) + ( quat.getY() * vec.getY() ) ) + ( quat.getZ() * vec.getZ() ) ); - return Vector3( - ( ( ( ( tmpW * quat.getX() ) + ( tmpX * quat.getW() ) ) - ( tmpY * quat.getZ() ) ) + ( tmpZ * quat.getY() ) ), - ( ( ( ( tmpW * quat.getY() ) + ( tmpY * quat.getW() ) ) - ( tmpZ * quat.getX() ) ) + ( tmpX * quat.getZ() ) ), - ( ( ( ( tmpW * quat.getZ() ) + ( tmpZ * quat.getW() ) ) - ( tmpX * quat.getY() ) ) + ( tmpY * quat.getX() ) ) - ); -} - -inline const Quat conj( const Quat & quat ) -{ - return Quat( -quat.getX(), -quat.getY(), -quat.getZ(), quat.getW() ); -} - -inline const Quat select( const Quat & quat0, const Quat & quat1, bool select1 ) -{ - return Quat( - ( select1 )? quat1.getX() : quat0.getX(), - ( select1 )? quat1.getY() : quat0.getY(), - ( select1 )? quat1.getZ() : quat0.getZ(), - ( select1 )? quat1.getW() : quat0.getW() - ); -} - -#ifdef _VECTORMATH_DEBUG - -inline void print( const Quat & quat ) -{ - printf( "( %f %f %f %f )\n", quat.getX(), quat.getY(), quat.getZ(), quat.getW() ); -} - -inline void print( const Quat & quat, const char * name ) -{ - printf( "%s: ( %f %f %f %f )\n", name, quat.getX(), quat.getY(), quat.getZ(), quat.getW() ); -} - -#endif - -} // namespace Aos -} // namespace Vectormath - -#endif diff --git a/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/vec_aos.h b/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/vec_aos.h deleted file mode 100644 index 46d4d6b3e5c..00000000000 --- a/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/vec_aos.h +++ /dev/null @@ -1,1426 +0,0 @@ -/* - Copyright (C) 2009 Sony Computer Entertainment Inc. - All rights reserved. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -*/ - -#ifndef _VECTORMATH_VEC_AOS_CPP_H -#define _VECTORMATH_VEC_AOS_CPP_H - -//----------------------------------------------------------------------------- -// Constants - -#define _VECTORMATH_SLERP_TOL 0.999f - -//----------------------------------------------------------------------------- -// Definitions - -#ifndef _VECTORMATH_INTERNAL_FUNCTIONS -#define _VECTORMATH_INTERNAL_FUNCTIONS - -#endif - -namespace Vectormath { -namespace Aos { - -inline Vector3::Vector3( const Vector3 & vec ) -{ - mX = vec.mX; - mY = vec.mY; - mZ = vec.mZ; -} - -inline Vector3::Vector3( float _x, float _y, float _z ) -{ - mX = _x; - mY = _y; - mZ = _z; -} - -inline Vector3::Vector3( const Point3 & pnt ) -{ - mX = pnt.getX(); - mY = pnt.getY(); - mZ = pnt.getZ(); -} - -inline Vector3::Vector3( float scalar ) -{ - mX = scalar; - mY = scalar; - mZ = scalar; -} - -inline const Vector3 Vector3::xAxis( ) -{ - return Vector3( 1.0f, 0.0f, 0.0f ); -} - -inline const Vector3 Vector3::yAxis( ) -{ - return Vector3( 0.0f, 1.0f, 0.0f ); -} - -inline const Vector3 Vector3::zAxis( ) -{ - return Vector3( 0.0f, 0.0f, 1.0f ); -} - -inline const Vector3 lerp( float t, const Vector3 & vec0, const Vector3 & vec1 ) -{ - return ( vec0 + ( ( vec1 - vec0 ) * t ) ); -} - -inline const Vector3 slerp( float t, const Vector3 & unitVec0, const Vector3 & unitVec1 ) -{ - float recipSinAngle, scale0, scale1, cosAngle, angle; - cosAngle = dot( unitVec0, unitVec1 ); - if ( cosAngle < _VECTORMATH_SLERP_TOL ) { - angle = acosf( cosAngle ); - recipSinAngle = ( 1.0f / sinf( angle ) ); - scale0 = ( sinf( ( ( 1.0f - t ) * angle ) ) * recipSinAngle ); - scale1 = ( sinf( ( t * angle ) ) * recipSinAngle ); - } else { - scale0 = ( 1.0f - t ); - scale1 = t; - } - return ( ( unitVec0 * scale0 ) + ( unitVec1 * scale1 ) ); -} - -inline void loadXYZ( Vector3 & vec, const float * fptr ) -{ - vec = Vector3( fptr[0], fptr[1], fptr[2] ); -} - -inline void storeXYZ( const Vector3 & vec, float * fptr ) -{ - fptr[0] = vec.getX(); - fptr[1] = vec.getY(); - fptr[2] = vec.getZ(); -} - -inline void loadHalfFloats( Vector3 & vec, const unsigned short * hfptr ) -{ - union Data32 { - unsigned int u32; - float f32; - }; - - for (int i = 0; i < 3; i++) { - unsigned short fp16 = hfptr[i]; - unsigned int sign = fp16 >> 15; - unsigned int exponent = (fp16 >> 10) & ((1 << 5) - 1); - unsigned int mantissa = fp16 & ((1 << 10) - 1); - - if (exponent == 0) { - // zero - mantissa = 0; - - } else if (exponent == 31) { - // infinity or nan -> infinity - exponent = 255; - mantissa = 0; - - } else { - exponent += 127 - 15; - mantissa <<= 13; - } - - Data32 d; - d.u32 = (sign << 31) | (exponent << 23) | mantissa; - vec[i] = d.f32; - } -} - -inline void storeHalfFloats( const Vector3 & vec, unsigned short * hfptr ) -{ - union Data32 { - unsigned int u32; - float f32; - }; - - for (int i = 0; i < 3; i++) { - Data32 d; - d.f32 = vec[i]; - - unsigned int sign = d.u32 >> 31; - unsigned int exponent = (d.u32 >> 23) & ((1 << 8) - 1); - unsigned int mantissa = d.u32 & ((1 << 23) - 1);; - - if (exponent == 0) { - // zero or denorm -> zero - mantissa = 0; - - } else if (exponent == 255 && mantissa != 0) { - // nan -> infinity - exponent = 31; - mantissa = 0; - - } else if (exponent >= 127 - 15 + 31) { - // overflow or infinity -> infinity - exponent = 31; - mantissa = 0; - - } else if (exponent <= 127 - 15) { - // underflow -> zero - exponent = 0; - mantissa = 0; - - } else { - exponent -= 127 - 15; - mantissa >>= 13; - } - - hfptr[i] = (unsigned short)((sign << 15) | (exponent << 10) | mantissa); - } -} - -inline Vector3 & Vector3::operator =( const Vector3 & vec ) -{ - mX = vec.mX; - mY = vec.mY; - mZ = vec.mZ; - return *this; -} - -inline Vector3 & Vector3::setX( float _x ) -{ - mX = _x; - return *this; -} - -inline float Vector3::getX( ) const -{ - return mX; -} - -inline Vector3 & Vector3::setY( float _y ) -{ - mY = _y; - return *this; -} - -inline float Vector3::getY( ) const -{ - return mY; -} - -inline Vector3 & Vector3::setZ( float _z ) -{ - mZ = _z; - return *this; -} - -inline float Vector3::getZ( ) const -{ - return mZ; -} - -inline Vector3 & Vector3::setElem( int idx, float value ) -{ - *(&mX + idx) = value; - return *this; -} - -inline float Vector3::getElem( int idx ) const -{ - return *(&mX + idx); -} - -inline float & Vector3::operator []( int idx ) -{ - return *(&mX + idx); -} - -inline float Vector3::operator []( int idx ) const -{ - return *(&mX + idx); -} - -inline const Vector3 Vector3::operator +( const Vector3 & vec ) const -{ - return Vector3( - ( mX + vec.mX ), - ( mY + vec.mY ), - ( mZ + vec.mZ ) - ); -} - -inline const Vector3 Vector3::operator -( const Vector3 & vec ) const -{ - return Vector3( - ( mX - vec.mX ), - ( mY - vec.mY ), - ( mZ - vec.mZ ) - ); -} - -inline const Point3 Vector3::operator +( const Point3 & pnt ) const -{ - return Point3( - ( mX + pnt.getX() ), - ( mY + pnt.getY() ), - ( mZ + pnt.getZ() ) - ); -} - -inline const Vector3 Vector3::operator *( float scalar ) const -{ - return Vector3( - ( mX * scalar ), - ( mY * scalar ), - ( mZ * scalar ) - ); -} - -inline Vector3 & Vector3::operator +=( const Vector3 & vec ) -{ - *this = *this + vec; - return *this; -} - -inline Vector3 & Vector3::operator -=( const Vector3 & vec ) -{ - *this = *this - vec; - return *this; -} - -inline Vector3 & Vector3::operator *=( float scalar ) -{ - *this = *this * scalar; - return *this; -} - -inline const Vector3 Vector3::operator /( float scalar ) const -{ - return Vector3( - ( mX / scalar ), - ( mY / scalar ), - ( mZ / scalar ) - ); -} - -inline Vector3 & Vector3::operator /=( float scalar ) -{ - *this = *this / scalar; - return *this; -} - -inline const Vector3 Vector3::operator -( ) const -{ - return Vector3( - -mX, - -mY, - -mZ - ); -} - -inline const Vector3 operator *( float scalar, const Vector3 & vec ) -{ - return vec * scalar; -} - -inline const Vector3 mulPerElem( const Vector3 & vec0, const Vector3 & vec1 ) -{ - return Vector3( - ( vec0.getX() * vec1.getX() ), - ( vec0.getY() * vec1.getY() ), - ( vec0.getZ() * vec1.getZ() ) - ); -} - -inline const Vector3 divPerElem( const Vector3 & vec0, const Vector3 & vec1 ) -{ - return Vector3( - ( vec0.getX() / vec1.getX() ), - ( vec0.getY() / vec1.getY() ), - ( vec0.getZ() / vec1.getZ() ) - ); -} - -inline const Vector3 recipPerElem( const Vector3 & vec ) -{ - return Vector3( - ( 1.0f / vec.getX() ), - ( 1.0f / vec.getY() ), - ( 1.0f / vec.getZ() ) - ); -} - -inline const Vector3 sqrtPerElem( const Vector3 & vec ) -{ - return Vector3( - sqrtf( vec.getX() ), - sqrtf( vec.getY() ), - sqrtf( vec.getZ() ) - ); -} - -inline const Vector3 rsqrtPerElem( const Vector3 & vec ) -{ - return Vector3( - ( 1.0f / sqrtf( vec.getX() ) ), - ( 1.0f / sqrtf( vec.getY() ) ), - ( 1.0f / sqrtf( vec.getZ() ) ) - ); -} - -inline const Vector3 absPerElem( const Vector3 & vec ) -{ - return Vector3( - fabsf( vec.getX() ), - fabsf( vec.getY() ), - fabsf( vec.getZ() ) - ); -} - -inline const Vector3 copySignPerElem( const Vector3 & vec0, const Vector3 & vec1 ) -{ - return Vector3( - ( vec1.getX() < 0.0f )? -fabsf( vec0.getX() ) : fabsf( vec0.getX() ), - ( vec1.getY() < 0.0f )? -fabsf( vec0.getY() ) : fabsf( vec0.getY() ), - ( vec1.getZ() < 0.0f )? -fabsf( vec0.getZ() ) : fabsf( vec0.getZ() ) - ); -} - -inline const Vector3 maxPerElem( const Vector3 & vec0, const Vector3 & vec1 ) -{ - return Vector3( - (vec0.getX() > vec1.getX())? vec0.getX() : vec1.getX(), - (vec0.getY() > vec1.getY())? vec0.getY() : vec1.getY(), - (vec0.getZ() > vec1.getZ())? vec0.getZ() : vec1.getZ() - ); -} - -inline float maxElem( const Vector3 & vec ) -{ - float result; - result = (vec.getX() > vec.getY())? vec.getX() : vec.getY(); - result = (vec.getZ() > result)? vec.getZ() : result; - return result; -} - -inline const Vector3 minPerElem( const Vector3 & vec0, const Vector3 & vec1 ) -{ - return Vector3( - (vec0.getX() < vec1.getX())? vec0.getX() : vec1.getX(), - (vec0.getY() < vec1.getY())? vec0.getY() : vec1.getY(), - (vec0.getZ() < vec1.getZ())? vec0.getZ() : vec1.getZ() - ); -} - -inline float minElem( const Vector3 & vec ) -{ - float result; - result = (vec.getX() < vec.getY())? vec.getX() : vec.getY(); - result = (vec.getZ() < result)? vec.getZ() : result; - return result; -} - -inline float sum( const Vector3 & vec ) -{ - float result; - result = ( vec.getX() + vec.getY() ); - result = ( result + vec.getZ() ); - return result; -} - -inline float dot( const Vector3 & vec0, const Vector3 & vec1 ) -{ - float result; - result = ( vec0.getX() * vec1.getX() ); - result = ( result + ( vec0.getY() * vec1.getY() ) ); - result = ( result + ( vec0.getZ() * vec1.getZ() ) ); - return result; -} - -inline float lengthSqr( const Vector3 & vec ) -{ - float result; - result = ( vec.getX() * vec.getX() ); - result = ( result + ( vec.getY() * vec.getY() ) ); - result = ( result + ( vec.getZ() * vec.getZ() ) ); - return result; -} - -inline float length( const Vector3 & vec ) -{ - return ::sqrtf( lengthSqr( vec ) ); -} - -inline const Vector3 normalize( const Vector3 & vec ) -{ - float lenSqr, lenInv; - lenSqr = lengthSqr( vec ); - lenInv = ( 1.0f / sqrtf( lenSqr ) ); - return Vector3( - ( vec.getX() * lenInv ), - ( vec.getY() * lenInv ), - ( vec.getZ() * lenInv ) - ); -} - -inline const Vector3 cross( const Vector3 & vec0, const Vector3 & vec1 ) -{ - return Vector3( - ( ( vec0.getY() * vec1.getZ() ) - ( vec0.getZ() * vec1.getY() ) ), - ( ( vec0.getZ() * vec1.getX() ) - ( vec0.getX() * vec1.getZ() ) ), - ( ( vec0.getX() * vec1.getY() ) - ( vec0.getY() * vec1.getX() ) ) - ); -} - -inline const Vector3 select( const Vector3 & vec0, const Vector3 & vec1, bool select1 ) -{ - return Vector3( - ( select1 )? vec1.getX() : vec0.getX(), - ( select1 )? vec1.getY() : vec0.getY(), - ( select1 )? vec1.getZ() : vec0.getZ() - ); -} - -#ifdef _VECTORMATH_DEBUG - -inline void print( const Vector3 & vec ) -{ - printf( "( %f %f %f )\n", vec.getX(), vec.getY(), vec.getZ() ); -} - -inline void print( const Vector3 & vec, const char * name ) -{ - printf( "%s: ( %f %f %f )\n", name, vec.getX(), vec.getY(), vec.getZ() ); -} - -#endif - -inline Vector4::Vector4( const Vector4 & vec ) -{ - mX = vec.mX; - mY = vec.mY; - mZ = vec.mZ; - mW = vec.mW; -} - -inline Vector4::Vector4( float _x, float _y, float _z, float _w ) -{ - mX = _x; - mY = _y; - mZ = _z; - mW = _w; -} - -inline Vector4::Vector4( const Vector3 & xyz, float _w ) -{ - this->setXYZ( xyz ); - this->setW( _w ); -} - -inline Vector4::Vector4( const Vector3 & vec ) -{ - mX = vec.getX(); - mY = vec.getY(); - mZ = vec.getZ(); - mW = 0.0f; -} - -inline Vector4::Vector4( const Point3 & pnt ) -{ - mX = pnt.getX(); - mY = pnt.getY(); - mZ = pnt.getZ(); - mW = 1.0f; -} - -inline Vector4::Vector4( const Quat & quat ) -{ - mX = quat.getX(); - mY = quat.getY(); - mZ = quat.getZ(); - mW = quat.getW(); -} - -inline Vector4::Vector4( float scalar ) -{ - mX = scalar; - mY = scalar; - mZ = scalar; - mW = scalar; -} - -inline const Vector4 Vector4::xAxis( ) -{ - return Vector4( 1.0f, 0.0f, 0.0f, 0.0f ); -} - -inline const Vector4 Vector4::yAxis( ) -{ - return Vector4( 0.0f, 1.0f, 0.0f, 0.0f ); -} - -inline const Vector4 Vector4::zAxis( ) -{ - return Vector4( 0.0f, 0.0f, 1.0f, 0.0f ); -} - -inline const Vector4 Vector4::wAxis( ) -{ - return Vector4( 0.0f, 0.0f, 0.0f, 1.0f ); -} - -inline const Vector4 lerp( float t, const Vector4 & vec0, const Vector4 & vec1 ) -{ - return ( vec0 + ( ( vec1 - vec0 ) * t ) ); -} - -inline const Vector4 slerp( float t, const Vector4 & unitVec0, const Vector4 & unitVec1 ) -{ - float recipSinAngle, scale0, scale1, cosAngle, angle; - cosAngle = dot( unitVec0, unitVec1 ); - if ( cosAngle < _VECTORMATH_SLERP_TOL ) { - angle = acosf( cosAngle ); - recipSinAngle = ( 1.0f / sinf( angle ) ); - scale0 = ( sinf( ( ( 1.0f - t ) * angle ) ) * recipSinAngle ); - scale1 = ( sinf( ( t * angle ) ) * recipSinAngle ); - } else { - scale0 = ( 1.0f - t ); - scale1 = t; - } - return ( ( unitVec0 * scale0 ) + ( unitVec1 * scale1 ) ); -} - -inline void loadXYZW( Vector4 & vec, const float * fptr ) -{ - vec = Vector4( fptr[0], fptr[1], fptr[2], fptr[3] ); -} - -inline void storeXYZW( const Vector4 & vec, float * fptr ) -{ - fptr[0] = vec.getX(); - fptr[1] = vec.getY(); - fptr[2] = vec.getZ(); - fptr[3] = vec.getW(); -} - -inline void loadHalfFloats( Vector4 & vec, const unsigned short * hfptr ) -{ - union Data32 { - unsigned int u32; - float f32; - }; - - for (int i = 0; i < 4; i++) { - unsigned short fp16 = hfptr[i]; - unsigned int sign = fp16 >> 15; - unsigned int exponent = (fp16 >> 10) & ((1 << 5) - 1); - unsigned int mantissa = fp16 & ((1 << 10) - 1); - - if (exponent == 0) { - // zero - mantissa = 0; - - } else if (exponent == 31) { - // infinity or nan -> infinity - exponent = 255; - mantissa = 0; - - } else { - exponent += 127 - 15; - mantissa <<= 13; - } - - Data32 d; - d.u32 = (sign << 31) | (exponent << 23) | mantissa; - vec[i] = d.f32; - } -} - -inline void storeHalfFloats( const Vector4 & vec, unsigned short * hfptr ) -{ - union Data32 { - unsigned int u32; - float f32; - }; - - for (int i = 0; i < 4; i++) { - Data32 d; - d.f32 = vec[i]; - - unsigned int sign = d.u32 >> 31; - unsigned int exponent = (d.u32 >> 23) & ((1 << 8) - 1); - unsigned int mantissa = d.u32 & ((1 << 23) - 1);; - - if (exponent == 0) { - // zero or denorm -> zero - mantissa = 0; - - } else if (exponent == 255 && mantissa != 0) { - // nan -> infinity - exponent = 31; - mantissa = 0; - - } else if (exponent >= 127 - 15 + 31) { - // overflow or infinity -> infinity - exponent = 31; - mantissa = 0; - - } else if (exponent <= 127 - 15) { - // underflow -> zero - exponent = 0; - mantissa = 0; - - } else { - exponent -= 127 - 15; - mantissa >>= 13; - } - - hfptr[i] = (unsigned short)((sign << 15) | (exponent << 10) | mantissa); - } -} - -inline Vector4 & Vector4::operator =( const Vector4 & vec ) -{ - mX = vec.mX; - mY = vec.mY; - mZ = vec.mZ; - mW = vec.mW; - return *this; -} - -inline Vector4 & Vector4::setXYZ( const Vector3 & vec ) -{ - mX = vec.getX(); - mY = vec.getY(); - mZ = vec.getZ(); - return *this; -} - -inline const Vector3 Vector4::getXYZ( ) const -{ - return Vector3( mX, mY, mZ ); -} - -inline Vector4 & Vector4::setX( float _x ) -{ - mX = _x; - return *this; -} - -inline float Vector4::getX( ) const -{ - return mX; -} - -inline Vector4 & Vector4::setY( float _y ) -{ - mY = _y; - return *this; -} - -inline float Vector4::getY( ) const -{ - return mY; -} - -inline Vector4 & Vector4::setZ( float _z ) -{ - mZ = _z; - return *this; -} - -inline float Vector4::getZ( ) const -{ - return mZ; -} - -inline Vector4 & Vector4::setW( float _w ) -{ - mW = _w; - return *this; -} - -inline float Vector4::getW( ) const -{ - return mW; -} - -inline Vector4 & Vector4::setElem( int idx, float value ) -{ - *(&mX + idx) = value; - return *this; -} - -inline float Vector4::getElem( int idx ) const -{ - return *(&mX + idx); -} - -inline float & Vector4::operator []( int idx ) -{ - return *(&mX + idx); -} - -inline float Vector4::operator []( int idx ) const -{ - return *(&mX + idx); -} - -inline const Vector4 Vector4::operator +( const Vector4 & vec ) const -{ - return Vector4( - ( mX + vec.mX ), - ( mY + vec.mY ), - ( mZ + vec.mZ ), - ( mW + vec.mW ) - ); -} - -inline const Vector4 Vector4::operator -( const Vector4 & vec ) const -{ - return Vector4( - ( mX - vec.mX ), - ( mY - vec.mY ), - ( mZ - vec.mZ ), - ( mW - vec.mW ) - ); -} - -inline const Vector4 Vector4::operator *( float scalar ) const -{ - return Vector4( - ( mX * scalar ), - ( mY * scalar ), - ( mZ * scalar ), - ( mW * scalar ) - ); -} - -inline Vector4 & Vector4::operator +=( const Vector4 & vec ) -{ - *this = *this + vec; - return *this; -} - -inline Vector4 & Vector4::operator -=( const Vector4 & vec ) -{ - *this = *this - vec; - return *this; -} - -inline Vector4 & Vector4::operator *=( float scalar ) -{ - *this = *this * scalar; - return *this; -} - -inline const Vector4 Vector4::operator /( float scalar ) const -{ - return Vector4( - ( mX / scalar ), - ( mY / scalar ), - ( mZ / scalar ), - ( mW / scalar ) - ); -} - -inline Vector4 & Vector4::operator /=( float scalar ) -{ - *this = *this / scalar; - return *this; -} - -inline const Vector4 Vector4::operator -( ) const -{ - return Vector4( - -mX, - -mY, - -mZ, - -mW - ); -} - -inline const Vector4 operator *( float scalar, const Vector4 & vec ) -{ - return vec * scalar; -} - -inline const Vector4 mulPerElem( const Vector4 & vec0, const Vector4 & vec1 ) -{ - return Vector4( - ( vec0.getX() * vec1.getX() ), - ( vec0.getY() * vec1.getY() ), - ( vec0.getZ() * vec1.getZ() ), - ( vec0.getW() * vec1.getW() ) - ); -} - -inline const Vector4 divPerElem( const Vector4 & vec0, const Vector4 & vec1 ) -{ - return Vector4( - ( vec0.getX() / vec1.getX() ), - ( vec0.getY() / vec1.getY() ), - ( vec0.getZ() / vec1.getZ() ), - ( vec0.getW() / vec1.getW() ) - ); -} - -inline const Vector4 recipPerElem( const Vector4 & vec ) -{ - return Vector4( - ( 1.0f / vec.getX() ), - ( 1.0f / vec.getY() ), - ( 1.0f / vec.getZ() ), - ( 1.0f / vec.getW() ) - ); -} - -inline const Vector4 sqrtPerElem( const Vector4 & vec ) -{ - return Vector4( - sqrtf( vec.getX() ), - sqrtf( vec.getY() ), - sqrtf( vec.getZ() ), - sqrtf( vec.getW() ) - ); -} - -inline const Vector4 rsqrtPerElem( const Vector4 & vec ) -{ - return Vector4( - ( 1.0f / sqrtf( vec.getX() ) ), - ( 1.0f / sqrtf( vec.getY() ) ), - ( 1.0f / sqrtf( vec.getZ() ) ), - ( 1.0f / sqrtf( vec.getW() ) ) - ); -} - -inline const Vector4 absPerElem( const Vector4 & vec ) -{ - return Vector4( - fabsf( vec.getX() ), - fabsf( vec.getY() ), - fabsf( vec.getZ() ), - fabsf( vec.getW() ) - ); -} - -inline const Vector4 copySignPerElem( const Vector4 & vec0, const Vector4 & vec1 ) -{ - return Vector4( - ( vec1.getX() < 0.0f )? -fabsf( vec0.getX() ) : fabsf( vec0.getX() ), - ( vec1.getY() < 0.0f )? -fabsf( vec0.getY() ) : fabsf( vec0.getY() ), - ( vec1.getZ() < 0.0f )? -fabsf( vec0.getZ() ) : fabsf( vec0.getZ() ), - ( vec1.getW() < 0.0f )? -fabsf( vec0.getW() ) : fabsf( vec0.getW() ) - ); -} - -inline const Vector4 maxPerElem( const Vector4 & vec0, const Vector4 & vec1 ) -{ - return Vector4( - (vec0.getX() > vec1.getX())? vec0.getX() : vec1.getX(), - (vec0.getY() > vec1.getY())? vec0.getY() : vec1.getY(), - (vec0.getZ() > vec1.getZ())? vec0.getZ() : vec1.getZ(), - (vec0.getW() > vec1.getW())? vec0.getW() : vec1.getW() - ); -} - -inline float maxElem( const Vector4 & vec ) -{ - float result; - result = (vec.getX() > vec.getY())? vec.getX() : vec.getY(); - result = (vec.getZ() > result)? vec.getZ() : result; - result = (vec.getW() > result)? vec.getW() : result; - return result; -} - -inline const Vector4 minPerElem( const Vector4 & vec0, const Vector4 & vec1 ) -{ - return Vector4( - (vec0.getX() < vec1.getX())? vec0.getX() : vec1.getX(), - (vec0.getY() < vec1.getY())? vec0.getY() : vec1.getY(), - (vec0.getZ() < vec1.getZ())? vec0.getZ() : vec1.getZ(), - (vec0.getW() < vec1.getW())? vec0.getW() : vec1.getW() - ); -} - -inline float minElem( const Vector4 & vec ) -{ - float result; - result = (vec.getX() < vec.getY())? vec.getX() : vec.getY(); - result = (vec.getZ() < result)? vec.getZ() : result; - result = (vec.getW() < result)? vec.getW() : result; - return result; -} - -inline float sum( const Vector4 & vec ) -{ - float result; - result = ( vec.getX() + vec.getY() ); - result = ( result + vec.getZ() ); - result = ( result + vec.getW() ); - return result; -} - -inline float dot( const Vector4 & vec0, const Vector4 & vec1 ) -{ - float result; - result = ( vec0.getX() * vec1.getX() ); - result = ( result + ( vec0.getY() * vec1.getY() ) ); - result = ( result + ( vec0.getZ() * vec1.getZ() ) ); - result = ( result + ( vec0.getW() * vec1.getW() ) ); - return result; -} - -inline float lengthSqr( const Vector4 & vec ) -{ - float result; - result = ( vec.getX() * vec.getX() ); - result = ( result + ( vec.getY() * vec.getY() ) ); - result = ( result + ( vec.getZ() * vec.getZ() ) ); - result = ( result + ( vec.getW() * vec.getW() ) ); - return result; -} - -inline float length( const Vector4 & vec ) -{ - return ::sqrtf( lengthSqr( vec ) ); -} - -inline const Vector4 normalize( const Vector4 & vec ) -{ - float lenSqr, lenInv; - lenSqr = lengthSqr( vec ); - lenInv = ( 1.0f / sqrtf( lenSqr ) ); - return Vector4( - ( vec.getX() * lenInv ), - ( vec.getY() * lenInv ), - ( vec.getZ() * lenInv ), - ( vec.getW() * lenInv ) - ); -} - -inline const Vector4 select( const Vector4 & vec0, const Vector4 & vec1, bool select1 ) -{ - return Vector4( - ( select1 )? vec1.getX() : vec0.getX(), - ( select1 )? vec1.getY() : vec0.getY(), - ( select1 )? vec1.getZ() : vec0.getZ(), - ( select1 )? vec1.getW() : vec0.getW() - ); -} - -#ifdef _VECTORMATH_DEBUG - -inline void print( const Vector4 & vec ) -{ - printf( "( %f %f %f %f )\n", vec.getX(), vec.getY(), vec.getZ(), vec.getW() ); -} - -inline void print( const Vector4 & vec, const char * name ) -{ - printf( "%s: ( %f %f %f %f )\n", name, vec.getX(), vec.getY(), vec.getZ(), vec.getW() ); -} - -#endif - -inline Point3::Point3( const Point3 & pnt ) -{ - mX = pnt.mX; - mY = pnt.mY; - mZ = pnt.mZ; -} - -inline Point3::Point3( float _x, float _y, float _z ) -{ - mX = _x; - mY = _y; - mZ = _z; -} - -inline Point3::Point3( const Vector3 & vec ) -{ - mX = vec.getX(); - mY = vec.getY(); - mZ = vec.getZ(); -} - -inline Point3::Point3( float scalar ) -{ - mX = scalar; - mY = scalar; - mZ = scalar; -} - -inline const Point3 lerp( float t, const Point3 & pnt0, const Point3 & pnt1 ) -{ - return ( pnt0 + ( ( pnt1 - pnt0 ) * t ) ); -} - -inline void loadXYZ( Point3 & pnt, const float * fptr ) -{ - pnt = Point3( fptr[0], fptr[1], fptr[2] ); -} - -inline void storeXYZ( const Point3 & pnt, float * fptr ) -{ - fptr[0] = pnt.getX(); - fptr[1] = pnt.getY(); - fptr[2] = pnt.getZ(); -} - -inline void loadHalfFloats( Point3 & vec, const unsigned short * hfptr ) -{ - union Data32 { - unsigned int u32; - float f32; - }; - - for (int i = 0; i < 3; i++) { - unsigned short fp16 = hfptr[i]; - unsigned int sign = fp16 >> 15; - unsigned int exponent = (fp16 >> 10) & ((1 << 5) - 1); - unsigned int mantissa = fp16 & ((1 << 10) - 1); - - if (exponent == 0) { - // zero - mantissa = 0; - - } else if (exponent == 31) { - // infinity or nan -> infinity - exponent = 255; - mantissa = 0; - - } else { - exponent += 127 - 15; - mantissa <<= 13; - } - - Data32 d; - d.u32 = (sign << 31) | (exponent << 23) | mantissa; - vec[i] = d.f32; - } -} - -inline void storeHalfFloats( const Point3 & vec, unsigned short * hfptr ) -{ - union Data32 { - unsigned int u32; - float f32; - }; - - for (int i = 0; i < 3; i++) { - Data32 d; - d.f32 = vec[i]; - - unsigned int sign = d.u32 >> 31; - unsigned int exponent = (d.u32 >> 23) & ((1 << 8) - 1); - unsigned int mantissa = d.u32 & ((1 << 23) - 1);; - - if (exponent == 0) { - // zero or denorm -> zero - mantissa = 0; - - } else if (exponent == 255 && mantissa != 0) { - // nan -> infinity - exponent = 31; - mantissa = 0; - - } else if (exponent >= 127 - 15 + 31) { - // overflow or infinity -> infinity - exponent = 31; - mantissa = 0; - - } else if (exponent <= 127 - 15) { - // underflow -> zero - exponent = 0; - mantissa = 0; - - } else { - exponent -= 127 - 15; - mantissa >>= 13; - } - - hfptr[i] = (unsigned short)((sign << 15) | (exponent << 10) | mantissa); - } -} - -inline Point3 & Point3::operator =( const Point3 & pnt ) -{ - mX = pnt.mX; - mY = pnt.mY; - mZ = pnt.mZ; - return *this; -} - -inline Point3 & Point3::setX( float _x ) -{ - mX = _x; - return *this; -} - -inline float Point3::getX( ) const -{ - return mX; -} - -inline Point3 & Point3::setY( float _y ) -{ - mY = _y; - return *this; -} - -inline float Point3::getY( ) const -{ - return mY; -} - -inline Point3 & Point3::setZ( float _z ) -{ - mZ = _z; - return *this; -} - -inline float Point3::getZ( ) const -{ - return mZ; -} - -inline Point3 & Point3::setElem( int idx, float value ) -{ - *(&mX + idx) = value; - return *this; -} - -inline float Point3::getElem( int idx ) const -{ - return *(&mX + idx); -} - -inline float & Point3::operator []( int idx ) -{ - return *(&mX + idx); -} - -inline float Point3::operator []( int idx ) const -{ - return *(&mX + idx); -} - -inline const Vector3 Point3::operator -( const Point3 & pnt ) const -{ - return Vector3( - ( mX - pnt.mX ), - ( mY - pnt.mY ), - ( mZ - pnt.mZ ) - ); -} - -inline const Point3 Point3::operator +( const Vector3 & vec ) const -{ - return Point3( - ( mX + vec.getX() ), - ( mY + vec.getY() ), - ( mZ + vec.getZ() ) - ); -} - -inline const Point3 Point3::operator -( const Vector3 & vec ) const -{ - return Point3( - ( mX - vec.getX() ), - ( mY - vec.getY() ), - ( mZ - vec.getZ() ) - ); -} - -inline Point3 & Point3::operator +=( const Vector3 & vec ) -{ - *this = *this + vec; - return *this; -} - -inline Point3 & Point3::operator -=( const Vector3 & vec ) -{ - *this = *this - vec; - return *this; -} - -inline const Point3 mulPerElem( const Point3 & pnt0, const Point3 & pnt1 ) -{ - return Point3( - ( pnt0.getX() * pnt1.getX() ), - ( pnt0.getY() * pnt1.getY() ), - ( pnt0.getZ() * pnt1.getZ() ) - ); -} - -inline const Point3 divPerElem( const Point3 & pnt0, const Point3 & pnt1 ) -{ - return Point3( - ( pnt0.getX() / pnt1.getX() ), - ( pnt0.getY() / pnt1.getY() ), - ( pnt0.getZ() / pnt1.getZ() ) - ); -} - -inline const Point3 recipPerElem( const Point3 & pnt ) -{ - return Point3( - ( 1.0f / pnt.getX() ), - ( 1.0f / pnt.getY() ), - ( 1.0f / pnt.getZ() ) - ); -} - -inline const Point3 sqrtPerElem( const Point3 & pnt ) -{ - return Point3( - sqrtf( pnt.getX() ), - sqrtf( pnt.getY() ), - sqrtf( pnt.getZ() ) - ); -} - -inline const Point3 rsqrtPerElem( const Point3 & pnt ) -{ - return Point3( - ( 1.0f / sqrtf( pnt.getX() ) ), - ( 1.0f / sqrtf( pnt.getY() ) ), - ( 1.0f / sqrtf( pnt.getZ() ) ) - ); -} - -inline const Point3 absPerElem( const Point3 & pnt ) -{ - return Point3( - fabsf( pnt.getX() ), - fabsf( pnt.getY() ), - fabsf( pnt.getZ() ) - ); -} - -inline const Point3 copySignPerElem( const Point3 & pnt0, const Point3 & pnt1 ) -{ - return Point3( - ( pnt1.getX() < 0.0f )? -fabsf( pnt0.getX() ) : fabsf( pnt0.getX() ), - ( pnt1.getY() < 0.0f )? -fabsf( pnt0.getY() ) : fabsf( pnt0.getY() ), - ( pnt1.getZ() < 0.0f )? -fabsf( pnt0.getZ() ) : fabsf( pnt0.getZ() ) - ); -} - -inline const Point3 maxPerElem( const Point3 & pnt0, const Point3 & pnt1 ) -{ - return Point3( - (pnt0.getX() > pnt1.getX())? pnt0.getX() : pnt1.getX(), - (pnt0.getY() > pnt1.getY())? pnt0.getY() : pnt1.getY(), - (pnt0.getZ() > pnt1.getZ())? pnt0.getZ() : pnt1.getZ() - ); -} - -inline float maxElem( const Point3 & pnt ) -{ - float result; - result = (pnt.getX() > pnt.getY())? pnt.getX() : pnt.getY(); - result = (pnt.getZ() > result)? pnt.getZ() : result; - return result; -} - -inline const Point3 minPerElem( const Point3 & pnt0, const Point3 & pnt1 ) -{ - return Point3( - (pnt0.getX() < pnt1.getX())? pnt0.getX() : pnt1.getX(), - (pnt0.getY() < pnt1.getY())? pnt0.getY() : pnt1.getY(), - (pnt0.getZ() < pnt1.getZ())? pnt0.getZ() : pnt1.getZ() - ); -} - -inline float minElem( const Point3 & pnt ) -{ - float result; - result = (pnt.getX() < pnt.getY())? pnt.getX() : pnt.getY(); - result = (pnt.getZ() < result)? pnt.getZ() : result; - return result; -} - -inline float sum( const Point3 & pnt ) -{ - float result; - result = ( pnt.getX() + pnt.getY() ); - result = ( result + pnt.getZ() ); - return result; -} - -inline const Point3 scale( const Point3 & pnt, float scaleVal ) -{ - return mulPerElem( pnt, Point3( scaleVal ) ); -} - -inline const Point3 scale( const Point3 & pnt, const Vector3 & scaleVec ) -{ - return mulPerElem( pnt, Point3( scaleVec ) ); -} - -inline float projection( const Point3 & pnt, const Vector3 & unitVec ) -{ - float result; - result = ( pnt.getX() * unitVec.getX() ); - result = ( result + ( pnt.getY() * unitVec.getY() ) ); - result = ( result + ( pnt.getZ() * unitVec.getZ() ) ); - return result; -} - -inline float distSqrFromOrigin( const Point3 & pnt ) -{ - return lengthSqr( Vector3( pnt ) ); -} - -inline float distFromOrigin( const Point3 & pnt ) -{ - return length( Vector3( pnt ) ); -} - -inline float distSqr( const Point3 & pnt0, const Point3 & pnt1 ) -{ - return lengthSqr( ( pnt1 - pnt0 ) ); -} - -inline float dist( const Point3 & pnt0, const Point3 & pnt1 ) -{ - return length( ( pnt1 - pnt0 ) ); -} - -inline const Point3 select( const Point3 & pnt0, const Point3 & pnt1, bool select1 ) -{ - return Point3( - ( select1 )? pnt1.getX() : pnt0.getX(), - ( select1 )? pnt1.getY() : pnt0.getY(), - ( select1 )? pnt1.getZ() : pnt0.getZ() - ); -} - -#ifdef _VECTORMATH_DEBUG - -inline void print( const Point3 & pnt ) -{ - printf( "( %f %f %f )\n", pnt.getX(), pnt.getY(), pnt.getZ() ); -} - -inline void print( const Point3 & pnt, const char * name ) -{ - printf( "%s: ( %f %f %f )\n", name, pnt.getX(), pnt.getY(), pnt.getZ() ); -} - -#endif - -} // namespace Aos -} // namespace Vectormath - -#endif diff --git a/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/vectormath_aos.h b/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/vectormath_aos.h deleted file mode 100644 index d00456dfeb4..00000000000 --- a/extern/bullet2/BulletMultiThreaded/vectormath/scalar/cpp/vectormath_aos.h +++ /dev/null @@ -1,1872 +0,0 @@ -/* - Copyright (C) 2009 Sony Computer Entertainment Inc. - All rights reserved. - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -*/ - -#ifndef _VECTORMATH_AOS_CPP_H -#define _VECTORMATH_AOS_CPP_H - -#include - -#ifdef _VECTORMATH_DEBUG -#include -#endif - -namespace Vectormath { - -namespace Aos { - -//----------------------------------------------------------------------------- -// Forward Declarations -// - -class Vector3; -class Vector4; -class Point3; -class Quat; -class Matrix3; -class Matrix4; -class Transform3; - -// A 3-D vector in array-of-structures format -// -class Vector3 -{ - float mX; - float mY; - float mZ; -#ifndef __GNUC__ - float d; -#endif - -public: - // Default constructor; does no initialization - // - inline Vector3( ) { }; - - // Copy a 3-D vector - // - inline Vector3( const Vector3 & vec ); - - // Construct a 3-D vector from x, y, and z elements - // - inline Vector3( float x, float y, float z ); - - // Copy elements from a 3-D point into a 3-D vector - // - explicit inline Vector3( const Point3 & pnt ); - - // Set all elements of a 3-D vector to the same scalar value - // - explicit inline Vector3( float scalar ); - - // Assign one 3-D vector to another - // - inline Vector3 & operator =( const Vector3 & vec ); - - // Set the x element of a 3-D vector - // - inline Vector3 & setX( float x ); - - // Set the y element of a 3-D vector - // - inline Vector3 & setY( float y ); - - // Set the z element of a 3-D vector - // - inline Vector3 & setZ( float z ); - - // Get the x element of a 3-D vector - // - inline float getX( ) const; - - // Get the y element of a 3-D vector - // - inline float getY( ) const; - - // Get the z element of a 3-D vector - // - inline float getZ( ) const; - - // Set an x, y, or z element of a 3-D vector by index - // - inline Vector3 & setElem( int idx, float value ); - - // Get an x, y, or z element of a 3-D vector by index - // - inline float getElem( int idx ) const; - - // Subscripting operator to set or get an element - // - inline float & operator []( int idx ); - - // Subscripting operator to get an element - // - inline float operator []( int idx ) const; - - // Add two 3-D vectors - // - inline const Vector3 operator +( const Vector3 & vec ) const; - - // Subtract a 3-D vector from another 3-D vector - // - inline const Vector3 operator -( const Vector3 & vec ) const; - - // Add a 3-D vector to a 3-D point - // - inline const Point3 operator +( const Point3 & pnt ) const; - - // Multiply a 3-D vector by a scalar - // - inline const Vector3 operator *( float scalar ) const; - - // Divide a 3-D vector by a scalar - // - inline const Vector3 operator /( float scalar ) const; - - // Perform compound assignment and addition with a 3-D vector - // - inline Vector3 & operator +=( const Vector3 & vec ); - - // Perform compound assignment and subtraction by a 3-D vector - // - inline Vector3 & operator -=( const Vector3 & vec ); - - // Perform compound assignment and multiplication by a scalar - // - inline Vector3 & operator *=( float scalar ); - - // Perform compound assignment and division by a scalar - // - inline Vector3 & operator /=( float scalar ); - - // Negate all elements of a 3-D vector - // - inline const Vector3 operator -( ) const; - - // Construct x axis - // - static inline const Vector3 xAxis( ); - - // Construct y axis - // - static inline const Vector3 yAxis( ); - - // Construct z axis - // - static inline const Vector3 zAxis( ); - -} -#ifdef __GNUC__ -__attribute__ ((aligned(16))) -#endif -; - -// Multiply a 3-D vector by a scalar -// -inline const Vector3 operator *( float scalar, const Vector3 & vec ); - -// Multiply two 3-D vectors per element -// -inline const Vector3 mulPerElem( const Vector3 & vec0, const Vector3 & vec1 ); - -// Divide two 3-D vectors per element -// NOTE: -// Floating-point behavior matches standard library function divf4. -// -inline const Vector3 divPerElem( const Vector3 & vec0, const Vector3 & vec1 ); - -// Compute the reciprocal of a 3-D vector per element -// NOTE: -// Floating-point behavior matches standard library function recipf4. -// -inline const Vector3 recipPerElem( const Vector3 & vec ); - -// Compute the square root of a 3-D vector per element -// NOTE: -// Floating-point behavior matches standard library function sqrtf4. -// -inline const Vector3 sqrtPerElem( const Vector3 & vec ); - -// Compute the reciprocal square root of a 3-D vector per element -// NOTE: -// Floating-point behavior matches standard library function rsqrtf4. -// -inline const Vector3 rsqrtPerElem( const Vector3 & vec ); - -// Compute the absolute value of a 3-D vector per element -// -inline const Vector3 absPerElem( const Vector3 & vec ); - -// Copy sign from one 3-D vector to another, per element -// -inline const Vector3 copySignPerElem( const Vector3 & vec0, const Vector3 & vec1 ); - -// Maximum of two 3-D vectors per element -// -inline const Vector3 maxPerElem( const Vector3 & vec0, const Vector3 & vec1 ); - -// Minimum of two 3-D vectors per element -// -inline const Vector3 minPerElem( const Vector3 & vec0, const Vector3 & vec1 ); - -// Maximum element of a 3-D vector -// -inline float maxElem( const Vector3 & vec ); - -// Minimum element of a 3-D vector -// -inline float minElem( const Vector3 & vec ); - -// Compute the sum of all elements of a 3-D vector -// -inline float sum( const Vector3 & vec ); - -// Compute the dot product of two 3-D vectors -// -inline float dot( const Vector3 & vec0, const Vector3 & vec1 ); - -// Compute the square of the length of a 3-D vector -// -inline float lengthSqr( const Vector3 & vec ); - -// Compute the length of a 3-D vector -// -inline float length( const Vector3 & vec ); - -// Normalize a 3-D vector -// NOTE: -// The result is unpredictable when all elements of vec are at or near zero. -// -inline const Vector3 normalize( const Vector3 & vec ); - -// Compute cross product of two 3-D vectors -// -inline const Vector3 cross( const Vector3 & vec0, const Vector3 & vec1 ); - -// Outer product of two 3-D vectors -// -inline const Matrix3 outer( const Vector3 & vec0, const Vector3 & vec1 ); - -// Pre-multiply a row vector by a 3x3 matrix -// -inline const Vector3 rowMul( const Vector3 & vec, const Matrix3 & mat ); - -// Cross-product matrix of a 3-D vector -// -inline const Matrix3 crossMatrix( const Vector3 & vec ); - -// Create cross-product matrix and multiply -// NOTE: -// Faster than separately creating a cross-product matrix and multiplying. -// -inline const Matrix3 crossMatrixMul( const Vector3 & vec, const Matrix3 & mat ); - -// Linear interpolation between two 3-D vectors -// NOTE: -// Does not clamp t between 0 and 1. -// -inline const Vector3 lerp( float t, const Vector3 & vec0, const Vector3 & vec1 ); - -// Spherical linear interpolation between two 3-D vectors -// NOTE: -// The result is unpredictable if the vectors point in opposite directions. -// Does not clamp t between 0 and 1. -// -inline const Vector3 slerp( float t, const Vector3 & unitVec0, const Vector3 & unitVec1 ); - -// Conditionally select between two 3-D vectors -// -inline const Vector3 select( const Vector3 & vec0, const Vector3 & vec1, bool select1 ); - -// Load x, y, and z elements from the first three words of a float array. -// -// -inline void loadXYZ( Vector3 & vec, const float * fptr ); - -// Store x, y, and z elements of a 3-D vector in the first three words of a float array. -// Memory area of previous 16 bytes and next 32 bytes from fptr might be accessed -// -inline void storeXYZ( const Vector3 & vec, float * fptr ); - -// Load three-half-floats as a 3-D vector -// NOTE: -// This transformation does not support either denormalized numbers or NaNs. -// -inline void loadHalfFloats( Vector3 & vec, const unsigned short * hfptr ); - -// Store a 3-D vector as half-floats. Memory area of previous 16 bytes and next 32 bytes from hfptr might be accessed. -// NOTE: -// This transformation does not support either denormalized numbers or NaNs. Memory area of previous 16 bytes and next 32 bytes from hfptr might be accessed. -// -inline void storeHalfFloats( const Vector3 & vec, unsigned short * hfptr ); - -#ifdef _VECTORMATH_DEBUG - -// Print a 3-D vector -// NOTE: -// Function is only defined when _VECTORMATH_DEBUG is defined. -// -inline void print( const Vector3 & vec ); - -// Print a 3-D vector and an associated string identifier -// NOTE: -// Function is only defined when _VECTORMATH_DEBUG is defined. -// -inline void print( const Vector3 & vec, const char * name ); - -#endif - -// A 4-D vector in array-of-structures format -// -class Vector4 -{ - float mX; - float mY; - float mZ; - float mW; - -public: - // Default constructor; does no initialization - // - inline Vector4( ) { }; - - // Copy a 4-D vector - // - inline Vector4( const Vector4 & vec ); - - // Construct a 4-D vector from x, y, z, and w elements - // - inline Vector4( float x, float y, float z, float w ); - - // Construct a 4-D vector from a 3-D vector and a scalar - // - inline Vector4( const Vector3 & xyz, float w ); - - // Copy x, y, and z from a 3-D vector into a 4-D vector, and set w to 0 - // - explicit inline Vector4( const Vector3 & vec ); - - // Copy x, y, and z from a 3-D point into a 4-D vector, and set w to 1 - // - explicit inline Vector4( const Point3 & pnt ); - - // Copy elements from a quaternion into a 4-D vector - // - explicit inline Vector4( const Quat & quat ); - - // Set all elements of a 4-D vector to the same scalar value - // - explicit inline Vector4( float scalar ); - - // Assign one 4-D vector to another - // - inline Vector4 & operator =( const Vector4 & vec ); - - // Set the x, y, and z elements of a 4-D vector - // NOTE: - // This function does not change the w element. - // - inline Vector4 & setXYZ( const Vector3 & vec ); - - // Get the x, y, and z elements of a 4-D vector - // - inline const Vector3 getXYZ( ) const; - - // Set the x element of a 4-D vector - // - inline Vector4 & setX( float x ); - - // Set the y element of a 4-D vector - // - inline Vector4 & setY( float y ); - - // Set the z element of a 4-D vector - // - inline Vector4 & setZ( float z ); - - // Set the w element of a 4-D vector - // - inline Vector4 & setW( float w ); - - // Get the x element of a 4-D vector - // - inline float getX( ) const; - - // Get the y element of a 4-D vector - // - inline float getY( ) const; - - // Get the z element of a 4-D vector - // - inline float getZ( ) const; - - // Get the w element of a 4-D vector - // - inline float getW( ) const; - - // Set an x, y, z, or w element of a 4-D vector by index - // - inline Vector4 & setElem( int idx, float value ); - - // Get an x, y, z, or w element of a 4-D vector by index - // - inline float getElem( int idx ) const; - - // Subscripting operator to set or get an element - // - inline float & operator []( int idx ); - - // Subscripting operator to get an element - // - inline float operator []( int idx ) const; - - // Add two 4-D vectors - // - inline const Vector4 operator +( const Vector4 & vec ) const; - - // Subtract a 4-D vector from another 4-D vector - // - inline const Vector4 operator -( const Vector4 & vec ) const; - - // Multiply a 4-D vector by a scalar - // - inline const Vector4 operator *( float scalar ) const; - - // Divide a 4-D vector by a scalar - // - inline const Vector4 operator /( float scalar ) const; - - // Perform compound assignment and addition with a 4-D vector - // - inline Vector4 & operator +=( const Vector4 & vec ); - - // Perform compound assignment and subtraction by a 4-D vector - // - inline Vector4 & operator -=( const Vector4 & vec ); - - // Perform compound assignment and multiplication by a scalar - // - inline Vector4 & operator *=( float scalar ); - - // Perform compound assignment and division by a scalar - // - inline Vector4 & operator /=( float scalar ); - - // Negate all elements of a 4-D vector - // - inline const Vector4 operator -( ) const; - - // Construct x axis - // - static inline const Vector4 xAxis( ); - - // Construct y axis - // - static inline const Vector4 yAxis( ); - - // Construct z axis - // - static inline const Vector4 zAxis( ); - - // Construct w axis - // - static inline const Vector4 wAxis( ); - -} -#ifdef __GNUC__ -__attribute__ ((aligned(16))) -#endif -; - -// Multiply a 4-D vector by a scalar -// -inline const Vector4 operator *( float scalar, const Vector4 & vec ); - -// Multiply two 4-D vectors per element -// -inline const Vector4 mulPerElem( const Vector4 & vec0, const Vector4 & vec1 ); - -// Divide two 4-D vectors per element -// NOTE: -// Floating-point behavior matches standard library function divf4. -// -inline const Vector4 divPerElem( const Vector4 & vec0, const Vector4 & vec1 ); - -// Compute the reciprocal of a 4-D vector per element -// NOTE: -// Floating-point behavior matches standard library function recipf4. -// -inline const Vector4 recipPerElem( const Vector4 & vec ); - -// Compute the square root of a 4-D vector per element -// NOTE: -// Floating-point behavior matches standard library function sqrtf4. -// -inline const Vector4 sqrtPerElem( const Vector4 & vec ); - -// Compute the reciprocal square root of a 4-D vector per element -// NOTE: -// Floating-point behavior matches standard library function rsqrtf4. -// -inline const Vector4 rsqrtPerElem( const Vector4 & vec ); - -// Compute the absolute value of a 4-D vector per element -// -inline const Vector4 absPerElem( const Vector4 & vec ); - -// Copy sign from one 4-D vector to another, per element -// -inline const Vector4 copySignPerElem( const Vector4 & vec0, const Vector4 & vec1 ); - -// Maximum of two 4-D vectors per element -// -inline const Vector4 maxPerElem( const Vector4 & vec0, const Vector4 & vec1 ); - -// Minimum of two 4-D vectors per element -// -inline const Vector4 minPerElem( const Vector4 & vec0, const Vector4 & vec1 ); - -// Maximum element of a 4-D vector -// -inline float maxElem( const Vector4 & vec ); - -// Minimum element of a 4-D vector -// -inline float minElem( const Vector4 & vec ); - -// Compute the sum of all elements of a 4-D vector -// -inline float sum( const Vector4 & vec ); - -// Compute the dot product of two 4-D vectors -// -inline float dot( const Vector4 & vec0, const Vector4 & vec1 ); - -// Compute the square of the length of a 4-D vector -// -inline float lengthSqr( const Vector4 & vec ); - -// Compute the length of a 4-D vector -// -inline float length( const Vector4 & vec ); - -// Normalize a 4-D vector -// NOTE: -// The result is unpredictable when all elements of vec are at or near zero. -// -inline const Vector4 normalize( const Vector4 & vec ); - -// Outer product of two 4-D vectors -// -inline const Matrix4 outer( const Vector4 & vec0, const Vector4 & vec1 ); - -// Linear interpolation between two 4-D vectors -// NOTE: -// Does not clamp t between 0 and 1. -// -inline const Vector4 lerp( float t, const Vector4 & vec0, const Vector4 & vec1 ); - -// Spherical linear interpolation between two 4-D vectors -// NOTE: -// The result is unpredictable if the vectors point in opposite directions. -// Does not clamp t between 0 and 1. -// -inline const Vector4 slerp( float t, const Vector4 & unitVec0, const Vector4 & unitVec1 ); - -// Conditionally select between two 4-D vectors -// -inline const Vector4 select( const Vector4 & vec0, const Vector4 & vec1, bool select1 ); - -// Load x, y, z, and w elements from the first four words of a float array. -// -// -inline void loadXYZW( Vector4 & vec, const float * fptr ); - -// Store x, y, z, and w elements of a 4-D vector in the first four words of a float array. -// Memory area of previous 16 bytes and next 32 bytes from fptr might be accessed -// -inline void storeXYZW( const Vector4 & vec, float * fptr ); - -// Load four-half-floats as a 4-D vector -// NOTE: -// This transformation does not support either denormalized numbers or NaNs. -// -inline void loadHalfFloats( Vector4 & vec, const unsigned short * hfptr ); - -// Store a 4-D vector as half-floats. Memory area of previous 16 bytes and next 32 bytes from hfptr might be accessed. -// NOTE: -// This transformation does not support either denormalized numbers or NaNs. Memory area of previous 16 bytes and next 32 bytes from hfptr might be accessed. -// -inline void storeHalfFloats( const Vector4 & vec, unsigned short * hfptr ); - -#ifdef _VECTORMATH_DEBUG - -// Print a 4-D vector -// NOTE: -// Function is only defined when _VECTORMATH_DEBUG is defined. -// -inline void print( const Vector4 & vec ); - -// Print a 4-D vector and an associated string identifier -// NOTE: -// Function is only defined when _VECTORMATH_DEBUG is defined. -// -inline void print( const Vector4 & vec, const char * name ); - -#endif - -// A 3-D point in array-of-structures format -// -class Point3 -{ - float mX; - float mY; - float mZ; -#ifndef __GNUC__ - float d; -#endif - -public: - // Default constructor; does no initialization - // - inline Point3( ) { }; - - // Copy a 3-D point - // - inline Point3( const Point3 & pnt ); - - // Construct a 3-D point from x, y, and z elements - // - inline Point3( float x, float y, float z ); - - // Copy elements from a 3-D vector into a 3-D point - // - explicit inline Point3( const Vector3 & vec ); - - // Set all elements of a 3-D point to the same scalar value - // - explicit inline Point3( float scalar ); - - // Assign one 3-D point to another - // - inline Point3 & operator =( const Point3 & pnt ); - - // Set the x element of a 3-D point - // - inline Point3 & setX( float x ); - - // Set the y element of a 3-D point - // - inline Point3 & setY( float y ); - - // Set the z element of a 3-D point - // - inline Point3 & setZ( float z ); - - // Get the x element of a 3-D point - // - inline float getX( ) const; - - // Get the y element of a 3-D point - // - inline float getY( ) const; - - // Get the z element of a 3-D point - // - inline float getZ( ) const; - - // Set an x, y, or z element of a 3-D point by index - // - inline Point3 & setElem( int idx, float value ); - - // Get an x, y, or z element of a 3-D point by index - // - inline float getElem( int idx ) const; - - // Subscripting operator to set or get an element - // - inline float & operator []( int idx ); - - // Subscripting operator to get an element - // - inline float operator []( int idx ) const; - - // Subtract a 3-D point from another 3-D point - // - inline const Vector3 operator -( const Point3 & pnt ) const; - - // Add a 3-D point to a 3-D vector - // - inline const Point3 operator +( const Vector3 & vec ) const; - - // Subtract a 3-D vector from a 3-D point - // - inline const Point3 operator -( const Vector3 & vec ) const; - - // Perform compound assignment and addition with a 3-D vector - // - inline Point3 & operator +=( const Vector3 & vec ); - - // Perform compound assignment and subtraction by a 3-D vector - // - inline Point3 & operator -=( const Vector3 & vec ); - -} -#ifdef __GNUC__ -__attribute__ ((aligned(16))) -#endif -; - -// Multiply two 3-D points per element -// -inline const Point3 mulPerElem( const Point3 & pnt0, const Point3 & pnt1 ); - -// Divide two 3-D points per element -// NOTE: -// Floating-point behavior matches standard library function divf4. -// -inline const Point3 divPerElem( const Point3 & pnt0, const Point3 & pnt1 ); - -// Compute the reciprocal of a 3-D point per element -// NOTE: -// Floating-point behavior matches standard library function recipf4. -// -inline const Point3 recipPerElem( const Point3 & pnt ); - -// Compute the square root of a 3-D point per element -// NOTE: -// Floating-point behavior matches standard library function sqrtf4. -// -inline const Point3 sqrtPerElem( const Point3 & pnt ); - -// Compute the reciprocal square root of a 3-D point per element -// NOTE: -// Floating-point behavior matches standard library function rsqrtf4. -// -inline const Point3 rsqrtPerElem( const Point3 & pnt ); - -// Compute the absolute value of a 3-D point per element -// -inline const Point3 absPerElem( const Point3 & pnt ); - -// Copy sign from one 3-D point to another, per element -// -inline const Point3 copySignPerElem( const Point3 & pnt0, const Point3 & pnt1 ); - -// Maximum of two 3-D points per element -// -inline const Point3 maxPerElem( const Point3 & pnt0, const Point3 & pnt1 ); - -// Minimum of two 3-D points per element -// -inline const Point3 minPerElem( const Point3 & pnt0, const Point3 & pnt1 ); - -// Maximum element of a 3-D point -// -inline float maxElem( const Point3 & pnt ); - -// Minimum element of a 3-D point -// -inline float minElem( const Point3 & pnt ); - -// Compute the sum of all elements of a 3-D point -// -inline float sum( const Point3 & pnt ); - -// Apply uniform scale to a 3-D point -// -inline const Point3 scale( const Point3 & pnt, float scaleVal ); - -// Apply non-uniform scale to a 3-D point -// -inline const Point3 scale( const Point3 & pnt, const Vector3 & scaleVec ); - -// Scalar projection of a 3-D point on a unit-length 3-D vector -// -inline float projection( const Point3 & pnt, const Vector3 & unitVec ); - -// Compute the square of the distance of a 3-D point from the coordinate-system origin -// -inline float distSqrFromOrigin( const Point3 & pnt ); - -// Compute the distance of a 3-D point from the coordinate-system origin -// -inline float distFromOrigin( const Point3 & pnt ); - -// Compute the square of the distance between two 3-D points -// -inline float distSqr( const Point3 & pnt0, const Point3 & pnt1 ); - -// Compute the distance between two 3-D points -// -inline float dist( const Point3 & pnt0, const Point3 & pnt1 ); - -// Linear interpolation between two 3-D points -// NOTE: -// Does not clamp t between 0 and 1. -// -inline const Point3 lerp( float t, const Point3 & pnt0, const Point3 & pnt1 ); - -// Conditionally select between two 3-D points -// -inline const Point3 select( const Point3 & pnt0, const Point3 & pnt1, bool select1 ); - -// Load x, y, and z elements from the first three words of a float array. -// -// -inline void loadXYZ( Point3 & pnt, const float * fptr ); - -// Store x, y, and z elements of a 3-D point in the first three words of a float array. -// Memory area of previous 16 bytes and next 32 bytes from fptr might be accessed -// -inline void storeXYZ( const Point3 & pnt, float * fptr ); - -// Load three-half-floats as a 3-D point -// NOTE: -// This transformation does not support either denormalized numbers or NaNs. -// -inline void loadHalfFloats( Point3 & pnt, const unsigned short * hfptr ); - -// Store a 3-D point as half-floats. Memory area of previous 16 bytes and next 32 bytes from hfptr might be accessed. -// NOTE: -// This transformation does not support either denormalized numbers or NaNs. Memory area of previous 16 bytes and next 32 bytes from hfptr might be accessed. -// -inline void storeHalfFloats( const Point3 & pnt, unsigned short * hfptr ); - -#ifdef _VECTORMATH_DEBUG - -// Print a 3-D point -// NOTE: -// Function is only defined when _VECTORMATH_DEBUG is defined. -// -inline void print( const Point3 & pnt ); - -// Print a 3-D point and an associated string identifier -// NOTE: -// Function is only defined when _VECTORMATH_DEBUG is defined. -// -inline void print( const Point3 & pnt, const char * name ); - -#endif - -// A quaternion in array-of-structures format -// -class Quat -{ - float mX; - float mY; - float mZ; - float mW; - -public: - // Default constructor; does no initialization - // - inline Quat( ) { }; - - // Copy a quaternion - // - inline Quat( const Quat & quat ); - - // Construct a quaternion from x, y, z, and w elements - // - inline Quat( float x, float y, float z, float w ); - - // Construct a quaternion from a 3-D vector and a scalar - // - inline Quat( const Vector3 & xyz, float w ); - - // Copy elements from a 4-D vector into a quaternion - // - explicit inline Quat( const Vector4 & vec ); - - // Convert a rotation matrix to a unit-length quaternion - // - explicit inline Quat( const Matrix3 & rotMat ); - - // Set all elements of a quaternion to the same scalar value - // - explicit inline Quat( float scalar ); - - // Assign one quaternion to another - // - inline Quat & operator =( const Quat & quat ); - - // Set the x, y, and z elements of a quaternion - // NOTE: - // This function does not change the w element. - // - inline Quat & setXYZ( const Vector3 & vec ); - - // Get the x, y, and z elements of a quaternion - // - inline const Vector3 getXYZ( ) const; - - // Set the x element of a quaternion - // - inline Quat & setX( float x ); - - // Set the y element of a quaternion - // - inline Quat & setY( float y ); - - // Set the z element of a quaternion - // - inline Quat & setZ( float z ); - - // Set the w element of a quaternion - // - inline Quat & setW( float w ); - - // Get the x element of a quaternion - // - inline float getX( ) const; - - // Get the y element of a quaternion - // - inline float getY( ) const; - - // Get the z element of a quaternion - // - inline float getZ( ) const; - - // Get the w element of a quaternion - // - inline float getW( ) const; - - // Set an x, y, z, or w element of a quaternion by index - // - inline Quat & setElem( int idx, float value ); - - // Get an x, y, z, or w element of a quaternion by index - // - inline float getElem( int idx ) const; - - // Subscripting operator to set or get an element - // - inline float & operator []( int idx ); - - // Subscripting operator to get an element - // - inline float operator []( int idx ) const; - - // Add two quaternions - // - inline const Quat operator +( const Quat & quat ) const; - - // Subtract a quaternion from another quaternion - // - inline const Quat operator -( const Quat & quat ) const; - - // Multiply two quaternions - // - inline const Quat operator *( const Quat & quat ) const; - - // Multiply a quaternion by a scalar - // - inline const Quat operator *( float scalar ) const; - - // Divide a quaternion by a scalar - // - inline const Quat operator /( float scalar ) const; - - // Perform compound assignment and addition with a quaternion - // - inline Quat & operator +=( const Quat & quat ); - - // Perform compound assignment and subtraction by a quaternion - // - inline Quat & operator -=( const Quat & quat ); - - // Perform compound assignment and multiplication by a quaternion - // - inline Quat & operator *=( const Quat & quat ); - - // Perform compound assignment and multiplication by a scalar - // - inline Quat & operator *=( float scalar ); - - // Perform compound assignment and division by a scalar - // - inline Quat & operator /=( float scalar ); - - // Negate all elements of a quaternion - // - inline const Quat operator -( ) const; - - // Construct an identity quaternion - // - static inline const Quat identity( ); - - // Construct a quaternion to rotate between two unit-length 3-D vectors - // NOTE: - // The result is unpredictable if unitVec0 and unitVec1 point in opposite directions. - // - static inline const Quat rotation( const Vector3 & unitVec0, const Vector3 & unitVec1 ); - - // Construct a quaternion to rotate around a unit-length 3-D vector - // - static inline const Quat rotation( float radians, const Vector3 & unitVec ); - - // Construct a quaternion to rotate around the x axis - // - static inline const Quat rotationX( float radians ); - - // Construct a quaternion to rotate around the y axis - // - static inline const Quat rotationY( float radians ); - - // Construct a quaternion to rotate around the z axis - // - static inline const Quat rotationZ( float radians ); - -} -#ifdef __GNUC__ -__attribute__ ((aligned(16))) -#endif -; - -// Multiply a quaternion by a scalar -// -inline const Quat operator *( float scalar, const Quat & quat ); - -// Compute the conjugate of a quaternion -// -inline const Quat conj( const Quat & quat ); - -// Use a unit-length quaternion to rotate a 3-D vector -// -inline const Vector3 rotate( const Quat & unitQuat, const Vector3 & vec ); - -// Compute the dot product of two quaternions -// -inline float dot( const Quat & quat0, const Quat & quat1 ); - -// Compute the norm of a quaternion -// -inline float norm( const Quat & quat ); - -// Compute the length of a quaternion -// -inline float length( const Quat & quat ); - -// Normalize a quaternion -// NOTE: -// The result is unpredictable when all elements of quat are at or near zero. -// -inline const Quat normalize( const Quat & quat ); - -// Linear interpolation between two quaternions -// NOTE: -// Does not clamp t between 0 and 1. -// -inline const Quat lerp( float t, const Quat & quat0, const Quat & quat1 ); - -// Spherical linear interpolation between two quaternions -// NOTE: -// Interpolates along the shortest path between orientations. -// Does not clamp t between 0 and 1. -// -inline const Quat slerp( float t, const Quat & unitQuat0, const Quat & unitQuat1 ); - -// Spherical quadrangle interpolation -// -inline const Quat squad( float t, const Quat & unitQuat0, const Quat & unitQuat1, const Quat & unitQuat2, const Quat & unitQuat3 ); - -// Conditionally select between two quaternions -// -inline const Quat select( const Quat & quat0, const Quat & quat1, bool select1 ); - -// Load x, y, z, and w elements from the first four words of a float array. -// -// -inline void loadXYZW( Quat & quat, const float * fptr ); - -// Store x, y, z, and w elements of a quaternion in the first four words of a float array. -// Memory area of previous 16 bytes and next 32 bytes from fptr might be accessed -// -inline void storeXYZW( const Quat & quat, float * fptr ); - -#ifdef _VECTORMATH_DEBUG - -// Print a quaternion -// NOTE: -// Function is only defined when _VECTORMATH_DEBUG is defined. -// -inline void print( const Quat & quat ); - -// Print a quaternion and an associated string identifier -// NOTE: -// Function is only defined when _VECTORMATH_DEBUG is defined. -// -inline void print( const Quat & quat, const char * name ); - -#endif - -// A 3x3 matrix in array-of-structures format -// -class Matrix3 -{ - Vector3 mCol0; - Vector3 mCol1; - Vector3 mCol2; - -public: - // Default constructor; does no initialization - // - inline Matrix3( ) { }; - - // Copy a 3x3 matrix - // - inline Matrix3( const Matrix3 & mat ); - - // Construct a 3x3 matrix containing the specified columns - // - inline Matrix3( const Vector3 & col0, const Vector3 & col1, const Vector3 & col2 ); - - // Construct a 3x3 rotation matrix from a unit-length quaternion - // - explicit inline Matrix3( const Quat & unitQuat ); - - // Set all elements of a 3x3 matrix to the same scalar value - // - explicit inline Matrix3( float scalar ); - - // Assign one 3x3 matrix to another - // - inline Matrix3 & operator =( const Matrix3 & mat ); - - // Set column 0 of a 3x3 matrix - // - inline Matrix3 & setCol0( const Vector3 & col0 ); - - // Set column 1 of a 3x3 matrix - // - inline Matrix3 & setCol1( const Vector3 & col1 ); - - // Set column 2 of a 3x3 matrix - // - inline Matrix3 & setCol2( const Vector3 & col2 ); - - // Get column 0 of a 3x3 matrix - // - inline const Vector3 getCol0( ) const; - - // Get column 1 of a 3x3 matrix - // - inline const Vector3 getCol1( ) const; - - // Get column 2 of a 3x3 matrix - // - inline const Vector3 getCol2( ) const; - - // Set the column of a 3x3 matrix referred to by the specified index - // - inline Matrix3 & setCol( int col, const Vector3 & vec ); - - // Set the row of a 3x3 matrix referred to by the specified index - // - inline Matrix3 & setRow( int row, const Vector3 & vec ); - - // Get the column of a 3x3 matrix referred to by the specified index - // - inline const Vector3 getCol( int col ) const; - - // Get the row of a 3x3 matrix referred to by the specified index - // - inline const Vector3 getRow( int row ) const; - - // Subscripting operator to set or get a column - // - inline Vector3 & operator []( int col ); - - // Subscripting operator to get a column - // - inline const Vector3 operator []( int col ) const; - - // Set the element of a 3x3 matrix referred to by column and row indices - // - inline Matrix3 & setElem( int col, int row, float val ); - - // Get the element of a 3x3 matrix referred to by column and row indices - // - inline float getElem( int col, int row ) const; - - // Add two 3x3 matrices - // - inline const Matrix3 operator +( const Matrix3 & mat ) const; - - // Subtract a 3x3 matrix from another 3x3 matrix - // - inline const Matrix3 operator -( const Matrix3 & mat ) const; - - // Negate all elements of a 3x3 matrix - // - inline const Matrix3 operator -( ) const; - - // Multiply a 3x3 matrix by a scalar - // - inline const Matrix3 operator *( float scalar ) const; - - // Multiply a 3x3 matrix by a 3-D vector - // - inline const Vector3 operator *( const Vector3 & vec ) const; - - // Multiply two 3x3 matrices - // - inline const Matrix3 operator *( const Matrix3 & mat ) const; - - // Perform compound assignment and addition with a 3x3 matrix - // - inline Matrix3 & operator +=( const Matrix3 & mat ); - - // Perform compound assignment and subtraction by a 3x3 matrix - // - inline Matrix3 & operator -=( const Matrix3 & mat ); - - // Perform compound assignment and multiplication by a scalar - // - inline Matrix3 & operator *=( float scalar ); - - // Perform compound assignment and multiplication by a 3x3 matrix - // - inline Matrix3 & operator *=( const Matrix3 & mat ); - - // Construct an identity 3x3 matrix - // - static inline const Matrix3 identity( ); - - // Construct a 3x3 matrix to rotate around the x axis - // - static inline const Matrix3 rotationX( float radians ); - - // Construct a 3x3 matrix to rotate around the y axis - // - static inline const Matrix3 rotationY( float radians ); - - // Construct a 3x3 matrix to rotate around the z axis - // - static inline const Matrix3 rotationZ( float radians ); - - // Construct a 3x3 matrix to rotate around the x, y, and z axes - // - static inline const Matrix3 rotationZYX( const Vector3 & radiansXYZ ); - - // Construct a 3x3 matrix to rotate around a unit-length 3-D vector - // - static inline const Matrix3 rotation( float radians, const Vector3 & unitVec ); - - // Construct a rotation matrix from a unit-length quaternion - // - static inline const Matrix3 rotation( const Quat & unitQuat ); - - // Construct a 3x3 matrix to perform scaling - // - static inline const Matrix3 scale( const Vector3 & scaleVec ); - -}; -// Multiply a 3x3 matrix by a scalar -// -inline const Matrix3 operator *( float scalar, const Matrix3 & mat ); - -// Append (post-multiply) a scale transformation to a 3x3 matrix -// NOTE: -// Faster than creating and multiplying a scale transformation matrix. -// -inline const Matrix3 appendScale( const Matrix3 & mat, const Vector3 & scaleVec ); - -// Prepend (pre-multiply) a scale transformation to a 3x3 matrix -// NOTE: -// Faster than creating and multiplying a scale transformation matrix. -// -inline const Matrix3 prependScale( const Vector3 & scaleVec, const Matrix3 & mat ); - -// Multiply two 3x3 matrices per element -// -inline const Matrix3 mulPerElem( const Matrix3 & mat0, const Matrix3 & mat1 ); - -// Compute the absolute value of a 3x3 matrix per element -// -inline const Matrix3 absPerElem( const Matrix3 & mat ); - -// Transpose of a 3x3 matrix -// -inline const Matrix3 transpose( const Matrix3 & mat ); - -// Compute the inverse of a 3x3 matrix -// NOTE: -// Result is unpredictable when the determinant of mat is equal to or near 0. -// -inline const Matrix3 inverse( const Matrix3 & mat ); - -// Determinant of a 3x3 matrix -// -inline float determinant( const Matrix3 & mat ); - -// Conditionally select between two 3x3 matrices -// -inline const Matrix3 select( const Matrix3 & mat0, const Matrix3 & mat1, bool select1 ); - -#ifdef _VECTORMATH_DEBUG - -// Print a 3x3 matrix -// NOTE: -// Function is only defined when _VECTORMATH_DEBUG is defined. -// -inline void print( const Matrix3 & mat ); - -// Print a 3x3 matrix and an associated string identifier -// NOTE: -// Function is only defined when _VECTORMATH_DEBUG is defined. -// -inline void print( const Matrix3 & mat, const char * name ); - -#endif - -// A 4x4 matrix in array-of-structures format -// -class Matrix4 -{ - Vector4 mCol0; - Vector4 mCol1; - Vector4 mCol2; - Vector4 mCol3; - -public: - // Default constructor; does no initialization - // - inline Matrix4( ) { }; - - // Copy a 4x4 matrix - // - inline Matrix4( const Matrix4 & mat ); - - // Construct a 4x4 matrix containing the specified columns - // - inline Matrix4( const Vector4 & col0, const Vector4 & col1, const Vector4 & col2, const Vector4 & col3 ); - - // Construct a 4x4 matrix from a 3x4 transformation matrix - // - explicit inline Matrix4( const Transform3 & mat ); - - // Construct a 4x4 matrix from a 3x3 matrix and a 3-D vector - // - inline Matrix4( const Matrix3 & mat, const Vector3 & translateVec ); - - // Construct a 4x4 matrix from a unit-length quaternion and a 3-D vector - // - inline Matrix4( const Quat & unitQuat, const Vector3 & translateVec ); - - // Set all elements of a 4x4 matrix to the same scalar value - // - explicit inline Matrix4( float scalar ); - - // Assign one 4x4 matrix to another - // - inline Matrix4 & operator =( const Matrix4 & mat ); - - // Set the upper-left 3x3 submatrix - // NOTE: - // This function does not change the bottom row elements. - // - inline Matrix4 & setUpper3x3( const Matrix3 & mat3 ); - - // Get the upper-left 3x3 submatrix of a 4x4 matrix - // - inline const Matrix3 getUpper3x3( ) const; - - // Set translation component - // NOTE: - // This function does not change the bottom row elements. - // - inline Matrix4 & setTranslation( const Vector3 & translateVec ); - - // Get the translation component of a 4x4 matrix - // - inline const Vector3 getTranslation( ) const; - - // Set column 0 of a 4x4 matrix - // - inline Matrix4 & setCol0( const Vector4 & col0 ); - - // Set column 1 of a 4x4 matrix - // - inline Matrix4 & setCol1( const Vector4 & col1 ); - - // Set column 2 of a 4x4 matrix - // - inline Matrix4 & setCol2( const Vector4 & col2 ); - - // Set column 3 of a 4x4 matrix - // - inline Matrix4 & setCol3( const Vector4 & col3 ); - - // Get column 0 of a 4x4 matrix - // - inline const Vector4 getCol0( ) const; - - // Get column 1 of a 4x4 matrix - // - inline const Vector4 getCol1( ) const; - - // Get column 2 of a 4x4 matrix - // - inline const Vector4 getCol2( ) const; - - // Get column 3 of a 4x4 matrix - // - inline const Vector4 getCol3( ) const; - - // Set the column of a 4x4 matrix referred to by the specified index - // - inline Matrix4 & setCol( int col, const Vector4 & vec ); - - // Set the row of a 4x4 matrix referred to by the specified index - // - inline Matrix4 & setRow( int row, const Vector4 & vec ); - - // Get the column of a 4x4 matrix referred to by the specified index - // - inline const Vector4 getCol( int col ) const; - - // Get the row of a 4x4 matrix referred to by the specified index - // - inline const Vector4 getRow( int row ) const; - - // Subscripting operator to set or get a column - // - inline Vector4 & operator []( int col ); - - // Subscripting operator to get a column - // - inline const Vector4 operator []( int col ) const; - - // Set the element of a 4x4 matrix referred to by column and row indices - // - inline Matrix4 & setElem( int col, int row, float val ); - - // Get the element of a 4x4 matrix referred to by column and row indices - // - inline float getElem( int col, int row ) const; - - // Add two 4x4 matrices - // - inline const Matrix4 operator +( const Matrix4 & mat ) const; - - // Subtract a 4x4 matrix from another 4x4 matrix - // - inline const Matrix4 operator -( const Matrix4 & mat ) const; - - // Negate all elements of a 4x4 matrix - // - inline const Matrix4 operator -( ) const; - - // Multiply a 4x4 matrix by a scalar - // - inline const Matrix4 operator *( float scalar ) const; - - // Multiply a 4x4 matrix by a 4-D vector - // - inline const Vector4 operator *( const Vector4 & vec ) const; - - // Multiply a 4x4 matrix by a 3-D vector - // - inline const Vector4 operator *( const Vector3 & vec ) const; - - // Multiply a 4x4 matrix by a 3-D point - // - inline const Vector4 operator *( const Point3 & pnt ) const; - - // Multiply two 4x4 matrices - // - inline const Matrix4 operator *( const Matrix4 & mat ) const; - - // Multiply a 4x4 matrix by a 3x4 transformation matrix - // - inline const Matrix4 operator *( const Transform3 & tfrm ) const; - - // Perform compound assignment and addition with a 4x4 matrix - // - inline Matrix4 & operator +=( const Matrix4 & mat ); - - // Perform compound assignment and subtraction by a 4x4 matrix - // - inline Matrix4 & operator -=( const Matrix4 & mat ); - - // Perform compound assignment and multiplication by a scalar - // - inline Matrix4 & operator *=( float scalar ); - - // Perform compound assignment and multiplication by a 4x4 matrix - // - inline Matrix4 & operator *=( const Matrix4 & mat ); - - // Perform compound assignment and multiplication by a 3x4 transformation matrix - // - inline Matrix4 & operator *=( const Transform3 & tfrm ); - - // Construct an identity 4x4 matrix - // - static inline const Matrix4 identity( ); - - // Construct a 4x4 matrix to rotate around the x axis - // - static inline const Matrix4 rotationX( float radians ); - - // Construct a 4x4 matrix to rotate around the y axis - // - static inline const Matrix4 rotationY( float radians ); - - // Construct a 4x4 matrix to rotate around the z axis - // - static inline const Matrix4 rotationZ( float radians ); - - // Construct a 4x4 matrix to rotate around the x, y, and z axes - // - static inline const Matrix4 rotationZYX( const Vector3 & radiansXYZ ); - - // Construct a 4x4 matrix to rotate around a unit-length 3-D vector - // - static inline const Matrix4 rotation( float radians, const Vector3 & unitVec ); - - // Construct a rotation matrix from a unit-length quaternion - // - static inline const Matrix4 rotation( const Quat & unitQuat ); - - // Construct a 4x4 matrix to perform scaling - // - static inline const Matrix4 scale( const Vector3 & scaleVec ); - - // Construct a 4x4 matrix to perform translation - // - static inline const Matrix4 translation( const Vector3 & translateVec ); - - // Construct viewing matrix based on eye position, position looked at, and up direction - // - static inline const Matrix4 lookAt( const Point3 & eyePos, const Point3 & lookAtPos, const Vector3 & upVec ); - - // Construct a perspective projection matrix - // - static inline const Matrix4 perspective( float fovyRadians, float aspect, float zNear, float zFar ); - - // Construct a perspective projection matrix based on frustum - // - static inline const Matrix4 frustum( float left, float right, float bottom, float top, float zNear, float zFar ); - - // Construct an orthographic projection matrix - // - static inline const Matrix4 orthographic( float left, float right, float bottom, float top, float zNear, float zFar ); - -}; -// Multiply a 4x4 matrix by a scalar -// -inline const Matrix4 operator *( float scalar, const Matrix4 & mat ); - -// Append (post-multiply) a scale transformation to a 4x4 matrix -// NOTE: -// Faster than creating and multiplying a scale transformation matrix. -// -inline const Matrix4 appendScale( const Matrix4 & mat, const Vector3 & scaleVec ); - -// Prepend (pre-multiply) a scale transformation to a 4x4 matrix -// NOTE: -// Faster than creating and multiplying a scale transformation matrix. -// -inline const Matrix4 prependScale( const Vector3 & scaleVec, const Matrix4 & mat ); - -// Multiply two 4x4 matrices per element -// -inline const Matrix4 mulPerElem( const Matrix4 & mat0, const Matrix4 & mat1 ); - -// Compute the absolute value of a 4x4 matrix per element -// -inline const Matrix4 absPerElem( const Matrix4 & mat ); - -// Transpose of a 4x4 matrix -// -inline const Matrix4 transpose( const Matrix4 & mat ); - -// Compute the inverse of a 4x4 matrix -// NOTE: -// Result is unpredictable when the determinant of mat is equal to or near 0. -// -inline const Matrix4 inverse( const Matrix4 & mat ); - -// Compute the inverse of a 4x4 matrix, which is expected to be an affine matrix -// NOTE: -// This can be used to achieve better performance than a general inverse when the specified 4x4 matrix meets the given restrictions. The result is unpredictable when the determinant of mat is equal to or near 0. -// -inline const Matrix4 affineInverse( const Matrix4 & mat ); - -// Compute the inverse of a 4x4 matrix, which is expected to be an affine matrix with an orthogonal upper-left 3x3 submatrix -// NOTE: -// This can be used to achieve better performance than a general inverse when the specified 4x4 matrix meets the given restrictions. -// -inline const Matrix4 orthoInverse( const Matrix4 & mat ); - -// Determinant of a 4x4 matrix -// -inline float determinant( const Matrix4 & mat ); - -// Conditionally select between two 4x4 matrices -// -inline const Matrix4 select( const Matrix4 & mat0, const Matrix4 & mat1, bool select1 ); - -#ifdef _VECTORMATH_DEBUG - -// Print a 4x4 matrix -// NOTE: -// Function is only defined when _VECTORMATH_DEBUG is defined. -// -inline void print( const Matrix4 & mat ); - -// Print a 4x4 matrix and an associated string identifier -// NOTE: -// Function is only defined when _VECTORMATH_DEBUG is defined. -// -inline void print( const Matrix4 & mat, const char * name ); - -#endif - -// A 3x4 transformation matrix in array-of-structures format -// -class Transform3 -{ - Vector3 mCol0; - Vector3 mCol1; - Vector3 mCol2; - Vector3 mCol3; - -public: - // Default constructor; does no initialization - // - inline Transform3( ) { }; - - // Copy a 3x4 transformation matrix - // - inline Transform3( const Transform3 & tfrm ); - - // Construct a 3x4 transformation matrix containing the specified columns - // - inline Transform3( const Vector3 & col0, const Vector3 & col1, const Vector3 & col2, const Vector3 & col3 ); - - // Construct a 3x4 transformation matrix from a 3x3 matrix and a 3-D vector - // - inline Transform3( const Matrix3 & tfrm, const Vector3 & translateVec ); - - // Construct a 3x4 transformation matrix from a unit-length quaternion and a 3-D vector - // - inline Transform3( const Quat & unitQuat, const Vector3 & translateVec ); - - // Set all elements of a 3x4 transformation matrix to the same scalar value - // - explicit inline Transform3( float scalar ); - - // Assign one 3x4 transformation matrix to another - // - inline Transform3 & operator =( const Transform3 & tfrm ); - - // Set the upper-left 3x3 submatrix - // - inline Transform3 & setUpper3x3( const Matrix3 & mat3 ); - - // Get the upper-left 3x3 submatrix of a 3x4 transformation matrix - // - inline const Matrix3 getUpper3x3( ) const; - - // Set translation component - // - inline Transform3 & setTranslation( const Vector3 & translateVec ); - - // Get the translation component of a 3x4 transformation matrix - // - inline const Vector3 getTranslation( ) const; - - // Set column 0 of a 3x4 transformation matrix - // - inline Transform3 & setCol0( const Vector3 & col0 ); - - // Set column 1 of a 3x4 transformation matrix - // - inline Transform3 & setCol1( const Vector3 & col1 ); - - // Set column 2 of a 3x4 transformation matrix - // - inline Transform3 & setCol2( const Vector3 & col2 ); - - // Set column 3 of a 3x4 transformation matrix - // - inline Transform3 & setCol3( const Vector3 & col3 ); - - // Get column 0 of a 3x4 transformation matrix - // - inline const Vector3 getCol0( ) const; - - // Get column 1 of a 3x4 transformation matrix - // - inline const Vector3 getCol1( ) const; - - // Get column 2 of a 3x4 transformation matrix - // - inline const Vector3 getCol2( ) const; - - // Get column 3 of a 3x4 transformation matrix - // - inline const Vector3 getCol3( ) const; - - // Set the column of a 3x4 transformation matrix referred to by the specified index - // - inline Transform3 & setCol( int col, const Vector3 & vec ); - - // Set the row of a 3x4 transformation matrix referred to by the specified index - // - inline Transform3 & setRow( int row, const Vector4 & vec ); - - // Get the column of a 3x4 transformation matrix referred to by the specified index - // - inline const Vector3 getCol( int col ) const; - - // Get the row of a 3x4 transformation matrix referred to by the specified index - // - inline const Vector4 getRow( int row ) const; - - // Subscripting operator to set or get a column - // - inline Vector3 & operator []( int col ); - - // Subscripting operator to get a column - // - inline const Vector3 operator []( int col ) const; - - // Set the element of a 3x4 transformation matrix referred to by column and row indices - // - inline Transform3 & setElem( int col, int row, float val ); - - // Get the element of a 3x4 transformation matrix referred to by column and row indices - // - inline float getElem( int col, int row ) const; - - // Multiply a 3x4 transformation matrix by a 3-D vector - // - inline const Vector3 operator *( const Vector3 & vec ) const; - - // Multiply a 3x4 transformation matrix by a 3-D point - // - inline const Point3 operator *( const Point3 & pnt ) const; - - // Multiply two 3x4 transformation matrices - // - inline const Transform3 operator *( const Transform3 & tfrm ) const; - - // Perform compound assignment and multiplication by a 3x4 transformation matrix - // - inline Transform3 & operator *=( const Transform3 & tfrm ); - - // Construct an identity 3x4 transformation matrix - // - static inline const Transform3 identity( ); - - // Construct a 3x4 transformation matrix to rotate around the x axis - // - static inline const Transform3 rotationX( float radians ); - - // Construct a 3x4 transformation matrix to rotate around the y axis - // - static inline const Transform3 rotationY( float radians ); - - // Construct a 3x4 transformation matrix to rotate around the z axis - // - static inline const Transform3 rotationZ( float radians ); - - // Construct a 3x4 transformation matrix to rotate around the x, y, and z axes - // - static inline const Transform3 rotationZYX( const Vector3 & radiansXYZ ); - - // Construct a 3x4 transformation matrix to rotate around a unit-length 3-D vector - // - static inline const Transform3 rotation( float radians, const Vector3 & unitVec ); - - // Construct a rotation matrix from a unit-length quaternion - // - static inline const Transform3 rotation( const Quat & unitQuat ); - - // Construct a 3x4 transformation matrix to perform scaling - // - static inline const Transform3 scale( const Vector3 & scaleVec ); - - // Construct a 3x4 transformation matrix to perform translation - // - static inline const Transform3 translation( const Vector3 & translateVec ); - -}; -// Append (post-multiply) a scale transformation to a 3x4 transformation matrix -// NOTE: -// Faster than creating and multiplying a scale transformation matrix. -// -inline const Transform3 appendScale( const Transform3 & tfrm, const Vector3 & scaleVec ); - -// Prepend (pre-multiply) a scale transformation to a 3x4 transformation matrix -// NOTE: -// Faster than creating and multiplying a scale transformation matrix. -// -inline const Transform3 prependScale( const Vector3 & scaleVec, const Transform3 & tfrm ); - -// Multiply two 3x4 transformation matrices per element -// -inline const Transform3 mulPerElem( const Transform3 & tfrm0, const Transform3 & tfrm1 ); - -// Compute the absolute value of a 3x4 transformation matrix per element -// -inline const Transform3 absPerElem( const Transform3 & tfrm ); - -// Inverse of a 3x4 transformation matrix -// NOTE: -// Result is unpredictable when the determinant of the left 3x3 submatrix is equal to or near 0. -// -inline const Transform3 inverse( const Transform3 & tfrm ); - -// Compute the inverse of a 3x4 transformation matrix, expected to have an orthogonal upper-left 3x3 submatrix -// NOTE: -// This can be used to achieve better performance than a general inverse when the specified 3x4 transformation matrix meets the given restrictions. -// -inline const Transform3 orthoInverse( const Transform3 & tfrm ); - -// Conditionally select between two 3x4 transformation matrices -// -inline const Transform3 select( const Transform3 & tfrm0, const Transform3 & tfrm1, bool select1 ); - -#ifdef _VECTORMATH_DEBUG - -// Print a 3x4 transformation matrix -// NOTE: -// Function is only defined when _VECTORMATH_DEBUG is defined. -// -inline void print( const Transform3 & tfrm ); - -// Print a 3x4 transformation matrix and an associated string identifier -// NOTE: -// Function is only defined when _VECTORMATH_DEBUG is defined. -// -inline void print( const Transform3 & tfrm, const char * name ); - -#endif - -} // namespace Aos -} // namespace Vectormath - -#include "vec_aos.h" -#include "quat_aos.h" -#include "mat_aos.h" - -#endif diff --git a/extern/bullet2/BulletMultiThreaded/vectormath2bullet.h b/extern/bullet2/BulletMultiThreaded/vectormath2bullet.h deleted file mode 100644 index 5a4944a5500..00000000000 --- a/extern/bullet2/BulletMultiThreaded/vectormath2bullet.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. - All rights reserved. - - Redistribution and use in source and binary forms, - with or without modification, are permitted provided that the - following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the Sony Computer Entertainment Inc nor the names - of its contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef AOS_VECTORMATH_BULLET_CONVERT_H -#define AOS_VECTORMATH_BULLET_CONVERT_H - - -///only use a system-wide vectormath_aos.h on CELLOS_LV2 or if USE_SYSTEM_VECTORMATH -#if defined(__CELLOS_LV2__) || defined (USE_SYSTEM_VECTORMATH) -#include -#else -#include "BulletMultiThreaded/vectormath/scalar/cpp/vectormath_aos.h" -#endif - -#include "LinearMath/btVector3.h" -#include "LinearMath/btQuaternion.h" -#include "LinearMath/btMatrix3x3.h" - -inline Vectormath::Aos::Vector3 getVmVector3(const btVector3& bulletVec) -{ - return Vectormath::Aos::Vector3(bulletVec.getX(),bulletVec.getY(),bulletVec.getZ()); -} - -inline btVector3 getBtVector3(const Vectormath::Aos::Vector3& vmVec) -{ - return btVector3(vmVec.getX(),vmVec.getY(),vmVec.getZ()); -} -inline btVector3 getBtVector3(const Vectormath::Aos::Point3& vmVec) -{ - return btVector3(vmVec.getX(),vmVec.getY(),vmVec.getZ()); -} - -inline Vectormath::Aos::Quat getVmQuat(const btQuaternion& bulletQuat) -{ - Vectormath::Aos::Quat vmQuat(bulletQuat.getX(),bulletQuat.getY(),bulletQuat.getZ(),bulletQuat.getW()); - return vmQuat; -} - -inline btQuaternion getBtQuat(const Vectormath::Aos::Quat& vmQuat) -{ - return btQuaternion (vmQuat.getX(),vmQuat.getY(),vmQuat.getZ(),vmQuat.getW()); -} - -inline Vectormath::Aos::Matrix3 getVmMatrix3(const btMatrix3x3& btMat) -{ - Vectormath::Aos::Matrix3 mat( - getVmVector3(btMat.getColumn(0)), - getVmVector3(btMat.getColumn(1)), - getVmVector3(btMat.getColumn(2))); - return mat; -} - - -#endif //AOS_VECTORMATH_BULLET_CONVERT_H diff --git a/extern/bullet2/BulletSoftBody/CMakeLists.txt b/extern/bullet2/BulletSoftBody/CMakeLists.txt deleted file mode 100644 index 6074dbaceeb..00000000000 --- a/extern/bullet2/BulletSoftBody/CMakeLists.txt +++ /dev/null @@ -1,52 +0,0 @@ - -INCLUDE_DIRECTORIES( -${BULLET_PHYSICS_SOURCE_DIR}/src -) - -SET(BulletSoftBody_SRCS - btSoftBody.cpp - btSoftBodyConcaveCollisionAlgorithm.cpp - btSoftBodyHelpers.cpp - btSoftBodyRigidBodyCollisionConfiguration.cpp - btSoftRigidCollisionAlgorithm.cpp - btSoftRigidDynamicsWorld.cpp - btSoftSoftCollisionAlgorithm.cpp -) - -SET(BulletSoftBody_HDRS - btSoftBody.h - btSoftBodyConcaveCollisionAlgorithm.h - btSoftBodyHelpers.h - btSoftBodyRigidBodyCollisionConfiguration.h - btSoftRigidCollisionAlgorithm.h - btSoftRigidDynamicsWorld.h - btSoftSoftCollisionAlgorithm.h - btSparseSDF.h -) - - - -ADD_LIBRARY(BulletSoftBody ${BulletSoftBody_SRCS} ${BulletSoftBody_HDRS}) -SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES VERSION ${BULLET_VERSION}) -SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES SOVERSION ${BULLET_VERSION}) -IF (BUILD_SHARED_LIBS) - TARGET_LINK_LIBRARIES(BulletSoftBody BulletDynamics) -ENDIF (BUILD_SHARED_LIBS) - -IF (INSTALL_LIBS) - IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) - IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS BulletSoftBody DESTINATION .) - ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS BulletSoftBody DESTINATION lib${LIB_SUFFIX}) - INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h") - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES FRAMEWORK true) - SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES PUBLIC_HEADER ${BulletSoftBody_HDRS}) - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) -ENDIF (INSTALL_LIBS) \ No newline at end of file diff --git a/extern/bullet2/BulletSoftBody/btSoftBody.cpp b/extern/bullet2/BulletSoftBody/btSoftBody.cpp deleted file mode 100644 index f6b98ddf46d..00000000000 --- a/extern/bullet2/BulletSoftBody/btSoftBody.cpp +++ /dev/null @@ -1,2931 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ -///btSoftBody implementation by Nathanael Presson - -#include "btSoftBodyInternals.h" - -// -btSoftBody::btSoftBody(btSoftBodyWorldInfo* worldInfo,int node_count, const btVector3* x, const btScalar* m) -:m_worldInfo(worldInfo) -{ - /* Init */ - m_internalType = CO_SOFT_BODY; - m_cfg.aeromodel = eAeroModel::V_Point; - m_cfg.kVCF = 1; - m_cfg.kDG = 0; - m_cfg.kLF = 0; - m_cfg.kDP = 0; - m_cfg.kPR = 0; - m_cfg.kVC = 0; - m_cfg.kDF = (btScalar)0.2; - m_cfg.kMT = 0; - m_cfg.kCHR = (btScalar)1.0; - m_cfg.kKHR = (btScalar)0.1; - m_cfg.kSHR = (btScalar)1.0; - m_cfg.kAHR = (btScalar)0.7; - m_cfg.kSRHR_CL = (btScalar)0.1; - m_cfg.kSKHR_CL = (btScalar)1; - m_cfg.kSSHR_CL = (btScalar)0.5; - m_cfg.kSR_SPLT_CL = (btScalar)0.5; - m_cfg.kSK_SPLT_CL = (btScalar)0.5; - m_cfg.kSS_SPLT_CL = (btScalar)0.5; - m_cfg.maxvolume = (btScalar)1; - m_cfg.timescale = 1; - m_cfg.viterations = 0; - m_cfg.piterations = 1; - m_cfg.diterations = 0; - m_cfg.citerations = 4; - m_cfg.collisions = fCollision::Default; - m_pose.m_bvolume = false; - m_pose.m_bframe = false; - m_pose.m_volume = 0; - m_pose.m_com = btVector3(0,0,0); - m_pose.m_rot.setIdentity(); - m_pose.m_scl.setIdentity(); - m_tag = 0; - m_timeacc = 0; - m_bUpdateRtCst = true; - m_bounds[0] = btVector3(0,0,0); - m_bounds[1] = btVector3(0,0,0); - m_worldTransform.setIdentity(); - setSolver(eSolverPresets::Positions); - /* Default material */ - Material* pm=appendMaterial(); - pm->m_kLST = 1; - pm->m_kAST = 1; - pm->m_kVST = 1; - pm->m_flags = fMaterial::Default; - /* Collision shape */ - ///for now, create a collision shape internally - m_collisionShape = new btSoftBodyCollisionShape(this); - m_collisionShape->setMargin(0.25); - /* Nodes */ - const btScalar margin=getCollisionShape()->getMargin(); - m_nodes.resize(node_count); - for(int i=0,ni=node_count;i0?1/n.m_im:0; - n.m_leaf = m_ndbvt.insert(btDbvtVolume::FromCR(n.m_x,margin),&n); - n.m_material= pm; - } - updateBounds(); - - m_initialWorldTransform.setIdentity(); -} - -// -btSoftBody::~btSoftBody() -{ - //for now, delete the internal shape - delete m_collisionShape; - int i; - - releaseClusters(); - for(i=0;i0) - *pm=*m_materials[0]; - else - ZeroInitialize(*pm); - m_materials.push_back(pm); - return(pm); -} - -// -void btSoftBody::appendNote( const char* text, - const btVector3& o, - const btVector4& c, - Node* n0, - Node* n1, - Node* n2, - Node* n3) -{ - Note n; - ZeroInitialize(n); - n.m_rank = 0; - n.m_text = text; - n.m_offset = o; - n.m_coords[0] = c.x(); - n.m_coords[1] = c.y(); - n.m_coords[2] = c.z(); - n.m_coords[3] = c.w(); - n.m_nodes[0] = n0;n.m_rank+=n0?1:0; - n.m_nodes[1] = n1;n.m_rank+=n1?1:0; - n.m_nodes[2] = n2;n.m_rank+=n2?1:0; - n.m_nodes[3] = n3;n.m_rank+=n3?1:0; - m_notes.push_back(n); -} - -// -void btSoftBody::appendNote( const char* text, - const btVector3& o, - Node* feature) -{ - appendNote(text,o,btVector4(1,0,0,0),feature); -} - -// -void btSoftBody::appendNote( const char* text, - const btVector3& o, - Link* feature) -{ - static const btScalar w=1/(btScalar)2; - appendNote(text,o,btVector4(w,w,0,0), feature->m_n[0], - feature->m_n[1]); -} - -// -void btSoftBody::appendNote( const char* text, - const btVector3& o, - Face* feature) -{ - static const btScalar w=1/(btScalar)3; - appendNote(text,o,btVector4(w,w,w,0), feature->m_n[0], - feature->m_n[1], - feature->m_n[2]); -} - -// -void btSoftBody::appendNode( const btVector3& x,btScalar m) -{ - if(m_nodes.capacity()==m_nodes.size()) - { - pointersToIndices(); - m_nodes.reserve(m_nodes.size()*2+1); - indicesToPointers(); - } - const btScalar margin=getCollisionShape()->getMargin(); - m_nodes.push_back(Node()); - Node& n=m_nodes[m_nodes.size()-1]; - ZeroInitialize(n); - n.m_x = x; - n.m_q = n.m_x; - n.m_im = m>0?1/m:0; - n.m_material = m_materials[0]; - n.m_leaf = m_ndbvt.insert(btDbvtVolume::FromCR(n.m_x,margin),&n); -} - -// -void btSoftBody::appendLink(int model,Material* mat) -{ - Link l; - if(model>=0) - l=m_links[model]; - else - { ZeroInitialize(l);l.m_material=mat?mat:m_materials[0]; } - m_links.push_back(l); -} - -// -void btSoftBody::appendLink( int node0, - int node1, - Material* mat, - bool bcheckexist) -{ - appendLink(&m_nodes[node0],&m_nodes[node1],mat,bcheckexist); -} - -// -void btSoftBody::appendLink( Node* node0, - Node* node1, - Material* mat, - bool bcheckexist) -{ - if((!bcheckexist)||(!checkLink(node0,node1))) - { - appendLink(-1,mat); - Link& l=m_links[m_links.size()-1]; - l.m_n[0] = node0; - l.m_n[1] = node1; - l.m_rl = (l.m_n[0]->m_x-l.m_n[1]->m_x).length(); - m_bUpdateRtCst=true; - } -} - -// -void btSoftBody::appendFace(int model,Material* mat) -{ - Face f; - if(model>=0) - { f=m_faces[model]; } - else - { ZeroInitialize(f);f.m_material=mat?mat:m_materials[0]; } - m_faces.push_back(f); -} - -// -void btSoftBody::appendFace(int node0,int node1,int node2,Material* mat) -{ - if (node0==node1) - return; - if (node1==node2) - return; - if (node2==node0) - return; - - appendFace(-1,mat); - Face& f=m_faces[m_faces.size()-1]; - btAssert(node0!=node1); - btAssert(node1!=node2); - btAssert(node2!=node0); - f.m_n[0] = &m_nodes[node0]; - f.m_n[1] = &m_nodes[node1]; - f.m_n[2] = &m_nodes[node2]; - f.m_ra = AreaOf( f.m_n[0]->m_x, - f.m_n[1]->m_x, - f.m_n[2]->m_x); - m_bUpdateRtCst=true; -} - -// -void btSoftBody::appendTetra(int model,Material* mat) -{ -Tetra t; -if(model>=0) - t=m_tetras[model]; - else - { ZeroInitialize(t);t.m_material=mat?mat:m_materials[0]; } -m_tetras.push_back(t); -} - -// -void btSoftBody::appendTetra(int node0, - int node1, - int node2, - int node3, - Material* mat) -{ - appendTetra(-1,mat); - Tetra& t=m_tetras[m_tetras.size()-1]; - t.m_n[0] = &m_nodes[node0]; - t.m_n[1] = &m_nodes[node1]; - t.m_n[2] = &m_nodes[node2]; - t.m_n[3] = &m_nodes[node3]; - t.m_rv = VolumeOf(t.m_n[0]->m_x,t.m_n[1]->m_x,t.m_n[2]->m_x,t.m_n[3]->m_x); - m_bUpdateRtCst=true; -} - -// -void btSoftBody::appendAnchor(int node,btRigidBody* body, bool disableCollisionBetweenLinkedBodies) -{ - if (disableCollisionBetweenLinkedBodies) - { - if (m_collisionDisabledObjects.findLinearSearch(body)==m_collisionDisabledObjects.size()) - { - m_collisionDisabledObjects.push_back(body); - } - } - - Anchor a; - a.m_node = &m_nodes[node]; - a.m_body = body; - a.m_local = body->getInterpolationWorldTransform().inverse()*a.m_node->m_x; - a.m_node->m_battach = 1; - m_anchors.push_back(a); -} - -// -void btSoftBody::appendLinearJoint(const LJoint::Specs& specs,Cluster* body0,Body body1) -{ - LJoint* pj = new(btAlignedAlloc(sizeof(LJoint),16)) LJoint(); - pj->m_bodies[0] = body0; - pj->m_bodies[1] = body1; - pj->m_refs[0] = pj->m_bodies[0].xform().inverse()*specs.position; - pj->m_refs[1] = pj->m_bodies[1].xform().inverse()*specs.position; - pj->m_cfm = specs.cfm; - pj->m_erp = specs.erp; - pj->m_split = specs.split; - m_joints.push_back(pj); -} - -// -void btSoftBody::appendLinearJoint(const LJoint::Specs& specs,Body body) -{ - appendLinearJoint(specs,m_clusters[0],body); -} - -// -void btSoftBody::appendLinearJoint(const LJoint::Specs& specs,btSoftBody* body) -{ - appendLinearJoint(specs,m_clusters[0],body->m_clusters[0]); -} - -// -void btSoftBody::appendAngularJoint(const AJoint::Specs& specs,Cluster* body0,Body body1) -{ - AJoint* pj = new(btAlignedAlloc(sizeof(AJoint),16)) AJoint(); - pj->m_bodies[0] = body0; - pj->m_bodies[1] = body1; - pj->m_refs[0] = pj->m_bodies[0].xform().inverse().getBasis()*specs.axis; - pj->m_refs[1] = pj->m_bodies[1].xform().inverse().getBasis()*specs.axis; - pj->m_cfm = specs.cfm; - pj->m_erp = specs.erp; - pj->m_split = specs.split; - pj->m_icontrol = specs.icontrol; - m_joints.push_back(pj); -} - -// -void btSoftBody::appendAngularJoint(const AJoint::Specs& specs,Body body) -{ - appendAngularJoint(specs,m_clusters[0],body); -} - -// -void btSoftBody::appendAngularJoint(const AJoint::Specs& specs,btSoftBody* body) -{ - appendAngularJoint(specs,m_clusters[0],body->m_clusters[0]); -} - -// -void btSoftBody::addForce(const btVector3& force) -{ - for(int i=0,ni=m_nodes.size();i0) - { - n.m_f += force; - } -} - -// -void btSoftBody::addVelocity(const btVector3& velocity) -{ - for(int i=0,ni=m_nodes.size();i0) - { - n.m_v = velocity; - } - } -} - - -// -void btSoftBody::addVelocity(const btVector3& velocity,int node) -{ - Node& n=m_nodes[node]; - if(n.m_im>0) - { - n.m_v += velocity; - } -} - -// -void btSoftBody::setMass(int node,btScalar mass) -{ - m_nodes[node].m_im=mass>0?1/mass:0; - m_bUpdateRtCst=true; -} - -// -btScalar btSoftBody::getMass(int node) const -{ - return(m_nodes[node].m_im>0?1/m_nodes[node].m_im:0); -} - -// -btScalar btSoftBody::getTotalMass() const -{ - btScalar mass=0; - for(int i=0;im_x, - f.m_n[1]->m_x, - f.m_n[2]->m_x); - for(int j=0;j<3;++j) - { - f.m_n[j]->m_im+=twicearea; - } - } - for( i=0;i ranks; -ranks.resize(m_nodes.size(),0); -int i; - -for(i=0;im_im+=btFabs(t.m_rv); - ranks[int(t.m_n[j]-&m_nodes[0])]+=1; - } - } -for( i=0;i0) - { - m_nodes[i].m_im=ranks[i]/m_nodes[i].m_im; - } - } -setTotalMass(mass,false); -} - -// -void btSoftBody::setVolumeDensity(btScalar density) -{ -btScalar volume=0; -for(int i=0;igetMargin(); - ATTRIBUTE_ALIGNED16(btDbvtVolume) vol; - - for(int i=0,ni=m_nodes.size();igetMargin(); - ATTRIBUTE_ALIGNED16(btDbvtVolume) vol; - - for(int i=0,ni=m_nodes.size();i0 ? - 1/(m_nodes[i].m_im*tmass) : - kmass/tmass; - } - /* Pos */ - const btVector3 com=evaluateCom(); - m_pose.m_pos.resize(m_nodes.size()); - for( i=0,ni=m_nodes.size();i0) - { - int i,ni; - - const btVector3 org=m_nodes[0].m_x; - for(i=0,ni=m_faces.size();im_x-org,btCross(f.m_n[1]->m_x-org,f.m_n[2]->m_x-org)); - } - vol/=(btScalar)6; - } - return(vol); -} - -// -int btSoftBody::clusterCount() const -{ - return(m_clusters.size()); -} - -// -btVector3 btSoftBody::clusterCom(const Cluster* cluster) -{ - btVector3 com(0,0,0); - for(int i=0,ni=cluster->m_nodes.size();im_nodes[i]->m_x*cluster->m_masses[i]; - } - return(com*cluster->m_imass); -} - -// -btVector3 btSoftBody::clusterCom(int cluster) const -{ - return(clusterCom(m_clusters[cluster])); -} - -// -btVector3 btSoftBody::clusterVelocity(const Cluster* cluster,const btVector3& rpos) -{ - return(cluster->m_lv+btCross(cluster->m_av,rpos)); -} - -// -void btSoftBody::clusterVImpulse(Cluster* cluster,const btVector3& rpos,const btVector3& impulse) -{ - const btVector3 li=cluster->m_imass*impulse; - const btVector3 ai=cluster->m_invwi*btCross(rpos,impulse); - cluster->m_vimpulses[0]+=li;cluster->m_lv+=li; - cluster->m_vimpulses[1]+=ai;cluster->m_av+=ai; - cluster->m_nvimpulses++; -} - -// -void btSoftBody::clusterDImpulse(Cluster* cluster,const btVector3& rpos,const btVector3& impulse) -{ - const btVector3 li=cluster->m_imass*impulse; - const btVector3 ai=cluster->m_invwi*btCross(rpos,impulse); - cluster->m_dimpulses[0]+=li; - cluster->m_dimpulses[1]+=ai; - cluster->m_ndimpulses++; -} - -// -void btSoftBody::clusterImpulse(Cluster* cluster,const btVector3& rpos,const Impulse& impulse) -{ - if(impulse.m_asVelocity) clusterVImpulse(cluster,rpos,impulse.m_velocity); - if(impulse.m_asDrift) clusterDImpulse(cluster,rpos,impulse.m_drift); -} - -// -void btSoftBody::clusterVAImpulse(Cluster* cluster,const btVector3& impulse) -{ - const btVector3 ai=cluster->m_invwi*impulse; - cluster->m_vimpulses[1]+=ai;cluster->m_av+=ai; - cluster->m_nvimpulses++; -} - -// -void btSoftBody::clusterDAImpulse(Cluster* cluster,const btVector3& impulse) -{ - const btVector3 ai=cluster->m_invwi*impulse; - cluster->m_dimpulses[1]+=ai; - cluster->m_ndimpulses++; -} - -// -void btSoftBody::clusterAImpulse(Cluster* cluster,const Impulse& impulse) -{ - if(impulse.m_asVelocity) clusterVAImpulse(cluster,impulse.m_velocity); - if(impulse.m_asDrift) clusterDAImpulse(cluster,impulse.m_drift); -} - -// -void btSoftBody::clusterDCImpulse(Cluster* cluster,const btVector3& impulse) -{ - cluster->m_dimpulses[0]+=impulse*cluster->m_imass; - cluster->m_ndimpulses++; -} - -struct NodeLinks -{ - btAlignedObjectArray m_links; -}; - - - -// -int btSoftBody::generateBendingConstraints(int distance,Material* mat) -{ - int i,j; - - if(distance>1) - { - /* Build graph */ - const int n=m_nodes.size(); - const unsigned inf=(~(unsigned)0)>>1; - unsigned* adj=new unsigned[n*n]; - - -#define IDX(_x_,_y_) ((_y_)*n+(_x_)) - for(j=0;j nodeLinks; - - - /* Build node links */ - nodeLinks.resize(m_nodes.size()); - - for( i=0;isum) - { - adj[IDX(i,j)]=adj[IDX(j,i)]=sum; - } - } - - } - } - } - } else - { - ///generic Floyd's algorithm - for(int k=0;ksum) - { - adj[IDX(i,j)]=adj[IDX(j,i)]=sum; - } - } - } - } - } - - - /* Build links */ - int nlinks=0; - for(j=0;jm_leaf) m_cdbvt.remove(c->m_leaf); - c->~Cluster(); - btAlignedFree(c); - m_clusters.remove(c); -} - -// -void btSoftBody::releaseClusters() -{ - while(m_clusters.size()>0) releaseCluster(0); -} - -// -int btSoftBody::generateClusters(int k,int maxiterations) -{ - int i; - releaseClusters(); - m_clusters.resize(btMin(k,m_nodes.size())); - for(i=0;im_collide= true; - } - k=m_clusters.size(); - if(k>0) - { - /* Initialize */ - btAlignedObjectArray centers; - btVector3 cog(0,0,0); - int i; - for(i=0;im_nodes.push_back(&m_nodes[i]); - } - cog/=(btScalar)m_nodes.size(); - centers.resize(k,cog); - /* Iterate */ - const btScalar slope=16; - bool changed; - int iterations=0; - do { - const btScalar w=2-btMin(1,iterations/slope); - changed=false; - iterations++; - int i; - - for(i=0;im_nodes.size();++j) - { - c+=m_clusters[i]->m_nodes[j]->m_x; - } - if(m_clusters[i]->m_nodes.size()) - { - c /= (btScalar)m_clusters[i]->m_nodes.size(); - c = centers[i]+(c-centers[i])*w; - changed |= ((c-centers[i]).length2()>SIMD_EPSILON); - centers[i] = c; - m_clusters[i]->m_nodes.resize(0); - } - } - for(i=0;im_nodes.push_back(&m_nodes[i]); - } - } while(changed&&(iterations cids; - cids.resize(m_nodes.size(),-1); - for(i=0;im_nodes.size();++j) - { - cids[int(m_clusters[i]->m_nodes[j]-&m_nodes[0])]=i; - } - } - for(i=0;im_nodes.findLinearSearch(&m_nodes[kid])==m_clusters[cid]->m_nodes.size()) - { - m_clusters[cid]->m_nodes.push_back(&m_nodes[kid]); - } - } - } - } - } - /* Master */ - if(m_clusters.size()>1) - { - Cluster* pmaster=new(btAlignedAlloc(sizeof(Cluster),16)) Cluster(); - pmaster->m_collide = false; - pmaster->m_nodes.reserve(m_nodes.size()); - for(int i=0;im_nodes.push_back(&m_nodes[i]); - m_clusters.push_back(pmaster); - btSwap(m_clusters[0],m_clusters[m_clusters.size()-1]); - } - /* Terminate */ - for(i=0;im_nodes.size()==0) - { - releaseCluster(i--); - } - } - } else - { - //create a cluster for each tetrahedron (if tetrahedra exist) or each face - if (m_tetras.size()) - { - m_clusters.resize(m_tetras.size()); - for(i=0;im_collide= true; - } - for (i=0;im_nodes.push_back(m_tetras[i].m_n[j]); - } - } - - } else - { - m_clusters.resize(m_faces.size()); - for(i=0;im_collide= true; - } - - for(i=0;im_nodes.push_back(m_faces[i].m_n[j]); - } - } - } - } - - if (m_clusters.size()) - { - initializeClusters(); - updateClusters(); - - - //for self-collision - m_clusterConnectivity.resize(m_clusters.size()*m_clusters.size()); - { - for (int c0=0;c0m_clusterIndex=c0; - for (int c1=0;c1m_nodes.size();i++) - { - for (int j=0;jm_nodes.size();j++) - { - if (cla->m_nodes[i] == clb->m_nodes[j]) - { - connected=true; - break; - } - } - } - m_clusterConnectivity[c0+c1*m_clusters.size()]=connected; - } - } - } - } - - return(m_clusters.size()); -} - -// -void btSoftBody::refine(ImplicitFn* ifn,btScalar accurary,bool cut) -{ - const Node* nbase = &m_nodes[0]; - int ncount = m_nodes.size(); - btSymMatrix edges(ncount,-2); - int newnodes=0; - int i,j,k,ni; - - /* Filter out */ - for(i=0;iEval(l.m_n[0]->m_x),ifn->Eval(l.m_n[1]->m_x))) - { - btSwap(m_links[i],m_links[m_links.size()-1]); - m_links.pop_back();--i; - } - } - } - /* Fill edges */ - for(i=0;i0) - { - const btVector3 x=Lerp(a.m_x,b.m_x,t); - const btVector3 v=Lerp(a.m_v,b.m_v,t); - btScalar m=0; - if(a.m_im>0) - { - if(b.m_im>0) - { - const btScalar ma=1/a.m_im; - const btScalar mb=1/b.m_im; - const btScalar mc=Lerp(ma,mb,t); - const btScalar f=(ma+mb)/(ma+mb+mc); - a.m_im=1/(ma*f); - b.m_im=1/(mb*f); - m=mc*f; - } - else - { a.m_im/=0.5;m=1/a.m_im; } - } - else - { - if(b.m_im>0) - { b.m_im/=0.5;m=1/b.m_im; } - else - m=0; - } - appendNode(x,m); - edges(i,j)=m_nodes.size()-1; - m_nodes[edges(i,j)].m_v=v; - ++newnodes; - } - } - } - } - nbase=&m_nodes[0]; - /* Refine links */ - for(i=0,ni=m_links.size();i0) - { - appendLink(i); - Link* pft[]={ &m_links[i], - &m_links[m_links.size()-1]}; - pft[0]->m_n[0]=&m_nodes[idx[0]]; - pft[0]->m_n[1]=&m_nodes[ni]; - pft[1]->m_n[0]=&m_nodes[ni]; - pft[1]->m_n[1]=&m_nodes[idx[1]]; - } - } - } - /* Refine faces */ - for(i=0;i0) - { - appendFace(i); - const int l=(k+1)%3; - Face* pft[]={ &m_faces[i], - &m_faces[m_faces.size()-1]}; - pft[0]->m_n[0]=&m_nodes[idx[l]]; - pft[0]->m_n[1]=&m_nodes[idx[j]]; - pft[0]->m_n[2]=&m_nodes[ni]; - pft[1]->m_n[0]=&m_nodes[ni]; - pft[1]->m_n[1]=&m_nodes[idx[k]]; - pft[1]->m_n[2]=&m_nodes[idx[l]]; - appendLink(ni,idx[l],pft[0]->m_material); - --i;break; - } - } - } - } - /* Cut */ - if(cut) - { - btAlignedObjectArray cnodes; - const int pcount=ncount; - int i; - ncount=m_nodes.size(); - cnodes.resize(ncount,0); - /* Nodes */ - for(i=0;i=pcount)||(btFabs(ifn->Eval(x))0) { m*=0.5;m_nodes[i].m_im/=0.5; } - appendNode(x,m); - cnodes[i]=m_nodes.size()-1; - m_nodes[cnodes[i]].m_v=v; - } - } - nbase=&m_nodes[0]; - /* Links */ - for(i=0,ni=m_links.size();iEval(m_nodes[id[0]].m_x)Eval(m_nodes[id[1]].m_x)Eval(n[0]->m_x)Eval(n[1]->m_x)Eval(n[2]->m_x) ranks; - btAlignedObjectArray todelete; - ranks.resize(nnodes,0); - for(i=0,ni=m_links.size();i=0;--i) - { - if(!ranks[i]) todelete.push_back(i); - } - if(todelete.size()) - { - btAlignedObjectArray& map=ranks; - for(int i=0;im_v=v; - pn[1]->m_v=v; - for(i=0,ni=m_links.size();im_n[1]=pn[mtch]; - pft[1]->m_n[0]=pn[1-mtch]; - done=true; - } - } - for(i=0,ni=m_faces.size();im_n[l]=pn[mtch]; - pft[1]->m_n[k]=pn[1-mtch]; - appendLink(pn[0],pft[0]->m_n[(l+1)%3],pft[0]->m_material,true); - appendLink(pn[1],pft[0]->m_n[(l+1)%3],pft[0]->m_material,true); - } - } - } - if(!done) - { - m_ndbvt.remove(pn[0]->m_leaf); - m_ndbvt.remove(pn[1]->m_leaf); - m_nodes.pop_back(); - m_nodes.pop_back(); - } - return(done); -} - -// -bool btSoftBody::rayTest(const btVector3& rayFrom, - const btVector3& rayTo, - sRayCast& results) -{ - if(m_faces.size()&&m_fdbvt.empty()) - initializeFaceTree(); - - results.body = this; - results.fraction = 1.f; - results.feature = eFeature::None; - results.index = -1; - - return(rayTest(rayFrom,rayTo,results.fraction,results.feature,results.index,false)!=0); -} - -// -void btSoftBody::setSolver(eSolverPresets::_ preset) -{ - m_cfg.m_vsequence.clear(); - m_cfg.m_psequence.clear(); - m_cfg.m_dsequence.clear(); - switch(preset) - { - case eSolverPresets::Positions: - m_cfg.m_psequence.push_back(ePSolver::Anchors); - m_cfg.m_psequence.push_back(ePSolver::RContacts); - m_cfg.m_psequence.push_back(ePSolver::SContacts); - m_cfg.m_psequence.push_back(ePSolver::Linear); - break; - case eSolverPresets::Velocities: - m_cfg.m_vsequence.push_back(eVSolver::Linear); - - m_cfg.m_psequence.push_back(ePSolver::Anchors); - m_cfg.m_psequence.push_back(ePSolver::RContacts); - m_cfg.m_psequence.push_back(ePSolver::SContacts); - - m_cfg.m_dsequence.push_back(ePSolver::Linear); - break; - } -} - -// -void btSoftBody::predictMotion(btScalar dt) -{ - int i,ni; - - /* Update */ - if(m_bUpdateRtCst) - { - m_bUpdateRtCst=false; - updateConstants(); - m_fdbvt.clear(); - if(m_cfg.collisions&fCollision::VF_SS) - { - initializeFaceTree(); - } - } - - /* Prepare */ - m_sst.sdt = dt*m_cfg.timescale; - m_sst.isdt = 1/m_sst.sdt; - m_sst.velmrg = m_sst.sdt*3; - m_sst.radmrg = getCollisionShape()->getMargin(); - m_sst.updmrg = m_sst.radmrg*(btScalar)0.25; - /* Forces */ - addVelocity(m_worldInfo->m_gravity*m_sst.sdt); - applyForces(); - /* Integrate */ - for(i=0,ni=m_nodes.size();im_v+ - f.m_n[1]->m_v+ - f.m_n[2]->m_v)/3; - vol = VolumeOf(f,m_sst.radmrg); - m_fdbvt.update( f.m_leaf, - vol, - v*m_sst.velmrg, - m_sst.updmrg); - } - } - /* Pose */ - updatePose(); - /* Match */ - if(m_pose.m_bframe&&(m_cfg.kMT>0)) - { - const btMatrix3x3 posetrs=m_pose.m_rot; - for(int i=0,ni=m_nodes.size();i0) - { - const btVector3 x=posetrs*m_pose.m_pos[i]+m_pose.m_com; - n.m_x=Lerp(n.m_x,x,m_cfg.kMT); - } - } - } - /* Clear contacts */ - m_rcontacts.resize(0); - m_scontacts.resize(0); - /* Optimize dbvt's */ - m_ndbvt.optimizeIncremental(1); - m_fdbvt.optimizeIncremental(1); - m_cdbvt.optimizeIncremental(1); -} - -// -void btSoftBody::solveConstraints() -{ - /* Apply clusters */ - applyClusters(false); - /* Prepare links */ - - int i,ni; - - for(i=0,ni=m_links.size();im_q-l.m_n[0]->m_q; - l.m_c2 = 1/(l.m_c3.length2()*l.m_c0); - } - /* Prepare anchors */ - for(i=0,ni=m_anchors.size();igetWorldTransform().getBasis()*a.m_local; - a.m_c0 = ImpulseMatrix( m_sst.sdt, - a.m_node->m_im, - a.m_body->getInvMass(), - a.m_body->getInvInertiaTensorWorld(), - ra); - a.m_c1 = ra; - a.m_c2 = m_sst.sdt*a.m_node->m_im; - a.m_body->activate(); - } - /* Solve velocities */ - if(m_cfg.viterations>0) - { - /* Solve */ - for(int isolve=0;isolve0) - { - for(int isolve=0;isolve0) - { - const btScalar vcf=m_cfg.kVCF*m_sst.isdt; - for(i=0,ni=m_nodes.size();i& bodies) -{ - const int nb=bodies.size(); - int iterations=0; - int i; - - for(i=0;im_cfg.citerations); - } - for(i=0;iprepareClusters(iterations); - } - for(i=0;isolveClusters(sor); - } - } - for(i=0;icleanupClusters(); - } -} - -// -void btSoftBody::integrateMotion() -{ - /* Update */ - updateNormals(); -} - -// -btSoftBody::RayFromToCaster::RayFromToCaster(const btVector3& rayFrom,const btVector3& rayTo,btScalar mxt) -{ - m_rayFrom = rayFrom; - m_rayNormalizedDirection = (rayTo-rayFrom); - m_rayTo = rayTo; - m_mint = mxt; - m_face = 0; - m_tests = 0; -} - -// -void btSoftBody::RayFromToCaster::Process(const btDbvtNode* leaf) -{ - btSoftBody::Face& f=*(btSoftBody::Face*)leaf->data; - const btScalar t=rayFromToTriangle( m_rayFrom,m_rayTo,m_rayNormalizedDirection, - f.m_n[0]->m_x, - f.m_n[1]->m_x, - f.m_n[2]->m_x, - m_mint); - if((t>0)&&(tteps)&&(tceps) && - (btDot(n,btCross(b-hit,c-hit))>ceps) && - (btDot(n,btCross(c-hit,a-hit))>ceps)) - { - return(t); - } - } - } - return(-1); -} - -// -void btSoftBody::pointersToIndices() -{ -#define PTR2IDX(_p_,_b_) reinterpret_cast((_p_)-(_b_)) - btSoftBody::Node* base=&m_nodes[0]; - int i,ni; - - for(i=0,ni=m_nodes.size();idata=*(void**)&i; - } - } - for(i=0,ni=m_links.size();idata=*(void**)&i; - } - } - for(i=0,ni=m_anchors.size();idata=&m_nodes[i]; - } - } - for(i=0,ni=m_links.size();idata=&m_faces[i]; - } - } - for(i=0,ni=m_anchors.size();im_x, - f.m_n[1]->m_x, - f.m_n[2]->m_x, - mint); - if(t>0) - { - ++cnt; - if(!bcountonly) - { - feature=btSoftBody::eFeature::Face; - index=i; - mint=t; - } - } - } - } - else - {/* Use dbvt */ - RayFromToCaster collider(rayFrom,rayTo,mint); - - btDbvt::rayTest(m_fdbvt.m_root,rayFrom,rayTo,collider); - if(collider.m_face) - { - mint=collider.m_mint; - feature=btSoftBody::eFeature::Face; - index=(int)(collider.m_face-&m_faces[0]); - cnt=1; - } - } - return(cnt); -} - -// -void btSoftBody::initializeFaceTree() -{ - m_fdbvt.clear(); - for(int i=0;igetCollisionShape(); - btRigidBody* tmpRigid = btRigidBody::upcast(colObj); - const btTransform& wtr=tmpRigid? tmpRigid->getInterpolationWorldTransform() : colObj->getWorldTransform(); - btScalar dst=m_worldInfo->m_sparsesdf.Evaluate( wtr.invXform(x), - shp, - nrm, - margin); - if(dst<0) - { - cti.m_colObj = colObj; - cti.m_normal = wtr.getBasis()*nrm; - cti.m_offset = -btDot( cti.m_normal, - x-cti.m_normal*dst); - return(true); - } - return(false); -} - -// -void btSoftBody::updateNormals() -{ - const btVector3 zv(0,0,0); - int i,ni; - - for(i=0,ni=m_nodes.size();im_x-f.m_n[0]->m_x, - f.m_n[2]->m_x-f.m_n[0]->m_x); - f.m_normal=n.normalized(); - f.m_n[0]->m_n+=n; - f.m_n[1]->m_n+=n; - f.m_n[2]->m_n+=n; - } - for(i=0,ni=m_nodes.size();iSIMD_EPSILON) - m_nodes[i].m_n /= len; - } -} - -// -void btSoftBody::updateBounds() -{ - if(m_ndbvt.m_root) - { - const btVector3& mins=m_ndbvt.m_root->volume.Mins(); - const btVector3& maxs=m_ndbvt.m_root->volume.Maxs(); - const btScalar csm=getCollisionShape()->getMargin(); - const btVector3 mrg=btVector3( csm, - csm, - csm)*1; // ??? to investigate... - m_bounds[0]=mins-mrg; - m_bounds[1]=maxs+mrg; - if(0!=getBroadphaseHandle()) - { - m_worldInfo->m_broadphase->setAabb( getBroadphaseHandle(), - m_bounds[0], - m_bounds[1], - m_worldInfo->m_dispatcher); - } - } - else - { - m_bounds[0]= - m_bounds[1]=btVector3(0,0,0); - } -} - - -// -void btSoftBody::updatePose() -{ - if(m_pose.m_bframe) - { - btSoftBody::Pose& pose=m_pose; - const btVector3 com=evaluateCom(); - /* Com */ - pose.m_com = com; - /* Rotation */ - btMatrix3x3 Apq; - const btScalar eps=SIMD_EPSILON; - Apq[0]=Apq[1]=Apq[2]=btVector3(0,0,0); - Apq[0].setX(eps);Apq[1].setY(eps*2);Apq[2].setZ(eps*3); - for(int i=0,ni=m_nodes.size();i1) - { - const btScalar idet=Clamp( 1/pose.m_scl.determinant(), - 1,m_cfg.maxvolume); - pose.m_scl=Mul(pose.m_scl,idet); - } - - } -} - -// -void btSoftBody::updateConstants() -{ - int i,ni; - - /* Links */ - for(i=0,ni=m_links.size();im_x-l.m_n[1]->m_x).length(); - l.m_c0 = (l.m_n[0]->m_im+l.m_n[1]->m_im)/m.m_kLST; - l.m_c1 = l.m_rl*l.m_rl; - } - /* Faces */ - for(i=0,ni=m_faces.size();im_x,f.m_n[1]->m_x,f.m_n[2]->m_x); - } - /* Area's */ - btAlignedObjectArray counts; - counts.resize(m_nodes.size(),0); - for(i=0,ni=m_nodes.size();im_area+=btFabs(f.m_ra); - } - } - for(i=0,ni=m_nodes.size();i0) - m_nodes[i].m_area/=(btScalar)counts[i]; - else - m_nodes[i].m_area=0; - } -} - -// -void btSoftBody::initializeClusters() -{ - int i; - - for( i=0;im_im==0) - { - c.m_containsAnchor = true; - c.m_masses[j] = BT_LARGE_FLOAT; - } else - { - c.m_masses[j] = btScalar(1.)/c.m_nodes[j]->m_im; - } - c.m_imass += c.m_masses[j]; - } - c.m_imass = btScalar(1.)/c.m_imass; - c.m_com = btSoftBody::clusterCom(&c); - c.m_lv = btVector3(0,0,0); - c.m_av = btVector3(0,0,0); - c.m_leaf = 0; - /* Inertia */ - btMatrix3x3& ii=c.m_locii; - ii[0]=ii[1]=ii[2]=btVector3(0,0,0); - { - int i,ni; - - for(i=0,ni=c.m_nodes.size();im_x-c.m_com; - const btVector3 q=k*k; - const btScalar m=c.m_masses[i]; - ii[0][0] += m*(q[1]+q[2]); - ii[1][1] += m*(q[0]+q[2]); - ii[2][2] += m*(q[0]+q[1]); - ii[0][1] -= m*k[0]*k[1]; - ii[0][2] -= m*k[0]*k[2]; - ii[1][2] -= m*k[1]*k[2]; - } - } - ii[1][0]=ii[0][1]; - ii[2][0]=ii[0][2]; - ii[2][1]=ii[1][2]; - - ii = ii.inverse(); - - /* Frame */ - c.m_framexform.setIdentity(); - c.m_framexform.setOrigin(c.m_com); - c.m_framerefs.resize(c.m_nodes.size()); - { - int i; - for(i=0;im_x-c.m_com; - } - } - } -} - -// -void btSoftBody::updateClusters() -{ - BT_PROFILE("UpdateClusters"); - int i; - - for(i=0;im_x-c.m_com; - const btVector3& b=c.m_framerefs[i]; - m[0]+=a[0]*b;m[1]+=a[1]*b;m[2]+=a[2]*b; - } - PolarDecompose(m,r,s); - c.m_framexform.setOrigin(c.m_com); - c.m_framexform.setBasis(r); - /* Inertia */ -#if 1/* Constant */ - c.m_invwi=c.m_framexform.getBasis()*c.m_locii*c.m_framexform.getBasis().transpose(); -#else -#if 0/* Sphere */ - const btScalar rk=(2*c.m_extents.length2())/(5*c.m_imass); - const btVector3 inertia(rk,rk,rk); - const btVector3 iin(btFabs(inertia[0])>SIMD_EPSILON?1/inertia[0]:0, - btFabs(inertia[1])>SIMD_EPSILON?1/inertia[1]:0, - btFabs(inertia[2])>SIMD_EPSILON?1/inertia[2]:0); - - c.m_invwi=c.m_xform.getBasis().scaled(iin)*c.m_xform.getBasis().transpose(); -#else/* Actual */ - c.m_invwi[0]=c.m_invwi[1]=c.m_invwi[2]=btVector3(0,0,0); - for(int i=0;im_x-c.m_com; - const btVector3 q=k*k; - const btScalar m=1/c.m_nodes[i]->m_im; - c.m_invwi[0][0] += m*(q[1]+q[2]); - c.m_invwi[1][1] += m*(q[0]+q[2]); - c.m_invwi[2][2] += m*(q[0]+q[1]); - c.m_invwi[0][1] -= m*k[0]*k[1]; - c.m_invwi[0][2] -= m*k[0]*k[2]; - c.m_invwi[1][2] -= m*k[1]*k[2]; - } - c.m_invwi[1][0]=c.m_invwi[0][1]; - c.m_invwi[2][0]=c.m_invwi[0][2]; - c.m_invwi[2][1]=c.m_invwi[1][2]; - c.m_invwi=c.m_invwi.inverse(); -#endif -#endif - /* Velocities */ - c.m_lv=btVector3(0,0,0); - c.m_av=btVector3(0,0,0); - { - int i; - - for(i=0;im_v*c.m_masses[i]; - c.m_lv += v; - c.m_av += btCross(c.m_nodes[i]->m_x-c.m_com,v); - } - } - c.m_lv=c.m_imass*c.m_lv*(1-c.m_ldamping); - c.m_av=c.m_invwi*c.m_av*(1-c.m_adamping); - c.m_vimpulses[0] = - c.m_vimpulses[1] = btVector3(0,0,0); - c.m_dimpulses[0] = - c.m_dimpulses[1] = btVector3(0,0,0); - c.m_nvimpulses = 0; - c.m_ndimpulses = 0; - /* Matching */ - if(c.m_matching>0) - { - for(int j=0;jm_x; - btVector3 mx=mi; - for(int j=1;jm_x); - mx.setMax(c.m_nodes[j]->m_x); - } - ATTRIBUTE_ALIGNED16(btDbvtVolume) bounds=btDbvtVolume::FromMM(mi,mx); - if(c.m_leaf) - m_cdbvt.update(c.m_leaf,bounds,c.m_lv*m_sst.sdt*3,m_sst.radmrg); - else - c.m_leaf=m_cdbvt.insert(bounds,&c); - } - } - } - - -} - - - - -// -void btSoftBody::cleanupClusters() -{ - for(int i=0;iTerminate(m_sst.sdt); - if(m_joints[i]->m_delete) - { - btAlignedFree(m_joints[i]); - m_joints.remove(m_joints[i--]); - } - } -} - -// -void btSoftBody::prepareClusters(int iterations) -{ - for(int i=0;iPrepare(m_sst.sdt,iterations); - } -} - - -// -void btSoftBody::solveClusters(btScalar sor) -{ - for(int i=0,ni=m_joints.size();iSolve(m_sst.sdt,sor); - } -} - -// -void btSoftBody::applyClusters(bool drift) -{ - BT_PROFILE("ApplyClusters"); -// const btScalar f0=m_sst.sdt; - //const btScalar f1=f0/2; - btAlignedObjectArray deltas; - btAlignedObjectArray weights; - deltas.resize(m_nodes.size(),btVector3(0,0,0)); - weights.resize(m_nodes.size(),0); - int i; - - if(drift) - { - for(i=0;im_x; - const btScalar q=c.m_masses[j]; - deltas[idx] += (v+btCross(w,x-c.m_com))*q; - weights[idx] += q; - } - } - } - for(i=0;i0) m_nodes[i].m_x+=deltas[i]/weights[i]; - } -} - -// -void btSoftBody::dampClusters() -{ - int i; - - for(i=0;i0) - { - for(int j=0;j0) - { - const btVector3 vx=c.m_lv+btCross(c.m_av,c.m_nodes[j]->m_q-c.m_com); - if(vx.length2()<=n.m_v.length2()) - { - n.m_v += c.m_ndamping*(vx-n.m_v); - } - } - } - } - } -} - -// -void btSoftBody::Joint::Prepare(btScalar dt,int) -{ - m_bodies[0].activate(); - m_bodies[1].activate(); -} - -// -void btSoftBody::LJoint::Prepare(btScalar dt,int iterations) -{ - static const btScalar maxdrift=4; - Joint::Prepare(dt,iterations); - m_rpos[0] = m_bodies[0].xform()*m_refs[0]; - m_rpos[1] = m_bodies[1].xform()*m_refs[1]; - m_drift = Clamp(m_rpos[0]-m_rpos[1],maxdrift)*m_erp/dt; - m_rpos[0] -= m_bodies[0].xform().getOrigin(); - m_rpos[1] -= m_bodies[1].xform().getOrigin(); - m_massmatrix = ImpulseMatrix( m_bodies[0].invMass(),m_bodies[0].invWorldInertia(),m_rpos[0], - m_bodies[1].invMass(),m_bodies[1].invWorldInertia(),m_rpos[1]); - if(m_split>0) - { - m_sdrift = m_massmatrix*(m_drift*m_split); - m_drift *= 1-m_split; - } - m_drift /=(btScalar)iterations; -} - -// -void btSoftBody::LJoint::Solve(btScalar dt,btScalar sor) -{ - const btVector3 va=m_bodies[0].velocity(m_rpos[0]); - const btVector3 vb=m_bodies[1].velocity(m_rpos[1]); - const btVector3 vr=va-vb; - btSoftBody::Impulse impulse; - impulse.m_asVelocity = 1; - impulse.m_velocity = m_massmatrix*(m_drift+vr*m_cfm)*sor; - m_bodies[0].applyImpulse(-impulse,m_rpos[0]); - m_bodies[1].applyImpulse( impulse,m_rpos[1]); -} - -// -void btSoftBody::LJoint::Terminate(btScalar dt) -{ - if(m_split>0) - { - m_bodies[0].applyDImpulse(-m_sdrift,m_rpos[0]); - m_bodies[1].applyDImpulse( m_sdrift,m_rpos[1]); - } -} - -// -void btSoftBody::AJoint::Prepare(btScalar dt,int iterations) -{ - static const btScalar maxdrift=SIMD_PI/16; - m_icontrol->Prepare(this); - Joint::Prepare(dt,iterations); - m_axis[0] = m_bodies[0].xform().getBasis()*m_refs[0]; - m_axis[1] = m_bodies[1].xform().getBasis()*m_refs[1]; - m_drift = NormalizeAny(btCross(m_axis[1],m_axis[0])); - m_drift *= btMin(maxdrift,btAcos(Clamp(btDot(m_axis[0],m_axis[1]),-1,+1))); - m_drift *= m_erp/dt; - m_massmatrix= AngularImpulseMatrix(m_bodies[0].invWorldInertia(),m_bodies[1].invWorldInertia()); - if(m_split>0) - { - m_sdrift = m_massmatrix*(m_drift*m_split); - m_drift *= 1-m_split; - } - m_drift /=(btScalar)iterations; -} - -// -void btSoftBody::AJoint::Solve(btScalar dt,btScalar sor) -{ - const btVector3 va=m_bodies[0].angularVelocity(); - const btVector3 vb=m_bodies[1].angularVelocity(); - const btVector3 vr=va-vb; - const btScalar sp=btDot(vr,m_axis[0]); - const btVector3 vc=vr-m_axis[0]*m_icontrol->Speed(this,sp); - btSoftBody::Impulse impulse; - impulse.m_asVelocity = 1; - impulse.m_velocity = m_massmatrix*(m_drift+vc*m_cfm)*sor; - m_bodies[0].applyAImpulse(-impulse); - m_bodies[1].applyAImpulse( impulse); -} - -// -void btSoftBody::AJoint::Terminate(btScalar dt) -{ - if(m_split>0) - { - m_bodies[0].applyDAImpulse(-m_sdrift); - m_bodies[1].applyDAImpulse( m_sdrift); - } -} - -// -void btSoftBody::CJoint::Prepare(btScalar dt,int iterations) -{ - Joint::Prepare(dt,iterations); - const bool dodrift=(m_life==0); - m_delete=(++m_life)>m_maxlife; - if(dodrift) - { - m_drift=m_drift*m_erp/dt; - if(m_split>0) - { - m_sdrift = m_massmatrix*(m_drift*m_split); - m_drift *= 1-m_split; - } - m_drift/=(btScalar)iterations; - } - else - { - m_drift=m_sdrift=btVector3(0,0,0); - } -} - -// -void btSoftBody::CJoint::Solve(btScalar dt,btScalar sor) -{ - const btVector3 va=m_bodies[0].velocity(m_rpos[0]); - const btVector3 vb=m_bodies[1].velocity(m_rpos[1]); - const btVector3 vrel=va-vb; - const btScalar rvac=btDot(vrel,m_normal); - btSoftBody::Impulse impulse; - impulse.m_asVelocity = 1; - impulse.m_velocity = m_drift; - if(rvac<0) - { - const btVector3 iv=m_normal*rvac; - const btVector3 fv=vrel-iv; - impulse.m_velocity += iv+fv*m_friction; - } - impulse.m_velocity=m_massmatrix*impulse.m_velocity*sor; - - if (m_bodies[0].m_soft==m_bodies[1].m_soft) - { - if ((impulse.m_velocity.getX() ==impulse.m_velocity.getX())&&(impulse.m_velocity.getY() ==impulse.m_velocity.getY())&& - (impulse.m_velocity.getZ() ==impulse.m_velocity.getZ())) - { - if (impulse.m_asVelocity) - { - if (impulse.m_velocity.length() m_maxSelfCollisionImpulse) - { - - } else - { - m_bodies[0].applyImpulse(-impulse*m_bodies[0].m_soft->m_selfCollisionImpulseFactor,m_rpos[0]); - m_bodies[1].applyImpulse( impulse*m_bodies[0].m_soft->m_selfCollisionImpulseFactor,m_rpos[1]); - } - } - } - } else - { - m_bodies[0].applyImpulse(-impulse,m_rpos[0]); - m_bodies[1].applyImpulse( impulse,m_rpos[1]); - } -} - -// -void btSoftBody::CJoint::Terminate(btScalar dt) -{ - if(m_split>0) - { - m_bodies[0].applyDImpulse(-m_sdrift,m_rpos[0]); - m_bodies[1].applyDImpulse( m_sdrift,m_rpos[1]); - } -} - -// -void btSoftBody::applyForces() -{ - - BT_PROFILE("SoftBody applyForces"); - const btScalar dt=m_sst.sdt; - const btScalar kLF=m_cfg.kLF; - const btScalar kDG=m_cfg.kDG; - const btScalar kPR=m_cfg.kPR; - const btScalar kVC=m_cfg.kVC; - const bool as_lift=kLF>0; - const bool as_drag=kDG>0; - const bool as_pressure=kPR!=0; - const bool as_volume=kVC>0; - const bool as_aero= as_lift || - as_drag ; - const bool as_vaero= as_aero && - (m_cfg.aeromodel=btSoftBody::eAeroModel::F_TwoSided); - const bool use_medium= as_aero; - const bool use_volume= as_pressure || - as_volume ; - btScalar volume=0; - btScalar ivolumetp=0; - btScalar dvolumetv=0; - btSoftBody::sMedium medium; - if(use_volume) - { - volume = getVolume(); - ivolumetp = 1/btFabs(volume)*kPR; - dvolumetv = (m_pose.m_volume-volume)*kVC; - } - /* Per vertex forces */ - int i,ni; - - for(i=0,ni=m_nodes.size();i0) - { - if(use_medium) - { - EvaluateMedium(m_worldInfo,n.m_x,medium); - /* Aerodynamics */ - if(as_vaero) - { - const btVector3 rel_v=n.m_v-medium.m_velocity; - const btScalar rel_v2=rel_v.length2(); - if(rel_v2>SIMD_EPSILON) - { - btVector3 nrm=n.m_n; - /* Setup normal */ - switch(m_cfg.aeromodel) - { - case btSoftBody::eAeroModel::V_Point: - nrm=NormalizeAny(rel_v);break; - case btSoftBody::eAeroModel::V_TwoSided: - nrm*=(btScalar)(btDot(nrm,rel_v)<0?-1:+1);break; - default: - { - } - } - const btScalar dvn=btDot(rel_v,nrm); - /* Compute forces */ - if(dvn>0) - { - btVector3 force(0,0,0); - const btScalar c0 = n.m_area*dvn*rel_v2/2; - const btScalar c1 = c0*medium.m_density; - force += nrm*(-c1*kLF); - force += rel_v.normalized()*(-c1*kDG); - ApplyClampedForce(n,force,dt); - } - } - } - } - /* Pressure */ - if(as_pressure) - { - n.m_f += n.m_n*(n.m_area*ivolumetp); - } - /* Volume */ - if(as_volume) - { - n.m_f += n.m_n*(n.m_area*dvolumetv); - } - } - } - /* Per face forces */ - for(i=0,ni=m_faces.size();im_v+f.m_n[1]->m_v+f.m_n[2]->m_v)/3; - const btVector3 x=(f.m_n[0]->m_x+f.m_n[1]->m_x+f.m_n[2]->m_x)/3; - EvaluateMedium(m_worldInfo,x,medium); - const btVector3 rel_v=v-medium.m_velocity; - const btScalar rel_v2=rel_v.length2(); - if(rel_v2>SIMD_EPSILON) - { - btVector3 nrm=f.m_normal; - /* Setup normal */ - switch(m_cfg.aeromodel) - { - case btSoftBody::eAeroModel::F_TwoSided: - nrm*=(btScalar)(btDot(nrm,rel_v)<0?-1:+1);break; - default: - { - } - } - const btScalar dvn=btDot(rel_v,nrm); - /* Compute forces */ - if(dvn>0) - { - btVector3 force(0,0,0); - const btScalar c0 = f.m_ra*dvn*rel_v2; - const btScalar c1 = c0*medium.m_density; - force += nrm*(-c1*kLF); - force += rel_v.normalized()*(-c1*kDG); - force /= 3; - for(int j=0;j<3;++j) ApplyClampedForce(*f.m_n[j],force,dt); - } - } - } - } -} - -// -void btSoftBody::PSolve_Anchors(btSoftBody* psb,btScalar kst,btScalar ti) -{ - const btScalar kAHR=psb->m_cfg.kAHR*kst; - const btScalar dt=psb->m_sst.sdt; - for(int i=0,ni=psb->m_anchors.size();im_anchors[i]; - const btTransform& t=a.m_body->getInterpolationWorldTransform(); - Node& n=*a.m_node; - const btVector3 wa=t*a.m_local; - const btVector3 va=a.m_body->getVelocityInLocalPoint(a.m_c1)*dt; - const btVector3 vb=n.m_x-n.m_q; - const btVector3 vr=(va-vb)+(wa-n.m_x)*kAHR; - const btVector3 impulse=a.m_c0*vr; - n.m_x+=impulse*a.m_c2; - a.m_body->applyImpulse(-impulse,a.m_c1); - } -} - -// -void btSoftBody::PSolve_RContacts(btSoftBody* psb,btScalar kst,btScalar ti) -{ - const btScalar dt=psb->m_sst.sdt; - const btScalar mrg=psb->getCollisionShape()->getMargin(); - for(int i=0,ni=psb->m_rcontacts.size();im_rcontacts[i]; - const sCti& cti=c.m_cti; - btRigidBody* tmpRigid = btRigidBody::upcast(cti.m_colObj); - - const btVector3 va=tmpRigid ? tmpRigid->getVelocityInLocalPoint(c.m_c1)*dt : btVector3(0,0,0); - const btVector3 vb=c.m_node->m_x-c.m_node->m_q; - const btVector3 vr=vb-va; - const btScalar dn=btDot(vr,cti.m_normal); - if(dn<=SIMD_EPSILON) - { - const btScalar dp=btMin(btDot(c.m_node->m_x,cti.m_normal)+cti.m_offset,mrg); - const btVector3 fv=vr-cti.m_normal*dn; - const btVector3 impulse=c.m_c0*((vr-fv*c.m_c3+cti.m_normal*(dp*c.m_c4))*kst); - c.m_node->m_x-=impulse*c.m_c2; - if (tmpRigid) - tmpRigid->applyImpulse(impulse,c.m_c1); - } - } -} - -// -void btSoftBody::PSolve_SContacts(btSoftBody* psb,btScalar,btScalar ti) -{ - for(int i=0,ni=psb->m_scontacts.size();im_scontacts[i]; - const btVector3& nr=c.m_normal; - Node& n=*c.m_node; - Face& f=*c.m_face; - const btVector3 p=BaryEval( f.m_n[0]->m_x, - f.m_n[1]->m_x, - f.m_n[2]->m_x, - c.m_weights); - const btVector3 q=BaryEval( f.m_n[0]->m_q, - f.m_n[1]->m_q, - f.m_n[2]->m_q, - c.m_weights); - const btVector3 vr=(n.m_x-n.m_q)-(p-q); - btVector3 corr(0,0,0); - btScalar dot = btDot(vr,nr); - if(dot<0) - { - const btScalar j=c.m_margin-(btDot(nr,n.m_x)-btDot(nr,p)); - corr+=c.m_normal*j; - } - corr -= ProjectOnPlane(vr,nr)*c.m_friction; - n.m_x += corr*c.m_cfm[0]; - f.m_n[0]->m_x -= corr*(c.m_cfm[1]*c.m_weights.x()); - f.m_n[1]->m_x -= corr*(c.m_cfm[1]*c.m_weights.y()); - f.m_n[2]->m_x -= corr*(c.m_cfm[1]*c.m_weights.z()); - } -} - -// -void btSoftBody::PSolve_Links(btSoftBody* psb,btScalar kst,btScalar ti) -{ - for(int i=0,ni=psb->m_links.size();im_links[i]; - if(l.m_c0>0) - { - Node& a=*l.m_n[0]; - Node& b=*l.m_n[1]; - const btVector3 del=b.m_x-a.m_x; - const btScalar len=del.length2(); - const btScalar k=((l.m_c1-len)/(l.m_c0*(l.m_c1+len)))*kst; - //const btScalar t=k*a.m_im; - a.m_x-=del*(k*a.m_im); - b.m_x+=del*(k*b.m_im); - } - } -} - -// -void btSoftBody::VSolve_Links(btSoftBody* psb,btScalar kst) -{ - for(int i=0,ni=psb->m_links.size();im_links[i]; - Node** n=l.m_n; - const btScalar j=-btDot(l.m_c3,n[0]->m_v-n[1]->m_v)*l.m_c2*kst; - n[0]->m_v+= l.m_c3*(j*n[0]->m_im); - n[1]->m_v-= l.m_c3*(j*n[1]->m_im); - } -} - -// -btSoftBody::psolver_t btSoftBody::getSolver(ePSolver::_ solver) -{ - switch(solver) - { - case ePSolver::Anchors: - return(&btSoftBody::PSolve_Anchors); - case ePSolver::Linear: - return(&btSoftBody::PSolve_Links); - case ePSolver::RContacts: - return(&btSoftBody::PSolve_RContacts); - case ePSolver::SContacts: - return(&btSoftBody::PSolve_SContacts); - default: - { - } - } - return(0); -} - -// -btSoftBody::vsolver_t btSoftBody::getSolver(eVSolver::_ solver) -{ - switch(solver) - { - case eVSolver::Linear: return(&btSoftBody::VSolve_Links); - default: - { - } - } - return(0); -} - -// -void btSoftBody::defaultCollisionHandler(btCollisionObject* pco) -{ - switch(m_cfg.collisions&fCollision::RVSmask) - { - case fCollision::SDF_RS: - { - btSoftColliders::CollideSDF_RS docollide; - btRigidBody* prb1=btRigidBody::upcast(pco); - btTransform wtr=prb1 ? prb1->getInterpolationWorldTransform() : pco->getWorldTransform(); - - const btTransform ctr=pco->getWorldTransform(); - const btScalar timemargin=(wtr.getOrigin()-ctr.getOrigin()).length(); - const btScalar basemargin=getCollisionShape()->getMargin(); - btVector3 mins; - btVector3 maxs; - ATTRIBUTE_ALIGNED16(btDbvtVolume) volume; - pco->getCollisionShape()->getAabb( pco->getInterpolationWorldTransform(), - mins, - maxs); - volume=btDbvtVolume::FromMM(mins,maxs); - volume.Expand(btVector3(basemargin,basemargin,basemargin)); - docollide.psb = this; - docollide.m_colObj1 = pco; - docollide.m_rigidBody = prb1; - - docollide.dynmargin = basemargin+timemargin; - docollide.stamargin = basemargin; - m_ndbvt.collideTV(m_ndbvt.m_root,volume,docollide); - } - break; - case fCollision::CL_RS: - { - btSoftColliders::CollideCL_RS collider; - collider.Process(this,pco); - } - break; - } -} - -// -void btSoftBody::defaultCollisionHandler(btSoftBody* psb) -{ - const int cf=m_cfg.collisions&psb->m_cfg.collisions; - switch(cf&fCollision::SVSmask) - { - case fCollision::CL_SS: - { - - //support self-collision if CL_SELF flag set - if (this!=psb || psb->m_cfg.collisions&fCollision::CL_SELF) - { - btSoftColliders::CollideCL_SS docollide; - docollide.Process(this,psb); - } - - } - break; - case fCollision::VF_SS: - { - //only self-collision for Cluster, not Vertex-Face yet - if (this!=psb) - { - btSoftColliders::CollideVF_SS docollide; - /* common */ - docollide.mrg= getCollisionShape()->getMargin()+ - psb->getCollisionShape()->getMargin(); - /* psb0 nodes vs psb1 faces */ - docollide.psb[0]=this; - docollide.psb[1]=psb; - docollide.psb[0]->m_ndbvt.collideTT( docollide.psb[0]->m_ndbvt.m_root, - docollide.psb[1]->m_fdbvt.m_root, - docollide); - /* psb1 nodes vs psb0 faces */ - docollide.psb[0]=psb; - docollide.psb[1]=this; - docollide.psb[0]->m_ndbvt.collideTT( docollide.psb[0]->m_ndbvt.m_root, - docollide.psb[1]->m_fdbvt.m_root, - docollide); - } - } - break; - default: - { - - } - } -} diff --git a/extern/bullet2/BulletSoftBody/btSoftBody.h b/extern/bullet2/BulletSoftBody/btSoftBody.h deleted file mode 100644 index d69e835f11b..00000000000 --- a/extern/bullet2/BulletSoftBody/btSoftBody.h +++ /dev/null @@ -1,891 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ -///btSoftBody implementation by Nathanael Presson - -#ifndef _BT_SOFT_BODY_H -#define _BT_SOFT_BODY_H - -#include "LinearMath/btAlignedObjectArray.h" -#include "LinearMath/btTransform.h" -#include "LinearMath/btIDebugDraw.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" - -#include "BulletCollision/CollisionShapes/btConcaveShape.h" -#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" -#include "btSparseSDF.h" -#include "BulletCollision/BroadphaseCollision/btDbvt.h" - -class btBroadphaseInterface; -class btDispatcher; - -/* btSoftBodyWorldInfo */ -struct btSoftBodyWorldInfo -{ - btScalar air_density; - btScalar water_density; - btScalar water_offset; - btVector3 water_normal; - btBroadphaseInterface* m_broadphase; - btDispatcher* m_dispatcher; - btVector3 m_gravity; - btSparseSdf<3> m_sparsesdf; -}; - - -///The btSoftBody is an class to simulate cloth and volumetric soft bodies. -///There is two-way interaction between btSoftBody and btRigidBody/btCollisionObject. -class btSoftBody : public btCollisionObject -{ -public: - btAlignedObjectArray m_collisionDisabledObjects; - - // - // Enumerations - // - - ///eAeroModel - struct eAeroModel { enum _ { - V_Point, ///Vertex normals are oriented toward velocity - V_TwoSided, ///Vertex normals are fliped to match velocity - V_OneSided, ///Vertex normals are taken as it is - F_TwoSided, ///Face normals are fliped to match velocity - F_OneSided, ///Face normals are taken as it is - END - };}; - - ///eVSolver : velocities solvers - struct eVSolver { enum _ { - Linear, ///Linear solver - END - };}; - - ///ePSolver : positions solvers - struct ePSolver { enum _ { - Linear, ///Linear solver - Anchors, ///Anchor solver - RContacts, ///Rigid contacts solver - SContacts, ///Soft contacts solver - END - };}; - - ///eSolverPresets - struct eSolverPresets { enum _ { - Positions, - Velocities, - Default = Positions, - END - };}; - - ///eFeature - struct eFeature { enum _ { - None, - Node, - Link, - Face, - END - };}; - - typedef btAlignedObjectArray tVSolverArray; - typedef btAlignedObjectArray tPSolverArray; - - // - // Flags - // - - ///fCollision - struct fCollision { enum _ { - RVSmask = 0x000f, ///Rigid versus soft mask - SDF_RS = 0x0001, ///SDF based rigid vs soft - CL_RS = 0x0002, ///Cluster vs convex rigid vs soft - - SVSmask = 0x0030, ///Rigid versus soft mask - VF_SS = 0x0010, ///Vertex vs face soft vs soft handling - CL_SS = 0x0020, ///Cluster vs cluster soft vs soft handling - CL_SELF = 0x0040, ///Cluster soft body self collision - /* presets */ - Default = SDF_RS, - END - };}; - - ///fMaterial - struct fMaterial { enum _ { - DebugDraw = 0x0001, /// Enable debug draw - /* presets */ - Default = DebugDraw, - END - };}; - - // - // API Types - // - - /* sRayCast */ - struct sRayCast - { - btSoftBody* body; /// soft body - eFeature::_ feature; /// feature type - int index; /// feature index - btScalar fraction; /// time of impact fraction (rayorg+(rayto-rayfrom)*fraction) - }; - - /* ImplicitFn */ - struct ImplicitFn - { - virtual btScalar Eval(const btVector3& x)=0; - }; - - // - // Internal types - // - - typedef btAlignedObjectArray tScalarArray; - typedef btAlignedObjectArray tVector3Array; - - /* sCti is Softbody contact info */ - struct sCti - { - btCollisionObject* m_colObj; /* Rigid body */ - btVector3 m_normal; /* Outward normal */ - btScalar m_offset; /* Offset from origin */ - }; - - /* sMedium */ - struct sMedium - { - btVector3 m_velocity; /* Velocity */ - btScalar m_pressure; /* Pressure */ - btScalar m_density; /* Density */ - }; - - /* Base type */ - struct Element - { - void* m_tag; // User data - Element() : m_tag(0) {} - }; - /* Material */ - struct Material : Element - { - btScalar m_kLST; // Linear stiffness coefficient [0,1] - btScalar m_kAST; // Area/Angular stiffness coefficient [0,1] - btScalar m_kVST; // Volume stiffness coefficient [0,1] - int m_flags; // Flags - }; - - /* Feature */ - struct Feature : Element - { - Material* m_material; // Material - }; - /* Node */ - struct Node : Feature - { - btVector3 m_x; // Position - btVector3 m_q; // Previous step position - btVector3 m_v; // Velocity - btVector3 m_f; // Force accumulator - btVector3 m_n; // Normal - btScalar m_im; // 1/mass - btScalar m_area; // Area - btDbvtNode* m_leaf; // Leaf data - int m_battach:1; // Attached - }; - /* Link */ - struct Link : Feature - { - Node* m_n[2]; // Node pointers - btScalar m_rl; // Rest length - int m_bbending:1; // Bending link - btScalar m_c0; // (ima+imb)*kLST - btScalar m_c1; // rl^2 - btScalar m_c2; // |gradient|^2/c0 - btVector3 m_c3; // gradient - }; - /* Face */ - struct Face : Feature - { - Node* m_n[3]; // Node pointers - btVector3 m_normal; // Normal - btScalar m_ra; // Rest area - btDbvtNode* m_leaf; // Leaf data - }; - /* Tetra */ - struct Tetra : Feature - { - Node* m_n[4]; // Node pointers - btScalar m_rv; // Rest volume - btDbvtNode* m_leaf; // Leaf data - btVector3 m_c0[4]; // gradients - btScalar m_c1; // (4*kVST)/(im0+im1+im2+im3) - btScalar m_c2; // m_c1/sum(|g0..3|^2) - }; - /* RContact */ - struct RContact - { - sCti m_cti; // Contact infos - Node* m_node; // Owner node - btMatrix3x3 m_c0; // Impulse matrix - btVector3 m_c1; // Relative anchor - btScalar m_c2; // ima*dt - btScalar m_c3; // Friction - btScalar m_c4; // Hardness - }; - /* SContact */ - struct SContact - { - Node* m_node; // Node - Face* m_face; // Face - btVector3 m_weights; // Weigths - btVector3 m_normal; // Normal - btScalar m_margin; // Margin - btScalar m_friction; // Friction - btScalar m_cfm[2]; // Constraint force mixing - }; - /* Anchor */ - struct Anchor - { - Node* m_node; // Node pointer - btVector3 m_local; // Anchor position in body space - btRigidBody* m_body; // Body - btMatrix3x3 m_c0; // Impulse matrix - btVector3 m_c1; // Relative anchor - btScalar m_c2; // ima*dt - }; - /* Note */ - struct Note : Element - { - const char* m_text; // Text - btVector3 m_offset; // Offset - int m_rank; // Rank - Node* m_nodes[4]; // Nodes - btScalar m_coords[4]; // Coordinates - }; - /* Pose */ - struct Pose - { - bool m_bvolume; // Is valid - bool m_bframe; // Is frame - btScalar m_volume; // Rest volume - tVector3Array m_pos; // Reference positions - tScalarArray m_wgh; // Weights - btVector3 m_com; // COM - btMatrix3x3 m_rot; // Rotation - btMatrix3x3 m_scl; // Scale - btMatrix3x3 m_aqq; // Base scaling - }; - /* Cluster */ - struct Cluster - { - btAlignedObjectArray m_nodes; - tScalarArray m_masses; - tVector3Array m_framerefs; - btTransform m_framexform; - btScalar m_idmass; - btScalar m_imass; - btMatrix3x3 m_locii; - btMatrix3x3 m_invwi; - btVector3 m_com; - btVector3 m_vimpulses[2]; - btVector3 m_dimpulses[2]; - int m_nvimpulses; - int m_ndimpulses; - btVector3 m_lv; - btVector3 m_av; - btDbvtNode* m_leaf; - btScalar m_ndamping; /* Node damping */ - btScalar m_ldamping; /* Linear damping */ - btScalar m_adamping; /* Angular damping */ - btScalar m_matching; - btScalar m_maxSelfCollisionImpulse; - btScalar m_selfCollisionImpulseFactor; - bool m_containsAnchor; - bool m_collide; - int m_clusterIndex; - Cluster() : m_leaf(0),m_ndamping(0),m_ldamping(0),m_adamping(0),m_matching(0) - ,m_maxSelfCollisionImpulse(100.f), - m_selfCollisionImpulseFactor(0.01f), - m_containsAnchor(false) - {} - }; - /* Impulse */ - struct Impulse - { - btVector3 m_velocity; - btVector3 m_drift; - int m_asVelocity:1; - int m_asDrift:1; - Impulse() : m_velocity(0,0,0),m_drift(0,0,0),m_asVelocity(0),m_asDrift(0) {} - Impulse operator -() const - { - Impulse i=*this; - i.m_velocity=-i.m_velocity; - i.m_drift=-i.m_drift; - return(i); - } - Impulse operator*(btScalar x) const - { - Impulse i=*this; - i.m_velocity*=x; - i.m_drift*=x; - return(i); - } - }; - /* Body */ - struct Body - { - Cluster* m_soft; - btRigidBody* m_rigid; - btCollisionObject* m_collisionObject; - - Body() : m_soft(0),m_rigid(0),m_collisionObject(0) {} - Body(Cluster* p) : m_soft(p),m_rigid(0),m_collisionObject(0) {} - Body(btCollisionObject* colObj) : m_soft(0),m_collisionObject(colObj) - { - m_rigid = btRigidBody::upcast(m_collisionObject); - } - - void activate() const - { - if(m_rigid) m_rigid->activate(); - } - const btMatrix3x3& invWorldInertia() const - { - static const btMatrix3x3 iwi(0,0,0,0,0,0,0,0,0); - if(m_rigid) return(m_rigid->getInvInertiaTensorWorld()); - if(m_soft) return(m_soft->m_invwi); - return(iwi); - } - btScalar invMass() const - { - if(m_rigid) return(m_rigid->getInvMass()); - if(m_soft) return(m_soft->m_imass); - return(0); - } - const btTransform& xform() const - { - static const btTransform identity=btTransform::getIdentity(); - if(m_collisionObject) return(m_collisionObject->getInterpolationWorldTransform()); - if(m_soft) return(m_soft->m_framexform); - return(identity); - } - btVector3 linearVelocity() const - { - if(m_rigid) return(m_rigid->getLinearVelocity()); - if(m_soft) return(m_soft->m_lv); - return(btVector3(0,0,0)); - } - btVector3 angularVelocity(const btVector3& rpos) const - { - if(m_rigid) return(btCross(m_rigid->getAngularVelocity(),rpos)); - if(m_soft) return(btCross(m_soft->m_av,rpos)); - return(btVector3(0,0,0)); - } - btVector3 angularVelocity() const - { - if(m_rigid) return(m_rigid->getAngularVelocity()); - if(m_soft) return(m_soft->m_av); - return(btVector3(0,0,0)); - } - btVector3 velocity(const btVector3& rpos) const - { - return(linearVelocity()+angularVelocity(rpos)); - } - void applyVImpulse(const btVector3& impulse,const btVector3& rpos) const - { - if(m_rigid) m_rigid->applyImpulse(impulse,rpos); - if(m_soft) btSoftBody::clusterVImpulse(m_soft,rpos,impulse); - } - void applyDImpulse(const btVector3& impulse,const btVector3& rpos) const - { - if(m_rigid) m_rigid->applyImpulse(impulse,rpos); - if(m_soft) btSoftBody::clusterDImpulse(m_soft,rpos,impulse); - } - void applyImpulse(const Impulse& impulse,const btVector3& rpos) const - { - if(impulse.m_asVelocity) - { -// printf("impulse.m_velocity = %f,%f,%f\n",impulse.m_velocity.getX(),impulse.m_velocity.getY(),impulse.m_velocity.getZ()); - applyVImpulse(impulse.m_velocity,rpos); - } - if(impulse.m_asDrift) - { -// printf("impulse.m_drift = %f,%f,%f\n",impulse.m_drift.getX(),impulse.m_drift.getY(),impulse.m_drift.getZ()); - applyDImpulse(impulse.m_drift,rpos); - } - } - void applyVAImpulse(const btVector3& impulse) const - { - if(m_rigid) m_rigid->applyTorqueImpulse(impulse); - if(m_soft) btSoftBody::clusterVAImpulse(m_soft,impulse); - } - void applyDAImpulse(const btVector3& impulse) const - { - if(m_rigid) m_rigid->applyTorqueImpulse(impulse); - if(m_soft) btSoftBody::clusterDAImpulse(m_soft,impulse); - } - void applyAImpulse(const Impulse& impulse) const - { - if(impulse.m_asVelocity) applyVAImpulse(impulse.m_velocity); - if(impulse.m_asDrift) applyDAImpulse(impulse.m_drift); - } - void applyDCImpulse(const btVector3& impulse) const - { - if(m_rigid) m_rigid->applyCentralImpulse(impulse); - if(m_soft) btSoftBody::clusterDCImpulse(m_soft,impulse); - } - }; - /* Joint */ - struct Joint - { - struct eType { enum _ { - Linear, - Angular, - Contact - };}; - struct Specs - { - Specs() : erp(1),cfm(1),split(1) {} - btScalar erp; - btScalar cfm; - btScalar split; - }; - Body m_bodies[2]; - btVector3 m_refs[2]; - btScalar m_cfm; - btScalar m_erp; - btScalar m_split; - btVector3 m_drift; - btVector3 m_sdrift; - btMatrix3x3 m_massmatrix; - bool m_delete; - virtual ~Joint() {} - Joint() : m_delete(false) {} - virtual void Prepare(btScalar dt,int iterations); - virtual void Solve(btScalar dt,btScalar sor)=0; - virtual void Terminate(btScalar dt)=0; - virtual eType::_ Type() const=0; - }; - /* LJoint */ - struct LJoint : Joint - { - struct Specs : Joint::Specs - { - btVector3 position; - }; - btVector3 m_rpos[2]; - void Prepare(btScalar dt,int iterations); - void Solve(btScalar dt,btScalar sor); - void Terminate(btScalar dt); - eType::_ Type() const { return(eType::Linear); } - }; - /* AJoint */ - struct AJoint : Joint - { - struct IControl - { - virtual void Prepare(AJoint*) {} - virtual btScalar Speed(AJoint*,btScalar current) { return(current); } - static IControl* Default() { static IControl def;return(&def); } - }; - struct Specs : Joint::Specs - { - Specs() : icontrol(IControl::Default()) {} - btVector3 axis; - IControl* icontrol; - }; - btVector3 m_axis[2]; - IControl* m_icontrol; - void Prepare(btScalar dt,int iterations); - void Solve(btScalar dt,btScalar sor); - void Terminate(btScalar dt); - eType::_ Type() const { return(eType::Angular); } - }; - /* CJoint */ - struct CJoint : Joint - { - int m_life; - int m_maxlife; - btVector3 m_rpos[2]; - btVector3 m_normal; - btScalar m_friction; - void Prepare(btScalar dt,int iterations); - void Solve(btScalar dt,btScalar sor); - void Terminate(btScalar dt); - eType::_ Type() const { return(eType::Contact); } - }; - /* Config */ - struct Config - { - eAeroModel::_ aeromodel; // Aerodynamic model (default: V_Point) - btScalar kVCF; // Velocities correction factor (Baumgarte) - btScalar kDP; // Damping coefficient [0,1] - btScalar kDG; // Drag coefficient [0,+inf] - btScalar kLF; // Lift coefficient [0,+inf] - btScalar kPR; // Pressure coefficient [-inf,+inf] - btScalar kVC; // Volume conversation coefficient [0,+inf] - btScalar kDF; // Dynamic friction coefficient [0,1] - btScalar kMT; // Pose matching coefficient [0,1] - btScalar kCHR; // Rigid contacts hardness [0,1] - btScalar kKHR; // Kinetic contacts hardness [0,1] - btScalar kSHR; // Soft contacts hardness [0,1] - btScalar kAHR; // Anchors hardness [0,1] - btScalar kSRHR_CL; // Soft vs rigid hardness [0,1] (cluster only) - btScalar kSKHR_CL; // Soft vs kinetic hardness [0,1] (cluster only) - btScalar kSSHR_CL; // Soft vs soft hardness [0,1] (cluster only) - btScalar kSR_SPLT_CL; // Soft vs rigid impulse split [0,1] (cluster only) - btScalar kSK_SPLT_CL; // Soft vs rigid impulse split [0,1] (cluster only) - btScalar kSS_SPLT_CL; // Soft vs rigid impulse split [0,1] (cluster only) - btScalar maxvolume; // Maximum volume ratio for pose - btScalar timescale; // Time scale - int viterations; // Velocities solver iterations - int piterations; // Positions solver iterations - int diterations; // Drift solver iterations - int citerations; // Cluster solver iterations - int collisions; // Collisions flags - tVSolverArray m_vsequence; // Velocity solvers sequence - tPSolverArray m_psequence; // Position solvers sequence - tPSolverArray m_dsequence; // Drift solvers sequence - }; - /* SolverState */ - struct SolverState - { - btScalar sdt; // dt*timescale - btScalar isdt; // 1/sdt - btScalar velmrg; // velocity margin - btScalar radmrg; // radial margin - btScalar updmrg; // Update margin - }; - /// RayFromToCaster takes a ray from, ray to (instead of direction!) - struct RayFromToCaster : btDbvt::ICollide - { - btVector3 m_rayFrom; - btVector3 m_rayTo; - btVector3 m_rayNormalizedDirection; - btScalar m_mint; - Face* m_face; - int m_tests; - RayFromToCaster(const btVector3& rayFrom,const btVector3& rayTo,btScalar mxt); - void Process(const btDbvtNode* leaf); - - static inline btScalar rayFromToTriangle(const btVector3& rayFrom, - const btVector3& rayTo, - const btVector3& rayNormalizedDirection, - const btVector3& a, - const btVector3& b, - const btVector3& c, - btScalar maxt=SIMD_INFINITY); - }; - - // - // Typedef's - // - - typedef void (*psolver_t)(btSoftBody*,btScalar,btScalar); - typedef void (*vsolver_t)(btSoftBody*,btScalar); - typedef btAlignedObjectArray tClusterArray; - typedef btAlignedObjectArray tNoteArray; - typedef btAlignedObjectArray tNodeArray; - typedef btAlignedObjectArray tLeafArray; - typedef btAlignedObjectArray tLinkArray; - typedef btAlignedObjectArray tFaceArray; - typedef btAlignedObjectArray tTetraArray; - typedef btAlignedObjectArray tAnchorArray; - typedef btAlignedObjectArray tRContactArray; - typedef btAlignedObjectArray tSContactArray; - typedef btAlignedObjectArray tMaterialArray; - typedef btAlignedObjectArray tJointArray; - typedef btAlignedObjectArray tSoftBodyArray; - - // - // Fields - // - - Config m_cfg; // Configuration - SolverState m_sst; // Solver state - Pose m_pose; // Pose - void* m_tag; // User data - btSoftBodyWorldInfo* m_worldInfo; // World info - tNoteArray m_notes; // Notes - tNodeArray m_nodes; // Nodes - tLinkArray m_links; // Links - tFaceArray m_faces; // Faces - tTetraArray m_tetras; // Tetras - tAnchorArray m_anchors; // Anchors - tRContactArray m_rcontacts; // Rigid contacts - tSContactArray m_scontacts; // Soft contacts - tJointArray m_joints; // Joints - tMaterialArray m_materials; // Materials - btScalar m_timeacc; // Time accumulator - btVector3 m_bounds[2]; // Spatial bounds - bool m_bUpdateRtCst; // Update runtime constants - btDbvt m_ndbvt; // Nodes tree - btDbvt m_fdbvt; // Faces tree - btDbvt m_cdbvt; // Clusters tree - tClusterArray m_clusters; // Clusters - - btAlignedObjectArraym_clusterConnectivity;//cluster connectivity, for self-collision - - btTransform m_initialWorldTransform; - - // - // Api - // - - /* ctor */ - btSoftBody( btSoftBodyWorldInfo* worldInfo,int node_count, - const btVector3* x, - const btScalar* m); - /* dtor */ - virtual ~btSoftBody(); - /* Check for existing link */ - - btAlignedObjectArray m_userIndexMapping; - - btSoftBodyWorldInfo* getWorldInfo() - { - return m_worldInfo; - } - - ///@todo: avoid internal softbody shape hack and move collision code to collision library - virtual void setCollisionShape(btCollisionShape* collisionShape) - { - - } - - bool checkLink( int node0, - int node1) const; - bool checkLink( const Node* node0, - const Node* node1) const; - /* Check for existring face */ - bool checkFace( int node0, - int node1, - int node2) const; - /* Append material */ - Material* appendMaterial(); - /* Append note */ - void appendNote( const char* text, - const btVector3& o, - const btVector4& c=btVector4(1,0,0,0), - Node* n0=0, - Node* n1=0, - Node* n2=0, - Node* n3=0); - void appendNote( const char* text, - const btVector3& o, - Node* feature); - void appendNote( const char* text, - const btVector3& o, - Link* feature); - void appendNote( const char* text, - const btVector3& o, - Face* feature); - /* Append node */ - void appendNode( const btVector3& x,btScalar m); - /* Append link */ - void appendLink(int model=-1,Material* mat=0); - void appendLink( int node0, - int node1, - Material* mat=0, - bool bcheckexist=false); - void appendLink( Node* node0, - Node* node1, - Material* mat=0, - bool bcheckexist=false); - /* Append face */ - void appendFace(int model=-1,Material* mat=0); - void appendFace( int node0, - int node1, - int node2, - Material* mat=0); - void appendTetra(int model,Material* mat); - // - void appendTetra(int node0, - int node1, - int node2, - int node3, - Material* mat=0); - - - /* Append anchor */ - void appendAnchor( int node, - btRigidBody* body, bool disableCollisionBetweenLinkedBodies=false); - /* Append linear joint */ - void appendLinearJoint(const LJoint::Specs& specs,Cluster* body0,Body body1); - void appendLinearJoint(const LJoint::Specs& specs,Body body=Body()); - void appendLinearJoint(const LJoint::Specs& specs,btSoftBody* body); - /* Append linear joint */ - void appendAngularJoint(const AJoint::Specs& specs,Cluster* body0,Body body1); - void appendAngularJoint(const AJoint::Specs& specs,Body body=Body()); - void appendAngularJoint(const AJoint::Specs& specs,btSoftBody* body); - /* Add force (or gravity) to the entire body */ - void addForce( const btVector3& force); - /* Add force (or gravity) to a node of the body */ - void addForce( const btVector3& force, - int node); - /* Add velocity to the entire body */ - void addVelocity( const btVector3& velocity); - - /* Set velocity for the entire body */ - void setVelocity( const btVector3& velocity); - - /* Add velocity to a node of the body */ - void addVelocity( const btVector3& velocity, - int node); - /* Set mass */ - void setMass( int node, - btScalar mass); - /* Get mass */ - btScalar getMass( int node) const; - /* Get total mass */ - btScalar getTotalMass() const; - /* Set total mass (weighted by previous masses) */ - void setTotalMass( btScalar mass, - bool fromfaces=false); - /* Set total density */ - void setTotalDensity(btScalar density); - /* Set volume mass (using tetrahedrons) */ - void setVolumeMass( btScalar mass); - /* Set volume density (using tetrahedrons) */ - void setVolumeDensity( btScalar density); - /* Transform */ - void transform( const btTransform& trs); - /* Translate */ - void translate( const btVector3& trs); - /* Rotate */ - void rotate( const btQuaternion& rot); - /* Scale */ - void scale( const btVector3& scl); - /* Set current state as pose */ - void setPose( bool bvolume, - bool bframe); - /* Return the volume */ - btScalar getVolume() const; - /* Cluster count */ - int clusterCount() const; - /* Cluster center of mass */ - static btVector3 clusterCom(const Cluster* cluster); - btVector3 clusterCom(int cluster) const; - /* Cluster velocity at rpos */ - static btVector3 clusterVelocity(const Cluster* cluster,const btVector3& rpos); - /* Cluster impulse */ - static void clusterVImpulse(Cluster* cluster,const btVector3& rpos,const btVector3& impulse); - static void clusterDImpulse(Cluster* cluster,const btVector3& rpos,const btVector3& impulse); - static void clusterImpulse(Cluster* cluster,const btVector3& rpos,const Impulse& impulse); - static void clusterVAImpulse(Cluster* cluster,const btVector3& impulse); - static void clusterDAImpulse(Cluster* cluster,const btVector3& impulse); - static void clusterAImpulse(Cluster* cluster,const Impulse& impulse); - static void clusterDCImpulse(Cluster* cluster,const btVector3& impulse); - /* Generate bending constraints based on distance in the adjency graph */ - int generateBendingConstraints( int distance, - Material* mat=0); - /* Randomize constraints to reduce solver bias */ - void randomizeConstraints(); - /* Release clusters */ - void releaseCluster(int index); - void releaseClusters(); - /* Generate clusters (K-mean) */ - ///generateClusters with k=0 will create a convex cluster for each tetrahedron or triangle - ///otherwise an approximation will be used (better performance) - int generateClusters(int k,int maxiterations=8192); - /* Refine */ - void refine(ImplicitFn* ifn,btScalar accurary,bool cut); - /* CutLink */ - bool cutLink(int node0,int node1,btScalar position); - bool cutLink(const Node* node0,const Node* node1,btScalar position); - - ///Ray casting using rayFrom and rayTo in worldspace, (not direction!) - bool rayTest(const btVector3& rayFrom, - const btVector3& rayTo, - sRayCast& results); - /* Solver presets */ - void setSolver(eSolverPresets::_ preset); - /* predictMotion */ - void predictMotion(btScalar dt); - /* solveConstraints */ - void solveConstraints(); - /* staticSolve */ - void staticSolve(int iterations); - /* solveCommonConstraints */ - static void solveCommonConstraints(btSoftBody** bodies,int count,int iterations); - /* solveClusters */ - static void solveClusters(const btAlignedObjectArray& bodies); - /* integrateMotion */ - void integrateMotion(); - /* defaultCollisionHandlers */ - void defaultCollisionHandler(btCollisionObject* pco); - void defaultCollisionHandler(btSoftBody* psb); - - // - // Cast - // - - static const btSoftBody* upcast(const btCollisionObject* colObj) - { - if (colObj->getInternalType()==CO_SOFT_BODY) - return (const btSoftBody*)colObj; - return 0; - } - static btSoftBody* upcast(btCollisionObject* colObj) - { - if (colObj->getInternalType()==CO_SOFT_BODY) - return (btSoftBody*)colObj; - return 0; - } - - // - // ::btCollisionObject - // - - virtual void getAabb(btVector3& aabbMin,btVector3& aabbMax) const - { - aabbMin = m_bounds[0]; - aabbMax = m_bounds[1]; - } - // - // Private - // - void pointersToIndices(); - void indicesToPointers(const int* map=0); - - int rayTest(const btVector3& rayFrom,const btVector3& rayTo, - btScalar& mint,eFeature::_& feature,int& index,bool bcountonly) const; - void initializeFaceTree(); - btVector3 evaluateCom() const; - bool checkContact(btCollisionObject* colObj,const btVector3& x,btScalar margin,btSoftBody::sCti& cti) const; - void updateNormals(); - void updateBounds(); - void updatePose(); - void updateConstants(); - void initializeClusters(); - void updateClusters(); - void cleanupClusters(); - void prepareClusters(int iterations); - void solveClusters(btScalar sor); - void applyClusters(bool drift); - void dampClusters(); - void applyForces(); - static void PSolve_Anchors(btSoftBody* psb,btScalar kst,btScalar ti); - static void PSolve_RContacts(btSoftBody* psb,btScalar kst,btScalar ti); - static void PSolve_SContacts(btSoftBody* psb,btScalar,btScalar ti); - static void PSolve_Links(btSoftBody* psb,btScalar kst,btScalar ti); - static void VSolve_Links(btSoftBody* psb,btScalar kst); - static psolver_t getSolver(ePSolver::_ solver); - static vsolver_t getSolver(eVSolver::_ solver); - -}; - - - -#endif //_BT_SOFT_BODY_H diff --git a/extern/bullet2/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp b/extern/bullet2/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp deleted file mode 100644 index 04ee7ea77cf..00000000000 --- a/extern/bullet2/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp +++ /dev/null @@ -1,368 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btSoftBodyConcaveCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "BulletCollision/CollisionShapes/btMultiSphereShape.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/CollisionShapes/btConcaveShape.h" -#include "BulletCollision/CollisionDispatch/btManifoldResult.h" -#include "BulletCollision/NarrowPhaseCollision/btRaycastCallback.h" -#include "BulletCollision/CollisionShapes/btTriangleShape.h" -#include "BulletCollision/CollisionShapes/btSphereShape.h" -#include "BulletCollision/CollisionShapes/btTetrahedronShape.h" -#include "BulletCollision/CollisionShapes/btConvexHullShape.h" - - - -#include "LinearMath/btIDebugDraw.h" -#include "BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h" -#include "BulletSoftBody/btSoftBody.h" - -#define BT_SOFTBODY_TRIANGLE_EXTRUSION btScalar(0.06)//make this configurable - -btSoftBodyConcaveCollisionAlgorithm::btSoftBodyConcaveCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1,bool isSwapped) -: btCollisionAlgorithm(ci), -m_isSwapped(isSwapped), -m_btSoftBodyTriangleCallback(ci.m_dispatcher1,body0,body1,isSwapped) -{ -} - - - -btSoftBodyConcaveCollisionAlgorithm::~btSoftBodyConcaveCollisionAlgorithm() -{ -} - - - -btSoftBodyTriangleCallback::btSoftBodyTriangleCallback(btDispatcher* dispatcher,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped): -m_dispatcher(dispatcher), -m_dispatchInfoPtr(0) -{ - m_softBody = (btSoftBody*) (isSwapped? body1:body0); - m_triBody = isSwapped? body0:body1; - - // - // create the manifold from the dispatcher 'manifold pool' - // - // m_manifoldPtr = m_dispatcher->getNewManifold(m_convexBody,m_triBody); - - clearCache(); -} - -btSoftBodyTriangleCallback::~btSoftBodyTriangleCallback() -{ - clearCache(); - // m_dispatcher->releaseManifold( m_manifoldPtr ); - -} - - -void btSoftBodyTriangleCallback::clearCache() -{ - for (int i=0;im_childShape); - m_softBody->getWorldInfo()->m_sparsesdf.RemoveReferences(tmp->m_childShape);//necessary? - delete tmp->m_childShape; - } - m_shapeCache.clear(); -} - - -void btSoftBodyTriangleCallback::processTriangle(btVector3* triangle,int partId, int triangleIndex) -{ - //just for debugging purposes - //printf("triangle %d",m_triangleCount++); - btCollisionObject* ob = static_cast(m_triBody); - btCollisionAlgorithmConstructionInfo ci; - ci.m_dispatcher1 = m_dispatcher; - - ///debug drawing of the overlapping triangles - if (m_dispatchInfoPtr && m_dispatchInfoPtr->m_debugDraw && m_dispatchInfoPtr->m_debugDraw->getDebugMode() &btIDebugDraw::DBG_DrawWireframe) - { - btVector3 color(1,1,0); - btTransform& tr = ob->getWorldTransform(); - m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[0]),tr(triangle[1]),color); - m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[1]),tr(triangle[2]),color); - m_dispatchInfoPtr->m_debugDraw->drawLine(tr(triangle[2]),tr(triangle[0]),color); - } - - btTriIndex triIndex(partId,triangleIndex,0); - btHashKey triKey(triIndex.getUid()); - - - btTriIndex* shapeIndex = m_shapeCache[triKey]; - if (shapeIndex) - { - btCollisionShape* tm = shapeIndex->m_childShape; - btAssert(tm); - - //copy over user pointers to temporary shape - tm->setUserPointer(ob->getRootCollisionShape()->getUserPointer()); - - btCollisionShape* tmpShape = ob->getCollisionShape(); - ob->internalSetTemporaryCollisionShape( tm ); - - - btCollisionAlgorithm* colAlgo = ci.m_dispatcher1->findAlgorithm(m_softBody,m_triBody,0);//m_manifoldPtr); - - colAlgo->processCollision(m_softBody,m_triBody,*m_dispatchInfoPtr,m_resultOut); - colAlgo->~btCollisionAlgorithm(); - ci.m_dispatcher1->freeCollisionAlgorithm(colAlgo); - ob->internalSetTemporaryCollisionShape( tmpShape); - return; - } - - //aabb filter is already applied! - - //btCollisionObject* colObj = static_cast(m_convexProxy->m_clientObject); - - // if (m_softBody->getCollisionShape()->getShapeType()== - { - // btVector3 other; - btVector3 normal = (triangle[1]-triangle[0]).cross(triangle[2]-triangle[0]); - normal.normalize(); - normal*= BT_SOFTBODY_TRIANGLE_EXTRUSION; - // other=(triangle[0]+triangle[1]+triangle[2])*0.333333f; - // other+=normal*22.f; - btVector3 pts[6] = {triangle[0]+normal, - triangle[1]+normal, - triangle[2]+normal, - triangle[0]-normal, - triangle[1]-normal, - triangle[2]-normal}; - - btConvexHullShape* tm = new btConvexHullShape(&pts[0].getX(),6); - - - // btBU_Simplex1to4 tm(triangle[0],triangle[1],triangle[2],other); - - //btTriangleShape tm(triangle[0],triangle[1],triangle[2]); - // tm.setMargin(m_collisionMarginTriangle); - - //copy over user pointers to temporary shape - tm->setUserPointer(ob->getRootCollisionShape()->getUserPointer()); - - btCollisionShape* tmpShape = ob->getCollisionShape(); - ob->internalSetTemporaryCollisionShape( tm ); - - - btCollisionAlgorithm* colAlgo = ci.m_dispatcher1->findAlgorithm(m_softBody,m_triBody,0);//m_manifoldPtr); - ///this should use the btDispatcher, so the actual registered algorithm is used - // btConvexConvexAlgorithm cvxcvxalgo(m_manifoldPtr,ci,m_convexBody,m_triBody); - - //m_resultOut->setShapeIdentifiersB(partId,triangleIndex); - // cvxcvxalgo.processCollision(m_convexBody,m_triBody,*m_dispatchInfoPtr,m_resultOut); - colAlgo->processCollision(m_softBody,m_triBody,*m_dispatchInfoPtr,m_resultOut); - colAlgo->~btCollisionAlgorithm(); - ci.m_dispatcher1->freeCollisionAlgorithm(colAlgo); - - - ob->internalSetTemporaryCollisionShape( tmpShape ); - triIndex.m_childShape = tm; - m_shapeCache.insert(triKey,triIndex); - - } - - - -} - - - -void btSoftBodyTriangleCallback::setTimeStepAndCounters(btScalar collisionMarginTriangle,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - m_dispatchInfoPtr = &dispatchInfo; - m_collisionMarginTriangle = collisionMarginTriangle+btScalar(BT_SOFTBODY_TRIANGLE_EXTRUSION); - m_resultOut = resultOut; - - - btVector3 aabbWorldSpaceMin,aabbWorldSpaceMax; - m_softBody->getAabb(aabbWorldSpaceMin,aabbWorldSpaceMax); - btVector3 halfExtents = (aabbWorldSpaceMax-aabbWorldSpaceMin)*btScalar(0.5); - btVector3 softBodyCenter = (aabbWorldSpaceMax+aabbWorldSpaceMin)*btScalar(0.5); - - btTransform softTransform; - softTransform.setIdentity(); - softTransform.setOrigin(softBodyCenter); - - btTransform convexInTriangleSpace; - convexInTriangleSpace = m_triBody->getWorldTransform().inverse() * softTransform; - btTransformAabb(halfExtents,m_collisionMarginTriangle,convexInTriangleSpace,m_aabbMin,m_aabbMax); -} - -void btSoftBodyConcaveCollisionAlgorithm::clearCache() -{ - m_btSoftBodyTriangleCallback.clearCache(); - -} - -void btSoftBodyConcaveCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - - - //btCollisionObject* convexBody = m_isSwapped ? body1 : body0; - btCollisionObject* triBody = m_isSwapped ? body0 : body1; - - if (triBody->getCollisionShape()->isConcave()) - { - - - btCollisionObject* triOb = triBody; - btConcaveShape* concaveShape = static_cast( triOb->getCollisionShape()); - - // if (convexBody->getCollisionShape()->isConvex()) - { - btScalar collisionMarginTriangle = concaveShape->getMargin(); - - // resultOut->setPersistentManifold(m_btSoftBodyTriangleCallback.m_manifoldPtr); - m_btSoftBodyTriangleCallback.setTimeStepAndCounters(collisionMarginTriangle,dispatchInfo,resultOut); - - //Disable persistency. previously, some older algorithm calculated all contacts in one go, so you can clear it here. - //m_dispatcher->clearManifold(m_btSoftBodyTriangleCallback.m_manifoldPtr); - - // m_btSoftBodyTriangleCallback.m_manifoldPtr->setBodies(convexBody,triBody); - - - concaveShape->processAllTriangles( &m_btSoftBodyTriangleCallback,m_btSoftBodyTriangleCallback.getAabbMin(),m_btSoftBodyTriangleCallback.getAabbMax()); - - // resultOut->refreshContactPoints(); - - } - - } - -} - - -btScalar btSoftBodyConcaveCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - (void)resultOut; - (void)dispatchInfo; - btCollisionObject* convexbody = m_isSwapped ? body1 : body0; - btCollisionObject* triBody = m_isSwapped ? body0 : body1; - - - //quick approximation using raycast, todo: hook up to the continuous collision detection (one of the btConvexCast) - - //only perform CCD above a certain threshold, this prevents blocking on the long run - //because object in a blocked ccd state (hitfraction<1) get their linear velocity halved each frame... - btScalar squareMot0 = (convexbody->getInterpolationWorldTransform().getOrigin() - convexbody->getWorldTransform().getOrigin()).length2(); - if (squareMot0 < convexbody->getCcdSquareMotionThreshold()) - { - return btScalar(1.); - } - - //const btVector3& from = convexbody->m_worldTransform.getOrigin(); - //btVector3 to = convexbody->m_interpolationWorldTransform.getOrigin(); - //todo: only do if the motion exceeds the 'radius' - - btTransform triInv = triBody->getWorldTransform().inverse(); - btTransform convexFromLocal = triInv * convexbody->getWorldTransform(); - btTransform convexToLocal = triInv * convexbody->getInterpolationWorldTransform(); - - struct LocalTriangleSphereCastCallback : public btTriangleCallback - { - btTransform m_ccdSphereFromTrans; - btTransform m_ccdSphereToTrans; - btTransform m_meshTransform; - - btScalar m_ccdSphereRadius; - btScalar m_hitFraction; - - - LocalTriangleSphereCastCallback(const btTransform& from,const btTransform& to,btScalar ccdSphereRadius,btScalar hitFraction) - :m_ccdSphereFromTrans(from), - m_ccdSphereToTrans(to), - m_ccdSphereRadius(ccdSphereRadius), - m_hitFraction(hitFraction) - { - } - - - virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex) - { - (void)partId; - (void)triangleIndex; - //do a swept sphere for now - btTransform ident; - ident.setIdentity(); - btConvexCast::CastResult castResult; - castResult.m_fraction = m_hitFraction; - btSphereShape pointShape(m_ccdSphereRadius); - btTriangleShape triShape(triangle[0],triangle[1],triangle[2]); - btVoronoiSimplexSolver simplexSolver; - btSubsimplexConvexCast convexCaster(&pointShape,&triShape,&simplexSolver); - //GjkConvexCast convexCaster(&pointShape,convexShape,&simplexSolver); - //ContinuousConvexCollision convexCaster(&pointShape,convexShape,&simplexSolver,0); - //local space? - - if (convexCaster.calcTimeOfImpact(m_ccdSphereFromTrans,m_ccdSphereToTrans, - ident,ident,castResult)) - { - if (m_hitFraction > castResult.m_fraction) - m_hitFraction = castResult.m_fraction; - } - - } - - }; - - - - - - if (triBody->getCollisionShape()->isConcave()) - { - btVector3 rayAabbMin = convexFromLocal.getOrigin(); - rayAabbMin.setMin(convexToLocal.getOrigin()); - btVector3 rayAabbMax = convexFromLocal.getOrigin(); - rayAabbMax.setMax(convexToLocal.getOrigin()); - btScalar ccdRadius0 = convexbody->getCcdSweptSphereRadius(); - rayAabbMin -= btVector3(ccdRadius0,ccdRadius0,ccdRadius0); - rayAabbMax += btVector3(ccdRadius0,ccdRadius0,ccdRadius0); - - btScalar curHitFraction = btScalar(1.); //is this available? - LocalTriangleSphereCastCallback raycastCallback(convexFromLocal,convexToLocal, - convexbody->getCcdSweptSphereRadius(),curHitFraction); - - raycastCallback.m_hitFraction = convexbody->getHitFraction(); - - btCollisionObject* concavebody = triBody; - - btConcaveShape* triangleMesh = (btConcaveShape*) concavebody->getCollisionShape(); - - if (triangleMesh) - { - triangleMesh->processAllTriangles(&raycastCallback,rayAabbMin,rayAabbMax); - } - - - - if (raycastCallback.m_hitFraction < convexbody->getHitFraction()) - { - convexbody->setHitFraction( raycastCallback.m_hitFraction); - return raycastCallback.m_hitFraction; - } - } - - return btScalar(1.); - -} diff --git a/extern/bullet2/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h b/extern/bullet2/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h deleted file mode 100644 index a6ea33717bc..00000000000 --- a/extern/bullet2/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h +++ /dev/null @@ -1,153 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef SOFT_BODY_CONCAVE_COLLISION_ALGORITHM_H -#define SOFT_BODY_CONCAVE_COLLISION_ALGORITHM_H - -#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" -#include "BulletCollision/BroadphaseCollision/btDispatcher.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h" -#include "BulletCollision/CollisionShapes/btTriangleCallback.h" -#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h" -class btDispatcher; -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" -class btSoftBody; -class btCollisionShape; - -#include "LinearMath/btHashMap.h" - -#include "BulletCollision/BroadphaseCollision/btQuantizedBvh.h" //for definition of MAX_NUM_PARTS_IN_BITS - -struct btTriIndex -{ - int m_PartIdTriangleIndex; - class btCollisionShape* m_childShape; - - btTriIndex(int partId,int triangleIndex,btCollisionShape* shape) - { - m_PartIdTriangleIndex = (partId<<(31-MAX_NUM_PARTS_IN_BITS)) | triangleIndex; - m_childShape = shape; - } - - int getTriangleIndex() const - { - // Get only the lower bits where the triangle index is stored - return (m_PartIdTriangleIndex&~((~0)<<(31-MAX_NUM_PARTS_IN_BITS))); - } - int getPartId() const - { - // Get only the highest bits where the part index is stored - return (m_PartIdTriangleIndex>>(31-MAX_NUM_PARTS_IN_BITS)); - } - int getUid() const - { - return m_PartIdTriangleIndex; - } -}; - - -///For each triangle in the concave mesh that overlaps with the AABB of a soft body (m_softBody), processTriangle is called. -class btSoftBodyTriangleCallback : public btTriangleCallback -{ - btSoftBody* m_softBody; - btCollisionObject* m_triBody; - - btVector3 m_aabbMin; - btVector3 m_aabbMax ; - - btManifoldResult* m_resultOut; - - btDispatcher* m_dispatcher; - const btDispatcherInfo* m_dispatchInfoPtr; - btScalar m_collisionMarginTriangle; - - btHashMap,btTriIndex> m_shapeCache; - -public: - int m_triangleCount; - - // btPersistentManifold* m_manifoldPtr; - - btSoftBodyTriangleCallback(btDispatcher* dispatcher,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped); - - void setTimeStepAndCounters(btScalar collisionMarginTriangle,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual ~btSoftBodyTriangleCallback(); - - virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex); - - void clearCache(); - - SIMD_FORCE_INLINE const btVector3& getAabbMin() const - { - return m_aabbMin; - } - SIMD_FORCE_INLINE const btVector3& getAabbMax() const - { - return m_aabbMax; - } - -}; - - - - -/// btSoftBodyConcaveCollisionAlgorithm supports collision between soft body shapes and (concave) trianges meshes. -class btSoftBodyConcaveCollisionAlgorithm : public btCollisionAlgorithm -{ - - bool m_isSwapped; - - btSoftBodyTriangleCallback m_btSoftBodyTriangleCallback; - -public: - - btSoftBodyConcaveCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped); - - virtual ~btSoftBodyConcaveCollisionAlgorithm(); - - virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual void getAllContactManifolds(btManifoldArray& manifoldArray) - { - //we don't add any manifolds - } - - void clearCache(); - - struct CreateFunc :public btCollisionAlgorithmCreateFunc - { - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) - { - void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSoftBodyConcaveCollisionAlgorithm)); - return new(mem) btSoftBodyConcaveCollisionAlgorithm(ci,body0,body1,false); - } - }; - - struct SwappedCreateFunc :public btCollisionAlgorithmCreateFunc - { - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) - { - void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSoftBodyConcaveCollisionAlgorithm)); - return new(mem) btSoftBodyConcaveCollisionAlgorithm(ci,body0,body1,true); - } - }; - -}; - -#endif //SOFT_BODY_CONCAVE_COLLISION_ALGORITHM_H diff --git a/extern/bullet2/BulletSoftBody/btSoftBodyHelpers.cpp b/extern/bullet2/BulletSoftBody/btSoftBodyHelpers.cpp deleted file mode 100644 index 516485bf4e5..00000000000 --- a/extern/bullet2/BulletSoftBody/btSoftBodyHelpers.cpp +++ /dev/null @@ -1,1019 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ -///btSoftBodyHelpers.cpp by Nathanael Presson - -#include "btSoftBodyInternals.h" -#include -#include -#include "btSoftBodyHelpers.h" -#include "LinearMath/btConvexHull.h" - -// -static void drawVertex( btIDebugDraw* idraw, - const btVector3& x,btScalar s,const btVector3& c) -{ - idraw->drawLine(x-btVector3(s,0,0),x+btVector3(s,0,0),c); - idraw->drawLine(x-btVector3(0,s,0),x+btVector3(0,s,0),c); - idraw->drawLine(x-btVector3(0,0,s),x+btVector3(0,0,s),c); -} - -// -static void drawBox( btIDebugDraw* idraw, - const btVector3& mins, - const btVector3& maxs, - const btVector3& color) -{ - const btVector3 c[]={ btVector3(mins.x(),mins.y(),mins.z()), - btVector3(maxs.x(),mins.y(),mins.z()), - btVector3(maxs.x(),maxs.y(),mins.z()), - btVector3(mins.x(),maxs.y(),mins.z()), - btVector3(mins.x(),mins.y(),maxs.z()), - btVector3(maxs.x(),mins.y(),maxs.z()), - btVector3(maxs.x(),maxs.y(),maxs.z()), - btVector3(mins.x(),maxs.y(),maxs.z())}; - idraw->drawLine(c[0],c[1],color);idraw->drawLine(c[1],c[2],color); - idraw->drawLine(c[2],c[3],color);idraw->drawLine(c[3],c[0],color); - idraw->drawLine(c[4],c[5],color);idraw->drawLine(c[5],c[6],color); - idraw->drawLine(c[6],c[7],color);idraw->drawLine(c[7],c[4],color); - idraw->drawLine(c[0],c[4],color);idraw->drawLine(c[1],c[5],color); - idraw->drawLine(c[2],c[6],color);idraw->drawLine(c[3],c[7],color); -} - -// -static void drawTree( btIDebugDraw* idraw, - const btDbvtNode* node, - int depth, - const btVector3& ncolor, - const btVector3& lcolor, - int mindepth, - int maxdepth) -{ - if(node) - { - if(node->isinternal()&&((depthchilds[0],depth+1,ncolor,lcolor,mindepth,maxdepth); - drawTree(idraw,node->childs[1],depth+1,ncolor,lcolor,mindepth,maxdepth); - } - if(depth>=mindepth) - { - const btScalar scl=(btScalar)(node->isinternal()?1:1); - const btVector3 mi=node->volume.Center()-node->volume.Extents()*scl; - const btVector3 mx=node->volume.Center()+node->volume.Extents()*scl; - drawBox(idraw,mi,mx,node->isleaf()?lcolor:ncolor); - } - } -} - -// -template -static inline T sum(const btAlignedObjectArray& items) -{ - T v; - if(items.size()) - { - v=items[0]; - for(int i=1,ni=items.size();i -static inline void add(btAlignedObjectArray& items,const Q& value) -{ - for(int i=0,ni=items.size();i -static inline void mul(btAlignedObjectArray& items,const Q& value) -{ - for(int i=0,ni=items.size();i -static inline T average(const btAlignedObjectArray& items) -{ - const btScalar n=(btScalar)(items.size()>0?items.size():1); - return(sum(items)/n); -} - -// -static inline btScalar tetravolume(const btVector3& x0, - const btVector3& x1, - const btVector3& x2, - const btVector3& x3) -{ - const btVector3 a=x1-x0; - const btVector3 b=x2-x0; - const btVector3 c=x3-x0; - return(btDot(a,btCross(b,c))); -} - -// -#if 0 -static btVector3 stresscolor(btScalar stress) -{ - static const btVector3 spectrum[]= { btVector3(1,0,1), - btVector3(0,0,1), - btVector3(0,1,1), - btVector3(0,1,0), - btVector3(1,1,0), - btVector3(1,0,0), - btVector3(1,0,0)}; - static const int ncolors=sizeof(spectrum)/sizeof(spectrum[0])-1; - static const btScalar one=1; - stress=btMax(0,btMin(1,stress))*ncolors; - const int sel=(int)stress; - const btScalar frc=stress-sel; - return(spectrum[sel]+(spectrum[sel+1]-spectrum[sel])*frc); -} -#endif - -// -void btSoftBodyHelpers::Draw( btSoftBody* psb, - btIDebugDraw* idraw, - int drawflags) -{ - const btScalar scl=(btScalar)0.1; - const btScalar nscl=scl*5; - const btVector3 lcolor=btVector3(0,0,0); - const btVector3 ncolor=btVector3(1,1,1); - const btVector3 ccolor=btVector3(1,0,0); - int i,j,nj; - - /* Nodes */ - if(0!=(drawflags&fDrawFlags::Nodes)) - { - for(i=0;im_nodes.size();++i) - { - const btSoftBody::Node& n=psb->m_nodes[i]; - if(0==(n.m_material->m_flags&btSoftBody::fMaterial::DebugDraw)) continue; - idraw->drawLine(n.m_x-btVector3(scl,0,0),n.m_x+btVector3(scl,0,0),btVector3(1,0,0)); - idraw->drawLine(n.m_x-btVector3(0,scl,0),n.m_x+btVector3(0,scl,0),btVector3(0,1,0)); - idraw->drawLine(n.m_x-btVector3(0,0,scl),n.m_x+btVector3(0,0,scl),btVector3(0,0,1)); - } - } - /* Links */ - if(0!=(drawflags&fDrawFlags::Links)) - { - for(i=0;im_links.size();++i) - { - const btSoftBody::Link& l=psb->m_links[i]; - if(0==(l.m_material->m_flags&btSoftBody::fMaterial::DebugDraw)) continue; - idraw->drawLine(l.m_n[0]->m_x,l.m_n[1]->m_x,lcolor); - } - } - /* Normals */ - if(0!=(drawflags&fDrawFlags::Normals)) - { - for(i=0;im_nodes.size();++i) - { - const btSoftBody::Node& n=psb->m_nodes[i]; - if(0==(n.m_material->m_flags&btSoftBody::fMaterial::DebugDraw)) continue; - const btVector3 d=n.m_n*nscl; - idraw->drawLine(n.m_x,n.m_x+d,ncolor); - idraw->drawLine(n.m_x,n.m_x-d,ncolor*0.5); - } - } - /* Contacts */ - if(0!=(drawflags&fDrawFlags::Contacts)) - { - static const btVector3 axis[]={btVector3(1,0,0), - btVector3(0,1,0), - btVector3(0,0,1)}; - for(i=0;im_rcontacts.size();++i) - { - const btSoftBody::RContact& c=psb->m_rcontacts[i]; - const btVector3 o= c.m_node->m_x-c.m_cti.m_normal* - (btDot(c.m_node->m_x,c.m_cti.m_normal)+c.m_cti.m_offset); - const btVector3 x=btCross(c.m_cti.m_normal,axis[c.m_cti.m_normal.minAxis()]).normalized(); - const btVector3 y=btCross(x,c.m_cti.m_normal).normalized(); - idraw->drawLine(o-x*nscl,o+x*nscl,ccolor); - idraw->drawLine(o-y*nscl,o+y*nscl,ccolor); - idraw->drawLine(o,o+c.m_cti.m_normal*nscl*3,btVector3(1,1,0)); - } - } - /* Anchors */ - if(0!=(drawflags&fDrawFlags::Anchors)) - { - for(i=0;im_anchors.size();++i) - { - const btSoftBody::Anchor& a=psb->m_anchors[i]; - const btVector3 q=a.m_body->getWorldTransform()*a.m_local; - drawVertex(idraw,a.m_node->m_x,0.25,btVector3(1,0,0)); - drawVertex(idraw,q,0.25,btVector3(0,1,0)); - idraw->drawLine(a.m_node->m_x,q,btVector3(1,1,1)); - } - for(i=0;im_nodes.size();++i) - { - const btSoftBody::Node& n=psb->m_nodes[i]; - if(0==(n.m_material->m_flags&btSoftBody::fMaterial::DebugDraw)) continue; - if(n.m_im<=0) - { - drawVertex(idraw,n.m_x,0.25,btVector3(1,0,0)); - } - } - } - /* Faces */ - if(0!=(drawflags&fDrawFlags::Faces)) - { - const btScalar scl=(btScalar)0.8; - const btScalar alp=(btScalar)1; - const btVector3 col(0,(btScalar)0.7,0); - for(i=0;im_faces.size();++i) - { - const btSoftBody::Face& f=psb->m_faces[i]; - if(0==(f.m_material->m_flags&btSoftBody::fMaterial::DebugDraw)) continue; - const btVector3 x[]={f.m_n[0]->m_x,f.m_n[1]->m_x,f.m_n[2]->m_x}; - const btVector3 c=(x[0]+x[1]+x[2])/3; - idraw->drawTriangle((x[0]-c)*scl+c, - (x[1]-c)*scl+c, - (x[2]-c)*scl+c, - col,alp); - } - } - /* Clusters */ - if(0!=(drawflags&fDrawFlags::Clusters)) - { - srand(1806); - for(i=0;im_clusters.size();++i) - { - if(psb->m_clusters[i]->m_collide) - { - btVector3 color( rand()/(btScalar)RAND_MAX, - rand()/(btScalar)RAND_MAX, - rand()/(btScalar)RAND_MAX); - color=color.normalized()*0.75; - btAlignedObjectArray vertices; - vertices.resize(psb->m_clusters[i]->m_nodes.size()); - for(j=0,nj=vertices.size();jm_clusters[i]->m_nodes[j]->m_x; - } - HullDesc hdsc(QF_TRIANGLES,vertices.size(),&vertices[0]); - HullResult hres; - HullLibrary hlib; - hdsc.mMaxVertices=vertices.size(); - hlib.CreateConvexHull(hdsc,hres); - const btVector3 center=average(hres.m_OutputVertices); - add(hres.m_OutputVertices,-center); - mul(hres.m_OutputVertices,(btScalar)1); - add(hres.m_OutputVertices,center); - for(j=0;j<(int)hres.mNumFaces;++j) - { - const int idx[]={hres.m_Indices[j*3+0],hres.m_Indices[j*3+1],hres.m_Indices[j*3+2]}; - idraw->drawTriangle(hres.m_OutputVertices[idx[0]], - hres.m_OutputVertices[idx[1]], - hres.m_OutputVertices[idx[2]], - color,1); - } - hlib.ReleaseResult(hres); - } - /* Velocities */ -#if 0 - for(int j=0;jm_clusters[i].m_nodes.size();++j) - { - const btSoftBody::Cluster& c=psb->m_clusters[i]; - const btVector3 r=c.m_nodes[j]->m_x-c.m_com; - const btVector3 v=c.m_lv+btCross(c.m_av,r); - idraw->drawLine(c.m_nodes[j]->m_x,c.m_nodes[j]->m_x+v,btVector3(1,0,0)); - } -#endif - /* Frame */ - btSoftBody::Cluster& c=*psb->m_clusters[i]; - idraw->drawLine(c.m_com,c.m_framexform*btVector3(10,0,0),btVector3(1,0,0)); - idraw->drawLine(c.m_com,c.m_framexform*btVector3(0,10,0),btVector3(0,1,0)); - idraw->drawLine(c.m_com,c.m_framexform*btVector3(0,0,10),btVector3(0,0,1)); - } - } - - /* Tetras */ - if(0!=(drawflags&fDrawFlags::Tetras)) - { - const btScalar scl=(btScalar)0.8; - const btScalar alp=(btScalar)1; - const btVector3 col((btScalar)0.7,(btScalar)0.7,(btScalar)0.7); - for(int i=0;im_tetras.size();++i) - { - const btSoftBody::Tetra& t=psb->m_tetras[i]; - if(0==(t.m_material->m_flags&btSoftBody::fMaterial::DebugDraw)) continue; - const btVector3 x[]={t.m_n[0]->m_x,t.m_n[1]->m_x,t.m_n[2]->m_x,t.m_n[3]->m_x}; - const btVector3 c=(x[0]+x[1]+x[2]+x[3])/4; - idraw->drawTriangle((x[0]-c)*scl+c,(x[1]-c)*scl+c,(x[2]-c)*scl+c,col,alp); - idraw->drawTriangle((x[0]-c)*scl+c,(x[1]-c)*scl+c,(x[3]-c)*scl+c,col,alp); - idraw->drawTriangle((x[1]-c)*scl+c,(x[2]-c)*scl+c,(x[3]-c)*scl+c,col,alp); - idraw->drawTriangle((x[2]-c)*scl+c,(x[0]-c)*scl+c,(x[3]-c)*scl+c,col,alp); - } - } - - /* Notes */ - if(0!=(drawflags&fDrawFlags::Notes)) - { - for(i=0;im_notes.size();++i) - { - const btSoftBody::Note& n=psb->m_notes[i]; - btVector3 p=n.m_offset; - for(int j=0;jm_x*n.m_coords[j]; - } - idraw->draw3dText(p,n.m_text); - } - } - /* Node tree */ - if(0!=(drawflags&fDrawFlags::NodeTree)) DrawNodeTree(psb,idraw); - /* Face tree */ - if(0!=(drawflags&fDrawFlags::FaceTree)) DrawFaceTree(psb,idraw); - /* Cluster tree */ - if(0!=(drawflags&fDrawFlags::ClusterTree)) DrawClusterTree(psb,idraw); - /* Joints */ - if(0!=(drawflags&fDrawFlags::Joints)) - { - for(i=0;im_joints.size();++i) - { - const btSoftBody::Joint* pj=psb->m_joints[i]; - switch(pj->Type()) - { - case btSoftBody::Joint::eType::Linear: - { - const btSoftBody::LJoint* pjl=(const btSoftBody::LJoint*)pj; - const btVector3 a0=pj->m_bodies[0].xform()*pjl->m_refs[0]; - const btVector3 a1=pj->m_bodies[1].xform()*pjl->m_refs[1]; - idraw->drawLine(pj->m_bodies[0].xform().getOrigin(),a0,btVector3(1,1,0)); - idraw->drawLine(pj->m_bodies[1].xform().getOrigin(),a1,btVector3(0,1,1)); - drawVertex(idraw,a0,0.25,btVector3(1,1,0)); - drawVertex(idraw,a1,0.25,btVector3(0,1,1)); - } - break; - case btSoftBody::Joint::eType::Angular: - { - //const btSoftBody::AJoint* pja=(const btSoftBody::AJoint*)pj; - const btVector3 o0=pj->m_bodies[0].xform().getOrigin(); - const btVector3 o1=pj->m_bodies[1].xform().getOrigin(); - const btVector3 a0=pj->m_bodies[0].xform().getBasis()*pj->m_refs[0]; - const btVector3 a1=pj->m_bodies[1].xform().getBasis()*pj->m_refs[1]; - idraw->drawLine(o0,o0+a0*10,btVector3(1,1,0)); - idraw->drawLine(o0,o0+a1*10,btVector3(1,1,0)); - idraw->drawLine(o1,o1+a0*10,btVector3(0,1,1)); - idraw->drawLine(o1,o1+a1*10,btVector3(0,1,1)); - break; - } - default: - { - } - - } - } - } -} - -// -void btSoftBodyHelpers::DrawInfos( btSoftBody* psb, - btIDebugDraw* idraw, - bool masses, - bool areas, - bool /*stress*/) -{ - for(int i=0;im_nodes.size();++i) - { - const btSoftBody::Node& n=psb->m_nodes[i]; - char text[2048]={0}; - char buff[1024]; - if(masses) - { - sprintf(buff," M(%.2f)",1/n.m_im); - strcat(text,buff); - } - if(areas) - { - sprintf(buff," A(%.2f)",n.m_area); - strcat(text,buff); - } - if(text[0]) idraw->draw3dText(n.m_x,text); - } -} - -// -void btSoftBodyHelpers::DrawNodeTree( btSoftBody* psb, - btIDebugDraw* idraw, - int mindepth, - int maxdepth) -{ - drawTree(idraw,psb->m_ndbvt.m_root,0,btVector3(1,0,1),btVector3(1,1,1),mindepth,maxdepth); -} - -// -void btSoftBodyHelpers::DrawFaceTree( btSoftBody* psb, - btIDebugDraw* idraw, - int mindepth, - int maxdepth) -{ - drawTree(idraw,psb->m_fdbvt.m_root,0,btVector3(0,1,0),btVector3(1,0,0),mindepth,maxdepth); -} - -// -void btSoftBodyHelpers::DrawClusterTree( btSoftBody* psb, - btIDebugDraw* idraw, - int mindepth, - int maxdepth) -{ - drawTree(idraw,psb->m_cdbvt.m_root,0,btVector3(0,1,1),btVector3(1,0,0),mindepth,maxdepth); -} - -// -void btSoftBodyHelpers::DrawFrame( btSoftBody* psb, - btIDebugDraw* idraw) -{ - if(psb->m_pose.m_bframe) - { - static const btScalar ascl=10; - static const btScalar nscl=(btScalar)0.1; - const btVector3 com=psb->m_pose.m_com; - const btMatrix3x3 trs=psb->m_pose.m_rot*psb->m_pose.m_scl; - const btVector3 Xaxis=(trs*btVector3(1,0,0)).normalized(); - const btVector3 Yaxis=(trs*btVector3(0,1,0)).normalized(); - const btVector3 Zaxis=(trs*btVector3(0,0,1)).normalized(); - idraw->drawLine(com,com+Xaxis*ascl,btVector3(1,0,0)); - idraw->drawLine(com,com+Yaxis*ascl,btVector3(0,1,0)); - idraw->drawLine(com,com+Zaxis*ascl,btVector3(0,0,1)); - for(int i=0;im_pose.m_pos.size();++i) - { - const btVector3 x=com+trs*psb->m_pose.m_pos[i]; - drawVertex(idraw,x,nscl,btVector3(1,0,1)); - } - } -} - -// -btSoftBody* btSoftBodyHelpers::CreateRope( btSoftBodyWorldInfo& worldInfo, const btVector3& from, - const btVector3& to, - int res, - int fixeds) -{ - /* Create nodes */ - const int r=res+2; - btVector3* x=new btVector3[r]; - btScalar* m=new btScalar[r]; - int i; - - for(i=0;isetMass(0,0); - if(fixeds&2) psb->setMass(r-1,0); - delete[] x; - delete[] m; - /* Create links */ - for(i=1;iappendLink(i-1,i); - } - /* Finished */ - return(psb); -} - -// -btSoftBody* btSoftBodyHelpers::CreatePatch(btSoftBodyWorldInfo& worldInfo,const btVector3& corner00, - const btVector3& corner10, - const btVector3& corner01, - const btVector3& corner11, - int resx, - int resy, - int fixeds, - bool gendiags) -{ -#define IDX(_x_,_y_) ((_y_)*rx+(_x_)) - /* Create nodes */ - if((resx<2)||(resy<2)) return(0); - const int rx=resx; - const int ry=resy; - const int tot=rx*ry; - btVector3* x=new btVector3[tot]; - btScalar* m=new btScalar[tot]; - int iy; - - for(iy=0;iysetMass(IDX(0,0),0); - if(fixeds&2) psb->setMass(IDX(rx-1,0),0); - if(fixeds&4) psb->setMass(IDX(0,ry-1),0); - if(fixeds&8) psb->setMass(IDX(rx-1,ry-1),0); - delete[] x; - delete[] m; - /* Create links and faces */ - for(iy=0;iyappendLink(idx,IDX(ix+1,iy)); - if(mdy) psb->appendLink(idx,IDX(ix,iy+1)); - if(mdx&&mdy) - { - if((ix+iy)&1) - { - psb->appendFace(IDX(ix,iy),IDX(ix+1,iy),IDX(ix+1,iy+1)); - psb->appendFace(IDX(ix,iy),IDX(ix+1,iy+1),IDX(ix,iy+1)); - if(gendiags) - { - psb->appendLink(IDX(ix,iy),IDX(ix+1,iy+1)); - } - } - else - { - psb->appendFace(IDX(ix,iy+1),IDX(ix,iy),IDX(ix+1,iy)); - psb->appendFace(IDX(ix,iy+1),IDX(ix+1,iy),IDX(ix+1,iy+1)); - if(gendiags) - { - psb->appendLink(IDX(ix+1,iy),IDX(ix,iy+1)); - } - } - } - } - } - /* Finished */ -#undef IDX - return(psb); -} - -// -btSoftBody* btSoftBodyHelpers::CreatePatchUV(btSoftBodyWorldInfo& worldInfo, - const btVector3& corner00, - const btVector3& corner10, - const btVector3& corner01, - const btVector3& corner11, - int resx, - int resy, - int fixeds, - bool gendiags, - float* tex_coords) -{ - - /* - * - * corners: - * - * [0][0] corner00 ------- corner01 [resx][0] - * | | - * | | - * [0][resy] corner10 -------- corner11 [resx][resy] - * - * - * - * - * - * - * "fixedgs" map: - * - * corner00 --> +1 - * corner01 --> +2 - * corner10 --> +4 - * corner11 --> +8 - * upper middle --> +16 - * left middle --> +32 - * right middle --> +64 - * lower middle --> +128 - * center --> +256 - * - * - * tex_coords size (resx-1)*(resy-1)*12 - * - * - * - * SINGLE QUAD INTERNALS - * - * 1) btSoftBody's nodes and links, - * diagonal link is optional ("gendiags") - * - * - * node00 ------ node01 - * | . - * | . - * | . - * | . - * | . - * node10 node11 - * - * - * - * 2) Faces: - * two triangles, - * UV Coordinates (hier example for single quad) - * - * (0,1) (0,1) (1,1) - * 1 |\ 3 \-----| 2 - * | \ \ | - * | \ \ | - * | \ \ | - * | \ \ | - * 2 |-----\ 3 \| 1 - * (0,0) (1,0) (1,0) - * - * - * - * - * - * - */ - -#define IDX(_x_,_y_) ((_y_)*rx+(_x_)) - /* Create nodes */ - if((resx<2)||(resy<2)) return(0); - const int rx=resx; - const int ry=resy; - const int tot=rx*ry; - btVector3* x=new btVector3[tot]; - btScalar* m=new btScalar[tot]; - - int iy; - - for(iy=0;iysetMass(IDX(0,0),0); - if(fixeds&2) psb->setMass(IDX(rx-1,0),0); - if(fixeds&4) psb->setMass(IDX(0,ry-1),0); - if(fixeds&8) psb->setMass(IDX(rx-1,ry-1),0); - if(fixeds&16) psb->setMass(IDX((rx-1)/2,0),0); - if(fixeds&32) psb->setMass(IDX(0,(ry-1)/2),0); - if(fixeds&64) psb->setMass(IDX(rx-1,(ry-1)/2),0); - if(fixeds&128) psb->setMass(IDX((rx-1)/2,ry-1),0); - if(fixeds&256) psb->setMass(IDX((rx-1)/2,(ry-1)/2),0); - delete[] x; - delete[] m; - - - int z = 0; - /* Create links and faces */ - for(iy=0;iyappendLink(node00,node01); - if(mdy) psb->appendLink(node00,node10); - if(mdx&&mdy) - { - psb->appendFace(node00,node10,node11); - if (tex_coords) { - tex_coords[z+0]=CalculateUV(resx,resy,ix,iy,0); - tex_coords[z+1]=CalculateUV(resx,resy,ix,iy,1); - tex_coords[z+2]=CalculateUV(resx,resy,ix,iy,0); - tex_coords[z+3]=CalculateUV(resx,resy,ix,iy,2); - tex_coords[z+4]=CalculateUV(resx,resy,ix,iy,3); - tex_coords[z+5]=CalculateUV(resx,resy,ix,iy,2); - } - psb->appendFace(node11,node01,node00); - if (tex_coords) { - tex_coords[z+6 ]=CalculateUV(resx,resy,ix,iy,3); - tex_coords[z+7 ]=CalculateUV(resx,resy,ix,iy,2); - tex_coords[z+8 ]=CalculateUV(resx,resy,ix,iy,3); - tex_coords[z+9 ]=CalculateUV(resx,resy,ix,iy,1); - tex_coords[z+10]=CalculateUV(resx,resy,ix,iy,0); - tex_coords[z+11]=CalculateUV(resx,resy,ix,iy,1); - } - if (gendiags) psb->appendLink(node00,node11); - z += 12; - } - } - } - /* Finished */ -#undef IDX - return(psb); -} - -float btSoftBodyHelpers::CalculateUV(int resx,int resy,int ix,int iy,int id) -{ - - /* - * - * - * node00 --- node01 - * | | - * node10 --- node11 - * - * - * ID map: - * - * node00 s --> 0 - * node00 t --> 1 - * - * node01 s --> 3 - * node01 t --> 1 - * - * node10 s --> 0 - * node10 t --> 2 - * - * node11 s --> 3 - * node11 t --> 2 - * - * - */ - - float tc=0.0f; - if (id == 0) { - tc = (1.0f/((resx-1))*ix); - } - else if (id==1) { - tc = (1.0f/((resy-1))*(resy-1-iy)); - } - else if (id==2) { - tc = (1.0f/((resy-1))*(resy-1-iy-1)); - } - else if (id==3) { - tc = (1.0f/((resx-1))*(ix+1)); - } - return tc; -} -// -btSoftBody* btSoftBodyHelpers::CreateEllipsoid(btSoftBodyWorldInfo& worldInfo,const btVector3& center, - const btVector3& radius, - int res) -{ - struct Hammersley - { - static void Generate(btVector3* x,int n) - { - for(int i=0;i>=1) if(j&1) t+=p; - btScalar w=2*t-1; - btScalar a=(SIMD_PI+2*i*SIMD_PI)/n; - btScalar s=btSqrt(1-w*w); - *x++=btVector3(s*btCos(a),s*btSin(a),w); - } - } - }; - btAlignedObjectArray vtx; - vtx.resize(3+res); - Hammersley::Generate(&vtx[0],vtx.size()); - for(int i=0;i chks; - btAlignedObjectArray vtx; - chks.resize(maxidx*maxidx,false); - vtx.resize(maxidx); - for(i=0,j=0,ni=maxidx*3;iappendLink(idx[j],idx[k]); - } - } -#undef IDX - psb->appendFace(idx[0],idx[1],idx[2]); - } - - if (randomizeConstraints) - { - psb->randomizeConstraints(); - } - - return(psb); -} - -// -btSoftBody* btSoftBodyHelpers::CreateFromConvexHull(btSoftBodyWorldInfo& worldInfo, const btVector3* vertices, - int nvertices, bool randomizeConstraints) -{ - HullDesc hdsc(QF_TRIANGLES,nvertices,vertices); - HullResult hres; - HullLibrary hlib;/*??*/ - hdsc.mMaxVertices=nvertices; - hlib.CreateConvexHull(hdsc,hres); - btSoftBody* psb=new btSoftBody(&worldInfo,(int)hres.mNumOutputVertices, - &hres.m_OutputVertices[0],0); - for(int i=0;i<(int)hres.mNumFaces;++i) - { - const int idx[]={ hres.m_Indices[i*3+0], - hres.m_Indices[i*3+1], - hres.m_Indices[i*3+2]}; - if(idx[0]appendLink( idx[0],idx[1]); - if(idx[1]appendLink( idx[1],idx[2]); - if(idx[2]appendLink( idx[2],idx[0]); - psb->appendFace(idx[0],idx[1],idx[2]); - } - hlib.ReleaseResult(hres); - if (randomizeConstraints) - { - psb->randomizeConstraints(); - } - return(psb); -} - - - - -static int nextLine(const char* buffer) -{ - int numBytesRead=0; - - while (*buffer != '\n') - { - buffer++; - numBytesRead++; - } - - - if (buffer[0]==0x0a) - { - buffer++; - numBytesRead++; - } - return numBytesRead; -} - -/* Create from TetGen .ele, .face, .node data */ -btSoftBody* btSoftBodyHelpers::CreateFromTetGenData(btSoftBodyWorldInfo& worldInfo, - const char* ele, - const char* face, - const char* node, - bool bfacelinks, - bool btetralinks, - bool bfacesfromtetras) -{ -btAlignedObjectArray pos; -int nnode=0; -int ndims=0; -int nattrb=0; -int hasbounds=0; -int result = sscanf(node,"%d %d %d %d",&nnode,&ndims,&nattrb,&hasbounds); -result = sscanf(node,"%d %d %d %d",&nnode,&ndims,&nattrb,&hasbounds); -node += nextLine(node); - -pos.resize(nnode); -for(int i=0;i>index; -// sn>>x;sn>>y;sn>>z; - node += nextLine(node); - - //for(int j=0;j>a; - - //if(hasbounds) - // sn>>bound; - - pos[index].setX(btScalar(x)); - pos[index].setY(btScalar(y)); - pos[index].setZ(btScalar(z)); - } -btSoftBody* psb=new btSoftBody(&worldInfo,nnode,&pos[0],0); -#if 0 -if(face&&face[0]) - { - int nface=0; - sf>>nface;sf>>hasbounds; - for(int i=0;i>index; - sf>>ni[0];sf>>ni[1];sf>>ni[2]; - sf>>bound; - psb->appendFace(ni[0],ni[1],ni[2]); - if(btetralinks) - { - psb->appendLink(ni[0],ni[1],0,true); - psb->appendLink(ni[1],ni[2],0,true); - psb->appendLink(ni[2],ni[0],0,true); - } - } - } -#endif - -if(ele&&ele[0]) - { - int ntetra=0; - int ncorner=0; - int neattrb=0; - sscanf(ele,"%d %d %d",&ntetra,&ncorner,&neattrb); - ele += nextLine(ele); - - //se>>ntetra;se>>ncorner;se>>neattrb; - for(int i=0;i>index; - //se>>ni[0];se>>ni[1];se>>ni[2];se>>ni[3]; - sscanf(ele,"%d %d %d %d %d",&index,&ni[0],&ni[1],&ni[2],&ni[3]); - ele+=nextLine(ele); - //for(int j=0;j>a; - psb->appendTetra(ni[0],ni[1],ni[2],ni[3]); - if(btetralinks) - { - psb->appendLink(ni[0],ni[1],0,true); - psb->appendLink(ni[1],ni[2],0,true); - psb->appendLink(ni[2],ni[0],0,true); - psb->appendLink(ni[0],ni[3],0,true); - psb->appendLink(ni[1],ni[3],0,true); - psb->appendLink(ni[2],ni[3],0,true); - } - } - } -printf("Nodes: %u\r\n",psb->m_nodes.size()); -printf("Links: %u\r\n",psb->m_links.size()); -printf("Faces: %u\r\n",psb->m_faces.size()); -printf("Tetras: %u\r\n",psb->m_tetras.size()); -return(psb); -} - diff --git a/extern/bullet2/BulletSoftBody/btSoftBodyHelpers.h b/extern/bullet2/BulletSoftBody/btSoftBodyHelpers.h deleted file mode 100644 index 9675d6765b5..00000000000 --- a/extern/bullet2/BulletSoftBody/btSoftBodyHelpers.h +++ /dev/null @@ -1,143 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2008 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef SOFT_BODY_HELPERS_H -#define SOFT_BODY_HELPERS_H - -#include "btSoftBody.h" - -// -// Helpers -// - -/* fDrawFlags */ -struct fDrawFlags { enum _ { - Nodes = 0x0001, - Links = 0x0002, - Faces = 0x0004, - Tetras = 0x0008, - Normals = 0x0010, - Contacts = 0x0020, - Anchors = 0x0040, - Notes = 0x0080, - Clusters = 0x0100, - NodeTree = 0x0200, - FaceTree = 0x0400, - ClusterTree = 0x0800, - Joints = 0x1000, - /* presets */ - Std = Links+Faces+Tetras+Anchors+Notes+Joints, - StdTetra = Std-Faces+Tetras -};}; - -struct btSoftBodyHelpers -{ - /* Draw body */ - static void Draw( btSoftBody* psb, - btIDebugDraw* idraw, - int drawflags=fDrawFlags::Std); - /* Draw body infos */ - static void DrawInfos( btSoftBody* psb, - btIDebugDraw* idraw, - bool masses, - bool areas, - bool stress); - /* Draw node tree */ - static void DrawNodeTree( btSoftBody* psb, - btIDebugDraw* idraw, - int mindepth=0, - int maxdepth=-1); - /* Draw face tree */ - static void DrawFaceTree( btSoftBody* psb, - btIDebugDraw* idraw, - int mindepth=0, - int maxdepth=-1); - /* Draw cluster tree */ - static void DrawClusterTree(btSoftBody* psb, - btIDebugDraw* idraw, - int mindepth=0, - int maxdepth=-1); - /* Draw rigid frame */ - static void DrawFrame( btSoftBody* psb, - btIDebugDraw* idraw); - /* Create a rope */ - static btSoftBody* CreateRope( btSoftBodyWorldInfo& worldInfo, - const btVector3& from, - const btVector3& to, - int res, - int fixeds); - /* Create a patch */ - static btSoftBody* CreatePatch(btSoftBodyWorldInfo& worldInfo, - const btVector3& corner00, - const btVector3& corner10, - const btVector3& corner01, - const btVector3& corner11, - int resx, - int resy, - int fixeds, - bool gendiags); - /* Create a patch with UV Texture Coordinates */ - static btSoftBody* CreatePatchUV(btSoftBodyWorldInfo& worldInfo, - const btVector3& corner00, - const btVector3& corner10, - const btVector3& corner01, - const btVector3& corner11, - int resx, - int resy, - int fixeds, - bool gendiags, - float* tex_coords=0); - static float CalculateUV(int resx,int resy,int ix,int iy,int id); - /* Create an ellipsoid */ - static btSoftBody* CreateEllipsoid(btSoftBodyWorldInfo& worldInfo, - const btVector3& center, - const btVector3& radius, - int res); - /* Create from trimesh */ - static btSoftBody* CreateFromTriMesh( btSoftBodyWorldInfo& worldInfo, - const btScalar* vertices, - const int* triangles, - int ntriangles, - bool randomizeConstraints = true); - /* Create from convex-hull */ - static btSoftBody* CreateFromConvexHull( btSoftBodyWorldInfo& worldInfo, - const btVector3* vertices, - int nvertices, - bool randomizeConstraints = true); - - - /* Export TetGen compatible .smesh file */ - static void ExportAsSMeshFile( btSoftBody* psb, - const char* filename); - /* Create from TetGen .ele, .face, .node files */ - static btSoftBody* CreateFromTetGenFile( btSoftBodyWorldInfo& worldInfo, - const char* ele, - const char* face, - const char* node, - bool bfacelinks, - bool btetralinks, - bool bfacesfromtetras); - /* Create from TetGen .ele, .face, .node data */ - static btSoftBody* CreateFromTetGenData( btSoftBodyWorldInfo& worldInfo, - const char* ele, - const char* face, - const char* node, - bool bfacelinks, - bool btetralinks, - bool bfacesfromtetras); - -}; - -#endif //SOFT_BODY_HELPERS_H diff --git a/extern/bullet2/BulletSoftBody/btSoftBodyInternals.h b/extern/bullet2/BulletSoftBody/btSoftBodyInternals.h deleted file mode 100644 index 2cb7744cbb1..00000000000 --- a/extern/bullet2/BulletSoftBody/btSoftBodyInternals.h +++ /dev/null @@ -1,931 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ -///btSoftBody implementation by Nathanael Presson - -#ifndef _BT_SOFT_BODY_INTERNALS_H -#define _BT_SOFT_BODY_INTERNALS_H - -#include "btSoftBody.h" - - -#include "LinearMath/btQuickprof.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h" -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" -#include "BulletCollision/CollisionShapes/btConvexInternalShape.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkEpa2.h" - -// -// btSymMatrix -// -template -struct btSymMatrix -{ - btSymMatrix() : dim(0) {} - btSymMatrix(int n,const T& init=T()) { resize(n,init); } - void resize(int n,const T& init=T()) { dim=n;store.resize((n*(n+1))/2,init); } - int index(int c,int r) const { if(c>r) btSwap(c,r);btAssert(r store; - int dim; -}; - -// -// btSoftBodyCollisionShape -// -class btSoftBodyCollisionShape : public btConcaveShape -{ -public: - btSoftBody* m_body; - - btSoftBodyCollisionShape(btSoftBody* backptr) - { - m_shapeType = SOFTBODY_SHAPE_PROXYTYPE; - m_body=backptr; - } - - virtual ~btSoftBodyCollisionShape() - { - - } - - void processAllTriangles(btTriangleCallback* /*callback*/,const btVector3& /*aabbMin*/,const btVector3& /*aabbMax*/) const - { - //not yet - btAssert(0); - } - - ///getAabb returns the axis aligned bounding box in the coordinate frame of the given transform t. - virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const - { - /* t should be identity, but better be safe than...fast? */ - const btVector3 mins=m_body->m_bounds[0]; - const btVector3 maxs=m_body->m_bounds[1]; - const btVector3 crns[]={t*btVector3(mins.x(),mins.y(),mins.z()), - t*btVector3(maxs.x(),mins.y(),mins.z()), - t*btVector3(maxs.x(),maxs.y(),mins.z()), - t*btVector3(mins.x(),maxs.y(),mins.z()), - t*btVector3(mins.x(),mins.y(),maxs.z()), - t*btVector3(maxs.x(),mins.y(),maxs.z()), - t*btVector3(maxs.x(),maxs.y(),maxs.z()), - t*btVector3(mins.x(),maxs.y(),maxs.z())}; - aabbMin=aabbMax=crns[0]; - for(int i=1;i<8;++i) - { - aabbMin.setMin(crns[i]); - aabbMax.setMax(crns[i]); - } - } - - - virtual void setLocalScaling(const btVector3& /*scaling*/) - { - ///na - } - virtual const btVector3& getLocalScaling() const - { - static const btVector3 dummy(1,1,1); - return dummy; - } - virtual void calculateLocalInertia(btScalar /*mass*/,btVector3& /*inertia*/) const - { - ///not yet - btAssert(0); - } - virtual const char* getName()const - { - return "SoftBody"; - } - -}; - -// -// btSoftClusterCollisionShape -// -class btSoftClusterCollisionShape : public btConvexInternalShape -{ -public: - const btSoftBody::Cluster* m_cluster; - - btSoftClusterCollisionShape (const btSoftBody::Cluster* cluster) : m_cluster(cluster) { setMargin(0); } - - - virtual btVector3 localGetSupportingVertex(const btVector3& vec) const - { - btSoftBody::Node* const * n=&m_cluster->m_nodes[0]; - btScalar d=btDot(vec,n[0]->m_x); - int j=0; - for(int i=1,ni=m_cluster->m_nodes.size();im_x); - if(k>d) { d=k;j=i; } - } - return(n[j]->m_x); - } - virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const - { - return(localGetSupportingVertex(vec)); - } - //notice that the vectors should be unit length - virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const - {} - - - virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const - {} - - virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const - {} - - virtual int getShapeType() const { return SOFTBODY_SHAPE_PROXYTYPE; } - - //debugging - virtual const char* getName()const {return "SOFTCLUSTER";} - - virtual void setMargin(btScalar margin) - { - btConvexInternalShape::setMargin(margin); - } - virtual btScalar getMargin() const - { - return getMargin(); - } -}; - -// -// Inline's -// - -// -template -static inline void ZeroInitialize(T& value) -{ - static const T zerodummy; - value=zerodummy; -} -// -template -static inline bool CompLess(const T& a,const T& b) -{ return(a -static inline bool CompGreater(const T& a,const T& b) -{ return(a>b); } -// -template -static inline T Lerp(const T& a,const T& b,btScalar t) -{ return(a+(b-a)*t); } -// -template -static inline T InvLerp(const T& a,const T& b,btScalar t) -{ return((b+a*t-b*t)/(a*b)); } -// -static inline btMatrix3x3 Lerp( const btMatrix3x3& a, - const btMatrix3x3& b, - btScalar t) -{ - btMatrix3x3 r; - r[0]=Lerp(a[0],b[0],t); - r[1]=Lerp(a[1],b[1],t); - r[2]=Lerp(a[2],b[2],t); - return(r); -} -// -static inline btVector3 Clamp(const btVector3& v,btScalar maxlength) -{ - const btScalar sql=v.length2(); - if(sql>(maxlength*maxlength)) - return((v*maxlength)/btSqrt(sql)); - else - return(v); -} -// -template -static inline T Clamp(const T& x,const T& l,const T& h) -{ return(xh?h:x); } -// -template -static inline T Sq(const T& x) -{ return(x*x); } -// -template -static inline T Cube(const T& x) -{ return(x*x*x); } -// -template -static inline T Sign(const T& x) -{ return((T)(x<0?-1:+1)); } -// -template -static inline bool SameSign(const T& x,const T& y) -{ return((x*y)>0); } -// -static inline btScalar ClusterMetric(const btVector3& x,const btVector3& y) -{ - const btVector3 d=x-y; - return(btFabs(d[0])+btFabs(d[1])+btFabs(d[2])); -} -// -static inline btMatrix3x3 ScaleAlongAxis(const btVector3& a,btScalar s) -{ - const btScalar xx=a.x()*a.x(); - const btScalar yy=a.y()*a.y(); - const btScalar zz=a.z()*a.z(); - const btScalar xy=a.x()*a.y(); - const btScalar yz=a.y()*a.z(); - const btScalar zx=a.z()*a.x(); - btMatrix3x3 m; - m[0]=btVector3(1-xx+xx*s,xy*s-xy,zx*s-zx); - m[1]=btVector3(xy*s-xy,1-yy+yy*s,yz*s-yz); - m[2]=btVector3(zx*s-zx,yz*s-yz,1-zz+zz*s); - return(m); -} -// -static inline btMatrix3x3 Cross(const btVector3& v) -{ - btMatrix3x3 m; - m[0]=btVector3(0,-v.z(),+v.y()); - m[1]=btVector3(+v.z(),0,-v.x()); - m[2]=btVector3(-v.y(),+v.x(),0); - return(m); -} -// -static inline btMatrix3x3 Diagonal(btScalar x) -{ - btMatrix3x3 m; - m[0]=btVector3(x,0,0); - m[1]=btVector3(0,x,0); - m[2]=btVector3(0,0,x); - return(m); -} -// -static inline btMatrix3x3 Add(const btMatrix3x3& a, - const btMatrix3x3& b) -{ - btMatrix3x3 r; - for(int i=0;i<3;++i) r[i]=a[i]+b[i]; - return(r); -} -// -static inline btMatrix3x3 Sub(const btMatrix3x3& a, - const btMatrix3x3& b) -{ - btMatrix3x3 r; - for(int i=0;i<3;++i) r[i]=a[i]-b[i]; - return(r); -} -// -static inline btMatrix3x3 Mul(const btMatrix3x3& a, - btScalar b) -{ - btMatrix3x3 r; - for(int i=0;i<3;++i) r[i]=a[i]*b; - return(r); -} -// -static inline void Orthogonalize(btMatrix3x3& m) -{ - m[2]=btCross(m[0],m[1]).normalized(); - m[1]=btCross(m[2],m[0]).normalized(); - m[0]=btCross(m[1],m[2]).normalized(); -} -// -static inline btMatrix3x3 MassMatrix(btScalar im,const btMatrix3x3& iwi,const btVector3& r) -{ - const btMatrix3x3 cr=Cross(r); - return(Sub(Diagonal(im),cr*iwi*cr)); -} - -// -static inline btMatrix3x3 ImpulseMatrix( btScalar dt, - btScalar ima, - btScalar imb, - const btMatrix3x3& iwi, - const btVector3& r) -{ - return(Diagonal(1/dt)*Add(Diagonal(ima),MassMatrix(imb,iwi,r)).inverse()); -} - -// -static inline btMatrix3x3 ImpulseMatrix( btScalar ima,const btMatrix3x3& iia,const btVector3& ra, - btScalar imb,const btMatrix3x3& iib,const btVector3& rb) -{ - return(Add(MassMatrix(ima,iia,ra),MassMatrix(imb,iib,rb)).inverse()); -} - -// -static inline btMatrix3x3 AngularImpulseMatrix( const btMatrix3x3& iia, - const btMatrix3x3& iib) -{ - return(Add(iia,iib).inverse()); -} - -// -static inline btVector3 ProjectOnAxis( const btVector3& v, - const btVector3& a) -{ - return(a*btDot(v,a)); -} -// -static inline btVector3 ProjectOnPlane( const btVector3& v, - const btVector3& a) -{ - return(v-ProjectOnAxis(v,a)); -} - -// -static inline void ProjectOrigin( const btVector3& a, - const btVector3& b, - btVector3& prj, - btScalar& sqd) -{ - const btVector3 d=b-a; - const btScalar m2=d.length2(); - if(m2>SIMD_EPSILON) - { - const btScalar t=Clamp(-btDot(a,d)/m2,0,1); - const btVector3 p=a+d*t; - const btScalar l2=p.length2(); - if(l2SIMD_EPSILON) - { - const btVector3 n=q/btSqrt(m2); - const btScalar k=btDot(a,n); - const btScalar k2=k*k; - if(k20)&& - (btDot(btCross(b-p,c-p),q)>0)&& - (btDot(btCross(c-p,a-p),q)>0)) - { - prj=p; - sqd=k2; - } - else - { - ProjectOrigin(a,b,prj,sqd); - ProjectOrigin(b,c,prj,sqd); - ProjectOrigin(c,a,prj,sqd); - } - } - } -} - -// -template -static inline T BaryEval( const T& a, - const T& b, - const T& c, - const btVector3& coord) -{ - return(a*coord.x()+b*coord.y()+c*coord.z()); -} -// -static inline btVector3 BaryCoord( const btVector3& a, - const btVector3& b, - const btVector3& c, - const btVector3& p) -{ - const btScalar w[]={ btCross(a-p,b-p).length(), - btCross(b-p,c-p).length(), - btCross(c-p,a-p).length()}; - const btScalar isum=1/(w[0]+w[1]+w[2]); - return(btVector3(w[1]*isum,w[2]*isum,w[0]*isum)); -} - -// -static btScalar ImplicitSolve( btSoftBody::ImplicitFn* fn, - const btVector3& a, - const btVector3& b, - const btScalar accuracy, - const int maxiterations=256) -{ - btScalar span[2]={0,1}; - btScalar values[2]={fn->Eval(a),fn->Eval(b)}; - if(values[0]>values[1]) - { - btSwap(span[0],span[1]); - btSwap(values[0],values[1]); - } - if(values[0]>-accuracy) return(-1); - if(values[1]<+accuracy) return(-1); - for(int i=0;iEval(Lerp(a,b,t)); - if((t<=0)||(t>=1)) break; - if(btFabs(v)SIMD_EPSILON) - return(v/l); - else - return(btVector3(0,0,0)); -} - -// -static inline btDbvtVolume VolumeOf( const btSoftBody::Face& f, - btScalar margin) -{ - const btVector3* pts[]={ &f.m_n[0]->m_x, - &f.m_n[1]->m_x, - &f.m_n[2]->m_x}; - btDbvtVolume vol=btDbvtVolume::FromPoints(pts,3); - vol.Expand(btVector3(margin,margin,margin)); - return(vol); -} - -// -static inline btVector3 CenterOf( const btSoftBody::Face& f) -{ - return((f.m_n[0]->m_x+f.m_n[1]->m_x+f.m_n[2]->m_x)/3); -} - -// -static inline btScalar AreaOf( const btVector3& x0, - const btVector3& x1, - const btVector3& x2) -{ - const btVector3 a=x1-x0; - const btVector3 b=x2-x0; - const btVector3 cr=btCross(a,b); - const btScalar area=cr.length(); - return(area); -} - -// -static inline btScalar VolumeOf( const btVector3& x0, - const btVector3& x1, - const btVector3& x2, - const btVector3& x3) -{ - const btVector3 a=x1-x0; - const btVector3 b=x2-x0; - const btVector3 c=x3-x0; - return(btDot(a,btCross(b,c))); -} - -// -static void EvaluateMedium( const btSoftBodyWorldInfo* wfi, - const btVector3& x, - btSoftBody::sMedium& medium) -{ - medium.m_velocity = btVector3(0,0,0); - medium.m_pressure = 0; - medium.m_density = wfi->air_density; - if(wfi->water_density>0) - { - const btScalar depth=-(btDot(x,wfi->water_normal)+wfi->water_offset); - if(depth>0) - { - medium.m_density = wfi->water_density; - medium.m_pressure = depth*wfi->water_density*wfi->m_gravity.length(); - } - } -} - -// -static inline void ApplyClampedForce( btSoftBody::Node& n, - const btVector3& f, - btScalar dt) -{ - const btScalar dtim=dt*n.m_im; - if((f*dtim).length2()>n.m_v.length2()) - {/* Clamp */ - n.m_f-=ProjectOnAxis(n.m_v,f.normalized())/dtim; - } - else - {/* Apply */ - n.m_f+=f; - } -} - -// -static inline int MatchEdge( const btSoftBody::Node* a, - const btSoftBody::Node* b, - const btSoftBody::Node* ma, - const btSoftBody::Node* mb) -{ - if((a==ma)&&(b==mb)) return(0); - if((a==mb)&&(b==ma)) return(1); - return(-1); -} - -// -// btEigen : Extract eigen system, -// straitforward implementation of http://math.fullerton.edu/mathews/n2003/JacobiMethodMod.html -// outputs are NOT sorted. -// -struct btEigen -{ - static int system(btMatrix3x3& a,btMatrix3x3* vectors,btVector3* values=0) - { - static const int maxiterations=16; - static const btScalar accuracy=(btScalar)0.0001; - btMatrix3x3& v=*vectors; - int iterations=0; - vectors->setIdentity(); - do { - int p=0,q=1; - if(btFabs(a[p][q])accuracy) - { - const btScalar w=(a[q][q]-a[p][p])/(2*a[p][q]); - const btScalar z=btFabs(w); - const btScalar t=w/(z*(btSqrt(1+w*w)+z)); - if(t==t)/* [WARNING] let hope that one does not get thrown aways by some compilers... */ - { - const btScalar c=1/btSqrt(t*t+1); - const btScalar s=c*t; - mulPQ(a,c,s,p,q); - mulTPQ(a,c,s,p,q); - mulPQ(v,c,s,p,q); - } else break; - } else break; - } while((++iterations)accuracy) det=ndet; else break; - } - /* Final orthogonalization */ - Orthogonalize(q); - /* Compute 'S' */ - s=q.transpose()*m; - } - else - { - q.setIdentity(); - s.setIdentity(); - } - return(i); -} - -// -// btSoftColliders -// -struct btSoftColliders -{ - // - // ClusterBase - // - struct ClusterBase : btDbvt::ICollide - { - btScalar erp; - btScalar idt; - btScalar m_margin; - btScalar friction; - btScalar threshold; - ClusterBase() - { - erp =(btScalar)1; - idt =0; - m_margin =0; - friction =0; - threshold =(btScalar)0; - } - bool SolveContact( const btGjkEpaSolver2::sResults& res, - btSoftBody::Body ba,btSoftBody::Body bb, - btSoftBody::CJoint& joint) - { - if(res.distancedata; - btSoftClusterCollisionShape cshape(cluster); - - const btConvexShape* rshape=(const btConvexShape*)m_colObj->getCollisionShape(); - - ///don't collide an anchored cluster with a static/kinematic object - if(m_colObj->isStaticOrKinematicObject() && cluster->m_containsAnchor) - return; - - btGjkEpaSolver2::sResults res; - if(btGjkEpaSolver2::SignedDistance( &cshape,btTransform::getIdentity(), - rshape,m_colObj->getInterpolationWorldTransform(), - btVector3(1,0,0),res)) - { - btSoftBody::CJoint joint; - if(SolveContact(res,cluster,m_colObj,joint))//prb,joint)) - { - btSoftBody::CJoint* pj=new(btAlignedAlloc(sizeof(btSoftBody::CJoint),16)) btSoftBody::CJoint(); - *pj=joint;psb->m_joints.push_back(pj); - if(m_colObj->isStaticOrKinematicObject()) - { - pj->m_erp *= psb->m_cfg.kSKHR_CL; - pj->m_split *= psb->m_cfg.kSK_SPLT_CL; - } - else - { - pj->m_erp *= psb->m_cfg.kSRHR_CL; - pj->m_split *= psb->m_cfg.kSR_SPLT_CL; - } - } - } - } - void Process(btSoftBody* ps,btCollisionObject* colOb) - { - psb = ps; - m_colObj = colOb; - idt = ps->m_sst.isdt; - m_margin = m_colObj->getCollisionShape()->getMargin()+psb->getCollisionShape()->getMargin(); - ///Bullet rigid body uses multiply instead of minimum to determine combined friction. Some customization would be useful. - friction = btMin(psb->m_cfg.kDF,m_colObj->getFriction()); - btVector3 mins; - btVector3 maxs; - - ATTRIBUTE_ALIGNED16(btDbvtVolume) volume; - colOb->getCollisionShape()->getAabb(colOb->getInterpolationWorldTransform(),mins,maxs); - volume=btDbvtVolume::FromMM(mins,maxs); - volume.Expand(btVector3(1,1,1)*m_margin); - ps->m_cdbvt.collideTV(ps->m_cdbvt.m_root,volume,*this); - } - }; - // - // CollideCL_SS - // - struct CollideCL_SS : ClusterBase - { - btSoftBody* bodies[2]; - void Process(const btDbvtNode* la,const btDbvtNode* lb) - { - btSoftBody::Cluster* cla=(btSoftBody::Cluster*)la->data; - btSoftBody::Cluster* clb=(btSoftBody::Cluster*)lb->data; - - - bool connected=false; - if ((bodies[0]==bodies[1])&&(bodies[0]->m_clusterConnectivity.size())) - { - connected = bodies[0]->m_clusterConnectivity[cla->m_clusterIndex+bodies[0]->m_clusters.size()*clb->m_clusterIndex]; - } - - if (!connected) - { - btSoftClusterCollisionShape csa(cla); - btSoftClusterCollisionShape csb(clb); - btGjkEpaSolver2::sResults res; - if(btGjkEpaSolver2::SignedDistance( &csa,btTransform::getIdentity(), - &csb,btTransform::getIdentity(), - cla->m_com-clb->m_com,res)) - { - btSoftBody::CJoint joint; - if(SolveContact(res,cla,clb,joint)) - { - btSoftBody::CJoint* pj=new(btAlignedAlloc(sizeof(btSoftBody::CJoint),16)) btSoftBody::CJoint(); - *pj=joint;bodies[0]->m_joints.push_back(pj); - pj->m_erp *= btMax(bodies[0]->m_cfg.kSSHR_CL,bodies[1]->m_cfg.kSSHR_CL); - pj->m_split *= (bodies[0]->m_cfg.kSS_SPLT_CL+bodies[1]->m_cfg.kSS_SPLT_CL)/2; - } - } - } else - { - static int count=0; - count++; - //printf("count=%d\n",count); - - } - } - void Process(btSoftBody* psa,btSoftBody* psb) - { - idt = psa->m_sst.isdt; - //m_margin = (psa->getCollisionShape()->getMargin()+psb->getCollisionShape()->getMargin())/2; - m_margin = (psa->getCollisionShape()->getMargin()+psb->getCollisionShape()->getMargin()); - friction = btMin(psa->m_cfg.kDF,psb->m_cfg.kDF); - bodies[0] = psa; - bodies[1] = psb; - psa->m_cdbvt.collideTT(psa->m_cdbvt.m_root,psb->m_cdbvt.m_root,*this); - } - }; - // - // CollideSDF_RS - // - struct CollideSDF_RS : btDbvt::ICollide - { - void Process(const btDbvtNode* leaf) - { - btSoftBody::Node* node=(btSoftBody::Node*)leaf->data; - DoNode(*node); - } - void DoNode(btSoftBody::Node& n) const - { - const btScalar m=n.m_im>0?dynmargin:stamargin; - btSoftBody::RContact c; - if( (!n.m_battach)&& - psb->checkContact(m_colObj1,n.m_x,m,c.m_cti)) - { - const btScalar ima=n.m_im; - const btScalar imb= m_rigidBody? m_rigidBody->getInvMass() : 0.f; - const btScalar ms=ima+imb; - if(ms>0) - { - const btTransform& wtr=m_rigidBody?m_rigidBody->getInterpolationWorldTransform() : m_colObj1->getWorldTransform(); - static const btMatrix3x3 iwiStatic(0,0,0,0,0,0,0,0,0); - const btMatrix3x3& iwi=m_rigidBody?m_rigidBody->getInvInertiaTensorWorld() : iwiStatic; - const btVector3 ra=n.m_x-wtr.getOrigin(); - const btVector3 va=m_rigidBody ? m_rigidBody->getVelocityInLocalPoint(ra)*psb->m_sst.sdt : btVector3(0,0,0); - const btVector3 vb=n.m_x-n.m_q; - const btVector3 vr=vb-va; - const btScalar dn=btDot(vr,c.m_cti.m_normal); - const btVector3 fv=vr-c.m_cti.m_normal*dn; - const btScalar fc=psb->m_cfg.kDF*m_colObj1->getFriction(); - c.m_node = &n; - c.m_c0 = ImpulseMatrix(psb->m_sst.sdt,ima,imb,iwi,ra); - c.m_c1 = ra; - c.m_c2 = ima*psb->m_sst.sdt; - c.m_c3 = fv.length2()<(btFabs(dn)*fc)?0:1-fc; - c.m_c4 = m_colObj1->isStaticOrKinematicObject()?psb->m_cfg.kKHR:psb->m_cfg.kCHR; - psb->m_rcontacts.push_back(c); - if (m_rigidBody) - m_rigidBody->activate(); - } - } - } - btSoftBody* psb; - btCollisionObject* m_colObj1; - btRigidBody* m_rigidBody; - btScalar dynmargin; - btScalar stamargin; - }; - // - // CollideVF_SS - // - struct CollideVF_SS : btDbvt::ICollide - { - void Process(const btDbvtNode* lnode, - const btDbvtNode* lface) - { - btSoftBody::Node* node=(btSoftBody::Node*)lnode->data; - btSoftBody::Face* face=(btSoftBody::Face*)lface->data; - btVector3 o=node->m_x; - btVector3 p; - btScalar d=SIMD_INFINITY; - ProjectOrigin( face->m_n[0]->m_x-o, - face->m_n[1]->m_x-o, - face->m_n[2]->m_x-o, - p,d); - const btScalar m=mrg+(o-node->m_q).length()*2; - if(d<(m*m)) - { - const btSoftBody::Node* n[]={face->m_n[0],face->m_n[1],face->m_n[2]}; - const btVector3 w=BaryCoord(n[0]->m_x,n[1]->m_x,n[2]->m_x,p+o); - const btScalar ma=node->m_im; - btScalar mb=BaryEval(n[0]->m_im,n[1]->m_im,n[2]->m_im,w); - if( (n[0]->m_im<=0)|| - (n[1]->m_im<=0)|| - (n[2]->m_im<=0)) - { - mb=0; - } - const btScalar ms=ma+mb; - if(ms>0) - { - btSoftBody::SContact c; - c.m_normal = p/-btSqrt(d); - c.m_margin = m; - c.m_node = node; - c.m_face = face; - c.m_weights = w; - c.m_friction = btMax(psb[0]->m_cfg.kDF,psb[1]->m_cfg.kDF); - c.m_cfm[0] = ma/ms*psb[0]->m_cfg.kSHR; - c.m_cfm[1] = mb/ms*psb[1]->m_cfg.kSHR; - psb[0]->m_scontacts.push_back(c); - } - } - } - btSoftBody* psb[2]; - btScalar mrg; - }; -}; - -#endif //_BT_SOFT_BODY_INTERNALS_H diff --git a/extern/bullet2/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp b/extern/bullet2/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp deleted file mode 100644 index f5a67f6d895..00000000000 --- a/extern/bullet2/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp +++ /dev/null @@ -1,134 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btSoftBodyRigidBodyCollisionConfiguration.h" -#include "btSoftRigidCollisionAlgorithm.h" -#include "btSoftBodyConcaveCollisionAlgorithm.h" -#include "btSoftSoftCollisionAlgorithm.h" - -#include "LinearMath/btPoolAllocator.h" - -#define ENABLE_SOFTBODY_CONCAVE_COLLISIONS 1 - -btSoftBodyRigidBodyCollisionConfiguration::btSoftBodyRigidBodyCollisionConfiguration(const btDefaultCollisionConstructionInfo& constructionInfo) -:btDefaultCollisionConfiguration(constructionInfo) -{ - void* mem; - - mem = btAlignedAlloc(sizeof(btSoftSoftCollisionAlgorithm::CreateFunc),16); - m_softSoftCreateFunc = new(mem) btSoftSoftCollisionAlgorithm::CreateFunc; - - mem = btAlignedAlloc(sizeof(btSoftRigidCollisionAlgorithm::CreateFunc),16); - m_softRigidConvexCreateFunc = new(mem) btSoftRigidCollisionAlgorithm::CreateFunc; - - mem = btAlignedAlloc(sizeof(btSoftRigidCollisionAlgorithm::CreateFunc),16); - m_swappedSoftRigidConvexCreateFunc = new(mem) btSoftRigidCollisionAlgorithm::CreateFunc; - m_swappedSoftRigidConvexCreateFunc->m_swapped=true; - -#ifdef ENABLE_SOFTBODY_CONCAVE_COLLISIONS - mem = btAlignedAlloc(sizeof(btSoftBodyConcaveCollisionAlgorithm::CreateFunc),16); - m_softRigidConcaveCreateFunc = new(mem) btSoftBodyConcaveCollisionAlgorithm::CreateFunc; - - mem = btAlignedAlloc(sizeof(btSoftBodyConcaveCollisionAlgorithm::CreateFunc),16); - m_swappedSoftRigidConcaveCreateFunc = new(mem) btSoftBodyConcaveCollisionAlgorithm::SwappedCreateFunc; - m_swappedSoftRigidConcaveCreateFunc->m_swapped=true; -#endif - - //replace pool by a new one, with potential larger size - - if (m_ownsCollisionAlgorithmPool && m_collisionAlgorithmPool) - { - int curElemSize = m_collisionAlgorithmPool->getElementSize(); - ///calculate maximum element size, big enough to fit any collision algorithm in the memory pool - - - int maxSize0 = sizeof(btSoftSoftCollisionAlgorithm); - int maxSize1 = sizeof(btSoftRigidCollisionAlgorithm); - int maxSize2 = sizeof(btSoftBodyConcaveCollisionAlgorithm); - - int collisionAlgorithmMaxElementSize = btMax(maxSize0,maxSize1); - collisionAlgorithmMaxElementSize = btMax(collisionAlgorithmMaxElementSize,maxSize2); - - if (collisionAlgorithmMaxElementSize > curElemSize) - { - m_collisionAlgorithmPool->~btPoolAllocator(); - btAlignedFree(m_collisionAlgorithmPool); - void* mem = btAlignedAlloc(sizeof(btPoolAllocator),16); - m_collisionAlgorithmPool = new(mem) btPoolAllocator(collisionAlgorithmMaxElementSize,constructionInfo.m_defaultMaxCollisionAlgorithmPoolSize); - } - } - -} - -btSoftBodyRigidBodyCollisionConfiguration::~btSoftBodyRigidBodyCollisionConfiguration() -{ - m_softSoftCreateFunc->~btCollisionAlgorithmCreateFunc(); - btAlignedFree( m_softSoftCreateFunc); - - m_softRigidConvexCreateFunc->~btCollisionAlgorithmCreateFunc(); - btAlignedFree( m_softRigidConvexCreateFunc); - - m_swappedSoftRigidConvexCreateFunc->~btCollisionAlgorithmCreateFunc(); - btAlignedFree( m_swappedSoftRigidConvexCreateFunc); - -#ifdef ENABLE_SOFTBODY_CONCAVE_COLLISIONS - m_softRigidConcaveCreateFunc->~btCollisionAlgorithmCreateFunc(); - btAlignedFree( m_softRigidConcaveCreateFunc); - - m_swappedSoftRigidConcaveCreateFunc->~btCollisionAlgorithmCreateFunc(); - btAlignedFree( m_swappedSoftRigidConcaveCreateFunc); -#endif -} - -///creation of soft-soft and soft-rigid, and otherwise fallback to base class implementation -btCollisionAlgorithmCreateFunc* btSoftBodyRigidBodyCollisionConfiguration::getCollisionAlgorithmCreateFunc(int proxyType0,int proxyType1) -{ - - ///try to handle the softbody interactions first - - if ((proxyType0 == SOFTBODY_SHAPE_PROXYTYPE ) && (proxyType1==SOFTBODY_SHAPE_PROXYTYPE)) - { - return m_softSoftCreateFunc; - } - - ///softbody versus convex - if (proxyType0 == SOFTBODY_SHAPE_PROXYTYPE && btBroadphaseProxy::isConvex(proxyType1)) - { - return m_softRigidConvexCreateFunc; - } - - ///convex versus soft body - if (btBroadphaseProxy::isConvex(proxyType0) && proxyType1 == SOFTBODY_SHAPE_PROXYTYPE ) - { - return m_swappedSoftRigidConvexCreateFunc; - } - -#ifdef ENABLE_SOFTBODY_CONCAVE_COLLISIONS - ///softbody versus convex - if (proxyType0 == SOFTBODY_SHAPE_PROXYTYPE && btBroadphaseProxy::isConcave(proxyType1)) - { - return m_softRigidConcaveCreateFunc; - } - - ///convex versus soft body - if (btBroadphaseProxy::isConcave(proxyType0) && proxyType1 == SOFTBODY_SHAPE_PROXYTYPE ) - { - return m_swappedSoftRigidConcaveCreateFunc; - } -#endif - - ///fallback to the regular rigid collision shape - return btDefaultCollisionConfiguration::getCollisionAlgorithmCreateFunc(proxyType0,proxyType1); -} diff --git a/extern/bullet2/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h b/extern/bullet2/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h deleted file mode 100644 index 21addcfe2e1..00000000000 --- a/extern/bullet2/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BT_SOFTBODY_RIGIDBODY_COLLISION_CONFIGURATION -#define BT_SOFTBODY_RIGIDBODY_COLLISION_CONFIGURATION - -#include "BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h" - -class btVoronoiSimplexSolver; -class btGjkEpaPenetrationDepthSolver; - - -///btSoftBodyRigidBodyCollisionConfiguration add softbody interaction on top of btDefaultCollisionConfiguration -class btSoftBodyRigidBodyCollisionConfiguration : public btDefaultCollisionConfiguration -{ - - //default CreationFunctions, filling the m_doubleDispatch table - btCollisionAlgorithmCreateFunc* m_softSoftCreateFunc; - btCollisionAlgorithmCreateFunc* m_softRigidConvexCreateFunc; - btCollisionAlgorithmCreateFunc* m_swappedSoftRigidConvexCreateFunc; - btCollisionAlgorithmCreateFunc* m_softRigidConcaveCreateFunc; - btCollisionAlgorithmCreateFunc* m_swappedSoftRigidConcaveCreateFunc; - -public: - - btSoftBodyRigidBodyCollisionConfiguration(const btDefaultCollisionConstructionInfo& constructionInfo = btDefaultCollisionConstructionInfo()); - - virtual ~btSoftBodyRigidBodyCollisionConfiguration(); - - ///creation of soft-soft and soft-rigid, and otherwise fallback to base class implementation - virtual btCollisionAlgorithmCreateFunc* getCollisionAlgorithmCreateFunc(int proxyType0,int proxyType1); - -}; - -#endif //BT_SOFTBODY_RIGIDBODY_COLLISION_CONFIGURATION - diff --git a/extern/bullet2/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp b/extern/bullet2/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp deleted file mode 100644 index 11ad9e7daba..00000000000 --- a/extern/bullet2/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btSoftRigidCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" -#include "BulletCollision/CollisionShapes/btSphereShape.h" -#include "BulletCollision/CollisionShapes/btBoxShape.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "btSoftBody.h" -///TODO: include all the shapes that the softbody can collide with -///alternatively, implement special case collision algorithms (just like for rigid collision shapes) - -//#include - -btSoftRigidCollisionAlgorithm::btSoftRigidCollisionAlgorithm(btPersistentManifold* /*mf*/,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* /*col0*/,btCollisionObject* /*col1*/, bool isSwapped) -: btCollisionAlgorithm(ci), -//m_ownManifold(false), -//m_manifoldPtr(mf), -m_isSwapped(isSwapped) -{ -} - - -btSoftRigidCollisionAlgorithm::~btSoftRigidCollisionAlgorithm() -{ - - //m_softBody->m_overlappingRigidBodies.remove(m_rigidCollisionObject); - - /*if (m_ownManifold) - { - if (m_manifoldPtr) - m_dispatcher->releaseManifold(m_manifoldPtr); - } - */ - -} - - -#include - -void btSoftRigidCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - (void)dispatchInfo; - (void)resultOut; - //printf("btSoftRigidCollisionAlgorithm\n"); - - btSoftBody* softBody = m_isSwapped? (btSoftBody*)body1 : (btSoftBody*)body0; - btCollisionObject* rigidCollisionObject = m_isSwapped? body0 : body1; - - if (softBody->m_collisionDisabledObjects.findLinearSearch(rigidCollisionObject)==softBody->m_collisionDisabledObjects.size()) - { - softBody->defaultCollisionHandler(rigidCollisionObject); - } - - -} - -btScalar btSoftRigidCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) -{ - (void)resultOut; - (void)dispatchInfo; - (void)col0; - (void)col1; - - //not yet - return btScalar(1.); -} - - - diff --git a/extern/bullet2/BulletSoftBody/btSoftRigidCollisionAlgorithm.h b/extern/bullet2/BulletSoftBody/btSoftRigidCollisionAlgorithm.h deleted file mode 100644 index adc3844e363..00000000000 --- a/extern/bullet2/BulletSoftBody/btSoftRigidCollisionAlgorithm.h +++ /dev/null @@ -1,75 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef SOFT_RIGID_COLLISION_ALGORITHM_H -#define SOFT_RIGID_COLLISION_ALGORITHM_H - -#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" -class btPersistentManifold; -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" - -#include "LinearMath/btVector3.h" -class btSoftBody; - -/// btSoftRigidCollisionAlgorithm provides collision detection between btSoftBody and btRigidBody -class btSoftRigidCollisionAlgorithm : public btCollisionAlgorithm -{ - // bool m_ownManifold; - // btPersistentManifold* m_manifoldPtr; - - btSoftBody* m_softBody; - btCollisionObject* m_rigidCollisionObject; - - ///for rigid versus soft (instead of soft versus rigid), we use this swapped boolean - bool m_isSwapped; - -public: - - btSoftRigidCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* col0,btCollisionObject* col1, bool isSwapped); - - virtual ~btSoftRigidCollisionAlgorithm(); - - virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual void getAllContactManifolds(btManifoldArray& manifoldArray) - { - //we don't add any manifolds - } - - - struct CreateFunc :public btCollisionAlgorithmCreateFunc - { - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) - { - void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSoftRigidCollisionAlgorithm)); - if (!m_swapped) - { - return new(mem) btSoftRigidCollisionAlgorithm(0,ci,body0,body1,false); - } else - { - return new(mem) btSoftRigidCollisionAlgorithm(0,ci,body0,body1,true); - } - } - }; - -}; - -#endif //SOFT_RIGID_COLLISION_ALGORITHM_H - - diff --git a/extern/bullet2/BulletSoftBody/btSoftRigidDynamicsWorld.cpp b/extern/bullet2/BulletSoftBody/btSoftRigidDynamicsWorld.cpp deleted file mode 100644 index 9a3d040b593..00000000000 --- a/extern/bullet2/BulletSoftBody/btSoftRigidDynamicsWorld.cpp +++ /dev/null @@ -1,292 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#include "btSoftRigidDynamicsWorld.h" -#include "LinearMath/btQuickprof.h" - -//softbody & helpers -#include "btSoftBody.h" -#include "btSoftBodyHelpers.h" - - - - - -btSoftRigidDynamicsWorld::btSoftRigidDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration) -:btDiscreteDynamicsWorld(dispatcher,pairCache,constraintSolver,collisionConfiguration) -{ - m_drawFlags = fDrawFlags::Std; - m_drawNodeTree = true; - m_drawFaceTree = false; - m_drawClusterTree = false; - m_sbi.m_broadphase = pairCache; - m_sbi.m_dispatcher = dispatcher; - m_sbi.m_sparsesdf.Initialize(); - m_sbi.m_sparsesdf.Reset(); - -} - -btSoftRigidDynamicsWorld::~btSoftRigidDynamicsWorld() -{ - -} - -void btSoftRigidDynamicsWorld::predictUnconstraintMotion(btScalar timeStep) -{ - btDiscreteDynamicsWorld::predictUnconstraintMotion( timeStep); - - for ( int i=0;ipredictMotion(timeStep); - } -} - -void btSoftRigidDynamicsWorld::internalSingleStepSimulation( btScalar timeStep) -{ - btDiscreteDynamicsWorld::internalSingleStepSimulation( timeStep ); - - ///solve soft bodies constraints - solveSoftBodiesConstraints(); - - //self collisions - for ( int i=0;idefaultCollisionHandler(psb); - } - - ///update soft bodies - updateSoftBodies(); - -} - -void btSoftRigidDynamicsWorld::updateSoftBodies() -{ - BT_PROFILE("updateSoftBodies"); - - for ( int i=0;iintegrateMotion(); - } -} - -void btSoftRigidDynamicsWorld::solveSoftBodiesConstraints() -{ - BT_PROFILE("solveSoftConstraints"); - - if(m_softBodies.size()) - { - btSoftBody::solveClusters(m_softBodies); - } - - for(int i=0;isolveConstraints(); - } -} - -void btSoftRigidDynamicsWorld::addSoftBody(btSoftBody* body,short int collisionFilterGroup,short int collisionFilterMask) -{ - m_softBodies.push_back(body); - - btCollisionWorld::addCollisionObject(body, - collisionFilterGroup, - collisionFilterMask); - -} - -void btSoftRigidDynamicsWorld::removeSoftBody(btSoftBody* body) -{ - m_softBodies.remove(body); - - btCollisionWorld::removeCollisionObject(body); -} - -void btSoftRigidDynamicsWorld::removeCollisionObject(btCollisionObject* collisionObject) -{ - btSoftBody* body = btSoftBody::upcast(collisionObject); - if (body) - removeSoftBody(body); - else - btDiscreteDynamicsWorld::removeCollisionObject(collisionObject); -} - -void btSoftRigidDynamicsWorld::debugDrawWorld() -{ - btDiscreteDynamicsWorld::debugDrawWorld(); - - if (getDebugDrawer()) - { - int i; - for ( i=0;im_softBodies.size();i++) - { - btSoftBody* psb=(btSoftBody*)this->m_softBodies[i]; - btSoftBodyHelpers::DrawFrame(psb,m_debugDrawer); - btSoftBodyHelpers::Draw(psb,m_debugDrawer,m_drawFlags); - if (m_debugDrawer && (m_debugDrawer->getDebugMode() & btIDebugDraw::DBG_DrawAabb)) - { - if(m_drawNodeTree) btSoftBodyHelpers::DrawNodeTree(psb,m_debugDrawer); - if(m_drawFaceTree) btSoftBodyHelpers::DrawFaceTree(psb,m_debugDrawer); - if(m_drawClusterTree) btSoftBodyHelpers::DrawClusterTree(psb,m_debugDrawer); - } - } - } -} - - - - -struct btSoftSingleRayCallback : public btBroadphaseRayCallback -{ - btVector3 m_rayFromWorld; - btVector3 m_rayToWorld; - btTransform m_rayFromTrans; - btTransform m_rayToTrans; - btVector3 m_hitNormal; - - const btSoftRigidDynamicsWorld* m_world; - btCollisionWorld::RayResultCallback& m_resultCallback; - - btSoftSingleRayCallback(const btVector3& rayFromWorld,const btVector3& rayToWorld,const btSoftRigidDynamicsWorld* world,btCollisionWorld::RayResultCallback& resultCallback) - :m_rayFromWorld(rayFromWorld), - m_rayToWorld(rayToWorld), - m_world(world), - m_resultCallback(resultCallback) - { - m_rayFromTrans.setIdentity(); - m_rayFromTrans.setOrigin(m_rayFromWorld); - m_rayToTrans.setIdentity(); - m_rayToTrans.setOrigin(m_rayToWorld); - - btVector3 rayDir = (rayToWorld-rayFromWorld); - - rayDir.normalize (); - ///what about division by zero? --> just set rayDirection[i] to INF/1e30 - m_rayDirectionInverse[0] = rayDir[0] == btScalar(0.0) ? btScalar(1e30) : btScalar(1.0) / rayDir[0]; - m_rayDirectionInverse[1] = rayDir[1] == btScalar(0.0) ? btScalar(1e30) : btScalar(1.0) / rayDir[1]; - m_rayDirectionInverse[2] = rayDir[2] == btScalar(0.0) ? btScalar(1e30) : btScalar(1.0) / rayDir[2]; - m_signs[0] = m_rayDirectionInverse[0] < 0.0; - m_signs[1] = m_rayDirectionInverse[1] < 0.0; - m_signs[2] = m_rayDirectionInverse[2] < 0.0; - - m_lambda_max = rayDir.dot(m_rayToWorld-m_rayFromWorld); - - } - - - - virtual bool process(const btBroadphaseProxy* proxy) - { - ///terminate further ray tests, once the closestHitFraction reached zero - if (m_resultCallback.m_closestHitFraction == btScalar(0.f)) - return false; - - btCollisionObject* collisionObject = (btCollisionObject*)proxy->m_clientObject; - - //only perform raycast if filterMask matches - if(m_resultCallback.needsCollision(collisionObject->getBroadphaseHandle())) - { - //RigidcollisionObject* collisionObject = ctrl->GetRigidcollisionObject(); - //btVector3 collisionObjectAabbMin,collisionObjectAabbMax; -#if 0 -#ifdef RECALCULATE_AABB - btVector3 collisionObjectAabbMin,collisionObjectAabbMax; - collisionObject->getCollisionShape()->getAabb(collisionObject->getWorldTransform(),collisionObjectAabbMin,collisionObjectAabbMax); -#else - //getBroadphase()->getAabb(collisionObject->getBroadphaseHandle(),collisionObjectAabbMin,collisionObjectAabbMax); - const btVector3& collisionObjectAabbMin = collisionObject->getBroadphaseHandle()->m_aabbMin; - const btVector3& collisionObjectAabbMax = collisionObject->getBroadphaseHandle()->m_aabbMax; -#endif -#endif - //btScalar hitLambda = m_resultCallback.m_closestHitFraction; - //culling already done by broadphase - //if (btRayAabb(m_rayFromWorld,m_rayToWorld,collisionObjectAabbMin,collisionObjectAabbMax,hitLambda,m_hitNormal)) - { - m_world->rayTestSingle(m_rayFromTrans,m_rayToTrans, - collisionObject, - collisionObject->getCollisionShape(), - collisionObject->getWorldTransform(), - m_resultCallback); - } - } - return true; - } -}; - -void btSoftRigidDynamicsWorld::rayTest(const btVector3& rayFromWorld, const btVector3& rayToWorld, RayResultCallback& resultCallback) const -{ - BT_PROFILE("rayTest"); - /// use the broadphase to accelerate the search for objects, based on their aabb - /// and for each object with ray-aabb overlap, perform an exact ray test - btSoftSingleRayCallback rayCB(rayFromWorld,rayToWorld,this,resultCallback); - -#ifndef USE_BRUTEFORCE_RAYBROADPHASE - m_broadphasePairCache->rayTest(rayFromWorld,rayToWorld,rayCB); -#else - for (int i=0;igetNumCollisionObjects();i++) - { - rayCB.process(m_collisionObjects[i]->getBroadphaseHandle()); - } -#endif //USE_BRUTEFORCE_RAYBROADPHASE - -} - - -void btSoftRigidDynamicsWorld::rayTestSingle(const btTransform& rayFromTrans,const btTransform& rayToTrans, - btCollisionObject* collisionObject, - const btCollisionShape* collisionShape, - const btTransform& colObjWorldTransform, - RayResultCallback& resultCallback) -{ - if (collisionShape->isSoftBody()) { - btSoftBody* softBody = btSoftBody::upcast(collisionObject); - if (softBody) { - btSoftBody::sRayCast softResult; - if (softBody->rayTest(rayFromTrans.getOrigin(), rayToTrans.getOrigin(), softResult)) - { - - if (softResult.fraction<= resultCallback.m_closestHitFraction) - { - - btCollisionWorld::LocalShapeInfo shapeInfo; - shapeInfo.m_shapePart = 0; - shapeInfo.m_triangleIndex = softResult.index; - // get the normal - btVector3 normal = softBody->m_faces[softResult.index].m_normal; - btVector3 rayDir = rayToTrans.getOrigin() - rayFromTrans.getOrigin(); - if (normal.dot(rayDir) > 0) { - // normal always point toward origin of the ray - normal = -normal; - } - btCollisionWorld::LocalRayResult rayResult - (collisionObject, - &shapeInfo, - normal, - softResult.fraction); - bool normalInWorldSpace = true; - resultCallback.addSingleResult(rayResult,normalInWorldSpace); - } - } - } - } - else { - btCollisionWorld::rayTestSingle(rayFromTrans,rayToTrans,collisionObject,collisionShape,colObjWorldTransform,resultCallback); - } -} diff --git a/extern/bullet2/BulletSoftBody/btSoftRigidDynamicsWorld.h b/extern/bullet2/BulletSoftBody/btSoftRigidDynamicsWorld.h deleted file mode 100644 index f36a9b360c2..00000000000 --- a/extern/bullet2/BulletSoftBody/btSoftRigidDynamicsWorld.h +++ /dev/null @@ -1,97 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BT_SOFT_RIGID_DYNAMICS_WORLD_H -#define BT_SOFT_RIGID_DYNAMICS_WORLD_H - -#include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h" -#include "btSoftBody.h" - -typedef btAlignedObjectArray btSoftBodyArray; - -class btSoftRigidDynamicsWorld : public btDiscreteDynamicsWorld -{ - - btSoftBodyArray m_softBodies; - int m_drawFlags; - bool m_drawNodeTree; - bool m_drawFaceTree; - bool m_drawClusterTree; - btSoftBodyWorldInfo m_sbi; - -protected: - - virtual void predictUnconstraintMotion(btScalar timeStep); - - virtual void internalSingleStepSimulation( btScalar timeStep); - - void updateSoftBodies(); - - void solveSoftBodiesConstraints(); - - -public: - - btSoftRigidDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration); - - virtual ~btSoftRigidDynamicsWorld(); - - virtual void debugDrawWorld(); - - void addSoftBody(btSoftBody* body,short int collisionFilterGroup=btBroadphaseProxy::DefaultFilter,short int collisionFilterMask=btBroadphaseProxy::AllFilter); - - void removeSoftBody(btSoftBody* body); - - ///removeCollisionObject will first check if it is a rigid body, if so call removeRigidBody otherwise call btDiscreteDynamicsWorld::removeCollisionObject - virtual void removeCollisionObject(btCollisionObject* collisionObject); - - int getDrawFlags() const { return(m_drawFlags); } - void setDrawFlags(int f) { m_drawFlags=f; } - - btSoftBodyWorldInfo& getWorldInfo() - { - return m_sbi; - } - const btSoftBodyWorldInfo& getWorldInfo() const - { - return m_sbi; - } - - - btSoftBodyArray& getSoftBodyArray() - { - return m_softBodies; - } - - const btSoftBodyArray& getSoftBodyArray() const - { - return m_softBodies; - } - - - virtual void rayTest(const btVector3& rayFromWorld, const btVector3& rayToWorld, RayResultCallback& resultCallback) const; - - /// rayTestSingle performs a raycast call and calls the resultCallback. It is used internally by rayTest. - /// In a future implementation, we consider moving the ray test as a virtual method in btCollisionShape. - /// This allows more customization. - static void rayTestSingle(const btTransform& rayFromTrans,const btTransform& rayToTrans, - btCollisionObject* collisionObject, - const btCollisionShape* collisionShape, - const btTransform& colObjWorldTransform, - RayResultCallback& resultCallback); - -}; - -#endif //BT_SOFT_RIGID_DYNAMICS_WORLD_H diff --git a/extern/bullet2/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp b/extern/bullet2/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp deleted file mode 100644 index 85a727944e0..00000000000 --- a/extern/bullet2/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btSoftSoftCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" -#include "BulletCollision/CollisionShapes/btBoxShape.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "btSoftBody.h" - -#define USE_PERSISTENT_CONTACTS 1 - -btSoftSoftCollisionAlgorithm::btSoftSoftCollisionAlgorithm(btPersistentManifold* /*mf*/,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* /*obj0*/,btCollisionObject* /*obj1*/) -: btCollisionAlgorithm(ci) -//m_ownManifold(false), -//m_manifoldPtr(mf) -{ -} - -btSoftSoftCollisionAlgorithm::~btSoftSoftCollisionAlgorithm() -{ -} - -void btSoftSoftCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& /*dispatchInfo*/,btManifoldResult* /*resultOut*/) -{ - btSoftBody* soft0 = (btSoftBody*)body0; - btSoftBody* soft1 = (btSoftBody*)body1; - soft0->defaultCollisionHandler(soft1); -} - -btScalar btSoftSoftCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* /*body0*/,btCollisionObject* /*body1*/,const btDispatcherInfo& /*dispatchInfo*/,btManifoldResult* /*resultOut*/) -{ - //not yet - return 1.f; -} diff --git a/extern/bullet2/BulletSoftBody/btSoftSoftCollisionAlgorithm.h b/extern/bullet2/BulletSoftBody/btSoftSoftCollisionAlgorithm.h deleted file mode 100644 index 1b34e0af60f..00000000000 --- a/extern/bullet2/BulletSoftBody/btSoftSoftCollisionAlgorithm.h +++ /dev/null @@ -1,69 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef SOFT_SOFT_COLLISION_ALGORITHM_H -#define SOFT_SOFT_COLLISION_ALGORITHM_H - -#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/BroadphaseCollision/btDispatcher.h" -#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" - -class btPersistentManifold; -class btSoftBody; - -///collision detection between two btSoftBody shapes -class btSoftSoftCollisionAlgorithm : public btCollisionAlgorithm -{ - bool m_ownManifold; - btPersistentManifold* m_manifoldPtr; - - btSoftBody* m_softBody0; - btSoftBody* m_softBody1; - - -public: - btSoftSoftCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci) - : btCollisionAlgorithm(ci) {} - - virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); - - virtual void getAllContactManifolds(btManifoldArray& manifoldArray) - { - if (m_manifoldPtr && m_ownManifold) - manifoldArray.push_back(m_manifoldPtr); - } - - btSoftSoftCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1); - - virtual ~btSoftSoftCollisionAlgorithm(); - - struct CreateFunc :public btCollisionAlgorithmCreateFunc - { - virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1) - { - int bbsize = sizeof(btSoftSoftCollisionAlgorithm); - void* ptr = ci.m_dispatcher1->allocateCollisionAlgorithm(bbsize); - return new(ptr) btSoftSoftCollisionAlgorithm(0,ci,body0,body1); - } - }; - -}; - -#endif //SOFT_SOFT_COLLISION_ALGORITHM_H - - diff --git a/extern/bullet2/BulletSoftBody/btSparseSDF.h b/extern/bullet2/BulletSoftBody/btSparseSDF.h deleted file mode 100644 index cc4266732ae..00000000000 --- a/extern/bullet2/BulletSoftBody/btSparseSDF.h +++ /dev/null @@ -1,306 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ -///btSparseSdf implementation by Nathanael Presson - -#ifndef _14F9D17F_EAE8_4aba_B41C_292DB2AA70F3_ -#define _14F9D17F_EAE8_4aba_B41C_292DB2AA70F3_ - -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkEpa2.h" - -// Modified Paul Hsieh hash -template -unsigned int HsiehHash(const void* pdata) -{ - const unsigned short* data=(const unsigned short*)pdata; - unsigned hash=DWORDLEN<<2,tmp; - for(int i=0;i>11; - } - hash^=hash<<3;hash+=hash>>5; - hash^=hash<<4;hash+=hash>>17; - hash^=hash<<25;hash+=hash>>6; - return(hash); -} - -template -struct btSparseSdf -{ - // - // Inner types - // - struct IntFrac - { - int b; - int i; - btScalar f; - }; - struct Cell - { - btScalar d[CELLSIZE+1][CELLSIZE+1][CELLSIZE+1]; - int c[3]; - int puid; - unsigned hash; - btCollisionShape* pclient; - Cell* next; - }; - // - // Fields - // - - btAlignedObjectArray cells; - btScalar voxelsz; - int puid; - int ncells; - int nprobes; - int nqueries; - - // - // Methods - // - - // - void Initialize(int hashsize=2383) - { - cells.resize(hashsize,0); - Reset(); - } - // - void Reset() - { - for(int i=0,ni=cells.size();inext; - delete pc; - pc=pn; - } - } - voxelsz =0.25; - puid =0; - ncells =0; - nprobes =1; - nqueries =1; - } - // - void GarbageCollect(int lifetime=256) - { - const int life=puid-lifetime; - for(int i=0;inext; - if(pc->puidnext=pn; else root=pn; - delete pc;pc=pp;--ncells; - } - pp=pc;pc=pn; - } - } - //printf("GC[%d]: %d cells, PpQ: %f\r\n",puid,ncells,nprobes/(btScalar)nqueries); - nqueries=1; - nprobes=1; - ++puid; ///@todo: Reset puid's when int range limit is reached */ - /* else setup a priority list... */ - } - // - int RemoveReferences(btCollisionShape* pcs) - { - int refcount=0; - for(int i=0;inext; - if(pc->pclient==pcs) - { - if(pp) pp->next=pn; else root=pn; - delete pc;pc=pp;++refcount; - } - pp=pc;pc=pn; - } - } - return(refcount); - } - // - btScalar Evaluate( const btVector3& x, - btCollisionShape* shape, - btVector3& normal, - btScalar margin) - { - /* Lookup cell */ - const btVector3 scx=x/voxelsz; - const IntFrac ix=Decompose(scx.x()); - const IntFrac iy=Decompose(scx.y()); - const IntFrac iz=Decompose(scx.z()); - const unsigned h=Hash(ix.b,iy.b,iz.b,shape); - Cell*& root=cells[static_cast(h%cells.size())]; - Cell* c=root; - ++nqueries; - while(c) - { - ++nprobes; - if( (c->hash==h) && - (c->c[0]==ix.b) && - (c->c[1]==iy.b) && - (c->c[2]==iz.b) && - (c->pclient==shape)) - { break; } - else - { c=c->next; } - } - if(!c) - { - ++nprobes; - ++ncells; - c=new Cell(); - c->next=root;root=c; - c->pclient=shape; - c->hash=h; - c->c[0]=ix.b;c->c[1]=iy.b;c->c[2]=iz.b; - BuildCell(*c); - } - c->puid=puid; - /* Extract infos */ - const int o[]={ ix.i,iy.i,iz.i}; - const btScalar d[]={ c->d[o[0]+0][o[1]+0][o[2]+0], - c->d[o[0]+1][o[1]+0][o[2]+0], - c->d[o[0]+1][o[1]+1][o[2]+0], - c->d[o[0]+0][o[1]+1][o[2]+0], - c->d[o[0]+0][o[1]+0][o[2]+1], - c->d[o[0]+1][o[1]+0][o[2]+1], - c->d[o[0]+1][o[1]+1][o[2]+1], - c->d[o[0]+0][o[1]+1][o[2]+1]}; - /* Normal */ -#if 1 - const btScalar gx[]={ d[1]-d[0],d[2]-d[3], - d[5]-d[4],d[6]-d[7]}; - const btScalar gy[]={ d[3]-d[0],d[2]-d[1], - d[7]-d[4],d[6]-d[5]}; - const btScalar gz[]={ d[4]-d[0],d[5]-d[1], - d[7]-d[3],d[6]-d[2]}; - normal.setX(Lerp( Lerp(gx[0],gx[1],iy.f), - Lerp(gx[2],gx[3],iy.f),iz.f)); - normal.setY(Lerp( Lerp(gy[0],gy[1],ix.f), - Lerp(gy[2],gy[3],ix.f),iz.f)); - normal.setZ(Lerp( Lerp(gz[0],gz[1],ix.f), - Lerp(gz[2],gz[3],ix.f),iy.f)); - normal = normal.normalized(); -#else - normal = btVector3(d[1]-d[0],d[3]-d[0],d[4]-d[0]).normalized(); -#endif - /* Distance */ - const btScalar d0=Lerp(Lerp(d[0],d[1],ix.f), - Lerp(d[3],d[2],ix.f),iy.f); - const btScalar d1=Lerp(Lerp(d[4],d[5],ix.f), - Lerp(d[7],d[6],ix.f),iy.f); - return(Lerp(d0,d1,iz.f)-margin); - } - // - void BuildCell(Cell& c) - { - const btVector3 org=btVector3( (btScalar)c.c[0], - (btScalar)c.c[1], - (btScalar)c.c[2]) * - CELLSIZE*voxelsz; - for(int k=0;k<=CELLSIZE;++k) - { - const btScalar z=voxelsz*k+org.z(); - for(int j=0;j<=CELLSIZE;++j) - { - const btScalar y=voxelsz*j+org.y(); - for(int i=0;i<=CELLSIZE;++i) - { - const btScalar x=voxelsz*i+org.x(); - c.d[i][j][k]=DistanceToShape( btVector3(x,y,z), - c.pclient); - } - } - } - } - // - static inline btScalar DistanceToShape(const btVector3& x, - btCollisionShape* shape) - { - btTransform unit; - unit.setIdentity(); - if(shape->isConvex()) - { - btGjkEpaSolver2::sResults res; - btConvexShape* csh=static_cast(shape); - return(btGjkEpaSolver2::SignedDistance(x,0,csh,unit,res)); - } - return(0); - } - // - static inline IntFrac Decompose(btScalar x) - { - /* That one need a lot of improvements... */ - /* Remove test, faster floor... */ - IntFrac r; - x/=CELLSIZE; - const int o=x<0?(int)(-x+1):0; - x+=o;r.b=(int)x; - const btScalar k=(x-r.b)*CELLSIZE; - r.i=(int)k;r.f=k-r.i;r.b-=o; - return(r); - } - // - static inline btScalar Lerp(btScalar a,btScalar b,btScalar t) - { - return(a+(b-a)*t); - } - - - - // - static inline unsigned int Hash(int x,int y,int z,btCollisionShape* shape) - { - struct btS - { - int x,y,z; - void* p; - }; - - btS myset; - - myset.x=x;myset.y=y;myset.z=z;myset.p=shape; - const void* ptr = &myset; - - unsigned int result = HsiehHash (ptr); - - - return result; - } -}; - - -#endif diff --git a/extern/bullet2/CMakeLists.txt b/extern/bullet2/CMakeLists.txt index 9b8a5a7e00e..3054ed98908 100644 --- a/extern/bullet2/CMakeLists.txt +++ b/extern/bullet2/CMakeLists.txt @@ -1,4 +1,43 @@ -ADD_SUBDIRECTORY(BulletCollision) -ADD_SUBDIRECTORY(BulletDynamics) -ADD_SUBDIRECTORY(LinearMath) -ADD_SUBDIRECTORY(BulletSoftBody ) +# $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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# The Original Code is Copyright (C) 2006, Blender Foundation +# All rights reserved. +# +# The Original Code is: all of this file. +# +# Contributor(s): Jacques Beaurai, Erwin Coumans +# +# ***** END GPL LICENSE BLOCK ***** + +SET(INC . src) + +FILE(GLOB SRC + src/LinearMath/*.cpp + src/BulletCollision/BroadphaseCollision/*.cpp + src/BulletCollision/CollisionShapes/*.cpp + src/BulletCollision/NarrowPhaseCollision/*.cpp + src/BulletCollision/Gimpact/*.cpp + src/BulletCollision/CollisionDispatch/*.cpp + src/BulletDynamics/ConstraintSolver/*.cpp + src/BulletDynamics/Vehicle/*.cpp + src/BulletDynamics/Dynamics/*.cpp + src/BulletSoftBody/*.cpp +) + +BLENDERLIB(extern_bullet "${SRC}" "${INC}") + diff --git a/extern/bullet2/LinearMath/CMakeLists.txt b/extern/bullet2/LinearMath/CMakeLists.txt deleted file mode 100644 index faec5ebee5a..00000000000 --- a/extern/bullet2/LinearMath/CMakeLists.txt +++ /dev/null @@ -1,61 +0,0 @@ - -INCLUDE_DIRECTORIES( - ${BULLET_PHYSICS_SOURCE_DIR}/src -) - -SET(LinearMath_SRCS - btAlignedAllocator.cpp - btConvexHull.cpp - btGeometryUtil.cpp - btQuickprof.cpp - btSerializer.cpp -) - -SET(LinearMath_HDRS - btAabbUtil2.h - btAlignedAllocator.h - btAlignedObjectArray.h - btConvexHull.h - btDefaultMotionState.h - btGeometryUtil.h - btHashMap.h - btIDebugDraw.h - btList.h - btMatrix3x3.h - btMinMax.h - btMotionState.h - btPoolAllocator.h - btQuadWord.h - btQuaternion.h - btQuickprof.h - btRandom.h - btScalar.h - btSerializer.h - btStackAlloc.h - btTransform.h - btTransformUtil.h - btVector3.h -) - -ADD_LIBRARY(LinearMath ${LinearMath_SRCS} ${LinearMath_HDRS}) -SET_TARGET_PROPERTIES(LinearMath PROPERTIES VERSION ${BULLET_VERSION}) -SET_TARGET_PROPERTIES(LinearMath PROPERTIES SOVERSION ${BULLET_VERSION}) - -IF (INSTALL_LIBS) - IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) - #FILES_MATCHING requires CMake 2.6 - IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS LinearMath DESTINATION .) - ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS LinearMath DESTINATION lib${LIB_SUFFIX}) - INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h") - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - SET_TARGET_PROPERTIES(LinearMath PROPERTIES FRAMEWORK true) - SET_TARGET_PROPERTIES(LinearMath PROPERTIES PUBLIC_HEADER ${LinearMath_HDRS}) - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) -ENDIF (INSTALL_LIBS) \ No newline at end of file diff --git a/extern/bullet2/LinearMath/btAabbUtil2.h b/extern/bullet2/LinearMath/btAabbUtil2.h deleted file mode 100644 index 532ce1bf633..00000000000 --- a/extern/bullet2/LinearMath/btAabbUtil2.h +++ /dev/null @@ -1,236 +0,0 @@ -/* -Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#ifndef AABB_UTIL2 -#define AABB_UTIL2 - -#include "btTransform.h" -#include "btVector3.h" -#include "btMinMax.h" - - - -SIMD_FORCE_INLINE void AabbExpand (btVector3& aabbMin, - btVector3& aabbMax, - const btVector3& expansionMin, - const btVector3& expansionMax) -{ - aabbMin = aabbMin + expansionMin; - aabbMax = aabbMax + expansionMax; -} - -/// conservative test for overlap between two aabbs -SIMD_FORCE_INLINE bool TestPointAgainstAabb2(const btVector3 &aabbMin1, const btVector3 &aabbMax1, - const btVector3 &point) -{ - bool overlap = true; - overlap = (aabbMin1.getX() > point.getX() || aabbMax1.getX() < point.getX()) ? false : overlap; - overlap = (aabbMin1.getZ() > point.getZ() || aabbMax1.getZ() < point.getZ()) ? false : overlap; - overlap = (aabbMin1.getY() > point.getY() || aabbMax1.getY() < point.getY()) ? false : overlap; - return overlap; -} - - -/// conservative test for overlap between two aabbs -SIMD_FORCE_INLINE bool TestAabbAgainstAabb2(const btVector3 &aabbMin1, const btVector3 &aabbMax1, - const btVector3 &aabbMin2, const btVector3 &aabbMax2) -{ - bool overlap = true; - overlap = (aabbMin1.getX() > aabbMax2.getX() || aabbMax1.getX() < aabbMin2.getX()) ? false : overlap; - overlap = (aabbMin1.getZ() > aabbMax2.getZ() || aabbMax1.getZ() < aabbMin2.getZ()) ? false : overlap; - overlap = (aabbMin1.getY() > aabbMax2.getY() || aabbMax1.getY() < aabbMin2.getY()) ? false : overlap; - return overlap; -} - -/// conservative test for overlap between triangle and aabb -SIMD_FORCE_INLINE bool TestTriangleAgainstAabb2(const btVector3 *vertices, - const btVector3 &aabbMin, const btVector3 &aabbMax) -{ - const btVector3 &p1 = vertices[0]; - const btVector3 &p2 = vertices[1]; - const btVector3 &p3 = vertices[2]; - - if (btMin(btMin(p1[0], p2[0]), p3[0]) > aabbMax[0]) return false; - if (btMax(btMax(p1[0], p2[0]), p3[0]) < aabbMin[0]) return false; - - if (btMin(btMin(p1[2], p2[2]), p3[2]) > aabbMax[2]) return false; - if (btMax(btMax(p1[2], p2[2]), p3[2]) < aabbMin[2]) return false; - - if (btMin(btMin(p1[1], p2[1]), p3[1]) > aabbMax[1]) return false; - if (btMax(btMax(p1[1], p2[1]), p3[1]) < aabbMin[1]) return false; - return true; -} - - -SIMD_FORCE_INLINE int btOutcode(const btVector3& p,const btVector3& halfExtent) -{ - return (p.getX() < -halfExtent.getX() ? 0x01 : 0x0) | - (p.getX() > halfExtent.getX() ? 0x08 : 0x0) | - (p.getY() < -halfExtent.getY() ? 0x02 : 0x0) | - (p.getY() > halfExtent.getY() ? 0x10 : 0x0) | - (p.getZ() < -halfExtent.getZ() ? 0x4 : 0x0) | - (p.getZ() > halfExtent.getZ() ? 0x20 : 0x0); -} - - - -SIMD_FORCE_INLINE bool btRayAabb2(const btVector3& rayFrom, - const btVector3& rayInvDirection, - const unsigned int raySign[3], - const btVector3 bounds[2], - btScalar& tmin, - btScalar lambda_min, - btScalar lambda_max) -{ - btScalar tmax, tymin, tymax, tzmin, tzmax; - tmin = (bounds[raySign[0]].getX() - rayFrom.getX()) * rayInvDirection.getX(); - tmax = (bounds[1-raySign[0]].getX() - rayFrom.getX()) * rayInvDirection.getX(); - tymin = (bounds[raySign[1]].getY() - rayFrom.getY()) * rayInvDirection.getY(); - tymax = (bounds[1-raySign[1]].getY() - rayFrom.getY()) * rayInvDirection.getY(); - - if ( (tmin > tymax) || (tymin > tmax) ) - return false; - - if (tymin > tmin) - tmin = tymin; - - if (tymax < tmax) - tmax = tymax; - - tzmin = (bounds[raySign[2]].getZ() - rayFrom.getZ()) * rayInvDirection.getZ(); - tzmax = (bounds[1-raySign[2]].getZ() - rayFrom.getZ()) * rayInvDirection.getZ(); - - if ( (tmin > tzmax) || (tzmin > tmax) ) - return false; - if (tzmin > tmin) - tmin = tzmin; - if (tzmax < tmax) - tmax = tzmax; - return ( (tmin < lambda_max) && (tmax > lambda_min) ); -} - -SIMD_FORCE_INLINE bool btRayAabb(const btVector3& rayFrom, - const btVector3& rayTo, - const btVector3& aabbMin, - const btVector3& aabbMax, - btScalar& param, btVector3& normal) -{ - btVector3 aabbHalfExtent = (aabbMax-aabbMin)* btScalar(0.5); - btVector3 aabbCenter = (aabbMax+aabbMin)* btScalar(0.5); - btVector3 source = rayFrom - aabbCenter; - btVector3 target = rayTo - aabbCenter; - int sourceOutcode = btOutcode(source,aabbHalfExtent); - int targetOutcode = btOutcode(target,aabbHalfExtent); - if ((sourceOutcode & targetOutcode) == 0x0) - { - btScalar lambda_enter = btScalar(0.0); - btScalar lambda_exit = param; - btVector3 r = target - source; - int i; - btScalar normSign = 1; - btVector3 hitNormal(0,0,0); - int bit=1; - - for (int j=0;j<2;j++) - { - for (i = 0; i != 3; ++i) - { - if (sourceOutcode & bit) - { - btScalar lambda = (-source[i] - aabbHalfExtent[i]*normSign) / r[i]; - if (lambda_enter <= lambda) - { - lambda_enter = lambda; - hitNormal.setValue(0,0,0); - hitNormal[i] = normSign; - } - } - else if (targetOutcode & bit) - { - btScalar lambda = (-source[i] - aabbHalfExtent[i]*normSign) / r[i]; - btSetMin(lambda_exit, lambda); - } - bit<<=1; - } - normSign = btScalar(-1.); - } - if (lambda_enter <= lambda_exit) - { - param = lambda_enter; - normal = hitNormal; - return true; - } - } - return false; -} - - - -SIMD_FORCE_INLINE void btTransformAabb(const btVector3& halfExtents, btScalar margin,const btTransform& t,btVector3& aabbMinOut,btVector3& aabbMaxOut) -{ - btVector3 halfExtentsWithMargin = halfExtents+btVector3(margin,margin,margin); - btMatrix3x3 abs_b = t.getBasis().absolute(); - btVector3 center = t.getOrigin(); - btVector3 extent = btVector3(abs_b[0].dot(halfExtentsWithMargin), - abs_b[1].dot(halfExtentsWithMargin), - abs_b[2].dot(halfExtentsWithMargin)); - aabbMinOut = center - extent; - aabbMaxOut = center + extent; -} - - -SIMD_FORCE_INLINE void btTransformAabb(const btVector3& localAabbMin,const btVector3& localAabbMax, btScalar margin,const btTransform& trans,btVector3& aabbMinOut,btVector3& aabbMaxOut) -{ - btAssert(localAabbMin.getX() <= localAabbMax.getX()); - btAssert(localAabbMin.getY() <= localAabbMax.getY()); - btAssert(localAabbMin.getZ() <= localAabbMax.getZ()); - btVector3 localHalfExtents = btScalar(0.5)*(localAabbMax-localAabbMin); - localHalfExtents+=btVector3(margin,margin,margin); - - btVector3 localCenter = btScalar(0.5)*(localAabbMax+localAabbMin); - btMatrix3x3 abs_b = trans.getBasis().absolute(); - btVector3 center = trans(localCenter); - btVector3 extent = btVector3(abs_b[0].dot(localHalfExtents), - abs_b[1].dot(localHalfExtents), - abs_b[2].dot(localHalfExtents)); - aabbMinOut = center-extent; - aabbMaxOut = center+extent; -} - -#define USE_BANCHLESS 1 -#ifdef USE_BANCHLESS - //This block replaces the block below and uses no branches, and replaces the 8 bit return with a 32 bit return for improved performance (~3x on XBox 360) - SIMD_FORCE_INLINE unsigned testQuantizedAabbAgainstQuantizedAabb(const unsigned short int* aabbMin1,const unsigned short int* aabbMax1,const unsigned short int* aabbMin2,const unsigned short int* aabbMax2) - { - return static_cast(btSelect((unsigned)((aabbMin1[0] <= aabbMax2[0]) & (aabbMax1[0] >= aabbMin2[0]) - & (aabbMin1[2] <= aabbMax2[2]) & (aabbMax1[2] >= aabbMin2[2]) - & (aabbMin1[1] <= aabbMax2[1]) & (aabbMax1[1] >= aabbMin2[1])), - 1, 0)); - } -#else - SIMD_FORCE_INLINE bool testQuantizedAabbAgainstQuantizedAabb(const unsigned short int* aabbMin1,const unsigned short int* aabbMax1,const unsigned short int* aabbMin2,const unsigned short int* aabbMax2) - { - bool overlap = true; - overlap = (aabbMin1[0] > aabbMax2[0] || aabbMax1[0] < aabbMin2[0]) ? false : overlap; - overlap = (aabbMin1[2] > aabbMax2[2] || aabbMax1[2] < aabbMin2[2]) ? false : overlap; - overlap = (aabbMin1[1] > aabbMax2[1] || aabbMax1[1] < aabbMin2[1]) ? false : overlap; - return overlap; - } -#endif //USE_BANCHLESS - -#endif - - diff --git a/extern/bullet2/LinearMath/btAlignedAllocator.cpp b/extern/bullet2/LinearMath/btAlignedAllocator.cpp deleted file mode 100644 index a3d790f8abc..00000000000 --- a/extern/bullet2/LinearMath/btAlignedAllocator.cpp +++ /dev/null @@ -1,205 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#include "btAlignedAllocator.h" - -int gNumAlignedAllocs = 0; -int gNumAlignedFree = 0; -int gTotalBytesAlignedAllocs = 0;//detect memory leaks - -static void *btAllocDefault(size_t size) -{ - return malloc(size); -} - -static void btFreeDefault(void *ptr) -{ - free(ptr); -} - -static btAllocFunc *sAllocFunc = btAllocDefault; -static btFreeFunc *sFreeFunc = btFreeDefault; - - - -#if defined (BT_HAS_ALIGNED_ALLOCATOR) -#include -static void *btAlignedAllocDefault(size_t size, int alignment) -{ - return _aligned_malloc(size, (size_t)alignment); -} - -static void btAlignedFreeDefault(void *ptr) -{ - _aligned_free(ptr); -} -#elif defined(__CELLOS_LV2__) -#include - -static inline void *btAlignedAllocDefault(size_t size, int alignment) -{ - return memalign(alignment, size); -} - -static inline void btAlignedFreeDefault(void *ptr) -{ - free(ptr); -} -#else -static inline void *btAlignedAllocDefault(size_t size, int alignment) -{ - void *ret; - char *real; - unsigned long offset; - - real = (char *)sAllocFunc(size + sizeof(void *) + (alignment-1)); - if (real) { - offset = (alignment - (unsigned long)(real + sizeof(void *))) & (alignment-1); - ret = (void *)((real + sizeof(void *)) + offset); - *((void **)(ret)-1) = (void *)(real); - } else { - ret = (void *)(real); - } - return (ret); -} - -static inline void btAlignedFreeDefault(void *ptr) -{ - void* real; - - if (ptr) { - real = *((void **)(ptr)-1); - sFreeFunc(real); - } -} -#endif - - -static btAlignedAllocFunc *sAlignedAllocFunc = btAlignedAllocDefault; -static btAlignedFreeFunc *sAlignedFreeFunc = btAlignedFreeDefault; - -void btAlignedAllocSetCustomAligned(btAlignedAllocFunc *allocFunc, btAlignedFreeFunc *freeFunc) -{ - sAlignedAllocFunc = allocFunc ? allocFunc : btAlignedAllocDefault; - sAlignedFreeFunc = freeFunc ? freeFunc : btAlignedFreeDefault; -} - -void btAlignedAllocSetCustom(btAllocFunc *allocFunc, btFreeFunc *freeFunc) -{ - sAllocFunc = allocFunc ? allocFunc : btAllocDefault; - sFreeFunc = freeFunc ? freeFunc : btFreeDefault; -} - -#ifdef BT_DEBUG_MEMORY_ALLOCATIONS -//this generic allocator provides the total allocated number of bytes -#include - -void* btAlignedAllocInternal (size_t size, int alignment,int line,char* filename) -{ - void *ret; - char *real; - unsigned long offset; - - gTotalBytesAlignedAllocs += size; - gNumAlignedAllocs++; - - - real = (char *)sAllocFunc(size + 2*sizeof(void *) + (alignment-1)); - if (real) { - offset = (alignment - (unsigned long)(real + 2*sizeof(void *))) & -(alignment-1); - ret = (void *)((real + 2*sizeof(void *)) + offset); - *((void **)(ret)-1) = (void *)(real); - *((int*)(ret)-2) = size; - - } else { - ret = (void *)(real);//?? - } - - printf("allocation#%d at address %x, from %s,line %d, size %d\n",gNumAlignedAllocs,real, filename,line,size); - - int* ptr = (int*)ret; - *ptr = 12; - return (ret); -} - -void btAlignedFreeInternal (void* ptr,int line,char* filename) -{ - - void* real; - gNumAlignedFree++; - - if (ptr) { - real = *((void **)(ptr)-1); - int size = *((int*)(ptr)-2); - gTotalBytesAlignedAllocs -= size; - - printf("free #%d at address %x, from %s,line %d, size %d\n",gNumAlignedFree,real, filename,line,size); - - sFreeFunc(real); - } else - { - printf("NULL ptr\n"); - } -} - -#else //BT_DEBUG_MEMORY_ALLOCATIONS - -void* btAlignedAllocInternal (size_t size, int alignment) -{ - gNumAlignedAllocs++; - void* ptr; -#if defined (BT_HAS_ALIGNED_ALLOCATOR) || defined(__CELLOS_LV2__) - ptr = sAlignedAllocFunc(size, alignment); -#else - char *real; - unsigned long offset; - - real = (char *)sAllocFunc(size + sizeof(void *) + (alignment-1)); - if (real) { - offset = (alignment - (unsigned long)(real + sizeof(void *))) & (alignment-1); - ptr = (void *)((real + sizeof(void *)) + offset); - *((void **)(ptr)-1) = (void *)(real); - } else { - ptr = (void *)(real); - } -#endif // defined (BT_HAS_ALIGNED_ALLOCATOR) || defined(__CELLOS_LV2__) -// printf("btAlignedAllocInternal %d, %x\n",size,ptr); - return ptr; -} - -void btAlignedFreeInternal (void* ptr) -{ - if (!ptr) - { - return; - } - - gNumAlignedFree++; -// printf("btAlignedFreeInternal %x\n",ptr); -#if defined (BT_HAS_ALIGNED_ALLOCATOR) || defined(__CELLOS_LV2__) - sAlignedFreeFunc(ptr); -#else - void* real; - - if (ptr) { - real = *((void **)(ptr)-1); - sFreeFunc(real); - } -#endif // defined (BT_HAS_ALIGNED_ALLOCATOR) || defined(__CELLOS_LV2__) -} - -#endif //BT_DEBUG_MEMORY_ALLOCATIONS - diff --git a/extern/bullet2/LinearMath/btAlignedAllocator.h b/extern/bullet2/LinearMath/btAlignedAllocator.h deleted file mode 100644 index f168f3c66c7..00000000000 --- a/extern/bullet2/LinearMath/btAlignedAllocator.h +++ /dev/null @@ -1,107 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BT_ALIGNED_ALLOCATOR -#define BT_ALIGNED_ALLOCATOR - -///we probably replace this with our own aligned memory allocator -///so we replace _aligned_malloc and _aligned_free with our own -///that is better portable and more predictable - -#include "btScalar.h" -//#define BT_DEBUG_MEMORY_ALLOCATIONS 1 -#ifdef BT_DEBUG_MEMORY_ALLOCATIONS - -#define btAlignedAlloc(a,b) \ - btAlignedAllocInternal(a,b,__LINE__,__FILE__) - -#define btAlignedFree(ptr) \ - btAlignedFreeInternal(ptr,__LINE__,__FILE__) - -void* btAlignedAllocInternal (size_t size, int alignment,int line,char* filename); - -void btAlignedFreeInternal (void* ptr,int line,char* filename); - -#else - void* btAlignedAllocInternal (size_t size, int alignment); - void btAlignedFreeInternal (void* ptr); - - #define btAlignedAlloc(size,alignment) btAlignedAllocInternal(size,alignment) - #define btAlignedFree(ptr) btAlignedFreeInternal(ptr) - -#endif -typedef int size_type; - -typedef void *(btAlignedAllocFunc)(size_t size, int alignment); -typedef void (btAlignedFreeFunc)(void *memblock); -typedef void *(btAllocFunc)(size_t size); -typedef void (btFreeFunc)(void *memblock); - -///The developer can let all Bullet memory allocations go through a custom memory allocator, using btAlignedAllocSetCustom -void btAlignedAllocSetCustom(btAllocFunc *allocFunc, btFreeFunc *freeFunc); -///If the developer has already an custom aligned allocator, then btAlignedAllocSetCustomAligned can be used. The default aligned allocator pre-allocates extra memory using the non-aligned allocator, and instruments it. -void btAlignedAllocSetCustomAligned(btAlignedAllocFunc *allocFunc, btAlignedFreeFunc *freeFunc); - - -///The btAlignedAllocator is a portable class for aligned memory allocations. -///Default implementations for unaligned and aligned allocations can be overridden by a custom allocator using btAlignedAllocSetCustom and btAlignedAllocSetCustomAligned. -template < typename T , unsigned Alignment > -class btAlignedAllocator { - - typedef btAlignedAllocator< T , Alignment > self_type; - -public: - - //just going down a list: - btAlignedAllocator() {} - /* - btAlignedAllocator( const self_type & ) {} - */ - - template < typename Other > - btAlignedAllocator( const btAlignedAllocator< Other , Alignment > & ) {} - - typedef const T* const_pointer; - typedef const T& const_reference; - typedef T* pointer; - typedef T& reference; - typedef T value_type; - - pointer address ( reference ref ) const { return &ref; } - const_pointer address ( const_reference ref ) const { return &ref; } - pointer allocate ( size_type n , const_pointer * hint = 0 ) { - (void)hint; - return reinterpret_cast< pointer >(btAlignedAlloc( sizeof(value_type) * n , Alignment )); - } - void construct ( pointer ptr , const value_type & value ) { new (ptr) value_type( value ); } - void deallocate( pointer ptr ) { - btAlignedFree( reinterpret_cast< void * >( ptr ) ); - } - void destroy ( pointer ptr ) { ptr->~value_type(); } - - - template < typename O > struct rebind { - typedef btAlignedAllocator< O , Alignment > other; - }; - template < typename O > - self_type & operator=( const btAlignedAllocator< O , Alignment > & ) { return *this; } - - friend bool operator==( const self_type & , const self_type & ) { return true; } -}; - - - -#endif //BT_ALIGNED_ALLOCATOR - diff --git a/extern/bullet2/LinearMath/btAlignedObjectArray.h b/extern/bullet2/LinearMath/btAlignedObjectArray.h deleted file mode 100644 index 257317b21f7..00000000000 --- a/extern/bullet2/LinearMath/btAlignedObjectArray.h +++ /dev/null @@ -1,464 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#ifndef BT_OBJECT_ARRAY__ -#define BT_OBJECT_ARRAY__ - -#include "btScalar.h" // has definitions like SIMD_FORCE_INLINE -#include "btAlignedAllocator.h" - -///If the platform doesn't support placement new, you can disable BT_USE_PLACEMENT_NEW -///then the btAlignedObjectArray doesn't support objects with virtual methods, and non-trivial constructors/destructors -///You can enable BT_USE_MEMCPY, then swapping elements in the array will use memcpy instead of operator= -///see discussion here: http://continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1231 and -///http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1240 - -#define BT_USE_PLACEMENT_NEW 1 -//#define BT_USE_MEMCPY 1 //disable, because it is cumbersome to find out for each platform where memcpy is defined. It can be in or or otherwise... - -#ifdef BT_USE_MEMCPY -#include -#include -#endif //BT_USE_MEMCPY - -#ifdef BT_USE_PLACEMENT_NEW -#include //for placement new -#endif //BT_USE_PLACEMENT_NEW - - -///The btAlignedObjectArray template class uses a subset of the stl::vector interface for its methods -///It is developed to replace stl::vector to avoid portability issues, including STL alignment issues to add SIMD/SSE data -template -//template -class btAlignedObjectArray -{ - btAlignedAllocator m_allocator; - - int m_size; - int m_capacity; - T* m_data; - //PCK: added this line - bool m_ownsMemory; - - protected: - SIMD_FORCE_INLINE int allocSize(int size) - { - return (size ? size*2 : 1); - } - SIMD_FORCE_INLINE void copy(int start,int end, T* dest) const - { - int i; - for (i=start;i size()) - { - reserve(newsize); - } -#ifdef BT_USE_PLACEMENT_NEW - for (int i=curSize;i - void quickSortInternal(L CompareFunc,int lo, int hi) - { - // lo is the lower index, hi is the upper index - // of the region of array a that is to be sorted - int i=lo, j=hi; - T x=m_data[(lo+hi)/2]; - - // partition - do - { - while (CompareFunc(m_data[i],x)) - i++; - while (CompareFunc(x,m_data[j])) - j--; - if (i<=j) - { - swap(i,j); - i++; j--; - } - } while (i<=j); - - // recursion - if (lo - void quickSort(L CompareFunc) - { - //don't sort 0 or 1 elements - if (size()>1) - { - quickSortInternal(CompareFunc,0,size()-1); - } - } - - - ///heap sort from http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Sort/Heap/ - template - void downHeap(T *pArr, int k, int n,L CompareFunc) - { - /* PRE: a[k+1..N] is a heap */ - /* POST: a[k..N] is a heap */ - - T temp = pArr[k - 1]; - /* k has child(s) */ - while (k <= n/2) - { - int child = 2*k; - - if ((child < n) && CompareFunc(pArr[child - 1] , pArr[child])) - { - child++; - } - /* pick larger child */ - if (CompareFunc(temp , pArr[child - 1])) - { - /* move child up */ - pArr[k - 1] = pArr[child - 1]; - k = child; - } - else - { - break; - } - } - pArr[k - 1] = temp; - } /*downHeap*/ - - void swap(int index0,int index1) - { -#ifdef BT_USE_MEMCPY - char temp[sizeof(T)]; - memcpy(temp,&m_data[index0],sizeof(T)); - memcpy(&m_data[index0],&m_data[index1],sizeof(T)); - memcpy(&m_data[index1],temp,sizeof(T)); -#else - T temp = m_data[index0]; - m_data[index0] = m_data[index1]; - m_data[index1] = temp; -#endif //BT_USE_PLACEMENT_NEW - - } - - template - void heapSort(L CompareFunc) - { - /* sort a[0..N-1], N.B. 0 to N-1 */ - int k; - int n = m_size; - for (k = n/2; k > 0; k--) - { - downHeap(m_data, k, n, CompareFunc); - } - - /* a[1..N] is now a heap */ - while ( n>=1 ) - { - swap(0,n-1); /* largest of a[0..n-1] */ - - - n = n - 1; - /* restore a[1..i-1] heap */ - downHeap(m_data, 1, n, CompareFunc); - } - } - - ///non-recursive binary search, assumes sorted array - int findBinarySearch(const T& key) const - { - int first = 0; - int last = size(); - - //assume sorted array - while (first <= last) { - int mid = (first + last) / 2; // compute mid point. - if (key > m_data[mid]) - first = mid + 1; // repeat search in top half. - else if (key < m_data[mid]) - last = mid - 1; // repeat search in bottom half. - else - return mid; // found it. return position ///// - } - return size(); // failed to find key - } - - - int findLinearSearch(const T& key) const - { - int index=size(); - int i; - - for (i=0;i - -#include "btConvexHull.h" -#include "btAlignedObjectArray.h" -#include "btMinMax.h" -#include "btVector3.h" - - - -template -void Swap(T &a,T &b) -{ - T tmp = a; - a=b; - b=tmp; -} - - -//---------------------------------- - -class int3 -{ -public: - int x,y,z; - int3(){}; - int3(int _x,int _y, int _z){x=_x;y=_y;z=_z;} - const int& operator[](int i) const {return (&x)[i];} - int& operator[](int i) {return (&x)[i];} -}; - - -//------- btPlane ---------- - - -inline btPlane PlaneFlip(const btPlane &plane){return btPlane(-plane.normal,-plane.dist);} -inline int operator==( const btPlane &a, const btPlane &b ) { return (a.normal==b.normal && a.dist==b.dist); } -inline int coplanar( const btPlane &a, const btPlane &b ) { return (a==b || a==PlaneFlip(b)); } - - -//--------- Utility Functions ------ - -btVector3 PlaneLineIntersection(const btPlane &plane, const btVector3 &p0, const btVector3 &p1); -btVector3 PlaneProject(const btPlane &plane, const btVector3 &point); - -btVector3 ThreePlaneIntersection(const btPlane &p0,const btPlane &p1, const btPlane &p2); -btVector3 ThreePlaneIntersection(const btPlane &p0,const btPlane &p1, const btPlane &p2) -{ - btVector3 N1 = p0.normal; - btVector3 N2 = p1.normal; - btVector3 N3 = p2.normal; - - btVector3 n2n3; n2n3 = N2.cross(N3); - btVector3 n3n1; n3n1 = N3.cross(N1); - btVector3 n1n2; n1n2 = N1.cross(N2); - - btScalar quotient = (N1.dot(n2n3)); - - btAssert(btFabs(quotient) > btScalar(0.000001)); - - quotient = btScalar(-1.) / quotient; - n2n3 *= p0.dist; - n3n1 *= p1.dist; - n1n2 *= p2.dist; - btVector3 potentialVertex = n2n3; - potentialVertex += n3n1; - potentialVertex += n1n2; - potentialVertex *= quotient; - - btVector3 result(potentialVertex.getX(),potentialVertex.getY(),potentialVertex.getZ()); - return result; - -} - -btScalar DistanceBetweenLines(const btVector3 &ustart, const btVector3 &udir, const btVector3 &vstart, const btVector3 &vdir, btVector3 *upoint=NULL, btVector3 *vpoint=NULL); -btVector3 TriNormal(const btVector3 &v0, const btVector3 &v1, const btVector3 &v2); -btVector3 NormalOf(const btVector3 *vert, const int n); - - -btVector3 PlaneLineIntersection(const btPlane &plane, const btVector3 &p0, const btVector3 &p1) -{ - // returns the point where the line p0-p1 intersects the plane n&d - static btVector3 dif; - dif = p1-p0; - btScalar dn= btDot(plane.normal,dif); - btScalar t = -(plane.dist+btDot(plane.normal,p0) )/dn; - return p0 + (dif*t); -} - -btVector3 PlaneProject(const btPlane &plane, const btVector3 &point) -{ - return point - plane.normal * (btDot(point,plane.normal)+plane.dist); -} - -btVector3 TriNormal(const btVector3 &v0, const btVector3 &v1, const btVector3 &v2) -{ - // return the normal of the triangle - // inscribed by v0, v1, and v2 - btVector3 cp=btCross(v1-v0,v2-v1); - btScalar m=cp.length(); - if(m==0) return btVector3(1,0,0); - return cp*(btScalar(1.0)/m); -} - - -btScalar DistanceBetweenLines(const btVector3 &ustart, const btVector3 &udir, const btVector3 &vstart, const btVector3 &vdir, btVector3 *upoint, btVector3 *vpoint) -{ - static btVector3 cp; - cp = btCross(udir,vdir).normalized(); - - btScalar distu = -btDot(cp,ustart); - btScalar distv = -btDot(cp,vstart); - btScalar dist = (btScalar)fabs(distu-distv); - if(upoint) - { - btPlane plane; - plane.normal = btCross(vdir,cp).normalized(); - plane.dist = -btDot(plane.normal,vstart); - *upoint = PlaneLineIntersection(plane,ustart,ustart+udir); - } - if(vpoint) - { - btPlane plane; - plane.normal = btCross(udir,cp).normalized(); - plane.dist = -btDot(plane.normal,ustart); - *vpoint = PlaneLineIntersection(plane,vstart,vstart+vdir); - } - return dist; -} - - - - - - - -#define COPLANAR (0) -#define UNDER (1) -#define OVER (2) -#define SPLIT (OVER|UNDER) -#define PAPERWIDTH (btScalar(0.001)) - -btScalar planetestepsilon = PAPERWIDTH; - - - -typedef ConvexH::HalfEdge HalfEdge; - -ConvexH::ConvexH(int vertices_size,int edges_size,int facets_size) -{ - vertices.resize(vertices_size); - edges.resize(edges_size); - facets.resize(facets_size); -} - - -int PlaneTest(const btPlane &p, const btVector3 &v); -int PlaneTest(const btPlane &p, const btVector3 &v) { - btScalar a = btDot(v,p.normal)+p.dist; - int flag = (a>planetestepsilon)?OVER:((a<-planetestepsilon)?UNDER:COPLANAR); - return flag; -} - -int SplitTest(ConvexH &convex,const btPlane &plane); -int SplitTest(ConvexH &convex,const btPlane &plane) { - int flag=0; - for(int i=0;i -int maxdirfiltered(const T *p,int count,const T &dir,btAlignedObjectArray &allow) -{ - btAssert(count); - int m=-1; - for(int i=0;ibtDot(p[m],dir)) - m=i; - } - btAssert(m!=-1); - return m; -} - -btVector3 orth(const btVector3 &v); -btVector3 orth(const btVector3 &v) -{ - btVector3 a=btCross(v,btVector3(0,0,1)); - btVector3 b=btCross(v,btVector3(0,1,0)); - if (a.length() > b.length()) - { - return a.normalized(); - } else { - return b.normalized(); - } -} - - -template -int maxdirsterid(const T *p,int count,const T &dir,btAlignedObjectArray &allow) -{ - int m=-1; - while(m==-1) - { - m = maxdirfiltered(p,count,dir,allow); - if(allow[m]==3) return m; - T u = orth(dir); - T v = btCross(u,dir); - int ma=-1; - for(btScalar x = btScalar(0.0) ; x<= btScalar(360.0) ; x+= btScalar(45.0)) - { - btScalar s = btSin(SIMD_RADS_PER_DEG*(x)); - btScalar c = btCos(SIMD_RADS_PER_DEG*(x)); - int mb = maxdirfiltered(p,count,dir+(u*s+v*c)*btScalar(0.025),allow); - if(ma==m && mb==m) - { - allow[m]=3; - return m; - } - if(ma!=-1 && ma!=mb) // Yuck - this is really ugly - { - int mc = ma; - for(btScalar xx = x-btScalar(40.0) ; xx <= x ; xx+= btScalar(5.0)) - { - btScalar s = btSin(SIMD_RADS_PER_DEG*(xx)); - btScalar c = btCos(SIMD_RADS_PER_DEG*(xx)); - int md = maxdirfiltered(p,count,dir+(u*s+v*c)*btScalar(0.025),allow); - if(mc==m && md==m) - { - allow[m]=3; - return m; - } - mc=md; - } - } - ma=mb; - } - allow[m]=0; - m=-1; - } - btAssert(0); - return m; -} - - - - -int operator ==(const int3 &a,const int3 &b); -int operator ==(const int3 &a,const int3 &b) -{ - for(int i=0;i<3;i++) - { - if(a[i]!=b[i]) return 0; - } - return 1; -} - - -int above(btVector3* vertices,const int3& t, const btVector3 &p, btScalar epsilon); -int above(btVector3* vertices,const int3& t, const btVector3 &p, btScalar epsilon) -{ - btVector3 n=TriNormal(vertices[t[0]],vertices[t[1]],vertices[t[2]]); - return (btDot(n,p-vertices[t[0]]) > epsilon); // EPSILON??? -} -int hasedge(const int3 &t, int a,int b); -int hasedge(const int3 &t, int a,int b) -{ - for(int i=0;i<3;i++) - { - int i1= (i+1)%3; - if(t[i]==a && t[i1]==b) return 1; - } - return 0; -} -int hasvert(const int3 &t, int v); -int hasvert(const int3 &t, int v) -{ - return (t[0]==v || t[1]==v || t[2]==v) ; -} -int shareedge(const int3 &a,const int3 &b); -int shareedge(const int3 &a,const int3 &b) -{ - int i; - for(i=0;i<3;i++) - { - int i1= (i+1)%3; - if(hasedge(a,b[i1],b[i])) return 1; - } - return 0; -} - -class btHullTriangle; - - - -class btHullTriangle : public int3 -{ -public: - int3 n; - int id; - int vmax; - btScalar rise; - btHullTriangle(int a,int b,int c):int3(a,b,c),n(-1,-1,-1) - { - vmax=-1; - rise = btScalar(0.0); - } - ~btHullTriangle() - { - } - int &neib(int a,int b); -}; - - -int &btHullTriangle::neib(int a,int b) -{ - static int er=-1; - int i; - for(i=0;i<3;i++) - { - int i1=(i+1)%3; - int i2=(i+2)%3; - if((*this)[i]==a && (*this)[i1]==b) return n[i2]; - if((*this)[i]==b && (*this)[i1]==a) return n[i2]; - } - btAssert(0); - return er; -} -void HullLibrary::b2bfix(btHullTriangle* s,btHullTriangle*t) -{ - int i; - for(i=0;i<3;i++) - { - int i1=(i+1)%3; - int i2=(i+2)%3; - int a = (*s)[i1]; - int b = (*s)[i2]; - btAssert(m_tris[s->neib(a,b)]->neib(b,a) == s->id); - btAssert(m_tris[t->neib(a,b)]->neib(b,a) == t->id); - m_tris[s->neib(a,b)]->neib(b,a) = t->neib(b,a); - m_tris[t->neib(b,a)]->neib(a,b) = s->neib(a,b); - } -} - -void HullLibrary::removeb2b(btHullTriangle* s,btHullTriangle*t) -{ - b2bfix(s,t); - deAllocateTriangle(s); - - deAllocateTriangle(t); -} - -void HullLibrary::checkit(btHullTriangle *t) -{ - (void)t; - - int i; - btAssert(m_tris[t->id]==t); - for(i=0;i<3;i++) - { - int i1=(i+1)%3; - int i2=(i+2)%3; - int a = (*t)[i1]; - int b = (*t)[i2]; - - // release compile fix - (void)i1; - (void)i2; - (void)a; - (void)b; - - btAssert(a!=b); - btAssert( m_tris[t->n[i]]->neib(b,a) == t->id); - } -} - -btHullTriangle* HullLibrary::allocateTriangle(int a,int b,int c) -{ - void* mem = btAlignedAlloc(sizeof(btHullTriangle),16); - btHullTriangle* tr = new (mem)btHullTriangle(a,b,c); - tr->id = m_tris.size(); - m_tris.push_back(tr); - - return tr; -} - -void HullLibrary::deAllocateTriangle(btHullTriangle* tri) -{ - btAssert(m_tris[tri->id]==tri); - m_tris[tri->id]=NULL; - tri->~btHullTriangle(); - btAlignedFree(tri); -} - - -void HullLibrary::extrude(btHullTriangle *t0,int v) -{ - int3 t= *t0; - int n = m_tris.size(); - btHullTriangle* ta = allocateTriangle(v,t[1],t[2]); - ta->n = int3(t0->n[0],n+1,n+2); - m_tris[t0->n[0]]->neib(t[1],t[2]) = n+0; - btHullTriangle* tb = allocateTriangle(v,t[2],t[0]); - tb->n = int3(t0->n[1],n+2,n+0); - m_tris[t0->n[1]]->neib(t[2],t[0]) = n+1; - btHullTriangle* tc = allocateTriangle(v,t[0],t[1]); - tc->n = int3(t0->n[2],n+0,n+1); - m_tris[t0->n[2]]->neib(t[0],t[1]) = n+2; - checkit(ta); - checkit(tb); - checkit(tc); - if(hasvert(*m_tris[ta->n[0]],v)) removeb2b(ta,m_tris[ta->n[0]]); - if(hasvert(*m_tris[tb->n[0]],v)) removeb2b(tb,m_tris[tb->n[0]]); - if(hasvert(*m_tris[tc->n[0]],v)) removeb2b(tc,m_tris[tc->n[0]]); - deAllocateTriangle(t0); - -} - -btHullTriangle* HullLibrary::extrudable(btScalar epsilon) -{ - int i; - btHullTriangle *t=NULL; - for(i=0;iriserise)) - { - t = m_tris[i]; - } - } - return (t->rise >epsilon)?t:NULL ; -} - - - - -int4 HullLibrary::FindSimplex(btVector3 *verts,int verts_count,btAlignedObjectArray &allow) -{ - btVector3 basis[3]; - basis[0] = btVector3( btScalar(0.01), btScalar(0.02), btScalar(1.0) ); - int p0 = maxdirsterid(verts,verts_count, basis[0],allow); - int p1 = maxdirsterid(verts,verts_count,-basis[0],allow); - basis[0] = verts[p0]-verts[p1]; - if(p0==p1 || basis[0]==btVector3(0,0,0)) - return int4(-1,-1,-1,-1); - basis[1] = btCross(btVector3( btScalar(1),btScalar(0.02), btScalar(0)),basis[0]); - basis[2] = btCross(btVector3(btScalar(-0.02), btScalar(1), btScalar(0)),basis[0]); - if (basis[1].length() > basis[2].length()) - { - basis[1].normalize(); - } else { - basis[1] = basis[2]; - basis[1].normalize (); - } - int p2 = maxdirsterid(verts,verts_count,basis[1],allow); - if(p2 == p0 || p2 == p1) - { - p2 = maxdirsterid(verts,verts_count,-basis[1],allow); - } - if(p2 == p0 || p2 == p1) - return int4(-1,-1,-1,-1); - basis[1] = verts[p2] - verts[p0]; - basis[2] = btCross(basis[1],basis[0]).normalized(); - int p3 = maxdirsterid(verts,verts_count,basis[2],allow); - if(p3==p0||p3==p1||p3==p2) p3 = maxdirsterid(verts,verts_count,-basis[2],allow); - if(p3==p0||p3==p1||p3==p2) - return int4(-1,-1,-1,-1); - btAssert(!(p0==p1||p0==p2||p0==p3||p1==p2||p1==p3||p2==p3)); - if(btDot(verts[p3]-verts[p0],btCross(verts[p1]-verts[p0],verts[p2]-verts[p0])) <0) {Swap(p2,p3);} - return int4(p0,p1,p2,p3); -} - -int HullLibrary::calchullgen(btVector3 *verts,int verts_count, int vlimit) -{ - if(verts_count <4) return 0; - if(vlimit==0) vlimit=1000000000; - int j; - btVector3 bmin(*verts),bmax(*verts); - btAlignedObjectArray isextreme; - isextreme.reserve(verts_count); - btAlignedObjectArray allow; - allow.reserve(verts_count); - - for(j=0;jn=int3(2,3,1); - btHullTriangle *t1 = allocateTriangle(p[3],p[2],p[0]); t1->n=int3(3,2,0); - btHullTriangle *t2 = allocateTriangle(p[0],p[1],p[3]); t2->n=int3(0,1,3); - btHullTriangle *t3 = allocateTriangle(p[1],p[0],p[2]); t3->n=int3(1,0,2); - isextreme[p[0]]=isextreme[p[1]]=isextreme[p[2]]=isextreme[p[3]]=1; - checkit(t0);checkit(t1);checkit(t2);checkit(t3); - - for(j=0;jvmax<0); - btVector3 n=TriNormal(verts[(*t)[0]],verts[(*t)[1]],verts[(*t)[2]]); - t->vmax = maxdirsterid(verts,verts_count,n,allow); - t->rise = btDot(n,verts[t->vmax]-verts[(*t)[0]]); - } - btHullTriangle *te; - vlimit-=4; - while(vlimit >0 && ((te=extrudable(epsilon)) != 0)) - { - int3 ti=*te; - int v=te->vmax; - btAssert(v != -1); - btAssert(!isextreme[v]); // wtf we've already done this vertex - isextreme[v]=1; - //if(v==p0 || v==p1 || v==p2 || v==p3) continue; // done these already - j=m_tris.size(); - while(j--) { - if(!m_tris[j]) continue; - int3 t=*m_tris[j]; - if(above(verts,t,verts[v],btScalar(0.01)*epsilon)) - { - extrude(m_tris[j],v); - } - } - // now check for those degenerate cases where we have a flipped triangle or a really skinny triangle - j=m_tris.size(); - while(j--) - { - if(!m_tris[j]) continue; - if(!hasvert(*m_tris[j],v)) break; - int3 nt=*m_tris[j]; - if(above(verts,nt,center,btScalar(0.01)*epsilon) || btCross(verts[nt[1]]-verts[nt[0]],verts[nt[2]]-verts[nt[1]]).length()< epsilon*epsilon*btScalar(0.1) ) - { - btHullTriangle *nb = m_tris[m_tris[j]->n[0]]; - btAssert(nb);btAssert(!hasvert(*nb,v));btAssert(nb->idvmax>=0) break; - btVector3 n=TriNormal(verts[(*t)[0]],verts[(*t)[1]],verts[(*t)[2]]); - t->vmax = maxdirsterid(verts,verts_count,n,allow); - if(isextreme[t->vmax]) - { - t->vmax=-1; // already done that vertex - algorithm needs to be able to terminate. - } - else - { - t->rise = btDot(n,verts[t->vmax]-verts[(*t)[0]]); - } - } - vlimit --; - } - return 1; -} - -int HullLibrary::calchull(btVector3 *verts,int verts_count, TUIntArray& tris_out, int &tris_count,int vlimit) -{ - int rc=calchullgen(verts,verts_count, vlimit) ; - if(!rc) return 0; - btAlignedObjectArray ts; - int i; - - for(i=0;i(ts[i]); - } - m_tris.resize(0); - - return 1; -} - - - - - -bool HullLibrary::ComputeHull(unsigned int vcount,const btVector3 *vertices,PHullResult &result,unsigned int vlimit) -{ - - int tris_count; - int ret = calchull( (btVector3 *) vertices, (int) vcount, result.m_Indices, tris_count, static_cast(vlimit) ); - if(!ret) return false; - result.mIndexCount = (unsigned int) (tris_count*3); - result.mFaceCount = (unsigned int) tris_count; - result.mVertices = (btVector3*) vertices; - result.mVcount = (unsigned int) vcount; - return true; - -} - - -void ReleaseHull(PHullResult &result); -void ReleaseHull(PHullResult &result) -{ - if ( result.m_Indices.size() ) - { - result.m_Indices.clear(); - } - - result.mVcount = 0; - result.mIndexCount = 0; - result.mVertices = 0; -} - - -//********************************************************************* -//********************************************************************* -//******** HullLib header -//********************************************************************* -//********************************************************************* - -//********************************************************************* -//********************************************************************* -//******** HullLib implementation -//********************************************************************* -//********************************************************************* - -HullError HullLibrary::CreateConvexHull(const HullDesc &desc, // describes the input request - HullResult &result) // contains the resulst -{ - HullError ret = QE_FAIL; - - - PHullResult hr; - - unsigned int vcount = desc.mVcount; - if ( vcount < 8 ) vcount = 8; - - btAlignedObjectArray vertexSource; - vertexSource.resize(static_cast(vcount)); - - btVector3 scale; - - unsigned int ovcount; - - bool ok = CleanupVertices(desc.mVcount,desc.mVertices, desc.mVertexStride, ovcount, &vertexSource[0], desc.mNormalEpsilon, scale ); // normalize point cloud, remove duplicates! - - if ( ok ) - { - - -// if ( 1 ) // scale vertices back to their original size. - { - for (unsigned int i=0; i(i)]; - v[0]*=scale[0]; - v[1]*=scale[1]; - v[2]*=scale[2]; - } - } - - ok = ComputeHull(ovcount,&vertexSource[0],hr,desc.mMaxVertices); - - if ( ok ) - { - - // re-index triangle mesh so it refers to only used vertices, rebuild a new vertex table. - btAlignedObjectArray vertexScratch; - vertexScratch.resize(static_cast(hr.mVcount)); - - BringOutYourDead(hr.mVertices,hr.mVcount, &vertexScratch[0], ovcount, &hr.m_Indices[0], hr.mIndexCount ); - - ret = QE_OK; - - if ( desc.HasHullFlag(QF_TRIANGLES) ) // if he wants the results as triangle! - { - result.mPolygons = false; - result.mNumOutputVertices = ovcount; - result.m_OutputVertices.resize(static_cast(ovcount)); - result.mNumFaces = hr.mFaceCount; - result.mNumIndices = hr.mIndexCount; - - result.m_Indices.resize(static_cast(hr.mIndexCount)); - - memcpy(&result.m_OutputVertices[0], &vertexScratch[0], sizeof(btVector3)*ovcount ); - - if ( desc.HasHullFlag(QF_REVERSE_ORDER) ) - { - - const unsigned int *source = &hr.m_Indices[0]; - unsigned int *dest = &result.m_Indices[0]; - - for (unsigned int i=0; i(ovcount)); - result.mNumFaces = hr.mFaceCount; - result.mNumIndices = hr.mIndexCount+hr.mFaceCount; - result.m_Indices.resize(static_cast(result.mNumIndices)); - memcpy(&result.m_OutputVertices[0], &vertexScratch[0], sizeof(btVector3)*ovcount ); - -// if ( 1 ) - { - const unsigned int *source = &hr.m_Indices[0]; - unsigned int *dest = &result.m_Indices[0]; - for (unsigned int i=0; i bmax[j] ) bmax[j] = p[j]; - } - } - } - - btScalar dx = bmax[0] - bmin[0]; - btScalar dy = bmax[1] - bmin[1]; - btScalar dz = bmax[2] - bmin[2]; - - btVector3 center; - - center[0] = dx*btScalar(0.5) + bmin[0]; - center[1] = dy*btScalar(0.5) + bmin[1]; - center[2] = dz*btScalar(0.5) + bmin[2]; - - if ( dx < EPSILON || dy < EPSILON || dz < EPSILON || svcount < 3 ) - { - - btScalar len = FLT_MAX; - - if ( dx > EPSILON && dx < len ) len = dx; - if ( dy > EPSILON && dy < len ) len = dy; - if ( dz > EPSILON && dz < len ) len = dz; - - if ( len == FLT_MAX ) - { - dx = dy = dz = btScalar(0.01); // one centimeter - } - else - { - if ( dx < EPSILON ) dx = len * btScalar(0.05); // 1/5th the shortest non-zero edge. - if ( dy < EPSILON ) dy = len * btScalar(0.05); - if ( dz < EPSILON ) dz = len * btScalar(0.05); - } - - btScalar x1 = center[0] - dx; - btScalar x2 = center[0] + dx; - - btScalar y1 = center[1] - dy; - btScalar y2 = center[1] + dy; - - btScalar z1 = center[2] - dz; - btScalar z2 = center[2] + dz; - - addPoint(vcount,vertices,x1,y1,z1); - addPoint(vcount,vertices,x2,y1,z1); - addPoint(vcount,vertices,x2,y2,z1); - addPoint(vcount,vertices,x1,y2,z1); - addPoint(vcount,vertices,x1,y1,z2); - addPoint(vcount,vertices,x2,y1,z2); - addPoint(vcount,vertices,x2,y2,z2); - addPoint(vcount,vertices,x1,y2,z2); - - return true; // return cube - - - } - else - { - if ( scale ) - { - scale[0] = dx; - scale[1] = dy; - scale[2] = dz; - - recip[0] = 1 / dx; - recip[1] = 1 / dy; - recip[2] = 1 / dz; - - center[0]*=recip[0]; - center[1]*=recip[1]; - center[2]*=recip[2]; - - } - - } - - - - vtx = (const char *) svertices; - - for (unsigned int i=0; igetX(); - btScalar py = p->getY(); - btScalar pz = p->getZ(); - - if ( scale ) - { - px = px*recip[0]; // normalize - py = py*recip[1]; // normalize - pz = pz*recip[2]; // normalize - } - -// if ( 1 ) - { - unsigned int j; - - for (j=0; j dist2 ) - { - v[0] = px; - v[1] = py; - v[2] = pz; - - } - - break; - } - } - - if ( j == vcount ) - { - btVector3& dest = vertices[vcount]; - dest[0] = px; - dest[1] = py; - dest[2] = pz; - vcount++; - } - m_vertexIndexMapping.push_back(j); - } - } - - // ok..now make sure we didn't prune so many vertices it is now invalid. -// if ( 1 ) - { - btScalar bmin[3] = { FLT_MAX, FLT_MAX, FLT_MAX }; - btScalar bmax[3] = { -FLT_MAX, -FLT_MAX, -FLT_MAX }; - - for (unsigned int i=0; i bmax[j] ) bmax[j] = p[j]; - } - } - - btScalar dx = bmax[0] - bmin[0]; - btScalar dy = bmax[1] - bmin[1]; - btScalar dz = bmax[2] - bmin[2]; - - if ( dx < EPSILON || dy < EPSILON || dz < EPSILON || vcount < 3) - { - btScalar cx = dx*btScalar(0.5) + bmin[0]; - btScalar cy = dy*btScalar(0.5) + bmin[1]; - btScalar cz = dz*btScalar(0.5) + bmin[2]; - - btScalar len = FLT_MAX; - - if ( dx >= EPSILON && dx < len ) len = dx; - if ( dy >= EPSILON && dy < len ) len = dy; - if ( dz >= EPSILON && dz < len ) len = dz; - - if ( len == FLT_MAX ) - { - dx = dy = dz = btScalar(0.01); // one centimeter - } - else - { - if ( dx < EPSILON ) dx = len * btScalar(0.05); // 1/5th the shortest non-zero edge. - if ( dy < EPSILON ) dy = len * btScalar(0.05); - if ( dz < EPSILON ) dz = len * btScalar(0.05); - } - - btScalar x1 = cx - dx; - btScalar x2 = cx + dx; - - btScalar y1 = cy - dy; - btScalar y2 = cy + dy; - - btScalar z1 = cz - dz; - btScalar z2 = cz + dz; - - vcount = 0; // add box - - addPoint(vcount,vertices,x1,y1,z1); - addPoint(vcount,vertices,x2,y1,z1); - addPoint(vcount,vertices,x2,y2,z1); - addPoint(vcount,vertices,x1,y2,z1); - addPoint(vcount,vertices,x1,y1,z2); - addPoint(vcount,vertices,x2,y1,z2); - addPoint(vcount,vertices,x2,y2,z2); - addPoint(vcount,vertices,x1,y2,z2); - - return true; - } - } - - return true; -} - -void HullLibrary::BringOutYourDead(const btVector3* verts,unsigned int vcount, btVector3* overts,unsigned int &ocount,unsigned int *indices,unsigned indexcount) -{ - btAlignedObjectArraytmpIndices; - tmpIndices.resize(m_vertexIndexMapping.size()); - int i; - - for (i=0;i(vcount)); - memset(&usedIndices[0],0,sizeof(unsigned int)*vcount); - - ocount = 0; - - for (i=0; i= 0 && v < vcount ); - - if ( usedIndices[static_cast(v)] ) // if already remapped - { - indices[i] = usedIndices[static_cast(v)]-1; // index to new array - } - else - { - - indices[i] = ocount; // new index mapping - - overts[ocount][0] = verts[v][0]; // copy old vert to new vert array - overts[ocount][1] = verts[v][1]; - overts[ocount][2] = verts[v][2]; - - for (int k=0;k=0 && ocount <= vcount ); - - usedIndices[static_cast(v)] = ocount; // assign new index remapping - - - } - } - - -} diff --git a/extern/bullet2/LinearMath/btConvexHull.h b/extern/bullet2/LinearMath/btConvexHull.h deleted file mode 100644 index a23fa4d550f..00000000000 --- a/extern/bullet2/LinearMath/btConvexHull.h +++ /dev/null @@ -1,241 +0,0 @@ - -/* -Stan Melax Convex Hull Computation -Copyright (c) 2008 Stan Melax http://www.melax.com/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -///includes modifications/improvements by John Ratcliff, see BringOutYourDead below. - -#ifndef CD_HULL_H -#define CD_HULL_H - -#include "btVector3.h" -#include "btAlignedObjectArray.h" - -typedef btAlignedObjectArray TUIntArray; - -class HullResult -{ -public: - HullResult(void) - { - mPolygons = true; - mNumOutputVertices = 0; - mNumFaces = 0; - mNumIndices = 0; - } - bool mPolygons; // true if indices represents polygons, false indices are triangles - unsigned int mNumOutputVertices; // number of vertices in the output hull - btAlignedObjectArray m_OutputVertices; // array of vertices - unsigned int mNumFaces; // the number of faces produced - unsigned int mNumIndices; // the total number of indices - btAlignedObjectArray m_Indices; // pointer to indices. - -// If triangles, then indices are array indexes into the vertex list. -// If polygons, indices are in the form (number of points in face) (p1, p2, p3, ..) etc.. -}; - -enum HullFlag -{ - QF_TRIANGLES = (1<<0), // report results as triangles, not polygons. - QF_REVERSE_ORDER = (1<<1), // reverse order of the triangle indices. - QF_DEFAULT = QF_TRIANGLES -}; - - -class HullDesc -{ -public: - HullDesc(void) - { - mFlags = QF_DEFAULT; - mVcount = 0; - mVertices = 0; - mVertexStride = sizeof(btVector3); - mNormalEpsilon = 0.001f; - mMaxVertices = 4096; // maximum number of points to be considered for a convex hull. - mMaxFaces = 4096; - }; - - HullDesc(HullFlag flag, - unsigned int vcount, - const btVector3 *vertices, - unsigned int stride = sizeof(btVector3)) - { - mFlags = flag; - mVcount = vcount; - mVertices = vertices; - mVertexStride = stride; - mNormalEpsilon = btScalar(0.001); - mMaxVertices = 4096; - } - - bool HasHullFlag(HullFlag flag) const - { - if ( mFlags & flag ) return true; - return false; - } - - void SetHullFlag(HullFlag flag) - { - mFlags|=flag; - } - - void ClearHullFlag(HullFlag flag) - { - mFlags&=~flag; - } - - unsigned int mFlags; // flags to use when generating the convex hull. - unsigned int mVcount; // number of vertices in the input point cloud - const btVector3 *mVertices; // the array of vertices. - unsigned int mVertexStride; // the stride of each vertex, in bytes. - btScalar mNormalEpsilon; // the epsilon for removing duplicates. This is a normalized value, if normalized bit is on. - unsigned int mMaxVertices; // maximum number of vertices to be considered for the hull! - unsigned int mMaxFaces; -}; - -enum HullError -{ - QE_OK, // success! - QE_FAIL // failed. -}; - -class btPlane -{ - public: - btVector3 normal; - btScalar dist; // distance below origin - the D from plane equasion Ax+By+Cz+D=0 - btPlane(const btVector3 &n,btScalar d):normal(n),dist(d){} - btPlane():normal(),dist(0){} - -}; - - - -class ConvexH -{ - public: - class HalfEdge - { - public: - short ea; // the other half of the edge (index into edges list) - unsigned char v; // the vertex at the start of this edge (index into vertices list) - unsigned char p; // the facet on which this edge lies (index into facets list) - HalfEdge(){} - HalfEdge(short _ea,unsigned char _v, unsigned char _p):ea(_ea),v(_v),p(_p){} - }; - ConvexH() - { - } - ~ConvexH() - { - } - btAlignedObjectArray vertices; - btAlignedObjectArray edges; - btAlignedObjectArray facets; - ConvexH(int vertices_size,int edges_size,int facets_size); -}; - - -class int4 -{ -public: - int x,y,z,w; - int4(){}; - int4(int _x,int _y, int _z,int _w){x=_x;y=_y;z=_z;w=_w;} - const int& operator[](int i) const {return (&x)[i];} - int& operator[](int i) {return (&x)[i];} -}; - -class PHullResult -{ -public: - - PHullResult(void) - { - mVcount = 0; - mIndexCount = 0; - mFaceCount = 0; - mVertices = 0; - } - - unsigned int mVcount; - unsigned int mIndexCount; - unsigned int mFaceCount; - btVector3* mVertices; - TUIntArray m_Indices; -}; - - - -///The HullLibrary class can create a convex hull from a collection of vertices, using the ComputeHull method. -///The btShapeHull class uses this HullLibrary to create a approximate convex mesh given a general (non-polyhedral) convex shape. -class HullLibrary -{ - - btAlignedObjectArray m_tris; - -public: - - btAlignedObjectArray m_vertexIndexMapping; - - - HullError CreateConvexHull(const HullDesc& desc, // describes the input request - HullResult& result); // contains the resulst - HullError ReleaseResult(HullResult &result); // release memory allocated for this result, we are done with it. - -private: - - bool ComputeHull(unsigned int vcount,const btVector3 *vertices,PHullResult &result,unsigned int vlimit); - - class btHullTriangle* allocateTriangle(int a,int b,int c); - void deAllocateTriangle(btHullTriangle*); - void b2bfix(btHullTriangle* s,btHullTriangle*t); - - void removeb2b(btHullTriangle* s,btHullTriangle*t); - - void checkit(btHullTriangle *t); - - btHullTriangle* extrudable(btScalar epsilon); - - int calchull(btVector3 *verts,int verts_count, TUIntArray& tris_out, int &tris_count,int vlimit); - - int calchullgen(btVector3 *verts,int verts_count, int vlimit); - - int4 FindSimplex(btVector3 *verts,int verts_count,btAlignedObjectArray &allow); - - class ConvexH* ConvexHCrop(ConvexH& convex,const btPlane& slice); - - void extrude(class btHullTriangle* t0,int v); - - ConvexH* test_cube(); - - //BringOutYourDead (John Ratcliff): When you create a convex hull you hand it a large input set of vertices forming a 'point cloud'. - //After the hull is generated it give you back a set of polygon faces which index the *original* point cloud. - //The thing is, often times, there are many 'dead vertices' in the point cloud that are on longer referenced by the hull. - //The routine 'BringOutYourDead' find only the referenced vertices, copies them to an new buffer, and re-indexes the hull so that it is a minimal representation. - void BringOutYourDead(const btVector3* verts,unsigned int vcount, btVector3* overts,unsigned int &ocount,unsigned int* indices,unsigned indexcount); - - bool CleanupVertices(unsigned int svcount, - const btVector3* svertices, - unsigned int stride, - unsigned int &vcount, // output number of vertices - btVector3* vertices, // location to store the results. - btScalar normalepsilon, - btVector3& scale); -}; - - -#endif - diff --git a/extern/bullet2/LinearMath/btDefaultMotionState.h b/extern/bullet2/LinearMath/btDefaultMotionState.h deleted file mode 100644 index 7858a10d219..00000000000 --- a/extern/bullet2/LinearMath/btDefaultMotionState.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef DEFAULT_MOTION_STATE_H -#define DEFAULT_MOTION_STATE_H - -#include "btMotionState.h" - -///The btDefaultMotionState provides a common implementation to synchronize world transforms with offsets. -struct btDefaultMotionState : public btMotionState -{ - btTransform m_graphicsWorldTrans; - btTransform m_centerOfMassOffset; - btTransform m_startWorldTrans; - void* m_userPointer; - - btDefaultMotionState(const btTransform& startTrans = btTransform::getIdentity(),const btTransform& centerOfMassOffset = btTransform::getIdentity()) - : m_graphicsWorldTrans(startTrans), - m_centerOfMassOffset(centerOfMassOffset), - m_startWorldTrans(startTrans), - m_userPointer(0) - - { - } - - ///synchronizes world transform from user to physics - virtual void getWorldTransform(btTransform& centerOfMassWorldTrans ) const - { - centerOfMassWorldTrans = m_centerOfMassOffset.inverse() * m_graphicsWorldTrans ; - } - - ///synchronizes world transform from physics to user - ///Bullet only calls the update of worldtransform for active objects - virtual void setWorldTransform(const btTransform& centerOfMassWorldTrans) - { - m_graphicsWorldTrans = centerOfMassWorldTrans * m_centerOfMassOffset ; - } - - - -}; - -#endif //DEFAULT_MOTION_STATE_H diff --git a/extern/bullet2/LinearMath/btGeometryUtil.cpp b/extern/bullet2/LinearMath/btGeometryUtil.cpp deleted file mode 100644 index 5ac230f712f..00000000000 --- a/extern/bullet2/LinearMath/btGeometryUtil.cpp +++ /dev/null @@ -1,185 +0,0 @@ -/* -Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#include "btGeometryUtil.h" - - -/* - Make sure this dummy function never changes so that it - can be used by probes that are checking whether the - library is actually installed. -*/ -extern "C" -{ - void btBulletMathProbe (); - - void btBulletMathProbe () {} -} - - -bool btGeometryUtil::isPointInsidePlanes(const btAlignedObjectArray& planeEquations, const btVector3& point, btScalar margin) -{ - int numbrushes = planeEquations.size(); - for (int i=0;ibtScalar(0.)) - { - return false; - } - } - return true; - -} - - -bool btGeometryUtil::areVerticesBehindPlane(const btVector3& planeNormal, const btAlignedObjectArray& vertices, btScalar margin) -{ - int numvertices = vertices.size(); - for (int i=0;ibtScalar(0.)) - { - return false; - } - } - return true; -} - -bool notExist(const btVector3& planeEquation,const btAlignedObjectArray& planeEquations); - -bool notExist(const btVector3& planeEquation,const btAlignedObjectArray& planeEquations) -{ - int numbrushes = planeEquations.size(); - for (int i=0;i btScalar(0.999)) - { - return false; - } - } - return true; -} - -void btGeometryUtil::getPlaneEquationsFromVertices(btAlignedObjectArray& vertices, btAlignedObjectArray& planeEquationsOut ) -{ - const int numvertices = vertices.size(); - // brute force: - for (int i=0;i btScalar(0.0001)) - { - planeEquation.normalize(); - if (notExist(planeEquation,planeEquationsOut)) - { - planeEquation[3] = -planeEquation.dot(N1); - - //check if inside, and replace supportingVertexOut if needed - if (areVerticesBehindPlane(planeEquation,vertices,btScalar(0.01))) - { - planeEquationsOut.push_back(planeEquation); - } - } - } - normalSign = btScalar(-1.); - } - - } - } - } - -} - -void btGeometryUtil::getVerticesFromPlaneEquations(const btAlignedObjectArray& planeEquations , btAlignedObjectArray& verticesOut ) -{ - const int numbrushes = planeEquations.size(); - // brute force: - for (int i=0;i btScalar(0.0001) ) && - ( n3n1.length2() > btScalar(0.0001) ) && - ( n1n2.length2() > btScalar(0.0001) ) ) - { - //point P out of 3 plane equations: - - // d1 ( N2 * N3 ) + d2 ( N3 * N1 ) + d3 ( N1 * N2 ) - //P = ------------------------------------------------------------------------- - // N1 . ( N2 * N3 ) - - - btScalar quotient = (N1.dot(n2n3)); - if (btFabs(quotient) > btScalar(0.000001)) - { - quotient = btScalar(-1.) / quotient; - n2n3 *= N1[3]; - n3n1 *= N2[3]; - n1n2 *= N3[3]; - btVector3 potentialVertex = n2n3; - potentialVertex += n3n1; - potentialVertex += n1n2; - potentialVertex *= quotient; - - //check if inside, and replace supportingVertexOut if needed - if (isPointInsidePlanes(planeEquations,potentialVertex,btScalar(0.01))) - { - verticesOut.push_back(potentialVertex); - } - } - } - } - } - } -} - diff --git a/extern/bullet2/LinearMath/btGeometryUtil.h b/extern/bullet2/LinearMath/btGeometryUtil.h deleted file mode 100644 index a4b13b45609..00000000000 --- a/extern/bullet2/LinearMath/btGeometryUtil.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#ifndef BT_GEOMETRY_UTIL_H -#define BT_GEOMETRY_UTIL_H - -#include "btVector3.h" -#include "btAlignedObjectArray.h" - -///The btGeometryUtil helper class provides a few methods to convert between plane equations and vertices. -class btGeometryUtil -{ - public: - - - static void getPlaneEquationsFromVertices(btAlignedObjectArray& vertices, btAlignedObjectArray& planeEquationsOut ); - - static void getVerticesFromPlaneEquations(const btAlignedObjectArray& planeEquations , btAlignedObjectArray& verticesOut ); - - static bool isInside(const btAlignedObjectArray& vertices, const btVector3& planeNormal, btScalar margin); - - static bool isPointInsidePlanes(const btAlignedObjectArray& planeEquations, const btVector3& point, btScalar margin); - - static bool areVerticesBehindPlane(const btVector3& planeNormal, const btAlignedObjectArray& vertices, btScalar margin); - -}; - - -#endif //BT_GEOMETRY_UTIL_H - diff --git a/extern/bullet2/LinearMath/btHashMap.h b/extern/bullet2/LinearMath/btHashMap.h deleted file mode 100644 index 7d66db56949..00000000000 --- a/extern/bullet2/LinearMath/btHashMap.h +++ /dev/null @@ -1,434 +0,0 @@ -#ifndef BT_HASH_MAP_H -#define BT_HASH_MAP_H - -#include "btAlignedObjectArray.h" - -///very basic hashable string implementation, compatible with btHashMap -struct btHashString -{ - const char* m_string; - unsigned int m_hash; - - SIMD_FORCE_INLINE unsigned int getHash()const - { - return m_hash; - } - - btHashString(const char* name) - :m_string(name) - { - /* magic numbers from http://www.isthe.com/chongo/tech/comp/fnv/ */ - static const unsigned int InitialFNV = 2166136261u; - static const unsigned int FNVMultiple = 16777619u; - - /* Fowler / Noll / Vo (FNV) Hash */ - unsigned int hash = InitialFNV; - - for(int i = 0; m_string[i]; i++) - { - hash = hash ^ (m_string[i]); /* xor the low 8 bits */ - hash = hash * FNVMultiple; /* multiply by the magic number */ - } - m_hash = hash; - } - - int portableStringCompare(const char* src, const char* dst) const - { - int ret = 0 ; - - while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst) - ++src, ++dst; - - if ( ret < 0 ) - ret = -1 ; - else if ( ret > 0 ) - ret = 1 ; - - return( ret ); - } - - bool equals(const btHashString& other) const - { - return (m_string == other.m_string) || - (0==portableStringCompare(m_string,other.m_string)); - - } - -}; - -const int BT_HASH_NULL=0xffffffff; - - -class btHashInt -{ - int m_uid; -public: - btHashInt(int uid) :m_uid(uid) - { - } - - int getUid1() const - { - return m_uid; - } - - void setUid1(int uid) - { - m_uid = uid; - } - - bool equals(const btHashInt& other) const - { - return getUid1() == other.getUid1(); - } - //to our success - SIMD_FORCE_INLINE unsigned int getHash()const - { - int key = m_uid; - // Thomas Wang's hash - key += ~(key << 15); key ^= (key >> 10); key += (key << 3); key ^= (key >> 6); key += ~(key << 11); key ^= (key >> 16); - return key; - } -}; - - - -class btHashPtr -{ - - union - { - const void* m_pointer; - int m_hashValues[2]; - }; - -public: - - btHashPtr(const void* ptr) - :m_pointer(ptr) - { - } - - const void* getPointer() const - { - return m_pointer; - } - - bool equals(const btHashPtr& other) const - { - return getPointer() == other.getPointer(); - } - - //to our success - SIMD_FORCE_INLINE unsigned int getHash()const - { - const bool VOID_IS_8 = ((sizeof(void*)==8)); - - int key = VOID_IS_8? m_hashValues[0]+m_hashValues[1] : m_hashValues[0]; - - // Thomas Wang's hash - key += ~(key << 15); key ^= (key >> 10); key += (key << 3); key ^= (key >> 6); key += ~(key << 11); key ^= (key >> 16); - return key; - } - - -}; - - -template -class btHashKeyPtr -{ - int m_uid; -public: - - btHashKeyPtr(int uid) :m_uid(uid) - { - } - - int getUid1() const - { - return m_uid; - } - - bool equals(const btHashKeyPtr& other) const - { - return getUid1() == other.getUid1(); - } - - //to our success - SIMD_FORCE_INLINE unsigned int getHash()const - { - int key = m_uid; - // Thomas Wang's hash - key += ~(key << 15); key ^= (key >> 10); key += (key << 3); key ^= (key >> 6); key += ~(key << 11); key ^= (key >> 16); - return key; - } - - -}; - - -template -class btHashKey -{ - int m_uid; -public: - - btHashKey(int uid) :m_uid(uid) - { - } - - int getUid1() const - { - return m_uid; - } - - bool equals(const btHashKey& other) const - { - return getUid1() == other.getUid1(); - } - //to our success - SIMD_FORCE_INLINE unsigned int getHash()const - { - int key = m_uid; - // Thomas Wang's hash - key += ~(key << 15); key ^= (key >> 10); key += (key << 3); key ^= (key >> 6); key += ~(key << 11); key ^= (key >> 16); - return key; - } -}; - - -///The btHashMap template class implements a generic and lightweight hashmap. -///A basic sample of how to use btHashMap is located in Demos\BasicDemo\main.cpp -template -class btHashMap -{ - -protected: - btAlignedObjectArray m_hashTable; - btAlignedObjectArray m_next; - - btAlignedObjectArray m_valueArray; - btAlignedObjectArray m_keyArray; - - void growTables(const Key& key) - { - int newCapacity = m_valueArray.capacity(); - - if (m_hashTable.size() < newCapacity) - { - //grow hashtable and next table - int curHashtableSize = m_hashTable.size(); - - m_hashTable.resize(newCapacity); - m_next.resize(newCapacity); - - int i; - - for (i= 0; i < newCapacity; ++i) - { - m_hashTable[i] = BT_HASH_NULL; - } - for (i = 0; i < newCapacity; ++i) - { - m_next[i] = BT_HASH_NULL; - } - - for(i=0;i= (unsigned int)m_hashTable.size()) - { - return BT_HASH_NULL; - } - - int index = m_hashTable[hash]; - while ((index != BT_HASH_NULL) && key.equals(m_keyArray[index]) == false) - { - index = m_next[index]; - } - return index; - } - - void clear() - { - m_hashTable.clear(); - m_next.clear(); - m_valueArray.clear(); - m_keyArray.clear(); - } - -}; - -#endif //BT_HASH_MAP_H diff --git a/extern/bullet2/LinearMath/btIDebugDraw.h b/extern/bullet2/LinearMath/btIDebugDraw.h deleted file mode 100644 index 1ca303182c1..00000000000 --- a/extern/bullet2/LinearMath/btIDebugDraw.h +++ /dev/null @@ -1,316 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#ifndef IDEBUG_DRAW__H -#define IDEBUG_DRAW__H - -#include "btVector3.h" -#include "btTransform.h" - - -///The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations. -///Typical use case: create a debug drawer object, and assign it to a btCollisionWorld or btDynamicsWorld using setDebugDrawer and call debugDrawWorld. -///A class that implements the btIDebugDraw interface has to implement the drawLine method at a minimum. -///For color arguments the X,Y,Z components refer to Red, Green and Blue each in the range [0..1] -class btIDebugDraw -{ - public: - - enum DebugDrawModes - { - DBG_NoDebug=0, - DBG_DrawWireframe = 1, - DBG_DrawAabb=2, - DBG_DrawFeaturesText=4, - DBG_DrawContactPoints=8, - DBG_NoDeactivation=16, - DBG_NoHelpText = 32, - DBG_DrawText=64, - DBG_ProfileTimings = 128, - DBG_EnableSatComparison = 256, - DBG_DisableBulletLCP = 512, - DBG_EnableCCD = 1024, - DBG_DrawConstraints = (1 << 11), - DBG_DrawConstraintLimits = (1 << 12), - DBG_FastWireframe = (1<<13), - DBG_MAX_DEBUG_DRAW_MODE - }; - - virtual ~btIDebugDraw() {}; - - virtual void drawLine(const btVector3& from,const btVector3& to,const btVector3& color)=0; - - virtual void drawLine(const btVector3& from,const btVector3& to, const btVector3& fromColor, const btVector3& toColor) - { - (void) toColor; - drawLine (from, to, fromColor); - } - - void drawSphere(btScalar radius, const btTransform& transform, const btVector3& color) - { - btVector3 start = transform.getOrigin(); - - const btVector3 xoffs = transform.getBasis() * btVector3(radius,0,0); - const btVector3 yoffs = transform.getBasis() * btVector3(0,radius,0); - const btVector3 zoffs = transform.getBasis() * btVector3(0,0,radius); - - // XY - drawLine(start-xoffs, start+yoffs, color); - drawLine(start+yoffs, start+xoffs, color); - drawLine(start+xoffs, start-yoffs, color); - drawLine(start-yoffs, start-xoffs, color); - - // XZ - drawLine(start-xoffs, start+zoffs, color); - drawLine(start+zoffs, start+xoffs, color); - drawLine(start+xoffs, start-zoffs, color); - drawLine(start-zoffs, start-xoffs, color); - - // YZ - drawLine(start-yoffs, start+zoffs, color); - drawLine(start+zoffs, start+yoffs, color); - drawLine(start+yoffs, start-zoffs, color); - drawLine(start-zoffs, start-yoffs, color); - } - - virtual void drawSphere (const btVector3& p, btScalar radius, const btVector3& color) - { - btTransform tr; - tr.setIdentity(); - tr.setOrigin(p); - drawSphere(radius,tr,color); - } - - virtual void drawTriangle(const btVector3& v0,const btVector3& v1,const btVector3& v2,const btVector3& /*n0*/,const btVector3& /*n1*/,const btVector3& /*n2*/,const btVector3& color, btScalar alpha) - { - drawTriangle(v0,v1,v2,color,alpha); - } - virtual void drawTriangle(const btVector3& v0,const btVector3& v1,const btVector3& v2,const btVector3& color, btScalar /*alpha*/) - { - drawLine(v0,v1,color); - drawLine(v1,v2,color); - drawLine(v2,v0,color); - } - - virtual void drawContactPoint(const btVector3& PointOnB,const btVector3& normalOnB,btScalar distance,int lifeTime,const btVector3& color)=0; - - virtual void reportErrorWarning(const char* warningString) = 0; - - virtual void draw3dText(const btVector3& location,const char* textString) = 0; - - virtual void setDebugMode(int debugMode) =0; - - virtual int getDebugMode() const = 0; - - virtual void drawAabb(const btVector3& from,const btVector3& to,const btVector3& color) - { - - btVector3 halfExtents = (to-from)* 0.5f; - btVector3 center = (to+from) *0.5f; - int i,j; - - btVector3 edgecoord(1.f,1.f,1.f),pa,pb; - for (i=0;i<4;i++) - { - for (j=0;j<3;j++) - { - pa = btVector3(edgecoord[0]*halfExtents[0], edgecoord[1]*halfExtents[1], - edgecoord[2]*halfExtents[2]); - pa+=center; - - int othercoord = j%3; - edgecoord[othercoord]*=-1.f; - pb = btVector3(edgecoord[0]*halfExtents[0], edgecoord[1]*halfExtents[1], - edgecoord[2]*halfExtents[2]); - pb+=center; - - drawLine(pa,pb,color); - } - edgecoord = btVector3(-1.f,-1.f,-1.f); - if (i<3) - edgecoord[i]*=-1.f; - } - } - virtual void drawTransform(const btTransform& transform, btScalar orthoLen) - { - btVector3 start = transform.getOrigin(); - drawLine(start, start+transform.getBasis() * btVector3(orthoLen, 0, 0), btVector3(0.7f,0,0)); - drawLine(start, start+transform.getBasis() * btVector3(0, orthoLen, 0), btVector3(0,0.7f,0)); - drawLine(start, start+transform.getBasis() * btVector3(0, 0, orthoLen), btVector3(0,0,0.7f)); - } - - virtual void drawArc(const btVector3& center, const btVector3& normal, const btVector3& axis, btScalar radiusA, btScalar radiusB, btScalar minAngle, btScalar maxAngle, - const btVector3& color, bool drawSect, btScalar stepDegrees = btScalar(10.f)) - { - const btVector3& vx = axis; - btVector3 vy = normal.cross(axis); - btScalar step = stepDegrees * SIMD_RADS_PER_DEG; - int nSteps = (int)((maxAngle - minAngle) / step); - if(!nSteps) nSteps = 1; - btVector3 prev = center + radiusA * vx * btCos(minAngle) + radiusB * vy * btSin(minAngle); - if(drawSect) - { - drawLine(center, prev, color); - } - for(int i = 1; i <= nSteps; i++) - { - btScalar angle = minAngle + (maxAngle - minAngle) * btScalar(i) / btScalar(nSteps); - btVector3 next = center + radiusA * vx * btCos(angle) + radiusB * vy * btSin(angle); - drawLine(prev, next, color); - prev = next; - } - if(drawSect) - { - drawLine(center, prev, color); - } - } - virtual void drawSpherePatch(const btVector3& center, const btVector3& up, const btVector3& axis, btScalar radius, - btScalar minTh, btScalar maxTh, btScalar minPs, btScalar maxPs, const btVector3& color, btScalar stepDegrees = btScalar(10.f)) - { - btVector3 vA[74]; - btVector3 vB[74]; - btVector3 *pvA = vA, *pvB = vB, *pT; - btVector3 npole = center + up * radius; - btVector3 spole = center - up * radius; - btVector3 arcStart; - btScalar step = stepDegrees * SIMD_RADS_PER_DEG; - const btVector3& kv = up; - const btVector3& iv = axis; - btVector3 jv = kv.cross(iv); - bool drawN = false; - bool drawS = false; - if(minTh <= -SIMD_HALF_PI) - { - minTh = -SIMD_HALF_PI + step; - drawN = true; - } - if(maxTh >= SIMD_HALF_PI) - { - maxTh = SIMD_HALF_PI - step; - drawS = true; - } - if(minTh > maxTh) - { - minTh = -SIMD_HALF_PI + step; - maxTh = SIMD_HALF_PI - step; - drawN = drawS = true; - } - int n_hor = (int)((maxTh - minTh) / step) + 1; - if(n_hor < 2) n_hor = 2; - btScalar step_h = (maxTh - minTh) / btScalar(n_hor - 1); - bool isClosed = false; - if(minPs > maxPs) - { - minPs = -SIMD_PI + step; - maxPs = SIMD_PI; - isClosed = true; - } - else if((maxPs - minPs) >= SIMD_PI * btScalar(2.f)) - { - isClosed = true; - } - else - { - isClosed = false; - } - int n_vert = (int)((maxPs - minPs) / step) + 1; - if(n_vert < 2) n_vert = 2; - btScalar step_v = (maxPs - minPs) / btScalar(n_vert - 1); - for(int i = 0; i < n_hor; i++) - { - btScalar th = minTh + btScalar(i) * step_h; - btScalar sth = radius * btSin(th); - btScalar cth = radius * btCos(th); - for(int j = 0; j < n_vert; j++) - { - btScalar psi = minPs + btScalar(j) * step_v; - btScalar sps = btSin(psi); - btScalar cps = btCos(psi); - pvB[j] = center + cth * cps * iv + cth * sps * jv + sth * kv; - if(i) - { - drawLine(pvA[j], pvB[j], color); - } - else if(drawS) - { - drawLine(spole, pvB[j], color); - } - if(j) - { - drawLine(pvB[j-1], pvB[j], color); - } - else - { - arcStart = pvB[j]; - } - if((i == (n_hor - 1)) && drawN) - { - drawLine(npole, pvB[j], color); - } - if(isClosed) - { - if(j == (n_vert-1)) - { - drawLine(arcStart, pvB[j], color); - } - } - else - { - if(((!i) || (i == (n_hor-1))) && ((!j) || (j == (n_vert-1)))) - { - drawLine(center, pvB[j], color); - } - } - } - pT = pvA; pvA = pvB; pvB = pT; - } - } - - virtual void drawBox(const btVector3& bbMin, const btVector3& bbMax, const btVector3& color) - { - drawLine(btVector3(bbMin[0], bbMin[1], bbMin[2]), btVector3(bbMax[0], bbMin[1], bbMin[2]), color); - drawLine(btVector3(bbMax[0], bbMin[1], bbMin[2]), btVector3(bbMax[0], bbMax[1], bbMin[2]), color); - drawLine(btVector3(bbMax[0], bbMax[1], bbMin[2]), btVector3(bbMin[0], bbMax[1], bbMin[2]), color); - drawLine(btVector3(bbMin[0], bbMax[1], bbMin[2]), btVector3(bbMin[0], bbMin[1], bbMin[2]), color); - drawLine(btVector3(bbMin[0], bbMin[1], bbMin[2]), btVector3(bbMin[0], bbMin[1], bbMax[2]), color); - drawLine(btVector3(bbMax[0], bbMin[1], bbMin[2]), btVector3(bbMax[0], bbMin[1], bbMax[2]), color); - drawLine(btVector3(bbMax[0], bbMax[1], bbMin[2]), btVector3(bbMax[0], bbMax[1], bbMax[2]), color); - drawLine(btVector3(bbMin[0], bbMax[1], bbMin[2]), btVector3(bbMin[0], bbMax[1], bbMax[2]), color); - drawLine(btVector3(bbMin[0], bbMin[1], bbMax[2]), btVector3(bbMax[0], bbMin[1], bbMax[2]), color); - drawLine(btVector3(bbMax[0], bbMin[1], bbMax[2]), btVector3(bbMax[0], bbMax[1], bbMax[2]), color); - drawLine(btVector3(bbMax[0], bbMax[1], bbMax[2]), btVector3(bbMin[0], bbMax[1], bbMax[2]), color); - drawLine(btVector3(bbMin[0], bbMax[1], bbMax[2]), btVector3(bbMin[0], bbMin[1], bbMax[2]), color); - } - virtual void drawBox(const btVector3& bbMin, const btVector3& bbMax, const btTransform& trans, const btVector3& color) - { - drawLine(trans * btVector3(bbMin[0], bbMin[1], bbMin[2]), trans * btVector3(bbMax[0], bbMin[1], bbMin[2]), color); - drawLine(trans * btVector3(bbMax[0], bbMin[1], bbMin[2]), trans * btVector3(bbMax[0], bbMax[1], bbMin[2]), color); - drawLine(trans * btVector3(bbMax[0], bbMax[1], bbMin[2]), trans * btVector3(bbMin[0], bbMax[1], bbMin[2]), color); - drawLine(trans * btVector3(bbMin[0], bbMax[1], bbMin[2]), trans * btVector3(bbMin[0], bbMin[1], bbMin[2]), color); - drawLine(trans * btVector3(bbMin[0], bbMin[1], bbMin[2]), trans * btVector3(bbMin[0], bbMin[1], bbMax[2]), color); - drawLine(trans * btVector3(bbMax[0], bbMin[1], bbMin[2]), trans * btVector3(bbMax[0], bbMin[1], bbMax[2]), color); - drawLine(trans * btVector3(bbMax[0], bbMax[1], bbMin[2]), trans * btVector3(bbMax[0], bbMax[1], bbMax[2]), color); - drawLine(trans * btVector3(bbMin[0], bbMax[1], bbMin[2]), trans * btVector3(bbMin[0], bbMax[1], bbMax[2]), color); - drawLine(trans * btVector3(bbMin[0], bbMin[1], bbMax[2]), trans * btVector3(bbMax[0], bbMin[1], bbMax[2]), color); - drawLine(trans * btVector3(bbMax[0], bbMin[1], bbMax[2]), trans * btVector3(bbMax[0], bbMax[1], bbMax[2]), color); - drawLine(trans * btVector3(bbMax[0], bbMax[1], bbMax[2]), trans * btVector3(bbMin[0], bbMax[1], bbMax[2]), color); - drawLine(trans * btVector3(bbMin[0], bbMax[1], bbMax[2]), trans * btVector3(bbMin[0], bbMin[1], bbMax[2]), color); - } -}; - - -#endif //IDEBUG_DRAW__H - diff --git a/extern/bullet2/LinearMath/btList.h b/extern/bullet2/LinearMath/btList.h deleted file mode 100644 index c87b47faf2b..00000000000 --- a/extern/bullet2/LinearMath/btList.h +++ /dev/null @@ -1,73 +0,0 @@ -/* -Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#ifndef GEN_LIST_H -#define GEN_LIST_H - -class btGEN_Link { -public: - btGEN_Link() : m_next(0), m_prev(0) {} - btGEN_Link(btGEN_Link *next, btGEN_Link *prev) : m_next(next), m_prev(prev) {} - - btGEN_Link *getNext() const { return m_next; } - btGEN_Link *getPrev() const { return m_prev; } - - bool isHead() const { return m_prev == 0; } - bool isTail() const { return m_next == 0; } - - void insertBefore(btGEN_Link *link) { - m_next = link; - m_prev = link->m_prev; - m_next->m_prev = this; - m_prev->m_next = this; - } - - void insertAfter(btGEN_Link *link) { - m_next = link->m_next; - m_prev = link; - m_next->m_prev = this; - m_prev->m_next = this; - } - - void remove() { - m_next->m_prev = m_prev; - m_prev->m_next = m_next; - } - -private: - btGEN_Link *m_next; - btGEN_Link *m_prev; -}; - -class btGEN_List { -public: - btGEN_List() : m_head(&m_tail, 0), m_tail(0, &m_head) {} - - btGEN_Link *getHead() const { return m_head.getNext(); } - btGEN_Link *getTail() const { return m_tail.getPrev(); } - - void addHead(btGEN_Link *link) { link->insertAfter(&m_head); } - void addTail(btGEN_Link *link) { link->insertBefore(&m_tail); } - -private: - btGEN_Link m_head; - btGEN_Link m_tail; -}; - -#endif - - - diff --git a/extern/bullet2/LinearMath/btMatrix3x3.h b/extern/bullet2/LinearMath/btMatrix3x3.h deleted file mode 100644 index 3c37f6e4f1b..00000000000 --- a/extern/bullet2/LinearMath/btMatrix3x3.h +++ /dev/null @@ -1,688 +0,0 @@ -/* -Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#ifndef BT_MATRIX3x3_H -#define BT_MATRIX3x3_H - -#include "btVector3.h" -#include "btQuaternion.h" - -#ifdef BT_USE_DOUBLE_PRECISION -#define btMatrix3x3Data btMatrix3x3DoubleData -#else -#define btMatrix3x3Data btMatrix3x3FloatData -#endif //BT_USE_DOUBLE_PRECISION - - -/**@brief The btMatrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with btQuaternion, btTransform and btVector3. -* Make sure to only include a pure orthogonal matrix without scaling. */ -class btMatrix3x3 { - - ///Data storage for the matrix, each vector is a row of the matrix - btVector3 m_el[3]; - -public: - /** @brief No initializaion constructor */ - btMatrix3x3 () {} - - // explicit btMatrix3x3(const btScalar *m) { setFromOpenGLSubMatrix(m); } - - /**@brief Constructor from Quaternion */ - explicit btMatrix3x3(const btQuaternion& q) { setRotation(q); } - /* - template - Matrix3x3(const btScalar& yaw, const btScalar& pitch, const btScalar& roll) - { - setEulerYPR(yaw, pitch, roll); - } - */ - /** @brief Constructor with row major formatting */ - btMatrix3x3(const btScalar& xx, const btScalar& xy, const btScalar& xz, - const btScalar& yx, const btScalar& yy, const btScalar& yz, - const btScalar& zx, const btScalar& zy, const btScalar& zz) - { - setValue(xx, xy, xz, - yx, yy, yz, - zx, zy, zz); - } - /** @brief Copy constructor */ - SIMD_FORCE_INLINE btMatrix3x3 (const btMatrix3x3& other) - { - m_el[0] = other.m_el[0]; - m_el[1] = other.m_el[1]; - m_el[2] = other.m_el[2]; - } - /** @brief Assignment Operator */ - SIMD_FORCE_INLINE btMatrix3x3& operator=(const btMatrix3x3& other) - { - m_el[0] = other.m_el[0]; - m_el[1] = other.m_el[1]; - m_el[2] = other.m_el[2]; - return *this; - } - - /** @brief Get a column of the matrix as a vector - * @param i Column number 0 indexed */ - SIMD_FORCE_INLINE btVector3 getColumn(int i) const - { - return btVector3(m_el[0][i],m_el[1][i],m_el[2][i]); - } - - - /** @brief Get a row of the matrix as a vector - * @param i Row number 0 indexed */ - SIMD_FORCE_INLINE const btVector3& getRow(int i) const - { - btFullAssert(0 <= i && i < 3); - return m_el[i]; - } - - /** @brief Get a mutable reference to a row of the matrix as a vector - * @param i Row number 0 indexed */ - SIMD_FORCE_INLINE btVector3& operator[](int i) - { - btFullAssert(0 <= i && i < 3); - return m_el[i]; - } - - /** @brief Get a const reference to a row of the matrix as a vector - * @param i Row number 0 indexed */ - SIMD_FORCE_INLINE const btVector3& operator[](int i) const - { - btFullAssert(0 <= i && i < 3); - return m_el[i]; - } - - /** @brief Multiply by the target matrix on the right - * @param m Rotation matrix to be applied - * Equivilant to this = this * m */ - btMatrix3x3& operator*=(const btMatrix3x3& m); - - /** @brief Set from a carray of btScalars - * @param m A pointer to the beginning of an array of 9 btScalars */ - void setFromOpenGLSubMatrix(const btScalar *m) - { - m_el[0].setValue(m[0],m[4],m[8]); - m_el[1].setValue(m[1],m[5],m[9]); - m_el[2].setValue(m[2],m[6],m[10]); - - } - /** @brief Set the values of the matrix explicitly (row major) - * @param xx Top left - * @param xy Top Middle - * @param xz Top Right - * @param yx Middle Left - * @param yy Middle Middle - * @param yz Middle Right - * @param zx Bottom Left - * @param zy Bottom Middle - * @param zz Bottom Right*/ - void setValue(const btScalar& xx, const btScalar& xy, const btScalar& xz, - const btScalar& yx, const btScalar& yy, const btScalar& yz, - const btScalar& zx, const btScalar& zy, const btScalar& zz) - { - m_el[0].setValue(xx,xy,xz); - m_el[1].setValue(yx,yy,yz); - m_el[2].setValue(zx,zy,zz); - } - - /** @brief Set the matrix from a quaternion - * @param q The Quaternion to match */ - void setRotation(const btQuaternion& q) - { - btScalar d = q.length2(); - btFullAssert(d != btScalar(0.0)); - btScalar s = btScalar(2.0) / d; - btScalar xs = q.x() * s, ys = q.y() * s, zs = q.z() * s; - btScalar wx = q.w() * xs, wy = q.w() * ys, wz = q.w() * zs; - btScalar xx = q.x() * xs, xy = q.x() * ys, xz = q.x() * zs; - btScalar yy = q.y() * ys, yz = q.y() * zs, zz = q.z() * zs; - setValue(btScalar(1.0) - (yy + zz), xy - wz, xz + wy, - xy + wz, btScalar(1.0) - (xx + zz), yz - wx, - xz - wy, yz + wx, btScalar(1.0) - (xx + yy)); - } - - - /** @brief Set the matrix from euler angles using YPR around YXZ respectively - * @param yaw Yaw about Y axis - * @param pitch Pitch about X axis - * @param roll Roll about Z axis - */ - void setEulerYPR(const btScalar& yaw, const btScalar& pitch, const btScalar& roll) - { - setEulerZYX(roll, pitch, yaw); - } - - /** @brief Set the matrix from euler angles YPR around ZYX axes - * @param eulerX Roll about X axis - * @param eulerY Pitch around Y axis - * @param eulerZ Yaw aboud Z axis - * - * These angles are used to produce a rotation matrix. The euler - * angles are applied in ZYX order. I.e a vector is first rotated - * about X then Y and then Z - **/ - void setEulerZYX(btScalar eulerX,btScalar eulerY,btScalar eulerZ) { - ///@todo proposed to reverse this since it's labeled zyx but takes arguments xyz and it will match all other parts of the code - btScalar ci ( btCos(eulerX)); - btScalar cj ( btCos(eulerY)); - btScalar ch ( btCos(eulerZ)); - btScalar si ( btSin(eulerX)); - btScalar sj ( btSin(eulerY)); - btScalar sh ( btSin(eulerZ)); - btScalar cc = ci * ch; - btScalar cs = ci * sh; - btScalar sc = si * ch; - btScalar ss = si * sh; - - setValue(cj * ch, sj * sc - cs, sj * cc + ss, - cj * sh, sj * ss + cc, sj * cs - sc, - -sj, cj * si, cj * ci); - } - - /**@brief Set the matrix to the identity */ - void setIdentity() - { - setValue(btScalar(1.0), btScalar(0.0), btScalar(0.0), - btScalar(0.0), btScalar(1.0), btScalar(0.0), - btScalar(0.0), btScalar(0.0), btScalar(1.0)); - } - - static const btMatrix3x3& getIdentity() - { - static const btMatrix3x3 identityMatrix(btScalar(1.0), btScalar(0.0), btScalar(0.0), - btScalar(0.0), btScalar(1.0), btScalar(0.0), - btScalar(0.0), btScalar(0.0), btScalar(1.0)); - return identityMatrix; - } - - /**@brief Fill the values of the matrix into a 9 element array - * @param m The array to be filled */ - void getOpenGLSubMatrix(btScalar *m) const - { - m[0] = btScalar(m_el[0].x()); - m[1] = btScalar(m_el[1].x()); - m[2] = btScalar(m_el[2].x()); - m[3] = btScalar(0.0); - m[4] = btScalar(m_el[0].y()); - m[5] = btScalar(m_el[1].y()); - m[6] = btScalar(m_el[2].y()); - m[7] = btScalar(0.0); - m[8] = btScalar(m_el[0].z()); - m[9] = btScalar(m_el[1].z()); - m[10] = btScalar(m_el[2].z()); - m[11] = btScalar(0.0); - } - - /**@brief Get the matrix represented as a quaternion - * @param q The quaternion which will be set */ - void getRotation(btQuaternion& q) const - { - btScalar trace = m_el[0].x() + m_el[1].y() + m_el[2].z(); - btScalar temp[4]; - - if (trace > btScalar(0.0)) - { - btScalar s = btSqrt(trace + btScalar(1.0)); - temp[3]=(s * btScalar(0.5)); - s = btScalar(0.5) / s; - - temp[0]=((m_el[2].y() - m_el[1].z()) * s); - temp[1]=((m_el[0].z() - m_el[2].x()) * s); - temp[2]=((m_el[1].x() - m_el[0].y()) * s); - } - else - { - int i = m_el[0].x() < m_el[1].y() ? - (m_el[1].y() < m_el[2].z() ? 2 : 1) : - (m_el[0].x() < m_el[2].z() ? 2 : 0); - int j = (i + 1) % 3; - int k = (i + 2) % 3; - - btScalar s = btSqrt(m_el[i][i] - m_el[j][j] - m_el[k][k] + btScalar(1.0)); - temp[i] = s * btScalar(0.5); - s = btScalar(0.5) / s; - - temp[3] = (m_el[k][j] - m_el[j][k]) * s; - temp[j] = (m_el[j][i] + m_el[i][j]) * s; - temp[k] = (m_el[k][i] + m_el[i][k]) * s; - } - q.setValue(temp[0],temp[1],temp[2],temp[3]); - } - - /**@brief Get the matrix represented as euler angles around YXZ, roundtrip with setEulerYPR - * @param yaw Yaw around Y axis - * @param pitch Pitch around X axis - * @param roll around Z axis */ - void getEulerYPR(btScalar& yaw, btScalar& pitch, btScalar& roll) const - { - - // first use the normal calculus - yaw = btScalar(btAtan2(m_el[1].x(), m_el[0].x())); - pitch = btScalar(btAsin(-m_el[2].x())); - roll = btScalar(btAtan2(m_el[2].y(), m_el[2].z())); - - // on pitch = +/-HalfPI - if (btFabs(pitch)==SIMD_HALF_PI) - { - if (yaw>0) - yaw-=SIMD_PI; - else - yaw+=SIMD_PI; - - if (roll>0) - roll-=SIMD_PI; - else - roll+=SIMD_PI; - } - }; - - - /**@brief Get the matrix represented as euler angles around ZYX - * @param yaw Yaw around X axis - * @param pitch Pitch around Y axis - * @param roll around X axis - * @param solution_number Which solution of two possible solutions ( 1 or 2) are possible values*/ - void getEulerZYX(btScalar& yaw, btScalar& pitch, btScalar& roll, unsigned int solution_number = 1) const - { - struct Euler - { - btScalar yaw; - btScalar pitch; - btScalar roll; - }; - - Euler euler_out; - Euler euler_out2; //second solution - //get the pointer to the raw data - - // Check that pitch is not at a singularity - if (btFabs(m_el[2].x()) >= 1) - { - euler_out.yaw = 0; - euler_out2.yaw = 0; - - // From difference of angles formula - btScalar delta = btAtan2(m_el[0].x(),m_el[0].z()); - if (m_el[2].x() > 0) //gimbal locked up - { - euler_out.pitch = SIMD_PI / btScalar(2.0); - euler_out2.pitch = SIMD_PI / btScalar(2.0); - euler_out.roll = euler_out.pitch + delta; - euler_out2.roll = euler_out.pitch + delta; - } - else // gimbal locked down - { - euler_out.pitch = -SIMD_PI / btScalar(2.0); - euler_out2.pitch = -SIMD_PI / btScalar(2.0); - euler_out.roll = -euler_out.pitch + delta; - euler_out2.roll = -euler_out.pitch + delta; - } - } - else - { - euler_out.pitch = - btAsin(m_el[2].x()); - euler_out2.pitch = SIMD_PI - euler_out.pitch; - - euler_out.roll = btAtan2(m_el[2].y()/btCos(euler_out.pitch), - m_el[2].z()/btCos(euler_out.pitch)); - euler_out2.roll = btAtan2(m_el[2].y()/btCos(euler_out2.pitch), - m_el[2].z()/btCos(euler_out2.pitch)); - - euler_out.yaw = btAtan2(m_el[1].x()/btCos(euler_out.pitch), - m_el[0].x()/btCos(euler_out.pitch)); - euler_out2.yaw = btAtan2(m_el[1].x()/btCos(euler_out2.pitch), - m_el[0].x()/btCos(euler_out2.pitch)); - } - - if (solution_number == 1) - { - yaw = euler_out.yaw; - pitch = euler_out.pitch; - roll = euler_out.roll; - } - else - { - yaw = euler_out2.yaw; - pitch = euler_out2.pitch; - roll = euler_out2.roll; - } - } - - /**@brief Create a scaled copy of the matrix - * @param s Scaling vector The elements of the vector will scale each column */ - - btMatrix3x3 scaled(const btVector3& s) const - { - return btMatrix3x3(m_el[0].x() * s.x(), m_el[0].y() * s.y(), m_el[0].z() * s.z(), - m_el[1].x() * s.x(), m_el[1].y() * s.y(), m_el[1].z() * s.z(), - m_el[2].x() * s.x(), m_el[2].y() * s.y(), m_el[2].z() * s.z()); - } - - /**@brief Return the determinant of the matrix */ - btScalar determinant() const; - /**@brief Return the adjoint of the matrix */ - btMatrix3x3 adjoint() const; - /**@brief Return the matrix with all values non negative */ - btMatrix3x3 absolute() const; - /**@brief Return the transpose of the matrix */ - btMatrix3x3 transpose() const; - /**@brief Return the inverse of the matrix */ - btMatrix3x3 inverse() const; - - btMatrix3x3 transposeTimes(const btMatrix3x3& m) const; - btMatrix3x3 timesTranspose(const btMatrix3x3& m) const; - - SIMD_FORCE_INLINE btScalar tdotx(const btVector3& v) const - { - return m_el[0].x() * v.x() + m_el[1].x() * v.y() + m_el[2].x() * v.z(); - } - SIMD_FORCE_INLINE btScalar tdoty(const btVector3& v) const - { - return m_el[0].y() * v.x() + m_el[1].y() * v.y() + m_el[2].y() * v.z(); - } - SIMD_FORCE_INLINE btScalar tdotz(const btVector3& v) const - { - return m_el[0].z() * v.x() + m_el[1].z() * v.y() + m_el[2].z() * v.z(); - } - - - /**@brief diagonalizes this matrix by the Jacobi method. - * @param rot stores the rotation from the coordinate system in which the matrix is diagonal to the original - * coordinate system, i.e., old_this = rot * new_this * rot^T. - * @param threshold See iteration - * @param iteration The iteration stops when all off-diagonal elements are less than the threshold multiplied - * by the sum of the absolute values of the diagonal, or when maxSteps have been executed. - * - * Note that this matrix is assumed to be symmetric. - */ - void diagonalize(btMatrix3x3& rot, btScalar threshold, int maxSteps) - { - rot.setIdentity(); - for (int step = maxSteps; step > 0; step--) - { - // find off-diagonal element [p][q] with largest magnitude - int p = 0; - int q = 1; - int r = 2; - btScalar max = btFabs(m_el[0][1]); - btScalar v = btFabs(m_el[0][2]); - if (v > max) - { - q = 2; - r = 1; - max = v; - } - v = btFabs(m_el[1][2]); - if (v > max) - { - p = 1; - q = 2; - r = 0; - max = v; - } - - btScalar t = threshold * (btFabs(m_el[0][0]) + btFabs(m_el[1][1]) + btFabs(m_el[2][2])); - if (max <= t) - { - if (max <= SIMD_EPSILON * t) - { - return; - } - step = 1; - } - - // compute Jacobi rotation J which leads to a zero for element [p][q] - btScalar mpq = m_el[p][q]; - btScalar theta = (m_el[q][q] - m_el[p][p]) / (2 * mpq); - btScalar theta2 = theta * theta; - btScalar cos; - btScalar sin; - if (theta2 * theta2 < btScalar(10 / SIMD_EPSILON)) - { - t = (theta >= 0) ? 1 / (theta + btSqrt(1 + theta2)) - : 1 / (theta - btSqrt(1 + theta2)); - cos = 1 / btSqrt(1 + t * t); - sin = cos * t; - } - else - { - // approximation for large theta-value, i.e., a nearly diagonal matrix - t = 1 / (theta * (2 + btScalar(0.5) / theta2)); - cos = 1 - btScalar(0.5) * t * t; - sin = cos * t; - } - - // apply rotation to matrix (this = J^T * this * J) - m_el[p][q] = m_el[q][p] = 0; - m_el[p][p] -= t * mpq; - m_el[q][q] += t * mpq; - btScalar mrp = m_el[r][p]; - btScalar mrq = m_el[r][q]; - m_el[r][p] = m_el[p][r] = cos * mrp - sin * mrq; - m_el[r][q] = m_el[q][r] = cos * mrq + sin * mrp; - - // apply rotation to rot (rot = rot * J) - for (int i = 0; i < 3; i++) - { - btVector3& row = rot[i]; - mrp = row[p]; - mrq = row[q]; - row[p] = cos * mrp - sin * mrq; - row[q] = cos * mrq + sin * mrp; - } - } - } - - - - - /**@brief Calculate the matrix cofactor - * @param r1 The first row to use for calculating the cofactor - * @param c1 The first column to use for calculating the cofactor - * @param r1 The second row to use for calculating the cofactor - * @param c1 The second column to use for calculating the cofactor - * See http://en.wikipedia.org/wiki/Cofactor_(linear_algebra) for more details - */ - btScalar cofac(int r1, int c1, int r2, int c2) const - { - return m_el[r1][c1] * m_el[r2][c2] - m_el[r1][c2] * m_el[r2][c1]; - } - - void serialize(struct btMatrix3x3Data& dataOut) const; - - void serializeFloat(struct btMatrix3x3FloatData& dataOut) const; - - void deSerialize(const struct btMatrix3x3Data& dataIn); - - void deSerializeFloat(const struct btMatrix3x3FloatData& dataIn); - - void deSerializeDouble(const struct btMatrix3x3DoubleData& dataIn); - -}; - - -SIMD_FORCE_INLINE btMatrix3x3& -btMatrix3x3::operator*=(const btMatrix3x3& m) -{ - setValue(m.tdotx(m_el[0]), m.tdoty(m_el[0]), m.tdotz(m_el[0]), - m.tdotx(m_el[1]), m.tdoty(m_el[1]), m.tdotz(m_el[1]), - m.tdotx(m_el[2]), m.tdoty(m_el[2]), m.tdotz(m_el[2])); - return *this; -} - -SIMD_FORCE_INLINE btScalar -btMatrix3x3::determinant() const -{ - return btTriple((*this)[0], (*this)[1], (*this)[2]); -} - - -SIMD_FORCE_INLINE btMatrix3x3 -btMatrix3x3::absolute() const -{ - return btMatrix3x3( - btFabs(m_el[0].x()), btFabs(m_el[0].y()), btFabs(m_el[0].z()), - btFabs(m_el[1].x()), btFabs(m_el[1].y()), btFabs(m_el[1].z()), - btFabs(m_el[2].x()), btFabs(m_el[2].y()), btFabs(m_el[2].z())); -} - -SIMD_FORCE_INLINE btMatrix3x3 -btMatrix3x3::transpose() const -{ - return btMatrix3x3(m_el[0].x(), m_el[1].x(), m_el[2].x(), - m_el[0].y(), m_el[1].y(), m_el[2].y(), - m_el[0].z(), m_el[1].z(), m_el[2].z()); -} - -SIMD_FORCE_INLINE btMatrix3x3 -btMatrix3x3::adjoint() const -{ - return btMatrix3x3(cofac(1, 1, 2, 2), cofac(0, 2, 2, 1), cofac(0, 1, 1, 2), - cofac(1, 2, 2, 0), cofac(0, 0, 2, 2), cofac(0, 2, 1, 0), - cofac(1, 0, 2, 1), cofac(0, 1, 2, 0), cofac(0, 0, 1, 1)); -} - -SIMD_FORCE_INLINE btMatrix3x3 -btMatrix3x3::inverse() const -{ - btVector3 co(cofac(1, 1, 2, 2), cofac(1, 2, 2, 0), cofac(1, 0, 2, 1)); - btScalar det = (*this)[0].dot(co); - btFullAssert(det != btScalar(0.0)); - btScalar s = btScalar(1.0) / det; - return btMatrix3x3(co.x() * s, cofac(0, 2, 2, 1) * s, cofac(0, 1, 1, 2) * s, - co.y() * s, cofac(0, 0, 2, 2) * s, cofac(0, 2, 1, 0) * s, - co.z() * s, cofac(0, 1, 2, 0) * s, cofac(0, 0, 1, 1) * s); -} - -SIMD_FORCE_INLINE btMatrix3x3 -btMatrix3x3::transposeTimes(const btMatrix3x3& m) const -{ - return btMatrix3x3( - m_el[0].x() * m[0].x() + m_el[1].x() * m[1].x() + m_el[2].x() * m[2].x(), - m_el[0].x() * m[0].y() + m_el[1].x() * m[1].y() + m_el[2].x() * m[2].y(), - m_el[0].x() * m[0].z() + m_el[1].x() * m[1].z() + m_el[2].x() * m[2].z(), - m_el[0].y() * m[0].x() + m_el[1].y() * m[1].x() + m_el[2].y() * m[2].x(), - m_el[0].y() * m[0].y() + m_el[1].y() * m[1].y() + m_el[2].y() * m[2].y(), - m_el[0].y() * m[0].z() + m_el[1].y() * m[1].z() + m_el[2].y() * m[2].z(), - m_el[0].z() * m[0].x() + m_el[1].z() * m[1].x() + m_el[2].z() * m[2].x(), - m_el[0].z() * m[0].y() + m_el[1].z() * m[1].y() + m_el[2].z() * m[2].y(), - m_el[0].z() * m[0].z() + m_el[1].z() * m[1].z() + m_el[2].z() * m[2].z()); -} - -SIMD_FORCE_INLINE btMatrix3x3 -btMatrix3x3::timesTranspose(const btMatrix3x3& m) const -{ - return btMatrix3x3( - m_el[0].dot(m[0]), m_el[0].dot(m[1]), m_el[0].dot(m[2]), - m_el[1].dot(m[0]), m_el[1].dot(m[1]), m_el[1].dot(m[2]), - m_el[2].dot(m[0]), m_el[2].dot(m[1]), m_el[2].dot(m[2])); - -} - -SIMD_FORCE_INLINE btVector3 -operator*(const btMatrix3x3& m, const btVector3& v) -{ - return btVector3(m[0].dot(v), m[1].dot(v), m[2].dot(v)); -} - - -SIMD_FORCE_INLINE btVector3 -operator*(const btVector3& v, const btMatrix3x3& m) -{ - return btVector3(m.tdotx(v), m.tdoty(v), m.tdotz(v)); -} - -SIMD_FORCE_INLINE btMatrix3x3 -operator*(const btMatrix3x3& m1, const btMatrix3x3& m2) -{ - return btMatrix3x3( - m2.tdotx( m1[0]), m2.tdoty( m1[0]), m2.tdotz( m1[0]), - m2.tdotx( m1[1]), m2.tdoty( m1[1]), m2.tdotz( m1[1]), - m2.tdotx( m1[2]), m2.tdoty( m1[2]), m2.tdotz( m1[2])); -} - -/* -SIMD_FORCE_INLINE btMatrix3x3 btMultTransposeLeft(const btMatrix3x3& m1, const btMatrix3x3& m2) { -return btMatrix3x3( -m1[0][0] * m2[0][0] + m1[1][0] * m2[1][0] + m1[2][0] * m2[2][0], -m1[0][0] * m2[0][1] + m1[1][0] * m2[1][1] + m1[2][0] * m2[2][1], -m1[0][0] * m2[0][2] + m1[1][0] * m2[1][2] + m1[2][0] * m2[2][2], -m1[0][1] * m2[0][0] + m1[1][1] * m2[1][0] + m1[2][1] * m2[2][0], -m1[0][1] * m2[0][1] + m1[1][1] * m2[1][1] + m1[2][1] * m2[2][1], -m1[0][1] * m2[0][2] + m1[1][1] * m2[1][2] + m1[2][1] * m2[2][2], -m1[0][2] * m2[0][0] + m1[1][2] * m2[1][0] + m1[2][2] * m2[2][0], -m1[0][2] * m2[0][1] + m1[1][2] * m2[1][1] + m1[2][2] * m2[2][1], -m1[0][2] * m2[0][2] + m1[1][2] * m2[1][2] + m1[2][2] * m2[2][2]); -} -*/ - -/**@brief Equality operator between two matrices -* It will test all elements are equal. */ -SIMD_FORCE_INLINE bool operator==(const btMatrix3x3& m1, const btMatrix3x3& m2) -{ - return ( m1[0][0] == m2[0][0] && m1[1][0] == m2[1][0] && m1[2][0] == m2[2][0] && - m1[0][1] == m2[0][1] && m1[1][1] == m2[1][1] && m1[2][1] == m2[2][1] && - m1[0][2] == m2[0][2] && m1[1][2] == m2[1][2] && m1[2][2] == m2[2][2] ); -} - -///for serialization -struct btMatrix3x3FloatData -{ - btVector3FloatData m_el[3]; -}; - -///for serialization -struct btMatrix3x3DoubleData -{ - btVector3DoubleData m_el[3]; -}; - - - - -SIMD_FORCE_INLINE void btMatrix3x3::serialize(struct btMatrix3x3Data& dataOut) const -{ - for (int i=0;i<3;i++) - m_el[i].serialize(dataOut.m_el[i]); -} - -SIMD_FORCE_INLINE void btMatrix3x3::serializeFloat(struct btMatrix3x3FloatData& dataOut) const -{ - for (int i=0;i<3;i++) - m_el[i].serializeFloat(dataOut.m_el[i]); -} - - -SIMD_FORCE_INLINE void btMatrix3x3::deSerialize(const struct btMatrix3x3Data& dataIn) -{ - for (int i=0;i<3;i++) - m_el[i].deSerialize(dataIn.m_el[i]); -} - -SIMD_FORCE_INLINE void btMatrix3x3::deSerializeFloat(const struct btMatrix3x3FloatData& dataIn) -{ - for (int i=0;i<3;i++) - m_el[i].deSerializeFloat(dataIn.m_el[i]); -} - -SIMD_FORCE_INLINE void btMatrix3x3::deSerializeDouble(const struct btMatrix3x3DoubleData& dataIn) -{ - for (int i=0;i<3;i++) - m_el[i].deSerializeDouble(dataIn.m_el[i]); -} - -#endif //BT_MATRIX3x3_H - diff --git a/extern/bullet2/LinearMath/btMinMax.h b/extern/bullet2/LinearMath/btMinMax.h deleted file mode 100644 index 5e27d62a4a4..00000000000 --- a/extern/bullet2/LinearMath/btMinMax.h +++ /dev/null @@ -1,69 +0,0 @@ -/* -Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#ifndef GEN_MINMAX_H -#define GEN_MINMAX_H - -template -SIMD_FORCE_INLINE const T& btMin(const T& a, const T& b) -{ - return a < b ? a : b ; -} - -template -SIMD_FORCE_INLINE const T& btMax(const T& a, const T& b) -{ - return a > b ? a : b; -} - -template -SIMD_FORCE_INLINE const T& GEN_clamped(const T& a, const T& lb, const T& ub) -{ - return a < lb ? lb : (ub < a ? ub : a); -} - -template -SIMD_FORCE_INLINE void btSetMin(T& a, const T& b) -{ - if (b < a) - { - a = b; - } -} - -template -SIMD_FORCE_INLINE void btSetMax(T& a, const T& b) -{ - if (a < b) - { - a = b; - } -} - -template -SIMD_FORCE_INLINE void GEN_clamp(T& a, const T& lb, const T& ub) -{ - if (a < lb) - { - a = lb; - } - else if (ub < a) - { - a = ub; - } -} - -#endif diff --git a/extern/bullet2/LinearMath/btMotionState.h b/extern/bullet2/LinearMath/btMotionState.h deleted file mode 100644 index 94318140902..00000000000 --- a/extern/bullet2/LinearMath/btMotionState.h +++ /dev/null @@ -1,40 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BT_MOTIONSTATE_H -#define BT_MOTIONSTATE_H - -#include "btTransform.h" - -///The btMotionState interface class allows the dynamics world to synchronize and interpolate the updated world transforms with graphics -///For optimizations, potentially only moving objects get synchronized (using setWorldPosition/setWorldOrientation) -class btMotionState -{ - public: - - virtual ~btMotionState() - { - - } - - virtual void getWorldTransform(btTransform& worldTrans ) const =0; - - //Bullet only calls the update of worldtransform for active objects - virtual void setWorldTransform(const btTransform& worldTrans)=0; - - -}; - -#endif //BT_MOTIONSTATE_H diff --git a/extern/bullet2/LinearMath/btPoolAllocator.h b/extern/bullet2/LinearMath/btPoolAllocator.h deleted file mode 100644 index 39d2559c747..00000000000 --- a/extern/bullet2/LinearMath/btPoolAllocator.h +++ /dev/null @@ -1,102 +0,0 @@ -/* -Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#ifndef _BT_POOL_ALLOCATOR_H -#define _BT_POOL_ALLOCATOR_H - -#include "btScalar.h" -#include "btAlignedAllocator.h" - -///The btPoolAllocator class allows to efficiently allocate a large pool of objects, instead of dynamically allocating them separately. -class btPoolAllocator -{ - int m_elemSize; - int m_maxElements; - int m_freeCount; - void* m_firstFree; - unsigned char* m_pool; - -public: - - btPoolAllocator(int elemSize, int maxElements) - :m_elemSize(elemSize), - m_maxElements(maxElements) - { - m_pool = (unsigned char*) btAlignedAlloc( static_cast(m_elemSize*m_maxElements),16); - - unsigned char* p = m_pool; - m_firstFree = p; - m_freeCount = m_maxElements; - int count = m_maxElements; - while (--count) { - *(void**)p = (p + m_elemSize); - p += m_elemSize; - } - *(void**)p = 0; - } - - ~btPoolAllocator() - { - btAlignedFree( m_pool); - } - - int getFreeCount() const - { - return m_freeCount; - } - - void* allocate(int size) - { - // release mode fix - (void)size; - btAssert(!size || size<=m_elemSize); - btAssert(m_freeCount>0); - void* result = m_firstFree; - m_firstFree = *(void**)m_firstFree; - --m_freeCount; - return result; - } - - bool validPtr(void* ptr) - { - if (ptr) { - if (((unsigned char*)ptr >= m_pool && (unsigned char*)ptr < m_pool + m_maxElements * m_elemSize)) - { - return true; - } - } - return false; - } - - void freeMemory(void* ptr) - { - if (ptr) { - btAssert((unsigned char*)ptr >= m_pool && (unsigned char*)ptr < m_pool + m_maxElements * m_elemSize); - - *(void**)ptr = m_firstFree; - m_firstFree = ptr; - ++m_freeCount; - } - } - - int getElementSize() const - { - return m_elemSize; - } - - -}; - -#endif //_BT_POOL_ALLOCATOR_H diff --git a/extern/bullet2/LinearMath/btQuadWord.h b/extern/bullet2/LinearMath/btQuadWord.h deleted file mode 100644 index c657afd2bb1..00000000000 --- a/extern/bullet2/LinearMath/btQuadWord.h +++ /dev/null @@ -1,180 +0,0 @@ -/* -Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#ifndef SIMD_QUADWORD_H -#define SIMD_QUADWORD_H - -#include "btScalar.h" -#include "btMinMax.h" - - -#if defined (__CELLOS_LV2) && defined (__SPU__) -#include -#endif - -/**@brief The btQuadWord class is base class for btVector3 and btQuaternion. - * Some issues under PS3 Linux with IBM 2.1 SDK, gcc compiler prevent from using aligned quadword. - */ -#ifndef USE_LIBSPE2 -ATTRIBUTE_ALIGNED16(class) btQuadWord -#else -class btQuadWord -#endif -{ -protected: - -#if defined (__SPU__) && defined (__CELLOS_LV2__) - union { - vec_float4 mVec128; - btScalar m_floats[4]; - }; -public: - vec_float4 get128() const - { - return mVec128; - } -protected: -#else //__CELLOS_LV2__ __SPU__ - btScalar m_floats[4]; -#endif //__CELLOS_LV2__ __SPU__ - - public: - - - /**@brief Return the x value */ - SIMD_FORCE_INLINE const btScalar& getX() const { return m_floats[0]; } - /**@brief Return the y value */ - SIMD_FORCE_INLINE const btScalar& getY() const { return m_floats[1]; } - /**@brief Return the z value */ - SIMD_FORCE_INLINE const btScalar& getZ() const { return m_floats[2]; } - /**@brief Set the x value */ - SIMD_FORCE_INLINE void setX(btScalar x) { m_floats[0] = x;}; - /**@brief Set the y value */ - SIMD_FORCE_INLINE void setY(btScalar y) { m_floats[1] = y;}; - /**@brief Set the z value */ - SIMD_FORCE_INLINE void setZ(btScalar z) { m_floats[2] = z;}; - /**@brief Set the w value */ - SIMD_FORCE_INLINE void setW(btScalar w) { m_floats[3] = w;}; - /**@brief Return the x value */ - SIMD_FORCE_INLINE const btScalar& x() const { return m_floats[0]; } - /**@brief Return the y value */ - SIMD_FORCE_INLINE const btScalar& y() const { return m_floats[1]; } - /**@brief Return the z value */ - SIMD_FORCE_INLINE const btScalar& z() const { return m_floats[2]; } - /**@brief Return the w value */ - SIMD_FORCE_INLINE const btScalar& w() const { return m_floats[3]; } - - //SIMD_FORCE_INLINE btScalar& operator[](int i) { return (&m_floats[0])[i]; } - //SIMD_FORCE_INLINE const btScalar& operator[](int i) const { return (&m_floats[0])[i]; } - ///operator btScalar*() replaces operator[], using implicit conversion. We added operator != and operator == to avoid pointer comparisons. - SIMD_FORCE_INLINE operator btScalar *() { return &m_floats[0]; } - SIMD_FORCE_INLINE operator const btScalar *() const { return &m_floats[0]; } - - SIMD_FORCE_INLINE bool operator==(const btQuadWord& other) const - { - return ((m_floats[3]==other.m_floats[3]) && (m_floats[2]==other.m_floats[2]) && (m_floats[1]==other.m_floats[1]) && (m_floats[0]==other.m_floats[0])); - } - - SIMD_FORCE_INLINE bool operator!=(const btQuadWord& other) const - { - return !(*this == other); - } - - /**@brief Set x,y,z and zero w - * @param x Value of x - * @param y Value of y - * @param z Value of z - */ - SIMD_FORCE_INLINE void setValue(const btScalar& x, const btScalar& y, const btScalar& z) - { - m_floats[0]=x; - m_floats[1]=y; - m_floats[2]=z; - m_floats[3] = 0.f; - } - -/* void getValue(btScalar *m) const - { - m[0] = m_floats[0]; - m[1] = m_floats[1]; - m[2] = m_floats[2]; - } -*/ -/**@brief Set the values - * @param x Value of x - * @param y Value of y - * @param z Value of z - * @param w Value of w - */ - SIMD_FORCE_INLINE void setValue(const btScalar& x, const btScalar& y, const btScalar& z,const btScalar& w) - { - m_floats[0]=x; - m_floats[1]=y; - m_floats[2]=z; - m_floats[3]=w; - } - /**@brief No initialization constructor */ - SIMD_FORCE_INLINE btQuadWord() - // :m_floats[0](btScalar(0.)),m_floats[1](btScalar(0.)),m_floats[2](btScalar(0.)),m_floats[3](btScalar(0.)) - { - } - - /**@brief Three argument constructor (zeros w) - * @param x Value of x - * @param y Value of y - * @param z Value of z - */ - SIMD_FORCE_INLINE btQuadWord(const btScalar& x, const btScalar& y, const btScalar& z) - { - m_floats[0] = x, m_floats[1] = y, m_floats[2] = z, m_floats[3] = 0.0f; - } - -/**@brief Initializing constructor - * @param x Value of x - * @param y Value of y - * @param z Value of z - * @param w Value of w - */ - SIMD_FORCE_INLINE btQuadWord(const btScalar& x, const btScalar& y, const btScalar& z,const btScalar& w) - { - m_floats[0] = x, m_floats[1] = y, m_floats[2] = z, m_floats[3] = w; - } - - /**@brief Set each element to the max of the current values and the values of another btQuadWord - * @param other The other btQuadWord to compare with - */ - SIMD_FORCE_INLINE void setMax(const btQuadWord& other) - { - btSetMax(m_floats[0], other.m_floats[0]); - btSetMax(m_floats[1], other.m_floats[1]); - btSetMax(m_floats[2], other.m_floats[2]); - btSetMax(m_floats[3], other.m_floats[3]); - } - /**@brief Set each element to the min of the current values and the values of another btQuadWord - * @param other The other btQuadWord to compare with - */ - SIMD_FORCE_INLINE void setMin(const btQuadWord& other) - { - btSetMin(m_floats[0], other.m_floats[0]); - btSetMin(m_floats[1], other.m_floats[1]); - btSetMin(m_floats[2], other.m_floats[2]); - btSetMin(m_floats[3], other.m_floats[3]); - } - - - -}; - -#endif //SIMD_QUADWORD_H diff --git a/extern/bullet2/LinearMath/btQuaternion.h b/extern/bullet2/LinearMath/btQuaternion.h deleted file mode 100644 index 15cf5f868d9..00000000000 --- a/extern/bullet2/LinearMath/btQuaternion.h +++ /dev/null @@ -1,433 +0,0 @@ -/* -Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#ifndef SIMD__QUATERNION_H_ -#define SIMD__QUATERNION_H_ - - -#include "btVector3.h" -#include "btQuadWord.h" - -/**@brief The btQuaternion implements quaternion to perform linear algebra rotations in combination with btMatrix3x3, btVector3 and btTransform. */ -class btQuaternion : public btQuadWord { -public: - /**@brief No initialization constructor */ - btQuaternion() {} - - // template - // explicit Quaternion(const btScalar *v) : Tuple4(v) {} - /**@brief Constructor from scalars */ - btQuaternion(const btScalar& x, const btScalar& y, const btScalar& z, const btScalar& w) - : btQuadWord(x, y, z, w) - {} - /**@brief Axis angle Constructor - * @param axis The axis which the rotation is around - * @param angle The magnitude of the rotation around the angle (Radians) */ - btQuaternion(const btVector3& axis, const btScalar& angle) - { - setRotation(axis, angle); - } - /**@brief Constructor from Euler angles - * @param yaw Angle around Y unless BT_EULER_DEFAULT_ZYX defined then Z - * @param pitch Angle around X unless BT_EULER_DEFAULT_ZYX defined then Y - * @param roll Angle around Z unless BT_EULER_DEFAULT_ZYX defined then X */ - btQuaternion(const btScalar& yaw, const btScalar& pitch, const btScalar& roll) - { -#ifndef BT_EULER_DEFAULT_ZYX - setEuler(yaw, pitch, roll); -#else - setEulerZYX(yaw, pitch, roll); -#endif - } - /**@brief Set the rotation using axis angle notation - * @param axis The axis around which to rotate - * @param angle The magnitude of the rotation in Radians */ - void setRotation(const btVector3& axis, const btScalar& angle) - { - btScalar d = axis.length(); - btAssert(d != btScalar(0.0)); - btScalar s = btSin(angle * btScalar(0.5)) / d; - setValue(axis.x() * s, axis.y() * s, axis.z() * s, - btCos(angle * btScalar(0.5))); - } - /**@brief Set the quaternion using Euler angles - * @param yaw Angle around Y - * @param pitch Angle around X - * @param roll Angle around Z */ - void setEuler(const btScalar& yaw, const btScalar& pitch, const btScalar& roll) - { - btScalar halfYaw = btScalar(yaw) * btScalar(0.5); - btScalar halfPitch = btScalar(pitch) * btScalar(0.5); - btScalar halfRoll = btScalar(roll) * btScalar(0.5); - btScalar cosYaw = btCos(halfYaw); - btScalar sinYaw = btSin(halfYaw); - btScalar cosPitch = btCos(halfPitch); - btScalar sinPitch = btSin(halfPitch); - btScalar cosRoll = btCos(halfRoll); - btScalar sinRoll = btSin(halfRoll); - setValue(cosRoll * sinPitch * cosYaw + sinRoll * cosPitch * sinYaw, - cosRoll * cosPitch * sinYaw - sinRoll * sinPitch * cosYaw, - sinRoll * cosPitch * cosYaw - cosRoll * sinPitch * sinYaw, - cosRoll * cosPitch * cosYaw + sinRoll * sinPitch * sinYaw); - } - /**@brief Set the quaternion using euler angles - * @param yaw Angle around Z - * @param pitch Angle around Y - * @param roll Angle around X */ - void setEulerZYX(const btScalar& yaw, const btScalar& pitch, const btScalar& roll) - { - btScalar halfYaw = btScalar(yaw) * btScalar(0.5); - btScalar halfPitch = btScalar(pitch) * btScalar(0.5); - btScalar halfRoll = btScalar(roll) * btScalar(0.5); - btScalar cosYaw = btCos(halfYaw); - btScalar sinYaw = btSin(halfYaw); - btScalar cosPitch = btCos(halfPitch); - btScalar sinPitch = btSin(halfPitch); - btScalar cosRoll = btCos(halfRoll); - btScalar sinRoll = btSin(halfRoll); - setValue(sinRoll * cosPitch * cosYaw - cosRoll * sinPitch * sinYaw, //x - cosRoll * sinPitch * cosYaw + sinRoll * cosPitch * sinYaw, //y - cosRoll * cosPitch * sinYaw - sinRoll * sinPitch * cosYaw, //z - cosRoll * cosPitch * cosYaw + sinRoll * sinPitch * sinYaw); //formerly yzx - } - /**@brief Add two quaternions - * @param q The quaternion to add to this one */ - SIMD_FORCE_INLINE btQuaternion& operator+=(const btQuaternion& q) - { - m_floats[0] += q.x(); m_floats[1] += q.y(); m_floats[2] += q.z(); m_floats[3] += q.m_floats[3]; - return *this; - } - - /**@brief Subtract out a quaternion - * @param q The quaternion to subtract from this one */ - btQuaternion& operator-=(const btQuaternion& q) - { - m_floats[0] -= q.x(); m_floats[1] -= q.y(); m_floats[2] -= q.z(); m_floats[3] -= q.m_floats[3]; - return *this; - } - - /**@brief Scale this quaternion - * @param s The scalar to scale by */ - btQuaternion& operator*=(const btScalar& s) - { - m_floats[0] *= s; m_floats[1] *= s; m_floats[2] *= s; m_floats[3] *= s; - return *this; - } - - /**@brief Multiply this quaternion by q on the right - * @param q The other quaternion - * Equivilant to this = this * q */ - btQuaternion& operator*=(const btQuaternion& q) - { - setValue(m_floats[3] * q.x() + m_floats[0] * q.m_floats[3] + m_floats[1] * q.z() - m_floats[2] * q.y(), - m_floats[3] * q.y() + m_floats[1] * q.m_floats[3] + m_floats[2] * q.x() - m_floats[0] * q.z(), - m_floats[3] * q.z() + m_floats[2] * q.m_floats[3] + m_floats[0] * q.y() - m_floats[1] * q.x(), - m_floats[3] * q.m_floats[3] - m_floats[0] * q.x() - m_floats[1] * q.y() - m_floats[2] * q.z()); - return *this; - } - /**@brief Return the dot product between this quaternion and another - * @param q The other quaternion */ - btScalar dot(const btQuaternion& q) const - { - return m_floats[0] * q.x() + m_floats[1] * q.y() + m_floats[2] * q.z() + m_floats[3] * q.m_floats[3]; - } - - /**@brief Return the length squared of the quaternion */ - btScalar length2() const - { - return dot(*this); - } - - /**@brief Return the length of the quaternion */ - btScalar length() const - { - return btSqrt(length2()); - } - - /**@brief Normalize the quaternion - * Such that x^2 + y^2 + z^2 +w^2 = 1 */ - btQuaternion& normalize() - { - return *this /= length(); - } - - /**@brief Return a scaled version of this quaternion - * @param s The scale factor */ - SIMD_FORCE_INLINE btQuaternion - operator*(const btScalar& s) const - { - return btQuaternion(x() * s, y() * s, z() * s, m_floats[3] * s); - } - - - /**@brief Return an inversely scaled versionof this quaternion - * @param s The inverse scale factor */ - btQuaternion operator/(const btScalar& s) const - { - btAssert(s != btScalar(0.0)); - return *this * (btScalar(1.0) / s); - } - - /**@brief Inversely scale this quaternion - * @param s The scale factor */ - btQuaternion& operator/=(const btScalar& s) - { - btAssert(s != btScalar(0.0)); - return *this *= btScalar(1.0) / s; - } - - /**@brief Return a normalized version of this quaternion */ - btQuaternion normalized() const - { - return *this / length(); - } - /**@brief Return the angle between this quaternion and the other - * @param q The other quaternion */ - btScalar angle(const btQuaternion& q) const - { - btScalar s = btSqrt(length2() * q.length2()); - btAssert(s != btScalar(0.0)); - return btAcos(dot(q) / s); - } - /**@brief Return the angle of rotation represented by this quaternion */ - btScalar getAngle() const - { - btScalar s = btScalar(2.) * btAcos(m_floats[3]); - return s; - } - - /**@brief Return the axis of the rotation represented by this quaternion */ - btVector3 getAxis() const - { - btScalar s_squared = btScalar(1.) - btPow(m_floats[3], btScalar(2.)); - if (s_squared < btScalar(10.) * SIMD_EPSILON) //Check for divide by zero - return btVector3(1.0, 0.0, 0.0); // Arbitrary - btScalar s = btSqrt(s_squared); - return btVector3(m_floats[0] / s, m_floats[1] / s, m_floats[2] / s); - } - - /**@brief Return the inverse of this quaternion */ - btQuaternion inverse() const - { - return btQuaternion(-m_floats[0], -m_floats[1], -m_floats[2], m_floats[3]); - } - - /**@brief Return the sum of this quaternion and the other - * @param q2 The other quaternion */ - SIMD_FORCE_INLINE btQuaternion - operator+(const btQuaternion& q2) const - { - const btQuaternion& q1 = *this; - return btQuaternion(q1.x() + q2.x(), q1.y() + q2.y(), q1.z() + q2.z(), q1.m_floats[3] + q2.m_floats[3]); - } - - /**@brief Return the difference between this quaternion and the other - * @param q2 The other quaternion */ - SIMD_FORCE_INLINE btQuaternion - operator-(const btQuaternion& q2) const - { - const btQuaternion& q1 = *this; - return btQuaternion(q1.x() - q2.x(), q1.y() - q2.y(), q1.z() - q2.z(), q1.m_floats[3] - q2.m_floats[3]); - } - - /**@brief Return the negative of this quaternion - * This simply negates each element */ - SIMD_FORCE_INLINE btQuaternion operator-() const - { - const btQuaternion& q2 = *this; - return btQuaternion( - q2.x(), - q2.y(), - q2.z(), - q2.m_floats[3]); - } - /**@todo document this and it's use */ - SIMD_FORCE_INLINE btQuaternion farthest( const btQuaternion& qd) const - { - btQuaternion diff,sum; - diff = *this - qd; - sum = *this + qd; - if( diff.dot(diff) > sum.dot(sum) ) - return qd; - return (-qd); - } - - /**@todo document this and it's use */ - SIMD_FORCE_INLINE btQuaternion nearest( const btQuaternion& qd) const - { - btQuaternion diff,sum; - diff = *this - qd; - sum = *this + qd; - if( diff.dot(diff) < sum.dot(sum) ) - return qd; - return (-qd); - } - - - /**@brief Return the quaternion which is the result of Spherical Linear Interpolation between this and the other quaternion - * @param q The other quaternion to interpolate with - * @param t The ratio between this and q to interpolate. If t = 0 the result is this, if t=1 the result is q. - * Slerp interpolates assuming constant velocity. */ - btQuaternion slerp(const btQuaternion& q, const btScalar& t) const - { - btScalar theta = angle(q); - if (theta != btScalar(0.0)) - { - btScalar d = btScalar(1.0) / btSin(theta); - btScalar s0 = btSin((btScalar(1.0) - t) * theta); - btScalar s1 = btSin(t * theta); - if (dot(q) < 0) // Take care of long angle case see http://en.wikipedia.org/wiki/Slerp - return btQuaternion((m_floats[0] * s0 + -q.x() * s1) * d, - (m_floats[1] * s0 + -q.y() * s1) * d, - (m_floats[2] * s0 + -q.z() * s1) * d, - (m_floats[3] * s0 + -q.m_floats[3] * s1) * d); - else - return btQuaternion((m_floats[0] * s0 + q.x() * s1) * d, - (m_floats[1] * s0 + q.y() * s1) * d, - (m_floats[2] * s0 + q.z() * s1) * d, - (m_floats[3] * s0 + q.m_floats[3] * s1) * d); - - } - else - { - return *this; - } - } - - static const btQuaternion& getIdentity() - { - static const btQuaternion identityQuat(btScalar(0.),btScalar(0.),btScalar(0.),btScalar(1.)); - return identityQuat; - } - - SIMD_FORCE_INLINE const btScalar& getW() const { return m_floats[3]; } - - -}; - - -/**@brief Return the negative of a quaternion */ -SIMD_FORCE_INLINE btQuaternion -operator-(const btQuaternion& q) -{ - return btQuaternion(-q.x(), -q.y(), -q.z(), -q.w()); -} - - - -/**@brief Return the product of two quaternions */ -SIMD_FORCE_INLINE btQuaternion -operator*(const btQuaternion& q1, const btQuaternion& q2) { - return btQuaternion(q1.w() * q2.x() + q1.x() * q2.w() + q1.y() * q2.z() - q1.z() * q2.y(), - q1.w() * q2.y() + q1.y() * q2.w() + q1.z() * q2.x() - q1.x() * q2.z(), - q1.w() * q2.z() + q1.z() * q2.w() + q1.x() * q2.y() - q1.y() * q2.x(), - q1.w() * q2.w() - q1.x() * q2.x() - q1.y() * q2.y() - q1.z() * q2.z()); -} - -SIMD_FORCE_INLINE btQuaternion -operator*(const btQuaternion& q, const btVector3& w) -{ - return btQuaternion( q.w() * w.x() + q.y() * w.z() - q.z() * w.y(), - q.w() * w.y() + q.z() * w.x() - q.x() * w.z(), - q.w() * w.z() + q.x() * w.y() - q.y() * w.x(), - -q.x() * w.x() - q.y() * w.y() - q.z() * w.z()); -} - -SIMD_FORCE_INLINE btQuaternion -operator*(const btVector3& w, const btQuaternion& q) -{ - return btQuaternion( w.x() * q.w() + w.y() * q.z() - w.z() * q.y(), - w.y() * q.w() + w.z() * q.x() - w.x() * q.z(), - w.z() * q.w() + w.x() * q.y() - w.y() * q.x(), - -w.x() * q.x() - w.y() * q.y() - w.z() * q.z()); -} - -/**@brief Calculate the dot product between two quaternions */ -SIMD_FORCE_INLINE btScalar -dot(const btQuaternion& q1, const btQuaternion& q2) -{ - return q1.dot(q2); -} - - -/**@brief Return the length of a quaternion */ -SIMD_FORCE_INLINE btScalar -length(const btQuaternion& q) -{ - return q.length(); -} - -/**@brief Return the angle between two quaternions*/ -SIMD_FORCE_INLINE btScalar -angle(const btQuaternion& q1, const btQuaternion& q2) -{ - return q1.angle(q2); -} - -/**@brief Return the inverse of a quaternion*/ -SIMD_FORCE_INLINE btQuaternion -inverse(const btQuaternion& q) -{ - return q.inverse(); -} - -/**@brief Return the result of spherical linear interpolation betwen two quaternions - * @param q1 The first quaternion - * @param q2 The second quaternion - * @param t The ration between q1 and q2. t = 0 return q1, t=1 returns q2 - * Slerp assumes constant velocity between positions. */ -SIMD_FORCE_INLINE btQuaternion -slerp(const btQuaternion& q1, const btQuaternion& q2, const btScalar& t) -{ - return q1.slerp(q2, t); -} - -SIMD_FORCE_INLINE btVector3 -quatRotate(const btQuaternion& rotation, const btVector3& v) -{ - btQuaternion q = rotation * v; - q *= rotation.inverse(); - return btVector3(q.getX(),q.getY(),q.getZ()); -} - -SIMD_FORCE_INLINE btQuaternion -shortestArcQuat(const btVector3& v0, const btVector3& v1) // Game Programming Gems 2.10. make sure v0,v1 are normalized -{ - btVector3 c = v0.cross(v1); - btScalar d = v0.dot(v1); - - if (d < -1.0 + SIMD_EPSILON) - { - btVector3 n,unused; - btPlaneSpace1(v0,n,unused); - return btQuaternion(n.x(),n.y(),n.z(),0.0f); // just pick any vector that is orthogonal to v0 - } - - btScalar s = btSqrt((1.0f + d) * 2.0f); - btScalar rs = 1.0f / s; - - return btQuaternion(c.getX()*rs,c.getY()*rs,c.getZ()*rs,s * 0.5f); -} - -SIMD_FORCE_INLINE btQuaternion -shortestArcQuatNormalize2(btVector3& v0,btVector3& v1) -{ - v0.normalize(); - v1.normalize(); - return shortestArcQuat(v0,v1); -} - -#endif - - - - diff --git a/extern/bullet2/LinearMath/btQuickprof.cpp b/extern/bullet2/LinearMath/btQuickprof.cpp deleted file mode 100644 index 61247d28fbf..00000000000 --- a/extern/bullet2/LinearMath/btQuickprof.cpp +++ /dev/null @@ -1,346 +0,0 @@ -/* - -*************************************************************************************************** -** -** profile.cpp -** -** Real-Time Hierarchical Profiling for Game Programming Gems 3 -** -** by Greg Hjelstrom & Byon Garrabrant -** -***************************************************************************************************/ - -// Credits: The Clock class was inspired by the Timer classes in -// Ogre (www.ogre3d.org). - -#include "btQuickprof.h" - - -#ifdef USE_BT_CLOCK - -static btClock gProfileClock; - -inline void Profile_Get_Ticks(unsigned long int * ticks) -{ - *ticks = gProfileClock.getTimeMicroseconds(); -} - -inline float Profile_Get_Tick_Rate(void) -{ -// return 1000000.f; - return 1000.f; - -} - - - -/*************************************************************************************************** -** -** CProfileNode -** -***************************************************************************************************/ - -/*********************************************************************************************** - * INPUT: * - * name - pointer to a static string which is the name of this profile node * - * parent - parent pointer * - * * - * WARNINGS: * - * The name is assumed to be a static pointer, only the pointer is stored and compared for * - * efficiency reasons. * - *=============================================================================================*/ -CProfileNode::CProfileNode( const char * name, CProfileNode * parent ) : - Name( name ), - TotalCalls( 0 ), - TotalTime( 0 ), - StartTime( 0 ), - RecursionCounter( 0 ), - Parent( parent ), - Child( NULL ), - Sibling( NULL ) -{ - Reset(); -} - - -void CProfileNode::CleanupMemory() -{ - delete ( Child); - Child = NULL; - delete ( Sibling); - Sibling = NULL; -} - -CProfileNode::~CProfileNode( void ) -{ - delete ( Child); - delete ( Sibling); -} - - -/*********************************************************************************************** - * INPUT: * - * name - static string pointer to the name of the node we are searching for * - * * - * WARNINGS: * - * All profile names are assumed to be static strings so this function uses pointer compares * - * to find the named node. * - *=============================================================================================*/ -CProfileNode * CProfileNode::Get_Sub_Node( const char * name ) -{ - // Try to find this sub node - CProfileNode * child = Child; - while ( child ) { - if ( child->Name == name ) { - return child; - } - child = child->Sibling; - } - - // We didn't find it, so add it - - CProfileNode * node = new CProfileNode( name, this ); - node->Sibling = Child; - Child = node; - return node; -} - - -void CProfileNode::Reset( void ) -{ - TotalCalls = 0; - TotalTime = 0.0f; - - - if ( Child ) { - Child->Reset(); - } - if ( Sibling ) { - Sibling->Reset(); - } -} - - -void CProfileNode::Call( void ) -{ - TotalCalls++; - if (RecursionCounter++ == 0) { - Profile_Get_Ticks(&StartTime); - } -} - - -bool CProfileNode::Return( void ) -{ - if ( --RecursionCounter == 0 && TotalCalls != 0 ) { - unsigned long int time; - Profile_Get_Ticks(&time); - time-=StartTime; - TotalTime += (float)time / Profile_Get_Tick_Rate(); - } - return ( RecursionCounter == 0 ); -} - - -/*************************************************************************************************** -** -** CProfileIterator -** -***************************************************************************************************/ -CProfileIterator::CProfileIterator( CProfileNode * start ) -{ - CurrentParent = start; - CurrentChild = CurrentParent->Get_Child(); -} - - -void CProfileIterator::First(void) -{ - CurrentChild = CurrentParent->Get_Child(); -} - - -void CProfileIterator::Next(void) -{ - CurrentChild = CurrentChild->Get_Sibling(); -} - - -bool CProfileIterator::Is_Done(void) -{ - return CurrentChild == NULL; -} - - -void CProfileIterator::Enter_Child( int index ) -{ - CurrentChild = CurrentParent->Get_Child(); - while ( (CurrentChild != NULL) && (index != 0) ) { - index--; - CurrentChild = CurrentChild->Get_Sibling(); - } - - if ( CurrentChild != NULL ) { - CurrentParent = CurrentChild; - CurrentChild = CurrentParent->Get_Child(); - } -} - - -void CProfileIterator::Enter_Parent( void ) -{ - if ( CurrentParent->Get_Parent() != NULL ) { - CurrentParent = CurrentParent->Get_Parent(); - } - CurrentChild = CurrentParent->Get_Child(); -} - - -/*************************************************************************************************** -** -** CProfileManager -** -***************************************************************************************************/ - -CProfileNode CProfileManager::Root( "Root", NULL ); -CProfileNode * CProfileManager::CurrentNode = &CProfileManager::Root; -int CProfileManager::FrameCounter = 0; -unsigned long int CProfileManager::ResetTime = 0; - - -/*********************************************************************************************** - * CProfileManager::Start_Profile -- Begin a named profile * - * * - * Steps one level deeper into the tree, if a child already exists with the specified name * - * then it accumulates the profiling; otherwise a new child node is added to the profile tree. * - * * - * INPUT: * - * name - name of this profiling record * - * * - * WARNINGS: * - * The string used is assumed to be a static string; pointer compares are used throughout * - * the profiling code for efficiency. * - *=============================================================================================*/ -void CProfileManager::Start_Profile( const char * name ) -{ - if (name != CurrentNode->Get_Name()) { - CurrentNode = CurrentNode->Get_Sub_Node( name ); - } - - CurrentNode->Call(); -} - - -/*********************************************************************************************** - * CProfileManager::Stop_Profile -- Stop timing and record the results. * - *=============================================================================================*/ -void CProfileManager::Stop_Profile( void ) -{ - // Return will indicate whether we should back up to our parent (we may - // be profiling a recursive function) - if (CurrentNode->Return()) { - CurrentNode = CurrentNode->Get_Parent(); - } -} - - -/*********************************************************************************************** - * CProfileManager::Reset -- Reset the contents of the profiling system * - * * - * This resets everything except for the tree structure. All of the timing data is reset. * - *=============================================================================================*/ -void CProfileManager::Reset( void ) -{ - gProfileClock.reset(); - Root.Reset(); - Root.Call(); - FrameCounter = 0; - Profile_Get_Ticks(&ResetTime); -} - - -/*********************************************************************************************** - * CProfileManager::Increment_Frame_Counter -- Increment the frame counter * - *=============================================================================================*/ -void CProfileManager::Increment_Frame_Counter( void ) -{ - FrameCounter++; -} - - -/*********************************************************************************************** - * CProfileManager::Get_Time_Since_Reset -- returns the elapsed time since last reset * - *=============================================================================================*/ -float CProfileManager::Get_Time_Since_Reset( void ) -{ - unsigned long int time; - Profile_Get_Ticks(&time); - time -= ResetTime; - return (float)time / Profile_Get_Tick_Rate(); -} - -#include - -void CProfileManager::dumpRecursive(CProfileIterator* profileIterator, int spacing) -{ - profileIterator->First(); - if (profileIterator->Is_Done()) - return; - - float accumulated_time=0,parent_time = profileIterator->Is_Root() ? CProfileManager::Get_Time_Since_Reset() : profileIterator->Get_Current_Parent_Total_Time(); - int i; - int frames_since_reset = CProfileManager::Get_Frame_Count_Since_Reset(); - for (i=0;iGet_Current_Parent_Name(), parent_time ); - float totalTime = 0.f; - - - int numChildren = 0; - - for (i = 0; !profileIterator->Is_Done(); i++,profileIterator->Next()) - { - numChildren++; - float current_total_time = profileIterator->Get_Current_Total_Time(); - accumulated_time += current_total_time; - float fraction = parent_time > SIMD_EPSILON ? (current_total_time / parent_time) * 100 : 0.f; - { - int i; for (i=0;iGet_Current_Name(), fraction,(current_total_time / (double)frames_since_reset),profileIterator->Get_Current_Total_Calls()); - totalTime += current_total_time; - //recurse into children - } - - if (parent_time < accumulated_time) - { - printf("what's wrong\n"); - } - for (i=0;i SIMD_EPSILON ? ((parent_time - accumulated_time) / parent_time) * 100 : 0.f, parent_time - accumulated_time); - - for (i=0;iEnter_Child(i); - dumpRecursive(profileIterator,spacing+3); - profileIterator->Enter_Parent(); - } -} - - - -void CProfileManager::dumpAll() -{ - CProfileIterator* profileIterator = 0; - profileIterator = CProfileManager::Get_Iterator(); - - dumpRecursive(profileIterator,0); - - CProfileManager::Release_Iterator(profileIterator); -} - - - -#endif //USE_BT_CLOCK - diff --git a/extern/bullet2/LinearMath/btQuickprof.h b/extern/bullet2/LinearMath/btQuickprof.h deleted file mode 100644 index d048f98e310..00000000000 --- a/extern/bullet2/LinearMath/btQuickprof.h +++ /dev/null @@ -1,370 +0,0 @@ - -/*************************************************************************************************** -** -** Real-Time Hierarchical Profiling for Game Programming Gems 3 -** -** by Greg Hjelstrom & Byon Garrabrant -** -***************************************************************************************************/ - -// Credits: The Clock class was inspired by the Timer classes in -// Ogre (www.ogre3d.org). - - - -#ifndef QUICK_PROF_H -#define QUICK_PROF_H - -//To disable built-in profiling, please comment out next line -//#define BT_NO_PROFILE 1 -#ifndef BT_NO_PROFILE - -#include "btScalar.h" -#include "btAlignedAllocator.h" -#include - - - - -//if you don't need btClock, you can comment next line -#define USE_BT_CLOCK 1 - -#ifdef USE_BT_CLOCK -#ifdef __CELLOS_LV2__ -#include -#include -#include -#endif - -#if defined (SUNOS) || defined (__SUNOS__) -#include -#endif - -#if defined(WIN32) || defined(_WIN32) - -#define USE_WINDOWS_TIMERS -#define WIN32_LEAN_AND_MEAN -#define NOWINRES -#define NOMCX -#define NOIME -#ifdef _XBOX -#include -#else -#include -#endif -#include - -#else -#include -#endif - -#define mymin(a,b) (a > b ? a : b) - -///The btClock is a portable basic clock that measures accurate time in seconds, use for profiling. -class btClock -{ -public: - btClock() - { -#ifdef USE_WINDOWS_TIMERS - QueryPerformanceFrequency(&mClockFrequency); -#endif - reset(); - } - - ~btClock() - { - } - - /// Resets the initial reference time. - void reset() - { -#ifdef USE_WINDOWS_TIMERS - QueryPerformanceCounter(&mStartTime); - mStartTick = GetTickCount(); - mPrevElapsedTime = 0; -#else -#ifdef __CELLOS_LV2__ - - typedef uint64_t ClockSize; - ClockSize newTime; - //__asm __volatile__( "mftb %0" : "=r" (newTime) : : "memory"); - SYS_TIMEBASE_GET( newTime ); - mStartTime = newTime; -#else - gettimeofday(&mStartTime, 0); -#endif - -#endif - } - - /// Returns the time in ms since the last call to reset or since - /// the btClock was created. - unsigned long int getTimeMilliseconds() - { -#ifdef USE_WINDOWS_TIMERS - LARGE_INTEGER currentTime; - QueryPerformanceCounter(¤tTime); - LONGLONG elapsedTime = currentTime.QuadPart - - mStartTime.QuadPart; - - // Compute the number of millisecond ticks elapsed. - unsigned long msecTicks = (unsigned long)(1000 * elapsedTime / - mClockFrequency.QuadPart); - - // Check for unexpected leaps in the Win32 performance counter. - // (This is caused by unexpected data across the PCI to ISA - // bridge, aka south bridge. See Microsoft KB274323.) - unsigned long elapsedTicks = GetTickCount() - mStartTick; - signed long msecOff = (signed long)(msecTicks - elapsedTicks); - if (msecOff < -100 || msecOff > 100) - { - // Adjust the starting time forwards. - LONGLONG msecAdjustment = mymin(msecOff * - mClockFrequency.QuadPart / 1000, elapsedTime - - mPrevElapsedTime); - mStartTime.QuadPart += msecAdjustment; - elapsedTime -= msecAdjustment; - - // Recompute the number of millisecond ticks elapsed. - msecTicks = (unsigned long)(1000 * elapsedTime / - mClockFrequency.QuadPart); - } - - // Store the current elapsed time for adjustments next time. - mPrevElapsedTime = elapsedTime; - - return msecTicks; -#else - -#ifdef __CELLOS_LV2__ - uint64_t freq=sys_time_get_timebase_frequency(); - double dFreq=((double) freq) / 1000.0; - typedef uint64_t ClockSize; - ClockSize newTime; - SYS_TIMEBASE_GET( newTime ); - //__asm __volatile__( "mftb %0" : "=r" (newTime) : : "memory"); - - return (unsigned long int)((double(newTime-mStartTime)) / dFreq); -#else - - struct timeval currentTime; - gettimeofday(¤tTime, 0); - return (currentTime.tv_sec - mStartTime.tv_sec) * 1000 + - (currentTime.tv_usec - mStartTime.tv_usec) / 1000; -#endif //__CELLOS_LV2__ -#endif - } - - /// Returns the time in us since the last call to reset or since - /// the Clock was created. - unsigned long int getTimeMicroseconds() - { -#ifdef USE_WINDOWS_TIMERS - LARGE_INTEGER currentTime; - QueryPerformanceCounter(¤tTime); - LONGLONG elapsedTime = currentTime.QuadPart - - mStartTime.QuadPart; - - // Compute the number of millisecond ticks elapsed. - unsigned long msecTicks = (unsigned long)(1000 * elapsedTime / - mClockFrequency.QuadPart); - - // Check for unexpected leaps in the Win32 performance counter. - // (This is caused by unexpected data across the PCI to ISA - // bridge, aka south bridge. See Microsoft KB274323.) - unsigned long elapsedTicks = GetTickCount() - mStartTick; - signed long msecOff = (signed long)(msecTicks - elapsedTicks); - if (msecOff < -100 || msecOff > 100) - { - // Adjust the starting time forwards. - LONGLONG msecAdjustment = mymin(msecOff * - mClockFrequency.QuadPart / 1000, elapsedTime - - mPrevElapsedTime); - mStartTime.QuadPart += msecAdjustment; - elapsedTime -= msecAdjustment; - } - - // Store the current elapsed time for adjustments next time. - mPrevElapsedTime = elapsedTime; - - // Convert to microseconds. - unsigned long usecTicks = (unsigned long)(1000000 * elapsedTime / - mClockFrequency.QuadPart); - - return usecTicks; -#else - -#ifdef __CELLOS_LV2__ - uint64_t freq=sys_time_get_timebase_frequency(); - double dFreq=((double) freq)/ 1000000.0; - typedef uint64_t ClockSize; - ClockSize newTime; - //__asm __volatile__( "mftb %0" : "=r" (newTime) : : "memory"); - SYS_TIMEBASE_GET( newTime ); - - return (unsigned long int)((double(newTime-mStartTime)) / dFreq); -#else - - struct timeval currentTime; - gettimeofday(¤tTime, 0); - return (currentTime.tv_sec - mStartTime.tv_sec) * 1000000 + - (currentTime.tv_usec - mStartTime.tv_usec); -#endif//__CELLOS_LV2__ -#endif - } - -private: -#ifdef USE_WINDOWS_TIMERS - LARGE_INTEGER mClockFrequency; - DWORD mStartTick; - LONGLONG mPrevElapsedTime; - LARGE_INTEGER mStartTime; -#else -#ifdef __CELLOS_LV2__ - uint64_t mStartTime; -#else - struct timeval mStartTime; -#endif -#endif //__CELLOS_LV2__ - -}; - -#endif //USE_BT_CLOCK - - - - -///A node in the Profile Hierarchy Tree -class CProfileNode { - -public: - CProfileNode( const char * name, CProfileNode * parent ); - ~CProfileNode( void ); - - CProfileNode * Get_Sub_Node( const char * name ); - - CProfileNode * Get_Parent( void ) { return Parent; } - CProfileNode * Get_Sibling( void ) { return Sibling; } - CProfileNode * Get_Child( void ) { return Child; } - - void CleanupMemory(); - void Reset( void ); - void Call( void ); - bool Return( void ); - - const char * Get_Name( void ) { return Name; } - int Get_Total_Calls( void ) { return TotalCalls; } - float Get_Total_Time( void ) { return TotalTime; } - -protected: - - const char * Name; - int TotalCalls; - float TotalTime; - unsigned long int StartTime; - int RecursionCounter; - - CProfileNode * Parent; - CProfileNode * Child; - CProfileNode * Sibling; -}; - -///An iterator to navigate through the tree -class CProfileIterator -{ -public: - // Access all the children of the current parent - void First(void); - void Next(void); - bool Is_Done(void); - bool Is_Root(void) { return (CurrentParent->Get_Parent() == 0); } - - void Enter_Child( int index ); // Make the given child the new parent - void Enter_Largest_Child( void ); // Make the largest child the new parent - void Enter_Parent( void ); // Make the current parent's parent the new parent - - // Access the current child - const char * Get_Current_Name( void ) { return CurrentChild->Get_Name(); } - int Get_Current_Total_Calls( void ) { return CurrentChild->Get_Total_Calls(); } - float Get_Current_Total_Time( void ) { return CurrentChild->Get_Total_Time(); } - - // Access the current parent - const char * Get_Current_Parent_Name( void ) { return CurrentParent->Get_Name(); } - int Get_Current_Parent_Total_Calls( void ) { return CurrentParent->Get_Total_Calls(); } - float Get_Current_Parent_Total_Time( void ) { return CurrentParent->Get_Total_Time(); } - -protected: - - CProfileNode * CurrentParent; - CProfileNode * CurrentChild; - - CProfileIterator( CProfileNode * start ); - friend class CProfileManager; -}; - - -///The Manager for the Profile system -class CProfileManager { -public: - static void Start_Profile( const char * name ); - static void Stop_Profile( void ); - - static void CleanupMemory(void) - { - Root.CleanupMemory(); - } - - static void Reset( void ); - static void Increment_Frame_Counter( void ); - static int Get_Frame_Count_Since_Reset( void ) { return FrameCounter; } - static float Get_Time_Since_Reset( void ); - - static CProfileIterator * Get_Iterator( void ) - { - - return new CProfileIterator( &Root ); - } - static void Release_Iterator( CProfileIterator * iterator ) { delete ( iterator); } - - static void dumpRecursive(CProfileIterator* profileIterator, int spacing); - - static void dumpAll(); - -private: - static CProfileNode Root; - static CProfileNode * CurrentNode; - static int FrameCounter; - static unsigned long int ResetTime; -}; - - -///ProfileSampleClass is a simple way to profile a function's scope -///Use the BT_PROFILE macro at the start of scope to time -class CProfileSample { -public: - CProfileSample( const char * name ) - { - CProfileManager::Start_Profile( name ); - } - - ~CProfileSample( void ) - { - CProfileManager::Stop_Profile(); - } -}; - - -#define BT_PROFILE( name ) CProfileSample __profile( name ) - -#else - -#define BT_PROFILE( name ) - -#endif //#ifndef BT_NO_PROFILE - - - -#endif //QUICK_PROF_H - - diff --git a/extern/bullet2/LinearMath/btRandom.h b/extern/bullet2/LinearMath/btRandom.h deleted file mode 100644 index fdf65e01caf..00000000000 --- a/extern/bullet2/LinearMath/btRandom.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#ifndef GEN_RANDOM_H -#define GEN_RANDOM_H - -#ifdef MT19937 - -#include -#include - -#define GEN_RAND_MAX UINT_MAX - -SIMD_FORCE_INLINE void GEN_srand(unsigned int seed) { init_genrand(seed); } -SIMD_FORCE_INLINE unsigned int GEN_rand() { return genrand_int32(); } - -#else - -#include - -#define GEN_RAND_MAX RAND_MAX - -SIMD_FORCE_INLINE void GEN_srand(unsigned int seed) { srand(seed); } -SIMD_FORCE_INLINE unsigned int GEN_rand() { return rand(); } - -#endif - -#endif - diff --git a/extern/bullet2/LinearMath/btScalar.h b/extern/bullet2/LinearMath/btScalar.h deleted file mode 100644 index 9f6ceb3e0d3..00000000000 --- a/extern/bullet2/LinearMath/btScalar.h +++ /dev/null @@ -1,517 +0,0 @@ -/* -Copyright (c) 2003-2009 Erwin Coumans http://bullet.googlecode.com - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#ifndef SIMD___SCALAR_H -#define SIMD___SCALAR_H - -#ifdef BT_MANAGED_CODE -//Aligned data types not supported in managed code -#pragma unmanaged -#endif - - -#include -#include //size_t for MSVC 6.0 -#include -#include -#include - -/* SVN $Revision$ on $Date$ from http://bullet.googlecode.com*/ -#define BT_BULLET_VERSION 276 - -inline int btGetVersion() -{ - return BT_BULLET_VERSION; -} - -#if defined(DEBUG) || defined (_DEBUG) -#define BT_DEBUG -#endif - - -#ifdef _WIN32 - - #if defined(__MINGW32__) || defined(__CYGWIN__) || (defined (_MSC_VER) && _MSC_VER < 1300) - - #define SIMD_FORCE_INLINE inline - #define ATTRIBUTE_ALIGNED16(a) a - #define ATTRIBUTE_ALIGNED64(a) a - #define ATTRIBUTE_ALIGNED128(a) a - #else - //#define BT_HAS_ALIGNED_ALLOCATOR - #pragma warning(disable : 4324) // disable padding warning -// #pragma warning(disable:4530) // Disable the exception disable but used in MSCV Stl warning. -// #pragma warning(disable:4996) //Turn off warnings about deprecated C routines -// #pragma warning(disable:4786) // Disable the "debug name too long" warning - - #define SIMD_FORCE_INLINE __forceinline - #define ATTRIBUTE_ALIGNED16(a) __declspec(align(16)) a - #define ATTRIBUTE_ALIGNED64(a) __declspec(align(64)) a - #define ATTRIBUTE_ALIGNED128(a) __declspec (align(128)) a - #ifdef _XBOX - #define BT_USE_VMX128 - - #include - #define BT_HAVE_NATIVE_FSEL - #define btFsel(a,b,c) __fsel((a),(b),(c)) - #else - -#if (defined (_WIN32) && (_MSC_VER) && _MSC_VER >= 1400) && (!defined (BT_USE_DOUBLE_PRECISION)) - #define BT_USE_SSE - #include -#endif - - #endif//_XBOX - - #endif //__MINGW32__ - - #include -#ifdef BT_DEBUG - #define btAssert assert -#else - #define btAssert(x) -#endif - //btFullAssert is optional, slows down a lot - #define btFullAssert(x) - - #define btLikely(_c) _c - #define btUnlikely(_c) _c - -#else - -#if defined (__CELLOS_LV2__) - #define SIMD_FORCE_INLINE inline - #define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16))) - #define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64))) - #define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128))) - #ifndef assert - #include - #endif -#ifdef BT_DEBUG - #define btAssert assert -#else - #define btAssert(x) -#endif - //btFullAssert is optional, slows down a lot - #define btFullAssert(x) - - #define btLikely(_c) _c - #define btUnlikely(_c) _c - -#else - -#ifdef USE_LIBSPE2 - - #define SIMD_FORCE_INLINE __inline - #define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16))) - #define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64))) - #define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128))) - #ifndef assert - #include - #endif -#ifdef BT_DEBUG - #define btAssert assert -#else - #define btAssert(x) -#endif - //btFullAssert is optional, slows down a lot - #define btFullAssert(x) - - - #define btLikely(_c) __builtin_expect((_c), 1) - #define btUnlikely(_c) __builtin_expect((_c), 0) - - -#else - //non-windows systems - -#if (defined (__APPLE__) && defined (__i386__) && (!defined (BT_USE_DOUBLE_PRECISION))) - #define BT_USE_SSE - #include - - #define SIMD_FORCE_INLINE inline -///@todo: check out alignment methods for other platforms/compilers - #define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16))) - #define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64))) - #define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128))) - #ifndef assert - #include - #endif - - #if defined(DEBUG) || defined (_DEBUG) - #define btAssert assert - #else - #define btAssert(x) - #endif - - //btFullAssert is optional, slows down a lot - #define btFullAssert(x) - #define btLikely(_c) _c - #define btUnlikely(_c) _c - -#else - - #define SIMD_FORCE_INLINE inline - ///@todo: check out alignment methods for other platforms/compilers - ///#define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16))) - ///#define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64))) - ///#define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128))) - #define ATTRIBUTE_ALIGNED16(a) a - #define ATTRIBUTE_ALIGNED64(a) a - #define ATTRIBUTE_ALIGNED128(a) a - #ifndef assert - #include - #endif - -#if defined(DEBUG) || defined (_DEBUG) - #define btAssert assert -#else - #define btAssert(x) -#endif - - //btFullAssert is optional, slows down a lot - #define btFullAssert(x) - #define btLikely(_c) _c - #define btUnlikely(_c) _c -#endif //__APPLE__ - -#endif // LIBSPE2 - -#endif //__CELLOS_LV2__ -#endif - - -///The btScalar type abstracts floating point numbers, to easily switch between double and single floating point precision. -#if defined(BT_USE_DOUBLE_PRECISION) -typedef double btScalar; -//this number could be bigger in double precision -#define BT_LARGE_FLOAT 1e30 -#else -typedef float btScalar; -//keep BT_LARGE_FLOAT*BT_LARGE_FLOAT < FLT_MAX -#define BT_LARGE_FLOAT 1e18f -#endif - - - -#define BT_DECLARE_ALIGNED_ALLOCATOR() \ - SIMD_FORCE_INLINE void* operator new(size_t sizeInBytes) { return btAlignedAlloc(sizeInBytes,16); } \ - SIMD_FORCE_INLINE void operator delete(void* ptr) { btAlignedFree(ptr); } \ - SIMD_FORCE_INLINE void* operator new(size_t, void* ptr) { return ptr; } \ - SIMD_FORCE_INLINE void operator delete(void*, void*) { } \ - SIMD_FORCE_INLINE void* operator new[](size_t sizeInBytes) { return btAlignedAlloc(sizeInBytes,16); } \ - SIMD_FORCE_INLINE void operator delete[](void* ptr) { btAlignedFree(ptr); } \ - SIMD_FORCE_INLINE void* operator new[](size_t, void* ptr) { return ptr; } \ - SIMD_FORCE_INLINE void operator delete[](void*, void*) { } \ - - - -#if defined(BT_USE_DOUBLE_PRECISION) || defined(BT_FORCE_DOUBLE_FUNCTIONS) - -SIMD_FORCE_INLINE btScalar btSqrt(btScalar x) { return sqrt(x); } -SIMD_FORCE_INLINE btScalar btFabs(btScalar x) { return fabs(x); } -SIMD_FORCE_INLINE btScalar btCos(btScalar x) { return cos(x); } -SIMD_FORCE_INLINE btScalar btSin(btScalar x) { return sin(x); } -SIMD_FORCE_INLINE btScalar btTan(btScalar x) { return tan(x); } -SIMD_FORCE_INLINE btScalar btAcos(btScalar x) { if (xbtScalar(1)) x=btScalar(1); return acos(x); } -SIMD_FORCE_INLINE btScalar btAsin(btScalar x) { if (xbtScalar(1)) x=btScalar(1); return asin(x); } -SIMD_FORCE_INLINE btScalar btAtan(btScalar x) { return atan(x); } -SIMD_FORCE_INLINE btScalar btAtan2(btScalar x, btScalar y) { return atan2(x, y); } -SIMD_FORCE_INLINE btScalar btExp(btScalar x) { return exp(x); } -SIMD_FORCE_INLINE btScalar btLog(btScalar x) { return log(x); } -SIMD_FORCE_INLINE btScalar btPow(btScalar x,btScalar y) { return pow(x,y); } -SIMD_FORCE_INLINE btScalar btFmod(btScalar x,btScalar y) { return fmod(x,y); } - -#else - -SIMD_FORCE_INLINE btScalar btSqrt(btScalar y) -{ -#ifdef USE_APPROXIMATION - double x, z, tempf; - unsigned long *tfptr = ((unsigned long *)&tempf) + 1; - - tempf = y; - *tfptr = (0xbfcdd90a - *tfptr)>>1; /* estimate of 1/sqrt(y) */ - x = tempf; - z = y*btScalar(0.5); /* hoist out the “/2” */ - x = (btScalar(1.5)*x)-(x*x)*(x*z); /* iteration formula */ - x = (btScalar(1.5)*x)-(x*x)*(x*z); - x = (btScalar(1.5)*x)-(x*x)*(x*z); - x = (btScalar(1.5)*x)-(x*x)*(x*z); - x = (btScalar(1.5)*x)-(x*x)*(x*z); - return x*y; -#else - return sqrtf(y); -#endif -} -SIMD_FORCE_INLINE btScalar btFabs(btScalar x) { return fabsf(x); } -SIMD_FORCE_INLINE btScalar btCos(btScalar x) { return cosf(x); } -SIMD_FORCE_INLINE btScalar btSin(btScalar x) { return sinf(x); } -SIMD_FORCE_INLINE btScalar btTan(btScalar x) { return tanf(x); } -SIMD_FORCE_INLINE btScalar btAcos(btScalar x) { - if (xbtScalar(1)) - x=btScalar(1); - return acosf(x); -} -SIMD_FORCE_INLINE btScalar btAsin(btScalar x) { - if (xbtScalar(1)) - x=btScalar(1); - return asinf(x); -} -SIMD_FORCE_INLINE btScalar btAtan(btScalar x) { return atanf(x); } -SIMD_FORCE_INLINE btScalar btAtan2(btScalar x, btScalar y) { return atan2f(x, y); } -SIMD_FORCE_INLINE btScalar btExp(btScalar x) { return expf(x); } -SIMD_FORCE_INLINE btScalar btLog(btScalar x) { return logf(x); } -SIMD_FORCE_INLINE btScalar btPow(btScalar x,btScalar y) { return powf(x,y); } -SIMD_FORCE_INLINE btScalar btFmod(btScalar x,btScalar y) { return fmodf(x,y); } - -#endif - -#define SIMD_2_PI btScalar(6.283185307179586232) -#define SIMD_PI (SIMD_2_PI * btScalar(0.5)) -#define SIMD_HALF_PI (SIMD_2_PI * btScalar(0.25)) -#define SIMD_RADS_PER_DEG (SIMD_2_PI / btScalar(360.0)) -#define SIMD_DEGS_PER_RAD (btScalar(360.0) / SIMD_2_PI) -#define SIMDSQRT12 btScalar(0.7071067811865475244008443621048490) - -#define btRecipSqrt(x) ((btScalar)(btScalar(1.0)/btSqrt(btScalar(x)))) /* reciprocal square root */ - - -#ifdef BT_USE_DOUBLE_PRECISION -#define SIMD_EPSILON DBL_EPSILON -#define SIMD_INFINITY DBL_MAX -#else -#define SIMD_EPSILON FLT_EPSILON -#define SIMD_INFINITY FLT_MAX -#endif - -SIMD_FORCE_INLINE btScalar btAtan2Fast(btScalar y, btScalar x) -{ - btScalar coeff_1 = SIMD_PI / 4.0f; - btScalar coeff_2 = 3.0f * coeff_1; - btScalar abs_y = btFabs(y); - btScalar angle; - if (x >= 0.0f) { - btScalar r = (x - abs_y) / (x + abs_y); - angle = coeff_1 - coeff_1 * r; - } else { - btScalar r = (x + abs_y) / (abs_y - x); - angle = coeff_2 - coeff_1 * r; - } - return (y < 0.0f) ? -angle : angle; -} - -SIMD_FORCE_INLINE bool btFuzzyZero(btScalar x) { return btFabs(x) < SIMD_EPSILON; } - -SIMD_FORCE_INLINE bool btEqual(btScalar a, btScalar eps) { - return (((a) <= eps) && !((a) < -eps)); -} -SIMD_FORCE_INLINE bool btGreaterEqual (btScalar a, btScalar eps) { - return (!((a) <= eps)); -} - - -SIMD_FORCE_INLINE int btIsNegative(btScalar x) { - return x < btScalar(0.0) ? 1 : 0; -} - -SIMD_FORCE_INLINE btScalar btRadians(btScalar x) { return x * SIMD_RADS_PER_DEG; } -SIMD_FORCE_INLINE btScalar btDegrees(btScalar x) { return x * SIMD_DEGS_PER_RAD; } - -#define BT_DECLARE_HANDLE(name) typedef struct name##__ { int unused; } *name - -#ifndef btFsel -SIMD_FORCE_INLINE btScalar btFsel(btScalar a, btScalar b, btScalar c) -{ - return a >= 0 ? b : c; -} -#endif -#define btFsels(a,b,c) (btScalar)btFsel(a,b,c) - - -SIMD_FORCE_INLINE bool btMachineIsLittleEndian() -{ - long int i = 1; - const char *p = (const char *) &i; - if (p[0] == 1) // Lowest address contains the least significant byte - return true; - else - return false; -} - - - -///btSelect avoids branches, which makes performance much better for consoles like Playstation 3 and XBox 360 -///Thanks Phil Knight. See also http://www.cellperformance.com/articles/2006/04/more_techniques_for_eliminatin_1.html -SIMD_FORCE_INLINE unsigned btSelect(unsigned condition, unsigned valueIfConditionNonZero, unsigned valueIfConditionZero) -{ - // Set testNz to 0xFFFFFFFF if condition is nonzero, 0x00000000 if condition is zero - // Rely on positive value or'ed with its negative having sign bit on - // and zero value or'ed with its negative (which is still zero) having sign bit off - // Use arithmetic shift right, shifting the sign bit through all 32 bits - unsigned testNz = (unsigned)(((int)condition | -(int)condition) >> 31); - unsigned testEqz = ~testNz; - return ((valueIfConditionNonZero & testNz) | (valueIfConditionZero & testEqz)); -} -SIMD_FORCE_INLINE int btSelect(unsigned condition, int valueIfConditionNonZero, int valueIfConditionZero) -{ - unsigned testNz = (unsigned)(((int)condition | -(int)condition) >> 31); - unsigned testEqz = ~testNz; - return static_cast((valueIfConditionNonZero & testNz) | (valueIfConditionZero & testEqz)); -} -SIMD_FORCE_INLINE float btSelect(unsigned condition, float valueIfConditionNonZero, float valueIfConditionZero) -{ -#ifdef BT_HAVE_NATIVE_FSEL - return (float)btFsel((btScalar)condition - btScalar(1.0f), valueIfConditionNonZero, valueIfConditionZero); -#else - return (condition != 0) ? valueIfConditionNonZero : valueIfConditionZero; -#endif -} - -template SIMD_FORCE_INLINE void btSwap(T& a, T& b) -{ - T tmp = a; - a = b; - b = tmp; -} - - -//PCK: endian swapping functions -SIMD_FORCE_INLINE unsigned btSwapEndian(unsigned val) -{ - return (((val & 0xff000000) >> 24) | ((val & 0x00ff0000) >> 8) | ((val & 0x0000ff00) << 8) | ((val & 0x000000ff) << 24)); -} - -SIMD_FORCE_INLINE unsigned short btSwapEndian(unsigned short val) -{ - return static_cast(((val & 0xff00) >> 8) | ((val & 0x00ff) << 8)); -} - -SIMD_FORCE_INLINE unsigned btSwapEndian(int val) -{ - return btSwapEndian((unsigned)val); -} - -SIMD_FORCE_INLINE unsigned short btSwapEndian(short val) -{ - return btSwapEndian((unsigned short) val); -} - -///btSwapFloat uses using char pointers to swap the endianness -////btSwapFloat/btSwapDouble will NOT return a float, because the machine might 'correct' invalid floating point values -///Not all values of sign/exponent/mantissa are valid floating point numbers according to IEEE 754. -///When a floating point unit is faced with an invalid value, it may actually change the value, or worse, throw an exception. -///In most systems, running user mode code, you wouldn't get an exception, but instead the hardware/os/runtime will 'fix' the number for you. -///so instead of returning a float/double, we return integer/long long integer -SIMD_FORCE_INLINE unsigned int btSwapEndianFloat(float d) -{ - unsigned int a = 0; - unsigned char *dst = (unsigned char *)&a; - unsigned char *src = (unsigned char *)&d; - - dst[0] = src[3]; - dst[1] = src[2]; - dst[2] = src[1]; - dst[3] = src[0]; - return a; -} - -// unswap using char pointers -SIMD_FORCE_INLINE float btUnswapEndianFloat(unsigned int a) -{ - float d = 0.0f; - unsigned char *src = (unsigned char *)&a; - unsigned char *dst = (unsigned char *)&d; - - dst[0] = src[3]; - dst[1] = src[2]; - dst[2] = src[1]; - dst[3] = src[0]; - - return d; -} - - -// swap using char pointers -SIMD_FORCE_INLINE void btSwapEndianDouble(double d, unsigned char* dst) -{ - unsigned char *src = (unsigned char *)&d; - - dst[0] = src[7]; - dst[1] = src[6]; - dst[2] = src[5]; - dst[3] = src[4]; - dst[4] = src[3]; - dst[5] = src[2]; - dst[6] = src[1]; - dst[7] = src[0]; - -} - -// unswap using char pointers -SIMD_FORCE_INLINE double btUnswapEndianDouble(const unsigned char *src) -{ - double d = 0.0; - unsigned char *dst = (unsigned char *)&d; - - dst[0] = src[7]; - dst[1] = src[6]; - dst[2] = src[5]; - dst[3] = src[4]; - dst[4] = src[3]; - dst[5] = src[2]; - dst[6] = src[1]; - dst[7] = src[0]; - - return d; -} - -// returns normalized value in range [-SIMD_PI, SIMD_PI] -SIMD_FORCE_INLINE btScalar btNormalizeAngle(btScalar angleInRadians) -{ - angleInRadians = btFmod(angleInRadians, SIMD_2_PI); - if(angleInRadians < -SIMD_PI) - { - return angleInRadians + SIMD_2_PI; - } - else if(angleInRadians > SIMD_PI) - { - return angleInRadians - SIMD_2_PI; - } - else - { - return angleInRadians; - } -} - -///rudimentary class to provide type info -struct btTypedObject -{ - btTypedObject(int objectType) - :m_objectType(objectType) - { - } - int m_objectType; - inline int getObjectType() const - { - return m_objectType; - } -}; -#endif //SIMD___SCALAR_H diff --git a/extern/bullet2/LinearMath/btSerializer.cpp b/extern/bullet2/LinearMath/btSerializer.cpp deleted file mode 100644 index 10f613a0aba..00000000000 --- a/extern/bullet2/LinearMath/btSerializer.cpp +++ /dev/null @@ -1,577 +0,0 @@ -unsigned char sBulletDNAstr64[]= { -83,68,78,65,78,65,77,69,-79,0,0,0,109,95,115,105,122,101,0,109, -95,99,97,112,97,99,105,116,121,0,42,109,95,100,97,116,97,0,109,95, -99,111,108,108,105,115,105,111,110,83,104,97,112,101,115,0,109,95,99,111, -108,108,105,115,105,111,110,79,98,106,101,99,116,115,0,109,95,99,111,110, -115,116,114,97,105,110,116,115,0,42,102,105,114,115,116,0,42,108,97,115, -116,0,109,95,102,108,111,97,116,115,91,52,93,0,109,95,101,108,91,51, -93,0,109,95,98,97,115,105,115,0,109,95,111,114,105,103,105,110,0,109, -95,114,111,111,116,78,111,100,101,73,110,100,101,120,0,109,95,115,117,98, -116,114,101,101,83,105,122,101,0,109,95,113,117,97,110,116,105,122,101,100, -65,97,98,98,77,105,110,91,51,93,0,109,95,113,117,97,110,116,105,122, -101,100,65,97,98,98,77,97,120,91,51,93,0,109,95,97,97,98,98,77, -105,110,79,114,103,0,109,95,97,97,98,98,77,97,120,79,114,103,0,109, -95,101,115,99,97,112,101,73,110,100,101,120,0,109,95,115,117,98,80,97, -114,116,0,109,95,116,114,105,97,110,103,108,101,73,110,100,101,120,0,109, -95,112,97,100,91,52,93,0,109,95,101,115,99,97,112,101,73,110,100,101, -120,79,114,84,114,105,97,110,103,108,101,73,110,100,101,120,0,109,95,98, -118,104,65,97,98,98,77,105,110,0,109,95,98,118,104,65,97,98,98,77, -97,120,0,109,95,98,118,104,81,117,97,110,116,105,122,97,116,105,111,110, -0,109,95,99,117,114,78,111,100,101,73,110,100,101,120,0,109,95,117,115, -101,81,117,97,110,116,105,122,97,116,105,111,110,0,109,95,110,117,109,67, -111,110,116,105,103,117,111,117,115,76,101,97,102,78,111,100,101,115,0,109, -95,110,117,109,81,117,97,110,116,105,122,101,100,67,111,110,116,105,103,117, -111,117,115,78,111,100,101,115,0,42,109,95,99,111,110,116,105,103,117,111, -117,115,78,111,100,101,115,80,116,114,0,42,109,95,113,117,97,110,116,105, -122,101,100,67,111,110,116,105,103,117,111,117,115,78,111,100,101,115,80,116, -114,0,42,109,95,115,117,98,84,114,101,101,73,110,102,111,80,116,114,0, -109,95,116,114,97,118,101,114,115,97,108,77,111,100,101,0,109,95,110,117, -109,83,117,98,116,114,101,101,72,101,97,100,101,114,115,0,42,109,95,110, -97,109,101,0,109,95,115,104,97,112,101,84,121,112,101,0,109,95,112,97, -100,100,105,110,103,91,52,93,0,109,95,99,111,108,108,105,115,105,111,110, -83,104,97,112,101,68,97,116,97,0,109,95,108,111,99,97,108,83,99,97, -108,105,110,103,0,109,95,112,108,97,110,101,78,111,114,109,97,108,0,109, -95,112,108,97,110,101,67,111,110,115,116,97,110,116,0,109,95,105,109,112, -108,105,99,105,116,83,104,97,112,101,68,105,109,101,110,115,105,111,110,115, -0,109,95,99,111,108,108,105,115,105,111,110,77,97,114,103,105,110,0,109, -95,112,97,100,100,105,110,103,0,109,95,112,111,115,0,109,95,114,97,100, -105,117,115,0,109,95,99,111,110,118,101,120,73,110,116,101,114,110,97,108, -83,104,97,112,101,68,97,116,97,0,42,109,95,108,111,99,97,108,80,111, -115,105,116,105,111,110,65,114,114,97,121,80,116,114,0,109,95,108,111,99, -97,108,80,111,115,105,116,105,111,110,65,114,114,97,121,83,105,122,101,0, -109,95,118,97,108,117,101,0,109,95,112,97,100,91,50,93,0,109,95,118, -97,108,117,101,115,91,51,93,0,42,109,95,118,101,114,116,105,99,101,115, -51,102,0,42,109,95,118,101,114,116,105,99,101,115,51,100,0,42,109,95, -105,110,100,105,99,101,115,51,50,0,42,109,95,51,105,110,100,105,99,101, -115,49,54,0,42,109,95,105,110,100,105,99,101,115,49,54,0,109,95,110, -117,109,84,114,105,97,110,103,108,101,115,0,109,95,110,117,109,86,101,114, -116,105,99,101,115,0,42,109,95,109,101,115,104,80,97,114,116,115,80,116, -114,0,109,95,115,99,97,108,105,110,103,0,109,95,110,117,109,77,101,115, -104,80,97,114,116,115,0,109,95,109,101,115,104,73,110,116,101,114,102,97, -99,101,0,42,109,95,113,117,97,110,116,105,122,101,100,70,108,111,97,116, -66,118,104,0,42,109,95,113,117,97,110,116,105,122,101,100,68,111,117,98, -108,101,66,118,104,0,42,109,95,116,114,105,97,110,103,108,101,73,110,102, -111,77,97,112,0,109,95,112,97,100,51,91,52,93,0,109,95,116,114,97, -110,115,102,111,114,109,0,42,109,95,99,104,105,108,100,83,104,97,112,101, -0,109,95,99,104,105,108,100,83,104,97,112,101,84,121,112,101,0,109,95, -99,104,105,108,100,77,97,114,103,105,110,0,42,109,95,99,104,105,108,100, -83,104,97,112,101,80,116,114,0,109,95,110,117,109,67,104,105,108,100,83, -104,97,112,101,115,0,109,95,117,112,65,120,105,115,0,109,95,102,108,97, -103,115,0,109,95,101,100,103,101,86,48,86,49,65,110,103,108,101,0,109, -95,101,100,103,101,86,49,86,50,65,110,103,108,101,0,109,95,101,100,103, -101,86,50,86,48,65,110,103,108,101,0,42,109,95,104,97,115,104,84,97, -98,108,101,80,116,114,0,42,109,95,110,101,120,116,80,116,114,0,42,109, -95,118,97,108,117,101,65,114,114,97,121,80,116,114,0,42,109,95,107,101, -121,65,114,114,97,121,80,116,114,0,109,95,99,111,110,118,101,120,69,112, -115,105,108,111,110,0,109,95,112,108,97,110,97,114,69,112,115,105,108,111, -110,0,109,95,101,113,117,97,108,86,101,114,116,101,120,84,104,114,101,115, -104,111,108,100,0,109,95,101,100,103,101,68,105,115,116,97,110,99,101,84, -104,114,101,115,104,111,108,100,0,109,95,122,101,114,111,65,114,101,97,84, -104,114,101,115,104,111,108,100,0,109,95,110,101,120,116,83,105,122,101,0, -109,95,104,97,115,104,84,97,98,108,101,83,105,122,101,0,109,95,110,117, -109,86,97,108,117,101,115,0,109,95,110,117,109,75,101,121,115,0,109,95, -103,105,109,112,97,99,116,83,117,98,84,121,112,101,0,42,109,95,117,110, -115,99,97,108,101,100,80,111,105,110,116,115,70,108,111,97,116,80,116,114, -0,42,109,95,117,110,115,99,97,108,101,100,80,111,105,110,116,115,68,111, -117,98,108,101,80,116,114,0,109,95,110,117,109,85,110,115,99,97,108,101, -100,80,111,105,110,116,115,0,109,95,112,97,100,100,105,110,103,51,91,52, -93,0,42,109,95,98,114,111,97,100,112,104,97,115,101,72,97,110,100,108, -101,0,42,109,95,99,111,108,108,105,115,105,111,110,83,104,97,112,101,0, -42,109,95,114,111,111,116,67,111,108,108,105,115,105,111,110,83,104,97,112, -101,0,109,95,119,111,114,108,100,84,114,97,110,115,102,111,114,109,0,109, -95,105,110,116,101,114,112,111,108,97,116,105,111,110,87,111,114,108,100,84, -114,97,110,115,102,111,114,109,0,109,95,105,110,116,101,114,112,111,108,97, -116,105,111,110,76,105,110,101,97,114,86,101,108,111,99,105,116,121,0,109, -95,105,110,116,101,114,112,111,108,97,116,105,111,110,65,110,103,117,108,97, -114,86,101,108,111,99,105,116,121,0,109,95,97,110,105,115,111,116,114,111, -112,105,99,70,114,105,99,116,105,111,110,0,109,95,99,111,110,116,97,99, -116,80,114,111,99,101,115,115,105,110,103,84,104,114,101,115,104,111,108,100, -0,109,95,100,101,97,99,116,105,118,97,116,105,111,110,84,105,109,101,0, -109,95,102,114,105,99,116,105,111,110,0,109,95,114,101,115,116,105,116,117, -116,105,111,110,0,109,95,104,105,116,70,114,97,99,116,105,111,110,0,109, -95,99,99,100,83,119,101,112,116,83,112,104,101,114,101,82,97,100,105,117, -115,0,109,95,99,99,100,77,111,116,105,111,110,84,104,114,101,115,104,111, -108,100,0,109,95,104,97,115,65,110,105,115,111,116,114,111,112,105,99,70, -114,105,99,116,105,111,110,0,109,95,99,111,108,108,105,115,105,111,110,70, -108,97,103,115,0,109,95,105,115,108,97,110,100,84,97,103,49,0,109,95, -99,111,109,112,97,110,105,111,110,73,100,0,109,95,97,99,116,105,118,97, -116,105,111,110,83,116,97,116,101,49,0,109,95,105,110,116,101,114,110,97, -108,84,121,112,101,0,109,95,99,104,101,99,107,67,111,108,108,105,100,101, -87,105,116,104,0,109,95,99,111,108,108,105,115,105,111,110,79,98,106,101, -99,116,68,97,116,97,0,109,95,105,110,118,73,110,101,114,116,105,97,84, -101,110,115,111,114,87,111,114,108,100,0,109,95,108,105,110,101,97,114,86, -101,108,111,99,105,116,121,0,109,95,97,110,103,117,108,97,114,86,101,108, -111,99,105,116,121,0,109,95,97,110,103,117,108,97,114,70,97,99,116,111, -114,0,109,95,108,105,110,101,97,114,70,97,99,116,111,114,0,109,95,103, -114,97,118,105,116,121,0,109,95,103,114,97,118,105,116,121,95,97,99,99, -101,108,101,114,97,116,105,111,110,0,109,95,105,110,118,73,110,101,114,116, -105,97,76,111,99,97,108,0,109,95,116,111,116,97,108,70,111,114,99,101, -0,109,95,116,111,116,97,108,84,111,114,113,117,101,0,109,95,105,110,118, -101,114,115,101,77,97,115,115,0,109,95,108,105,110,101,97,114,68,97,109, -112,105,110,103,0,109,95,97,110,103,117,108,97,114,68,97,109,112,105,110, -103,0,109,95,97,100,100,105,116,105,111,110,97,108,68,97,109,112,105,110, -103,70,97,99,116,111,114,0,109,95,97,100,100,105,116,105,111,110,97,108, -76,105,110,101,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111, -108,100,83,113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110, -103,117,108,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111,108, -100,83,113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110,103, -117,108,97,114,68,97,109,112,105,110,103,70,97,99,116,111,114,0,109,95, -108,105,110,101,97,114,83,108,101,101,112,105,110,103,84,104,114,101,115,104, -111,108,100,0,109,95,97,110,103,117,108,97,114,83,108,101,101,112,105,110, -103,84,104,114,101,115,104,111,108,100,0,109,95,97,100,100,105,116,105,111, -110,97,108,68,97,109,112,105,110,103,0,109,95,110,117,109,67,111,110,115, -116,114,97,105,110,116,82,111,119,115,0,110,117,98,0,42,109,95,114,98, -65,0,42,109,95,114,98,66,0,109,95,111,98,106,101,99,116,84,121,112, -101,0,109,95,117,115,101,114,67,111,110,115,116,114,97,105,110,116,84,121, -112,101,0,109,95,117,115,101,114,67,111,110,115,116,114,97,105,110,116,73, -100,0,109,95,110,101,101,100,115,70,101,101,100,98,97,99,107,0,109,95, -97,112,112,108,105,101,100,73,109,112,117,108,115,101,0,109,95,100,98,103, -68,114,97,119,83,105,122,101,0,109,95,100,105,115,97,98,108,101,67,111, -108,108,105,115,105,111,110,115,66,101,116,119,101,101,110,76,105,110,107,101, -100,66,111,100,105,101,115,0,109,95,112,97,100,52,91,52,93,0,109,95, -116,121,112,101,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,109, -95,112,105,118,111,116,73,110,65,0,109,95,112,105,118,111,116,73,110,66, -0,109,95,114,98,65,70,114,97,109,101,0,109,95,114,98,66,70,114,97, -109,101,0,109,95,117,115,101,82,101,102,101,114,101,110,99,101,70,114,97, -109,101,65,0,109,95,97,110,103,117,108,97,114,79,110,108,121,0,109,95, -101,110,97,98,108,101,65,110,103,117,108,97,114,77,111,116,111,114,0,109, -95,109,111,116,111,114,84,97,114,103,101,116,86,101,108,111,99,105,116,121, -0,109,95,109,97,120,77,111,116,111,114,73,109,112,117,108,115,101,0,109, -95,108,111,119,101,114,76,105,109,105,116,0,109,95,117,112,112,101,114,76, -105,109,105,116,0,109,95,108,105,109,105,116,83,111,102,116,110,101,115,115, -0,109,95,98,105,97,115,70,97,99,116,111,114,0,109,95,114,101,108,97, -120,97,116,105,111,110,70,97,99,116,111,114,0,109,95,115,119,105,110,103, -83,112,97,110,49,0,109,95,115,119,105,110,103,83,112,97,110,50,0,109, -95,116,119,105,115,116,83,112,97,110,0,109,95,100,97,109,112,105,110,103, -0,109,95,108,105,110,101,97,114,85,112,112,101,114,76,105,109,105,116,0, -109,95,108,105,110,101,97,114,76,111,119,101,114,76,105,109,105,116,0,109, -95,97,110,103,117,108,97,114,85,112,112,101,114,76,105,109,105,116,0,109, -95,97,110,103,117,108,97,114,76,111,119,101,114,76,105,109,105,116,0,109, -95,117,115,101,76,105,110,101,97,114,82,101,102,101,114,101,110,99,101,70, -114,97,109,101,65,0,109,95,117,115,101,79,102,102,115,101,116,70,111,114, -67,111,110,115,116,114,97,105,110,116,70,114,97,109,101,0,84,89,80,69, -58,0,0,0,99,104,97,114,0,117,99,104,97,114,0,115,104,111,114,116, -0,117,115,104,111,114,116,0,105,110,116,0,108,111,110,103,0,117,108,111, -110,103,0,102,108,111,97,116,0,100,111,117,98,108,101,0,118,111,105,100, -0,80,111,105,110,116,101,114,65,114,114,97,121,0,98,116,80,104,121,115, -105,99,115,83,121,115,116,101,109,0,76,105,115,116,66,97,115,101,0,98, -116,86,101,99,116,111,114,51,70,108,111,97,116,68,97,116,97,0,98,116, -86,101,99,116,111,114,51,68,111,117,98,108,101,68,97,116,97,0,98,116, -77,97,116,114,105,120,51,120,51,70,108,111,97,116,68,97,116,97,0,98, -116,77,97,116,114,105,120,51,120,51,68,111,117,98,108,101,68,97,116,97, -0,98,116,84,114,97,110,115,102,111,114,109,70,108,111,97,116,68,97,116, -97,0,98,116,84,114,97,110,115,102,111,114,109,68,111,117,98,108,101,68, -97,116,97,0,98,116,66,118,104,83,117,98,116,114,101,101,73,110,102,111, -68,97,116,97,0,98,116,79,112,116,105,109,105,122,101,100,66,118,104,78, -111,100,101,70,108,111,97,116,68,97,116,97,0,98,116,79,112,116,105,109, -105,122,101,100,66,118,104,78,111,100,101,68,111,117,98,108,101,68,97,116, -97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,78,111,100,101, -68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,70, -108,111,97,116,68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100, -66,118,104,68,111,117,98,108,101,68,97,116,97,0,98,116,67,111,108,108, -105,115,105,111,110,83,104,97,112,101,68,97,116,97,0,98,116,83,116,97, -116,105,99,80,108,97,110,101,83,104,97,112,101,68,97,116,97,0,98,116, -67,111,110,118,101,120,73,110,116,101,114,110,97,108,83,104,97,112,101,68, -97,116,97,0,98,116,80,111,115,105,116,105,111,110,65,110,100,82,97,100, -105,117,115,0,98,116,77,117,108,116,105,83,112,104,101,114,101,83,104,97, -112,101,68,97,116,97,0,98,116,73,110,116,73,110,100,101,120,68,97,116, -97,0,98,116,83,104,111,114,116,73,110,116,73,110,100,101,120,68,97,116, -97,0,98,116,83,104,111,114,116,73,110,116,73,110,100,101,120,84,114,105, -112,108,101,116,68,97,116,97,0,98,116,77,101,115,104,80,97,114,116,68, -97,116,97,0,98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110, -116,101,114,102,97,99,101,68,97,116,97,0,98,116,84,114,105,97,110,103, -108,101,77,101,115,104,83,104,97,112,101,68,97,116,97,0,98,116,84,114, -105,97,110,103,108,101,73,110,102,111,77,97,112,68,97,116,97,0,98,116, -67,111,109,112,111,117,110,100,83,104,97,112,101,67,104,105,108,100,68,97, -116,97,0,98,116,67,111,109,112,111,117,110,100,83,104,97,112,101,68,97, -116,97,0,98,116,67,121,108,105,110,100,101,114,83,104,97,112,101,68,97, -116,97,0,98,116,67,97,112,115,117,108,101,83,104,97,112,101,68,97,116, -97,0,98,116,84,114,105,97,110,103,108,101,73,110,102,111,68,97,116,97, -0,98,116,71,73,109,112,97,99,116,77,101,115,104,83,104,97,112,101,68, -97,116,97,0,98,116,67,111,110,118,101,120,72,117,108,108,83,104,97,112, -101,68,97,116,97,0,98,116,67,111,108,108,105,115,105,111,110,79,98,106, -101,99,116,68,111,117,98,108,101,68,97,116,97,0,98,116,67,111,108,108, -105,115,105,111,110,79,98,106,101,99,116,70,108,111,97,116,68,97,116,97, -0,98,116,82,105,103,105,100,66,111,100,121,70,108,111,97,116,68,97,116, -97,0,98,116,82,105,103,105,100,66,111,100,121,68,111,117,98,108,101,68, -97,116,97,0,98,116,67,111,110,115,116,114,97,105,110,116,73,110,102,111, -49,0,98,116,84,121,112,101,100,67,111,110,115,116,114,97,105,110,116,68, -97,116,97,0,98,116,82,105,103,105,100,66,111,100,121,68,97,116,97,0, -98,116,80,111,105,110,116,50,80,111,105,110,116,67,111,110,115,116,114,97, -105,110,116,70,108,111,97,116,68,97,116,97,0,98,116,80,111,105,110,116, -50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,68,111,117,98, -108,101,68,97,116,97,0,98,116,72,105,110,103,101,67,111,110,115,116,114, -97,105,110,116,68,111,117,98,108,101,68,97,116,97,0,98,116,72,105,110, -103,101,67,111,110,115,116,114,97,105,110,116,70,108,111,97,116,68,97,116, -97,0,98,116,67,111,110,101,84,119,105,115,116,67,111,110,115,116,114,97, -105,110,116,68,97,116,97,0,98,116,71,101,110,101,114,105,99,54,68,111, -102,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,98,116,83,108, -105,100,101,114,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,0, -84,76,69,78,1,0,1,0,2,0,2,0,4,0,4,0,4,0,4,0, -8,0,0,0,16,0,48,0,16,0,16,0,32,0,48,0,96,0,64,0, --128,0,20,0,48,0,80,0,16,0,96,0,-112,0,16,0,56,0,56,0, -20,0,72,0,4,0,4,0,8,0,48,0,32,0,80,0,72,0,80,0, -32,0,64,0,64,0,16,0,72,0,80,0,-40,1,8,1,-16,1,-88,3, -8,0,56,0,0,0,88,0,120,0,96,1,-32,0,-40,0,0,1,-48,0, -83,84,82,67,47,0,0,0,10,0,3,0,4,0,0,0,4,0,1,0, -9,0,2,0,11,0,3,0,10,0,3,0,10,0,4,0,10,0,5,0, -12,0,2,0,9,0,6,0,9,0,7,0,13,0,1,0,7,0,8,0, -14,0,1,0,8,0,8,0,15,0,1,0,13,0,9,0,16,0,1,0, -14,0,9,0,17,0,2,0,15,0,10,0,13,0,11,0,18,0,2,0, -16,0,10,0,14,0,11,0,19,0,4,0,4,0,12,0,4,0,13,0, -2,0,14,0,2,0,15,0,20,0,6,0,13,0,16,0,13,0,17,0, -4,0,18,0,4,0,19,0,4,0,20,0,0,0,21,0,21,0,6,0, -14,0,16,0,14,0,17,0,4,0,18,0,4,0,19,0,4,0,20,0, -0,0,21,0,22,0,3,0,2,0,14,0,2,0,15,0,4,0,22,0, -23,0,12,0,13,0,23,0,13,0,24,0,13,0,25,0,4,0,26,0, -4,0,27,0,4,0,28,0,4,0,29,0,20,0,30,0,22,0,31,0, -19,0,32,0,4,0,33,0,4,0,34,0,24,0,12,0,14,0,23,0, -14,0,24,0,14,0,25,0,4,0,26,0,4,0,27,0,4,0,28,0, -4,0,29,0,21,0,30,0,22,0,31,0,4,0,33,0,4,0,34,0, -19,0,32,0,25,0,3,0,0,0,35,0,4,0,36,0,0,0,37,0, -26,0,5,0,25,0,38,0,13,0,39,0,13,0,40,0,7,0,41,0, -0,0,21,0,27,0,5,0,25,0,38,0,13,0,39,0,13,0,42,0, -7,0,43,0,4,0,44,0,28,0,2,0,13,0,45,0,7,0,46,0, -29,0,4,0,27,0,47,0,28,0,48,0,4,0,49,0,0,0,37,0, -30,0,1,0,4,0,50,0,31,0,2,0,2,0,50,0,0,0,51,0, -32,0,2,0,2,0,52,0,0,0,51,0,33,0,7,0,13,0,53,0, -14,0,54,0,30,0,55,0,32,0,56,0,31,0,57,0,4,0,58,0, -4,0,59,0,34,0,4,0,33,0,60,0,13,0,61,0,4,0,62,0, -0,0,37,0,35,0,7,0,25,0,38,0,34,0,63,0,23,0,64,0, -24,0,65,0,36,0,66,0,7,0,43,0,0,0,67,0,37,0,4,0, -17,0,68,0,25,0,69,0,4,0,70,0,7,0,71,0,38,0,4,0, -25,0,38,0,37,0,72,0,4,0,73,0,7,0,43,0,39,0,3,0, -27,0,47,0,4,0,74,0,0,0,37,0,40,0,3,0,27,0,47,0, -4,0,74,0,0,0,37,0,41,0,4,0,4,0,75,0,7,0,76,0, -7,0,77,0,7,0,78,0,36,0,14,0,4,0,79,0,4,0,80,0, -41,0,81,0,4,0,82,0,7,0,83,0,7,0,84,0,7,0,85,0, -7,0,86,0,7,0,87,0,4,0,88,0,4,0,89,0,4,0,90,0, -4,0,91,0,0,0,37,0,42,0,5,0,25,0,38,0,34,0,63,0, -13,0,39,0,7,0,43,0,4,0,92,0,43,0,5,0,27,0,47,0, -13,0,93,0,14,0,94,0,4,0,95,0,0,0,96,0,44,0,24,0, -9,0,97,0,9,0,98,0,25,0,99,0,0,0,35,0,18,0,100,0, -18,0,101,0,14,0,102,0,14,0,103,0,14,0,104,0,8,0,105,0, -8,0,106,0,8,0,107,0,8,0,108,0,8,0,109,0,8,0,110,0, -8,0,111,0,4,0,112,0,4,0,113,0,4,0,114,0,4,0,115,0, -4,0,116,0,4,0,117,0,4,0,118,0,0,0,37,0,45,0,23,0, -9,0,97,0,9,0,98,0,25,0,99,0,0,0,35,0,17,0,100,0, -17,0,101,0,13,0,102,0,13,0,103,0,13,0,104,0,7,0,105,0, -7,0,106,0,7,0,107,0,7,0,108,0,7,0,109,0,7,0,110,0, -7,0,111,0,4,0,112,0,4,0,113,0,4,0,114,0,4,0,115,0, -4,0,116,0,4,0,117,0,4,0,118,0,46,0,21,0,45,0,119,0, -15,0,120,0,13,0,121,0,13,0,122,0,13,0,123,0,13,0,124,0, -13,0,125,0,13,0,126,0,13,0,127,0,13,0,-128,0,13,0,-127,0, -7,0,-126,0,7,0,-125,0,7,0,-124,0,7,0,-123,0,7,0,-122,0, -7,0,-121,0,7,0,-120,0,7,0,-119,0,7,0,-118,0,4,0,-117,0, -47,0,22,0,44,0,119,0,16,0,120,0,14,0,121,0,14,0,122,0, -14,0,123,0,14,0,124,0,14,0,125,0,14,0,126,0,14,0,127,0, -14,0,-128,0,14,0,-127,0,8,0,-126,0,8,0,-125,0,8,0,-124,0, -8,0,-123,0,8,0,-122,0,8,0,-121,0,8,0,-120,0,8,0,-119,0, -8,0,-118,0,4,0,-117,0,0,0,37,0,48,0,2,0,4,0,-116,0, -4,0,-115,0,49,0,11,0,50,0,-114,0,50,0,-113,0,0,0,35,0, -4,0,-112,0,4,0,-111,0,4,0,-110,0,4,0,-109,0,7,0,-108,0, -7,0,-107,0,4,0,-106,0,0,0,-105,0,51,0,3,0,49,0,-104,0, -13,0,-103,0,13,0,-102,0,52,0,3,0,49,0,-104,0,14,0,-103,0, -14,0,-102,0,53,0,13,0,49,0,-104,0,18,0,-101,0,18,0,-100,0, -4,0,-99,0,4,0,-98,0,4,0,-97,0,7,0,-96,0,7,0,-95,0, -7,0,-94,0,7,0,-93,0,7,0,-92,0,7,0,-91,0,7,0,-90,0, -54,0,13,0,49,0,-104,0,17,0,-101,0,17,0,-100,0,4,0,-99,0, -4,0,-98,0,4,0,-97,0,7,0,-96,0,7,0,-95,0,7,0,-94,0, -7,0,-93,0,7,0,-92,0,7,0,-91,0,7,0,-90,0,55,0,11,0, -49,0,-104,0,17,0,-101,0,17,0,-100,0,7,0,-89,0,7,0,-88,0, -7,0,-87,0,7,0,-92,0,7,0,-91,0,7,0,-90,0,7,0,-86,0, -0,0,21,0,56,0,9,0,49,0,-104,0,17,0,-101,0,17,0,-100,0, -13,0,-85,0,13,0,-84,0,13,0,-83,0,13,0,-82,0,4,0,-81,0, -4,0,-80,0,57,0,9,0,49,0,-104,0,17,0,-101,0,17,0,-100,0, -7,0,-85,0,7,0,-84,0,7,0,-83,0,7,0,-82,0,4,0,-81,0, -4,0,-80,0,}; -int sBulletDNAlen64= sizeof(sBulletDNAstr64); - -unsigned char sBulletDNAstr[]= { -83,68,78,65,78,65,77,69,-79,0,0,0,109,95,115,105,122,101,0,109, -95,99,97,112,97,99,105,116,121,0,42,109,95,100,97,116,97,0,109,95, -99,111,108,108,105,115,105,111,110,83,104,97,112,101,115,0,109,95,99,111, -108,108,105,115,105,111,110,79,98,106,101,99,116,115,0,109,95,99,111,110, -115,116,114,97,105,110,116,115,0,42,102,105,114,115,116,0,42,108,97,115, -116,0,109,95,102,108,111,97,116,115,91,52,93,0,109,95,101,108,91,51, -93,0,109,95,98,97,115,105,115,0,109,95,111,114,105,103,105,110,0,109, -95,114,111,111,116,78,111,100,101,73,110,100,101,120,0,109,95,115,117,98, -116,114,101,101,83,105,122,101,0,109,95,113,117,97,110,116,105,122,101,100, -65,97,98,98,77,105,110,91,51,93,0,109,95,113,117,97,110,116,105,122, -101,100,65,97,98,98,77,97,120,91,51,93,0,109,95,97,97,98,98,77, -105,110,79,114,103,0,109,95,97,97,98,98,77,97,120,79,114,103,0,109, -95,101,115,99,97,112,101,73,110,100,101,120,0,109,95,115,117,98,80,97, -114,116,0,109,95,116,114,105,97,110,103,108,101,73,110,100,101,120,0,109, -95,112,97,100,91,52,93,0,109,95,101,115,99,97,112,101,73,110,100,101, -120,79,114,84,114,105,97,110,103,108,101,73,110,100,101,120,0,109,95,98, -118,104,65,97,98,98,77,105,110,0,109,95,98,118,104,65,97,98,98,77, -97,120,0,109,95,98,118,104,81,117,97,110,116,105,122,97,116,105,111,110, -0,109,95,99,117,114,78,111,100,101,73,110,100,101,120,0,109,95,117,115, -101,81,117,97,110,116,105,122,97,116,105,111,110,0,109,95,110,117,109,67, -111,110,116,105,103,117,111,117,115,76,101,97,102,78,111,100,101,115,0,109, -95,110,117,109,81,117,97,110,116,105,122,101,100,67,111,110,116,105,103,117, -111,117,115,78,111,100,101,115,0,42,109,95,99,111,110,116,105,103,117,111, -117,115,78,111,100,101,115,80,116,114,0,42,109,95,113,117,97,110,116,105, -122,101,100,67,111,110,116,105,103,117,111,117,115,78,111,100,101,115,80,116, -114,0,42,109,95,115,117,98,84,114,101,101,73,110,102,111,80,116,114,0, -109,95,116,114,97,118,101,114,115,97,108,77,111,100,101,0,109,95,110,117, -109,83,117,98,116,114,101,101,72,101,97,100,101,114,115,0,42,109,95,110, -97,109,101,0,109,95,115,104,97,112,101,84,121,112,101,0,109,95,112,97, -100,100,105,110,103,91,52,93,0,109,95,99,111,108,108,105,115,105,111,110, -83,104,97,112,101,68,97,116,97,0,109,95,108,111,99,97,108,83,99,97, -108,105,110,103,0,109,95,112,108,97,110,101,78,111,114,109,97,108,0,109, -95,112,108,97,110,101,67,111,110,115,116,97,110,116,0,109,95,105,109,112, -108,105,99,105,116,83,104,97,112,101,68,105,109,101,110,115,105,111,110,115, -0,109,95,99,111,108,108,105,115,105,111,110,77,97,114,103,105,110,0,109, -95,112,97,100,100,105,110,103,0,109,95,112,111,115,0,109,95,114,97,100, -105,117,115,0,109,95,99,111,110,118,101,120,73,110,116,101,114,110,97,108, -83,104,97,112,101,68,97,116,97,0,42,109,95,108,111,99,97,108,80,111, -115,105,116,105,111,110,65,114,114,97,121,80,116,114,0,109,95,108,111,99, -97,108,80,111,115,105,116,105,111,110,65,114,114,97,121,83,105,122,101,0, -109,95,118,97,108,117,101,0,109,95,112,97,100,91,50,93,0,109,95,118, -97,108,117,101,115,91,51,93,0,42,109,95,118,101,114,116,105,99,101,115, -51,102,0,42,109,95,118,101,114,116,105,99,101,115,51,100,0,42,109,95, -105,110,100,105,99,101,115,51,50,0,42,109,95,51,105,110,100,105,99,101, -115,49,54,0,42,109,95,105,110,100,105,99,101,115,49,54,0,109,95,110, -117,109,84,114,105,97,110,103,108,101,115,0,109,95,110,117,109,86,101,114, -116,105,99,101,115,0,42,109,95,109,101,115,104,80,97,114,116,115,80,116, -114,0,109,95,115,99,97,108,105,110,103,0,109,95,110,117,109,77,101,115, -104,80,97,114,116,115,0,109,95,109,101,115,104,73,110,116,101,114,102,97, -99,101,0,42,109,95,113,117,97,110,116,105,122,101,100,70,108,111,97,116, -66,118,104,0,42,109,95,113,117,97,110,116,105,122,101,100,68,111,117,98, -108,101,66,118,104,0,42,109,95,116,114,105,97,110,103,108,101,73,110,102, -111,77,97,112,0,109,95,112,97,100,51,91,52,93,0,109,95,116,114,97, -110,115,102,111,114,109,0,42,109,95,99,104,105,108,100,83,104,97,112,101, -0,109,95,99,104,105,108,100,83,104,97,112,101,84,121,112,101,0,109,95, -99,104,105,108,100,77,97,114,103,105,110,0,42,109,95,99,104,105,108,100, -83,104,97,112,101,80,116,114,0,109,95,110,117,109,67,104,105,108,100,83, -104,97,112,101,115,0,109,95,117,112,65,120,105,115,0,109,95,102,108,97, -103,115,0,109,95,101,100,103,101,86,48,86,49,65,110,103,108,101,0,109, -95,101,100,103,101,86,49,86,50,65,110,103,108,101,0,109,95,101,100,103, -101,86,50,86,48,65,110,103,108,101,0,42,109,95,104,97,115,104,84,97, -98,108,101,80,116,114,0,42,109,95,110,101,120,116,80,116,114,0,42,109, -95,118,97,108,117,101,65,114,114,97,121,80,116,114,0,42,109,95,107,101, -121,65,114,114,97,121,80,116,114,0,109,95,99,111,110,118,101,120,69,112, -115,105,108,111,110,0,109,95,112,108,97,110,97,114,69,112,115,105,108,111, -110,0,109,95,101,113,117,97,108,86,101,114,116,101,120,84,104,114,101,115, -104,111,108,100,0,109,95,101,100,103,101,68,105,115,116,97,110,99,101,84, -104,114,101,115,104,111,108,100,0,109,95,122,101,114,111,65,114,101,97,84, -104,114,101,115,104,111,108,100,0,109,95,110,101,120,116,83,105,122,101,0, -109,95,104,97,115,104,84,97,98,108,101,83,105,122,101,0,109,95,110,117, -109,86,97,108,117,101,115,0,109,95,110,117,109,75,101,121,115,0,109,95, -103,105,109,112,97,99,116,83,117,98,84,121,112,101,0,42,109,95,117,110, -115,99,97,108,101,100,80,111,105,110,116,115,70,108,111,97,116,80,116,114, -0,42,109,95,117,110,115,99,97,108,101,100,80,111,105,110,116,115,68,111, -117,98,108,101,80,116,114,0,109,95,110,117,109,85,110,115,99,97,108,101, -100,80,111,105,110,116,115,0,109,95,112,97,100,100,105,110,103,51,91,52, -93,0,42,109,95,98,114,111,97,100,112,104,97,115,101,72,97,110,100,108, -101,0,42,109,95,99,111,108,108,105,115,105,111,110,83,104,97,112,101,0, -42,109,95,114,111,111,116,67,111,108,108,105,115,105,111,110,83,104,97,112, -101,0,109,95,119,111,114,108,100,84,114,97,110,115,102,111,114,109,0,109, -95,105,110,116,101,114,112,111,108,97,116,105,111,110,87,111,114,108,100,84, -114,97,110,115,102,111,114,109,0,109,95,105,110,116,101,114,112,111,108,97, -116,105,111,110,76,105,110,101,97,114,86,101,108,111,99,105,116,121,0,109, -95,105,110,116,101,114,112,111,108,97,116,105,111,110,65,110,103,117,108,97, -114,86,101,108,111,99,105,116,121,0,109,95,97,110,105,115,111,116,114,111, -112,105,99,70,114,105,99,116,105,111,110,0,109,95,99,111,110,116,97,99, -116,80,114,111,99,101,115,115,105,110,103,84,104,114,101,115,104,111,108,100, -0,109,95,100,101,97,99,116,105,118,97,116,105,111,110,84,105,109,101,0, -109,95,102,114,105,99,116,105,111,110,0,109,95,114,101,115,116,105,116,117, -116,105,111,110,0,109,95,104,105,116,70,114,97,99,116,105,111,110,0,109, -95,99,99,100,83,119,101,112,116,83,112,104,101,114,101,82,97,100,105,117, -115,0,109,95,99,99,100,77,111,116,105,111,110,84,104,114,101,115,104,111, -108,100,0,109,95,104,97,115,65,110,105,115,111,116,114,111,112,105,99,70, -114,105,99,116,105,111,110,0,109,95,99,111,108,108,105,115,105,111,110,70, -108,97,103,115,0,109,95,105,115,108,97,110,100,84,97,103,49,0,109,95, -99,111,109,112,97,110,105,111,110,73,100,0,109,95,97,99,116,105,118,97, -116,105,111,110,83,116,97,116,101,49,0,109,95,105,110,116,101,114,110,97, -108,84,121,112,101,0,109,95,99,104,101,99,107,67,111,108,108,105,100,101, -87,105,116,104,0,109,95,99,111,108,108,105,115,105,111,110,79,98,106,101, -99,116,68,97,116,97,0,109,95,105,110,118,73,110,101,114,116,105,97,84, -101,110,115,111,114,87,111,114,108,100,0,109,95,108,105,110,101,97,114,86, -101,108,111,99,105,116,121,0,109,95,97,110,103,117,108,97,114,86,101,108, -111,99,105,116,121,0,109,95,97,110,103,117,108,97,114,70,97,99,116,111, -114,0,109,95,108,105,110,101,97,114,70,97,99,116,111,114,0,109,95,103, -114,97,118,105,116,121,0,109,95,103,114,97,118,105,116,121,95,97,99,99, -101,108,101,114,97,116,105,111,110,0,109,95,105,110,118,73,110,101,114,116, -105,97,76,111,99,97,108,0,109,95,116,111,116,97,108,70,111,114,99,101, -0,109,95,116,111,116,97,108,84,111,114,113,117,101,0,109,95,105,110,118, -101,114,115,101,77,97,115,115,0,109,95,108,105,110,101,97,114,68,97,109, -112,105,110,103,0,109,95,97,110,103,117,108,97,114,68,97,109,112,105,110, -103,0,109,95,97,100,100,105,116,105,111,110,97,108,68,97,109,112,105,110, -103,70,97,99,116,111,114,0,109,95,97,100,100,105,116,105,111,110,97,108, -76,105,110,101,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111, -108,100,83,113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110, -103,117,108,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111,108, -100,83,113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110,103, -117,108,97,114,68,97,109,112,105,110,103,70,97,99,116,111,114,0,109,95, -108,105,110,101,97,114,83,108,101,101,112,105,110,103,84,104,114,101,115,104, -111,108,100,0,109,95,97,110,103,117,108,97,114,83,108,101,101,112,105,110, -103,84,104,114,101,115,104,111,108,100,0,109,95,97,100,100,105,116,105,111, -110,97,108,68,97,109,112,105,110,103,0,109,95,110,117,109,67,111,110,115, -116,114,97,105,110,116,82,111,119,115,0,110,117,98,0,42,109,95,114,98, -65,0,42,109,95,114,98,66,0,109,95,111,98,106,101,99,116,84,121,112, -101,0,109,95,117,115,101,114,67,111,110,115,116,114,97,105,110,116,84,121, -112,101,0,109,95,117,115,101,114,67,111,110,115,116,114,97,105,110,116,73, -100,0,109,95,110,101,101,100,115,70,101,101,100,98,97,99,107,0,109,95, -97,112,112,108,105,101,100,73,109,112,117,108,115,101,0,109,95,100,98,103, -68,114,97,119,83,105,122,101,0,109,95,100,105,115,97,98,108,101,67,111, -108,108,105,115,105,111,110,115,66,101,116,119,101,101,110,76,105,110,107,101, -100,66,111,100,105,101,115,0,109,95,112,97,100,52,91,52,93,0,109,95, -116,121,112,101,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,109, -95,112,105,118,111,116,73,110,65,0,109,95,112,105,118,111,116,73,110,66, -0,109,95,114,98,65,70,114,97,109,101,0,109,95,114,98,66,70,114,97, -109,101,0,109,95,117,115,101,82,101,102,101,114,101,110,99,101,70,114,97, -109,101,65,0,109,95,97,110,103,117,108,97,114,79,110,108,121,0,109,95, -101,110,97,98,108,101,65,110,103,117,108,97,114,77,111,116,111,114,0,109, -95,109,111,116,111,114,84,97,114,103,101,116,86,101,108,111,99,105,116,121, -0,109,95,109,97,120,77,111,116,111,114,73,109,112,117,108,115,101,0,109, -95,108,111,119,101,114,76,105,109,105,116,0,109,95,117,112,112,101,114,76, -105,109,105,116,0,109,95,108,105,109,105,116,83,111,102,116,110,101,115,115, -0,109,95,98,105,97,115,70,97,99,116,111,114,0,109,95,114,101,108,97, -120,97,116,105,111,110,70,97,99,116,111,114,0,109,95,115,119,105,110,103, -83,112,97,110,49,0,109,95,115,119,105,110,103,83,112,97,110,50,0,109, -95,116,119,105,115,116,83,112,97,110,0,109,95,100,97,109,112,105,110,103, -0,109,95,108,105,110,101,97,114,85,112,112,101,114,76,105,109,105,116,0, -109,95,108,105,110,101,97,114,76,111,119,101,114,76,105,109,105,116,0,109, -95,97,110,103,117,108,97,114,85,112,112,101,114,76,105,109,105,116,0,109, -95,97,110,103,117,108,97,114,76,111,119,101,114,76,105,109,105,116,0,109, -95,117,115,101,76,105,110,101,97,114,82,101,102,101,114,101,110,99,101,70, -114,97,109,101,65,0,109,95,117,115,101,79,102,102,115,101,116,70,111,114, -67,111,110,115,116,114,97,105,110,116,70,114,97,109,101,0,84,89,80,69, -58,0,0,0,99,104,97,114,0,117,99,104,97,114,0,115,104,111,114,116, -0,117,115,104,111,114,116,0,105,110,116,0,108,111,110,103,0,117,108,111, -110,103,0,102,108,111,97,116,0,100,111,117,98,108,101,0,118,111,105,100, -0,80,111,105,110,116,101,114,65,114,114,97,121,0,98,116,80,104,121,115, -105,99,115,83,121,115,116,101,109,0,76,105,115,116,66,97,115,101,0,98, -116,86,101,99,116,111,114,51,70,108,111,97,116,68,97,116,97,0,98,116, -86,101,99,116,111,114,51,68,111,117,98,108,101,68,97,116,97,0,98,116, -77,97,116,114,105,120,51,120,51,70,108,111,97,116,68,97,116,97,0,98, -116,77,97,116,114,105,120,51,120,51,68,111,117,98,108,101,68,97,116,97, -0,98,116,84,114,97,110,115,102,111,114,109,70,108,111,97,116,68,97,116, -97,0,98,116,84,114,97,110,115,102,111,114,109,68,111,117,98,108,101,68, -97,116,97,0,98,116,66,118,104,83,117,98,116,114,101,101,73,110,102,111, -68,97,116,97,0,98,116,79,112,116,105,109,105,122,101,100,66,118,104,78, -111,100,101,70,108,111,97,116,68,97,116,97,0,98,116,79,112,116,105,109, -105,122,101,100,66,118,104,78,111,100,101,68,111,117,98,108,101,68,97,116, -97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,78,111,100,101, -68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,70, -108,111,97,116,68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100, -66,118,104,68,111,117,98,108,101,68,97,116,97,0,98,116,67,111,108,108, -105,115,105,111,110,83,104,97,112,101,68,97,116,97,0,98,116,83,116,97, -116,105,99,80,108,97,110,101,83,104,97,112,101,68,97,116,97,0,98,116, -67,111,110,118,101,120,73,110,116,101,114,110,97,108,83,104,97,112,101,68, -97,116,97,0,98,116,80,111,115,105,116,105,111,110,65,110,100,82,97,100, -105,117,115,0,98,116,77,117,108,116,105,83,112,104,101,114,101,83,104,97, -112,101,68,97,116,97,0,98,116,73,110,116,73,110,100,101,120,68,97,116, -97,0,98,116,83,104,111,114,116,73,110,116,73,110,100,101,120,68,97,116, -97,0,98,116,83,104,111,114,116,73,110,116,73,110,100,101,120,84,114,105, -112,108,101,116,68,97,116,97,0,98,116,77,101,115,104,80,97,114,116,68, -97,116,97,0,98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110, -116,101,114,102,97,99,101,68,97,116,97,0,98,116,84,114,105,97,110,103, -108,101,77,101,115,104,83,104,97,112,101,68,97,116,97,0,98,116,84,114, -105,97,110,103,108,101,73,110,102,111,77,97,112,68,97,116,97,0,98,116, -67,111,109,112,111,117,110,100,83,104,97,112,101,67,104,105,108,100,68,97, -116,97,0,98,116,67,111,109,112,111,117,110,100,83,104,97,112,101,68,97, -116,97,0,98,116,67,121,108,105,110,100,101,114,83,104,97,112,101,68,97, -116,97,0,98,116,67,97,112,115,117,108,101,83,104,97,112,101,68,97,116, -97,0,98,116,84,114,105,97,110,103,108,101,73,110,102,111,68,97,116,97, -0,98,116,71,73,109,112,97,99,116,77,101,115,104,83,104,97,112,101,68, -97,116,97,0,98,116,67,111,110,118,101,120,72,117,108,108,83,104,97,112, -101,68,97,116,97,0,98,116,67,111,108,108,105,115,105,111,110,79,98,106, -101,99,116,68,111,117,98,108,101,68,97,116,97,0,98,116,67,111,108,108, -105,115,105,111,110,79,98,106,101,99,116,70,108,111,97,116,68,97,116,97, -0,98,116,82,105,103,105,100,66,111,100,121,70,108,111,97,116,68,97,116, -97,0,98,116,82,105,103,105,100,66,111,100,121,68,111,117,98,108,101,68, -97,116,97,0,98,116,67,111,110,115,116,114,97,105,110,116,73,110,102,111, -49,0,98,116,84,121,112,101,100,67,111,110,115,116,114,97,105,110,116,68, -97,116,97,0,98,116,82,105,103,105,100,66,111,100,121,68,97,116,97,0, -98,116,80,111,105,110,116,50,80,111,105,110,116,67,111,110,115,116,114,97, -105,110,116,70,108,111,97,116,68,97,116,97,0,98,116,80,111,105,110,116, -50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,68,111,117,98, -108,101,68,97,116,97,0,98,116,72,105,110,103,101,67,111,110,115,116,114, -97,105,110,116,68,111,117,98,108,101,68,97,116,97,0,98,116,72,105,110, -103,101,67,111,110,115,116,114,97,105,110,116,70,108,111,97,116,68,97,116, -97,0,98,116,67,111,110,101,84,119,105,115,116,67,111,110,115,116,114,97, -105,110,116,68,97,116,97,0,98,116,71,101,110,101,114,105,99,54,68,111, -102,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,98,116,83,108, -105,100,101,114,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,0, -84,76,69,78,1,0,1,0,2,0,2,0,4,0,4,0,4,0,4,0, -8,0,0,0,12,0,36,0,8,0,16,0,32,0,48,0,96,0,64,0, --128,0,20,0,48,0,80,0,16,0,84,0,-124,0,12,0,52,0,52,0, -20,0,64,0,4,0,4,0,8,0,28,0,28,0,60,0,56,0,76,0, -24,0,60,0,60,0,16,0,64,0,68,0,-56,1,-8,0,-32,1,-104,3, -8,0,44,0,0,0,76,0,108,0,84,1,-44,0,-52,0,-12,0,-60,0, -83,84,82,67,47,0,0,0,10,0,3,0,4,0,0,0,4,0,1,0, -9,0,2,0,11,0,3,0,10,0,3,0,10,0,4,0,10,0,5,0, -12,0,2,0,9,0,6,0,9,0,7,0,13,0,1,0,7,0,8,0, -14,0,1,0,8,0,8,0,15,0,1,0,13,0,9,0,16,0,1,0, -14,0,9,0,17,0,2,0,15,0,10,0,13,0,11,0,18,0,2,0, -16,0,10,0,14,0,11,0,19,0,4,0,4,0,12,0,4,0,13,0, -2,0,14,0,2,0,15,0,20,0,6,0,13,0,16,0,13,0,17,0, -4,0,18,0,4,0,19,0,4,0,20,0,0,0,21,0,21,0,6,0, -14,0,16,0,14,0,17,0,4,0,18,0,4,0,19,0,4,0,20,0, -0,0,21,0,22,0,3,0,2,0,14,0,2,0,15,0,4,0,22,0, -23,0,12,0,13,0,23,0,13,0,24,0,13,0,25,0,4,0,26,0, -4,0,27,0,4,0,28,0,4,0,29,0,20,0,30,0,22,0,31,0, -19,0,32,0,4,0,33,0,4,0,34,0,24,0,12,0,14,0,23,0, -14,0,24,0,14,0,25,0,4,0,26,0,4,0,27,0,4,0,28,0, -4,0,29,0,21,0,30,0,22,0,31,0,4,0,33,0,4,0,34,0, -19,0,32,0,25,0,3,0,0,0,35,0,4,0,36,0,0,0,37,0, -26,0,5,0,25,0,38,0,13,0,39,0,13,0,40,0,7,0,41,0, -0,0,21,0,27,0,5,0,25,0,38,0,13,0,39,0,13,0,42,0, -7,0,43,0,4,0,44,0,28,0,2,0,13,0,45,0,7,0,46,0, -29,0,4,0,27,0,47,0,28,0,48,0,4,0,49,0,0,0,37,0, -30,0,1,0,4,0,50,0,31,0,2,0,2,0,50,0,0,0,51,0, -32,0,2,0,2,0,52,0,0,0,51,0,33,0,7,0,13,0,53,0, -14,0,54,0,30,0,55,0,32,0,56,0,31,0,57,0,4,0,58,0, -4,0,59,0,34,0,4,0,33,0,60,0,13,0,61,0,4,0,62,0, -0,0,37,0,35,0,7,0,25,0,38,0,34,0,63,0,23,0,64,0, -24,0,65,0,36,0,66,0,7,0,43,0,0,0,67,0,37,0,4,0, -17,0,68,0,25,0,69,0,4,0,70,0,7,0,71,0,38,0,4,0, -25,0,38,0,37,0,72,0,4,0,73,0,7,0,43,0,39,0,3,0, -27,0,47,0,4,0,74,0,0,0,37,0,40,0,3,0,27,0,47,0, -4,0,74,0,0,0,37,0,41,0,4,0,4,0,75,0,7,0,76,0, -7,0,77,0,7,0,78,0,36,0,14,0,4,0,79,0,4,0,80,0, -41,0,81,0,4,0,82,0,7,0,83,0,7,0,84,0,7,0,85,0, -7,0,86,0,7,0,87,0,4,0,88,0,4,0,89,0,4,0,90,0, -4,0,91,0,0,0,37,0,42,0,5,0,25,0,38,0,34,0,63,0, -13,0,39,0,7,0,43,0,4,0,92,0,43,0,5,0,27,0,47,0, -13,0,93,0,14,0,94,0,4,0,95,0,0,0,96,0,44,0,24,0, -9,0,97,0,9,0,98,0,25,0,99,0,0,0,35,0,18,0,100,0, -18,0,101,0,14,0,102,0,14,0,103,0,14,0,104,0,8,0,105,0, -8,0,106,0,8,0,107,0,8,0,108,0,8,0,109,0,8,0,110,0, -8,0,111,0,4,0,112,0,4,0,113,0,4,0,114,0,4,0,115,0, -4,0,116,0,4,0,117,0,4,0,118,0,0,0,37,0,45,0,23,0, -9,0,97,0,9,0,98,0,25,0,99,0,0,0,35,0,17,0,100,0, -17,0,101,0,13,0,102,0,13,0,103,0,13,0,104,0,7,0,105,0, -7,0,106,0,7,0,107,0,7,0,108,0,7,0,109,0,7,0,110,0, -7,0,111,0,4,0,112,0,4,0,113,0,4,0,114,0,4,0,115,0, -4,0,116,0,4,0,117,0,4,0,118,0,46,0,21,0,45,0,119,0, -15,0,120,0,13,0,121,0,13,0,122,0,13,0,123,0,13,0,124,0, -13,0,125,0,13,0,126,0,13,0,127,0,13,0,-128,0,13,0,-127,0, -7,0,-126,0,7,0,-125,0,7,0,-124,0,7,0,-123,0,7,0,-122,0, -7,0,-121,0,7,0,-120,0,7,0,-119,0,7,0,-118,0,4,0,-117,0, -47,0,22,0,44,0,119,0,16,0,120,0,14,0,121,0,14,0,122,0, -14,0,123,0,14,0,124,0,14,0,125,0,14,0,126,0,14,0,127,0, -14,0,-128,0,14,0,-127,0,8,0,-126,0,8,0,-125,0,8,0,-124,0, -8,0,-123,0,8,0,-122,0,8,0,-121,0,8,0,-120,0,8,0,-119,0, -8,0,-118,0,4,0,-117,0,0,0,37,0,48,0,2,0,4,0,-116,0, -4,0,-115,0,49,0,11,0,50,0,-114,0,50,0,-113,0,0,0,35,0, -4,0,-112,0,4,0,-111,0,4,0,-110,0,4,0,-109,0,7,0,-108,0, -7,0,-107,0,4,0,-106,0,0,0,-105,0,51,0,3,0,49,0,-104,0, -13,0,-103,0,13,0,-102,0,52,0,3,0,49,0,-104,0,14,0,-103,0, -14,0,-102,0,53,0,13,0,49,0,-104,0,18,0,-101,0,18,0,-100,0, -4,0,-99,0,4,0,-98,0,4,0,-97,0,7,0,-96,0,7,0,-95,0, -7,0,-94,0,7,0,-93,0,7,0,-92,0,7,0,-91,0,7,0,-90,0, -54,0,13,0,49,0,-104,0,17,0,-101,0,17,0,-100,0,4,0,-99,0, -4,0,-98,0,4,0,-97,0,7,0,-96,0,7,0,-95,0,7,0,-94,0, -7,0,-93,0,7,0,-92,0,7,0,-91,0,7,0,-90,0,55,0,11,0, -49,0,-104,0,17,0,-101,0,17,0,-100,0,7,0,-89,0,7,0,-88,0, -7,0,-87,0,7,0,-92,0,7,0,-91,0,7,0,-90,0,7,0,-86,0, -0,0,21,0,56,0,9,0,49,0,-104,0,17,0,-101,0,17,0,-100,0, -13,0,-85,0,13,0,-84,0,13,0,-83,0,13,0,-82,0,4,0,-81,0, -4,0,-80,0,57,0,9,0,49,0,-104,0,17,0,-101,0,17,0,-100,0, -7,0,-85,0,7,0,-84,0,7,0,-83,0,7,0,-82,0,4,0,-81,0, -4,0,-80,0,}; -int sBulletDNAlen= sizeof(sBulletDNAstr); diff --git a/extern/bullet2/LinearMath/btSerializer.h b/extern/bullet2/LinearMath/btSerializer.h deleted file mode 100644 index 57f4c1e9e47..00000000000 --- a/extern/bullet2/LinearMath/btSerializer.h +++ /dev/null @@ -1,604 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BT_SERIALIZER_H -#define BT_SERIALIZER_H - -#include "btScalar.h" // has definitions like SIMD_FORCE_INLINE -#include "btStackAlloc.h" -#include "btHashMap.h" - -#if !defined( __CELLOS_LV2__) && !defined(__MWERKS__) -#include -#endif -#include - - - -///only the 32bit versions for now -extern unsigned char sBulletDNAstr[]; -extern int sBulletDNAlen; -extern unsigned char sBulletDNAstr64[]; -extern int sBulletDNAlen64; - -SIMD_FORCE_INLINE int btStrLen(const char* str) -{ - if (!str) - return(0); - int len = 0; - - while (*str != 0) - { - str++; - len++; - } - - return len; -} - - -class btChunk -{ -public: - int m_chunkCode; - int m_length; - void *m_oldPtr; - int m_dna_nr; - int m_number; -}; - -enum btSerializationFlags -{ - BT_SERIALIZE_NO_BVH = 1, - BT_SERIALIZE_NO_TRIANGLEINFOMAP = 2, - BT_SERIALIZE_NO_DUPLICATE_ASSERT = 4 -}; - -class btSerializer -{ - -public: - - virtual ~btSerializer() {} - - virtual const unsigned char* getBufferPointer() const = 0; - - virtual int getCurrentBufferSize() const = 0; - - virtual btChunk* allocate(size_t size, int numElements) = 0; - - virtual void finalizeChunk(btChunk* chunk, const char* structType, int chunkCode,void* oldPtr)= 0; - - virtual void* findPointer(void* oldPtr) = 0; - - virtual void* getUniquePointer(void*oldPtr) = 0; - - virtual void startSerialization() = 0; - - virtual void finishSerialization() = 0; - - virtual const char* findNameForPointer(const void* ptr) const = 0; - - virtual void registerNameForPointer(const void* ptr, const char* name) = 0; - - virtual void serializeName(const char* ptr) = 0; - - virtual int getSerializationFlags() const = 0; - - virtual void setSerializationFlags(int flags) = 0; - - -}; - - - -#define BT_HEADER_LENGTH 12 -#if defined(__sgi) || defined (__sparc) || defined (__sparc__) || defined (__PPC__) || defined (__ppc__) || defined (__BIG_ENDIAN__) -# define MAKE_ID(a,b,c,d) ( (int)(a)<<24 | (int)(b)<<16 | (c)<<8 | (d) ) -#else -# define MAKE_ID(a,b,c,d) ( (int)(d)<<24 | (int)(c)<<16 | (b)<<8 | (a) ) -#endif - -#define BT_COLLISIONOBJECT_CODE MAKE_ID('C','O','B','J') -#define BT_RIGIDBODY_CODE MAKE_ID('R','B','D','Y') -#define BT_CONSTRAINT_CODE MAKE_ID('C','O','N','S') -#define BT_BOXSHAPE_CODE MAKE_ID('B','O','X','S') -#define BT_QUANTIZED_BVH_CODE MAKE_ID('Q','B','V','H') -#define BT_TRIANLGE_INFO_MAP MAKE_ID('T','M','A','P') -#define BT_SHAPE_CODE MAKE_ID('S','H','A','P') -#define BT_ARRAY_CODE MAKE_ID('A','R','A','Y') - - -struct btPointerUid -{ - union - { - void* m_ptr; - int m_uniqueIds[2]; - }; -}; - - -class btDefaultSerializer : public btSerializer -{ - - - btAlignedObjectArray mTypes; - btAlignedObjectArray mStructs; - btAlignedObjectArray mTlens; - btHashMap mStructReverse; - btHashMap mTypeLookup; - - - btHashMap m_chunkP; - - btHashMap m_nameMap; - - btHashMap m_uniquePointers; - int m_uniqueIdGenerator; - - int m_totalSize; - unsigned char* m_buffer; - int m_currentSize; - void* m_dna; - int m_dnaLength; - - int m_serializationFlags; - - - btAlignedObjectArray m_chunkPtrs; - -protected: - - virtual void* findPointer(void* oldPtr) - { - void** ptr = m_chunkP.find(oldPtr); - if (ptr && *ptr) - return *ptr; - return 0; - } - - - - - - void writeDNA() - { - unsigned char* dnaTarget = m_buffer+m_currentSize; - memcpy(dnaTarget,m_dna,m_dnaLength); - m_currentSize += m_dnaLength; - } - - int getReverseType(const char *type) const - { - - btHashString key(type); - const int* valuePtr = mTypeLookup.find(key); - if (valuePtr) - return *valuePtr; - - return -1; - } - - void initDNA(const char* bdnaOrg,int dnalen) - { - ///was already initialized - if (m_dna) - return; - - int littleEndian= 1; - littleEndian= ((char*)&littleEndian)[0]; - - - m_dna = btAlignedAlloc(dnalen,16); - memcpy(m_dna,bdnaOrg,dnalen); - m_dnaLength = dnalen; - - int *intPtr=0; - short *shtPtr=0; - char *cp = 0;int dataLen =0;long nr=0; - intPtr = (int*)m_dna; - - /* - SDNA (4 bytes) (magic number) - NAME (4 bytes) - (4 bytes) amount of names (int) - - - */ - - if (strncmp((const char*)m_dna, "SDNA", 4)==0) - { - // skip ++ NAME - intPtr++; intPtr++; - } - - // Parse names - if (!littleEndian) - *intPtr = btSwapEndian(*intPtr); - - dataLen = *intPtr; - - intPtr++; - - cp = (char*)intPtr; - int i; - for ( i=0; i amount of types (int) - - - */ - - intPtr = (int*)cp; - assert(strncmp(cp, "TYPE", 4)==0); intPtr++; - - if (!littleEndian) - *intPtr = btSwapEndian(*intPtr); - - dataLen = *intPtr; - intPtr++; - - - cp = (char*)intPtr; - for (i=0; i (short) the lengths of types - - */ - - // Parse type lens - intPtr = (int*)cp; - assert(strncmp(cp, "TLEN", 4)==0); intPtr++; - - dataLen = (int)mTypes.size(); - - shtPtr = (short*)intPtr; - for (i=0; i amount of structs (int) - - - - - - - */ - - intPtr = (int*)shtPtr; - cp = (char*)intPtr; - assert(strncmp(cp, "STRC", 4)==0); intPtr++; - - if (!littleEndian) - *intPtr = btSwapEndian(*intPtr); - dataLen = *intPtr ; - intPtr++; - - - shtPtr = (short*)intPtr; - for (i=0; im_ptr; - } - m_uniqueIdGenerator++; - - btPointerUid uid; - uid.m_uniqueIds[0] = m_uniqueIdGenerator; - uid.m_uniqueIds[1] = m_uniqueIdGenerator; - m_uniquePointers.insert(oldPtr,uid); - return uid.m_ptr; - - } - - virtual const unsigned char* getBufferPointer() const - { - return m_buffer; - } - - virtual int getCurrentBufferSize() const - { - return m_currentSize; - } - - virtual void finalizeChunk(btChunk* chunk, const char* structType, int chunkCode,void* oldPtr) - { - if (!(m_serializationFlags&BT_SERIALIZE_NO_DUPLICATE_ASSERT)) - { - btAssert(!findPointer(oldPtr)); - } - - chunk->m_dna_nr = getReverseType(structType); - - chunk->m_chunkCode = chunkCode; - - void* uniquePtr = getUniquePointer(oldPtr); - - m_chunkP.insert(oldPtr,uniquePtr);//chunk->m_oldPtr); - chunk->m_oldPtr = uniquePtr;//oldPtr; - - } - - - - - - virtual btChunk* allocate(size_t size, int numElements) - { - - unsigned char* ptr = m_buffer+m_currentSize; - m_currentSize += int(size)*numElements+sizeof(btChunk); - btAssert(m_currentSizem_chunkCode = 0; - chunk->m_oldPtr = data; - chunk->m_length = int(size)*numElements; - chunk->m_number = numElements; - - m_chunkPtrs.push_back(chunk); - - - return chunk; - } - - virtual const char* findNameForPointer(const void* ptr) const - { - const char*const * namePtr = m_nameMap.find(ptr); - if (namePtr && *namePtr) - return *namePtr; - return 0; - - } - - virtual void registerNameForPointer(const void* ptr, const char* name) - { - m_nameMap.insert(ptr,name); - } - - virtual void serializeName(const char* name) - { - if (name) - { - //don't serialize name twice - if (findPointer((void*)name)) - return; - - int len = btStrLen(name); - if (len) - { - - int newLen = len+1; - int padding = ((newLen+3)&~3)-newLen; - newLen += padding; - - //serialize name string now - btChunk* chunk = allocate(sizeof(char),newLen); - char* destinationName = (char*)chunk->m_oldPtr; - for (int i=0;i(totalsize - usedsize); - } - - unsigned char* allocate(unsigned int size) - { - const unsigned int nus(usedsize+size); - if(nusprevious = current; - pb->address = data+usedsize; - current = pb; - return(pb); - } - SIMD_FORCE_INLINE void endBlock(btBlock* block) - { - btAssert(block==current); - //Raise(L"Unmatched blocks"); - if(block==current) - { - current = block->previous; - usedsize = (unsigned int)((block->address-data)-sizeof(btBlock)); - } - } - -private: - void ctor() - { - data = 0; - totalsize = 0; - usedsize = 0; - current = 0; - ischild = false; - } - unsigned char* data; - unsigned int totalsize; - unsigned int usedsize; - btBlock* current; - bool ischild; -}; - -#endif //BT_STACK_ALLOC diff --git a/extern/bullet2/LinearMath/btTransform.h b/extern/bullet2/LinearMath/btTransform.h deleted file mode 100644 index 187b09116cc..00000000000 --- a/extern/bullet2/LinearMath/btTransform.h +++ /dev/null @@ -1,307 +0,0 @@ -/* -Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#ifndef btTransform_H -#define btTransform_H - - -#include "btMatrix3x3.h" - -#ifdef BT_USE_DOUBLE_PRECISION -#define btTransformData btTransformDoubleData -#else -#define btTransformData btTransformFloatData -#endif - - - - -/**@brief The btTransform class supports rigid transforms with only translation and rotation and no scaling/shear. - *It can be used in combination with btVector3, btQuaternion and btMatrix3x3 linear algebra classes. */ -class btTransform { - - ///Storage for the rotation - btMatrix3x3 m_basis; - ///Storage for the translation - btVector3 m_origin; - -public: - - /**@brief No initialization constructor */ - btTransform() {} - /**@brief Constructor from btQuaternion (optional btVector3 ) - * @param q Rotation from quaternion - * @param c Translation from Vector (default 0,0,0) */ - explicit SIMD_FORCE_INLINE btTransform(const btQuaternion& q, - const btVector3& c = btVector3(btScalar(0), btScalar(0), btScalar(0))) - : m_basis(q), - m_origin(c) - {} - - /**@brief Constructor from btMatrix3x3 (optional btVector3) - * @param b Rotation from Matrix - * @param c Translation from Vector default (0,0,0)*/ - explicit SIMD_FORCE_INLINE btTransform(const btMatrix3x3& b, - const btVector3& c = btVector3(btScalar(0), btScalar(0), btScalar(0))) - : m_basis(b), - m_origin(c) - {} - /**@brief Copy constructor */ - SIMD_FORCE_INLINE btTransform (const btTransform& other) - : m_basis(other.m_basis), - m_origin(other.m_origin) - { - } - /**@brief Assignment Operator */ - SIMD_FORCE_INLINE btTransform& operator=(const btTransform& other) - { - m_basis = other.m_basis; - m_origin = other.m_origin; - return *this; - } - - - /**@brief Set the current transform as the value of the product of two transforms - * @param t1 Transform 1 - * @param t2 Transform 2 - * This = Transform1 * Transform2 */ - SIMD_FORCE_INLINE void mult(const btTransform& t1, const btTransform& t2) { - m_basis = t1.m_basis * t2.m_basis; - m_origin = t1(t2.m_origin); - } - -/* void multInverseLeft(const btTransform& t1, const btTransform& t2) { - btVector3 v = t2.m_origin - t1.m_origin; - m_basis = btMultTransposeLeft(t1.m_basis, t2.m_basis); - m_origin = v * t1.m_basis; - } - */ - -/**@brief Return the transform of the vector */ - SIMD_FORCE_INLINE btVector3 operator()(const btVector3& x) const - { - return btVector3(m_basis[0].dot(x) + m_origin.x(), - m_basis[1].dot(x) + m_origin.y(), - m_basis[2].dot(x) + m_origin.z()); - } - - /**@brief Return the transform of the vector */ - SIMD_FORCE_INLINE btVector3 operator*(const btVector3& x) const - { - return (*this)(x); - } - - /**@brief Return the transform of the btQuaternion */ - SIMD_FORCE_INLINE btQuaternion operator*(const btQuaternion& q) const - { - return getRotation() * q; - } - - /**@brief Return the basis matrix for the rotation */ - SIMD_FORCE_INLINE btMatrix3x3& getBasis() { return m_basis; } - /**@brief Return the basis matrix for the rotation */ - SIMD_FORCE_INLINE const btMatrix3x3& getBasis() const { return m_basis; } - - /**@brief Return the origin vector translation */ - SIMD_FORCE_INLINE btVector3& getOrigin() { return m_origin; } - /**@brief Return the origin vector translation */ - SIMD_FORCE_INLINE const btVector3& getOrigin() const { return m_origin; } - - /**@brief Return a quaternion representing the rotation */ - btQuaternion getRotation() const { - btQuaternion q; - m_basis.getRotation(q); - return q; - } - - - /**@brief Set from an array - * @param m A pointer to a 15 element array (12 rotation(row major padded on the right by 1), and 3 translation */ - void setFromOpenGLMatrix(const btScalar *m) - { - m_basis.setFromOpenGLSubMatrix(m); - m_origin.setValue(m[12],m[13],m[14]); - } - - /**@brief Fill an array representation - * @param m A pointer to a 15 element array (12 rotation(row major padded on the right by 1), and 3 translation */ - void getOpenGLMatrix(btScalar *m) const - { - m_basis.getOpenGLSubMatrix(m); - m[12] = m_origin.x(); - m[13] = m_origin.y(); - m[14] = m_origin.z(); - m[15] = btScalar(1.0); - } - - /**@brief Set the translational element - * @param origin The vector to set the translation to */ - SIMD_FORCE_INLINE void setOrigin(const btVector3& origin) - { - m_origin = origin; - } - - SIMD_FORCE_INLINE btVector3 invXform(const btVector3& inVec) const; - - - /**@brief Set the rotational element by btMatrix3x3 */ - SIMD_FORCE_INLINE void setBasis(const btMatrix3x3& basis) - { - m_basis = basis; - } - - /**@brief Set the rotational element by btQuaternion */ - SIMD_FORCE_INLINE void setRotation(const btQuaternion& q) - { - m_basis.setRotation(q); - } - - - /**@brief Set this transformation to the identity */ - void setIdentity() - { - m_basis.setIdentity(); - m_origin.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0)); - } - - /**@brief Multiply this Transform by another(this = this * another) - * @param t The other transform */ - btTransform& operator*=(const btTransform& t) - { - m_origin += m_basis * t.m_origin; - m_basis *= t.m_basis; - return *this; - } - - /**@brief Return the inverse of this transform */ - btTransform inverse() const - { - btMatrix3x3 inv = m_basis.transpose(); - return btTransform(inv, inv * -m_origin); - } - - /**@brief Return the inverse of this transform times the other transform - * @param t The other transform - * return this.inverse() * the other */ - btTransform inverseTimes(const btTransform& t) const; - - /**@brief Return the product of this transform and the other */ - btTransform operator*(const btTransform& t) const; - - /**@brief Return an identity transform */ - static const btTransform& getIdentity() - { - static const btTransform identityTransform(btMatrix3x3::getIdentity()); - return identityTransform; - } - - void serialize(struct btTransformData& dataOut) const; - - void serializeFloat(struct btTransformFloatData& dataOut) const; - - void deSerialize(const struct btTransformData& dataIn); - - void deSerializeDouble(const struct btTransformDoubleData& dataIn); - - void deSerializeFloat(const struct btTransformFloatData& dataIn); - -}; - - -SIMD_FORCE_INLINE btVector3 -btTransform::invXform(const btVector3& inVec) const -{ - btVector3 v = inVec - m_origin; - return (m_basis.transpose() * v); -} - -SIMD_FORCE_INLINE btTransform -btTransform::inverseTimes(const btTransform& t) const -{ - btVector3 v = t.getOrigin() - m_origin; - return btTransform(m_basis.transposeTimes(t.m_basis), - v * m_basis); -} - -SIMD_FORCE_INLINE btTransform -btTransform::operator*(const btTransform& t) const -{ - return btTransform(m_basis * t.m_basis, - (*this)(t.m_origin)); -} - -/**@brief Test if two transforms have all elements equal */ -SIMD_FORCE_INLINE bool operator==(const btTransform& t1, const btTransform& t2) -{ - return ( t1.getBasis() == t2.getBasis() && - t1.getOrigin() == t2.getOrigin() ); -} - - -///for serialization -struct btTransformFloatData -{ - btMatrix3x3FloatData m_basis; - btVector3FloatData m_origin; -}; - -struct btTransformDoubleData -{ - btMatrix3x3DoubleData m_basis; - btVector3DoubleData m_origin; -}; - - - -SIMD_FORCE_INLINE void btTransform::serialize(btTransformData& dataOut) const -{ - m_basis.serialize(dataOut.m_basis); - m_origin.serialize(dataOut.m_origin); -} - -SIMD_FORCE_INLINE void btTransform::serializeFloat(btTransformFloatData& dataOut) const -{ - m_basis.serializeFloat(dataOut.m_basis); - m_origin.serializeFloat(dataOut.m_origin); -} - - -SIMD_FORCE_INLINE void btTransform::deSerialize(const btTransformData& dataIn) -{ - m_basis.deSerialize(dataIn.m_basis); - m_origin.deSerialize(dataIn.m_origin); -} - -SIMD_FORCE_INLINE void btTransform::deSerializeFloat(const btTransformFloatData& dataIn) -{ - m_basis.deSerializeFloat(dataIn.m_basis); - m_origin.deSerializeFloat(dataIn.m_origin); -} - -SIMD_FORCE_INLINE void btTransform::deSerializeDouble(const btTransformDoubleData& dataIn) -{ - m_basis.deSerializeDouble(dataIn.m_basis); - m_origin.deSerializeDouble(dataIn.m_origin); -} - - -#endif - - - - - - diff --git a/extern/bullet2/LinearMath/btTransformUtil.h b/extern/bullet2/LinearMath/btTransformUtil.h deleted file mode 100644 index dd9057546d8..00000000000 --- a/extern/bullet2/LinearMath/btTransformUtil.h +++ /dev/null @@ -1,228 +0,0 @@ -/* -Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - -#ifndef SIMD_TRANSFORM_UTIL_H -#define SIMD_TRANSFORM_UTIL_H - -#include "btTransform.h" -#define ANGULAR_MOTION_THRESHOLD btScalar(0.5)*SIMD_HALF_PI - - - - -SIMD_FORCE_INLINE btVector3 btAabbSupport(const btVector3& halfExtents,const btVector3& supportDir) -{ - return btVector3(supportDir.x() < btScalar(0.0) ? -halfExtents.x() : halfExtents.x(), - supportDir.y() < btScalar(0.0) ? -halfExtents.y() : halfExtents.y(), - supportDir.z() < btScalar(0.0) ? -halfExtents.z() : halfExtents.z()); -} - - - - - - -/// Utils related to temporal transforms -class btTransformUtil -{ - -public: - - static void integrateTransform(const btTransform& curTrans,const btVector3& linvel,const btVector3& angvel,btScalar timeStep,btTransform& predictedTransform) - { - predictedTransform.setOrigin(curTrans.getOrigin() + linvel * timeStep); -// #define QUATERNION_DERIVATIVE - #ifdef QUATERNION_DERIVATIVE - btQuaternion predictedOrn = curTrans.getRotation(); - predictedOrn += (angvel * predictedOrn) * (timeStep * btScalar(0.5)); - predictedOrn.normalize(); - #else - //Exponential map - //google for "Practical Parameterization of Rotations Using the Exponential Map", F. Sebastian Grassia - - btVector3 axis; - btScalar fAngle = angvel.length(); - //limit the angular motion - if (fAngle*timeStep > ANGULAR_MOTION_THRESHOLD) - { - fAngle = ANGULAR_MOTION_THRESHOLD / timeStep; - } - - if ( fAngle < btScalar(0.001) ) - { - // use Taylor's expansions of sync function - axis = angvel*( btScalar(0.5)*timeStep-(timeStep*timeStep*timeStep)*(btScalar(0.020833333333))*fAngle*fAngle ); - } - else - { - // sync(fAngle) = sin(c*fAngle)/t - axis = angvel*( btSin(btScalar(0.5)*fAngle*timeStep)/fAngle ); - } - btQuaternion dorn (axis.x(),axis.y(),axis.z(),btCos( fAngle*timeStep*btScalar(0.5) )); - btQuaternion orn0 = curTrans.getRotation(); - - btQuaternion predictedOrn = dorn * orn0; - predictedOrn.normalize(); - #endif - predictedTransform.setRotation(predictedOrn); - } - - static void calculateVelocityQuaternion(const btVector3& pos0,const btVector3& pos1,const btQuaternion& orn0,const btQuaternion& orn1,btScalar timeStep,btVector3& linVel,btVector3& angVel) - { - linVel = (pos1 - pos0) / timeStep; - btVector3 axis; - btScalar angle; - if (orn0 != orn1) - { - calculateDiffAxisAngleQuaternion(orn0,orn1,axis,angle); - angVel = axis * angle / timeStep; - } else - { - angVel.setValue(0,0,0); - } - } - - static void calculateDiffAxisAngleQuaternion(const btQuaternion& orn0,const btQuaternion& orn1a,btVector3& axis,btScalar& angle) - { - btQuaternion orn1 = orn0.nearest(orn1a); - btQuaternion dorn = orn1 * orn0.inverse(); - angle = dorn.getAngle(); - axis = btVector3(dorn.x(),dorn.y(),dorn.z()); - axis[3] = btScalar(0.); - //check for axis length - btScalar len = axis.length2(); - if (len < SIMD_EPSILON*SIMD_EPSILON) - axis = btVector3(btScalar(1.),btScalar(0.),btScalar(0.)); - else - axis /= btSqrt(len); - } - - static void calculateVelocity(const btTransform& transform0,const btTransform& transform1,btScalar timeStep,btVector3& linVel,btVector3& angVel) - { - linVel = (transform1.getOrigin() - transform0.getOrigin()) / timeStep; - btVector3 axis; - btScalar angle; - calculateDiffAxisAngle(transform0,transform1,axis,angle); - angVel = axis * angle / timeStep; - } - - static void calculateDiffAxisAngle(const btTransform& transform0,const btTransform& transform1,btVector3& axis,btScalar& angle) - { - btMatrix3x3 dmat = transform1.getBasis() * transform0.getBasis().inverse(); - btQuaternion dorn; - dmat.getRotation(dorn); - - ///floating point inaccuracy can lead to w component > 1..., which breaks - dorn.normalize(); - - angle = dorn.getAngle(); - axis = btVector3(dorn.x(),dorn.y(),dorn.z()); - axis[3] = btScalar(0.); - //check for axis length - btScalar len = axis.length2(); - if (len < SIMD_EPSILON*SIMD_EPSILON) - axis = btVector3(btScalar(1.),btScalar(0.),btScalar(0.)); - else - axis /= btSqrt(len); - } - -}; - - -///The btConvexSeparatingDistanceUtil can help speed up convex collision detection -///by conservatively updating a cached separating distance/vector instead of re-calculating the closest distance -class btConvexSeparatingDistanceUtil -{ - btQuaternion m_ornA; - btQuaternion m_ornB; - btVector3 m_posA; - btVector3 m_posB; - - btVector3 m_separatingNormal; - - btScalar m_boundingRadiusA; - btScalar m_boundingRadiusB; - btScalar m_separatingDistance; - -public: - - btConvexSeparatingDistanceUtil(btScalar boundingRadiusA,btScalar boundingRadiusB) - :m_boundingRadiusA(boundingRadiusA), - m_boundingRadiusB(boundingRadiusB), - m_separatingDistance(0.f) - { - } - - btScalar getConservativeSeparatingDistance() - { - return m_separatingDistance; - } - - void updateSeparatingDistance(const btTransform& transA,const btTransform& transB) - { - const btVector3& toPosA = transA.getOrigin(); - const btVector3& toPosB = transB.getOrigin(); - btQuaternion toOrnA = transA.getRotation(); - btQuaternion toOrnB = transB.getRotation(); - - if (m_separatingDistance>0.f) - { - - - btVector3 linVelA,angVelA,linVelB,angVelB; - btTransformUtil::calculateVelocityQuaternion(m_posA,toPosA,m_ornA,toOrnA,btScalar(1.),linVelA,angVelA); - btTransformUtil::calculateVelocityQuaternion(m_posB,toPosB,m_ornB,toOrnB,btScalar(1.),linVelB,angVelB); - btScalar maxAngularProjectedVelocity = angVelA.length() * m_boundingRadiusA + angVelB.length() * m_boundingRadiusB; - btVector3 relLinVel = (linVelB-linVelA); - btScalar relLinVelocLength = (linVelB-linVelA).dot(m_separatingNormal); - if (relLinVelocLength<0.f) - { - relLinVelocLength = 0.f; - } - - btScalar projectedMotion = maxAngularProjectedVelocity +relLinVelocLength; - m_separatingDistance -= projectedMotion; - } - - m_posA = toPosA; - m_posB = toPosB; - m_ornA = toOrnA; - m_ornB = toOrnB; - } - - void initSeparatingDistance(const btVector3& separatingVector,btScalar separatingDistance,const btTransform& transA,const btTransform& transB) - { - m_separatingDistance = separatingDistance; - - if (m_separatingDistance>0.f) - { - m_separatingNormal = separatingVector; - - const btVector3& toPosA = transA.getOrigin(); - const btVector3& toPosB = transB.getOrigin(); - btQuaternion toOrnA = transA.getRotation(); - btQuaternion toOrnB = transB.getRotation(); - m_posA = toPosA; - m_posB = toPosB; - m_ornA = toOrnA; - m_ornB = toOrnB; - } - } - -}; - - -#endif //SIMD_TRANSFORM_UTIL_H - diff --git a/extern/bullet2/LinearMath/btVector3.h b/extern/bullet2/LinearMath/btVector3.h deleted file mode 100644 index 84446f2298a..00000000000 --- a/extern/bullet2/LinearMath/btVector3.h +++ /dev/null @@ -1,744 +0,0 @@ -/* -Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - - - -#ifndef SIMD__VECTOR3_H -#define SIMD__VECTOR3_H - - -#include "btScalar.h" -#include "btMinMax.h" - -#ifdef BT_USE_DOUBLE_PRECISION -#define btVector3Data btVector3DoubleData -#define btVector3DataName "btVector3DoubleData" -#else -#define btVector3Data btVector3FloatData -#define btVector3DataName "btVector3FloatData" -#endif //BT_USE_DOUBLE_PRECISION - - - - -/**@brief btVector3 can be used to represent 3D points and vectors. - * It has an un-used w component to suit 16-byte alignment when btVector3 is stored in containers. This extra component can be used by derived classes (Quaternion?) or by user - * Ideally, this class should be replaced by a platform optimized SIMD version that keeps the data in registers - */ -ATTRIBUTE_ALIGNED16(class) btVector3 -{ -public: - -#if defined (__SPU__) && defined (__CELLOS_LV2__) - btScalar m_floats[4]; -public: - SIMD_FORCE_INLINE const vec_float4& get128() const - { - return *((const vec_float4*)&m_floats[0]); - } -public: -#else //__CELLOS_LV2__ __SPU__ -#ifdef BT_USE_SSE // _WIN32 - union { - __m128 mVec128; - btScalar m_floats[4]; - }; - SIMD_FORCE_INLINE __m128 get128() const - { - return mVec128; - } - SIMD_FORCE_INLINE void set128(__m128 v128) - { - mVec128 = v128; - } -#else - btScalar m_floats[4]; -#endif -#endif //__CELLOS_LV2__ __SPU__ - - public: - - /**@brief No initialization constructor */ - SIMD_FORCE_INLINE btVector3() {} - - - - /**@brief Constructor from scalars - * @param x X value - * @param y Y value - * @param z Z value - */ - SIMD_FORCE_INLINE btVector3(const btScalar& x, const btScalar& y, const btScalar& z) - { - m_floats[0] = x; - m_floats[1] = y; - m_floats[2] = z; - m_floats[3] = btScalar(0.); - } - - -/**@brief Add a vector to this one - * @param The vector to add to this one */ - SIMD_FORCE_INLINE btVector3& operator+=(const btVector3& v) - { - - m_floats[0] += v.m_floats[0]; m_floats[1] += v.m_floats[1];m_floats[2] += v.m_floats[2]; - return *this; - } - - - /**@brief Subtract a vector from this one - * @param The vector to subtract */ - SIMD_FORCE_INLINE btVector3& operator-=(const btVector3& v) - { - m_floats[0] -= v.m_floats[0]; m_floats[1] -= v.m_floats[1];m_floats[2] -= v.m_floats[2]; - return *this; - } - /**@brief Scale the vector - * @param s Scale factor */ - SIMD_FORCE_INLINE btVector3& operator*=(const btScalar& s) - { - m_floats[0] *= s; m_floats[1] *= s;m_floats[2] *= s; - return *this; - } - - /**@brief Inversely scale the vector - * @param s Scale factor to divide by */ - SIMD_FORCE_INLINE btVector3& operator/=(const btScalar& s) - { - btFullAssert(s != btScalar(0.0)); - return *this *= btScalar(1.0) / s; - } - - /**@brief Return the dot product - * @param v The other vector in the dot product */ - SIMD_FORCE_INLINE btScalar dot(const btVector3& v) const - { - return m_floats[0] * v.m_floats[0] + m_floats[1] * v.m_floats[1] +m_floats[2] * v.m_floats[2]; - } - - /**@brief Return the length of the vector squared */ - SIMD_FORCE_INLINE btScalar length2() const - { - return dot(*this); - } - - /**@brief Return the length of the vector */ - SIMD_FORCE_INLINE btScalar length() const - { - return btSqrt(length2()); - } - - /**@brief Return the distance squared between the ends of this and another vector - * This is symantically treating the vector like a point */ - SIMD_FORCE_INLINE btScalar distance2(const btVector3& v) const; - - /**@brief Return the distance between the ends of this and another vector - * This is symantically treating the vector like a point */ - SIMD_FORCE_INLINE btScalar distance(const btVector3& v) const; - - /**@brief Normalize this vector - * x^2 + y^2 + z^2 = 1 */ - SIMD_FORCE_INLINE btVector3& normalize() - { - return *this /= length(); - } - - /**@brief Return a normalized version of this vector */ - SIMD_FORCE_INLINE btVector3 normalized() const; - - /**@brief Rotate this vector - * @param wAxis The axis to rotate about - * @param angle The angle to rotate by */ - SIMD_FORCE_INLINE btVector3 rotate( const btVector3& wAxis, const btScalar angle ); - - /**@brief Return the angle between this and another vector - * @param v The other vector */ - SIMD_FORCE_INLINE btScalar angle(const btVector3& v) const - { - btScalar s = btSqrt(length2() * v.length2()); - btFullAssert(s != btScalar(0.0)); - return btAcos(dot(v) / s); - } - /**@brief Return a vector will the absolute values of each element */ - SIMD_FORCE_INLINE btVector3 absolute() const - { - return btVector3( - btFabs(m_floats[0]), - btFabs(m_floats[1]), - btFabs(m_floats[2])); - } - /**@brief Return the cross product between this and another vector - * @param v The other vector */ - SIMD_FORCE_INLINE btVector3 cross(const btVector3& v) const - { - return btVector3( - m_floats[1] * v.m_floats[2] -m_floats[2] * v.m_floats[1], - m_floats[2] * v.m_floats[0] - m_floats[0] * v.m_floats[2], - m_floats[0] * v.m_floats[1] - m_floats[1] * v.m_floats[0]); - } - - SIMD_FORCE_INLINE btScalar triple(const btVector3& v1, const btVector3& v2) const - { - return m_floats[0] * (v1.m_floats[1] * v2.m_floats[2] - v1.m_floats[2] * v2.m_floats[1]) + - m_floats[1] * (v1.m_floats[2] * v2.m_floats[0] - v1.m_floats[0] * v2.m_floats[2]) + - m_floats[2] * (v1.m_floats[0] * v2.m_floats[1] - v1.m_floats[1] * v2.m_floats[0]); - } - - /**@brief Return the axis with the smallest value - * Note return values are 0,1,2 for x, y, or z */ - SIMD_FORCE_INLINE int minAxis() const - { - return m_floats[0] < m_floats[1] ? (m_floats[0] return this, t=1 => return other) */ - SIMD_FORCE_INLINE btVector3 lerp(const btVector3& v, const btScalar& t) const - { - return btVector3(m_floats[0] + (v.m_floats[0] - m_floats[0]) * t, - m_floats[1] + (v.m_floats[1] - m_floats[1]) * t, - m_floats[2] + (v.m_floats[2] -m_floats[2]) * t); - } - - /**@brief Elementwise multiply this vector by the other - * @param v The other vector */ - SIMD_FORCE_INLINE btVector3& operator*=(const btVector3& v) - { - m_floats[0] *= v.m_floats[0]; m_floats[1] *= v.m_floats[1];m_floats[2] *= v.m_floats[2]; - return *this; - } - - /**@brief Return the x value */ - SIMD_FORCE_INLINE const btScalar& getX() const { return m_floats[0]; } - /**@brief Return the y value */ - SIMD_FORCE_INLINE const btScalar& getY() const { return m_floats[1]; } - /**@brief Return the z value */ - SIMD_FORCE_INLINE const btScalar& getZ() const { return m_floats[2]; } - /**@brief Set the x value */ - SIMD_FORCE_INLINE void setX(btScalar x) { m_floats[0] = x;}; - /**@brief Set the y value */ - SIMD_FORCE_INLINE void setY(btScalar y) { m_floats[1] = y;}; - /**@brief Set the z value */ - SIMD_FORCE_INLINE void setZ(btScalar z) {m_floats[2] = z;}; - /**@brief Set the w value */ - SIMD_FORCE_INLINE void setW(btScalar w) { m_floats[3] = w;}; - /**@brief Return the x value */ - SIMD_FORCE_INLINE const btScalar& x() const { return m_floats[0]; } - /**@brief Return the y value */ - SIMD_FORCE_INLINE const btScalar& y() const { return m_floats[1]; } - /**@brief Return the z value */ - SIMD_FORCE_INLINE const btScalar& z() const { return m_floats[2]; } - /**@brief Return the w value */ - SIMD_FORCE_INLINE const btScalar& w() const { return m_floats[3]; } - - //SIMD_FORCE_INLINE btScalar& operator[](int i) { return (&m_floats[0])[i]; } - //SIMD_FORCE_INLINE const btScalar& operator[](int i) const { return (&m_floats[0])[i]; } - ///operator btScalar*() replaces operator[], using implicit conversion. We added operator != and operator == to avoid pointer comparisons. - SIMD_FORCE_INLINE operator btScalar *() { return &m_floats[0]; } - SIMD_FORCE_INLINE operator const btScalar *() const { return &m_floats[0]; } - - SIMD_FORCE_INLINE bool operator==(const btVector3& other) const - { - return ((m_floats[3]==other.m_floats[3]) && (m_floats[2]==other.m_floats[2]) && (m_floats[1]==other.m_floats[1]) && (m_floats[0]==other.m_floats[0])); - } - - SIMD_FORCE_INLINE bool operator!=(const btVector3& other) const - { - return !(*this == other); - } - - /**@brief Set each element to the max of the current values and the values of another btVector3 - * @param other The other btVector3 to compare with - */ - SIMD_FORCE_INLINE void setMax(const btVector3& other) - { - btSetMax(m_floats[0], other.m_floats[0]); - btSetMax(m_floats[1], other.m_floats[1]); - btSetMax(m_floats[2], other.m_floats[2]); - btSetMax(m_floats[3], other.w()); - } - /**@brief Set each element to the min of the current values and the values of another btVector3 - * @param other The other btVector3 to compare with - */ - SIMD_FORCE_INLINE void setMin(const btVector3& other) - { - btSetMin(m_floats[0], other.m_floats[0]); - btSetMin(m_floats[1], other.m_floats[1]); - btSetMin(m_floats[2], other.m_floats[2]); - btSetMin(m_floats[3], other.w()); - } - - SIMD_FORCE_INLINE void setValue(const btScalar& x, const btScalar& y, const btScalar& z) - { - m_floats[0]=x; - m_floats[1]=y; - m_floats[2]=z; - m_floats[3] = btScalar(0.); - } - - void getSkewSymmetricMatrix(btVector3* v0,btVector3* v1,btVector3* v2) const - { - v0->setValue(0. ,-z() ,y()); - v1->setValue(z() ,0. ,-x()); - v2->setValue(-y() ,x() ,0.); - } - - void setZero() - { - setValue(btScalar(0.),btScalar(0.),btScalar(0.)); - } - - SIMD_FORCE_INLINE bool isZero() const - { - return m_floats[0] == btScalar(0) && m_floats[1] == btScalar(0) && m_floats[2] == btScalar(0); - } - - SIMD_FORCE_INLINE bool fuzzyZero() const - { - return length2() < SIMD_EPSILON; - } - - SIMD_FORCE_INLINE void serialize(struct btVector3Data& dataOut) const; - - SIMD_FORCE_INLINE void deSerialize(const struct btVector3Data& dataIn); - - SIMD_FORCE_INLINE void serializeFloat(struct btVector3FloatData& dataOut) const; - - SIMD_FORCE_INLINE void deSerializeFloat(const struct btVector3FloatData& dataIn); - - SIMD_FORCE_INLINE void serializeDouble(struct btVector3DoubleData& dataOut) const; - - SIMD_FORCE_INLINE void deSerializeDouble(const struct btVector3DoubleData& dataIn); - -}; - -/**@brief Return the sum of two vectors (Point symantics)*/ -SIMD_FORCE_INLINE btVector3 -operator+(const btVector3& v1, const btVector3& v2) -{ - return btVector3(v1.m_floats[0] + v2.m_floats[0], v1.m_floats[1] + v2.m_floats[1], v1.m_floats[2] + v2.m_floats[2]); -} - -/**@brief Return the elementwise product of two vectors */ -SIMD_FORCE_INLINE btVector3 -operator*(const btVector3& v1, const btVector3& v2) -{ - return btVector3(v1.m_floats[0] * v2.m_floats[0], v1.m_floats[1] * v2.m_floats[1], v1.m_floats[2] * v2.m_floats[2]); -} - -/**@brief Return the difference between two vectors */ -SIMD_FORCE_INLINE btVector3 -operator-(const btVector3& v1, const btVector3& v2) -{ - return btVector3(v1.m_floats[0] - v2.m_floats[0], v1.m_floats[1] - v2.m_floats[1], v1.m_floats[2] - v2.m_floats[2]); -} -/**@brief Return the negative of the vector */ -SIMD_FORCE_INLINE btVector3 -operator-(const btVector3& v) -{ - return btVector3(-v.m_floats[0], -v.m_floats[1], -v.m_floats[2]); -} - -/**@brief Return the vector scaled by s */ -SIMD_FORCE_INLINE btVector3 -operator*(const btVector3& v, const btScalar& s) -{ - return btVector3(v.m_floats[0] * s, v.m_floats[1] * s, v.m_floats[2] * s); -} - -/**@brief Return the vector scaled by s */ -SIMD_FORCE_INLINE btVector3 -operator*(const btScalar& s, const btVector3& v) -{ - return v * s; -} - -/**@brief Return the vector inversely scaled by s */ -SIMD_FORCE_INLINE btVector3 -operator/(const btVector3& v, const btScalar& s) -{ - btFullAssert(s != btScalar(0.0)); - return v * (btScalar(1.0) / s); -} - -/**@brief Return the vector inversely scaled by s */ -SIMD_FORCE_INLINE btVector3 -operator/(const btVector3& v1, const btVector3& v2) -{ - return btVector3(v1.m_floats[0] / v2.m_floats[0],v1.m_floats[1] / v2.m_floats[1],v1.m_floats[2] / v2.m_floats[2]); -} - -/**@brief Return the dot product between two vectors */ -SIMD_FORCE_INLINE btScalar -btDot(const btVector3& v1, const btVector3& v2) -{ - return v1.dot(v2); -} - - -/**@brief Return the distance squared between two vectors */ -SIMD_FORCE_INLINE btScalar -btDistance2(const btVector3& v1, const btVector3& v2) -{ - return v1.distance2(v2); -} - - -/**@brief Return the distance between two vectors */ -SIMD_FORCE_INLINE btScalar -btDistance(const btVector3& v1, const btVector3& v2) -{ - return v1.distance(v2); -} - -/**@brief Return the angle between two vectors */ -SIMD_FORCE_INLINE btScalar -btAngle(const btVector3& v1, const btVector3& v2) -{ - return v1.angle(v2); -} - -/**@brief Return the cross product of two vectors */ -SIMD_FORCE_INLINE btVector3 -btCross(const btVector3& v1, const btVector3& v2) -{ - return v1.cross(v2); -} - -SIMD_FORCE_INLINE btScalar -btTriple(const btVector3& v1, const btVector3& v2, const btVector3& v3) -{ - return v1.triple(v2, v3); -} - -/**@brief Return the linear interpolation between two vectors - * @param v1 One vector - * @param v2 The other vector - * @param t The ration of this to v (t = 0 => return v1, t=1 => return v2) */ -SIMD_FORCE_INLINE btVector3 -lerp(const btVector3& v1, const btVector3& v2, const btScalar& t) -{ - return v1.lerp(v2, t); -} - - - -SIMD_FORCE_INLINE btScalar btVector3::distance2(const btVector3& v) const -{ - return (v - *this).length2(); -} - -SIMD_FORCE_INLINE btScalar btVector3::distance(const btVector3& v) const -{ - return (v - *this).length(); -} - -SIMD_FORCE_INLINE btVector3 btVector3::normalized() const -{ - return *this / length(); -} - -SIMD_FORCE_INLINE btVector3 btVector3::rotate( const btVector3& wAxis, const btScalar angle ) -{ - // wAxis must be a unit lenght vector - - btVector3 o = wAxis * wAxis.dot( *this ); - btVector3 x = *this - o; - btVector3 y; - - y = wAxis.cross( *this ); - - return ( o + x * btCos( angle ) + y * btSin( angle ) ); -} - -class btVector4 : public btVector3 -{ -public: - - SIMD_FORCE_INLINE btVector4() {} - - - SIMD_FORCE_INLINE btVector4(const btScalar& x, const btScalar& y, const btScalar& z,const btScalar& w) - : btVector3(x,y,z) - { - m_floats[3] = w; - } - - - SIMD_FORCE_INLINE btVector4 absolute4() const - { - return btVector4( - btFabs(m_floats[0]), - btFabs(m_floats[1]), - btFabs(m_floats[2]), - btFabs(m_floats[3])); - } - - - - btScalar getW() const { return m_floats[3];} - - - SIMD_FORCE_INLINE int maxAxis4() const - { - int maxIndex = -1; - btScalar maxVal = btScalar(-BT_LARGE_FLOAT); - if (m_floats[0] > maxVal) - { - maxIndex = 0; - maxVal = m_floats[0]; - } - if (m_floats[1] > maxVal) - { - maxIndex = 1; - maxVal = m_floats[1]; - } - if (m_floats[2] > maxVal) - { - maxIndex = 2; - maxVal =m_floats[2]; - } - if (m_floats[3] > maxVal) - { - maxIndex = 3; - maxVal = m_floats[3]; - } - - - - - return maxIndex; - - } - - - SIMD_FORCE_INLINE int minAxis4() const - { - int minIndex = -1; - btScalar minVal = btScalar(BT_LARGE_FLOAT); - if (m_floats[0] < minVal) - { - minIndex = 0; - minVal = m_floats[0]; - } - if (m_floats[1] < minVal) - { - minIndex = 1; - minVal = m_floats[1]; - } - if (m_floats[2] < minVal) - { - minIndex = 2; - minVal =m_floats[2]; - } - if (m_floats[3] < minVal) - { - minIndex = 3; - minVal = m_floats[3]; - } - - return minIndex; - - } - - - SIMD_FORCE_INLINE int closestAxis4() const - { - return absolute4().maxAxis4(); - } - - - - - /**@brief Set x,y,z and zero w - * @param x Value of x - * @param y Value of y - * @param z Value of z - */ - - -/* void getValue(btScalar *m) const - { - m[0] = m_floats[0]; - m[1] = m_floats[1]; - m[2] =m_floats[2]; - } -*/ -/**@brief Set the values - * @param x Value of x - * @param y Value of y - * @param z Value of z - * @param w Value of w - */ - SIMD_FORCE_INLINE void setValue(const btScalar& x, const btScalar& y, const btScalar& z,const btScalar& w) - { - m_floats[0]=x; - m_floats[1]=y; - m_floats[2]=z; - m_floats[3]=w; - } - - -}; - - -///btSwapVector3Endian swaps vector endianness, useful for network and cross-platform serialization -SIMD_FORCE_INLINE void btSwapScalarEndian(const btScalar& sourceVal, btScalar& destVal) -{ - #ifdef BT_USE_DOUBLE_PRECISION - unsigned char* dest = (unsigned char*) &destVal; - unsigned char* src = (unsigned char*) &sourceVal; - dest[0] = src[7]; - dest[1] = src[6]; - dest[2] = src[5]; - dest[3] = src[4]; - dest[4] = src[3]; - dest[5] = src[2]; - dest[6] = src[1]; - dest[7] = src[0]; -#else - unsigned char* dest = (unsigned char*) &destVal; - unsigned char* src = (unsigned char*) &sourceVal; - dest[0] = src[3]; - dest[1] = src[2]; - dest[2] = src[1]; - dest[3] = src[0]; -#endif //BT_USE_DOUBLE_PRECISION -} -///btSwapVector3Endian swaps vector endianness, useful for network and cross-platform serialization -SIMD_FORCE_INLINE void btSwapVector3Endian(const btVector3& sourceVec, btVector3& destVec) -{ - for (int i=0;i<4;i++) - { - btSwapScalarEndian(sourceVec[i],destVec[i]); - } - -} - -///btUnSwapVector3Endian swaps vector endianness, useful for network and cross-platform serialization -SIMD_FORCE_INLINE void btUnSwapVector3Endian(btVector3& vector) -{ - - btVector3 swappedVec; - for (int i=0;i<4;i++) - { - btSwapScalarEndian(vector[i],swappedVec[i]); - } - vector = swappedVec; -} - -SIMD_FORCE_INLINE void btPlaneSpace1 (const btVector3& n, btVector3& p, btVector3& q) -{ - if (btFabs(n.z()) > SIMDSQRT12) { - // choose p in y-z plane - btScalar a = n[1]*n[1] + n[2]*n[2]; - btScalar k = btRecipSqrt (a); - p.setValue(0,-n[2]*k,n[1]*k); - // set q = n x p - q.setValue(a*k,-n[0]*p[2],n[0]*p[1]); - } - else { - // choose p in x-y plane - btScalar a = n.x()*n.x() + n.y()*n.y(); - btScalar k = btRecipSqrt (a); - p.setValue(-n.y()*k,n.x()*k,0); - // set q = n x p - q.setValue(-n.z()*p.y(),n.z()*p.x(),a*k); - } -} - - -struct btVector3FloatData -{ - float m_floats[4]; -}; - -struct btVector3DoubleData -{ - double m_floats[4]; - -}; - -SIMD_FORCE_INLINE void btVector3::serializeFloat(struct btVector3FloatData& dataOut) const -{ - ///could also do a memcpy, check if it is worth it - for (int i=0;i<4;i++) - dataOut.m_floats[i] = float(m_floats[i]); -} - -SIMD_FORCE_INLINE void btVector3::deSerializeFloat(const struct btVector3FloatData& dataIn) -{ - for (int i=0;i<4;i++) - m_floats[i] = btScalar(dataIn.m_floats[i]); -} - - -SIMD_FORCE_INLINE void btVector3::serializeDouble(struct btVector3DoubleData& dataOut) const -{ - ///could also do a memcpy, check if it is worth it - for (int i=0;i<4;i++) - dataOut.m_floats[i] = double(m_floats[i]); -} - -SIMD_FORCE_INLINE void btVector3::deSerializeDouble(const struct btVector3DoubleData& dataIn) -{ - for (int i=0;i<4;i++) - m_floats[i] = btScalar(dataIn.m_floats[i]); -} - - -SIMD_FORCE_INLINE void btVector3::serialize(struct btVector3Data& dataOut) const -{ - ///could also do a memcpy, check if it is worth it - for (int i=0;i<4;i++) - dataOut.m_floats[i] = m_floats[i]; -} - -SIMD_FORCE_INLINE void btVector3::deSerialize(const struct btVector3Data& dataIn) -{ - for (int i=0;i<4;i++) - m_floats[i] = dataIn.m_floats[i]; -} - - -#endif //SIMD__VECTOR3_H diff --git a/extern/bullet2/Makefile b/extern/bullet2/Makefile index 554179558d9..d974569e63d 100644 --- a/extern/bullet2/Makefile +++ b/extern/bullet2/Makefile @@ -1,3 +1,5 @@ +# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- +# vim: tabstop=8 # # $Id$ # @@ -17,56 +19,47 @@ # along with this program; if not, write to the Free Software Foundation, # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. +# The Original Code is Copyright (C) 2002 by Hans Lambermont # All rights reserved. # # The Original Code is: all of this file. # -# Contributor(s): none yet. +# Contributor(s): # # ***** END GPL LICENSE BLOCK ***** -# - LIBNAME = bullet2 +include nan_definitions.mk +SOURCEDIR = extern/$(LIBNAME) DIR = $(OCGDIR)/extern/$(LIBNAME) +DIRS = src +DISTDIR = src BULLETDIRS = \ LinearMath \ BulletCollision/BroadphaseCollision \ BulletCollision/CollisionShapes \ BulletCollision/NarrowPhaseCollision \ -BulletCollision/CollisionDispatch \ BulletCollision/Gimpact \ +BulletCollision//CollisionDispatch \ BulletDynamics/ConstraintSolver \ BulletDynamics/Vehicle \ BulletDynamics/Dynamics \ BulletSoftBody -CCSRCS = $(wildcard \ -LinearMath/*.cpp \ -BulletCollision/BroadphaseCollision/*.cpp \ -BulletCollision/CollisionShapes/*.cpp \ -BulletCollision/NarrowPhaseCollision/*.cpp \ -BulletCollision/CollisionDispatch/*.cpp \ -BulletCollision/Gimpact/*.cpp \ -BulletDynamics/ConstraintSolver/*.cpp \ -BulletDynamics/Vehicle/*.cpp \ -BulletDynamics/Dynamics/*.cpp \ -BulletSoftBody/*.cpp) +include nan_subdirs.mk -CPPFLAGS += -D_LIB -I. -IBulletCollision -IBulletDynamics -ILinearMath +CP = $(NANBLENDERHOME)/intern/tools/cpifdiff.sh -all debug:: objdirs - -include nan_compile.mk - -.PHONY: objdirs clean -objdirs: +install: $(ALL_OR_DEBUG) + @[ -d $(NAN_BULLET2) ] || mkdir -p $(NAN_BULLET2) + @[ -d $(NAN_BULLET2)/include ] || mkdir -p $(NAN_BULLET2)/include @for i in $(BULLETDIRS); do \ - [ -d $(DIR)/$(DEBUG_DIR)$$i ] || mkdir -p $(DIR)/$(DEBUG_DIR)$$i; \ + [ -d $(NAN_BULLET2)/include/$$i ] || mkdir -p $(NAN_BULLET2)/include/$$i; \ + $(CP) $(DISTDIR)/$$i/*.h $(NAN_BULLET2)/include/$$i; \ done - -clean:: - rm -rf $(DIR) - rm -rf $(NAN_BULLET2)/lib/libbullet2.a - rm -rf $(NAN_BULLET2)/include + @[ -d $(NAN_BULLET2)/lib ] || mkdir -p $(NAN_BULLET2)/lib + @$(CP) $(DISTDIR)/*.h $(NAN_BULLET2)/include + @$(CP) $(OCGDIR)/extern/bullet2/libbullet2.a $(NAN_BULLET2)/lib +ifeq ($(OS),darwin) + ranlib $(NAN_BULLET2)/lib/libbullet2.a +endif diff --git a/extern/bullet2/MiniCL/cl.h b/extern/bullet2/MiniCL/cl.h deleted file mode 100644 index b0cda4237e0..00000000000 --- a/extern/bullet2/MiniCL/cl.h +++ /dev/null @@ -1,865 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008-2009 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. - * - * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - ******************************************************************************/ - -#ifndef __OPENCL_CL_H -#define __OPENCL_CL_H - -#ifdef __APPLE__ -#include -#else -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/******************************************************************************/ - -typedef struct _cl_platform_id * cl_platform_id; -typedef struct _cl_device_id * cl_device_id; -typedef struct _cl_context * cl_context; -typedef struct _cl_command_queue * cl_command_queue; -typedef struct _cl_mem * cl_mem; -typedef struct _cl_program * cl_program; -typedef struct _cl_kernel * cl_kernel; -typedef struct _cl_event * cl_event; -typedef struct _cl_sampler * cl_sampler; - -typedef cl_uint cl_bool; /* WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed to be the same size as the bool in kernels. */ -typedef cl_ulong cl_bitfield; -typedef cl_bitfield cl_device_type; -typedef cl_uint cl_platform_info; -typedef cl_uint cl_device_info; -typedef cl_bitfield cl_device_address_info; -typedef cl_bitfield cl_device_fp_config; -typedef cl_uint cl_device_mem_cache_type; -typedef cl_uint cl_device_local_mem_type; -typedef cl_bitfield cl_device_exec_capabilities; -typedef cl_bitfield cl_command_queue_properties; - -typedef intptr_t cl_context_properties; -typedef cl_uint cl_context_info; -typedef cl_uint cl_command_queue_info; -typedef cl_uint cl_channel_order; -typedef cl_uint cl_channel_type; -typedef cl_bitfield cl_mem_flags; -typedef cl_uint cl_mem_object_type; -typedef cl_uint cl_mem_info; -typedef cl_uint cl_image_info; -typedef cl_uint cl_addressing_mode; -typedef cl_uint cl_filter_mode; -typedef cl_uint cl_sampler_info; -typedef cl_bitfield cl_map_flags; -typedef cl_uint cl_program_info; -typedef cl_uint cl_program_build_info; -typedef cl_int cl_build_status; -typedef cl_uint cl_kernel_info; -typedef cl_uint cl_kernel_work_group_info; -typedef cl_uint cl_event_info; -typedef cl_uint cl_command_type; -typedef cl_uint cl_profiling_info; - -typedef struct _cl_image_format { - cl_channel_order image_channel_order; - cl_channel_type image_channel_data_type; -} cl_image_format; - -/******************************************************************************/ - -// Error Codes -#define CL_SUCCESS 0 -#define CL_DEVICE_NOT_FOUND -1 -#define CL_DEVICE_NOT_AVAILABLE -2 -#define CL_DEVICE_COMPILER_NOT_AVAILABLE -3 -#define CL_MEM_OBJECT_ALLOCATION_FAILURE -4 -#define CL_OUT_OF_RESOURCES -5 -#define CL_OUT_OF_HOST_MEMORY -6 -#define CL_PROFILING_INFO_NOT_AVAILABLE -7 -#define CL_MEM_COPY_OVERLAP -8 -#define CL_IMAGE_FORMAT_MISMATCH -9 -#define CL_IMAGE_FORMAT_NOT_SUPPORTED -10 -#define CL_BUILD_PROGRAM_FAILURE -11 -#define CL_MAP_FAILURE -12 - -#define CL_INVALID_VALUE -30 -#define CL_INVALID_DEVICE_TYPE -31 -#define CL_INVALID_PLATFORM -32 -#define CL_INVALID_DEVICE -33 -#define CL_INVALID_CONTEXT -34 -#define CL_INVALID_QUEUE_PROPERTIES -35 -#define CL_INVALID_COMMAND_QUEUE -36 -#define CL_INVALID_HOST_PTR -37 -#define CL_INVALID_MEM_OBJECT -38 -#define CL_INVALID_IMAGE_FORMAT_DESCRIPTOR -39 -#define CL_INVALID_IMAGE_SIZE -40 -#define CL_INVALID_SAMPLER -41 -#define CL_INVALID_BINARY -42 -#define CL_INVALID_BUILD_OPTIONS -43 -#define CL_INVALID_PROGRAM -44 -#define CL_INVALID_PROGRAM_EXECUTABLE -45 -#define CL_INVALID_KERNEL_NAME -46 -#define CL_INVALID_KERNEL_DEFINITION -47 -#define CL_INVALID_KERNEL -48 -#define CL_INVALID_ARG_INDEX -49 -#define CL_INVALID_ARG_VALUE -50 -#define CL_INVALID_ARG_SIZE -51 -#define CL_INVALID_KERNEL_ARGS -52 -#define CL_INVALID_WORK_DIMENSION -53 -#define CL_INVALID_WORK_GROUP_SIZE -54 -#define CL_INVALID_WORK_ITEM_SIZE -55 -#define CL_INVALID_GLOBAL_OFFSET -56 -#define CL_INVALID_EVENT_WAIT_LIST -57 -#define CL_INVALID_EVENT -58 -#define CL_INVALID_OPERATION -59 -#define CL_INVALID_GL_OBJECT -60 -#define CL_INVALID_BUFFER_SIZE -61 -#define CL_INVALID_MIP_LEVEL -62 - -// OpenCL Version -#define CL_VERSION_1_0 1 - -// cl_bool -#define CL_FALSE 0 -#define CL_TRUE 1 - -// cl_platform_info -#define CL_PLATFORM_PROFILE 0x0900 -#define CL_PLATFORM_VERSION 0x0901 -#define CL_PLATFORM_NAME 0x0902 -#define CL_PLATFORM_VENDOR 0x0903 -#define CL_PLATFORM_EXTENSIONS 0x0904 - -// cl_device_type - bitfield -#define CL_DEVICE_TYPE_DEFAULT (1 << 0) -#define CL_DEVICE_TYPE_CPU (1 << 1) -#define CL_DEVICE_TYPE_GPU (1 << 2) -#define CL_DEVICE_TYPE_ACCELERATOR (1 << 3) -#define CL_DEVICE_TYPE_ALL 0xFFFFFFFF - -// cl_device_info -#define CL_DEVICE_TYPE 0x1000 -#define CL_DEVICE_VENDOR_ID 0x1001 -#define CL_DEVICE_MAX_COMPUTE_UNITS 0x1002 -#define CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS 0x1003 -#define CL_DEVICE_MAX_WORK_GROUP_SIZE 0x1004 -#define CL_DEVICE_MAX_WORK_ITEM_SIZES 0x1005 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR 0x1006 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT 0x1007 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT 0x1008 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG 0x1009 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT 0x100A -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE 0x100B -#define CL_DEVICE_MAX_CLOCK_FREQUENCY 0x100C -#define CL_DEVICE_ADDRESS_BITS 0x100D -#define CL_DEVICE_MAX_READ_IMAGE_ARGS 0x100E -#define CL_DEVICE_MAX_WRITE_IMAGE_ARGS 0x100F -#define CL_DEVICE_MAX_MEM_ALLOC_SIZE 0x1010 -#define CL_DEVICE_IMAGE2D_MAX_WIDTH 0x1011 -#define CL_DEVICE_IMAGE2D_MAX_HEIGHT 0x1012 -#define CL_DEVICE_IMAGE3D_MAX_WIDTH 0x1013 -#define CL_DEVICE_IMAGE3D_MAX_HEIGHT 0x1014 -#define CL_DEVICE_IMAGE3D_MAX_DEPTH 0x1015 -#define CL_DEVICE_IMAGE_SUPPORT 0x1016 -#define CL_DEVICE_MAX_PARAMETER_SIZE 0x1017 -#define CL_DEVICE_MAX_SAMPLERS 0x1018 -#define CL_DEVICE_MEM_BASE_ADDR_ALIGN 0x1019 -#define CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE 0x101A -#define CL_DEVICE_SINGLE_FP_CONFIG 0x101B -#define CL_DEVICE_GLOBAL_MEM_CACHE_TYPE 0x101C -#define CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE 0x101D -#define CL_DEVICE_GLOBAL_MEM_CACHE_SIZE 0x101E -#define CL_DEVICE_GLOBAL_MEM_SIZE 0x101F -#define CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE 0x1020 -#define CL_DEVICE_MAX_CONSTANT_ARGS 0x1021 -#define CL_DEVICE_LOCAL_MEM_TYPE 0x1022 -#define CL_DEVICE_LOCAL_MEM_SIZE 0x1023 -#define CL_DEVICE_ERROR_CORRECTION_SUPPORT 0x1024 -#define CL_DEVICE_PROFILING_TIMER_RESOLUTION 0x1025 -#define CL_DEVICE_ENDIAN_LITTLE 0x1026 -#define CL_DEVICE_AVAILABLE 0x1027 -#define CL_DEVICE_COMPILER_AVAILABLE 0x1028 -#define CL_DEVICE_EXECUTION_CAPABILITIES 0x1029 -#define CL_DEVICE_QUEUE_PROPERTIES 0x102A -#define CL_DEVICE_NAME 0x102B -#define CL_DEVICE_VENDOR 0x102C -#define CL_DRIVER_VERSION 0x102D -#define CL_DEVICE_PROFILE 0x102E -#define CL_DEVICE_VERSION 0x102F -#define CL_DEVICE_EXTENSIONS 0x1030 -#define CL_DEVICE_PLATFORM 0x1031 - -// cl_device_address_info - bitfield -#define CL_DEVICE_ADDRESS_32_BITS (1 << 0) -#define CL_DEVICE_ADDRESS_64_BITS (1 << 1) - -// cl_device_fp_config - bitfield -#define CL_FP_DENORM (1 << 0) -#define CL_FP_INF_NAN (1 << 1) -#define CL_FP_ROUND_TO_NEAREST (1 << 2) -#define CL_FP_ROUND_TO_ZERO (1 << 3) -#define CL_FP_ROUND_TO_INF (1 << 4) -#define CL_FP_FMA (1 << 5) - -// cl_device_mem_cache_type -#define CL_NONE 0x0 -#define CL_READ_ONLY_CACHE 0x1 -#define CL_READ_WRITE_CACHE 0x2 - -// cl_device_local_mem_type -#define CL_LOCAL 0x1 -#define CL_GLOBAL 0x2 - -// cl_device_exec_capabilities - bitfield -#define CL_EXEC_KERNEL (1 << 0) -#define CL_EXEC_NATIVE_KERNEL (1 << 1) - -// cl_command_queue_properties - bitfield -#define CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE (1 << 0) -#define CL_QUEUE_PROFILING_ENABLE (1 << 1) - -// cl_context_info -#define CL_CONTEXT_REFERENCE_COUNT 0x1080 -#define CL_CONTEXT_NUM_DEVICES 0x1081 -#define CL_CONTEXT_DEVICES 0x1082 -#define CL_CONTEXT_PROPERTIES 0x1083 -#define CL_CONTEXT_PLATFORM 0x1084 - -// cl_command_queue_info -#define CL_QUEUE_CONTEXT 0x1090 -#define CL_QUEUE_DEVICE 0x1091 -#define CL_QUEUE_REFERENCE_COUNT 0x1092 -#define CL_QUEUE_PROPERTIES 0x1093 - -// cl_mem_flags - bitfield -#define CL_MEM_READ_WRITE (1 << 0) -#define CL_MEM_WRITE_ONLY (1 << 1) -#define CL_MEM_READ_ONLY (1 << 2) -#define CL_MEM_USE_HOST_PTR (1 << 3) -#define CL_MEM_ALLOC_HOST_PTR (1 << 4) -#define CL_MEM_COPY_HOST_PTR (1 << 5) - -// cl_channel_order -#define CL_R 0x10B0 -#define CL_A 0x10B1 -#define CL_RG 0x10B2 -#define CL_RA 0x10B3 -#define CL_RGB 0x10B4 -#define CL_RGBA 0x10B5 -#define CL_BGRA 0x10B6 -#define CL_ARGB 0x10B7 -#define CL_INTENSITY 0x10B8 -#define CL_LUMINANCE 0x10B9 - -// cl_channel_type -#define CL_SNORM_INT8 0x10D0 -#define CL_SNORM_INT16 0x10D1 -#define CL_UNORM_INT8 0x10D2 -#define CL_UNORM_INT16 0x10D3 -#define CL_UNORM_SHORT_565 0x10D4 -#define CL_UNORM_SHORT_555 0x10D5 -#define CL_UNORM_INT_101010 0x10D6 -#define CL_SIGNED_INT8 0x10D7 -#define CL_SIGNED_INT16 0x10D8 -#define CL_SIGNED_INT32 0x10D9 -#define CL_UNSIGNED_INT8 0x10DA -#define CL_UNSIGNED_INT16 0x10DB -#define CL_UNSIGNED_INT32 0x10DC -#define CL_HALF_FLOAT 0x10DD -#define CL_FLOAT 0x10DE - -// cl_mem_object_type -#define CL_MEM_OBJECT_BUFFER 0x10F0 -#define CL_MEM_OBJECT_IMAGE2D 0x10F1 -#define CL_MEM_OBJECT_IMAGE3D 0x10F2 - -// cl_mem_info -#define CL_MEM_TYPE 0x1100 -#define CL_MEM_FLAGS 0x1101 -#define CL_MEM_SIZE 0x1102 -#define CL_MEM_HOST_PTR 0x1103 -#define CL_MEM_MAP_COUNT 0x1104 -#define CL_MEM_REFERENCE_COUNT 0x1105 -#define CL_MEM_CONTEXT 0x1106 - -// cl_image_info -#define CL_IMAGE_FORMAT 0x1110 -#define CL_IMAGE_ELEMENT_SIZE 0x1111 -#define CL_IMAGE_ROW_PITCH 0x1112 -#define CL_IMAGE_SLICE_PITCH 0x1113 -#define CL_IMAGE_WIDTH 0x1114 -#define CL_IMAGE_HEIGHT 0x1115 -#define CL_IMAGE_DEPTH 0x1116 - -// cl_addressing_mode -#define CL_ADDRESS_NONE 0x1130 -#define CL_ADDRESS_CLAMP_TO_EDGE 0x1131 -#define CL_ADDRESS_CLAMP 0x1132 -#define CL_ADDRESS_REPEAT 0x1133 - -// cl_filter_mode -#define CL_FILTER_NEAREST 0x1140 -#define CL_FILTER_LINEAR 0x1141 - -// cl_sampler_info -#define CL_SAMPLER_REFERENCE_COUNT 0x1150 -#define CL_SAMPLER_CONTEXT 0x1151 -#define CL_SAMPLER_NORMALIZED_COORDS 0x1152 -#define CL_SAMPLER_ADDRESSING_MODE 0x1153 -#define CL_SAMPLER_FILTER_MODE 0x1154 - -// cl_map_flags - bitfield -#define CL_MAP_READ (1 << 0) -#define CL_MAP_WRITE (1 << 1) - -// cl_program_info -#define CL_PROGRAM_REFERENCE_COUNT 0x1160 -#define CL_PROGRAM_CONTEXT 0x1161 -#define CL_PROGRAM_NUM_DEVICES 0x1162 -#define CL_PROGRAM_DEVICES 0x1163 -#define CL_PROGRAM_SOURCE 0x1164 -#define CL_PROGRAM_BINARY_SIZES 0x1165 -#define CL_PROGRAM_BINARIES 0x1166 - -// cl_program_build_info -#define CL_PROGRAM_BUILD_STATUS 0x1181 -#define CL_PROGRAM_BUILD_OPTIONS 0x1182 -#define CL_PROGRAM_BUILD_LOG 0x1183 - -// cl_build_status -#define CL_BUILD_SUCCESS 0 -#define CL_BUILD_NONE -1 -#define CL_BUILD_ERROR -2 -#define CL_BUILD_IN_PROGRESS -3 - -// cl_kernel_info -#define CL_KERNEL_FUNCTION_NAME 0x1190 -#define CL_KERNEL_NUM_ARGS 0x1191 -#define CL_KERNEL_REFERENCE_COUNT 0x1192 -#define CL_KERNEL_CONTEXT 0x1193 -#define CL_KERNEL_PROGRAM 0x1194 - -// cl_kernel_work_group_info -#define CL_KERNEL_WORK_GROUP_SIZE 0x11B0 -#define CL_KERNEL_COMPILE_WORK_GROUP_SIZE 0x11B1 -#define CL_KERNEL_LOCAL_MEM_SIZE 0x11B2 - -// cl_event_info -#define CL_EVENT_COMMAND_QUEUE 0x11D0 -#define CL_EVENT_COMMAND_TYPE 0x11D1 -#define CL_EVENT_REFERENCE_COUNT 0x11D2 -#define CL_EVENT_COMMAND_EXECUTION_STATUS 0x11D3 - -// cl_command_type -#define CL_COMMAND_NDRANGE_KERNEL 0x11F0 -#define CL_COMMAND_TASK 0x11F1 -#define CL_COMMAND_NATIVE_KERNEL 0x11F2 -#define CL_COMMAND_READ_BUFFER 0x11F3 -#define CL_COMMAND_WRITE_BUFFER 0x11F4 -#define CL_COMMAND_COPY_BUFFER 0x11F5 -#define CL_COMMAND_READ_IMAGE 0x11F6 -#define CL_COMMAND_WRITE_IMAGE 0x11F7 -#define CL_COMMAND_COPY_IMAGE 0x11F8 -#define CL_COMMAND_COPY_IMAGE_TO_BUFFER 0x11F9 -#define CL_COMMAND_COPY_BUFFER_TO_IMAGE 0x11FA -#define CL_COMMAND_MAP_BUFFER 0x11FB -#define CL_COMMAND_MAP_IMAGE 0x11FC -#define CL_COMMAND_UNMAP_MEM_OBJECT 0x11FD -#define CL_COMMAND_MARKER 0x11FE -#define CL_COMMAND_WAIT_FOR_EVENTS 0x11FF -#define CL_COMMAND_BARRIER 0x1200 -#define CL_COMMAND_ACQUIRE_GL_OBJECTS 0x1201 -#define CL_COMMAND_RELEASE_GL_OBJECTS 0x1202 - -// command execution status -#define CL_COMPLETE 0x0 -#define CL_RUNNING 0x1 -#define CL_SUBMITTED 0x2 -#define CL_QUEUED 0x3 - -// cl_profiling_info -#define CL_PROFILING_COMMAND_QUEUED 0x1280 -#define CL_PROFILING_COMMAND_SUBMIT 0x1281 -#define CL_PROFILING_COMMAND_START 0x1282 -#define CL_PROFILING_COMMAND_END 0x1283 - -/********************************************************************************************************/ - -// Platform API -extern CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformIDs(cl_uint /* num_entries */, - cl_platform_id * /* platforms */, - cl_uint * /* num_platforms */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformInfo(cl_platform_id /* platform */, - cl_platform_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -// Device APIs -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceIDs(cl_platform_id /* platform */, - cl_device_type /* device_type */, - cl_uint /* num_entries */, - cl_device_id * /* devices */, - cl_uint * /* num_devices */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceInfo(cl_device_id /* device */, - cl_device_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -// Context APIs -extern CL_API_ENTRY cl_context CL_API_CALL -clCreateContext(cl_context_properties * /* properties */, - cl_uint /* num_devices */, - const cl_device_id * /* devices */, - void (*pfn_notify)(const char *, const void *, size_t, void *) /* pfn_notify */, - void * /* user_data */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_context CL_API_CALL -clCreateContextFromType(cl_context_properties * /* properties */, - cl_device_type /* device_type */, - void (*pfn_notify)(const char *, const void *, size_t, void *) /* pfn_notify */, - void * /* user_data */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetContextInfo(cl_context /* context */, - cl_context_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -// Command Queue APIs -extern CL_API_ENTRY cl_command_queue CL_API_CALL -clCreateCommandQueue(cl_context /* context */, - cl_device_id /* device */, - cl_command_queue_properties /* properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetCommandQueueInfo(cl_command_queue /* command_queue */, - cl_command_queue_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetCommandQueueProperty(cl_command_queue /* command_queue */, - cl_command_queue_properties /* properties */, - cl_bool /* enable */, - cl_command_queue_properties * /* old_properties */) CL_API_SUFFIX__VERSION_1_0; - -// Memory Object APIs -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateBuffer(cl_context /* context */, - cl_mem_flags /* flags */, - size_t /* size */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateImage2D(cl_context /* context */, - cl_mem_flags /* flags */, - const cl_image_format * /* image_format */, - size_t /* image_width */, - size_t /* image_height */, - size_t /* image_row_pitch */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateImage3D(cl_context /* context */, - cl_mem_flags /* flags */, - const cl_image_format * /* image_format */, - size_t /* image_width */, - size_t /* image_height */, - size_t /* image_depth */, - size_t /* image_row_pitch */, - size_t /* image_slice_pitch */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetSupportedImageFormats(cl_context /* context */, - cl_mem_flags /* flags */, - cl_mem_object_type /* image_type */, - cl_uint /* num_entries */, - cl_image_format * /* image_formats */, - cl_uint * /* num_image_formats */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetMemObjectInfo(cl_mem /* memobj */, - cl_mem_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetImageInfo(cl_mem /* image */, - cl_image_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -// Sampler APIs -extern CL_API_ENTRY cl_sampler CL_API_CALL -clCreateSampler(cl_context /* context */, - cl_bool /* normalized_coords */, - cl_addressing_mode /* addressing_mode */, - cl_filter_mode /* filter_mode */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetSamplerInfo(cl_sampler /* sampler */, - cl_sampler_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -// Program Object APIs -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithSource(cl_context /* context */, - cl_uint /* count */, - const char ** /* strings */, - const size_t * /* lengths */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithBinary(cl_context /* context */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const size_t * /* lengths */, - const unsigned char ** /* binaries */, - cl_int * /* binary_status */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clBuildProgram(cl_program /* program */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* options */, - void (*pfn_notify)(cl_program /* program */, void * /* user_data */), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clUnloadCompiler(void) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetProgramInfo(cl_program /* program */, - cl_program_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetProgramBuildInfo(cl_program /* program */, - cl_device_id /* device */, - cl_program_build_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -// Kernel Object APIs -extern CL_API_ENTRY cl_kernel CL_API_CALL -clCreateKernel(cl_program /* program */, - const char * /* kernel_name */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clCreateKernelsInProgram(cl_program /* program */, - cl_uint /* num_kernels */, - cl_kernel * /* kernels */, - cl_uint * /* num_kernels_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArg(cl_kernel /* kernel */, - cl_uint /* arg_index */, - size_t /* arg_size */, - const void * /* arg_value */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelInfo(cl_kernel /* kernel */, - cl_kernel_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelWorkGroupInfo(cl_kernel /* kernel */, - cl_device_id /* device */, - cl_kernel_work_group_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -// Event Object APIs -extern CL_API_ENTRY cl_int CL_API_CALL -clWaitForEvents(cl_uint /* num_events */, - const cl_event * /* event_list */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetEventInfo(cl_event /* event */, - cl_event_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0; - -// Profiling APIs -extern CL_API_ENTRY cl_int CL_API_CALL -clGetEventProfilingInfo(cl_event /* event */, - cl_profiling_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -// Flush and Finish APIs -extern CL_API_ENTRY cl_int CL_API_CALL -clFlush(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clFinish(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -// Enqueued Commands APIs -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_read */, - size_t /* offset */, - size_t /* cb */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_write */, - size_t /* offset */, - size_t /* cb */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBuffer(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_buffer */, - size_t /* src_offset */, - size_t /* dst_offset */, - size_t /* cb */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_read */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t /* row_pitch */, - size_t /* slice_pitch */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_write */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t /* input_row_pitch */, - size_t /* input_slice_pitch */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImage(cl_command_queue /* command_queue */, - cl_mem /* src_image */, - cl_mem /* dst_image */, - const size_t * /* src_origin[3] */, - const size_t * /* dst_origin[3] */, - const size_t * /* region[3] */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImageToBuffer(cl_command_queue /* command_queue */, - cl_mem /* src_image */, - cl_mem /* dst_buffer */, - const size_t * /* src_origin[3] */, - const size_t * /* region[3] */, - size_t /* dst_offset */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBufferToImage(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_image */, - size_t /* src_offset */, - const size_t * /* dst_origin[3] */, - const size_t * /* region[3] */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY void * CL_API_CALL -clEnqueueMapBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_map */, - cl_map_flags /* map_flags */, - size_t /* offset */, - size_t /* cb */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY void * CL_API_CALL -clEnqueueMapImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_map */, - cl_map_flags /* map_flags */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t * /* image_row_pitch */, - size_t * /* image_slice_pitch */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueUnmapMemObject(cl_command_queue /* command_queue */, - cl_mem /* memobj */, - void * /* mapped_ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNDRangeKernel(cl_command_queue /* command_queue */, - cl_kernel /* kernel */, - cl_uint /* work_dim */, - const size_t * /* global_work_offset */, - const size_t * /* global_work_size */, - const size_t * /* local_work_size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueTask(cl_command_queue /* command_queue */, - cl_kernel /* kernel */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNativeKernel(cl_command_queue /* command_queue */, - void (*user_func)(void *), - void * /* args */, - size_t /* cb_args */, - cl_uint /* num_mem_objects */, - const cl_mem * /* mem_list */, - const void ** /* args_mem_loc */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMarker(cl_command_queue /* command_queue */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWaitForEvents(cl_command_queue /* command_queue */, - cl_uint /* num_events */, - const cl_event * /* event_list */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueBarrier(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -#ifdef __cplusplus -} -#endif - -#endif // __OPENCL_CL_H - diff --git a/extern/bullet2/MiniCL/cl_MiniCL_Defs.h b/extern/bullet2/MiniCL/cl_MiniCL_Defs.h deleted file mode 100644 index cad0b2590cd..00000000000 --- a/extern/bullet2/MiniCL/cl_MiniCL_Defs.h +++ /dev/null @@ -1,265 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library, Copyright (c) 2007 Erwin Coumans - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -*/ - -#include -#include -#include "LinearMath/btScalar.h" - -#include "MiniCL/cl.h" - - -#define __kernel -#define __global -#define __local -#define get_global_id(a) __guid_arg -#define get_local_id(a) ((__guid_arg) % gMiniCLNumOutstandingTasks) -#define get_local_size(a) (gMiniCLNumOutstandingTasks) -#define get_group_id(a) ((__guid_arg) / gMiniCLNumOutstandingTasks) - -#define CLK_LOCAL_MEM_FENCE 0x01 -#define CLK_GLOBAL_MEM_FENCE 0x02 - -static void barrier(unsigned int a) -{ - // TODO : implement -} - -ATTRIBUTE_ALIGNED16(struct) float8 -{ - float s0; - float s1; - float s2; - float s3; - float s4; - float s5; - float s6; - float s7; - - float8(float scalar) - { - s0=s1=s2=s3=s4=s5=s6=s7=scalar; - } -}; - -ATTRIBUTE_ALIGNED16(struct) float4 -{ - float x,y,z,w; - float4() {} - float4(float v) - { - x = y = z = w = v; - } - float4 operator*(const float4& other) - { - float4 tmp; - tmp.x = x*other.x; - tmp.y = y*other.y; - tmp.z = z*other.z; - tmp.w = w*other.w; - return tmp; - } - - float4 operator*(const float& other) - { - float4 tmp; - tmp.x = x*other; - tmp.y = y*other; - tmp.z = z*other; - tmp.w = w*other; - return tmp; - } - - - - float4& operator+=(const float4& other) - { - x += other.x; - y += other.y; - z += other.z; - w += other.w; - return *this; - } - - float4& operator-=(const float4& other) - { - x -= other.x; - y -= other.y; - z -= other.z; - w -= other.w; - return *this; - } - - float4& operator *=(float scalar) - { - x *= scalar; - y *= scalar; - z *= scalar; - w *= scalar; - return (*this); - } - - - - - -}; - -static float4 fabs(const float4& a) -{ - float4 tmp; - tmp.x = a.x < 0.f ? 0.f : a.x; - tmp.y = a.y < 0.f ? 0.f : a.y; - tmp.z = a.z < 0.f ? 0.f : a.z; - tmp.w = a.w < 0.f ? 0.f : a.w; - return tmp; -} -static float4 operator+(const float4& a,const float4& b) -{ - float4 tmp; - tmp.x = a.x + b.x; - tmp.y = a.y + b.y; - tmp.z = a.z + b.z; - tmp.w = a.w + b.w; - return tmp; -} - -static float4 operator-(const float4& a,const float4& b) -{ - float4 tmp; - tmp.x = a.x - b.x; - tmp.y = a.y - b.y; - tmp.z = a.z - b.z; - tmp.w = a.w - b.w; - return tmp; -} -static float4 operator*(float a,const float4& b) -{ - float4 tmp; - tmp.x = a * b.x; - tmp.y = a * b.y; - tmp.z = a * b.z; - tmp.w = a * b.w; - return tmp; -} - - -static float dot(const float4&a ,const float4& b) -{ - float4 tmp; - tmp.x = a.x*b.x; - tmp.y = a.y*b.y; - tmp.z = a.z*b.z; - tmp.w = a.w*b.w; - return tmp.x+tmp.y+tmp.z+tmp.w; -} - -static float4 cross(const float4&a ,const float4& b) -{ - float4 tmp; - tmp.x = a.y*b.z - a.z*b.y; - tmp.y = -a.x*b.z + a.z*b.x; - tmp.z = a.x*b.y - a.y*b.x; - tmp.w = 0.f; - return tmp; -} - -static float max(float a, float b) -{ - return (a >= b) ? a : b; -} - - -static float min(float a, float b) -{ - return (a <= b) ? a : b; -} - -static float fmax(float a, float b) -{ - return (a >= b) ? a : b; -} - -static float fmin(float a, float b) -{ - return (a <= b) ? a : b; -} - -struct int2 -{ - int x,y; -}; - -struct uint2 -{ - unsigned int x,y; -}; - -//typedef int2 uint2; - -typedef unsigned int uint; - -struct int4 -{ - int x,y,z,w; -}; - -struct uint4 -{ - unsigned int x,y,z,w; - uint4() {} - uint4(uint val) { x = y = z = w = val; } - uint4& operator+=(const uint4& other) - { - x += other.x; - y += other.y; - z += other.z; - w += other.w; - return *this; - } -}; -static uint4 operator+(const uint4& a,const uint4& b) -{ - uint4 tmp; - tmp.x = a.x + b.x; - tmp.y = a.y + b.y; - tmp.z = a.z + b.z; - tmp.w = a.w + b.w; - return tmp; -} -static uint4 operator-(const uint4& a,const uint4& b) -{ - uint4 tmp; - tmp.x = a.x - b.x; - tmp.y = a.y - b.y; - tmp.z = a.z - b.z; - tmp.w = a.w - b.w; - return tmp; -} - -#define native_sqrt sqrtf -#define native_sin sinf -#define native_cos cosf -#define native_powr powf - -#define GUID_ARG ,int __guid_arg -#define GUID_ARG_VAL ,__guid_arg - - -#define as_int(a) (*((int*)&(a))) - -extern "C" int gMiniCLNumOutstandingTasks; -// extern "C" void __kernel_func(); - - diff --git a/extern/bullet2/MiniCL/cl_gl.h b/extern/bullet2/MiniCL/cl_gl.h deleted file mode 100644 index 71bdaaa6ef5..00000000000 --- a/extern/bullet2/MiniCL/cl_gl.h +++ /dev/null @@ -1,113 +0,0 @@ -/********************************************************************************** - * Copyright (c) 2008-2009 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. - * - * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -#ifndef __OPENCL_CL_GL_H -#define __OPENCL_CL_GL_H - -#ifdef __APPLE__ -#include -#else -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -// NOTE: Make sure that appropriate GL header file is included separately - -typedef cl_uint cl_gl_object_type; -typedef cl_uint cl_gl_texture_info; -typedef cl_uint cl_gl_platform_info; - -// cl_gl_object_type -#define CL_GL_OBJECT_BUFFER 0x2000 -#define CL_GL_OBJECT_TEXTURE2D 0x2001 -#define CL_GL_OBJECT_TEXTURE3D 0x2002 -#define CL_GL_OBJECT_RENDERBUFFER 0x2003 - -// cl_gl_texture_info -#define CL_GL_TEXTURE_TARGET 0x2004 -#define CL_GL_MIPMAP_LEVEL 0x2005 - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLBuffer(cl_context /* context */, - cl_mem_flags /* flags */, - GLuint /* bufobj */, - int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLTexture2D(cl_context /* context */, - cl_mem_flags /* flags */, - GLenum /* target */, - GLint /* miplevel */, - GLuint /* texture */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLTexture3D(cl_context /* context */, - cl_mem_flags /* flags */, - GLenum /* target */, - GLint /* miplevel */, - GLuint /* texture */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLRenderbuffer(cl_context /* context */, - cl_mem_flags /* flags */, - GLuint /* renderbuffer */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLObjectInfo(cl_mem /* memobj */, - cl_gl_object_type * /* gl_object_type */, - GLuint * /* gl_object_name */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLTextureInfo(cl_mem /* memobj */, - cl_gl_texture_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireGLObjects(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseGLObjects(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -#ifdef __cplusplus -} -#endif - -#endif // __OPENCL_CL_GL_H diff --git a/extern/bullet2/MiniCL/cl_platform.h b/extern/bullet2/MiniCL/cl_platform.h deleted file mode 100644 index 3d372e3058d..00000000000 --- a/extern/bullet2/MiniCL/cl_platform.h +++ /dev/null @@ -1,254 +0,0 @@ -/********************************************************************************** - * Copyright (c) 2008-2009 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and/or associated documentation files (the - * "Materials"), to deal in the Materials without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Materials, and to - * permit persons to whom the Materials are furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Materials. - * - * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. - **********************************************************************************/ - -#ifndef __CL_PLATFORM_H -#define __CL_PLATFORM_H - -#define CL_PLATFORM_MINI_CL 0x12345 - -struct MiniCLKernelDesc -{ - MiniCLKernelDesc(void* pCode, char* pName); -}; - -#define MINICL_REGISTER(__kernel_func) static MiniCLKernelDesc __kernel_func##Desc((void*)__kernel_func, #__kernel_func); - - -#ifdef __APPLE__ - /* Contains #defines for AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER below */ - #include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define CL_API_ENTRY -#define CL_API_CALL -#ifdef __APPLE__ -#define CL_API_SUFFIX__VERSION_1_0 // AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER -#define CL_EXTENSION_WEAK_LINK __attribute__((weak_import)) -#else -#define CL_API_SUFFIX__VERSION_1_0 -#define CL_EXTENSION_WEAK_LINK -#endif - -#if defined (_WIN32) && ! defined (__MINGW32__) -typedef signed __int8 int8_t; -typedef unsigned __int8 uint8_t; -typedef signed __int16 int16_t; -typedef unsigned __int16 uint16_t; -typedef signed __int32 int32_t; -typedef unsigned __int32 uint32_t; -typedef signed __int64 int64_t; -typedef unsigned __int64 uint64_t; - -typedef int8_t cl_char; -typedef uint8_t cl_uchar; -typedef int16_t cl_short ; -typedef uint16_t cl_ushort ; -typedef int32_t cl_int ; -typedef uint32_t cl_uint ; -typedef int64_t cl_long ; -typedef uint64_t cl_ulong ; - -typedef uint16_t cl_half ; -typedef float cl_float ; -typedef double cl_double ; - - -typedef int8_t cl_char2[2] ; -typedef int8_t cl_char4[4] ; -typedef int8_t cl_char8[8] ; -typedef int8_t cl_char16[16] ; -typedef uint8_t cl_uchar2[2] ; -typedef uint8_t cl_uchar4[4] ; -typedef uint8_t cl_uchar8[8] ; -typedef uint8_t cl_uchar16[16] ; - -typedef int16_t cl_short2[2] ; -typedef int16_t cl_short4[4] ; -typedef int16_t cl_short8[8] ; -typedef int16_t cl_short16[16] ; -typedef uint16_t cl_ushort2[2] ; -typedef uint16_t cl_ushort4[4] ; -typedef uint16_t cl_ushort8[8] ; -typedef uint16_t cl_ushort16[16] ; - -typedef int32_t cl_int2[2] ; -typedef int32_t cl_int4[4] ; -typedef int32_t cl_int8[8] ; -typedef int32_t cl_int16[16] ; -typedef uint32_t cl_uint2[2] ; -typedef uint32_t cl_uint4[4] ; -typedef uint32_t cl_uint8[8] ; -typedef uint32_t cl_uint16[16] ; - -typedef int64_t cl_long2[2] ; -typedef int64_t cl_long4[4] ; -typedef int64_t cl_long8[8] ; -typedef int64_t cl_long16[16] ; -typedef uint64_t cl_ulong2[2] ; -typedef uint64_t cl_ulong4[4] ; -typedef uint64_t cl_ulong8[8] ; -typedef uint64_t cl_ulong16[16] ; - -typedef float cl_float2[2] ; -typedef float cl_float4[4] ; -typedef float cl_float8[8] ; -typedef float cl_float16[16] ; - -typedef double cl_double2[2] ; -typedef double cl_double4[4] ; -typedef double cl_double8[8] ; -typedef double cl_double16[16] ; - - -#else -#include - -/* scalar types */ -typedef int8_t cl_char; -typedef uint8_t cl_uchar; -typedef int16_t cl_short __attribute__((aligned(2))); -typedef uint16_t cl_ushort __attribute__((aligned(2))); -typedef int32_t cl_int __attribute__((aligned(4))); -typedef uint32_t cl_uint __attribute__((aligned(4))); -typedef int64_t cl_long __attribute__((aligned(8))); -typedef uint64_t cl_ulong __attribute__((aligned(8))); - -typedef uint16_t cl_half __attribute__((aligned(2))); -typedef float cl_float __attribute__((aligned(4))); -typedef double cl_double __attribute__((aligned(8))); - - -/* - * Vector types - * - * Note: OpenCL requires that all types be naturally aligned. - * This means that vector types must be naturally aligned. - * For example, a vector of four floats must be aligned to - * a 16 byte boundary (calculated as 4 * the natural 4-byte - * alignment of the float). The alignment qualifiers here - * will only function properly if your compiler supports them - * and if you don't actively work to defeat them. For example, - * in order for a cl_float4 to be 16 byte aligned in a struct, - * the start of the struct must itself be 16-byte aligned. - * - * Maintaining proper alignment is the user's responsibility. - */ -typedef int8_t cl_char2[2] __attribute__((aligned(2))); -typedef int8_t cl_char4[4] __attribute__((aligned(4))); -typedef int8_t cl_char8[8] __attribute__((aligned(8))); -typedef int8_t cl_char16[16] __attribute__((aligned(16))); -typedef uint8_t cl_uchar2[2] __attribute__((aligned(2))); -typedef uint8_t cl_uchar4[4] __attribute__((aligned(4))); -typedef uint8_t cl_uchar8[8] __attribute__((aligned(8))); -typedef uint8_t cl_uchar16[16] __attribute__((aligned(16))); - -typedef int16_t cl_short2[2] __attribute__((aligned(4))); -typedef int16_t cl_short4[4] __attribute__((aligned(8))); -typedef int16_t cl_short8[8] __attribute__((aligned(16))); -typedef int16_t cl_short16[16] __attribute__((aligned(32))); -typedef uint16_t cl_ushort2[2] __attribute__((aligned(4))); -typedef uint16_t cl_ushort4[4] __attribute__((aligned(8))); -typedef uint16_t cl_ushort8[8] __attribute__((aligned(16))); -typedef uint16_t cl_ushort16[16] __attribute__((aligned(32))); - -typedef int32_t cl_int2[2] __attribute__((aligned(8))); -typedef int32_t cl_int4[4] __attribute__((aligned(16))); -typedef int32_t cl_int8[8] __attribute__((aligned(32))); -typedef int32_t cl_int16[16] __attribute__((aligned(64))); -typedef uint32_t cl_uint2[2] __attribute__((aligned(8))); -typedef uint32_t cl_uint4[4] __attribute__((aligned(16))); -typedef uint32_t cl_uint8[8] __attribute__((aligned(32))); -typedef uint32_t cl_uint16[16] __attribute__((aligned(64))); - -typedef int64_t cl_long2[2] __attribute__((aligned(16))); -typedef int64_t cl_long4[4] __attribute__((aligned(32))); -typedef int64_t cl_long8[8] __attribute__((aligned(64))); -typedef int64_t cl_long16[16] __attribute__((aligned(128))); -typedef uint64_t cl_ulong2[2] __attribute__((aligned(16))); -typedef uint64_t cl_ulong4[4] __attribute__((aligned(32))); -typedef uint64_t cl_ulong8[8] __attribute__((aligned(64))); -typedef uint64_t cl_ulong16[16] __attribute__((aligned(128))); - -typedef float cl_float2[2] __attribute__((aligned(8))); -typedef float cl_float4[4] __attribute__((aligned(16))); -typedef float cl_float8[8] __attribute__((aligned(32))); -typedef float cl_float16[16] __attribute__((aligned(64))); - -typedef double cl_double2[2] __attribute__((aligned(16))); -typedef double cl_double4[4] __attribute__((aligned(32))); -typedef double cl_double8[8] __attribute__((aligned(64))); -typedef double cl_double16[16] __attribute__((aligned(128))); -#endif - -#include - -/* and a few goodies to go with them */ -#define CL_CHAR_BIT 8 -#define CL_SCHAR_MAX 127 -#define CL_SCHAR_MIN (-127-1) -#define CL_CHAR_MAX CL_SCHAR_MAX -#define CL_CHAR_MIN CL_SCHAR_MIN -#define CL_UCHAR_MAX 255 -#define CL_SHRT_MAX 32767 -#define CL_SHRT_MIN (-32767-1) -#define CL_USHRT_MAX 65535 -#define CL_INT_MAX 2147483647 -#define CL_INT_MIN (-2147483647-1) -#define CL_UINT_MAX 0xffffffffU -#define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL) -#define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL) -#define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL) - -#define CL_FLT_DIG 6 -#define CL_FLT_MANT_DIG 24 -#define CL_FLT_MAX_10_EXP +38 -#define CL_FLT_MAX_EXP +128 -#define CL_FLT_MIN_10_EXP -37 -#define CL_FLT_MIN_EXP -125 -#define CL_FLT_RADIX 2 -#define CL_FLT_MAX 0x1.fffffep127f -#define CL_FLT_MIN 0x1.0p-126f -#define CL_FLT_EPSILON 0x1.0p-23f - -#define CL_DBL_DIG 15 -#define CL_DBL_MANT_DIG 53 -#define CL_DBL_MAX_10_EXP +308 -#define CL_DBL_MAX_EXP +1024 -#define CL_DBL_MIN_10_EXP -307 -#define CL_DBL_MIN_EXP -1021 -#define CL_DBL_RADIX 2 -#define CL_DBL_MAX 0x1.fffffffffffffp1023 -#define CL_DBL_MIN 0x1.0p-1022 -#define CL_DBL_EPSILON 0x1.0p-52 - -/* There are no vector types for half */ - -#ifdef __cplusplus -} -#endif - -#endif // __CL_PLATFORM_H diff --git a/extern/bullet2/SConscript b/extern/bullet2/SConscript deleted file mode 100644 index 5cb9185d6a1..00000000000 --- a/extern/bullet2/SConscript +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/python -import sys -import os - -Import('env') - -defs = '' -cflags = [] - -if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): - defs += ' WIN32 NDEBUG _WINDOWS' - #cflags += ['/MT', '/W3', '/GX', '/O2', '/Op'] - cflags += ['/MT', '/W3', '/GX', '/Og', '/Ot', '/Ob1', '/Op', '/G6', '/O3', '/EHcs'] -elif env['OURPLATFORM']=='win32-mingw': - defs += ' NDEBUG' - cflags += ['-O2'] -elif sys.platform=='linux2' or sys.platform=='linux-i386' or sys.platform=='freebsd4' or sys.platform=='freebsd5': - defs += ' NDEBUG' - cflags += ['-O2'] -elif sys.platform=='darwin': - defs += ' NDEBUG' - cflags += ['-O2','-pipe', '-fPIC', '-funsigned-char', '-ffast-math'] - -linearmath_src = env.Glob("LinearMath/*.cpp") - -bulletdyn_src = env.Glob("BulletDynamics/Vehicle/*.cpp") + env.Glob("BulletDynamics/ConstraintSolver/*.cpp") + env.Glob("BulletDynamics/Dynamics/*.cpp") - -collision_broadphase_src = env.Glob("BulletCollision/BroadphaseCollision/*.cpp") -collision_dispatch_src = env.Glob("BulletCollision/CollisionDispatch/*.cpp") -collision_gimpact_src = env.Glob("BulletCollision/Gimpact/*.cpp") -collision_shapes_src = env.Glob("BulletCollision/CollisionShapes/*.cpp") -collision_narrowphase_src = env.Glob("BulletCollision/NarrowPhaseCollision/*.cpp") - -softbody_src = env.Glob("BulletSoftBody/*.cpp") - -incs = '. BulletCollision BulletDynamics LinearMath BulletSoftBody' - -env.BlenderLib ( libname = 'extern_bullet2linmath', sources=linearmath_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[20,137], compileflags=cflags ) -env.BlenderLib ( libname = 'extern_bullet2dynamics', sources=bulletdyn_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[19,136], compileflags=cflags ) -env.BlenderLib ( libname = 'extern_bullet2collision_broadphase', sources=collision_broadphase_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[25,145], compileflags=cflags ) -env.BlenderLib ( libname = 'extern_bullet2collision_dispatch', sources=collision_dispatch_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[20,138], compileflags=cflags ) -env.BlenderLib ( libname = 'extern_bullet2collision_gimpact', sources=collision_gimpact_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[20,138], compileflags=cflags ) -env.BlenderLib ( libname = 'extern_bullet2collision_shapes', sources=collision_shapes_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[20,138], compileflags=cflags ) -env.BlenderLib ( libname = 'extern_bullet2collision_narrowphase', sources=collision_narrowphase_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[20,138], compileflags=cflags ) -env.BlenderLib ( libname = 'extern_bullet2softbody', sources=softbody_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[30,135], compileflags=cflags ) diff --git a/extern/bullet2/btBulletCollisionCommon.h b/extern/bullet2/btBulletCollisionCommon.h deleted file mode 100644 index 9a7bffbb97d..00000000000 --- a/extern/bullet2/btBulletCollisionCommon.h +++ /dev/null @@ -1,68 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BULLET_COLLISION_COMMON_H -#define BULLET_COLLISION_COMMON_H - -///Common headerfile includes for Bullet Collision Detection - -///Bullet's btCollisionWorld and btCollisionObject definitions -#include "BulletCollision/CollisionDispatch/btCollisionWorld.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" - -///Collision Shapes -#include "BulletCollision/CollisionShapes/btBoxShape.h" -#include "BulletCollision/CollisionShapes/btSphereShape.h" -#include "BulletCollision/CollisionShapes/btCapsuleShape.h" -#include "BulletCollision/CollisionShapes/btCylinderShape.h" -#include "BulletCollision/CollisionShapes/btConeShape.h" -#include "BulletCollision/CollisionShapes/btStaticPlaneShape.h" -#include "BulletCollision/CollisionShapes/btConvexHullShape.h" -#include "BulletCollision/CollisionShapes/btTriangleMesh.h" -#include "BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h" -#include "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h" -#include "BulletCollision/CollisionShapes/btTriangleMeshShape.h" -#include "BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h" -#include "BulletCollision/CollisionShapes/btCompoundShape.h" -#include "BulletCollision/CollisionShapes/btTetrahedronShape.h" -#include "BulletCollision/CollisionShapes/btEmptyShape.h" -#include "BulletCollision/CollisionShapes/btMultiSphereShape.h" -#include "BulletCollision/CollisionShapes/btUniformScalingShape.h" - -///Narrowphase Collision Detector -#include "BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h" - -//btSphereBoxCollisionAlgorithm is broken, use gjk for now -//#include "BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h" - -///Dispatching and generation of collision pairs (broadphase) -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" -#include "BulletCollision/BroadphaseCollision/btSimpleBroadphase.h" -#include "BulletCollision/BroadphaseCollision/btAxisSweep3.h" -#include "BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h" -#include "BulletCollision/BroadphaseCollision/btDbvtBroadphase.h" - -///Math library & Utils -#include "LinearMath/btQuaternion.h" -#include "LinearMath/btTransform.h" -#include "LinearMath/btDefaultMotionState.h" -#include "LinearMath/btQuickprof.h" -#include "LinearMath/btIDebugDraw.h" -#include "LinearMath/btSerializer.h" - - -#endif //BULLET_COLLISION_COMMON_H - diff --git a/extern/bullet2/btBulletDynamicsCommon.h b/extern/bullet2/btBulletDynamicsCommon.h deleted file mode 100644 index db8b37989f5..00000000000 --- a/extern/bullet2/btBulletDynamicsCommon.h +++ /dev/null @@ -1,49 +0,0 @@ -/* -Bullet Continuous Collision Detection and Physics Library -Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/ - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef BULLET_DYNAMICS_COMMON_H -#define BULLET_DYNAMICS_COMMON_H - -///Common headerfile includes for Bullet Dynamics, including Collision Detection -#include "btBulletCollisionCommon.h" - -#include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h" -#include "BulletDynamics/Dynamics/btContinuousDynamicsWorld.h" - -#include "BulletDynamics/Dynamics/btSimpleDynamicsWorld.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" - -#include "BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h" -#include "BulletDynamics/ConstraintSolver/btHingeConstraint.h" -#include "BulletDynamics/ConstraintSolver/btConeTwistConstraint.h" -#include "BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h" -#include "BulletDynamics/ConstraintSolver/btSliderConstraint.h" -#include "BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h" -#include "BulletDynamics/ConstraintSolver/btUniversalConstraint.h" -#include "BulletDynamics/ConstraintSolver/btHinge2Constraint.h" - -#include "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h" - - -///Vehicle simulation, with wheel contact simulated by raycasts -#include "BulletDynamics/Vehicle/btRaycastVehicle.h" - - - - - - -#endif //BULLET_DYNAMICS_COMMON_H - From 57826238bf83ae70dc66ebd485175d4d81c1540b Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Thu, 17 Jun 2010 04:31:02 +0000 Subject: [PATCH 112/674] fixing warning from previous commit (rna_controller) --- source/blender/makesrna/intern/rna_controller.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_controller.c b/source/blender/makesrna/intern/rna_controller.c index 9f4efe06a8d..d9523344414 100644 --- a/source/blender/makesrna/intern/rna_controller.c +++ b/source/blender/makesrna/intern/rna_controller.c @@ -94,7 +94,7 @@ static int rna_Controller_state_number_get(struct PointerRNA *ptr) return 0; } -static int rna_Controller_state_number_set(struct PointerRNA *ptr, const int value) +static void rna_Controller_state_number_set(struct PointerRNA *ptr, const int value) { bController *cont= (bController *)ptr->data; if (value < 1 || value > OB_MAX_STATES) From a8f6a198a6a88a803f2fa871ec96bd74713c3756 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Thu, 17 Jun 2010 06:34:11 +0000 Subject: [PATCH 113/674] Logic ops: uncommenting + fix remove ops to use full RNA code :) The problem here was that it as passing Object *ob, while it should be Object **ob. Otherwise you can't change where the pointer is pointing to. --- .../blender/editors/space_logic/logic_ops.c | 75 +++++++------------ 1 file changed, 27 insertions(+), 48 deletions(-) diff --git a/source/blender/editors/space_logic/logic_ops.c b/source/blender/editors/space_logic/logic_ops.c index 72697bfa8eb..1f5eddaa77f 100644 --- a/source/blender/editors/space_logic/logic_ops.c +++ b/source/blender/editors/space_logic/logic_ops.c @@ -77,9 +77,6 @@ static int edit_actuator_poll(bContext *C) return 1; } -/* this is the nice py-api-compatible way to do it, like modifiers, - but not entirely working yet.. - static void edit_sensor_properties(wmOperatorType *ot) { RNA_def_string(ot->srna, "sensor", "", 32, "Sensor", "Name of the sensor to edit"); @@ -105,7 +102,7 @@ static int edit_sensor_invoke_properties(bContext *C, wmOperator *op) return 0; } -static bSensor *edit_sensor_property_get(bContext *C, wmOperator *op, Object *ob) +static bSensor *edit_sensor_property_get(bContext *C, wmOperator *op, Object **ob) { char sensor_name[32]; char ob_name[32]; @@ -114,15 +111,14 @@ static bSensor *edit_sensor_property_get(bContext *C, wmOperator *op, Object *ob RNA_string_get(op->ptr, "sensor", sensor_name); RNA_string_get(op->ptr, "object", ob_name); - ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2); - if (!ob) + *ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2); + if (!*ob) return NULL; - sens = BLI_findstring(&(ob->sensors), sensor_name, offsetof(bSensor, name)); + sens = BLI_findstring(&((*ob)->sensors), sensor_name, offsetof(bSensor, name)); return sens; } - */ -/* + static void edit_controller_properties(wmOperatorType *ot) { RNA_def_string(ot->srna, "controller", "", 32, "Controller", "Name of the controller to edit"); @@ -148,7 +144,7 @@ static int edit_controller_invoke_properties(bContext *C, wmOperator *op) return 0; } -static bController *edit_controller_property_get(bContext *C, wmOperator *op, Object *ob) +static bController *edit_controller_property_get(bContext *C, wmOperator *op, Object **ob) { char controller_name[32]; char ob_name[32]; @@ -157,11 +153,11 @@ static bController *edit_controller_property_get(bContext *C, wmOperator *op, Ob RNA_string_get(op->ptr, "controller", controller_name); RNA_string_get(op->ptr, "object", ob_name); - ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2); - if (!ob) + *ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2); + if (!*ob) return NULL; - cont = BLI_findstring(&(ob->controllers), controller_name, offsetof(bController, name)); + cont = BLI_findstring(&((*ob)->controllers), controller_name, offsetof(bController, name)); return cont; } @@ -190,7 +186,7 @@ static int edit_actuator_invoke_properties(bContext *C, wmOperator *op) return 0; } -static bController *edit_actuator_property_get(bContext *C, wmOperator *op, Object *ob) +static bController *edit_actuator_property_get(bContext *C, wmOperator *op, Object **ob) { char actuator_name[32]; char ob_name[32]; @@ -199,24 +195,20 @@ static bController *edit_actuator_property_get(bContext *C, wmOperator *op, Obje RNA_string_get(op->ptr, "actuator", actuator_name); RNA_string_get(op->ptr, "object", ob_name); - ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2); - if (!ob) + *ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2); + if (!*ob) return NULL; - cont = BLI_findstring(&(ob->actuators), actuator_name, offsetof(bActuator, name)); + act = BLI_findstring(&((*ob)->actuators), actuator_name, offsetof(bActuator, name)); return act; } -*/ /* ************* Add/Remove Sensor Operator ************* */ static int sensor_remove_exec(bContext *C, wmOperator *op) { - /* Object *ob; - bSensor *sens = edit_sensor_property_get(C, op, ob); */ - PointerRNA ptr = CTX_data_pointer_get_type(C, "sensor", &RNA_Sensor); - Object *ob= ptr.id.data; - bSensor *sens= ptr.data; + Object *ob=NULL; + bSensor *sens = edit_sensor_property_get(C, op, &ob); if (!sens) return OPERATOR_CANCELLED; @@ -229,8 +221,6 @@ static int sensor_remove_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } - -/* commented along with above stuff static int sensor_remove_invoke(bContext *C, wmOperator *op, wmEvent *event) { if (edit_sensor_invoke_properties(C, op)) @@ -238,7 +228,6 @@ static int sensor_remove_exec(bContext *C, wmOperator *op) else return OPERATOR_CANCELLED; } - */ void LOGIC_OT_sensor_remove(wmOperatorType *ot) { @@ -246,13 +235,13 @@ void LOGIC_OT_sensor_remove(wmOperatorType *ot) ot->description= "Remove a sensor from the active object"; ot->idname= "LOGIC_OT_sensor_remove"; - //ot->invoke= sensor_remove_invoke; + ot->invoke= sensor_remove_invoke; ot->exec= sensor_remove_exec; ot->poll= edit_sensor_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - //edit_sensor_properties(ot); + edit_sensor_properties(ot); } static int sensor_add_exec(bContext *C, wmOperator *op) @@ -315,11 +304,8 @@ void LOGIC_OT_sensor_add(wmOperatorType *ot) static int controller_remove_exec(bContext *C, wmOperator *op) { - /* Object *ob; - bController *cont = edit_controller_property_get(C, op, ob); */ - PointerRNA ptr = CTX_data_pointer_get_type(C, "controller", &RNA_Controller); - Object *ob= ptr.id.data; - bController *cont= ptr.data; + Object *ob = NULL; + bController *cont = edit_controller_property_get(C, op, &ob); if (!cont) return OPERATOR_CANCELLED; @@ -334,7 +320,7 @@ static int controller_remove_exec(bContext *C, wmOperator *op) } -/* commented along with above stuff +/* commented along with above stuff */ static int controller_remove_invoke(bContext *C, wmOperator *op, wmEvent *event) { if (edit_controller_invoke_properties(C, op)) @@ -342,7 +328,6 @@ static int controller_remove_exec(bContext *C, wmOperator *op) else return OPERATOR_CANCELLED; } - */ void LOGIC_OT_controller_remove(wmOperatorType *ot) { @@ -350,13 +335,13 @@ void LOGIC_OT_controller_remove(wmOperatorType *ot) ot->description= "Remove a controller from the active object"; ot->idname= "LOGIC_OT_controller_remove"; - //ot->invoke= controller_remove_invoke; + ot->invoke= controller_remove_invoke; ot->exec= controller_remove_exec; ot->poll= edit_controller_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - //edit_controller_properties(ot); + edit_controller_properties(ot); } static int controller_add_exec(bContext *C, wmOperator *op) @@ -432,11 +417,8 @@ void LOGIC_OT_controller_add(wmOperatorType *ot) static int actuator_remove_exec(bContext *C, wmOperator *op) { - /* Object *ob; - bActuator *cont = edit_actuator_property_get(C, op, ob); */ - PointerRNA ptr = CTX_data_pointer_get_type(C, "actuator", &RNA_Actuator); - Object *ob= ptr.id.data; - bActuator *act= ptr.data; + Object *ob=NULL; + bActuator *act = edit_actuator_property_get(C, op, &ob); if (!act) return OPERATOR_CANCELLED; @@ -450,16 +432,13 @@ static int actuator_remove_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } - -/* commented along with above stuff - static int actuator_remove_invoke(bContext *C, wmOperator *op, wmEvent *event) +static int actuator_remove_invoke(bContext *C, wmOperator *op, wmEvent *event) { if (edit_actuator_invoke_properties(C, op)) return actuator_remove_exec(C, op); else return OPERATOR_CANCELLED; } - */ void LOGIC_OT_actuator_remove(wmOperatorType *ot) { @@ -467,13 +446,13 @@ void LOGIC_OT_actuator_remove(wmOperatorType *ot) ot->description= "Remove a actuator from the active object"; ot->idname= "LOGIC_OT_actuator_remove"; - //ot->invoke= actuator_remove_invoke; + ot->invoke= actuator_remove_invoke; ot->exec= actuator_remove_exec; ot->poll= edit_actuator_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - //edit_controller_properties(ot); + edit_actuator_properties(ot); } static int actuator_add_exec(bContext *C, wmOperator *op) From 3173232bfa1e6878088cdbb0134fe709a1f757bd Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 17 Jun 2010 07:20:12 +0000 Subject: [PATCH 114/674] Fix [#22610] Alpha problem with textureswhen Brightness > 1 or Contrast < 1 * Enabled premultiplication for packed images * Added pack/unpack operator to image template * Moved brightness/contrast corrections to after de-premultiplication in image texture sampling --- source/blender/blenkernel/intern/image.c | 5 +- .../editors/space_image/image_buttons.c | 10 +++ .../blender/editors/space_image/image_ops.c | 74 +++++++++++++++---- .../render/intern/source/imagetexture.c | 12 +-- 4 files changed, 81 insertions(+), 20 deletions(-) diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index ef95139abda..f06e9302a60 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -1715,7 +1715,10 @@ static ImBuf *image_load_image_file(Image *ima, ImageUser *iuser, int cfra) /* is there a PackedFile with this image ? */ if (ima->packedfile) { - ibuf = IMB_ibImageFromMemory((unsigned char*)ima->packedfile->data, ima->packedfile->size, IB_rect|IB_multilayer); + flag = IB_rect|IB_multilayer; + if(ima->flag & IMA_DO_PREMUL) flag |= IB_premul; + + ibuf = IMB_ibImageFromMemory((unsigned char*)ima->packedfile->data, ima->packedfile->size, flag); } else { flag= IB_rect|IB_multilayer|IB_metadata; diff --git a/source/blender/editors/space_image/image_buttons.c b/source/blender/editors/space_image/image_buttons.c index b08ea810a33..357aa9dacdf 100644 --- a/source/blender/editors/space_image/image_buttons.c +++ b/source/blender/editors/space_image/image_buttons.c @@ -841,6 +841,16 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn if(ima->source != IMA_SRC_GENERATED) { row= uiLayoutRow(layout, 1); + split = uiLayoutSplit(row, 0.0, 0); + if (ima->packedfile) + uiItemO(split, "", ICON_PACKAGE, "image.unpack"); + else + uiItemO(split, "", ICON_UGLYPACKAGE, "image.pack"); + + split = uiLayoutSplit(row, 0.0, 0); + row= uiLayoutRow(split, 1); + uiLayoutSetEnabled(row, ima->packedfile==NULL); + uiItemR(row, &imaptr, "filepath", 0, "", 0); uiItemO(row, "", ICON_FILE_REFRESH, "image.reload"); } diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index a087351806a..c4265c6e011 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -25,6 +25,7 @@ * ***** END GPL LICENSE BLOCK ***** */ +#include #include #include @@ -1285,6 +1286,8 @@ static int pack_exec(bContext *C, wmOperator *op) else ima->packedfile= newPackedFile(op->reports, ima->name); + WM_event_add_notifier(C, NC_IMAGE|NA_EDITED, ima); + return OPERATOR_FINISHED; } @@ -1315,12 +1318,12 @@ void IMAGE_OT_pack(wmOperatorType *ot) { /* identifiers */ ot->name= "Pack"; + ot->description= "Pack an image as embedded data into the .blend file"; ot->idname= "IMAGE_OT_pack"; /* api callbacks */ ot->exec= pack_exec; ot->invoke= pack_invoke; - ot->poll= space_image_buffer_exists_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1331,12 +1334,14 @@ void IMAGE_OT_pack(wmOperatorType *ot) /********************* unpack operator *********************/ -void unpack_menu(bContext *C, char *opname, char *abs_name, char *folder, PackedFile *pf) +void unpack_menu(bContext *C, char *opname, Image *ima, char *folder, PackedFile *pf) { + PointerRNA props_ptr; uiPopupMenu *pup; uiLayout *layout; char line[FILE_MAXDIR + FILE_MAXFILE + 100]; char local_name[FILE_MAXDIR + FILE_MAX], fi[FILE_MAX]; + char *abs_name = ima->name; strcpy(local_name, abs_name); BLI_splitdirstring(local_name, fi); @@ -1351,17 +1356,33 @@ void unpack_menu(bContext *C, char *opname, char *abs_name, char *folder, Packed switch(checkPackedFile(local_name, pf)) { case PF_NOFILE: sprintf(line, "Create %s", local_name); - uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_LOCAL); + props_ptr= uiItemFullO(layout, opname, line, 0, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_WRITE_LOCAL); + RNA_string_set(&props_ptr, "image", ima->id.name+2); + break; case PF_EQUAL: sprintf(line, "Use %s (identical)", local_name); - uiItemEnumO(layout, opname, line, 0, "method", PF_USE_LOCAL); + //uiItemEnumO(layout, opname, line, 0, "method", PF_USE_LOCAL); + props_ptr= uiItemFullO(layout, opname, line, 0, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_USE_LOCAL); + RNA_string_set(&props_ptr, "image", ima->id.name+2); + break; case PF_DIFFERS: sprintf(line, "Use %s (differs)", local_name); - uiItemEnumO(layout, opname, line, 0, "method", PF_USE_LOCAL); + //uiItemEnumO(layout, opname, line, 0, "method", PF_USE_LOCAL); + props_ptr= uiItemFullO(layout, opname, line, 0, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_USE_LOCAL); + RNA_string_set(&props_ptr, "image", ima->id.name); + sprintf(line, "Overwrite %s", local_name); - uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_LOCAL); + //uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_LOCAL); + props_ptr= uiItemFullO(layout, opname, line, 0, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_WRITE_LOCAL); + RNA_string_set(&props_ptr, "image", ima->id.name+2); + + break; } } @@ -1369,17 +1390,30 @@ void unpack_menu(bContext *C, char *opname, char *abs_name, char *folder, Packed switch(checkPackedFile(abs_name, pf)) { case PF_NOFILE: sprintf(line, "Create %s", abs_name); - uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_ORIGINAL); + //uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_ORIGINAL); + props_ptr= uiItemFullO(layout, opname, line, 0, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_WRITE_ORIGINAL); + RNA_string_set(&props_ptr, "image", ima->id.name+2); break; case PF_EQUAL: sprintf(line, "Use %s (identical)", abs_name); - uiItemEnumO(layout, opname, line, 0, "method", PF_USE_ORIGINAL); + //uiItemEnumO(layout, opname, line, 0, "method", PF_USE_ORIGINAL); + props_ptr= uiItemFullO(layout, opname, line, 0, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_USE_ORIGINAL); + RNA_string_set(&props_ptr, "image", ima->id.name+2); break; case PF_DIFFERS: sprintf(line, "Use %s (differs)", local_name); - uiItemEnumO(layout, opname, line, 0, "method", PF_USE_ORIGINAL); + //uiItemEnumO(layout, opname, line, 0, "method", PF_USE_ORIGINAL); + props_ptr= uiItemFullO(layout, opname, line, 0, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_USE_ORIGINAL); + RNA_string_set(&props_ptr, "image", ima->id.name+2); + sprintf(line, "Overwrite %s", local_name); - uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_ORIGINAL); + //uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_ORIGINAL); + props_ptr= uiItemFullO(layout, opname, line, 0, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_WRITE_ORIGINAL); + RNA_string_set(&props_ptr, "image", ima->id.name+2); break; } @@ -1391,6 +1425,14 @@ static int unpack_exec(bContext *C, wmOperator *op) Image *ima= CTX_data_edit_image(C); int method= RNA_enum_get(op->ptr, "method"); + /* find the suppplied image by name */ + if (RNA_property_is_set(op->ptr, "image")) { + char imaname[22]; + RNA_string_get(op->ptr, "image", imaname); + ima = BLI_findstring(&CTX_data_main(C)->image, imaname, offsetof(ID, name) + 2); + if (!ima) ima = CTX_data_edit_image(C); + } + if(!ima || !ima->packedfile) return OPERATOR_CANCELLED; @@ -1401,8 +1443,10 @@ static int unpack_exec(bContext *C, wmOperator *op) if(G.fileflags & G_AUTOPACK) BKE_report(op->reports, RPT_WARNING, "AutoPack is enabled, so image will be packed again on file save."); - + unpackImage(op->reports, ima, method); + + WM_event_add_notifier(C, NC_IMAGE|NA_EDITED, ima); return OPERATOR_FINISHED; } @@ -1411,6 +1455,9 @@ static int unpack_invoke(bContext *C, wmOperator *op, wmEvent *event) { Image *ima= CTX_data_edit_image(C); + if(RNA_property_is_set(op->ptr, "image")) + return unpack_exec(C, op); + if(!ima || !ima->packedfile) return OPERATOR_CANCELLED; @@ -1422,7 +1469,7 @@ static int unpack_invoke(bContext *C, wmOperator *op, wmEvent *event) if(G.fileflags & G_AUTOPACK) BKE_report(op->reports, RPT_WARNING, "AutoPack is enabled, so image will be packed again on file save."); - unpack_menu(C, "IMAGE_OT_unpack", ima->name, "textures", ima->packedfile); + unpack_menu(C, "IMAGE_OT_unpack", ima, "textures", ima->packedfile); return OPERATOR_FINISHED; } @@ -1431,18 +1478,19 @@ void IMAGE_OT_unpack(wmOperatorType *ot) { /* identifiers */ ot->name= "Unpack"; + ot->description= "Save an image packed in the .blend file to disk"; ot->idname= "IMAGE_OT_unpack"; /* api callbacks */ ot->exec= unpack_exec; ot->invoke= unpack_invoke; - ot->poll= space_image_buffer_exists_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ RNA_def_enum(ot->srna, "method", unpack_method_items, PF_USE_LOCAL, "Method", "How to unpack."); + RNA_def_string(ot->srna, "image", "", 21, "Image Name", "Image datablock name to unpack."); } /******************** sample image operator ********************/ diff --git a/source/blender/render/intern/source/imagetexture.c b/source/blender/render/intern/source/imagetexture.c index 8d1caf2b8b9..f08529b3f2c 100644 --- a/source/blender/render/intern/source/imagetexture.c +++ b/source/blender/render/intern/source/imagetexture.c @@ -236,8 +236,6 @@ int imagewrap(Tex *tex, Image *ima, ImBuf *ibuf, float *texvec, TexResult *texre } } - BRICONTRGB; - if(texres->talpha) texres->tin= texres->ta; else if(tex->imaflag & TEX_CALCALPHA) { texres->ta= texres->tin= MAX3(texres->tr, texres->tg, texres->tb); @@ -254,6 +252,8 @@ int imagewrap(Tex *tex, Image *ima, ImBuf *ibuf, float *texvec, TexResult *texre texres->tb*= fx; } + BRICONTRGB; + return retval; } @@ -1318,8 +1318,6 @@ static int imagewraposa_aniso(Tex *tex, Image *ima, ImBuf *ibuf, float *texvec, } } - BRICONTRGB; - if (tex->imaflag & TEX_CALCALPHA) texres->ta = texres->tin = texres->ta * MAX3(texres->tr, texres->tg, texres->tb); else @@ -1348,6 +1346,8 @@ static int imagewraposa_aniso(Tex *tex, Image *ima, ImBuf *ibuf, float *texvec, texres->tb *= fx; } + BRICONTRGB; + return retval; } @@ -1705,8 +1705,6 @@ int imagewraposa(Tex *tex, Image *ima, ImBuf *ibuf, float *texvec, float *DXT, f boxsample(ibuf, fx-minx, fy-miny, fx+minx, fy+miny, texres, imaprepeat, imapextend, 0); } - BRICONTRGB; - if(tex->imaflag & TEX_CALCALPHA) { texres->ta= texres->tin= texres->ta*MAX3(texres->tr, texres->tg, texres->tb); } @@ -1733,6 +1731,8 @@ int imagewraposa(Tex *tex, Image *ima, ImBuf *ibuf, float *texvec, float *DXT, f texres->tb*= fx; } + BRICONTRGB; + return retval; } From 3d562ddaa9d7f07b505a0a25516f06dde6fadcec Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Thu, 17 Jun 2010 07:33:57 +0000 Subject: [PATCH 115/674] logic ops: accepting no object as argument into "remove s/c/a" operators (uses the active object in those cases) --- .../blender/editors/space_logic/logic_ops.c | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/space_logic/logic_ops.c b/source/blender/editors/space_logic/logic_ops.c index 1f5eddaa77f..5a7a6ba839d 100644 --- a/source/blender/editors/space_logic/logic_ops.c +++ b/source/blender/editors/space_logic/logic_ops.c @@ -110,8 +110,14 @@ static bSensor *edit_sensor_property_get(bContext *C, wmOperator *op, Object **o RNA_string_get(op->ptr, "sensor", sensor_name); RNA_string_get(op->ptr, "object", ob_name); - - *ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2); + + /* if ob_name is valid try to find the object with this name + otherwise gets the active object */ + if (ob_name[0] != '\0' ) + *ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2); + else + *ob= ED_object_active_context(C); + if (!*ob) return NULL; @@ -152,8 +158,14 @@ static bController *edit_controller_property_get(bContext *C, wmOperator *op, Ob RNA_string_get(op->ptr, "controller", controller_name); RNA_string_get(op->ptr, "object", ob_name); - - *ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2); + + /* if ob_name is valid try to find the object with this name + otherwise gets the active object */ + if (ob_name[0] != '\0' ) + *ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2); + else + *ob= ED_object_active_context(C); + if (!*ob) return NULL; @@ -194,8 +206,14 @@ static bController *edit_actuator_property_get(bContext *C, wmOperator *op, Obje RNA_string_get(op->ptr, "actuator", actuator_name); RNA_string_get(op->ptr, "object", ob_name); - - *ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2); + + /* if ob_name is valid try to find the object with this name + otherwise gets the active object */ + if (ob_name[0] != '\0' ) + *ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2); + else + *ob= ED_object_active_context(C); + if (!*ob) return NULL; From 038e674cddc4d526fe6ab09b1ce94cb5c18c2952 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Thu, 17 Jun 2010 08:42:15 +0000 Subject: [PATCH 116/674] Logics ops: add s/c/a can now be called with an object parameter (e.g. bpy.ops.logic.controller_add_exec(name="name", object="non_active_object") If no parameter is passed it uses the active object. To do: make logic_window set "active object" in context before calling add s/c/a operator So far I tried this before uiItemMenuEnumO(row, "LOGIC_OT_controller_add", "type", "Add Controller", 0); : +RNA_pointer_create((ID *)ob, &RNA_Object, ob, &ob_ptr); +uiLayoutSetContextPointer(row, "object", &ob_ptr); Not working though :) (not committed either). to be investigated. --- .../blender/editors/space_logic/logic_ops.c | 93 ++++++++++--------- 1 file changed, 47 insertions(+), 46 deletions(-) diff --git a/source/blender/editors/space_logic/logic_ops.c b/source/blender/editors/space_logic/logic_ops.c index 5a7a6ba839d..44cc4066b03 100644 --- a/source/blender/editors/space_logic/logic_ops.c +++ b/source/blender/editors/space_logic/logic_ops.c @@ -102,24 +102,32 @@ static int edit_sensor_invoke_properties(bContext *C, wmOperator *op) return 0; } -static bSensor *edit_sensor_property_get(bContext *C, wmOperator *op, Object **ob) +static Object *edit_object_property_get(bContext *C, wmOperator *op) { - char sensor_name[32]; char ob_name[32]; - bSensor *sens; - - RNA_string_get(op->ptr, "sensor", sensor_name); + Object *ob; + RNA_string_get(op->ptr, "object", ob_name); /* if ob_name is valid try to find the object with this name otherwise gets the active object */ - if (ob_name[0] != '\0' ) - *ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2); + if (BLI_strnlen(ob_name, 32) > 0) + ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2); else - *ob= ED_object_active_context(C); + ob= ED_object_active_context(C); - if (!*ob) - return NULL; + return ob; +} + +static bSensor *edit_sensor_property_get(bContext *C, wmOperator *op, Object **ob) +{ + char sensor_name[32]; + bSensor *sens; + + RNA_string_get(op->ptr, "sensor", sensor_name); + + *ob= edit_object_property_get(C, op); + if (!*ob) return NULL; sens = BLI_findstring(&((*ob)->sensors), sensor_name, offsetof(bSensor, name)); return sens; @@ -153,21 +161,12 @@ static int edit_controller_invoke_properties(bContext *C, wmOperator *op) static bController *edit_controller_property_get(bContext *C, wmOperator *op, Object **ob) { char controller_name[32]; - char ob_name[32]; bController *cont; RNA_string_get(op->ptr, "controller", controller_name); - RNA_string_get(op->ptr, "object", ob_name); - /* if ob_name is valid try to find the object with this name - otherwise gets the active object */ - if (ob_name[0] != '\0' ) - *ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2); - else - *ob= ED_object_active_context(C); - - if (!*ob) - return NULL; + *ob= edit_object_property_get(C, op); + if (!*ob) return NULL; cont = BLI_findstring(&((*ob)->controllers), controller_name, offsetof(bController, name)); return cont; @@ -198,24 +197,15 @@ static int edit_actuator_invoke_properties(bContext *C, wmOperator *op) return 0; } -static bController *edit_actuator_property_get(bContext *C, wmOperator *op, Object **ob) +static bActuator *edit_actuator_property_get(bContext *C, wmOperator *op, Object **ob) { char actuator_name[32]; - char ob_name[32]; bActuator *act; RNA_string_get(op->ptr, "actuator", actuator_name); - RNA_string_get(op->ptr, "object", ob_name); - /* if ob_name is valid try to find the object with this name - otherwise gets the active object */ - if (ob_name[0] != '\0' ) - *ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2); - else - *ob= ED_object_active_context(C); - - if (!*ob) - return NULL; + *ob= edit_object_property_get(C, op); + if (!*ob) return NULL; act = BLI_findstring(&((*ob)->actuators), actuator_name, offsetof(bActuator, name)); return act; @@ -264,13 +254,17 @@ void LOGIC_OT_sensor_remove(wmOperatorType *ot) static int sensor_add_exec(bContext *C, wmOperator *op) { - Object *ob = ED_object_active_context(C); + Object *ob; bSensor *sens; PointerRNA sens_ptr; PropertyRNA *prop; const char *sens_name; - int type= RNA_enum_get(op->ptr, "type"); char name[32]; + int type= RNA_enum_get(op->ptr, "type"); + + ob= edit_object_property_get(C, op); + if (!ob) + return OPERATOR_CANCELLED; sens= new_sensor(type); BLI_addtail(&(ob->sensors), sens); @@ -315,7 +309,8 @@ void LOGIC_OT_sensor_add(wmOperatorType *ot) /* properties */ prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, SENS_ALWAYS, "Type", "Type of sensor to add"); RNA_def_enum_funcs(prop, rna_Sensor_type_itemf); - prop= RNA_def_string(ot->srna, "name", "", 32, "Name", "Name of the Sensor to add"); + RNA_def_string(ot->srna, "name", "", 32, "Name", "Name of the Sensor to add"); + RNA_def_string(ot->srna, "object", "", 32, "Object", "Name of the Object to add the Sensor to"); } /* ************* Add/Remove Controller Operator ************* */ @@ -337,8 +332,6 @@ static int controller_remove_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } - -/* commented along with above stuff */ static int controller_remove_invoke(bContext *C, wmOperator *op, wmEvent *event) { if (edit_controller_invoke_properties(C, op)) @@ -364,14 +357,18 @@ void LOGIC_OT_controller_remove(wmOperatorType *ot) static int controller_add_exec(bContext *C, wmOperator *op) { - Object *ob = ED_object_active_context(C); + Object *ob; bController *cont; PointerRNA cont_ptr; PropertyRNA *prop; const char *cont_name; - int type= RNA_enum_get(op->ptr, "type"); int bit; char name[32]; + int type= RNA_enum_get(op->ptr, "type"); + + ob= edit_object_property_get(C, op); + if(!ob) + return OPERATOR_CANCELLED; cont= new_controller(type); BLI_addtail(&(ob->controllers), cont); @@ -411,8 +408,6 @@ static int controller_add_exec(bContext *C, wmOperator *op) void LOGIC_OT_controller_add(wmOperatorType *ot) { - PropertyRNA *prop; - /* identifiers */ ot->name= "Add Controller"; ot->description = "Add a controller to the active object"; @@ -427,8 +422,9 @@ void LOGIC_OT_controller_add(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "type", controller_type_items, CONT_LOGIC_AND, "Type", "Type of controller to add"); - prop= RNA_def_string(ot->srna, "name", "", 32, "Name", "Name of the Controller to add"); + RNA_def_enum(ot->srna, "type", controller_type_items, CONT_LOGIC_AND, "Type", "Type of controller to add"); + RNA_def_string(ot->srna, "name", "", 32, "Name", "Name of the Controller to add"); + RNA_def_string(ot->srna, "object", "", 32, "Object", "Name of the Object to add the Controller to"); } /* ************* Add/Remove Actuator Operator ************* */ @@ -475,13 +471,17 @@ void LOGIC_OT_actuator_remove(wmOperatorType *ot) static int actuator_add_exec(bContext *C, wmOperator *op) { - Object *ob = ED_object_active_context(C); + Object *ob; bActuator *act; PointerRNA act_ptr; PropertyRNA *prop; const char *act_name; char name[32]; int type= RNA_enum_get(op->ptr, "type"); + + ob= edit_object_property_get(C, op); + if(!ob) + return OPERATOR_CANCELLED; act= new_actuator(type); BLI_addtail(&(ob->actuators), act); @@ -526,7 +526,8 @@ void LOGIC_OT_actuator_add(wmOperatorType *ot) /* properties */ prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, CONT_LOGIC_AND, "Type", "Type of actuator to add"); RNA_def_enum_funcs(prop, rna_Actuator_type_itemf); - prop= RNA_def_string(ot->srna, "name", "", 32, "Name", "Name of the Actuator to add"); + RNA_def_string(ot->srna, "name", "", 32, "Name", "Name of the Actuator to add"); + RNA_def_string(ot->srna, "object", "", 32, "Object", "Name of the Object to add the Actuator to"); } void ED_operatortypes_logic(void) From a7386bf9862a8d2960931c9d6df21549473adeec Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 17 Jun 2010 14:22:13 +0000 Subject: [PATCH 117/674] fix for crash with opengl sequencer strips that dont have a camera --- source/blender/blenkernel/intern/sequencer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 3ff7370a443..d1ab63ca65e 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -2194,7 +2194,7 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int seq->scene->markers.first= seq->scene->markers.last= NULL; #endif - if(sequencer_view3d_cb && doseq_gl && (seq->scene == scene || have_seq==0)) { + if(sequencer_view3d_cb && doseq_gl && (seq->scene == scene || have_seq==0) && seq->scene->camera) { /* opengl offscreen render */ scene_update_for_newframe(seq->scene, seq->scene->lay); se->ibuf= sequencer_view3d_cb(seq->scene, seqrectx, seqrecty, scene->r.seq_prev_type); From 1cb7dc55b40ab5270502ac76ed81887bc227ae02 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 17 Jun 2010 14:22:54 +0000 Subject: [PATCH 118/674] sequencer numpad keys for zoom levels --- source/blender/blenlib/BLI_rect.h | 2 + source/blender/blenlib/intern/path_util.c | 2 +- source/blender/blenlib/intern/rct.c | 21 +++++++++++ .../editors/space_sequencer/sequencer_edit.c | 37 +++++++++++++++++++ .../space_sequencer/sequencer_intern.h | 1 + .../editors/space_sequencer/sequencer_ops.c | 13 +++++++ 6 files changed, 75 insertions(+), 1 deletion(-) diff --git a/source/blender/blenlib/BLI_rect.h b/source/blender/blenlib/BLI_rect.h index 52f645705cc..0b886c17309 100644 --- a/source/blender/blenlib/BLI_rect.h +++ b/source/blender/blenlib/BLI_rect.h @@ -52,6 +52,8 @@ void BLI_init_rctf(struct rctf *rect, float xmin, float xmax, float ymin, float void BLI_init_rcti(struct rcti *rect, int xmin, int xmax, int ymin, int ymax); void BLI_translate_rctf(struct rctf *rect, float x, float y); void BLI_translate_rcti(struct rcti *rect, int x, int y); +void BLI_resize_rcti(struct rcti *rect, int x, int y); +void BLI_resize_rctf(struct rctf *rect, float x, float y); int BLI_in_rcti(struct rcti *rect, int x, int y); int BLI_in_rctf(struct rctf *rect, float x, float y); int BLI_isect_rctf(struct rctf *src1, struct rctf *src2, struct rctf *dest); diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index f9acf7ba148..045ac5a013f 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -703,7 +703,7 @@ int BLI_path_cwd(char *path) } -/* copy di to fi, filename only */ +/* 'di's filename component is moved into 'fi', di is made a dir path */ void BLI_splitdirstring(char *di, char *fi) { char *lslash= BLI_last_slash(di); diff --git a/source/blender/blenlib/intern/rct.c b/source/blender/blenlib/intern/rct.c index 7fce9ac7e8d..5466acdba9f 100644 --- a/source/blender/blenlib/intern/rct.c +++ b/source/blender/blenlib/intern/rct.c @@ -142,6 +142,27 @@ void BLI_translate_rctf(rctf *rect, float x, float y) rect->ymax += y; } +/* change width & height around the central location */ +void BLI_resize_rcti(rcti *rect, int x, int y) +{ + rect->xmin= rect->xmax= (rect->xmax + rect->xmin) / 2; + rect->ymin= rect->ymax= (rect->ymax + rect->ymin) / 2; + rect->xmin -= x / 2; + rect->ymin -= y / 2; + rect->xmax= rect->xmin + x; + rect->ymax= rect->ymin + y; +} + +void BLI_resize_rctf(rctf *rect, float x, float y) +{ + rect->xmin= rect->xmax= (rect->xmax + rect->xmin) * 0.5f; + rect->ymin= rect->ymax= (rect->ymax + rect->ymin) * 0.5f; + rect->xmin -= x * 0.5f; + rect->ymin -= y * 0.5f; + rect->xmax= rect->xmin + x; + rect->ymax= rect->ymin + y; +} + int BLI_isect_rctf(rctf *src1, rctf *src2, rctf *dest) { float xmin, xmax; diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 9deb0ba4a0a..dedde7e10c3 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -2218,6 +2218,43 @@ void SEQUENCER_OT_view_all_preview(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER; } + +static int sequencer_view_zoom_ratio_exec(bContext *C, wmOperator *op) +{ + RenderData *r= &CTX_data_scene(C)->r; + View2D *v2d= UI_view2d_fromcontext(C); + + float ratio= RNA_float_get(op->ptr, "ratio"); + + float winx= (int)(r->size * r->xsch)/100; + float winy= (int)(r->size * r->ysch)/100; + + float facx= (v2d->mask.xmax - v2d->mask.xmin) / winx; + float facy= (v2d->mask.ymax - v2d->mask.ymin) / winy; + + BLI_resize_rctf(&v2d->cur, winx*facx*ratio, winy*facy*ratio); + + ED_region_tag_redraw(CTX_wm_region(C)); + + return OPERATOR_FINISHED; +} + +void SEQUENCER_OT_view_zoom_ratio(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Sequencer View Zoom Ratio"; + ot->idname= "SEQUENCER_OT_view_zoom_ratio"; + + /* api callbacks */ + ot->exec= sequencer_view_zoom_ratio_exec; + ot->poll= ED_operator_sequencer_active; + + /* properties */ + RNA_def_float(ot->srna, "ratio", 1.0f, 0.0f, FLT_MAX, + "Ratio", "Zoom ratio, 1.0 is 1:1, higher is zoomed in, lower is zoomed out.", -FLT_MAX, FLT_MAX); +} + + #if 0 static EnumPropertyItem view_type_items[] = { {SEQ_VIEW_SEQUENCE, "SEQUENCER", ICON_SEQ_SEQUENCER, "Sequencer", ""}, diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h index dc2d89293ee..fd4ee70e258 100644 --- a/source/blender/editors/space_sequencer/sequencer_intern.h +++ b/source/blender/editors/space_sequencer/sequencer_intern.h @@ -100,6 +100,7 @@ void SEQUENCER_OT_rendersize(struct wmOperatorType *ot); void SEQUENCER_OT_view_toggle(struct wmOperatorType *ot); void SEQUENCER_OT_view_all(struct wmOperatorType *ot); void SEQUENCER_OT_view_selected(struct wmOperatorType *ot); +void SEQUENCER_OT_view_zoom_ratio(struct wmOperatorType *ot); void SEQUENCER_OT_copy(struct wmOperatorType *ot); void SEQUENCER_OT_paste(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c index f1ca2490095..559a090a2ee 100644 --- a/source/blender/editors/space_sequencer/sequencer_ops.c +++ b/source/blender/editors/space_sequencer/sequencer_ops.c @@ -79,6 +79,7 @@ void sequencer_operatortypes(void) WM_operatortype_append(SEQUENCER_OT_view_selected); WM_operatortype_append(SEQUENCER_OT_view_all_preview); WM_operatortype_append(SEQUENCER_OT_view_toggle); + WM_operatortype_append(SEQUENCER_OT_view_zoom_ratio); /* sequencer_select.c */ WM_operatortype_append(SEQUENCER_OT_select_all_toggle); @@ -224,5 +225,17 @@ void sequencer_keymap(wmKeyConfig *keyconf) keymap= WM_keymap_find(keyconf, "SequencerPreview", SPACE_SEQ, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_view_all_preview", HOMEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_properties", NKEY, KM_PRESS, 0, 0); + + + keymap= WM_keymap_find(keyconf, "SequencerPreview", SPACE_SEQ, 0); + + /* would prefer to use numpad keys for job */ + RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD8, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 8.0f); + RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD4, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 4.0f); + RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD2, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 2.0f); + RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD1, KM_PRESS, 0, 0)->ptr, "ratio", 1.0f); + RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD2, KM_PRESS, 0, 0)->ptr, "ratio", 0.5f); + RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD4, KM_PRESS, 0, 0)->ptr, "ratio", 0.25f); + RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD8, KM_PRESS, 0, 0)->ptr, "ratio", 0.125f); } From e41e1383012a3c8861979e01d8d63361593051f6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 17 Jun 2010 15:28:40 +0000 Subject: [PATCH 119/674] rather then naming new actions "Action", use the id name with an action prefix. avoids having 100's of Action.XXX in a file. --- source/blender/editors/animation/keyframing.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index 98fcf04a5c1..5089d58883a 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -130,8 +130,11 @@ bAction *verify_adt_action (ID *id, short add) /* init action if none available yet */ // TODO: need some wizardry to handle NLA stuff correct - if ((adt->action == NULL) && (add)) - adt->action= add_empty_action("Action"); + if ((adt->action == NULL) && (add)) { + char actname[sizeof(id->name)-2]; + BLI_snprintf(actname, sizeof(actname), "%sAction", id->name+2); + adt->action= add_empty_action(actname); + } /* return the action */ return adt->action; From 8c031f22b923df272f20578bcc6a39878303e9cb Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 17 Jun 2010 19:33:27 +0000 Subject: [PATCH 120/674] fix for fcurve doubles not being removed when moving more then one selected points in the graph editor. The bug could be redone with 3 points, 2 selected dragged onto the unselected. looping backwards fixes this. --- source/blender/editors/transform/transform_conversions.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 499631ff755..d8e56331e19 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -2896,7 +2896,7 @@ static void posttrans_fcurve_clean (FCurve *fcu) * (if any keyframes were found, or the whole curve wasn't affected) */ if ((len) && (len != fcu->totvert)) { - for (i = 0; i < fcu->totvert; i++) { + for (i= fcu->totvert-1; i >= 0; i--) { BezTriple *bezt= &fcu->bezt[i]; if (BEZSELECTED(bezt) == 0) { @@ -2906,7 +2906,7 @@ static void posttrans_fcurve_clean (FCurve *fcu) delete_fcurve_key(fcu, i, 0); break; } - else if (bezt->vec[1][0] > selcache[index]) + else if (bezt->vec[1][0] < selcache[index]) break; } } From 557f0525eaeb2e093a48915426d90fa17758b1b6 Mon Sep 17 00:00:00 2001 From: Daniel Salazar Date: Thu, 17 Jun 2010 20:56:36 +0000 Subject: [PATCH 121/674] Added sintax coloring for None --- source/blender/editors/space_text/text_draw.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/blender/editors/space_text/text_draw.c b/source/blender/editors/space_text/text_draw.c index 3a891a66107..873deb30511 100644 --- a/source/blender/editors/space_text/text_draw.c +++ b/source/blender/editors/space_text/text_draw.c @@ -233,6 +233,9 @@ static int find_bool(char *string) /* Check for "True" */ else if(string[0]=='T' && string[1]=='r' && string[2]=='u' && string[3]=='e') i = 4; + /* Check for "None" */ + else if(string[0]=='N' && string[1]=='o' && string[2]=='n' && string[3]=='e') + i = 4; /* If next source char is an identifier (eg. 'i' in "definate") no match */ if(i==0 || text_check_identifier(string[i])) return -1; From bfd0810bebb5e26a89ced4c75a7e877600892537 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 18 Jun 2010 04:39:32 +0000 Subject: [PATCH 122/674] Notifier cleanup - replaced ND_*_EDIT and ND_*_SELECT data notifiers with the generic action equivalents (NA_EDITED and new NA_SELECTED) --- .../editors/animation/anim_channels_defines.c | 8 +- .../editors/animation/anim_channels_edit.c | 32 +++--- .../blender/editors/animation/fmodifier_ui.c | 2 +- source/blender/editors/animation/keyframing.c | 8 +- source/blender/editors/animation/keyingsets.c | 2 +- source/blender/editors/armature/poselib.c | 2 +- .../editors/interface/interface_anim.c | 2 +- .../blender/editors/physics/particle_edit.c | 42 ++++---- .../editors/space_action/action_edit.c | 18 ++-- .../editors/space_action/action_select.c | 14 +-- .../editors/space_action/space_action.c | 2 +- .../editors/space_buttons/space_buttons.c | 10 +- .../blender/editors/space_graph/graph_edit.c | 26 ++--- .../editors/space_graph/graph_select.c | 14 +-- .../blender/editors/space_graph/space_graph.c | 13 ++- .../blender/editors/space_nla/nla_channels.c | 18 ++-- source/blender/editors/space_nla/nla_edit.c | 34 +++---- source/blender/editors/space_nla/nla_select.c | 6 +- .../blender/editors/space_node/node_select.c | 16 +-- .../blender/editors/space_outliner/outliner.c | 2 +- .../space_sequencer/sequencer_select.c | 20 ++-- .../editors/space_sequencer/space_sequencer.c | 3 - .../editors/space_view3d/space_view3d.c | 22 +++-- source/blender/editors/transform/transform.c | 8 +- source/blender/makesrna/intern/rna_action.c | 50 +++++----- source/blender/makesrna/intern/rna_boid.c | 4 +- source/blender/makesrna/intern/rna_fcurve.c | 98 +++++++++---------- source/blender/makesrna/intern/rna_particle.c | 8 +- .../makesrna/intern/rna_sculpt_paint.c | 2 +- .../blender/makesrna/intern/rna_sequencer.c | 6 +- source/blender/makesrna/intern/rna_space.c | 2 +- source/blender/windowmanager/WM_types.h | 25 ++--- 32 files changed, 260 insertions(+), 259 deletions(-) diff --git a/source/blender/editors/animation/anim_channels_defines.c b/source/blender/editors/animation/anim_channels_defines.c index 3f00c1abe68..fee66384e65 100644 --- a/source/blender/editors/animation/anim_channels_defines.c +++ b/source/blender/editors/animation/anim_channels_defines.c @@ -2858,7 +2858,7 @@ void ANIM_channel_draw (bAnimContext *ac, bAnimListElem *ale, float yminc, float /* callback for (normal) widget settings - send notifiers */ static void achannel_setting_widget_cb(bContext *C, void *poin, void *poin2) { - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); } /* callback for widget settings that need flushing */ @@ -2872,7 +2872,7 @@ static void achannel_setting_flush_widget_cb(bContext *C, void *ale_npoin, void short on = 0; /* send notifiers before doing anything else... */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); /* verify animation context */ if (ANIM_animdata_get_context(C, &ac) == 0) @@ -2936,7 +2936,7 @@ static void achannel_setting_slider_cb(bContext *C, void *id_poin, void *fcu_poi done= insert_keyframe_direct(ptr, prop, fcu, cfra, flag); if (done) - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); } } @@ -2978,7 +2978,7 @@ static void achannel_setting_slider_shapekey_cb(bContext *C, void *key_poin, voi done= insert_keyframe_direct(ptr, prop, fcu, cfra, flag); if (done) - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); } /* free the path */ diff --git a/source/blender/editors/animation/anim_channels_edit.c b/source/blender/editors/animation/anim_channels_edit.c index bdaf0bf700a..21bdb591df9 100644 --- a/source/blender/editors/animation/anim_channels_edit.c +++ b/source/blender/editors/animation/anim_channels_edit.c @@ -842,7 +842,7 @@ static int animchannels_rearrange_exec(bContext *C, wmOperator *op) rearrange_action_channels(&ac, mode); /* send notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -998,7 +998,7 @@ static int animchannels_delete_exec(bContext *C, wmOperator *op) } /* send notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1075,7 +1075,7 @@ static int animchannels_visibility_set_exec(bContext *C, wmOperator *op) /* send notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1148,7 +1148,7 @@ static int animchannels_visibility_toggle_exec(bContext *C, wmOperator *op) BLI_freelistN(&all_data); /* send notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1279,7 +1279,7 @@ static int animchannels_setflag_exec(bContext *C, wmOperator *op) setflag_anim_channels(&ac, setting, mode, 1, flush); /* send notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1413,7 +1413,7 @@ static int animchannels_expand_exec (bContext *C, wmOperator *op) setflag_anim_channels(&ac, ACHANNEL_SETTING_EXPAND, ACHANNEL_SETFLAG_ADD, onlysel, 0); /* send notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1455,7 +1455,7 @@ static int animchannels_collapse_exec (bContext *C, wmOperator *op) setflag_anim_channels(&ac, ACHANNEL_SETTING_EXPAND, ACHANNEL_SETFLAG_CLEAR, onlysel, 0); /* send notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1495,7 +1495,7 @@ static int animchannels_deselectall_exec(bContext *C, wmOperator *op) ANIM_deselect_anim_channels(&ac, ac.data, ac.datatype, 1, ACHANNEL_SETFLAG_ADD); /* send notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -1597,7 +1597,7 @@ static int animchannels_borderselect_exec(bContext *C, wmOperator *op) borderselect_anim_channels(&ac, &rect, selectmode); /* send notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -1676,7 +1676,7 @@ static int mouse_anim_channels (bAnimContext *ac, float x, int channel_index, sh if (adt) adt->flag |= ADT_UI_SELECTED; } - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } break; case ANIMTYPE_OBJECT: @@ -1715,7 +1715,7 @@ static int mouse_anim_channels (bAnimContext *ac, float x, int channel_index, sh if ((adt) && (adt->flag & ADT_UI_SELECTED)) adt->flag |= ADT_UI_ACTIVE; - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } break; @@ -1751,7 +1751,7 @@ static int mouse_anim_channels (bAnimContext *ac, float x, int channel_index, sh ale->adt->flag |= ADT_UI_ACTIVE; } - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } break; @@ -1786,7 +1786,7 @@ static int mouse_anim_channels (bAnimContext *ac, float x, int channel_index, sh if (agrp->flag & AGRP_SELECTED) ANIM_set_active_channel(ac, ac->data, ac->datatype, filter, agrp, ANIMTYPE_GROUP); - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } break; case ANIMTYPE_FCURVE: @@ -1808,7 +1808,7 @@ static int mouse_anim_channels (bAnimContext *ac, float x, int channel_index, sh if (fcu->flag & FCURVE_SELECTED) ANIM_set_active_channel(ac, ac->data, ac->datatype, filter, fcu, ANIMTYPE_FCURVE); - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } break; case ANIMTYPE_SHAPEKEY: @@ -1826,7 +1826,7 @@ static int mouse_anim_channels (bAnimContext *ac, float x, int channel_index, sh kb->flag |= KEYBLOCK_SEL; } - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } break; case ANIMTYPE_GPDATABLOCK: @@ -1836,7 +1836,7 @@ static int mouse_anim_channels (bAnimContext *ac, float x, int channel_index, sh /* toggle expand */ gpd->flag ^= GP_DATA_EXPAND; - notifierFlags |= ND_ANIMCHAN_EDIT; + notifierFlags |= (ND_ANIMCHAN|NA_EDITED); } break; case ANIMTYPE_GPLAYER: diff --git a/source/blender/editors/animation/fmodifier_ui.c b/source/blender/editors/animation/fmodifier_ui.c index 3bd8b50c889..cd6714ec51f 100644 --- a/source/blender/editors/animation/fmodifier_ui.c +++ b/source/blender/editors/animation/fmodifier_ui.c @@ -95,7 +95,7 @@ static void delete_fmodifier_cb (bContext *C, void *fmods_v, void *fcm_v) /* send notifiers */ // XXX for now, this is the only way to get updates in all the right places... but would be nice to have a special one in this case - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } /* --------------- */ diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index 5089d58883a..882fb3e91dc 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -1094,7 +1094,7 @@ static int insert_key_exec (bContext *C, wmOperator *op) BKE_reportf(op->reports, RPT_INFO, "Successfully added %d Keyframes for KeyingSet '%s'", success, ks->name); /* send notifiers that keyframes have been changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } else BKE_report(op->reports, RPT_WARNING, "Keying Set failed to insert any keyframes"); @@ -1236,7 +1236,7 @@ static int delete_key_exec (bContext *C, wmOperator *op) BKE_reportf(op->reports, RPT_INFO, "Successfully removed %d Keyframes for KeyingSet '%s'", success, ks->name); /* send notifiers that keyframes have been changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } else BKE_report(op->reports, RPT_WARNING, "Keying Set failed to remove any keyframes"); @@ -1397,7 +1397,7 @@ static int insert_key_button_exec (bContext *C, wmOperator *op) DAG_ids_flush_update(0); /* send notifiers that keyframes have been changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; @@ -1467,7 +1467,7 @@ static int delete_key_button_exec (bContext *C, wmOperator *op) DAG_ids_flush_update(0); /* send notifiers that keyframes have been changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; diff --git a/source/blender/editors/animation/keyingsets.c b/source/blender/editors/animation/keyingsets.c index 49b8c1101d6..f496cec7b39 100644 --- a/source/blender/editors/animation/keyingsets.c +++ b/source/blender/editors/animation/keyingsets.c @@ -924,7 +924,7 @@ int ANIM_apply_keyingset (bContext *C, ListBase *dsources, bAction *act, KeyingS } /* send notifiers for updates (this doesn't require context to work!) */ - WM_main_add_notifier(NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_main_add_notifier(NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } } diff --git a/source/blender/editors/armature/poselib.c b/source/blender/editors/armature/poselib.c index 613a3bd99db..408a2e1e599 100644 --- a/source/blender/editors/armature/poselib.c +++ b/source/blender/editors/armature/poselib.c @@ -806,7 +806,7 @@ static void poselib_keytag_pose (bContext *C, Scene *scene, tPoseLib_PreviewData } /* send notifiers for this */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } /* Apply the relevant changes to the pose */ diff --git a/source/blender/editors/interface/interface_anim.c b/source/blender/editors/interface/interface_anim.c index 207230a914d..4108e1c8532 100644 --- a/source/blender/editors/interface/interface_anim.c +++ b/source/blender/editors/interface/interface_anim.c @@ -111,7 +111,7 @@ void ui_but_anim_autokey(bContext *C, uiBut *but, Scene *scene, float cfra) fcu->flag &= ~FCURVE_SELECTED; insert_keyframe(id, action, ((fcu->grp)?(fcu->grp->name):(NULL)), fcu->rna_path, fcu->array_index, cfra, flag); - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } } } diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index 541b0cf494f..5ef805e25b4 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -1321,7 +1321,7 @@ static int select_all_exec(bContext *C, wmOperator *op) } PE_update_selection(scene, ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, ob); return OPERATOR_FINISHED; } @@ -1371,7 +1371,7 @@ int PE_mouse_particles(bContext *C, short *mval, int extend) for_mouse_hit_keys(&data, toggle_key_select, 1); /* nearest only */ PE_update_selection(scene, ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob); return OPERATOR_FINISHED; } @@ -1395,7 +1395,7 @@ static int select_roots_exec(bContext *C, wmOperator *op) foreach_point(&data, select_root); PE_update_selection(data.scene, data.ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob); return OPERATOR_FINISHED; } @@ -1435,7 +1435,7 @@ static int select_tips_exec(bContext *C, wmOperator *op) foreach_point(&data, select_tip); PE_update_selection(data.scene, data.ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob); return OPERATOR_FINISHED; } @@ -1475,7 +1475,7 @@ static int select_linked_exec(bContext *C, wmOperator *op) for_mouse_hit_keys(&data, select_keys, 1); /* nearest only */ PE_update_selection(data.scene, data.ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob); return OPERATOR_FINISHED; } @@ -1541,7 +1541,7 @@ int PE_border_select(bContext *C, rcti *rect, int select, int extend) for_mouse_hit_keys(&data, select_key, 0); PE_update_selection(scene, ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, ob); return OPERATOR_FINISHED; } @@ -1566,7 +1566,7 @@ int PE_circle_select(bContext *C, int selecting, short *mval, float rad) for_mouse_hit_keys(&data, select_key, 0); PE_update_selection(scene, ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, ob); return OPERATOR_FINISHED; } @@ -1632,7 +1632,7 @@ int PE_lasso_select(bContext *C, short mcords[][2], short moves, short select) } PE_update_selection(scene, ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, ob); return OPERATOR_FINISHED; } @@ -1666,7 +1666,7 @@ static int hide_exec(bContext *C, wmOperator *op) } PE_update_selection(scene, ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, ob); return OPERATOR_FINISHED; } @@ -1708,7 +1708,7 @@ static int reveal_exec(bContext *C, wmOperator *op) } PE_update_selection(scene, ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, ob); return OPERATOR_FINISHED; } @@ -1766,7 +1766,7 @@ static int select_less_exec(bContext *C, wmOperator *op) foreach_point(&data, select_less_keys); PE_update_selection(data.scene, data.ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob); return OPERATOR_FINISHED; } @@ -1827,7 +1827,7 @@ static int select_more_exec(bContext *C, wmOperator *op) foreach_point(&data, select_more_keys); PE_update_selection(data.scene, data.ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob); return OPERATOR_FINISHED; } @@ -1864,7 +1864,7 @@ static int select_inverse_exec(bContext *C, wmOperator *op) } PE_update_selection(data.scene, data.ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob); return OPERATOR_FINISHED; } @@ -1955,7 +1955,7 @@ static int rekey_exec(bContext *C, wmOperator *op) recalc_lengths(data.edit); PE_update_object(data.scene, data.ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, data.ob); return OPERATOR_FINISHED; } @@ -2260,7 +2260,7 @@ static int subdivide_exec(bContext *C, wmOperator *op) recalc_lengths(data.edit); PE_update_object(data.scene, data.ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, data.ob); return OPERATOR_FINISHED; } @@ -2348,7 +2348,7 @@ static int remove_doubles_exec(bContext *C, wmOperator *op) BKE_reportf(op->reports, RPT_INFO, "Remove %d double particles.", totremoved); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, ob); return OPERATOR_FINISHED; } @@ -2398,7 +2398,7 @@ static int weight_set_exec(bContext *C, wmOperator *op) } DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, ob); return OPERATOR_FINISHED; } @@ -2575,7 +2575,7 @@ static int delete_exec(bContext *C, wmOperator *op) } DAG_id_flush_update(&data.ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, data.ob); return OPERATOR_FINISHED; } @@ -2734,7 +2734,7 @@ static int mirror_exec(bContext *C, wmOperator *op) PE_mirror_x(scene, ob, 0); update_world_cos(ob, edit); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, ob); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); return OPERATOR_FINISHED; @@ -3519,7 +3519,7 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr) else PE_update_object(scene, ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, ob); bedit->lastmouse[0]= mouse[0]; bedit->lastmouse[1]= mouse[1]; @@ -4138,7 +4138,7 @@ static int clear_edited_exec(bContext *C, wmOperator *op) psys->flag &= ~PSYS_EDITED; psys_reset(psys, PSYS_RESET_DEPSGRAPH); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, ob); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); } } diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c index b6e3327bd12..01c8ede6a2a 100644 --- a/source/blender/editors/space_action/action_edit.c +++ b/source/blender/editors/space_action/action_edit.c @@ -99,7 +99,7 @@ static int act_new_exec(bContext *C, wmOperator *op) } /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -379,7 +379,7 @@ static int actkeys_paste_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -474,7 +474,7 @@ static int actkeys_insertkey_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -542,7 +542,7 @@ static int actkeys_duplicate_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; // xxx - start transform } @@ -629,7 +629,7 @@ static int actkeys_delete_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -693,7 +693,7 @@ static int actkeys_clean_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -757,7 +757,7 @@ static int actkeys_sample_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1238,7 +1238,7 @@ static int actkeys_snap_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1355,7 +1355,7 @@ static int actkeys_mirror_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/space_action/action_select.c b/source/blender/editors/space_action/action_select.c index 33f918c0711..e852afa9a87 100644 --- a/source/blender/editors/space_action/action_select.c +++ b/source/blender/editors/space_action/action_select.c @@ -156,7 +156,7 @@ static int actkeys_deselectall_exec(bContext *C, wmOperator *op) deselect_action_keys(&ac, 1, SELECT_ADD); /* set notifier that keyframe selection have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -317,7 +317,7 @@ static int actkeys_borderselect_exec(bContext *C, wmOperator *op) borderselect_action(&ac, rect, mode, selectmode); /* set notifier that keyframe selection have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -531,7 +531,7 @@ static int actkeys_columnselect_exec(bContext *C, wmOperator *op) columnselect_action_keys(&ac, mode); /* set notifier that keyframe selection have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -589,7 +589,7 @@ static int actkeys_select_linked_exec (bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* set notifier that keyframe selection has changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -667,7 +667,7 @@ static int actkeys_select_more_exec (bContext *C, wmOperator *op) select_moreless_action_keys(&ac, SELMAP_MORE); /* set notifier that keyframe selection has changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -701,7 +701,7 @@ static int actkeys_select_less_exec (bContext *C, wmOperator *op) select_moreless_action_keys(&ac, SELMAP_LESS); /* set notifier that keyframe selection has changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -1138,7 +1138,7 @@ static int actkeys_clickselect_invoke(bContext *C, wmOperator *op, wmEvent *even } /* set notifier that keyframe selection (and channels too) have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT|ND_ANIMCHAN_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|ND_ANIMCHAN|NA_SELECTED, NULL); /* for tweak grab to work */ return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH; diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c index 41ae6609b80..bad35d9d3e6 100644 --- a/source/blender/editors/space_action/space_action.c +++ b/source/blender/editors/space_action/space_action.c @@ -352,7 +352,7 @@ static void action_listener(ScrArea *sa, wmNotifier *wmn) switch (wmn->category) { case NC_ANIMATION: /* for selection changes of animation data, we can just redraw... otherwise autocolor might need to be done again */ - if (ELEM(wmn->data, ND_KEYFRAME_SELECT, ND_ANIMCHAN_SELECT)) + if (ELEM(wmn->data, ND_KEYFRAME, ND_ANIMCHAN) && (wmn->action == NA_SELECTED)) ED_area_tag_redraw(sa); else ED_area_tag_refresh(sa); diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index 97cee5c730f..e28fcf8c28a 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -293,8 +293,9 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) buttons_area_redraw(sa, BCONTEXT_CONSTRAINT); buttons_area_redraw(sa, BCONTEXT_BONE_CONSTRAINT); break; - case ND_PARTICLE_DATA: - buttons_area_redraw(sa, BCONTEXT_PARTICLE); + case ND_PARTICLE: + if (wmn->action == NA_EDITED) + buttons_area_redraw(sa, BCONTEXT_PARTICLE); break; case ND_DRAW: buttons_area_redraw(sa, BCONTEXT_OBJECT); @@ -357,8 +358,9 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) break; case NC_ANIMATION: switch(wmn->data) { - case ND_KEYFRAME_EDIT: - ED_area_tag_redraw(sa); + case ND_KEYFRAME: + if (wmn->action == NA_EDITED) + ED_area_tag_redraw(sa); break; } } diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index eb4be32658d..6834dfac58a 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -467,7 +467,7 @@ static int graphkeys_insertkey_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -531,7 +531,7 @@ static int graphkeys_click_insert_exec (bContext *C, wmOperator *op) MEM_freeN(ale); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -682,7 +682,7 @@ static int graphkeys_paste_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -740,7 +740,7 @@ static int graphkeys_duplicate_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -820,7 +820,7 @@ static int graphkeys_delete_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -882,7 +882,7 @@ static int graphkeys_clean_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -965,7 +965,7 @@ static int graphkeys_bake_exec(bContext *C, wmOperator *op) /* set notifier that keyframes have changed */ // NOTE: some distinction between order/number of keyframes and type should be made? - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1085,7 +1085,7 @@ static int graphkeys_sound_bake_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that 'keyframes' have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1170,7 +1170,7 @@ static int graphkeys_sample_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1690,7 +1690,7 @@ static int graphkeys_snap_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1814,7 +1814,7 @@ static int graphkeys_mirror_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1869,7 +1869,7 @@ static int graphkeys_smooth_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -2086,7 +2086,7 @@ static int graph_fmodifier_paste_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/space_graph/graph_select.c b/source/blender/editors/space_graph/graph_select.c index 17b0a87b0a8..6a9d8801e28 100644 --- a/source/blender/editors/space_graph/graph_select.c +++ b/source/blender/editors/space_graph/graph_select.c @@ -160,7 +160,7 @@ static int graphkeys_deselectall_exec(bContext *C, wmOperator *op) deselect_graph_keys(&ac, 1, SELECT_ADD); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -329,7 +329,7 @@ static int graphkeys_borderselect_exec(bContext *C, wmOperator *op) borderselect_graphkeys(&ac, rect, mode, selectmode, incl_handles); /* send notifier that keyframe selection has changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -520,7 +520,7 @@ static int graphkeys_columnselect_exec(bContext *C, wmOperator *op) columnselect_graph_keys(&ac, mode); /* set notifier that keyframe selection has changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -578,7 +578,7 @@ static int graphkeys_select_linked_exec (bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* set notifier that keyframe selection has changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -656,7 +656,7 @@ static int graphkeys_select_more_exec (bContext *C, wmOperator *op) select_moreless_graph_keys(&ac, SELMAP_MORE); /* set notifier that keyframe selection has changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -690,7 +690,7 @@ static int graphkeys_select_less_exec (bContext *C, wmOperator *op) select_moreless_graph_keys(&ac, SELMAP_LESS); /* set notifier that keyframe selection has changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -1260,7 +1260,7 @@ static int graphkeys_clickselect_invoke(bContext *C, wmOperator *op, wmEvent *ev } /* set notifier that keyframe selection (and also channel selection in some cases) has changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT|ND_ANIMCHAN_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|ND_ANIMCHAN|NA_SELECTED, NULL); /* for tweak grab to work */ return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH; diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c index e7cee30f374..1e006ca38ec 100644 --- a/source/blender/editors/space_graph/space_graph.c +++ b/source/blender/editors/space_graph/space_graph.c @@ -382,9 +382,12 @@ static void graph_region_listener(ARegion *ar, wmNotifier *wmn) case ND_OB_ACTIVE: case ND_FRAME: case ND_MARKERS: - case ND_SEQUENCER_SELECT: ED_region_tag_redraw(ar); break; + case ND_SEQUENCER: + if (wmn->action == NA_SELECTED) + ED_region_tag_redraw(ar); + break; } break; case NC_OBJECT: @@ -401,13 +404,9 @@ static void graph_region_listener(ARegion *ar, wmNotifier *wmn) } break; case NC_NODE: - switch(wmn->data) { - case ND_NODE_SELECT: - ED_region_tag_redraw(ar); - break; - } switch(wmn->action) { case NA_EDITED: + case NA_SELECTED: ED_region_tag_redraw(ar); break; } @@ -432,7 +431,7 @@ static void graph_listener(ScrArea *sa, wmNotifier *wmn) switch (wmn->category) { case NC_ANIMATION: /* for selection changes of animation data, we can just redraw... otherwise autocolor might need to be done again */ - if (ELEM(wmn->data, ND_KEYFRAME_SELECT, ND_ANIMCHAN_SELECT)) + if (ELEM(wmn->data, ND_KEYFRAME, ND_ANIMCHAN) && (wmn->action == NA_SELECTED)) ED_area_tag_redraw(sa); else ED_area_tag_refresh(sa); diff --git a/source/blender/editors/space_nla/nla_channels.c b/source/blender/editors/space_nla/nla_channels.c index 4deab9d82ab..cf98decb825 100644 --- a/source/blender/editors/space_nla/nla_channels.c +++ b/source/blender/editors/space_nla/nla_channels.c @@ -116,7 +116,7 @@ static int mouse_nla_channels (bAnimContext *ac, float x, int channel_index, sho if (adt) adt->flag |= ADT_UI_SELECTED; } - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } break; case ANIMTYPE_OBJECT: @@ -157,7 +157,7 @@ static int mouse_nla_channels (bAnimContext *ac, float x, int channel_index, sho adt->flag |= ADT_UI_ACTIVE; /* notifiers - channel was selected */ - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } } break; @@ -194,7 +194,7 @@ static int mouse_nla_channels (bAnimContext *ac, float x, int channel_index, sho ale->adt->flag |= ADT_UI_ACTIVE; } - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } break; @@ -220,21 +220,21 @@ static int mouse_nla_channels (bAnimContext *ac, float x, int channel_index, sho nlt->flag ^= NLATRACK_PROTECTED; /* notifier flags - channel was edited */ - notifierFlags |= ND_ANIMCHAN_EDIT; + notifierFlags |= (ND_ANIMCHAN|NA_EDITED); } else if (x >= (v2d->cur.xmax-2*NLACHANNEL_BUTTON_WIDTH)) { /* toggle mute */ nlt->flag ^= NLATRACK_MUTED; /* notifier flags - channel was edited */ - notifierFlags |= ND_ANIMCHAN_EDIT; + notifierFlags |= (ND_ANIMCHAN|NA_EDITED); } else if (x <= ((NLACHANNEL_BUTTON_WIDTH*2)+offset)) { /* toggle 'solo' */ BKE_nlatrack_solo_toggle(adt, nlt); /* notifier flags - channel was edited */ - notifierFlags |= ND_ANIMCHAN_EDIT; + notifierFlags |= (ND_ANIMCHAN|NA_EDITED); } else if (nlaedit_is_tweakmode_on(ac) == 0) { /* set selection */ @@ -253,7 +253,7 @@ static int mouse_nla_channels (bAnimContext *ac, float x, int channel_index, sho ANIM_set_active_channel(ac, ac->data, ac->datatype, filter, nlt, ANIMTYPE_NLATRACK); /* notifier flags - channel was selected */ - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } } break; @@ -406,7 +406,7 @@ static int nlaedit_add_tracks_exec (bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -462,7 +462,7 @@ static int nlaedit_delete_tracks_exec (bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; diff --git a/source/blender/editors/space_nla/nla_edit.c b/source/blender/editors/space_nla/nla_edit.c index b017a6102e9..38c6ecdca22 100644 --- a/source/blender/editors/space_nla/nla_edit.c +++ b/source/blender/editors/space_nla/nla_edit.c @@ -311,7 +311,7 @@ static int nlaedit_add_actionclip_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -430,7 +430,7 @@ static int nlaedit_add_transition_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -497,7 +497,7 @@ static int nlaedit_add_meta_exec (bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -549,7 +549,7 @@ static int nlaedit_remove_meta_exec (bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -639,7 +639,7 @@ static int nlaedit_duplicate_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -727,7 +727,7 @@ static int nlaedit_delete_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -872,7 +872,7 @@ static int nlaedit_split_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -925,7 +925,7 @@ static int nlaedit_bake_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -987,7 +987,7 @@ static int nlaedit_toggle_mute_exec (bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -1061,7 +1061,7 @@ static int nlaedit_move_up_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -1135,7 +1135,7 @@ static int nlaedit_move_down_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -1211,7 +1211,7 @@ static int nlaedit_sync_actlen_exec (bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -1312,7 +1312,7 @@ static int nlaedit_apply_scale_exec (bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -1375,7 +1375,7 @@ static int nlaedit_clear_scale_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -1516,7 +1516,7 @@ static int nlaedit_snap_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -1631,7 +1631,7 @@ static int nla_fmodifier_add_exec(bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -1753,7 +1753,7 @@ static int nla_fmodifier_paste_exec(bContext *C, wmOperator *op) if (ok) { /* set notifier that things have changed */ /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); return OPERATOR_FINISHED; } else { diff --git a/source/blender/editors/space_nla/nla_select.c b/source/blender/editors/space_nla/nla_select.c index 1416e0afdc9..55463580115 100644 --- a/source/blender/editors/space_nla/nla_select.c +++ b/source/blender/editors/space_nla/nla_select.c @@ -176,7 +176,7 @@ static int nlaedit_deselectall_exec(bContext *C, wmOperator *op) deselect_nla_strips(&ac, DESELECT_STRIPS_TEST, SELECT_ADD); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -313,7 +313,7 @@ static int nlaedit_borderselect_exec(bContext *C, wmOperator *op) borderselect_nla_strips(&ac, rect, mode, selectmode); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -570,7 +570,7 @@ static int nlaedit_clickselect_invoke(bContext *C, wmOperator *op, wmEvent *even } /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_SELECTED, NULL); /* for tweak grab to work */ return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH; diff --git a/source/blender/editors/space_node/node_select.c b/source/blender/editors/space_node/node_select.c index 32e57e29ab0..ccd1555e1a2 100644 --- a/source/blender/editors/space_node/node_select.c +++ b/source/blender/editors/space_node/node_select.c @@ -120,7 +120,7 @@ static int node_select_exec(bContext *C, wmOperator *op) } /* send notifiers */ - WM_event_add_notifier(C, NC_NODE|ND_NODE_SELECT, NULL); + WM_event_add_notifier(C, NC_NODE|NA_SELECTED, NULL); /* allow tweak event to work too */ return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH; @@ -188,7 +188,7 @@ static int node_borderselect_exec(bContext *C, wmOperator *op) } } - WM_event_add_notifier(C, NC_NODE|ND_NODE_SELECT, NULL); + WM_event_add_notifier(C, NC_NODE|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -264,7 +264,7 @@ static int node_select_all_exec(bContext *C, wmOperator *op) node->flag |= NODE_SELECT; } - WM_event_add_notifier(C, NC_NODE|ND_NODE_SELECT, NULL); + WM_event_add_notifier(C, NC_NODE|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -304,7 +304,7 @@ static int node_select_linked_to_exec(bContext *C, wmOperator *op) node->flag |= NODE_SELECT; } - WM_event_add_notifier(C, NC_NODE|ND_NODE_SELECT, NULL); + WM_event_add_notifier(C, NC_NODE|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -344,7 +344,7 @@ static int node_select_linked_from_exec(bContext *C, wmOperator *op) node->flag |= NODE_SELECT; } - WM_event_add_notifier(C, NC_NODE|ND_NODE_SELECT, NULL); + WM_event_add_notifier(C, NC_NODE|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -370,7 +370,7 @@ static int node_select_same_type_exec(bContext *C, wmOperator *op) SpaceNode *snode = CTX_wm_space_node(C); node_select_same_type(snode); - WM_event_add_notifier(C, NC_NODE|ND_NODE_SELECT, NULL); + WM_event_add_notifier(C, NC_NODE|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -396,7 +396,7 @@ static int node_select_same_type_next_exec(bContext *C, wmOperator *op) SpaceNode *snode = CTX_wm_space_node(C); node_select_same_type_np(snode, 0); - WM_event_add_notifier(C, NC_NODE|ND_NODE_SELECT, NULL); + WM_event_add_notifier(C, NC_NODE|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -420,7 +420,7 @@ static int node_select_same_type_prev_exec(bContext *C, wmOperator *op) SpaceNode *snode = CTX_wm_space_node(C); node_select_same_type_np(snode, 1); - WM_event_add_notifier(C, NC_NODE|ND_NODE_SELECT, NULL); + WM_event_add_notifier(C, NC_NODE|NA_SELECTED, NULL); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c index 37e05cbc682..aed8472b8d9 100644 --- a/source/blender/editors/space_outliner/outliner.c +++ b/source/blender/editors/space_outliner/outliner.c @@ -2222,7 +2222,7 @@ static int tree_element_active_psys(bContext *C, Scene *scene, TreeElement *te, if(set) { Object *ob= (Object *)tselem->id; - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, ob); // XXX extern_set_butspace(F7KEY, 0); } diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c index 6681fa98747..170b9fbda80 100644 --- a/source/blender/editors/space_sequencer/sequencer_select.c +++ b/source/blender/editors/space_sequencer/sequencer_select.c @@ -239,7 +239,7 @@ static int sequencer_deselect_exec(bContext *C, wmOperator *op) } } - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); return OPERATOR_FINISHED; } @@ -277,7 +277,7 @@ static int sequencer_select_inverse_exec(bContext *C, wmOperator *op) } } - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); return OPERATOR_FINISHED; } @@ -505,7 +505,7 @@ static int sequencer_select_invoke(bContext *C, wmOperator *op, wmEvent *event) } #endif - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); /* allowing tweaks */ return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH; @@ -595,7 +595,7 @@ static int sequencer_select_more_exec(bContext *C, wmOperator *op) if(!select_more_less_seq__internal(scene, 0, 0)) return OPERATOR_CANCELLED; - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); return OPERATOR_FINISHED; } @@ -626,7 +626,7 @@ static int sequencer_select_less_exec(bContext *C, wmOperator *op) if(!select_more_less_seq__internal(scene, 1, 0)) return OPERATOR_CANCELLED; - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); return OPERATOR_FINISHED; } @@ -681,7 +681,7 @@ static int sequencer_select_linked_pick_invoke(bContext *C, wmOperator *op, wmEv selected = select_more_less_seq__internal(scene, 1, 1); } - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); return OPERATOR_FINISHED; } @@ -716,7 +716,7 @@ static int sequencer_select_linked_exec(bContext *C, wmOperator *op) selected = select_more_less_seq__internal(scene, 1, 1); } - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); return OPERATOR_FINISHED; } @@ -766,7 +766,7 @@ static int sequencer_select_handles_exec(bContext *C, wmOperator *op) } } - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); return OPERATOR_FINISHED; } @@ -803,7 +803,7 @@ static int sequencer_select_active_side_exec(bContext *C, wmOperator *op) select_active_side(ed->seqbasep, RNA_enum_get(op->ptr, "side"), seq_act->machine, seq_act->startdisp); - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); return OPERATOR_FINISHED; } @@ -865,7 +865,7 @@ static int sequencer_borderselect_exec(bContext *C, wmOperator *op) } } - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c index 81edb6e4dd7..49c2049c66c 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.c +++ b/source/blender/editors/space_sequencer/space_sequencer.c @@ -357,7 +357,6 @@ static void sequencer_main_area_listener(ARegion *ar, wmNotifier *wmn) case ND_FRAME: case ND_MARKERS: case ND_SEQUENCER: - case ND_SEQUENCER_SELECT: ED_region_tag_redraw(ar); break; } @@ -408,7 +407,6 @@ static void sequencer_preview_area_listener(ARegion *ar, wmNotifier *wmn) case ND_FRAME: case ND_MARKERS: case ND_SEQUENCER: - case ND_SEQUENCER_SELECT: ED_region_tag_redraw(ar); break; } @@ -450,7 +448,6 @@ static void sequencer_buttons_area_listener(ARegion *ar, wmNotifier *wmn) switch(wmn->data) { case ND_FRAME: case ND_SEQUENCER: - case ND_SEQUENCER_SELECT: ED_region_tag_redraw(ar); break; } diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index 8d6b731e850..472379ec6e1 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -523,13 +523,19 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) switch(wmn->category) { case NC_ANIMATION: switch(wmn->data) { - case ND_KEYFRAME_EDIT: case ND_KEYFRAME_PROP: - case ND_NLA_EDIT: case ND_NLA_ACTCHANGE: - case ND_ANIMCHAN_SELECT: ED_region_tag_redraw(ar); break; + case ND_NLA: + case ND_KEYFRAME: + if (wmn->action == NA_EDITED) + ED_region_tag_redraw(ar); + break; + case ND_ANIMCHAN: + if (wmn->action == NA_SELECTED) + ED_region_tag_redraw(ar); + break; } break; case NC_SCENE: @@ -557,8 +563,7 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) case ND_MODIFIER: case ND_CONSTRAINT: case ND_KEYS: - case ND_PARTICLE_SELECT: - case ND_PARTICLE_DATA: + case ND_PARTICLE: ED_region_tag_redraw(ar); break; } @@ -709,12 +714,15 @@ static void view3d_buttons_area_listener(ARegion *ar, wmNotifier *wmn) switch(wmn->category) { case NC_ANIMATION: switch(wmn->data) { - case ND_KEYFRAME_EDIT: case ND_KEYFRAME_PROP: - case ND_NLA_EDIT: case ND_NLA_ACTCHANGE: ED_region_tag_redraw(ar); break; + case ND_NLA: + case ND_KEYFRAME: + if (wmn->action == NA_EDITED) + ED_region_tag_redraw(ar); + break; } break; case NC_SCENE: diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 350683f1466..6532a94971d 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -311,14 +311,14 @@ static void viewRedrawForce(const bContext *C, TransInfo *t) } else if (t->spacetype == SPACE_ACTION) { //SpaceAction *saction= (SpaceAction *)t->sa->spacedata.first; - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } else if (t->spacetype == SPACE_IPO) { //SpaceIpo *sipo= (SpaceIpo *)t->sa->spacedata.first; - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } else if (t->spacetype == SPACE_NLA) { - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); } else if(t->spacetype == SPACE_NODE) { @@ -344,7 +344,7 @@ static void viewRedrawPost(TransInfo *t) if(t->spacetype == SPACE_VIEW3D) { /* if autokeying is enabled, send notifiers that keyframes were added */ if (IS_AUTOKEY_ON(t->scene)) - WM_main_add_notifier(NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_main_add_notifier(NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } #if 0 // TRANSFORM_FIX_ME diff --git a/source/blender/makesrna/intern/rna_action.c b/source/blender/makesrna/intern/rna_action.c index 4f37195068a..bc83af7a279 100644 --- a/source/blender/makesrna/intern/rna_action.c +++ b/source/blender/makesrna/intern/rna_action.c @@ -169,39 +169,39 @@ static void rna_def_dopesheet(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_ONLYSEL); RNA_def_property_ui_text(prop, "Only Selected", "Only include channels relating to selected objects and data"); RNA_def_property_ui_icon(prop, ICON_RESTRICT_SELECT_OFF, 0); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); /* Object Group Filtering Settings */ prop= RNA_def_property(srna, "only_group_objects", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_ONLYOBGROUP); RNA_def_property_ui_text(prop, "Only Objects in Group", "Only include channels from Objects in the specified Group"); RNA_def_property_ui_icon(prop, ICON_GROUP, 0); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "filtering_group", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "filter_grp"); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Filtering Group", "Group that included Object should be a member of"); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); /* NLA Specific Settings */ prop= RNA_def_property(srna, "include_missing_nla", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NLA_NOACT); RNA_def_property_ui_text(prop, "Include Missing NLA", "Include Animation Data blocks with no NLA data. (NLA Editor only)"); RNA_def_property_ui_icon(prop, ICON_ACTION, 0); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); /* Summary Settings (DopeSheet editors only) */ prop= RNA_def_property(srna, "display_summary", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_SUMMARY); RNA_def_property_ui_text(prop, "Display Summary", "Display an additional 'summary' line. (DopeSheet Editors only)"); RNA_def_property_ui_icon(prop, ICON_BORDERMOVE, 0); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "collapse_summary", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", ADS_FLAG_SUMMARY_COLLAPSED); RNA_def_property_ui_text(prop, "Collapse Summary", "Collapse summary when shown, so all other channels get hidden. (DopeSheet Editors Only)"); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); /* General DataType Filtering Settings */ @@ -209,85 +209,85 @@ static void rna_def_dopesheet(BlenderRNA *brna) RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOOBJ); RNA_def_property_ui_text(prop, "Display Transforms", "Include visualization of Object-level Animation data (mostly Transforms)"); RNA_def_property_ui_icon(prop, ICON_MANIPUL, 0); // XXX? - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "display_shapekeys", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOSHAPEKEYS); RNA_def_property_ui_text(prop, "Display Shapekeys", "Include visualization of ShapeKey related Animation data"); RNA_def_property_ui_icon(prop, ICON_SHAPEKEY_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "display_mesh", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOMESH); RNA_def_property_ui_text(prop, "Display Meshes", "Include visualization of Mesh related Animation data"); RNA_def_property_ui_icon(prop, ICON_MESH_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "display_camera", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOCAM); RNA_def_property_ui_text(prop, "Display Camera", "Include visualization of Camera related Animation data"); RNA_def_property_ui_icon(prop, ICON_CAMERA_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "display_material", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOMAT); RNA_def_property_ui_text(prop, "Display Material", "Include visualization of Material related Animation data"); RNA_def_property_ui_icon(prop, ICON_MATERIAL_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "display_lamp", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOLAM); RNA_def_property_ui_text(prop, "Display Lamp", "Include visualization of Lamp related Animation data"); RNA_def_property_ui_icon(prop, ICON_LAMP_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "display_texture", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOTEX); RNA_def_property_ui_text(prop, "Display Texture", "Include visualization of Texture related Animation data"); RNA_def_property_ui_icon(prop, ICON_TEXTURE_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "display_curve", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOCUR); RNA_def_property_ui_text(prop, "Display Curve", "Include visualization of Curve related Animation data"); RNA_def_property_ui_icon(prop, ICON_CURVE_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "display_world", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOWOR); RNA_def_property_ui_text(prop, "Display World", "Include visualization of World related Animation data"); RNA_def_property_ui_icon(prop, ICON_WORLD_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "display_scene", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOSCE); RNA_def_property_ui_text(prop, "Display Scene", "Include visualization of Scene related Animation data"); RNA_def_property_ui_icon(prop, ICON_SCENE_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "display_particle", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOPART); RNA_def_property_ui_text(prop, "Display Particle", "Include visualization of Particle related Animation data"); RNA_def_property_ui_icon(prop, ICON_PARTICLE_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "display_metaball", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOMBA); RNA_def_property_ui_text(prop, "Display Metaball", "Include visualization of Metaball related Animation data"); RNA_def_property_ui_icon(prop, ICON_META_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "display_armature", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOARM); RNA_def_property_ui_text(prop, "Display Armature", "Include visualization of Armature related Animation data"); RNA_def_property_ui_icon(prop, ICON_ARMATURE_DATA, 0); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "display_node", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NONTREE); RNA_def_property_ui_text(prop, "Display Node", "Include visualization of Node related Animation data"); RNA_def_property_ui_icon(prop, ICON_NODETREE, 0); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); } static void rna_def_action_group(BlenderRNA *brna) @@ -302,7 +302,7 @@ static void rna_def_action_group(BlenderRNA *brna) prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); RNA_def_property_ui_text(prop, "Name", ""); RNA_def_struct_name_property(srna, prop); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); /* WARNING: be very careful when working with this list, since the endpoint is not * defined like a standard ListBase. Adding/removing channels from this list needs @@ -323,22 +323,22 @@ static void rna_def_action_group(BlenderRNA *brna) prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", AGRP_SELECTED); RNA_def_property_ui_text(prop, "Selected", "Action Group is selected"); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_SELECT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_SELECTED, NULL); prop= RNA_def_property(srna, "locked", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", AGRP_PROTECTED); RNA_def_property_ui_text(prop, "Locked", "Action Group is locked"); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", AGRP_EXPANDED); RNA_def_property_ui_text(prop, "Expanded", "Action Group is expanded"); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "custom_color", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "customCol"); RNA_def_property_ui_text(prop, "Custom Color", "Index of custom color set"); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); } /* fcurve.keyframe_points */ diff --git a/source/blender/makesrna/intern/rna_boid.c b/source/blender/makesrna/intern/rna_boid.c index 223d7a1c206..7e52032687c 100644 --- a/source/blender/makesrna/intern/rna_boid.c +++ b/source/blender/makesrna/intern/rna_boid.c @@ -83,7 +83,7 @@ static void rna_Boids_reset(Main *bmain, Scene *scene, PointerRNA *ptr) else DAG_id_flush_update(ptr->id.data, OB_RECALC_DATA|PSYS_RECALC_RESET); - WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL); + WM_main_add_notifier(NC_OBJECT|ND_PARTICLE|NA_EDITED, NULL); } static void rna_Boids_reset_deps(Main *bmain, Scene *scene, PointerRNA *ptr) { @@ -99,7 +99,7 @@ static void rna_Boids_reset_deps(Main *bmain, Scene *scene, PointerRNA *ptr) DAG_scene_sort(scene); - WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL); + WM_main_add_notifier(NC_OBJECT|ND_PARTICLE|NA_EDITED, NULL); } static StructRNA* rna_BoidRule_refine(struct PointerRNA *ptr) diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index 10b9a5ecc96..d798753d123 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -571,20 +571,20 @@ static void rna_def_fmodifier_generator(BlenderRNA *brna) prop= RNA_def_property(srna, "additive", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FCM_GENERATOR_ADDITIVE); RNA_def_property_ui_text(prop, "Additive", "Values generated by this modifier are applied on top of the existing values instead of overwriting them"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); // XXX this has a special validation func prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE); RNA_def_property_enum_items(prop, generator_mode_items); RNA_def_property_ui_text(prop, "Mode", "Type of generator to use"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); /* order of the polynomial */ // XXX this has a special validation func prop= RNA_def_property(srna, "poly_order", PROP_INT, PROP_NONE); RNA_def_property_ui_text(prop, "Polynomial Order", "The highest power of 'x' for this polynomial. (number of coefficients - 1)"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); /* coefficients array */ prop= RNA_def_property(srna, "coefficients", PROP_FLOAT, PROP_NONE); @@ -618,31 +618,31 @@ static void rna_def_fmodifier_function_generator(BlenderRNA *brna) /* coefficients */ prop= RNA_def_property(srna, "amplitude", PROP_FLOAT, PROP_NONE); RNA_def_property_ui_text(prop, "Amplitude", "Scale factor determining the maximum/minimum values"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "phase_multiplier", PROP_FLOAT, PROP_NONE); RNA_def_property_ui_text(prop, "Phase Multiplier", "Scale factor determining the 'speed' of the function"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "phase_offset", PROP_FLOAT, PROP_NONE); RNA_def_property_ui_text(prop, "Phase Offset", "Constant factor to offset time by for function"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "value_offset", PROP_FLOAT, PROP_NONE); RNA_def_property_ui_text(prop, "Value Offset", "Constant factor to offset values by"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); /* flags */ prop= RNA_def_property(srna, "additive", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FCM_GENERATOR_ADDITIVE); RNA_def_property_ui_text(prop, "Additive", "Values generated by this modifier are applied on top of the existing values instead of overwriting them"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "function_type", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "type"); RNA_def_property_enum_items(prop, prop_type_items); RNA_def_property_ui_text(prop, "Type", "Type of built-in function to use"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } /* --------- */ @@ -663,18 +663,18 @@ static void rna_def_fmodifier_envelope_ctrl(BlenderRNA *brna) prop= RNA_def_property(srna, "minimum", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "min"); RNA_def_property_ui_text(prop, "Minimum Value", "Lower bound of envelope at this control-point"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "maximum", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "max"); RNA_def_property_ui_text(prop, "Maximum Value", "Upper bound of envelope at this control-point"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); /* Frame */ prop= RNA_def_property(srna, "frame", PROP_FLOAT, PROP_TIME); RNA_def_property_float_sdna(prop, NULL, "time"); RNA_def_property_ui_text(prop, "Frame", "Frame this control-point occurs on"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); // TODO: // - selection flags (not implemented in UI yet though) @@ -699,17 +699,17 @@ static void rna_def_fmodifier_envelope(BlenderRNA *brna) prop= RNA_def_property(srna, "reference_value", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "midval"); RNA_def_property_ui_text(prop, "Reference Value", "Value that envelope's influence is centered around / based on"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "default_minimum", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "min"); RNA_def_property_ui_text(prop, "Default Minimum", "Lower distance from Reference Value for 1:1 default influence"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "default_maximum", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "max"); RNA_def_property_ui_text(prop, "Default Maximum", "Upper distance from Reference Value for 1:1 default influence"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } /* --------- */ @@ -734,21 +734,21 @@ static void rna_def_fmodifier_cycles(BlenderRNA *brna) prop= RNA_def_property(srna, "before_mode", PROP_ENUM, PROP_NONE); RNA_def_property_enum_items(prop, prop_type_items); RNA_def_property_ui_text(prop, "Before Mode", "Cycling mode to use before first keyframe"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "before_cycles", PROP_FLOAT, PROP_NONE); RNA_def_property_ui_text(prop, "Before Cycles", "Maximum number of cycles to allow before first keyframe. (0 = infinite)"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); /* after */ prop= RNA_def_property(srna, "after_mode", PROP_ENUM, PROP_NONE); RNA_def_property_enum_items(prop, prop_type_items); RNA_def_property_ui_text(prop, "After Mode", "Cycling mode to use after last keyframe"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "after_cycles", PROP_FLOAT, PROP_NONE); RNA_def_property_ui_text(prop, "After Cycles", "Maximum number of cycles to allow after last keyframe. (0 = infinite)"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } /* --------- */ @@ -777,46 +777,46 @@ static void rna_def_fmodifier_limits(BlenderRNA *brna) prop= RNA_def_property(srna, "use_minimum_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FCM_LIMIT_XMIN); RNA_def_property_ui_text(prop, "Minimum X", "Use the minimum X value"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "use_minimum_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FCM_LIMIT_YMIN); RNA_def_property_ui_text(prop, "Minimum Y", "Use the minimum Y value"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "use_maximum_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FCM_LIMIT_XMAX); RNA_def_property_ui_text(prop, "Maximum X", "Use the maximum X value"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "use_maximum_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FCM_LIMIT_YMAX); RNA_def_property_ui_text(prop, "Maximum Y", "Use the maximum Y value"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "minimum_x", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "rect.xmin"); RNA_def_property_float_funcs(prop, NULL, NULL, "rna_FModifierLimits_minx_range"); RNA_def_property_ui_text(prop, "Minimum X", "Lowest X value to allow"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "minimum_y", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "rect.ymin"); RNA_def_property_float_funcs(prop, NULL, NULL, "rna_FModifierLimits_miny_range"); RNA_def_property_ui_text(prop, "Minimum Y", "Lowest Y value to allow"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "maximum_x", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "rect.xmax"); RNA_def_property_float_funcs(prop, NULL, NULL, "rna_FModifierLimits_maxx_range"); RNA_def_property_ui_text(prop, "Maximum X", "Highest X value to allow"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "maximum_y", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "rect.ymax"); RNA_def_property_float_funcs(prop, NULL, NULL, "rna_FModifierLimits_maxy_range"); RNA_def_property_ui_text(prop, "Maximum Y", "Highest Y value to allow"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } /* --------- */ @@ -840,27 +840,27 @@ static void rna_def_fmodifier_noise(BlenderRNA *brna) prop= RNA_def_property(srna, "modification", PROP_ENUM, PROP_NONE); RNA_def_property_enum_items(prop, prop_modification_items); RNA_def_property_ui_text(prop, "Modification", "Method of modifying the existing F-Curve"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "size", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "size"); RNA_def_property_ui_text(prop, "Size", "Scaling (in time) of the noise"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "strength"); RNA_def_property_ui_text(prop, "Strength", "Amplitude of the noise - the amount that it modifies the underlying curve"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "phase", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "phase"); RNA_def_property_ui_text(prop, "Phase", "A random seed for the noise effect"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "depth", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_sdna(prop, NULL, "depth"); RNA_def_property_ui_text(prop, "Depth", "Amount of fine level detail present in the noise"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } @@ -878,34 +878,34 @@ static void rna_def_fmodifier_stepped(BlenderRNA *brna) /* properties */ prop= RNA_def_property(srna, "step_size", PROP_FLOAT, PROP_NONE); RNA_def_property_ui_text(prop, "Step Size", "Number of frames to hold each value"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "offset"); RNA_def_property_ui_text(prop, "Offset", "Reference number of frames before frames get held. Use to get hold for '1-3' vs '5-7' holding patterns"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "use_frame_start", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FCM_STEPPED_NO_BEFORE); RNA_def_property_ui_text(prop, "Use Start Frame", "Restrict modifier to only act after its 'start' frame"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "use_frame_end", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FCM_STEPPED_NO_AFTER); RNA_def_property_ui_text(prop, "Use End Frame", "Restrict modifier to only act before its 'end' frame"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "frame_start", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "start_frame"); RNA_def_property_float_funcs(prop, NULL, NULL, "rna_FModifierStepped_start_frame_range"); RNA_def_property_ui_text(prop, "Start Frame", "Frame that modifier's influence starts (if applicable)"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "frame_end", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "end_frame"); RNA_def_property_float_funcs(prop, NULL, NULL, "rna_FModifierStepped_end_frame_range"); RNA_def_property_ui_text(prop, "End Frame", "Frame that modifier's influence ends (if applicable)"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } /* --------- */ @@ -1159,14 +1159,14 @@ static void rna_def_fpoint(BlenderRNA *brna) prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", 1); RNA_def_property_ui_text(prop, "Selected", "Selection status"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); /* Vector value */ prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_XYZ); RNA_def_property_float_sdna(prop, NULL, "vec"); RNA_def_property_array(prop, 2); RNA_def_property_ui_text(prop, "Point", "Point coordinates"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } @@ -1186,17 +1186,17 @@ static void rna_def_fkeyframe(BlenderRNA *brna) prop= RNA_def_property(srna, "selected_handle1", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "f1", 0); RNA_def_property_ui_text(prop, "Handle 1 selected", "Handle 1 selection status"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); prop= RNA_def_property(srna, "selected_handle2", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "f3", 0); RNA_def_property_ui_text(prop, "Handle 2 selected", "Handle 2 selection status"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "f2", 0); RNA_def_property_ui_text(prop, "Selected", "Control point selection status"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); /* Enums */ prop= RNA_def_property(srna, "handle1_type", PROP_ENUM, PROP_NONE); @@ -1228,19 +1228,19 @@ static void rna_def_fkeyframe(BlenderRNA *brna) RNA_def_property_array(prop, 2); RNA_def_property_float_funcs(prop, "rna_FKeyframe_handle1_get", "rna_FKeyframe_handle1_set", NULL); RNA_def_property_ui_text(prop, "Handle 1", "Coordinates of the first handle"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_TRANSLATION); RNA_def_property_array(prop, 2); RNA_def_property_float_funcs(prop, "rna_FKeyframe_ctrlpoint_get", "rna_FKeyframe_ctrlpoint_set", NULL); RNA_def_property_ui_text(prop, "Control Point", "Coordinates of the control point"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); prop= RNA_def_property(srna, "handle2", PROP_FLOAT, PROP_TRANSLATION); RNA_def_property_array(prop, 2); RNA_def_property_float_funcs(prop, "rna_FKeyframe_handle2_get", "rna_FKeyframe_handle2_set", NULL); RNA_def_property_ui_text(prop, "Handle 2", "Coordinates of the second handle"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } static void rna_def_fcurve_modifiers(BlenderRNA *brna, PropertyRNA *cprop) @@ -1387,17 +1387,17 @@ static void rna_def_fcurve(BlenderRNA *brna) prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FCURVE_SELECTED); RNA_def_property_ui_text(prop, "Selected", "F-Curve is selected for editing"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); prop= RNA_def_property(srna, "locked", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FCURVE_PROTECTED); RNA_def_property_ui_text(prop, "Locked", "F-Curve's settings cannot be edited"); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "muted", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FCURVE_MUTED); RNA_def_property_ui_text(prop, "Muted", "F-Curve is not evaluated"); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "auto_clamped_handles", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FCURVE_AUTO_HANDLES); diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c index 7b8d4830d5c..e43f494c189 100644 --- a/source/blender/makesrna/intern/rna_particle.c +++ b/source/blender/makesrna/intern/rna_particle.c @@ -205,7 +205,7 @@ static void particle_recalc(Main *bmain, Scene *scene, PointerRNA *ptr, short fl else DAG_id_flush_update(ptr->id.data, OB_RECALC_DATA|flag); - WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL); + WM_main_add_notifier(NC_OBJECT|ND_PARTICLE|NA_EDITED, NULL); } static void rna_Particle_redo(Main *bmain, Scene *scene, PointerRNA *ptr) { @@ -269,7 +269,7 @@ static void rna_Particle_target_reset(Main *bmain, Scene *scene, PointerRNA *ptr DAG_scene_sort(scene); } - WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL); + WM_main_add_notifier(NC_OBJECT|ND_PARTICLE|NA_EDITED, NULL); } static void rna_Particle_target_redo(Main *bmain, Scene *scene, PointerRNA *ptr) @@ -281,7 +281,7 @@ static void rna_Particle_target_redo(Main *bmain, Scene *scene, PointerRNA *ptr) psys->recalc = PSYS_RECALC_REDO; DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL); + WM_main_add_notifier(NC_OBJECT|ND_PARTICLE|NA_EDITED, NULL); } } @@ -297,7 +297,7 @@ static void rna_Particle_hair_dynamics(Main *bmain, Scene *scene, PointerRNA *pt rna_Particle_redo(bmain, scene, ptr); } else - WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL); + WM_main_add_notifier(NC_OBJECT|ND_PARTICLE|NA_EDITED, NULL); } static PointerRNA rna_particle_settings_get(PointerRNA *ptr) { diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c index dc157ce15bb..3a7e7a02837 100644 --- a/source/blender/makesrna/intern/rna_sculpt_paint.c +++ b/source/blender/makesrna/intern/rna_sculpt_paint.c @@ -137,7 +137,7 @@ static void rna_ParticleEdit_tool_set(PointerRNA *ptr, int value) Object *ob = (pset->scene->basact)? pset->scene->basact->object: NULL; if(ob) { DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL); + WM_main_add_notifier(NC_OBJECT|ND_PARTICLE|NA_EDITED, NULL); } } diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index b4d7b5559a4..c52fd7f5cba 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -690,17 +690,17 @@ static void rna_def_sequence(BlenderRNA *brna) prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SELECT); RNA_def_property_ui_text(prop, "Selected", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER_SELECT, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER|NA_SELECTED, NULL); prop= RNA_def_property(srna, "left_handle_selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_LEFTSEL); RNA_def_property_ui_text(prop, "Left Handle Selected", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER_SELECT, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER|NA_SELECTED, NULL); prop= RNA_def_property(srna, "right_handle_selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_RIGHTSEL); RNA_def_property_ui_text(prop, "Right Handle Selected", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER_SELECT, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER|NA_SELECTED, NULL); prop= RNA_def_property(srna, "mute", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MUTE); diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 2d582d54bbd..3058fe62e0f 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -1609,7 +1609,7 @@ static void rna_def_space_dopesheet(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_pointer_funcs(prop, NULL, "rna_SpaceDopeSheetEditor_action_set", NULL); RNA_def_property_ui_text(prop, "Action", "Action displayed and edited in this space"); - RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, "rna_SpaceDopeSheetEditor_action_update"); + RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, "rna_SpaceDopeSheetEditor_action_update"); /* mode */ prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE); diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index 3b83e4b760b..199b17b9810 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -183,7 +183,6 @@ typedef struct wmNotifier { #define ND_KEYINGSET (12<<16) #define ND_TOOLSETTINGS (13<<16) #define ND_LAYER (14<<16) -#define ND_SEQUENCER_SELECT (15<<16) /* NC_OBJECT Object */ #define ND_TRANSFORM (16<<16) @@ -192,11 +191,10 @@ typedef struct wmNotifier { #define ND_BONE_ACTIVE (19<<16) #define ND_BONE_SELECT (20<<16) #define ND_DRAW (21<<16) -#define ND_MODIFIER (22<<16) /* modifiers edited */ +#define ND_MODIFIER (22<<16) #define ND_KEYS (23<<16) -#define ND_CONSTRAINT (24<<16) /* constraints edited */ -#define ND_PARTICLE_DATA (25<<16) /* particles edited */ -#define ND_PARTICLE_SELECT (26<<16) /* particles selecting change */ +#define ND_CONSTRAINT (24<<16) +#define ND_PARTICLE (25<<16) /* NC_MATERIAL Material */ #define ND_SHADING (30<<16) @@ -215,15 +213,12 @@ typedef struct wmNotifier { #define ND_DISPLAY (51<<16) /* NC_ANIMATION Animato */ -#define ND_KEYFRAME_SELECT (70<<16) -#define ND_KEYFRAME_EDIT (71<<16) -#define ND_KEYFRAME_PROP (72<<16) -#define ND_ANIMCHAN_SELECT (73<<16) -#define ND_ANIMCHAN_EDIT (74<<16) -#define ND_NLA_SELECT (75<<16) -#define ND_NLA_EDIT (76<<16) -#define ND_NLA_ACTCHANGE (77<<16) -#define ND_FCURVES_ORDER (78<<16) +#define ND_KEYFRAME (70<<16) +#define ND_KEYFRAME_PROP (71<<16) +#define ND_ANIMCHAN (72<<16) +#define ND_NLA (73<<16) +#define ND_NLA_ACTCHANGE (74<<16) +#define ND_FCURVES_ORDER (75<<16) /* NC_GEOM Geometry */ /* Mesh, Curve, MetaBall, Armature, .. */ @@ -231,7 +226,6 @@ typedef struct wmNotifier { #define ND_DATA (91<<16) /* NC_NODE Nodes */ -#define ND_NODE_SELECT (1<<16) /* NC_SPACE */ #define ND_SPACE_CONSOLE (1<<16) /* general redraw */ @@ -279,6 +273,7 @@ typedef struct wmNotifier { #define NA_ADDED 3 #define NA_REMOVED 4 #define NA_RENAME 5 +#define NA_SELECTED 6 /* ************** Gesture Manager data ************** */ From 0aef0d2538573cdb6eefae9c2fc10d80fe1d572e Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 18 Jun 2010 05:18:46 +0000 Subject: [PATCH 123/674] Raise the default report popup severity to errors only (not warnings). All reports still get displayed in header. --- source/blender/blenkernel/intern/report.c | 2 +- source/blender/editors/interface/interface_regions.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/report.c b/source/blender/blenkernel/intern/report.c index d5990ce81ec..173c6c136f2 100644 --- a/source/blender/blenkernel/intern/report.c +++ b/source/blender/blenkernel/intern/report.c @@ -67,7 +67,7 @@ void BKE_reports_init(ReportList *reports, int flag) memset(reports, 0, sizeof(ReportList)); reports->storelevel= RPT_INFO; - reports->printlevel= RPT_INFO; + reports->printlevel= RPT_ERROR; reports->flag= flag; } diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index 0e58f73c87e..d44e4b2b4dc 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -2316,7 +2316,7 @@ void uiPupMenuReports(bContext *C, ReportList *reports) ds= BLI_dynstr_new(); for(report=reports->list.first; report; report=report->next) { - if(report->type <= reports->printlevel) + if(report->type < reports->printlevel) ; /* pass */ else if(report->type >= RPT_ERROR) BLI_dynstr_appendf(ds, "Error %%i%d%%t|%s", ICON_ERROR, report->message); From c6b7b8a485eb71a561a96e44d54eca17d70ae356 Mon Sep 17 00:00:00 2001 From: Mitchell Stokes Date: Fri, 18 Jun 2010 08:22:05 +0000 Subject: [PATCH 124/674] Fixing some warnings for glew in space_view3d when building with CMake. GLEW_STATIC needed to be defined; it was already defined for SCons. --- source/blender/editors/space_view3d/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/blender/editors/space_view3d/CMakeLists.txt b/source/blender/editors/space_view3d/CMakeLists.txt index 20a45e34d84..a6945bbe9bb 100644 --- a/source/blender/editors/space_view3d/CMakeLists.txt +++ b/source/blender/editors/space_view3d/CMakeLists.txt @@ -45,4 +45,6 @@ IF(WIN32) SET(INC ${INC} ${PTHREADS_INC}) ENDIF(WIN32) +ADD_DEFINITIONS(-DGLEW_STATIC) + BLENDERLIB(bf_editor_space_view3d "${SRC}" "${INC}") From e4c9381f14bccdfebf1d33aa7bad97948223dab3 Mon Sep 17 00:00:00 2001 From: Janne Karhu Date: Fri, 18 Jun 2010 11:34:45 +0000 Subject: [PATCH 125/674] Fix for [#22479] Hair is left our when moving emitter unless Hair Dynamics is set on --- source/blender/blenkernel/intern/particle_system.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index ce84ee96d01..aa0ed983154 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -3943,7 +3943,7 @@ void particle_system_update(Scene *scene, Object *ob, ParticleSystem *psys) BKE_animsys_evaluate_animdata(&part->id, part->adt, cfra, ADT_RECALC_DRIVERS); /* TODO: only free child paths in case of PSYS_RECALC_CHILD */ - if(psys->recalc & PSYS_RECALC) + if(psys->recalc & PSYS_RECALC || ob->recalc & OB_RECALC) psys_free_path_cache(psys, NULL); if(psys->recalc & PSYS_RECALC_CHILD) From 61b0a5bdb5abfc219c430b7492d4efd44085eaf2 Mon Sep 17 00:00:00 2001 From: Janne Karhu Date: Fri, 18 Jun 2010 11:36:51 +0000 Subject: [PATCH 126/674] Fix for [#22410] Texture force field doesn't depend on empty location (patch by Matt Ebb) --- source/blender/blenkernel/intern/effect.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/effect.c b/source/blender/blenkernel/intern/effect.c index c780971c3fa..e9283ea867e 100644 --- a/source/blender/blenkernel/intern/effect.c +++ b/source/blender/blenkernel/intern/effect.c @@ -777,7 +777,7 @@ static void do_texture_effector(EffectorCache *eff, EffectorData *efd, EffectedP } if(eff->pd->flag & PFIELD_TEX_OBJECT) { - mul_mat3_m4_v3(eff->ob->obmat, tex_co); + mul_m4_v3(eff->ob->obmat, tex_co); } hasrgb = multitex_ext(eff->pd->tex, tex_co, NULL,NULL, 0, result); From fe3d388af2ad033f6375acb6d069265af281d352 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 18 Jun 2010 14:14:13 +0000 Subject: [PATCH 127/674] Changes to scene updating with set scenes. The most useful effect of this is that set scenes can take the simplify settings from the current scene (render team doesnt have to worry about animators simplify settings). details... - updating on frame change now passes the parent scene to object update function. (this was alredy happening for updating tagged objects) - set scenes objects update first so scenes can depend on set objects however this only happened at once level, now set scenes are updated recursively, so deepest level is updated first. - collision objects used to only look through the current scene, now set objects are included. --- source/blender/blenkernel/intern/collision.c | 19 ++++-- source/blender/blenkernel/intern/scene.c | 67 +++++--------------- 2 files changed, 30 insertions(+), 56 deletions(-) diff --git a/source/blender/blenkernel/intern/collision.c b/source/blender/blenkernel/intern/collision.c index a77ac9b8e24..9b49ac9c6ff 100644 --- a/source/blender/blenkernel/intern/collision.c +++ b/source/blender/blenkernel/intern/collision.c @@ -40,6 +40,7 @@ #include "BKE_DerivedMesh.h" #include "BKE_global.h" +#include "BKE_scene.h" #include "BKE_mesh.h" #include "BKE_object.h" #include "BKE_modifier.h" @@ -1353,10 +1354,13 @@ Object **get_collisionobjects(Scene *scene, Object *self, Group *group, int *num add_collision_object(&objs, &numobj, &maxobj, go->ob, self, 0); } else { + Scene *sce; /* for SETLOOPER macro */ /* add objects in same layer in scene */ - for(base = scene->base.first; base; base = base->next) - if(base->lay & self->lay) + for(SETLOOPER(scene, base)) { + if(base->lay & self->lay) add_collision_object(&objs, &numobj, &maxobj, base->object, self, 0); + + } } *numcollobj= numobj; @@ -1400,7 +1404,6 @@ static void add_collider_cache_object(ListBase **objs, Object *ob, Object *self, ListBase *get_collider_cache(Scene *scene, Object *self, Group *group) { - Base *base; GroupObject *go; ListBase *objs= NULL; @@ -1410,9 +1413,15 @@ ListBase *get_collider_cache(Scene *scene, Object *self, Group *group) add_collider_cache_object(&objs, go->ob, self, 0); } else { - for(base = scene->base.first; base; base = base->next) - if(!self || (base->lay & self->lay)) + Scene *sce; /* for SETLOOPER macro */ + Base *base; + + /* add objects in same layer in scene */ + for(SETLOOPER(scene, base)) { + if(!self || (base->lay & self->lay)) add_collider_cache_object(&objs, base->object, self, 0); + + } } return objs; diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index dcd305ef87e..0e4b36d724d 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -887,68 +887,38 @@ float frame_to_float (Scene *scene, int cfra) /* see also bsystem_time in objec return ctime; } -static void scene_update_newframe(Scene *scene, int cfra, unsigned int lay) +static void scene_update_tagged_recursive(Scene *scene, Scene *scene_parent) { Base *base; - Object *ob; - int cfra_back= scene->r.cfra; - scene->r.cfra= cfra; - + + /* sets first, we allow per definition current scene to have + dependencies on sets, but not the other way around. */ + if(scene->set) + scene_update_tagged_recursive(scene->set, scene_parent); + for(base= scene->base.first; base; base= base->next) { - ob= base->object; - - object_handle_update(scene, ob); // bke_object.h + Object *ob= base->object; + + object_handle_update(scene_parent, ob); if(ob->dup_group && (ob->transflag & OB_DUPLIGROUP)) - group_handle_recalc_and_update(scene, ob, ob->dup_group); - - /* only update layer when an ipo */ - // XXX old animation system - //if(ob->ipo && has_ipo_code(ob->ipo, OB_LAY) ) { - // base->lay= ob->lay; - //} + group_handle_recalc_and_update(scene_parent, ob, ob->dup_group); } - - scene->r.cfra= cfra_back; } /* this is called in main loop, doing tagged updates before redraw */ void scene_update_tagged(Scene *scene) { - Scene *sce; - Base *base; - Object *ob; - float ctime = frame_to_float(scene, scene->r.cfra); - scene->physics_settings.quick_cache_step= 0; /* update all objects: drivers, matrices, displists, etc. flags set by depgraph or manual, no layer check here, gets correct flushed */ - /* sets first, we allow per definition current scene to have - dependencies on sets, but not the other way around. */ - if(scene->set) { - for(SETLOOPER(scene->set, base)) { - ob= base->object; - - object_handle_update(scene, ob); - - if(ob->dup_group && (ob->transflag & OB_DUPLIGROUP)) - group_handle_recalc_and_update(scene, ob, ob->dup_group); - } - } - - for(base= scene->base.first; base; base= base->next) { - ob= base->object; - - object_handle_update(scene, ob); - - if(ob->dup_group && (ob->transflag & OB_DUPLIGROUP)) - group_handle_recalc_and_update(scene, ob, ob->dup_group); - } + scene_update_tagged_recursive(scene, scene); /* recalc scene animation data here (for sequencer) */ { + float ctime = frame_to_float(scene, scene->r.cfra); AnimData *adt= BKE_animdata_from_id(&scene->id); if(adt && (adt->recalc & ADT_RECALC_ANIM)) @@ -978,7 +948,7 @@ void scene_update_for_newframe(Scene *sce, unsigned int lay) /* Following 2 functions are recursive - * so dont call within 'scene_update_newframe' */ + * so dont call within 'scene_update_tagged_recursive' */ DAG_scene_update_flags(sce, lay); // only stuff that moves or needs display still /* All 'standard' (i.e. without any dependencies) animation is handled here, @@ -990,13 +960,8 @@ void scene_update_for_newframe(Scene *sce, unsigned int lay) BKE_animsys_evaluate_all_animation(G.main, ctime); /*...done with recusrive funcs */ - - /* sets first, we allow per definition current scene to have dependencies on sets */ - for(sce_iter= sce->set; sce_iter; sce_iter= sce_iter->set) { - scene_update_newframe(sce_iter, sce->r.cfra, lay); - } - - scene_update_newframe(sce, sce->r.cfra, lay); + /* object_handle_update() on all objects, groups and sets */ + scene_update_tagged_recursive(sce, sce); } /* return default layer, also used to patch old files */ From 000d23e05ced975fa28c87e78b446624c6992e67 Mon Sep 17 00:00:00 2001 From: Diego Borghetti Date: Fri, 18 Jun 2010 15:23:39 +0000 Subject: [PATCH 128/674] Fix #22625 My fix for #22317 make that every time you delete an object, blender go to perspective view, fixed now. --- source/blender/blenkernel/intern/object.c | 35 ++++++++++++++--------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 972c07eb272..10c94ed1eeb 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -337,7 +337,7 @@ void unlink_object(Scene *scene, Object *ob) ModifierData *md; ARegion *ar; RegionView3D *rv3d; - int a; + int a, found; unlink_controllers(&ob->controllers); unlink_actuators(&ob->actuators); @@ -609,27 +609,36 @@ void unlink_object(Scene *scene, Object *ob) while(sa) { SpaceLink *sl; - if (sa->spacetype == SPACE_VIEW3D) { - for (ar= sa->regionbase.first; ar; ar= ar->next) { - if (ar->regiontype==RGN_TYPE_WINDOW) { - rv3d= (RegionView3D *)ar->regiondata; - if (rv3d->persp == RV3D_CAMOB) - rv3d->persp= RV3D_PERSP; - if (rv3d->localvd && rv3d->localvd->persp == RV3D_CAMOB) - rv3d->localvd->persp= RV3D_PERSP; - } - } - } - for (sl= sa->spacedata.first; sl; sl= sl->next) { if(sl->spacetype==SPACE_VIEW3D) { View3D *v3d= (View3D*) sl; + found= 0; if(v3d->camera==ob) { v3d->camera= NULL; + found= 1; } if(v3d->localvd && v3d->localvd->camera==ob ) { v3d->localvd->camera= NULL; + found += 2; + } + + if (found) { + if (sa->spacetype == SPACE_VIEW3D) { + for (ar= sa->regionbase.first; ar; ar= ar->next) { + if (ar->regiontype==RGN_TYPE_WINDOW) { + rv3d= (RegionView3D *)ar->regiondata; + if (found == 1 || found == 3) { + if (rv3d->persp == RV3D_CAMOB) + rv3d->persp= RV3D_PERSP; + } + if (found == 2 || found == 3) { + if (rv3d->localvd && rv3d->localvd->persp == RV3D_CAMOB) + rv3d->localvd->persp= RV3D_PERSP; + } + } + } + } } } else if(sl->spacetype==SPACE_OUTLINER) { From 615af47559f7c1bf0aa13011d21ed972f433613c Mon Sep 17 00:00:00 2001 From: Diego Borghetti Date: Fri, 18 Jun 2010 20:19:24 +0000 Subject: [PATCH 129/674] Fix #22621 Alt-A toggles panel expand collapse Patch by John Carpenter The expand/collapse command don't filter the Alt modifier and make problem with the animation shortuct (atl+a). --- source/blender/editors/interface/interface_panel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c index e598574ed24..dae2e35f99b 100644 --- a/source/blender/editors/interface/interface_panel.c +++ b/source/blender/editors/interface/interface_panel.c @@ -1059,7 +1059,7 @@ int ui_handler_panel_region(bContext *C, wmEvent *event) inside= 1; if(inside && event->val==KM_PRESS) { - if(event->type == AKEY && !ELEM3(1, event->ctrl, event->oskey, event->shift)) { + if(event->type == AKEY && !ELEM4(1, event->ctrl, event->oskey, event->shift, event->alt)) { if(pa->flag & PNL_CLOSEDY) { if((block->maxy <= my) && (block->maxy+PNL_HEADER >= my)) From 229b7639e72c5290b3be24747fafd14c7aeaf71b Mon Sep 17 00:00:00 2001 From: Joerg Mueller Date: Sat, 19 Jun 2010 10:50:23 +0000 Subject: [PATCH 130/674] Merged revision 29562 from /branches/soc-2010-nexyon. --- release/scripts/modules/bpy_types.py | 5 ++ source/blender/blenkernel/intern/blender.c | 5 -- source/blender/blenloader/intern/readfile.c | 16 +++--- .../BlenderRoutines/BL_KetsjiEmbedStart.cpp | 53 ++++++++++--------- .../gameengine/Ketsji/KX_ObjectActuator.cpp | 4 ++ 5 files changed, 46 insertions(+), 37 deletions(-) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index f6090d76533..b1c5429d4ba 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -531,6 +531,11 @@ class Text(bpy_types.ID): self.clear() self.write(string) + @property + def users_logic(self): + """Logic bricks that use this text""" + import bpy + return tuple(obj for obj in bpy.data.objects if self in [cont.text for cont in obj.game.controllers if cont.type == 'PYTHON']) import collections diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index 046b8de2431..134d49cdf24 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -65,7 +65,6 @@ #include "BKE_global.h" #include "BKE_idprop.h" #include "BKE_library.h" -#include "BKE_ipo.h" #include "BKE_main.h" #include "BKE_node.h" #include "BKE_report.h" @@ -287,10 +286,6 @@ static void setup_app_data(bContext *C, BlendFileData *bfd, char *filename) //setscreen(G.curscreen); } - // XXX temporarily here - if(G.main->versionfile < 250) - do_versions_ipos_to_animato(G.main); // XXX fixme... complicated versionpatching - if(recover && bfd->filename[0] && G.relbase_valid) { /* in case of autosave or quit.blend, use original filename instead * use relbase_valid to make sure the file is saved, else we get in the filename */ diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 3ec253f1003..cff93978eff 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -138,7 +138,7 @@ #include "BKE_sequencer.h" #include "BKE_texture.h" // for open_plugin_tex #include "BKE_utildefines.h" // SWITCH_INT DATA ENDB DNA1 O_BINARY GLOB USER TEST REND - +#include "BKE_ipo.h" #include "BKE_sound.h" //XXX #include "BIF_butspace.h" // badlevel, for do_versions, patching event codes @@ -9734,11 +9734,6 @@ static void do_versions(FileData *fd, Library *lib, Main *main) do_versions_gpencil_2_50(main, screen); } - /* old Animation System (using IPO's) needs to be converted to the new Animato system - * (NOTE: conversion code in blenkernel/intern/ipo.c for now) - */ - //do_versions_ipos_to_animato(main); - /* shader, composit and texture node trees have id.name empty, put something in * to have them show in RNA viewer and accessible otherwise. */ @@ -10930,6 +10925,14 @@ static void do_versions(FileData *fd, Library *lib, Main *main) /* don't forget to set version number in blender.c! */ } +static void do_versions_after_linking(FileData *fd, Library *lib, Main *main) +{ + /* old Animation System (using IPO's) needs to be converted to the new Animato system + */ + if(main->versionfile < 250) + do_versions_ipos_to_animato(main); +} + static void lib_link_all(FileData *fd, Main *main) { oldnewmap_sort(fd); @@ -11076,6 +11079,7 @@ BlendFileData *blo_read_file_internal(FileData *fd, const char *filename) blo_join_main(&fd->mainlist); lib_link_all(fd, bfd->main); + do_versions_after_linking(fd, NULL, bfd->main); lib_verify_nodetree(bfd->main, 1); fix_relpaths_library(fd->relabase, bfd->main); /* make all relative paths, relative to the open blend file */ diff --git a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp index c916cdeb67c..a83ec7e132f 100644 --- a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp +++ b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp @@ -84,6 +84,7 @@ extern "C" { #include "BLI_blenlib.h" #include "BLO_readfile.h" #include "DNA_scene_types.h" +#include "BKE_ipo.h" /***/ #include "AUD_C-API.h" @@ -120,7 +121,7 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *c { /* context values */ struct wmWindow *win= CTX_wm_window(C); - struct Scene *scene= CTX_data_scene(C); + struct Scene *startscene= CTX_data_scene(C); struct Main* maggie1= CTX_data_main(C); @@ -133,7 +134,7 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *c int exitrequested = KX_EXIT_REQUEST_NO_REQUEST; Main* blenderdata = maggie1; - char* startscenename = scene->id.name+2; + char* startscenename = startscene->id.name+2; char pathname[FILE_MAXDIR+FILE_MAXFILE], oldsce[FILE_MAXDIR+FILE_MAXFILE]; STR_String exitstring = ""; BlendFileData *bfd= NULL; @@ -220,12 +221,12 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *c #endif //lock frame and camera enabled - storing global values - int tmp_lay= scene->lay; - Object *tmp_camera = scene->camera; + int tmp_lay= startscene->lay; + Object *tmp_camera = startscene->camera; if (v3d->scenelock==0){ - scene->lay= v3d->lay; - scene->camera= v3d->camera; + startscene->lay= v3d->lay; + startscene->camera= v3d->camera; } // some blender stuff @@ -246,7 +247,7 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *c } if(rv3d->persp==RV3D_CAMOB) { - if(scene->gm.framing.type == SCE_GAMEFRAMING_BARS) { /* Letterbox */ + if(startscene->gm.framing.type == SCE_GAMEFRAMING_BARS) { /* Letterbox */ camzoom = 1.0f; } else { @@ -317,22 +318,22 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *c } } - Scene *blscene= bfd ? bfd->curscene : (Scene *)BLI_findstring(&blenderdata->scene, startscenename, offsetof(ID, name) + 2); + Scene *scene= bfd ? bfd->curscene : (Scene *)BLI_findstring(&blenderdata->scene, startscenename, offsetof(ID, name) + 2); - if (blscene) + if (scene) { - int startFrame = blscene->r.cfra; + int startFrame = scene->r.cfra; ketsjiengine->SetAnimRecordMode(animation_record, startFrame); // Quad buffered needs a special window. - if(blscene->gm.stereoflag == STEREO_ENABLED){ - if (blscene->gm.stereomode != RAS_IRasterizer::RAS_STEREO_QUADBUFFERED) - rasterizer->SetStereoMode((RAS_IRasterizer::StereoMode) blscene->gm.stereomode); + if(scene->gm.stereoflag == STEREO_ENABLED){ + if (scene->gm.stereomode != RAS_IRasterizer::RAS_STEREO_QUADBUFFERED) + rasterizer->SetStereoMode((RAS_IRasterizer::StereoMode) scene->gm.stereomode); - rasterizer->SetEyeSeparation(blscene->gm.eyeseparation); + rasterizer->SetEyeSeparation(scene->gm.eyeseparation); } - rasterizer->SetBackColor(blscene->gm.framing.col[0], blscene->gm.framing.col[1], blscene->gm.framing.col[2], 0.0f); + rasterizer->SetBackColor(scene->gm.framing.col[0], scene->gm.framing.col[1], scene->gm.framing.col[2], 0.0f); } if (exitrequested != KX_EXIT_REQUEST_QUIT_GAME) @@ -361,19 +362,19 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *c if(GPU_glsl_support()) useglslmat = true; - else if(blscene->gm.matmode == GAME_MAT_GLSL) + else if(scene->gm.matmode == GAME_MAT_GLSL) usemat = false; - if(usemat && (blscene->gm.matmode != GAME_MAT_TEXFACE)) + if(usemat && (scene->gm.matmode != GAME_MAT_TEXFACE)) sceneconverter->SetMaterials(true); - if(useglslmat && (blscene->gm.matmode == GAME_MAT_GLSL)) + if(useglslmat && (scene->gm.matmode == GAME_MAT_GLSL)) sceneconverter->SetGLSLMaterials(true); KX_Scene* startscene = new KX_Scene(keyboarddevice, mousedevice, networkdevice, startscenename, - blscene, + scene, canvas); #ifndef DISABLE_PYTHON @@ -383,13 +384,13 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *c #endif // DISABLE_PYTHON //initialize Dome Settings - if(blscene->gm.stereoflag == STEREO_DOME) - ketsjiengine->InitDome(blscene->gm.dome.res, blscene->gm.dome.mode, blscene->gm.dome.angle, blscene->gm.dome.resbuf, blscene->gm.dome.tilt, blscene->gm.dome.warptext); + if(scene->gm.stereoflag == STEREO_DOME) + ketsjiengine->InitDome(scene->gm.dome.res, scene->gm.dome.mode, scene->gm.dome.angle, scene->gm.dome.resbuf, scene->gm.dome.tilt, scene->gm.dome.warptext); // initialize 3D Audio Settings - AUD_set3DSetting(AUD_3DS_SPEED_OF_SOUND, blscene->audio.speed_of_sound); - AUD_set3DSetting(AUD_3DS_DOPPLER_FACTOR, blscene->audio.doppler_factor); - AUD_set3DSetting(AUD_3DS_DISTANCE_MODEL, blscene->audio.distance_model); + AUD_set3DSetting(AUD_3DS_SPEED_OF_SOUND, scene->audio.speed_of_sound); + AUD_set3DSetting(AUD_3DS_DOPPLER_FACTOR, scene->audio.doppler_factor); + AUD_set3DSetting(AUD_3DS_DISTANCE_MODEL, scene->audio.distance_model); if (sceneconverter) { @@ -505,8 +506,8 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *c } //lock frame and camera enabled - restoring global values if (v3d->scenelock==0){ - scene->lay= tmp_lay; - scene->camera= tmp_camera; + startscene->lay= tmp_lay; + startscene->camera= tmp_camera; } // set the cursor back to normal diff --git a/source/gameengine/Ketsji/KX_ObjectActuator.cpp b/source/gameengine/Ketsji/KX_ObjectActuator.cpp index df071d50aa2..0d0cac3c084 100644 --- a/source/gameengine/Ketsji/KX_ObjectActuator.cpp +++ b/source/gameengine/Ketsji/KX_ObjectActuator.cpp @@ -467,6 +467,8 @@ int KX_ObjectActuator::pyattr_set_linV(void *self_v, const KX_PYATTRIBUTE_DEF *a if (!PyVecTo(value, self->m_linear_velocity)) return PY_SET_ATTR_FAIL; + self->UpdateFuzzyFlags(); + return PY_SET_ATTR_SUCCESS; } @@ -481,6 +483,8 @@ int KX_ObjectActuator::pyattr_set_angV(void *self_v, const KX_PYATTRIBUTE_DEF *a if (!PyVecTo(value, self->m_angular_velocity)) return PY_SET_ATTR_FAIL; + self->UpdateFuzzyFlags(); + return PY_SET_ATTR_SUCCESS; } From 0ecae611f993843140a347cd8c366cfe8fefe711 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 19 Jun 2010 12:06:34 +0000 Subject: [PATCH 131/674] rna info module now prints out property names into the console when run directly --- release/scripts/modules/rna_info.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/release/scripts/modules/rna_info.py b/release/scripts/modules/rna_info.py index 0f6d60066a3..9e106597a01 100644 --- a/release/scripts/modules/rna_info.py +++ b/release/scripts/modules/rna_info.py @@ -633,6 +633,8 @@ if __name__ == "__main__": for prop_id, prop in sorted(props): data += "%s.%s: %s %s\n" % (struct_id_str, prop.identifier, prop.type, prop.description) - - text = bpy.data.texts.new(name="api.py") - text.from_string(data) + if bpy.app.background: + print(data) + else: + text = bpy.data.texts.new(name="api.py") + text.from_string(data) From f50714a64b9058d1887b429a74bd675baa00a9cc Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 19 Jun 2010 12:11:40 +0000 Subject: [PATCH 132/674] minor edit to speed up api property name editing. --- release/scripts/modules/rna_info.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/modules/rna_info.py b/release/scripts/modules/rna_info.py index 9e106597a01..9c2a2688949 100644 --- a/release/scripts/modules/rna_info.py +++ b/release/scripts/modules/rna_info.py @@ -631,7 +631,7 @@ if __name__ == "__main__": props = [(prop.identifier, prop) for prop in v.properties] for prop_id, prop in sorted(props): - data += "%s.%s: %s %s\n" % (struct_id_str, prop.identifier, prop.type, prop.description) + data += "%s.%s -> %s: %s%s %s\n" % (struct_id_str, prop.identifier, prop.identifier, prop.type, ", (read-only)" if prop.is_readonly else "", prop.description) if bpy.app.background: print(data) From 801beadc520d3deb6518f0a3ea7a1956615ebe67 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sat, 19 Jun 2010 20:18:43 +0000 Subject: [PATCH 133/674] Unhide constraint axis and orientation operator properties. They are not just internal param, tweaking them later is not unconceivable. --- source/blender/editors/transform/transform_ops.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c index 85e13879367..29bcd4e8592 100644 --- a/source/blender/editors/transform/transform_ops.c +++ b/source/blender/editors/transform/transform_ops.c @@ -392,6 +392,7 @@ void Transform_Properties(struct wmOperatorType *ot, int flags) { prop= RNA_def_property(ot->srna, "axis", PROP_FLOAT, PROP_DIRECTION); RNA_def_property_array(prop, 3); + /* Make this not hidden when there's a nice axis selection widget */ RNA_def_property_flag(prop, PROP_HIDDEN); RNA_def_property_ui_text(prop, "Axis", "The axis around which the transformation occurs"); @@ -400,9 +401,7 @@ void Transform_Properties(struct wmOperatorType *ot, int flags) if (flags & P_CONSTRAINT) { prop= RNA_def_boolean_vector(ot->srna, "constraint_axis", 3, NULL, "Constraint Axis", ""); - RNA_def_property_flag(prop, PROP_HIDDEN); prop= RNA_def_property(ot->srna, "constraint_orientation", PROP_ENUM, PROP_NONE); - RNA_def_property_flag(prop, PROP_HIDDEN); RNA_def_property_ui_text(prop, "Orientation", "Transformation orientation"); RNA_def_enum_funcs(prop, rna_TransformOrientation_itemf); From 62ffe6304583af57e655bbda1b8a8cf074ee8172 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sat, 19 Jun 2010 20:25:00 +0000 Subject: [PATCH 134/674] etch-a-ton bugfix Add Convert operator and button (missing in 2.5) Fix stroke selection (uneeded separate operator and missing redraw) Map sketch operators to LEFTMOUSE and RIGHTMOUSE instead of SELECTMOUSE AND ACTIONMOUSE (more in line with other sketching operators, might work better with swapped mouse buttons) --- release/scripts/ui/space_view3d.py | 1 + .../editors/armature/armature_intern.h | 1 + .../blender/editors/armature/armature_ops.c | 12 +++--- .../editors/armature/editarmature_sketch.c | 40 ++++++++++++++++--- 4 files changed, 44 insertions(+), 10 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 14312d3c1ad..d4ac6b1eae0 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -2163,6 +2163,7 @@ class VIEW3D_PT_etch_a_ton(bpy.types.Panel): col.prop(toolsettings, "etch_autoname") col.prop(toolsettings, "etch_number") col.prop(toolsettings, "etch_side") + col.operator("sketch.convert", text="Convert") class VIEW3D_PT_context_properties(bpy.types.Panel): diff --git a/source/blender/editors/armature/armature_intern.h b/source/blender/editors/armature/armature_intern.h index 099cfeddad7..a4a2d020482 100644 --- a/source/blender/editors/armature/armature_intern.h +++ b/source/blender/editors/armature/armature_intern.h @@ -130,6 +130,7 @@ void SKETCH_OT_draw_stroke(struct wmOperatorType *ot); void SKETCH_OT_draw_preview(struct wmOperatorType *ot); void SKETCH_OT_finish_stroke(struct wmOperatorType *ot); void SKETCH_OT_cancel_stroke(struct wmOperatorType *ot); +void SKETCH_OT_convert(struct wmOperatorType *ot); void SKETCH_OT_select(struct wmOperatorType *ot); /* ******************************************************* */ diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c index acf30b45357..672dd22b704 100644 --- a/source/blender/editors/armature/armature_ops.c +++ b/source/blender/editors/armature/armature_ops.c @@ -96,6 +96,7 @@ void ED_operatortypes_armature(void) WM_operatortype_append(SKETCH_OT_draw_preview); WM_operatortype_append(SKETCH_OT_finish_stroke); WM_operatortype_append(SKETCH_OT_cancel_stroke); + WM_operatortype_append(SKETCH_OT_convert); WM_operatortype_append(SKETCH_OT_select); /* POSE */ @@ -190,14 +191,15 @@ void ED_keymap_armature(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "SKETCH_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SKETCH_OT_delete", DELKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SKETCH_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "SKETCH_OT_finish_stroke", SELECTMOUSE, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "SKETCH_OT_finish_stroke", RIGHTMOUSE, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SKETCH_OT_cancel_stroke", ESCKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "SKETCH_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); + // Already part of view3d select + //WM_keymap_add_item(keymap, "SKETCH_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); /* sketch poll checks mode */ - WM_keymap_add_item(keymap, "SKETCH_OT_gesture", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "SKETCH_OT_draw_stroke", ACTIONMOUSE, KM_PRESS, 0, 0); - kmi = WM_keymap_add_item(keymap, "SKETCH_OT_draw_stroke", ACTIONMOUSE, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "SKETCH_OT_gesture", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "SKETCH_OT_draw_stroke", LEFTMOUSE, KM_PRESS, 0, 0); + kmi = WM_keymap_add_item(keymap, "SKETCH_OT_draw_stroke", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); RNA_boolean_set(kmi->ptr, "snap", 1); WM_keymap_add_item(keymap, "SKETCH_OT_draw_preview", MOUSEMOVE, KM_ANY, 0, 0); kmi = WM_keymap_add_item(keymap, "SKETCH_OT_draw_preview", MOUSEMOVE, KM_ANY, KM_CTRL, 0); diff --git a/source/blender/editors/armature/editarmature_sketch.c b/source/blender/editors/armature/editarmature_sketch.c index 907fe50305a..fdc89936029 100644 --- a/source/blender/editors/armature/editarmature_sketch.c +++ b/source/blender/editors/armature/editarmature_sketch.c @@ -2154,7 +2154,7 @@ void sk_applyGesture(bContext *C, SK_Sketch *sketch) /********************************************/ -void sk_selectStroke(bContext *C, SK_Sketch *sketch, short mval[2], int extend) +int sk_selectStroke(bContext *C, SK_Sketch *sketch, short mval[2], int extend) { ViewContext vc; rcti rect; @@ -2199,7 +2199,10 @@ void sk_selectStroke(bContext *C, SK_Sketch *sketch, short mval[2], int extend) } + return 1; } + + return 0; } void sk_queueRedrawSketch(SK_Sketch *sketch) @@ -2301,7 +2304,7 @@ void sk_drawSketch(Scene *scene, View3D *v3d, SK_Sketch *sketch, int with_names) } } -#if 1 +#if 0 if (sketch->depth_peels.first != NULL) { float colors[8][3] = { @@ -2471,7 +2474,8 @@ void BIF_sk_selectStroke(bContext *C, short mval[2], short extend) if (sketch != NULL && ts->bone_sketching & BONE_SKETCHING) { - sk_selectStroke(C, sketch, mval, extend); + if (sk_selectStroke(C, sketch, mval, extend)) + ED_area_tag_redraw(CTX_wm_area(C)); } } @@ -2558,6 +2562,17 @@ SK_Sketch* viewcontextSketch(ViewContext *vc, int create) return sketch; } +static int sketch_convert(bContext *C, wmOperator *op, wmEvent *event) +{ + SK_Sketch *sketch = contextSketch(C, 0); + if (sketch != NULL) + { + sk_convert(C, sketch); + ED_area_tag_redraw(CTX_wm_area(C)); + } + return OPERATOR_FINISHED; +} + static int sketch_cancel(bContext *C, wmOperator *op, wmEvent *event) { SK_Sketch *sketch = contextSketch(C, 0); @@ -2590,8 +2605,8 @@ static int sketch_select(bContext *C, wmOperator *op, wmEvent *event) if (sketch) { short extend = 0; - sk_selectStroke(C, sketch, event->mval, extend); - ED_area_tag_redraw(CTX_wm_area(C)); + if (sk_selectStroke(C, sketch, event->mval, extend)) + ED_area_tag_redraw(CTX_wm_area(C)); } return OPERATOR_FINISHED; @@ -2859,6 +2874,21 @@ void SKETCH_OT_cancel_stroke(wmOperatorType *ot) // ot->flag= OPTYPE_UNDO; } +void SKETCH_OT_convert(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "convert"; + ot->idname= "SKETCH_OT_convert"; + + /* api callbacks */ + ot->invoke= sketch_convert; + + ot->poll= ED_operator_sketch_full_mode; + + /* flags */ + ot->flag= OPTYPE_UNDO; +} + void SKETCH_OT_finish_stroke(wmOperatorType *ot) { /* identifiers */ From be8a2de393780e550c5d0c1c884e2d32e71f32f1 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Sun, 20 Jun 2010 19:02:26 +0000 Subject: [PATCH 135/674] * Small fix for Color management RNA. 3D View didn't update on enabling/disabling Color Management. ND_SHADING > ND_SHADING_DRAW Note: "ND_RENDER_OPTIONS" should trigger the update in the 3D View (as the 3D View listener listens to that) but that doesn't work for some reason. --- source/blender/makesrna/intern/rna_scene.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 425cfa924a3..4d463939a0c 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -2487,7 +2487,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna) prop= RNA_def_property(srna, "color_management", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "color_mgt_flag", R_COLOR_MANAGEMENT); RNA_def_property_ui_text(prop, "Color Management", "Use color profiles and gamma corrected imaging pipeline"); - RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS|NC_MATERIAL|ND_SHADING, "rna_RenderSettings_color_management_update"); + RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS|NC_MATERIAL|ND_SHADING_DRAW, "rna_RenderSettings_color_management_update"); prop= RNA_def_property(srna, "use_file_extension", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "scemode", R_EXTENSION); From 78d3793d31b380fcddbdcb3cc1ee932d68f60937 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sun, 20 Jun 2010 20:33:59 +0000 Subject: [PATCH 136/674] netrender Save and Restore master from disk. When the "clear on exit" option is off, write a data file (blender_master.data) in the master's path on exit and reads it back on load. Note: Jobs and Slaves lists are restored, but not balancer settings (problem with the pickle module). --- release/scripts/io/netrender/master.py | 50 ++++++++++++++++++++++++-- release/scripts/io/netrender/repath.py | 4 ++- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/release/scripts/io/netrender/master.py b/release/scripts/io/netrender/master.py index 324d046e00f..f227f61a536 100644 --- a/release/scripts/io/netrender/master.py +++ b/release/scripts/io/netrender/master.py @@ -19,6 +19,7 @@ import sys, os import http, http.client, http.server, urllib, socket, socketserver, threading import subprocess, shutil, time, hashlib +import pickle import select # for select.error from netrender.utils import * @@ -870,14 +871,18 @@ class RenderHandler(http.server.BaseHTTPRequestHandler): self.send_head(http.client.NO_CONTENT) class RenderMasterServer(socketserver.ThreadingMixIn, http.server.HTTPServer): - def __init__(self, address, handler_class, path): + def __init__(self, address, handler_class, path, subdir=True): super().__init__(address, handler_class) self.jobs = [] self.jobs_map = {} self.slaves = [] self.slaves_map = {} self.job_id = 0 - self.path = path + "master_" + str(os.getpid()) + os.sep + + if subdir: + self.path = path + "master_" + str(os.getpid()) + os.sep + else: + self.path = path self.slave_timeout = 5 # 5 mins: need a parameter for that @@ -892,6 +897,22 @@ class RenderMasterServer(socketserver.ThreadingMixIn, http.server.HTTPServer): if not os.path.exists(self.path): os.mkdir(self.path) + def restore(self, jobs, slaves, balancer = None): + self.jobs = jobs + self.jobs_map = {} + + for job in self.jobs: + self.jobs_map[job.id] = job + self.job_id = max(self.job_id, int(job.id)) + + self.slaves = slaves + for slave in self.slaves: + self.slaves_map[slave.id] = slave + + if balancer: + self.balancer = balancer + + def nextJobID(self): self.job_id += 1 return str(self.job_id) @@ -1010,8 +1031,29 @@ class RenderMasterServer(socketserver.ThreadingMixIn, http.server.HTTPServer): def clearMaster(path): shutil.rmtree(path) +def createMaster(address, clear, path): + filepath = os.path.join(path, "blender_master.data") + + if not clear and os.path.exists(filepath): + print("loading saved master:", filepath) + with open(filepath, 'rb') as f: + path, jobs, slaves = pickle.load(f) + + httpd = RenderMasterServer(address, RenderHandler, path, subdir=False) + httpd.restore(jobs, slaves) + + return httpd + + return RenderMasterServer(address, RenderHandler, path) + +def saveMaster(path, httpd): + filepath = os.path.join(path, "blender_master.data") + + with open(filepath, 'wb') as f: + pickle.dump((httpd.path, httpd.jobs, httpd.slaves), f, pickle.HIGHEST_PROTOCOL) + def runMaster(address, broadcast, clear, path, update_stats, test_break): - httpd = RenderMasterServer(address, RenderHandler, path) + httpd = createMaster(address, clear, path) httpd.timeout = 1 httpd.stats = update_stats @@ -1040,4 +1082,6 @@ def runMaster(address, broadcast, clear, path, update_stats, test_break): httpd.server_close() if clear: clearMaster(httpd.path) + else: + saveMaster(path, httpd) diff --git a/release/scripts/io/netrender/repath.py b/release/scripts/io/netrender/repath.py index 7d399172906..7f9befd34fb 100755 --- a/release/scripts/io/netrender/repath.py +++ b/release/scripts/io/netrender/repath.py @@ -47,7 +47,9 @@ def update(job): new_path = path + ".remap" + ext - all = main_file.filepath == main_file.original_path + # Disable for now. Partial repath should work anyway + #all = main_file.filepath != main_file.original_path + all = False for rfile in job.files[1:]: if all or rfile.original_path != rfile.filepath: From 3f4121cea5d10b76fac30f4fc60390f0d5e8ad20 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Mon, 21 Jun 2010 07:51:40 +0000 Subject: [PATCH 137/674] Logic UI: Pin option for sensor and actuators (from 2.49) - implemented the old functionality of pin a sensor or actuator when "show state" is on. - fixed code for setting/resetting VISIBLE and LINKED flags for sensors and actuators (so states buttons is working for actuators and sensors) - move the flag setting code (^^^) to a pre-processing part of the logic ui code. --- .../editors/space_logic/logic_window.c | 57 +++++++++++++------ source/blender/makesrna/intern/rna_actuator.c | 6 ++ source/blender/makesrna/intern/rna_sensor.c | 6 ++ source/blender/makesrna/intern/rna_space.c | 4 +- 4 files changed, 53 insertions(+), 20 deletions(-) diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index 104bcc6286d..b34a5d4ef3e 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -3172,7 +3172,7 @@ static int is_sensor_linked(uiBlock *block, bSensor *sens) /* Sensors code */ -static void draw_sensor_header(uiLayout *layout, PointerRNA *ptr) +static void draw_sensor_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *logic_ptr) { uiLayout *box, *row; @@ -3182,6 +3182,11 @@ static void draw_sensor_header(uiLayout *layout, PointerRNA *ptr) uiItemR(row, ptr, "expanded", UI_ITEM_R_NO_BG, "", 0); uiItemR(row, ptr, "type", 0, "", 0); uiItemR(row, ptr, "name", 0, "", 0); + + // XXX in 2.49 we make the pin to dis/appear. In 2.50 may be better to simply enable/disable it + if (RNA_boolean_get(logic_ptr, "sensors_show_active_states") && (RNA_boolean_get(ptr, "expanded") || RNA_boolean_get(ptr, "pinned"))) + uiItemR(row, ptr, "pinned", UI_ITEM_R_NO_BG, "", 0); + uiItemO(row, "", ICON_X, "LOGIC_OT_sensor_remove"); } @@ -3584,7 +3589,7 @@ void draw_brick_controller(uiLayout *layout, PointerRNA *ptr) } /* Actuator code */ -static void draw_actuator_header(uiLayout *layout, PointerRNA *ptr) +static void draw_actuator_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *logic_ptr) { uiLayout *box, *row; @@ -3594,6 +3599,11 @@ static void draw_actuator_header(uiLayout *layout, PointerRNA *ptr) uiItemR(row, ptr, "expanded", UI_ITEM_R_NO_BG, "", 0); uiItemR(row, ptr, "type", 0, "", 0); uiItemR(row, ptr, "name", 0, "", 0); + + // XXX in 2.49 we make the pin to dis/appear. In 2.50 may be better to simply enable/disable it + if (RNA_boolean_get(logic_ptr, "actuators_show_active_states") && (RNA_boolean_get(ptr, "expanded") || RNA_boolean_get(ptr, "pinned"))) + uiItemR(row, ptr, "pinned", UI_ITEM_R_NO_BG, "", 0); + uiItemO(row, "", ICON_X, "LOGIC_OT_actuator_remove"); } @@ -4367,13 +4377,17 @@ static void logic_buttons_new(bContext *C, ARegion *ar) block= uiBeginBlock(C, ar, name, UI_EMBOSS); uiBlockSetHandleFunc(block, do_logic_buts, NULL); - /* clean ACT_LINKED and ACT_VISIBLE of all potentially visible actuators so that - we can determine which is actually linked/visible */ + /* loop over all objects and set visible/linked flags for the logic bricks */ for(a=0; aactuators.first; while(act) { act->flag &= ~(ACT_LINKED|ACT_VISIBLE); @@ -4385,6 +4399,23 @@ static void logic_buttons_new(bContext *C, ARegion *ar) sens->flag &= ~(SENS_VISIBLE); sens = sens->next; } + + /* mark the linked and visible actuators */ + cont= ob->controllers.first; + while(cont) { + flag = ACT_LINKED; + + /* this controller is visible, mark all its actuator */ + if ((ob->scaflag & OB_ALLSTATE) || (ob->state & cont->state_mask)) + flag |= ACT_VISIBLE; + + for (iact=0; iacttotlinks; iact++) { + act = cont->links[iact]; + if (act) + act->flag |= flag; + } + cont = cont->next; + } } /* ****************** Controllers ****************** */ @@ -4452,16 +4483,6 @@ static void logic_buttons_new(bContext *C, ARegion *ar) if (!(ob->scaflag & OB_ALLSTATE) && !(ob->state & cont->state_mask)) continue; - //if (!(cont->state_mask & (1<totlinks; iact++) { - bActuator *act = cont->links[iact]; - if (act) - act->flag |= ACT_VISIBLE; - } /* use two nested splits to align inlinks/links properly */ split = uiLayoutSplit(layout, 0.05, 0); @@ -4526,7 +4547,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar) RNA_pointer_create((ID *)ob, &RNA_Sensor, sens, &ptr); if ((ob->scaflag & OB_ALLSTATE) || - (slogic->scaflag & BUTS_SENS_STATE) || + !(slogic->scaflag & BUTS_SENS_STATE) || (sens->totlinks == 0) || /* always display sensor without links so that is can be edited */ (sens->flag & SENS_PIN && slogic->scaflag & BUTS_SENS_STATE) || /* states can hide some sensors, pinned sensors ignore the visible state */ (is_sensor_linked(block, sens)) @@ -4539,7 +4560,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar) uiLayoutSetContextPointer(col, "sensor", &ptr); /* should make UI template for sensor header.. function will do for now */ - draw_sensor_header(col, &ptr); + draw_sensor_header(col, &ptr, &logic_ptr); /* draw the brick contents */ draw_brick_sensor(col, &ptr, C); @@ -4586,7 +4607,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar) RNA_pointer_create((ID *)ob, &RNA_Actuator, act, &ptr); if ((ob->scaflag & OB_ALLSTATE) || - (slogic->scaflag & BUTS_ACT_STATE) || + !(slogic->scaflag & BUTS_ACT_STATE) || !(act->flag & ACT_LINKED) || /* always display actuators without links so that is can be edited */ (act->flag & ACT_VISIBLE) || /* this actuator has visible connection, display it */ (act->flag & ACT_PIN && slogic->scaflag & BUTS_ACT_STATE) /* states can hide some sensors, pinned sensors ignore the visible state */ @@ -4604,7 +4625,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar) uiLayoutSetContextPointer(col, "actuator", &ptr); /* should make UI template for actuator header.. function will do for now */ - draw_actuator_header(col, &ptr); + draw_actuator_header(col, &ptr, &logic_ptr); /* draw the brick contents */ draw_brick_actuator(col, &ptr, C); diff --git a/source/blender/makesrna/intern/rna_actuator.c b/source/blender/makesrna/intern/rna_actuator.c index 2ca327f8907..2a29f3332b5 100644 --- a/source/blender/makesrna/intern/rna_actuator.c +++ b/source/blender/makesrna/intern/rna_actuator.c @@ -476,6 +476,12 @@ void rna_def_actuator(BlenderRNA *brna) RNA_def_property_enum_funcs(prop, NULL, "rna_Actuator_type_set", "rna_Actuator_type_itemf"); RNA_def_property_ui_text(prop, "Type", ""); + prop= RNA_def_property(srna, "pinned", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_PIN); + RNA_def_property_ui_text(prop, "Pinned", "Display when not linked to a visible states controller"); + RNA_def_property_ui_icon(prop, ICON_UNPINNED, 1); + RNA_def_property_update(prop, NC_LOGIC, NULL); + prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_SHOW); RNA_def_property_ui_text(prop, "Expanded", "Set actuator expanded in the user interface"); diff --git a/source/blender/makesrna/intern/rna_sensor.c b/source/blender/makesrna/intern/rna_sensor.c index 31fa8f018dc..17137d0d259 100644 --- a/source/blender/makesrna/intern/rna_sensor.c +++ b/source/blender/makesrna/intern/rna_sensor.c @@ -260,6 +260,12 @@ static void rna_def_sensor(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Type", ""); RNA_def_property_update(prop, NC_LOGIC, NULL); + prop= RNA_def_property(srna, "pinned", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SENS_PIN); + RNA_def_property_ui_text(prop, "Pinned", "Display when not linked to a visible states controller"); + RNA_def_property_ui_icon(prop, ICON_UNPINNED, 1); + RNA_def_property_update(prop, NC_LOGIC, NULL); + prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SENS_SHOW); RNA_def_property_ui_text(prop, "Expanded", "Set sensor expanded in the user interface"); diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 3058fe62e0f..774ae94d5f3 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -2202,7 +2202,7 @@ static void rna_def_space_logic(BlenderRNA *brna) RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "sensors_show_active_states", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_negative_sdna(prop, NULL, "scaflag", BUTS_SENS_STATE); + RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_SENS_STATE); RNA_def_property_ui_text(prop, "Show Active States", "Show only sensors connected to active states"); RNA_def_property_update(prop, NC_LOGIC, NULL); @@ -2239,7 +2239,7 @@ static void rna_def_space_logic(BlenderRNA *brna) RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "actuators_show_active_states", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_negative_sdna(prop, NULL, "scaflag", BUTS_ACT_STATE); + RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_ACT_STATE); RNA_def_property_ui_text(prop, "Show Active States", "Show only actuators connected to active states"); RNA_def_property_update(prop, NC_LOGIC, NULL); From 72d21c35adcea937bbf2e2423472c9ca5ed315c6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 21 Jun 2010 17:37:50 +0000 Subject: [PATCH 138/674] sequencer swap data operator. needed for durian so we can swap out preview AVI's for EXR sequences. --- release/scripts/ui/space_sequencer.py | 4 + source/blender/blenkernel/BKE_sequencer.h | 6 +- source/blender/blenkernel/intern/sequencer.c | 62 +++++++++++++- .../editors/space_logic/logic_window.c | 2 +- .../editors/space_sequencer/sequencer_add.c | 4 +- .../editors/space_sequencer/sequencer_draw.c | 2 +- .../editors/space_sequencer/sequencer_edit.c | 84 ++++++++++++++----- .../space_sequencer/sequencer_intern.h | 1 + .../editors/space_sequencer/sequencer_ops.c | 1 + .../space_sequencer/sequencer_select.c | 8 +- 10 files changed, 138 insertions(+), 36 deletions(-) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index befb05cff44..8d5bed53c4c 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -291,6 +291,10 @@ class SEQUENCER_MT_strip(bpy.types.Menu): layout.operator_menu_enum("sequencer.swap", "side") + layout.separator() + + layout.operator("sequencer.swap_data") + class SequencerButtonsPanel(bpy.types.Panel): bl_space_type = 'SEQUENCE_EDITOR' diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index 354638013ec..9b96363dd23 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -191,6 +191,7 @@ int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test, struct Scene int shuffle_seq_time(ListBase * seqbasep, struct Scene *evil_scene); int seqbase_isolated_sel_check(struct ListBase *seqbase); void free_imbuf_seq(struct Scene *scene, struct ListBase * seqbasep, int check_mem_usage); +int seq_swap(struct Sequence *seq_a, struct Sequence *seq_b); void seq_update_sound(struct Scene* scene, struct Sequence *seq); void seq_update_muting(struct Scene* scene, struct Editing *ed); @@ -200,8 +201,9 @@ void clear_scene_in_allseqs(struct Scene *sce); struct Sequence *get_seq_by_name(struct ListBase *seqbase, const char *name, int recursive); -struct Sequence *active_seq_get(struct Scene *scene); -void active_seq_set(struct Scene *scene, struct Sequence *seq); +struct Sequence *seq_active_get(struct Scene *scene); +void seq_active_set(struct Scene *scene, struct Sequence *seq); +int seq_active_pair_get(struct Scene *scene, struct Sequence **seq_act, struct Sequence **seq_other); /* api for adding new sequence strips */ typedef struct SeqLoadInfo { diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index d1ab63ca65e..51428f56dc9 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -3790,6 +3790,33 @@ ListBase *seq_seqbase(ListBase *seqbase, Sequence *seq) return NULL; } +int seq_swap(Sequence *seq_a, Sequence *seq_b) +{ + if(seq_a->len != seq_b->len) + return 0; + + /* type checking, could be more advanced but disalow sound vs non-sound copy */ + if(seq_a->type != seq_b->type) { + if(seq_a->type == SEQ_SOUND || seq_b->type == SEQ_SOUND) { + return 0; + } + } + + SWAP(Sequence, *seq_a, *seq_b); + SWAP(void *, seq_a->prev, seq_b->prev); + SWAP(void *, seq_a->next, seq_b->next); + + SWAP(int, seq_a->start, seq_b->start); + SWAP(int, seq_a->startofs, seq_b->startofs); + SWAP(int, seq_a->endofs, seq_b->endofs); + SWAP(int, seq_a->startstill, seq_b->startstill); + SWAP(int, seq_a->endstill, seq_b->endstill); + SWAP(int, seq_a->machine, seq_b->machine); + SWAP(int, seq_a->startdisp, seq_b->enddisp); + + return 1; +} + /* XXX - hackish function needed for transforming strips! TODO - have some better solution */ void seq_offset_animdata(Scene *scene, Sequence *seq, int ofs) { @@ -3832,14 +3859,14 @@ Sequence *get_seq_by_name(ListBase *seqbase, const char *name, int recursive) } -Sequence *active_seq_get(Scene *scene) +Sequence *seq_active_get(Scene *scene) { Editing *ed= seq_give_editing(scene, FALSE); if(ed==NULL) return NULL; return ed->act_seq; } -void active_seq_set(Scene *scene, Sequence *seq) +void seq_active_set(Scene *scene, Sequence *seq) { Editing *ed= seq_give_editing(scene, FALSE); if(ed==NULL) return; @@ -3847,6 +3874,35 @@ void active_seq_set(Scene *scene, Sequence *seq) ed->act_seq= seq; } +int seq_active_pair_get(Scene *scene, Sequence **seq_act, Sequence **seq_other) +{ + Editing *ed= seq_give_editing(scene, FALSE); + + *seq_act= seq_active_get(scene); + + if(*seq_act == NULL) { + return 0; + } + else { + Sequence *seq; + + *seq_other= NULL; + + for(seq= ed->seqbasep->first; seq; seq= seq->next) { + if(seq->flag & SELECT && (seq != (*seq_act))) { + if(*seq_other) { + return 0; + } + else { + *seq_other= seq; + } + } + } + + return (*seq_other != NULL); + } +} + /* api like funcs for adding */ void seq_load_apply(Scene *scene, Sequence *seq, SeqLoadInfo *seq_load) @@ -3861,7 +3917,7 @@ void seq_load_apply(Scene *scene, Sequence *seq, SeqLoadInfo *seq_load) if(seq_load->flag & SEQ_LOAD_REPLACE_SEL) { seq_load->flag |= SELECT; - active_seq_set(scene, seq); + seq_active_set(scene, seq); } if(seq_load->flag & SEQ_LOAD_SOUND_CACHE) { diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index b34a5d4ef3e..154851bd248 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -4361,7 +4361,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar) PointerRNA logic_ptr, settings_ptr; - uiLayout *layout, *row, *split, *subsplit, *box, *col; + uiLayout *layout, *row, *box; uiBlock *block; uiBut *but; char name[32]; diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index 06c7725984a..2c7082ed3f6 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -203,7 +203,7 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op) if (RNA_boolean_get(op->ptr, "replace_sel")) { deselect_all_seq(scene); - active_seq_set(scene, seq); + seq_active_set(scene, seq); seq->flag |= SELECT; } @@ -572,7 +572,7 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op) if (RNA_boolean_get(op->ptr, "replace_sel")) { deselect_all_seq(scene); - active_seq_set(scene, seq); + seq_active_set(scene, seq); seq->flag |= SELECT; } diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index 4f8ded4e315..bf7f053ad71 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -900,7 +900,7 @@ static void draw_seq_strips(const bContext *C, Editing *ed, ARegion *ar) Scene *scene= CTX_data_scene(C); SpaceSeq *sseq= CTX_wm_space_seq(C); View2D *v2d= &ar->v2d; - Sequence *last_seq = active_seq_get(scene); + Sequence *last_seq = seq_active_get(scene); int sel = 0, j; float pixelx = (v2d->cur.xmax - v2d->cur.xmin)/(v2d->mask.xmax - v2d->mask.xmin); diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index dedde7e10c3..635fceedcd2 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -75,10 +75,6 @@ /* own include */ #include "sequencer_intern.h" -/* XXX */ -//static Sequence *_last_seq=0; -//static int _last_seq_init=0; -/* XXX */ static void error(const char *dummy) {} static void waitcursor(int val) {} static void activate_fileselect(int d1, char *d2, char *d3, void *d4) {} @@ -167,7 +163,7 @@ static void change_plugin_seq(Scene *scene, char *str) /* called from fileselect { Editing *ed= seq_give_editing(scene, FALSE); struct SeqEffectHandle sh; - Sequence *last_seq= active_seq_get(scene); + Sequence *last_seq= seq_active_get(scene); if(last_seq && last_seq->type != SEQ_PLUGIN) return; @@ -441,7 +437,7 @@ static void reload_sound_strip(Scene *scene, char *name) Editing *ed; Sequence *seq, *seqact; SpaceFile *sfile; - Sequence *last_seq= active_seq_get(scene); + Sequence *last_seq= seq_active_get(scene); ed= scene->ed; @@ -483,7 +479,7 @@ static void reload_image_strip(Scene *scene, char *name) Editing *ed= seq_give_editing(scene, FALSE); Sequence *seq=NULL, *seqact; SpaceFile *sfile=NULL; - Sequence *last_seq= active_seq_get(scene); + Sequence *last_seq= seq_active_get(scene); @@ -519,7 +515,7 @@ static void reload_image_strip(Scene *scene, char *name) void change_sequence(Scene *scene) { Editing *ed= seq_give_editing(scene, FALSE); - Sequence *last_seq= active_seq_get(scene); + Sequence *last_seq= seq_active_get(scene); Scene *sce; short event; @@ -621,7 +617,7 @@ int seq_effect_find_selected(Scene *scene, Sequence *activeseq, int type, Sequen *error_str= NULL; if (!activeseq) - seq2= active_seq_get(scene); + seq2= seq_active_get(scene); for(seq=ed->seqbasep->first; seq; seq=seq->next) { if(seq->flag & SELECT) { @@ -684,7 +680,7 @@ int seq_effect_find_selected(Scene *scene, Sequence *activeseq, int type, Sequen void reassign_inputs_seq_effect(Scene *scene) { Editing *ed= seq_give_editing(scene, FALSE); - Sequence *seq1, *seq2, *seq3, *last_seq = active_seq_get(scene); + Sequence *seq1, *seq2, *seq3, *last_seq = seq_active_get(scene); char *error_msg; if(last_seq==0 || !(last_seq->type & SEQ_EFFECT)) return; @@ -753,7 +749,7 @@ static Sequence *del_seq_find_replace_recurs(Scene *scene, Sequence *seq) static void recurs_del_seq_flag(Scene *scene, ListBase *lb, short flag, short deleteall) { Sequence *seq, *seqn; - Sequence *last_seq = active_seq_get(scene); + Sequence *last_seq = seq_active_get(scene); seq= lb->first; while(seq) { @@ -763,7 +759,7 @@ static void recurs_del_seq_flag(Scene *scene, ListBase *lb, short flag, short de seq->sound->id.us--; BLI_remlink(lb, seq); - if(seq==last_seq) active_seq_set(scene, NULL); + if(seq==last_seq) seq_active_set(scene, NULL); if(seq->type==SEQ_META) recurs_del_seq_flag(scene, &seq->seqbase, flag, 1); if(seq->ipo) seq->ipo->id.us--; seq_free_sequence(scene, seq); @@ -873,7 +869,7 @@ static void recurs_dupli_seq(Scene *scene, ListBase *old, ListBase *new, int do_ { Sequence *seq; Sequence *seqn = 0; - Sequence *last_seq = active_seq_get(scene); + Sequence *last_seq = seq_active_get(scene); for(seq= old->first; seq; seq= seq->next) { seq->tmp= NULL; @@ -891,7 +887,7 @@ static void recurs_dupli_seq(Scene *scene, ListBase *old, ListBase *new, int do_ if(do_context) { if (seq == last_seq) { - active_seq_set(scene, seqn); + seq_active_set(scene, seqn); } } } @@ -1190,7 +1186,7 @@ void set_filter_seq(Scene *scene) void seq_remap_paths(Scene *scene) { - Sequence *seq, *last_seq = active_seq_get(scene); + Sequence *seq, *last_seq = seq_active_get(scene); Editing *ed= seq_give_editing(scene, FALSE); char from[FILE_MAX], to[FILE_MAX], stripped[FILE_MAX]; @@ -1751,7 +1747,7 @@ static int sequencer_delete_exec(bContext *C, wmOperator *op) MetaStack *ms; int nothingSelected = TRUE; - seq=active_seq_get(scene); + seq=seq_active_get(scene); if (seq && seq->flag & SELECT) { /* avoid a loop since this is likely to be selected */ nothingSelected = FALSE; } else { @@ -1918,7 +1914,7 @@ static int sequencer_meta_toggle_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, FALSE); - Sequence *last_seq= active_seq_get(scene); + Sequence *last_seq= seq_active_get(scene); MetaStack *ms; if(last_seq && last_seq->type==SEQ_META && last_seq->flag & SELECT) { @@ -1930,7 +1926,7 @@ static int sequencer_meta_toggle_exec(bContext *C, wmOperator *op) ed->seqbasep= &last_seq->seqbase; - active_seq_set(scene, NULL); + seq_active_set(scene, NULL); } else { @@ -1950,7 +1946,7 @@ static int sequencer_meta_toggle_exec(bContext *C, wmOperator *op) for(seq= ed->seqbasep->first; seq; seq= seq->next) calc_sequence(scene, seq); - active_seq_set(scene, ms->parseq); + seq_active_set(scene, ms->parseq); ms->parseq->flag |= SELECT; recurs_sel_seq(ms->parseq); @@ -2020,7 +2016,7 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op) seqm->strip->len= seqm->len; seqm->strip->us= 1; - active_seq_set(scene, seqm); + seq_active_set(scene, seqm); if( seq_test_overlap(ed->seqbasep, seqm) ) shuffle_seq(ed->seqbasep, seqm, scene); @@ -2065,7 +2061,7 @@ static int sequencer_meta_separate_exec(bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, FALSE); - Sequence *seq, *last_seq = active_seq_get(scene); /* last_seq checks ed==NULL */ + Sequence *seq, *last_seq = seq_active_get(scene); /* last_seq checks ed==NULL */ if(last_seq==NULL || last_seq->type!=SEQ_META) return OPERATOR_CANCELLED; @@ -2521,7 +2517,7 @@ static int sequencer_swap_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, FALSE); - Sequence *active_seq = active_seq_get(scene); + Sequence *active_seq = seq_active_get(scene); Sequence *seq, *iseq; int side= RNA_enum_get(op->ptr, "side"); @@ -2597,7 +2593,7 @@ static int sequencer_rendersize_exec(bContext *C, wmOperator *op) { int retval = OPERATOR_CANCELLED; Scene *scene= CTX_data_scene(C); - Sequence *active_seq = active_seq_get(scene); + Sequence *active_seq = seq_active_get(scene); if(active_seq==NULL) return OPERATOR_CANCELLED; @@ -2756,3 +2752,45 @@ void SEQUENCER_OT_paste(wmOperatorType *ot) /* properties */ } + +static int sequencer_swap_data_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Sequence *seq_act; + Sequence *seq_other; + + if(seq_active_pair_get(scene, &seq_act, &seq_other) == 0) { + BKE_report(op->reports, RPT_ERROR, "Must select 2 strips"); + return OPERATOR_CANCELLED; + } + + if(seq_swap(seq_act, seq_other) == 0) { + BKE_report(op->reports, RPT_ERROR, "Strips were not compatible"); + return OPERATOR_CANCELLED; + } + + calc_sequence(scene, seq_act); + calc_sequence(scene, seq_other); + + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); + + return OPERATOR_FINISHED; +} + +void SEQUENCER_OT_swap_data(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Sequencer Swap Data"; + ot->idname= "SEQUENCER_OT_swap_data"; + ot->description="Swap 2 sequencer strips"; + + /* api callbacks */ + ot->exec= sequencer_swap_data_exec; + ot->poll= ED_operator_sequencer_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ +} + diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h index fd4ee70e258..12cc4219ecb 100644 --- a/source/blender/editors/space_sequencer/sequencer_intern.h +++ b/source/blender/editors/space_sequencer/sequencer_intern.h @@ -95,6 +95,7 @@ void SEQUENCER_OT_snap(struct wmOperatorType *ot); void SEQUENCER_OT_previous_edit(struct wmOperatorType *ot); void SEQUENCER_OT_next_edit(struct wmOperatorType *ot); void SEQUENCER_OT_swap(struct wmOperatorType *ot); +void SEQUENCER_OT_swap_data(struct wmOperatorType *ot); void SEQUENCER_OT_rendersize(struct wmOperatorType *ot); void SEQUENCER_OT_view_toggle(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c index 559a090a2ee..69457e5c6e8 100644 --- a/source/blender/editors/space_sequencer/sequencer_ops.c +++ b/source/blender/editors/space_sequencer/sequencer_ops.c @@ -73,6 +73,7 @@ void sequencer_operatortypes(void) WM_operatortype_append(SEQUENCER_OT_next_edit); WM_operatortype_append(SEQUENCER_OT_previous_edit); WM_operatortype_append(SEQUENCER_OT_swap); + WM_operatortype_append(SEQUENCER_OT_swap_data); WM_operatortype_append(SEQUENCER_OT_rendersize); WM_operatortype_append(SEQUENCER_OT_view_all); diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c index 170b9fbda80..355b6c1f67b 100644 --- a/source/blender/editors/space_sequencer/sequencer_select.c +++ b/source/blender/editors/space_sequencer/sequencer_select.c @@ -166,7 +166,7 @@ void select_single_seq(Scene *scene, Sequence *seq, int deselect_all) /* BRING B if(deselect_all) deselect_all_seq(scene); - active_seq_set(scene, seq); + seq_active_set(scene, seq); if((seq->type==SEQ_IMAGE) || (seq->type==SEQ_MOVIE)) { if(seq->strip) @@ -185,7 +185,7 @@ void select_single_seq(Scene *scene, Sequence *seq, int deselect_all) /* BRING B void select_neighbor_from_last(Scene *scene, int lr) { - Sequence *seq= active_seq_get(scene); + Sequence *seq= seq_active_get(scene); Sequence *neighbor; int change = 0; if (seq) { @@ -392,7 +392,7 @@ static int sequencer_select_invoke(bContext *C, wmOperator *op, wmEvent *event) deselect_all_seq(scene); if(seq) { - active_seq_set(scene, seq); + seq_active_set(scene, seq); if ((seq->type == SEQ_IMAGE) || (seq->type == SEQ_MOVIE)) { if(seq->strip) { @@ -794,7 +794,7 @@ static int sequencer_select_active_side_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, 0); - Sequence *seq_act= active_seq_get(scene); + Sequence *seq_act= seq_active_get(scene); if (ed==NULL || seq_act==NULL) return OPERATOR_CANCELLED; From 425da6206f75b9218cf4123ac1b9cdeaf7f86bb1 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Mon, 21 Jun 2010 20:10:59 +0000 Subject: [PATCH 139/674] [#22262] Sculpting shape keys using the Smooth brush switches the shape to the Basis PBVH used the same verts array as mesh data and shape key/reference key coords were applying on the mesh data, so on some refreshing undeformed mesh was displayed. Added utility functions to get vert coords from key block, apply new vert coords on keyblock and function to apply coords on bpvh, so now pbvh uses it's ovn vertex array and no changes are making to the mesh data. Additional change: Store key block name in SculptUndoNode, so now shape wouldn't be copied to wrong keyblock on undo --- source/blender/blenkernel/BKE_key.h | 2 + source/blender/blenkernel/BKE_paint.h | 4 +- .../blender/blenkernel/intern/cdderivedmesh.c | 14 +- source/blender/blenkernel/intern/depsgraph.c | 3 - source/blender/blenkernel/intern/key.c | 149 ++++++++++++++++++ source/blender/blenlib/BLI_pbvh.h | 6 + source/blender/blenlib/intern/pbvh.c | 65 ++++++++ source/blender/editors/sculpt_paint/sculpt.c | 138 ++++++++++------ .../editors/sculpt_paint/sculpt_intern.h | 2 - 9 files changed, 326 insertions(+), 57 deletions(-) diff --git a/source/blender/blenkernel/BKE_key.h b/source/blender/blenkernel/BKE_key.h index 6b8f18e9e17..c94955e611e 100644 --- a/source/blender/blenkernel/BKE_key.h +++ b/source/blender/blenkernel/BKE_key.h @@ -75,6 +75,8 @@ void key_to_latt(struct KeyBlock *kb, struct Lattice *lt); void latt_to_key(struct Lattice *lt, struct KeyBlock *kb); void key_to_curve(struct KeyBlock *kb, struct Curve *cu, struct ListBase *nurb); void curve_to_key(struct Curve *cu, struct KeyBlock *kb, struct ListBase *nurb); +float (*key_to_vertcos(struct Object *ob, struct KeyBlock *kb))[3]; +void vertcos_to_key(struct Object *ob, struct KeyBlock *kb, float (*vertCos)[3]); #ifdef __cplusplus }; diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h index 81fb724b3a5..cd412ca5a74 100644 --- a/source/blender/blenkernel/BKE_paint.h +++ b/source/blender/blenkernel/BKE_paint.h @@ -70,7 +70,7 @@ typedef struct SculptSession { int totvert, totface; float *face_normals; struct Object *ob; - struct KeyBlock *kb, *refkb; + struct KeyBlock *kb; /* Mesh connectivity */ struct ListBase *fmap; @@ -94,6 +94,8 @@ typedef struct SculptSession { struct StrokeCache *cache; struct GPUDrawObject *drawobject; + + int modifiers_active; } SculptSession; void free_sculptsession(struct Object *ob); diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 80f39531b34..9612dac2ac4 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -186,6 +186,16 @@ static ListBase *cdDM_getFaceMap(Object *ob, DerivedMesh *dm) return cddm->fmap; } +static int can_pbvh_draw(Object *ob, DerivedMesh *dm) +{ + CDDerivedMesh *cddm = (CDDerivedMesh*) dm; + Mesh *me= (ob)? ob->data: NULL; + + if(ob->sculpt->modifiers_active) return 0; + + return (cddm->mvert == me->mvert) || ob->sculpt->kb; +} + static struct PBVH *cdDM_getPBVH(Object *ob, DerivedMesh *dm) { CDDerivedMesh *cddm = (CDDerivedMesh*) dm; @@ -200,7 +210,7 @@ static struct PBVH *cdDM_getPBVH(Object *ob, DerivedMesh *dm) return NULL; if(ob->sculpt->pbvh) { cddm->pbvh= ob->sculpt->pbvh; - cddm->pbvh_draw = (cddm->mvert == me->mvert) || ob->sculpt->kb; + cddm->pbvh_draw = can_pbvh_draw(ob, dm); } /* always build pbvh from original mesh, and only use it for drawing if @@ -208,7 +218,7 @@ static struct PBVH *cdDM_getPBVH(Object *ob, DerivedMesh *dm) that this is actually for, to support a pbvh on a modified mesh */ if(!cddm->pbvh && ob->type == OB_MESH) { cddm->pbvh = BLI_pbvh_new(); - cddm->pbvh_draw = (cddm->mvert == me->mvert) || ob->sculpt->kb; + cddm->pbvh_draw = can_pbvh_draw(ob, dm); BLI_pbvh_build_mesh(cddm->pbvh, me->mface, me->mvert, me->totface, me->totvert); } diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index bdeacdf6946..4be5cce38a8 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -2286,9 +2286,6 @@ void DAG_id_flush_update(ID *id, short flag) /* no point in trying in this cases */ if(!id || id->us <= 1) id= NULL; - /* for locked shape keys we make an exception */ - else if(ob_get_key(ob) && (ob->shapeflag & OB_SHAPE_LOCK)) - id= NULL; } } diff --git a/source/blender/blenkernel/intern/key.c b/source/blender/blenkernel/intern/key.c index f604d307551..84484417f42 100644 --- a/source/blender/blenkernel/intern/key.c +++ b/source/blender/blenkernel/intern/key.c @@ -38,6 +38,7 @@ #include "BLI_blenlib.h" #include "BLI_editVert.h" +#include "BLI_math_vector.h" #include "DNA_anim_types.h" #include "DNA_key_types.h" @@ -1719,3 +1720,151 @@ void key_to_mesh(KeyBlock *kb, Mesh *me) VECCOPY(mvert->co, fp); } } + +/************************* vert coords ************************/ +float (*key_to_vertcos(Object *ob, KeyBlock *kb))[3] +{ + float (*vertCos)[3], *co; + float *fp= kb->data; + int tot= 0, a; + + /* Count of vertex coords in array */ + if(ob->type == OB_MESH) { + Mesh *me= (Mesh*)ob->data; + tot= me->totvert; + } else if(ob->type == OB_LATTICE) { + Lattice *lt= (Lattice*)ob->data; + tot= lt->pntsu*lt->pntsv*lt->pntsw; + } else if(ELEM(ob->type, OB_CURVE, OB_SURF)) { + Curve *cu= (Curve*)ob->data; + tot= count_curveverts(&cu->nurb); + } + + if (tot == 0) return NULL; + + vertCos= MEM_callocN(tot*sizeof(*vertCos), "key_to_vertcos vertCos"); + + /* Copy coords to array */ + co= (float*)vertCos; + + if(ELEM(ob->type, OB_MESH, OB_LATTICE)) { + for (a= 0; atype, OB_CURVE, OB_SURF)) { + Curve *cu= (Curve*)ob->data; + Nurb *nu= cu->nurb.first; + BezTriple *bezt; + BPoint *bp; + + while (nu) { + if(nu->bezt) { + int i; + bezt= nu->bezt; + a= nu->pntsu; + + while (a--) { + for (i= 0; i<3; i++) { + copy_v3_v3(co, fp); + fp+= 3; co+= 3; + } + + fp+= 3; /* skip alphas */ + + bezt++; + } + } + else { + bp= nu->bp; + a= nu->pntsu*nu->pntsv; + + while (a--) { + copy_v3_v3(co, fp); + + fp+= 4; + co+= 3; + + bp++; + } + } + + nu= nu->next; + } + } + + return vertCos; +} + +void vertcos_to_key(Object *ob, KeyBlock *kb, float (*vertCos)[3]) +{ + float *co= (float*)vertCos, *fp; + int tot= 0, a, elemsize; + + if (kb->data) MEM_freeN(kb->data); + + /* Count of vertex coords in array */ + if(ob->type == OB_MESH) { + Mesh *me= (Mesh*)ob->data; + tot= me->totvert; + elemsize= me->key->elemsize; + } else if(ob->type == OB_LATTICE) { + Lattice *lt= (Lattice*)ob->data; + tot= lt->pntsu*lt->pntsv*lt->pntsw; + elemsize= lt->key->elemsize; + } else if(ELEM(ob->type, OB_CURVE, OB_SURF)) { + Curve *cu= (Curve*)ob->data; + elemsize= cu->key->elemsize; + tot= count_curveverts(&cu->nurb); + } + + fp= kb->data= MEM_callocN(tot*elemsize, "key_to_vertcos vertCos"); + + if (tot == 0) return; + + /* Copy coords to keyblock */ + + if(ELEM(ob->type, OB_MESH, OB_LATTICE)) { + for (a= 0; atype, OB_CURVE, OB_SURF)) { + Curve *cu= (Curve*)ob->data; + Nurb *nu= cu->nurb.first; + BezTriple *bezt; + BPoint *bp; + + while (nu) { + if(nu->bezt) { + int i; + bezt= nu->bezt; + a= nu->pntsu; + + while (a--) { + for (i= 0; i<3; i++) { + copy_v3_v3(fp, co); + fp+= 3; co+= 3; + } + + fp+= 3; /* skip alphas */ + + bezt++; + } + } + else { + bp= nu->bp; + a= nu->pntsu*nu->pntsv; + + while (a--) { + copy_v3_v3(fp, co); + + fp+= 4; + co+= 3; + + bp++; + } + } + + nu= nu->next; + } + } +} diff --git a/source/blender/blenlib/BLI_pbvh.h b/source/blender/blenlib/BLI_pbvh.h index e32e85e70ec..519e3ddde1d 100644 --- a/source/blender/blenlib/BLI_pbvh.h +++ b/source/blender/blenlib/BLI_pbvh.h @@ -114,6 +114,12 @@ void BLI_pbvh_get_grid_updates(PBVH *bvh, int clear, void ***gridfaces, int *tot void BLI_pbvh_grids_update(PBVH *bvh, struct DMGridData **grids, struct DMGridAdjacency *gridadj, void **gridfaces); +/* vertex deformer */ +float (*BLI_pbvh_get_vertCos(struct PBVH *pbvh))[3]; +void BLI_pbvh_apply_vertCos(struct PBVH *pbvh, float (*vertCos)[3]); +int BLI_pbvh_isDeformed(struct PBVH *pbvh); + + /* Vertex Iterator */ /* this iterator has quite a lot of code, but it's designed to: diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c index 1fd18e2967c..92e2c88e8a1 100644 --- a/source/blender/blenlib/intern/pbvh.c +++ b/source/blender/blenlib/intern/pbvh.c @@ -29,6 +29,7 @@ #include "BLI_pbvh.h" #include "BKE_DerivedMesh.h" +#include "BKE_mesh.h" /* for mesh_calc_normals */ #include "gpu_buffers.h" @@ -120,6 +121,9 @@ struct PBVH { #ifdef PERFCNTRS int perf_modified; #endif + + /* flag are verts/faces deformed */ + int deformed; }; #define STACK_FIXED_DEPTH 100 @@ -576,6 +580,15 @@ void BLI_pbvh_free(PBVH *bvh) } } + if (bvh->deformed) { + if (bvh->verts) { + /* if pbvh was deformed, new memory was allocated for verts/faces -- free it */ + + MEM_freeN(bvh->verts); + MEM_freeN(bvh->faces); + } + } + MEM_freeN(bvh->nodes); MEM_freeN(bvh->prim_indices); MEM_freeN(bvh); @@ -1330,3 +1343,55 @@ void BLI_pbvh_grids_update(PBVH *bvh, DMGridData **grids, DMGridAdjacency *grida bvh->gridfaces= gridfaces; } +float (*BLI_pbvh_get_vertCos(PBVH *pbvh))[3] +{ + int a; + float (*vertCos)[3]= NULL; + + if (pbvh->verts) { + float *co; + MVert *mvert= pbvh->verts; + + vertCos= MEM_callocN(3*pbvh->totvert*sizeof(float), "BLI_pbvh_get_vertCoords"); + co= (float*)vertCos; + + for (a= 0; atotvert; a++, mvert++, co+= 3) { + copy_v3_v3(co, mvert->co); + } + } + + return vertCos; +} + +void BLI_pbvh_apply_vertCos(PBVH *pbvh, float (*vertCos)[3]) +{ + int a; + + if (!pbvh->deformed) { + if (pbvh->verts) { + /* if pbvh is not already deformed, verts/faces points to the */ + /* original data and applying new coords to this arrays would lead to */ + /* unneeded deformation -- duplicate verts/faces to avoid this */ + + pbvh->verts= MEM_dupallocN(pbvh->verts); + pbvh->faces= MEM_dupallocN(pbvh->faces); + + pbvh->deformed= 1; + } + } + + if (pbvh->verts) { + /* copy new verts coords */ + for (a= 0; a < pbvh->totvert; ++a) { + copy_v3_v3(pbvh->verts[a].co, vertCos[a]); + } + + /* coordinates are new -- normals should also be updated */ + mesh_calc_normals(pbvh->verts, pbvh->totvert, pbvh->faces, pbvh->totprim, NULL); + } +} + +int BLI_pbvh_isDeformed(PBVH *pbvh) +{ + return pbvh->deformed; +} diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index cf760f345b5..91769c92efe 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -275,6 +275,9 @@ typedef struct SculptUndoNode { /* layer brush */ float *layer_disp; + + /* shape keys */ + char *shapeName[32]; /* keep size in sync with keyblock dna */ } SculptUndoNode; static void update_cb(PBVHNode *node, void *data) @@ -326,16 +329,53 @@ static void sculpt_undo_restore(bContext *C, ListBase *lb) continue; if(unode->maxvert) { + char *shapeName= (char*)unode->shapeName; + /* regular mesh restore */ if(ss->totvert != unode->maxvert) continue; + if (ss->kb && strcmp(ss->kb->name, shapeName)) { + /* shape key has been changed before calling undo operator */ + + Key *key= ob_get_key(ob); + KeyBlock *kb= key_get_named_keyblock(key, shapeName); + + if (kb) { + ob->shapenr= BLI_findindex(&key->block, kb) + 1; + ob->shapeflag|= OB_SHAPE_LOCK; + + sculpt_update_mesh_elements(scene, ob, 0); + WM_event_add_notifier(C, NC_OBJECT|ND_DATA, ob); + } else { + /* key has been removed -- skip this undo node */ + continue; + } + } + index= unode->index; mvert= ss->mvert; - for(i=0; itotvert; i++) { - swap_v3_v3(mvert[index[i]].co, unode->co[i]); - mvert[index[i]].flag |= ME_VERT_PBVH_UPDATE; + if (ss->kb) { + float (*vertCos)[3]; + vertCos= key_to_vertcos(ob, ss->kb); + + for(i=0; itotvert; i++) + swap_v3_v3(vertCos[index[i]], unode->co[i]); + + /* propagate new coords to keyblock */ + vertcos_to_key(ob, ss->kb, vertCos); + + /* pbvh uses it's own mvert array, so coords should be */ + /* propagated to pbvh here */ + BLI_pbvh_apply_vertCos(ss->pbvh, vertCos); + + MEM_freeN(vertCos); + } else { + for(i=0; itotvert; i++) { + swap_v3_v3(mvert[index[i]].co, unode->co[i]); + mvert[index[i]].flag |= ME_VERT_PBVH_UPDATE; + } } } else if(unode->maxgrid && dm->getGridData) { @@ -365,9 +405,6 @@ static void sculpt_undo_restore(bContext *C, ListBase *lb) } if(update) { - if(ss->kb) sculpt_mesh_to_key(ss->ob, ss->kb); - if(ss->refkb) sculpt_key_to_mesh(ss->refkb, ob); - /* we update all nodes still, should be more clever, but also needs to work correct when exiting/entering sculpt mode and the nodes get recreated, though in that case it could do all */ @@ -377,7 +414,7 @@ static void sculpt_undo_restore(bContext *C, ListBase *lb) if((mmd=sculpt_multires_active(scene, ob))) multires_mark_as_modified(ob); - if(sculpt_modifiers_active(scene, ob)) + if(ss->modifiers_active || ((Mesh*)ob->data)->id.us > 1) DAG_id_flush_update(&ob->id, OB_RECALC_DATA); } } @@ -475,7 +512,11 @@ static SculptUndoNode *sculpt_undo_push_node(SculptSession *ss, PBVHNode *node) if(unode->grids) memcpy(unode->grids, grids, sizeof(int)*totgrid); - + + /* store active shape key */ + if(ss->kb) BLI_strncpy((char*)unode->shapeName, ss->kb->name, sizeof(ss->kb->name)); + else unode->shapeName[0]= '\0'; + return unode; } @@ -1367,6 +1408,17 @@ static void do_flatten_clay_brush(Sculpt *sd, SculptSession *ss, PBVHNode **node } } +/* copy the modified vertices from bvh to the active key */ +static void sculpt_update_keyblock(SculptSession *ss) +{ + float (*vertCos)[3]= BLI_pbvh_get_vertCos(ss->pbvh); + + if (vertCos) { + vertcos_to_key(ss->ob, ss->kb, vertCos); + MEM_freeN(vertCos); + } +} + static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache) { SculptSearchSphereData data; @@ -1424,13 +1476,15 @@ static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache) do_flatten_clay_brush(sd, ss, nodes, totnode, 1); break; } - - /* copy the modified vertices from mesh to the active key */ - if(ss->kb) mesh_to_key(ss->ob->data, ss->kb); - + + /* optimization: we could avoid copying new coords to keyblock at each */ + /* stroke step if there are no modifiers due to pbvh is used for displaying */ + /* so to increase speed we'll copy new coords to keyblock when stroke is done */ + if(ss->kb && ss->modifiers_active) sculpt_update_keyblock(ss); + if(nodes) MEM_freeN(nodes); - } + } } /* Flip all the editdata across the axis/axes specified by symm. Used to @@ -1506,40 +1560,18 @@ struct MultiresModifierData *sculpt_multires_active(Scene *scene, Object *ob) return NULL; } -void sculpt_key_to_mesh(KeyBlock *kb, Object *ob) -{ - Mesh *me= ob->data; - - key_to_mesh(kb, me); - mesh_calc_normals(me->mvert, me->totvert, me->mface, me->totface, NULL); -} - -void sculpt_mesh_to_key(Object *ob, KeyBlock *kb) -{ - Mesh *me= ob->data; - - mesh_to_key(me, kb); -} - void sculpt_update_mesh_elements(Scene *scene, Object *ob, int need_fmap) { - DerivedMesh *dm = mesh_get_derived_final(scene, ob, 0); + DerivedMesh *dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH); SculptSession *ss = ob->sculpt; MultiresModifierData *mmd= sculpt_multires_active(scene, ob); ss->ob= ob; - if((ob->shapeflag & OB_SHAPE_LOCK) && !mmd) { - ss->kb= ob_get_keyblock(ob); - ss->refkb= ob_get_reference_keyblock(ob); - } - else { - ss->kb= NULL; - ss->refkb= NULL; - } + ss->modifiers_active= sculpt_modifiers_active(scene, ob); - /* need to make PBVH with shape key coordinates */ - if(ss->kb) sculpt_key_to_mesh(ss->kb, ss->ob); + if((ob->shapeflag & OB_SHAPE_LOCK) && !mmd) ss->kb= ob_get_keyblock(ob); + else ss->kb= NULL; if(mmd) { ss->multires = mmd; @@ -1561,6 +1593,17 @@ void sculpt_update_mesh_elements(Scene *scene, Object *ob, int need_fmap) ss->pbvh = dm->getPBVH(ob, dm); ss->fmap = (need_fmap && dm->getFaceMap)? dm->getFaceMap(ob, dm): NULL; + + /* if pbvh is deformed, key block is already applied to it */ + if (ss->kb && !BLI_pbvh_isDeformed(ss->pbvh)) { + float (*vertCos)[3]= key_to_vertcos(ob, ss->kb); + + if (vertCos) { + /* apply shape keys coordinates to PBVH */ + BLI_pbvh_apply_vertCos(ss->pbvh, vertCos); + MEM_freeN(vertCos); + } + } } static int sculpt_mode_poll(bContext *C) @@ -1815,9 +1858,7 @@ static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, struct P static void sculpt_stroke_modifiers_check(bContext *C, SculptSession *ss) { - Scene *scene= CTX_data_scene(C); - - if(sculpt_modifiers_active(scene, ss->ob)) { + if(ss->modifiers_active) { Sculpt *sd = CTX_data_tool_settings(C)->sculpt; Brush *brush = paint_brush(&sd->paint); @@ -1995,7 +2036,6 @@ static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss) static void sculpt_flush_update(bContext *C) { - Scene *scene = CTX_data_scene(C); Object *ob = CTX_data_active_object(C); SculptSession *ss = ob->sculpt; ARegion *ar = CTX_wm_region(C); @@ -2005,7 +2045,7 @@ static void sculpt_flush_update(bContext *C) if(mmd) multires_mark_as_modified(ob); - if(sculpt_modifiers_active(scene, ob)) { + if(ss->modifiers_active) { DAG_id_flush_update(&ob->id, OB_RECALC_DATA); ED_region_tag_redraw(ar); } @@ -2089,10 +2129,13 @@ static void sculpt_stroke_done(bContext *C, struct PaintStroke *stroke) BLI_pbvh_update(ss->pbvh, PBVH_UpdateOriginalBB, NULL); - if(ss->refkb) sculpt_key_to_mesh(ss->refkb, ob); + /* optimization: if there is locked key and active modifiers present in */ + /* the stack, keyblock is updating at each step. otherwise we could update */ + /* keyblock only when stroke is finished */ + if(ss->kb && !ss->modifiers_active) sculpt_update_keyblock(ss); ss->partial_redraw = 0; - + /* try to avoid calling this, only for e.g. linked duplicates now */ if(((Mesh*)ob->data)->id.us > 1) DAG_id_flush_update(&ob->id, OB_RECALC_DATA); @@ -2225,9 +2268,6 @@ static void sculpt_init_session(Scene *scene, Object *ob) ob->sculpt = MEM_callocN(sizeof(SculptSession), "sculpt session"); sculpt_update_mesh_elements(scene, ob, 0); - - if(ob->sculpt->refkb) - sculpt_key_to_mesh(ob->sculpt->refkb, ob); } static int sculpt_toggle_mode(bContext *C, wmOperator *op) diff --git a/source/blender/editors/sculpt_paint/sculpt_intern.h b/source/blender/editors/sculpt_paint/sculpt_intern.h index d8043d2c988..c7c6833b695 100644 --- a/source/blender/editors/sculpt_paint/sculpt_intern.h +++ b/source/blender/editors/sculpt_paint/sculpt_intern.h @@ -58,8 +58,6 @@ void sculpt(Sculpt *sd); int sculpt_poll(struct bContext *C); void sculpt_update_mesh_elements(struct Scene *scene, struct Object *ob, int need_fmap); -void sculpt_key_to_mesh(struct KeyBlock *kb, struct Object *ob); -void sculpt_mesh_to_key(struct Object *ob, struct KeyBlock *kb); /* Stroke */ struct SculptStroke *sculpt_stroke_new(const int max); From 4bade8e13785fe79478d13aedac201bba4bf8ee9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 21 Jun 2010 22:05:34 +0000 Subject: [PATCH 140/674] sequence.swap(other) rna function. --- source/blender/blenkernel/intern/sequencer.c | 3 +- source/blender/makesrna/intern/makesrna.c | 2 +- source/blender/makesrna/intern/rna_internal.h | 3 + .../blender/makesrna/intern/rna_sequencer.c | 8 +-- .../makesrna/intern/rna_sequencer_api.c | 72 +++++++++++++++++++ 5 files changed, 79 insertions(+), 9 deletions(-) create mode 100644 source/blender/makesrna/intern/rna_sequencer_api.c diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 51428f56dc9..94d9b90fe7f 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -3812,7 +3812,8 @@ int seq_swap(Sequence *seq_a, Sequence *seq_b) SWAP(int, seq_a->startstill, seq_b->startstill); SWAP(int, seq_a->endstill, seq_b->endstill); SWAP(int, seq_a->machine, seq_b->machine); - SWAP(int, seq_a->startdisp, seq_b->enddisp); + SWAP(int, seq_a->startdisp, seq_b->startdisp); + SWAP(int, seq_a->enddisp, seq_b->enddisp); return 1; } diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c index 2914bc96a70..d37f390919d 100644 --- a/source/blender/makesrna/intern/makesrna.c +++ b/source/blender/makesrna/intern/makesrna.c @@ -2274,7 +2274,7 @@ RNAProcessItem PROCESS_ITEMS[]= { {"rna_screen.c", NULL, RNA_def_screen}, {"rna_sculpt_paint.c", NULL, RNA_def_sculpt_paint}, {"rna_sensor.c", NULL, RNA_def_sensor}, - {"rna_sequencer.c", NULL, RNA_def_sequencer}, + {"rna_sequencer.c", "rna_sequencer_api.c", RNA_def_sequencer}, {"rna_smoke.c", NULL, RNA_def_smoke}, {"rna_space.c", NULL, RNA_def_space}, {"rna_test.c", NULL, RNA_def_test}, diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h index 3f2bb60fba1..950811ef295 100644 --- a/source/blender/makesrna/intern/rna_internal.h +++ b/source/blender/makesrna/intern/rna_internal.h @@ -34,6 +34,7 @@ struct ID; struct IDProperty; struct SDNA; +struct Sequence; /* Data structures used during define */ @@ -232,6 +233,7 @@ void RNA_api_object_base(struct StructRNA *srna); void RNA_api_pose_channel(struct StructRNA *srna); void RNA_api_scene(struct StructRNA *srna); void RNA_api_scene_render(struct StructRNA *srna); +void RNA_api_sequence_strip(StructRNA *srna); void RNA_api_text(struct StructRNA *srna); void RNA_api_ui_layout(struct StructRNA *srna); void RNA_api_wm(struct StructRNA *srna); @@ -340,6 +342,7 @@ PointerRNA rna_pointer_inherit_refine(struct PointerRNA *ptr, struct StructRNA * int rna_parameter_size(struct PropertyRNA *parm); int rna_parameter_size_alloc(struct PropertyRNA *parm); + #endif /* RNA_INTERNAL_H */ diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index c52fd7f5cba..a508466754b 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -627,7 +627,6 @@ static void rna_def_sequence(BlenderRNA *brna) { StructRNA *srna; PropertyRNA *prop; - FunctionRNA *func; static const EnumPropertyItem seq_type_items[]= { {SEQ_IMAGE, "IMAGE", 0, "Image", ""}, @@ -811,12 +810,7 @@ static void rna_def_sequence(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Speed effect fader position", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - /* functions */ - func= RNA_def_function(srna, "getStripElem", "give_stripelem"); - RNA_def_function_ui_description(func, "Return the strip element from a given frame or None."); - prop= RNA_def_int(func, "frame", 0, -MAXFRAME, MAXFRAME, "Frame", "The frame to get the strip element from", -MAXFRAME, MAXFRAME); - RNA_def_property_flag(prop, PROP_REQUIRED); - RNA_def_function_return(func, RNA_def_pointer(func, "elem", "SequenceElement", "", "strip element of the current frame")); + RNA_api_sequence_strip(srna); } static void rna_def_editor(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_sequencer_api.c b/source/blender/makesrna/intern/rna_sequencer_api.c new file mode 100644 index 00000000000..c7c34d90115 --- /dev/null +++ b/source/blender/makesrna/intern/rna_sequencer_api.c @@ -0,0 +1,72 @@ +/** + * $Id: rna_sequencer.c 29537 2010-06-18 04:39:32Z broken $ + * + * ***** 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): Blender Foundation (2010) + * + * ***** END GPL LICENSE BLOCK ***** + */ + + +#include +#include +#include + +#include "RNA_define.h" + +#include "BLO_sys_types.h" /* needed for intptr_t used in ED_mesh.h */ + +#include "RNA_access.h" +#include "RNA_define.h" + +#include "rna_internal.h" + +#include "DNA_scene_types.h" +#include "DNA_sequence_types.h" + +#ifdef RNA_RUNTIME + +#include "BKE_report.h" +#include "BKE_sequencer.h" + +static void rna_Sequence_swap_internal(Sequence *seq_self, ReportList *reports, Sequence *seq_other) +{ + if(seq_swap(seq_self, seq_other) == 0) + BKE_report(reports, RPT_ERROR, "both strips must be the same length"); +} + +#else + +void RNA_api_sequence_strip(StructRNA *srna) +{ + FunctionRNA *func; + PropertyRNA *parm; + + func= RNA_def_function(srna, "getStripElem", "give_stripelem"); + RNA_def_function_ui_description(func, "Return the strip element from a given frame or None."); + parm= RNA_def_int(func, "frame", 0, -MAXFRAME, MAXFRAME, "Frame", "The frame to get the strip element from", -MAXFRAME, MAXFRAME); + RNA_def_property_flag(parm, PROP_REQUIRED); + RNA_def_function_return(func, RNA_def_pointer(func, "elem", "SequenceElement", "", "strip element of the current frame")); + + func= RNA_def_function(srna, "swap", "rna_Sequence_swap_internal"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + parm= RNA_def_pointer(func, "other", "Sequence", "Other", ""); + RNA_def_property_flag(parm, PROP_REQUIRED); +} + +#endif From df6e5aeafc346d3e28795a7653104f8b0495c255 Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Mon, 21 Jun 2010 22:16:13 +0000 Subject: [PATCH 141/674] SVN maintenance. --- source/blender/makesrna/intern/rna_sequencer_api.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_sequencer_api.c b/source/blender/makesrna/intern/rna_sequencer_api.c index c7c34d90115..425bad9fcd7 100644 --- a/source/blender/makesrna/intern/rna_sequencer_api.c +++ b/source/blender/makesrna/intern/rna_sequencer_api.c @@ -1,5 +1,5 @@ /** - * $Id: rna_sequencer.c 29537 2010-06-18 04:39:32Z broken $ + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * From 91deffc42966156356151dbd6a2731c79ce088bd Mon Sep 17 00:00:00 2001 From: William Reynish Date: Mon, 21 Jun 2010 23:20:44 +0000 Subject: [PATCH 142/674] Added ability to add and remove text boxes back from Blender 2.4x. One on those small things missing. --- release/scripts/ui/properties_data_curve.py | 41 ++++++--- source/blender/editors/curve/curve_intern.h | 3 + source/blender/editors/curve/curve_ops.c | 3 + source/blender/editors/curve/editfont.c | 93 +++++++++++++++++++++ 4 files changed, 127 insertions(+), 13 deletions(-) diff --git a/release/scripts/ui/properties_data_curve.py b/release/scripts/ui/properties_data_curve.py index c5bf4b8459b..d807fa1631b 100644 --- a/release/scripts/ui/properties_data_curve.py +++ b/release/scripts/ui/properties_data_curve.py @@ -367,21 +367,36 @@ class DATA_PT_textboxes(DataButtonsPanel): text = context.curve wide_ui = context.region.width > narrowui - - for box in text.textboxes: - split = layout.box().split() - - col = split.column(align=True) - col.label(text="Dimensions:") - col.prop(box, "width", text="Width") - col.prop(box, "height", text="Height") + + split = layout.split() + col = split.column() + col.operator("font.textbox_add", icon='ZOOMIN') + if wide_ui: + col = split.column() + + for i, box in enumerate(text.textboxes): + + boxy = layout.box() + + split = boxy.split() + + col = split.column() + + col2 = col.column(align=True) + col2.label(text="Dimensions:") + col2.prop(box, "width", text="Width") + col2.prop(box, "height", text="Height") if wide_ui: - col = split.column(align=True) - col.label(text="Offset:") - col.prop(box, "x", text="X") - col.prop(box, "y", text="Y") - + col = split.column() + + row = col.row() + row.label(text="Offset:") + row.operator("font.textbox_remove", text='', icon='X').index = i + + col2 = col.column(align=True) + col2.prop(box, "x", text="X") + col2.prop(box, "y", text="Y") classes = [ DATA_PT_context_curve, diff --git a/source/blender/editors/curve/curve_intern.h b/source/blender/editors/curve/curve_intern.h index dc07822bde2..10c1bd84262 100644 --- a/source/blender/editors/curve/curve_intern.h +++ b/source/blender/editors/curve/curve_intern.h @@ -66,6 +66,9 @@ void FONT_OT_change_spacing(struct wmOperatorType *ot); void FONT_OT_open(struct wmOperatorType *ot); void FONT_OT_unlink(struct wmOperatorType *ot); +void FONT_OT_textbox_add(struct wmOperatorType *ot); +void FONT_OT_textbox_remove(struct wmOperatorType *ot); + /* editcurve.c */ void CURVE_OT_hide(struct wmOperatorType *ot); void CURVE_OT_reveal(struct wmOperatorType *ot); diff --git a/source/blender/editors/curve/curve_ops.c b/source/blender/editors/curve/curve_ops.c index 7586023d012..026a10c013c 100644 --- a/source/blender/editors/curve/curve_ops.c +++ b/source/blender/editors/curve/curve_ops.c @@ -81,6 +81,9 @@ void ED_operatortypes_curve(void) WM_operatortype_append(FONT_OT_open); WM_operatortype_append(FONT_OT_unlink); + + WM_operatortype_append(FONT_OT_textbox_add); + WM_operatortype_append(FONT_OT_textbox_remove); WM_operatortype_append(CURVE_OT_hide); WM_operatortype_append(CURVE_OT_reveal); diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c index 46970a401a8..3a5f185c550 100644 --- a/source/blender/editors/curve/editfont.c +++ b/source/blender/editors/curve/editfont.c @@ -1363,6 +1363,99 @@ void FONT_OT_text_insert(wmOperatorType *ot) RNA_def_string(ot->srna, "text", "", 0, "Text", "Text to insert at the cursor position."); } + +/*********************** textbox add operator *************************/ +static int textbox_poll(bContext *C) +{ + Object *ob = CTX_data_active_object(C); + + if (!ED_operator_object_active_editable(C) ) return 0; + if (ob->type != OB_FONT) return 0; + + return 1; +} + +static int textbox_add_exec(bContext *C, wmOperator *op) +{ + Object *obedit= CTX_data_active_object(C); + Curve *cu= obedit->data; + int i; + + if (cu->totbox < 256) { + for (i = cu->totbox; i>cu->actbox; i--) cu->tb[i]= cu->tb[i-1]; + cu->tb[cu->actbox]= cu->tb[cu->actbox-1]; + cu->actbox++; + cu->totbox++; + } + + WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); + return OPERATOR_FINISHED; +} + +void FONT_OT_textbox_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Textbox"; + ot->description= "Add a new text box"; + ot->idname= "FONT_OT_textbox_add"; + + /* api callbacks */ + ot->exec= textbox_add_exec; + ot->poll= textbox_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + +} + + + +/*********************** textbox remove operator *************************/ + + + +static int textbox_remove_exec(bContext *C, wmOperator *op) +{ + Object *obedit= CTX_data_active_object(C); + Curve *cu= obedit->data; + int i; + int index = RNA_int_get(op->ptr, "index"); + + + if (cu->totbox > 1) { + for (i = index; i < cu->totbox; i++) cu->tb[i]= cu->tb[i+1]; + cu->totbox--; + if (cu->actbox >= index) + cu->actbox--; + } + + WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); + + return OPERATOR_FINISHED; +} + +void FONT_OT_textbox_remove(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Remove Textbox"; + ot->description= "Remove the textbox"; + ot->idname= "FONT_OT_textbox_remove"; + + /* api callbacks */ + ot->exec= textbox_remove_exec; + ot->poll= textbox_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + RNA_def_int(ot->srna, "index", 0, 0, INT_MAX, "Index", "The current text box.", 0, INT_MAX); + + +} + + + /***************** editmode enter/exit ********************/ void make_editText(Object *obedit) From 6a1d8d8e04f315355d46d9abf41762945f9c47fd Mon Sep 17 00:00:00 2001 From: Luca Bonavita Date: Tue, 22 Jun 2010 00:08:05 +0000 Subject: [PATCH 143/674] Origin button in the toolshelf MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Minipatch to add the Origin button in the Toolshelf in the Transform section. I missed this because 1) it was called "center" in 2.4 and it's difficult to find just searching if you don't know it's "origin" 2) it was in the the object » transform menu, not very practical to use often Discussed with Gensher, Campbell and Matt before committing :) --- release/scripts/ui/space_view3d_toolbar.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index 6984bbeea41..0ad26be27c4 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -41,6 +41,9 @@ class VIEW3D_PT_tools_objectmode(View3DPanel): col.operator("transform.rotate") col.operator("transform.resize", text="Scale") + col = layout.column(align=True) + col.operator("object.origin_set", text="Origin") + col = layout.column(align=True) col.label(text="Object:") col.operator("object.duplicate_move") From 1d6c2f214be060f54457d65e8afdf7df8fe93b92 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Tue, 22 Jun 2010 02:29:52 +0000 Subject: [PATCH 144/674] Timeline addition: Display cached frames This started off doing pointcache debugging but it's also very useful for users too. Previously it was very hard to see the state of the system when you're working caches such as physics point cache - is it baked? which frames are cached? is it out of date? Now, for better feedback, cached frames are drawn for the active object at the bottom of the timeline - a semitransparent area shows the entire cache extents, and more solid blocks on top show the frames that are cached. Darker versions indicate it's using a disk cache. It can be disabled in general in the timeline View -> Caches menu, or by each individual system that can be shown. There's still a bit to do on this, behaviour needs to be clarified still eg. deciding what shows when it's out of date, or when it's been played back but not cached, etc. etc. Part of this is due to a lack of definition in the point cache system itself, so we should try and clean up/clarify this behaviour and what it means to users, at the same time. Also would be interested in extending this to other caches such as fluid cache, sequencer memory cache etc. in the future, too. --- release/scripts/ui/space_time.py | 23 ++ source/blender/blenloader/intern/readfile.c | 13 +- source/blender/editors/include/ED_screen.h | 4 +- .../blender/editors/include/ED_screen_types.h | 1 + .../blender/editors/physics/particle_object.c | 29 ++- .../editors/physics/physics_pointcache.c | 13 + source/blender/editors/screen/screen_edit.c | 6 +- source/blender/editors/screen/screen_ops.c | 24 +- .../blender/editors/space_time/space_time.c | 231 +++++++++++++++++- source/blender/makesdna/DNA_space_types.h | 21 ++ source/blender/makesrna/intern/rna_space.c | 28 ++- source/blender/windowmanager/WM_types.h | 1 + 12 files changed, 367 insertions(+), 27 deletions(-) diff --git a/release/scripts/ui/space_time.py b/release/scripts/ui/space_time.py index 00bdcf785fa..9469a722c0f 100644 --- a/release/scripts/ui/space_time.py +++ b/release/scripts/ui/space_time.py @@ -98,10 +98,32 @@ class TIME_MT_view(bpy.types.Menu): layout.prop(st, "show_cframe_indicator") layout.prop(st, "only_selected") + layout.separator() + + layout.menu("TIME_MT_cache") + layout.separator() layout.operator("marker.camera_bind") + +class TIME_MT_cache(bpy.types.Menu): + bl_label = "Cache" + def draw(self, context): + layout = self.layout + + st = context.space_data + + layout.prop(st, "show_cache") + + layout.separator() + + col = layout.column() + col.enabled = st.show_cache + col.prop(st, "cache_softbody") + col.prop(st, "cache_particles") + col.prop(st, "cache_cloth") + col.prop(st, "cache_smoke") class TIME_MT_frame(bpy.types.Menu): bl_label = "Frame" @@ -171,6 +193,7 @@ class TIME_MT_autokey(bpy.types.Menu): classes = [ TIME_HT_header, TIME_MT_view, + TIME_MT_cache, TIME_MT_frame, TIME_MT_autokey, TIME_MT_playback] diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index cff93978eff..718ccf9641e 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10857,14 +10857,21 @@ static void do_versions(FileData *fd, Library *lib, Main *main) SpaceLink *sl; for (sl= sa->spacedata.first; sl; sl= sl->next) { if (sl->spacetype == SPACE_NODE) { - SpaceNode *snode; - - snode= (SpaceNode *)sl; + SpaceNode *snode= (SpaceNode *)sl; + if (snode->v2d.minzoom > 0.09f) snode->v2d.minzoom= 0.09f; if (snode->v2d.maxzoom < 2.31f) snode->v2d.maxzoom= 2.31f; } + else if (sl->spacetype == SPACE_TIME) { + SpaceTime *stime= (SpaceTime *)sl; + + /* enable all cache display */ + stime->cache_display |= TIME_CACHE_DISPLAY; + stime->cache_display |= (TIME_CACHE_SOFTBODY|TIME_CACHE_PARTICLES); + stime->cache_display |= (TIME_CACHE_CLOTH|TIME_CACHE_SMOKE); + } } } } diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index 4a4c546ec92..21a8fa70710 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -97,8 +97,8 @@ void ED_screen_set_scene(struct bContext *C, struct Scene *scene); void ED_screen_delete_scene(struct bContext *C, struct Scene *scene); void ED_screen_set_subwinactive(struct wmWindow *win, struct wmEvent *event); void ED_screen_exit(struct bContext *C, struct wmWindow *window, struct bScreen *screen); -void ED_screen_animation_timer(struct bContext *C, int redraws, int sync, int enable); -void ED_screen_animation_timer_update(struct bScreen *screen, int redraws); +void ED_screen_animation_timer(struct bContext *C, int redraws, int refresh, int sync, int enable); +void ED_screen_animation_timer_update(struct bScreen *screen, int redraws, int refresh); int ED_screen_full_newspace(struct bContext *C, ScrArea *sa, int type); void ED_screen_full_prevspace(struct bContext *C, ScrArea *sa); void ED_screen_full_restore(struct bContext *C, ScrArea *sa); diff --git a/source/blender/editors/include/ED_screen_types.h b/source/blender/editors/include/ED_screen_types.h index 03ea9a8f976..c55dafa6f51 100644 --- a/source/blender/editors/include/ED_screen_types.h +++ b/source/blender/editors/include/ED_screen_types.h @@ -35,6 +35,7 @@ typedef struct ScreenAnimData { ARegion *ar; /* do not read from this, only for comparing if region exists */ short redraws; + short refresh; short flag; /* flags for playback */ int sfra; /* frame that playback was started from */ } ScreenAnimData; diff --git a/source/blender/editors/physics/particle_object.c b/source/blender/editors/physics/particle_object.c index d8ca65fa8c9..059805fdf2d 100644 --- a/source/blender/editors/physics/particle_object.c +++ b/source/blender/editors/physics/particle_object.c @@ -69,7 +69,9 @@ static int particle_system_add_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; object_add_particle_system(scene, ob, NULL); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, ob); return OPERATOR_FINISHED; } @@ -107,7 +109,8 @@ static int particle_system_remove_exec(bContext *C, wmOperator *op) if(scene->basact && scene->basact->object==ob) WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_OBJECT, NULL); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, ob); return OPERATOR_FINISHED; } @@ -166,7 +169,7 @@ static int new_particle_settings_exec(bContext *C, wmOperator *op) DAG_scene_sort(scene); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, ob); return OPERATOR_FINISHED; } @@ -214,7 +217,7 @@ static int new_particle_target_exec(bContext *C, wmOperator *op) DAG_scene_sort(scene); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, ob); return OPERATOR_FINISHED; } @@ -262,7 +265,7 @@ static int remove_particle_target_exec(bContext *C, wmOperator *op) DAG_scene_sort(scene); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, ob); return OPERATOR_FINISHED; } @@ -300,7 +303,7 @@ static int target_move_up_exec(bContext *C, wmOperator *op) BLI_insertlink(&psys->targets, pt->prev->prev, pt); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, ob); break; } } @@ -338,7 +341,7 @@ static int target_move_down_exec(bContext *C, wmOperator *op) BLI_insertlink(&psys->targets, pt->next, pt); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, ob); break; } } @@ -376,7 +379,7 @@ static int dupliob_move_up_exec(bContext *C, wmOperator *op) BLI_remlink(&part->dupliweights, dw); BLI_insertlink(&part->dupliweights, dw->prev->prev, dw); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, NULL); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, NULL); break; } } @@ -415,7 +418,7 @@ static int copy_particle_dupliob_exec(bContext *C, wmOperator *op) dw->flag |= PART_DUPLIW_CURRENT; BLI_addhead(&part->dupliweights, dw); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, NULL); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, NULL); break; } } @@ -461,7 +464,7 @@ static int remove_particle_dupliob_exec(bContext *C, wmOperator *op) if(dw) dw->flag |= PART_DUPLIW_CURRENT; - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, NULL); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, NULL); return OPERATOR_FINISHED; } @@ -498,7 +501,7 @@ static int dupliob_move_down_exec(bContext *C, wmOperator *op) BLI_remlink(&part->dupliweights, dw); BLI_insertlink(&part->dupliweights, dw->next, dw); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, NULL); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, NULL); break; } } @@ -590,7 +593,7 @@ static int disconnect_hair_exec(bContext *C, wmOperator *op) disconnect_hair(scene, ob, psys); } - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, ob); return OPERATOR_FINISHED; } @@ -729,7 +732,7 @@ static int connect_hair_exec(bContext *C, wmOperator *op) connect_hair(scene, ob, psys); } - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, ob); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/physics/physics_pointcache.c b/source/blender/editors/physics/physics_pointcache.c index 5ebbb00939e..8e53e3c6f50 100644 --- a/source/blender/editors/physics/physics_pointcache.c +++ b/source/blender/editors/physics/physics_pointcache.c @@ -115,6 +115,7 @@ static int ptcache_bake_all_exec(bContext *C, wmOperator *op) BKE_ptcache_make_cache(&baker); WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); + WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, NULL); return OPERATOR_FINISHED; } @@ -133,6 +134,8 @@ static int ptcache_free_bake_all_exec(bContext *C, wmOperator *op) } BLI_freelistN(&pidlist); + + WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, base->object); } WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); @@ -211,6 +214,7 @@ static int ptcache_bake_exec(bContext *C, wmOperator *op) BLI_freelistN(&pidlist); WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); + WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, ob); return OPERATOR_FINISHED; } @@ -218,6 +222,7 @@ static int ptcache_free_bake_exec(bContext *C, wmOperator *op) { PointerRNA ptr= CTX_data_pointer_get_type(C, "point_cache", &RNA_PointCache); PointCache *cache= ptr.data; + Object *ob= ptr.id.data; if(cache->edit) { if(!cache->edit->edited || 1) {// XXX okee("Lose changes done in particle mode?")) { @@ -228,6 +233,8 @@ static int ptcache_free_bake_exec(bContext *C, wmOperator *op) } else cache->flag &= ~PTCACHE_BAKED; + + WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, ob); return OPERATOR_FINISHED; } @@ -235,8 +242,11 @@ static int ptcache_bake_from_cache_exec(bContext *C, wmOperator *op) { PointerRNA ptr= CTX_data_pointer_get_type(C, "point_cache", &RNA_PointCache); PointCache *cache= ptr.data; + Object *ob= ptr.id.data; cache->flag |= PTCACHE_BAKED; + + WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, ob); return OPERATOR_FINISHED; } @@ -303,6 +313,7 @@ static int ptcache_add_new_exec(bContext *C, wmOperator *op) BLI_freelistN(&pidlist); WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); + WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, ob); return OPERATOR_FINISHED; } @@ -331,6 +342,8 @@ static int ptcache_remove_exec(bContext *C, wmOperator *op) } BLI_freelistN(&pidlist); + + WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, ob); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 4a0a79b2163..ced8f9a8464 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1651,7 +1651,7 @@ void ED_refresh_viewport_fps(bContext *C) /* redraws: uses defines from stime->redraws * enable: 1 - forward on, -1 - backwards on, 0 - off */ -void ED_screen_animation_timer(bContext *C, int redraws, int sync, int enable) +void ED_screen_animation_timer(bContext *C, int redraws, int refresh, int sync, int enable) { bScreen *screen= CTX_wm_screen(C); wmWindowManager *wm= CTX_wm_manager(C); @@ -1669,6 +1669,7 @@ void ED_screen_animation_timer(bContext *C, int redraws, int sync, int enable) sad->ar= CTX_wm_region(C); sad->sfra = scene->r.cfra; sad->redraws= redraws; + sad->refresh= refresh; sad->flag |= (enable < 0)? ANIMPLAY_FLAG_REVERSE: 0; sad->flag |= (sync == 0)? ANIMPLAY_FLAG_NO_SYNC: (sync == 1)? ANIMPLAY_FLAG_SYNC: 0; screen->animtimer->customdata= sad; @@ -1702,13 +1703,14 @@ static ARegion *time_top_left_3dwindow(bScreen *screen) return aret; } -void ED_screen_animation_timer_update(bScreen *screen, int redraws) +void ED_screen_animation_timer_update(bScreen *screen, int redraws, int refresh) { if(screen && screen->animtimer) { wmTimer *wt= screen->animtimer; ScreenAnimData *sad= wt->customdata; sad->redraws= redraws; + sad->refresh= refresh; sad->ar= NULL; if(redraws & TIME_REGION) sad->ar= time_top_left_3dwindow(screen); diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 4d644cecf66..515b06feba1 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -2359,6 +2359,18 @@ void SCREEN_OT_header_toolbox(wmOperatorType *ot) /* ****************** anim player, with timer ***************** */ +static int match_area_with_refresh(int spacetype, int refresh) +{ + switch (spacetype) { + case SPACE_TIME: + if (refresh & SPACE_TIME) + return 1; + break; + } + + return 0; +} + static int match_region_with_redraws(int spacetype, int regiontype, int redraws) { if(regiontype==RGN_TYPE_WINDOW) { @@ -2505,6 +2517,9 @@ static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event) if(match_region_with_redraws(sa->spacetype, ar->regiontype, sad->redraws)) ED_region_tag_redraw(ar); } + + if (match_area_with_refresh(sa->spacetype, sad->refresh)) + ED_area_tag_refresh(sa); } /* update frame rate info too @@ -2548,11 +2563,12 @@ int ED_screen_animation_play(bContext *C, int sync, int mode) if(screen->animtimer) { /* stop playback now */ - ED_screen_animation_timer(C, 0, 0, 0); + ED_screen_animation_timer(C, 0, 0, 0, 0); sound_stop_scene(scene); } else { ScrArea *sa= CTX_wm_area(C); + int refresh= SPACE_TIME; if(mode == 1) // XXX only play audio forwards!? sound_play_scene(scene); @@ -2561,10 +2577,10 @@ int ED_screen_animation_play(bContext *C, int sync, int mode) if ((sa) && (sa->spacetype == SPACE_TIME)) { SpaceTime *stime= (SpaceTime *)sa->spacedata.first; - ED_screen_animation_timer(C, stime->redraws, sync, mode); + ED_screen_animation_timer(C, stime->redraws, refresh, sync, mode); /* update region if TIME_REGION was set, to leftmost 3d window */ - ED_screen_animation_timer_update(screen, stime->redraws); + ED_screen_animation_timer_update(screen, stime->redraws, refresh); } else { int redraws = TIME_REGION|TIME_ALL_3D_WIN; @@ -2574,7 +2590,7 @@ int ED_screen_animation_play(bContext *C, int sync, int mode) redraws |= TIME_SEQ; } - ED_screen_animation_timer(C, redraws, sync, mode); + ED_screen_animation_timer(C, redraws, refresh, sync, mode); if(screen->animtimer) { wmTimer *wt= screen->animtimer; diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c index 1460d08b396..245a60df6e5 100644 --- a/source/blender/editors/space_time/space_time.c +++ b/source/blender/editors/space_time/space_time.c @@ -31,6 +31,7 @@ #include "DNA_object_types.h" #include "DNA_scene_types.h" +#include "DNA_particle_types.h" #include "MEM_guardedalloc.h" @@ -40,6 +41,7 @@ #include "BKE_context.h" #include "BKE_global.h" #include "BKE_screen.h" +#include "BKE_pointcache.h" #include "BKE_utildefines.h" #include "ED_anim_api.h" @@ -84,6 +86,169 @@ static void time_draw_sfra_efra(const bContext *C, SpaceTime *stime, ARegion *ar fdrawline((float)PEFRA, v2d->cur.ymin, (float)PEFRA, v2d->cur.ymax); } +#define CACHE_DRAW_HEIGHT 3.0f + +static void time_draw_cache(const bContext *C, SpaceTime *stime, ARegion *ar) +{ + SpaceTimeCache *stc; + float yoffs=0.f; + + if (!(stime->cache_display & TIME_CACHE_DISPLAY)) + return; + + for (stc= stime->caches.first; stc; stc=stc->next) { + float col[4]; + + if (!stc->array || !stc->ok) + continue; + + glPushMatrix(); + glTranslatef(0.0, (float)V2D_SCROLL_HEIGHT+yoffs, 0.0); + glScalef(1.0, CACHE_DRAW_HEIGHT, 0.0); + + switch(stc->type) { + case PTCACHE_TYPE_SOFTBODY: + col[0] = 1.0; col[1] = 0.4; col[2] = 0.02; + col[3] = 0.1; + break; + case PTCACHE_TYPE_PARTICLES: + col[0] = 1.0; col[1] = 0.1; col[2] = 0.02; + col[3] = 0.1; + break; + case PTCACHE_TYPE_CLOTH: + col[0] = 0.1; col[1] = 0.1; col[2] = 0.75; + col[3] = 0.1; + break; + case PTCACHE_TYPE_SMOKE_DOMAIN: + case PTCACHE_TYPE_SMOKE_HIGHRES: + col[0] = 0.2; col[1] = 0.2; col[2] = 0.2; + col[3] = 0.1; + break; + } + glColor4fv(col); + + glEnable(GL_BLEND); + + glRectf((float)stc->startframe, 0.0, (float)stc->endframe, 1.0); + + col[3] = 0.4; + if (stc->flag & PTCACHE_BAKED) { + col[0] -= 0.4; col[1] -= 0.4; col[2] -= 0.4; + } + glColor4fv(col); + + glEnableClientState(GL_VERTEX_ARRAY); + glVertexPointer(2, GL_FLOAT, 0, stc->array); + glDrawArrays(GL_QUADS, 0, stc->len); + glDisableClientState(GL_VERTEX_ARRAY); + + glDisable(GL_BLEND); + + glPopMatrix(); + + yoffs += CACHE_DRAW_HEIGHT; + } +} + +static void time_cache_free(SpaceTime *stime) +{ + SpaceTimeCache *stc; + + for (stc= stime->caches.first; stc; stc=stc->next) { + if (stc->array) { + MEM_freeN(stc->array); + stc->array = NULL; + } + } + + BLI_freelistN(&stime->caches); +} + +static void time_cache_refresh(const bContext *C, SpaceTime *stime, ARegion *ar) +{ + Object *ob = CTX_data_active_object(C); + PTCacheID *pid; + ListBase pidlist; + float *fp; + int i; + + time_cache_free(stime); + + if (!(stime->cache_display & TIME_CACHE_DISPLAY) || (!ob)) + return; + + BKE_ptcache_ids_from_object(&pidlist, ob, NULL, 0); + + /* iterate over pointcaches on the active object, + * add spacetimecache and vertex array for each */ + for(pid=pidlist.first; pid; pid=pid->next) { + SpaceTimeCache *stc; + + switch(pid->type) { + case PTCACHE_TYPE_SOFTBODY: + if (!(stime->cache_display & TIME_CACHE_SOFTBODY)) continue; + break; + case PTCACHE_TYPE_PARTICLES: + if (!(stime->cache_display & TIME_CACHE_PARTICLES)) continue; + break; + case PTCACHE_TYPE_CLOTH: + if (!(stime->cache_display & TIME_CACHE_CLOTH)) continue; + break; + case PTCACHE_TYPE_SMOKE_DOMAIN: + case PTCACHE_TYPE_SMOKE_HIGHRES: + if (!(stime->cache_display & TIME_CACHE_SMOKE)) continue; + break; + } + + stc= MEM_callocN(sizeof(SpaceTimeCache), "spacetimecache"); + + stc->type = pid->type; + + if (pid->cache->flag & PTCACHE_BAKED) + stc->flag |= PTCACHE_BAKED; + if (pid->cache->flag & PTCACHE_DISK_CACHE) + stc->flag |= PTCACHE_DISK_CACHE; + + /* first allocate with maximum number of frames needed */ + BKE_ptcache_id_time(pid, CTX_data_scene(C), 0, &stc->startframe, &stc->endframe, NULL); + stc->len = (stc->endframe - stc->startframe + 1)*4; + fp = stc->array = MEM_callocN(stc->len*2*sizeof(float), "SpaceTimeCache array"); + + /* fill the vertex array with a quad for each cached frame */ + for (i=stc->startframe; i<=stc->endframe; i++) { + if (BKE_ptcache_id_exist(pid, i)) { + fp[0] = (float)i; + fp[1] = 0.0; + fp+=2; + + fp[0] = (float)i; + fp[1] = 1.0; + fp+=2; + + fp[0] = (float)(i+1); + fp[1] = 1.0; + fp+=2; + + fp[0] = (float)(i+1); + fp[1] = 0.0; + fp+=2; + } + } + /* update with final number of frames */ + stc->len = i*4; + stc->array = MEM_reallocN(stc->array, stc->len*2*sizeof(float)); + + stc->ok = 1; + + BLI_addtail(&stime->caches, stc); + } + + /* todo: sort time->caches list for consistent order */ + // ... + + BLI_freelistN(&pidlist); +} + /* helper function - find actkeycolumn that occurs on cframe, or the nearest one if not found */ static ActKeyColumn *time_cfra_find_ak (ActKeyColumn *ak, float cframe) { @@ -206,6 +371,52 @@ static void time_draw_keyframes(const bContext *C, SpaceTime *stime, ARegion *ar /* ---------------- */ +static void time_refresh(const bContext *C, ScrArea *sa) +{ + SpaceTime *stime = (SpaceTime *)sa->spacedata.first; + ARegion *ar; + + /* find the main timeline region and refresh cache display*/ + for (ar= sa->regionbase.first; ar; ar= ar->next) { + if (ar->regiontype==RGN_TYPE_WINDOW) { + time_cache_refresh(C, stime, ar); + break; + } + } +} + +/* editor level listener */ +static void time_listener(ScrArea *sa, wmNotifier *wmn) +{ + + /* mainly for updating cache display */ + switch (wmn->category) { + case NC_OBJECT: + switch (wmn->data) { + case ND_POINTCACHE: + ED_area_tag_refresh(sa); + ED_area_tag_redraw(sa); + break; + } + break; + case NC_SCENE: + switch (wmn->data) { + case ND_OB_ACTIVE: + case ND_FRAME: + ED_area_tag_refresh(sa); + break; + } + case NC_SPACE: + switch (wmn->data) { + case ND_SPACE_CHANGED: + ED_area_tag_refresh(sa); + break; + } + } +} + +/* ---------------- */ + /* add handlers, stuff you only do once or on area/region changes */ static void time_main_area_init(wmWindowManager *wm, ARegion *ar) { @@ -235,7 +446,7 @@ static void time_main_area_draw(const bContext *C, ARegion *ar) /* start and end frame */ time_draw_sfra_efra(C, stime, ar); - + /* grid */ unit= (stime->flag & TIME_DRAWFRAMES)? V2D_UNIT_FRAMES: V2D_UNIT_SECONDS; grid= UI_view2d_grid_calc(C, v2d, unit, V2D_GRID_CLAMP, V2D_ARG_DUMMY, V2D_ARG_DUMMY, ar->winx, ar->winy); @@ -254,6 +465,9 @@ static void time_main_area_draw(const bContext *C, ARegion *ar) UI_view2d_view_orthoSpecial(C, v2d, 1); draw_markers_time(C, 0); + /* caches */ + time_draw_cache(C, stime, ar); + /* reset view matrix */ UI_view2d_view_restore(C); @@ -277,7 +491,6 @@ static void time_main_area_listener(ARegion *ar, wmNotifier *wmn) break; case NC_SCENE: - /* any scene change for now */ ED_region_tag_redraw(ar); break; @@ -377,13 +590,23 @@ static SpaceLink *time_new(const bContext *C) /* not spacelink itself */ static void time_free(SpaceLink *sl) { + SpaceTime *stime= (SpaceTime *)sl; + + time_cache_free(stime); } /* spacetype; init callback in ED_area_initialize() */ /* init is called to (re)initialize an existing editor (file read, screen changes) */ /* validate spacedata, add own area level handlers */ static void time_init(wmWindowManager *wm, ScrArea *sa) { + SpaceTime *stime= (SpaceTime *)sa->spacedata.first; + time_cache_free(stime); + + /* enable all cache display */ + stime->cache_display |= TIME_CACHE_DISPLAY; + stime->cache_display |= (TIME_CACHE_SOFTBODY|TIME_CACHE_PARTICLES); + stime->cache_display |= (TIME_CACHE_CLOTH|TIME_CACHE_SMOKE); } static SpaceLink *time_duplicate(SpaceLink *sl) @@ -391,6 +614,8 @@ static SpaceLink *time_duplicate(SpaceLink *sl) SpaceTime *stime= (SpaceTime *)sl; SpaceTime *stimen= MEM_dupallocN(stime); + time_cache_free(stimen); + return (SpaceLink *)stimen; } @@ -410,6 +635,8 @@ void ED_spacetype_time(void) st->duplicate= time_duplicate; st->operatortypes= time_operatortypes; st->keymap= NULL; + st->listener= time_listener; + st->refresh= time_refresh; /* regions: main window */ art= MEM_callocN(sizeof(ARegionType), "spacetype time region"); diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h index e59cad09d6c..ba9d0380c9f 100644 --- a/source/blender/makesdna/DNA_space_types.h +++ b/source/blender/makesdna/DNA_space_types.h @@ -346,6 +346,17 @@ typedef struct SpaceScript { void *but_refs; } SpaceScript; +typedef struct SpaceTimeCache { + struct SpaceTimeCache *next, *prev; + int type; + int flag; + + float *array; + int len; + int startframe, endframe; + int ok; +} SpaceTimeCache; + typedef struct SpaceTime { SpaceLink *next, *prev; ListBase regionbase; /* storage of regions for inactive spaces */ @@ -354,6 +365,9 @@ typedef struct SpaceTime { View2D v2d; /* deprecated, copied to region */ + ListBase caches; + int cache_display, pad; + int flag, redraws; } SpaceTime; @@ -860,6 +874,13 @@ enum { #define TIME_CONTINUE_PHYSICS 128 #define TIME_NODES 256 +/* time->cache */ +#define TIME_CACHE_DISPLAY 1 +#define TIME_CACHE_SOFTBODY 2 +#define TIME_CACHE_PARTICLES 4 +#define TIME_CACHE_CLOTH 8 +#define TIME_CACHE_SMOKE 16 + /* sseq->mainb */ #define SEQ_DRAW_SEQUENCE 0 #define SEQ_DRAW_IMG_IMBUF 1 diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 774ae94d5f3..d5b3db1185e 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -603,7 +603,7 @@ static void rna_SpaceTime_redraw_update(Main *bmain, Scene *scene, PointerRNA *p SpaceTime *st= (SpaceTime*)ptr->data; bScreen *screen= (bScreen*)ptr->id.data; - ED_screen_animation_timer_update(screen, st->redraws); + ED_screen_animation_timer_update(screen, st->redraws, SPACE_TIME); } /* Space Dopesheet */ @@ -1878,6 +1878,32 @@ static void rna_def_space_time(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", TIME_CFRA_NUM); RNA_def_property_ui_text(prop, "Show Frame Number Indicator", "Show frame number beside the current frame indicator line"); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, NULL); + + /* displaying cache status */ + prop= RNA_def_property(srna, "show_cache", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_DISPLAY); + RNA_def_property_ui_text(prop, "Show Cache", "Show the status of cached frames in the timeline"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, NULL); + + prop= RNA_def_property(srna, "cache_softbody", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_SOFTBODY); + RNA_def_property_ui_text(prop, "Softbody", "Show the active object's softbody point cache"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, NULL); + + prop= RNA_def_property(srna, "cache_particles", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_PARTICLES); + RNA_def_property_ui_text(prop, "Particles", "Show the active object's particle point cache"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, NULL); + + prop= RNA_def_property(srna, "cache_cloth", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_CLOTH); + RNA_def_property_ui_text(prop, "Cloth", "Show the active object's cloth point cache"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, NULL); + + prop= RNA_def_property(srna, "cache_smoke", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_SMOKE); + RNA_def_property_ui_text(prop, "Smoke", "Show the active object's smoke cache"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, NULL); } static void rna_def_console_line(BlenderRNA *brna) diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index 199b17b9810..067df17917d 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -195,6 +195,7 @@ typedef struct wmNotifier { #define ND_KEYS (23<<16) #define ND_CONSTRAINT (24<<16) #define ND_PARTICLE (25<<16) +#define ND_POINTCACHE (26<<16) /* NC_MATERIAL Material */ #define ND_SHADING (30<<16) From a25357bbbc625a8435655d22188c65f18cc788a2 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Tue, 22 Jun 2010 02:35:05 +0000 Subject: [PATCH 145/674] Tweak for previous color management notifier tweak - works fine here with just ND_RENDER_OPTIONS --- source/blender/makesrna/intern/rna_scene.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 4d463939a0c..aaefd31af40 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -2486,8 +2486,9 @@ static void rna_def_scene_render_data(BlenderRNA *brna) prop= RNA_def_property(srna, "color_management", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "color_mgt_flag", R_COLOR_MANAGEMENT); - RNA_def_property_ui_text(prop, "Color Management", "Use color profiles and gamma corrected imaging pipeline"); - RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS|NC_MATERIAL|ND_SHADING_DRAW, "rna_RenderSettings_color_management_update"); + RNA_def_property_ui_text(prop, "Color Management", "Use linear workflow - gamma corrected imaging pipeline"); + RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_RenderSettings_color_management_update"); + prop= RNA_def_property(srna, "use_file_extension", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "scemode", R_EXTENSION); From eeed68a20fa1a00af86db1d1b342506b249edcf6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 22 Jun 2010 08:38:12 +0000 Subject: [PATCH 146/674] utility function to save blend's from a crash (from gdb run this) p write_crash_blend() Which will save the current blend name with _crash prefix. --- source/blender/windowmanager/intern/wm_files.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 17a04cab7be..93fe5e58a43 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -533,6 +533,22 @@ static ImBuf *blend_file_thumb(const char *path, Scene *scene, int **thumb_pt) return ibuf; } +/* easy access from gdb */ +int write_crash_blend(void) +{ + char path[FILE_MAX]; + BLI_strncpy(path, G.sce, sizeof(path)); + BLI_replace_extension(path, sizeof(path), "_crash.blend"); + if(BLO_write_file(G.main, G.sce, G.fileflags, NULL, NULL)) { + printf("written: %s\n", path); + return 1; + } + else { + printf("failed: %s\n", path); + return 0; + } +} + int WM_write_file(bContext *C, char *target, int fileflags, ReportList *reports) { Library *li; From 2849201339f21eec8d5287e3e2199573b625fc40 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Tue, 22 Jun 2010 09:12:22 +0000 Subject: [PATCH 147/674] hopefully fix some flickering in timeline cache display --- source/blender/editors/space_time/space_time.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c index 245a60df6e5..454dc6117ba 100644 --- a/source/blender/editors/space_time/space_time.c +++ b/source/blender/editors/space_time/space_time.c @@ -169,8 +169,6 @@ static void time_cache_refresh(const bContext *C, SpaceTime *stime, ARegion *ar) Object *ob = CTX_data_active_object(C); PTCacheID *pid; ListBase pidlist; - float *fp; - int i; time_cache_free(stime); @@ -183,6 +181,8 @@ static void time_cache_refresh(const bContext *C, SpaceTime *stime, ARegion *ar) * add spacetimecache and vertex array for each */ for(pid=pidlist.first; pid; pid=pid->next) { SpaceTimeCache *stc; + float *fp, *array; + int i, len; switch(pid->type) { case PTCACHE_TYPE_SOFTBODY: @@ -211,11 +211,12 @@ static void time_cache_refresh(const bContext *C, SpaceTime *stime, ARegion *ar) /* first allocate with maximum number of frames needed */ BKE_ptcache_id_time(pid, CTX_data_scene(C), 0, &stc->startframe, &stc->endframe, NULL); - stc->len = (stc->endframe - stc->startframe + 1)*4; - fp = stc->array = MEM_callocN(stc->len*2*sizeof(float), "SpaceTimeCache array"); - + len = (stc->endframe - stc->startframe + 1)*4; + fp = array = MEM_callocN(len*2*sizeof(float), "temporary timeline cache array"); + /* fill the vertex array with a quad for each cached frame */ for (i=stc->startframe; i<=stc->endframe; i++) { + if (BKE_ptcache_id_exist(pid, i)) { fp[0] = (float)i; fp[1] = 0.0; @@ -236,7 +237,11 @@ static void time_cache_refresh(const bContext *C, SpaceTime *stime, ARegion *ar) } /* update with final number of frames */ stc->len = i*4; - stc->array = MEM_reallocN(stc->array, stc->len*2*sizeof(float)); + stc->array = MEM_mallocN(stc->len*2*sizeof(float), "SpaceTimeCache array"); + memcpy(stc->array, array, stc->len*2*sizeof(float)); + + MEM_freeN(array); + array = NULL; stc->ok = 1; From 8bc1e44e3364ba6d7888c04f97ecea0fad382d41 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Tue, 22 Jun 2010 09:13:30 +0000 Subject: [PATCH 148/674] slight cleaning of texture type changing functionality, done while working on other stuff today --- source/blender/blenkernel/BKE_texture.h | 1 + source/blender/blenkernel/intern/texture.c | 21 ++++++++++++++++++++ source/blender/makesrna/intern/rna_texture.c | 18 +---------------- 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/source/blender/blenkernel/BKE_texture.h b/source/blender/blenkernel/BKE_texture.h index ace352395d2..39c12a2bfd8 100644 --- a/source/blender/blenkernel/BKE_texture.h +++ b/source/blender/blenkernel/BKE_texture.h @@ -64,6 +64,7 @@ void colorband_table_RGBA(struct ColorBand *coba, float **array, int *size); void default_tex(struct Tex *tex); struct Tex *add_texture(const char *name); +void tex_set_type(struct Tex *tex, int type); void default_mtex(struct MTex *mtex); struct MTex *add_mtex(void); struct Tex *copy_texture(struct Tex *tex); diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c index 6d8c339d2b9..31826f5be28 100644 --- a/source/blender/blenkernel/intern/texture.c +++ b/source/blender/blenkernel/intern/texture.c @@ -509,6 +509,27 @@ void default_tex(Tex *tex) tex->preview = NULL; } +void tex_set_type(Tex *tex, int type) +{ + switch(type) { + + case TEX_VOXELDATA: + if (tex->vd == NULL) + tex->vd = BKE_add_voxeldata(); + break; + case TEX_POINTDENSITY: + if (tex->pd == NULL) + tex->pd = BKE_add_pointdensity(); + break; + case TEX_ENVMAP: + if (tex->env == NULL) + tex->env = BKE_add_envmap(); + break; + } + + tex->type = type; +} + /* ------------------------------------------------------------------------- */ Tex *add_texture(const char *name) diff --git a/source/blender/makesrna/intern/rna_texture.c b/source/blender/makesrna/intern/rna_texture.c index 32221e51cb9..a12b8c55552 100644 --- a/source/blender/makesrna/intern/rna_texture.c +++ b/source/blender/makesrna/intern/rna_texture.c @@ -160,24 +160,8 @@ static void rna_Texture_nodes_update(Main *bmain, Scene *scene, PointerRNA *ptr) static void rna_Texture_type_set(PointerRNA *ptr, int value) { Tex *tex= (Tex*)ptr->data; - - switch(value) { - - case TEX_VOXELDATA: - if (tex->vd == NULL) - tex->vd = BKE_add_voxeldata(); - break; - case TEX_POINTDENSITY: - if (tex->pd == NULL) - tex->pd = BKE_add_pointdensity(); - break; - case TEX_ENVMAP: - if (tex->env == NULL) - tex->env = BKE_add_envmap(); - break; - } - tex->type = value; + tex_set_type(tex, value); } void rna_TextureSlot_update(Main *bmain, Scene *scene, PointerRNA *ptr) From 24be7abab60275a95a0dd833482f64a0a469638a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 22 Jun 2010 13:45:21 +0000 Subject: [PATCH 149/674] rename sequence.length -> frame_length_final added sequence.frame_length to get the original length of the strip --- release/scripts/ui/space_sequencer.py | 4 ++-- source/blender/makesrna/intern/rna_sequencer.c | 15 ++++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 8d5bed53c4c..ff15804fa08 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -358,8 +358,8 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel): col.prop(strip, "channel") col.prop(strip, "frame_start") subrow = col.split(percentage=0.66) - subrow.prop(strip, "length") - subrow.label(text="%.2f sec" % (strip.length / (render.fps / render.fps_base))) + subrow.prop(strip, "frame_length_final") + subrow.label(text="%.2f sec" % (strip.frame_length_final / (render.fps / render.fps_base))) col = layout.column(align=True) col.label(text="Offset:") diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index a508466754b..2e6847ea468 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -163,7 +163,7 @@ static void rna_Sequence_anim_endofs_final_set(PointerRNA *ptr, int value) rna_Sequence_frame_change_update(scene, seq); } -static void rna_Sequence_length_set(PointerRNA *ptr, int value) +static void rna_Sequence_frame_length_set(PointerRNA *ptr, int value) { Sequence *seq= (Sequence*)ptr->data; Scene *scene= (Scene*)ptr->id.data; @@ -172,7 +172,7 @@ static void rna_Sequence_length_set(PointerRNA *ptr, int value) rna_Sequence_frame_change_update(scene, seq); } -static int rna_Sequence_length_get(PointerRNA *ptr) +static int rna_Sequence_frame_length_get(PointerRNA *ptr) { Sequence *seq= (Sequence*)ptr->data; return seq_tx_get_final_right(seq, 0)-seq_tx_get_final_left(seq, 0); @@ -718,13 +718,18 @@ static void rna_def_sequence(BlenderRNA *brna) /* strip positioning */ - prop= RNA_def_property(srna, "length", PROP_INT, PROP_TIME); - RNA_def_property_int_sdna(prop, NULL, "len"); + prop= RNA_def_property(srna, "frame_final_length", PROP_INT, PROP_TIME); RNA_def_property_range(prop, 1, MAXFRAME); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); RNA_def_property_ui_text(prop, "Length", "The length of the contents of this strip before the handles are applied"); - RNA_def_property_int_funcs(prop, "rna_Sequence_length_get", "rna_Sequence_length_set",NULL); + RNA_def_property_int_funcs(prop, "rna_Sequence_frame_length_get", "rna_Sequence_frame_length_set",NULL); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + prop= RNA_def_property(srna, "frame_length", PROP_INT, PROP_TIME); + RNA_def_property_int_sdna(prop, NULL, "len"); + RNA_def_property_clear_flag(prop, PROP_EDITABLE|PROP_ANIMATABLE); + RNA_def_property_range(prop, 1, MAXFRAME); + RNA_def_property_ui_text(prop, "Length", "The length of the contents of this strip before the handles are applied"); prop= RNA_def_property(srna, "frame_start", PROP_INT, PROP_TIME); RNA_def_property_int_sdna(prop, NULL, "start"); From 657f745130fc94aef6d6841e4191145f97a62e97 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 22 Jun 2010 14:10:45 +0000 Subject: [PATCH 150/674] recent commit with timeline cache was crashing on opening files. --- source/blender/blenloader/intern/readfile.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 718ccf9641e..8ff2011ffea 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -5161,6 +5161,10 @@ static void direct_link_screen(FileData *fd, bScreen *sc) } snode->nodetree= snode->edittree= NULL; } + else if(sl->spacetype==SPACE_TIME) { + SpaceTime *stime= (SpaceTime *)sl; + stime->caches.first= stime->caches.last= NULL; + } else if(sl->spacetype==SPACE_LOGIC) { SpaceLogic *slogic= (SpaceLogic *)sl; From 096c4ddea43950d606f55184f93dcaaec35cff20 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 22 Jun 2010 14:27:04 +0000 Subject: [PATCH 151/674] error in last commit --- release/scripts/ui/space_sequencer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index ff15804fa08..99e768f2e10 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -358,8 +358,8 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel): col.prop(strip, "channel") col.prop(strip, "frame_start") subrow = col.split(percentage=0.66) - subrow.prop(strip, "frame_length_final") - subrow.label(text="%.2f sec" % (strip.frame_length_final / (render.fps / render.fps_base))) + subrow.prop(strip, "frame_final_length") + subrow.label(text="%.2f sec" % (strip.frame_final_length / (render.fps / render.fps_base))) col = layout.column(align=True) col.label(text="Offset:") From 50a8d1803b558c04abc23e882464faa45befcef0 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 22 Jun 2010 15:02:23 +0000 Subject: [PATCH 152/674] Make hair particles also support drawing their number next to them, previously this only worked for regular particles. (merge from render25 branch) --- source/blender/editors/space_view3d/drawobject.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 45bab2ed16e..7cae427112b 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -3927,6 +3927,20 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv cd2=cdata2=0; glLineWidth(1.0f); + + if((part->draw & PART_DRAW_NUM) && (v3d->flag2 & V3D_RENDER_OVERRIDE)==0){ + cache=psys->pathcache; + + for(a=0, pa=psys->particles; aimat, cache[a]->co); + view3d_cached_text_draw_add(vec_txt[0], vec_txt[1], vec_txt[2], val, 10, V3D_CACHE_TEXT_WORLDSPACE); + } + } } else if(pdd && ELEM(draw_as, 0, PART_DRAW_CIRC)==0){ glDisableClientState(GL_COLOR_ARRAY); From c0be8ee8cb1bf2f0a92e9475415ae00d1a645cbe Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 22 Jun 2010 15:04:03 +0000 Subject: [PATCH 153/674] Fix crash cancelling render while building object instance in raytree, object could still be added after it was already freed. (merge from render25 branch) --- source/blender/render/intern/source/rayshade.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/blender/render/intern/source/rayshade.c b/source/blender/render/intern/source/rayshade.c index b184b681846..bd6e804f13b 100644 --- a/source/blender/render/intern/source/rayshade.c +++ b/source/blender/render/intern/source/rayshade.c @@ -370,6 +370,10 @@ static void makeraytree_single(Render *re) if(has_special_rayobject(re, obi)) { RayObject *obj = makeraytree_object(re, obi); + + if(test_break(re)) + break; + RE_rayobject_add( re->raytree, obj ); } else From 844274c27ab557c53288ead3944c2981e700f962 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 22 Jun 2010 15:08:39 +0000 Subject: [PATCH 154/674] Don't evaluate displace modifier with strength 0, avoids multires subdividing vertex group here in some cases. (merge from render25 branch) --- source/blender/modifiers/intern/MOD_displace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/modifiers/intern/MOD_displace.c b/source/blender/modifiers/intern/MOD_displace.c index 531aaff504b..e73c3e29f66 100644 --- a/source/blender/modifiers/intern/MOD_displace.c +++ b/source/blender/modifiers/intern/MOD_displace.c @@ -124,7 +124,7 @@ static int isDisabled(ModifierData *md, int useRenderParams) { DisplaceModifierData *dmd = (DisplaceModifierData*) md; - return !dmd->texture; + return (!dmd->texture || dmd->strength == 0.0f); } static void updateDepgraph( From e0368d31a5b3a593d9650de688fdaf77e6975103 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 22 Jun 2010 15:09:41 +0000 Subject: [PATCH 155/674] Enabled openmp multithreading for multires/subsurf again, but only if there are >= 1 million faces estimated in the resulting mesh. (merge from render25 branch) --- source/blender/blenkernel/intern/CCGSubSurf.c | 18 +++++++++--------- source/blender/blenkernel/intern/CCGSubSurf.h | 4 ++++ source/blender/blenkernel/intern/multires.c | 4 ++-- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/source/blender/blenkernel/intern/CCGSubSurf.c b/source/blender/blenkernel/intern/CCGSubSurf.c index 8fad398f00a..bbd68fb797b 100644 --- a/source/blender/blenkernel/intern/CCGSubSurf.c +++ b/source/blender/blenkernel/intern/CCGSubSurf.c @@ -1159,7 +1159,7 @@ static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, int normalDataOffset = ss->normalDataOffset; int vertDataSize = ss->meshIFC.vertDataSize; - //#pragma omp parallel for private(ptrIdx) schedule(static) + #pragma omp parallel for private(ptrIdx) if(numEffectedF*edgeSize*edgeSize*4 >= CCG_OMP_LIMIT) for (ptrIdx=0; ptrIdx= CCG_OMP_LIMIT) for (ptrIdx=0; ptrIdxmeshIFC.vertDataSize; void *q = ss->q, *r = ss->r; - //#pragma omp parallel for private(ptrIdx) schedule(static) + #pragma omp parallel for private(ptrIdx) if(numEffectedF*edgeSize*edgeSize*4 >= CCG_OMP_LIMIT) for (ptrIdx=0; ptrIdx= CCG_OMP_LIMIT) { void *q, *r; - //#pragma omp critical + #pragma omp critical { q = MEM_mallocN(ss->meshIFC.vertDataSize, "CCGSubsurf q"); r = MEM_mallocN(ss->meshIFC.vertDataSize, "CCGSubsurf r"); } - //#pragma omp for schedule(static) + #pragma omp for schedule(static) for (ptrIdx=0; ptrIdx= CCG_OMP_LIMIT) for (i=0; iv0, nextLvl)); VertDataCopy(EDGE_getCo(e, nextLvl, edgeSize-1), VERT_getCo(e->v1, nextLvl)); } - //#pragma omp parallel for private(i) schedule(static) + #pragma omp parallel for private(i) if(numEffectedF*edgeSize*edgeSize*4 >= CCG_OMP_LIMIT) for (i=0; itotface*gridSize*gridSize*4 >= CCG_OMP_LIMIT) for(i = 0; i < me->totface; ++i) { const int numVerts = mface[i].v4 ? 4 : 3; MDisps *mdisp = &mdisps[i]; @@ -568,7 +568,7 @@ static void multiresModifier_disp_run(DerivedMesh *dm, Mesh *me, int invert, int /* when adding new faces in edit mode, need to allocate disps */ if(!mdisp->disps) - //#pragma omp critical + #pragma omp critical { multires_reallocate_mdisps(me, mdisps, totlvl); } From cb8f2bd1ab7097a6fb1ac81859cf3838ee7b75cf Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 22 Jun 2010 15:10:57 +0000 Subject: [PATCH 156/674] Armature weighting / mesh deform no longer use render raytracing acceleration structure but BVH instead. (merge from render25 branch) --- .../blender/editors/armature/meshlaplacian.c | 189 ++++++++---------- 1 file changed, 78 insertions(+), 111 deletions(-) diff --git a/source/blender/editors/armature/meshlaplacian.c b/source/blender/editors/armature/meshlaplacian.c index 1b1448477ea..546a15467c4 100644 --- a/source/blender/editors/armature/meshlaplacian.c +++ b/source/blender/editors/armature/meshlaplacian.c @@ -52,8 +52,6 @@ #include "BLI_polardecomp.h" #endif -#include "RE_raytrace.h" - #include "ONL_opennl.h" #include "BLO_sys_types.h" // for intptr_t support @@ -107,8 +105,7 @@ struct LaplacianSystem { float *p; /* values from all p vectors */ float *mindist; /* minimum distance to a bone for all vertices */ - RayObject *raytree; /* ray tracing acceleration structure */ - RayFace *faces; /* faces to add to the ray tracing struture */ + BVHTree *bvhtree; /* ray tracing acceleration structure */ MFace **vface; /* a face that the vertex belongs to */ } heat; @@ -396,29 +393,65 @@ float laplacian_system_get_solution(int v) #define WEIGHT_LIMIT_END 0.025f #define DISTANCE_EPSILON 1e-4f +typedef struct BVHCallbackUserData { + float start[3]; + float vec[3]; + LaplacianSystem *sys; +} BVHCallbackUserData; + +static void bvh_callback(void *userdata, int index, const BVHTreeRay *ray, BVHTreeRayHit *hit) +{ + BVHCallbackUserData *data = (struct BVHCallbackUserData*)userdata; + MFace *mf = data->sys->heat.mface + index; + float (*verts)[3] = data->sys->heat.verts; + float lambda, uv[2], n[3], dir[3]; + + mul_v3_v3fl(dir, data->vec, hit->dist); + + if(isect_ray_tri_v3(data->start, dir, verts[mf->v1], verts[mf->v2], verts[mf->v3], &lambda, uv)) { + normal_tri_v3(n, verts[mf->v1], verts[mf->v2], verts[mf->v3]); + if(lambda < 1.0f && dot_v3v3(n, data->vec) < -1e-5f) { + hit->index = index; + hit->dist *= lambda; + } + } + + mul_v3_v3fl(dir, data->vec, hit->dist); + + if(isect_ray_tri_v3(data->start, dir, verts[mf->v1], verts[mf->v3], verts[mf->v4], &lambda, uv)) { + normal_tri_v3(n, verts[mf->v1], verts[mf->v3], verts[mf->v4]); + if(lambda < 1.0f && dot_v3v3(n, data->vec) < -1e-5f) { + hit->index = index; + hit->dist *= lambda; + } + } +} + /* Raytracing for vertex to bone/vertex visibility */ static void heat_ray_tree_create(LaplacianSystem *sys) { MFace *mface = sys->heat.mface; + float (*verts)[3] = sys->heat.verts; int totface = sys->heat.totface; int totvert = sys->heat.totvert; int a; - sys->heat.raytree = RE_rayobject_vbvh_create(totface); - sys->heat.faces = MEM_callocN(sizeof(RayFace)*totface, "Heat RayFaces"); + sys->heat.bvhtree = BLI_bvhtree_new(totface, 0.0f, 4, 6); sys->heat.vface = MEM_callocN(sizeof(MFace*)*totvert, "HeatVFaces"); for(a=0; aheat.faces+a; + float bb[6]; - RayObject *obj = RE_rayface_from_coords( - rayface, &sys->heat, mf, - sys->heat.verts[mf->v1], sys->heat.verts[mf->v2], - sys->heat.verts[mf->v3], mf->v4 ? sys->heat.verts[mf->v4] : 0 - ); - RE_rayobject_add(sys->heat.raytree, obj); + INIT_MINMAX(bb, bb+3); + DO_MINMAX(verts[mf->v1], bb, bb+3); + DO_MINMAX(verts[mf->v2], bb, bb+3); + DO_MINMAX(verts[mf->v3], bb, bb+3); + if(mf->v4) { + DO_MINMAX(verts[mf->v4], bb, bb+3); + } + + BLI_bvhtree_insert(sys->heat.bvhtree, a, bb, 2); //Setup inverse pointers to use on isect.orig sys->heat.vface[mf->v1]= mf; @@ -426,12 +459,14 @@ static void heat_ray_tree_create(LaplacianSystem *sys) sys->heat.vface[mf->v3]= mf; if(mf->v4) sys->heat.vface[mf->v4]= mf; } - RE_rayobject_done(sys->heat.raytree); + + BLI_bvhtree_balance(sys->heat.bvhtree); } static int heat_ray_source_visible(LaplacianSystem *sys, int vertex, int source) { - Isect isec; + BVHTreeRayHit hit; + BVHCallbackUserData data; MFace *mface; float end[3]; int visible; @@ -440,27 +475,24 @@ static int heat_ray_source_visible(LaplacianSystem *sys, int vertex, int source) if(!mface) return 1; - /* setup isec */ - memset(&isec, 0, sizeof(isec)); - isec.mode= RE_RAY_SHADOW; - isec.lay= -1; - isec.orig.ob = &sys->heat; - isec.orig.face = mface; - isec.skip = RE_SKIP_CULLFACE; - - copy_v3_v3(isec.start, sys->heat.verts[vertex]); + data.sys= sys; + copy_v3_v3(data.start, sys->heat.verts[vertex]); if(sys->heat.root) /* bone */ - closest_to_line_segment_v3(end, isec.start, + closest_to_line_segment_v3(end, data.start, sys->heat.root[source], sys->heat.tip[source]); else /* vertex */ copy_v3_v3(end, sys->heat.source[source]); - sub_v3_v3v3(isec.vec, end, isec.start); - isec.labda = 1.0f - 1e-5; - madd_v3_v3v3fl(isec.start, isec.start, isec.vec, 1e-5); + sub_v3_v3v3(data.vec, end, data.start); + madd_v3_v3v3fl(data.start, data.start, data.vec, 1e-5); + mul_v3_fl(data.vec, 1.0f - 2e-5); - visible= !RE_rayobject_raycast(sys->heat.raytree, &isec); + /* pass normalized vec + distance to bvh */ + hit.index = -1; + hit.dist = normalize_v3(data.vec); + + visible= BLI_bvhtree_ray_cast(sys->heat.bvhtree, data.start, data.vec, 0.0f, &hit, bvh_callback, (void*)&data) == -1; return visible; } @@ -587,9 +619,8 @@ static void heat_laplacian_create(LaplacianSystem *sys) static void heat_system_free(LaplacianSystem *sys) { - RE_rayobject_free(sys->heat.raytree); + BLI_bvhtree_free(sys->heat.bvhtree); MEM_freeN(sys->heat.vface); - MEM_freeN(sys->heat.faces); MEM_freeN(sys->heat.mindist); MEM_freeN(sys->heat.H); @@ -1050,11 +1081,19 @@ typedef struct MeshDeformBind { /* direct solver */ int *varidx; - - /* raytrace */ - RayObject *raytree; } MeshDeformBind; +typedef struct MeshDeformIsect { + float start[3]; + float vec[3]; + float labda; + + void *face; + int isect; + float u, v; + +} MeshDeformIsect; + /* ray intersection */ /* our own triangle intersection, so we can fully control the epsilons and @@ -1117,63 +1156,7 @@ static int meshdeform_tri_intersect(float orig[3], float end[3], float vert0[3], return 1; } -/* blender's raytracer is not use now, even though it is much faster. it can - * give problems with rays falling through, so we use our own intersection - * function above with tweaked epsilons */ - -#if 0 -static MeshDeformBind *MESHDEFORM_BIND = NULL; - -static void meshdeform_ray_coords_func(RayFace *face, float **v1, float **v2, float **v3, float **v4) -{ - MFace *mface= (MFace*)face; - float (*cagecos)[3]= MESHDEFORM_BIND->cagecos; - - *v1= cagecos[mface->v1]; - *v2= cagecos[mface->v2]; - *v3= cagecos[mface->v3]; - *v4= (mface->v4)? cagecos[mface->v4]: NULL; -} - -static int meshdeform_ray_check_func(Isect *is, RayFace *face) -{ - return 1; -} - -static void meshdeform_ray_tree_create(MeshDeformBind *mdb) -{ - MFace *mface; - float min[3], max[3]; - int a, totface; - - /* create a raytrace tree from the mesh */ - INIT_MINMAX(min, max); - - for(a=0; atotcagevert; a++) - DO_MINMAX(mdb->cagecos[a], min, max) - - MESHDEFORM_BIND= mdb; - - mface= mdb->cagedm->getFaceArray(mdb->cagedm); - totface= mdb->cagedm->getNumFaces(mdb->cagedm); - - mdb->raytree= RE_ray_tree_create(64, totface, min, max, - meshdeform_ray_coords_func, meshdeform_ray_check_func); - - for(a=0; araytree, mface); - - RE_ray_tree_done(mdb->raytree); -} - -static void meshdeform_ray_tree_free(MeshDeformBind *mdb) -{ - MESHDEFORM_BIND= NULL; - RE_ray_tree_free(mdb->raytree); -} -#endif - -static int meshdeform_intersect(MeshDeformBind *mdb, Isect *isec) +static int meshdeform_intersect(MeshDeformBind *mdb, MeshDeformIsect *isec) { MFace *mface; float face[4][3], co[3], uvw[3], len, nor[3], end[3]; @@ -1212,7 +1195,7 @@ static int meshdeform_intersect(MeshDeformBind *mdb, Isect *isec) len= len_v3v3(isec->start, co)/len_v3v3(isec->start, end); if(len < isec->labda) { isec->labda= len; - isec->hit.face = mface; + isec->face = mface; isec->isect= (INPR(isec->vec, nor) <= 0.0f); is= 1; } @@ -1225,7 +1208,7 @@ static int meshdeform_intersect(MeshDeformBind *mdb, Isect *isec) static MDefBoundIsect *meshdeform_ray_tree_intersect(MeshDeformBind *mdb, float *co1, float *co2) { MDefBoundIsect *isect; - Isect isec; + MeshDeformIsect isec; float (*cagecos)[3]; MFace *mface; float vert[4][3], len, end[3]; @@ -1233,21 +1216,15 @@ static MDefBoundIsect *meshdeform_ray_tree_intersect(MeshDeformBind *mdb, float /* setup isec */ memset(&isec, 0, sizeof(isec)); - isec.mode= RE_RAY_MIRROR; /* we want the closest intersection */ - isec.lay= -1; isec.labda= 1e10f; VECADD(isec.start, co1, epsilon); VECADD(end, co2, epsilon); sub_v3_v3v3(isec.vec, end, isec.start); -#if 0 - /*if(RE_ray_tree_intersect(mdb->raytree, &isec)) {*/ -#endif - if(meshdeform_intersect(mdb, &isec)) { len= isec.labda; - mface=(MFace*)isec.hit.face; + mface=(MFace*)isec.face; /* create MDefBoundIsect */ isect= BLI_memarena_alloc(mdb->memarena, sizeof(*isect)); @@ -1790,11 +1767,6 @@ static void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, progress_bar(0, "Setting up mesh deform system"); -#if 0 - /* create ray tree */ - meshdeform_ray_tree_create(mdb); -#endif - totinside= 0; for(a=0; atotvert; a++) { copy_v3_v3(vec, mdb->vertexcos[a]); @@ -1817,11 +1789,6 @@ static void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, for(x=0; xsize; x++) meshdeform_add_intersections(mdb, x, y, z); -#if 0 - /* free ray tree */ - meshdeform_ray_tree_free(mdb); -#endif - /* compute exterior and interior tags */ meshdeform_bind_floodfill(mdb); From c45c6a20a4a3cd6920586fb5b8d1d1e79b1be419 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 22 Jun 2010 15:12:00 +0000 Subject: [PATCH 157/674] Update build systems for automatic weighting changes. (merge from render25 branch) --- source/blender/editors/armature/CMakeLists.txt | 1 - source/blender/editors/armature/Makefile | 1 - source/blender/editors/armature/SConscript | 1 - 3 files changed, 3 deletions(-) diff --git a/source/blender/editors/armature/CMakeLists.txt b/source/blender/editors/armature/CMakeLists.txt index f9136b69d9e..9e22bbd7d44 100644 --- a/source/blender/editors/armature/CMakeLists.txt +++ b/source/blender/editors/armature/CMakeLists.txt @@ -27,7 +27,6 @@ SET(INC ../../blenlib ../../makesdna ../../makesrna - ../../render/extern/include ../../windowmanager ../../../../intern/guardedalloc ../../../../intern/opennl/extern diff --git a/source/blender/editors/armature/Makefile b/source/blender/editors/armature/Makefile index 0291bcb1830..4838282de92 100644 --- a/source/blender/editors/armature/Makefile +++ b/source/blender/editors/armature/Makefile @@ -50,7 +50,6 @@ CPPFLAGS += -I../../imbuf CPPFLAGS += -I../../python CPPFLAGS += -I../../gpu CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../render/extern/include CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include # own include diff --git a/source/blender/editors/armature/SConscript b/source/blender/editors/armature/SConscript index fd4b885b730..33e237a14db 100644 --- a/source/blender/editors/armature/SConscript +++ b/source/blender/editors/armature/SConscript @@ -5,7 +5,6 @@ sources = env.Glob('*.c') incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf' incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include' -incs += ' ../../render/extern/include' incs += ' ../../gpu ../../makesrna #/intern/opennl/extern' if env['OURPLATFORM'] == 'linux2': From ed28a0296fc98411da11243f20698be7f7f645cf Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 22 Jun 2010 15:17:12 +0000 Subject: [PATCH 158/674] BLI_init_threads/BLI_end_threads with NULL listbase now raises thread level and enables mutex protection on MEM_* functions, useful when you want to call these functions from an OpenMP thread. (merge from render25 branch) --- source/blender/blenlib/intern/threads.c | 28 ++++++++++++------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/source/blender/blenlib/intern/threads.c b/source/blender/blenlib/intern/threads.c index 0ad6f84e8f0..726ed817f8b 100644 --- a/source/blender/blenlib/intern/threads.c +++ b/source/blender/blenlib/intern/threads.c @@ -158,20 +158,20 @@ void BLI_init_threads(ListBase *threadbase, void *(*do_thread)(void *), int tot) tslot->do_thread= do_thread; tslot->avail= 1; } - - if(thread_levels == 0) { - MEM_set_lock_callback(BLI_lock_malloc_thread, BLI_unlock_malloc_thread); + } + + if(thread_levels == 0) { + MEM_set_lock_callback(BLI_lock_malloc_thread, BLI_unlock_malloc_thread); #if defined(__APPLE__) && (PARALLEL == 1) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 2) - /* workaround for Apple gcc 4.2.1 omp vs background thread bug, - we copy gomp thread local storage pointer to setting it again - inside the thread that we start */ - thread_tls_data = pthread_getspecific(gomp_tls_key); + /* workaround for Apple gcc 4.2.1 omp vs background thread bug, + we copy gomp thread local storage pointer to setting it again + inside the thread that we start */ + thread_tls_data = pthread_getspecific(gomp_tls_key); #endif - } - - thread_levels++; } + + thread_levels++; } /* amount of available threads */ @@ -287,11 +287,11 @@ void BLI_end_threads(ListBase *threadbase) } } BLI_freelistN(threadbase); - - thread_levels--; - if(thread_levels==0) - MEM_set_lock_callback(NULL, NULL); } + + thread_levels--; + if(thread_levels==0) + MEM_set_lock_callback(NULL, NULL); } /* System Information */ From 30a7c6d2813dac7492b845adcffc2c129f3f8ba1 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 22 Jun 2010 15:20:06 +0000 Subject: [PATCH 159/674] Merge a few small blenlib changes from the render25 branch: * define for missing hypotf on msvc. * svd_m4 and pseudoinverse_m4_m4 functions. * small tweak to perlin noise, use static function instead of macro. * BLI_linklist_find and BLI_linklist_insert_after functions. * MALWAYS_INLINE define to force inlining. --- source/blender/blenlib/BLI_linklist.h | 3 + source/blender/blenlib/BLI_math_base.h | 3 + source/blender/blenlib/BLI_math_inline.h | 3 + source/blender/blenlib/BLI_math_matrix.h | 3 + source/blender/blenlib/intern/BLI_linklist.c | 32 +- source/blender/blenlib/intern/math_matrix.c | 455 +++++++++++++++++++ source/blender/blenlib/intern/noise.c | 11 +- 7 files changed, 505 insertions(+), 5 deletions(-) diff --git a/source/blender/blenlib/BLI_linklist.h b/source/blender/blenlib/BLI_linklist.h index 2ce40cf6231..b10d48e3ee6 100644 --- a/source/blender/blenlib/BLI_linklist.h +++ b/source/blender/blenlib/BLI_linklist.h @@ -47,11 +47,14 @@ typedef struct LinkNode { int BLI_linklist_length (struct LinkNode *list); int BLI_linklist_index (struct LinkNode *list, void *ptr); +struct LinkNode *BLI_linklist_find (struct LinkNode *list, int index); + void BLI_linklist_reverse (struct LinkNode **listp); void BLI_linklist_prepend (struct LinkNode **listp, void *ptr); void BLI_linklist_append (struct LinkNode **listp, void *ptr); void BLI_linklist_prepend_arena (struct LinkNode **listp, void *ptr, struct MemArena *ma); +void BLI_linklist_insert_after (struct LinkNode **listp, void *ptr); void BLI_linklist_free (struct LinkNode *list, LinkNodeFreeFP freefunc); void BLI_linklist_apply (struct LinkNode *list, LinkNodeApplyFP applyfunc, void *userdata); diff --git a/source/blender/blenlib/BLI_math_base.h b/source/blender/blenlib/BLI_math_base.h index c143c44c594..bb20cb7c8e1 100644 --- a/source/blender/blenlib/BLI_math_base.h +++ b/source/blender/blenlib/BLI_math_base.h @@ -115,6 +115,9 @@ extern "C" { #ifndef fmodf #define fmodf(a, b) ((float)fmod(a, b)) #endif +#ifndef hypotf +#define hypotf(a, b) ((float)hypot(a, b)) +#endif #ifdef WIN32 #ifndef FREE_WINDOWS diff --git a/source/blender/blenlib/BLI_math_inline.h b/source/blender/blenlib/BLI_math_inline.h index c762144a4b8..d002c0880b2 100644 --- a/source/blender/blenlib/BLI_math_inline.h +++ b/source/blender/blenlib/BLI_math_inline.h @@ -38,11 +38,14 @@ extern "C" { #ifdef BLI_MATH_INLINE #ifdef _MSC_VER #define MINLINE static __forceinline +#define MALWAYS_INLINE MINLINE #else #define MINLINE static inline +#define MALWAYS_INLINE static __attribute__((always_inline)) #endif #else #define MINLINE +#define MALWAYS_INLINE #endif #ifdef __cplusplus diff --git a/source/blender/blenlib/BLI_math_matrix.h b/source/blender/blenlib/BLI_math_matrix.h index 31cefb21e7a..77ebcb24975 100644 --- a/source/blender/blenlib/BLI_math_matrix.h +++ b/source/blender/blenlib/BLI_math_matrix.h @@ -122,6 +122,9 @@ float determinant_m3( float g, float h, float i); float determinant_m4(float A[4][4]); +void svd_m4(float U[4][4], float s[4], float V[4][4], float A[4][4]); +void pseudoinverse_m4_m4(float Ainv[4][4], float A[4][4], float epsilon); + /****************************** Transformations ******************************/ void scale_m3_fl(float R[3][3], float scale); diff --git a/source/blender/blenlib/intern/BLI_linklist.c b/source/blender/blenlib/intern/BLI_linklist.c index afa4d273090..c903e66057e 100644 --- a/source/blender/blenlib/intern/BLI_linklist.c +++ b/source/blender/blenlib/intern/BLI_linklist.c @@ -45,18 +45,28 @@ int BLI_linklist_length(LinkNode *list) { } } -int BLI_linklist_index(struct LinkNode *list, void *ptr) +int BLI_linklist_index(LinkNode *list, void *ptr) { int index; - for (index = 0; list; list= list->next, index++) { + for (index = 0; list; list= list->next, index++) if (list->link == ptr) return index; - } return -1; } +LinkNode *BLI_linklist_find(LinkNode *list, int index) +{ + int i; + + for (i = 0; list; list= list->next, i++) + if (i == index) + return list; + + return NULL; +} + void BLI_linklist_reverse(LinkNode **listp) { LinkNode *rhead= NULL, *cur= *listp; @@ -105,6 +115,22 @@ void BLI_linklist_prepend_arena(LinkNode **listp, void *ptr, MemArena *ma) { *listp= nlink; } +void BLI_linklist_insert_after(LinkNode **listp, void *ptr) { + LinkNode *nlink= MEM_mallocN(sizeof(*nlink), "nlink"); + LinkNode *node = *listp; + + nlink->link = ptr; + + if(node) { + nlink->next = node->next; + node->next = nlink; + } + else { + nlink->next = NULL; + *listp = nlink; + } +} + void BLI_linklist_free(LinkNode *list, LinkNodeFreeFP freefunc) { while (list) { LinkNode *next= list->next; diff --git a/source/blender/blenlib/intern/math_matrix.c b/source/blender/blenlib/intern/math_matrix.c index 396ae7ca5ee..6e8f4622488 100644 --- a/source/blender/blenlib/intern/math_matrix.c +++ b/source/blender/blenlib/intern/math_matrix.c @@ -1149,3 +1149,458 @@ void print_m4(char *str, float m[][4]) printf("%f %f %f %f\n",m[0][3],m[1][3],m[2][3],m[3][3]); printf("\n"); } + +/*********************************** SVD ************************************ + * from TNT matrix library + + * Compute the Single Value Decomposition of an arbitrary matrix A + * That is compute the 3 matrices U,W,V with U column orthogonal (m,n) + * ,W a diagonal matrix and V an orthogonal square matrix s.t. + * A = U.W.Vt. From this decomposition it is trivial to compute the + * (pseudo-inverse) of A as Ainv = V.Winv.tranpose(U). + */ + +void svd_m4(float U[4][4], float s[4], float V[4][4], float A_[4][4]) +{ + float A[4][4]; + float work1[4], work2[4]; + int m = 4; + int n = 4; + int maxiter = 200; + int nu = minf(m,n); + + float *work = work1; + float *e = work2; + float eps; + + int i=0, j=0, k=0, p, pp, iter; + + // Reduce A to bidiagonal form, storing the diagonal elements + // in s and the super-diagonal elements in e. + + int nct = minf(m-1,n); + int nrt = maxf(0,minf(n-2,m)); + + copy_m4_m4(A, A_); + zero_m4(U); + zero_v4(s); + + for (k = 0; k < maxf(nct,nrt); k++) { + if (k < nct) { + + // Compute the transformation for the k-th column and + // place the k-th diagonal in s[k]. + // Compute 2-norm of k-th column without under/overflow. + s[k] = 0; + for (i = k; i < m; i++) { + s[k] = hypotf(s[k],A[i][k]); + } + if (s[k] != 0.0f) { + float invsk; + if (A[k][k] < 0.0f) { + s[k] = -s[k]; + } + invsk = 1.0f/s[k]; + for (i = k; i < m; i++) { + A[i][k] *= invsk; + } + A[k][k] += 1.0f; + } + s[k] = -s[k]; + } + for (j = k+1; j < n; j++) { + if ((k < nct) && (s[k] != 0.0f)) { + + // Apply the transformation. + + float t = 0; + for (i = k; i < m; i++) { + t += A[i][k]*A[i][j]; + } + t = -t/A[k][k]; + for (i = k; i < m; i++) { + A[i][j] += t*A[i][k]; + } + } + + // Place the k-th row of A into e for the + // subsequent calculation of the row transformation. + + e[j] = A[k][j]; + } + if (k < nct) { + + // Place the transformation in U for subsequent back + // multiplication. + + for (i = k; i < m; i++) + U[i][k] = A[i][k]; + } + if (k < nrt) { + + // Compute the k-th row transformation and place the + // k-th super-diagonal in e[k]. + // Compute 2-norm without under/overflow. + e[k] = 0; + for (i = k+1; i < n; i++) { + e[k] = hypotf(e[k],e[i]); + } + if (e[k] != 0.0f) { + float invek; + if (e[k+1] < 0.0f) { + e[k] = -e[k]; + } + invek = 1.0f/e[k]; + for (i = k+1; i < n; i++) { + e[i] *= invek; + } + e[k+1] += 1.0f; + } + e[k] = -e[k]; + if ((k+1 < m) & (e[k] != 0.0f)) { + float invek1; + + // Apply the transformation. + + for (i = k+1; i < m; i++) { + work[i] = 0.0f; + } + for (j = k+1; j < n; j++) { + for (i = k+1; i < m; i++) { + work[i] += e[j]*A[i][j]; + } + } + invek1 = 1.0f/e[k+1]; + for (j = k+1; j < n; j++) { + float t = -e[j]*invek1; + for (i = k+1; i < m; i++) { + A[i][j] += t*work[i]; + } + } + } + + // Place the transformation in V for subsequent + // back multiplication. + + for (i = k+1; i < n; i++) + V[i][k] = e[i]; + } + } + + // Set up the final bidiagonal matrix or order p. + + p = minf(n,m+1); + if (nct < n) { + s[nct] = A[nct][nct]; + } + if (m < p) { + s[p-1] = 0.0f; + } + if (nrt+1 < p) { + e[nrt] = A[nrt][p-1]; + } + e[p-1] = 0.0f; + + // If required, generate U. + + for (j = nct; j < nu; j++) { + for (i = 0; i < m; i++) { + U[i][j] = 0.0f; + } + U[j][j] = 1.0f; + } + for (k = nct-1; k >= 0; k--) { + if (s[k] != 0.0f) { + for (j = k+1; j < nu; j++) { + float t = 0; + for (i = k; i < m; i++) { + t += U[i][k]*U[i][j]; + } + t = -t/U[k][k]; + for (i = k; i < m; i++) { + U[i][j] += t*U[i][k]; + } + } + for (i = k; i < m; i++ ) { + U[i][k] = -U[i][k]; + } + U[k][k] = 1.0f + U[k][k]; + for (i = 0; i < k-1; i++) { + U[i][k] = 0.0f; + } + } else { + for (i = 0; i < m; i++) { + U[i][k] = 0.0f; + } + U[k][k] = 1.0f; + } + } + + // If required, generate V. + + for (k = n-1; k >= 0; k--) { + if ((k < nrt) & (e[k] != 0.0f)) { + for (j = k+1; j < nu; j++) { + float t = 0; + for (i = k+1; i < n; i++) { + t += V[i][k]*V[i][j]; + } + t = -t/V[k+1][k]; + for (i = k+1; i < n; i++) { + V[i][j] += t*V[i][k]; + } + } + } + for (i = 0; i < n; i++) { + V[i][k] = 0.0f; + } + V[k][k] = 1.0f; + } + + // Main iteration loop for the singular values. + + pp = p-1; + iter = 0; + eps = powf(2.0f,-52.0f); + while (p > 0) { + int kase=0; + k=0; + + // Test for maximum iterations to avoid infinite loop + if(maxiter == 0) + break; + maxiter--; + + // This section of the program inspects for + // negligible elements in the s and e arrays. On + // completion the variables kase and k are set as follows. + + // kase = 1 if s(p) and e[k-1] are negligible and k

    = -1; k--) { + if (k == -1) { + break; + } + if (fabsf(e[k]) <= eps*(fabsf(s[k]) + fabsf(s[k+1]))) { + e[k] = 0.0f; + break; + } + } + if (k == p-2) { + kase = 4; + } else { + int ks; + for (ks = p-1; ks >= k; ks--) { + float t; + if (ks == k) { + break; + } + t = (ks != p ? fabsf(e[ks]) : 0.f) + + (ks != k+1 ? fabsf(e[ks-1]) : 0.0f); + if (fabsf(s[ks]) <= eps*t) { + s[ks] = 0.0f; + break; + } + } + if (ks == k) { + kase = 3; + } else if (ks == p-1) { + kase = 1; + } else { + kase = 2; + k = ks; + } + } + k++; + + // Perform the task indicated by kase. + + switch (kase) { + + // Deflate negligible s(p). + + case 1: { + float f = e[p-2]; + e[p-2] = 0.0f; + for (j = p-2; j >= k; j--) { + float t = hypotf(s[j],f); + float invt = 1.0f/t; + float cs = s[j]*invt; + float sn = f*invt; + s[j] = t; + if (j != k) { + f = -sn*e[j-1]; + e[j-1] = cs*e[j-1]; + } + + for (i = 0; i < n; i++) { + t = cs*V[i][j] + sn*V[i][p-1]; + V[i][p-1] = -sn*V[i][j] + cs*V[i][p-1]; + V[i][j] = t; + } + } + } + break; + + // Split at negligible s(k). + + case 2: { + float f = e[k-1]; + e[k-1] = 0.0f; + for (j = k; j < p; j++) { + float t = hypotf(s[j],f); + float invt = 1.0f/t; + float cs = s[j]*invt; + float sn = f*invt; + s[j] = t; + f = -sn*e[j]; + e[j] = cs*e[j]; + + for (i = 0; i < m; i++) { + t = cs*U[i][j] + sn*U[i][k-1]; + U[i][k-1] = -sn*U[i][j] + cs*U[i][k-1]; + U[i][j] = t; + } + } + } + break; + + // Perform one qr step. + + case 3: { + + // Calculate the shift. + + float scale = maxf(maxf(maxf(maxf( + fabsf(s[p-1]),fabsf(s[p-2])),fabsf(e[p-2])), + fabsf(s[k])),fabsf(e[k])); + float invscale = 1.0f/scale; + float sp = s[p-1]*invscale; + float spm1 = s[p-2]*invscale; + float epm1 = e[p-2]*invscale; + float sk = s[k]*invscale; + float ek = e[k]*invscale; + float b = ((spm1 + sp)*(spm1 - sp) + epm1*epm1)*0.5f; + float c = (sp*epm1)*(sp*epm1); + float shift = 0.0f; + float f, g; + if ((b != 0.0f) || (c != 0.0f)) { + shift = sqrtf(b*b + c); + if (b < 0.0f) { + shift = -shift; + } + shift = c/(b + shift); + } + f = (sk + sp)*(sk - sp) + shift; + g = sk*ek; + + // Chase zeros. + + for (j = k; j < p-1; j++) { + float t = hypotf(f,g); + /* division by zero checks added to avoid NaN (brecht) */ + float cs = (t == 0.0f)? 0.0f: f/t; + float sn = (t == 0.0f)? 0.0f: g/t; + if (j != k) { + e[j-1] = t; + } + f = cs*s[j] + sn*e[j]; + e[j] = cs*e[j] - sn*s[j]; + g = sn*s[j+1]; + s[j+1] = cs*s[j+1]; + + for (i = 0; i < n; i++) { + t = cs*V[i][j] + sn*V[i][j+1]; + V[i][j+1] = -sn*V[i][j] + cs*V[i][j+1]; + V[i][j] = t; + } + + t = hypotf(f,g); + /* division by zero checks added to avoid NaN (brecht) */ + cs = (t == 0.0f)? 0.0f: f/t; + sn = (t == 0.0f)? 0.0f: g/t; + s[j] = t; + f = cs*e[j] + sn*s[j+1]; + s[j+1] = -sn*e[j] + cs*s[j+1]; + g = sn*e[j+1]; + e[j+1] = cs*e[j+1]; + if (j < m-1) { + for (i = 0; i < m; i++) { + t = cs*U[i][j] + sn*U[i][j+1]; + U[i][j+1] = -sn*U[i][j] + cs*U[i][j+1]; + U[i][j] = t; + } + } + } + e[p-2] = f; + iter = iter + 1; + } + break; + + // Convergence. + + case 4: { + + // Make the singular values positive. + + if (s[k] <= 0.0f) { + s[k] = (s[k] < 0.0f ? -s[k] : 0.0f); + + for (i = 0; i <= pp; i++) + V[i][k] = -V[i][k]; + } + + // Order the singular values. + + while (k < pp) { + float t; + if (s[k] >= s[k+1]) { + break; + } + t = s[k]; + s[k] = s[k+1]; + s[k+1] = t; + if (k < n-1) { + for (i = 0; i < n; i++) { + t = V[i][k+1]; V[i][k+1] = V[i][k]; V[i][k] = t; + } + } + if (k < m-1) { + for (i = 0; i < m; i++) { + t = U[i][k+1]; U[i][k+1] = U[i][k]; U[i][k] = t; + } + } + k++; + } + iter = 0; + p--; + } + break; + } + } +} + +void pseudoinverse_m4_m4(float Ainv[4][4], float A[4][4], float epsilon) +{ + /* compute moon-penrose pseudo inverse of matrix, singular values + below epsilon are ignored for stability (truncated SVD) */ + float V[4][4], W[4], Wm[4][4], U[4][4]; + int i; + + transpose_m4(A); + svd_m4(V, W, U, A); + transpose_m4(U); + transpose_m4(V); + + zero_m4(Wm); + for(i=0; i<4; i++) + Wm[i][i]= (W[i] < epsilon)? 0.0f: 1.0f/W[i]; + + transpose_m4(V); + + mul_serie_m4(Ainv, U, Wm, V, 0, 0, 0, 0, 0); +} diff --git a/source/blender/blenlib/intern/noise.c b/source/blender/blenlib/intern/noise.c index d6b8582ef26..141e5438bc9 100644 --- a/source/blender/blenlib/intern/noise.c +++ b/source/blender/blenlib/intern/noise.c @@ -199,8 +199,15 @@ float hashvectf[768]= { /* IMPROVED PERLIN NOISE */ /**************************/ -#define lerp(t, a, b) ((a)+(t)*((b)-(a))) -#define npfade(t) ((t)*(t)*(t)*((t)*((t)*6-15)+10)) +static float lerp(float t, float a, float b) +{ + return (a+t*(b-a)); +} + +static float npfade(float t) +{ + return (t*t*t*(t*(t*6.0f-15.0f)+10.0f)); +} static float grad(int hash, float x, float y, float z) { From f3a2d24d8f267ee6f52297d1ec04b1f2d8e1d472 Mon Sep 17 00:00:00 2001 From: Diego Borghetti Date: Tue, 22 Jun 2010 15:46:15 +0000 Subject: [PATCH 160/674] Fix Bug [#22640] Center Cursor doesn't cause 3D window update in empty scene The viewhome operator forget tag the region for redraw when no object is in the scene and only move the cursor. --- source/blender/editors/space_view3d/view3d_edit.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index f74a0381b24..39c27bbff93 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -1242,7 +1242,17 @@ static int viewhome_exec(bContext *C, wmOperator *op) /* was view3d_home() in 2. minmax_object(base->object, min, max); } } - if(!onedone) return OPERATOR_FINISHED; /* TODO - should this be cancel? */ + if(!onedone) { + ED_region_tag_redraw(ar); + /* TODO - should this be cancel? + * I think no, because we always move the cursor, with or without + * object, but in this case there is no change in the scene, + * only the cursor so I choice a ED_region_tag like + * smooth_view do for the center_cursor. + * See bug #22640 + */ + return OPERATOR_FINISHED; + } afm[0]= (max[0]-min[0]); afm[1]= (max[1]-min[1]); From c28aec9ae11c4b68406cf74fa9ac228886cdb376 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 22 Jun 2010 16:46:13 +0000 Subject: [PATCH 161/674] Fix #22589: pressing subdivide or updating displacements after sculpting on multire would unnecessarily subdivide vertex groups and other layers, making the operation slower than necessary. --- source/blender/blenkernel/intern/multires.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index aab9f2a0935..76d82889cda 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -459,6 +459,7 @@ void multiresModifier_subdivide(MultiresModifierData *mmd, Object *ob, int updat /* create subsurf DM from original mesh at high level */ cddm = CDDM_from_mesh(me, NULL); + DM_set_only_copy(cddm, CD_MASK_BAREMESH); highdm = subsurf_dm_create_local(ob, cddm, totlvl, simple, 0); /* create multires DM from original mesh at low level */ @@ -656,6 +657,7 @@ static void multiresModifier_update(DerivedMesh *dm) /* create subsurf DM from original mesh at high level */ if (ob->derivedDeform) cddm = CDDM_copy(ob->derivedDeform); else cddm = CDDM_from_mesh(me, NULL); + DM_set_only_copy(cddm, CD_MASK_BAREMESH); highdm = subsurf_dm_create_local(ob, cddm, totlvl, mmd->simple, 0); @@ -709,6 +711,7 @@ static void multiresModifier_update(DerivedMesh *dm) if (ob->derivedDeform) cddm = CDDM_copy(ob->derivedDeform); else cddm = CDDM_from_mesh(me, NULL); + DM_set_only_copy(cddm, CD_MASK_BAREMESH); subdm = subsurf_dm_create_local(ob, cddm, mmd->totlvl, mmd->simple, 0); cddm->release(cddm); From 86de9694ff03225ce04608e568583fd702138f58 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 22 Jun 2010 18:18:42 +0000 Subject: [PATCH 162/674] ffmpeg was computing the frame length of avis via doubles, but was not properly ceiling them, sometimes resulting in truncation errors. (merge from render25 branch, commit with revision 28901 by Joe) --- source/blender/imbuf/intern/anim.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/imbuf/intern/anim.c b/source/blender/imbuf/intern/anim.c index 2cb63b7274c..bfc3433875d 100644 --- a/source/blender/imbuf/intern/anim.c +++ b/source/blender/imbuf/intern/anim.c @@ -589,9 +589,9 @@ static int startffmpeg(struct anim * anim) { anim->duration = pFormatCtx->duration * pCodecCtx->frame_rate / pCodecCtx->frame_rate_base / AV_TIME_BASE; #else - anim->duration = pFormatCtx->duration + anim->duration = ceil(pFormatCtx->duration * av_q2d(pFormatCtx->streams[videoStream]->r_frame_rate) - / AV_TIME_BASE; + / AV_TIME_BASE); #endif anim->params = 0; From df76cebb8a27eb1206eebbcfebac9a0ab439ce91 Mon Sep 17 00:00:00 2001 From: Peter Schlaile Date: Tue, 22 Jun 2010 21:09:50 +0000 Subject: [PATCH 163/674] == Sequencer == Removed "frame_locked"-flag from sequencer completely, since it doesn't work any more in Blender 2.5. (All IPOs are frame-locked now anyways.) --- release/scripts/ui/space_sequencer.py | 1 - source/blender/blenkernel/intern/seqeffects.c | 22 +++++-------------- .../blender/makesrna/intern/rna_sequencer.c | 5 ----- 3 files changed, 5 insertions(+), 23 deletions(-) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 99e768f2e10..cf88397ced4 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -351,7 +351,6 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel): row = layout.row() row.prop(strip, "lock") - row.prop(strip, "frame_locked", text="Frame Lock") col = layout.column() col.enabled = not strip.lock diff --git a/source/blender/blenkernel/intern/seqeffects.c b/source/blender/blenkernel/intern/seqeffects.c index b5f9c8fe542..56a8edcc4fc 100644 --- a/source/blender/blenkernel/intern/seqeffects.c +++ b/source/blender/blenkernel/intern/seqeffects.c @@ -2802,7 +2802,7 @@ static void init_speed_effect(Sequence *seq) v = (SpeedControlVars *)seq->effectdata; v->globalSpeed = 1.0; v->frameMap = 0; - v->flags = SEQ_SPEED_COMPRESS_IPO_Y; + v->flags = 0; v->length = 0; } @@ -2925,14 +2925,8 @@ void sequence_effect_speed_rebuild_map(Scene *scene, Sequence * seq, int force) for (cfra = 1; cfra < v->length; cfra++) { if(fcu) { - if((seq->flag & SEQ_IPO_FRAME_LOCKED) != 0) { - ctime = seq->startdisp + cfra; - div = 1.0; - } else { - ctime= cfra; - div= v->length / 100.0f; - if(div==0.0) return; - } + ctime = seq->startdisp + cfra; + div = 1.0; facf = evaluate_fcurve(fcu, ctime/div); } else { @@ -2956,14 +2950,8 @@ void sequence_effect_speed_rebuild_map(Scene *scene, Sequence * seq, int force) for (cfra = 0; cfra < v->length; cfra++) { if(fcu) { - if((seq->flag & SEQ_IPO_FRAME_LOCKED) != 0) { - ctime = seq->startdisp + cfra; - div = 1.0; - } else { - ctime= cfra; - div= v->length / 100.0f; - if(div==0.0) return; - } + ctime = seq->startdisp + cfra; + div = 1.0; facf = evaluate_fcurve(fcu, ctime / div); if (v->flags & SEQ_SPEED_COMPRESS_IPO_Y) { diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index 2e6847ea468..4ee4fde0d8a 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -706,11 +706,6 @@ static void rna_def_sequence(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Mute", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_mute_update"); - prop= RNA_def_property(srna, "frame_locked", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_IPO_FRAME_LOCKED); - RNA_def_property_ui_text(prop, "Frame Locked", "Lock the animation curve to the global frame counter"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - prop= RNA_def_property(srna, "lock", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_LOCK); RNA_def_property_ui_text(prop, "Lock", "Lock strip so that it can't be transformed"); From e10bf2bc09fa035558f3b7bc67a15e3e1d2b3d18 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Tue, 22 Jun 2010 21:11:13 +0000 Subject: [PATCH 164/674] Fix #22642: NURBS surfaces doesnt display Fix #22587: Invisible Nurbs Suface There was a small bug with determinating if new object should be created and for surfeces new OB_CURVE object had been created (instead of OB_SURF). Removed unused function and enum, which were used by nurbs surface create old oprator --- source/blender/editors/curve/editcurve.c | 68 ++++++++++++---------- source/blender/editors/object/object_add.c | 68 ---------------------- 2 files changed, 38 insertions(+), 98 deletions(-) diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 7e8154f9381..dad111432de 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -5256,54 +5256,62 @@ Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newname) return nu; } -static int curve_prim_add(bContext *C, wmOperator *op, int type){ +static int curvesurf_prim_add(bContext *C, wmOperator *op, int type, int isSurf) { Object *obedit= CTX_data_edit_object(C); ListBase *editnurb; Nurb *nu; - int newob= 0;//, type= RNA_enum_get(op->ptr, "type"); + int newob= 0; int enter_editmode; unsigned int layer; float loc[3], rot[3]; float mat[4][4]; - - //object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) return OPERATOR_CANCELLED; - - if(obedit==NULL || obedit->type!=OB_CURVE) { - Curve *cu; - obedit= ED_object_add_type(C, OB_CURVE, loc, rot, TRUE, layer); - newob = 1; + if (!isSurf) { /* adding curve */ + if(obedit==NULL || obedit->type!=OB_CURVE) { + Curve *cu; + obedit= ED_object_add_type(C, OB_CURVE, loc, rot, TRUE, layer); + newob = 1; - cu= (Curve*)obedit->data; - cu->flag |= CU_DEFORM_FILL; - if(type & CU_PRIM_PATH) - cu->flag |= CU_PATH|CU_3D; + cu= (Curve*)obedit->data; + cu->flag |= CU_DEFORM_FILL; + if(type & CU_PRIM_PATH) + cu->flag |= CU_PATH|CU_3D; + } else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); + } else { /* adding surface */ + if(obedit==NULL || obedit->type!=OB_SURF) { + obedit= ED_object_add_type(C, OB_SURF, loc, rot, TRUE, layer); + newob = 1; + } else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); } - else if(obedit==NULL || obedit->type!=OB_SURF) { - obedit= ED_object_add_type(C, OB_SURF, loc, rot, TRUE, layer); - newob = 1; - } - else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); - - + ED_object_new_primitive_matrix(C, obedit, loc, rot, mat); - + nu= add_nurbs_primitive(C, mat, type, newob); editnurb= curve_get_editcurve(obedit); BLI_addtail(editnurb, nu); - + /* userdef */ if (newob && !enter_editmode) { ED_object_exit_editmode(C, EM_FREEDATA); } - + WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, obedit); - + return OPERATOR_FINISHED; } + +static int curve_prim_add(bContext *C, wmOperator *op, int type) { + return curvesurf_prim_add(C, op, type, 0); +} + +static int surf_prim_add(bContext *C, wmOperator *op, int type) { + return curvesurf_prim_add(C, op, type, 1); +} + /* ******************** Curves ******************* */ static int add_primitive_bezier_exec(bContext *C, wmOperator *op) @@ -5424,7 +5432,7 @@ void CURVE_OT_primitive_nurbs_path_add(wmOperatorType *ot) /* **************** NURBS surfaces ********************** */ static int add_primitive_nurbs_surface_curve_exec(bContext *C, wmOperator *op) { - return curve_prim_add(C, op, CU_PRIM_CURVE|CU_NURBS); + return surf_prim_add(C, op, CU_PRIM_CURVE|CU_NURBS); } void SURFACE_OT_primitive_nurbs_surface_curve_add(wmOperatorType *ot) @@ -5447,7 +5455,7 @@ void SURFACE_OT_primitive_nurbs_surface_curve_add(wmOperatorType *ot) static int add_primitive_nurbs_surface_circle_exec(bContext *C, wmOperator *op) { - return curve_prim_add(C, op, CU_PRIM_CIRCLE|CU_NURBS); + return surf_prim_add(C, op, CU_PRIM_CIRCLE|CU_NURBS); } void SURFACE_OT_primitive_nurbs_surface_circle_add(wmOperatorType *ot) @@ -5470,7 +5478,7 @@ void SURFACE_OT_primitive_nurbs_surface_circle_add(wmOperatorType *ot) static int add_primitive_nurbs_surface_surface_exec(bContext *C, wmOperator *op) { - return curve_prim_add(C, op, CU_PRIM_PATCH|CU_NURBS); + return surf_prim_add(C, op, CU_PRIM_PATCH|CU_NURBS); } void SURFACE_OT_primitive_nurbs_surface_surface_add(wmOperatorType *ot) @@ -5493,7 +5501,7 @@ void SURFACE_OT_primitive_nurbs_surface_surface_add(wmOperatorType *ot) static int add_primitive_nurbs_surface_tube_exec(bContext *C, wmOperator *op) { - return curve_prim_add(C, op, CU_PRIM_TUBE|CU_NURBS); + return surf_prim_add(C, op, CU_PRIM_TUBE|CU_NURBS); } void SURFACE_OT_primitive_nurbs_surface_tube_add(wmOperatorType *ot) @@ -5516,7 +5524,7 @@ void SURFACE_OT_primitive_nurbs_surface_tube_add(wmOperatorType *ot) static int add_primitive_nurbs_surface_sphere_exec(bContext *C, wmOperator *op) { - return curve_prim_add(C, op, CU_PRIM_SPHERE|CU_NURBS); + return surf_prim_add(C, op, CU_PRIM_SPHERE|CU_NURBS); } void SURFACE_OT_primitive_nurbs_surface_sphere_add(wmOperatorType *ot) @@ -5539,7 +5547,7 @@ void SURFACE_OT_primitive_nurbs_surface_sphere_add(wmOperatorType *ot) static int add_primitive_nurbs_surface_donut_exec(bContext *C, wmOperator *op) { - return curve_prim_add(C, op, CU_PRIM_DONUT|CU_NURBS); + return surf_prim_add(C, op, CU_PRIM_DONUT|CU_NURBS); } void SURFACE_OT_primitive_nurbs_surface_donut_add(wmOperatorType *ot) diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index e29c23b1f4d..ee0fd2b47e9 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -490,74 +490,6 @@ void OBJECT_OT_camera_add(wmOperatorType *ot) /* ***************** add primitives *************** */ -static EnumPropertyItem prop_surface_types[]= { - {CU_PRIM_CURVE|CU_NURBS, "NURBS_CURVE", ICON_SURFACE_NCURVE, "NURBS Curve", ""}, - {CU_PRIM_CIRCLE|CU_NURBS, "NURBS_CIRCLE", ICON_SURFACE_NCIRCLE, "NURBS Circle", ""}, - {CU_PRIM_PATCH|CU_NURBS, "NURBS_SURFACE", ICON_SURFACE_NSURFACE, "NURBS Surface", ""}, - {CU_PRIM_TUBE|CU_NURBS, "NURBS_TUBE", ICON_SURFACE_NTUBE, "NURBS Tube", ""}, - {CU_PRIM_SPHERE|CU_NURBS, "NURBS_SPHERE", ICON_SURFACE_NSPHERE, "NURBS Sphere", ""}, - {CU_PRIM_DONUT|CU_NURBS, "NURBS_DONUT", ICON_SURFACE_NDONUT, "NURBS Donut", ""}, - {0, NULL, 0, NULL, NULL} -}; - -static int object_add_surface_exec(bContext *C, wmOperator *op) -{ - Object *obedit= CTX_data_edit_object(C); - ListBase *editnurb; - Nurb *nu; - int newob= 0; - int enter_editmode; - unsigned int layer; - float loc[3], rot[3]; - float mat[4][4]; - - object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - - if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) - return OPERATOR_CANCELLED; - - if(obedit==NULL || obedit->type!=OB_SURF) { - obedit= ED_object_add_type(C, OB_SURF, loc, rot, TRUE, layer); - newob = 1; - } - else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); - - ED_object_new_primitive_matrix(C, obedit, loc, rot, mat); - - nu= add_nurbs_primitive(C, mat, RNA_enum_get(op->ptr, "type"), newob); - editnurb= curve_get_editcurve(obedit); - BLI_addtail(editnurb, nu); - - /* userdef */ - if (newob && !enter_editmode) { - ED_object_exit_editmode(C, EM_FREEDATA); - } - - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, obedit); - - return OPERATOR_FINISHED; -} - -void OBJECT_OT_surface_add(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Add Surface"; - ot->description = "Add a surface object to the scene"; - ot->idname= "OBJECT_OT_surface_add"; - - /* api callbacks */ - ot->invoke= WM_menu_invoke; - ot->exec= object_add_surface_exec; - - ot->poll= ED_operator_scene_editable; - - /* flags */ - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - - ot->prop= RNA_def_enum(ot->srna, "type", prop_surface_types, 0, "Primitive", ""); - ED_object_add_generic_props(ot, TRUE); -} - static EnumPropertyItem prop_metaball_types[]= { {MB_BALL, "MBALL_BALL", ICON_META_BALL, "Meta Ball", ""}, {MB_TUBE, "MBALL_TUBE", ICON_META_TUBE, "Meta Tube", ""}, From 8a6ea2584dcfdb0fe3e8fcf4d61825b505fec30a Mon Sep 17 00:00:00 2001 From: William Reynish Date: Tue, 22 Jun 2010 21:31:26 +0000 Subject: [PATCH 165/674] Small update to text boxes UI. It now works in single-column layout. --- release/scripts/ui/properties_data_curve.py | 28 ++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/release/scripts/ui/properties_data_curve.py b/release/scripts/ui/properties_data_curve.py index d807fa1631b..b4d17104cfc 100644 --- a/release/scripts/ui/properties_data_curve.py +++ b/release/scripts/ui/properties_data_curve.py @@ -378,25 +378,25 @@ class DATA_PT_textboxes(DataButtonsPanel): boxy = layout.box() - split = boxy.split() + row = boxy.row() - col = split.column() - - col2 = col.column(align=True) - col2.label(text="Dimensions:") - col2.prop(box, "width", text="Width") - col2.prop(box, "height", text="Height") + split = row.split() + + col = split.column(align=True) + + col.label(text="Dimensions:") + col.prop(box, "width", text="Width") + col.prop(box, "height", text="Height") if wide_ui: - col = split.column() + col = split.column(align=True) - row = col.row() - row.label(text="Offset:") - row.operator("font.textbox_remove", text='', icon='X').index = i + col.label(text="Offset:") + col.prop(box, "x", text="X") + col.prop(box, "y", text="Y") - col2 = col.column(align=True) - col2.prop(box, "x", text="X") - col2.prop(box, "y", text="Y") + row.operator("font.textbox_remove", text='', icon='X').index = i + classes = [ DATA_PT_context_curve, From 5ed7699e85620ec5d64e1af824a4b809ea9ea574 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Wed, 23 Jun 2010 02:42:39 +0000 Subject: [PATCH 166/674] mathutils.RotationMatrix Angles are in radians. Doc and example should reflect reality --- source/blender/python/doc/examples/mathutils.py | 3 ++- source/blender/python/generic/mathutils.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/source/blender/python/doc/examples/mathutils.py b/source/blender/python/doc/examples/mathutils.py index dee8fa4d6bd..6cd11a1baaa 100644 --- a/source/blender/python/doc/examples/mathutils.py +++ b/source/blender/python/doc/examples/mathutils.py @@ -1,8 +1,9 @@ import mathutils +from math import radians vec = mathutils.Vector(1.0, 2.0, 3.0) -mat_rot = mathutils.RotationMatrix(90, 4, 'X') +mat_rot = mathutils.RotationMatrix(radians(90), 4, 'X') mat_trans = mathutils.TranslationMatrix(vec) mat = mat_trans * mat_rot diff --git a/source/blender/python/generic/mathutils.c b/source/blender/python/generic/mathutils.c index 95be795dd4e..f0571f32f58 100644 --- a/source/blender/python/generic/mathutils.c +++ b/source/blender/python/generic/mathutils.c @@ -168,7 +168,7 @@ static char M_Mathutils_RotationMatrix_doc[] = "\n" " Create a matrix representing a rotation.\n" "\n" -" :arg angle: The angle of rotation desired.\n" +" :arg angle: The angle of rotation desired, in radians.\n" " :type angle: float\n" " :arg size: The size of the rotation matrix to construct [2, 4].\n" " :type size: int\n" From ba16b242624ea89220561fcf0214eea8ca0c4cf9 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 23 Jun 2010 03:20:57 +0000 Subject: [PATCH 167/674] Added back full scene motion blur 'shutter' parameter (was 'Bf' in 2.49) --- release/scripts/ui/properties_render.py | 1 + source/blender/makesrna/intern/rna_scene.c | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/release/scripts/ui/properties_render.py b/release/scripts/ui/properties_render.py index 8bbe11a5f90..b040580c94f 100644 --- a/release/scripts/ui/properties_render.py +++ b/release/scripts/ui/properties_render.py @@ -522,6 +522,7 @@ class RENDER_PT_motion_blur(RenderButtonsPanel): row = layout.row() row.prop(rd, "motion_blur_samples") + row.prop(rd, "motion_blur_shutter") class RENDER_PT_dimensions(RenderButtonsPanel): diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index aaefd31af40..b752a47a31e 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -2429,6 +2429,13 @@ static void rna_def_scene_render_data(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Motion Samples", "Number of scene samples to take with motion blur"); RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); + prop= RNA_def_property(srna, "motion_blur_shutter", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "blurfac"); + RNA_def_property_range(prop, 0.01f, 10.0f); + RNA_def_property_ui_range(prop, 0.01, 2.0f, 1, 0); + RNA_def_property_ui_text(prop, "Shutter", "Time taken in frames between shutter open and close"); + RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); + /* border */ prop= RNA_def_property(srna, "use_border", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "mode", R_BORDER); From ceac8d0fedaef9694cd2365659740f449e9ddd92 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 23 Jun 2010 03:42:19 +0000 Subject: [PATCH 168/674] Change to file output compositor node - Now it only outputs files when rendering, otherwise, it overwrites the output files whenever the compositor updates (i.e. just scrubbing through the timeline ) --- source/blender/nodes/intern/CMP_nodes/CMP_outputFile.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_outputFile.c b/source/blender/nodes/intern/CMP_nodes/CMP_outputFile.c index d2eb27d13c6..6f29548fcc3 100644 --- a/source/blender/nodes/intern/CMP_nodes/CMP_outputFile.c +++ b/source/blender/nodes/intern/CMP_nodes/CMP_outputFile.c @@ -47,7 +47,12 @@ static void node_composit_exec_output_file(void *data, bNode *node, bNodeStack * if(nif->sfra!=nif->efra && (rd->cfrasfra || rd->cfra>nif->efra)) { return; /* BAIL OUT RETURN */ } - else { + else if (!G.rendering) { + /* only output files when rendering a sequence - + * otherwise, it overwrites the output files just + * scrubbing through the timeline when the compositor updates */ + return; + } else { CompBuf *cbuf= typecheck_compbuf(in[0]->data, CB_RGBA); ImBuf *ibuf= IMB_allocImBuf(cbuf->x, cbuf->y, 32, 0, 0); char string[256]; From 5215e410c6e39971b79b84c1fbd77f7dc8833fcc Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Wed, 23 Jun 2010 06:09:30 +0000 Subject: [PATCH 169/674] Logic UI: small change: make pin always visible (disable sometimes instead of hiding) I still think we could use a more compact header for the non-expanded mode (ala 2.49). To be addressed later --- .../blender/editors/space_logic/logic_window.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index 154851bd248..6142145ae1d 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -3174,7 +3174,7 @@ static int is_sensor_linked(uiBlock *block, bSensor *sens) static void draw_sensor_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *logic_ptr) { - uiLayout *box, *row; + uiLayout *box, *row, *subrow; box= uiLayoutBox(layout); row= uiLayoutRow(box, 0); @@ -3183,9 +3183,10 @@ static void draw_sensor_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *lo uiItemR(row, ptr, "type", 0, "", 0); uiItemR(row, ptr, "name", 0, "", 0); - // XXX in 2.49 we make the pin to dis/appear. In 2.50 may be better to simply enable/disable it - if (RNA_boolean_get(logic_ptr, "sensors_show_active_states") && (RNA_boolean_get(ptr, "expanded") || RNA_boolean_get(ptr, "pinned"))) - uiItemR(row, ptr, "pinned", UI_ITEM_R_NO_BG, "", 0); + subrow= uiLayoutRow(row, 0); + uiLayoutSetActive(subrow, (RNA_boolean_get(logic_ptr, "sensors_show_active_states") + && RNA_boolean_get(ptr, "expanded") || RNA_boolean_get(ptr, "pinned"))); + uiItemR(subrow, ptr, "pinned", UI_ITEM_R_NO_BG, "", 0); uiItemO(row, "", ICON_X, "LOGIC_OT_sensor_remove"); } @@ -3591,7 +3592,7 @@ void draw_brick_controller(uiLayout *layout, PointerRNA *ptr) /* Actuator code */ static void draw_actuator_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *logic_ptr) { - uiLayout *box, *row; + uiLayout *box, *row, *subrow; box= uiLayoutBox(layout); row= uiLayoutRow(box, 0); @@ -3600,9 +3601,10 @@ static void draw_actuator_header(uiLayout *layout, PointerRNA *ptr, PointerRNA * uiItemR(row, ptr, "type", 0, "", 0); uiItemR(row, ptr, "name", 0, "", 0); - // XXX in 2.49 we make the pin to dis/appear. In 2.50 may be better to simply enable/disable it - if (RNA_boolean_get(logic_ptr, "actuators_show_active_states") && (RNA_boolean_get(ptr, "expanded") || RNA_boolean_get(ptr, "pinned"))) - uiItemR(row, ptr, "pinned", UI_ITEM_R_NO_BG, "", 0); + subrow= uiLayoutRow(row, 0); + uiLayoutSetActive(subrow, (RNA_boolean_get(logic_ptr, "actuators_show_active_states") + && RNA_boolean_get(ptr, "expanded") || RNA_boolean_get(ptr, "pinned"))); + uiItemR(subrow, ptr, "pinned", UI_ITEM_R_NO_BG, "", 0); uiItemO(row, "", ICON_X, "LOGIC_OT_actuator_remove"); } From ee14cc198b2306f13b438577d565347e54c88938 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 23 Jun 2010 08:18:14 +0000 Subject: [PATCH 170/674] fix for timeline drawing with new cache visualization. memcpy buffer overrun when the first frame wasnt 0. --- source/blender/editors/space_time/space_time.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c index 454dc6117ba..7928fc6284a 100644 --- a/source/blender/editors/space_time/space_time.c +++ b/source/blender/editors/space_time/space_time.c @@ -236,7 +236,7 @@ static void time_cache_refresh(const bContext *C, SpaceTime *stime, ARegion *ar) } } /* update with final number of frames */ - stc->len = i*4; + stc->len = (i-stc->startframe)*4; stc->array = MEM_mallocN(stc->len*2*sizeof(float), "SpaceTimeCache array"); memcpy(stc->array, array, stc->len*2*sizeof(float)); From d200243a5ca9d9cf17fb5ad1b4df711698b82b1d Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Wed, 23 Jun 2010 09:58:02 +0000 Subject: [PATCH 171/674] Fix #22654: Converted curve from mesh disappearing Curve object should have ob->bb=NULL if there is no derivedMesh --- source/blender/blenkernel/intern/displist.c | 6 ++++++ source/blender/blenkernel/intern/mesh.c | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c index 24f996fbb31..ae225fd19b7 100644 --- a/source/blender/blenkernel/intern/displist.c +++ b/source/blender/blenkernel/intern/displist.c @@ -1855,6 +1855,12 @@ void makeDispListCurveTypes(Scene *scene, Object *ob, int forOrco) DM_set_object_boundbox (ob, ob->derivedFinal); } else { boundbox_displist (ob); + + /* if there is no derivedMesh, object's boundbox is unneeded */ + if (ob->bb) { + MEM_freeN(ob->bb); + ob->bb= NULL; + } } } diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index 6ddc4b8bb16..cd8b2eb0a8e 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -1186,6 +1186,12 @@ void mesh_to_curve(Scene *scene, Object *ob) if (needsFree) { ob->derivedFinal = NULL; + + /* curve object could have got bounding box only in special cases */ + if(ob->bb) { + MEM_freeN(ob->bb); + ob->bb= NULL; + } } } From 16b15961a8d7f0a8f831f726eba10785322171ed Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 23 Jun 2010 09:58:32 +0000 Subject: [PATCH 172/674] Fix #21470: changing brush settings redraws the 3d view unecessarily, added ED_region_tag_redraw_overlay to only redo overlay drawing, which in case of triple buffer is much faster. --- source/blender/editors/include/ED_screen.h | 1 + source/blender/editors/screen/area.c | 6 ++++++ source/blender/editors/space_view3d/space_view3d.c | 2 +- source/blender/makesdna/DNA_screen_types.h | 2 ++ source/blender/windowmanager/intern/wm_draw.c | 14 ++++++++++++-- 5 files changed, 22 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index 21a8fa70710..3478447b058 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -55,6 +55,7 @@ void ED_region_set(const struct bContext *C, struct ARegion *ar); void ED_region_init(struct bContext *C, struct ARegion *ar); void ED_region_tag_redraw(struct ARegion *ar); void ED_region_tag_redraw_partial(struct ARegion *ar, struct rcti *rct); +void ED_region_tag_redraw_overlay(struct ARegion *ar); void ED_region_panels_init(struct wmWindowManager *wm, struct ARegion *ar); void ED_region_panels(const struct bContext *C, struct ARegion *ar, int vertical, char *context, int contextnr); void ED_region_header_init(struct ARegion *ar); diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index 758a2b1d8ef..65b2923d884 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -372,6 +372,12 @@ void ED_region_tag_redraw(ARegion *ar) } } +void ED_region_tag_redraw_overlay(ARegion *ar) +{ + if(ar) + ar->do_draw_overlay= RGN_DRAW; +} + void ED_region_tag_redraw_partial(ARegion *ar, rcti *rct) { if(ar) { diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index 472379ec6e1..92e3b35f614 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -587,7 +587,7 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) break; case NC_BRUSH: if(wmn->action == NA_EDITED) - ED_region_tag_redraw(ar); + ED_region_tag_redraw_overlay(ar); break; case NC_MATERIAL: switch(wmn->data) { diff --git a/source/blender/makesdna/DNA_screen_types.h b/source/blender/makesdna/DNA_screen_types.h index 6d73c261f23..a811fd9c014 100644 --- a/source/blender/makesdna/DNA_screen_types.h +++ b/source/blender/makesdna/DNA_screen_types.h @@ -152,7 +152,9 @@ typedef struct ARegion { short sizex, sizey; /* current split size in pixels (if zero it uses regiontype) */ short do_draw; /* private, cached notifier events */ + short do_draw_overlay; /* private, cached notifier events */ short swap; /* private, indicator to survive swap-exchange */ + short pad[3]; struct ARegionType *type; /* callbacks for this region type */ diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index 0331613d392..d2afef3b117 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -642,6 +642,13 @@ static int wm_draw_update_test_window(wmWindow *win) { ScrArea *sa; ARegion *ar; + + for(ar= win->screen->regionbase.first; ar; ar= ar->next) { + if(ar->do_draw_overlay) { + wm_tag_redraw_overlay(win, ar); + ar->do_draw_overlay= 0; + } + } if(win->screen->do_refresh) return 1; @@ -687,8 +694,11 @@ static int wm_automatic_draw_method(wmWindow *win) void wm_tag_redraw_overlay(wmWindow *win, ARegion *ar) { /* for draw triple gestures, paint cursors don't need region redraw */ - if(ar && win && wm_automatic_draw_method(win) != USER_DRAW_TRIPLE) - ED_region_tag_redraw(ar); + if(ar && win) { + if(wm_automatic_draw_method(win) != USER_DRAW_TRIPLE) + ED_region_tag_redraw(ar); + win->screen->do_draw_paintcursor= 1; + } } void wm_draw_update(bContext *C) From 2567129e7fe7a2a4439ee6c9607d3eb5660e7d7c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 23 Jun 2010 10:18:51 +0000 Subject: [PATCH 173/674] Converting a mesh into a mesh (alt-c), was broken with shape keys and modifiers that changed the vertex count. removal of the shape key was undone in DM_to_mesh(). --- source/blender/blenkernel/intern/DerivedMesh.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 339326f75d5..d5ece6ae31f 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -247,8 +247,8 @@ void DM_to_mesh(DerivedMesh *dm, Mesh *me) /* if the number of verts has changed, remove invalid data */ if(tmp.totvert != me->totvert) { - if(me->key) me->key->id.us--; - me->key = NULL; + if(tmp.key) tmp.key->id.us--; + tmp.key = NULL; } *me = tmp; From 992a4e8e7a4da9e4f3f5dadbf996854da2bfd0bd Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 23 Jun 2010 10:24:35 +0000 Subject: [PATCH 174/674] Fix a crash when failing to read .tga files in some cases. --- source/blender/imbuf/intern/targa.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/blender/imbuf/intern/targa.c b/source/blender/imbuf/intern/targa.c index 3c14189a292..09aaccc1ab6 100644 --- a/source/blender/imbuf/intern/targa.c +++ b/source/blender/imbuf/intern/targa.c @@ -592,8 +592,10 @@ struct ImBuf *imb_loadtarga(unsigned char *mem, int mem_size, int flags) if (flags & IB_test) return (ibuf); if (tga.imgtyp != 1 && tga.imgtyp != 9) { /* happens sometimes (beuh) */ - MEM_freeN(cmap); - cmap= NULL; + if(cmap) { + MEM_freeN(cmap); + cmap= NULL; + } } switch(tga.imgtyp){ From 08b5e5a492d5ac4097d814debb3c4520cb18e33d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 23 Jun 2010 11:46:58 +0000 Subject: [PATCH 175/674] fix for rare crash when a material is set in the outliner for an object with no material bits. --- source/blender/editors/space_outliner/outliner.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c index aed8472b8d9..bcf186ad4e9 100644 --- a/source/blender/editors/space_outliner/outliner.c +++ b/source/blender/editors/space_outliner/outliner.c @@ -1927,7 +1927,8 @@ static int tree_element_active_material(bContext *C, Scene *scene, SpaceOops *so /* we search for the object parent */ ob= (Object *)outliner_search_back(soops, te, ID_OB); - if(ob==NULL || ob!=OBACT) return 0; // just paranoia + // note: ob->matbits can be NULL when a local object points to a library mesh. + if(ob==NULL || ob!=OBACT || ob->matbits==NULL) return 0; // just paranoia /* searching in ob mat array? */ tes= te->parent; From 46d28a5e8dee014fe3aadce6c137eb5d67b9e4ac Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Wed, 23 Jun 2010 12:27:13 +0000 Subject: [PATCH 176/674] Sculpt+shape keys: - Sculpting on the basis key should change original mesh - For relative keys sculpting on basis key should update others --- source/blender/blenkernel/BKE_key.h | 1 + source/blender/blenkernel/intern/key.c | 51 +++++++++++++++++ source/blender/editors/sculpt_paint/sculpt.c | 60 +++++++++++++++++++- 3 files changed, 110 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/BKE_key.h b/source/blender/blenkernel/BKE_key.h index c94955e611e..31e920406c0 100644 --- a/source/blender/blenkernel/BKE_key.h +++ b/source/blender/blenkernel/BKE_key.h @@ -77,6 +77,7 @@ void key_to_curve(struct KeyBlock *kb, struct Curve *cu, struct ListBase *nurb) void curve_to_key(struct Curve *cu, struct KeyBlock *kb, struct ListBase *nurb); float (*key_to_vertcos(struct Object *ob, struct KeyBlock *kb))[3]; void vertcos_to_key(struct Object *ob, struct KeyBlock *kb, float (*vertCos)[3]); +void offset_to_key(struct Object *ob, struct KeyBlock *kb, float (*ofs)[3]); #ifdef __cplusplus }; diff --git a/source/blender/blenkernel/intern/key.c b/source/blender/blenkernel/intern/key.c index 84484417f42..b8219c4aa35 100644 --- a/source/blender/blenkernel/intern/key.c +++ b/source/blender/blenkernel/intern/key.c @@ -1868,3 +1868,54 @@ void vertcos_to_key(Object *ob, KeyBlock *kb, float (*vertCos)[3]) } } } + +void offset_to_key(Object *ob, KeyBlock *kb, float (*ofs)[3]) +{ + int a; + float *co= (float*)ofs, *fp= kb->data; + + if(ELEM(ob->type, OB_MESH, OB_LATTICE)) { + for (a= 0; atotelem; a++, fp+=3, co+=3) { + add_v3_v3(fp, co); + } + } else if(ELEM(ob->type, OB_CURVE, OB_SURF)) { + Curve *cu= (Curve*)ob->data; + Nurb *nu= cu->nurb.first; + BezTriple *bezt; + BPoint *bp; + + while (nu) { + if(nu->bezt) { + int i; + bezt= nu->bezt; + a= nu->pntsu; + + while (a--) { + for (i= 0; i<3; i++) { + add_v3_v3(fp, co); + fp+= 3; co+= 3; + } + + fp+= 3; /* skip alphas */ + + bezt++; + } + } + else { + bp= nu->bp; + a= nu->pntsu*nu->pntsv; + + while (a--) { + add_v3_v3(fp, co); + + fp+= 4; + co+= 3; + + bp++; + } + } + + nu= nu->next; + } + } +} diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 91769c92efe..53e07a50020 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -91,6 +91,11 @@ /* Number of vertices to average in order to determine the flatten distance */ #define FLATTEN_SAMPLE_SIZE 10 +/* ==== FORWARD DEFINITIONS ===== + * + */ +static void sculpt_vertcos_to_key(Object *ob, KeyBlock *kb, float (*vertCos)[3]); + /* ===== STRUCTS ===== * */ @@ -364,7 +369,7 @@ static void sculpt_undo_restore(bContext *C, ListBase *lb) swap_v3_v3(vertCos[index[i]], unode->co[i]); /* propagate new coords to keyblock */ - vertcos_to_key(ob, ss->kb, vertCos); + sculpt_vertcos_to_key(ob, ss->kb, vertCos); /* pbvh uses it's own mvert array, so coords should be */ /* propagated to pbvh here */ @@ -1408,13 +1413,64 @@ static void do_flatten_clay_brush(Sculpt *sd, SculptSession *ss, PBVHNode **node } } +static void sculpt_vertcos_to_key(Object *ob, KeyBlock *kb, float (*vertCos)[3]) +{ + Mesh *me= (Mesh*)ob->data; + float (*ofs)[3]= NULL; + int a, is_basis= 0; + KeyBlock *currkey; + + /* for relative keys editing of base should update other keys */ + if (me->key->type == KEY_RELATIVE) + for (currkey = me->key->block.first; currkey; currkey= currkey->next) + if(ob->shapenr-1 == currkey->relative) { + is_basis= 1; + break; + } + + if (is_basis) { + ofs= key_to_vertcos(ob, kb); + + /* calculate key coord offsets (from previous location) */ + for (a= 0; a < me->totvert; a++) { + VECSUB(ofs[a], vertCos[a], ofs[a]); + } + + /* apply offsets on other keys */ + currkey = me->key->block.first; + while (currkey) { + int apply_offset = ((currkey != kb) && (ob->shapenr-1 == currkey->relative)); + + if (apply_offset) + offset_to_key(ob, currkey, ofs); + + currkey= currkey->next; + } + + MEM_freeN(ofs); + } + + /* modifying of basis key should update mesh */ + if (kb == me->key->refkey) { + MVert *mvert= me->mvert; + + for (a= 0; a < me->totvert; a++, mvert++) + VECCOPY(mvert->co, vertCos[a]); + + mesh_calc_normals(me->mvert, me->totvert, me->mface, me->totface, NULL); + } + + /* apply new coords on active key block */ + vertcos_to_key(ob, kb, vertCos); +} + /* copy the modified vertices from bvh to the active key */ static void sculpt_update_keyblock(SculptSession *ss) { float (*vertCos)[3]= BLI_pbvh_get_vertCos(ss->pbvh); if (vertCos) { - vertcos_to_key(ss->ob, ss->kb, vertCos); + sculpt_vertcos_to_key(ss->ob, ss->kb, vertCos); MEM_freeN(vertCos); } } From 4e851ac670ce54996270b02ad1663ea86b15a2ab Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 23 Jun 2010 12:41:38 +0000 Subject: [PATCH 177/674] Fix crash when rendering with output to full screen and the mouse cursor not over any area, e.g. on the border between two areas. --- source/blender/editors/render/render_internal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c index 268acba1db7..48ad3bbcc94 100644 --- a/source/blender/editors/render/render_internal.c +++ b/source/blender/editors/render/render_internal.c @@ -221,7 +221,7 @@ void screen_set_image_output(bContext *C, int mx, int my) sa= CTX_wm_area(C); } else if(scene->r.displaymode==R_OUTPUT_SCREEN) { - if (CTX_wm_area(C)->spacetype == SPACE_IMAGE) + if (CTX_wm_area(C) && CTX_wm_area(C)->spacetype == SPACE_IMAGE) area_was_image = 1; /* this function returns with changed context */ From 989cca1434419682aa04fa65ced5e69b33ffd3fa Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 23 Jun 2010 13:18:50 +0000 Subject: [PATCH 178/674] Fix #21369: normals on extruded text and curve objects were flipped for the backside, giving problems with e.g. boolean operations. --- source/blender/blenkernel/BKE_displist.h | 2 +- source/blender/blenkernel/intern/displist.c | 15 +++++++++------ source/blender/editors/mesh/editmesh_mods.c | 2 +- source/blender/python/generic/geometry.c | 2 +- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/source/blender/blenkernel/BKE_displist.h b/source/blender/blenkernel/BKE_displist.h index febe0a11ae6..9e75e55adf6 100644 --- a/source/blender/blenkernel/BKE_displist.h +++ b/source/blender/blenkernel/BKE_displist.h @@ -99,7 +99,7 @@ extern void shadeMeshMCol(struct Scene *scene, struct Object *ob, struct Mesh *m int surfindex_displist(DispList *dl, int a, int *b, int *p1, int *p2, int *p3, int *p4); void imagestodisplist(void); void reshadeall_displist(struct Scene *scene); -void filldisplist(struct ListBase *dispbase, struct ListBase *to); +void filldisplist(struct ListBase *dispbase, struct ListBase *to, int flipnormal); void fastshade_free_render(void); diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c index ae225fd19b7..a958d8c353b 100644 --- a/source/blender/blenkernel/intern/displist.c +++ b/source/blender/blenkernel/intern/displist.c @@ -925,7 +925,7 @@ static void curve_to_displist(Curve *cu, ListBase *nubase, ListBase *dispbase) } -void filldisplist(ListBase *dispbase, ListBase *to) +void filldisplist(ListBase *dispbase, ListBase *to, int flipnormal) { EditVert *eve, *v1, *vlast; EditFace *efa; @@ -1019,6 +1019,9 @@ void filldisplist(ListBase *dispbase, ListBase *to) index[0]= (intptr_t)efa->v1->tmp.l; index[1]= (intptr_t)efa->v2->tmp.l; index[2]= (intptr_t)efa->v3->tmp.l; + + if(flipnormal) + SWAP(int, index[0], index[2]); index+= 3; efa= efa->next; @@ -1095,13 +1098,13 @@ static void bevels_to_filledpoly(Curve *cu, ListBase *dispbase) dl= dl->next; } - filldisplist(&front, dispbase); - filldisplist(&back, dispbase); + filldisplist(&front, dispbase, 1); + filldisplist(&back, dispbase, 0); freedisplist(&front); freedisplist(&back); - filldisplist(dispbase, dispbase); + filldisplist(dispbase, dispbase, 0); } @@ -1113,7 +1116,7 @@ static void curve_to_filledpoly(Curve *cu, ListBase *nurb, ListBase *dispbase) bevels_to_filledpoly(cu, dispbase); } else { - filldisplist(dispbase, dispbase); + filldisplist(dispbase, dispbase, 0); } } @@ -1315,7 +1318,7 @@ static void curve_calc_modifiers_post(Scene *scene, Object *ob, ListBase *dispba ModifierData *preTesselatePoint; Curve *cu= ob->data; ListBase *nurb= cu->editnurb?cu->editnurb:&cu->nurb; - int required_mode, totvert; + int required_mode, totvert = 0; int editmode = (!forRender && cu->editnurb); DerivedMesh *dm= NULL, *ndm; float (*vertCos)[3] = NULL; diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c index 4bc5030094e..5ac70d8f54c 100644 --- a/source/blender/editors/mesh/editmesh_mods.c +++ b/source/blender/editors/mesh/editmesh_mods.c @@ -186,7 +186,7 @@ static void draw_triangulated(short mcords[][2], short tot) } /* do the fill */ - filldisplist(&lb, &lb); + filldisplist(&lb, &lb, 0); /* do the draw */ dl= lb.first; /* filldisplist adds in head of list */ diff --git a/source/blender/python/generic/geometry.c b/source/blender/python/generic/geometry.c index 18907bb3012..586c6a3406d 100644 --- a/source/blender/python/generic/geometry.c +++ b/source/blender/python/generic/geometry.c @@ -419,7 +419,7 @@ static PyObject *M_Geometry_PolyFill( PyObject * self, PyObject * polyLineSeq ) } else if (totpoints) { /* now make the list to return */ - filldisplist(&dispbase, &dispbase); + filldisplist(&dispbase, &dispbase, 0); /* The faces are stored in a new DisplayList thats added to the head of the listbase */ From 4596588fe8f61c4138b5edd6760dbabdd04fbb35 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 23 Jun 2010 15:07:20 +0000 Subject: [PATCH 179/674] - avoid divide by zero with node progress - write_crash_blend() was writing to the original path. --- source/blender/blenkernel/intern/node.c | 2 +- source/blender/windowmanager/intern/wm_files.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index 13ea55ebf0f..add011d0950 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -2465,7 +2465,7 @@ void ntreeCompositExecTree(bNodeTree *ntree, RenderData *rd, int do_preview) node= getExecutableNode(ntree); if(node) { - if(ntree->progress) + if(ntree->progress && totnode) ntree->progress(ntree->prh, (1.0 - curnode/(float)totnode)); if(ntree->stats_draw) { char str[64]; diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 93fe5e58a43..1357b96fe70 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -539,7 +539,7 @@ int write_crash_blend(void) char path[FILE_MAX]; BLI_strncpy(path, G.sce, sizeof(path)); BLI_replace_extension(path, sizeof(path), "_crash.blend"); - if(BLO_write_file(G.main, G.sce, G.fileflags, NULL, NULL)) { + if(BLO_write_file(G.main, path, G.fileflags, NULL, NULL)) { printf("written: %s\n", path); return 1; } From 4e3913397023b99c42b5952c89769f0b4430e76b Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 23 Jun 2010 16:35:42 +0000 Subject: [PATCH 180/674] Fix #21370: VBO does not display material colors in textured solid. --- source/blender/blenkernel/intern/cdderivedmesh.c | 4 ++-- source/blender/editors/space_view3d/drawmesh.c | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 9612dac2ac4..9bba893c2c8 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -744,7 +744,7 @@ static void cdDM_drawFacesTex_common(DerivedMesh *dm, if( flag != lastFlag ) { if( startFace < i ) { if( lastFlag != 0 ) { /* if the flag is 0 it means the face is hidden or invisible */ - if (lastFlag==1 && mcol) + if (lastFlag==1 && col) GPU_color_switch(1); else GPU_color_switch(0); @@ -757,7 +757,7 @@ static void cdDM_drawFacesTex_common(DerivedMesh *dm, } if( startFace < dm->drawObject->nelements/3 ) { if( lastFlag != 0 ) { /* if the flag is 0 it means the face is hidden or invisible */ - if (lastFlag==1 && mcol) + if (lastFlag==1 && col) GPU_color_switch(1); else GPU_color_switch(0); diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c index ced745bb5d4..63155a95601 100644 --- a/source/blender/editors/space_view3d/drawmesh.c +++ b/source/blender/editors/space_view3d/drawmesh.c @@ -430,7 +430,7 @@ static int draw_tface__set_draw(MTFace *tface, MCol *mcol, int matnr) } else if (tface && tface->mode&TF_OBCOL) { return 2; /* Don't set color */ } else if (!mcol) { - return 2; /* Don't set color */ + return 1; /* Don't set color */ } else { return 1; /* Set color from mcol */ } @@ -465,9 +465,9 @@ static void add_tface_color_layer(DerivedMesh *dm) } } else if (tface && tface->mode&TF_OBCOL) { for(j=0;j<4;j++) { - finalCol[i*4+j].r = Gtexdraw.obcol[0]; - finalCol[i*4+j].g = Gtexdraw.obcol[1]; - finalCol[i*4+j].b = Gtexdraw.obcol[2]; + finalCol[i*4+j].r = FTOCHAR(Gtexdraw.obcol[0]); + finalCol[i*4+j].g = FTOCHAR(Gtexdraw.obcol[1]); + finalCol[i*4+j].b = FTOCHAR(Gtexdraw.obcol[2]); } } else if (!mcol) { if (tface) { @@ -486,9 +486,9 @@ static void add_tface_color_layer(DerivedMesh *dm) else copy_v3_v3(col, &ma->r); for(j=0;j<4;j++) { - finalCol[i*4+j].b = col[2]; - finalCol[i*4+j].g = col[1]; - finalCol[i*4+j].r = col[0]; + finalCol[i*4+j].b = FTOCHAR(col[2]); + finalCol[i*4+j].g = FTOCHAR(col[1]); + finalCol[i*4+j].r = FTOCHAR(col[0]); } } else @@ -535,7 +535,7 @@ static int draw_em_tf_mapped__set_draw(void *userData, int index) mcol = CustomData_em_get(&em->fdata, efa->data, CD_MCOL); matnr = efa->mat_nr; - return draw_tface__set_draw(tface, mcol, matnr); + return draw_tface__set_draw_legacy(tface, mcol, matnr); } static int wpaint__setSolidDrawOptions(void *userData, int index, int *drawSmooth_r) From 5b9059e2bd5be30500f7207ff4728f8cb1f4b2ff Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Wed, 23 Jun 2010 17:40:17 +0000 Subject: [PATCH 181/674] Compile fix for changes in "filldisplist" function. --- source/blender/collada/DocumentImporter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp index b4185c5021f..a415b90ff08 100644 --- a/source/blender/collada/DocumentImporter.cpp +++ b/source/blender/collada/DocumentImporter.cpp @@ -1543,7 +1543,7 @@ private: vert += 3; } - filldisplist(&dispbase, &dispbase); + filldisplist(&dispbase, &dispbase, 0); int tottri = 0; dl= (DispList*)dispbase.first; From f507428d1189b48ba66a4a7826cd5db178b383a1 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 23 Jun 2010 18:47:56 +0000 Subject: [PATCH 182/674] Fix #22553: dragging number buttons would run update functions more often than necessary due to the more accurate mouse move events that are useful for sculpting and painting (at least on Linux/X11, not sure about other platforms). If the update function takes a while to run, this in turn causes more mouse move events to be accumulated, making things even slower, .. going into a spiral of slower and slower redraws. As a solution I've added a INBETWEEN_MOUSEMOVE event next to MOUSEMOVE. A MOUSEMOVE event is automatically changed to INBETWEEN_MOUSEMOVE when a MOUSEMOVE event is added after it. This new event type is only handled by painting/sculpting operators, everything else can happily ignore it. --- source/blender/editors/gpencil/gpencil_paint.c | 1 + source/blender/editors/sculpt_paint/paint_image.c | 1 + source/blender/editors/sculpt_paint/paint_stroke.c | 2 +- source/blender/makesrna/intern/rna_wm.c | 1 + source/blender/windowmanager/intern/wm_event_system.c | 9 ++++++++- source/blender/windowmanager/wm_event_types.h | 1 + 6 files changed, 13 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c index e06722c1af1..b52297a319c 100644 --- a/source/blender/editors/gpencil/gpencil_paint.c +++ b/source/blender/editors/gpencil/gpencil_paint.c @@ -1481,6 +1481,7 @@ static int gpencil_draw_modal (bContext *C, wmOperator *op, wmEvent *event) /* moving mouse - assumed that mouse button is down if in painting status */ case MOUSEMOVE: + case INBETWEEN_MOUSEMOVE: /* check if we're currently painting */ if (p->status == GP_STATUS_PAINTING) { /* handle drawing event */ diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index 64f00caf479..6269b9c5e09 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -4872,6 +4872,7 @@ static int paint_modal(bContext *C, wmOperator *op, wmEvent *event) paint_exit(C, op); return OPERATOR_FINISHED; case MOUSEMOVE: + case INBETWEEN_MOUSEMOVE: paint_apply_event(C, op, event); break; case TIMER: diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c index 03454a305ba..441464c5743 100644 --- a/source/blender/editors/sculpt_paint/paint_stroke.c +++ b/source/blender/editors/sculpt_paint/paint_stroke.c @@ -275,7 +275,7 @@ int paint_stroke_modal(bContext *C, wmOperator *op, wmEvent *event) MEM_freeN(stroke); return OPERATOR_FINISHED; } - else if(first || event->type == MOUSEMOVE || (event->type == TIMER && (event->customdata == stroke->timer))) { + else if(first || ELEM(event->type, MOUSEMOVE, INBETWEEN_MOUSEMOVE) || (event->type == TIMER && (event->customdata == stroke->timer))) { if(stroke->stroke_started) { if(paint_smooth_stroke(stroke, mouse, event)) { if(paint_space_stroke_enabled(stroke->brush)) { diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index 52c18b4e581..1797df2abf0 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -114,6 +114,7 @@ EnumPropertyItem event_type_items[] = { {SELECTMOUSE, "SELECTMOUSE", 0, "Select Mouse", ""}, {0, "", 0, NULL, NULL}, {MOUSEMOVE, "MOUSEMOVE", 0, "Mouse Move", ""}, + {INBETWEEN_MOUSEMOVE, "INBETWEEN_MOUSEMOVE", 0, "Inbetween Move", ""}, {MOUSEPAN, "TRACKPADPAN", 0, "Mouse/Trackpad Pan", ""}, {MOUSEZOOM, "TRACKPADZOOM", 0, "Mouse/Trackpad Zoom", ""}, {MOUSEROTATE, "MOUSEROTATE", 0, "Mouse/Trackpad Rotate", ""}, diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 70e804758b2..330244e910e 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1614,7 +1614,7 @@ void wm_event_do_handlers(bContext *C) while( (event= win->queue.first) ) { int action = WM_HANDLER_CONTINUE; - if((G.f & G_DEBUG) && event && event->type!=MOUSEMOVE) + if((G.f & G_DEBUG) && event && !ELEM(event->type, MOUSEMOVE, INBETWEEN_MOUSEMOVE)) printf("pass on evt %d val %d\n", event->type, event->val); wm_eventemulation(event); @@ -2138,6 +2138,7 @@ void wm_event_add_ghostevent(wmWindowManager *wm, wmWindow *win, int type, int t case GHOST_kEventCursorMove: { if(win->active) { GHOST_TEventCursorData *cd= customdata; + wmEvent *lastevent= win->queue.last; #if defined(__APPLE__) && defined(GHOST_COCOA) //Cocoa already uses coordinates with y=0 at bottom, and returns inwindow coordinates on mouse moved event @@ -2156,6 +2157,12 @@ void wm_event_add_ghostevent(wmWindowManager *wm, wmWindow *win, int type, int t event.type= MOUSEMOVE; + /* some painting operators want accurate mouse events, they can + handle inbetween mouse move moves, others can happily ignore + them for better performance */ + if(lastevent && lastevent->type == MOUSEMOVE) + lastevent->type = INBETWEEN_MOUSEMOVE; + update_tablet_data(win, &event); wm_event_add(win, &event); diff --git a/source/blender/windowmanager/wm_event_types.h b/source/blender/windowmanager/wm_event_types.h index a93214e9a54..6cb3971bd21 100644 --- a/source/blender/windowmanager/wm_event_types.h +++ b/source/blender/windowmanager/wm_event_types.h @@ -70,6 +70,7 @@ /* mapped with userdef */ #define WHEELINMOUSE 0x00c #define WHEELOUTMOUSE 0x00d +#define INBETWEEN_MOUSEMOVE 0x011 /* SYSTEM : 0x01xx */ From 51170fdee3f5f693473840fd14e582801cb65132 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Thu, 24 Jun 2010 04:52:28 +0000 Subject: [PATCH 183/674] Logic UI: small fixes 1) "Actuators" menu wasn't working (it was showing the sensors one) 2) s/c/a top menus (the one showing options to hide/show objects and logics) with a big space. - To have those options like this sounds a bit like a legacy, but for the time being at least, let's make it better :) 3) not show the s/c/a common header when object not visible --- .../editors/space_logic/logic_window.c | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index 6142145ae1d..409277cb66e 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -4426,7 +4426,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar) layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, xco, yco, width, 20, U.uistyles.first); row = uiLayoutRow(layout, 1); - uiDefBlockBut(block, controller_menu, NULL, "Controllers", xco-10, yco, 70, UI_UNIT_Y, ""); /* replace this with uiLayout stuff later */ + uiDefBlockBut(block, controller_menu, NULL, "Controllers", xco-10, yco, 300, UI_UNIT_Y, ""); /* replace this with uiLayout stuff later */ uiItemR(row, &logic_ptr, "controllers_show_selected_objects", 0, "Sel", 0); uiItemR(row, &logic_ptr, "controllers_show_active_objects", 0, "Act", 0); @@ -4439,6 +4439,9 @@ static void logic_buttons_new(bContext *C, ARegion *ar) int iact; ob= (Object *)idar[a]; + + /* only draw the controller common header if "visible" */ + if( (ob->scavisflag & OB_VIS_CONT) == 0) continue; /* Drawing the Controller Header common to all Selected Objects */ @@ -4475,7 +4478,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar) /* End of Drawing the Controller Header common to all Selected Objects */ - if (!(ob->scavisflag & OB_VIS_CONT) || !(ob->scaflag & OB_SHOWCONT)) continue; + if ((ob->scaflag & OB_SHOWCONT) == 0) continue; uiItemS(layout); @@ -4524,7 +4527,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar) layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, xco, yco, width, 20, U.uistyles.first); row = uiLayoutRow(layout, 1); - uiDefBlockBut(block, sensor_menu, NULL, "Sensors", xco-10, yco, 70, UI_UNIT_Y, ""); /* replace this with uiLayout stuff later */ + uiDefBlockBut(block, sensor_menu, NULL, "Sensors", xco-10, yco, 300, UI_UNIT_Y, ""); /* replace this with uiLayout stuff later */ uiItemR(row, &logic_ptr, "sensors_show_selected_objects", 0, "Sel", 0); uiItemR(row, &logic_ptr, "sensors_show_active_objects", 0, "Act", 0); @@ -4537,11 +4540,14 @@ static void logic_buttons_new(bContext *C, ARegion *ar) ob= (Object *)idar[a]; + /* only draw the sensor common header if "visible" */ + if((ob->scavisflag & OB_VIS_SENS) == 0) continue; + row = uiLayoutRow(layout, 1); uiDefButBitS(block, TOG, OB_SHOWSENS, B_REDR, ob->id.name+2,(short)(xco-10), yco, (short)(width-30), UI_UNIT_Y, &ob->scaflag, 0, 31, 0, 0, "Object name, click to show/hide sensors"); uiItemMenuEnumO(row, "LOGIC_OT_sensor_add", "type", "Add Sensor", 0); - if (!(ob->scavisflag & OB_VIS_SENS) || !(ob->scaflag & OB_SHOWSENS)) continue; + if ((ob->scaflag & OB_SHOWSENS) == 0) continue; uiItemS(layout); @@ -4583,7 +4589,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar) layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, xco, yco, width, 20, U.uistyles.first); row = uiLayoutRow(layout, 1); - uiDefBlockBut(block, sensor_menu, NULL, "Actuators", xco-10, yco, 70, UI_UNIT_Y, ""); /* replace this with uiLayout stuff later */ + uiDefBlockBut(block, actuator_menu, NULL, "Actuators", xco-10, yco, 300, UI_UNIT_Y, ""); /* replace this with uiLayout stuff later */ uiItemR(row, &logic_ptr, "actuators_show_selected_objects", 0, "Sel", 0); uiItemR(row, &logic_ptr, "actuators_show_active_objects", 0, "Act", 0); @@ -4596,11 +4602,14 @@ static void logic_buttons_new(bContext *C, ARegion *ar) ob= (Object *)idar[a]; + /* only draw the actuator common header if "visible" */ + if( (ob->scavisflag & OB_VIS_ACT) == 0) continue; + row = uiLayoutRow(layout, 1); uiDefButBitS(block, TOG, OB_SHOWACT, B_REDR, ob->id.name+2,(short)(xco-10), yco, (short)(width-30), UI_UNIT_Y, &ob->scaflag, 0, 31, 0, 0, "Object name, click to show/hide actuators"); uiItemMenuEnumO(row, "LOGIC_OT_actuator_add", "type", "Add Actuator", 0); - if (!(ob->scavisflag & OB_VIS_ACT) || !(ob->scaflag & OB_SHOWACT)) continue; + if ((ob->scaflag & OB_SHOWACT) == 0) continue; uiItemS(layout); From 4c810198230fda35589586238a0da549c5c2c7d3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 24 Jun 2010 10:04:18 +0000 Subject: [PATCH 184/674] Move some sequencer functions about, no functional changes. - Remove SEQ_DESEL, better not have a flag which includes ~, use ~SEQ_ALLSEL instead. - Rename recurs_dupli_seq -> seqbase_dupli_recursive - Rename deep_dupli_seq -> seq_dupli_recursive --- source/blender/blenkernel/BKE_sequencer.h | 3 + source/blender/blenkernel/intern/scene.c | 1 + source/blender/blenkernel/intern/sequencer.c | 127 ++++++++++++++ .../editors/space_sequencer/sequencer_edit.c | 162 ++---------------- .../space_sequencer/sequencer_intern.h | 2 - .../space_sequencer/sequencer_select.c | 8 +- source/blender/makesdna/DNA_sequence_types.h | 3 + 7 files changed, 156 insertions(+), 150 deletions(-) diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index 9b96363dd23..ad95780268b 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -191,12 +191,15 @@ int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test, struct Scene int shuffle_seq_time(ListBase * seqbasep, struct Scene *evil_scene); int seqbase_isolated_sel_check(struct ListBase *seqbase); void free_imbuf_seq(struct Scene *scene, struct ListBase * seqbasep, int check_mem_usage); +struct Sequence *seq_dupli_recursive(struct Scene *scene, struct Sequence * seq); int seq_swap(struct Sequence *seq_a, struct Sequence *seq_b); void seq_update_sound(struct Scene* scene, struct Sequence *seq); void seq_update_muting(struct Scene* scene, struct Editing *ed); void seqbase_sound_reload(Scene *scene, ListBase *seqbase); void seqbase_unique_name_recursive(ListBase *seqbasep, struct Sequence *seq); +void seqbase_dupli_recursive(struct Scene *scene, ListBase *nseqbase, ListBase *seqbase, int do_context); + void clear_scene_in_allseqs(struct Scene *sce); struct Sequence *get_seq_by_name(struct ListBase *seqbase, const char *name, int recursive); diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 0e4b36d724d..6f049df917c 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -44,6 +44,7 @@ #include "DNA_group_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" +#include "DNA_sequence_types.h" #include "BKE_anim.h" #include "BKE_animsys.h" diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 94d9b90fe7f..f16b169a4fb 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -4086,3 +4086,130 @@ Sequence *sequencer_add_movie_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo return seq; } + + +static Sequence *dupli_seq(struct Scene *scene, Sequence *seq) +{ + Sequence *seqn = MEM_dupallocN(seq); + + seq->tmp = seqn; + seqn->strip= MEM_dupallocN(seq->strip); + + // XXX: add F-Curve duplication stuff? + + seqn->strip->tstripdata = 0; + seqn->strip->tstripdata_startstill = 0; + seqn->strip->tstripdata_endstill = 0; + seqn->strip->ibuf_startstill = 0; + seqn->strip->ibuf_endstill = 0; + + if (seq->strip->crop) { + seqn->strip->crop = MEM_dupallocN(seq->strip->crop); + } + + if (seq->strip->transform) { + seqn->strip->transform = MEM_dupallocN(seq->strip->transform); + } + + if (seq->strip->proxy) { + seqn->strip->proxy = MEM_dupallocN(seq->strip->proxy); + } + + if (seq->strip->color_balance) { + seqn->strip->color_balance + = MEM_dupallocN(seq->strip->color_balance); + } + + if(seq->type==SEQ_META) { + seqn->strip->stripdata = 0; + + seqn->seqbase.first= seqn->seqbase.last= 0; + /* WATCH OUT!!! - This metastrip is not recursively duplicated here - do this after!!! */ + /* - seq_dupli_recursive(&seq->seqbase,&seqn->seqbase);*/ + } else if(seq->type == SEQ_SCENE) { + seqn->strip->stripdata = 0; + if(seq->scene_sound) + seqn->scene_sound = sound_scene_add_scene_sound(scene, seqn, seq->startdisp, seq->enddisp, seq->startofs + seq->anim_startofs); + } else if(seq->type == SEQ_MOVIE) { + seqn->strip->stripdata = + MEM_dupallocN(seq->strip->stripdata); + seqn->anim= 0; + } else if(seq->type == SEQ_SOUND) { + seqn->strip->stripdata = + MEM_dupallocN(seq->strip->stripdata); + if(seq->scene_sound) + seqn->scene_sound = sound_add_scene_sound(scene, seqn, seq->startdisp, seq->enddisp, seq->startofs + seq->anim_startofs); + + seqn->sound->id.us++; + } else if(seq->type == SEQ_IMAGE) { + seqn->strip->stripdata = + MEM_dupallocN(seq->strip->stripdata); + } else if(seq->type >= SEQ_EFFECT) { + if(seq->seq1 && seq->seq1->tmp) seqn->seq1= seq->seq1->tmp; + if(seq->seq2 && seq->seq2->tmp) seqn->seq2= seq->seq2->tmp; + if(seq->seq3 && seq->seq3->tmp) seqn->seq3= seq->seq3->tmp; + + if (seq->type & SEQ_EFFECT) { + struct SeqEffectHandle sh; + sh = get_sequence_effect(seq); + if(sh.copy) + sh.copy(seq, seqn); + } + + seqn->strip->stripdata = 0; + + } else { + fprintf(stderr, "Aiiiiekkk! sequence type not " + "handled in duplicate!\nExpect a crash" + " now...\n"); + } + + seqbase_unique_name_recursive(&scene->ed->seqbase, seqn); + + return seqn; +} + +Sequence * seq_dupli_recursive(struct Scene *scene, Sequence * seq) +{ + Sequence * seqn = dupli_seq(scene, seq); + if (seq->type == SEQ_META) { + Sequence * s; + for(s= seq->seqbase.first; s; s = s->next) { + Sequence *n = seq_dupli_recursive(scene, s); + if (n) { + BLI_addtail(&seqn->seqbase, n); + } + } + } + return seqn; +} + +void seqbase_dupli_recursive(Scene *scene, ListBase *nseqbase, ListBase *seqbase, int do_context) +{ + Sequence *seq; + Sequence *seqn = 0; + Sequence *last_seq = seq_active_get(scene); + + for(seq= seqbase->first; seq; seq= seq->next) { + seq->tmp= NULL; + if(seq->flag & SELECT) { + seqn = dupli_seq(scene, seq); + if (seqn) { /*should never fail */ + if(do_context) { + seq->flag &= ~SEQ_ALLSEL; + seqn->flag &= ~(SEQ_LEFTSEL+SEQ_RIGHTSEL+SEQ_LOCK); + } + + BLI_addtail(nseqbase, seqn); + if(seq->type==SEQ_META) + seqbase_dupli_recursive(scene, &seqn->seqbase, &seq->seqbase, do_context); + + if(do_context) { + if (seq == last_seq) { + seq_active_set(scene, seqn); + } + } + } + } + } +} diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 635fceedcd2..31e0eea3e25 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -389,7 +389,7 @@ void deselect_all_seq(Scene *scene) if(ed==NULL) return; SEQP_BEGIN(ed, seq) { - seq->flag &= SEQ_DESEL; + seq->flag &= ~SEQ_ALLSEL; } SEQ_END @@ -402,9 +402,9 @@ void recurs_sel_seq(Sequence *seqm) seq= seqm->seqbase.first; while(seq) { - if(seqm->flag & (SEQ_LEFTSEL+SEQ_RIGHTSEL)) seq->flag &= SEQ_DESEL; + if(seqm->flag & (SEQ_LEFTSEL+SEQ_RIGHTSEL)) seq->flag &= ~SEQ_ALLSEL; else if(seqm->flag & SELECT) seq->flag |= SELECT; - else seq->flag &= SEQ_DESEL; + else seq->flag &= ~SEQ_ALLSEL; if(seq->seqbase.first) recurs_sel_seq(seq); @@ -768,132 +768,6 @@ static void recurs_del_seq_flag(Scene *scene, ListBase *lb, short flag, short de } } -static Sequence *dupli_seq(struct Scene *scene, Sequence *seq) -{ - Sequence *seqn = MEM_dupallocN(seq); - - seq->tmp = seqn; - seqn->strip= MEM_dupallocN(seq->strip); - - // XXX: add F-Curve duplication stuff? - - seqn->strip->tstripdata = 0; - seqn->strip->tstripdata_startstill = 0; - seqn->strip->tstripdata_endstill = 0; - seqn->strip->ibuf_startstill = 0; - seqn->strip->ibuf_endstill = 0; - - if (seq->strip->crop) { - seqn->strip->crop = MEM_dupallocN(seq->strip->crop); - } - - if (seq->strip->transform) { - seqn->strip->transform = MEM_dupallocN(seq->strip->transform); - } - - if (seq->strip->proxy) { - seqn->strip->proxy = MEM_dupallocN(seq->strip->proxy); - } - - if (seq->strip->color_balance) { - seqn->strip->color_balance - = MEM_dupallocN(seq->strip->color_balance); - } - - if(seq->type==SEQ_META) { - seqn->strip->stripdata = 0; - - seqn->seqbase.first= seqn->seqbase.last= 0; - /* WATCH OUT!!! - This metastrip is not recursively duplicated here - do this after!!! */ - /* - recurs_dupli_seq(&seq->seqbase,&seqn->seqbase);*/ - } else if(seq->type == SEQ_SCENE) { - seqn->strip->stripdata = 0; - if(seq->scene_sound) - seqn->scene_sound = sound_scene_add_scene_sound(scene, seqn, seq->startdisp, seq->enddisp, seq->startofs + seq->anim_startofs); - } else if(seq->type == SEQ_MOVIE) { - seqn->strip->stripdata = - MEM_dupallocN(seq->strip->stripdata); - seqn->anim= 0; - } else if(seq->type == SEQ_SOUND) { - seqn->strip->stripdata = - MEM_dupallocN(seq->strip->stripdata); - if(seq->scene_sound) - seqn->scene_sound = sound_add_scene_sound(scene, seqn, seq->startdisp, seq->enddisp, seq->startofs + seq->anim_startofs); - - seqn->sound->id.us++; - } else if(seq->type == SEQ_IMAGE) { - seqn->strip->stripdata = - MEM_dupallocN(seq->strip->stripdata); - } else if(seq->type >= SEQ_EFFECT) { - if(seq->seq1 && seq->seq1->tmp) seqn->seq1= seq->seq1->tmp; - if(seq->seq2 && seq->seq2->tmp) seqn->seq2= seq->seq2->tmp; - if(seq->seq3 && seq->seq3->tmp) seqn->seq3= seq->seq3->tmp; - - if (seq->type & SEQ_EFFECT) { - struct SeqEffectHandle sh; - sh = get_sequence_effect(seq); - if(sh.copy) - sh.copy(seq, seqn); - } - - seqn->strip->stripdata = 0; - - } else { - fprintf(stderr, "Aiiiiekkk! sequence type not " - "handled in duplicate!\nExpect a crash" - " now...\n"); - } - - seqbase_unique_name_recursive(&scene->ed->seqbase, seqn); - - return seqn; -} - -static Sequence * deep_dupli_seq(struct Scene *scene, Sequence * seq) -{ - Sequence * seqn = dupli_seq(scene, seq); - if (seq->type == SEQ_META) { - Sequence * s; - for(s= seq->seqbase.first; s; s = s->next) { - Sequence * n = deep_dupli_seq(scene, s); - if (n) { - BLI_addtail(&seqn->seqbase, n); - } - } - } - return seqn; -} - - -static void recurs_dupli_seq(Scene *scene, ListBase *old, ListBase *new, int do_context) -{ - Sequence *seq; - Sequence *seqn = 0; - Sequence *last_seq = seq_active_get(scene); - - for(seq= old->first; seq; seq= seq->next) { - seq->tmp= NULL; - if(seq->flag & SELECT) { - seqn = dupli_seq(scene, seq); - if (seqn) { /*should never fail */ - if(do_context) { - seq->flag &= SEQ_DESEL; - seqn->flag &= ~(SEQ_LEFTSEL+SEQ_RIGHTSEL+SEQ_LOCK); - } - - BLI_addtail(new, seqn); - if(seq->type==SEQ_META) - recurs_dupli_seq(scene, &seq->seqbase,&seqn->seqbase, do_context); - - if(do_context) { - if (seq == last_seq) { - seq_active_set(scene, seqn); - } - } - } - } - } -} static Sequence *cut_seq_hard(Scene *scene, Sequence * seq, int cutframe) { @@ -947,7 +821,7 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence * seq, int cutframe) if (!skip_dup) { /* Duplicate AFTER the first change */ - seqn = deep_dupli_seq(scene, seq); + seqn = seq_dupli_recursive(scene, seq); } if (seqn) { @@ -1036,7 +910,7 @@ static Sequence *cut_seq_soft(Scene *scene, Sequence * seq, int cutframe) if (!skip_dup) { /* Duplicate AFTER the first change */ - seqn = deep_dupli_seq(scene, seq); + seqn = seq_dupli_recursive(scene, seq); } if (seqn) { @@ -1621,11 +1495,11 @@ static int sequencer_cut_exec(bContext *C, wmOperator *op) SEQP_BEGIN(ed, seq) { if (cut_side==SEQ_SIDE_LEFT) { if ( seq->startdisp >= cut_frame ) { - seq->flag &= SEQ_DESEL; + seq->flag &= ~SEQ_ALLSEL; } } else { if ( seq->enddisp <= cut_frame ) { - seq->flag &= SEQ_DESEL; + seq->flag &= ~SEQ_ALLSEL; } } } @@ -1687,17 +1561,17 @@ static int sequencer_add_duplicate_exec(bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, FALSE); - ListBase new= {NULL, NULL}; + ListBase nseqbase= {NULL, NULL}; if(ed==NULL) return OPERATOR_CANCELLED; - recurs_dupli_seq(scene, ed->seqbasep, &new, TRUE); + seqbase_dupli_recursive(scene, &nseqbase, ed->seqbasep, TRUE); - if(new.first) { - Sequence * seq= new.first; - /* rely on the new list being added at the end */ - addlisttolist(ed->seqbasep, &new); + if(nseqbase.first) { + Sequence * seq= nseqbase.first; + /* rely on the nseqbase list being added at the end */ + addlisttolist(ed->seqbasep, &nseqbase); for( ; seq; seq= seq->next) seqbase_unique_name_recursive(&ed->seqbase, seq); @@ -2666,7 +2540,7 @@ static int sequencer_copy_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } - recurs_dupli_seq(scene, ed->seqbasep, &seqbase_clipboard, FALSE); + seqbase_dupli_recursive(scene, &seqbase_clipboard, ed->seqbasep, FALSE); seqbase_clipboard_frame= scene->r.cfra; /* Need to remove anything that references the current scene */ @@ -2713,23 +2587,23 @@ static int sequencer_paste_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, TRUE); /* create if needed */ - ListBase new = {NULL, NULL}; + ListBase nseqbase = {NULL, NULL}; int ofs; Sequence *iseq; deselect_all_seq(scene); ofs = scene->r.cfra - seqbase_clipboard_frame; - recurs_dupli_seq(scene, &seqbase_clipboard, &new, FALSE); + seqbase_dupli_recursive(scene, &nseqbase, &seqbase_clipboard, FALSE); /* transform pasted strips before adding */ if(ofs) { - for(iseq= new.first; iseq; iseq= iseq->next) { + for(iseq= nseqbase.first; iseq; iseq= iseq->next) { seq_offset(scene, iseq, ofs); } } - addlisttolist(ed->seqbasep, &new); + addlisttolist(ed->seqbasep, &nseqbase); WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h index 12cc4219ecb..71953ff3ddd 100644 --- a/source/blender/editors/space_sequencer/sequencer_intern.h +++ b/source/blender/editors/space_sequencer/sequencer_intern.h @@ -146,8 +146,6 @@ enum { }; /* defines used internally */ -#define SEQ_ALLSEL (SELECT+SEQ_LEFTSEL+SEQ_RIGHTSEL) -#define SEQ_DESEL ~SEQ_ALLSEL #define SCE_MARKERS 0 // XXX - dummy /* sequencer_ops.c */ diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c index 355b6c1f67b..83fa8bffd58 100644 --- a/source/blender/editors/space_sequencer/sequencer_select.c +++ b/source/blender/editors/space_sequencer/sequencer_select.c @@ -231,7 +231,7 @@ static int sequencer_deselect_exec(bContext *C, wmOperator *op) for(seq= ed->seqbasep->first; seq; seq=seq->next) { if (desel) { - seq->flag &= SEQ_DESEL; + seq->flag &= ~SEQ_ALLSEL; } else { seq->flag &= ~(SEQ_LEFTSEL+SEQ_RIGHTSEL); @@ -269,7 +269,7 @@ static int sequencer_select_inverse_exec(bContext *C, wmOperator *op) for(seq= ed->seqbasep->first; seq; seq=seq->next) { if (seq->flag & SELECT) { - seq->flag &= SEQ_DESEL; + seq->flag &= ~SEQ_ALLSEL; } else { seq->flag &= ~(SEQ_LEFTSEL+SEQ_RIGHTSEL); @@ -409,7 +409,7 @@ static int sequencer_select_invoke(bContext *C, wmOperator *op, wmEvent *event) switch(hand) { case SEQ_SIDE_NONE: if (linked_handle==0) - seq->flag &= SEQ_DESEL; + seq->flag &= ~SEQ_ALLSEL; break; case SEQ_SIDE_LEFT: seq->flag ^= SEQ_LEFTSEL; @@ -860,7 +860,7 @@ static int sequencer_borderselect_exec(bContext *C, wmOperator *op) if(BLI_isect_rctf(&rq, &rectf, 0)) { if(selecting) seq->flag |= SELECT; - else seq->flag &= SEQ_DESEL; + else seq->flag &= ~SEQ_ALLSEL; recurs_sel_seq(seq); } } diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h index 9f395d6e876..84d8e8c8e67 100644 --- a/source/blender/makesdna/DNA_sequence_types.h +++ b/source/blender/makesdna/DNA_sequence_types.h @@ -276,6 +276,9 @@ typedef struct SpeedControlVars { #define SEQ_USE_PROXY_CUSTOM_FILE 2097152 #define SEQ_USE_EFFECT_DEFAULT_FADE 4194304 +/* convenience define for all selection flags */ +#define SEQ_ALLSEL (SELECT+SEQ_LEFTSEL+SEQ_RIGHTSEL) + /* deprecated, dont use a flag anymore*/ /*#define SEQ_ACTIVE 1048576*/ From 93238c3a3d7d986d8a6debccc8d3ace8294a7437 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 24 Jun 2010 15:54:01 +0000 Subject: [PATCH 185/674] Runtime detection of SSE support for raytracing. Also enabled rayoptimization by default now on all platforms since it shouldn't crash anymore if SSE is not there. If this breaks compilation on some platforms, please let me know. --- CMakeLists.txt | 2 +- config/linux2-config.py | 2 +- config/linuxcross-config.py | 2 +- config/win32-mingw-config.py | 2 +- config/win32-vc-config.py | 2 +- config/win64-vc-config.py | 2 +- source/blender/blenlib/BLI_cpu.h | 30 +++++++++++ source/blender/blenlib/intern/cpu.c | 52 +++++++++++++++++++ .../blender/render/intern/source/rayshade.c | 5 +- 9 files changed, 91 insertions(+), 8 deletions(-) create mode 100644 source/blender/blenlib/BLI_cpu.h create mode 100644 source/blender/blenlib/intern/cpu.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 60543e1939a..b4272d5f118 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -110,7 +110,7 @@ OPTION(WITH_LZO "Enable fast LZO compression (used for pointcache)" ON OPTION(WITH_LZMA "Enable best LZMA compression, (used for pointcache)" ON) # Misc -OPTION(WITH_RAYOPTIMIZATION "Enable use of SIMD (SSE) optimizations for the raytracer" OFF) +OPTION(WITH_RAYOPTIMIZATION "Enable use of SIMD (SSE) optimizations for the raytracer" ON) OPTION(WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation tracking" OFF) OPTION(WITH_INSTALL "Install accompanying scripts and language files needed to run blender" ON) diff --git a/config/linux2-config.py b/config/linux2-config.py index 199ea391d4e..213c20bd7d0 100644 --- a/config/linux2-config.py +++ b/config/linux2-config.py @@ -168,7 +168,7 @@ BF_EXPAT_LIBPATH = '/usr/lib' WITH_BF_OPENMP = True #Ray trace optimization -WITH_BF_RAYOPTIMIZATION = False +WITH_BF_RAYOPTIMIZATION = True BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-pthread'] ## diff --git a/config/linuxcross-config.py b/config/linuxcross-config.py index 8533c8ac9c7..1650201f8c6 100644 --- a/config/linuxcross-config.py +++ b/config/linuxcross-config.py @@ -169,7 +169,7 @@ BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader Open BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib ${BF_ICONV_LIBPATH}' #Ray trace optimization -WITH_BF_RAYOPTIMIZATION = False +WITH_BF_RAYOPTIMIZATION = True BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse'] CCFLAGS = [ '-pipe', '-funsigned-char', '-fno-strict-aliasing' ] diff --git a/config/win32-mingw-config.py b/config/win32-mingw-config.py index f8b67781172..9d4c00e569b 100644 --- a/config/win32-mingw-config.py +++ b/config/win32-mingw-config.py @@ -155,7 +155,7 @@ BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader Open BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib' #Ray trace optimization -WITH_BF_RAYOPTIMIZATION = False +WITH_BF_RAYOPTIMIZATION = True BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse'] ## diff --git a/config/win32-vc-config.py b/config/win32-vc-config.py index 02bce0cc7f3..ce34737fd49 100644 --- a/config/win32-vc-config.py +++ b/config/win32-vc-config.py @@ -150,7 +150,7 @@ BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader Open BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib' #Ray trace optimization -WITH_BF_RAYOPTIMIZATION = False +WITH_BF_RAYOPTIMIZATION = True BF_RAYOPTIMIZATION_SSE_FLAGS = ['/arch:SSE'] WITH_BF_STATICOPENGL = False diff --git a/config/win64-vc-config.py b/config/win64-vc-config.py index de1daa16e0b..46b9034823c 100644 --- a/config/win64-vc-config.py +++ b/config/win64-vc-config.py @@ -163,7 +163,7 @@ BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader Open BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib' #Ray trace optimization -WITH_BF_RAYOPTIMIZATION = False +WITH_BF_RAYOPTIMIZATION = True BF_RAYOPTIMIZATION_SSE_FLAGS = ['/arch:SSE','/arch:SSE2'] WITH_BF_STATICOPENGL = False diff --git a/source/blender/blenlib/BLI_cpu.h b/source/blender/blenlib/BLI_cpu.h new file mode 100644 index 00000000000..d809f1cc594 --- /dev/null +++ b/source/blender/blenlib/BLI_cpu.h @@ -0,0 +1,30 @@ +/* + * + * $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. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#ifndef BLI_CPU_H +#define BLI_CPU_H + +int BLI_cpu_support_sse2(void); + +#endif + diff --git a/source/blender/blenlib/intern/cpu.c b/source/blender/blenlib/intern/cpu.c new file mode 100644 index 00000000000..490e1c3f02a --- /dev/null +++ b/source/blender/blenlib/intern/cpu.c @@ -0,0 +1,52 @@ +/** + * + * $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. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include "BLI_cpu.h" + +int BLI_cpu_support_sse2(void) +{ +#if defined(__x86_64__) || defined(_M_X64) + /* x86_64 always has SSE2 instructions */ + return 1; +#elif defined(__GNUC__) && defined(i386) + /* for GCC x86 we check cpuid */ + unsigned int a, b, c, d; + __asm__("cpuid": "=a"(a), "=b"(b), "=c"(c), "=d"(d): "a"(1)); + return (d & 0x04000000) != 0; +#elif (defined(_MSC_VER) && defined(_M_IX86)) + /* also check cpuid for MSVC x86 */ + unsigned int d; + __asm { + xor eax, eax + inc eax + push ebx + cpuid + pop ebx + mov d, edx + } + return (d & 0x04000000) != 0; +#endif + + return 0; +} + diff --git a/source/blender/render/intern/source/rayshade.c b/source/blender/render/intern/source/rayshade.c index bd6e804f13b..bdc1dcc2782 100644 --- a/source/blender/render/intern/source/rayshade.c +++ b/source/blender/render/intern/source/rayshade.c @@ -41,9 +41,10 @@ #include "BKE_node.h" #include "BKE_utildefines.h" -#include "BLI_math.h" #include "BLI_blenlib.h" +#include "BLI_cpu.h" #include "BLI_jitter.h" +#include "BLI_math.h" #include "BLI_rand.h" #include "PIL_time.h" @@ -98,7 +99,7 @@ RayObject* RE_rayobject_create(Render *re, int type, int size) //TODO //if(detect_simd()) #ifdef __SSE__ - type = R_RAYSTRUCTURE_SIMD_SVBVH; + type = BLI_cpu_support_sse2()? R_RAYSTRUCTURE_SIMD_SVBVH: R_RAYSTRUCTURE_VBVH; #else type = R_RAYSTRUCTURE_VBVH; #endif From 61d16219da517feae994d025beb1d6856809a7e0 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 24 Jun 2010 18:05:51 +0000 Subject: [PATCH 186/674] Attempt to fix compiling SSE detection on 32 bit linux. --- source/blender/blenlib/intern/cpu.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/source/blender/blenlib/intern/cpu.c b/source/blender/blenlib/intern/cpu.c index 490e1c3f02a..65e6b34488c 100644 --- a/source/blender/blenlib/intern/cpu.c +++ b/source/blender/blenlib/intern/cpu.c @@ -30,8 +30,13 @@ int BLI_cpu_support_sse2(void) return 1; #elif defined(__GNUC__) && defined(i386) /* for GCC x86 we check cpuid */ - unsigned int a, b, c, d; - __asm__("cpuid": "=a"(a), "=b"(b), "=c"(c), "=d"(d): "a"(1)); + unsigned int d; + __asm__( + "pushl %%ebx\n\t" + "cpuid\n\t" + "popl %%ebx\n\t" + : "=d"(d) + : "a"(1)); return (d & 0x04000000) != 0; #elif (defined(_MSC_VER) && defined(_M_IX86)) /* also check cpuid for MSVC x86 */ From 49db2d18b2ec4e465aa28653a7aed5d26f66c1db Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 24 Jun 2010 18:12:59 +0000 Subject: [PATCH 187/674] Disable rayoptimization again on MinGW, it crashes. --- config/win32-mingw-config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/win32-mingw-config.py b/config/win32-mingw-config.py index 9d4c00e569b..f8b67781172 100644 --- a/config/win32-mingw-config.py +++ b/config/win32-mingw-config.py @@ -155,7 +155,7 @@ BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader Open BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib' #Ray trace optimization -WITH_BF_RAYOPTIMIZATION = True +WITH_BF_RAYOPTIMIZATION = False BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse'] ## From bfb9ef7ee9692326f0b9fdc55bb9f669010b275f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 24 Jun 2010 21:28:33 +0000 Subject: [PATCH 188/674] bpy.props.StringProperty()'s maxlen arg was off by 1 since it included the null terminator for C strings. --- source/blender/python/intern/bpy_props.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/python/intern/bpy_props.c b/source/blender/python/intern/bpy_props.c index 3d7c0b133db..c278ad56ab9 100644 --- a/source/blender/python/intern/bpy_props.c +++ b/source/blender/python/intern/bpy_props.c @@ -586,7 +586,7 @@ PyObject *BPy_StringProperty(PyObject *self, PyObject *args, PyObject *kw) } prop= RNA_def_property(srna, id, PROP_STRING, subtype); - if(maxlen != 0) RNA_def_property_string_maxlength(prop, maxlen); + if(maxlen != 0) RNA_def_property_string_maxlength(prop, maxlen + 1); /* +1 since it includes null terminator */ if(def) RNA_def_property_string_default(prop, def); RNA_def_property_ui_text(prop, name, description); From 29b402f376716ba77f254eac4a214cda52e60608 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 25 Jun 2010 11:41:39 +0000 Subject: [PATCH 189/674] Fix #22618: Deleting an object doesnt remove its self from pinned buttons Clear pin flag and pin ID in unlink_object if pinid points to unlinking object --- source/blender/blenkernel/intern/object.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 10c94ed1eeb..4e90387a2c3 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -652,6 +652,14 @@ void unlink_object(Scene *scene, Object *ob) } } } + else if(sl->spacetype==SPACE_BUTS) { + SpaceButs *sbuts= (SpaceButs *)sl; + + if(sbuts->pinid==(ID *)ob) { + sbuts->flag&= ~SB_PIN_CONTEXT; + sbuts->pinid= NULL; + } + } } sa= sa->next; From 85ffe7e9ba446796749408dc4bda0b11666d3a73 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 25 Jun 2010 11:53:52 +0000 Subject: [PATCH 190/674] opengl render wasnt updating animated images textures --- source/blender/editors/render/render_opengl.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/blender/editors/render/render_opengl.c b/source/blender/editors/render/render_opengl.c index d9b22553c7a..5c072d1ad8b 100644 --- a/source/blender/editors/render/render_opengl.c +++ b/source/blender/editors/render/render_opengl.c @@ -60,6 +60,7 @@ #include "ED_screen.h" #include "ED_view3d.h" +#include "ED_image.h" #include "RE_pipeline.h" #include "IMB_imbuf_types.h" @@ -329,6 +330,9 @@ static int screen_opengl_render_anim_step(bContext *C, wmOperator *op) scene_camera_switch_update(scene); } + /* update animated image textures for gpu, etc */ + ED_image_update_frame(C); + /* render into offscreen buffer */ screen_opengl_render_apply(oglrender); From 044a20821b290beef5b39a265a3527bc4ecf31fa Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 25 Jun 2010 11:56:12 +0000 Subject: [PATCH 191/674] extend command line argument for rendering the current frame blender --background some.blend --render-frame 1 # renders frame 1 blender --background some.blend --render-frame +0 # renders the first frame blender --background some.blend --render-frame -1 # renders the last frame --- source/creator/creator.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/source/creator/creator.c b/source/creator/creator.c index 2def6c8a3ca..f240a54788f 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -685,10 +685,22 @@ static int render_frame(int argc, char **argv, void *data) Scene *scene= CTX_data_scene(C); if (argc > 1) { - int frame = atoi(argv[1]); Render *re = RE_NewRender(scene->id.name); + int frame; ReportList reports; + if(*argv[1]) { + case '+': + frame= scene->r.sfra + atoi(argv[1]+1); + break; + case '-': + frame= (scene->r.efra - atoi(argv[1]+1)) + 1; + break; + default: + frame= atoi(argv[1]); + break; + } + BKE_reports_init(&reports, RPT_PRINT); frame = MIN2(MAXFRAME, MAX2(MINAFRAME, frame)); @@ -966,7 +978,7 @@ void setupArguments(bContext *C, bArgs *ba, SYS_SystemHandle *syshandle) /* fourth pass: processing arguments */ BLI_argsAdd(ba, 4, "-g", NULL, game_doc, set_ge_parameters, syshandle); - BLI_argsAdd(ba, 4, "-f", "--render-frame", "\n\tRender frame and save it", render_frame, C); + BLI_argsAdd(ba, 4, "-f", "--render-frame", "\n\tRender frame and save it.\n\t+ start frame relative, - end frame relative.", render_frame, C); BLI_argsAdd(ba, 4, "-a", "--render-anim", "\n\tRender frames from start to end (inclusive)", render_animation, C); BLI_argsAdd(ba, 4, "-S", "--scene", "\n\tSet the active scene for rendering", set_scene, NULL); BLI_argsAdd(ba, 4, "-s", "--frame-start", "\n\tSet start to frame (use before the -a argument)", set_start_frame, C); From 7b36b2ebbb5449cebd6264d707a43bcaf910b81c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 25 Jun 2010 12:04:04 +0000 Subject: [PATCH 192/674] - duplicating a scene now duplicates its sequence strips too. - bugfix for copying a scene with FFMPEG properties set (wasnt copying the ID properties, could crash blender) - relative path option for adding sequence strips and replaceing images. --- source/blender/blenkernel/BKE_sequencer.h | 9 ++++-- source/blender/blenkernel/intern/scene.c | 10 ++++++ source/blender/blenkernel/intern/sequencer.c | 31 +++++++++++-------- .../editors/space_buttons/buttons_ops.c | 7 ++++- .../blender/editors/space_image/image_ops.c | 8 +++-- .../editors/space_sequencer/sequencer_add.c | 22 ++++++++++--- .../editors/space_sequencer/sequencer_edit.c | 10 +++--- 7 files changed, 69 insertions(+), 28 deletions(-) diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index ad95780268b..6fe1c2a96ea 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -191,14 +191,14 @@ int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test, struct Scene int shuffle_seq_time(ListBase * seqbasep, struct Scene *evil_scene); int seqbase_isolated_sel_check(struct ListBase *seqbase); void free_imbuf_seq(struct Scene *scene, struct ListBase * seqbasep, int check_mem_usage); -struct Sequence *seq_dupli_recursive(struct Scene *scene, struct Sequence * seq); +struct Sequence *seq_dupli_recursive(struct Scene *scene, struct Sequence * seq, int dupe_flag); int seq_swap(struct Sequence *seq_a, struct Sequence *seq_b); void seq_update_sound(struct Scene* scene, struct Sequence *seq); void seq_update_muting(struct Scene* scene, struct Editing *ed); void seqbase_sound_reload(Scene *scene, ListBase *seqbase); void seqbase_unique_name_recursive(ListBase *seqbasep, struct Sequence *seq); -void seqbase_dupli_recursive(struct Scene *scene, ListBase *nseqbase, ListBase *seqbase, int do_context); +void seqbase_dupli_recursive(struct Scene *scene, ListBase *nseqbase, ListBase *seqbase, int dupe_flag); void clear_scene_in_allseqs(struct Scene *sce); @@ -228,6 +228,11 @@ typedef struct SeqLoadInfo { #define SEQ_LOAD_MOVIE_SOUND 1<<2 #define SEQ_LOAD_SOUND_CACHE 1<<3 + +/* seq_dupli' flags */ +#define SEQ_DUPE_UNIQUE_NAME 1<<0 +#define SEQ_DUPE_CONTEXT 1<<1 + /* use as an api function */ typedef struct Sequence *(*SeqLoadFunc)(struct bContext *, ListBase *, struct SeqLoadInfo *); diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 6f049df917c..a2fdf35583f 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -198,6 +198,10 @@ Scene *copy_scene(Main *bmain, Scene *sce, int type) scen->r.qtcodecdata->cdParms = MEM_dupallocN(scen->r.qtcodecdata->cdParms); } + if(sce->r.ffcodecdata.properties) { /* intentionally check scen not sce. */ + scen->r.ffcodecdata.properties= IDP_CopyProperty(scen->r.ffcodecdata.properties); + } + /* NOTE: part of SCE_COPY_LINK_DATA and SCE_COPY_FULL operations * are done outside of blenkernel with ED_objects_single_users! */ @@ -212,6 +216,12 @@ Scene *copy_scene(Main *bmain, Scene *sce, int type) id_us_plus((ID *)scen->world); scen->world= copy_world(scen->world); } + + if(sce->ed) { + scen->ed= MEM_callocN( sizeof(Editing), "addseq"); + scen->ed->seqbasep= &scen->ed->seqbase; + seqbase_dupli_recursive(sce, &scen->ed->seqbase, &sce->ed->seqbase, 0); + } } sound_create_scene(scen); diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index f16b169a4fb..4241f481c30 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -3991,7 +3991,7 @@ Sequence *sequencer_add_sound_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo AUD_SoundInfo info; - sound = sound_new_file(CTX_data_main(C), seq_load->path); + sound = sound_new_file(CTX_data_main(C), seq_load->path); /* handles relative paths */ if (sound==NULL || sound->playback_handle == NULL) { //if(op) @@ -4039,6 +4039,7 @@ Sequence *sequencer_add_sound_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo Sequence *sequencer_add_movie_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo *seq_load) { Scene *scene= CTX_data_scene(C); /* only for sound */ + char path[sizeof(seq_load->path)]; Sequence *seq, *soundseq; /* generic strip vars */ Strip *strip; @@ -4046,7 +4047,10 @@ Sequence *sequencer_add_movie_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo struct anim *an; - an = openanim(seq_load->path, IB_rect); + BLI_strncpy(path, seq_load->path, sizeof(path)); + BLI_path_abs(path, G.sce); + + an = openanim(path, IB_rect); if(an==NULL) return NULL; @@ -4088,7 +4092,7 @@ Sequence *sequencer_add_movie_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo } -static Sequence *dupli_seq(struct Scene *scene, Sequence *seq) +static Sequence *seq_dupli(struct Scene *scene, Sequence *seq, int dupe_flag) { Sequence *seqn = MEM_dupallocN(seq); @@ -4164,18 +4168,19 @@ static Sequence *dupli_seq(struct Scene *scene, Sequence *seq) " now...\n"); } - seqbase_unique_name_recursive(&scene->ed->seqbase, seqn); + if(dupe_flag & SEQ_DUPE_UNIQUE_NAME) + seqbase_unique_name_recursive(&scene->ed->seqbase, seqn); return seqn; } -Sequence * seq_dupli_recursive(struct Scene *scene, Sequence * seq) +Sequence * seq_dupli_recursive(struct Scene *scene, Sequence * seq, int dupe_flag) { - Sequence * seqn = dupli_seq(scene, seq); + Sequence * seqn = seq_dupli(scene, seq, dupe_flag); if (seq->type == SEQ_META) { - Sequence * s; + Sequence *s; for(s= seq->seqbase.first; s; s = s->next) { - Sequence *n = seq_dupli_recursive(scene, s); + Sequence *n = seq_dupli_recursive(scene, s, dupe_flag); if (n) { BLI_addtail(&seqn->seqbase, n); } @@ -4184,7 +4189,7 @@ Sequence * seq_dupli_recursive(struct Scene *scene, Sequence * seq) return seqn; } -void seqbase_dupli_recursive(Scene *scene, ListBase *nseqbase, ListBase *seqbase, int do_context) +void seqbase_dupli_recursive(Scene *scene, ListBase *nseqbase, ListBase *seqbase, int dupe_flag) { Sequence *seq; Sequence *seqn = 0; @@ -4193,18 +4198,18 @@ void seqbase_dupli_recursive(Scene *scene, ListBase *nseqbase, ListBase *seqbase for(seq= seqbase->first; seq; seq= seq->next) { seq->tmp= NULL; if(seq->flag & SELECT) { - seqn = dupli_seq(scene, seq); + seqn = seq_dupli(scene, seq, dupe_flag); if (seqn) { /*should never fail */ - if(do_context) { + if(dupe_flag & SEQ_DUPE_CONTEXT) { seq->flag &= ~SEQ_ALLSEL; seqn->flag &= ~(SEQ_LEFTSEL+SEQ_RIGHTSEL+SEQ_LOCK); } BLI_addtail(nseqbase, seqn); if(seq->type==SEQ_META) - seqbase_dupli_recursive(scene, &seqn->seqbase, &seq->seqbase, do_context); + seqbase_dupli_recursive(scene, &seqn->seqbase, &seq->seqbase, dupe_flag); - if(do_context) { + if(dupe_flag & SEQ_DUPE_CONTEXT) { if (seq == last_seq) { seq_active_set(scene, seqn); } diff --git a/source/blender/editors/space_buttons/buttons_ops.c b/source/blender/editors/space_buttons/buttons_ops.c index 36aecd02138..96cf79d880f 100644 --- a/source/blender/editors/space_buttons/buttons_ops.c +++ b/source/blender/editors/space_buttons/buttons_ops.c @@ -30,6 +30,7 @@ #include "MEM_guardedalloc.h" +#include "DNA_userdef_types.h" #include "BKE_context.h" @@ -129,6 +130,10 @@ static int file_browse_invoke(bContext *C, wmOperator *op, wmEvent *event) RNA_string_set(op->ptr, "filepath", str); MEM_freeN(str); + if(RNA_struct_find_property(op->ptr, "relative_path")) + if(!RNA_property_is_set(op->ptr, "relative_path")) + RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + WM_event_add_fileselect(C, op); return OPERATOR_RUNNING_MODAL; @@ -147,6 +152,6 @@ void BUTTONS_OT_file_browse(wmOperatorType *ot) ot->cancel= file_browse_cancel; /* properties */ - WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, 0); + WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, FILE_RELPATH); } diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index c4265c6e011..f84fd6fc430 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -780,7 +780,6 @@ static int replace_exec(bContext *C, wmOperator *op) static int replace_invoke(bContext *C, wmOperator *op, wmEvent *event) { SpaceImage *sima= CTX_wm_space_image(C); - char *path= (sima->image)? sima->image->name: U.textudir; if(!sima->image) return OPERATOR_CANCELLED; @@ -788,7 +787,10 @@ static int replace_invoke(bContext *C, wmOperator *op, wmEvent *event) if(RNA_property_is_set(op->ptr, "filepath")) return replace_exec(C, op); - image_filesel(C, op, path); + if(!RNA_property_is_set(op->ptr, "relative_path")) + RNA_boolean_set(op->ptr, "relative_path", (strncmp(sima->image->name, "//", 2))==0); + + image_filesel(C, op, sima->image->name); return OPERATOR_RUNNING_MODAL; } @@ -808,7 +810,7 @@ void IMAGE_OT_replace(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, 0); //XXX TODO, relative_path + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, FILE_RELPATH); } /******************** save image as operator ********************/ diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index 2c7082ed3f6..1a56cb6d683 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -43,6 +43,7 @@ #include "DNA_scene_types.h" +#include "DNA_userdef_types.h" #include "BKE_context.h" #include "BKE_global.h" @@ -313,6 +314,9 @@ static int sequencer_add_movie_strip_invoke(bContext *C, wmOperator *op, wmEvent return OPERATOR_CANCELLED; } + if(!RNA_property_is_set(op->ptr, "relative_path")) + RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + sequencer_generic_invoke_xy__internal(C, op, event, 0); return WM_operator_filesel(C, op, event); //return sequencer_add_movie_strip_exec(C, op); @@ -336,7 +340,7 @@ void SEQUENCER_OT_movie_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, 0); //XXX TODO, relative_path + WM_operator_properties_filesel(ot, FOLDERFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, FILE_RELPATH); sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES); RNA_def_boolean(ot->srna, "sound", TRUE, "Sound", "Load sound with the movie"); } @@ -355,6 +359,9 @@ static int sequencer_add_sound_strip_invoke(bContext *C, wmOperator *op, wmEvent return OPERATOR_CANCELLED; } + if(!RNA_property_is_set(op->ptr, "relative_path")) + RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + sequencer_generic_invoke_xy__internal(C, op, event, 0); return WM_operator_filesel(C, op, event); //return sequencer_add_sound_strip_exec(C, op); @@ -378,7 +385,7 @@ void SEQUENCER_OT_sound_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE, FILE_SPECIAL, FILE_OPENFILE, 0); //XXX TODO, relative_path + WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE, FILE_SPECIAL, FILE_OPENFILE, FILE_RELPATH); sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES); RNA_def_boolean(ot->srna, "cache", FALSE, "Cache", "Cache the sound in memory."); } @@ -446,6 +453,9 @@ static int sequencer_add_image_strip_invoke(bContext *C, wmOperator *op, wmEvent return OPERATOR_CANCELLED; } + if(!RNA_property_is_set(op->ptr, "relative_path")) + RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + sequencer_generic_invoke_xy__internal(C, op, event, SEQPROP_ENDFRAME); return WM_operator_filesel(C, op, event); //return sequencer_add_image_strip_exec(C, op); @@ -469,7 +479,7 @@ void SEQUENCER_OT_image_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, 0); //XXX TODO, relative_path + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, FILE_RELPATH); sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_ENDFRAME|SEQPROP_FILES); } @@ -593,6 +603,10 @@ static int sequencer_add_effect_strip_invoke(bContext *C, wmOperator *op, wmEven sequencer_generic_invoke_xy__internal(C, op, event, SEQPROP_ENDFRAME); if (RNA_property_is_set(op->ptr, "type") && RNA_enum_get(op->ptr, "type")==SEQ_PLUGIN) { + + if(!RNA_property_is_set(op->ptr, "relative_path")) + RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + /* only plugins need the file selector */ return WM_operator_filesel(C, op, event); } @@ -617,7 +631,7 @@ void SEQUENCER_OT_effect_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, 0); //XXX TODO, relative_path + WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, FILE_RELPATH); sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_ENDFRAME); RNA_def_enum(ot->srna, "type", sequencer_prop_effect_types, SEQ_CROSS, "Type", "Sequencer effect type"); RNA_def_float_vector(ot->srna, "color", 3, NULL, 0.0f, 1.0f, "Color", "Initialize the strip with this color (only used when type='COLOR')", 0.0f, 1.0f); diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 31e0eea3e25..6d225647a52 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -821,7 +821,7 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence * seq, int cutframe) if (!skip_dup) { /* Duplicate AFTER the first change */ - seqn = seq_dupli_recursive(scene, seq); + seqn = seq_dupli_recursive(scene, seq, SEQ_DUPE_UNIQUE_NAME); } if (seqn) { @@ -910,7 +910,7 @@ static Sequence *cut_seq_soft(Scene *scene, Sequence * seq, int cutframe) if (!skip_dup) { /* Duplicate AFTER the first change */ - seqn = seq_dupli_recursive(scene, seq); + seqn = seq_dupli_recursive(scene, seq, SEQ_DUPE_UNIQUE_NAME); } if (seqn) { @@ -1566,7 +1566,7 @@ static int sequencer_add_duplicate_exec(bContext *C, wmOperator *op) if(ed==NULL) return OPERATOR_CANCELLED; - seqbase_dupli_recursive(scene, &nseqbase, ed->seqbasep, TRUE); + seqbase_dupli_recursive(scene, &nseqbase, ed->seqbasep, SEQ_DUPE_UNIQUE_NAME|SEQ_DUPE_CONTEXT); if(nseqbase.first) { Sequence * seq= nseqbase.first; @@ -2540,7 +2540,7 @@ static int sequencer_copy_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } - seqbase_dupli_recursive(scene, &seqbase_clipboard, ed->seqbasep, FALSE); + seqbase_dupli_recursive(scene, &seqbase_clipboard, ed->seqbasep, SEQ_DUPE_UNIQUE_NAME); seqbase_clipboard_frame= scene->r.cfra; /* Need to remove anything that references the current scene */ @@ -2594,7 +2594,7 @@ static int sequencer_paste_exec(bContext *C, wmOperator *op) deselect_all_seq(scene); ofs = scene->r.cfra - seqbase_clipboard_frame; - seqbase_dupli_recursive(scene, &nseqbase, &seqbase_clipboard, FALSE); + seqbase_dupli_recursive(scene, &nseqbase, &seqbase_clipboard, SEQ_DUPE_UNIQUE_NAME); /* transform pasted strips before adding */ if(ofs) { From 9e87433ef2903f5e6e451eb413e34b57dab4d9fa Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 25 Jun 2010 12:13:29 +0000 Subject: [PATCH 193/674] error in last commit --- source/creator/creator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/creator/creator.c b/source/creator/creator.c index f240a54788f..f8f5b460d17 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -689,7 +689,7 @@ static int render_frame(int argc, char **argv, void *data) int frame; ReportList reports; - if(*argv[1]) { + switch(*argv[1]) { case '+': frame= scene->r.sfra + atoi(argv[1]+1); break; From f3ffb225989ede422dbf831841272b7fe43c154d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 25 Jun 2010 12:17:35 +0000 Subject: [PATCH 194/674] error in fix for ID property copy --- source/blender/blenkernel/intern/scene.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index a2fdf35583f..719dc964b89 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -199,7 +199,7 @@ Scene *copy_scene(Main *bmain, Scene *sce, int type) } if(sce->r.ffcodecdata.properties) { /* intentionally check scen not sce. */ - scen->r.ffcodecdata.properties= IDP_CopyProperty(scen->r.ffcodecdata.properties); + scen->r.ffcodecdata.properties= IDP_CopyProperty(sce->r.ffcodecdata.properties); } /* NOTE: part of SCE_COPY_LINK_DATA and SCE_COPY_FULL operations From c2db42adaa5d0dec1ac0092249285cfd1a95cecf Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 25 Jun 2010 12:28:35 +0000 Subject: [PATCH 195/674] bugfix where animated image texture's lagged one frame when used with modifiers. call animated texture update before evaluating modifiers. --- source/blender/editors/render/render_opengl.c | 7 ++++--- source/blender/editors/screen/screen_edit.c | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/render/render_opengl.c b/source/blender/editors/render/render_opengl.c index 5c072d1ad8b..7cc074a74fd 100644 --- a/source/blender/editors/render/render_opengl.c +++ b/source/blender/editors/render/render_opengl.c @@ -305,6 +305,10 @@ static int screen_opengl_render_anim_step(bContext *C, wmOperator *op) int ok= 0; int view_context = (oglrender->v3d != NULL); + /* update animated image textures for gpu, etc, + * call before scene_update_for_newframe so modifiers with textuers dont lag 1 frame */ + ED_image_update_frame(C); + /* go to next frame */ while(CFRAnfra) { unsigned int lay= screen_opengl_layers(oglrender); @@ -330,9 +334,6 @@ static int screen_opengl_render_anim_step(bContext *C, wmOperator *op) scene_camera_switch_update(scene); } - /* update animated image textures for gpu, etc */ - ED_image_update_frame(C); - /* render into offscreen buffer */ screen_opengl_render_apply(oglrender); diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index ced8f9a8464..1bd1fef4673 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1737,6 +1737,10 @@ void ED_update_for_newframe(const bContext *C, int mute) //extern void audiostream_scrub(unsigned int frame); /* seqaudio.c */ + /* update animated image textures for gpu, etc, + * call before scene_update_for_newframe so modifiers with textuers dont lag 1 frame */ + ED_image_update_frame(C); + /* this function applies the changes too */ /* XXX future: do all windows */ scene_update_for_newframe(scene, BKE_screen_visible_layers(screen, scene)); /* BKE_scene.h */ @@ -1754,9 +1758,6 @@ void ED_update_for_newframe(const bContext *C, int mute) if(scene->use_nodes && scene->nodetree) ntreeCompositTagAnimated(scene->nodetree); - /* update animated image textures for gpu, etc */ - ED_image_update_frame(C); - /* update animated texture nodes */ { Tex *tex; From 54e6fc151901a57ce53ee4b80955c1a7265412ca Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 25 Jun 2010 21:24:59 +0000 Subject: [PATCH 196/674] remove math and m module names from python driver namespace. (all math functions are merged into the local namespace) --- source/blender/python/intern/bpy_driver.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/source/blender/python/intern/bpy_driver.c b/source/blender/python/intern/bpy_driver.c index 8f49263b375..e5719a84fdd 100644 --- a/source/blender/python/intern/bpy_driver.c +++ b/source/blender/python/intern/bpy_driver.c @@ -59,10 +59,6 @@ static int bpy_pydriver_create_dict(void) mod = PyImport_ImportModule("math"); if (mod) { PyDict_Merge(d, PyModule_GetDict(mod), 0); /* 0 - dont overwrite existing values */ - - /* Only keep for backwards compat! - just import all math into root, they are standard */ - PyDict_SetItemString(d, "math", mod); - PyDict_SetItemString(d, "m", mod); Py_DECREF(mod); } From 892851f787fb4613a297ecb350df114b379ab21b Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Sat, 26 Jun 2010 08:53:29 +0000 Subject: [PATCH 197/674] file operator cleanup * the default properties of the file operator now only contain the "filepath", which means only the complete path to a file is returned. * "filename" and "directory" has been added to the link/append operator - the only place it was used. * sequence operators still work on the "files", which was custom property passed to the file operator anyway. * have tested sequence loading, image loading and append/link - please report if there are any issues --- source/blender/editors/space_file/file_ops.c | 29 ++++++++++++------- .../windowmanager/intern/wm_operators.c | 5 ++-- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index 9028e5f15c6..7c2a2f436cc 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -545,7 +545,7 @@ void FILE_OT_cancel(struct wmOperatorType *ot) int file_exec(bContext *C, wmOperator *exec_op) { SpaceFile *sfile= CTX_wm_space_file(C); - char name[FILE_MAX]; + char filepath[FILE_MAX]; if(sfile->op) { wmOperator *op= sfile->op; @@ -567,16 +567,23 @@ int file_exec(bContext *C, wmOperator *exec_op) } sfile->op = NULL; - RNA_string_set(op->ptr, "filename", sfile->params->file); - BLI_strncpy(name, sfile->params->dir, sizeof(name)); - RNA_string_set(op->ptr, "directory", name); - strcat(name, sfile->params->file); // XXX unsafe - if(RNA_struct_find_property(op->ptr, "relative_path")) - if(RNA_boolean_get(op->ptr, "relative_path")) - BLI_path_rel(name, G.sce); + BLI_join_dirfile(filepath, sfile->params->dir, sfile->params->file); + if(RNA_struct_find_property(op->ptr, "relative_path")) { + if(RNA_boolean_get(op->ptr, "relative_path")) { + BLI_path_rel(filepath, G.sce); + } + } - RNA_string_set(op->ptr, "filepath", name); + if(RNA_struct_find_property(op->ptr, "filename")) { + RNA_string_set(op->ptr, "filename", sfile->params->file); + } + if(RNA_struct_find_property(op->ptr, "directory")) { + RNA_string_set(op->ptr, "directory", sfile->params->dir); + } + if(RNA_struct_find_property(op->ptr, "filepath")) { + RNA_string_set(op->ptr, "filepath", filepath); + } /* some ops have multiple files to select */ { @@ -612,8 +619,8 @@ int file_exec(bContext *C, wmOperator *exec_op) folderlist_free(sfile->folders_next); fsmenu_insert_entry(fsmenu_get(), FS_CATEGORY_RECENT, sfile->params->dir,0, 1); - BLI_make_file_string(G.sce, name, BLI_gethome(), ".Bfs"); - fsmenu_write_file(fsmenu_get(), name); + BLI_make_file_string(G.sce, filepath, BLI_gethome(), ".Bfs"); + fsmenu_write_file(fsmenu_get(), filepath); WM_event_fileselect_event(C, op, EVT_FILESELECT_EXEC); ED_fileselect_clear(C, sfile); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index c38ba67a648..058c39749a6 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -789,8 +789,6 @@ void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type, PropertyRNA *prop; RNA_def_string_file_path(ot->srna, "filepath", "", FILE_MAX, "File Path", "Path to file"); - RNA_def_string_file_name(ot->srna, "filename", "", FILE_MAX, "File Name", "Name of the file"); - RNA_def_string_dir_path(ot->srna, "directory", "", FILE_MAX, "Directory", "Directory of the file"); if (action == FILE_SAVE) { prop= RNA_def_boolean(ot->srna, "check_existing", 1, "Check Existing", "Check and warn on overwriting existing files"); @@ -1653,6 +1651,9 @@ static void WM_OT_link_append(wmOperatorType *ot) RNA_def_boolean(ot->srna, "active_layer", 1, "Active Layer", "Put the linked objects on the active layer"); RNA_def_boolean(ot->srna, "instance_groups", 1, "Instance Groups", "Create instances for each group as a DupliGroup"); + RNA_def_string_file_name(ot->srna, "filename", "", FILE_MAX, "File Name", "Name of the file"); + RNA_def_string_dir_path(ot->srna, "directory", "", FILE_MAX, "Directory", "Directory of the file"); + RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", ""); } From aba62b1797c4b449df02b8e98af059b833e6a6ee Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 26 Jun 2010 13:24:52 +0000 Subject: [PATCH 198/674] fix for crash running the file load operator in background mode: bpy.ops.wm.open_mainfile(filepath="some.blend") --- source/blender/windowmanager/intern/wm_files.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 1357b96fe70..be6ef77526e 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -220,7 +220,9 @@ static void wm_window_match_do(bContext *C, ListBase *oldwmlist) if(win->active) wm->winactive= win; - GHOST_SetWindowUserData(win->ghostwin, win); /* pointer back */ + if(!G.background) /* file loading in background mode still calls this */ + GHOST_SetWindowUserData(win->ghostwin, win); /* pointer back */ + oldwin->ghostwin= NULL; win->eventstate= oldwin->eventstate; From bd03f26c3a281cd2080e6c4ec1aacdb8049d88c5 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Sat, 26 Jun 2010 17:06:55 +0000 Subject: [PATCH 199/674] Updated Themes user preference pane. Layout is now simpler, more easy to scan. This commit also simplifies the Python code and gets rid of hundreds of wasted lines of code, making it much easier to make layout changes. --- release/scripts/ui/space_userpref.py | 467 +++++++-------------------- 1 file changed, 121 insertions(+), 346 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index e3287b0a946..355c1727b39 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -21,30 +21,72 @@ import bpy import os import shutil +def ui_theme_layout_general(split, themedata): + + row = split.row() + + subsplit = row.split(percentage=0.95) + + padding = subsplit.split(percentage=0.15) + colsub1 = padding.column() + colsub1 = padding.column() + + subsplit = row.split(percentage=0.85) + + padding = subsplit.split(percentage=0.15) + colsub2 = padding.column() + colsub2 = padding.column() + +# for i, attr in enumerate(dir(themedata)): + props_color = [] + props_other = [] + for i, prop in enumerate(themedata.rna_type.properties): + if prop.subtype == 'COLOR': + props_color.append(prop) + else: + props_other.append(prop) + + for props_ls in props_color, props_other: + for i, prop in enumerate(props_ls): + attr = prop.identifier + if attr == "rna_type": + continue + if not i % 2: + colsub1.row().prop(themedata, attr) + else: + colsub2.row().prop(themedata, attr) def ui_items_general(col, context): """ General UI Theme Settings (User Interface) """ + row = col.row() - sub = row.column() - sub.prop(context, "outline") - sub.prop(context, "item", slider=True) - sub = row.column() - sub.prop(context, "inner", slider=True) - sub.prop(context, "inner_sel", slider=True) - sub = row.column() - sub.prop(context, "text") - sub.prop(context, "text_sel") - sub = row.column() - sub.prop(context, "shaded") - subsub = sub.column(align=True) + + subsplit = row.split(percentage=0.95) + + padding = subsplit.split(percentage=0.15) + colsub = padding.column() + colsub = padding.column() + colsub.row().prop(context, "outline") + colsub.row().prop(context, "item", slider=True) + colsub.row().prop(context, "inner", slider=True) + colsub.row().prop(context, "inner_sel", slider=True) + + subsplit = row.split(percentage=0.85) + + padding = subsplit.split(percentage=0.15) + colsub = padding.column() + colsub = padding.column() + colsub.row().prop(context, "text") + colsub.row().prop(context, "text_sel") + colsub.prop(context, "shaded") + subsub = colsub.column(align=True) subsub.active = context.shaded subsub.prop(context, "shadetop") subsub.prop(context, "shadedown") col.separator() - def opengl_lamp_buttons(column, lamp): split = column.split(percentage=0.1) @@ -491,10 +533,13 @@ class USERPREF_PT_theme(bpy.types.Panel): theme = context.user_preferences.themes[0] - split_themes = layout.split(percentage=0.2) - split_themes.prop(theme, "theme_area", expand=True) - - split = split_themes.split() + split = layout.split(percentage=0.4) + split.prop(theme, "theme_area", text="") + + layout.separator() + layout.separator() + + split = layout.split() if theme.theme_area == 'USER_INTERFACE': col = split.column() @@ -565,24 +610,35 @@ class USERPREF_PT_theme(bpy.types.Panel): ui = theme.user_interface.wcol_state col.label(text="State:") - + row = col.row() - sub = row.column() - sub.prop(ui, "inner_anim") - sub.prop(ui, "inner_anim_sel") - sub = row.column() - sub.prop(ui, "inner_driven") - sub.prop(ui, "inner_driven_sel") - sub = row.column() - sub.prop(ui, "inner_key") - sub.prop(ui, "inner_key_sel") - sub = row.column() - sub.prop(ui, "blend") + + subsplit = row.split(percentage=0.95) + + padding = subsplit.split(percentage=0.15) + colsub = padding.column() + colsub = padding.column() + colsub.row().prop(ui, "inner_anim") + colsub.row().prop(ui, "inner_anim_sel") + colsub.row().prop(ui, "inner_driven") + colsub.row().prop(ui, "inner_driven_sel") + + subsplit = row.split(percentage=0.85) + + padding = subsplit.split(percentage=0.15) + colsub = padding.column() + colsub = padding.column() + colsub.row().prop(ui, "inner_key") + colsub.row().prop(ui, "inner_key_sel") + colsub.row().prop(ui, "blend") + ui = theme.user_interface col.separator() col.separator() - col.prop(ui, "icon_file") + + split= col.split(percentage=0.93) + split.prop(ui, "icon_file") layout.separator() layout.separator() @@ -590,366 +646,85 @@ class USERPREF_PT_theme(bpy.types.Panel): elif theme.theme_area == 'VIEW_3D': v3d = theme.view_3d - - col = split.column() - col.prop(v3d, "back") - col.prop(v3d, "button") - col.prop(v3d, "button_title") - col.prop(v3d, "button_text") - col.prop(v3d, "header") - - col = split.column() - col.prop(v3d, "grid") - col.prop(v3d, "wire") - col.prop(v3d, "lamp", slider=True) - col.prop(v3d, "editmesh_active", slider=True) - - col = split.column() - col.prop(v3d, "object_selected") - col.prop(v3d, "object_active") - col.prop(v3d, "object_grouped") - col.prop(v3d, "object_grouped_active") - col.prop(v3d, "transform") - col.prop(v3d, "nurb_uline") - col.prop(v3d, "nurb_vline") - col.prop(v3d, "nurb_sel_uline") - col.prop(v3d, "nurb_sel_vline") - col.prop(v3d, "handle_free") - col.prop(v3d, "handle_auto") - col.prop(v3d, "handle_vect") - col.prop(v3d, "handle_align") - col.prop(v3d, "handle_sel_free") - col.prop(v3d, "handle_sel_auto") - col.prop(v3d, "handle_sel_vect") - col.prop(v3d, "handle_sel_align") - col.prop(v3d, "act_spline") - col.prop(v3d, "lastsel_point") - - col = split.column() - col.prop(v3d, "vertex") - col.prop(v3d, "face", slider=True) - col.prop(v3d, "normal") - col.prop(v3d, "vertex_normal") - col.prop(v3d, "bone_solid") - col.prop(v3d, "bone_pose") - col.prop(v3d, "edge_seam") - col.prop(v3d, "edge_select") - col.prop(v3d, "edge_facesel") - col.prop(v3d, "edge_sharp") - col.prop(v3d, "edge_crease") + + ui_theme_layout_general(split, v3d) elif theme.theme_area == 'GRAPH_EDITOR': graph = theme.graph_editor - - col = split.column() - col.prop(graph, "back") - col.prop(graph, "button") - col.prop(graph, "button_title") - col.prop(graph, "button_text") - - col = split.column() - col.prop(graph, "header") - col.prop(graph, "grid") - col.prop(graph, "list") - col.prop(graph, "channel_group") - - col = split.column() - col.prop(graph, "active_channels_group") - col.prop(graph, "dopesheet_channel") - col.prop(graph, "dopesheet_subchannel") - col.prop(graph, "frame_current") - - col = split.column() - col.prop(graph, "vertex") - col.prop(graph, "handle_vertex") - col.prop(graph, "handle_vertex_select") - col.separator() - col.prop(graph, "handle_vertex_size") - col.separator() - col.separator() - col.prop(graph, "handle_free") - col.prop(graph, "handle_auto") - col.prop(graph, "handle_vect") - col.prop(graph, "handle_align") - col.prop(graph, "handle_sel_free") - col.prop(graph, "handle_sel_auto") - col.prop(graph, "handle_sel_vect") - col.prop(graph, "handle_sel_align") + + ui_theme_layout_general(split, graph) elif theme.theme_area == 'FILE_BROWSER': file_browse = theme.file_browser - - col = split.column() - col.prop(file_browse, "back") - col.prop(file_browse, "text") - col.prop(file_browse, "text_hi") - - col = split.column() - col.prop(file_browse, "header") - col.prop(file_browse, "list") - - col = split.column() - col.prop(file_browse, "selected_file") - col.prop(file_browse, "tiles") - - col = split.column() - col.prop(file_browse, "active_file") - col.prop(file_browse, "active_file_text") + + ui_theme_layout_general(split, file_browse) elif theme.theme_area == 'NLA_EDITOR': nla = theme.nla_editor - - col = split.column() - col.prop(nla, "back") - col.prop(nla, "button") - col.prop(nla, "button_title") - - col = split.column() - col.prop(nla, "button_text") - col.prop(nla, "text") - col.prop(nla, "header") - - col = split.column() - col.prop(nla, "grid") - col.prop(nla, "bars") - col.prop(nla, "bars_selected") - - col = split.column() - col.prop(nla, "strips") - col.prop(nla, "strips_selected") - col.prop(nla, "frame_current") + + ui_theme_layout_general(split, nla) elif theme.theme_area == 'DOPESHEET_EDITOR': dope = theme.dopesheet_editor - - col = split.column() - col.prop(dope, "back") - col.prop(dope, "list") - col.prop(dope, "text") - col.prop(dope, "header") - - col = split.column() - col.prop(dope, "grid") - col.prop(dope, "channels") - col.prop(dope, "channels_selected") - col.prop(dope, "channel_group") - - col = split.column() - col.prop(dope, "active_channels_group") - col.prop(dope, "long_key") - col.prop(dope, "long_key_selected") - - col = split.column() - col.prop(dope, "frame_current") - col.prop(dope, "dopesheet_channel") - col.prop(dope, "dopesheet_subchannel") - + + ui_theme_layout_general(split, dope) + elif theme.theme_area == 'IMAGE_EDITOR': image = theme.image_editor - - col = split.column() - col.prop(image, "back") - col.prop(image, "scope_back") - col.prop(image, "button") - - col = split.column() - col.prop(image, "button_title") - col.prop(image, "button_text") - - col = split.column() - col.prop(image, "header") - - col = split.column() - col.prop(image, "editmesh_active", slider=True) + + ui_theme_layout_general(split, image) elif theme.theme_area == 'SEQUENCE_EDITOR': seq = theme.sequence_editor - - col = split.column() - col.prop(seq, "back") - col.prop(seq, "button") - col.prop(seq, "button_title") - col.prop(seq, "button_text") - col.prop(seq, "text") - - col = split.column() - col.prop(seq, "header") - col.prop(seq, "grid") - col.prop(seq, "movie_strip") - col.prop(seq, "image_strip") - col.prop(seq, "scene_strip") - - col = split.column() - col.prop(seq, "audio_strip") - col.prop(seq, "effect_strip") - col.prop(seq, "plugin_strip") - col.prop(seq, "transition_strip") - - col = split.column() - col.prop(seq, "meta_strip") - col.prop(seq, "frame_current") - col.prop(seq, "keyframe") - col.prop(seq, "draw_action") + + ui_theme_layout_general(split, seq) elif theme.theme_area == 'PROPERTIES': prop = theme.properties - - col = split.column() - col.prop(prop, "back") - - col = split.column() - col.prop(prop, "title") - - col = split.column() - col.prop(prop, "text") - - col = split.column() - col.prop(prop, "header") + + ui_theme_layout_general(split, prop) elif theme.theme_area == 'TEXT_EDITOR': text = theme.text_editor - - col = split.column() - col.prop(text, "back") - col.prop(text, "button") - col.prop(text, "button_title") - col.prop(text, "button_text") - - col = split.column() - col.prop(text, "text") - col.prop(text, "text_hi") - col.prop(text, "header") - col.prop(text, "line_numbers_background") - - col = split.column() - col.prop(text, "selected_text") - col.prop(text, "cursor") - col.prop(text, "syntax_builtin") - col.prop(text, "syntax_special") - - col = split.column() - col.prop(text, "syntax_comment") - col.prop(text, "syntax_string") - col.prop(text, "syntax_numbers") + + ui_theme_layout_general(split, text) elif theme.theme_area == 'TIMELINE': time = theme.timeline - - col = split.column() - col.prop(time, "back") - col.prop(time, "text") - - col = split.column() - col.prop(time, "header") - - col = split.column() - col.prop(time, "grid") - - col = split.column() - col.prop(time, "frame_current") + + ui_theme_layout_general(split, time) elif theme.theme_area == 'NODE_EDITOR': node = theme.node_editor - - col = split.column() - col.prop(node, "back") - col.prop(node, "button") - col.prop(node, "button_title") - col.prop(node, "button_text") - - col = split.column() - col.prop(node, "text") - col.prop(node, "text_hi") - col.prop(node, "header") - col.prop(node, "wires") - - col = split.column() - col.prop(node, "wire_select") - col.prop(node, "selected_text") - col.prop(node, "node_backdrop", slider=True) - col.prop(node, "in_out_node") - - col = split.column() - col.prop(node, "converter_node") - col.prop(node, "operator_node") - col.prop(node, "group_node") + + ui_theme_layout_general(split, node) elif theme.theme_area == 'LOGIC_EDITOR': logic = theme.logic_editor - - col = split.column() - col.prop(logic, "back") - col.prop(logic, "button") - - col = split.column() - col.prop(logic, "button_title") - col.prop(logic, "button_text") - - col = split.column() - col.prop(logic, "text") - col.prop(logic, "header") - - col = split.column() - col.prop(logic, "panel") + + ui_theme_layout_general(split, logic) elif theme.theme_area == 'OUTLINER': out = theme.outliner - col = split.column() - col.prop(out, "back") - - col = split.column() - col.prop(out, "text") - - col = split.column() - col.prop(out, "text_hi") - - col = split.column() - col.prop(out, "header") + ui_theme_layout_general(split, out) elif theme.theme_area == 'INFO': info = theme.info - - col = split.column() - col.prop(info, "back") - - col = split.column() - col.prop(info, "header") - - col = split.column() - col.prop(info, "header_text") - - col = split.column() + + ui_theme_layout_general(split, info) elif theme.theme_area == 'USER_PREFERENCES': prefs = theme.user_preferences - - col = split.column() - col.prop(prefs, "back") - - col = split.column() - col.prop(prefs, "text") - - col = split.column() - col.prop(prefs, "header") - - col = split.column() - col.prop(prefs, "header_text") - + + ui_theme_layout_general(split, prefs) + elif theme.theme_area == 'CONSOLE': console = theme.console - - col = split.column() - col.prop(console, "back") - col.prop(console, "header") - - col = split.column() - col.prop(console, "line_output") - col.prop(console, "line_input") - col.prop(console, "line_info") - col.prop(console, "line_error") - col.prop(console, "cursor") - + + ui_theme_layout_general(split, console) + + class USERPREF_PT_file(bpy.types.Panel): bl_space_type = 'USER_PREFERENCES' From 7ad1491fce07e3c7d3c26902fc1a5d4142e9ad5d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 26 Jun 2010 17:12:55 +0000 Subject: [PATCH 200/674] alpha drawing for color picker, move alpha button into the picker. --- .../editors/interface/interface_layout.c | 5 -- .../editors/interface/interface_regions.c | 14 +++- .../editors/interface/interface_templates.c | 8 -- .../editors/interface/interface_widgets.c | 77 +++++++++++++++++-- source/blender/makesdna/DNA_userdef_types.h | 2 +- 5 files changed, 83 insertions(+), 23 deletions(-) diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index d91cdd5c20d..35e813b1efc 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -431,11 +431,6 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, char *name, int icon but->type= TOG; } } - else if(ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA) && len == 4) { - but= uiDefAutoButR(block, ptr, prop, 3, "A:", 0, 0, 0, w, UI_UNIT_Y); - if(slider && but->type==NUM) - but->type= NUMSLI; - } } uiBlockSetCurLayout(block, layout); diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index d44e4b2b4dc..fb00d4f968e 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -1795,6 +1795,9 @@ static void uiBlockPicker(uiBlock *block, float *rgb, PointerRNA *ptr, PropertyR linearrgb_to_srgb_v3_v3(rgb_gamma, rgb); } + /* sneaky way to check for alpha */ + rgb[3]= FLT_MAX; + RNA_property_float_ui_range(ptr, prop, &min, &max, &step, &precision); RNA_property_float_get_array(ptr, prop, rgb); rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); @@ -1835,6 +1838,7 @@ static void uiBlockPicker(uiBlock *block, float *rgb, PointerRNA *ptr, PropertyR uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); bt= uiDefButR(block, NUMSLI, 0, "B ", 0, -100, butwidth, UI_UNIT_Y, ptr, propname, 2, 0.0, 0.0, 0, 0, ""); uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); + // could use uiItemFullR(col, ptr, prop, -1, 0, UI_ITEM_R_EXPAND|UI_ITEM_R_SLIDER, "", 0); // but need to use uiButSetFunc for updating other fake buttons @@ -1847,7 +1851,15 @@ static void uiBlockPicker(uiBlock *block, float *rgb, PointerRNA *ptr, PropertyR bt= uiDefButF(block, NUMSLI, 0, "V ", 0, -100, butwidth, UI_UNIT_Y, hsv+2, 0.0, max, 10, 3, ""); uiButSetFunc(bt, do_hsv_rna_cb, bt, hsv); uiBlockEndAlign(block); - + + if(rgb[3] != FLT_MAX) { + bt= uiDefButR(block, NUMSLI, 0, "A ", 0, -120, butwidth, UI_UNIT_Y, ptr, propname, 3, 0.0, 0.0, 0, 0, ""); + uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); + } + else { + rgb[3]= 1.0f; + } + rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); sprintf(hexcol, "%02X%02X%02X", (unsigned int)(rgb_gamma[0]*255.0), (unsigned int)(rgb_gamma[1]*255.0), (unsigned int)(rgb_gamma[2]*255.0)); diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index fb515d55854..70112e1fd09 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -1929,14 +1929,6 @@ void uiTemplateColorWheel(uiLayout *layout, PointerRNA *ptr, char *propname, int if (value_slider) uiDefButR(block, HSVCUBE, 0, "", WHEEL_SIZE+6, 0, 14, WHEEL_SIZE, ptr, propname, -1, softmin, softmax, 9, 0, ""); - - /* maybe a switch for this? - row= uiLayoutRow(col, 0); - if(ELEM(RNA_property_subtype(prop), PROP_COLOR, PROP_COLOR_GAMMA) && RNA_property_array_length(ptr, prop) == 4) { - but= uiDefAutoButR(block, ptr, prop, 3, "A:", 0, 0, 0, WHEEL_SIZE+20, UI_UNIT_Y); - } - */ - } diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index 8f0f794585a..2cfdf2d5e04 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -608,14 +608,67 @@ static void widgetbase_draw(uiWidgetBase *wtb, uiWidgetColors *wcol) /* backdrop non AA */ if(wtb->inner) { if(wcol->shaded==0) { - - /* filled center, solid */ - glColor4ubv((unsigned char*)wcol->inner); - glBegin(GL_POLYGON); - for(a=0; atotvert; a++) - glVertex2fv(wtb->inner_v[a]); - glEnd(); + if (wcol->alpha_check) { + GLubyte checker_stipple_sml[32*32/8] = + { + 255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, \ + 255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, \ + 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, \ + 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, \ + 255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, \ + 255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, \ + 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, \ + 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, \ + }; + float x_mid= 0.0f; /* used for dumb clamping of values */ + + /* dark checkers */ + glColor4ub(100, 100, 100, 255); + glBegin(GL_POLYGON); + for(a=0; atotvert; a++) { + glVertex2fv(wtb->inner_v[a]); + } + glEnd(); + + /* light checkers */ + glEnable(GL_POLYGON_STIPPLE); + glColor4ub(160, 160, 160, 255); + glPolygonStipple(checker_stipple_sml); + glBegin(GL_POLYGON); + for(a=0; atotvert; a++) { + glVertex2fv(wtb->inner_v[a]); + } + glEnd(); + glDisable(GL_POLYGON_STIPPLE); + + /* alpha fill */ + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glColor4ubv((unsigned char*)wcol->inner); + glBegin(GL_POLYGON); + for(a=0; atotvert; a++) { + glVertex2fv(wtb->inner_v[a]); + x_mid += wtb->inner_v[a][0]; + } + x_mid /= wtb->totvert; + glEnd(); + + /* 1/2 solid color */ + glColor4ub(wcol->inner[0], wcol->inner[1], wcol->inner[2], 255); + glBegin(GL_POLYGON); + for(a=0; atotvert; a++) + glVertex2f(MIN2(wtb->inner_v[a][0], x_mid), wtb->inner_v[a][1]); + glEnd(); + } + else { + /* simple fill */ + glColor4ubv((unsigned char*)wcol->inner); + glBegin(GL_POLYGON); + for(a=0; atotvert; a++) + glVertex2fv(wtb->inner_v[a]); + glEnd(); + } } else { char col1[4], col2[4]; @@ -2208,9 +2261,15 @@ static void widget_swatch(uiBut *but, uiWidgetColors *wcol, rcti *rect, int stat float col[4]; int color_profile = but->block->color_profile; + col[3]= 1.0f; + if (but->rnaprop) { if (RNA_property_subtype(but->rnaprop) == PROP_COLOR_GAMMA) color_profile = BLI_PR_NONE; + + if(RNA_property_array_length(&but->rnapoin, but->rnaprop)==4) { + col[3]= RNA_property_float_get_index(&but->rnapoin, but->rnaprop, 3); + } } widget_init(&wtb); @@ -2226,8 +2285,10 @@ static void widget_swatch(uiBut *but, uiWidgetColors *wcol, rcti *rect, int stat wcol->inner[0]= FTOCHAR(col[0]); wcol->inner[1]= FTOCHAR(col[1]); wcol->inner[2]= FTOCHAR(col[2]); + wcol->inner[3]= FTOCHAR(col[3]); wcol->shaded = 0; - + wcol->alpha_check = (wcol->inner[3] < 255); + widgetbase_draw(&wtb, wcol); } diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index 72c067c9752..16a3b95d71a 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -119,7 +119,7 @@ typedef struct uiWidgetColors { char text_sel[4]; short shaded; short shadetop, shadedown; - short pad; + short alpha_check; } uiWidgetColors; typedef struct uiWidgetStateColors { From 1c362019cd1e626987280bcb9f7aaa788cb1aa5b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 26 Jun 2010 17:24:01 +0000 Subject: [PATCH 201/674] minor changes to Williams commit to be a bit less verbose. --- release/scripts/ui/space_userpref.py | 151 +++++++-------------------- 1 file changed, 36 insertions(+), 115 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 355c1727b39..807779c8556 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -21,40 +21,6 @@ import bpy import os import shutil -def ui_theme_layout_general(split, themedata): - - row = split.row() - - subsplit = row.split(percentage=0.95) - - padding = subsplit.split(percentage=0.15) - colsub1 = padding.column() - colsub1 = padding.column() - - subsplit = row.split(percentage=0.85) - - padding = subsplit.split(percentage=0.15) - colsub2 = padding.column() - colsub2 = padding.column() - -# for i, attr in enumerate(dir(themedata)): - props_color = [] - props_other = [] - for i, prop in enumerate(themedata.rna_type.properties): - if prop.subtype == 'COLOR': - props_color.append(prop) - else: - props_other.append(prop) - - for props_ls in props_color, props_other: - for i, prop in enumerate(props_ls): - attr = prop.identifier - if attr == "rna_type": - continue - if not i % 2: - colsub1.row().prop(themedata, attr) - else: - colsub2.row().prop(themedata, attr) def ui_items_general(col, context): """ General UI Theme Settings (User Interface) @@ -524,6 +490,40 @@ class USERPREF_PT_theme(bpy.types.Panel): bl_region_type = 'WINDOW' bl_show_header = False + @staticmethod + def _theme_generic(split, themedata): + + row = split.row() + + subsplit = row.split(percentage=0.95) + + padding = subsplit.split(percentage=0.15) + colsub1 = padding.column() + colsub1 = padding.column() + + subsplit = row.split(percentage=0.85) + + padding = subsplit.split(percentage=0.15) + colsub2 = padding.column() + colsub2 = padding.column() + + props_color = [] + props_other = [] + + for i, prop in enumerate(themedata.rna_type.properties): + attr = prop.identifier + if attr == "rna_type": + continue + + if prop.subtype == 'COLOR': + props_color.append(prop.identifier) + else: + props_other.append(prop.identifier) + + for props_ls in props_color, props_other: + for i, attr in enumerate(props_ls): + (colsub2 if i % 2 else colsub1).row().prop(themedata, attr) + def poll(self, context): userpref = context.user_preferences return (userpref.active_section == 'THEMES') @@ -643,88 +643,9 @@ class USERPREF_PT_theme(bpy.types.Panel): layout.separator() layout.separator() + else: + self._theme_generic(split, getattr(theme, theme.theme_area.lower())) - elif theme.theme_area == 'VIEW_3D': - v3d = theme.view_3d - - ui_theme_layout_general(split, v3d) - - elif theme.theme_area == 'GRAPH_EDITOR': - graph = theme.graph_editor - - ui_theme_layout_general(split, graph) - - elif theme.theme_area == 'FILE_BROWSER': - file_browse = theme.file_browser - - ui_theme_layout_general(split, file_browse) - - elif theme.theme_area == 'NLA_EDITOR': - nla = theme.nla_editor - - ui_theme_layout_general(split, nla) - - elif theme.theme_area == 'DOPESHEET_EDITOR': - dope = theme.dopesheet_editor - - ui_theme_layout_general(split, dope) - - elif theme.theme_area == 'IMAGE_EDITOR': - image = theme.image_editor - - ui_theme_layout_general(split, image) - - elif theme.theme_area == 'SEQUENCE_EDITOR': - seq = theme.sequence_editor - - ui_theme_layout_general(split, seq) - - elif theme.theme_area == 'PROPERTIES': - prop = theme.properties - - ui_theme_layout_general(split, prop) - - elif theme.theme_area == 'TEXT_EDITOR': - text = theme.text_editor - - ui_theme_layout_general(split, text) - - elif theme.theme_area == 'TIMELINE': - time = theme.timeline - - ui_theme_layout_general(split, time) - - elif theme.theme_area == 'NODE_EDITOR': - node = theme.node_editor - - ui_theme_layout_general(split, node) - - elif theme.theme_area == 'LOGIC_EDITOR': - logic = theme.logic_editor - - ui_theme_layout_general(split, logic) - - elif theme.theme_area == 'OUTLINER': - out = theme.outliner - - ui_theme_layout_general(split, out) - - elif theme.theme_area == 'INFO': - info = theme.info - - ui_theme_layout_general(split, info) - - elif theme.theme_area == 'USER_PREFERENCES': - prefs = theme.user_preferences - - ui_theme_layout_general(split, prefs) - - elif theme.theme_area == 'CONSOLE': - console = theme.console - - ui_theme_layout_general(split, console) - - class USERPREF_PT_file(bpy.types.Panel): bl_space_type = 'USER_PREFERENCES' From 5ce214a06f78cf854963eb49ec3a6bdbc8d3abfc Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 26 Jun 2010 17:46:14 +0000 Subject: [PATCH 202/674] object color property in the object UI panel --- release/scripts/ui/properties_object.py | 1 + 1 file changed, 1 insertion(+) diff --git a/release/scripts/ui/properties_object.py b/release/scripts/ui/properties_object.py index a2637f7924b..5072abd4ab1 100644 --- a/release/scripts/ui/properties_object.py +++ b/release/scripts/ui/properties_object.py @@ -214,6 +214,7 @@ class OBJECT_PT_display(ObjectButtonsPanel): col.prop(ob, "draw_name", text="Name") col.prop(ob, "draw_axis", text="Axis") col.prop(ob, "draw_wire", text="Wire") + col.prop(ob, "color", text="") if wide_ui: col = split.column() From 942ebd6558dd78f1c78e641f6daecce54f93ac02 Mon Sep 17 00:00:00 2001 From: Daniel Salazar Date: Sat, 26 Jun 2010 19:00:44 +0000 Subject: [PATCH 203/674] Patch by Oenvoyage: Lamp specials menu was context insensitive, displaying lamp properties regardless of type hence causing errors. Now active object controls what properties to display. Still it's possible to manage multiple mixed lamps types at once. Also added useful items for cameras and empties --- release/scripts/ui/space_view3d.py | 80 ++++++++++++++++++++++++------ 1 file changed, 64 insertions(+), 16 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index d4ac6b1eae0..19140a9e79d 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -717,30 +717,78 @@ class VIEW3D_MT_object_specials(bpy.types.Menu): layout = self.layout obj = context.object + if obj.type == 'CAMERA': + layout.operator_context = 'INVOKE_REGION_WIN' + + props = layout.operator("wm.context_modal_mouse", text="Camera Lens Angle") + props.data_path_iter = "selected_editable_objects" + props.data_path_item = "data.lens" + props.input_scale = 0.1 + + if not obj.data.dof_object: + #layout.label(text="Test Has DOF obj"); + props = layout.operator("wm.context_modal_mouse", text="DOF Distance") + props.data_path_iter = "selected_editable_objects" + props.data_path_item = "data.dof_distance" + props.input_scale = 0.02 + + if obj.type in ['CURVE','TEXT']: + layout.operator_context = 'INVOKE_REGION_WIN' + + props = layout.operator("wm.context_modal_mouse", text="Extrude Size") + props.data_path_iter = "selected_editable_objects" + props.data_path_item = "data.extrude" + props.input_scale = 0.01 + + props = layout.operator("wm.context_modal_mouse", text="Width Size") + props.data_path_iter = "selected_editable_objects" + props.data_path_item = "data.width" + props.input_scale = 0.01 + + if obj.type == 'EMPTY': + layout.operator_context = 'INVOKE_REGION_WIN' + + props = layout.operator("wm.context_modal_mouse", text="Empty Draw Size") + props.data_path_iter = "selected_editable_objects" + props.data_path_item = "empty_draw_size" + props.input_scale = 0.01 + if obj.type == 'LAMP': layout.operator_context = 'INVOKE_REGION_WIN' - props = layout.operator("wm.context_modal_mouse", text="Spot Size") + props = layout.operator("wm.context_modal_mouse", text="Energy") props.data_path_iter = "selected_editable_objects" - props.data_path_item = "data.spot_size" - props.input_scale = 0.01 + props.data_path_item = "data.energy" - props = layout.operator("wm.context_modal_mouse", text="Distance") - props.data_path_iter = "selected_editable_objects" - props.data_path_item = "data.distance" - props.input_scale = 0.1 + if obj.data.type in ['SPOT','AREA','POINT']: + props = layout.operator("wm.context_modal_mouse", text="Falloff Distance") + props.data_path_iter = "selected_editable_objects" + props.data_path_item = "data.distance" + props.input_scale = 0.1 - props = layout.operator("wm.context_modal_mouse", text="Clip Start") - props.data_path_iter = "selected_editable_objects" - props.data_path_item = "data.shadow_buffer_clip_start" - props.input_scale = 0.05 + if obj.data.type == 'SPOT': + layout.separator() + props = layout.operator("wm.context_modal_mouse", text="Spot Size") + props.data_path_iter = "selected_editable_objects" + props.data_path_item = "data.spot_size" + props.input_scale = 0.01 - props = layout.operator("wm.context_modal_mouse", text="Clip End") - props.data_path_iter = "selected_editable_objects" - props.data_path_item = "data.shadow_buffer_clip_end" - props.input_scale = 0.05 + props = layout.operator("wm.context_modal_mouse", text="Spot Blend") + props.data_path_iter = "selected_editable_objects" + props.data_path_item = "data.spot_blend" + props.input_scale = -0.01 - layout.separator() + props = layout.operator("wm.context_modal_mouse", text="Clip Start") + props.data_path_iter = "selected_editable_objects" + props.data_path_item = "data.shadow_buffer_clip_start" + props.input_scale = 0.05 + + props = layout.operator("wm.context_modal_mouse", text="Clip End") + props.data_path_iter = "selected_editable_objects" + props.data_path_item = "data.shadow_buffer_clip_end" + props.input_scale = 0.05 + + layout.separator() props = layout.operator("object.isolate_type_render") From ebde8a7ccc2b897b8f788fe8fb7266b638d4b22f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 26 Jun 2010 19:17:48 +0000 Subject: [PATCH 204/674] new notifier for FRAME_RANGE, use to recalculate the timeline scrollbar range. --- .../editors/space_sequencer/space_sequencer.c | 1 + source/blender/editors/space_time/space_time.c | 14 ++++++++++++++ source/blender/makesrna/intern/rna_scene.c | 4 ++-- source/blender/windowmanager/WM_types.h | 1 + 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c index 49c2049c66c..8b7670a55bc 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.c +++ b/source/blender/editors/space_sequencer/space_sequencer.c @@ -355,6 +355,7 @@ static void sequencer_main_area_listener(ARegion *ar, wmNotifier *wmn) case NC_SCENE: switch(wmn->data) { case ND_FRAME: + case ND_FRAME_RANGE: case ND_MARKERS: case ND_SEQUENCER: ED_region_tag_redraw(ar); diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c index 7928fc6284a..b2e1bfb9b93 100644 --- a/source/blender/editors/space_time/space_time.c +++ b/source/blender/editors/space_time/space_time.c @@ -410,6 +410,20 @@ static void time_listener(ScrArea *sa, wmNotifier *wmn) case ND_FRAME: ED_area_tag_refresh(sa); break; + case ND_FRAME_RANGE: + { + ARegion *ar; + Scene *scene = wmn->reference; + + for (ar= sa->regionbase.first; ar; ar= ar->next) { + if (ar->regiontype==RGN_TYPE_WINDOW) { + ar->v2d.tot.xmin= (float)(SFRA - 4); + ar->v2d.tot.xmax= (float)(EFRA + 4); + break; + } + } + } + break; } case NC_SPACE: switch (wmn->data) { diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index b752a47a31e..649bebd0d6b 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -2964,7 +2964,7 @@ void RNA_def_scene(BlenderRNA *brna) RNA_def_property_int_funcs(prop, NULL, "rna_Scene_start_frame_set", NULL); RNA_def_property_range(prop, MINFRAME, MAXFRAME); RNA_def_property_ui_text(prop, "Start Frame", "First frame of the playback/rendering range"); - RNA_def_property_update(prop, NC_SCENE|ND_FRAME, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_FRAME_RANGE, NULL); prop= RNA_def_property(srna, "frame_end", PROP_INT, PROP_TIME); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); @@ -2972,7 +2972,7 @@ void RNA_def_scene(BlenderRNA *brna) RNA_def_property_int_funcs(prop, NULL, "rna_Scene_end_frame_set", NULL); RNA_def_property_range(prop, MINFRAME, MAXFRAME); RNA_def_property_ui_text(prop, "End Frame", "Final frame of the playback/rendering range"); - RNA_def_property_update(prop, NC_SCENE|ND_FRAME, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_FRAME_RANGE, NULL); prop= RNA_def_property(srna, "frame_step", PROP_INT, PROP_TIME); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index 067df17917d..927ea00ae37 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -183,6 +183,7 @@ typedef struct wmNotifier { #define ND_KEYINGSET (12<<16) #define ND_TOOLSETTINGS (13<<16) #define ND_LAYER (14<<16) +#define ND_FRAME_RANGE (15<<16) /* NC_OBJECT Object */ #define ND_TRANSFORM (16<<16) From f6eed88a7883e07f00949f3952f9214fa70cb996 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 26 Jun 2010 20:00:45 +0000 Subject: [PATCH 205/674] - changed recent commit from William to have enum in user preferences as an expanded enum (like it was before) - rename 'no_bg' argument to 'emboss' (and negated) - added 'emboss' option for operator buttons. - Addon UI Layout slight modifications, changed enable/disable buttons for checkbox, grey out text of disabled addons to make it obvious at a glance whats enabled. - column expanded enums now align text to the left. - renamed ui_item_enum_row to ui_item_enum_expand since its used for columns and rows. --- release/scripts/ui/space_userpref.py | 40 ++++++++----------- release/scripts/ui/space_userpref_keymap.py | 8 ++-- release/scripts/ui/space_view3d.py | 2 +- .../editors/interface/interface_layout.c | 22 +++++++--- source/blender/makesrna/intern/rna_ui_api.c | 15 ++++--- 5 files changed, 46 insertions(+), 41 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 807779c8556..96b422a3e0d 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -533,13 +533,16 @@ class USERPREF_PT_theme(bpy.types.Panel): theme = context.user_preferences.themes[0] + split_themes = layout.split(percentage=0.2) + split_themes.prop(theme, "theme_area", expand=True) + split = layout.split(percentage=0.4) - split.prop(theme, "theme_area", text="") + layout.separator() layout.separator() - split = layout.split() + split = split_themes.split() if theme.theme_area == 'USER_INTERFACE': col = split.column() @@ -737,7 +740,7 @@ class USERPREF_PT_input(InputKeyMapPanel): sub.label(text="Presets:") subrow = sub.row(align=True) subrow.menu("USERPREF_MT_interaction_presets", text=bpy.types.USERPREF_MT_interaction_presets.bl_label) - subrow.operator("wm.interaction_preset_add", text="", icon="ZOOMIN") + subrow.operator("wm.interaction_preset_add", text="", icon='ZOOMIN') sub.separator() sub.label(text="Mouse:") @@ -883,27 +886,16 @@ class USERPREF_PT_addons(bpy.types.Panel): column = box.column() row = column.row() - # Arrow # - # If there are Infos or UI is expanded - if info["expanded"]: - row.operator("wm.addon_expand", icon="TRIA_DOWN").module = module_name - elif info["author"] or info["version"] or info["wiki_url"] or info["location"]: - row.operator("wm.addon_expand", icon="TRIA_RIGHT").module = module_name + row.operator("wm.addon_expand", icon='TRIA_DOWN' if info["expanded"] else 'TRIA_RIGHT', emboss=False).module = module_name + + rowsub = row.row() + rowsub.active = is_enabled + rowsub.label(text=info["name"], icon='ERROR' if info["warning"] else 'BLENDER') + + if is_enabled: + row.operator("wm.addon_disable", icon='CHECKBOX_HLT', text="", emboss=False).module = module_name else: - # Else, block UI - arrow = row.column() - arrow.enabled = False - arrow.operator("wm.addon_expand", icon="TRIA_RIGHT").module = module_name - - row.label(text=info["name"]) - - if is_enabled: operator = "wm.addon_disable" - else: operator = "wm.addon_enable" - - if info["warning"]: button_icon='ERROR' - else: button_icon='BLENDER' - - row.operator(operator, icon=button_icon).module = module_name + row.operator("wm.addon_enable", icon='CHECKBOX_DEHLT', text="", emboss=False).module = module_name # Expanded UI (only if additional infos are available) if info["expanded"]: @@ -957,7 +949,7 @@ class USERPREF_PT_addons(bpy.types.Panel): column = box.column() row = column.row() - row.label(text=ext, icon="ERROR") + row.label(text=ext, icon='ERROR') row.operator("wm.addon_disable").module = ext from bpy.props import * diff --git a/release/scripts/ui/space_userpref_keymap.py b/release/scripts/ui/space_userpref_keymap.py index 37007c65f7a..55df622e277 100644 --- a/release/scripts/ui/space_userpref_keymap.py +++ b/release/scripts/ui/space_userpref_keymap.py @@ -167,7 +167,7 @@ class InputKeyMapPanel(bpy.types.Panel): col = self.indented_layout(layout, level) row = col.row() - row.prop(km, "children_expanded", text="", no_bg=True) + row.prop(km, "children_expanded", text="", emboss=False) row.label(text=km.name) row.label() @@ -186,7 +186,7 @@ class InputKeyMapPanel(bpy.types.Panel): # equal in hierarchy to the other children categories subcol = self.indented_layout(col, level + 1) subrow = subcol.row() - subrow.prop(km, "items_expanded", text="", no_bg=True) + subrow.prop(km, "items_expanded", text="", emboss=False) subrow.label(text="%s (Global)" % km.name) else: km.items_expanded = True @@ -227,11 +227,11 @@ class InputKeyMapPanel(bpy.types.Panel): # header bar row = split.row() - row.prop(kmi, "expanded", text="", no_bg=True) + row.prop(kmi, "expanded", text="", emboss=False) row = split.row() row.enabled = km.user_defined - row.prop(kmi, "active", text="", no_bg=True) + row.prop(kmi, "active", text="", emboss=False) if km.modal: row.prop(kmi, "propvalue", text="") diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 19140a9e79d..750ffabe89a 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -2125,7 +2125,7 @@ class VIEW3D_PT_background_image(bpy.types.Panel): layout.active = view.display_background_images box = layout.box() row = box.row(align=True) - row.prop(bg, "show_expanded", text="", no_bg=True) + row.prop(bg, "show_expanded", text="", emboss=False) row.label(text=getattr(bg.image, "name", "Not Set")) row.operator("view3d.remove_background_image", text="", icon='X').index = i diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index 35e813b1efc..eb96ca45ff8 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -436,8 +436,9 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, char *name, int icon uiBlockSetCurLayout(block, layout); } -static void ui_item_enum_row(uiLayout *layout, uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, char *uiname, int x, int y, int w, int h, int icon_only) +static void ui_item_enum_expand(uiLayout *layout, uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, char *uiname, int x, int y, int w, int h, int icon_only) { + uiBut *but; EnumPropertyItem *item; const char *identifier; char *name; @@ -457,11 +458,14 @@ static void ui_item_enum_row(uiLayout *layout, uiBlock *block, PointerRNA *ptr, itemw= ui_text_icon_width(block->curlayout, name, icon, 0); if(icon && strcmp(name, "") != 0 && !icon_only) - uiDefIconTextButR(block, ROW, 0, icon, name, 0, 0, itemw, h, ptr, identifier, -1, 0, value, -1, -1, NULL); + but= uiDefIconTextButR(block, ROW, 0, icon, name, 0, 0, itemw, h, ptr, identifier, -1, 0, value, -1, -1, NULL); else if(icon) - uiDefIconButR(block, ROW, 0, icon, 0, 0, itemw, h, ptr, identifier, -1, 0, value, -1, -1, NULL); + but= uiDefIconButR(block, ROW, 0, icon, 0, 0, itemw, h, ptr, identifier, -1, 0, value, -1, -1, NULL); else - uiDefButR(block, ROW, 0, name, 0, 0, itemw, h, ptr, identifier, -1, 0, value, -1, -1, NULL); + but= uiDefButR(block, ROW, 0, name, 0, 0, itemw, h, ptr, identifier, -1, 0, value, -1, -1, NULL); + + if(ui_layout_local_dir(layout) != UI_LAYOUT_HORIZONTAL) + but->flag |= UI_TEXT_LEFT; } uiBlockSetCurLayout(block, layout); @@ -609,6 +613,9 @@ PointerRNA uiItemFullO(uiLayout *layout, char *idname, char *name, int icon, IDP w= ui_text_icon_width(layout, name, icon, 0); + if (flag & UI_ITEM_R_NO_BG) + uiBlockSetEmboss(block, UI_EMBOSSN); + if(icon && strcmp(name, "") != 0) but= uiDefIconTextButO(block, BUT, ot->idname, context, icon, (char*)name, 0, 0, w, UI_UNIT_Y, NULL); else if(icon) @@ -619,7 +626,10 @@ PointerRNA uiItemFullO(uiLayout *layout, char *idname, char *name, int icon, IDP /* text alignment for toolbar buttons */ if((layout->root->type == UI_LAYOUT_TOOLBAR) && !icon) but->flag |= UI_TEXT_LEFT; - + + if (flag & UI_ITEM_R_NO_BG) + uiBlockSetEmboss(block, UI_EMBOSS); + /* assign properties */ if(properties || (flag & UI_ITEM_O_RETURN_PROPS)) { PointerRNA *opptr= uiButGetOperatorPtrRNA(but); @@ -941,7 +951,7 @@ void uiItemFullR(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index } /* expanded enum */ else if(type == PROP_ENUM && expand) - ui_item_enum_row(layout, block, ptr, prop, name, 0, 0, w, h, icon_only); + ui_item_enum_expand(layout, block, ptr, prop, name, 0, 0, w, h, icon_only); /* property with separate label */ else if(type == PROP_ENUM || type == PROP_STRING || type == PROP_POINTER) { but= ui_item_with_label(layout, block, name, icon, ptr, prop, index, 0, 0, w, h, flag); diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c index ccea5fbdf93..29d871dd66e 100644 --- a/source/blender/makesrna/intern/rna_ui_api.c +++ b/source/blender/makesrna/intern/rna_ui_api.c @@ -35,7 +35,7 @@ #ifdef RNA_RUNTIME -static void rna_uiItemR(uiLayout *layout, PointerRNA *ptr, char *propname, char *name, int icon, int expand, int slider, int toggle, int icon_only, int event, int full_event, int no_bg, int index) +static void rna_uiItemR(uiLayout *layout, PointerRNA *ptr, char *propname, char *name, int icon, int expand, int slider, int toggle, int icon_only, int event, int full_event, int emboss, int index) { PropertyRNA *prop= RNA_struct_find_property(ptr, propname); int flag= 0; @@ -51,14 +51,16 @@ static void rna_uiItemR(uiLayout *layout, PointerRNA *ptr, char *propname, char flag |= (icon_only)? UI_ITEM_R_ICON_ONLY: 0; flag |= (event)? UI_ITEM_R_EVENT: 0; flag |= (full_event)? UI_ITEM_R_FULL_EVENT: 0; - flag |= (no_bg)? UI_ITEM_R_NO_BG: 0; + flag |= (emboss)? 0: UI_ITEM_R_NO_BG; uiItemFullR(layout, ptr, prop, index, 0, flag, name, icon); } -static PointerRNA rna_uiItemO(uiLayout *layout, char *opname, char *name, int icon) +static PointerRNA rna_uiItemO(uiLayout *layout, char *opname, char *name, int icon, int emboss) { - return uiItemFullO(layout, opname, name, icon, NULL, uiLayoutGetOperatorContext(layout), UI_ITEM_O_RETURN_PROPS); + int flag= UI_ITEM_O_RETURN_PROPS; + flag |= (emboss)? 0: UI_ITEM_R_NO_BG; + return uiItemFullO(layout, opname, name, icon, NULL, uiLayoutGetOperatorContext(layout), flag); } #else @@ -85,7 +87,7 @@ static void api_ui_item_op(FunctionRNA *func) { PropertyRNA *parm; parm= RNA_def_string(func, "operator", "", 0, "", "Identifier of the operator."); - RNA_def_property_flag(parm, PROP_REQUIRED); + RNA_def_property_flag(parm, PROP_REQUIRED); } static void api_ui_item_op_common(FunctionRNA *func) @@ -160,7 +162,7 @@ void RNA_api_ui_layout(StructRNA *srna) RNA_def_boolean(func, "icon_only", 0, "", "Draw only icons in buttons, no text."); RNA_def_boolean(func, "event", 0, "", "Use button to input key events."); RNA_def_boolean(func, "full_event", 0, "", "Use button to input full events including modifiers."); - RNA_def_boolean(func, "no_bg", 0, "", "Don't draw the button itself, just the icon/text."); + RNA_def_boolean(func, "emboss", 1, "", "Draw the button itself, just the icon/text."); RNA_def_int(func, "index", -1, -2, INT_MAX, "", "The index of this button, when set a single member of an array can be accessed, when set to -1 all array members are used.", -2, INT_MAX); /* RNA_NO_INDEX == -1 */ func= RNA_def_function(srna, "props_enum", "uiItemsEnumR"); @@ -186,6 +188,7 @@ void RNA_api_ui_layout(StructRNA *srna) func= RNA_def_function(srna, "operator", "rna_uiItemO"); api_ui_item_op_common(func); + RNA_def_boolean(func, "emboss", 1, "", "Draw the button itself, just the icon/text."); parm= RNA_def_pointer(func, "properties", "OperatorProperties", "", "Operator properties to fill in, return when 'properties' is set to true."); RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR); RNA_def_function_return(func, parm); From 4eba521903add76db3e85fcfc18251c35abb531f Mon Sep 17 00:00:00 2001 From: William Reynish Date: Sat, 26 Jun 2010 21:40:11 +0000 Subject: [PATCH 206/674] Set button emboss to false a few more places where it makes sense, such as disclosure triangles and panel closing X icons. --- release/scripts/ui/properties_data_curve.py | 2 +- release/scripts/ui/properties_object.py | 2 +- release/scripts/ui/space_logic.py | 9 +++++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/release/scripts/ui/properties_data_curve.py b/release/scripts/ui/properties_data_curve.py index b4d17104cfc..21359e1dbe2 100644 --- a/release/scripts/ui/properties_data_curve.py +++ b/release/scripts/ui/properties_data_curve.py @@ -395,7 +395,7 @@ class DATA_PT_textboxes(DataButtonsPanel): col.prop(box, "x", text="X") col.prop(box, "y", text="Y") - row.operator("font.textbox_remove", text='', icon='X').index = i + row.operator("font.textbox_remove", text='', icon='X', emboss=False).index = i classes = [ diff --git a/release/scripts/ui/properties_object.py b/release/scripts/ui/properties_object.py index 5072abd4ab1..03d5a21f479 100644 --- a/release/scripts/ui/properties_object.py +++ b/release/scripts/ui/properties_object.py @@ -170,7 +170,7 @@ class OBJECT_PT_groups(ObjectButtonsPanel): row = col.box().row() row.prop(group, "name", text="") - row.operator("object.group_remove", text="", icon='X') + row.operator("object.group_remove", text="", icon='X', emboss=False) split = col.box().split() diff --git a/release/scripts/ui/space_logic.py b/release/scripts/ui/space_logic.py index c6b5092b636..ab602da12b6 100644 --- a/release/scripts/ui/space_logic.py +++ b/release/scripts/ui/space_logic.py @@ -35,16 +35,17 @@ class LOGIC_PT_properties(bpy.types.Panel): ob = context.active_object game = ob.game - layout.operator("object.game_property_new", text="Add Game Property") + layout.operator("object.game_property_new", text="Add Game Property", icon='ZOOMIN') for i, prop in enumerate(game.properties): - - row = layout.row(align=True) + + box = layout.box() + 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, "debug", text="", toggle=True, icon='INFO') - row.operator("object.game_property_remove", text="", icon='X').index = i + row.operator("object.game_property_remove", text="", icon='X', emboss=False).index = i class LOGIC_MT_logicbricks_add(bpy.types.Menu): From 0d84ac375e5d03602a7f5cbc12c4698d7b8fb58d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 26 Jun 2010 22:23:54 +0000 Subject: [PATCH 207/674] more generic sorting of theme items by type (was adding all non color items last) --- release/scripts/ui/space_userpref.py | 34 ++++++++++++---------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 96b422a3e0d..741e36142ff 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -495,34 +495,30 @@ class USERPREF_PT_theme(bpy.types.Panel): row = split.row() - subsplit = row.split(percentage=0.95) - - padding = subsplit.split(percentage=0.15) - colsub1 = padding.column() - colsub1 = padding.column() - - subsplit = row.split(percentage=0.85) - - padding = subsplit.split(percentage=0.15) - colsub2 = padding.column() - colsub2 = padding.column() + subsplit = row.split(percentage=0.95) - props_color = [] - props_other = [] + padding1 = subsplit.split(percentage=0.15) + padding1.column() + + subsplit = row.split(percentage=0.85) + + padding2 = subsplit.split(percentage=0.15) + padding2.column() + + colsub_pair = padding1.column(), padding2.column() + + props_type = {} for i, prop in enumerate(themedata.rna_type.properties): attr = prop.identifier if attr == "rna_type": continue - if prop.subtype == 'COLOR': - props_color.append(prop.identifier) - else: - props_other.append(prop.identifier) + props_type.setdefault((prop.type, prop.subtype), []).append(prop.identifier) - for props_ls in props_color, props_other: + for props_type, props_ls in sorted(props_type.items()): for i, attr in enumerate(props_ls): - (colsub2 if i % 2 else colsub1).row().prop(themedata, attr) + colsub_pair[i % 2].row().prop(themedata, attr) def poll(self, context): userpref = context.user_preferences From bb07503d89fdbf98ef903aa0082b15d8743df00f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 26 Jun 2010 22:32:47 +0000 Subject: [PATCH 208/674] remove filename and directory from python operators that dont need them --- release/scripts/io/export_3ds.py | 1 - release/scripts/io/import_scene_3ds.py | 2 -- release/scripts/ui/properties_scene.py | 2 -- release/scripts/ui/space_userpref.py | 2 -- release/scripts/ui/space_userpref_keymap.py | 4 ---- 5 files changed, 11 deletions(-) diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index e234ab8600c..341b974fe06 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -1122,7 +1122,6 @@ class Export3DS(bpy.types.Operator): # to the class instance from the operator settings before calling. - # filename = StringProperty(name="File Name", description="File name used for exporting the 3DS file", maxlen= 1024, default= ""), filepath = StringProperty(name="File Path", description="Filepath used for exporting the 3DS file", maxlen= 1024, default= "") check_existing = BoolProperty(name="Check Existing", description="Check and warn on overwriting existing files", default=True, options={'HIDDEN'}) diff --git a/release/scripts/io/import_scene_3ds.py b/release/scripts/io/import_scene_3ds.py index c579f876371..67d53044dcd 100644 --- a/release/scripts/io/import_scene_3ds.py +++ b/release/scripts/io/import_scene_3ds.py @@ -1013,8 +1013,6 @@ class IMPORT_OT_autodesk_3ds(bpy.types.Operator): # to the class instance from the operator settings before calling. filepath = StringProperty(name="File Path", description="Filepath used for importing the 3DS file", maxlen= 1024, default= "") - filename = StringProperty(name="File Name", description="Name of the file.") - directory = StringProperty(name="Directory", description="Directory of the file.") # size_constraint = FloatProperty(name="Size Constraint", description="Scale the model by 10 until it reacehs the size constraint. Zero Disables.", min=0.0, max=1000.0, soft_min=0.0, soft_max=1000.0, default=10.0), # search_images = BoolProperty(name="Image Search", description="Search subdirectories for any assosiated images (Warning, may be slow)", default=True), diff --git a/release/scripts/ui/properties_scene.py b/release/scripts/ui/properties_scene.py index 4319711d05e..06ad1eda835 100644 --- a/release/scripts/ui/properties_scene.py +++ b/release/scripts/ui/properties_scene.py @@ -230,8 +230,6 @@ class ANIM_OT_keying_set_export(bpy.types.Operator): bl_label = "Export Keying Set..." filepath = bpy.props.StringProperty(name="File Path", description="Filepath to write file to.") - filename = bpy.props.StringProperty(name="File Name", description="Name of the file.") - directory = bpy.props.StringProperty(name="Directory", description="Directory of the file.") filter_folder = bpy.props.BoolProperty(name="Filter folders", description="", default=True, options={'HIDDEN'}) filter_text = bpy.props.BoolProperty(name="Filter text", description="", default=True, options={'HIDDEN'}) filter_python = bpy.props.BoolProperty(name="Filter python", description="", default=True, options={'HIDDEN'}) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 741e36142ff..2a00b2d4346 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -1039,8 +1039,6 @@ class WM_OT_addon_install(bpy.types.Operator): module = StringProperty(name="Module", description="Module name of the addon to disable") filepath = StringProperty(name="File Path", description="File path to write file to") - filename = StringProperty(name="File Name", description="Name of the file") - directory = StringProperty(name="Directory", description="Directory of the file") filter_folder = BoolProperty(name="Filter folders", description="", default=True, options={'HIDDEN'}) filter_python = BoolProperty(name="Filter python", description="", default=True, options={'HIDDEN'}) diff --git a/release/scripts/ui/space_userpref_keymap.py b/release/scripts/ui/space_userpref_keymap.py index 55df622e277..c93b24d5cb2 100644 --- a/release/scripts/ui/space_userpref_keymap.py +++ b/release/scripts/ui/space_userpref_keymap.py @@ -509,8 +509,6 @@ class WM_OT_keyconfig_import(bpy.types.Operator): bl_label = "Import Key Configuration..." filepath = StringProperty(name="File Path", description="Filepath to write file to") - filename = StringProperty(name="File Name", description="Name of the file") - directory = StringProperty(name="Directory", description="Directory of the file") filter_folder = BoolProperty(name="Filter folders", description="", default=True, options={'HIDDEN'}) filter_text = BoolProperty(name="Filter text", description="", default=True, options={'HIDDEN'}) filter_python = BoolProperty(name="Filter python", description="", default=True, options={'HIDDEN'}) @@ -570,8 +568,6 @@ class WM_OT_keyconfig_export(bpy.types.Operator): bl_label = "Export Key Configuration..." filepath = StringProperty(name="File Path", description="Filepath to write file to") - filename = StringProperty(name="File Name", description="Name of the file") - directory = StringProperty(name="Directory", description="Directory of the file") filter_folder = BoolProperty(name="Filter folders", description="", default=True, options={'HIDDEN'}) filter_text = BoolProperty(name="Filter text", description="", default=True, options={'HIDDEN'}) filter_python = BoolProperty(name="Filter python", description="", default=True, options={'HIDDEN'}) From ea4e5a08cdb782d314cee48dde5dff9331054fe3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 27 Jun 2010 00:33:12 +0000 Subject: [PATCH 209/674] script to create a man page from blenders --help text, replaced the hand edited man page with this. --- doc/blender.1 | 342 +++++++++++++++++++++++++-------------- doc/blender.1.py | 134 +++++++++++++++ source/creator/creator.c | 34 ++-- 3 files changed, 376 insertions(+), 134 deletions(-) create mode 100644 doc/blender.1.py diff --git a/doc/blender.1 b/doc/blender.1 index 68f00d8eb9b..43ac5638765 100644 --- a/doc/blender.1 +++ b/doc/blender.1 @@ -1,10 +1,9 @@ -.TH "BLENDER" "1" "June 06, 2010" "Blender 2\&.5\&.2" +.TH "BLENDER" "1" "June 27, 2010" "Blender Blender 2\&.52 (sub 5) " + .SH NAME blender \- a 3D modelling and rendering package .SH SYNOPSIS .B blender [args ...] [file] [args ...] - - .br .SH DESCRIPTION .PP @@ -15,209 +14,318 @@ Use Blender to create TV commercials, to make technical visualizations, business http://www.blender.org .SH OPTIONS -.SS "Render options:" + +Blender 2.52 (sub 5) Build +Usage: blender [args ...] [file] [args ...] +.br +.SS "Render Options:" .TP -.B \-b, \-\-background -Load in background (often used for UI-less rendering) +.B \-b or \-\-background +.br +Load in background (often used for UI\-less rendering) +.br .TP -.B \-a, \-\-render-anim +.B \-a or \-\-render\-anim +.br Render frames from start to end (inclusive) +.br .TP -.B \-S, \-\-scene +.B \-S or \-\-scene +.br Set the active scene for rendering +.br .TP -.B \-f, \-\-render-frame -Render frame and save it +.B \-f or \-\-render\-frame +.br +Render frame and save it. +.br ++ start frame relative, \- end frame relative. +.br .TP -.B \-s, \-\-frame-start +.B \-s or \-\-frame\-start +.br Set start to frame (use before the \-a argument) +.br .TP -.B \-e, \-\-frame-end +.B \-e or \-\-frame\-end +.br Set end to frame (use before the \-a argument) +.br .TP -.B \-j, \-\-frame-jump +.B \-j or \-\-frame\-jump +.br Set number of frames to step forward after each rendered frame +.br .TP -.B \-o, --render-output +.B \-o or \-\-render\-output +.br Set the render path and file name. -.IP -Use // at the start of the path to render relative to the blend file. -.IP +.br +Use // at the start of the path to +.br + render relative to the blend file. +.br The # characters are replaced by the frame number, and used to define zero padding. -.IP +.br ani_##_test.png becomes ani_01_test.png - test-######.png becomes test-000001.png +.br + test\-######.png becomes test\-000001.png +.br When the filename does not contain #, The suffix #### is added to the filename -.IP +.br The frame number will be added at the end of the filename. - eg: blender -b foobar.blend -o //render_ -F PNG -x 1 -a +.br + eg: blender \-b foobar.blend \-o //render_ \-F PNG \-x 1 \-a +.br //render_ becomes //render_####, writing frames as //render_0001.png// +.br -.HP -.B \-E, \-\-engine +.TP +.B \-E or \-\-engine +.br Specify the render engine -use \fI\-E help\fR to list available engines +.br +use \-E help to list available engines +.br -.SS "Format options:" +.IP + +.SS "Format Options:" .TP -.B \-F, \-\-render-format -Set the render format, valid options are... -.IP -TGA IRIS JPEG MOVIE IRIZ RAWTGA -AVIRAW AVIJPEG PNG BMP FRAMESERVER -.IP +.B \-F or \-\-render\-format +.br +Set the render format, Valid options are... +.br + TGA IRIS JPEG MOVIE IRIZ RAWTGA +.br + AVIRAW AVIJPEG PNG BMP FRAMESERVER +.br (formats that can be compiled into blender, not available on all systems) -.IP -HDR TIFF EXR MULTILAYER MPEG AVICODEC QUICKTIME CINEON DPX DDS +.br + HDR TIFF EXR MULTILAYER MPEG AVICODEC QUICKTIME CINEON DPX DDS +.br .TP -.B \-x, \-\-use-extension +.B \-x or \-\-use\-extension +.br Set option to add the file extension to the end of the file +.br .TP -.B \-t, \-\-threads +.B \-t or \-\-threads +.br Use amount of for rendering in background -[1-BLENDER_MAX_THREADS], 0 for systems processor count. +.br +[1\-BLENDER_MAX_THREADS], 0 for systems processor count. +.br -.SS "Animation options:" +.IP + +.SS "Animation Playback Options:" .TP .B \-a +.br Playback , only operates this way when not running in background. -.IP -\-p \-\- Open with lower left corner at , .br -\-m \-\- Read from disk (Don't buffer) + \-p Open with lower left corner at , .br -\-f \-\- Specify FPS to start with + \-m Read from disk (Don't buffer) +.br + \-f Specify FPS to start with +.br + \-j Set frame step to .br -\-j \-\- Set frame step to -.SS "Window options:" +.IP + +.SS "Window Options:" .TP -.B \-w, \-\-window-border +.B \-w or \-\-window\-border +.br Force opening with borders (default) +.br .TP -.B \-W, \-\-window-borderless +.B \-W or \-\-window\-borderless +.br Force opening with without borders +.br .TP -.B \-p, --window-geometry -Open with lower left corner at , and width and height , +.B \-p or \-\-window\-geometry +.br +Open with lower left corner at , and width and height as , +.br -.SS "Game Engine specific options:" -.TP -.B \-g fixedtime -Run on 50 hertz without dropping frames -.TP -.B \-g vertexarrays -Use Vertex Arrays for rendering (usually faster) -.TP -.B \-g nomipmap -No Texture Mipmapping -.TP -.B \-g linearmipmap -Linear Texture Mipmapping instead of Nearest (default) -.SS "Misc options:" -.TP -.B \-d, \-\-debug -Turn debugging on .IP -Prints every operator call and their arguments -.br -Disables mouse grab (to interact with a debugger in some cases) -.br -Keeps python sys.stdin rather then setting it to None + +.SS "Game Engine Specific Options:" .TP -.B \--debug-fpe +.B \-g Game Engine specific options +.br +\-g fixedtime Run on 50 hertz without dropping frames +.br +\-g vertexarrays Use Vertex Arrays for rendering (usually faster) +.br +\-g nomipmap No Texture Mipmapping +.br +\-g linearmipmap Linear Texture Mipmapping instead of Nearest (default) +.br + +.IP + +.SS "Misc Options:" + +.TP +.B \-d or \-\-debug +.br +Turn debugging on +.br + +.IP +* Prints every operator call and their arguments +.br +* Disables mouse grab (to interact with a debugger in some cases) +.br +* Keeps python sys.stdin rather then setting it to None +.br + +.TP +.B \-\-debug\-fpe +.br Enable floating point exceptions +.br + +.IP + +.TP +.B \-nojoystick +.br +Disable joystick support +.br + +.TP +.B \-noglsl +.br +Disable GLSL shading +.br .TP .B \-noaudio -Disable audio on systems that support audio +.br +Force sound system to None +.br .TP -.B \-nojoystick -Disable joystick support +.B \-setaudio +.br +Force sound system to a specific device +.br +NULL SDL OPENAL JACK +.br + +.IP .TP -.B \-noglsl -Disable GLSL shading +.B \-h or \-\-help +.br +Print this help text and exit +.br + +.IP .TP -.B \-y, \-\-enable-autoexec +.B \-y or \-\-enable\-autoexec +.br Enable automatic python script execution (default) +.br .TP -.B \-Y, \-\-disable-autoexec +.B \-Y or \-\-disable\-autoexec +.br Disable automatic python script execution (pydrivers, pyconstraints, pynodes) +.br + +.IP .TP -.B \-P +.B \-P or \-\-python +.br Run the given Python script (filename or Blender Text) +.br .TP -.B \-\-python-console +.B \-\-python\-console +.br Run blender with an interactive console +.br .TP -.B \-v, \-\-version +.B \-v or \-\-version +.br Print Blender version and exit +.br .TP -.B \-\- +.B \-\- +.br Ends option processing, following arguments passed unchanged. Access via python's sys.argv +.br + +.SS "Other Options:" .TP -.B \-h, \-\-help -Show a summary of options. +.B /? +.br +Print this help text and exit (windows only) +.br +.TP +.B \-R +.br +Register .blend extension (windows only) +.br + +.SS "Argument Parsing:" + + arguments must be separated by white space. eg + "blender \-ba test.blend" + ...will ignore the 'a' + "blender \-b test.blend \-f8" + ...will ignore 8 because there is no space between the \-f and the frame value +.br +.SS "Argument Order:" + +Arguments are executed in the order they are given. eg + "blender \-\-background test.blend \-\-render\-frame 1 \-\-render\-output /tmp" + ...will not render to /tmp because '\-\-render\-frame 1' renders before the output path is set + "blender \-\-background \-\-render\-output /tmp test.blend \-\-render\-frame 1" + ...will not render to /tmp because loading the blend file overwrites the render output that was set + "blender \-\-background test.blend \-\-render\-output /tmp \-\-render\-frame 1" works as expected. +.br +.br .SH "ENVIRONMENT VARIABLES" - -.PP -\fIHOME\fR -.RS 4 -Store files such as .blender/ .B.blend .Bfs .Blog here. -.RE - -.PP -\fIBLENDERPATH\fR -.RS 4 -System directory to use for data files and scripts. -For this build of blender the default BLENDERPATH is... -"/usr/share/blender" -setting the $BLENDERPATH will override this -.RE - -.PP -\fITMP\fR or \fITMPDIR\fR -.RS 4 -Store temporary files here. -.RE - -.PP -\fISDL_AUDIODRIVER\fR -.RS 4 -LibSDL audio driver - alsa, esd, alsa, dma. -.RE - -.PP -\fIPYTHONHOME\fR -.RS 4 -Path to the python directory, eg. /usr/lib/python. -.RE + \fIHOME\fR Store files such as .blender/ .B.blend .Bfs .Blog here. + \fIBLENDERPATH\fR System directory to use for data files and scripts. + For this build of blender the default \fIBLENDERPATH\fR is... + "/usr/local/share/blender/2.5" + setting the \fIBLENDERPATH\fR will override this + \fITMP\fR or \fITMPDIR\fR Store temporary files here. + \fIPYTHONHOME\fR Path to the python directory, eg. /usr/lib/python. +.br +.br .br .SH SEE ALSO @@ -228,5 +336,3 @@ Path to the python directory, eg. /usr/lib/python. This manpage was written for a Debian GNU/Linux system by Daniel Mester and updated by Cyril Brulebois and Dan Eicher . - - diff --git a/doc/blender.1.py b/doc/blender.1.py new file mode 100644 index 00000000000..c77e5ccbc3d --- /dev/null +++ b/doc/blender.1.py @@ -0,0 +1,134 @@ +#!/usr/bin/python + +# ##### 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. +# +# ##### END GPL LICENSE BLOCK ##### + +# + +import subprocess +import os + +import time +import datetime + + +def man_format(data): + data = data.replace("-", "\\-") + data = data.replace("\t", " ") + # data = data.replace("$", "\\fI") + + data_ls = [] + for w in data.split(): + if w.startswith("$"): + w = "\\fI" + w[1:] + "\\fR" + + data_ls.append(w) + + data = data[:len(data) - len(data.lstrip())] + " ".join(data_ls) + + return data + + +blender_bin = os.path.join(os.path.dirname(__file__), "../blender") + +blender_help = subprocess.Popen([blender_bin, "--help"], 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] + +date_string = datetime.date.fromtimestamp(time.time()).strftime("%B %d, %Y") + +filepath = __file__.replace(".py", "") + +file = open(filepath, "w") + +fw = file.write + +fw('.TH "BLENDER" "1" "%s" "Blender %s"\n' % (date_string, blender_version.replace(".", "\\&."))) + +fw(''' +.SH NAME +blender \- a 3D modelling and rendering package''') + +fw(''' +.SH SYNOPSIS +.B blender [args ...] [file] [args ...]''') + +fw(''' +.br +.SH DESCRIPTION +.PP +.B blender +is a 3D modelling and rendering package. It is the in-house software of a high quality animation studio, Blender has proven to be an extremely fast and versatile design instrument. The software has a personal touch, offering a unique approach to the world of Three Dimensions. + +Use Blender to create TV commercials, to make technical visualizations, business graphics, to do some morphing, or design user interfaces. You can easy build and manage complex environments. The renderer is versatile and extremely fast. All basic animation principles (curves & keys) are well implemented. + +http://www.blender.org''') + +fw(''' +.SH OPTIONS''') + +fw("\n\n") + +lines = [line.rstrip() for line in blender_help.split("\n")] + +while lines: + l = lines.pop(0) + if l.startswith("Environment Variables:"): + fw('.SH "ENVIRONMENT VARIABLES"\n') + elif l.endswith(":"): # one line + fw('.SS "%s"\n\n' % l) + elif l.startswith("-") or l.startswith("/"): # can be multi line + + fw('.TP\n') + fw('.B %s\n' % man_format(l)) + + while lines: + # line with no + if lines[0].strip() and len(lines[0].lstrip()) == len(lines[0]): # no white space + break + + if not l: # second blank line + fw('.IP\n') + else: + fw('.br\n') + + l = lines.pop(0) + l = l[1:] # remove first whitespace (tab) + + fw('%s\n' % man_format(l)) + + else: + if not l.strip(): + fw('.br\n') + else: + fw('%s\n' % man_format(l)) + +# footer + +fw(''' +.br +.SH SEE ALSO +.B yafaray(1) + +.br +.SH AUTHORS +This manpage was written for a Debian GNU/Linux system by Daniel Mester + and updated by Cyril Brulebois + and Dan Eicher . +''') diff --git a/source/creator/creator.c b/source/creator/creator.c index f8f5b460d17..3843e284a01 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -234,11 +234,11 @@ static int print_help(int argc, char **argv, void *data) BLI_argsPrintArgDoc(ba, "--window-geometry"); printf("\n"); - printf ("Game Engine specific options:\n"); + printf ("Game Engine Specific Options:\n"); BLI_argsPrintArgDoc(ba, "-g"); printf("\n"); - printf ("Misc options:\n"); + printf ("Misc Options:\n"); BLI_argsPrintArgDoc(ba, "--debug"); BLI_argsPrintArgDoc(ba, "--debug-fpe"); @@ -273,10 +273,25 @@ static int print_help(int argc, char **argv, void *data) printf ("Other Options:\n"); BLI_argsPrintOtherDoc(ba); + printf ("Argument Parsing:\n"); + printf ("\targuments must be separated by white space. eg\n"); + printf ("\t\t\"blender -ba test.blend\"\n"); + printf ("\t...will ignore the 'a'\n"); + printf ("\t\t\"blender -b test.blend -f8\"\n"); + printf ("\t...will ignore 8 because there is no space between the -f and the frame value\n\n"); + + printf ("Argument Order:\n"); + printf ("Arguments are executed in the order they are given. eg\n"); + printf ("\t\t\"blender --background test.blend --render-frame 1 --render-output /tmp\"\n"); + printf ("\t...will not render to /tmp because '--render-frame 1' renders before the output path is set\n"); + printf ("\t\t\"blender --background --render-output /tmp test.blend --render-frame 1\"\n"); + printf ("\t...will not render to /tmp because loading the blend file overwrites the render output that was set\n"); + printf ("\t\t\"blender --background test.blend --render-output /tmp --render-frame 1\" works as expected.\n\n"); + printf ("\nEnvironment Variables:\n"); printf (" $HOME\t\t\tStore files such as .blender/ .B.blend .Bfs .Blog here.\n"); printf (" $BLENDERPATH System directory to use for data files and scripts.\n"); - printf (" For this build of blender the default BLENDERPATH is...\n"); + printf (" For this build of blender the default $BLENDERPATH is...\n"); printf (" \"%s\"\n", blender_path); printf (" setting the $BLENDERPATH will override this\n"); #ifdef WIN32 @@ -289,19 +304,6 @@ static int print_help(int argc, char **argv, void *data) #endif printf (" $PYTHONHOME Path to the python directory, eg. /usr/lib/python.\n\n"); - printf ("Note: Arguments must be separated by white space. eg:\n"); - printf (" \"blender -ba test.blend\"\n"); - printf (" ...will ignore the 'a'\n"); - printf (" \"blender -b test.blend -f8\"\n"); - printf (" ...will ignore 8 because there is no space between the -f and the frame value\n\n"); - - printf ("Note: Arguments are executed in the order they are given. eg:\n"); - printf (" \"blender --background test.blend --render-frame 1 --render-output /tmp\"\n"); - printf (" ...will not render to /tmp because '--render-frame 1' renders before the output path is set\n"); - printf (" \"blender --background --render-output /tmp test.blend --render-frame 1\"\n"); - printf (" ...will not render to /tmp because loading the blend file overwrites the render output that was set\n"); - printf (" \"blender --background test.blend --render-output /tmp --render-frame 1\" works as expected.\n\n"); - exit(0); return 0; From 03fa4bb9992293b51eb7c24f2c1f810df634e632 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Sun, 27 Jun 2010 05:39:55 +0000 Subject: [PATCH 210/674] Partial cleanup of timing system, with some guidance from Joshua: * Fractional frames support has been changed to use a new var, scene->r.subframe. This is a 0.0-1.0 float representing a subframe interval, used in generating a final float frame number to evaluate animation system etc. * Changed frame_to_float() and some instances of bsystem_time() into a convenience function: float BKE_curframe(scene) which retrieves the floating point current frame, after subframe and frame length corrections. * Removed blur_offs and field_offs globals. These are now stored in render, used to generate a scene->r.subframe before render database processing. --- source/blender/blenkernel/BKE_scene.h | 2 ++ source/blender/blenkernel/intern/action.c | 2 +- source/blender/blenkernel/intern/object.c | 18 ++---------- .../blenkernel/intern/particle_system.c | 2 +- source/blender/blenkernel/intern/scene.c | 28 ++++++++----------- source/blender/editors/animation/anim_ops.c | 1 + .../blender/editors/include/ED_keyframing.h | 2 +- source/blender/editors/screen/screen_ops.c | 1 + .../editors/space_action/action_edit.c | 1 + .../blender/editors/space_graph/graph_edit.c | 1 + .../blender/editors/space_graph/graph_ops.c | 1 + .../editors/space_view3d/view3d_draw.c | 2 +- source/blender/makesdna/DNA_scene_types.h | 3 +- source/blender/modifiers/intern/MOD_build.c | 3 +- .../blender/modifiers/intern/MOD_collision.c | 3 +- source/blender/modifiers/intern/MOD_explode.c | 5 ++-- source/blender/modifiers/intern/MOD_wave.c | 3 +- .../render/intern/include/render_types.h | 3 +- .../render/intern/source/convertblender.c | 4 +-- .../blender/render/intern/source/pipeline.c | 23 +++++++++------ .../render/intern/source/pointdensity.c | 3 +- source/blender/render/intern/source/texture.c | 2 +- 22 files changed, 57 insertions(+), 56 deletions(-) diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h index 090979b33e9..9966aa11be3 100644 --- a/source/blender/blenkernel/BKE_scene.h +++ b/source/blender/blenkernel/BKE_scene.h @@ -80,6 +80,8 @@ void scene_select_base(struct Scene *sce, struct Base *selbase); /* checks for cycle, returns 1 if it's all OK */ int scene_check_setscene(struct Scene *sce); +float BKE_curframe(struct Scene *scene); + void scene_update_tagged(struct Scene *sce); void scene_update_for_newframe(struct Scene *sce, unsigned int lay); diff --git a/source/blender/blenkernel/intern/action.c b/source/blender/blenkernel/intern/action.c index 50552d33c41..6c8e5c48745 100644 --- a/source/blender/blenkernel/intern/action.c +++ b/source/blender/blenkernel/intern/action.c @@ -1418,7 +1418,7 @@ static void do_nla(Scene *scene, Object *ob, int blocktype) bActionStrip *strip, *striplast=NULL, *stripfirst=NULL; float striptime, frametime, length, actlength; float blendfac, stripframe; - float scene_cfra= frame_to_float(scene, scene->r.cfra); + float scene_cfra= BKE_curframe(scene); int doit, dostride; if(blocktype==ID_AR) { diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 4e90387a2c3..4e729ce4e9d 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1605,20 +1605,8 @@ void object_make_proxy(Object *ob, Object *target, Object *gob) /* there is also a timing calculation in drawobject() */ -float bluroffs= 0.0f, fieldoffs= 0.0f; int no_speed_curve= 0; -/* ugly calls from render */ -void set_mblur_offs(float blur) -{ - bluroffs= blur; -} - -void set_field_offs(float field) -{ - fieldoffs= field; -} - void disable_speed_curve(int val) { no_speed_curve= val; @@ -1628,11 +1616,9 @@ void disable_speed_curve(int val) /* ob can be NULL */ float bsystem_time(struct Scene *scene, Object *ob, float cfra, float ofs) { - /* returns float ( see frame_to_float in ipo.c) */ + /* returns float ( see BKE_curframe in scene.c) */ + cfra += scene->r.subframe; - /* bluroffs and fieldoffs are ugly globals that are set by render */ - cfra+= bluroffs+fieldoffs; - /* global time */ if (scene) cfra*= scene->r.framelen; diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index aa0ed983154..3a6fb92d63a 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -3925,7 +3925,7 @@ void particle_system_update(Scene *scene, Object *ob, ParticleSystem *psys) if(!psys_check_enabled(ob, psys)) return; - cfra= bsystem_time(scene, ob, (float)scene->r.cfra, 0.0f); + cfra= BKE_curframe(scene); sim.psmd= psys_get_modifier(ob, psys); /* system was already updated from modifier stack */ diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 719dc964b89..1bc690eb0ed 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -879,22 +879,16 @@ int scene_check_setscene(Scene *sce) return 1; } -/* This (evil) function is needed to cope with two legacy Blender rendering features -* mblur (motion blur that renders 'subframes' and blurs them together), and fields -* rendering. Thus, the use of ugly globals from object.c -*/ -// BAD... EVIL... JUJU...!!!! -// XXX moved here temporarily -float frame_to_float (Scene *scene, int cfra) /* see also bsystem_time in object.c */ +/* This function is needed to cope with fractional frames - including two Blender rendering features +* mblur (motion blur that renders 'subframes' and blurs them together), and fields rendering. */ + +/* see also bsystem_time in object.c */ +float BKE_curframe(Scene *scene) { - extern float bluroffs; /* bad stuff borrowed from object.c */ - extern float fieldoffs; - float ctime; - - ctime= (float)cfra; - ctime+= bluroffs+fieldoffs; - ctime*= scene->r.framelen; - + float ctime = scene->r.cfra; + ctime+= scene->r.subframe; + ctime*= scene->r.framelen; + return ctime; } @@ -929,7 +923,7 @@ void scene_update_tagged(Scene *scene) /* recalc scene animation data here (for sequencer) */ { - float ctime = frame_to_float(scene, scene->r.cfra); + float ctime = BKE_curframe(scene); AnimData *adt= BKE_animdata_from_id(&scene->id); if(adt && (adt->recalc & ADT_RECALC_ANIM)) @@ -946,7 +940,7 @@ void scene_update_tagged(Scene *scene) /* applies changes right away, does all sets too */ void scene_update_for_newframe(Scene *sce, unsigned int lay) { - float ctime = frame_to_float(sce, sce->r.cfra); + float ctime = BKE_curframe(sce); Scene *sce_iter; /* clear animation overrides */ diff --git a/source/blender/editors/animation/anim_ops.c b/source/blender/editors/animation/anim_ops.c index 88d6051b23b..11ba3cfffed 100644 --- a/source/blender/editors/animation/anim_ops.c +++ b/source/blender/editors/animation/anim_ops.c @@ -69,6 +69,7 @@ static void change_frame_apply(bContext *C, wmOperator *op) /* set the new frame number */ CFRA= RNA_int_get(op->ptr, "frame"); FRAMENUMBER_MIN_CLAMP(CFRA); + SUBFRA = 0.f; /* do updates */ sound_seek_scene(C); diff --git a/source/blender/editors/include/ED_keyframing.h b/source/blender/editors/include/ED_keyframing.h index 86a1f5c4031..fc5e3a43a62 100644 --- a/source/blender/editors/include/ED_keyframing.h +++ b/source/blender/editors/include/ED_keyframing.h @@ -257,7 +257,7 @@ short fcurve_frame_has_keyframe(struct FCurve *fcu, float frame, short filter); * Checks whether a keyframe exists for the given ID-block one the given frame. * - It is recommended to call this method over the other keyframe-checkers directly, * in case some detail of the implementation changes... - * - frame: the value of this is quite often result of frame_to_float(CFRA) + * - frame: the value of this is quite often result of BKE_curframe() */ short id_frame_has_keyframe(struct ID *id, float frame, short filter); diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 515b06feba1..5aeb50b34c5 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -1504,6 +1504,7 @@ static int frame_offset_exec(bContext *C, wmOperator *op) delta = RNA_int_get(op->ptr, "delta"); CTX_data_scene(C)->r.cfra += delta; + CTX_data_scene(C)->r.subframe = 0.f; sound_seek_scene(C); diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c index 01c8ede6a2a..0e2a7f690c5 100644 --- a/source/blender/editors/space_action/action_edit.c +++ b/source/blender/editors/space_action/action_edit.c @@ -1138,6 +1138,7 @@ static int actkeys_framejump_exec(bContext *C, wmOperator *op) if (ked.i1) { Scene *scene= ac.scene; CFRA= (int)floor((ked.f1 / ked.i1) + 0.5f); + SUBFRA= 0.f; } /* set notifier that things have changed */ diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index 6834dfac58a..a4a72ad2cd4 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -1582,6 +1582,7 @@ static int graphkeys_framejump_exec(bContext *C, wmOperator *op) /* take the average values, rounding to the nearest int for the current frame */ CFRA= (int)floor((ked.f1 / ked.i1) + 0.5f); + SUBFRA= 0.f; sipo->cursorVal= ked.f2 / (float)ked.i1; } diff --git a/source/blender/editors/space_graph/graph_ops.c b/source/blender/editors/space_graph/graph_ops.c index c6d601f9305..fa9acb282c7 100644 --- a/source/blender/editors/space_graph/graph_ops.c +++ b/source/blender/editors/space_graph/graph_ops.c @@ -71,6 +71,7 @@ static void graphview_cursor_apply(bContext *C, wmOperator *op) * NOTE: sync this part of the code with ANIM_OT_change_frame */ CFRA= RNA_int_get(op->ptr, "frame"); + SUBFRA=0.f; sound_seek_scene(C); /* set the cursor value */ diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index 96f1e058948..cfae9e7c4d5 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -820,7 +820,7 @@ static void draw_selected_name(Scene *scene, Object *ob, View3D *v3d) } /* colour depends on whether there is a keyframe */ - if (id_frame_has_keyframe((ID *)ob, /*frame_to_float(scene, CFRA)*/(float)(CFRA), v3d->keyflags)) + if (id_frame_has_keyframe((ID *)ob, /*BKE_curframe(scene)*/(float)(CFRA), v3d->keyflags)) UI_ThemeColor(TH_VERTEX_SELECT); else UI_ThemeColor(TH_TEXT_HI); diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index e6688060b22..1933798d7c9 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -209,12 +209,12 @@ typedef struct RenderData { struct FFMpegCodecData ffcodecdata; int cfra, sfra, efra; /* frames as in 'images' */ + float subframe; /* subframe offset from cfra, in 0.0-1.0 */ int psfra, pefra; /* start+end frames of preview range */ int images, framapto; short flag, threads; - float ctime; /* use for calcutions */ float framelen, blurfac; /** For UR edge rendering: give the edges this color */ @@ -1022,6 +1022,7 @@ typedef struct Scene { #define ID_NEW_US(a) if( (a)->id.newid) {(a)= (void *)(a)->id.newid; (a)->id.us++;} #define ID_NEW_US2(a) if( ((ID *)a)->newid) {(a)= ((ID *)a)->newid; ((ID *)a)->us++;} #define CFRA (scene->r.cfra) +#define SUBFRA (scene->r.subframe) #define F_CFRA ((float)(scene->r.cfra)) #define SFRA (scene->r.sfra) #define EFRA (scene->r.efra) diff --git a/source/blender/modifiers/intern/MOD_build.c b/source/blender/modifiers/intern/MOD_build.c index 05ef85b818a..47693ba337e 100644 --- a/source/blender/modifiers/intern/MOD_build.c +++ b/source/blender/modifiers/intern/MOD_build.c @@ -41,6 +41,7 @@ #include "BKE_modifier.h" #include "BKE_object.h" #include "BKE_particle.h" +#include "BKE_scene.h" static void initData(ModifierData *md) @@ -106,7 +107,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, frac = bsystem_time(md->scene, ob, md->scene->r.cfra, bmd->start - 1.0f) / bmd->length; } else { - frac = md->scene->r.cfra - bmd->start / bmd->length; + frac = BKE_curframe(md->scene) - bmd->start / bmd->length; } CLAMP(frac, 0.0, 1.0); diff --git a/source/blender/modifiers/intern/MOD_collision.c b/source/blender/modifiers/intern/MOD_collision.c index af8e7605128..7f70bd8f709 100644 --- a/source/blender/modifiers/intern/MOD_collision.c +++ b/source/blender/modifiers/intern/MOD_collision.c @@ -40,6 +40,7 @@ #include "BKE_modifier.h" #include "BKE_object.h" #include "BKE_pointcache.h" +#include "BKE_scene.h" static void initData(ModifierData *md) @@ -119,7 +120,7 @@ static void deformVerts( CDDM_apply_vert_coords(dm, vertexCos); CDDM_calc_normals(dm); - current_time = bsystem_time (md->scene, ob, ( float ) md->scene->r.cfra, 0.0 ); + current_time = BKE_curframe(md->scene); if(G.rt > 0) printf("current_time %f, collmd->time %f\n", current_time, collmd->time); diff --git a/source/blender/modifiers/intern/MOD_explode.c b/source/blender/modifiers/intern/MOD_explode.c index a45ee19b68d..7d506ebfae0 100644 --- a/source/blender/modifiers/intern/MOD_explode.c +++ b/source/blender/modifiers/intern/MOD_explode.c @@ -39,13 +39,14 @@ #include "BLI_edgehash.h" #include "BKE_cdderivedmesh.h" +#include "BKE_deform.h" #include "BKE_lattice.h" #include "BKE_mesh.h" #include "BKE_modifier.h" #include "BKE_object.h" #include "BKE_particle.h" +#include "BKE_scene.h" #include "BKE_utildefines.h" -#include "BKE_deform.h" #include "MEM_guardedalloc.h" @@ -682,7 +683,7 @@ static DerivedMesh * explodeMesh(ExplodeModifierData *emd, timestep= psys_get_timestep(&sim); //if(part->flag & PART_GLOB_TIME) - cfra=bsystem_time(scene, 0,(float)scene->r.cfra,0.0); + cfra= BKE_curframe(scene); //else // cfra=bsystem_time(scene, ob,(float)scene->r.cfra,0.0); diff --git a/source/blender/modifiers/intern/MOD_wave.c b/source/blender/modifiers/intern/MOD_wave.c index 23e13266d80..4b55d113536 100644 --- a/source/blender/modifiers/intern/MOD_wave.c +++ b/source/blender/modifiers/intern/MOD_wave.c @@ -38,6 +38,7 @@ #include "BKE_DerivedMesh.h" #include "BKE_object.h" #include "BKE_deform.h" +#include "BKE_scene.h" #include "depsgraph_private.h" @@ -247,7 +248,7 @@ static void waveModifier_do(WaveModifierData *md, MVert *mvert = NULL; MDeformVert *dvert = NULL; int defgrp_index; - float ctime = bsystem_time(scene, ob, (float)scene->r.cfra, 0.0); + float ctime = BKE_curframe(scene); float minfac = (float)(1.0 / exp(wmd->width * wmd->narrow * wmd->width * wmd->narrow)); float lifefac = wmd->height; diff --git a/source/blender/render/intern/include/render_types.h b/source/blender/render/intern/include/render_types.h index 2da8570c3a0..331474a85e3 100644 --- a/source/blender/render/intern/include/render_types.h +++ b/source/blender/render/intern/include/render_types.h @@ -189,7 +189,8 @@ struct Render ListBase strandsurface; /* use this instead of R.r.cfra */ - float cfra; + float cfra; + float mblur_offs, field_offs; /* render database */ int totvlak, totvert, tothalo, totstrand, totlamp; diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index deb3d99f9ed..eaef6571c4f 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -1520,7 +1520,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem RNG *rng= 0; float loc[3],loc1[3],loc0[3],mat[4][4],nmat[3][3],co[3],nor[3],time; float strandlen=0.0f, curlen=0.0f; - float hasize, pa_size, r_tilt, r_length, cfra=bsystem_time(re->scene, ob, (float)re->scene->r.cfra, 0.0); + float hasize, pa_size, r_tilt, r_length, cfra= BKE_curframe(re->scene); float pa_time, pa_birthtime, pa_dietime; float random, simplify[2]; int i, a, k, max_k=0, totpart, dosimplify = 0, dosurfacecache = 0; @@ -1639,7 +1639,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem if(part->flag & PART_GLOB_TIME) #endif // XXX old animation system - cfra = bsystem_time(re->scene, 0, (float)re->scene->r.cfra, 0.0); + cfra = BKE_curframe(re->scene); ///* 2.4 setup reactors */ // if(part->type == PART_REACTOR){ diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 180f8a960db..722ce55e950 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -1302,6 +1302,8 @@ void RE_InitState(Render *re, Render *source, RenderData *rd, SceneRenderLayer * /* we clip faces with a minimum of 2 pixel boundary outside of image border. see zbuf.c */ re->clipcrop= 1.0f + 2.0f/(float)(re->winx>re->winy?re->winy:re->winx); + re->mblur_offs = re->field_offs = 0.f; + RE_init_threadcount(re); } @@ -1762,6 +1764,7 @@ static void do_render_3d(Render *re) /* internal */ // re->cfra= cfra; /* <- unused! */ + re->scene->r.subframe = re->mblur_offs + re->field_offs; /* make render verts/faces/halos/lamps */ if(render_scene_needs_vector(re)) @@ -1778,6 +1781,8 @@ static void do_render_3d(Render *re) /* free all render verts etc */ RE_Database_Free(re); + + re->scene->r.subframe = 0.f; } /* called by blur loop, accumulate RGBA key alpha */ @@ -1877,7 +1882,7 @@ static void do_render_blur_3d(Render *re) /* do the blur steps */ while(blur--) { - set_mblur_offs( re->r.blurfac*((float)(re->r.mblur_samples-blur))/(float)re->r.mblur_samples ); + re->mblur_offs = re->r.blurfac*((float)(re->r.mblur_samples-blur))/(float)re->r.mblur_samples; re->i.curblur= re->r.mblur_samples-blur; /* stats */ @@ -1895,7 +1900,7 @@ static void do_render_blur_3d(Render *re) re->result= rres; BLI_rw_mutex_unlock(&re->resultmutex); - set_mblur_offs(0.0f); + re->mblur_offs = 0.0f; re->i.curblur= 0; /* stats */ /* weak... the display callback wants an active renderlayer pointer... */ @@ -1975,15 +1980,17 @@ static void do_render_fields_3d(Render *re) re->i.curfield= 2; /* stats */ re->flag |= R_SEC_FIELD; - if((re->r.mode & R_FIELDSTILL)==0) - set_field_offs(0.5f); + if((re->r.mode & R_FIELDSTILL)==0) { + re->field_offs = 0.5f; + } RE_SetCamera(re, re->scene->camera); if(re->r.mode & R_MBLUR) do_render_blur_3d(re); else do_render_3d(re); re->flag &= ~R_SEC_FIELD; - set_field_offs(0.0f); + + re->field_offs = 0.0f; rr2= re->result; } @@ -2448,7 +2455,7 @@ static void do_render_seq(Render * re) if(recurs_depth==0) { /* otherwise sequencer animation isnt updated */ - BKE_animsys_evaluate_all_animation(G.main, (float)cfra); // XXX, was frame_to_float(re->scene, cfra) + BKE_animsys_evaluate_all_animation(G.main, (float)cfra); // XXX, was BKE_curframe(re->scene) } recurs_depth++; @@ -2748,7 +2755,7 @@ void RE_BlenderFrame(Render *re, Scene *scene, SceneRenderLayer *srl, unsigned i MEM_reset_peak_memory(); do_render_all_options(re); } - + /* UGLY WARNING */ G.rendering= 0; } @@ -2946,7 +2953,7 @@ void RE_BlenderAnim(Render *re, Scene *scene, unsigned int lay, int sfra, int ef mh->end_movie(); scene->r.cfra= cfrao; - + /* UGLY WARNING */ G.rendering= 0; } diff --git a/source/blender/render/intern/source/pointdensity.c b/source/blender/render/intern/source/pointdensity.c index 6ae9038437b..4f86f67f0e3 100644 --- a/source/blender/render/intern/source/pointdensity.c +++ b/source/blender/render/intern/source/pointdensity.c @@ -39,6 +39,7 @@ #include "BKE_main.h" #include "BKE_object.h" #include "BKE_particle.h" +#include "BKE_scene.h" #include "BKE_texture.h" #include "DNA_meshdata_types.h" @@ -95,7 +96,7 @@ static void pointdensity_cache_psys(Render *re, PointDensity *pd, Object *ob, Pa ParticleKey state; ParticleSimulationData sim = {re->scene, ob, psys, NULL}; ParticleData *pa=NULL; - float cfra = bsystem_time(re->scene, ob, (float)re->scene->r.cfra, 0.0); + float cfra = BKE_curframe(re->scene); int i, childexists; int total_particles, offset=0; int data_used = point_data_used(pd); diff --git a/source/blender/render/intern/source/texture.c b/source/blender/render/intern/source/texture.c index 9b087900734..e982c1a12a7 100644 --- a/source/blender/render/intern/source/texture.c +++ b/source/blender/render/intern/source/texture.c @@ -98,7 +98,7 @@ void init_render_texture(Render *re, Tex *tex) if(tex->type==TEX_PLUGIN) { if(tex->plugin && tex->plugin->doit) { if(tex->plugin->cfra) { - *(tex->plugin->cfra)= (float)cfra; //frame_to_float(re->scene, cfra); // XXX old animsys - timing stuff to be fixed + *(tex->plugin->cfra)= (float)cfra; //BKE_curframe(re->scene); // XXX old animsys - timing stuff to be fixed } } } From ce7d7689340891e329f182cf969e13573483aded Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Sun, 27 Jun 2010 06:15:36 +0000 Subject: [PATCH 211/674] Fix [#22675] Dupli tool Tweaked operator poll functions --- source/blender/editors/object/object_edit.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 5f61da4ae37..5b434f7eae4 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -1792,6 +1792,11 @@ static int shade_smooth_exec(bContext *C, wmOperator *op) return (done)? OPERATOR_FINISHED: OPERATOR_CANCELLED; } +static int shade_poll(bContext *C) +{ + return (ED_operator_object_active_editable(C) && !ED_operator_editmesh(C)); +} + void OBJECT_OT_shade_flat(wmOperatorType *ot) { /* identifiers */ @@ -1799,7 +1804,7 @@ void OBJECT_OT_shade_flat(wmOperatorType *ot) ot->idname= "OBJECT_OT_shade_flat"; /* api callbacks */ - ot->poll= ED_operator_object_active_editable; + ot->poll= shade_poll; ot->exec= shade_smooth_exec; /* flags */ @@ -1813,7 +1818,7 @@ void OBJECT_OT_shade_smooth(wmOperatorType *ot) ot->idname= "OBJECT_OT_shade_smooth"; /* api callbacks */ - ot->poll= ED_operator_object_active_editable; + ot->poll= shade_poll; ot->exec= shade_smooth_exec; /* flags */ From e86c5cf9ea951c102be1206ca489252166623e38 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Sun, 27 Jun 2010 07:45:57 +0000 Subject: [PATCH 212/674] Fix [#22564] Object name by object type Restored auto-naming newly created objects by type, for Mesh, Lamp, Meta --- source/blender/blenkernel/intern/object.c | 2 +- source/blender/editors/curve/editcurve.c | 4 ++-- source/blender/editors/mesh/editmesh_add.c | 20 ++++++++++++++++++++ source/blender/editors/metaball/mball_edit.c | 15 +++++++++++++++ source/blender/editors/object/object_add.c | 16 ++++++++++++++++ 5 files changed, 54 insertions(+), 3 deletions(-) diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 4e729ce4e9d..61d81e461b6 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -986,7 +986,7 @@ static char *get_obdata_defname(int type) case OB_MESH: return "Mesh"; case OB_CURVE: return "Curve"; case OB_SURF: return "Surf"; - case OB_FONT: return "Font"; + case OB_FONT: return "Text"; case OB_MBALL: return "Mball"; case OB_CAMERA: return "Camera"; case OB_LAMP: return "Lamp"; diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index dad111432de..186f3f20082 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -5219,8 +5219,8 @@ Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newname) float tmp_vec[3] = {0.f, 0.f, 0.f}; if(newname) { - rename_id((ID *)obedit, "SurfDonut"); - rename_id((ID *)obedit->data, "SurfDonut"); + rename_id((ID *)obedit, "SurfTorus"); + rename_id((ID *)obedit->data, "SurfTorus"); } xzproj= 1; diff --git a/source/blender/editors/mesh/editmesh_add.c b/source/blender/editors/mesh/editmesh_add.c index a7a0a854f1b..6cdd1dff1fc 100644 --- a/source/blender/editors/mesh/editmesh_add.c +++ b/source/blender/editors/mesh/editmesh_add.c @@ -1262,6 +1262,23 @@ static void make_prim(Object *obedit, int type, float mat[4][4], int tot, int se /* ********* add primitive operators ************* */ +static char *get_mesh_defname(int type) +{ + switch (type) { + case PRIM_PLANE: return "Plane"; + case PRIM_CUBE: return "Cube"; + case PRIM_CIRCLE: return "Circle"; + case PRIM_CYLINDER: return "Tube"; + case PRIM_CONE: return "Cone"; + case PRIM_GRID: return "Grid"; + case PRIM_UVSPHERE: return "Sphere"; + case PRIM_ICOSPHERE: return "Icosphere"; + case PRIM_MONKEY: return "Monkey"; + default: + return "Mesh"; + } +} + static void make_prim_ext(bContext *C, float *loc, float *rot, int enter_editmode, unsigned int layer, int type, int tot, int seg, int subdiv, float dia, float depth, int ext, int fill) @@ -1274,6 +1291,9 @@ static void make_prim_ext(bContext *C, float *loc, float *rot, int enter_editmod if(obedit==NULL || obedit->type!=OB_MESH) { obedit= ED_object_add_type(C, OB_MESH, loc, rot, FALSE, layer); + rename_id((ID *)obedit, get_mesh_defname(type)); + rename_id((ID *)obedit->data, get_mesh_defname(type)); + /* create editmode */ ED_object_enter_editmode(C, EM_DO_UNDO|EM_IGNORE_LAYER); /* rare cases the active layer is messed up */ newob = 1; diff --git a/source/blender/editors/metaball/mball_edit.c b/source/blender/editors/metaball/mball_edit.c index 62261c3c68f..2ffccff835d 100644 --- a/source/blender/editors/metaball/mball_edit.c +++ b/source/blender/editors/metaball/mball_edit.c @@ -122,24 +122,39 @@ MetaElem *add_metaball_primitive(bContext *C, float mat[4][4], int type, int new case MB_BALL: ml->type = MB_BALL; ml->expx= ml->expy= ml->expz= 1.0; + + rename_id((ID *)obedit, "Meta Ball"); + rename_id((ID *)obedit->data, "Meta Ball"); break; case MB_TUBE: ml->type = MB_TUBE; ml->expx= ml->expy= ml->expz= 1.0; + + rename_id((ID *)obedit, "Meta Tube"); + rename_id((ID *)obedit->data, "Meta Tube"); break; case MB_PLANE: ml->type = MB_PLANE; ml->expx= ml->expy= ml->expz= 1.0; + + rename_id((ID *)obedit, "Meta Plane"); + rename_id((ID *)obedit->data, "Meta Plane"); break; case MB_ELIPSOID: ml->type = MB_ELIPSOID; ml->expx= 1.2f; ml->expy= 0.8f; ml->expz= 1.0; + + rename_id((ID *)obedit, "Meta Ellipsoid"); + rename_id((ID *)obedit->data, "Meta Ellipsoid"); break; case MB_CUBE: ml->type = MB_CUBE; ml->expx= ml->expy= ml->expz= 1.0; + + rename_id((ID *)obedit, "Meta Cube"); + rename_id((ID *)obedit->data, "Meta Cube"); break; default: break; diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index ee0fd2b47e9..92256d5e613 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -671,6 +671,19 @@ void OBJECT_OT_armature_add(wmOperatorType *ot) ED_object_add_generic_props(ot, TRUE); } +static char *get_lamp_defname(int type) +{ + switch (type) { + case LA_LOCAL: return "Point"; + case LA_SUN: return "Sun"; + case LA_SPOT: return "Spot"; + case LA_HEMI: return "Hemi"; + case LA_AREA: return "Area"; + default: + return "Lamp"; + } +} + static int object_lamp_add_exec(bContext *C, wmOperator *op) { Object *ob; @@ -687,6 +700,9 @@ static int object_lamp_add_exec(bContext *C, wmOperator *op) if(ob && ob->data) ((Lamp*)ob->data)->type= type; + rename_id((ID *)ob, get_lamp_defname(type)); + rename_id((ID *)ob->data, get_lamp_defname(type)); + return OPERATOR_FINISHED; } From 3262dfdadd352f27043f2ba13540c3fb45d3743a Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Sun, 27 Jun 2010 08:35:27 +0000 Subject: [PATCH 213/674] Fix #22051: crash when scaling parent metaball Keep the constant resolution for any motherball's scale --- source/blender/blenkernel/BKE_mball.h | 1 + source/blender/blenkernel/intern/mball.c | 29 ++++++++++++++++-------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/source/blender/blenkernel/BKE_mball.h b/source/blender/blenkernel/BKE_mball.h index e28e2c4d86e..ce70b4cca2f 100644 --- a/source/blender/blenkernel/BKE_mball.h +++ b/source/blender/blenkernel/BKE_mball.h @@ -97,6 +97,7 @@ typedef struct process { /* parameters, function, storage */ CENTERLIST **centers; /* cube center hash table */ CORNER **corners; /* corner value hash table */ EDGELIST **edges; /* edge and vertex id hash table */ + float scale[3]; } PROCESS; /* dividing scene using octal tree makes polygonisation faster */ diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c index 3acc46967be..8d2dbf964b8 100644 --- a/source/blender/blenkernel/intern/mball.c +++ b/source/blender/blenkernel/intern/mball.c @@ -876,11 +876,11 @@ CORNER *setcorner (PROCESS* p, int i, int j, int k) c = (CORNER *) new_pgn_element(sizeof(CORNER)); c->i = i; - c->x = ((float)i-0.5f)*p->size; + c->x = ((float)i-0.5f)*p->size/p->scale[0]; c->j = j; - c->y = ((float)j-0.5f)*p->size; + c->y = ((float)j-0.5f)*p->size/p->scale[1]; c->k = k; - c->z = ((float)k-0.5f)*p->size; + c->z = ((float)k-0.5f)*p->size/p->scale[2]; c->value = p->function(c->x, c->y, c->z); c->next = p->corners[index]; @@ -1409,9 +1409,9 @@ void find_first_points(PROCESS *mbproc, MetaBall *mb, int a) workp_v = in_v; max_len = sqrt((out.x-in.x)*(out.x-in.x) + (out.y-in.y)*(out.y-in.y) + (out.z-in.z)*(out.z-in.z)); - nx = abs((out.x - in.x)/mbproc->size); - ny = abs((out.y - in.y)/mbproc->size); - nz = abs((out.z - in.z)/mbproc->size); + nx = abs((out.x - in.x)/mbproc->size*mbproc->scale[0]); + ny = abs((out.y - in.y)/mbproc->size*mbproc->scale[1]); + nz = abs((out.z - in.z)/mbproc->size*mbproc->scale[2]); MAXN = MAX3(nx,ny,nz); if(MAXN!=0.0f) { @@ -1430,9 +1430,9 @@ void find_first_points(PROCESS *mbproc, MetaBall *mb, int a) if((tmp_v<0.0 && workp_v>=0.0)||(tmp_v>0.0 && workp_v<=0.0)) { /* indexes of CUBE, which includes "first point" */ - c_i= (int)floor(workp.x/mbproc->size); - c_j= (int)floor(workp.y/mbproc->size); - c_k= (int)floor(workp.z/mbproc->size); + c_i= (int)floor(workp.x/mbproc->size*mbproc->scale[0]); + c_j= (int)floor(workp.y/mbproc->size*mbproc->scale[1]); + c_k= (int)floor(workp.z/mbproc->size*mbproc->scale[2]); /* add CUBE (with indexes c_i, c_j, c_k) to the stack, * this cube includes found point of Implicit Surface */ @@ -2082,13 +2082,16 @@ void metaball_polygonize(Scene *scene, Object *ob) DispList *dl; int a, nr_cubes; float *ve, *no, totsize, width; - + float smat[3][3]; + mb= ob->data; if(totelem==0) return; if(!(G.rendering) && (mb->flag==MB_UPDATE_NEVER)) return; if(G.moving && mb->flag==MB_UPDATE_FAST) return; + object_scale_to_mat3(ob, smat); + freedisplist(&ob->disp); curindex= totindex= 0; indices= 0; @@ -2130,6 +2133,7 @@ void metaball_polygonize(Scene *scene, Object *ob) width= mb->wiresize; if(G.moving && mb->flag==MB_UPDATE_HALFRES) width*= 2; } + /* nr_cubes is just for safety, minimum is totsize */ nr_cubes= (int)(0.5+totsize/width); @@ -2140,6 +2144,11 @@ void metaball_polygonize(Scene *scene, Object *ob) mbproc.cubes= 0; mbproc.delta = width/(float)(RES*RES); + /* to keep constant resolution for any motherball scale */ + mbproc.scale[0]= smat[0][0]; + mbproc.scale[1]= smat[1][1]; + mbproc.scale[2]= smat[2][2]; + polygonize(&mbproc, mb); MEM_freeN(mainb); From 650de24271501bddce1c0782ea071e9d8727101a Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Sun, 27 Jun 2010 12:45:09 +0000 Subject: [PATCH 214/674] Recalculate motherball when metaball is deleting --- source/blender/blenkernel/BKE_mball.h | 1 + source/blender/blenkernel/intern/mball.c | 13 +++++++++++++ source/blender/blenkernel/intern/object.c | 11 ++++------- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/source/blender/blenkernel/BKE_mball.h b/source/blender/blenkernel/BKE_mball.h index ce70b4cca2f..130969d4892 100644 --- a/source/blender/blenkernel/BKE_mball.h +++ b/source/blender/blenkernel/BKE_mball.h @@ -168,6 +168,7 @@ float *make_orco_mball(struct Object *ob); void copy_mball_properties(struct Scene *scene, struct Object *active_object); struct Object *find_basis_mball(struct Scene *scene, struct Object *ob); int is_basis_mball(struct Object *ob); +int is_mball_basis_for(struct Object *ob1, struct Object *ob2); void metaball_polygonize(struct Scene *scene, struct Object *ob); void calc_mballco(struct MetaElem *ml, float *vec); float densfunc(struct MetaElem *ball, float x, float y, float z); diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c index 8d2dbf964b8..a15dad16e41 100644 --- a/source/blender/blenkernel/intern/mball.c +++ b/source/blender/blenkernel/intern/mball.c @@ -275,6 +275,19 @@ int is_basis_mball(Object *ob) return 1; } +/* return nonzero if ob1 is a basis mball for ob */ +int is_mball_basis_for(Object *ob1, Object *ob2) +{ + int basis1nr, basis2nr; + char basis1name[32], basis2name[32]; + + splitIDname(ob1->id.name+2, basis1name, &basis1nr); + splitIDname(ob2->id.name+2, basis2name, &basis2nr); + + if(!strcmp(basis1name, basis2name)) return is_basis_mball(ob1); + else return 0; +} + /* \brief copy some properties from object to other metaball object with same base name * * When some properties (wiresize, threshold, update flags) of metaball are changed, then this properties diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 61d81e461b6..5d3527d5afc 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -404,6 +404,9 @@ void unlink_object(Scene *scene, Object *ob) if(pchan->custom==ob) pchan->custom= NULL; } + } else if(ELEM(OB_MBALL, ob->type, obt->type)) { + if(is_mball_basis_for(obt, ob)) + obt->recalc|= OB_RECALC_DATA; } sca_remove_ob_poin(obt, ob); @@ -536,13 +539,7 @@ void unlink_object(Scene *scene, Object *ob) } tex= tex->id.next; } - - /* mballs (scene==NULL when called from library.c) */ - if(scene && ob->type==OB_MBALL) { - obt= find_basis_mball(scene, ob); - if(obt) freedisplist(&obt->disp); - } - + /* worlds */ wrld= G.main->world.first; while(wrld) { From 768ecb1ba90b964ff1eeae8798889d0b07dea741 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 27 Jun 2010 18:34:27 +0000 Subject: [PATCH 215/674] api reference docs: include bpy.data in the main page since its used everywhere. since this isnt a module its self its a little odd to do this but toctree cant make arbitrary cross-references. Also added some usage examples: http://www.blender.org/documentation/250PythonDoc/bpy.data.html --- .../blender/python/doc/examples/bpy.data.py | 28 ++++++++++++++ source/blender/python/doc/sphinx_doc_gen.py | 38 +++++++++++++++---- source/blender/python/doc/sphinx_doc_gen.sh | 2 +- 3 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 source/blender/python/doc/examples/bpy.data.py diff --git a/source/blender/python/doc/examples/bpy.data.py b/source/blender/python/doc/examples/bpy.data.py new file mode 100644 index 00000000000..0c2a463c01b --- /dev/null +++ b/source/blender/python/doc/examples/bpy.data.py @@ -0,0 +1,28 @@ +import bpy + + +# print all objects +for obj in bpy.data.objects: + print(obj.name) + + +# print all scene names in a list +print(bpy.data.scenes.keys()) + + +# remove mesh Cube +if "Cube" in bpy.data.meshes: + mesh = bpy.data.meshes["Cube"] + print("removing mesh", mesh) + bpy.data.meshes.unlink(mesh) + + +# write images into a file next to the blend +file = open(bpy.data.filepath.replace(".blend", ".txt"), 'w') + +for image in bpy.data.images: + file.write("%s %dx%d\n" % (image.filepath, image.size[0], image.size[1])) + +file.close() + + diff --git a/source/blender/python/doc/sphinx_doc_gen.py b/source/blender/python/doc/sphinx_doc_gen.py index 6363e14d85c..195a91e7539 100644 --- a/source/blender/python/doc/sphinx_doc_gen.py +++ b/source/blender/python/doc/sphinx_doc_gen.py @@ -296,7 +296,7 @@ def rna2sphinx(BASEPATH): if bpy.app.build_revision != "Unknown": version_string = version_string + " r" + bpy.app.build_revision - fw("project = 'Blender 3D'\n") + fw("project = 'Blender'\n") # fw("master_doc = 'index'\n") fw("copyright = u'Blender Foundation'\n") fw("version = '%s - UNSTABLE API'\n" % version_string) @@ -323,7 +323,7 @@ def rna2sphinx(BASEPATH): fw("\n") fw("This document is an API reference for Blender %s. built %s.\n" % (version_string, bpy.app.build_date)) fw("\n") - fw("An introduction to blender and python can be found at \n") + fw("An introduction to Blender and Python can be found at \n") fw("\n") fw("`A PDF version of this document is also available `__\n") fw("\n") @@ -350,6 +350,7 @@ def rna2sphinx(BASEPATH): fw("\n") fw(".. toctree::\n") fw(" :maxdepth: 1\n\n") + fw(" bpy.data.rst\n\n") # note: not actually a module fw(" bpy.ops.rst\n\n") fw(" bpy.types.rst\n\n") @@ -390,8 +391,8 @@ def rna2sphinx(BASEPATH): filepath = os.path.join(BASEPATH, "bpy.ops.rst") file = open(filepath, "w") fw = file.write - fw("Blender Operators (bpy.ops)\n") - fw("===========================\n\n") + fw("Operators (bpy.ops)\n") + fw("===================\n\n") fw(".. toctree::\n") fw(" :glob:\n\n") fw(" bpy.ops.*\n\n") @@ -400,14 +401,37 @@ def rna2sphinx(BASEPATH): filepath = os.path.join(BASEPATH, "bpy.types.rst") file = open(filepath, "w") fw = file.write - fw("Blender Types (bpy.types)\n") - fw("=========================\n\n") + fw("Types (bpy.types)\n") + fw("=================\n\n") fw(".. toctree::\n") fw(" :glob:\n\n") fw(" bpy.types.*\n\n") file.close() + # not actually a module, only write this file so we + # can reference in the TOC + filepath = os.path.join(BASEPATH, "bpy.data.rst") + file = open(filepath, "w") + fw = file.write + fw("Data Access (bpy.data)\n") + fw("======================\n\n") + fw(".. module:: bpy\n") + fw("\n") + fw("This module is used for all blender/python access.\n") + fw("\n") + fw(" .. literalinclude:: ../examples/bpy.data.py\n") + fw("\n") + fw(" .. data:: data\n") + fw("\n") + fw(" Access to blenders internal data\n") + fw("\n") + fw(" :type: :class:`bpy.types.Main`\n") + file.close() + + EXAMPLE_SET_USED.add("bpy.data") + + # python modules from bpy import utils as module pymodule2sphinx(BASEPATH, "bpy.utils", module, "Utilities (bpy.utils)") @@ -424,7 +448,7 @@ def rna2sphinx(BASEPATH): del module import blf as module - pymodule2sphinx(BASEPATH, "blf", module, "Blender Font Drawing (blf)") + pymodule2sphinx(BASEPATH, "blf", module, "Font Drawing (blf)") del module # game engine diff --git a/source/blender/python/doc/sphinx_doc_gen.sh b/source/blender/python/doc/sphinx_doc_gen.sh index 03fe9a2efec..4f5f55af2bd 100755 --- a/source/blender/python/doc/sphinx_doc_gen.sh +++ b/source/blender/python/doc/sphinx_doc_gen.sh @@ -8,7 +8,7 @@ SSH_HOST="ideasman42@emo.blender.org" SSH_UPLOAD="/data/www/vhosts/www.blender.org/documentation/250PythonDoc" # dont delete existing docs, now partial updates are used for quick builds. -$BLENDER -b -P ./source/blender/python/doc/sphinx_doc_gen.py +$BLENDER --background --python ./source/blender/python/doc/sphinx_doc_gen.py # html sphinx-build source/blender/python/doc/sphinx-in source/blender/python/doc/sphinx-out From 003d69f9d499ad272e97442852dea157a847a3be Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 27 Jun 2010 19:04:44 +0000 Subject: [PATCH 216/674] use expanded enum for addons to give faster access (matches theme layout) --- release/scripts/ui/space_userpref.py | 43 +++++++++++++++------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 2a00b2d4346..ef128fc4a24 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -818,7 +818,8 @@ class USERPREF_PT_addons(bpy.types.Panel): userpref = context.user_preferences return (userpref.active_section == 'ADDONS') - def _addon_list(self): + @staticmethod + def _addon_list(): import sys modules = [] loaded_modules = set() @@ -843,17 +844,19 @@ class USERPREF_PT_addons(bpy.types.Panel): cats = {info["category"] for mod, info in addons} cats.discard("") - cats = ['All', 'Disabled', 'Enabled'] + sorted(cats) + cats = ["All", "Enabled", "Disabled"] + sorted(cats) bpy.types.Scene.EnumProperty(items=[(cat, cat, str(i)) for i, cat in enumerate(cats)], name="Category", attr="addon_filter", description="Filter add-ons by category") bpy.types.Scene.StringProperty(name="Search", attr="addon_search", description="Search within the selected filter") - row = layout.row() - row.prop(context.scene, "addon_filter", text="Filter") - row.prop(context.scene, "addon_search", text="Search", icon='VIEWZOOM') - layout.separator() + split = layout.split(percentage=0.2) + col = split.column() + col.prop(context.scene, "addon_filter", text="Filter", expand=True) + col.prop(context.scene, "addon_search", text="", icon='VIEWZOOM') + + col = split.column() filter = context.scene.addon_filter search = context.scene.addon_search.lower() @@ -878,9 +881,9 @@ class USERPREF_PT_addons(bpy.types.Panel): continue # Addon UI Code - box = layout.column().box() - column = box.column() - row = column.row() + box = col.column().box() + colsub = box.column() + row = colsub.row() row.operator("wm.addon_expand", icon='TRIA_DOWN' if info["expanded"] else 'TRIA_RIGHT', emboss=False).module = module_name @@ -896,27 +899,27 @@ class USERPREF_PT_addons(bpy.types.Panel): # Expanded UI (only if additional infos are available) if info["expanded"]: if info["description"]: - split = column.row().split(percentage=0.15) + split = colsub.row().split(percentage=0.15) split.label(text='Description:') split.label(text=info["description"]) if info["location"]: - split = column.row().split(percentage=0.15) + split = colsub.row().split(percentage=0.15) split.label(text='Location:') split.label(text=info["location"]) if info["author"]: - split = column.row().split(percentage=0.15) + split = colsub.row().split(percentage=0.15) split.label(text='Author:') split.label(text=info["author"]) if info["version"]: - split = column.row().split(percentage=0.15) + split = colsub.row().split(percentage=0.15) split.label(text='Version:') split.label(text=info["version"]) if info["warning"]: - split = column.row().split(percentage=0.15) + split = colsub.row().split(percentage=0.15) split.label(text="Warning:") split.label(text=' ' + info["warning"], icon = 'ERROR') if info["wiki_url"] or info["tracker_url"]: - split = column.row().split(percentage=0.15) + split = colsub.row().split(percentage=0.15) split.label(text="Internet:") if info["wiki_url"]: split.operator("wm.url_open", text="Link to the Wiki", icon='HELP').url = info["wiki_url"] @@ -935,15 +938,15 @@ class USERPREF_PT_addons(bpy.types.Panel): missing_modules = {ext for ext in used_ext if ext not in module_names} if missing_modules and filter in ("All", "Enabled"): - layout.column().separator() - layout.column().label(text="Missing script files") + col.column().separator() + col.column().label(text="Missing script files") module_names = {mod.__name__ for mod, info in addons} for ext in sorted(missing_modules): # Addon UI Code - box = layout.column().box() - column = box.column() - row = column.row() + box = col.column().box() + colsub = box.column() + row = colsub.row() row.label(text=ext, icon='ERROR') row.operator("wm.addon_disable").module = ext From 1a59eb21a9de789eb6fe7544a442e4a02a766e60 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 27 Jun 2010 19:10:36 +0000 Subject: [PATCH 217/674] align menu text to the left when displayed in a panel. --- source/blender/editors/interface/interface_layout.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index eb96ca45ff8..0caa8fb71ea 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -1296,8 +1296,10 @@ static void ui_item_menu(uiLayout *layout, char *name, int icon, uiMenuCreateFun if(layout->root->type == UI_LAYOUT_HEADER) uiBlockSetEmboss(block, UI_EMBOSS); - else if(layout->root->type == UI_LAYOUT_PANEL) + else if(layout->root->type == UI_LAYOUT_PANEL) { but->type= MENU; + but->flag |= UI_TEXT_LEFT; + } } void uiItemM(uiLayout *layout, bContext *C, char *menuname, char *name, int icon) From d9bcd249cf40dfd8bf168d816dcb6627e6a1c517 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 27 Jun 2010 21:03:39 +0000 Subject: [PATCH 218/674] remove some warnings --- source/blender/blenlib/intern/BLI_bfile.c | 6 ++++-- source/blender/editors/metaball/mball_edit.c | 1 + source/blender/editors/space_logic/logic_window.c | 10 +++++----- source/blender/makesrna/intern/rna_controller.c | 2 ++ 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/source/blender/blenlib/intern/BLI_bfile.c b/source/blender/blenlib/intern/BLI_bfile.c index dc593e23bdc..2330beb618d 100644 --- a/source/blender/blenlib/intern/BLI_bfile.c +++ b/source/blender/blenlib/intern/BLI_bfile.c @@ -34,6 +34,7 @@ #else #include #include "BLI_winstuff.h" + static char* find_in_pathlist(char* filename, char* pathlist); #endif #include #include @@ -66,7 +67,6 @@ static void chomp(char* line); static void expand_envvars(char* src, char* dst); static void fill_paths(BFILE *bfile, const char *path, const char *relpath); -static char* find_in_pathlist(char* filename, char* pathlist); static void init_vars_from_file(const char* path); static void free_paths(BFILE* bfile); static void setup_temp(); @@ -481,6 +481,8 @@ static void expand_envvars(char* src, char* dst) { #else #define SEPARATOR ':' #endif + +#ifdef WIN32 static char* find_in_pathlist(char* filename, char* pathlist) { char first[FILE_MAX + 10]; char* rest = NULL; @@ -510,7 +512,7 @@ static char* find_in_pathlist(char* filename, char* pathlist) { return NULL; } } - +#endif /** Setup fpath and tpath based in the needs of the bfile. diff --git a/source/blender/editors/metaball/mball_edit.c b/source/blender/editors/metaball/mball_edit.c index 2ffccff835d..69735d7b041 100644 --- a/source/blender/editors/metaball/mball_edit.c +++ b/source/blender/editors/metaball/mball_edit.c @@ -47,6 +47,7 @@ #include "BKE_depsgraph.h" #include "BKE_object.h" #include "BKE_context.h" +#include "BKE_library.h" #include "ED_screen.h" #include "ED_view3d.h" diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index 409277cb66e..26b4b6fc08c 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -3184,8 +3184,8 @@ static void draw_sensor_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *lo uiItemR(row, ptr, "name", 0, "", 0); subrow= uiLayoutRow(row, 0); - uiLayoutSetActive(subrow, (RNA_boolean_get(logic_ptr, "sensors_show_active_states") - && RNA_boolean_get(ptr, "expanded") || RNA_boolean_get(ptr, "pinned"))); + uiLayoutSetActive(subrow, ((RNA_boolean_get(logic_ptr, "sensors_show_active_states") + && RNA_boolean_get(ptr, "expanded")) || RNA_boolean_get(ptr, "pinned"))); uiItemR(subrow, ptr, "pinned", UI_ITEM_R_NO_BG, "", 0); uiItemO(row, "", ICON_X, "LOGIC_OT_sensor_remove"); @@ -3602,8 +3602,8 @@ static void draw_actuator_header(uiLayout *layout, PointerRNA *ptr, PointerRNA * uiItemR(row, ptr, "name", 0, "", 0); subrow= uiLayoutRow(row, 0); - uiLayoutSetActive(subrow, (RNA_boolean_get(logic_ptr, "actuators_show_active_states") - && RNA_boolean_get(ptr, "expanded") || RNA_boolean_get(ptr, "pinned"))); + uiLayoutSetActive(subrow, ((RNA_boolean_get(logic_ptr, "actuators_show_active_states") + && RNA_boolean_get(ptr, "expanded")) || RNA_boolean_get(ptr, "pinned"))); uiItemR(subrow, ptr, "pinned", UI_ITEM_R_NO_BG, "", 0); uiItemO(row, "", ICON_X, "LOGIC_OT_actuator_remove"); @@ -4436,7 +4436,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar) bController *cont; PointerRNA ptr; uiLayout *split, *subsplit, *col; - int iact; + ob= (Object *)idar[a]; diff --git a/source/blender/makesrna/intern/rna_controller.c b/source/blender/makesrna/intern/rna_controller.c index d9523344414..275a34e3bbb 100644 --- a/source/blender/makesrna/intern/rna_controller.c +++ b/source/blender/makesrna/intern/rna_controller.c @@ -113,6 +113,7 @@ static void rna_Controller_state_get(PointerRNA *ptr, int *values) values[i] = (cont->state_mask & (1<data; @@ -135,6 +136,7 @@ static void rna_Controller_state_set(PointerRNA *ptr, const int *values) else cont->state_mask &= ~(1< Date: Sun, 27 Jun 2010 21:35:31 +0000 Subject: [PATCH 219/674] nicer alignment for preset UI --- release/scripts/ui/properties_object.py | 6 +++--- release/scripts/ui/properties_physics_cloth.py | 2 +- release/scripts/ui/properties_render.py | 7 +++---- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/release/scripts/ui/properties_object.py b/release/scripts/ui/properties_object.py index 03d5a21f479..98b768b2585 100644 --- a/release/scripts/ui/properties_object.py +++ b/release/scripts/ui/properties_object.py @@ -155,9 +155,9 @@ class OBJECT_PT_groups(ObjectButtonsPanel): ob = context.object wide_ui = context.region.width > narrowui - split = layout.split(percentage=0.8, align=True) - split.operator("object.group_link", text="Add to Group") - split.operator("object.group_add", text="", icon='ZOOMIN') + row = layout.row(align=True) + row.operator("object.group_link", text="Add to Group") + row.operator("object.group_add", text="", icon='ZOOMIN') # XXX, this is bad practice, yes, I wrote it :( - campbell index = 0 diff --git a/release/scripts/ui/properties_physics_cloth.py b/release/scripts/ui/properties_physics_cloth.py index 834e3cf2450..61e1fe81812 100644 --- a/release/scripts/ui/properties_physics_cloth.py +++ b/release/scripts/ui/properties_physics_cloth.py @@ -87,7 +87,7 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel): col = split.column() col.label(text="Presets:") - sub = col.row(align=True).split(percentage=0.75) + sub = col.row(align=True) sub.menu("CLOTH_MT_presets", text=bpy.types.CLOTH_MT_presets.bl_label) sub.operator("cloth.preset_add", text="", icon="ZOOMIN") diff --git a/release/scripts/ui/properties_render.py b/release/scripts/ui/properties_render.py index b040580c94f..829416b86d3 100644 --- a/release/scripts/ui/properties_render.py +++ b/release/scripts/ui/properties_render.py @@ -536,10 +536,9 @@ class RENDER_PT_dimensions(RenderButtonsPanel): rd = scene.render wide_ui = context.region.width > narrowui - row = layout.row().split() - sub = row.row(align=True).split(percentage=0.75) - sub.menu("RENDER_MT_presets", text=bpy.types.RENDER_MT_presets.bl_label) - sub.operator("render.preset_add", text="", icon="ZOOMIN") + row = layout.row(align=True) + row.menu("RENDER_MT_presets", text=bpy.types.RENDER_MT_presets.bl_label) + row.operator("render.preset_add", text="", icon="ZOOMIN") split = layout.split() From 32f83b91a42a2d8332a371b00637dca8d9f01393 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Sun, 27 Jun 2010 23:18:04 +0000 Subject: [PATCH 220/674] Partial fix for [#22666] TWO BUGS of LIGHT fixed: number 1- can't link light data by using control+l "object data" cleaned up code a bit here too --- .../blender/editors/object/object_relations.c | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index 28eb919dbe7..91f054f7209 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -1191,24 +1191,25 @@ enum { /* Return 1 if make link data is allow, zero otherwise */ static int allow_make_links_data(int ev, Object *ob, Object *obt) { - if (ev == MAKE_LINKS_OBDATA) { - if (ob->type == OB_MESH && obt->type == OB_MESH) - return(1); + switch(ev) { + case MAKE_LINKS_OBDATA: + if (ob->type == obt->type && ob->type != OB_EMPTY) + return 1; + break; + case MAKE_LINKS_MATERIALS: + if (ELEM5(ob->type, OB_MESH, OB_CURVE, OB_FONT, OB_SURF, OB_MBALL) && + ELEM5(obt->type, OB_MESH, OB_CURVE, OB_FONT, OB_SURF, OB_MBALL)) + return 1; + break; + case MAKE_LINKS_ANIMDATA: + case MAKE_LINKS_DUPLIGROUP: + return 1; + case MAKE_LINKS_MODIFIERS: + if (ob->type != OB_EMPTY && obt->type != OB_EMPTY) + return 1; + break; } - else if (ev == MAKE_LINKS_MATERIALS) { - if ((ob->type == OB_MESH || ob->type == OB_CURVE || ob->type == OB_FONT || ob->type == OB_SURF || ob->type == OB_MBALL) && - (obt->type == OB_MESH || obt->type == OB_CURVE || obt->type == OB_FONT || obt->type == OB_SURF || obt->type == OB_MBALL)) - return(1); - } - else if (ev == MAKE_LINKS_ANIMDATA) - return(1); - else if (ev == MAKE_LINKS_DUPLIGROUP) - return(1); - else if (ev == MAKE_LINKS_MODIFIERS) { - if (ob->type != OB_EMPTY && obt->type != OB_EMPTY) - return(1); - } - return(0); + return 0; } static int make_links_data_exec(bContext *C, wmOperator *op) From a52632182c9d50d177abe56a037d7a76ed5d1003 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Sun, 27 Jun 2010 23:57:58 +0000 Subject: [PATCH 221/674] [#22682] some missing keymaps Added proportional influence up/down to transform modal keymap. Also fixed a crash in restoring to previous key map item after edits. --- source/blender/editors/transform/transform.c | 31 ++++++++++++++----- .../blender/windowmanager/intern/wm_keymap.c | 7 +++-- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 6532a94971d..beea3c9bee4 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -479,6 +479,8 @@ static void view_editmove(unsigned short event) #define TFM_MODAL_REMOVE_SNAP 17 /* 18 and 19 used by numinput, defined in transform.h * */ +#define TFM_MODAL_PROPSIZE_UP 20 +#define TFM_MODAL_PROPSIZE_DOWN 21 /* called in transform_ops.c, on each regeneration of keymaps */ wmKeyMap* transform_modal_keymap(wmKeyConfig *keyconf) @@ -503,6 +505,8 @@ wmKeyMap* transform_modal_keymap(wmKeyConfig *keyconf) {TFM_MODAL_REMOVE_SNAP, "REMOVE_SNAP", 0, "Remove Last Snap Point", ""}, {NUM_MODAL_INCREMENT_UP, "INCREMENT_UP", 0, "Numinput Increment Up", ""}, {NUM_MODAL_INCREMENT_DOWN, "INCREMENT_DOWN", 0, "Numinput Increment Down", ""}, + {TFM_MODAL_PROPSIZE_UP, "PROPORTIONAL_SIZE_UP", 0, "Increase Proportional Influence", ""}, + {TFM_MODAL_PROPSIZE_DOWN, "PROPORTIONAL_SIZE_DOWN", 0, "Decrease Poportional Influence", ""}, {0, NULL, 0, NULL, NULL}}; wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Transform Modal Map"); @@ -532,6 +536,11 @@ wmKeyMap* transform_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, UPARROWKEY, KM_PRESS, 0, 0, NUM_MODAL_INCREMENT_UP); WM_modalkeymap_add_item(keymap, DOWNARROWKEY, KM_PRESS, 0, 0, NUM_MODAL_INCREMENT_DOWN); + + WM_modalkeymap_add_item(keymap, PAGEUPKEY, KM_PRESS, 0, 0, TFM_MODAL_PROPSIZE_UP); + WM_modalkeymap_add_item(keymap, PAGEDOWNKEY, KM_PRESS, 0, 0, TFM_MODAL_PROPSIZE_DOWN); + WM_modalkeymap_add_item(keymap, WHEELDOWNMOUSE, KM_PRESS, 0, 0, TFM_MODAL_PROPSIZE_UP); + WM_modalkeymap_add_item(keymap, WHEELUPMOUSE, KM_PRESS, 0, 0, TFM_MODAL_PROPSIZE_DOWN); return keymap; } @@ -712,6 +721,20 @@ int transformEvent(TransInfo *t, wmEvent *event) removeSnapPoint(t); t->redraw |= TREDRAW_HARD; break; + case TFM_MODAL_PROPSIZE_UP: + if(t->flag & T_PROP_EDIT) { + t->prop_size*= 1.1f; + calculatePropRatio(t); + } + t->redraw |= TREDRAW_HARD; + break; + case TFM_MODAL_PROPSIZE_DOWN: + if (t->flag & T_PROP_EDIT) { + t->prop_size*= 0.90909090f; + calculatePropRatio(t); + } + t->redraw |= TREDRAW_HARD; + break; default: handled = 0; break; @@ -936,10 +959,6 @@ int transformEvent(TransInfo *t, wmEvent *event) if (t->flag & T_AUTOIK) { transform_autoik_update(t, 1); } - else if(t->flag & T_PROP_EDIT) { - t->prop_size*= 1.1f; - calculatePropRatio(t); - } else view_editmove(event->type); t->redraw= 1; break; @@ -955,10 +974,6 @@ int transformEvent(TransInfo *t, wmEvent *event) if (t->flag & T_AUTOIK) { transform_autoik_update(t, -1); } - else if (t->flag & T_PROP_EDIT) { - t->prop_size*= 0.90909090f; - calculatePropRatio(t); - } else view_editmove(event->type); t->redraw= 1; break; diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c index ca6cabe3cce..e79d08dc2f1 100644 --- a/source/blender/windowmanager/intern/wm_keymap.c +++ b/source/blender/windowmanager/intern/wm_keymap.c @@ -708,8 +708,11 @@ void WM_keymap_restore_item_to_default(bContext *C, wmKeyMap *keymap, wmKeyMapIt WM_keymap_properties_reset(kmi); } - kmi->properties= IDP_CopyProperty(orig->properties); - kmi->ptr->data= kmi->properties; + + if (orig->properties) { + kmi->properties= IDP_CopyProperty(orig->properties); + kmi->ptr->data= kmi->properties; + } kmi->propvalue = orig->propvalue; kmi->type = orig->type; From 1a6b9ea5d94716f376e6dcd0b77d140f41a12801 Mon Sep 17 00:00:00 2001 From: Luca Bonavita Date: Mon, 28 Jun 2010 00:06:23 +0000 Subject: [PATCH 222/674] == python api docs == - properties are now listed on alphabetical order - readonly properties use "data" directive, so that we see them in green in the web docs example (after Campbell will rebuild the docs): http://www.blender.org/documentation/250PythonDoc/bpy.types.RenderLayer.html (note that green attributes still need final CSS-ing, but smerch is a bit busy atm) - fixed indentation in http://www.blender.org/documentation/250PythonDoc/bpy.data.html --- source/blender/python/doc/sphinx_doc_gen.py | 27 +++++++++++++++------ 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/source/blender/python/doc/sphinx_doc_gen.py b/source/blender/python/doc/sphinx_doc_gen.py index 195a91e7539..27524c66c36 100644 --- a/source/blender/python/doc/sphinx_doc_gen.py +++ b/source/blender/python/doc/sphinx_doc_gen.py @@ -178,7 +178,11 @@ def pyprop2sphinx(ident, fw, identifier, py_prop): ''' python property to sphinx ''' - fw(ident + ".. attribute:: %s\n\n" % identifier) + # readonly properties use "data" directive, variables use "attribute" directive + if py_prop.fset is None: + fw(ident + ".. data:: %s\n\n" % identifier) + else: + fw(ident + ".. attribute:: %s\n\n" % identifier) write_indented_lines(ident + " ", fw, py_prop.__doc__) if py_prop.fset is None: fw(ident + " (readonly)\n\n") @@ -420,9 +424,9 @@ def rna2sphinx(BASEPATH): fw("\n") fw("This module is used for all blender/python access.\n") fw("\n") - fw(" .. literalinclude:: ../examples/bpy.data.py\n") + fw(".. literalinclude:: ../examples/bpy.data.py\n") fw("\n") - fw(" .. data:: data\n") + fw(".. data:: data\n") fw("\n") fw(" Access to blenders internal data\n") fw("\n") @@ -547,12 +551,21 @@ def rna2sphinx(BASEPATH): fw(".. class:: %s\n\n" % struct.identifier) fw(" %s\n\n" % struct.description) - - for prop in struct.properties: - fw(" .. attribute:: %s\n\n" % prop.identifier) + + # properties sorted in alphabetical order + zip_props_ids = zip(struct.properties, [prop.identifier for prop in struct.properties]) + zip_props_ids = sorted(zip_props_ids, key=lambda p: p[1]) + sorted_struct_properties = [x[0] for x in zip_props_ids] + + for prop in sorted_struct_properties: + type_descr = prop.get_type_description(class_fmt=":class:`%s`") + # readonly properties use "data" directive, variables properties use "attribute" directive + if 'readonly' in type_descr: + fw(" .. data:: %s\n\n" % prop.identifier) + else: + fw(" .. attribute:: %s\n\n" % prop.identifier) if prop.description: fw(" %s\n\n" % prop.description) - type_descr = prop.get_type_description(class_fmt=":class:`%s`") fw(" :type: %s\n\n" % type_descr) # python attributes From aae952be1fc0d3ff6955e8d542d5330e93e96ef7 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Mon, 28 Jun 2010 00:11:28 +0000 Subject: [PATCH 223/674] Fix [#22669] Packing a .wav used in a LB crashes Blender --- source/blender/blenkernel/intern/packedFile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/packedFile.c b/source/blender/blenkernel/intern/packedFile.c index db457f043e7..b01f570898e 100644 --- a/source/blender/blenkernel/intern/packedFile.c +++ b/source/blender/blenkernel/intern/packedFile.c @@ -224,7 +224,7 @@ void packAll(Main *bmain, ReportList *reports) vf->packedfile = newPackedFile(reports, vf->name); for(sound=bmain->sound.first; sound; sound=sound->id.next) - if(sound->packedfile == NULL && vf->id.lib==NULL) + if(sound->packedfile == NULL && sound->id.lib==NULL) sound->packedfile = newPackedFile(reports, sound->name); } From 8517a7a3cd93532ef1ff53ccbf07e8fc14a5109e Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Mon, 28 Jun 2010 11:07:02 +0000 Subject: [PATCH 224/674] Fix #20965: metaballs partticles and volume material crash rendering Fix #21187: 2.5svn26947 - particles + meta sphere = crash in rendering Use separated displists for mballs in view3d and render stuff. Do not recalculate displist for view3d while rendering - mball.c uses several global variables which shouldn't be accepted from parallel threads. --- source/blender/blenkernel/BKE_displist.h | 1 + source/blender/blenkernel/BKE_lattice.h | 2 +- source/blender/blenkernel/BKE_mball.h | 4 +- source/blender/blenkernel/intern/displist.c | 16 ++++-- source/blender/blenkernel/intern/lattice.c | 4 +- source/blender/blenkernel/intern/mball.c | 10 ++-- .../render/intern/source/convertblender.c | 50 ++++++++----------- 7 files changed, 43 insertions(+), 44 deletions(-) diff --git a/source/blender/blenkernel/BKE_displist.h b/source/blender/blenkernel/BKE_displist.h index 9e75e55adf6..df0627f61ba 100644 --- a/source/blender/blenkernel/BKE_displist.h +++ b/source/blender/blenkernel/BKE_displist.h @@ -93,6 +93,7 @@ extern void makeDispListCurveTypes(struct Scene *scene, struct Object *ob, int f extern void makeDispListCurveTypes_forRender(struct Scene *scene, struct Object *ob, struct ListBase *dispbase, struct DerivedMesh **derivedFinal, int forOrco); extern void makeDispListCurveTypes_forOrco(struct Scene *scene, struct Object *ob, struct ListBase *dispbase); extern void makeDispListMBall(struct Scene *scene, struct Object *ob); +extern void makeDispListMBall_forRender(struct Scene *scene, struct Object *ob, struct ListBase *dispbase); extern void shadeDispList(struct Scene *scene, struct Base *base); extern void shadeMeshMCol(struct Scene *scene, struct Object *ob, struct Mesh *me); diff --git a/source/blender/blenkernel/BKE_lattice.h b/source/blender/blenkernel/BKE_lattice.h index f35dff53cd5..880f3f7e724 100644 --- a/source/blender/blenkernel/BKE_lattice.h +++ b/source/blender/blenkernel/BKE_lattice.h @@ -49,7 +49,7 @@ void init_latt_deform(struct Object *oblatt, struct Object *ob); void calc_latt_deform(struct Object *, float *co, float weight); void end_latt_deform(struct Object *); -int object_deform_mball(struct Object *ob); +int object_deform_mball(struct Object *ob, struct ListBase *dispbase); void outside_lattice(struct Lattice *lt); void curve_deform_verts(struct Scene *scene, struct Object *cuOb, struct Object *target, diff --git a/source/blender/blenkernel/BKE_mball.h b/source/blender/blenkernel/BKE_mball.h index 130969d4892..5d41f4e374e 100644 --- a/source/blender/blenkernel/BKE_mball.h +++ b/source/blender/blenkernel/BKE_mball.h @@ -164,12 +164,12 @@ struct MetaBall *add_mball(char *name); struct MetaBall *copy_mball(struct MetaBall *mb); void make_local_mball(struct MetaBall *mb); void tex_space_mball(struct Object *ob); -float *make_orco_mball(struct Object *ob); +float *make_orco_mball(struct Object *ob, struct ListBase *dispbase); void copy_mball_properties(struct Scene *scene, struct Object *active_object); struct Object *find_basis_mball(struct Scene *scene, struct Object *ob); int is_basis_mball(struct Object *ob); int is_mball_basis_for(struct Object *ob1, struct Object *ob2); -void metaball_polygonize(struct Scene *scene, struct Object *ob); +void metaball_polygonize(struct Scene *scene, struct Object *ob, struct ListBase *dispbase); void calc_mballco(struct MetaElem *ml, float *vec); float densfunc(struct MetaElem *ball, float x, float y, float z); float metaball(float x, float y, float z); diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c index a958d8c353b..716d3110bc3 100644 --- a/source/blender/blenkernel/intern/displist.c +++ b/source/blender/blenkernel/intern/displist.c @@ -1172,20 +1172,30 @@ void makeDispListMBall(Scene *scene, Object *ob) { if(!ob || ob->type!=OB_MBALL) return; + // XXX: mball stuff uses plenty of global variables + // while this is unchanged updating during render is unsafe + if(G.rendering) return; + freedisplist(&(ob->disp)); - + if(ob->type==OB_MBALL) { if(ob==find_basis_mball(scene, ob)) { - metaball_polygonize(scene, ob); + metaball_polygonize(scene, ob, &ob->disp); tex_space_mball(ob); - object_deform_mball(ob); + object_deform_mball(ob, &ob->disp); } } boundbox_displist(ob); } +void makeDispListMBall_forRender(Scene *scene, Object *ob, ListBase *dispbase) +{ + metaball_polygonize(scene, ob, dispbase); + object_deform_mball(ob, dispbase); +} + static ModifierData *curve_get_tesselate_point(Scene *scene, Object *ob, int forRender, int editmode) { ModifierData *md = modifiers_getVirtualModifierList(ob); diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c index 1954bac7e93..5824afd9ded 100644 --- a/source/blender/blenkernel/intern/lattice.c +++ b/source/blender/blenkernel/intern/lattice.c @@ -869,12 +869,12 @@ void lattice_deform_verts(Object *laOb, Object *target, DerivedMesh *dm, end_latt_deform(laOb); } -int object_deform_mball(Object *ob) +int object_deform_mball(Object *ob, ListBase *dispbase) { if(ob->parent && ob->parent->type==OB_LATTICE && ob->partype==PARSKEL) { DispList *dl; - for (dl=ob->disp.first; dl; dl=dl->next) { + for (dl=dispbase->first; dl; dl=dl->next) { lattice_deform_verts(ob->parent, ob, NULL, (float(*)[3]) dl->verts, dl->nr, NULL); } diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c index a15dad16e41..da9740a1486 100644 --- a/source/blender/blenkernel/intern/mball.c +++ b/source/blender/blenkernel/intern/mball.c @@ -226,7 +226,7 @@ void tex_space_mball(Object *ob) boundbox_set_from_min_max(bb, min, max); } -float *make_orco_mball(Object *ob) +float *make_orco_mball(Object *ob, ListBase *dispbase) { BoundBox *bb; DispList *dl; @@ -243,7 +243,7 @@ float *make_orco_mball(Object *ob) loc[2]= (bb->vec[0][2]+bb->vec[1][2])/2.0f; size[2]= bb->vec[1][2]-loc[2]; - dl= ob->disp.first; + dl= dispbase->first; orcodata= MEM_mallocN(sizeof(float)*3*dl->nr, "MballOrco"); data= dl->verts; @@ -2088,7 +2088,7 @@ void init_metaball_octal_tree(int depth) subdivide_metaball_octal_node(node, size[0], size[1], size[2], metaball_tree->depth); } -void metaball_polygonize(Scene *scene, Object *ob) +void metaball_polygonize(Scene *scene, Object *ob, ListBase *dispbase) { PROCESS mbproc; MetaBall *mb; @@ -2105,7 +2105,6 @@ void metaball_polygonize(Scene *scene, Object *ob) object_scale_to_mat3(ob, smat); - freedisplist(&ob->disp); curindex= totindex= 0; indices= 0; thresh= mb->thresh; @@ -2174,9 +2173,8 @@ void metaball_polygonize(Scene *scene, Object *ob) } if(curindex) { - dl= MEM_callocN(sizeof(DispList), "mbaldisp"); - BLI_addtail(&ob->disp, dl); + BLI_addtail(dispbase, dl); dl->type= DL_INDEX4; dl->nr= mbproc.vertices.count; dl->parts= curindex; diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index eaef6571c4f..582b5926509 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -851,25 +851,23 @@ static void autosmooth(Render *re, ObjectRen *obr, float mat[][4], int degr) static float *get_object_orco(Render *re, Object *ob) { float *orco; - + if (!re->orco_hash) re->orco_hash = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "get_object_orco gh"); - + orco = BLI_ghash_lookup(re->orco_hash, ob); - + if (!orco) { if (ELEM(ob->type, OB_CURVE, OB_FONT)) { orco = make_orco_curve(re->scene, ob); } else if (ob->type==OB_SURF) { orco = make_orco_surf(ob); - } else if (ob->type==OB_MBALL) { - orco = make_orco_mball(ob); } - + if (orco) BLI_ghash_insert(re->orco_hash, ob, orco); } - + return orco; } @@ -2369,6 +2367,7 @@ static void init_render_mball(Render *re, ObjectRen *obr) Material *ma; float *data, *nors, *orco, mat[4][4], imat[3][3], xn, yn, zn; int a, need_orco, vlakindex, *index; + ListBase dispbase= {NULL, NULL}; if (ob!=find_basis_mball(re->scene, ob)) return; @@ -2383,14 +2382,22 @@ static void init_render_mball(Render *re, ObjectRen *obr) if(ma->texco & TEXCO_ORCO) { need_orco= 1; } - - makeDispListMBall(re->scene, ob); - dl= ob->disp.first; + + makeDispListMBall_forRender(re->scene, ob, &dispbase); + dl= dispbase.first; if(dl==0) return; data= dl->verts; nors= dl->nors; - orco= get_object_orco(re, ob); + if(need_orco) { + orco= get_object_orco(re, ob); + + if (!orco) { + /* orco hasn't been found in cache - create new one and add to cache */ + orco= make_orco_mball(ob, &dispbase); + set_object_orco(re, ob, orco); + } + } for(a=0; anr; a++, data+=3, nors+=3, orco+=3) { @@ -2447,10 +2454,7 @@ static void init_render_mball(Render *re, ObjectRen *obr) } /* enforce display lists remade */ - freedisplist(&ob->disp); - - /* this enforces remake for real, orco displist is small (in scale) */ - ob->recalc |= OB_RECALC_DATA; + freedisplist(&dispbase); } /* ------------------------------------------------------------------------- */ @@ -4545,7 +4549,6 @@ static void init_render_object(Render *re, Object *ob, Object *par, DupliObject void RE_Database_Free(Render *re) { - Object *ob = NULL; LampRen *lar; /* statistics for debugging render memory usage */ @@ -4572,21 +4575,8 @@ void RE_Database_Free(Render *re) BLI_freelistN(&re->lights); free_renderdata_tables(re); - - /* free orco. check all objects because of duplis and sets */ - ob= G.main->object.first; - while(ob) { - if(ob->type==OB_MBALL) { - if(ob->disp.first && ob->disp.first!=ob->disp.last) { - DispList *dl= ob->disp.first; - BLI_remlink(&ob->disp, dl); - freedisplist(&ob->disp); - BLI_addtail(&ob->disp, dl); - } - } - ob= ob->id.next; - } + /* free orco */ free_mesh_orco_hash(re); #if 0 /* radio can be redone better */ end_radio_render(); From 2d377a99a580b62655f17a3412154ce72ceba69f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 28 Jun 2010 12:10:40 +0000 Subject: [PATCH 225/674] WIP draft for rna renaming, brecht will go over this next. --- source/blender/makesrna/rna_api_cleanup.txt | 1692 +++++++++++++++++++ 1 file changed, 1692 insertions(+) create mode 100644 source/blender/makesrna/rna_api_cleanup.txt diff --git a/source/blender/makesrna/rna_api_cleanup.txt b/source/blender/makesrna/rna_api_cleanup.txt new file mode 100644 index 00000000000..3522c860113 --- /dev/null +++ b/source/blender/makesrna/rna_api_cleanup.txt @@ -0,0 +1,1692 @@ + +ActionActuator.continue_last_frame -> continue_last_frame +ActionGroup.expanded -> show_expanded +ActionGroup.locked -> use_lock +ActionGroup.selected -> select +Actuator.expanded -> show_expanded +AnimData.nla_enabled -> use_nla +AnimVizMotionPaths.highlight_keyframes -> show_keyframe_highlight +AnimVizMotionPaths.search_all_action_keyframes -> use_keyframe_action_all +AnimVizMotionPaths.show_frame_numbers -> show_frame_numbers +AnimVizMotionPaths.show_keyframe_numbers -> show_keyframe_numbers +AnimVizOnionSkinning.only_selected -> showonly_selected +Area.show_menus -> show_menus +AreaLamp.dither -> use_dither +AreaLamp.jitter -> use_jitter +AreaLamp.only_shadow -> useonly_shadow +AreaLamp.shadow_layer -> useonly_shadow_layer +AreaLamp.umbra -> use_umbra +Armature.auto_ik -> use_auto_ik +Armature.deform_bbone_rest -> use_deform_b_bone_rest +Armature.deform_envelope -> use_deform_envelope +Armature.deform_quaternion -> use_deform_quaternion +Armature.deform_vertexgroups -> use_deform_vertexgroups +Armature.delay_deform -> use_deform_delay +Armature.draw_axes -> show_axes +Armature.draw_custom_bone_shapes -> show_bone_custom +Armature.draw_group_colors -> show_group_colors +Armature.draw_names -> show_names +Armature.ghost_only_selected -> showonly_ghost_selected +Armature.layer -> layer +Armature.layer_protection -> layer_protection +Armature.x_axis_mirror -> use_mirror_x +ArmatureModifier.b_bone_rest -> use_b_bone_rest +ArmatureModifier.invert -> use_vertex_group_invert +ArmatureModifier.multi_modifier -> use_multi_modifier +ArmatureModifier.quaternion -> use_preserve_volume +ArmatureModifier.use_bone_envelopes -> use_bone_envelopes +ArmatureModifier.use_vertex_groups -> use_vertex_groups +ArrayModifier.add_offset_object -> use_object_offset +ArrayModifier.constant_offset -> use_constant_offset +ArrayModifier.merge_adjacent_vertices -> use_merge_vertex +ArrayModifier.merge_end_vertices -> use_merge_vertex_end +ArrayModifier.relative_offset -> use_relative_offset +BackgroundImage.show_expanded -> show_expanded +BevelModifier.only_vertices -> useonly_vertex +BezierSplinePoint.hidden -> hide +BezierSplinePoint.selected_control_point -> select_control_point +BezierSplinePoint.selected_handle1 -> select_handle_before +BezierSplinePoint.selected_handle2 -> select_handle_after +BoidRule.in_air -> use_in_air +BoidRule.on_land -> use_on_land +BoidRuleAvoid.predict -> use_predict +BoidRuleAvoidCollision.boids -> use_avoid +BoidRuleAvoidCollision.deflectors -> use_deflect +BoidRuleFollowLeader.line -> use_line +BoidRuleGoal.predict -> use_predict +BoidSettings.allow_climb -> use_climb +BoidSettings.allow_flight -> use_flight +BoidSettings.allow_land -> use_land +Bone.connected -> use_connect +Bone.cyclic_offset -> use_cyclic_offset +Bone.deform -> use_deform +Bone.draw_wire -> show_wire +Bone.hidden -> hide +Bone.hinge -> use_hinge +Bone.inherit_scale -> use_inherit_scale +Bone.layer -> layer +Bone.local_location -> use_local_location +Bone.multiply_vertexgroup_with_envelope -> use_envelope_multiply +* Bone.restrict_select -> restrict_select +Bone.selected -> select +BooleanProperty.default -> default +BooleanProperty.default_array -> default_array +Brush.use_accumulate -> use_accumulate +Brush.use_airbrush -> use_airbrush +Brush.use_alpha -> use_alpha +Brush.use_anchor -> use_anchor +Brush.use_jitter_pressure -> use_jitter_pressure +Brush.use_persistent -> use_persistent +Brush.use_rake -> use_rake +Brush.use_size_pressure -> use_size_pressure +Brush.use_smooth_stroke -> use_smooth_stroke +Brush.use_space -> use_space +Brush.use_spacing_pressure -> use_spacing_pressure +Brush.use_strength_pressure -> use_strength_pressure +Brush.use_wrap -> use_wrap +BuildModifier.randomize -> use_random +Camera.panorama -> use_panorama +Camera.show_limits -> show_limits +Camera.show_mist -> show_mist +Camera.show_name -> show_name +Camera.show_passepartout -> show_passepartout +Camera.show_title_safe -> show_title_safe +CastModifier.from_radius -> use_radius_as_size +CastModifier.use_transform -> use_transform +CastModifier.x -> use_x +CastModifier.y -> use_y +CastModifier.z -> use_z +ChildOfConstraint.use_location_x -> use_location_x +ChildOfConstraint.use_location_y -> use_location_y +ChildOfConstraint.use_location_z -> use_location_z +ChildOfConstraint.use_rotation_x -> use_rotation_x +ChildOfConstraint.use_rotation_y -> use_rotation_y +ChildOfConstraint.use_rotation_z -> use_rotation_z +ChildOfConstraint.use_scale_x -> use_scale_x +ChildOfConstraint.use_scale_y -> use_scale_y +ChildOfConstraint.use_scale_z -> use_scale_z +ClampToConstraint.cyclic -> use_cyclic +ClothCollisionSettings.enable_collision -> use_collision +ClothCollisionSettings.enable_self_collision -> use_self_collision +ClothSettings.pin_cloth -> use_pin_cloth +ClothSettings.stiffness_scaling -> use_stiffness_scale +* CollisionSensor.collision_type -> collision_type +CollisionSensor.pulse -> use_pulse +CollisionSettings.enabled -> use_collision +CollisionSettings.kill_particles -> use_particle_kill +CompositorNodeAlphaOver.convert_premul -> use_convert_premultiply +CompositorNodeBlur.bokeh -> use_bokeh +CompositorNodeBlur.gamma -> use_gamma_correct +CompositorNodeBlur.relative -> use_relative +CompositorNodeColorSpill.unspill -> use_unspill +CompositorNodeCrop.crop_size -> use_crop_size +CompositorNodeDBlur.wrap -> use_wrap +CompositorNodeDefocus.gamma_correction -> use_gamma_correct +CompositorNodeDefocus.preview -> use_preview +CompositorNodeDefocus.use_zbuffer -> use_zbuffer +CompositorNodeGlare.rotate_45 -> use_rotate_45 +CompositorNodeImage.auto_refresh -> use_auto_refresh +CompositorNodeImage.cyclic -> use_cyclic +CompositorNodeInvert.alpha -> use_alpha +CompositorNodeInvert.rgb -> invert_rgb +CompositorNodeLensdist.fit -> use_fit +CompositorNodeLensdist.jitter -> use_jitter +CompositorNodeLensdist.projector -> use_projector +CompositorNodeMapValue.use_max -> use_max +CompositorNodeMapValue.use_min -> use_min +CompositorNodeMixRGB.alpha -> use_alpha +CompositorNodeOutputFile.exr_half -> use_exr_half +CompositorNodeVecBlur.curved -> use_curve +* Constraint.active -> active +Constraint.disabled -> is_valid +Constraint.expanded -> show_expanded +Constraint.proxy_local -> is_proxy_local +ConstraintActuator.detect_material -> use_material_detect +ConstraintActuator.fh_normal -> use_fh_normal +ConstraintActuator.fh_paralel_axis -> use_fh_paralel_axis +ConstraintActuator.force_distance -> use_force_distance +ConstraintActuator.local -> use_local +ConstraintActuator.normal -> use_normal +ConstraintActuator.persistent -> use_persistent +ControlFluidSettings.active -> active +ControlFluidSettings.reverse_frames -> use_frame_reverse +Controller.expanded -> show_expanded +Controller.priority -> use_priority +Controller.state -> state +CopyLocationConstraint.invert_x -> invert_x +CopyLocationConstraint.invert_y -> invert_y +CopyLocationConstraint.invert_z -> invert_z +CopyLocationConstraint.use_offset -> use_offset +CopyLocationConstraint.use_x -> use_x +CopyLocationConstraint.use_y -> use_y +CopyLocationConstraint.use_z -> use_z +CopyRotationConstraint.invert_x -> invert_x +CopyRotationConstraint.invert_y -> invert_y +CopyRotationConstraint.invert_z -> invert_z +CopyRotationConstraint.use_offset -> use_offset +CopyRotationConstraint.use_x -> use_x +CopyRotationConstraint.use_y -> use_y +CopyRotationConstraint.use_z -> use_z +CopyScaleConstraint.use_offset -> use_offset +CopyScaleConstraint.use_x -> use_x +CopyScaleConstraint.use_y -> use_y +CopyScaleConstraint.use_z -> use_z +Curve.auto_texspace -> use_auto_texspace +Curve.back -> use_fill_back +Curve.draw_handles -> show_handles +Curve.draw_normals -> show_normals +Curve.front -> use_fill_front +Curve.map_along_length -> use_texture_map_length +Curve.use_deform_fill -> use_fill_deform +Curve.use_path -> use_path +Curve.use_path_follow -> use_path_follow +Curve.use_radius -> use_radius +Curve.use_stretch -> use_stretch +Curve.use_time_offset -> use_time_offset +CurveMapPoint.selected -> select +CurveMapping.clip -> use_clip +DelaySensor.repeat -> use_repeat +DomainFluidSettings.generate_speed_vectors -> use_speed_vectors +DomainFluidSettings.override_time -> use_time_override +DomainFluidSettings.reverse_frames -> use_frame_reverse +*negate* DopeSheet.collapse_summary -> show_expanded_summary +DopeSheet.display_armature -> show_armature +DopeSheet.display_camera -> show_camera +DopeSheet.display_curve -> show_curve +DopeSheet.display_lamp -> show_lamp +DopeSheet.display_material -> show_material +DopeSheet.display_mesh -> show_mesh +DopeSheet.display_metaball -> show_metaball +DopeSheet.display_node -> show_node +DopeSheet.display_particle -> show_particle +DopeSheet.display_scene -> show_scene +DopeSheet.display_shapekeys -> show_shapekeys +DopeSheet.display_summary -> show_summary +DopeSheet.display_texture -> show_texture +DopeSheet.display_transforms -> show_transforms +DopeSheet.display_world -> show_world +DopeSheet.include_missing_nla -> show_missing_nla +DopeSheet.only_group_objects -> showonly_group_objects +DopeSheet.only_selected -> showonly_selected +Driver.invalid -> is_valid +Driver.show_debug_info -> show_debug_info +DriverTarget.use_local_space_transforms -> use_local_space_transform +EdgeSplitModifier.use_edge_angle -> use_edge_angle +EdgeSplitModifier.use_sharp -> use_edge_sharp +EditBone.connected -> is_connected +EditBone.cyclic_offset -> use_cyclic_offset +EditBone.deform -> use_deform +EditBone.draw_wire -> show_wire +EditBone.hidden -> hide +EditBone.hinge -> use_hinge +EditBone.inherit_scale -> use_inherit_scale +EditBone.layer -> layer +EditBone.local_location -> use_local_location +EditBone.locked -> use_lock +EditBone.multiply_vertexgroup_with_envelope -> use_envelope_multiply +EditBone.restrict_select -> restrict_select +EditBone.selected -> select +EditBone.selected_head -> select_head +EditBone.selected_tail -> select_tail +EditObjectActuator.enable_3d_tracking -> use_track_3d +EditObjectActuator.local_angular_velocity -> use_local_angular_velocity +EditObjectActuator.local_linear_velocity -> use_local_linear_velocity +EditObjectActuator.replace_display_mesh -> use_display_mesh +EditObjectActuator.replace_physics_mesh -> use_physics_mesh +EffectSequence.convert_float -> use_float +EffectSequence.de_interlace -> use_deinterlace +EffectSequence.flip_x -> use_flip_x +EffectSequence.flip_y -> use_flip_y +EffectSequence.premultiply -> use_premultiply +EffectSequence.proxy_custom_directory -> use_proxy_custom_directory +EffectSequence.proxy_custom_file -> use_proxy_custom_file +EffectSequence.reverse_frames -> use_frame_reverse +EffectSequence.use_color_balance -> use_color_balance +EffectSequence.use_crop -> use_crop +EffectSequence.use_proxy -> use_proxy +EffectSequence.use_translation -> use_translation +EffectorWeights.do_growing_hair -> use_hair_grow +EnvironmentMap.ignore_layers -> layer_ignore +EnvironmentMapTexture.use_filter_size_min -> filter_size_minimum +EnvironmentMapTexture.mipmap -> use_mipmap +EnvironmentMapTexture.mipmap_gauss -> use_mipmap_gauss +Event.alt -> alt +Event.ctrl -> ctrl +Event.oskey -> oskey +Event.shift -> shift +ExplodeModifier.alive -> show_alive +ExplodeModifier.dead -> show_dead +ExplodeModifier.size -> use_size +ExplodeModifier.split_edges -> use_edge_split +ExplodeModifier.unborn -> show_unborn +FCurve.auto_clamped_handles -> use_auto_handle_clamp +*negate* FCurve.disabled -> enabled +FCurve.locked -> use_lock +FCurve.muted -> use_mute +FCurve.selected -> select +*negate* FCurve.visible -> hide +FCurveSample.selected -> select +FModifier.active -> active +*negate* FModifier.disabled -> enabled +FModifier.expanded -> show_expanded +FModifier.muted -> use_mute +FModifierFunctionGenerator.additive -> use_additive +FModifierGenerator.additive -> use_additive +FModifierLimits.use_maximum_x -> use_x_max +FModifierLimits.use_maximum_y -> use_y_max +FModifierLimits.use_minimum_x -> use_x_min +FModifierLimits.use_minimum_y -> use_y_min +FModifierStepped.use_frame_end -> use_frame_end +FModifierStepped.use_frame_start -> use_frame_start +FcurveActuator.add -> use_additive +FcurveActuator.child -> use_child +FcurveActuator.force -> use_force +FcurveActuator.local -> use_local +FieldSettings.do_absorption -> use_absorption +FieldSettings.do_location -> use_location +FieldSettings.do_rotation -> use_rotation +FieldSettings.force_2d -> use_force_2d +FieldSettings.global_coordinates -> use_coordinates_global +FieldSettings.guide_path_add -> use_guide_path_add +FieldSettings.multiple_springs -> use_multiple_springs +FieldSettings.root_coordinates -> use_coordinates_root +FieldSettings.use_coordinates -> use_coordinates_object +FieldSettings.use_guide_path_weight -> use_guide_path_weight +FieldSettings.use_max_distance -> use_distance_min +FieldSettings.use_min_distance -> use_distance_max +FieldSettings.use_radial_max -> use_radial_max +FieldSettings.use_radial_min -> use_radial_min +FileSelectParams.do_filter -> use_filter +FileSelectParams.filter_blender -> use_filter_blender +FileSelectParams.filter_folder -> use_filter_folder +FileSelectParams.filter_font -> use_filter_font +FileSelectParams.filter_image -> use_filter_image +FileSelectParams.filter_movie -> use_filter_movie +FileSelectParams.filter_script -> use_filter_script +FileSelectParams.filter_sound -> use_filter_sound +FileSelectParams.filter_text -> use_filter_text +FileSelectParams.hide_dot -> show_hidden +Filter2DActuator.enable_motion_blur -> use_motion_blur +FloorConstraint.sticky -> use_sticky +FloorConstraint.use_rotation -> use_rotation +FluidFluidSettings.active -> active +FluidFluidSettings.export_animated_mesh -> use_animated_mesh +FollowPathConstraint.use_curve_follow -> use_curve_follow +FollowPathConstraint.use_curve_radius -> use_curve_radius +FollowPathConstraint.use_fixed_position -> use_fixed_position +Function.registered -> registered +Function.registered_optional -> registered_optional +GPencilFrame.paint_lock -> lock_paint +GPencilFrame.selected -> select +GPencilLayer.active -> active +GPencilLayer.frame_lock -> lock_frame +GPencilLayer.hide -> hide +GPencilLayer.locked -> use_lock +GPencilLayer.selected -> select +GPencilLayer.show_points -> show_points +GPencilLayer.use_onion_skinning -> use_onion_skin +GameBooleanProperty.value -> value +GameObjectSettings.actor -> use_actor +GameObjectSettings.all_states -> states_all +GameObjectSettings.anisotropic_friction -> use_anisotropic_friction +GameObjectSettings.collision_compound -> use_collision_compound +GameObjectSettings.debug_state -> show_state_debug +GameObjectSettings.ghost -> use_ghost +GameObjectSettings.initial_state -> initial_state +GameObjectSettings.lock_x_axis -> lock_location_x +GameObjectSettings.lock_x_rot_axis -> lock_rotation_x +GameObjectSettings.lock_y_axis -> lock_location_y +GameObjectSettings.lock_y_rot_axis -> lock_rotation_y +GameObjectSettings.lock_z_axis -> lock_location_z +GameObjectSettings.lock_z_rot_axis -> lock_rotation_z +GameObjectSettings.material_physics -> use_material_physics +*negate* GameObjectSettings.no_sleeping -> use_sleep +GameObjectSettings.rotate_from_normal -> use_rotate_from_normal +GameObjectSettings.show_actuators -> show_actuators +GameObjectSettings.show_controllers -> show_controllers +GameObjectSettings.show_sensors -> show_sensors +GameObjectSettings.show_state_panel -> show_state_panel +GameObjectSettings.use_activity_culling -> use_activity_culling +GameObjectSettings.use_collision_bounds -> use_collision_bounds +GameObjectSettings.used_state -> state_used +GameObjectSettings.visible_state -> state_visible +GameProperty.debug -> use_debug +GameSoftBodySettings.bending_const -> use_bending_constraint +GameSoftBodySettings.cluster_rigid_to_softbody -> use_cluster_rigid_to_softbody +GameSoftBodySettings.cluster_soft_to_softbody -> use_cluster_soft_to_softbody +GameSoftBodySettings.shape_match -> use_shape_match +GlowSequence.only_boost -> useonly_boost +GreasePencil.use_stroke_endpoints -> use_stroke_endpoints +Group.layer -> layer +ID.fake_user -> use_fake_user +ID.tag -> tag +Image.animated -> use_snimation +Image.clamp_x -> use_clamp_x +Image.clamp_y -> use_clamp_y +Image.dirty -> is_dirty +Image.fields -> use_fields +Image.has_data -> is_data +Image.premultiply -> use_premultiply +Image.tiles -> use_tiles +ImagePaint.invert_stencil -> invert_stencil +ImagePaint.show_brush -> show_brush +ImagePaint.show_brush_draw -> show_brush_draw +ImagePaint.use_backface_cull -> use_backface_cull +ImagePaint.use_clone_layer -> use_clone_layer +ImagePaint.use_normal_falloff -> use_normal_falloff +ImagePaint.use_occlude -> use_occlude +ImagePaint.use_projection -> use_projection +ImagePaint.use_stencil_layer -> use_stencil_layer +ImageSequence.convert_float -> use_float +ImageSequence.de_interlace -> use_deinterlace +ImageSequence.flip_x -> use_flip_x +ImageSequence.flip_y -> use_flip_y +ImageSequence.premultiply -> use_premultiply +ImageSequence.proxy_custom_directory -> use_proxy_custom_directory +ImageSequence.proxy_custom_file -> use_proxy_custom_file +ImageSequence.reverse_frames -> use_frame_reverse +ImageSequence.use_color_balance -> use_color_balance +ImageSequence.use_crop -> use_crop +ImageSequence.use_proxy -> use_proxy +ImageSequence.use_translation -> use_translation +ImageTexture.calculate_alpha -> use_rgb_alpha +ImageTexture.checker_even -> use_checker_even +ImageTexture.checker_odd -> use_checker_odd +ImageTexture.filter_size_minimum -> use_filter_size_min +ImageTexture.flip_axis -> use_flip_axis + + +ImageTexture.interpolation -> use_interpolation +ImageTexture.invert_alpha -> invert_alpha +ImageTexture.mipmap -> use_mipmap +ImageTexture.mipmap_gauss -> use_mipmap_gauss +ImageTexture.mirror_x -> use_mirror_x +ImageTexture.mirror_y -> use_mirror_y +ImageTexture.normal_map -> use_normal_map +ImageTexture.use_alpha -> use_use_alpha +ImageUser.auto_refresh -> use_auto_refresh +ImageUser.cyclic -> use_cyclic +* would use is_ * InflowFluidSettings.active -> active +InflowFluidSettings.export_animated_mesh -> use_export_animated_mesh +InflowFluidSettings.local_coordinates -> use_local_coordinates +Itasc.auto_step -> use_auto_step + + +JoystickSensor.all_events -> use_all_events + + +Key.relative -> use_relative +* would use is_ * KeyConfig.user_defined -> user_defined +KeyMap.children_expanded -> show_expanded_children +KeyMap.items_expanded -> show_expanded_items +* would use is_ * KeyMap.modal -> modal +KeyMap.user_defined -> use_user_defined +KeyMapItem.active -> use_active +* would use is_pressed * KeyMapItem.alt -> alt +* would use is_pressed * KeyMapItem.any -> any +* would use is_pressed * KeyMapItem.ctrl -> ctrl +KeyMapItem.expanded -> show_expanded +* would use is_pressed * KeyMapItem.oskey -> oskey +* would use is_pressed * KeyMapItem.shift -> shift + + +* KeyboardSensor.all_keys -> all_keys + + +* would use is_ * Keyframe.selected -> selected +* would use is_ * Keyframe.selected_handle1 -> selected_handle1 +* would use is_ * Keyframe.selected_handle2 -> selected_handle2 + + +KeyingSet.absolute -> use_absolute +KeyingSet.insertkey_needed -> use_insertkey_needed +KeyingSet.insertkey_visual -> use_insertkey_visual +KeyingSet.insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb + + +KeyingSetInfo.insertkey_needed -> use_insertkey_needed +KeyingSetInfo.insertkey_visual -> use_insertkey_visual +KeyingSetInfo.insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb + + +KeyingSetPath.entire_array -> use_entire_array +KeyingSetPath.insertkey_needed -> use_insertkey_needed +KeyingSetPath.insertkey_visual -> use_insertkey_visual +KeyingSetPath.insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb + + +KinematicConstraint.pos_lock_x -> use_lock_pos_x +KinematicConstraint.pos_lock_y -> use_lock_pos_y +KinematicConstraint.pos_lock_z -> use_lock_pos_z +KinematicConstraint.rot_lock_x -> use_lock_rot_x +KinematicConstraint.rot_lock_y -> use_lock_rot_y +KinematicConstraint.rot_lock_z -> use_lock_rot_z +KinematicConstraint.use_position -> use_position +KinematicConstraint.use_rotation -> use_rotation +KinematicConstraint.use_stretch -> use_stretch +KinematicConstraint.use_tail -> use_tail +KinematicConstraint.use_target -> use_target + + + + +Lamp.diffuse -> use_diffuse +Lamp.layer -> use_own_layer +Lamp.negative -> use_negative +Lamp.specular -> use_specular +LampSkySettings.use_atmosphere -> use_atmosphere +LampSkySettings.use_sky -> use_sky +LampTextureSlot.map_color -> use_map_color +LampTextureSlot.map_shadow -> use_map_shadow +Lattice.outside -> use_outside +LimitLocationConstraint.limit_transform -> limit_transform +LimitLocationConstraint.use_maximum_x -> use_maximum_x +LimitLocationConstraint.use_maximum_y -> use_maximum_y +LimitLocationConstraint.use_maximum_z -> use_maximum_z +LimitLocationConstraint.use_minimum_x -> use_minimum_x +LimitLocationConstraint.use_minimum_y -> use_minimum_y +LimitLocationConstraint.use_minimum_z -> use_minimum_z +LimitRotationConstraint.limit_transform -> limit_transform +LimitRotationConstraint.use_limit_x -> use_limit_x +LimitRotationConstraint.use_limit_y -> use_limit_y +LimitRotationConstraint.use_limit_z -> use_limit_z +LimitScaleConstraint.limit_transform -> limit_transform +LimitScaleConstraint.use_maximum_x -> use_maximum_x +LimitScaleConstraint.use_maximum_y -> use_maximum_y +LimitScaleConstraint.use_maximum_z -> use_maximum_z +LimitScaleConstraint.use_minimum_x -> use_minimum_x +LimitScaleConstraint.use_minimum_y -> use_minimum_y +LimitScaleConstraint.use_minimum_z -> use_minimum_z + + +Main.debug -> show_debug +Main.file_is_saved -> is_saved + + +* MaskModifier.invert -> invert + + +Material.cast_approximate -> use_cast_approximate +Material.cast_buffer_shadows -> use_cast_buffer_shadows +Material.cast_shadows_only -> use_cast_shadows_only +Material.cubic -> use_cubic +Material.exclude_mist -> use_exclude_mist +Material.face_texture -> use_face_texture +Material.face_texture_alpha -> use_face_texture_alpha +Material.full_oversampling -> use_full_oversampling +Material.invert_z -> use_invert_z +Material.light_group_exclusive -> use_light_group_exclusive +Material.object_color -> use_object_color +Material.only_shadow -> use_shadow_only +Material.ray_shadow_bias -> use_ray_shadow_bias +Material.receive_transparent_shadows -> use_receive_transparent_shadows +Material.shadeless -> use_shadeless +Material.shadows -> use_shadows +Material.tangent_shading -> use_tangent_shading +Material.traceable -> use_traceable +Material.transparency -> use_transparency +Material.use_diffuse_ramp -> use_diffuse_ramp +Material.use_nodes -> use_nodes +Material.use_sky -> use_sky +Material.use_specular_ramp -> use_specular_ramp +Material.use_textures -> use_textures +Material.vertex_color_light -> use_vertex_color_light +Material.vertex_color_paint -> use_vertex_color_paint + + +MaterialHalo.flare_mode -> use_flare_mode +MaterialHalo.lines -> use_lines +MaterialHalo.ring -> use_ring +MaterialHalo.shaded -> use_shaded +MaterialHalo.soft -> use_soft +MaterialHalo.star -> use_star +MaterialHalo.texture -> use_texture +MaterialHalo.vertex_normal -> use_vertex_normal +MaterialHalo.xalpha -> use_xalpha + + +MaterialPhysics.align_to_normal -> use_align_to_normal + + +* MaterialRaytraceMirror.enabled -> enabled + + +MaterialStrand.blender_units -> use_blender_units +MaterialStrand.surface_diffuse -> use_surface_diffuse +MaterialStrand.tangent_shading -> use_tangent_shading + + +* MaterialSubsurfaceScattering.enabled -> enabled + + +* MaterialTextureSlot.enabled -> enabled +MaterialTextureSlot.from_dupli -> use_from_dupli +MaterialTextureSlot.from_original -> use_from_original +MaterialTextureSlot.map_alpha -> use_map_alpha +MaterialTextureSlot.map_ambient -> use_map_ambient +MaterialTextureSlot.map_colordiff -> use_map_colordiff +MaterialTextureSlot.map_coloremission -> use_map_coloremission +MaterialTextureSlot.map_colorreflection -> use_map_colorreflection +MaterialTextureSlot.map_colorspec -> use_map_colorspec +MaterialTextureSlot.map_colortransmission -> use_map_colortransmission +MaterialTextureSlot.map_density -> use_map_density +MaterialTextureSlot.map_diffuse -> use_map_diffuse +MaterialTextureSlot.map_displacement -> use_map_displacement +MaterialTextureSlot.map_emission -> use_map_emission +MaterialTextureSlot.map_emit -> use_map_emit +MaterialTextureSlot.map_hardness -> use_map_hardness +MaterialTextureSlot.map_mirror -> use_map_mirror +MaterialTextureSlot.map_normal -> use_map_normal +MaterialTextureSlot.map_raymir -> use_map_raymir +MaterialTextureSlot.map_reflection -> use_map_reflect +MaterialTextureSlot.map_scattering -> use_map_scatter +MaterialTextureSlot.map_specular -> use_map_specular +MaterialTextureSlot.map_translucency -> use_map_translucency +MaterialTextureSlot.map_warp -> use_map_warp +MaterialTextureSlot.new_bump -> use_new_bump + + +MaterialVolume.external_shadows -> use_external_shadows +MaterialVolume.light_cache -> use_light_cache + + +Mesh.all_edges -> show_all_edges +Mesh.auto_texspace -> use_auto_texspace +Mesh.autosmooth -> use_autosmooth +Mesh.double_sided -> use_double_sided +Mesh.draw_bevel_weights -> show_bevel_weights +Mesh.draw_creases -> show_creases +Mesh.draw_edge_angle -> show_edge_angle +Mesh.draw_edge_lenght -> show_edge_lenght +Mesh.draw_edges -> show_edges +Mesh.draw_face_area -> show_face_area +Mesh.draw_faces -> show_faces +Mesh.draw_normals -> show_normals +Mesh.draw_seams -> show_seams +Mesh.draw_sharp -> show_sharp +Mesh.draw_vertex_normals -> show_vertex_normals +Mesh.use_mirror_topology -> use_mirror_topology +Mesh.use_mirror_x -> use_mirror_x +Mesh.use_paint_mask -> use_paint_mask +Mesh.vertex_normal_flip -> use_vertex_normal_flip + + +MeshColorLayer.active -> use_active +MeshColorLayer.active_render -> use_active_render + + +MeshDeformModifier.dynamic -> dynamic +MeshDeformModifier.invert -> invert +MeshDeformModifier.is_bound -> is_bound + + +MeshEdge.fgon -> is_fgon +* MeshEdge.hidden -> hide +MeshEdge.loose -> use_loose +MeshEdge.seam -> use_seam +* MeshEdge.selected -> select +MeshEdge.sharp -> use_sharp + + +* would use is_ * MeshFace.hidden -> hide +* would use is_ * MeshFace.selected -> selected +* would use is_ * MeshFace.smooth -> smooth + + +MeshTextureFace.alpha_sort -> use_alpha_sort +MeshTextureFace.billboard -> use_billboard +MeshTextureFace.collision -> use_collision +MeshTextureFace.halo -> use_halo +* would use is_ * MeshTextureFace.invisible -> invisible +MeshTextureFace.light -> use_light +MeshTextureFace.object_color -> use_object_color +MeshTextureFace.shadow -> use_shadow_face +MeshTextureFace.shared -> use_blend_shared +MeshTextureFace.tex -> use_render_texture +MeshTextureFace.text -> use_bitmap_text +MeshTextureFace.twoside -> use_twoside +MeshTextureFace.uv_pinned -> use_uv_pinned +MeshTextureFace.uv_selected -> use_uv_select +* MeshTextureFaceLayer.active -> active +* MeshTextureFaceLayer.active_clone -> active_clone +* MeshTextureFaceLayer.active_render -> active_render + + +* MeshVertex.hidden -> hide +* would use is_ * MeshVertex.selected -> select + + +MetaBall.auto_texspace -> use_auto_texspace + + +* MetaElement.hide -> hide +* would use is_ * MetaElement.negative -> negative + + +MetaSequence.convert_float -> use_convert_float +MetaSequence.de_interlace -> use_deinterlace +MetaSequence.flip_x -> use_flip_x +MetaSequence.flip_y -> use_flip_y +MetaSequence.premultiply -> use_convert_premultiply +MetaSequence.proxy_custom_directory -> use_proxy_custom_directory +MetaSequence.proxy_custom_file -> use_proxy_custom_file +MetaSequence.reverse_frames -> use_reverse_frames +MetaSequence.use_color_balance -> use_color_balance +MetaSequence.use_crop -> use_crop +MetaSequence.use_proxy -> use_proxy +MetaSequence.use_translation -> use_translation + + +MirrorModifier.clip -> use_clipping +MirrorModifier.mirror_u -> use_mirror_u +MirrorModifier.mirror_v -> use_mirror_v +MirrorModifier.mirror_vertex_groups -> use_mirror_vertex_groups +MirrorModifier.x -> use_x +MirrorModifier.y -> use_y +MirrorModifier.z -> use_z + + +Modifier.editmode -> use_in_editmode +Modifier.expanded -> show_expanded +Modifier.on_cage -> use_on_cage +Modifier.realtime -> show_realtime +Modifier.render -> use_render + + +* MotionPath.editing -> editing +* MotionPath.use_bone_head -> use_bone_head +* would use is_ * MotionPathVert.selected -> select + + +MovieSequence.convert_float -> use_convert_float +MovieSequence.de_interlace -> use_deinterlace +MovieSequence.flip_x -> use_flip_x +MovieSequence.flip_y -> use_flip_y +MovieSequence.premultiply -> use_convert_premultiply +MovieSequence.proxy_custom_directory -> use_proxy_custom_directory +MovieSequence.proxy_custom_file -> use_proxy_custom_file +* MovieSequence.reverse_frames -> use_reverse_frames +MovieSequence.use_color_balance -> use_color_balance +MovieSequence.use_crop -> use_crop +MovieSequence.use_proxy -> use_proxy +MovieSequence.use_translation -> use_translation + + +MulticamSequence.convert_float -> use_convert_float +MulticamSequence.de_interlace -> use_deinterlace +MulticamSequence.flip_x -> use_flip_x +MulticamSequence.flip_y -> use_flip_y +MulticamSequence.premultiply -> use_convert_premultiply +MulticamSequence.proxy_custom_directory -> use_proxy_custom_directory +MulticamSequence.proxy_custom_file -> use_proxy_custom_file +* MulticamSequence.reverse_frames -> use_reverse_frames +MulticamSequence.use_color_balance -> use_color_balance +MulticamSequence.use_crop -> use_crop +MulticamSequence.use_proxy -> use_proxy +MulticamSequence.use_translation -> use_translation + + +MultiresModifier.external -> use_external +MultiresModifier.optimal_display -> show_optimal + + + + + + +NetRenderSettings.master_broadcast -> use_master_broadcast +NetRenderSettings.master_clear -> use_master_clear +NetRenderSettings.slave_clear -> use_slave_clear +NetRenderSettings.slave_outputlog -> use_slave_outputlog +NetRenderSettings.slave_thumb -> use_slave_thumb + + +* I'd use is_ * NlaStrip.active -> active +NlaStrip.animated_influence -> use_animated_influence +NlaStrip.animated_time -> use_animated_time +NlaStrip.animated_time_cyclic -> use_animated_time_cyclic +NlaStrip.auto_blending -> use_auto_blend +* I'd use is_ * NlaStrip.muted -> muted +* I'd use is_ * NlaStrip.reversed -> reversed +* I'd use is_ * NlaStrip.selected -> select + + +* I'd use is_ * NlaTrack.active -> active +* I'd use is_ * NlaTrack.locked -> lock +* I'd use is_ * NlaTrack.muted -> muted +* I'd use is_ * NlaTrack.selected -> select +NlaTrack.solo -> is_solo + + +Object.draw_axis -> show_axis +Object.draw_bounds -> show_bounds +Object.draw_name -> show_name +Object.draw_texture_space -> show_texture_space +Object.draw_transparent -> show_transparent +Object.draw_wire -> show_wire +* Object.duplis_used -> is_duplis_used +* Object.layers -> layers +Object.lock_location -> lock_location +Object.lock_rotation -> lock_rotation +Object.lock_rotation_w -> lock_rotation_w +Object.lock_rotations_4d -> lock_rotations_4d +Object.lock_scale -> lock_scale +* Object.restrict_render -> use_limit_render +* Object.restrict_select -> use_limit_select +* Object.restrict_view -> use_limit_view +* Object.selected -> select +Object.shape_key_edit_mode -> use_shape_key_edit_mode +Object.shape_key_lock -> show_shape_key +Object.slow_parent -> use_slow_parent +Object.time_offset_add_parent -> use_time_offset_add_parent +Object.time_offset_edit -> use_time_offset_edit +Object.time_offset_parent -> use_time_offset_parent +Object.time_offset_particle -> use_time_offset_particle +Object.use_dupli_faces_scale -> use_dupli_faces_scale +Object.use_dupli_frames_speed -> use_dupli_frames_speed +Object.use_dupli_verts_rotation -> use_dupli_verts_rotation +Object.x_ray -> show_x_ray + + +* ObjectActuator.add_linear_velocity -> add_linear_velocity +ObjectActuator.local_angular_velocity -> use_local_angular_velocity +ObjectActuator.local_force -> use_local_force +ObjectActuator.local_linear_velocity -> use_local_linear_velocity +ObjectActuator.local_location -> use_local_location +ObjectActuator.local_rotation -> use_local_rotation +ObjectActuator.local_torque -> use_local_torque +* ObjectActuator.servo_limit_x -> use_limit_servo_x +* ObjectActuator.servo_limit_y -> use_limit_servo_y +* ObjectActuator.servo_limit_z -> use_limit_servo_z + + +* ObjectBase.layers -> layers +* ObjectBase.selected -> select +* ObjectBase.selected_user -> is_select_user + + +* could be is_ * ObstacleFluidSettings.active -> use_active +ObstacleFluidSettings.export_animated_mesh -> use_export_animated_mesh + + +* Operator.has_reports -> has_reports +OperatorStrokeElement.flip -> use_flip + + +OutflowFluidSettings.active -> use_active +OutflowFluidSettings.export_animated_mesh -> use_export_animated_mesh + + +Paint.fast_navigate -> show_low_resolution +Paint.show_brush -> show_brush + +* Panel.bl_default_closed -> bl_default_closed +* Panel.bl_show_header -> bl_show_header + + +ParentActuator.compound -> use_compound +ParentActuator.ghost -> use_ghost + + +* Particle.no_disp -> no_disp +* Particle.rekey -> rekey +* Particle.unexist -> unexist + + +ParticleBrush.use_puff_volume -> use_puff_volume + + +ParticleEdit.add_interpolate -> use_add_interpolate +ParticleEdit.auto_velocity -> use_auto_velocity +ParticleEdit.draw_particles -> show_particles +ParticleEdit.editable -> is_editable +ParticleEdit.emitter_deflect -> use_emitter_deflect +ParticleEdit.fade_time -> use_fade_time +* ParticleEdit.hair -> hair +ParticleEdit.keep_lengths -> use_keep_lengths +ParticleEdit.keep_root -> use_keep_root + + +ParticleFluidSettings.drops -> show_drops +ParticleFluidSettings.floats -> show_floats +ParticleFluidSettings.tracer -> show_tracer + + +ParticleInstanceModifier.alive -> show_alive +ParticleInstanceModifier.children -> use_children +ParticleInstanceModifier.dead -> show_dead +ParticleInstanceModifier.keep_shape -> use_keep_shape +ParticleInstanceModifier.normal -> use_normal +ParticleInstanceModifier.size -> use_size +ParticleInstanceModifier.unborn -> show_unborn +ParticleInstanceModifier.use_path -> use_path + + +ParticleSettings.abs_path_time -> use_abs_path_time +ParticleSettings.animate_branching -> use_animate_branching +ParticleSettings.billboard_lock -> lock_billboard +ParticleSettings.boids_2d -> lock_boids_to_surface +ParticleSettings.branching -> use_branching +ParticleSettings.child_effector -> use_child_effector +ParticleSettings.child_guide -> use_child_guide +ParticleSettings.child_render -> use_child_render +ParticleSettings.die_on_collision -> use_die_on_collision +ParticleSettings.died -> show_died +ParticleSettings.draw_health -> show_health +ParticleSettings.emitter -> use_emitter +ParticleSettings.enable_simplify -> use_simplify +ParticleSettings.even_distribution -> use_even_distribution +ParticleSettings.grid_invert -> invert_grid +ParticleSettings.hair_bspline -> use_hair_bspline +* ParticleSettings.hair_geometry -> hair_geometry +ParticleSettings.material_color -> show_material_color +ParticleSettings.num -> use_number +ParticleSettings.parent -> use_parent +ParticleSettings.rand_group -> use_random_group +ParticleSettings.react_multiple -> use_react_multiple +ParticleSettings.react_start_end -> use_react_start_end +ParticleSettings.render_adaptive -> show_path_steps +ParticleSettings.render_strand -> use_render_strand +ParticleSettings.rotation_dynamic -> use_rotation_dynamic +ParticleSettings.self_effect -> use_self_effect +ParticleSettings.show_size -> show_size +ParticleSettings.size_deflect -> use_size_deflect +ParticleSettings.sizemass -> use_multiply_size_mass +ParticleSettings.symmetric_branching -> use_symmetric_branching +ParticleSettings.trand -> use_emit_random +ParticleSettings.unborn -> show_unborn +ParticleSettings.use_global_dupli -> use_global_dupli +ParticleSettings.use_group_count -> use_group_count +ParticleSettings.velocity -> show_velocity +ParticleSettings.velocity_length -> use_velocity_length +* ParticleSettings.viewport -> viewport +ParticleSettings.whole_group -> use_whole_group + + +ParticleSystem.editable -> is_editable +ParticleSystem.edited -> is_edited +* ParticleSystem.global_hair -> global_hair +ParticleSystem.hair_dynamics -> use_hair_dynamics +ParticleSystem.keyed_timing -> use_keyed_timing +* ParticleSystem.multiple_caches -> multiple_caches +ParticleSystem.vertex_group_clump_negate -> invert_vertex_group_clump +ParticleSystem.vertex_group_density_negate -> invert_vertex_group_density +ParticleSystem.vertex_group_field_negate -> invert_vertex_group_field +ParticleSystem.vertex_group_kink_negate -> invert_vertex_group_kink +ParticleSystem.vertex_group_length_negate -> invert_vertex_group_length +ParticleSystem.vertex_group_rotation_negate -> invert_vertex_group_rotation +ParticleSystem.vertex_group_roughness1_negate -> invert_vertex_group_roughness1 +ParticleSystem.vertex_group_roughness2_negate -> invert_vertex_group_roughness2 +ParticleSystem.vertex_group_roughness_end_negate -> invert_vertex_group_roughness_end +ParticleSystem.vertex_group_size_negate -> invert_vertex_group_size +ParticleSystem.vertex_group_tangent_negate -> invert_vertex_group_tangent +ParticleSystem.vertex_group_velocity_negate -> invert_vertex_group_velocity + + +* ParticleTarget.valid -> valid + + +PivotConstraint.use_relative_position -> use_relative_position + + +PointCache.baked -> is_baked +* PointCache.baking -> baking +PointCache.disk_cache -> use_disk_cache +PointCache.external -> use_external +* PointCache.frames_skipped -> frames_skipped +PointCache.outdated -> is_outdated +PointCache.quick_cache -> use_quick_cache +PointCache.use_library_path -> use_library_path + + +PointDensity.turbulence -> use_turbulence + + +PointLamp.only_shadow -> use_shadow_only +PointLamp.shadow_layer -> use_shadow_own_layer +PointLamp.sphere -> use_sphere + + +PoseBone.has_ik -> is_in_ik_chain +* PoseBone.ik_dof_x -> ik_dof_x +* PoseBone.ik_dof_y -> ik_dof_y +* PoseBone.ik_dof_z -> ik_dof_z +PoseBone.ik_limit_x -> lock_ik_x +PoseBone.ik_limit_y -> lock_ik_y +PoseBone.ik_limit_z -> lock_ik_z +PoseBone.ik_lin_control -> use_ik_lin_control +PoseBone.ik_rot_control -> use_ik_rot_control +PoseBone.lock_location -> lock_location +PoseBone.lock_rotation -> lock_rotation +PoseBone.lock_rotation_w -> lock_rotation_w +PoseBone.lock_rotations_4d -> lock_rotations_4d +PoseBone.lock_scale -> lock_scale +* PoseBone.selected -> select + + +PoseTemplateSettings.generate_def_rig -> use_generate_def_rig + + +Property.is_never_none -> is_never_none +Property.is_readonly -> is_readonly +Property.is_required -> is_required +Property.registered -> is_registered +Property.registered_optional -> is_registered_optional +Property.use_output -> is_output + + +* PythonConstraint.script_error -> is_script_error +PythonConstraint.use_targets -> use_targets + + +PythonController.debug -> use_debug + + +RandomActuator.always_true -> use_always_true + + +RaySensor.x_ray_mode -> use_x_ray_mode + + +RegionView3D.box_clip -> use_box_clip +RegionView3D.box_preview -> show_synced_view +RegionView3D.lock_rotation -> lock_rotation + + +* RenderEngine.bl_postprocess -> use_bl_postprocess +* RenderEngine.bl_preview -> use_bl_preview + + +* RenderLayer.all_z -> all_z +* RenderLayer.edge -> edge +* RenderLayer.enabled -> enabled +* RenderLayer.halo -> halo +* RenderLayer.pass_ao -> pass_ao +* RenderLayer.pass_ao_exclude -> pass_ao_exclude +* RenderLayer.pass_color -> pass_color +* RenderLayer.pass_combined -> pass_combined +* RenderLayer.pass_diffuse -> pass_diffuse +* RenderLayer.pass_emit -> pass_emit +* RenderLayer.pass_emit_exclude -> pass_emit_exclude +* RenderLayer.pass_environment -> pass_environment +* RenderLayer.pass_environment_exclude -> pass_environment_exclude +* RenderLayer.pass_indirect -> pass_indirect +* RenderLayer.pass_indirect_exclude -> pass_indirect_exclude +* RenderLayer.pass_mist -> pass_mist +* RenderLayer.pass_normal -> pass_normal +* RenderLayer.pass_object_index -> pass_object_index +* RenderLayer.pass_reflection -> pass_reflection +* RenderLayer.pass_reflection_exclude -> pass_reflection_exclude +* RenderLayer.pass_refraction -> pass_refraction +* RenderLayer.pass_refraction_exclude -> pass_refraction_exclude +* RenderLayer.pass_shadow -> pass_shadow +* RenderLayer.pass_shadow_exclude -> pass_shadow_exclude +* RenderLayer.pass_specular -> pass_specular +* RenderLayer.pass_specular_exclude -> pass_specular_exclude +* RenderLayer.pass_uv -> pass_uv +* RenderLayer.pass_vector -> pass_vector +* RenderLayer.pass_z -> pass_z +* RenderLayer.sky -> sky +* RenderLayer.solid -> solid +* RenderLayer.strand -> strand +* RenderLayer.visible_layers -> visible_layers +* RenderLayer.zmask -> zmask +* RenderLayer.zmask_layers -> zmask_layers +* RenderLayer.zmask_negate -> zmask_negate +* RenderLayer.ztransp -> ztransp + + +RenderSettings.backbuf -> use_backbuf +RenderSettings.bake_active -> use_bake_active +RenderSettings.bake_clear -> use_bake_clear +RenderSettings.bake_enable_aa -> use_bake_enable_aa +RenderSettings.bake_normalized -> use_bake_normalized +RenderSettings.cineon_log -> use_cineon_log +RenderSettings.color_management -> use_color_management +RenderSettings.crop_to_border -> use_crop_to_border +RenderSettings.edge -> edge +RenderSettings.exr_half -> use_exr_half +RenderSettings.exr_preview -> use_exr_preview +RenderSettings.exr_zbuf -> use_exr_zbuf +RenderSettings.ffmpeg_autosplit -> use_ffmpeg_autosplit +RenderSettings.fields -> use_fields +RenderSettings.fields_still -> use_fields_still +RenderSettings.free_image_textures -> use_free_image_textures +RenderSettings.free_unused_nodes -> use_free_unused_nodes +RenderSettings.full_sample -> use_full_sample +RenderSettings.is_movie_format -> is_movie_format +RenderSettings.jpeg2k_ycc -> use_jpeg2k_ycc +RenderSettings.motion_blur -> use_motion_blur +* RenderSettings.multiple_engines -> multiple_engines +RenderSettings.render_antialiasing -> use_render_antialiasing +* doubled?* RenderSettings.render_stamp -> render_stamp +RenderSettings.save_buffers -> use_save_buffers +RenderSettings.simplify_triangulate -> use_simplify_triangulate +RenderSettings.single_layer -> use_active_layer +RenderSettings.stamp_camera -> use_stamp_camera +RenderSettings.stamp_date -> use_stamp_date +RenderSettings.stamp_filename -> use_stamp_filename +RenderSettings.stamp_frame -> use_stamp_frame +RenderSettings.stamp_marker -> use_stamp_marker +RenderSettings.stamp_note -> use_stamp_note +RenderSettings.stamp_render_time -> use_stamp_render_time +RenderSettings.stamp_scene -> use_stamp_scene +RenderSettings.stamp_sequencer_strip -> use_stamp_sequencer_strip +RenderSettings.stamp_time -> use_stamp_time +RenderSettings.tiff_bit -> use_tiff_bit +RenderSettings.use_border -> use_border +RenderSettings.use_compositing -> use_compositing +RenderSettings.use_envmaps -> use_envmaps +RenderSettings.use_file_extension -> use_file_extension +RenderSettings.use_game_engine -> use_game_engine +RenderSettings.use_instances -> use_instances +RenderSettings.use_local_coords -> use_local_coords +RenderSettings.use_overwrite -> use_overwrite +RenderSettings.use_placeholder -> use_placeholder +RenderSettings.use_radiosity -> use_radiosity +RenderSettings.use_raytracing -> use_raytrace +RenderSettings.use_sequencer -> use_sequencer +RenderSettings.use_sequencer_gl_preview -> use_sequencer_gl_preview +RenderSettings.use_sequencer_gl_render -> use_sequencer_gl_render +RenderSettings.use_shadows -> use_shadows +RenderSettings.use_simplify -> use_simplify +RenderSettings.use_sss -> use_sss +RenderSettings.use_textures -> use_textures + + +RigidBodyJointConstraint.disable_linked_collision -> use_disable_linked_collision +RigidBodyJointConstraint.draw_pivot -> show_pivot + + +Scene.frame_drop -> use_frame_drop +* Scene.layers -> layers +* Scene.mute_audio -> mute_audio +* Scene.nla_tweakmode_on -> is_nla_tweakmode_on +Scene.pov_radio_always_sample -> use_pov_radio_always_sample +Scene.pov_radio_display_advanced -> show_pov_radio_advanced +Scene.pov_radio_enable -> use_pov_radio_enable +Scene.pov_radio_media -> use_pov_radio_media +Scene.pov_radio_normal -> use_pov_radio_normal +Scene.scrub_audio -> use_scrub_audio +Scene.sync_audio -> use_sync_audio +Scene.use_gravity -> use_gravity +Scene.use_nodes -> use_nodes +Scene.use_preview_range -> use_preview_range + + +SceneGameData.activity_culling -> use_activity_culling +SceneGameData.auto_start -> use_auto_start +SceneGameData.fullscreen -> show_fullscreen +SceneGameData.glsl_extra_textures -> use_glsl_extra_textures +SceneGameData.glsl_lights -> use_glsl_lights +SceneGameData.glsl_nodes -> use_glsl_nodes +SceneGameData.glsl_ramps -> use_glsl_ramps +SceneGameData.glsl_shaders -> use_glsl_shaders +SceneGameData.glsl_shadows -> use_glsl_shadows +SceneGameData.show_debug_properties -> show_debug_properties +SceneGameData.show_framerate_profile -> show_framerate_profile +SceneGameData.show_physics_visualization -> show_physics_visualization +SceneGameData.use_animation_record -> use_animation_record +SceneGameData.use_deprecation_warnings -> use_deprecation_warnings +SceneGameData.use_display_lists -> use_display_lists +SceneGameData.use_frame_rate -> use_frame_rate +SceneGameData.use_occlusion_culling -> use_occlusion_culling + + +SceneRenderLayer.all_z -> use_all_z +SceneRenderLayer.edge -> use_edge +* SceneRenderLayer.enabled -> enabled +SceneRenderLayer.halo -> use_halo +SceneRenderLayer.pass_ao -> use_pass_ao +SceneRenderLayer.pass_ao_exclude -> use_pass_ao_exclude +SceneRenderLayer.pass_color -> use_pass_color +SceneRenderLayer.pass_combined -> use_pass_combined +SceneRenderLayer.pass_diffuse -> use_pass_diffuse +SceneRenderLayer.pass_emit -> use_pass_emit +SceneRenderLayer.pass_emit_exclude -> use_pass_emit_exclude +SceneRenderLayer.pass_environment -> use_pass_environment +SceneRenderLayer.pass_environment_exclude -> use_pass_environment_exclude +SceneRenderLayer.pass_indirect -> use_pass_indirect +SceneRenderLayer.pass_indirect_exclude -> use_pass_indirect_exclude +SceneRenderLayer.pass_mist -> use_pass_mist +SceneRenderLayer.pass_normal -> use_pass_normal +SceneRenderLayer.pass_object_index -> use_pass_object_index +SceneRenderLayer.pass_reflection -> use_pass_reflection +SceneRenderLayer.pass_reflection_exclude -> use_pass_reflection_exclude +SceneRenderLayer.pass_refraction -> use_pass_refraction +SceneRenderLayer.pass_refraction_exclude -> use_pass_refraction_exclude +SceneRenderLayer.pass_shadow -> use_pass_shadow +SceneRenderLayer.pass_shadow_exclude -> use_pass_shadow_exclude +SceneRenderLayer.pass_specular -> use_pass_specular +SceneRenderLayer.pass_specular_exclude -> use_pass_specular_exclude +SceneRenderLayer.pass_uv -> use_pass_uv +SceneRenderLayer.pass_vector -> use_pass_vector +SceneRenderLayer.pass_z -> use_pass_z +SceneRenderLayer.sky -> use_sky +SceneRenderLayer.solid -> use_solid +SceneRenderLayer.strand -> use_strand +SceneRenderLayer.visible_layers -> visible_layers +SceneRenderLayer.zmask -> use_zmask +SceneRenderLayer.zmask_layers -> use_zmask_layers +SceneRenderLayer.zmask_negate -> use_zmask_negate +SceneRenderLayer.ztransp -> use_ztransp + + +* SceneSequence.convert_float -> convert_float +* SceneSequence.de_interlace -> de_interlace +* SceneSequence.flip_x -> flip_x +* SceneSequence.flip_y -> flip_y +* SceneSequence.premultiply -> premultiply +* SceneSequence.proxy_custom_directory -> proxy_custom_directory +* SceneSequence.proxy_custom_file -> proxy_custom_file +* SceneSequence.reverse_frames -> reverse_frames +* SceneSequence.use_color_balance -> use_color_balance +* SceneSequence.use_crop -> use_crop +* SceneSequence.use_proxy -> use_proxy +* SceneSequence.use_translation -> use_translation + + +Scopes.use_full_resolution -> use_full_resolution + + +Screen.animation_playing -> is_animation_playing +Screen.fullscreen -> is_fullscreen + + +ScrewModifier.use_normal_calculate -> use_normal_calculate +ScrewModifier.use_normal_flip -> use_normal_flip +ScrewModifier.use_object_screw_offset -> use_object_screw_offset + + +Sculpt.lock_x -> lock_x +Sculpt.lock_y -> lock_y +Sculpt.lock_z -> lock_z +Sculpt.symmetry_x -> use_symmetry_x +Sculpt.symmetry_y -> use_symmetry_y +Sculpt.symmetry_z -> use_symmetry_z + + +Sensor.expanded -> show_expanded +* Sensor.invert -> invert +* Sensor.level -> level +Sensor.pulse_false_level -> use_pulse_false_level +Sensor.pulse_true_level -> use_pulse_true_level +Sensor.tap -> use_tap + + +* Sequence.frame_locked -> frame_locked +* Sequence.left_handle_selected -> left_handle_select +* Sequence.lock -> lock +* Sequence.mute -> mute +* Sequence.right_handle_selected -> right_handle_select +* Sequence.selected -> select +* Sequence.use_effect_default_fade -> use_effect_default_fade + + +SequenceColorBalance.inverse_gain -> invert_gain +SequenceColorBalance.inverse_gamma -> invert_gamma +SequenceColorBalance.inverse_lift -> invert_lift + + +ShaderNodeExtendedMaterial.diffuse -> use_diffuse +ShaderNodeExtendedMaterial.invert_normal -> invert_normal +ShaderNodeExtendedMaterial.specular -> use_specular + + +ShaderNodeMapping.clamp_maximum -> use_clamp_to_maximum +ShaderNodeMapping.clamp_minimum -> use_clamp_to_minimum + + +ShaderNodeMaterial.diffuse -> use_diffuse +ShaderNodeMaterial.invert_normal -> invert_normal +ShaderNodeMaterial.specular -> use_specular + + +ShaderNodeMixRGB.alpha -> use_alpha + + +ShapeActionActuator.continue_last_frame -> use_continue_last_frame + + +* ShapeKey.mute -> mute + + +* see below * ShrinkwrapConstraint.use_x -> use_x +* see below* ShrinkwrapConstraint.use_y -> use_y +* see below* ShrinkwrapConstraint.use_z -> use_z +ShrinkwrapModifier.cull_back_faces -> use_cull_back_faces +ShrinkwrapModifier.cull_front_faces -> use_cull_front_faces +ShrinkwrapModifier.keep_above_surface -> use_keep_above_surface +* ShrinkwrapModifier.negative -> negative +* ShrinkwrapModifier.positive -> positive +ShrinkwrapModifier.x -> use_x +ShrinkwrapModifier.y -> use_y +ShrinkwrapModifier.z -> use_z + + +SimpleDeformModifier.lock_x_axis -> lock_axis_x +SimpleDeformModifier.lock_y_axis -> lock_axis_y +SimpleDeformModifier.relative -> use_relative + + +SmokeDomainSettings.dissolve_smoke -> use_dissolve_smoke +SmokeDomainSettings.dissolve_smoke_log -> use_dissolve_smoke_log +SmokeDomainSettings.highres -> use_highres +SmokeDomainSettings.initial_velocity -> use_initial_velocity +SmokeDomainSettings.viewhighres -> show_highres + + +*negate* SmokeFlowSettings.outflow -> use_outflow + + +SmoothModifier.x -> use_x +SmoothModifier.y -> use_y +SmoothModifier.z -> use_z + + +SoftBodySettings.auto_step -> use_auto_step +SoftBodySettings.diagnose -> use_diagnose +SoftBodySettings.edge_collision -> use_edge_collision +SoftBodySettings.estimate_matrix -> use_estimate_matrix +SoftBodySettings.face_collision -> use_face_collision +SoftBodySettings.new_aero -> use_new_aero +SoftBodySettings.self_collision -> use_self_collision +SoftBodySettings.stiff_quads -> use_stiff_quads +SoftBodySettings.use_edges -> use_edges +SoftBodySettings.use_goal -> use_goal + + +* SolidifyModifier.invert -> invert_vertex_groups_influence +SolidifyModifier.use_even_offset -> use_even_offset +SolidifyModifier.use_quality_normals -> use_quality_normals +SolidifyModifier.use_rim -> use_rim +SolidifyModifier.use_rim_material -> use_rim_material + + +Sound.caching -> use_ram_cache + + +SoundActuator.enable_sound_3d -> use_sound_3d + + +SpaceConsole.show_report_debug -> show_report_debug +SpaceConsole.show_report_error -> show_report_error +SpaceConsole.show_report_info -> show_report_info +SpaceConsole.show_report_operator -> show_report_operator +SpaceConsole.show_report_warn -> show_report_warn + + +SpaceDopeSheetEditor.automerge_keyframes -> show_automerge_keyframes +SpaceDopeSheetEditor.realtime_updates -> use_realtime_updates +SpaceDopeSheetEditor.show_cframe_indicator -> show_cframe_indicator +SpaceDopeSheetEditor.show_seconds -> show_seconds +SpaceDopeSheetEditor.show_sliders -> show_sliders +SpaceDopeSheetEditor.use_marker_sync -> use_marker_sync + + +SpaceGraphEditor.automerge_keyframes -> show_automerge_keyframes +* SpaceGraphEditor.has_ghost_curves -> has_ghost_curves +SpaceGraphEditor.only_selected_curves_handles -> use_only_selected_curves_handles +SpaceGraphEditor.only_selected_keyframe_handles -> use_only_selected_keyframe_handles +SpaceGraphEditor.realtime_updates -> use_realtime_updates +SpaceGraphEditor.show_cframe_indicator -> show_cframe_indicator +SpaceGraphEditor.show_cursor -> show_cursor +SpaceGraphEditor.show_handles -> show_handles +SpaceGraphEditor.show_seconds -> show_seconds +SpaceGraphEditor.show_sliders -> show_sliders + + +SpaceImageEditor.draw_repeated -> show_repeated +SpaceImageEditor.image_painting -> use_image_paint +SpaceImageEditor.image_pin -> show_image_pin +SpaceImageEditor.show_paint -> show_paint +SpaceImageEditor.show_render -> show_render +SpaceImageEditor.show_uvedit -> show_uvedit +SpaceImageEditor.update_automatically -> use_update_automatically +SpaceImageEditor.use_grease_pencil -> use_grease_pencil + + +SpaceLogicEditor.actuators_show_active_objects -> show_actuators_active_objects +SpaceLogicEditor.actuators_show_active_states -> show_actuators_active_states +SpaceLogicEditor.actuators_show_linked_controller -> show_actuators_linked_controller +SpaceLogicEditor.actuators_show_selected_objects -> show_actuators_selected_objects +SpaceLogicEditor.controllers_show_active_objects -> show_controllers_active_objects +SpaceLogicEditor.controllers_show_linked_controller -> show_controllers_linked_controller +SpaceLogicEditor.controllers_show_selected_objects -> show_controllers_selected_objects +SpaceLogicEditor.sensors_show_active_objects -> show_sensors_active_objects +SpaceLogicEditor.sensors_show_active_states -> show_sensors_active_states +SpaceLogicEditor.sensors_show_linked_controller -> show_sensors_linked_controller +SpaceLogicEditor.sensors_show_selected_objects -> show_sensors_selected_objects + + +SpaceNLA.realtime_updates -> use_realtime_updates +SpaceNLA.show_cframe_indicator -> show_cframe_indicator +SpaceNLA.show_seconds -> show_seconds +SpaceNLA.show_strip_curves -> show_strip_curves + + +SpaceNodeEditor.backdrop -> show_backdrop + + +SpaceOutliner.match_case_sensitive -> use_match_case_sensitive +SpaceOutliner.match_complete -> use_match_complete +SpaceOutliner.show_restriction_columns -> show_restriction_columns + + +SpaceProperties.brush_texture -> show_brush_texture +SpaceProperties.use_pin_id -> use_pin_id + + +* SpaceSequenceEditor.draw_frames -> draw_frames +* SpaceSequenceEditor.draw_safe_margin -> draw_safe_margin +* SpaceSequenceEditor.separate_color_preview -> separate_color_preview +* SpaceSequenceEditor.show_cframe_indicator -> show_cframe_indicator +* SpaceSequenceEditor.use_grease_pencil -> use_grease_pencil +* SpaceSequenceEditor.use_marker_sync -> use_marker_sync + + +SpaceTextEditor.find_all -> use_find_all +SpaceTextEditor.find_wrap -> use_find_wrap +SpaceTextEditor.line_numbers -> show_line_numbers +SpaceTextEditor.live_edit -> use_live_edit +SpaceTextEditor.overwrite -> use_overwrite +SpaceTextEditor.syntax_highlight -> use_syntax_highlight +SpaceTextEditor.word_wrap -> use_word_wrap + + +SpaceTimeline.only_selected -> use_only_selected +SpaceTimeline.play_all_3d -> use_play_all_3d +SpaceTimeline.play_anim -> use_play_anim +SpaceTimeline.play_buttons -> use_play_buttons +SpaceTimeline.play_image -> use_play_image +SpaceTimeline.play_nodes -> use_play_nodes +SpaceTimeline.play_sequencer -> use_play_sequencer +SpaceTimeline.play_top_left -> use_play_top_left +SpaceTimeline.show_cframe_indicator -> show_cframe_indicator + + +SpaceUVEditor.constrain_to_image_bounds -> use_constrain_to_image_bounds +SpaceUVEditor.draw_modified_edges -> show_modified_edges +SpaceUVEditor.draw_other_objects -> show_other_objects +SpaceUVEditor.draw_smooth_edges -> show_smooth_edges +SpaceUVEditor.draw_stretch -> show_stretch +SpaceUVEditor.live_unwrap -> use_live_unwrap +SpaceUVEditor.normalized_coordinates -> show_normalized_coordinates +SpaceUVEditor.snap_to_pixels -> use_snap_to_pixels + + +SpaceView3D.all_object_origins -> show_all_objects_origin +SpaceView3D.display_background_images -> show_background_images +SpaceView3D.display_floor -> show_floor +SpaceView3D.display_render_override -> show_render_override +SpaceView3D.display_x_axis -> show_axis_x +SpaceView3D.display_y_axis -> show_axis_y +SpaceView3D.display_z_axis -> show_axis_z +* SpaceView3D.layers -> layers +SpaceView3D.lock_camera_and_layers -> lock_camera_and_layers +SpaceView3D.manipulator -> use_manipulator +SpaceView3D.manipulator_rotate -> use_manipulator_rotate +SpaceView3D.manipulator_scale -> use_manipulator_scale +SpaceView3D.manipulator_translate -> use_manipulator_translate +SpaceView3D.occlude_geometry -> use_occlude_geometry +SpaceView3D.outline_selected -> show_outline_selected +SpaceView3D.pivot_point_align -> use_pivot_point_align +SpaceView3D.relationship_lines -> show_relationship_lines +SpaceView3D.textured_solid -> show_textured_solid +* SpaceView3D.used_layers -> used_layers + + +SpeedControlSequence.curve_compress_y -> use_curve_compress_y +SpeedControlSequence.curve_velocity -> use_curve_velocity +SpeedControlSequence.frame_blending -> use_frame_blend + + +Spline.bezier_u -> use_bezier_u +Spline.bezier_v -> use_bezier_v +Spline.cyclic_u -> use_cyclic_u +Spline.cyclic_v -> use_cyclic_v +Spline.endpoint_u -> use_endpoint_u +Spline.endpoint_v -> use_endpoint_v +* Spline.hide -> hide +Spline.smooth -> use_smooth + + + + + + +SplineIKConstraint.chain_offset -> use_chain_offset +* SplineIKConstraint.even_divisions -> use_even_divisions +SplineIKConstraint.use_curve_radius -> use_curve_radius +SplineIKConstraint.y_stretch -> use_y_stretch + + +* SplinePoint.hidden -> hide +* SplinePoint.selected -> select + + +SpotLamp.auto_clip_end -> use_auto_clip_end +SpotLamp.auto_clip_start -> use_auto_clip_start +SpotLamp.halo -> use_halo +SpotLamp.only_shadow -> use_shadow_only +SpotLamp.shadow_layer -> use_shadow_own_layer +SpotLamp.show_cone -> show_cone +SpotLamp.sphere -> use_sphere +SpotLamp.square -> use_square + + +* StateActuator.state -> state + + +SubsurfModifier.optimal_display -> show_optimal +SubsurfModifier.subsurf_uv -> use_subsurf_uv + + +SunLamp.only_shadow -> use_shadow_only +SunLamp.shadow_layer -> use_shadow_own_layer + + +SurfaceCurve.map_along_length -> use_map_along_length +SurfaceCurve.vertex_normal_flip -> use_vertex_normal_flip + + +TexMapping.has_maximum -> use_clip_to_maximum +TexMapping.has_minimum -> use_clip_to_minimum + + +Text.dirty -> is_dirty +Text.memory -> is_in_memory +Text.modified -> is_modified +Text.tabs_as_spaces -> use_tabs_as_spaces +Text.use_module -> use_module + + +TextCharacterFormat.bold -> use_bold +TextCharacterFormat.italic -> use_italic +TextCharacterFormat.style -> use_style +TextCharacterFormat.underline -> use_underline +TextCharacterFormat.wrap -> use_wrap + + +TextCurve.fast -> use_fast_editing +TextCurve.map_along_length -> use_map_along_length +TextCurve.vertex_normal_flip -> use_vertex_normal_flip + + +TextMarker.edit_all -> use_edit_all +* TextMarker.temporary -> is_temporary + + +Texture.use_color_ramp -> use_color_ramp +Texture.use_nodes -> use_nodes +Texture.use_preview_alpha -> use_preview_alpha +TextureNodeMixRGB.alpha -> use_alpha +TextureSlot.negate -> use_negate +TextureSlot.rgb_to_intensity -> use_rgb_to_intensity +TextureSlot.stencil -> use_stencil + + +ThemeBoneColorSet.colored_constraints -> show_colored_constraints +ThemeWidgetColors.shaded -> show_shaded + + +* TimelineMarker.selected -> select + + +ToolSettings.auto_normalize -> use_auto_normalize +ToolSettings.automerge_editing -> use_automerge_editing +ToolSettings.bone_sketching -> use_bone_sketching +ToolSettings.etch_autoname -> use_etch_autoname +ToolSettings.etch_overdraw -> use_etch_overdraw +ToolSettings.etch_quick -> use_etch_quick +ToolSettings.mesh_selection_mode -> use_mesh_selection_mode +ToolSettings.record_with_nla -> use_record_with_nla +ToolSettings.snap -> use_snap +ToolSettings.snap_align_rotation -> use_snap_align_rotation +ToolSettings.snap_peel_object -> use_snap_peel_object +ToolSettings.snap_project -> use_snap_project +ToolSettings.use_auto_keying -> use_keyframe_insert_auto +* ToolSettings.uv_local_view -> showonly_uv_local_view +ToolSettings.uv_sync_selection -> use_uv_sync_selection + + +TrackToConstraint.target_z -> use_target_z + + +TransformConstraint.extrapolate_motion -> use_motion_extrapolate +TransformSequence.uniform_scale -> use_uniform_scale + + +UILayout.active -> active +UILayout.enabled -> enabled + + +UVProjectModifier.override_image -> show_override_image + + +UnitSettings.use_separate -> use_separate + + +UserPreferencesEdit.auto_keyframe_insert_available -> use_keyframe_insert_auto_available +UserPreferencesEdit.auto_keyframe_insert_keyingset -> use_keyframe_insert_auto_keyingset +UserPreferencesEdit.drag_immediately -> use_drag_immediately +UserPreferencesEdit.duplicate_action -> use_duplicate_action +UserPreferencesEdit.duplicate_armature -> use_duplicate_armature +UserPreferencesEdit.duplicate_curve -> use_duplicate_curve +UserPreferencesEdit.duplicate_fcurve -> use_duplicate_fcurve +UserPreferencesEdit.duplicate_lamp -> use_duplicate_lamp +UserPreferencesEdit.duplicate_material -> use_duplicate_material +UserPreferencesEdit.duplicate_mesh -> use_duplicate_mesh +UserPreferencesEdit.duplicate_metaball -> use_duplicate_metaball +UserPreferencesEdit.duplicate_particle -> use_duplicate_particle +UserPreferencesEdit.duplicate_surface -> use_duplicate_surface +UserPreferencesEdit.duplicate_text -> use_duplicate_text +UserPreferencesEdit.duplicate_texture -> use_duplicate_texture +UserPreferencesEdit.enter_edit_mode -> use_enter_edit_mode +UserPreferencesEdit.global_undo -> use_global_undo +UserPreferencesEdit.grease_pencil_simplify_stroke -> use_grease_pencil_simplify_stroke +UserPreferencesEdit.grease_pencil_smooth_stroke -> use_grease_pencil_smooth_stroke +UserPreferencesEdit.insertkey_xyz_to_rgb -> show_insertkey_xyz_to_rgb +UserPreferencesEdit.keyframe_insert_needed -> use_keyframe_insert_needed +UserPreferencesEdit.snap_rotate -> use_snap_grid_rotate +UserPreferencesEdit.snap_scale -> use_snap_grid_scale +UserPreferencesEdit.snap_translate -> use_snap_grid_translate +UserPreferencesEdit.use_auto_keying -> use_auto_keying +UserPreferencesEdit.use_negative_frames -> use_negative_frames +UserPreferencesEdit.use_visual_keying -> show_visual_keying + + + + + + +UserPreferencesFilePaths.auto_save_temporary_files -> use_auto_save_temporary_files +UserPreferencesFilePaths.compress_file -> use_file_compression +UserPreferencesFilePaths.filter_file_extensions -> showonly_file_extensions +UserPreferencesFilePaths.hide_dot_files_datablocks -> show_dot_files_datablocks +UserPreferencesFilePaths.load_ui -> use_load_ui +UserPreferencesFilePaths.save_preview_images -> use_save_preview_images +UserPreferencesFilePaths.use_relative_paths -> use_relative_paths + + +UserPreferencesInput.continuous_mouse -> use_continuous_mouse +UserPreferencesInput.emulate_3_button_mouse -> use_emulate_3_button_mouse +UserPreferencesInput.emulate_numpad -> use_emulate_numpad +UserPreferencesInput.invert_zoom_direction -> invert_zoom + + +UserPreferencesSystem.auto_execute_scripts -> use_scripts_auto_execute +UserPreferencesSystem.enable_all_codecs -> use_preview_images +UserPreferencesSystem.international_fonts -> use_fonts_international +UserPreferencesSystem.tabs_as_spaces -> use_tabs_as_spaces +UserPreferencesSystem.translate_buttons -> show_translate_buttons +UserPreferencesSystem.translate_toolbox -> show_translate_toolbox +UserPreferencesSystem.translate_tooltips -> show_translate_tooltips +UserPreferencesSystem.use_antialiasing -> show_antialiasing +UserPreferencesSystem.use_mipmaps -> use_mipmaps +UserPreferencesSystem.use_textured_fonts -> show_fonts_textured +UserPreferencesSystem.use_vbos -> use_vertex_buffer_objects +UserPreferencesSystem.use_weight_color_range -> show_weight_color_range + + +UserPreferencesView.auto_depth -> use_mouse_auto_depth +UserPreferencesView.auto_perspective -> show_auto_perspective +UserPreferencesView.directional_menus -> show_directional_menus +UserPreferencesView.display_object_info -> show_object_info +UserPreferencesView.global_pivot -> show_global_pivot +UserPreferencesView.global_scene -> show_global_scene +UserPreferencesView.open_mouse_over -> use_mouse_over_open +UserPreferencesView.pin_floating_panels -> show_pin_floating_panels +UserPreferencesView.rotate_around_selection -> use_rotate_around_selection +UserPreferencesView.show_mini_axis -> show_mini_axis +UserPreferencesView.show_playback_fps -> show_playback_fps +UserPreferencesView.show_splash -> show_splash +UserPreferencesView.show_view_name -> show_view_name +UserPreferencesView.tooltips -> use_tooltips +UserPreferencesView.use_column_layout -> show_column_layout +UserPreferencesView.use_large_cursors -> show_large_cursors +UserPreferencesView.use_manipulator -> show_manipulator +UserPreferencesView.use_middle_mouse_paste -> use_mouse_mmb_paste +UserPreferencesView.wheel_invert_zoom -> invert_mouse_wheel_zoom +UserPreferencesView.zoom_to_mouse -> use_zoom_ato_mouse + + +* UserSolidLight.enabled -> use + + +VertexPaint.all_faces -> use_all_faces +VertexPaint.normals -> use_normals +VertexPaint.spray -> use_spray + + +VisibilityActuator.children -> show_occluded_children +VisibilityActuator.occlusion -> show_occluded +VisibilityActuator.visible -> show + + +VoxelData.still -> use_still + + +WaveModifier.cyclic -> use_cyclic +WaveModifier.normals -> show_normals +WaveModifier.x -> use_x +WaveModifier.x_normal -> use_normal_x +WaveModifier.y -> use_y +WaveModifier.y_normal -> use_normal_y +WaveModifier.z_normal -> use_normal_z + + +World.blend_sky -> use_sky_blend +World.paper_sky -> use_sky_paper +World.real_sky -> use_sky_real +WorldLighting.falloff -> use_falloff +WorldLighting.pixel_cache -> use_ao_pixel_cache +WorldLighting.use_ambient_occlusion -> use_ao +WorldLighting.use_environment_lighting -> use_environment_lighting +WorldLighting.use_indirect_lighting -> use_indirect_lighting +WorldMistSettings.use_mist -> use_mist +WorldStarsSettings.use_stars -> use_stars +WorldTextureSlot.map_blend -> use_map_blend +WorldTextureSlot.map_horizon -> use_map_horizon +WorldTextureSlot.map_zenith_down -> use_map_zenith_down +WorldTextureSlot.map_zenith_up -> use_map_zenith_up \ No newline at end of file From 4b0ab395716d3b73f787e45ef0777939554b5291 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 28 Jun 2010 12:25:28 +0000 Subject: [PATCH 226/674] rna suggested names: position -> location maximum/minimum -> max/min --- source/blender/makesrna/rna_api_cleanup.txt | 78 ++++++++++++--------- 1 file changed, 45 insertions(+), 33 deletions(-) diff --git a/source/blender/makesrna/rna_api_cleanup.txt b/source/blender/makesrna/rna_api_cleanup.txt index 3522c860113..b7723062dbc 100644 --- a/source/blender/makesrna/rna_api_cleanup.txt +++ b/source/blender/makesrna/rna_api_cleanup.txt @@ -1,4 +1,18 @@ +# non booleans, (much todo) +ParticleSettings.child_nbr -> child_display_percent +ParticleSettings.rendered_child_nbr -> child_render_percent +ParticleSettings.child_random_size -> child_size_random +ParticleSettings.clumppow -> clump_power +ParticleSettings.enable_simplify -> use_simplify +ParticleSettings.rand_group -> use_group_random +ParticleSettings.ren_as -> render_type +ParticleSettings.sizemass -> use_size_mass +ParticleSettings.unborn -> use_unborn +ParticleSettings.viewport -> use_simplify_viewport +BuildModifier.randomize -> use_random +Camera.panorama -> use_panorama +# booleans ActionActuator.continue_last_frame -> continue_last_frame ActionGroup.expanded -> show_expanded ActionGroup.locked -> use_lock @@ -28,7 +42,7 @@ Armature.draw_group_colors -> show_group_colors Armature.draw_names -> show_names Armature.ghost_only_selected -> showonly_ghost_selected Armature.layer -> layer -Armature.layer_protection -> layer_protection +Armature.layer_protection -> layer_protect Armature.x_axis_mirror -> use_mirror_x ArmatureModifier.b_bone_rest -> use_b_bone_rest ArmatureModifier.invert -> use_vertex_group_invert @@ -247,7 +261,7 @@ EffectSequence.use_proxy -> use_proxy EffectSequence.use_translation -> use_translation EffectorWeights.do_growing_hair -> use_hair_grow EnvironmentMap.ignore_layers -> layer_ignore -EnvironmentMapTexture.use_filter_size_min -> filter_size_minimum +EnvironmentMapTexture.use_filter_size_min -> filter_size_min EnvironmentMapTexture.mipmap -> use_mipmap EnvironmentMapTexture.mipmap_gauss -> use_mipmap_gauss Event.alt -> alt @@ -313,7 +327,7 @@ FluidFluidSettings.active -> active FluidFluidSettings.export_animated_mesh -> use_animated_mesh FollowPathConstraint.use_curve_follow -> use_curve_follow FollowPathConstraint.use_curve_radius -> use_curve_radius -FollowPathConstraint.use_fixed_position -> use_fixed_position +FollowPathConstraint.use_fixed_position -> use_fixed_location Function.registered -> registered Function.registered_optional -> registered_optional GPencilFrame.paint_lock -> lock_paint @@ -455,21 +469,19 @@ KeyingSetPath.insertkey_visual -> use_insertkey_visual KeyingSetPath.insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb -KinematicConstraint.pos_lock_x -> use_lock_pos_x -KinematicConstraint.pos_lock_y -> use_lock_pos_y -KinematicConstraint.pos_lock_z -> use_lock_pos_z -KinematicConstraint.rot_lock_x -> use_lock_rot_x -KinematicConstraint.rot_lock_y -> use_lock_rot_y -KinematicConstraint.rot_lock_z -> use_lock_rot_z -KinematicConstraint.use_position -> use_position +KinematicConstraint.pos_lock_x -> lock_location_x +KinematicConstraint.pos_lock_y -> lock_location_y +KinematicConstraint.pos_lock_z -> lock_location_z +KinematicConstraint.rot_lock_x -> lock_rotation_x +KinematicConstraint.rot_lock_y -> lock_rotation_y +KinematicConstraint.rot_lock_z -> lock_rotation_z +KinematicConstraint.use_position -> use_location KinematicConstraint.use_rotation -> use_rotation KinematicConstraint.use_stretch -> use_stretch KinematicConstraint.use_tail -> use_tail KinematicConstraint.use_target -> use_target - - Lamp.diffuse -> use_diffuse Lamp.layer -> use_own_layer Lamp.negative -> use_negative @@ -480,23 +492,23 @@ LampTextureSlot.map_color -> use_map_color LampTextureSlot.map_shadow -> use_map_shadow Lattice.outside -> use_outside LimitLocationConstraint.limit_transform -> limit_transform -LimitLocationConstraint.use_maximum_x -> use_maximum_x -LimitLocationConstraint.use_maximum_y -> use_maximum_y -LimitLocationConstraint.use_maximum_z -> use_maximum_z -LimitLocationConstraint.use_minimum_x -> use_minimum_x -LimitLocationConstraint.use_minimum_y -> use_minimum_y -LimitLocationConstraint.use_minimum_z -> use_minimum_z +LimitLocationConstraint.use_maximum_x -> use_x_max +LimitLocationConstraint.use_maximum_y -> use_y_max +LimitLocationConstraint.use_maximum_z -> use_z_max +LimitLocationConstraint.use_minimum_x -> use_x_min +LimitLocationConstraint.use_minimum_y -> use_y_min +LimitLocationConstraint.use_minimum_z -> use_z_min LimitRotationConstraint.limit_transform -> limit_transform -LimitRotationConstraint.use_limit_x -> use_limit_x -LimitRotationConstraint.use_limit_y -> use_limit_y -LimitRotationConstraint.use_limit_z -> use_limit_z +LimitRotationConstraint.use_limit_x -> use_x_limit +LimitRotationConstraint.use_limit_y -> use_y_limit +LimitRotationConstraint.use_limit_z -> use_z_limit LimitScaleConstraint.limit_transform -> limit_transform -LimitScaleConstraint.use_maximum_x -> use_maximum_x -LimitScaleConstraint.use_maximum_y -> use_maximum_y -LimitScaleConstraint.use_maximum_z -> use_maximum_z -LimitScaleConstraint.use_minimum_x -> use_minimum_x -LimitScaleConstraint.use_minimum_y -> use_minimum_y -LimitScaleConstraint.use_minimum_z -> use_minimum_z +LimitScaleConstraint.use_maximum_x -> use_x_max +LimitScaleConstraint.use_maximum_y -> use_y_max +LimitScaleConstraint.use_maximum_z -> use_z_max +LimitScaleConstraint.use_minimum_x -> use_x_min +LimitScaleConstraint.use_minimum_y -> use_y_min +LimitScaleConstraint.use_minimum_z -> use_z_min Main.debug -> show_debug @@ -926,7 +938,7 @@ ParticleSystem.vertex_group_velocity_negate -> invert_vertex_group_velocity * ParticleTarget.valid -> valid -PivotConstraint.use_relative_position -> use_relative_position +PivotConstraint.use_relative_position -> use_relative_location PointCache.baked -> is_baked @@ -1233,8 +1245,8 @@ ShaderNodeExtendedMaterial.invert_normal -> invert_normal ShaderNodeExtendedMaterial.specular -> use_specular -ShaderNodeMapping.clamp_maximum -> use_clamp_to_maximum -ShaderNodeMapping.clamp_minimum -> use_clamp_to_minimum +ShaderNodeMapping.clamp_maximum -> use_clamp_to_max +ShaderNodeMapping.clamp_minimum -> use_clamp_to_min ShaderNodeMaterial.diffuse -> use_diffuse @@ -1433,7 +1445,7 @@ SpaceView3D.outline_selected -> show_outline_selected SpaceView3D.pivot_point_align -> use_pivot_point_align SpaceView3D.relationship_lines -> show_relationship_lines SpaceView3D.textured_solid -> show_textured_solid -* SpaceView3D.used_layers -> used_layers +* SpaceView3D.used_layers -> layers_used SpeedControlSequence.curve_compress_y -> use_curve_compress_y @@ -1490,8 +1502,8 @@ SurfaceCurve.map_along_length -> use_map_along_length SurfaceCurve.vertex_normal_flip -> use_vertex_normal_flip -TexMapping.has_maximum -> use_clip_to_maximum -TexMapping.has_minimum -> use_clip_to_minimum +TexMapping.has_maximum -> use_clip_to_max +TexMapping.has_minimum -> use_clip_to_min Text.dirty -> is_dirty From 5fce637c7f6230eddd8a266e5ab97856e98f3550 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 28 Jun 2010 12:41:16 +0000 Subject: [PATCH 227/674] rna renaming: some simple consistency tweaks --- source/blender/makesrna/rna_api_cleanup.txt | 40 ++++++++++----------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/source/blender/makesrna/rna_api_cleanup.txt b/source/blender/makesrna/rna_api_cleanup.txt index b7723062dbc..b8bc5e8abeb 100644 --- a/source/blender/makesrna/rna_api_cleanup.txt +++ b/source/blender/makesrna/rna_api_cleanup.txt @@ -15,7 +15,7 @@ Camera.panorama -> use_panorama # booleans ActionActuator.continue_last_frame -> continue_last_frame ActionGroup.expanded -> show_expanded -ActionGroup.locked -> use_lock +ActionGroup.locked -> lock ActionGroup.selected -> select Actuator.expanded -> show_expanded AnimData.nla_enabled -> use_nla @@ -59,8 +59,8 @@ BackgroundImage.show_expanded -> show_expanded BevelModifier.only_vertices -> useonly_vertex BezierSplinePoint.hidden -> hide BezierSplinePoint.selected_control_point -> select_control_point -BezierSplinePoint.selected_handle1 -> select_handle_before -BezierSplinePoint.selected_handle2 -> select_handle_after +BezierSplinePoint.selected_handle1 -> select_left_handle +BezierSplinePoint.selected_handle2 -> select_right_handle BoidRule.in_air -> use_in_air BoidRule.on_land -> use_on_land BoidRuleAvoid.predict -> use_predict @@ -236,7 +236,7 @@ EditBone.hinge -> use_hinge EditBone.inherit_scale -> use_inherit_scale EditBone.layer -> layer EditBone.local_location -> use_local_location -EditBone.locked -> use_lock +EditBone.locked -> lock EditBone.multiply_vertexgroup_with_envelope -> use_envelope_multiply EditBone.restrict_select -> restrict_select EditBone.selected -> select @@ -275,7 +275,7 @@ ExplodeModifier.split_edges -> use_edge_split ExplodeModifier.unborn -> show_unborn FCurve.auto_clamped_handles -> use_auto_handle_clamp *negate* FCurve.disabled -> enabled -FCurve.locked -> use_lock +FCurve.locked -> lock FCurve.muted -> use_mute FCurve.selected -> select *negate* FCurve.visible -> hide @@ -335,7 +335,7 @@ GPencilFrame.selected -> select GPencilLayer.active -> active GPencilLayer.frame_lock -> lock_frame GPencilLayer.hide -> hide -GPencilLayer.locked -> use_lock +GPencilLayer.locked -> lock GPencilLayer.selected -> select GPencilLayer.show_points -> show_points GPencilLayer.use_onion_skinning -> use_onion_skin @@ -435,7 +435,7 @@ KeyMap.children_expanded -> show_expanded_children KeyMap.items_expanded -> show_expanded_items * would use is_ * KeyMap.modal -> modal KeyMap.user_defined -> use_user_defined -KeyMapItem.active -> use_active +KeyMapItem.active -> active * would use is_pressed * KeyMapItem.alt -> alt * would use is_pressed * KeyMapItem.any -> any * would use is_pressed * KeyMapItem.ctrl -> ctrl @@ -447,9 +447,9 @@ KeyMapItem.expanded -> show_expanded * KeyboardSensor.all_keys -> all_keys -* would use is_ * Keyframe.selected -> selected -* would use is_ * Keyframe.selected_handle1 -> selected_handle1 -* would use is_ * Keyframe.selected_handle2 -> selected_handle2 +* would use is_ * Keyframe.selected -> select +* would use is_ * Keyframe.selected_handle1 -> select_left_handle +* would use is_ * Keyframe.selected_handle2 -> select_right_handle KeyingSet.absolute -> use_absolute @@ -623,8 +623,8 @@ Mesh.use_paint_mask -> use_paint_mask Mesh.vertex_normal_flip -> use_vertex_normal_flip -MeshColorLayer.active -> use_active -MeshColorLayer.active_render -> use_active_render +MeshColorLayer.active -> active +MeshColorLayer.active_render -> active_render MeshDeformModifier.dynamic -> dynamic @@ -641,7 +641,7 @@ MeshEdge.sharp -> use_sharp * would use is_ * MeshFace.hidden -> hide -* would use is_ * MeshFace.selected -> selected +* would use is_ * MeshFace.selected -> select * would use is_ * MeshFace.smooth -> smooth @@ -657,8 +657,8 @@ MeshTextureFace.shared -> use_blend_shared MeshTextureFace.tex -> use_render_texture MeshTextureFace.text -> use_bitmap_text MeshTextureFace.twoside -> use_twoside -MeshTextureFace.uv_pinned -> use_uv_pinned -MeshTextureFace.uv_selected -> use_uv_select +MeshTextureFace.uv_pinned -> uv_pin +MeshTextureFace.uv_selected -> uv_select * MeshTextureFaceLayer.active -> active * MeshTextureFaceLayer.active_clone -> active_clone * MeshTextureFaceLayer.active_render -> active_render @@ -817,7 +817,7 @@ ObjectActuator.local_torque -> use_local_torque * ObjectBase.selected_user -> is_select_user -* could be is_ * ObstacleFluidSettings.active -> use_active +* could be is_ * ObstacleFluidSettings.active -> active ObstacleFluidSettings.export_animated_mesh -> use_export_animated_mesh @@ -825,7 +825,7 @@ ObstacleFluidSettings.export_animated_mesh -> use_export_animated_mesh OperatorStrokeElement.flip -> use_flip -OutflowFluidSettings.active -> use_active +OutflowFluidSettings.active -> active OutflowFluidSettings.export_animated_mesh -> use_export_animated_mesh @@ -1227,10 +1227,10 @@ Sensor.tap -> use_tap * Sequence.frame_locked -> frame_locked -* Sequence.left_handle_selected -> left_handle_select +* Sequence.left_handle_selected -> select_left_handle * Sequence.lock -> lock * Sequence.mute -> mute -* Sequence.right_handle_selected -> right_handle_select +* Sequence.right_handle_selected -> select_right_handle * Sequence.selected -> select * Sequence.use_effect_default_fade -> use_effect_default_fade @@ -1701,4 +1701,4 @@ WorldStarsSettings.use_stars -> use_stars WorldTextureSlot.map_blend -> use_map_blend WorldTextureSlot.map_horizon -> use_map_horizon WorldTextureSlot.map_zenith_down -> use_map_zenith_down -WorldTextureSlot.map_zenith_up -> use_map_zenith_up \ No newline at end of file +WorldTextureSlot.map_zenith_up -> use_map_zenith_up From abf095e975dab059f4dd51de5ab818492bf829b3 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 28 Jun 2010 12:42:42 +0000 Subject: [PATCH 228/674] rna renaming: showonly/useonly to show_only/use_only --- source/blender/makesrna/rna_api_cleanup.txt | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/source/blender/makesrna/rna_api_cleanup.txt b/source/blender/makesrna/rna_api_cleanup.txt index b8bc5e8abeb..83f16e37f0b 100644 --- a/source/blender/makesrna/rna_api_cleanup.txt +++ b/source/blender/makesrna/rna_api_cleanup.txt @@ -23,12 +23,12 @@ AnimVizMotionPaths.highlight_keyframes -> show_keyframe_highlight AnimVizMotionPaths.search_all_action_keyframes -> use_keyframe_action_all AnimVizMotionPaths.show_frame_numbers -> show_frame_numbers AnimVizMotionPaths.show_keyframe_numbers -> show_keyframe_numbers -AnimVizOnionSkinning.only_selected -> showonly_selected +AnimVizOnionSkinning.only_selected -> show_only_selected Area.show_menus -> show_menus AreaLamp.dither -> use_dither AreaLamp.jitter -> use_jitter -AreaLamp.only_shadow -> useonly_shadow -AreaLamp.shadow_layer -> useonly_shadow_layer +AreaLamp.only_shadow -> use_only_shadow +AreaLamp.shadow_layer -> use_only_shadow_layer AreaLamp.umbra -> use_umbra Armature.auto_ik -> use_auto_ik Armature.deform_bbone_rest -> use_deform_b_bone_rest @@ -40,7 +40,7 @@ Armature.draw_axes -> show_axes Armature.draw_custom_bone_shapes -> show_bone_custom Armature.draw_group_colors -> show_group_colors Armature.draw_names -> show_names -Armature.ghost_only_selected -> showonly_ghost_selected +Armature.ghost_only_selected -> show_only_ghost_selected Armature.layer -> layer Armature.layer_protection -> layer_protect Armature.x_axis_mirror -> use_mirror_x @@ -56,7 +56,7 @@ ArrayModifier.merge_adjacent_vertices -> use_merge_vertex ArrayModifier.merge_end_vertices -> use_merge_vertex_end ArrayModifier.relative_offset -> use_relative_offset BackgroundImage.show_expanded -> show_expanded -BevelModifier.only_vertices -> useonly_vertex +BevelModifier.only_vertices -> use_only_vertex BezierSplinePoint.hidden -> hide BezierSplinePoint.selected_control_point -> select_control_point BezierSplinePoint.selected_handle1 -> select_left_handle @@ -220,8 +220,8 @@ DopeSheet.display_texture -> show_texture DopeSheet.display_transforms -> show_transforms DopeSheet.display_world -> show_world DopeSheet.include_missing_nla -> show_missing_nla -DopeSheet.only_group_objects -> showonly_group_objects -DopeSheet.only_selected -> showonly_selected +DopeSheet.only_group_objects -> show_only_group_objects +DopeSheet.only_selected -> show_only_selected Driver.invalid -> is_valid Driver.show_debug_info -> show_debug_info DriverTarget.use_local_space_transforms -> use_local_space_transform @@ -369,7 +369,7 @@ GameSoftBodySettings.bending_const -> use_bending_constraint GameSoftBodySettings.cluster_rigid_to_softbody -> use_cluster_rigid_to_softbody GameSoftBodySettings.cluster_soft_to_softbody -> use_cluster_soft_to_softbody GameSoftBodySettings.shape_match -> use_shape_match -GlowSequence.only_boost -> useonly_boost +GlowSequence.only_boost -> use_only_boost GreasePencil.use_stroke_endpoints -> use_stroke_endpoints Group.layer -> layer ID.fake_user -> use_fake_user @@ -1558,7 +1558,7 @@ ToolSettings.snap_align_rotation -> use_snap_align_rotation ToolSettings.snap_peel_object -> use_snap_peel_object ToolSettings.snap_project -> use_snap_project ToolSettings.use_auto_keying -> use_keyframe_insert_auto -* ToolSettings.uv_local_view -> showonly_uv_local_view +* ToolSettings.uv_local_view -> show_only_uv_local_view ToolSettings.uv_sync_selection -> use_uv_sync_selection @@ -1614,7 +1614,7 @@ UserPreferencesEdit.use_visual_keying -> show_visual_keying UserPreferencesFilePaths.auto_save_temporary_files -> use_auto_save_temporary_files UserPreferencesFilePaths.compress_file -> use_file_compression -UserPreferencesFilePaths.filter_file_extensions -> showonly_file_extensions +UserPreferencesFilePaths.filter_file_extensions -> show_only_file_extensions UserPreferencesFilePaths.hide_dot_files_datablocks -> show_dot_files_datablocks UserPreferencesFilePaths.load_ui -> use_load_ui UserPreferencesFilePaths.save_preview_images -> use_save_preview_images From b082401e88dcca4a511f1064af8db66470c3d9c9 Mon Sep 17 00:00:00 2001 From: Luca Bonavita Date: Mon, 28 Jun 2010 15:29:18 +0000 Subject: [PATCH 229/674] == rna cleanup script == - new folder rna_cleanup/ - moved na_api_cleanup.txt in rna_cleanup/ - rna_cleaner.py is a script to help cleaning rna names, pasting the help below for those interested Basically after you run this on a original file, the script produces 2 file .txt and .py that you can edit. You can skip to edit things liek "changed" or "same" or check if the "to" field is correct or not. When you re-run this script it will check these thigns and will produce a consistent output file again. Also, you can sort lines at will. $ ./rna_cleaner.py -h HELP: Run this script to re-format the edits you make in the input file. Do quick modification to important fields like 'to' and don't care about fields like 'changed' or 'description' and save. The script outputs 3 files: 1) *_clean.txt: is formatted same as the .txt input, can be edited by user. 2) *_clean.py: is formatted same as the .py input, can be edited by user. 3) rna_api.py is not formatted for readability and go under complete check. Can be used for rna cleanup. USAGE: ./rna_cleaner.py input-file (.txt|.py) order-priority (note|changed|class|from|to|kw). ./rna_cleaner.py -h for help --- .../{ => rna_cleanup}/rna_api_cleanup.txt | 0 .../makesrna/rna_cleanup/rna_booleans.txt | 1387 +++++++++++++++++ .../makesrna/rna_cleanup/rna_cleaner.py | 269 ++++ 3 files changed, 1656 insertions(+) rename source/blender/makesrna/{ => rna_cleanup}/rna_api_cleanup.txt (100%) create mode 100644 source/blender/makesrna/rna_cleanup/rna_booleans.txt create mode 100755 source/blender/makesrna/rna_cleanup/rna_cleaner.py diff --git a/source/blender/makesrna/rna_api_cleanup.txt b/source/blender/makesrna/rna_cleanup/rna_api_cleanup.txt similarity index 100% rename from source/blender/makesrna/rna_api_cleanup.txt rename to source/blender/makesrna/rna_cleanup/rna_api_cleanup.txt diff --git a/source/blender/makesrna/rna_cleanup/rna_booleans.txt b/source/blender/makesrna/rna_cleanup/rna_booleans.txt new file mode 100644 index 00000000000..81530b5764e --- /dev/null +++ b/source/blender/makesrna/rna_cleanup/rna_booleans.txt @@ -0,0 +1,1387 @@ +ActionActuator.continue_last_frame -> continue_last_frame: boolean Restore last frame when switching on/off, otherwise play from the start each time +ActionGroup.expanded -> show_expanded: boolean Action Group is expanded +ActionGroup.locked -> use_lock: boolean Action Group is locked +ActionGroup.selected -> selected: boolean Action Group is selected +Actuator.expanded -> show_expanded: boolean Set actuator expanded in the user interface +AnimData.nla_enabled -> use_nla: boolean NLA stack is evaluated when evaluating this block +AnimVizMotionPaths.highlight_keyframes -> show_keyframe_highlight: boolean Emphasize position of keyframes on Motion Paths +AnimVizMotionPaths.search_all_action_keyframes -> use_keyframe_action_all: boolean For bone motion paths, search whole Action for keyframes instead of in group with matching name only (is slower) +AnimVizMotionPaths.show_frame_numbers -> show_frame_numbers: boolean Show frame numbers on Motion Paths +AnimVizMotionPaths.show_keyframe_numbers -> show_keyframe_numbers: boolean Show frame numbers of Keyframes on Motion Paths +AnimVizOnionSkinning.only_selected -> showonly_selected: boolean For Pose-Mode drawing, only draw ghosts for selected bones +Area.show_menus -> show_menus: boolean Show menus in the header +AreaLamp.dither -> use_dither: boolean Use 2x2 dithering for sampling (Constant Jittered sampling) +AreaLamp.jitter -> use_jitter: boolean Use noise for sampling (Constant Jittered sampling) +AreaLamp.only_shadow -> useonly_shadow: boolean Causes light to cast shadows only without illuminating objects +AreaLamp.shadow_layer -> useonly_shadow_layer: boolean Causes only objects on the same layer to cast shadows +AreaLamp.umbra -> use_umbra: boolean Emphasize parts that are fully shadowed (Constant Jittered sampling) +Armature.auto_ik -> use_auto_ik: boolean Add temporaral IK constraints while grabbing bones in Pose Mode +Armature.deform_bbone_rest -> use_deform_b_bone_rest: boolean Make B-Bones deform already in Rest Position +Armature.deform_envelope -> use_deform_envelope: boolean Enable Bone Envelopes when defining deform +Armature.deform_quaternion -> use_deform_quaternion: boolean Enable deform rotation with Quaternions +Armature.deform_vertexgroups -> use_deform_vertexgroups: boolean Enable Vertex Groups when defining deform +Armature.delay_deform -> use_deform_delay: boolean Don't deform children when manipulating bones in Pose Mode +Armature.draw_axes -> show_axes: boolean Draw bone axes +Armature.draw_custom_bone_shapes -> show_bone_custom: boolean Draw bones with their custom shapes +Armature.draw_group_colors -> show_group_colors: boolean Draw bone group colors +Armature.draw_names -> show_names: boolean Draw bone names +Armature.ghost_only_selected -> showonly_ghost_selected: boolean +Armature.layer -> layer: boolean Armature layer visibility +Armature.layer_protection -> layer_protection: boolean Protected layers in Proxy Instances are restored to Proxy settings on file reload and undo +Armature.x_axis_mirror -> use_mirror_x: boolean Apply changes to matching bone on opposite side of X-Axis +ArmatureModifier.b_bone_rest -> use_b_bone_rest: boolean Make B-Bones deform already in rest position +ArmatureModifier.invert -> use_vertex_group_invert: boolean Invert vertex group influence +ArmatureModifier.multi_modifier -> use_multi_modifier: boolean Use same input as previous modifier, and mix results using overall vgroup +ArmatureModifier.quaternion -> use_preserve_volume: boolean Deform rotation interpolation with quaternions +ArmatureModifier.use_bone_envelopes -> use_bone_envelopes: boolean +ArmatureModifier.use_vertex_groups -> use_vertex_groups: boolean +ArrayModifier.add_offset_object -> use_object_offset: boolean Add another object's transformation to the total offset +ArrayModifier.constant_offset -> use_constant_offset: boolean Add a constant offset +ArrayModifier.merge_adjacent_vertices -> use_merge_vertex: boolean Merge vertices in adjacent duplicates +ArrayModifier.merge_end_vertices -> use_merge_vertex_end: boolean Merge vertices in first and last duplicates +ArrayModifier.relative_offset -> use_relative_offset: boolean Add an offset relative to the object's bounding box +BackgroundImage.show_expanded -> show_expanded: boolean Show the expanded in the user interface +BevelModifier.only_vertices -> useonly_vertex: boolean Bevel verts/corners, not edges +BezierSplinePoint.hidden -> hidden: boolean Visibility status +BezierSplinePoint.selected_control_point -> selected_control_point: boolean Control point selection status +BezierSplinePoint.selected_handle1 -> selected_handle1: boolean Handle 1 selection status +BezierSplinePoint.selected_handle2 -> selected_handle2: boolean Handle 2 selection status +BoidRule.in_air -> use_air: boolean Use rule when boid is flying +BoidRule.on_land -> use_land: boolean Use rule when boid is on land +BoidRuleAvoid.predict -> use_predict: boolean Predict target movement +BoidRuleAvoidCollision.boids -> use_avoid: boolean Avoid collision with other boids +BoidRuleAvoidCollision.deflectors -> use_deflect: boolean Avoid collision with deflector objects +BoidRuleFollowLeader.line -> use_line: boolean Follow leader in a line +BoidRuleGoal.predict -> use_predict: boolean Predict target movement +BoidSettings.allow_climb -> use_climb: boolean Allow boids to climb goal objects +BoidSettings.allow_flight -> use_flight: boolean Allow boids to move in air +BoidSettings.allow_land -> use_land: boolean Allow boids to move on land +Bone.connected -> is_connected: boolean, (read-only) When bone has a parent, bone's head is struck to the parent's tail +Bone.cyclic_offset -> use_cyclic_offset: boolean When bone doesn't have a parent, it receives cyclic offset effects +Bone.deform -> use_deform: boolean Bone does not deform any geometry +Bone.draw_wire -> show_wire: boolean Bone is always drawn as Wireframe regardless of viewport draw mode. Useful for non-obstructive custom bone shapes +Bone.hidden -> hidden: boolean Bone is not visible when it is not in Edit Mode (i.e. in Object or Pose Modes) +Bone.hinge -> use_hinge: boolean Bone inherits rotation or scale from parent bone +Bone.inherit_scale -> use_inherit_scale: boolean Bone inherits scaling from parent bone +Bone.layer -> layer: boolean Layers bone exists in +Bone.local_location -> use_local_location: boolean Bone location is set in local space +Bone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean When deforming bone, multiply effects of Vertex Group weights with Envelope influence +TODO * Bone.restrict_select -> restrict_select: boolean Bone is able to be selected +Bone.selected -> selected: boolean +BooleanProperty.default -> default: boolean, (read-only) Default value for this number +BooleanProperty.default_array -> default_array: boolean, (read-only) Default value for this array +Brush.use_accumulate -> use_accumulate: boolean Accumulate stroke dabs on top of each other +Brush.use_airbrush -> use_airbrush: boolean Keep applying paint effect while holding mouse (spray) +Brush.use_alpha -> use_alpha: boolean When this is disabled, lock alpha while painting +Brush.use_anchor -> use_anchor: boolean Keep the brush anchored to the initial location +Brush.use_jitter_pressure -> use_jitter_pressure: boolean Enable tablet pressure sensitivity for jitter +Brush.use_persistent -> use_persistent: boolean Sculpts on a persistent layer of the mesh +Brush.use_rake -> use_rake: boolean Rotate the brush texture to match the stroke direction +Brush.use_size_pressure -> use_size_pressure: boolean Enable tablet pressure sensitivity for size +Brush.use_smooth_stroke -> use_smooth_stroke: boolean Brush lags behind mouse and follows a smoother path +Brush.use_space -> use_space: boolean Limit brush application to the distance specified by spacing +Brush.use_spacing_pressure -> use_spacing_pressure: boolean Enable tablet pressure sensitivity for spacing +Brush.use_strength_pressure -> use_strength_pressure: boolean Enable tablet pressure sensitivity for strength +Brush.use_wrap -> use_wrap: boolean Enable torus wrapping while painting +BuildModifier.randomize -> use_random: boolean Randomize the faces or edges during build +Camera.panorama -> use_panorama: boolean Render the scene with a cylindrical camera for pseudo-fisheye lens effects +Camera.show_limits -> show_limits: boolean Draw the clipping range and focus point on the camera +Camera.show_mist -> show_mist: boolean Draw a line from the Camera to indicate the mist area +Camera.show_name -> show_name: boolean Show the active Camera's name in Camera view +Camera.show_passepartout -> show_passepartout: boolean Show a darkened overlay outside the image area in Camera view +Camera.show_title_safe -> show_title_safe: boolean Show indicators for the title safe zone in Camera view +CastModifier.from_radius -> use_radius_as_size: boolean Use radius as size of projection shape (0 = auto) +CastModifier.use_transform -> use_transform: boolean Use object transform to control projection shape +CastModifier.x -> use_x: boolean +CastModifier.y -> use_y: boolean +CastModifier.z -> use_z: boolean +ChildOfConstraint.use_location_x -> use_location_x: boolean Use X Location of Parent +ChildOfConstraint.use_location_y -> use_location_y: boolean Use Y Location of Parent +ChildOfConstraint.use_location_z -> use_location_z: boolean Use Z Location of Parent +ChildOfConstraint.use_rotation_x -> use_rotation_x: boolean Use X Rotation of Parent +ChildOfConstraint.use_rotation_y -> use_rotation_y: boolean Use Y Rotation of Parent +ChildOfConstraint.use_rotation_z -> use_rotation_z: boolean Use Z Rotation of Parent +ChildOfConstraint.use_scale_x -> use_scale_x: boolean Use X Scale of Parent +ChildOfConstraint.use_scale_y -> use_scale_y: boolean Use Y Scale of Parent +ChildOfConstraint.use_scale_z -> use_scale_z: boolean Use Z Scale of Parent +ClampToConstraint.cyclic -> use_cyclic: boolean Treat curve as cyclic curve (no clamping to curve bounding box +ClothCollisionSettings.enable_collision -> use_collision: boolean Enable collisions with other objects +ClothCollisionSettings.enable_self_collision -> use_self_collision: boolean Enable self collisions +ClothSettings.pin_cloth -> use_pin_cloth: boolean Enable pinning of cloth vertices to other objects/positions +ClothSettings.stiffness_scaling -> use_stiffness_scaling: boolean If enabled, stiffness can be scaled along a weight painted vertex group +TODO * CollisionSensor.collision_type -> collision_type: boolean Toggle collision on material or property +CollisionSensor.pulse -> use_pulse: boolean Changes to the set of colliding objects generates pulse +CollisionSettings.enabled -> use_collision: boolean Enable this objects as a collider for physics systems +CollisionSettings.kill_particles -> use_particle_kill: boolean Kill collided particles +CompositorNodeAlphaOver.convert_premul -> use_convert_premultiply: boolean +CompositorNodeBlur.bokeh -> use_bokeh: boolean +CompositorNodeBlur.gamma -> use_gamma: boolean +CompositorNodeBlur.relative -> use_relative: boolean +CompositorNodeColorSpill.unspill -> use_unspill: boolean Compensate all channels (diffenrently) by hand +CompositorNodeCrop.crop_size -> use_crop_size: boolean Whether to crop the size of the input image +CompositorNodeDBlur.wrap -> use_wrap: boolean +CompositorNodeDefocus.gamma_correction -> use_gamma_correct: boolean Enable gamma correction before and after main process +CompositorNodeDefocus.preview -> use_preview: boolean Enable sampling mode, useful for preview when using low samplecounts +CompositorNodeDefocus.use_zbuffer -> use_zbuffer: boolean Disable when using an image as input instead of actual zbuffer (auto enabled if node not image based, eg. time node) +CompositorNodeGlare.rotate_45 -> use_rotate_45: boolean Simple star filter: add 45 degree rotation offset +CompositorNodeImage.auto_refresh -> use_auto_refresh: boolean +CompositorNodeImage.cyclic -> use_cyclic: boolean +CompositorNodeInvert.alpha -> use_alpha: boolean +CompositorNodeInvert.rgb -> use_rgb: boolean +CompositorNodeLensdist.fit -> use_fit: boolean For positive distortion factor only: scale image such that black areas are not visible +CompositorNodeLensdist.jitter -> use_jitter: boolean Enable/disable jittering; faster, but also noisier +CompositorNodeLensdist.projector -> use_projector: boolean Enable/disable projector mode. Effect is applied in horizontal direction only +CompositorNodeMapValue.use_max -> use_max: boolean +CompositorNodeMapValue.use_min -> use_min: boolean +CompositorNodeMixRGB.alpha -> use_alpha: boolean Include alpha of second input in this operation +CompositorNodeOutputFile.exr_half -> use_exr_half: boolean +CompositorNodeVecBlur.curved -> use_curve: boolean Interpolate between frames in a bezier curve, rather than linearly +TODO * Constraint.active -> active: boolean Constraint is the one being edited +Constraint.disabled -> is_valid: boolean, (read-only) Constraint has invalid settings and will not be evaluated +Constraint.expanded -> show_expanded: boolean Constraint's panel is expanded in UI +Constraint.proxy_local -> proxy_local: boolean Constraint was added in this proxy instance (i.e. did not belong to source Armature) +ConstraintActuator.detect_material -> use_material_detect: boolean Detect material instead of property +ConstraintActuator.fh_normal -> use_fh_normal: boolean Add a horizontal spring force on slopes +ConstraintActuator.fh_paralel_axis -> use_fh_paralel_axis: boolean Keep object axis parallel to normal +ConstraintActuator.force_distance -> use_force_distance: boolean Force distance of object to point of impact of ray +ConstraintActuator.local -> use_local: boolean Set ray along object's axis or global axis +ConstraintActuator.normal -> use_normal: boolean Set object axis along (local axis) or parallel (global axis) to the normal at hit position +ConstraintActuator.persistent -> use_persistent: boolean Persistent actuator: stays active even if ray does not reach target +ControlFluidSettings.active -> active: boolean Object contributes to the fluid simulation +ControlFluidSettings.reverse_frames -> use_frame_reverse: boolean Reverse control object movement +Controller.expanded -> show_expanded: boolean Set controller expanded in the user interface +Controller.priority -> use_priority: boolean Mark controller for execution before all non-marked controllers (good for startup scripts) +Controller.state -> state: boolean, (read-only) Set Controller state index (1 to 30) +CopyLocationConstraint.invert_x -> invert_x: boolean Invert the X location +CopyLocationConstraint.invert_y -> invert_y: boolean Invert the Y location +CopyLocationConstraint.invert_z -> invert_z: boolean Invert the Z location +CopyLocationConstraint.use_offset -> use_offset: boolean Add original location into copied location +CopyLocationConstraint.use_x -> use_x: boolean Copy the target's X location +CopyLocationConstraint.use_y -> use_y: boolean Copy the target's Y location +CopyLocationConstraint.use_z -> use_z: boolean Copy the target's Z location +CopyRotationConstraint.invert_x -> invert_x: boolean Invert the X rotation +CopyRotationConstraint.invert_y -> invert_y: boolean Invert the Y rotation +CopyRotationConstraint.invert_z -> invert_z: boolean Invert the Z rotation +CopyRotationConstraint.use_offset -> use_offset: boolean Add original rotation into copied rotation +CopyRotationConstraint.use_x -> use_x: boolean Copy the target's X rotation +CopyRotationConstraint.use_y -> use_y: boolean Copy the target's Y rotation +CopyRotationConstraint.use_z -> use_z: boolean Copy the target's Z rotation +CopyScaleConstraint.use_offset -> use_offset: boolean Add original scale into copied scale +CopyScaleConstraint.use_x -> use_x: boolean Copy the target's X scale +CopyScaleConstraint.use_y -> use_y: boolean Copy the target's Y scale +CopyScaleConstraint.use_z -> use_z: boolean Copy the target's Z scale +Curve.auto_texspace -> use_auto_texspace: boolean Adjusts active object's texture space automatically when transforming object +Curve.back -> use_fill_back: boolean Draw filled back for extruded/beveled curves +Curve.draw_handles -> show_handles: boolean Display bezier handles in editmode +Curve.draw_normals -> show_normals: boolean Display 3D curve normals in editmode +Curve.front -> use_fill_front: boolean Draw filled front for extruded/beveled curves +Curve.map_along_length -> use_texture_map_length: boolean Generate texture mapping coordinates following the curve direction, rather than the local bounding box +Curve.use_deform_fill -> use_fill_deform: boolean Fill curve after applying deformation +Curve.use_path -> use_path: boolean Enable the curve to become a translation path +Curve.use_path_follow -> use_path_follow: boolean Make curve path children to rotate along the path +Curve.use_radius -> use_radius: boolean Option for paths: apply the curve radius with path following it and deforming +Curve.use_stretch -> use_stretch: boolean Option for curve-deform: makes deformed child to stretch along entire path +Curve.use_time_offset -> use_time_offset: boolean Children will use TimeOffs value as path distance offset +CurveMapPoint.selected -> selected: boolean Selection state of the curve point +CurveMapping.clip -> use_clip: boolean Force the curve view to fit a defined boundary +DelaySensor.repeat -> use_repeat: boolean Toggle repeat option. If selected, the sensor restarts after Delay+Dur logic tics +DomainFluidSettings.generate_speed_vectors -> use_speed_vectors: boolean Generate speed vectors for vector blur +DomainFluidSettings.override_time -> use_time_override: boolean Use a custom start and end time (in seconds) instead of the scene's timeline +DomainFluidSettings.reverse_frames -> use_frame_reverse: boolean Reverse fluid frames +NEGATE * DopeSheet.collapse_summary -> show_expanded_summary: boolean Collapse summary when shown, so all other channels get hidden. (DopeSheet Editors Only) +DopeSheet.display_armature -> show_armature: boolean Include visualization of Armature related Animation data +DopeSheet.display_camera -> show_camera: boolean Include visualization of Camera related Animation data +DopeSheet.display_curve -> show_curve: boolean Include visualization of Curve related Animation data +DopeSheet.display_lamp -> show_lamp: boolean Include visualization of Lamp related Animation data +DopeSheet.display_material -> show_material: boolean Include visualization of Material related Animation data +DopeSheet.display_mesh -> show_mesh: boolean Include visualization of Mesh related Animation data +DopeSheet.display_metaball -> show_metaball: boolean Include visualization of Metaball related Animation data +DopeSheet.display_node -> show_node: boolean Include visualization of Node related Animation data +DopeSheet.display_particle -> show_particle: boolean Include visualization of Particle related Animation data +DopeSheet.display_scene -> show_scene: boolean Include visualization of Scene related Animation data +DopeSheet.display_shapekeys -> show_shapekeys: boolean Include visualization of ShapeKey related Animation data +DopeSheet.display_summary -> show_summary: boolean Display an additional 'summary' line. (DopeSheet Editors only) +DopeSheet.display_texture -> show_texture: boolean Include visualization of Texture related Animation data +DopeSheet.display_transforms -> show_transforms: boolean Include visualization of Object-level Animation data (mostly Transforms) +DopeSheet.display_world -> show_world: boolean Include visualization of World related Animation data +DopeSheet.include_missing_nla -> show_missing_nla: boolean Include Animation Data blocks with no NLA data. (NLA Editor only) +DopeSheet.only_group_objects -> showonly_group_objects: boolean Only include channels from Objects in the specified Group +DopeSheet.only_selected -> showonly_selected: boolean Only include channels relating to selected objects and data +Driver.invalid -> is_valid: boolean Driver could not be evaluated in past, so should be skipped +Driver.show_debug_info -> show_debug_info: boolean Show intermediate values for the driver calculations to allow debugging of drivers +DriverTarget.use_local_space_transforms -> use_local_space_transform: boolean Use transforms in Local Space (as opposed to the worldspace default) +EdgeSplitModifier.use_edge_angle -> use_edge_angle: boolean Split edges with high angle between faces +EdgeSplitModifier.use_sharp -> use_edge_sharp: boolean Split edges that are marked as sharp +EditBone.connected -> is_connected: boolean When bone has a parent, bone's head is struck to the parent's tail +EditBone.cyclic_offset -> use_cyclic_offset: boolean When bone doesn't have a parent, it receives cyclic offset effects +EditBone.deform -> use_deform: boolean Bone does not deform any geometry +EditBone.draw_wire -> show_wire: boolean Bone is always drawn as Wireframe regardless of viewport draw mode. Useful for non-obstructive custom bone shapes +EditBone.hidden -> hidden: boolean Bone is not visible when in Edit Mode +EditBone.hinge -> use_hinge: boolean Bone inherits rotation or scale from parent bone +EditBone.inherit_scale -> use_inherit_scale: boolean Bone inherits scaling from parent bone +EditBone.layer -> layer: boolean Layers bone exists in +EditBone.local_location -> use_local_location: boolean Bone location is set in local space +EditBone.locked -> use_lock: boolean Bone is not able to be transformed when in Edit Mode +EditBone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean When deforming bone, multiply effects of Vertex Group weights with Envelope influence +EditBone.restrict_select -> restrict_select: boolean Bone is able to be selected +EditBone.selected -> selected: boolean +EditBone.selected_head -> selected_head: boolean +EditBone.selected_tail -> selected_tail: boolean +EditObjectActuator.enable_3d_tracking -> use_tracking_3d: boolean Enable 3D tracking +EditObjectActuator.local_angular_velocity -> use_local_angular_velocity: boolean Apply the rotation locally +EditObjectActuator.local_linear_velocity -> use_local_linear_velocity: boolean Apply the transformation locally +EditObjectActuator.replace_display_mesh -> use_display_mesh: boolean Replace the display mesh +EditObjectActuator.replace_physics_mesh -> use_physics_mesh: boolean Replace the physics mesh (triangle bounds only - compound shapes not supported) +EffectSequence.convert_float -> use_float: boolean Convert input to float data +EffectSequence.de_interlace -> use_de_interlace: boolean For video movies to remove fields +EffectSequence.flip_x -> use_flip_x: boolean Flip on the X axis +EffectSequence.flip_y -> use_flip_y: boolean Flip on the Y axis +EffectSequence.premultiply -> use_premultiply: boolean Convert RGB from key alpha to premultiplied alpha +EffectSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean Use a custom directory to store data +EffectSequence.proxy_custom_file -> use_proxy_custom_file: boolean Use a custom file to read proxy data from +EffectSequence.reverse_frames -> use_frame_reverse: boolean Reverse frame order +EffectSequence.use_color_balance -> use_color_balance: boolean (3-Way color correction) on input +EffectSequence.use_crop -> use_crop: boolean Crop image before processing +EffectSequence.use_proxy -> use_proxy: boolean Use a preview proxy for this strip +EffectSequence.use_translation -> use_translation: boolean Translate image before processing +EffectorWeights.do_growing_hair -> use_hair_grow: boolean Use force fields when growing hair +EnvironmentMap.ignore_layers -> layer_ignore: boolean Hide objects on these layers when generating the Environment Map +EnvironmentMapTexture.use_filter_size_min -> filter_size_minimum: boolean Use Filter Size as a minimal filter value in pixels +EnvironmentMapTexture.mipmap -> use_mipmap: boolean Uses auto-generated MIP maps for the image +EnvironmentMapTexture.mipmap_gauss -> use_mipmap_gauss: boolean Uses Gauss filter to sample down MIP maps +Event.alt -> alt: boolean, (read-only) True when the Alt/Option key is held +Event.ctrl -> ctrl: boolean, (read-only) True when the Ctrl key is held +Event.oskey -> oskey: boolean, (read-only) True when the Cmd key is held +Event.shift -> shift: boolean, (read-only) True when the Shift key is held +ExplodeModifier.alive -> show_alive: boolean Show mesh when particles are alive +ExplodeModifier.dead -> show_dead: boolean Show mesh when particles are dead +ExplodeModifier.size -> use_size: boolean Use particle size for the shrapnel +ExplodeModifier.split_edges -> use_edge_split: boolean Split face edges for nicer shrapnel +ExplodeModifier.unborn -> show_unborn: boolean Show mesh when particles are unborn +FCurve.auto_clamped_handles -> use_auto_handle_clamp: boolean All auto-handles for F-Curve are clamped +NEGATE * FCurve.disabled -> enabled: boolean F-Curve could not be evaluated in past, so should be skipped when evaluating +FCurve.locked -> use_lock: boolean F-Curve's settings cannot be edited +FCurve.muted -> use_mute: boolean F-Curve is not evaluated +FCurve.selected -> selected: boolean F-Curve is selected for editing +NEGATE * FCurve.visible -> hidden: boolean F-Curve and its keyframes are shown in the Graph Editor graphs +FCurveSample.selected -> selected: boolean Selection status +FModifier.active -> active: boolean F-Curve Modifier is the one being edited +NEGATE * FModifier.disabled -> enabled: boolean, (read-only) F-Curve Modifier has invalid settings and will not be evaluated +FModifier.expanded -> show_expanded: boolean F-Curve Modifier's panel is expanded in UI +FModifier.muted -> use_mute: boolean F-Curve Modifier will not be evaluated +FModifierFunctionGenerator.additive -> use_additive: boolean Values generated by this modifier are applied on top of the existing values instead of overwriting them +FModifierGenerator.additive -> use_additive: boolean Values generated by this modifier are applied on top of the existing values instead of overwriting them +FModifierLimits.use_maximum_x -> use_x_max: boolean Use the maximum X value +FModifierLimits.use_maximum_y -> use_y_max: boolean Use the maximum Y value +FModifierLimits.use_minimum_x -> use_x_min: boolean Use the minimum X value +FModifierLimits.use_minimum_y -> use_y_min: boolean Use the minimum Y value +FModifierStepped.use_frame_end -> use_frame_end: boolean Restrict modifier to only act before its 'end' frame +FModifierStepped.use_frame_start -> use_frame_start: boolean Restrict modifier to only act after its 'start' frame +FcurveActuator.add -> use_additive: boolean F-Curve is added to the current loc/rot/scale in global or local coordinate according to Local flag +FcurveActuator.child -> use_child: boolean Update F-Curve on all children Objects as well +FcurveActuator.force -> use_force: boolean Apply F-Curve as a global or local force depending on the local option (dynamic objects only) +FcurveActuator.local -> use_local: boolean Let the F-Curve act in local coordinates, used in Force and Add mode +FieldSettings.do_absorption -> use_absorption: boolean Force gets absorbed by collision objects +FieldSettings.do_location -> use_location: boolean Effect particles' location +FieldSettings.do_rotation -> use_rotation: boolean Effect particles' dynamic rotation +FieldSettings.force_2d -> use_force_2d: boolean Apply force only in 2d +FieldSettings.global_coordinates -> use_coordinates_global: boolean Use effector/global coordinates for turbulence +FieldSettings.guide_path_add -> use_guide_path_add: boolean Based on distance/falloff it adds a portion of the entire path +FieldSettings.multiple_springs -> use_multiple_springs: boolean Every point is effected by multiple springs +FieldSettings.root_coordinates -> use_coordinates_root: boolean Texture coordinates from root particle locations +FieldSettings.use_coordinates -> use_coordinates_object: boolean Use object/global coordinates for texture +FieldSettings.use_guide_path_weight -> use_guide_path_weight: boolean Use curve weights to influence the particle influence along the curve +FieldSettings.use_max_distance -> use_distance_min: boolean Use a maximum distance for the field to work +FieldSettings.use_min_distance -> use_distance_max: boolean Use a minimum distance for the field's fall-off +FieldSettings.use_radial_max -> use_radial_max: boolean Use a maximum radial distance for the field to work +FieldSettings.use_radial_min -> use_radial_min: boolean Use a minimum radial distance for the field's fall-off +FileSelectParams.do_filter -> use_filter: boolean Enable filtering of files +FileSelectParams.filter_blender -> use_filter_blender: boolean Show .blend files +FileSelectParams.filter_folder -> use_filter_folder: boolean Show folders +FileSelectParams.filter_font -> use_filter_font: boolean Show font files +FileSelectParams.filter_image -> use_filter_image: boolean Show image files +FileSelectParams.filter_movie -> use_filter_movie: boolean Show movie files +FileSelectParams.filter_script -> use_filter_script: boolean Show script files +FileSelectParams.filter_sound -> use_filter_sound: boolean Show sound files +FileSelectParams.filter_text -> use_filter_text: boolean Show text files +FileSelectParams.hide_dot -> show_hidden: boolean Hide hidden dot files +Filter2DActuator.enable_motion_blur -> use_motion_blur: boolean Enable/Disable Motion Blur +FloorConstraint.sticky -> use_sticky: boolean Immobilize object while constrained +FloorConstraint.use_rotation -> use_rotation: boolean Use the target's rotation to determine floor +FluidFluidSettings.active -> active: boolean Object contributes to the fluid simulation +FluidFluidSettings.export_animated_mesh -> use_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it +FollowPathConstraint.use_curve_follow -> use_curve_follow: boolean Object will follow the heading and banking of the curve +FollowPathConstraint.use_curve_radius -> use_curve_radius: boolean Objects scale by the curve radius +FollowPathConstraint.use_fixed_position -> use_fixed_position: boolean Object will stay locked to a single point somewhere along the length of the curve regardless of time +Function.registered -> registered: boolean, (read-only) Function is registered as callback as part of type registration +Function.registered_optional -> registered_optional: boolean, (read-only) Function is optionally registered as callback part of type registration +GPencilFrame.paint_lock -> lock_paint: boolean Frame is being edited (painted on) +GPencilFrame.selected -> selected: boolean Frame is selected for editing in the DopeSheet +GPencilLayer.active -> active: boolean Set active layer for editing +GPencilLayer.frame_lock -> lock_frame: boolean Lock current frame displayed by layer +GPencilLayer.hide -> hidden: boolean Set layer Visibility +GPencilLayer.locked -> use_lock: boolean Protect layer from further editing and/or frame changes +GPencilLayer.selected -> selected: boolean Layer is selected for editing in the DopeSheet +GPencilLayer.show_points -> show_points: boolean Draw the points which make up the strokes (for debugging purposes) +GPencilLayer.use_onion_skinning -> use_onion_skin: boolean Ghost frames on either side of frame +GameBooleanProperty.value -> value: boolean Property value +GameObjectSettings.actor -> use_actor: boolean Object is detected by the Near and Radar sensor +GameObjectSettings.all_states -> states_all: boolean Set all state bits +GameObjectSettings.anisotropic_friction -> use_anisotropic_friction: boolean Enable anisotropic friction +GameObjectSettings.collision_compound -> use_collision_compound: boolean Add children to form a compound collision object +GameObjectSettings.debug_state -> show_state_debug: boolean Print state debug info in the game engine +GameObjectSettings.ghost -> use_ghost: boolean Object does not restitute collisions, like a ghost +GameObjectSettings.initial_state -> initial_state: boolean Initial state when the game starts +GameObjectSettings.lock_x_axis -> lock_location_x: boolean Disable simulation of linear motion along the X axis +GameObjectSettings.lock_x_rot_axis -> lock_rotation_x: boolean Disable simulation of angular motion along the X axis +GameObjectSettings.lock_y_axis -> lock_location_y: boolean Disable simulation of linear motion along the Y axis +GameObjectSettings.lock_y_rot_axis -> lock_rotation_y: boolean Disable simulation of angular motion along the Y axis +GameObjectSettings.lock_z_axis -> lock_location_z: boolean Disable simulation of linear motion along the Z axis +GameObjectSettings.lock_z_rot_axis -> lock_rotation_z: boolean Disable simulation of angular motion along the Z axis +GameObjectSettings.material_physics -> use_material_physics: boolean Use physics settings in materials +NEGATE * GameObjectSettings.no_sleeping -> use_sleep: boolean Disable auto (de)activation in physics simulation +GameObjectSettings.rotate_from_normal -> use_rotate_from_normal: boolean Use face normal to rotate object, so that it points away from the surface +GameObjectSettings.show_actuators -> show_actuators: boolean Shows actuators for this object in the user interface +GameObjectSettings.show_controllers -> show_controllers: boolean Shows controllers for this object in the user interface +GameObjectSettings.show_sensors -> show_sensors: boolean Shows sensors for this object in the user interface +GameObjectSettings.show_state_panel -> show_state_panel: boolean Show state panel +GameObjectSettings.use_activity_culling -> use_activity_culling: boolean Disable simulation of angular motion along the Z axis +GameObjectSettings.use_collision_bounds -> use_collision_bounds: boolean Specify a collision bounds type other than the default +GameObjectSettings.used_state -> state_used: boolean, (read-only) States which are being used by controllers +GameObjectSettings.visible_state -> state_visible: boolean State determining which controllers are displayed +GameProperty.debug -> use_debug: boolean Print debug information for this property +GameSoftBodySettings.bending_const -> use_bending_constraint: boolean Enable bending constraints +GameSoftBodySettings.cluster_rigid_to_softbody -> use_cluster_rigid_to_softbody: boolean Enable cluster collision between soft and rigid body +GameSoftBodySettings.cluster_soft_to_softbody -> use_cluster_soft_to_softbody: boolean Enable cluster collision between soft and soft body +GameSoftBodySettings.shape_match -> use_shape_match: boolean Enable soft body shape matching goal +GlowSequence.only_boost -> useonly_boost: boolean Show the glow buffer only +GreasePencil.use_stroke_endpoints -> use_stroke_endpoints: boolean Only use the first and last parts of the stroke for snapping +Group.layer -> layer: boolean Layers visible when this groups is instanced as a dupli +ID.fake_user -> use_fake_user: boolean Saves this datablock even if it has no users +ID.tag -> tag: boolean Tools can use this to tag data, (initial state is undefined) +Image.animated -> use_snimation: boolean Use as animated texture in the game engine +Image.clamp_x -> use_clamp_x: boolean Disable texture repeating horizontally +Image.clamp_y -> use_clamp_y: boolean Disable texture repeating vertically +Image.dirty -> is_dirty: boolean, (read-only) Image has changed and is not saved +Image.fields -> use_fields: boolean Use fields of the image +Image.has_data -> is_data: boolean, (read-only) True if this image has data +Image.premultiply -> use_premultiply: boolean Convert RGB from key alpha to premultiplied alpha +Image.tiles -> use_tiles: boolean Use of tilemode for faces (default shift-LMB to pick the tile for selected faces) +ImagePaint.invert_stencil -> invert_stencil: boolean Invert the stencil layer +ImagePaint.show_brush -> show_brush: boolean Enables brush shape while not drawing +ImagePaint.show_brush_draw -> show_brush_draw: boolean Enables brush shape while drawing +ImagePaint.use_backface_cull -> use_backface_cull: boolean Ignore faces pointing away from the view (faster) +ImagePaint.use_clone_layer -> use_clone_layer: boolean Use another UV layer as clone source, otherwise use 3D the cursor as the source +ImagePaint.use_normal_falloff -> use_normal_falloff: boolean Paint most on faces pointing towards the view +ImagePaint.use_occlude -> use_occlude: boolean Only paint onto the faces directly under the brush (slower) +ImagePaint.use_projection -> use_projection: boolean Use projection painting for improved consistency in the brush strokes +ImagePaint.use_stencil_layer -> use_stencil_layer: boolean Set the mask layer from the UV layer buttons +ImageSequence.convert_float -> use_float: boolean Convert input to float data +ImageSequence.de_interlace -> use_de_interlace: boolean For video movies to remove fields +ImageSequence.flip_x -> use_flip_x: boolean Flip on the X axis +ImageSequence.flip_y -> use_flip_y: boolean Flip on the Y axis +ImageSequence.premultiply -> use_premultiply: boolean Convert RGB from key alpha to premultiplied alpha +ImageSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean Use a custom directory to store data +ImageSequence.proxy_custom_file -> use_proxy_custom_file: boolean Use a custom file to read proxy data from +ImageSequence.reverse_frames -> use_frame_reverse: boolean Reverse frame order +ImageSequence.use_color_balance -> use_color_balance: boolean (3-Way color correction) on input +ImageSequence.use_crop -> use_crop: boolean Crop image before processing +ImageSequence.use_proxy -> use_proxy: boolean Use a preview proxy for this strip +ImageSequence.use_translation -> use_translation: boolean Translate image before processing +ImageTexture.calculate_alpha -> use_rgb_alpha: boolean Calculates an alpha channel based on RGB values in the image +ImageTexture.checker_even -> use_checker_even: boolean Sets even checker tiles +ImageTexture.checker_odd -> use_checker_odd: boolean Sets odd checker tiles +ImageTexture.filter_size_minimum -> use_filter_size_min: boolean Use Filter Size as a minimal filter value in pixels +ImageTexture.flip_axis -> use_flip_axis: boolean Flips the texture's X and Y axis +ImageTexture.interpolation -> use_interpolation: boolean Interpolates pixels using Area filter +ImageTexture.invert_alpha -> invert_alpha: boolean Inverts all the alpha values in the image +ImageTexture.mipmap -> use_mipmap: boolean Uses auto-generated MIP maps for the image +ImageTexture.mipmap_gauss -> use_mipmap_gauss: boolean Uses Gauss filter to sample down MIP maps +ImageTexture.mirror_x -> use_mirror_x: boolean Mirrors the image repetition on the X direction +ImageTexture.mirror_y -> use_mirror_y: boolean Mirrors the image repetition on the Y direction +ImageTexture.normal_map -> use_normal_map: boolean Uses image RGB values for normal mapping +ImageTexture.use_alpha -> use_use_alpha: boolean Uses the alpha channel information in the image +ImageUser.auto_refresh -> use_auto_refresh: boolean Always refresh image on frame changes +ImageUser.cyclic -> use_cyclic: boolean Cycle the images in the movie +TODO would use is_ * InflowFluidSettings.active -> active: boolean Object contributes to the fluid simulation +InflowFluidSettings.export_animated_mesh -> use_export_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it +InflowFluidSettings.local_coordinates -> use_local_coordinates: boolean Use local coordinates for inflow. (e.g. for rotating objects) +Itasc.auto_step -> use_auto_step: boolean Automatically determine the optimal number of steps for best performance/accuracy trade off +JoystickSensor.all_events -> use_all_events: boolean Triggered by all events on this joysticks current type (axis/button/hat) +Key.relative -> use_relative: boolean Makes shape keys relative +TODO would use is_ * KeyConfig.user_defined -> user_defined: boolean, (read-only) Indicates that a keyconfig was defined by the user +KeyMap.children_expanded -> show_expanded_children: boolean Children expanded in the user interface +KeyMap.items_expanded -> show_expanded_items: boolean Expanded in the user interface +TODO would use is_ * KeyMap.modal -> modal: boolean, (read-only) Indicates that a keymap is used for translate modal events for an operator +KeyMap.user_defined -> use_user_defined: boolean Keymap is defined by the user +KeyMapItem.active -> use_active: boolean Activate or deactivate item +TODO would use is_pressed * KeyMapItem.alt -> alt: boolean Alt key pressed +TODO would use is_pressed * KeyMapItem.any -> any: boolean Any modifier keys pressed +TODO would use is_pressed * KeyMapItem.ctrl -> ctrl: boolean Control key pressed +KeyMapItem.expanded -> show_expanded: boolean Show key map event and property details in the user interface +TODO would use is_pressed * KeyMapItem.oskey -> oskey: boolean Operating system key pressed +TODO would use is_pressed * KeyMapItem.shift -> shift: boolean Shift key pressed +TODO * KeyboardSensor.all_keys -> all_keys: boolean Trigger this sensor on any keystroke +TODO would use is_ * Keyframe.selected -> selected: boolean Control point selection status +TODO would use is_ * Keyframe.selected_handle1 -> selected_handle1: boolean Handle 1 selection status +TODO would use is_ * Keyframe.selected_handle2 -> selected_handle2: boolean Handle 2 selection status +KeyingSet.absolute -> use_absolute: boolean Keying Set defines specific paths/settings to be keyframed (i.e. is not reliant on context info) +KeyingSet.insertkey_needed -> use_insertkey_needed: boolean Only insert keyframes where they're needed in the relevant F-Curves +KeyingSet.insertkey_visual -> use_insertkey_visual: boolean Insert keyframes based on 'visual transforms' +KeyingSet.insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb: boolean Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis +KeyingSetInfo.insertkey_needed -> use_insertkey_needed: boolean Only insert keyframes where they're needed in the relevant F-Curves +KeyingSetInfo.insertkey_visual -> use_insertkey_visual: boolean Insert keyframes based on 'visual transforms' +KeyingSetInfo.insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb: boolean Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis +KeyingSetPath.entire_array -> use_entire_array: boolean When an 'array/vector' type is chosen (Location, Rotation, Color, etc.), entire array is to be used +KeyingSetPath.insertkey_needed -> use_insertkey_needed: boolean Only insert keyframes where they're needed in the relevant F-Curves +KeyingSetPath.insertkey_visual -> use_insertkey_visual: boolean Insert keyframes based on 'visual transforms' +KeyingSetPath.insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb: boolean Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis +KinematicConstraint.pos_lock_x -> use_lock_pos_x: boolean Constraint position along X axis +KinematicConstraint.pos_lock_y -> use_lock_pos_y: boolean Constraint position along Y axis +KinematicConstraint.pos_lock_z -> use_lock_pos_z: boolean Constraint position along Z axis +KinematicConstraint.rot_lock_x -> use_lock_rot_x: boolean Constraint rotation along X axis +KinematicConstraint.rot_lock_y -> use_lock_rot_y: boolean Constraint rotation along Y axis +KinematicConstraint.rot_lock_z -> use_lock_rot_z: boolean Constraint rotation along Z axis +KinematicConstraint.use_position -> use_position: boolean Chain follows position of target +KinematicConstraint.use_rotation -> use_rotation: boolean Chain follows rotation of target +KinematicConstraint.use_stretch -> use_stretch: boolean Enable IK Stretching +KinematicConstraint.use_tail -> use_tail: boolean Include bone's tail as last element in chain +KinematicConstraint.use_target -> use_target: boolean Disable for targetless IK +Lamp.diffuse -> use_diffuse: boolean Lamp does diffuse shading +Lamp.layer -> use_own_layer: boolean Illuminates objects only on the same layer the lamp is on +Lamp.negative -> use_negative: boolean Lamp casts negative light +Lamp.specular -> use_specular: boolean Lamp creates specular highlights +LampSkySettings.use_atmosphere -> use_atmosphere: boolean Apply sun effect on atmosphere +LampSkySettings.use_sky -> use_sky: boolean Apply sun effect on sky +LampTextureSlot.map_color -> use_map_color: boolean Lets the texture affect the basic color of the lamp +LampTextureSlot.map_shadow -> use_map_shadow: boolean Lets the texture affect the shadow color of the lamp +Lattice.outside -> use_outside: boolean Only draw, and take into account, the outer vertices +LimitLocationConstraint.limit_transform -> limit_transform: boolean Transforms are affected by this constraint as well +LimitLocationConstraint.use_maximum_x -> use_maximum_x: boolean Use the maximum X value +LimitLocationConstraint.use_maximum_y -> use_maximum_y: boolean Use the maximum Y value +LimitLocationConstraint.use_maximum_z -> use_maximum_z: boolean Use the maximum Z value +LimitLocationConstraint.use_minimum_x -> use_minimum_x: boolean Use the minimum X value +LimitLocationConstraint.use_minimum_y -> use_minimum_y: boolean Use the minimum Y value +LimitLocationConstraint.use_minimum_z -> use_minimum_z: boolean Use the minimum Z value +LimitRotationConstraint.limit_transform -> limit_transform: boolean Transforms are affected by this constraint as well +LimitRotationConstraint.use_limit_x -> use_limit_x: boolean Use the minimum X value +LimitRotationConstraint.use_limit_y -> use_limit_y: boolean Use the minimum Y value +LimitRotationConstraint.use_limit_z -> use_limit_z: boolean Use the minimum Z value +LimitScaleConstraint.limit_transform -> limit_transform: boolean Transforms are affected by this constraint as well +LimitScaleConstraint.use_maximum_x -> use_maximum_x: boolean Use the maximum X value +LimitScaleConstraint.use_maximum_y -> use_maximum_y: boolean Use the maximum Y value +LimitScaleConstraint.use_maximum_z -> use_maximum_z: boolean Use the maximum Z value +LimitScaleConstraint.use_minimum_x -> use_minimum_x: boolean Use the minimum X value +LimitScaleConstraint.use_minimum_y -> use_minimum_y: boolean Use the minimum Y value +LimitScaleConstraint.use_minimum_z -> use_minimum_z: boolean Use the minimum Z value +Main.debug -> show_debug: boolean Print debugging information in console +Main.file_is_saved -> is_saved: boolean, (read-only) Has the current session been saved to disk as a .blend file +TODO * MaskModifier.invert -> invert: boolean Use vertices that are not part of region defined +Material.cast_approximate -> use_cast_approximate: boolean Allow this material to cast shadows when using approximate ambient occlusion. +Material.cast_buffer_shadows -> use_cast_buffer_shadows: boolean Allow this material to cast shadows from shadow buffer lamps +Material.cast_shadows_only -> use_cast_shadows_only: boolean Makes objects with this material appear invisible, only casting shadows (not rendered) +Material.cubic -> use_cubic: boolean Use cubic interpolation for diffuse values, for smoother transitions +Material.exclude_mist -> use_exclude_mist: boolean Excludes this material from mist effects (in world settings) +Material.face_texture -> use_face_texture: boolean Replaces the object's base color with color from face assigned image textures +Material.face_texture_alpha -> use_face_texture_alpha: boolean Replaces the object's base alpha value with alpha from face assigned image textures +Material.full_oversampling -> use_full_oversampling: boolean Force this material to render full shading/textures for all anti-aliasing samples +Material.invert_z -> use_invert_z: boolean Renders material's faces with an inverted Z buffer (scanline only) +Material.light_group_exclusive -> use_light_group_exclusive: boolean Material uses the light group exclusively - these lamps are excluded from other scene lighting +Material.object_color -> use_object_color: boolean Modulate the result with a per-object color +Material.only_shadow -> use_shadow_only: boolean Renders shadows as the material's alpha value, making materials transparent except for shadowed areas +Material.ray_shadow_bias -> use_ray_shadow_bias: boolean Prevents raytraced shadow errors on surfaces with smooth shaded normals (terminator problem) +Material.receive_transparent_shadows -> use_receive_transparent_shadows: boolean Allow this object to receive transparent shadows casted through other objects +Material.shadeless -> use_shadeless: boolean Makes this material insensitive to light or shadow +Material.shadows -> use_shadows: boolean Allows this material to receive shadows +Material.tangent_shading -> use_tangent_shading: boolean Use the material's tangent vector instead of the normal for shading - for anisotropic shading effects +Material.traceable -> use_traceable: boolean Include this material and geometry that uses it in ray tracing calculations +Material.transparency -> use_transparency: boolean Render material as transparent +Material.use_diffuse_ramp -> use_diffuse_ramp: boolean Toggle diffuse ramp operations +Material.use_nodes -> use_nodes: boolean Use shader nodes to render the material +Material.use_sky -> use_sky: boolean Renders this material with zero alpha, with sky background in place (scanline only) +Material.use_specular_ramp -> use_specular_ramp: boolean Toggle specular ramp operations +Material.use_textures -> use_textures: boolean Enable/Disable each texture +Material.vertex_color_light -> use_vertex_color_light: boolean Add vertex colors as additional lighting +Material.vertex_color_paint -> use_vertex_color_paint: boolean Replaces object base color with vertex colors (multiplies with 'texture face' face assigned textures) +MaterialHalo.flare_mode -> use_flare_mode: boolean Renders halo as a lensflare +MaterialHalo.lines -> use_lines: boolean Renders star shaped lines over halo +MaterialHalo.ring -> use_ring: boolean Renders rings over halo +MaterialHalo.shaded -> use_shaded: boolean Lets halo receive light and shadows from external objects +MaterialHalo.soft -> use_soft: boolean Softens the edges of halos at intersections with other geometry +MaterialHalo.star -> use_star: boolean Renders halo as a star +MaterialHalo.texture -> use_texture: boolean Gives halo a texture +MaterialHalo.vertex_normal -> use_vertex_normal: boolean Uses the vertex normal to specify the dimension of the halo +MaterialHalo.xalpha -> use_xalpha: boolean Uses extreme alpha +MaterialPhysics.align_to_normal -> use_align_to_normal: boolean Align dynamic game objects along the surface normal, when inside the physics distance area +TODO * MaterialRaytraceMirror.enabled -> enabled: boolean Enable raytraced reflections +MaterialStrand.blender_units -> use_blender_units: boolean Use Blender units for widths instead of pixels +MaterialStrand.surface_diffuse -> use_surface_diffuse: boolean Make diffuse shading more similar to shading the surface +MaterialStrand.tangent_shading -> use_tangent_shading: boolean Uses direction of strands as normal for tangent-shading +TODO * MaterialSubsurfaceScattering.enabled -> enabled: boolean Enable diffuse subsurface scatting effects in a material +TODO * MaterialTextureSlot.enabled -> enabled: boolean Enable this material texture slot +MaterialTextureSlot.from_dupli -> use_from_dupli: boolean Dupli's instanced from verts, faces or particles, inherit texture coordinate from their parent +MaterialTextureSlot.from_original -> use_from_original: boolean Dupli's derive their object coordinates from the original objects transformation +MaterialTextureSlot.map_alpha -> use_map_alpha: boolean Causes the texture to affect the alpha value +MaterialTextureSlot.map_ambient -> use_map_ambient: boolean Causes the texture to affect the value of ambient +MaterialTextureSlot.map_colordiff -> use_map_colordiff: boolean Causes the texture to affect basic color of the material +MaterialTextureSlot.map_coloremission -> use_map_coloremission: boolean Causes the texture to affect the color of emission +MaterialTextureSlot.map_colorreflection -> use_map_colorreflection: boolean Causes the texture to affect the color of scattered light +MaterialTextureSlot.map_colorspec -> use_map_colorspec: boolean Causes the texture to affect the specularity color +MaterialTextureSlot.map_colortransmission -> use_map_colortransmission: boolean Causes the texture to affect the result color after other light has been scattered/absorbed +MaterialTextureSlot.map_density -> use_map_density: boolean Causes the texture to affect the volume's density +MaterialTextureSlot.map_diffuse -> use_map_diffuse: boolean Causes the texture to affect the value of the materials diffuse reflectivity +MaterialTextureSlot.map_displacement -> use_map_displacement: boolean Let the texture displace the surface +MaterialTextureSlot.map_emission -> use_map_emission: boolean Causes the texture to affect the volume's emission +MaterialTextureSlot.map_emit -> use_map_emit: boolean Causes the texture to affect the emit value +MaterialTextureSlot.map_hardness -> use_map_hardness: boolean Causes the texture to affect the hardness value +MaterialTextureSlot.map_mirror -> use_map_mirror: boolean Causes the texture to affect the mirror color +MaterialTextureSlot.map_normal -> use_map_normal: boolean Causes the texture to affect the rendered normal +MaterialTextureSlot.map_raymir -> use_map_raymir: boolean Causes the texture to affect the ray-mirror value +MaterialTextureSlot.map_reflection -> use_map_reflection: boolean Causes the texture to affect the reflected light's brightness +MaterialTextureSlot.map_scattering -> use_map_scattering: boolean Causes the texture to affect the volume's scattering +MaterialTextureSlot.map_specular -> use_map_specular: boolean Causes the texture to affect the value of specular reflectivity +MaterialTextureSlot.map_translucency -> use_map_translucency: boolean Causes the texture to affect the translucency value +MaterialTextureSlot.map_warp -> use_map_warp: boolean Let the texture warp texture coordinates of next channels +MaterialTextureSlot.new_bump -> use_new_bump: boolean Use new, corrected bump mapping code (backwards compatibility option) +MaterialVolume.external_shadows -> use_external_shadows: boolean Receive shadows from sources outside the volume (temporary) +MaterialVolume.light_cache -> use_light_cache: boolean Pre-calculate the shading information into a voxel grid, speeds up shading at slightly less accuracy +Mesh.all_edges -> show_all_edges: boolean Displays all edges for wireframe in all view modes in the 3D view +Mesh.auto_texspace -> use_auto_texspace: boolean Adjusts active object's texture space automatically when transforming object +Mesh.autosmooth -> use_autosmooth: boolean Treats all set-smoothed faces with angles less than the specified angle as 'smooth' during render +Mesh.double_sided -> use_double_sided: boolean Render/display the mesh with double or single sided lighting +Mesh.draw_bevel_weights -> show_bevel_weights: boolean Displays weights created for the Bevel modifier +Mesh.draw_creases -> show_creases: boolean Displays creases created for subsurf weighting +Mesh.draw_edge_angle -> show_edge_angle: boolean Displays the angles in the selected edges in degrees +Mesh.draw_edge_lenght -> show_edge_lenght: boolean Displays selected edge lengths +Mesh.draw_edges -> show_edges: boolean Displays selected edges using highlights in the 3D view and UV editor +Mesh.draw_face_area -> show_face_area: boolean Displays the area of selected faces +Mesh.draw_faces -> show_faces: boolean Displays all faces as shades in the 3D view and UV editor +Mesh.draw_normals -> show_normals: boolean Displays face normals as lines +Mesh.draw_seams -> show_seams: boolean Displays UV unwrapping seams +Mesh.draw_sharp -> show_sharp: boolean Displays sharp edges, used with the EdgeSplit modifier +Mesh.draw_vertex_normals -> show_vertex_normals: boolean Displays vertex normals as lines +Mesh.use_mirror_topology -> use_mirror_topology: boolean Use topology based mirroring +Mesh.use_mirror_x -> use_mirror_x: boolean X Axis mirror editing +Mesh.use_paint_mask -> use_paint_mask: boolean Face selection masking for painting +Mesh.vertex_normal_flip -> use_vertex_normal_flip: boolean Flip vertex normals towards the camera during render +MeshColorLayer.active -> use_active: boolean Sets the layer as active for display and editing +MeshColorLayer.active_render -> use_active_render: boolean Sets the layer as active for rendering +MeshDeformModifier.dynamic -> dynamic: boolean Recompute binding dynamically on top of other deformers (slower and more memory consuming.) +MeshDeformModifier.invert -> invert: boolean Invert vertex group influence +MeshDeformModifier.is_bound -> is_bound: boolean, (read-only) Whether geometry has been bound to control cage +MeshEdge.fgon -> is_fgon: boolean, (read-only) Fgon edge +TODO * MeshEdge.hidden -> hidden: boolean +MeshEdge.loose -> use_loose: boolean, (read-only) Loose edge +MeshEdge.seam -> use_seam: boolean Seam edge for UV unwrapping +TODO * MeshEdge.selected -> selected: boolean +MeshEdge.sharp -> use_sharp: boolean Sharp edge for the EdgeSplit modifier +TODO would use is_ * MeshFace.hidden -> hidden: boolean +TODO would use is_ * MeshFace.selected -> selected: boolean +TODO would use is_ * MeshFace.smooth -> smooth: boolean +MeshTextureFace.alpha_sort -> use_alpha_sort: boolean Enable sorting of faces for correct alpha drawing (slow, use Clip Alpha instead when possible) +MeshTextureFace.billboard -> use_billboard: boolean Billboard with Z-axis constraint +MeshTextureFace.collision -> use_collision: boolean Use face for collision and ray-sensor detection +MeshTextureFace.halo -> use_halo: boolean Screen aligned billboard +TODO would use is_ * MeshTextureFace.invisible -> invisible: boolean Make face invisible +MeshTextureFace.light -> use_light: boolean Use light for face +MeshTextureFace.object_color -> use_object_color: boolean Use ObColor instead of vertex colors +MeshTextureFace.shadow -> use_shadow_face: boolean Face is used for shadow +MeshTextureFace.shared -> use_blend_shared: boolean Blend vertex colors across face when vertices are shared +MeshTextureFace.tex -> use_render_texture: boolean Render face with texture +MeshTextureFace.text -> use_bitmap_text: boolean Enable bitmap text on face +MeshTextureFace.twoside -> use_twoside: boolean Render face two-sided +MeshTextureFace.uv_pinned -> use_uv_pinned: boolean +MeshTextureFace.uv_selected -> use_uv_selected: boolean +TODO * MeshTextureFaceLayer.active -> active: boolean Sets the layer as active for display and editing +TODO * MeshTextureFaceLayer.active_clone -> active_clone: boolean Sets the layer as active for cloning +TODO * MeshTextureFaceLayer.active_render -> active_render: boolean Sets the layer as active for rendering +TODO * MeshVertex.hidden -> hidden: boolean +TODO would use is_ * MeshVertex.selected -> selected: boolean +MetaBall.auto_texspace -> use_auto_texspace: boolean Adjusts active object's texture space automatically when transforming object +TODO * MetaElement.hide -> hide: boolean Hide element +TODO would use is_ * MetaElement.negative -> negative: boolean Set metaball as negative one +MetaSequence.convert_float -> use_convert_float: boolean Convert input to float data +MetaSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields +MetaSequence.flip_x -> use_flip_x: boolean Flip on the X axis +MetaSequence.flip_y -> use_flip_y: boolean Flip on the Y axis +MetaSequence.premultiply -> use_convert_premultiply: boolean Convert RGB from key alpha to premultiplied alpha +MetaSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean Use a custom directory to store data +MetaSequence.proxy_custom_file -> use_proxy_custom_file: boolean Use a custom file to read proxy data from +MetaSequence.reverse_frames -> use_reverse_frames: boolean Reverse frame order +MetaSequence.use_color_balance -> use_color_balance: boolean (3-Way color correction) on input +MetaSequence.use_crop -> use_crop: boolean Crop image before processing +MetaSequence.use_proxy -> use_proxy: boolean Use a preview proxy for this strip +MetaSequence.use_translation -> use_translation: boolean Translate image before processing +MirrorModifier.clip -> use_clipping: boolean Prevents vertices from going through the mirror during transform +MirrorModifier.mirror_u -> use_mirror_u: boolean Mirror the U texture coordinate around the 0.5 point +MirrorModifier.mirror_v -> use_mirror_v: boolean Mirror the V texture coordinate around the 0.5 point +MirrorModifier.mirror_vertex_groups -> use_mirror_vertex_groups: boolean Mirror vertex groups (e.g. .R->.L) +MirrorModifier.x -> use_x: boolean Enable X axis mirror +MirrorModifier.y -> use_y: boolean Enable Y axis mirror +MirrorModifier.z -> use_z: boolean Enable Z axis mirror +Modifier.editmode -> use_in_editmode: boolean Use modifier while in the edit mode +Modifier.expanded -> show_expanded: boolean Set modifier expanded in the user interface +Modifier.on_cage -> use_on_cage: boolean Enable direct editing of modifier control cage +Modifier.realtime -> show_realtime: boolean Realtime display of a modifier +Modifier.render -> use_render: boolean Use modifier during rendering +TODO * MotionPath.editing -> editing: boolean Path is being edited +TODO * MotionPath.use_bone_head -> use_bone_head: boolean, (read-only) For PoseBone paths, use the bone head location when calculating this path +TODO would use is_ * MotionPathVert.selected -> selected: boolean Path point is selected for editing +MovieSequence.convert_float -> use_convert_float: boolean Convert input to float data +MovieSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields +MovieSequence.flip_x -> use_flip_x: boolean Flip on the X axis +MovieSequence.flip_y -> use_flip_y: boolean Flip on the Y axis +MovieSequence.premultiply -> use_convert_premultiply: boolean Convert RGB from key alpha to premultiplied alpha +MovieSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean Use a custom directory to store data +MovieSequence.proxy_custom_file -> use_proxy_custom_file: boolean Use a custom file to read proxy data from +TODO * MovieSequence.reverse_frames -> use_reverse_frames: boolean Reverse frame order +MovieSequence.use_color_balance -> use_color_balance: boolean (3-Way color correction) on input +MovieSequence.use_crop -> use_crop: boolean Crop image before processing +MovieSequence.use_proxy -> use_proxy: boolean Use a preview proxy for this strip +MovieSequence.use_translation -> use_translation: boolean Translate image before processing +MulticamSequence.convert_float -> use_convert_float: boolean Convert input to float data +MulticamSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields +MulticamSequence.flip_x -> use_flip_x: boolean Flip on the X axis +MulticamSequence.flip_y -> use_flip_y: boolean Flip on the Y axis +MulticamSequence.premultiply -> use_convert_premultiply: boolean Convert RGB from key alpha to premultiplied alpha +MulticamSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean Use a custom directory to store data +MulticamSequence.proxy_custom_file -> use_proxy_custom_file: boolean Use a custom file to read proxy data from +TODO * MulticamSequence.reverse_frames -> use_reverse_frames: boolean Reverse frame order +MulticamSequence.use_color_balance -> use_color_balance: boolean (3-Way color correction) on input +MulticamSequence.use_crop -> use_crop: boolean Crop image before processing +MulticamSequence.use_proxy -> use_proxy: boolean Use a preview proxy for this strip +MulticamSequence.use_translation -> use_translation: boolean Translate image before processing +MultiresModifier.external -> use_external: boolean, (read-only) Store multires displacements outside the .blend file, to save memory +MultiresModifier.optimal_display -> show_optimal: boolean Skip drawing/rendering of interior subdivided edges +NetRenderSettings.master_broadcast -> use_master_broadcast: boolean broadcast master server address on local network +NetRenderSettings.master_clear -> use_master_clear: boolean delete saved files on exit +NetRenderSettings.slave_clear -> use_slave_clear: boolean delete downloaded files on exit +NetRenderSettings.slave_outputlog -> use_slave_outputlog: boolean Output render text log to console as well as sending it to the master +NetRenderSettings.slave_thumb -> use_slave_thumb: boolean Generate thumbnails on slaves instead of master +TODO I'd use is_ * NlaStrip.active -> active: boolean, (read-only) NLA Strip is active +NlaStrip.animated_influence -> use_animated_influence: boolean Influence setting is controlled by an F-Curve rather than automatically determined +NlaStrip.animated_time -> use_animated_time: boolean Strip time is controlled by an F-Curve rather than automatically determined +NlaStrip.animated_time_cyclic -> use_animated_time_cyclic: boolean Cycle the animated time within the action start & end +NlaStrip.auto_blending -> use_auto_blending: boolean Number of frames for Blending In/Out is automatically determined from overlapping strips +TODO I'd use is_ * NlaStrip.muted -> muted: boolean NLA Strip is not evaluated +TODO I'd use is_ * NlaStrip.reversed -> reversed: boolean NLA Strip is played back in reverse order (only when timing is automatically determined) +TODO I'd use is_ * NlaStrip.selected -> selected: boolean NLA Strip is selected +TODO I'd use is_ * NlaTrack.active -> active: boolean, (read-only) NLA Track is active +TODO I'd use is_ * NlaTrack.locked -> locked: boolean NLA Track is locked +TODO I'd use is_ * NlaTrack.muted -> muted: boolean NLA Track is not evaluated +TODO I'd use is_ * NlaTrack.selected -> selected: boolean NLA Track is selected +NlaTrack.solo -> is_solo: boolean, (read-only) NLA Track is evaluated itself (i.e. active Action and all other NLA Tracks in the same AnimData block are disabled) +Object.draw_axis -> show_axis: boolean Displays the object's origin and axis +Object.draw_bounds -> show_bounds: boolean Displays the object's bounds +Object.draw_name -> show_name: boolean Displays the object's name +Object.draw_texture_space -> show_texture_space: boolean Displays the object's texture space +Object.draw_transparent -> show_transparent: boolean Enables transparent materials for the object (Mesh only) +Object.draw_wire -> show_wire: boolean Adds the object's wireframe over solid drawing +TODO * Object.duplis_used -> is_duplis_used: boolean, (read-only) +TODO * Object.layers -> layers: boolean Layers the object is on +Object.lock_location -> lock_location: boolean Lock editing of location in the interface +Object.lock_rotation -> lock_rotation: boolean Lock editing of rotation in the interface +Object.lock_rotation_w -> lock_rotation_w: boolean Lock editing of 'angle' component of four-component rotations in the interface +Object.lock_rotations_4d -> lock_rotations_4d: boolean Lock editing of four component rotations by components (instead of as Eulers) +Object.lock_scale -> lock_scale: boolean Lock editing of scale in the interface +TODO * Object.restrict_render -> use_limit_render: boolean Restrict renderability +TODO * Object.restrict_select -> use_limit_select: boolean Restrict selection in the viewport +TODO * Object.restrict_view -> use_limit_view: boolean Restrict visibility in the viewport +TODO * Object.selected -> selected: boolean Object selection state +Object.shape_key_edit_mode -> use_shape_key_edit_mode: boolean Apply shape keys in edit mode (for Meshes only) +Object.shape_key_lock -> show_shape_key: boolean Always show the current Shape for this Object +Object.slow_parent -> use_slow_parent: boolean Create a delay in the parent relationship +Object.time_offset_add_parent -> use_time_offset_add_parent: boolean Add the parents time offset value +Object.time_offset_edit -> use_time_offset_edit: boolean Use time offset when inserting keys and display time offset for F-Curve and action views +Object.time_offset_parent -> use_time_offset_parent: boolean Apply the time offset to this objects parent relationship +Object.time_offset_particle -> use_time_offset_particle: boolean Let the time offset work on the particle effect +Object.use_dupli_faces_scale -> use_dupli_faces_scale: boolean Scale dupli based on face size +Object.use_dupli_frames_speed -> use_dupli_frames_speed: boolean Set dupliframes to use the frame +Object.use_dupli_verts_rotation -> use_dupli_verts_rotation: boolean Rotate dupli according to vertex normal +Object.x_ray -> show_x_ray: boolean Makes the object draw in front of others +TODO * ObjectActuator.add_linear_velocity -> add_linear_velocity: boolean Toggles between ADD and SET linV +ObjectActuator.local_angular_velocity -> use_local_angular_velocity: boolean Angular velocity is defined in local coordinates +ObjectActuator.local_force -> use_local_force: boolean Force is defined in local coordinates +ObjectActuator.local_linear_velocity -> use_local_linear_velocity: boolean Velocity is defined in local coordinates +ObjectActuator.local_location -> use_local_location: boolean Location is defined in local coordinates +ObjectActuator.local_rotation -> use_local_rotation: boolean Rotation is defined in local coordinates +ObjectActuator.local_torque -> use_local_torque: boolean Torque is defined in local coordinates +TODO * ObjectActuator.servo_limit_x -> use_limit_servo_x: boolean Set limit to force along the X axis +TODO * ObjectActuator.servo_limit_y -> use_limit_servo_y: boolean Set limit to force along the Y axis +TODO * ObjectActuator.servo_limit_z -> use_limit_servo_z: boolean Set limit to force along the Z axis +TODO * ObjectBase.layers -> layers: boolean Layers the object base is on +TODO * ObjectBase.selected -> selected: boolean Object base selection state +TODO * ObjectBase.selected_user -> is_selected_user: boolean, (read-only) Object base user selection state, used to restore user selection after transformations +TODO could be is_ * ObstacleFluidSettings.active -> use_active: boolean Object contributes to the fluid simulation +ObstacleFluidSettings.export_animated_mesh -> use_export_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it +TODO * Operator.has_reports -> has_reports: boolean, (read-only) Operator has a set of reports (warnings and errors) from last execution +OperatorStrokeElement.flip -> use_flip: boolean +OutflowFluidSettings.active -> use_active: boolean Object contributes to the fluid simulation +OutflowFluidSettings.export_animated_mesh -> use_export_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it +Paint.fast_navigate -> show_low_resolution: boolean For multires, show low resolution while navigating the view +Paint.show_brush -> show_brush: boolean +TODO * Panel.bl_default_closed -> bl_default_closed: boolean +TODO * Panel.bl_show_header -> bl_show_header: boolean +ParentActuator.compound -> use_compound: boolean Add this object shape to the parent shape (only if the parent shape is already compound) +ParentActuator.ghost -> use_ghost: boolean Make this object ghost while parented (only if not compound) +TODO * Particle.no_disp -> no_disp: boolean +TODO * Particle.rekey -> rekey: boolean +TODO * Particle.unexist -> unexist: boolean +ParticleBrush.use_puff_volume -> use_puff_volume: boolean Apply puff to unselected end-points, (helps maintain hair volume when puffing root) +ParticleEdit.add_interpolate -> use_add_interpolate: boolean Interpolate new particles from the existing ones +ParticleEdit.auto_velocity -> use_auto_velocity: boolean Calculate point velocities automatically +ParticleEdit.draw_particles -> show_particles: boolean Draw actual particles +ParticleEdit.editable -> is_editable: boolean, (read-only) A valid edit mode exists +ParticleEdit.emitter_deflect -> use_emitter_deflect: boolean Keep paths from intersecting the emitter +ParticleEdit.fade_time -> use_fade_time: boolean Fade paths and keys further away from current frame +TODO * ParticleEdit.hair -> hair: boolean, (read-only) Editing hair +ParticleEdit.keep_lengths -> use_keep_lengths: boolean Keep path lengths constant +ParticleEdit.keep_root -> use_keep_root: boolean Keep root keys unmodified +ParticleFluidSettings.drops -> show_drops: boolean Show drop particles +ParticleFluidSettings.floats -> show_floats: boolean Show floating foam particles +ParticleFluidSettings.tracer -> show_tracer: boolean Show tracer particles +ParticleInstanceModifier.alive -> show_alive: boolean Show instances when particles are alive +ParticleInstanceModifier.children -> use_children: boolean Create instances from child particles +ParticleInstanceModifier.dead -> show_dead: boolean Show instances when particles are dead +ParticleInstanceModifier.keep_shape -> use_keep_shape: boolean Don't stretch the object +ParticleInstanceModifier.normal -> use_normal: boolean Create instances from normal particles +ParticleInstanceModifier.size -> use_size: boolean Use particle size to scale the instances +ParticleInstanceModifier.unborn -> show_unborn: boolean Show instances when particles are unborn +ParticleInstanceModifier.use_path -> use_path: boolean Create instances along particle paths +ParticleSettings.abs_path_time -> use_abs_path_time: boolean Path timing is in absolute frames +ParticleSettings.animate_branching -> use_animate_branching: boolean Animate branching +ParticleSettings.billboard_lock -> lock_billboard: boolean Lock the billboards align axis +ParticleSettings.boids_2d -> lock_boids_to_surface: boolean Constrain boids to a surface +ParticleSettings.branching -> use_branching: boolean Branch child paths from each other +ParticleSettings.child_effector -> use_child_effector: boolean Apply effectors to children +ParticleSettings.child_guide -> use_child_guide: boolean +ParticleSettings.child_render -> use_child_render: boolean +ParticleSettings.die_on_collision -> use_die_on_collision: boolean Particles die when they collide with a deflector object +ParticleSettings.died -> show_died: boolean Show particles after they have died +ParticleSettings.draw_health -> show_health: boolean Draw boid health +ParticleSettings.emitter -> use_emitter: boolean Render emitter Object also +ParticleSettings.enable_simplify -> use_simplify: boolean Remove child strands as the object becomes smaller on the screen +ParticleSettings.even_distribution -> use_even_distribution: boolean Use even distribution from faces based on face areas or edge lengths +ParticleSettings.grid_invert -> invert_grid: boolean Invert what is considered object and what is not +ParticleSettings.hair_bspline -> use_hair_bspline: boolean Interpolate hair using B-Splines +TODO * ParticleSettings.hair_geometry -> hair_geometry: boolean +ParticleSettings.material_color -> show_material_color: boolean Draw particles using material's diffuse color +ParticleSettings.num -> use_number: boolean Show particle number +ParticleSettings.parent -> use_parent: boolean Render parent particles +ParticleSettings.rand_group -> use_random_group: boolean Pick objects from group randomly +ParticleSettings.react_multiple -> use_react_multiple: boolean React multiple times +ParticleSettings.react_start_end -> use_react_start_end: boolean Give birth to unreacted particles eventually +ParticleSettings.render_adaptive -> show_path_steps: boolean Draw steps of the particle path +ParticleSettings.render_strand -> use_render_strand: boolean Use the strand primitive for rendering +ParticleSettings.rotation_dynamic -> use_rotation_dynamic: boolean Sets rotation to dynamic/constant +ParticleSettings.self_effect -> use_self_effect: boolean Particle effectors effect themselves +ParticleSettings.show_size -> show_size: boolean Show particle size +ParticleSettings.size_deflect -> use_size_deflect: boolean Use particle's size in deflection +ParticleSettings.sizemass -> use_multiply_size_mass: boolean Multiply mass by particle size +ParticleSettings.symmetric_branching -> use_symmetric_branching: boolean Start and end points are the same +ParticleSettings.trand -> use_emit_random: boolean Emit in random order of elements +ParticleSettings.unborn -> show_unborn: boolean Show particles before they are emitted +ParticleSettings.use_global_dupli -> use_global_dupli: boolean Use object's global coordinates for duplication +ParticleSettings.use_group_count -> use_group_count: boolean Use object multiple times in the same group +ParticleSettings.velocity -> show_velocity: boolean Show particle velocity +ParticleSettings.velocity_length -> use_velocity_length: boolean Multiply line length by particle speed +TODO * ParticleSettings.viewport -> viewport: boolean +ParticleSettings.whole_group -> use_whole_group: boolean Use whole group at once +ParticleSystem.editable -> is_editable: boolean, (read-only) Particle system can be edited in particle mode +ParticleSystem.edited -> is_edited: boolean, (read-only) Particle system has been edited in particle mode +TODO * ParticleSystem.global_hair -> global_hair: boolean, (read-only) Hair keys are in global coordinate space +ParticleSystem.hair_dynamics -> use_hair_dynamics: boolean Enable hair dynamics using cloth simulation +ParticleSystem.keyed_timing -> use_keyed_timing: boolean Use key times +TODO * ParticleSystem.multiple_caches -> multiple_caches: boolean, (read-only) Particle system has multiple point caches +ParticleSystem.vertex_group_clump_negate -> invert_vertex_group_clump: boolean Negate the effect of the clump vertex group +ParticleSystem.vertex_group_density_negate -> invert_vertex_group_density: boolean Negate the effect of the density vertex group +ParticleSystem.vertex_group_field_negate -> invert_vertex_group_field: boolean Negate the effect of the field vertex group +ParticleSystem.vertex_group_kink_negate -> invert_vertex_group_kink: boolean Negate the effect of the kink vertex group +ParticleSystem.vertex_group_length_negate -> invert_vertex_group_length: boolean Negate the effect of the length vertex group +ParticleSystem.vertex_group_rotation_negate -> invert_vertex_group_rotation: boolean Negate the effect of the rotation vertex group +ParticleSystem.vertex_group_roughness1_negate -> invert_vertex_group_roughness1: boolean Negate the effect of the roughness 1 vertex group +ParticleSystem.vertex_group_roughness2_negate -> invert_vertex_group_roughness2: boolean Negate the effect of the roughness 2 vertex group +ParticleSystem.vertex_group_roughness_end_negate -> invert_vertex_group_roughness_end: boolean Negate the effect of the roughness end vertex group +ParticleSystem.vertex_group_size_negate -> invert_vertex_group_size: boolean Negate the effect of the size vertex group +ParticleSystem.vertex_group_tangent_negate -> invert_vertex_group_tangent: boolean Negate the effect of the tangent vertex group +ParticleSystem.vertex_group_velocity_negate -> invert_vertex_group_velocity: boolean Negate the effect of the velocity vertex group +TODO * ParticleTarget.valid -> valid: boolean Keyed particles target is valid +PivotConstraint.use_relative_position -> use_relative_position: boolean Offset will be an absolute point in space instead of relative to the target +PointCache.baked -> is_baked: boolean, (read-only) +TODO * PointCache.baking -> baking: boolean, (read-only) +PointCache.disk_cache -> use_disk_cache: boolean Save cache files to disk (.blend file must be saved first) +PointCache.external -> use_external: boolean Read cache from an external location +TODO * PointCache.frames_skipped -> frames_skipped: boolean, (read-only) +PointCache.outdated -> is_outdated: boolean, (read-only) +PointCache.quick_cache -> use_quick_cache: boolean Update simulation with cache steps +PointCache.use_library_path -> use_library_path: boolean Use this files path when library linked into another file. +PointDensity.turbulence -> use_turbulence: boolean Add directed noise to the density at render-time +PointLamp.only_shadow -> use_shadow_only: boolean Causes light to cast shadows only without illuminating objects +PointLamp.shadow_layer -> use_shadow_own_layer: boolean Causes only objects on the same layer to cast shadows +PointLamp.sphere -> use_sphere: boolean Sets light intensity to zero beyond lamp distance +PoseBone.has_ik -> is_in_ik_chain: boolean, (read-only) Is part of an IK chain +TODO * PoseBone.ik_dof_x -> ik_dof_x: boolean Allow movement around the X axis +TODO * PoseBone.ik_dof_y -> ik_dof_y: boolean Allow movement around the Y axis +TODO * PoseBone.ik_dof_z -> ik_dof_z: boolean Allow movement around the Z axis +PoseBone.ik_limit_x -> lock_ik_x: boolean Limit movement around the X axis +PoseBone.ik_limit_y -> lock_ik_y: boolean Limit movement around the Y axis +PoseBone.ik_limit_z -> lock_ik_z: boolean Limit movement around the Z axis +PoseBone.ik_lin_control -> use_ik_lin_control: boolean Apply channel size as IK constraint if stretching is enabled +PoseBone.ik_rot_control -> use_ik_rot_control: boolean Apply channel rotation as IK constraint +PoseBone.lock_location -> lock_location: boolean Lock editing of location in the interface +PoseBone.lock_rotation -> lock_rotation: boolean Lock editing of rotation in the interface +PoseBone.lock_rotation_w -> lock_rotation_w: boolean Lock editing of 'angle' component of four-component rotations in the interface +PoseBone.lock_rotations_4d -> lock_rotations_4d: boolean Lock editing of four component rotations by components (instead of as Eulers) +PoseBone.lock_scale -> lock_scale: boolean Lock editing of scale in the interface +TODO * PoseBone.selected -> selected: boolean +PoseTemplateSettings.generate_def_rig -> use_generate_def_rig: boolean Create a copy of the metarig, constrainted by the generated rig +Property.is_never_none -> is_never_none: boolean, (read-only) True when this value can't be set to None +Property.is_readonly -> is_readonly: boolean, (read-only) Property is editable through RNA +Property.is_required -> is_required: boolean, (read-only) False when this property is an optional argument in an RNA function +Property.registered -> is_registered: boolean, (read-only) Property is registered as part of type registration +Property.registered_optional -> is_registered_optional: boolean, (read-only) Property is optionally registered as part of type registration +Property.use_output -> is_output: boolean, (read-only) True when this property is an output value from an RNA function +TODO * PythonConstraint.script_error -> is_script_error: boolean, (read-only) The linked Python script has thrown an error +PythonConstraint.use_targets -> use_targets: boolean Use the targets indicated in the constraint panel +PythonController.debug -> use_debug: boolean Continuously reload the module from disk for editing external modules without restarting +RandomActuator.always_true -> use_always_true: boolean Always false or always true +RaySensor.x_ray_mode -> use_x_ray_mode: boolean Toggle X-Ray option (see through objects that don't have the property) +RegionView3D.box_clip -> use_box_clip: boolean Clip objects based on what's visible in other side views +RegionView3D.box_preview -> show_synced_view: boolean Sync view position between side views +RegionView3D.lock_rotation -> lock_rotation: boolean Lock view rotation in side views +TODO * RenderEngine.bl_postprocess -> use_bl_postprocess: boolean +TODO * RenderEngine.bl_preview -> use_bl_preview: boolean +TODO * RenderLayer.all_z -> all_z: boolean, (read-only) Fill in Z values for solid faces in invisible layers, for masking +TODO * RenderLayer.edge -> edge: boolean, (read-only) Render Edge-enhance in this Layer (only works for Solid faces) +TODO * RenderLayer.enabled -> enabled: boolean, (read-only) Disable or enable the render layer +TODO * RenderLayer.halo -> halo: boolean, (read-only) Render Halos in this Layer (on top of Solid) +TODO * RenderLayer.pass_ao -> pass_ao: boolean, (read-only) Deliver AO pass +TODO * RenderLayer.pass_ao_exclude -> pass_ao_exclude: boolean, (read-only) Exclude AO pass from combined +TODO * RenderLayer.pass_color -> pass_color: boolean, (read-only) Deliver shade-less color pass +TODO * RenderLayer.pass_combined -> pass_combined: boolean, (read-only) Deliver full combined RGBA buffer +TODO * RenderLayer.pass_diffuse -> pass_diffuse: boolean, (read-only) Deliver diffuse pass +TODO * RenderLayer.pass_emit -> pass_emit: boolean, (read-only) Deliver emission pass +TODO * RenderLayer.pass_emit_exclude -> pass_emit_exclude: boolean, (read-only) Exclude emission pass from combined +TODO * RenderLayer.pass_environment -> pass_environment: boolean, (read-only) Deliver environment lighting pass +TODO * RenderLayer.pass_environment_exclude -> pass_environment_exclude: boolean, (read-only) Exclude environment pass from combined +TODO * RenderLayer.pass_indirect -> pass_indirect: boolean, (read-only) Deliver indirect lighting pass +TODO * RenderLayer.pass_indirect_exclude -> pass_indirect_exclude: boolean, (read-only) Exclude indirect pass from combined +TODO * RenderLayer.pass_mist -> pass_mist: boolean, (read-only) Deliver mist factor pass (0.0-1.0) +TODO * RenderLayer.pass_normal -> pass_normal: boolean, (read-only) Deliver normal pass +TODO * RenderLayer.pass_object_index -> pass_object_index: boolean, (read-only) Deliver object index pass +TODO * RenderLayer.pass_reflection -> pass_reflection: boolean, (read-only) Deliver raytraced reflection pass +TODO * RenderLayer.pass_reflection_exclude -> pass_reflection_exclude: boolean, (read-only) Exclude raytraced reflection pass from combined +TODO * RenderLayer.pass_refraction -> pass_refraction: boolean, (read-only) Deliver raytraced refraction pass +TODO * RenderLayer.pass_refraction_exclude -> pass_refraction_exclude: boolean, (read-only) Exclude raytraced refraction pass from combined +TODO * RenderLayer.pass_shadow -> pass_shadow: boolean, (read-only) Deliver shadow pass +TODO * RenderLayer.pass_shadow_exclude -> pass_shadow_exclude: boolean, (read-only) Exclude shadow pass from combined +TODO * RenderLayer.pass_specular -> pass_specular: boolean, (read-only) Deliver specular pass +TODO * RenderLayer.pass_specular_exclude -> pass_specular_exclude: boolean, (read-only) Exclude specular pass from combined +TODO * RenderLayer.pass_uv -> pass_uv: boolean, (read-only) Deliver texture UV pass +TODO * RenderLayer.pass_vector -> pass_vector: boolean, (read-only) Deliver speed vector pass +TODO * RenderLayer.pass_z -> pass_z: boolean, (read-only) Deliver Z values pass +TODO * RenderLayer.sky -> sky: boolean, (read-only) Render Sky in this Layer +TODO * RenderLayer.solid -> solid: boolean, (read-only) Render Solid faces in this Layer +TODO * RenderLayer.strand -> strand: boolean, (read-only) Render Strands in this Layer +TODO * RenderLayer.visible_layers -> visible_layers: boolean, (read-only) Scene layers included in this render layer +TODO * RenderLayer.zmask -> zmask: boolean, (read-only) Only render what's in front of the solid z values +TODO * RenderLayer.zmask_layers -> zmask_layers: boolean, (read-only) Zmask scene layers +TODO * RenderLayer.zmask_negate -> zmask_negate: boolean, (read-only) For Zmask, only render what is behind solid z values instead of in front +TODO * RenderLayer.ztransp -> ztransp: boolean, (read-only) Render Z-Transparent faces in this Layer (On top of Solid and Halos) +RenderSettings.backbuf -> use_backbuf: boolean Render backbuffer image +RenderSettings.bake_active -> use_bake_active: boolean Bake shading on the surface of selected objects to the active object +RenderSettings.bake_clear -> use_bake_clear: boolean Clear Images before baking +RenderSettings.bake_enable_aa -> use_bake_enable_aa: boolean Enables Anti-aliasing +RenderSettings.bake_normalized -> use_bake_normalized: boolean With displacement normalize to the distance, with ambient occlusion normalize without using material settings +RenderSettings.cineon_log -> use_cineon_log: boolean Convert to logarithmic color space +RenderSettings.color_management -> use_color_management: boolean Use color profiles and gamma corrected imaging pipeline +RenderSettings.crop_to_border -> use_crop_to_border: boolean Crop the rendered frame to the defined border size +RenderSettings.edge -> edge: boolean use_Create a toon outline around the edges of geometry +RenderSettings.exr_half -> use_exr_half: boolean Use 16 bit floats instead of 32 bit floats per channel +RenderSettings.exr_preview -> use_exr_preview: boolean When rendering animations, save JPG preview images in same directory +RenderSettings.exr_zbuf -> use_exr_zbuf: boolean Save the z-depth per pixel (32 bit unsigned int zbuffer) +RenderSettings.ffmpeg_autosplit -> use_ffmpeg_autosplit: boolean Autosplit output at 2GB boundary +RenderSettings.fields -> use_fields: boolean Render image to two fields per frame, for interlaced TV output +RenderSettings.fields_still -> use_fields_still: boolean Disable the time difference between fields +RenderSettings.free_image_textures -> use_free_image_textures: boolean Free all image texture from memory after render, to save memory before compositing +RenderSettings.free_unused_nodes -> use_free_unused_nodes: boolean Free Nodes that are not used while compositing, to save memory +RenderSettings.full_sample -> use_full_sample: boolean Save for every anti-aliasing sample the entire RenderLayer results. This solves anti-aliasing issues with compositing +RenderSettings.is_movie_format -> is_movie_format: boolean, (read-only) When true the format is a movie +RenderSettings.jpeg2k_ycc -> use_jpeg2k_ycc: boolean Save luminance-chrominance-chrominance channels instead of RGB colors +RenderSettings.motion_blur -> use_motion_blur: boolean Use multi-sampled 3D scene motion blur +TODO * RenderSettings.multiple_engines -> multiple_engines: boolean, (read-only) More than one rendering engine is available +RenderSettings.render_antialiasing -> use_render_antialiasing: boolean Render and combine multiple samples per pixel to prevent jagged edges +TODO doubled?* RenderSettings.render_stamp -> render_stamp: boolean Render the stamp info text in the rendered image +RenderSettings.save_buffers -> use_save_buffers: boolean Save tiles for all RenderLayers and SceneNodes to files in the temp directory (saves memory, required for Full Sample) +RenderSettings.simplify_triangulate -> use_simplify_triangulate: boolean Disables non-planer quads being triangulated +RenderSettings.single_layer -> use_active_layer: boolean Only render the active layer +RenderSettings.stamp_camera -> use_stamp_camera: boolean Include the name of the active camera in image metadata +RenderSettings.stamp_date -> use_stamp_date: boolean Include the current date in image metadata +RenderSettings.stamp_filename -> use_stamp_filename: boolean Include the filename of the .blend file in image metadata +RenderSettings.stamp_frame -> use_stamp_frame: boolean Include the frame number in image metadata +RenderSettings.stamp_marker -> use_stamp_marker: boolean Include the name of the last marker in image metadata +RenderSettings.stamp_note -> use_stamp_note: boolean Include a custom note in image metadata +RenderSettings.stamp_render_time -> use_stamp_render_time: boolean Include the render time in the stamp image +RenderSettings.stamp_scene -> use_stamp_scene: boolean Include the name of the active scene in image metadata +RenderSettings.stamp_sequencer_strip -> use_stamp_sequencer_strip: boolean Include the name of the foreground sequence strip in image metadata +RenderSettings.stamp_time -> use_stamp_time: boolean Include the render frame as HH:MM:SS.FF in image metadata +RenderSettings.tiff_bit -> use_tiff_bit: boolean Save TIFF with 16 bits per channel +RenderSettings.use_border -> use_border: boolean Render a user-defined border region, within the frame size. Note, this disables save_buffers and full_sample +RenderSettings.use_compositing -> use_compositing: boolean Process the render result through the compositing pipeline, if compositing nodes are enabled +RenderSettings.use_envmaps -> use_envmaps: boolean Calculate environment maps while rendering +RenderSettings.use_file_extension -> use_file_extension: boolean Add the file format extensions to the rendered file name (eg: filename + .jpg) +RenderSettings.use_game_engine -> use_game_engine: boolean, (read-only) Current rendering engine is a game engine +RenderSettings.use_instances -> use_instances: boolean Instance support leads to effective memory reduction when using duplicates +RenderSettings.use_local_coords -> use_local_coords: boolean Vertex coordinates are stored localy on each primitive. Increases memory usage, but may have impact on speed +RenderSettings.use_overwrite -> use_overwrite: boolean Overwrite existing files while rendering +RenderSettings.use_placeholder -> use_placeholder: boolean Create empty placeholder files while rendering frames (similar to Unix 'touch') +RenderSettings.use_radiosity -> use_radiosity: boolean Calculate radiosity in a pre-process before rendering +RenderSettings.use_raytracing -> use_raytracing: boolean Pre-calculate the raytrace accelerator and render raytracing effects +RenderSettings.use_sequencer -> use_sequencer: boolean Process the render (and composited) result through the video sequence editor pipeline, if sequencer strips exist +RenderSettings.use_sequencer_gl_preview -> use_sequencer_gl_preview: boolean +RenderSettings.use_sequencer_gl_render -> use_sequencer_gl_render: boolean +RenderSettings.use_shadows -> use_shadows: boolean Calculate shadows while rendering +RenderSettings.use_simplify -> use_simplify: boolean Enable simplification of scene for quicker preview renders +RenderSettings.use_sss -> use_sss: boolean Calculate sub-surface scattering in materials rendering +RenderSettings.use_textures -> use_textures: boolean Use textures to affect material properties +RigidBodyJointConstraint.disable_linked_collision -> use_disable_linked_collision: boolean Disable collision between linked bodies +RigidBodyJointConstraint.draw_pivot -> show_pivot: boolean Display the pivot point and rotation in 3D view +Scene.frame_drop -> use_frame_drop: boolean Play back dropping frames if frame display is too slow +TODO * Scene.layers -> layers: boolean Layers visible when rendering the scene +TODO * Scene.mute_audio -> mute_audio: boolean Play back of audio from Sequence Editor will be muted +TODO * Scene.nla_tweakmode_on -> is_nla_tweakmode_on: boolean, (read-only) Indicates whether there is any action referenced by NLA being edited. Strictly read-only +Scene.pov_radio_always_sample -> use_pov_radio_always_sample: boolean Only use the data from the pretrace step and not gather any new samples during the final radiosity pass +Scene.pov_radio_display_advanced -> show_pov_radio_advanced: boolean Show advanced options +Scene.pov_radio_enable -> use_pov_radio_enable: boolean Enable povrays radiosity calculation +Scene.pov_radio_media -> use_pov_radio_media: boolean Radiosity estimation can be affected by media +Scene.pov_radio_normal -> use_pov_radio_normal: boolean Radiosity estimation can be affected by normals +Scene.scrub_audio -> use_scrub_audio: boolean Play audio from Sequence Editor while scrubbing +Scene.sync_audio -> use_sync_audio: boolean Play back and sync with audio clock, dropping frames if frame display is too slow +Scene.use_gravity -> use_gravity: boolean Use global gravity for all dynamics +Scene.use_nodes -> use_nodes: boolean Enable the compositing node tree +Scene.use_preview_range -> use_preview_range: boolean Use an alternative start/end frame for UI playback, rather than the scene start/end frame +SceneGameData.activity_culling -> use_activity_culling: boolean Activity culling is enabled +SceneGameData.auto_start -> use_auto_start: boolean Automatically start game at load time +SceneGameData.fullscreen -> show_fullscreen: boolean Starts player in a new fullscreen display +SceneGameData.glsl_extra_textures -> use_glsl_extra_textures: boolean Use extra textures like normal or specular maps for GLSL rendering +SceneGameData.glsl_lights -> use_glsl_lights: boolean Use lights for GLSL rendering +SceneGameData.glsl_nodes -> use_glsl_nodes: boolean Use nodes for GLSL rendering +SceneGameData.glsl_ramps -> use_glsl_ramps: boolean Use ramps for GLSL rendering +SceneGameData.glsl_shaders -> use_glsl_shaders: boolean Use shaders for GLSL rendering +SceneGameData.glsl_shadows -> use_glsl_shadows: boolean Use shadows for GLSL rendering +SceneGameData.show_debug_properties -> show_debug_properties: boolean Show properties marked for debugging while the game runs +SceneGameData.show_framerate_profile -> show_framerate_profile: boolean Show framerate and profiling information while the game runs +SceneGameData.show_physics_visualization -> show_physics_visualization: boolean Show a visualization of physics bounds and interactions +SceneGameData.use_animation_record -> use_animation_record: boolean Record animation to fcurves +SceneGameData.use_deprecation_warnings -> use_deprecation_warnings: boolean Print warnings when using deprecated features in the python API +SceneGameData.use_display_lists -> use_display_lists: boolean Use display lists to speed up rendering by keeping geometry on the GPU +SceneGameData.use_frame_rate -> use_frame_rate: boolean Respect the frame rate rather than rendering as many frames as possible +SceneGameData.use_occlusion_culling -> use_occlusion_culling: boolean Use optimized Bullet DBVT tree for view frustum and occlusion culling +SceneRenderLayer.all_z -> use_all_z: boolean Fill in Z values for solid faces in invisible layers, for masking +SceneRenderLayer.edge -> use_edge: boolean Render Edge-enhance in this Layer (only works for Solid faces) +TODO * SceneRenderLayer.enabled -> enabled: boolean Disable or enable the render layer +SceneRenderLayer.halo -> use_halo: boolean Render Halos in this Layer (on top of Solid) +SceneRenderLayer.pass_ao -> use_pass_ao: boolean Deliver AO pass +SceneRenderLayer.pass_ao_exclude -> use_pass_ao_exclude: boolean Exclude AO pass from combined +SceneRenderLayer.pass_color -> use_pass_color: boolean Deliver shade-less color pass +SceneRenderLayer.pass_combined -> use_pass_combined: boolean Deliver full combined RGBA buffer +SceneRenderLayer.pass_diffuse -> use_pass_diffuse: boolean Deliver diffuse pass +SceneRenderLayer.pass_emit -> use_pass_emit: boolean Deliver emission pass +SceneRenderLayer.pass_emit_exclude -> use_pass_emit_exclude: boolean Exclude emission pass from combined +SceneRenderLayer.pass_environment -> use_pass_environment: boolean Deliver environment lighting pass +SceneRenderLayer.pass_environment_exclude -> use_pass_environment_exclude: boolean Exclude environment pass from combined +SceneRenderLayer.pass_indirect -> use_pass_indirect: boolean Deliver indirect lighting pass +SceneRenderLayer.pass_indirect_exclude -> use_pass_indirect_exclude: boolean Exclude indirect pass from combined +SceneRenderLayer.pass_mist -> use_pass_mist: boolean Deliver mist factor pass (0.0-1.0) +SceneRenderLayer.pass_normal -> use_pass_normal: boolean Deliver normal pass +SceneRenderLayer.pass_object_index -> use_pass_object_index: boolean Deliver object index pass +SceneRenderLayer.pass_reflection -> use_pass_reflection: boolean Deliver raytraced reflection pass +SceneRenderLayer.pass_reflection_exclude -> use_pass_reflection_exclude: boolean Exclude raytraced reflection pass from combined +SceneRenderLayer.pass_refraction -> use_pass_refraction: boolean Deliver raytraced refraction pass +SceneRenderLayer.pass_refraction_exclude -> use_pass_refraction_exclude: boolean Exclude raytraced refraction pass from combined +SceneRenderLayer.pass_shadow -> use_pass_shadow: boolean Deliver shadow pass +SceneRenderLayer.pass_shadow_exclude -> use_pass_shadow_exclude: boolean Exclude shadow pass from combined +SceneRenderLayer.pass_specular -> use_pass_specular: boolean Deliver specular pass +SceneRenderLayer.pass_specular_exclude -> use_pass_specular_exclude: boolean Exclude specular pass from combined +SceneRenderLayer.pass_uv -> use_pass_uv: boolean Deliver texture UV pass +SceneRenderLayer.pass_vector -> use_pass_vector: boolean Deliver speed vector pass +SceneRenderLayer.pass_z -> use_pass_z: boolean Deliver Z values pass +SceneRenderLayer.sky -> use_sky: boolean Render Sky in this Layer +SceneRenderLayer.solid -> use_solid: boolean Render Solid faces in this Layer +SceneRenderLayer.strand -> use_strand: boolean Render Strands in this Layer +SceneRenderLayer.visible_layers -> visible_layers: boolean Scene layers included in this render layer +SceneRenderLayer.zmask -> use_zmask: boolean Only render what's in front of the solid z values +SceneRenderLayer.zmask_layers -> use_zmask_layers: boolean Zmask scene layers +SceneRenderLayer.zmask_negate -> use_zmask_negate: boolean For Zmask, only render what is behind solid z values instead of in front +SceneRenderLayer.ztransp -> use_ztransp: boolean Render Z-Transparent faces in this Layer (On top of Solid and Halos) +TODO * SceneSequence.convert_float -> convert_float: boolean Convert input to float data +TODO * SceneSequence.de_interlace -> de_interlace: boolean For video movies to remove fields +TODO * SceneSequence.flip_x -> flip_x: boolean Flip on the X axis +TODO * SceneSequence.flip_y -> flip_y: boolean Flip on the Y axis +TODO * SceneSequence.premultiply -> premultiply: boolean Convert RGB from key alpha to premultiplied alpha +TODO * SceneSequence.proxy_custom_directory -> proxy_custom_directory: boolean Use a custom directory to store data +TODO * SceneSequence.proxy_custom_file -> proxy_custom_file: boolean Use a custom file to read proxy data from +TODO * SceneSequence.reverse_frames -> reverse_frames: boolean Reverse frame order +TODO * SceneSequence.use_color_balance -> use_color_balance: boolean (3-Way color correction) on input +TODO * SceneSequence.use_crop -> use_crop: boolean Crop image before processing +TODO * SceneSequence.use_proxy -> use_proxy: boolean Use a preview proxy for this strip +TODO * SceneSequence.use_translation -> use_translation: boolean Translate image before processing +Scopes.use_full_resolution -> use_full_resolution: boolean Sample every pixel of the image +Screen.animation_playing -> is_animation_playing: boolean, (read-only) Animation playback is active +Screen.fullscreen -> is_fullscreen: boolean, (read-only) An area is maximised, filling this screen +ScrewModifier.use_normal_calculate -> use_normal_calculate: boolean Calculate the order of edges (needed for meshes, but not curves) +ScrewModifier.use_normal_flip -> use_normal_flip: boolean Flip normals of lathed faces +ScrewModifier.use_object_screw_offset -> use_object_screw_offset: boolean Use the distance between the objects to make a screw +Sculpt.lock_x -> lock_x: boolean Disallow changes to the X axis of vertices +Sculpt.lock_y -> lock_y: boolean Disallow changes to the Y axis of vertices +Sculpt.lock_z -> lock_z: boolean Disallow changes to the Z axis of vertices +Sculpt.symmetry_x -> use_symmetry_x: boolean Mirror brush across the X axis +Sculpt.symmetry_y -> use_symmetry_y: boolean Mirror brush across the Y axis +Sculpt.symmetry_z -> use_symmetry_z: boolean Mirror brush across the Z axis +Sensor.expanded -> show_expanded: boolean Set sensor expanded in the user interface +TODO * Sensor.invert -> invert: boolean Invert the level(output) of this sensor +TODO * Sensor.level -> level: boolean Level detector, trigger controllers of new states(only applicable upon logic state transition) +Sensor.pulse_false_level -> use_pulse_false_level: boolean Activate FALSE level triggering (pulse mode) +Sensor.pulse_true_level -> use_pulse_true_level: boolean Activate TRUE level triggering (pulse mode) +Sensor.tap -> use_tap: boolean Trigger controllers only for an instant, even while the sensor remains true +TODO * Sequence.frame_locked -> frame_locked: boolean Lock the animation curve to the global frame counter +TODO * Sequence.left_handle_selected -> left_handle_selected: boolean +TODO * Sequence.lock -> lock: boolean Lock strip so that it can't be transformed +TODO * Sequence.mute -> mute: boolean +TODO * Sequence.right_handle_selected -> right_handle_selected: boolean +TODO * Sequence.selected -> selected: boolean +TODO * Sequence.use_effect_default_fade -> use_effect_default_fade: boolean Fade effect using the built-in default (usually make transition as long as effect strip) +SequenceColorBalance.inverse_gain -> invert_gain: boolean +SequenceColorBalance.inverse_gamma -> invert_gamma: boolean +SequenceColorBalance.inverse_lift -> invert_lift: boolean +ShaderNodeExtendedMaterial.diffuse -> use_diffuse: boolean Material Node outputs Diffuse +ShaderNodeExtendedMaterial.invert_normal -> invert_normal: boolean Material Node uses inverted normal +ShaderNodeExtendedMaterial.specular -> use_specular: boolean Material Node outputs Specular +ShaderNodeMapping.clamp_maximum -> use_clamp_to_maximum: boolean Clamp the output coordinate to a maximum value +ShaderNodeMapping.clamp_minimum -> use_clamp_to_minimum: boolean Clamp the output coordinate to a minimum value +ShaderNodeMaterial.diffuse -> use_diffuse: boolean Material Node outputs Diffuse +ShaderNodeMaterial.invert_normal -> invert_normal: boolean Material Node uses inverted normal +ShaderNodeMaterial.specular -> use_specular: boolean Material Node outputs Specular +ShaderNodeMixRGB.alpha -> use_alpha: boolean Include alpha of second input in this operation +ShapeActionActuator.continue_last_frame -> use_continue_last_frame: boolean Restore last frame when switching on/off, otherwise play from the start each time +TODO * ShapeKey.mute -> mute: boolean Mute this shape key +TODO see below * ShrinkwrapConstraint.use_x -> use_x: boolean Projection over X Axis +TODO see below* ShrinkwrapConstraint.use_y -> use_y: boolean Projection over Y Axis +TODO see below* ShrinkwrapConstraint.use_z -> use_z: boolean Projection over Z Axis +ShrinkwrapModifier.cull_back_faces -> use_cull_back_faces: boolean Stop vertices from projecting to a back face on the target +ShrinkwrapModifier.cull_front_faces -> use_cull_front_faces: boolean Stop vertices from projecting to a front face on the target +ShrinkwrapModifier.keep_above_surface -> use_keep_above_surface: boolean +TODO * ShrinkwrapModifier.negative -> negative: boolean Allow vertices to move in the negative direction of axis +TODO * ShrinkwrapModifier.positive -> positive: boolean Allow vertices to move in the positive direction of axis +ShrinkwrapModifier.x -> use_x: boolean +ShrinkwrapModifier.y -> use_y: boolean +ShrinkwrapModifier.z -> use_z: boolean +SimpleDeformModifier.lock_x_axis -> lock_axis_x: boolean +SimpleDeformModifier.lock_y_axis -> lock_axis_y: boolean +SimpleDeformModifier.relative -> use_relative: boolean Sets the origin of deform space to be relative to the object +SmokeDomainSettings.dissolve_smoke -> use_dissolve_smoke: boolean Enable smoke to disappear over time +SmokeDomainSettings.dissolve_smoke_log -> use_dissolve_smoke_log: boolean Using 1/x +SmokeDomainSettings.highres -> use_highres: boolean Enable high resolution (using amplification) +SmokeDomainSettings.initial_velocity -> use_initial_velocity: boolean Smoke inherits it's velocity from the emitter particle +SmokeDomainSettings.viewhighres -> show_highres: boolean Show high resolution (using amplification) +NEGATE * SmokeFlowSettings.outflow -> use_outflow: boolean Deletes smoke from simulation +SmoothModifier.x -> use_x: boolean +SmoothModifier.y -> use_y: boolean +SmoothModifier.z -> use_z: boolean +SoftBodySettings.auto_step -> use_auto_step: boolean Use velocities for automagic step sizes +SoftBodySettings.diagnose -> use_diagnose: boolean Turn on SB diagnose console prints +SoftBodySettings.edge_collision -> use_edge_collision: boolean Edges collide too +SoftBodySettings.estimate_matrix -> use_estimate_matrix: boolean estimate matrix .. split to COM , ROT ,SCALE +SoftBodySettings.face_collision -> use_face_collision: boolean Faces collide too, SLOOOOOW warning +SoftBodySettings.new_aero -> use_new_aero: boolean New aero(uses angle and length) +SoftBodySettings.self_collision -> use_self_collision: boolean Enable naive vertex ball self collision +SoftBodySettings.stiff_quads -> use_stiff_quads: boolean Adds diagonal springs on 4-gons +SoftBodySettings.use_edges -> use_edges: boolean Use Edges as springs +SoftBodySettings.use_goal -> use_goal: boolean Define forces for vertices to stick to animated position +TODO * SolidifyModifier.invert -> invert_vertex_groups_influence: boolean Invert the vertex group influence +SolidifyModifier.use_even_offset -> use_even_offset: boolean Maintain thickness by adjusting for sharp corners (slow, disable when not needed) +SolidifyModifier.use_quality_normals -> use_quality_normals: boolean Calculate normals which result in more even thickness (slow, disable when not needed) +SolidifyModifier.use_rim -> use_rim: boolean Create edge loops between the inner and outer surfaces on face edges (slow, disable when not needed) +SolidifyModifier.use_rim_material -> use_rim_material: boolean Use in the next material for rim faces +Sound.caching -> use_ram_caching: boolean The sound file is decoded and loaded into RAM +SoundActuator.enable_sound_3d -> use_sound_3d: boolean Enable/Disable 3D Sound +SpaceConsole.show_report_debug -> show_report_debug: boolean Display debug reporting info +SpaceConsole.show_report_error -> show_report_error: boolean Display error text +SpaceConsole.show_report_info -> show_report_info: boolean Display general information +SpaceConsole.show_report_operator -> show_report_operator: boolean Display the operator log +SpaceConsole.show_report_warn -> show_report_warn: boolean Display warnings +SpaceDopeSheetEditor.automerge_keyframes -> show_automerge_keyframes: boolean Show handles of Bezier control points +SpaceDopeSheetEditor.realtime_updates -> use_realtime_updates: boolean When transforming keyframes, changes to the animation data are flushed to other views +SpaceDopeSheetEditor.show_cframe_indicator -> show_cframe_indicator: boolean Show frame number beside the current frame indicator line +SpaceDopeSheetEditor.show_seconds -> show_seconds: boolean, (read-only) Show timing in seconds not frames +SpaceDopeSheetEditor.show_sliders -> show_sliders: boolean Show sliders beside F-Curve channels +SpaceDopeSheetEditor.use_marker_sync -> use_marker_sync: boolean Sync Markers with keyframe edits +SpaceGraphEditor.automerge_keyframes -> show_automerge_keyframes: boolean Show handles of Bezier control points +TODO * SpaceGraphEditor.has_ghost_curves -> has_ghost_curves: boolean Graph Editor instance has some ghost curves stored +SpaceGraphEditor.only_selected_curves_handles -> use_only_selected_curves_handles: boolean Only keyframes of selected F-Curves are visible and editable +SpaceGraphEditor.only_selected_keyframe_handles -> use_only_selected_keyframe_handles: boolean Only show and edit handles of selected keyframes +SpaceGraphEditor.realtime_updates -> use_realtime_updates: boolean When transforming keyframes, changes to the animation data are flushed to other views +SpaceGraphEditor.show_cframe_indicator -> show_cframe_indicator: boolean Show frame number beside the current frame indicator line +SpaceGraphEditor.show_cursor -> show_cursor: boolean Show 2D cursor +SpaceGraphEditor.show_handles -> show_handles: boolean Show handles of Bezier control points +SpaceGraphEditor.show_seconds -> show_seconds: boolean, (read-only) Show timing in seconds not frames +SpaceGraphEditor.show_sliders -> show_sliders: boolean Show sliders beside F-Curve channels +SpaceImageEditor.draw_repeated -> show_repeated: boolean Draw the image repeated outside of the main view +SpaceImageEditor.image_painting -> use_image_painting: boolean Enable image painting mode +SpaceImageEditor.image_pin -> show_image_pin: boolean Display current image regardless of object selection +SpaceImageEditor.show_paint -> show_paint: boolean, (read-only) Show paint related properties +SpaceImageEditor.show_render -> show_render: boolean, (read-only) Show render related properties +SpaceImageEditor.show_uvedit -> show_uvedit: boolean, (read-only) Show UV editing related properties +SpaceImageEditor.update_automatically -> use_update_automatically: boolean Update other affected window spaces automatically to reflect changes during interactive operations such as transform +SpaceImageEditor.use_grease_pencil -> use_grease_pencil: boolean Display and edit the grease pencil freehand annotations overlay +SpaceLogicEditor.actuators_show_active_objects -> show_actuators_active_objects: boolean Show actuators of active object +SpaceLogicEditor.actuators_show_active_states -> show_actuators_active_states: boolean Show only actuators connected to active states +SpaceLogicEditor.actuators_show_linked_controller -> show_actuators_linked_controller: boolean Show linked objects to the actuator +SpaceLogicEditor.actuators_show_selected_objects -> show_actuators_selected_objects: boolean Show actuators of all selected objects +SpaceLogicEditor.controllers_show_active_objects -> show_controllers_active_objects: boolean Show controllers of active object +SpaceLogicEditor.controllers_show_linked_controller -> show_controllers_linked_controller: boolean Show linked objects to sensor/actuator +SpaceLogicEditor.controllers_show_selected_objects -> show_controllers_selected_objects: boolean Show controllers of all selected objects +SpaceLogicEditor.sensors_show_active_objects -> show_sensors_active_objects: boolean Show sensors of active object +SpaceLogicEditor.sensors_show_active_states -> show_sensors_active_states: boolean Show only sensors connected to active states +SpaceLogicEditor.sensors_show_linked_controller -> show_sensors_linked_controller: boolean Show linked objects to the controller +SpaceLogicEditor.sensors_show_selected_objects -> show_sensors_selected_objects: boolean Show sensors of all selected objects +SpaceNLA.realtime_updates -> use_realtime_updates: boolean When transforming strips, changes to the animation data are flushed to other views +SpaceNLA.show_cframe_indicator -> show_cframe_indicator: boolean Show frame number beside the current frame indicator line +SpaceNLA.show_seconds -> show_seconds: boolean, (read-only) Show timing in seconds not frames +SpaceNLA.show_strip_curves -> show_strip_curves: boolean Show influence curves on strips +SpaceNodeEditor.backdrop -> show_backdrop: boolean Use active Viewer Node output as backdrop for compositing nodes +SpaceOutliner.match_case_sensitive -> use_match_case_sensitive: boolean Only use case sensitive matches of search string +SpaceOutliner.match_complete -> use_match_complete: boolean Only use complete matches of search string +SpaceOutliner.show_restriction_columns -> show_restriction_columns: boolean Show column +SpaceProperties.brush_texture -> show_brush_texture: boolean Show brush textures +SpaceProperties.use_pin_id -> use_pin_id: boolean Use the pinned context +TODO * SpaceSequenceEditor.draw_frames -> draw_frames: boolean Draw frames rather than seconds +TODO * SpaceSequenceEditor.draw_safe_margin -> draw_safe_margin: boolean Draw title safe margins in preview +TODO * SpaceSequenceEditor.separate_color_preview -> separate_color_preview: boolean Separate color channels in preview +TODO * SpaceSequenceEditor.show_cframe_indicator -> show_cframe_indicator: boolean Show frame number beside the current frame indicator line +TODO * SpaceSequenceEditor.use_grease_pencil -> use_grease_pencil: boolean Display and edit the grease pencil freehand annotations overlay +TODO * SpaceSequenceEditor.use_marker_sync -> use_marker_sync: boolean Transform markers as well as strips +SpaceTextEditor.find_all -> use_find_all: boolean Search in all text datablocks, instead of only the active one +SpaceTextEditor.find_wrap -> use_find_wrap: boolean Search again from the start of the file when reaching the end +SpaceTextEditor.line_numbers -> show_line_numbers: boolean Show line numbers next to the text +SpaceTextEditor.live_edit -> use_live_edit: boolean Run python while editing +SpaceTextEditor.overwrite -> use_overwrite: boolean Overwrite characters when typing rather than inserting them +SpaceTextEditor.syntax_highlight -> use_syntax_highlight: boolean Syntax highlight for scripting +SpaceTextEditor.word_wrap -> use_word_wrap: boolean Wrap words if there is not enough horizontal space +SpaceTimeline.only_selected -> use_only_selected: boolean Show keyframes for active Object and/or its selected channels only +SpaceTimeline.play_all_3d -> use_play_all_3d: boolean +SpaceTimeline.play_anim -> use_play_anim: boolean +SpaceTimeline.play_buttons -> use_play_buttons: boolean +SpaceTimeline.play_image -> use_play_image: boolean +SpaceTimeline.play_nodes -> use_play_nodes: boolean +SpaceTimeline.play_sequencer -> use_play_sequencer: boolean +SpaceTimeline.play_top_left -> use_play_top_left: boolean +SpaceTimeline.show_cframe_indicator -> show_cframe_indicator: boolean Show frame number beside the current frame indicator line +SpaceUVEditor.constrain_to_image_bounds -> use_constrain_to_image_bounds: boolean Constraint to stay within the image bounds while editing +SpaceUVEditor.draw_modified_edges -> show_modified_edges: boolean Draw edges after modifiers are applied +SpaceUVEditor.draw_other_objects -> show_other_objects: boolean Draw other selected objects that share the same image +SpaceUVEditor.draw_smooth_edges -> show_smooth_edges: boolean Draw UV edges anti-aliased +SpaceUVEditor.draw_stretch -> show_stretch: boolean Draw faces colored according to the difference in shape between UVs and their 3D coordinates (blue for low distortion, red for high distortion) +SpaceUVEditor.live_unwrap -> use_live_unwrap: boolean Continuously unwrap the selected UV island while transforming pinned vertices +SpaceUVEditor.normalized_coordinates -> show_normalized_coordinates: boolean Display UV coordinates from 0.0 to 1.0 rather than in pixels +SpaceUVEditor.snap_to_pixels -> use_snap_to_pixels: boolean Snap UVs to pixel locations while editing +SpaceView3D.all_object_origins -> show_all_objects_origin: boolean Show the object origin center dot for all (selected and unselected) objects +SpaceView3D.display_background_images -> show_background_images: boolean Display reference images behind objects in the 3D View +SpaceView3D.display_floor -> show_floor: boolean Show the ground plane grid in perspective view +SpaceView3D.display_render_override -> show_render_override: boolean Display only objects which will be rendered +SpaceView3D.display_x_axis -> show_axis_x: boolean Show the X axis line in perspective view +SpaceView3D.display_y_axis -> show_axis_y: boolean Show the Y axis line in perspective view +SpaceView3D.display_z_axis -> show_axis_z: boolean Show the Z axis line in perspective view +TODO * SpaceView3D.layers -> layers: boolean Layers visible in this 3D View +SpaceView3D.lock_camera_and_layers -> lock_camera_and_layers: boolean Use the scene's active camera and layers in this view, rather than local layers +SpaceView3D.manipulator -> use_manipulator: boolean Use a 3D manipulator widget for controlling transforms +SpaceView3D.manipulator_rotate -> use_manipulator_rotate: boolean Use the manipulator for rotation transformations +SpaceView3D.manipulator_scale -> use_manipulator_scale: boolean Use the manipulator for scale transformations +SpaceView3D.manipulator_translate -> use_manipulator_translate: boolean Use the manipulator for movement transformations +SpaceView3D.occlude_geometry -> use_occlude_geometry: boolean Limit selection to visible (clipped with depth buffer) +SpaceView3D.outline_selected -> show_outline_selected: boolean Show an outline highlight around selected objects in non-wireframe views +SpaceView3D.pivot_point_align -> use_pivot_point_align: boolean Manipulate object centers only +SpaceView3D.relationship_lines -> show_relationship_lines: boolean Show dashed lines indicating parent or constraint relationships +SpaceView3D.textured_solid -> show_textured_solid: boolean Display face-assigned textures in solid view +TODO * SpaceView3D.used_layers -> used_layers: boolean, (read-only) Layers that contain something +SpeedControlSequence.curve_compress_y -> use_curve_compress_y: boolean Scale F-Curve value to get the target frame number, F-Curve value runs from 0.0 to 1.0 +SpeedControlSequence.curve_velocity -> use_curve_velocity: boolean Interpret the F-Curve value as a velocity instead of a frame number +SpeedControlSequence.frame_blending -> use_frame_blending: boolean Blend two frames into the target for a smoother result +Spline.bezier_u -> use_bezier_u: boolean Make this nurbs curve or surface act like a bezier spline in the U direction (Order U must be 3 or 4, Cyclic U must be disabled) +Spline.bezier_v -> use_bezier_v: boolean Make this nurbs surface act like a bezier spline in the V direction (Order V must be 3 or 4, Cyclic V must be disabled) +Spline.cyclic_u -> use_cyclic_u: boolean Make this curve or surface a closed loop in the U direction +Spline.cyclic_v -> use_cyclic_v: boolean Make this surface a closed loop in the V direction +Spline.endpoint_u -> use_endpoint_u: boolean Make this nurbs curve or surface meet the endpoints in the U direction (Cyclic U must be disabled) +Spline.endpoint_v -> use_endpoint_v: boolean Make this nurbs surface meet the endpoints in the V direction (Cyclic V must be disabled) +TODO * Spline.hide -> hide: boolean Hide this curve in editmode +Spline.smooth -> use_smooth: boolean Smooth the normals of the surface or beveled curve +SplineIKConstraint.chain_offset -> use_chain_offset: boolean Offset the entire chain relative to the root joint +TODO * SplineIKConstraint.even_divisions -> use_even_divisions: boolean Ignore the relative lengths of the bones when fitting to the curve +SplineIKConstraint.use_curve_radius -> use_curve_radius: boolean Average radius of the endpoints is used to tweak the X and Z Scaling of the bones, on top of XZ Scale mode +SplineIKConstraint.y_stretch -> use_y_stretch: boolean Stretch the Y axis of the bones to fit the curve +TODO * SplinePoint.hidden -> hidden: boolean Visibility status +TODO * SplinePoint.selected -> selected: boolean Selection status +SpotLamp.auto_clip_end -> use_auto_clip_end: boolean Automatic calculation of clipping-end, based on visible vertices +SpotLamp.auto_clip_start -> use_auto_clip_start: boolean Automatic calculation of clipping-start, based on visible vertices +SpotLamp.halo -> use_halo: boolean Renders spotlight with a volumetric halo (Buffer Shadows) +SpotLamp.only_shadow -> use_shadow_only: boolean Causes light to cast shadows only without illuminating objects +SpotLamp.shadow_layer -> use_shadow_own_layer: boolean Causes only objects on the same layer to cast shadows +SpotLamp.show_cone -> show_cone: boolean Draw transparent cone in 3D view to visualize which objects are contained in it +SpotLamp.sphere -> use_sphere: boolean Sets light intensity to zero beyond lamp distance +SpotLamp.square -> use_square: boolean Casts a square spot light shape +TODO * StateActuator.state -> state: boolean +SubsurfModifier.optimal_display -> show_optimal: boolean Skip drawing/rendering of interior subdivided edges +SubsurfModifier.subsurf_uv -> use_subsurf_uv: boolean Use subsurf to subdivide UVs +SunLamp.only_shadow -> use_shadow_only: boolean Causes light to cast shadows only without illuminating objects +SunLamp.shadow_layer -> use_shadow_own_layer: boolean Causes only objects on the same layer to cast shadows +SurfaceCurve.map_along_length -> use_map_along_length: boolean Generate texture mapping coordinates following the curve direction, rather than the local bounding box +SurfaceCurve.vertex_normal_flip -> use_vertex_normal_flip: boolean Flip vertex normals towards the camera during render +TexMapping.has_maximum -> use_clip_to_maximum: boolean Whether to use maximum clipping value +TexMapping.has_minimum -> use_clip_to_minimum: boolean Whether to use minimum clipping value +Text.dirty -> is_dirty: boolean, (read-only) Text file has been edited since last save +Text.memory -> is_in_memory: boolean, (read-only) Text file is in memory, without a corresponding file on disk +Text.modified -> is_modified: boolean, (read-only) Text file on disk is different than the one in memory +Text.tabs_as_spaces -> use_tabs_as_spaces: boolean Automatically converts all new tabs into spaces +Text.use_module -> use_module: boolean Register this text as a module on loading, Text name must end with '.py' +TextCharacterFormat.bold -> use_bold: boolean +TextCharacterFormat.italic -> use_italic: boolean +TextCharacterFormat.style -> use_style: boolean +TextCharacterFormat.underline -> use_underline: boolean +TextCharacterFormat.wrap -> use_wrap: boolean +TextCurve.fast -> use_fast_editing: boolean Don't fill polygons while editing +TextCurve.map_along_length -> use_map_along_length: boolean Generate texture mapping coordinates following the curve direction, rather than the local bounding box +TextCurve.vertex_normal_flip -> use_vertex_normal_flip: boolean Flip vertex normals towards the camera during render +TextMarker.edit_all -> use_edit_all: boolean, (read-only) Edit all markers of the same group as one +TODO * TextMarker.temporary -> is_temporary: boolean, (read-only) Marker is temporary +Texture.use_color_ramp -> use_color_ramp: boolean Toggle color ramp operations +Texture.use_nodes -> use_nodes: boolean Make this a node-based texture +Texture.use_preview_alpha -> use_preview_alpha: boolean Show Alpha in Preview Render +TextureNodeMixRGB.alpha -> use_alpha: boolean Include alpha of second input in this operation +TextureSlot.negate -> use_negate: boolean Inverts the values of the texture to reverse its effect +TextureSlot.rgb_to_intensity -> use_rgb_to_intensity: boolean Converts texture RGB values to intensity (gray) values +TextureSlot.stencil -> use_stencil: boolean Use this texture as a blending value on the next texture +ThemeBoneColorSet.colored_constraints -> show_colored_constraints: boolean Allow the use of colors indicating constraints/keyed status +ThemeWidgetColors.shaded -> show_shaded: boolean +TODO * TimelineMarker.selected -> selected: boolean Marker selection state +ToolSettings.auto_normalize -> use_auto_normalize: boolean Ensure all bone-deforming vertex groups add up to 1.0 while weight painting +ToolSettings.automerge_editing -> use_automerge_editing: boolean Automatically merge vertices moved to the same location +ToolSettings.bone_sketching -> use_bone_sketching: boolean DOC BROKEN +ToolSettings.etch_autoname -> use_etch_autoname: boolean DOC BROKEN +ToolSettings.etch_overdraw -> use_etch_overdraw: boolean DOC BROKEN +ToolSettings.etch_quick -> use_etch_quick: boolean DOC BROKEN +ToolSettings.mesh_selection_mode -> use_mesh_selection_mode: boolean Which mesh elements selection works on +ToolSettings.record_with_nla -> use_record_with_nla: boolean Add a new NLA Track + Strip for every loop/pass made over the animation to allow non-destructive tweaking +ToolSettings.snap -> use_snap: boolean Snap during transform +ToolSettings.snap_align_rotation -> use_snap_align_rotation: boolean Align rotation with the snapping target +ToolSettings.snap_peel_object -> use_snap_peel_object: boolean Consider objects as whole when finding volume center +ToolSettings.snap_project -> use_snap_project: boolean Project vertices on the surface of other objects +ToolSettings.use_auto_keying -> use_keyframe_insert_auto: boolean Automatic keyframe insertion for Objects and Bones +TODO * ToolSettings.uv_local_view -> showonly_uv_local_view: boolean Draw only faces with the currently displayed image assigned +ToolSettings.uv_sync_selection -> use_uv_sync_selection: boolean Keep UV and edit mode mesh selection in sync +TrackToConstraint.target_z -> use_target_z: boolean Target's Z axis, not World Z axis, will constraint the Up direction +TransformConstraint.extrapolate_motion -> use_motion_extrapolate: boolean Extrapolate ranges +TransformSequence.uniform_scale -> use_uniform_scale: boolean Scale uniformly, preserving aspect ratio +UILayout.active -> active: boolean +UILayout.enabled -> enabled: boolean +UVProjectModifier.override_image -> show_override_image: boolean Override faces' current images with the given image +UnitSettings.use_separate -> use_separate: boolean Display units in pairs +UserPreferencesEdit.auto_keyframe_insert_available -> use_keyframe_insert_auto_available: boolean Automatic keyframe insertion in available curves +UserPreferencesEdit.auto_keyframe_insert_keyingset -> use_keyframe_insert_auto_keyingset: boolean Automatic keyframe insertion using active Keying Set +UserPreferencesEdit.drag_immediately -> use_drag_immediately: boolean Moving things with a mouse drag confirms when releasing the button +UserPreferencesEdit.duplicate_action -> use_duplicate_action: boolean Causes actions to be duplicated with the object +UserPreferencesEdit.duplicate_armature -> use_duplicate_armature: boolean Causes armature data to be duplicated with the object +UserPreferencesEdit.duplicate_curve -> use_duplicate_curve: boolean Causes curve data to be duplicated with the object +UserPreferencesEdit.duplicate_fcurve -> use_duplicate_fcurve: boolean Causes F-curve data to be duplicated with the object +UserPreferencesEdit.duplicate_lamp -> use_duplicate_lamp: boolean Causes lamp data to be duplicated with the object +UserPreferencesEdit.duplicate_material -> use_duplicate_material: boolean Causes material data to be duplicated with the object +UserPreferencesEdit.duplicate_mesh -> use_duplicate_mesh: boolean Causes mesh data to be duplicated with the object +UserPreferencesEdit.duplicate_metaball -> use_duplicate_metaball: boolean Causes metaball data to be duplicated with the object +UserPreferencesEdit.duplicate_particle -> use_duplicate_particle: boolean Causes particle systems to be duplicated with the object +UserPreferencesEdit.duplicate_surface -> use_duplicate_surface: boolean Causes surface data to be duplicated with the object +UserPreferencesEdit.duplicate_text -> use_duplicate_text: boolean Causes text data to be duplicated with the object +UserPreferencesEdit.duplicate_texture -> use_duplicate_texture: boolean Causes texture data to be duplicated with the object +UserPreferencesEdit.enter_edit_mode -> use_enter_edit_mode: boolean Enter Edit Mode automatically after adding a new object +UserPreferencesEdit.global_undo -> use_global_undo: boolean Global undo works by keeping a full copy of the file itself in memory, so takes extra memory +UserPreferencesEdit.grease_pencil_simplify_stroke -> use_grease_pencil_simplify_stroke: boolean Simplify the final stroke +UserPreferencesEdit.grease_pencil_smooth_stroke -> use_grease_pencil_smooth_stroke: boolean Smooth the final stroke +UserPreferencesEdit.insertkey_xyz_to_rgb -> show_insertkey_xyz_to_rgb: boolean Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis +UserPreferencesEdit.keyframe_insert_needed -> use_keyframe_insert_needed: boolean Keyframe insertion only when keyframe needed +UserPreferencesEdit.snap_rotate -> use_snap_grid_rotate: boolean Snap objects and sub-objects to grid units when rotating +UserPreferencesEdit.snap_scale -> use_snap_grid_scale: boolean Snap objects and sub-objects to grid units when scaling +UserPreferencesEdit.snap_translate -> use_snap_grid_translate: boolean Snap objects and sub-objects to grid units when moving +UserPreferencesEdit.use_auto_keying -> use_auto_keying: boolean Automatic keyframe insertion for Objects and Bones +UserPreferencesEdit.use_negative_frames -> use_negative_frames: boolean Current frame number can be manually set to a negative value +UserPreferencesEdit.use_visual_keying -> show_visual_keying: boolean Use Visual keying automatically for constrained objects + +UserPreferencesFilePaths.auto_save_temporary_files -> use_auto_save_temporary_files: boolean Automatic saving of temporary files +UserPreferencesFilePaths.compress_file -> use_file_compression: boolean Enable file compression when saving .blend files +UserPreferencesFilePaths.filter_file_extensions -> showonly_file_extensions: boolean Display only files with extensions in the image select window +UserPreferencesFilePaths.hide_dot_files_datablocks -> show_dot_files_datablocks: boolean Hide files/datablocks that start with a dot(.*) +UserPreferencesFilePaths.load_ui -> use_load_ui: boolean Load user interface setup when loading .blend files +UserPreferencesFilePaths.save_preview_images -> use_save_preview_images: boolean Enables automatic saving of preview images in the .blend file +UserPreferencesFilePaths.use_relative_paths -> use_relative_paths: boolean Default relative path option for the file selector +UserPreferencesInput.continuous_mouse -> use_continuous_mouse: boolean Allow moving the mouse outside the view on some manipulations (transform, ui control drag) +UserPreferencesInput.emulate_3_button_mouse -> use_emulate_3_button_mouse: boolean Emulates Middle Mouse with Alt+LeftMouse (doesn't work with Left Mouse Select option) +UserPreferencesInput.emulate_numpad -> use_emulate_numpad: boolean Causes the 1 to 0 keys to act as the numpad (useful for laptops) +UserPreferencesInput.invert_zoom_direction -> invert_zoom: boolean Invert the axis of mouse movement for zooming +UserPreferencesSystem.auto_execute_scripts -> use_scripts_auto_execute: boolean Allow any .blend file to run scripts automatically (unsafe with blend files from an untrusted source) +UserPreferencesSystem.enable_all_codecs -> use_preview_images: boolean Enables automatic saving of preview images in the .blend file (Windows only) +UserPreferencesSystem.international_fonts -> use_fonts_international: boolean Use international fonts +UserPreferencesSystem.tabs_as_spaces -> use_tabs_as_spaces: boolean Automatically converts all new tabs into spaces for new and loaded text files +UserPreferencesSystem.translate_buttons -> show_translate_buttons: boolean Translate button labels +UserPreferencesSystem.translate_toolbox -> show_translate_toolbox: boolean Translate toolbox menu +UserPreferencesSystem.translate_tooltips -> show_translate_tooltips: boolean Translate Tooltips +UserPreferencesSystem.use_antialiasing -> show_antialiasing: boolean Use anti-aliasing for the 3D view (may impact redraw performance) +UserPreferencesSystem.use_mipmaps -> use_mipmaps: boolean Scale textures for the 3D View (looks nicer but uses more memory and slows image reloading) +UserPreferencesSystem.use_textured_fonts -> show_fonts_textured: boolean Use textures for drawing international fonts +UserPreferencesSystem.use_vbos -> use_vertex_buffer_objects: boolean Use Vertex Buffer Objects (or Vertex Arrays, if unsupported) for viewport rendering +UserPreferencesSystem.use_weight_color_range -> show_weight_color_range: boolean Enable color range used for weight visualization in weight painting mode +UserPreferencesView.auto_depth -> use_mouse_auto_depth: boolean Use the depth under the mouse to improve view pan/rotate/zoom functionality +UserPreferencesView.auto_perspective -> show_auto_perspective: boolean Automatically switch between orthographic and perspective when changing from top/front/side views +UserPreferencesView.directional_menus -> show_directional_menus: boolean Otherwise menus, etc will always be top to bottom, left to right, no matter opening direction +UserPreferencesView.display_object_info -> show_object_info: boolean Display objects name and frame number in 3D view +UserPreferencesView.global_pivot -> show_global_pivot: boolean Lock the same rotation/scaling pivot in all 3D Views +UserPreferencesView.global_scene -> show_global_scene: boolean Forces the current Scene to be displayed in all Screens +UserPreferencesView.open_mouse_over -> use_mouse_over_open: boolean Open menu buttons and pulldowns automatically when the mouse is hovering +UserPreferencesView.pin_floating_panels -> show_pin_floating_panels: boolean Make floating panels invoked by a hotkey (e.g. N Key) open at the previous location +UserPreferencesView.rotate_around_selection -> use_rotate_around_selection: boolean Use selection as the pivot point +UserPreferencesView.show_mini_axis -> show_mini_axis: boolean Show a small rotating 3D axis in the bottom left corner of the 3D View +UserPreferencesView.show_playback_fps -> show_playback_fps: boolean Show the frames per second screen refresh rate, while animation is played back +UserPreferencesView.show_splash -> show_splash: boolean Display splash screen on startup +UserPreferencesView.show_view_name -> show_view_name: boolean Show the name of the view's direction in each 3D View +UserPreferencesView.tooltips -> use_tooltips: boolean Display tooltips +UserPreferencesView.use_column_layout -> show_column_layout: boolean Use a column layout for toolbox +UserPreferencesView.use_large_cursors -> show_large_cursors: boolean Use large mouse cursors when available +UserPreferencesView.use_manipulator -> show_manipulator: boolean Use 3D transform manipulator +UserPreferencesView.use_middle_mouse_paste -> use_mouse_mmb_paste: boolean In text window, paste with middle mouse button instead of panning +UserPreferencesView.wheel_invert_zoom -> invert_mouse_wheel_zoom: boolean Swap the Mouse Wheel zoom direction +UserPreferencesView.zoom_to_mouse -> use_zoom_ato_mouse: boolean Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D window center +UserSolidLight.enabled -> use: boolean Enable this OpenGL light in solid draw mode +VertexPaint.all_faces -> use_all_faces: boolean Paint on all faces inside brush +VertexPaint.normals -> use_normals: boolean Applies the vertex normal before painting +VertexPaint.spray -> use_spray: boolean Keep applying paint effect while holding mouse +VisibilityActuator.children -> show_occluded_children: boolean Set all the children of this object to the same visibility/occlusion recursively +VisibilityActuator.occlusion -> show_occluded: boolean Set the object to occlude objects behind it. Initialized from the object type in physics button +VisibilityActuator.visible -> show: boolean Set the objects visible. Initialized from the objects render restriction toggle (access in the outliner) +VoxelData.still -> use_still: boolean Always render a still frame from the voxel data sequence +WaveModifier.cyclic -> use_cyclic: boolean Cyclic wave effect +WaveModifier.normals -> show_normals: boolean Displace along normals +WaveModifier.x -> use_x: boolean X axis motion +WaveModifier.x_normal -> use_normal_x: boolean Enable displacement along the X normal +WaveModifier.y -> use_y: boolean Y axis motion +WaveModifier.y_normal -> use_normal_y: boolean Enable displacement along the Y normal +WaveModifier.z_normal -> use_normal_z: boolean Enable displacement along the Z normal +World.blend_sky -> use_sky_blend: boolean Render background with natural progression from horizon to zenith +World.paper_sky -> use_sky_paper: boolean Flatten blend or texture coordinates +World.real_sky -> use_sky_real: boolean Render background with a real horizon, relative to the camera angle +WorldLighting.falloff -> use_falloff: boolean +WorldLighting.pixel_cache -> use_ambient_occlusion_pixel_cache: boolean Cache AO results in pixels and interpolate over neighbouring pixels for speedup (for Approximate) +WorldLighting.use_ambient_occlusion -> use_ambient_occlusion: boolean Use Ambient Occlusion to add shadowing based on distance between objects +WorldLighting.use_environment_lighting -> use_environment_lighting: boolean Add light coming from the environment +WorldLighting.use_indirect_lighting -> use_indirect_lighting: boolean Add indirect light bouncing of surrounding objects +WorldMistSettings.use_mist -> use_mist: boolean Occlude objects with the environment color as they are further away +WorldStarsSettings.use_stars -> use_stars: boolean Enable starfield generation +WorldTextureSlot.map_blend -> use_map_blend: boolean Affect the color progression of the background +WorldTextureSlot.map_horizon -> use_map_horizon: boolean Affect the color of the horizon +WorldTextureSlot.map_zenith_down -> use_map_zenith_down: boolean Affect the color of the zenith below +WorldTextureSlot.map_zenith_up -> use_map_zenith_up: boolean Affect the color of the zenith above diff --git a/source/blender/makesrna/rna_cleanup/rna_cleaner.py b/source/blender/makesrna/rna_cleanup/rna_cleaner.py new file mode 100755 index 00000000000..ca56aab60dd --- /dev/null +++ b/source/blender/makesrna/rna_cleanup/rna_cleaner.py @@ -0,0 +1,269 @@ +#! /usr/bin/env python3 + +""" +This script is used to help cleaning RNA api. + +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] +""" + + +def font_bold(mystring): + """ + Formats the string as bold, to be used in printouts. + """ + font_bold = "\033[1m" + font_reset = "\033[0;0m" + return font_bold + mystring + font_reset + + +def usage(): + """ + Prints script usage. + """ + import sys + scriptname = sys.argv[0] + sort_choices_string = '|'.join(sort_choices) + message = "\nUSAGE:" + message += "\n%s input-file (.txt|.py) order-priority (%s).\n" % (font_bold(scriptname), sort_choices_string) + message += "%s -h for help\n" % font_bold(scriptname) + print(message) + exit() + + +def help(): + """ + Prints script' help. + """ + message = '\nHELP:' + message += '\nRun this script to re-format the edits you make in the input file.\n' + message += 'Do quick modification to important fields like \'to\' and don\'t care about fields like \'changed\' or \'description\' and save.\n' + message += 'The script outputs 3 files:\n' + message += ' 1) *_clean.txt: is formatted same as the .txt input, can be edited by user.\n' + message += ' 2) *_clean.py: is formatted same as the .py input, can be edited by user.\n' + message += ' 3) rna_api.py is not formatted for readability and go under complete check. Can be used for rna cleanup.\n' + print(message) + usage() + + +def check_commandline(): + """ + Takes parameters from the commandline. + """ + import sys + # Usage + if len(sys.argv)==1 or len(sys.argv)>3: + usage() + if sys.argv[1]!= '-h': + input_filename = sys.argv[1] + else: + help() + if not (input_filename[-4:] == '.txt' or input_filename[-3:] == '.py'): + print ('\nBad input file extension... exiting.') + usage() + if len(sys.argv)==2: + order_priority = default_sort_choice + print ('\nSecond parameter missing: choosing to order by %s.' % font_bold(order_priority)) + elif len(sys.argv)==3: + order_priority = sys.argv[2] + if order_priority not in sort_choices: + print('\nWrong order_priority... exiting.') + usage() + return (input_filename, order_priority) + + +def check_prefix(prop): + # reminder: props=[comment, changed, bclass, bfrom, bto, kwcheck, btype, description] + if '_' in prop: + prefix = prop.split('_')[0] + if prefix not in kw_prefixes: + return 'BAD-PREFIX: ' + prefix + else: + return prefix + '_' + elif prop in kw: + return 'SPECIAL-KEYWORD: ' + prop + else: + return 'BAD-KEYWORD: ' + prop + + +def check_if_changed(a,b): + if a != b: return 'changed' + else: return 'same' + + +def get_props_from_txt(input_filename): + """ + If the file is *.txt, the script assumes it is formatted as outlined in this script docstring + """ + + file=open(input_filename,'r') + file_lines=file.readlines() + file.close() + + props_list=[] + props_length_max=[0,0,0,0,0,0,0,0] + for line in file_lines: + + # debug + #print(line) + + # empty line or comment + if not line.strip() or line.startswith('#'): + continue + + # class + [bclass, tail] = [x.strip() for x in line.split('.', 1)] + + # comment + if '*' in bclass: + [comment, bclass] = [x.strip() for x in bclass.split('*', 1)] + else: + comment= '' + + # skipping the header if we have one. + # the header is assumed to be "NOTE * CLASS.FROM -> TO: TYPE DESCRIPTION" + if comment == 'NOTE' and bclass == 'CLASS': + continue + + # from + [bfrom, tail] = [x.strip() for x in tail.split('->', 1)] + + # to + [bto, tail] = [x.strip() for x in tail.split(':', 1)] + + # type, description + try: + [btype, description] = tail.split(None, 1) + if '"' in description: + description.replace('"', "'") + except ValueError: + [btype, description] = [tail,'NO DESCRIPTION'] + + # keyword-check + kwcheck = check_prefix(bto) + + # changed + changed = check_if_changed(bfrom, bto) + + # lists formatting + props=[comment, changed, bclass, bfrom, bto, kwcheck, btype, description] + props_list.append(props) + props_length_max=list(map(max,zip(props_length_max,list(map(len,props))))) + + return (props_list,props_length_max) + + +def get_props_from_py(input_filename): + """ + If the file is *.py, the script assumes it contains a python list (as "rna_api=[...]") + This means that this script executes the text in the py file with an exec(text). + """ + file=open(input_filename,'r') + file_text=file.read() + file.close() + + # adds the list "rna_api" to this function's scope + rna_api = __import__(input_filename[:-3]).rna_api + + props_length_max = [0 for i in rna_api[0]] # this way if the vector will take more elements we are safe + for props in rna_api: + [comment, changed, bclass, bfrom, bto, kwcheck, btype, description] = props + kwcheck = check_prefix(bto) # keyword-check + changed = check_if_changed(bfrom, bto) # changed? + props=[comment, changed, bclass, bfrom, bto, kwcheck, btype, description] + props_length = list(map(len,props)) # lengths + props_length_max = list(map(max,zip(props_length_max,props_length))) # max lengths + return (rna_api,props_length_max) + + +def read_file(input_filename): + if input_filename[-4:] == '.txt': + props_list,props_length_max = get_props_from_txt(input_filename) + elif input_filename[-3:] == '.py': + props_list,props_length_max = get_props_from_py(input_filename) + return (props_list,props_length_max) + + +def sort(props_list, sort_priority): + """ + reminder + props=[comment, changed, bclass, bfrom, bto, kwcheck, btype, description] + """ + + # order based on the i-th element in lists + i = sort_choices.index(sort_priority) + if i == 0: + props_list = sorted(props_list, key=lambda p: p[i], reverse=True) + else: + props_list = sorted(props_list, key=lambda p: p[i]) + + print ('\nSorted by %s.' % font_bold(sort_priority)) + return props_list + + +def write_files(props_list, props_length_max): + """ + Writes in 3 files: + * output_filename_txt: formatted as txt input file + * output_filename_py: formatted for readability (could be worked on) + * rna_api.py: unformatted, just as final output + """ + + # horrible :) will use os.path more properly, I'm being lazy + if input_filename[-4:] == '.txt': + if input_filename[-9:] == '_work.txt': + base_filename = input_filename[:-9] + else: + base_filename = input_filename[:-4] + elif input_filename[-3:] == '.py': + if input_filename[-8:] == '_work.py': + base_filename = input_filename[:-8] + else: + base_filename = input_filename[:-3] + + f_rna = open("rna_api.py",'w') + f_txt = open(base_filename+'_work.txt','w') + f_py = open(base_filename+'_work.py','w') + + # reminder: props=[comment, changed, bclass, bfrom, bto, kwcheck, btype, description] + # [comment *] ToolSettings.snap_align_rotation -> use_snap_align_rotation: boolean [Align rotation with the snapping target] + rna = '# "NOTE", "CHANGED", "CLASS", "FROM", "TO", "KEYWORD-CHECK", "TYPE", "DESCRIPTION" \n' + py = '# "NOTE" , "CHANGED", "CLASS" , "FROM" , "TO" , "KEYWORD-CHECK" , "TYPE" , "DESCRIPTION" \n' + txt = 'NOTE * CLASS.FROM -> TO: TYPE DESCRIPTION \n' + for props in props_list: + #txt + txt += '%s * %s.%s -> %s: %s %s\n' % tuple(props[:1] + props[2:5] + props[6:]) # awful I'll do it smarter later + # rna_api + rna += ' ("%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s"),\n' % tuple(props) + # py + blanks = [' '* (x[0]-x[1]) for x in zip(props_length_max,list(map(len,props)))] + props = ['"%s"%s'%(x[0],x[1]) for x in zip(props,blanks)] + py += ' (%s, %s, %s, %s, %s, %s, %s, %s),\n' % tuple(props) + f_txt.write(txt) + f_py.write("rna_api = [\n%s ]\n" % py) + f_rna.write("rna_api = [\n%s ]\n" % rna) + + print ('\nSaved %s, %s and %s.\n' % (font_bold(f_txt.name), font_bold(f_py.name), font_bold(f_rna.name) ) ) + + +def main(): + + global input_filename + global sort_choices, default_sort_choice + global kw_prefixes, kw + + sort_choices = ['note','changed','class','from','to','kw'] + default_sort_choice = sort_choices[0] + kw_prefixes = ['invert','is','lock','show','showonly','use','useonly'] + kw = ['hidden','selected','layer','state'] + + input_filename, sort_priority = check_commandline() + props_list,props_length_max = read_file(input_filename) + props_list = sort(props_list,sort_priority) + write_files(props_list,props_length_max) + + +if __name__=='__main__': + main() + From d40497480924dfb6d7f3413aae4280a95e3dd240 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 28 Jun 2010 16:07:21 +0000 Subject: [PATCH 230/674] flip button for color ramps (durian request), these should be done as operators in a menu with copy/paste. added own todo. --- .../editors/interface/interface_templates.c | 38 +++++++++++++++++-- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 70112e1fd09..52772aaf0e5 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -1333,6 +1333,29 @@ static void colorband_del_cb(bContext *C, void *cb_v, void *coba_v) rna_update_cb(C, cb_v, NULL); } +static void colorband_flip_cb(bContext *C, void *cb_v, void *coba_v) +{ + CBData data_tmp[MAXCOLORBAND]; + + ColorBand *coba= coba_v; + int a; + + for(a=0; atot; a++) { + data_tmp[a]= coba->data[coba->tot - (a + 1)]; + } + for(a=0; atot; a++) { + data_tmp[a].pos = 1.0f - data_tmp[a].pos; + coba->data[a]= data_tmp[a]; + } + + /* may as well flip the cur*/ + coba->cur= coba->tot - (coba->cur + 1); + + ED_undo_push(C, "Flip colorband"); + + rna_update_cb(C, cb_v, NULL); +} + /* offset aligns from bottom, standard width 300, height 115 */ static void colorband_buttons_large(uiLayout *layout, uiBlock *block, ColorBand *coba, int xoffs, int yoffs, RNAUpdateCb *cb) @@ -1343,12 +1366,17 @@ static void colorband_buttons_large(uiLayout *layout, uiBlock *block, ColorBand if(coba==NULL) return; - bt= uiDefBut(block, BUT, 0, "Add", 0+xoffs,100+yoffs,50,20, 0, 0, 0, 0, 0, "Add a new color stop to the colorband"); + bt= uiDefBut(block, BUT, 0, "Add", 0+xoffs,100+yoffs,40,20, 0, 0, 0, 0, 0, "Add a new color stop to the colorband"); uiButSetNFunc(bt, colorband_add_cb, MEM_dupallocN(cb), coba); - bt= uiDefBut(block, BUT, 0, "Delete", 60+xoffs,100+yoffs,50,20, 0, 0, 0, 0, 0, "Delete the active position"); + bt= uiDefBut(block, BUT, 0, "Delete", 45+xoffs,100+yoffs,45,20, 0, 0, 0, 0, 0, "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,100+yoffs,20,20, 0, 0, 0, 0, 0, "Flip colorband"); + uiButSetNFunc(bt, colorband_flip_cb, MEM_dupallocN(cb), coba); + uiDefButS(block, NUM, 0, "", 120+xoffs,100+yoffs,80, 20, &coba->cur, 0.0, (float)(MAX2(0, coba->tot-1)), 0, 0, "Choose active color stop"); bt= uiDefButS(block, MENU, 0, "Interpolation %t|Ease %x1|Cardinal %x3|Linear %x0|B-Spline %x2|Constant %x4", @@ -1359,6 +1387,8 @@ static void colorband_buttons_large(uiLayout *layout, uiBlock *block, ColorBand bt= uiDefBut(block, BUT_COLORBAND, 0, "", xoffs,65+yoffs,300,30, coba, 0, 0, 0, 0, ""); uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL); + + if(coba->tot) { CBData *cbd= coba->data + coba->cur; @@ -1381,8 +1411,10 @@ static void colorband_buttons_small(uiLayout *layout, uiBlock *block, ColorBand uiBlockBeginAlign(block); bt= uiDefBut(block, BUT, 0, "Add", xs,butr->ymin+20.0f,2.0f*unit,20, NULL, 0, 0, 0, 0, "Add a new color stop to the colorband"); uiButSetNFunc(bt, colorband_add_cb, MEM_dupallocN(cb), coba); - bt= uiDefBut(block, BUT, 0, "Delete", xs+2.0f*unit,butr->ymin+20.0f,2.0f*unit,20, NULL, 0, 0, 0, 0, "Delete the active position"); + bt= uiDefBut(block, BUT, 0, "Delete", xs+2.0f*unit,butr->ymin+20.0f,1.5f*unit,20, NULL, 0, 0, 0, 0, "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+20.0f,0.5f*unit,20, NULL, 0, 0, 0, 0, "Flip the color ramp"); + uiButSetNFunc(bt, colorband_flip_cb, MEM_dupallocN(cb), coba); uiBlockEndAlign(block); if(coba->tot) { From a72679350789ce247c4428196f139b47c7d0963f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 28 Jun 2010 16:37:50 +0000 Subject: [PATCH 231/674] default to global space for point density cache space. --- source/blender/blenkernel/intern/texture.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c index 31826f5be28..8178ef75a91 100644 --- a/source/blender/blenkernel/intern/texture.c +++ b/source/blender/blenkernel/intern/texture.c @@ -1132,6 +1132,7 @@ PointDensity *BKE_add_pointdensity(void) pd->totpoints = 0; pd->object = NULL; pd->psys = 0; + pd->psys_cache_space= TEX_PD_WORLDSPACE; return pd; } From 3166136da7ed67f3357d0e5ca1c1cb1d929f48b4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 28 Jun 2010 16:52:57 +0000 Subject: [PATCH 232/674] update from discussion with brecht. --- source/blender/makesrna/rna_cleanup/rna_cleaner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/makesrna/rna_cleanup/rna_cleaner.py b/source/blender/makesrna/rna_cleanup/rna_cleaner.py index ca56aab60dd..0850b45630c 100755 --- a/source/blender/makesrna/rna_cleanup/rna_cleaner.py +++ b/source/blender/makesrna/rna_cleanup/rna_cleaner.py @@ -255,8 +255,8 @@ def main(): sort_choices = ['note','changed','class','from','to','kw'] default_sort_choice = sort_choices[0] - kw_prefixes = ['invert','is','lock','show','showonly','use','useonly'] - kw = ['hidden','selected','layer','state'] + kw_prefixes = ['invert','is','lock','show','show_only','use','use_only'] + kw = ['hide', 'select', 'layer', 'state'] input_filename, sort_priority = check_commandline() props_list,props_length_max = read_file(input_filename) From 926f94252d4fd2a759a312b8df4b87d9dc68eae6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 28 Jun 2010 18:40:17 +0000 Subject: [PATCH 233/674] fix for crash when loading files that had the animtimer set. --- source/blender/blenloader/intern/readfile.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 8ff2011ffea..700a3c2d77b 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -4559,6 +4559,7 @@ static void lib_link_screen(FileData *fd, Main *main) if(sc->id.flag & LIB_NEEDLINK) { sc->id.us= 1; sc->scene= newlibadr(fd, sc->id.lib, sc->scene); + sc->animtimer= NULL; /* saved in rare cases */ sa= sc->areabase.first; while(sa) { From 7b09e47dc4692c09a092fc27cba073302d13f8ff Mon Sep 17 00:00:00 2001 From: Daniel Salazar Date: Tue, 29 Jun 2010 05:02:51 +0000 Subject: [PATCH 234/674] Added name to object color in object properties. Kinda misleading without it --- release/scripts/ui/properties_object.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/ui/properties_object.py b/release/scripts/ui/properties_object.py index 98b768b2585..4e60879d665 100644 --- a/release/scripts/ui/properties_object.py +++ b/release/scripts/ui/properties_object.py @@ -214,7 +214,7 @@ class OBJECT_PT_display(ObjectButtonsPanel): col.prop(ob, "draw_name", text="Name") col.prop(ob, "draw_axis", text="Axis") col.prop(ob, "draw_wire", text="Wire") - col.prop(ob, "color", text="") + col.prop(ob, "color", text="Object Color") if wide_ui: col = split.column() From 3c1e97d1ff78a02612317971bba1c06c83a3602b Mon Sep 17 00:00:00 2001 From: Luca Bonavita Date: Tue, 29 Jun 2010 12:13:29 +0000 Subject: [PATCH 235/674] == rna cleanup == - rna_api.py now doesn't have work parameters anymore (note, changes, keyword-check) - header implementation fixed - removed 3 unuseful/already commented lines - renamed a function --- .../makesrna/rna_cleanup/rna_cleaner.py | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/source/blender/makesrna/rna_cleanup/rna_cleaner.py b/source/blender/makesrna/rna_cleanup/rna_cleaner.py index 0850b45630c..3b3c0e3014e 100755 --- a/source/blender/makesrna/rna_cleanup/rna_cleaner.py +++ b/source/blender/makesrna/rna_cleanup/rna_cleaner.py @@ -158,11 +158,7 @@ def get_props_from_py(input_filename): """ If the file is *.py, the script assumes it contains a python list (as "rna_api=[...]") This means that this script executes the text in the py file with an exec(text). - """ - file=open(input_filename,'r') - file_text=file.read() - file.close() - + """ # adds the list "rna_api" to this function's scope rna_api = __import__(input_filename[:-3]).rna_api @@ -177,7 +173,7 @@ def get_props_from_py(input_filename): return (rna_api,props_length_max) -def read_file(input_filename): +def get_props(input_filename): if input_filename[-4:] == '.txt': props_list,props_length_max = get_props_from_txt(input_filename) elif input_filename[-3:] == '.py': @@ -210,7 +206,7 @@ def write_files(props_list, props_length_max): * rna_api.py: unformatted, just as final output """ - # horrible :) will use os.path more properly, I'm being lazy + # if needed will use os.path if input_filename[-4:] == '.txt': if input_filename[-9:] == '_work.txt': base_filename = input_filename[:-9] @@ -228,21 +224,25 @@ def write_files(props_list, props_length_max): # reminder: props=[comment, changed, bclass, bfrom, bto, kwcheck, btype, description] # [comment *] ToolSettings.snap_align_rotation -> use_snap_align_rotation: boolean [Align rotation with the snapping target] - rna = '# "NOTE", "CHANGED", "CLASS", "FROM", "TO", "KEYWORD-CHECK", "TYPE", "DESCRIPTION" \n' - py = '# "NOTE" , "CHANGED", "CLASS" , "FROM" , "TO" , "KEYWORD-CHECK" , "TYPE" , "DESCRIPTION" \n' - txt = 'NOTE * CLASS.FROM -> TO: TYPE DESCRIPTION \n' + rna = py = txt = '' + props_list = [['NOTE', 'CHANGED', 'CLASS', 'FROM', 'TO', 'KEYWORD-CHECK', 'TYPE', 'DESCRIPTION']] + props_list for props in props_list: #txt - txt += '%s * %s.%s -> %s: %s %s\n' % tuple(props[:1] + props[2:5] + props[6:]) # awful I'll do it smarter later + if props[0] != '': txt += '%s * ' % props[0] # comment + txt += '%s.%s -> %s: %s %s\n' % tuple(props[2:5] + props[6:]) # skipping keyword-check # rna_api - rna += ' ("%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s"),\n' % tuple(props) + if props[0] == 'NOTE': indent = '# ' + else: indent = ' ' + rna += indent + '("%s", "%s", "%s", "%s", "%s"),\n' % tuple(props[2:5] + props[6:]) # py + if props[0] == 'NOTE': indent = '# ' + else: indent = ' ' blanks = [' '* (x[0]-x[1]) for x in zip(props_length_max,list(map(len,props)))] props = ['"%s"%s'%(x[0],x[1]) for x in zip(props,blanks)] - py += ' (%s, %s, %s, %s, %s, %s, %s, %s),\n' % tuple(props) + py += indent + '(%s, %s, %s, %s, %s, %s, %s, %s),\n' % tuple(props) f_txt.write(txt) - f_py.write("rna_api = [\n%s ]\n" % py) - f_rna.write("rna_api = [\n%s ]\n" % rna) + f_py.write("rna_api = [\n%s]\n" % py) + f_rna.write("rna_api = [\n%s]\n" % rna) print ('\nSaved %s, %s and %s.\n' % (font_bold(f_txt.name), font_bold(f_py.name), font_bold(f_rna.name) ) ) @@ -255,11 +255,11 @@ def main(): sort_choices = ['note','changed','class','from','to','kw'] default_sort_choice = sort_choices[0] - kw_prefixes = ['invert','is','lock','show','show_only','use','use_only'] - kw = ['hide', 'select', 'layer', 'state'] + kw_prefixes = ['invert','is','lock','show','showonly','use','useonly'] + kw = ['hidden','selected','layer','state'] input_filename, sort_priority = check_commandline() - props_list,props_length_max = read_file(input_filename) + props_list,props_length_max = get_props(input_filename) props_list = sort(props_list,sort_priority) write_files(props_list,props_length_max) From f48556f236b707b9f5f319d72ac630dc718ce1e3 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Tue, 29 Jun 2010 12:33:25 +0000 Subject: [PATCH 236/674] Fix [#22355] Spin Tool crashes Blender on Click'n'Drag Steps Spin tool steps property had no softmin/softmax (set to INT_MAX), and without continuous grab on, the number field dragging code would jump up to ridiculously high numbers. Added a reasonable soft max for spin, and also added some protection to the button dragging code to prevent the drag increments from getting too high. Probably need to doublecheck other op property softmaxes as well. --- .../editors/interface/interface_handlers.c | 18 ++++++++++-------- source/blender/editors/mesh/editmesh_tools.c | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 1f9c2bb9ce0..eda7102e69b 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -24,6 +24,7 @@ */ #include +#include #include #include #include @@ -2223,7 +2224,6 @@ static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, i softmax= but->softmax; softrange= softmax - softmin; - if(ui_is_a_warp_but(but)) { /* Mouse location isn't screen clamped to the screen so use a linear mapping * 2px == 1-int, or 1px == 1-ClickStep */ @@ -2283,15 +2283,18 @@ static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, i /* Use a non-linear mapping of the mouse drag especially for large floats (normal behavior) */ deler= 500; if(!ui_is_but_float(but)) { - if((softrange)<100) deler= 200.0; - if((softrange)<25) deler= 50.0; + /* prevent large ranges from getting too out of control */ + if (softrange > 600) deler = powf(softrange, 0.75); + + if (softrange < 100) deler= 200.0; + if (softrange < 25) deler= 50.0; } deler /= fac; - if(ui_is_but_float(but) && softrange > 11) { + if(softrange > 11) { /* non linear change in mouse input- good for high precicsion */ data->dragf+= (((float)(mx-data->draglastx))/deler) * (fabs(data->dragstartx-mx)*0.002); - } else if (!ui_is_but_float(but) && softrange > 129) { /* only scale large int buttons */ + } else if (softrange > 129) { /* only scale large int buttons */ /* non linear change in mouse input- good for high precicsionm ints need less fine tuning */ data->dragf+= (((float)(mx-data->draglastx))/deler) * (fabs(data->dragstartx-mx)*0.004); } else { @@ -2299,8 +2302,7 @@ static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, i data->dragf+= ((float)(mx-data->draglastx))/deler ; } - if(data->dragf>1.0) data->dragf= 1.0; - if(data->dragf<0.0) data->dragf= 0.0; + CLAMP(data->dragf, 0.0, 1.0); data->draglastx= mx; tempf= (softmin + data->dragf*softrange); @@ -2312,7 +2314,7 @@ static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, i CLAMP(temp, softmin, softmax); lvalue= (int)data->value; - + if(temp != lvalue) { data->dragchange= 1; data->value= (double)temp; diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index 13656ca1b7e..a46d154cc22 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -1030,7 +1030,7 @@ void MESH_OT_spin(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* props */ - RNA_def_int(ot->srna, "steps", 9, 0, INT_MAX, "Steps", "Steps", 0, INT_MAX); + RNA_def_int(ot->srna, "steps", 9, 0, INT_MAX, "Steps", "Steps", 0, 128); RNA_def_boolean(ot->srna, "dupli", 0, "Dupli", "Make Duplicates"); RNA_def_float(ot->srna, "degrees", 90.0f, -FLT_MAX, FLT_MAX, "Degrees", "Degrees", -360.0f, 360.0f); From 0795d1cccb1e0dcff59847523e6a57a299853bc8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 29 Jun 2010 13:20:11 +0000 Subject: [PATCH 237/674] image re-projection wasnt changing alpha values. --- source/blender/editors/sculpt_paint/paint_image.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index 6269b9c5e09..41908bbe388 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -3552,16 +3552,18 @@ static void blend_color_mix_float(float *cp, const float *cp1, const float *cp2, cp[3]= mfac*cp1[3] + fac*cp2[3]; } -static void blend_color_mix_rgb(unsigned char *cp, const unsigned char *cp1, const unsigned char *cp2, const int fac) +static void blend_color_mix_accum(unsigned char *cp, const unsigned char *cp1, const unsigned char *cp2, const int fac) { /* this and other blending modes previously used >>8 instead of /255. both are not equivalent (>>8 is /256), and the former results in rounding errors that can turn colors black fast after repeated blending */ const int mfac= 255-fac; + const int alpha= cp1[3] + ((fac * cp2[3]) / 255); cp[0]= (mfac*cp1[0]+fac*cp2[0])/255; cp[1]= (mfac*cp1[1]+fac*cp2[1])/255; cp[2]= (mfac*cp1[2]+fac*cp2[2])/255; + cp[3]= alpha > 255 ? 255 : alpha; } static void do_projectpaint_clone(ProjPaintState *ps, ProjPixel *projPixel, float *rgba, float alpha, float mask) @@ -3732,7 +3734,8 @@ static void *do_projectpaint_thread(void *ph_v) bicubic_interpolation_color(ps->reproject_ibuf, projPixel->newColor.ch, NULL, projPixel->projCoSS[0], projPixel->projCoSS[1]); if(projPixel->newColor.ch[3]) { mask = ((float)projPixel->mask)/65535.0f; - blend_color_mix_rgb(projPixel->pixel.ch_pt, projPixel->origColor.ch, projPixel->newColor.ch, (mask*projPixel->newColor.ch[3])); + blend_color_mix_accum(projPixel->pixel.ch_pt, projPixel->origColor.ch, projPixel->newColor.ch, (mask*projPixel->newColor.ch[3])); + } } } From fab7671d20ac95474956b29decf96975ea01b13b Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Tue, 29 Jun 2010 15:56:05 +0000 Subject: [PATCH 238/674] Fixed bug #22686, Screw modifier VBO-related crash * Problem was calling setDrawOptions even if there was no original face index to use --- source/blender/blenkernel/intern/cdderivedmesh.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 9bba893c2c8..a586ca57966 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -885,7 +885,7 @@ static void cdDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *us else orig = actualFace; - if(setDrawOptions && !setDrawOptions(userData, orig, &drawSmooth)) + if(draw && setDrawOptions && !setDrawOptions(userData, orig, &drawSmooth)) draw = 0; /* Goal is to draw as long of a contiguous triangle From e7d78649cbe6c2b348095baf343a4bc2e890fdce Mon Sep 17 00:00:00 2001 From: Luca Bonavita Date: Tue, 29 Jun 2010 17:23:48 +0000 Subject: [PATCH 239/674] == rna cleanup == Re-introducing the modification made by Cambpell yesterday [rev., I copied the file over and forgot to restore this. Sorry for the noise :) --- source/blender/makesrna/rna_cleanup/rna_cleaner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/makesrna/rna_cleanup/rna_cleaner.py b/source/blender/makesrna/rna_cleanup/rna_cleaner.py index 3b3c0e3014e..64fc2969527 100755 --- a/source/blender/makesrna/rna_cleanup/rna_cleaner.py +++ b/source/blender/makesrna/rna_cleanup/rna_cleaner.py @@ -255,8 +255,8 @@ def main(): sort_choices = ['note','changed','class','from','to','kw'] default_sort_choice = sort_choices[0] - kw_prefixes = ['invert','is','lock','show','showonly','use','useonly'] - kw = ['hidden','selected','layer','state'] + kw_prefixes = ['invert','is','lock','show','show_only','use','use_only'] + kw = ['hide','select','layer','state'] input_filename, sort_priority = check_commandline() props_list,props_length_max = get_props(input_filename) From c0bb3303f48986fc4e1853af6c766023fbe61dfd Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 29 Jun 2010 21:23:28 +0000 Subject: [PATCH 240/674] move edits from rna_api_cleanup.txt into rna_booleans.txt which can be parsed. --- .../makesrna/rna_cleanup/rna_api_cleanup.txt | 1704 ----------------- .../makesrna/rna_cleanup/rna_booleans.txt | 363 ++-- 2 files changed, 181 insertions(+), 1886 deletions(-) delete mode 100644 source/blender/makesrna/rna_cleanup/rna_api_cleanup.txt diff --git a/source/blender/makesrna/rna_cleanup/rna_api_cleanup.txt b/source/blender/makesrna/rna_cleanup/rna_api_cleanup.txt deleted file mode 100644 index 83f16e37f0b..00000000000 --- a/source/blender/makesrna/rna_cleanup/rna_api_cleanup.txt +++ /dev/null @@ -1,1704 +0,0 @@ -# non booleans, (much todo) -ParticleSettings.child_nbr -> child_display_percent -ParticleSettings.rendered_child_nbr -> child_render_percent -ParticleSettings.child_random_size -> child_size_random -ParticleSettings.clumppow -> clump_power -ParticleSettings.enable_simplify -> use_simplify -ParticleSettings.rand_group -> use_group_random -ParticleSettings.ren_as -> render_type -ParticleSettings.sizemass -> use_size_mass -ParticleSettings.unborn -> use_unborn -ParticleSettings.viewport -> use_simplify_viewport -BuildModifier.randomize -> use_random -Camera.panorama -> use_panorama - -# booleans -ActionActuator.continue_last_frame -> continue_last_frame -ActionGroup.expanded -> show_expanded -ActionGroup.locked -> lock -ActionGroup.selected -> select -Actuator.expanded -> show_expanded -AnimData.nla_enabled -> use_nla -AnimVizMotionPaths.highlight_keyframes -> show_keyframe_highlight -AnimVizMotionPaths.search_all_action_keyframes -> use_keyframe_action_all -AnimVizMotionPaths.show_frame_numbers -> show_frame_numbers -AnimVizMotionPaths.show_keyframe_numbers -> show_keyframe_numbers -AnimVizOnionSkinning.only_selected -> show_only_selected -Area.show_menus -> show_menus -AreaLamp.dither -> use_dither -AreaLamp.jitter -> use_jitter -AreaLamp.only_shadow -> use_only_shadow -AreaLamp.shadow_layer -> use_only_shadow_layer -AreaLamp.umbra -> use_umbra -Armature.auto_ik -> use_auto_ik -Armature.deform_bbone_rest -> use_deform_b_bone_rest -Armature.deform_envelope -> use_deform_envelope -Armature.deform_quaternion -> use_deform_quaternion -Armature.deform_vertexgroups -> use_deform_vertexgroups -Armature.delay_deform -> use_deform_delay -Armature.draw_axes -> show_axes -Armature.draw_custom_bone_shapes -> show_bone_custom -Armature.draw_group_colors -> show_group_colors -Armature.draw_names -> show_names -Armature.ghost_only_selected -> show_only_ghost_selected -Armature.layer -> layer -Armature.layer_protection -> layer_protect -Armature.x_axis_mirror -> use_mirror_x -ArmatureModifier.b_bone_rest -> use_b_bone_rest -ArmatureModifier.invert -> use_vertex_group_invert -ArmatureModifier.multi_modifier -> use_multi_modifier -ArmatureModifier.quaternion -> use_preserve_volume -ArmatureModifier.use_bone_envelopes -> use_bone_envelopes -ArmatureModifier.use_vertex_groups -> use_vertex_groups -ArrayModifier.add_offset_object -> use_object_offset -ArrayModifier.constant_offset -> use_constant_offset -ArrayModifier.merge_adjacent_vertices -> use_merge_vertex -ArrayModifier.merge_end_vertices -> use_merge_vertex_end -ArrayModifier.relative_offset -> use_relative_offset -BackgroundImage.show_expanded -> show_expanded -BevelModifier.only_vertices -> use_only_vertex -BezierSplinePoint.hidden -> hide -BezierSplinePoint.selected_control_point -> select_control_point -BezierSplinePoint.selected_handle1 -> select_left_handle -BezierSplinePoint.selected_handle2 -> select_right_handle -BoidRule.in_air -> use_in_air -BoidRule.on_land -> use_on_land -BoidRuleAvoid.predict -> use_predict -BoidRuleAvoidCollision.boids -> use_avoid -BoidRuleAvoidCollision.deflectors -> use_deflect -BoidRuleFollowLeader.line -> use_line -BoidRuleGoal.predict -> use_predict -BoidSettings.allow_climb -> use_climb -BoidSettings.allow_flight -> use_flight -BoidSettings.allow_land -> use_land -Bone.connected -> use_connect -Bone.cyclic_offset -> use_cyclic_offset -Bone.deform -> use_deform -Bone.draw_wire -> show_wire -Bone.hidden -> hide -Bone.hinge -> use_hinge -Bone.inherit_scale -> use_inherit_scale -Bone.layer -> layer -Bone.local_location -> use_local_location -Bone.multiply_vertexgroup_with_envelope -> use_envelope_multiply -* Bone.restrict_select -> restrict_select -Bone.selected -> select -BooleanProperty.default -> default -BooleanProperty.default_array -> default_array -Brush.use_accumulate -> use_accumulate -Brush.use_airbrush -> use_airbrush -Brush.use_alpha -> use_alpha -Brush.use_anchor -> use_anchor -Brush.use_jitter_pressure -> use_jitter_pressure -Brush.use_persistent -> use_persistent -Brush.use_rake -> use_rake -Brush.use_size_pressure -> use_size_pressure -Brush.use_smooth_stroke -> use_smooth_stroke -Brush.use_space -> use_space -Brush.use_spacing_pressure -> use_spacing_pressure -Brush.use_strength_pressure -> use_strength_pressure -Brush.use_wrap -> use_wrap -BuildModifier.randomize -> use_random -Camera.panorama -> use_panorama -Camera.show_limits -> show_limits -Camera.show_mist -> show_mist -Camera.show_name -> show_name -Camera.show_passepartout -> show_passepartout -Camera.show_title_safe -> show_title_safe -CastModifier.from_radius -> use_radius_as_size -CastModifier.use_transform -> use_transform -CastModifier.x -> use_x -CastModifier.y -> use_y -CastModifier.z -> use_z -ChildOfConstraint.use_location_x -> use_location_x -ChildOfConstraint.use_location_y -> use_location_y -ChildOfConstraint.use_location_z -> use_location_z -ChildOfConstraint.use_rotation_x -> use_rotation_x -ChildOfConstraint.use_rotation_y -> use_rotation_y -ChildOfConstraint.use_rotation_z -> use_rotation_z -ChildOfConstraint.use_scale_x -> use_scale_x -ChildOfConstraint.use_scale_y -> use_scale_y -ChildOfConstraint.use_scale_z -> use_scale_z -ClampToConstraint.cyclic -> use_cyclic -ClothCollisionSettings.enable_collision -> use_collision -ClothCollisionSettings.enable_self_collision -> use_self_collision -ClothSettings.pin_cloth -> use_pin_cloth -ClothSettings.stiffness_scaling -> use_stiffness_scale -* CollisionSensor.collision_type -> collision_type -CollisionSensor.pulse -> use_pulse -CollisionSettings.enabled -> use_collision -CollisionSettings.kill_particles -> use_particle_kill -CompositorNodeAlphaOver.convert_premul -> use_convert_premultiply -CompositorNodeBlur.bokeh -> use_bokeh -CompositorNodeBlur.gamma -> use_gamma_correct -CompositorNodeBlur.relative -> use_relative -CompositorNodeColorSpill.unspill -> use_unspill -CompositorNodeCrop.crop_size -> use_crop_size -CompositorNodeDBlur.wrap -> use_wrap -CompositorNodeDefocus.gamma_correction -> use_gamma_correct -CompositorNodeDefocus.preview -> use_preview -CompositorNodeDefocus.use_zbuffer -> use_zbuffer -CompositorNodeGlare.rotate_45 -> use_rotate_45 -CompositorNodeImage.auto_refresh -> use_auto_refresh -CompositorNodeImage.cyclic -> use_cyclic -CompositorNodeInvert.alpha -> use_alpha -CompositorNodeInvert.rgb -> invert_rgb -CompositorNodeLensdist.fit -> use_fit -CompositorNodeLensdist.jitter -> use_jitter -CompositorNodeLensdist.projector -> use_projector -CompositorNodeMapValue.use_max -> use_max -CompositorNodeMapValue.use_min -> use_min -CompositorNodeMixRGB.alpha -> use_alpha -CompositorNodeOutputFile.exr_half -> use_exr_half -CompositorNodeVecBlur.curved -> use_curve -* Constraint.active -> active -Constraint.disabled -> is_valid -Constraint.expanded -> show_expanded -Constraint.proxy_local -> is_proxy_local -ConstraintActuator.detect_material -> use_material_detect -ConstraintActuator.fh_normal -> use_fh_normal -ConstraintActuator.fh_paralel_axis -> use_fh_paralel_axis -ConstraintActuator.force_distance -> use_force_distance -ConstraintActuator.local -> use_local -ConstraintActuator.normal -> use_normal -ConstraintActuator.persistent -> use_persistent -ControlFluidSettings.active -> active -ControlFluidSettings.reverse_frames -> use_frame_reverse -Controller.expanded -> show_expanded -Controller.priority -> use_priority -Controller.state -> state -CopyLocationConstraint.invert_x -> invert_x -CopyLocationConstraint.invert_y -> invert_y -CopyLocationConstraint.invert_z -> invert_z -CopyLocationConstraint.use_offset -> use_offset -CopyLocationConstraint.use_x -> use_x -CopyLocationConstraint.use_y -> use_y -CopyLocationConstraint.use_z -> use_z -CopyRotationConstraint.invert_x -> invert_x -CopyRotationConstraint.invert_y -> invert_y -CopyRotationConstraint.invert_z -> invert_z -CopyRotationConstraint.use_offset -> use_offset -CopyRotationConstraint.use_x -> use_x -CopyRotationConstraint.use_y -> use_y -CopyRotationConstraint.use_z -> use_z -CopyScaleConstraint.use_offset -> use_offset -CopyScaleConstraint.use_x -> use_x -CopyScaleConstraint.use_y -> use_y -CopyScaleConstraint.use_z -> use_z -Curve.auto_texspace -> use_auto_texspace -Curve.back -> use_fill_back -Curve.draw_handles -> show_handles -Curve.draw_normals -> show_normals -Curve.front -> use_fill_front -Curve.map_along_length -> use_texture_map_length -Curve.use_deform_fill -> use_fill_deform -Curve.use_path -> use_path -Curve.use_path_follow -> use_path_follow -Curve.use_radius -> use_radius -Curve.use_stretch -> use_stretch -Curve.use_time_offset -> use_time_offset -CurveMapPoint.selected -> select -CurveMapping.clip -> use_clip -DelaySensor.repeat -> use_repeat -DomainFluidSettings.generate_speed_vectors -> use_speed_vectors -DomainFluidSettings.override_time -> use_time_override -DomainFluidSettings.reverse_frames -> use_frame_reverse -*negate* DopeSheet.collapse_summary -> show_expanded_summary -DopeSheet.display_armature -> show_armature -DopeSheet.display_camera -> show_camera -DopeSheet.display_curve -> show_curve -DopeSheet.display_lamp -> show_lamp -DopeSheet.display_material -> show_material -DopeSheet.display_mesh -> show_mesh -DopeSheet.display_metaball -> show_metaball -DopeSheet.display_node -> show_node -DopeSheet.display_particle -> show_particle -DopeSheet.display_scene -> show_scene -DopeSheet.display_shapekeys -> show_shapekeys -DopeSheet.display_summary -> show_summary -DopeSheet.display_texture -> show_texture -DopeSheet.display_transforms -> show_transforms -DopeSheet.display_world -> show_world -DopeSheet.include_missing_nla -> show_missing_nla -DopeSheet.only_group_objects -> show_only_group_objects -DopeSheet.only_selected -> show_only_selected -Driver.invalid -> is_valid -Driver.show_debug_info -> show_debug_info -DriverTarget.use_local_space_transforms -> use_local_space_transform -EdgeSplitModifier.use_edge_angle -> use_edge_angle -EdgeSplitModifier.use_sharp -> use_edge_sharp -EditBone.connected -> is_connected -EditBone.cyclic_offset -> use_cyclic_offset -EditBone.deform -> use_deform -EditBone.draw_wire -> show_wire -EditBone.hidden -> hide -EditBone.hinge -> use_hinge -EditBone.inherit_scale -> use_inherit_scale -EditBone.layer -> layer -EditBone.local_location -> use_local_location -EditBone.locked -> lock -EditBone.multiply_vertexgroup_with_envelope -> use_envelope_multiply -EditBone.restrict_select -> restrict_select -EditBone.selected -> select -EditBone.selected_head -> select_head -EditBone.selected_tail -> select_tail -EditObjectActuator.enable_3d_tracking -> use_track_3d -EditObjectActuator.local_angular_velocity -> use_local_angular_velocity -EditObjectActuator.local_linear_velocity -> use_local_linear_velocity -EditObjectActuator.replace_display_mesh -> use_display_mesh -EditObjectActuator.replace_physics_mesh -> use_physics_mesh -EffectSequence.convert_float -> use_float -EffectSequence.de_interlace -> use_deinterlace -EffectSequence.flip_x -> use_flip_x -EffectSequence.flip_y -> use_flip_y -EffectSequence.premultiply -> use_premultiply -EffectSequence.proxy_custom_directory -> use_proxy_custom_directory -EffectSequence.proxy_custom_file -> use_proxy_custom_file -EffectSequence.reverse_frames -> use_frame_reverse -EffectSequence.use_color_balance -> use_color_balance -EffectSequence.use_crop -> use_crop -EffectSequence.use_proxy -> use_proxy -EffectSequence.use_translation -> use_translation -EffectorWeights.do_growing_hair -> use_hair_grow -EnvironmentMap.ignore_layers -> layer_ignore -EnvironmentMapTexture.use_filter_size_min -> filter_size_min -EnvironmentMapTexture.mipmap -> use_mipmap -EnvironmentMapTexture.mipmap_gauss -> use_mipmap_gauss -Event.alt -> alt -Event.ctrl -> ctrl -Event.oskey -> oskey -Event.shift -> shift -ExplodeModifier.alive -> show_alive -ExplodeModifier.dead -> show_dead -ExplodeModifier.size -> use_size -ExplodeModifier.split_edges -> use_edge_split -ExplodeModifier.unborn -> show_unborn -FCurve.auto_clamped_handles -> use_auto_handle_clamp -*negate* FCurve.disabled -> enabled -FCurve.locked -> lock -FCurve.muted -> use_mute -FCurve.selected -> select -*negate* FCurve.visible -> hide -FCurveSample.selected -> select -FModifier.active -> active -*negate* FModifier.disabled -> enabled -FModifier.expanded -> show_expanded -FModifier.muted -> use_mute -FModifierFunctionGenerator.additive -> use_additive -FModifierGenerator.additive -> use_additive -FModifierLimits.use_maximum_x -> use_x_max -FModifierLimits.use_maximum_y -> use_y_max -FModifierLimits.use_minimum_x -> use_x_min -FModifierLimits.use_minimum_y -> use_y_min -FModifierStepped.use_frame_end -> use_frame_end -FModifierStepped.use_frame_start -> use_frame_start -FcurveActuator.add -> use_additive -FcurveActuator.child -> use_child -FcurveActuator.force -> use_force -FcurveActuator.local -> use_local -FieldSettings.do_absorption -> use_absorption -FieldSettings.do_location -> use_location -FieldSettings.do_rotation -> use_rotation -FieldSettings.force_2d -> use_force_2d -FieldSettings.global_coordinates -> use_coordinates_global -FieldSettings.guide_path_add -> use_guide_path_add -FieldSettings.multiple_springs -> use_multiple_springs -FieldSettings.root_coordinates -> use_coordinates_root -FieldSettings.use_coordinates -> use_coordinates_object -FieldSettings.use_guide_path_weight -> use_guide_path_weight -FieldSettings.use_max_distance -> use_distance_min -FieldSettings.use_min_distance -> use_distance_max -FieldSettings.use_radial_max -> use_radial_max -FieldSettings.use_radial_min -> use_radial_min -FileSelectParams.do_filter -> use_filter -FileSelectParams.filter_blender -> use_filter_blender -FileSelectParams.filter_folder -> use_filter_folder -FileSelectParams.filter_font -> use_filter_font -FileSelectParams.filter_image -> use_filter_image -FileSelectParams.filter_movie -> use_filter_movie -FileSelectParams.filter_script -> use_filter_script -FileSelectParams.filter_sound -> use_filter_sound -FileSelectParams.filter_text -> use_filter_text -FileSelectParams.hide_dot -> show_hidden -Filter2DActuator.enable_motion_blur -> use_motion_blur -FloorConstraint.sticky -> use_sticky -FloorConstraint.use_rotation -> use_rotation -FluidFluidSettings.active -> active -FluidFluidSettings.export_animated_mesh -> use_animated_mesh -FollowPathConstraint.use_curve_follow -> use_curve_follow -FollowPathConstraint.use_curve_radius -> use_curve_radius -FollowPathConstraint.use_fixed_position -> use_fixed_location -Function.registered -> registered -Function.registered_optional -> registered_optional -GPencilFrame.paint_lock -> lock_paint -GPencilFrame.selected -> select -GPencilLayer.active -> active -GPencilLayer.frame_lock -> lock_frame -GPencilLayer.hide -> hide -GPencilLayer.locked -> lock -GPencilLayer.selected -> select -GPencilLayer.show_points -> show_points -GPencilLayer.use_onion_skinning -> use_onion_skin -GameBooleanProperty.value -> value -GameObjectSettings.actor -> use_actor -GameObjectSettings.all_states -> states_all -GameObjectSettings.anisotropic_friction -> use_anisotropic_friction -GameObjectSettings.collision_compound -> use_collision_compound -GameObjectSettings.debug_state -> show_state_debug -GameObjectSettings.ghost -> use_ghost -GameObjectSettings.initial_state -> initial_state -GameObjectSettings.lock_x_axis -> lock_location_x -GameObjectSettings.lock_x_rot_axis -> lock_rotation_x -GameObjectSettings.lock_y_axis -> lock_location_y -GameObjectSettings.lock_y_rot_axis -> lock_rotation_y -GameObjectSettings.lock_z_axis -> lock_location_z -GameObjectSettings.lock_z_rot_axis -> lock_rotation_z -GameObjectSettings.material_physics -> use_material_physics -*negate* GameObjectSettings.no_sleeping -> use_sleep -GameObjectSettings.rotate_from_normal -> use_rotate_from_normal -GameObjectSettings.show_actuators -> show_actuators -GameObjectSettings.show_controllers -> show_controllers -GameObjectSettings.show_sensors -> show_sensors -GameObjectSettings.show_state_panel -> show_state_panel -GameObjectSettings.use_activity_culling -> use_activity_culling -GameObjectSettings.use_collision_bounds -> use_collision_bounds -GameObjectSettings.used_state -> state_used -GameObjectSettings.visible_state -> state_visible -GameProperty.debug -> use_debug -GameSoftBodySettings.bending_const -> use_bending_constraint -GameSoftBodySettings.cluster_rigid_to_softbody -> use_cluster_rigid_to_softbody -GameSoftBodySettings.cluster_soft_to_softbody -> use_cluster_soft_to_softbody -GameSoftBodySettings.shape_match -> use_shape_match -GlowSequence.only_boost -> use_only_boost -GreasePencil.use_stroke_endpoints -> use_stroke_endpoints -Group.layer -> layer -ID.fake_user -> use_fake_user -ID.tag -> tag -Image.animated -> use_snimation -Image.clamp_x -> use_clamp_x -Image.clamp_y -> use_clamp_y -Image.dirty -> is_dirty -Image.fields -> use_fields -Image.has_data -> is_data -Image.premultiply -> use_premultiply -Image.tiles -> use_tiles -ImagePaint.invert_stencil -> invert_stencil -ImagePaint.show_brush -> show_brush -ImagePaint.show_brush_draw -> show_brush_draw -ImagePaint.use_backface_cull -> use_backface_cull -ImagePaint.use_clone_layer -> use_clone_layer -ImagePaint.use_normal_falloff -> use_normal_falloff -ImagePaint.use_occlude -> use_occlude -ImagePaint.use_projection -> use_projection -ImagePaint.use_stencil_layer -> use_stencil_layer -ImageSequence.convert_float -> use_float -ImageSequence.de_interlace -> use_deinterlace -ImageSequence.flip_x -> use_flip_x -ImageSequence.flip_y -> use_flip_y -ImageSequence.premultiply -> use_premultiply -ImageSequence.proxy_custom_directory -> use_proxy_custom_directory -ImageSequence.proxy_custom_file -> use_proxy_custom_file -ImageSequence.reverse_frames -> use_frame_reverse -ImageSequence.use_color_balance -> use_color_balance -ImageSequence.use_crop -> use_crop -ImageSequence.use_proxy -> use_proxy -ImageSequence.use_translation -> use_translation -ImageTexture.calculate_alpha -> use_rgb_alpha -ImageTexture.checker_even -> use_checker_even -ImageTexture.checker_odd -> use_checker_odd -ImageTexture.filter_size_minimum -> use_filter_size_min -ImageTexture.flip_axis -> use_flip_axis - - -ImageTexture.interpolation -> use_interpolation -ImageTexture.invert_alpha -> invert_alpha -ImageTexture.mipmap -> use_mipmap -ImageTexture.mipmap_gauss -> use_mipmap_gauss -ImageTexture.mirror_x -> use_mirror_x -ImageTexture.mirror_y -> use_mirror_y -ImageTexture.normal_map -> use_normal_map -ImageTexture.use_alpha -> use_use_alpha -ImageUser.auto_refresh -> use_auto_refresh -ImageUser.cyclic -> use_cyclic -* would use is_ * InflowFluidSettings.active -> active -InflowFluidSettings.export_animated_mesh -> use_export_animated_mesh -InflowFluidSettings.local_coordinates -> use_local_coordinates -Itasc.auto_step -> use_auto_step - - -JoystickSensor.all_events -> use_all_events - - -Key.relative -> use_relative -* would use is_ * KeyConfig.user_defined -> user_defined -KeyMap.children_expanded -> show_expanded_children -KeyMap.items_expanded -> show_expanded_items -* would use is_ * KeyMap.modal -> modal -KeyMap.user_defined -> use_user_defined -KeyMapItem.active -> active -* would use is_pressed * KeyMapItem.alt -> alt -* would use is_pressed * KeyMapItem.any -> any -* would use is_pressed * KeyMapItem.ctrl -> ctrl -KeyMapItem.expanded -> show_expanded -* would use is_pressed * KeyMapItem.oskey -> oskey -* would use is_pressed * KeyMapItem.shift -> shift - - -* KeyboardSensor.all_keys -> all_keys - - -* would use is_ * Keyframe.selected -> select -* would use is_ * Keyframe.selected_handle1 -> select_left_handle -* would use is_ * Keyframe.selected_handle2 -> select_right_handle - - -KeyingSet.absolute -> use_absolute -KeyingSet.insertkey_needed -> use_insertkey_needed -KeyingSet.insertkey_visual -> use_insertkey_visual -KeyingSet.insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb - - -KeyingSetInfo.insertkey_needed -> use_insertkey_needed -KeyingSetInfo.insertkey_visual -> use_insertkey_visual -KeyingSetInfo.insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb - - -KeyingSetPath.entire_array -> use_entire_array -KeyingSetPath.insertkey_needed -> use_insertkey_needed -KeyingSetPath.insertkey_visual -> use_insertkey_visual -KeyingSetPath.insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb - - -KinematicConstraint.pos_lock_x -> lock_location_x -KinematicConstraint.pos_lock_y -> lock_location_y -KinematicConstraint.pos_lock_z -> lock_location_z -KinematicConstraint.rot_lock_x -> lock_rotation_x -KinematicConstraint.rot_lock_y -> lock_rotation_y -KinematicConstraint.rot_lock_z -> lock_rotation_z -KinematicConstraint.use_position -> use_location -KinematicConstraint.use_rotation -> use_rotation -KinematicConstraint.use_stretch -> use_stretch -KinematicConstraint.use_tail -> use_tail -KinematicConstraint.use_target -> use_target - - -Lamp.diffuse -> use_diffuse -Lamp.layer -> use_own_layer -Lamp.negative -> use_negative -Lamp.specular -> use_specular -LampSkySettings.use_atmosphere -> use_atmosphere -LampSkySettings.use_sky -> use_sky -LampTextureSlot.map_color -> use_map_color -LampTextureSlot.map_shadow -> use_map_shadow -Lattice.outside -> use_outside -LimitLocationConstraint.limit_transform -> limit_transform -LimitLocationConstraint.use_maximum_x -> use_x_max -LimitLocationConstraint.use_maximum_y -> use_y_max -LimitLocationConstraint.use_maximum_z -> use_z_max -LimitLocationConstraint.use_minimum_x -> use_x_min -LimitLocationConstraint.use_minimum_y -> use_y_min -LimitLocationConstraint.use_minimum_z -> use_z_min -LimitRotationConstraint.limit_transform -> limit_transform -LimitRotationConstraint.use_limit_x -> use_x_limit -LimitRotationConstraint.use_limit_y -> use_y_limit -LimitRotationConstraint.use_limit_z -> use_z_limit -LimitScaleConstraint.limit_transform -> limit_transform -LimitScaleConstraint.use_maximum_x -> use_x_max -LimitScaleConstraint.use_maximum_y -> use_y_max -LimitScaleConstraint.use_maximum_z -> use_z_max -LimitScaleConstraint.use_minimum_x -> use_x_min -LimitScaleConstraint.use_minimum_y -> use_y_min -LimitScaleConstraint.use_minimum_z -> use_z_min - - -Main.debug -> show_debug -Main.file_is_saved -> is_saved - - -* MaskModifier.invert -> invert - - -Material.cast_approximate -> use_cast_approximate -Material.cast_buffer_shadows -> use_cast_buffer_shadows -Material.cast_shadows_only -> use_cast_shadows_only -Material.cubic -> use_cubic -Material.exclude_mist -> use_exclude_mist -Material.face_texture -> use_face_texture -Material.face_texture_alpha -> use_face_texture_alpha -Material.full_oversampling -> use_full_oversampling -Material.invert_z -> use_invert_z -Material.light_group_exclusive -> use_light_group_exclusive -Material.object_color -> use_object_color -Material.only_shadow -> use_shadow_only -Material.ray_shadow_bias -> use_ray_shadow_bias -Material.receive_transparent_shadows -> use_receive_transparent_shadows -Material.shadeless -> use_shadeless -Material.shadows -> use_shadows -Material.tangent_shading -> use_tangent_shading -Material.traceable -> use_traceable -Material.transparency -> use_transparency -Material.use_diffuse_ramp -> use_diffuse_ramp -Material.use_nodes -> use_nodes -Material.use_sky -> use_sky -Material.use_specular_ramp -> use_specular_ramp -Material.use_textures -> use_textures -Material.vertex_color_light -> use_vertex_color_light -Material.vertex_color_paint -> use_vertex_color_paint - - -MaterialHalo.flare_mode -> use_flare_mode -MaterialHalo.lines -> use_lines -MaterialHalo.ring -> use_ring -MaterialHalo.shaded -> use_shaded -MaterialHalo.soft -> use_soft -MaterialHalo.star -> use_star -MaterialHalo.texture -> use_texture -MaterialHalo.vertex_normal -> use_vertex_normal -MaterialHalo.xalpha -> use_xalpha - - -MaterialPhysics.align_to_normal -> use_align_to_normal - - -* MaterialRaytraceMirror.enabled -> enabled - - -MaterialStrand.blender_units -> use_blender_units -MaterialStrand.surface_diffuse -> use_surface_diffuse -MaterialStrand.tangent_shading -> use_tangent_shading - - -* MaterialSubsurfaceScattering.enabled -> enabled - - -* MaterialTextureSlot.enabled -> enabled -MaterialTextureSlot.from_dupli -> use_from_dupli -MaterialTextureSlot.from_original -> use_from_original -MaterialTextureSlot.map_alpha -> use_map_alpha -MaterialTextureSlot.map_ambient -> use_map_ambient -MaterialTextureSlot.map_colordiff -> use_map_colordiff -MaterialTextureSlot.map_coloremission -> use_map_coloremission -MaterialTextureSlot.map_colorreflection -> use_map_colorreflection -MaterialTextureSlot.map_colorspec -> use_map_colorspec -MaterialTextureSlot.map_colortransmission -> use_map_colortransmission -MaterialTextureSlot.map_density -> use_map_density -MaterialTextureSlot.map_diffuse -> use_map_diffuse -MaterialTextureSlot.map_displacement -> use_map_displacement -MaterialTextureSlot.map_emission -> use_map_emission -MaterialTextureSlot.map_emit -> use_map_emit -MaterialTextureSlot.map_hardness -> use_map_hardness -MaterialTextureSlot.map_mirror -> use_map_mirror -MaterialTextureSlot.map_normal -> use_map_normal -MaterialTextureSlot.map_raymir -> use_map_raymir -MaterialTextureSlot.map_reflection -> use_map_reflect -MaterialTextureSlot.map_scattering -> use_map_scatter -MaterialTextureSlot.map_specular -> use_map_specular -MaterialTextureSlot.map_translucency -> use_map_translucency -MaterialTextureSlot.map_warp -> use_map_warp -MaterialTextureSlot.new_bump -> use_new_bump - - -MaterialVolume.external_shadows -> use_external_shadows -MaterialVolume.light_cache -> use_light_cache - - -Mesh.all_edges -> show_all_edges -Mesh.auto_texspace -> use_auto_texspace -Mesh.autosmooth -> use_autosmooth -Mesh.double_sided -> use_double_sided -Mesh.draw_bevel_weights -> show_bevel_weights -Mesh.draw_creases -> show_creases -Mesh.draw_edge_angle -> show_edge_angle -Mesh.draw_edge_lenght -> show_edge_lenght -Mesh.draw_edges -> show_edges -Mesh.draw_face_area -> show_face_area -Mesh.draw_faces -> show_faces -Mesh.draw_normals -> show_normals -Mesh.draw_seams -> show_seams -Mesh.draw_sharp -> show_sharp -Mesh.draw_vertex_normals -> show_vertex_normals -Mesh.use_mirror_topology -> use_mirror_topology -Mesh.use_mirror_x -> use_mirror_x -Mesh.use_paint_mask -> use_paint_mask -Mesh.vertex_normal_flip -> use_vertex_normal_flip - - -MeshColorLayer.active -> active -MeshColorLayer.active_render -> active_render - - -MeshDeformModifier.dynamic -> dynamic -MeshDeformModifier.invert -> invert -MeshDeformModifier.is_bound -> is_bound - - -MeshEdge.fgon -> is_fgon -* MeshEdge.hidden -> hide -MeshEdge.loose -> use_loose -MeshEdge.seam -> use_seam -* MeshEdge.selected -> select -MeshEdge.sharp -> use_sharp - - -* would use is_ * MeshFace.hidden -> hide -* would use is_ * MeshFace.selected -> select -* would use is_ * MeshFace.smooth -> smooth - - -MeshTextureFace.alpha_sort -> use_alpha_sort -MeshTextureFace.billboard -> use_billboard -MeshTextureFace.collision -> use_collision -MeshTextureFace.halo -> use_halo -* would use is_ * MeshTextureFace.invisible -> invisible -MeshTextureFace.light -> use_light -MeshTextureFace.object_color -> use_object_color -MeshTextureFace.shadow -> use_shadow_face -MeshTextureFace.shared -> use_blend_shared -MeshTextureFace.tex -> use_render_texture -MeshTextureFace.text -> use_bitmap_text -MeshTextureFace.twoside -> use_twoside -MeshTextureFace.uv_pinned -> uv_pin -MeshTextureFace.uv_selected -> uv_select -* MeshTextureFaceLayer.active -> active -* MeshTextureFaceLayer.active_clone -> active_clone -* MeshTextureFaceLayer.active_render -> active_render - - -* MeshVertex.hidden -> hide -* would use is_ * MeshVertex.selected -> select - - -MetaBall.auto_texspace -> use_auto_texspace - - -* MetaElement.hide -> hide -* would use is_ * MetaElement.negative -> negative - - -MetaSequence.convert_float -> use_convert_float -MetaSequence.de_interlace -> use_deinterlace -MetaSequence.flip_x -> use_flip_x -MetaSequence.flip_y -> use_flip_y -MetaSequence.premultiply -> use_convert_premultiply -MetaSequence.proxy_custom_directory -> use_proxy_custom_directory -MetaSequence.proxy_custom_file -> use_proxy_custom_file -MetaSequence.reverse_frames -> use_reverse_frames -MetaSequence.use_color_balance -> use_color_balance -MetaSequence.use_crop -> use_crop -MetaSequence.use_proxy -> use_proxy -MetaSequence.use_translation -> use_translation - - -MirrorModifier.clip -> use_clipping -MirrorModifier.mirror_u -> use_mirror_u -MirrorModifier.mirror_v -> use_mirror_v -MirrorModifier.mirror_vertex_groups -> use_mirror_vertex_groups -MirrorModifier.x -> use_x -MirrorModifier.y -> use_y -MirrorModifier.z -> use_z - - -Modifier.editmode -> use_in_editmode -Modifier.expanded -> show_expanded -Modifier.on_cage -> use_on_cage -Modifier.realtime -> show_realtime -Modifier.render -> use_render - - -* MotionPath.editing -> editing -* MotionPath.use_bone_head -> use_bone_head -* would use is_ * MotionPathVert.selected -> select - - -MovieSequence.convert_float -> use_convert_float -MovieSequence.de_interlace -> use_deinterlace -MovieSequence.flip_x -> use_flip_x -MovieSequence.flip_y -> use_flip_y -MovieSequence.premultiply -> use_convert_premultiply -MovieSequence.proxy_custom_directory -> use_proxy_custom_directory -MovieSequence.proxy_custom_file -> use_proxy_custom_file -* MovieSequence.reverse_frames -> use_reverse_frames -MovieSequence.use_color_balance -> use_color_balance -MovieSequence.use_crop -> use_crop -MovieSequence.use_proxy -> use_proxy -MovieSequence.use_translation -> use_translation - - -MulticamSequence.convert_float -> use_convert_float -MulticamSequence.de_interlace -> use_deinterlace -MulticamSequence.flip_x -> use_flip_x -MulticamSequence.flip_y -> use_flip_y -MulticamSequence.premultiply -> use_convert_premultiply -MulticamSequence.proxy_custom_directory -> use_proxy_custom_directory -MulticamSequence.proxy_custom_file -> use_proxy_custom_file -* MulticamSequence.reverse_frames -> use_reverse_frames -MulticamSequence.use_color_balance -> use_color_balance -MulticamSequence.use_crop -> use_crop -MulticamSequence.use_proxy -> use_proxy -MulticamSequence.use_translation -> use_translation - - -MultiresModifier.external -> use_external -MultiresModifier.optimal_display -> show_optimal - - - - - - -NetRenderSettings.master_broadcast -> use_master_broadcast -NetRenderSettings.master_clear -> use_master_clear -NetRenderSettings.slave_clear -> use_slave_clear -NetRenderSettings.slave_outputlog -> use_slave_outputlog -NetRenderSettings.slave_thumb -> use_slave_thumb - - -* I'd use is_ * NlaStrip.active -> active -NlaStrip.animated_influence -> use_animated_influence -NlaStrip.animated_time -> use_animated_time -NlaStrip.animated_time_cyclic -> use_animated_time_cyclic -NlaStrip.auto_blending -> use_auto_blend -* I'd use is_ * NlaStrip.muted -> muted -* I'd use is_ * NlaStrip.reversed -> reversed -* I'd use is_ * NlaStrip.selected -> select - - -* I'd use is_ * NlaTrack.active -> active -* I'd use is_ * NlaTrack.locked -> lock -* I'd use is_ * NlaTrack.muted -> muted -* I'd use is_ * NlaTrack.selected -> select -NlaTrack.solo -> is_solo - - -Object.draw_axis -> show_axis -Object.draw_bounds -> show_bounds -Object.draw_name -> show_name -Object.draw_texture_space -> show_texture_space -Object.draw_transparent -> show_transparent -Object.draw_wire -> show_wire -* Object.duplis_used -> is_duplis_used -* Object.layers -> layers -Object.lock_location -> lock_location -Object.lock_rotation -> lock_rotation -Object.lock_rotation_w -> lock_rotation_w -Object.lock_rotations_4d -> lock_rotations_4d -Object.lock_scale -> lock_scale -* Object.restrict_render -> use_limit_render -* Object.restrict_select -> use_limit_select -* Object.restrict_view -> use_limit_view -* Object.selected -> select -Object.shape_key_edit_mode -> use_shape_key_edit_mode -Object.shape_key_lock -> show_shape_key -Object.slow_parent -> use_slow_parent -Object.time_offset_add_parent -> use_time_offset_add_parent -Object.time_offset_edit -> use_time_offset_edit -Object.time_offset_parent -> use_time_offset_parent -Object.time_offset_particle -> use_time_offset_particle -Object.use_dupli_faces_scale -> use_dupli_faces_scale -Object.use_dupli_frames_speed -> use_dupli_frames_speed -Object.use_dupli_verts_rotation -> use_dupli_verts_rotation -Object.x_ray -> show_x_ray - - -* ObjectActuator.add_linear_velocity -> add_linear_velocity -ObjectActuator.local_angular_velocity -> use_local_angular_velocity -ObjectActuator.local_force -> use_local_force -ObjectActuator.local_linear_velocity -> use_local_linear_velocity -ObjectActuator.local_location -> use_local_location -ObjectActuator.local_rotation -> use_local_rotation -ObjectActuator.local_torque -> use_local_torque -* ObjectActuator.servo_limit_x -> use_limit_servo_x -* ObjectActuator.servo_limit_y -> use_limit_servo_y -* ObjectActuator.servo_limit_z -> use_limit_servo_z - - -* ObjectBase.layers -> layers -* ObjectBase.selected -> select -* ObjectBase.selected_user -> is_select_user - - -* could be is_ * ObstacleFluidSettings.active -> active -ObstacleFluidSettings.export_animated_mesh -> use_export_animated_mesh - - -* Operator.has_reports -> has_reports -OperatorStrokeElement.flip -> use_flip - - -OutflowFluidSettings.active -> active -OutflowFluidSettings.export_animated_mesh -> use_export_animated_mesh - - -Paint.fast_navigate -> show_low_resolution -Paint.show_brush -> show_brush - -* Panel.bl_default_closed -> bl_default_closed -* Panel.bl_show_header -> bl_show_header - - -ParentActuator.compound -> use_compound -ParentActuator.ghost -> use_ghost - - -* Particle.no_disp -> no_disp -* Particle.rekey -> rekey -* Particle.unexist -> unexist - - -ParticleBrush.use_puff_volume -> use_puff_volume - - -ParticleEdit.add_interpolate -> use_add_interpolate -ParticleEdit.auto_velocity -> use_auto_velocity -ParticleEdit.draw_particles -> show_particles -ParticleEdit.editable -> is_editable -ParticleEdit.emitter_deflect -> use_emitter_deflect -ParticleEdit.fade_time -> use_fade_time -* ParticleEdit.hair -> hair -ParticleEdit.keep_lengths -> use_keep_lengths -ParticleEdit.keep_root -> use_keep_root - - -ParticleFluidSettings.drops -> show_drops -ParticleFluidSettings.floats -> show_floats -ParticleFluidSettings.tracer -> show_tracer - - -ParticleInstanceModifier.alive -> show_alive -ParticleInstanceModifier.children -> use_children -ParticleInstanceModifier.dead -> show_dead -ParticleInstanceModifier.keep_shape -> use_keep_shape -ParticleInstanceModifier.normal -> use_normal -ParticleInstanceModifier.size -> use_size -ParticleInstanceModifier.unborn -> show_unborn -ParticleInstanceModifier.use_path -> use_path - - -ParticleSettings.abs_path_time -> use_abs_path_time -ParticleSettings.animate_branching -> use_animate_branching -ParticleSettings.billboard_lock -> lock_billboard -ParticleSettings.boids_2d -> lock_boids_to_surface -ParticleSettings.branching -> use_branching -ParticleSettings.child_effector -> use_child_effector -ParticleSettings.child_guide -> use_child_guide -ParticleSettings.child_render -> use_child_render -ParticleSettings.die_on_collision -> use_die_on_collision -ParticleSettings.died -> show_died -ParticleSettings.draw_health -> show_health -ParticleSettings.emitter -> use_emitter -ParticleSettings.enable_simplify -> use_simplify -ParticleSettings.even_distribution -> use_even_distribution -ParticleSettings.grid_invert -> invert_grid -ParticleSettings.hair_bspline -> use_hair_bspline -* ParticleSettings.hair_geometry -> hair_geometry -ParticleSettings.material_color -> show_material_color -ParticleSettings.num -> use_number -ParticleSettings.parent -> use_parent -ParticleSettings.rand_group -> use_random_group -ParticleSettings.react_multiple -> use_react_multiple -ParticleSettings.react_start_end -> use_react_start_end -ParticleSettings.render_adaptive -> show_path_steps -ParticleSettings.render_strand -> use_render_strand -ParticleSettings.rotation_dynamic -> use_rotation_dynamic -ParticleSettings.self_effect -> use_self_effect -ParticleSettings.show_size -> show_size -ParticleSettings.size_deflect -> use_size_deflect -ParticleSettings.sizemass -> use_multiply_size_mass -ParticleSettings.symmetric_branching -> use_symmetric_branching -ParticleSettings.trand -> use_emit_random -ParticleSettings.unborn -> show_unborn -ParticleSettings.use_global_dupli -> use_global_dupli -ParticleSettings.use_group_count -> use_group_count -ParticleSettings.velocity -> show_velocity -ParticleSettings.velocity_length -> use_velocity_length -* ParticleSettings.viewport -> viewport -ParticleSettings.whole_group -> use_whole_group - - -ParticleSystem.editable -> is_editable -ParticleSystem.edited -> is_edited -* ParticleSystem.global_hair -> global_hair -ParticleSystem.hair_dynamics -> use_hair_dynamics -ParticleSystem.keyed_timing -> use_keyed_timing -* ParticleSystem.multiple_caches -> multiple_caches -ParticleSystem.vertex_group_clump_negate -> invert_vertex_group_clump -ParticleSystem.vertex_group_density_negate -> invert_vertex_group_density -ParticleSystem.vertex_group_field_negate -> invert_vertex_group_field -ParticleSystem.vertex_group_kink_negate -> invert_vertex_group_kink -ParticleSystem.vertex_group_length_negate -> invert_vertex_group_length -ParticleSystem.vertex_group_rotation_negate -> invert_vertex_group_rotation -ParticleSystem.vertex_group_roughness1_negate -> invert_vertex_group_roughness1 -ParticleSystem.vertex_group_roughness2_negate -> invert_vertex_group_roughness2 -ParticleSystem.vertex_group_roughness_end_negate -> invert_vertex_group_roughness_end -ParticleSystem.vertex_group_size_negate -> invert_vertex_group_size -ParticleSystem.vertex_group_tangent_negate -> invert_vertex_group_tangent -ParticleSystem.vertex_group_velocity_negate -> invert_vertex_group_velocity - - -* ParticleTarget.valid -> valid - - -PivotConstraint.use_relative_position -> use_relative_location - - -PointCache.baked -> is_baked -* PointCache.baking -> baking -PointCache.disk_cache -> use_disk_cache -PointCache.external -> use_external -* PointCache.frames_skipped -> frames_skipped -PointCache.outdated -> is_outdated -PointCache.quick_cache -> use_quick_cache -PointCache.use_library_path -> use_library_path - - -PointDensity.turbulence -> use_turbulence - - -PointLamp.only_shadow -> use_shadow_only -PointLamp.shadow_layer -> use_shadow_own_layer -PointLamp.sphere -> use_sphere - - -PoseBone.has_ik -> is_in_ik_chain -* PoseBone.ik_dof_x -> ik_dof_x -* PoseBone.ik_dof_y -> ik_dof_y -* PoseBone.ik_dof_z -> ik_dof_z -PoseBone.ik_limit_x -> lock_ik_x -PoseBone.ik_limit_y -> lock_ik_y -PoseBone.ik_limit_z -> lock_ik_z -PoseBone.ik_lin_control -> use_ik_lin_control -PoseBone.ik_rot_control -> use_ik_rot_control -PoseBone.lock_location -> lock_location -PoseBone.lock_rotation -> lock_rotation -PoseBone.lock_rotation_w -> lock_rotation_w -PoseBone.lock_rotations_4d -> lock_rotations_4d -PoseBone.lock_scale -> lock_scale -* PoseBone.selected -> select - - -PoseTemplateSettings.generate_def_rig -> use_generate_def_rig - - -Property.is_never_none -> is_never_none -Property.is_readonly -> is_readonly -Property.is_required -> is_required -Property.registered -> is_registered -Property.registered_optional -> is_registered_optional -Property.use_output -> is_output - - -* PythonConstraint.script_error -> is_script_error -PythonConstraint.use_targets -> use_targets - - -PythonController.debug -> use_debug - - -RandomActuator.always_true -> use_always_true - - -RaySensor.x_ray_mode -> use_x_ray_mode - - -RegionView3D.box_clip -> use_box_clip -RegionView3D.box_preview -> show_synced_view -RegionView3D.lock_rotation -> lock_rotation - - -* RenderEngine.bl_postprocess -> use_bl_postprocess -* RenderEngine.bl_preview -> use_bl_preview - - -* RenderLayer.all_z -> all_z -* RenderLayer.edge -> edge -* RenderLayer.enabled -> enabled -* RenderLayer.halo -> halo -* RenderLayer.pass_ao -> pass_ao -* RenderLayer.pass_ao_exclude -> pass_ao_exclude -* RenderLayer.pass_color -> pass_color -* RenderLayer.pass_combined -> pass_combined -* RenderLayer.pass_diffuse -> pass_diffuse -* RenderLayer.pass_emit -> pass_emit -* RenderLayer.pass_emit_exclude -> pass_emit_exclude -* RenderLayer.pass_environment -> pass_environment -* RenderLayer.pass_environment_exclude -> pass_environment_exclude -* RenderLayer.pass_indirect -> pass_indirect -* RenderLayer.pass_indirect_exclude -> pass_indirect_exclude -* RenderLayer.pass_mist -> pass_mist -* RenderLayer.pass_normal -> pass_normal -* RenderLayer.pass_object_index -> pass_object_index -* RenderLayer.pass_reflection -> pass_reflection -* RenderLayer.pass_reflection_exclude -> pass_reflection_exclude -* RenderLayer.pass_refraction -> pass_refraction -* RenderLayer.pass_refraction_exclude -> pass_refraction_exclude -* RenderLayer.pass_shadow -> pass_shadow -* RenderLayer.pass_shadow_exclude -> pass_shadow_exclude -* RenderLayer.pass_specular -> pass_specular -* RenderLayer.pass_specular_exclude -> pass_specular_exclude -* RenderLayer.pass_uv -> pass_uv -* RenderLayer.pass_vector -> pass_vector -* RenderLayer.pass_z -> pass_z -* RenderLayer.sky -> sky -* RenderLayer.solid -> solid -* RenderLayer.strand -> strand -* RenderLayer.visible_layers -> visible_layers -* RenderLayer.zmask -> zmask -* RenderLayer.zmask_layers -> zmask_layers -* RenderLayer.zmask_negate -> zmask_negate -* RenderLayer.ztransp -> ztransp - - -RenderSettings.backbuf -> use_backbuf -RenderSettings.bake_active -> use_bake_active -RenderSettings.bake_clear -> use_bake_clear -RenderSettings.bake_enable_aa -> use_bake_enable_aa -RenderSettings.bake_normalized -> use_bake_normalized -RenderSettings.cineon_log -> use_cineon_log -RenderSettings.color_management -> use_color_management -RenderSettings.crop_to_border -> use_crop_to_border -RenderSettings.edge -> edge -RenderSettings.exr_half -> use_exr_half -RenderSettings.exr_preview -> use_exr_preview -RenderSettings.exr_zbuf -> use_exr_zbuf -RenderSettings.ffmpeg_autosplit -> use_ffmpeg_autosplit -RenderSettings.fields -> use_fields -RenderSettings.fields_still -> use_fields_still -RenderSettings.free_image_textures -> use_free_image_textures -RenderSettings.free_unused_nodes -> use_free_unused_nodes -RenderSettings.full_sample -> use_full_sample -RenderSettings.is_movie_format -> is_movie_format -RenderSettings.jpeg2k_ycc -> use_jpeg2k_ycc -RenderSettings.motion_blur -> use_motion_blur -* RenderSettings.multiple_engines -> multiple_engines -RenderSettings.render_antialiasing -> use_render_antialiasing -* doubled?* RenderSettings.render_stamp -> render_stamp -RenderSettings.save_buffers -> use_save_buffers -RenderSettings.simplify_triangulate -> use_simplify_triangulate -RenderSettings.single_layer -> use_active_layer -RenderSettings.stamp_camera -> use_stamp_camera -RenderSettings.stamp_date -> use_stamp_date -RenderSettings.stamp_filename -> use_stamp_filename -RenderSettings.stamp_frame -> use_stamp_frame -RenderSettings.stamp_marker -> use_stamp_marker -RenderSettings.stamp_note -> use_stamp_note -RenderSettings.stamp_render_time -> use_stamp_render_time -RenderSettings.stamp_scene -> use_stamp_scene -RenderSettings.stamp_sequencer_strip -> use_stamp_sequencer_strip -RenderSettings.stamp_time -> use_stamp_time -RenderSettings.tiff_bit -> use_tiff_bit -RenderSettings.use_border -> use_border -RenderSettings.use_compositing -> use_compositing -RenderSettings.use_envmaps -> use_envmaps -RenderSettings.use_file_extension -> use_file_extension -RenderSettings.use_game_engine -> use_game_engine -RenderSettings.use_instances -> use_instances -RenderSettings.use_local_coords -> use_local_coords -RenderSettings.use_overwrite -> use_overwrite -RenderSettings.use_placeholder -> use_placeholder -RenderSettings.use_radiosity -> use_radiosity -RenderSettings.use_raytracing -> use_raytrace -RenderSettings.use_sequencer -> use_sequencer -RenderSettings.use_sequencer_gl_preview -> use_sequencer_gl_preview -RenderSettings.use_sequencer_gl_render -> use_sequencer_gl_render -RenderSettings.use_shadows -> use_shadows -RenderSettings.use_simplify -> use_simplify -RenderSettings.use_sss -> use_sss -RenderSettings.use_textures -> use_textures - - -RigidBodyJointConstraint.disable_linked_collision -> use_disable_linked_collision -RigidBodyJointConstraint.draw_pivot -> show_pivot - - -Scene.frame_drop -> use_frame_drop -* Scene.layers -> layers -* Scene.mute_audio -> mute_audio -* Scene.nla_tweakmode_on -> is_nla_tweakmode_on -Scene.pov_radio_always_sample -> use_pov_radio_always_sample -Scene.pov_radio_display_advanced -> show_pov_radio_advanced -Scene.pov_radio_enable -> use_pov_radio_enable -Scene.pov_radio_media -> use_pov_radio_media -Scene.pov_radio_normal -> use_pov_radio_normal -Scene.scrub_audio -> use_scrub_audio -Scene.sync_audio -> use_sync_audio -Scene.use_gravity -> use_gravity -Scene.use_nodes -> use_nodes -Scene.use_preview_range -> use_preview_range - - -SceneGameData.activity_culling -> use_activity_culling -SceneGameData.auto_start -> use_auto_start -SceneGameData.fullscreen -> show_fullscreen -SceneGameData.glsl_extra_textures -> use_glsl_extra_textures -SceneGameData.glsl_lights -> use_glsl_lights -SceneGameData.glsl_nodes -> use_glsl_nodes -SceneGameData.glsl_ramps -> use_glsl_ramps -SceneGameData.glsl_shaders -> use_glsl_shaders -SceneGameData.glsl_shadows -> use_glsl_shadows -SceneGameData.show_debug_properties -> show_debug_properties -SceneGameData.show_framerate_profile -> show_framerate_profile -SceneGameData.show_physics_visualization -> show_physics_visualization -SceneGameData.use_animation_record -> use_animation_record -SceneGameData.use_deprecation_warnings -> use_deprecation_warnings -SceneGameData.use_display_lists -> use_display_lists -SceneGameData.use_frame_rate -> use_frame_rate -SceneGameData.use_occlusion_culling -> use_occlusion_culling - - -SceneRenderLayer.all_z -> use_all_z -SceneRenderLayer.edge -> use_edge -* SceneRenderLayer.enabled -> enabled -SceneRenderLayer.halo -> use_halo -SceneRenderLayer.pass_ao -> use_pass_ao -SceneRenderLayer.pass_ao_exclude -> use_pass_ao_exclude -SceneRenderLayer.pass_color -> use_pass_color -SceneRenderLayer.pass_combined -> use_pass_combined -SceneRenderLayer.pass_diffuse -> use_pass_diffuse -SceneRenderLayer.pass_emit -> use_pass_emit -SceneRenderLayer.pass_emit_exclude -> use_pass_emit_exclude -SceneRenderLayer.pass_environment -> use_pass_environment -SceneRenderLayer.pass_environment_exclude -> use_pass_environment_exclude -SceneRenderLayer.pass_indirect -> use_pass_indirect -SceneRenderLayer.pass_indirect_exclude -> use_pass_indirect_exclude -SceneRenderLayer.pass_mist -> use_pass_mist -SceneRenderLayer.pass_normal -> use_pass_normal -SceneRenderLayer.pass_object_index -> use_pass_object_index -SceneRenderLayer.pass_reflection -> use_pass_reflection -SceneRenderLayer.pass_reflection_exclude -> use_pass_reflection_exclude -SceneRenderLayer.pass_refraction -> use_pass_refraction -SceneRenderLayer.pass_refraction_exclude -> use_pass_refraction_exclude -SceneRenderLayer.pass_shadow -> use_pass_shadow -SceneRenderLayer.pass_shadow_exclude -> use_pass_shadow_exclude -SceneRenderLayer.pass_specular -> use_pass_specular -SceneRenderLayer.pass_specular_exclude -> use_pass_specular_exclude -SceneRenderLayer.pass_uv -> use_pass_uv -SceneRenderLayer.pass_vector -> use_pass_vector -SceneRenderLayer.pass_z -> use_pass_z -SceneRenderLayer.sky -> use_sky -SceneRenderLayer.solid -> use_solid -SceneRenderLayer.strand -> use_strand -SceneRenderLayer.visible_layers -> visible_layers -SceneRenderLayer.zmask -> use_zmask -SceneRenderLayer.zmask_layers -> use_zmask_layers -SceneRenderLayer.zmask_negate -> use_zmask_negate -SceneRenderLayer.ztransp -> use_ztransp - - -* SceneSequence.convert_float -> convert_float -* SceneSequence.de_interlace -> de_interlace -* SceneSequence.flip_x -> flip_x -* SceneSequence.flip_y -> flip_y -* SceneSequence.premultiply -> premultiply -* SceneSequence.proxy_custom_directory -> proxy_custom_directory -* SceneSequence.proxy_custom_file -> proxy_custom_file -* SceneSequence.reverse_frames -> reverse_frames -* SceneSequence.use_color_balance -> use_color_balance -* SceneSequence.use_crop -> use_crop -* SceneSequence.use_proxy -> use_proxy -* SceneSequence.use_translation -> use_translation - - -Scopes.use_full_resolution -> use_full_resolution - - -Screen.animation_playing -> is_animation_playing -Screen.fullscreen -> is_fullscreen - - -ScrewModifier.use_normal_calculate -> use_normal_calculate -ScrewModifier.use_normal_flip -> use_normal_flip -ScrewModifier.use_object_screw_offset -> use_object_screw_offset - - -Sculpt.lock_x -> lock_x -Sculpt.lock_y -> lock_y -Sculpt.lock_z -> lock_z -Sculpt.symmetry_x -> use_symmetry_x -Sculpt.symmetry_y -> use_symmetry_y -Sculpt.symmetry_z -> use_symmetry_z - - -Sensor.expanded -> show_expanded -* Sensor.invert -> invert -* Sensor.level -> level -Sensor.pulse_false_level -> use_pulse_false_level -Sensor.pulse_true_level -> use_pulse_true_level -Sensor.tap -> use_tap - - -* Sequence.frame_locked -> frame_locked -* Sequence.left_handle_selected -> select_left_handle -* Sequence.lock -> lock -* Sequence.mute -> mute -* Sequence.right_handle_selected -> select_right_handle -* Sequence.selected -> select -* Sequence.use_effect_default_fade -> use_effect_default_fade - - -SequenceColorBalance.inverse_gain -> invert_gain -SequenceColorBalance.inverse_gamma -> invert_gamma -SequenceColorBalance.inverse_lift -> invert_lift - - -ShaderNodeExtendedMaterial.diffuse -> use_diffuse -ShaderNodeExtendedMaterial.invert_normal -> invert_normal -ShaderNodeExtendedMaterial.specular -> use_specular - - -ShaderNodeMapping.clamp_maximum -> use_clamp_to_max -ShaderNodeMapping.clamp_minimum -> use_clamp_to_min - - -ShaderNodeMaterial.diffuse -> use_diffuse -ShaderNodeMaterial.invert_normal -> invert_normal -ShaderNodeMaterial.specular -> use_specular - - -ShaderNodeMixRGB.alpha -> use_alpha - - -ShapeActionActuator.continue_last_frame -> use_continue_last_frame - - -* ShapeKey.mute -> mute - - -* see below * ShrinkwrapConstraint.use_x -> use_x -* see below* ShrinkwrapConstraint.use_y -> use_y -* see below* ShrinkwrapConstraint.use_z -> use_z -ShrinkwrapModifier.cull_back_faces -> use_cull_back_faces -ShrinkwrapModifier.cull_front_faces -> use_cull_front_faces -ShrinkwrapModifier.keep_above_surface -> use_keep_above_surface -* ShrinkwrapModifier.negative -> negative -* ShrinkwrapModifier.positive -> positive -ShrinkwrapModifier.x -> use_x -ShrinkwrapModifier.y -> use_y -ShrinkwrapModifier.z -> use_z - - -SimpleDeformModifier.lock_x_axis -> lock_axis_x -SimpleDeformModifier.lock_y_axis -> lock_axis_y -SimpleDeformModifier.relative -> use_relative - - -SmokeDomainSettings.dissolve_smoke -> use_dissolve_smoke -SmokeDomainSettings.dissolve_smoke_log -> use_dissolve_smoke_log -SmokeDomainSettings.highres -> use_highres -SmokeDomainSettings.initial_velocity -> use_initial_velocity -SmokeDomainSettings.viewhighres -> show_highres - - -*negate* SmokeFlowSettings.outflow -> use_outflow - - -SmoothModifier.x -> use_x -SmoothModifier.y -> use_y -SmoothModifier.z -> use_z - - -SoftBodySettings.auto_step -> use_auto_step -SoftBodySettings.diagnose -> use_diagnose -SoftBodySettings.edge_collision -> use_edge_collision -SoftBodySettings.estimate_matrix -> use_estimate_matrix -SoftBodySettings.face_collision -> use_face_collision -SoftBodySettings.new_aero -> use_new_aero -SoftBodySettings.self_collision -> use_self_collision -SoftBodySettings.stiff_quads -> use_stiff_quads -SoftBodySettings.use_edges -> use_edges -SoftBodySettings.use_goal -> use_goal - - -* SolidifyModifier.invert -> invert_vertex_groups_influence -SolidifyModifier.use_even_offset -> use_even_offset -SolidifyModifier.use_quality_normals -> use_quality_normals -SolidifyModifier.use_rim -> use_rim -SolidifyModifier.use_rim_material -> use_rim_material - - -Sound.caching -> use_ram_cache - - -SoundActuator.enable_sound_3d -> use_sound_3d - - -SpaceConsole.show_report_debug -> show_report_debug -SpaceConsole.show_report_error -> show_report_error -SpaceConsole.show_report_info -> show_report_info -SpaceConsole.show_report_operator -> show_report_operator -SpaceConsole.show_report_warn -> show_report_warn - - -SpaceDopeSheetEditor.automerge_keyframes -> show_automerge_keyframes -SpaceDopeSheetEditor.realtime_updates -> use_realtime_updates -SpaceDopeSheetEditor.show_cframe_indicator -> show_cframe_indicator -SpaceDopeSheetEditor.show_seconds -> show_seconds -SpaceDopeSheetEditor.show_sliders -> show_sliders -SpaceDopeSheetEditor.use_marker_sync -> use_marker_sync - - -SpaceGraphEditor.automerge_keyframes -> show_automerge_keyframes -* SpaceGraphEditor.has_ghost_curves -> has_ghost_curves -SpaceGraphEditor.only_selected_curves_handles -> use_only_selected_curves_handles -SpaceGraphEditor.only_selected_keyframe_handles -> use_only_selected_keyframe_handles -SpaceGraphEditor.realtime_updates -> use_realtime_updates -SpaceGraphEditor.show_cframe_indicator -> show_cframe_indicator -SpaceGraphEditor.show_cursor -> show_cursor -SpaceGraphEditor.show_handles -> show_handles -SpaceGraphEditor.show_seconds -> show_seconds -SpaceGraphEditor.show_sliders -> show_sliders - - -SpaceImageEditor.draw_repeated -> show_repeated -SpaceImageEditor.image_painting -> use_image_paint -SpaceImageEditor.image_pin -> show_image_pin -SpaceImageEditor.show_paint -> show_paint -SpaceImageEditor.show_render -> show_render -SpaceImageEditor.show_uvedit -> show_uvedit -SpaceImageEditor.update_automatically -> use_update_automatically -SpaceImageEditor.use_grease_pencil -> use_grease_pencil - - -SpaceLogicEditor.actuators_show_active_objects -> show_actuators_active_objects -SpaceLogicEditor.actuators_show_active_states -> show_actuators_active_states -SpaceLogicEditor.actuators_show_linked_controller -> show_actuators_linked_controller -SpaceLogicEditor.actuators_show_selected_objects -> show_actuators_selected_objects -SpaceLogicEditor.controllers_show_active_objects -> show_controllers_active_objects -SpaceLogicEditor.controllers_show_linked_controller -> show_controllers_linked_controller -SpaceLogicEditor.controllers_show_selected_objects -> show_controllers_selected_objects -SpaceLogicEditor.sensors_show_active_objects -> show_sensors_active_objects -SpaceLogicEditor.sensors_show_active_states -> show_sensors_active_states -SpaceLogicEditor.sensors_show_linked_controller -> show_sensors_linked_controller -SpaceLogicEditor.sensors_show_selected_objects -> show_sensors_selected_objects - - -SpaceNLA.realtime_updates -> use_realtime_updates -SpaceNLA.show_cframe_indicator -> show_cframe_indicator -SpaceNLA.show_seconds -> show_seconds -SpaceNLA.show_strip_curves -> show_strip_curves - - -SpaceNodeEditor.backdrop -> show_backdrop - - -SpaceOutliner.match_case_sensitive -> use_match_case_sensitive -SpaceOutliner.match_complete -> use_match_complete -SpaceOutliner.show_restriction_columns -> show_restriction_columns - - -SpaceProperties.brush_texture -> show_brush_texture -SpaceProperties.use_pin_id -> use_pin_id - - -* SpaceSequenceEditor.draw_frames -> draw_frames -* SpaceSequenceEditor.draw_safe_margin -> draw_safe_margin -* SpaceSequenceEditor.separate_color_preview -> separate_color_preview -* SpaceSequenceEditor.show_cframe_indicator -> show_cframe_indicator -* SpaceSequenceEditor.use_grease_pencil -> use_grease_pencil -* SpaceSequenceEditor.use_marker_sync -> use_marker_sync - - -SpaceTextEditor.find_all -> use_find_all -SpaceTextEditor.find_wrap -> use_find_wrap -SpaceTextEditor.line_numbers -> show_line_numbers -SpaceTextEditor.live_edit -> use_live_edit -SpaceTextEditor.overwrite -> use_overwrite -SpaceTextEditor.syntax_highlight -> use_syntax_highlight -SpaceTextEditor.word_wrap -> use_word_wrap - - -SpaceTimeline.only_selected -> use_only_selected -SpaceTimeline.play_all_3d -> use_play_all_3d -SpaceTimeline.play_anim -> use_play_anim -SpaceTimeline.play_buttons -> use_play_buttons -SpaceTimeline.play_image -> use_play_image -SpaceTimeline.play_nodes -> use_play_nodes -SpaceTimeline.play_sequencer -> use_play_sequencer -SpaceTimeline.play_top_left -> use_play_top_left -SpaceTimeline.show_cframe_indicator -> show_cframe_indicator - - -SpaceUVEditor.constrain_to_image_bounds -> use_constrain_to_image_bounds -SpaceUVEditor.draw_modified_edges -> show_modified_edges -SpaceUVEditor.draw_other_objects -> show_other_objects -SpaceUVEditor.draw_smooth_edges -> show_smooth_edges -SpaceUVEditor.draw_stretch -> show_stretch -SpaceUVEditor.live_unwrap -> use_live_unwrap -SpaceUVEditor.normalized_coordinates -> show_normalized_coordinates -SpaceUVEditor.snap_to_pixels -> use_snap_to_pixels - - -SpaceView3D.all_object_origins -> show_all_objects_origin -SpaceView3D.display_background_images -> show_background_images -SpaceView3D.display_floor -> show_floor -SpaceView3D.display_render_override -> show_render_override -SpaceView3D.display_x_axis -> show_axis_x -SpaceView3D.display_y_axis -> show_axis_y -SpaceView3D.display_z_axis -> show_axis_z -* SpaceView3D.layers -> layers -SpaceView3D.lock_camera_and_layers -> lock_camera_and_layers -SpaceView3D.manipulator -> use_manipulator -SpaceView3D.manipulator_rotate -> use_manipulator_rotate -SpaceView3D.manipulator_scale -> use_manipulator_scale -SpaceView3D.manipulator_translate -> use_manipulator_translate -SpaceView3D.occlude_geometry -> use_occlude_geometry -SpaceView3D.outline_selected -> show_outline_selected -SpaceView3D.pivot_point_align -> use_pivot_point_align -SpaceView3D.relationship_lines -> show_relationship_lines -SpaceView3D.textured_solid -> show_textured_solid -* SpaceView3D.used_layers -> layers_used - - -SpeedControlSequence.curve_compress_y -> use_curve_compress_y -SpeedControlSequence.curve_velocity -> use_curve_velocity -SpeedControlSequence.frame_blending -> use_frame_blend - - -Spline.bezier_u -> use_bezier_u -Spline.bezier_v -> use_bezier_v -Spline.cyclic_u -> use_cyclic_u -Spline.cyclic_v -> use_cyclic_v -Spline.endpoint_u -> use_endpoint_u -Spline.endpoint_v -> use_endpoint_v -* Spline.hide -> hide -Spline.smooth -> use_smooth - - - - - - -SplineIKConstraint.chain_offset -> use_chain_offset -* SplineIKConstraint.even_divisions -> use_even_divisions -SplineIKConstraint.use_curve_radius -> use_curve_radius -SplineIKConstraint.y_stretch -> use_y_stretch - - -* SplinePoint.hidden -> hide -* SplinePoint.selected -> select - - -SpotLamp.auto_clip_end -> use_auto_clip_end -SpotLamp.auto_clip_start -> use_auto_clip_start -SpotLamp.halo -> use_halo -SpotLamp.only_shadow -> use_shadow_only -SpotLamp.shadow_layer -> use_shadow_own_layer -SpotLamp.show_cone -> show_cone -SpotLamp.sphere -> use_sphere -SpotLamp.square -> use_square - - -* StateActuator.state -> state - - -SubsurfModifier.optimal_display -> show_optimal -SubsurfModifier.subsurf_uv -> use_subsurf_uv - - -SunLamp.only_shadow -> use_shadow_only -SunLamp.shadow_layer -> use_shadow_own_layer - - -SurfaceCurve.map_along_length -> use_map_along_length -SurfaceCurve.vertex_normal_flip -> use_vertex_normal_flip - - -TexMapping.has_maximum -> use_clip_to_max -TexMapping.has_minimum -> use_clip_to_min - - -Text.dirty -> is_dirty -Text.memory -> is_in_memory -Text.modified -> is_modified -Text.tabs_as_spaces -> use_tabs_as_spaces -Text.use_module -> use_module - - -TextCharacterFormat.bold -> use_bold -TextCharacterFormat.italic -> use_italic -TextCharacterFormat.style -> use_style -TextCharacterFormat.underline -> use_underline -TextCharacterFormat.wrap -> use_wrap - - -TextCurve.fast -> use_fast_editing -TextCurve.map_along_length -> use_map_along_length -TextCurve.vertex_normal_flip -> use_vertex_normal_flip - - -TextMarker.edit_all -> use_edit_all -* TextMarker.temporary -> is_temporary - - -Texture.use_color_ramp -> use_color_ramp -Texture.use_nodes -> use_nodes -Texture.use_preview_alpha -> use_preview_alpha -TextureNodeMixRGB.alpha -> use_alpha -TextureSlot.negate -> use_negate -TextureSlot.rgb_to_intensity -> use_rgb_to_intensity -TextureSlot.stencil -> use_stencil - - -ThemeBoneColorSet.colored_constraints -> show_colored_constraints -ThemeWidgetColors.shaded -> show_shaded - - -* TimelineMarker.selected -> select - - -ToolSettings.auto_normalize -> use_auto_normalize -ToolSettings.automerge_editing -> use_automerge_editing -ToolSettings.bone_sketching -> use_bone_sketching -ToolSettings.etch_autoname -> use_etch_autoname -ToolSettings.etch_overdraw -> use_etch_overdraw -ToolSettings.etch_quick -> use_etch_quick -ToolSettings.mesh_selection_mode -> use_mesh_selection_mode -ToolSettings.record_with_nla -> use_record_with_nla -ToolSettings.snap -> use_snap -ToolSettings.snap_align_rotation -> use_snap_align_rotation -ToolSettings.snap_peel_object -> use_snap_peel_object -ToolSettings.snap_project -> use_snap_project -ToolSettings.use_auto_keying -> use_keyframe_insert_auto -* ToolSettings.uv_local_view -> show_only_uv_local_view -ToolSettings.uv_sync_selection -> use_uv_sync_selection - - -TrackToConstraint.target_z -> use_target_z - - -TransformConstraint.extrapolate_motion -> use_motion_extrapolate -TransformSequence.uniform_scale -> use_uniform_scale - - -UILayout.active -> active -UILayout.enabled -> enabled - - -UVProjectModifier.override_image -> show_override_image - - -UnitSettings.use_separate -> use_separate - - -UserPreferencesEdit.auto_keyframe_insert_available -> use_keyframe_insert_auto_available -UserPreferencesEdit.auto_keyframe_insert_keyingset -> use_keyframe_insert_auto_keyingset -UserPreferencesEdit.drag_immediately -> use_drag_immediately -UserPreferencesEdit.duplicate_action -> use_duplicate_action -UserPreferencesEdit.duplicate_armature -> use_duplicate_armature -UserPreferencesEdit.duplicate_curve -> use_duplicate_curve -UserPreferencesEdit.duplicate_fcurve -> use_duplicate_fcurve -UserPreferencesEdit.duplicate_lamp -> use_duplicate_lamp -UserPreferencesEdit.duplicate_material -> use_duplicate_material -UserPreferencesEdit.duplicate_mesh -> use_duplicate_mesh -UserPreferencesEdit.duplicate_metaball -> use_duplicate_metaball -UserPreferencesEdit.duplicate_particle -> use_duplicate_particle -UserPreferencesEdit.duplicate_surface -> use_duplicate_surface -UserPreferencesEdit.duplicate_text -> use_duplicate_text -UserPreferencesEdit.duplicate_texture -> use_duplicate_texture -UserPreferencesEdit.enter_edit_mode -> use_enter_edit_mode -UserPreferencesEdit.global_undo -> use_global_undo -UserPreferencesEdit.grease_pencil_simplify_stroke -> use_grease_pencil_simplify_stroke -UserPreferencesEdit.grease_pencil_smooth_stroke -> use_grease_pencil_smooth_stroke -UserPreferencesEdit.insertkey_xyz_to_rgb -> show_insertkey_xyz_to_rgb -UserPreferencesEdit.keyframe_insert_needed -> use_keyframe_insert_needed -UserPreferencesEdit.snap_rotate -> use_snap_grid_rotate -UserPreferencesEdit.snap_scale -> use_snap_grid_scale -UserPreferencesEdit.snap_translate -> use_snap_grid_translate -UserPreferencesEdit.use_auto_keying -> use_auto_keying -UserPreferencesEdit.use_negative_frames -> use_negative_frames -UserPreferencesEdit.use_visual_keying -> show_visual_keying - - - - - - -UserPreferencesFilePaths.auto_save_temporary_files -> use_auto_save_temporary_files -UserPreferencesFilePaths.compress_file -> use_file_compression -UserPreferencesFilePaths.filter_file_extensions -> show_only_file_extensions -UserPreferencesFilePaths.hide_dot_files_datablocks -> show_dot_files_datablocks -UserPreferencesFilePaths.load_ui -> use_load_ui -UserPreferencesFilePaths.save_preview_images -> use_save_preview_images -UserPreferencesFilePaths.use_relative_paths -> use_relative_paths - - -UserPreferencesInput.continuous_mouse -> use_continuous_mouse -UserPreferencesInput.emulate_3_button_mouse -> use_emulate_3_button_mouse -UserPreferencesInput.emulate_numpad -> use_emulate_numpad -UserPreferencesInput.invert_zoom_direction -> invert_zoom - - -UserPreferencesSystem.auto_execute_scripts -> use_scripts_auto_execute -UserPreferencesSystem.enable_all_codecs -> use_preview_images -UserPreferencesSystem.international_fonts -> use_fonts_international -UserPreferencesSystem.tabs_as_spaces -> use_tabs_as_spaces -UserPreferencesSystem.translate_buttons -> show_translate_buttons -UserPreferencesSystem.translate_toolbox -> show_translate_toolbox -UserPreferencesSystem.translate_tooltips -> show_translate_tooltips -UserPreferencesSystem.use_antialiasing -> show_antialiasing -UserPreferencesSystem.use_mipmaps -> use_mipmaps -UserPreferencesSystem.use_textured_fonts -> show_fonts_textured -UserPreferencesSystem.use_vbos -> use_vertex_buffer_objects -UserPreferencesSystem.use_weight_color_range -> show_weight_color_range - - -UserPreferencesView.auto_depth -> use_mouse_auto_depth -UserPreferencesView.auto_perspective -> show_auto_perspective -UserPreferencesView.directional_menus -> show_directional_menus -UserPreferencesView.display_object_info -> show_object_info -UserPreferencesView.global_pivot -> show_global_pivot -UserPreferencesView.global_scene -> show_global_scene -UserPreferencesView.open_mouse_over -> use_mouse_over_open -UserPreferencesView.pin_floating_panels -> show_pin_floating_panels -UserPreferencesView.rotate_around_selection -> use_rotate_around_selection -UserPreferencesView.show_mini_axis -> show_mini_axis -UserPreferencesView.show_playback_fps -> show_playback_fps -UserPreferencesView.show_splash -> show_splash -UserPreferencesView.show_view_name -> show_view_name -UserPreferencesView.tooltips -> use_tooltips -UserPreferencesView.use_column_layout -> show_column_layout -UserPreferencesView.use_large_cursors -> show_large_cursors -UserPreferencesView.use_manipulator -> show_manipulator -UserPreferencesView.use_middle_mouse_paste -> use_mouse_mmb_paste -UserPreferencesView.wheel_invert_zoom -> invert_mouse_wheel_zoom -UserPreferencesView.zoom_to_mouse -> use_zoom_ato_mouse - - -* UserSolidLight.enabled -> use - - -VertexPaint.all_faces -> use_all_faces -VertexPaint.normals -> use_normals -VertexPaint.spray -> use_spray - - -VisibilityActuator.children -> show_occluded_children -VisibilityActuator.occlusion -> show_occluded -VisibilityActuator.visible -> show - - -VoxelData.still -> use_still - - -WaveModifier.cyclic -> use_cyclic -WaveModifier.normals -> show_normals -WaveModifier.x -> use_x -WaveModifier.x_normal -> use_normal_x -WaveModifier.y -> use_y -WaveModifier.y_normal -> use_normal_y -WaveModifier.z_normal -> use_normal_z - - -World.blend_sky -> use_sky_blend -World.paper_sky -> use_sky_paper -World.real_sky -> use_sky_real -WorldLighting.falloff -> use_falloff -WorldLighting.pixel_cache -> use_ao_pixel_cache -WorldLighting.use_ambient_occlusion -> use_ao -WorldLighting.use_environment_lighting -> use_environment_lighting -WorldLighting.use_indirect_lighting -> use_indirect_lighting -WorldMistSettings.use_mist -> use_mist -WorldStarsSettings.use_stars -> use_stars -WorldTextureSlot.map_blend -> use_map_blend -WorldTextureSlot.map_horizon -> use_map_horizon -WorldTextureSlot.map_zenith_down -> use_map_zenith_down -WorldTextureSlot.map_zenith_up -> use_map_zenith_up diff --git a/source/blender/makesrna/rna_cleanup/rna_booleans.txt b/source/blender/makesrna/rna_cleanup/rna_booleans.txt index 81530b5764e..4cae982183c 100644 --- a/source/blender/makesrna/rna_cleanup/rna_booleans.txt +++ b/source/blender/makesrna/rna_cleanup/rna_booleans.txt @@ -1,19 +1,19 @@ ActionActuator.continue_last_frame -> continue_last_frame: boolean Restore last frame when switching on/off, otherwise play from the start each time ActionGroup.expanded -> show_expanded: boolean Action Group is expanded -ActionGroup.locked -> use_lock: boolean Action Group is locked -ActionGroup.selected -> selected: boolean Action Group is selected +ActionGroup.locked -> lock: boolean Action Group is locked +ActionGroup.selected -> select: boolean Action Group is selected Actuator.expanded -> show_expanded: boolean Set actuator expanded in the user interface AnimData.nla_enabled -> use_nla: boolean NLA stack is evaluated when evaluating this block AnimVizMotionPaths.highlight_keyframes -> show_keyframe_highlight: boolean Emphasize position of keyframes on Motion Paths AnimVizMotionPaths.search_all_action_keyframes -> use_keyframe_action_all: boolean For bone motion paths, search whole Action for keyframes instead of in group with matching name only (is slower) AnimVizMotionPaths.show_frame_numbers -> show_frame_numbers: boolean Show frame numbers on Motion Paths AnimVizMotionPaths.show_keyframe_numbers -> show_keyframe_numbers: boolean Show frame numbers of Keyframes on Motion Paths -AnimVizOnionSkinning.only_selected -> showonly_selected: boolean For Pose-Mode drawing, only draw ghosts for selected bones +AnimVizOnionSkinning.only_selected -> show_only_selected: boolean For Pose-Mode drawing, only draw ghosts for selected bones Area.show_menus -> show_menus: boolean Show menus in the header AreaLamp.dither -> use_dither: boolean Use 2x2 dithering for sampling (Constant Jittered sampling) AreaLamp.jitter -> use_jitter: boolean Use noise for sampling (Constant Jittered sampling) -AreaLamp.only_shadow -> useonly_shadow: boolean Causes light to cast shadows only without illuminating objects -AreaLamp.shadow_layer -> useonly_shadow_layer: boolean Causes only objects on the same layer to cast shadows +AreaLamp.only_shadow -> use_only_shadow: boolean Causes light to cast shadows only without illuminating objects +AreaLamp.shadow_layer -> use_only_shadow_layer: boolean Causes only objects on the same layer to cast shadows AreaLamp.umbra -> use_umbra: boolean Emphasize parts that are fully shadowed (Constant Jittered sampling) Armature.auto_ik -> use_auto_ik: boolean Add temporaral IK constraints while grabbing bones in Pose Mode Armature.deform_bbone_rest -> use_deform_b_bone_rest: boolean Make B-Bones deform already in Rest Position @@ -25,29 +25,29 @@ Armature.draw_axes -> show_axes: boolean Draw bone axes Armature.draw_custom_bone_shapes -> show_bone_custom: boolean Draw bones with their custom shapes Armature.draw_group_colors -> show_group_colors: boolean Draw bone group colors Armature.draw_names -> show_names: boolean Draw bone names -Armature.ghost_only_selected -> showonly_ghost_selected: boolean +Armature.ghost_only_selected -> show_only_ghost_selected: boolean Armature.layer -> layer: boolean Armature layer visibility -Armature.layer_protection -> layer_protection: boolean Protected layers in Proxy Instances are restored to Proxy settings on file reload and undo +Armature.layer_protection -> layer_protect: boolean Protected layers in Proxy Instances are restored to Proxy settings on file reload and undo Armature.x_axis_mirror -> use_mirror_x: boolean Apply changes to matching bone on opposite side of X-Axis ArmatureModifier.b_bone_rest -> use_b_bone_rest: boolean Make B-Bones deform already in rest position ArmatureModifier.invert -> use_vertex_group_invert: boolean Invert vertex group influence ArmatureModifier.multi_modifier -> use_multi_modifier: boolean Use same input as previous modifier, and mix results using overall vgroup ArmatureModifier.quaternion -> use_preserve_volume: boolean Deform rotation interpolation with quaternions -ArmatureModifier.use_bone_envelopes -> use_bone_envelopes: boolean -ArmatureModifier.use_vertex_groups -> use_vertex_groups: boolean +ArmatureModifier.use_bone_envelopes -> use_bone_envelopes: boolean +ArmatureModifier.use_vertex_groups -> use_vertex_groups: boolean ArrayModifier.add_offset_object -> use_object_offset: boolean Add another object's transformation to the total offset ArrayModifier.constant_offset -> use_constant_offset: boolean Add a constant offset ArrayModifier.merge_adjacent_vertices -> use_merge_vertex: boolean Merge vertices in adjacent duplicates ArrayModifier.merge_end_vertices -> use_merge_vertex_end: boolean Merge vertices in first and last duplicates ArrayModifier.relative_offset -> use_relative_offset: boolean Add an offset relative to the object's bounding box BackgroundImage.show_expanded -> show_expanded: boolean Show the expanded in the user interface -BevelModifier.only_vertices -> useonly_vertex: boolean Bevel verts/corners, not edges -BezierSplinePoint.hidden -> hidden: boolean Visibility status -BezierSplinePoint.selected_control_point -> selected_control_point: boolean Control point selection status -BezierSplinePoint.selected_handle1 -> selected_handle1: boolean Handle 1 selection status -BezierSplinePoint.selected_handle2 -> selected_handle2: boolean Handle 2 selection status -BoidRule.in_air -> use_air: boolean Use rule when boid is flying -BoidRule.on_land -> use_land: boolean Use rule when boid is on land +BevelModifier.only_vertices -> use_only_vertex: boolean Bevel verts/corners, not edges +BezierSplinePoint.hidden -> hide: boolean Visibility status +BezierSplinePoint.selected_control_point -> select_control_point: boolean Control point selection status +BezierSplinePoint.selected_handle1 -> select_left_handle: boolean Handle 1 selection status +BezierSplinePoint.selected_handle2 -> select_right_handle: boolean Handle 2 selection status +BoidRule.in_air -> use_in_air: boolean Use rule when boid is flying +BoidRule.on_land -> use_on_land: boolean Use rule when boid is on land BoidRuleAvoid.predict -> use_predict: boolean Predict target movement BoidRuleAvoidCollision.boids -> use_avoid: boolean Avoid collision with other boids BoidRuleAvoidCollision.deflectors -> use_deflect: boolean Avoid collision with deflector objects @@ -56,18 +56,18 @@ BoidRuleGoal.predict -> use_predict: boolean Predict target movement BoidSettings.allow_climb -> use_climb: boolean Allow boids to climb goal objects BoidSettings.allow_flight -> use_flight: boolean Allow boids to move in air BoidSettings.allow_land -> use_land: boolean Allow boids to move on land -Bone.connected -> is_connected: boolean, (read-only) When bone has a parent, bone's head is struck to the parent's tail +Bone.connected -> use_connect: boolean, (read-only) When bone has a parent, bone's head is struck to the parent's tail Bone.cyclic_offset -> use_cyclic_offset: boolean When bone doesn't have a parent, it receives cyclic offset effects Bone.deform -> use_deform: boolean Bone does not deform any geometry Bone.draw_wire -> show_wire: boolean Bone is always drawn as Wireframe regardless of viewport draw mode. Useful for non-obstructive custom bone shapes -Bone.hidden -> hidden: boolean Bone is not visible when it is not in Edit Mode (i.e. in Object or Pose Modes) +Bone.hidden -> hide: boolean Bone is not visible when it is not in Edit Mode (i.e. in Object or Pose Modes) Bone.hinge -> use_hinge: boolean Bone inherits rotation or scale from parent bone Bone.inherit_scale -> use_inherit_scale: boolean Bone inherits scaling from parent bone Bone.layer -> layer: boolean Layers bone exists in Bone.local_location -> use_local_location: boolean Bone location is set in local space Bone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean When deforming bone, multiply effects of Vertex Group weights with Envelope influence TODO * Bone.restrict_select -> restrict_select: boolean Bone is able to be selected -Bone.selected -> selected: boolean +Bone.selected -> select: boolean BooleanProperty.default -> default: boolean, (read-only) Default value for this number BooleanProperty.default_array -> default_array: boolean, (read-only) Default value for this array Brush.use_accumulate -> use_accumulate: boolean Accumulate stroke dabs on top of each other @@ -92,9 +92,9 @@ Camera.show_passepartout -> show_passepartout: boolean Show a darkened ove Camera.show_title_safe -> show_title_safe: boolean Show indicators for the title safe zone in Camera view CastModifier.from_radius -> use_radius_as_size: boolean Use radius as size of projection shape (0 = auto) CastModifier.use_transform -> use_transform: boolean Use object transform to control projection shape -CastModifier.x -> use_x: boolean -CastModifier.y -> use_y: boolean -CastModifier.z -> use_z: boolean +CastModifier.x -> use_x: boolean +CastModifier.y -> use_y: boolean +CastModifier.z -> use_z: boolean ChildOfConstraint.use_location_x -> use_location_x: boolean Use X Location of Parent ChildOfConstraint.use_location_y -> use_location_y: boolean Use Y Location of Parent ChildOfConstraint.use_location_z -> use_location_z: boolean Use Z Location of Parent @@ -108,38 +108,38 @@ ClampToConstraint.cyclic -> use_cyclic: boolean Treat curve as cyclic curv ClothCollisionSettings.enable_collision -> use_collision: boolean Enable collisions with other objects ClothCollisionSettings.enable_self_collision -> use_self_collision: boolean Enable self collisions ClothSettings.pin_cloth -> use_pin_cloth: boolean Enable pinning of cloth vertices to other objects/positions -ClothSettings.stiffness_scaling -> use_stiffness_scaling: boolean If enabled, stiffness can be scaled along a weight painted vertex group +ClothSettings.stiffness_scaling -> use_stiffness_scale: boolean If enabled, stiffness can be scaled along a weight painted vertex group TODO * CollisionSensor.collision_type -> collision_type: boolean Toggle collision on material or property CollisionSensor.pulse -> use_pulse: boolean Changes to the set of colliding objects generates pulse CollisionSettings.enabled -> use_collision: boolean Enable this objects as a collider for physics systems CollisionSettings.kill_particles -> use_particle_kill: boolean Kill collided particles -CompositorNodeAlphaOver.convert_premul -> use_convert_premultiply: boolean -CompositorNodeBlur.bokeh -> use_bokeh: boolean -CompositorNodeBlur.gamma -> use_gamma: boolean -CompositorNodeBlur.relative -> use_relative: boolean +CompositorNodeAlphaOver.convert_premul -> use_convert_premultiply: boolean +CompositorNodeBlur.bokeh -> use_bokeh: boolean +CompositorNodeBlur.gamma -> use_gamma_correct: boolean +CompositorNodeBlur.relative -> use_relative: boolean CompositorNodeColorSpill.unspill -> use_unspill: boolean Compensate all channels (diffenrently) by hand CompositorNodeCrop.crop_size -> use_crop_size: boolean Whether to crop the size of the input image -CompositorNodeDBlur.wrap -> use_wrap: boolean +CompositorNodeDBlur.wrap -> use_wrap: boolean CompositorNodeDefocus.gamma_correction -> use_gamma_correct: boolean Enable gamma correction before and after main process CompositorNodeDefocus.preview -> use_preview: boolean Enable sampling mode, useful for preview when using low samplecounts CompositorNodeDefocus.use_zbuffer -> use_zbuffer: boolean Disable when using an image as input instead of actual zbuffer (auto enabled if node not image based, eg. time node) CompositorNodeGlare.rotate_45 -> use_rotate_45: boolean Simple star filter: add 45 degree rotation offset -CompositorNodeImage.auto_refresh -> use_auto_refresh: boolean -CompositorNodeImage.cyclic -> use_cyclic: boolean -CompositorNodeInvert.alpha -> use_alpha: boolean -CompositorNodeInvert.rgb -> use_rgb: boolean +CompositorNodeImage.auto_refresh -> use_auto_refresh: boolean +CompositorNodeImage.cyclic -> use_cyclic: boolean +CompositorNodeInvert.alpha -> use_alpha: boolean +CompositorNodeInvert.rgb -> invert_rgb: boolean CompositorNodeLensdist.fit -> use_fit: boolean For positive distortion factor only: scale image such that black areas are not visible CompositorNodeLensdist.jitter -> use_jitter: boolean Enable/disable jittering; faster, but also noisier CompositorNodeLensdist.projector -> use_projector: boolean Enable/disable projector mode. Effect is applied in horizontal direction only -CompositorNodeMapValue.use_max -> use_max: boolean -CompositorNodeMapValue.use_min -> use_min: boolean +CompositorNodeMapValue.use_max -> use_max: boolean +CompositorNodeMapValue.use_min -> use_min: boolean CompositorNodeMixRGB.alpha -> use_alpha: boolean Include alpha of second input in this operation -CompositorNodeOutputFile.exr_half -> use_exr_half: boolean +CompositorNodeOutputFile.exr_half -> use_exr_half: boolean CompositorNodeVecBlur.curved -> use_curve: boolean Interpolate between frames in a bezier curve, rather than linearly TODO * Constraint.active -> active: boolean Constraint is the one being edited Constraint.disabled -> is_valid: boolean, (read-only) Constraint has invalid settings and will not be evaluated Constraint.expanded -> show_expanded: boolean Constraint's panel is expanded in UI -Constraint.proxy_local -> proxy_local: boolean Constraint was added in this proxy instance (i.e. did not belong to source Armature) +Constraint.proxy_local -> is_proxy_local: boolean Constraint was added in this proxy instance (i.e. did not belong to source Armature) ConstraintActuator.detect_material -> use_material_detect: boolean Detect material instead of property ConstraintActuator.fh_normal -> use_fh_normal: boolean Add a horizontal spring force on slopes ConstraintActuator.fh_paralel_axis -> use_fh_paralel_axis: boolean Keep object axis parallel to normal @@ -182,7 +182,7 @@ Curve.use_path_follow -> use_path_follow: boolean Make curve path children Curve.use_radius -> use_radius: boolean Option for paths: apply the curve radius with path following it and deforming Curve.use_stretch -> use_stretch: boolean Option for curve-deform: makes deformed child to stretch along entire path Curve.use_time_offset -> use_time_offset: boolean Children will use TimeOffs value as path distance offset -CurveMapPoint.selected -> selected: boolean Selection state of the curve point +CurveMapPoint.selected -> select: boolean Selection state of the curve point CurveMapping.clip -> use_clip: boolean Force the curve view to fit a defined boundary DelaySensor.repeat -> use_repeat: boolean Toggle repeat option. If selected, the sensor restarts after Delay+Dur logic tics DomainFluidSettings.generate_speed_vectors -> use_speed_vectors: boolean Generate speed vectors for vector blur @@ -205,8 +205,8 @@ DopeSheet.display_texture -> show_texture: boolean Include visualization o DopeSheet.display_transforms -> show_transforms: boolean Include visualization of Object-level Animation data (mostly Transforms) DopeSheet.display_world -> show_world: boolean Include visualization of World related Animation data DopeSheet.include_missing_nla -> show_missing_nla: boolean Include Animation Data blocks with no NLA data. (NLA Editor only) -DopeSheet.only_group_objects -> showonly_group_objects: boolean Only include channels from Objects in the specified Group -DopeSheet.only_selected -> showonly_selected: boolean Only include channels relating to selected objects and data +DopeSheet.only_group_objects -> show_only_group_objects: boolean Only include channels from Objects in the specified Group +DopeSheet.only_selected -> show_only_selected: boolean Only include channels relating to selected objects and data Driver.invalid -> is_valid: boolean Driver could not be evaluated in past, so should be skipped Driver.show_debug_info -> show_debug_info: boolean Show intermediate values for the driver calculations to allow debugging of drivers DriverTarget.use_local_space_transforms -> use_local_space_transform: boolean Use transforms in Local Space (as opposed to the worldspace default) @@ -216,24 +216,24 @@ EditBone.connected -> is_connected: boolean When bone has a parent, bone's EditBone.cyclic_offset -> use_cyclic_offset: boolean When bone doesn't have a parent, it receives cyclic offset effects EditBone.deform -> use_deform: boolean Bone does not deform any geometry EditBone.draw_wire -> show_wire: boolean Bone is always drawn as Wireframe regardless of viewport draw mode. Useful for non-obstructive custom bone shapes -EditBone.hidden -> hidden: boolean Bone is not visible when in Edit Mode +EditBone.hidden -> hide: boolean Bone is not visible when in Edit Mode EditBone.hinge -> use_hinge: boolean Bone inherits rotation or scale from parent bone EditBone.inherit_scale -> use_inherit_scale: boolean Bone inherits scaling from parent bone EditBone.layer -> layer: boolean Layers bone exists in EditBone.local_location -> use_local_location: boolean Bone location is set in local space -EditBone.locked -> use_lock: boolean Bone is not able to be transformed when in Edit Mode +EditBone.locked -> lock: boolean Bone is not able to be transformed when in Edit Mode EditBone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean When deforming bone, multiply effects of Vertex Group weights with Envelope influence EditBone.restrict_select -> restrict_select: boolean Bone is able to be selected -EditBone.selected -> selected: boolean -EditBone.selected_head -> selected_head: boolean -EditBone.selected_tail -> selected_tail: boolean -EditObjectActuator.enable_3d_tracking -> use_tracking_3d: boolean Enable 3D tracking +EditBone.selected -> select: boolean +EditBone.selected_head -> select_head: boolean +EditBone.selected_tail -> select_tail: boolean +EditObjectActuator.enable_3d_tracking -> use_track_3d: boolean Enable 3D tracking EditObjectActuator.local_angular_velocity -> use_local_angular_velocity: boolean Apply the rotation locally EditObjectActuator.local_linear_velocity -> use_local_linear_velocity: boolean Apply the transformation locally EditObjectActuator.replace_display_mesh -> use_display_mesh: boolean Replace the display mesh EditObjectActuator.replace_physics_mesh -> use_physics_mesh: boolean Replace the physics mesh (triangle bounds only - compound shapes not supported) EffectSequence.convert_float -> use_float: boolean Convert input to float data -EffectSequence.de_interlace -> use_de_interlace: boolean For video movies to remove fields +EffectSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields EffectSequence.flip_x -> use_flip_x: boolean Flip on the X axis EffectSequence.flip_y -> use_flip_y: boolean Flip on the Y axis EffectSequence.premultiply -> use_premultiply: boolean Convert RGB from key alpha to premultiplied alpha @@ -246,7 +246,7 @@ EffectSequence.use_proxy -> use_proxy: boolean Use a preview proxy for thi EffectSequence.use_translation -> use_translation: boolean Translate image before processing EffectorWeights.do_growing_hair -> use_hair_grow: boolean Use force fields when growing hair EnvironmentMap.ignore_layers -> layer_ignore: boolean Hide objects on these layers when generating the Environment Map -EnvironmentMapTexture.use_filter_size_min -> filter_size_minimum: boolean Use Filter Size as a minimal filter value in pixels +EnvironmentMapTexture.use_filter_size_min -> filter_size_min: boolean Use Filter Size as a minimal filter value in pixels EnvironmentMapTexture.mipmap -> use_mipmap: boolean Uses auto-generated MIP maps for the image EnvironmentMapTexture.mipmap_gauss -> use_mipmap_gauss: boolean Uses Gauss filter to sample down MIP maps Event.alt -> alt: boolean, (read-only) True when the Alt/Option key is held @@ -260,11 +260,11 @@ ExplodeModifier.split_edges -> use_edge_split: boolean Split face edges fo ExplodeModifier.unborn -> show_unborn: boolean Show mesh when particles are unborn FCurve.auto_clamped_handles -> use_auto_handle_clamp: boolean All auto-handles for F-Curve are clamped NEGATE * FCurve.disabled -> enabled: boolean F-Curve could not be evaluated in past, so should be skipped when evaluating -FCurve.locked -> use_lock: boolean F-Curve's settings cannot be edited +FCurve.locked -> lock: boolean F-Curve's settings cannot be edited FCurve.muted -> use_mute: boolean F-Curve is not evaluated -FCurve.selected -> selected: boolean F-Curve is selected for editing -NEGATE * FCurve.visible -> hidden: boolean F-Curve and its keyframes are shown in the Graph Editor graphs -FCurveSample.selected -> selected: boolean Selection status +FCurve.selected -> select: boolean F-Curve is selected for editing +NEGATE * FCurve.visible -> hide: boolean F-Curve and its keyframes are shown in the Graph Editor graphs +FCurveSample.selected -> select: boolean Selection status FModifier.active -> active: boolean F-Curve Modifier is the one being edited NEGATE * FModifier.disabled -> enabled: boolean, (read-only) F-Curve Modifier has invalid settings and will not be evaluated FModifier.expanded -> show_expanded: boolean F-Curve Modifier's panel is expanded in UI @@ -312,16 +312,16 @@ FluidFluidSettings.active -> active: boolean Object contributes to the flu FluidFluidSettings.export_animated_mesh -> use_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it FollowPathConstraint.use_curve_follow -> use_curve_follow: boolean Object will follow the heading and banking of the curve FollowPathConstraint.use_curve_radius -> use_curve_radius: boolean Objects scale by the curve radius -FollowPathConstraint.use_fixed_position -> use_fixed_position: boolean Object will stay locked to a single point somewhere along the length of the curve regardless of time +FollowPathConstraint.use_fixed_position -> use_fixed_location: boolean Object will stay locked to a single point somewhere along the length of the curve regardless of time Function.registered -> registered: boolean, (read-only) Function is registered as callback as part of type registration Function.registered_optional -> registered_optional: boolean, (read-only) Function is optionally registered as callback part of type registration GPencilFrame.paint_lock -> lock_paint: boolean Frame is being edited (painted on) -GPencilFrame.selected -> selected: boolean Frame is selected for editing in the DopeSheet +GPencilFrame.selected -> select: boolean Frame is selected for editing in the DopeSheet GPencilLayer.active -> active: boolean Set active layer for editing GPencilLayer.frame_lock -> lock_frame: boolean Lock current frame displayed by layer -GPencilLayer.hide -> hidden: boolean Set layer Visibility -GPencilLayer.locked -> use_lock: boolean Protect layer from further editing and/or frame changes -GPencilLayer.selected -> selected: boolean Layer is selected for editing in the DopeSheet +GPencilLayer.hide -> hide: boolean Set layer Visibility +GPencilLayer.locked -> lock: boolean Protect layer from further editing and/or frame changes +GPencilLayer.selected -> select: boolean Layer is selected for editing in the DopeSheet GPencilLayer.show_points -> show_points: boolean Draw the points which make up the strokes (for debugging purposes) GPencilLayer.use_onion_skinning -> use_onion_skin: boolean Ghost frames on either side of frame GameBooleanProperty.value -> value: boolean Property value @@ -354,7 +354,7 @@ GameSoftBodySettings.bending_const -> use_bending_constraint: boolean Enab GameSoftBodySettings.cluster_rigid_to_softbody -> use_cluster_rigid_to_softbody: boolean Enable cluster collision between soft and rigid body GameSoftBodySettings.cluster_soft_to_softbody -> use_cluster_soft_to_softbody: boolean Enable cluster collision between soft and soft body GameSoftBodySettings.shape_match -> use_shape_match: boolean Enable soft body shape matching goal -GlowSequence.only_boost -> useonly_boost: boolean Show the glow buffer only +GlowSequence.only_boost -> use_only_boost: boolean Show the glow buffer only GreasePencil.use_stroke_endpoints -> use_stroke_endpoints: boolean Only use the first and last parts of the stroke for snapping Group.layer -> layer: boolean Layers visible when this groups is instanced as a dupli ID.fake_user -> use_fake_user: boolean Saves this datablock even if it has no users @@ -377,7 +377,7 @@ ImagePaint.use_occlude -> use_occlude: boolean Only paint onto the faces d ImagePaint.use_projection -> use_projection: boolean Use projection painting for improved consistency in the brush strokes ImagePaint.use_stencil_layer -> use_stencil_layer: boolean Set the mask layer from the UV layer buttons ImageSequence.convert_float -> use_float: boolean Convert input to float data -ImageSequence.de_interlace -> use_de_interlace: boolean For video movies to remove fields +ImageSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields ImageSequence.flip_x -> use_flip_x: boolean Flip on the X axis ImageSequence.flip_y -> use_flip_y: boolean Flip on the Y axis ImageSequence.premultiply -> use_premultiply: boolean Convert RGB from key alpha to premultiplied alpha @@ -414,7 +414,7 @@ KeyMap.children_expanded -> show_expanded_children: boolean Children expan KeyMap.items_expanded -> show_expanded_items: boolean Expanded in the user interface TODO would use is_ * KeyMap.modal -> modal: boolean, (read-only) Indicates that a keymap is used for translate modal events for an operator KeyMap.user_defined -> use_user_defined: boolean Keymap is defined by the user -KeyMapItem.active -> use_active: boolean Activate or deactivate item +KeyMapItem.active -> active: boolean Activate or deactivate item TODO would use is_pressed * KeyMapItem.alt -> alt: boolean Alt key pressed TODO would use is_pressed * KeyMapItem.any -> any: boolean Any modifier keys pressed TODO would use is_pressed * KeyMapItem.ctrl -> ctrl: boolean Control key pressed @@ -422,9 +422,9 @@ KeyMapItem.expanded -> show_expanded: boolean Show key map event and prope TODO would use is_pressed * KeyMapItem.oskey -> oskey: boolean Operating system key pressed TODO would use is_pressed * KeyMapItem.shift -> shift: boolean Shift key pressed TODO * KeyboardSensor.all_keys -> all_keys: boolean Trigger this sensor on any keystroke -TODO would use is_ * Keyframe.selected -> selected: boolean Control point selection status -TODO would use is_ * Keyframe.selected_handle1 -> selected_handle1: boolean Handle 1 selection status -TODO would use is_ * Keyframe.selected_handle2 -> selected_handle2: boolean Handle 2 selection status +TODO would use is_ * Keyframe.selected -> select: boolean Control point selection status +TODO would use is_ * Keyframe.selected_handle1 -> select_left_handle: boolean Handle 1 selection status +TODO would use is_ * Keyframe.selected_handle2 -> select_right_handle: boolean Handle 2 selection status KeyingSet.absolute -> use_absolute: boolean Keying Set defines specific paths/settings to be keyframed (i.e. is not reliant on context info) KeyingSet.insertkey_needed -> use_insertkey_needed: boolean Only insert keyframes where they're needed in the relevant F-Curves KeyingSet.insertkey_visual -> use_insertkey_visual: boolean Insert keyframes based on 'visual transforms' @@ -436,13 +436,13 @@ KeyingSetPath.entire_array -> use_entire_array: boolean When an 'array/vec KeyingSetPath.insertkey_needed -> use_insertkey_needed: boolean Only insert keyframes where they're needed in the relevant F-Curves KeyingSetPath.insertkey_visual -> use_insertkey_visual: boolean Insert keyframes based on 'visual transforms' KeyingSetPath.insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb: boolean Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis -KinematicConstraint.pos_lock_x -> use_lock_pos_x: boolean Constraint position along X axis -KinematicConstraint.pos_lock_y -> use_lock_pos_y: boolean Constraint position along Y axis -KinematicConstraint.pos_lock_z -> use_lock_pos_z: boolean Constraint position along Z axis -KinematicConstraint.rot_lock_x -> use_lock_rot_x: boolean Constraint rotation along X axis -KinematicConstraint.rot_lock_y -> use_lock_rot_y: boolean Constraint rotation along Y axis -KinematicConstraint.rot_lock_z -> use_lock_rot_z: boolean Constraint rotation along Z axis -KinematicConstraint.use_position -> use_position: boolean Chain follows position of target +KinematicConstraint.pos_lock_x -> lock_location_x: boolean Constraint position along X axis +KinematicConstraint.pos_lock_y -> lock_location_y: boolean Constraint position along Y axis +KinematicConstraint.pos_lock_z -> lock_location_z: boolean Constraint position along Z axis +KinematicConstraint.rot_lock_x -> lock_rotation_x: boolean Constraint rotation along X axis +KinematicConstraint.rot_lock_y -> lock_rotation_y: boolean Constraint rotation along Y axis +KinematicConstraint.rot_lock_z -> lock_rotation_z: boolean Constraint rotation along Z axis +KinematicConstraint.use_position -> use_location: boolean Chain follows position of target KinematicConstraint.use_rotation -> use_rotation: boolean Chain follows rotation of target KinematicConstraint.use_stretch -> use_stretch: boolean Enable IK Stretching KinematicConstraint.use_tail -> use_tail: boolean Include bone's tail as last element in chain @@ -457,23 +457,23 @@ LampTextureSlot.map_color -> use_map_color: boolean Lets the texture affec LampTextureSlot.map_shadow -> use_map_shadow: boolean Lets the texture affect the shadow color of the lamp Lattice.outside -> use_outside: boolean Only draw, and take into account, the outer vertices LimitLocationConstraint.limit_transform -> limit_transform: boolean Transforms are affected by this constraint as well -LimitLocationConstraint.use_maximum_x -> use_maximum_x: boolean Use the maximum X value -LimitLocationConstraint.use_maximum_y -> use_maximum_y: boolean Use the maximum Y value -LimitLocationConstraint.use_maximum_z -> use_maximum_z: boolean Use the maximum Z value -LimitLocationConstraint.use_minimum_x -> use_minimum_x: boolean Use the minimum X value -LimitLocationConstraint.use_minimum_y -> use_minimum_y: boolean Use the minimum Y value -LimitLocationConstraint.use_minimum_z -> use_minimum_z: boolean Use the minimum Z value +LimitLocationConstraint.use_maximum_x -> use_x_max: boolean Use the maximum X value +LimitLocationConstraint.use_maximum_y -> use_y_max: boolean Use the maximum Y value +LimitLocationConstraint.use_maximum_z -> use_z_max: boolean Use the maximum Z value +LimitLocationConstraint.use_minimum_x -> use_x_min: boolean Use the minimum X value +LimitLocationConstraint.use_minimum_y -> use_y_min: boolean Use the minimum Y value +LimitLocationConstraint.use_minimum_z -> use_z_min: boolean Use the minimum Z value LimitRotationConstraint.limit_transform -> limit_transform: boolean Transforms are affected by this constraint as well -LimitRotationConstraint.use_limit_x -> use_limit_x: boolean Use the minimum X value -LimitRotationConstraint.use_limit_y -> use_limit_y: boolean Use the minimum Y value -LimitRotationConstraint.use_limit_z -> use_limit_z: boolean Use the minimum Z value +LimitRotationConstraint.use_limit_x -> use_x_limit: boolean Use the minimum X value +LimitRotationConstraint.use_limit_y -> use_y_limit: boolean Use the minimum Y value +LimitRotationConstraint.use_limit_z -> use_z_limit: boolean Use the minimum Z value LimitScaleConstraint.limit_transform -> limit_transform: boolean Transforms are affected by this constraint as well -LimitScaleConstraint.use_maximum_x -> use_maximum_x: boolean Use the maximum X value -LimitScaleConstraint.use_maximum_y -> use_maximum_y: boolean Use the maximum Y value -LimitScaleConstraint.use_maximum_z -> use_maximum_z: boolean Use the maximum Z value -LimitScaleConstraint.use_minimum_x -> use_minimum_x: boolean Use the minimum X value -LimitScaleConstraint.use_minimum_y -> use_minimum_y: boolean Use the minimum Y value -LimitScaleConstraint.use_minimum_z -> use_minimum_z: boolean Use the minimum Z value +LimitScaleConstraint.use_maximum_x -> use_x_max: boolean Use the maximum X value +LimitScaleConstraint.use_maximum_y -> use_y_max: boolean Use the maximum Y value +LimitScaleConstraint.use_maximum_z -> use_z_max: boolean Use the maximum Z value +LimitScaleConstraint.use_minimum_x -> use_x_min: boolean Use the minimum X value +LimitScaleConstraint.use_minimum_y -> use_y_min: boolean Use the minimum Y value +LimitScaleConstraint.use_minimum_z -> use_z_min: boolean Use the minimum Z value Main.debug -> show_debug: boolean Print debugging information in console Main.file_is_saved -> is_saved: boolean, (read-only) Has the current session been saved to disk as a .blend file TODO * MaskModifier.invert -> invert: boolean Use vertices that are not part of region defined @@ -537,8 +537,8 @@ MaterialTextureSlot.map_hardness -> use_map_hardness: boolean Causes the t MaterialTextureSlot.map_mirror -> use_map_mirror: boolean Causes the texture to affect the mirror color MaterialTextureSlot.map_normal -> use_map_normal: boolean Causes the texture to affect the rendered normal MaterialTextureSlot.map_raymir -> use_map_raymir: boolean Causes the texture to affect the ray-mirror value -MaterialTextureSlot.map_reflection -> use_map_reflection: boolean Causes the texture to affect the reflected light's brightness -MaterialTextureSlot.map_scattering -> use_map_scattering: boolean Causes the texture to affect the volume's scattering +MaterialTextureSlot.map_reflection -> use_map_reflect: boolean Causes the texture to affect the reflected light's brightness +MaterialTextureSlot.map_scattering -> use_map_scatter: boolean Causes the texture to affect the volume's scattering MaterialTextureSlot.map_specular -> use_map_specular: boolean Causes the texture to affect the value of specular reflectivity MaterialTextureSlot.map_translucency -> use_map_translucency: boolean Causes the texture to affect the translucency value MaterialTextureSlot.map_warp -> use_map_warp: boolean Let the texture warp texture coordinates of next channels @@ -564,20 +564,20 @@ Mesh.use_mirror_topology -> use_mirror_topology: boolean Use topology base Mesh.use_mirror_x -> use_mirror_x: boolean X Axis mirror editing Mesh.use_paint_mask -> use_paint_mask: boolean Face selection masking for painting Mesh.vertex_normal_flip -> use_vertex_normal_flip: boolean Flip vertex normals towards the camera during render -MeshColorLayer.active -> use_active: boolean Sets the layer as active for display and editing -MeshColorLayer.active_render -> use_active_render: boolean Sets the layer as active for rendering +MeshColorLayer.active -> active: boolean Sets the layer as active for display and editing +MeshColorLayer.active_render -> active_render: boolean Sets the layer as active for rendering MeshDeformModifier.dynamic -> dynamic: boolean Recompute binding dynamically on top of other deformers (slower and more memory consuming.) MeshDeformModifier.invert -> invert: boolean Invert vertex group influence MeshDeformModifier.is_bound -> is_bound: boolean, (read-only) Whether geometry has been bound to control cage MeshEdge.fgon -> is_fgon: boolean, (read-only) Fgon edge -TODO * MeshEdge.hidden -> hidden: boolean +TODO * MeshEdge.hidden -> hide: boolean MeshEdge.loose -> use_loose: boolean, (read-only) Loose edge MeshEdge.seam -> use_seam: boolean Seam edge for UV unwrapping -TODO * MeshEdge.selected -> selected: boolean +TODO * MeshEdge.selected -> select: boolean MeshEdge.sharp -> use_sharp: boolean Sharp edge for the EdgeSplit modifier -TODO would use is_ * MeshFace.hidden -> hidden: boolean -TODO would use is_ * MeshFace.selected -> selected: boolean -TODO would use is_ * MeshFace.smooth -> smooth: boolean +TODO would use is_ * MeshFace.hidden -> hide: boolean +TODO would use is_ * MeshFace.selected -> select: boolean +TODO would use is_ * MeshFace.smooth -> use_smooth: boolean MeshTextureFace.alpha_sort -> use_alpha_sort: boolean Enable sorting of faces for correct alpha drawing (slow, use Clip Alpha instead when possible) MeshTextureFace.billboard -> use_billboard: boolean Billboard with Z-axis constraint MeshTextureFace.collision -> use_collision: boolean Use face for collision and ray-sensor detection @@ -590,16 +590,16 @@ MeshTextureFace.shared -> use_blend_shared: boolean Blend vertex colors ac MeshTextureFace.tex -> use_render_texture: boolean Render face with texture MeshTextureFace.text -> use_bitmap_text: boolean Enable bitmap text on face MeshTextureFace.twoside -> use_twoside: boolean Render face two-sided -MeshTextureFace.uv_pinned -> use_uv_pinned: boolean -MeshTextureFace.uv_selected -> use_uv_selected: boolean +MeshTextureFace.uv_pinned -> uv_pin: boolean +MeshTextureFace.uv_selected -> uv_select: boolean TODO * MeshTextureFaceLayer.active -> active: boolean Sets the layer as active for display and editing TODO * MeshTextureFaceLayer.active_clone -> active_clone: boolean Sets the layer as active for cloning TODO * MeshTextureFaceLayer.active_render -> active_render: boolean Sets the layer as active for rendering -TODO * MeshVertex.hidden -> hidden: boolean -TODO would use is_ * MeshVertex.selected -> selected: boolean +TODO * MeshVertex.hidden -> hide: boolean +TODO would use is_ * MeshVertex.selected -> select: boolean MetaBall.auto_texspace -> use_auto_texspace: boolean Adjusts active object's texture space automatically when transforming object TODO * MetaElement.hide -> hide: boolean Hide element -TODO would use is_ * MetaElement.negative -> negative: boolean Set metaball as negative one +TODO would use is_ * MetaElement.negative -> use_negative: boolean Set metaball as negative one MetaSequence.convert_float -> use_convert_float: boolean Convert input to float data MetaSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields MetaSequence.flip_x -> use_flip_x: boolean Flip on the X axis @@ -626,7 +626,7 @@ Modifier.realtime -> show_realtime: boolean Realtime display of a modifier Modifier.render -> use_render: boolean Use modifier during rendering TODO * MotionPath.editing -> editing: boolean Path is being edited TODO * MotionPath.use_bone_head -> use_bone_head: boolean, (read-only) For PoseBone paths, use the bone head location when calculating this path -TODO would use is_ * MotionPathVert.selected -> selected: boolean Path point is selected for editing +TODO would use is_ * MotionPathVert.selected -> select: boolean Path point is selected for editing MovieSequence.convert_float -> use_convert_float: boolean Convert input to float data MovieSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields MovieSequence.flip_x -> use_flip_x: boolean Flip on the X axis @@ -662,14 +662,14 @@ TODO I'd use is_ * NlaStrip.active -> active: boolean, (read-only) NLA Str NlaStrip.animated_influence -> use_animated_influence: boolean Influence setting is controlled by an F-Curve rather than automatically determined NlaStrip.animated_time -> use_animated_time: boolean Strip time is controlled by an F-Curve rather than automatically determined NlaStrip.animated_time_cyclic -> use_animated_time_cyclic: boolean Cycle the animated time within the action start & end -NlaStrip.auto_blending -> use_auto_blending: boolean Number of frames for Blending In/Out is automatically determined from overlapping strips +NlaStrip.auto_blending -> use_auto_blend: boolean Number of frames for Blending In/Out is automatically determined from overlapping strips TODO I'd use is_ * NlaStrip.muted -> muted: boolean NLA Strip is not evaluated TODO I'd use is_ * NlaStrip.reversed -> reversed: boolean NLA Strip is played back in reverse order (only when timing is automatically determined) -TODO I'd use is_ * NlaStrip.selected -> selected: boolean NLA Strip is selected +TODO I'd use is_ * NlaStrip.selected -> select: boolean NLA Strip is selected TODO I'd use is_ * NlaTrack.active -> active: boolean, (read-only) NLA Track is active -TODO I'd use is_ * NlaTrack.locked -> locked: boolean NLA Track is locked +TODO I'd use is_ * NlaTrack.locked -> lock: boolean NLA Track is locked TODO I'd use is_ * NlaTrack.muted -> muted: boolean NLA Track is not evaluated -TODO I'd use is_ * NlaTrack.selected -> selected: boolean NLA Track is selected +TODO I'd use is_ * NlaTrack.selected -> select: boolean NLA Track is selected NlaTrack.solo -> is_solo: boolean, (read-only) NLA Track is evaluated itself (i.e. active Action and all other NLA Tracks in the same AnimData block are disabled) Object.draw_axis -> show_axis: boolean Displays the object's origin and axis Object.draw_bounds -> show_bounds: boolean Displays the object's bounds @@ -677,7 +677,7 @@ Object.draw_name -> show_name: boolean Displays the object's name Object.draw_texture_space -> show_texture_space: boolean Displays the object's texture space Object.draw_transparent -> show_transparent: boolean Enables transparent materials for the object (Mesh only) Object.draw_wire -> show_wire: boolean Adds the object's wireframe over solid drawing -TODO * Object.duplis_used -> is_duplis_used: boolean, (read-only) +TODO * Object.duplis_used -> is_duplis_used: boolean, (read-only) TODO * Object.layers -> layers: boolean Layers the object is on Object.lock_location -> lock_location: boolean Lock editing of location in the interface Object.lock_rotation -> lock_rotation: boolean Lock editing of rotation in the interface @@ -687,7 +687,7 @@ Object.lock_scale -> lock_scale: boolean Lock editing of scale in the inte TODO * Object.restrict_render -> use_limit_render: boolean Restrict renderability TODO * Object.restrict_select -> use_limit_select: boolean Restrict selection in the viewport TODO * Object.restrict_view -> use_limit_view: boolean Restrict visibility in the viewport -TODO * Object.selected -> selected: boolean Object selection state +TODO * Object.selected -> select: boolean Object selection state Object.shape_key_edit_mode -> use_shape_key_edit_mode: boolean Apply shape keys in edit mode (for Meshes only) Object.shape_key_lock -> show_shape_key: boolean Always show the current Shape for this Object Object.slow_parent -> use_slow_parent: boolean Create a delay in the parent relationship @@ -710,23 +710,23 @@ TODO * ObjectActuator.servo_limit_x -> use_limit_servo_x: boolean Set lim TODO * ObjectActuator.servo_limit_y -> use_limit_servo_y: boolean Set limit to force along the Y axis TODO * ObjectActuator.servo_limit_z -> use_limit_servo_z: boolean Set limit to force along the Z axis TODO * ObjectBase.layers -> layers: boolean Layers the object base is on -TODO * ObjectBase.selected -> selected: boolean Object base selection state -TODO * ObjectBase.selected_user -> is_selected_user: boolean, (read-only) Object base user selection state, used to restore user selection after transformations -TODO could be is_ * ObstacleFluidSettings.active -> use_active: boolean Object contributes to the fluid simulation +TODO * ObjectBase.selected -> select: boolean Object base selection state +TODO * ObjectBase.selected_user -> is_select_user: boolean, (read-only) Object base user selection state, used to restore user selection after transformations +TODO could be is_ * ObstacleFluidSettings.active -> active: boolean Object contributes to the fluid simulation ObstacleFluidSettings.export_animated_mesh -> use_export_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it TODO * Operator.has_reports -> has_reports: boolean, (read-only) Operator has a set of reports (warnings and errors) from last execution -OperatorStrokeElement.flip -> use_flip: boolean -OutflowFluidSettings.active -> use_active: boolean Object contributes to the fluid simulation +OperatorStrokeElement.flip -> use_flip: boolean +OutflowFluidSettings.active -> active: boolean Object contributes to the fluid simulation OutflowFluidSettings.export_animated_mesh -> use_export_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it Paint.fast_navigate -> show_low_resolution: boolean For multires, show low resolution while navigating the view -Paint.show_brush -> show_brush: boolean -TODO * Panel.bl_default_closed -> bl_default_closed: boolean -TODO * Panel.bl_show_header -> bl_show_header: boolean +Paint.show_brush -> show_brush: boolean +TODO * Panel.bl_default_closed -> bl_default_closed: boolean +TODO * Panel.bl_show_header -> bl_show_header: boolean ParentActuator.compound -> use_compound: boolean Add this object shape to the parent shape (only if the parent shape is already compound) ParentActuator.ghost -> use_ghost: boolean Make this object ghost while parented (only if not compound) -TODO * Particle.no_disp -> no_disp: boolean -TODO * Particle.rekey -> rekey: boolean -TODO * Particle.unexist -> unexist: boolean +TODO * Particle.no_disp -> no_disp: boolean +TODO * Particle.rekey -> rekey: boolean +TODO * Particle.unexist -> unexist: boolean ParticleBrush.use_puff_volume -> use_puff_volume: boolean Apply puff to unselected end-points, (helps maintain hair volume when puffing root) ParticleEdit.add_interpolate -> use_add_interpolate: boolean Interpolate new particles from the existing ones ParticleEdit.auto_velocity -> use_auto_velocity: boolean Calculate point velocities automatically @@ -754,8 +754,8 @@ ParticleSettings.billboard_lock -> lock_billboard: boolean Lock the billbo ParticleSettings.boids_2d -> lock_boids_to_surface: boolean Constrain boids to a surface ParticleSettings.branching -> use_branching: boolean Branch child paths from each other ParticleSettings.child_effector -> use_child_effector: boolean Apply effectors to children -ParticleSettings.child_guide -> use_child_guide: boolean -ParticleSettings.child_render -> use_child_render: boolean +ParticleSettings.child_guide -> use_child_guide: boolean +ParticleSettings.child_render -> use_child_render: boolean ParticleSettings.die_on_collision -> use_die_on_collision: boolean Particles die when they collide with a deflector object ParticleSettings.died -> show_died: boolean Show particles after they have died ParticleSettings.draw_health -> show_health: boolean Draw boid health @@ -764,7 +764,7 @@ ParticleSettings.enable_simplify -> use_simplify: boolean Remove child str ParticleSettings.even_distribution -> use_even_distribution: boolean Use even distribution from faces based on face areas or edge lengths ParticleSettings.grid_invert -> invert_grid: boolean Invert what is considered object and what is not ParticleSettings.hair_bspline -> use_hair_bspline: boolean Interpolate hair using B-Splines -TODO * ParticleSettings.hair_geometry -> hair_geometry: boolean +TODO * ParticleSettings.hair_geometry -> hair_geometry: boolean ParticleSettings.material_color -> show_material_color: boolean Draw particles using material's diffuse color ParticleSettings.num -> use_number: boolean Show particle number ParticleSettings.parent -> use_parent: boolean Render parent particles @@ -785,7 +785,7 @@ ParticleSettings.use_global_dupli -> use_global_dupli: boolean Use object' ParticleSettings.use_group_count -> use_group_count: boolean Use object multiple times in the same group ParticleSettings.velocity -> show_velocity: boolean Show particle velocity ParticleSettings.velocity_length -> use_velocity_length: boolean Multiply line length by particle speed -TODO * ParticleSettings.viewport -> viewport: boolean +TODO * ParticleSettings.viewport -> viewport: boolean ParticleSettings.whole_group -> use_whole_group: boolean Use whole group at once ParticleSystem.editable -> is_editable: boolean, (read-only) Particle system can be edited in particle mode ParticleSystem.edited -> is_edited: boolean, (read-only) Particle system has been edited in particle mode @@ -805,14 +805,14 @@ ParticleSystem.vertex_group_roughness_end_negate -> invert_vertex_group_roughnes ParticleSystem.vertex_group_size_negate -> invert_vertex_group_size: boolean Negate the effect of the size vertex group ParticleSystem.vertex_group_tangent_negate -> invert_vertex_group_tangent: boolean Negate the effect of the tangent vertex group ParticleSystem.vertex_group_velocity_negate -> invert_vertex_group_velocity: boolean Negate the effect of the velocity vertex group -TODO * ParticleTarget.valid -> valid: boolean Keyed particles target is valid -PivotConstraint.use_relative_position -> use_relative_position: boolean Offset will be an absolute point in space instead of relative to the target -PointCache.baked -> is_baked: boolean, (read-only) -TODO * PointCache.baking -> baking: boolean, (read-only) +TODO * ParticleTarget.valid -> is_valid: boolean Keyed particles target is valid +PivotConstraint.use_relative_position -> use_relative_location: boolean Offset will be an absolute point in space instead of relative to the target +PointCache.baked -> is_baked: boolean, (read-only) +TODO * PointCache.baking -> baking: boolean, (read-only) PointCache.disk_cache -> use_disk_cache: boolean Save cache files to disk (.blend file must be saved first) PointCache.external -> use_external: boolean Read cache from an external location -TODO * PointCache.frames_skipped -> frames_skipped: boolean, (read-only) -PointCache.outdated -> is_outdated: boolean, (read-only) +TODO * PointCache.frames_skipped -> frames_skipped: boolean, (read-only) +PointCache.outdated -> is_outdated: boolean, (read-only) PointCache.quick_cache -> use_quick_cache: boolean Update simulation with cache steps PointCache.use_library_path -> use_library_path: boolean Use this files path when library linked into another file. PointDensity.turbulence -> use_turbulence: boolean Add directed noise to the density at render-time @@ -833,7 +833,7 @@ PoseBone.lock_rotation -> lock_rotation: boolean Lock editing of rotation PoseBone.lock_rotation_w -> lock_rotation_w: boolean Lock editing of 'angle' component of four-component rotations in the interface PoseBone.lock_rotations_4d -> lock_rotations_4d: boolean Lock editing of four component rotations by components (instead of as Eulers) PoseBone.lock_scale -> lock_scale: boolean Lock editing of scale in the interface -TODO * PoseBone.selected -> selected: boolean +TODO * PoseBone.selected -> select: boolean PoseTemplateSettings.generate_def_rig -> use_generate_def_rig: boolean Create a copy of the metarig, constrainted by the generated rig Property.is_never_none -> is_never_none: boolean, (read-only) True when this value can't be set to None Property.is_readonly -> is_readonly: boolean, (read-only) Property is editable through RNA @@ -849,8 +849,8 @@ RaySensor.x_ray_mode -> use_x_ray_mode: boolean Toggle X-Ray option (see t RegionView3D.box_clip -> use_box_clip: boolean Clip objects based on what's visible in other side views RegionView3D.box_preview -> show_synced_view: boolean Sync view position between side views RegionView3D.lock_rotation -> lock_rotation: boolean Lock view rotation in side views -TODO * RenderEngine.bl_postprocess -> use_bl_postprocess: boolean -TODO * RenderEngine.bl_preview -> use_bl_preview: boolean +TODO * RenderEngine.bl_postprocess -> use_bl_postprocess: boolean +TODO * RenderEngine.bl_preview -> use_bl_preview: boolean TODO * RenderLayer.all_z -> all_z: boolean, (read-only) Fill in Z values for solid faces in invisible layers, for masking TODO * RenderLayer.edge -> edge: boolean, (read-only) Render Edge-enhance in this Layer (only works for Solid faces) TODO * RenderLayer.enabled -> enabled: boolean, (read-only) Disable or enable the render layer @@ -936,10 +936,10 @@ RenderSettings.use_local_coords -> use_local_coords: boolean Vertex coordi RenderSettings.use_overwrite -> use_overwrite: boolean Overwrite existing files while rendering RenderSettings.use_placeholder -> use_placeholder: boolean Create empty placeholder files while rendering frames (similar to Unix 'touch') RenderSettings.use_radiosity -> use_radiosity: boolean Calculate radiosity in a pre-process before rendering -RenderSettings.use_raytracing -> use_raytracing: boolean Pre-calculate the raytrace accelerator and render raytracing effects +RenderSettings.use_raytracing -> use_raytrace: boolean Pre-calculate the raytrace accelerator and render raytracing effects RenderSettings.use_sequencer -> use_sequencer: boolean Process the render (and composited) result through the video sequence editor pipeline, if sequencer strips exist -RenderSettings.use_sequencer_gl_preview -> use_sequencer_gl_preview: boolean -RenderSettings.use_sequencer_gl_render -> use_sequencer_gl_render: boolean +RenderSettings.use_sequencer_gl_preview -> use_sequencer_gl_preview: boolean +RenderSettings.use_sequencer_gl_render -> use_sequencer_gl_render: boolean RenderSettings.use_shadows -> use_shadows: boolean Calculate shadows while rendering RenderSettings.use_simplify -> use_simplify: boolean Enable simplification of scene for quicker preview renders RenderSettings.use_sss -> use_sss: boolean Calculate sub-surface scattering in materials rendering @@ -1045,20 +1045,20 @@ Sensor.pulse_false_level -> use_pulse_false_level: boolean Activate FALSE Sensor.pulse_true_level -> use_pulse_true_level: boolean Activate TRUE level triggering (pulse mode) Sensor.tap -> use_tap: boolean Trigger controllers only for an instant, even while the sensor remains true TODO * Sequence.frame_locked -> frame_locked: boolean Lock the animation curve to the global frame counter -TODO * Sequence.left_handle_selected -> left_handle_selected: boolean +TODO * Sequence.left_handle_selected -> select_left_handle: boolean TODO * Sequence.lock -> lock: boolean Lock strip so that it can't be transformed -TODO * Sequence.mute -> mute: boolean -TODO * Sequence.right_handle_selected -> right_handle_selected: boolean -TODO * Sequence.selected -> selected: boolean +TODO * Sequence.mute -> mute: boolean +TODO * Sequence.right_handle_selected -> select_right_handle: boolean +TODO * Sequence.selected -> select: boolean TODO * Sequence.use_effect_default_fade -> use_effect_default_fade: boolean Fade effect using the built-in default (usually make transition as long as effect strip) -SequenceColorBalance.inverse_gain -> invert_gain: boolean -SequenceColorBalance.inverse_gamma -> invert_gamma: boolean -SequenceColorBalance.inverse_lift -> invert_lift: boolean +SequenceColorBalance.inverse_gain -> invert_gain: boolean +SequenceColorBalance.inverse_gamma -> invert_gamma: boolean +SequenceColorBalance.inverse_lift -> invert_lift: boolean ShaderNodeExtendedMaterial.diffuse -> use_diffuse: boolean Material Node outputs Diffuse ShaderNodeExtendedMaterial.invert_normal -> invert_normal: boolean Material Node uses inverted normal ShaderNodeExtendedMaterial.specular -> use_specular: boolean Material Node outputs Specular -ShaderNodeMapping.clamp_maximum -> use_clamp_to_maximum: boolean Clamp the output coordinate to a maximum value -ShaderNodeMapping.clamp_minimum -> use_clamp_to_minimum: boolean Clamp the output coordinate to a minimum value +ShaderNodeMapping.clamp_maximum -> use_clamp_to_max: boolean Clamp the output coordinate to a maximum value +ShaderNodeMapping.clamp_minimum -> use_clamp_to_min: boolean Clamp the output coordinate to a minimum value ShaderNodeMaterial.diffuse -> use_diffuse: boolean Material Node outputs Diffuse ShaderNodeMaterial.invert_normal -> invert_normal: boolean Material Node uses inverted normal ShaderNodeMaterial.specular -> use_specular: boolean Material Node outputs Specular @@ -1070,14 +1070,14 @@ TODO see below* ShrinkwrapConstraint.use_y -> use_y: boolean Projection ov TODO see below* ShrinkwrapConstraint.use_z -> use_z: boolean Projection over Z Axis ShrinkwrapModifier.cull_back_faces -> use_cull_back_faces: boolean Stop vertices from projecting to a back face on the target ShrinkwrapModifier.cull_front_faces -> use_cull_front_faces: boolean Stop vertices from projecting to a front face on the target -ShrinkwrapModifier.keep_above_surface -> use_keep_above_surface: boolean +ShrinkwrapModifier.keep_above_surface -> use_keep_above_surface: boolean TODO * ShrinkwrapModifier.negative -> negative: boolean Allow vertices to move in the negative direction of axis TODO * ShrinkwrapModifier.positive -> positive: boolean Allow vertices to move in the positive direction of axis -ShrinkwrapModifier.x -> use_x: boolean -ShrinkwrapModifier.y -> use_y: boolean -ShrinkwrapModifier.z -> use_z: boolean -SimpleDeformModifier.lock_x_axis -> lock_axis_x: boolean -SimpleDeformModifier.lock_y_axis -> lock_axis_y: boolean +ShrinkwrapModifier.x -> use_x: boolean +ShrinkwrapModifier.y -> use_y: boolean +ShrinkwrapModifier.z -> use_z: boolean +SimpleDeformModifier.lock_x_axis -> lock_axis_x: boolean +SimpleDeformModifier.lock_y_axis -> lock_axis_y: boolean SimpleDeformModifier.relative -> use_relative: boolean Sets the origin of deform space to be relative to the object SmokeDomainSettings.dissolve_smoke -> use_dissolve_smoke: boolean Enable smoke to disappear over time SmokeDomainSettings.dissolve_smoke_log -> use_dissolve_smoke_log: boolean Using 1/x @@ -1085,9 +1085,9 @@ SmokeDomainSettings.highres -> use_highres: boolean Enable high resolution SmokeDomainSettings.initial_velocity -> use_initial_velocity: boolean Smoke inherits it's velocity from the emitter particle SmokeDomainSettings.viewhighres -> show_highres: boolean Show high resolution (using amplification) NEGATE * SmokeFlowSettings.outflow -> use_outflow: boolean Deletes smoke from simulation -SmoothModifier.x -> use_x: boolean -SmoothModifier.y -> use_y: boolean -SmoothModifier.z -> use_z: boolean +SmoothModifier.x -> use_x: boolean +SmoothModifier.y -> use_y: boolean +SmoothModifier.z -> use_z: boolean SoftBodySettings.auto_step -> use_auto_step: boolean Use velocities for automagic step sizes SoftBodySettings.diagnose -> use_diagnose: boolean Turn on SB diagnose console prints SoftBodySettings.edge_collision -> use_edge_collision: boolean Edges collide too @@ -1103,7 +1103,7 @@ SolidifyModifier.use_even_offset -> use_even_offset: boolean Maintain thic SolidifyModifier.use_quality_normals -> use_quality_normals: boolean Calculate normals which result in more even thickness (slow, disable when not needed) SolidifyModifier.use_rim -> use_rim: boolean Create edge loops between the inner and outer surfaces on face edges (slow, disable when not needed) SolidifyModifier.use_rim_material -> use_rim_material: boolean Use in the next material for rim faces -Sound.caching -> use_ram_caching: boolean The sound file is decoded and loaded into RAM +Sound.caching -> use_ram_cache: boolean The sound file is decoded and loaded into RAM SoundActuator.enable_sound_3d -> use_sound_3d: boolean Enable/Disable 3D Sound SpaceConsole.show_report_debug -> show_report_debug: boolean Display debug reporting info SpaceConsole.show_report_error -> show_report_error: boolean Display error text @@ -1127,7 +1127,7 @@ SpaceGraphEditor.show_handles -> show_handles: boolean Show handles of Bez SpaceGraphEditor.show_seconds -> show_seconds: boolean, (read-only) Show timing in seconds not frames SpaceGraphEditor.show_sliders -> show_sliders: boolean Show sliders beside F-Curve channels SpaceImageEditor.draw_repeated -> show_repeated: boolean Draw the image repeated outside of the main view -SpaceImageEditor.image_painting -> use_image_painting: boolean Enable image painting mode +SpaceImageEditor.image_painting -> use_image_paint: boolean Enable image painting mode SpaceImageEditor.image_pin -> show_image_pin: boolean Display current image regardless of object selection SpaceImageEditor.show_paint -> show_paint: boolean, (read-only) Show paint related properties SpaceImageEditor.show_render -> show_render: boolean, (read-only) Show render related properties @@ -1169,13 +1169,13 @@ SpaceTextEditor.overwrite -> use_overwrite: boolean Overwrite characters w SpaceTextEditor.syntax_highlight -> use_syntax_highlight: boolean Syntax highlight for scripting SpaceTextEditor.word_wrap -> use_word_wrap: boolean Wrap words if there is not enough horizontal space SpaceTimeline.only_selected -> use_only_selected: boolean Show keyframes for active Object and/or its selected channels only -SpaceTimeline.play_all_3d -> use_play_all_3d: boolean -SpaceTimeline.play_anim -> use_play_anim: boolean -SpaceTimeline.play_buttons -> use_play_buttons: boolean -SpaceTimeline.play_image -> use_play_image: boolean -SpaceTimeline.play_nodes -> use_play_nodes: boolean -SpaceTimeline.play_sequencer -> use_play_sequencer: boolean -SpaceTimeline.play_top_left -> use_play_top_left: boolean +SpaceTimeline.play_all_3d -> use_play_all_3d: boolean +SpaceTimeline.play_anim -> use_play_anim: boolean +SpaceTimeline.play_buttons -> use_play_buttons: boolean +SpaceTimeline.play_image -> use_play_image: boolean +SpaceTimeline.play_nodes -> use_play_nodes: boolean +SpaceTimeline.play_sequencer -> use_play_sequencer: boolean +SpaceTimeline.play_top_left -> use_play_top_left: boolean SpaceTimeline.show_cframe_indicator -> show_cframe_indicator: boolean Show frame number beside the current frame indicator line SpaceUVEditor.constrain_to_image_bounds -> use_constrain_to_image_bounds: boolean Constraint to stay within the image bounds while editing SpaceUVEditor.draw_modified_edges -> show_modified_edges: boolean Draw edges after modifiers are applied @@ -1203,10 +1203,10 @@ SpaceView3D.outline_selected -> show_outline_selected: boolean Show an out SpaceView3D.pivot_point_align -> use_pivot_point_align: boolean Manipulate object centers only SpaceView3D.relationship_lines -> show_relationship_lines: boolean Show dashed lines indicating parent or constraint relationships SpaceView3D.textured_solid -> show_textured_solid: boolean Display face-assigned textures in solid view -TODO * SpaceView3D.used_layers -> used_layers: boolean, (read-only) Layers that contain something +TODO * SpaceView3D.used_layers -> layers_used: boolean, (read-only) Layers that contain something SpeedControlSequence.curve_compress_y -> use_curve_compress_y: boolean Scale F-Curve value to get the target frame number, F-Curve value runs from 0.0 to 1.0 SpeedControlSequence.curve_velocity -> use_curve_velocity: boolean Interpret the F-Curve value as a velocity instead of a frame number -SpeedControlSequence.frame_blending -> use_frame_blending: boolean Blend two frames into the target for a smoother result +SpeedControlSequence.frame_blending -> use_frame_blend: boolean Blend two frames into the target for a smoother result Spline.bezier_u -> use_bezier_u: boolean Make this nurbs curve or surface act like a bezier spline in the U direction (Order U must be 3 or 4, Cyclic U must be disabled) Spline.bezier_v -> use_bezier_v: boolean Make this nurbs surface act like a bezier spline in the V direction (Order V must be 3 or 4, Cyclic V must be disabled) Spline.cyclic_u -> use_cyclic_u: boolean Make this curve or surface a closed loop in the U direction @@ -1219,8 +1219,8 @@ SplineIKConstraint.chain_offset -> use_chain_offset: boolean Offset the en TODO * SplineIKConstraint.even_divisions -> use_even_divisions: boolean Ignore the relative lengths of the bones when fitting to the curve SplineIKConstraint.use_curve_radius -> use_curve_radius: boolean Average radius of the endpoints is used to tweak the X and Z Scaling of the bones, on top of XZ Scale mode SplineIKConstraint.y_stretch -> use_y_stretch: boolean Stretch the Y axis of the bones to fit the curve -TODO * SplinePoint.hidden -> hidden: boolean Visibility status -TODO * SplinePoint.selected -> selected: boolean Selection status +TODO * SplinePoint.hidden -> hide: boolean Visibility status +TODO * SplinePoint.selected -> select_control_point: boolean Selection status SpotLamp.auto_clip_end -> use_auto_clip_end: boolean Automatic calculation of clipping-end, based on visible vertices SpotLamp.auto_clip_start -> use_auto_clip_start: boolean Automatic calculation of clipping-start, based on visible vertices SpotLamp.halo -> use_halo: boolean Renders spotlight with a volumetric halo (Buffer Shadows) @@ -1229,25 +1229,25 @@ SpotLamp.shadow_layer -> use_shadow_own_layer: boolean Causes only objects SpotLamp.show_cone -> show_cone: boolean Draw transparent cone in 3D view to visualize which objects are contained in it SpotLamp.sphere -> use_sphere: boolean Sets light intensity to zero beyond lamp distance SpotLamp.square -> use_square: boolean Casts a square spot light shape -TODO * StateActuator.state -> state: boolean +TODO * StateActuator.state -> state: boolean SubsurfModifier.optimal_display -> show_optimal: boolean Skip drawing/rendering of interior subdivided edges SubsurfModifier.subsurf_uv -> use_subsurf_uv: boolean Use subsurf to subdivide UVs SunLamp.only_shadow -> use_shadow_only: boolean Causes light to cast shadows only without illuminating objects SunLamp.shadow_layer -> use_shadow_own_layer: boolean Causes only objects on the same layer to cast shadows SurfaceCurve.map_along_length -> use_map_along_length: boolean Generate texture mapping coordinates following the curve direction, rather than the local bounding box SurfaceCurve.vertex_normal_flip -> use_vertex_normal_flip: boolean Flip vertex normals towards the camera during render -TexMapping.has_maximum -> use_clip_to_maximum: boolean Whether to use maximum clipping value -TexMapping.has_minimum -> use_clip_to_minimum: boolean Whether to use minimum clipping value +TexMapping.has_maximum -> use_clip_to_max: boolean Whether to use maximum clipping value +TexMapping.has_minimum -> use_clip_to_min: boolean Whether to use minimum clipping value Text.dirty -> is_dirty: boolean, (read-only) Text file has been edited since last save Text.memory -> is_in_memory: boolean, (read-only) Text file is in memory, without a corresponding file on disk Text.modified -> is_modified: boolean, (read-only) Text file on disk is different than the one in memory Text.tabs_as_spaces -> use_tabs_as_spaces: boolean Automatically converts all new tabs into spaces Text.use_module -> use_module: boolean Register this text as a module on loading, Text name must end with '.py' -TextCharacterFormat.bold -> use_bold: boolean -TextCharacterFormat.italic -> use_italic: boolean -TextCharacterFormat.style -> use_style: boolean -TextCharacterFormat.underline -> use_underline: boolean -TextCharacterFormat.wrap -> use_wrap: boolean +TextCharacterFormat.bold -> use_bold: boolean +TextCharacterFormat.italic -> use_italic: boolean +TextCharacterFormat.style -> use_style: boolean +TextCharacterFormat.underline -> use_underline: boolean +TextCharacterFormat.wrap -> use_wrap: boolean TextCurve.fast -> use_fast_editing: boolean Don't fill polygons while editing TextCurve.map_along_length -> use_map_along_length: boolean Generate texture mapping coordinates following the curve direction, rather than the local bounding box TextCurve.vertex_normal_flip -> use_vertex_normal_flip: boolean Flip vertex normals towards the camera during render @@ -1261,8 +1261,8 @@ TextureSlot.negate -> use_negate: boolean Inverts the values of the textur TextureSlot.rgb_to_intensity -> use_rgb_to_intensity: boolean Converts texture RGB values to intensity (gray) values TextureSlot.stencil -> use_stencil: boolean Use this texture as a blending value on the next texture ThemeBoneColorSet.colored_constraints -> show_colored_constraints: boolean Allow the use of colors indicating constraints/keyed status -ThemeWidgetColors.shaded -> show_shaded: boolean -TODO * TimelineMarker.selected -> selected: boolean Marker selection state +ThemeWidgetColors.shaded -> show_shaded: boolean +TODO * TimelineMarker.selected -> select: boolean Marker selection state ToolSettings.auto_normalize -> use_auto_normalize: boolean Ensure all bone-deforming vertex groups add up to 1.0 while weight painting ToolSettings.automerge_editing -> use_automerge_editing: boolean Automatically merge vertices moved to the same location ToolSettings.bone_sketching -> use_bone_sketching: boolean DOC BROKEN @@ -1276,13 +1276,13 @@ ToolSettings.snap_align_rotation -> use_snap_align_rotation: boolean Align ToolSettings.snap_peel_object -> use_snap_peel_object: boolean Consider objects as whole when finding volume center ToolSettings.snap_project -> use_snap_project: boolean Project vertices on the surface of other objects ToolSettings.use_auto_keying -> use_keyframe_insert_auto: boolean Automatic keyframe insertion for Objects and Bones -TODO * ToolSettings.uv_local_view -> showonly_uv_local_view: boolean Draw only faces with the currently displayed image assigned +TODO * ToolSettings.uv_local_view -> show_only_uv_local_view: boolean Draw only faces with the currently displayed image assigned ToolSettings.uv_sync_selection -> use_uv_sync_selection: boolean Keep UV and edit mode mesh selection in sync TrackToConstraint.target_z -> use_target_z: boolean Target's Z axis, not World Z axis, will constraint the Up direction TransformConstraint.extrapolate_motion -> use_motion_extrapolate: boolean Extrapolate ranges TransformSequence.uniform_scale -> use_uniform_scale: boolean Scale uniformly, preserving aspect ratio -UILayout.active -> active: boolean -UILayout.enabled -> enabled: boolean +UILayout.active -> active: boolean +UILayout.enabled -> enabled: boolean UVProjectModifier.override_image -> show_override_image: boolean Override faces' current images with the given image UnitSettings.use_separate -> use_separate: boolean Display units in pairs UserPreferencesEdit.auto_keyframe_insert_available -> use_keyframe_insert_auto_available: boolean Automatic keyframe insertion in available curves @@ -1312,10 +1312,9 @@ UserPreferencesEdit.snap_translate -> use_snap_grid_translate: boolean Sna UserPreferencesEdit.use_auto_keying -> use_auto_keying: boolean Automatic keyframe insertion for Objects and Bones UserPreferencesEdit.use_negative_frames -> use_negative_frames: boolean Current frame number can be manually set to a negative value UserPreferencesEdit.use_visual_keying -> show_visual_keying: boolean Use Visual keying automatically for constrained objects - UserPreferencesFilePaths.auto_save_temporary_files -> use_auto_save_temporary_files: boolean Automatic saving of temporary files UserPreferencesFilePaths.compress_file -> use_file_compression: boolean Enable file compression when saving .blend files -UserPreferencesFilePaths.filter_file_extensions -> showonly_file_extensions: boolean Display only files with extensions in the image select window +UserPreferencesFilePaths.filter_file_extensions -> show_only_file_extensions: boolean Display only files with extensions in the image select window UserPreferencesFilePaths.hide_dot_files_datablocks -> show_dot_files_datablocks: boolean Hide files/datablocks that start with a dot(.*) UserPreferencesFilePaths.load_ui -> use_load_ui: boolean Load user interface setup when loading .blend files UserPreferencesFilePaths.save_preview_images -> use_save_preview_images: boolean Enables automatic saving of preview images in the .blend file @@ -1374,9 +1373,9 @@ WaveModifier.z_normal -> use_normal_z: boolean Enable displacement along t World.blend_sky -> use_sky_blend: boolean Render background with natural progression from horizon to zenith World.paper_sky -> use_sky_paper: boolean Flatten blend or texture coordinates World.real_sky -> use_sky_real: boolean Render background with a real horizon, relative to the camera angle -WorldLighting.falloff -> use_falloff: boolean -WorldLighting.pixel_cache -> use_ambient_occlusion_pixel_cache: boolean Cache AO results in pixels and interpolate over neighbouring pixels for speedup (for Approximate) -WorldLighting.use_ambient_occlusion -> use_ambient_occlusion: boolean Use Ambient Occlusion to add shadowing based on distance between objects +WorldLighting.falloff -> use_falloff: boolean +WorldLighting.pixel_cache -> use_ao_pixel_cache: boolean Cache AO results in pixels and interpolate over neighbouring pixels for speedup (for Approximate) +WorldLighting.use_ambient_occlusion -> use_ao: boolean Use Ambient Occlusion to add shadowing based on distance between objects WorldLighting.use_environment_lighting -> use_environment_lighting: boolean Add light coming from the environment WorldLighting.use_indirect_lighting -> use_indirect_lighting: boolean Add indirect light bouncing of surrounding objects WorldMistSettings.use_mist -> use_mist: boolean Occlude objects with the environment color as they are further away @@ -1384,4 +1383,4 @@ WorldStarsSettings.use_stars -> use_stars: boolean Enable starfield genera WorldTextureSlot.map_blend -> use_map_blend: boolean Affect the color progression of the background WorldTextureSlot.map_horizon -> use_map_horizon: boolean Affect the color of the horizon WorldTextureSlot.map_zenith_down -> use_map_zenith_down: boolean Affect the color of the zenith below -WorldTextureSlot.map_zenith_up -> use_map_zenith_up: boolean Affect the color of the zenith above +WorldTextureSlot.map_zenith_up -> use_map_zenith_up: boolean Affect the color of the zenith above \ No newline at end of file From 35dd09a9efc7840a79e7ef345f5e8850c41f77b1 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 29 Jun 2010 22:07:27 +0000 Subject: [PATCH 241/674] add alpha option for new images (operator and function) --- source/blender/blenkernel/BKE_image.h | 2 +- source/blender/blenkernel/intern/image.c | 12 ++++++------ source/blender/editors/space_image/image_ops.c | 17 ++++++++++++----- source/blender/makesrna/intern/rna_main_api.c | 5 +++-- 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/source/blender/blenkernel/BKE_image.h b/source/blender/blenkernel/BKE_image.h index 7bdb9aaf709..d7eb5fe8246 100644 --- a/source/blender/blenkernel/BKE_image.h +++ b/source/blender/blenkernel/BKE_image.h @@ -115,7 +115,7 @@ void BKE_image_release_ibuf(struct Image *ima, void *lock); struct Image *BKE_add_image_file(const char *name, int frame); /* adds image, adds ibuf, generates color or pattern */ -struct Image *BKE_add_image_size(int width, int height, char *name, int floatbuf, short uvtestgrid, float color[4]); +struct Image *BKE_add_image_size(int width, int height, char *name, int depth, int floatbuf, short uvtestgrid, float color[4]); /* adds image from imbuf, owns imbuf */ struct Image *BKE_add_image_imbuf(struct ImBuf *ibuf); diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index f06e9302a60..a584e91fc0f 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -380,18 +380,18 @@ Image *BKE_add_image_file(const char *name, int frame) return ima; } -static ImBuf *add_ibuf_size(int width, int height, char *name, int floatbuf, short uvtestgrid, float color[4]) +static ImBuf *add_ibuf_size(int width, int height, char *name, int depth, int floatbuf, short uvtestgrid, float color[4]) { ImBuf *ibuf; unsigned char *rect= NULL; float *rect_float= NULL; if (floatbuf) { - ibuf= IMB_allocImBuf(width, height, 24, IB_rectfloat, 0); + ibuf= IMB_allocImBuf(width, height, depth, IB_rectfloat, 0); rect_float= (float*)ibuf->rect_float; } else { - ibuf= IMB_allocImBuf(width, height, 24, IB_rect, 0); + ibuf= IMB_allocImBuf(width, height, depth, IB_rect, 0); rect= (unsigned char*)ibuf->rect; } @@ -413,7 +413,7 @@ static ImBuf *add_ibuf_size(int width, int height, char *name, int floatbuf, sho } /* adds new image block, creates ImBuf and initializes color */ -Image *BKE_add_image_size(int width, int height, char *name, int floatbuf, short uvtestgrid, float color[4]) +Image *BKE_add_image_size(int width, int height, char *name, int depth, int floatbuf, short uvtestgrid, float color[4]) { /* on save, type is changed to FILE in editsima.c */ Image *ima= image_alloc(name, IMA_SRC_GENERATED, IMA_TYPE_UV_TEST); @@ -426,7 +426,7 @@ Image *BKE_add_image_size(int width, int height, char *name, int floatbuf, short ima->gen_y= height; ima->gen_type= uvtestgrid; - ibuf= add_ibuf_size(width, height, name, floatbuf, uvtestgrid, color); + ibuf= add_ibuf_size(width, height, name, depth, floatbuf, uvtestgrid, color); image_assign_ibuf(ima, ibuf, IMA_NO_INDEX, 0); ima->ok= IMA_OK_LOADED; @@ -2075,7 +2075,7 @@ ImBuf *BKE_image_acquire_ibuf(Image *ima, ImageUser *iuser, void **lock_r) /* UV testgrid or black or solid etc */ if(ima->gen_x==0) ima->gen_x= 1024; if(ima->gen_y==0) ima->gen_y= 1024; - ibuf= add_ibuf_size(ima->gen_x, ima->gen_y, ima->name, 0, ima->gen_type, color); + ibuf= add_ibuf_size(ima->gen_x, ima->gen_y, ima->name, 24, 0, ima->gen_type, color); image_assign_ibuf(ima, ibuf, IMA_NO_INDEX, 0); ima->ok= IMA_OK_LOADED; } diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index f84fd6fc430..1787faff327 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -1182,7 +1182,7 @@ static int new_exec(bContext *C, wmOperator *op) PropertyRNA *prop; char name[22]; float color[4]; - int width, height, floatbuf, uvtestgrid; + int width, height, floatbuf, uvtestgrid, alpha; /* retrieve state */ sima= CTX_wm_space_image(C); @@ -1195,12 +1195,15 @@ static int new_exec(bContext *C, wmOperator *op) floatbuf= RNA_boolean_get(op->ptr, "float"); uvtestgrid= RNA_boolean_get(op->ptr, "uv_test_grid"); RNA_float_get_array(op->ptr, "color", color); - color[3]= RNA_float_get(op->ptr, "alpha"); + alpha= RNA_boolean_get(op->ptr, "alpha"); if (!floatbuf && scene->r.color_mgt_flag & R_COLOR_MANAGEMENT) linearrgb_to_srgb_v3_v3(color, color); - ima = BKE_add_image_size(width, height, name, floatbuf, uvtestgrid, color); + if(!alpha) + color[3]= 1.0f; + + ima = BKE_add_image_size(width, height, name, alpha ? 32 : 24, floatbuf, uvtestgrid, color); if(!ima) return OPERATOR_CANCELLED; @@ -1228,6 +1231,9 @@ static int new_exec(bContext *C, wmOperator *op) void IMAGE_OT_new(wmOperatorType *ot) { + PropertyRNA *prop; + float default_color[4]= {0.0f, 0.0f, 0.0f, 1.0f}; + /* identifiers */ ot->name= "New"; ot->idname= "IMAGE_OT_new"; @@ -1243,8 +1249,9 @@ void IMAGE_OT_new(wmOperatorType *ot) RNA_def_string(ot->srna, "name", "Untitled", 21, "Name", "Image datablock name."); RNA_def_int(ot->srna, "width", 1024, 1, INT_MAX, "Width", "Image width.", 1, 16384); RNA_def_int(ot->srna, "height", 1024, 1, INT_MAX, "Height", "Image height.", 1, 16384); - RNA_def_float_color(ot->srna, "color", 3, NULL, 0.0f, FLT_MAX, "Color", "Default fill color.", 0.0f, 1.0f); - RNA_def_float(ot->srna, "alpha", 1.0f, 0.0f, 1.0f, "Alpha", "Default fill alpha.", 0.0f, 1.0f); + prop= RNA_def_float_color(ot->srna, "color", 4, NULL, 0.0f, FLT_MAX, "Color", "Default fill color.", 0.0f, 1.0f); + RNA_def_property_float_array_default(prop, default_color); + RNA_def_boolean(ot->srna, "alpha", 1, "Alpha", "Create an image with an alpha channel."); RNA_def_boolean(ot->srna, "uv_test_grid", 0, "UV Test Grid", "Fill the image with a grid for UV map testing."); RNA_def_boolean(ot->srna, "float", 0, "32 bit Float", "Create image with 32 bit floating point bit depth."); } diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c index 0dbaaa87a99..4564ecd586b 100644 --- a/source/blender/makesrna/intern/rna_main_api.c +++ b/source/blender/makesrna/intern/rna_main_api.c @@ -253,10 +253,10 @@ void rna_Main_lamps_remove(Main *bmain, ReportList *reports, Lamp *lamp) /* XXX python now has invalid pointer? */ } -Image *rna_Main_images_new(Main *bmain, char* name, int width, int height, int float_buffer) +Image *rna_Main_images_new(Main *bmain, char* name, int width, int height, int alpha, int float_buffer) { float color[4]= {0.0, 0.0, 0.0, 1.0}; - Image *image= BKE_add_image_size(width, height, name, float_buffer, 0, color); + Image *image= BKE_add_image_size(width, height, name, alpha ? 32:24, float_buffer, 0, color); image->id.us--; return image; } @@ -685,6 +685,7 @@ void RNA_def_main_images(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_property_flag(parm, PROP_REQUIRED); parm= RNA_def_int(func, "width", 1024, 1, INT_MAX, "", "Width of the image.", 0, INT_MAX); parm= RNA_def_int(func, "height", 1024, 1, INT_MAX, "", "Height of the image.", 0, INT_MAX); + parm= RNA_def_boolean(func, "alpha", 0, "Alpha", "Use alpha channel"); parm= RNA_def_boolean(func, "float_buffer", 0, "Float Buffer", "Create an image with floating point color"); /* return type */ parm= RNA_def_pointer(func, "image", "Image", "", "New image datablock."); From f7f44696ba964cb6466254c2471c93daeef93406 Mon Sep 17 00:00:00 2001 From: Jens Ole Wund Date: Tue, 29 Jun 2010 22:30:55 +0000 Subject: [PATCH 242/674] ui glitch fix [#22667] --- release/scripts/ui/properties_physics_softbody.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/release/scripts/ui/properties_physics_softbody.py b/release/scripts/ui/properties_physics_softbody.py index 43404a5ba8b..d253943b724 100644 --- a/release/scripts/ui/properties_physics_softbody.py +++ b/release/scripts/ui/properties_physics_softbody.py @@ -186,10 +186,11 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel): sub.active = softbody.stiff_quads sub.prop(softbody, "shear") - col.prop(softbody, "new_aero", text="Aero") + col.label(text="Extra Aerodynamics:") + col.prop(softbody, "aero", text="Factor") sub = col.column() - sub.enabled = softbody.new_aero - sub.prop(softbody, "aero", text="Factor") + sub.enabled = softbody.aero > 0 + sub.prop(softbody, "new_aero", text="Straw Dynamics") col.label(text="Collision:") col.prop(softbody, "edge_collision", text="Edge") From f6dabd51c9e1603b939cf5bfeefef63b4f533dfb Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 30 Jun 2010 02:34:34 +0000 Subject: [PATCH 243/674] Fix for [#22667] Soft Body Aero on/off switch Under guidance from Jens, converted the 'aero' property into a two-way switch, which is what it actually represents. --- .../scripts/ui/properties_physics_softbody.py | 10 +++++--- .../makesrna/intern/rna_object_force.c | 25 +++++++++++++------ 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/release/scripts/ui/properties_physics_softbody.py b/release/scripts/ui/properties_physics_softbody.py index d253943b724..3bd27f382c5 100644 --- a/release/scripts/ui/properties_physics_softbody.py +++ b/release/scripts/ui/properties_physics_softbody.py @@ -186,11 +186,13 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel): sub.active = softbody.stiff_quads sub.prop(softbody, "shear") - col.label(text="Extra Aerodynamics:") + col.label(text="Aerodynamics:") + col.row().prop(softbody, "aerodynamics_type", expand=True) col.prop(softbody, "aero", text="Factor") - sub = col.column() - sub.enabled = softbody.aero > 0 - sub.prop(softbody, "new_aero", text="Straw Dynamics") + + #sub = col.column() + #sub.enabled = softbody.aero > 0 + col.label(text="Collision:") col.prop(softbody, "edge_collision", text="Edge") diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c index 0069f3332e8..ec1f1bf164e 100644 --- a/source/blender/makesrna/intern/rna_object_force.c +++ b/source/blender/makesrna/intern/rna_object_force.c @@ -357,14 +357,19 @@ static void rna_SoftBodySettings_self_collision_set(PointerRNA *ptr, int value) static int rna_SoftBodySettings_new_aero_get(PointerRNA *ptr) { Object *data= (Object*)(ptr->id.data); - return (((data->softflag) & OB_SB_AERO_ANGLE) != 0); + if (data->softflag & OB_SB_AERO_ANGLE) + return 1; + else + return 0; } static void rna_SoftBodySettings_new_aero_set(PointerRNA *ptr, int value) { Object *data= (Object*)(ptr->id.data); - if(value) data->softflag |= OB_SB_AERO_ANGLE; - else data->softflag &= ~OB_SB_AERO_ANGLE; + if (value == 1) + data->softflag |= OB_SB_AERO_ANGLE; + else /* value == 0 */ + data->softflag &= ~OB_SB_AERO_ANGLE; } static int rna_SoftBodySettings_face_collision_get(PointerRNA *ptr) @@ -1404,6 +1409,11 @@ static void rna_def_softbody(BlenderRNA *brna) {SBC_MODE_MAX, "MAXIMAL", 0, "Maximal", "Maximal Spring length * Ball Size"}, {SBC_MODE_AVGMINMAX, "MINMAX", 0, "AvMinMax", "(Min+Max)/2 * Ball Size"}, {0, NULL, 0, NULL, NULL}}; + + static EnumPropertyItem aerodynamics_type[] = { + {0, "SIMPLE", 0, "Simple", "Edges receive a drag force from surrounding media"}, + {1, "LIFT_FORCE", 0, "Lift Force", "Edges receive a lift force when passing through surrounding media"}, + {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "SoftBodySettings", NULL); RNA_def_struct_sdna(srna, "SoftBody"); @@ -1660,12 +1670,13 @@ static void rna_def_softbody(BlenderRNA *brna) prop= RNA_def_property(srna, "face_collision", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_funcs(prop, "rna_SoftBodySettings_face_collision_get", "rna_SoftBodySettings_face_collision_set"); - RNA_def_property_ui_text(prop, "Face Collision", "Faces collide too, SLOOOOOW warning"); + RNA_def_property_ui_text(prop, "Face Collision", "Faces collide too, can be very slow"); RNA_def_property_update(prop, 0, "rna_softbody_update"); - prop= RNA_def_property(srna, "new_aero", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_funcs(prop, "rna_SoftBodySettings_new_aero_get", "rna_SoftBodySettings_new_aero_set"); - RNA_def_property_ui_text(prop, "N", "New aero(uses angle and length)"); + prop= RNA_def_property(srna, "aerodynamics_type", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_items(prop, aerodynamics_type); + RNA_def_property_enum_funcs(prop, "rna_SoftBodySettings_new_aero_get", "rna_SoftBodySettings_new_aero_set", NULL); + RNA_def_property_ui_text(prop, "Aerodynamics Type", "Method of calculating aerodynamic interaction"); RNA_def_property_update(prop, 0, "rna_softbody_update"); prop= RNA_def_property(srna, "self_collision", PROP_BOOLEAN, PROP_NONE); From a35680a3e0986496495c8bb8b900478b4c65600e Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Wed, 30 Jun 2010 03:19:28 +0000 Subject: [PATCH 244/674] [#22699] "--" fails to stop processing cmd line arguments (incl. patch) Thanks Matt --- source/blender/blenlib/intern/BLI_args.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/blender/blenlib/intern/BLI_args.c b/source/blender/blenlib/intern/BLI_args.c index dc964639e68..8d72311f80b 100644 --- a/source/blender/blenlib/intern/BLI_args.c +++ b/source/blender/blenlib/intern/BLI_args.c @@ -284,7 +284,8 @@ void BLI_argsParse(struct bArgs *ba, int pass, BA_ArgCallback default_cb, void * } i += retval; } else if (retval == -1){ - ba->passes[i] = pass; + if (a->key->pass != -1) + ba->passes[i] = pass; break; } } From 0d5b688746e2b6b69800969bf85a705db51ed751 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 30 Jun 2010 04:09:58 +0000 Subject: [PATCH 245/674] Fix [#22643] Renderging Crash. 2.5 --- source/blender/render/intern/source/rayshade.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/blender/render/intern/source/rayshade.c b/source/blender/render/intern/source/rayshade.c index bdc1dcc2782..ed52f37fcfa 100644 --- a/source/blender/render/intern/source/rayshade.c +++ b/source/blender/render/intern/source/rayshade.c @@ -241,7 +241,9 @@ RayObject* makeraytree_object(Render *re, ObjectInstanceRen *obi) if(is_raytraceable_vlr(re, vlr)) faces++; } - assert( faces > 0 ); + + if (faces == 0) + return NULL; //Create Ray cast accelaration structure raytree = RE_rayobject_create( re, re->r.raytrace_structure, faces ); @@ -375,7 +377,8 @@ static void makeraytree_single(Render *re) if(test_break(re)) break; - RE_rayobject_add( re->raytree, obj ); + if (obj) + RE_rayobject_add( re->raytree, obj ); } else { From 6adc681227bb40535fc2e42d43ac43bcdb74b379 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Wed, 30 Jun 2010 05:03:41 +0000 Subject: [PATCH 246/674] Finish fixing [#22653] Dimensions not update on curve --- source/blender/editors/space_view3d/space_view3d.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index 92e3b35f614..2b89fbbb656 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -749,6 +749,7 @@ static void view3d_buttons_area_listener(ARegion *ar, wmNotifier *wmn) case ND_POSE: case ND_DRAW: case ND_KEYS: + case ND_MODIFIER: ED_region_tag_redraw(ar); break; } @@ -760,6 +761,8 @@ static void view3d_buttons_area_listener(ARegion *ar, wmNotifier *wmn) ED_region_tag_redraw(ar); break; } + if (wmn->action == NA_EDITED) + ED_region_tag_redraw(ar); break; case NC_TEXTURE: /* for brush textures */ From 7f3b7c07afb51e9cc6acd1f34c72a0eee205b4be Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 30 Jun 2010 09:53:40 +0000 Subject: [PATCH 247/674] bugfix [#22702] Camera lense animation not updating --- source/blender/render/intern/source/convertblender.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 582b5926509..c3034768a4e 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -4959,6 +4959,11 @@ void RE_Database_FromScene(Render *re, Scene *scene, unsigned int lay, int use_c /* if no camera, viewmat should have been set! */ if(use_camera_view && re->scene->camera) { + /* called before but need to call again incase of lens animation from the + * above call to scene_update_for_newframe, fixes bug. [#22702]. + * following calls dont depend on 'RE_SetCamera' */ + RE_SetCamera(re, scene->camera); + normalize_m4(re->scene->camera->obmat); invert_m4_m4(mat, re->scene->camera->obmat); RE_SetView(re, mat); From 6ff10f00d4f239405a6f0e3706036dd1978dc6f8 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 30 Jun 2010 14:43:28 +0000 Subject: [PATCH 248/674] Bugfix: effector weights were not copied when copying particle settings. --- source/blender/blenkernel/intern/particle.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index 0c55cc2aaac..f33ac2ad380 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -3536,6 +3536,7 @@ ParticleSettings *psys_copy_settings(ParticleSettings *part) partn= copy_libblock(part); if(partn->pd) partn->pd= MEM_dupallocN(part->pd); if(partn->pd2) partn->pd2= MEM_dupallocN(part->pd2); + partn->effector_weights = MEM_dupallocN(part->effector_weights); partn->boids = boid_copy_settings(part->boids); From df56d403394fc23437ce914e397ad4900ee6d81a Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 30 Jun 2010 15:15:31 +0000 Subject: [PATCH 249/674] OpenMP multithreading for the defocus node. Reason: defocus can take 16x longer on a 4k render than on a 2k render (due to O(n^2) scaling). --- .../nodes/intern/CMP_nodes/CMP_defocus.c | 58 +++++++++++++------ 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_defocus.c b/source/blender/nodes/intern/CMP_nodes/CMP_defocus.c index 4c515df34fb..a93a5760842 100644 --- a/source/blender/nodes/intern/CMP_nodes/CMP_defocus.c +++ b/source/blender/nodes/intern/CMP_nodes/CMP_defocus.c @@ -242,11 +242,9 @@ static void defocus_blur(bNode *node, CompBuf *new, CompBuf *img, CompBuf *zbuf, CompBuf *crad; // CoC radius buffer BokehCoeffs BKH[8]; // bokeh shape data, here never > 8 pts. float bkh_b[4] = {0}; // shape 2D bound - unsigned int p, px, p4, zp, cp, cp4; - float *ctcol, u, v, iZ, ct_crad, lwt, wt=0, cR2=0; - float dof_sp, maxfgc, bk_hn_theta=0, inradsq=0; float cam_fdist=1, cam_invfdist=1, cam_lens=35; - int x, y, sx, sy, len_bkh=0; + float dof_sp, maxfgc, bk_hn_theta=0, inradsq=0; + int y, len_bkh=0, ydone=0; float aspect, aperture; int minsz; //float bcrad, nmaxc, scf; @@ -288,6 +286,8 @@ static void defocus_blur(bNode *node, CompBuf *new, CompBuf *img, CompBuf *zbuf, // to prevent *reaaallly* big radius values and impossible calculation times, // limit the maximum to half the image width or height, whichever is smaller float maxr = 0.5f*(float)MIN2(img->x, img->y); + unsigned int p; + for (p=0; p<(unsigned int)(img->x*img->y); p++) { crad->rect[p] = zbuf ? (zbuf->rect[p]*nqd->scale) : inpval; // bug #5921, limit minimum @@ -298,6 +298,8 @@ static void defocus_blur(bNode *node, CompBuf *new, CompBuf *img, CompBuf *zbuf, } } else { + float wt; + // actual zbuffer. // separate foreground from background CoC's // then blur background and blend in again with foreground, @@ -305,10 +307,11 @@ static void defocus_blur(bNode *node, CompBuf *new, CompBuf *img, CompBuf *zbuf, // wts buffer here used for blendmask maxfgc = 0.f; // maximum foreground CoC radius for (y=0; yy; y++) { - p = y * img->x; + unsigned int p = y * img->x; + int x; for (x=0; xx; x++) { - px = p + x; - iZ = (zbuf->rect[px]==0.f) ? 0.f : (1.f/zbuf->rect[px]); + unsigned int px = p + x; + float iZ = (zbuf->rect[px]==0.f) ? 0.f : (1.f/zbuf->rect[px]); crad->rect[px] = 0.5f*(aperture*(dof_sp*(cam_invfdist - iZ) - 1.f)); if (crad->rect[px] <= 0.f) { wts->rect[px] = 1.f; @@ -342,11 +345,13 @@ static void defocus_blur(bNode *node, CompBuf *new, CompBuf *img, CompBuf *zbuf, // and blend... for (y=0; yy; y++) { - p = y*img->x; + unsigned int p = y*img->x; + int x; + for (x=0; xx; x++) { - px = p + x; + unsigned px = p + x; if (zbuf->rect[px]!=0.f) { - iZ = (zbuf->rect[px]==0.f) ? 0.f : (1.f/zbuf->rect[px]); + float iZ = (zbuf->rect[px]==0.f) ? 0.f : (1.f/zbuf->rect[px]); // bug #6656 part 2b, do not rescale /* @@ -373,18 +378,30 @@ static void defocus_blur(bNode *node, CompBuf *new, CompBuf *img, CompBuf *zbuf, //------------------------------------------------------------------ // main loop + #pragma omp parallel for private(y) if(!nqd->preview && img->y*img->x > 16384) schedule(guided) for (y=0; yy; y++) { + unsigned int p, p4, zp, cp, cp4; + float *ctcol, u, v, ct_crad, cR2=0; + int x, sx, sy; + // some sort of visual feedback would be nice, or at least this text in the renderwin header // but for now just print some info in the console every 8 scanlines. - if (((y & 7)==0) || (y==(img->y-1))) { - if(G.background==0) { - printf("\rdefocus: Processing Line %d of %d ... ", y+1, img->y); - fflush(stdout); + #pragma omp critical + { + if (((ydone & 7)==0) || (ydone==(img->y-1))) { + if(G.background==0) { + printf("\rdefocus: Processing Line %d of %d ... ", ydone+1, img->y); + fflush(stdout); + } } + + ydone++; } - // esc set by main calling process + + // esc set by main calling process. don't break because openmp doesn't + // allow it, just continue and do nothing if(node->exec & NODE_BREAK) - break; + continue; zp = y * img->x; for (x=0; xx; x++) { @@ -412,6 +429,7 @@ static void defocus_blur(bNode *node, CompBuf *new, CompBuf *img, CompBuf *zbuf, if (!nqd->preview) { int xs, xe, ys, ye; float lwt, wtcol[4] = {0}, aacol[4] = {0}; + float wt; // shape weight if (nqd->bktype==0) // disk @@ -700,7 +718,7 @@ static void defocus_blur(bNode *node, CompBuf *new, CompBuf *img, CompBuf *zbuf, else { // sampled, simple rejection sampling here, good enough unsigned int maxsam, s, ui = BLI_rand()*BLI_rand(); - float wcor, cpr = BLI_frand(); + float wcor, cpr = BLI_frand(), lwt; if (no_zbuf) maxsam = nqd->samples; // no zbuffer input, use sample value directly else { @@ -749,8 +767,10 @@ static void defocus_blur(bNode *node, CompBuf *new, CompBuf *img, CompBuf *zbuf, // finally, normalize for (y=0; yy; y++) { - p = y * new->x; - p4 = p * new->type; + unsigned int p = y * new->x; + unsigned int p4 = p * new->type; + int x; + for (x=0; xx; x++) { float dv = (wts->rect[p]==0.f) ? 1.f : (1.f/wts->rect[p]); new->rect[p4] *= dv; From bd4d743db9dadbc92ecd8d2a278a86f3ecab2448 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Wed, 30 Jun 2010 19:35:08 +0000 Subject: [PATCH 250/674] * Made sculpt drawing respect the "use VBO" preference. * Hopefully this fixes some sculpt problems for people with broken drivers --- source/blender/gpu/intern/gpu_buffers.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c index dd5520608f1..1d615c8e67b 100644 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@ -459,7 +459,7 @@ void *GPU_build_mesh_buffers(GHash *map, MVert *mvert, MFace *mface, for(i = 0, tottri = 0; i < totface; ++i) tottri += mface[face_indices[i]].v4 ? 2 : 1; - if(GL_ARB_vertex_buffer_object) + if(GL_ARB_vertex_buffer_object && !(U.gameflags & USER_DISABLE_VBO)) glGenBuffersARB(1, &buffers->index_buf); if(buffers->index_buf) { @@ -586,7 +586,7 @@ void *GPU_build_grid_buffers(DMGridData **grids, totquad= (gridsize-1)*(gridsize-1)*totgrid; /* Generate index buffer object */ - if(GL_ARB_vertex_buffer_object) + if(GL_ARB_vertex_buffer_object && !(U.gameflags & USER_DISABLE_VBO)) glGenBuffersARB(1, &buffers->index_buf); if(buffers->index_buf) { From 3a47839a312b8f2cb92481e60dac3c79c4b873c9 Mon Sep 17 00:00:00 2001 From: Luca Bonavita Date: Thu, 1 Jul 2010 10:52:15 +0000 Subject: [PATCH 251/674] == rna cleanup == - fixed a bug: it wasn't updating checks when importing from py file - removed the global input_filename, I didn't like it very much --- .../makesrna/rna_cleanup/rna_cleaner.py | 54 ++++++++++--------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/source/blender/makesrna/rna_cleanup/rna_cleaner.py b/source/blender/makesrna/rna_cleanup/rna_cleaner.py index 64fc2969527..4127861e1ce 100755 --- a/source/blender/makesrna/rna_cleanup/rna_cleaner.py +++ b/source/blender/makesrna/rna_cleanup/rna_cleaner.py @@ -55,22 +55,22 @@ def check_commandline(): # Usage if len(sys.argv)==1 or len(sys.argv)>3: usage() - if sys.argv[1]!= '-h': - input_filename = sys.argv[1] - else: + if sys.argv[1] == '-h': help() - if not (input_filename[-4:] == '.txt' or input_filename[-3:] == '.py'): + elif not (sys.argv[1][-4:] == '.txt' or sys.argv[1][-3:] == '.py'): print ('\nBad input file extension... exiting.') usage() - if len(sys.argv)==2: - order_priority = default_sort_choice - print ('\nSecond parameter missing: choosing to order by %s.' % font_bold(order_priority)) + else: + inputfile = sys.argv[1] + if len(sys.argv) == 2: + sort_priority = default_sort_choice + print ('\nSecond parameter missing: choosing to order by %s.' % font_bold(sort_priority)) elif len(sys.argv)==3: - order_priority = sys.argv[2] - if order_priority not in sort_choices: - print('\nWrong order_priority... exiting.') + sort_priority = sys.argv[2] + if sort_priority not in sort_choices: + print('\nWrong sort_priority... exiting.') usage() - return (input_filename, order_priority) + return (inputfile, sort_priority) def check_prefix(prop): @@ -163,11 +163,11 @@ def get_props_from_py(input_filename): rna_api = __import__(input_filename[:-3]).rna_api props_length_max = [0 for i in rna_api[0]] # this way if the vector will take more elements we are safe - for props in rna_api: + for index,props in enumerate(rna_api): [comment, changed, bclass, bfrom, bto, kwcheck, btype, description] = props kwcheck = check_prefix(bto) # keyword-check changed = check_if_changed(bfrom, bto) # changed? - props=[comment, changed, bclass, bfrom, bto, kwcheck, btype, description] + rna_api[index] = [comment, changed, bclass, bfrom, bto, kwcheck, btype, description] props_length = list(map(len,props)) # lengths props_length_max = list(map(max,zip(props_length_max,props_length))) # max lengths return (rna_api,props_length_max) @@ -198,14 +198,7 @@ def sort(props_list, sort_priority): return props_list -def write_files(props_list, props_length_max): - """ - Writes in 3 files: - * output_filename_txt: formatted as txt input file - * output_filename_py: formatted for readability (could be worked on) - * rna_api.py: unformatted, just as final output - """ - +def file_basename(input_filename): # if needed will use os.path if input_filename[-4:] == '.txt': if input_filename[-9:] == '_work.txt': @@ -217,10 +210,20 @@ def write_files(props_list, props_length_max): base_filename = input_filename[:-8] else: base_filename = input_filename[:-3] + return base_filename + + +def write_files(basename, props_list, props_length_max): + """ + Writes in 3 files: + * output_filename_work.txt: formatted as txt input file (can be edited) + * output_filename_work.py: formatted for readability (can be edited) + * rna_api.py: unformatted, just as final output + """ f_rna = open("rna_api.py",'w') - f_txt = open(base_filename+'_work.txt','w') - f_py = open(base_filename+'_work.py','w') + f_txt = open(basename + '_work.txt','w') + f_py = open(basename + '_work.py','w') # reminder: props=[comment, changed, bclass, bfrom, bto, kwcheck, btype, description] # [comment *] ToolSettings.snap_align_rotation -> use_snap_align_rotation: boolean [Align rotation with the snapping target] @@ -249,7 +252,6 @@ def write_files(props_list, props_length_max): def main(): - global input_filename global sort_choices, default_sort_choice global kw_prefixes, kw @@ -261,7 +263,9 @@ def main(): input_filename, sort_priority = check_commandline() props_list,props_length_max = get_props(input_filename) props_list = sort(props_list,sort_priority) - write_files(props_list,props_length_max) + + output_basename = file_basename(input_filename) + write_files(output_basename, props_list,props_length_max) if __name__=='__main__': From 7c859b305f5dc9aef35c075e3a7029dadff688df Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 1 Jul 2010 11:58:48 +0000 Subject: [PATCH 252/674] fix for use of uninitialized memory with opengl render. --- source/blender/editors/render/render_opengl.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/render/render_opengl.c b/source/blender/editors/render/render_opengl.c index 7cc074a74fd..5881d50c309 100644 --- a/source/blender/editors/render/render_opengl.c +++ b/source/blender/editors/render/render_opengl.c @@ -233,7 +233,7 @@ static int screen_opengl_render_init(bContext *C, wmOperator *op) rr= RE_AcquireResultWrite(oglrender->re); if(rr->rectf==NULL) - rr->rectf= MEM_mallocN(sizeof(float)*4*sizex*sizey, "32 bits rects"); + rr->rectf= MEM_callocN(sizeof(float)*4*sizex*sizey, "screen_opengl_render_init rect"); RE_ReleaseResult(oglrender->re); return 1; @@ -402,9 +402,10 @@ static int screen_opengl_render_modal(bContext *C, wmOperator *op, wmEvent *even return OPERATOR_RUNNING_MODAL; } - ret= screen_opengl_render_anim_step(C, op); - + /* run first because screen_opengl_render_anim_step can free oglrender */ WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, oglrender->scene); + + ret= screen_opengl_render_anim_step(C, op); /* stop at the end or on error */ if(ret == 0) { From 0fa0d12ff00e311e330cc19cb5478be27ab67e06 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 1 Jul 2010 13:21:40 +0000 Subject: [PATCH 253/674] fix for building with WITH_RAYOPTIMIZATION --- CMakeLists.txt | 4 ++++ source/blender/render/CMakeLists.txt | 1 + 2 files changed, 5 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index b4272d5f118..fedca9ba1ba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -304,6 +304,10 @@ IF(UNIX AND NOT APPLE) SET(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing -Wno-char-subscripts") + IF(WITH_RAYOPTIMIZATION) + SET(PLATFORM_CFLAGS " -msse ${PLATFORM_CFLAGS}") + ENDIF(WITH_RAYOPTIMIZATION) + SET(PLATFORM_LINKFLAGS "-pthread") # Better warnings diff --git a/source/blender/render/CMakeLists.txt b/source/blender/render/CMakeLists.txt index 5dc89af5632..89bdad7c6c7 100644 --- a/source/blender/render/CMakeLists.txt +++ b/source/blender/render/CMakeLists.txt @@ -56,6 +56,7 @@ ENDIF(APPLE) IF(WITH_RAYOPTIMIZATION) ADD_DEFINITIONS(-D__SSE__) + ADD_DEFINITIONS(-D__MMX__) ENDIF(WITH_RAYOPTIMIZATION) #TODO From 742c4eb1d11608c532fc8491119aec4e3d734971 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 1 Jul 2010 13:25:49 +0000 Subject: [PATCH 254/674] enable external pointcache for smoke in the UI. --- release/scripts/ui/properties_physics_common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/ui/properties_physics_common.py b/release/scripts/ui/properties_physics_common.py index 350b17e6e9f..5b4c07642b4 100644 --- a/release/scripts/ui/properties_physics_common.py +++ b/release/scripts/ui/properties_physics_common.py @@ -38,7 +38,7 @@ def point_cache_ui(self, context, cache, enabled, cachetype): col.operator("ptcache.remove", icon='ZOOMOUT', text="") row = layout.row() - if cachetype in {'PSYS', 'HAIR'}: + if cachetype in {'PSYS', 'HAIR', 'SMOKE'}: row.prop(cache, "external") if cache.external: From 6cc4160df9ce024319ace2db2f0200835603f473 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 1 Jul 2010 14:08:41 +0000 Subject: [PATCH 255/674] adding a new sequence strip uses the active strips path when available. --- source/blender/blenlib/intern/bpath.c | 3 -- .../editors/space_sequencer/sequencer_add.c | 28 ++++++++++++++++--- source/blender/makesdna/DNA_sequence_types.h | 2 ++ 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/source/blender/blenlib/intern/bpath.c b/source/blender/blenlib/intern/bpath.c index a56cbb65538..fbe71019379 100644 --- a/source/blender/blenlib/intern/bpath.c +++ b/source/blender/blenlib/intern/bpath.c @@ -62,9 +62,6 @@ /* for sequence */ //XXX #include "BSE_sequence.h" //XXX define below from BSE_sequence.h - otherwise potentially odd behaviour -#define SEQ_HAS_PATH(_seq) ( (_seq)->type==SEQ_MOVIE || (_seq)->type==SEQ_IMAGE || (_seq)->type==SEQ_SOUND ) - - #define FILE_MAX 240 diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index 1a56cb6d683..9b69cbd0c8a 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -121,7 +121,18 @@ static void sequencer_generic_invoke_xy__internal(bContext *C, wmOperator *op, w if ((flag & SEQPROP_ENDFRAME) && RNA_property_is_set(op->ptr, "frame_end")==0) RNA_int_set(op->ptr, "frame_end", (int)mval_v2d[0] + 25); // XXX arbitary but ok for now. - + + if(RNA_struct_find_property(op->ptr, "filepath")) { + Scene *scene= CTX_data_scene(C); + Sequence *last_seq= seq_active_get(scene); + if(last_seq && last_seq->strip && SEQ_HAS_PATH(last_seq)) { + RNA_string_set(op->ptr, "filepath", last_seq->strip->dir); + } + // // TODO + // else { + // RNA_string_set(op->ptr, "filepath", ed->act_imagedir); + // } + } } static void seq_load_operator_info(SeqLoadInfo *seq_load, wmOperator *op) @@ -318,7 +329,10 @@ static int sequencer_add_movie_strip_invoke(bContext *C, wmOperator *op, wmEvent RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); sequencer_generic_invoke_xy__internal(C, op, event, 0); - return WM_operator_filesel(C, op, event); + + WM_event_add_fileselect(C, op); + return OPERATOR_RUNNING_MODAL; + //return sequencer_add_movie_strip_exec(C, op); } @@ -363,7 +377,10 @@ static int sequencer_add_sound_strip_invoke(bContext *C, wmOperator *op, wmEvent RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); sequencer_generic_invoke_xy__internal(C, op, event, 0); - return WM_operator_filesel(C, op, event); + + WM_event_add_fileselect(C, op); + return OPERATOR_RUNNING_MODAL; + //return sequencer_add_sound_strip_exec(C, op); } @@ -457,7 +474,10 @@ static int sequencer_add_image_strip_invoke(bContext *C, wmOperator *op, wmEvent RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); sequencer_generic_invoke_xy__internal(C, op, event, SEQPROP_ENDFRAME); - return WM_operator_filesel(C, op, event); + + WM_event_add_fileselect(C, op); + return OPERATOR_RUNNING_MODAL; + //return sequencer_add_image_strip_exec(C, op); } diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h index 84d8e8c8e67..03a3b75aa1e 100644 --- a/source/blender/makesdna/DNA_sequence_types.h +++ b/source/blender/makesdna/DNA_sequence_types.h @@ -324,5 +324,7 @@ typedef struct SpeedControlVars { otherwise, you can't really blend, right :) !) */ +#define SEQ_HAS_PATH(_seq) ( (_seq)->type==SEQ_MOVIE || (_seq)->type==SEQ_IMAGE || (_seq)->type==SEQ_SOUND ) + #endif From 93bdba9b21d2e7dd860bff486e81dcb0bc9c3377 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 1 Jul 2010 15:12:10 +0000 Subject: [PATCH 256/674] Fix for crash with PBVH in background mode, patch by Campbell. --- source/blender/blenlib/intern/pbvh.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c index 92e2c88e8a1..82e2090c432 100644 --- a/source/blender/blenlib/intern/pbvh.c +++ b/source/blender/blenlib/intern/pbvh.c @@ -30,6 +30,7 @@ #include "BKE_DerivedMesh.h" #include "BKE_mesh.h" /* for mesh_calc_normals */ +#include "BKE_global.h" /* for mesh_calc_normals */ #include "gpu_buffers.h" @@ -350,12 +351,14 @@ static void build_mesh_leaf_node(PBVH *bvh, PBVHNode *node) if(node->face_vert_indices[i] < 0) node->face_vert_indices[i]= -node->face_vert_indices[i] + node->uniq_verts - 1; - node->draw_buffers = - GPU_build_mesh_buffers(map, bvh->verts, bvh->faces, + if(!G.background) { + node->draw_buffers = + GPU_build_mesh_buffers(map, bvh->verts, bvh->faces, node->prim_indices, node->totprim, node->vert_indices, node->uniq_verts, node->uniq_verts + node->face_verts); + } node->flag |= PBVH_UpdateDrawBuffers; @@ -364,10 +367,11 @@ static void build_mesh_leaf_node(PBVH *bvh, PBVHNode *node) static void build_grids_leaf_node(PBVH *bvh, PBVHNode *node) { - node->draw_buffers = - GPU_build_grid_buffers(bvh->grids, node->prim_indices, + if(!G.background) { + node->draw_buffers = + GPU_build_grid_buffers(bvh->grids, node->prim_indices, node->totprim, bvh->gridsize); - + } node->flag |= PBVH_UpdateDrawBuffers; } From 51fd10a1b580dc91f7ef6172ac859ec5d1dcda6f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 1 Jul 2010 19:28:45 +0000 Subject: [PATCH 257/674] adding image strips wasnt working, use the 'directory' component of the file selector rather then the full 'filepath' to fix this. added flags for filename/filepath/directory args to WM_operator_properties_filesel(). --- source/blender/editors/curve/editfont.c | 4 +-- .../blender/editors/object/object_modifier.c | 2 +- .../blender/editors/render/render_shading.c | 2 +- source/blender/editors/screen/screendump.c | 2 +- source/blender/editors/sound/sound_ops.c | 2 +- .../editors/space_buttons/buttons_ops.c | 2 +- .../blender/editors/space_graph/graph_edit.c | 2 +- .../blender/editors/space_image/image_ops.c | 6 ++-- source/blender/editors/space_info/info_ops.c | 2 +- source/blender/editors/space_node/node_edit.c | 2 +- .../editors/space_sequencer/sequencer_add.c | 13 ++++---- source/blender/editors/space_text/text_ops.c | 4 +-- source/blender/windowmanager/WM_api.h | 9 ++++++ .../windowmanager/intern/wm_operators.c | 30 +++++++++++-------- 14 files changed, 49 insertions(+), 33 deletions(-) diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c index 3a5f185c550..7d5af54b640 100644 --- a/source/blender/editors/curve/editfont.c +++ b/source/blender/editors/curve/editfont.c @@ -417,7 +417,7 @@ void FONT_OT_file_paste(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE, FILE_SPECIAL, FILE_OPENFILE, 0); + WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH); } /******************* paste buffer operator ********************/ @@ -1732,7 +1732,7 @@ void FONT_OT_open(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|FTFONTFILE, FILE_SPECIAL, FILE_OPENFILE, 0); + WM_operator_properties_filesel(ot, FOLDERFILE|FTFONTFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH); } /******************* delete operator *********************/ diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index 56742413358..ec142d23a1f 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -1081,7 +1081,7 @@ void OBJECT_OT_multires_external_save(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|BTXFILE, FILE_SPECIAL, FILE_SAVE, FILE_RELPATH); + WM_operator_properties_filesel(ot, FOLDERFILE|BTXFILE, FILE_SPECIAL, FILE_SAVE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); edit_modifier_properties(ot); } diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c index 006d98ce8b7..4a947569e66 100644 --- a/source/blender/editors/render/render_shading.c +++ b/source/blender/editors/render/render_shading.c @@ -913,7 +913,7 @@ void TEXTURE_OT_envmap_save(wmOperatorType *ot) /* properties */ //RNA_def_enum(ot->srna, "file_type", image_file_type_items, R_PNG, "File Type", "File type to save image as."); - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_SAVE, FILE_RELPATH); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_SAVE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); } static int envmap_clear_exec(bContext *C, wmOperator *op) diff --git a/source/blender/editors/screen/screendump.c b/source/blender/editors/screen/screendump.c index 5f592aeba52..d5cd8285515 100644 --- a/source/blender/editors/screen/screendump.c +++ b/source/blender/editors/screen/screendump.c @@ -171,7 +171,7 @@ void SCREEN_OT_screenshot(wmOperatorType *ot) ot->flag= 0; - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_SAVE, 0); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_SAVE, WM_FILESEL_FILEPATH); RNA_def_boolean(ot->srna, "full", 1, "Full Screen", ""); } diff --git a/source/blender/editors/sound/sound_ops.c b/source/blender/editors/sound/sound_ops.c index f362c584585..0d2dfd75863 100644 --- a/source/blender/editors/sound/sound_ops.c +++ b/source/blender/editors/sound/sound_ops.c @@ -150,7 +150,7 @@ void SOUND_OT_open(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, FILE_RELPATH); + WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_RELPATH); RNA_def_boolean(ot->srna, "cache", FALSE, "Cache", "Cache the sound in memory."); } diff --git a/source/blender/editors/space_buttons/buttons_ops.c b/source/blender/editors/space_buttons/buttons_ops.c index 96cf79d880f..765805aa65d 100644 --- a/source/blender/editors/space_buttons/buttons_ops.c +++ b/source/blender/editors/space_buttons/buttons_ops.c @@ -152,6 +152,6 @@ void BUTTONS_OT_file_browse(wmOperatorType *ot) ot->cancel= file_browse_cancel; /* properties */ - WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, FILE_RELPATH); + WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); } diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index a4a72ad2cd4..6249edc1090 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -1117,7 +1117,7 @@ void GRAPH_OT_sound_bake (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, 0); + WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH); RNA_def_float(ot->srna, "low", 0.0f, 0.0, 100000.0, "Lowest frequency", "", 0.1, 1000.00); RNA_def_float(ot->srna, "high", 100000.0, 0.0, 100000.0, "Highest frequency", "", 0.1, 1000.00); RNA_def_float(ot->srna, "attack", 0.005, 0.0, 2.0, "Attack time", "", 0.01, 0.1); diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index 1787faff327..48f9e7e458e 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -755,7 +755,7 @@ void IMAGE_OT_open(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, FILE_RELPATH); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); } /******************** replace image operator ********************/ @@ -810,7 +810,7 @@ void IMAGE_OT_replace(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, FILE_RELPATH); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); } /******************** save image as operator ********************/ @@ -998,7 +998,7 @@ void IMAGE_OT_save_as(wmOperatorType *ot) /* properties */ RNA_def_enum(ot->srna, "file_type", image_file_type_items, R_PNG, "File Type", "File type to save image as."); - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_SAVE, FILE_RELPATH); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_SAVE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); RNA_def_boolean(ot->srna, "copy", 0, "Copy", "Create a new image file without modifying the current image in blender"); } diff --git a/source/blender/editors/space_info/info_ops.c b/source/blender/editors/space_info/info_ops.c index 2a1a20aa0d7..62e82f83e58 100644 --- a/source/blender/editors/space_info/info_ops.c +++ b/source/blender/editors/space_info/info_ops.c @@ -299,7 +299,7 @@ void FILE_OT_find_missing_files(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, 0); + WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH); } /********************* report box operator *********************/ diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index dd838a67afa..b5ed2f4d8a7 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -2312,7 +2312,7 @@ void NODE_OT_add_file(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, 0); //XXX TODO, relative_path + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH); //XXX TODO, relative_path RNA_def_string(ot->srna, "name", "Image", 24, "Name", "Datablock name to assign."); } diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index 9b69cbd0c8a..508521c972e 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -147,7 +147,10 @@ static void seq_load_operator_info(SeqLoadInfo *seq_load, wmOperator *op) RNA_string_get(op->ptr, "name", seq_load->name+2); - RNA_string_get(op->ptr, "filepath", seq_load->path); /* full path, file is set by the caller */ + if(RNA_struct_find_property(op->ptr, "filepath")) + RNA_string_get(op->ptr, "filepath", seq_load->path); /* full path, file is set by the caller */ + else if (RNA_struct_find_property(op->ptr, "filepath")) + RNA_string_get(op->ptr, "directory", seq_load->path); /* full path, file is set by the caller */ if (RNA_struct_find_property(op->ptr, "frame_end")) { seq_load->end_frame = RNA_int_get(op->ptr, "frame_end"); @@ -354,7 +357,7 @@ void SEQUENCER_OT_movie_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, FILE_RELPATH); + WM_operator_properties_filesel(ot, FOLDERFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES); RNA_def_boolean(ot->srna, "sound", TRUE, "Sound", "Load sound with the movie"); } @@ -402,7 +405,7 @@ void SEQUENCER_OT_sound_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE, FILE_SPECIAL, FILE_OPENFILE, FILE_RELPATH); + WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES); RNA_def_boolean(ot->srna, "cache", FALSE, "Cache", "Cache the sound in memory."); } @@ -499,7 +502,7 @@ void SEQUENCER_OT_image_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, FILE_RELPATH); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_ENDFRAME|SEQPROP_FILES); } @@ -651,7 +654,7 @@ void SEQUENCER_OT_effect_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, FILE_RELPATH); + WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_ENDFRAME); RNA_def_enum(ot->srna, "type", sequencer_prop_effect_types, SEQ_CROSS, "Type", "Sequencer effect type"); RNA_def_float_vector(ot->srna, "color", 3, NULL, 0.0f, 1.0f, "Color", "Initialize the strip with this color (only used when type='COLOR')", 0.0f, 1.0f); diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c index c90d257ee43..a684c4dce0e 100644 --- a/source/blender/editors/space_text/text_ops.c +++ b/source/blender/editors/space_text/text_ops.c @@ -295,7 +295,7 @@ void TEXT_OT_open(wmOperatorType *ot) ot->flag= OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE|PYSCRIPTFILE, FILE_SPECIAL, FILE_OPENFILE, 0); //XXX TODO, relative_path + WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE|PYSCRIPTFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH); //XXX TODO, relative_path RNA_def_boolean(ot->srna, "internal", 0, "Make internal", "Make text file internal after loading"); } @@ -542,7 +542,7 @@ void TEXT_OT_save_as(wmOperatorType *ot) ot->poll= text_edit_poll; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE|PYSCRIPTFILE, FILE_SPECIAL, FILE_SAVE, 0); //XXX TODO, relative_path + WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE|PYSCRIPTFILE, FILE_SPECIAL, FILE_SAVE, WM_FILESEL_FILEPATH); //XXX TODO, relative_path } /******************* run script operator *********************/ diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index dbbe1312f0a..235be838f63 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -234,6 +234,15 @@ void WM_operator_properties_select_all(struct wmOperatorType *ot); #define SEL_DESELECT 2 #define SEL_INVERT 3 + +/* flags for WM_operator_properties_filesel */ +#define WM_FILESEL_RELPATH (1 << 0) + +#define WM_FILESEL_DIRECTORY (1 << 1) +#define WM_FILESEL_FILENAME (1 << 2) +#define WM_FILESEL_FILEPATH (1 << 3) + + /* operator as a python command (resultuing string must be free'd) */ char *WM_operator_pystring(struct bContext *C, struct wmOperatorType *ot, struct PointerRNA *opptr, int all_args); void WM_operator_bl_idname(char *to, const char *from); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 058c39749a6..daf1c4ecb33 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -788,7 +788,15 @@ void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type, { PropertyRNA *prop; - RNA_def_string_file_path(ot->srna, "filepath", "", FILE_MAX, "File Path", "Path to file"); + + if(flag & WM_FILESEL_FILEPATH) + RNA_def_string_file_path(ot->srna, "filepath", "", FILE_MAX, "File Path", "Path to file"); + + if(flag & WM_FILESEL_DIRECTORY) + RNA_def_string_dir_path(ot->srna, "directory", "", FILE_MAX, "Directory", "Directory of the file"); + + if(flag & WM_FILESEL_FILENAME) + RNA_def_string_file_name(ot->srna, "filename", "", FILE_MAX, "File Name", "Name of the file"); if (action == FILE_SAVE) { prop= RNA_def_boolean(ot->srna, "check_existing", 1, "Check Existing", "Check and warn on overwriting existing files"); @@ -821,7 +829,7 @@ void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type, FILE_LOADLIB, FILE_SPECIAL); RNA_def_property_flag(prop, PROP_HIDDEN); - if(flag & FILE_RELPATH) + if(flag & WM_FILESEL_RELPATH) RNA_def_boolean(ot->srna, "relative_path", 0, "Relative Path", "Select the file relative to the blend file"); } @@ -1473,7 +1481,7 @@ static void WM_OT_open_mainfile(wmOperatorType *ot) ot->exec= wm_open_mainfile_exec; ot->poll= WM_operator_winactive; - WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER, FILE_OPENFILE, 0); + WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER, FILE_OPENFILE, WM_FILESEL_FILEPATH); RNA_def_boolean(ot->srna, "load_ui", 1, "Load UI", "Load user interface setup in the .blend file"); RNA_def_boolean(ot->srna, "use_scripts", 1, "Trusted Source", "Allow blend file execute scripts automatically, default available from system preferences"); @@ -1644,16 +1652,13 @@ static void WM_OT_link_append(wmOperatorType *ot) ot->flag |= OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_LOADLIB, FILE_OPENFILE, FILE_RELPATH); + WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_LOADLIB, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_DIRECTORY|WM_FILESEL_FILENAME| WM_FILESEL_RELPATH); RNA_def_boolean(ot->srna, "link", 1, "Link", "Link the objects or datablocks rather than appending"); RNA_def_boolean(ot->srna, "autoselect", 1, "Select", "Select the linked objects"); RNA_def_boolean(ot->srna, "active_layer", 1, "Active Layer", "Put the linked objects on the active layer"); RNA_def_boolean(ot->srna, "instance_groups", 1, "Instance Groups", "Create instances for each group as a DupliGroup"); - RNA_def_string_file_name(ot->srna, "filename", "", FILE_MAX, "File Name", "Name of the file"); - RNA_def_string_dir_path(ot->srna, "directory", "", FILE_MAX, "Directory", "Directory of the file"); - RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", ""); } @@ -1674,7 +1679,6 @@ static int wm_recover_last_session_exec(bContext *C, wmOperator *op) WM_read_file(C, filename, op->reports); G.fileflags &= ~G_FILE_RECOVER; - return OPERATOR_FINISHED; } @@ -1731,7 +1735,7 @@ static void WM_OT_recover_auto_save(wmOperatorType *ot) ot->invoke= wm_recover_auto_save_invoke; ot->poll= WM_operator_winactive; - WM_operator_properties_filesel(ot, BLENDERFILE, FILE_BLENDER, FILE_OPENFILE, 0); + WM_operator_properties_filesel(ot, BLENDERFILE, FILE_BLENDER, FILE_OPENFILE, WM_FILESEL_FILEPATH); } /* *************** save file as **************** */ @@ -1814,7 +1818,7 @@ static void WM_OT_save_as_mainfile(wmOperatorType *ot) ot->exec= wm_save_as_mainfile_exec; ot->poll= WM_operator_winactive; - WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER, FILE_SAVE, 0); + WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER, FILE_SAVE, WM_FILESEL_FILEPATH); RNA_def_boolean(ot->srna, "compress", 0, "Compress", "Write compressed .blend file"); RNA_def_boolean(ot->srna, "relative_remap", 0, "Remap Relative", "Remap relative paths when saving in a different directory"); } @@ -1863,7 +1867,7 @@ static void WM_OT_save_mainfile(wmOperatorType *ot) ot->exec= wm_save_as_mainfile_exec; ot->poll= NULL; - WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER, FILE_SAVE, 0); + WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER, FILE_SAVE, WM_FILESEL_FILEPATH); RNA_def_boolean(ot->srna, "compress", 0, "Compress", "Write compressed .blend file"); RNA_def_boolean(ot->srna, "relative_remap", 0, "Remap Relative", "Remap relative paths when saving in a different directory"); } @@ -1912,7 +1916,7 @@ static void WM_OT_collada_export(wmOperatorType *ot) ot->exec= wm_collada_export_exec; ot->poll= WM_operator_winactive; - WM_operator_properties_filesel(ot, FOLDERFILE|COLLADAFILE, FILE_BLENDER, FILE_SAVE, 0); + WM_operator_properties_filesel(ot, FOLDERFILE|COLLADAFILE, FILE_BLENDER, FILE_SAVE, WM_FILESEL_FILEPATH); } /* function used for WM_OT_save_mainfile too */ @@ -1940,7 +1944,7 @@ static void WM_OT_collada_import(wmOperatorType *ot) ot->exec= wm_collada_import_exec; ot->poll= WM_operator_winactive; - WM_operator_properties_filesel(ot, FOLDERFILE|COLLADAFILE, FILE_BLENDER, FILE_OPENFILE, 0); + WM_operator_properties_filesel(ot, FOLDERFILE|COLLADAFILE, FILE_BLENDER, FILE_OPENFILE, WM_FILESEL_FILEPATH); } #endif From 49b8bb6f7f68b93485a7dda0020cab046bd90f06 Mon Sep 17 00:00:00 2001 From: Diego Borghetti Date: Thu, 1 Jul 2010 19:29:27 +0000 Subject: [PATCH 258/674] Fix new zoom in/out values for nodes in old files. The problem was a missing update to the ARegion and the first space, that is why old file don't get the new zoom in/out values. --- source/blender/blenloader/intern/readfile.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 700a3c2d77b..e670d78ff77 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10863,11 +10863,27 @@ static void do_versions(FileData *fd, Library *lib, Main *main) for (sl= sa->spacedata.first; sl; sl= sl->next) { if (sl->spacetype == SPACE_NODE) { SpaceNode *snode= (SpaceNode *)sl; - + ListBase *regionbase; + ARegion *ar; + + if (sl == sa->spacedata.first) + regionbase = &sa->regionbase; + else + regionbase = &sl->regionbase; + if (snode->v2d.minzoom > 0.09f) snode->v2d.minzoom= 0.09f; if (snode->v2d.maxzoom < 2.31f) snode->v2d.maxzoom= 2.31f; + + for (ar= regionbase->first; ar; ar= ar->next) { + if (ar->regiontype == RGN_TYPE_WINDOW) { + if (ar->v2d.minzoom > 0.09f) + ar->v2d.minzoom= 0.09f; + if (ar->v2d.maxzoom < 2.31f) + ar->v2d.maxzoom= 2.31f; + } + } } else if (sl->spacetype == SPACE_TIME) { SpaceTime *stime= (SpaceTime *)sl; From 6bdc4c72d4dc110d111d364d82039baa64a1f2c2 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Fri, 2 Jul 2010 03:11:10 +0000 Subject: [PATCH 259/674] revert previous auto-naming change for meta elements, broke the name-based grouping. --- source/blender/editors/metaball/mball_edit.c | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/source/blender/editors/metaball/mball_edit.c b/source/blender/editors/metaball/mball_edit.c index 69735d7b041..d937b717ee1 100644 --- a/source/blender/editors/metaball/mball_edit.c +++ b/source/blender/editors/metaball/mball_edit.c @@ -123,23 +123,17 @@ MetaElem *add_metaball_primitive(bContext *C, float mat[4][4], int type, int new case MB_BALL: ml->type = MB_BALL; ml->expx= ml->expy= ml->expz= 1.0; - - rename_id((ID *)obedit, "Meta Ball"); - rename_id((ID *)obedit->data, "Meta Ball"); + break; case MB_TUBE: ml->type = MB_TUBE; ml->expx= ml->expy= ml->expz= 1.0; - - rename_id((ID *)obedit, "Meta Tube"); - rename_id((ID *)obedit->data, "Meta Tube"); + break; case MB_PLANE: ml->type = MB_PLANE; ml->expx= ml->expy= ml->expz= 1.0; - - rename_id((ID *)obedit, "Meta Plane"); - rename_id((ID *)obedit->data, "Meta Plane"); + break; case MB_ELIPSOID: ml->type = MB_ELIPSOID; @@ -147,15 +141,11 @@ MetaElem *add_metaball_primitive(bContext *C, float mat[4][4], int type, int new ml->expy= 0.8f; ml->expz= 1.0; - rename_id((ID *)obedit, "Meta Ellipsoid"); - rename_id((ID *)obedit->data, "Meta Ellipsoid"); break; case MB_CUBE: ml->type = MB_CUBE; ml->expx= ml->expy= ml->expz= 1.0; - - rename_id((ID *)obedit, "Meta Cube"); - rename_id((ID *)obedit->data, "Meta Cube"); + break; default: break; From 643ec7a12f7f441b0c74430cbfd4beee3c7cc9be Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 2 Jul 2010 11:26:12 +0000 Subject: [PATCH 260/674] Fix #22690: gestures were not working correct after inbetween mousemove changes, also forgot to update armature sketching operator. --- source/blender/editors/armature/editarmature_sketch.c | 1 + source/blender/windowmanager/intern/wm_operators.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/source/blender/editors/armature/editarmature_sketch.c b/source/blender/editors/armature/editarmature_sketch.c index fdc89936029..a1af68458f6 100644 --- a/source/blender/editors/armature/editarmature_sketch.c +++ b/source/blender/editors/armature/editarmature_sketch.c @@ -2679,6 +2679,7 @@ static int sketch_draw_modal(bContext *C, wmOperator *op, wmEvent *event, short RNA_boolean_set(op->ptr, "snap", snap); break; case MOUSEMOVE: + case INBETWEEN_MOUSEMOVE: dd->mval[0] = event->mval[0]; dd->mval[1] = event->mval[1]; sk_draw_stroke(C, sketch, stk, dd, snap); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index daf1c4ecb33..8960d3b633f 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -2268,6 +2268,7 @@ static void tweak_gesture_modal(bContext *C, wmEvent *event) switch(event->type) { case MOUSEMOVE: + case INBETWEEN_MOUSEMOVE: wm_subwindow_getorigin(window, gesture->swinid, &sx, &sy); @@ -2398,6 +2399,7 @@ int WM_gesture_lasso_modal(bContext *C, wmOperator *op, wmEvent *event) switch(event->type) { case MOUSEMOVE: + case INBETWEEN_MOUSEMOVE: wm_gesture_tag_redraw(C); From 213a45bed83bcb8afdc8ada8fd69b229a4a522f9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 2 Jul 2010 17:44:57 +0000 Subject: [PATCH 261/674] changes to file selector so 'directory' property from an operator is used when available. also made some other changes to the path functions used. --- source/blender/editors/space_file/filesel.c | 36 +++++++++++++-------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c index abb3a6a7a35..086d4f9cce2 100644 --- a/source/blender/editors/space_file/filesel.c +++ b/source/blender/editors/space_file/filesel.c @@ -102,7 +102,6 @@ FileSelectParams* ED_fileselect_get_params(struct SpaceFile *sfile) short ED_fileselect_set_params(SpaceFile *sfile) { - char name[FILE_MAX], dir[FILE_MAX], file[FILE_MAX]; FileSelectParams *params; wmOperator *op = sfile->op; @@ -110,10 +109,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_strncpy(sfile->params->dir, G.sce, sizeof(sfile->params->dir)); - BLI_split_dirfile(G.sce, dir, file); - BLI_strncpy(sfile->params->file, file, sizeof(sfile->params->file)); - BLI_make_file_string(G.sce, sfile->params->dir, dir, ""); /* XXX needed ? - also solve G.sce */ + BLI_split_dirfile(G.sce, sfile->params->dir, sfile->params->file); } params = sfile->params; @@ -127,19 +123,33 @@ short ED_fileselect_set_params(SpaceFile *sfile) else params->type = FILE_SPECIAL; - if (RNA_property_is_set(op->ptr, "filepath")) { + if (RNA_struct_find_property(op->ptr, "filepath") && RNA_property_is_set(op->ptr, "filepath")) { + char name[FILE_MAX]; RNA_string_get(op->ptr, "filepath", name); if (params->type == FILE_LOADLIB) { BLI_strncpy(params->dir, name, sizeof(params->dir)); - BLI_cleanup_dir(G.sce, params->dir); - } else { - /* if operator has path set, use it, otherwise keep the last */ - BLI_path_abs(name, G.sce); - BLI_split_dirfile(name, dir, file); - BLI_strncpy(params->file, file, sizeof(params->file)); - BLI_make_file_string(G.sce, params->dir, dir, ""); /* XXX needed ? - also solve G.sce */ + sfile->params->file[0]= '\0'; + } + else { + BLI_split_dirfile(name, sfile->params->dir, sfile->params->file); } } + else { + if (RNA_struct_find_property(op->ptr, "directory") && RNA_property_is_set(op->ptr, "directory")) { + RNA_string_get(op->ptr, "directory", params->dir); + sfile->params->file[0]= '\0'; + } + + if (RNA_struct_find_property(op->ptr, "filename") && RNA_property_is_set(op->ptr, "filename")) { + RNA_string_get(op->ptr, "filename", params->file); + } + } + + if(params->dir[0]) { + BLI_cleanup_dir(G.sce, params->dir); + BLI_path_abs(params->dir, G.sce); + } + params->filter = 0; if(RNA_struct_find_property(op->ptr, "filter_blender")) params->filter |= RNA_boolean_get(op->ptr, "filter_blender") ? BLENDERFILE : 0; From 15be7b215f0ea53e68e114430267823e2b3fd37d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 2 Jul 2010 20:09:42 +0000 Subject: [PATCH 262/674] - changes to the sequencer so new strips use the data name. - removed the name option for the sequence operators. --- source/blender/blenkernel/intern/sequencer.c | 11 +-- source/blender/blenlib/intern/path_util.c | 12 +-- .../editors/space_sequencer/sequencer_add.c | 87 +++++++++++-------- source/blender/python/intern/bpy_interface.c | 2 + .../windowmanager/intern/wm_event_system.c | 6 +- 5 files changed, 63 insertions(+), 55 deletions(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 4241f481c30..ddbe748ede9 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -3909,7 +3909,7 @@ int seq_active_pair_get(Scene *scene, Sequence **seq_act, Sequence **seq_other) void seq_load_apply(Scene *scene, Sequence *seq, SeqLoadInfo *seq_load) { if(seq) { - strcpy(seq->name, seq_load->name); + BLI_strncpy(seq->name+2, seq_load->name, sizeof(seq->name)-2); seqbase_unique_name_recursive(&scene->ed->seqbase, seq); if(seq_load->flag & SEQ_LOAD_FRAME_ADVANCE) { @@ -3963,8 +3963,6 @@ Sequence *sequencer_add_image_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo seq = alloc_sequence(seqbasep, seq_load->start_frame, seq_load->channel); seq->type= SEQ_IMAGE; - BLI_strncpy(seq->name+2, "Image", SEQ_NAME_MAXSTR-2); - seqbase_unique_name_recursive(&scene->ed->seqbase, seq); /* basic defaults */ seq->strip= strip= MEM_callocN(sizeof(Strip), "strip"); @@ -3972,8 +3970,8 @@ Sequence *sequencer_add_image_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo strip->len = seq->len = seq_load->len ? seq_load->len : 1; strip->us= 1; strip->stripdata= se= MEM_callocN(seq->len*sizeof(StripElem), "stripelem"); - BLI_split_dirfile(seq_load->path, strip->dir, se->name); - + BLI_strncpy(strip->dir, seq_load->path, sizeof(strip->dir)); + seq_load_apply(scene, seq, seq_load); return seq; @@ -4085,6 +4083,9 @@ Sequence *sequencer_add_movie_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo seq_load->channel--; } + if(seq_load->name[0] == '\0') + BLI_strncpy(seq_load->name, se->name, sizeof(seq_load->name)); + /* can be NULL */ seq_load_apply(scene, seq, seq_load); diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 045ac5a013f..2d5234aee34 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -107,20 +107,14 @@ int BLI_stringdec(const char *string, char *head, char *tail, unsigned short *nu if (found) break; } } - if (found){ + if (found) { if (tail) strcpy(tail, &string[nume+1]); - if (head) { - strcpy(head,string); - head[nums]=0; - } + if (head) BLI_strncpy(head, string, nums); if (numlen) *numlen = nume-nums+1; return ((int)atoi(&(string[nums]))); } if (tail) strcpy(tail, string + len); - if (head) { - strncpy(head, string, len); - head[len] = '\0'; - } + if (head) BLI_strncpy(head, string, nums); if (numlen) *numlen=0; return 0; } diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index 508521c972e..cfcc3b6e81d 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -86,8 +86,6 @@ static void sequencer_generic_props__internal(wmOperatorType *ot, int flag) { - RNA_def_string(ot->srna, "name", "", MAX_ID_NAME-2, "Name", "Name of the new sequence strip"); - if(flag & SEQPROP_STARTFRAME) RNA_def_int(ot->srna, "frame_start", 0, INT_MIN, INT_MAX, "Start Frame", "Start frame of the sequence strip", INT_MIN, INT_MAX); @@ -102,6 +100,20 @@ static void sequencer_generic_props__internal(wmOperatorType *ot, int flag) RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", ""); } +static void sequencer_generic_invoke_path__internal(bContext *C, wmOperator *op, const char *identifier) +{ + if(RNA_struct_find_property(op->ptr, identifier)) { + Scene *scene= CTX_data_scene(C); + Sequence *last_seq= seq_active_get(scene); + if(last_seq && last_seq->strip && SEQ_HAS_PATH(last_seq)) { + char path[sizeof(last_seq->strip->dir)]; + BLI_strncpy(path, last_seq->strip->dir, sizeof(path)); + BLI_path_abs(path, G.sce); + RNA_string_set(op->ptr, identifier, path); + } + } +} + static void sequencer_generic_invoke_xy__internal(bContext *C, wmOperator *op, wmEvent *event, int flag) { ARegion *ar= CTX_wm_region(C); @@ -122,21 +134,13 @@ static void sequencer_generic_invoke_xy__internal(bContext *C, wmOperator *op, w if ((flag & SEQPROP_ENDFRAME) && RNA_property_is_set(op->ptr, "frame_end")==0) RNA_int_set(op->ptr, "frame_end", (int)mval_v2d[0] + 25); // XXX arbitary but ok for now. - if(RNA_struct_find_property(op->ptr, "filepath")) { - Scene *scene= CTX_data_scene(C); - Sequence *last_seq= seq_active_get(scene); - if(last_seq && last_seq->strip && SEQ_HAS_PATH(last_seq)) { - RNA_string_set(op->ptr, "filepath", last_seq->strip->dir); - } - // // TODO - // else { - // RNA_string_set(op->ptr, "filepath", ed->act_imagedir); - // } - } + sequencer_generic_invoke_path__internal(C, op, "filepath"); + sequencer_generic_invoke_path__internal(C, op, "directory"); } static void seq_load_operator_info(SeqLoadInfo *seq_load, wmOperator *op) { + int is_file= -1; memset(seq_load, 0, sizeof(SeqLoadInfo)); seq_load->start_frame= RNA_int_get(op->ptr, "frame_start"); @@ -145,12 +149,13 @@ static void seq_load_operator_info(SeqLoadInfo *seq_load, wmOperator *op) seq_load->channel= RNA_int_get(op->ptr, "channel"); seq_load->len= 1; // images only, if endframe isnt set! - RNA_string_get(op->ptr, "name", seq_load->name+2); - - if(RNA_struct_find_property(op->ptr, "filepath")) + if(RNA_struct_find_property(op->ptr, "filepath")) { RNA_string_get(op->ptr, "filepath", seq_load->path); /* full path, file is set by the caller */ - else if (RNA_struct_find_property(op->ptr, "filepath")) + is_file= 1; + } else if (RNA_struct_find_property(op->ptr, "directory")) { RNA_string_get(op->ptr, "directory", seq_load->path); /* full path, file is set by the caller */ + is_file= 0; + } if (RNA_struct_find_property(op->ptr, "frame_end")) { seq_load->end_frame = RNA_int_get(op->ptr, "frame_end"); @@ -167,6 +172,20 @@ static void seq_load_operator_info(SeqLoadInfo *seq_load, wmOperator *op) /* always use this for ops */ seq_load->flag |= SEQ_LOAD_FRAME_ADVANCE; + + + if(is_file==1) { + BLI_strncpy(seq_load->name, BLI_path_basename(seq_load->path), sizeof(seq_load->name)); + } + else if(RNA_struct_find_property(op->ptr, "files")) { + /* used for image strip */ + /* best guess, first images name */ + RNA_BEGIN(op->ptr, itemptr, "files") { + RNA_string_get(&itemptr, "name", seq_load->name); + break; + } + RNA_END; + } } /* add scene operator */ @@ -206,11 +225,9 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op) strip->stripdata= se= MEM_callocN(seq->len*sizeof(StripElem), "stripelem"); - if(RNA_property_is_set(op->ptr, "name")) - RNA_string_get(op->ptr, "name", seq->name+2); - else - strcpy(seq->name+2, sce_seq->id.name+2); - + strcpy(seq->name+2, sce_seq->id.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); calc_sequence_disp(scene, seq); @@ -429,26 +446,24 @@ static int sequencer_add_image_strip_exec(bContext *C, wmOperator *op) seq_load.len= RNA_property_collection_length(op->ptr, RNA_struct_find_property(op->ptr, "files")); if(seq_load.len==0) - seq_load.len= 1; + return OPERATOR_CANCELLED; if(seq_load.flag & SEQ_LOAD_REPLACE_SEL) deselect_all_seq(scene); - + /* main adding function */ seq= sequencer_add_image_strip(C, ed->seqbasep, &seq_load); strip= seq->strip; se= strip->stripdata; - if(seq_load.len > 1) { - RNA_BEGIN(op->ptr, itemptr, "files") { - RNA_string_get(&itemptr, "name", se->name); - se++; - } - RNA_END; + RNA_BEGIN(op->ptr, itemptr, "files") { + RNA_string_get(&itemptr, "name", se->name); + se++; } - else { - BLI_strncpy(se->name, BLI_path_basename(seq_load.path), sizeof(se->name)); + RNA_END; + + if(seq_load.len == 1) { if(seq_load.start_frame < seq_load.end_frame) { seq->endstill= seq_load.end_frame - seq_load.start_frame; } @@ -502,7 +517,7 @@ void SEQUENCER_OT_image_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_DIRECTORY|WM_FILESEL_RELPATH); sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_ENDFRAME|SEQPROP_FILES); } @@ -545,11 +560,7 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op) seq = alloc_sequence(ed->seqbasep, start_frame, channel); seq->type= type; - if(RNA_property_is_set(op->ptr, "name")) - RNA_string_get(op->ptr, "name", seq->name+2); - else - strcpy(seq->name+2, give_seqname(seq)); - + BLI_strncpy(seq->name+2, give_seqname(seq), sizeof(seq->name)-2); seqbase_unique_name_recursive(&ed->seqbase, seq); sh = get_sequence_effect(seq); diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index 680c5165575..000d428e40f 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -231,6 +231,8 @@ void BPY_start_python( int argc, char **argv ) BPY_start_python_path(); /* allow to use our own included python */ + // Py_SetProgramName(); // extern char bprogname[FILE_MAXDIR+FILE_MAXFILE]; + Py_Initialize( ); // PySys_SetArgv( argc, argv); // broken in py3, not a huge deal diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 330244e910e..8355684ac75 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1219,7 +1219,6 @@ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHa { /* XXX validate area and region? */ bScreen *screen= CTX_wm_screen(C); - char *path= RNA_string_get_alloc(handler->op->ptr, "filepath", NULL, 0); if(screen != handler->filescreen) ED_screen_full_prevspace(C, CTX_wm_area(C)); @@ -1238,8 +1237,11 @@ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHa /* XXX also extension code in image-save doesnt work for this yet */ if (RNA_struct_find_property(handler->op->ptr, "check_existing") && RNA_boolean_get(handler->op->ptr, "check_existing")) { + char *path= RNA_string_get_alloc(handler->op->ptr, "filepath", NULL, 0); /* this gives ownership to pupmenu */ uiPupMenuSaveOver(C, handler->op, (path)? path: ""); + if(path) + MEM_freeN(path); } else { int retval; @@ -1299,8 +1301,6 @@ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHa CTX_wm_area_set(C, NULL); wm_event_free_handler(handler); - if(path) - MEM_freeN(path); action= WM_HANDLER_BREAK; } From de3dc3349467a3095293e874690a5c2ff69b7561 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 2 Jul 2010 20:46:29 +0000 Subject: [PATCH 263/674] render override was still showing game physics bounds --- source/blender/editors/space_view3d/drawobject.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 7cae427112b..59802e9d5ac 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -6158,7 +6158,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) } } - if(dtflag2 & V3D_RENDER_OVERRIDE)==0) { if((ob->gameflag & OB_DYNAMIC) || ((ob->gameflag & OB_BOUNDS) && (ob->boundtype == OB_BOUND_SPHERE))) { float imat[4][4], vec[3]; From ec770b75382bb6fcb718d902593d6175a15333f3 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Sat, 3 Jul 2010 10:01:41 +0000 Subject: [PATCH 264/674] OSX: CMake and scons default settings updated to allow build with LCMS lib --- CMakeLists.txt | 7 ++++++- config/darwin-config.py | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fedca9ba1ba..59e4b798a6b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -711,7 +711,12 @@ IF(APPLE) SET(OPENEXR_LIBPATH ${OPENEXR}/lib) ENDIF(WITH_OPENEXR) - # TODO: IF(WITH_LCMS) + IF(WITH_LCMS) + SET(LCMS ${LIBDIR}/lcms) + SET(LCMS_INCLUDE_DIR ${LCMS}/include) + SET(LCMS_LIBRARY lcms) + SET(LCMS_LIBPATH ${LCMS}/lib) + ENDIF(WITH_LCMS) IF(WITH_FFMPEG) SET(FFMPEG ${LIBDIR}/ffmpeg) diff --git a/config/darwin-config.py b/config/darwin-config.py index 2c3d0a7e87e..a9a2582fc68 100644 --- a/config/darwin-config.py +++ b/config/darwin-config.py @@ -151,6 +151,9 @@ BF_OPENEXR_LIB_STATIC = '${BF_OPENEXR}/lib/libHalf.a ${BF_OPENEXR}/lib/libIlmImf WITH_BF_DDS = True +#Color Management System +WITH_BF_LCMS = True + WITH_BF_JPEG = True BF_JPEG = LIBDIR + '/jpeg' BF_JPEG_INC = '${BF_JPEG}/include' From d79a2c6f0e1fffc63823751ce5ac01006cc67e69 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Sat, 3 Jul 2010 12:11:05 +0000 Subject: [PATCH 265/674] OSX scons : disable build with lcms by default until scons scripts are updated to take into account lcms include and lib paths different from /usr I've released this scons scripts update as patch #22723, for it to be checked for no adverse effects on other platforms. --- config/darwin-config.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/config/darwin-config.py b/config/darwin-config.py index a9a2582fc68..f6d9ca97a19 100644 --- a/config/darwin-config.py +++ b/config/darwin-config.py @@ -152,7 +152,11 @@ BF_OPENEXR_LIB_STATIC = '${BF_OPENEXR}/lib/libHalf.a ${BF_OPENEXR}/lib/libIlmImf WITH_BF_DDS = True #Color Management System -WITH_BF_LCMS = True +WITH_BF_LCMS = False +BF_LCMS = LIBDIR + '/lcms' +BF_LCMS_INC = '${BF_LCMS}/include' +BF_LCMS_LIB = 'lcms' +BF_LCMS_LIBPATH = '${BF_LCMS}/lib' WITH_BF_JPEG = True BF_JPEG = LIBDIR + '/jpeg' From 0b939f9ea7f11d62b2dbb8f5bd8f0cdbddbacde1 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 3 Jul 2010 12:55:03 +0000 Subject: [PATCH 266/674] WM_operator_props_popup was calling ED_undo_push_op() which is also called by wm_operator_finished. This made new image operator and seperate image sequence call ED_undo_push_op() twice. Tested with move to layer and python select pattern operators and it works ok. including backtraces for the double calls just incase. # first #2 0x00000000009ff4c4 in ED_undo_push_op (C=0x20e1098, op=0x3ea13a8) at /media/data/blender_ideasman42/blender_trunk/source/blender/editors/util/undo.c:187 #3 0x00000000008b5fa1 in WM_operator_props_popup (C=0x20e1098, op=0x3ea13a8, event=0x3ea0d28) at /media/data/blender_ideasman42/blender_trunk/source/blender/windowmanager/intern/wm_operators.c:1032 #4 0x00000000008be6be in wm_operator_invoke (C=0x20e1098, ot=0x2408bd8, event=0x3ea0d28, properties=0x3e943d8, reports=0x0) at /media/data/blender_ideasman42/blender_trunk/source/blender/windowmanager/intern/wm_event_system.c:613 #5 0x00000000008bfa44 in wm_handler_operator_call (C=0x20e1098, handlers=0x25509a0, handler=0x25cb658, event=0x3ea0d28, properties=0x3e943d8) at /media/data/blender_ideasman42/blender_trunk/source/blender/windowmanager/intern/wm_event_system.c:1158 # second #2 0x00000000009ff4c4 in ED_undo_push_op (C=0x20e1098, op=0x3ea13a8) at /media/data/blender_ideasman42/blender_trunk/source/blender/editors/util/undo.c:187 #3 0x00000000008bde8e in wm_operator_finished (C=0x20e1098, op=0x3ea13a8, repeat=0) at /media/data/blender_ideasman42/blender_trunk/source/blender/windowmanager/intern/wm_event_system.c:439 #4 0x00000000008be82a in wm_operator_invoke (C=0x20e1098, ot=0x2408bd8, event=0x3ea0d28, properties=0x3e943d8, reports=0x0) at /media/data/blender_ideasman42/blender_trunk/source/blender/windowmanager/intern/wm_event_system.c:640 #5 0x00000000008bfa44 in wm_handler_operator_call (C=0x20e1098, handlers=0x25509a0, handler=0x25cb658, event=0x3ea0d28, properties=0x3e943d8) at /media/data/blender_ideasman42/blender_trunk/source/blender/windowmanager/intern/wm_event_system.c:1158 --- source/blender/windowmanager/intern/wm_operators.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 8960d3b633f..7c11c7ff3af 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -1027,9 +1027,8 @@ int WM_operator_props_popup(bContext *C, wmOperator *op, wmEvent *event) if(op->type->exec) { retval= op->type->exec(C, op); - - if(op->type->flag & OPTYPE_UNDO) - ED_undo_push_op(C, op); + + /* ED_undo_push_op(C, op), called by wm_operator_finished now. */ } if(retval != OPERATOR_CANCELLED) From 37b4e2af7714fc98fb2a7f274bb1197b5226bb4b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 3 Jul 2010 15:03:13 +0000 Subject: [PATCH 267/674] cmake: disable openexr if its not found (rather then throwing an error) --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 59e4b798a6b..82c57c014fa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -228,6 +228,10 @@ IF(UNIX AND NOT APPLE) /opt/include/OpenEXR ) SET(OPENEXR_LIB Half IlmImf Iex Imath) + + IF(NOT OPENEXR_INC) + SET(WITH_OPENEXR OFF) + ENDIF(NOT OPENEXR_INC) ENDIF(WITH_OPENEXR) IF(WITH_TIFF) From 7a495a12e1c367f8f1dbe14586c3798db5982171 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sat, 3 Jul 2010 17:19:44 +0000 Subject: [PATCH 268/674] Fix for layer restoring with duplis, could be wrong sometimes when there with multiple instances and recursion. --- source/blender/blenkernel/intern/anim.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c index 6044cfa7692..fa0ddc5f1d3 100644 --- a/source/blender/blenkernel/intern/anim.c +++ b/source/blender/blenkernel/intern/anim.c @@ -1532,7 +1532,10 @@ void free_object_duplilist(ListBase *lb) { DupliObject *dob; - for(dob= lb->first; dob; dob= dob->next) { + /* loop in reverse order, if object is instanced multiple times + the original layer may not really be original otherwise, proper + solution is more complicated */ + for(dob= lb->last; dob; dob= dob->prev) { dob->ob->lay= dob->origlay; copy_m4_m4(dob->ob->obmat, dob->omat); } From 9a85435e96af9933b282594b6ad8b23ca598d8bc Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 3 Jul 2010 17:39:29 +0000 Subject: [PATCH 269/674] rna api: rename object.matrix --> matrix_world added object.matrix_local (parent relative matrix) --- release/scripts/io/engine_render_pov.py | 8 ++-- release/scripts/io/export_3ds.py | 2 +- release/scripts/io/export_fbx.py | 9 ++-- release/scripts/io/export_mdd.py | 4 +- release/scripts/io/export_obj.py | 2 +- release/scripts/io/export_ply.py | 2 +- release/scripts/io/export_x3d.py | 12 +++--- release/scripts/io/import_scene_3ds.py | 8 ++-- release/scripts/modules/add_object_utils.py | 2 +- release/scripts/op/object.py | 2 +- release/scripts/op/object_align.py | 4 +- release/scripts/op/uvcalc_smart_project.py | 2 +- source/blender/makesrna/intern/rna_object.c | 47 +++++++++++++++++++-- 13 files changed, 70 insertions(+), 34 deletions(-) diff --git a/release/scripts/io/engine_render_pov.py b/release/scripts/io/engine_render_pov.py index 426bc761041..9cda4375ecc 100644 --- a/release/scripts/io/engine_render_pov.py +++ b/release/scripts/io/engine_render_pov.py @@ -134,7 +134,7 @@ def write_pov(filename, scene=None, info_callback=None): def exportCamera(): camera = scene.camera - matrix = camera.matrix + matrix = camera.matrix_world # compute resolution Qsize = float(render.resolution_x) / float(render.resolution_y) @@ -155,7 +155,7 @@ def write_pov(filename, scene=None, info_callback=None): for ob in lamps: lamp = ob.data - matrix = ob.matrix + matrix = ob.matrix_world color = tuple([c * lamp.energy for c in lamp.color]) # Colour is modified by energy @@ -263,7 +263,7 @@ def write_pov(filename, scene=None, info_callback=None): writeObjectMaterial(material) - writeMatrix(ob.matrix) + writeMatrix(ob.matrix_world) file.write('}\n') @@ -292,7 +292,7 @@ def write_pov(filename, scene=None, info_callback=None): # continue # me = ob.data - matrix = ob.matrix + matrix = ob.matrix_world try: uv_layer = me.active_uv_texture.data except: diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index 341b974fe06..bfe568153f9 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -82,7 +82,7 @@ def create_derived_objects(scene, ob): ob.create_dupli_list(scene) return True, [(dob.object, dob.matrix) for dob in ob.dupli_list] else: - return False, [(ob, ob.matrix)] + return False, [(ob, ob.matrix_world)] # also used by X3D exporter def free_derived_objects(ob): diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index 967bbf50307..9468cadec83 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -528,7 +528,7 @@ def write(filename, batch_objects = None, \ self.fbxGroupNames = [] self.fbxParent = None # set later on IF the parent is in the selection. if matrixWorld: self.matrixWorld = GLOBAL_MATRIX * matrixWorld - else: self.matrixWorld = GLOBAL_MATRIX * ob.matrix + else: self.matrixWorld = GLOBAL_MATRIX * ob.matrix_world # else: self.matrixWorld = ob.matrixWorld * GLOBAL_MATRIX self.__anim_poselist = {} # we should only access this @@ -539,8 +539,7 @@ def write(filename, batch_objects = None, \ return self.matrixWorld def setPoseFrame(self, f): - self.__anim_poselist[f] = self.blenObject.matrix.copy() -# self.__anim_poselist[f] = self.blenObject.matrixWorld.copy() + self.__anim_poselist[f] = self.blenObject.matrix_world.copy() def getAnimParRelMatrix(self, frame): if self.fbxParent: @@ -646,7 +645,7 @@ def write(filename, batch_objects = None, \ else: # This is bad because we need the parent relative matrix from the fbx parent (if we have one), dont use anymore - #if ob and not matrix: matrix = ob.matrixWorld * GLOBAL_MATRIX + #if ob and not matrix: matrix = ob.matrix_world * GLOBAL_MATRIX if ob and not matrix: raise Exception("error: this should never happen!") matrix_rot = matrix @@ -2025,7 +2024,7 @@ def write(filename, batch_objects = None, \ if ob_base.parent and ob_base.parent.dupli_type != 'NONE': continue - obs = [(ob_base, ob_base.matrix)] + obs = [(ob_base, ob_base.matrix_world)] if ob_base.dupli_type != 'NONE': ob_base.create_dupli_list(scene) obs = [(dob.object, dob.matrix) for dob in ob_base.dupli_list] diff --git a/release/scripts/io/export_mdd.py b/release/scripts/io/export_mdd.py index 3c82ff5d497..b7de707c9f0 100644 --- a/release/scripts/io/export_mdd.py +++ b/release/scripts/io/export_mdd.py @@ -113,7 +113,7 @@ def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS): """ check_vertcount(me, numverts) - me.transform(mat_flip * ob.matrix) + me.transform(mat_flip * ob.matrix_world) f.write(pack(">%df" % (numverts * 3), *[axis for v in me.verts for axis in v.co])) for frame in range(PREF_STARTFRAME, PREF_ENDFRAME + 1):#in order to start at desired frame @@ -125,7 +125,7 @@ def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS): sce.set_frame(frame) me = ob.create_mesh(sce, True, 'PREVIEW') check_vertcount(me, numverts) - me.transform(mat_flip * ob.matrix) + me.transform(mat_flip * ob.matrix_world) # Write the vertex data f.write(pack(">%df" % (numverts * 3), *[axis for v in me.verts for axis in v.co])) diff --git a/release/scripts/io/export_obj.py b/release/scripts/io/export_obj.py index 40ef68041de..4451cb77a1b 100644 --- a/release/scripts/io/export_obj.py +++ b/release/scripts/io/export_obj.py @@ -403,7 +403,7 @@ def write(filepath, objects, scene, # XXX debug print print(ob_main.name, 'has', len(obs), 'dupli children') else: - obs = [(ob_main, ob_main.matrix)] + obs = [(ob_main, ob_main.matrix_world)] for ob, ob_mat in obs: diff --git a/release/scripts/io/export_ply.py b/release/scripts/io/export_ply.py index aee56550526..09d25b61010 100644 --- a/release/scripts/io/export_ply.py +++ b/release/scripts/io/export_ply.py @@ -111,7 +111,7 @@ def write(filename, scene, ob, \ raise ("Error, could not get mesh data from active object") return - # mesh.transform(ob.matrixWorld) # XXX + # mesh.transform(ob.matrix_world) # XXX faceUV = (len(mesh.uv_textures) > 0) vertexUV = (len(mesh.sticky) > 0) diff --git a/release/scripts/io/export_x3d.py b/release/scripts/io/export_x3d.py index 6dc2340ec93..2ade015a1e9 100644 --- a/release/scripts/io/export_x3d.py +++ b/release/scripts/io/export_x3d.py @@ -237,7 +237,7 @@ class x3d_class: lens = min(lens, math.pi) # get the camera location, subtract 90 degress from X to orient like X3D does - # mat = ob.matrixWorld - mat is now passed! + # mat = ob.matrix_world - mat is now passed! loc = self.rotatePointForVRML(mat.translation_part()) rot = mat.to_euler() @@ -300,7 +300,7 @@ class x3d_class: # note -dz seems to equal om[3][1] # note dy seems to equal om[3][2] - #location=(ob.matrixWorld*MATWORLD).translation_part() # now passed + #location=(ob.matrix_world*MATWORLD).translation_part() # now passed location=(mtx*MATWORLD).translation_part() radius = lamp.distance*math.cos(beamWidth) @@ -346,7 +346,7 @@ class x3d_class: ambi = 0 ambientIntensity = 0 - # location=(ob.matrixWorld*MATWORLD).translation_part() # now passed + # location=(ob.matrix_world*MATWORLD).translation_part() # now passed location= (mtx*MATWORLD).translation_part() self.file.write("\n") else: #-- vertices - # mesh.transform(ob.matrixWorld) + # mesh.transform(ob.matrix_world) self.writeIndented("id.data, OB_RECALC_OB); } -void rna_Object_matrix_update(Main *bmain, Scene *scene, PointerRNA *ptr) +void rna_Object_matrix_world_update(Main *bmain, Scene *scene, PointerRNA *ptr) { object_apply_mat4(ptr->id.data, ((Object *)ptr->id.data)->obmat); rna_Object_internal_update(bmain, scene, ptr); } +void rna_Object_matrix_local_get(PointerRNA *ptr, float values[16]) +{ + Object *ob= ptr->id.data; + + if(ob->parent) { + float invmat[4][4]; /* for inverse of parent's matrix */ + invert_m4_m4(invmat, ob->parent->obmat); + mul_m4_m4m4((float(*)[4])values, ob->obmat, invmat); + } + else { + copy_m4_m4((float(*)[4])values, ob->obmat); + } +} + +void rna_Object_matrix_local_set(PointerRNA *ptr, const float values[16]) +{ + Object *ob= ptr->id.data; + + /* localspace matrix is truly relative to the parent, but parameters + * stored in object are relative to parentinv matrix. Undo the parent + * inverse part before updating obmat and calling apply_obmat() */ + if(ob->parent) { + float invmat[4][4]; + invert_m4_m4(invmat, ob->parentinv); + mul_m4_m4m4(ob->obmat, (float(*)[4])values, invmat); + } + else { + copy_m4_m4(ob->obmat, (float(*)[4])values); + } + + object_apply_mat4(ob, ob->obmat); +} + void rna_Object_internal_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) { DAG_id_flush_update(ptr->id.data, OB_RECALC_DATA); @@ -1700,11 +1733,17 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update"); /* matrix */ - prop= RNA_def_property(srna, "matrix", PROP_FLOAT, PROP_MATRIX); + prop= RNA_def_property(srna, "matrix_world", PROP_FLOAT, PROP_MATRIX); RNA_def_property_float_sdna(prop, NULL, "obmat"); RNA_def_property_multi_array(prop, 2, matrix_dimsize); - RNA_def_property_ui_text(prop, "Matrix", "Transformation matrix"); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_matrix_update"); + RNA_def_property_ui_text(prop, "Matrix World", "Worldspace transformation matrix"); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_matrix_world_update"); + + prop= RNA_def_property(srna, "matrix_local", PROP_FLOAT, PROP_MATRIX); + RNA_def_property_multi_array(prop, 2, matrix_dimsize); + RNA_def_property_ui_text(prop, "Local Matrix", "Parent relative transformation matrix"); + RNA_def_property_float_funcs(prop, "rna_Object_matrix_local_get", "rna_Object_matrix_local_set", NULL); + RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, NULL); /* collections */ prop= RNA_def_property(srna, "constraints", PROP_COLLECTION, PROP_NONE); From 80f6102629b746ea520d3ec54aaa6414c669a998 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 3 Jul 2010 17:47:06 +0000 Subject: [PATCH 270/674] better reporting for file i/o failier, use system error message in more places: Permission Denied, No space left, File not found etc. - blend load/save uses os message. - image load gives os message. (remove check for slash at end of line, just let the os report an error) - python api load image/font/text raise errors with message (was just retuning None for image and font) - minor edits to py api errors. --- source/blender/blenkernel/intern/image.c | 7 ---- source/blender/blenkernel/intern/object.c | 6 +-- source/blender/blenloader/intern/readfile.c | 2 +- source/blender/blenloader/intern/writefile.c | 2 +- .../blender/editors/space_image/image_ops.c | 5 +++ source/blender/editors/space_node/node_edit.c | 20 ++++++--- .../editors/space_sequencer/sequencer_edit.c | 22 ++++++---- source/blender/makesrna/intern/rna_main_api.c | 41 +++++++++++++++---- source/blender/python/generic/bgl.c | 10 ++--- source/blender/python/generic/blf_api.c | 24 +++++------ .../python/generic/bpy_internal_import.c | 9 +--- .../blender/windowmanager/intern/wm_files.c | 6 ++- 12 files changed, 93 insertions(+), 61 deletions(-) diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index a584e91fc0f..4daa38001bf 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -328,13 +328,6 @@ Image *BKE_add_image_file(const char *name, int frame) const char *libname; char str[FILE_MAX], strtest[FILE_MAX]; - /* escape when name is directory */ - len= strlen(name); - if(len) { - if(name[len-1]=='/' || name[len-1]=='\\') - return NULL; - } - BLI_strncpy(str, name, sizeof(str)); BLI_path_abs(str, G.sce); diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 5d3527d5afc..8d38f5c8d15 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1724,10 +1724,8 @@ void object_to_mat4(Object *ob, float mat[][4]) object_to_mat3(ob, tmat); copy_m4_m3(mat, tmat); - - mat[3][0]= ob->loc[0] + ob->dloc[0]; - mat[3][1]= ob->loc[1] + ob->dloc[1]; - mat[3][2]= ob->loc[2] + ob->dloc[2]; + + add_v3_v3v3(mat[3], ob->loc, ob->dloc); } int enable_cu_speed= 1; diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index e670d78ff77..50a56c74cf5 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -962,7 +962,7 @@ FileData *blo_openblenderfile(char *name, ReportList *reports) gzfile= gzopen(name, "rb"); - if (NULL == gzfile) { + if (gzfile == Z_NULL) { BKE_report(reports, RPT_ERROR, "Unable to open"); return NULL; } else { diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 35fda1d8aa7..497c2d37c50 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -2481,7 +2481,7 @@ int BLO_write_file(Main *mainvar, char *dir, int write_flags, ReportList *report file = open(tempname,O_BINARY+O_WRONLY+O_CREAT+O_TRUNC, 0666); if(file == -1) { - BKE_report(reports, RPT_ERROR, "Unable to open file for writing."); + BKE_reportf(reports, RPT_ERROR, "Can't open file for writing: %s.", strerror(errno)); return 0; } diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index 48f9e7e458e..3e269634b27 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -28,6 +28,7 @@ #include #include #include +#include #include "MEM_guardedalloc.h" @@ -688,10 +689,14 @@ static int open_exec(bContext *C, wmOperator *op) RNA_string_get(op->ptr, "filepath", str); /* default to frame 1 if there's no scene in context */ + + errno= 0; + ima= BKE_add_image_file(str, scene ? scene->r.cfra : 1); if(!ima) { if(op->customdata) MEM_freeN(op->customdata); + BKE_reportf(op->reports, RPT_ERROR, "Can't read: \"%s\", %s.", str, errno ? strerror(errno) : "Unsupported image format"); return OPERATOR_CANCELLED; } diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index b5ed2f4d8a7..222504179cb 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -31,6 +31,7 @@ #include #include #include +#include #include "MEM_guardedalloc.h" @@ -2248,21 +2249,28 @@ static int node_add_file_exec(bContext *C, wmOperator *op) { char path[FILE_MAX]; RNA_string_get(op->ptr, "filepath", path); + + errno= 0; + ima= BKE_add_image_file(path, scene ? scene->r.cfra : 1); + + if(!ima) { + BKE_reportf(op->reports, RPT_ERROR, "Can't read: \"%s\", %s.", path, errno ? strerror(errno) : "Unsupported image format"); + return OPERATOR_CANCELLED; + } } else if(RNA_property_is_set(op->ptr, "name")) { char name[32]; RNA_string_get(op->ptr, "name", name); ima= (Image *)find_id("IM", name); + + if(!ima) { + BKE_reportf(op->reports, RPT_ERROR, "Image named \"%s\", not found.", name); + return OPERATOR_CANCELLED; + } } - if(!ima) { - BKE_report(op->reports, RPT_ERROR, "Not an Image."); - return OPERATOR_CANCELLED; - } - - node_deselectall(snode); if (snode->nodetree->type==NTREE_COMPOSIT) diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 6d225647a52..b994b0877d7 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -761,7 +761,8 @@ static void recurs_del_seq_flag(Scene *scene, ListBase *lb, short flag, short de BLI_remlink(lb, seq); if(seq==last_seq) seq_active_set(scene, NULL); if(seq->type==SEQ_META) recurs_del_seq_flag(scene, &seq->seqbase, flag, 1); - if(seq->ipo) seq->ipo->id.us--; + /* if(seq->ipo) seq->ipo->id.us--; */ + /* XXX, remove fcurve */ seq_free_sequence(scene, seq); } seq= seqn; @@ -1700,10 +1701,7 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op) int start_ofs, cfra, frame_end; int step= RNA_int_get(op->ptr, "length"); - if(ed==NULL) - return OPERATOR_CANCELLED; - - seq= ed->seqbasep->first; + seq= ed->seqbasep->first; /* poll checks this is valid */ while (seq) { if((seq->flag & SELECT) && (seq->type == SEQ_IMAGE) && (seq->len > 1)) { @@ -1711,7 +1709,8 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op) see seq_free_sequence below for the real free'ing */ seq_next = seq->next; BLI_remlink(ed->seqbasep, seq); - if(seq->ipo) seq->ipo->id.us--; + /* if(seq->ipo) seq->ipo->id.us--; */ + /* XXX, remove fcurve and assign to split image strips */ start_ofs = cfra = seq_tx_get_final_left(seq, 0); frame_end = seq_tx_get_final_right(seq, 0); @@ -1735,11 +1734,16 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op) strip_new->stripdata= se_new= MEM_callocN(sizeof(StripElem)*1, "stripelem"); strncpy(se_new->name, se->name, FILE_MAXFILE-1); calc_sequence(scene, seq_new); - seq_new->flag &= ~SEQ_OVERLAP; - if (seq_test_overlap(ed->seqbasep, seq_new)) { - shuffle_seq(ed->seqbasep, seq_new, scene); + + if(step > 1) { + seq_new->flag &= ~SEQ_OVERLAP; + if (seq_test_overlap(ed->seqbasep, seq_new)) { + shuffle_seq(ed->seqbasep, seq_new, scene); + } } + /* XXX, COPY FCURVES */ + strncpy(seq_new->name+2, seq->name+2, sizeof(seq->name)-2); seqbase_unique_name_recursive(&scene->ed->seqbase, seq_new); cfra++; diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c index 4564ecd586b..6c74ff2fefa 100644 --- a/source/blender/makesrna/intern/rna_main_api.c +++ b/source/blender/makesrna/intern/rna_main_api.c @@ -28,6 +28,7 @@ #include #include +#include #include "RNA_define.h" #include "RNA_access.h" @@ -260,9 +261,17 @@ Image *rna_Main_images_new(Main *bmain, char* name, int width, int height, int a image->id.us--; return image; } -Image *rna_Main_images_load(Main *bmain, char *filepath) +Image *rna_Main_images_load(Main *bmain, ReportList *reports, char *filepath) { - return BKE_add_image_file(filepath, 0); + Image *ima; + + errno= 0; + ima= BKE_add_image_file(filepath, 0); + + if(!ima) + BKE_reportf(reports, RPT_ERROR, "Can't read: \"%s\", %s.", filepath, errno ? strerror(errno) : "Unsupported image format"); + + return ima; } void rna_Main_images_remove(Main *bmain, ReportList *reports, Image *image) { @@ -316,9 +325,18 @@ void rna_Main_metaballs_remove(Main *bmain, ReportList *reports, struct MetaBall BKE_reportf(reports, RPT_ERROR, "MetaBall \"%s\" must have zero users to be removed, found %d.", mb->id.name+2, ID_REAL_USERS(mb)); } -VFont *rna_Main_fonts_load(Main *bmain, char *filepath) +VFont *rna_Main_fonts_load(Main *bmain, ReportList *reports, char *filepath) { - return load_vfont(filepath); + VFont *font; + + errno= 0; + font= load_vfont(filepath); + + if(!font) + BKE_reportf(reports, RPT_ERROR, "Can't read: \"%s\", %s.", filepath, errno ? strerror(errno) : "Unsupported font format"); + + return font; + } void rna_Main_fonts_remove(Main *bmain, ReportList *reports, VFont *vfont) { @@ -394,11 +412,16 @@ void rna_Main_texts_remove(Main *bmain, ReportList *reports, Text *text) free_libblock(&bmain->text, text); /* XXX python now has invalid pointer? */ } -Text *rna_Main_texts_load(Main *bmain, ReportList *reports, char* path) + +Text *rna_Main_texts_load(Main *bmain, ReportList *reports, char* filepath) { - Text *txt= add_text(path, bmain->name); - if(txt==NULL) - BKE_reportf(reports, RPT_ERROR, "Couldn't load text from path \"%s\".", path); + Text *txt; + + errno= 0; + txt= add_text(filepath, bmain->name); + + if(!txt) + BKE_reportf(reports, RPT_ERROR, "Can't read: \"%s\", %s.", filepath, errno ? strerror(errno) : "Unable to load text"); return txt; } @@ -692,6 +715,7 @@ void RNA_def_main_images(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_function_return(func, parm); func= RNA_def_function(srna, "load", "rna_Main_images_load"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); RNA_def_function_ui_description(func, "Load a new image into the main database"); parm= RNA_def_string(func, "filepath", "File Path", 0, "", "path of the file to load."); RNA_def_property_flag(parm, PROP_REQUIRED); @@ -791,6 +815,7 @@ void RNA_def_main_fonts(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_struct_ui_text(srna, "Main Fonts", "Collection of fonts"); func= RNA_def_function(srna, "load", "rna_Main_fonts_load"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); RNA_def_function_ui_description(func, "Load a new font into the main database"); parm= RNA_def_string(func, "filepath", "File Path", 0, "", "path of the font to load."); RNA_def_property_flag(parm, PROP_REQUIRED); diff --git a/source/blender/python/generic/bgl.c b/source/blender/python/generic/bgl.c index 806b5a5b3ce..ae19db28011 100644 --- a/source/blender/python/generic/bgl.c +++ b/source/blender/python/generic/bgl.c @@ -322,20 +322,20 @@ static int Buffer_ass_item(PyObject *self, int i, PyObject *v) } if (buf->type==GL_BYTE) { - if (!PyArg_Parse(v, "b;Coordinates must be ints", &buf->buf.asbyte[i])) + if (!PyArg_Parse(v, "b:Coordinates must be ints", &buf->buf.asbyte[i])) return -1; } else if (buf->type==GL_SHORT) { - if (!PyArg_Parse(v, "h;Coordinates must be ints", &buf->buf.asshort[i])) + if (!PyArg_Parse(v, "h:Coordinates must be ints", &buf->buf.asshort[i])) return -1; } else if (buf->type==GL_INT) { - if (!PyArg_Parse(v, "i;Coordinates must be ints", &buf->buf.asint[i])) + if (!PyArg_Parse(v, "i:Coordinates must be ints", &buf->buf.asint[i])) return -1; } else if (buf->type==GL_FLOAT) { - if (!PyArg_Parse(v, "f;Coordinates must be floats", &buf->buf.asfloat[i])) + if (!PyArg_Parse(v, "f:Coordinates must be floats", &buf->buf.asfloat[i])) return -1; } else if (buf->type==GL_DOUBLE) { - if (!PyArg_Parse(v, "d;Coordinates must be floats", &buf->buf.asdouble[i])) + if (!PyArg_Parse(v, "d:Coordinates must be floats", &buf->buf.asdouble[i])) return -1; } return 0; diff --git a/source/blender/python/generic/blf_api.c b/source/blender/python/generic/blf_api.c index 67f07ad8378..db3ce06554e 100644 --- a/source/blender/python/generic/blf_api.c +++ b/source/blender/python/generic/blf_api.c @@ -46,7 +46,7 @@ static PyObject *py_blf_position(PyObject *self, PyObject *args) int fontid; float x, y, z; - if (!PyArg_ParseTuple(args, "ifff:BLF.position", &fontid, &x, &y, &z)) + if (!PyArg_ParseTuple(args, "ifff:blf.position", &fontid, &x, &y, &z)) return NULL; BLF_position(fontid, x, y, z); @@ -71,7 +71,7 @@ static PyObject *py_blf_size(PyObject *self, PyObject *args) { int fontid, size, dpi; - if (!PyArg_ParseTuple(args, "iii:BLF.size", &fontid, &size, &dpi)) + if (!PyArg_ParseTuple(args, "iii:blf.size", &fontid, &size, &dpi)) return NULL; BLF_size(fontid, size, dpi); @@ -95,7 +95,7 @@ static PyObject *py_blf_aspect(PyObject *self, PyObject *args) float aspect; int fontid; - if (!PyArg_ParseTuple(args, "if:BLF.aspect", &fontid, &aspect)) + if (!PyArg_ParseTuple(args, "if:blf.aspect", &fontid, &aspect)) return NULL; BLF_aspect(fontid, aspect); @@ -118,7 +118,7 @@ static PyObject *py_blf_blur(PyObject *self, PyObject *args) { int blur, fontid; - if (!PyArg_ParseTuple(args, "ii:BLF.blur", &fontid, &blur)) + if (!PyArg_ParseTuple(args, "ii:blf.blur", &fontid, &blur)) return NULL; BLF_blur(fontid, blur); @@ -142,7 +142,7 @@ static PyObject *py_blf_draw(PyObject *self, PyObject *args) char *text; int fontid; - if (!PyArg_ParseTuple(args, "is:BLF.draw", &fontid, &text)) + if (!PyArg_ParseTuple(args, "is:blf.draw", &fontid, &text)) return NULL; BLF_draw(fontid, text); @@ -169,7 +169,7 @@ static PyObject *py_blf_dimensions(PyObject *self, PyObject *args) PyObject *ret; int fontid; - if (!PyArg_ParseTuple(args, "is:BLF.dimensions", &fontid, &text)) + if (!PyArg_ParseTuple(args, "is:blf.dimensions", &fontid, &text)) return NULL; BLF_width_and_height(fontid, text, &r_width, &r_height); @@ -201,7 +201,7 @@ static PyObject *py_blf_clipping(PyObject *self, PyObject *args) float xmin, ymin, xmax, ymax; int fontid; - if (!PyArg_ParseTuple(args, "iffff:BLF.clipping", &fontid, &xmin, &ymin, &xmax, &ymax)) + if (!PyArg_ParseTuple(args, "iffff:blf.clipping", &fontid, &xmin, &ymin, &xmax, &ymax)) return NULL; BLF_clipping(fontid, xmin, ymin, xmax, ymax); @@ -223,7 +223,7 @@ static PyObject *py_blf_disable(PyObject *self, PyObject *args) { int option, fontid; - if (!PyArg_ParseTuple(args, "ii:BLF.disable", &fontid, &option)) + if (!PyArg_ParseTuple(args, "ii:blf.disable", &fontid, &option)) return NULL; BLF_disable(fontid, option); @@ -245,7 +245,7 @@ static PyObject *py_blf_enable(PyObject *self, PyObject *args) { int option, fontid; - if (!PyArg_ParseTuple(args, "ii:BLF.enable", &fontid, &option)) + if (!PyArg_ParseTuple(args, "ii:blf.enable", &fontid, &option)) return NULL; BLF_enable(fontid, option); @@ -268,7 +268,7 @@ static PyObject *py_blf_rotation(PyObject *self, PyObject *args) float angle; int fontid; - if (!PyArg_ParseTuple(args, "if:BLF.rotation", &fontid, &angle)) + if (!PyArg_ParseTuple(args, "if:blf.rotation", &fontid, &angle)) return NULL; BLF_rotation(fontid, angle); @@ -299,7 +299,7 @@ static PyObject *py_blf_shadow(PyObject *self, PyObject *args) int level, fontid; float r, g, b, a; - if (!PyArg_ParseTuple(args, "iiffff:BLF.shadow", &fontid, &level, &r, &g, &b, &a)) + if (!PyArg_ParseTuple(args, "iiffff:blf.shadow", &fontid, &level, &r, &g, &b, &a)) return NULL; if (level != 0 && level != 3 && level != 5) { @@ -328,7 +328,7 @@ static PyObject *py_blf_shadow_offset(PyObject *self, PyObject *args) { int x, y, fontid; - if (!PyArg_ParseTuple(args, "iii:BLF.shadow_offset", &fontid, &x, &y)) + if (!PyArg_ParseTuple(args, "iii:blf.shadow_offset", &fontid, &x, &y)) return NULL; BLF_shadow_offset(fontid, x, y); diff --git a/source/blender/python/generic/bpy_internal_import.c b/source/blender/python/generic/bpy_internal_import.c index 01d0f56bf1b..0b5129b79fa 100644 --- a/source/blender/python/generic/bpy_internal_import.c +++ b/source/blender/python/generic/bpy_internal_import.c @@ -237,16 +237,11 @@ static PyObject *blender_import( PyObject * self, PyObject * args, PyObject * k * our reload() module, to handle reloading in-memory scripts */ -static PyObject *blender_reload( PyObject * self, PyObject * args ) +static PyObject *blender_reload( PyObject * self, PyObject * module ) { PyObject *exception, *err, *tb; - PyObject *module = NULL; PyObject *newmodule = NULL; int found= 0; - - /* check for a module arg */ - if( !PyArg_ParseTuple( args, "O:bpy_reload_meth", &module ) ) - return NULL; /* try reimporting from file */ newmodule = PyImport_ReloadModule( module ); @@ -280,7 +275,7 @@ static PyObject *blender_reload( PyObject * self, PyObject * args ) } PyMethodDef bpy_import_meth[] = { {"bpy_import_meth", (PyCFunction)blender_import, METH_VARARGS | METH_KEYWORDS, "blenders import"} }; -PyMethodDef bpy_reload_meth[] = { {"bpy_reload_meth", (PyCFunction)blender_reload, METH_VARARGS, "blenders reload"} }; +PyMethodDef bpy_reload_meth[] = { {"bpy_reload_meth", (PyCFunction)blender_reload, METH_O, "blenders reload"} }; /* Clear user modules. diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index be6ef77526e..5298711ef52 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -30,6 +30,7 @@ */ #include #include +#include #ifdef WIN32 #include /* need to include windows.h so _WIN32_IE is defined */ @@ -261,6 +262,9 @@ void WM_read_file(bContext *C, char *name, ReportList *reports) { int retval; + /* so we can get the error message */ + errno = 0; + /* first try to append data from exotic file formats... */ /* it throws error box when file doesnt exist and returns -1 */ /* note; it should set some error message somewhere... (ton) */ @@ -317,7 +321,7 @@ void WM_read_file(bContext *C, char *name, ReportList *reports) BKE_write_undo(C, "Import file"); else if(retval == -1) { if(reports) - BKE_reportf(reports, RPT_ERROR, "Can't read file \"%s\".", name); + BKE_reportf(reports, RPT_ERROR, "Can't read file: \"%s\", %s.", name, errno ? strerror(errno) : "Incompatible file format"); } } From bc957145285c3fb8e57489ba1b56755ea0a0ff44 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 3 Jul 2010 19:06:49 +0000 Subject: [PATCH 271/674] disable ref-counting for groups. groups work differently where they are only removed on load if they include no objects. this was causing groups to be removed by rna if a group's field was cleared and the file was saved (even when it was used elsewhere). --- source/blender/makesrna/intern/rna_group.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/makesrna/intern/rna_group.c b/source/blender/makesrna/intern/rna_group.c index e16d586b5fa..707662e58e0 100644 --- a/source/blender/makesrna/intern/rna_group.c +++ b/source/blender/makesrna/intern/rna_group.c @@ -110,6 +110,7 @@ void RNA_def_group(BlenderRNA *brna) srna= RNA_def_struct(brna, "Group", "ID"); RNA_def_struct_ui_text(srna, "Group", "Group of Object datablocks"); RNA_def_struct_ui_icon(srna, ICON_GROUP); + RNA_def_struct_clear_flag(srna, STRUCT_ID_REFCOUNT); /* this is done on save/load in readfile.c, removed if no objects are in the group */ prop= RNA_def_property(srna, "dupli_offset", PROP_FLOAT, PROP_TRANSLATION); RNA_def_property_float_sdna(prop, NULL, "dupli_ofs"); From c9627f7883934a6b6a935dfefa964728d083c338 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 3 Jul 2010 20:47:03 +0000 Subject: [PATCH 272/674] home key to center the camera offset. --- .../editors/space_view3d/view3d_edit.c | 86 +++++++++++++------ .../editors/space_view3d/view3d_intern.h | 1 + .../blender/editors/space_view3d/view3d_ops.c | 4 +- 3 files changed, 65 insertions(+), 26 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 39c27bbff93..82cba7759ca 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -728,7 +728,19 @@ static int viewrotate_invoke(bContext *C, wmOperator *op, wmEvent *event) } } -static int ED_operator_view3d_rotate(bContext *C) +static int view3d_camera_active_poll(bContext *C) +{ + if(ED_operator_view3d_active(C)) { + RegionView3D *rv3d= CTX_wm_region_view3d(C); + if(rv3d->persp==RV3D_CAMOB) { + return 1; + } + } + + return 0; +} + +static int view3d_rotate_poll(bContext *C) { if (!ED_operator_view3d_active(C)) { return 0; @@ -754,7 +766,7 @@ void VIEW3D_OT_rotate(wmOperatorType *ot) /* api callbacks */ ot->invoke= viewrotate_invoke; ot->modal= viewrotate_modal; - ot->poll= ED_operator_view3d_rotate; + ot->poll= view3d_rotate_poll; /* flags */ ot->flag= OPTYPE_BLOCKING|OPTYPE_GRAB_POINTER; @@ -1294,6 +1306,18 @@ static int viewhome_exec(bContext *C, wmOperator *op) /* was view3d_home() in 2. return OPERATOR_FINISHED; } +static int viewhome_poll(bContext *C) +{ + if(ED_operator_view3d_active(C)) { + RegionView3D *rv3d= CTX_wm_region_view3d(C); + if(rv3d->persp!=RV3D_CAMOB) { + return 1; + } + } + + return 0; +} + void VIEW3D_OT_view_all(wmOperatorType *ot) { /* identifiers */ @@ -1303,7 +1327,7 @@ void VIEW3D_OT_view_all(wmOperatorType *ot) /* api callbacks */ ot->exec= viewhome_exec; - ot->poll= ED_operator_view3d_active; + ot->poll= viewhome_poll; /* flags */ ot->flag= 0; @@ -1311,6 +1335,7 @@ void VIEW3D_OT_view_all(wmOperatorType *ot) RNA_def_boolean(ot->srna, "center", 0, "Center", ""); } + static int viewselected_exec(bContext *C, wmOperator *op) /* like a localview without local!, was centerview() in 2.4x */ { ARegion *ar= CTX_wm_region(C); @@ -1460,16 +1485,10 @@ static int viewcenter_cursor_exec(bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); if (rv3d) { - if (rv3d->persp==RV3D_CAMOB) { - /* center the camera offset */ - rv3d->camdx= rv3d->camdy= 0.0; - } - else { - /* non camera center */ - float new_ofs[3]; - negate_v3_v3(new_ofs, give_cursor(scene, v3d)); - smooth_view(C, NULL, NULL, new_ofs, NULL, NULL, NULL); - } + /* non camera center */ + float new_ofs[3]; + negate_v3_v3(new_ofs, give_cursor(scene, v3d)); + smooth_view(C, NULL, NULL, new_ofs, NULL, NULL, NULL); if (rv3d->viewlock & RV3D_BOXVIEW) view3d_boxview_copy(CTX_wm_area(C), CTX_wm_region(C)); @@ -1493,6 +1512,32 @@ void VIEW3D_OT_view_center_cursor(wmOperatorType *ot) ot->flag= 0; } +static int view3d_center_camera_exec(bContext *C, wmOperator *op) /* was view3d_home() in 2.4x */ +{ + RegionView3D *rv3d= CTX_wm_region_view3d(C); + + rv3d->camdx= rv3d->camdy= 0.0f; + + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, CTX_wm_view3d(C)); + + return OPERATOR_FINISHED; +} + +void VIEW3D_OT_view_center_camera(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "View Camera Center"; + ot->description = "Center the camera view"; + ot->idname= "VIEW3D_OT_view_center_camera"; + + /* api callbacks */ + ot->exec= view3d_center_camera_exec; + ot->poll= view3d_camera_active_poll; + + /* flags */ + ot->flag= 0; +} + /* ********************* Set render border operator ****************** */ static int render_border_exec(bContext *C, wmOperator *op) @@ -1543,15 +1588,6 @@ static int render_border_exec(bContext *C, wmOperator *op) } -static int view3d_render_border_invoke(bContext *C, wmOperator *op, wmEvent *event) -{ - RegionView3D *rv3d= ED_view3d_context_rv3d(C); - - /* if not in camera view do not exec the operator*/ - if (rv3d->persp == RV3D_CAMOB) return WM_border_select_invoke(C, op, event); - else return OPERATOR_PASS_THROUGH; -} - void VIEW3D_OT_render_border(wmOperatorType *ot) { /* identifiers */ @@ -1560,11 +1596,11 @@ void VIEW3D_OT_render_border(wmOperatorType *ot) ot->idname= "VIEW3D_OT_render_border"; /* api callbacks */ - ot->invoke= view3d_render_border_invoke; + ot->invoke= WM_border_select_invoke; ot->exec= render_border_exec; ot->modal= WM_border_select_modal; - ot->poll= ED_operator_view3d_active; + ot->poll= view3d_camera_active_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2010,7 +2046,7 @@ void VIEW3D_OT_view_orbit(wmOperatorType *ot) /* api callbacks */ ot->exec= vieworbit_exec; - ot->poll= ED_operator_view3d_rotate; + ot->poll= view3d_rotate_poll; /* flags */ ot->flag= 0; diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h index 69e4006770d..3e8bc71c351 100644 --- a/source/blender/editors/space_view3d/view3d_intern.h +++ b/source/blender/editors/space_view3d/view3d_intern.h @@ -75,6 +75,7 @@ void VIEW3D_OT_view_all(struct wmOperatorType *ot); void VIEW3D_OT_viewnumpad(struct wmOperatorType *ot); void VIEW3D_OT_view_selected(struct wmOperatorType *ot); void VIEW3D_OT_view_center_cursor(struct wmOperatorType *ot); +void VIEW3D_OT_view_center_camera(struct wmOperatorType *ot); void VIEW3D_OT_view_pan(struct wmOperatorType *ot); void VIEW3D_OT_view_persportho(struct wmOperatorType *ot); void VIEW3D_OT_add_background_image(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c index 08658cd752d..faeab482f72 100644 --- a/source/blender/editors/space_view3d/view3d_ops.c +++ b/source/blender/editors/space_view3d/view3d_ops.c @@ -70,6 +70,7 @@ void view3d_operatortypes(void) WM_operatortype_append(VIEW3D_OT_remove_background_image); WM_operatortype_append(VIEW3D_OT_view_selected); WM_operatortype_append(VIEW3D_OT_view_center_cursor); + WM_operatortype_append(VIEW3D_OT_view_center_camera); WM_operatortype_append(VIEW3D_OT_select); WM_operatortype_append(VIEW3D_OT_select_border); WM_operatortype_append(VIEW3D_OT_clip_border); @@ -150,7 +151,8 @@ void view3d_keymap(wmKeyConfig *keyconf) RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", WHEELINMOUSE, KM_PRESS, 0, 0)->ptr, "delta", 1); RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", WHEELOUTMOUSE, KM_PRESS, 0, 0)->ptr, "delta", -1); - RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_all", HOMEKEY, KM_PRESS, 0, 0)->ptr, "center", 0); + WM_keymap_add_item(keymap, "VIEW3D_OT_view_center_camera", HOMEKEY, KM_PRESS, 0, 0); /* only with camera view */ + RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_all", HOMEKEY, KM_PRESS, 0, 0)->ptr, "center", 0); /* only without camera view */ RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_all", CKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "center", 1); /* numpad view hotkeys*/ From 6e5a436f56a6d7e69a61393d3a34940aecbf8a92 Mon Sep 17 00:00:00 2001 From: Peter Schlaile Date: Sat, 3 Jul 2010 21:13:08 +0000 Subject: [PATCH 273/674] == Sequencer == This fixes: [#22722] Removing a sequence strip doesnt remove assosiated fcurves by using the same hack that is used for moving curve-data along with the strips on grab. Should be cleaned up (both functions!) by making sequencer-strips finally true IDs. Until that happens, there is only an more or less ugly way of doing that. --- source/blender/blenkernel/intern/sequencer.c | 31 ++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index ddbe748ede9..baeff5a838b 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -213,6 +213,8 @@ void seq_free_strip(Strip *strip) MEM_freeN(strip); } +static void seq_free_animdata(Scene *scene, Sequence *seq); + void seq_free_sequence(Scene *scene, Sequence *seq) { if(seq->strip) seq_free_strip(seq->strip); @@ -236,6 +238,8 @@ void seq_free_sequence(Scene *scene, Sequence *seq) sound_remove_scene_sound(scene, seq->scene_sound); } + seq_free_animdata(scene, seq); + MEM_freeN(seq); } @@ -3842,6 +3846,33 @@ void seq_offset_animdata(Scene *scene, Sequence *seq, int ofs) } } +/* XXX - hackish function needed to remove all fcurves belonging to a sequencer strip */ +static void seq_free_animdata(Scene *scene, Sequence *seq) +{ + char str[32]; + FCurve *fcu; + + if(scene->adt==NULL || scene->adt->action==NULL) + return; + + sprintf(str, "[\"%s\"]", seq->name+2); + + fcu= scene->adt->action->curves.first; + + while (fcu) { + if(strstr(fcu->rna_path, "sequence_editor.sequences_all[") && strstr(fcu->rna_path, str)) { + FCurve *next_fcu = fcu->next; + + BLI_remlink(&scene->adt->action->curves, fcu); + free_fcurve(fcu); + + fcu = next_fcu; + } else { + fcu = fcu->next; + } + } +} + Sequence *get_seq_by_name(ListBase *seqbase, const char *name, int recursive) { From 281902d6eed8be1f2de0a9c3877303672aa8644a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 3 Jul 2010 22:25:22 +0000 Subject: [PATCH 274/674] sequencer re-assign inputs back --- release/scripts/ui/space_sequencer.py | 1 + .../editors/space_sequencer/sequencer_edit.c | 91 +++++++++++++------ .../space_sequencer/sequencer_intern.h | 1 + .../editors/space_sequencer/sequencer_ops.c | 2 + 4 files changed, 65 insertions(+), 30 deletions(-) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index cf88397ced4..d29f4381dc4 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -279,6 +279,7 @@ class SEQUENCER_MT_strip(bpy.types.Menu): layout.separator() layout.operator("sequencer.reload") + layout.operator("sequencer.reassign_inputs") layout.separator() layout.operator("sequencer.lock") layout.operator("sequencer.unlock") diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index b994b0877d7..246355f547e 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -677,36 +677,6 @@ int seq_effect_find_selected(Scene *scene, Sequence *activeseq, int type, Sequen return 1; } -void reassign_inputs_seq_effect(Scene *scene) -{ - Editing *ed= seq_give_editing(scene, FALSE); - Sequence *seq1, *seq2, *seq3, *last_seq = seq_active_get(scene); - char *error_msg; - - if(last_seq==0 || !(last_seq->type & SEQ_EFFECT)) return; - if(ed==NULL) return; - - if(!seq_effect_find_selected(scene, last_seq, last_seq->type, &seq1, &seq2, &seq3, &error_msg)) { - //BKE_report(op->reports, RPT_ERROR, error_msg); // XXX operatorify - return; - } - /* see reassigning would create a cycle */ - if( seq_is_predecessor(seq1, last_seq) || - seq_is_predecessor(seq2, last_seq) || - seq_is_predecessor(seq3, last_seq) - ) { - //BKE_report(op->reports, RPT_ERROR, "Can't reassign inputs: no cycles allowed"); // XXX operatorify - return; - } - - last_seq->seq1 = seq1; - last_seq->seq2 = seq2; - last_seq->seq3 = seq3; - - update_changed_seq_and_deps(scene, last_seq, 1, 1); - -} - static Sequence *del_seq_find_replace_recurs(Scene *scene, Sequence *seq) { Sequence *seq1, *seq2, *seq3; @@ -1458,6 +1428,67 @@ void SEQUENCER_OT_refresh_all(struct wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } +static int sequencer_reassign_inputs_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Sequence *seq1, *seq2, *seq3, *last_seq = seq_active_get(scene); + char *error_msg; + + if(!seq_effect_find_selected(scene, last_seq, last_seq->type, &seq1, &seq2, &seq3, &error_msg)) { + BKE_report(op->reports, RPT_ERROR, error_msg); + return OPERATOR_CANCELLED; + } + /* see reassigning would create a cycle */ + if( seq_is_predecessor(seq1, last_seq) || + seq_is_predecessor(seq2, last_seq) || + seq_is_predecessor(seq3, last_seq) + ) { + BKE_report(op->reports, RPT_ERROR, "Can't reassign inputs: no cycles allowed"); + return OPERATOR_CANCELLED; + } + + last_seq->seq1 = seq1; + last_seq->seq2 = seq2; + last_seq->seq3 = seq3; + + update_changed_seq_and_deps(scene, last_seq, 1, 1); + + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); + + return OPERATOR_FINISHED; +} + +int sequencer_effect_poll(bContext *C) +{ + Scene *scene= CTX_data_scene(C); + Editing *ed= seq_give_editing(scene, FALSE); + + if(ed) { + Sequence *last_seq= seq_active_get(scene); + if(last_seq && (last_seq->type & SEQ_EFFECT)) { + return 1; + } + } + + return 0; +} + +void SEQUENCER_OT_reassign_inputs(struct wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Reassign Inputs"; + ot->idname= "SEQUENCER_OT_reassign_inputs"; + ot->description="Reassign the inputs for the effects strip"; + + /* api callbacks */ + ot->exec= sequencer_reassign_inputs_exec; + ot->poll= sequencer_effect_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + + /* cut operator */ static EnumPropertyItem prop_cut_types[] = { {SEQ_CUT_SOFT, "SOFT", 0, "Soft", ""}, diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h index 71953ff3ddd..df426e91075 100644 --- a/source/blender/editors/space_sequencer/sequencer_intern.h +++ b/source/blender/editors/space_sequencer/sequencer_intern.h @@ -85,6 +85,7 @@ void SEQUENCER_OT_lock(struct wmOperatorType *ot); void SEQUENCER_OT_unlock(struct wmOperatorType *ot); void SEQUENCER_OT_reload(struct wmOperatorType *ot); void SEQUENCER_OT_refresh_all(struct wmOperatorType *ot); +void SEQUENCER_OT_reassign_inputs(struct wmOperatorType *ot); void SEQUENCER_OT_duplicate(struct wmOperatorType *ot); void SEQUENCER_OT_delete(struct wmOperatorType *ot); void SEQUENCER_OT_images_separate(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c index 69457e5c6e8..9f5a97d4446 100644 --- a/source/blender/editors/space_sequencer/sequencer_ops.c +++ b/source/blender/editors/space_sequencer/sequencer_ops.c @@ -63,6 +63,7 @@ void sequencer_operatortypes(void) WM_operatortype_append(SEQUENCER_OT_unlock); WM_operatortype_append(SEQUENCER_OT_reload); WM_operatortype_append(SEQUENCER_OT_refresh_all); + WM_operatortype_append(SEQUENCER_OT_reassign_inputs); WM_operatortype_append(SEQUENCER_OT_duplicate); WM_operatortype_append(SEQUENCER_OT_delete); WM_operatortype_append(SEQUENCER_OT_images_separate); @@ -134,6 +135,7 @@ void sequencer_keymap(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "SEQUENCER_OT_lock", LKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_unlock", LKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0); + WM_keymap_add_item(keymap, "SEQUENCER_OT_reassign_inputs", RKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_reload", RKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); From c7869f9f85989e35c2c030a78c04a4569e4946ff Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 4 Jul 2010 01:56:04 +0000 Subject: [PATCH 275/674] - draw sequence strips within metastrips using their real start/end and channel positions. - dont show color balance unless its enabled. --- release/scripts/ui/space_sequencer.py | 2 +- .../editors/space_sequencer/sequencer_draw.c | 105 ++++++++++++------ 2 files changed, 73 insertions(+), 34 deletions(-) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index d29f4381dc4..ed39a98e86a 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -745,7 +745,7 @@ class SEQUENCER_PT_filter(SequencerButtonsPanel): col.prop(strip, "convert_float") layout.prop(strip, "use_color_balance") - if strip.color_balance: # TODO - need to add this somehow + if strip.use_color_balance and strip.color_balance: # TODO - need to add this somehow row = layout.row() row.active = strip.use_color_balance col = row.column() diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index bf7f053ad71..e50d9b54fa4 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -200,48 +200,88 @@ static void drawseqwave(Sequence *seq, float x1, float y1, float x2, float y2, f } } -static void drawmeta_contents(Scene *scene, Sequence *seqm, float x1, float y1, float x2, float y2) +static void drawmeta_stipple(int value) { - /* Note, this used to use WHILE_SEQ, but it messes up the seq->depth value, (needed by transform when doing overlap checks) - * so for now, just use the meta's immediate children, could be fixed but its only drawing - Campbell */ - Sequence *seq; - float dx; - int nr; - char col[3]; - - nr= BLI_countlist(&seqm->seqbase); - - dx= (x2-x1)/nr; - - if (seqm->flag & SEQ_MUTE) { + if(value) { glEnable(GL_POLYGON_STIPPLE); glPolygonStipple(stipple_halftone); glEnable(GL_LINE_STIPPLE); glLineStipple(1, 0x8888); } - - for (seq= seqm->seqbase.first; seq; seq= seq->next) { - get_seq_color3ubv(scene, seq, col); - - glColor3ubv((GLubyte *)col); - - glRectf(x1, y1, x1+0.9*dx, y2); - - UI_GetColorPtrBlendShade3ubv(col, col, col, 0.0, -30); - glColor3ubv((GLubyte *)col); - - fdrawbox(x1, y1, x1+0.9*dx, y2); - - x1+= dx; - } - - if (seqm->flag & SEQ_MUTE) { + else { glDisable(GL_POLYGON_STIPPLE); glDisable(GL_LINE_STIPPLE); } } +static void drawmeta_contents(Scene *scene, Sequence *seqm, float x1, float y1, float x2, float y2) +{ + /* Note, this used to use WHILE_SEQ, but it messes up the seq->depth value, (needed by transform when doing overlap checks) + * so for now, just use the meta's immediate children, could be fixed but its only drawing - Campbell */ + Sequence *seq; + char col[4]; + + int chan_min= MAXSEQ; + int chan_max= 0; + int chan_range= 0; + float draw_range= y2 - y1; + float draw_height; + + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + if(seqm->flag & SEQ_MUTE) + drawmeta_stipple(1); + + for (seq= seqm->seqbase.first; seq; seq= seq->next) { + chan_min= MIN2(chan_min, seq->machine); + chan_max= MAX2(chan_max, seq->machine); + } + + chan_range= (chan_max - chan_min) + 1; + draw_height= draw_range / chan_range; + + col[3]= 196; /* alpha, used for all meta children */ + + for (seq= seqm->seqbase.first; seq; seq= seq->next) { + if((seq->startdisp > x2 || seq->enddisp < x1) == 0) { + float ym= (seq->machine - chan_min) / (float)(chan_range) * draw_range; + + float x1m= seq->startdisp; + float x2m= seq->enddisp; + float y1m, y2m; + + if((seqm->flag & SEQ_MUTE) == 0 && (seq->flag & SEQ_MUTE)) + drawmeta_stipple(1); + + get_seq_color3ubv(scene, seq, col); + + glColor4ubv((GLubyte *)col); + + if(x1m < x1) x1m= x1; + if(x2m > x2) x2m= x2; + + y1m= y1 + ym + (draw_height * SEQ_STRIP_OFSBOTTOM); + y2m= y1 + ym + (draw_height * SEQ_STRIP_OFSTOP); + + glRectf(x1m, y1m, x2m, y2m); + + UI_GetColorPtrBlendShade3ubv(col, col, col, 0.0, -30); + glColor4ubv((GLubyte *)col); + fdrawbox(x1m, y1m, x2m, y2m); + + if((seqm->flag & SEQ_MUTE) == 0 && (seq->flag & SEQ_MUTE)) + drawmeta_stipple(0); + } + } + + if (seqm->flag & SEQ_MUTE) + drawmeta_stipple(0); + + glDisable(GL_BLEND); +} + /* draw a handle, for each end of a sequence strip */ static void draw_seq_handle(View2D *v2d, Sequence *seq, float pixelx, short direction) { @@ -619,13 +659,12 @@ static void draw_seq_strip(Scene *scene, ARegion *ar, SpaceSeq *sseq, Sequence * glDisable(GL_LINE_STIPPLE); } + if(seq->type==SEQ_META) drawmeta_contents(scene, seq, x1, y1, x2, y2); + /* calculate if seq is long enough to print a name */ x1= seq->startdisp+seq->handsize; x2= seq->enddisp-seq->handsize; - /* but first the contents of a meta */ - if(seq->type==SEQ_META) drawmeta_contents(scene, seq, x1, y1+0.15, x2, y2-0.15); - /* info text on the strip */ if(x1cur.xmin) x1= v2d->cur.xmin; else if(x1>v2d->cur.xmax) x1= v2d->cur.xmax; From 5553f66eb777ff4ee589b91b42258e5e7a6fbfec Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 4 Jul 2010 08:49:54 +0000 Subject: [PATCH 276/674] sequencer - effects strips now add directly above the strips they operate on (almost always what you want) - blend mode for new image/movie/scene/color strips is now cross: without this adjusting alpha will fade to black rather then the strip below. - SEQ_HAS_PATH macro didnt include sound-ram or sound-hd - meta drawing code has misleading variable names (from own commit). --- source/blender/blenkernel/intern/sequencer.c | 4 ++- .../editors/space_sequencer/sequencer_add.c | 17 +++++++++-- .../editors/space_sequencer/sequencer_draw.c | 28 +++++++++---------- source/blender/makesdna/DNA_sequence_types.h | 3 +- .../blender/makesrna/intern/rna_sequencer.c | 4 +-- 5 files changed, 36 insertions(+), 20 deletions(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index baeff5a838b..d0678bc1866 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -3994,6 +3994,7 @@ Sequence *sequencer_add_image_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo seq = alloc_sequence(seqbasep, seq_load->start_frame, seq_load->channel); seq->type= SEQ_IMAGE; + seq->blend_mode= SEQ_CROSS; /* so alpha adjustment fade to the strip below */ /* basic defaults */ seq->strip= strip= MEM_callocN(sizeof(Strip), "strip"); @@ -4085,8 +4086,9 @@ Sequence *sequencer_add_movie_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo return NULL; seq = alloc_sequence(seqbasep, seq_load->start_frame, seq_load->channel); - seq->type= SEQ_MOVIE; + seq->blend_mode= SEQ_CROSS; /* so alpha adjustment fade to the strip below */ + seq->anim= an; seq->anim_preseek = IMB_anim_get_preseek(an); BLI_strncpy(seq->name+2, "Movie", SEQ_NAME_MAXSTR-2); diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index cfcc3b6e81d..36ae475e64b 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -213,8 +213,9 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op) } seq = alloc_sequence(ed->seqbasep, start_frame, channel); - seq->type= SEQ_SCENE; + seq->blend_mode= SEQ_CROSS; /* so alpha adjustment fade to the strip below */ + seq->scene= sce_seq; seq->sfra= sce_seq->r.sfra; @@ -544,7 +545,7 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op) type= RNA_enum_get(op->ptr, "type"); - // XXX We need unique names and move to invoke + // XXX move to invoke if(!seq_effect_find_selected(scene, NULL, type, &seq1, &seq2, &seq3, &error_msg)) { BKE_report(op->reports, RPT_ERROR, error_msg); return OPERATOR_CANCELLED; @@ -603,6 +604,18 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op) else if (seq->type==SEQ_COLOR) { SolidColorVars *colvars= (SolidColorVars *)seq->effectdata; RNA_float_get_array(op->ptr, "color", colvars->col); + seq->blend_mode= SEQ_CROSS; /* so alpha adjustment fade to the strip below */ + + } + + // XXX, this conflicts with giving a channel with invoke, perhaps we should have an active channel + // but for now this is much more usable + if(seq->seq1 || seq->seq2 || seq->seq3) { + int chan= MAX3( seq->seq1 ? seq->seq1->machine : 0, + seq->seq2 ? seq->seq2->machine : 0, + seq->seq3 ? seq->seq3->machine : 0); + if(chan < MAXSEQ) + seq->machine= chan; } if(seq_test_overlap(ed->seqbasep, seq)) shuffle_seq(ed->seqbasep, seq, scene); diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index e50d9b54fa4..e449490516c 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -246,31 +246,31 @@ static void drawmeta_contents(Scene *scene, Sequence *seqm, float x1, float y1, for (seq= seqm->seqbase.first; seq; seq= seq->next) { if((seq->startdisp > x2 || seq->enddisp < x1) == 0) { - float ym= (seq->machine - chan_min) / (float)(chan_range) * draw_range; + float y_chan= (seq->machine - chan_min) / (float)(chan_range) * draw_range; + float x1_chan= seq->startdisp; + float x2_chan= seq->enddisp; + float y1_chan, y2_chan; - float x1m= seq->startdisp; - float x2m= seq->enddisp; - float y1m, y2m; - if((seqm->flag & SEQ_MUTE) == 0 && (seq->flag & SEQ_MUTE)) drawmeta_stipple(1); - + get_seq_color3ubv(scene, seq, col); glColor4ubv((GLubyte *)col); - if(x1m < x1) x1m= x1; - if(x2m > x2) x2m= x2; - - y1m= y1 + ym + (draw_height * SEQ_STRIP_OFSBOTTOM); - y2m= y1 + ym + (draw_height * SEQ_STRIP_OFSTOP); + /* clamp within parent sequence strip bounds */ + if(x1_chan < x1) x1_chan= x1; + if(x2_chan > x2) x2_chan= x2; - glRectf(x1m, y1m, x2m, y2m); + y1_chan= y1 + y_chan + (draw_height * SEQ_STRIP_OFSBOTTOM); + y2_chan= y1 + y_chan + (draw_height * SEQ_STRIP_OFSTOP); + + glRectf(x1_chan, y1_chan, x2_chan, y2_chan); UI_GetColorPtrBlendShade3ubv(col, col, col, 0.0, -30); glColor4ubv((GLubyte *)col); - fdrawbox(x1m, y1m, x2m, y2m); - + fdrawbox(x1_chan, y1_chan, x2_chan, y2_chan); + if((seqm->flag & SEQ_MUTE) == 0 && (seq->flag & SEQ_MUTE)) drawmeta_stipple(0); } diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h index 03a3b75aa1e..4530e91910b 100644 --- a/source/blender/makesdna/DNA_sequence_types.h +++ b/source/blender/makesdna/DNA_sequence_types.h @@ -324,7 +324,8 @@ typedef struct SpeedControlVars { otherwise, you can't really blend, right :) !) */ -#define SEQ_HAS_PATH(_seq) ( (_seq)->type==SEQ_MOVIE || (_seq)->type==SEQ_IMAGE || (_seq)->type==SEQ_SOUND ) + +#define SEQ_HAS_PATH(_seq) (ELEM5((_seq)->type, SEQ_MOVIE, SEQ_IMAGE, SEQ_SOUND, SEQ_RAM_SOUND, SEQ_HD_SOUND)) #endif diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index 4ee4fde0d8a..c7c7888a938 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -308,8 +308,8 @@ static StructRNA* rna_Sequence_refine(struct PointerRNA *ptr) case SEQ_MUL: case SEQ_OVERDROP: return &RNA_EffectSequence; - case SEQ_MULTICAM: - return &RNA_MulticamSequence; + case SEQ_MULTICAM: + return &RNA_MulticamSequence; case SEQ_PLUGIN: return &RNA_PluginSequence; case SEQ_WIPE: From db4d317f6be28cf5141537f48449b70f0a3a38b2 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 4 Jul 2010 09:13:00 +0000 Subject: [PATCH 277/674] 'Copy To Selected' (right click menu item) now works for sequence strips, useful for copying blend modes & opacity --- .../blender/editors/interface/interface_ops.c | 2 ++ .../blender/editors/screen/screen_context.c | 32 ++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/interface/interface_ops.c b/source/blender/editors/interface/interface_ops.c index 419de8eb898..20752099814 100644 --- a/source/blender/editors/interface/interface_ops.c +++ b/source/blender/editors/interface/interface_ops.c @@ -322,6 +322,8 @@ static int copy_to_selected_list(bContext *C, PointerRNA *ptr, ListBase *lb) *lb = CTX_data_collection_get(C, "selected_editable_bones"); else if(RNA_struct_is_a(ptr->type, &RNA_PoseBone)) *lb = CTX_data_collection_get(C, "selected_pose_bones"); + else if(RNA_struct_is_a(ptr->type, &RNA_Sequence)) + *lb = CTX_data_collection_get(C, "selected_editable_sequences"); else return 0; diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c index 2d5af4aa705..de1312501d4 100644 --- a/source/blender/editors/screen/screen_context.c +++ b/source/blender/editors/screen/screen_context.c @@ -29,6 +29,7 @@ #include "DNA_object_types.h" #include "DNA_armature_types.h" +#include "DNA_sequence_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" @@ -36,6 +37,7 @@ #include "BKE_utildefines.h" #include "BKE_global.h" #include "BKE_action.h" +#include "BKE_sequencer.h" #include "RNA_access.h" @@ -66,7 +68,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult "visible_pose_bones", "selected_pose_bones", "active_bone", "active_pose_bone", "active_base", "active_object", "object", "edit_object", "sculpt_object", "vertex_paint_object", "weight_paint_object", - "texture_paint_object", "particle_edit_object", NULL}; + "texture_paint_object", "particle_edit_object", + "selected_sequences", "selected_editable_sequences", /* sequencer */ + NULL}; CTX_data_dir_set(result, dir); return 1; @@ -317,6 +321,32 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult return 1; } + else if(CTX_data_equals(member, "selected_strips")) { + Editing *ed= seq_give_editing(scene, FALSE); + if(ed) { + Sequence *seq; + for (seq= ed->seqbasep->first; seq; seq= seq->next) { + if (seq->flag & SELECT) { + CTX_data_list_add(result, &scene->id, &RNA_Sequence, seq); + } + } + CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); + return 1; + } + } + else if(CTX_data_equals(member, "selected_editable_sequences")) { + Editing *ed= seq_give_editing(scene, FALSE); + if(ed) { + Sequence *seq; + for (seq= ed->seqbasep->first; seq; seq= seq->next) { + if (seq->flag & SELECT && !(seq->flag & SEQ_LOCK)) { + CTX_data_list_add(result, &scene->id, &RNA_Sequence, seq); + } + } + CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); + return 1; + } + } else { return 0; /* not found */ } From ce94f52dbc1f18b805436313d26cdcef804622e9 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Sun, 4 Jul 2010 09:42:00 +0000 Subject: [PATCH 278/674] Fix for [#22714] Constraints stack : move up and move down buttons problem * Constraint template now uses 2 rows as well, when the area width is small. * UI Code could use some code/layout cleanup still, will look into that soon. --- .../ui/properties_object_constraint.py | 4 +- source/blender/editors/include/UI_interface.h | 2 +- .../editors/interface/interface_templates.c | 46 ++++++++++++------- .../editors/object/object_constraint.c | 4 +- .../blender/makesrna/intern/rna_constraint.c | 7 ++- source/blender/makesrna/intern/rna_ui_api.c | 1 + 6 files changed, 42 insertions(+), 22 deletions(-) diff --git a/release/scripts/ui/properties_object_constraint.py b/release/scripts/ui/properties_object_constraint.py index 6288b51020a..0f55c78c1fa 100644 --- a/release/scripts/ui/properties_object_constraint.py +++ b/release/scripts/ui/properties_object_constraint.py @@ -20,6 +20,7 @@ import bpy narrowui = bpy.context.user_preferences.view.properties_width_check +narrowcon = 260 class ConstraintButtonsPanel(bpy.types.Panel): @@ -30,8 +31,9 @@ class ConstraintButtonsPanel(bpy.types.Panel): def draw_constraint(self, context, con): layout = self.layout - box = layout.template_constraint(con) wide_ui = context.region.width > narrowui + compact_con = context.region.width < narrowcon + box = layout.template_constraint(con, compact = compact_con) if box: # match enum type to our functions, avoids a lookup table. diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index db479b45472..35531a2a029 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -676,7 +676,7 @@ void uiTemplateAnyID(uiLayout *layout, struct bContext *C, struct PointerRNA *pt void uiTemplatePathBuilder(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, struct PointerRNA *root_ptr, char *text); uiLayout *uiTemplateModifier(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, int compact); -uiLayout *uiTemplateConstraint(uiLayout *layout, struct PointerRNA *ptr); +uiLayout *uiTemplateConstraint(uiLayout *layout, struct PointerRNA *ptr, int compact); void uiTemplatePreview(uiLayout *layout, struct ID *id, struct ID *parent, struct MTex *slot); void uiTemplateColorRamp(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand); void uiTemplateHistogram(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand); diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 52772aaf0e5..865a4ec8af9 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -944,12 +944,12 @@ static void constraint_active_func(bContext *C, void *ob_v, void *con_v) } /* draw panel showing settings for a constraint */ -static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con) +static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con, int compact) { bPoseChannel *pchan= get_active_posechannel(ob); bConstraintTypeInfo *cti; uiBlock *block; - uiLayout *result= NULL, *col, *box, *row, *subrow; + uiLayout *result= NULL, *col, *col1, *col2, *box, *row, *subrow, *split; PointerRNA ptr; char typestr[32]; short width = 265; @@ -985,13 +985,15 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con) uiLayoutSetContextPointer(col, "constraint", &ptr); box= uiLayoutBox(col); - row= uiLayoutRow(box, 0); + split = uiLayoutSplit(box, 0.35, 0); + + col1= uiLayoutColumn(split, 0); + col2= uiLayoutColumn(split, 0); + row = uiLayoutRow(col1, 0); + subrow = uiLayoutRow(col2, 0); block= uiLayoutGetBlock(box); - subrow= uiLayoutRow(row, 0); - //uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_LEFT); - /* Draw constraint header */ uiBlockSetEmboss(block, UI_EMBOSSN); @@ -999,7 +1001,7 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con) rb_col= (con->flag & CONSTRAINT_ACTIVE)?50:20; /* open/close */ - uiItemR(subrow, &ptr, "expanded", UI_ITEM_R_ICON_ONLY, "", 0); + uiItemR(row, &ptr, "expanded", UI_ITEM_R_ICON_ONLY, "", 0); /* name */ uiBlockSetEmboss(block, UI_EMBOSS); @@ -1008,15 +1010,12 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con) uiBlockSetCol(block, TH_REDALERT);*/ uiDefBut(block, LABEL, B_CONSTRAINT_TEST, typestr, xco+10, yco, 100, 18, NULL, 0.0, 0.0, 0.0, 0.0, ""); - + if(proxy_protected == 0) { uiItemR(subrow, &ptr, "name", 0, "", 0); } else uiItemL(subrow, con->name, 0); - - subrow= uiLayoutRow(row, 0); - //uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_RIGHT); /* proxy-protected constraints cannot be edited, so hide up/down + close buttons */ if (proxy_protected) { @@ -1051,23 +1050,36 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con) show_upbut= ((prev_proxylock == 0) && (con->prev)); show_downbut= (con->next) ? 1 : 0; + uiLayoutSetOperatorContext(subrow, WM_OP_INVOKE_DEFAULT); + + if (compact) { + /* Draw "Delete" Button in first row, before splitting */ + uiBlockSetEmboss(block, UI_EMBOSSN); + uiItemO(subrow, "", ICON_X, "CONSTRAINT_OT_delete"); + uiBlockSetEmboss(block, UI_EMBOSS); + + subrow = uiLayoutRow(col2, 0); + } + if (show_upbut || show_downbut) { uiBlockBeginAlign(block); uiBlockSetEmboss(block, UI_EMBOSS); if (show_upbut) - uiDefIconButO(block, BUT, "CONSTRAINT_OT_move_up", WM_OP_INVOKE_DEFAULT, ICON_TRIA_UP, xco+width-50, yco, 16, 18, "Move constraint up in constraint stack"); + uiItemO(subrow, "", ICON_TRIA_UP, "CONSTRAINT_OT_move_up"); if (show_downbut) - uiDefIconButO(block, BUT, "CONSTRAINT_OT_move_down", WM_OP_INVOKE_DEFAULT, ICON_TRIA_DOWN, xco+width-50+18, yco, 16, 18, "Move constraint down in constraint stack"); + uiItemO(subrow, "", ICON_TRIA_DOWN, "CONSTRAINT_OT_move_down"); uiBlockEndAlign(block); } /* Close 'button' - emboss calls here disable drawing of 'button' behind X */ uiBlockSetEmboss(block, UI_EMBOSSN); - uiDefIconButBitS(block, ICONTOGN, CONSTRAINT_OFF, B_CONSTRAINT_TEST, ICON_CHECKBOX_DEHLT, xco+243, yco, 19, 19, &con->flag, 0.0, 0.0, 0.0, 0.0, "enable/disable constraint"); + uiItemR(subrow, &ptr, "enabled", 0, "", 0); - uiDefIconButO(block, BUT, "CONSTRAINT_OT_delete", WM_OP_INVOKE_DEFAULT, ICON_X, xco+262, yco, 19, 19, "Delete constraint"); + if (!compact) { + uiItemO(subrow, "", ICON_X, "CONSTRAINT_OT_delete"); + } uiBlockSetEmboss(block, UI_EMBOSS); } @@ -1093,7 +1105,7 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con) return result; } -uiLayout *uiTemplateConstraint(uiLayout *layout, PointerRNA *ptr) +uiLayout *uiTemplateConstraint(uiLayout *layout, PointerRNA *ptr, int compact) { Object *ob; bConstraint *con; @@ -1121,7 +1133,7 @@ uiLayout *uiTemplateConstraint(uiLayout *layout, PointerRNA *ptr) return NULL; } - return draw_constraint(layout, ob, con); + return draw_constraint(layout, ob, con, compact); } diff --git a/source/blender/editors/object/object_constraint.c b/source/blender/editors/object/object_constraint.c index 7b61d8de43f..b1dc41531ef 100644 --- a/source/blender/editors/object/object_constraint.c +++ b/source/blender/editors/object/object_constraint.c @@ -866,7 +866,7 @@ void CONSTRAINT_OT_move_down (wmOperatorType *ot) /* identifiers */ ot->name= "Move Constraint Down"; ot->idname= "CONSTRAINT_OT_move_down"; - ot->description= "Move constraint down constraint stack"; + ot->description= "Move constraint down in constraint stack"; /* callbacks */ ot->exec= constraint_move_down_exec; @@ -913,7 +913,7 @@ void CONSTRAINT_OT_move_up (wmOperatorType *ot) /* identifiers */ ot->name= "Move Constraint Up"; ot->idname= "CONSTRAINT_OT_move_up"; - ot->description= "Move constraint up constraint stack"; + ot->description= "Move constraint up in constraint stack"; /* callbacks */ ot->exec= constraint_move_up_exec; diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index d126f8543c6..a7f2761526e 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -1937,11 +1937,16 @@ void RNA_def_constraint(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Target Space", "Space that target is evaluated in"); /* flags */ + prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_OFF); + RNA_def_property_ui_text(prop, "Enabled", "Enable/Disable Constraint"); + RNA_def_property_ui_icon(prop, ICON_CHECKBOX_DEHLT, 1); + prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_EXPAND); RNA_def_property_ui_text(prop, "Expanded", "Constraint's panel is expanded in UI"); RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1); - + // XXX this is really an internal flag, but it may be useful for some tools to be able to access this... prop= RNA_def_property(srna, "disabled", PROP_BOOLEAN, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_EDITABLE); diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c index 29d871dd66e..16864985289 100644 --- a/source/blender/makesrna/intern/rna_ui_api.c +++ b/source/blender/makesrna/intern/rna_ui_api.c @@ -317,6 +317,7 @@ void RNA_api_ui_layout(StructRNA *srna) RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR|PROP_NEVER_NULL); parm= RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in."); RNA_def_function_return(func, parm); + RNA_def_boolean(func, "compact", 0, "", "Show a smaller version of the template, split on two lines."); func= RNA_def_function(srna, "template_preview", "uiTemplatePreview"); parm= RNA_def_pointer(func, "id", "ID", "", "ID datablock."); From 8e97e561a9b0a9ab48675699c525410f4ad8a928 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 4 Jul 2010 10:02:30 +0000 Subject: [PATCH 279/674] convenience functionality for browse button (requested by Colin for the sequence editor, useful for managing files for the final edit) - Holding Alt while clocking on the browse button opens a file browser with the containing dir. - Holding Shift opens the file its self in the default application. obscure but at least theres a tooltip so its not totally hidden. --- release/scripts/op/wm.py | 35 ++++++++++++ .../editors/interface/interface_layout.c | 2 +- .../editors/space_buttons/buttons_ops.c | 54 ++++++++++++++----- 3 files changed, 76 insertions(+), 15 deletions(-) diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py index 5ef79887228..481df3488b8 100644 --- a/release/scripts/op/wm.py +++ b/release/scripts/op/wm.py @@ -430,6 +430,40 @@ class WM_OT_url_open(bpy.types.Operator): return {'FINISHED'} +class WM_OT_path_open(bpy.types.Operator): + "Open a path in a file browser" + bl_idname = "wm.path_open" + bl_label = "" + + filepath = StringProperty(name="File Path", maxlen= 1024) + + def execute(self, context): + import sys + import os + import subprocess + + filepath = bpy.utils.expandpath(self.properties.filepath) + filepath = os.path.normpath(filepath) + + if not os.path.exists(filepath): + self.report({'ERROR'}, "File '%s' not found" % filepath) + return {'CANCELLED'} + + if sys.platform == 'win32': + subprocess.Popen(['start', filepath], shell= True) + elif sys.platform == 'darwin': + subprocess.Popen(['open', filepath]) + else: + try: + subprocess.Popen(['xdg-open', filepath]) + except OSError: + # xdg-open *should* be supported by recent Gnome, KDE, Xfce + pass + + return {'FINISHED'} + + + class WM_OT_doc_view(bpy.types.Operator): '''Load online reference docs''' bl_idname = "wm.doc_view" @@ -562,6 +596,7 @@ classes = [ WM_OT_context_modal_mouse, WM_OT_url_open, + WM_OT_path_open, WM_OT_doc_view, WM_OT_doc_edit, diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index 0caa8fb71ea..b7b9a2156ef 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -513,7 +513,7 @@ static uiBut *ui_item_with_label(uiLayout *layout, uiBlock *block, char *name, i uiDefAutoButR(block, ptr, prop, index, "", icon, x, y, w-UI_UNIT_X, h); /* BUTTONS_OT_file_browse calls uiFileBrowseContextProperty */ - but= uiDefIconButO(block, BUT, "BUTTONS_OT_file_browse", WM_OP_INVOKE_DEFAULT, ICON_FILESEL, x, y, UI_UNIT_X, h, "Browse for file or directory"); + but= uiDefIconButO(block, BUT, "BUTTONS_OT_file_browse", WM_OP_INVOKE_DEFAULT, ICON_FILESEL, x, y, UI_UNIT_X, h, NULL); } else if(subtype == PROP_DIRECTION) { uiDefButR(block, BUT_NORMAL, 0, name, x, y, 100, 100, ptr, RNA_property_identifier(prop), index, 0, 0, -1, -1, NULL); diff --git a/source/blender/editors/space_buttons/buttons_ops.c b/source/blender/editors/space_buttons/buttons_ops.c index 765805aa65d..ebdc0d37b43 100644 --- a/source/blender/editors/space_buttons/buttons_ops.c +++ b/source/blender/editors/space_buttons/buttons_ops.c @@ -32,7 +32,10 @@ #include "DNA_userdef_types.h" +#include "BLI_fileops.h" + #include "BKE_context.h" +#include "BKE_global.h" /* G.sce only */ #include "WM_api.h" #include "WM_types.h" @@ -120,30 +123,53 @@ static int file_browse_invoke(bContext *C, wmOperator *op, wmEvent *event) if(!prop) return OPERATOR_CANCELLED; - - fbo= MEM_callocN(sizeof(FileBrowseOp), "FileBrowseOp"); - fbo->ptr= ptr; - fbo->prop= prop; - op->customdata= fbo; str= RNA_property_string_get_alloc(&ptr, prop, 0, 0); - RNA_string_set(op->ptr, "filepath", str); - MEM_freeN(str); - if(RNA_struct_find_property(op->ptr, "relative_path")) - if(!RNA_property_is_set(op->ptr, "relative_path")) - RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + /* useful yet irritating feature, Shift+Click to open the file + * Alt+Click to browse a folder in the OS's browser */ + if(event->shift || event->alt) { + PointerRNA props_ptr; - WM_event_add_fileselect(C, op); - - return OPERATOR_RUNNING_MODAL; + if(event->alt) { + char *lslash= BLI_last_slash(str); + if(lslash) + *lslash= '\0'; + } + + + WM_operator_properties_create(&props_ptr, "WM_OT_path_open"); + RNA_string_set(&props_ptr, "filepath", str); + WM_operator_name_call(C, "WM_OT_path_open", WM_OP_EXEC_DEFAULT, &props_ptr); + WM_operator_properties_free(&props_ptr); + + MEM_freeN(str); + return OPERATOR_CANCELLED; + } + else { + fbo= MEM_callocN(sizeof(FileBrowseOp), "FileBrowseOp"); + fbo->ptr= ptr; + fbo->prop= prop; + op->customdata= fbo; + + RNA_string_set(op->ptr, "filepath", str); + MEM_freeN(str); + + if(RNA_struct_find_property(op->ptr, "relative_path")) + if(!RNA_property_is_set(op->ptr, "relative_path")) + RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + + WM_event_add_fileselect(C, op); + + return OPERATOR_RUNNING_MODAL; + } } void BUTTONS_OT_file_browse(wmOperatorType *ot) { /* identifiers */ ot->name= "Accept"; - ot->description="Open a file browser"; + ot->description="Open a file browser, Hold Shift to open the file, Alt to browse containing directory"; ot->idname= "BUTTONS_OT_file_browse"; /* api callbacks */ From 4a6cc10d756ddccf1912daaa6cef1d1e25538c0c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 4 Jul 2010 10:22:31 +0000 Subject: [PATCH 280/674] swap strip data wasnt updating sounds --- source/blender/editors/space_sequencer/sequencer_edit.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 246355f547e..1baf30ccc65 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -2681,6 +2681,10 @@ static int sequencer_swap_data_exec(bContext *C, wmOperator *op) calc_sequence(scene, seq_act); calc_sequence(scene, seq_other); + /* sound needs to be moved */ + if(seq_act->scene_sound) calc_sequence_disp(scene, seq_act); + if(seq_other->scene_sound) calc_sequence_disp(scene, seq_other); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; From 8aa0f9b033eff5aa4f6b66d3148d6379a60ebf06 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 4 Jul 2010 10:51:10 +0000 Subject: [PATCH 281/674] last fix still could give corrupt sound, rather then updating the sound info just add and remove the sound handle. --- source/blender/blenkernel/intern/sequencer.c | 4 ++-- .../blender/editors/space_sequencer/sequencer_edit.c | 11 ++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index d0678bc1866..e21901f70d9 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -549,8 +549,8 @@ void calc_sequence(Scene *scene, Sequence *seq) if(seq->type==SEQ_META) { seqm= seq->seqbase.first; if(seqm) { - min= 1000000; - max= -1000000; + min= MAXFRAME * 2; + max= -MAXFRAME * 2; while(seqm) { if(seqm->startdisp < min) min= seqm->startdisp; if(seqm->enddisp > max) max= seqm->enddisp; diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 1baf30ccc65..9e52c2f4e38 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -2678,12 +2678,17 @@ static int sequencer_swap_data_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } + sound_remove_scene_sound(scene, seq_act->scene_sound); + sound_remove_scene_sound(scene, seq_other->scene_sound); + + seq_act->scene_sound= NULL; + seq_other->scene_sound= NULL; + calc_sequence(scene, seq_act); calc_sequence(scene, seq_other); - /* sound needs to be moved */ - if(seq_act->scene_sound) calc_sequence_disp(scene, seq_act); - if(seq_other->scene_sound) calc_sequence_disp(scene, seq_other); + if(seq_act->sound) sound_add_scene_sound(scene, seq_act, seq_act->startdisp, seq_act->enddisp, seq_act->startofs + seq_act->anim_startofs); + if(seq_other->sound) sound_add_scene_sound(scene, seq_other, seq_other->startdisp, seq_other->enddisp, seq_other->startofs + seq_other->anim_startofs); WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); From f9933b2fee786c0ba6341da0f151581fd768c921 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 4 Jul 2010 11:56:31 +0000 Subject: [PATCH 282/674] commenting group timeoffset since it causes groups objects to recalculate modifiers etc. constantly even when animation isnt playing. --- source/blender/blenkernel/intern/group.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/group.c b/source/blender/blenkernel/intern/group.c index c8848572643..5f68c990ed2 100644 --- a/source/blender/blenkernel/intern/group.c +++ b/source/blender/blenkernel/intern/group.c @@ -328,6 +328,11 @@ void group_handle_recalc_and_update(Scene *scene, Object *parent, Group *group) { GroupObject *go; +#if 0 /* warning, isnt clearing the recalc flag on the object which causes it to run all the time, + * not just on frame change. + * This isnt working because the animation data is only re-evalyated on frame change so commenting for now + * but when its enabled at some point it will need to be changed so as not to update so much - campbell */ + /* if animated group... */ if(give_timeoffset(parent) != 0.0f || parent->nlastrips.first) { int cfrao; @@ -353,7 +358,9 @@ void group_handle_recalc_and_update(Scene *scene, Object *parent, Group *group) /* restore */ scene->r.cfra= cfrao; } - else { + else +#endif + { /* only do existing tags, as set by regular depsgraph */ for(go= group->gobject.first; go; go= go->next) { if(go->ob) { From ace570cb1024f0b3affd48b2f2104af3048d1707 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Sun, 4 Jul 2010 12:16:01 +0000 Subject: [PATCH 283/674] Fix for 15-day-old bug causing crashes when loading old 2.49 files, especially those with animation. Reverting 29563 ("* Moved do_versions_ipos_to_animato from blender.c to readfile.c, where it should be.") part to the original version that (so far) is guaranteed to work fine. While this means that "nice software design" isn't obeyed once again, this works and the other approach doesn't. So far there really isn't anything really obviously different between the approaches, even after trying a few different placements of the version patches within the file-reading internals. --- source/blender/blenkernel/intern/blender.c | 6 ++++++ source/blender/blenloader/intern/readfile.c | 7 ++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index 134d49cdf24..9a97d975ede 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -64,6 +64,7 @@ #include "BKE_displist.h" #include "BKE_global.h" #include "BKE_idprop.h" +#include "BKE_ipo.h" #include "BKE_library.h" #include "BKE_main.h" #include "BKE_node.h" @@ -286,6 +287,11 @@ static void setup_app_data(bContext *C, BlendFileData *bfd, char *filename) //setscreen(G.curscreen); } + // FIXME: this version patching should really be part of the file-reading code, + // but we still get too many unrelated data-corruption crashes otherwise... + if (G.main->versionfile < 250) + do_versions_ipos_to_animato(G.main); + if(recover && bfd->filename[0] && G.relbase_valid) { /* in case of autosave or quit.blend, use original filename instead * use relbase_valid to make sure the file is saved, else we get in the filename */ diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 50a56c74cf5..cefc6edb5a3 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10953,13 +10953,14 @@ static void do_versions(FileData *fd, Library *lib, Main *main) /* don't forget to set version number in blender.c! */ } +#if 0 // XXX: disabled for now... we still don't have this in the right place in the loading code for it to work static void do_versions_after_linking(FileData *fd, Library *lib, Main *main) { - /* old Animation System (using IPO's) needs to be converted to the new Animato system - */ + /* old Animation System (using IPO's) needs to be converted to the new Animato system */ if(main->versionfile < 250) do_versions_ipos_to_animato(main); } +#endif static void lib_link_all(FileData *fd, Main *main) { @@ -11107,7 +11108,7 @@ BlendFileData *blo_read_file_internal(FileData *fd, const char *filename) blo_join_main(&fd->mainlist); lib_link_all(fd, bfd->main); - do_versions_after_linking(fd, NULL, bfd->main); + //do_versions_after_linking(fd, NULL, bfd->main); // XXX: not here (or even in this function at all)! this causes crashes on many files - Aligorith (July 04, 2010) lib_verify_nodetree(bfd->main, 1); fix_relpaths_library(fd->relabase, bfd->main); /* make all relative paths, relative to the open blend file */ From 90162cb0cb4ad432a7453c7d5ec7de832a058f16 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sun, 4 Jul 2010 12:24:19 +0000 Subject: [PATCH 284/674] Fix #21894: backface selection wasn't working correct with < 24 bits colors, e.g. thousands of colors on OS X, due to use of uninitialized value. Problem tracked down and patch provided by Shane Ambler, thanks! --- source/blender/gpu/GPU_extensions.h | 2 +- source/blender/gpu/intern/gpu_extensions.c | 16 +++++----- source/blender/windowmanager/intern/wm_draw.c | 2 +- .../windowmanager/intern/wm_subwindow.c | 30 ++++--------------- 4 files changed, 16 insertions(+), 34 deletions(-) diff --git a/source/blender/gpu/GPU_extensions.h b/source/blender/gpu/GPU_extensions.h index 6b98ffdede7..5275f8988a8 100644 --- a/source/blender/gpu/GPU_extensions.h +++ b/source/blender/gpu/GPU_extensions.h @@ -61,7 +61,7 @@ int GPU_print_error(char *str); int GPU_glsl_support(void); int GPU_non_power_of_two_support(void); -int GPU_24bit_color_support(void); +int GPU_color_depth(void); /* GPU Types */ diff --git a/source/blender/gpu/intern/gpu_extensions.c b/source/blender/gpu/intern/gpu_extensions.c index 4eaf969ee8a..0b7ea605ec8 100644 --- a/source/blender/gpu/intern/gpu_extensions.c +++ b/source/blender/gpu/intern/gpu_extensions.c @@ -71,7 +71,7 @@ static struct GPUGlobal { GLuint currentfb; int glslsupport; int extdisabled; - int color24bit; + int colordepth; GPUDeviceType device; GPUOSType os; GPUDriverType driver; @@ -93,7 +93,7 @@ void GPU_extensions_disable() void GPU_extensions_init() { - GLint bits; + GLint r, g, b; const char *vendor, *renderer; glewInit(); @@ -108,9 +108,11 @@ void GPU_extensions_init() if (!GLEW_ARB_vertex_shader) GG.glslsupport = 0; if (!GLEW_ARB_fragment_shader) GG.glslsupport = 0; - glGetIntegerv(GL_RED_BITS, &bits); - GG.color24bit = (bits >= 8); - + glGetIntegerv(GL_RED_BITS, &r); + glGetIntegerv(GL_GREEN_BITS, &g); + glGetIntegerv(GL_BLUE_BITS, &b); + GG.colordepth = r+g+b; /* assumes same depth for RGB */ + vendor = (const char*)glGetString(GL_VENDOR); renderer = (const char*)glGetString(GL_RENDERER); @@ -178,9 +180,9 @@ int GPU_non_power_of_two_support() return GLEW_ARB_texture_non_power_of_two; } -int GPU_24bit_color_support() +int GPU_color_depth() { - return GG.color24bit; + return GG.colordepth; } int GPU_print_error(char *str) diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index d2afef3b117..5dbbf35796f 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -682,7 +682,7 @@ static int wm_automatic_draw_method(wmWindow *win) /* Windows software driver darkens color on each redraw */ else if(GPU_type_matches(GPU_DEVICE_SOFTWARE, GPU_OS_WIN, GPU_DRIVER_SOFTWARE)) return USER_DRAW_OVERLAP_FLIP; - else if(!GPU_24bit_color_support()) + else if(GPU_color_depth() < 24) return USER_DRAW_OVERLAP; else return USER_DRAW_TRIPLE; diff --git a/source/blender/windowmanager/intern/wm_subwindow.c b/source/blender/windowmanager/intern/wm_subwindow.c index f512434a141..207b6cebfe6 100644 --- a/source/blender/windowmanager/intern/wm_subwindow.c +++ b/source/blender/windowmanager/intern/wm_subwindow.c @@ -45,6 +45,8 @@ #include "BIF_gl.h" +#include "GPU_extensions.h" + #include "WM_api.h" #include "wm_subwindow.h" #include "wm_window.h" @@ -301,28 +303,6 @@ void wmOrtho2(float x1, float x2, float y1, float y2) /* *************************** Framebuffer color depth, for selection codes ********************** */ -static int wm_get_colordepth(void) -{ - static int mainwin_color_depth= 0; - - if(mainwin_color_depth==0) { - GLint r, g, b; - - glGetIntegerv(GL_RED_BITS, &r); - glGetIntegerv(GL_GREEN_BITS, &g); - glGetIntegerv(GL_BLUE_BITS, &b); - - mainwin_color_depth= r + g + b; - if(G.f & G_DEBUG) { - printf("Color depth r %d g %d b %d\n", (int)r, (int)g, (int)b); - glGetIntegerv(GL_AUX_BUFFERS, &r); - printf("Aux buffers: %d\n", (int)r); - } - } - return mainwin_color_depth; -} - - #ifdef __APPLE__ /* apple seems to round colors to below and up on some configs */ @@ -331,7 +311,7 @@ unsigned int index_to_framebuffer(int index) { unsigned int i= index; - switch(wm_get_colordepth()) { + switch(GPU_color_depth()) { case 12: i= ((i & 0xF00)<<12) + ((i & 0xF0)<<8) + ((i & 0xF)<<4); /* sometimes dithering subtracts! */ @@ -361,7 +341,7 @@ unsigned int index_to_framebuffer(int index) { unsigned int i= index; - switch(wm_get_colordepth()) { + switch(GPU_color_depth()) { case 8: i= ((i & 48)<<18) + ((i & 12)<<12) + ((i & 3)<<6); i |= 0x3F3F3F; @@ -398,7 +378,7 @@ int WM_framebuffer_to_index(unsigned int col) { if (col==0) return 0; - switch(wm_get_colordepth()) { + switch(GPU_color_depth()) { case 8: return ((col & 0xC00000)>>18) + ((col & 0xC000)>>12) + ((col & 0xC0)>>6); case 12: From 3ca7b160a664e74c6815056a4a8596bb4c2b70be Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sun, 4 Jul 2010 12:26:46 +0000 Subject: [PATCH 285/674] Fix #22028: rendering from 3d view was OR-ing with scene render layers, this isn't helpful, so just use 3d view layers. --- source/blender/editors/render/render_internal.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c index 48ad3bbcc94..3634c10e147 100644 --- a/source/blender/editors/render/render_internal.c +++ b/source/blender/editors/render/render_internal.c @@ -403,7 +403,7 @@ static int screen_render_exec(bContext *C, wmOperator *op) Render *re= RE_NewRender(scene->id.name); Image *ima; View3D *v3d= CTX_wm_view3d(C); - int lay= (v3d)? v3d->lay|scene->lay: scene->lay; + int lay= (v3d)? v3d->lay: scene->lay; if(re==NULL) { re= RE_NewRender(scene->id.name); @@ -666,7 +666,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event) rj->scene= scene; rj->win= CTX_wm_window(C); rj->srl = srl; - rj->lay = (v3d)? v3d->lay|scene->lay: scene->lay; + rj->lay = (v3d)? v3d->lay: scene->lay; rj->anim= RNA_boolean_get(op->ptr, "animation"); rj->iuser.scene= scene; rj->iuser.ok= 1; From ca81aa704e958a73a55e79654f70eaa9a0fad85a Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Sun, 4 Jul 2010 15:35:23 +0000 Subject: [PATCH 286/674] Patch [#22339] File/installation paths changes Patch Tracker: http://projects.blender.org/tracker/?func=detail&aid=22339&group_id=9&atid=127 This patch implements the proposal outlined here: http://wiki.blender.org/index.php/Dev:2.5/Source/Installation/Proposal Original patch by Matt Ebb. Contributions by Nathan Letwory, Damien Plisson and Andrea Weikert NOTE: This is a work in progress commit, some work still needs to be done on the SCons and CMake files for this to work properly, but at least should compile and the files should be created in the right directory. Commit discussed on IRC with Ton and Campbell. --- SConstruct | 23 +- intern/ghost/GHOST_C-api.h | 14 - intern/ghost/GHOST_ISystem.h | 18 - intern/ghost/intern/GHOST_C-api.cpp | 12 - intern/ghost/intern/GHOST_System.h | 14 - intern/ghost/intern/GHOST_SystemCarbon.cpp | 20 -- intern/ghost/intern/GHOST_SystemCarbon.h | 14 - intern/ghost/intern/GHOST_SystemCocoa.h | 14 - intern/ghost/intern/GHOST_SystemCocoa.mm | 58 --- intern/ghost/intern/GHOST_SystemWin32.cpp | 10 - intern/ghost/intern/GHOST_SystemWin32.h | 14 - intern/ghost/intern/GHOST_SystemX11.cpp | 19 - intern/ghost/intern/GHOST_SystemX11.h | 14 - release/scripts/ui/space_info.py | 22 -- source/blender/blenfont/intern/blf_lang.c | 60 +--- source/blender/blenkernel/SConscript | 1 + source/blender/blenkernel/intern/blender.c | 3 +- source/blender/blenlib/BLI_path_util.h | 61 +++- source/blender/blenlib/CMakeLists.txt | 4 + source/blender/blenlib/intern/BLI_bfile.c | 223 ------------ source/blender/blenlib/intern/path_util.c | 334 ++++++++++++++++-- .../blender/blenlib/intern/path_util_cocoa.mm | 96 +++++ source/blender/blenloader/intern/writefile.c | 2 +- .../editors/interface/interface_icons.c | 43 +-- source/blender/editors/space_file/file_ops.c | 6 +- source/blender/editors/space_file/fsmenu.c | 56 +-- source/blender/editors/space_file/fsmenu.h | 5 +- .../blender/editors/space_file/space_file.c | 13 +- source/blender/editors/space_image/SConscript | 1 + .../blender/editors/space_info/space_info.c | 31 +- source/blender/makesrna/SConscript | 3 +- source/blender/python/intern/bpy.c | 2 +- source/blender/python/intern/bpy_interface.c | 2 +- .../blender/windowmanager/intern/wm_files.c | 35 +- .../windowmanager/intern/wm_init_exit.c | 2 +- source/blender/windowmanager/wm_files.h | 2 +- source/creator/CMakeLists.txt | 19 +- tools/Blender.py | 2 + tools/btools.py | 13 +- 39 files changed, 633 insertions(+), 652 deletions(-) create mode 100644 source/blender/blenlib/intern/path_util_cocoa.mm diff --git a/SConstruct b/SConstruct index 531d89b6447..0b985f3321a 100644 --- a/SConstruct +++ b/SConstruct @@ -437,6 +437,8 @@ else: #-- .blender #- dont do .blender and scripts for darwin, it is already in the bundle dotblendlist = [] +datafileslist = [] +datafilestargetlist = [] dottargetlist = [] scriptinstall = [] @@ -455,17 +457,26 @@ if env['OURPLATFORM']!='darwin': if f.endswith('.ttf'): continue - dotblendlist.append(os.path.join(dp, f)) - if env['WITH_BF_FHS']: dir= os.path.join(*([BLENDERPATH] + dp.split(os.sep)[2:])) # skip bin/.blender - else: dir= os.path.join(*([BLENDERPATH] + dp.split(os.sep)[1:])) # skip bin - - dottargetlist.append(dir + os.sep + f) - + if 'locale' in dp: + datafileslist.append(os.path.join(dp,f)) + if env['WITH_BF_FHS']: dir= os.path.join(*([BLENDERPATH] + ['datafiles'] + dp.split(os.sep)[2:])) # skip bin/.blender + else: dir= os.path.join(*([BLENDERPATH] + ['.blender'] + ['datafiles'] + dp.split(os.sep)[1:])) # skip bin + datafilestargetlist.append(dir + os.sep + f) + else: + dotblendlist.append(os.path.join(dp, f)) + if env['WITH_BF_FHS']: dir= os.path.join(*([BLENDERPATH] + ['config'] + dp.split(os.sep)[2:])) # skip bin/.blender + else: dir= os.path.join(*([BLENDERPATH] + ['.blender'] + ['config'] + dp.split(os.sep)[1:])) # 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']: #-- .blender/scripts diff --git a/intern/ghost/GHOST_C-api.h b/intern/ghost/GHOST_C-api.h index a5fec1f101c..28fa72f9700 100644 --- a/intern/ghost/GHOST_C-api.h +++ b/intern/ghost/GHOST_C-api.h @@ -836,20 +836,6 @@ extern GHOST_TUns8* GHOST_getClipboard(int selection); */ extern void GHOST_putClipboard(GHOST_TInt8 *buffer, int selection); -/** - * Determine the base dir in which shared resources are located. It will first try to use - * "unpack and run" path, then look for properly installed path, not including versioning. - * @return Unsigned char string pointing to system dir (eg /usr/share/blender/). - */ -extern const GHOST_TUns8* GHOST_getSystemDir(); - -/** - * Determine the base dir in which user configuration is stored, not including versioning. - * If needed, it will create the base directory. - * @return Unsigned char string pointing to user dir (eg ~/.blender/). - */ -extern const GHOST_TUns8* GHOST_getUserDir(); - #ifdef __cplusplus } diff --git a/intern/ghost/GHOST_ISystem.h b/intern/ghost/GHOST_ISystem.h index 8d80c74e140..b4dc88369f4 100644 --- a/intern/ghost/GHOST_ISystem.h +++ b/intern/ghost/GHOST_ISystem.h @@ -371,24 +371,6 @@ public: virtual void putClipboard(GHOST_TInt8 *buffer, bool selection) const = 0; - /*************************************************************************************** - ** Determine special paths. - ***************************************************************************************/ - - /** - * Determine the base dir in which shared resources are located. It will first try to use - * "unpack and run" path, then look for properly installed path, not including versioning. - * @return Unsigned char string pointing to system dir (eg /usr/share/blender/). - */ - virtual const GHOST_TUns8* getSystemDir() const = 0; - - /** - * Determine the base dir in which user configuration is stored, not including versioning. - * If needed, it will create the base directory. - * @return Unsigned char string pointing to user dir (eg ~/.blender/). - */ - virtual const GHOST_TUns8* getUserDir() const = 0; - protected: /** * Initialize the system. diff --git a/intern/ghost/intern/GHOST_C-api.cpp b/intern/ghost/intern/GHOST_C-api.cpp index 9da20200f63..839d85c9617 100644 --- a/intern/ghost/intern/GHOST_C-api.cpp +++ b/intern/ghost/intern/GHOST_C-api.cpp @@ -865,15 +865,3 @@ void GHOST_putClipboard(GHOST_TInt8 *buffer, int selection) GHOST_ISystem* system = GHOST_ISystem::getSystem(); system->putClipboard(buffer, selection); } - -const GHOST_TUns8* GHOST_getSystemDir() -{ - GHOST_ISystem* system = GHOST_ISystem::getSystem(); - return system->getSystemDir(); -} - -const GHOST_TUns8* GHOST_getUserDir() -{ - GHOST_ISystem* system = GHOST_ISystem::getSystem(); - return system->getUserDir(); -} diff --git a/intern/ghost/intern/GHOST_System.h b/intern/ghost/intern/GHOST_System.h index d6c6a356323..2b45bfb86cf 100644 --- a/intern/ghost/intern/GHOST_System.h +++ b/intern/ghost/intern/GHOST_System.h @@ -297,20 +297,6 @@ public: */ virtual void putClipboard(GHOST_TInt8 *buffer, bool selection) const = 0; - /** - * Determine the base dir in which shared resources are located. It will first try to use - * "unpack and run" path, then look for properly installed path, not including versioning. - * @return Unsigned char string pointing to system dir (eg /usr/share/blender/). - */ - virtual const GHOST_TUns8* getSystemDir() const = 0; - - /** - * Determine the base dir in which user configuration is stored, not including versioning. - * If needed, it will create the base directory. - * @return Unsigned char string pointing to user dir (eg ~/.blender/). - */ - virtual const GHOST_TUns8* getUserDir() const = 0; - protected: /** * Initialize the system. diff --git a/intern/ghost/intern/GHOST_SystemCarbon.cpp b/intern/ghost/intern/GHOST_SystemCarbon.cpp index 5522a0736c4..a4011f89de6 100644 --- a/intern/ghost/intern/GHOST_SystemCarbon.cpp +++ b/intern/ghost/intern/GHOST_SystemCarbon.cpp @@ -1214,23 +1214,3 @@ void GHOST_SystemCarbon::putClipboard(GHOST_TInt8 *buffer, bool selection) const CFRelease(textData); } } - -const GHOST_TUns8* GHOST_SystemCarbon::getSystemDir() const -{ - return (GHOST_TUns8*)"/Library/Application Support/Blender"; -} - -const GHOST_TUns8* GHOST_SystemCarbon::getUserDir() const -{ - static char usrPath[256] = ""; - char* env = getenv("HOME"); - - if (env) { - strncpy(usrPath, env, 245); - usrPath[245]=0; - strcat(usrPath, "/Library/Application Support/Blender"); - return (GHOST_TUns8*) usrPath; - } - else - return NULL; -} diff --git a/intern/ghost/intern/GHOST_SystemCarbon.h b/intern/ghost/intern/GHOST_SystemCarbon.h index ebd929749b6..fd5c61fd7b6 100644 --- a/intern/ghost/intern/GHOST_SystemCarbon.h +++ b/intern/ghost/intern/GHOST_SystemCarbon.h @@ -190,20 +190,6 @@ public: */ virtual void putClipboard(GHOST_TInt8 *buffer, bool selection) const; - /** - * Determine the base dir in which shared resources are located. It will first try to use - * "unpack and run" path, then look for properly installed path, not including versioning. - * @return Unsigned char string pointing to system dir (eg /usr/share/blender/). - */ - virtual const GHOST_TUns8* getSystemDir() const; - - /** - * Determine the base dir in which user configuration is stored, not including versioning. - * If needed, it will create the base directory. - * @return Unsigned char string pointing to user dir (eg ~/.blender/). - */ - virtual const GHOST_TUns8* getUserDir() const; - protected: /** * Initializes the system. diff --git a/intern/ghost/intern/GHOST_SystemCocoa.h b/intern/ghost/intern/GHOST_SystemCocoa.h index b97c36f04a8..e97f8c70521 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.h +++ b/intern/ghost/intern/GHOST_SystemCocoa.h @@ -213,20 +213,6 @@ public: */ virtual void putClipboard(GHOST_TInt8 *buffer, bool selection) const; - /** - * Determine the base dir in which shared resources are located. It will first try to use - * "unpack and run" path, then look for properly installed path, not including versioning. - * @return Unsigned char string pointing to system dir (eg /usr/share/blender/). - */ - virtual const GHOST_TUns8* getSystemDir() const; - - /** - * Determine the base dir in which user configuration is stored, not including versioning. - * If needed, it will create the base directory. - * @return Unsigned char string pointing to user dir (eg ~/.blender/). - */ - virtual const GHOST_TUns8* getUserDir() const; - /** * Handles a window event. Called by GHOST_WindowCocoa window delegate * @param eventType The type of window event diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index 2cec24714be..00b00c69cee 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -1780,61 +1780,3 @@ void GHOST_SystemCocoa::putClipboard(GHOST_TInt8 *buffer, bool selection) const [pool drain]; } - -#pragma mark Base directories retrieval - -const GHOST_TUns8* GHOST_SystemCocoa::getSystemDir() const -{ - static GHOST_TUns8 tempPath[512] = ""; - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSFileManager *fileManager; - NSString *basePath; - NSArray *paths; - - paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSLocalDomainMask, YES); - - if ([paths count] > 0) - basePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Blender"]; - else { //Fall back to standard unix path in case of issue - basePath = @"/usr/share/blender"; - } - - /* Ensure path exists, creates it if needed */ - fileManager = [NSFileManager defaultManager]; - if (![fileManager fileExistsAtPath:basePath isDirectory:NULL]) { - [fileManager createDirectoryAtPath:basePath attributes:nil]; - } - - strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]); - - [pool drain]; - return tempPath; -} - -const GHOST_TUns8* GHOST_SystemCocoa::getUserDir() const -{ - static GHOST_TUns8 tempPath[512] = ""; - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSFileManager *fileManager; - NSString *basePath; - NSArray *paths; - - paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); - - if ([paths count] > 0) - basePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Blender"]; - else { //Fall back to HOME in case of issue - basePath = [NSHomeDirectory() stringByAppendingPathComponent:@".blender"]; - } - - /* Ensure path exists, creates it if needed */ - fileManager = [NSFileManager defaultManager]; - if (![fileManager fileExistsAtPath:basePath isDirectory:NULL]) { - [fileManager createDirectoryAtPath:basePath attributes:nil]; - } - - strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]); - - [pool drain]; - return tempPath; -} diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp index 91c1927f8e7..41cbb72c9b9 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.cpp +++ b/intern/ghost/intern/GHOST_SystemWin32.cpp @@ -1092,13 +1092,3 @@ void GHOST_SystemWin32::putClipboard(GHOST_TInt8 *buffer, bool selection) const return; } } - -const GHOST_TUns8* GHOST_SystemWin32::getSystemDir() const -{ - return NULL; -} - -const GHOST_TUns8* GHOST_SystemWin32::getUserDir() const -{ - return NULL; -} diff --git a/intern/ghost/intern/GHOST_SystemWin32.h b/intern/ghost/intern/GHOST_SystemWin32.h index e65393a4faa..84fca33238f 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.h +++ b/intern/ghost/intern/GHOST_SystemWin32.h @@ -188,20 +188,6 @@ public: virtual void putClipboard(GHOST_TInt8 *buffer, bool selection) const; - /** - * Determine the base dir in which shared resources are located. It will first try to use - * "unpack and run" path, then look for properly installed path, not including versioning. - * @return Unsigned char string pointing to system dir (eg /usr/share/blender/). - */ - virtual const GHOST_TUns8* getSystemDir() const; - - /** - * Determine the base dir in which user configuration is stored, not including versioning. - * If needed, it will create the base directory. - * @return Unsigned char string pointing to user dir (eg ~/.blender/). - */ - virtual const GHOST_TUns8* getUserDir() const; - /** * Creates a drag'n'drop event and pushes it immediately onto the event queue. * Called by GHOST_DropTargetWin32 class. diff --git a/intern/ghost/intern/GHOST_SystemX11.cpp b/intern/ghost/intern/GHOST_SystemX11.cpp index 052c868e5e0..f286f8ae7d3 100644 --- a/intern/ghost/intern/GHOST_SystemX11.cpp +++ b/intern/ghost/intern/GHOST_SystemX11.cpp @@ -1458,22 +1458,3 @@ void GHOST_SystemX11::putClipboard(GHOST_TInt8 *buffer, bool selection) const fprintf(stderr, "failed to own primary\n"); } } - -const GHOST_TUns8* GHOST_SystemX11::getSystemDir() const -{ - return (GHOST_TUns8*)"/usr/share/blender"; -} - -const GHOST_TUns8* GHOST_SystemX11::getUserDir() const -{ - static char path[256]; - char* env = getenv("HOME"); - if(env) { - strncpy(path, env, 245); - path[245]=0; - strcat(path, "/.blender/"); - return (GHOST_TUns8*) path; - } else { - return NULL; - } -} diff --git a/intern/ghost/intern/GHOST_SystemX11.h b/intern/ghost/intern/GHOST_SystemX11.h index ee6cbedb2ae..6a4ff1b41c7 100644 --- a/intern/ghost/intern/GHOST_SystemX11.h +++ b/intern/ghost/intern/GHOST_SystemX11.h @@ -226,20 +226,6 @@ public: */ void putClipboard(GHOST_TInt8 *buffer, bool selection) const; - /** - * Determine the base dir in which shared resources are located. It will first try to use - * "unpack and run" path, then look for properly installed path, not including versioning. - * @return Unsigned char string pointing to system dir (eg /usr/share/blender/). - */ - const GHOST_TUns8* getSystemDir() const; - - /** - * Determine the base dir in which user configuration is stored, not including versioning. - * If needed, it will create the base directory. - * @return Unsigned char string pointing to user dir (eg ~/.blender/). - */ - const GHOST_TUns8* getUserDir() const; - /** * Atom used for ICCCM, WM-spec and Motif. * We only need get this atom at the start, it's relative diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index 5ed6043cbe7..db8750a28fb 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -124,27 +124,6 @@ class INFO_MT_file(bpy.types.Menu): layout.operator("wm.exit_blender", text="Quit", icon='QUIT') -class INFO_MT_file_open_recent(bpy.types.Menu): - bl_idname = "INFO_MT_file_open_recent" - bl_label = "Open Recent..." - - def draw(self, context): - import os - layout = self.layout - layout.operator_context = 'EXEC_AREA' - - filepath = os.path.join(bpy.app.home, ".Blog") - - if os.path.isfile(filepath): - file = open(filepath, "rU") - for line in file: - line = line.rstrip() - layout.operator("wm.open_mainfile", text=line, icon='FILE_BLEND').filepath = line - file.close() - else: - layout.label(text='No recent files') - - class INFO_MT_file_import(bpy.types.Menu): bl_idname = "INFO_MT_file_import" bl_label = "Import" @@ -374,7 +353,6 @@ class HELP_OT_operator_cheat_sheet(bpy.types.Operator): classes = [ INFO_HT_header, INFO_MT_file, - INFO_MT_file_open_recent, INFO_MT_file_import, INFO_MT_file_export, INFO_MT_file_external_data, diff --git a/source/blender/blenfont/intern/blf_lang.c b/source/blender/blenfont/intern/blf_lang.c index bc2de70222d..1baf2c82ef7 100644 --- a/source/blender/blenfont/intern/blf_lang.c +++ b/source/blender/blenfont/intern/blf_lang.c @@ -59,65 +59,19 @@ char global_messagepath[1024]; char global_language[32]; char global_encoding_name[32]; -#if defined(__APPLE__) -void BLF_lang_init(void) /* Apple Only, todo - use BLI_gethome_folder */ + +void BLF_lang_init(void) { - char *bundlepath; - - strcpy(global_encoding_name, SYSTEM_ENCODING_DEFAULT); - - /* set messagepath directory */ -#ifndef LOCALEDIR -#define LOCALEDIR "/usr/share/locale" -#endif - - strcpy(global_messagepath, ".blender/locale"); - - if (!BLI_exist(global_messagepath)) { /* locale not in current dir */ - BLI_make_file_string("/", global_messagepath, BLI_gethome(), ".blender/locale"); - - if (!BLI_exist(global_messagepath)) { /* locale not in home dir */ - /* message catalogs are stored inside the application bundle */ - bundlepath= BLI_getbundle(); - strcpy(global_messagepath, bundlepath); - strcat(global_messagepath, "/Contents/Resources/locale"); - if (!BLI_exist(global_messagepath)) { /* locale not in bundle (now that's odd..) */ - strcpy(global_messagepath, LOCALEDIR); - - if (!BLI_exist(global_messagepath)) { /* locale not in LOCALEDIR */ - strcpy(global_messagepath, "message"); /* old compatibility as last */ - } - } - } - } -} -#elif defined(_WIN32) -void BLF_lang_init(void) /* Windows Only, todo - use BLI_gethome_folder */ -{ - strcpy(global_encoding_name, SYSTEM_ENCODING_DEFAULT); + char *messagepath= BLI_get_folder(BLENDER_DATAFILES, "locale"); - strcpy(global_messagepath, ".blender/locale"); - - if (!BLI_exist(global_messagepath)) { /* locale not in current dir */ - BLI_make_file_string("/", global_messagepath, BLI_gethome(), ".blender/locale"); - - if (!BLI_exist(global_messagepath)) { /* locale not in home dir */ - BLI_make_file_string("/", global_messagepath, BLI_gethome(), "/locale"); - } - } -} -#else -void BLF_lang_init(void) /* not win or mac */ -{ - char *messagepath= BLI_gethome_folder("locale", BLI_GETHOME_ALL); + BLI_strncpy(global_encoding_name, SYSTEM_ENCODING_DEFAULT, sizeof(global_encoding_name)); - if(messagepath) - strncpy(global_messagepath, messagepath, sizeof(global_messagepath)); + if (messagepath) + BLI_strncpy(global_messagepath, messagepath, sizeof(global_messagepath)); else global_messagepath[0]= '\0'; - } -#endif + void BLF_lang_set(const char *str) { diff --git a/source/blender/blenkernel/SConscript b/source/blender/blenkernel/SConscript index 6198520c853..a6705653769 100644 --- a/source/blender/blenkernel/SConscript +++ b/source/blender/blenkernel/SConscript @@ -67,6 +67,7 @@ if env['BF_NO_ELBEEM']: if env['WITH_BF_LCMS']: defs.append('WITH_LCMS') + incs += ' ' + env['BF_LCMS_INC'] if env['WITH_BF_LZO']: incs += ' #/extern/lzo/minilzo' diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index 9a97d975ede..57e72fc5671 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -55,6 +55,7 @@ #include "BLI_blenlib.h" #include "BLI_dynstr.h" +#include "BLI_path_util.h" #include "IMB_imbuf.h" @@ -368,7 +369,7 @@ int BKE_read_file(bContext *C, char *dir, void *unused, ReportList *reports) BlendFileData *bfd; int retval= 1; - if(strstr(dir, ".B25.blend")==0) /* dont print user-pref loading */ + if(strstr(dir, BLENDER_STARTUP_FILE)==0) /* dont print user-pref loading */ printf("read blend: %s\n", dir); bfd= BLO_read_from_file(dir, reports); diff --git a/source/blender/blenlib/BLI_path_util.h b/source/blender/blenlib/BLI_path_util.h index fb30e991200..24b74b40a37 100644 --- a/source/blender/blenlib/BLI_path_util.h +++ b/source/blender/blenlib/BLI_path_util.h @@ -45,6 +45,58 @@ char *BLI_gethome_folder(char *folder_name, int flag); #define BLI_GETHOME_USER 1<<3 /* home folder ~/.blender */ #define BLI_GETHOME_ALL (BLI_GETHOME_SYSTEM|BLI_GETHOME_LOCAL|BLI_GETHOME_USER) + +#ifdef __APPLE__ +typedef enum { + BasePath_Temporary = 1, + BasePath_BlenderShared, + BasePath_BlenderUser, + BasePath_ApplicationBundle +} basePathesTypes; + +/** + * Gets the base path. The path may not exist. + * Note that return string must be copied as its persistence is not guaranteed + * + * @return base path of pathType + */ +const char* BLI_osx_getBasePath(basePathesTypes pathType); +#endif + +char *BLI_get_folder(int folder_id, char *subfolder); +char *BLI_get_folder_create(int folder_id, char *subfolder); + +/* folder_id */ + +/* general, will find baserd on user/local/system priority */ +#define BLENDER_CONFIG 1 +#define BLENDER_DATAFILES 2 +#define BLENDER_SCRIPTS 3 +#define BLENDER_PLUGINS 4 +#define BLENDER_PYTHON 5 + +/* user-specific */ +#define BLENDER_USER_CONFIG 31 +#define BLENDER_USER_DATAFILES 32 +#define BLENDER_USER_SCRIPTS 33 +#define BLENDER_USER_PLUGINS 34 + +/* system */ +#define BLENDER_SYSTEM_CONFIG 51 /* optional */ +#define BLENDER_SYSTEM_DATAFILES 52 +#define BLENDER_SYSTEM_SCRIPTS 53 +#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) + +#define BLENDER_STARTUP_FILE "startup.blend" +#define BLENDER_BOOKMARK_FILE "bookmarks.txt" +#define BLENDER_HISTORY_FILE "recent-files.txt" + + void BLI_setenv(const char *env, const char *val); void BLI_setenv_if_new(const char *env, const char* val); @@ -135,15 +187,6 @@ char *get_install_dir(void); void BLI_where_is_temp(char *fullname, int usertemp); - /** - * determines the full path to the application bundle on OS X - * - * @return path to application bundle - */ -#ifdef __APPLE__ -char* BLI_getbundle(void); -#endif - #ifdef WITH_ICONV void BLI_string_to_utf8(char *original, char *utf_8, const char *code); #endif diff --git a/source/blender/blenlib/CMakeLists.txt b/source/blender/blenlib/CMakeLists.txt index 628c2dc43a5..185e1c9c960 100644 --- a/source/blender/blenlib/CMakeLists.txt +++ b/source/blender/blenlib/CMakeLists.txt @@ -33,6 +33,10 @@ SET(INC ${ZLIB_INC} ) +IF(APPLE) + SET(SRC ${SRC} intern/path_util_cocoa.m) +ENDIF(APPLE) + IF(CMAKE_SYSTEM_NAME MATCHES "Linux") SET(INC ${INC} diff --git a/source/blender/blenlib/intern/BLI_bfile.c b/source/blender/blenlib/intern/BLI_bfile.c index 2330beb618d..b9ac6875b20 100644 --- a/source/blender/blenlib/intern/BLI_bfile.c +++ b/source/blender/blenlib/intern/BLI_bfile.c @@ -48,8 +48,6 @@ #include "BLI_storage.h" #include "BLI_bfile.h" -#include "GHOST_C-api.h" - /* Internal bfile classification flags */ #define BCF_OPEN (0) #define BCF_FOPEN (1<<0) @@ -64,12 +62,8 @@ /* Declaration of internal functions */ -static void chomp(char* line); -static void expand_envvars(char* src, char* dst); static void fill_paths(BFILE *bfile, const char *path, const char *relpath); -static void init_vars_from_file(const char* path); static void free_paths(BFILE* bfile); -static void setup_temp(); /*** Exported functions ***/ @@ -274,204 +268,8 @@ void BLI_bfile_set_error(BFILE *bfile, int error) { } -void BLI_bfile_init_vars() { - char file[MAXPATHLEN]; - char temp[MAXPATHLEN]; - extern char bprogname[]; - FILE* fp; - - /* This one is unconditional */ - sprintf(temp, "%d", BLENDER_VERSION); - BLI_setenv("BLENDER_VERSION", temp); - - /* Is this unpack&run? */ - sprintf(temp, "%s/%d/environment", dirname(bprogname), BLENDER_VERSION); - if (BLI_exist(temp)) { - BLI_setenv_if_new("BLENDER_SHARE", dirname(bprogname)); - } else { - BLI_setenv_if_new("BLENDER_SHARE", (const char*)GHOST_getSystemDir()); - } - - strcpy(file, (const char*)GHOST_getUserDir()); - BLI_add_slash(file); - strcat(file, LAST_SESSION_FILE); - fp = fopen(file, "r"); - /* 1st line, read previous version */ - if (fp && (fscanf(fp, "%3c\n", temp) == 1)) { - temp[3] = '\0'; - BLI_setenv("BLENDER_VERSION_PREV", temp); - /* 2nd line, read previous session path if needed */ - if (!getenv("BLENDER_TEMP")) { - if ((fgets(temp, MAXPATHLEN, fp) != NULL)) { - /* Clean any \n */ - chomp(temp); - /* Check the dir is still there or generate new one */ - if (!BLI_exist(temp)) { - setup_temp(); - } - } else { - /* We have to generate it for sure */ - setup_temp(); - } - } - } else { - /* Probably new user, or only <=249 before */ - BLI_setenv("BLENDER_VERSION_PREV", "0"); - setup_temp(); - } - - if (fp) { - fclose(fp); - } - - /* Loaded session info (or created), so time to store current data */ - // TODO use own fuctions to get safe saving - fp = fopen(file, "w"); - if (fp) { - fprintf(fp, "%s\n%s\n", getenv("BLENDER_VERSION"), getenv("BLENDER_TEMP")); - fclose(fp); - } - - /* Load vars from user and system files */ - strcpy(file, (const char *)GHOST_getUserDir()); - BLI_add_slash(file); - strcat(file, ENVIRONMENT_FILE); - init_vars_from_file(file); - sprintf(temp, "/%d/environment", BLENDER_VERSION); - BLI_make_file_string("/", file, getenv("BLENDER_SHARE"), temp); - init_vars_from_file(file); -} - - /*** Internal functions ***/ -/** - Eliminate trailing EOL by writing a \0 over it. - Name taken from Perl. - */ -static void chomp(char* line) { - int len = strlen(line); -#ifndef WIN32 - if (line[len - 1] == '\n') { - line[len - 1] = '\0'; - } -#else - if ((line[len - 2] == '\r' ) && ((line[len - 1] == '\n'))) { - line[len - 2] = '\0'; - } -#endif /* WIN32 */ -} - - -/** - Parse a file with lines like FOO=bar (comment lines have # as first - character) assigning to envvar FOO the value bar if FOO does not - exist yet. - Any white space before FOO, around the = or trailing will be used, - so beware. - */ -#define MAX_LINE 4096 -#define ENV_VAR 256 -#define VAR_LEN 8192 -static void init_vars_from_file(const char* path) { - char line[MAX_LINE]; - char name[ENV_VAR]; - FILE *fp; - char* separator; - char expanded[VAR_LEN]; - - fp = fopen(path, "r"); - if (!fp) return; - - while (fgets(line, MAX_LINE, fp) != NULL) { - /* Ignore comment lines */ - if (line[0] == '#') - continue; - - /* Split into envvar name and contents */ - separator = strchr(line, '='); - if (separator && ((separator - line) < ENV_VAR)) { - /* First remove EOL */ - chomp(line); - strncpy(name, line, separator - line); - name[separator - line] = '\0'; - expand_envvars(separator + 1, expanded); - BLI_setenv_if_new(name, expanded); - } - } - fclose(fp); -} - - -/** - Look for ${} (or %%) env vars in src and expand if the var - exists (even if empty value). If not exist, the name is left as is. - The process is done all over src, and nested ${${}} is not supported. - src must be \0 terminated, and dst must be big enough. -*/ -#ifndef WIN32 - #define ENVVAR_PREFFIX "${" - #define ENVVAR_P_SIZE 2 - #define ENVVAR_SUFFIX "}" - #define ENVVAR_S_SIZE 1 -#else - #define ENVVAR_PREFFIX "%" - #define ENVVAR_P_SIZE 1 - #define ENVVAR_SUFFIX "%" - #define ENVVAR_S_SIZE 1 -#endif /* WIN32 */ -static void expand_envvars(char* src, char* dst) { - char* hit1; - char* hit2; - char name[ENV_VAR]; - char* value; - int prevlen; - int done = 0; - char* source = src; - - dst[0] = '\0'; - while (!done) { - hit1 = strstr(source, ENVVAR_PREFFIX); - if (hit1) { - hit2 = strstr(hit1 + ENVVAR_P_SIZE, ENVVAR_SUFFIX); - if (hit2) { - /* "Copy" the leading part, if any */ - if (hit1 != source) { - prevlen = strlen(dst); - strncat(dst, source, hit1 - source); - dst[prevlen + (hit1 - source)] = '\0'; - } - /* Figure the name of the env var we just found */ - strncpy(name, hit1 + ENVVAR_P_SIZE, - hit2 - (hit1 + ENVVAR_P_SIZE)); - name[hit2 - (hit1 + ENVVAR_P_SIZE)] = '\0'; - /* See if we can get something with that name */ - value = getenv(name); - if (value) { - /* Push the var value */ - strcat(dst, value); - } else { - /* Leave the var name, so it is clear that it failed */ - strcat(dst, ENVVAR_PREFFIX); - strcat(dst, name); - strcat(dst, ENVVAR_SUFFIX); - } - /* Continue after closing mark, like a new string */ - source = hit2 + ENVVAR_S_SIZE; - } else { - /* Non terminated var so "copy as is" and finish */ - strcat(dst, source); - done = 1; - } - } else { - /* "Copy" whatever is left */ - strcat(dst, source); - done = 1; - } - } -} - - /** Return a full path if the filename exists when combined with any item from pathlist. Or NULL otherwise. @@ -572,24 +370,3 @@ static void free_paths(BFILE* bfile) { MEM_freeN(bfile->tpath); } } - - -/** - Create a temp directory in safe and multiuser way. - */ -static void setup_temp() { - char template[MAXPATHLEN]; - char* tempdir; - - if (getenv("TMPDIR")) { - sprintf(template, "%s/blender-XXXXXX", getenv("TMPDIR")); - } else { - sprintf(template, "/tmp/blender-XXXXXX"); -// MacOSX NSTemporaryDirectory and WIN32 ??? -// https://bugs.launchpad.net/cuneiform-linux/+bug/267136 -// https://svn.r-project.org/R/trunk/src/main/mkdtemp.c - } - tempdir = mkdtemp(template); - BLI_setenv("BLENDER_TEMP", tempdir); -} - diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 2d5234aee34..b43da1cf9bd 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -44,6 +44,7 @@ #include "BLI_storage_types.h" #include "BKE_utildefines.h" +#include "BKE_blender.h" // BLENDER_VERSION @@ -63,11 +64,6 @@ #else /* non windows */ -#ifdef __APPLE__ -#include -#include -#endif - #ifdef __linux__ #include "binreloc.h" #endif @@ -759,7 +755,11 @@ char *BLI_gethome(void) { } - /* add user profile support for WIN 2K / NT */ + /* add user profile support for WIN 2K / NT. + * This is %APPDATA%, which translates to either + * %USERPROFILE%\Application Data or since Vista + * to %USERPROFILE%\AppData\Roaming + */ hResult = SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, appdatapath); if (hResult == S_OK) @@ -794,7 +794,7 @@ char *BLI_gethome(void) { /* this function returns the path to a blender folder, if it exists * utility functions for BLI_gethome_folder */ -/* #define PATH_DEBUG */ /* for testing paths that are checked */ +// #define PATH_DEBUG /* for testing paths that are checked */ static int test_data_path(char *targetpath, char *path_base, char *path_sep, char *folder_name) { @@ -905,6 +905,303 @@ char *BLI_gethome_folder(char *folder_name, int flag) return NULL; } + +/* NEW stuff, to be cleaned up when fully migrated */ +/* ************************************************************* */ +/* ************************************************************* */ + +#define PATH_DEBUG2 + +static char *blender_version_decimal(void) +{ + static char version_str[5]; + sprintf(version_str, "%d.%02d", BLENDER_VERSION/100, BLENDER_VERSION%100); + return version_str; +} + +static int test_path(char *targetpath, char *path_base, char *path_sep, char *folder_name) +{ + char tmppath[FILE_MAX]; + + if(path_sep) BLI_join_dirfile(tmppath, path_base, path_sep); + else BLI_strncpy(tmppath, path_base, sizeof(tmppath)); + + BLI_make_file_string("/", targetpath, tmppath, folder_name); + + if (BLI_exists(targetpath)) { +#ifdef PATH_DEBUG2 + printf("\tpath found: %s\n", targetpath); +#endif + return 1; + } + else { +#ifdef PATH_DEBUG2 + printf("\tpath missing: %s\n", targetpath); +#endif + //targetpath[0] = '\0'; + return 0; + } +} + +static int test_env_path(char *path, char *envvar) +{ + char *env = envvar?getenv(envvar):NULL; + if (!env) return 0; + + if (BLI_exists(env)) { + BLI_strncpy(path, env, FILE_MAX); + return 1; + } else { + path[0] = '\0'; + return 0; + } +} + +static int get_path_local(char *targetpath, char *folder_name) +{ + extern char bprogname[]; /* argv[0] from creator.c */ + char bprogdir[FILE_MAX]; + char cwd[FILE_MAX]; + char *s; + int i; + +#ifdef PATH_DEBUG2 + printf("get_path_local...\n"); +#endif + + + /* use argv[0] (bprogname) to get the path to the executable */ + s = BLI_last_slash(bprogname); + i = s - bprogname + 1; + BLI_strncpy(bprogdir, bprogname, i); + + /* try EXECUTABLE_DIR/folder_name */ + if(test_path(targetpath, bprogdir, "", folder_name)) + return 1; + + /* try CWD/release/folder_name */ + if(test_path(targetpath, BLI_getwdN(cwd), "release", folder_name)) + return 1; + + /* try EXECUTABLE_DIR/release/folder_name */ + if(test_path(targetpath, bprogdir, "release", folder_name)) + return 1; + + /* try EXECUTABLE_DIR/2.5/folder_name - new default directory for local blender installed files */ + if(test_path(targetpath, bprogdir, blender_version_decimal(), folder_name)) + return 1; + + /* try ./.blender/folder_name -- DEPRECATED, need to update build systems */ + if(test_path(targetpath, bprogdir, ".blender", folder_name)) + return 1; + + return 0; +} + +#ifdef WIN32 +static int get_knownfolder_path(char *path, int folder) +{ + static char knownpath[MAXPATHLEN]; + HRESULT hResult = SHGetFolderPath(NULL, folder, NULL, SHGFP_TYPE_CURRENT, knownpath); + + if (hResult == S_OK) + { + if (BLI_exists(knownpath)) { /* from fop, also below... */ + BLI_strncpy(path, knownpath, FILE_MAX); + return 1; + } + } + return 0; +} +#endif + +static int get_path_user(char *targetpath, char *folder_name, char *envvar) +{ + char user_path[FILE_MAX]; +#if defined(WIN32) + char appdata[FILE_MAX]; +#endif + + user_path[0] = '\0'; + + if (test_env_path(targetpath, envvar)) + return 1; + +#if defined(__APPLE__) + BLI_snprintf(user_path, FILE_MAX, "%s/%s", BLI_osx_getBasePath(BasePath_BlenderUser), blender_version_decimal()); +#elif defined(WIN32) + if (get_knownfolder_path(appdata, CSIDL_APPDATA)) { + BLI_snprintf(user_path, FILE_MAX, "%s\\Blender Foundation\\Blender\\%s", appdata, blender_version_decimal()); + } +#else /* UNIX */ + /* XXX example below - replace with OS API */ + BLI_snprintf(user_path, FILE_MAX, "%s/.blender/%s", BLI_gethome(), blender_version_decimal()); +#endif + + if(!user_path[0]) + return 0; + +#ifdef PATH_DEBUG2 + printf("get_path_user: %s\n", user_path); +#endif + + /* try $HOME/folder_name */ + return test_path(targetpath, user_path, NULL, folder_name); +} + +static int get_path_system(char *targetpath, char *folder_name, char *envvar) +{ + char system_path[FILE_MAX]; +#if defined(WIN32) + char appdata[FILE_MAX]; +#endif + + if (test_env_path(targetpath, envvar)) + return 1; + +#if defined(__APPLE__) + BLI_snprintf(system_path, FILE_MAX, "%s/%s", BLI_osx_getBasePath(BasePath_ApplicationBundle), blender_version_decimal()); +#elif defined(WIN32) + if (get_knownfolder_path(appdata, CSIDL_COMMON_APPDATA)) { + BLI_snprintf(system_path, FILE_MAX, "%s\\Blender Foundation\\Blender\\%s", appdata, blender_version_decimal()); + } +#else /* UNIX */ + /* XXX example below - replace with OS API */ + BLI_snprintf(system_path, FILE_MAX, "/usr/share/blender/%s", blender_version_decimal()); +#endif + + if(!system_path[0]) + return 0; + +#ifdef PATH_DEBUG2 + printf("get_path_system: %s\n", system_path); +#endif + + /* try $BLENDERPATH/folder_name */ + return test_path(targetpath, system_path, NULL, folder_name); +} + +/* get a folder out of the 'folder_id' presets for paths */ +/* returns the path if found, NULL string if not */ +char *BLI_get_folder(int folder_id, char *subfolder) +{ + static char path[FILE_MAX] = ""; + char search_path[FILE_MAX]; + + switch (folder_id) { + case BLENDER_DATAFILES: /* general case */ + BLI_join_dirfile(search_path, "datafiles", subfolder); + if (get_path_user(path, search_path, "BLENDER_USER_DATAFILES")) break; + if (get_path_local(path, search_path)) break; + if (get_path_system(path, search_path, "BLENDER_SYSTEM_DATAFILES")) break; + return NULL; + + case BLENDER_USER_DATAFILES: + BLI_join_dirfile(search_path, "datafiles", subfolder); + if (get_path_user(path, search_path, "BLENDER_USER_DATAFILES")) break; + return NULL; + + case BLENDER_SYSTEM_DATAFILES: + BLI_join_dirfile(search_path, "datafiles", subfolder); + if (get_path_system(path, search_path, "BLENDER_SYSTEM_DATAFILES")) break; + return NULL; + + case BLENDER_CONFIG: /* general case */ + BLI_join_dirfile(search_path, "config", subfolder); + if (get_path_user(path, search_path, "BLENDER_USER_CONFIG")) break; + if (get_path_local(path, search_path)) break; + if (get_path_system(path, search_path, "BLENDER_SYSTEM_CONFIG")) break; + return NULL; + + case BLENDER_USER_CONFIG: + BLI_join_dirfile(search_path, "config", subfolder); + if (get_path_user(path, search_path, "BLENDER_USER_CONFIG")) break; + return NULL; + + case BLENDER_SYSTEM_CONFIG: + BLI_join_dirfile(search_path, "config", subfolder); + if (get_path_system(path, search_path, "BLENDER_SYSTEM_CONFIG")) break; + return NULL; + + case BLENDER_SCRIPTS: /* general case */ + BLI_join_dirfile(search_path, "scripts", subfolder); + if (get_path_user(path, search_path, "BLENDER_USER_SCRIPTS")) break; + if (get_path_local(path, search_path)) break; + if (get_path_system(path, search_path, "BLENDER_SYSTEM_SCRIPTS")) break; + return NULL; + + case BLENDER_USER_SCRIPTS: + BLI_join_dirfile(search_path, "scripts", subfolder); + if (get_path_user(path, search_path, "BLENDER_USER_SCRIPTS")) break; + return NULL; + + case BLENDER_SYSTEM_SCRIPTS: + BLI_join_dirfile(search_path, "scripts", subfolder); + if (get_path_system(path, search_path, "BLENDER_SYSTEM_SCRIPTS")) break; + return NULL; + + case BLENDER_PYTHON: /* general case */ + BLI_join_dirfile(search_path, "python", subfolder); + if (get_path_local(path, search_path)) break; + if (get_path_system(path, search_path, "BLENDER_SYSTEM_PYTHON")) break; + return NULL; + + case BLENDER_SYSTEM_PYTHON: + BLI_join_dirfile(search_path, "scripts", subfolder); + + if (get_path_system(path, search_path, "BLENDER_SYSTEM_PYTHON")) break; + return NULL; + } + + return path; +} + +static char *BLI_get_user_folder_notest(int folder_id, char *subfolder) +{ + static char path[FILE_MAX] = ""; + char search_path[FILE_MAX]; + + switch (folder_id) { + case BLENDER_USER_DATAFILES: + BLI_join_dirfile(search_path, "datafiles", subfolder); + get_path_user(path, search_path, "BLENDER_USER_DATAFILES"); + break; + case BLENDER_USER_CONFIG: + BLI_join_dirfile(search_path, "config", subfolder); + get_path_user(path, search_path, "BLENDER_USER_CONFIG"); + break; + } + if ('\0' == path[0]) { + return NULL; + } + return path; +} + +char *BLI_get_folder_create(int folder_id, char *subfolder) +{ + char *path; + + /* only for user folders */ + if (!ELEM(folder_id, BLENDER_USER_DATAFILES, BLENDER_USER_CONFIG)) + return NULL; + + path = BLI_get_folder(folder_id, subfolder); + + if (!path) { + path = BLI_get_user_folder_notest(folder_id, subfolder); + if (path) BLI_recurdir_fileops(path); + } + + return path; +} + + +/* End new stuff */ +/* ************************************************************* */ +/* ************************************************************* */ + + + #ifdef PATH_DEBUG #undef PATH_DEBUG #endif @@ -1158,6 +1455,9 @@ void BLI_join_dirfile(char *string, const char *dir, const char *file) if(string != dir) /* compare pointers */ BLI_strncpy(string, dir, FILE_MAX); + + if (!file) + return; sl_dir= BLI_add_slash(string); @@ -1465,26 +1765,6 @@ char *get_install_dir(void) { } } -/* - * returns absolute path to the app bundle - * only useful on OS X - */ -#ifdef __APPLE__ -char* BLI_getbundle(void) { - CFURLRef bundleURL; - CFStringRef pathStr; - static char path[MAXPATHLEN]; - CFBundleRef mainBundle = CFBundleGetMainBundle(); - - bundleURL = CFBundleCopyBundleURL(mainBundle); - pathStr = CFURLCopyFileSystemPath(bundleURL, kCFURLPOSIXPathStyle); - CFStringGetCString(pathStr, path, MAXPATHLEN, kCFStringEncodingASCII); - CFRelease(pathStr); - CFRelease(bundleURL); - return path; -} -#endif - #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_cocoa.mm b/source/blender/blenlib/intern/path_util_cocoa.mm new file mode 100644 index 00000000000..00593afcd0c --- /dev/null +++ b/source/blender/blenlib/intern/path_util_cocoa.mm @@ -0,0 +1,96 @@ +/* path_util_cocoa.m + * + * Functions specific to osx that use API available only in Objective-C + * + * + * $Id: util_cocoa.m 25007 2009-11-29 19:16:52Z kazanbas $ + * + * ***** 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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): Damien Plisson 2010 + * + * ***** END GPL LICENSE BLOCK ***** + * + */ + + +#import + +#include + +#include "BLI_path_util.h" + + + +/** + * Gets the ~/Library/Application Data/Blender folder + */ +const char* BLI_osx_getBasePath(basePathesTypes pathType) +{ + static char tempPath[512] = ""; + + NSAutoreleasePool *pool; + NSString *basePath; + NSArray *paths; + + pool = [[NSAutoreleasePool alloc] init]; + + switch (pathType) { + /* Standard pathes */ + case BasePath_Temporary: + strcpy(tempPath, [NSTemporaryDirectory() cStringUsingEncoding:NSASCIIStringEncoding]); + [pool drain]; + return tempPath; + break; + + /* Blender specific pathes */ + case BasePath_BlenderShared: + paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSLocalDomainMask, YES); + if ([paths count] > 0) + basePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Blender"]; + else { //Error + basePath = @""; + } + break; + case BasePath_BlenderUser: + paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); + if ([paths count] > 0) + basePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Blender"]; + else { //Error + basePath = @""; + } + break; + case BasePath_ApplicationBundle: + basePath = [[NSBundle mainBundle] bundlePath]; + break; + + default: + tempPath[0] = 0; + [pool drain]; + return tempPath; + } + + strcpy(tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]); + + [pool drain]; + return tempPath; +} \ No newline at end of file diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 497c2d37c50..82d46a84bdd 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -2502,7 +2502,7 @@ int BLO_write_file(Main *mainvar, char *dir, int write_flags, ReportList *report makeFilesAbsolute(G.sce, NULL); } - BLI_make_file_string(G.sce, userfilename, BLI_gethome(), ".B25.blend"); + BLI_make_file_string(G.sce, userfilename, BLI_get_folder_create(BLENDER_USER_CONFIG, NULL), BLENDER_STARTUP_FILE); write_user_block= BLI_streq(dir, userfilename); if(write_flags & G_FILE_RELATIVE_REMAP) diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c index 622b9ddbfdf..499fe3b9767 100644 --- a/source/blender/editors/interface/interface_icons.c +++ b/source/blender/editors/interface/interface_icons.c @@ -457,25 +457,20 @@ static void init_internal_icons() ImBuf *bbuf= NULL; int x, y, icontype; char iconfilestr[FILE_MAXDIR+FILE_MAXFILE]; - char filenamestr[FILE_MAXFILE+16]; // 16 == strlen(".blender/icons/")+1 if ((btheme!=NULL) && (strlen(btheme->tui.iconfile) > 0)) { - -#ifdef WIN32 - sprintf(filenamestr, "icons/%s", btheme->tui.iconfile); -#else - sprintf(filenamestr, ".blender/icons/%s", btheme->tui.iconfile); -#endif - - BLI_make_file_string("/", iconfilestr, BLI_gethome(), filenamestr); - - if (BLI_exists(iconfilestr)) { - bbuf = IMB_loadiffname(iconfilestr, IB_rect); - if(bbuf->x < ICON_IMAGE_W || bbuf->y < ICON_IMAGE_H) { - if (G.f & G_DEBUG) - printf("\n***WARNING***\nIcons file %s too small.\nUsing built-in Icons instead\n", iconfilestr); - IMB_freeImBuf(bbuf); - bbuf= NULL; + char *datadir= BLI_get_folder(BLENDER_DATAFILES, NULL); + if (datadir) { + BLI_make_file_string("/", iconfilestr, datadir, btheme->tui.iconfile); + + if (BLI_exists(iconfilestr)) { + bbuf = IMB_loadiffname(iconfilestr, IB_rect); + if(bbuf->x < ICON_IMAGE_W || bbuf->y < ICON_IMAGE_H) { + if (G.f & G_DEBUG) + printf("\n***WARNING***\nIcons file %s too small.\nUsing built-in Icons instead\n", iconfilestr); + IMB_freeImBuf(bbuf); + bbuf= NULL; + } } } } @@ -555,14 +550,14 @@ static void init_iconfile_list(struct ListBase *list) char icondirstr[FILE_MAX]; char iconfilestr[FILE_MAX+16]; /* allow 256 chars for file+dir */ char olddir[FILE_MAX]; - - list->first = list->last = NULL; + char *datadir= NULL; -#ifdef WIN32 - BLI_make_file_string("/", icondirstr, BLI_gethome(), "icons"); -#else - BLI_make_file_string("/", icondirstr, BLI_gethome(), ".blender/icons"); -#endif + list->first = list->last = NULL; + datadir = BLI_get_folder(BLENDER_DATAFILES, NULL); + + if (!datadir) return; + + BLI_make_file_string("/", icondirstr, datadir, ""); if(BLI_exists(icondirstr)==0) return; diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index 7c2a2f436cc..55a44b36a52 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -391,7 +391,7 @@ static int bookmark_add_exec(bContext *C, wmOperator *op) char name[FILE_MAX]; fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, params->dir, 0, 1); - BLI_make_file_string("/", name, BLI_gethome(), ".Bfs"); + BLI_make_file_string("/", name, BLI_get_folder_create(BLENDER_USER_CONFIG, NULL), BLENDER_BOOKMARK_FILE); fsmenu_write_file(fsmenu, name); } @@ -423,7 +423,7 @@ static int bookmark_delete_exec(bContext *C, wmOperator *op) char name[FILE_MAX]; fsmenu_remove_entry(fsmenu, FS_CATEGORY_BOOKMARKS, index); - BLI_make_file_string("/", name, BLI_gethome(), ".Bfs"); + BLI_make_file_string("/", name, BLI_get_folder_create(BLENDER_USER_CONFIG, NULL), BLENDER_BOOKMARK_FILE); fsmenu_write_file(fsmenu, name); ED_area_tag_redraw(sa); } @@ -619,7 +619,7 @@ int file_exec(bContext *C, wmOperator *exec_op) folderlist_free(sfile->folders_next); fsmenu_insert_entry(fsmenu_get(), FS_CATEGORY_RECENT, sfile->params->dir,0, 1); - BLI_make_file_string(G.sce, filepath, BLI_gethome(), ".Bfs"); + BLI_make_file_string(G.sce, filepath, BLI_get_folder_create(BLENDER_USER_CONFIG, NULL), BLENDER_BOOKMARK_FILE); fsmenu_write_file(fsmenu_get(), filepath); WM_event_fileselect_event(C, op, EVT_FILESELECT_EXEC); diff --git a/source/blender/editors/space_file/fsmenu.c b/source/blender/editors/space_file/fsmenu.c index 08a6b5a8f34..a7d6288c3c9 100644 --- a/source/blender/editors/space_file/fsmenu.c +++ b/source/blender/editors/space_file/fsmenu.c @@ -248,7 +248,37 @@ void fsmenu_write_file(struct FSMenu* fsmenu, const char *filename) fclose(fp); } -void fsmenu_read_file(struct FSMenu* fsmenu, const char *filename) +void fsmenu_read_bookmarks(struct FSMenu* fsmenu, const char *filename) +{ + char line[256]; + FSMenuCategory category = FS_CATEGORY_BOOKMARKS; + FILE *fp; + + fp = fopen(filename, "r"); + if (!fp) return; + + while ( fgets ( line, 256, fp ) != NULL ) /* read a line */ + { + if (strncmp(line, "[Bookmarks]", 11)==0){ + category = FS_CATEGORY_BOOKMARKS; + } else if (strncmp(line, "[Recent]", 8)==0){ + category = FS_CATEGORY_RECENT; + } else { + int len = strlen(line); + if (len>0) { + if (line[len-1] == '\n') { + line[len-1] = '\0'; + } + if (BLI_exist(line)) { + fsmenu_insert_entry(fsmenu, category, line, 0, 1); + } + } + } + } + fclose(fp); +} + +void fsmenu_read_system(struct FSMenu* fsmenu) { char line[256]; FSMenuCategory category = FS_CATEGORY_BOOKMARKS; @@ -482,31 +512,9 @@ void fsmenu_read_file(struct FSMenu* fsmenu, const char *filename) } #endif #endif - - fp = fopen(filename, "r"); - if (!fp) return; - - while ( fgets ( line, 256, fp ) != NULL ) /* read a line */ - { - if (strncmp(line, "[Bookmarks]", 11)==0){ - category = FS_CATEGORY_BOOKMARKS; - } else if (strncmp(line, "[Recent]", 8)==0){ - category = FS_CATEGORY_RECENT; - } else { - int len = strlen(line); - if (len>0) { - if (line[len-1] == '\n') { - line[len-1] = '\0'; - } - if (BLI_exist(line)) { - fsmenu_insert_entry(fsmenu, category, line, 0, 1); - } - } - } - } - fclose(fp); } + static void fsmenu_free_category(struct FSMenu* fsmenu, FSMenuCategory category) { FSMenuEntry *fsme= fsmenu_get_category(fsmenu, category); diff --git a/source/blender/editors/space_file/fsmenu.h b/source/blender/editors/space_file/fsmenu.h index 8304b104a4f..dcf8d3eb632 100644 --- a/source/blender/editors/space_file/fsmenu.h +++ b/source/blender/editors/space_file/fsmenu.h @@ -68,7 +68,10 @@ void fsmenu_remove_entry (struct FSMenu* fsmenu, FSMenuCategory category, int i void fsmenu_write_file (struct FSMenu* fsmenu, const char *filename); /** reads the 'bookmarks' from the specified file */ -void fsmenu_read_file (struct FSMenu* fsmenu, const char *filename); +void fsmenu_read_bookmarks (struct FSMenu* fsmenu, const char *filename); + + /** adds system specific directories */ +void fsmenu_read_system (struct FSMenu* fsmenu); /** Free's all the memory associated with the fsmenu */ void fsmenu_free (struct FSMenu* fsmenu); diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index 300a72851a4..261b7058151 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -591,9 +591,16 @@ void ED_spacetype_file(void) void ED_file_init(void) { - char name[FILE_MAX]; - BLI_make_file_string("/", name, BLI_gethome(), ".Bfs"); - fsmenu_read_file(fsmenu_get(), name); + char *cfgdir = BLI_get_folder(BLENDER_CONFIG, NULL); + + fsmenu_read_system(fsmenu_get()); + + if (cfgdir) { + char name[FILE_MAX]; + BLI_make_file_string("/", name, cfgdir, BLENDER_BOOKMARK_FILE); + fsmenu_read_bookmarks(fsmenu_get(), name); + } + filelist_init_icons(); IMB_thumb_makedirs(); } diff --git a/source/blender/editors/space_image/SConscript b/source/blender/editors/space_image/SConscript index b38e1473a0c..4e1918bc327 100644 --- a/source/blender/editors/space_image/SConscript +++ b/source/blender/editors/space_image/SConscript @@ -11,6 +11,7 @@ defs = [] if env['WITH_BF_LCMS']: defs.append('WITH_LCMS') + incs += ' ' + env['BF_LCMS_INC'] if env['WITH_BF_OPENEXR']: defs.append('WITH_OPENEXR') if env['WITH_BF_TIFF']: diff --git a/source/blender/editors/space_info/space_info.c b/source/blender/editors/space_info/space_info.c index 0d9f1c90489..0f483f4bcec 100644 --- a/source/blender/editors/space_info/space_info.c +++ b/source/blender/editors/space_info/space_info.c @@ -38,6 +38,7 @@ #include "BKE_context.h" #include "BKE_colortools.h" +#include "BKE_global.h" #include "BKE_screen.h" #include "BKE_utildefines.h" @@ -49,7 +50,7 @@ #include "WM_types.h" #include "UI_resources.h" - +#include "UI_interface.h" #include "info_intern.h" // own include @@ -179,6 +180,31 @@ static void info_header_listener(ARegion *ar, wmNotifier *wmn) } +static void recent_files_menu(const bContext *C, Menu *menu) +{ + struct RecentFile *recent; + uiLayout *layout= menu->layout; + uiLayoutSetOperatorContext(layout, WM_OP_EXEC_REGION_WIN); + if (G.recent_files.first) { + for(recent = G.recent_files.first; (recent); recent = recent->next) { + uiItemStringO(layout, BLI_path_basename(recent->filepath), ICON_FILE_BLEND, "WM_OT_open_mainfile", "filepath", recent->filepath); + } + } else { + uiItemL(layout, "No Recent Files", 0); + } +} + +void recent_files_menu_register() +{ + MenuType *mt; + + mt= MEM_callocN(sizeof(MenuType), "spacetype info menu recent files"); + strcpy(mt->idname, "INFO_MT_file_open_recent"); + strcpy(mt->label, "Open Recent..."); + mt->draw= recent_files_menu; + WM_menutype_add(mt); +} + /* only called once, from space/spacetypes.c */ void ED_spacetype_info(void) { @@ -217,7 +243,8 @@ void ED_spacetype_info(void) BLI_addhead(&st->regiontypes, art); - + recent_files_menu_register(); + BKE_spacetype_register(st); } diff --git a/source/blender/makesrna/SConscript b/source/blender/makesrna/SConscript index c4ee90dde16..bd500adc8e4 100644 --- a/source/blender/makesrna/SConscript +++ b/source/blender/makesrna/SConscript @@ -37,7 +37,8 @@ if env['WITH_BF_QUICKTIME']: if env['WITH_BF_LCMS']: defs.append('WITH_LCMS') - + incs += ' ' + env['BF_LCMS_INC'] + if env['WITH_BF_GAMEENGINE']: defs.append('GAMEBLENDER=1') diff --git a/source/blender/python/intern/bpy.c b/source/blender/python/intern/bpy.c index 8601ad96345..b978e46f6da 100644 --- a/source/blender/python/intern/bpy.c +++ b/source/blender/python/intern/bpy.c @@ -145,7 +145,7 @@ void BPy_init_modules( void ) PyObject *mod; /* Needs to be first since this dir is needed for future modules */ - char *modpath= BLI_gethome_folder("scripts/modules", BLI_GETHOME_ALL); + char *modpath= BLI_get_folder(BLENDER_SCRIPTS, "modules"); if(modpath) { // printf("bpy: found module path '%s'.\n", modpath); PyObject *sys_path= PySys_GetObject("path"); /* borrow */ diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index 000d428e40f..6a1495b5f65 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -177,7 +177,7 @@ static PyObject *CreateGlobalDictionary( bContext *C, const char *filename ) /* must be called before Py_Initialize */ void BPY_start_python_path(void) { - char *py_path_bundle= BLI_gethome_folder("python", BLI_GETHOME_ALL); + char *py_path_bundle= BLI_get_folder(BLENDER_PYTHON, NULL); if(py_path_bundle==NULL) return; diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 5298711ef52..d926bbfed80 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -103,7 +103,7 @@ #include "wm_window.h" #include "wm_event_system.h" -static void writeBlog(void); +static void write_history(void); /* To be able to read files without windows closing, opening, moving we try to prepare for worst case: @@ -298,7 +298,7 @@ void WM_read_file(bContext *C, char *name, ReportList *reports) if (retval!=0) { G.relbase_valid = 1; if(!G.background) /* assume automated tasks with background, dont write recent file list */ - writeBlog(); + write_history(); } // XXX undo_editmode_clear(); @@ -333,17 +333,23 @@ int WM_read_homefile(bContext *C, wmOperator *op) { ListBase wmbase; char tstr[FILE_MAXDIR+FILE_MAXFILE], scestr[FILE_MAXDIR]; - char *home= BLI_gethome(); int from_memory= op?RNA_boolean_get(op->ptr, "factory"):0; int success; - - BLI_clean(home); free_ttfont(); /* still weird... what does it here? */ G.relbase_valid = 0; if (!from_memory) { - BLI_make_file_string(G.sce, tstr, home, ".B25.blend"); + char *cfgdir = BLI_get_folder(BLENDER_USER_CONFIG, NULL); + if (cfgdir) { + BLI_make_file_string(G.sce, tstr, cfgdir, BLENDER_STARTUP_FILE); + } else { + tstr[0] = '\0'; + from_memory = 1; + if (op) { + BKE_report(op->reports, RPT_INFO, "Config directory with startup.blend file found."); + } + } } strcpy(scestr, G.sce); /* temporary store */ @@ -391,15 +397,19 @@ int WM_read_homefile(bContext *C, wmOperator *op) } -void read_Blog(void) +void read_history(void) { char name[FILE_MAX]; LinkNode *l, *lines; struct RecentFile *recent; char *line; int num; + char *cfgdir = BLI_get_folder(BLENDER_CONFIG, NULL); + + if (!cfgdir) return; + + BLI_make_file_string("/", name, cfgdir, BLENDER_HISTORY_FILE); - BLI_make_file_string("/", name, BLI_gethome(), ".Blog"); lines= BLI_read_file_as_lines(name); G.recent_files.first = G.recent_files.last = NULL; @@ -428,14 +438,14 @@ void read_Blog(void) } -static void writeBlog(void) +static void write_history(void) { struct RecentFile *recent, *next_recent; char name[FILE_MAXDIR+FILE_MAXFILE]; FILE *fp; int i; - BLI_make_file_string("/", name, BLI_gethome(), ".Blog"); + BLI_make_file_string("/", name, BLI_get_folder_create(BLENDER_USER_CONFIG, NULL), BLENDER_HISTORY_FILE); recent = G.recent_files.first; /* refresh .Blog of recent opened files, when current file was changed */ @@ -620,7 +630,7 @@ int WM_write_file(bContext *C, char *target, int fileflags, ReportList *reports) if(fileflags & G_FILE_AUTOPLAY) G.fileflags |= G_FILE_AUTOPLAY; else G.fileflags &= ~G_FILE_AUTOPLAY; - writeBlog(); + write_history(); /* run this function after because the file cant be written before the blend is */ if (ibuf_thumb) { @@ -652,7 +662,8 @@ int WM_write_homefile(bContext *C, wmOperator *op) if(win->screen->full == SCREENTEMP) wm_window_close(C, wm, win); - BLI_make_file_string("/", tstr, BLI_gethome(), ".B25.blend"); + BLI_make_file_string("/", tstr, BLI_get_folder_create(BLENDER_USER_CONFIG, NULL), BLENDER_STARTUP_FILE); + printf("trying to save homefile at %s \n", tstr); /* force save as regular blend file */ fileflags = G.fileflags & ~(G_FILE_COMPRESS | G_FILE_AUTOPLAY | G_FILE_LOCK | G_FILE_SIGN); diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c index 02e645ef635..acb3f5ea254 100644 --- a/source/blender/windowmanager/intern/wm_init_exit.c +++ b/source/blender/windowmanager/intern/wm_init_exit.c @@ -163,7 +163,7 @@ void WM_init(bContext *C, int argc, char **argv) G.ndofdevice = -1; /* XXX bad initializer, needs set otherwise buttons show! */ - read_Blog(); + read_history(); BLI_strncpy(G.lib, G.sce, FILE_MAX); } diff --git a/source/blender/windowmanager/wm_files.h b/source/blender/windowmanager/wm_files.h index c633ed8388e..15a38251795 100644 --- a/source/blender/windowmanager/wm_files.h +++ b/source/blender/windowmanager/wm_files.h @@ -28,7 +28,7 @@ #ifndef WM_FILES_H #define WM_FILES_H -extern void read_Blog(void); +extern void read_history(void); extern void delete_autosave(void); diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 11997550ee1..b4d9be59b59 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -210,18 +210,16 @@ IF(WITH_INSTALL) COMMAND cp -Rf ${SOURCEDIR}/Contents/PkgInfo ${TARGETDIR}/blender.app/Contents/ COMMAND cp -Rf ${SOURCEDIR}/Contents/Resources ${TARGETDIR}/blender.app/Contents/ COMMAND cat ${SOURCEINFO} | sed s/VERSION/`cat ${CMAKE_SOURCE_DIR}/release/VERSION`/ | sed s/DATE/`date +'%Y-%b-%d'`/ > ${TARGETINFO} - COMMAND rm -Rf ${TARGETDIR}/blender.app/Contents/MacOS/.blender - COMMAND mkdir ${TARGETDIR}/blender.app/Contents/MacOS/.blender/ - COMMAND cp ${CMAKE_SOURCE_DIR}/bin/.blender/.bfont.ttf ${TARGETDIR}/blender.app/Contents/MacOS/.blender/ + COMMAND rm -Rf ${TARGETDIR}/blender.app/Contents/MacOS/datafiles + COMMAND mkdir ${TARGETDIR}/blender.app/Contents/MacOS/datafiles/ + COMMAND cp ${CMAKE_SOURCE_DIR}/bin/.blender/.bfont.ttf ${TARGETDIR}/blender.app/Contents/MacOS/datafiles/ ) IF(WITH_INTERNATIONAL) ADD_CUSTOM_COMMAND( TARGET blender POST_BUILD MAIN_DEPENDENCY blender - COMMAND cp ${CMAKE_SOURCE_DIR}/bin/.blender/.Blanguages ${TARGETDIR}/blender.app/Contents/MacOS/.blender/ - COMMAND cp -Rf ${CMAKE_SOURCE_DIR}/bin/.blender/locale ${TARGETDIR}/blender.app/Contents/Resources/ - COMMAND cp -Rf ${CMAKE_SOURCE_DIR}/bin/.blender/locale ${TARGETDIR}/blender.app/Contents/MacOS/.blender/ - COMMAND cp ${CMAKE_SOURCE_DIR}/bin/.blender/.Blanguages ${TARGETDIR}/blender.app/Contents/Resources/ + COMMAND cp ${CMAKE_SOURCE_DIR}/bin/.blender/.Blanguages ${TARGETDIR}/blender.app/Contents/MacOS/datafiles/ + COMMAND cp -Rf ${CMAKE_SOURCE_DIR}/bin/.blender/locale ${TARGETDIR}/blender.app/Contents/MacOS/datafiles/ ) ENDIF(WITH_INTERNATIONAL) @@ -233,9 +231,10 @@ IF(WITH_INSTALL) ENDIF(WITH_LIBS10.5) ADD_CUSTOM_COMMAND( TARGET blender POST_BUILD MAIN_DEPENDENCY blender - COMMAND cp -Rf ${CMAKE_SOURCE_DIR}/release/scripts ${TARGETDIR}/blender.app/Contents/MacOS/.blender/ - COMMAND mkdir ${TARGETDIR}/blender.app/Contents/MacOS/.blender/python/ - COMMAND unzip -q ${LIBDIR}/release/${PYTHON_ZIP} -d ${TARGETDIR}/blender.app/Contents/MacOS/.blender/python/ + COMMAND cp -Rf ${CMAKE_SOURCE_DIR}/release/scripts ${TARGETDIR}/blender.app/Contents/MacOS/scripts/ + COMMAND rm -Rf ${TARGETDIR}/blender.app/Contents/MacOS/python/ + COMMAND mkdir ${TARGETDIR}/blender.app/Contents/MacOS/python/ + COMMAND unzip -q ${LIBDIR}/release/${PYTHON_ZIP} -d ${TARGETDIR}/blender.app/Contents/MacOS/python/ COMMAND find ${TARGETDIR}/blender.app -name "*.py?" -prune -exec rm -rf {} "\;" ) ENDIF(WITH_PYTHON) diff --git a/tools/Blender.py b/tools/Blender.py index 6356210b113..cd6e4652754 100644 --- a/tools/Blender.py +++ b/tools/Blender.py @@ -145,6 +145,8 @@ def setup_staticlibs(lenv): libincs += Split(lenv['BF_OPENEXR_LIBPATH']) if lenv['WITH_BF_STATICOPENEXR']: statlibs += Split(lenv['BF_OPENEXR_LIB_STATIC']) + if lenv['WITH_BF_LCMS']: + libincs += Split(lenv['BF_LCMS_LIBPATH']) if lenv['WITH_BF_TIFF']: libincs += Split(lenv['BF_TIFF_LIBPATH']) if lenv['WITH_BF_FFTW3']: diff --git a/tools/btools.py b/tools/btools.py index e76ada3a985..a703103c59c 100644 --- a/tools/btools.py +++ b/tools/btools.py @@ -73,7 +73,7 @@ def validate_arguments(args, bc): 'BF_FANCY', 'BF_QUIET', 'BF_LINE_OVERWRITE', 'BF_X264_CONFIG', 'BF_XVIDCORE_CONFIG', - 'WITH_BF_LCMS', 'BF_LCMS_LIB', + 'WITH_BF_LCMS', 'BF_LCMS', 'BF_LCMS_INC', 'BF_LCMS_LIB', 'BF_LCMS_LIBPATH', 'WITH_BF_DOCS', 'BF_NUMJOBS', 'BF_MSVS', @@ -261,12 +261,18 @@ def read_opts(env, cfg, args): ('BF_PNG_LIB', 'PNG library', ''), ('BF_PNG_LIBPATH', 'PNG library path', ''), - (BoolVariable('WITH_BF_TIFF', 'Use TIFF if true', True)), + (BoolVariable('WITH_BF_TIFF', 'Use TIFF if true', True)), ('BF_TIFF', 'TIFF base path', ''), ('BF_TIFF_INC', 'TIFF include path', ''), ('BF_TIFF_LIB', 'TIFF library', ''), ('BF_TIFF_LIBPATH', 'TIFF library path', ''), + (BoolVariable('WITH_BF_LCMS', 'Enable color correction with lcms', False)), + ('BF_LCMS', 'LCMS base path', ''), + ('BF_LCMS_INC', 'LCMS include path', ''), + ('BF_LCMS_LIB', 'LCMS library', ''), + ('BF_LCMS_LIBPATH', 'LCMS library path', ''), + (BoolVariable('WITH_BF_ZLIB', 'Use ZLib if true', True)), ('BF_ZLIB', 'ZLib base path', ''), ('BF_ZLIB_INC', 'ZLib include path', ''), @@ -418,9 +424,6 @@ def read_opts(env, cfg, args): (BoolVariable('WITH_BF_LZO', 'Enable fast LZO pointcache compression', True)), (BoolVariable('WITH_BF_LZMA', 'Enable best LZMA pointcache compression', True)), - (BoolVariable('WITH_BF_LCMS', 'Enable color correction with lcms', False)), - ('BF_LCMS_LIB', 'LCMSlibrary', 'lcms'), - ('BF_X264_CONFIG', 'configuration flags for x264', ''), ('BF_XVIDCORE_CONFIG', 'configuration flags for xvidcore', ''), (BoolVariable('WITH_BF_DOCS', 'Generate API documentation', False)), From 05d2b904b2110855f1e668177287c892eb6dbe41 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 4 Jul 2010 15:52:32 +0000 Subject: [PATCH 287/674] remove unused var warnings in linux --- source/blender/editors/space_file/fsmenu.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/source/blender/editors/space_file/fsmenu.c b/source/blender/editors/space_file/fsmenu.c index a7d6288c3c9..6699c0b8bc7 100644 --- a/source/blender/editors/space_file/fsmenu.c +++ b/source/blender/editors/space_file/fsmenu.c @@ -281,7 +281,6 @@ void fsmenu_read_bookmarks(struct FSMenu* fsmenu, const char *filename) void fsmenu_read_system(struct FSMenu* fsmenu) { char line[256]; - FSMenuCategory category = FS_CATEGORY_BOOKMARKS; FILE *fp; #ifdef WIN32 @@ -459,15 +458,14 @@ void fsmenu_read_system(struct FSMenu* fsmenu) #else /* unix */ { - char dir[FILE_MAXDIR]; char *home= BLI_gethome(); if(home) { - BLI_snprintf(dir, FILE_MAXDIR, "%s/", home); - fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, dir, 1, 0); - BLI_snprintf(dir, FILE_MAXDIR, "%s/Desktop/", home); - if (BLI_exists(dir)) { - fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, dir, 1, 0); + BLI_snprintf(line, FILE_MAXDIR, "%s/", home); + fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, line, 1, 0); + BLI_snprintf(line, FILE_MAXDIR, "%s/Desktop/", home); + if (BLI_exists(line)) { + fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, line, 1, 0); } } @@ -476,7 +474,6 @@ void fsmenu_read_system(struct FSMenu* fsmenu) #ifdef __linux__ /* loop over mount points */ struct mntent *mnt; - FILE *fp; int len; fp = setmntent (MOUNTED, "r"); @@ -491,8 +488,8 @@ void fsmenu_read_system(struct FSMenu* fsmenu) len= strlen(mnt->mnt_dir); if(len && mnt->mnt_dir[len-1] != '/') { - BLI_snprintf(dir, FILE_MAXDIR, "%s/", mnt->mnt_dir); - fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM, dir, 1, 0); + BLI_snprintf(line, FILE_MAXDIR, "%s/", mnt->mnt_dir); + fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM, line, 1, 0); } else fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM, mnt->mnt_dir, 1, 0); From cc68f45502a0e6f94715eb61898b17fdfeba1da9 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sun, 4 Jul 2010 16:20:42 +0000 Subject: [PATCH 288/674] Fix cmake/OSX build after path changes. --- source/blender/blenlib/BLI_path_util.h | 8 ++++++++ source/blender/blenlib/CMakeLists.txt | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/source/blender/blenlib/BLI_path_util.h b/source/blender/blenlib/BLI_path_util.h index 24b74b40a37..e2cb0e131a5 100644 --- a/source/blender/blenlib/BLI_path_util.h +++ b/source/blender/blenlib/BLI_path_util.h @@ -33,6 +33,10 @@ #ifndef BLI_UTIL_H #define BLI_UTIL_H +#ifdef __cplusplus +extern "C" { +#endif + struct ListBase; struct direntry; @@ -191,5 +195,9 @@ void BLI_where_is_temp(char *fullname, int usertemp); void BLI_string_to_utf8(char *original, char *utf_8, const char *code); #endif +#ifdef __cplusplus +} +#endif + #endif diff --git a/source/blender/blenlib/CMakeLists.txt b/source/blender/blenlib/CMakeLists.txt index 185e1c9c960..21cd92c0e95 100644 --- a/source/blender/blenlib/CMakeLists.txt +++ b/source/blender/blenlib/CMakeLists.txt @@ -34,7 +34,7 @@ SET(INC ) IF(APPLE) - SET(SRC ${SRC} intern/path_util_cocoa.m) + SET(SRC ${SRC} intern/path_util_cocoa.mm) ENDIF(APPLE) IF(CMAKE_SYSTEM_NAME MATCHES "Linux") From 790491b0f0e5d419dc8b0b04cf5a501357053a38 Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Sun, 4 Jul 2010 16:34:24 +0000 Subject: [PATCH 289/674] Fix for paths commit from Andrea: For Mac, there was no code supporting Carbon. Added a stubs function to make it compile, but it doesn't work yet properly. --- source/blender/blenlib/intern/path_util.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index b43da1cf9bd..4d21cb853f8 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -1015,6 +1015,15 @@ static int get_knownfolder_path(char *path, int folder) } #endif +#if defined(__APPLE__) +#ifndef WITH_COCOA +const char* BLI_osx_getBasePath(basePathesTypes pathType) +{ + return "/tmp/"; +} +#endif +#endif + static int get_path_user(char *targetpath, char *folder_name, char *envvar) { char user_path[FILE_MAX]; From ce832cac038e5ef7ad4699106e88a2b4e620d906 Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Sun, 4 Jul 2010 16:47:35 +0000 Subject: [PATCH 290/674] SVN maintenance. --- .../blender/blenlib/intern/path_util_cocoa.mm | 190 +++++++++--------- 1 file changed, 94 insertions(+), 96 deletions(-) diff --git a/source/blender/blenlib/intern/path_util_cocoa.mm b/source/blender/blenlib/intern/path_util_cocoa.mm index 00593afcd0c..d12938b2b45 100644 --- a/source/blender/blenlib/intern/path_util_cocoa.mm +++ b/source/blender/blenlib/intern/path_util_cocoa.mm @@ -1,96 +1,94 @@ -/* path_util_cocoa.m - * - * Functions specific to osx that use API available only in Objective-C - * - * - * $Id: util_cocoa.m 25007 2009-11-29 19:16:52Z kazanbas $ - * - * ***** 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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): Damien Plisson 2010 - * - * ***** END GPL LICENSE BLOCK ***** - * - */ - - -#import - -#include - -#include "BLI_path_util.h" - - - -/** - * Gets the ~/Library/Application Data/Blender folder - */ -const char* BLI_osx_getBasePath(basePathesTypes pathType) -{ - static char tempPath[512] = ""; - - NSAutoreleasePool *pool; - NSString *basePath; - NSArray *paths; - - pool = [[NSAutoreleasePool alloc] init]; - - switch (pathType) { - /* Standard pathes */ - case BasePath_Temporary: - strcpy(tempPath, [NSTemporaryDirectory() cStringUsingEncoding:NSASCIIStringEncoding]); - [pool drain]; - return tempPath; - break; - - /* Blender specific pathes */ - case BasePath_BlenderShared: - paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSLocalDomainMask, YES); - if ([paths count] > 0) - basePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Blender"]; - else { //Error - basePath = @""; - } - break; - case BasePath_BlenderUser: - paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); - if ([paths count] > 0) - basePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Blender"]; - else { //Error - basePath = @""; - } - break; - case BasePath_ApplicationBundle: - basePath = [[NSBundle mainBundle] bundlePath]; - break; - - default: - tempPath[0] = 0; - [pool drain]; - return tempPath; - } - - strcpy(tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]); - - [pool drain]; - return tempPath; -} \ No newline at end of file +/* + * $Id$ + * + * Functions specific to osx that use API available only in Objective-C + * + * ***** 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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): Damien Plisson 2010 + * + * ***** END GPL LICENSE BLOCK ***** + * + */ + + +#import + +#include + +#include "BLI_path_util.h" + + + +/** + * Gets the ~/Library/Application Data/Blender folder + */ +const char* BLI_osx_getBasePath(basePathesTypes pathType) +{ + static char tempPath[512] = ""; + + NSAutoreleasePool *pool; + NSString *basePath; + NSArray *paths; + + pool = [[NSAutoreleasePool alloc] init]; + + switch (pathType) { + /* Standard pathes */ + case BasePath_Temporary: + strcpy(tempPath, [NSTemporaryDirectory() cStringUsingEncoding:NSASCIIStringEncoding]); + [pool drain]; + return tempPath; + break; + + /* Blender specific pathes */ + case BasePath_BlenderShared: + paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSLocalDomainMask, YES); + if ([paths count] > 0) + basePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Blender"]; + else { //Error + basePath = @""; + } + break; + case BasePath_BlenderUser: + paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); + if ([paths count] > 0) + basePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Blender"]; + else { //Error + basePath = @""; + } + break; + case BasePath_ApplicationBundle: + basePath = [[NSBundle mainBundle] bundlePath]; + break; + + default: + tempPath[0] = 0; + [pool drain]; + return tempPath; + } + + strcpy(tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]); + + [pool drain]; + return tempPath; +} From 574d3076356d94740681d23657cecee1ece26d3f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 4 Jul 2010 16:47:58 +0000 Subject: [PATCH 291/674] fairly sure this is a typo, matt/elubie please check --- source/blender/blenlib/intern/path_util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 4d21cb853f8..ce787c6b114 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -1156,7 +1156,7 @@ char *BLI_get_folder(int folder_id, char *subfolder) return NULL; case BLENDER_SYSTEM_PYTHON: - BLI_join_dirfile(search_path, "scripts", subfolder); + BLI_join_dirfile(search_path, "python", subfolder); if (get_path_system(path, search_path, "BLENDER_SYSTEM_PYTHON")) break; return NULL; From 15de21e43807620801f07e5ebf87ab74a4a40636 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 4 Jul 2010 17:14:06 +0000 Subject: [PATCH 292/674] fix for 2 bugs in own recent commits, - 29881 broke BLI_stringdec in some cases. - poll function for view home crashed view menu because the rv3d isnt available (still needs fixing). --- source/blender/blenlib/intern/path_util.c | 10 ++++++++-- source/blender/editors/space_view3d/view3d_edit.c | 4 ++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index ce787c6b114..a3c0f994c05 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -105,12 +105,18 @@ int BLI_stringdec(const char *string, char *head, char *tail, unsigned short *nu } if (found) { if (tail) strcpy(tail, &string[nume+1]); - if (head) BLI_strncpy(head, string, nums); + if (head) { + strcpy(head,string); + head[nums]=0; + } if (numlen) *numlen = nume-nums+1; return ((int)atoi(&(string[nums]))); } if (tail) strcpy(tail, string + len); - if (head) BLI_strncpy(head, string, nums); + if (head) { + strncpy(head, string, len); + head[len] = '\0'; + } if (numlen) *numlen=0; return 0; } diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 82cba7759ca..56714143fe9 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -1309,8 +1309,8 @@ static int viewhome_exec(bContext *C, wmOperator *op) /* was view3d_home() in 2. static int viewhome_poll(bContext *C) { if(ED_operator_view3d_active(C)) { - RegionView3D *rv3d= CTX_wm_region_view3d(C); - if(rv3d->persp!=RV3D_CAMOB) { + RegionView3D *rv3d= CTX_wm_region_view3d(C); //XXX, when accessed from a header menu this doesnt work! + if(rv3d && rv3d->persp!=RV3D_CAMOB) { return 1; } } From effefdc9fae07aa59fcff732d84a8b3c206f7c9f Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sun, 4 Jul 2010 17:22:24 +0000 Subject: [PATCH 293/674] Fix #22432: unrenderable objects cast shadow in GLSL. Committing patch by Matt, I only reviewed it. --- source/blender/editors/space_view3d/drawobject.c | 3 +++ source/blender/editors/space_view3d/view3d_draw.c | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 59802e9d5ac..c8581abd704 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -5557,6 +5557,9 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) if (ob!=scene->obedit) { if (ob->restrictflag & OB_RESTRICT_VIEW) return; + if ((ob->restrictflag & OB_RESTRICT_RENDER) && + (v3d->flag2 & V3D_RENDER_OVERRIDE)) + return; } /* XXX particles are not safe for simultaneous threaded render */ diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index cfae9e7c4d5..c3d034eebd3 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -1830,15 +1830,15 @@ static void gpu_update_lamps_shadows(Scene *scene, View3D *v3d) for(shadow=shadows.first; shadow; shadow=shadow->next) { /* this needs to be done better .. */ float viewmat[4][4], winmat[4][4]; - int drawtype, lay, winsize, flag2; + int drawtype, lay, winsize, flag2=v3d->flag2; drawtype= v3d->drawtype; lay= v3d->lay; - flag2= v3d->flag2 & V3D_SOLID_TEX; v3d->drawtype = OB_SOLID; v3d->lay &= GPU_lamp_shadow_layer(shadow->lamp); v3d->flag2 &= ~V3D_SOLID_TEX; + v3d->flag2 |= V3D_RENDER_OVERRIDE; GPU_lamp_shadow_buffer_bind(shadow->lamp, viewmat, &winsize, winmat); @@ -1859,7 +1859,7 @@ static void gpu_update_lamps_shadows(Scene *scene, View3D *v3d) v3d->drawtype= drawtype; v3d->lay= lay; - v3d->flag2 |= flag2; + v3d->flag2 = flag2; } BLI_freelistN(&shadows); @@ -1962,7 +1962,7 @@ void ED_view3d_draw_offscreen(Scene *scene, View3D *v3d, ARegion *ar, int winx, bwiny= ar->winy; ar->winx= winx; ar->winy= winy; - + /* set flags */ G.f |= G_RENDER_OGL; From 6c0f3d052e1e41089a5887d38529b659b2792dce Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sun, 4 Jul 2010 18:40:59 +0000 Subject: [PATCH 294/674] Detect SSE building support with cmake, and moved setting the defines out of the render mode cmake file into the main one. Should fix PPC compile, and hopefully not break others. --- CMake/macros.cmake | 17 +++++++++++++++ CMakeLists.txt | 31 +++++++++++++++++++++------- source/blender/render/CMakeLists.txt | 5 ----- 3 files changed, 40 insertions(+), 13 deletions(-) diff --git a/CMake/macros.cmake b/CMake/macros.cmake index 914547e168e..17662c5c447 100644 --- a/CMake/macros.cmake +++ b/CMake/macros.cmake @@ -181,3 +181,20 @@ MACRO(SETUP_LIBLINKS TARGET_LINK_LIBRARIES(${target} ${PTHREADS_LIB}) ENDIF(WIN32) ENDMACRO(SETUP_LIBLINKS) + +MACRO(TEST_SSE_SUPPORT) + INCLUDE(CHECKCXXSOURCECOMPILES) + + MESSAGE(STATUS "Detecting SSE support") + IF(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + SET(CMAKE_REQUIRED_FLAGS "-msse -msse2") + ELSEIF(MSVC) + SET(CMAKE_REQUIRED_FLAGS "/arch:SSE2") + ENDIF() + + CHECK_CXX_SOURCE_COMPILES(" + #include + int main() { __m128 v = _mm_setzero_ps(); return 0; }" + SUPPORT_SSE_BUILD) +ENDMACRO(TEST_SSE_SUPPORT) + diff --git a/CMakeLists.txt b/CMakeLists.txt index 82c57c014fa..1088d95ab67 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -59,6 +59,10 @@ SET(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib) # ...but thats quite involved, make sure this matches the blender version. SET(BLENDER_VERSION 2.5) +#----------------------------------------------------------------------------- +# Load some macros. +INCLUDE(CMake/macros.cmake) + #----------------------------------------------------------------------------- # Set default config options @@ -114,7 +118,7 @@ OPTION(WITH_RAYOPTIMIZATION "Enable use of SIMD (SSE) optimizations for the rayt OPTION(WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation tracking" OFF) OPTION(WITH_INSTALL "Install accompanying scripts and language files needed to run blender" ON) -IF (APPLE) +IF(APPLE) OPTION(WITH_COCOA "Use Cocoa framework instead of deprecated Carbon" ON) OPTION(USE_QTKIT "Use QtKit instead of Carbon quicktime (needed for having partial quicktime for 64bit)" OFF) OPTION(WITH_LIBS10.5 "Use 10.5 libs (needed for 64bit builds)" OFF) @@ -128,6 +132,8 @@ IF(NOT WITH_GAMEENGINE AND WITH_PLAYER) MESSAGE("WARNING: WITH_PLAYER needs WITH_GAMEENGINE") ENDIF(NOT WITH_GAMEENGINE AND WITH_PLAYER) +TEST_SSE_SUPPORT() + # disabled for now, not supported # OPTION(WITH_WEBPLUGIN "Enable Web Plugin (Unix only)" OFF) @@ -139,10 +145,6 @@ ENDIF(NOT WITH_GAMEENGINE AND WITH_PLAYER) # # When changing any of this remember to update the notes in doc/blender-cmake.txt -#----------------------------------------------------------------------------- -# Load some macros. -INCLUDE(CMake/macros.cmake) - #----------------------------------------------------------------------------- #Platform specifics @@ -308,9 +310,11 @@ IF(UNIX AND NOT APPLE) SET(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing -Wno-char-subscripts") - IF(WITH_RAYOPTIMIZATION) - SET(PLATFORM_CFLAGS " -msse ${PLATFORM_CFLAGS}") - ENDIF(WITH_RAYOPTIMIZATION) + IF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) + SET(PLATFORM_CFLAGS " -msse -msse2 ${PLATFORM_CFLAGS}") + ADD_DEFINITIONS(-D__SSE__) + ADD_DEFINITIONS(-D__MMX__) + ENDIF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) SET(PLATFORM_LINKFLAGS "-pthread") @@ -396,6 +400,11 @@ IF(WIN32) SET(QUICKTIME_LIBPATH ${QUICKTIME}/Libraries) ENDIF(WITH_QUICKTIME) + IF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) + ADD_DEFINITIONS(-D__SSE__) + ADD_DEFINITIONS(-D__MMX__) + ENDIF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) + IF(MSVC) IF(CMAKE_CL_64) SET(LLIBS kernel32 user32 vfw32 winmm ws2_32 ) @@ -797,6 +806,12 @@ IF(APPLE) SET(TIFF_LIBPATH ${TIFF}/lib) ENDIF(WITH_TIFF) + IF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) + SET(PLATFORM_CFLAGS " -msse -msse2 ${PLATFORM_CFLAGS}") + ADD_DEFINITIONS(-D__SSE__) + ADD_DEFINITIONS(-D__MMX__) + ENDIF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) + SET(EXETYPE MACOSX_BUNDLE) SET(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g") diff --git a/source/blender/render/CMakeLists.txt b/source/blender/render/CMakeLists.txt index 89bdad7c6c7..9199a0a33ba 100644 --- a/source/blender/render/CMakeLists.txt +++ b/source/blender/render/CMakeLists.txt @@ -54,11 +54,6 @@ IF(APPLE) ENDIF(CMAKE_OSX_ARCHITECTURES MATCHES "i386" OR CMAKE_OSX_ARCHITECTURES MATCHES "x86_64") ENDIF(APPLE) -IF(WITH_RAYOPTIMIZATION) - ADD_DEFINITIONS(-D__SSE__) - ADD_DEFINITIONS(-D__MMX__) -ENDIF(WITH_RAYOPTIMIZATION) - #TODO #if env['OURPLATFORM']=='linux2': # cflags='-pthread' From 8f825bd460d95e8daa79bbe06564964da7189352 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sun, 4 Jul 2010 19:58:52 +0000 Subject: [PATCH 295/674] Fix #21062 and #22175: crash with node previews being calculated while editing nodes. Now preview jobs are killed before making any node edits. --- source/blender/editors/include/ED_render.h | 1 + .../editors/interface/interface_templates.c | 5 +-- .../blender/editors/render/render_preview.c | 6 +++ source/blender/editors/space_file/filelist.c | 2 +- source/blender/editors/space_node/node_edit.c | 42 ++++++++++++++++--- source/blender/windowmanager/WM_api.h | 4 +- source/blender/windowmanager/intern/wm_jobs.c | 15 +++---- 7 files changed, 54 insertions(+), 21 deletions(-) diff --git a/source/blender/editors/include/ED_render.h b/source/blender/editors/include/ED_render.h index 6100ecd436f..f34670da471 100644 --- a/source/blender/editors/include/ED_render.h +++ b/source/blender/editors/include/ED_render.h @@ -78,6 +78,7 @@ void ED_preview_free_dbase(void); void ED_preview_shader_job(const struct bContext *C, void *owner, struct ID *id, struct ID *parent, struct MTex *slot, int sizex, int sizey, int method); void ED_preview_icon_job(const struct bContext *C, void *owner, struct ID *id, unsigned int *rect, int sizex, int sizey); +void ED_preview_kill_jobs(const struct bContext *C); void ED_preview_draw(const struct bContext *C, void *idp, void *parentp, void *slot, rcti *rect); diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 865a4ec8af9..dbe64bedbc6 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -952,7 +952,6 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con, uiLayout *result= NULL, *col, *col1, *col2, *box, *row, *subrow, *split; PointerRNA ptr; char typestr[32]; - short width = 265; short proxy_protected, xco=0, yco=0; int rb_col; @@ -2444,13 +2443,13 @@ static void do_running_jobs(bContext *C, void *arg, int event) G.afbreek= 1; break; case B_STOPCAST: - WM_jobs_stop(CTX_wm_manager(C), CTX_wm_screen(C)); + WM_jobs_stop(CTX_wm_manager(C), CTX_wm_screen(C), NULL); break; case B_STOPANIM: WM_operator_name_call(C, "SCREEN_OT_animation_play", WM_OP_INVOKE_SCREEN, NULL); break; case B_STOPCOMPO: - WM_jobs_stop(CTX_wm_manager(C), CTX_wm_area(C)); + WM_jobs_stop(CTX_wm_manager(C), CTX_wm_area(C), NULL); break; } } diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 898a8f527c3..ae2462b95f8 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -1153,4 +1153,10 @@ void ED_preview_shader_job(const bContext *C, void *owner, ID *id, ID *parent, M WM_jobs_start(CTX_wm_manager(C), steve); } +void ED_preview_kill_jobs(const struct bContext *C) +{ + wmWindowManager *wm= CTX_wm_manager(C); + if(wm) + WM_jobs_kill(wm, NULL, common_preview_startjob); +} diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c index 5e4887827b6..37653d616c4 100644 --- a/source/blender/editors/space_file/filelist.c +++ b/source/blender/editors/space_file/filelist.c @@ -1360,7 +1360,7 @@ void thumbnails_start(struct FileList* filelist, const struct bContext* C) void thumbnails_stop(struct FileList* filelist, const struct bContext* C) { - WM_jobs_kill(CTX_wm_manager(C), filelist); + WM_jobs_kill(CTX_wm_manager(C), filelist, NULL); } int thumbnails_running(struct FileList* filelist, const struct bContext* C) diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 222504179cb..cea88c33c5b 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -66,6 +66,7 @@ #include "ED_node.h" #include "ED_screen.h" +#include "ED_render.h" #include "RNA_access.h" #include "RNA_define.h" @@ -549,6 +550,8 @@ static int node_group_edit_exec(bContext *C, wmOperator *op) SpaceNode *snode = CTX_wm_space_node(C); bNode *gnode; + ED_preview_kill_jobs(C); + gnode= nodeGetActive(snode->edittree); snode_make_group_editable(snode, gnode); @@ -594,6 +597,8 @@ static int node_group_ungroup_exec(bContext *C, wmOperator *op) SpaceNode *snode = CTX_wm_space_node(C); bNode *gnode; + ED_preview_kill_jobs(C); + /* are we inside of a group? */ gnode= node_tree_get_editgroup(snode->nodetree); if(gnode) @@ -1099,13 +1104,16 @@ static int node_active_link_viewer(bContext *C, wmOperator *op) SpaceNode *snode= CTX_wm_space_node(C); bNode *node; - node= editnode_get_active(snode->edittree); - if(node) { - node_link_viewer(snode, node); - snode_notify(C, snode); - } + if(!node) + return OPERATOR_CANCELLED; + + ED_preview_kill_jobs(C); + + node_link_viewer(snode, node); + snode_notify(C, snode); + return OPERATOR_FINISHED; } @@ -1467,6 +1475,8 @@ static int node_duplicate_exec(bContext *C, wmOperator *op) { SpaceNode *snode= CTX_wm_space_node(C); + ED_preview_kill_jobs(C); + ntreeCopyTree(snode->edittree, 1); /* 1 == internally selected nodes */ ntreeSolveOrder(snode->edittree); @@ -1625,7 +1635,7 @@ static int node_link_modal(bContext *C, wmOperator *op, wmEvent *event) static int node_link_init(SpaceNode *snode, NodeLinkDrag *nldrag) { bNodeLink *link; - + /* output indicated? */ if(find_indicated_socket(snode, &nldrag->node, &nldrag->sock, SOCK_OUT)) { if(nodeCountSocketLinks(snode->edittree, nldrag->sock) < nldrag->sock->limit) @@ -1679,6 +1689,8 @@ static int node_link_invoke(bContext *C, wmOperator *op, wmEvent *event) UI_view2d_region_to_view(&ar->v2d, event->x - ar->winrct.xmin, event->y - ar->winrct.ymin, &snode->mx, &snode->my); + ED_preview_kill_jobs(C); + nldrag->in_out= node_link_init(snode, nldrag); if(nldrag->in_out) { @@ -1725,6 +1737,8 @@ static int node_make_link_exec(bContext *C, wmOperator *op) SpaceNode *snode= CTX_wm_space_node(C); int replace = RNA_boolean_get(op->ptr, "replace"); + ED_preview_kill_jobs(C); + snode_autoconnect(snode, 0, replace); node_tree_verify_groups(snode->nodetree); @@ -1788,6 +1802,8 @@ static int cut_links_exec(bContext *C, wmOperator *op) if(i>1) { bNodeLink *link, *next; + + ED_preview_kill_jobs(C); for(link= snode->edittree->links.first; link; link= next) { next= link->next; @@ -1840,6 +1856,8 @@ static int node_read_renderlayers_exec(bContext *C, wmOperator *op) Scene *curscene= CTX_data_scene(C), *scene; bNode *node; + ED_preview_kill_jobs(C); + /* first tag scenes unread */ for(scene= G.main->scene.first; scene; scene= scene->id.next) scene->id.flag |= LIB_DOIT; @@ -1956,6 +1974,8 @@ static int node_group_make_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } } + + ED_preview_kill_jobs(C); gnode= nodeMakeGroupFromSelected(snode->nodetree); if(gnode==NULL) { @@ -2058,6 +2078,8 @@ static int node_preview_exec(bContext *C, wmOperator *op) if((snode == NULL) || (snode->edittree == NULL)) return OPERATOR_CANCELLED; + ED_preview_kill_jobs(C); + node_flag_toggle_exec(snode, NODE_PREVIEW); snode_notify(C, snode); @@ -2090,6 +2112,8 @@ static int node_socket_toggle_exec(bContext *C, wmOperator *op) if((snode == NULL) || (snode->edittree == NULL)) return OPERATOR_CANCELLED; + ED_preview_kill_jobs(C); + for(node= snode->edittree->nodes.first; node; node= node->next) { if(node->flag & SELECT) { if(node_has_hidden_sockets(node)) { @@ -2138,6 +2162,8 @@ static int node_mute_exec(bContext *C, wmOperator *op) if(node_tree_get_editgroup(snode->nodetree)) return OPERATOR_CANCELLED; + ED_preview_kill_jobs(C); + for(node= snode->edittree->nodes.first; node; node= node->next) { if(node->flag & SELECT) { if(node->inputs.first && node->outputs.first) { @@ -2174,6 +2200,8 @@ static int node_delete_exec(bContext *C, wmOperator *op) SpaceNode *snode= CTX_wm_space_node(C); bNode *node, *next; + ED_preview_kill_jobs(C); + for(node= snode->edittree->nodes.first; node; node= next) { next= node->next; if(node->flag & SELECT) { @@ -2275,6 +2303,8 @@ static int node_add_file_exec(bContext *C, wmOperator *op) if (snode->nodetree->type==NTREE_COMPOSIT) ntype = CMP_NODE_IMAGE; + + ED_preview_kill_jobs(C); node = node_add_node(snode, scene, ntype, snode->mx, snode->my); diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index 235be838f63..78ea0350667 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -325,8 +325,8 @@ void WM_jobs_callbacks(struct wmJob *, void (*endjob)(void *)); void WM_jobs_start(struct wmWindowManager *wm, struct wmJob *); -void WM_jobs_stop(struct wmWindowManager *wm, void *owner); -void WM_jobs_kill(struct wmWindowManager *wm, void *owner); +void WM_jobs_stop(struct wmWindowManager *wm, void *owner, void *startjob); +void WM_jobs_kill(struct wmWindowManager *wm, void *owner, void *startjob); void WM_jobs_stop_all(struct wmWindowManager *wm); /* clipboard */ diff --git a/source/blender/windowmanager/intern/wm_jobs.c b/source/blender/windowmanager/intern/wm_jobs.c index c3ad8f96cb0..80f1c680931 100644 --- a/source/blender/windowmanager/intern/wm_jobs.c +++ b/source/blender/windowmanager/intern/wm_jobs.c @@ -339,28 +339,25 @@ void WM_jobs_stop_all(wmWindowManager *wm) } -/* signal job(s) from this owner to stop, timer is required to get handled */ -void WM_jobs_stop(wmWindowManager *wm, void *owner) +/* signal job(s) from this owner or callback to stop, timer is required to get handled */ +void WM_jobs_stop(wmWindowManager *wm, void *owner, void *startjob) { wmJob *steve; for(steve= wm->jobs.first; steve; steve= steve->next) - if(steve->owner==owner) + if(steve->owner==owner || steve->startjob==startjob) if(steve->running) steve->stop= 1; } /* actually terminate thread and job timer */ -void WM_jobs_kill(wmWindowManager *wm, void *owner) +void WM_jobs_kill(wmWindowManager *wm, void *owner, void *startjob) { wmJob *steve; for(steve= wm->jobs.first; steve; steve= steve->next) - if(steve->owner==owner) - break; - - if (steve) - wm_jobs_kill_job(wm, steve); + if(steve->owner==owner || steve->startjob==startjob) + wm_jobs_kill_job(wm, steve); } From 83a2a4e5b889a023cb3d22120f348bd9e96bc2bb Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 4 Jul 2010 20:59:10 +0000 Subject: [PATCH 296/674] Improvements to Blenders color balance (lift/gamma/gain). Fairly closely match some mac application colin has called 'Looks', to give better results. - lift is now applied non linear (was being added to the color) - change the color wheel to preserve the luminance of the gamma and gain values, this stops the color from being set too dark (option for the color wheel template). - sub-pixel precission for the color wheel since the white area at the center can make a lot of difference with a very small change. This change will make existing node and sequencer setups lift render slighly differently however discussed this with Ton and he's ok with it. --- .../scripts/ui/properties_physics_common.py | 2 +- release/scripts/ui/space_sequencer.py | 4 ++-- source/blender/blenkernel/intern/sequencer.c | 24 +++++++++++-------- source/blender/editors/include/UI_interface.h | 4 +++- .../editors/interface/interface_handlers.c | 14 ++++++++++- .../editors/interface/interface_intern.h | 8 +++++-- .../editors/interface/interface_templates.c | 14 ++++++++--- .../editors/interface/interface_widgets.c | 3 ++- source/blender/editors/space_node/drawnode.c | 14 +++++------ source/blender/makesrna/intern/rna_ui_api.c | 1 + 10 files changed, 60 insertions(+), 28 deletions(-) diff --git a/release/scripts/ui/properties_physics_common.py b/release/scripts/ui/properties_physics_common.py index 5b4c07642b4..6d97e82ff41 100644 --- a/release/scripts/ui/properties_physics_common.py +++ b/release/scripts/ui/properties_physics_common.py @@ -38,7 +38,7 @@ def point_cache_ui(self, context, cache, enabled, cachetype): col.operator("ptcache.remove", icon='ZOOMOUT', text="") row = layout.row() - if cachetype in {'PSYS', 'HAIR', 'SMOKE'}: + if cachetype in ('PSYS', 'HAIR', 'SMOKE'): row.prop(cache, "external") if cache.external: diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index ed39a98e86a..03e692693d8 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -753,11 +753,11 @@ class SEQUENCER_PT_filter(SequencerButtonsPanel): col.row().prop(strip.color_balance, "lift") col.prop(strip.color_balance, "inverse_lift", text="Inverse") col = row.column() - col.template_color_wheel(strip.color_balance, "gamma", value_slider=False) + col.template_color_wheel(strip.color_balance, "gamma", value_slider=False, lock_luminosity=True) col.row().prop(strip.color_balance, "gamma") col.prop(strip.color_balance, "inverse_gamma", text="Inverse") col = row.column() - col.template_color_wheel(strip.color_balance, "gain", value_slider=False) + col.template_color_wheel(strip.color_balance, "gain", value_slider=False, lock_luminosity=True) col.row().prop(strip.color_balance, "gain") col.prop(strip.color_balance, "inverse_gain", text="Inverse") diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index e21901f70d9..28cae5eeaa6 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -49,6 +49,7 @@ #include "RNA_access.h" #include "RE_pipeline.h" +#include "BLI_math.h" #include "BLI_fileops.h" #include "BLI_listbase.h" #include "BLI_path_util.h" @@ -1528,32 +1529,35 @@ static void make_cb_table_byte(float lift, float gain, float gamma, unsigned char * table, float mul) { int y; + /* matches 'LooksBuilder', generally looks nice too */ + if(lift >= 1.0f) lift= 0.0f; + else lift= (1.0f - lift) * (1.0f - lift); + /* end modif's */ for (y = 0; y < 256; y++) { - float v = 1.0 * y / 255; + float v = (float)y * (1.0 / 255.0f); v *= gain; - v += lift; + v = pow(v, lift); v = pow(v, gamma); v *= mul; - if ( v > 1.0) { - v = 1.0; - } else if (v < 0.0) { - v = 0.0; - } + CLAMP(v, 0.0f, 1.0f); table[y] = v * 255; } - } static void make_cb_table_float(float lift, float gain, float gamma, float * table, float mul) { int y; + /* matches 'LooksBuilder', generally looks nice too */ + if(lift >= 1.0f) lift= 0.0f; + else lift= (1.0f - lift) * (1.0f - lift); + /* end modif's */ for (y = 0; y < 256; y++) { - float v = (float) y * 1.0 / 255.0; + float v = (float)y * (1.0 / 255.0f); v *= gain; - v += lift; + v = pow(v, lift); v = pow(v, gamma); v *= mul; table[y] = v; diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index 35531a2a029..fea8c32b43b 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -152,6 +152,8 @@ typedef struct uiLayout uiLayout; #define UI_BUT_IMMEDIATE (1<<26) #define UI_BUT_NO_TOOLTIP (1<<27) +#define UI_BUT_VEC_SIZE_LOCK (1<<28) /* used to flag if color hsv-circle should keep luminance */ + #define UI_PANEL_WIDTH 340 #define UI_COMPACT_PANEL_WIDTH 160 @@ -683,7 +685,7 @@ void uiTemplateHistogram(uiLayout *layout, struct PointerRNA *ptr, char *propnam void uiTemplateWaveform(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand); void uiTemplateVectorscope(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand); void uiTemplateCurveMapping(uiLayout *layout, struct PointerRNA *ptr, char *propname, int type, int levels, int brush); -void uiTemplateColorWheel(uiLayout *layout, struct PointerRNA *ptr, char *propname, int value_slider, int lock); +void uiTemplateColorWheel(uiLayout *layout, struct PointerRNA *ptr, char *propname, int value_slider, int lock, int lock_luminosity); void uiTemplateTriColorSet(uiLayout *layout, struct PointerRNA *ptr, char *propname); void uiTemplateLayers(uiLayout *layout, struct PointerRNA *ptr, char *propname, PointerRNA *used_ptr, char *used_propname, int active_layer); diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index eda7102e69b..999b92e6854 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -236,7 +236,7 @@ static uiBut *ui_but_last(uiBlock *block) static int ui_is_a_warp_but(uiBut *but) { if(U.uiflag & USER_CONTINUOUS_MOUSE) - if(ELEM(but->type, NUM, NUMABS)) + if(ELEM3(but->type, NUM, NUMABS, HSVCIRCLE)) return TRUE; return FALSE; @@ -3064,10 +3064,22 @@ static int ui_numedit_but_HSVCIRCLE(uiBut *but, uiHandleButtonData *data, int mx if (but->a2 == 1) { // lock if (hsv[2] == 0.f) hsv[2] = 0.0001f; } + + if(U.uiflag & USER_CONTINUOUS_MOUSE) { + /* slow down the mouse, this is fairly picky */ + mx = (data->dragstartx*0.9 + mx*0.1); + my = (data->dragstarty*0.9 + my*0.1); + } ui_hsvcircle_vals_from_pos(hsv, hsv+1, &rect, (float)mx, (float)my); hsv_to_rgb(hsv[0], hsv[1], hsv[2], rgb, rgb+1, rgb+2); + + if(but->flag & UI_BUT_VEC_SIZE_LOCK) { + normalize_v3(rgb); + mul_v3_fl(rgb, but->color_lum); + } + ui_set_but_vectorf(but, rgb); data->draglastx= mx; diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index ecefcf93c28..078e337f8f9 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -173,6 +173,7 @@ struct uiBut { float hardmin, hardmax, softmin, softmax; float a1, a2, hsv[3]; // hsv is temp memory for hsv buttons float aspect; + float color_lum; /* used only for color buttons so far */ uiButHandleFunc func; void *func_arg1; @@ -184,8 +185,11 @@ struct uiBut { struct bContextStore *context; + /* not ysed yet, was used in 2.4x for ui_draw_pulldown_round & friends */ + /* void (*embossfunc)(int , int , float, float, float, float, float, int); void (*sliderfunc)(int , float, float, float, float, float, float, int); + */ uiButCompleteFunc autocomplete_func; void *autofunc_arg; @@ -228,12 +232,12 @@ struct uiBut { /* Operator data */ struct wmOperatorType *optype; - int opcontext; struct IDProperty *opproperties; struct PointerRNA *opptr; + short opcontext; /* Draggable data, type is WM_DRAG_... */ - int dragtype; + short dragtype; void *dragpoin; struct ImBuf *imb; float imb_scale; diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index dbe64bedbc6..261f83f9bbc 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -1949,11 +1949,12 @@ void uiTemplateCurveMapping(uiLayout *layout, PointerRNA *ptr, char *propname, i #define WHEEL_SIZE 100 -void uiTemplateColorWheel(uiLayout *layout, PointerRNA *ptr, char *propname, int value_slider, int lock) +void uiTemplateColorWheel(uiLayout *layout, PointerRNA *ptr, char *propname, int value_slider, int lock, int lock_luminosity) { PropertyRNA *prop= RNA_struct_find_property(ptr, propname); uiBlock *block= uiLayoutGetBlock(layout); uiLayout *col, *row; + uiBut *but; float softmin, softmax, step, precision; if (!prop) { @@ -1966,8 +1967,15 @@ void uiTemplateColorWheel(uiLayout *layout, PointerRNA *ptr, char *propname, int col = uiLayoutColumn(layout, 0); row= uiLayoutRow(col, 1); - uiDefButR(block, HSVCIRCLE, 0, "", 0, 0, WHEEL_SIZE, WHEEL_SIZE, ptr, propname, -1, 0.0, 0.0, 0, lock, ""); - + but= uiDefButR(block, HSVCIRCLE, 0, "", 0, 0, WHEEL_SIZE, WHEEL_SIZE, ptr, propname, -1, 0.0, 0.0, 0, lock, ""); + + if(lock_luminosity) { + float color[4]; /* incase of alpha */ + but->flag |= UI_BUT_VEC_SIZE_LOCK; + RNA_property_float_get_array(ptr, prop, color); + but->color_lum= len_v3(color); /* abuse the soft-max though this is a kind of soft-max */ + } + uiItemS(row); if (value_slider) diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index 2cfdf2d5e04..b7a1874cd2b 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -1674,6 +1674,7 @@ void ui_draw_but_HSVCIRCLE(uiBut *but, uiWidgetColors *wcol, rcti *rect) float co= cos(ang); ui_hsvcircle_vals_from_pos(hsv, hsv+1, rect, centx + co*radius, centy + si*radius); + CLAMP(hsv[2], 0.0f, 1.0f); /* for display only */ hsv_to_rgb(hsv[0], hsv[1], hsv[2], col, col+1, col+2); glColor3fv(col); glVertex2f( centx + co*radius, centy + si*radius); @@ -1688,7 +1689,7 @@ void ui_draw_but_HSVCIRCLE(uiBut *but, uiWidgetColors *wcol, rcti *rect) glEnable(GL_BLEND); glEnable(GL_LINE_SMOOTH ); glColor3ubv((unsigned char*)wcol->outline); - glutil_draw_lined_arc(0.0f, M_PI*2.0, radius, tot); + glutil_draw_lined_arc(0.0f, M_PI*2.0, radius, tot + 1); glDisable(GL_BLEND); glDisable(GL_LINE_SMOOTH ); glPopMatrix(); diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c index 629b1008aa0..7b4584da3ab 100644 --- a/source/blender/editors/space_node/drawnode.c +++ b/source/blender/editors/space_node/drawnode.c @@ -107,7 +107,7 @@ static void node_buts_rgb(uiLayout *layout, bContext *C, PointerRNA *ptr) RNA_property_collection_lookup_int(ptr, prop, 0, &sockptr); col = uiLayoutColumn(layout, 0); - uiTemplateColorWheel(col, &sockptr, "default_value", 1, 0); + uiTemplateColorWheel(col, &sockptr, "default_value", 1, 0, 0); uiItemR(col, &sockptr, "default_value", 0, "", 0); } @@ -947,17 +947,17 @@ static void node_composit_buts_colorbalance(uiLayout *layout, bContext *C, Point split = uiLayoutSplit(layout, 0, 0); col = uiLayoutColumn(split, 0); - uiTemplateColorWheel(col, ptr, "lift", 1, 1); + uiTemplateColorWheel(col, ptr, "lift", 1, 1, 0); row = uiLayoutRow(col, 0); uiItemR(row, ptr, "lift", 0, NULL, 0); col = uiLayoutColumn(split, 0); - uiTemplateColorWheel(col, ptr, "gamma", 1, 1); + uiTemplateColorWheel(col, ptr, "gamma", 1, 1, 1); row = uiLayoutRow(col, 0); uiItemR(row, ptr, "gamma", 0, NULL, 0); col = uiLayoutColumn(split, 0); - uiTemplateColorWheel(col, ptr, "gain", 1, 1); + uiTemplateColorWheel(col, ptr, "gain", 1, 1, 1); row = uiLayoutRow(col, 0); uiItemR(row, ptr, "gain", 0, NULL, 0); @@ -965,17 +965,17 @@ static void node_composit_buts_colorbalance(uiLayout *layout, bContext *C, Point split = uiLayoutSplit(layout, 0, 0); col = uiLayoutColumn(split, 0); - uiTemplateColorWheel(col, ptr, "offset", 1, 1); + uiTemplateColorWheel(col, ptr, "offset", 1, 1, 0); row = uiLayoutRow(col, 0); uiItemR(row, ptr, "offset", 0, NULL, 0); col = uiLayoutColumn(split, 0); - uiTemplateColorWheel(col, ptr, "power", 1, 1); + uiTemplateColorWheel(col, ptr, "power", 1, 1, 0); row = uiLayoutRow(col, 0); uiItemR(row, ptr, "power", 0, NULL, 0); col = uiLayoutColumn(split, 0); - uiTemplateColorWheel(col, ptr, "slope", 1, 1); + uiTemplateColorWheel(col, ptr, "slope", 1, 1, 0); row = uiLayoutRow(col, 0); uiItemR(row, ptr, "slope", 0, NULL, 0); } diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c index 16864985289..6cf0768b192 100644 --- a/source/blender/makesrna/intern/rna_ui_api.c +++ b/source/blender/makesrna/intern/rna_ui_api.c @@ -360,6 +360,7 @@ void RNA_api_ui_layout(StructRNA *srna) api_ui_item_rna_common(func); RNA_def_boolean(func, "value_slider", 0, "", "Display the value slider to the right of the color wheel"); RNA_def_boolean(func, "lock", 0, "", "Lock the color wheel display to value 1.0 regardless of actual color"); + RNA_def_boolean(func, "lock_luminosity", 0, "", "Keep the color at its original vector length"); func= RNA_def_function(srna, "template_triColorSet", "uiTemplateTriColorSet"); api_ui_item_rna_common(func); From 4135f1310c145d8df5e1195e3205715ada8296cb Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Sun, 4 Jul 2010 21:14:59 +0000 Subject: [PATCH 297/674] Patch [#22339] File/installation paths changes Update after discussions on IRC: * operating system specific path retrieval is moved back to GHOST, nothing blender specific here though * cleaned up path functions a bit to remove #ifdefs * removed Cocoa from blenlib again TODO: * Matt, Damien, please check and correct the functions for Cocoa and Carbon, could only put back existing code but needs adjustment * finish GHOST_getBinaryDir - this should replace the BLI_where_am_i eventually as well as BLI_getInstallationPath on Windows and get_install_dir for the blenderplayer runtime * It would probably be nice to define GHOST_getTempDir as well and move those out * more cleanups... NOTE: Things are likely broken for macs --- intern/ghost/CMakeLists.txt | 1 + intern/ghost/GHOST_ISystem.h | 20 +++- intern/ghost/GHOST_Path-api.h | 63 +++++++++++++ intern/ghost/intern/GHOST_Path-api.cpp | 49 ++++++++++ intern/ghost/intern/GHOST_System.h | 19 ++++ intern/ghost/intern/GHOST_SystemCarbon.cpp | 26 +++++ intern/ghost/intern/GHOST_SystemCarbon.h | 21 +++++ intern/ghost/intern/GHOST_SystemCocoa.h | 20 ++++ intern/ghost/intern/GHOST_SystemCocoa.mm | 89 ++++++++++++++++++ intern/ghost/intern/GHOST_SystemWin32.cpp | 38 ++++++++ intern/ghost/intern/GHOST_SystemWin32.h | 21 ++++- intern/ghost/intern/GHOST_SystemX11.cpp | 20 ++++ intern/ghost/intern/GHOST_SystemX11.h | 20 ++++ source/blender/blenlib/BLI_path_util.h | 5 + source/blender/blenlib/CMakeLists.txt | 4 - source/blender/blenlib/intern/path_util.c | 71 +++----------- .../blender/blenlib/intern/path_util_cocoa.mm | 94 ------------------- 17 files changed, 425 insertions(+), 156 deletions(-) create mode 100644 intern/ghost/GHOST_Path-api.h create mode 100644 intern/ghost/intern/GHOST_Path-api.cpp delete mode 100644 source/blender/blenlib/intern/path_util_cocoa.mm diff --git a/intern/ghost/CMakeLists.txt b/intern/ghost/CMakeLists.txt index fa630ce26f0..1a7627c9099 100644 --- a/intern/ghost/CMakeLists.txt +++ b/intern/ghost/CMakeLists.txt @@ -42,6 +42,7 @@ SET(SRC ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_ISystem.cpp ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_ModifierKeys.cpp ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_NDOFManager.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_Path-api.cpp ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_Rect.cpp ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_System.cpp ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_TimerManager.cpp diff --git a/intern/ghost/GHOST_ISystem.h b/intern/ghost/GHOST_ISystem.h index b4dc88369f4..47f142e4c8a 100644 --- a/intern/ghost/GHOST_ISystem.h +++ b/intern/ghost/GHOST_ISystem.h @@ -370,7 +370,25 @@ public: */ virtual void putClipboard(GHOST_TInt8 *buffer, bool selection) const = 0; - + /** + * Determine the base dir in which shared resources are located. It will first try to use + * "unpack and run" path, then look for properly installed path, not including versioning. + * @return Unsigned char string pointing to system dir (eg /usr/share/blender/). + */ + virtual const GHOST_TUns8* getSystemDir() const = 0; + + /** + * Determine the base dir in which user configuration is stored, not including versioning. + * If needed, it will create the base directory. + * @return Unsigned char string pointing to user dir (eg ~/.blender/). + */ + virtual const GHOST_TUns8* getUserDir() const = 0; + + /** + * Determine the directory of the current binary + * @return Unsigned char string pointing to the binary dir + */ + virtual const GHOST_TUns8* getBinaryDir() const = 0; protected: /** * Initialize the system. diff --git a/intern/ghost/GHOST_Path-api.h b/intern/ghost/GHOST_Path-api.h new file mode 100644 index 00000000000..6ad2415b46d --- /dev/null +++ b/intern/ghost/GHOST_Path-api.h @@ -0,0 +1,63 @@ +/** + * + * ***** 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) 2010 by Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#ifndef GHOST_PATH_API_H +#define GHOST_PATH_API_H + +#include "GHOST_Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Determine the base dir in which shared resources are located. It will first try to use + * "unpack and run" path, then look for properly installed path, not including versioning. + * @return Unsigned char string pointing to system dir (eg /usr/share/blender/). + */ +extern const GHOST_TUns8* GHOST_getSystemDir(); + +/** + * Determine the base dir in which user configuration is stored, not including versioning. + * If needed, it will create the base directory. + * @return Unsigned char string pointing to user dir (eg ~/.blender/). + */ +extern const GHOST_TUns8* GHOST_getUserDir(); + + +/** + * Determine the dir in which the binary file is found. + * @return Unsigned char string pointing to binary dir (eg ~/usr/local/bin/). + */ +extern const GHOST_TUns8* GHOST_getBinaryDir(); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/intern/ghost/intern/GHOST_Path-api.cpp b/intern/ghost/intern/GHOST_Path-api.cpp new file mode 100644 index 00000000000..4c9727223fc --- /dev/null +++ b/intern/ghost/intern/GHOST_Path-api.cpp @@ -0,0 +1,49 @@ +/** + * + * ***** 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) 2010 by Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include "intern/GHOST_Debug.h" +#include "GHOST_path-api.h" +#include "GHOST_ISystem.h" + +const GHOST_TUns8* GHOST_getSystemDir() +{ + GHOST_ISystem* system = GHOST_ISystem::getSystem(); + return system->getSystemDir(); +} + +const GHOST_TUns8* GHOST_getUserDir() +{ + GHOST_ISystem* system = GHOST_ISystem::getSystem(); + return system->getUserDir(); +} + +const GHOST_TUns8* GHOST_getBinaryDir() +{ + GHOST_ISystem* system = GHOST_ISystem::getSystem(); + return system->getBinaryDir(); +} \ No newline at end of file diff --git a/intern/ghost/intern/GHOST_System.h b/intern/ghost/intern/GHOST_System.h index 2b45bfb86cf..a18670738fe 100644 --- a/intern/ghost/intern/GHOST_System.h +++ b/intern/ghost/intern/GHOST_System.h @@ -297,6 +297,25 @@ public: */ virtual void putClipboard(GHOST_TInt8 *buffer, bool selection) const = 0; + /** + * Determine the base dir in which shared resources are located. It will first try to use + * "unpack and run" path, then look for properly installed path, not including versioning. + * @return Unsigned char string pointing to system dir (eg /usr/share/blender/). + */ + virtual const GHOST_TUns8* getSystemDir() const = 0; + + /** + * Determine the base dir in which user configuration is stored, not including versioning. + * If needed, it will create the base directory. + * @return Unsigned char string pointing to user dir (eg ~/.blender/). + */ + virtual const GHOST_TUns8* getUserDir() const = 0; + + /** + * Determine the directory of the current binary + * @return Unsigned char string pointing to the binary dir + */ + virtual const GHOST_TUns8* getBinaryDir() const = 0; protected: /** * Initialize the system. diff --git a/intern/ghost/intern/GHOST_SystemCarbon.cpp b/intern/ghost/intern/GHOST_SystemCarbon.cpp index a4011f89de6..977745589eb 100644 --- a/intern/ghost/intern/GHOST_SystemCarbon.cpp +++ b/intern/ghost/intern/GHOST_SystemCarbon.cpp @@ -1214,3 +1214,29 @@ void GHOST_SystemCarbon::putClipboard(GHOST_TInt8 *buffer, bool selection) const CFRelease(textData); } } + + +const GHOST_TUns8* GHOST_SystemCarbon::getSystemDir() const +{ + return (GHOST_TUns8*)"/Library/Application Support"; +} + +const GHOST_TUns8* GHOST_SystemCarbon::getUserDir() const +{ + static char usrPath[256] = ""; + char* env = getenv("HOME"); + + if (env) { + strncpy(usrPath, env, 245); + usrPath[245]=0; + strcat(usrPath, "/Library/Application Support"); + return (GHOST_TUns8*) usrPath; + } + else + return NULL; +} + +const GHOST_TUns8* GHOST_SystemCarbon::getBinaryDir() const +{ + return NULL; +} diff --git a/intern/ghost/intern/GHOST_SystemCarbon.h b/intern/ghost/intern/GHOST_SystemCarbon.h index fd5c61fd7b6..723652dc872 100644 --- a/intern/ghost/intern/GHOST_SystemCarbon.h +++ b/intern/ghost/intern/GHOST_SystemCarbon.h @@ -190,6 +190,27 @@ public: */ virtual void putClipboard(GHOST_TInt8 *buffer, bool selection) const; + + /** + * Determine the base dir in which shared resources are located. It will first try to use + * "unpack and run" path, then look for properly installed path, not including versioning. + * @return Unsigned char string pointing to system dir (eg /usr/share/blender/). + */ + virtual const GHOST_TUns8* getSystemDir() const; + + /** + * Determine the base dir in which user configuration is stored, not including versioning. + * If needed, it will create the base directory. + * @return Unsigned char string pointing to user dir (eg ~/.blender/). + */ + virtual const GHOST_TUns8* getUserDir() const; + + /** + * Determine the directory of the current binary + * @return Unsigned char string pointing to the binary dir + */ + virtual const GHOST_TUns8* getBinaryDir() const; + protected: /** * Initializes the system. diff --git a/intern/ghost/intern/GHOST_SystemCocoa.h b/intern/ghost/intern/GHOST_SystemCocoa.h index e97f8c70521..0a0b900f72a 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.h +++ b/intern/ghost/intern/GHOST_SystemCocoa.h @@ -213,6 +213,26 @@ public: */ virtual void putClipboard(GHOST_TInt8 *buffer, bool selection) const; + /** + * Determine the base dir in which shared resources are located. It will first try to use + * "unpack and run" path, then look for properly installed path, not including versioning. + * @return Unsigned char string pointing to system dir (eg /usr/share/blender/). + */ + virtual const GHOST_TUns8* getSystemDir() const; + + /** + * Determine the base dir in which user configuration is stored, not including versioning. + * If needed, it will create the base directory. + * @return Unsigned char string pointing to user dir (eg ~/.blender/). + */ + virtual const GHOST_TUns8* getUserDir() const; + + /** + * Determine the directory of the current binary + * @return Unsigned char string pointing to the binary dir + */ + virtual const GHOST_TUns8* getBinaryDir() const + /** * Handles a window event. Called by GHOST_WindowCocoa window delegate * @param eventType The type of window event diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index 00b00c69cee..b093510c700 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -1780,3 +1780,92 @@ void GHOST_SystemCocoa::putClipboard(GHOST_TInt8 *buffer, bool selection) const [pool drain]; } + +#pragma mark Base directories retrieval + +// TODO: this should only return base path, remove the appending of Blender or .blender +const GHOST_TUns8* GHOST_SystemCocoa::getSystemDir() const +{ + static GHOST_TUns8 tempPath[512] = ""; + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSFileManager *fileManager; + NSString *basePath; + NSArray *paths; + + paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSLocalDomainMask, YES); + + if ([paths count] > 0) + basePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Blender"]; + else { //Fall back to standard unix path in case of issue + basePath = @"/usr/share/blender"; + } + + /* Ensure path exists, creates it if needed */ + fileManager = [NSFileManager defaultManager]; + if (![fileManager fileExistsAtPath:basePath isDirectory:NULL]) { + [fileManager createDirectoryAtPath:basePath attributes:nil]; + } + + strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]); + + [pool drain]; + return tempPath; +} + +// TODO: this should only return base path, remove the appending of Blenbder or .blender +const GHOST_TUns8* GHOST_SystemCocoa::getUserDir() const +{ + static GHOST_TUns8 tempPath[512] = ""; + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSFileManager *fileManager; + NSString *basePath; + NSArray *paths; + + paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); + + if ([paths count] > 0) + basePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Blender"]; + else { //Fall back to HOME in case of issue + basePath = [NSHomeDirectory() stringByAppendingPathComponent:@".blender"]; + } + + /* Ensure path exists, creates it if needed */ + fileManager = [NSFileManager defaultManager]; + if (![fileManager fileExistsAtPath:basePath isDirectory:NULL]) { + [fileManager createDirectoryAtPath:basePath attributes:nil]; + } + + strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]); + + [pool drain]; + return tempPath; +} + +// TODO: this is same as getUserDir for now +const GHOST_TUns8* GHOST_SystemCocoa::getBinaryDir() const +{ + static GHOST_TUns8 tempPath[512] = ""; + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSFileManager *fileManager; + NSString *basePath; + NSArray *paths; + + paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); + + if ([paths count] > 0) + basePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Blender"]; + else { //Fall back to HOME in case of issue + basePath = [NSHomeDirectory() stringByAppendingPathComponent:@".blender"]; + } + + /* Ensure path exists, creates it if needed */ + fileManager = [NSFileManager defaultManager]; + if (![fileManager fileExistsAtPath:basePath isDirectory:NULL]) { + [fileManager createDirectoryAtPath:basePath attributes:nil]; + } + + strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]); + + [pool drain]; + return tempPath; +} diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp index 41cbb72c9b9..2b26edea38d 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.cpp +++ b/intern/ghost/intern/GHOST_SystemWin32.cpp @@ -88,6 +88,8 @@ #include "GHOST_WindowWin32.h" #include "GHOST_NDOFManager.h" +#include + // Key code values not found in winuser.h #ifndef VK_MINUS #define VK_MINUS 0xBD @@ -1092,3 +1094,39 @@ void GHOST_SystemWin32::putClipboard(GHOST_TInt8 *buffer, bool selection) const return; } } + +const GHOST_TUns8* GHOST_SystemWin32::getSystemDir() const +{ + static char knownpath[MAX_PATH]; + HRESULT hResult = SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, knownpath); + + if (hResult == S_OK) + { + return (GHOST_TUns8*)knownpath; + } + + return NULL; +} + +const GHOST_TUns8* GHOST_SystemWin32::getUserDir() const +{ + static char knownpath[MAX_PATH]; + HRESULT hResult = SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, knownpath); + + if (hResult == S_OK) + { + return (GHOST_TUns8*)knownpath; + } + + return NULL; +} + +const GHOST_TUns8* GHOST_SystemWin32::getBinaryDir() const +{ + static char fullname[MAX_PATH]; + if(GetModuleFileName(0, fullname, MAX_PATH)) { + return (GHOST_TUns8*)fullname; + } + + return NULL; +} \ No newline at end of file diff --git a/intern/ghost/intern/GHOST_SystemWin32.h b/intern/ghost/intern/GHOST_SystemWin32.h index 84fca33238f..888d9c0ab3e 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.h +++ b/intern/ghost/intern/GHOST_SystemWin32.h @@ -186,7 +186,26 @@ public: * @return No return */ virtual void putClipboard(GHOST_TInt8 *buffer, bool selection) const; - + + /** + * Determine the base dir in which shared resources are located. It will first try to use + * "unpack and run" path, then look for properly installed path, not including versioning. + * @return Unsigned char string pointing to system dir (eg /usr/share/). + */ + virtual const GHOST_TUns8* getSystemDir() const; + + /** + * Determine the base dir in which user configuration is stored, not including versioning. + * If needed, it will create the base directory. + * @return Unsigned char string pointing to user dir (eg ~/). + */ + virtual const GHOST_TUns8* getUserDir() const; + + /** + * Determine the directory of the current binary + * @return Unsigned char string pointing to the binary dir + */ + virtual const GHOST_TUns8* getBinaryDir() const; /** * Creates a drag'n'drop event and pushes it immediately onto the event queue. diff --git a/intern/ghost/intern/GHOST_SystemX11.cpp b/intern/ghost/intern/GHOST_SystemX11.cpp index f286f8ae7d3..7644281bcea 100644 --- a/intern/ghost/intern/GHOST_SystemX11.cpp +++ b/intern/ghost/intern/GHOST_SystemX11.cpp @@ -1458,3 +1458,23 @@ void GHOST_SystemX11::putClipboard(GHOST_TInt8 *buffer, bool selection) const fprintf(stderr, "failed to own primary\n"); } } + +const GHOST_TUns8* GHOST_SystemX11::getSystemDir() const +{ + return (GHOST_TUns8*)"/usr/share/"; +} + +const GHOST_TUns8* GHOST_SystemX11::getUserDir() const +{ + char* env = getenv("HOME"); + if(env) { + return (GHOST_TUns8*) env; + } else { + return NULL; + } +} + +const GHOST_TUns8* GHOST_SystemX11::getBinaryDir() const +{ + return NULL; +} \ No newline at end of file diff --git a/intern/ghost/intern/GHOST_SystemX11.h b/intern/ghost/intern/GHOST_SystemX11.h index 6a4ff1b41c7..ab87b6b0fe2 100644 --- a/intern/ghost/intern/GHOST_SystemX11.h +++ b/intern/ghost/intern/GHOST_SystemX11.h @@ -226,6 +226,26 @@ public: */ void putClipboard(GHOST_TInt8 *buffer, bool selection) const; + /** + * Determine the base dir in which shared resources are located. It will first try to use + * "unpack and run" path, then look for properly installed path, not including versioning. + * @return Unsigned char string pointing to system dir (eg /usr/share/blender/). + */ + const GHOST_TUns8* getSystemDir() const; + + /** + * Determine the base dir in which user configuration is stored, not including versioning. + * If needed, it will create the base directory. + * @return Unsigned char string pointing to user dir (eg ~/.blender/). + */ + const GHOST_TUns8* getUserDir() const; + + /** + * Determine the directory of the current binary + * @return Unsigned char string pointing to the binary dir + */ + const GHOST_TUns8* getBinaryDir() const + /** * Atom used for ICCCM, WM-spec and Motif. * We only need get this atom at the start, it's relative diff --git a/source/blender/blenlib/BLI_path_util.h b/source/blender/blenlib/BLI_path_util.h index e2cb0e131a5..d149f15cd35 100644 --- a/source/blender/blenlib/BLI_path_util.h +++ b/source/blender/blenlib/BLI_path_util.h @@ -100,6 +100,11 @@ char *BLI_get_folder_create(int folder_id, char *subfolder); #define BLENDER_BOOKMARK_FILE "bookmarks.txt" #define BLENDER_HISTORY_FILE "recent-files.txt" +#ifdef WIN32 +#define BLENDER_BASE_FORMAT "%s\\Blender Foundation\\Blender\\%s" +#else +#define BLENDER_BASE_FORMAT "%s/.blender/%s" +#endif void BLI_setenv(const char *env, const char *val); void BLI_setenv_if_new(const char *env, const char* val); diff --git a/source/blender/blenlib/CMakeLists.txt b/source/blender/blenlib/CMakeLists.txt index 21cd92c0e95..628c2dc43a5 100644 --- a/source/blender/blenlib/CMakeLists.txt +++ b/source/blender/blenlib/CMakeLists.txt @@ -33,10 +33,6 @@ SET(INC ${ZLIB_INC} ) -IF(APPLE) - SET(SRC ${SRC} intern/path_util_cocoa.mm) -ENDIF(APPLE) - IF(CMAKE_SYSTEM_NAME MATCHES "Linux") SET(INC ${INC} diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index a3c0f994c05..7be8e069bd0 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -46,8 +46,7 @@ #include "BKE_utildefines.h" #include "BKE_blender.h" // BLENDER_VERSION - - +#include "GHOST_Path-api.h" #ifdef WIN32 @@ -916,7 +915,7 @@ char *BLI_gethome_folder(char *folder_name, int flag) /* ************************************************************* */ /* ************************************************************* */ -#define PATH_DEBUG2 +// #define PATH_DEBUG2 static char *blender_version_decimal(void) { @@ -1004,54 +1003,20 @@ static int get_path_local(char *targetpath, char *folder_name) return 0; } -#ifdef WIN32 -static int get_knownfolder_path(char *path, int folder) -{ - static char knownpath[MAXPATHLEN]; - HRESULT hResult = SHGetFolderPath(NULL, folder, NULL, SHGFP_TYPE_CURRENT, knownpath); - - if (hResult == S_OK) - { - if (BLI_exists(knownpath)) { /* from fop, also below... */ - BLI_strncpy(path, knownpath, FILE_MAX); - return 1; - } - } - return 0; -} -#endif - -#if defined(__APPLE__) -#ifndef WITH_COCOA -const char* BLI_osx_getBasePath(basePathesTypes pathType) -{ - return "/tmp/"; -} -#endif -#endif - static int get_path_user(char *targetpath, char *folder_name, char *envvar) { char user_path[FILE_MAX]; -#if defined(WIN32) - char appdata[FILE_MAX]; -#endif - + const char *user_base_path; + user_path[0] = '\0'; if (test_env_path(targetpath, envvar)) return 1; - -#if defined(__APPLE__) - BLI_snprintf(user_path, FILE_MAX, "%s/%s", BLI_osx_getBasePath(BasePath_BlenderUser), blender_version_decimal()); -#elif defined(WIN32) - if (get_knownfolder_path(appdata, CSIDL_APPDATA)) { - BLI_snprintf(user_path, FILE_MAX, "%s\\Blender Foundation\\Blender\\%s", appdata, blender_version_decimal()); + + user_base_path = (const char *)GHOST_getUserDir(); + if (user_base_path) { + BLI_snprintf(user_path, FILE_MAX, BLENDER_BASE_FORMAT, user_base_path, blender_version_decimal()); } -#else /* UNIX */ - /* XXX example below - replace with OS API */ - BLI_snprintf(user_path, FILE_MAX, "%s/.blender/%s", BLI_gethome(), blender_version_decimal()); -#endif if(!user_path[0]) return 0; @@ -1067,23 +1032,17 @@ static int get_path_user(char *targetpath, char *folder_name, char *envvar) static int get_path_system(char *targetpath, char *folder_name, char *envvar) { char system_path[FILE_MAX]; -#if defined(WIN32) - char appdata[FILE_MAX]; -#endif + const char *system_base_path; + + system_path[0] = '\0'; if (test_env_path(targetpath, envvar)) return 1; - -#if defined(__APPLE__) - BLI_snprintf(system_path, FILE_MAX, "%s/%s", BLI_osx_getBasePath(BasePath_ApplicationBundle), blender_version_decimal()); -#elif defined(WIN32) - if (get_knownfolder_path(appdata, CSIDL_COMMON_APPDATA)) { - BLI_snprintf(system_path, FILE_MAX, "%s\\Blender Foundation\\Blender\\%s", appdata, blender_version_decimal()); + + system_base_path = (const char *)GHOST_getSystemDir(); + if (system_base_path) { + BLI_snprintf(system_path, FILE_MAX, BLENDER_BASE_FORMAT, system_base_path, blender_version_decimal()); } -#else /* UNIX */ - /* XXX example below - replace with OS API */ - BLI_snprintf(system_path, FILE_MAX, "/usr/share/blender/%s", blender_version_decimal()); -#endif if(!system_path[0]) return 0; diff --git a/source/blender/blenlib/intern/path_util_cocoa.mm b/source/blender/blenlib/intern/path_util_cocoa.mm deleted file mode 100644 index d12938b2b45..00000000000 --- a/source/blender/blenlib/intern/path_util_cocoa.mm +++ /dev/null @@ -1,94 +0,0 @@ -/* - * $Id$ - * - * Functions specific to osx that use API available only in Objective-C - * - * ***** 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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): Damien Plisson 2010 - * - * ***** END GPL LICENSE BLOCK ***** - * - */ - - -#import - -#include - -#include "BLI_path_util.h" - - - -/** - * Gets the ~/Library/Application Data/Blender folder - */ -const char* BLI_osx_getBasePath(basePathesTypes pathType) -{ - static char tempPath[512] = ""; - - NSAutoreleasePool *pool; - NSString *basePath; - NSArray *paths; - - pool = [[NSAutoreleasePool alloc] init]; - - switch (pathType) { - /* Standard pathes */ - case BasePath_Temporary: - strcpy(tempPath, [NSTemporaryDirectory() cStringUsingEncoding:NSASCIIStringEncoding]); - [pool drain]; - return tempPath; - break; - - /* Blender specific pathes */ - case BasePath_BlenderShared: - paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSLocalDomainMask, YES); - if ([paths count] > 0) - basePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Blender"]; - else { //Error - basePath = @""; - } - break; - case BasePath_BlenderUser: - paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); - if ([paths count] > 0) - basePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Blender"]; - else { //Error - basePath = @""; - } - break; - case BasePath_ApplicationBundle: - basePath = [[NSBundle mainBundle] bundlePath]; - break; - - default: - tempPath[0] = 0; - [pool drain]; - return tempPath; - } - - strcpy(tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]); - - [pool drain]; - return tempPath; -} From 646ee52d3ab57e60389595a8844b8fef54745696 Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Sun, 4 Jul 2010 21:33:01 +0000 Subject: [PATCH 298/674] SVN maintenance. --- intern/ghost/GHOST_Path-api.h | 3 ++- intern/ghost/intern/GHOST_Path-api.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/intern/ghost/GHOST_Path-api.h b/intern/ghost/GHOST_Path-api.h index 6ad2415b46d..2f0e55a5b69 100644 --- a/intern/ghost/GHOST_Path-api.h +++ b/intern/ghost/GHOST_Path-api.h @@ -1,4 +1,5 @@ /** + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -60,4 +61,4 @@ extern const GHOST_TUns8* GHOST_getBinaryDir(); } #endif -#endif \ No newline at end of file +#endif diff --git a/intern/ghost/intern/GHOST_Path-api.cpp b/intern/ghost/intern/GHOST_Path-api.cpp index 4c9727223fc..77b27c9d617 100644 --- a/intern/ghost/intern/GHOST_Path-api.cpp +++ b/intern/ghost/intern/GHOST_Path-api.cpp @@ -1,4 +1,5 @@ /** + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -46,4 +47,4 @@ const GHOST_TUns8* GHOST_getBinaryDir() { GHOST_ISystem* system = GHOST_ISystem::getSystem(); return system->getBinaryDir(); -} \ No newline at end of file +} From f3638488c35bcaf8b7959ff0f06bd973b8f5199f Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Sun, 4 Jul 2010 21:36:48 +0000 Subject: [PATCH 299/674] Add missing ";". --- intern/ghost/intern/GHOST_SystemX11.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/intern/ghost/intern/GHOST_SystemX11.h b/intern/ghost/intern/GHOST_SystemX11.h index ab87b6b0fe2..13ad4200ab8 100644 --- a/intern/ghost/intern/GHOST_SystemX11.h +++ b/intern/ghost/intern/GHOST_SystemX11.h @@ -244,7 +244,7 @@ public: * Determine the directory of the current binary * @return Unsigned char string pointing to the binary dir */ - const GHOST_TUns8* getBinaryDir() const + const GHOST_TUns8* getBinaryDir() const; /** * Atom used for ICCCM, WM-spec and Motif. From ef3f967baf02104d2371a83ff11b9f9058c4e020 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 4 Jul 2010 22:35:09 +0000 Subject: [PATCH 300/674] fix for building --- intern/ghost/intern/GHOST_Path-api.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/intern/ghost/intern/GHOST_Path-api.cpp b/intern/ghost/intern/GHOST_Path-api.cpp index 77b27c9d617..59e1801ae5a 100644 --- a/intern/ghost/intern/GHOST_Path-api.cpp +++ b/intern/ghost/intern/GHOST_Path-api.cpp @@ -28,7 +28,7 @@ */ #include "intern/GHOST_Debug.h" -#include "GHOST_path-api.h" +#include "GHOST_Path-api.h" #include "GHOST_ISystem.h" const GHOST_TUns8* GHOST_getSystemDir() From 66a72343ef7bda52a30c0e96b17e792016d924b3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 4 Jul 2010 22:43:51 +0000 Subject: [PATCH 301/674] fix for building with cmake --- source/creator/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index b4d9be59b59..05baec55891 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -393,8 +393,6 @@ ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux") bf_editor_datafiles blender_BSP - bf_ghost - bf_string blender_render blender_ONL bf_python @@ -405,9 +403,11 @@ ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux") bf_nodes bf_gpu bf_blenloader + bf_blenlib + bf_ghost + bf_string bf_blenpluginapi bf_imbuf - bf_blenlib bf_avi bf_cineon bf_openexr From a824220d3e71afda0460c769324c9029243d0560 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 4 Jul 2010 23:26:55 +0000 Subject: [PATCH 302/674] better errors for failier to read blends --- source/blender/blenkernel/intern/group.c | 2 ++ source/blender/blenloader/intern/readfile.c | 6 +++--- source/blender/readblenfile/intern/BLO_readblenfile.c | 9 +++++---- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/source/blender/blenkernel/intern/group.c b/source/blender/blenkernel/intern/group.c index 5f68c990ed2..6377a6f6ccd 100644 --- a/source/blender/blenkernel/intern/group.c +++ b/source/blender/blenkernel/intern/group.c @@ -280,6 +280,7 @@ int group_is_animated(Object *parent, Group *group) return 0; } +#if 0 // add back when timeoffset & animsys work again /* only replaces object strips or action when parent nla instructs it */ /* keep checking nla.c though, in case internal structure of strip changes */ static void group_replaces_nla(Object *parent, Object *target, char mode) @@ -319,6 +320,7 @@ static void group_replaces_nla(Object *parent, Object *target, char mode) } } } +#endif /* puts all group members in local timing system, after this call you can draw everything, leaves tags in objects to signal it needs further updating */ diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index cefc6edb5a3..f1cbf60209c 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -959,11 +959,11 @@ static FileData *blo_decode_and_check(FileData *fd, ReportList *reports) FileData *blo_openblenderfile(char *name, ReportList *reports) { gzFile gzfile; - + errno= 0; gzfile= gzopen(name, "rb"); if (gzfile == Z_NULL) { - BKE_report(reports, RPT_ERROR, "Unable to open"); + BKE_reportf(reports, RPT_ERROR, "Unable to open \"%s\": %s.", name, errno ? strerror(errno) : "Unknown erro reading file"); return NULL; } else { FileData *fd = filedata_new(); @@ -996,7 +996,7 @@ FileData *blo_openblendermemory(void *mem, int memsize, ReportList *reports) FileData *blo_openblendermemfile(MemFile *memfile, ReportList *reports) { if (!memfile) { - BKE_report(reports, RPT_ERROR, "Unable to open"); + BKE_report(reports, RPT_ERROR, "Unable to open blend "); return NULL; } else { FileData *fd= filedata_new(); diff --git a/source/blender/readblenfile/intern/BLO_readblenfile.c b/source/blender/readblenfile/intern/BLO_readblenfile.c index 608c8fccd18..7c876c96a86 100644 --- a/source/blender/readblenfile/intern/BLO_readblenfile.c +++ b/source/blender/readblenfile/intern/BLO_readblenfile.c @@ -36,6 +36,7 @@ #include #include #include +#include #ifdef WIN32 #include // read, open @@ -136,7 +137,7 @@ blo_read_runtime( fd= open(path, O_BINARY|O_RDONLY, 0); if (fd==-1) { - BKE_report(reports, RPT_ERROR, "Unable to open"); + BKE_reportf(reports, RPT_ERROR, "Unable to open \"%s\": %s.", path, strerror(errno)); goto cleanup; } @@ -146,13 +147,13 @@ blo_read_runtime( datastart= handle_read_msb_int(fd); if (datastart==-1) { - BKE_report(reports, RPT_ERROR, "Unable to read"); + BKE_reportf(reports, RPT_ERROR, "Unable to read \"%s\" (problem seeking)", path); goto cleanup; } else if (read(fd, buf, 8)!=8) { - BKE_report(reports, RPT_ERROR, "Unable to read"); + BKE_reportf(reports, RPT_ERROR, "Unable to read \"%s\" (truncated header)", path); goto cleanup; } else if (memcmp(buf, "BRUNTIME", 8)!=0) { - BKE_report(reports, RPT_ERROR, "File is not a Blender file"); + BKE_reportf(reports, RPT_ERROR, "Unable to read \"%s\" (not a blend file)", path); goto cleanup; } else { //printf("starting to read runtime from %s at datastart %d\n", path, datastart); From 9c4e3a7b6b3c90efd1f849dedd64ccfda98b97c2 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 5 Jul 2010 00:00:40 +0000 Subject: [PATCH 303/674] bugfix [#22724] "Scene" switch on the console doesn't work --- intern/ghost/intern/GHOST_Path-api.cpp | 6 +++--- source/blender/blenkernel/intern/scene.c | 19 +++++++++---------- source/creator/creator.c | 8 ++++++-- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/intern/ghost/intern/GHOST_Path-api.cpp b/intern/ghost/intern/GHOST_Path-api.cpp index 59e1801ae5a..b2b7c68e998 100644 --- a/intern/ghost/intern/GHOST_Path-api.cpp +++ b/intern/ghost/intern/GHOST_Path-api.cpp @@ -34,17 +34,17 @@ const GHOST_TUns8* GHOST_getSystemDir() { GHOST_ISystem* system = GHOST_ISystem::getSystem(); - return system->getSystemDir(); + return system ? system->getSystemDir() : NULL; } const GHOST_TUns8* GHOST_getUserDir() { GHOST_ISystem* system = GHOST_ISystem::getSystem(); - return system->getUserDir(); + return system ? system->getUserDir() : NULL; /* will be NULL in background mode */ } const GHOST_TUns8* GHOST_getBinaryDir() { GHOST_ISystem* system = GHOST_ISystem::getSystem(); - return system->getBinaryDir(); + return system ? system->getBinaryDir() : NULL; /* will be NULL in background mode */ } diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 1bc690eb0ed..135464830f7 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -553,18 +553,17 @@ void set_scene_bg(Scene *scene) } /* called from creator.c */ -void set_scene_name(char *name) +Scene *set_scene_name(char *name) { - Scene *sce; - - for (sce= G.main->scene.first; sce; sce= sce->id.next) { - if (BLI_streq(name, sce->id.name+2)) { - set_scene_bg(sce); - return; - } + Scene *sce= (Scene *)find_id("SC", name); + if(sce) { + set_scene_bg(sce); + printf("Scene switch: '%s' in file: '%s'\n", name, G.sce); + return sce; } - - //XXX error("Can't find scene: %s", name); + + printf("Can't find scene: '%s' in file: '%s'\n", name, G.sce); + return NULL; } void unlink_scene(Main *bmain, Scene *sce, Scene *newsce) diff --git a/source/creator/creator.c b/source/creator/creator.c index 3843e284a01..c3499a5788c 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -737,7 +737,11 @@ static int render_animation(int argc, char **argv, void *data) static int set_scene(int argc, char **argv, void *data) { if(argc > 1) { - set_scene_name(argv[1]); + bContext *C= data; + Scene *sce= set_scene_name(argv[1]); + if(sce) { + CTX_data_scene_set(C, sce); + } return 1; } else { printf("\nError: Scene name must follow '-S / --scene'.\n"); @@ -982,7 +986,7 @@ void setupArguments(bContext *C, bArgs *ba, SYS_SystemHandle *syshandle) BLI_argsAdd(ba, 4, "-g", NULL, game_doc, set_ge_parameters, syshandle); BLI_argsAdd(ba, 4, "-f", "--render-frame", "\n\tRender frame and save it.\n\t+ start frame relative, - end frame relative.", render_frame, C); BLI_argsAdd(ba, 4, "-a", "--render-anim", "\n\tRender frames from start to end (inclusive)", render_animation, C); - BLI_argsAdd(ba, 4, "-S", "--scene", "\n\tSet the active scene for rendering", set_scene, NULL); + BLI_argsAdd(ba, 4, "-S", "--scene", "\n\tSet the active scene for rendering", set_scene, C); BLI_argsAdd(ba, 4, "-s", "--frame-start", "\n\tSet start to frame (use before the -a argument)", set_start_frame, C); BLI_argsAdd(ba, 4, "-e", "--frame-end", "\n\tSet end to frame (use before the -a argument)", set_end_frame, C); BLI_argsAdd(ba, 4, "-j", "--frame-jump", "\n\tSet number of frames to step forward after each rendered frame", set_skip_frame, C); From fe6dfa52e9fd8dc8c1223255cdefafa1bd3e2aca Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 5 Jul 2010 00:48:57 +0000 Subject: [PATCH 304/674] Compile fix for r29954. He probably missed a file in the commit. --- source/blender/blenkernel/BKE_scene.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h index 9966aa11be3..b5b0a72d2d8 100644 --- a/source/blender/blenkernel/BKE_scene.h +++ b/source/blender/blenkernel/BKE_scene.h @@ -58,7 +58,7 @@ struct Scene *add_scene(char *name); struct Base *object_in_scene(struct Object *ob, struct Scene *sce); void set_scene_bg(struct Scene *sce); -void set_scene_name(char *name); +struct Scene *set_scene_name(char *name); struct Scene *copy_scene(struct Main *bmain, struct Scene *sce, int type); void unlink_scene(struct Main *bmain, struct Scene *sce, struct Scene *newsce); From 8c042f779f1cbbaec60532cbbc87a7eb99d84350 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 5 Jul 2010 01:11:25 +0000 Subject: [PATCH 305/674] Bugfix #19221: Layer animation not working Now object layers and scene-base layers are now always synced. In 2.4x, they were only synced if there was animation for layers, but it's probably not worth checking for this these days... Finally we can close this bug report :) --- source/blender/blenkernel/intern/ipo.c | 17 ++++++++--------- source/blender/blenkernel/intern/scene.c | 3 +++ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/source/blender/blenkernel/intern/ipo.c b/source/blender/blenkernel/intern/ipo.c index 7f2ac50acd5..cd8ab8290e5 100644 --- a/source/blender/blenkernel/intern/ipo.c +++ b/source/blender/blenkernel/intern/ipo.c @@ -1068,7 +1068,7 @@ static void fcurve_add_to_list (ListBase *groups, ListBase *list, FCurve *fcu, c bActionGroup *agrp= NULL; /* init the temp action */ - //memset(&tmp_act, 0, sizeof(bAction)); // XXX only enable this line if we get errors + memset(&tmp_act, 0, sizeof(bAction)); // XXX only enable this line if we get errors tmp_act.groups.first= groups->first; tmp_act.groups.last= groups->last; tmp_act.curves.first= list->first; @@ -1084,8 +1084,8 @@ static void fcurve_add_to_list (ListBase *groups, ListBase *list, FCurve *fcu, c agrp= MEM_callocN(sizeof(bActionGroup), "bActionGroup"); agrp->flag = AGRP_SELECTED; - if(muteipo) agrp->flag |= AGRP_MUTED; - + if (muteipo) agrp->flag |= AGRP_MUTED; + strncpy(agrp->name, grpname, sizeof(agrp->name)); BLI_addtail(&tmp_act.groups, agrp); @@ -1097,9 +1097,9 @@ static void fcurve_add_to_list (ListBase *groups, ListBase *list, FCurve *fcu, c /* WARNING: this func should only need to look at the stuff we initialised, if not, things may crash */ action_groups_add_channel(&tmp_act, agrp, fcu); - if(agrp->flag & AGRP_MUTED) /* flush down */ + if (agrp->flag & AGRP_MUTED) /* flush down */ fcu->flag |= FCURVE_MUTED; - + /* set the output lists based on the ones in the temp action */ groups->first= tmp_act.groups.first; groups->last= tmp_act.groups.last; @@ -1843,9 +1843,9 @@ void do_versions_ipos_to_animato(Main *main) Editing * ed = scene->ed; if (ed && ed->seqbasep) { Sequence * seq; - + adt= BKE_id_add_animdata(id); - + SEQ_BEGIN(ed, seq) { IpoCurve *icu = (seq->ipo) ? seq->ipo->curve.first : NULL; short adrcode = SEQ_FAC1; @@ -1877,8 +1877,7 @@ void do_versions_ipos_to_animato(Main *main) icu->adrcode = adrcode; /* convert IPO */ - ipo_to_animdata((ID *)scene, seq->ipo, - NULL, NULL, seq); + ipo_to_animdata((ID *)scene, seq->ipo, NULL, NULL, seq); seq->ipo->id.us--; seq->ipo = NULL; } diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 135464830f7..af13aae159f 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -907,6 +907,9 @@ static void scene_update_tagged_recursive(Scene *scene, Scene *scene_parent) if(ob->dup_group && (ob->transflag & OB_DUPLIGROUP)) group_handle_recalc_and_update(scene_parent, ob, ob->dup_group); + + /* always update layer, so that animating layers works */ + base->lay= ob->lay; } } From 0a62388bfb797a4dba3ff8cedb56ea894bdbf230 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 5 Jul 2010 02:00:24 +0000 Subject: [PATCH 306/674] Bugfix #22584: Long Keyframes not working This was broken by a bad (unfinished/unused) case, which stopped them from being created properly in most cases. --- source/blender/editors/animation/keyframes_draw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/animation/keyframes_draw.c b/source/blender/editors/animation/keyframes_draw.c index a8c184937d9..2290909325e 100644 --- a/source/blender/editors/animation/keyframes_draw.c +++ b/source/blender/editors/animation/keyframes_draw.c @@ -240,7 +240,7 @@ static BezTriple *abk_get_bezt_with_value (ActBeztColumn *abk, float value) /* look over each BezTriple in this container */ for (i = 0; i < abk->numBezts; i++) { /* only do exact match for now... */ - if (i >= sizeof(abk->bezts)/sizeof(BezTriple)) { + if (/*i >= MAX_ABK_BUFSIZE*/0) { // TODO: this case needs special handling } else { @@ -283,7 +283,7 @@ static void add_bezt_to_keyblocks_list(DLRBT_Tree *blocks, DLRBT_Tree *beztTree, abk= (ActBeztColumn *)BLI_dlrbTree_search_prev(beztTree, compare_abk_bezt, beztn); /* if applicable, the BezTriple with the same value */ prev= (abk) ? abk_get_bezt_with_value(abk, beztn->vec[1][1]) : NULL; - + /* check if block needed - same value(s)? * -> firstly, handles must have same central value as each other * -> secondly, handles which control that section of the curve must be constant From 02b0188c163343cf1e21123b33cf98d3beb606c2 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 5 Jul 2010 03:02:57 +0000 Subject: [PATCH 307/674] #22736: request - adjust windows' corner handles I've tweaked the contrast of the corner widgets to be a little bit more contrasty and seem a bit more tactile by making the lines fade out from brighter bands to dimmer bands. Hopefully this will make them more easily discernable without being too loud. --- source/blender/editors/screen/area.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index 65b2923d884..fa7064b817d 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -177,14 +177,18 @@ static void area_draw_azone(short x1, short y1, short x2, short y2) float dx= 0.3f*(xmax-xmin); float dy= 0.3f*(ymax-ymin); - glColor4ub(255, 255, 255, 80); + glColor4ub(255, 255, 255, 180); fdrawline(xmin, ymax, xmax, ymin); + glColor4ub(255, 255, 255, 130); fdrawline(xmin, ymax-dy, xmax-dx, ymin); + glColor4ub(255, 255, 255, 80); fdrawline(xmin, ymax-2*dy, xmax-2*dx, ymin); - glColor4ub(0, 0, 0, 150); + glColor4ub(0, 0, 0, 210); fdrawline(xmin, ymax+1, xmax+1, ymin); + glColor4ub(0, 0, 0, 180); fdrawline(xmin, ymax-dy+1, xmax-dx+1, ymin); + glColor4ub(0, 0, 0, 150); fdrawline(xmin, ymax-2*dy+1, xmax-2*dx+1, ymin); } From faf1c9a4bb27dfdd843cc745707d15ab47ce8683 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 5 Jul 2010 03:55:28 +0000 Subject: [PATCH 308/674] Bugfix #22685: Screen update slow, animation player ALT-A, files created with 2.4x Modifiers were being mistakenly recalculated at every frame as long as the object had animation, slowing things down due to incorrect depsgraph recalc tags. Renamed OB_RECALC -> OB_RECALC_ALL to reduce future confusion. During this process, I noticed a few dubious usages of OB_RECALC, so it's best to use this commit as a guide of places to check on. Apart from the place responsible for this bug, I haven't changed any OB_RECALC -> OB_RECALC_OB/DATA in case that introduces more unforseen bugs now, making it more difficult to track the problems later (rename + value change can be confusing to identify the genuine typos). --- source/blender/blenkernel/intern/depsgraph.c | 45 +++++++++++++------ source/blender/blenkernel/intern/exotic.c | 2 +- source/blender/blenkernel/intern/library.c | 2 +- source/blender/blenkernel/intern/object.c | 21 ++++----- .../blenkernel/intern/particle_system.c | 2 +- source/blender/blenloader/intern/readfile.c | 8 ++-- .../editors/animation/anim_channels_defines.c | 1 + source/blender/editors/animation/anim_deps.c | 4 +- .../blender/editors/animation/anim_filter.c | 7 +++ source/blender/editors/animation/keyingsets.c | 2 +- source/blender/editors/include/ED_anim_api.h | 5 ++- source/blender/editors/object/object_add.c | 8 ++-- source/blender/editors/object/object_edit.c | 2 +- .../blender/editors/object/object_relations.c | 16 +++---- .../editors/transform/transform_conversions.c | 2 +- .../editors/transform/transform_generics.c | 2 +- source/blender/makesdna/DNA_object_types.h | 2 +- source/blender/makesrna/intern/rna_access.c | 2 +- source/blender/makesrna/intern/rna_curve.c | 1 + .../makesrna/intern/rna_object_force.c | 8 ++-- source/blender/makesrna/intern/rna_scene.c | 2 +- 21 files changed, 88 insertions(+), 56 deletions(-) diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index 4be5cce38a8..c1223a5c37f 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -1754,7 +1754,7 @@ static void flush_update_node(DagNode *node, unsigned int layer, int curtime) node->lasttime= curtime; ob= node->ob; - if(ob && (ob->recalc & OB_RECALC)) { + if(ob && (ob->recalc & OB_RECALC_ALL)) { all_layer= node->scelay; /* got an object node that changes, now check relations */ @@ -1797,7 +1797,7 @@ static void flush_update_node(DagNode *node, unsigned int layer, int curtime) if(ob->recalc & OB_RECALC_DATA) object_free_display(ob); - ob->recalc &= ~OB_RECALC; + ob->recalc &= ~OB_RECALC_ALL; } } @@ -1810,7 +1810,7 @@ static void flush_update_node(DagNode *node, unsigned int layer, int curtime) if(itA->node->type==ID_OB) { obc= itA->node->ob; /* child moves */ - if((obc->recalc & OB_RECALC)==OB_RECALC_OB) { + if((obc->recalc & OB_RECALC_ALL)==OB_RECALC_OB) { /* parent has deforming info */ if(itA->type & (DAG_RL_OB_DATA|DAG_RL_DATA_DATA)) { // printf("parent %s changes ob %s\n", ob->id.name, obc->id.name); @@ -1864,7 +1864,7 @@ static void flush_pointcache_reset(Scene *scene, DagNode *node, int curtime, int if(itA->node->lasttime!=curtime) { ob= (Object*)(node->ob); - if(reset || (ob->recalc & OB_RECALC)) { + if(reset || (ob->recalc & OB_RECALC_ALL)) { if(BKE_ptcache_object_reset(scene, ob, PTCACHE_RESET_DEPSGRAPH)) ob->recalc |= OB_RECALC_DATA; @@ -1946,7 +1946,7 @@ void DAG_scene_flush_update(Scene *sce, unsigned int lay, int time) if(itA->node->lasttime!=lasttime && itA->node->type==ID_OB) { ob= (Object*)(itA->node->ob); - if(ob->recalc & OB_RECALC) { + if(ob->recalc & OB_RECALC_ALL) { if(BKE_ptcache_object_reset(sce, ob, PTCACHE_RESET_DEPSGRAPH)) ob->recalc |= OB_RECALC_DATA; @@ -1962,11 +1962,30 @@ void DAG_scene_flush_update(Scene *sce, unsigned int lay, int time) static int object_modifiers_use_time(Object *ob) { ModifierData *md; - + + /* check if a modifier in modifier stack needs time input */ for (md=ob->modifiers.first; md; md=md->next) if (modifier_dependsOnTime(md)) return 1; - + + /* check whether any modifiers are animated */ + if (ob->adt) { + AnimData *adt = ob->adt; + + /* action - check for F-Curves with paths containing 'modifiers[' */ + if (adt->action) { + FCurve *fcu; + + for (fcu = adt->action->curves.first; fcu; fcu = fcu->next) { + if (fcu->rna_path && strstr(fcu->rna_path, "modifiers[")) + return 1; + } + } + + // XXX: also, should check NLA strips, though for now assume that nobody uses + // that and we can omit that for performance reasons... + } + return 0; } @@ -2026,14 +2045,14 @@ static void dag_object_time_update_flags(Object *ob) /* this case is for groups with nla, whilst nla target has no action or nla */ for(strip= ob->nlastrips.first; strip; strip= strip->next) { if(strip->object) - strip->object->recalc |= OB_RECALC; + strip->object->recalc |= OB_RECALC_ALL; } } } #endif // XXX old animation system if(animdata_use_time(ob->adt)) { - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_OB; ob->adt->recalc |= ADT_RECALC_ANIM; } @@ -2276,7 +2295,7 @@ void DAG_id_flush_update(ID *id, short flag) /* set flags & pointcache for object */ if(GS(id->name) == ID_OB) { ob= (Object*)id; - ob->recalc |= (flag & OB_RECALC); + ob->recalc |= (flag & OB_RECALC_ALL); BKE_ptcache_object_reset(sce, ob, PTCACHE_RESET_DEPSGRAPH); if(flag & OB_RECALC_DATA) { @@ -2331,7 +2350,7 @@ void DAG_id_flush_update(ID *id, short flag) for(obt=bmain->object.first; obt; obt= obt->id.next) { Key *key= ob_get_key(obt); if(!(ob && obt == ob) && ((ID *)key == id)) { - obt->flag |= (OB_RECALC|OB_RECALC_DATA); + obt->flag |= (OB_RECALC_OB|OB_RECALC_DATA); BKE_ptcache_object_reset(sce, obt, PTCACHE_RESET_DEPSGRAPH); } } @@ -2344,7 +2363,7 @@ void DAG_id_flush_update(ID *id, short flag) for(psys=obt->particlesystem.first; psys; psys=psys->next) { if(&psys->part->id == id) { BKE_ptcache_object_reset(sce, obt, PTCACHE_RESET_DEPSGRAPH); - obt->recalc |= (flag & OB_RECALC); + obt->recalc |= (flag & OB_RECALC_ALL); psys->recalc |= (flag & PSYS_RECALC); } } @@ -2424,7 +2443,7 @@ void DAG_id_update_flags(ID *id) GroupObject *go; /* primitive; tag all... this call helps building groups for particles */ for(go= group->gobject.first; go; go= go->next) - go->ob->recalc= OB_RECALC; + go->ob->recalc= OB_RECALC_ALL; } } else { diff --git a/source/blender/blenkernel/intern/exotic.c b/source/blender/blenkernel/intern/exotic.c index 91c5a633ff6..cdefbb54ecf 100644 --- a/source/blender/blenkernel/intern/exotic.c +++ b/source/blender/blenkernel/intern/exotic.c @@ -4071,7 +4071,7 @@ static void dxf_read(Scene *scene, char *filename) ob->dupon= 1; ob->dupoff= 0; ob->dupsta= 1; ob->dupend= 100; - ob->recalc= OB_RECALC; /* needed because of weird way of adding libdata directly */ + ob->recalc= OB_RECALC_ALL; /* needed because of weird way of adding libdata directly */ ob->data= obdata; ((ID*)ob->data)->us++; diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index 5931bf973af..8d859a2f712 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -445,7 +445,7 @@ void recalc_all_library_objects(Main *main) /* flag for full recalc */ for(ob=main->object.first; ob; ob=ob->id.next) if(ob->id.lib) - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; } /* note: MAX_LIBARRAY define should match this code */ diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 8d38f5c8d15..1b8405a91de 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -317,7 +317,7 @@ static void unlink_object__unlinkModifierLinks(void *userData, Object *ob, Objec if (*obpoin==unlinkOb) { *obpoin = NULL; - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; // XXX: should this just be OB_RECALC_DATA? } } @@ -357,7 +357,7 @@ void unlink_object(Scene *scene, Object *ob) if(obt->parent==ob) { obt->parent= NULL; - obt->recalc |= OB_RECALC; + obt->recalc |= OB_RECALC_ALL; } modifiers_foreachObjectLink(obt, unlink_object__unlinkModifierLinks, ob); @@ -367,15 +367,15 @@ void unlink_object(Scene *scene, Object *ob) if(cu->bevobj==ob) { cu->bevobj= NULL; - obt->recalc |= OB_RECALC; + obt->recalc |= OB_RECALC_ALL; } if(cu->taperobj==ob) { cu->taperobj= NULL; - obt->recalc |= OB_RECALC; + obt->recalc |= OB_RECALC_ALL; } if(cu->textoncurve==ob) { cu->textoncurve= NULL; - obt->recalc |= OB_RECALC; + obt->recalc |= OB_RECALC_ALL; } } else if(obt->type==OB_ARMATURE && obt->pose) { @@ -1087,7 +1087,7 @@ Object *add_object(struct Scene *scene, int type) base= scene_add_base(scene, ob); scene_select_base(scene, base); - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; return ob; } @@ -1533,7 +1533,7 @@ void object_make_proxy(Object *ob, Object *target, Object *gob) ob->proxy_group= gob; id_lib_extern(&target->id); - ob->recalc= target->recalc= OB_RECALC; + ob->recalc= target->recalc= OB_RECALC_ALL; /* copy transform */ if(gob) { @@ -2474,14 +2474,15 @@ void object_tfm_restore(Object *ob, void *obtfm_pt) /* requires flags to be set! */ void object_handle_update(Scene *scene, Object *ob) { - if(ob->recalc & OB_RECALC) { + if(ob->recalc & OB_RECALC_ALL) { /* speed optimization for animation lookups */ if(ob->pose) make_pose_channels_hash(ob->pose); /* XXX new animsys warning: depsgraph tag OB_RECALC_DATA should not skip drivers, which is only in where_is_object now */ - if(ob->recalc & OB_RECALC) { + // XXX: should this case be OB_RECALC_OB instead? + if(ob->recalc & OB_RECALC_ALL) { if (G.f & G_DEBUG) printf("recalcob %s\n", ob->id.name+2); @@ -2623,7 +2624,7 @@ void object_handle_update(Scene *scene, Object *ob) object_handle_update(scene, ob->proxy); } - ob->recalc &= ~OB_RECALC; + ob->recalc &= ~OB_RECALC_ALL; } /* the case when this is a group proxy, object_update is called in group.c */ diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index 3a6fb92d63a..3ed2181f908 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -3943,7 +3943,7 @@ void particle_system_update(Scene *scene, Object *ob, ParticleSystem *psys) BKE_animsys_evaluate_animdata(&part->id, part->adt, cfra, ADT_RECALC_DRIVERS); /* TODO: only free child paths in case of PSYS_RECALC_CHILD */ - if(psys->recalc & PSYS_RECALC || ob->recalc & OB_RECALC) + if(psys->recalc & PSYS_RECALC || ob->recalc & OB_RECALC_ALL) psys_free_path_cache(psys, NULL); if(psys->recalc & PSYS_RECALC_CHILD) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index f1cbf60209c..def7b0cdcce 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -2244,7 +2244,7 @@ static void lib_link_pose(FileData *fd, Object *ob, bPose *pose) } if(rebuild) { - ob->recalc= OB_RECALC; + ob->recalc= OB_RECALC_ALL; pose->flag |= POSE_RECALC; } } @@ -3458,7 +3458,7 @@ static void lib_link_object(FileData *fd, Main *main) /* this triggers object_update to always use a copy */ ob->proxy->proxy_from= ob; /* force proxy updates after load/undo, a bit weak */ - ob->recalc= ob->proxy->recalc= OB_RECALC; + ob->recalc= ob->proxy->recalc= OB_RECALC_ALL; } } ob->proxy_group= newlibadr(fd, ob->id.lib, ob->proxy_group); @@ -7892,7 +7892,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) if(ob->type==OB_ARMATURE) { if(ob->pose) ob->pose->flag |= POSE_RECALC; - ob->recalc |= OB_RECALC; // cannot call stuff now (pointers!), done in setup_app_data + ob->recalc |= OB_RECALC_ALL; // cannot call stuff now (pointers!), done in setup_app_data /* new generic xray option */ arm= newlibadr(fd, lib, ob->data); @@ -12069,7 +12069,7 @@ static void give_base_to_groups(Main *mainvar, Scene *scene) base= scene_add_base(scene, ob); base->flag |= SELECT; base->object->flag= base->flag; - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; scene->basact= base; /* assign the group */ diff --git a/source/blender/editors/animation/anim_channels_defines.c b/source/blender/editors/animation/anim_channels_defines.c index fee66384e65..09fbdf2d70d 100644 --- a/source/blender/editors/animation/anim_channels_defines.c +++ b/source/blender/editors/animation/anim_channels_defines.c @@ -3206,6 +3206,7 @@ void ANIM_channel_draw_widgets (bAnimContext *ac, bAnimListElem *ale, uiBlock *b */ if ((draw_sliders) && ELEM(ale->type, ANIMTYPE_FCURVE, ANIMTYPE_SHAPEKEY)) { /* adjust offset */ + // TODO: make slider width dynamic, so that they can be easier to use when the view is wide enough offset += SLIDER_WIDTH; /* need backdrop behind sliders... */ diff --git a/source/blender/editors/animation/anim_deps.c b/source/blender/editors/animation/anim_deps.c index 82575cf58fa..5312e97c604 100644 --- a/source/blender/editors/animation/anim_deps.c +++ b/source/blender/editors/animation/anim_deps.c @@ -90,7 +90,7 @@ void ANIM_list_elem_update(Scene *scene, bAnimListElem *ale) else { /* in other case we do standard depsgaph update, ideally we'd be calling property update functions here too ... */ - DAG_id_flush_update(id, OB_RECALC); // XXX or do we want something more restrictive? + DAG_id_flush_update(id, OB_RECALC_ALL); // XXX or do we want something more restrictive? } } @@ -106,7 +106,7 @@ void ANIM_id_update(Scene *scene, ID *id) adt->recalc |= ADT_RECALC_ANIM; /* set recalc flags */ - DAG_id_flush_update(id, OB_RECALC); // XXX or do we want something more restrictive? + DAG_id_flush_update(id, OB_RECALC_ALL); // XXX or do we want something more restrictive? } } diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c index 67f2cb834e0..fc960ffb402 100644 --- a/source/blender/editors/animation/anim_filter.c +++ b/source/blender/editors/animation/anim_filter.c @@ -946,6 +946,13 @@ static int animdata_filter_action (bAnimContext *ac, ListBase *anim_data, bDopeS FCurve *lastchan=NULL; int items = 0; + /* don't include anything from this action if it is linked in from another file, + * and we're getting stuff for editing... + */ + // TODO: need a way of tagging other channels that may also be affected... + if ((filter_mode & ANIMFILTER_FOREDIT) && (act->id.lib)) + return 0; + /* loop over groups */ // TODO: in future, should we expect to need nested groups? for (agrp= act->groups.first; agrp; agrp= agrp->next) { diff --git a/source/blender/editors/animation/keyingsets.c b/source/blender/editors/animation/keyingsets.c index f496cec7b39..1c06266a148 100644 --- a/source/blender/editors/animation/keyingsets.c +++ b/source/blender/editors/animation/keyingsets.c @@ -918,7 +918,7 @@ int ANIM_apply_keyingset (bContext *C, ListBase *dsources, bAction *act, KeyingS { Object *ob= (Object *)ksp->id; - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; // XXX: only object transforms only? } break; } diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h index 230a3e8a3dd..5fb7fa41752 100644 --- a/source/blender/editors/include/ED_anim_api.h +++ b/source/blender/editors/include/ED_anim_api.h @@ -102,8 +102,11 @@ typedef struct bAnimListElem { int flag; /* copy of elem's flags for quick access */ int index; /* for un-named data, the index of the data in it's collection */ - void *key_data; /* motion data - mostly F-Curves, but can be other types too */ + short elemFlag; /* flags for the list elem instance (not the data it represents) */ + short datatype; /* type of motion data to expect */ + void *key_data; /* motion data - mostly F-Curves, but can be other types too */ + struct ID *id; /* ID block that channel is attached to */ struct AnimData *adt; /* source of the animation data attached to ID block (for convenience) */ diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 92256d5e613..7205c8adf4b 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -1067,7 +1067,7 @@ static Base *duplibase_for_convert(Scene *scene, Base *base, Object *ob) } obn= copy_object(ob); - obn->recalc |= OB_RECALC; + obn->recalc |= OB_RECALC_ALL; basen= MEM_mallocN(sizeof(Base), "duplibase"); *basen= *base; @@ -1150,7 +1150,7 @@ static int convert_exec(bContext *C, wmOperator *op) newob->data= copy_mesh(me); } else { newob = ob; - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; } /* make new mesh data from the original copy */ @@ -1211,7 +1211,7 @@ static int convert_exec(bContext *C, wmOperator *op) for(ob1= G.main->object.first; ob1; ob1=ob1->id.next) { if(ob1->data==ob->data) { ob1->type= OB_CURVE; - ob1->recalc |= OB_RECALC; + ob1->recalc |= OB_RECALC_ALL; } } } @@ -1402,7 +1402,7 @@ static Base *object_add_duplicate_internal(Scene *scene, Base *base, int dupflag } else { obn= copy_object(ob); - obn->recalc |= OB_RECALC; + obn->recalc |= OB_RECALC_ALL; basen= MEM_mallocN(sizeof(Base), "duplibase"); *basen= *base; diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 5b434f7eae4..d3226b1adf4 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -468,7 +468,7 @@ void ED_object_enter_editmode(bContext *C, int flag) scene->obedit= ob; ED_armature_to_edit(ob); /* to ensure all goes in restposition and without striding */ - DAG_id_flush_update(&ob->id, OB_RECALC); + DAG_id_flush_update(&ob->id, OB_RECALC_ALL); // XXX: should this be OB_RECALC_DATA? WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_EDITMODE_ARMATURE, scene); } diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index 91f054f7209..fbc6075796c 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -193,7 +193,7 @@ static int vertex_parent_set_exec(bContext *C, wmOperator *op) CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { if(ob != obedit) { - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; par= obedit->parent; while(par) { @@ -339,7 +339,7 @@ static int make_proxy_exec (bContext *C, wmOperator *op) /* depsgraph flushes are needed for the new data */ DAG_scene_sort(scene); - DAG_id_flush_update(&newob->id, OB_RECALC); + DAG_id_flush_update(&newob->id, OB_RECALC_ALL); WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, newob); } else { @@ -427,7 +427,7 @@ static int parent_clear_exec(bContext *C, wmOperator *op) else if(type == 2) unit_m4(ob->parentinv); - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; } CTX_DATA_END; @@ -869,7 +869,7 @@ static int object_track_clear_exec(bContext *C, wmOperator *op) /* remove track-object for old track */ ob->track= NULL; - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; /* also remove all tracking constraints */ for (con= ob->constraints.last; con; con= pcon) { @@ -935,7 +935,7 @@ static int track_set_exec(bContext *C, wmOperator *op) data = con->data; data->tar = obact; - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; /* Lamp and Camera track differently by default */ if (ob->type == OB_LAMP || ob->type == OB_CAMERA) @@ -954,7 +954,7 @@ static int track_set_exec(bContext *C, wmOperator *op) data = con->data; data->tar = obact; - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; /* Lamp and Camera track differently by default */ if (ob->type == OB_LAMP || ob->type == OB_CAMERA) { @@ -975,7 +975,7 @@ static int track_set_exec(bContext *C, wmOperator *op) data = con->data; data->tar = obact; - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; /* Lamp and Camera track differently by default */ if (ob->type == OB_LAMP || ob->type == OB_CAMERA) { @@ -1259,7 +1259,7 @@ static int make_links_data_exec(bContext *C, wmOperator *op) break; case MAKE_LINKS_MODIFIERS: object_link_modifiers(obt, ob); - obt->recalc |= OB_RECALC; + obt->recalc |= OB_RECALC_ALL; break; } } diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index d8e56331e19..555940c2f35 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -4826,7 +4826,7 @@ void special_aftertrans_update(bContext *C, TransInfo *t) // fixme... some of this stuff is not good if (ob) { if (ob->pose || ob_get_key(ob)) - DAG_id_flush_update(&ob->id, OB_RECALC); + DAG_id_flush_update(&ob->id, OB_RECALC_ALL); else DAG_id_flush_update(&ob->id, OB_RECALC_OB); } diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 58fc93de745..80973918673 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -810,7 +810,7 @@ void recalcData(TransInfo *t) /* sets recalc flags fully, instead of flushing existing ones * otherwise proxies don't function correctly */ - DAG_id_flush_update(&ob->id, OB_RECALC); + DAG_id_flush_update(&ob->id, OB_RECALC_ALL); // XXX: OB_RECALC_OB only? } } diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h index 9649b8351a6..601d2ef4fa5 100644 --- a/source/blender/makesdna/DNA_object_types.h +++ b/source/blender/makesdna/DNA_object_types.h @@ -436,7 +436,7 @@ extern Object workob; #define OB_RECALC_DATA 2 /* time flag is set when time changes need recalc, so baked systems can ignore it */ #define OB_RECALC_TIME 4 -#define OB_RECALC 7 +#define OB_RECALC_ALL 7 /* controller state */ #define OB_MAX_STATES 30 diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 2d99be4461e..36c8764b3f4 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -1242,7 +1242,7 @@ static void rna_property_update(bContext *C, Main *bmain, Scene *scene, PointerR else { /* WARNING! This is so property drivers update the display! * not especially nice */ - DAG_id_flush_update(ptr->id.data, OB_RECALC); + DAG_id_flush_update(ptr->id.data, OB_RECALC_ALL); WM_main_add_notifier(NC_WINDOW, NULL); } diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index 3ecc844250b..09a0af9830f 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -834,6 +834,7 @@ static void rna_def_textbox(BlenderRNA *brna) srna= RNA_def_struct(brna, "TextBox", NULL); RNA_def_struct_ui_text(srna, "Text Box", "Text bounding box for layout"); + // XXX: still needs path function /* number values */ prop= RNA_def_property(srna, "x", PROP_FLOAT, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c index ec1f1bf164e..97c429209de 100644 --- a/source/blender/makesrna/intern/rna_object_force.c +++ b/source/blender/makesrna/intern/rna_object_force.c @@ -459,7 +459,7 @@ static void rna_FieldSettings_update(Main *bmain, Scene *scene, PointerRNA *ptr) part->pd2->tex= 0; } - DAG_id_flush_update(&part->id, OB_RECALC|PSYS_RECALC_RESET); + DAG_id_flush_update(&part->id, OB_RECALC_ALL|PSYS_RECALC_RESET); WM_main_add_notifier(NC_OBJECT|ND_DRAW, NULL); } @@ -501,7 +501,7 @@ static void rna_FieldSettings_shape_update(Main *bmain, Scene *scene, PointerRNA static void rna_FieldSettings_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr) { if(particle_id_check(ptr)) { - DAG_id_flush_update((ID*)ptr->id.data, OB_RECALC|PSYS_RECALC_RESET); + DAG_id_flush_update((ID*)ptr->id.data, OB_RECALC_ALL|PSYS_RECALC_RESET); } else { Object *ob= (Object*)ptr->id.data; @@ -518,7 +518,7 @@ static void rna_FieldSettings_dependency_update(Main *bmain, Scene *scene, Point DAG_scene_sort(scene); if(ob->type == OB_CURVE && ob->pd->forcefield == PFIELD_GUIDE) - DAG_id_flush_update(&ob->id, OB_RECALC); + DAG_id_flush_update(&ob->id, OB_RECALC_ALL); else DAG_id_flush_update(&ob->id, OB_RECALC_OB); @@ -628,7 +628,7 @@ static void rna_CollisionSettings_update(Main *bmain, Scene *scene, PointerRNA * { Object *ob= (Object*)ptr->id.data; - DAG_id_flush_update(&ob->id, OB_RECALC); + DAG_id_flush_update(&ob->id, OB_RECALC_ALL); WM_main_add_notifier(NC_OBJECT|ND_DRAW, ob); } diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 649bebd0d6b..7c2037be6e0 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -201,7 +201,7 @@ static Base *rna_Scene_object_link(Scene *scene, bContext *C, ReportList *report if(scene == scene_act) ob->lay= base->lay; - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; DAG_scene_sort(scene); From 05eb72ff141ad74b57504b7cf28b81548162d650 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 5 Jul 2010 04:37:30 +0000 Subject: [PATCH 309/674] Bugfix #22030: Animation Editors and Layer Animation Added new filtering option for animation editors (indicated as the 'ghost' toggle beside the 'select'(-ed only) toggle), which will include objects/bones that aren't visible (i.e. are hidden or on a hidden layer). This should make it possible to edit such types of animation, and also prevent flickering as these channels come in/out of view. --- source/blender/editors/animation/anim_filter.c | 14 ++++++++------ .../editors/interface/interface_templates.c | 8 ++++++-- source/blender/makesdna/DNA_action_types.h | 3 +++ source/blender/makesrna/intern/rna_action.c | 6 ++++++ 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c index fc960ffb402..a9c9830f07f 100644 --- a/source/blender/editors/animation/anim_filter.c +++ b/source/blender/editors/animation/anim_filter.c @@ -797,7 +797,7 @@ bAnimListElem *make_new_animlistelem (void *data, short datatype, void *owner, s /* ----------------------------------------- */ /* NOTE: when this function returns true, the F-Curve is to be skipped */ -static int skip_fcurve_selected_data(FCurve *fcu, ID *owner_id, int filter_mode) +static int skip_fcurve_selected_data(bDopeSheet *ads, FCurve *fcu, ID *owner_id, int filter_mode) { if (GS(owner_id->name) == ID_OB) { Object *ob= (Object *)owner_id; @@ -814,9 +814,8 @@ static int skip_fcurve_selected_data(FCurve *fcu, ID *owner_id, int filter_mode) /* check whether to continue or skip */ if ((pchan) && (pchan->bone)) { - /* if only visible channels, skip if bone not visible */ - // TODO: should we just do this always? - if (filter_mode & ANIMFILTER_VISIBLE) { + /* if only visible channels, skip if bone not visible unless user wants channels from hidden data too */ + if ((filter_mode & ANIMFILTER_VISIBLE) && !(ads->filterflag & ADS_FILTER_INCL_HIDDEN)) { bArmature *arm= (bArmature *)ob->data; if ((arm->layer & pchan->bone->layer) == 0) @@ -887,7 +886,7 @@ static FCurve *animdata_filter_fcurve_next (bDopeSheet *ads, FCurve *first, bAct * - this will also affect things like Drivers, and also works for Bone Constraints */ if ( ((ads) && (ads->filterflag & ADS_FILTER_ONLYSEL)) && (owner_id) ) { - if (skip_fcurve_selected_data(fcu, owner_id, filter_mode)) + if (skip_fcurve_selected_data(ads, fcu, owner_id, filter_mode)) continue; } @@ -2112,11 +2111,14 @@ static int animdata_filter_dopesheet (bAnimContext *ac, ListBase *anim_data, bDo /* firstly, check if object can be included, by the following factors: * - if only visible, must check for layer and also viewport visibility + * --> while tools may demand only visible, user setting takes priority + * as user option controls whether sets of channels get included while + * tool-flag takes into account collapsed/open channels too * - if only selected, must check if object is selected * - there must be animation data to edit */ // TODO: if cache is implemented, just check name here, and then - if (filter_mode & ANIMFILTER_VISIBLE) { + if ((filter_mode & ANIMFILTER_VISIBLE) && !(ads->filterflag & ADS_FILTER_INCL_HIDDEN)) { /* layer visibility - we check both object and base, since these may not be in sync yet */ if ((sce->lay & (ob->lay|base->lay))==0) continue; diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 261f83f9bbc..ae5f81a56a9 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -80,11 +80,15 @@ void uiTemplateDopeSheetFilter(uiLayout *layout, bContext *C, PointerRNA *ptr) uiLayout *row= layout; short nlaActive= ((sa) && (sa->spacetype==SPACE_NLA)); - /* more 'generic' filtering options */ + /* most 'generic' filtering options */ row= uiLayoutRow(layout, 1); uiItemR(row, ptr, "only_selected", 0, "", 0); - uiItemR(row, ptr, "display_transforms", 0, "", 0); // xxx: include in another position instead? + uiItemR(row, ptr, "display_hidden", 0, "", 0); + + /* object-level filtering options */ + row= uiLayoutRow(layout, 1); + uiItemR(row, ptr, "display_transforms", 0, "", 0); if (nlaActive) uiItemR(row, ptr, "include_missing_nla", 0, "", 0); diff --git a/source/blender/makesdna/DNA_action_types.h b/source/blender/makesdna/DNA_action_types.h index 210bb6a9af0..d0f15b78ada 100644 --- a/source/blender/makesdna/DNA_action_types.h +++ b/source/blender/makesdna/DNA_action_types.h @@ -550,6 +550,9 @@ typedef enum eDopeSheet_FilterFlag { /* NLA-specific filters */ ADS_FILTER_NLA_NOACT = (1<<25), /* if the AnimData block has no NLA data, don't include to just show Action-line */ + /* general filtering 3 */ + ADS_FILTER_INCL_HIDDEN = (1<<26), /* include 'hidden' channels too (i.e. those from hidden Objects/Bones) */ + /* combination filters (some only used at runtime) */ ADS_FILTER_NOOBDATA = (ADS_FILTER_NOCAM|ADS_FILTER_NOMAT|ADS_FILTER_NOLAM|ADS_FILTER_NOCUR|ADS_FILTER_NOPART|ADS_FILTER_NOARM), } eDopeSheet_FilterFlag; diff --git a/source/blender/makesrna/intern/rna_action.c b/source/blender/makesrna/intern/rna_action.c index bc83af7a279..1f542e2babe 100644 --- a/source/blender/makesrna/intern/rna_action.c +++ b/source/blender/makesrna/intern/rna_action.c @@ -171,6 +171,12 @@ static void rna_def_dopesheet(BlenderRNA *brna) RNA_def_property_ui_icon(prop, ICON_RESTRICT_SELECT_OFF, 0); RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); + prop= RNA_def_property(srna, "display_hidden", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_INCL_HIDDEN); + RNA_def_property_ui_text(prop, "Display Hidden", "Include channels from objects/bone that aren't visible"); + RNA_def_property_ui_icon(prop, ICON_GHOST_ENABLED, 0); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); + /* Object Group Filtering Settings */ prop= RNA_def_property(srna, "only_group_objects", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_ONLYOBGROUP); From 7aca4eec4b9831fda9150b7f4a44f2f351582f7b Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Mon, 5 Jul 2010 06:04:24 +0000 Subject: [PATCH 310/674] compile fix, another missed semicolon - blush --- intern/ghost/intern/GHOST_SystemCocoa.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/intern/ghost/intern/GHOST_SystemCocoa.h b/intern/ghost/intern/GHOST_SystemCocoa.h index 0a0b900f72a..2e7c9b1d037 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.h +++ b/intern/ghost/intern/GHOST_SystemCocoa.h @@ -231,7 +231,7 @@ public: * Determine the directory of the current binary * @return Unsigned char string pointing to the binary dir */ - virtual const GHOST_TUns8* getBinaryDir() const + virtual const GHOST_TUns8* getBinaryDir() const; /** * Handles a window event. Called by GHOST_WindowCocoa window delegate From b5043c7dd552731a15376c63927e0371b709212a Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Mon, 5 Jul 2010 06:32:29 +0000 Subject: [PATCH 311/674] Fixed case of letters in CHECKCXXSOURCECOMPILES in cmake macro TEST_SSE_SUPPORT Should be CheckCXXSourceCompiles to work fine in linux --- CMake/macros.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMake/macros.cmake b/CMake/macros.cmake index 17662c5c447..aec86f7467a 100644 --- a/CMake/macros.cmake +++ b/CMake/macros.cmake @@ -183,7 +183,7 @@ MACRO(SETUP_LIBLINKS ENDMACRO(SETUP_LIBLINKS) MACRO(TEST_SSE_SUPPORT) - INCLUDE(CHECKCXXSOURCECOMPILES) + INCLUDE(CheckCXXSourceCompiles) MESSAGE(STATUS "Detecting SSE support") IF(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) From 1c3512121357c37cf6a7b8b22e627a77c8cf02e5 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Mon, 5 Jul 2010 07:06:19 +0000 Subject: [PATCH 312/674] == SCons == Updated to comply with datafiles filepath patch. I've tried to do some changes for OSX too, but I'm not sure if they're correct, so OSX people, please test and report. --- SConstruct | 16 +++++++++------- tools/Blender.py | 42 ++++++++++++++++++++++-------------------- tools/btools.py | 3 ++- 3 files changed, 33 insertions(+), 28 deletions(-) diff --git a/SConstruct b/SConstruct index 0b985f3321a..26fa5b47198 100644 --- a/SConstruct +++ b/SConstruct @@ -56,6 +56,8 @@ BlenderEnvironment = tools.Blender.BlenderEnvironment btools = tools.btools B = tools.Blender +VERSION = tools.btools.VERSION # This is used in creating the local config directories + ### globals ### platform = sys.platform quickie = None @@ -193,7 +195,7 @@ if not env['BF_FANCY']: # NOTE: only do the scripts directory for now, otherwise is too disruptive for developers # TODO: perhaps we need an option (off by default) to not do this altogether... if not env['WITHOUT_BF_INSTALL'] and not env['WITHOUT_BF_OVERWRITE_INSTALL']: - scriptsDir = env['BF_INSTALLDIR'] + os.sep + '.blender' + os.sep + 'scripts' + scriptsDir = os.path.join(env['BF_INSTALLDIR'], VERSION, 'scripts') if os.path.isdir(scriptsDir): print B.bc.OKGREEN + "Clearing installation directory%s: %s" % (B.bc.ENDC, os.path.abspath(scriptsDir)) shutil.rmtree(scriptsDir) @@ -434,8 +436,8 @@ else: blenderinstall = env.Install(dir=dir, source=B.program_list) -#-- .blender -#- dont do .blender and scripts for darwin, it is already in the bundle +#-- local path = config files in install dir: installdir\VERSION +#- dont do config and scripts for darwin, it is already in the bundle dotblendlist = [] datafileslist = [] datafilestargetlist = [] @@ -460,13 +462,13 @@ if env['OURPLATFORM']!='darwin': if 'locale' in dp: datafileslist.append(os.path.join(dp,f)) if env['WITH_BF_FHS']: dir= os.path.join(*([BLENDERPATH] + ['datafiles'] + dp.split(os.sep)[2:])) # skip bin/.blender - else: dir= os.path.join(*([BLENDERPATH] + ['.blender'] + ['datafiles'] + dp.split(os.sep)[1:])) # skip bin + else: dir= os.path.join(*([BLENDERPATH] + [VERSION] + ['datafiles'] + dp.split(os.sep)[1:])) # skip bin datafilestargetlist.append(dir + os.sep + f) else: dotblendlist.append(os.path.join(dp, f)) if env['WITH_BF_FHS']: dir= os.path.join(*([BLENDERPATH] + ['config'] + dp.split(os.sep)[2:])) # skip bin/.blender - else: dir= os.path.join(*([BLENDERPATH] + ['.blender'] + ['config'] + dp.split(os.sep)[1:])) # skip bin + else: dir= os.path.join(*([BLENDERPATH] + [VERSION] + ['config'] + dp.split(os.sep)[1:])) # skip bin dottargetlist.append(dir + os.sep + f) @@ -479,7 +481,7 @@ if env['OURPLATFORM']!='darwin': dotblenderinstall.append(env.Install(dir=td, source=srcfile)) if env['WITH_BF_PYTHON']: - #-- .blender/scripts + #-- local/VERSION/scripts scriptpaths=['release/scripts'] for scriptpath in scriptpaths: for dp, dn, df in os.walk(scriptpath): @@ -487,7 +489,7 @@ if env['OURPLATFORM']!='darwin': dn.remove('.svn') if env['WITH_BF_FHS']: dir = BLENDERPATH - else: dir = os.path.join(env['BF_INSTALLDIR'], '.blender') + else: 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 f[-3:]!='pyc'] diff --git a/tools/Blender.py b/tools/Blender.py index cd6e4652754..9d4dab65770 100644 --- a/tools/Blender.py +++ b/tools/Blender.py @@ -31,6 +31,8 @@ import SCons.Builder import SCons.Tool import bcolors bc = bcolors.bcolors() +import btools +VERSION = btools.VERSION Split = SCons.Util.Split Action = SCons.Action.Action @@ -466,7 +468,7 @@ def WinPyBundle(target=None, source=None, env=None): py_target = env.subst( env['BF_INSTALLDIR'] ) if py_target[0]=='#': py_target=py_target[1:] - py_target+= '/.blender/python/lib/' + py_target = os.path.join(py_target, VERSION, 'python', 'lib') def printexception(func,path,ex): if os.path.exists(path): #do not report if path does not exist. eg on a fresh build. print str(func) + ' failed on ' + str(path) @@ -521,27 +523,27 @@ def AppIt(target=None, source=None, env=None): commands.getoutput(cmd) cmd = 'cp %s/%s %s/%s.app/Contents/MacOS/%s'%(builddir, binary,builddir, binary, binary) commands.getoutput(cmd) - cmd = 'mkdir %s/%s.app/Contents/MacOS/.blender/'%(builddir, binary) + cmd = 'mkdir %s/%s.app/Contents/MacOS/%s/'%(builddir, binary, VERSION) # print cmd commands.getoutput(cmd) - cmd = builddir + '/%s.app/Contents/MacOS/.blender'%binary - shutil.copy(bldroot + '/bin/.blender/.bfont.ttf', cmd) - shutil.copy(bldroot + '/bin/.blender/.Blanguages', cmd) - cmd = 'cp -R %s/bin/.blender/locale %s/%s.app/Contents/Resources/'%(bldroot,builddir,binary) - commands.getoutput(cmd) - cmd = 'cp -R %s/bin/.blender/locale %s/%s.app/Contents/MacOS/.blender/'%(bldroot,builddir,binary) - commands.getoutput(cmd) - cmd = 'cp %s/bin/.blender/.Blanguages %s/%s.app/Contents/Resources/'%(bldroot,builddir,binary) - commands.getoutput(cmd) - cmd = 'mkdir %s/%s.app/Contents/MacOS/.blender/python/'%(builddir,binary) - commands.getoutput(cmd) - cmd = 'unzip -q %s/release/%s -d %s/%s.app/Contents/MacOS/.blender/python/'%(libdir,python_zip,builddir,binary) - commands.getoutput(cmd) - cmd = 'cp -R %s/release/scripts %s/%s.app/Contents/MacOS/.blender/'%(bldroot,builddir,binary) + cmd = builddir + '/%s.app/Contents/MacOS/VERSION'%(binary,VERSION) + shutil.copy(bldroot + '/bin/'+VERSION+'/.bfont.ttf', cmd) + shutil.copy(bldroot + '/bin/'+VERSION+'/.Blanguages', cmd) + cmd = 'cp -R %s/bin/%s/locale %s/%s.app/Contents/Resources/'%(bldroot,VERSION,builddir,binary) commands.getoutput(cmd) - cmd = 'cp -R %s/release/ui %s/%s.app/Contents/MacOS/.blender/'%(bldroot,builddir,binary) + cmd = 'cp -R %s/bin/%s/locale %s/%s.app/Contents/MacOS/%s/'%(bldroot,VERSION,builddir,binary,VERSION) commands.getoutput(cmd) - cmd = 'cp -R %s/release/io %s/%s.app/Contents/MacOS/.blender/'%(bldroot,builddir,binary) + cmd = 'cp %s/bin/%s/.Blanguages %s/%s.app/Contents/Resources/'%(bldroot,VERSION,builddir,binary) + commands.getoutput(cmd) + cmd = 'mkdir %s/%s.app/Contents/MacOS/%s/python/'%(builddir,binary, VERSION) + commands.getoutput(cmd) + cmd = 'unzip -q %s/release/%s -d %s/%s.app/Contents/MacOS/%s/python/'%(libdir,python_zip,builddir,binary,VERSION) + commands.getoutput(cmd) + cmd = 'cp -R %s/release/scripts %s/%s.app/Contents/MacOS/%s/'%(bldroot,builddir,binary,VERSION) + commands.getoutput(cmd) + cmd = 'cp -R %s/release/ui %s/%s.app/Contents/MacOS/%s/'%(bldroot,builddir,binary,VERSION) + commands.getoutput(cmd) + cmd = 'cp -R %s/release/io %s/%s.app/Contents/MacOS/%s/'%(bldroot,builddir,binary,VERSION) commands.getoutput(cmd) cmd = 'chmod +x %s/%s.app/Contents/MacOS/%s'%(builddir,binary, binary) commands.getoutput(cmd) @@ -559,7 +561,7 @@ def my_unixpybundle_print(target, source, env): def UnixPyBundle(target=None, source=None, env=None): # Any Unix except osx - #-- .blender/python/lib/python3.1 + #-- VERSION/python/lib/python3.1 import commands @@ -568,7 +570,7 @@ def UnixPyBundle(target=None, source=None, env=None): commands.getoutput(cmd) if env['WITH_BF_FHS']: dir = os.path.join(env['BF_INSTALLDIR'], 'share', 'blender', env['BF_VERSION']) # BLENDERPATH - else: dir = os.path.join(env['BF_INSTALLDIR'], '.blender') + else: dir = os.path.join(env['BF_INSTALLDIR'], VERSION) py_src = env.subst( env['BF_PYTHON_LIBPATH'] + '/python'+env['BF_PYTHON_VERSION'] ) py_target = env.subst( dir + '/python/lib/python'+env['BF_PYTHON_VERSION'] ) diff --git a/tools/btools.py b/tools/btools.py index a703103c59c..cb3ccd3ba03 100644 --- a/tools/btools.py +++ b/tools/btools.py @@ -1,4 +1,3 @@ - import os import os.path import SCons.Options @@ -16,6 +15,8 @@ import sys Variables = SCons.Variables BoolVariable = SCons.Variables.BoolVariable +VERSION = '2.52' # This is used in creating the local config directories + def print_arguments(args, bc): if len(args): for k,v in args.iteritems(): From d9e9aa1e4d7a63f7ed9a6c8ae6097eeb55b2e6dc Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 5 Jul 2010 07:08:10 +0000 Subject: [PATCH 313/674] changes to color wheel commit. - use a flag rather then a2 for locking color. - remove float from button added for color wheel size, use a2 instead. - holding shift on the color wheel gives higher precission. --- source/blender/editors/include/UI_interface.h | 2 +- .../editors/interface/interface_handlers.c | 19 ++++++++++--------- .../editors/interface/interface_intern.h | 1 - .../editors/interface/interface_templates.c | 10 +++++++--- .../editors/interface/interface_widgets.c | 4 ++-- 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index fea8c32b43b..00a7c5c9f48 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -142,7 +142,7 @@ typedef struct uiLayout uiLayout; #define UI_BUT_ALIGN_DOWN (1<<17) #define UI_BUT_DISABLED (1<<18) -#define UI_BUT_UNUSED (1<<19) +#define UI_BUT_COLOR_LOCK (1<<19) #define UI_BUT_ANIMATED (1<<20) #define UI_BUT_ANIMATED_KEY (1<<21) #define UI_BUT_DRIVEN (1<<22) diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 999b92e6854..6eb96b32efe 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -3047,7 +3047,7 @@ static int ui_do_but_HSVCUBE(bContext *C, uiBlock *block, uiBut *but, uiHandleBu return WM_UI_HANDLER_CONTINUE; } -static int ui_numedit_but_HSVCIRCLE(uiBut *but, uiHandleButtonData *data, int mx, int my) +static int ui_numedit_but_HSVCIRCLE(uiBut *but, uiHandleButtonData *data, int mx, int my, int shift) { rcti rect; int changed= 1; @@ -3061,23 +3061,24 @@ static int ui_numedit_but_HSVCIRCLE(uiBut *but, uiHandleButtonData *data, int mx /* exception, when using color wheel in 'locked' value state: * allow choosing a hue for black values, by giving a tiny increment */ - if (but->a2 == 1) { // lock + if (but->flag & UI_BUT_COLOR_LOCK) { // lock if (hsv[2] == 0.f) hsv[2] = 0.0001f; } if(U.uiflag & USER_CONTINUOUS_MOUSE) { + float fac= shift ? 0.02 : 0.1; /* slow down the mouse, this is fairly picky */ - mx = (data->dragstartx*0.9 + mx*0.1); - my = (data->dragstarty*0.9 + my*0.1); + mx = (data->dragstartx*(1.0f-fac) + mx*fac); + my = (data->dragstarty*(1.0f-fac) + my*fac); } - + ui_hsvcircle_vals_from_pos(hsv, hsv+1, &rect, (float)mx, (float)my); hsv_to_rgb(hsv[0], hsv[1], hsv[2], rgb, rgb+1, rgb+2); - if(but->flag & UI_BUT_VEC_SIZE_LOCK) { + if((but->flag & UI_BUT_VEC_SIZE_LOCK) && (rgb[0] || rgb[1] || rgb[2])) { normalize_v3(rgb); - mul_v3_fl(rgb, but->color_lum); + mul_v3_fl(rgb, but->a2); } ui_set_but_vectorf(but, rgb); @@ -3106,7 +3107,7 @@ static int ui_do_but_HSVCIRCLE(bContext *C, uiBlock *block, uiBut *but, uiHandle button_activate_state(C, but, BUTTON_STATE_NUM_EDITING); /* also do drag the first time */ - if(ui_numedit_but_HSVCIRCLE(but, data, mx, my)) + if(ui_numedit_but_HSVCIRCLE(but, data, mx, my, event->shift)) ui_numedit_apply(C, block, but, data); return WM_UI_HANDLER_BREAK; @@ -3157,7 +3158,7 @@ static int ui_do_but_HSVCIRCLE(bContext *C, uiBlock *block, uiBut *but, uiHandle } else if(event->type == MOUSEMOVE) { if(mx!=data->draglastx || my!=data->draglasty) { - if(ui_numedit_but_HSVCIRCLE(but, data, mx, my)) + if(ui_numedit_but_HSVCIRCLE(but, data, mx, my, event->shift)) ui_numedit_apply(C, block, but, data); } } diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index 078e337f8f9..cb8130573fe 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -173,7 +173,6 @@ struct uiBut { float hardmin, hardmax, softmin, softmax; float a1, a2, hsv[3]; // hsv is temp memory for hsv buttons float aspect; - float color_lum; /* used only for color buttons so far */ uiButHandleFunc func; void *func_arg1; diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index ae5f81a56a9..59a67f9a541 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -1965,19 +1965,23 @@ void uiTemplateColorWheel(uiLayout *layout, PointerRNA *ptr, char *propname, int printf("uiTemplateColorWheel: property not found: %s\n", propname); return; } - + RNA_property_float_ui_range(ptr, prop, &softmin, &softmax, &step, &precision); col = uiLayoutColumn(layout, 0); row= uiLayoutRow(col, 1); - but= uiDefButR(block, HSVCIRCLE, 0, "", 0, 0, WHEEL_SIZE, WHEEL_SIZE, ptr, propname, -1, 0.0, 0.0, 0, lock, ""); + but= uiDefButR(block, HSVCIRCLE, 0, "", 0, 0, WHEEL_SIZE, WHEEL_SIZE, ptr, propname, -1, 0.0, 0.0, 0, 0, ""); + + if(lock) { + but->flag |= UI_BUT_COLOR_LOCK; + } if(lock_luminosity) { float color[4]; /* incase of alpha */ but->flag |= UI_BUT_VEC_SIZE_LOCK; RNA_property_float_get_array(ptr, prop, color); - but->color_lum= len_v3(color); /* abuse the soft-max though this is a kind of soft-max */ + but->a2= len_v3(color); } uiItemS(row); diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index b7a1874cd2b..5bebf71167d 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -1656,10 +1656,10 @@ void ui_draw_but_HSVCIRCLE(uiBut *but, uiWidgetColors *wcol, rcti *rect) rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); copy_v3_v3(hsvo, hsv); - /* exception: if 'lock' is set (stored in but->a2), + /* exception: if 'lock' is set * lock the value of the color wheel to 1. * Useful for color correction tools where you're only interested in hue. */ - if (but->a2) hsv[2] = 1.f; + if (but->flag & UI_BUT_COLOR_LOCK) hsv[2] = 1.f; hsv_to_rgb(0.f, 0.f, hsv[2], colcent, colcent+1, colcent+2); From 51e74c26f7ce929ffcae4790ed27e31cf756ec4c Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 5 Jul 2010 09:31:24 +0000 Subject: [PATCH 314/674] Fix #22189: fields rendering crashes. --- source/blender/editors/render/render_internal.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c index 3634c10e147..8f4b02b8d64 100644 --- a/source/blender/editors/render/render_internal.c +++ b/source/blender/editors/render/render_internal.c @@ -508,11 +508,14 @@ static void image_renderinfo_cb(void *rjv, RenderStats *rs) rr= RE_AcquireResultRead(rj->re); - /* malloc OK here, stats_draw is not in tile threads */ - if(rr->text==NULL) - rr->text= MEM_callocN(IMA_MAX_RENDER_TEXT, "rendertext"); + if(rr) { + /* malloc OK here, stats_draw is not in tile threads */ + if(rr->text==NULL) + rr->text= MEM_callocN(IMA_MAX_RENDER_TEXT, "rendertext"); + + make_renderinfo_string(rs, rj->scene, rr->text); + } - make_renderinfo_string(rs, rj->scene, rr->text); RE_ReleaseResult(rj->re); /* make jobs timer to send notifier */ From 49b13c538552b747795f246feb5243ef78f7c778 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Mon, 5 Jul 2010 09:33:17 +0000 Subject: [PATCH 315/674] Brainfart cleanup. --- tools/Blender.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/Blender.py b/tools/Blender.py index 9d4dab65770..95d4025fb76 100644 --- a/tools/Blender.py +++ b/tools/Blender.py @@ -526,7 +526,7 @@ def AppIt(target=None, source=None, env=None): cmd = 'mkdir %s/%s.app/Contents/MacOS/%s/'%(builddir, binary, VERSION) # print cmd commands.getoutput(cmd) - cmd = builddir + '/%s.app/Contents/MacOS/VERSION'%(binary,VERSION) + cmd = builddir + '/%s.app/Contents/MacOS/%s'%(binary,VERSION) shutil.copy(bldroot + '/bin/'+VERSION+'/.bfont.ttf', cmd) shutil.copy(bldroot + '/bin/'+VERSION+'/.Blanguages', cmd) cmd = 'cp -R %s/bin/%s/locale %s/%s.app/Contents/Resources/'%(bldroot,VERSION,builddir,binary) From 58778d41e2496d3ba4d150eda7fb9d247a639c53 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 5 Jul 2010 09:56:06 +0000 Subject: [PATCH 316/674] Color Balance - color_balance_float_float wasnt using the new calculation method - moved calculation into an inline function color_balance_fl() & made the lift adjustments less confusing. --- source/blender/blenkernel/intern/sequencer.c | 46 ++++++++------------ 1 file changed, 18 insertions(+), 28 deletions(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 28cae5eeaa6..2f25c24272e 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -1493,15 +1493,15 @@ static StripColorBalance calc_cb(StripColorBalance * cb_) StripColorBalance cb = *cb_; int c; - if (cb.flag & SEQ_COLOR_BALANCE_INVERSE_LIFT) { - for (c = 0; c < 3; c++) { - cb.lift[c] = 1.0 - cb.lift[c]; - } - } else { - for (c = 0; c < 3; c++) { - cb.lift[c] = -(1.0 - cb.lift[c]); - } + for (c = 0; c < 3; c++) { + cb.lift[c] = 2.0f - pow(cb.lift[c], 2); } + + if(cb.flag & SEQ_COLOR_BALANCE_INVERSE_LIFT) { + negate_v3(cb.lift); + } + + if (cb.flag & SEQ_COLOR_BALANCE_INVERSE_GAIN) { for (c = 0; c < 3; c++) { if (cb.gain[c] != 0.0) { @@ -1525,21 +1525,20 @@ static StripColorBalance calc_cb(StripColorBalance * cb_) return cb; } +/* compiler should inline */ +MINLINE float color_balance_fl(float v, float lift, float gain, float gamma, float mul) +{ + return pow(pow(v * gain, lift), gamma) * mul; +} + + static void make_cb_table_byte(float lift, float gain, float gamma, unsigned char * table, float mul) { int y; - /* matches 'LooksBuilder', generally looks nice too */ - if(lift >= 1.0f) lift= 0.0f; - else lift= (1.0f - lift) * (1.0f - lift); - /* end modif's */ for (y = 0; y < 256; y++) { - float v = (float)y * (1.0 / 255.0f); - v *= gain; - v = pow(v, lift); - v = pow(v, gamma); - v *= mul; + float v= color_balance_fl((float)y * (1.0 / 255.0f), lift, gain, gamma, mul); CLAMP(v, 0.0f, 1.0f); table[y] = v * 255; } @@ -1549,17 +1548,9 @@ static void make_cb_table_float(float lift, float gain, float gamma, float * table, float mul) { int y; - /* matches 'LooksBuilder', generally looks nice too */ - if(lift >= 1.0f) lift= 0.0f; - else lift= (1.0f - lift) * (1.0f - lift); - /* end modif's */ for (y = 0; y < 256; y++) { - float v = (float)y * (1.0 / 255.0f); - v *= gain; - v = pow(v, lift); - v = pow(v, gamma); - v *= mul; + float v= color_balance_fl((float)y * (1.0 / 255.0f), lift, gain, gamma, mul); table[y] = v; } } @@ -1630,8 +1621,7 @@ static void color_balance_float_float(Sequence * seq, TStripElem* se, float mul) while (p < e) { int c; for (c = 0; c < 3; c++) { - p[c] = pow(p[c] * cb.gain[c] + cb.lift[c], - cb.gamma[c]) * mul; + p[c]= color_balance_fl(p[c], cb.lift[c], cb.gain[c], cb.gamma[c], mul); } p += 4; } From 0f58a4c798a01975b78d17d8dc25efa4ec3a1cdf Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 5 Jul 2010 10:12:24 +0000 Subject: [PATCH 317/674] when making a metastrip use active strip for the channel when available. --- source/blender/editors/space_sequencer/sequencer_edit.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 9e52c2f4e38..1592c2093c4 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -1892,8 +1892,7 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, FALSE); - Sequence *seq, *seqm, *next; - + Sequence *seq, *seqm, *next, *last_seq = seq_active_get(scene); int channel_max= 1; if(seqbase_isolated_sel_check(ed->seqbasep)==FALSE) { @@ -1918,7 +1917,7 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op) } seq= next; } - seqm->machine= channel_max; + seqm->machine= last_seq ? last_seq->machine : channel_max; calc_sequence(scene, seqm); seqm->strip= MEM_callocN(sizeof(Strip), "metastrip"); From c9f667a92e492636ee6989c9cefda3c6caafc843 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 5 Jul 2010 10:18:59 +0000 Subject: [PATCH 318/674] texture saturation option. we'll need a do-version bump soon or this will convert 0.0 saturation to 1.0 on load. --- release/scripts/ui/properties_texture.py | 1 + source/blender/blenkernel/intern/texture.c | 1 + source/blender/blenloader/intern/readfile.c | 8 ++++++++ source/blender/makesdna/DNA_texture_types.h | 4 ++-- source/blender/makesrna/intern/rna_texture.c | 5 +++++ source/blender/render/intern/include/texture.h | 8 +++++++- 6 files changed, 24 insertions(+), 3 deletions(-) diff --git a/release/scripts/ui/properties_texture.py b/release/scripts/ui/properties_texture.py index eb1c547e419..86f2d867d41 100644 --- a/release/scripts/ui/properties_texture.py +++ b/release/scripts/ui/properties_texture.py @@ -204,6 +204,7 @@ class TEXTURE_PT_colors(TextureButtonsPanel): col.label(text="Adjust:") col.prop(tex, "brightness") col.prop(tex, "contrast") + col.prop(tex, "saturation") # Texture Slot Panels # diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c index 8178ef75a91..57816b7e470 100644 --- a/source/blender/blenkernel/intern/texture.c +++ b/source/blender/blenkernel/intern/texture.c @@ -451,6 +451,7 @@ void default_tex(Tex *tex) tex->nabla= 0.025; // also in do_versions tex->bright= 1.0; tex->contrast= 1.0; + tex->saturation= 1.0; tex->filtersize= 1.0; tex->rfac= 1.0; tex->gfac= 1.0; diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index def7b0cdcce..d078b83c653 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10855,6 +10855,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) Object *ob; Scene *scene; bScreen *sc; + Tex *tex; for (sc= main->screen.first; sc; sc= sc->id.next) { ScrArea *sa; @@ -10945,6 +10946,13 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } + for(tex= main->tex.first; tex; tex= tex->id.next) { + /* if youre picky, this isn't correct until we do a version bump + * since you could set saturation to be 0.0*/ + if(tex->saturation==0.0f) + tex->saturation= 1.0f; + } + } /* WATCH IT!!!: pointers from libdata have not been converted yet here! */ diff --git a/source/blender/makesdna/DNA_texture_types.h b/source/blender/makesdna/DNA_texture_types.h index b6f72875c29..e7a5a6e5f56 100644 --- a/source/blender/makesdna/DNA_texture_types.h +++ b/source/blender/makesdna/DNA_texture_types.h @@ -203,8 +203,8 @@ typedef struct Tex { struct AnimData *adt; /* animation data (must be immediately after id for utilities to use it) */ float noisesize, turbul; - float bright, contrast, rfac, gfac, bfac; - float filtersize; + float bright, contrast, saturation, rfac, gfac, bfac; + float filtersize, pad2; /* newnoise: musgrave parameters */ float mg_H, mg_lacunarity, mg_octaves, mg_offset, mg_gain; diff --git a/source/blender/makesrna/intern/rna_texture.c b/source/blender/makesrna/intern/rna_texture.c index a12b8c55552..84fd217e64e 100644 --- a/source/blender/makesrna/intern/rna_texture.c +++ b/source/blender/makesrna/intern/rna_texture.c @@ -1706,6 +1706,11 @@ static void rna_def_texture(BlenderRNA *brna) RNA_def_property_range(prop, 0.01, 5); RNA_def_property_ui_text(prop, "Contrast", ""); RNA_def_property_update(prop, 0, "rna_Texture_update"); + + prop= RNA_def_property(srna, "saturation", PROP_FLOAT, PROP_NONE); + RNA_def_property_range(prop, 0, 2); + RNA_def_property_ui_text(prop, "Saturation", ""); + RNA_def_property_update(prop, 0, "rna_Texture_update"); /* RGB Factor */ prop= RNA_def_property(srna, "factor_red", PROP_FLOAT, PROP_NONE); diff --git a/source/blender/render/intern/include/texture.h b/source/blender/render/intern/include/texture.h index 3e6fc8c5677..436b365b352 100644 --- a/source/blender/render/intern/include/texture.h +++ b/source/blender/render/intern/include/texture.h @@ -40,7 +40,13 @@ if(texres->tr<0.0) texres->tr= 0.0; \ texres->tg= tex->gfac*((texres->tg-0.5)*tex->contrast+tex->bright-0.5); \ if(texres->tg<0.0) texres->tg= 0.0; \ texres->tb= tex->bfac*((texres->tb-0.5)*tex->contrast+tex->bright-0.5); \ -if(texres->tb<0.0) texres->tb= 0.0; +if(texres->tb<0.0) texres->tb= 0.0; \ +if(tex->saturation != 1.0f) { \ + float _hsv[3]; \ + rgb_to_hsv(texres->tr, texres->tg, texres->tb, _hsv, _hsv+1, _hsv+2); \ + _hsv[1] *= tex->saturation; \ + hsv_to_rgb(_hsv[0], _hsv[1], _hsv[2], &texres->tr, &texres->tg, &texres->tb); \ +} \ struct HaloRen; From 462d889720a5562fa01040f4d2a70269904edd77 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Mon, 5 Jul 2010 10:32:14 +0000 Subject: [PATCH 319/674] another fix for osx scons --- tools/Blender.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/Blender.py b/tools/Blender.py index 95d4025fb76..1195b00b39d 100644 --- a/tools/Blender.py +++ b/tools/Blender.py @@ -527,8 +527,8 @@ def AppIt(target=None, source=None, env=None): # print cmd commands.getoutput(cmd) cmd = builddir + '/%s.app/Contents/MacOS/%s'%(binary,VERSION) - shutil.copy(bldroot + '/bin/'+VERSION+'/.bfont.ttf', cmd) - shutil.copy(bldroot + '/bin/'+VERSION+'/.Blanguages', cmd) + shutil.copy(bldroot + '/bin/.blender/.bfont.ttf', cmd) + shutil.copy(bldroot + '/bin/.blender/.Blanguages', cmd) cmd = 'cp -R %s/bin/%s/locale %s/%s.app/Contents/Resources/'%(bldroot,VERSION,builddir,binary) commands.getoutput(cmd) cmd = 'cp -R %s/bin/%s/locale %s/%s.app/Contents/MacOS/%s/'%(bldroot,VERSION,builddir,binary,VERSION) From 052ab934aa3adb3ab3ce8e875618986fb69f0d57 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 5 Jul 2010 11:48:13 +0000 Subject: [PATCH 320/674] Fix #20383: mesh deform modifier wasn't working on lattices. --- .../blender/editors/armature/meshlaplacian.c | 2 +- .../blender/editors/armature/meshlaplacian.h | 2 +- source/blender/editors/include/ED_armature.h | 2 +- source/blender/makesdna/DNA_modifier_types.h | 2 +- .../blender/modifiers/intern/MOD_meshdeform.c | 18 +++++------------- 5 files changed, 9 insertions(+), 17 deletions(-) diff --git a/source/blender/editors/armature/meshlaplacian.c b/source/blender/editors/armature/meshlaplacian.c index 546a15467c4..0325232e5b9 100644 --- a/source/blender/editors/armature/meshlaplacian.c +++ b/source/blender/editors/armature/meshlaplacian.c @@ -1922,7 +1922,7 @@ static void heat_weighting_bind(Scene *scene, DerivedMesh *dm, MeshDeformModifie } #endif -void mesh_deform_bind(Scene *scene, DerivedMesh *dm, MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]) +void mesh_deform_bind(Scene *scene, MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]) { MeshDeformBind mdb; MVert *mvert; diff --git a/source/blender/editors/armature/meshlaplacian.h b/source/blender/editors/armature/meshlaplacian.h index 4e5fbec9c82..640eb33c945 100644 --- a/source/blender/editors/armature/meshlaplacian.h +++ b/source/blender/editors/armature/meshlaplacian.h @@ -78,7 +78,7 @@ void rigid_deform_end(int cancel); /* Harmonic Coordinates */ -void mesh_deform_bind(struct Scene *scene, struct DerivedMesh *dm, +void mesh_deform_bind(struct Scene *scene, struct MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]); diff --git a/source/blender/editors/include/ED_armature.h b/source/blender/editors/include/ED_armature.h index 67387dc2e08..d2d1e2a1d69 100644 --- a/source/blender/editors/include/ED_armature.h +++ b/source/blender/editors/include/ED_armature.h @@ -165,7 +165,7 @@ void BDR_drawSketch(const struct bContext *vc); int BDR_drawSketchNames(struct ViewContext *vc); /* meshlaplacian.c */ -void mesh_deform_bind(struct Scene *scene, struct DerivedMesh *dm, +void mesh_deform_bind(struct Scene *scene, struct MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]); diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index 528f06882a2..722adba1136 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -538,7 +538,7 @@ typedef struct MeshDeformModifierData { float *bindcos; /* deprecated storage of cage coords */ /* runtime */ - void (*bindfunc)(struct Scene *scene, struct DerivedMesh *dm, + void (*bindfunc)(struct Scene *scene, struct MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]); } MeshDeformModifierData; diff --git a/source/blender/modifiers/intern/MOD_meshdeform.c b/source/blender/modifiers/intern/MOD_meshdeform.c index 623f4a5ddeb..9ae86ac4ec0 100644 --- a/source/blender/modifiers/intern/MOD_meshdeform.c +++ b/source/blender/modifiers/intern/MOD_meshdeform.c @@ -227,7 +227,7 @@ static void meshdeformModifier_do( /* progress bar redraw can make this recursive .. */ if(!recursive) { recursive = 1; - mmd->bindfunc(md->scene, dm, mmd, (float*)vertexCos, numVerts, cagemat); + mmd->bindfunc(md->scene, mmd, (float*)vertexCos, numVerts, cagemat); recursive = 0; } } @@ -275,7 +275,7 @@ static void meshdeformModifier_do( defgrp_index = defgroup_name_index(ob, mmd->defgrp_name); - if (defgrp_index >= 0) + if(dm && defgrp_index >= 0) dvert= dm->getVertDataArray(dm, CD_MDEFORMVERT); /* do deformation */ @@ -343,14 +343,11 @@ static void deformVerts( { DerivedMesh *dm= get_dm(md->scene, ob, NULL, derivedData, NULL, 0);; - if(!dm) - return; - modifier_vgroup_cache(md, vertexCos); /* if next modifier needs original vertices */ meshdeformModifier_do(md, ob, dm, vertexCos, numVerts); - if(dm != derivedData) + if(dm && dm != derivedData) dm->release(dm); } @@ -358,16 +355,11 @@ static void deformVertsEM( ModifierData *md, Object *ob, struct EditMesh *editData, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts) { - DerivedMesh *dm; - - if(!derivedData && ob->type == OB_MESH) - dm = CDDM_from_editmesh(editData, ob->data); - else - dm = derivedData; + DerivedMesh *dm= get_dm(md->scene, ob, NULL, derivedData, NULL, 0);; meshdeformModifier_do(md, ob, dm, vertexCos, numVerts); - if(dm != derivedData) + if(dm && dm != derivedData) dm->release(dm); } From 5bacd2df29855e0628d8a48c1f0321b8d1c429ac Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 5 Jul 2010 11:52:54 +0000 Subject: [PATCH 321/674] Fix #22666: linked data lights lag during transform in GLSL mode. Actually a depsgraph issue, transforming objects was incorrectly tagging their data for recalculation. --- source/blender/blenkernel/intern/depsgraph.c | 4 +++- source/blender/editors/transform/transform_generics.c | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index c1223a5c37f..0dbdd802ff6 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -2303,8 +2303,10 @@ void DAG_id_flush_update(ID *id, short flag) id= ob->data; /* no point in trying in this cases */ - if(!id || id->us <= 1) + if(id && id->us <= 1) { + dag_editors_update(bmain, id); id= NULL; + } } } diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 80973918673..98ecb07660f 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -810,7 +810,7 @@ void recalcData(TransInfo *t) /* sets recalc flags fully, instead of flushing existing ones * otherwise proxies don't function correctly */ - DAG_id_flush_update(&ob->id, OB_RECALC_ALL); // XXX: OB_RECALC_OB only? + DAG_id_flush_update(&ob->id, OB_RECALC_OB); } } From efeb8148c8dc03a08121767492e34fa31c70d72b Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 5 Jul 2010 12:20:49 +0000 Subject: [PATCH 322/674] Fix #22213: applying deform modifier in front of multires modifier crashes, should not do multires reshape in this case, but just regular apply. --- source/blender/blenkernel/BKE_multires.h | 3 ++- source/blender/blenkernel/intern/multires.c | 7 +++++-- source/blender/editors/object/object_modifier.c | 11 +++++++---- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/source/blender/blenkernel/BKE_multires.h b/source/blender/blenkernel/BKE_multires.h index e8bbb58a895..39fc795e6ff 100644 --- a/source/blender/blenkernel/BKE_multires.h +++ b/source/blender/blenkernel/BKE_multires.h @@ -47,7 +47,8 @@ void multires_force_external_reload(struct Object *ob); struct DerivedMesh *multires_dm_create_from_derived(struct MultiresModifierData*, int local_mmd, struct DerivedMesh*, struct Object *, int, int); -struct MultiresModifierData *find_multires_modifier(struct Scene *scene, struct Object *ob); +struct MultiresModifierData *find_multires_modifier_before(struct Scene *scene, + struct ModifierData *lastmd); struct DerivedMesh *get_multires_dm(struct Scene *scene, struct MultiresModifierData *mmd, struct Object *ob); void multiresModifier_join(struct Object *); diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index 76d82889cda..56d517f1e13 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -75,11 +75,11 @@ DerivedMesh *get_multires_dm(Scene *scene, MultiresModifierData *mmd, Object *ob return dm; } -MultiresModifierData *find_multires_modifier(Scene *scene, Object *ob) +MultiresModifierData *find_multires_modifier_before(Scene *scene, ModifierData *lastmd) { ModifierData *md; - for(md = ob->modifiers.first; md; md = md->next) { + for(md = lastmd; md; md = md->prev) { if(md->type == eModifierType_Multires) { if (modifier_isEnabled(scene, md, eModifierMode_Realtime)) return (MultiresModifierData*)md; @@ -249,6 +249,9 @@ int multiresModifier_reshapeFromDeformMod(Scene *scene, MultiresModifierData *mm int numVerts, result; float (*deformedVerts)[3]; + if(multires_get_level(ob, mmd, 0) == 0) + return 0; + /* Create DerivedMesh for deformation modifier */ dm = get_multires_dm(scene, mmd, ob); numVerts= dm->getNumVerts(dm); diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index ec142d23a1f..0661b675668 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -399,7 +399,7 @@ static int modifier_apply_obdata(ReportList *reports, Scene *scene, Object *ob, if (ob->type==OB_MESH) { DerivedMesh *dm; Mesh *me = ob->data; - MultiresModifierData *mmd= find_multires_modifier(scene, ob); + MultiresModifierData *mmd= find_multires_modifier_before(scene, md); if( me->key) { BKE_report(reports, RPT_ERROR, "Modifier cannot be applied to Mesh with Shape Keys"); @@ -412,12 +412,15 @@ static int modifier_apply_obdata(ReportList *reports, Scene *scene, Object *ob, if(md->type == eModifierType_Multires) multires_force_update(ob); - if (mmd && mti->type==eModifierTypeType_OnlyDeform) { - multiresModifier_reshapeFromDeformMod (scene, mmd, ob, md); + if (mmd && mmd->totlvl && mti->type==eModifierTypeType_OnlyDeform) { + if(!multiresModifier_reshapeFromDeformMod (scene, mmd, ob, md)) { + BKE_report(reports, RPT_ERROR, "Multires modifier returned error, skipping apply"); + return 0; + } } else { dm = mesh_create_derived_for_modifier(scene, ob, md); if (!dm) { - BKE_report(reports, RPT_ERROR, "Modifier is returned error, skipping apply"); + BKE_report(reports, RPT_ERROR, "Modifier returned error, skipping apply"); return 0; } From feefb4d2d25a1e09faaebadf53151ce8810eca04 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 5 Jul 2010 12:52:47 +0000 Subject: [PATCH 323/674] Fix #22694: rendering exits editmode. Problem was due to incorrect fix for bug #20091 in revision 24989, crash when rendering in metaball editmode. --- source/blender/editors/metaball/mball_edit.c | 8 ++++---- source/blender/editors/render/render_internal.c | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/source/blender/editors/metaball/mball_edit.c b/source/blender/editors/metaball/mball_edit.c index d937b717ee1..11534f57f75 100644 --- a/source/blender/editors/metaball/mball_edit.c +++ b/source/blender/editors/metaball/mball_edit.c @@ -60,6 +60,10 @@ /* This function is used to free all MetaElems from MetaBall */ void free_editMball(Object *obedit) { + MetaBall *mb = (MetaBall*)obedit->data; + + mb->editelems= NULL; + mb->lastelem= NULL; } /* This function is called, when MetaBall Object is @@ -84,10 +88,6 @@ void make_editMball(Object *obedit) * from object->data->edit_elems to object->data->elems. */ void load_editMball(Object *obedit) { - MetaBall *mb = (MetaBall*)obedit->data; - - mb->editelems= NULL; - mb->lastelem= NULL; } /* Add metaelem primitive to metaball object (which is in edit mode) */ diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c index 8f4b02b8d64..7110c3aa7a7 100644 --- a/source/blender/editors/render/render_internal.c +++ b/source/blender/editors/render/render_internal.c @@ -637,7 +637,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event) multires_force_render_update(CTX_data_active_object(C)); /* get editmode results */ - ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO); /* 0 = does not exit editmode */ + ED_object_exit_editmode(C, 0); /* 0 = does not exit editmode */ // store spare // get view3d layer, local layer, make this nice api call to render From d89d1aa09810a95fe2968a76393a102fabe8a146 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 5 Jul 2010 13:14:14 +0000 Subject: [PATCH 324/674] Fix #21992: linked objects could be in edit/particle/paint/sculpt mode, not allowed, so disable mode on append and don't enable it on load. --- source/blender/blenloader/intern/readfile.c | 1 + source/blender/editors/util/ed_util.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index d078b83c653..31627141235 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -12136,6 +12136,7 @@ static void append_named_part(const bContext *C, Main *mainl, FileData *fd, char ob->lay = scene->lay; } } + ob->mode= 0; base->lay= ob->lay; base->object= ob; ob->id.us++; diff --git a/source/blender/editors/util/ed_util.c b/source/blender/editors/util/ed_util.c index 0c9ce9648c7..fbf2051f962 100644 --- a/source/blender/editors/util/ed_util.c +++ b/source/blender/editors/util/ed_util.c @@ -56,6 +56,7 @@ void ED_editors_init(bContext *C) Main *bmain= CTX_data_main(C); Scene *sce= CTX_data_scene(C); Object *ob, *obact= (sce && sce->basact)? sce->basact->object: NULL; + ID *data; /* toggle on modes for objects that were saved with these enabled. for e.g. linked objects we have to ensure that they are actually the @@ -65,8 +66,9 @@ void ED_editors_init(bContext *C) if(mode && (mode != OB_MODE_POSE)) { ob->mode= 0; + data= ob->data; - if(ob == obact) + if(ob == obact && !ob->id.lib && !(data && data->lib)) ED_object_toggle_modes(C, mode); } } From b1cdc52b30f709848c7f30eb077d6d5c20c43428 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 5 Jul 2010 14:29:16 +0000 Subject: [PATCH 325/674] Color Balance Node changes from sequencer applied to compositor mostly noticable is how the lift works. Before & After, http://www.graphicall.org/ftp/ideasman42/color_balance_before_after.png even with lower values these kinds of errors can be seen. --- source/blender/blenkernel/intern/sequencer.c | 7 ++--- source/blender/makesdna/DNA_node_types.h | 3 ++ source/blender/makesdna/DNA_sequence_types.h | 4 +-- .../nodes/intern/CMP_nodes/CMP_colorbalance.c | 30 ++++++++++++------- 4 files changed, 27 insertions(+), 17 deletions(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 2f25c24272e..fa2c11f3395 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -1525,13 +1525,12 @@ static StripColorBalance calc_cb(StripColorBalance * cb_) return cb; } -/* compiler should inline */ -MINLINE float color_balance_fl(float v, float lift, float gain, float gamma, float mul) +/* pow(p[c] * cb.gain[c] + cb.lift[c], cb.gamma[c]) * mul;*/ +MINLINE float color_balance_fl(const float v, const float lift, const float gain, const float gamma, const float mul) { - return pow(pow(v * gain, lift), gamma) * mul; + return powf(powf(v * gain, lift), gamma) * mul; } - static void make_cb_table_byte(float lift, float gain, float gamma, unsigned char * table, float mul) { diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h index 9cbd304a86d..872d69f3148 100644 --- a/source/blender/makesdna/DNA_node_types.h +++ b/source/blender/makesdna/DNA_node_types.h @@ -311,6 +311,9 @@ typedef struct NodeColorBalance { float lift[3]; float gamma[3]; float gain[3]; + + /* temp storage for inverted lift */ + float lift_lgg[3]; } NodeColorBalance; typedef struct NodeColorspill { diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h index 4530e91910b..f5ca32c6b32 100644 --- a/source/blender/makesdna/DNA_sequence_types.h +++ b/source/blender/makesdna/DNA_sequence_types.h @@ -72,8 +72,8 @@ typedef struct StripColorBalance { float gain[3]; int flag; int pad; - float exposure; - float saturation; + // float exposure; + // float saturation; } StripColorBalance; typedef struct StripProxy { diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_colorbalance.c b/source/blender/nodes/intern/CMP_nodes/CMP_colorbalance.c index b40b27e06ee..f2e5815dfeb 100644 --- a/source/blender/nodes/intern/CMP_nodes/CMP_colorbalance.c +++ b/source/blender/nodes/intern/CMP_nodes/CMP_colorbalance.c @@ -56,8 +56,8 @@ DO_INLINE float colorbalance_cdl(float in, float offset, float power, float slop DO_INLINE float colorbalance_lgg(float in, float lift, float gamma, float gain) { - float x = gain*(in+(lift-1)*(1-in)); - + float x= powf(in * gain, lift); + /* prevent NaN */ if (x < 0.f) x = 0.f; @@ -88,10 +88,10 @@ static void do_colorbalance_cdl_fac(bNode *node, float* out, float *in, float *f static void do_colorbalance_lgg(bNode *node, float* out, float *in) { NodeColorBalance *n= (NodeColorBalance *)node->storage; - - out[0] = colorbalance_lgg(in[0], n->lift[0], n->gamma[0], n->gain[0]); - out[1] = colorbalance_lgg(in[1], n->lift[1], n->gamma[1], n->gain[1]); - out[2] = colorbalance_lgg(in[2], n->lift[2], n->gamma[2], n->gain[2]); + + out[0] = colorbalance_lgg(in[0], n->lift_lgg[0], n->gamma[0], n->gain[0]); + out[1] = colorbalance_lgg(in[1], n->lift_lgg[1], n->gamma[1], n->gain[1]); + out[2] = colorbalance_lgg(in[2], n->lift_lgg[2], n->gamma[2], n->gain[2]); out[3] = in[3]; } @@ -99,10 +99,10 @@ static void do_colorbalance_lgg_fac(bNode *node, float* out, float *in, float *f { NodeColorBalance *n= (NodeColorBalance *)node->storage; const float mfac= 1.0f - *fac; - - out[0] = mfac*in[0] + *fac * colorbalance_lgg(in[0], n->lift[0], n->gamma[0], n->gain[0]); - out[1] = mfac*in[1] + *fac * colorbalance_lgg(in[1], n->lift[1], n->gamma[1], n->gain[1]); - out[2] = mfac*in[2] + *fac * colorbalance_lgg(in[2], n->lift[2], n->gamma[2], n->gain[2]); + + out[0] = mfac*in[0] + *fac * colorbalance_lgg(in[0], n->lift_lgg[0], n->gamma[0], n->gain[0]); + out[1] = mfac*in[1] + *fac * colorbalance_lgg(in[1], n->lift_lgg[1], n->gamma[1], n->gain[1]); + out[2] = mfac*in[2] + *fac * colorbalance_lgg(in[2], n->lift_lgg[2], n->gamma[2], n->gain[2]); out[3] = in[3]; } @@ -119,7 +119,15 @@ static void node_composit_exec_colorbalance(void *data, bNode *node, bNodeStack out[0]->data = pass_on_compbuf(cbuf); return; } - + + { + NodeColorBalance *n= (NodeColorBalance *)node->storage; + int c; + for (c = 0; c < 3; c++) { + n->lift_lgg[c] = 2.0f - pow(n->lift[c], 2); + } + } + if (cbuf) { stackbuf= alloc_compbuf(cbuf->x, cbuf->y, CB_RGBA, 1); /* create output based on image input */ From 63335f2d109ba65402a57378ca05aa9b74f0ded5 Mon Sep 17 00:00:00 2001 From: Diego Borghetti Date: Mon, 5 Jul 2010 14:32:15 +0000 Subject: [PATCH 326/674] Fix Makefile for new getUserDir system. --- intern/ghost/intern/Makefile | 2 +- source/Makefile | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/intern/ghost/intern/Makefile b/intern/ghost/intern/Makefile index 23d27e61590..2f5e088f4fe 100644 --- a/intern/ghost/intern/Makefile +++ b/intern/ghost/intern/Makefile @@ -38,7 +38,7 @@ CCSRCS += GHOST_EventManager.cpp GHOST_EventPrinter.cpp GHOST_WindowManager.cpp CCSRCS += GHOST_ISystem.cpp GHOST_ModifierKeys.cpp GHOST_TimerManager.cpp CCSRCS += GHOST_Rect.cpp GHOST_DisplayManager.cpp GHOST_C-api.cpp CCSRCS += GHOST_CallbackEventConsumer.cpp -CCSRCS += GHOST_NDOFManager.cpp +CCSRCS += GHOST_NDOFManager.cpp GHOST_Path-api.cpp ifeq ($(OS),$(findstring $(OS), "darwin")) ifeq ($(WITH_COCOA), true) diff --git a/source/Makefile b/source/Makefile index 2ab5b4faeab..12e47ba5863 100644 --- a/source/Makefile +++ b/source/Makefile @@ -120,6 +120,7 @@ COMLIB += $(NAN_BSP)/lib/$(DEBUG_DIR)libbsp.a COMLIB += $(NAN_BOOLOP)/lib/$(DEBUG_DIR)libboolop.a COMLIB += $(NAN_MOTO)/lib/$(DEBUG_DIR)libmoto.a COMLIB += $(NAN_DECIMATION)/lib/$(DEBUG_DIR)libdecimation.a +COMLIB += $(NAN_GHOST)/lib/$(DEBUG_DIR)libghost.a ifeq ($(WITH_FFMPEG),true) COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_ffmpeg.a From aea7ea5b30cc5434f0b747ead8d2947d91a28964 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 5 Jul 2010 14:53:11 +0000 Subject: [PATCH 327/674] recent commit broke invert option for sequencer lift. --- source/blender/blenkernel/intern/sequencer.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index fa2c11f3395..a4c1527c3c5 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -1498,10 +1498,11 @@ static StripColorBalance calc_cb(StripColorBalance * cb_) } if(cb.flag & SEQ_COLOR_BALANCE_INVERSE_LIFT) { - negate_v3(cb.lift); + for (c = 0; c < 3; c++) { + cb.lift[c] = 2.0f - cb.lift[c]; + } } - if (cb.flag & SEQ_COLOR_BALANCE_INVERSE_GAIN) { for (c = 0; c < 3; c++) { if (cb.gain[c] != 0.0) { From deb7402299a2ddbbbb2f5f52b744caacb49e0d41 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 5 Jul 2010 15:52:25 +0000 Subject: [PATCH 328/674] option for color wheel widget to make it easier to select values closer to white, enable for color balance. --- release/scripts/ui/space_sequencer.py | 6 +++--- source/blender/editors/include/UI_interface.h | 3 ++- .../blender/editors/interface/interface_handlers.c | 5 ++++- .../editors/interface/interface_templates.c | 5 ++++- .../blender/editors/interface/interface_widgets.c | 8 +++++++- source/blender/editors/space_node/drawnode.c | 14 +++++++------- source/blender/makesrna/intern/rna_ui_api.c | 1 + 7 files changed, 28 insertions(+), 14 deletions(-) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 03e692693d8..c1b042f0718 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -749,15 +749,15 @@ class SEQUENCER_PT_filter(SequencerButtonsPanel): row = layout.row() row.active = strip.use_color_balance col = row.column() - col.template_color_wheel(strip.color_balance, "lift", value_slider=False) + col.template_color_wheel(strip.color_balance, "lift", value_slider=False, cubic=True) col.row().prop(strip.color_balance, "lift") col.prop(strip.color_balance, "inverse_lift", text="Inverse") col = row.column() - col.template_color_wheel(strip.color_balance, "gamma", value_slider=False, lock_luminosity=True) + col.template_color_wheel(strip.color_balance, "gamma", value_slider=False, lock_luminosity=True, cubic=True) col.row().prop(strip.color_balance, "gamma") col.prop(strip.color_balance, "inverse_gamma", text="Inverse") col = row.column() - col.template_color_wheel(strip.color_balance, "gain", value_slider=False, lock_luminosity=True) + col.template_color_wheel(strip.color_balance, "gain", value_slider=False, lock_luminosity=True, cubic=True) col.row().prop(strip.color_balance, "gain") col.prop(strip.color_balance, "inverse_gain", text="Inverse") diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index 00a7c5c9f48..93e91d02599 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -153,6 +153,7 @@ typedef struct uiLayout uiLayout; #define UI_BUT_NO_TOOLTIP (1<<27) #define UI_BUT_VEC_SIZE_LOCK (1<<28) /* used to flag if color hsv-circle should keep luminance */ +#define UI_BUT_COLOR_CUBIC (1<<29) /* cubic saturation for the color wheel */ #define UI_PANEL_WIDTH 340 #define UI_COMPACT_PANEL_WIDTH 160 @@ -685,7 +686,7 @@ void uiTemplateHistogram(uiLayout *layout, struct PointerRNA *ptr, char *propnam void uiTemplateWaveform(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand); void uiTemplateVectorscope(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand); void uiTemplateCurveMapping(uiLayout *layout, struct PointerRNA *ptr, char *propname, int type, int levels, int brush); -void uiTemplateColorWheel(uiLayout *layout, struct PointerRNA *ptr, char *propname, int value_slider, int lock, int lock_luminosity); +void uiTemplateColorWheel(uiLayout *layout, struct PointerRNA *ptr, char *propname, int value_slider, int lock, int lock_luminosity, int cubic); void uiTemplateTriColorSet(uiLayout *layout, struct PointerRNA *ptr, char *propname); void uiTemplateLayers(uiLayout *layout, struct PointerRNA *ptr, char *propname, PointerRNA *used_ptr, char *used_propname, int active_layer); diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 6eb96b32efe..a19113d4b27 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -3073,7 +3073,10 @@ static int ui_numedit_but_HSVCIRCLE(uiBut *but, uiHandleButtonData *data, int mx } ui_hsvcircle_vals_from_pos(hsv, hsv+1, &rect, (float)mx, (float)my); - + + if(but->flag & UI_BUT_COLOR_CUBIC) + hsv[1]= 1.0f - sqrt3f(1.0f - hsv[1]); + hsv_to_rgb(hsv[0], hsv[1], hsv[2], rgb, rgb+1, rgb+2); if((but->flag & UI_BUT_VEC_SIZE_LOCK) && (rgb[0] || rgb[1] || rgb[2])) { diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 59a67f9a541..f253e8c9fd5 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -1953,7 +1953,7 @@ void uiTemplateCurveMapping(uiLayout *layout, PointerRNA *ptr, char *propname, i #define WHEEL_SIZE 100 -void uiTemplateColorWheel(uiLayout *layout, PointerRNA *ptr, char *propname, int value_slider, int lock, int lock_luminosity) +void uiTemplateColorWheel(uiLayout *layout, PointerRNA *ptr, char *propname, int value_slider, int lock, int lock_luminosity, int cubic) { PropertyRNA *prop= RNA_struct_find_property(ptr, propname); uiBlock *block= uiLayoutGetBlock(layout); @@ -1984,6 +1984,9 @@ void uiTemplateColorWheel(uiLayout *layout, PointerRNA *ptr, char *propname, int but->a2= len_v3(color); } + if(cubic) + but->flag |= UI_BUT_COLOR_CUBIC; + uiItemS(row); if (value_slider) diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index 5bebf71167d..d2860adbf50 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -1675,6 +1675,7 @@ void ui_draw_but_HSVCIRCLE(uiBut *but, uiWidgetColors *wcol, rcti *rect) ui_hsvcircle_vals_from_pos(hsv, hsv+1, rect, centx + co*radius, centy + si*radius); CLAMP(hsv[2], 0.0f, 1.0f); /* for display only */ + hsv_to_rgb(hsv[0], hsv[1], hsv[2], col, col+1, col+2); glColor3fv(col); glVertex2f( centx + co*radius, centy + si*radius); @@ -1696,7 +1697,12 @@ void ui_draw_but_HSVCIRCLE(uiBut *but, uiWidgetColors *wcol, rcti *rect) /* cursor */ ang= 2.0f*M_PI*hsvo[0] + 0.5f*M_PI; - radius= hsvo[1]*radius; + + if(but->flag & UI_BUT_COLOR_CUBIC) + radius= (1.0f - pow(1.0f - hsvo[1], 3.0f)) *radius; + else + radius= hsvo[1] * radius; + ui_hsv_cursor(centx + cos(-ang)*radius, centy + sin(-ang)*radius); } diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c index 7b4584da3ab..2d111b731ad 100644 --- a/source/blender/editors/space_node/drawnode.c +++ b/source/blender/editors/space_node/drawnode.c @@ -107,7 +107,7 @@ static void node_buts_rgb(uiLayout *layout, bContext *C, PointerRNA *ptr) RNA_property_collection_lookup_int(ptr, prop, 0, &sockptr); col = uiLayoutColumn(layout, 0); - uiTemplateColorWheel(col, &sockptr, "default_value", 1, 0, 0); + uiTemplateColorWheel(col, &sockptr, "default_value", 1, 0, 0, 0); uiItemR(col, &sockptr, "default_value", 0, "", 0); } @@ -947,17 +947,17 @@ static void node_composit_buts_colorbalance(uiLayout *layout, bContext *C, Point split = uiLayoutSplit(layout, 0, 0); col = uiLayoutColumn(split, 0); - uiTemplateColorWheel(col, ptr, "lift", 1, 1, 0); + uiTemplateColorWheel(col, ptr, "lift", 1, 1, 0, 1); row = uiLayoutRow(col, 0); uiItemR(row, ptr, "lift", 0, NULL, 0); col = uiLayoutColumn(split, 0); - uiTemplateColorWheel(col, ptr, "gamma", 1, 1, 1); + uiTemplateColorWheel(col, ptr, "gamma", 1, 1, 1, 1); row = uiLayoutRow(col, 0); uiItemR(row, ptr, "gamma", 0, NULL, 0); col = uiLayoutColumn(split, 0); - uiTemplateColorWheel(col, ptr, "gain", 1, 1, 1); + uiTemplateColorWheel(col, ptr, "gain", 1, 1, 1, 1); row = uiLayoutRow(col, 0); uiItemR(row, ptr, "gain", 0, NULL, 0); @@ -965,17 +965,17 @@ static void node_composit_buts_colorbalance(uiLayout *layout, bContext *C, Point split = uiLayoutSplit(layout, 0, 0); col = uiLayoutColumn(split, 0); - uiTemplateColorWheel(col, ptr, "offset", 1, 1, 0); + uiTemplateColorWheel(col, ptr, "offset", 1, 1, 0, 1); row = uiLayoutRow(col, 0); uiItemR(row, ptr, "offset", 0, NULL, 0); col = uiLayoutColumn(split, 0); - uiTemplateColorWheel(col, ptr, "power", 1, 1, 0); + uiTemplateColorWheel(col, ptr, "power", 1, 1, 0, 1); row = uiLayoutRow(col, 0); uiItemR(row, ptr, "power", 0, NULL, 0); col = uiLayoutColumn(split, 0); - uiTemplateColorWheel(col, ptr, "slope", 1, 1, 0); + uiTemplateColorWheel(col, ptr, "slope", 1, 1, 0, 1); row = uiLayoutRow(col, 0); uiItemR(row, ptr, "slope", 0, NULL, 0); } diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c index 6cf0768b192..1c751433e31 100644 --- a/source/blender/makesrna/intern/rna_ui_api.c +++ b/source/blender/makesrna/intern/rna_ui_api.c @@ -361,6 +361,7 @@ void RNA_api_ui_layout(StructRNA *srna) RNA_def_boolean(func, "value_slider", 0, "", "Display the value slider to the right of the color wheel"); RNA_def_boolean(func, "lock", 0, "", "Lock the color wheel display to value 1.0 regardless of actual color"); RNA_def_boolean(func, "lock_luminosity", 0, "", "Keep the color at its original vector length"); + RNA_def_boolean(func, "cubic", 1, "", "Cubic saturation for picking values close to white"); func= RNA_def_function(srna, "template_triColorSet", "uiTemplateTriColorSet"); api_ui_item_rna_common(func); From e738c731c2f3d3dca58656715fcaa724e0ed27b5 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 5 Jul 2010 16:20:52 +0000 Subject: [PATCH 329/674] Fix #21917: add object operator has 30 layers, now the layer property has just 20 and the local view layers are added afterwards. --- source/blender/editors/object/object_add.c | 38 ++++++++++++---------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 7205c8adf4b..757c167c496 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -183,7 +183,7 @@ void ED_object_add_generic_props(wmOperatorType *ot, int do_editmode) RNA_def_float_vector(ot->srna, "location", 3, NULL, -FLT_MAX, FLT_MAX, "Location", "Location for the newly added object.", -FLT_MAX, FLT_MAX); RNA_def_float_rotation(ot->srna, "rotation", 3, NULL, -FLT_MAX, FLT_MAX, "Rotation", "Rotation for the newly added object", -FLT_MAX, FLT_MAX); - prop = RNA_def_boolean_layer_member(ot->srna, "layer", 32, NULL, "Layer", ""); + prop = RNA_def_boolean_layer_member(ot->srna, "layer", 20, NULL, "Layer", ""); RNA_def_property_flag(prop, PROP_HIDDEN); } @@ -193,32 +193,28 @@ static void object_add_generic_invoke_options(bContext *C, wmOperator *op) if (!RNA_property_is_set(op->ptr, "enter_editmode")) RNA_boolean_set(op->ptr, "enter_editmode", U.flag & USER_ADD_EDITMODE); - if (!RNA_property_is_set(op->ptr, "location")) { + if(!RNA_property_is_set(op->ptr, "location")) { float loc[3]; ED_object_location_from_view(C, loc); RNA_float_set_array(op->ptr, "location", loc); } - if (!RNA_property_is_set(op->ptr, "layer")) { + if(!RNA_property_is_set(op->ptr, "layer")) { View3D *v3d = CTX_wm_view3d(C); Scene *scene = CTX_data_scene(C); - int a, values[32], layer; + int a, values[20], layer; - if (v3d) { - if (v3d->localvd) { - layer = v3d->layact + v3d->lay; - for(a=0; a<32; a++) - values[a]= (layer & (1<scenelock)?scene->layact:v3d->layact; + if(v3d) { + layer = (v3d->scenelock && !v3d->localvd)? scene->layact: v3d->layact; - for(a=0; a<32; a++) - values[a]= (layer & (1<layact; - for(a=0; a<32; a++) + + for(a=0; a<20; a++) values[a]= (layer & (1<ptr, "layer")) { RNA_boolean_get_array(op->ptr, "layer", layer_values); - for(a=0; a<32; a++) { + for(a=0; a<20; a++) { if(layer_values[a]) *layer |= (1 << a); else @@ -258,6 +255,11 @@ int ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, floa *layer = scene->layact; } + /* in local view we additionally add local view layers, + not part of operator properties */ + if(v3d && v3d->localvd) + *layer |= v3d->lay; + if (RNA_property_is_set(op->ptr, "view_align")) view_align = RNA_boolean_get(op->ptr, "view_align"); else From 59b8f8d18c8d8f4a29c1dc70a4faa707118bd632 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 5 Jul 2010 16:42:42 +0000 Subject: [PATCH 330/674] Fix #21201: double click didn't use the original mouse position, now it stores it and sets it later when the double click event is handled. Decided to not reuse prevx but made prevclickx, because there may be multiple mousemoves between the two clicks, and prevx is already used for some other tricky things. --- source/blender/windowmanager/WM_types.h | 1 + source/blender/windowmanager/intern/wm_event_system.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index 927ea00ae37..c84a5e64889 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -326,6 +326,7 @@ typedef struct wmEvent { short prevval; short prevx, prevy; double prevclicktime; + short prevclickx, prevclicky; /* modifier states */ short shift, ctrl, alt, oskey; /* oskey is apple or windowskey, value denotes order of pressed */ diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 8355684ac75..b01d2b27364 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1433,6 +1433,8 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers) /* test for double click first */ if ((PIL_check_seconds_timer() - win->eventstate->prevclicktime) * 1000 < U.dbl_click_time) { event->val = KM_DBL_CLICK; + event->x = win->eventstate->prevclickx; + event->y = win->eventstate->prevclicky; action |= wm_handlers_do(C, event, handlers); } @@ -1719,6 +1721,8 @@ void wm_event_do_handlers(bContext *C) /* set click time on first click (press -> release) */ if (win->eventstate->prevval == KM_PRESS && event->val == KM_RELEASE) { win->eventstate->prevclicktime = PIL_check_seconds_timer(); + win->eventstate->prevclickx = event->x; + win->eventstate->prevclicky = event->y; } } else { /* reset click time if event type not the same */ @@ -1731,6 +1735,8 @@ void wm_event_do_handlers(bContext *C) win->eventstate->prevtype = event->type; win->eventstate->prevval = event->val; win->eventstate->prevclicktime = PIL_check_seconds_timer(); + win->eventstate->prevclickx = event->x; + win->eventstate->prevclicky = event->y; } else { /* reset if not */ win->eventstate->prevtype = -1; win->eventstate->prevval = 0; From 78adaa6bc77e8e0f0f8670693b7ffc0b5ad828bc Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Mon, 5 Jul 2010 19:59:27 +0000 Subject: [PATCH 331/674] * use blender_decimal_version() in places where '.blender/' was still being used * simplify the NSIS file creation (and add those files back). NOTE: The installer is still pretty much WIP, tomorrow more improvements. --- release/windows/installer/00.checked.bmp | Bin 0 -> 2610 bytes release/windows/installer/00.header.bmp | Bin 0 -> 25818 bytes release/windows/installer/00.installer.ico | Bin 0 -> 25214 bytes release/windows/installer/00.sconsblender.nsi | 418 +++++++++++++++++ .../windows/installer/1100.sconsblender.nsi | 425 ++++++++++++++++++ source/blender/blenlib/intern/path_util.c | 13 +- tools/btools.py | 163 ++----- 7 files changed, 885 insertions(+), 134 deletions(-) create mode 100644 release/windows/installer/00.checked.bmp create mode 100644 release/windows/installer/00.header.bmp create mode 100644 release/windows/installer/00.installer.ico create mode 100644 release/windows/installer/00.sconsblender.nsi create mode 100644 release/windows/installer/1100.sconsblender.nsi diff --git a/release/windows/installer/00.checked.bmp b/release/windows/installer/00.checked.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6c2e98d361c6764b7772e13b84c5ac026e00f577 GIT binary patch literal 2610 zcmeH{J#NB45QQg_6-CYhHdfrzrA9eH`rIK$q2M4CNp2CzbqdN<5iOd7cD(Dyr)f+Q(}?IEvu9+2yrLV7h-;#UTg?h3r^bv3Uz*MI2P39b z6a^Ju1#LdwsN8O8@;agUd`|DnC4H_|wBlT^Y0X)dRC40JEwZYrOI~_#*#rNy2R7do zy(|_u$9%AH(&fP8OiIOPlV}%)+qtkj$NcQTVdNuFkkM}p{vF%LBM}z0?Ic5@o#w7#cSxb{f|w+^Rt+AL3_SmL@(cq@b$xh z|I`G8j}rS$1ZqAWfvlpBkL%JfTyOhNOhEYQ7$JBPX8kl5Pp(U-J+V$*11J}e74Rl>hwP}0p%wtcZ@sa`P%z_zV=@E?fwr< zK=`A?3&aO}cY>ey`ZodP*8*7_`akk~#Xk?7{U0KHi#&fX@C*Lo_Q!T@zHgc}9-IaK RZ3SlSnqSG`r=j=f@&~`{p)>#h literal 0 HcmV?d00001 diff --git a/release/windows/installer/00.header.bmp b/release/windows/installer/00.header.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b631ba73933924c2bfea42197c02c4e2b0fdcf47 GIT binary patch literal 25818 zcmbt-2XtH4mK}e3GD#*qleShSnaoVG(pIuE$)7*-i@zPTN z+i{SN+d4Q#`;-Jc#rYNmfDZ4E^tKUf?Ra(6);Vfd68e;54i$ht>vWAdy2b|7!1$oX zhl!z{i6Je)3Fs!#(hH4|)l2F-cweCYOPLKHve&GSi3o*wC)8S9&$ z8d{hIpCiQQ{Mhp11jFPCm|UJ-S@sb)x3U8EyaW=5i#`x<0+!d-h&?ZdKK9V@6Bt09 zkH#M)@cF9<1h=nxgoKc6%yK3kVr(OG zwh%a(Ch4$MPO!*_ds~Nl+W=B;AA!*bCOb!=Nrth3uJJ*rQSFr+qY?bLzz?8D%aqwO z0UDVmCpm{sEjs~J8>a}SDUW$-7_iI`lQxh!GiDc5IyJO7H@q}IO5$9cSX!D|Spu2F z=PIN~m?MxH7gkpn0j5Jvgf~8$1aWW>kQC(eF;}9&WpUjtRsaK7}A(_*c1o;DMeDMk7V&4Ou#bpzf;Q zfX2DW0dkuJ=lry5e#X5(@GQ&>FV2oE&W$e3L!z*^GtAif`P@L}`q~oUb&NmKuKoax zukwmNNMlF{MH^((I!5f&5n3BeDD=rxWWjgOI_4G+V3D~^EdcfDsT4<8i;mQ(Z^S{T zq0y;>nPpnlH@J;WIO4%u=wyCA-Xa_6Z503yX%`@nN#cYul^~NrIX0kTK&N3J>`MO#Vbcg2TQxj^SQ~$0{Q* z(%j}|qK2wVeY z**6PKj)Tm>`AI>L3o|Yf(JDC8E*GB>d;n3;}#HN|`==WRlNZ2ZUgi z4D53Of!6h98ku|iK|yY!M#MBWIcLLdY=rf58Q{mrm2tRD@M(=`$uOeNXbf&!UV4fn z1VMFHguDD49APh+5Wzy6jYIl6y0{V1Y?JU7`UOexk=ReE#bX7-GEXnTPcIbf=wKj6 z%KRsk$;GJ|ht=gK7q%C6nEIgCFIQsHV}ddT1B*asoCP|5O*#b{XFTL2VOr;yX(d4t znaj{5V{&DYMM9j(B_>WmpCnPAIEl&sCo)Noo5ZUdX$%P&($x;?st2{zL;704X{dJ@ z8yFB_5}bxQ1{@cTphL2Ry1X5qO5I?|+9I^p7JT>g6djw;;ZLc>&w;m0;r!xG+#0_Z z+z73JCjJ)2C#O{I>6Lr>T8H~uM;vV<4p0h^M8^h{jLa_hPjaDx8d(lWG$L??fkpCx zkd-mXG&w!mJ53P}G>M4E!TjVPdB~Sd>nxY$IAhYMNoHV)$yve71~SRXBzp_D2{Km* zBu=uiOqpxX*SRt`Xp)Dkh**CIlOZ94JraVpilDFY!3jQtP#-`qCz)Ee84_yp((XSl zyku#11MD2?^fFkQs6#I`v6gpuzsYH=$9;v*qpNZ1=@;ZO)R9(AO;9qCNy;P(JYr{- z79841nM{^`&p8gC2@Gn;-cnhBTV19}@}De?gdm5Rb!C|(X_7@eFs;m0B5I|Ghq+4f zmZZ$tktH7S`26GoXq;Mst6U`Oy6V&9G6cyqDKNQ2Os+Cnay}WEKg^_;##gE_BxInw zf@4t2n1m+v)lNf=(*O=@oW?o=`qY6GgW*?;S2lqs_+B+Px(H1^F!q>YNvlk#to0G@ z0%MGDm$}(xX>ys!_A+BmKN$isDTNeCjdrL};E;SK^OnqEQjX#^tv%z2W_e!1k`G=A z@P|8Nz0)j*BsHSaBLuF9c)+1I) z=<02B<9HBS+%_-zq{K6)x)06}Pz(b$IR!v0=t1-|3DbBQvVp zJqkv3o-w(w1}QQ%dd(^Kjlm)mIE04`bdQWcIL3{>k(h)IwdMUi;E(})LYBIU0WE{B zV$e`UYBUm@CTNlY9Y_(d5ZqQU#z%p*I$DPv6xj?TxakKd9U;?72~#_n z*}gUkTp>uInog1G1d6dj?OZ#FVk}kDL8f8KMddlTM{iw6@QoDZP#Vbv2^zT?Spw-( zn*I)KrEPU@f?V438AiVpU7j!+Q@ksB$$@&Jhr%QdqNrLtkXG!JNXVvM`m@ z7^p+^y^b+Rja-KgO<8|;8KgL3CZ+ITC z2eHpCJ#RFxg-MpTJzjhxZt;y+*2XQq`*876>2j5RZEArE@$=J8l+PF^po>WnTv4Z) zOO8}$mxC(?1tdr42RLb95BxCR2HHjj+CkvhpmJC{b;AdS;*jC?RbjxZX>U{?oF3SiX$R$@hr8sr#R z-slf*0(Ho}qR*BJ!HtkN@~~zTulVCRv?~h%M^}-ftJt9~;po?h2|Z%LsA?;RNTNU$ zSyVGn=d#uVPHQbVoN)C(V2dj+aynOcBrpCva^V&DC~+~hbrn?OkC+-Zf+(Vn45rlW zU?BPVAamQLfFQztxu;(-G6=DCj0|;-5|psd;B6FK4FNokQGq>5ESwb3&_S<1q`E7D z8@NP@Q7LI0>sQm57a3bVn1xYF{iM?XFj-orNs~4%NP$CS8-AB41gHU#jW5rbU0L!+ zHe^l%k_@j!^-D3xqEfLukj7W&(5A??wdM$D&#`sn**fz3R3e6gK2?FetI)3Y!_i&h z=q`2ilnv@DVQisH#0R*(*|WYsYv~o#ZFp&S+LC&39fF)3Ho%rTEw#+M*1LKeg3;)* z5xn6J3@k^B$KK*`NIedj#~}xX`xOKSS}s=-C+TyrgKbs@$Y=frmH(lRQ90?mw~Y4{lhh zK^f!hDly3-n`K6$H_z|}H{RTTEubE^(VV`5LrY7#MV4-nrdg!vy|N5~JhQho+t!{p z*i(seC5#WUHHW6OPg&5{nct^m^md8t>LREVbrIBqIvne7$NvubZQu}3e;d0{Z(0M5 z6Yd^xIAp3~s2(y^51C=f1;I0W4l_=&C)3SHb|a3ZFbIy6EU<@y9wF`_Z%IZNP%zue zEo}$cSkkJHZFpl;8pfjP_%KydG0uV53zZv+##r%YX0(qwr~tsIvS5`WRjRKt8mB14 zA)`8j#2-wK1AZD8Sk}LRMy|$m1Wpk zb6uw9#pz*u!Ru@o8POVYd}y*y2^#YlL`Vo>91QODt@nR2ft=D`M=!MX!Hchs4k(E_ zQw@?yGOeV{diX|oKV~73C3GNB1cyYawQ<-cV}-UhWEjLDC6-cD$6-HVB#9HZ4i1n4 z8u-tF_OZdvaaT7EPI`1;Pq3&oh6Np(sN6PYn;z?(8nqCIND(I-@YpmIH9L&@HKrsA5SSpMb^)1Hr$+UB1Kk!+dNlf!Occ<`a>KV>z|k! zlFUs{%`K_smNat{wS$_do1gZzM zWHp-^oav1-SJ7Ydnp1u|o-5Kd18EE#-Vk!dAg?G$F`)Vu5@M)(WT<-#m>Qm#8>WfzU zi=%m)Fd131f)nu7;s%cHYD-&zwWDZZX4Gkt$@4B(KmMjR>7Y`4Z){M9(?Bx5Ik&YP zrvYPwdN2vL@zRJxgVXAgzpH-qbjI<3l*UzPf}zeaO(v-!kdx#YHI1_ZTn~ zG2t}v9Pe6*nRY0@H(LNLVNuNF_a&BzkoOYrl|Prg&NG9SzyF6Dcyt-nZU-bnjzVipD` z>6F#wg{MdV-M#H0K=y_I9rM{=<9*)7@A-Su?DP2kaHcr=Q+`mEa{*767iMao9EjWX zw*${dKk>l7R8_>Rt}KGX+$(>=C>aC*dyFT1VqCO?jA;!^k>;hMNt(4}_# zEc?>Wqj&yQ9DMZcKU-Ox#hKQQ;*{fm5_H=35Pas+yW8-)pcC4Q_^W9r{}U(5%OT>M zAR3tzxl4SxZ1X#HXsQQ$$z)3z;2X`&DNbD-KEln))(d=0h6wGAhn zFIndP6Xz^1OlxbOR40605xY~GdDd;F-vxg})vj!KW0sO$!C#hg?2iJ!m1n2^bIzqd zfB4lu^c@6^II}!OMawFavvsd zY6Nc33U1p9!}xJr6Q{{?FY>2oAAI!>aQA1Y|BLSkI*<4N0Yo*RYl!{)Z}8)(C;k-T zuZ-XIVDInqBTeZiaVhAQKgAUohb!LblwwqtY6#UguSFGT^oKPsMW>tDQe!=HhK*0n zKr`YS1gL5D&Vt!d$He^elLZ@T{PW0#RE6LH;u?aeKxE^b!bhjauuYl%{eS0w0dHf! z_?xoKbNH3x)tRLipF9Z?@cB~8Ga#7M&_CwqKm6t&TiOe81aF!0*oq_G8s zVK0B$Q4$Ut$otTVt}zwY;g6QgGv%?{VHNq)ylcPWr>Q0Juxl&??IjM2Zt>%|CT`>t zb8+~)c#6BPtt|DaD?uGU?a85k1KHA{!xS)bBR&pW3vS>{q|%5pVBz4|d};&m`(AFLu7xQ|S-J*a{Nk?vr?D+@b%lO-t7*ps9U{1awZSkTMk%O@_u@s?`TxZ) z*phV?-jDYcqHB@|U-Ev;XMY{vJq#KLI8XTIpFI5f9|7=zu(A9!P4z?EX=WS=gdM+* z_Tt<8IIf8+^M2;J|A{*yyu{o$WEfxtyxrUJGrS5PXq0C0KAz%U{1&`@^zA=~!%W!s zPqQ!nAA>ZLUkx6C(XuMoPc{NY_A`(}e>4+7;7jQRrTSciehzh#2Y|6Q(cA!Y3Mr;q zWk?ahWJYgmj=i%86W{O`4@^AYG^7k9w%vh0n;tMP{IhS`4))aJ9LL0qUq$;l+@7?$ zx=uRuacF4Cz-h?Y#yvflX^)?_Pus1c>pmSqu80YR8}0ZRLJGJ<4p8d*01#M7oYEkuRzACqa2bKo?eb4v;RV{@wrx8P?|paX6hdXH!RSQwL* z=4V!E27r9uZEQwzh~(gYumcPv5d9|7EIo>DzsW!Qrmf2)$2kVii$D{7D2Mzc3{I+7 zhX^JXXU6Dq>;WP9e)@JzRn3!c`NccS?ji{gzN)>y505nAGLH`-C$#i-mU0^L)gt6C z^nR+;6aR5;(&fGIi{kKi_}lTjKoTH)<{dv%RmS?xfi)K0_$_}4Kc&$DZTz0U&z~ZR z!M%|8!13bNqMNVtd~{hN#+PsrKWnY@Uh3q0V_H#MjDwycVLI^)HQBY8nt zVjHu=J`VByAtwm@0(c)mIy8p2Z^$jWYaaPXh7UwO=FjUynt$93=s34sE8D(-ie$8?q6>nsWfx=N$E#WCIG zu{f@+ir3X77-}CGYEaHeG&iLUY3q=vqQrJv5)_nj8k1yX67g7=9;tq?$0rYb{M67t zvC8xKtL3_&pcKCdI72)rKV-QDzAbHiGQJ4}5MTq}0YU^M<0#$;R|w7zaS-7@SPEnw z??TQdw!ZZF99eN4$ zE0C-x|0+U4ltp);z^>A006Odtg}00Dpwm?rO(+MMaXpgwo~nm>M6gY%y^1`nb>p6@ zuxs_T7=K&>8sXwfx&@1hJB$tJjE!kMRSAx+N<`oMo-*4Dj131G($+rwCKplq_i+f$ z`?VDM;0W#o^N1fVo}xO6VFPqF=n&JEP{YLW=@C2L2tHA#gE_?!L?nFR0ku=#*bup$ z=j&h<66HArB1T*UBNHfT^Go3z+!uGpXTWtlHYK;ZoI`wK1eQ3y1m9|Hv#HAArSW@# znZ=bcL73H7mwgtJeUh0$Lo-T#Oop(c+$C~z`s(rw%&FIw2B{HOg$~#llaSC)?t>gOk1i_@d4OO!IE!py~C%s#~oVk}d|I-H^IDUStQ z(Kyk3BIhO{`-Uv* zIzaurFhy>dvgBT$N`fDP$+Ir&T~pZnQ1!2idp5})QM0*Hz9!PVXtBMJ^}Rp@6H)tO z+vDY*M+E8iig+1i1Q6A)DZ{KJ{4`)o@gx9xhT2;h$JzB=drf1X+X7ZO9Q6$&_r-H#T;`}(V@w1YWrR9joKt(a-hp4ZnQvUe8RRfYZPGE601n5J|K z3WQ+r6a->U*N_gAfoMvlF#89SCNa6#+=wa3AlXMI6id_lX*v#;-}n}4&@vmMl$O4k zXbmyV|K=;+`Y>wGt2OYYDDA;u!gJC*MLx%k7D@4$QEVE&FnG9O0GJQudrRFLX%sA~ z&-UU^BLqqDhd30+9jk~xE_rZL^6+H!<1Q`Obt0ZsW}PX+pzet-&-6Z8Can5vF>{Q&*sKg}Ary&|K)rPG?rKL4AnT9V2$Jjkohsq5U2n&qj4Xm-BMiL~O{EeY}-*k*k z$MIhtv7lU$bNKRn;f)!_%h72_h$#F(LBxT=h=WB@-*FV*`wl3II#e2aSR8v)9DAfG ze5!9uF}I|HQnNhE)|Nx!Y|jU!sL3)`Q6=U`Ffp~CQk zg%O9)5#2dd5P2v+{7^x}p~9%cC9%g9rHM-mv#zP<&`+Ln^%cO>HXvWM3fsFqX(Q*? z%9ke>o-Z%XniPeK!ibif>kKz!d0~J;bXy_1(^?qOUVN{kG`gcKx>Fq6DURzb2kt8? z;+2*0n(D{hbx#n#Ya3JbO=-rKbfYxGq{uP10=ee4JZpPFZ)YK3>nye@OJJz&>Wcnu zNxv4B7At?Su!q)dVVoOV1kf^QTN|yS#Z*O1TkKcURK-Cywav$&$E!w8;~341VpD2p zaukd?S0nR{fkstul0lBqHzR}193bCFj*-*&Q#cHWPNBoFefc-PDZIU36!vX#_`%}H zLqJK?5yHJACDF%9<3h!8$15M5QxrdPXcaT#?&XEKl_gAS*aV1sATa*8SGN)vf@10n zxW!Au{YGU?T7BlV>Xh@6r)R6v&R3@js7bp3)IPgZpLwMr>uN*RwZ@$5&3U(^`FCXb z;j)4VSy5zbaa4OrOh{Nwf#MH1NsIE_OY*r8B6OhXSvm5!|ZV7h+R42=o;!wN{WHJ4jxi{> z38ZoJ=v1(!K^*2?+ns-HPu{gXXmc;`##2$)HwAb072Mue6tTZ3lH*`;6o@@6d33fR zBdjGiN-m0(iDDInaf+h*isE>AA+?>A$pZ!&=UJD2bI7$Fzy#<)yLh6%X4g5;`gqIwg-gs}fb!NnN$cU9~Cd##BvHy0#@t zE6vu+@(isaV{4(gqr|E#v#QGbe3a@MFyUg*&_a}AM;B|m$JU7=+OQp)1N4khaX^nk z&bZSw>9$O|d#8qN)5G@ZQ3oo0v*VbBgSBq1`AIjDQp8)R5>UKKOinBz#F?LB17SSj znDdV2due1wl`N{?F(M1`mTfjhHUWtuv#22eDaPr(dp1ztWI#wJGyjbJk61E|`pv=0+$) zkw9xvR9kUOdud!}*~8BAhn*D(N^=2%ZKFfi+;5Z)7-d72Hm9Y-)vI*bFa)L^wrhqRJtG6U(Lw##kZIgy zMvyw`u}u#5O^*tWEv5Jv7zDQ(FqGA9hG1(32B@Hkx(TofNI1KWQ zFRL*yvU!=q$~#{J64qAU`KCPl8}aS0%ft6^R7UNW+&d_VIv}}wKoWCM5_?b*cUThp zU1jXS@@VvrNaBxHC7b{hd3UEr2CDUIu$h6O%>Bj{40y~>kK$`?cy^^O^;~`0`Fe1O zPWt(#^a~B?7n?FJH)ULE&bms-q_!m|OqP3FmK!D&-Ij{(NDIPSiz8c0?!u6^mBy$l z9;zgdx~dYoh{nh2+GKTIN>5{&wlQ7ToMVvY8)YJ+tiYrwGPM?)+ecvbGysZ>9(rey~3 zhjyf2KRRF-8#Ij$n#P>wahG-6-8=5KO?dhyhwW1%{V1(Xj}6X@gGtxyql- zz}yWCZ(xuE2R*$?O;w^a`$}W#ndbEK&FSZ)85f%~&Nn_ghl8^0%hcvvmFL`$=iX?| zyCu)N(JBg)<%hKv+-fUEd=u4H64_pIx4kr~y$qf(R#|ypT}2#r*F5Q}dZey?tgcDa z)IEVq?5TgMZAjHNr0E*r6*G;pEO`D%B-DbHdUp)tIE+0)zuH^ zng$Flg9ho4QSLOix~%Q)UZtn6i-hOs9-)FKRA(G_nlZ*i!gKdRds9T3V|uh7r8EV!-|U8lC_rmFakx-?u>dIue4QMkG^LQ@viQ+ZEQ5!GE8t*MOZmc({f z#r4!a)Yd)HH$BlcKGruS>lzWDCL#IIH9j>qKO<12nr@P1nq}E0MXsei-`ZK+t13l| zYNJ-%r>?MTB#xdM1UCq426XiU2CN}(K~m~8%Ul+PtG5lM22UTDL~w(N#yum5Z!khQ zWE>mPk2^6qX~vu$VsZp75j4Uj4$VP(6E0|vSy7+%FlCsuC$I7#22m5Lt?QeK|p#Jf}rsShQ%hS-7)Z?=B zld|+vip(>uS?5}_f%6@Cmz4$Al!e#2io?2!Z>q~~bytLg#-6Hs`nq^sZJeS0fwAea zu_@8m{Mf2Uv$j67wr2FUrT4aF*gCRp9at}t(}y|$76PHJqb#ti(2DxirKs-oYf7=m z%h4@H-Utlns;B~B#Hy|)CzhRCC^|)vfo<4>RZ)mevHh43onjTugwr_bLO=udEYqIe zX~Z-mSX61B8SS4PL#hD|nJ4szH9ltu9U`*v(HLk&nM)*pC?pwctK5n*5&FZL&8;XK zy1*E4#__j&$UOPB4_PPQ2}JhEcd}2tlYRP~>@(EnpZ_5L!nXVi)D~R+sNl*+#n(S6 zyZuFd;%Qa!{qCx#%A(lD+bg-hx9Y)HKuyBF zy2tw)o`Bx(faa%1np2O-(?jJMClr|{+p^CPa=-7$zo0Cp%v?VG^K+*<+My)Uqfq}u@sNW zaM;lS8+k}aY_vTCmMO9<5ewSbE>+lBgLeO;MW$>G6f32AXc-jJ3#9yWJXaLbMJM9Y z1xoo*M@3vZx+H|Az9K4%OPL!C2u;a~`Zx>>O@oK^eKZOR#D9px=fvT$H#3gEnFS_~ zZl(4(dwN3X;Av)H|M=T@ntk%^>{AS9-pM)pZtl7F^3K06y0}erX&cBaxGJFJ#`dyX z+e>b5FAd)b8pV;Hi=%dlqrND=x4S%gH`VBRr`5wk8dsFZ{U$=`bL@@DUhfMZG%AJpNYBiMP;Z9^cB55xO;l_0x}SA&G|4t65+&bZaKP z^cGs-zatc=bb|_~s|2VV@R3SX zF247L50x=s^^3|_@VQG82bF$V^Wdx6$6wbx{JK7IfBlpFO{s^QQ@?8lnHiz7%;WN` z6Rp|bw}Q<4bM2yw?M0WAC0CUt*VN@3p!+YxPY3pOO4RMC12ga5JqcqVZ zdt#C$Srn-j@Y$Zx+mUJO%*GNRy9(3q3mBzkSjk1Tb6U8L9R{$p3OhQ;X>m9$R>kHw zw95txsu<*=MN+7yj`m{6k?l0aH}PW?R9es$TssZi`Gjv3Cd?6LBN@Jp7W^Cr61buA z?e~OU4%3fr0iGRwg9Lf(&CF0Qy!|XlF%&|jHs|=8*}#c6vrf=c>IWRjIrDbj+4lg^ zB}U`L_Y1Fl$WeU#k__cNIKAx@?Fcb!_xF4vW!sBD9=8n$T_XZJJXhTzN7GB2Qhg~S$bVnep6K* z)-4I|sfpCqMrrF}bPf0QjSrzoV@sk@nq-nawX}i8bZbXuuQJD`%EtmruPk9~X#)vn zX|co^G&W;J73N0{)AIjz6jy1J25imAs^eI(A?zPUvsKyNnpmSKEcs?NI3J(1!4zAt z&-Op@?qS1cd-F}-SkZ0M;&;&K#mgL$sGzQ6TQfP(KkCIXI{pe|AKNM*bSsF>Ir$cl z_x-#1=ibf#{$0@p*x2{b7F>ai-Bxt%!{QrYk^n)L+=BnyE{@nCjzGH|e3nJ-Kr4>^ z%m;YRDwtW&cz;iI{9eei?$NgmNe3H}4oTCFL6h?A6Y`u>FtE^MyXZnk0hqk3EWN4{ z-{>k2Q&-$pgUQ-^UK+`?f<}`x32xIuArZ5#2!jy%fJSw3e-ESx8Y^js9&(rsf#X)> zFdZGVmY)R4O5<$fDca-)TTb!yinP6rcPl?(b0WTpM!<4mE=#s%AEO``)e2q-6)?W< z3u}TW*#wSWgoNascr)+RTX`q80y&{u2*S!gSWhc z{*l+y57Tiv0SJAauKE2tK*9NU3oa5wm!Qx03NF20cok-rC@s1ENlBO>%hEfamPKqY zkJ<^8MeHb#`m8eg^RlR&;(MP}#=^{g0RvkV|7G=qz10uDZb;nUka(aenW7)KN;#}+ zHZiH-Ocq}1EV|rT4C{KMtL&z_;*LfVsjFokvN7J+^w8A&*epvjLyhuOYa5JemJQJl zj4CWDXe1{Ii;4|Fu$K$bh=FA6H-_QI5!%lPQlzb@XkSi7BfKST0LM2b3S>4H$L;q&%cfJz*0T6FWP5geX+8xWm&TXgy@*0RoN z)}DHc4xWB1_vD)*969x7?#ZpW#|hb?Z)6|e!rC{`g4irjeJr4J?DfoJujib46UZYQ z%YeI_f0qDCFT7iL<%7a2+Xz>;72kyC{ICQ}hJRXq7lK5)v-~cY{Gu{uS5@4u>ib{T zKG<8Iu&*9zO5y>EW0MXyCm(4^3zemxkY}EfXP#E%d=I+JhQx!7$%mR#j<%#SCbP~cvc7N4In$bRzCHh9N8uG!(REcxn7W*CSQXV% z6RWMeud9EcZ+vWMN;FH8Ns5YRlwP)HLybr#vDTTUesqfmFrthc(pc-FkQE#7H1nAN zUW-azkwP5orh(nxXk$&<_l-w6-n~!|ukt8|4QY5cB=W8jW&`~+t|)AX>Yd3?xuSp8 zTc8yEa~1=2n0n|p&%P6oarC$8-@TT3^tV9vu`QX<)v-6w@gbMdLL@_t$F}C3B;=oF zte$?8KV|I}YENtl0y`Nr7M**q_|gYJ(WMVcuYFW{?L(mG^82ONKN8>kgaGz#e@X}k zhdat6cUIi{yb@VR%q~gn?yA^5wGY0kdjvu5tAG5hPm@h4WLim<8K>o7GW%>>?)i4n zRaMcAuF~6Tak!>DvK!@s>R4S}yuKlUIBZF_$iN{=1X;Fru0!S(p+jVn*bRh&8*qrN z%a}Q(2>{q34s!q?McTTEHuPgsq%Dfr{zPo2DVukzFt))h^NQXvDe{VJ!G3@_^$tk= z6b>od;9fB#B<0|*Qv>kq&~NY*Es%cXH4eBqc)YA5WGXX`yq0nJH)ykuf?kf-(aAde zo9v^nbHJ(MNM7icyyFb4lN0&|D9t~;HSg4x!t>DK`=wVtEWNU=gh7lz=lX|bH$D=F z5sekMKCQU@X+^}2%DX!y2vehXRmFT+8^5OxF>3tR4Tx+Y!UVMYn_*F(qVPjfMD3>~ z?WFwKX<7Oi1qweo7uxf#w2Q7N3vZ~3Z*_r2R<_et#gY^o5{ykSrzsXWf*TZjP~*v` zZC=PFg2M{NVSo-TejUP`^61pBLzq)xPgL)AZ~m=q0|Hda8~u|tC~4d{sEAyVrHj5< z;DI^}9*6RBnEdrGQuhBP@O1xQrXKiZ>i%D%1Ed_l(_itI=s3f(L%&Wt@GIfze&Jv` z4j%ed=HcJ?kahI6%tOESK7EZkN6@|op0kep2Crt}>CxBnPC~9*L}%YFz6fQ$Pq@6T zjF=>p-~L1rv7;(tXLZ!))i9*@cGtx1t&RJt{=vQmxWt70jR^-()M-Ij14Ej6T$*x1 zo^e_MbDH_RBI|5h&V`Qr%bf*RI||?xp~DDG`CU!Lz3$2wZS{R!?L%E%g1#Zq*pzIN zrkLf=dRsGLPOi*6@zzoDgXAw gd_y8^y}*-3woN#naPvda=>`silKr4u(aYig1+3!K=l}o! literal 0 HcmV?d00001 diff --git a/release/windows/installer/00.installer.ico b/release/windows/installer/00.installer.ico new file mode 100644 index 0000000000000000000000000000000000000000..922c9d472d9f2bc9fe7af5474217e1a4af5faec0 GIT binary patch literal 25214 zcmeHv2UJzb(rz1Z%sP%~bObSHP!KbYh&hWW=7?z=byQGPP(+e~C<2NK28@h=i6ACW z89+raM=*;@lyHdkzUsq4P{;B9_x|s#x7KYf`t04+UDegSdv|qJZ6V5tA4JWXHIbJW zt;z`DCIqept}BVT6@)mCd&+BdF}J)BE!2ciS6AY{Eh~gm6~0#DAFd?Cit4Isb#WN& z{8CSdPMwtab1MpQwIyE{;RClr2h}z3n+tKbrx2}}2LPHC%oiss`S)voP{M^)R>};2 z@e^PrE?&Hd0+Rm)5&r_0-)^*<$?6#bWlHxnjYB zg<{FlrDFN=6=Kb*uJXh3Rn=fVD-R7-mzAj6&b0pEjK3#Nk$P`^26r$Va0-?K&#E?z#V*Hj{qQB!i zVdC*Z^mWP-gSMrLVQ$%?|1J_nJ2S=P-5n=A5jbBc%Qzd!yff&XO*lqrL?S_s|tT_mA0<0tnm zSEgQL&32ltaid(H$sIdRoZP;tf$`uDO@$~we6oQ?djm~FquM{3wCf-$jGo-He_IVr z;~#6*9NxCAs5Ew3k7^UOH4TRS_@i;NwxY7hlx`+N2es7fH?n`*&O%g~Jgw`*R?S;A z@1UvK7VTG?GNs1MS<|OaZK1)JqS~}6RVu6L^&Hw#UWyvi$5kKEyGn&_W3kF1)tL2b zo599o$Ld#BE06V0)EM2Me#3@8|6*V~l9#`p`h(kb((2NzNf(`ZU2)y*hq`rtYN0(~ zV8wnz@QRU1zgyQDHAFS8{U2Uu)s^j+m)YO`>DR9x85kJQz<~q#wNonfaiKo}F9A0J zi%J#ZLSJ8>;^X5fCy(gTg-bMYJG5uq;q>YPp89J1_G zZD4(;lP6D7QgRZ__DZ7ZyWY{ucj=UzoJ`|(e59_9dE^%QfuiobppfgYY4YA&)R%2c z=Qbuxm_X4{k@O+y19=3!q#ll$G}b+hc3ns&J;z+yeJPC|-MUQse``S}97fZF_?I-m zy?~~A=g59eo;-!_-@8Xx|LDMh1LS-0A&qp;U>-?l6VZ)_Z^?gse{wb!w0(@A8xbM2 z@JKF=+M%pJW5x`MfBKlxQd7y(a~CaJv4UQ_Ng}gj>C|mg4s8udrdv^G>BurII^{5u zqHjH-9xjF4{wC(%)YOz-zj{F#>FMO+vW1>Le?x&c)5tG6orXHUL;v&1=0q}uMct;8 zSDz5xH#BR14%f$SM2Lk87t;H8Z)N?>4mR}cO)5>={+vd+yrMB%p3z9BXOLMQb=g!X z`?Kye%P*@o*X8v4;-!@FF%9sMtSv1lFGnFEJ6k~tKvJ55#yQ4Pce^w?9F_gW+*pqO zW@Ub)6pR=1!u^>wYbI^lw26Ftd?@60HW}Ezp{OTc)@Aw@78az)%Ai-zpVHb@=5*)g zbvkR7M+Ig*j_C{hZPnty=Pbbom zxJ)vdG`m!N?!&MB3{_8dwYD9!jXL)*aQtn_isvgD<}1m3mBklzUxZ^n zhy9in+W7+b{x|k>-bMR4b=1`dsP?@=uG_frMY1X)VpT*7Ip4ycf86(e(bnfT)UbO+ zD$1}y#&#BW@JD&yoQUsudV0F^4Kq7zrxj+rDGoNn{?^P{;pt3{*enAB*OqoU!57Fr z7-;svs9=t5v!}DC2bozaJl#?5tiX;t_(JxqITRd-YdkBc>9x_&&{A1Wyd`(uFl&~j zEO#bnH0_mTXsF=*JGS8pZh=;q=LB1!{XCQd!Gnma3(H`I9TVWh+i!DEWin+0;``I?+b!2&9}wp3U; zLqL2>B3OR(+-7Fy3?6Nj*DIN`Kr=f#Gg;r#Ld9JtzE*RV<%}cI&9arnz>@5nb>kw4 zer51UC4yO39-GBrK(@z!p`cZ$E z(mK*$uTOf?i2Wq>q*2h7#`-ArrTGVwq|RjS|4DCJc3dG${Yfl7^+|_XdzOmzDAu8N z?{JlRl*9J@!fEFbv1{)kvHeg;v0ioffVb4GjvqfR{C%Nk1q4bx>&%(cBIHbf)VG2| zFNpK!&x@Gz`^BYmK~n#+^NTN~gN24gOFhg!oP^6&`deKrB%x4*g@=hNm#;{jEG9Za z{1y3^xOOc{#KhbXaWTS=fG+z}5S+!Ie9+!pul-xm)aJQR-~KazS|Nu4d? zNv^p4GDqreuU@?pZ{NHTNr^8+V&Yq=!+m)FK_o+u`ynq3Cv`faJb`VSDCF~n|E7OS0{;Jr1kI=7#NvkP)UH{xPVp6fl(F;k zw5wjGq7r9%8~sN5>P>zu#wcUwv3w|sCrS0Wn7(5e)!-)zk>&N zw`r%Vr>mo-qpPRat_Y!wyOWEb<;aFVmYLQAK+zO}2Nu8xtP-;@Ro4*N~e(Q8|q8<6Eb zD|B?U`n1v0)!Xma;HRH{s=sePm{gYgxO)2S@-pk!y=Qwp-9dg!>LLBqz;BFB`%mR~ zk-81m(kWR!SVwP?Y~RPz$IlZ?xQy!FQ&(??vi!1e_2<BbSW#jl;ZtXZnKRa9NKb9{2ZQ;B*Q>QYKPsRQfEgfzBtgRP;J=1x!W}sN7 zWU;@Rjg9reg|kc-Eig5mHFatm)NWg`xOIR3${TI{7R_2Xv0{}v6DLiYJgrafKGn*W zD6i)3=ddsci6|%)y{5K^|EEklqqhZ znxE4z8cj8u^=Y$wrK6J*yaAmA7zF4J z;PanG0H#q5!18Jb=nY_;p+z}g^ZmL2J_0JqGcIM~do|0KFF&P4ixzLAuSLu0bNkk9 zI(+yrb?@Fiw@H&G33ck!xlpN6B_HtP0Q}zpES~{@zCX4fIZu74omX>{y`jxbye~By zzx!fi!_~*DH|@Cv<-Y-j16l)^*HS#Fsi~E%QKN<_*0FS^jXj8J`pUeJ3hDj(_jLL4 zWx{ziX=`ie{PN2$@junB9#XAg>jN#P9lO+ZV{$g1lY9HYqYvNs*Zb1w=vFifqcr$e@onpGZo4N!A{x zsGId`(sNKqx?SzFNPA-zb=Z(a*sl^_tN7_+`8=(9(_WsSI|a}jz;i;CYPD|NI^)^1 zXT-Gmtbo(GTWPdlZz4G#yh4eu;we2X6=zFHl$`XA9wsExFn0xYv6p8kl3veES!C*? zAU;=_doYK3ZC3K3S0ooL^E-)ZwVLpGmm#3|X~e2o3vYn*XV0HW+K(PSlJw{7&!py- zIi#~OofdC7OONi~rsVgDl=k5@IR(U1#|`rAi#nmNs{(T9exj^a{O3^;(b|(avRto7 z7V5(t&x7`K06$AIVb0fT+oo+gYyiZxc^o)d2c!{n0n)KoP-n<>_V&AU<#IU1Cp@DO zZXc}wo8BW`n9B;kdVNQ(c5=PwEp;eNxL)Cvdy9KE>CEk>v8J6Ig@nkvWR8= z1pQ>%d)5vm+o3|j#=(MiFK$EGDbMLe8WD6AIUl-iOvwY?MSx~1`ak^eL#+-SI;1Bi zCKA(r@!~l*NXZ}GQOf%_oxlcxr_h*#~l@tni%VfbIf7Qx*Mc)vDF%)TvYYhYuel?bokg$vUqgkJqnW zQqtRJbS3sVP4rBojy4L?#dxqRyVz#Y*qzzLqQ4X7Lk=TBf7~bfEQ3AP#rE(pT^s%nh z($UdLfBQyBJL*BQq#vIUPfwpbrH79m(SrvM=;_0I6#wuRIUS251B?gDLE9#i=J@1L zN*1bQzbCJaQ^{v-e>$*XEM>foqf96?i;sPpe;Om5Hi9Ux+sgBL{HR~IUM;M#>F*M8 zHVN9pwsT`dkDojS?T0uMyid1p#Zpjc7zLaTqM*P)+Ti9-eK#c&?1J+7n!Z;-SL2C3 z=0l6ZfN&o5lCTaa@SG~wp^i(V&y}z8V@r_a_ds!K*swt@{XV_Z@5jHDwEH+^OZwdB zdpM80dnb-o?TV&e_Q}-8A&K+>{Wra*UXJNl`?3Mbb%w`eu&aV5dFRqlH-(fpuZQxv zTlFxy>MuHNK(rKXW}->shPAr(=#w50^^TafiaxJ}w{OK!?9CgraPM2pf2>82xe{`u z{JYxoJWv9!F{Ueq1 zXCADG6CfywItXjT!*>ueIX&_P^@VBRtP1PIM>Zxy-e*CX@#I&zozbENOMn=(JfBi*a zVPSOf!g&h25JDG2&rnF<2?{)UoKE;1r9Th*kl&#_Was2c?0ndqY59T!JDt*)uh zwE4YX@?D3^(n&+3NiBnc!_ot9yq2`DNB@QOG?%VkxhiR&2W=dY(dkpC>BNZu^7Zwl zBS((V!Gj0sz}`J%X6Hrvj!C3tmruG5`D9`nMs*uDxd1A>2jP9tHn!gV|91Sj|C1+APUp3sX{V*7 zV2n@0j*=qhL3UOay~0|2>((v8xsa4Ujwp%gufkdSZ@(>|8Pg`y)X64ZG z3TQ3^unhQJQ*>B}U!Nt7rW&5h>d!n?IBzpbw1>V;W>E_Lwa-Mp7d(i^eN`?*{N?1?dV@~_n*9{|7vR7 zxN&XxPJHB59A{6|X~s^fFzymnoq3DuFT6)xSKp+G4q>!sS|W{gdDOu!hk9(uA;Yc7G-lglnzr#It=n^s z+thZC0`H!jb zinr9rB8?hb<&owFqSp3AonQmh*@C^qb|OPhBCtv04q}b>BU%!WOUqAWk@@itwA$+` zHEh)6CferrJj?!zH5d0}!k+(!_8r>$v)wK`4Bli+bfh}pu zVWP>%$Aa#7AEK#;U|%|v1KK&XBB+qoog>uIPODI%!e$T|4*1(OsA=?z4{VlfyD z`YGA$ze3|?F3IW9Z^-@DZ9954YSgF)i1M@l&38aa##**$S-H8UM$HyYe`yFkw7q8Y zRt6fH&4=SKWkS1-T^4KU_FUh(V`saLy1n)`Ytf4LvejC(X{XbsqxL*a&1S=~o^`@m z8tYhpyXL9rrPd%y5Eq+V#2mH47y-(BConG8sR3vL=mW4U0=_N@eFVw@O-h0Swv|@6 z(FrgOpt2iUeRZUOAgttnHWuO+0RQ+F{`~uPLo`@A!GgHB^d03D+s0HSpMD877#0;p z*JeFnTr8?A4UE#{X!ZwNx`MmP0yT3sJR-rchL;JauH3%rKCEymvtJ-r;QO%bk%DcL zp0K~+uNmLxd%@-krIiuwDPWB&x}WFi$zFb*9-u;~w+#(3J{k^m2A(r5n`KIQ(ln6y)Ujh69@OhB;ok{W%3~Tr@ z;F|)!6VrtXUu3$Zjlds>%FL%TSa){LVaYgW1K$#i$@|WX&)xL&LIrd1zeV;7d@7vT zrpg_V{q^Vj_{CO9I~I=zq=y{0CI5D?ftpKC#^4~-Vstn>dT{d=+yvTibct{Sd?s5Q{{z_BVXqW z%X~HD3Za(D*5*`3wiF_P^FBp+lcF3RVe-BzS1Y>y-dt5rm8;rS-F5-2<*JLF+_2HZpmMrJe@0p^l zc*z|xznuYpXSW|?WGrp>qm9OY)qc-D$e-KrmoA$Bw>EtCOU79Ze3Q$It&^*i@=reH zu|V{hYA5~^cKr?;lD^xv51qZpwx3nnwr~HX?{i7}zRCysTQ+|7h5k?3`BnbXDqH`) zJv+p~{kz4tZ2tQX{aMQH@8f&&3)}y>;FJGo|34OZrPvR9ptxB>lhHcOdbj(tm(`!HfL|GC%nbsC>eU{RavQ`FZ^R zGQkhy|3+dWu z<>^d8r+ksPE3ffA2K>{YYcO>2zR;lH6U;zgcc2DXTL&PU%@tZyQdX#B<$LUKcytI_ z?Au>g+cPj|BYyREjExP`fO^+hBRuxnSlrR6qQtLk6L{=ML}Y{mcdUQ!!Inpj@MFZ~ z*ytwpf#0Zpljzv(+=b>U{FA=E;Yiy?0IzTVLCZ#<`Kht7){Ko*-#Yd(3i`HC;#c(w z^!1Gl4+^??!U+BBYcOyqWHUQ9Rzo%qe2v(vV^Pq#2;V#Kq;F&pr+~@5m?xC=Li;80 zL9%bNB7C2~K;KA6F)-j{fCKj$srRU>vHnVS8a48dJ;isG=y5fDLjwaN7#sZv*gTep z3Kh09f%=Ua)CW7U)49JY{F8ye2MwV6`W`tjNmA%N;xu~PvF$#Ufy=Y4Gens?hbE!gI+LE^e=kIO0>@Sy?bp71Gd*5n>}_zN~Xb*h;AwL zIQ6N$(LNlOZ9Hv|Hdt9&u3fWwCDQysjQ<&WoaywgeNTn$@v^bmho%^EYaHD=3}Ez$-u(2Jg`Pqj=hpIzh=$*f3hbBVod zxi(no-*@1TWjnuVsdYJK(s0DkB)&DL$&wr$sWkoHo$ zO+J3U0Re%SfZkph#XV-lE3J~V`LVuUH8g<^`+tWHUAyQE9IUOq)WXVZ50dAeWtBhc z!2CcT@21>5(7Sar7%%{~1LLv7h7CcjrK{?E)_Ppr!q8BwW*s|rgo#y!Z!&S>G^qNs zXHVIv^|}1(`G$rr8E9-g!5BXJCML$lqm4(Km`t4Eh~%`zWvgl#FXF1s{K)7atr3i6 zY&>z=jG43M%yFDEXU>!^$bk;1O zySTZP?m!)L?Li|)kC)gp!StLtPFui*TgwWA!OqsLZXQ}CN4RR$s-2C;BN7EYl)N~B zXP~=Pj;rLzt-E`;S1ws0u5xqud^8(0Y}};j)8~Mbty_WR=75(;6_>5s9c){cErqTc zj5@VyR;^m4di5Huw6tw)9kek@RjXI4S?ebi!Z-4tYSygwH^nObRF(f%Pvs+(@7I4X zivOgZs*cv6^EQ{+zw(FA+G_$d09>2Tzu8ZT72kh669&%z%Tyl3e+CQyECH+p%muJN z82f>>1^m1HVQrt~paQ=BPb4)o(hN48^<6r5N$S;P5SN9Rt9)Hu-H)&gtadFIhs-(b3ZHfqik-8sF^k9FcJSFRilp&ToxR@I|XKl9UCX1Cv~{NTQo>)E9jw3&S>v4&=!P%!KW zFb42g@ECqIRjg34zP6V33kQ39x)~cQZRFes=AU`a1;03Fmyn&EO^79@OaR-|`I>$C z5UW5>pFSnna0oH*gxD7{7&IcU?d%f@ju-tF&&6f%xlsLv&tYC;!!>uo@D9Kf0QceV z#-X{9k&%?;ojZ4>E&clSYm$GKJI6id=44Y|b~DJUf+g^~fO zDfo@+^py8><;FuADcAg51-(nopvk-7_ht{0f|B=UEjL^!XfO=E=w{_W>%BFh*t6X@f2Dg9+t?Qs6H{vUsV z=~;kczf10fT17QYyt4|}hbJLEUXB6#{qfo&*B7j#nW^vT*yT6WU;3bak}uCE_KBV5 z5=S0hM`-xA6zP}A^myJFxMUH|ZzcbEx!H7V;~?pm$-J|lC>vAYvk$c@T|4VVcJOa?D&gO%^0VcB*bNsH za~@7BNH6d#@V5oJ7Ck#Gj}A*B--Bs>FaJ`^Jbpl5)0{eWYQbHs{m-92hyQOpJ;A$( z`RDHduum{QpRZoMruSH1o+P{=e9HxLSNg!J#+c`mig&)pbJzlY(W-RHeV*h|#q;O6 zE%-m_W-8HBvkPhT4#=g%d~G}L>~pZo`y<}t6({%(Yr=P`faeV20Oc64A6t5Q8of(= zM{iz(_m{8e1@;R(J};lg)2nAs$m8@A>b)tm)O=Uq!n)J*5e9dFo4afHpQnQrv|M}f;_+*!p^Zj$#!xo3K z@`Uf=Nd7N9$dl_u$u{fvn7n7cdxj`F`J(j$)f4r&>{LV1gl1=yUu2rRL zXZO&-wS5WSVlU%qPsUE$m_&48nQJV z{>`8EKD_7Qc@!1@sSnI+Zf24M72llizmiGa9hGaZN(PAecu}dgh5>jlHScjP)6YNu zths2>qJp=OxgsN({)|W@e9H+wo@r9j z2WgkL5AEN-k6;6p-}zwQc$Eyf4?V!whBG;I?O8shV_D+f5flBlR5}x{`#wU^eXxO{Bc6RLH%w%x}it zq+78u6nG(;#&3TOfA$a5$Ns$p{i58!F_C_SFSC61O6=*GFO?rXfA?gvw}MReWMkh3 zd1IdOd@uRD>a2VH4)ITu!D6ky?z^A_$u$SO{zY=nhe*$g(jrX)N-s$iA*KWc2qZMm5;j^4XMZ%C zYih2tuqc>!2(cV^r!xPCuB3qf6p8`wH*UmG^tEdg6$M}XNcK&?LXi>SwEx6avhaCA zD-Oidiv0|aY5CsAwAA|vE%st~Ouz4WOpA6ulJMKE$Fz9YT^YmF(?JWW3$Y83IqL>jq2I8M z78V{Z_1w#0=jqDDvvlcv5Ml}f>3qm33Jp3z!KeM{%!%W4%KsPz_#GjC-@|nL*g^6? z;!WG!cGCDQk1*d<^5-0Tz?JtCe(q<6uR_Q;hi}f8Qq1F`b;}l-8?CJhRvgcv7M5tw zF`FVDWl>goa*@m<5%YD0!o$Hk$3Z|xKY#8VorQmXNJucjl!w@W)AGAb0fv(UAkYY3=5H)Zc-hF=f0Q$L#6iIcQ@V^aSrFeolFf`Il4MHf=QR zHd+^$L-(0`D34;F=iqE11G-@nWF7(DS>{E2!*~B2^B!_m##5+b8cv)zLH_=J#BmOP z{`n{2+j}zZlH)559`GWwt!JpaeR^@MAMf?LZ_1@HW(TRRdVBU(915uZFEft{ZQHii z+-PH6@Cq?%@W((r$1aM)dc*q%n1mtoOG=razd)f<<{?t%9E-u<%3_%xhs>GpW516ndb@vpU0g!6DV{39gKOybB5)v;$6!8&|zgv3%v|YrVSf5$i8ts{)QQ!$HBjf z_U>|}T|2gs+xG1k=WVpzbvxw081ip;4*ZVJLQ_gw+aiD=bwC@%ZblH`8#oZ4$6DFQ>RXnhld9_I6BJnYV4_qVd)=#&Ybd_KkJ>b(Ac*SiaNLQ6|abKACU9D*s6iob{V z?_wSI!#&<*DN|u#KIP@|`lO6w=4V`~Cnw|lFa>8`$?`mo&jIdW4)QzWnD0^fEjZZe z<@}qE_#W)nW#2f~2=n&=&b@tchU@}%xF39G4G+)nONbHD+`fH#G5^ddKfhZLe>B%> z7ukCpCI7%n6d4^u_N!+Hb9 zDBVX~(GBPc;o+CCex1Ryv72DNm*0t-J9lml$6w*wffvCwpHcDI|92(CqBp}_mHhL} zcn?1I`W&MgLp`XxaX6_>j-tx5?jWY;Hfb)6p`KPTG{HHFmTW&qP6y7CUvM~Gx)LRI zf`q4!=oR8zU*T-=)w8FR@D#ek1L!-q! zr_sAJX#CDsG{y57&D-;kmhZSktKCk}=KVqB?sJlk`k$g59_}<~;J^>i!Fk`N4)~Y$ zKESU4ClfDtQWTxTzQQ;BLP&Q>5NTQ^Q!|TK)M!-_)wjr?pDgkagH}il*AX>AJXo`h zMEE{1bw)f`cUPkR;D7LLWlWec;+Hs1YbIitmIW$dIdb#BLb3?V!@1B0vOkqT%eVNE zhK9y1@WK3lakhYa-%Ndfr-Xrwurg$29fM^6@Bx1PWcT4!L z78wCJUTrMy^Y76(E@R+WHs*cU9`KLYuW=|d0Uo}!MfMj8ioxzeA#DyP+8Tj4FT`N& zjLxI}BgSW7?b!=P+5T7in+%sOEZe0^m!(*HWUOfx>?-N+U(m`;`$^w5od$!i!QMoJ z7`%vvARmc-j6a09w_`-Jv9vBieAo)e)dI0+R_Abb3|N02-#j?0gp~m)wA?S1{s0ck ze+};2TtE!j6(aYD0`j?)PnJ6Zsd1y9uY)zVGq(YJ*RzY*x~ll@Of}+OD)^p_Z&@w?-%G%c8RW@w zwuZdzFDYf}dbN;tL>AC)@OB_Jk0$-TK1W+e@7^p-m<^aWn*faC8I@0aujSHF-~=ZW zlBLTbs#mw}WiZX}FV-E){!<6=+&T{*Hsr4!`u*bcY#z`6%nN*Ln}$NpBan{)&l50D zrh@00koR1~FD^cf`4Xg@2kS9cY{B%1YcOj1 zOY5@=a)sP?M1uDld2|$W=k&t@f_Ubde*RKOCbi4Pl)z#~{MX!(H-d_DjpB_A6{;d%+R=gQKXLYL4e5;RB zS2$-cu-R9zVyiz{?Kw}jhoi~m#65gx^`*S-(zW|35b1(5${&XqO^IFNc!XxIu+KIz z{o~!hVPit{f9<#J*Ix}5wr}6AGxkAs;YY=`t$+0$pzO$Z{2e;ds6s!(!PR>9=vlK< zyViBObZp-O^!tq%JHd3&2%|On1_SN7>UDGM)u;c?k;cG|GW9;?W*XhaupvczATIAk}~HwBj$tst-dEOiuXZ~Pw93(zgD%&_*Q7Y bWR6SaS3XPRTwkUV`9<8|b_hYMmdO7P6G#4Z literal 0 HcmV?d00001 diff --git a/release/windows/installer/00.sconsblender.nsi b/release/windows/installer/00.sconsblender.nsi new file mode 100644 index 00000000000..356972de702 --- /dev/null +++ b/release/windows/installer/00.sconsblender.nsi @@ -0,0 +1,418 @@ +; +; $Id$ +; +; Blender Self-Installer for Windows (NSIS - http://nsis.sourceforge.net) +; +; Requires the MoreInfo plugin - http://nsis.sourceforge.net/MoreInfo_plug-in +; + +!include "MUI.nsh" +!include "WinVer.nsh" +!include "FileFunc.nsh" +!include "WordFunc.nsh" +!include "nsDialogs.nsh" + +SetCompressor /SOLID lzma + +Name "Blender [VERSION]" + +!define MUI_ABORTWARNING + +!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of Blender. It is recommended that you close all other applications before starting Setup." +!define MUI_WELCOMEFINISHPAGE_BITMAP "[RELDIR]\01.installer.bmp" +!define MUI_HEADERIMAGE +!define MUI_HEADERIMAGE_BITMAP "[RELDIR]\00.header.bmp" +!define MUI_COMPONENTSPAGE_SMALLDESC +!define MUI_FINISHPAGE_RUN "$INSTDIR\blender.exe" +!define MUI_CHECKBITMAP "[RELDIR]\00.checked.bmp" + +!insertmacro MUI_PAGE_WELCOME +!insertmacro MUI_PAGE_LICENSE "[DISTDIR]\Copyright.txt" +!insertmacro MUI_PAGE_COMPONENTS + +!insertmacro MUI_PAGE_DIRECTORY +Page custom DataLocation DataLocationOnLeave +Page custom AppDataChoice AppDataChoiceOnLeave +Page custom PreMigrateUserSettings MigrateUserSettings +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH + +!insertmacro MUI_UNPAGE_WELCOME +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES +!insertmacro MUI_UNPAGE_FINISH + +!insertmacro Locate +!insertmacro VersionCompare + + +Icon "[RELDIR]\00.installer.ico" +UninstallIcon "[RELDIR]\00.installer.ico" + +;-------------------------------- +;Languages + + !insertmacro MUI_LANGUAGE "English" + +;-------------------------------- +;Language Strings + + ;Description + LangString DESC_SecCopyUI ${LANG_ENGLISH} "Copy all required files to the application folder." + LangString DESC_Section2 ${LANG_ENGLISH} "Add shortcut items to the Start Menu. (Recommended)" + LangString DESC_Section3 ${LANG_ENGLISH} "Add a shortcut to Blender on your desktop." + LangString DESC_Section4 ${LANG_ENGLISH} "Blender can register itself with .blend files to allow double-clicking from Windows Explorer, etc." + LangString TEXT_IO_TITLE ${LANG_ENGLISH} "Specify User Data Location" +;-------------------------------- +;Data + +Caption "Blender [VERSION] Installer" +OutFile "[DISTDIR]\..\blender-[VERSION]-windows.exe" +InstallDir "$PROGRAMFILES\Blender Foundation\Blender" + +BrandingText "http://www.blender.org" +ComponentText "This will install Blender [VERSION] on your computer." + +DirText "Use the field below to specify the folder where you want Blender to be copied to. To specify a different folder, type a new name or use the Browse button to select an existing folder." + +SilentUnInstall normal + +# Uses $0 +Function openLinkNewWindow + Push $3 + Push $2 + Push $1 + Push $0 + ReadRegStr $0 HKCR "http\shell\open\command" "" +# Get browser path + DetailPrint $0 + StrCpy $2 '"' + StrCpy $1 $0 1 + StrCmp $1 $2 +2 # if path is not enclosed in " look for space as final char + StrCpy $2 ' ' + StrCpy $3 1 + loop: + StrCpy $1 $0 1 $3 + DetailPrint $1 + StrCmp $1 $2 found + StrCmp $1 "" found + IntOp $3 $3 + 1 + Goto loop + + found: + StrCpy $1 $0 $3 + StrCmp $2 " " +2 + StrCpy $1 '$1"' + + Pop $0 + Exec '$1 $0' + Pop $1 + Pop $2 + Pop $3 +FunctionEnd + +Var BLENDERHOME +Var DLL_found +Var PREVHOME + +Function SetWinXPPathCurrentUser + SetShellVarContext current + StrCpy $BLENDERHOME "$APPDATA\Blender Foundation\Blender" +FunctionEnd + +Function SetWinXPPathAllUsers + SetShellVarContext all + StrCpy $BLENDERHOME "$APPDATA\Blender Foundation\Blender" +FunctionEnd + +Function SetWin9xPath + StrCpy $BLENDERHOME $INSTDIR +FunctionEnd + +; custom controls +Var HWND + +Var HWND_APPDATA +Var HWND_INSTDIR +Var HWND_HOMEDIR + +Var HWND_BUTTON_YES +Var HWND_BUTTON_NO + +Var SETUSERCONTEXT + +Function PreMigrateUserSettings + StrCpy $PREVHOME "$PROFILE\Application Data\Blender Foundation\Blender" + StrCpy $0 "$PROFILE\Application Data\Blender Foundation\Blender\.blender" + + IfFileExists $0 0 nochange + + StrCmp $BLENDERHOME $PREVHOME nochange + + nsDialogs::Create /NOUNLOAD 1018 + Pop $HWND + + ${If} $HWND == error + Abort + ${EndIf} + + ${NSD_CreateLabel} 0 0 100% 12u "You have existing settings at:" + ${NSD_CreateLabel} 0 20 100% 12u $PREVHOME + ${NSD_CreateLabel} 0 40 100% 12u "Do you wish to migrate this data to:" + ${NSD_CreateLabel} 0 60 100% 12u $BLENDERHOME + ${NSD_CreateLabel} 0 80 100% 12u "Please note: If you choose no, Blender will not be able to use these files!" + ${NSD_CreateRadioButton} 0 100 100% 12u "Yes" + Pop $HWND_BUTTON_YES + ${NSD_CreateRadioButton} 0 120 100% 12u "No" + Pop $HWND_BUTTON_NO + + SendMessage $HWND_BUTTON_YES ${BM_SETCHECK} 1 0 + + nsDialogs::Show + nochange: + +FunctionEnd + +Function MigrateUserSettings + ${NSD_GetState} $HWND_BUTTON_YES $R0 + ${If} $R0 == "1" + CreateDirectory $BLENDERHOME + CopyFiles $PREVHOME\*.* $BLENDERHOME + ;RMDir /r $PREVHOME + ${EndIf} +FunctionEnd + +!define DLL_VER "8.00.50727.42" +!define DLL_VER2 "7.10.3052.4" + +Function LocateCallback_80 + MoreInfo::GetProductVersion "$R9" + Pop $0 + + ${VersionCompare} "$0" "${DLL_VER}" $R1 + + StrCmp $R1 0 0 new + new: + StrCmp $R1 1 0 old + old: + StrCmp $R1 2 0 end + ; Found DLL is older + Call DownloadDLL + + end: + StrCpy "$0" StopLocate + StrCpy $DLL_found "true" + Push "$0" + +FunctionEnd + +Function LocateCallback_71 + MoreInfo::GetProductVersion "$R9" + Pop $0 + + ${VersionCompare} "$0" "${DLL_VER2}" $R1 + + StrCmp $R1 0 0 new + new: + StrCmp $R1 1 0 old + old: + StrCmp $R1 2 0 end + ; Found DLL is older + + end: + StrCpy "$0" StopLocate + StrCpy $DLL_found "true" + Push "$0" + +FunctionEnd + +Function DownloadDLL + MessageBox MB_OK "You will need to download the Microsoft Visual C++ 2005 Redistributable Package in order to run Blender. Pressing OK will take you to the download page, please follow the instructions on the page that appears." + StrCpy $0 "http://www.microsoft.com/downloads/details.aspx?familyid=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=en" + Call openLinkNewWindow +FunctionEnd + +Function DataLocation + nsDialogs::Create /NOUNLOAD 1018 + Pop $HWND + + ${If} $HWND == error + Abort + ${EndIf} + + ${NSD_CreateLabel} 0 0 100% 12u "Please specify where you wish to install Blender's user data files." + ${NSD_CreateRadioButton} 0 20 100% 12u "Use the Application Data directory (Requires Windows 2000 or better)" + Pop $HWND_APPDATA + ${NSD_CreateRadioButton} 0 50 100% 12u "Use the installation directory (ie. location chosen to install blender.exe)." + Pop $HWND_INSTDIR + ${NSD_CreateRadioButton} 0 80 100% 12u "I have defined a %HOME% variable, please install files here." + Pop $HWND_HOMEDIR + + ${If} ${AtMostWinME} + GetDlgItem $0 $HWND $HWND_APPDATA + EnableWindow $0 0 + SendMessage $HWND_INSTDIR ${BM_SETCHECK} 1 0 + ${Else} + SendMessage $HWND_APPDATA ${BM_SETCHECK} 1 0 + ${EndIf} + + nsDialogs::Show + +FunctionEnd + +Function DataLocationOnLeave + StrCpy $SETUSERCONTEXT "false" + ${NSD_GetState} $HWND_APPDATA $R0 + ${If} $R0 == "1" + StrCpy $SETUSERCONTEXT "true" + ${Else} + ${NSD_GetState} $HWND_INSTDIR $R0 + ${If} $R0 == "1" + Call SetWin9xPath + ${Else} + ${NSD_GetState} $HWND_HOMEDIR $R0 + ${If} $R0 == "1" + ReadEnvStr $BLENDERHOME "HOME" + ${EndIf} + ${EndIf} + ${EndIf} +FunctionEnd + +Var HWND_APPDATA_CURRENT +Var HWND_APPDATA_ALLUSERS + +Function AppDataChoice + StrCmp $SETUSERCONTEXT "false" skip + + nsDialogs::Create /NOUNLOAD 1018 + Pop $HWND + + ${NSD_CreateLabel} 0 0 100% 12u "Please choose which Application Data directory to use." + ${NSD_CreateRadioButton} 0 40 100% 12u "Current User" + Pop $HWND_APPDATA_CURRENT + ${NSD_CreateRadioButton} 0 70 100% 12u "All Users" + Pop $HWND_APPDATA_ALLUSERS + + SendMessage $HWND_APPDATA_CURRENT ${BM_SETCHECK} 1 0 + + StrCmp $SETUSERCONTEXT "true" 0 skip ; show dialog if we need to set context, otherwise skip it + nsDialogs::Show + +skip: + +FunctionEnd + +Function AppDataChoiceOnLeave + StrCmp $SETUSERCONTEXT "false" skip + ${NSD_GetState} $HWND_APPDATA_CURRENT $R0 + ${If} $R0 == "1" + Call SetWinXPPathCurrentUser + ${Else} + Call SetWinXPPathAllUsers + ${EndIf} +skip: + +FunctionEnd + +Section "Blender-[VERSION] (required)" SecCopyUI + SectionIn RO + + ; Set output path to the installation directory. + SetOutPath $INSTDIR + ; Put file there + [ROOTDIRCONTS] + + ;SetOutPath $BLENDERHOME\$BLENDERVERSION + ;[DATAFILES] ; and we write datafiles to user accessable dir + [DODATAFILES] + + SetOutPath $INSTDIR + ; Write the installation path into the registry + WriteRegStr HKLM SOFTWARE\BlenderFoundation "Install_Dir" "$INSTDIR" + ; Write the uninstall keys for Windows + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "DisplayName" "Blender (remove only)" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "UninstallString" '"$INSTDIR\uninstall.exe"' + WriteUninstaller "uninstall.exe" + + ; Check for msvcr80.dll - give notice to download if not found + MessageBox MB_OK "The installer will now check your system for the required system dlls." + StrCpy $1 $WINDIR + StrCpy $DLL_found "false" + ${Locate} "$1" "/L=F /M=MSVCR80.DLL /S=0B" "LocateCallback_80" + StrCmp $DLL_found "false" 0 +2 + Call DownloadDLL + StrCpy $1 $WINDIR + StrCpy $DLL_found "false" + ${Locate} "$1" "/L=F /M=MSVCR71.DLL /S=0B" "LocateCallback_71" + StrCmp $DLL_found "false" 0 +2 + +SectionEnd + +Section "Add Start Menu shortcuts" Section2 + SetOutPath $INSTDIR + CreateDirectory "$SMPROGRAMS\Blender Foundation\Blender\" + CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 + CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Blender.lnk" "$INSTDIR\Blender.exe" "" "$INSTDIR\blender.exe" 0 + CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Readme.lnk" "$INSTDIR\Blender.html" "" "" 0 + CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Copyright.lnk" "$INSTDIR\Copyright.txt" "" "$INSTDIR\copyright.txt" 0 + CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\GPL-license.lnk" "$INSTDIR\GPL-license.txt" "" "$INSTDIR\GPL-license.txt" 0 + CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Help.lnk" "$INSTDIR\Help.url" +SectionEnd + +Section "Add Desktop Blender-[VERSION] shortcut" Section3 + SetOutPath $INSTDIR + CreateShortCut "$DESKTOP\Blender.lnk" "$INSTDIR\blender.exe" "" "$INSTDIR\blender.exe" 0 +SectionEnd + +Section "Open .blend files with Blender-[VERSION]" Section4 + SetOutPath $INSTDIR + ;ExecShell "open" '"$INSTDIR\blender.exe"' "-R -b" + ;do it the manual way! ;) + + WriteRegStr HKCR ".blend" "" "blendfile" + WriteRegStr HKCR "blendfile" "" "Blender .blend File" + WriteRegStr HKCR "blendfile\shell" "" "open" + WriteRegStr HKCR "blendfile\DefaultIcon" "" $INSTDIR\blender.exe,1 + WriteRegStr HKCR "blendfile\shell\open\command" "" \ + '"$INSTDIR\blender.exe" "%1"' + +SectionEnd + +UninstallText "This will uninstall Blender [VERSION]. Hit next to continue." + +Section "Uninstall" + ; remove registry keys + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" + DeleteRegKey HKLM SOFTWARE\BlenderFoundation + ; remove files + [DELROOTDIRCONTS] + + Delete $INSTDIR\.blender\.bfont.ttf + Delete $INSTDIR\.blender\.Blanguages + ; remove shortcuts, if any. + Delete "$SMPROGRAMS\Blender Foundation\Blender\*.*" + Delete "$DESKTOP\Blender.lnk" + ; remove directories used. + RMDir /r $INSTDIR\.blender\locale + MessageBox MB_YESNO "Erase .blender\scripts folder? (ALL contents will be erased!)" IDNO Next + RMDir /r $INSTDIR\.blender\scripts + RMDir /r $INSTDIR\.blender\scripts\bpymodules + RMDir /r $INSTDIR\.blender\scripts\bpydata + RMDir /r $INSTDIR\.blender\scripts\bpydata\config +Next: + RMDir /r $INSTDIR\plugins\include + RMDir /r $INSTDIR\plugins + RMDir $INSTDIR\.blender + RMDir "$SMPROGRAMS\Blender Foundation\Blender" + RMDir "$SMPROGRAMS\Blender Foundation" + RMDir "$INSTDIR" + RMDir "$INSTDIR\.." +SectionEnd + +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecCopyUI} $(DESC_SecCopyUI) + !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2) + !insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(DESC_Section3) + !insertmacro MUI_DESCRIPTION_TEXT ${Section4} $(DESC_Section4) +!insertmacro MUI_FUNCTION_DESCRIPTION_END + diff --git a/release/windows/installer/1100.sconsblender.nsi b/release/windows/installer/1100.sconsblender.nsi new file mode 100644 index 00000000000..3b345371440 --- /dev/null +++ b/release/windows/installer/1100.sconsblender.nsi @@ -0,0 +1,425 @@ +; +; $Id: 00.sconsblender.nsi 14503 2008-04-21 15:53:32Z aphex $ +; +; Blender Self-Installer for Windows (NSIS - http://nsis.sourceforge.net) +; +; Requires the MoreInfo plugin - http://nsis.sourceforge.net/MoreInfo_plug-in +; + +!include "MUI.nsh" +!include "WinVer.nsh" +!include "FileFunc.nsh" +!include "WordFunc.nsh" +!include "nsDialogs.nsh" + +SetCompressor /SOLID lzma + +Name "Blender VERSION" + +!define MUI_ABORTWARNING + +!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of Blender.\r\n\r\nIt is recommended that you close all other applications before starting Setup.\r\n\r\nNote to Win2k/XP users: You may require administrator privileges to install Blender successfully." +!define MUI_WELCOMEFINISHPAGE_BITMAP "RELDIR\01.installer.bmp" +!define MUI_HEADERIMAGE +!define MUI_HEADERIMAGE_BITMAP "RELDIR\00.header.bmp" +!define MUI_COMPONENTSPAGE_SMALLDESC +!define MUI_FINISHPAGE_RUN "$INSTDIR\blender.exe" +!define MUI_CHECKBITMAP "RELDIR\00.checked.bmp" + +!insertmacro MUI_PAGE_WELCOME +!insertmacro MUI_PAGE_LICENSE "DISTDIR\Copyright.txt" +!insertmacro MUI_PAGE_COMPONENTS + +!insertmacro MUI_PAGE_DIRECTORY +Page custom DataLocation DataLocationOnLeave +Page custom AppDataChoice AppDataChoiceOnLeave +Page custom PreMigrateUserSettings MigrateUserSettings +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH + +!insertmacro MUI_UNPAGE_WELCOME +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES +!insertmacro MUI_UNPAGE_FINISH + +!insertmacro Locate +!insertmacro VersionCompare + + +Icon "RELDIR\00.installer.ico" +UninstallIcon "RELDIR\00.installer.ico" + +;-------------------------------- +;Languages + + !insertmacro MUI_LANGUAGE "English" + +;-------------------------------- +;Language Strings + + ;Description + LangString DESC_SecCopyUI ${LANG_ENGLISH} "Copy all required files to the application folder." + LangString DESC_Section2 ${LANG_ENGLISH} "Add shortcut items to the Start Menu. (Recommended)" + LangString DESC_Section3 ${LANG_ENGLISH} "Add a shortcut to Blender on your desktop." + LangString DESC_Section4 ${LANG_ENGLISH} "Blender can register itself with .blend files to allow double-clicking from Windows Explorer, etc." + LangString TEXT_IO_TITLE ${LANG_ENGLISH} "Specify User Data Location" +;-------------------------------- +;Data + +Caption "Blender VERSION Installer" +OutFile "DISTDIR\..\blender-VERSION-windows.exe" +InstallDir "$PROGRAMFILES\Blender Foundation\Blender" + +BrandingText "http://www.blender.org" +ComponentText "This will install Blender VERSION on your computer." + +DirText "Use the field below to specify the folder where you want Blender to be copied to. To specify a different folder, type a new name or use the Browse button to select an existing folder." + +SilentUnInstall normal + +# Uses $0 +Function openLinkNewWindow + Push $3 + Push $2 + Push $1 + Push $0 + ReadRegStr $0 HKCR "http\shell\open\command" "" +# Get browser path + DetailPrint $0 + StrCpy $2 '"' + StrCpy $1 $0 1 + StrCmp $1 $2 +2 # if path is not enclosed in " look for space as final char + StrCpy $2 ' ' + StrCpy $3 1 + loop: + StrCpy $1 $0 1 $3 + DetailPrint $1 + StrCmp $1 $2 found + StrCmp $1 "" found + IntOp $3 $3 + 1 + Goto loop + + found: + StrCpy $1 $0 $3 + StrCmp $2 " " +2 + StrCpy $1 '$1"' + + Pop $0 + Exec '$1 $0' + Pop $1 + Pop $2 + Pop $3 +FunctionEnd + +Var BLENDERHOME +Var DLL_found +Var PREVHOME + +Function SetWinXPPathCurrentUser + SetShellVarContext current + StrCpy $BLENDERHOME "$APPDATA\Blender Foundation\Blender" +FunctionEnd + +Function SetWinXPPathAllUsers + SetShellVarContext all + StrCpy $BLENDERHOME "$APPDATA\Blender Foundation\Blender" +FunctionEnd + +Function SetWin9xPath + StrCpy $BLENDERHOME $INSTDIR +FunctionEnd + +; custom controls +Var HWND + +Var HWND_APPDATA +Var HWND_INSTDIR +Var HWND_HOMEDIR + +Var HWND_BUTTON_YES +Var HWND_BUTTON_NO + +Var SETUSERCONTEXT + +Function PreMigrateUserSettings + StrCpy $PREVHOME "$PROFILE\Application Data\Blender Foundation\Blender" + StrCpy $0 "$PROFILE\Application Data\Blender Foundation\Blender\.blender" + + IfFileExists $0 0 nochange + + StrCmp $BLENDERHOME $PREVHOME nochange + + nsDialogs::Create /NOUNLOAD 1018 + Pop $HWND + + ${If} $HWND == error + Abort + ${EndIf} + + ${NSD_CreateLabel} 0 0 100% 12u "You have existing settings at:" + ${NSD_CreateLabel} 0 20 100% 12u $PREVHOME + ${NSD_CreateLabel} 0 40 100% 12u "Do you wish to migrate this data to:" + ${NSD_CreateLabel} 0 60 100% 12u $BLENDERHOME + ${NSD_CreateLabel} 0 80 100% 12u "Please note: If you choose no, Blender will not be able to use these files!" + ${NSD_CreateRadioButton} 0 100 100% 12u "Yes" + Pop $HWND_BUTTON_YES + ${NSD_CreateRadioButton} 0 120 100% 12u "No" + Pop $HWND_BUTTON_NO + + SendMessage $HWND_BUTTON_YES ${BM_SETCHECK} 1 0 + + nsDialogs::Show + nochange: + +FunctionEnd + +Function MigrateUserSettings + ${NSD_GetState} $HWND_BUTTON_YES $R0 + ${If} $R0 == "1" + CreateDirectory $BLENDERHOME + CopyFiles $PREVHOME\*.* $BLENDERHOME + ;RMDir /r $PREVHOME + ${EndIf} +FunctionEnd + +!define DLL_VER "8.00.50727.42" +!define DLL_VER2 "7.10.3052.4" + +Function LocateCallback_80 + MoreInfo::GetProductVersion "$R9" + Pop $0 + + ${VersionCompare} "$0" "${DLL_VER}" $R1 + + StrCmp $R1 0 0 new + new: + StrCmp $R1 1 0 old + old: + StrCmp $R1 2 0 end + ; Found DLL is older + Call DownloadDLL + + end: + StrCpy "$0" StopLocate + StrCpy $DLL_found "true" + Push "$0" + +FunctionEnd + +Function LocateCallback_71 + MoreInfo::GetProductVersion "$R9" + Pop $0 + + ${VersionCompare} "$0" "${DLL_VER2}" $R1 + + StrCmp $R1 0 0 new + new: + StrCmp $R1 1 0 old + old: + StrCmp $R1 2 0 end + ; Found DLL is older + Call PythonInstall + + end: + StrCpy "$0" StopLocate + StrCpy $DLL_found "true" + Push "$0" + +FunctionEnd + +Function DownloadDLL + MessageBox MB_OK "You will need to download the Microsoft Visual C++ 2005 Redistributable Package in order to run Blender. Pressing OK will take you to the download page, please follow the instructions on the page that appears." + StrCpy $0 "http://www.microsoft.com/downloads/details.aspx?familyid=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=en" + Call openLinkNewWindow +FunctionEnd + +Function PythonInstall + MessageBox MB_OK "You will need to install python 2.5 in order to run blender. Pressing OK will take you to the python.org website." + StrCpy $0 "http://www.python.org" + Call openLinkNewWindow +FunctionEnd + +Function DataLocation + nsDialogs::Create /NOUNLOAD 1018 + Pop $HWND + + ${If} $HWND == error + Abort + ${EndIf} + + ${NSD_CreateLabel} 0 0 100% 12u "Please specify where you wish to install Blender's user data files." + ${NSD_CreateRadioButton} 0 20 100% 12u "Use the Application Data directory (Requires Windows 2000 or better)" + Pop $HWND_APPDATA + ${NSD_CreateRadioButton} 0 50 100% 12u "Use the installation directory (ie. location chosen to install blender.exe)." + Pop $HWND_INSTDIR + ${NSD_CreateRadioButton} 0 80 100% 12u "I have defined a %HOME% variable, please install files here." + Pop $HWND_HOMEDIR + + ${If} ${AtMostWinME} + GetDlgItem $0 $HWND $HWND_APPDATA + EnableWindow $0 0 + SendMessage $HWND_INSTDIR ${BM_SETCHECK} 1 0 + ${Else} + SendMessage $HWND_APPDATA ${BM_SETCHECK} 1 0 + ${EndIf} + + nsDialogs::Show + +FunctionEnd + +Function DataLocationOnLeave + StrCpy $SETUSERCONTEXT "false" + ${NSD_GetState} $HWND_APPDATA $R0 + ${If} $R0 == "1" + StrCpy $SETUSERCONTEXT "true" + ${Else} + ${NSD_GetState} $HWND_INSTDIR $R0 + ${If} $R0 == "1" + Call SetWin9xPath + ${Else} + ${NSD_GetState} $HWND_HOMEDIR $R0 + ${If} $R0 == "1" + ReadEnvStr $BLENDERHOME "HOME" + ${EndIf} + ${EndIf} + ${EndIf} +FunctionEnd + +Var HWND_APPDATA_CURRENT +Var HWND_APPDATA_ALLUSERS + +Function AppDataChoice + StrCmp $SETUSERCONTEXT "false" skip + + nsDialogs::Create /NOUNLOAD 1018 + Pop $HWND + + ${NSD_CreateLabel} 0 0 100% 12u "Please choose which Application Data directory to use." + ${NSD_CreateRadioButton} 0 40 100% 12u "Current User" + Pop $HWND_APPDATA_CURRENT + ${NSD_CreateRadioButton} 0 70 100% 12u "All Users" + Pop $HWND_APPDATA_ALLUSERS + + SendMessage $HWND_APPDATA_CURRENT ${BM_SETCHECK} 1 0 + + StrCmp $SETUSERCONTEXT "true" 0 skip ; show dialog if we need to set context, otherwise skip it + nsDialogs::Show + +skip: + +FunctionEnd + +Function AppDataChoiceOnLeave + StrCmp $SETUSERCONTEXT "false" skip + ${NSD_GetState} $HWND_APPDATA_CURRENT $R0 + ${If} $R0 == "1" + Call SetWinXPPathCurrentUser + ${Else} + Call SetWinXPPathAllUsers + ${EndIf} +skip: + +FunctionEnd + +Section "Blender-VERSION (required)" SecCopyUI + SectionIn RO + + ; Set output path to the installation directory. + SetOutPath $INSTDIR + ; Put file there + [ROOTDIRCONTS] + + ;SetOutPath $BLENDERHOME\$BLENDERVERSION + ;[DATAFILES] ; and we write datafiles to user accessable dir + [DODATAFILES] + + SetOutPath $INSTDIR + ; Write the installation path into the registry + WriteRegStr HKLM SOFTWARE\BlenderFoundation "Install_Dir" "$INSTDIR" + ; Write the uninstall keys for Windows + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "DisplayName" "Blender (remove only)" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "UninstallString" '"$INSTDIR\uninstall.exe"' + WriteUninstaller "uninstall.exe" + + ; Check for msvcr80.dll - give notice to download if not found + MessageBox MB_OK "The installer will now check your system for the required system dlls." + StrCpy $1 $WINDIR + StrCpy $DLL_found "false" + ${Locate} "$1" "/L=F /M=MSVCR80.DLL /S=0B" "LocateCallback_80" + StrCmp $DLL_found "false" 0 +2 + Call DownloadDLL + StrCpy $1 $WINDIR + StrCpy $DLL_found "false" + ${Locate} "$1" "/L=F /M=MSVCR71.DLL /S=0B" "LocateCallback_71" + StrCmp $DLL_found "false" 0 +2 + Call PythonInstall + +SectionEnd + +Section "Add Start Menu shortcuts" Section2 + SetOutPath $INSTDIR + CreateDirectory "$SMPROGRAMS\Blender Foundation\Blender\" + CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 + CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Blender.lnk" "$INSTDIR\Blender.exe" "" "$INSTDIR\blender.exe" 0 + CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Readme.lnk" "$INSTDIR\Blender.html" "" "" 0 + CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Copyright.lnk" "$INSTDIR\Copyright.txt" "" "$INSTDIR\copyright.txt" 0 + CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\GPL-license.lnk" "$INSTDIR\GPL-license.txt" "" "$INSTDIR\GPL-license.txt" 0 + CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Help.lnk" "$INSTDIR\Help.url" +SectionEnd + +Section "Add Desktop Blender-VERSION shortcut" Section3 + SetOutPath $INSTDIR + CreateShortCut "$DESKTOP\Blender.lnk" "$INSTDIR\blender.exe" "" "$INSTDIR\blender.exe" 0 +SectionEnd + +Section "Open .blend files with Blender-VERSION" Section4 + SetOutPath $INSTDIR + ;ExecShell "open" '"$INSTDIR\blender.exe"' "-R -b" + ;do it the manual way! ;) + + WriteRegStr HKCR ".blend" "" "blendfile" + WriteRegStr HKCR "blendfile" "" "Blender .blend File" + WriteRegStr HKCR "blendfile\shell" "" "open" + WriteRegStr HKCR "blendfile\DefaultIcon" "" $INSTDIR\blender.exe,1 + WriteRegStr HKCR "blendfile\shell\open\command" "" \ + '"$INSTDIR\blender.exe" "%1"' + +SectionEnd + +UninstallText "This will uninstall Blender VERSION. Hit next to continue." + +Section "Uninstall" + ; remove registry keys + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" + DeleteRegKey HKLM SOFTWARE\BlenderFoundation + ; remove files + [DELROOTDIRCONTS] + + Delete $INSTDIR\.blender\.bfont.ttf + Delete $INSTDIR\.blender\.Blanguages + ; remove shortcuts, if any. + Delete "$SMPROGRAMS\Blender Foundation\Blender\*.*" + Delete "$DESKTOP\Blender.lnk" + ; remove directories used. + RMDir /r $INSTDIR\.blender\locale + MessageBox MB_YESNO "Erase .blender\scripts folder? (ALL contents will be erased!)" IDNO Next + RMDir /r $INSTDIR\.blender\scripts + RMDir /r $INSTDIR\.blender\scripts\bpymodules + RMDir /r $INSTDIR\.blender\scripts\bpydata + RMDir /r $INSTDIR\.blender\scripts\bpydata\config +Next: + RMDir /r $INSTDIR\plugins\include + RMDir /r $INSTDIR\plugins + RMDir $INSTDIR\.blender + RMDir "$SMPROGRAMS\Blender Foundation\Blender" + RMDir "$SMPROGRAMS\Blender Foundation" + RMDir "$INSTDIR" + RMDir "$INSTDIR\.." +SectionEnd + +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecCopyUI} $(DESC_SecCopyUI) + !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2) + !insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(DESC_Section3) + !insertmacro MUI_DESCRIPTION_TEXT ${Section4} $(DESC_Section4) +!insertmacro MUI_FUNCTION_DESCRIPTION_END diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 7be8e069bd0..36348f0cbac 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -72,6 +72,7 @@ /* local */ static int add_win32_extension(char *name); +static char *blender_version_decimal(void); /* implementation */ @@ -745,17 +746,15 @@ char *BLI_gethome(void) { ret = getenv("HOME"); if(ret) { - sprintf(dir, "%s\\.blender", ret); + sprintf(dir, "%s\\%s", ret, blender_version_decimal()); if (BLI_exists(dir)) return dir; } /* else, check install dir (path containing blender.exe) */ - BLI_getInstallationDir(dir); - - if (BLI_exists(dir)) + if(BLI_getInstallationDir(ret)) { - strcat(dir,"\\.blender"); + sprintf(dir, "%s", ret, blender_version_decimal()); if (BLI_exists(dir)) return(dir); } @@ -773,7 +772,7 @@ char *BLI_gethome(void) { sprintf(dir, "%s\\Blender Foundation\\Blender", appdatapath); BLI_recurdir_fileops(dir); if (BLI_exists(dir)) { - strcat(dir,"\\.blender"); + sprintf(dir,"%s\\%s", dir, blender_version_decimal()); if(BLI_exists(dir)) return(dir); } } @@ -785,7 +784,7 @@ char *BLI_gethome(void) { sprintf(dir, "%s\\Blender Foundation\\Blender", appdatapath); BLI_recurdir_fileops(dir); if (BLI_exists(dir)) { - strcat(dir,"\\.blender"); + sprintf(dir,"%s\\%s", dir, blender_version_decimal()); if(BLI_exists(dir)) return(dir); } } diff --git a/tools/btools.py b/tools/btools.py index cb3ccd3ba03..9add22d8270 100644 --- a/tools/btools.py +++ b/tools/btools.py @@ -451,26 +451,37 @@ def NSIS_print(target, source, env): def NSIS_Installer(target=None, source=None, env=None): - if env['OURPLATFORM'] != 'win32-vc' and env['OURPLATFORM'] != 'win32-mingw': + if env['OURPLATFORM'] not in ('win32-vc', 'win32-mingw', 'win64-vc'): print "NSIS installer is only available on Windows." Exit() start_dir = os.getcwd() - rel_dir = start_dir + "\\release\\windows\\installer\\" - install_base_dir = start_dir + "\\" - - if not os.path.exists(install_base_dir+env['BF_INSTALLDIR']+'/plugins/include'): - os.mkdir(install_base_dir+env['BF_INSTALLDIR']+'/plugins/include') - - for f in glob.glob('source/blender/blenpluginapi/*.h'): - shutil.copy(f,install_base_dir+env['BF_INSTALLDIR']+'/plugins/include') + rel_dir = os.path.join(start_dir,'release','windows','installer') + install_base_dir = start_dir + os.sep + + bf_installdir = os.path.join(os.getcwd(),env['BF_INSTALLDIR']) + bf_installdir = os.path.normpath(bf_installdir) + + doneroot = False + rootdirconts = [] + datafiles = '' + l = len(bf_installdir) + for dp,dn,df in os.walk(bf_installdir): + if not doneroot: + for f in df: + rootdirconts.append(os.path.join(dp,f)) + doneroot = True + else: + datafiles += "\n"+r'SetOutPath $BLENDERHOME'+dp[l:]+"\n\n" + + for f in df: + outfile = os.path.join(dp,f) + datafiles += ' File '+outfile + "\n" - shutil.copy('source/blender/blenpluginapi/plugin.def',install_base_dir+env['BF_INSTALLDIR']+'/plugins/include/') os.chdir("release") v = open("VERSION") version = v.read()[:-1] - shortver = version.split('.')[0] + version.split('.')[1] v.close() #### change to suit install dir #### @@ -484,136 +495,34 @@ def NSIS_Installer(target=None, source=None, env=None): ns_cnt = str(ns.read()) ns.close() - # set Python version we compile against - ns_cnt = string.replace(ns_cnt, "[PYTHON_VERSION]", env['BF_PYTHON_VERSION']) + # var replacements + ns_cnt = string.replace(ns_cnt, "[DISTDIR]", os.path.normpath(inst_dir+"\\")) + ns_cnt = string.replace(ns_cnt, "[VERSION]", version) + ns_cnt = string.replace(ns_cnt, "[RELDIR]", os.path.normpath(rel_dir)) # do root rootlist = [] - rootdir = os.listdir(inst_dir+"\\") - for rootitem in rootdir: - if os.path.isdir(inst_dir+"\\"+ rootitem) == 0: - rootlist.append("File \"" + os.path.normpath(inst_dir) + "\\" + rootitem+"\"") + for rootitem in rootdirconts: + rootlist.append("File \"" + rootitem + "\"") rootstring = string.join(rootlist, "\n ") + rootstring = rootstring rootstring += "\n\n" ns_cnt = string.replace(ns_cnt, "[ROOTDIRCONTS]", rootstring) + #print rootstring + #print datafiles + print "="*50 + # do delete items delrootlist = [] - for rootitem in rootdir: - if os.path.isdir(inst_dir + rootitem) == 0: - delrootlist.append("Delete $INSTDIR\\" + rootitem) + for rootitem in rootdirconts: + delrootlist.append("Delete $INSTDIR\\" + rootitem[l+1:]) delrootstring = string.join(delrootlist, "\n ") delrootstring += "\n" ns_cnt = string.replace(ns_cnt, "[DELROOTDIRCONTS]", delrootstring) - # do scripts - scriptlist = [] - scriptpath = "%s%s" % (inst_dir, "\\.blender\\scripts") - scriptdir = os.listdir(scriptpath) - for scriptitem in scriptdir: - scriptfile = "%s\\%s" % (scriptpath, scriptitem) - if os.path.isdir(scriptfile) == 0: - scriptfile = os.path.normpath(scriptfile) - scriptlist.append("File \"%s\"" % scriptfile) - scriptstring = string.join(scriptlist, "\n ") - scriptstring += "\n\n" - ns_cnt = string.replace(ns_cnt, "[SCRIPTCONTS]", scriptstring) + ns_cnt = string.replace(ns_cnt, "[DODATAFILES]", datafiles) - # do scripts\bpymodules - bpymodlist = [] - bpymodpath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpymodules") - bpymoddir = os.listdir(bpymodpath) - - for bpymoditem in bpymoddir: - bpymodfile = "%s\\%s" % (bpymodpath, bpymoditem) - if os.path.isdir(bpymodfile) == 0: - bpymodfile = os.path.normpath(bpymodfile) - bpymodlist.append("File \"%s\"" % bpymodfile) - bpymodstring = string.join(bpymodlist, "\n ") - bpymodstring += "\n\n" - ns_cnt = string.replace(ns_cnt, "[SCRIPTMODCONTS]", bpymodstring) - - # do scripts\bpymodules\colladaimex - colladalist = [] - bpymodpath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpymodules\\ColladaImEx") - bpymoddir = os.listdir(bpymodpath) - - for bpymoditem in bpymoddir: - bpymodfile = "%s\\%s" % (bpymodpath, bpymoditem) - if os.path.isdir(bpymodfile) == 0: - bpymodfile=os.path.normpath(bpymodfile) - colladalist.append("File \"%s\"" % bpymodfile) - bpymodstring = string.join(colladalist, "\n ") - bpymodstring += "\n\n" - ns_cnt = string.replace(ns_cnt, "[SCRIPTMODCOLLADACONT]", bpymodstring) - - # do scripts\bpydata - bpydatalist = [] - bpydatapath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpydata") - bpydatadir = os.listdir(bpydatapath) - for bpydataitem in bpydatadir: - bpydatafile = "%s\\%s" % (bpydatapath, bpydataitem) - if os.path.isdir(bpydatafile) == 0: - bpydatalist.append("File \"%s\"" % bpydatafile) - bpydatastring = string.join(bpydatalist, "\n ") - bpydatastring += "\n\n" - ns_cnt = string.replace(ns_cnt, "[SCRIPTDATACONTS]", bpydatastring) - - # do plugins\include - plugincludelist = [] - plugincludepath = "%s%s" % (inst_dir, "\\plugins\\include") - plugincludedir = os.listdir(plugincludepath) - for plugincludeitem in plugincludedir: - plugincludefile = "%s\\%s" % (plugincludepath, plugincludeitem) - if os.path.isdir(plugincludefile) == 0: - if plugincludefile.find('.h') or plugincludefile.find('.DEF'): - plugincludefile = os.path.normpath(plugincludefile) - plugincludelist.append("File \"%s\"" % plugincludefile) - plugincludestring = string.join(plugincludelist, "\n ") - plugincludestring += "\n\n" - ns_cnt = string.replace(ns_cnt, "[PLUGINCONTS]", plugincludestring) - - # do scripts\bpydata\config - cfglist = [] - cfgpath = "%s%s" % (inst_dir, "\\.blender\\scripts\\bpydata\\config") - cfgdir = os.listdir(cfgpath) - for cfgitem in cfgdir: - cfgfile = "%s\\%s" % (cfgpath, cfgitem) - if os.path.isdir(cfgfile) == 0: - cfglist.append("File \"%s\"" % cfgfile) - cfgstring = string.join(cfglist, "\n ") - cfgstring += "\n\n" - ns_cnt = string.replace(ns_cnt, "[SCRIPTDATACFGCONTS]", cfgstring) - - # do dotblender - dotblendlist = [] - dotblenddir = os.listdir(inst_dir+"\\.blender") - for dotblenditem in dotblenddir: - if os.path.isdir(inst_dir + "\\.blender\\" + dotblenditem) == 0: - dotblendlist.append("File \"" + os.path.normpath(inst_dir) + "\\.blender\\" + - dotblenditem+"\"") - dotblendstring = string.join(dotblendlist, "\n ") - dotblendstring += "\n\n" - ns_cnt = string.replace(ns_cnt, "[DOTBLENDERCONTS]", dotblendstring) - - # do language files - langlist = [] - langfiles = [] - langdir = os.listdir(inst_dir + "\\.blender\\locale") - for langitem in langdir: - if os.path.isdir(inst_dir + "\\.blender\\locale\\" + langitem) == 1: - langfiles.append("SetOutPath $BLENDERHOME\\.blender\\locale\\" + langitem + "\\LC_MESSAGES") - langfiles.append("File \"" + os.path.normpath(inst_dir) + "\\.blender\\locale\\" - + langitem + "\\LC_MESSAGES\\blender.mo\"") - langstring = string.join(langfiles, "\n ") - langstring += "\n\n" - ns_cnt = string.replace(ns_cnt, "[LANGUAGECONTS]", langstring) - - # var replacements - ns_cnt = string.replace(ns_cnt, "DISTDIR", os.path.normpath(inst_dir+"\\")) - ns_cnt = string.replace(ns_cnt, "SHORTVER", shortver) - ns_cnt = string.replace(ns_cnt, "VERSION", version) - ns_cnt = string.replace(ns_cnt, "RELDIR", os.path.normpath(rel_dir)) tmpnsi = os.path.normpath(install_base_dir+os.sep+env['BF_BUILDDIR']+os.sep+"00.blender_tmp.nsi") new_nsis = open(tmpnsi, 'w') From dd724f28266141731c20455b2bd0106cad779e25 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Mon, 5 Jul 2010 19:59:37 +0000 Subject: [PATCH 332/674] File/installation paths: osx (cocoa & carbon) update in ghost --- intern/ghost/GHOST_Path-api.h | 3 +- intern/ghost/intern/GHOST_SystemCarbon.cpp | 12 ++++- intern/ghost/intern/GHOST_SystemCocoa.mm | 52 ++++++---------------- 3 files changed, 26 insertions(+), 41 deletions(-) diff --git a/intern/ghost/GHOST_Path-api.h b/intern/ghost/GHOST_Path-api.h index 2f0e55a5b69..c38a4e2de88 100644 --- a/intern/ghost/GHOST_Path-api.h +++ b/intern/ghost/GHOST_Path-api.h @@ -45,8 +45,7 @@ extern const GHOST_TUns8* GHOST_getSystemDir(); /** * Determine the base dir in which user configuration is stored, not including versioning. - * If needed, it will create the base directory. - * @return Unsigned char string pointing to user dir (eg ~/.blender/). + * @return Unsigned char string pointing to user dir (eg ~). */ extern const GHOST_TUns8* GHOST_getUserDir(); diff --git a/intern/ghost/intern/GHOST_SystemCarbon.cpp b/intern/ghost/intern/GHOST_SystemCarbon.cpp index 977745589eb..ecdc03b4347 100644 --- a/intern/ghost/intern/GHOST_SystemCarbon.cpp +++ b/intern/ghost/intern/GHOST_SystemCarbon.cpp @@ -1238,5 +1238,15 @@ const GHOST_TUns8* GHOST_SystemCarbon::getUserDir() const const GHOST_TUns8* GHOST_SystemCarbon::getBinaryDir() const { - return NULL; + CFURLRef bundleURL; + CFStringRef pathStr; + static char path[256]; + CFBundleRef mainBundle = CFBundleGetMainBundle(); + + bundleURL = CFBundleCopyBundleURL(mainBundle); + pathStr = CFURLCopyFileSystemPath(bundleURL, kCFURLPOSIXPathStyle); + CFStringGetCString(pathStr, path, 255, kCFStringEncodingASCII); + CFRelease(pathStr); + CFRelease(bundleURL); + return (GHOST_TUns8*)path; } diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index b093510c700..f65d4e93d59 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -1783,27 +1783,20 @@ void GHOST_SystemCocoa::putClipboard(GHOST_TInt8 *buffer, bool selection) const #pragma mark Base directories retrieval -// TODO: this should only return base path, remove the appending of Blender or .blender const GHOST_TUns8* GHOST_SystemCocoa::getSystemDir() const { static GHOST_TUns8 tempPath[512] = ""; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSFileManager *fileManager; NSString *basePath; NSArray *paths; paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSLocalDomainMask, YES); if ([paths count] > 0) - basePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Blender"]; - else { //Fall back to standard unix path in case of issue - basePath = @"/usr/share/blender"; - } - - /* Ensure path exists, creates it if needed */ - fileManager = [NSFileManager defaultManager]; - if (![fileManager fileExistsAtPath:basePath isDirectory:NULL]) { - [fileManager createDirectoryAtPath:basePath attributes:nil]; + basePath = [paths objectAtIndex:0]; + else { + [pool drain]; + return NULL; } strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]); @@ -1812,56 +1805,39 @@ const GHOST_TUns8* GHOST_SystemCocoa::getSystemDir() const return tempPath; } -// TODO: this should only return base path, remove the appending of Blenbder or .blender const GHOST_TUns8* GHOST_SystemCocoa::getUserDir() const { static GHOST_TUns8 tempPath[512] = ""; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSFileManager *fileManager; NSString *basePath; NSArray *paths; paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); if ([paths count] > 0) - basePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Blender"]; - else { //Fall back to HOME in case of issue - basePath = [NSHomeDirectory() stringByAppendingPathComponent:@".blender"]; + basePath = [paths objectAtIndex:0]; + else { + [pool drain]; + return NULL; } - - /* Ensure path exists, creates it if needed */ - fileManager = [NSFileManager defaultManager]; - if (![fileManager fileExistsAtPath:basePath isDirectory:NULL]) { - [fileManager createDirectoryAtPath:basePath attributes:nil]; - } - + strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]); [pool drain]; return tempPath; } -// TODO: this is same as getUserDir for now const GHOST_TUns8* GHOST_SystemCocoa::getBinaryDir() const { static GHOST_TUns8 tempPath[512] = ""; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSFileManager *fileManager; NSString *basePath; - NSArray *paths; - - paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); - - if ([paths count] > 0) - basePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Blender"]; - else { //Fall back to HOME in case of issue - basePath = [NSHomeDirectory() stringByAppendingPathComponent:@".blender"]; - } - /* Ensure path exists, creates it if needed */ - fileManager = [NSFileManager defaultManager]; - if (![fileManager fileExistsAtPath:basePath isDirectory:NULL]) { - [fileManager createDirectoryAtPath:basePath attributes:nil]; + basePath = [[NSBundle mainBundle] bundlePath]; + + if (basePath == nil) { + [pool drain]; + return NULL; } strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]); From 4926667018caeb52cd8b59d85c3d00c35775d24d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 5 Jul 2010 21:43:46 +0000 Subject: [PATCH 333/674] change the range for sequencer lift/gamma/gain to be 2.0 max --- source/blender/makesrna/intern/rna_sequencer.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index c7c7888a938..5cd4db205f5 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -586,14 +586,17 @@ static void rna_def_strip_color_balance(BlenderRNA *brna) prop= RNA_def_property(srna, "lift", PROP_FLOAT, PROP_COLOR); RNA_def_property_ui_text(prop, "Lift", "Color balance lift (shadows)"); + RNA_def_property_ui_range(prop, 0, 2, 0.1, 3); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "gamma", PROP_FLOAT, PROP_COLOR); RNA_def_property_ui_text(prop, "Gamma", "Color balance gamma (midtones)"); + RNA_def_property_ui_range(prop, 0, 2, 0.1, 3); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "gain", PROP_FLOAT, PROP_COLOR); RNA_def_property_ui_text(prop, "Gain", "Color balance gain (highlights)"); + RNA_def_property_ui_range(prop, 0, 2, 0.1, 3); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "inverse_gain", PROP_BOOLEAN, PROP_NONE); From d9f86e3c7393621589aaf5813d0766b16c23a08c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 5 Jul 2010 22:22:22 +0000 Subject: [PATCH 334/674] pedantic pep8 warnings, mostly white space. --- release/scripts/modules/blend_render_info.py | 39 +++++++++--------- release/scripts/op/wm.py | 9 ++-- release/scripts/ui/properties_data_curve.py | 20 ++++----- .../ui/properties_object_constraint.py | 2 +- .../scripts/ui/properties_physics_softbody.py | 4 +- release/scripts/ui/space_info.py | 2 + release/scripts/ui/space_logic.py | 2 +- release/scripts/ui/space_time.py | 8 ++-- release/scripts/ui/space_userpref.py | 41 ++++++++++--------- release/scripts/ui/space_view3d.py | 4 +- release/scripts/ui/space_view3d_toolbar.py | 2 +- 11 files changed, 69 insertions(+), 64 deletions(-) diff --git a/release/scripts/modules/blend_render_info.py b/release/scripts/modules/blend_render_info.py index b7018ad6b64..dcd1f9cbee3 100755 --- a/release/scripts/modules/blend_render_info.py +++ b/release/scripts/modules/blend_render_info.py @@ -31,50 +31,51 @@ # int SDNAnr, nr; # } BHead; + def read_blend_rend_chunk(path): import struct - file = open(path, 'rb') - - head = file.read(7) + blendfile = open(path, 'rb') + + head = blendfile.read(7) if head[0:2] == b'\x1f\x8b': # gzip magic import gzip - file.close() - file = gzip.open(path, 'rb') - head = file.read(7) + blendfile.close() + blendfile = gzip.open(path, 'rb') + head = blendfile.read(7) if head != b'BLENDER': print("not a blend file:", path) - file.close() + blendfile.close() return [] - is_64_bit = (file.read(1) == b'-') + is_64_bit = (blendfile.read(1) == b'-') # true for PPC, false for X86 - is_big_endian = (file.read(1) == b'V') + is_big_endian = (blendfile.read(1) == b'V') # Now read the bhead chunk!!! - file.read(3) # skip the version + blendfile.read(3) # skip the version scenes = [] - + sizeof_bhead = 24 if is_64_bit else 20 - while file.read(4) == b'REND': + while blendfile.read(4) == b'REND': sizeof_bhead_left = sizeof_bhead - 4 - - rend_length = struct.unpack('>i' if is_big_endian else 'i' if is_big_endian else '2i' if is_big_endian else '<2i', file.read(8)) + blendfile.read(sizeof_bhead_left) - scene_name = file.read(24) + # Now we want the scene name, start and end frame. this is 32bites long + start_frame, end_frame = struct.unpack('>2i' if is_big_endian else '<2i', blendfile.read(8)) + + scene_name = blendfile.read(24) scene_name = scene_name[:scene_name.index(b'\0')] diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py index 481df3488b8..ed77f32ff6d 100644 --- a/release/scripts/op/wm.py +++ b/release/scripts/op/wm.py @@ -435,7 +435,7 @@ class WM_OT_path_open(bpy.types.Operator): bl_idname = "wm.path_open" bl_label = "" - filepath = StringProperty(name="File Path", maxlen= 1024) + filepath = StringProperty(name="File Path", maxlen=1024) def execute(self, context): import sys @@ -444,13 +444,13 @@ class WM_OT_path_open(bpy.types.Operator): filepath = bpy.utils.expandpath(self.properties.filepath) filepath = os.path.normpath(filepath) - + if not os.path.exists(filepath): self.report({'ERROR'}, "File '%s' not found" % filepath) return {'CANCELLED'} - + if sys.platform == 'win32': - subprocess.Popen(['start', filepath], shell= True) + subprocess.Popen(['start', filepath], shell=True) elif sys.platform == 'darwin': subprocess.Popen(['open', filepath]) else: @@ -463,7 +463,6 @@ class WM_OT_path_open(bpy.types.Operator): return {'FINISHED'} - class WM_OT_doc_view(bpy.types.Operator): '''Load online reference docs''' bl_idname = "wm.doc_view" diff --git a/release/scripts/ui/properties_data_curve.py b/release/scripts/ui/properties_data_curve.py index 21359e1dbe2..e1d6c9c7f04 100644 --- a/release/scripts/ui/properties_data_curve.py +++ b/release/scripts/ui/properties_data_curve.py @@ -367,21 +367,21 @@ class DATA_PT_textboxes(DataButtonsPanel): text = context.curve wide_ui = context.region.width > narrowui - + split = layout.split() col = split.column() col.operator("font.textbox_add", icon='ZOOMIN') if wide_ui: col = split.column() - + for i, box in enumerate(text.textboxes): - + boxy = layout.box() - + row = boxy.row() - + split = row.split() - + col = split.column(align=True) col.label(text="Dimensions:") @@ -390,13 +390,13 @@ class DATA_PT_textboxes(DataButtonsPanel): if wide_ui: col = split.column(align=True) - + col.label(text="Offset:") col.prop(box, "x", text="X") col.prop(box, "y", text="Y") - - row.operator("font.textbox_remove", text='', icon='X', emboss=False).index = i - + + row.operator("font.textbox_remove", text='', icon='X', emboss=False).index = i + classes = [ DATA_PT_context_curve, diff --git a/release/scripts/ui/properties_object_constraint.py b/release/scripts/ui/properties_object_constraint.py index 0f55c78c1fa..335bd25b501 100644 --- a/release/scripts/ui/properties_object_constraint.py +++ b/release/scripts/ui/properties_object_constraint.py @@ -33,7 +33,7 @@ class ConstraintButtonsPanel(bpy.types.Panel): wide_ui = context.region.width > narrowui compact_con = context.region.width < narrowcon - box = layout.template_constraint(con, compact = compact_con) + box = layout.template_constraint(con, compact=compact_con) if box: # match enum type to our functions, avoids a lookup table. diff --git a/release/scripts/ui/properties_physics_softbody.py b/release/scripts/ui/properties_physics_softbody.py index 3bd27f382c5..60149cf533b 100644 --- a/release/scripts/ui/properties_physics_softbody.py +++ b/release/scripts/ui/properties_physics_softbody.py @@ -189,10 +189,10 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel): col.label(text="Aerodynamics:") col.row().prop(softbody, "aerodynamics_type", expand=True) col.prop(softbody, "aero", text="Factor") - + #sub = col.column() #sub.enabled = softbody.aero > 0 - + col.label(text="Collision:") col.prop(softbody, "edge_collision", text="Edge") diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index db8750a28fb..cc9e47905f9 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -191,6 +191,7 @@ class INFO_MT_curve_add(bpy.types.Menu): layout.operator("curve.primitive_nurbs_circle_add", icon='CURVE_NCIRCLE', text="Nurbs Circle") layout.operator("curve.primitive_nurbs_path_add", icon='CURVE_PATH', text="Path") + class INFO_MT_surface_add(bpy.types.Menu): bl_idname = "INFO_MT_surface_add" bl_label = "Surface" @@ -205,6 +206,7 @@ class INFO_MT_surface_add(bpy.types.Menu): layout.operator("surface.primitive_nurbs_surface_sphere_add", icon='SURFACE_NSPHERE', text="NURBS Sphere") layout.operator("surface.primitive_nurbs_surface_donut_add", icon='SURFACE_NDONUT', text="NURBS Torus") + class INFO_MT_armature_add(bpy.types.Menu): bl_idname = "INFO_MT_armature_add" bl_label = "Armature" diff --git a/release/scripts/ui/space_logic.py b/release/scripts/ui/space_logic.py index ab602da12b6..a01a5ce6305 100644 --- a/release/scripts/ui/space_logic.py +++ b/release/scripts/ui/space_logic.py @@ -38,7 +38,7 @@ class LOGIC_PT_properties(bpy.types.Panel): layout.operator("object.game_property_new", text="Add Game Property", icon='ZOOMIN') for i, prop in enumerate(game.properties): - + box = layout.box() row = box.row() row.prop(prop, "name", text="") diff --git a/release/scripts/ui/space_time.py b/release/scripts/ui/space_time.py index 9469a722c0f..042e4dbc015 100644 --- a/release/scripts/ui/space_time.py +++ b/release/scripts/ui/space_time.py @@ -99,13 +99,14 @@ class TIME_MT_view(bpy.types.Menu): layout.prop(st, "only_selected") layout.separator() - + layout.menu("TIME_MT_cache") - + layout.separator() layout.operator("marker.camera_bind") - + + class TIME_MT_cache(bpy.types.Menu): bl_label = "Cache" @@ -125,6 +126,7 @@ class TIME_MT_cache(bpy.types.Menu): col.prop(st, "cache_cloth") col.prop(st, "cache_smoke") + class TIME_MT_frame(bpy.types.Menu): bl_label = "Frame" diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index ef128fc4a24..a4be17ce4ba 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -25,11 +25,11 @@ import shutil def ui_items_general(col, context): """ General UI Theme Settings (User Interface) """ - + row = col.row() - subsplit = row.split(percentage=0.95) - + subsplit = row.split(percentage=0.95) + padding = subsplit.split(percentage=0.15) colsub = padding.column() colsub = padding.column() @@ -37,9 +37,9 @@ def ui_items_general(col, context): colsub.row().prop(context, "item", slider=True) colsub.row().prop(context, "inner", slider=True) colsub.row().prop(context, "inner_sel", slider=True) - - subsplit = row.split(percentage=0.85) - + + subsplit = row.split(percentage=0.85) + padding = subsplit.split(percentage=0.15) colsub = padding.column() colsub = padding.column() @@ -53,6 +53,7 @@ def ui_items_general(col, context): col.separator() + def opengl_lamp_buttons(column, lamp): split = column.split(percentage=0.1) @@ -500,7 +501,7 @@ class USERPREF_PT_theme(bpy.types.Panel): padding1 = subsplit.split(percentage=0.15) padding1.column() - subsplit = row.split(percentage=0.85) + subsplit = row.split(percentage=0.85) padding2 = subsplit.split(percentage=0.15) padding2.column() @@ -531,13 +532,13 @@ class USERPREF_PT_theme(bpy.types.Panel): split_themes = layout.split(percentage=0.2) split_themes.prop(theme, "theme_area", expand=True) - + split = layout.split(percentage=0.4) - - + + layout.separator() layout.separator() - + split = split_themes.split() if theme.theme_area == 'USER_INTERFACE': @@ -609,11 +610,11 @@ class USERPREF_PT_theme(bpy.types.Panel): ui = theme.user_interface.wcol_state col.label(text="State:") - + row = col.row() - subsplit = row.split(percentage=0.95) - + subsplit = row.split(percentage=0.95) + padding = subsplit.split(percentage=0.15) colsub = padding.column() colsub = padding.column() @@ -621,9 +622,9 @@ class USERPREF_PT_theme(bpy.types.Panel): colsub.row().prop(ui, "inner_anim_sel") colsub.row().prop(ui, "inner_driven") colsub.row().prop(ui, "inner_driven_sel") - - subsplit = row.split(percentage=0.85) - + + subsplit = row.split(percentage=0.85) + padding = subsplit.split(percentage=0.15) colsub = padding.column() colsub = padding.column() @@ -635,8 +636,8 @@ class USERPREF_PT_theme(bpy.types.Panel): ui = theme.user_interface col.separator() col.separator() - - split= col.split(percentage=0.93) + + split = col.split(percentage=0.93) split.prop(ui, "icon_file") layout.separator() @@ -917,7 +918,7 @@ class USERPREF_PT_addons(bpy.types.Panel): if info["warning"]: split = colsub.row().split(percentage=0.15) split.label(text="Warning:") - split.label(text=' ' + info["warning"], icon = 'ERROR') + split.label(text=' ' + info["warning"], icon='ERROR') if info["wiki_url"] or info["tracker_url"]: split = colsub.row().split(percentage=0.15) split.label(text="Internet:") diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 750ffabe89a..4e2a713474a 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -732,7 +732,7 @@ class VIEW3D_MT_object_specials(bpy.types.Menu): props.data_path_item = "data.dof_distance" props.input_scale = 0.02 - if obj.type in ['CURVE','TEXT']: + if obj.type in ('CURVE','TEXT'): layout.operator_context = 'INVOKE_REGION_WIN' props = layout.operator("wm.context_modal_mouse", text="Extrude Size") @@ -760,7 +760,7 @@ class VIEW3D_MT_object_specials(bpy.types.Menu): props.data_path_iter = "selected_editable_objects" props.data_path_item = "data.energy" - if obj.data.type in ['SPOT','AREA','POINT']: + if obj.data.type in ('SPOT', 'AREA', 'POINT'): props = layout.operator("wm.context_modal_mouse", text="Falloff Distance") props.data_path_iter = "selected_editable_objects" props.data_path_item = "data.distance" diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index 0ad26be27c4..c503eaa9b3e 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -43,7 +43,7 @@ class VIEW3D_PT_tools_objectmode(View3DPanel): col = layout.column(align=True) col.operator("object.origin_set", text="Origin") - + col = layout.column(align=True) col.label(text="Object:") col.operator("object.duplicate_move") From d37bae5bd1b4789aea4996027d9291edb2344aca Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Tue, 6 Jul 2010 05:24:18 +0000 Subject: [PATCH 335/674] committed one file too many --- .../windows/installer/1100.sconsblender.nsi | 425 ------------------ 1 file changed, 425 deletions(-) delete mode 100644 release/windows/installer/1100.sconsblender.nsi diff --git a/release/windows/installer/1100.sconsblender.nsi b/release/windows/installer/1100.sconsblender.nsi deleted file mode 100644 index 3b345371440..00000000000 --- a/release/windows/installer/1100.sconsblender.nsi +++ /dev/null @@ -1,425 +0,0 @@ -; -; $Id: 00.sconsblender.nsi 14503 2008-04-21 15:53:32Z aphex $ -; -; Blender Self-Installer for Windows (NSIS - http://nsis.sourceforge.net) -; -; Requires the MoreInfo plugin - http://nsis.sourceforge.net/MoreInfo_plug-in -; - -!include "MUI.nsh" -!include "WinVer.nsh" -!include "FileFunc.nsh" -!include "WordFunc.nsh" -!include "nsDialogs.nsh" - -SetCompressor /SOLID lzma - -Name "Blender VERSION" - -!define MUI_ABORTWARNING - -!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of Blender.\r\n\r\nIt is recommended that you close all other applications before starting Setup.\r\n\r\nNote to Win2k/XP users: You may require administrator privileges to install Blender successfully." -!define MUI_WELCOMEFINISHPAGE_BITMAP "RELDIR\01.installer.bmp" -!define MUI_HEADERIMAGE -!define MUI_HEADERIMAGE_BITMAP "RELDIR\00.header.bmp" -!define MUI_COMPONENTSPAGE_SMALLDESC -!define MUI_FINISHPAGE_RUN "$INSTDIR\blender.exe" -!define MUI_CHECKBITMAP "RELDIR\00.checked.bmp" - -!insertmacro MUI_PAGE_WELCOME -!insertmacro MUI_PAGE_LICENSE "DISTDIR\Copyright.txt" -!insertmacro MUI_PAGE_COMPONENTS - -!insertmacro MUI_PAGE_DIRECTORY -Page custom DataLocation DataLocationOnLeave -Page custom AppDataChoice AppDataChoiceOnLeave -Page custom PreMigrateUserSettings MigrateUserSettings -!insertmacro MUI_PAGE_INSTFILES -!insertmacro MUI_PAGE_FINISH - -!insertmacro MUI_UNPAGE_WELCOME -!insertmacro MUI_UNPAGE_CONFIRM -!insertmacro MUI_UNPAGE_INSTFILES -!insertmacro MUI_UNPAGE_FINISH - -!insertmacro Locate -!insertmacro VersionCompare - - -Icon "RELDIR\00.installer.ico" -UninstallIcon "RELDIR\00.installer.ico" - -;-------------------------------- -;Languages - - !insertmacro MUI_LANGUAGE "English" - -;-------------------------------- -;Language Strings - - ;Description - LangString DESC_SecCopyUI ${LANG_ENGLISH} "Copy all required files to the application folder." - LangString DESC_Section2 ${LANG_ENGLISH} "Add shortcut items to the Start Menu. (Recommended)" - LangString DESC_Section3 ${LANG_ENGLISH} "Add a shortcut to Blender on your desktop." - LangString DESC_Section4 ${LANG_ENGLISH} "Blender can register itself with .blend files to allow double-clicking from Windows Explorer, etc." - LangString TEXT_IO_TITLE ${LANG_ENGLISH} "Specify User Data Location" -;-------------------------------- -;Data - -Caption "Blender VERSION Installer" -OutFile "DISTDIR\..\blender-VERSION-windows.exe" -InstallDir "$PROGRAMFILES\Blender Foundation\Blender" - -BrandingText "http://www.blender.org" -ComponentText "This will install Blender VERSION on your computer." - -DirText "Use the field below to specify the folder where you want Blender to be copied to. To specify a different folder, type a new name or use the Browse button to select an existing folder." - -SilentUnInstall normal - -# Uses $0 -Function openLinkNewWindow - Push $3 - Push $2 - Push $1 - Push $0 - ReadRegStr $0 HKCR "http\shell\open\command" "" -# Get browser path - DetailPrint $0 - StrCpy $2 '"' - StrCpy $1 $0 1 - StrCmp $1 $2 +2 # if path is not enclosed in " look for space as final char - StrCpy $2 ' ' - StrCpy $3 1 - loop: - StrCpy $1 $0 1 $3 - DetailPrint $1 - StrCmp $1 $2 found - StrCmp $1 "" found - IntOp $3 $3 + 1 - Goto loop - - found: - StrCpy $1 $0 $3 - StrCmp $2 " " +2 - StrCpy $1 '$1"' - - Pop $0 - Exec '$1 $0' - Pop $1 - Pop $2 - Pop $3 -FunctionEnd - -Var BLENDERHOME -Var DLL_found -Var PREVHOME - -Function SetWinXPPathCurrentUser - SetShellVarContext current - StrCpy $BLENDERHOME "$APPDATA\Blender Foundation\Blender" -FunctionEnd - -Function SetWinXPPathAllUsers - SetShellVarContext all - StrCpy $BLENDERHOME "$APPDATA\Blender Foundation\Blender" -FunctionEnd - -Function SetWin9xPath - StrCpy $BLENDERHOME $INSTDIR -FunctionEnd - -; custom controls -Var HWND - -Var HWND_APPDATA -Var HWND_INSTDIR -Var HWND_HOMEDIR - -Var HWND_BUTTON_YES -Var HWND_BUTTON_NO - -Var SETUSERCONTEXT - -Function PreMigrateUserSettings - StrCpy $PREVHOME "$PROFILE\Application Data\Blender Foundation\Blender" - StrCpy $0 "$PROFILE\Application Data\Blender Foundation\Blender\.blender" - - IfFileExists $0 0 nochange - - StrCmp $BLENDERHOME $PREVHOME nochange - - nsDialogs::Create /NOUNLOAD 1018 - Pop $HWND - - ${If} $HWND == error - Abort - ${EndIf} - - ${NSD_CreateLabel} 0 0 100% 12u "You have existing settings at:" - ${NSD_CreateLabel} 0 20 100% 12u $PREVHOME - ${NSD_CreateLabel} 0 40 100% 12u "Do you wish to migrate this data to:" - ${NSD_CreateLabel} 0 60 100% 12u $BLENDERHOME - ${NSD_CreateLabel} 0 80 100% 12u "Please note: If you choose no, Blender will not be able to use these files!" - ${NSD_CreateRadioButton} 0 100 100% 12u "Yes" - Pop $HWND_BUTTON_YES - ${NSD_CreateRadioButton} 0 120 100% 12u "No" - Pop $HWND_BUTTON_NO - - SendMessage $HWND_BUTTON_YES ${BM_SETCHECK} 1 0 - - nsDialogs::Show - nochange: - -FunctionEnd - -Function MigrateUserSettings - ${NSD_GetState} $HWND_BUTTON_YES $R0 - ${If} $R0 == "1" - CreateDirectory $BLENDERHOME - CopyFiles $PREVHOME\*.* $BLENDERHOME - ;RMDir /r $PREVHOME - ${EndIf} -FunctionEnd - -!define DLL_VER "8.00.50727.42" -!define DLL_VER2 "7.10.3052.4" - -Function LocateCallback_80 - MoreInfo::GetProductVersion "$R9" - Pop $0 - - ${VersionCompare} "$0" "${DLL_VER}" $R1 - - StrCmp $R1 0 0 new - new: - StrCmp $R1 1 0 old - old: - StrCmp $R1 2 0 end - ; Found DLL is older - Call DownloadDLL - - end: - StrCpy "$0" StopLocate - StrCpy $DLL_found "true" - Push "$0" - -FunctionEnd - -Function LocateCallback_71 - MoreInfo::GetProductVersion "$R9" - Pop $0 - - ${VersionCompare} "$0" "${DLL_VER2}" $R1 - - StrCmp $R1 0 0 new - new: - StrCmp $R1 1 0 old - old: - StrCmp $R1 2 0 end - ; Found DLL is older - Call PythonInstall - - end: - StrCpy "$0" StopLocate - StrCpy $DLL_found "true" - Push "$0" - -FunctionEnd - -Function DownloadDLL - MessageBox MB_OK "You will need to download the Microsoft Visual C++ 2005 Redistributable Package in order to run Blender. Pressing OK will take you to the download page, please follow the instructions on the page that appears." - StrCpy $0 "http://www.microsoft.com/downloads/details.aspx?familyid=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=en" - Call openLinkNewWindow -FunctionEnd - -Function PythonInstall - MessageBox MB_OK "You will need to install python 2.5 in order to run blender. Pressing OK will take you to the python.org website." - StrCpy $0 "http://www.python.org" - Call openLinkNewWindow -FunctionEnd - -Function DataLocation - nsDialogs::Create /NOUNLOAD 1018 - Pop $HWND - - ${If} $HWND == error - Abort - ${EndIf} - - ${NSD_CreateLabel} 0 0 100% 12u "Please specify where you wish to install Blender's user data files." - ${NSD_CreateRadioButton} 0 20 100% 12u "Use the Application Data directory (Requires Windows 2000 or better)" - Pop $HWND_APPDATA - ${NSD_CreateRadioButton} 0 50 100% 12u "Use the installation directory (ie. location chosen to install blender.exe)." - Pop $HWND_INSTDIR - ${NSD_CreateRadioButton} 0 80 100% 12u "I have defined a %HOME% variable, please install files here." - Pop $HWND_HOMEDIR - - ${If} ${AtMostWinME} - GetDlgItem $0 $HWND $HWND_APPDATA - EnableWindow $0 0 - SendMessage $HWND_INSTDIR ${BM_SETCHECK} 1 0 - ${Else} - SendMessage $HWND_APPDATA ${BM_SETCHECK} 1 0 - ${EndIf} - - nsDialogs::Show - -FunctionEnd - -Function DataLocationOnLeave - StrCpy $SETUSERCONTEXT "false" - ${NSD_GetState} $HWND_APPDATA $R0 - ${If} $R0 == "1" - StrCpy $SETUSERCONTEXT "true" - ${Else} - ${NSD_GetState} $HWND_INSTDIR $R0 - ${If} $R0 == "1" - Call SetWin9xPath - ${Else} - ${NSD_GetState} $HWND_HOMEDIR $R0 - ${If} $R0 == "1" - ReadEnvStr $BLENDERHOME "HOME" - ${EndIf} - ${EndIf} - ${EndIf} -FunctionEnd - -Var HWND_APPDATA_CURRENT -Var HWND_APPDATA_ALLUSERS - -Function AppDataChoice - StrCmp $SETUSERCONTEXT "false" skip - - nsDialogs::Create /NOUNLOAD 1018 - Pop $HWND - - ${NSD_CreateLabel} 0 0 100% 12u "Please choose which Application Data directory to use." - ${NSD_CreateRadioButton} 0 40 100% 12u "Current User" - Pop $HWND_APPDATA_CURRENT - ${NSD_CreateRadioButton} 0 70 100% 12u "All Users" - Pop $HWND_APPDATA_ALLUSERS - - SendMessage $HWND_APPDATA_CURRENT ${BM_SETCHECK} 1 0 - - StrCmp $SETUSERCONTEXT "true" 0 skip ; show dialog if we need to set context, otherwise skip it - nsDialogs::Show - -skip: - -FunctionEnd - -Function AppDataChoiceOnLeave - StrCmp $SETUSERCONTEXT "false" skip - ${NSD_GetState} $HWND_APPDATA_CURRENT $R0 - ${If} $R0 == "1" - Call SetWinXPPathCurrentUser - ${Else} - Call SetWinXPPathAllUsers - ${EndIf} -skip: - -FunctionEnd - -Section "Blender-VERSION (required)" SecCopyUI - SectionIn RO - - ; Set output path to the installation directory. - SetOutPath $INSTDIR - ; Put file there - [ROOTDIRCONTS] - - ;SetOutPath $BLENDERHOME\$BLENDERVERSION - ;[DATAFILES] ; and we write datafiles to user accessable dir - [DODATAFILES] - - SetOutPath $INSTDIR - ; Write the installation path into the registry - WriteRegStr HKLM SOFTWARE\BlenderFoundation "Install_Dir" "$INSTDIR" - ; Write the uninstall keys for Windows - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "DisplayName" "Blender (remove only)" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "UninstallString" '"$INSTDIR\uninstall.exe"' - WriteUninstaller "uninstall.exe" - - ; Check for msvcr80.dll - give notice to download if not found - MessageBox MB_OK "The installer will now check your system for the required system dlls." - StrCpy $1 $WINDIR - StrCpy $DLL_found "false" - ${Locate} "$1" "/L=F /M=MSVCR80.DLL /S=0B" "LocateCallback_80" - StrCmp $DLL_found "false" 0 +2 - Call DownloadDLL - StrCpy $1 $WINDIR - StrCpy $DLL_found "false" - ${Locate} "$1" "/L=F /M=MSVCR71.DLL /S=0B" "LocateCallback_71" - StrCmp $DLL_found "false" 0 +2 - Call PythonInstall - -SectionEnd - -Section "Add Start Menu shortcuts" Section2 - SetOutPath $INSTDIR - CreateDirectory "$SMPROGRAMS\Blender Foundation\Blender\" - CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 - CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Blender.lnk" "$INSTDIR\Blender.exe" "" "$INSTDIR\blender.exe" 0 - CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Readme.lnk" "$INSTDIR\Blender.html" "" "" 0 - CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Copyright.lnk" "$INSTDIR\Copyright.txt" "" "$INSTDIR\copyright.txt" 0 - CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\GPL-license.lnk" "$INSTDIR\GPL-license.txt" "" "$INSTDIR\GPL-license.txt" 0 - CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Help.lnk" "$INSTDIR\Help.url" -SectionEnd - -Section "Add Desktop Blender-VERSION shortcut" Section3 - SetOutPath $INSTDIR - CreateShortCut "$DESKTOP\Blender.lnk" "$INSTDIR\blender.exe" "" "$INSTDIR\blender.exe" 0 -SectionEnd - -Section "Open .blend files with Blender-VERSION" Section4 - SetOutPath $INSTDIR - ;ExecShell "open" '"$INSTDIR\blender.exe"' "-R -b" - ;do it the manual way! ;) - - WriteRegStr HKCR ".blend" "" "blendfile" - WriteRegStr HKCR "blendfile" "" "Blender .blend File" - WriteRegStr HKCR "blendfile\shell" "" "open" - WriteRegStr HKCR "blendfile\DefaultIcon" "" $INSTDIR\blender.exe,1 - WriteRegStr HKCR "blendfile\shell\open\command" "" \ - '"$INSTDIR\blender.exe" "%1"' - -SectionEnd - -UninstallText "This will uninstall Blender VERSION. Hit next to continue." - -Section "Uninstall" - ; remove registry keys - DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" - DeleteRegKey HKLM SOFTWARE\BlenderFoundation - ; remove files - [DELROOTDIRCONTS] - - Delete $INSTDIR\.blender\.bfont.ttf - Delete $INSTDIR\.blender\.Blanguages - ; remove shortcuts, if any. - Delete "$SMPROGRAMS\Blender Foundation\Blender\*.*" - Delete "$DESKTOP\Blender.lnk" - ; remove directories used. - RMDir /r $INSTDIR\.blender\locale - MessageBox MB_YESNO "Erase .blender\scripts folder? (ALL contents will be erased!)" IDNO Next - RMDir /r $INSTDIR\.blender\scripts - RMDir /r $INSTDIR\.blender\scripts\bpymodules - RMDir /r $INSTDIR\.blender\scripts\bpydata - RMDir /r $INSTDIR\.blender\scripts\bpydata\config -Next: - RMDir /r $INSTDIR\plugins\include - RMDir /r $INSTDIR\plugins - RMDir $INSTDIR\.blender - RMDir "$SMPROGRAMS\Blender Foundation\Blender" - RMDir "$SMPROGRAMS\Blender Foundation" - RMDir "$INSTDIR" - RMDir "$INSTDIR\.." -SectionEnd - -!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN - !insertmacro MUI_DESCRIPTION_TEXT ${SecCopyUI} $(DESC_SecCopyUI) - !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2) - !insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(DESC_Section3) - !insertmacro MUI_DESCRIPTION_TEXT ${Section4} $(DESC_Section4) -!insertmacro MUI_FUNCTION_DESCRIPTION_END From bb626c3963c36a47d3aff5b20c3c8659244e1ca9 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Tue, 6 Jul 2010 06:43:21 +0000 Subject: [PATCH 336/674] give an actually existing buffer instead of potential NULL --- source/blender/blenlib/intern/path_util.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 36348f0cbac..772782e5467 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -752,9 +752,9 @@ char *BLI_gethome(void) { /* else, check install dir (path containing blender.exe) */ - if(BLI_getInstallationDir(ret)) + if(BLI_getInstallationDir(dir)) { - sprintf(dir, "%s", ret, blender_version_decimal()); + sprintf(dir, "%s", dir, blender_version_decimal()); if (BLI_exists(dir)) return(dir); } From f655911c917c1141a487b560d2186424efa2714e Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Tue, 6 Jul 2010 09:13:10 +0000 Subject: [PATCH 337/674] === Windows Installer === * Proper deletion of install dir - everything under it will be gone * Ask if config/userdata can be removed and act accordingly. If selected, everything under user/config dir (BLENDERHOME) will be gone. * The installer now will automatically update vc runtime To be able to properly create an installer, you need: - NSIS, and the MoreInfo plugin for NSIS. Make sure NSIS is in your path - Set in your user-config.py BF_VCREDIST full path to the redist you have. Note: this works only with SCons. --- release/windows/installer/00.sconsblender.nsi | 250 ++---------------- tools/btools.py | 42 +-- 2 files changed, 55 insertions(+), 237 deletions(-) diff --git a/release/windows/installer/00.sconsblender.nsi b/release/windows/installer/00.sconsblender.nsi index 356972de702..9be43fda949 100644 --- a/release/windows/installer/00.sconsblender.nsi +++ b/release/windows/installer/00.sconsblender.nsi @@ -32,8 +32,6 @@ Name "Blender [VERSION]" !insertmacro MUI_PAGE_DIRECTORY Page custom DataLocation DataLocationOnLeave -Page custom AppDataChoice AppDataChoiceOnLeave -Page custom PreMigrateUserSettings MigrateUserSettings !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH @@ -70,64 +68,16 @@ Caption "Blender [VERSION] Installer" OutFile "[DISTDIR]\..\blender-[VERSION]-windows.exe" InstallDir "$PROGRAMFILES\Blender Foundation\Blender" -BrandingText "http://www.blender.org" +BrandingText "Blender Foundation | http://www.blender.org" ComponentText "This will install Blender [VERSION] on your computer." DirText "Use the field below to specify the folder where you want Blender to be copied to. To specify a different folder, type a new name or use the Browse button to select an existing folder." SilentUnInstall normal -# Uses $0 -Function openLinkNewWindow - Push $3 - Push $2 - Push $1 - Push $0 - ReadRegStr $0 HKCR "http\shell\open\command" "" -# Get browser path - DetailPrint $0 - StrCpy $2 '"' - StrCpy $1 $0 1 - StrCmp $1 $2 +2 # if path is not enclosed in " look for space as final char - StrCpy $2 ' ' - StrCpy $3 1 - loop: - StrCpy $1 $0 1 $3 - DetailPrint $1 - StrCmp $1 $2 found - StrCmp $1 "" found - IntOp $3 $3 + 1 - Goto loop - - found: - StrCpy $1 $0 $3 - StrCmp $2 " " +2 - StrCpy $1 '$1"' - - Pop $0 - Exec '$1 $0' - Pop $1 - Pop $2 - Pop $3 -FunctionEnd - Var BLENDERHOME +Var SHORTVERSION ; This is blender_version_decimal() from path_util.c Var DLL_found -Var PREVHOME - -Function SetWinXPPathCurrentUser - SetShellVarContext current - StrCpy $BLENDERHOME "$APPDATA\Blender Foundation\Blender" -FunctionEnd - -Function SetWinXPPathAllUsers - SetShellVarContext all - StrCpy $BLENDERHOME "$APPDATA\Blender Foundation\Blender" -FunctionEnd - -Function SetWin9xPath - StrCpy $BLENDERHOME $INSTDIR -FunctionEnd ; custom controls Var HWND @@ -136,100 +86,8 @@ Var HWND_APPDATA Var HWND_INSTDIR Var HWND_HOMEDIR -Var HWND_BUTTON_YES -Var HWND_BUTTON_NO - -Var SETUSERCONTEXT - -Function PreMigrateUserSettings - StrCpy $PREVHOME "$PROFILE\Application Data\Blender Foundation\Blender" - StrCpy $0 "$PROFILE\Application Data\Blender Foundation\Blender\.blender" - - IfFileExists $0 0 nochange - - StrCmp $BLENDERHOME $PREVHOME nochange - - nsDialogs::Create /NOUNLOAD 1018 - Pop $HWND - - ${If} $HWND == error - Abort - ${EndIf} - - ${NSD_CreateLabel} 0 0 100% 12u "You have existing settings at:" - ${NSD_CreateLabel} 0 20 100% 12u $PREVHOME - ${NSD_CreateLabel} 0 40 100% 12u "Do you wish to migrate this data to:" - ${NSD_CreateLabel} 0 60 100% 12u $BLENDERHOME - ${NSD_CreateLabel} 0 80 100% 12u "Please note: If you choose no, Blender will not be able to use these files!" - ${NSD_CreateRadioButton} 0 100 100% 12u "Yes" - Pop $HWND_BUTTON_YES - ${NSD_CreateRadioButton} 0 120 100% 12u "No" - Pop $HWND_BUTTON_NO - - SendMessage $HWND_BUTTON_YES ${BM_SETCHECK} 1 0 - - nsDialogs::Show - nochange: - -FunctionEnd - -Function MigrateUserSettings - ${NSD_GetState} $HWND_BUTTON_YES $R0 - ${If} $R0 == "1" - CreateDirectory $BLENDERHOME - CopyFiles $PREVHOME\*.* $BLENDERHOME - ;RMDir /r $PREVHOME - ${EndIf} -FunctionEnd - -!define DLL_VER "8.00.50727.42" -!define DLL_VER2 "7.10.3052.4" - -Function LocateCallback_80 - MoreInfo::GetProductVersion "$R9" - Pop $0 - - ${VersionCompare} "$0" "${DLL_VER}" $R1 - - StrCmp $R1 0 0 new - new: - StrCmp $R1 1 0 old - old: - StrCmp $R1 2 0 end - ; Found DLL is older - Call DownloadDLL - - end: - StrCpy "$0" StopLocate - StrCpy $DLL_found "true" - Push "$0" - -FunctionEnd - -Function LocateCallback_71 - MoreInfo::GetProductVersion "$R9" - Pop $0 - - ${VersionCompare} "$0" "${DLL_VER2}" $R1 - - StrCmp $R1 0 0 new - new: - StrCmp $R1 1 0 old - old: - StrCmp $R1 2 0 end - ; Found DLL is older - - end: - StrCpy "$0" StopLocate - StrCpy $DLL_found "true" - Push "$0" - -FunctionEnd - -Function DownloadDLL - MessageBox MB_OK "You will need to download the Microsoft Visual C++ 2005 Redistributable Package in order to run Blender. Pressing OK will take you to the download page, please follow the instructions on the page that appears." - StrCpy $0 "http://www.microsoft.com/downloads/details.aspx?familyid=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=en" - Call openLinkNewWindow +Function .onInit + StrCpy $SHORTVERSION "[SHORTVERSION]" FunctionEnd Function DataLocation @@ -261,14 +119,13 @@ Function DataLocation FunctionEnd Function DataLocationOnLeave - StrCpy $SETUSERCONTEXT "false" ${NSD_GetState} $HWND_APPDATA $R0 ${If} $R0 == "1" - StrCpy $SETUSERCONTEXT "true" + StrCpy $BLENDERHOME "$APPDATA\Blender Foundation\Blender" ${Else} ${NSD_GetState} $HWND_INSTDIR $R0 ${If} $R0 == "1" - Call SetWin9xPath + StrCpy $BLENDERHOME $INSTDIR ${Else} ${NSD_GetState} $HWND_HOMEDIR $R0 ${If} $R0 == "1" @@ -278,74 +135,31 @@ Function DataLocationOnLeave ${EndIf} FunctionEnd -Var HWND_APPDATA_CURRENT -Var HWND_APPDATA_ALLUSERS - -Function AppDataChoice - StrCmp $SETUSERCONTEXT "false" skip - - nsDialogs::Create /NOUNLOAD 1018 - Pop $HWND - - ${NSD_CreateLabel} 0 0 100% 12u "Please choose which Application Data directory to use." - ${NSD_CreateRadioButton} 0 40 100% 12u "Current User" - Pop $HWND_APPDATA_CURRENT - ${NSD_CreateRadioButton} 0 70 100% 12u "All Users" - Pop $HWND_APPDATA_ALLUSERS - - SendMessage $HWND_APPDATA_CURRENT ${BM_SETCHECK} 1 0 - - StrCmp $SETUSERCONTEXT "true" 0 skip ; show dialog if we need to set context, otherwise skip it - nsDialogs::Show - -skip: - -FunctionEnd - -Function AppDataChoiceOnLeave - StrCmp $SETUSERCONTEXT "false" skip - ${NSD_GetState} $HWND_APPDATA_CURRENT $R0 - ${If} $R0 == "1" - Call SetWinXPPathCurrentUser - ${Else} - Call SetWinXPPathAllUsers - ${EndIf} -skip: - -FunctionEnd - Section "Blender-[VERSION] (required)" SecCopyUI SectionIn RO ; Set output path to the installation directory. SetOutPath $INSTDIR - ; Put file there + ; the contents of Blender installation root dir [ROOTDIRCONTS] - ;SetOutPath $BLENDERHOME\$BLENDERVERSION - ;[DATAFILES] ; and we write datafiles to user accessable dir + ; all datafiles (python, scripts, config) [DODATAFILES] SetOutPath $INSTDIR ; Write the installation path into the registry - WriteRegStr HKLM SOFTWARE\BlenderFoundation "Install_Dir" "$INSTDIR" + WriteRegStr HKLM "SOFTWARE\BlenderFoundation" "Install_Dir" "$INSTDIR" + WriteRegStr HKLM "SOFTWARE\BlenderFoundation" "ConfigData_Dir" "$BLENDERHOME" + WriteRegStr HKLM "SOFTWARE\BlenderFoundation" "ShortVersion" "[SHORTVERSION]" ; Write the uninstall keys for Windows WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "DisplayName" "Blender (remove only)" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "UninstallString" '"$INSTDIR\uninstall.exe"' WriteUninstaller "uninstall.exe" - ; Check for msvcr80.dll - give notice to download if not found - MessageBox MB_OK "The installer will now check your system for the required system dlls." - StrCpy $1 $WINDIR - StrCpy $DLL_found "false" - ${Locate} "$1" "/L=F /M=MSVCR80.DLL /S=0B" "LocateCallback_80" - StrCmp $DLL_found "false" 0 +2 - Call DownloadDLL - StrCpy $1 $WINDIR - StrCpy $DLL_found "false" - ${Locate} "$1" "/L=F /M=MSVCR71.DLL /S=0B" "LocateCallback_71" - StrCmp $DLL_found "false" 0 +2 - + ; Let's now run silent vcredist installer + SetOutPath $TEMP + [VCREDIST] + SectionEnd Section "Add Start Menu shortcuts" Section2 @@ -378,35 +192,29 @@ Section "Open .blend files with Blender-[VERSION]" Section4 SectionEnd -UninstallText "This will uninstall Blender [VERSION]. Hit next to continue." +UninstallText "This will uninstall Blender [VERSION], and all datafiles from the installation dir. Hit next to continue." Section "Uninstall" ; remove registry keys + ReadRegStr $BLENDERHOME HKLM "SOFTWARE\BlenderFoundation" "ConfigData_Dir" + ReadRegStr $SHORTVERSION HKLM "SOFTWARE\BlenderFoundation" "ShortVersion" DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" - DeleteRegKey HKLM SOFTWARE\BlenderFoundation + DeleteRegKey HKLM "SOFTWARE\BlenderFoundation" ; remove files [DELROOTDIRCONTS] - - Delete $INSTDIR\.blender\.bfont.ttf - Delete $INSTDIR\.blender\.Blanguages + + Delete "$INSTDIR\uninstall.exe" + + MessageBox MB_YESNO "Erase $BLENDERHOME? This includes all installed scripts and configuration files and any file you may have created there." IDNO Next + RMDir /r "$BLENDERHOME" +Next: ; remove shortcuts, if any. Delete "$SMPROGRAMS\Blender Foundation\Blender\*.*" Delete "$DESKTOP\Blender.lnk" - ; remove directories used. - RMDir /r $INSTDIR\.blender\locale - MessageBox MB_YESNO "Erase .blender\scripts folder? (ALL contents will be erased!)" IDNO Next - RMDir /r $INSTDIR\.blender\scripts - RMDir /r $INSTDIR\.blender\scripts\bpymodules - RMDir /r $INSTDIR\.blender\scripts\bpydata - RMDir /r $INSTDIR\.blender\scripts\bpydata\config -Next: - RMDir /r $INSTDIR\plugins\include - RMDir /r $INSTDIR\plugins - RMDir $INSTDIR\.blender - RMDir "$SMPROGRAMS\Blender Foundation\Blender" - RMDir "$SMPROGRAMS\Blender Foundation" - RMDir "$INSTDIR" - RMDir "$INSTDIR\.." + ; remove all link related directories and files + RMDir /r "$SMPROGRAMS\Blender Foundation" + ; remove entire installation directory, including any file created by the user + RMDir /r "$INSTDIR" SectionEnd !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN diff --git a/tools/btools.py b/tools/btools.py index 9add22d8270..8a609ba31ba 100644 --- a/tools/btools.py +++ b/tools/btools.py @@ -83,7 +83,8 @@ def validate_arguments(args, bc): 'BF_GHOST_DEBUG', 'WITH_BF_RAYOPTIMIZATION', 'BF_RAYOPTIMIZATION_SSE_FLAGS', - 'BF_NO_ELBEEM' + 'BF_NO_ELBEEM', + 'BF_VCREDIST' # Windows-only, and useful only when creating installer ] # Have options here that scons expects to be lists @@ -441,20 +442,22 @@ def read_opts(env, cfg, args): (BoolVariable('BF_GHOST_DEBUG', 'Make GHOST print events and info to stdout. (very verbose)', False)), (BoolVariable('WITH_BF_RAYOPTIMIZATION', 'Enable raytracer SSE/SIMD optimization.', False)), - ('BF_RAYOPTIMIZATION_SSE_FLAGS', 'SSE flags', '') + ('BF_RAYOPTIMIZATION_SSE_FLAGS', 'SSE flags', ''), + ('BF_VCREDIST', 'Full path to vcredist', '') ) # end of opts.AddOptions() return localopts def NSIS_print(target, source, env): - return "Creating NSIS installer for Blender 3D" + return "Creating NSIS installer for Blender" def NSIS_Installer(target=None, source=None, env=None): + print "="*35 if env['OURPLATFORM'] not in ('win32-vc', 'win32-mingw', 'win64-vc'): print "NSIS installer is only available on Windows." Exit() - + start_dir = os.getcwd() rel_dir = os.path.join(start_dir,'release','windows','installer') install_base_dir = start_dir + os.sep @@ -466,18 +469,23 @@ def NSIS_Installer(target=None, source=None, env=None): rootdirconts = [] datafiles = '' l = len(bf_installdir) + for dp,dn,df in os.walk(bf_installdir): if not doneroot: for f in df: rootdirconts.append(os.path.join(dp,f)) doneroot = True else: - datafiles += "\n"+r'SetOutPath $BLENDERHOME'+dp[l:]+"\n\n" - - for f in df: - outfile = os.path.join(dp,f) - datafiles += ' File '+outfile + "\n" + if len(df)>0: + dp_tmp = dp[l:] + if dp_tmp.find('python\\lib') > -1: + datafiles += "\n" +r'SetOutPath $INSTDIR'+dp[l:]+"\n\n" + else: + datafiles += "\n"+r'SetOutPath $BLENDERHOME'+dp[l:]+"\n\n" + for f in df: + outfile = os.path.join(dp,f) + datafiles += ' File '+outfile + "\n" os.chdir("release") v = open("VERSION") @@ -491,13 +499,13 @@ def NSIS_Installer(target=None, source=None, env=None): ns = open("00.sconsblender.nsi","r") - ns_cnt = str(ns.read()) ns.close() # var replacements - ns_cnt = string.replace(ns_cnt, "[DISTDIR]", os.path.normpath(inst_dir+"\\")) + ns_cnt = string.replace(ns_cnt, "[DISTDIR]", os.path.normpath(inst_dir+os.sep)) ns_cnt = string.replace(ns_cnt, "[VERSION]", version) + ns_cnt = string.replace(ns_cnt, "[SHORTVERSION]", VERSION) ns_cnt = string.replace(ns_cnt, "[RELDIR]", os.path.normpath(rel_dir)) # do root @@ -509,9 +517,6 @@ def NSIS_Installer(target=None, source=None, env=None): rootstring += "\n\n" ns_cnt = string.replace(ns_cnt, "[ROOTDIRCONTS]", rootstring) - #print rootstring - #print datafiles - print "="*50 # do delete items delrootlist = [] @@ -523,15 +528,20 @@ def NSIS_Installer(target=None, source=None, env=None): ns_cnt = string.replace(ns_cnt, "[DODATAFILES]", datafiles) + # Setup vcredist part + vcredist = "File \""+env['BF_VCREDIST'] + "\"\n" + vcredist += " ExecWait '\"$TEMP\\" + os.path.basename(env['BF_VCREDIST']) + "\" /q'\n" + vcredist += " Delete \"$TEMP\\" + os.path.basename(env['BF_VCREDIST'])+"\"" + ns_cnt = string.replace(ns_cnt, "[VCREDIST]", vcredist) tmpnsi = os.path.normpath(install_base_dir+os.sep+env['BF_BUILDDIR']+os.sep+"00.blender_tmp.nsi") new_nsis = open(tmpnsi, 'w') new_nsis.write(ns_cnt) new_nsis.close() - print "Preparing nsis file looks ok\n" + print "NSIS Installer script created" os.chdir(start_dir) - print "try to launch 'makensis' ...make sure it is on the path \n" + print "Launching 'makensis'" cmdline = "makensis " + "\""+tmpnsi+"\"" From b0cee52ecc2e923a1390a95a234a92125bcda3ae Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Tue, 6 Jul 2010 09:15:33 +0000 Subject: [PATCH 338/674] Waste less memory ;) --- release/windows/installer/00.sconsblender.nsi | 1 - 1 file changed, 1 deletion(-) diff --git a/release/windows/installer/00.sconsblender.nsi b/release/windows/installer/00.sconsblender.nsi index 9be43fda949..8bf30f9a48f 100644 --- a/release/windows/installer/00.sconsblender.nsi +++ b/release/windows/installer/00.sconsblender.nsi @@ -77,7 +77,6 @@ SilentUnInstall normal Var BLENDERHOME Var SHORTVERSION ; This is blender_version_decimal() from path_util.c -Var DLL_found ; custom controls Var HWND From f38511cbed143276fd1391e009a2f57025c19392 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Tue, 6 Jul 2010 09:19:52 +0000 Subject: [PATCH 339/674] === Windows Installer === * add info about bitness: 32bit, 64bit or mingw-build --- release/windows/installer/00.sconsblender.nsi | 2 +- tools/btools.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/release/windows/installer/00.sconsblender.nsi b/release/windows/installer/00.sconsblender.nsi index 8bf30f9a48f..3b10477bffe 100644 --- a/release/windows/installer/00.sconsblender.nsi +++ b/release/windows/installer/00.sconsblender.nsi @@ -65,7 +65,7 @@ UninstallIcon "[RELDIR]\00.installer.ico" ;Data Caption "Blender [VERSION] Installer" -OutFile "[DISTDIR]\..\blender-[VERSION]-windows.exe" +OutFile "[DISTDIR]\..\blender-[VERSION]-windows[BITNESS].exe" InstallDir "$PROGRAMFILES\Blender Foundation\Blender" BrandingText "Blender Foundation | http://www.blender.org" diff --git a/tools/btools.py b/tools/btools.py index 8a609ba31ba..03a1a0f0b7a 100644 --- a/tools/btools.py +++ b/tools/btools.py @@ -457,6 +457,12 @@ def NSIS_Installer(target=None, source=None, env=None): if env['OURPLATFORM'] not in ('win32-vc', 'win32-mingw', 'win64-vc'): print "NSIS installer is only available on Windows." Exit() + if env['OURPLATFORM'] == 'win32-vc': + bitness = '32' + elif env['OURPLATFORM'] == 'win64-vc': + bitness = '64' + else: + bitness = '-mingw' start_dir = os.getcwd() rel_dir = os.path.join(start_dir,'release','windows','installer') @@ -507,6 +513,7 @@ def NSIS_Installer(target=None, source=None, env=None): ns_cnt = string.replace(ns_cnt, "[VERSION]", version) ns_cnt = string.replace(ns_cnt, "[SHORTVERSION]", VERSION) ns_cnt = string.replace(ns_cnt, "[RELDIR]", os.path.normpath(rel_dir)) + ns_cnt = string.replace(ns_cnt, "[BITNESS]", bitness) # do root rootlist = [] From ca252e39f59a0ca71aba06bf93e40b86029f0d72 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 6 Jul 2010 10:21:28 +0000 Subject: [PATCH 340/674] Correction to recent color balance compositor and sequencer changes. - In my changes lift was acting like a second gamma. - In blender 2.4x it was being added which gave ugly clipping. - in Magic Bullet Looks it scales the color about 1.0: (col - 1 * (2-lift)) + 1 Did more testing and made sure the order of applying lift/gamma/gain works the same as MagicBulletLooks (tested on Collin's mac laptop). --- source/blender/blenkernel/intern/sequencer.c | 8 ++++---- source/blender/nodes/intern/CMP_nodes/CMP_colorbalance.c | 9 +++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index a4c1527c3c5..bd3e0129bcc 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -1494,7 +1494,7 @@ static StripColorBalance calc_cb(StripColorBalance * cb_) int c; for (c = 0; c < 3; c++) { - cb.lift[c] = 2.0f - pow(cb.lift[c], 2); + cb.lift[c] = 2.0f - cb.lift[c]; } if(cb.flag & SEQ_COLOR_BALANCE_INVERSE_LIFT) { @@ -1526,10 +1526,10 @@ static StripColorBalance calc_cb(StripColorBalance * cb_) return cb; } -/* pow(p[c] * cb.gain[c] + cb.lift[c], cb.gamma[c]) * mul;*/ -MINLINE float color_balance_fl(const float v, const float lift, const float gain, const float gamma, const float mul) +/* note: lift is actually 2-lift */ +MINLINE float color_balance_fl(float v, const float lift, const float gain, const float gamma, const float mul) { - return powf(powf(v * gain, lift), gamma) * mul; + return powf((((v - 1.0f) * lift) + 1.0f) * gain, gamma) * mul; } static void make_cb_table_byte(float lift, float gain, float gamma, diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_colorbalance.c b/source/blender/nodes/intern/CMP_nodes/CMP_colorbalance.c index f2e5815dfeb..cd614b12794 100644 --- a/source/blender/nodes/intern/CMP_nodes/CMP_colorbalance.c +++ b/source/blender/nodes/intern/CMP_nodes/CMP_colorbalance.c @@ -54,9 +54,10 @@ DO_INLINE float colorbalance_cdl(float in, float offset, float power, float slop return powf(x, 1.f/power); } -DO_INLINE float colorbalance_lgg(float in, float lift, float gamma, float gain) -{ - float x= powf(in * gain, lift); +/* note: lift_lgg is just 2-lift */ +DO_INLINE float colorbalance_lgg(float in, float lift_lgg, float gamma, float gain) +{ + float x= (((in - 1.0f) * lift_lgg) + 1.0f) * gain; /* prevent NaN */ if (x < 0.f) x = 0.f; @@ -124,7 +125,7 @@ static void node_composit_exec_colorbalance(void *data, bNode *node, bNodeStack NodeColorBalance *n= (NodeColorBalance *)node->storage; int c; for (c = 0; c < 3; c++) { - n->lift_lgg[c] = 2.0f - pow(n->lift[c], 2); + n->lift_lgg[c] = 2.0f - n->lift[c]; } } From 8049f9066c68c98cfacbce0a2372cf45190b4804 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 6 Jul 2010 11:14:35 +0000 Subject: [PATCH 341/674] library tooltip for outliner icons --- source/blender/editors/space_outliner/outliner.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c index bcf186ad4e9..794c700f8ce 100644 --- a/source/blender/editors/space_outliner/outliner.c +++ b/source/blender/editors/space_outliner/outliner.c @@ -4210,11 +4210,11 @@ static void tselem_draw_icon_uibut(struct DrawIconArg *arg, int icon) if(arg->x >= arg->xmax) UI_icon_draw(arg->x, arg->y, icon); else { - uiBut *but= uiDefIconBut(arg->block, LABEL, 0, icon, arg->x-4, arg->y, ICON_DEFAULT_WIDTH, ICON_DEFAULT_WIDTH, NULL, 0.0, 0.0, 1.0, arg->alpha, ""); + uiBut *but= uiDefIconBut(arg->block, LABEL, 0, icon, arg->x-4, arg->y, ICON_DEFAULT_WIDTH, ICON_DEFAULT_WIDTH, NULL, 0.0, 0.0, 1.0, arg->alpha, (arg->id && arg->id->lib) ? arg->id->lib->name : ""); if(arg->id) uiButSetDragID(but, arg->id); } - + } static void tselem_draw_icon(uiBlock *block, int xmax, float x, float y, TreeStoreElem *tselem, TreeElement *te, float alpha) From 137e53064cf65b736347b75f2580d82fe63d17ca Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 6 Jul 2010 11:44:45 +0000 Subject: [PATCH 342/674] Revert revision 29735: Fix #22051: crash when scaling parent metaball. Keep the constant resolution for any motherball's scale. This avoids running out of memory when scaling the metaball down, but there's a reason it depends on this scaling, for example for instancing it's more useful to have this. It also doesn't really solve the problem but only moves it, it's still possible to run out of memory with different setups/scales. --- source/blender/blenkernel/BKE_mball.h | 1 - source/blender/blenkernel/intern/mball.c | 27 ++++++++---------------- 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/source/blender/blenkernel/BKE_mball.h b/source/blender/blenkernel/BKE_mball.h index 5d41f4e374e..8d7d205e847 100644 --- a/source/blender/blenkernel/BKE_mball.h +++ b/source/blender/blenkernel/BKE_mball.h @@ -97,7 +97,6 @@ typedef struct process { /* parameters, function, storage */ CENTERLIST **centers; /* cube center hash table */ CORNER **corners; /* corner value hash table */ EDGELIST **edges; /* edge and vertex id hash table */ - float scale[3]; } PROCESS; /* dividing scene using octal tree makes polygonisation faster */ diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c index da9740a1486..a97bec670d6 100644 --- a/source/blender/blenkernel/intern/mball.c +++ b/source/blender/blenkernel/intern/mball.c @@ -889,11 +889,11 @@ CORNER *setcorner (PROCESS* p, int i, int j, int k) c = (CORNER *) new_pgn_element(sizeof(CORNER)); c->i = i; - c->x = ((float)i-0.5f)*p->size/p->scale[0]; + c->x = ((float)i-0.5f)*p->size; c->j = j; - c->y = ((float)j-0.5f)*p->size/p->scale[1]; + c->y = ((float)j-0.5f)*p->size; c->k = k; - c->z = ((float)k-0.5f)*p->size/p->scale[2]; + c->z = ((float)k-0.5f)*p->size; c->value = p->function(c->x, c->y, c->z); c->next = p->corners[index]; @@ -1422,9 +1422,9 @@ void find_first_points(PROCESS *mbproc, MetaBall *mb, int a) workp_v = in_v; max_len = sqrt((out.x-in.x)*(out.x-in.x) + (out.y-in.y)*(out.y-in.y) + (out.z-in.z)*(out.z-in.z)); - nx = abs((out.x - in.x)/mbproc->size*mbproc->scale[0]); - ny = abs((out.y - in.y)/mbproc->size*mbproc->scale[1]); - nz = abs((out.z - in.z)/mbproc->size*mbproc->scale[2]); + nx = abs((out.x - in.x)/mbproc->size); + ny = abs((out.y - in.y)/mbproc->size); + nz = abs((out.z - in.z)/mbproc->size); MAXN = MAX3(nx,ny,nz); if(MAXN!=0.0f) { @@ -1443,9 +1443,9 @@ void find_first_points(PROCESS *mbproc, MetaBall *mb, int a) if((tmp_v<0.0 && workp_v>=0.0)||(tmp_v>0.0 && workp_v<=0.0)) { /* indexes of CUBE, which includes "first point" */ - c_i= (int)floor(workp.x/mbproc->size*mbproc->scale[0]); - c_j= (int)floor(workp.y/mbproc->size*mbproc->scale[1]); - c_k= (int)floor(workp.z/mbproc->size*mbproc->scale[2]); + c_i= (int)floor(workp.x/mbproc->size); + c_j= (int)floor(workp.y/mbproc->size); + c_k= (int)floor(workp.z/mbproc->size); /* add CUBE (with indexes c_i, c_j, c_k) to the stack, * this cube includes found point of Implicit Surface */ @@ -2095,7 +2095,6 @@ void metaball_polygonize(Scene *scene, Object *ob, ListBase *dispbase) DispList *dl; int a, nr_cubes; float *ve, *no, totsize, width; - float smat[3][3]; mb= ob->data; @@ -2103,8 +2102,6 @@ void metaball_polygonize(Scene *scene, Object *ob, ListBase *dispbase) if(!(G.rendering) && (mb->flag==MB_UPDATE_NEVER)) return; if(G.moving && mb->flag==MB_UPDATE_FAST) return; - object_scale_to_mat3(ob, smat); - curindex= totindex= 0; indices= 0; thresh= mb->thresh; @@ -2145,7 +2142,6 @@ void metaball_polygonize(Scene *scene, Object *ob, ListBase *dispbase) width= mb->wiresize; if(G.moving && mb->flag==MB_UPDATE_HALFRES) width*= 2; } - /* nr_cubes is just for safety, minimum is totsize */ nr_cubes= (int)(0.5+totsize/width); @@ -2156,11 +2152,6 @@ void metaball_polygonize(Scene *scene, Object *ob, ListBase *dispbase) mbproc.cubes= 0; mbproc.delta = width/(float)(RES*RES); - /* to keep constant resolution for any motherball scale */ - mbproc.scale[0]= smat[0][0]; - mbproc.scale[1]= smat[1][1]; - mbproc.scale[2]= smat[2][2]; - polygonize(&mbproc, mb); MEM_freeN(mainb); From d6ae565247668863abef0c9ba16f75466499a823 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 6 Jul 2010 11:50:59 +0000 Subject: [PATCH 343/674] fix for crash on active camera poll (from own recent commit) --- source/blender/editors/space_view3d/view3d_edit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 56714143fe9..9ac3d7cacdd 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -732,7 +732,7 @@ static int view3d_camera_active_poll(bContext *C) { if(ED_operator_view3d_active(C)) { RegionView3D *rv3d= CTX_wm_region_view3d(C); - if(rv3d->persp==RV3D_CAMOB) { + if(rv3d && rv3d->persp==RV3D_CAMOB) { return 1; } } From 513c8738ce77fa445c5c5eb1b19fa778a52d215a Mon Sep 17 00:00:00 2001 From: Luca Bonavita Date: Tue, 6 Jul 2010 13:56:50 +0000 Subject: [PATCH 344/674] == rna cleanup == small fixes adnm tentative new keywords those discussed by campbell and brecht are still there, but commented with these keywords I'm happy how booleans went, committing to discuss with cambpell --- source/blender/makesrna/rna_cleanup/rna_cleaner.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/source/blender/makesrna/rna_cleanup/rna_cleaner.py b/source/blender/makesrna/rna_cleanup/rna_cleaner.py index 4127861e1ce..2f2fabd6d6c 100755 --- a/source/blender/makesrna/rna_cleanup/rna_cleaner.py +++ b/source/blender/makesrna/rna_cleanup/rna_cleaner.py @@ -238,15 +238,18 @@ def write_files(basename, props_list, props_length_max): else: indent = ' ' rna += indent + '("%s", "%s", "%s", "%s", "%s"),\n' % tuple(props[2:5] + props[6:]) # py - if props[0] == 'NOTE': indent = '# ' - else: indent = ' ' blanks = [' '* (x[0]-x[1]) for x in zip(props_length_max,list(map(len,props)))] props = ['"%s"%s'%(x[0],x[1]) for x in zip(props,blanks)] py += indent + '(%s, %s, %s, %s, %s, %s, %s, %s),\n' % tuple(props) + f_txt.write(txt) f_py.write("rna_api = [\n%s]\n" % py) f_rna.write("rna_api = [\n%s]\n" % rna) + f_txt.close() + f_py.close() + f_rna.close() + print ('\nSaved %s, %s and %s.\n' % (font_bold(f_txt.name), font_bold(f_py.name), font_bold(f_rna.name) ) ) @@ -257,8 +260,10 @@ def main(): sort_choices = ['note','changed','class','from','to','kw'] default_sort_choice = sort_choices[0] - kw_prefixes = ['invert','is','lock','show','show_only','use','use_only'] - kw = ['hide','select','layer','state'] + #kw_prefixes = ['invert','is','lock','show','show_only','use','use_only'] + #kw = ['hide','select','layer','state'] + kw_prefixes = ['has','invert','is','lock','layers','show','show_only','states','use','use_only'] + kw = ['layers','states','value'] input_filename, sort_priority = check_commandline() props_list,props_length_max = get_props(input_filename) From a0e12214722476f4d1b7f29f2c8c4b11dcd6fad4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 6 Jul 2010 14:30:31 +0000 Subject: [PATCH 345/674] complain if running with py2 --- source/blender/makesrna/rna_cleanup/rna_cleaner.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/blender/makesrna/rna_cleanup/rna_cleaner.py b/source/blender/makesrna/rna_cleanup/rna_cleaner.py index 2f2fabd6d6c..52bd59a6bba 100755 --- a/source/blender/makesrna/rna_cleanup/rna_cleaner.py +++ b/source/blender/makesrna/rna_cleanup/rna_cleaner.py @@ -274,5 +274,9 @@ def main(): if __name__=='__main__': - main() + import sys + if not sys.version.startswith("3"): + print("Incorrect python version, use python 3!") + else: + main() From ca5de1ea33193abbc0aacc28e70a505ac57f9e4a Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Tue, 6 Jul 2010 16:39:40 +0000 Subject: [PATCH 346/674] === Windows Installer === Make sure for win64 version of Blender that we set default install dir to $PROGRAMFILES64 and keep win32 version to $PROGRAMFILES32. Reported on Graphicall.org by Robroy --- release/windows/installer/00.sconsblender.nsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/windows/installer/00.sconsblender.nsi b/release/windows/installer/00.sconsblender.nsi index 3b10477bffe..4f31e17d004 100644 --- a/release/windows/installer/00.sconsblender.nsi +++ b/release/windows/installer/00.sconsblender.nsi @@ -66,7 +66,7 @@ UninstallIcon "[RELDIR]\00.installer.ico" Caption "Blender [VERSION] Installer" OutFile "[DISTDIR]\..\blender-[VERSION]-windows[BITNESS].exe" -InstallDir "$PROGRAMFILES\Blender Foundation\Blender" +InstallDir "$PROGRAMFILES[BITNESS]\Blender Foundation\Blender" BrandingText "Blender Foundation | http://www.blender.org" ComponentText "This will install Blender [VERSION] on your computer." From 577cd54c8e88d97ecb87c7c0b01bf3fd6703e2ee Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 6 Jul 2010 16:40:56 +0000 Subject: [PATCH 347/674] use normal mouse speed for the color wheel unless shift is pressed. --- source/blender/editors/interface/interface_handlers.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index a19113d4b27..c8eefac43f9 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -3066,7 +3066,7 @@ static int ui_numedit_but_HSVCIRCLE(uiBut *but, uiHandleButtonData *data, int mx } if(U.uiflag & USER_CONTINUOUS_MOUSE) { - float fac= shift ? 0.02 : 0.1; + float fac= shift ? 0.05 : 1.0f; /* slow down the mouse, this is fairly picky */ mx = (data->dragstartx*(1.0f-fac) + mx*fac); my = (data->dragstarty*(1.0f-fac) + my*fac); From 2a95a246eda72b3d08d0572562953a5703baa4b7 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 6 Jul 2010 16:44:05 +0000 Subject: [PATCH 348/674] color balance can now be animated in the sequencer. --- source/blender/blenkernel/BKE_sequencer.h | 4 +- source/blender/blenkernel/intern/sequencer.c | 19 +++++++--- .../blender/makesrna/intern/rna_sequencer.c | 37 ++++++++++++++++++- .../makesrna/rna_cleanup/rna_cleaner.py | 2 +- 4 files changed, 52 insertions(+), 10 deletions(-) diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index 6fe1c2a96ea..5c5bf30980c 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -136,8 +136,8 @@ struct SeqEffectHandle { void printf_strip(struct Sequence *seq); /* apply functions recursively */ -void seqbase_recursive_apply(struct ListBase *seqbase, int (*apply_func)(struct Sequence *seq, void *), void *arg); -void seq_recursive_apply(struct Sequence *seq, int (*apply_func)(struct Sequence *, void *), void *arg); +int seqbase_recursive_apply(struct ListBase *seqbase, int (*apply_func)(struct Sequence *seq, void *), void *arg); +int seq_recursive_apply(struct Sequence *seq, int (*apply_func)(struct Sequence *, void *), void *arg); // extern void seq_free_sequence(struct Scene *scene, struct Sequence *seq); diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index bd3e0129bcc..894b8b6ab60 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -87,18 +87,27 @@ void printf_strip(Sequence *seq) fprintf(stderr, "\tseq_tx_set_final_left: %d %d\n\n", seq_tx_get_final_left(seq, 0), seq_tx_get_final_right(seq, 0)); } -void seqbase_recursive_apply(ListBase *seqbase, int (*apply_func)(Sequence *seq, void *), void *arg) +int seqbase_recursive_apply(ListBase *seqbase, int (*apply_func)(Sequence *seq, void *), void *arg) { Sequence *iseq; for(iseq= seqbase->first; iseq; iseq= iseq->next) { - seq_recursive_apply(iseq, apply_func, arg); + if(seq_recursive_apply(iseq, apply_func, arg) == -1) + return -1; /* bail out */ } + return 1; } -void seq_recursive_apply(Sequence *seq, int (*apply_func)(Sequence *, void *), void *arg) +int seq_recursive_apply(Sequence *seq, int (*apply_func)(Sequence *, void *), void *arg) { - if(apply_func(seq, arg) && seq->seqbase.first) - seqbase_recursive_apply(&seq->seqbase, apply_func, arg); + int ret= apply_func(seq, arg); + + if(ret == -1) + return -1; /* bail out */ + + if(ret && seq->seqbase.first) + ret = seqbase_recursive_apply(&seq->seqbase, apply_func, arg); + + return ret; } /* ********************************************************************** diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index 5cd4db205f5..b7bdffa0e13 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -483,6 +483,37 @@ static void rna_Sequence_opacity_set(PointerRNA *ptr, float value) { ((Sequence*)(ptr->data))->blend_opacity = value * 100.0f; } + +static int colbalance_seq_cmp_cb(Sequence *seq, void *arg_pt) +{ + struct { Sequence *seq; void *color_balance; } *data= arg_pt; + + if(seq->strip && seq->strip->color_balance == data->color_balance) { + data->seq= seq; + return -1; /* done so bail out */ + } + return 1; +} +static char *rna_SequenceColorBalance_path(PointerRNA *ptr) +{ + Scene *scene= ptr->id.data; + Editing *ed= seq_give_editing(scene, FALSE); + Sequence *seq; + + struct { Sequence *seq; void *color_balance; } data; + data.seq= NULL; + data.color_balance= ptr->data; + + /* irritating we need to search for our sequence! */ + seqbase_recursive_apply(&ed->seqbase, colbalance_seq_cmp_cb, &data); + seq= data.seq; + + if (seq && seq->name+2) + return BLI_sprintfN("sequence_editor.sequences_all[\"%s\"].color_balance", seq->name+2); + else + return BLI_strdup(""); +} + #else static void rna_def_strip_element(BlenderRNA *brna) @@ -613,7 +644,9 @@ static void rna_def_strip_color_balance(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_COLOR_BALANCE_INVERSE_LIFT); RNA_def_property_ui_text(prop, "Inverse Lift", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - + + RNA_def_struct_path_func(srna, "rna_SequenceColorBalance_path"); + /* not yet used prop= RNA_def_property(srna, "exposure", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0f, 1.0f); @@ -1320,7 +1353,7 @@ static void rna_def_solid_color(BlenderRNA *brna) PropertyRNA *prop; srna = RNA_def_struct(brna, "ColorSequence", "EffectSequence"); - RNA_def_struct_ui_text(srna, "Color Sequence", "Sequence strip creating an image filled with a single color"); + RNA_def_struct_ui_text(srna, "Color Sequence", "Sequence strip creating an image filled with a single g"); RNA_def_struct_sdna_from(srna, "SolidColorVars", "effectdata"); prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR); diff --git a/source/blender/makesrna/rna_cleanup/rna_cleaner.py b/source/blender/makesrna/rna_cleanup/rna_cleaner.py index 52bd59a6bba..3f68ec4a955 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 +#! /usr/bin/env python3.1 """ This script is used to help cleaning RNA api. From 228ba5657971df06d84322e518836c306709644e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 6 Jul 2010 17:10:02 +0000 Subject: [PATCH 349/674] metaball outlines were drawing with Render Override enabled. --- source/blender/editors/space_view3d/drawobject.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index c8581abd704..7cbcc982bf6 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -5022,6 +5022,8 @@ static int drawmball(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, } if(ml==NULL) return 1; + + if(v3d->flag2 & V3D_RENDER_OVERRIDE) return 0; /* in case solid draw, reset wire colors */ if(ob->flag & SELECT) { From 0d8e1abff55658bd59d307f4dfc74ab724dbf1a3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 6 Jul 2010 18:07:10 +0000 Subject: [PATCH 350/674] selected_sequences wasnt working right, added 'sequences' property to the context --- source/blender/editors/screen/screen_context.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c index de1312501d4..1c570d98744 100644 --- a/source/blender/editors/screen/screen_context.c +++ b/source/blender/editors/screen/screen_context.c @@ -69,7 +69,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult "active_base", "active_object", "object", "edit_object", "sculpt_object", "vertex_paint_object", "weight_paint_object", "texture_paint_object", "particle_edit_object", - "selected_sequences", "selected_editable_sequences", /* sequencer */ + "sequences", "selected_sequences", "selected_editable_sequences", /* sequencer */ NULL}; CTX_data_dir_set(result, dir); @@ -321,7 +321,18 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult return 1; } - else if(CTX_data_equals(member, "selected_strips")) { + else if(CTX_data_equals(member, "sequences")) { + Editing *ed= seq_give_editing(scene, FALSE); + if(ed) { + Sequence *seq; + for (seq= ed->seqbasep->first; seq; seq= seq->next) { + CTX_data_list_add(result, &scene->id, &RNA_Sequence, seq); + } + CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); + return 1; + } + } + else if(CTX_data_equals(member, "selected_sequences")) { Editing *ed= seq_give_editing(scene, FALSE); if(ed) { Sequence *seq; From cfc35a4d30ae03aa4a032189d72e91c5d0d17a1d Mon Sep 17 00:00:00 2001 From: Diego Borghetti Date: Tue, 6 Jul 2010 19:26:38 +0000 Subject: [PATCH 351/674] Bring back "Sort Faces" command. This was the old Ctrl + FKEY in object mode, now it's in edit mode and is part of the Ctrl + FKEY menu (Faces). I also assing this to the Ctrl + Alt + FKEY, but Matt please check this and feel free to change (or tell me and I will change). Still there is no "reverse" function, but I commit now to finish in my home. --- release/scripts/ui/space_view3d.py | 1 + source/blender/editors/mesh/editmesh_tools.c | 179 +++++++++++++++++++ source/blender/editors/mesh/mesh_intern.h | 1 + source/blender/editors/mesh/mesh_ops.c | 2 + source/blender/editors/mesh/meshtools.c | 147 --------------- 5 files changed, 183 insertions(+), 147 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 4e2a713474a..2d48d2c3ddd 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -1550,6 +1550,7 @@ class VIEW3D_MT_edit_mesh_faces(bpy.types.Menu): layout.operator("mesh.fill") layout.operator("mesh.beautify_fill") layout.operator("mesh.solidify") + layout.operator("mesh.sort_faces") layout.separator() diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index a46d154cc22..1f112ec1105 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -80,6 +80,7 @@ editmesh_tool.c: UI called tools for editmesh, geometry changes here, otherwise #include "ED_screen.h" #include "ED_transform.h" #include "ED_view3d.h" +#include "ED_object.h" #include "mesh_intern.h" @@ -7077,6 +7078,184 @@ void MESH_OT_beautify_fill(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } +/* ********************** SORT FACES ******************* */ + +static void permutate(void *list, int num, int size, int *index) +{ + void *buf; + int len; + int i; + + len = num * size; + + buf = MEM_mallocN(len, "permutate"); + memcpy(buf, list, len); + + for (i = 0; i < num; i++) { + memcpy((char *)list + (i * size), (char *)buf + (index[i] * size), size); + } + MEM_freeN(buf); +} + +/* sort faces on view axis */ +static float *face_sort_floats; +static int float_sort(const void *v1, const void *v2) +{ + float x1, x2; + + x1 = face_sort_floats[((int *) v1)[0]]; + x2 = face_sort_floats[((int *) v2)[0]]; + + if( x1 > x2 ) return 1; + else if( x1 < x2 ) return -1; + return 0; +} + + +static int sort_faces_exec(bContext *C, wmOperator *op) +{ + RegionView3D *rv3d= ED_view3d_context_rv3d(C); + View3D *v3d= CTX_wm_view3d(C); + Object *ob= CTX_data_active_object(C); + Scene *scene= CTX_data_scene(C); + Mesh *me; + CustomDataLayer *layer; + int i, *index; + int event; + float reverse = 1; + // XXX int ctrl= 0; + + if(!ob) return OPERATOR_FINISHED; + if(ob->type!=OB_MESH) return OPERATOR_FINISHED; + if (!v3d) return OPERATOR_FINISHED; + + /* This operator work in Object Mode, not in edit mode. + * After talk with Cambell we agree that there is no point to port this to EditMesh right now. + * so for now, we just exit_editmode and enter_editmode at the end of this function. + */ + ED_object_exit_editmode(C, EM_FREEDATA); + + me= ob->data; + if(me->totface==0) { + ED_object_enter_editmode(C, 0); + return OPERATOR_FINISHED; + } + + event= RNA_enum_get(op->ptr, "type"); + + // XXX + //if(ctrl) + // reverse = -1; + + /* create index list */ + index= (int *)MEM_mallocN(sizeof(int) * me->totface, "sort faces"); + for (i = 0; i < me->totface; i++) { + index[i] = i; + } + + face_sort_floats = (float *) MEM_mallocN(sizeof(float) * me->totface, "sort faces float"); + + /* sort index list instead of faces itself + * and apply this permutation to all face layers + */ + if (event == 5) { + /* Random */ + for(i=0; itotface; i++) { + face_sort_floats[i] = BLI_frand(); + } + qsort(index, me->totface, sizeof(int), float_sort); + } else { + MFace *mf; + float vec[3]; + float mat[4][4]; + float cur[3]; + + if (event == 1) + mul_m4_m4m4(mat, OBACT->obmat, rv3d->viewmat); /* apply the view matrix to the object matrix */ + else if (event == 2) { /* sort from cursor */ + if( v3d && v3d->localvd ) { + VECCOPY(cur, v3d->cursor); + } else { + VECCOPY(cur, scene->cursor); + } + invert_m4_m4(mat, OBACT->obmat); + mul_m4_v3(mat, cur); + } + + mf= me->mface; + + for(i=0; itotface; i++, mf++) { + if (event==3) { + face_sort_floats[i] = ((float)mf->mat_nr)*reverse; + } else if (event==4) { + /*selected first*/ + if (mf->flag & ME_FACE_SEL) + face_sort_floats[i] = 0.0; + else + face_sort_floats[i] = reverse; + } else { + /* find the faces center */ + add_v3_v3v3(vec, (me->mvert+mf->v1)->co, (me->mvert+mf->v2)->co); + if (mf->v4) { + add_v3_v3(vec, (me->mvert+mf->v3)->co); + add_v3_v3(vec, (me->mvert+mf->v4)->co); + mul_v3_fl(vec, 0.25f); + } else { + add_v3_v3(vec, (me->mvert+mf->v3)->co); + mul_v3_fl(vec, 1.0f/3.0f); + } /* done */ + + if (event == 1) { /* sort on view axis */ + mul_m4_v3(mat, vec); + face_sort_floats[i] = vec[2] * reverse; + } else if(event == 2) { /* distance from cursor*/ + face_sort_floats[i] = len_v3v3(cur, vec) * reverse; /* back to front */ + } + } + } + qsort(index, me->totface, sizeof(int), float_sort); + } + + MEM_freeN(face_sort_floats); + for(i = 0; i < me->fdata.totlayer; i++) { + layer = &me->fdata.layers[i]; + permutate(layer->data, me->totface, CustomData_sizeof(layer->type), index); + } + + MEM_freeN(index); + DAG_id_flush_update(ob->data, OB_RECALC_DATA); + + /* Return to editmode. */ + ED_object_enter_editmode(C, 0); +} + +void MESH_OT_sort_faces(wmOperatorType *ot) +{ + static EnumPropertyItem type_items[]= { + { 1, "VIEW_AXIS", 0, "View Axis", "" }, + { 2, "CURSOR_DISTANCE", 0, "Cursor Distance", "" }, + { 3, "MATERIAL", 0, "Material", "" }, + { 4, "SELECTION", 0, "Selection", "" }, + { 5, "RANDOMIZE", 0, "Randomize", "" }, + { 0, NULL, 0, NULL, NULL }}; + + /* identifiers */ + ot->name= "Sort Faces"; // XXX (Ctrl to reverse)%t| + ot->description= "The faces of the active Mesh Object are sorted, based on the current view."; + ot->idname= "MESH_OT_sort_faces"; + + /* api callbacks */ + ot->invoke= WM_menu_invoke; + ot->exec= sort_faces_exec; + ot->poll= ED_operator_editmesh; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + ot->prop= RNA_def_enum(ot->srna, "type", type_items, 0, "Type", ""); +} + /********************** Quad/Tri Operators *************************/ static int quads_convert_to_tris_exec(bContext *C, wmOperator *op) diff --git a/source/blender/editors/mesh/mesh_intern.h b/source/blender/editors/mesh/mesh_intern.h index 3e175c657f6..6db2a3f211d 100644 --- a/source/blender/editors/mesh/mesh_intern.h +++ b/source/blender/editors/mesh/mesh_intern.h @@ -241,6 +241,7 @@ void MESH_OT_rip(struct wmOperatorType *ot); void MESH_OT_shape_propagate_to_all(struct wmOperatorType *ot); void MESH_OT_blend_from_shape(struct wmOperatorType *ot); +void MESH_OT_sort_faces(struct wmOperatorType *ot); /* ******************* mesh_data.c */ diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index c5ddd3547ef..1394331a191 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -113,6 +113,7 @@ void ED_operatortypes_mesh(void) WM_operatortype_append(MESH_OT_edge_flip); WM_operatortype_append(MESH_OT_faces_shade_smooth); WM_operatortype_append(MESH_OT_faces_shade_flat); + WM_operatortype_append(MESH_OT_sort_faces); WM_operatortype_append(MESH_OT_delete); @@ -273,6 +274,7 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "MESH_OT_fill", FKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "MESH_OT_beautify_fill", FKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0); + WM_keymap_add_item(keymap, "MESH_OT_sort_faces", FKEY, KM_PRESS, KM_ALT|KM_CTRL, 0); WM_keymap_add_item(keymap, "MESH_OT_quads_convert_to_tris", TKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "MESH_OT_tris_convert_to_quads", JKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "MESH_OT_edge_flip", FKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0); diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c index b7a63b60318..70098e0812f 100644 --- a/source/blender/editors/mesh/meshtools.c +++ b/source/blender/editors/mesh/meshtools.c @@ -601,153 +601,6 @@ int join_mesh_shapes_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -/* ********************** SORT FACES ******************* */ - -static void permutate(void *list, int num, int size, int *index) -{ - void *buf; - int len; - int i; - - len = num * size; - - buf = MEM_mallocN(len, "permutate"); - memcpy(buf, list, len); - - for (i = 0; i < num; i++) { - memcpy((char *)list + (i * size), (char *)buf + (index[i] * size), size); - } - MEM_freeN(buf); -} - -/* sort faces on view axis */ -static float *face_sort_floats; -static int float_sort(const void *v1, const void *v2) -{ - float x1, x2; - - x1 = face_sort_floats[((int *) v1)[0]]; - x2 = face_sort_floats[((int *) v2)[0]]; - - if( x1 > x2 ) return 1; - else if( x1 < x2 ) return -1; - return 0; -} - - -void sort_faces(Scene *scene, View3D *v3d) -{ - RegionView3D *rv3d= NULL; // get from context - Object *ob= OBACT; - Mesh *me; - CustomDataLayer *layer; - int i, *index; - short event; - float reverse = 1; - int ctrl= 0; // XXX - - if(!ob) return; - if(scene->obedit) return; - if(ob->type!=OB_MESH) return; - if (!v3d) return; - - me= ob->data; - if(me->totface==0) return; - - event = pupmenu( - "Sort Faces (Ctrl to reverse)%t|" - "View Axis%x1|" - "Cursor Distance%x2|" - "Material%x3|" - "Selection%x4|" - "Randomize%x5"); - - if (event==-1) return; - - if(ctrl) - reverse = -1; - -/* create index list */ - index = (int *) MEM_mallocN(sizeof(int) * me->totface, "sort faces"); - for (i = 0; i < me->totface; i++) { - index[i] = i; - } - - face_sort_floats = (float *) MEM_mallocN(sizeof(float) * me->totface, "sort faces float"); - -/* sort index list instead of faces itself - and apply this permutation to all face layers */ - - if (event == 5) { - /* Random */ - for(i=0; itotface; i++) { - face_sort_floats[i] = BLI_frand(); - } - qsort(index, me->totface, sizeof(int), float_sort); - } else { - MFace *mf; - float vec[3]; - float mat[4][4]; - float cur[3]; - - if (event == 1) - mul_m4_m4m4(mat, OBACT->obmat, rv3d->viewmat); /* apply the view matrix to the object matrix */ - else if (event == 2) { /* sort from cursor */ - if( v3d && v3d->localvd ) { - VECCOPY(cur, v3d->cursor); - } else { - VECCOPY(cur, scene->cursor); - } - invert_m4_m4(mat, OBACT->obmat); - mul_m4_v3(mat, cur); - } - - mf= me->mface; - for(i=0; itotface; i++, mf++) { - - if (event==3) { - face_sort_floats[i] = ((float)mf->mat_nr)*reverse; - } else if (event==4) { - /*selected first*/ - if (mf->flag & ME_FACE_SEL) face_sort_floats[i] = 0.0; - else face_sort_floats[i] = reverse; - } else { - /* find the faces center */ - add_v3_v3v3(vec, (me->mvert+mf->v1)->co, (me->mvert+mf->v2)->co); - if (mf->v4) { - add_v3_v3(vec, (me->mvert+mf->v3)->co); - add_v3_v3(vec, (me->mvert+mf->v4)->co); - mul_v3_fl(vec, 0.25f); - } else { - add_v3_v3(vec, (me->mvert+mf->v3)->co); - mul_v3_fl(vec, 1.0f/3.0f); - } /* done */ - - if (event == 1) { /* sort on view axis */ - mul_m4_v3(mat, vec); - face_sort_floats[i] = vec[2] * reverse; - } else if(event == 2) { /* distance from cursor*/ - face_sort_floats[i] = len_v3v3(cur, vec) * reverse; /* back to front */ - } - } - } - qsort(index, me->totface, sizeof(int), float_sort); - } - - MEM_freeN(face_sort_floats); - - for(i = 0; i < me->fdata.totlayer; i++) { - layer = &me->fdata.layers[i]; - permutate(layer->data, me->totface, CustomData_sizeof(layer->type), index); - } - - MEM_freeN(index); - - DAG_id_flush_update(ob->data, OB_RECALC_DATA); -} - - - /* ********************* MESH VERTEX OCTREE LOOKUP ************* */ /* important note; this is unfinished, needs better API for editmode, and custom threshold */ From e64f3dd4d5565fbed17604b220c516b30546d31b Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Tue, 6 Jul 2010 19:42:06 +0000 Subject: [PATCH 352/674] File/installation paths: fix path of startup.blend for OSX Also fix the header file no reinclusion macro name Thanks to Jens Verwiebe for the patch --- source/blender/blenlib/BLI_path_util.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/blender/blenlib/BLI_path_util.h b/source/blender/blenlib/BLI_path_util.h index d149f15cd35..866201cba52 100644 --- a/source/blender/blenlib/BLI_path_util.h +++ b/source/blender/blenlib/BLI_path_util.h @@ -30,8 +30,8 @@ * * ***** END GPL LICENSE BLOCK ***** */ -#ifndef BLI_UTIL_H -#define BLI_UTIL_H +#ifndef BLI_PATH_UTIL_H +#define BLI_PATH_UTIL_H #ifdef __cplusplus extern "C" { @@ -102,6 +102,8 @@ char *BLI_get_folder_create(int folder_id, char *subfolder); #ifdef WIN32 #define BLENDER_BASE_FORMAT "%s\\Blender Foundation\\Blender\\%s" +#elif __APPLE__ +#define BLENDER_BASE_FORMAT "%s/Blender/%s" #else #define BLENDER_BASE_FORMAT "%s/.blender/%s" #endif From ea183b58d35e5d23c2b7565be7c7051cf14d6521 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Tue, 6 Jul 2010 19:59:37 +0000 Subject: [PATCH 353/674] Fixed bug [#22757] : hide dock and menu on OSX only when Blender window is maximized to fullscreen on the primary monitor --- intern/ghost/intern/GHOST_WindowCocoa.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/intern/ghost/intern/GHOST_WindowCocoa.mm b/intern/ghost/intern/GHOST_WindowCocoa.mm index abcb8bcd5cc..0b22017c92c 100644 --- a/intern/ghost/intern/GHOST_WindowCocoa.mm +++ b/intern/ghost/intern/GHOST_WindowCocoa.mm @@ -732,7 +732,7 @@ GHOST_TSuccess GHOST_WindowCocoa::setState(GHOST_TWindowState state) #ifdef MAC_OS_X_VERSION_10_6 //10.6 provides Cocoa functions to autoshow menu bar, and to change a window style //Hide menu & dock if needed - if ([[m_window screen] isEqual:[NSScreen mainScreen]]) + if ([[m_window screen] isEqual:[[NSScreen screens] objectAtIndex:0]]) { [NSApp setPresentationOptions:(NSApplicationPresentationHideDock | NSApplicationPresentationAutoHideMenuBar)]; } @@ -743,7 +743,7 @@ GHOST_TSuccess GHOST_WindowCocoa::setState(GHOST_TWindowState state) #else //With 10.5, we need to create a new window to change its style to borderless //Hide menu & dock if needed - if ([[m_window screen] isEqual:[NSScreen mainScreen]]) + if ([[m_window screen] isEqual:[[NSScreen screens] objectAtIndex:0]]) { //Cocoa function in 10.5 does not allow to set the menu bar in auto-show mode [NSMenu setMenuBarVisible:NO]; //One of the very few 64bit compatible Carbon function From c468f94f53674b5133772bc706b997233a75e86a Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Tue, 6 Jul 2010 20:31:55 +0000 Subject: [PATCH 354/674] fix mingw compile - seems to have been conflicting #defines for INT, solved by moving #include up --- intern/ghost/intern/GHOST_SystemWin32.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp index 2b26edea38d..da7a0399f41 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.cpp +++ b/intern/ghost/intern/GHOST_SystemWin32.cpp @@ -37,6 +37,14 @@ #include "GHOST_SystemWin32.h" #include "GHOST_EventDragnDrop.h" +#define WIN32_LEAN_AND_MEAN +#ifdef _WIN32_IE +#undef _WIN32_IE +#endif +#define _WIN32_IE 0x0501 +#include +#include + // win64 doesn't define GWL_USERDATA #ifdef WIN32 #ifndef GWL_USERDATA @@ -88,8 +96,6 @@ #include "GHOST_WindowWin32.h" #include "GHOST_NDOFManager.h" -#include - // Key code values not found in winuser.h #ifndef VK_MINUS #define VK_MINUS 0xBD @@ -1129,4 +1135,4 @@ const GHOST_TUns8* GHOST_SystemWin32::getBinaryDir() const } return NULL; -} \ No newline at end of file +} From 120d49cf27e5ad283a86133ee40b7091786078f0 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Wed, 7 Jul 2010 12:46:39 +0000 Subject: [PATCH 355/674] === Windows Installer === * have nice image also in uninstaller * ensure we can remove start menu links --- release/windows/installer/00.sconsblender.nsi | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/release/windows/installer/00.sconsblender.nsi b/release/windows/installer/00.sconsblender.nsi index 4f31e17d004..3e165498248 100644 --- a/release/windows/installer/00.sconsblender.nsi +++ b/release/windows/installer/00.sconsblender.nsi @@ -25,6 +25,7 @@ Name "Blender [VERSION]" !define MUI_COMPONENTSPAGE_SMALLDESC !define MUI_FINISHPAGE_RUN "$INSTDIR\blender.exe" !define MUI_CHECKBITMAP "[RELDIR]\00.checked.bmp" +!define MUI_UNWELCOMEFINISHPAGE_BITMAP "[RELDIR]\01.installer.bmp" !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE "[DISTDIR]\Copyright.txt" @@ -86,6 +87,7 @@ Var HWND_INSTDIR Var HWND_HOMEDIR Function .onInit + ClearErrors StrCpy $SHORTVERSION "[SHORTVERSION]" FunctionEnd @@ -162,7 +164,7 @@ Section "Blender-[VERSION] (required)" SecCopyUI SectionEnd Section "Add Start Menu shortcuts" Section2 - SetOutPath $INSTDIR + SetShellVarContext all CreateDirectory "$SMPROGRAMS\Blender Foundation\Blender\" CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Blender.lnk" "$INSTDIR\Blender.exe" "" "$INSTDIR\blender.exe" 0 @@ -173,14 +175,10 @@ Section "Add Start Menu shortcuts" Section2 SectionEnd Section "Add Desktop Blender-[VERSION] shortcut" Section3 - SetOutPath $INSTDIR CreateShortCut "$DESKTOP\Blender.lnk" "$INSTDIR\blender.exe" "" "$INSTDIR\blender.exe" 0 SectionEnd Section "Open .blend files with Blender-[VERSION]" Section4 - SetOutPath $INSTDIR - ;ExecShell "open" '"$INSTDIR\blender.exe"' "-R -b" - ;do it the manual way! ;) WriteRegStr HKCR ".blend" "" "blendfile" WriteRegStr HKCR "blendfile" "" "Blender .blend File" @@ -199,6 +197,10 @@ Section "Uninstall" ReadRegStr $SHORTVERSION HKLM "SOFTWARE\BlenderFoundation" "ShortVersion" DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" DeleteRegKey HKLM "SOFTWARE\BlenderFoundation" + SetShellVarContext all + + StrCpy $0 "$SMPROGRAMS\Blender Foundation\" + MessageBox MB_OK $0 ; remove files [DELROOTDIRCONTS] @@ -208,10 +210,9 @@ Section "Uninstall" RMDir /r "$BLENDERHOME" Next: ; remove shortcuts, if any. - Delete "$SMPROGRAMS\Blender Foundation\Blender\*.*" Delete "$DESKTOP\Blender.lnk" ; remove all link related directories and files - RMDir /r "$SMPROGRAMS\Blender Foundation" + RMDir /r "$SMPROGRAMS\Blender Foundation\" ; remove entire installation directory, including any file created by the user RMDir /r "$INSTDIR" SectionEnd From ccf35e0a68b32458106836075fd3c9a0d0464a5e Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Wed, 7 Jul 2010 12:50:24 +0000 Subject: [PATCH 356/674] remove unused files. --- release/windows/inno/blender.iss | 92 ----------------------------- release/windows/inno/copyright.txt | 56 ------------------ release/windows/inno/header.bmp | Bin 25818 -> 0 bytes release/windows/inno/installer.bmp | Bin 154542 -> 0 bytes release/windows/inno/installer.ico | Bin 25214 -> 0 bytes 5 files changed, 148 deletions(-) delete mode 100644 release/windows/inno/blender.iss delete mode 100644 release/windows/inno/copyright.txt delete mode 100644 release/windows/inno/header.bmp delete mode 100644 release/windows/inno/installer.bmp delete mode 100644 release/windows/inno/installer.ico diff --git a/release/windows/inno/blender.iss b/release/windows/inno/blender.iss deleted file mode 100644 index 5faf5b47406..00000000000 --- a/release/windows/inno/blender.iss +++ /dev/null @@ -1,92 +0,0 @@ -; Script generated by the Inno Setup Script Wizard. -; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! - - -[Setup] -#define VERSION "2.49b" - -; NOTE: The value of AppId uniquely identifies this application. -; Do not use the same AppId value in installers for other applications. -; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) -AppId={{C45CB76D-AD5F-49CC-86DE-72B168A6A888} -AppName=Blender -AppVerName=Blender {#VERSION} -AppPublisher=Blender Foundation -AppPublisherURL=http://www.blender.org -AppSupportURL=http://www.blender.org -AppUpdatesURL=http://www.blender.org -DefaultDirName={pf}\Blender -DefaultGroupName=Blender Foundation -AllowNoIcons=true -LicenseFile=.\copyright.txt -OutputBaseFilename=blender-{#VERSION} -Compression=lzma -SolidCompression=true -ChangesAssociations=true -WizardImageFile=.\installer.bmp -WizardSmallImageFile=.\header.bmp -SetupIconFile=.\installer.ico -MinVersion=,5.01.2600sp1 -PrivilegesRequired=none -AllowRootDirectory=true -ShowLanguageDialog=auto - -[Dirs] -Name: {userdocs}\Blender; Flags: uninsneveruninstall; Tasks: ; Languages: - -[Languages] -Name: english; MessagesFile: compiler:Default.isl - -[Tasks] -Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked -Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked - -[Files] -Source: ..\..\..\..\build\bin\release\blender.exe; DestDir: {app}; Flags: ignoreversion -Source: ..\..\..\..\build\bin\release\blender.html; DestDir: {app}; Flags: ignoreversion -Source: ..\..\..\..\build\bin\release\BlenderQuickStart.pdf; DestDir: {app}; Flags: ignoreversion -Source: ..\..\..\..\build\bin\release\copyright.txt; DestDir: {app}; Flags: ignoreversion -Source: ..\..\..\..\build\bin\release\GPL-license.txt; DestDir: {app}; Flags: ignoreversion -Source: ..\..\..\..\build\bin\release\Python-license.txt; DestDir: {app}; Flags: ignoreversion -Source: ..\..\..\..\build\bin\release\release_249.txt; DestDir: {app}; Flags: ignoreversion -Source: ..\..\..\..\build\bin\release\*.dll; DestDir: {app}; Flags: ignoreversion -Source: ..\..\..\..\build\bin\release\plugins\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs -Source: ..\..\..\..\build\bin\release\.blender\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs -; NOTE: Don't use "Flags: ignoreversion" on any shared system files - -[Icons] -Name: {group}\Blender; Filename: {app}\blender.exe -Name: {group}\ReleaseNotes; Filename: {app}\release_249.txt -Name: {group}\Blender.org; Filename: {app}\blender.html -Name: {group}\Copyright; Filename: {app}\copyright.txt -Name: {group}\GPL; Filename: {app}\GPL-license.txt -Name: {group}\Uninstall; Filename: {uninstallexe}; Tasks: ; Languages: -Name: {commondesktop}\Blender; Filename: {app}\blender.exe; Tasks: desktopicon -Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\Blender; Filename: {app}\blender.exe; Tasks: quicklaunchicon - -[Registry] -Root: HKCR; Subkey: .blend; ValueType: string; ValueName: ; ValueData: BlenderFile; Flags: uninsdeletevalue -Root: HKCR; Subkey: BlenderFile; ValueType: string; ValueName: ; ValueData: Blender File; Flags: uninsdeletekey -Root: HKCR; Subkey: BlenderFile\DefaultIcon; ValueType: string; ValueName: ; ValueData: {app}\blender.exe,0 -Root: HKCR; Subkey: BlenderFile\shell\open\command; ValueType: string; ValueName: ; ValueData: """{app}\blender.exe"" ""%1""" - -[Run] -Filename: {app}\blender.exe; Description: {cm:LaunchProgram,Blender}; Flags: nowait postinstall skipifsilent - - -[_ISToolDownload] - -[UninstallDelete] -Name: {app}\blender.exe; Type: files -Name: {app}\*.dll; Type: files -Name: {app}\blender.html; Type: files; Tasks: ; Languages: -Name: {app}\BlenderQuickStart.pdf; Type: files -Name: {app}\copyright.txt; Type: files -Name: {app}\GPL-license.txt; Type: files -Name: {app}\Python-license.txt; Type: files -Name: {app}\release_249.txt; Type: files -Name: {app}\.blender\*; Type: filesandordirs -Name: {app}\plugins\*; Type: filesandordirs -Name: {app}\.blender; Type: dirifempty -Name: {app}\plugins; Type: dirifempty -Name: {app}; Type: dirifempty diff --git a/release/windows/inno/copyright.txt b/release/windows/inno/copyright.txt deleted file mode 100644 index 4e67c2561d3..00000000000 --- a/release/windows/inno/copyright.txt +++ /dev/null @@ -1,56 +0,0 @@ -BLENDER CREATOR LICENSE AGREEMENT - -IMPORTANT: PLEASE READ CAREFULLY BEFORE USING THE BLENDER CREATOR SOFTWARE. - -This License Agreement for the Blender Creator software ("License Agreement") is an agreement between NaN Technologies B.V., Meerenakkerplein 11, 5652 BJ Eindhoven, the Netherlands ("NaN") and you (either an individual or a legal entity) ("You") with respect to the software product which this License Agreement accompanies (the "Software"). - -By installing, copying or otherwise using the Software, You agree to be bound by the terms of this License Agreement. If You do not agree to the terms of this License Agreement do not install or use the Software. - - -1. Grant of License - -Subject to the provisions of this License Agreement, NaN grants You a limited, non-exclusive, personal, non-sublicenseable, non-transferable, revocable license to use the Software at any computer You own or use. - -2. License Restrictions - -Except as expressly provided under this License Agreement, or without prior written consent from NaN, or without permission by law, You may not: (a) remove or alter any proprietary, copyright or trademark notices in or on the Software; (b) modify, decompile, disassemble or reverse-engineer the Software; (c) sublicense, rent, lease, lend, assign or otherwise transfer rights to the Software. - -3. Permitted copying and electronic distribution of Software - -You are hereby granted permission to copy and distribute the Software without written agreement from NaN, only for non-commercial purposes. Distributing the Software within a restricted non-public environment, such as using a local network in a company or a local network of a university, is considered a 'non-commercial purpose'. This entire License Agreement must appear in and/or accompany all copies of the Software. -Distributing the Software 'bundled' in with ANY product is considered to be a 'commercial purpose'. - -4. Intellectual Property Rights and Ownership - -Title and ownership to all rights, including intellectual property rights, in and to the Software shall at all times solely and exclusively remain with NaN. The Software is protected by national and international (copyright) laws and treaties. All rights not expressly granted herein are reserved to NaN. - -5. Disclaimer of Warranties - -NaN provides you with the Software "as is" and with all faults. NaN explicitly disclaims all warranties and guarantees and does not make any representations with respect to the Software, whether express, implied, or statutory, including, but not limited to any (if any) warranties of or related to: fitness for a particular purpose, title, non-infringement, lack of viruses, accuracy or completeness of responses, results, lack of negligence or lack of workmanlike effort, and correspondence to description. The entire risk arising out of use or performance of the Software remains with You. - -6. Limitation of Liability - -In no event shall NaN or its employees, agents or suppliers be liable for any direct, indirect, consequential, incidental, special, punitive, or other damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, claims of third parties, damages as a result of injury to any person, or any other loss) arising out of or in connection with the license granted under this License Agreement or the use of or inability to use the Software, even if NaN has been advised of the possibility of such damages. - -7. User warning and indemnification - -WARNING: use of the Software and use of any works that are (partially) created with the Software (the "Works") may cause physical or psychological reactions from You or from third parties, which may result in damages, injuries, losses and/or other negative consequences. You acknowledge that NaN can not be held liable for any such damages, injuries, losses and/or other negative consequences. You acknowledge that it is your obligation to investigate, prevent and/or minimize such reactions prior to having third parties use the Works. - -You shall indemnify and hold harmless NaN from and against all actions, claims, demands, proceedings, losses, damages, costs, charges and expenses, including but not limited to legal fees and expenses, arising out of or in connection with (i) the use of the Software by You and (ii) the use of any Works created with the Software by You or any third parties. - -8. Term and Termination - -This License Agreement and the license granted hereunder is effective until terminated. This License Agreement shall terminate automatically and forthwith if You fail to comply with the terms of this License Agreement. Upon termination, You shall cease the use of the Software, remove the Software from (the memory of) your computer and destroy all copies of the Software. - -9. Entire Agreement - -This License Agreement is the entire agreement between NaN and You in respect of the subject matter of the License Agreement. This License Agreement supersedes all prior written or oral agreements, proposals or understandings, and any other communications between NaN and You relating to the subject matter of this License Agreement. - -10. Enforceability - -If any provision of this License Agreement is held to be unenforceable by a court of competent jurisdiction for any reason, such provision shall be adapted or amended only to the extent necessary to make it enforceable, and the remainder of the License Agreement shall remain in effect. - -11. Governing law and disputes - -This License Agreement and all disputes arising from it will be governed by the laws of The Netherlands. All disputes arising in connection with this Agreement that cannot be settled amicably shall be brought before the competent court in Amsterdam, the Netherlands, to which jurisdiction NaN and You hereby irrevocably consent. - diff --git a/release/windows/inno/header.bmp b/release/windows/inno/header.bmp deleted file mode 100644 index b631ba73933924c2bfea42197c02c4e2b0fdcf47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25818 zcmbt-2XtH4mK}e3GD#*qleShSnaoVG(pIuE$)7*-i@zPTN z+i{SN+d4Q#`;-Jc#rYNmfDZ4E^tKUf?Ra(6);Vfd68e;54i$ht>vWAdy2b|7!1$oX zhl!z{i6Je)3Fs!#(hH4|)l2F-cweCYOPLKHve&GSi3o*wC)8S9&$ z8d{hIpCiQQ{Mhp11jFPCm|UJ-S@sb)x3U8EyaW=5i#`x<0+!d-h&?ZdKK9V@6Bt09 zkH#M)@cF9<1h=nxgoKc6%yK3kVr(OG zwh%a(Ch4$MPO!*_ds~Nl+W=B;AA!*bCOb!=Nrth3uJJ*rQSFr+qY?bLzz?8D%aqwO z0UDVmCpm{sEjs~J8>a}SDUW$-7_iI`lQxh!GiDc5IyJO7H@q}IO5$9cSX!D|Spu2F z=PIN~m?MxH7gkpn0j5Jvgf~8$1aWW>kQC(eF;}9&WpUjtRsaK7}A(_*c1o;DMeDMk7V&4Ou#bpzf;Q zfX2DW0dkuJ=lry5e#X5(@GQ&>FV2oE&W$e3L!z*^GtAif`P@L}`q~oUb&NmKuKoax zukwmNNMlF{MH^((I!5f&5n3BeDD=rxWWjgOI_4G+V3D~^EdcfDsT4<8i;mQ(Z^S{T zq0y;>nPpnlH@J;WIO4%u=wyCA-Xa_6Z503yX%`@nN#cYul^~NrIX0kTK&N3J>`MO#Vbcg2TQxj^SQ~$0{Q* z(%j}|qK2wVeY z**6PKj)Tm>`AI>L3o|Yf(JDC8E*GB>d;n3;}#HN|`==WRlNZ2ZUgi z4D53Of!6h98ku|iK|yY!M#MBWIcLLdY=rf58Q{mrm2tRD@M(=`$uOeNXbf&!UV4fn z1VMFHguDD49APh+5Wzy6jYIl6y0{V1Y?JU7`UOexk=ReE#bX7-GEXnTPcIbf=wKj6 z%KRsk$;GJ|ht=gK7q%C6nEIgCFIQsHV}ddT1B*asoCP|5O*#b{XFTL2VOr;yX(d4t znaj{5V{&DYMM9j(B_>WmpCnPAIEl&sCo)Noo5ZUdX$%P&($x;?st2{zL;704X{dJ@ z8yFB_5}bxQ1{@cTphL2Ry1X5qO5I?|+9I^p7JT>g6djw;;ZLc>&w;m0;r!xG+#0_Z z+z73JCjJ)2C#O{I>6Lr>T8H~uM;vV<4p0h^M8^h{jLa_hPjaDx8d(lWG$L??fkpCx zkd-mXG&w!mJ53P}G>M4E!TjVPdB~Sd>nxY$IAhYMNoHV)$yve71~SRXBzp_D2{Km* zBu=uiOqpxX*SRt`Xp)Dkh**CIlOZ94JraVpilDFY!3jQtP#-`qCz)Ee84_yp((XSl zyku#11MD2?^fFkQs6#I`v6gpuzsYH=$9;v*qpNZ1=@;ZO)R9(AO;9qCNy;P(JYr{- z79841nM{^`&p8gC2@Gn;-cnhBTV19}@}De?gdm5Rb!C|(X_7@eFs;m0B5I|Ghq+4f zmZZ$tktH7S`26GoXq;Mst6U`Oy6V&9G6cyqDKNQ2Os+Cnay}WEKg^_;##gE_BxInw zf@4t2n1m+v)lNf=(*O=@oW?o=`qY6GgW*?;S2lqs_+B+Px(H1^F!q>YNvlk#to0G@ z0%MGDm$}(xX>ys!_A+BmKN$isDTNeCjdrL};E;SK^OnqEQjX#^tv%z2W_e!1k`G=A z@P|8Nz0)j*BsHSaBLuF9c)+1I) z=<02B<9HBS+%_-zq{K6)x)06}Pz(b$IR!v0=t1-|3DbBQvVp zJqkv3o-w(w1}QQ%dd(^Kjlm)mIE04`bdQWcIL3{>k(h)IwdMUi;E(})LYBIU0WE{B zV$e`UYBUm@CTNlY9Y_(d5ZqQU#z%p*I$DPv6xj?TxakKd9U;?72~#_n z*}gUkTp>uInog1G1d6dj?OZ#FVk}kDL8f8KMddlTM{iw6@QoDZP#Vbv2^zT?Spw-( zn*I)KrEPU@f?V438AiVpU7j!+Q@ksB$$@&Jhr%QdqNrLtkXG!JNXVvM`m@ z7^p+^y^b+Rja-KgO<8|;8KgL3CZ+ITC z2eHpCJ#RFxg-MpTJzjhxZt;y+*2XQq`*876>2j5RZEArE@$=J8l+PF^po>WnTv4Z) zOO8}$mxC(?1tdr42RLb95BxCR2HHjj+CkvhpmJC{b;AdS;*jC?RbjxZX>U{?oF3SiX$R$@hr8sr#R z-slf*0(Ho}qR*BJ!HtkN@~~zTulVCRv?~h%M^}-ftJt9~;po?h2|Z%LsA?;RNTNU$ zSyVGn=d#uVPHQbVoN)C(V2dj+aynOcBrpCva^V&DC~+~hbrn?OkC+-Zf+(Vn45rlW zU?BPVAamQLfFQztxu;(-G6=DCj0|;-5|psd;B6FK4FNokQGq>5ESwb3&_S<1q`E7D z8@NP@Q7LI0>sQm57a3bVn1xYF{iM?XFj-orNs~4%NP$CS8-AB41gHU#jW5rbU0L!+ zHe^l%k_@j!^-D3xqEfLukj7W&(5A??wdM$D&#`sn**fz3R3e6gK2?FetI)3Y!_i&h z=q`2ilnv@DVQisH#0R*(*|WYsYv~o#ZFp&S+LC&39fF)3Ho%rTEw#+M*1LKeg3;)* z5xn6J3@k^B$KK*`NIedj#~}xX`xOKSS}s=-C+TyrgKbs@$Y=frmH(lRQ90?mw~Y4{lhh zK^f!hDly3-n`K6$H_z|}H{RTTEubE^(VV`5LrY7#MV4-nrdg!vy|N5~JhQho+t!{p z*i(seC5#WUHHW6OPg&5{nct^m^md8t>LREVbrIBqIvne7$NvubZQu}3e;d0{Z(0M5 z6Yd^xIAp3~s2(y^51C=f1;I0W4l_=&C)3SHb|a3ZFbIy6EU<@y9wF`_Z%IZNP%zue zEo}$cSkkJHZFpl;8pfjP_%KydG0uV53zZv+##r%YX0(qwr~tsIvS5`WRjRKt8mB14 zA)`8j#2-wK1AZD8Sk}LRMy|$m1Wpk zb6uw9#pz*u!Ru@o8POVYd}y*y2^#YlL`Vo>91QODt@nR2ft=D`M=!MX!Hchs4k(E_ zQw@?yGOeV{diX|oKV~73C3GNB1cyYawQ<-cV}-UhWEjLDC6-cD$6-HVB#9HZ4i1n4 z8u-tF_OZdvaaT7EPI`1;Pq3&oh6Np(sN6PYn;z?(8nqCIND(I-@YpmIH9L&@HKrsA5SSpMb^)1Hr$+UB1Kk!+dNlf!Occ<`a>KV>z|k! zlFUs{%`K_smNat{wS$_do1gZzM zWHp-^oav1-SJ7Ydnp1u|o-5Kd18EE#-Vk!dAg?G$F`)Vu5@M)(WT<-#m>Qm#8>WfzU zi=%m)Fd131f)nu7;s%cHYD-&zwWDZZX4Gkt$@4B(KmMjR>7Y`4Z){M9(?Bx5Ik&YP zrvYPwdN2vL@zRJxgVXAgzpH-qbjI<3l*UzPf}zeaO(v-!kdx#YHI1_ZTn~ zG2t}v9Pe6*nRY0@H(LNLVNuNF_a&BzkoOYrl|Prg&NG9SzyF6Dcyt-nZU-bnjzVipD` z>6F#wg{MdV-M#H0K=y_I9rM{=<9*)7@A-Su?DP2kaHcr=Q+`mEa{*767iMao9EjWX zw*${dKk>l7R8_>Rt}KGX+$(>=C>aC*dyFT1VqCO?jA;!^k>;hMNt(4}_# zEc?>Wqj&yQ9DMZcKU-Ox#hKQQ;*{fm5_H=35Pas+yW8-)pcC4Q_^W9r{}U(5%OT>M zAR3tzxl4SxZ1X#HXsQQ$$z)3z;2X`&DNbD-KEln))(d=0h6wGAhn zFIndP6Xz^1OlxbOR40605xY~GdDd;F-vxg})vj!KW0sO$!C#hg?2iJ!m1n2^bIzqd zfB4lu^c@6^II}!OMawFavvsd zY6Nc33U1p9!}xJr6Q{{?FY>2oAAI!>aQA1Y|BLSkI*<4N0Yo*RYl!{)Z}8)(C;k-T zuZ-XIVDInqBTeZiaVhAQKgAUohb!LblwwqtY6#UguSFGT^oKPsMW>tDQe!=HhK*0n zKr`YS1gL5D&Vt!d$He^elLZ@T{PW0#RE6LH;u?aeKxE^b!bhjauuYl%{eS0w0dHf! z_?xoKbNH3x)tRLipF9Z?@cB~8Ga#7M&_CwqKm6t&TiOe81aF!0*oq_G8s zVK0B$Q4$Ut$otTVt}zwY;g6QgGv%?{VHNq)ylcPWr>Q0Juxl&??IjM2Zt>%|CT`>t zb8+~)c#6BPtt|DaD?uGU?a85k1KHA{!xS)bBR&pW3vS>{q|%5pVBz4|d};&m`(AFLu7xQ|S-J*a{Nk?vr?D+@b%lO-t7*ps9U{1awZSkTMk%O@_u@s?`TxZ) z*phV?-jDYcqHB@|U-Ev;XMY{vJq#KLI8XTIpFI5f9|7=zu(A9!P4z?EX=WS=gdM+* z_Tt<8IIf8+^M2;J|A{*yyu{o$WEfxtyxrUJGrS5PXq0C0KAz%U{1&`@^zA=~!%W!s zPqQ!nAA>ZLUkx6C(XuMoPc{NY_A`(}e>4+7;7jQRrTSciehzh#2Y|6Q(cA!Y3Mr;q zWk?ahWJYgmj=i%86W{O`4@^AYG^7k9w%vh0n;tMP{IhS`4))aJ9LL0qUq$;l+@7?$ zx=uRuacF4Cz-h?Y#yvflX^)?_Pus1c>pmSqu80YR8}0ZRLJGJ<4p8d*01#M7oYEkuRzACqa2bKo?eb4v;RV{@wrx8P?|paX6hdXH!RSQwL* z=4V!E27r9uZEQwzh~(gYumcPv5d9|7EIo>DzsW!Qrmf2)$2kVii$D{7D2Mzc3{I+7 zhX^JXXU6Dq>;WP9e)@JzRn3!c`NccS?ji{gzN)>y505nAGLH`-C$#i-mU0^L)gt6C z^nR+;6aR5;(&fGIi{kKi_}lTjKoTH)<{dv%RmS?xfi)K0_$_}4Kc&$DZTz0U&z~ZR z!M%|8!13bNqMNVtd~{hN#+PsrKWnY@Uh3q0V_H#MjDwycVLI^)HQBY8nt zVjHu=J`VByAtwm@0(c)mIy8p2Z^$jWYaaPXh7UwO=FjUynt$93=s34sE8D(-ie$8?q6>nsWfx=N$E#WCIG zu{f@+ir3X77-}CGYEaHeG&iLUY3q=vqQrJv5)_nj8k1yX67g7=9;tq?$0rYb{M67t zvC8xKtL3_&pcKCdI72)rKV-QDzAbHiGQJ4}5MTq}0YU^M<0#$;R|w7zaS-7@SPEnw z??TQdw!ZZF99eN4$ zE0C-x|0+U4ltp);z^>A006Odtg}00Dpwm?rO(+MMaXpgwo~nm>M6gY%y^1`nb>p6@ zuxs_T7=K&>8sXwfx&@1hJB$tJjE!kMRSAx+N<`oMo-*4Dj131G($+rwCKplq_i+f$ z`?VDM;0W#o^N1fVo}xO6VFPqF=n&JEP{YLW=@C2L2tHA#gE_?!L?nFR0ku=#*bup$ z=j&h<66HArB1T*UBNHfT^Go3z+!uGpXTWtlHYK;ZoI`wK1eQ3y1m9|Hv#HAArSW@# znZ=bcL73H7mwgtJeUh0$Lo-T#Oop(c+$C~z`s(rw%&FIw2B{HOg$~#llaSC)?t>gOk1i_@d4OO!IE!py~C%s#~oVk}d|I-H^IDUStQ z(Kyk3BIhO{`-Uv* zIzaurFhy>dvgBT$N`fDP$+Ir&T~pZnQ1!2idp5})QM0*Hz9!PVXtBMJ^}Rp@6H)tO z+vDY*M+E8iig+1i1Q6A)DZ{KJ{4`)o@gx9xhT2;h$JzB=drf1X+X7ZO9Q6$&_r-H#T;`}(V@w1YWrR9joKt(a-hp4ZnQvUe8RRfYZPGE601n5J|K z3WQ+r6a->U*N_gAfoMvlF#89SCNa6#+=wa3AlXMI6id_lX*v#;-}n}4&@vmMl$O4k zXbmyV|K=;+`Y>wGt2OYYDDA;u!gJC*MLx%k7D@4$QEVE&FnG9O0GJQudrRFLX%sA~ z&-UU^BLqqDhd30+9jk~xE_rZL^6+H!<1Q`Obt0ZsW}PX+pzet-&-6Z8Can5vF>{Q&*sKg}Ary&|K)rPG?rKL4AnT9V2$Jjkohsq5U2n&qj4Xm-BMiL~O{EeY}-*k*k z$MIhtv7lU$bNKRn;f)!_%h72_h$#F(LBxT=h=WB@-*FV*`wl3II#e2aSR8v)9DAfG ze5!9uF}I|HQnNhE)|Nx!Y|jU!sL3)`Q6=U`Ffp~CQk zg%O9)5#2dd5P2v+{7^x}p~9%cC9%g9rHM-mv#zP<&`+Ln^%cO>HXvWM3fsFqX(Q*? z%9ke>o-Z%XniPeK!ibif>kKz!d0~J;bXy_1(^?qOUVN{kG`gcKx>Fq6DURzb2kt8? z;+2*0n(D{hbx#n#Ya3JbO=-rKbfYxGq{uP10=ee4JZpPFZ)YK3>nye@OJJz&>Wcnu zNxv4B7At?Su!q)dVVoOV1kf^QTN|yS#Z*O1TkKcURK-Cywav$&$E!w8;~341VpD2p zaukd?S0nR{fkstul0lBqHzR}193bCFj*-*&Q#cHWPNBoFefc-PDZIU36!vX#_`%}H zLqJK?5yHJACDF%9<3h!8$15M5QxrdPXcaT#?&XEKl_gAS*aV1sATa*8SGN)vf@10n zxW!Au{YGU?T7BlV>Xh@6r)R6v&R3@js7bp3)IPgZpLwMr>uN*RwZ@$5&3U(^`FCXb z;j)4VSy5zbaa4OrOh{Nwf#MH1NsIE_OY*r8B6OhXSvm5!|ZV7h+R42=o;!wN{WHJ4jxi{> z38ZoJ=v1(!K^*2?+ns-HPu{gXXmc;`##2$)HwAb072Mue6tTZ3lH*`;6o@@6d33fR zBdjGiN-m0(iDDInaf+h*isE>AA+?>A$pZ!&=UJD2bI7$Fzy#<)yLh6%X4g5;`gqIwg-gs}fb!NnN$cU9~Cd##BvHy0#@t zE6vu+@(isaV{4(gqr|E#v#QGbe3a@MFyUg*&_a}AM;B|m$JU7=+OQp)1N4khaX^nk z&bZSw>9$O|d#8qN)5G@ZQ3oo0v*VbBgSBq1`AIjDQp8)R5>UKKOinBz#F?LB17SSj znDdV2due1wl`N{?F(M1`mTfjhHUWtuv#22eDaPr(dp1ztWI#wJGyjbJk61E|`pv=0+$) zkw9xvR9kUOdud!}*~8BAhn*D(N^=2%ZKFfi+;5Z)7-d72Hm9Y-)vI*bFa)L^wrhqRJtG6U(Lw##kZIgy zMvyw`u}u#5O^*tWEv5Jv7zDQ(FqGA9hG1(32B@Hkx(TofNI1KWQ zFRL*yvU!=q$~#{J64qAU`KCPl8}aS0%ft6^R7UNW+&d_VIv}}wKoWCM5_?b*cUThp zU1jXS@@VvrNaBxHC7b{hd3UEr2CDUIu$h6O%>Bj{40y~>kK$`?cy^^O^;~`0`Fe1O zPWt(#^a~B?7n?FJH)ULE&bms-q_!m|OqP3FmK!D&-Ij{(NDIPSiz8c0?!u6^mBy$l z9;zgdx~dYoh{nh2+GKTIN>5{&wlQ7ToMVvY8)YJ+tiYrwGPM?)+ecvbGysZ>9(rey~3 zhjyf2KRRF-8#Ij$n#P>wahG-6-8=5KO?dhyhwW1%{V1(Xj}6X@gGtxyql- zz}yWCZ(xuE2R*$?O;w^a`$}W#ndbEK&FSZ)85f%~&Nn_ghl8^0%hcvvmFL`$=iX?| zyCu)N(JBg)<%hKv+-fUEd=u4H64_pIx4kr~y$qf(R#|ypT}2#r*F5Q}dZey?tgcDa z)IEVq?5TgMZAjHNr0E*r6*G;pEO`D%B-DbHdUp)tIE+0)zuH^ zng$Flg9ho4QSLOix~%Q)UZtn6i-hOs9-)FKRA(G_nlZ*i!gKdRds9T3V|uh7r8EV!-|U8lC_rmFakx-?u>dIue4QMkG^LQ@viQ+ZEQ5!GE8t*MOZmc({f z#r4!a)Yd)HH$BlcKGruS>lzWDCL#IIH9j>qKO<12nr@P1nq}E0MXsei-`ZK+t13l| zYNJ-%r>?MTB#xdM1UCq426XiU2CN}(K~m~8%Ul+PtG5lM22UTDL~w(N#yum5Z!khQ zWE>mPk2^6qX~vu$VsZp75j4Uj4$VP(6E0|vSy7+%FlCsuC$I7#22m5Lt?QeK|p#Jf}rsShQ%hS-7)Z?=B zld|+vip(>uS?5}_f%6@Cmz4$Al!e#2io?2!Z>q~~bytLg#-6Hs`nq^sZJeS0fwAea zu_@8m{Mf2Uv$j67wr2FUrT4aF*gCRp9at}t(}y|$76PHJqb#ti(2DxirKs-oYf7=m z%h4@H-Utlns;B~B#Hy|)CzhRCC^|)vfo<4>RZ)mevHh43onjTugwr_bLO=udEYqIe zX~Z-mSX61B8SS4PL#hD|nJ4szH9ltu9U`*v(HLk&nM)*pC?pwctK5n*5&FZL&8;XK zy1*E4#__j&$UOPB4_PPQ2}JhEcd}2tlYRP~>@(EnpZ_5L!nXVi)D~R+sNl*+#n(S6 zyZuFd;%Qa!{qCx#%A(lD+bg-hx9Y)HKuyBF zy2tw)o`Bx(faa%1np2O-(?jJMClr|{+p^CPa=-7$zo0Cp%v?VG^K+*<+My)Uqfq}u@sNW zaM;lS8+k}aY_vTCmMO9<5ewSbE>+lBgLeO;MW$>G6f32AXc-jJ3#9yWJXaLbMJM9Y z1xoo*M@3vZx+H|Az9K4%OPL!C2u;a~`Zx>>O@oK^eKZOR#D9px=fvT$H#3gEnFS_~ zZl(4(dwN3X;Av)H|M=T@ntk%^>{AS9-pM)pZtl7F^3K06y0}erX&cBaxGJFJ#`dyX z+e>b5FAd)b8pV;Hi=%dlqrND=x4S%gH`VBRr`5wk8dsFZ{U$=`bL@@DUhfMZG%AJpNYBiMP;Z9^cB55xO;l_0x}SA&G|4t65+&bZaKP z^cGs-zatc=bb|_~s|2VV@R3SX zF247L50x=s^^3|_@VQG82bF$V^Wdx6$6wbx{JK7IfBlpFO{s^QQ@?8lnHiz7%;WN` z6Rp|bw}Q<4bM2yw?M0WAC0CUt*VN@3p!+YxPY3pOO4RMC12ga5JqcqVZ zdt#C$Srn-j@Y$Zx+mUJO%*GNRy9(3q3mBzkSjk1Tb6U8L9R{$p3OhQ;X>m9$R>kHw zw95txsu<*=MN+7yj`m{6k?l0aH}PW?R9es$TssZi`Gjv3Cd?6LBN@Jp7W^Cr61buA z?e~OU4%3fr0iGRwg9Lf(&CF0Qy!|XlF%&|jHs|=8*}#c6vrf=c>IWRjIrDbj+4lg^ zB}U`L_Y1Fl$WeU#k__cNIKAx@?Fcb!_xF4vW!sBD9=8n$T_XZJJXhTzN7GB2Qhg~S$bVnep6K* z)-4I|sfpCqMrrF}bPf0QjSrzoV@sk@nq-nawX}i8bZbXuuQJD`%EtmruPk9~X#)vn zX|co^G&W;J73N0{)AIjz6jy1J25imAs^eI(A?zPUvsKyNnpmSKEcs?NI3J(1!4zAt z&-Op@?qS1cd-F}-SkZ0M;&;&K#mgL$sGzQ6TQfP(KkCIXI{pe|AKNM*bSsF>Ir$cl z_x-#1=ibf#{$0@p*x2{b7F>ai-Bxt%!{QrYk^n)L+=BnyE{@nCjzGH|e3nJ-Kr4>^ z%m;YRDwtW&cz;iI{9eei?$NgmNe3H}4oTCFL6h?A6Y`u>FtE^MyXZnk0hqk3EWN4{ z-{>k2Q&-$pgUQ-^UK+`?f<}`x32xIuArZ5#2!jy%fJSw3e-ESx8Y^js9&(rsf#X)> zFdZGVmY)R4O5<$fDca-)TTb!yinP6rcPl?(b0WTpM!<4mE=#s%AEO``)e2q-6)?W< z3u}TW*#wSWgoNascr)+RTX`q80y&{u2*S!gSWhc z{*l+y57Tiv0SJAauKE2tK*9NU3oa5wm!Qx03NF20cok-rC@s1ENlBO>%hEfamPKqY zkJ<^8MeHb#`m8eg^RlR&;(MP}#=^{g0RvkV|7G=qz10uDZb;nUka(aenW7)KN;#}+ zHZiH-Ocq}1EV|rT4C{KMtL&z_;*LfVsjFokvN7J+^w8A&*epvjLyhuOYa5JemJQJl zj4CWDXe1{Ii;4|Fu$K$bh=FA6H-_QI5!%lPQlzb@XkSi7BfKST0LM2b3S>4H$L;q&%cfJz*0T6FWP5geX+8xWm&TXgy@*0RoN z)}DHc4xWB1_vD)*969x7?#ZpW#|hb?Z)6|e!rC{`g4irjeJr4J?DfoJujib46UZYQ z%YeI_f0qDCFT7iL<%7a2+Xz>;72kyC{ICQ}hJRXq7lK5)v-~cY{Gu{uS5@4u>ib{T zKG<8Iu&*9zO5y>EW0MXyCm(4^3zemxkY}EfXP#E%d=I+JhQx!7$%mR#j<%#SCbP~cvc7N4In$bRzCHh9N8uG!(REcxn7W*CSQXV% z6RWMeud9EcZ+vWMN;FH8Ns5YRlwP)HLybr#vDTTUesqfmFrthc(pc-FkQE#7H1nAN zUW-azkwP5orh(nxXk$&<_l-w6-n~!|ukt8|4QY5cB=W8jW&`~+t|)AX>Yd3?xuSp8 zTc8yEa~1=2n0n|p&%P6oarC$8-@TT3^tV9vu`QX<)v-6w@gbMdLL@_t$F}C3B;=oF zte$?8KV|I}YENtl0y`Nr7M**q_|gYJ(WMVcuYFW{?L(mG^82ONKN8>kgaGz#e@X}k zhdat6cUIi{yb@VR%q~gn?yA^5wGY0kdjvu5tAG5hPm@h4WLim<8K>o7GW%>>?)i4n zRaMcAuF~6Tak!>DvK!@s>R4S}yuKlUIBZF_$iN{=1X;Fru0!S(p+jVn*bRh&8*qrN z%a}Q(2>{q34s!q?McTTEHuPgsq%Dfr{zPo2DVukzFt))h^NQXvDe{VJ!G3@_^$tk= z6b>od;9fB#B<0|*Qv>kq&~NY*Es%cXH4eBqc)YA5WGXX`yq0nJH)ykuf?kf-(aAde zo9v^nbHJ(MNM7icyyFb4lN0&|D9t~;HSg4x!t>DK`=wVtEWNU=gh7lz=lX|bH$D=F z5sekMKCQU@X+^}2%DX!y2vehXRmFT+8^5OxF>3tR4Tx+Y!UVMYn_*F(qVPjfMD3>~ z?WFwKX<7Oi1qweo7uxf#w2Q7N3vZ~3Z*_r2R<_et#gY^o5{ykSrzsXWf*TZjP~*v` zZC=PFg2M{NVSo-TejUP`^61pBLzq)xPgL)AZ~m=q0|Hda8~u|tC~4d{sEAyVrHj5< z;DI^}9*6RBnEdrGQuhBP@O1xQrXKiZ>i%D%1Ed_l(_itI=s3f(L%&Wt@GIfze&Jv` z4j%ed=HcJ?kahI6%tOESK7EZkN6@|op0kep2Crt}>CxBnPC~9*L}%YFz6fQ$Pq@6T zjF=>p-~L1rv7;(tXLZ!))i9*@cGtx1t&RJt{=vQmxWt70jR^-()M-Ij14Ej6T$*x1 zo^e_MbDH_RBI|5h&V`Qr%bf*RI||?xp~DDG`CU!Lz3$2wZS{R!?L%E%g1#Zq*pzIN zrkLf=dRsGLPOi*6@zzoDgXAw gd_y8^y}*-3woN#naPvda=>`silKr4u(aYig1+3!K=l}o! diff --git a/release/windows/inno/installer.bmp b/release/windows/inno/installer.bmp deleted file mode 100644 index 10fb01454a4d2d41e2069d6d0025f26c7f77cc85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154542 zcmeFa2XtIVb}eeJ_1E{TdCT@+^F9B~*c0A!nD4Ql?XjQjkwi&U7-eac<0xwss7Okp z0u?AmF#yat2M{0#f&>VF2qZ`lIp^2_8bAZxjhquHiun7SQ&oLC00b#{=9AM`Tg7v$ zt8e$MT_@D3x{X`z>)P~3eEcWMzsLV!`2V^;{-Zzo<3IWV*HdxRf0O@p#YFH3_CT-) zf;|xIfnW~=dmz{Y!5#?qK(GgbJrL}HU=IX)AlL)J9tie8um^%Y5bS|q4+MK4*aN{H z2=+j*2ZB8i?15kp1bZOZ1Hm2$_CT-)f;|xIfnW~=dmz{Y!5#?qK(GgbJrL}HU=IX) zAlL)J9tie8um^%Y5bS|q4+MK4*aN{H2=+j*2ZB8i?15kp1bZOZ1Hm2$_CT-)f;|xI zfnW~=dmz{Y!5#?qK(GgbJrL}HU=IX)AlL)J9tie8um^%Y5bS|q4+MK4*aN{H2=+j* z2ZB8i?15kpSbE^XG!9Gipm^o=z+?=6t&hnXnEJ`?*);gpg~>iKSRb$lto^T9y@Y?Q zZ@&!r50@rnP9z+e5mzyM3&n$cl`$_ zpa-nof{sGZOZN)5V`F2ZqoX4uBg1?Qc^^`VSJ6few4Z!XT>KTh-T%M)bTl`D8pp>{i4tx*}`B3Xe<0W~!d=dr&zQ5dv;oXq_heo&DuMBu$S(Klu|4-ETGZLfGCB<% z2y#JeOG`^rQ&VAKVSRnQ&HF%2LqkJjW24<}N1Nv6W{1Pk%7+;d7!TIN)Jrpzc#F@0 zPm}`}#DOd0z(?SNaNra1x$@ES>Cymi!PW3t7zz0D!aG#nkPgOirx?}#j9-;>TZtCe zj2^(qhYG+9LMfmf=qNCPPDaOq+v@7-`Sa)hX+1(W9WgsHmu< zq@sUXoA8)$mF9+F&2NW2_p|Mbj~!4db|dv24;OD6b~QCnFjoA6)^WVLYK1P!Q+~ z`VAeJpP&EWgAe}Q-~C-kNXU-uI~FZk`0&Gz{Oo5x1NC>^b=L4k&%&+m6es9 zot=}DgZ2e{$Y1~?)&s)>2VRmkXpAGz`^e=3m%@Q-;=si-Gc(iqICJJqT3Xs^eLzMH z4m3b}Tn!fo`xq@4Z@3GLSd3d}I>s<=(8@SSzlwDnTpJ$^|0Nm?qG9OZMn#>W5$Gkb z431)BWB=t}{^go$u35Nf5qdHeFq~BMn*<%-n{wq&p&_Qfd~HPZ~g}Qe*5jW zzx(dH`}XZS$wz8x>ZwzwKnS?79;iV*Ud4fiC-_LwN3!Ke(nn%q;_>6hfBn}#`SDM{`#bNvvvuoM3>6&ce>ouIU7+m9 zkt5O3(V!+ODhl*rJ{*<`0s0U3+Ca&L&NAj=zGjj<~=+j;$X!3_3OdH z-FM&pKlr%imRnwb{q;3#)I*F4(KUj0BEAmv0}xFWy_YK*#{qe{LK67@A)`!=E8>SmJeUMVstvVagqJ5kCUI8 zv*w*S@52b-gD}kC0^l{kIBo~`2qy(s1wW2K4x0uS2K#2FW>>U=Ta_9&B3#Q13j-T2 z40nyuj$k-GKK`Hn>7Q=6;f4hZ7aj;ZP+C%op5YL?0wbKXS^fjd=Tv$PzToUQWnj=( ze2k*^>T2uKGcsUEckkYV>qLZyuU)eihW)nNZu`-XegxjHz4qG2AAcM!9!?*OnB&t= zKgAe(`|YbT|OdZ8s6@>=Jd?=c6Q5Zy>P#qo~!a%C7sYdL4IO^~o;yvs@_<=R6*UWlt7R>u! z{^ehS_y7FQ|3r-U>Z`BLnKS2&H{N(+*8E%M<#<>F%K?cFSm~$xw|rLk?77u_OYdDNbO+=bj99sbHlf?!eB;fKl_4o7PE^pu zmI@Z=1UJhm=5w;b!P?9T)iKg&kW9zO$S?sG5n3{YR4G0JY14s${(=5}x66&|!FwVe zgU5zxh04Ptzx?vcFz*Nte)Qv?{@atQu3g&eAzHYb96j^mT6jBLFsJ0K+7_P9pAPA}_{u&d{KlzhCfv)Y^xzpsVK(R%x!kt2+#s2%) zZL->YAOQ`c2M5)Pi4cvCz(FiC(Fg@`AhQ9p*@@Vwy#wy!P<;CRA&r6A)MS10S8x2h z;>q8>2Ty@$5R(GT0WrS^-AM1?PDQ(?Hs)6x-QZd%gQ=CtHM;yyzVj!T6(NL1nv*H6 zrgSGH{7Ypuag8VpF&KqmY`4cohlfX?v)$dKs7v|ASsCIS zTb&IZ1wO&P7;e^QWw(WBQD-5VR;*mE^6L7hx48W|y2jfS`!}%GNaJa~<;MB7PrvXg zj5&gHOblf@2Hy>zg4s9bo`}rRA-Fr}0zwgtaA=2g9q7JNRNHWER2!xjUKON#=R4mG z3q!hNKe!`y&7n@1Yuq_j2+1{%f>2CR!xGEC*k7`6PwvjhBxEvS5Ai;i+YLolcDtvy zhiE3F-PPG;)R~BOyPKMuJ_&EOvZmzaqthhL8lro>Wy+y)>)gZ_Uwjc0J!EW3S3iA@IGxT)`c_q&)4h3(&8Q(IF@;DS&1 ztOjo(* zcy_tbrIDu_Zdf_pBndv~@f~9e63*_)`6|BRe434rP;q`=?pKQw&;DlDxEUu(n9|YT zJ8Ko@cSzbGl_wK13{+Th+&9KB0+_2nwXJkxxJq6H-2LgF{wb1O2vFF zhVJR`a%0Hoheyw5H=Z9mH>m|Z`_)8#^VeU*pS^kYw6ZQYEVRRtBax0&s;IV1x-t1c ztY~8LD_yk%(haWRyg)bD4S1lJHP7gPpfjdXj`KD0CwJ%@XnXjxb36F?Gh6-Kha8MpntF!E4a@I98-M3y@2Hz`KZ11|$=SC;j z<;j%%tFI?^WS&!(wUFyG0Ipx`eD38pu?+(WLoB@^AVl{(RL&G2jPlv4RzM3uz?3RU&PNowz^^Co+EMbaoD>cnF<8$ zu#Grc+u9=2nx>!_FI~5MbXWFQld(CS`q;9st`E70J^%IWT?oiw#=$ifz9qE+r{&|a zuUx&hc9c=@KmYSTkBr1p@*yzG2k+@JJG<%|@Gfx82~SFSu1Xr5nk>9}SEzgWwqw!J zN3eE=4s^7%w6?)`w?deEz%|9&VZ+y?2G-}V#z$JK(uxvRrR|-avh}y=2RlnSyKU%u95{|Ff=$8u{|z8aoG~4n-j{@j7TL zA04Uy=Y7aJv;Vy*$n}4zE;q`01z3seR*VM7ne$M*?~9D3 zOP9i+A*jG22=c=i;s_wI2!i`Xh=SzN)e)PSKKYC9fB$IAQEX9=o%hYy*AKqcHhiKV zEn&Bb=AIr}!9ZRNJgdobM}AG`(>qkOW}O`y21U4aW%v9IG4r>cQ1uqYmzvwwj`fXP zFy9J7kF#dov;WP9&?ziAS|0fLe}8@66WWb`HSzGaF`sW@PG>H2V{ZoHaAUx&DRIL! z@=jM)O5ECqKJxd!|9u$PxVU4@&2Uz@UEhPcopPQann>=XY#34`NO^Whj>OjNo)^^% zq9^5=nZ04fz@wqHGgh!2uy8H!dS=h~dGEwYR^(@fS%1N245-s5{X2u#e?a92fB{THWnm_WLbHZ)HZV4 z$c4GEItkOa?PTZ8t0uAM7G^!J+*-L}^qoWFR*oPaU3O1kLMIQ>&^|YMq4hfJPEG2v zXD;i&7D^<|utx=nK3K4;V_DOB`#$mye(*!A?qPEd=0xgfX<-4(J0PJw>och|J*p?_ zOeAwEjETnd8IN-%7dju@q-WpWRC-Kz!1@)V?;Z9E%rMW2`0U!t;QI9Lx2-q0C4Ew^ zA6iy|ZHLIBV3i(o1PoUnrM?o^G_CjUFaPj|Ka7u$!?Xyg4)q`Yp%ZoBEy_Eql`2}R za)M~qXO$#DK9n6mNo~u!5k1Byl3*p*DqCaY<)g2KkAH1-*B35CExhG2xXw86q4geD zrucGg9L;MhQ{cR?6A4o-_$}meVZJ0Pv!+nstgq-SinTYel^05#l$;FKFt$0rCI8|a zHLYk&+N`}Zt1}U;8arA^{h4SA>nL)!uS#h5OveK9>r=UW^nop72&JqCl4F;_bxlT? z^&)Q^)GMCWp~dpN_3@ZlL#biCaWAq52_c!8Y8g)rx~#IK;9qck(bPZj&ZB5`f{Q4DxoAw^T@)oSOe@NzIy`k6U znpd=dCvuV!lQ6TqIYY_jMxr3)~md5*MF<@Ei9c)*Jh6 zpwz~CV^!#Cvfk1y#C1{FHWSSeJI&5$CQjKkuCc!Pau^wK za?pNeWcKC)Osg?UF{3bU+9Xe|KI<*rf=6rd2mtbgu+!==0-vLq5KXZfjJ68HT8wuF z(G3lavPcGfCYG6K>_Drou7N|`m14hjl~?}UFz%Do+MDC8+7lDaC=Kj+_ zSF<4+LW(H0$(vc|#=6X*xKsFgqR|qMiJKPdElPd$={2~90Z&g)r#W+=1Kvs^HuBCC zg^_!PMzB8X#jpli@#g&vq|U-JvW_4cj~C#9p<@|!Pj8!K-;uDuJa|+Z~r#+RBC2sCW38>x8)xeM85F#1)7T~bta>Yq&Y8(D7#I296&VbG80|P z>Rer2$xo4BO#%Cg%gf6Oi_2y4+RS>Cc3W70v3+XiSo?sNC6|6~DL;Y8JnW-?+w#hP z2fy29{U~z&_32@AyB+j&q4mIq7EkzXy*NATTSIyiQgbmF)gXnR~b|bKi5st%p z*{eXt&tl*w50Fyeq!{hhr{ow)OsYxjM2w>CHhQSpu-w?d4x0C|fM^(Q(rDgWPU?&& zxQJ#V8vBuuo5ByQloS_lim$&ZG_XB4h8=V_cL(lgq`S|K4vvrXpBo!OzQw=)dxkH} ziJEHVdQo@~GDKV5^wmc+`s(LD`x%@y791(jjocVg-jpVjR2j-HI4{_3 zSrXBcDoYr~G_%_qqVL1y6iy}`}J-DIQ#7n+v&f53D=CRXt zzROVAU(6Gt-P`ZH-(Hh?6w4B;-f+I)#|2AFa7-IKgX}k z(lgS}q^IK}($1veS5!`)q90B871n+3+&QJrmRVJunp7bQBbGS|BfDK(T!KBrv9Yn(tcX45`|(7{e*O&& zJTkWrzpsOz(ojF9v1`|^cQ$0*xRUZMifiLrA!zxAkkJp0oQ*F(Z|}YUM{M$_5Rhkc z_Fp(zdmfJo+zOVxRhX`zFM^kDU)`6GW5=rX)BSjMec)%ofs8g&1|KmKE8MrL7Q zA#FJ6?P+!QKE7=POZ@0$yOWl!(I=$N$~jY#gq$<^W~0s=hE-I;TqmYxzq6&}kMVf# z`J>y%Zk}wHkvH%6tnE!LY(~f}!8R!NXZflp8eISLKmQ}_Eu1OVZ5y3^cdVoRV8~{J z>ux+u+uI8j@FYo03`PoF!%uQTn!rV;%xNxDY-D$_iA?0w_LP=w<4QQnH|FhBjNcK4-2>4)qoO2)4w@_Pxl8(FZs7oh)g`H@9;72S~2b zXc7MPU;h;wu6CVp_;)68&GS&Axki3xL3pn8BuUDUBq=E=rs;EGQQ_*ChU@)zfQw>I zhsS_z0#;6@?8`@A-rZB%(hcuy$o+#-ULSs~r~mrz|Bn2|?vt(lTqEH?&v6Y6SMw4E z$yh#u;coVRaOO|Jb3|<5)2WK*F zTsa8fDes$C_Fm_=FVW{a!>X)^YwzwIfNQqiV^EeJ_>ceicRZA_C$-I|-*5_=eKoVTNep87Y)}{_)`4+`KcH`Kjr-z{xW?C(?kdl+&5XshLTs8Hpz|;!-kWlQUwH zGL9yuA4xoOB;ibSeA?mo(}&|u0a0wy7yXENHfgaNx<3Zw0@+XbZ1L^KYtoSTExI`N#9rHDq7G@W?XEF(n< zo>PTqJU0iH!E;hF|CV%OQX+Ol9Y3CskN~2iqmOLgweRs2CBEv+N^L^2FAjIKcl8JD z_C*KtFMs(<%$qXGeD(UNo$~uABM8Oep20H5+GMnO4TBUKJm=>ZK%afpnRq6BM)noS za7u-=vTx=o#iLP6NzM^8T<3GjTz4bt=xR@*DLBgL|fxAPNDy5 z_29m=4h%@d+ZVmlV1pUgUW*x2M!7H7YffUyLI=_*u-hDMm*CfLc&!S$44O%wS(}wU zXJ?V!2G1EpG_)D39>g*c%}XBOnbaA-T6pp#n{BPnu-eQt)EPt{<8=Dx>!NR2rmc;i zcg6s?W?orNbr!)9xik0-_@hao~WcB8-<@%zd1TS zhUE{B*~V17K(kElnGO!avY2S0S@Fyv7%4Q_ZBk{A(I%cb1_RNE!4k-DL!;x49Xqx^ z{NVGUdB$!Vr)+9wtQeZLGHJ=uCHURiAcL3G12b-%fmN&e=Jv>fvEh+%*^q;MXJ35r z1W+{8<6~)a0$V-g-%Q8f<*yj2Sjt9d?;Poe_;;LrT=) z!@vFQZ?W)<)DsRohg)D~Rhnj4ZA~=C+w7hx*al=uSX;wuxlW zOh@d}z1fCek46j8%SRsxsoJ#T0Dhhei{N;~^46PzTwmJwojLPHEMsAN8Gg+$Ha2#_ zf(7_%DM)}b&-4?A*q5Y&FeW-Dht%23swfEKFih<{fj09&vnr0l{DN%+VTlQ_+N8`N zI-XfZI7Y|fy@9Ova{M^b@awD7u+afqAn=<__@&&CkkDIi3vzv_T+hVvG&ZE*r~DQ! zTnK_-#&OVcJ|Ea=NJ$cvBT?!Mg4t+Gv@LNM5+pci_DsIncxRqGL!T)K)4?`*XV&Lq z$Kr@)`X7HNCgxyt+yiU*2Whp@hMM2HqT{m-aroW2gZLpf`agoW4h^|2$n~XBJ#o{_ znb;nRA5OqeD|C1FASsHyIoM1H1*Z)<=e~k@r&L&OE|MhpyKCtg8TgHT{O z1HV0_>$!DR8+ILm-NsKU5zX`)i_CQhxW4TY@AVJ8`As+7ggv78?Hf#`5sBeZi0J5O z_-kY)K{Ym4;;B7Kh2>B#48b<|UA}xdjKC|eyz<<0&*85-;YZ;<|9t+EB}?$9b9U|8 zg@>B)OO@ae1QX3kNyjBi!gFWhSvzR5+88M6Pj?-qzugs$0)HU{f57YTA^HdY$ZH@j{YhT5?0uChIeh;xDh}3h~Mvh`st@J2JnY_a1qq3SiXGg)~$Q@ z?uBCFS7?+vv)PWtMB4BSeI}ymr?anx< zZ)|L21OWNN$jm^SF)hL$(81qe`ps{C^U_N%VHmvk-g_7TOO`H$3)r!9Ck6mWBu!Q{ zgJ}#U5DjG}kT$b-2Fs+-2bkxu1Nf6byLaz`UgOVte%qb#ZC%fh>mz(y*T2l`AezN9 zdH8Wz`q?Xc6Y~p(iDo&R&Niex;ekP4+Nm_qO4?3pjf0|f)ZoB#GB5?;8mr#068!Ub zeaOS$M|JQ>2%>TrUi|J5RQ~zrpNH|spK5}PzaoT*{HoBcE- z?PSct_wV0}-)x7z0r>@x zO#jotYVD=i!(zlOT=#)(<{I<&POy#04Q$Ipju*|K@Zjvc$mhKD@*$fJIK(7$^F)?89w2fTu= zG+lOa;rG81hiDej*Z8<+cNRJj2X!O;a{=m%KZ)DeXs23DwBq_4e6`kWrPtbq^Izub z>tV9x_p+F57s!TU({IK*6xqymeIxHnw$W1ti2Zoyc?H%;V7o&@L-1Ew5%R(H!~R3S z0GR#G><1rw5TQOsAO@-?T~nZ9p-VrdJ67QPCF}NW;gUw!e?? zL$^B7+0~7SFj6029P7~_0w$d{jgO3xwckjz8lhKVnKYoXt2f%~o6~ zHc>5#4X*8t`0Wkaf{sn-itMV2D(r=+!2Sr@B0>8jii(N~F>ixjf4Ow&yYIgH$Rm$D z^UO0~A7&qs0E`bN@YwrkAqX@B1+P+4=isE!wwi!@eDR!x2Ft@dck-TvCFx8ZFny&q# z_~!YU_bo_%<;%mLtUa`OZ`8p<(MX^nL5^t`JTV3UF)eBhu0b{ZVJ>aMjaGwdqt~Fi zj%~PyYu*u~^|}aDgX{v?2$PK?i&s;zOpdwy`|rQk)Y$O#SLeR|>MWP%@VqvISpX3M zfCic%YK%7KUEhju)?Co^@b62w>+ZWiis2fGGVoJT+i)r^Ei&rxfB*H0AHH(pM{|ma z>$%lG`MBYypE~}>{PzF3u=js1>i_Gdqkp~p+|NQMfPYvy@-NG}{%x`SSBvrf8Q4Zr6#VmQvdX` zHY?YEv*J96{`snj|Fw4Fe{Yz$cJst_TP9|1Biy$At2?(0{AzXU?JH~V{<84dkkjw2 zi(9%qW@}i?p_urTlc_}o1$fGUxP}EMe+{ZJ7pKrnQ%w$A{B@Dp{lqq$6*~)TBX0wj zjial>eg53I1!L#W`2!84(%MpFpT^vh`1Pru-f5tBnLhuYKF>yyU zPJKv_DQzYRIKAT*aP4-tJKf#bQw9~HfVkd9TFKm2Wyj{*1LS`4^w{T~}i zuSKbE-=(+)(T^M;uAezXT)!AS@$!+0SC3A-actu4IKu4Mvu{Rry|Tyt;?}C?HkQ1! zA@7~dnG3fkuiGEL|Io3R=*@HpPOVV&u^Z4`5APA6ed<`mvMUNjuVPgP;k z>OdUUhTl0N2TBIDu@OqMYj61X?_2p-Z{=8`vWBS*xDVG*YCyP#QcuS9d&ei{CK5hB zF){xnEnB#ipJb zfJ#e{X@W)yS0sj1p^J(x2K##+dgvi6Y+;KL=PzkGgmhN3!vV#4Zc)^otD8hI!4VV_ z8Y=b~h8jj2)?0#b$bbZ9Dk{^?8gBuNvxWf&e7F{+M!7Uikqe4J?%FJc4LK9Qrre2L zg%|dfOzbS2*ikUCE^Xk+7hXSl_~7VZ=g0uiLFjKE82})+j}CSK#G_C-*vU2Rqj+h+ zP353~nyHpvTz8HQ1B!0N_(-?ndb9^b3pCfvxFXu3+QhY@+iGTcdC5;ztV*g`y5C$f=EU#DV~Wom$M1XylpkOa@fB6Uh!vSL63)aeCY9^t%DjH=;=F&{Tp%LoOP)HNP|x#)brel-feEhi)R;aBWp; zvD<#7unc>y=%p^jfsigl6L{`!cYOwQmz2QZdK~Al8FOl6CbZR^uqJcX`onhkuJ@tsBriAs1HCcYJ_Y5lC63`>WTM$&%}-A2wu|! zYhY;&COK|YvByx)_)zcoP|p|`9PGv~r4t4^fsuZgG9{2B>u(0$FQi-yIbU>mnamU6Z!zM#s z5aW7fQ{n5;qv9RRyA082W2`rnTDabo+55<2Po$?Mjr7BkgI^EWVq1*1A$qt&>n~XL zxML%OZt~8`VjDrTuj=_UFz<@-aYMSc;ZR1N6li^<=>TK|lh8--2y{z1COlFoLP5xI zKUj0)_jMW0ps7<@=pgvDPz-xMq%qtvN<>=$x;w^3Iu)$J*htsd zl<-!0i;j==GRqd*uDPbbUSdTG8ab#C*MoS2d6aUv*QEhY+lGl*&2@zTxrKKW8u7v64& zhS|3gjmB1@W2z^@b9?T8;GvSjOwF=z?H(NhG|S$CH{C+Lk4Xpn!nF|;^+d5zZKc=U zc<2rMP6p$+$@26$8DP`N0F?xgINZ|)4E8t(L@4NM7O<>N`#YP6#P&v@SD~S|U4WW~ zUbhF`&bo&ld=QU5!!Kj`5J}OD%$$`G*$*twyMAFwK-2A`&PJF0jkZ;tVSbG|Tc=Sz zEW;r0${l@j*1Y*4TONJl>0i&;@?QK`RyQpcz=ULQ)1uKJI<9sip>E={Wt%>j`|ik~ z+Y3Wpr_8$^0K@H2@IX4Q6`VAk$sN@t(b_%6rLVsxqNfF>wRO0cFx2Bqy z)!nuG>&bN4$2I#HZRoPqXp1@)deGiE(4lgd8;#>4!2vBTI;g1;ay{3R>RvwbA%?EtLP3G zv$28)XrL@ScpU5!PMe8eQd`h!@9$`2H1xGM^ttN=nowJ>CXN}b(>#iR(gG*R-CTnb zO8xq*SLVF)_Os7CeeE^Z%$PCbn&(6A+;P^2Wt>iCw5>6iVHs8zuGtuEiMOXV+G2{K zq`>+_`|Wq#>u9VP>2G`GjoJ6l`tq}cA!EJa)5X+Vt+!}2hz1htE_}9l^@91Ik{Kt{ zt@T&9W))^F?v&EwphbU~Ute;es$fmZ0Q4!YF*bbP=xJ8RRf(sYjsK9>Fch!=GB*9+PqH zp8xH&ZymU6*LfeVeT=rOTm(#LTaC6g2J#37M7u*z>=`++i$;PxW9F{-%(#v zc+0Qucy)coiu4OG1p$e+Ds_@=0*K6NyX&qy9Zi*rXtL58BORlRu@Qt}0%NO{7xuE) zu->BG9y8wQsnLorEc=wInQ5b(zWS6NXSG6Gbx&J$cUu*q)u5VXD!Zmcr^BlOP7OL7 zRfHCXqpG4Pqr*|%(Mr_c_rN39zP9t0)os68-wE8lW$3PL!*^{Th0&HUTe4(Rv+QHE z!LlJ56dRT$2D7TO5PhKN?0X>xpMU995G`1|a`pYszqja^%V&~>_6WQU(J>WcQ3XBw z(;YjKYu85Q&VK*nC5yixt_{l~5Wk(E+o-cuHkB6_;IGBnlYsHSrD9VJ9vM_rs_&o$ zb{|4(S8FA)>8OMtWv8R^Qc%(90PvQI4o9UzOJzq(WqUINvM`P@&`OBHN-Zk^ChpxZ#v6~;CeeJ{V%y?$e%$L{x>dme9e3tO*g(n|dTk+)9 z<`?&O05*pLqJYJMX*`yGxfW`9gPcyQkZ=UgM>U z6ROyRCbBLQrz}f7mvUt^pa73(6|focj}R<1oh@aZ&1Ib}%EWN_SmeupPhTxvmZSCcIdb1~>x7Vl6 zk8T3KjCZX_>Rgr5xgmXMYu51YyfLxZR=X`kquiL>{QNuf!@~9m(IbOxBZJN@d&2I0 z?1jaLYd5C#u1jhSiLLu$*Xa*K!`}RC^^0%Jee{W^?tkEcw`b2;vvw7JjG?MBZ**AH z8Ko84jQeQ1K4rdC8!a2+AXqQO@{ntE*foNZA#tF{*3!g>K0-%RX*;2WOMh8v{L7N| z=2Ajasas$#bz9L~<|g*bJ6cHJyGWM_L@}I&I1X1$FM){eb=UT_*Y&sC5I^*HGz@e$ z40O~3gI$e--FA(pE@y3V{;86JGx0G8qYm!bzH{4WUo8A&{-S4JeC3JXJbUl`57T(K z?z-FWdEl-GpSb6-=O2H0F7VQaD_{C3^p(#xe6&9Hlg$as4;3RA+mO_>F}Y>?na&ka zr4K#ve0F9EC?*V1XATXtJ@V8GPrf<-rMb(VdikASKlsSQk32SK?uVPVY&ww=+h8jR zNbU%TumFmTQ;()=iv4PQIhF4~r6sVxbeV65ZwkX0x5g}kXrS0lrG~v&Ds>H=x|^gD z0>Nb`xEV^IdW?axj+S!e0@ypiK_D0)xM~bQai3fGwe@${!0#YK30)0?1kH7ieXyqq z80u{%^tBB4IjHP!9l?$8y)aq0skYkc{L-TItc>Ky$o>1m!@pdy^3#Q1zW33mPd@YF zV^2MQ%PnLgZocJL_dW9T-48zT*bDF6e#hOewp!i8itfU)vbpm<-?n3W+Ueu1EtT@B z(Bwm?4|iyZ8Y|1HJ&z*&DKw%8#Dx#1ToagR4}JW`OFMNp7P{?4R5li|z@?ol?S(FW z)zzS0bu|{b?8VN;B4>j}W3dac7Zc;mGF)~S`R)pG{X{fH0=;Cbt67U{`k=z@TBz^< z_$B2fiU&IDr6fTp2FpzJ5K(MLIn>((a+zNaqS&{BS+Tub!r`*dMI}t}kO15XboX*6 zx4Ud*C0QlKSqGz{ii-1e8`Ib-c-~0rY-UwPW`QWyFX^k{3wU2gOb59M^YuiYf;Db1 z=rk_Ia=)H?mwuqjP7Y^%zOz0La5WUTbSX7l<~tkmUG)XdhJvUCB3xoY}}A2xEo6DR*D?}JCAHyt#Vlk7u51XN~OLvG{a@hrKTwif=wtpz8;1dzCR67HY}X4Lu@eA&NWnu;I!o^)aA61 zskG&_*5!HuHT8L*9z?tBMdHdknu|M|OMtExsB>wTqpTYsqRV?hv9n4mGU+d=Fd1$5 zWm4q9Zs>2rU{534XRxeHwCY3dIv$zAh-eLuRi&y#hYVd2sMIe77R0!r4FoBZ3ZnnsD5p`1-FfvqxO&@;c)Y^cXY4zl1NfCZmZ2|t;=TQwASS~YBg$d9CfJ4ZDs1AG5%68(5Z-K zjdqlR-=4OLUT0+=QC!{Uu7<7d?*KH>qR5J0P~12uCK~#S-WUKJd|zsO^0!syl;mMH zuv~gfrPXYb?BJKA40wu{44d+yEkgs0eh}n^!M-M@j4TYjBqa-YiO_2g2yW>$PRvM9 zTq{E5n~2Yatemg9aRh9vk5Z~h7HKX4l}g~aj%sKaP>JiXOr^Od3H=VR?5N3hRC8IA z-2%CmNC(T%Zdh^(&p1NsXeuI#iDgpZ9wN80*ICi$Vsc$o{p~db;@8&SsW3qPSLv@J zm!oKkvWQ}`V;sP!FV6$j>oz%{rFo^m+5?b@+#xZ!xHYkg4yLbpXutq$GG9`HFA+3- zOdPng!al@oioprUsZ^qYd833D#I?S%9zVF*W?%128izY|8tx2(QX_Y&I5oVBxn}E4 z4YUu^_pbZ`8!#rBzvvt^2;Zy#Dr`pZ^@zdyN7nv*JzNxVarQ?E+u7WFC% z9@|UmOz@((znQhqKG?twq5l*O*-$IcpQ0T1J1{R*QwzV#+&6bVW+ue{yEZYlUsJmK9V4^{BPg{AP z+l%4>C~p@4{RPYQ+&SD2+ynGYwAWMinf!>v5>!eo!Gy9y;rPm;p{*Y8Y3!}Opt-UU zz^sqVTx%|fZcP~pOfItta`DXvx^2X=l$vq%5*o;RjiA(AQ;bs{SNaQh6b&~nN*BPc zDlelftxp5bX}`V#3%meFH6oxCnLeeL(buf}2r05Z)J&(nAs;H-(Od+6p~6Bjg;-Ew zhJ;v5F_DV_LsKLSazQWrnzqmEe?gYv4&-7ai{D|z)RUtDvA66-!Knc$Ci+mL&yJp? zQ?S<0GS}$t6-CyKsaYd8ZX^Lrp(Jp<)F|qG#(;G^2$jmz^9NZ;6b%(yYWRZt(D$VT z9^S@c8&|7+mWi2l?xo#hvCZy8nDhZB;1yq4hYHjjr(!@b3n0=tqiD*W<{^f%KyI(As@F}xL>OL}Laa`9!KA|43saPZ0WW<;-6G~oI$sS--y8RM8F4p5q>LKc z0IKU)PbuPM^N7Y2_j0gA#Aza|ja5r!RXja_h)DN_adw6pid6N)O=Qa{TqK3HT#5{L zV**GH6va>$v?Ps%JnlA(Aw>YNoH?d6y*_j!LyP5rWIWY+Qt(I+>Q*4Pf3aGE&Fl zLnYG)83Lo%RoUw%EjCfKcEQMUD6_8vY3MQqAy8z5J!D4Mn~;h2q@zuwVU0t`Tyu0G zvnp{|%8Ly_$BmU%vPYHlOP(4JW&G)$uOV4+Q<7S#&!uk&kXlK}u4KeLDxft%?+&+4 zTCFc#R5lEH3A7_B!*xJ`1^_Q(nOFJC7*26P z14FKdUv#+M^V2als)79>Mkc|VXtjICRO-fR?-1|rHL~9Rp+3d3@tZn|Pptz0R8k)r z(m9Pur&_=mU_dWK;GL)}t6@NDeld`(pn+uB#Hepln|`v|)$02Fzbe_(O48_q7eyY8-GucI^uIFVbEM8RgV>=Mw zwfIO|fHd_ygG2Cdtgapa+Ui<){~gK!xmHsf1d|p7Y>7&1o9W1tUB|nAoObDdbND>p zaoMNzTmY?Q2#_nIts|Tf#dI4RNCa4#gyO5EXC%#NM}eBW(?p4&qic)=)_rUEt!F)x z#^-?=i_JGPChsZCrLyCzw*I>L`>)Y1)#JXst-6=Oj^TNb%K;JH%5?MY0=>roq=Rl= zqonPfdIuow^Hc!)vK0`KJkl~0x~ut=B^a~vNLeOroF|L!F16lV&_|fYbuO7-e>yI) z=JE)d-n*vt>>g!DHK5d1nHQ#OSkti~P{E_`v~x^`0W3dl1f{*8Dxr#0Dyu)S?=xe< zsbw&D7QDWh*|*rwDFe1?hRR*zW7EOqDAz@}8}AvvWb}@YPYXRQwBA8W9<;Ey zDLLgBb*yttp=)gHTf;OTfTd>BqkxTAJ=_+jZ*q8<5 zJ!8|xrKo4`*tjpo&-Psg&Ypu}_MyB~jN^^oID2kL;I7S@4m#^|yBaYV^1JLb9=e-L zx=H<&{nxABvUe0(4=M$QxpOGbUnRO!qX6HV=Sl^X@Z3Fbw?3^{KfGq9=RH6h?bGFS%P|(#>NFd8Vq(f#wNXNz)?0r(SLQt`yM2s{55JPIxX@nGaw_ryc zmk`h%n_At~#6Hv?%j;NPp@lG7D^b(E5$ysn0H$XDa_E*3G8O4i`AhN$s`2za`?FL#uZ=6*5%%+N)%574|jJGYHr*h3(}s z&F2h^X8>SnTLpeSV`COv?g04RjtZZ_FgSj8u-yh*4XbNm8Gc!6z_Qe{&~D3u`fGAe zIxC3Wwz3mGAjT_C5vork7-+8}H5bF)QJ>9p6XTtYY}lI%x)chD>z1N!03>Qq!0)8c zPDTDsI<-Qzbdde`fJTD${${8cy4`qe0l^+`$dTt4+H1t`i{&Twk>&HJ-ow711-RTG z-zV6c`t;J(-)jmWjum0H=o(mNnanH?12)378P3X7Vz&H*v*LskS8od9g!suA%6wvlz znp1;stC{bBq^OB(X?|xD394*_>4v_uR@%T33w7!3fDJKuIzTd=W}t>k2pP_*)2MV- zpLSNlytD3CopRTtp{5;gp~li4Z^`Uz$Wed?Z&J`E9r_MUFYIbzK=(u9mww5GgL|? z*L$7HU{G(D5u)CUE8x8nxpDBum#XE9lcs01!<9F{wv%}`U#1iKPJnaIR+Tasn)5p~ zKz+BP$RDUTZH$0sJXE~j(u&xC1AD}BqV?{IUUzvfl>|6<1*7<#HGQ2m{hioQU8{sH zTYtBWx1(bRdlPMowLk}i^w62v#p<;pU|k&;agAIq{A`ZiCF`+5?vBPRVa;808dld; z4L?h+R^YCM&pnNj3^HV<+q+EnJ4FpaX>mQmduf9jeyJ7_JCyx&Th&RrcnzZWH1!r5 zX&LxRJmk{b>oF1(IvTS*u;+AW&`4;`(=a1}YcN!FGYHhONrT>!PwYDif$mngj3T%R zL9eUK05vQlq{kRg=xeVGfDZTq243x`?(eP}=(P>>!Vxs!k%S?7mO-HR#?!!H47Lmz zNR5BJYTy{cV{4N@xf|tl;CFn{R(YbeGP$)PxvlC1;H*w{)tq7=q9!=2Pcl%iY9NrB zLtC|AwB8Li>(fbQ3Tn1p09m^W2I>kSAgW?1Ptu*78I`MG~PZ z#lQ*Py^v}d1~M3^bk{*8)AaE0)T@_-CT>G~H85;xB+yG~nnVa9r#Wj<@ww{zRHm5k zARoaNz`P4%DFefa=tjwaP4J)z?CaBpEN+bUY$*I2PP+(c2Fxs5 z0MdO{d@hN489cD+JTUkz&~!xg-XG1^6e~gWS?F$u3m{~++ev`3(LA8h8mX4q&{OfE+<5bYH;3po{E4Uw2JkkD#`%$Af{MdMjGW<6Fw& zTFOv@^y3C?pt~x?QE}W+dAzMMv8@WH$@?9=d8A74a?Q;F(oO6$I8c{wMe!b768Rpdtol<)hB$z0| zD(F|udnJuv%I>zJ9#;t_0zh-=v6ix9Q0>-Acxu?{Bn41hM`}xKlCvhqtqgU2no9r% z>os7y0|Atw-jr^;MF&}_+nY!?3F;;Ah>jvqm_*SL`bt73oN^7_tS5rP6#!M!oXs+K zFTyQc++y=xwlp{H*;DFQb%PEE#XnRE$UKUXrkV6l0OK;36>$< zGaxZsX&9fto$4EpZ7z;!E)pDVEDVr=Z z=3=}28W_tnrQn%4>RF`6WQl47F3F~;_sY<+46w%R@Wz}7g}jKy{K&@qL-wL5#$kKW z;ilr~rVKsY-U$*_Z~rTGYjF|dJBvN0s9NZ}2?q}u3E)>sCsK&BENP>kmp7v>-Y70Q}Z zZCYu_5sb0bZ}cCBw)B0r%zd_uJ+_Q}4Vn81Sz!%1;Xq^FLENvsfKeD_2Oy)wNGOhK zDmenuTPosPtKjYvS}K(wrvb{E#8xY66I;EZhX)UsI(QHz#!6n|SdSOEKtzPofNgvcnp( z4>UmQq3n4P_JT+z8e9XB45j`cy{Rn5QAq)OYfS7m|dRCskJbs)K<$ze-{3j>cxM>Lhh04*i#>BQfWk&jmZ^{@aO z|8Ty70wEu$pa`Vnngof2&1n*i1e)fkFR8hffKaBlOu9A{Y&XQPX!AnG#DJ_yP3pGV zQ`_s(cGjiuu1nujmqulM#@>36p0Te!3lQGJ8*;-N^1>Sn#LlCPU^$|Zs6S*cKHOA# zq@_H@Q4vS{RwuMn9J9hv8AqsM$QTG*9(PoG&{}g`fZk}WNm65@noR^sfv2zZ+(C66 zox(ow@W3EZ@U|E-0H$5CwPzMilIN;T#t4U|Hx(ZxlpKZnJ7@w+>JLFca(My)`3ehK zD~~Jijj&Uo?~JLgf!u<`NaAbM0FZB@O11_bW(~z;E@WZ_rKmo+x%%W5p!U?Zy3;!p zK>g`mb!T>w%7gk$DEnUKeP4Y}SbZ*`A@2Z}7y}0y^1~aLdLi9jde~kT4bSeVItH{< zz|>n%8QX$N4IUV*{?*4E0Nx^kD&-|zR>4ZpKw>01ssYF%P}xQa0Y6|cTqJDpi6Yb~ zjT1zkx-^5tdNr<8Mis-!QI*(I8rxiS1fdQhUVAa(UW)FTF$_xK2x41`V zFa_GmL7GhgMcro#`G@SyMexfxs(Xx2WdKBs1#W$ zeO{7)5Z0c|GNBHDc0;c(3N(|(7jKX6j7SEdKIS`3V81~1TNCCxMT&ZK8dDGUb-#%~ zdCeFlYU4OxiOG$6}q zPDBGVnw0urW5FSysW6IxZ+;kd41>0%G={ttIct2Vg`g>9!<|w_=;lQLr$%nhyO~rH zeR$QBtf~P{EqXd_mZuyB^(Q=uCX;c}g5)CbHCihZ&`Z*LFopsQ1L{46qaNxt-Nd-~ zdec`Tc=xJOF?m;IT+PXCwW(0*U2xF0G+1mzW&4F+Dh<~}bOZsDahiiO@**1n%tH$f zHx)!T6&z{e`~x{A03iy#62=u!0hW2LL2(p1U&)3Y2}i~JdTbQ&61YEUwFQ|gv;HCi zFS^Ono2As*Et$irH5wJls!SkN`d!VxM$$o&8VWR#50n<*oD$MX0l>*6&N8*x#H6Gk zWldJShbO^>Zzm}|#=Q3AR;h^u;jV$d71&;!L<00;w27!b_Q4=%kZR z+T8zCQfiZxNR&+j$ZevTlwR#kzRu_Rv?WGoDlA{gyw_ZcvZfaYXHIAxLGE2IH_$8z zJ%$b>Yp)YKl-_|_A=OE}O;FS;jW*006N(AG8XJ{~8-SVa?@W;Kv@7V+jH*=C^A+9tov*>7G1k(CiCTXH%yIvsicKLzh$ zPzyTNFVC{D@3~FBaqE!4dXTaw=qnr90c_Sn{!twjjGwle(h@P8^1vvT8`JFzMvGky;6(Q7n}h%MMkWWl6^L2o6J4Mo5E()uM^u$sxsd_JZ3;HNdg#tg}s zBLm|ojf0UV9V`@=dW8F&ruOB>HvlEaRuvr$DLlFY0#2)vw^W@_s6Gkmx7X0TY!?H$ zHJNnpMIeWCI%zJb&kmy*cWwmKnZig~ID>@;?}rIwaHyV!0mW~4RT{)NN_jtw3EmX% zYJ&vgG+IlQ4JSS&Vl6cWbpGF#M!Si~s$T@2&BLBu#FMWq`z$&eIwl_pp8W<>Y%MS^ z`E5JF{u8x(E#OC(FJJ_-DNcV?SwF>UJ2o0|Tt_(^XmokPy0ZAy#j&9UN0tG_u_0w~ ztIOiopuQq$ePzm~>Jyu*Q;=SRk>ADu_1kNZemT7pz)VeG%i3$p+HcP}NXUzV(Y6Em zJd3nA7Yf=zI+l|>I6|{aOvY&?T}{wvjwV4JM;($tru9VH0*B25zVNIjQ@ky^8QBQX z#uAPPrdfJcTCJ&@refF4rlT%udooas?HZTMJyVs;%wyx>z@n)ZVp4qEl*(R4+ zcw{9sx;Sv7ak2M ziU}<`wyG2%-0}65i5trkVfNPxDpNLALF+*}v_5rfH5g~oYmt@#BNt~MT$~rRBrkdyPyp&w3MHGtJrSFm=j{!3k^%B%3G}&}FW$C?)c*=>rtPD5C!0!^Y z0a8J4w>JB(c@H-2!z7&8{$c9&kJ5I3dS>^h>HFpbnfvEw9+;o8Z~mFRpQ41E8L=Sy zAb4Mt6S*Ys@RvZrkrjnUR~E*sLnoBsGB#Br%saWYDs_9+ zscn@fHe)c*c#ulepW0S+dV39=KIPjvhruOq4@yvJ3X`2Mf~+a{mg=b}*-?M7(rjn-5`3ai zbIPed?=j|Cv-U(OfqWBQja&P6!ur{X8{SRa_-^u+xk;M|$=f~zFboJgK03Mc<5PP+ zIlcGOle^}f-uubveV=B8&CfXSMb^Q^SqB#}7H5Vp%sR9|^t5}|%W&H>sj z!_hvi9TY@KNiF~Z0Dv*T?to_;Jol%mhXq(#60l`}aqtE0uu`CaVKV5Yd9TEU#haK7 ztCI;T$dpiXijsCQ1%}rnHhz(+f9#4861D8r!^>ZdUjEvVkkP1^Q;(zf@Kw#`l1{z1z24*{?br0$-Vx(E35)V@zo@A>@9{x8zQ z7i2^%1~MZVhnD0Z5;zi)6TKooW>tR7O2~rzBO$0MjssSg#IG$mzP==JU1`dO(&P>0 zCpMR#*n+YmbxURHwn}(}v|Tmnz#g@ULanjVrYTx?%hic`8VQHg0H8R~0&Jf{no)Mp zLALCs!$g4UF*}gbOcSsMt#@5cCIs*x6k2dxVJ&$)1okNb9gVKkTUgCr)=Lp2IH^iG zwDi@;#jhOt^0gx?W<@W1EqeJZ2vJ|oI=o`mp=GlUFP{}1@&<4?WL9+O8_}y?KeGCb zW9#0DS@-6V)vu#Gw(hN%b#EQp_)h$$IdL23#BG`rznO4+>-#|Rwz{1bvgqAqb7q4MJ@K&Y`BJi zA)!wxE2y2tbOnC{!Zmu&lIJli&nmWA&X$!U*yqcjDI0j%6HM_g>t__v1FdkMj7|53NYpf|?H$wtR4W+Xso; zK1@U#$Xh>5fUy0;#GUg5$-6&E**!0L*T;!FKTO{9aq@13ls)r+6Brd?pPxD~pAbGj z?ck#HgG&gJOVXp3WMVuVUY>JwMP6)3UTkRIvCx9}RgBd|3G0fE6H1ad2})0Fv7-FM z_WzH(_l|BVP1AjuyXMZi=bU@i%h%aU`H zWF;p#XBz`Hm~2u(6;zn%p6O82r>nc5a_sxOdrQVp-959`{qwMX>*3ws{ z(jAzZY}q+;WEK+aa)MFzf)aCkHd9h2wTfW!^?5{_74QkIp0(v^YYmBG>#N%@MnVpURc5lAa8%BwFc>n*jbImWpz5 zh3=e%-khbr{H6Z1&wWWhm(t7iE=~P|_9E8_K$?1Fp58S|n zKGk}2T6lY={q~%e`S#oMUE2%Y+w+~bC~k+|n(IU(u>g8*FZFCM^fE1-H|IL2&s^KB z`L^%_Amx*Qc5_%usM+R&Zm6VODVK$IJ_E z&kI>7VU|SqmYB%}^9xNe3@cp^SGyms5sxnRy?sf%nJ3TqWC`guQEqLSH<^M2JS5nY_IeZOIj9@NR(;d=6w7086mha(@G#W{t9z~ zTMSHkh;Gjl?4(1w#IW48z1(#VKgbfBE!|XM)_RdAkJblv*qty;{AY4zCt;X6LkTlg z89Y-HGFKbU5HVL9F<*CKzJZ}JYN085p)qEOpRgiKUJ)ci*VR6!&GPTg3-8Pc zw&60Z-vqZ&lQC=03D8c=3Ag7l%Gy|H#I1I1FLi7$cHlikK=0&I&%?EWdux5rhwB5R z6bwFG$Iu&kbYK3tbQyd)z< zye56HEJoVgTkQkes64y4yV!Yy(xweupAlT26+pL;Gjl>Hwd?|o;MTlG5rEtCC|@1; zx$Z8CSm=jkc(6<>mWK?(1>QT16nKNNVxJLE^8zCUuRtw@ zObZkgd9#d{`>8AZiAsNUmH$L_z*JrEOkMD7W7r%o94zuLEDEBD)|f?6%yLKUN=N)! zcjBdW008PdA62 zVr9~D?{&Wh@WhVpIpUC9^J%GuS%iRctx^v_QwW~t_(i9#H0i=0p;TI;KR$* zf?|T0(gWuLSB8j984FBjYRFD8Q9Zf(D%Uid?_3+%z3b5xIVH@d96Y?D<&yl-C5q+Q zZaXM)-FHytdhAA(>!Hf?Q00553P{IFyvIs?#!5-m6@KbUzp0u4Fj*5YQx`PT5Ioxu zGRp~>_t8cE<8>i}=*gw_Czm?j z-RLGZyPsX_f40>ReRs3>88YFTPRm%Mi!pUB|ytoVZ)@(*swKe!=dKtQ~A z16St!u8-v28ZEdrR!EE&-kvN1cVDRc_B!u{>C6e6Z9&y27x^eYD1VwATFSV)Ns5(c{Y+kPn(Fu{HQ?Yw*2WlJ{;& zKe#O?kO_q1gWCWt%(q?c;0rJK5`_H2JGg6lnECz-(?VZ_(LyOiUzE^5S%lAd@gXk@ z?(Eu$+1u~Yq9AZaPXT*}Hggj%a|htFE#=cq`m7KEI^Y@+phg796AkjGoARfWJV*@r zW6Bx1BHL{^#|^5;c43icxyYGVmg!7GK8yA$;dqvdf_Aw9VrjeNC1kE+W^su>>@EsOg;ePm{5WYt&i7@Iftaik# z^~A1r#$4>dsE@xqn0$F45xOBs0h`j4tI~|CvW#o;jBARlYpSg4aDO=G)>uBcJyAeR zm$2NOE!zPtcW26poknJp+R?)9nk(O)uLAcLYwj)80ZNZG4tR8thXMlLzAOZkAsg-Q zZuC68+WT~icy@h&$q?!Lx8*EIi4V6`fXNNzhj%F^?hfNx+=tuvjtoEx1=N`~UjdCc z@78>w<~DA{M~*2;0dC~h>igGm!G}O2J~!0f%)dKO$ugY5P=*r?@Jv@lmKJTS#L&*d zz$YEfc2$8KS7i=uQoO5WxWIk1$P`ObpxY?=f{fAj}@LDFGX$lgsLl1+kGaheWz;SIDr8^-4HO_7&ONXp5sD; z;QK5u7&<2i-C;?H$sI(nEVo6jv`4LV#emCw36}>Fu1FFA`7TMmI+RMt)2=Dgwp5v0 z!we&tH^*~#b4#87V{T6s5tsHxCN(PI{R0CmZEbr~^Uj`8lPF87+KLU||ar)vVH>ovoCrYUfi z8#K=k0khoTd4A}kAZ(T&3>E|-455ocmax_K3*aIue0S`nzSztCv6lzpuZU6P6E-Eu zo6_XXA(oV@vXpCzG;m`i12kOD(&>MDt{`O-tu!o;w&X za39ZiW0VQ<8O?K}#(cMtT-R~5ZAYoISxG6~@h5%WARgrQ{m3DnN{rZR&iZgDE zWiwDF?AoNpo8vhwCg9;`M!xcEA#53ixja0aR@VkF09EY}r~xdm=xd5B%c;W!g( zTBwoQ8Fm8NL?%#U4pSVUInHQdb-d7BUF1QOcubagsY^X4%e>VX=4HfWmG=(QaJ<2P zy51i;#|xa}1%U;A2v`z?Eee8Hgkc&)5i6iQVy)xCT4&UHcQou~px|;pR&?>3gNd8s zq^r`TtMFQua#fBZ&yt2}e;wAV(ivsr9Zjc{V7M`wMT`+Q$Kn2K}zYfXj`61P5M|Vx(&cLa-zVT^5Ed3!xfTgyAdg8sPiI zE?7^%^o{<6je*3CK@FSm9i}tBUst3NO4ywVG`6zl?$)uK8w@wqx!^j6Kc)l5ebRA; z-Tg65Oyur@GC`XF%&GvVhtq$7*`hnIP9Y*iGAN=~sbY_09WTKk2ywn&U_W*(2a*d9f*c~>;J)E!IXy(i{U59ai^D_G7A z!1{zuX(G5fl(MBrWk}mnWL#IWj>Gh92CC|>z*hV5>>D(?b6D$NRd|Y%J`{Y)ioZbK zO|^#GQw4vK>7v^^%oN>zg_7GdFQKzV&H2KvV4;ki3+^sduwZi_)>fQ&3JfNmk|dp$ zB%Ve9#7WpZ!|tMXhM|yg6lwN5C^H-sDQC5t4iuzA9gq*obbIVo zVl%^GG#A6)dA!JdsthCDi>UCKCC7>R#(*Vm&=MzTnHRj=61Kz(S#AjjtE~~MI01*Y zMqKQSUhj$lm#|K2CucA9#%fx6;x6~bUFoB$ex)CSItg6C#hC%B>YKEgNat>dr8K8+ z$&(pUC|0Bs81FkXyEdR47|$WJ!7X*}OC}I&&-Hc(Q+c;ul7DMz7ZW%y$h$SE1&^>3 z|2UY+quiL@%}z?7aVIX)t_NsgaCf2n&U^{zi?!(o@pc0VT4L=609v%cAOh@VHyM>A zof=HAlO`iKD3BzadX1svGeb#)l=9~kHsvYUWP;?=@)UrU)AH0aK$Yb z_lc78DCtzyt9<6`{b%d^7Mg+Xs~x(bO%>%0i5Yi7yTGozs)jW*~SF7W(r?ts*o0k)4O1oi@RGW z{xgq{#@-kkE!KT;Hhu9naDO1)RzsXE2L1q)VKB~i5Sy{KgYmB*rc9s~wi`Cto}_W8 z8+Ozm9b#>z@pfXg#A`{g6DQb86YPc(Pbt#RD$?yoa?YX7gYiPQiBgXVEY}H-$x5%O zYVT>L&cprr#-Mpl@B%MnkpbgX)us< zO`Lp0K?oG1fcuMO*j9Xo=GXOiOPRb?e*J*dJ#@#FGwy7-R?of?X~B(bm}Pk0TYM z1KSgQcC&LJ(?~S|bs+65P-Z)-a-6W9S7o0YDR3DpbR8{pA@?gh!6eSpt9+(weP?R@ zW*TvchM2{PTT|c?H*~2vY^5b)O>_ZVY>TS;p2- z`j(7A&a|Krmtmm_kacr7n^9bq&1A^J-kZZYfZe<~M*dP|#(BEB;HBdlf3t6@wP;rL z+B3Te9HP0t_xj?E&e}AW`Y9lD{~GKn4t-u;=UJ$14K)>pnu@~AJ0dJtx}q$5qO5wN zHS|VX^+sDWihy8u?X;kC?=C1|{xgsOpznf}rYC}^A04%mb+OiiiME4DwnOQshtkf- zGS0}e9Kdj%vxa=!_BA< zVXo;MY0e&t!zmwPv}ogj1Z!#9X&_0llV+YC$~>dUb<~jOsK|31E+qHIO5DcFJb=2w zb2k&!UK6!mQ}sSjT&kUG!o~SO=prw8ksG?$61JO_)(EiL7P;OYwcbJNKw1j+#$N7= zyV{p{buj7LP#V}8%Dkz}B~-b$M~d#?0zuCc(}qB{g)Tw~d}>Qc^p zHU}-gGYgOgYyj0x-}vzEWh1k9ruYtc`5;Wp+Rg6z3(D~~X!JSO=ywcS>&4)Ctk&~b zwa1YPk0aHT35OBacpPc)(g%&+$C`YOar};Pkq?1J0uXE@2r_B~A;xVX#_gddq+uqY zBh0iT!n7mY6hT+G84>X+Y$KzcVWyoCW}RVXq*}U>PAo_&Ed%i=FO~!GCnag8Bx!bx zo|2^6$uiH%vKeyDlJ$A#lm$*23SE>8suEW)QtHMsR&jo;!egxRyqaOM#)qi)nXDt7 zZuFaO^v4N4uIABcKCa?&gBF`ZmvAXh5Vl0;fH*0@31H+}7tRQxH?cAtq(%PK!IZ0m zsn?{bH{{tjl-bCETf>F7$^DW$>XPlL3UFr%pRiQWhb*&|J1_FToig&Ou#m0cIp zs<-E>(a!ABUS7kcw!g%#OK>>#zB7+SI9;6sUE~FPfjh=+!DLoTpkcE=!SOrZ=zFx$ zhiG7^@uZ-}<7k5yRKLl%3jJrZjSUN(DJ3@>}S;CAvSg^?k;U;*&pgYrQB7Mp=& z8)?QVBK?#&jmAELp{z6V9D8}rS$U2Fk?Ww$cO+isgR`>88JRE)N{P`5xA963pa#_* z>e};Qvd#-kHTX<50$(u8@n7HtFSHQLf-t(4i>rCKlt)+dVpuNq#c$$tZ!qzi1S@~6 z4N|e%#{vMEaEq#a5x6r^tYH%Mx$N#VK7waHe}~uf>1zG`m4a9HtUPRFf{2z0)!fgf(%;%40!&`=|N;EQX zkWSwE>?1?@e#b#ez;PxeNZUXVLnw-dQ9J3MBh0w#f>~FzSr=Y8G}^2u&ayY&vNsW& z1pO)2yU`>An-ZC)kPot)v$7m}MiHD<3PI|&_2vmQ&gQK#FfGwepvY=+aUN79f6)`}!+dE!Y)tl2<}X?LVC+;7Kt z#Hb8BE(|!{;(xrw&w%Tz-{h;$V*(B;fVV!B1#!LS5rPRSJ@hKiAE|WHQ0l4!N?Z<= zx#+M|A~9Tb>fH5EBI?fTA%He`Qf_d3^f|r+&-WOf3jyEn7~jtTFGGkI6LeezLXNkG zonSC(4y=!!LmcE_26o&>9&L@QSNlaUE0#c9?IHj;E(mLVn+WZ7pZ0rKrN zZppbr#f}F-k>i0PhXW;!2P<3-l{*uZ74ACB zQMxtmy7lMv>b(e#&yn4<_#dN}!4ha73Na8x7`0t6X6d+K+!bTe9c$VXYu1xs-h(ut zz;ZVODOQ82)*8~RrJ1%vgdOF;Zt~8`^Xz4$4q&vzd9;kIhv{Iv%44kBeXPoTyap42 z=VZP21m=QzZ(19G2A>&@-!#W>o{x+F1U}tkuK6=LAPQSi#5t;gX?7oAFHqTK1Na;Jl3!1-W_^T7&C2MC-F7CF6D z?DSTdlTMN2TP5cX7T6ysa6FLju)hGBFp%k>A-T)$af0GMwH1`EOvmZi3EfX@PO@qfK9 zo<8C2$Bmi^q;$7l(iOUg2WtadAIKV~fou-Ok}Oz8;dQe42oxkTiXh3HfoVxJ9gZ`R z#~I6FjEAC)hoVkME*Od+-x&>HtcweE)+y$&~e z>v4RK@ci_f{q>vujtE1M3CG(b42f{Vjwqv!Xrs;;q=Zptv~f>7)&^#z@#dg6$+9=W zqBqF`1z{ldq&UL{NHT1t*{7sAr=+>3pzg|}W(HRKzI|B4O0`=Sc^xFKP`tANlg}!>Nz(-HuqsKe1 z+jw4w3w6_J@HkZKda&M&w8rINjqAZGm$#~%iHdV?ma#bQFFLm$G4v(Qn&FQMQ0Tb7 z@a+D))BBJQIi&mY&+N-*fNr&@~BPD(Ot2GdVUG4``; zDGhS$q&cUD^3DulF_3pwRph8DK1Y-glm;jQRW2;!)gG^bNdZjN)7imHqwgFq0G|cV z^KqY#h9yxL7*DetPq!LRvzo{_NpY&>Sc(OLv1IeH6!WoUv#}(zF_iIG6J?B%GTKN9 zuTj0DPslI4MC5Trlj8HSUfz=|ch}nSuUfOP0aZlR%tKbwHd+ z2_VB1kZ;eTaliPSqL|49q(SMqkxG}5N>?ymg(ZR8?i`q`_o8J0mW7RejQaso`KPAx zPqR$qo?@BGJvEtYJCSWWo@F(jeR3?zlE@@fsb;D)Gi8$LpCOSNWeLWz_!H7tLm-Ye z7>qI)h&-U5o>5n?vA9=Jtf|O~|?+MfIjX2s9as)w7h<;b_kvRabL-~eR!5Cmp7~257c?QRp)WA&hub{r%r>n4mUuLg%_yD z57uuDF=!1nXpJDKEJUB^h&j<2YupuQ3VIXG`jRaNQY`yYNhuR>nvi{JDEBl_7TOa< zm=3fQI}BI23|BZY>O5TGJXYlj)Ya~)6f@X2mT9HVwwcJYQRmuCbRgMqAdw9iO*9@zHttU}g!U#FBIr*z-kW&5C*Ghf`bb+8A&k-! zUeFVS9c~Fb#0xyY3pfDf`oD<)+T{Ocz0Vs>eg~R-4>SP31DrsXw>W`^TEg^r#F3Wp zV=Wg9S}q)i3ZqW&!wvWmC%9q98iJ34ngG38f8A<7y&50AN-y0iAKh|Ko!wNSQ3JJC zdg)Yn9@?R5*Ji25p>p>_W$p*dJxD=`+nc1WZtf>q;=|PB80D!Xm-EH^pKg z-5LyGI-pEAgR+1bfldty&!Pw@5{xw@8Y^LXhNU{kdIFB;+A%}kZmRIqRG!^*5yt+h ziF~_>{8Q>Y+n2!oT-bebgkdbtcC65rw7_;0E6bA0J3L(Vt}0lW@E{{#bY1v7R`CuJ~g;2^#H;IocI_v?K0lNA%IQC_TXi z-Ink}{BRv!$N_H90Um(kL7Er=C+I*!z?%(zZ$j%qpoUt%H*3)zxW7K=&04?xbpdbI z1s$jhK2R6(7H9}N#JQlyxuDODHEfPE;K!ffCm0D+%v(~-T2m|psg?q0k`*t}lpAl# zPcegXlT7)E=4jz3nsF0MIdNv3cvDV-87I-KF$RHoW1M+of;l(Aq9M+tF`hO#36>ma zv^jN-v*g4B3toa1loNwTHs{8f^J6VIQ6`)yqlOEH4H1ToQ3jkS(xwXr&9TNroKbVE z5kJiqU<;(-12z;Ay&>}II( zf1}#(=YRr#3MzenhM>xCZ%yDEM93SpA#c`(ARi7kMjYnH9c@iIAxt%H%e3swvFgsT z>&~_7FFey%WDo7mJ>8XK*Og-n?Z~oi%e3jpv}w(-Mv}Cq*^nk%BP&`GETFtNGaj-6 z2@`9|M-XewiL(%<*$Ol4glTrdjMHt|XGNK3KwI`1Vb*D3=IPeVQ>__5bVoFN-1l1{*G1`}nn z$!NOycn%eC8pwrq>O2&7+o__nlSOAH;VCH6YRTzIfEEnre4EjH>(P9xQ4D!ftI+~$ zigT@1*;c9?D^;$QGRIP$Z8nr{CQUPwq?t(4sJ!4})|*IlCmrieGVD$~+8uwi zD}jb~XWWsF*dx&Pm?NTS-S*fcq6@m9CE_4I6ugCzPJ=ygKL$HSHz#m^Q{Wr*0dF)0 z5(sL1_f>iStjdQ0fiDBIS?Tk0!uMyD{@~}(nt**({y(b?`gv{OzN&zqRR*&Bye{~S z`j9so!}d2uzQu_=+#IXhl7t*M+Ln5vE61WI*K)APZm{UoV9{ww*_okoCs~DyywU|a zP~Csh4$@*4(&w_9fgE2=TuwanYLW}_JVVwJg6gr_FTud9Q*cM=e8UN zMUv4=;Ctc;Y-;RIHKAR}Xd#9(EylAg$8%1O=i83w*^KA0YOM{>Vl!E2H(6{)T4*~C z$MdX*b1a6lEl2ZCYREasxNITMwvcC8$TXPCGR?)Q#^N+1ahh>|%JJSLOx6bEcr3iu z?~2uf%T&o@$Zn`8Mz0M6JmyGi^kEGb4ht?&VdsS&XbRfj6tJ%;U~ir8-Ui>F*ZTf* zjn_Zdkp7(1n~4!HRC@oE4M_ceUKg~t78YhVE|+Jpj0o z2Y68jxBx-SL0*gwKUPl=t0zi1CQLdaNeQ$w%Z=oZ_B@VsCj{W5>ePz!56>bAn z9s^|_gVpYeL__kIEM^qWGO;w_xFq%%>oQgN6fLPn%5*bjrU{l|jLYzvAs0$^kLR5n zFSHrSgVD@njrp3uvdvNnascc;sm!xfW?NuWK?5Ac+(e#fF3mKNW}6WiW-z@k#So@< zqmm~a?M^t>op`JxMxQkrL0b%#YC5fvI-;1v!e|`>z z{(Bohz|Wy|{(Bn(_BI9WWinwO97Knv5U`&M!T}w~i#WiIfT4$Y(K>)1b6Aj|2ZTxb zqGVWkv?Kjkcjoc#^yA%W$9u92L2s5(AILN6C5&0^C!>vb6hVJJd^hjQH}5YrA1JmI zm)Z;zT8c|-B&BweGCO&-y`tJlS?8*1a35~;7;W?(yAIvRV&WjkB!ARZ`_5 zt#Xu9xC~Xh4pzAgR5(eiJtS4`gB32)YIj*JdY)I1ddTWMl^kDXqmMk{xIFf_JpMQZ zi5es@I_5Z3o0%nRVa~64)ISW>9Ls++Gn-67~NwZ9)*`|_o6I!+LicMlbboWWb`!x4I56s< zAnH(StgbNrFc2jk=}6Ylo^-S;^%#JgU1T4F6NWhgm`O>wc6xWr0QYAq?V zmX<+nBo%hjN?RbWJR`3n)mV{oLX~DRlw_nz zH&LaV0yI(#$2BcxIKu+Nxt8#Htl;Euj^%JJtjDGmmf{-C!#dmo48inF)1eGgS%xXa z874y+CXx)}p-dBOVt^x-W?`*~0B9vfkHRwt;=t(i?Nhf+U40|$8 z^kkms%QD_!5T52453&xDn!sFgv%nOFii<5I#g>v1OVUy+NijGnE#EPewbfcyY6F+$ z<#5neUO~thRaDw(sIZe)*(#uwb}|M<)fsukDS6c?>REM4UP-Z{=8U}Zw4(Zqver>q z=Qv#NG}7cc+T=dUJwL|vRP%i&TYM)4zB8>sbHb2mVephNfSiq^K@Cq?f2oGUU({`? z=Wy9rmBu)mMivtpri%0vG@{`${Kc?kT-Ioo8Ol4rNfvgoXImKKqj^}NK~GXLAOZ3$ zu^Ojg4s$b1C7H(Lb(%4p6{i|X(izjUs9lnQ=ST*sna zzb_f*Xve5Ml~RHfq`yLMssZRrH|)zePRh^&e;N8RjX-~<(O{NIU#2l^9n3W&@=P^W z7Fmc3%*61t$V^&nB`rA#Pic4-pM-rxxvi|yR#wggh~Zb2orW4aW$hV7&1upqJ7vuo zq5(D`IIFC)CvC7-)-zgrcDT_|39WZj)Y`MiYcaG>%i%8$thFa_2=kbV+OrfhAS)E; zMwxJm>0plsA8B+LYjPgvy2;>mvLTS6M5mmP!*OhC0%JMO!qQBXX{JPq34tJ;*@S`& zQ_S6@EXagx3st6tD#HQ+ELP=OFjy)xvCCYQyBiBt4s{#Nx0L6Y%QHv*Hn7{fTnWt`(W-oz*ZifI#_ znZR{|!@zT!;JA%7o@0+T=tW5)IfKDMoBFTyzqFs?b_hOehL075SF3d<%KLC2J*OS%HP3$a1KVp}`2X-ky_|kjnsuT6wh_4*>#$Keuvo>@7Wg5S)n)EGSTcd z)$BIS_dtM_DZcA;iw6`;HoHtTQv%>w$o(cqmI;m%80R>SHL`Z^xPNA(0a-^3*V$w5 zSmPO>!lIgdWWXqfp)Bwk)jJ)|GA^fJUdBqyd^Fo)gk5W8SkU1i#3KCU zc+p99u`PoQX^|Zh+o{X!Cd*H&OYGF;ns}o8)MVvpFjZ|oS$Sr%>NHV(daA}=L$w2T zF*v9xCY`8toUC!2taY5KbD6AjoT#;*taZR9)8dSHwDR;=jRP1iw;ioKHC$nb0I14r zRAsiRayz1u0lTWt3|F2Wt~tX7qcvw#<)=ogPmk6RV>R~JHCkgoT5mtr;P?uSj%tj@ z2FFRR3(HiqyB3eBW;pfdnQ1vc)5;+9Vq!05(`!cPHPz}tum{3x!ktkz&^-PG&v^nV z1m!tTHM`94-6ps$YOa&Ii2(r%HnlOb1#4+Khho-RqnYLaC(*2q=hFut>KrRDo=adz zs*7x1QozI*s-<@1TKVazO8c2g`>9F?qQ((AQ*&;n-U;zcz4J_+(@dQ+HfI}LXB%8d z8{J8p+-Dn^7)rZb=bAj20DIlFvE~pw4%>&64tJU5xDz+cK=Lw7LK>Nz9y)F=h84~>j6o6KGhQij=fpV@YA=#0qo71}kMvz@zk z2|cIUc6CFacF);1&smX&hE|W+7LOT$+iWZ8OtTxQz!jSlsH>phq&nZ4tSrPZ#3eG@ z2^xc^CQ9ul%g98;GnHp&s)7A1%&Kvmt#zEOcATqso~vcRdtU1_Q|mNa??R3Bu5%5p z^9}B^wXU;>>pd1YKKQj}_=^C)esbl-?|%8s7caj3>a#Cj{Qmd9eEY*&liSmrHBsa| z*K4lPL!*se2zEfb295{ZpXYhbb3HYR0Pwx$d9N_X^O)m$kn%icx$cw+NPq?>Hh{9b z=D8k7HtNICw6N`S%^rB8W}7`2+^0BhQyeG*Eath-@H{Z3PVn$flFMYSzypf1JkyFn z>NzFyoN6VV?eLj_9c?~y9ey)yKG>Y=@8YtQVy43WCDrybRSq-N3^k;)HL%$ECABcuWv;<(p~+*e!F>VmYNI1fNlgebBfh!d`#GqyoPMfe*`^z-x}@IoEuCuGw>z=T2bwH!}gd$#chEG|utP zYdY+-^Uu#|nSqZCvwW{oBwPFLnkSmnufE8 zyFma2o&NJZA@jY#i+!Q9y#Wa3dqc2yzBh2LH+ZfmWDc91fwQm}zB8cPbes2Ns~4VS zlJ5p4cvuf$G2l3grC_z)NR8cSrOim0m9p4eS!|{#Fp=kEp?W25^b&wGL630>sB1is*HUuq4& zjZgo&J^S_Nf86cxm*4#GyHCD<|D*4o{`R|H{;%(!fBD0A-|yc4r%yh5|K1#bQ5d)= z2mouHp-ZCRWl`X=Fc8)gWNW~pC=kvrwNM&>g%iUF{AOGIXWIj2h42w> z24LI~WFnMoC1|L^P52lv*Tr~>mfm3ahzFVJz`*oI&R|sr)QwoQJC4@F$5SIUSY4b{ z6q(5jOonn#3}qc3$}||tHXsG;W~PBW*HE5&LQ!B0h0zEUdB*ZA*bT1@<(bFjnTCoi z!?_w1ST_xIZgZgCZK3h}LIVQ=&iMuI`GuzQi(F4qILq-`Z1!f<3%bPj(}2+@@LO&T zS{4y^ChI=`L3bOV!Ba_2$|!j#UGEhM2-GTOTeO#0zA%QyWc{) z|3XK=Y>OY!?l*^V+7UD>!YGFO{!E}9+8ut=0yyXeoow-(cc7;X}Agemsj~DoJVygVLjW{kE7rD|Mw$cScmOFyc2fEZ5giL_H@EuBE6S>hDtlbP;?g)a{V5uW; zQRp|<;x&UB&UK&UxJ+vdkX2#GswkLL5WFf1dH0IshaWVKEj|1?pzVcO#V0nkpPX)Ze!78G z1QefXc+P@Ncx_ot6pwuN?;mT*`e%Rm^>tMd?v2NHWY&9P)_d`r3?nY~L|*KQxYz|H z);hxh+Sy=7*Zc5`QzD@2z4&!W(WJdmYdw*yE_Z}2<3Qw3SHyBx*m76+QfDxR?P6Qd zLYwb=3+lG-ES7Ctj~Nav>ZYpCPE?(mtisJ0mZJq`qXnkJdH87Hge>)#H0g*WURM&Q zD@oFoCh18N^rXppVzk8Tk|vQ#6OPDI4I~Li#YuXybOVZ$kBZ}A8U5||e`=op!lL?y)s2#A}b#PwkfH%IZS@)5JYGynaYBk$qQG2hT`-a`N3 z_vjD13^Tu4AHQZ_iC@(D?#9r&m&H#m4Lrtg>|enjlj?X#e_FKd!Mq56H5h+J_WpFs z{YgH!H`#oDice5Xn~YMht>z)#p5P<6Gsd|y&e7;NcYA_&XPmpk-3i`qwC!}rT^y_F ziA_2LJ<)zcQN7llG?Hh_m3(<`|ee3WqtYoXCMD+d#ZlD^8!W+el5v*XY`gb z|C=vAWqY)*d|_Jt$*Fo8yxQT+#$+f)F{-y+J!|)lYQ{cBHzxG$f6>_e@+tqfjK2Q- zlYhOlxY!gr78=76P^00gMU_<|u*jYC&O#Ip?<`yPMw?GLx!|K|F$Z=QdlDbX0?@2n4A>WU-! z;(zt{65A8YF!%*S*#XNce8(6^J;!_vE1kG6&Ne}w9Os{X{M^~JBW z#r%IulVACvzyJQbr&mLrQMk;E{j!|SMnWHfCarm>Hfm_z*+-a|LFgJvaZ4~E2wfG1UKE7`m<~n7#V&#;cd;wrH1#pNg8?7WnJxiy7f zQG#Ff|J}D=qw!yU_niyxIlApsW(;j?;@Ftp7k%qrTz&e@`#9nH{r7MG`*(BqzOJAC z+)MDnyb?uVXMmISSg=)$f41{1KMubC{@X8J{NdA&Klu7>UmKRzSzQ^=Gh& zDc!7hwBqt?c`<+Q>#zPoRsPK%zOSA7oPB(4DWLjqQ}@ZXcH;izqhHLo$IJ;MXImpb z*j~QB(km;mX^Z^EP3!S?y+!~6IFSw8yU!OnrZga3H%?r^Fxyq3l4vMNtJN-?{M z^?_TF*UoUUUdr_+kI;=5#Y#l!mMAt3CDr1nl$f=xl2k9uo%+WFP(RTPkah zuP6i;{-Mri4_*Ks77tbLO%K}^_y2H%_B8nJsdU}5(wBmsc<{A>EKbnhpb<}s2cZ|> z!@L0BJ<9Uazx(B5bbIgi3_S?LvzxO!PyJf(&We~dR~~;9s1gi-EKZNzBy;0nt{$5S zq}Y{k6u$>x8Nc$8aeRU6hgo}p>oecrIa}v8TkAGmPd@q={EeQmhV%FUalFy< z`UL0s?|!-Sv$QRLffQn%g1km{x$~dn3>_Vi=Yq(;gLlp0dpJRR;I*W{Xhsk`QtK$V z@ZYf697gZ+oG1dF@2_;@E#(I95k~*tD6N0^_4}v*u!9@2hadiT^KFqgr+DjV5ardhL;yS%3b?$2d^kc)l@U4;XJezw@ftV4))xPQlipB6GC-^6e|UkiWw#;f2zR z8O%O9EeINGaKnJbQ{%+|xVA3MMd!=%5;pO0_&|=qhO+#+x^cYG1FsN{bAtZ%{&Ekx zeQ+1Q$BXh4ynknbecm4{u3gMmd&{F?uAV$rPZq7Kh|^cV-)LQe9pkLBEm71ynqfAY zVLF_SyGixs@rNa0Z%9J-4FvskAmFD1UjH=U`A^Wx&B^T3{rcnYv*n+{O01u?C7MRJ zzv#u*GtKl}GV&R&nP4y50ddzFO#$q`cdw1NC+x#JfVUm*4?7mx)=){`m3`>n!T( zi{F1V-yVf0Z4Slz|99_Rn_!;{`th&d8*A{sztZ&Gm4mq)|E!;NH6GU6agDY>U7%wWWfEO zI-P$aI`njYu zq`^qOwwlBKFZ{fC69Aj}Pz<7$i2wfE54PE-7{B!uJG7Z> z!3yn`>ZJmT9~W-qRlcli$2|uPgay7(vJ`X`u;h z!s){|Uwwvk)OX)~!>*<kBG5lg!5oH?llRjAO$C47M_3bxbps)jW>StQM`mcNa+3$ZNi993@J17Z1Gzg8< zk%UpeA`RD(gdBtp2EWxGcwjL2;9%&%PN$#1Xjse!4oWm?I0E?Fk@)|< ze|u3B`#-S@Z+>g^|LD!o=}kYhLtmzDA6hbWI+JzY*;LK8hO%C(n>=58iiOTNq#3-% zRF2}njA)vm@ps~0>-ptp&)eev0nd(~7m2qn$wh!46ZE9*AI#Ao$kB%m=IV=ckBRdP z26K=0XC0m3dOh7zH;4TVJG9@w`xk3Cp6;73KI;oP&=c@RSKu36{tSL^bYau~jZW`< zT|Nl*lLlaOFE#q?6FL0@=yE20`$@0cKVt74Y5n)#X=?T3fB!DB zn=XE0M6)wE+_A2GZr{kBDborZ!xO7(_I<#~QCs{^@Kfwqyc6IZz}wQDvJWRN=!`mm zYJiEJo%G>#-})nT44b z&Fq*!p>URlJeE>^doVA|3d7KX;xku^3b#UQq6g~HNg-68@62F?*P8`u)8vR>A6?rwO8oz&+Q&R6P^E=(Cw!}w|^G869V_2w!8fd?TFjme@4UE=_l|SR%+CZ zV%Bl87-gK@WJ>yCsox)d@ecc>pM3TMZ~hBZZ1!3=JCg{EC_KaQ(!YtMQsmnDLwRG0I0DYSv~={(DAhop5bo_s@QFiVK7AP^gx- zrkkH^C@`7g-PY9bl)Z>CW40&!Xy7IlR zty5*)>n*5zs|o}O66RtkYp{x;s3`?1nbbynO7MvRJ_13SFbR|e)L=oCg;c-+#h_6W zlW2^Ioi|5&hkllGK;{Wji+@fp6- zaaw%C_je8**w=GvvFvoLq-R!1_smRJV;bAqnAzH#+1eBthfSHwnlkVufL}E;-Pb5} zqh%*9)@I-qar(^Q*vE@*`Bdri58fHSJF8}jVAU#mD|5~=Rmnbm-G1MxWMaB;U8UpT zM>xv(YF})vb9^lBxQW+QXbBgOJgYQ5p0Bx<-~7()^Im=Cr+npozkT7ycl7kmPk<7j zq}gx2_S`QX*z2r!T$tMbhu8TT5ukw1JMK4+e>eW{RPJwXspW2bup8D^P+GZt>nHgz zdW$*7+;~a#%TN7?dHjzD_aph9b90=+ZCxKDA-uEq9Q+EYGV&`OvtN4RL6vCUc;(T% zca!t;Nw^6E(Dff){+FJ4IXDI*kD40(<)8Tv+627B$S1%5@NlotoM-y})&?(0$Z29UbBcA#Mcz z@uJ*?1*0X}xmb$lcJ;779N+rj0D?}n-P z7ruXpWwrYZ5#!7&_U}Kac|4o-HWu1vlF#rRTf>_g()F zykqu1=x?YYu5VTnldrsvcoiknE2*WrD=RaM&7)JUfqg5o| ziy!1$S1t6C7g*2TrR>gFt4zu?5x#}3uetE@^Zv&dE~zGj0)-!t8*&GtB{U!WYMbAO zAc;H~yko)fZ@sSd`_upYja|0fV>}n~Dp%?9GhiM3==RI}UGDq*svFi!y>Z>tf4X`J z6EwdzMGq!Z!Y_Ts?_E<){mlmx^RNGGncs@r5;}C}vyS<~B~{80EDyhb?@9(!4*h1| zdk`ml;`CL9fx23Sd(%#=OZeM!x(Up_) zR!)+wnw-CCl59n3u55hnstHlQ^tctJ$6Y)=_u|rAA#PIW7Ide~8JoUE8Fim7Elb*` zMYs*RNBG-6Q~T;K9`p}DtiJgN2T9dfg1IWeO%R6ucWr^pFhbwY?!ErTbyK#VpS*lt zaK-t@-?VYY&+pso>kiWJ_OHL=%X99)g*>?O{O`gg8@k5HrNOh0`Q>+RX8NY!NiFMZ z+s^#QD;GX|=Z<)l${U5Ot(M}fIl1q5FZ}Sft}ktwb@h^AR4I2Y8q8zi_wM;Dk<-5d zE%OK;#y<}q_o*M=ao6V-+{j-9tgg7N>x_rLv4gxT9!!Un`^g`C_5K^ye7$$>9o=Vr z``YD144mQ0#l_tgXPmWPLV4t_ou9t`vy-X&QF6KFGb3;7`s7dU+C}2(1NeRX-T4^w z(f%!$Hf^6j_&Z;?B>PS2-@bMAvhlgg#zjUyw$kY2xZEY9gXQCLW#e;q&&oh~&rGon zJKhJhi`rWb{S1f9-Ls2sId9xgZ|Q#Z@rMrl{*~;H@zAdhvpO~fNCJbwQT@!dYK zBi2#fEN1N^`3+GSj7X?LrXP5Vtdmqk|F3pQ4j(-5xrK#3r)0DCTN0}ezWpXUFMrKO z37?j5%_UhM=imPD@(Zi02K9r6>9|0L;0Cn$z>=}S;xVBu9UEZMbwhf0V`g_#M#PUY zcL1l1#v=##;-@CO@$ApD-#xp}qh;&9cz|sSkHfSUli%8P&%1>B?2&PwA}T9!Jj6gN z!K=LV%?q#Hzwdx%YX2wJpUOehTR#2)Yp!Ti_`i?bwVhft;g=u$&DVZ?)T{s1hlk#N zi;voAQTqP9M^Cl?`FFoz)p^9~eloknRTL^k|uoxSqc6WVdcSC4LgLdxV&K5QO z*~QP?{}unhZ|wi`Po8`4;b-1^_*of!^0Z&P_@^H}{T>B0TZ@J9ob@s&dEkVHRY=`` z{LEn_F0}~JB#<<{Qihl)oV{bN;0-{(FwP1IgP^9U;f2j zdg`HjuU~ur-nHMm<zDsc?it_YzCGJk zmnE2^S4`Ag98(t4EV5xAX*=tY!BzF?JxxU+aZ|T6-e?+cF4}XH8U0)5o&2XmDsKGp zrT0F0#s1oMCS~;Kt0a--kps56SR>Pq@%f4jvBQxqPA&l}*Wv)gZ5CEOm=2FFth)KY z@An-Y0hlOXc>Fu>?E6Fft^b>MApZJuKY#tXNB>rzleF`JJzXu;sr8k~H76(5lqJAT z-o;#uU0iw`^Ri@)icQEdZutW-yrBpaYYfVD)`^rZ$@}^EOnv6grKgfX@cFO1|KNm6 z-gMCHhWJ_-SZ;ANc8F1dMf7J_soXCyA%~!e1Gqu&x87w>?f?Hf>KAzBsYh>Fb2iK5 zO;Zb6Y6@DaWgDtetg4(ldARaz=T2+fowB!rTWdh+)MfTG7CCP8-fuI~S7A)+O+}pC zd-lZl4k=}N{KfYgy7uu<88wr?X#0+O6=(2R9XWtlqi(Y9um7a~L6P@(wBgXf$lm2m z|2r64C;!jvkMHsz?F&ylaL3oSEb43+-I0Z;q5bb><4$GcTEATvv}#3FNPB|-|_obZQe7t^18Vd*PUGvwr5xD zKC5E)9BaKZr{e0fDy}|LcIBDnN7xxcw_@kqid}B!RO~X_8MS?L%XyU+>;1&| z_J$IK+&V?3Dw%au3ad$NtW0iztkqJG_Ue;0i4)iAkXMNgjS7WBHk!ouC^K&P^`SSB|kU9LPfBS2Ur-=FY;I9tzbQx=BSfg$_ zOxYcGzH{J@VaollFFt$AMYFo66>P(%6m(Umw$&71UDXAhRVi6z)OyEGwpS$E%grj1 zZRHHtQq98-DR0XN*QG*Mp(&FKSCx5!Q(sCLG{T@9HKaYKea*4H4=ef1E}+;qXT-#qdi z--V2!{~tSd|NJn4+RI{quGzA${<3|yKGeT>eE!GxT{CAAh$GNq-Bl%nvVc}3VeK9L z@}cRxC>Ur#nJjCYl+^ER6hy?JsD)|vAtTFD@M65%rIQlbhny5&?rC?{OW8Il**Y=N zZxa%mCdxRo$zQ?&IOJnM+@V(`ouCs3y3C5(YO@WOaIb*4Ie^-!@_~@JbEg&eWNQ`N zt#(?b_vD>ft*&WwDdfPR09=m<_V_ysH@o#+IXLfvmsv6tSP-frLb8-@L zs^~1!Vh{Q8O;=n#qsUe4tt4#ba5tA3JMc|T2o`7z8RugQf9KLf%lO2)arqmpZL!0a zaXRU?aeRWyeX#QtjtPPi4)#mNCt9Np=jk(MQ>m^!$~cMfYWNoMRpWKu-w3ahlayOv zA+}Ve+Nx4*)v30c0@>7pwke^tPb+AjUO?N1aUNqw1K~%KkHzjv7kY~W{q2<0hAIp4 zCTi&#aHv&+HHZZ5nMJZ@P+Dt;JDM^(n*F7cU8fG(Ijdyn%o5tZS;g75y*bl2vv_+` zh7RpLz5n24F-j;ro5W(uA6_DEGeNJs>Ft-JM^^U#?v*>%pWj(+fm*Rz)-EAiur;9Y z-N=s#3w}?2Ni+SncG88@GD)vWL2$$|CM7j&d}95$d~D^YJh#=O)mc9_-;KjHWAbne zjKLetCB&UOm&##q3{Em8Y|R092}g4J4B$f1pD6PSL+JLB?qKHrrU9s)?^T&1u!}fW zV+L-AKDD47n>GOA9n%N2hb9M*8?ck*@{eW#c|yO1+Be@QP@Jzy_SUC+8`8av>E5Qa zBfbibP{vL*qjP%yA;hu1nMEPunIY@m=1gx>rn@oS-H=w>n7+Ju&~Kl49L@5e>4IzD z=8*%QMP!a9Cx`gn?;ec*D)Yt19=d8yRrq~z_1G%(JIFlrl_y)u64=H`iS^_2Lo-11 z*O{#xo40;KVtr|1&G`JajA7)2#73NiPHAG}gv9ExV!C2fZfr|O1j|PR7mvzaJt}Y6 zNx`xa!HSW&nEL}R!Fc+#va#wjk{0gXaUa;=LBst-8V`wYnxGDCj2@4bZjIq6v(w;%rM?#mhnhe3=uR+ZXPSwI5QQjy$HmcX3v zx=D$3AS1DykgxuP#G2Cl6=QN&1CAC1WAavv&Rsb=4~T$UHZoW?Dp)!yST;If06xI@ z(8jC7g|w^2=B*l&ckyUlvV3F+9rVkAep0Y%R306Gt{SZ%;7p}@(|CLccg2S>`BFXo zF>;BPu@=lD^e%t2jOvLtM1U~ncz_}tm5I1oWUi<#>zq~~n_{i?yK4&pjrBHUWJW6d z@l9?z;}m#qp}ue%t+@ehcQl~8F|(~fuVS!cOpoE)F|&BbtYRp~G`W>-XsxcXbRsCwWOu659yL+`~Rf_YMxQZgl>-QTeoJ*{wf5k5jaldC;~# zzM(_s9%XS+Hb@$u(gZ|ECyh7On<^5UDoNf*+Ks!R@2Dx*ieRUy?FL+3VNYFQZ+#YV zn>yhog$h}*GZGXdg6g~A!XXj3Dbv$bysaU#L)>zj92T5)_4xFTUY;myp8qSxBkrki$WZ?UwY!F*DPoP@rLrmhLaO4|HYKlkrkr0 zV)Is&=8;1xjbuZ1oDAH6UO7%O1mY4y375rAlh$m}aFJbjQm}BiKs#&D$HeKlj4>pajE!wo&Uc9aBa&(LT+RZzsv zG6tY=58z7J$kwz}WGQFHvO=qj6uHXgs^liDGC@mUR-J6GPGN-i5V~Y;QN2E`@ar;+ zlqj7>h8~Ie#s#LC&boBx3?zxD4Luzr&KO)m?on?>r;$ir(%W3z)0pXDjJ$=3pb+=) z$e>nJN#VD)ETiV{(^{4lW*> z%NYz^$0}YjDhLhMXcoR;1@5q5;fd-m86I4CVsPQmVDX27g`8x-hjfxLYKMh~OHT^i z(646d(YY8NwQd4)y)5KDDStJ-=f08MTC#^r5aivM(-qH2=iqBuy%q?QWnd*~IfvY1GmAu9Fj53q&m%Mj9pyS!5F=Ycu8S9}Qe~EM1_!3-mUEb~6Ed5Z2qIRTT~+z81+L z%d>4AqMYt-D(*48i+df}pb|*Dj?chSA}ks>Yp)E*X({a{oH(JIwZHGJFE-7FvDcZ> zM#RP1h>NxNIXu!F`hVC)+(GZ5Kpiu=ff-qPIDL-_JUtNo@rJ%EE8ru1=#LFeDIYd2 zZ?$C?3KVcBt7K^~A%DZ91P1pQJ=`}_Qj6$|wc%EZ?$FDb!4qK&2fAhHPBy!3hj?V+ z`RS6pR1byvLc%X?CxII1q|iKTijbi>vjlM6jZDoftOn6;Ya~w_)OY%jowJAZojRDl z&+o2u)Q#97?(072OZA-86rdnL{ts?e5EvcTwHF6eEj09$eSp5EjJj^V2Xpq{Nvjm7 zEz!~}Jlw)Ek$ISj8qm>6)Gb5T5%lm(bdr|{@(YKWSwHlIXuP~7cBiNlbN9qAo=V`} zkA8A~OF8MK&GnO6EQme^X!!=SKYcsHOB~_`aA#qtWuQ3#hoWC*8Cp3xsur8d)&T9s z+^w{Y8C=}MNN#W;tBgG&>z!;jpud@4zK$nO3)n0JG|)x4S*&dqHsv-K_p<0dbCk7W-tEqXIW@<<5hjEY(BY^n^Ox-Jd zOgPeAB6bx62c?JF7(ktfR3YAvS%@$fbR=NkNgCGCIYGZgADXCa|XqH%+kfy z@a0w*jh74M!| z0(A5acl|-Z>4U+I%+dJHj}F=S(V?`QQJlv;h~yUMk+!T!GXgttiuN-+^S7V@dYj^j z_P%F_(iIs@=~VnE_^_Mf&{s^%U1rQpRNQHC0HtS$ z*BqdqW_0N2X*C_dl;99KfJcTSe8a|EG+e7W49cJ~lp0+eE%n~Ugne((-W*$%Cn`@GrPDx}NXD|ixX(^AQl6h^x z+Om8(TSb0LO`?S{Q^QvUy-v_sDT8cllb{pZds($n7d?Ft#KnD91bw!1AKWLU58d@K z<9@0^*Fw)ScG_lJtiin@jo9%t(EBX!p@0P-?@PcJcdG$P@>c8xI$|e_lhP;WEgPq2 zEf$Rm4el2V3+4^ZIj2N+-k==%5`MN33L+Ewthpfc1j8L_InD;nH^TJ5BYZTi3;l56 zma%^K4z1O2#62=k^Azwsq+5nh%y;grrs-qUj$HNd6?e=3CHB(LaG3rq5pStTv?B28 zgpsxK=`>B*o2Mi>Dd_4X+r+&UU=EVb4oF zcSldG?mM-l@3a!yURg2i&eJ09iuQwcoI0p)wzMz#YjP+4YjrQNn>k!0PoBWvED%_r z-%f6?JkTb3TejnMs{JB!(>v%9yKmaEEz8r=Z>^p`0?cK0m0(D^bY!nxB|ZCbspqh>``tn zy_3e1%aPF;0!3_aS0q||L0zrIwX|=GeQ}Q{XLDa)rf@+^nF8)y+j>d@zWidYXrzs8 zs!3qf096~rs5_0;@|K0Izx(P5asZ+Cuw(84dNMke(q8oT`iT;93-S)pOXZ;79@cP5 z0KJ_e4D`)*G^@7b^E>qEs3v2M1bTF>nT47#lD9e!D+1Pi3iX!Yx#WF{hx<{}x<5*{ zfaP|U(&rZCV4!#IKz9SW902-56#QNFiu^FOe2+GyPbZ6P_B{UnzQ=jE%S`54KSrh? zZ^HNa9m(rwce5WKvfvZ+C;?+e<`7Q+y+hX+kG->h~Dr8JrN$4 z@KOL9K-v%Dy!{1};(T?Ah!p2?JYNTHa=8T~0?@nIAwDM~?y?dY0Uy;9^FuT36Zw6{ zXVMqzhA1!RR-FtlI@jAJz!w;x2k4au&s7LFIhbqxJo(&pzLm>q*KWD zN>6=Z59J+NoMC3<2~>D^sX-^jy)i8N!~q2E?UvOmv1eb8jDn>iDgAWQyFpj9pXOV5 zn%T)l2=Y8Bt!W+N!-5Nj2lIxC?^)@bIcc?+Ll<|1Kgi-gGk&Cf7rSTsn&L6zDDK{Y zdkoz>ab@6rFS*houId4jA8jS0Xq(2fde^&%Gr1e?Z0;gkp3fxP!i>yMp)K!JKmE#n z*5G#HjK|Ic^pQ3{5nvZ2g9XPM`gE|QI9M{sxJT$$4pTLldLWg5=!d(p{s;lvG&~|w zndEtr&MC64sgl1^!7O7op{B=l&{e0H5JI0-6h?riG~8uP@&pC^DAb41-f99QZ!UTG zI(L$J;(WN8GrcR5ukzNqtsBtYK)(d; zSc!zcVn{B;v9%wzO`mw*XKdn9dqRWafA~ySMY5wR)o}_1Uc$cUw@15m9s!sOdg}&i zE?~J=Pw+2P?q^|Nkst0zK7tPSZ1gtEYi|yj^B4w_SE#q$Iu(elaL0Ei&LaU^zA4CK zJW?yMj|}FY6wDc%a|XoIGSIu&oqOEI={?*vzq>KZ$K0*dL-YtWeiTZ!*nnt%YqOMs zzt#L{K@VToc-Yz$4}FI&?ql^NFs*L@N#n4FxJ#bazLB@C`t=q0JddO=Zru6$(2rTu ziE(=;#!V+CuFmnn!h&E?L9lpWup|>KA7u0g2djhPz< zDD$#mhn*tps-e!G>{8-apxIxNFW5G{p!Xx`?ahkwf*$v?w$a6%8jhJsUI_!$A>5nk zn;Z`x=xk&!kHVk|wtQvH?>u5%om^8c?(DqypTjV-!yV|&$z$t|JNC5Hv7z3Lehi(C zxD)D4@(T5q+9|tZjsU#}c`x*3qmLy&x}SS2UbzA2Ee`afkGRL^#eHlpl%2RbMjZ5^ zWplSwO_5vyKN+)jzOlyPOL)hK=MLQiyF*_H?&E_+7{uM+o(@)&}bYdeiH|Qbv(gctEb(W<%%Tt}v!<>Rn*hlr1+Q{o+YaaPq(XYE!xgXrIUi98r zDDGk{AL!Sm<$A0EsZl+&0zcFM8GHoPBwaSm}lOzjMJIKO*JKU~CpEucBwxcBSb{w{;? zjyYo2ySR^)`6K<__m`Z0NZi5#gG0UB^Z#7p+^I22^0X0jEu|;s(H^Dc_|QSq#-QVQ z9Nf-2y9GM7Y+$e~En8j`tQeHLVsP%tAws|5!--2rCoUZ$$pgKuG^y4e&1#>R6!bEI z_L$EWk2ZHePmzrdYkVvDb{laCzivQpQz0he9})3BCi+=Lq5Nm!1{UWHJ(5>;*F;5# zGGJjx{Qza`Qx)pl>j!kW-nE3Muw&e-;I52r>A2|c9LEL=M+fH(Q=A8S)!*ev^##YC zWtqGa_v{X(6XDNgA};2 z@e^PrE?&Hd0+Rm)5&r_0-)^*<$?6#bWlHxnjYB zg<{FlrDFN=6=Kb*uJXh3Rn=fVD-R7-mzAj6&b0pEjK3#Nk$P`^26r$Va0-?K&#E?z#V*Hj{qQB!i zVdC*Z^mWP-gSMrLVQ$%?|1J_nJ2S=P-5n=A5jbBc%Qzd!yff&XO*lqrL?S_s|tT_mA0<0tnm zSEgQL&32ltaid(H$sIdRoZP;tf$`uDO@$~we6oQ?djm~FquM{3wCf-$jGo-He_IVr z;~#6*9NxCAs5Ew3k7^UOH4TRS_@i;NwxY7hlx`+N2es7fH?n`*&O%g~Jgw`*R?S;A z@1UvK7VTG?GNs1MS<|OaZK1)JqS~}6RVu6L^&Hw#UWyvi$5kKEyGn&_W3kF1)tL2b zo599o$Ld#BE06V0)EM2Me#3@8|6*V~l9#`p`h(kb((2NzNf(`ZU2)y*hq`rtYN0(~ zV8wnz@QRU1zgyQDHAFS8{U2Uu)s^j+m)YO`>DR9x85kJQz<~q#wNonfaiKo}F9A0J zi%J#ZLSJ8>;^X5fCy(gTg-bMYJG5uq;q>YPp89J1_G zZD4(;lP6D7QgRZ__DZ7ZyWY{ucj=UzoJ`|(e59_9dE^%QfuiobppfgYY4YA&)R%2c z=Qbuxm_X4{k@O+y19=3!q#ll$G}b+hc3ns&J;z+yeJPC|-MUQse``S}97fZF_?I-m zy?~~A=g59eo;-!_-@8Xx|LDMh1LS-0A&qp;U>-?l6VZ)_Z^?gse{wb!w0(@A8xbM2 z@JKF=+M%pJW5x`MfBKlxQd7y(a~CaJv4UQ_Ng}gj>C|mg4s8udrdv^G>BurII^{5u zqHjH-9xjF4{wC(%)YOz-zj{F#>FMO+vW1>Le?x&c)5tG6orXHUL;v&1=0q}uMct;8 zSDz5xH#BR14%f$SM2Lk87t;H8Z)N?>4mR}cO)5>={+vd+yrMB%p3z9BXOLMQb=g!X z`?Kye%P*@o*X8v4;-!@FF%9sMtSv1lFGnFEJ6k~tKvJ55#yQ4Pce^w?9F_gW+*pqO zW@Ub)6pR=1!u^>wYbI^lw26Ftd?@60HW}Ezp{OTc)@Aw@78az)%Ai-zpVHb@=5*)g zbvkR7M+Ig*j_C{hZPnty=Pbbom zxJ)vdG`m!N?!&MB3{_8dwYD9!jXL)*aQtn_isvgD<}1m3mBklzUxZ^n zhy9in+W7+b{x|k>-bMR4b=1`dsP?@=uG_frMY1X)VpT*7Ip4ycf86(e(bnfT)UbO+ zD$1}y#&#BW@JD&yoQUsudV0F^4Kq7zrxj+rDGoNn{?^P{;pt3{*enAB*OqoU!57Fr z7-;svs9=t5v!}DC2bozaJl#?5tiX;t_(JxqITRd-YdkBc>9x_&&{A1Wyd`(uFl&~j zEO#bnH0_mTXsF=*JGS8pZh=;q=LB1!{XCQd!Gnma3(H`I9TVWh+i!DEWin+0;``I?+b!2&9}wp3U; zLqL2>B3OR(+-7Fy3?6Nj*DIN`Kr=f#Gg;r#Ld9JtzE*RV<%}cI&9arnz>@5nb>kw4 zer51UC4yO39-GBrK(@z!p`cZ$E z(mK*$uTOf?i2Wq>q*2h7#`-ArrTGVwq|RjS|4DCJc3dG${Yfl7^+|_XdzOmzDAu8N z?{JlRl*9J@!fEFbv1{)kvHeg;v0ioffVb4GjvqfR{C%Nk1q4bx>&%(cBIHbf)VG2| zFNpK!&x@Gz`^BYmK~n#+^NTN~gN24gOFhg!oP^6&`deKrB%x4*g@=hNm#;{jEG9Za z{1y3^xOOc{#KhbXaWTS=fG+z}5S+!Ie9+!pul-xm)aJQR-~KazS|Nu4d? zNv^p4GDqreuU@?pZ{NHTNr^8+V&Yq=!+m)FK_o+u`ynq3Cv`faJb`VSDCF~n|E7OS0{;Jr1kI=7#NvkP)UH{xPVp6fl(F;k zw5wjGq7r9%8~sN5>P>zu#wcUwv3w|sCrS0Wn7(5e)!-)zk>&N zw`r%Vr>mo-qpPRat_Y!wyOWEb<;aFVmYLQAK+zO}2Nu8xtP-;@Ro4*N~e(Q8|q8<6Eb zD|B?U`n1v0)!Xma;HRH{s=sePm{gYgxO)2S@-pk!y=Qwp-9dg!>LLBqz;BFB`%mR~ zk-81m(kWR!SVwP?Y~RPz$IlZ?xQy!FQ&(??vi!1e_2<BbSW#jl;ZtXZnKRa9NKb9{2ZQ;B*Q>QYKPsRQfEgfzBtgRP;J=1x!W}sN7 zWU;@Rjg9reg|kc-Eig5mHFatm)NWg`xOIR3${TI{7R_2Xv0{}v6DLiYJgrafKGn*W zD6i)3=ddsci6|%)y{5K^|EEklqqhZ znxE4z8cj8u^=Y$wrK6J*yaAmA7zF4J z;PanG0H#q5!18Jb=nY_;p+z}g^ZmL2J_0JqGcIM~do|0KFF&P4ixzLAuSLu0bNkk9 zI(+yrb?@Fiw@H&G33ck!xlpN6B_HtP0Q}zpES~{@zCX4fIZu74omX>{y`jxbye~By zzx!fi!_~*DH|@Cv<-Y-j16l)^*HS#Fsi~E%QKN<_*0FS^jXj8J`pUeJ3hDj(_jLL4 zWx{ziX=`ie{PN2$@junB9#XAg>jN#P9lO+ZV{$g1lY9HYqYvNs*Zb1w=vFifqcr$e@onpGZo4N!A{x zsGId`(sNKqx?SzFNPA-zb=Z(a*sl^_tN7_+`8=(9(_WsSI|a}jz;i;CYPD|NI^)^1 zXT-Gmtbo(GTWPdlZz4G#yh4eu;we2X6=zFHl$`XA9wsExFn0xYv6p8kl3veES!C*? zAU;=_doYK3ZC3K3S0ooL^E-)ZwVLpGmm#3|X~e2o3vYn*XV0HW+K(PSlJw{7&!py- zIi#~OofdC7OONi~rsVgDl=k5@IR(U1#|`rAi#nmNs{(T9exj^a{O3^;(b|(avRto7 z7V5(t&x7`K06$AIVb0fT+oo+gYyiZxc^o)d2c!{n0n)KoP-n<>_V&AU<#IU1Cp@DO zZXc}wo8BW`n9B;kdVNQ(c5=PwEp;eNxL)Cvdy9KE>CEk>v8J6Ig@nkvWR8= z1pQ>%d)5vm+o3|j#=(MiFK$EGDbMLe8WD6AIUl-iOvwY?MSx~1`ak^eL#+-SI;1Bi zCKA(r@!~l*NXZ}GQOf%_oxlcxr_h*#~l@tni%VfbIf7Qx*Mc)vDF%)TvYYhYuel?bokg$vUqgkJqnW zQqtRJbS3sVP4rBojy4L?#dxqRyVz#Y*qzzLqQ4X7Lk=TBf7~bfEQ3AP#rE(pT^s%nh z($UdLfBQyBJL*BQq#vIUPfwpbrH79m(SrvM=;_0I6#wuRIUS251B?gDLE9#i=J@1L zN*1bQzbCJaQ^{v-e>$*XEM>foqf96?i;sPpe;Om5Hi9Ux+sgBL{HR~IUM;M#>F*M8 zHVN9pwsT`dkDojS?T0uMyid1p#Zpjc7zLaTqM*P)+Ti9-eK#c&?1J+7n!Z;-SL2C3 z=0l6ZfN&o5lCTaa@SG~wp^i(V&y}z8V@r_a_ds!K*swt@{XV_Z@5jHDwEH+^OZwdB zdpM80dnb-o?TV&e_Q}-8A&K+>{Wra*UXJNl`?3Mbb%w`eu&aV5dFRqlH-(fpuZQxv zTlFxy>MuHNK(rKXW}->shPAr(=#w50^^TafiaxJ}w{OK!?9CgraPM2pf2>82xe{`u z{JYxoJWv9!F{Ueq1 zXCADG6CfywItXjT!*>ueIX&_P^@VBRtP1PIM>Zxy-e*CX@#I&zozbENOMn=(JfBi*a zVPSOf!g&h25JDG2&rnF<2?{)UoKE;1r9Th*kl&#_Was2c?0ndqY59T!JDt*)uh zwE4YX@?D3^(n&+3NiBnc!_ot9yq2`DNB@QOG?%VkxhiR&2W=dY(dkpC>BNZu^7Zwl zBS((V!Gj0sz}`J%X6Hrvj!C3tmruG5`D9`nMs*uDxd1A>2jP9tHn!gV|91Sj|C1+APUp3sX{V*7 zV2n@0j*=qhL3UOay~0|2>((v8xsa4Ujwp%gufkdSZ@(>|8Pg`y)X64ZG z3TQ3^unhQJQ*>B}U!Nt7rW&5h>d!n?IBzpbw1>V;W>E_Lwa-Mp7d(i^eN`?*{N?1?dV@~_n*9{|7vR7 zxN&XxPJHB59A{6|X~s^fFzymnoq3DuFT6)xSKp+G4q>!sS|W{gdDOu!hk9(uA;Yc7G-lglnzr#It=n^s z+thZC0`H!jb zinr9rB8?hb<&owFqSp3AonQmh*@C^qb|OPhBCtv04q}b>BU%!WOUqAWk@@itwA$+` zHEh)6CferrJj?!zH5d0}!k+(!_8r>$v)wK`4Bli+bfh}pu zVWP>%$Aa#7AEK#;U|%|v1KK&XBB+qoog>uIPODI%!e$T|4*1(OsA=?z4{VlfyD z`YGA$ze3|?F3IW9Z^-@DZ9954YSgF)i1M@l&38aa##**$S-H8UM$HyYe`yFkw7q8Y zRt6fH&4=SKWkS1-T^4KU_FUh(V`saLy1n)`Ytf4LvejC(X{XbsqxL*a&1S=~o^`@m z8tYhpyXL9rrPd%y5Eq+V#2mH47y-(BConG8sR3vL=mW4U0=_N@eFVw@O-h0Swv|@6 z(FrgOpt2iUeRZUOAgttnHWuO+0RQ+F{`~uPLo`@A!GgHB^d03D+s0HSpMD877#0;p z*JeFnTr8?A4UE#{X!ZwNx`MmP0yT3sJR-rchL;JauH3%rKCEymvtJ-r;QO%bk%DcL zp0K~+uNmLxd%@-krIiuwDPWB&x}WFi$zFb*9-u;~w+#(3J{k^m2A(r5n`KIQ(ln6y)Ujh69@OhB;ok{W%3~Tr@ z;F|)!6VrtXUu3$Zjlds>%FL%TSa){LVaYgW1K$#i$@|WX&)xL&LIrd1zeV;7d@7vT zrpg_V{q^Vj_{CO9I~I=zq=y{0CI5D?ftpKC#^4~-Vstn>dT{d=+yvTibct{Sd?s5Q{{z_BVXqW z%X~HD3Za(D*5*`3wiF_P^FBp+lcF3RVe-BzS1Y>y-dt5rm8;rS-F5-2<*JLF+_2HZpmMrJe@0p^l zc*z|xznuYpXSW|?WGrp>qm9OY)qc-D$e-KrmoA$Bw>EtCOU79Ze3Q$It&^*i@=reH zu|V{hYA5~^cKr?;lD^xv51qZpwx3nnwr~HX?{i7}zRCysTQ+|7h5k?3`BnbXDqH`) zJv+p~{kz4tZ2tQX{aMQH@8f&&3)}y>;FJGo|34OZrPvR9ptxB>lhHcOdbj(tm(`!HfL|GC%nbsC>eU{RavQ`FZ^R zGQkhy|3+dWu z<>^d8r+ksPE3ffA2K>{YYcO>2zR;lH6U;zgcc2DXTL&PU%@tZyQdX#B<$LUKcytI_ z?Au>g+cPj|BYyREjExP`fO^+hBRuxnSlrR6qQtLk6L{=ML}Y{mcdUQ!!Inpj@MFZ~ z*ytwpf#0Zpljzv(+=b>U{FA=E;Yiy?0IzTVLCZ#<`Kht7){Ko*-#Yd(3i`HC;#c(w z^!1Gl4+^??!U+BBYcOyqWHUQ9Rzo%qe2v(vV^Pq#2;V#Kq;F&pr+~@5m?xC=Li;80 zL9%bNB7C2~K;KA6F)-j{fCKj$srRU>vHnVS8a48dJ;isG=y5fDLjwaN7#sZv*gTep z3Kh09f%=Ua)CW7U)49JY{F8ye2MwV6`W`tjNmA%N;xu~PvF$#Ufy=Y4Gens?hbE!gI+LE^e=kIO0>@Sy?bp71Gd*5n>}_zN~Xb*h;AwL zIQ6N$(LNlOZ9Hv|Hdt9&u3fWwCDQysjQ<&WoaywgeNTn$@v^bmho%^EYaHD=3}Ez$-u(2Jg`Pqj=hpIzh=$*f3hbBVod zxi(no-*@1TWjnuVsdYJK(s0DkB)&DL$&wr$sWkoHo$ zO+J3U0Re%SfZkph#XV-lE3J~V`LVuUH8g<^`+tWHUAyQE9IUOq)WXVZ50dAeWtBhc z!2CcT@21>5(7Sar7%%{~1LLv7h7CcjrK{?E)_Ppr!q8BwW*s|rgo#y!Z!&S>G^qNs zXHVIv^|}1(`G$rr8E9-g!5BXJCML$lqm4(Km`t4Eh~%`zWvgl#FXF1s{K)7atr3i6 zY&>z=jG43M%yFDEXU>!^$bk;1O zySTZP?m!)L?Li|)kC)gp!StLtPFui*TgwWA!OqsLZXQ}CN4RR$s-2C;BN7EYl)N~B zXP~=Pj;rLzt-E`;S1ws0u5xqud^8(0Y}};j)8~Mbty_WR=75(;6_>5s9c){cErqTc zj5@VyR;^m4di5Huw6tw)9kek@RjXI4S?ebi!Z-4tYSygwH^nObRF(f%Pvs+(@7I4X zivOgZs*cv6^EQ{+zw(FA+G_$d09>2Tzu8ZT72kh669&%z%Tyl3e+CQyECH+p%muJN z82f>>1^m1HVQrt~paQ=BPb4)o(hN48^<6r5N$S;P5SN9Rt9)Hu-H)&gtadFIhs-(b3ZHfqik-8sF^k9FcJSFRilp&ToxR@I|XKl9UCX1Cv~{NTQo>)E9jw3&S>v4&=!P%!KW zFb42g@ECqIRjg34zP6V33kQ39x)~cQZRFes=AU`a1;03Fmyn&EO^79@OaR-|`I>$C z5UW5>pFSnna0oH*gxD7{7&IcU?d%f@ju-tF&&6f%xlsLv&tYC;!!>uo@D9Kf0QceV z#-X{9k&%?;ojZ4>E&clSYm$GKJI6id=44Y|b~DJUf+g^~fO zDfo@+^py8><;FuADcAg51-(nopvk-7_ht{0f|B=UEjL^!XfO=E=w{_W>%BFh*t6X@f2Dg9+t?Qs6H{vUsV z=~;kczf10fT17QYyt4|}hbJLEUXB6#{qfo&*B7j#nW^vT*yT6WU;3bak}uCE_KBV5 z5=S0hM`-xA6zP}A^myJFxMUH|ZzcbEx!H7V;~?pm$-J|lC>vAYvk$c@T|4VVcJOa?D&gO%^0VcB*bNsH za~@7BNH6d#@V5oJ7Ck#Gj}A*B--Bs>FaJ`^Jbpl5)0{eWYQbHs{m-92hyQOpJ;A$( z`RDHduum{QpRZoMruSH1o+P{=e9HxLSNg!J#+c`mig&)pbJzlY(W-RHeV*h|#q;O6 zE%-m_W-8HBvkPhT4#=g%d~G}L>~pZo`y<}t6({%(Yr=P`faeV20Oc64A6t5Q8of(= zM{iz(_m{8e1@;R(J};lg)2nAs$m8@A>b)tm)O=Uq!n)J*5e9dFo4afHpQnQrv|M}f;_+*!p^Zj$#!xo3K z@`Uf=Nd7N9$dl_u$u{fvn7n7cdxj`F`J(j$)f4r&>{LV1gl1=yUu2rRL zXZO&-wS5WSVlU%qPsUE$m_&48nQJV z{>`8EKD_7Qc@!1@sSnI+Zf24M72llizmiGa9hGaZN(PAecu}dgh5>jlHScjP)6YNu zths2>qJp=OxgsN({)|W@e9H+wo@r9j z2WgkL5AEN-k6;6p-}zwQc$Eyf4?V!whBG;I?O8shV_D+f5flBlR5}x{`#wU^eXxO{Bc6RLH%w%x}it zq+78u6nG(;#&3TOfA$a5$Ns$p{i58!F_C_SFSC61O6=*GFO?rXfA?gvw}MReWMkh3 zd1IdOd@uRD>a2VH4)ITu!D6ky?z^A_$u$SO{zY=nhe*$g(jrX)N-s$iA*KWc2qZMm5;j^4XMZ%C zYih2tuqc>!2(cV^r!xPCuB3qf6p8`wH*UmG^tEdg6$M}XNcK&?LXi>SwEx6avhaCA zD-Oidiv0|aY5CsAwAA|vE%st~Ouz4WOpA6ulJMKE$Fz9YT^YmF(?JWW3$Y83IqL>jq2I8M z78V{Z_1w#0=jqDDvvlcv5Ml}f>3qm33Jp3z!KeM{%!%W4%KsPz_#GjC-@|nL*g^6? z;!WG!cGCDQk1*d<^5-0Tz?JtCe(q<6uR_Q;hi}f8Qq1F`b;}l-8?CJhRvgcv7M5tw zF`FVDWl>goa*@m<5%YD0!o$Hk$3Z|xKY#8VorQmXNJucjl!w@W)AGAb0fv(UAkYY3=5H)Zc-hF=f0Q$L#6iIcQ@V^aSrFeolFf`Il4MHf=QR zHd+^$L-(0`D34;F=iqE11G-@nWF7(DS>{E2!*~B2^B!_m##5+b8cv)zLH_=J#BmOP z{`n{2+j}zZlH)559`GWwt!JpaeR^@MAMf?LZ_1@HW(TRRdVBU(915uZFEft{ZQHii z+-PH6@Cq?%@W((r$1aM)dc*q%n1mtoOG=razd)f<<{?t%9E-u<%3_%xhs>GpW516ndb@vpU0g!6DV{39gKOybB5)v;$6!8&|zgv3%v|YrVSf5$i8ts{)QQ!$HBjf z_U>|}T|2gs+xG1k=WVpzbvxw081ip;4*ZVJLQ_gw+aiD=bwC@%ZblH`8#oZ4$6DFQ>RXnhld9_I6BJnYV4_qVd)=#&Ybd_KkJ>b(Ac*SiaNLQ6|abKACU9D*s6iob{V z?_wSI!#&<*DN|u#KIP@|`lO6w=4V`~Cnw|lFa>8`$?`mo&jIdW4)QzWnD0^fEjZZe z<@}qE_#W)nW#2f~2=n&=&b@tchU@}%xF39G4G+)nONbHD+`fH#G5^ddKfhZLe>B%> z7ukCpCI7%n6d4^u_N!+Hb9 zDBVX~(GBPc;o+CCex1Ryv72DNm*0t-J9lml$6w*wffvCwpHcDI|92(CqBp}_mHhL} zcn?1I`W&MgLp`XxaX6_>j-tx5?jWY;Hfb)6p`KPTG{HHFmTW&qP6y7CUvM~Gx)LRI zf`q4!=oR8zU*T-=)w8FR@D#ek1L!-q! zr_sAJX#CDsG{y57&D-;kmhZSktKCk}=KVqB?sJlk`k$g59_}<~;J^>i!Fk`N4)~Y$ zKESU4ClfDtQWTxTzQQ;BLP&Q>5NTQ^Q!|TK)M!-_)wjr?pDgkagH}il*AX>AJXo`h zMEE{1bw)f`cUPkR;D7LLWlWec;+Hs1YbIitmIW$dIdb#BLb3?V!@1B0vOkqT%eVNE zhK9y1@WK3lakhYa-%Ndfr-Xrwurg$29fM^6@Bx1PWcT4!L z78wCJUTrMy^Y76(E@R+WHs*cU9`KLYuW=|d0Uo}!MfMj8ioxzeA#DyP+8Tj4FT`N& zjLxI}BgSW7?b!=P+5T7in+%sOEZe0^m!(*HWUOfx>?-N+U(m`;`$^w5od$!i!QMoJ z7`%vvARmc-j6a09w_`-Jv9vBieAo)e)dI0+R_Abb3|N02-#j?0gp~m)wA?S1{s0ck ze+};2TtE!j6(aYD0`j?)PnJ6Zsd1y9uY)zVGq(YJ*RzY*x~ll@Of}+OD)^p_Z&@w?-%G%c8RW@w zwuZdzFDYf}dbN;tL>AC)@OB_Jk0$-TK1W+e@7^p-m<^aWn*faC8I@0aujSHF-~=ZW zlBLTbs#mw}WiZX}FV-E){!<6=+&T{*Hsr4!`u*bcY#z`6%nN*Ln}$NpBan{)&l50D zrh@00koR1~FD^cf`4Xg@2kS9cY{B%1YcOj1 zOY5@=a)sP?M1uDld2|$W=k&t@f_Ubde*RKOCbi4Pl)z#~{MX!(H-d_DjpB_A6{;d%+R=gQKXLYL4e5;RB zS2$-cu-R9zVyiz{?Kw}jhoi~m#65gx^`*S-(zW|35b1(5${&XqO^IFNc!XxIu+KIz z{o~!hVPit{f9<#J*Ix}5wr}6AGxkAs;YY=`t$+0$pzO$Z{2e;ds6s!(!PR>9=vlK< zyViBObZp-O^!tq%JHd3&2%|On1_SN7>UDGM)u;c?k;cG|GW9;?W*XhaupvczATIAk}~HwBj$tst-dEOiuXZ~Pw93(zgD%&_*Q7Y bWR6SaS3XPRTwkUV`9<8|b_hYMmdO7P6G#4Z From ed1de5d2760e565fd149496549614b36ff3a6543 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 7 Jul 2010 13:14:51 +0000 Subject: [PATCH 357/674] dont swap strip names when swapping strips, means they keep their fcurves --- source/blender/blenkernel/intern/sequencer.c | 25 +++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 894b8b6ab60..8412b5d64de 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -3799,6 +3799,8 @@ ListBase *seq_seqbase(ListBase *seqbase, Sequence *seq) int seq_swap(Sequence *seq_a, Sequence *seq_b) { + char name[sizeof(seq_a->name)]; + if(seq_a->len != seq_b->len) return 0; @@ -3807,12 +3809,33 @@ int seq_swap(Sequence *seq_a, Sequence *seq_b) if(seq_a->type == SEQ_SOUND || seq_b->type == SEQ_SOUND) { return 0; } + + /* disallow effects to swap with non-effects strips */ + if((seq_a->type & SEQ_EFFECT) != (seq_b->type & SEQ_EFFECT)) { + return 0; + } + + if((seq_a->type & SEQ_EFFECT) && (seq_b->type & SEQ_EFFECT)) { + if(get_sequence_effect_num_inputs(seq_a->type) != get_sequence_effect_num_inputs(seq_b->type)) { + return 0; + } + } } 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); + + /* swap back opacity, and overlay mode */ + SWAP(int, seq_a->blend_mode, seq_b->blend_mode); + SWAP(float, seq_a->blend_opacity, seq_b->blend_opacity); + + SWAP(void *, seq_a->prev, seq_b->prev); SWAP(void *, seq_a->next, seq_b->next); - SWAP(int, seq_a->start, seq_b->start); SWAP(int, seq_a->startofs, seq_b->startofs); SWAP(int, seq_a->endofs, seq_b->endofs); From 8476d5a2b38a3462faee65b90b8b468e0135a5b7 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Wed, 7 Jul 2010 14:10:41 +0000 Subject: [PATCH 358/674] Constraint UI: * Some code cleaning. * Removed icon and emboss for the "enabled" bool, use default checkbox now. --- .../editors/interface/interface_templates.c | 66 ++++++++----------- .../blender/makesrna/intern/rna_constraint.c | 1 - 2 files changed, 28 insertions(+), 39 deletions(-) diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index f253e8c9fd5..7a5e0413f6d 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -953,7 +953,7 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con, bPoseChannel *pchan= get_active_posechannel(ob); bConstraintTypeInfo *cti; uiBlock *block; - uiLayout *result= NULL, *col, *col1, *col2, *box, *row, *subrow, *split; + uiLayout *result= NULL, *col, *box, *row, *subrow; PointerRNA ptr; char typestr[32]; short proxy_protected, xco=0, yco=0; @@ -988,37 +988,30 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con, uiLayoutSetContextPointer(col, "constraint", &ptr); box= uiLayoutBox(col); - split = uiLayoutSplit(box, 0.35, 0); - - col1= uiLayoutColumn(split, 0); - col2= uiLayoutColumn(split, 0); - row = uiLayoutRow(col1, 0); - subrow = uiLayoutRow(col2, 0); - + row = uiLayoutRow(box, 0); block= uiLayoutGetBlock(box); /* Draw constraint header */ - uiBlockSetEmboss(block, UI_EMBOSSN); /* rounded header */ rb_col= (con->flag & CONSTRAINT_ACTIVE)?50:20; - + /* open/close */ + uiBlockSetEmboss(block, UI_EMBOSSN); uiItemR(row, &ptr, "expanded", UI_ITEM_R_ICON_ONLY, "", 0); - - /* name */ uiBlockSetEmboss(block, UI_EMBOSS); /* XXX if (con->flag & CONSTRAINT_DISABLE) uiBlockSetCol(block, TH_REDALERT);*/ + /* name */ uiDefBut(block, LABEL, B_CONSTRAINT_TEST, typestr, xco+10, yco, 100, 18, NULL, 0.0, 0.0, 0.0, 0.0, ""); if(proxy_protected == 0) { - uiItemR(subrow, &ptr, "name", 0, "", 0); + uiItemR(row, &ptr, "name", 0, "", 0); } else - uiItemL(subrow, con->name, 0); + uiItemL(row, con->name, 0); /* proxy-protected constraints cannot be edited, so hide up/down + close buttons */ if (proxy_protected) { @@ -1052,47 +1045,44 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con, show_upbut= ((prev_proxylock == 0) && (con->prev)); show_downbut= (con->next) ? 1 : 0; + + /* Code for compact Constraint UI */ + if (compact) { + subrow = uiLayoutRow(box, 0); + } + else { + subrow = row; + } uiLayoutSetOperatorContext(subrow, WM_OP_INVOKE_DEFAULT); - if (compact) { - /* Draw "Delete" Button in first row, before splitting */ - uiBlockSetEmboss(block, UI_EMBOSSN); - uiItemO(subrow, "", ICON_X, "CONSTRAINT_OT_delete"); - uiBlockSetEmboss(block, UI_EMBOSS); - - subrow = uiLayoutRow(col2, 0); - } - + /* up/down */ if (show_upbut || show_downbut) { uiBlockBeginAlign(block); - uiBlockSetEmboss(block, UI_EMBOSS); + if (show_upbut) + uiItemO(subrow, "", ICON_TRIA_UP, "CONSTRAINT_OT_move_up"); - if (show_upbut) - uiItemO(subrow, "", ICON_TRIA_UP, "CONSTRAINT_OT_move_up"); - - if (show_downbut) - uiItemO(subrow, "", ICON_TRIA_DOWN, "CONSTRAINT_OT_move_down"); + if (show_downbut) + uiItemO(subrow, "", ICON_TRIA_DOWN, "CONSTRAINT_OT_move_down"); uiBlockEndAlign(block); } - + + /* enabled */ + uiItemR(subrow, &ptr, "enabled", 0, "", 0); + + uiLayoutSetOperatorContext(row, WM_OP_INVOKE_DEFAULT); + /* Close 'button' - emboss calls here disable drawing of 'button' behind X */ uiBlockSetEmboss(block, UI_EMBOSSN); - uiItemR(subrow, &ptr, "enabled", 0, "", 0); - - if (!compact) { - uiItemO(subrow, "", ICON_X, "CONSTRAINT_OT_delete"); - } + uiItemO(row, "", ICON_X, "CONSTRAINT_OT_delete"); uiBlockSetEmboss(block, UI_EMBOSS); } - + /* Set but-locks for protected settings (magic numbers are used here!) */ if (proxy_protected) uiBlockSetButLock(block, 1, "Cannot edit Proxy-Protected Constraint"); - /* Draw constraint data */ - if ((con->flag & CONSTRAINT_EXPAND) == 0) { (yco) -= 21; } diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index a7f2761526e..fb19e8976c3 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -1940,7 +1940,6 @@ void RNA_def_constraint(BlenderRNA *brna) prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_OFF); RNA_def_property_ui_text(prop, "Enabled", "Enable/Disable Constraint"); - RNA_def_property_ui_icon(prop, ICON_CHECKBOX_DEHLT, 1); prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_EXPAND); From 358738c1aa6115aa7ccbd676166f943e4ee1dbd3 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 7 Jul 2010 14:28:22 +0000 Subject: [PATCH 359/674] Fix #22354, #22727, #22501: image window not display correct renders with compositing and slots. --- source/blender/blenkernel/intern/image.c | 13 ++++++++----- source/blender/render/extern/include/RE_pipeline.h | 4 ++-- source/blender/render/intern/source/pipeline.c | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index 4daa38001bf..dc78dac04dd 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -1827,10 +1827,13 @@ static ImBuf *image_get_render_result(Image *ima, ImageUser *iuser, void **lock_ layer= (iuser)? iuser->layer: 0; pass= (iuser)? iuser->pass: 0; - if(from_render) + if(from_render) { RE_AcquireResultImage(re, &rres); - else if(ima->renders[ima->render_slot]) + } + else if(ima->renders[ima->render_slot]) { rres= *(ima->renders[ima->render_slot]); + rres.have_combined= rres.rectf != NULL; + } else memset(&rres, 0, sizeof(RenderResult)); @@ -1852,10 +1855,10 @@ static ImBuf *image_get_render_result(Image *ima, ImageUser *iuser, void **lock_ rectz= rres.rectz; dither= iuser->scene->r.dither_intensity; - /* get compo/seq result by default */ - if(rres.compo_seq && layer==0); + /* combined layer gets added as first layer */ + if(rres.have_combined && layer==0); else if(rres.layers.first) { - RenderLayer *rl= BLI_findlink(&rres.layers, layer-(rres.compo_seq?1:0)); + RenderLayer *rl= BLI_findlink(&rres.layers, layer-(rres.have_combined?1:0)); if(rl) { RenderPass *rpass; diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h index b72ba8e0c40..802703d476c 100644 --- a/source/blender/render/extern/include/RE_pipeline.h +++ b/source/blender/render/extern/include/RE_pipeline.h @@ -130,8 +130,8 @@ typedef struct RenderResult { /* for render results in Image, verify validity for sequences */ int framenr; - /* for acquire image, to indicate if it is compo/seq result */ - int compo_seq; + /* for acquire image, to indicate if it there is a combined layer */ + int have_combined; /* render info text */ char *text; diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 722ce55e950..bdae4221bde 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -1085,7 +1085,7 @@ void RE_AcquireResultImage(Render *re, RenderResult *rr) rr->rectz= RE_RenderLayerGetPass(rl, SCE_PASS_Z); } - rr->compo_seq= (rr->rectf != NULL); + rr->have_combined= (re->result->rectf != NULL); rr->layers= re->result->layers; } } From be1846bcf68636628b60e5b958a6b41e41b3f5a0 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 7 Jul 2010 15:06:57 +0000 Subject: [PATCH 360/674] fix for numeric problems for color balance in the sequencer (same check as in compositor). for optimized builds this gave crazy colors. --- source/blender/blenkernel/intern/sequencer.c | 9 +++++++-- source/blender/editors/space_sequencer/sequencer_draw.c | 6 +++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 8412b5d64de..cf9e159bafb 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -1536,9 +1536,14 @@ static StripColorBalance calc_cb(StripColorBalance * cb_) } /* note: lift is actually 2-lift */ -MINLINE float color_balance_fl(float v, const float lift, const float gain, const float gamma, const float mul) +MINLINE float color_balance_fl(float in, const float lift, const float gain, const float gamma, const float mul) { - return powf((((v - 1.0f) * lift) + 1.0f) * gain, gamma) * mul; + float x= (((in - 1.0f) * lift) + 1.0f) * gain; + + /* prevent NaN */ + if (x < 0.f) x = 0.f; + + return powf(x, gamma) * mul; } static void make_cb_table_byte(float lift, float gain, float gamma, diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index e449490516c..1e5735006ab 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -369,17 +369,17 @@ static void draw_seq_extensions(Scene *scene, SpaceSeq *sseq, Sequence *seq) { float x1, x2, y1, y2, pixely, a; char col[3], blendcol[3]; - View2D *v2d; + View2D *v2d= &sseq->v2d; if(seq->type >= SEQ_EFFECT) return; + if(v2d->mask.ymax == v2d->mask.ymin) return; /* avoid divide by zero */ x1= seq->startdisp; x2= seq->enddisp; y1= seq->machine+SEQ_STRIP_OFSBOTTOM; y2= seq->machine+SEQ_STRIP_OFSTOP; - - v2d = &sseq->v2d; + pixely = (v2d->cur.ymax - v2d->cur.ymin)/(v2d->mask.ymax - v2d->mask.ymin); blendcol[0] = blendcol[1] = blendcol[2] = 120; From efb58cdab9315175079b3288046addb160882258 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 7 Jul 2010 15:24:06 +0000 Subject: [PATCH 361/674] Fix #22219: compile error with videotexture/libavutil and recent gcc, need __STDC_CONSTANT_MACROS defined. --- CMakeLists.txt | 2 ++ config/linux2-config.py | 3 +++ 2 files changed, 5 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1088d95ab67..29af4db6073 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -261,6 +261,7 @@ IF(UNIX AND NOT APPLE) SET(FFMPEG_INC ${FFMPEG}/include) SET(FFMPEG_LIB avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries") SET(FFMPEG_LIBPATH ${FFMPEG}/lib) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS") ENDIF(WITH_FFMPEG) IF(WITH_FFTW3) @@ -736,6 +737,7 @@ IF(APPLE) SET(FFMPEG_INC ${FFMPEG}/include) SET(FFMPEG_LIB avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg) SET(FFMPEG_LIBPATH ${FFMPEG}/lib) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS") ENDIF(WITH_FFMPEG) SET(LIBSAMPLERATE ${LIBDIR}/samplerate) diff --git a/config/linux2-config.py b/config/linux2-config.py index 213c20bd7d0..7a350a74ed5 100644 --- a/config/linux2-config.py +++ b/config/linux2-config.py @@ -181,6 +181,9 @@ CCFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFIL CPPFLAGS = [] CXXFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64'] +if WITH_BF_FFMPEG: + # libavutil needs UINT64_C() + CXXFLAGS += ['-D__STDC_CONSTANT_MACROS', ] REL_CFLAGS = ['-O2'] REL_CCFLAGS = ['-O2'] ##BF_DEPEND = True From f65c15cd5a269b0a95171e5168dfd6795265cdf6 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 7 Jul 2010 15:26:02 +0000 Subject: [PATCH 362/674] Fix #22772: remove unnecessary -fpascal-strings flag on OS X, only some debug code in webplugin needed it. --- config/darwin-config.py | 6 +++--- source/gameengine/Rasterizer/Makefile | 4 ---- source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile | 4 ---- source/nan_compile.mk | 2 +- 4 files changed, 4 insertions(+), 12 deletions(-) diff --git a/config/darwin-config.py b/config/darwin-config.py index f6d9ca97a19..1423e8fb392 100644 --- a/config/darwin-config.py +++ b/config/darwin-config.py @@ -279,9 +279,9 @@ else: CFLAGS = ['-pipe','-funsigned-char']+ARCH_FLAGS -CPPFLAGS = ['-fpascal-strings']+ARCH_FLAGS -CCFLAGS = ['-pipe','-funsigned-char','-fpascal-strings']+ARCH_FLAGS -CXXFLAGS = ['-pipe','-funsigned-char', '-fpascal-strings']+ARCH_FLAGS +CPPFLAGS = []+ARCH_FLAGS +CCFLAGS = ['-pipe','-funsigned-char']+ARCH_FLAGS +CXXFLAGS = ['-pipe','-funsigned-char']+ARCH_FLAGS if WITH_GHOST_COCOA==True: 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 diff --git a/source/gameengine/Rasterizer/Makefile b/source/gameengine/Rasterizer/Makefile index a12d599b60b..c877e423a71 100644 --- a/source/gameengine/Rasterizer/Makefile +++ b/source/gameengine/Rasterizer/Makefile @@ -49,10 +49,6 @@ CPPFLAGS += -I../Ketsji CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) -ifeq ($(OS),darwin) - CPPFLAGS += -fpascal-strings -endif - ############### SOURCEDIR = source/gameengine/Rasterizer diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile index 0327714dc5f..aedbc2705f0 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile @@ -51,7 +51,3 @@ CPPFLAGS += -I../../SceneGraph CPPFLAGS += -I.. CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -ifeq ($(OS),darwin) - CPPFLAGS += -fpascal-strings -endif - diff --git a/source/nan_compile.mk b/source/nan_compile.mk index 3382f0bea37..36c315a8e11 100644 --- a/source/nan_compile.mk +++ b/source/nan_compile.mk @@ -101,7 +101,7 @@ ifeq ($(OS),darwin) REL_CCFLAGS += -O2 endif - CPPFLAGS += -D_THREAD_SAFE -fpascal-strings + CPPFLAGS += -D_THREAD_SAFE ifeq ($(WITH_COCOA), true) CPPFLAGS += -DGHOST_COCOA From e8be069870b9125e87d533cbb84cf049be5d1442 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 7 Jul 2010 16:17:18 +0000 Subject: [PATCH 363/674] duplicating a sequence strip now duplicates its fcurves --- source/blender/blenkernel/BKE_sequencer.h | 2 + source/blender/blenkernel/intern/sequencer.c | 39 ++++++++++++++++++- .../editors/space_sequencer/sequencer_edit.c | 12 ++++-- .../blender/makesrna/intern/rna_sequencer.c | 9 ++++- 4 files changed, 56 insertions(+), 6 deletions(-) diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index 5c5bf30980c..3b95c25006d 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -187,6 +187,7 @@ void seq_single_fix(struct Sequence *seq); int seq_test_overlap(struct ListBase * seqbasep, struct Sequence *test); struct ListBase *seq_seqbase(struct ListBase *seqbase, struct Sequence *seq); void seq_offset_animdata(struct Scene *scene, struct Sequence *seq, int ofs); +void seq_dupe_animdata(struct Scene *scene, char *name_from, char *name_to); int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test, struct Scene *evil_scene); int shuffle_seq_time(ListBase * seqbasep, struct Scene *evil_scene); int seqbase_isolated_sel_check(struct ListBase *seqbase); @@ -232,6 +233,7 @@ typedef struct SeqLoadInfo { /* seq_dupli' flags */ #define SEQ_DUPE_UNIQUE_NAME 1<<0 #define SEQ_DUPE_CONTEXT 1<<1 +#define SEQ_DUPE_ANIM 1<<2 /* use as an api function */ typedef struct Sequence *(*SeqLoadFunc)(struct bContext *, ListBase *, struct SeqLoadInfo *); diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index cf9e159bafb..2bf328147c8 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -40,6 +40,7 @@ #include "DNA_anim_types.h" #include "DNA_object_types.h" +#include "BKE_animsys.h" #include "BKE_global.h" #include "BKE_image.h" #include "BKE_main.h" @@ -3877,6 +3878,37 @@ void seq_offset_animdata(Scene *scene, Sequence *seq, int ofs) } } +void seq_dupe_animdata(Scene *scene, char *name_from, char *name_to) +{ + char str_from[32]; + char str_to[32]; + FCurve *fcu; + FCurve *fcu_last; + FCurve *fcu_cpy; + ListBase lb= {NULL, NULL}; + + if(scene->adt==NULL || scene->adt->action==NULL) + return; + + sprintf(str_from, "[\"%s\"]", name_from); + sprintf(str_to, "[\"%s\"]", name_to); + + fcu_last= scene->adt->action->curves.last; + + for (fcu= scene->adt->action->curves.first; fcu && fcu->prev != fcu_last; fcu= fcu->next) { + if(strstr(fcu->rna_path, "sequence_editor.sequences_all[") && strstr(fcu->rna_path, str_from)) { + fcu_cpy= copy_fcurve(fcu); + BLI_addtail(&lb, fcu_cpy); + } + } + + /* notice validate is 0, keep this because the seq may not be added to the scene yet */ + BKE_animdata_fix_paths_rename(&scene->id, scene->adt, "sequence_editor.sequences_all", name_from, name_to, 0, 0, 0); + + /* add the original fcurves back */ + addlisttolist(&scene->adt->action->curves, &lb); +} + /* XXX - hackish function needed to remove all fcurves belonging to a sequencer strip */ static void seq_free_animdata(Scene *scene, Sequence *seq) { @@ -4233,8 +4265,13 @@ static Sequence *seq_dupli(struct Scene *scene, Sequence *seq, int dupe_flag) " now...\n"); } - if(dupe_flag & SEQ_DUPE_UNIQUE_NAME) + if(dupe_flag & SEQ_DUPE_UNIQUE_NAME) { seqbase_unique_name_recursive(&scene->ed->seqbase, seqn); + printf("%s %s\n", seqn->name+2, seq->name+2); + } + + if(dupe_flag & SEQ_DUPE_ANIM) + seq_dupe_animdata(scene, seq->name+2, seqn->name+2); return seqn; } diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 1592c2093c4..1983a33dc84 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -792,7 +792,7 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence * seq, int cutframe) if (!skip_dup) { /* Duplicate AFTER the first change */ - seqn = seq_dupli_recursive(scene, seq, SEQ_DUPE_UNIQUE_NAME); + seqn = seq_dupli_recursive(scene, seq, SEQ_DUPE_UNIQUE_NAME | SEQ_DUPE_ANIM); } if (seqn) { @@ -881,7 +881,7 @@ static Sequence *cut_seq_soft(Scene *scene, Sequence * seq, int cutframe) if (!skip_dup) { /* Duplicate AFTER the first change */ - seqn = seq_dupli_recursive(scene, seq, SEQ_DUPE_UNIQUE_NAME); + seqn = seq_dupli_recursive(scene, seq, SEQ_DUPE_UNIQUE_NAME | SEQ_DUPE_ANIM); } if (seqn) { @@ -1598,15 +1598,19 @@ static int sequencer_add_duplicate_exec(bContext *C, wmOperator *op) if(ed==NULL) return OPERATOR_CANCELLED; - seqbase_dupli_recursive(scene, &nseqbase, ed->seqbasep, SEQ_DUPE_UNIQUE_NAME|SEQ_DUPE_CONTEXT); + seqbase_dupli_recursive(scene, &nseqbase, ed->seqbasep, SEQ_DUPE_CONTEXT); if(nseqbase.first) { Sequence * seq= nseqbase.first; /* rely on the nseqbase list being added at the end */ addlisttolist(ed->seqbasep, &nseqbase); - for( ; seq; seq= seq->next) + for( ; seq; seq= seq->next) { + char name[sizeof(seq->name)-2]; + strcpy(name, seq->name+2); seqbase_unique_name_recursive(&ed->seqbase, seq); + seq_dupe_animdata(scene, name, seq->name+2); + } WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index b7bdffa0e13..c8b7299b539 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -30,6 +30,7 @@ #include "rna_internal.h" +#include "DNA_anim_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" #include "DNA_sequence_types.h" @@ -270,6 +271,7 @@ static void rna_Sequence_name_set(PointerRNA *ptr, const char *value) Scene *scene= (Scene*)ptr->id.data; Sequence *seq= (Sequence*)ptr->data; char oldname[sizeof(seq->name)]; + AnimData *adt; /* make a copy of the old name first */ BLI_strncpy(oldname, seq->name+2, sizeof(seq->name)-2); @@ -281,7 +283,12 @@ static void rna_Sequence_name_set(PointerRNA *ptr, const char *value) seqbase_unique_name_recursive(&scene->ed->seqbase, seq); /* fix all the animation data which may link to this */ - BKE_all_animdata_fix_paths_rename("sequence_editor.sequences_all", oldname, seq->name+2); + + /* dont rename everywhere because these are per scene */ + /* BKE_all_animdata_fix_paths_rename("sequence_editor.sequences_all", oldname, seq->name+2); */ + adt= BKE_animdata_from_id(&scene->id); + if(adt) + BKE_animdata_fix_paths_rename(&scene->id, adt, "sequence_editor.sequences_all", oldname, seq->name+2, 0, 0, 1); } static StructRNA* rna_Sequence_refine(struct PointerRNA *ptr) From 9ab34c36edbb3fc12ff86f95e502bab9d722b11a Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 7 Jul 2010 16:23:38 +0000 Subject: [PATCH 364/674] Fix #22776: merge and remove doubles don't recalculate normals. --- source/blender/editors/mesh/editmesh_tools.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index 1f112ec1105..681e14dd693 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -485,8 +485,12 @@ static int removedoublesflag_exec(bContext *C, wmOperator *op) int count = removedoublesflag(em,1,0,RNA_float_get(op->ptr, "limit")); - if(count) - BKE_reportf(op->reports, RPT_INFO, "Removed %d vertices", count); + if(!count) + return OPERATOR_CANCELLED; + + recalc_editnormals(em); + + BKE_reportf(op->reports, RPT_INFO, "Removed %d vertices", count); DAG_id_flush_update(obedit->data, OB_RECALC_DATA); WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); @@ -5860,6 +5864,7 @@ static int merge_exec(bContext *C, wmOperator *op) if(!count) return OPERATOR_CANCELLED; + recalc_editnormals(em); BKE_reportf(op->reports, RPT_INFO, "Removed %d vert%s.", count, (count==1)?"ex":"ices"); @@ -7116,7 +7121,7 @@ static int sort_faces_exec(bContext *C, wmOperator *op) { RegionView3D *rv3d= ED_view3d_context_rv3d(C); View3D *v3d= CTX_wm_view3d(C); - Object *ob= CTX_data_active_object(C); + Object *ob= CTX_data_edit_object(C); Scene *scene= CTX_data_scene(C); Mesh *me; CustomDataLayer *layer; @@ -7125,9 +7130,7 @@ static int sort_faces_exec(bContext *C, wmOperator *op) float reverse = 1; // XXX int ctrl= 0; - if(!ob) return OPERATOR_FINISHED; - if(ob->type!=OB_MESH) return OPERATOR_FINISHED; - if (!v3d) return OPERATOR_FINISHED; + if (!v3d) return OPERATOR_CANCELLED; /* This operator work in Object Mode, not in edit mode. * After talk with Cambell we agree that there is no point to port this to EditMesh right now. @@ -7227,6 +7230,8 @@ static int sort_faces_exec(bContext *C, wmOperator *op) /* Return to editmode. */ ED_object_enter_editmode(C, 0); + + return OPERATOR_FINISHED; } void MESH_OT_sort_faces(wmOperatorType *ot) From 6debe0fcf6ac0978162808621f7fa29e104f833b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 7 Jul 2010 16:37:41 +0000 Subject: [PATCH 365/674] fix for duplicating metastrips, unique names and animation data. --- source/blender/blenkernel/intern/sequencer.c | 6 +----- .../editors/space_sequencer/sequencer_edit.c | 20 +++++++++++++------ 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 2bf328147c8..cfe2a6bb207 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -3881,7 +3881,6 @@ void seq_offset_animdata(Scene *scene, Sequence *seq, int ofs) void seq_dupe_animdata(Scene *scene, char *name_from, char *name_to) { char str_from[32]; - char str_to[32]; FCurve *fcu; FCurve *fcu_last; FCurve *fcu_cpy; @@ -3891,7 +3890,6 @@ void seq_dupe_animdata(Scene *scene, char *name_from, char *name_to) return; sprintf(str_from, "[\"%s\"]", name_from); - sprintf(str_to, "[\"%s\"]", name_to); fcu_last= scene->adt->action->curves.last; @@ -4265,10 +4263,8 @@ static Sequence *seq_dupli(struct Scene *scene, Sequence *seq, int dupe_flag) " now...\n"); } - if(dupe_flag & SEQ_DUPE_UNIQUE_NAME) { + if(dupe_flag & SEQ_DUPE_UNIQUE_NAME) seqbase_unique_name_recursive(&scene->ed->seqbase, seqn); - printf("%s %s\n", seqn->name+2, seq->name+2); - } if(dupe_flag & SEQ_DUPE_ANIM) seq_dupe_animdata(scene, seq->name+2, seqn->name+2); diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 1983a33dc84..75774043c68 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -1588,6 +1588,18 @@ void SEQUENCER_OT_cut(struct wmOperatorType *ot) } /* duplicate operator */ +static int apply_unique_name_cb(Sequence *seq, void *arg_pt) +{ + Scene *scene= (Scene *)arg_pt; + char name[sizeof(seq->name)-2]; + + strcpy(name, seq->name+2); + seqbase_unique_name_recursive(&scene->ed->seqbase, seq); + seq_dupe_animdata(scene, name, seq->name+2); + return 1; + +} + static int sequencer_add_duplicate_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); @@ -1605,12 +1617,8 @@ static int sequencer_add_duplicate_exec(bContext *C, wmOperator *op) /* rely on the nseqbase list being added at the end */ addlisttolist(ed->seqbasep, &nseqbase); - for( ; seq; seq= seq->next) { - char name[sizeof(seq->name)-2]; - strcpy(name, seq->name+2); - seqbase_unique_name_recursive(&ed->seqbase, seq); - seq_dupe_animdata(scene, name, seq->name+2); - } + for( ; seq; seq= seq->next) + seq_recursive_apply(seq, apply_unique_name_cb, scene); WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; From 1ff98fb454477dafa88a5499ad97511e571ce17a Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 7 Jul 2010 17:08:20 +0000 Subject: [PATCH 366/674] Fix #21540: depsgraph problem on load, meshes on non-visible layers were not created when objects on visible layers depended on them, now it uses the flushed layer to determine if the object data should be recalculated. --- source/blender/blenkernel/intern/depsgraph.c | 45 ++++++++++++++------ 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index 0dbdd802ff6..1a1ca8a8d3e 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -1877,26 +1877,19 @@ static void flush_pointcache_reset(Scene *scene, DagNode *node, int curtime, int } } -/* flushes all recalc flags in objects down the dependency tree */ -void DAG_scene_flush_update(Scene *sce, unsigned int lay, int time) +/* flush layer flags to dependencies */ +static void dag_scene_flush_layers(Scene *sce, int lay) { - DagNode *firstnode, *node; + DagNode *node, *firstnode; DagAdjList *itA; - Object *ob; Base *base; int lasttime; - - if(sce->theDag==NULL) { - printf("DAG zero... not allowed to happen!\n"); - DAG_scene_sort(sce); - } - + firstnode= sce->theDag->DagNode.first; // always scene node for(itA = firstnode->child; itA; itA= itA->next) itA->lay= 0; - - /* first we flush the layer flags */ + sce->theDag->time++; // so we know which nodes were accessed lasttime= sce->theDag->time; @@ -1930,7 +1923,26 @@ void DAG_scene_flush_update(Scene *sce, unsigned int lay, int time) for(itA = firstnode->child; itA; itA= itA->next) if(itA->node->lasttime!=lasttime && itA->node->type==ID_OB) flush_layer_node(sce, itA->node, lasttime); +} + +/* flushes all recalc flags in objects down the dependency tree */ +void DAG_scene_flush_update(Scene *sce, unsigned int lay, int time) +{ + DagNode *firstnode; + DagAdjList *itA; + Object *ob; + int lasttime; + if(sce->theDag==NULL) { + printf("DAG zero... not allowed to happen!\n"); + DAG_scene_sort(sce); + } + + firstnode= sce->theDag->DagNode.first; // always scene node + + /* first we flush the layer flags */ + dag_scene_flush_layers(sce, lay); + /* then we use the relationships + layer info to flush update events */ sce->theDag->time++; // so we know which nodes were accessed lasttime= sce->theDag->time; @@ -2231,7 +2243,8 @@ void DAG_on_load_update(void) Object *ob; Group *group; GroupObject *go; - unsigned int lay; + DagNode *node; + unsigned int lay, oblay; dag_current_scene_layers(bmain, &scene, &lay); @@ -2240,10 +2253,14 @@ void DAG_on_load_update(void) remade, tag them so they get remade in the scene update loop, note armature poses or object matrices are preserved and do not require updates, so we skip those */ + dag_scene_flush_layers(scene, lay); + for(SETLOOPER(scene, base)) { ob= base->object; + node= (sce->theDag)? dag_get_node(sce->theDag, ob): NULL; + oblay= (node)? node->lay: ob->lay; - if(base->lay & lay) { + if(oblay & lay) { if(ELEM5(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL)) ob->recalc |= OB_RECALC_DATA; if(ob->dup_group) From 6e60e5772330f258ec545d5e00db9b6b5dd8993f Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Wed, 7 Jul 2010 17:32:50 +0000 Subject: [PATCH 367/674] Fix for bug #22763, Blender 2.52 Crashes with the default scene when in weight paint mode clicking the Levels option * Add a `return 0' to ED_vgroup_give_parray to avoid falling through from mesh to lattice --- source/blender/editors/object/object_vgroup.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c index 2235bdd8f2a..ff48e7e349a 100644 --- a/source/blender/editors/object/object_vgroup.c +++ b/source/blender/editors/object/object_vgroup.c @@ -166,6 +166,8 @@ int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_tot) return 1; } + else + return 0; } case ID_LT: { From 356a8697f2999c5372f3fba140a65b4459813a48 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Wed, 7 Jul 2010 18:39:08 +0000 Subject: [PATCH 368/674] Nodes: * Tooltips for the Blur Node --- source/blender/makesrna/intern/rna_nodetree.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index cc135ff124f..e5bfc1c6aad 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -865,7 +865,7 @@ static void def_cmp_blur(StructRNA *srna) prop = RNA_def_property(srna, "relative", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "relative", 1); - RNA_def_property_ui_text(prop, "Relative", ""); + RNA_def_property_ui_text(prop, "Relative", "Use relative (percent) values to define blur radius"); RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE); @@ -894,12 +894,12 @@ static void def_cmp_blur(StructRNA *srna) prop = RNA_def_property(srna, "bokeh", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "bokeh", 1); - RNA_def_property_ui_text(prop, "Bokeh", ""); + RNA_def_property_ui_text(prop, "Bokeh", "Uses circular filter (slower)"); RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); prop = RNA_def_property(srna, "gamma", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "gamma", 1); - RNA_def_property_ui_text(prop, "Gamma", ""); + RNA_def_property_ui_text(prop, "Gamma", "Applies filter on gamma corrected values"); RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); } From c689e46ff306790e3c9953792b91c12b42000d23 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 7 Jul 2010 18:47:49 +0000 Subject: [PATCH 369/674] Fix #22340: sintel appears in seemingly random poses on load. Pose proxy synchronization happened after drivers were already evaluated, now moved to start of object_handle_update. --- source/blender/blenkernel/intern/object.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 1b8405a91de..78ec473ef93 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -2479,6 +2479,17 @@ void object_handle_update(Scene *scene, Object *ob) if(ob->pose) make_pose_channels_hash(ob->pose); + if(ob->recalc & OB_RECALC_DATA) { + if(ob->type==OB_ARMATURE) { + /* this happens for reading old files and to match library armatures + with poses we do it ahead of where_is_object to ensure animation + is evaluated on the rebuilt pose, otherwise we get incorrect poses + on file load */ + if(ob->pose==NULL || (ob->pose->flag & POSE_RECALC)) + armature_rebuild_pose(ob, ob->data); + } + } + /* XXX new animsys warning: depsgraph tag OB_RECALC_DATA should not skip drivers, which is only in where_is_object now */ // XXX: should this case be OB_RECALC_OB instead? @@ -2541,11 +2552,6 @@ void object_handle_update(Scene *scene, Object *ob) lattice_calc_modifiers(scene, ob); } else if(ob->type==OB_ARMATURE) { - /* this happens for reading old files and to match library armatures with poses */ - // XXX this won't screw up the pose set already... - if(ob->pose==NULL || (ob->pose->flag & POSE_RECALC)) - armature_rebuild_pose(ob, ob->data); - /* evaluate drivers */ BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS); From a797e81e312146b198be5b4a1a7144ed4dd7ae30 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Thu, 8 Jul 2010 06:16:08 +0000 Subject: [PATCH 370/674] === Windows installer === * cleanup link section for Start Menu --- release/windows/installer/00.sconsblender.nsi | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/release/windows/installer/00.sconsblender.nsi b/release/windows/installer/00.sconsblender.nsi index 3e165498248..89255ced981 100644 --- a/release/windows/installer/00.sconsblender.nsi +++ b/release/windows/installer/00.sconsblender.nsi @@ -168,10 +168,9 @@ Section "Add Start Menu shortcuts" Section2 CreateDirectory "$SMPROGRAMS\Blender Foundation\Blender\" CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Blender.lnk" "$INSTDIR\Blender.exe" "" "$INSTDIR\blender.exe" 0 - CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Readme.lnk" "$INSTDIR\Blender.html" "" "" 0 + CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Readme.lnk" "$INSTDIR\readme.html" "" "" 0 CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Copyright.lnk" "$INSTDIR\Copyright.txt" "" "$INSTDIR\copyright.txt" 0 CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\GPL-license.lnk" "$INSTDIR\GPL-license.txt" "" "$INSTDIR\GPL-license.txt" 0 - CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Help.lnk" "$INSTDIR\Help.url" SectionEnd Section "Add Desktop Blender-[VERSION] shortcut" Section3 From 779368fd4524d35e9b1802a0e720ced3df059ada Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Thu, 8 Jul 2010 06:49:08 +0000 Subject: [PATCH 371/674] Logic UI: fix for #Motion Actuator Dynamic options not showing for Soft Body and Rigid Body (reported by Mal Duffin (malCanDo) over email) Originally (2.49) we were testing for ob->game_flag to see if the object is dynamic. That could work here (it would require a new rna prop for the object (a read-only is_dynamic) or similar. However using ob.game.physics_type is more explicit, therefore may be more interesting. I have no strong opinions on that... --- .../editors/space_logic/logic_window.c | 47 ++++++++++--------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index 26b4b6fc08c..9f6fafb1053 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -3966,9 +3966,11 @@ static void draw_actuator_motion(uiLayout *layout, PointerRNA *ptr) Object *ob; PointerRNA settings_ptr; uiLayout *split, *row, *col, *subcol; + int physics_type; ob = (Object *)ptr->id.data; RNA_pointer_create((ID *)ob, &RNA_GameObjectSettings, ob, &settings_ptr); + physics_type = RNA_enum_get(&settings_ptr, "physics_type"); uiItemR(layout, ptr, "mode", 0, NULL, 0); @@ -3984,33 +3986,32 @@ static void draw_actuator_motion(uiLayout *layout, PointerRNA *ptr) uiItemR(row, ptr, "rot", 0, NULL, 0); uiItemR(split, ptr, "local_rotation", UI_ITEM_R_TOGGLE, NULL, 0); - if (RNA_enum_get(&settings_ptr, "physics_type") != OB_BODY_TYPE_DYNAMIC) - break; - - uiItemL(layout, "Dynamic Object Settings:", 0); - split = uiLayoutSplit(layout, 0.9, 0); - row = uiLayoutRow(split, 0); - uiItemR(row, ptr, "force", 0, NULL, 0); - uiItemR(split, ptr, "local_force", UI_ITEM_R_TOGGLE, NULL, 0); + if (ELEM3(physics_type, OB_BODY_TYPE_DYNAMIC, OB_BODY_TYPE_RIGID, OB_BODY_TYPE_SOFT)) { + uiItemL(layout, "Dynamic Object Settings:", 0); + split = uiLayoutSplit(layout, 0.9, 0); + row = uiLayoutRow(split, 0); + uiItemR(row, ptr, "force", 0, NULL, 0); + uiItemR(split, ptr, "local_force", UI_ITEM_R_TOGGLE, NULL, 0); - split = uiLayoutSplit(layout, 0.9, 0); - row = uiLayoutRow(split, 0); - uiItemR(row, ptr, "torque", 0, NULL, 0); - uiItemR(split, ptr, "local_torque", UI_ITEM_R_TOGGLE, NULL, 0); + split = uiLayoutSplit(layout, 0.9, 0); + row = uiLayoutRow(split, 0); + uiItemR(row, ptr, "torque", 0, NULL, 0); + uiItemR(split, ptr, "local_torque", UI_ITEM_R_TOGGLE, NULL, 0); - split = uiLayoutSplit(layout, 0.9, 0); - row = uiLayoutRow(split, 0); - uiItemR(row, ptr, "linear_velocity", 0, NULL, 0); - row = uiLayoutRow(split, 1); - uiItemR(row, ptr, "local_linear_velocity", UI_ITEM_R_TOGGLE, NULL, 0); - uiItemR(row, ptr, "add_linear_velocity", UI_ITEM_R_TOGGLE, NULL, 0); + split = uiLayoutSplit(layout, 0.9, 0); + row = uiLayoutRow(split, 0); + uiItemR(row, ptr, "linear_velocity", 0, NULL, 0); + row = uiLayoutRow(split, 1); + uiItemR(row, ptr, "local_linear_velocity", UI_ITEM_R_TOGGLE, NULL, 0); + uiItemR(row, ptr, "add_linear_velocity", UI_ITEM_R_TOGGLE, NULL, 0); - split = uiLayoutSplit(layout, 0.9, 0); - row = uiLayoutRow(split, 0); - uiItemR(row, ptr, "angular_velocity", 0, NULL, 0); - uiItemR(split, ptr, "local_angular_velocity", UI_ITEM_R_TOGGLE, NULL, 0); + split = uiLayoutSplit(layout, 0.9, 0); + row = uiLayoutRow(split, 0); + uiItemR(row, ptr, "angular_velocity", 0, NULL, 0); + uiItemR(split, ptr, "local_angular_velocity", UI_ITEM_R_TOGGLE, NULL, 0); - uiItemR(layout, ptr, "damping", 0, NULL, 0); + uiItemR(layout, ptr, "damping", 0, NULL, 0); + } break; case ACT_OBJECT_SERVO: uiItemR(layout, ptr, "reference_object", 0, NULL, 0); From ff51a96d58f423a686cc9b195f0bf2361625fb1a Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Thu, 8 Jul 2010 09:25:18 +0000 Subject: [PATCH 372/674] Logic UI: small commit - set visible flag for sensor and actuator (so it works with the move logic bricks operator to be committed) --- source/blender/editors/space_logic/logic_window.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index 9f6fafb1053..5bc34183224 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -4564,6 +4564,9 @@ static void logic_buttons_new(bContext *C, ARegion *ar) { // gotta check if the current state is visible or not uiLayout *split, *col; + /* make as visible, for move operator */ + sens->flag |= SENS_VISIBLE; + split = uiLayoutSplit(layout, 0.95, 0); col = uiLayoutColumn(split, 1); uiLayoutSetContextPointer(col, "sensor", &ptr); @@ -4627,6 +4630,9 @@ static void logic_buttons_new(bContext *C, ARegion *ar) { // gotta check if the current state is visible or not uiLayout *split, *col; + /* make as visible, for move operator */ + act->flag |= ACT_VISIBLE; + split = uiLayoutSplit(layout, 0.05, 0); /* put inlink button to the left */ From b511fbea6d3e0185f8ba39405bc9f71dab7a5f20 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 8 Jul 2010 10:03:29 +0000 Subject: [PATCH 373/674] Sequencer display overlay option, this can show a border area from another time to help compare for color grading. - Okey sets the border in the display. - Okey resets the frame offset in the sequencer timeline. - ghost icon in the header can enable/disable. - frame offset can be relative or absolute (lock icon) Not very happy that this commit adds a call to BKE_animsys_evaluate_animdata(scene, ...) in do_build_seq_array_recursively() without this the offset frames dont have fcurves applied. Though we will need something like this for prefetch frames to work too. --- release/scripts/ui/space_sequencer.py | 12 ++++ source/blender/blenkernel/intern/sequencer.c | 4 ++ .../editors/space_sequencer/sequencer_draw.c | 52 +++++++++++--- .../editors/space_sequencer/sequencer_edit.c | 68 +++++++++++++++++++ .../space_sequencer/sequencer_intern.h | 4 +- .../editors/space_sequencer/sequencer_ops.c | 7 ++ .../editors/space_sequencer/space_sequencer.c | 16 ++++- source/blender/makesdna/DNA_sequence_types.h | 8 +++ .../blender/makesrna/intern/rna_sequencer.c | 65 ++++++++++++++++++ .../windowmanager/intern/wm_operators.c | 1 + 10 files changed, 224 insertions(+), 13 deletions(-) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index c1b042f0718..5f014f639e1 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -69,6 +69,14 @@ class SEQUENCER_HT_header(bpy.types.Header): else: layout.prop(st, "display_channel", text="Channel") + ed = context.scene.sequence_editor + if ed: + row = layout.row(align=True) + row.prop(ed, "show_overlay", text="", icon='GHOST_ENABLED') + if ed.show_overlay: + row.prop(ed, "overlay_frame", text="") + row.prop(ed, "overlay_lock", text="", icon='LOCKED') + class SEQUENCER_MT_view_toggle(bpy.types.Menu): bl_label = "View Type" @@ -126,6 +134,10 @@ class SEQUENCER_MT_view(bpy.types.Menu): layout.operator_context = 'INVOKE_REGION_PREVIEW' layout.operator("sequencer.view_all_preview", text='Fit preview in window') layout.operator_context = 'INVOKE_DEFAULT' + + # # XXX, invokes in the header view + # layout.operator("sequencer.view_ghost_border", text='Overlay Border') + layout.operator("sequencer.view_selected") layout.prop(st, "draw_frames") diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index cfe2a6bb207..82ed85a1983 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -2544,6 +2544,10 @@ static TStripElem* do_build_seq_array_recursively( int i; TStripElem* se = 0; + // XXX for prefetch and overlay offset!..., very bad!!! + AnimData *adt= BKE_animdata_from_id(&scene->id); + BKE_animsys_evaluate_animdata(&scene->id, adt, cfra, ADT_RECALC_ANIM); + count = get_shown_sequences(seqbasep, cfra, chanshown, (Sequence **)&seq_arr); diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index 1e5735006ab..30f0f84c092 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -690,7 +690,7 @@ void set_special_seq_update(int val) else special_seq_update= 0; } -void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq) +void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq, int cfra, int frame_ofs) { extern void gl_round_box(int mode, float minx, float miny, float maxx, float maxy, float rad); struct ImBuf *ibuf; @@ -726,9 +726,11 @@ void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq viewrecty /= proxy_size / 100.0; } - /* XXX TODO: take color from theme */ - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); + if(frame_ofs == 0) { + /* XXX TODO: take color from theme */ + glClearColor(0.0, 0.0, 0.0, 0.0); + glClear(GL_COLOR_BUFFER_BIT); + } /* without this colors can flicker from previous opengl state */ glColor4ub(255, 255, 255, 255); @@ -746,13 +748,13 @@ void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq else { recursive= 1; if (special_seq_update) { - ibuf= give_ibuf_seq_direct(scene, rectx, recty, (scene->r.cfra), proxy_size, special_seq_update); + ibuf= give_ibuf_seq_direct(scene, rectx, recty, cfra + frame_ofs, proxy_size, special_seq_update); } else if (!U.prefetchframes) { // XXX || (G.f & G_PLAYANIM) == 0) { - ibuf= (ImBuf *)give_ibuf_seq(scene, rectx, recty, (scene->r.cfra), sseq->chanshown, proxy_size); + ibuf= (ImBuf *)give_ibuf_seq(scene, rectx, recty, cfra + frame_ofs, sseq->chanshown, proxy_size); } else { - ibuf= (ImBuf *)give_ibuf_seq_threaded(scene, rectx, recty, (scene->r.cfra), sseq->chanshown, proxy_size); + ibuf= (ImBuf *)give_ibuf_seq_threaded(scene, rectx, recty, cfra + frame_ofs, sseq->chanshown, proxy_size); } recursive= 0; @@ -812,11 +814,26 @@ void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, ibuf->x, ibuf->y, 0, GL_RGBA, GL_UNSIGNED_BYTE, ibuf->rect); - glBegin(GL_QUADS); - glTexCoord2f(0.0f, 0.0f); glVertex2f(v2d->tot.xmin, v2d->tot.ymin); - glTexCoord2f(0.0f, 1.0f);glVertex2f(v2d->tot.xmin, v2d->tot.ymax); + glBegin(GL_QUADS); + + if(frame_ofs) { + rctf tot_clip; + tot_clip.xmin= v2d->tot.xmin + (ABS(v2d->tot.xmax - v2d->tot.xmin) * scene->ed->over_border.xmin); + tot_clip.ymin= v2d->tot.ymin + (ABS(v2d->tot.ymax - v2d->tot.ymin) * scene->ed->over_border.ymin); + tot_clip.xmax= v2d->tot.xmin + (ABS(v2d->tot.xmax - v2d->tot.xmin) * scene->ed->over_border.xmax); + tot_clip.ymax= v2d->tot.ymin + (ABS(v2d->tot.ymax - v2d->tot.ymin) * scene->ed->over_border.ymax); + + glTexCoord2f(scene->ed->over_border.xmin, scene->ed->over_border.ymin);glVertex2f(tot_clip.xmin, tot_clip.ymin); + glTexCoord2f(scene->ed->over_border.xmin, scene->ed->over_border.ymax);glVertex2f(tot_clip.xmin, tot_clip.ymax); + glTexCoord2f(scene->ed->over_border.xmax, scene->ed->over_border.ymax);glVertex2f(tot_clip.xmax, tot_clip.ymax); + glTexCoord2f(scene->ed->over_border.xmax, scene->ed->over_border.ymin);glVertex2f(tot_clip.xmax, tot_clip.ymin); + } + else { + glTexCoord2f(0.0f, 0.0f);glVertex2f(v2d->tot.xmin, v2d->tot.ymin); + glTexCoord2f(0.0f, 1.0f);glVertex2f(v2d->tot.xmin, v2d->tot.ymax); glTexCoord2f(1.0f, 1.0f);glVertex2f(v2d->tot.xmax, v2d->tot.ymax); - glTexCoord2f(1.0f, 0.0f);glVertex2f(v2d->tot.xmax, v2d->tot.ymin); + glTexCoord2f(1.0f, 0.0f);glVertex2f(v2d->tot.xmax, v2d->tot.ymin); + } glEnd( ); glBindTexture(GL_TEXTURE_2D, last_texid); glDisable(GL_TEXTURE_2D); @@ -1056,6 +1073,19 @@ void draw_timeline_seq(const bContext *C, ARegion *ar) /* preview range */ UI_view2d_view_ortho(C, v2d); ANIM_draw_previewrange(C, v2d); + + /* overlap playhead */ + if(scene->ed && scene->ed->over_flag & SEQ_EDIT_OVERLAY_SHOW) { + int cfra_over= (scene->ed->over_flag & SEQ_EDIT_OVERLAY_ABS) ? scene->ed->over_cfra : scene->r.cfra + scene->ed->over_ofs; + glColor3f(0.2, 0.2, 0.2); + // glRectf(cfra_over, v2d->cur.ymin, scene->ed->over_ofs + scene->r.cfra + 1, v2d->cur.ymax); + + glBegin(GL_LINES); + glVertex2f(cfra_over, v2d->cur.ymin); + glVertex2f(cfra_over, v2d->cur.ymax); + glEnd(); + + } /* reset view matrix */ UI_view2d_view_restore(C); diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 75774043c68..19b8e9d7a79 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -1117,6 +1117,15 @@ int sequencer_edit_poll(bContext *C) return (seq_give_editing(CTX_data_scene(C), FALSE) != NULL); } +int sequencer_view_poll(bContext *C) +{ + SpaceSeq *sseq= CTX_wm_space_seq(C); + Editing *ed= seq_give_editing(CTX_data_scene(C), FALSE); + if (ed && sseq && (sseq->mainb == SEQ_DRAW_IMG_IMBUF)) + return 1; + + return 0; +} /* snap operator*/ static int sequencer_snap_exec(bContext *C, wmOperator *op) @@ -2723,3 +2732,62 @@ void SEQUENCER_OT_swap_data(wmOperatorType *ot) /* properties */ } +/* borderselect operator */ +static int view_ghost_border_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Editing *ed= seq_give_editing(scene, FALSE); + View2D *v2d= UI_view2d_fromcontext(C); + + rctf rect; + + /* convert coordinates of rect to 'tot' rect coordinates */ + UI_view2d_region_to_view(v2d, RNA_int_get(op->ptr, "xmin"), RNA_int_get(op->ptr, "ymin"), &rect.xmin, &rect.ymin); + UI_view2d_region_to_view(v2d, RNA_int_get(op->ptr, "xmax"), RNA_int_get(op->ptr, "ymax"), &rect.xmax, &rect.ymax); + + if(ed==NULL) + return OPERATOR_CANCELLED; + + rect.xmin /= (float)(ABS(v2d->tot.xmax - v2d->tot.xmin)); + rect.ymin /= (float)(ABS(v2d->tot.ymax - v2d->tot.ymin)); + + rect.xmax /= (float)(ABS(v2d->tot.xmax - v2d->tot.xmin)); + rect.ymax /= (float)(ABS(v2d->tot.ymax - v2d->tot.ymin)); + + rect.xmin+=0.5; + rect.xmax+=0.5; + rect.ymin+=0.5; + rect.ymax+=0.5; + + CLAMP(rect.xmin, 0.0f, 1.0f); + CLAMP(rect.ymin, 0.0f, 1.0f); + CLAMP(rect.xmax, 0.0f, 1.0f); + CLAMP(rect.ymax, 0.0f, 1.0f); + + scene->ed->over_border= rect; + + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); + + return OPERATOR_FINISHED; +} + +/* ****** Border Select ****** */ +void SEQUENCER_OT_view_ghost_border(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Border Offset View"; + ot->idname= "SEQUENCER_OT_view_ghost_border"; + ot->description="Enable border select mode"; + + /* api callbacks */ + ot->invoke= WM_border_select_invoke; + ot->exec= view_ghost_border_exec; + ot->modal= WM_border_select_modal; + ot->poll= sequencer_view_poll; + + /* flags */ + ot->flag= 0; + + /* rna */ + WM_operator_properties_gesture_border(ot, FALSE); +} diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h index df426e91075..bf0dfff8e98 100644 --- a/source/blender/editors/space_sequencer/sequencer_intern.h +++ b/source/blender/editors/space_sequencer/sequencer_intern.h @@ -48,7 +48,7 @@ struct ARegion *sequencer_has_buttons_region(struct ScrArea *sa); /* sequencer_draw.c */ void draw_timeline_seq(const struct bContext *C, struct ARegion *ar); -void draw_image_seq(const struct bContext* C, struct Scene *scene,struct ARegion *ar, struct SpaceSeq *sseq); +void draw_image_seq(const struct bContext* C, struct Scene *scene,struct ARegion *ar, struct SpaceSeq *sseq, int cfra, int offset); void seq_reset_imageofs(struct SpaceSeq *sseq); @@ -69,6 +69,7 @@ struct Sequence *alloc_sequence(struct ListBase *lb, int cfra, int machine); /* operator helpers */ int sequencer_edit_poll(struct bContext *C); +int sequencer_view_poll(struct bContext *C); /* externs */ extern EnumPropertyItem sequencer_prop_effect_types[]; @@ -103,6 +104,7 @@ void SEQUENCER_OT_view_toggle(struct wmOperatorType *ot); void SEQUENCER_OT_view_all(struct wmOperatorType *ot); void SEQUENCER_OT_view_selected(struct wmOperatorType *ot); void SEQUENCER_OT_view_zoom_ratio(struct wmOperatorType *ot); +void SEQUENCER_OT_view_ghost_border(struct wmOperatorType *ot); void SEQUENCER_OT_copy(struct wmOperatorType *ot); void SEQUENCER_OT_paste(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c index 9f5a97d4446..430553890d7 100644 --- a/source/blender/editors/space_sequencer/sequencer_ops.c +++ b/source/blender/editors/space_sequencer/sequencer_ops.c @@ -82,6 +82,7 @@ void sequencer_operatortypes(void) WM_operatortype_append(SEQUENCER_OT_view_all_preview); WM_operatortype_append(SEQUENCER_OT_view_toggle); WM_operatortype_append(SEQUENCER_OT_view_zoom_ratio); + WM_operatortype_append(SEQUENCER_OT_view_ghost_border); /* sequencer_select.c */ WM_operatortype_append(SEQUENCER_OT_select_all_toggle); @@ -223,6 +224,10 @@ void sequencer_keymap(wmKeyConfig *keyconf) WM_keymap_add_menu(keymap, "SEQUENCER_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0); + kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", OKEY, KM_PRESS, 0, 0); + RNA_string_set(kmi->ptr, "data_path", "scene.sequence_editor.overlay_frame"); + RNA_int_set(kmi->ptr, "value", 0); + transform_keymap_for_space(keyconf, keymap, SPACE_SEQ); keymap= WM_keymap_find(keyconf, "SequencerPreview", SPACE_SEQ, 0); @@ -232,6 +237,8 @@ void sequencer_keymap(wmKeyConfig *keyconf) keymap= WM_keymap_find(keyconf, "SequencerPreview", SPACE_SEQ, 0); + WM_keymap_add_item(keymap, "SEQUENCER_OT_view_ghost_border", OKEY, KM_PRESS, 0, 0); + /* would prefer to use numpad keys for job */ RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD8, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 8.0f); RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD4, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 4.0f); diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c index 8b7670a55bc..586b76268e4 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.c +++ b/source/blender/editors/space_sequencer/space_sequencer.c @@ -396,7 +396,21 @@ static void sequencer_preview_area_draw(const bContext *C, ARegion *ar) /* XXX temp fix for wrong setting in sseq->mainb */ if (sseq->mainb == SEQ_DRAW_SEQUENCE) sseq->mainb = SEQ_DRAW_IMG_IMBUF; - draw_image_seq(C, scene, ar, sseq); + + draw_image_seq(C, scene, ar, sseq, scene->r.cfra, 0); + + if(scene->ed && scene->ed->over_flag & SEQ_EDIT_OVERLAY_SHOW && sseq->mainb == SEQ_DRAW_IMG_IMBUF) { + int over_cfra; + + if(scene->ed->over_flag & SEQ_EDIT_OVERLAY_ABS) + over_cfra= scene->ed->over_cfra; + else + over_cfra= scene->r.cfra + scene->ed->over_ofs; + + if(over_cfra != scene->r.cfra) + draw_image_seq(C, scene, ar, sseq, scene->r.cfra, over_cfra - scene->r.cfra); + } + } static void sequencer_preview_area_listener(ARegion *ar, wmNotifier *wmn) diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h index f5ca32c6b32..3ab7cb73d56 100644 --- a/source/blender/makesdna/DNA_sequence_types.h +++ b/source/blender/makesdna/DNA_sequence_types.h @@ -196,6 +196,10 @@ typedef struct Editing { Sequence *act_seq; char act_imagedir[256]; char act_sounddir[256]; + + int over_ofs, over_cfra; + int over_flag, pad; + rctf over_border; } Editing; /* ************* Effect Variable Structs ********* */ @@ -242,6 +246,10 @@ typedef struct SpeedControlVars { int lastValidFrame; } SpeedControlVars; +/* Editor->over_flag */ +#define SEQ_EDIT_OVERLAY_SHOW 1 +#define SEQ_EDIT_OVERLAY_ABS 2 + #define SEQ_STRIP_OFSBOTTOM 0.2f #define SEQ_STRIP_OFSTOP 0.8f diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index c8b7299b539..0c60f04c2c2 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -521,6 +521,55 @@ static char *rna_SequenceColorBalance_path(PointerRNA *ptr) return BLI_strdup(""); } +static void rna_SequenceEditor_overlay_lock_set(PointerRNA *ptr, int value) +{ + Scene *scene= ptr->id.data; + Editing *ed= seq_give_editing(scene, FALSE); + + if(ed==NULL) + return; + + /* convert from abs to relative and back */ + if((ed->over_flag & SEQ_EDIT_OVERLAY_ABS)==0 && value) { + ed->over_cfra= scene->r.cfra + ed->over_ofs; + ed->over_flag |= SEQ_EDIT_OVERLAY_ABS; + } + else if((ed->over_flag & SEQ_EDIT_OVERLAY_ABS) && !value) { + ed->over_ofs= ed->over_cfra - scene->r.cfra; + ed->over_flag &= ~SEQ_EDIT_OVERLAY_ABS; + } +} + +static int rna_SequenceEditor_overlay_frame_get(PointerRNA *ptr) +{ + Scene *scene= (Scene *)ptr->id.data; + Editing *ed= seq_give_editing(scene, FALSE); + + if(ed==NULL) + return scene->r.cfra; + + if(ed->over_flag & SEQ_EDIT_OVERLAY_ABS) + return ed->over_cfra - scene->r.cfra; + else + return ed->over_ofs; + +} + +static void rna_SequenceEditor_overlay_frame_set(PointerRNA *ptr, int value) +{ + Scene *scene= (Scene *)ptr->id.data; + Editing *ed= seq_give_editing(scene, FALSE); + + if(ed==NULL) + return; + + + if(ed->over_flag & SEQ_EDIT_OVERLAY_ABS) + ed->over_cfra= (scene->r.cfra + value); + else + ed->over_ofs= value; +} + #else static void rna_def_strip_element(BlenderRNA *brna) @@ -887,6 +936,22 @@ static void rna_def_editor(BlenderRNA *brna) RNA_def_property_pointer_sdna(prop, NULL, "act_seq"); RNA_def_property_flag(prop, PROP_EDITABLE); + prop= RNA_def_property(srna, "show_overlay", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "over_flag", SEQ_EDIT_OVERLAY_SHOW); + RNA_def_property_ui_text(prop, "Draw Axes", "Partial overlay ontop of the sequencer"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL); + + prop= RNA_def_property(srna, "overlay_lock", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "over_flag", SEQ_EDIT_OVERLAY_ABS); + RNA_def_property_ui_text(prop, "Overlay Lock", ""); + RNA_def_property_boolean_funcs(prop, NULL, "rna_SequenceEditor_overlay_lock_set"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL); + + /* access to fixed and relative frame */ + prop= RNA_def_property(srna, "overlay_frame", PROP_INT, PROP_NONE); + 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"); } diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 7c11c7ff3af..d6f457fdea9 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -3141,6 +3141,7 @@ static void gesture_border_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_assign(keymap, "NODE_OT_select_border"); // WM_modalkeymap_assign(keymap, "SCREEN_OT_border_select"); // template WM_modalkeymap_assign(keymap, "SEQUENCER_OT_select_border"); + WM_modalkeymap_assign(keymap, "SEQUENCER_OT_view_ghost_border"); WM_modalkeymap_assign(keymap, "UV_OT_select_border"); WM_modalkeymap_assign(keymap, "VIEW2D_OT_zoom_border"); WM_modalkeymap_assign(keymap, "VIEW3D_OT_clip_border"); From 6feea7e2c3b0190af27cc378613211b81f8e1499 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 8 Jul 2010 14:01:48 +0000 Subject: [PATCH 374/674] Shift+O to toggle overlay --- source/blender/editors/space_sequencer/sequencer_ops.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c index 430553890d7..82f70eafc0a 100644 --- a/source/blender/editors/space_sequencer/sequencer_ops.c +++ b/source/blender/editors/space_sequencer/sequencer_ops.c @@ -114,6 +114,9 @@ void sequencer_keymap(wmKeyConfig *keyconf) wmKeyMap *keymap= WM_keymap_find(keyconf, "SequencerCommon", SPACE_SEQ, 0); wmKeyMapItem *kmi; + kmi= WM_keymap_add_item(keymap, "WM_OT_context_toggle", OKEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "data_path", "scene.sequence_editor.show_overlay"); + /* operators common to sequence and preview view */ WM_keymap_add_item(keymap, "SEQUENCER_OT_view_toggle", TABKEY, KM_PRESS, KM_CTRL, 0); From 6fcacf077df261183bfe1976909cb1d636a913ed Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 8 Jul 2010 14:30:43 +0000 Subject: [PATCH 375/674] - duplicating a scene now duplicates all strips (not just selected ones) - python change, dont import 'bpy' by default, initially I thaught this would make scripting easier but it ends up being annoying when you want to register a script or if you want to import it. (more trouble then its worth to save 1 line, also not very pythonic). --- source/blender/blenkernel/BKE_sequencer.h | 1 + source/blender/blenkernel/intern/scene.c | 2 +- source/blender/blenkernel/intern/sequencer.c | 2 +- source/blender/python/intern/bpy_interface.c | 5 ----- 4 files changed, 3 insertions(+), 7 deletions(-) diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index 3b95c25006d..002a1958a13 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -234,6 +234,7 @@ typedef struct SeqLoadInfo { #define SEQ_DUPE_UNIQUE_NAME 1<<0 #define SEQ_DUPE_CONTEXT 1<<1 #define SEQ_DUPE_ANIM 1<<2 +#define SEQ_DUPE_ALL 1<<3 /* otherwise only selected are copied */ /* use as an api function */ typedef struct Sequence *(*SeqLoadFunc)(struct bContext *, ListBase *, struct SeqLoadInfo *); diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index af13aae159f..2896ac68f40 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -220,7 +220,7 @@ Scene *copy_scene(Main *bmain, Scene *sce, int type) if(sce->ed) { scen->ed= MEM_callocN( sizeof(Editing), "addseq"); scen->ed->seqbasep= &scen->ed->seqbase; - seqbase_dupli_recursive(sce, &scen->ed->seqbase, &sce->ed->seqbase, 0); + seqbase_dupli_recursive(sce, &scen->ed->seqbase, &sce->ed->seqbase, SEQ_DUPE_ALL); } } diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 82ed85a1983..36e768ec98d 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -4299,7 +4299,7 @@ void seqbase_dupli_recursive(Scene *scene, ListBase *nseqbase, ListBase *seqbase for(seq= seqbase->first; seq; seq= seq->next) { seq->tmp= NULL; - if(seq->flag & SELECT) { + if((seq->flag & SELECT) || (dupe_flag & SEQ_DUPE_ALL)) { seqn = seq_dupli(scene, seq, dupe_flag); if (seqn) { /*should never fail */ if(dupe_flag & SEQ_DUPE_CONTEXT) { diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index 6a1495b5f65..f5b07da511d 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -166,11 +166,6 @@ static PyObject *CreateGlobalDictionary( bContext *C, const char *filename ) Py_DECREF(item); } - /* add bpy to global namespace */ - mod= PyImport_ImportModuleLevel("bpy", NULL, NULL, NULL, 0); - PyDict_SetItemString( dict, "bpy", mod ); - Py_DECREF(mod); - return dict; } From 258955394b90b014ad20dabd15f67d2d685d99fd Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 8 Jul 2010 15:07:35 +0000 Subject: [PATCH 376/674] Fix: object_duplilist should be passed the original scene rather than the set scene, otherwise can have wrong current frame and render settings, in particular this give issues with particle object instancing. --- source/blender/render/intern/source/convertblender.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index c3034768a4e..4436bdb9261 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -4780,7 +4780,7 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp /* in the prev/next pass for making speed vectors, avoid creating * objects that are not on a renderlayer with a vector pass, can * save a lot of time in complex scenes */ - vectorlay= get_vector_renderlayers(sce); + vectorlay= get_vector_renderlayers(re->scene); lay= (timeoffset)? renderlay & vectorlay: renderlay; /* if the object has been restricted from rendering in the outliner, ignore it */ @@ -4807,7 +4807,7 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp /* create list of duplis generated by this object, particle * system need to have render settings set for dupli particles */ dupli_render_particle_set(re, ob, timeoffset, 0, 1); - lb= object_duplilist(sce, ob); + lb= object_duplilist(re->scene, ob); dupli_render_particle_set(re, ob, timeoffset, 0, 0); for(dob= lb->first; dob; dob= dob->next) { From 90e11196193e8f086facab0862ef3ea4e13607e8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 8 Jul 2010 16:10:14 +0000 Subject: [PATCH 377/674] import bpy needed for presets now --- release/scripts/presets/cloth/cotton.py | 1 + release/scripts/presets/cloth/denim.py | 1 + release/scripts/presets/cloth/leather.py | 1 + release/scripts/presets/cloth/rubber.py | 1 + release/scripts/presets/cloth/silk.py | 1 + release/scripts/presets/ffmpeg/DV.py | 1 + release/scripts/presets/ffmpeg/DVD.py | 3 ++- release/scripts/presets/ffmpeg/SVCD.py | 3 ++- release/scripts/presets/ffmpeg/VCD.py | 3 ++- release/scripts/presets/ffmpeg/h264.py | 3 ++- release/scripts/presets/ffmpeg/theora.py | 3 ++- release/scripts/presets/ffmpeg/xvid.py | 3 ++- release/scripts/presets/render/DVCPRO_HD_1080p.py | 1 + release/scripts/presets/render/DVCPRO_HD_720p.py | 1 + release/scripts/presets/render/HDTV_1080p.py | 1 + release/scripts/presets/render/HDTV_720p.py | 1 + release/scripts/presets/render/HDV_1080p.py | 1 + release/scripts/presets/render/TV_NTSC_16_colon_9.py | 1 + release/scripts/presets/render/TV_NTSC_4_colon_3.py | 1 + release/scripts/presets/render/TV_PAL_16_colon_9.py | 1 + release/scripts/presets/render/TV_PAL_4_colon_3.py | 1 + release/scripts/presets/sss/apple.py | 1 + release/scripts/presets/sss/chicken.py | 1 + release/scripts/presets/sss/cream.py | 1 + release/scripts/presets/sss/ketchup.py | 1 + release/scripts/presets/sss/marble.py | 1 + release/scripts/presets/sss/potato.py | 1 + release/scripts/presets/sss/skim_milk.py | 1 + release/scripts/presets/sss/skin1.py | 1 + release/scripts/presets/sss/skin2.py | 1 + release/scripts/presets/sss/whole_milk.py | 1 + release/scripts/presets/sunsky/classic.py | 1 + release/scripts/presets/sunsky/desert.py | 1 + release/scripts/presets/sunsky/mountain.py | 1 + 34 files changed, 40 insertions(+), 6 deletions(-) diff --git a/release/scripts/presets/cloth/cotton.py b/release/scripts/presets/cloth/cotton.py index 7fe8b890b38..695050cf195 100644 --- a/release/scripts/presets/cloth/cotton.py +++ b/release/scripts/presets/cloth/cotton.py @@ -1,3 +1,4 @@ +import bpy bpy.context.cloth.settings.quality = 5 bpy.context.cloth.settings.mass = 0.300 bpy.context.cloth.settings.structural_stiffness = 15.000 diff --git a/release/scripts/presets/cloth/denim.py b/release/scripts/presets/cloth/denim.py index 4cad384a014..bd72fa873da 100644 --- a/release/scripts/presets/cloth/denim.py +++ b/release/scripts/presets/cloth/denim.py @@ -1,3 +1,4 @@ +import bpy bpy.context.cloth.settings.quality = 12 bpy.context.cloth.settings.mass = 1 bpy.context.cloth.settings.structural_stiffness = 40 diff --git a/release/scripts/presets/cloth/leather.py b/release/scripts/presets/cloth/leather.py index 11176c7e814..b85f504b0bb 100644 --- a/release/scripts/presets/cloth/leather.py +++ b/release/scripts/presets/cloth/leather.py @@ -1,3 +1,4 @@ +import bpy bpy.context.cloth.settings.quality = 15 bpy.context.cloth.settings.mass = 0.4 bpy.context.cloth.settings.structural_stiffness = 80 diff --git a/release/scripts/presets/cloth/rubber.py b/release/scripts/presets/cloth/rubber.py index 101c11b141a..c2d7625d333 100644 --- a/release/scripts/presets/cloth/rubber.py +++ b/release/scripts/presets/cloth/rubber.py @@ -1,3 +1,4 @@ +import bpy bpy.context.active_object.modifiers['Cloth'].settings.quality = 7 bpy.context.active_object.modifiers['Cloth'].settings.mass = 3 bpy.context.active_object.modifiers['Cloth'].settings.structural_stiffness = 15 diff --git a/release/scripts/presets/cloth/silk.py b/release/scripts/presets/cloth/silk.py index a0dea5f1fd3..c2a98c270b8 100644 --- a/release/scripts/presets/cloth/silk.py +++ b/release/scripts/presets/cloth/silk.py @@ -1,3 +1,4 @@ +import bpy bpy.context.cloth.settings.quality = 5 bpy.context.cloth.settings.mass = 0.150 bpy.context.cloth.settings.structural_stiffness = 5 diff --git a/release/scripts/presets/ffmpeg/DV.py b/release/scripts/presets/ffmpeg/DV.py index db1bc0fac92..4cdb2f271b9 100644 --- a/release/scripts/presets/ffmpeg/DV.py +++ b/release/scripts/presets/ffmpeg/DV.py @@ -1,3 +1,4 @@ +import bpy is_ntsc = (bpy.context.scene.render.fps != 25) bpy.context.scene.render.ffmpeg_format = "DV" diff --git a/release/scripts/presets/ffmpeg/DVD.py b/release/scripts/presets/ffmpeg/DVD.py index 6ac6c3c5ff7..233bdab4f20 100644 --- a/release/scripts/presets/ffmpeg/DVD.py +++ b/release/scripts/presets/ffmpeg/DVD.py @@ -1,3 +1,4 @@ +import bpy is_ntsc = (bpy.context.scene.render.fps != 25) bpy.context.scene.render.ffmpeg_format = "MPEG2" @@ -15,4 +16,4 @@ bpy.context.scene.render.ffmpeg_maxrate = 9000 bpy.context.scene.render.ffmpeg_minrate = 0 bpy.context.scene.render.ffmpeg_buffersize = 224*8 bpy.context.scene.render.ffmpeg_packetsize = 2048 -bpy.context.scene.render.ffmpeg_muxrate = 10080000 \ No newline at end of file +bpy.context.scene.render.ffmpeg_muxrate = 10080000 diff --git a/release/scripts/presets/ffmpeg/SVCD.py b/release/scripts/presets/ffmpeg/SVCD.py index 1d8752f02d9..52f938623b8 100644 --- a/release/scripts/presets/ffmpeg/SVCD.py +++ b/release/scripts/presets/ffmpeg/SVCD.py @@ -1,3 +1,4 @@ +import bpy is_ntsc = (bpy.context.scene.render.fps != 25) bpy.context.scene.render.ffmpeg_format = "MPEG2" @@ -15,4 +16,4 @@ bpy.context.scene.render.ffmpeg_maxrate = 2516 bpy.context.scene.render.ffmpeg_minrate = 0 bpy.context.scene.render.ffmpeg_buffersize = 224*8 bpy.context.scene.render.ffmpeg_packetsize = 2324 -bpy.context.scene.render.ffmpeg_muxrate = 0 \ No newline at end of file +bpy.context.scene.render.ffmpeg_muxrate = 0 diff --git a/release/scripts/presets/ffmpeg/VCD.py b/release/scripts/presets/ffmpeg/VCD.py index 303fd85eefb..876fa2d8ba6 100644 --- a/release/scripts/presets/ffmpeg/VCD.py +++ b/release/scripts/presets/ffmpeg/VCD.py @@ -1,3 +1,4 @@ +import bpy is_ntsc = (bpy.context.scene.render.fps != 25) bpy.context.scene.render.ffmpeg_format = "MPEG1" @@ -15,4 +16,4 @@ bpy.context.scene.render.ffmpeg_maxrate = 1150 bpy.context.scene.render.ffmpeg_minrate = 1150 bpy.context.scene.render.ffmpeg_buffersize = 40*8 bpy.context.scene.render.ffmpeg_packetsize = 2324 -bpy.context.scene.render.ffmpeg_muxrate = 2352 * 75 * 8 \ No newline at end of file +bpy.context.scene.render.ffmpeg_muxrate = 2352 * 75 * 8 diff --git a/release/scripts/presets/ffmpeg/h264.py b/release/scripts/presets/ffmpeg/h264.py index e46dcd46176..74e6890a5d4 100644 --- a/release/scripts/presets/ffmpeg/h264.py +++ b/release/scripts/presets/ffmpeg/h264.py @@ -1,3 +1,4 @@ +import bpy is_ntsc = (bpy.context.scene.render.fps != 25) bpy.context.scene.render.ffmpeg_format = "H264" @@ -13,4 +14,4 @@ bpy.context.scene.render.ffmpeg_maxrate = 9000 bpy.context.scene.render.ffmpeg_minrate = 0 bpy.context.scene.render.ffmpeg_buffersize = 224*8 bpy.context.scene.render.ffmpeg_packetsize = 2048 -bpy.context.scene.render.ffmpeg_muxrate = 10080000 \ No newline at end of file +bpy.context.scene.render.ffmpeg_muxrate = 10080000 diff --git a/release/scripts/presets/ffmpeg/theora.py b/release/scripts/presets/ffmpeg/theora.py index bb84d977da3..6ce9d4ea7ed 100644 --- a/release/scripts/presets/ffmpeg/theora.py +++ b/release/scripts/presets/ffmpeg/theora.py @@ -1,3 +1,4 @@ +import bpy is_ntsc = (bpy.context.scene.render.fps != 25) bpy.context.scene.render.ffmpeg_format = "OGG" @@ -13,4 +14,4 @@ bpy.context.scene.render.ffmpeg_maxrate = 9000 bpy.context.scene.render.ffmpeg_minrate = 0 bpy.context.scene.render.ffmpeg_buffersize = 224*8 bpy.context.scene.render.ffmpeg_packetsize = 2048 -bpy.context.scene.render.ffmpeg_muxrate = 10080000 \ No newline at end of file +bpy.context.scene.render.ffmpeg_muxrate = 10080000 diff --git a/release/scripts/presets/ffmpeg/xvid.py b/release/scripts/presets/ffmpeg/xvid.py index c0f5a3adb10..0c8e3989451 100644 --- a/release/scripts/presets/ffmpeg/xvid.py +++ b/release/scripts/presets/ffmpeg/xvid.py @@ -1,3 +1,4 @@ +import bpy is_ntsc = (bpy.context.scene.render.fps != 25) bpy.context.scene.render.ffmpeg_format = "AVI" @@ -13,4 +14,4 @@ bpy.context.scene.render.ffmpeg_maxrate = 9000 bpy.context.scene.render.ffmpeg_minrate = 0 bpy.context.scene.render.ffmpeg_buffersize = 224*8 bpy.context.scene.render.ffmpeg_packetsize = 2048 -bpy.context.scene.render.ffmpeg_muxrate = 10080000 \ No newline at end of file +bpy.context.scene.render.ffmpeg_muxrate = 10080000 diff --git a/release/scripts/presets/render/DVCPRO_HD_1080p.py b/release/scripts/presets/render/DVCPRO_HD_1080p.py index 27a2233909e..f97b389795e 100644 --- a/release/scripts/presets/render/DVCPRO_HD_1080p.py +++ b/release/scripts/presets/render/DVCPRO_HD_1080p.py @@ -1,3 +1,4 @@ +import bpy bpy.context.scene.render.resolution_x = 1280 bpy.context.scene.render.resolution_y = 1080 bpy.context.scene.render.resolution_percentage = 100 diff --git a/release/scripts/presets/render/DVCPRO_HD_720p.py b/release/scripts/presets/render/DVCPRO_HD_720p.py index e3ababa6c5f..dbe4c9243d8 100644 --- a/release/scripts/presets/render/DVCPRO_HD_720p.py +++ b/release/scripts/presets/render/DVCPRO_HD_720p.py @@ -1,3 +1,4 @@ +import bpy bpy.context.scene.render.resolution_x = 960 bpy.context.scene.render.resolution_y = 720 bpy.context.scene.render.resolution_percentage = 100 diff --git a/release/scripts/presets/render/HDTV_1080p.py b/release/scripts/presets/render/HDTV_1080p.py index 7693dae9347..32b771dc4a5 100644 --- a/release/scripts/presets/render/HDTV_1080p.py +++ b/release/scripts/presets/render/HDTV_1080p.py @@ -1,3 +1,4 @@ +import bpy bpy.context.scene.render.resolution_x = 1920 bpy.context.scene.render.resolution_y = 1080 bpy.context.scene.render.resolution_percentage = 100 diff --git a/release/scripts/presets/render/HDTV_720p.py b/release/scripts/presets/render/HDTV_720p.py index ee16c1e8b33..c5c81eeb790 100644 --- a/release/scripts/presets/render/HDTV_720p.py +++ b/release/scripts/presets/render/HDTV_720p.py @@ -1,3 +1,4 @@ +import bpy bpy.context.scene.render.resolution_x = 1280 bpy.context.scene.render.resolution_y = 720 bpy.context.scene.render.resolution_percentage = 100 diff --git a/release/scripts/presets/render/HDV_1080p.py b/release/scripts/presets/render/HDV_1080p.py index 8ac369f14a6..7637648e53a 100644 --- a/release/scripts/presets/render/HDV_1080p.py +++ b/release/scripts/presets/render/HDV_1080p.py @@ -1,3 +1,4 @@ +import bpy bpy.context.scene.render.resolution_x = 1440 bpy.context.scene.render.resolution_y = 1080 bpy.context.scene.render.resolution_percentage = 100 diff --git a/release/scripts/presets/render/TV_NTSC_16_colon_9.py b/release/scripts/presets/render/TV_NTSC_16_colon_9.py index 26833ba0c09..12ecaab4800 100644 --- a/release/scripts/presets/render/TV_NTSC_16_colon_9.py +++ b/release/scripts/presets/render/TV_NTSC_16_colon_9.py @@ -1,3 +1,4 @@ +import bpy bpy.context.scene.render.resolution_x = 720 bpy.context.scene.render.resolution_y = 480 bpy.context.scene.render.resolution_percentage = 100 diff --git a/release/scripts/presets/render/TV_NTSC_4_colon_3.py b/release/scripts/presets/render/TV_NTSC_4_colon_3.py index 219e9b0506d..471c45b04d7 100644 --- a/release/scripts/presets/render/TV_NTSC_4_colon_3.py +++ b/release/scripts/presets/render/TV_NTSC_4_colon_3.py @@ -1,3 +1,4 @@ +import bpy bpy.context.scene.render.resolution_x = 720 bpy.context.scene.render.resolution_y = 486 bpy.context.scene.render.resolution_percentage = 100 diff --git a/release/scripts/presets/render/TV_PAL_16_colon_9.py b/release/scripts/presets/render/TV_PAL_16_colon_9.py index c8aa6616bb0..2add29e9408 100644 --- a/release/scripts/presets/render/TV_PAL_16_colon_9.py +++ b/release/scripts/presets/render/TV_PAL_16_colon_9.py @@ -1,3 +1,4 @@ +import bpy bpy.context.scene.render.resolution_x = 720 bpy.context.scene.render.resolution_y = 576 bpy.context.scene.render.resolution_percentage = 100 diff --git a/release/scripts/presets/render/TV_PAL_4_colon_3.py b/release/scripts/presets/render/TV_PAL_4_colon_3.py index 45eaaf47e44..92cb794558e 100644 --- a/release/scripts/presets/render/TV_PAL_4_colon_3.py +++ b/release/scripts/presets/render/TV_PAL_4_colon_3.py @@ -1,3 +1,4 @@ +import bpy bpy.context.scene.render.resolution_x = 720 bpy.context.scene.render.resolution_y = 576 bpy.context.scene.render.resolution_percentage = 100 diff --git a/release/scripts/presets/sss/apple.py b/release/scripts/presets/sss/apple.py index 474769cd36f..d505be2b435 100644 --- a/release/scripts/presets/sss/apple.py +++ b/release/scripts/presets/sss/apple.py @@ -1,2 +1,3 @@ +import bpy bpy.context.active_object.active_material.subsurface_scattering.radius = 11.605, 3.884, 1.754 bpy.context.active_object.active_material.subsurface_scattering.color = 0.430, 0.210, 0.168 diff --git a/release/scripts/presets/sss/chicken.py b/release/scripts/presets/sss/chicken.py index 6253de09376..53e199455c1 100644 --- a/release/scripts/presets/sss/chicken.py +++ b/release/scripts/presets/sss/chicken.py @@ -1,2 +1,3 @@ +import bpy bpy.context.active_object.active_material.subsurface_scattering.radius = 9.436, 3.348, 1.790 bpy.context.active_object.active_material.subsurface_scattering.color = 0.439, 0.216, 0.141 diff --git a/release/scripts/presets/sss/cream.py b/release/scripts/presets/sss/cream.py index f0a5292b85c..221739a30ab 100644 --- a/release/scripts/presets/sss/cream.py +++ b/release/scripts/presets/sss/cream.py @@ -1,2 +1,3 @@ +import bpy bpy.context.active_object.active_material.subsurface_scattering.radius = 15.028, 4.664, 2.541 bpy.context.active_object.active_material.subsurface_scattering.color = 0.987, 0.943, 0.827 diff --git a/release/scripts/presets/sss/ketchup.py b/release/scripts/presets/sss/ketchup.py index caece1ea7ca..96d136dc271 100644 --- a/release/scripts/presets/sss/ketchup.py +++ b/release/scripts/presets/sss/ketchup.py @@ -1,2 +1,3 @@ +import bpy bpy.context.active_object.active_material.subsurface_scattering.radius = 4.762, 0.575, 0.394 bpy.context.active_object.active_material.subsurface_scattering.color = 0.222, 0.008, 0.002 diff --git a/release/scripts/presets/sss/marble.py b/release/scripts/presets/sss/marble.py index ea894f69800..cd68fd7d26f 100644 --- a/release/scripts/presets/sss/marble.py +++ b/release/scripts/presets/sss/marble.py @@ -1,2 +1,3 @@ +import bpy bpy.context.active_object.active_material.subsurface_scattering.radius = 8.509, 5.566, 3.951 bpy.context.active_object.active_material.subsurface_scattering.color = 0.925, 0.905, 0.884 diff --git a/release/scripts/presets/sss/potato.py b/release/scripts/presets/sss/potato.py index 89407dff427..7a6c25db833 100644 --- a/release/scripts/presets/sss/potato.py +++ b/release/scripts/presets/sss/potato.py @@ -1,2 +1,3 @@ +import bpy bpy.context.active_object.active_material.subsurface_scattering.radius = 14.266, 7.228, 2.036 bpy.context.active_object.active_material.subsurface_scattering.color = 0.855, 0.740, 0.292 diff --git a/release/scripts/presets/sss/skim_milk.py b/release/scripts/presets/sss/skim_milk.py index 2e5b19d4f53..5be37b820da 100644 --- a/release/scripts/presets/sss/skim_milk.py +++ b/release/scripts/presets/sss/skim_milk.py @@ -1,2 +1,3 @@ +import bpy bpy.context.active_object.active_material.subsurface_scattering.radius = 18.424, 10.443, 3.502 bpy.context.active_object.active_material.subsurface_scattering.color = 0.889, 0.888, 0.796 diff --git a/release/scripts/presets/sss/skin1.py b/release/scripts/presets/sss/skin1.py index 42fb1fac43a..76dc64f61f9 100644 --- a/release/scripts/presets/sss/skin1.py +++ b/release/scripts/presets/sss/skin1.py @@ -1,2 +1,3 @@ +import bpy bpy.context.active_object.active_material.subsurface_scattering.radius = 3.673, 1.367, 0.683 bpy.context.active_object.active_material.subsurface_scattering.color = 0.574, 0.313, 0.174 diff --git a/release/scripts/presets/sss/skin2.py b/release/scripts/presets/sss/skin2.py index 52b649ecd8f..6a72a782638 100644 --- a/release/scripts/presets/sss/skin2.py +++ b/release/scripts/presets/sss/skin2.py @@ -1,2 +1,3 @@ +import bpy bpy.context.active_object.active_material.subsurface_scattering.radius = 4.821, 1.694, 1.090 bpy.context.active_object.active_material.subsurface_scattering.color = 0.749, 0.571, 0.467 diff --git a/release/scripts/presets/sss/whole_milk.py b/release/scripts/presets/sss/whole_milk.py index 4cb6ccf3dcf..59aaa135933 100644 --- a/release/scripts/presets/sss/whole_milk.py +++ b/release/scripts/presets/sss/whole_milk.py @@ -1,2 +1,3 @@ +import bpy bpy.context.active_object.active_material.subsurface_scattering.radius = 10.899, 6.575, 2.508 bpy.context.active_object.active_material.subsurface_scattering.color = 0.947, 0.931, 0.852 diff --git a/release/scripts/presets/sunsky/classic.py b/release/scripts/presets/sunsky/classic.py index 9ee35d68dad..4394dcce242 100644 --- a/release/scripts/presets/sunsky/classic.py +++ b/release/scripts/presets/sunsky/classic.py @@ -1,3 +1,4 @@ +import bpy bpy.context.object.data.sky.atmosphere_turbidity = 4.0 bpy.context.object.data.sky.sky_blend_type = 'ADD' bpy.context.object.data.sky.sky_blend = 1.0 diff --git a/release/scripts/presets/sunsky/desert.py b/release/scripts/presets/sunsky/desert.py index 26ed4527746..f68ea23845b 100644 --- a/release/scripts/presets/sunsky/desert.py +++ b/release/scripts/presets/sunsky/desert.py @@ -1,3 +1,4 @@ +import bpy bpy.context.object.data.sky.atmosphere_turbidity = 6.0 bpy.context.object.data.sky.sky_blend_type = 'ADD' bpy.context.object.data.sky.sky_blend = 1.0 diff --git a/release/scripts/presets/sunsky/mountain.py b/release/scripts/presets/sunsky/mountain.py index e35d3944042..9b81ffd4399 100644 --- a/release/scripts/presets/sunsky/mountain.py +++ b/release/scripts/presets/sunsky/mountain.py @@ -1,3 +1,4 @@ +import bpy bpy.context.object.data.sky.atmosphere_turbidity = 2.00000023842 bpy.context.object.data.sky.sky_blend_type = 'ADD' bpy.context.object.data.sky.sky_blend = 1.0 From aff6b6885f78821fbcd008d4bbece123ad998e00 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 8 Jul 2010 16:24:24 +0000 Subject: [PATCH 378/674] added imports to templates --- release/scripts/templates/operator.py | 1 - release/scripts/templates/operator_modal.py | 1 + release/scripts/templates/operator_modal_draw.py | 1 + release/scripts/templates/operator_modal_view3d.py | 1 + release/scripts/templates/operator_uv.py | 1 + source/blender/python/intern/bpy_interface.c | 1 - 6 files changed, 4 insertions(+), 2 deletions(-) diff --git a/release/scripts/templates/operator.py b/release/scripts/templates/operator.py index de181a13c25..e20b92c9b6a 100644 --- a/release/scripts/templates/operator.py +++ b/release/scripts/templates/operator.py @@ -1,4 +1,3 @@ - import bpy def write_some_data(context, filepath, use_some_setting): diff --git a/release/scripts/templates/operator_modal.py b/release/scripts/templates/operator_modal.py index b2839efabe4..e029d91a7fa 100644 --- a/release/scripts/templates/operator_modal.py +++ b/release/scripts/templates/operator_modal.py @@ -1,3 +1,4 @@ +import bpy from bpy.props import * class ModalOperator(bpy.types.Operator): diff --git a/release/scripts/templates/operator_modal_draw.py b/release/scripts/templates/operator_modal_draw.py index 98efa38e9ee..1f24672346b 100644 --- a/release/scripts/templates/operator_modal_draw.py +++ b/release/scripts/templates/operator_modal_draw.py @@ -1,3 +1,4 @@ +import bpy import bgl import blf diff --git a/release/scripts/templates/operator_modal_view3d.py b/release/scripts/templates/operator_modal_view3d.py index afe179376ed..da019c2b653 100644 --- a/release/scripts/templates/operator_modal_view3d.py +++ b/release/scripts/templates/operator_modal_view3d.py @@ -1,3 +1,4 @@ +import bpy from mathutils import Vector from bpy.props import FloatVectorProperty diff --git a/release/scripts/templates/operator_uv.py b/release/scripts/templates/operator_uv.py index 36d8333d49d..1003bd6c58b 100644 --- a/release/scripts/templates/operator_uv.py +++ b/release/scripts/templates/operator_uv.py @@ -1,3 +1,4 @@ +import bpy def main(context): obj = context.active_object diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index f5b07da511d..bf91b0498ed 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -150,7 +150,6 @@ void BPY_update_modules( void ) *****************************************************************************/ static PyObject *CreateGlobalDictionary( bContext *C, const char *filename ) { - PyObject *mod; PyObject *item; PyObject *dict = PyDict_New( ); PyDict_SetItemString( dict, "__builtins__", PyEval_GetBuiltins( ) ); From b441a22bc8a4203a9eff220cffab030c4e7973f4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 8 Jul 2010 17:00:06 +0000 Subject: [PATCH 379/674] fix for crash if image names are too long in adding image strips to the sequencer. --- source/blender/editors/space_sequencer/sequencer_add.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index 36ae475e64b..01a99ed2b1f 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -459,7 +459,9 @@ static int sequencer_add_image_strip_exec(bContext *C, wmOperator *op) se= strip->stripdata; RNA_BEGIN(op->ptr, itemptr, "files") { - RNA_string_get(&itemptr, "name", se->name); + char *filename= RNA_string_get_alloc(&itemptr, "name", NULL, 0); + BLI_strncpy(se->name, filename, sizeof(se->name)); + MEM_freeN(filename); se++; } RNA_END; From a9050083fe649f2a5839aeba4cb0bd5ddbbc5c5e Mon Sep 17 00:00:00 2001 From: Diego Borghetti Date: Thu, 8 Jul 2010 19:29:41 +0000 Subject: [PATCH 380/674] Fix Texture node don't take care render size. The texture node was not taking into account the precentage of the render when create the output buffer. Reported by venomgfx at irc. --- source/blender/nodes/intern/CMP_nodes/CMP_texture.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_texture.c b/source/blender/nodes/intern/CMP_nodes/CMP_texture.c index b130b3f38a8..f990fa452cb 100644 --- a/source/blender/nodes/intern/CMP_nodes/CMP_texture.c +++ b/source/blender/nodes/intern/CMP_nodes/CMP_texture.c @@ -95,10 +95,11 @@ static void node_composit_exec_texture(void *data, bNode *node, bNodeStack **in, /* first make the preview image */ CompBuf *prevbuf= alloc_compbuf(140, 140, CB_RGBA, 1); /* alloc */ - - sizex = rd->xsch; - sizey = rd->ysch; - + + /* Also take care about the render size! */ + sizex = (rd->size*rd->xsch)/100; + sizey = (rd->size*rd->ysch)/100; + prevbuf->rect_procedural= texture_procedural; prevbuf->node= node; VECCOPY(prevbuf->procedural_offset, in[0]->vec); From 24f63b20810692ff3d25fbe205098467ba32d277 Mon Sep 17 00:00:00 2001 From: Diego Borghetti Date: Thu, 8 Jul 2010 20:58:34 +0000 Subject: [PATCH 381/674] New option for Scale node. This is because problem reported by venomgfx on the irc. If you have a render of 2k with a render size of 25% (and this problem is for any resolution/size) and you try to use a image of 1k in the compo, the first thing you do is put a scale node. Here come the problem, if you set the option "Scene Size" in the node scale, the buffer output is not the same size that the render. This is because the "Scene size" work with the image size and not the render size, so in this case is the 25% of 1k.. not the 25% 2k. So this new option "Render Size" scale the output buffer to the render resolution, taking into account the render size (percentage) too. --- source/blender/blenkernel/BKE_node.h | 1 + source/blender/makesrna/intern/rna_nodetree.c | 1 + source/blender/nodes/intern/CMP_nodes/CMP_scale.c | 4 ++++ 3 files changed, 6 insertions(+) diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h index 0e5ad8e3ee9..4c7dcff0cd2 100644 --- a/source/blender/blenkernel/BKE_node.h +++ b/source/blender/blenkernel/BKE_node.h @@ -383,6 +383,7 @@ void ntreeGPUMaterialNodes(struct bNodeTree *ntree, struct GPUMaterial *mat); #define CMP_SCALE_RELATIVE 0 #define CMP_SCALE_ABSOLUTE 1 #define CMP_SCALE_SCENEPERCENT 2 +#define CMP_SCALE_RENDERPERCENT 3 /* the type definitions array */ diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index e5bfc1c6aad..5ebf43fc2b7 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -1176,6 +1176,7 @@ static void def_cmp_scale(StructRNA *srna) {0, "RELATIVE", 0, "Relative", ""}, {1, "ABSOLUTE", 0, "Absolute", ""}, {2, "SCENE_SIZE", 0, "Scene Size", ""}, + {3, "RENDER_SIZE", 0, "Render Size", ""}, {0, NULL, 0, NULL, NULL}}; prop = RNA_def_property(srna, "space", PROP_ENUM, PROP_NONE); diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_scale.c b/source/blender/nodes/intern/CMP_nodes/CMP_scale.c index d7a9497f41d..9779875b01a 100644 --- a/source/blender/nodes/intern/CMP_nodes/CMP_scale.c +++ b/source/blender/nodes/intern/CMP_nodes/CMP_scale.c @@ -64,6 +64,10 @@ static void node_composit_exec_scale(void *data, bNode *node, bNodeStack **in, b else if(node->custom1==CMP_SCALE_SCENEPERCENT) { newx = cbuf->x * (rd->size / 100.0f); newy = cbuf->y * (rd->size / 100.0f); + } + else if (node->custom1==CMP_SCALE_RENDERPERCENT) { + newx= (rd->xsch * rd->size)/100; + newy= (rd->ysch * rd->size)/100; } else { /* CMP_SCALE_ABSOLUTE */ newx= MAX2((int)in[1]->vec[0], 1); newy= MAX2((int)in[2]->vec[0], 1); From 7ef6b5cdfdaa1c6f0e80e80f8ca6e2c75eed76f7 Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Thu, 8 Jul 2010 22:07:34 +0000 Subject: [PATCH 382/674] filebrowser * filebrowser now should respect User Preference for using relative paths * Also set remap_relative default to 'True' for saving .blend file (With 'hide dot files' set and 'relative paths' set in the User Preferences this should now behave as in the suggestion made by brecht - in the future we could remove the user preference and just use the default.) --- source/blender/windowmanager/intern/wm_operators.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index d6f457fdea9..0023ded23f0 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -830,7 +830,7 @@ void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type, RNA_def_property_flag(prop, PROP_HIDDEN); if(flag & WM_FILESEL_RELPATH) - RNA_def_boolean(ot->srna, "relative_path", 0, "Relative Path", "Select the file relative to the blend file"); + RNA_def_boolean(ot->srna, "relative_path", (U.flag & USER_RELPATHS) ? 1:0, "Relative Path", "Select the file relative to the blend file"); } void WM_operator_properties_select_all(wmOperatorType *ot) { @@ -1819,7 +1819,7 @@ static void WM_OT_save_as_mainfile(wmOperatorType *ot) WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER, FILE_SAVE, WM_FILESEL_FILEPATH); RNA_def_boolean(ot->srna, "compress", 0, "Compress", "Write compressed .blend file"); - RNA_def_boolean(ot->srna, "relative_remap", 0, "Remap Relative", "Remap relative paths when saving in a different directory"); + RNA_def_boolean(ot->srna, "relative_remap", 1, "Remap Relative", "Remap relative paths when saving in a different directory"); } /* *************** save file directly ******** */ From 1f019c23fd11aefc363bb1694b94d0aee34501a1 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Fri, 9 Jul 2010 00:14:46 +0000 Subject: [PATCH 383/674] Logic Editor UI: move s/c/a operators and interface buttons Tchatcharantcharan ... Three new operators: bpy.ops.logic.sensor_move bpy.ops.logic.controller_move bpy.ops.logic.actuator_move direction is a parameter (UP,DOWN) Moved some interface code to sca.c instead of logic_window.c. (and changed accordingly). One note: as in 2.49, the move up/down button is only available in non-expanded mode. However instead of one button with two options we have 2 buttons (as we had originally in 2.50). That also means the s/c/a header is getting more clunky. Design, thoughts, ideas are appreciated. For the time been functionality back is still the priority (mine at least ;) --- source/blender/blenkernel/BKE_sca.h | 4 + source/blender/blenkernel/intern/sca.c | 124 ++++++++++++++ .../blender/editors/space_logic/logic_ops.c | 156 ++++++++++++++++++ .../editors/space_logic/logic_window.c | 47 ++++-- 4 files changed, 316 insertions(+), 15 deletions(-) diff --git a/source/blender/blenkernel/BKE_sca.h b/source/blender/blenkernel/BKE_sca.h index 910f381823c..b1df32d5cd7 100644 --- a/source/blender/blenkernel/BKE_sca.h +++ b/source/blender/blenkernel/BKE_sca.h @@ -67,5 +67,9 @@ void set_sca_new_poins_ob(struct Object *ob); void set_sca_new_poins(void); void sca_remove_ob_poin(struct Object *obt, struct Object *ob); +void sca_move_sensor(struct bSensor *sens_to_move, Object *ob, int move_up); +void sca_move_controller(struct bController *cont_to_move, Object *ob, int move_up); +void sca_move_actuator(struct bActuator *act_to_move, Object *ob, int move_up); + #endif diff --git a/source/blender/blenkernel/intern/sca.c b/source/blender/blenkernel/intern/sca.c index 3102d4b054b..02b66dd9b32 100644 --- a/source/blender/blenkernel/intern/sca.c +++ b/source/blender/blenkernel/intern/sca.c @@ -683,3 +683,127 @@ void sca_remove_ob_poin(Object *obt, Object *ob) act= act->next; } } + +/* ******************** INTERFACE ******************* */ +void sca_move_sensor(bSensor *sens_to_move, Object *ob, int *move_up) +{ + bSensor *sens, *tmp; + + int val; + val = move_up ? 1:2; + + /* make sure this sensor belongs to this object */ + sens= ob->sensors.first; + while(sens) { + if(sens == sens_to_move) break; + sens= sens->next; + } + if(!sens) return; + + /* move up */ + if( val==1 && sens->prev) { + for (tmp=sens->prev; tmp; tmp=tmp->prev) { + if (tmp->flag & SENS_VISIBLE) + break; + } + if (tmp) { + BLI_remlink(&ob->sensors, sens); + BLI_insertlinkbefore(&ob->sensors, tmp, sens); + } + } + /* move down */ + else if( val==2 && sens->next) { + for (tmp=sens->next; tmp; tmp=tmp->next) { + if (tmp->flag & SENS_VISIBLE) + break; + } + if (tmp) { + BLI_remlink(&ob->sensors, sens); + BLI_insertlink(&ob->sensors, tmp, sens); + } + } +} + +void sca_move_controller(bController *cont_to_move, Object *ob, int move_up) +{ + bController *cont, *tmp; + + int val; + val = move_up ? 1:2; + + /* make sure this controller belongs to this object */ + cont= ob->controllers.first; + while(cont) { + if(cont == cont_to_move) break; + cont= cont->next; + } + if(!cont) return; + + /* move up */ + if( val==1 && cont->prev) { + /* locate the controller that has the same state mask but is earlier in the list */ + tmp = cont->prev; + while(tmp) { + if(tmp->state_mask & cont->state_mask) + break; + tmp = tmp->prev; + } + if (tmp) { + BLI_remlink(&ob->controllers, cont); + BLI_insertlinkbefore(&ob->controllers, tmp, cont); + } + } + + /* move down */ + else if( val==2 && cont->next) { + tmp = cont->next; + while(tmp) { + if(tmp->state_mask & cont->state_mask) + break; + tmp = tmp->next; + } + BLI_remlink(&ob->controllers, cont); + BLI_insertlink(&ob->controllers, tmp, cont); + } +} + +void sca_move_actuator(bActuator *act_to_move, Object *ob, int move_up) +{ + bActuator *act, *tmp; + int val; + + val = move_up ? 1:2; + + /* make sure this actuator belongs to this object */ + act= ob->actuators.first; + while(act) { + if(act == act_to_move) break; + act= act->next; + } + if(!act) return; + + /* move up */ + if( val==1 && act->prev) { + /* locate the first visible actuators before this one */ + for (tmp = act->prev; tmp; tmp=tmp->prev) { + if (tmp->flag & ACT_VISIBLE) + break; + } + if (tmp) { + BLI_remlink(&ob->actuators, act); + BLI_insertlinkbefore(&ob->actuators, tmp, act); + } + } + /* move down */ + else if( val==2 && act->next) { + /* locate the first visible actuators after this one */ + for (tmp=act->next; tmp; tmp=tmp->next) { + if (tmp->flag & ACT_VISIBLE) + break; + } + if (tmp) { + BLI_remlink(&ob->actuators, act); + BLI_insertlink(&ob->actuators, tmp, act); + } + } +} diff --git a/source/blender/editors/space_logic/logic_ops.c b/source/blender/editors/space_logic/logic_ops.c index 44cc4066b03..2a179ac281c 100644 --- a/source/blender/editors/space_logic/logic_ops.c +++ b/source/blender/editors/space_logic/logic_ops.c @@ -211,6 +211,16 @@ static bActuator *edit_actuator_property_get(bContext *C, wmOperator *op, Object return act; } +static int logicbricks_move_property_get(wmOperator *op) +{ + int type = RNA_enum_get(op->ptr, "direction"); + + if (type == 1) + return TRUE; + else + return FALSE; +} + /* ************* Add/Remove Sensor Operator ************* */ static int sensor_remove_exec(bContext *C, wmOperator *op) @@ -530,12 +540,158 @@ void LOGIC_OT_actuator_add(wmOperatorType *ot) RNA_def_string(ot->srna, "object", "", 32, "Object", "Name of the Object to add the Actuator to"); } +/* ************* Move Logic Bricks Operator ************* */ +static EnumPropertyItem logicbricks_move_direction[] ={ + {1, "UP", 0, "Move Up", ""}, + {2, "DOWN", 0, "Move Down", ""}, + {0, NULL, 0, NULL, NULL}}; + + +static int sensor_move_exec(bContext *C, wmOperator *op) +{ + Object *ob=NULL; + bSensor *sens= edit_sensor_property_get(C, op, &ob); + int move_up= logicbricks_move_property_get(op); + + if (!sens) + return OPERATOR_CANCELLED; + + sca_move_sensor(sens, ob, move_up); + + WM_event_add_notifier(C, NC_LOGIC, NULL); + + return OPERATOR_FINISHED; +} + +static int sensor_move_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_sensor_invoke_properties(C, op)) { + return sensor_move_exec(C, op); + } + else + return OPERATOR_CANCELLED; +} + +void LOGIC_OT_sensor_move(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Move Sensor"; + ot->description = "Move Densor"; + ot->idname= "LOGIC_OT_sensor_move"; + + /* api callbacks */ + ot->invoke= sensor_move_invoke; + ot->exec= sensor_move_exec; + ot->poll= edit_sensor_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + edit_sensor_properties(ot); + RNA_def_enum(ot->srna, "direction", logicbricks_move_direction, 1, "Direction", "Move Up or Down"); +} + +static int controller_move_exec(bContext *C, wmOperator *op) +{ + Object *ob=NULL; + bController *cont= edit_controller_property_get(C, op, &ob); + int move_up= logicbricks_move_property_get(op); + + if (!cont) + return OPERATOR_CANCELLED; + + sca_move_controller(cont, ob, move_up); + + WM_event_add_notifier(C, NC_LOGIC, NULL); + + return OPERATOR_FINISHED; +} + +static int controller_move_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_controller_invoke_properties(C, op)) { + return controller_move_exec(C, op); + } + else + return OPERATOR_CANCELLED; +} + +void LOGIC_OT_controller_move(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Move Controller"; + ot->description = "Move Controller"; + ot->idname= "LOGIC_OT_controller_move"; + + /* api callbacks */ + ot->invoke= controller_move_invoke; + ot->exec= controller_move_exec; + ot->poll= edit_controller_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + edit_controller_properties(ot); + RNA_def_enum(ot->srna, "direction", logicbricks_move_direction, 1, "Direction", "Move Up or Down"); +} + +static int actuator_move_exec(bContext *C, wmOperator *op) +{ + Object *ob=NULL; + bActuator *act = edit_actuator_property_get(C, op, &ob); + int move_up= logicbricks_move_property_get(op); + + if (!act) + return OPERATOR_CANCELLED; + + sca_move_actuator(act, ob, move_up); + + WM_event_add_notifier(C, NC_LOGIC, NULL); + + return OPERATOR_FINISHED; +} + +static int actuator_move_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_actuator_invoke_properties(C, op)) { + return actuator_move_exec(C, op); + } + else + return OPERATOR_CANCELLED; +} + +void LOGIC_OT_actuator_move(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Move Actuator"; + ot->description = "Move Actuator"; + ot->idname= "LOGIC_OT_actuator_move"; + + /* api callbacks */ + ot->invoke= actuator_move_invoke; + ot->exec= actuator_move_exec; + ot->poll= edit_actuator_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + edit_actuator_properties(ot); + RNA_def_enum(ot->srna, "direction", logicbricks_move_direction, 1, "Direction", "Move Up or Down"); +} + + void ED_operatortypes_logic(void) { WM_operatortype_append(LOGIC_OT_sensor_remove); WM_operatortype_append(LOGIC_OT_sensor_add); + WM_operatortype_append(LOGIC_OT_sensor_move); WM_operatortype_append(LOGIC_OT_controller_remove); WM_operatortype_append(LOGIC_OT_controller_add); + WM_operatortype_append(LOGIC_OT_controller_move); WM_operatortype_append(LOGIC_OT_actuator_remove); WM_operatortype_append(LOGIC_OT_actuator_add); + WM_operatortype_append(LOGIC_OT_actuator_move); } diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index 5bc34183224..4ab2511fcd2 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -194,8 +194,9 @@ static void make_unique_prop_names_cb(bContext *C, void *strv, void *redraw_view } -static void sca_move_sensor(bContext *C, void *datav, void *move_up) +static void old_sca_move_sensor(bContext *C, void *datav, void *move_up) { + /* deprecated, no longer using it (moved to sca.c) */ Scene *scene= CTX_data_scene(C); bSensor *sens_to_delete= datav; int val; @@ -246,8 +247,9 @@ static void sca_move_sensor(bContext *C, void *datav, void *move_up) } } -static void sca_move_controller(bContext *C, void *datav, void *move_up) +static void old_sca_move_controller(bContext *C, void *datav, void *move_up) { + /* deprecated, no longer using it (moved to sca.c) */ Scene *scene= CTX_data_scene(C); bController *controller_to_del= datav; int val; @@ -301,8 +303,9 @@ static void sca_move_controller(bContext *C, void *datav, void *move_up) } } -static void sca_move_actuator(bContext *C, void *datav, void *move_up) +static void old_sca_move_actuator(bContext *C, void *datav, void *move_up) { + /* deprecated, no longer using it (moved to sca.c) */ Scene *scene= CTX_data_scene(C); bActuator *actuator_to_move= datav; int val; @@ -3188,6 +3191,11 @@ static void draw_sensor_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *lo && RNA_boolean_get(ptr, "expanded")) || RNA_boolean_get(ptr, "pinned"))); uiItemR(subrow, ptr, "pinned", UI_ITEM_R_NO_BG, "", 0); + if(RNA_boolean_get(ptr, "expanded")==0) { + uiItemEnumO(row, "LOGIC_OT_sensor_move", "", ICON_TRIA_UP, "direction", 1); // up + uiItemEnumO(row, "LOGIC_OT_sensor_move", "", ICON_TRIA_DOWN, "direction", 2); // down + } + uiItemO(row, "", ICON_X, "LOGIC_OT_sensor_remove"); } @@ -3527,6 +3535,11 @@ static void draw_controller_header(uiLayout *layout, PointerRNA *ptr) uiItemL(row, name, 0); uiItemR(row, ptr, "priority", 0, "", 0); + + if(RNA_boolean_get(ptr, "expanded")==0) { + uiItemEnumO(row, "LOGIC_OT_controller_move", "", ICON_TRIA_UP, "direction", 1); // up + uiItemEnumO(row, "LOGIC_OT_controller_move", "", ICON_TRIA_DOWN, "direction", 2); // down + } uiItemO(row, "", ICON_X, "LOGIC_OT_controller_remove"); } @@ -3606,6 +3619,10 @@ static void draw_actuator_header(uiLayout *layout, PointerRNA *ptr, PointerRNA * && RNA_boolean_get(ptr, "expanded")) || RNA_boolean_get(ptr, "pinned"))); uiItemR(subrow, ptr, "pinned", UI_ITEM_R_NO_BG, "", 0); + if(RNA_boolean_get(ptr, "expanded")==0) { + uiItemEnumO(row, "LOGIC_OT_actuator_move", "", ICON_TRIA_UP, "direction", 1); // up + uiItemEnumO(row, "LOGIC_OT_actuator_move", "", ICON_TRIA_DOWN, "direction", 2); // down + } uiItemO(row, "", ICON_X, "LOGIC_OT_actuator_remove"); } @@ -4825,15 +4842,15 @@ void logic_buttons(bContext *C, ARegion *ar) cpack(0x999999); glRecti(xco+22, yco, xco+width-22,yco+19); but= uiDefBut(block, LABEL, 0, controller_name(cont->type), (short)(xco+22), yco, 70, UI_UNIT_Y, cont, 0, 0, 0, 0, "Controller type"); - //uiButSetFunc(but, sca_move_controller, cont, NULL); + //uiButSetFunc(but, old_sca_move_controller, cont, NULL); but= uiDefBut(block, LABEL, 0, cont->name,(short)(xco+92), yco,(short)(width-158), UI_UNIT_Y, cont, 0, 0, 0, 0, "Controller name"); - //uiButSetFunc(but, sca_move_controller, cont, NULL); + //uiButSetFunc(but, old_sca_move_controller, cont, NULL); uiBlockBeginAlign(block); but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_UP, (short)(xco+width-(110+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up"); - uiButSetFunc(but, sca_move_controller, cont, (void *)TRUE); + uiButSetFunc(but, old_sca_move_controller, cont, (void *)TRUE); but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_DOWN, (short)(xco+width-(88+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down"); - uiButSetFunc(but, sca_move_controller, cont, (void *)FALSE); + uiButSetFunc(but, old_sca_move_controller, cont, (void *)FALSE); uiBlockEndAlign(block); ycoo= yco; @@ -4917,15 +4934,15 @@ void logic_buttons(bContext *C, ARegion *ar) set_col_sensor(sens->type, 1); glRecti(xco+22, yco, xco+width-22,yco+19); but= uiDefBut(block, LABEL, 0, sensor_name(sens->type), (short)(xco+22), yco, 80, UI_UNIT_Y, sens, 0, 0, 0, 0, ""); - //uiButSetFunc(but, sca_move_sensor, sens, NULL); + //uiButSetFunc(but, old_sca_move_sensor, sens, NULL); but= uiDefBut(block, LABEL, 0, sens->name, (short)(xco+102), yco, (short)(width-(pin?146:124)), UI_UNIT_Y, sens, 0, 31, 0, 0, ""); - //uiButSetFunc(but, sca_move_sensor, sens, NULL); + //uiButSetFunc(but, old_sca_move_sensor, sens, NULL); uiBlockBeginAlign(block); but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_UP, (short)(xco+width-(66+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up"); - uiButSetFunc(but, sca_move_sensor, sens, (void *)TRUE); + uiButSetFunc(but, old_sca_move_sensor, sens, (void *)TRUE); but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_DOWN, (short)(xco+width-(44+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down"); - uiButSetFunc(but, sca_move_sensor, sens, (void *)FALSE); + uiButSetFunc(but, old_sca_move_sensor, sens, (void *)FALSE); uiBlockEndAlign(block); } @@ -4995,15 +5012,15 @@ void logic_buttons(bContext *C, ARegion *ar) set_col_actuator(act->type, 1); glRecti((short)(xco+22), yco, (short)(xco+width-22),(short)(yco+19)); but= uiDefBut(block, LABEL, 0, actuator_name(act->type), (short)(xco+22), yco, 90, UI_UNIT_Y, act, 0, 0, 0, 0, "Actuator type"); - // uiButSetFunc(but, sca_move_actuator, act, NULL); + // uiButSetFunc(but, old_sca_move_actuator, act, NULL); but= uiDefBut(block, LABEL, 0, act->name, (short)(xco+112), yco, (short)(width-(pin?156:134)), UI_UNIT_Y, act, 0, 0, 0, 0, "Actuator name"); - // uiButSetFunc(but, sca_move_actuator, act, NULL); + // uiButSetFunc(but, old_sca_move_actuator, act, NULL); uiBlockBeginAlign(block); but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_UP, (short)(xco+width-(66+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up"); - uiButSetFunc(but, sca_move_actuator, act, (void *)TRUE); + uiButSetFunc(but, old_sca_move_actuator, act, (void *)TRUE); but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_DOWN, (short)(xco+width-(44+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down"); - uiButSetFunc(but, sca_move_actuator, act, (void *)FALSE); + uiButSetFunc(but, old_sca_move_actuator, act, (void *)FALSE); uiBlockEndAlign(block); ycoo= yco; From 7f63460a44d89cae52fbcb194d9040913d7cfb75 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 9 Jul 2010 07:53:06 +0000 Subject: [PATCH 384/674] - Active bezier points could be drawn twice - Unselected handles shouldn't have TH_LASTSEL_POINT color even if control point is active --- source/blender/editors/space_view3d/drawobject.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 7cbcc982bf6..be98e24ea9d 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -4475,13 +4475,13 @@ static void tekenvertsN(Nurb *nu, short sel, short hide_handles, void *lastsel) a= nu->pntsu; while(a--) { if(bezt->hide==0) { - if (bezt == lastsel) { + if (sel == 1 && bezt == lastsel) { UI_ThemeColor(TH_LASTSEL_POINT); bglVertex3fv(bezt->vec[1]); if (!hide_handles) { - bglVertex3fv(bezt->vec[0]); - bglVertex3fv(bezt->vec[2]); + if(bezt->f1 & SELECT) bglVertex3fv(bezt->vec[0]); + if(bezt->f3 & SELECT) bglVertex3fv(bezt->vec[2]); } UI_ThemeColor(color); From 4059df91a41576c2174cd8ff8284cd12ab0d01f7 Mon Sep 17 00:00:00 2001 From: Luca Bonavita Date: Fri, 9 Jul 2010 09:46:22 +0000 Subject: [PATCH 385/674] == user preferences == - tooltips were showing numbers in the addons categories list --- release/scripts/ui/space_userpref.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index a4be17ce4ba..64bf1e817a3 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -847,7 +847,7 @@ class USERPREF_PT_addons(bpy.types.Panel): cats = ["All", "Enabled", "Disabled"] + sorted(cats) - bpy.types.Scene.EnumProperty(items=[(cat, cat, str(i)) for i, cat in enumerate(cats)], + bpy.types.Scene.EnumProperty(items=[(cat, cat, cat + " addons") for cat in cats], name="Category", attr="addon_filter", description="Filter add-ons by category") bpy.types.Scene.StringProperty(name="Search", attr="addon_search", description="Search within the selected filter") From 761be67d8a5741bf04df19e2846b181d54aaa550 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 9 Jul 2010 13:57:59 +0000 Subject: [PATCH 386/674] allow sequencer image names to be editable --- source/blender/editors/mesh/meshtools.c | 4 ---- source/blender/makesrna/intern/rna_sequencer.c | 2 -- 2 files changed, 6 deletions(-) diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c index 70098e0812f..87b5c886b4a 100644 --- a/source/blender/editors/mesh/meshtools.c +++ b/source/blender/editors/mesh/meshtools.c @@ -82,10 +82,6 @@ /* own include */ #include "mesh_intern.h" -/* XXX */ -static int pupmenu(const char *dummy) {return 0;} -/* XXX */ - /* * ********************** no editmode!!! *********** */ diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index 0c60f04c2c2..9313a85c17f 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -583,9 +583,7 @@ static void rna_def_strip_element(BlenderRNA *brna) prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILENAME); RNA_def_property_string_sdna(prop, NULL, "name"); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Filename", ""); - RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SequenceElement_filename_set"); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); } From 6682dae779c94cf0fd2fbb8447b56dd5cc7b422e Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Fri, 9 Jul 2010 18:54:44 +0000 Subject: [PATCH 387/674] Fixed bug [#22555] OSX/Cocoa: Suppress delayed mouse position changed event after setting it --- 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 f65d4e93d59..6c29b7411fc 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -813,7 +813,11 @@ GHOST_TSuccess GHOST_SystemCocoa::setCursorPosition(GHOST_TInt32 x, GHOST_TInt32 GHOST_WindowCocoa* window = (GHOST_WindowCocoa*)m_windowManager->getActiveWindow(); if (!window) return GHOST_kFailure; + //Cursor and mouse dissociation placed here not to interfere with continuous grab + // (in cont. grab setMouseCursorPosition is directly called) + CGAssociateMouseAndMouseCursorPosition(false); setMouseCursorPosition(x, y); + CGAssociateMouseAndMouseCursorPosition(true); //Force mouse move event (not pushed by Cocoa) window->screenToClient(x, y, wx, wy); From ba0bad935c25a0e7eeff09b4f90e71f2c9c89fbc Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 9 Jul 2010 19:14:02 +0000 Subject: [PATCH 388/674] Fix #22796: GLEW compile errors on FreeBSD (this time in the right branch). --- extern/glew/include/GL/glew.h | 8 +++----- extern/glew/src/glew.c | 6 ++---- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/extern/glew/include/GL/glew.h b/extern/glew/include/GL/glew.h index 2014092e877..3cb7bed3dda 100644 --- a/extern/glew/include/GL/glew.h +++ b/extern/glew/include/GL/glew.h @@ -2702,7 +2702,7 @@ typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint* framebuffers); typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint* renderbuffers); typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURLAYERPROC) (GLenum target,GLenum attachment, GLuint texture,GLint level,GLint layer); +typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target,GLenum attachment, GLuint texture,GLint level,GLint layer); typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer); @@ -2723,7 +2723,7 @@ typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum targ #define glDeleteFramebuffers GLEW_GET_FUN(__glewDeleteFramebuffers) #define glDeleteRenderbuffers GLEW_GET_FUN(__glewDeleteRenderbuffers) #define glFramebufferRenderbuffer GLEW_GET_FUN(__glewFramebufferRenderbuffer) -#define glFramebufferTexturLayer GLEW_GET_FUN(__glewFramebufferTexturLayer) +#define glFramebufferTextureLayer GLEW_GET_FUN(__glewFramebufferTextureLayer) #define glFramebufferTexture1D GLEW_GET_FUN(__glewFramebufferTexture1D) #define glFramebufferTexture2D GLEW_GET_FUN(__glewFramebufferTexture2D) #define glFramebufferTexture3D GLEW_GET_FUN(__glewFramebufferTexture3D) @@ -8288,7 +8288,6 @@ typedef void (GLAPIENTRY * PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum typedef void (GLAPIENTRY * PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint* params); typedef void (GLAPIENTRY * PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); typedef void (GLAPIENTRY * PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); -typedef void (GLAPIENTRY * PFNGLVIDEOPARAMETERIVNVPROC) (GLuint video_slot, GLenum pname, const GLint* params); #define glGetVideoi64vNV GLEW_GET_FUN(__glewGetVideoi64vNV) #define glGetVideoivNV GLEW_GET_FUN(__glewGetVideoivNV) @@ -10563,7 +10562,7 @@ GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSPROC __glewCheckFramebufferStatus; GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSPROC __glewDeleteFramebuffers; GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSPROC __glewDeleteRenderbuffers; GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFERPROC __glewFramebufferRenderbuffer; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURLAYERPROC __glewFramebufferTexturLayer; +GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERPROC __glewFramebufferTextureLayer; GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DPROC __glewFramebufferTexture1D; GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DPROC __glewFramebufferTexture2D; GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DPROC __glewFramebufferTexture3D; @@ -11612,7 +11611,6 @@ GLEW_FUN_EXPORT PFNGLGETVIDEOUI64VNVPROC __glewGetVideoui64vNV; GLEW_FUN_EXPORT PFNGLGETVIDEOUIVNVPROC __glewGetVideouivNV; GLEW_FUN_EXPORT PFNGLPRESENTFRAMEDUALFILLNVPROC __glewPresentFrameDualFillNV; GLEW_FUN_EXPORT PFNGLPRESENTFRAMEKEYEDNVPROC __glewPresentFrameKeyedNV; -GLEW_FUN_EXPORT PFNGLVIDEOPARAMETERIVNVPROC __glewVideoParameterivNV; GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXNVPROC __glewPrimitiveRestartIndexNV; GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTNVPROC __glewPrimitiveRestartNV; diff --git a/extern/glew/src/glew.c b/extern/glew/src/glew.c index 24c6a726c38..1d947d364d3 100644 --- a/extern/glew/src/glew.c +++ b/extern/glew/src/glew.c @@ -547,7 +547,7 @@ PFNGLCHECKFRAMEBUFFERSTATUSPROC __glewCheckFramebufferStatus = NULL; PFNGLDELETEFRAMEBUFFERSPROC __glewDeleteFramebuffers = NULL; PFNGLDELETERENDERBUFFERSPROC __glewDeleteRenderbuffers = NULL; PFNGLFRAMEBUFFERRENDERBUFFERPROC __glewFramebufferRenderbuffer = NULL; -PFNGLFRAMEBUFFERTEXTURLAYERPROC __glewFramebufferTexturLayer = NULL; +PFNGLFRAMEBUFFERTEXTURELAYERPROC __glewFramebufferTextureLayer = NULL; PFNGLFRAMEBUFFERTEXTURE1DPROC __glewFramebufferTexture1D = NULL; PFNGLFRAMEBUFFERTEXTURE2DPROC __glewFramebufferTexture2D = NULL; PFNGLFRAMEBUFFERTEXTURE3DPROC __glewFramebufferTexture3D = NULL; @@ -1596,7 +1596,6 @@ PFNGLGETVIDEOUI64VNVPROC __glewGetVideoui64vNV = NULL; PFNGLGETVIDEOUIVNVPROC __glewGetVideouivNV = NULL; PFNGLPRESENTFRAMEDUALFILLNVPROC __glewPresentFrameDualFillNV = NULL; PFNGLPRESENTFRAMEKEYEDNVPROC __glewPresentFrameKeyedNV = NULL; -PFNGLVIDEOPARAMETERIVNVPROC __glewVideoParameterivNV = NULL; PFNGLPRIMITIVERESTARTINDEXNVPROC __glewPrimitiveRestartIndexNV = NULL; PFNGLPRIMITIVERESTARTNVPROC __glewPrimitiveRestartNV = NULL; @@ -2739,7 +2738,7 @@ static GLboolean _glewInit_GL_ARB_framebuffer_object (GLEW_CONTEXT_ARG_DEF_INIT) r = ((glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glDeleteFramebuffers")) == NULL) || r; r = ((glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glDeleteRenderbuffers")) == NULL) || r; r = ((glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)glewGetProcAddress((const GLubyte*)"glFramebufferRenderbuffer")) == NULL) || r; - r = ((glFramebufferTexturLayer = (PFNGLFRAMEBUFFERTEXTURLAYERPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexturLayer")) == NULL) || r; + r = ((glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureLayer")) == NULL) || r; r = ((glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture1D")) == NULL) || r; r = ((glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture2D")) == NULL) || r; r = ((glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture3D")) == NULL) || r; @@ -5303,7 +5302,6 @@ static GLboolean _glewInit_GL_NV_present_video (GLEW_CONTEXT_ARG_DEF_INIT) r = ((glGetVideouivNV = (PFNGLGETVIDEOUIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideouivNV")) == NULL) || r; r = ((glPresentFrameDualFillNV = (PFNGLPRESENTFRAMEDUALFILLNVPROC)glewGetProcAddress((const GLubyte*)"glPresentFrameDualFillNV")) == NULL) || r; r = ((glPresentFrameKeyedNV = (PFNGLPRESENTFRAMEKEYEDNVPROC)glewGetProcAddress((const GLubyte*)"glPresentFrameKeyedNV")) == NULL) || r; - r = ((glVideoParameterivNV = (PFNGLVIDEOPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glVideoParameterivNV")) == NULL) || r; return r; } From 0d9a81a1111ec5d60b95938e2a634a6d52298bef Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 9 Jul 2010 19:20:57 +0000 Subject: [PATCH 389/674] Fix #22794: problem with rendering panorama in 2.4 created files. --- source/blender/blenkernel/intern/object.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 78ec473ef93..6d264b3fed2 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -2755,7 +2755,7 @@ void object_camera_matrix( float pixsize; float shiftx=0.0, shifty=0.0, winside, viewfac; - rd->mode &= ~R_ORTHO; + rd->mode &= ~(R_ORTHO|R_PANORAMA); /* question mark */ (*ycor)= rd->yasp / rd->xasp; From 3eebaceaa633c62b8ff8c17333541ab9ad92ba81 Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Fri, 9 Jul 2010 23:14:07 +0000 Subject: [PATCH 390/674] Fix spelling. --- source/blender/makesrna/intern/rna_object.c | 2 +- source/gameengine/Converter/BL_BlenderDataConversion.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 2bb3a74252e..638d867e862 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -1476,7 +1476,7 @@ static void rna_def_object(BlenderRNA *brna) {OB_BOUND_SPHERE, "SPHERE", 0, "Sphere", ""}, {OB_BOUND_CYLINDER, "CYLINDER", 0, "Cylinder", ""}, {OB_BOUND_CONE, "CONE", 0, "Cone", ""}, - {OB_BOUND_POLYH, "POLYHEDER", 0, "Polyheder", ""}, + {OB_BOUND_POLYH, "POLYHEDRON", 0, "Polyhedron", ""}, {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem dupli_items[] = { diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp index 2f0f70ed9fe..fa32cfdb866 100644 --- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp +++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp @@ -1548,7 +1548,7 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj, objprop.m_boundclass = KX_BOUNDMESH; break; } - // Object is not a mesh... can't use polyheder. + // Object is not a mesh... can't use polyhedron. // Fall through and become a sphere. case OB_BOUND_SPHERE: { From ce0ff001ac3eec1fd8d50eafcfd3494681b3fe61 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Sat, 10 Jul 2010 11:09:26 +0000 Subject: [PATCH 391/674] Ensure that local installations (also known as portable installations) are possible again. For user config and data files, first check the 'local' location (where the executable is located), and only then the actual user locations (whatever the convention for the OSes; $HOME, %APPDATA%, etc). --- source/blender/blenlib/intern/path_util.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 772782e5467..3b8599fe1c6 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -1064,13 +1064,14 @@ char *BLI_get_folder(int folder_id, char *subfolder) switch (folder_id) { case BLENDER_DATAFILES: /* general case */ BLI_join_dirfile(search_path, "datafiles", subfolder); - if (get_path_user(path, search_path, "BLENDER_USER_DATAFILES")) break; if (get_path_local(path, search_path)) break; + if (get_path_user(path, search_path, "BLENDER_USER_DATAFILES")) break; if (get_path_system(path, search_path, "BLENDER_SYSTEM_DATAFILES")) break; return NULL; - case BLENDER_USER_DATAFILES: + case BLENDER_USER_DATAFILES: BLI_join_dirfile(search_path, "datafiles", subfolder); + if (get_path_local(path, search_path)) break; if (get_path_user(path, search_path, "BLENDER_USER_DATAFILES")) break; return NULL; @@ -1081,13 +1082,14 @@ char *BLI_get_folder(int folder_id, char *subfolder) case BLENDER_CONFIG: /* general case */ BLI_join_dirfile(search_path, "config", subfolder); - if (get_path_user(path, search_path, "BLENDER_USER_CONFIG")) break; if (get_path_local(path, search_path)) break; + if (get_path_user(path, search_path, "BLENDER_USER_CONFIG")) break; if (get_path_system(path, search_path, "BLENDER_SYSTEM_CONFIG")) break; return NULL; case BLENDER_USER_CONFIG: BLI_join_dirfile(search_path, "config", subfolder); + if (get_path_local(path, search_path)) break; if (get_path_user(path, search_path, "BLENDER_USER_CONFIG")) break; return NULL; @@ -1098,13 +1100,14 @@ char *BLI_get_folder(int folder_id, char *subfolder) case BLENDER_SCRIPTS: /* general case */ BLI_join_dirfile(search_path, "scripts", subfolder); - if (get_path_user(path, search_path, "BLENDER_USER_SCRIPTS")) break; if (get_path_local(path, search_path)) break; + if (get_path_user(path, search_path, "BLENDER_USER_SCRIPTS")) break; if (get_path_system(path, search_path, "BLENDER_SYSTEM_SCRIPTS")) break; return NULL; case BLENDER_USER_SCRIPTS: BLI_join_dirfile(search_path, "scripts", subfolder); + if (get_path_local(path, search_path)) break; if (get_path_user(path, search_path, "BLENDER_USER_SCRIPTS")) break; return NULL; @@ -1121,7 +1124,6 @@ char *BLI_get_folder(int folder_id, char *subfolder) case BLENDER_SYSTEM_PYTHON: BLI_join_dirfile(search_path, "python", subfolder); - if (get_path_system(path, search_path, "BLENDER_SYSTEM_PYTHON")) break; return NULL; } From 49c6aab6dce1d3f77fab2eef979d214fc674f4c1 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Sat, 10 Jul 2010 11:38:40 +0000 Subject: [PATCH 392/674] Fix for [#22793] Flip normals Missingf form face specials.... --- release/scripts/ui/space_view3d.py | 1 + 1 file changed, 1 insertion(+) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 2d48d2c3ddd..6860739bd03 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -1544,6 +1544,7 @@ class VIEW3D_MT_edit_mesh_faces(bpy.types.Menu): layout = self.layout layout.operator_context = 'INVOKE_REGION_WIN' + layout.operator("mesh.flip_normals") # layout.operator("mesh.bevel") # layout.operator("mesh.bevel") layout.operator("mesh.edge_face_add") From 047cc310131eacdc8925b47efa352ad29d3ed0b2 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 10 Jul 2010 15:44:27 +0000 Subject: [PATCH 393/674] patch by manaphuun on IRC. --- release/scripts/ui/space_image.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release/scripts/ui/space_image.py b/release/scripts/ui/space_image.py index f0a5a3384be..e9c963db7b3 100644 --- a/release/scripts/ui/space_image.py +++ b/release/scripts/ui/space_image.py @@ -145,8 +145,8 @@ class IMAGE_MT_uvs_showhide(bpy.types.Menu): layout = self.layout layout.operator("uv.reveal") - layout.operator("uv.hide") - layout.operator("uv.hide").unselected = True + layout.operator("uv.hide", text="Hide Selected") + layout.operator("uv.hide", text="Hide Unselected").unselected = True class IMAGE_MT_uvs_transform(bpy.types.Menu): From e37cbe9461a589699445b35e43ae731960b32429 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 10 Jul 2010 18:11:01 +0000 Subject: [PATCH 394/674] Bugfix [#22811] Dupli-Instancing for particles broken. commit r29079 removed 2 lines that are needed for instancing particles. --- source/blender/blenkernel/intern/particle_system.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index 3ed2181f908..33ea9f5ba6e 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -3232,6 +3232,10 @@ static void hair_step(ParticleSimulationData *sim, float cfra) if(psys->part->type==PART_HAIR && psys->flag & PSYS_HAIR_DYNAMICS) do_hair_dynamics(sim); + /* following lines were removed r29079 but cause bug [#22811], see report for details */ + psys_update_effectors(sim); + psys_update_path_cache(sim, cfra); + psys->flag |= PSYS_HAIR_UPDATED; } From 22371e88168f5a36623f68265f9994d76790c503 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 10 Jul 2010 19:17:52 +0000 Subject: [PATCH 395/674] [#22791] Can't change keyed strip attributes if two sequencer windows open own recent commit for overlay sequencer view brokey keyframing in the sequencer. for now prefetch and overlay views wont have correct fcurves applied. --- source/blender/blenkernel/intern/sequencer.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 36e768ec98d..6e48a71cec4 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -2544,10 +2544,6 @@ static TStripElem* do_build_seq_array_recursively( int i; TStripElem* se = 0; - // XXX for prefetch and overlay offset!..., very bad!!! - AnimData *adt= BKE_animdata_from_id(&scene->id); - BKE_animsys_evaluate_animdata(&scene->id, adt, cfra, ADT_RECALC_ANIM); - count = get_shown_sequences(seqbasep, cfra, chanshown, (Sequence **)&seq_arr); @@ -2561,6 +2557,14 @@ static TStripElem* do_build_seq_array_recursively( return 0; } +#if 0 /* commentind since this breaks keyframing, since it resets the value on draw */ + if(scene->r.cfra != cfra) { + // XXX for prefetch and overlay offset!..., very bad!!! + AnimData *adt= BKE_animdata_from_id(&scene->id); + BKE_animsys_evaluate_animdata(&scene->id, adt, cfra, ADT_RECALC_ANIM); + } +#endif + test_and_auto_discard_ibuf(se, seqrectx, seqrecty); if (se->ibuf_comp != 0) { From e531f3736df13d9143f4b4c7589d65b12df1ff1b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 10 Jul 2010 21:09:38 +0000 Subject: [PATCH 396/674] drawing in the timeline could change bezier keys while rendering, disable. --- source/blender/editors/space_time/space_time.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c index b2e1bfb9b93..b73c08e6542 100644 --- a/source/blender/editors/space_time/space_time.c +++ b/source/blender/editors/space_time/space_time.c @@ -473,7 +473,8 @@ static void time_main_area_draw(const bContext *C, ARegion *ar) UI_view2d_grid_free(grid); /* keyframes */ - time_draw_keyframes(C, stime, ar); + if(!G.rendering) /* ANIM_nla_mapping_apply_fcurve() modifies curve data while rendering, possible race condition */ + time_draw_keyframes(C, stime, ar); /* current frame */ if ((stime->flag & TIME_DRAWFRAMES)==0) flag |= DRAWCFRA_UNIT_SECONDS; From 96a7e478b6ef0c9f4b15e27ab22db548bbab1fe5 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Sat, 10 Jul 2010 21:15:10 +0000 Subject: [PATCH 397/674] Logic Editor Python API: link/unlink logics through python After initial talk with Matt (awhile ago) we realzed that rna_api would fit well for this instead of an operator. The next step would be to move the current UI code to use the rna funcs instead. Note: it takes the s/c/a as argument, not its name. (e.g. cont.link(actuator=act) ) Sample code to link all the logic bricks between each other: ob = bpy.context.object for cont in ob.game.controllers: for sens in ob.game.sensors: cont.link(sensor=sens) for act in ob.game.actuators: cont.link(actuator=act) For a script to create bricks, link bricks, unlink bricks and remove them: http://www.pasteall.org/14266 --- source/blender/blenkernel/BKE_sca.h | 3 + source/blender/blenkernel/intern/sca.c | 85 ++++++++++++------- source/blender/makesrna/intern/makesrna.c | 6 +- source/blender/makesrna/intern/rna_actuator.c | 2 + .../makesrna/intern/rna_actuator_api.c | 72 ++++++++++++++++ .../blender/makesrna/intern/rna_controller.c | 2 + .../makesrna/intern/rna_controller_api.c | 81 ++++++++++++++++++ source/blender/makesrna/intern/rna_internal.h | 3 + source/blender/makesrna/intern/rna_sensor.c | 2 + .../blender/makesrna/intern/rna_sensor_api.c | 72 ++++++++++++++++ 10 files changed, 296 insertions(+), 32 deletions(-) create mode 100644 source/blender/makesrna/intern/rna_actuator_api.c create mode 100644 source/blender/makesrna/intern/rna_controller_api.c create mode 100644 source/blender/makesrna/intern/rna_sensor_api.c diff --git a/source/blender/blenkernel/BKE_sca.h b/source/blender/blenkernel/BKE_sca.h index b1df32d5cd7..7adbfd9b48d 100644 --- a/source/blender/blenkernel/BKE_sca.h +++ b/source/blender/blenkernel/BKE_sca.h @@ -37,6 +37,9 @@ struct Object; struct bController; struct bActuator; +void link_logicbricks(void **poin, void ***ppoin, short *tot, short size); +void unlink_logicbricks(void **poin, void ***ppoin, short *tot); + void unlink_controller(struct bController *cont); void unlink_controllers(struct ListBase *lb); void free_controller(struct bController *cont); diff --git a/source/blender/blenkernel/intern/sca.c b/source/blender/blenkernel/intern/sca.c index 02b66dd9b32..12d1dfc83b0 100644 --- a/source/blender/blenkernel/intern/sca.c +++ b/source/blender/blenkernel/intern/sca.c @@ -45,6 +45,7 @@ #include "BKE_global.h" #include "BKE_main.h" #include "BKE_library.h" +#include "BKE_sca.h" /* ******************* SENSORS ************************ */ @@ -189,26 +190,13 @@ void unlink_controller(bController *cont) { bSensor *sens; Object *ob; - int a, removed; /* check for controller pointers in sensors */ ob= G.main->object.first; while(ob) { sens= ob->sensors.first; while(sens) { - removed= 0; - for(a=0; atotlinks; a++) { - if(removed) (sens->links)[a-1] = (sens->links)[a]; - else if((sens->links)[a] == cont) removed= 1; - } - if(removed) { - sens->totlinks--; - - if(sens->totlinks==0) { - MEM_freeN(sens->links); - sens->links= NULL; - } - } + unlink_logicbricks((void **)&cont, (void ***)&(sens->links), &sens->totlinks); sens= sens->next; } ob= ob->id.next; @@ -313,26 +301,13 @@ void unlink_actuator(bActuator *act) { bController *cont; Object *ob; - int a, removed; /* check for actuator pointers in controllers */ ob= G.main->object.first; while(ob) { cont= ob->controllers.first; while(cont) { - removed= 0; - for(a=0; atotlinks; a++) { - if(removed) (cont->links)[a-1] = (cont->links)[a]; - else if((cont->links)[a] == act) removed= 1; - } - if(removed) { - cont->totlinks--; - - if(cont->totlinks==0) { - MEM_freeN(cont->links); - cont->links= NULL; - } - } + unlink_logicbricks((void **)&act, (void ***)&(cont->links), &cont->totlinks); cont= cont->next; } ob= ob->id.next; @@ -512,7 +487,6 @@ bActuator *new_actuator(int type) } /* ******************** GENERAL ******************* */ - void clear_sca_new_poins_ob(Object *ob) { bSensor *sens; @@ -807,3 +781,56 @@ void sca_move_actuator(bActuator *act_to_move, Object *ob, int move_up) } } } + +void link_logicbricks(void **poin, void ***ppoin, short *tot, short size) +{ + void **old_links= NULL; + + int ibrick; + + /* check if the bricks are already linked */ + for (ibrick=0; ibrick < *tot; ibrick++) { + if ((*ppoin)[ibrick] == *poin) + return; + } + + if (*ppoin) { + old_links= *ppoin; + + (*tot) ++; + *ppoin = MEM_callocN((*tot)*size, "new link"); + + for (ibrick=0; ibrick < *tot - 1; ibrick++) { + (*ppoin)[ibrick] = old_links[ibrick]; + } + (*ppoin)[ibrick] = *poin; + + if(old_links) MEM_freeN(old_links); + } + else { + (*tot) = 1; + *ppoin = MEM_callocN((*tot)*size, "new link"); + (*ppoin)[0] = *poin; + } +} + +void unlink_logicbricks(void **poin, void ***ppoin, short *tot) +{ + int ibrick, removed; + + removed= 0; + for (ibrick=0; ibrick < *tot; ibrick++) { + if(removed) (*ppoin)[ibrick - removed] = (*ppoin)[ibrick]; + else if((*ppoin)[ibrick] == *poin) removed = 1; + } + + if (removed) { + (*tot) --; + + if(*tot == 0) { + MEM_freeN(*ppoin); + (*ppoin)= NULL; + } + return; + } +} diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c index d37f390919d..40f6c1de67e 100644 --- a/source/blender/makesrna/intern/makesrna.c +++ b/source/blender/makesrna/intern/makesrna.c @@ -2237,7 +2237,7 @@ RNAProcessItem PROCESS_ITEMS[]= { {"rna_action.c", "rna_action_api.c", RNA_def_action}, {"rna_animation.c", "rna_animation_api.c", RNA_def_animation}, {"rna_animviz.c", NULL, RNA_def_animviz}, - {"rna_actuator.c", NULL, RNA_def_actuator}, + {"rna_actuator.c", "rna_actuator_api.c", RNA_def_actuator}, {"rna_armature.c", "rna_armature_api.c", RNA_def_armature}, {"rna_boid.c", NULL, RNA_def_boid}, {"rna_brush.c", NULL, RNA_def_brush}, @@ -2246,7 +2246,7 @@ RNAProcessItem PROCESS_ITEMS[]= { {"rna_color.c", NULL, RNA_def_color}, {"rna_constraint.c", NULL, RNA_def_constraint}, {"rna_context.c", NULL, RNA_def_context}, - {"rna_controller.c", NULL, RNA_def_controller}, + {"rna_controller.c", "rna_controller_api.c", RNA_def_controller}, {"rna_curve.c", NULL, RNA_def_curve}, {"rna_fcurve.c", "rna_fcurve_api.c", RNA_def_fcurve}, {"rna_fluidsim.c", NULL, RNA_def_fluidsim}, @@ -2273,7 +2273,7 @@ RNAProcessItem PROCESS_ITEMS[]= { {"rna_scene.c", "rna_scene_api.c", RNA_def_scene}, {"rna_screen.c", NULL, RNA_def_screen}, {"rna_sculpt_paint.c", NULL, RNA_def_sculpt_paint}, - {"rna_sensor.c", NULL, RNA_def_sensor}, + {"rna_sensor.c", "rna_sensor_api.c", RNA_def_sensor}, {"rna_sequencer.c", "rna_sequencer_api.c", RNA_def_sequencer}, {"rna_smoke.c", NULL, RNA_def_smoke}, {"rna_space.c", NULL, RNA_def_space}, diff --git a/source/blender/makesrna/intern/rna_actuator.c b/source/blender/makesrna/intern/rna_actuator.c index 2a29f3332b5..e7031ad8517 100644 --- a/source/blender/makesrna/intern/rna_actuator.c +++ b/source/blender/makesrna/intern/rna_actuator.c @@ -486,6 +486,8 @@ void rna_def_actuator(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_SHOW); RNA_def_property_ui_text(prop, "Expanded", "Set actuator expanded in the user interface"); RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1); + + RNA_api_actuator(srna); } static void rna_def_action_actuator(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_actuator_api.c b/source/blender/makesrna/intern/rna_actuator_api.c new file mode 100644 index 00000000000..b61f9e252a6 --- /dev/null +++ b/source/blender/makesrna/intern/rna_actuator_api.c @@ -0,0 +1,72 @@ +/** + * $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) 2010 Blender Foundation. + * All rights reserved. + * + * + * Contributor(s): + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include +#include + +#include "WM_types.h" +#include "RNA_define.h" + +#ifdef RNA_RUNTIME + +#include "BKE_sca.h" +#include "DNA_controller_types.h" +#include "DNA_actuator_types.h" + +static void rna_Actuator_link(bActuator *act, bController *cont) +{ + link_logicbricks((void **)&act, (void ***)&(cont->links), &cont->totlinks, sizeof(bActuator *)); +} + +static void rna_Actuator_unlink(bActuator *act, bController *cont) +{ + unlink_logicbricks((void **)&act, (void ***)&(cont->links), &cont->totlinks); +} + +#else + +void RNA_api_actuator(StructRNA *srna) +{ + FunctionRNA *func; + PropertyRNA *parm; + + func= RNA_def_function(srna, "link", "rna_Actuator_link"); + RNA_def_function_ui_description(func, "Link the actuator to a controller."); + parm= RNA_def_pointer(func, "controller", "Controller", "", "Controller to link to."); + RNA_def_property_flag(parm, PROP_REQUIRED); + RNA_def_property_update(parm, NC_LOGIC, NULL); + + func= RNA_def_function(srna, "unlink", "rna_Actuator_unlink"); + RNA_def_function_ui_description(func, "Unlink the actuator from a controller."); + parm= RNA_def_pointer(func, "controller", "Controller", "", "Controller to unlink from."); + RNA_def_property_flag(parm, PROP_REQUIRED); + RNA_def_property_update(parm, NC_LOGIC, NULL); +} + +#endif + diff --git a/source/blender/makesrna/intern/rna_controller.c b/source/blender/makesrna/intern/rna_controller.c index 275a34e3bbb..a004f2d11b2 100644 --- a/source/blender/makesrna/intern/rna_controller.c +++ b/source/blender/makesrna/intern/rna_controller.c @@ -156,6 +156,8 @@ void RNA_def_controller(BlenderRNA *brna) RNA_def_struct_refine_func(srna, "rna_Controller_refine"); RNA_def_struct_ui_text(srna, "Controller", "Game engine logic brick to process events, connecting sensors to actuators"); + RNA_api_controller(srna); + prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); RNA_def_property_ui_text(prop, "Name", ""); RNA_def_struct_name_property(srna, prop); diff --git a/source/blender/makesrna/intern/rna_controller_api.c b/source/blender/makesrna/intern/rna_controller_api.c new file mode 100644 index 00000000000..dab2ce8c3a1 --- /dev/null +++ b/source/blender/makesrna/intern/rna_controller_api.c @@ -0,0 +1,81 @@ +/** + * $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) 2010 Blender Foundation. + * All rights reserved. + * + * + * Contributor(s): + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include +#include + +#include "WM_types.h" +#include "RNA_define.h" + +#ifdef RNA_RUNTIME + +#include "BKE_sca.h" +#include "DNA_sensor_types.h" +#include "DNA_controller_types.h" +#include "DNA_actuator_types.h" + +static void rna_Controller_link(bController *cont, bSensor *sens, bActuator *act) +{ + if(sens) + link_logicbricks((void **)&cont, (void ***)&(sens->links), &sens->totlinks, sizeof(bController *)); + if(act) + link_logicbricks((void **)&act, (void ***)&(cont->links), &cont->totlinks, sizeof(bActuator *)); +} + +static void rna_Controller_unlink(bController *cont, bSensor *sens, bActuator *act) +{ + if(sens) + unlink_logicbricks((void **)&cont, (void ***)&(sens->links), &sens->totlinks); + if(act) + unlink_logicbricks((void **)&act, (void ***)&(cont->links), &cont->totlinks); +} + +#else + +void RNA_api_controller(StructRNA *srna) +{ + FunctionRNA *func; + PropertyRNA *parm; + + func= RNA_def_function(srna, "link", "rna_Controller_link"); + RNA_def_function_ui_description(func, "Link the controller with a sensor/actuator."); + parm= RNA_def_pointer(func, "sensor", "Sensor", "", "Sensor to link the controller to."); + RNA_def_property_update(parm, NC_LOGIC, NULL); + parm= RNA_def_pointer(func, "actuator", "Actuator", "", "Actuator to link the controller to."); + RNA_def_property_update(parm, NC_LOGIC, NULL); + + func= RNA_def_function(srna, "unlink", "rna_Controller_unlink"); + RNA_def_function_ui_description(func, "Unlink the controller from a sensor/actuator."); + parm= RNA_def_pointer(func, "sensor", "Sensor", "", "Sensor to unlink the controller from."); + RNA_def_property_update(parm, NC_LOGIC, NULL); + parm= RNA_def_pointer(func, "actuator", "Actuator", "", "Actuator to unlink the controller from."); + RNA_def_property_update(parm, NC_LOGIC, NULL); +} + +#endif + diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h index 950811ef295..806a22dd3b8 100644 --- a/source/blender/makesrna/intern/rna_internal.h +++ b/source/blender/makesrna/intern/rna_internal.h @@ -237,6 +237,9 @@ void RNA_api_sequence_strip(StructRNA *srna); void RNA_api_text(struct StructRNA *srna); void RNA_api_ui_layout(struct StructRNA *srna); void RNA_api_wm(struct StructRNA *srna); +void RNA_api_sensor(struct StructRNA *srna); +void RNA_api_controller(struct StructRNA *srna); +void RNA_api_actuator(struct StructRNA *srna); /* main collection functions */ void RNA_def_main_cameras(BlenderRNA *brna, PropertyRNA *cprop); diff --git a/source/blender/makesrna/intern/rna_sensor.c b/source/blender/makesrna/intern/rna_sensor.c index 17137d0d259..90a520d6d92 100644 --- a/source/blender/makesrna/intern/rna_sensor.c +++ b/source/blender/makesrna/intern/rna_sensor.c @@ -302,6 +302,8 @@ static void rna_def_sensor(BlenderRNA *brna) RNA_def_property_boolean_funcs(prop, NULL, "rna_Sensor_tap_set"); RNA_def_property_ui_text(prop, "Tap", "Trigger controllers only for an instant, even while the sensor remains true"); RNA_def_property_update(prop, NC_LOGIC, NULL); + + RNA_api_sensor(srna); } static void rna_def_always_sensor(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_sensor_api.c b/source/blender/makesrna/intern/rna_sensor_api.c new file mode 100644 index 00000000000..afdb71b4f3b --- /dev/null +++ b/source/blender/makesrna/intern/rna_sensor_api.c @@ -0,0 +1,72 @@ +/** + * $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) 2010 Blender Foundation. + * All rights reserved. + * + * + * Contributor(s): + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include +#include + +#include "WM_types.h" +#include "RNA_define.h" + +#ifdef RNA_RUNTIME + +#include "BKE_sca.h" +#include "DNA_sensor_types.h" +#include "DNA_controller_types.h" + +static void rna_Sensor_link(bSensor *sens, bController *cont) +{ + link_logicbricks((void **)&cont, (void ***)&(sens->links), &sens->totlinks, sizeof(bController *)); +} + +static void rna_Sensor_unlink(bSensor *sens, bController *cont) +{ + unlink_logicbricks((void **)&cont, (void ***)&(sens->links), &sens->totlinks); +} + +#else + +void RNA_api_sensor(StructRNA *srna) +{ + FunctionRNA *func; + PropertyRNA *parm; + + func= RNA_def_function(srna, "link", "rna_Sensor_link"); + RNA_def_function_ui_description(func, "Link the sensor to a controller."); + parm= RNA_def_pointer(func, "controller", "Controller", "", "Controller to link to."); + RNA_def_property_flag(parm, PROP_REQUIRED); + RNA_def_property_update(parm, NC_LOGIC, NULL); + + func= RNA_def_function(srna, "unlink", "rna_Sensor_unlink"); + RNA_def_function_ui_description(func, "Unlink the sensor from a controller."); + parm= RNA_def_pointer(func, "controller", "Controller", "", "Controller to unlink from."); + RNA_def_property_flag(parm, PROP_REQUIRED); + RNA_def_property_update(parm, NC_LOGIC, NULL); +} + +#endif + From f91f4d317615889d086d79161c9906b11879e9d3 Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Sat, 10 Jul 2010 23:21:25 +0000 Subject: [PATCH 398/674] Fix type mismatch. --- source/blender/blenkernel/intern/sca.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/sca.c b/source/blender/blenkernel/intern/sca.c index 12d1dfc83b0..61e98ce9d45 100644 --- a/source/blender/blenkernel/intern/sca.c +++ b/source/blender/blenkernel/intern/sca.c @@ -659,7 +659,7 @@ void sca_remove_ob_poin(Object *obt, Object *ob) } /* ******************** INTERFACE ******************* */ -void sca_move_sensor(bSensor *sens_to_move, Object *ob, int *move_up) +void sca_move_sensor(bSensor *sens_to_move, Object *ob, int move_up) { bSensor *sens, *tmp; From 4497bd3b90eb76609176ba06009c2843a62fadbe Mon Sep 17 00:00:00 2001 From: Mitchell Stokes Date: Sun, 11 Jul 2010 08:48:21 +0000 Subject: [PATCH 399/674] Adding COMPAT_ENGINE stuff to the particle panels so that they no longer show up when using the "Blender Game" render engine. Also, "Maximize Gain" on the sound actuator was incorrectly labeled "Minimize Gain", so I fixed it. --- release/scripts/ui/properties_particle.py | 48 ++++++++++++++----- source/blender/makesrna/intern/rna_actuator.c | 2 +- 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/release/scripts/ui/properties_particle.py b/release/scripts/ui/properties_particle.py index 328a9816524..58e602dd1e2 100644 --- a/release/scripts/ui/properties_particle.py +++ b/release/scripts/ui/properties_particle.py @@ -32,13 +32,14 @@ def particle_panel_enabled(context, psys): return (psys.point_cache.baked is False) and (not psys.edited) and (not context.particle_system_editable) -def particle_panel_poll(context): +def particle_panel_poll(panel, context): psys = context.particle_system + engine = context.scene.render.engine if psys is None: return False if psys.settings is None: return False - return psys.settings.type in ('EMITTER', 'REACTOR', 'HAIR') + return psys.settings.type in ('EMITTER', 'REACTOR', 'HAIR') and (engine in panel.COMPAT_ENGINES) class ParticleButtonsPanel(bpy.types.Panel): @@ -47,15 +48,17 @@ class ParticleButtonsPanel(bpy.types.Panel): bl_context = "particle" def poll(self, context): - return particle_panel_poll(context) + return particle_panel_poll(self, context) class PARTICLE_PT_context_particles(ParticleButtonsPanel): bl_label = "" bl_show_header = False + COMPAT_ENGINES = {'BLENDER_RENDER'} def poll(self, context): - return (context.particle_system or context.object) + engine = context.scene.render.engine + return (context.particle_system or context.object) and (engine in self.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -134,14 +137,16 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel): class PARTICLE_PT_custom_props(ParticleButtonsPanel, PropertyPanel): + COMPAT_ENGINES = {'BLENDER_RENDER'} _context_path = "particle_system.settings" class PARTICLE_PT_emission(ParticleButtonsPanel): bl_label = "Emission" + COMPAT_ENGINES = {'BLENDER_RENDER'} def poll(self, context): - if particle_panel_poll(context): + if particle_panel_poll(self, context): return not context.particle_system.point_cache.external else: return False @@ -201,14 +206,16 @@ class PARTICLE_PT_emission(ParticleButtonsPanel): class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel): bl_label = "Hair dynamics" bl_default_closed = True + COMPAT_ENGINES = {'BLENDER_RENDER'} def poll(self, context): psys = context.particle_system + engine = context.scene.render.engine if psys is None: return False if psys.settings is None: return False - return psys.settings.type == 'HAIR' + return psys.settings.type == 'HAIR' and (engine in self.COMPAT_ENGINES) def draw_header(self, context): #cloth = context.cloth.collision_settings @@ -256,9 +263,11 @@ class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel): class PARTICLE_PT_cache(ParticleButtonsPanel): bl_label = "Cache" bl_default_closed = True + COMPAT_ENGINES = {'BLENDER_RENDER'} def poll(self, context): psys = context.particle_system + engine = context.scene.render.engine if psys is None: return False if psys.settings is None: @@ -266,7 +275,7 @@ class PARTICLE_PT_cache(ParticleButtonsPanel): phystype = psys.settings.physics_type if phystype == 'NO' or phystype == 'KEYED': return False - return psys.settings.type in ('EMITTER', 'REACTOR') or (psys.settings.type == 'HAIR' and psys.hair_dynamics) + return (psys.settings.type in ('EMITTER', 'REACTOR') or (psys.settings.type == 'HAIR' and psys.hair_dynamics)) and engine in self.COMPAT_ENGINES def draw(self, context): psys = context.particle_system @@ -276,9 +285,10 @@ class PARTICLE_PT_cache(ParticleButtonsPanel): class PARTICLE_PT_velocity(ParticleButtonsPanel): bl_label = "Velocity" + COMPAT_ENGINES = {'BLENDER_RENDER'} def poll(self, context): - if particle_panel_poll(context): + if particle_panel_poll(self, context): psys = context.particle_system return psys.settings.physics_type != 'BOIDS' and not psys.point_cache.external else: @@ -322,9 +332,10 @@ class PARTICLE_PT_velocity(ParticleButtonsPanel): class PARTICLE_PT_rotation(ParticleButtonsPanel): bl_label = "Rotation" + COMPAT_ENGINES = {'BLENDER_RENDER'} def poll(self, context): - if particle_panel_poll(context): + if particle_panel_poll(self, context): psys = context.particle_system return psys.settings.physics_type != 'BOIDS' and not psys.point_cache.external else: @@ -367,9 +378,10 @@ class PARTICLE_PT_rotation(ParticleButtonsPanel): class PARTICLE_PT_physics(ParticleButtonsPanel): bl_label = "Physics" + COMPAT_ENGINES = {'BLENDER_RENDER'} def poll(self, context): - if particle_panel_poll(context): + if particle_panel_poll(self, context): return not context.particle_system.point_cache.external else: return False @@ -562,16 +574,18 @@ class PARTICLE_PT_physics(ParticleButtonsPanel): class PARTICLE_PT_boidbrain(ParticleButtonsPanel): bl_label = "Boid Brain" + COMPAT_ENGINES = {'BLENDER_RENDER'} def poll(self, context): psys = context.particle_system + engine = context.scene.render.engine if psys is None: return False if psys.settings is None: return False if psys.point_cache.external: return False - return psys.settings.physics_type == 'BOIDS' + return psys.settings.physics_type == 'BOIDS' and engine in self.COMPAT_ENGINES def draw(self, context): layout = self.layout @@ -660,14 +674,16 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel): class PARTICLE_PT_render(ParticleButtonsPanel): bl_label = "Render" + COMPAT_ENGINES = {'BLENDER_RENDER'} def poll(self, context): psys = context.particle_system + engine = context.scene.render.engine if psys is None: return False if psys.settings is None: return False - return True + return engine in self.COMPAT_ENGINES def draw(self, context): layout = self.layout @@ -829,14 +845,16 @@ class PARTICLE_PT_render(ParticleButtonsPanel): class PARTICLE_PT_draw(ParticleButtonsPanel): bl_label = "Display" bl_default_closed = True + COMPAT_ENGINES = {'BLENDER_RENDER'} def poll(self, context): psys = context.particle_system + engine = context.scene.render.engine if psys is None: return False if psys.settings is None: return False - return True + return engine in self.COMPAT_ENGINES def draw(self, context): layout = self.layout @@ -886,6 +904,7 @@ class PARTICLE_PT_draw(ParticleButtonsPanel): class PARTICLE_PT_children(ParticleButtonsPanel): bl_label = "Children" bl_default_closed = True + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): layout = self.layout @@ -970,6 +989,7 @@ class PARTICLE_PT_children(ParticleButtonsPanel): class PARTICLE_PT_field_weights(ParticleButtonsPanel): bl_label = "Field Weights" bl_default_closed = True + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): part = context.particle_system.settings @@ -982,6 +1002,7 @@ class PARTICLE_PT_field_weights(ParticleButtonsPanel): class PARTICLE_PT_force_fields(ParticleButtonsPanel): bl_label = "Force Field Settings" bl_default_closed = True + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): layout = self.layout @@ -1009,6 +1030,7 @@ class PARTICLE_PT_force_fields(ParticleButtonsPanel): class PARTICLE_PT_vertexgroups(ParticleButtonsPanel): bl_label = "Vertexgroups" bl_default_closed = True + COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): layout = self.layout diff --git a/source/blender/makesrna/intern/rna_actuator.c b/source/blender/makesrna/intern/rna_actuator.c index e7031ad8517..f07cc6fd419 100644 --- a/source/blender/makesrna/intern/rna_actuator.c +++ b/source/blender/makesrna/intern/rna_actuator.c @@ -922,7 +922,7 @@ static void rna_def_sound_actuator(BlenderRNA *brna) prop= RNA_def_property(srna, "maximum_gain_3d", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "sound3D.max_gain"); RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 0.01); - RNA_def_property_ui_text(prop, "Minimum Gain", "The maximum gain of the sound, no matter how near it is"); + RNA_def_property_ui_text(prop, "Maximum Gain", "The maximum gain of the sound, no matter how near it is"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "reference_distance_3d", PROP_FLOAT, PROP_NONE); From 1a98efa426f23d16a12e8c28577474543ea9f501 Mon Sep 17 00:00:00 2001 From: Mitchell Stokes Date: Sun, 11 Jul 2010 09:31:19 +0000 Subject: [PATCH 400/674] Fixing a crash created by an earlier GLSL lighting fix for dynamic loading. When implementing the fix I forgot to check for materials that did not have a blender shader (ie, non GLSL materials). --- source/gameengine/Ketsji/KX_BlenderMaterial.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.h b/source/gameengine/Ketsji/KX_BlenderMaterial.h index e28c43d1a23..5bf62ff6b7c 100644 --- a/source/gameengine/Ketsji/KX_BlenderMaterial.h +++ b/source/gameengine/Ketsji/KX_BlenderMaterial.h @@ -88,8 +88,11 @@ public: virtual void Replace_IScene(SCA_IScene *val) { - mScene= static_cast(val); - mBlenderShader->SetScene(mScene); + if (mBlenderShader) + { + mScene= static_cast(val); + mBlenderShader->SetScene(mScene); + } }; #ifndef DISABLE_PYTHON From 6ef92ab52e8be44d4eb887620a276c2b72f5167b Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Sun, 11 Jul 2010 09:50:23 +0000 Subject: [PATCH 401/674] fixed missing 'filepath' parameter in SOUND_OT_open. Patch provided by Mitchel Stokes (moguri) filepath was changed from not being added by default (why?), so now has to be added with flag in each operator. I hope not many others were missed ;) --- source/blender/editors/sound/sound_ops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/sound/sound_ops.c b/source/blender/editors/sound/sound_ops.c index 0d2dfd75863..678295376ba 100644 --- a/source/blender/editors/sound/sound_ops.c +++ b/source/blender/editors/sound/sound_ops.c @@ -150,7 +150,7 @@ void SOUND_OT_open(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_RELPATH); + WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH | WM_FILESEL_RELPATH); RNA_def_boolean(ot->srna, "cache", FALSE, "Cache", "Cache the sound in memory."); } From 834f2a42ce09eeecc96182a84d7ab4b043bac5a5 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 11 Jul 2010 12:39:50 +0000 Subject: [PATCH 402/674] - sequencer wasnt drawing handles, the deprecated v2d was being used which gave a pixely of -nan. - removed bf_editors from cmake since there now split up. --- source/blender/editors/space_sequencer/sequencer_draw.c | 7 +++---- source/creator/CMakeLists.txt | 1 - 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index 30f0f84c092..4f52a17f623 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -365,14 +365,13 @@ static void draw_seq_handle(View2D *v2d, Sequence *seq, float pixelx, short dire } } -static void draw_seq_extensions(Scene *scene, SpaceSeq *sseq, Sequence *seq) +static void draw_seq_extensions(Scene *scene, ARegion *ar, SpaceSeq *sseq, Sequence *seq) { float x1, x2, y1, y2, pixely, a; char col[3], blendcol[3]; - View2D *v2d= &sseq->v2d; + View2D *v2d= &ar->v2d; if(seq->type >= SEQ_EFFECT) return; - if(v2d->mask.ymax == v2d->mask.ymin) return; /* avoid divide by zero */ x1= seq->startdisp; x2= seq->enddisp; @@ -625,7 +624,7 @@ static void draw_seq_strip(Scene *scene, ARegion *ar, SpaceSeq *sseq, Sequence * /* draw additional info and controls */ if (!is_single_image) - draw_seq_extensions(scene, sseq, seq); + draw_seq_extensions(scene, ar, sseq, seq); draw_seq_handle(v2d, seq, pixelx, SEQ_LEFTHANDLE); draw_seq_handle(v2d, seq, pixelx, SEQ_RIGHTHANDLE); diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 05baec55891..36fd67c85c6 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -425,7 +425,6 @@ ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux") blender_CTR bf_moto bf_windowmanager - bf_editors bf_blroutines bf_converter bf_dummy From ffcec4024bf3e408e2a8f581846954f9b4ed3f86 Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Sun, 11 Jul 2010 15:30:32 +0000 Subject: [PATCH 403/674] installation paths: small fix: removed extra slash in system path --- intern/ghost/intern/GHOST_SystemX11.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/intern/ghost/intern/GHOST_SystemX11.cpp b/intern/ghost/intern/GHOST_SystemX11.cpp index 7644281bcea..c9228e68e54 100644 --- a/intern/ghost/intern/GHOST_SystemX11.cpp +++ b/intern/ghost/intern/GHOST_SystemX11.cpp @@ -1461,7 +1461,7 @@ void GHOST_SystemX11::putClipboard(GHOST_TInt8 *buffer, bool selection) const const GHOST_TUns8* GHOST_SystemX11::getSystemDir() const { - return (GHOST_TUns8*)"/usr/share/"; + return (GHOST_TUns8*)"/usr/share"; } const GHOST_TUns8* GHOST_SystemX11::getUserDir() const @@ -1477,4 +1477,5 @@ const GHOST_TUns8* GHOST_SystemX11::getUserDir() const const GHOST_TUns8* GHOST_SystemX11::getBinaryDir() const { return NULL; -} \ No newline at end of file +} + From 148ccc2f17d63748512dd5f04ceebda7c2284f82 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 11 Jul 2010 16:12:32 +0000 Subject: [PATCH 404/674] bugfix [#22800] Mathutil bug with vector example wasnt updated. --- source/blender/python/doc/examples/mathutils.Vector.py | 8 ++++---- source/blender/python/doc/examples/mathutils.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/source/blender/python/doc/examples/mathutils.Vector.py b/source/blender/python/doc/examples/mathutils.Vector.py index 143ad234416..fb00e8aead6 100644 --- a/source/blender/python/doc/examples/mathutils.Vector.py +++ b/source/blender/python/doc/examples/mathutils.Vector.py @@ -1,15 +1,15 @@ import mathutils # zero length vector -vec = mathutils.Vector(0, 0, 1) +vec = mathutils.Vector((0, 0, 1)) # unit length vector vec_a = vec.copy().normalize() -vec_b = mathutils.Vector(0, 1, 2) +vec_b = mathutils.Vector((0, 1, 2)) -vec2d = mathutils.Vector(1, 2) -vec3d = mathutils.Vector([1, 0, 0]) +vec2d = mathutils.Vector((1, 2)) +vec3d = mathutils.Vector((1, 0, 0)) vec4d = vec_a.copy().resize4D() # other mathutuls types diff --git a/source/blender/python/doc/examples/mathutils.py b/source/blender/python/doc/examples/mathutils.py index 6cd11a1baaa..4a5de5887c9 100644 --- a/source/blender/python/doc/examples/mathutils.py +++ b/source/blender/python/doc/examples/mathutils.py @@ -1,7 +1,7 @@ import mathutils from math import radians -vec = mathutils.Vector(1.0, 2.0, 3.0) +vec = mathutils.Vector((1.0, 2.0, 3.0)) mat_rot = mathutils.RotationMatrix(radians(90), 4, 'X') mat_trans = mathutils.TranslationMatrix(vec) From 75a0301c7df147a35789db191346f8a266aef591 Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Sun, 11 Jul 2010 16:28:28 +0000 Subject: [PATCH 405/674] == installation paths == separate define for the user and system blender directory name, on Linux the directories should be named /usr/share/blender and ~/.blender. Platform maintainers should still check if that's ok. --- source/blender/blenlib/BLI_path_util.h | 9 ++++++--- source/blender/blenlib/intern/path_util.c | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/source/blender/blenlib/BLI_path_util.h b/source/blender/blenlib/BLI_path_util.h index 866201cba52..316b850805d 100644 --- a/source/blender/blenlib/BLI_path_util.h +++ b/source/blender/blenlib/BLI_path_util.h @@ -101,11 +101,14 @@ char *BLI_get_folder_create(int folder_id, char *subfolder); #define BLENDER_HISTORY_FILE "recent-files.txt" #ifdef WIN32 -#define BLENDER_BASE_FORMAT "%s\\Blender Foundation\\Blender\\%s" +#define BLENDER_USER_FORMAT "%s\\Blender Foundation\\Blender\\%s" +#define BLENDER_SYSTEM_FORMAT "%s\\Blender Foundation\\Blender\\%s" #elif __APPLE__ -#define BLENDER_BASE_FORMAT "%s/Blender/%s" +#define BLENDER_USER_FORMAT "%s/Blender/%s" +#define BLENDER_SYSTEM_FORMAT "%s/Blender/%s" #else -#define BLENDER_BASE_FORMAT "%s/.blender/%s" +#define BLENDER_USER_FORMAT "%s/.blender/%s" +#define BLENDER_SYSTEM_FORMAT "%s/blender/%s" #endif void BLI_setenv(const char *env, const char *val); diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 3b8599fe1c6..a75d57a988e 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -1014,7 +1014,7 @@ static int get_path_user(char *targetpath, char *folder_name, char *envvar) user_base_path = (const char *)GHOST_getUserDir(); if (user_base_path) { - BLI_snprintf(user_path, FILE_MAX, BLENDER_BASE_FORMAT, user_base_path, blender_version_decimal()); + BLI_snprintf(user_path, FILE_MAX, BLENDER_USER_FORMAT, user_base_path, blender_version_decimal()); } if(!user_path[0]) @@ -1040,7 +1040,7 @@ static int get_path_system(char *targetpath, char *folder_name, char *envvar) system_base_path = (const char *)GHOST_getSystemDir(); if (system_base_path) { - BLI_snprintf(system_path, FILE_MAX, BLENDER_BASE_FORMAT, system_base_path, blender_version_decimal()); + BLI_snprintf(system_path, FILE_MAX, BLENDER_SYSTEM_FORMAT, system_base_path, blender_version_decimal()); } if(!system_path[0]) From c013974a7c2e0365f8884390002ba9b515a5edb2 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 12 Jul 2010 08:43:49 +0000 Subject: [PATCH 406/674] set metaball limit for not drawing small scale motherballs to a 1/10th of what it was. durian blood splats were reaching this threshold. also fix for memory leaks when the motherball is too small. --- source/blender/blenkernel/intern/mball.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c index a97bec670d6..c41dcfa9588 100644 --- a/source/blender/blenkernel/intern/mball.c +++ b/source/blender/blenkernel/intern/mball.c @@ -2125,13 +2125,22 @@ void metaball_polygonize(Scene *scene, Object *ob, ListBase *dispbase) if((totelem > 512) && (totelem <= 1024)) init_metaball_octal_tree(4); if(totelem > 1024) init_metaball_octal_tree(5); - /* don't polygonize metaballs with too high resolution (base mball to small) */ + /* don't polygonize metaballs with too high resolution (base mball to small) + * note: Eps was 0.0001f but this was giving problems for blood animation for durian, using 0.00001f */ if(metaball_tree) { - if(ob->size[0]<=0.0001f*(metaball_tree->first->x_max - metaball_tree->first->x_min) || - ob->size[1]<=0.0001f*(metaball_tree->first->y_max - metaball_tree->first->y_min) || - ob->size[2]<=0.0001f*(metaball_tree->first->z_max - metaball_tree->first->z_min)) + if( ob->size[0] <= 0.00001f * (metaball_tree->first->x_max - metaball_tree->first->x_min) || + ob->size[1] <= 0.00001f * (metaball_tree->first->y_max - metaball_tree->first->y_min) || + ob->size[2] <= 0.00001f * (metaball_tree->first->z_max - metaball_tree->first->z_min)) { + new_pgn_element(-1); /* free values created by init_meta */ + MEM_freeN(mainb); + + /* free tree */ + free_metaball_octal_node(metaball_tree->first); + MEM_freeN(metaball_tree); + metaball_tree= NULL; + return; } } From 0a11d4c81d5481243236efcd99e8bac40d2790ec Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 12 Jul 2010 09:55:41 +0000 Subject: [PATCH 407/674] [#22817] Beta patch for cmake-MinGW compilation no 2 ommit FORCE CFlags, else users cant change their cflags. --- CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 29af4db6073..3e8b812e57c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -485,7 +485,7 @@ IF(WIN32) SET(PCRE_LIB pcre) ENDIF(WITH_OPENCOLLADA) - # TODO: IF(WITH_LCMS) + # TODO: IF(WITH_LCMS) IF(WITH_FFMPEG) SET(FFMPEG ${LIBDIR}/ffmpeg) @@ -534,7 +534,7 @@ IF(WIN32) ELSE(MSVC) # MINGW SET(LLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid") - SET(CMAKE_CXX_FLAGS "-pipe -funsigned-char -fno-strict-aliasing -mwindows" CACHE STRING "Mingw C++ flags ") + SET(CMAKE_CXX_FLAGS "-pipe -funsigned-char -fno-strict-aliasing" CACHE STRING "Mingw C++ flags ") SET(CMAKE_C_FLAGS "-pipe -funsigned-char -fno-strict-aliasing" CACHE STRING "Mingw C flags ") SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g" CACHE STRING "Mingw debug C++ flags ") @@ -561,7 +561,7 @@ IF(WIN32) SET(GETTEXT_LIB intl) ENDIF(WITH_INTERNATIONAL) - SET(JPEG_LIBRARY jpeg) + SET(JPEG_LIBRARY libjpeg) SET(PNG_LIBRARIES png) SET(ZLIB ${LIBDIR}/zlib) @@ -607,7 +607,7 @@ IF(WIN32) IF(WITH_OPENEXR) SET(OPENEXR ${LIBDIR}/gcc/openexr) SET(OPENEXR_INC ${OPENEXR}/include ${OPENEXR}/include/OpenEXR) - SET(OPENEXR_LIB Half IlmImf Iex) + SET(OPENEXR_LIB Half IlmImf Imath IlmThread) SET(OPENEXR_LIBPATH ${OPENEXR}/lib) ENDIF(WITH_OPENEXR) From 2222117a37052a8e2e33677bd4e83223e34c63a0 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 12 Jul 2010 10:47:41 +0000 Subject: [PATCH 408/674] 2.5: disable toolshelf, it doesn't save its state when closing Blender and will not be finished before release, so no point in having it there yet. --- source/blender/editors/space_view3d/space_view3d.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index 2b89fbbb656..caad2afba7f 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -996,7 +996,10 @@ void ED_spacetype_view3d(void) art->draw= view3d_tools_area_draw; BLI_addhead(&st->regiontypes, art); +#if 0 + /* unfinished still */ view3d_toolshelf_register(art); +#endif /* regions: tool properties */ art= MEM_callocN(sizeof(ARegionType), "spacetype view3d region"); From 0815fd4762ccc066aa4bec4496c0299f6195c78f Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 12 Jul 2010 10:55:05 +0000 Subject: [PATCH 409/674] 2.5: remove pin floating panels settings, there are no floating panels at the moment so it shouldn't be there. --- release/scripts/ui/space_userpref.py | 1 - .../editors/interface/interface_panel.c | 26 ------------------- source/blender/makesdna/DNA_userdef_types.h | 2 +- source/blender/makesrna/intern/rna_userdef.c | 4 --- 4 files changed, 1 insertion(+), 32 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 64bf1e817a3..f4560e87e95 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -162,7 +162,6 @@ class USERPREF_PT_interface(bpy.types.Panel): col.prop(view, "show_view_name", text="View Name") col.prop(view, "show_playback_fps", text="Playback FPS") col.prop(view, "global_scene") - col.prop(view, "pin_floating_panels") col.prop(view, "object_origin_size") col.separator() diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c index dae2e35f99b..61694b859c5 100644 --- a/source/blender/editors/interface/interface_panel.c +++ b/source/blender/editors/interface/interface_panel.c @@ -285,32 +285,6 @@ void uiEndPanel(uiBlock *block, int width, int height) } } -#if 0 -void uiPanelToMouse(const bContext *C, Panel *pa) -{ - /* global control over this feature; UI_PNL_TO_MOUSE only called for hotkey panels */ - if(U.uiflag & USER_PANELPINNED); - else if(pa->control & UI_PNL_TO_MOUSE) { - int mx, my; - - mx= CTX_wm_window(C)->eventstate->x; - my= CTX_wm_window(C)->eventstate->y; - - pa->ofsx= mx-pa->sizex/2; - pa->ofsy= my-pa->sizey/2; - - if(pa->flag & PNL_CLOSED) pa->flag &= ~PNL_CLOSED; - } - - if(pa->control & UI_PNL_UNSTOW) { - if(pa->flag & PNL_CLOSEDY) { - pa->flag &= ~PNL_CLOSED; - } - } -} -#endif - - static void ui_offset_panel_block(uiBlock *block) { uiStyle *style= U.uistyles.first; diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index 16a3b95d71a..80e240d703c 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -439,7 +439,7 @@ extern UserDef U; /* from blenkernel blender.c */ #define USER_FLIPFULLSCREEN (1 << 7) #define USER_ALLWINCODECS (1 << 8) #define USER_MENUOPENAUTO (1 << 9) -#define USER_PANELPINNED (1 << 10) +#define USER_PANELPINNED (1 << 10) /* deprecated */ #define USER_AUTOPERSP (1 << 11) #define USER_LOCKAROUND (1 << 12) #define USER_GLOBALUNDO (1 << 13) diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 3a734dde0c3..4f44ebbce42 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -1940,10 +1940,6 @@ static void rna_def_userdef_view(BlenderRNA *brna) RNA_def_property_range(prop, 1, 40); RNA_def_property_ui_text(prop, "Hold RMB Open Toolbox Delay", "Time in 1/10 seconds to hold the Right Mouse Button before opening the toolbox"); - prop= RNA_def_property(srna, "pin_floating_panels", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_PANELPINNED); - RNA_def_property_ui_text(prop, "Pin Floating Panels", "Make floating panels invoked by a hotkey (e.g. N Key) open at the previous location"); - prop= RNA_def_property(srna, "use_column_layout", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_PLAINMENUS); RNA_def_property_ui_text(prop, "Toolbox Column Layout", "Use a column layout for toolbox"); From 50671905d696b5f91a6a182ed617e7be46c9f2d2 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 12 Jul 2010 11:02:01 +0000 Subject: [PATCH 410/674] 2.5: rename "Operator Cheat Sheet (new textblock)" to "Operator Cheat Sheet", this is already reported after running the operator. --- release/scripts/ui/space_info.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index cc9e47905f9..ca8371b85fe 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -329,7 +329,7 @@ class INFO_MT_help(bpy.types.Menu): class HELP_OT_operator_cheat_sheet(bpy.types.Operator): bl_idname = "help.operator_cheat_sheet" - bl_label = "Operator Cheat Sheet (new textblock)" + bl_label = "Operator Cheat Sheet" def execute(self, context): op_strings = [] From fa39db244148911f04fd4de52425258248b8eb91 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 12 Jul 2010 11:04:51 +0000 Subject: [PATCH 411/674] 2.5: remove armature "B-Bone Rest" option, this was only added to keep broken behavior for backwards compatibility, it's been there long enough now to be removed. --- release/scripts/ui/properties_data_armature.py | 2 -- source/blender/blenkernel/intern/armature.c | 14 ++++++-------- source/blender/makesdna/DNA_armature_types.h | 2 +- source/blender/makesrna/intern/rna_armature.c | 5 ----- 4 files changed, 7 insertions(+), 16 deletions(-) diff --git a/release/scripts/ui/properties_data_armature.py b/release/scripts/ui/properties_data_armature.py index 805a21b3be2..0575f13e8be 100644 --- a/release/scripts/ui/properties_data_armature.py +++ b/release/scripts/ui/properties_data_armature.py @@ -93,7 +93,6 @@ class DATA_PT_skeleton(DataButtonsPanel): if wide_ui: col = split.column() col.prop(arm, "deform_quaternion", text="Quaternion") - col.prop(arm, "deform_bbone_rest", text="B-Bones Rest") class DATA_PT_display(DataButtonsPanel): @@ -122,7 +121,6 @@ class DATA_PT_display(DataButtonsPanel): col = split.column() col.prop(arm, "draw_group_colors", text="Colors") col.prop(arm, "delay_deform", text="Delay Refresh") - col.prop(ob, "x_ray", text="X-Ray (Object)") class DATA_PT_bone_groups(DataButtonsPanel): diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c index 557f3900d7b..990993b1077 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -687,11 +687,11 @@ Mat4 *b_bone_spline_setup(bPoseChannel *pchan, int rest) /* ************ Armature Deform ******************* */ -static void pchan_b_bone_defmats(bPoseChannel *pchan, int use_quaternion, int rest_def) +static void pchan_b_bone_defmats(bPoseChannel *pchan, int use_quaternion) { Bone *bone= pchan->bone; Mat4 *b_bone= b_bone_spline_setup(pchan, 0); - Mat4 *b_bone_rest= (rest_def)? NULL: b_bone_spline_setup(pchan, 1); + Mat4 *b_bone_rest= b_bone_spline_setup(pchan, 1); Mat4 *b_bone_mats; DualQuat *b_bone_dual_quats= NULL; float tmat[4][4]; @@ -718,10 +718,7 @@ static void pchan_b_bone_defmats(bPoseChannel *pchan, int use_quaternion, int re unit_m4(tmat); for(a=0; asegments; a++) { - if(b_bone_rest) - invert_m4_m4(tmat, b_bone_rest[a].mat); - else - tmat[3][1] = -a*(bone->length/(float)bone->segments); + invert_m4_m4(tmat, b_bone_rest[a].mat); mul_serie_m4(b_bone_mats[a+1].mat, pchan->chan_mat, bone->arm_mat, b_bone[a].mat, tmat, b_bone_mats[0].mat, NULL, NULL, NULL); @@ -919,7 +916,6 @@ void armature_deform_verts(Object *armOb, Object *target, DerivedMesh *dm, float obinv[4][4], premat[4][4], postmat[4][4]; int use_envelope = deformflag & ARM_DEF_ENVELOPE; int use_quaternion = deformflag & ARM_DEF_QUATERNION; - int bbone_rest_def = deformflag & ARM_DEF_B_BONE_REST; int invert_vgroup= deformflag & ARM_DEF_INVERT_VGROUP; int numGroups = 0; /* safety for vertexgroup index overflow */ int i, target_totvert = 0; /* safety for vertexgroup overflow */ @@ -946,7 +942,7 @@ void armature_deform_verts(Object *armOb, Object *target, DerivedMesh *dm, for(pchan = armOb->pose->chanbase.first; pchan; pchan = pchan->next) { if(!(pchan->bone->flag & BONE_NO_DEFORM)) { if(pchan->bone->segments > 1) - pchan_b_bone_defmats(pchan, use_quaternion, bbone_rest_def); + pchan_b_bone_defmats(pchan, use_quaternion); if(use_quaternion) { pchan->dual_quat= &dualquats[totchan++]; @@ -1701,6 +1697,8 @@ void armature_rebuild_pose(Object *ob, bArmature *arm) ob->pose->flag &= ~POSE_RECALC; ob->pose->flag |= POSE_WAS_REBUILT; + + make_pose_channels_hash(ob->pose); } diff --git a/source/blender/makesdna/DNA_armature_types.h b/source/blender/makesdna/DNA_armature_types.h index 258646f0e55..f7533ff9bde 100644 --- a/source/blender/makesdna/DNA_armature_types.h +++ b/source/blender/makesdna/DNA_armature_types.h @@ -134,7 +134,7 @@ typedef enum eArmature_DeformFlag { ARM_DEF_VGROUP = (1<<0), ARM_DEF_ENVELOPE = (1<<1), ARM_DEF_QUATERNION = (1<<2), - ARM_DEF_B_BONE_REST = (1<<3), + ARM_DEF_B_BONE_REST = (1<<3), /* deprecated */ ARM_DEF_INVERT_VGROUP = (1<<4) } eArmature_DeformFlag; diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index 4b9ae691dcb..9239378f496 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -861,11 +861,6 @@ static void rna_def_armature(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Use Dual Quaternion Deformation", "Enable deform rotation with Quaternions"); RNA_def_property_update(prop, 0, "rna_Armature_update_data"); - prop= RNA_def_property(srna, "deform_bbone_rest", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "deformflag", ARM_DEF_B_BONE_REST); - RNA_def_property_ui_text(prop, "B-Bones Deform in Rest Position", "Make B-Bones deform already in Rest Position"); - RNA_def_property_update(prop, 0, "rna_Armature_update_data"); - //prop= RNA_def_property(srna, "deform_invert_vertexgroups", PROP_BOOLEAN, PROP_NONE); //RNA_def_property_boolean_negative_sdna(prop, NULL, "deformflag", ARM_DEF_INVERT_VGROUP); //RNA_def_property_ui_text(prop, "Invert Vertex Group Influence", "Invert Vertex Group influence (only for Modifiers)"); From 41a66025478aab8811eb47f6d1f16ede11de9349 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 12 Jul 2010 11:17:42 +0000 Subject: [PATCH 412/674] 2.5: remove user preferences to always snap for translate/rotate/scale, with new behavior of the snap setting in the 3d view these are no longer necessary. --- release/scripts/ui/space_userpref.py | 7 ------- source/blender/editors/transform/transform_snap.c | 15 +-------------- source/blender/makesdna/DNA_userdef_types.h | 6 +++--- source/blender/makesrna/intern/rna_userdef.c | 13 ------------- 4 files changed, 4 insertions(+), 37 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index f4560e87e95..44b6858bed3 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -280,13 +280,6 @@ class USERPREF_PT_edit(bpy.types.Panel): row.separator() col = row.column() - col.label(text="Snap:") - col.prop(edit, "snap_translate", text="Translate") - col.prop(edit, "snap_rotate", text="Rotate") - col.prop(edit, "snap_scale", text="Scale") - col.separator() - col.separator() - col.separator() col.label(text="Grease Pencil:") col.prop(edit, "grease_pencil_manhattan_distance", text="Manhattan Distance") col.prop(edit, "grease_pencil_euclidean_distance", text="Euclidean Distance") diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index 9d8057caea6..bfa9c0c1e2c 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -1897,26 +1897,13 @@ void snapGridAction(TransInfo *t, float *val, GearsType action) { void snapGrid(TransInfo *t, float *val) { - int invert; GearsType action; // Only do something if using Snap to Grid if (t->tsnap.mode != SCE_SNAP_MODE_INCREMENT) return; - if(t->mode==TFM_ROTATION || t->mode==TFM_WARP || t->mode==TFM_TILT || t->mode==TFM_TRACKBALL || t->mode==TFM_BONE_ROLL) - invert = U.flag & USER_AUTOROTGRID; - else if(t->mode==TFM_RESIZE || t->mode==TFM_SHEAR || t->mode==TFM_BONESIZE || t->mode==TFM_SHRINKFATTEN || t->mode==TFM_CURVE_SHRINKFATTEN) - invert = U.flag & USER_AUTOSIZEGRID; - else - invert = U.flag & USER_AUTOGRABGRID; - - if(invert) { - action = activeSnap(t) ? NO_GEARS: BIG_GEARS; - } - else { - action = activeSnap(t) ? BIG_GEARS : NO_GEARS; - } + action = activeSnap(t) ? BIG_GEARS : NO_GEARS; if (action == BIG_GEARS && (t->modifiers & MOD_PRECISION)) { action = SMALL_GEARS; diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index 80e240d703c..b6e52699340 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -390,9 +390,9 @@ extern UserDef U; /* from blenkernel blender.c */ /* flag */ #define USER_AUTOSAVE (1 << 0) -#define USER_AUTOGRABGRID (1 << 1) -#define USER_AUTOROTGRID (1 << 2) -#define USER_AUTOSIZEGRID (1 << 3) +#define USER_AUTOGRABGRID (1 << 1) /* deprecated */ +#define USER_AUTOROTGRID (1 << 2) /* deprecated */ +#define USER_AUTOSIZEGRID (1 << 3) /* deprecated */ #define USER_SCENEGLOBAL (1 << 4) #define USER_TRACKBALL (1 << 5) #define USER_DUPLILINK (1 << 6) diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 4f44ebbce42..d6aec37d6fb 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -2124,19 +2124,6 @@ static void rna_def_userdef_edit(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_GLOBALUNDO); RNA_def_property_ui_text(prop, "Global Undo", "Global undo works by keeping a full copy of the file itself in memory, so takes extra memory"); - /* snapping */ - prop= RNA_def_property(srna, "snap_translate", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_AUTOGRABGRID); - RNA_def_property_ui_text(prop, "Enable Translation Snap", "Snap objects and sub-objects to grid units when moving"); - - prop= RNA_def_property(srna, "snap_rotate", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_AUTOROTGRID); - RNA_def_property_ui_text(prop, "Enable Rotation Snap", "Snap objects and sub-objects to grid units when rotating"); - - prop= RNA_def_property(srna, "snap_scale", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_AUTOSIZEGRID); - RNA_def_property_ui_text(prop, "Enable Scaling Snap", "Snap objects and sub-objects to grid units when scaling"); - /* auto keyframing */ prop= RNA_def_property(srna, "use_auto_keying", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "autokey_mode", AUTOKEY_ON); From 51d8c5d93fa09e7692d1e50434ca3cf4689a8b37 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 12 Jul 2010 11:28:16 +0000 Subject: [PATCH 413/674] [#22824] OpenEXR Save from byte buffer bug - Saving a typical byte buffer as an exr wasnt converting into linear colorspace. - Remove checks for 1 and 2 channel images, these will write as RGB anyway and are very rare. - 3 Channel images were having the alpha channel written from the red color channel, write 1.0 instead. --- .../imbuf/intern/openexr/openexr_api.cpp | 52 +++++++++++++------ 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp index fd505115994..0bac4935d86 100644 --- a/source/blender/imbuf/intern/openexr/openexr_api.cpp +++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp @@ -46,6 +46,7 @@ _CRTIMP void __cdecl _invalid_parameter_noinfo(void) #include "MEM_guardedalloc.h" #include "BLI_blenlib.h" +#include "BLI_math_color.h" #include "IMB_imbuf_types.h" #include "IMB_imbuf.h" @@ -236,27 +237,44 @@ static int imb_save_openexr_half(struct ImBuf *ibuf, char *name, int flags) for (int j = ibuf->x; j > 0; j--) { to->r = from[0]; - to->g = (channels >= 2)? from[1]: from[0]; - to->b = (channels >= 3)? from[2]: from[0]; - to->a = (channels >= 4)? from[3]: from[0]; + to->g = from[1]; + to->b = from[2]; + to->a = (channels >= 4)? from[3]: 1.0f; to++; from += 4; } } } else { unsigned char *from; - - for (int i = ibuf->y-1; i >= 0; i--) - { - from= (unsigned char *)ibuf->rect + channels*i*width; - - for (int j = ibuf->x; j > 0; j--) + + if(ibuf->profile != IB_PROFILE_NONE) { + for (int i = ibuf->y-1; i >= 0; i--) { - to->r = (float)(from[0])/255.0; - to->g = (float)((channels >= 2)? from[1]: from[0])/255.0; - to->b = (float)((channels >= 3)? from[2]: from[0])/255.0; - to->a = (float)((channels >= 4)? from[3]: from[0])/255.0; - to++; from += 4; + from= (unsigned char *)ibuf->rect + channels*i*width; + + for (int j = ibuf->x; j > 0; j--) + { + to->r = (float)(from[0])/255.0; + to->g = (float)(from[1])/255.0; + to->b = (float)(from[2])/255.0; + to->a = (float)(channels >= 4) ? from[3]/255.0 : 1.0f; + to++; from += 4; + } + } + } + else { + for (int i = ibuf->y-1; i >= 0; i--) + { + from= (unsigned char *)ibuf->rect + channels*i*width; + + for (int j = ibuf->x; j > 0; j--) + { + to->r = srgb_to_linearrgb((float)from[0] / 255.0); + to->g = srgb_to_linearrgb((float)from[1] / 255.0); + to->b = srgb_to_linearrgb((float)from[2] / 255.0); + to->a = channels >= 4 ? (float)from[3]/255.0 : 1.0f; + to++; from += 4; + } } } } @@ -308,9 +326,9 @@ static int imb_save_openexr_float(struct ImBuf *ibuf, char *name, int flags) float *rect[4] = {NULL, NULL, NULL, NULL}; rect[0]= ibuf->rect_float + channels*(height-1)*width; - rect[1]= (channels >= 2)? rect[0]+1: rect[0]; - rect[2]= (channels >= 3)? rect[0]+2: rect[0]; - rect[3]= (channels >= 4)? rect[0]+3: rect[0]; + rect[1]= rect[0]+1; + rect[2]= rect[0]+2; + rect[3]= (channels >= 4)? rect[0]+3: 1.0f; frameBuffer.insert ("R", Slice (FLOAT, (char *)rect[0], xstride, ystride)); frameBuffer.insert ("G", Slice (FLOAT, (char *)rect[1], xstride, ystride)); From ac981c08afed8e79e4bff07c12b551b888020f20 Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Mon, 12 Jul 2010 11:37:15 +0000 Subject: [PATCH 414/674] Update MSVC project files --- intern/ghost/make/msvc_9_0/ghost.vcproj | 8 ++++++++ projectfiles_vc9/blender/blender.vcproj | 4 ++-- .../blender/blenlib/BLI_blenlib.vcproj | 8 ++++++++ projectfiles_vc9/blender/imbuf/BL_imbuf.vcproj | 4 ++++ .../blender/makesrna/RNA_makesrna.vcproj | 16 ++++++++++++++++ 5 files changed, 38 insertions(+), 2 deletions(-) diff --git a/intern/ghost/make/msvc_9_0/ghost.vcproj b/intern/ghost/make/msvc_9_0/ghost.vcproj index a7779400488..b51e14275c9 100644 --- a/intern/ghost/make/msvc_9_0/ghost.vcproj +++ b/intern/ghost/make/msvc_9_0/ghost.vcproj @@ -468,6 +468,10 @@ RelativePath="..\..\GHOST_IWindow.h" > + + @@ -525,6 +529,10 @@ RelativePath="..\..\intern\GHOST_NDOFManager.cpp" > + + diff --git a/projectfiles_vc9/blender/blender.vcproj b/projectfiles_vc9/blender/blender.vcproj index f35c48b9a2f..83ea66cebd7 100644 --- a/projectfiles_vc9/blender/blender.vcproj +++ b/projectfiles_vc9/blender/blender.vcproj @@ -74,7 +74,7 @@ + + @@ -684,6 +688,10 @@ RelativePath="..\..\..\source\blender\blenlib\intern\BLI_callbacks.h" > + + diff --git a/projectfiles_vc9/blender/imbuf/BL_imbuf.vcproj b/projectfiles_vc9/blender/imbuf/BL_imbuf.vcproj index 97a950fb8ce..3da0d068401 100644 --- a/projectfiles_vc9/blender/imbuf/BL_imbuf.vcproj +++ b/projectfiles_vc9/blender/imbuf/BL_imbuf.vcproj @@ -589,6 +589,10 @@ RelativePath="..\..\..\source\blender\imbuf\intern\thumbs.c" > + + diff --git a/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj b/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj index 3819a298e47..185410f16c9 100644 --- a/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj +++ b/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj @@ -605,6 +605,10 @@ RelativePath="..\..\..\source\blender\makesrna\intern\rna_actuator.c" > + + @@ -657,6 +661,10 @@ RelativePath="..\..\..\source\blender\makesrna\intern\rna_controller.c" > + + @@ -809,10 +817,18 @@ RelativePath="..\..\..\source\blender\makesrna\intern\rna_sensor.c" > + + + + From b9e241d3e3750e3e86089253bfe91fbd02a873ea Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 12 Jul 2010 12:07:32 +0000 Subject: [PATCH 415/674] error in last commit --- source/blender/imbuf/intern/openexr/openexr_api.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp index 0bac4935d86..18c8bef762d 100644 --- a/source/blender/imbuf/intern/openexr/openexr_api.cpp +++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp @@ -328,7 +328,7 @@ static int imb_save_openexr_float(struct ImBuf *ibuf, char *name, int flags) 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: 1.0f; + 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)); From 44c30fbbac3e73b0d1fcb132ee149f4f497637c3 Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Mon, 12 Jul 2010 13:25:57 +0000 Subject: [PATCH 416/674] BGE bug #22760: VideoTexture not available when Blender is compiled without FFMPEG. VideoTexture can be used without FFMPEG, no need to disable it. --- source/gameengine/Ketsji/KX_PythonInit.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/source/gameengine/Ketsji/KX_PythonInit.cpp b/source/gameengine/Ketsji/KX_PythonInit.cpp index 5fe62a0e220..7327b9c08ff 100644 --- a/source/gameengine/Ketsji/KX_PythonInit.cpp +++ b/source/gameengine/Ketsji/KX_PythonInit.cpp @@ -1989,10 +1989,7 @@ void setupGamePython(KX_KetsjiEngine* ketsjiengine, KX_Scene* startscene, Main * initGeometry(); initBGL(); initBLF(); - -#ifdef WITH_FFMPEG initVideoTexture(); -#endif /* could be done a lot more nicely, but for now a quick way to get bge.* working */ PyRun_SimpleString("__import__('sys').modules['bge']=[mod for mod in (type(__builtins__)('bge'), ) if mod.__dict__.update({'logic':__import__('GameLogic'), 'render':__import__('Rasterizer'), 'events':__import__('GameKeys'), 'constraints':__import__('PhysicsConstraints'), 'types':__import__('GameTypes')}) is None][0]"); From 9e57892b90b84bd33f825afcbb90a021b06b374f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 12 Jul 2010 13:35:00 +0000 Subject: [PATCH 417/674] dont add a rect buffer for EXR's, the sequencer discards them immediately and functions that need a rect should create one on the fly. this shows a problem with Imbuf where there is no way to ask to only load the native type byte/float. --- source/blender/imbuf/intern/openexr/openexr_api.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp index 18c8bef762d..22af379d949 100644 --- a/source/blender/imbuf/intern/openexr/openexr_api.cpp +++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp @@ -1011,8 +1011,16 @@ struct ImBuf *imb_load_openexr(unsigned char *mem, int size, int flags) file->setFrameBuffer (frameBuffer); file->readPixels (dw.min.y, dw.max.y); - - IMB_rect_from_float(ibuf); + + // XXX, ImBuf has no nice way to deal with this. + // ideally IM_rect would be used when the caller wants a rect BUT + // at the moment all functions use IM_rect. + // Disabling this is ok because all functions should check if a rect exists and create one on demand. + // + // Disabling this because the sequencer frees immediate. + // + // if(flag & IM_rect) + // IMB_rect_from_float(ibuf); } } From 731824c464e03b133ea9698c2d74dbb8e7f890be Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 12 Jul 2010 14:54:05 +0000 Subject: [PATCH 418/674] support for colorspace conversion when saving srgb float buffers (from the sequencer) as openexr. --- .../imbuf/intern/openexr/openexr_api.cpp | 45 ++++++++++++------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp index 22af379d949..a0969979817 100644 --- a/source/blender/imbuf/intern/openexr/openexr_api.cpp +++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp @@ -229,29 +229,44 @@ static int imb_save_openexr_half(struct ImBuf *ibuf, char *name, int flags) sizeof(float), sizeof(float) * -width)); if(ibuf->rect_float) { float *from; - - for (int i = ibuf->y-1; i >= 0; i--) - { - from= ibuf->rect_float + channels*i*width; - - for (int j = ibuf->x; j > 0; j--) + + if(ibuf->profile == IB_PROFILE_LINEAR_RGB) { + for (int i = ibuf->y-1; i >= 0; i--) { - to->r = from[0]; - to->g = from[1]; - to->b = from[2]; - to->a = (channels >= 4)? from[3]: 1.0f; - to++; from += 4; + from= ibuf->rect_float + channels*i*width; + + for (int j = ibuf->x; j > 0; j--) + { + to->r = from[0]; + to->g = from[1]; + to->b = from[2]; + to->a = (channels >= 4)? from[3]: 1.0f; + to++; 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->r = srgb_to_linearrgb(from[0]); + to->g = srgb_to_linearrgb(from[1]); + to->b = srgb_to_linearrgb(from[2]); + to->a = (channels >= 4)? from[3]: 1.0f; + to++; from += 4; + } } } } else { unsigned char *from; - if(ibuf->profile != IB_PROFILE_NONE) { + if(ibuf->profile == IB_PROFILE_LINEAR_RGB) { for (int i = ibuf->y-1; i >= 0; i--) { - from= (unsigned char *)ibuf->rect + channels*i*width; - for (int j = ibuf->x; j > 0; j--) { to->r = (float)(from[0])/255.0; @@ -265,8 +280,6 @@ static int imb_save_openexr_half(struct ImBuf *ibuf, char *name, int flags) else { for (int i = ibuf->y-1; i >= 0; i--) { - from= (unsigned char *)ibuf->rect + channels*i*width; - for (int j = ibuf->x; j > 0; j--) { to->r = srgb_to_linearrgb((float)from[0] / 255.0); From a470640f2e88c0997b12600b9de652da6aac7444 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 12 Jul 2010 14:57:24 +0000 Subject: [PATCH 419/674] sequencer float conversion was only using rgb -> float conversion inconsistantly, some places used colorspace conversion, some not. Added IMB_float_from_rect_simple() for the sequencer to use. --- source/blender/blenkernel/intern/displist.c | 15 ++-- source/blender/blenkernel/intern/seqeffects.c | 4 +- source/blender/blenkernel/intern/sequencer.c | 34 ++++----- source/blender/imbuf/IMB_imbuf.h | 3 + source/blender/imbuf/intern/divers.c | 71 +++++++++++++++++++ 5 files changed, 95 insertions(+), 32 deletions(-) diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c index 716d3110bc3..bb020c936a6 100644 --- a/source/blender/blenkernel/intern/displist.c +++ b/source/blender/blenkernel/intern/displist.c @@ -575,9 +575,9 @@ static void mesh_create_shadedColors(Render *re, Object *ob, int onlyForMesh, un char *col1= (char*)&col1base[j*4]; char *col2= (char*)(col2base?&col2base[j*4]:NULL); float *vn = (mf->flag & ME_SMOOTH)?&vnors[3*vidx[j]]:n1; - - VECCOPY(vec, mv->co); - mul_m4_v3(mat, vec); + + mul_v3_m4v3(vec, mat, mv->co); + vec[0]+= 0.001*vn[0]; vec[1]+= 0.001*vn[1]; vec[2]+= 0.001*vn[2]; @@ -688,8 +688,7 @@ void shadeDispList(Scene *scene, Base *base) a= dl->nr; while(a--) { - VECCOPY(vec, fp); - mul_m4_v3(mat, vec); + mul_v3_m4v3(vec, mat, fp); fastshade(vec, n1, fp, ma, (char *)col1, NULL); @@ -704,8 +703,7 @@ void shadeDispList(Scene *scene, Base *base) nor= dl->nors; while(a--) { - VECCOPY(vec, fp); - mul_m4_v3(mat, vec); + mul_v3_m4v3(vec, mat, fp); n1[0]= imat[0][0]*nor[0]+imat[0][1]*nor[1]+imat[0][2]*nor[2]; n1[1]= imat[1][0]*nor[0]+imat[1][1]*nor[1]+imat[1][2]*nor[2]; @@ -742,8 +740,7 @@ void shadeDispList(Scene *scene, Base *base) a= dl->nr; while(a--) { - VECCOPY(vec, fp); - mul_m4_v3(mat, vec); + mul_v3_m4v3(vec, mat, fp); /* transpose ! */ n1[0]= imat[0][0]*nor[0]+imat[0][1]*nor[1]+imat[0][2]*nor[2]; diff --git a/source/blender/blenkernel/intern/seqeffects.c b/source/blender/blenkernel/intern/seqeffects.c index 56a8edcc4fc..73c19772c69 100644 --- a/source/blender/blenkernel/intern/seqeffects.c +++ b/source/blender/blenkernel/intern/seqeffects.c @@ -312,7 +312,7 @@ static void do_plugin_effect(Scene *scene, Sequence *seq, int cfra, IMB_convert_rgba_to_abgr(out); } if (seq->plugin->version<=3 && float_rendering) { - IMB_float_from_rect(out); + IMB_float_from_rect_simple(out); } if (use_temp_bufs) { @@ -2783,7 +2783,7 @@ static void do_multicam(Scene *scene, Sequence *seq, int cfra, IMB_rect_from_float(i); memcpy(out->rect, i->rect, out->x * out->y * 4); } else if (out->rect_float && i->rect) { - IMB_float_from_rect(i); + IMB_float_from_rect_simple(i); memcpy(out->rect_float, i->rect_float, out->x * out->y *4*sizeof(float)); } } diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 6e48a71cec4..fd3e56a418c 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -1022,13 +1022,13 @@ static void do_effect(Scene *scene, int cfra, Sequence *seq, TStripElem * se, y= se2->ibuf->y; if (!se1->ibuf->rect_float && se->ibuf->rect_float) { - IMB_float_from_rect(se1->ibuf); + IMB_float_from_rect_simple(se1->ibuf); } if (!se2->ibuf->rect_float && se->ibuf->rect_float) { - IMB_float_from_rect(se2->ibuf); + IMB_float_from_rect_simple(se2->ibuf); } if (!se3->ibuf->rect_float && se->ibuf->rect_float) { - IMB_float_from_rect(se3->ibuf); + IMB_float_from_rect_simple(se3->ibuf); } if (!se1->ibuf->rect && !se->ibuf->rect_float) { @@ -1784,17 +1784,9 @@ static void input_preprocess(Scene *scene, Sequence *seq, TStripElem *se, int cf } if(seq->flag & SEQ_MAKE_FLOAT) { - if (!se->ibuf->rect_float) { - int profile = IB_PROFILE_NONE; - - /* no color management: - * don't disturb the existing profiles */ - SWAP(int, se->ibuf->profile, profile); + if (!se->ibuf->rect_float) + IMB_float_from_rect_simple(se->ibuf); - IMB_float_from_rect(se->ibuf); - - SWAP(int, se->ibuf->profile, profile); - } if (se->ibuf->rect) { imb_freerectImBuf(se->ibuf); } @@ -2085,14 +2077,14 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int } copy_from_ibuf_still(seq, se); - if (!se->ibuf) { - se->ibuf= IMB_loadiffname( - name, IB_rect); + if (se->ibuf==NULL && (se->ibuf= IMB_loadiffname(name, IB_rect))) { /* we don't need both (speed reasons)! */ - if (se->ibuf && - se->ibuf->rect_float && se->ibuf->rect) { + if (se->ibuf->rect_float && se->ibuf->rect) imb_freerectImBuf(se->ibuf); - } + + /* all sequencer color is done in SRGB space, linear gives odd crossfades */ + if(se->ibuf->profile == IB_PROFILE_LINEAR_RGB) + IMB_convert_profile(se->ibuf, IB_PROFILE_NONE); copy_to_ibuf_still(seq, se); } @@ -2707,11 +2699,11 @@ static TStripElem* do_build_seq_array_recursively( if (!se1->ibuf_comp->rect_float && se2->ibuf_comp->rect_float) { - IMB_float_from_rect(se1->ibuf_comp); + IMB_float_from_rect_simple(se1->ibuf_comp); } if (!se2->ibuf->rect_float && se2->ibuf_comp->rect_float) { - IMB_float_from_rect(se2->ibuf); + IMB_float_from_rect_simple(se2->ibuf); } if (!se1->ibuf_comp->rect && diff --git a/source/blender/imbuf/IMB_imbuf.h b/source/blender/imbuf/IMB_imbuf.h index 37399c9d68a..07b99dddfa5 100644 --- a/source/blender/imbuf/IMB_imbuf.h +++ b/source/blender/imbuf/IMB_imbuf.h @@ -319,6 +319,9 @@ void IMB_de_interlace(struct ImBuf *ibuf); void IMB_interlace(struct ImBuf *ibuf); void IMB_rect_from_float(struct ImBuf *ibuf); void IMB_float_from_rect(struct ImBuf *ibuf); +void IMB_float_from_rect_simple(struct ImBuf *ibuf); /* no profile conversion */ +/* note, check that the conversion exists, only some are supported */ +void IMB_convert_profile(struct ImBuf *ibuf, int profile); /** * Change the ordering of the color bytes pointed to by rect from diff --git a/source/blender/imbuf/intern/divers.c b/source/blender/imbuf/intern/divers.c index 0cc4346041f..7b3a07f10ad 100644 --- a/source/blender/imbuf/intern/divers.c +++ b/source/blender/imbuf/intern/divers.c @@ -222,3 +222,74 @@ void IMB_float_from_rect(struct ImBuf *ibuf) } } +/* no profile conversion */ +void IMB_float_from_rect_simple(struct ImBuf *ibuf) +{ + int profile = IB_PROFILE_NONE; + + /* no color management: + * don't disturb the existing profiles */ + SWAP(int, ibuf->profile, profile); + + IMB_float_from_rect(ibuf); + + SWAP(int, ibuf->profile, profile); +} + +void IMB_convert_profile(struct ImBuf *ibuf, int profile) +{ + int ok= FALSE; + int i; + + unsigned char *rct= (unsigned char *)ibuf->rect; + float *rctf= ibuf->rect_float; + + if(ibuf->profile == profile) + return; + + if(ELEM(ibuf->profile, IB_PROFILE_NONE, IB_PROFILE_SRGB)) { /* from */ + if(profile == IB_PROFILE_LINEAR_RGB) { /* to */ + if(ibuf->rect_float) { + for (i = ibuf->x * ibuf->y; i > 0; i--, rctf+=4) { + rctf[0]= srgb_to_linearrgb(rctf[0]); + rctf[1]= srgb_to_linearrgb(rctf[1]); + rctf[2]= srgb_to_linearrgb(rctf[2]); + } + } + if(ibuf->rect) { + for (i = ibuf->x * ibuf->y; i > 0; i--, rct+=4) { + rctf[0]= (unsigned char)((srgb_to_linearrgb((float)rctf[0]/255.0f) * 255.0f) + 0.5f); + rctf[1]= (unsigned char)((srgb_to_linearrgb((float)rctf[1]/255.0f) * 255.0f) + 0.5f); + rctf[2]= (unsigned char)((srgb_to_linearrgb((float)rctf[2]/255.0f) * 255.0f) + 0.5f); + } + } + ok= TRUE; + } + } + else if (ibuf->profile == IB_PROFILE_LINEAR_RGB) { /* from */ + if(ELEM(profile, IB_PROFILE_NONE, IB_PROFILE_SRGB)) { /* to */ + if(ibuf->rect_float) { + for (i = ibuf->x * ibuf->y; i > 0; i--, rctf+=4) { + rctf[0]= linearrgb_to_srgb(rctf[0]); + rctf[1]= linearrgb_to_srgb(rctf[1]); + rctf[2]= linearrgb_to_srgb(rctf[2]); + } + } + if(ibuf->rect) { + for (i = ibuf->x * ibuf->y; i > 0; i--, rct+=4) { + rctf[0]= (unsigned char)((linearrgb_to_srgb((float)rctf[0]/255.0f) * 255.0f) + 0.5f); + rctf[1]= (unsigned char)((linearrgb_to_srgb((float)rctf[1]/255.0f) * 255.0f) + 0.5f); + rctf[2]= (unsigned char)((linearrgb_to_srgb((float)rctf[2]/255.0f) * 255.0f) + 0.5f); + } + } + ok= TRUE; + } + } + + if(ok==FALSE){ + printf("IMB_convert_profile: failed profile conversion %d -> %d\n", ibuf->profile, profile); + return; + } + + ibuf->profile= profile; +} From a586541d74a3ba9a7c841efa0f06f1da9977ed53 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 12 Jul 2010 16:20:51 +0000 Subject: [PATCH 420/674] tweak to color balance after talking with colin and testing other software, lift for values above 1.0 was too intense. Use: 1 + ((lift-1) * (lift-1)) so 2.0 is still a full lift but 1.x isnt so strong. Changed color picker to give more precission, we were having to edit the buttons to see what the numbers were. --- source/blender/blenkernel/intern/sequencer.c | 5 +++++ source/blender/editors/interface/interface_regions.c | 6 +++--- .../blender/nodes/intern/CMP_nodes/CMP_colorbalance.c | 10 +++++++++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index fd3e56a418c..1ab4e75ee06 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -1509,6 +1509,11 @@ static StripColorBalance calc_cb(StripColorBalance * cb_) if(cb.flag & SEQ_COLOR_BALANCE_INVERSE_LIFT) { for (c = 0; c < 3; c++) { + /* tweak to give more subtle results + * values above 1.0 are scaled */ + if(cb.lift[c] > 1.0f) + cb.lift[c] = pow(cb.lift[c] - 1.0f, 2.0f) + 1.0f; + cb.lift[c] = 2.0f - cb.lift[c]; } } diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index fb00d4f968e..a2a7f4bf77a 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -1832,11 +1832,11 @@ static void uiBlockPicker(uiBlock *block, float *rgb, PointerRNA *ptr, PropertyR /* RGB values */ uiBlockBeginAlign(block); - bt= uiDefButR(block, NUMSLI, 0, "R ", 0, -60, butwidth, UI_UNIT_Y, ptr, propname, 0, 0.0, 0.0, 0, 0, ""); + bt= uiDefButR(block, NUMSLI, 0, "R ", 0, -60, butwidth, UI_UNIT_Y, ptr, propname, 0, 0.0, 0.0, 0, 3, ""); uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); - bt= uiDefButR(block, NUMSLI, 0, "G ", 0, -80, butwidth, UI_UNIT_Y, ptr, propname, 1, 0.0, 0.0, 0, 0, ""); + bt= uiDefButR(block, NUMSLI, 0, "G ", 0, -80, butwidth, UI_UNIT_Y, ptr, propname, 1, 0.0, 0.0, 0, 3, ""); uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); - bt= uiDefButR(block, NUMSLI, 0, "B ", 0, -100, butwidth, UI_UNIT_Y, ptr, propname, 2, 0.0, 0.0, 0, 0, ""); + bt= uiDefButR(block, NUMSLI, 0, "B ", 0, -100, butwidth, UI_UNIT_Y, ptr, propname, 2, 0.0, 0.0, 0, 3, ""); uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); // could use uiItemFullR(col, ptr, prop, -1, 0, UI_ITEM_R_EXPAND|UI_ITEM_R_SLIDER, "", 0); diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_colorbalance.c b/source/blender/nodes/intern/CMP_nodes/CMP_colorbalance.c index cd614b12794..efd49172f95 100644 --- a/source/blender/nodes/intern/CMP_nodes/CMP_colorbalance.c +++ b/source/blender/nodes/intern/CMP_nodes/CMP_colorbalance.c @@ -124,8 +124,16 @@ static void node_composit_exec_colorbalance(void *data, bNode *node, bNodeStack { NodeColorBalance *n= (NodeColorBalance *)node->storage; int c; + + copy_v3_v3(n->lift_lgg, n->lift); + for (c = 0; c < 3; c++) { - n->lift_lgg[c] = 2.0f - n->lift[c]; + /* tweak to give more subtle results + * values above 1.0 are scaled */ + if(n->lift_lgg[c] > 1.0f) + n->lift_lgg[c] = pow(n->lift_lgg[c] - 1.0f, 2.0f) + 1.0f; + + n->lift_lgg[c] = 2.0f - n->lift_lgg[c]; } } From 3b81c67353b9b0b9539fe7befbba0d7e449e912b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 12 Jul 2010 18:15:48 +0000 Subject: [PATCH 421/674] - presets were not being written with 'import bpy' at the start. - attribute save_keyconfig defaulted to True when unset, not sure why, but . - use repr() rather then str() so strings are quoted without manually checking. also converts less common chars properly \m \" etc. --- release/scripts/op/presets.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/release/scripts/op/presets.py b/release/scripts/op/presets.py index a813cb5339d..9552a5e6785 100644 --- a/release/scripts/op/presets.py +++ b/release/scripts/op/presets.py @@ -47,19 +47,17 @@ class AddPresetBase(bpy.types.Operator): target_path = bpy.utils.preset_paths(self.preset_subdir)[0] # we need some way to tell the user and system preset path filepath = os.path.join(target_path, filename) - if getattr(self, "save_keyconfig", True): + if getattr(self, "save_keyconfig", False): bpy.ops.wm.keyconfig_export(filepath=filepath, kc_name=self.properties.name) file_preset = open(filepath, 'a') file_preset.write("wm.active_keyconfig = kc\n\n") else: file_preset = open(filepath, 'w') + file_preset.write("import bpy\n") for rna_path in self.preset_values: value = eval(rna_path) - if type(value) == str: - value = "'%s'" % value - - file_preset.write("%s = %s\n" % (rna_path, value)) + file_preset.write("%s = %s\n" % (rna_path, repr(value))) file_preset.close() From d80d6e28127dcfb83b11d88c993595f846ffbb02 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 12 Jul 2010 18:26:35 +0000 Subject: [PATCH 422/674] re-arrange build files so scons "config" dir isnt confused with ~/.blender/2.52/config --- CMakeLists.txt | 2 +- SConstruct | 5 ++- {CMake => build_files/cmake}/macros.cmake | 0 .../example_scripts/linux_nanmakefiles.sh | 38 +++++++++++++++++++ .../example_scripts/macos_nanmakefiles.sh | 18 +++++++++ .../example_scripts/sunos_nanmakefiles.sh | 35 +++++++++++++++++ .../scons/config}/aix4-config.py | 0 .../scons/config}/darwin-config.py | 0 .../scons/config}/irix6-config.py | 0 .../scons/config}/linux2-config.py | 0 .../scons/config}/linuxcross-config.py | 0 .../scons/config}/openbsd3-config.py | 0 .../scons/config}/sunos5-config.py | 0 .../scons/config}/win32-mingw-config.py | 0 .../scons/config}/win32-vc-config.py | 0 .../scons/config}/win64-vc-config.py | 0 {tools => build_files/scons/tools}/Blender.py | 0 .../scons/tools}/__init__.py | 0 {tools => build_files/scons/tools}/bcolors.py | 0 {tools => build_files/scons/tools}/btools.py | 0 .../scons/tools}/crossmingw.py | 0 .../scons/tools}/mstoolkit.py | 0 22 files changed, 96 insertions(+), 2 deletions(-) rename {CMake => build_files/cmake}/macros.cmake (100%) create mode 100755 build_files/make/example_scripts/linux_nanmakefiles.sh create mode 100755 build_files/make/example_scripts/macos_nanmakefiles.sh create mode 100755 build_files/make/example_scripts/sunos_nanmakefiles.sh rename {config => build_files/scons/config}/aix4-config.py (100%) rename {config => build_files/scons/config}/darwin-config.py (100%) rename {config => build_files/scons/config}/irix6-config.py (100%) rename {config => build_files/scons/config}/linux2-config.py (100%) rename {config => build_files/scons/config}/linuxcross-config.py (100%) rename {config => build_files/scons/config}/openbsd3-config.py (100%) rename {config => build_files/scons/config}/sunos5-config.py (100%) rename {config => build_files/scons/config}/win32-mingw-config.py (100%) rename {config => build_files/scons/config}/win32-vc-config.py (100%) rename {config => build_files/scons/config}/win64-vc-config.py (100%) rename {tools => build_files/scons/tools}/Blender.py (100%) rename {tools => build_files/scons/tools}/__init__.py (100%) rename {tools => build_files/scons/tools}/bcolors.py (100%) rename {tools => build_files/scons/tools}/btools.py (100%) rename {tools => build_files/scons/tools}/crossmingw.py (100%) rename {tools => build_files/scons/tools}/mstoolkit.py (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3e8b812e57c..9c14bdd6b9e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,7 +61,7 @@ SET(BLENDER_VERSION 2.5) #----------------------------------------------------------------------------- # Load some macros. -INCLUDE(CMake/macros.cmake) +INCLUDE(build_files/cmake/macros.cmake) #----------------------------------------------------------------------------- # Set default config options diff --git a/SConstruct b/SConstruct index 26fa5b47198..09ada7d7f70 100644 --- a/SConstruct +++ b/SConstruct @@ -46,6 +46,9 @@ import glob import re from tempfile import mkdtemp +# needed for importing tools +sys.path.append(os.path.join(".", "build_files", "scons")) + import tools.Blender import tools.btools import tools.bcolors @@ -159,7 +162,7 @@ if crossbuild and platform not in ('win32-vc', 'win64-vc'): env['OURPLATFORM'] = platform -configfile = 'config'+os.sep+platform+'-config.py' +configfile = os.path.join("build_files", "scons", "config", platform + "-config.py") if os.path.exists(configfile): print B.bc.OKGREEN + "Using config file: " + B.bc.ENDC + configfile diff --git a/CMake/macros.cmake b/build_files/cmake/macros.cmake similarity index 100% rename from CMake/macros.cmake rename to build_files/cmake/macros.cmake diff --git a/build_files/make/example_scripts/linux_nanmakefiles.sh b/build_files/make/example_scripts/linux_nanmakefiles.sh new file mode 100755 index 00000000000..aa8d8820681 --- /dev/null +++ b/build_files/make/example_scripts/linux_nanmakefiles.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +# +# This is an example script to build things with the Nan Makefiles +# +# + +rm -f /tmp/.nanguess +export MAKE=make +export NANBLENDERHOME=`pwd` +export MAKEFLAGS="-w -I $NANBLENDERHOME/source --no-print-directory" +export HMAKE="$NANBLENDERHOME/source/tools/hmake/hmake" + +export NAN_PYTHON=/soft/python-2.2.2b1/progeny1 +export NAN_PYTHON_VERSION=2.2 +export NAN_OPENAL=/usr/local +export NAN_JPEG=/usr/local +export NAN_PNG=/usr/local +export NAN_SDL=/usr/local +export NAN_ODE=/usr/local +export NAN_ZLIB=/usr/local +export NAN_FREETYPE=/usr/local + +export NAN_MOZILLA_INC=/usr/local/include/mozilla-1.0.1/ +export NAN_MOZILLA_LIB=/usr/local/lib/mozilla-1.0.1/ +#export NAN_NSPR=/scratch/irulan/mein/nspr-4.2.2/mozilla/nsprpub/dist/ +export CPPFLAGS="$CPPFLAGS" +export CFLAGS="$CFLAGS" +export INTERNATIONAL=true + +$HMAKE -C intern/ +if [ $? -eq 0 ]; then + $HMAKE -C source/ +fi +$HMAKE -C release + +#cd release +#make diff --git a/build_files/make/example_scripts/macos_nanmakefiles.sh b/build_files/make/example_scripts/macos_nanmakefiles.sh new file mode 100755 index 00000000000..d2cce204a53 --- /dev/null +++ b/build_files/make/example_scripts/macos_nanmakefiles.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +rm -f /tmp/.nanguess +export MAKE=make +export NANBLENDERHOME=`pwd` +export MAKEFLAGS="-w -I $NANBLENDERHOME/source --no-print-directory" +export HMAKE="$NANBLENDERHOME/source/tools/hmake/hmake" +echo +echo NANBLENDERHOME : ${NANBLENDERHOME} + +export NAN_PYTHON=/sw + +$HMAKE -C intern/ +if [ $? -eq 0 ]; then + $HMAKE -C source/ +fi +cd release +make diff --git a/build_files/make/example_scripts/sunos_nanmakefiles.sh b/build_files/make/example_scripts/sunos_nanmakefiles.sh new file mode 100755 index 00000000000..25dd17bebb1 --- /dev/null +++ b/build_files/make/example_scripts/sunos_nanmakefiles.sh @@ -0,0 +1,35 @@ +#!/bin/sh +# This is an example build script for SunOS5.8 + +rm -f /tmp/.nanguess +export MAKE=make +export NANBLENDERHOME=`pwd` +export MAKEFLAGS="-w -I $NANBLENDERHOME/source --no-print-directory" +export HMAKE="$NANBLENDERHOME/source/tools/hmake/hmake" + +export NAN_PYTHON=/soft/python-2.2.2b1/SunOS5.8 +export NAN_PYTHON_VERSION=2.2 +export NAN_OPENAL=/usr/local +export NAN_JPEG=/usr/local +export NAN_PNG=/usr/local +export NAN_SDL=/usr/local +export NAN_ODE=/usr/local +export NAN_OPENSSL=/soft/ssl/openssl-0.9.6e +export NAN_ZLIB=/usr/local +export NAN_FREETYPE=/usr/local + +export NAN_MOZILLA_INC=/usr/local/include/mozilla-1.0.1/ +export NAN_MOZILLA_LIB=/usr/local/lib/mozilla-1.0.1/ +export NAN_NSPR=/scratch/irulan/mein/nspr-4.2.2/mozilla/nsprpub/dist/ +export CPPFLAGS="$CPPFLAGS" +export CFLAGS="$CFLAGS" +export INTERNATIONAL=true + +$HMAKE -C intern/ +if [ $? -eq 0 ]; then + $HMAKE -C source/ +fi +$HMAKE -C release + +#cd release +#make diff --git a/config/aix4-config.py b/build_files/scons/config/aix4-config.py similarity index 100% rename from config/aix4-config.py rename to build_files/scons/config/aix4-config.py diff --git a/config/darwin-config.py b/build_files/scons/config/darwin-config.py similarity index 100% rename from config/darwin-config.py rename to build_files/scons/config/darwin-config.py diff --git a/config/irix6-config.py b/build_files/scons/config/irix6-config.py similarity index 100% rename from config/irix6-config.py rename to build_files/scons/config/irix6-config.py diff --git a/config/linux2-config.py b/build_files/scons/config/linux2-config.py similarity index 100% rename from config/linux2-config.py rename to build_files/scons/config/linux2-config.py diff --git a/config/linuxcross-config.py b/build_files/scons/config/linuxcross-config.py similarity index 100% rename from config/linuxcross-config.py rename to build_files/scons/config/linuxcross-config.py diff --git a/config/openbsd3-config.py b/build_files/scons/config/openbsd3-config.py similarity index 100% rename from config/openbsd3-config.py rename to build_files/scons/config/openbsd3-config.py diff --git a/config/sunos5-config.py b/build_files/scons/config/sunos5-config.py similarity index 100% rename from config/sunos5-config.py rename to build_files/scons/config/sunos5-config.py diff --git a/config/win32-mingw-config.py b/build_files/scons/config/win32-mingw-config.py similarity index 100% rename from config/win32-mingw-config.py rename to build_files/scons/config/win32-mingw-config.py diff --git a/config/win32-vc-config.py b/build_files/scons/config/win32-vc-config.py similarity index 100% rename from config/win32-vc-config.py rename to build_files/scons/config/win32-vc-config.py diff --git a/config/win64-vc-config.py b/build_files/scons/config/win64-vc-config.py similarity index 100% rename from config/win64-vc-config.py rename to build_files/scons/config/win64-vc-config.py diff --git a/tools/Blender.py b/build_files/scons/tools/Blender.py similarity index 100% rename from tools/Blender.py rename to build_files/scons/tools/Blender.py diff --git a/tools/__init__.py b/build_files/scons/tools/__init__.py similarity index 100% rename from tools/__init__.py rename to build_files/scons/tools/__init__.py diff --git a/tools/bcolors.py b/build_files/scons/tools/bcolors.py similarity index 100% rename from tools/bcolors.py rename to build_files/scons/tools/bcolors.py diff --git a/tools/btools.py b/build_files/scons/tools/btools.py similarity index 100% rename from tools/btools.py rename to build_files/scons/tools/btools.py diff --git a/tools/crossmingw.py b/build_files/scons/tools/crossmingw.py similarity index 100% rename from tools/crossmingw.py rename to build_files/scons/tools/crossmingw.py diff --git a/tools/mstoolkit.py b/build_files/scons/tools/mstoolkit.py similarity index 100% rename from tools/mstoolkit.py rename to build_files/scons/tools/mstoolkit.py From af06e281c03edf96c53ba67ea96e587ca9fd92f6 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 12 Jul 2010 20:17:23 +0000 Subject: [PATCH 423/674] RNA cleanup: first pass over booleans, still 380 marked as TODO. --- .../makesrna/rna_cleanup/rna_booleans.txt | 790 +++++++++--------- 1 file changed, 392 insertions(+), 398 deletions(-) diff --git a/source/blender/makesrna/rna_cleanup/rna_booleans.txt b/source/blender/makesrna/rna_cleanup/rna_booleans.txt index 4cae982183c..a2d3760d5a3 100644 --- a/source/blender/makesrna/rna_cleanup/rna_booleans.txt +++ b/source/blender/makesrna/rna_cleanup/rna_booleans.txt @@ -1,11 +1,11 @@ -ActionActuator.continue_last_frame -> continue_last_frame: boolean Restore last frame when switching on/off, otherwise play from the start each time +TODO * ActionActuator.continue_last_frame -> continue_last_frame: boolean Restore last frame when switching on/off, otherwise play from the start each time ActionGroup.expanded -> show_expanded: boolean Action Group is expanded ActionGroup.locked -> lock: boolean Action Group is locked ActionGroup.selected -> select: boolean Action Group is selected Actuator.expanded -> show_expanded: boolean Set actuator expanded in the user interface AnimData.nla_enabled -> use_nla: boolean NLA stack is evaluated when evaluating this block AnimVizMotionPaths.highlight_keyframes -> show_keyframe_highlight: boolean Emphasize position of keyframes on Motion Paths -AnimVizMotionPaths.search_all_action_keyframes -> use_keyframe_action_all: boolean For bone motion paths, search whole Action for keyframes instead of in group with matching name only (is slower) +AnimVizMotionPaths.search_all_action_keyframes -> show_keyframe_action_all: boolean For bone motion paths, search whole Action for keyframes instead of in group with matching name only (is slower) AnimVizMotionPaths.show_frame_numbers -> show_frame_numbers: boolean Show frame numbers on Motion Paths AnimVizMotionPaths.show_keyframe_numbers -> show_keyframe_numbers: boolean Show frame numbers of Keyframes on Motion Paths AnimVizOnionSkinning.only_selected -> show_only_selected: boolean For Pose-Mode drawing, only draw ghosts for selected bones @@ -13,35 +13,33 @@ Area.show_menus -> show_menus: boolean Show menus in the header AreaLamp.dither -> use_dither: boolean Use 2x2 dithering for sampling (Constant Jittered sampling) AreaLamp.jitter -> use_jitter: boolean Use noise for sampling (Constant Jittered sampling) AreaLamp.only_shadow -> use_only_shadow: boolean Causes light to cast shadows only without illuminating objects -AreaLamp.shadow_layer -> use_only_shadow_layer: boolean Causes only objects on the same layer to cast shadows +AreaLamp.shadow_layer -> use_shadow_layer: boolean Causes only objects on the same layer to cast shadows AreaLamp.umbra -> use_umbra: boolean Emphasize parts that are fully shadowed (Constant Jittered sampling) Armature.auto_ik -> use_auto_ik: boolean Add temporaral IK constraints while grabbing bones in Pose Mode -Armature.deform_bbone_rest -> use_deform_b_bone_rest: boolean Make B-Bones deform already in Rest Position -Armature.deform_envelope -> use_deform_envelope: boolean Enable Bone Envelopes when defining deform -Armature.deform_quaternion -> use_deform_quaternion: boolean Enable deform rotation with Quaternions -Armature.deform_vertexgroups -> use_deform_vertexgroups: boolean Enable Vertex Groups when defining deform -Armature.delay_deform -> use_deform_delay: boolean Don't deform children when manipulating bones in Pose Mode +TODO * Armature.deform_envelope -> use_deform_envelope: boolean Enable Bone Envelopes when defining deform +TODO * Armature.deform_quaternion -> use_deform_quaternion: boolean Enable deform rotation with Quaternions +TODO * Armature.deform_vertexgroups -> use_deform_vertexgroups: boolean Enable Vertex Groups when defining deform +TODO * Armature.delay_deform -> use_deform_delay: boolean Don't deform children when manipulating bones in Pose Mode Armature.draw_axes -> show_axes: boolean Draw bone axes -Armature.draw_custom_bone_shapes -> show_bone_custom: boolean Draw bones with their custom shapes +Armature.draw_custom_bone_shapes -> show_bone_custom_shapes: boolean Draw bones with their custom shapes Armature.draw_group_colors -> show_group_colors: boolean Draw bone group colors Armature.draw_names -> show_names: boolean Draw bone names -Armature.ghost_only_selected -> show_only_ghost_selected: boolean +TODO * Armature.ghost_only_selected -> show_only_ghost_selected: boolean Armature.layer -> layer: boolean Armature layer visibility -Armature.layer_protection -> layer_protect: boolean Protected layers in Proxy Instances are restored to Proxy settings on file reload and undo +Armature.layer_protection -> layer_protected: boolean Protected layers in Proxy Instances are restored to Proxy settings on file reload and undo Armature.x_axis_mirror -> use_mirror_x: boolean Apply changes to matching bone on opposite side of X-Axis -ArmatureModifier.b_bone_rest -> use_b_bone_rest: boolean Make B-Bones deform already in rest position -ArmatureModifier.invert -> use_vertex_group_invert: boolean Invert vertex group influence -ArmatureModifier.multi_modifier -> use_multi_modifier: boolean Use same input as previous modifier, and mix results using overall vgroup -ArmatureModifier.quaternion -> use_preserve_volume: boolean Deform rotation interpolation with quaternions -ArmatureModifier.use_bone_envelopes -> use_bone_envelopes: boolean -ArmatureModifier.use_vertex_groups -> use_vertex_groups: boolean +ArmatureModifier.invert -> invert_vertex_group: boolean Invert vertex group influence +TODO * ArmatureModifier.multi_modifier -> use_multi_modifier: boolean Use same input as previous modifier, and mix results using overall vgroup +TODO * ArmatureModifier.quaternion -> use_preserve_volume: boolean Deform rotation interpolation with quaternions +TODO * ArmatureModifier.use_bone_envelopes -> use_bone_envelopes: boolean +TODO * ArmatureModifier.use_vertex_groups -> use_vertex_groups: boolean ArrayModifier.add_offset_object -> use_object_offset: boolean Add another object's transformation to the total offset ArrayModifier.constant_offset -> use_constant_offset: boolean Add a constant offset -ArrayModifier.merge_adjacent_vertices -> use_merge_vertex: boolean Merge vertices in adjacent duplicates -ArrayModifier.merge_end_vertices -> use_merge_vertex_end: boolean Merge vertices in first and last duplicates +TODO * ArrayModifier.merge_adjacent_vertices -> use_merge_vertex: boolean Merge vertices in adjacent duplicates +TODO * ArrayModifier.merge_end_vertices -> use_merge_vertex_end: boolean Merge vertices in first and last duplicates ArrayModifier.relative_offset -> use_relative_offset: boolean Add an offset relative to the object's bounding box BackgroundImage.show_expanded -> show_expanded: boolean Show the expanded in the user interface -BevelModifier.only_vertices -> use_only_vertex: boolean Bevel verts/corners, not edges +TODO * BevelModifier.only_vertices -> use_only_vertex: boolean Bevel verts/corners, not edges BezierSplinePoint.hidden -> hide: boolean Visibility status BezierSplinePoint.selected_control_point -> select_control_point: boolean Control point selection status BezierSplinePoint.selected_handle1 -> select_left_handle: boolean Handle 1 selection status @@ -49,23 +47,23 @@ BezierSplinePoint.selected_handle2 -> select_right_handle: boolean Handle BoidRule.in_air -> use_in_air: boolean Use rule when boid is flying BoidRule.on_land -> use_on_land: boolean Use rule when boid is on land BoidRuleAvoid.predict -> use_predict: boolean Predict target movement -BoidRuleAvoidCollision.boids -> use_avoid: boolean Avoid collision with other boids -BoidRuleAvoidCollision.deflectors -> use_deflect: boolean Avoid collision with deflector objects +TODO * BoidRuleAvoidCollision.boids -> use_avoid: boolean Avoid collision with other boids +TODO * BoidRuleAvoidCollision.deflectors -> use_avoid_collision: boolean Avoid collision with deflector objects BoidRuleFollowLeader.line -> use_line: boolean Follow leader in a line BoidRuleGoal.predict -> use_predict: boolean Predict target movement BoidSettings.allow_climb -> use_climb: boolean Allow boids to climb goal objects BoidSettings.allow_flight -> use_flight: boolean Allow boids to move in air BoidSettings.allow_land -> use_land: boolean Allow boids to move on land -Bone.connected -> use_connect: boolean, (read-only) When bone has a parent, bone's head is struck to the parent's tail -Bone.cyclic_offset -> use_cyclic_offset: boolean When bone doesn't have a parent, it receives cyclic offset effects -Bone.deform -> use_deform: boolean Bone does not deform any geometry +TODO * Bone.connected -> use_connect: boolean, (read-only) When bone has a parent, bone's head is struck to the parent's tail +TODO * Bone.cyclic_offset -> use_cyclic_offset: boolean When bone doesn't have a parent, it receives cyclic offset effects +TODO * Bone.deform -> use_deform: boolean Bone does not deform any geometry Bone.draw_wire -> show_wire: boolean Bone is always drawn as Wireframe regardless of viewport draw mode. Useful for non-obstructive custom bone shapes Bone.hidden -> hide: boolean Bone is not visible when it is not in Edit Mode (i.e. in Object or Pose Modes) -Bone.hinge -> use_hinge: boolean Bone inherits rotation or scale from parent bone +TODO * Bone.hinge -> use_hinge: boolean Bone inherits rotation or scale from parent bone Bone.inherit_scale -> use_inherit_scale: boolean Bone inherits scaling from parent bone Bone.layer -> layer: boolean Layers bone exists in -Bone.local_location -> use_local_location: boolean Bone location is set in local space -Bone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean When deforming bone, multiply effects of Vertex Group weights with Envelope influence +TODO * Bone.local_location -> use_local_location: boolean Bone location is set in local space +TODO * Bone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean When deforming bone, multiply effects of Vertex Group weights with Envelope influence TODO * Bone.restrict_select -> restrict_select: boolean Bone is able to be selected Bone.selected -> select: boolean BooleanProperty.default -> default: boolean, (read-only) Default value for this number @@ -74,16 +72,16 @@ Brush.use_accumulate -> use_accumulate: boolean Accumulate stroke dabs on Brush.use_airbrush -> use_airbrush: boolean Keep applying paint effect while holding mouse (spray) Brush.use_alpha -> use_alpha: boolean When this is disabled, lock alpha while painting Brush.use_anchor -> use_anchor: boolean Keep the brush anchored to the initial location -Brush.use_jitter_pressure -> use_jitter_pressure: boolean Enable tablet pressure sensitivity for jitter +Brush.use_jitter_pressure -> use_pressure_jitter: boolean Enable tablet pressure sensitivity for jitter Brush.use_persistent -> use_persistent: boolean Sculpts on a persistent layer of the mesh Brush.use_rake -> use_rake: boolean Rotate the brush texture to match the stroke direction -Brush.use_size_pressure -> use_size_pressure: boolean Enable tablet pressure sensitivity for size +Brush.use_size_pressure -> use_pressure_size: boolean Enable tablet pressure sensitivity for size Brush.use_smooth_stroke -> use_smooth_stroke: boolean Brush lags behind mouse and follows a smoother path Brush.use_space -> use_space: boolean Limit brush application to the distance specified by spacing -Brush.use_spacing_pressure -> use_spacing_pressure: boolean Enable tablet pressure sensitivity for spacing -Brush.use_strength_pressure -> use_strength_pressure: boolean Enable tablet pressure sensitivity for strength +Brush.use_spacing_pressure -> use_pressure_spacing: boolean Enable tablet pressure sensitivity for spacing +Brush.use_strength_pressure -> use_pressure_strength: boolean Enable tablet pressure sensitivity for strength Brush.use_wrap -> use_wrap: boolean Enable torus wrapping while painting -BuildModifier.randomize -> use_random: boolean Randomize the faces or edges during build +TODO * BuildModifier.randomize -> use_random: boolean Randomize the faces or edges during build Camera.panorama -> use_panorama: boolean Render the scene with a cylindrical camera for pseudo-fisheye lens effects Camera.show_limits -> show_limits: boolean Draw the clipping range and focus point on the camera Camera.show_mist -> show_mist: boolean Draw a line from the Camera to indicate the mist area @@ -110,23 +108,23 @@ ClothCollisionSettings.enable_self_collision -> use_self_collision: boolean ClothSettings.pin_cloth -> use_pin_cloth: boolean Enable pinning of cloth vertices to other objects/positions ClothSettings.stiffness_scaling -> use_stiffness_scale: boolean If enabled, stiffness can be scaled along a weight painted vertex group TODO * CollisionSensor.collision_type -> collision_type: boolean Toggle collision on material or property -CollisionSensor.pulse -> use_pulse: boolean Changes to the set of colliding objects generates pulse -CollisionSettings.enabled -> use_collision: boolean Enable this objects as a collider for physics systems -CollisionSettings.kill_particles -> use_particle_kill: boolean Kill collided particles -CompositorNodeAlphaOver.convert_premul -> use_convert_premultiply: boolean +TODO * CollisionSensor.pulse -> use_pulse: boolean Changes to the set of colliding objects generates pulse +TODO * CollisionSettings.enabled -> use_collision: boolean Enable this objects as a collider for physics systems +TODO * CollisionSettings.kill_particles -> use_particle_kill: boolean Kill collided particles +TODO * CompositorNodeAlphaOver.convert_premul -> use_convert_premultiply: boolean CompositorNodeBlur.bokeh -> use_bokeh: boolean -CompositorNodeBlur.gamma -> use_gamma_correct: boolean +TODO * CompositorNodeBlur.gamma -> use_gamma_correct: boolean CompositorNodeBlur.relative -> use_relative: boolean CompositorNodeColorSpill.unspill -> use_unspill: boolean Compensate all channels (diffenrently) by hand CompositorNodeCrop.crop_size -> use_crop_size: boolean Whether to crop the size of the input image CompositorNodeDBlur.wrap -> use_wrap: boolean -CompositorNodeDefocus.gamma_correction -> use_gamma_correct: boolean Enable gamma correction before and after main process +TODO * CompositorNodeDefocus.gamma_correction -> use_gamma_correct: boolean Enable gamma correction before and after main process CompositorNodeDefocus.preview -> use_preview: boolean Enable sampling mode, useful for preview when using low samplecounts CompositorNodeDefocus.use_zbuffer -> use_zbuffer: boolean Disable when using an image as input instead of actual zbuffer (auto enabled if node not image based, eg. time node) CompositorNodeGlare.rotate_45 -> use_rotate_45: boolean Simple star filter: add 45 degree rotation offset CompositorNodeImage.auto_refresh -> use_auto_refresh: boolean CompositorNodeImage.cyclic -> use_cyclic: boolean -CompositorNodeInvert.alpha -> use_alpha: boolean +TODO * CompositorNodeInvert.alpha -> use_alpha: boolean CompositorNodeInvert.rgb -> invert_rgb: boolean CompositorNodeLensdist.fit -> use_fit: boolean For positive distortion factor only: scale image such that black areas are not visible CompositorNodeLensdist.jitter -> use_jitter: boolean Enable/disable jittering; faster, but also noisier @@ -135,20 +133,20 @@ CompositorNodeMapValue.use_max -> use_max: boolean CompositorNodeMapValue.use_min -> use_min: boolean CompositorNodeMixRGB.alpha -> use_alpha: boolean Include alpha of second input in this operation CompositorNodeOutputFile.exr_half -> use_exr_half: boolean -CompositorNodeVecBlur.curved -> use_curve: boolean Interpolate between frames in a bezier curve, rather than linearly -TODO * Constraint.active -> active: boolean Constraint is the one being edited +CompositorNodeVecBlur.curved -> use_curved: boolean Interpolate between frames in a bezier curve, rather than linearly +Constraint.active -> active: boolean Constraint is the one being edited Constraint.disabled -> is_valid: boolean, (read-only) Constraint has invalid settings and will not be evaluated Constraint.expanded -> show_expanded: boolean Constraint's panel is expanded in UI -Constraint.proxy_local -> is_proxy_local: boolean Constraint was added in this proxy instance (i.e. did not belong to source Armature) +TODO * Constraint.proxy_local -> is_proxy_local: boolean Constraint was added in this proxy instance (i.e. did not belong to source Armature) ConstraintActuator.detect_material -> use_material_detect: boolean Detect material instead of property ConstraintActuator.fh_normal -> use_fh_normal: boolean Add a horizontal spring force on slopes ConstraintActuator.fh_paralel_axis -> use_fh_paralel_axis: boolean Keep object axis parallel to normal -ConstraintActuator.force_distance -> use_force_distance: boolean Force distance of object to point of impact of ray +TODO * ConstraintActuator.force_distance -> use_force_distance: boolean Force distance of object to point of impact of ray ConstraintActuator.local -> use_local: boolean Set ray along object's axis or global axis ConstraintActuator.normal -> use_normal: boolean Set object axis along (local axis) or parallel (global axis) to the normal at hit position ConstraintActuator.persistent -> use_persistent: boolean Persistent actuator: stays active even if ray does not reach target ControlFluidSettings.active -> active: boolean Object contributes to the fluid simulation -ControlFluidSettings.reverse_frames -> use_frame_reverse: boolean Reverse control object movement +TODO * ControlFluidSettings.reverse_frames -> use_frame_reverse: boolean Reverse control object movement Controller.expanded -> show_expanded: boolean Set controller expanded in the user interface Controller.priority -> use_priority: boolean Mark controller for execution before all non-marked controllers (good for startup scripts) Controller.state -> state: boolean, (read-only) Set Controller state index (1 to 30) @@ -171,39 +169,39 @@ CopyScaleConstraint.use_x -> use_x: boolean Copy the target's X scale CopyScaleConstraint.use_y -> use_y: boolean Copy the target's Y scale CopyScaleConstraint.use_z -> use_z: boolean Copy the target's Z scale Curve.auto_texspace -> use_auto_texspace: boolean Adjusts active object's texture space automatically when transforming object -Curve.back -> use_fill_back: boolean Draw filled back for extruded/beveled curves +TODO * Curve.back -> use_fill_back: boolean Draw filled back for extruded/beveled curves Curve.draw_handles -> show_handles: boolean Display bezier handles in editmode Curve.draw_normals -> show_normals: boolean Display 3D curve normals in editmode Curve.front -> use_fill_front: boolean Draw filled front for extruded/beveled curves -Curve.map_along_length -> use_texture_map_length: boolean Generate texture mapping coordinates following the curve direction, rather than the local bounding box +TODO * Curve.map_along_length -> use_texture_map_length: boolean Generate texture mapping coordinates following the curve direction, rather than the local bounding box Curve.use_deform_fill -> use_fill_deform: boolean Fill curve after applying deformation Curve.use_path -> use_path: boolean Enable the curve to become a translation path Curve.use_path_follow -> use_path_follow: boolean Make curve path children to rotate along the path Curve.use_radius -> use_radius: boolean Option for paths: apply the curve radius with path following it and deforming Curve.use_stretch -> use_stretch: boolean Option for curve-deform: makes deformed child to stretch along entire path -Curve.use_time_offset -> use_time_offset: boolean Children will use TimeOffs value as path distance offset +Curve.use_time_offset -> use_time_offset: boolean Children will use Time Offset value as path distance offset CurveMapPoint.selected -> select: boolean Selection state of the curve point CurveMapping.clip -> use_clip: boolean Force the curve view to fit a defined boundary DelaySensor.repeat -> use_repeat: boolean Toggle repeat option. If selected, the sensor restarts after Delay+Dur logic tics DomainFluidSettings.generate_speed_vectors -> use_speed_vectors: boolean Generate speed vectors for vector blur DomainFluidSettings.override_time -> use_time_override: boolean Use a custom start and end time (in seconds) instead of the scene's timeline -DomainFluidSettings.reverse_frames -> use_frame_reverse: boolean Reverse fluid frames +TODO * DomainFluidSettings.reverse_frames -> use_frame_reverse: boolean Reverse fluid frames NEGATE * DopeSheet.collapse_summary -> show_expanded_summary: boolean Collapse summary when shown, so all other channels get hidden. (DopeSheet Editors Only) -DopeSheet.display_armature -> show_armature: boolean Include visualization of Armature related Animation data -DopeSheet.display_camera -> show_camera: boolean Include visualization of Camera related Animation data -DopeSheet.display_curve -> show_curve: boolean Include visualization of Curve related Animation data -DopeSheet.display_lamp -> show_lamp: boolean Include visualization of Lamp related Animation data -DopeSheet.display_material -> show_material: boolean Include visualization of Material related Animation data -DopeSheet.display_mesh -> show_mesh: boolean Include visualization of Mesh related Animation data -DopeSheet.display_metaball -> show_metaball: boolean Include visualization of Metaball related Animation data -DopeSheet.display_node -> show_node: boolean Include visualization of Node related Animation data -DopeSheet.display_particle -> show_particle: boolean Include visualization of Particle related Animation data -DopeSheet.display_scene -> show_scene: boolean Include visualization of Scene related Animation data +DopeSheet.display_armature -> show_armatures: boolean Include visualization of Armature related Animation data +DopeSheet.display_camera -> show_cameras: boolean Include visualization of Camera related Animation data +DopeSheet.display_curve -> show_curves: boolean Include visualization of Curve related Animation data +DopeSheet.display_lamp -> show_lamps: boolean Include visualization of Lamp related Animation data +DopeSheet.display_material -> show_materials: boolean Include visualization of Material related Animation data +DopeSheet.display_mesh -> show_meshes: boolean Include visualization of Mesh related Animation data +DopeSheet.display_metaball -> show_metaballs: boolean Include visualization of Metaball related Animation data +DopeSheet.display_node -> show_nodes: boolean Include visualization of Node related Animation data +DopeSheet.display_particle -> show_particles: boolean Include visualization of Particle related Animation data +DopeSheet.display_scene -> show_scenes: boolean Include visualization of Scene related Animation data DopeSheet.display_shapekeys -> show_shapekeys: boolean Include visualization of ShapeKey related Animation data DopeSheet.display_summary -> show_summary: boolean Display an additional 'summary' line. (DopeSheet Editors only) -DopeSheet.display_texture -> show_texture: boolean Include visualization of Texture related Animation data +DopeSheet.display_texture -> show_textures: boolean Include visualization of Texture related Animation data DopeSheet.display_transforms -> show_transforms: boolean Include visualization of Object-level Animation data (mostly Transforms) -DopeSheet.display_world -> show_world: boolean Include visualization of World related Animation data +DopeSheet.display_world -> show_worlds: boolean Include visualization of World related Animation data DopeSheet.include_missing_nla -> show_missing_nla: boolean Include Animation Data blocks with no NLA data. (NLA Editor only) DopeSheet.only_group_objects -> show_only_group_objects: boolean Only include channels from Objects in the specified Group DopeSheet.only_selected -> show_only_selected: boolean Only include channels relating to selected objects and data @@ -212,39 +210,39 @@ Driver.show_debug_info -> show_debug_info: boolean Show intermediate value DriverTarget.use_local_space_transforms -> use_local_space_transform: boolean Use transforms in Local Space (as opposed to the worldspace default) EdgeSplitModifier.use_edge_angle -> use_edge_angle: boolean Split edges with high angle between faces EdgeSplitModifier.use_sharp -> use_edge_sharp: boolean Split edges that are marked as sharp -EditBone.connected -> is_connected: boolean When bone has a parent, bone's head is struck to the parent's tail +TODO * EditBone.connected -> is_connected: boolean When bone has a parent, bone's head is struck to the parent's tail EditBone.cyclic_offset -> use_cyclic_offset: boolean When bone doesn't have a parent, it receives cyclic offset effects -EditBone.deform -> use_deform: boolean Bone does not deform any geometry +TODO * EditBone.deform -> use_deform: boolean Bone does not deform any geometry EditBone.draw_wire -> show_wire: boolean Bone is always drawn as Wireframe regardless of viewport draw mode. Useful for non-obstructive custom bone shapes EditBone.hidden -> hide: boolean Bone is not visible when in Edit Mode EditBone.hinge -> use_hinge: boolean Bone inherits rotation or scale from parent bone EditBone.inherit_scale -> use_inherit_scale: boolean Bone inherits scaling from parent bone EditBone.layer -> layer: boolean Layers bone exists in -EditBone.local_location -> use_local_location: boolean Bone location is set in local space +TODO * EditBone.local_location -> use_local_location: boolean Bone location is set in local space EditBone.locked -> lock: boolean Bone is not able to be transformed when in Edit Mode -EditBone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean When deforming bone, multiply effects of Vertex Group weights with Envelope influence -EditBone.restrict_select -> restrict_select: boolean Bone is able to be selected +TODO * EditBone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean When deforming bone, multiply effects of Vertex Group weights with Envelope influence +TODO * EditBone.restrict_select -> restrict_select: boolean Bone is able to be selected EditBone.selected -> select: boolean EditBone.selected_head -> select_head: boolean EditBone.selected_tail -> select_tail: boolean -EditObjectActuator.enable_3d_tracking -> use_track_3d: boolean Enable 3D tracking -EditObjectActuator.local_angular_velocity -> use_local_angular_velocity: boolean Apply the rotation locally -EditObjectActuator.local_linear_velocity -> use_local_linear_velocity: boolean Apply the transformation locally -EditObjectActuator.replace_display_mesh -> use_display_mesh: boolean Replace the display mesh -EditObjectActuator.replace_physics_mesh -> use_physics_mesh: boolean Replace the physics mesh (triangle bounds only - compound shapes not supported) -EffectSequence.convert_float -> use_float: boolean Convert input to float data +TODO * EditObjectActuator.enable_3d_tracking -> use_track_3d: boolean Enable 3D tracking +TODO * EditObjectActuator.local_angular_velocity -> use_local_angular_velocity: boolean Apply the rotation locally +TODO * EditObjectActuator.local_linear_velocity -> use_local_linear_velocity: boolean Apply the transformation locally +TODO * EditObjectActuator.replace_display_mesh -> use_display_mesh: boolean Replace the display mesh +TODO * EditObjectActuator.replace_physics_mesh -> use_physics_mesh: boolean Replace the physics mesh (triangle bounds only - compound shapes not supported) +TODO * EffectSequence.convert_float -> use_float: boolean Convert input to float data EffectSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields EffectSequence.flip_x -> use_flip_x: boolean Flip on the X axis EffectSequence.flip_y -> use_flip_y: boolean Flip on the Y axis -EffectSequence.premultiply -> use_premultiply: boolean Convert RGB from key alpha to premultiplied alpha +TODO * EffectSequence.premultiply -> use_premultiply: boolean Convert RGB from key alpha to premultiplied alpha EffectSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean Use a custom directory to store data EffectSequence.proxy_custom_file -> use_proxy_custom_file: boolean Use a custom file to read proxy data from -EffectSequence.reverse_frames -> use_frame_reverse: boolean Reverse frame order +TODO * EffectSequence.reverse_frames -> use_frame_reverse: boolean Reverse frame order EffectSequence.use_color_balance -> use_color_balance: boolean (3-Way color correction) on input EffectSequence.use_crop -> use_crop: boolean Crop image before processing EffectSequence.use_proxy -> use_proxy: boolean Use a preview proxy for this strip EffectSequence.use_translation -> use_translation: boolean Translate image before processing -EffectorWeights.do_growing_hair -> use_hair_grow: boolean Use force fields when growing hair +TODO * EffectorWeights.do_growing_hair -> use_hair_grow: boolean Use force fields when growing hair EnvironmentMap.ignore_layers -> layer_ignore: boolean Hide objects on these layers when generating the Environment Map EnvironmentMapTexture.use_filter_size_min -> filter_size_min: boolean Use Filter Size as a minimal filter value in pixels EnvironmentMapTexture.mipmap -> use_mipmap: boolean Uses auto-generated MIP maps for the image @@ -253,48 +251,48 @@ Event.alt -> alt: boolean, (read-only) True when the Alt/Option key is hel Event.ctrl -> ctrl: boolean, (read-only) True when the Ctrl key is held Event.oskey -> oskey: boolean, (read-only) True when the Cmd key is held Event.shift -> shift: boolean, (read-only) True when the Shift key is held -ExplodeModifier.alive -> show_alive: boolean Show mesh when particles are alive -ExplodeModifier.dead -> show_dead: boolean Show mesh when particles are dead +TODO * ExplodeModifier.alive -> show_alive: boolean Show mesh when particles are alive +TODO * ExplodeModifier.dead -> show_dead: boolean Show mesh when particles are dead ExplodeModifier.size -> use_size: boolean Use particle size for the shrapnel ExplodeModifier.split_edges -> use_edge_split: boolean Split face edges for nicer shrapnel -ExplodeModifier.unborn -> show_unborn: boolean Show mesh when particles are unborn -FCurve.auto_clamped_handles -> use_auto_handle_clamp: boolean All auto-handles for F-Curve are clamped +TODO * ExplodeModifier.unborn -> show_unborn: boolean Show mesh when particles are unborn +TODO * FCurve.auto_clamped_handles -> use_auto_handle_clamp: boolean All auto-handles for F-Curve are clamped NEGATE * FCurve.disabled -> enabled: boolean F-Curve could not be evaluated in past, so should be skipped when evaluating FCurve.locked -> lock: boolean F-Curve's settings cannot be edited -FCurve.muted -> use_mute: boolean F-Curve is not evaluated +FCurve.muted -> mute: boolean F-Curve is not evaluated FCurve.selected -> select: boolean F-Curve is selected for editing NEGATE * FCurve.visible -> hide: boolean F-Curve and its keyframes are shown in the Graph Editor graphs FCurveSample.selected -> select: boolean Selection status FModifier.active -> active: boolean F-Curve Modifier is the one being edited NEGATE * FModifier.disabled -> enabled: boolean, (read-only) F-Curve Modifier has invalid settings and will not be evaluated FModifier.expanded -> show_expanded: boolean F-Curve Modifier's panel is expanded in UI -FModifier.muted -> use_mute: boolean F-Curve Modifier will not be evaluated +FModifier.muted -> mute: boolean F-Curve Modifier will not be evaluated FModifierFunctionGenerator.additive -> use_additive: boolean Values generated by this modifier are applied on top of the existing values instead of overwriting them FModifierGenerator.additive -> use_additive: boolean Values generated by this modifier are applied on top of the existing values instead of overwriting them -FModifierLimits.use_maximum_x -> use_x_max: boolean Use the maximum X value -FModifierLimits.use_maximum_y -> use_y_max: boolean Use the maximum Y value -FModifierLimits.use_minimum_x -> use_x_min: boolean Use the minimum X value -FModifierLimits.use_minimum_y -> use_y_min: boolean Use the minimum Y value -FModifierStepped.use_frame_end -> use_frame_end: boolean Restrict modifier to only act before its 'end' frame -FModifierStepped.use_frame_start -> use_frame_start: boolean Restrict modifier to only act after its 'start' frame -FcurveActuator.add -> use_additive: boolean F-Curve is added to the current loc/rot/scale in global or local coordinate according to Local flag -FcurveActuator.child -> use_child: boolean Update F-Curve on all children Objects as well -FcurveActuator.force -> use_force: boolean Apply F-Curve as a global or local force depending on the local option (dynamic objects only) -FcurveActuator.local -> use_local: boolean Let the F-Curve act in local coordinates, used in Force and Add mode +FModifierLimits.use_maximum_x -> use_max_x: boolean Use the maximum X value +FModifierLimits.use_maximum_y -> use_max_y: boolean Use the maximum Y value +FModifierLimits.use_minimum_x -> use_min_x: boolean Use the minimum X value +FModifierLimits.use_minimum_y -> use_min_y: boolean Use the minimum Y value +TODO * FModifierStepped.use_frame_end -> use_frame_end: boolean Restrict modifier to only act before its 'end' frame +TODO * FModifierStepped.use_frame_start -> use_frame_start: boolean Restrict modifier to only act after its 'start' frame +TODO * FcurveActuator.add -> use_additive: boolean F-Curve is added to the current loc/rot/scale in global or local coordinate according to Local flag +TODO * FcurveActuator.child -> use_child: boolean Update F-Curve on all children Objects as well +TODO * FcurveActuator.force -> use_force: boolean Apply F-Curve as a global or local force depending on the local option (dynamic objects only) +TODO * FcurveActuator.local -> use_local: boolean Let the F-Curve act in local coordinates, used in Force and Add mode FieldSettings.do_absorption -> use_absorption: boolean Force gets absorbed by collision objects -FieldSettings.do_location -> use_location: boolean Effect particles' location -FieldSettings.do_rotation -> use_rotation: boolean Effect particles' dynamic rotation -FieldSettings.force_2d -> use_force_2d: boolean Apply force only in 2d -FieldSettings.global_coordinates -> use_coordinates_global: boolean Use effector/global coordinates for turbulence -FieldSettings.guide_path_add -> use_guide_path_add: boolean Based on distance/falloff it adds a portion of the entire path +TODO * FieldSettings.do_location -> use_location: boolean Effect particles' location +TODO * FieldSettings.do_rotation -> use_rotation: boolean Effect particles' dynamic rotation +TODO * FieldSettings.force_2d -> use_force_2d: boolean Apply force only in 2d +TODO * FieldSettings.global_coordinates -> use_coordinates_global: boolean Use effector/global coordinates for turbulence +TODO * FieldSettings.guide_path_add -> use_guide_path_add: boolean Based on distance/falloff it adds a portion of the entire path FieldSettings.multiple_springs -> use_multiple_springs: boolean Every point is effected by multiple springs -FieldSettings.root_coordinates -> use_coordinates_root: boolean Texture coordinates from root particle locations -FieldSettings.use_coordinates -> use_coordinates_object: boolean Use object/global coordinates for texture +TODO * FieldSettings.root_coordinates -> use_coordinates_root: boolean Texture coordinates from root particle locations +TODO * FieldSettings.use_coordinates -> use_coordinates_object: boolean Use object/global coordinates for texture FieldSettings.use_guide_path_weight -> use_guide_path_weight: boolean Use curve weights to influence the particle influence along the curve -FieldSettings.use_max_distance -> use_distance_min: boolean Use a maximum distance for the field to work -FieldSettings.use_min_distance -> use_distance_max: boolean Use a minimum distance for the field's fall-off -FieldSettings.use_radial_max -> use_radial_max: boolean Use a maximum radial distance for the field to work -FieldSettings.use_radial_min -> use_radial_min: boolean Use a minimum radial distance for the field's fall-off +TODO * FieldSettings.use_max_distance -> use_distance_min: boolean Use a maximum distance for the field to work +TODO * FieldSettings.use_min_distance -> use_distance_max: boolean Use a minimum distance for the field's fall-off +TODO * FieldSettings.use_radial_max -> use_radial_max: boolean Use a maximum radial distance for the field to work +TODO * FieldSettings.use_radial_min -> use_radial_min: boolean Use a minimum radial distance for the field's fall-off FileSelectParams.do_filter -> use_filter: boolean Enable filtering of files FileSelectParams.filter_blender -> use_filter_blender: boolean Show .blend files FileSelectParams.filter_folder -> use_filter_folder: boolean Show folders @@ -304,7 +302,7 @@ FileSelectParams.filter_movie -> use_filter_movie: boolean Show movie file FileSelectParams.filter_script -> use_filter_script: boolean Show script files FileSelectParams.filter_sound -> use_filter_sound: boolean Show sound files FileSelectParams.filter_text -> use_filter_text: boolean Show text files -FileSelectParams.hide_dot -> show_hidden: boolean Hide hidden dot files +NEGATE * FileSelectParams.hide_dot -> show_hidden: boolean Hide hidden dot files Filter2DActuator.enable_motion_blur -> use_motion_blur: boolean Enable/Disable Motion Blur FloorConstraint.sticky -> use_sticky: boolean Immobilize object while constrained FloorConstraint.use_rotation -> use_rotation: boolean Use the target's rotation to determine floor @@ -315,7 +313,7 @@ FollowPathConstraint.use_curve_radius -> use_curve_radius: boolean Objects FollowPathConstraint.use_fixed_position -> use_fixed_location: boolean Object will stay locked to a single point somewhere along the length of the curve regardless of time Function.registered -> registered: boolean, (read-only) Function is registered as callback as part of type registration Function.registered_optional -> registered_optional: boolean, (read-only) Function is optionally registered as callback part of type registration -GPencilFrame.paint_lock -> lock_paint: boolean Frame is being edited (painted on) +TODO * GPencilFrame.paint_lock -> lock_paint: boolean Frame is being edited (painted on) GPencilFrame.selected -> select: boolean Frame is selected for editing in the DopeSheet GPencilLayer.active -> active: boolean Set active layer for editing GPencilLayer.frame_lock -> lock_frame: boolean Lock current frame displayed by layer @@ -323,15 +321,15 @@ GPencilLayer.hide -> hide: boolean Set layer Visibility GPencilLayer.locked -> lock: boolean Protect layer from further editing and/or frame changes GPencilLayer.selected -> select: boolean Layer is selected for editing in the DopeSheet GPencilLayer.show_points -> show_points: boolean Draw the points which make up the strokes (for debugging purposes) -GPencilLayer.use_onion_skinning -> use_onion_skin: boolean Ghost frames on either side of frame +TODO * GPencilLayer.use_onion_skinning -> use_onion_skin: boolean Ghost frames on either side of frame GameBooleanProperty.value -> value: boolean Property value -GameObjectSettings.actor -> use_actor: boolean Object is detected by the Near and Radar sensor -GameObjectSettings.all_states -> states_all: boolean Set all state bits +TODO * GameObjectSettings.actor -> use_actor: boolean Object is detected by the Near and Radar sensor +TODO * GameObjectSettings.all_states -> states_all: boolean Set all state bits GameObjectSettings.anisotropic_friction -> use_anisotropic_friction: boolean Enable anisotropic friction GameObjectSettings.collision_compound -> use_collision_compound: boolean Add children to form a compound collision object -GameObjectSettings.debug_state -> show_state_debug: boolean Print state debug info in the game engine -GameObjectSettings.ghost -> use_ghost: boolean Object does not restitute collisions, like a ghost -GameObjectSettings.initial_state -> initial_state: boolean Initial state when the game starts +GameObjectSettings.debug_state -> show_debug_state: boolean Print state debug info in the game engine +TODO * GameObjectSettings.ghost -> use_ghost: boolean Object does not restitute collisions, like a ghost +TODO * GameObjectSettings.initial_state -> state_initial: boolean Initial state when the game starts GameObjectSettings.lock_x_axis -> lock_location_x: boolean Disable simulation of linear motion along the X axis GameObjectSettings.lock_x_rot_axis -> lock_rotation_x: boolean Disable simulation of angular motion along the X axis GameObjectSettings.lock_y_axis -> lock_location_y: boolean Disable simulation of linear motion along the Y axis @@ -349,8 +347,8 @@ GameObjectSettings.use_activity_culling -> use_activity_culling: boolean D GameObjectSettings.use_collision_bounds -> use_collision_bounds: boolean Specify a collision bounds type other than the default GameObjectSettings.used_state -> state_used: boolean, (read-only) States which are being used by controllers GameObjectSettings.visible_state -> state_visible: boolean State determining which controllers are displayed -GameProperty.debug -> use_debug: boolean Print debug information for this property -GameSoftBodySettings.bending_const -> use_bending_constraint: boolean Enable bending constraints +GameProperty.debug -> show_debug: boolean Print debug information for this property +GameSoftBodySettings.bending_const -> use_bending_constraints: boolean Enable bending constraints GameSoftBodySettings.cluster_rigid_to_softbody -> use_cluster_rigid_to_softbody: boolean Enable cluster collision between soft and rigid body GameSoftBodySettings.cluster_soft_to_softbody -> use_cluster_soft_to_softbody: boolean Enable cluster collision between soft and soft body GameSoftBodySettings.shape_match -> use_shape_match: boolean Enable soft body shape matching goal @@ -359,7 +357,7 @@ GreasePencil.use_stroke_endpoints -> use_stroke_endpoints: boolean Only us Group.layer -> layer: boolean Layers visible when this groups is instanced as a dupli ID.fake_user -> use_fake_user: boolean Saves this datablock even if it has no users ID.tag -> tag: boolean Tools can use this to tag data, (initial state is undefined) -Image.animated -> use_snimation: boolean Use as animated texture in the game engine +Image.animated -> use_animation: boolean Use as animated texture in the game engine Image.clamp_x -> use_clamp_x: boolean Disable texture repeating horizontally Image.clamp_y -> use_clamp_y: boolean Disable texture repeating vertically Image.dirty -> is_dirty: boolean, (read-only) Image has changed and is not saved @@ -370,7 +368,7 @@ Image.tiles -> use_tiles: boolean Use of tilemode for faces (default shift ImagePaint.invert_stencil -> invert_stencil: boolean Invert the stencil layer ImagePaint.show_brush -> show_brush: boolean Enables brush shape while not drawing ImagePaint.show_brush_draw -> show_brush_draw: boolean Enables brush shape while drawing -ImagePaint.use_backface_cull -> use_backface_cull: boolean Ignore faces pointing away from the view (faster) +TODO * ImagePaint.use_backface_cull -> use_backface_cull: boolean Ignore faces pointing away from the view (faster) ImagePaint.use_clone_layer -> use_clone_layer: boolean Use another UV layer as clone source, otherwise use 3D the cursor as the source ImagePaint.use_normal_falloff -> use_normal_falloff: boolean Paint most on faces pointing towards the view ImagePaint.use_occlude -> use_occlude: boolean Only paint onto the faces directly under the brush (slower) @@ -380,18 +378,18 @@ ImageSequence.convert_float -> use_float: boolean Convert input to float d ImageSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields ImageSequence.flip_x -> use_flip_x: boolean Flip on the X axis ImageSequence.flip_y -> use_flip_y: boolean Flip on the Y axis -ImageSequence.premultiply -> use_premultiply: boolean Convert RGB from key alpha to premultiplied alpha +TODO * ImageSequence.premultiply -> use_premultiply: boolean Convert RGB from key alpha to premultiplied alpha ImageSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean Use a custom directory to store data ImageSequence.proxy_custom_file -> use_proxy_custom_file: boolean Use a custom file to read proxy data from -ImageSequence.reverse_frames -> use_frame_reverse: boolean Reverse frame order +TODO * ImageSequence.reverse_frames -> use_frame_reverse: boolean Reverse frame order ImageSequence.use_color_balance -> use_color_balance: boolean (3-Way color correction) on input ImageSequence.use_crop -> use_crop: boolean Crop image before processing ImageSequence.use_proxy -> use_proxy: boolean Use a preview proxy for this strip ImageSequence.use_translation -> use_translation: boolean Translate image before processing -ImageTexture.calculate_alpha -> use_rgb_alpha: boolean Calculates an alpha channel based on RGB values in the image +TODO * ImageTexture.calculate_alpha -> use_rgb_alpha: boolean Calculates an alpha channel based on RGB values in the image ImageTexture.checker_even -> use_checker_even: boolean Sets even checker tiles ImageTexture.checker_odd -> use_checker_odd: boolean Sets odd checker tiles -ImageTexture.filter_size_minimum -> use_filter_size_min: boolean Use Filter Size as a minimal filter value in pixels +ImageTexture.filter_size_minimum -> use_minimum_filter_size: boolean Use Filter Size as a minimal filter value in pixels ImageTexture.flip_axis -> use_flip_axis: boolean Flips the texture's X and Y axis ImageTexture.interpolation -> use_interpolation: boolean Interpolates pixels using Area filter ImageTexture.invert_alpha -> invert_alpha: boolean Inverts all the alpha values in the image @@ -400,32 +398,32 @@ ImageTexture.mipmap_gauss -> use_mipmap_gauss: boolean Uses Gauss filter t ImageTexture.mirror_x -> use_mirror_x: boolean Mirrors the image repetition on the X direction ImageTexture.mirror_y -> use_mirror_y: boolean Mirrors the image repetition on the Y direction ImageTexture.normal_map -> use_normal_map: boolean Uses image RGB values for normal mapping -ImageTexture.use_alpha -> use_use_alpha: boolean Uses the alpha channel information in the image +ImageTexture.use_alpha -> use_alpha: boolean Uses the alpha channel information in the image ImageUser.auto_refresh -> use_auto_refresh: boolean Always refresh image on frame changes ImageUser.cyclic -> use_cyclic: boolean Cycle the images in the movie TODO would use is_ * InflowFluidSettings.active -> active: boolean Object contributes to the fluid simulation -InflowFluidSettings.export_animated_mesh -> use_export_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it -InflowFluidSettings.local_coordinates -> use_local_coordinates: boolean Use local coordinates for inflow. (e.g. for rotating objects) +TODO * InflowFluidSettings.export_animated_mesh -> use_export_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it +TODO * InflowFluidSettings.local_coordinates -> use_local_coordinates: boolean Use local coordinates for inflow. (e.g. for rotating objects) Itasc.auto_step -> use_auto_step: boolean Automatically determine the optimal number of steps for best performance/accuracy trade off JoystickSensor.all_events -> use_all_events: boolean Triggered by all events on this joysticks current type (axis/button/hat) -Key.relative -> use_relative: boolean Makes shape keys relative -TODO would use is_ * KeyConfig.user_defined -> user_defined: boolean, (read-only) Indicates that a keyconfig was defined by the user +TODO * Key.relative -> use_relative: boolean Makes shape keys relative +KeyConfig.user_defined -> is_user_defined: boolean, (read-only) Indicates that a keyconfig was defined by the user KeyMap.children_expanded -> show_expanded_children: boolean Children expanded in the user interface KeyMap.items_expanded -> show_expanded_items: boolean Expanded in the user interface -TODO would use is_ * KeyMap.modal -> modal: boolean, (read-only) Indicates that a keymap is used for translate modal events for an operator -KeyMap.user_defined -> use_user_defined: boolean Keymap is defined by the user +KeyMap.modal -> is_modal: boolean, (read-only) Indicates that a keymap is used for translate modal events for an operator +KeyMap.user_defined -> is_user_defined: boolean Keymap is defined by the user KeyMapItem.active -> active: boolean Activate or deactivate item -TODO would use is_pressed * KeyMapItem.alt -> alt: boolean Alt key pressed -TODO would use is_pressed * KeyMapItem.any -> any: boolean Any modifier keys pressed -TODO would use is_pressed * KeyMapItem.ctrl -> ctrl: boolean Control key pressed +KeyMapItem.alt -> alt: boolean Alt key pressed +KeyMapItem.any -> any: boolean Any modifier keys pressed +KeyMapItem.ctrl -> ctrl: boolean Control key pressed KeyMapItem.expanded -> show_expanded: boolean Show key map event and property details in the user interface -TODO would use is_pressed * KeyMapItem.oskey -> oskey: boolean Operating system key pressed -TODO would use is_pressed * KeyMapItem.shift -> shift: boolean Shift key pressed -TODO * KeyboardSensor.all_keys -> all_keys: boolean Trigger this sensor on any keystroke -TODO would use is_ * Keyframe.selected -> select: boolean Control point selection status -TODO would use is_ * Keyframe.selected_handle1 -> select_left_handle: boolean Handle 1 selection status -TODO would use is_ * Keyframe.selected_handle2 -> select_right_handle: boolean Handle 2 selection status -KeyingSet.absolute -> use_absolute: boolean Keying Set defines specific paths/settings to be keyframed (i.e. is not reliant on context info) +KeyMapItem.oskey -> oskey: boolean Operating system key pressed +KeyMapItem.shift -> shift: boolean Shift key pressed +KeyboardSensor.all_keys -> use_all_keys: boolean Trigger this sensor on any keystroke +Keyframe.selected -> select: boolean Control point selection status +Keyframe.selected_handle1 -> select_left_handle: boolean Handle 1 selection status +Keyframe.selected_handle2 -> select_right_handle: boolean Handle 2 selection status +TODO * KeyingSet.absolute -> use_absolute: boolean Keying Set defines specific paths/settings to be keyframed (i.e. is not reliant on context info) KeyingSet.insertkey_needed -> use_insertkey_needed: boolean Only insert keyframes where they're needed in the relevant F-Curves KeyingSet.insertkey_visual -> use_insertkey_visual: boolean Insert keyframes based on 'visual transforms' KeyingSet.insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb: boolean Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis @@ -449,7 +447,7 @@ KinematicConstraint.use_tail -> use_tail: boolean Include bone's tail as l KinematicConstraint.use_target -> use_target: boolean Disable for targetless IK Lamp.diffuse -> use_diffuse: boolean Lamp does diffuse shading Lamp.layer -> use_own_layer: boolean Illuminates objects only on the same layer the lamp is on -Lamp.negative -> use_negative: boolean Lamp casts negative light +TODO * Lamp.negative -> use_negative: boolean Lamp casts negative light Lamp.specular -> use_specular: boolean Lamp creates specular highlights LampSkySettings.use_atmosphere -> use_atmosphere: boolean Apply sun effect on atmosphere LampSkySettings.use_sky -> use_sky: boolean Apply sun effect on sky @@ -457,44 +455,44 @@ LampTextureSlot.map_color -> use_map_color: boolean Lets the texture affec LampTextureSlot.map_shadow -> use_map_shadow: boolean Lets the texture affect the shadow color of the lamp Lattice.outside -> use_outside: boolean Only draw, and take into account, the outer vertices LimitLocationConstraint.limit_transform -> limit_transform: boolean Transforms are affected by this constraint as well -LimitLocationConstraint.use_maximum_x -> use_x_max: boolean Use the maximum X value -LimitLocationConstraint.use_maximum_y -> use_y_max: boolean Use the maximum Y value -LimitLocationConstraint.use_maximum_z -> use_z_max: boolean Use the maximum Z value -LimitLocationConstraint.use_minimum_x -> use_x_min: boolean Use the minimum X value -LimitLocationConstraint.use_minimum_y -> use_y_min: boolean Use the minimum Y value -LimitLocationConstraint.use_minimum_z -> use_z_min: boolean Use the minimum Z value +LimitLocationConstraint.use_maximum_x -> use_max_x: boolean Use the maximum X value +LimitLocationConstraint.use_maximum_y -> use_max_y: boolean Use the maximum Y value +LimitLocationConstraint.use_maximum_z -> use_max_z: boolean Use the maximum Z value +LimitLocationConstraint.use_minimum_x -> use_min_x: boolean Use the minimum X value +LimitLocationConstraint.use_minimum_y -> use_min_y: boolean Use the minimum Y value +LimitLocationConstraint.use_minimum_z -> use_min_z: boolean Use the minimum Z value LimitRotationConstraint.limit_transform -> limit_transform: boolean Transforms are affected by this constraint as well -LimitRotationConstraint.use_limit_x -> use_x_limit: boolean Use the minimum X value -LimitRotationConstraint.use_limit_y -> use_y_limit: boolean Use the minimum Y value -LimitRotationConstraint.use_limit_z -> use_z_limit: boolean Use the minimum Z value +LimitRotationConstraint.use_limit_x -> use_limit_x: boolean Use the minimum X value +LimitRotationConstraint.use_limit_y -> use_limit_y: boolean Use the minimum Y value +LimitRotationConstraint.use_limit_z -> use_limit_z: boolean Use the minimum Z value LimitScaleConstraint.limit_transform -> limit_transform: boolean Transforms are affected by this constraint as well -LimitScaleConstraint.use_maximum_x -> use_x_max: boolean Use the maximum X value -LimitScaleConstraint.use_maximum_y -> use_y_max: boolean Use the maximum Y value -LimitScaleConstraint.use_maximum_z -> use_z_max: boolean Use the maximum Z value -LimitScaleConstraint.use_minimum_x -> use_x_min: boolean Use the minimum X value -LimitScaleConstraint.use_minimum_y -> use_y_min: boolean Use the minimum Y value -LimitScaleConstraint.use_minimum_z -> use_z_min: boolean Use the minimum Z value +LimitScaleConstraint.use_maximum_x -> use_max_x: boolean Use the maximum X value +LimitScaleConstraint.use_maximum_y -> use_max_y: boolean Use the maximum Y value +LimitScaleConstraint.use_maximum_z -> use_max_z: boolean Use the maximum Z value +LimitScaleConstraint.use_minimum_x -> use_min_x: boolean Use the minimum X value +LimitScaleConstraint.use_minimum_y -> use_min_y: boolean Use the minimum Y value +LimitScaleConstraint.use_minimum_z -> use_min_z: boolean Use the minimum Z value Main.debug -> show_debug: boolean Print debugging information in console Main.file_is_saved -> is_saved: boolean, (read-only) Has the current session been saved to disk as a .blend file -TODO * MaskModifier.invert -> invert: boolean Use vertices that are not part of region defined +MaskModifier.invert -> invert: boolean Use vertices that are not part of region defined Material.cast_approximate -> use_cast_approximate: boolean Allow this material to cast shadows when using approximate ambient occlusion. Material.cast_buffer_shadows -> use_cast_buffer_shadows: boolean Allow this material to cast shadows from shadow buffer lamps Material.cast_shadows_only -> use_cast_shadows_only: boolean Makes objects with this material appear invisible, only casting shadows (not rendered) Material.cubic -> use_cubic: boolean Use cubic interpolation for diffuse values, for smoother transitions -Material.exclude_mist -> use_exclude_mist: boolean Excludes this material from mist effects (in world settings) +NEGATE * Material.exclude_mist -> use_mist: boolean Excludes this material from mist effects (in world settings) Material.face_texture -> use_face_texture: boolean Replaces the object's base color with color from face assigned image textures Material.face_texture_alpha -> use_face_texture_alpha: boolean Replaces the object's base alpha value with alpha from face assigned image textures Material.full_oversampling -> use_full_oversampling: boolean Force this material to render full shading/textures for all anti-aliasing samples -Material.invert_z -> use_invert_z: boolean Renders material's faces with an inverted Z buffer (scanline only) +Material.invert_z -> invert_z: boolean Renders material's faces with an inverted Z buffer (scanline only) Material.light_group_exclusive -> use_light_group_exclusive: boolean Material uses the light group exclusively - these lamps are excluded from other scene lighting Material.object_color -> use_object_color: boolean Modulate the result with a per-object color Material.only_shadow -> use_shadow_only: boolean Renders shadows as the material's alpha value, making materials transparent except for shadowed areas Material.ray_shadow_bias -> use_ray_shadow_bias: boolean Prevents raytraced shadow errors on surfaces with smooth shaded normals (terminator problem) -Material.receive_transparent_shadows -> use_receive_transparent_shadows: boolean Allow this object to receive transparent shadows casted through other objects -Material.shadeless -> use_shadeless: boolean Makes this material insensitive to light or shadow -Material.shadows -> use_shadows: boolean Allows this material to receive shadows +TODO * Material.receive_transparent_shadows -> use_receive_transparent_shadows: boolean Allow this object to receive transparent shadows casted through other objects +TODO * Material.shadeless -> use_shadeless: boolean Makes this material insensitive to light or shadow +TODO * Material.shadows -> use_shadows: boolean Allows this material to receive shadows Material.tangent_shading -> use_tangent_shading: boolean Use the material's tangent vector instead of the normal for shading - for anisotropic shading effects -Material.traceable -> use_traceable: boolean Include this material and geometry that uses it in ray tracing calculations +TODO * Material.traceable -> use_traceable: boolean Include this material and geometry that uses it in ray tracing calculations Material.transparency -> use_transparency: boolean Render material as transparent Material.use_diffuse_ramp -> use_diffuse_ramp: boolean Toggle diffuse ramp operations Material.use_nodes -> use_nodes: boolean Use shader nodes to render the material @@ -506,12 +504,12 @@ Material.vertex_color_paint -> use_vertex_color_paint: boolean Replaces ob MaterialHalo.flare_mode -> use_flare_mode: boolean Renders halo as a lensflare MaterialHalo.lines -> use_lines: boolean Renders star shaped lines over halo MaterialHalo.ring -> use_ring: boolean Renders rings over halo -MaterialHalo.shaded -> use_shaded: boolean Lets halo receive light and shadows from external objects +MaterialHalo.shaded -> use_shading: boolean Lets halo receive light and shadows from external objects MaterialHalo.soft -> use_soft: boolean Softens the edges of halos at intersections with other geometry MaterialHalo.star -> use_star: boolean Renders halo as a star MaterialHalo.texture -> use_texture: boolean Gives halo a texture MaterialHalo.vertex_normal -> use_vertex_normal: boolean Uses the vertex normal to specify the dimension of the halo -MaterialHalo.xalpha -> use_xalpha: boolean Uses extreme alpha +MaterialHalo.xalpha -> use_extreme_alpha: boolean Uses extreme alpha MaterialPhysics.align_to_normal -> use_align_to_normal: boolean Align dynamic game objects along the surface normal, when inside the physics distance area TODO * MaterialRaytraceMirror.enabled -> enabled: boolean Enable raytraced reflections MaterialStrand.blender_units -> use_blender_units: boolean Use Blender units for widths instead of pixels @@ -543,12 +541,12 @@ MaterialTextureSlot.map_specular -> use_map_specular: boolean Causes the t MaterialTextureSlot.map_translucency -> use_map_translucency: boolean Causes the texture to affect the translucency value MaterialTextureSlot.map_warp -> use_map_warp: boolean Let the texture warp texture coordinates of next channels MaterialTextureSlot.new_bump -> use_new_bump: boolean Use new, corrected bump mapping code (backwards compatibility option) -MaterialVolume.external_shadows -> use_external_shadows: boolean Receive shadows from sources outside the volume (temporary) +TODO * MaterialVolume.external_shadows -> use_external_shadows: boolean Receive shadows from sources outside the volume (temporary) MaterialVolume.light_cache -> use_light_cache: boolean Pre-calculate the shading information into a voxel grid, speeds up shading at slightly less accuracy Mesh.all_edges -> show_all_edges: boolean Displays all edges for wireframe in all view modes in the 3D view Mesh.auto_texspace -> use_auto_texspace: boolean Adjusts active object's texture space automatically when transforming object Mesh.autosmooth -> use_autosmooth: boolean Treats all set-smoothed faces with angles less than the specified angle as 'smooth' during render -Mesh.double_sided -> use_double_sided: boolean Render/display the mesh with double or single sided lighting +Mesh.double_sided -> show_double_sided: boolean Render/display the mesh with double or single sided lighting Mesh.draw_bevel_weights -> show_bevel_weights: boolean Displays weights created for the Bevel modifier Mesh.draw_creases -> show_creases: boolean Displays creases created for subsurf weighting Mesh.draw_edge_angle -> show_edge_angle: boolean Displays the angles in the selected edges in degrees @@ -570,24 +568,24 @@ MeshDeformModifier.dynamic -> dynamic: boolean Recompute binding dynamical MeshDeformModifier.invert -> invert: boolean Invert vertex group influence MeshDeformModifier.is_bound -> is_bound: boolean, (read-only) Whether geometry has been bound to control cage MeshEdge.fgon -> is_fgon: boolean, (read-only) Fgon edge -TODO * MeshEdge.hidden -> hide: boolean -MeshEdge.loose -> use_loose: boolean, (read-only) Loose edge -MeshEdge.seam -> use_seam: boolean Seam edge for UV unwrapping -TODO * MeshEdge.selected -> select: boolean -MeshEdge.sharp -> use_sharp: boolean Sharp edge for the EdgeSplit modifier -TODO would use is_ * MeshFace.hidden -> hide: boolean -TODO would use is_ * MeshFace.selected -> select: boolean -TODO would use is_ * MeshFace.smooth -> use_smooth: boolean -MeshTextureFace.alpha_sort -> use_alpha_sort: boolean Enable sorting of faces for correct alpha drawing (slow, use Clip Alpha instead when possible) -MeshTextureFace.billboard -> use_billboard: boolean Billboard with Z-axis constraint -MeshTextureFace.collision -> use_collision: boolean Use face for collision and ray-sensor detection -MeshTextureFace.halo -> use_halo: boolean Screen aligned billboard +MeshEdge.hidden -> hide: boolean +MeshEdge.loose -> is_loose: boolean, (read-only) Loose edge +MeshEdge.seam -> is_seam: boolean Seam edge for UV unwrapping +MeshEdge.selected -> select: boolean +MeshEdge.sharp -> is_sharp: boolean Sharp edge for the EdgeSplit modifier +MeshFace.hidden -> hide: boolean +MeshFace.selected -> select: boolean +MeshFace.smooth -> is_smooth: boolean +TODO * MeshTextureFace.alpha_sort -> use_alpha_sort: boolean Enable sorting of faces for correct alpha drawing (slow, use Clip Alpha instead when possible) +TODO * MeshTextureFace.billboard -> use_billboard: boolean Billboard with Z-axis constraint +TODO * MeshTextureFace.collision -> use_collision: boolean Use face for collision and ray-sensor detection +TODO * MeshTextureFace.halo -> use_halo: boolean Screen aligned billboard TODO would use is_ * MeshTextureFace.invisible -> invisible: boolean Make face invisible MeshTextureFace.light -> use_light: boolean Use light for face MeshTextureFace.object_color -> use_object_color: boolean Use ObColor instead of vertex colors MeshTextureFace.shadow -> use_shadow_face: boolean Face is used for shadow MeshTextureFace.shared -> use_blend_shared: boolean Blend vertex colors across face when vertices are shared -MeshTextureFace.tex -> use_render_texture: boolean Render face with texture +MeshTextureFace.tex -> use_texture: boolean Render face with texture MeshTextureFace.text -> use_bitmap_text: boolean Enable bitmap text on face MeshTextureFace.twoside -> use_twoside: boolean Render face two-sided MeshTextureFace.uv_pinned -> uv_pin: boolean @@ -595,43 +593,43 @@ MeshTextureFace.uv_selected -> uv_select: boolean TODO * MeshTextureFaceLayer.active -> active: boolean Sets the layer as active for display and editing TODO * MeshTextureFaceLayer.active_clone -> active_clone: boolean Sets the layer as active for cloning TODO * MeshTextureFaceLayer.active_render -> active_render: boolean Sets the layer as active for rendering -TODO * MeshVertex.hidden -> hide: boolean +MeshVertex.hidden -> hide: boolean TODO would use is_ * MeshVertex.selected -> select: boolean MetaBall.auto_texspace -> use_auto_texspace: boolean Adjusts active object's texture space automatically when transforming object -TODO * MetaElement.hide -> hide: boolean Hide element +MetaElement.hide -> hide: boolean Hide element TODO would use is_ * MetaElement.negative -> use_negative: boolean Set metaball as negative one MetaSequence.convert_float -> use_convert_float: boolean Convert input to float data MetaSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields MetaSequence.flip_x -> use_flip_x: boolean Flip on the X axis MetaSequence.flip_y -> use_flip_y: boolean Flip on the Y axis -MetaSequence.premultiply -> use_convert_premultiply: boolean Convert RGB from key alpha to premultiplied alpha +* TODO MetaSequence.premultiply -> use_convert_premultiply: boolean Convert RGB from key alpha to premultiplied alpha MetaSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean Use a custom directory to store data MetaSequence.proxy_custom_file -> use_proxy_custom_file: boolean Use a custom file to read proxy data from -MetaSequence.reverse_frames -> use_reverse_frames: boolean Reverse frame order +TODO * MetaSequence.reverse_frames -> use_reverse_frames: boolean Reverse frame order MetaSequence.use_color_balance -> use_color_balance: boolean (3-Way color correction) on input MetaSequence.use_crop -> use_crop: boolean Crop image before processing MetaSequence.use_proxy -> use_proxy: boolean Use a preview proxy for this strip MetaSequence.use_translation -> use_translation: boolean Translate image before processing -MirrorModifier.clip -> use_clipping: boolean Prevents vertices from going through the mirror during transform +MirrorModifier.clip -> use_clip: boolean Prevents vertices from going through the mirror during transform MirrorModifier.mirror_u -> use_mirror_u: boolean Mirror the U texture coordinate around the 0.5 point MirrorModifier.mirror_v -> use_mirror_v: boolean Mirror the V texture coordinate around the 0.5 point MirrorModifier.mirror_vertex_groups -> use_mirror_vertex_groups: boolean Mirror vertex groups (e.g. .R->.L) -MirrorModifier.x -> use_x: boolean Enable X axis mirror -MirrorModifier.y -> use_y: boolean Enable Y axis mirror -MirrorModifier.z -> use_z: boolean Enable Z axis mirror -Modifier.editmode -> use_in_editmode: boolean Use modifier while in the edit mode +TODO * MirrorModifier.x -> use_x: boolean Enable X axis mirror +TODO * MirrorModifier.y -> use_y: boolean Enable Y axis mirror +TODO * MirrorModifier.z -> use_z: boolean Enable Z axis mirror +Modifier.editmode -> show_in_editmode: boolean Use modifier while in the edit mode Modifier.expanded -> show_expanded: boolean Set modifier expanded in the user interface -Modifier.on_cage -> use_on_cage: boolean Enable direct editing of modifier control cage +Modifier.on_cage -> show_on_cage: boolean Enable direct editing of modifier control cage Modifier.realtime -> show_realtime: boolean Realtime display of a modifier -Modifier.render -> use_render: boolean Use modifier during rendering +TODO * Modifier.render -> use_render: boolean Use modifier during rendering TODO * MotionPath.editing -> editing: boolean Path is being edited TODO * MotionPath.use_bone_head -> use_bone_head: boolean, (read-only) For PoseBone paths, use the bone head location when calculating this path -TODO would use is_ * MotionPathVert.selected -> select: boolean Path point is selected for editing +MotionPathVert.selected -> select: boolean Path point is selected for editing MovieSequence.convert_float -> use_convert_float: boolean Convert input to float data MovieSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields MovieSequence.flip_x -> use_flip_x: boolean Flip on the X axis MovieSequence.flip_y -> use_flip_y: boolean Flip on the Y axis -MovieSequence.premultiply -> use_convert_premultiply: boolean Convert RGB from key alpha to premultiplied alpha +TODO * MovieSequence.premultiply -> use_convert_premultiply: boolean Convert RGB from key alpha to premultiplied alpha MovieSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean Use a custom directory to store data MovieSequence.proxy_custom_file -> use_proxy_custom_file: boolean Use a custom file to read proxy data from TODO * MovieSequence.reverse_frames -> use_reverse_frames: boolean Reverse frame order @@ -643,7 +641,7 @@ MulticamSequence.convert_float -> use_convert_float: boolean Convert input MulticamSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields MulticamSequence.flip_x -> use_flip_x: boolean Flip on the X axis MulticamSequence.flip_y -> use_flip_y: boolean Flip on the Y axis -MulticamSequence.premultiply -> use_convert_premultiply: boolean Convert RGB from key alpha to premultiplied alpha +TODO * MulticamSequence.premultiply -> use_convert_premultiply: boolean Convert RGB from key alpha to premultiplied alpha MulticamSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean Use a custom directory to store data MulticamSequence.proxy_custom_file -> use_proxy_custom_file: boolean Use a custom file to read proxy data from TODO * MulticamSequence.reverse_frames -> use_reverse_frames: boolean Reverse frame order @@ -651,25 +649,25 @@ MulticamSequence.use_color_balance -> use_color_balance: boolean (3-Way co MulticamSequence.use_crop -> use_crop: boolean Crop image before processing MulticamSequence.use_proxy -> use_proxy: boolean Use a preview proxy for this strip MulticamSequence.use_translation -> use_translation: boolean Translate image before processing -MultiresModifier.external -> use_external: boolean, (read-only) Store multires displacements outside the .blend file, to save memory -MultiresModifier.optimal_display -> show_optimal: boolean Skip drawing/rendering of interior subdivided edges -NetRenderSettings.master_broadcast -> use_master_broadcast: boolean broadcast master server address on local network -NetRenderSettings.master_clear -> use_master_clear: boolean delete saved files on exit -NetRenderSettings.slave_clear -> use_slave_clear: boolean delete downloaded files on exit -NetRenderSettings.slave_outputlog -> use_slave_outputlog: boolean Output render text log to console as well as sending it to the master -NetRenderSettings.slave_thumb -> use_slave_thumb: boolean Generate thumbnails on slaves instead of master -TODO I'd use is_ * NlaStrip.active -> active: boolean, (read-only) NLA Strip is active +MultiresModifier.external -> is_external: boolean, (read-only) Store multires displacements outside the .blend file, to save memory +TODO * MultiresModifier.optimal_display -> show_optimal: boolean Skip drawing/rendering of interior subdivided edges +TODO * NetRenderSettings.master_broadcast -> use_master_broadcast: boolean broadcast master server address on local network +TODO * NetRenderSettings.master_clear -> use_master_clear: boolean delete saved files on exit +TODO * NetRenderSettings.slave_clear -> use_slave_clear: boolean delete downloaded files on exit +TODO * NetRenderSettings.slave_outputlog -> use_slave_outputlog: boolean Output render text log to console as well as sending it to the master +TODO * NetRenderSettings.slave_thumb -> use_slave_thumb: boolean Generate thumbnails on slaves instead of master +NlaStrip.active -> active: boolean, (read-only) NLA Strip is active NlaStrip.animated_influence -> use_animated_influence: boolean Influence setting is controlled by an F-Curve rather than automatically determined NlaStrip.animated_time -> use_animated_time: boolean Strip time is controlled by an F-Curve rather than automatically determined NlaStrip.animated_time_cyclic -> use_animated_time_cyclic: boolean Cycle the animated time within the action start & end NlaStrip.auto_blending -> use_auto_blend: boolean Number of frames for Blending In/Out is automatically determined from overlapping strips -TODO I'd use is_ * NlaStrip.muted -> muted: boolean NLA Strip is not evaluated +NlaStrip.muted -> mute: boolean NLA Strip is not evaluated TODO I'd use is_ * NlaStrip.reversed -> reversed: boolean NLA Strip is played back in reverse order (only when timing is automatically determined) -TODO I'd use is_ * NlaStrip.selected -> select: boolean NLA Strip is selected -TODO I'd use is_ * NlaTrack.active -> active: boolean, (read-only) NLA Track is active -TODO I'd use is_ * NlaTrack.locked -> lock: boolean NLA Track is locked -TODO I'd use is_ * NlaTrack.muted -> muted: boolean NLA Track is not evaluated -TODO I'd use is_ * NlaTrack.selected -> select: boolean NLA Track is selected +NlaStrip.selected -> select: boolean NLA Strip is selected +NlaTrack.active -> active: boolean, (read-only) NLA Track is active +NlaTrack.locked -> lock: boolean NLA Track is locked +NlaTrack.muted -> mute: boolean NLA Track is not evaluated +NlaTrack.selected -> select: boolean NLA Track is selected NlaTrack.solo -> is_solo: boolean, (read-only) NLA Track is evaluated itself (i.e. active Action and all other NLA Tracks in the same AnimData block are disabled) Object.draw_axis -> show_axis: boolean Displays the object's origin and axis Object.draw_bounds -> show_bounds: boolean Displays the object's bounds @@ -677,8 +675,8 @@ Object.draw_name -> show_name: boolean Displays the object's name Object.draw_texture_space -> show_texture_space: boolean Displays the object's texture space Object.draw_transparent -> show_transparent: boolean Enables transparent materials for the object (Mesh only) Object.draw_wire -> show_wire: boolean Adds the object's wireframe over solid drawing -TODO * Object.duplis_used -> is_duplis_used: boolean, (read-only) -TODO * Object.layers -> layers: boolean Layers the object is on +Object.duplis_used -> is_duplicator: boolean, (read-only) +Object.layers -> layer: boolean Layers the object is on Object.lock_location -> lock_location: boolean Lock editing of location in the interface Object.lock_rotation -> lock_rotation: boolean Lock editing of rotation in the interface Object.lock_rotation_w -> lock_rotation_w: boolean Lock editing of 'angle' component of four-component rotations in the interface @@ -687,8 +685,8 @@ Object.lock_scale -> lock_scale: boolean Lock editing of scale in the inte TODO * Object.restrict_render -> use_limit_render: boolean Restrict renderability TODO * Object.restrict_select -> use_limit_select: boolean Restrict selection in the viewport TODO * Object.restrict_view -> use_limit_view: boolean Restrict visibility in the viewport -TODO * Object.selected -> select: boolean Object selection state -Object.shape_key_edit_mode -> use_shape_key_edit_mode: boolean Apply shape keys in edit mode (for Meshes only) +Object.selected -> select: boolean Object selection state +TODO * Object.shape_key_edit_mode -> use_shape_key_edit_mode: boolean Apply shape keys in edit mode (for Meshes only) Object.shape_key_lock -> show_shape_key: boolean Always show the current Shape for this Object Object.slow_parent -> use_slow_parent: boolean Create a delay in the parent relationship Object.time_offset_add_parent -> use_time_offset_add_parent: boolean Add the parents time offset value @@ -709,82 +707,82 @@ ObjectActuator.local_torque -> use_local_torque: boolean Torque is defined TODO * ObjectActuator.servo_limit_x -> use_limit_servo_x: boolean Set limit to force along the X axis TODO * ObjectActuator.servo_limit_y -> use_limit_servo_y: boolean Set limit to force along the Y axis TODO * ObjectActuator.servo_limit_z -> use_limit_servo_z: boolean Set limit to force along the Z axis -TODO * ObjectBase.layers -> layers: boolean Layers the object base is on -TODO * ObjectBase.selected -> select: boolean Object base selection state +ObjectBase.layers -> layer: boolean Layers the object base is on +ObjectBase.selected -> select: boolean Object base selection state TODO * ObjectBase.selected_user -> is_select_user: boolean, (read-only) Object base user selection state, used to restore user selection after transformations -TODO could be is_ * ObstacleFluidSettings.active -> active: boolean Object contributes to the fluid simulation -ObstacleFluidSettings.export_animated_mesh -> use_export_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it +ObstacleFluidSettings.active -> active: boolean Object contributes to the fluid simulation +TODO * ObstacleFluidSettings.export_animated_mesh -> use_export_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it TODO * Operator.has_reports -> has_reports: boolean, (read-only) Operator has a set of reports (warnings and errors) from last execution OperatorStrokeElement.flip -> use_flip: boolean OutflowFluidSettings.active -> active: boolean Object contributes to the fluid simulation -OutflowFluidSettings.export_animated_mesh -> use_export_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it +TODO * OutflowFluidSettings.export_animated_mesh -> use_export_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it Paint.fast_navigate -> show_low_resolution: boolean For multires, show low resolution while navigating the view Paint.show_brush -> show_brush: boolean TODO * Panel.bl_default_closed -> bl_default_closed: boolean TODO * Panel.bl_show_header -> bl_show_header: boolean ParentActuator.compound -> use_compound: boolean Add this object shape to the parent shape (only if the parent shape is already compound) -ParentActuator.ghost -> use_ghost: boolean Make this object ghost while parented (only if not compound) +TODO * ParentActuator.ghost -> use_ghost: boolean Make this object ghost while parented (only if not compound) TODO * Particle.no_disp -> no_disp: boolean TODO * Particle.rekey -> rekey: boolean TODO * Particle.unexist -> unexist: boolean ParticleBrush.use_puff_volume -> use_puff_volume: boolean Apply puff to unselected end-points, (helps maintain hair volume when puffing root) -ParticleEdit.add_interpolate -> use_add_interpolate: boolean Interpolate new particles from the existing ones +TODO * ParticleEdit.add_interpolate -> use_add_interpolate: boolean Interpolate new particles from the existing ones ParticleEdit.auto_velocity -> use_auto_velocity: boolean Calculate point velocities automatically ParticleEdit.draw_particles -> show_particles: boolean Draw actual particles ParticleEdit.editable -> is_editable: boolean, (read-only) A valid edit mode exists ParticleEdit.emitter_deflect -> use_emitter_deflect: boolean Keep paths from intersecting the emitter ParticleEdit.fade_time -> use_fade_time: boolean Fade paths and keys further away from current frame TODO * ParticleEdit.hair -> hair: boolean, (read-only) Editing hair -ParticleEdit.keep_lengths -> use_keep_lengths: boolean Keep path lengths constant -ParticleEdit.keep_root -> use_keep_root: boolean Keep root keys unmodified -ParticleFluidSettings.drops -> show_drops: boolean Show drop particles -ParticleFluidSettings.floats -> show_floats: boolean Show floating foam particles -ParticleFluidSettings.tracer -> show_tracer: boolean Show tracer particles -ParticleInstanceModifier.alive -> show_alive: boolean Show instances when particles are alive -ParticleInstanceModifier.children -> use_children: boolean Create instances from child particles -ParticleInstanceModifier.dead -> show_dead: boolean Show instances when particles are dead -ParticleInstanceModifier.keep_shape -> use_keep_shape: boolean Don't stretch the object +TODO * ParticleEdit.keep_lengths -> use_keep_lengths: boolean Keep path lengths constant +TODO * ParticleEdit.keep_root -> use_keep_root: boolean Keep root keys unmodified +TODO * ParticleFluidSettings.drops -> show_drops: boolean Show drop particles +TODO * ParticleFluidSettings.floats -> show_floats: boolean Show floating foam particles +TODO * ParticleFluidSettings.tracer -> show_tracer: boolean Show tracer particles +TODO * ParticleInstanceModifier.alive -> show_alive: boolean Show instances when particles are alive +TODO * ParticleInstanceModifier.children -> use_children: boolean Create instances from child particles +TODO * ParticleInstanceModifier.dead -> show_dead: boolean Show instances when particles are dead +TODO * ParticleInstanceModifier.keep_shape -> use_keep_shape: boolean Don't stretch the object ParticleInstanceModifier.normal -> use_normal: boolean Create instances from normal particles ParticleInstanceModifier.size -> use_size: boolean Use particle size to scale the instances -ParticleInstanceModifier.unborn -> show_unborn: boolean Show instances when particles are unborn +TODO * ParticleInstanceModifier.unborn -> show_unborn: boolean Show instances when particles are unborn ParticleInstanceModifier.use_path -> use_path: boolean Create instances along particle paths -ParticleSettings.abs_path_time -> use_abs_path_time: boolean Path timing is in absolute frames -ParticleSettings.animate_branching -> use_animate_branching: boolean Animate branching +TODO * ParticleSettings.abs_path_time -> use_abs_path_time: boolean Path timing is in absolute frames +TODO * ParticleSettings.animate_branching -> use_animate_branching: boolean Animate branching ParticleSettings.billboard_lock -> lock_billboard: boolean Lock the billboards align axis ParticleSettings.boids_2d -> lock_boids_to_surface: boolean Constrain boids to a surface ParticleSettings.branching -> use_branching: boolean Branch child paths from each other -ParticleSettings.child_effector -> use_child_effector: boolean Apply effectors to children -ParticleSettings.child_guide -> use_child_guide: boolean -ParticleSettings.child_render -> use_child_render: boolean +TODO * ParticleSettings.child_effector -> use_child_effector: boolean Apply effectors to children +TODO * ParticleSettings.child_guide -> use_child_guide: boolean +TODO * ParticleSettings.child_render -> use_child_render: boolean ParticleSettings.die_on_collision -> use_die_on_collision: boolean Particles die when they collide with a deflector object -ParticleSettings.died -> show_died: boolean Show particles after they have died +TODO * ParticleSettings.died -> show_died: boolean Show particles after they have died ParticleSettings.draw_health -> show_health: boolean Draw boid health -ParticleSettings.emitter -> use_emitter: boolean Render emitter Object also +TODO * ParticleSettings.emitter -> use_emitter: boolean Render emitter Object also ParticleSettings.enable_simplify -> use_simplify: boolean Remove child strands as the object becomes smaller on the screen ParticleSettings.even_distribution -> use_even_distribution: boolean Use even distribution from faces based on face areas or edge lengths ParticleSettings.grid_invert -> invert_grid: boolean Invert what is considered object and what is not -ParticleSettings.hair_bspline -> use_hair_bspline: boolean Interpolate hair using B-Splines +TODO * ParticleSettings.hair_bspline -> use_hair_bspline: boolean Interpolate hair using B-Splines TODO * ParticleSettings.hair_geometry -> hair_geometry: boolean ParticleSettings.material_color -> show_material_color: boolean Draw particles using material's diffuse color -ParticleSettings.num -> use_number: boolean Show particle number -ParticleSettings.parent -> use_parent: boolean Render parent particles -ParticleSettings.rand_group -> use_random_group: boolean Pick objects from group randomly -ParticleSettings.react_multiple -> use_react_multiple: boolean React multiple times -ParticleSettings.react_start_end -> use_react_start_end: boolean Give birth to unreacted particles eventually -ParticleSettings.render_adaptive -> show_path_steps: boolean Draw steps of the particle path -ParticleSettings.render_strand -> use_render_strand: boolean Use the strand primitive for rendering -ParticleSettings.rotation_dynamic -> use_rotation_dynamic: boolean Sets rotation to dynamic/constant -ParticleSettings.self_effect -> use_self_effect: boolean Particle effectors effect themselves +TODO * ParticleSettings.num -> use_number: boolean Show particle number +ParticleSettings.parent -> use_parents: boolean Render parent particles +TODO * ParticleSettings.rand_group -> use_random_group: boolean Pick objects from group randomly +TODO * ParticleSettings.react_multiple -> use_react_multiple: boolean React multiple times +TODO * ParticleSettings.react_start_end -> use_react_start_end: boolean Give birth to unreacted particles eventually +TODO * ParticleSettings.render_adaptive -> show_path_steps: boolean Draw steps of the particle path +TODO * ParticleSettings.render_strand -> use_render_strand: boolean Use the strand primitive for rendering +TODO * ParticleSettings.rotation_dynamic -> use_rotation_dynamic: boolean Sets rotation to dynamic/constant +TODO * ParticleSettings.self_effect -> use_self_effect: boolean Particle effectors effect themselves ParticleSettings.show_size -> show_size: boolean Show particle size -ParticleSettings.size_deflect -> use_size_deflect: boolean Use particle's size in deflection +TODO * ParticleSettings.size_deflect -> use_size_deflect: boolean Use particle's size in deflection ParticleSettings.sizemass -> use_multiply_size_mass: boolean Multiply mass by particle size ParticleSettings.symmetric_branching -> use_symmetric_branching: boolean Start and end points are the same ParticleSettings.trand -> use_emit_random: boolean Emit in random order of elements -ParticleSettings.unborn -> show_unborn: boolean Show particles before they are emitted +TODO * ParticleSettings.unborn -> show_unborn: boolean Show particles before they are emitted ParticleSettings.use_global_dupli -> use_global_dupli: boolean Use object's global coordinates for duplication ParticleSettings.use_group_count -> use_group_count: boolean Use object multiple times in the same group ParticleSettings.velocity -> show_velocity: boolean Show particle velocity -ParticleSettings.velocity_length -> use_velocity_length: boolean Multiply line length by particle speed +TODO * ParticleSettings.velocity_length -> show_velocity_length: boolean Multiply line length by particle speed TODO * ParticleSettings.viewport -> viewport: boolean ParticleSettings.whole_group -> use_whole_group: boolean Use whole group at once ParticleSystem.editable -> is_editable: boolean, (read-only) Particle system can be edited in particle mode @@ -816,36 +814,36 @@ PointCache.outdated -> is_outdated: boolean, (read-only) PointCache.quick_cache -> use_quick_cache: boolean Update simulation with cache steps PointCache.use_library_path -> use_library_path: boolean Use this files path when library linked into another file. PointDensity.turbulence -> use_turbulence: boolean Add directed noise to the density at render-time -PointLamp.only_shadow -> use_shadow_only: boolean Causes light to cast shadows only without illuminating objects -PointLamp.shadow_layer -> use_shadow_own_layer: boolean Causes only objects on the same layer to cast shadows -PointLamp.sphere -> use_sphere: boolean Sets light intensity to zero beyond lamp distance -PoseBone.has_ik -> is_in_ik_chain: boolean, (read-only) Is part of an IK chain +TODO * PointLamp.only_shadow -> use_shadow_only: boolean Causes light to cast shadows only without illuminating objects +TODO * PointLamp.shadow_layer -> use_shadow_own_layer: boolean Causes only objects on the same layer to cast shadows +TODO * PointLamp.sphere -> use_sphere: boolean Sets light intensity to zero beyond lamp distance +TODO * PoseBone.has_ik -> is_in_ik_chain: boolean, (read-only) Is part of an IK chain TODO * PoseBone.ik_dof_x -> ik_dof_x: boolean Allow movement around the X axis TODO * PoseBone.ik_dof_y -> ik_dof_y: boolean Allow movement around the Y axis TODO * PoseBone.ik_dof_z -> ik_dof_z: boolean Allow movement around the Z axis PoseBone.ik_limit_x -> lock_ik_x: boolean Limit movement around the X axis PoseBone.ik_limit_y -> lock_ik_y: boolean Limit movement around the Y axis PoseBone.ik_limit_z -> lock_ik_z: boolean Limit movement around the Z axis -PoseBone.ik_lin_control -> use_ik_lin_control: boolean Apply channel size as IK constraint if stretching is enabled -PoseBone.ik_rot_control -> use_ik_rot_control: boolean Apply channel rotation as IK constraint +TODO * PoseBone.ik_lin_control -> use_ik_lin_control: boolean Apply channel size as IK constraint if stretching is enabled +TODO * PoseBone.ik_rot_control -> use_ik_rot_control: boolean Apply channel rotation as IK constraint PoseBone.lock_location -> lock_location: boolean Lock editing of location in the interface PoseBone.lock_rotation -> lock_rotation: boolean Lock editing of rotation in the interface PoseBone.lock_rotation_w -> lock_rotation_w: boolean Lock editing of 'angle' component of four-component rotations in the interface PoseBone.lock_rotations_4d -> lock_rotations_4d: boolean Lock editing of four component rotations by components (instead of as Eulers) PoseBone.lock_scale -> lock_scale: boolean Lock editing of scale in the interface -TODO * PoseBone.selected -> select: boolean -PoseTemplateSettings.generate_def_rig -> use_generate_def_rig: boolean Create a copy of the metarig, constrainted by the generated rig +PoseBone.selected -> select: boolean +TODO * PoseTemplateSettings.generate_def_rig -> use_generate_def_rig: boolean Create a copy of the metarig, constrainted by the generated rig Property.is_never_none -> is_never_none: boolean, (read-only) True when this value can't be set to None Property.is_readonly -> is_readonly: boolean, (read-only) Property is editable through RNA Property.is_required -> is_required: boolean, (read-only) False when this property is an optional argument in an RNA function -Property.registered -> is_registered: boolean, (read-only) Property is registered as part of type registration -Property.registered_optional -> is_registered_optional: boolean, (read-only) Property is optionally registered as part of type registration +TODO * Property.registered -> is_registered: boolean, (read-only) Property is registered as part of type registration +TODO * Property.registered_optional -> is_registered_optional: boolean, (read-only) Property is optionally registered as part of type registration Property.use_output -> is_output: boolean, (read-only) True when this property is an output value from an RNA function TODO * PythonConstraint.script_error -> is_script_error: boolean, (read-only) The linked Python script has thrown an error PythonConstraint.use_targets -> use_targets: boolean Use the targets indicated in the constraint panel PythonController.debug -> use_debug: boolean Continuously reload the module from disk for editing external modules without restarting RandomActuator.always_true -> use_always_true: boolean Always false or always true -RaySensor.x_ray_mode -> use_x_ray_mode: boolean Toggle X-Ray option (see through objects that don't have the property) +TODO * RaySensor.x_ray_mode -> use_x_ray_mode: boolean Toggle X-Ray option (see through objects that don't have the property) RegionView3D.box_clip -> use_box_clip: boolean Clip objects based on what's visible in other side views RegionView3D.box_preview -> show_synced_view: boolean Sync view position between side views RegionView3D.lock_rotation -> lock_rotation: boolean Lock view rotation in side views @@ -889,14 +887,14 @@ TODO * RenderLayer.zmask_layers -> zmask_layers: boolean, (read-only) Zma TODO * RenderLayer.zmask_negate -> zmask_negate: boolean, (read-only) For Zmask, only render what is behind solid z values instead of in front TODO * RenderLayer.ztransp -> ztransp: boolean, (read-only) Render Z-Transparent faces in this Layer (On top of Solid and Halos) RenderSettings.backbuf -> use_backbuf: boolean Render backbuffer image -RenderSettings.bake_active -> use_bake_active: boolean Bake shading on the surface of selected objects to the active object +TODO * RenderSettings.bake_active -> use_bake_active: boolean Bake shading on the surface of selected objects to the active object RenderSettings.bake_clear -> use_bake_clear: boolean Clear Images before baking -RenderSettings.bake_enable_aa -> use_bake_enable_aa: boolean Enables Anti-aliasing +TODO * RenderSettings.bake_enable_aa -> use_bake_enable_aa: boolean Enables Anti-aliasing RenderSettings.bake_normalized -> use_bake_normalized: boolean With displacement normalize to the distance, with ambient occlusion normalize without using material settings -RenderSettings.cineon_log -> use_cineon_log: boolean Convert to logarithmic color space +TODO * RenderSettings.cineon_log -> use_cineon_log: boolean Convert to logarithmic color space RenderSettings.color_management -> use_color_management: boolean Use color profiles and gamma corrected imaging pipeline RenderSettings.crop_to_border -> use_crop_to_border: boolean Crop the rendered frame to the defined border size -RenderSettings.edge -> edge: boolean use_Create a toon outline around the edges of geometry +TODO * RenderSettings.edge -> edge: boolean use_Create a toon outline around the edges of geometry RenderSettings.exr_half -> use_exr_half: boolean Use 16 bit floats instead of 32 bit floats per channel RenderSettings.exr_preview -> use_exr_preview: boolean When rendering animations, save JPG preview images in same directory RenderSettings.exr_zbuf -> use_exr_zbuf: boolean Save the z-depth per pixel (32 bit unsigned int zbuffer) @@ -910,11 +908,11 @@ RenderSettings.is_movie_format -> is_movie_format: boolean, (read-only) Wh RenderSettings.jpeg2k_ycc -> use_jpeg2k_ycc: boolean Save luminance-chrominance-chrominance channels instead of RGB colors RenderSettings.motion_blur -> use_motion_blur: boolean Use multi-sampled 3D scene motion blur TODO * RenderSettings.multiple_engines -> multiple_engines: boolean, (read-only) More than one rendering engine is available -RenderSettings.render_antialiasing -> use_render_antialiasing: boolean Render and combine multiple samples per pixel to prevent jagged edges +TODO * RenderSettings.render_antialiasing -> use_render_antialiasing: boolean Render and combine multiple samples per pixel to prevent jagged edges TODO doubled?* RenderSettings.render_stamp -> render_stamp: boolean Render the stamp info text in the rendered image RenderSettings.save_buffers -> use_save_buffers: boolean Save tiles for all RenderLayers and SceneNodes to files in the temp directory (saves memory, required for Full Sample) RenderSettings.simplify_triangulate -> use_simplify_triangulate: boolean Disables non-planer quads being triangulated -RenderSettings.single_layer -> use_active_layer: boolean Only render the active layer +RenderSettings.single_layer -> use_single_layer: boolean Only render the active layer RenderSettings.stamp_camera -> use_stamp_camera: boolean Include the name of the active camera in image metadata RenderSettings.stamp_date -> use_stamp_date: boolean Include the current date in image metadata RenderSettings.stamp_filename -> use_stamp_filename: boolean Include the filename of the .blend file in image metadata @@ -925,7 +923,7 @@ RenderSettings.stamp_render_time -> use_stamp_render_time: boolean Include RenderSettings.stamp_scene -> use_stamp_scene: boolean Include the name of the active scene in image metadata RenderSettings.stamp_sequencer_strip -> use_stamp_sequencer_strip: boolean Include the name of the foreground sequence strip in image metadata RenderSettings.stamp_time -> use_stamp_time: boolean Include the render frame as HH:MM:SS.FF in image metadata -RenderSettings.tiff_bit -> use_tiff_bit: boolean Save TIFF with 16 bits per channel +TODO * RenderSettings.tiff_bit -> use_tiff_bit: boolean Save TIFF with 16 bits per channel RenderSettings.use_border -> use_border: boolean Render a user-defined border region, within the frame size. Note, this disables save_buffers and full_sample RenderSettings.use_compositing -> use_compositing: boolean Process the render result through the compositing pipeline, if compositing nodes are enabled RenderSettings.use_envmaps -> use_envmaps: boolean Calculate environment maps while rendering @@ -944,23 +942,23 @@ RenderSettings.use_shadows -> use_shadows: boolean Calculate shadows while RenderSettings.use_simplify -> use_simplify: boolean Enable simplification of scene for quicker preview renders RenderSettings.use_sss -> use_sss: boolean Calculate sub-surface scattering in materials rendering RenderSettings.use_textures -> use_textures: boolean Use textures to affect material properties -RigidBodyJointConstraint.disable_linked_collision -> use_disable_linked_collision: boolean Disable collision between linked bodies +TODO * RigidBodyJointConstraint.disable_linked_collision -> use_disable_linked_collision: boolean Disable collision between linked bodies RigidBodyJointConstraint.draw_pivot -> show_pivot: boolean Display the pivot point and rotation in 3D view Scene.frame_drop -> use_frame_drop: boolean Play back dropping frames if frame display is too slow -TODO * Scene.layers -> layers: boolean Layers visible when rendering the scene +Scene.layers -> layer: boolean Layers visible when rendering the scene TODO * Scene.mute_audio -> mute_audio: boolean Play back of audio from Sequence Editor will be muted TODO * Scene.nla_tweakmode_on -> is_nla_tweakmode_on: boolean, (read-only) Indicates whether there is any action referenced by NLA being edited. Strictly read-only -Scene.pov_radio_always_sample -> use_pov_radio_always_sample: boolean Only use the data from the pretrace step and not gather any new samples during the final radiosity pass -Scene.pov_radio_display_advanced -> show_pov_radio_advanced: boolean Show advanced options -Scene.pov_radio_enable -> use_pov_radio_enable: boolean Enable povrays radiosity calculation -Scene.pov_radio_media -> use_pov_radio_media: boolean Radiosity estimation can be affected by media -Scene.pov_radio_normal -> use_pov_radio_normal: boolean Radiosity estimation can be affected by normals -Scene.scrub_audio -> use_scrub_audio: boolean Play audio from Sequence Editor while scrubbing -Scene.sync_audio -> use_sync_audio: boolean Play back and sync with audio clock, dropping frames if frame display is too slow +TODO * Scene.pov_radio_always_sample -> use_pov_radio_always_sample: boolean Only use the data from the pretrace step and not gather any new samples during the final radiosity pass +TODO * Scene.pov_radio_display_advanced -> show_pov_radio_advanced: boolean Show advanced options +TODO * Scene.pov_radio_enable -> use_pov_radio_enable: boolean Enable povrays radiosity calculation +TODO * Scene.pov_radio_media -> use_pov_radio_media: boolean Radiosity estimation can be affected by media +TODO * Scene.pov_radio_normal -> use_pov_radio_normal: boolean Radiosity estimation can be affected by normals +TODO * Scene.scrub_audio -> use_scrub_audio: boolean Play audio from Sequence Editor while scrubbing +TODO * Scene.sync_audio -> use_sync_audio: boolean Play back and sync with audio clock, dropping frames if frame display is too slow Scene.use_gravity -> use_gravity: boolean Use global gravity for all dynamics Scene.use_nodes -> use_nodes: boolean Enable the compositing node tree Scene.use_preview_range -> use_preview_range: boolean Use an alternative start/end frame for UI playback, rather than the scene start/end frame -SceneGameData.activity_culling -> use_activity_culling: boolean Activity culling is enabled +TODO * SceneGameData.activity_culling -> use_activity_culling: boolean Activity culling is enabled SceneGameData.auto_start -> use_auto_start: boolean Automatically start game at load time SceneGameData.fullscreen -> show_fullscreen: boolean Starts player in a new fullscreen display SceneGameData.glsl_extra_textures -> use_glsl_extra_textures: boolean Use extra textures like normal or specular maps for GLSL rendering @@ -976,56 +974,56 @@ SceneGameData.use_animation_record -> use_animation_record: boolean Record SceneGameData.use_deprecation_warnings -> use_deprecation_warnings: boolean Print warnings when using deprecated features in the python API SceneGameData.use_display_lists -> use_display_lists: boolean Use display lists to speed up rendering by keeping geometry on the GPU SceneGameData.use_frame_rate -> use_frame_rate: boolean Respect the frame rate rather than rendering as many frames as possible -SceneGameData.use_occlusion_culling -> use_occlusion_culling: boolean Use optimized Bullet DBVT tree for view frustum and occlusion culling +TODO * SceneGameData.use_occlusion_culling -> use_occlusion_culling: boolean Use optimized Bullet DBVT tree for view frustum and occlusion culling SceneRenderLayer.all_z -> use_all_z: boolean Fill in Z values for solid faces in invisible layers, for masking SceneRenderLayer.edge -> use_edge: boolean Render Edge-enhance in this Layer (only works for Solid faces) TODO * SceneRenderLayer.enabled -> enabled: boolean Disable or enable the render layer SceneRenderLayer.halo -> use_halo: boolean Render Halos in this Layer (on top of Solid) -SceneRenderLayer.pass_ao -> use_pass_ao: boolean Deliver AO pass -SceneRenderLayer.pass_ao_exclude -> use_pass_ao_exclude: boolean Exclude AO pass from combined -SceneRenderLayer.pass_color -> use_pass_color: boolean Deliver shade-less color pass -SceneRenderLayer.pass_combined -> use_pass_combined: boolean Deliver full combined RGBA buffer -SceneRenderLayer.pass_diffuse -> use_pass_diffuse: boolean Deliver diffuse pass -SceneRenderLayer.pass_emit -> use_pass_emit: boolean Deliver emission pass -SceneRenderLayer.pass_emit_exclude -> use_pass_emit_exclude: boolean Exclude emission pass from combined -SceneRenderLayer.pass_environment -> use_pass_environment: boolean Deliver environment lighting pass -SceneRenderLayer.pass_environment_exclude -> use_pass_environment_exclude: boolean Exclude environment pass from combined -SceneRenderLayer.pass_indirect -> use_pass_indirect: boolean Deliver indirect lighting pass -SceneRenderLayer.pass_indirect_exclude -> use_pass_indirect_exclude: boolean Exclude indirect pass from combined -SceneRenderLayer.pass_mist -> use_pass_mist: boolean Deliver mist factor pass (0.0-1.0) -SceneRenderLayer.pass_normal -> use_pass_normal: boolean Deliver normal pass -SceneRenderLayer.pass_object_index -> use_pass_object_index: boolean Deliver object index pass -SceneRenderLayer.pass_reflection -> use_pass_reflection: boolean Deliver raytraced reflection pass -SceneRenderLayer.pass_reflection_exclude -> use_pass_reflection_exclude: boolean Exclude raytraced reflection pass from combined -SceneRenderLayer.pass_refraction -> use_pass_refraction: boolean Deliver raytraced refraction pass -SceneRenderLayer.pass_refraction_exclude -> use_pass_refraction_exclude: boolean Exclude raytraced refraction pass from combined -SceneRenderLayer.pass_shadow -> use_pass_shadow: boolean Deliver shadow pass -SceneRenderLayer.pass_shadow_exclude -> use_pass_shadow_exclude: boolean Exclude shadow pass from combined -SceneRenderLayer.pass_specular -> use_pass_specular: boolean Deliver specular pass -SceneRenderLayer.pass_specular_exclude -> use_pass_specular_exclude: boolean Exclude specular pass from combined -SceneRenderLayer.pass_uv -> use_pass_uv: boolean Deliver texture UV pass -SceneRenderLayer.pass_vector -> use_pass_vector: boolean Deliver speed vector pass -SceneRenderLayer.pass_z -> use_pass_z: boolean Deliver Z values pass -SceneRenderLayer.sky -> use_sky: boolean Render Sky in this Layer -SceneRenderLayer.solid -> use_solid: boolean Render Solid faces in this Layer -SceneRenderLayer.strand -> use_strand: boolean Render Strands in this Layer -SceneRenderLayer.visible_layers -> visible_layers: boolean Scene layers included in this render layer -SceneRenderLayer.zmask -> use_zmask: boolean Only render what's in front of the solid z values -SceneRenderLayer.zmask_layers -> use_zmask_layers: boolean Zmask scene layers -SceneRenderLayer.zmask_negate -> use_zmask_negate: boolean For Zmask, only render what is behind solid z values instead of in front -SceneRenderLayer.ztransp -> use_ztransp: boolean Render Z-Transparent faces in this Layer (On top of Solid and Halos) +TODO * SceneRenderLayer.pass_ao -> use_pass_ao: boolean Deliver AO pass +TODO * SceneRenderLayer.pass_ao_exclude -> use_pass_ao_exclude: boolean Exclude AO pass from combined +TODO * SceneRenderLayer.pass_color -> use_pass_color: boolean Deliver shade-less color pass +TODO * SceneRenderLayer.pass_combined -> use_pass_combined: boolean Deliver full combined RGBA buffer +TODO * SceneRenderLayer.pass_diffuse -> use_pass_diffuse: boolean Deliver diffuse pass +TODO * SceneRenderLayer.pass_emit -> use_pass_emit: boolean Deliver emission pass +TODO * SceneRenderLayer.pass_emit_exclude -> use_pass_emit_exclude: boolean Exclude emission pass from combined +TODO * SceneRenderLayer.pass_environment -> use_pass_environment: boolean Deliver environment lighting pass +TODO * SceneRenderLayer.pass_environment_exclude -> use_pass_environment_exclude: boolean Exclude environment pass from combined +TODO * SceneRenderLayer.pass_indirect -> use_pass_indirect: boolean Deliver indirect lighting pass +TODO * SceneRenderLayer.pass_indirect_exclude -> use_pass_indirect_exclude: boolean Exclude indirect pass from combined +TODO * SceneRenderLayer.pass_mist -> use_pass_mist: boolean Deliver mist factor pass (0.0-1.0) +TODO * SceneRenderLayer.pass_normal -> use_pass_normal: boolean Deliver normal pass +TODO * SceneRenderLayer.pass_object_index -> use_pass_object_index: boolean Deliver object index pass +TODO * SceneRenderLayer.pass_reflection -> use_pass_reflection: boolean Deliver raytraced reflection pass +TODO * SceneRenderLayer.pass_reflection_exclude -> use_pass_reflection_exclude: boolean Exclude raytraced reflection pass from combined +TODO * SceneRenderLayer.pass_refraction -> use_pass_refraction: boolean Deliver raytraced refraction pass +TODO * SceneRenderLayer.pass_refraction_exclude -> use_pass_refraction_exclude: boolean Exclude raytraced refraction pass from combined +TODO * SceneRenderLayer.pass_shadow -> use_pass_shadow: boolean Deliver shadow pass +TODO * SceneRenderLayer.pass_shadow_exclude -> use_pass_shadow_exclude: boolean Exclude shadow pass from combined +TODO * SceneRenderLayer.pass_specular -> use_pass_specular: boolean Deliver specular pass +TODO * SceneRenderLayer.pass_specular_exclude -> use_pass_specular_exclude: boolean Exclude specular pass from combined +TODO * SceneRenderLayer.pass_uv -> use_pass_uv: boolean Deliver texture UV pass +TODO * SceneRenderLayer.pass_vector -> use_pass_vector: boolean Deliver speed vector pass +TODO * SceneRenderLayer.pass_z -> use_pass_z: boolean Deliver Z values pass +TODO * SceneRenderLayer.sky -> use_sky: boolean Render Sky in this Layer +TODO * SceneRenderLayer.solid -> use_solid: boolean Render Solid faces in this Layer +TODO * SceneRenderLayer.strand -> use_strand: boolean Render Strands in this Layer +TODO * SceneRenderLayer.visible_layers -> visible_layers: boolean Scene layers included in this render layer +TODO * SceneRenderLayer.zmask -> use_zmask: boolean Only render what's in front of the solid z values +TODO * SceneRenderLayer.zmask_layers -> use_zmask_layers: boolean Zmask scene layers +TODO * SceneRenderLayer.zmask_negate -> use_zmask_negate: boolean For Zmask, only render what is behind solid z values instead of in front +TODO * SceneRenderLayer.ztransp -> use_ztransp: boolean Render Z-Transparent faces in this Layer (On top of Solid and Halos) TODO * SceneSequence.convert_float -> convert_float: boolean Convert input to float data -TODO * SceneSequence.de_interlace -> de_interlace: boolean For video movies to remove fields -TODO * SceneSequence.flip_x -> flip_x: boolean Flip on the X axis -TODO * SceneSequence.flip_y -> flip_y: boolean Flip on the Y axis +SceneSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields +SceneSequence.flip_x -> use_flip_x: boolean Flip on the X axis +SceneSequence.flip_y -> use_flip_y: boolean Flip on the Y axis TODO * SceneSequence.premultiply -> premultiply: boolean Convert RGB from key alpha to premultiplied alpha -TODO * SceneSequence.proxy_custom_directory -> proxy_custom_directory: boolean Use a custom directory to store data -TODO * SceneSequence.proxy_custom_file -> proxy_custom_file: boolean Use a custom file to read proxy data from -TODO * SceneSequence.reverse_frames -> reverse_frames: boolean Reverse frame order -TODO * SceneSequence.use_color_balance -> use_color_balance: boolean (3-Way color correction) on input -TODO * SceneSequence.use_crop -> use_crop: boolean Crop image before processing -TODO * SceneSequence.use_proxy -> use_proxy: boolean Use a preview proxy for this strip -TODO * SceneSequence.use_translation -> use_translation: boolean Translate image before processing +SceneSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean Use a custom directory to store data +SceneSequence.proxy_custom_file -> use_proxy_custom_file: boolean Use a custom file to read proxy data from +TODO * SceneSequence.reverse_frames -> use_frame_reverse: boolean Reverse frame order +SceneSequence.use_color_balance -> use_color_balance: boolean (3-Way color correction) on input +SceneSequence.use_crop -> use_crop: boolean Crop image before processing +SceneSequence.use_proxy -> use_proxy: boolean Use a preview proxy for this strip +SceneSequence.use_translation -> use_translation: boolean Translate image before processing Scopes.use_full_resolution -> use_full_resolution: boolean Sample every pixel of the image Screen.animation_playing -> is_animation_playing: boolean, (read-only) Animation playback is active Screen.fullscreen -> is_fullscreen: boolean, (read-only) An area is maximised, filling this screen @@ -1039,17 +1037,17 @@ Sculpt.symmetry_x -> use_symmetry_x: boolean Mirror brush across the X axi Sculpt.symmetry_y -> use_symmetry_y: boolean Mirror brush across the Y axis Sculpt.symmetry_z -> use_symmetry_z: boolean Mirror brush across the Z axis Sensor.expanded -> show_expanded: boolean Set sensor expanded in the user interface -TODO * Sensor.invert -> invert: boolean Invert the level(output) of this sensor +Sensor.invert -> invert: boolean Invert the level(output) of this sensor TODO * Sensor.level -> level: boolean Level detector, trigger controllers of new states(only applicable upon logic state transition) Sensor.pulse_false_level -> use_pulse_false_level: boolean Activate FALSE level triggering (pulse mode) Sensor.pulse_true_level -> use_pulse_true_level: boolean Activate TRUE level triggering (pulse mode) Sensor.tap -> use_tap: boolean Trigger controllers only for an instant, even while the sensor remains true TODO * Sequence.frame_locked -> frame_locked: boolean Lock the animation curve to the global frame counter -TODO * Sequence.left_handle_selected -> select_left_handle: boolean -TODO * Sequence.lock -> lock: boolean Lock strip so that it can't be transformed -TODO * Sequence.mute -> mute: boolean -TODO * Sequence.right_handle_selected -> select_right_handle: boolean -TODO * Sequence.selected -> select: boolean +Sequence.left_handle_selected -> select_left_handle: boolean +Sequence.lock -> lock: boolean Lock strip so that it can't be transformed +Sequence.mute -> mute: boolean +Sequence.right_handle_selected -> select_right_handle: boolean +Sequence.selected -> select: boolean TODO * Sequence.use_effect_default_fade -> use_effect_default_fade: boolean Fade effect using the built-in default (usually make transition as long as effect strip) SequenceColorBalance.inverse_gain -> invert_gain: boolean SequenceColorBalance.inverse_gamma -> invert_gamma: boolean @@ -1057,14 +1055,14 @@ SequenceColorBalance.inverse_lift -> invert_lift: boolean ShaderNodeExtendedMaterial.diffuse -> use_diffuse: boolean Material Node outputs Diffuse ShaderNodeExtendedMaterial.invert_normal -> invert_normal: boolean Material Node uses inverted normal ShaderNodeExtendedMaterial.specular -> use_specular: boolean Material Node outputs Specular -ShaderNodeMapping.clamp_maximum -> use_clamp_to_max: boolean Clamp the output coordinate to a maximum value -ShaderNodeMapping.clamp_minimum -> use_clamp_to_min: boolean Clamp the output coordinate to a minimum value +TODO * ShaderNodeMapping.clamp_maximum -> use_clamp_to_max: boolean Clamp the output coordinate to a maximum value +TODO * ShaderNodeMapping.clamp_minimum -> use_clamp_to_min: boolean Clamp the output coordinate to a minimum value ShaderNodeMaterial.diffuse -> use_diffuse: boolean Material Node outputs Diffuse ShaderNodeMaterial.invert_normal -> invert_normal: boolean Material Node uses inverted normal ShaderNodeMaterial.specular -> use_specular: boolean Material Node outputs Specular ShaderNodeMixRGB.alpha -> use_alpha: boolean Include alpha of second input in this operation -ShapeActionActuator.continue_last_frame -> use_continue_last_frame: boolean Restore last frame when switching on/off, otherwise play from the start each time -TODO * ShapeKey.mute -> mute: boolean Mute this shape key +TODO * ShapeActionActuator.continue_last_frame -> use_continue_last_frame: boolean Restore last frame when switching on/off, otherwise play from the start each time +ShapeKey.mute -> mute: boolean Mute this shape key TODO see below * ShrinkwrapConstraint.use_x -> use_x: boolean Projection over X Axis TODO see below* ShrinkwrapConstraint.use_y -> use_y: boolean Projection over Y Axis TODO see below* ShrinkwrapConstraint.use_z -> use_z: boolean Projection over Z Axis @@ -1076,14 +1074,14 @@ TODO * ShrinkwrapModifier.positive -> positive: boolean Allow vertices to ShrinkwrapModifier.x -> use_x: boolean ShrinkwrapModifier.y -> use_y: boolean ShrinkwrapModifier.z -> use_z: boolean -SimpleDeformModifier.lock_x_axis -> lock_axis_x: boolean -SimpleDeformModifier.lock_y_axis -> lock_axis_y: boolean +TODO * SimpleDeformModifier.lock_x_axis -> lock_axis_x: boolean +TODO * SimpleDeformModifier.lock_y_axis -> lock_axis_y: boolean SimpleDeformModifier.relative -> use_relative: boolean Sets the origin of deform space to be relative to the object SmokeDomainSettings.dissolve_smoke -> use_dissolve_smoke: boolean Enable smoke to disappear over time SmokeDomainSettings.dissolve_smoke_log -> use_dissolve_smoke_log: boolean Using 1/x -SmokeDomainSettings.highres -> use_highres: boolean Enable high resolution (using amplification) +TODO * SmokeDomainSettings.highres -> use_highres: boolean Enable high resolution (using amplification) SmokeDomainSettings.initial_velocity -> use_initial_velocity: boolean Smoke inherits it's velocity from the emitter particle -SmokeDomainSettings.viewhighres -> show_highres: boolean Show high resolution (using amplification) +TODO * SmokeDomainSettings.viewhighres -> show_highres: boolean Show high resolution (using amplification) NEGATE * SmokeFlowSettings.outflow -> use_outflow: boolean Deletes smoke from simulation SmoothModifier.x -> use_x: boolean SmoothModifier.y -> use_y: boolean @@ -1103,16 +1101,16 @@ SolidifyModifier.use_even_offset -> use_even_offset: boolean Maintain thic SolidifyModifier.use_quality_normals -> use_quality_normals: boolean Calculate normals which result in more even thickness (slow, disable when not needed) SolidifyModifier.use_rim -> use_rim: boolean Create edge loops between the inner and outer surfaces on face edges (slow, disable when not needed) SolidifyModifier.use_rim_material -> use_rim_material: boolean Use in the next material for rim faces -Sound.caching -> use_ram_cache: boolean The sound file is decoded and loaded into RAM -SoundActuator.enable_sound_3d -> use_sound_3d: boolean Enable/Disable 3D Sound +TODO * Sound.caching -> use_ram_cache: boolean The sound file is decoded and loaded into RAM +TODO * SoundActuator.enable_sound_3d -> use_sound_3d: boolean Enable/Disable 3D Sound SpaceConsole.show_report_debug -> show_report_debug: boolean Display debug reporting info SpaceConsole.show_report_error -> show_report_error: boolean Display error text SpaceConsole.show_report_info -> show_report_info: boolean Display general information SpaceConsole.show_report_operator -> show_report_operator: boolean Display the operator log -SpaceConsole.show_report_warn -> show_report_warn: boolean Display warnings -SpaceDopeSheetEditor.automerge_keyframes -> show_automerge_keyframes: boolean Show handles of Bezier control points -SpaceDopeSheetEditor.realtime_updates -> use_realtime_updates: boolean When transforming keyframes, changes to the animation data are flushed to other views -SpaceDopeSheetEditor.show_cframe_indicator -> show_cframe_indicator: boolean Show frame number beside the current frame indicator line +SpaceConsole.show_report_warn -> show_report_warning: boolean Display warnings +TODO * SpaceDopeSheetEditor.automerge_keyframes -> show_automerge_keyframes: boolean Show handles of Bezier control points +TODO * SpaceDopeSheetEditor.realtime_updates -> use_realtime_updates: boolean When transforming keyframes, changes to the animation data are flushed to other views +TODO * SpaceDopeSheetEditor.show_cframe_indicator -> show_cframe_indicator: boolean Show frame number beside the current frame indicator line SpaceDopeSheetEditor.show_seconds -> show_seconds: boolean, (read-only) Show timing in seconds not frames SpaceDopeSheetEditor.show_sliders -> show_sliders: boolean Show sliders beside F-Curve channels SpaceDopeSheetEditor.use_marker_sync -> use_marker_sync: boolean Sync Markers with keyframe edits @@ -1120,19 +1118,19 @@ SpaceGraphEditor.automerge_keyframes -> show_automerge_keyframes: boolean TODO * SpaceGraphEditor.has_ghost_curves -> has_ghost_curves: boolean Graph Editor instance has some ghost curves stored SpaceGraphEditor.only_selected_curves_handles -> use_only_selected_curves_handles: boolean Only keyframes of selected F-Curves are visible and editable SpaceGraphEditor.only_selected_keyframe_handles -> use_only_selected_keyframe_handles: boolean Only show and edit handles of selected keyframes -SpaceGraphEditor.realtime_updates -> use_realtime_updates: boolean When transforming keyframes, changes to the animation data are flushed to other views -SpaceGraphEditor.show_cframe_indicator -> show_cframe_indicator: boolean Show frame number beside the current frame indicator line +TODO * SpaceGraphEditor.realtime_updates -> use_realtime_updates: boolean When transforming keyframes, changes to the animation data are flushed to other views +TODO * SpaceGraphEditor.show_cframe_indicator -> show_cframe_indicator: boolean Show frame number beside the current frame indicator line SpaceGraphEditor.show_cursor -> show_cursor: boolean Show 2D cursor SpaceGraphEditor.show_handles -> show_handles: boolean Show handles of Bezier control points SpaceGraphEditor.show_seconds -> show_seconds: boolean, (read-only) Show timing in seconds not frames SpaceGraphEditor.show_sliders -> show_sliders: boolean Show sliders beside F-Curve channels SpaceImageEditor.draw_repeated -> show_repeated: boolean Draw the image repeated outside of the main view SpaceImageEditor.image_painting -> use_image_paint: boolean Enable image painting mode -SpaceImageEditor.image_pin -> show_image_pin: boolean Display current image regardless of object selection +TODO * SpaceImageEditor.image_pin -> show_image_pin: boolean Display current image regardless of object selection SpaceImageEditor.show_paint -> show_paint: boolean, (read-only) Show paint related properties SpaceImageEditor.show_render -> show_render: boolean, (read-only) Show render related properties SpaceImageEditor.show_uvedit -> show_uvedit: boolean, (read-only) Show UV editing related properties -SpaceImageEditor.update_automatically -> use_update_automatically: boolean Update other affected window spaces automatically to reflect changes during interactive operations such as transform +TODO * SpaceImageEditor.update_automatically -> use_update_automatically: boolean Update other affected window spaces automatically to reflect changes during interactive operations such as transform SpaceImageEditor.use_grease_pencil -> use_grease_pencil: boolean Display and edit the grease pencil freehand annotations overlay SpaceLogicEditor.actuators_show_active_objects -> show_actuators_active_objects: boolean Show actuators of active object SpaceLogicEditor.actuators_show_active_states -> show_actuators_active_states: boolean Show only actuators connected to active states @@ -1145,8 +1143,8 @@ SpaceLogicEditor.sensors_show_active_objects -> show_sensors_active_objects: SpaceLogicEditor.sensors_show_active_states -> show_sensors_active_states: boolean Show only sensors connected to active states SpaceLogicEditor.sensors_show_linked_controller -> show_sensors_linked_controller: boolean Show linked objects to the controller SpaceLogicEditor.sensors_show_selected_objects -> show_sensors_selected_objects: boolean Show sensors of all selected objects -SpaceNLA.realtime_updates -> use_realtime_updates: boolean When transforming strips, changes to the animation data are flushed to other views -SpaceNLA.show_cframe_indicator -> show_cframe_indicator: boolean Show frame number beside the current frame indicator line +TODO * SpaceNLA.realtime_updates -> use_realtime_updates: boolean When transforming strips, changes to the animation data are flushed to other views +TODO * SpaceNLA.show_cframe_indicator -> show_cframe_indicator: boolean Show frame number beside the current frame indicator line SpaceNLA.show_seconds -> show_seconds: boolean, (read-only) Show timing in seconds not frames SpaceNLA.show_strip_curves -> show_strip_curves: boolean Show influence curves on strips SpaceNodeEditor.backdrop -> show_backdrop: boolean Use active Viewer Node output as backdrop for compositing nodes @@ -1166,17 +1164,17 @@ SpaceTextEditor.find_wrap -> use_find_wrap: boolean Search again from the SpaceTextEditor.line_numbers -> show_line_numbers: boolean Show line numbers next to the text SpaceTextEditor.live_edit -> use_live_edit: boolean Run python while editing SpaceTextEditor.overwrite -> use_overwrite: boolean Overwrite characters when typing rather than inserting them -SpaceTextEditor.syntax_highlight -> use_syntax_highlight: boolean Syntax highlight for scripting -SpaceTextEditor.word_wrap -> use_word_wrap: boolean Wrap words if there is not enough horizontal space -SpaceTimeline.only_selected -> use_only_selected: boolean Show keyframes for active Object and/or its selected channels only +TODO * SpaceTextEditor.syntax_highlight -> use_syntax_highlight: boolean Syntax highlight for scripting +TODO * SpaceTextEditor.word_wrap -> use_word_wrap: boolean Wrap words if there is not enough horizontal space +SpaceTimeline.only_selected -> show_only_selected: boolean Show keyframes for active Object and/or its selected channels only SpaceTimeline.play_all_3d -> use_play_all_3d: boolean -SpaceTimeline.play_anim -> use_play_anim: boolean +TODO * SpaceTimeline.play_anim -> use_play_anim: boolean SpaceTimeline.play_buttons -> use_play_buttons: boolean SpaceTimeline.play_image -> use_play_image: boolean SpaceTimeline.play_nodes -> use_play_nodes: boolean SpaceTimeline.play_sequencer -> use_play_sequencer: boolean SpaceTimeline.play_top_left -> use_play_top_left: boolean -SpaceTimeline.show_cframe_indicator -> show_cframe_indicator: boolean Show frame number beside the current frame indicator line +TODO * SpaceTimeline.show_cframe_indicator -> show_cframe_indicator: boolean Show frame number beside the current frame indicator line SpaceUVEditor.constrain_to_image_bounds -> use_constrain_to_image_bounds: boolean Constraint to stay within the image bounds while editing SpaceUVEditor.draw_modified_edges -> show_modified_edges: boolean Draw edges after modifiers are applied SpaceUVEditor.draw_other_objects -> show_other_objects: boolean Draw other selected objects that share the same image @@ -1188,17 +1186,17 @@ SpaceUVEditor.snap_to_pixels -> use_snap_to_pixels: boolean Snap UVs to pi SpaceView3D.all_object_origins -> show_all_objects_origin: boolean Show the object origin center dot for all (selected and unselected) objects SpaceView3D.display_background_images -> show_background_images: boolean Display reference images behind objects in the 3D View SpaceView3D.display_floor -> show_floor: boolean Show the ground plane grid in perspective view -SpaceView3D.display_render_override -> show_render_override: boolean Display only objects which will be rendered +TODO * SpaceView3D.display_render_override -> show_render_override: boolean Display only objects which will be rendered SpaceView3D.display_x_axis -> show_axis_x: boolean Show the X axis line in perspective view SpaceView3D.display_y_axis -> show_axis_y: boolean Show the Y axis line in perspective view SpaceView3D.display_z_axis -> show_axis_z: boolean Show the Z axis line in perspective view -TODO * SpaceView3D.layers -> layers: boolean Layers visible in this 3D View +TODO * SpaceView3D.layers -> layer: boolean Layers visible in this 3D View SpaceView3D.lock_camera_and_layers -> lock_camera_and_layers: boolean Use the scene's active camera and layers in this view, rather than local layers SpaceView3D.manipulator -> use_manipulator: boolean Use a 3D manipulator widget for controlling transforms SpaceView3D.manipulator_rotate -> use_manipulator_rotate: boolean Use the manipulator for rotation transformations SpaceView3D.manipulator_scale -> use_manipulator_scale: boolean Use the manipulator for scale transformations SpaceView3D.manipulator_translate -> use_manipulator_translate: boolean Use the manipulator for movement transformations -SpaceView3D.occlude_geometry -> use_occlude_geometry: boolean Limit selection to visible (clipped with depth buffer) +TODO * SpaceView3D.occlude_geometry -> use_occlude_geometry: boolean Limit selection to visible (clipped with depth buffer) SpaceView3D.outline_selected -> show_outline_selected: boolean Show an outline highlight around selected objects in non-wireframe views SpaceView3D.pivot_point_align -> use_pivot_point_align: boolean Manipulate object centers only SpaceView3D.relationship_lines -> show_relationship_lines: boolean Show dashed lines indicating parent or constraint relationships @@ -1224,20 +1222,20 @@ TODO * SplinePoint.selected -> select_control_point: boolean Selection st SpotLamp.auto_clip_end -> use_auto_clip_end: boolean Automatic calculation of clipping-end, based on visible vertices SpotLamp.auto_clip_start -> use_auto_clip_start: boolean Automatic calculation of clipping-start, based on visible vertices SpotLamp.halo -> use_halo: boolean Renders spotlight with a volumetric halo (Buffer Shadows) -SpotLamp.only_shadow -> use_shadow_only: boolean Causes light to cast shadows only without illuminating objects -SpotLamp.shadow_layer -> use_shadow_own_layer: boolean Causes only objects on the same layer to cast shadows +TODO * SpotLamp.only_shadow -> use_shadow_only: boolean Causes light to cast shadows only without illuminating objects +TODO * SpotLamp.shadow_layer -> use_shadow_own_layer: boolean Causes only objects on the same layer to cast shadows SpotLamp.show_cone -> show_cone: boolean Draw transparent cone in 3D view to visualize which objects are contained in it -SpotLamp.sphere -> use_sphere: boolean Sets light intensity to zero beyond lamp distance -SpotLamp.square -> use_square: boolean Casts a square spot light shape +TODO * SpotLamp.sphere -> use_sphere: boolean Sets light intensity to zero beyond lamp distance +TODO * SpotLamp.square -> use_square: boolean Casts a square spot light shape TODO * StateActuator.state -> state: boolean -SubsurfModifier.optimal_display -> show_optimal: boolean Skip drawing/rendering of interior subdivided edges +TODO * SubsurfModifier.optimal_display -> show_optimal: boolean Skip drawing/rendering of interior subdivided edges SubsurfModifier.subsurf_uv -> use_subsurf_uv: boolean Use subsurf to subdivide UVs SunLamp.only_shadow -> use_shadow_only: boolean Causes light to cast shadows only without illuminating objects -SunLamp.shadow_layer -> use_shadow_own_layer: boolean Causes only objects on the same layer to cast shadows -SurfaceCurve.map_along_length -> use_map_along_length: boolean Generate texture mapping coordinates following the curve direction, rather than the local bounding box +TODO * SunLamp.shadow_layer -> use_shadow_own_layer: boolean Causes only objects on the same layer to cast shadows +TODO * SurfaceCurve.map_along_length -> use_map_along_length: boolean Generate texture mapping coordinates following the curve direction, rather than the local bounding box SurfaceCurve.vertex_normal_flip -> use_vertex_normal_flip: boolean Flip vertex normals towards the camera during render -TexMapping.has_maximum -> use_clip_to_max: boolean Whether to use maximum clipping value -TexMapping.has_minimum -> use_clip_to_min: boolean Whether to use minimum clipping value +TODO * TexMapping.has_maximum -> use_clip_to_max: boolean Whether to use maximum clipping value +TODO * TexMapping.has_minimum -> use_clip_to_min: boolean Whether to use minimum clipping value Text.dirty -> is_dirty: boolean, (read-only) Text file has been edited since last save Text.memory -> is_in_memory: boolean, (read-only) Text file is in memory, without a corresponding file on disk Text.modified -> is_modified: boolean, (read-only) Text file on disk is different than the one in memory @@ -1249,7 +1247,7 @@ TextCharacterFormat.style -> use_style: boolean TextCharacterFormat.underline -> use_underline: boolean TextCharacterFormat.wrap -> use_wrap: boolean TextCurve.fast -> use_fast_editing: boolean Don't fill polygons while editing -TextCurve.map_along_length -> use_map_along_length: boolean Generate texture mapping coordinates following the curve direction, rather than the local bounding box +TODO * TextCurve.map_along_length -> use_map_along_length: boolean Generate texture mapping coordinates following the curve direction, rather than the local bounding box TextCurve.vertex_normal_flip -> use_vertex_normal_flip: boolean Flip vertex normals towards the camera during render TextMarker.edit_all -> use_edit_all: boolean, (read-only) Edit all markers of the same group as one TODO * TextMarker.temporary -> is_temporary: boolean, (read-only) Marker is temporary @@ -1257,7 +1255,7 @@ Texture.use_color_ramp -> use_color_ramp: boolean Toggle color ramp operat Texture.use_nodes -> use_nodes: boolean Make this a node-based texture Texture.use_preview_alpha -> use_preview_alpha: boolean Show Alpha in Preview Render TextureNodeMixRGB.alpha -> use_alpha: boolean Include alpha of second input in this operation -TextureSlot.negate -> use_negate: boolean Inverts the values of the texture to reverse its effect +TODO * TextureSlot.negate -> use_negate: boolean Inverts the values of the texture to reverse its effect TextureSlot.rgb_to_intensity -> use_rgb_to_intensity: boolean Converts texture RGB values to intensity (gray) values TextureSlot.stencil -> use_stencil: boolean Use this texture as a blending value on the next texture ThemeBoneColorSet.colored_constraints -> show_colored_constraints: boolean Allow the use of colors indicating constraints/keyed status @@ -1269,7 +1267,7 @@ ToolSettings.bone_sketching -> use_bone_sketching: boolean DOC BROKEN ToolSettings.etch_autoname -> use_etch_autoname: boolean DOC BROKEN ToolSettings.etch_overdraw -> use_etch_overdraw: boolean DOC BROKEN ToolSettings.etch_quick -> use_etch_quick: boolean DOC BROKEN -ToolSettings.mesh_selection_mode -> use_mesh_selection_mode: boolean Which mesh elements selection works on +TODO * ToolSettings.mesh_selection_mode -> use_mesh_selection_mode: boolean Which mesh elements selection works on ToolSettings.record_with_nla -> use_record_with_nla: boolean Add a new NLA Track + Strip for every loop/pass made over the animation to allow non-destructive tweaking ToolSettings.snap -> use_snap: boolean Snap during transform ToolSettings.snap_align_rotation -> use_snap_align_rotation: boolean Align rotation with the snapping target @@ -1282,11 +1280,11 @@ TrackToConstraint.target_z -> use_target_z: boolean Target's Z axis, not W TransformConstraint.extrapolate_motion -> use_motion_extrapolate: boolean Extrapolate ranges TransformSequence.uniform_scale -> use_uniform_scale: boolean Scale uniformly, preserving aspect ratio UILayout.active -> active: boolean -UILayout.enabled -> enabled: boolean -UVProjectModifier.override_image -> show_override_image: boolean Override faces' current images with the given image +TODO * UILayout.enabled -> enabled: boolean +TODO * UVProjectModifier.override_image -> show_override_image: boolean Override faces' current images with the given image UnitSettings.use_separate -> use_separate: boolean Display units in pairs -UserPreferencesEdit.auto_keyframe_insert_available -> use_keyframe_insert_auto_available: boolean Automatic keyframe insertion in available curves -UserPreferencesEdit.auto_keyframe_insert_keyingset -> use_keyframe_insert_auto_keyingset: boolean Automatic keyframe insertion using active Keying Set +TODO * UserPreferencesEdit.auto_keyframe_insert_available -> use_keyframe_insert_auto_available: boolean Automatic keyframe insertion in available curves +TODO * UserPreferencesEdit.auto_keyframe_insert_keyingset -> use_keyframe_insert_auto_keyingset: boolean Automatic keyframe insertion using active Keying Set UserPreferencesEdit.drag_immediately -> use_drag_immediately: boolean Moving things with a mouse drag confirms when releasing the button UserPreferencesEdit.duplicate_action -> use_duplicate_action: boolean Causes actions to be duplicated with the object UserPreferencesEdit.duplicate_armature -> use_duplicate_armature: boolean Causes armature data to be duplicated with the object @@ -1304,67 +1302,63 @@ UserPreferencesEdit.enter_edit_mode -> use_enter_edit_mode: boolean Enter UserPreferencesEdit.global_undo -> use_global_undo: boolean Global undo works by keeping a full copy of the file itself in memory, so takes extra memory UserPreferencesEdit.grease_pencil_simplify_stroke -> use_grease_pencil_simplify_stroke: boolean Simplify the final stroke UserPreferencesEdit.grease_pencil_smooth_stroke -> use_grease_pencil_smooth_stroke: boolean Smooth the final stroke -UserPreferencesEdit.insertkey_xyz_to_rgb -> show_insertkey_xyz_to_rgb: boolean Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis +TODO * UserPreferencesEdit.insertkey_xyz_to_rgb -> show_insertkey_xyz_to_rgb: boolean Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis UserPreferencesEdit.keyframe_insert_needed -> use_keyframe_insert_needed: boolean Keyframe insertion only when keyframe needed -UserPreferencesEdit.snap_rotate -> use_snap_grid_rotate: boolean Snap objects and sub-objects to grid units when rotating -UserPreferencesEdit.snap_scale -> use_snap_grid_scale: boolean Snap objects and sub-objects to grid units when scaling -UserPreferencesEdit.snap_translate -> use_snap_grid_translate: boolean Snap objects and sub-objects to grid units when moving UserPreferencesEdit.use_auto_keying -> use_auto_keying: boolean Automatic keyframe insertion for Objects and Bones UserPreferencesEdit.use_negative_frames -> use_negative_frames: boolean Current frame number can be manually set to a negative value -UserPreferencesEdit.use_visual_keying -> show_visual_keying: boolean Use Visual keying automatically for constrained objects +TODO * UserPreferencesEdit.use_visual_keying -> show_visual_keying: boolean Use Visual keying automatically for constrained objects UserPreferencesFilePaths.auto_save_temporary_files -> use_auto_save_temporary_files: boolean Automatic saving of temporary files -UserPreferencesFilePaths.compress_file -> use_file_compression: boolean Enable file compression when saving .blend files -UserPreferencesFilePaths.filter_file_extensions -> show_only_file_extensions: boolean Display only files with extensions in the image select window -UserPreferencesFilePaths.hide_dot_files_datablocks -> show_dot_files_datablocks: boolean Hide files/datablocks that start with a dot(.*) +TODO * UserPreferencesFilePaths.compress_file -> use_file_compression: boolean Enable file compression when saving .blend files +TODO * UserPreferencesFilePaths.filter_file_extensions -> show_only_file_extensions: boolean Display only files with extensions in the image select window +TODO * UserPreferencesFilePaths.hide_dot_files_datablocks -> show_dot_files_datablocks: boolean Hide files/datablocks that start with a dot(.*) UserPreferencesFilePaths.load_ui -> use_load_ui: boolean Load user interface setup when loading .blend files UserPreferencesFilePaths.save_preview_images -> use_save_preview_images: boolean Enables automatic saving of preview images in the .blend file UserPreferencesFilePaths.use_relative_paths -> use_relative_paths: boolean Default relative path option for the file selector UserPreferencesInput.continuous_mouse -> use_continuous_mouse: boolean Allow moving the mouse outside the view on some manipulations (transform, ui control drag) UserPreferencesInput.emulate_3_button_mouse -> use_emulate_3_button_mouse: boolean Emulates Middle Mouse with Alt+LeftMouse (doesn't work with Left Mouse Select option) UserPreferencesInput.emulate_numpad -> use_emulate_numpad: boolean Causes the 1 to 0 keys to act as the numpad (useful for laptops) -UserPreferencesInput.invert_zoom_direction -> invert_zoom: boolean Invert the axis of mouse movement for zooming +TODO * UserPreferencesInput.invert_zoom_direction -> invert_zoom: boolean Invert the axis of mouse movement for zooming UserPreferencesSystem.auto_execute_scripts -> use_scripts_auto_execute: boolean Allow any .blend file to run scripts automatically (unsafe with blend files from an untrusted source) -UserPreferencesSystem.enable_all_codecs -> use_preview_images: boolean Enables automatic saving of preview images in the .blend file (Windows only) -UserPreferencesSystem.international_fonts -> use_fonts_international: boolean Use international fonts +TODO * UserPreferencesSystem.enable_all_codecs -> use_preview_images: boolean Enables automatic saving of preview images in the .blend file (Windows only) +TODO * UserPreferencesSystem.international_fonts -> use_fonts_international: boolean Use international fonts UserPreferencesSystem.tabs_as_spaces -> use_tabs_as_spaces: boolean Automatically converts all new tabs into spaces for new and loaded text files UserPreferencesSystem.translate_buttons -> show_translate_buttons: boolean Translate button labels UserPreferencesSystem.translate_toolbox -> show_translate_toolbox: boolean Translate toolbox menu UserPreferencesSystem.translate_tooltips -> show_translate_tooltips: boolean Translate Tooltips UserPreferencesSystem.use_antialiasing -> show_antialiasing: boolean Use anti-aliasing for the 3D view (may impact redraw performance) UserPreferencesSystem.use_mipmaps -> use_mipmaps: boolean Scale textures for the 3D View (looks nicer but uses more memory and slows image reloading) -UserPreferencesSystem.use_textured_fonts -> show_fonts_textured: boolean Use textures for drawing international fonts +TODO * UserPreferencesSystem.use_textured_fonts -> show_fonts_textured: boolean Use textures for drawing international fonts UserPreferencesSystem.use_vbos -> use_vertex_buffer_objects: boolean Use Vertex Buffer Objects (or Vertex Arrays, if unsupported) for viewport rendering -UserPreferencesSystem.use_weight_color_range -> show_weight_color_range: boolean Enable color range used for weight visualization in weight painting mode +TODO * UserPreferencesSystem.use_weight_color_range -> show_weight_color_range: boolean Enable color range used for weight visualization in weight painting mode UserPreferencesView.auto_depth -> use_mouse_auto_depth: boolean Use the depth under the mouse to improve view pan/rotate/zoom functionality -UserPreferencesView.auto_perspective -> show_auto_perspective: boolean Automatically switch between orthographic and perspective when changing from top/front/side views +TODO * UserPreferencesView.auto_perspective -> show_auto_perspective: boolean Automatically switch between orthographic and perspective when changing from top/front/side views UserPreferencesView.directional_menus -> show_directional_menus: boolean Otherwise menus, etc will always be top to bottom, left to right, no matter opening direction UserPreferencesView.display_object_info -> show_object_info: boolean Display objects name and frame number in 3D view -UserPreferencesView.global_pivot -> show_global_pivot: boolean Lock the same rotation/scaling pivot in all 3D Views -UserPreferencesView.global_scene -> show_global_scene: boolean Forces the current Scene to be displayed in all Screens -UserPreferencesView.open_mouse_over -> use_mouse_over_open: boolean Open menu buttons and pulldowns automatically when the mouse is hovering -UserPreferencesView.pin_floating_panels -> show_pin_floating_panels: boolean Make floating panels invoked by a hotkey (e.g. N Key) open at the previous location +TODO * UserPreferencesView.global_pivot -> show_global_pivot: boolean Lock the same rotation/scaling pivot in all 3D Views +TODO * UserPreferencesView.global_scene -> show_global_scene: boolean Forces the current Scene to be displayed in all Screens +TODO * UserPreferencesView.open_mouse_over -> use_mouse_over_open: boolean Open menu buttons and pulldowns automatically when the mouse is hovering UserPreferencesView.rotate_around_selection -> use_rotate_around_selection: boolean Use selection as the pivot point UserPreferencesView.show_mini_axis -> show_mini_axis: boolean Show a small rotating 3D axis in the bottom left corner of the 3D View UserPreferencesView.show_playback_fps -> show_playback_fps: boolean Show the frames per second screen refresh rate, while animation is played back UserPreferencesView.show_splash -> show_splash: boolean Display splash screen on startup UserPreferencesView.show_view_name -> show_view_name: boolean Show the name of the view's direction in each 3D View -UserPreferencesView.tooltips -> use_tooltips: boolean Display tooltips +UserPreferencesView.tooltips -> show_tooltips: boolean Display tooltips UserPreferencesView.use_column_layout -> show_column_layout: boolean Use a column layout for toolbox UserPreferencesView.use_large_cursors -> show_large_cursors: boolean Use large mouse cursors when available UserPreferencesView.use_manipulator -> show_manipulator: boolean Use 3D transform manipulator UserPreferencesView.use_middle_mouse_paste -> use_mouse_mmb_paste: boolean In text window, paste with middle mouse button instead of panning -UserPreferencesView.wheel_invert_zoom -> invert_mouse_wheel_zoom: boolean Swap the Mouse Wheel zoom direction -UserPreferencesView.zoom_to_mouse -> use_zoom_ato_mouse: boolean Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D window center -UserSolidLight.enabled -> use: boolean Enable this OpenGL light in solid draw mode -VertexPaint.all_faces -> use_all_faces: boolean Paint on all faces inside brush -VertexPaint.normals -> use_normals: boolean Applies the vertex normal before painting +TODO * UserPreferencesView.wheel_invert_zoom -> invert_mouse_wheel_zoom: boolean Swap the Mouse Wheel zoom direction +TODO * UserPreferencesView.zoom_to_mouse -> use_zoom_auto_mouse: boolean Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D window center +TODO * UserSolidLight.enabled -> use: boolean Enable this OpenGL light in solid draw mode +TODO * VertexPaint.all_faces -> use_all_faces: boolean Paint on all faces inside brush +TODO * VertexPaint.normals -> use_normals: boolean Applies the vertex normal before painting VertexPaint.spray -> use_spray: boolean Keep applying paint effect while holding mouse -VisibilityActuator.children -> show_occluded_children: boolean Set all the children of this object to the same visibility/occlusion recursively -VisibilityActuator.occlusion -> show_occluded: boolean Set the object to occlude objects behind it. Initialized from the object type in physics button -VisibilityActuator.visible -> show: boolean Set the objects visible. Initialized from the objects render restriction toggle (access in the outliner) -VoxelData.still -> use_still: boolean Always render a still frame from the voxel data sequence +TODO * VisibilityActuator.children -> show_occluded_children: boolean Set all the children of this object to the same visibility/occlusion recursively +TODO * VisibilityActuator.occlusion -> show_occluded: boolean Set the object to occlude objects behind it. Initialized from the object type in physics button +TODO * VisibilityActuator.visible -> show: boolean Set the objects visible. Initialized from the objects render restriction toggle (access in the outliner) +VoxelData.still -> use_still_frame: boolean Always render a still frame from the voxel data sequence WaveModifier.cyclic -> use_cyclic: boolean Cyclic wave effect -WaveModifier.normals -> show_normals: boolean Displace along normals +TODO * WaveModifier.normals -> show_normals: boolean Displace along normals WaveModifier.x -> use_x: boolean X axis motion WaveModifier.x_normal -> use_normal_x: boolean Enable displacement along the X normal WaveModifier.y -> use_y: boolean Y axis motion @@ -1374,8 +1368,8 @@ World.blend_sky -> use_sky_blend: boolean Render background with natural p World.paper_sky -> use_sky_paper: boolean Flatten blend or texture coordinates World.real_sky -> use_sky_real: boolean Render background with a real horizon, relative to the camera angle WorldLighting.falloff -> use_falloff: boolean -WorldLighting.pixel_cache -> use_ao_pixel_cache: boolean Cache AO results in pixels and interpolate over neighbouring pixels for speedup (for Approximate) -WorldLighting.use_ambient_occlusion -> use_ao: boolean Use Ambient Occlusion to add shadowing based on distance between objects +WorldLighting.pixel_cache -> use_cache: boolean Cache AO results in pixels and interpolate over neighbouring pixels for speedup (for Approximate) +WorldLighting.use_ambient_occlusion -> use_ambient_occlusian: boolean Use Ambient Occlusion to add shadowing based on distance between objects WorldLighting.use_environment_lighting -> use_environment_lighting: boolean Add light coming from the environment WorldLighting.use_indirect_lighting -> use_indirect_lighting: boolean Add indirect light bouncing of surrounding objects WorldMistSettings.use_mist -> use_mist: boolean Occlude objects with the environment color as they are further away @@ -1383,4 +1377,4 @@ WorldStarsSettings.use_stars -> use_stars: boolean Enable starfield genera WorldTextureSlot.map_blend -> use_map_blend: boolean Affect the color progression of the background WorldTextureSlot.map_horizon -> use_map_horizon: boolean Affect the color of the horizon WorldTextureSlot.map_zenith_down -> use_map_zenith_down: boolean Affect the color of the zenith below -WorldTextureSlot.map_zenith_up -> use_map_zenith_up: boolean Affect the color of the zenith above \ No newline at end of file +WorldTextureSlot.map_zenith_up -> use_map_zenith_up: boolean Affect the color of the zenith above From 64091ff5bd6258cd05cf4b1d96da22cb3aef6976 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 12 Jul 2010 20:35:10 +0000 Subject: [PATCH 424/674] fix for crash when psys_get_dupli_texture() was called on a subsurf mesh with simplify enabled. --- source/blender/blenkernel/intern/particle.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index f33ac2ad380..96c0afedfb0 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -4257,8 +4257,13 @@ void psys_get_dupli_texture(Object *ob, ParticleSettings *part, ParticleSystemMo num= pa->num_dmcache; if(num == DMCACHE_NOTFOUND) - if(pa->num < psmd->dm->getNumFaces(psmd->dm)) - num= pa->num; + num= pa->num; + + if (num >= psmd->dm->getNumFaces(psmd->dm)) { + /* happens when simplify is enabled + * gives invalid coords but would crash otherwise */ + num= DMCACHE_NOTFOUND; + } if(mtface && num != DMCACHE_NOTFOUND) { mface= psmd->dm->getFaceData(psmd->dm, num, CD_MFACE); From fd560e86970e1e9f34e24bf09aa2ab6ab554e0b5 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 12 Jul 2010 22:11:44 +0000 Subject: [PATCH 425/674] unmodified property names ready for editing (all props excluding bools) --- .../makesrna/rna_cleanup/rna_properties.txt | 3190 +++++++++++++++++ 1 file changed, 3190 insertions(+) create mode 100644 source/blender/makesrna/rna_cleanup/rna_properties.txt diff --git a/source/blender/makesrna/rna_cleanup/rna_properties.txt b/source/blender/makesrna/rna_cleanup/rna_properties.txt new file mode 100644 index 00000000000..4ea22e422b0 --- /dev/null +++ b/source/blender/makesrna/rna_cleanup/rna_properties.txt @@ -0,0 +1,3190 @@ +Action.fcurves -> fcurves: collection, (read-only) The individual F-Curves that make up the Action +Action.groups -> groups: collection, (read-only) Convenient groupings of F-Curves +Action.pose_markers -> pose_markers: collection, (read-only) Markers specific to this Action, for labeling poses +ActionActuator.action -> action: pointer +ActionActuator.blendin -> blendin: int Number of frames of motion blending +ActionActuator.frame_end -> frame_end: int +ActionActuator.frame_property -> frame_property: string Assign the action's current frame number to this property +ActionActuator.frame_start -> frame_start: int +ActionActuator.mode -> mode: enum Action playback type +ActionActuator.priority -> priority: int Execution priority - lower numbers will override actions with higher numbers. With 2 or more actions at once, the overriding channels must be lower in the stack +ActionActuator.property -> property: string Use this property to define the Action position +ActionConstraint.action -> action: pointer +ActionConstraint.frame_end -> frame_end: int Last frame of the Action to use +ActionConstraint.frame_start -> frame_start: int First frame of the Action to use +ActionConstraint.maximum -> maximum: float Maximum value for target channel range +ActionConstraint.minimum -> minimum: float Minimum value for target channel range +ActionConstraint.subtarget -> subtarget: string +ActionConstraint.target -> target: pointer Target Object +ActionConstraint.transform_channel -> transform_channel: enum Transformation channel from the target that is used to key the Action +ActionGroup.channels -> channels: collection, (read-only) F-Curves in this group +ActionGroup.custom_color -> custom_color: int Index of custom color set +ActionGroup.name -> name: string +Actuator.name -> name: string +Actuator.type -> type: enum +ActuatorSensor.actuator -> actuator: string Actuator name, actuator active state modifications will be detected +Addon.module -> module: string Module name +AnimData.action -> action: pointer Active Action for this datablock +AnimData.action_blending -> action_blending: enum Method used for combining Active Action's result with result of NLA stack +AnimData.action_extrapolation -> action_extrapolation: enum Action to take for gaps past the Active Action's range (when evaluating with NLA) +AnimData.action_influence -> action_influence: float Amount the Active Action contributes to the result of the NLA stack +AnimData.drivers -> drivers: collection, (read-only) The Drivers/Expressions for this datablock +AnimData.nla_tracks -> nla_tracks: collection, (read-only) NLA Tracks (i.e. Animation Layers) +AnimViz.motion_paths -> motion_paths: pointer, (read-only) Motion Path settings for visualisation +AnimViz.onion_skinning -> onion_skinning: pointer, (read-only) Onion Skinning (ghosting) settings for visualisation +AnimVizMotionPaths.after_current -> after_current: int Number of frames to show after the current frame (only for 'Around Current Frame' Onion-skinning method) +AnimVizMotionPaths.bake_location -> bake_location: enum When calculating Bone Paths, use Head or Tips +AnimVizMotionPaths.before_current -> before_current: int Number of frames to show before the current frame (only for 'Around Current Frame' Onion-skinning method) +AnimVizMotionPaths.frame_end -> frame_end: int End frame of range of paths to display/calculate (not for 'Around Current Frame' Onion-skinning method) +AnimVizMotionPaths.frame_start -> frame_start: int Starting frame of range of paths to display/calculate (not for 'Around Current Frame' Onion-skinning method) +AnimVizMotionPaths.frame_step -> frame_step: int Number of frames between paths shown (not for 'On Keyframes' Onion-skinning method) +AnimVizMotionPaths.type -> type: enum Type of range to show for Motion Paths +AnimVizOnionSkinning.after_current -> after_current: int Number of frames to show after the current frame (only for 'Around Current Frame' Onion-skinning method) +AnimVizOnionSkinning.before_current -> before_current: int Number of frames to show before the current frame (only for 'Around Current Frame' Onion-skinning method) +AnimVizOnionSkinning.frame_end -> frame_end: int End frame of range of Ghosts to display (not for 'Around Current Frame' Onion-skinning method) +AnimVizOnionSkinning.frame_start -> frame_start: int Starting frame of range of Ghosts to display (not for 'Around Current Frame' Onion-skinning method) +AnimVizOnionSkinning.frame_step -> frame_step: int Number of frames between ghosts shown (not for 'On Keyframes' Onion-skinning method) +AnimVizOnionSkinning.type -> type: enum Method used for determining what ghosts get drawn +Area.active_space -> active_space: pointer, (read-only) Space currently being displayed in this area +Area.regions -> regions: collection, (read-only) Regions this area is subdivided in +Area.spaces -> spaces: collection, (read-only) Spaces contained in this area, the first space is active +Area.type -> type: enum Space type +AreaLamp.gamma -> gamma: float Light gamma correction value +AreaLamp.shadow_adaptive_threshold -> shadow_adaptive_threshold: float Threshold for Adaptive Sampling (Raytraced shadows) +AreaLamp.shadow_color -> shadow_color: float Color of shadows cast by the lamp +AreaLamp.shadow_method -> shadow_method: enum Method to compute lamp shadow with +AreaLamp.shadow_ray_samples_x -> shadow_ray_samples_x: int Amount of samples taken extra (samples x samples) +AreaLamp.shadow_ray_samples_y -> shadow_ray_samples_y: int Amount of samples taken extra (samples x samples) +AreaLamp.shadow_ray_sampling_method -> shadow_ray_sampling_method: enum Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower +AreaLamp.shadow_soft_size -> shadow_soft_size: float Light size for ray shadow sampling (Raytraced shadows) +AreaLamp.shape -> shape: enum Shape of the area lamp +AreaLamp.size -> size: float Size of the area of the area Lamp, X direction size for Rectangle shapes +AreaLamp.size_y -> size_y: float Size of the area of the area Lamp in the Y direction for Rectangle shapes +Armature.animation_data -> animation_data: pointer, (read-only) Animation data for this datablock +Armature.bones -> bones: collection, (read-only) +Armature.drawtype -> drawtype: enum +Armature.edit_bones -> edit_bones: collection, (read-only) +Armature.ghost_frame_end -> ghost_frame_end: int End frame of range of Ghosts to display (not for 'Around Current Frame' Onion-skinning method) +Armature.ghost_frame_start -> ghost_frame_start: int Starting frame of range of Ghosts to display (not for 'Around Current Frame' Onion-skinning method) +Armature.ghost_size -> ghost_size: int Frame step for Ghosts (not for 'On Keyframes' Onion-skinning method) +Armature.ghost_step -> ghost_step: int Number of frame steps on either side of current frame to show as ghosts (only for 'Around Current Frame' Onion-skinning method) +Armature.ghost_type -> ghost_type: enum Method of Onion-skinning for active Action +Armature.pose_position -> pose_position: enum Show armature in binding pose or final posed state +ArmatureActuator.bone -> bone: string Bone on which the constraint is defined +ArmatureActuator.constraint -> constraint: string Name of the constraint you want to control +ArmatureActuator.mode -> mode: enum +ArmatureActuator.secondary_target -> secondary_target: pointer Set weight of this constraint +ArmatureActuator.target -> target: pointer Set this object as the target of the constraint +ArmatureActuator.weight -> weight: float Set weight of this constraint +ArmatureBones.active -> active: pointer Armatures active bone +ArmatureEditBones.active -> active: pointer Armatures active edit bone +ArmatureModifier.object -> object: pointer Armature object to deform with +ArmatureModifier.vertex_group -> vertex_group: string Vertex group name +ArmatureSensor.bone -> bone: string Identify the bone to check value from +ArmatureSensor.constraint -> constraint: string Identify the bone constraint to check value from +ArmatureSensor.test_type -> test_type: enum Type of value and test +ArmatureSensor.value -> value: float Specify value to be used in comparison +ArrayModifier.constant_offset_displacement -> constant_offset_displacement: float +ArrayModifier.count -> count: int Number of duplicates to make +ArrayModifier.curve -> curve: pointer Curve object to fit array length to +ArrayModifier.end_cap -> end_cap: pointer Mesh object to use as an end cap +ArrayModifier.fit_type -> fit_type: enum Array length calculation method +ArrayModifier.length -> length: float Length to fit array within +ArrayModifier.merge_distance -> merge_distance: float Limit below which to merge vertices +ArrayModifier.offset_object -> offset_object: pointer +ArrayModifier.relative_offset_displacement -> relative_offset_displacement: float +ArrayModifier.start_cap -> start_cap: pointer Mesh object to use as a start cap +BackgroundImage.image -> image: pointer Image displayed and edited in this space +BackgroundImage.image_user -> image_user: pointer, (read-only) Parameters defining which layer, pass and frame of the image is displayed +BackgroundImage.offset_x -> offset_x: float Offsets image horizontally from the world origin +BackgroundImage.offset_y -> offset_y: float Offsets image vertically from the world origin +BackgroundImage.size -> size: float Scaling factor for the background image +BackgroundImage.transparency -> transparency: float Amount to blend the image against the background color +BackgroundImage.view_axis -> view_axis: enum The axis to display the image on +BevelModifier.angle -> angle: float Angle above which to bevel edges +BevelModifier.edge_weight_method -> edge_weight_method: enum What edge weight to use for weighting a vertex +BevelModifier.limit_method -> limit_method: enum +BevelModifier.width -> width: float Bevel value/amount +BezierSplinePoint.co -> co: float Coordinates of the control point +BezierSplinePoint.handle1 -> handle1: float Coordinates of the first handle +BezierSplinePoint.handle1_type -> handle1_type: enum Handle types +BezierSplinePoint.handle2 -> handle2: float Coordinates of the second handle +BezierSplinePoint.handle2_type -> handle2_type: enum Handle types +BezierSplinePoint.radius -> radius: float, (read-only) Radius for bevelling +BezierSplinePoint.tilt -> tilt: float Tilt in 3D View +BezierSplinePoint.weight -> weight: float Softbody goal weight +BlendTexture.flip_axis -> flip_axis: enum Flips the texture's X and Y axis +BlendTexture.progression -> progression: enum Sets the style of the color blending +BlenderRNA.structs -> structs: collection, (read-only) +BoidRule.name -> name: string Boid rule name +BoidRule.type -> type: enum, (read-only) +BoidRuleAverageSpeed.level -> level: float How much velocity's z-component is kept constant +BoidRuleAverageSpeed.speed -> speed: float Percentage of maximum speed +BoidRuleAverageSpeed.wander -> wander: float How fast velocity's direction is randomized +BoidRuleAvoid.fear_factor -> fear_factor: float Avoid object if danger from it is above this threshold +BoidRuleAvoid.object -> object: pointer Object to avoid +BoidRuleAvoidCollision.look_ahead -> look_ahead: float Time to look ahead in seconds +BoidRuleFight.distance -> distance: float Attack boids at max this distance +BoidRuleFight.flee_distance -> flee_distance: float Flee to this distance +BoidRuleFollowLeader.distance -> distance: float Distance behind leader to follow +BoidRuleFollowLeader.object -> object: pointer Follow this object instead of a boid +BoidRuleFollowLeader.queue_size -> queue_size: int How many boids in a line +BoidRuleGoal.object -> object: pointer Goal object +BoidSettings.accuracy -> accuracy: float Accuracy of attack +BoidSettings.active_boid_state -> active_boid_state: pointer, (read-only) +BoidSettings.active_boid_state_index -> active_boid_state_index: int +BoidSettings.aggression -> aggression: float Boid will fight this times stronger enemy +BoidSettings.air_max_acc -> air_max_acc: float Maximum acceleration in air (relative to maximum speed) +BoidSettings.air_max_ave -> air_max_ave: float Maximum angular velocity in air (relative to 180 degrees) +BoidSettings.air_max_speed -> air_max_speed: float Maximum speed in air +BoidSettings.air_min_speed -> air_min_speed: float Minimum speed in air (relative to maximum speed) +BoidSettings.air_personal_space -> air_personal_space: float Radius of boids personal space in air (% of particle size) +BoidSettings.banking -> banking: float Amount of rotation around velocity vector on turns +BoidSettings.health -> health: float Initial boid health when born +BoidSettings.height -> height: float Boid height relative to particle size +BoidSettings.land_jump_speed -> land_jump_speed: float Maximum speed for jumping +BoidSettings.land_max_acc -> land_max_acc: float Maximum acceleration on land (relative to maximum speed) +BoidSettings.land_max_ave -> land_max_ave: float Maximum angular velocity on land (relative to 180 degrees) +BoidSettings.land_max_speed -> land_max_speed: float Maximum speed on land +BoidSettings.land_personal_space -> land_personal_space: float Radius of boids personal space on land (% of particle size) +BoidSettings.land_stick_force -> land_stick_force: float How strong a force must be to start effecting a boid on land +BoidSettings.landing_smoothness -> landing_smoothness: float How smoothly the boids land +BoidSettings.range -> range: float The maximum distance from which a boid can attack +BoidSettings.states -> states: collection, (read-only) +BoidSettings.strength -> strength: float Maximum caused damage on attack per second +BoidState.active_boid_rule -> active_boid_rule: pointer, (read-only) +BoidState.active_boid_rule_index -> active_boid_rule_index: int +BoidState.falloff -> falloff: float +BoidState.name -> name: string Boid state name +BoidState.rule_fuzziness -> rule_fuzziness: float +BoidState.rules -> rules: collection, (read-only) +BoidState.ruleset_type -> ruleset_type: enum How the rules in the list are evaluated +BoidState.volume -> volume: float +Bone.bbone_in -> bbone_in: float Length of first Bezier Handle (for B-Bones only) +Bone.bbone_out -> bbone_out: float Length of second Bezier Handle (for B-Bones only) +Bone.bbone_segments -> bbone_segments: int Number of subdivisions of bone (for B-Bones only) +Bone.children -> children: collection, (read-only) Bones which are children of this bone +Bone.envelope_distance -> envelope_distance: float Bone deformation distance (for Envelope deform only) +Bone.envelope_weight -> envelope_weight: float Bone deformation weight (for Envelope deform only) +Bone.head -> head: float Location of head end of the bone relative to its parent +Bone.head_local -> head_local: float Location of head end of the bone relative to armature +Bone.head_radius -> head_radius: float Radius of head of bone (for Envelope deform only) +Bone.matrix -> matrix: float 3x3 bone matrix +Bone.matrix_local -> matrix_local: float 4x4 bone matrix relative to armature +Bone.name -> name: string +Bone.parent -> parent: pointer, (read-only) Parent bone (in same Armature) +Bone.tail -> tail: float Location of tail end of the bone +Bone.tail_local -> tail_local: float Location of tail end of the bone relative to armature +Bone.tail_radius -> tail_radius: float Radius of tail of bone (for Envelope deform only) +BoneGroup.color_set -> color_set: enum Custom color set to use +BoneGroup.colors -> colors: pointer, (read-only) Copy of the colors associated with the group's color set +BoneGroup.name -> name: string +BooleanModifier.object -> object: pointer Mesh object to use for Boolean operation +BooleanModifier.operation -> operation: enum +BooleanProperty.array_length -> array_length: int, (read-only) Maximum length of the array, 0 means unlimited +Brush.blend -> blend: enum Brush blending mode +Brush.clone_alpha -> clone_alpha: float Opacity of clone image display +Brush.clone_image -> clone_image: pointer Image for clone tool +Brush.clone_offset -> clone_offset: float +Brush.color -> color: float +Brush.curve -> curve: pointer, (read-only) Editable falloff curve +Brush.direction -> direction: enum Mapping type to use for this image in the game engine +Brush.imagepaint_tool -> imagepaint_tool: enum +Brush.jitter -> jitter: float Jitter the position of the brush while painting +Brush.rate -> rate: float Interval between paints for Airbrush +Brush.sculpt_tool -> sculpt_tool: enum +Brush.size -> size: int Diameter of the brush +Brush.smooth_stroke_factor -> smooth_stroke_factor: float Higher values give a smoother stroke +Brush.smooth_stroke_radius -> smooth_stroke_radius: int Minimum distance from last point before stroke continues +Brush.spacing -> spacing: float Spacing between brush stamps +Brush.strength -> strength: float The amount of pressure on the brush +Brush.texture -> texture: pointer +Brush.texture_slot -> texture_slot: pointer, (read-only) +Brush.vertexpaint_tool -> vertexpaint_tool: enum +BrushTextureSlot.angle -> angle: float Defines brush texture rotation +BrushTextureSlot.map_mode -> map_mode: enum +BuildModifier.frame_start -> frame_start: float Specify the start frame of the effect +BuildModifier.length -> length: float Specify the total time the build effect requires +BuildModifier.seed -> seed: int Specify the seed for random if used +Camera.angle -> angle: float Perspective Camera lens field of view in degrees +Camera.animation_data -> animation_data: pointer, (read-only) Animation data for this datablock +Camera.clip_end -> clip_end: float Camera far clipping distance +Camera.clip_start -> clip_start: float Camera near clipping distance +Camera.dof_distance -> dof_distance: float Distance to the focus point for depth of field +Camera.dof_object -> dof_object: pointer Use this object to define the depth of field focal point +Camera.draw_size -> draw_size: float Apparent size of the Camera object in the 3D View +Camera.lens -> lens: float Perspective Camera lens value in millimeters +Camera.lens_unit -> lens_unit: enum Unit to edit lens in for the user interface +Camera.ortho_scale -> ortho_scale: float Orthographic Camera scale (similar to zoom) +Camera.passepartout_alpha -> passepartout_alpha: float Opacity (alpha) of the darkened overlay in Camera view +Camera.shift_x -> shift_x: float Perspective Camera horizontal shift +Camera.shift_y -> shift_y: float Perspective Camera vertical shift +Camera.type -> type: enum Camera types +CameraActuator.axis -> axis: enum Specify the axis the Camera will try to get behind +CameraActuator.height -> height: float +CameraActuator.max -> max: float +CameraActuator.min -> min: float +CameraActuator.object -> object: pointer Look at this Object +CastModifier.cast_type -> cast_type: enum +CastModifier.factor -> factor: float +CastModifier.object -> object: pointer Control object: if available, its location determines the center of the effect +CastModifier.radius -> radius: float Only deform vertices within this distance from the center of the effect (leave as 0 for infinite.) +CastModifier.size -> size: float Size of projection shape (leave as 0 for auto.) +CastModifier.vertex_group -> vertex_group: string Vertex group name +ChildOfConstraint.subtarget -> subtarget: string +ChildOfConstraint.target -> target: pointer Target Object +ClampToConstraint.main_axis -> main_axis: enum Main axis of movement +ClampToConstraint.target -> target: pointer Target Object +ClothCollisionSettings.collision_quality -> collision_quality: int How many collision iterations should be done. (higher is better quality but slower) +ClothCollisionSettings.friction -> friction: float Friction force if a collision happened. (higher = less movement) +ClothCollisionSettings.group -> group: pointer Limit colliders to this Group +ClothCollisionSettings.min_distance -> min_distance: float Minimum distance between collision objects before collision response takes in +ClothCollisionSettings.self_collision_quality -> self_collision_quality: int How many self collision iterations should be done. (higher is better quality but slower) +ClothCollisionSettings.self_friction -> self_friction: float Friction/damping with self contact +ClothCollisionSettings.self_min_distance -> self_min_distance: float 0.5 means no distance at all, 1.0 is maximum distance +ClothModifier.collision_settings -> collision_settings: pointer, (read-only) +ClothModifier.point_cache -> point_cache: pointer, (read-only) +ClothModifier.settings -> settings: pointer, (read-only) +ClothSettings.air_damping -> air_damping: float Air has normally some thickness which slows falling things down +ClothSettings.bending_stiffness -> bending_stiffness: float Wrinkle coefficient. (higher = less smaller but more big wrinkles) +ClothSettings.bending_stiffness_max -> bending_stiffness_max: float Maximum bending stiffness value +ClothSettings.bending_vertex_group -> bending_vertex_group: string Vertex group for fine control over bending stiffness +ClothSettings.collider_friction -> collider_friction: float +ClothSettings.effector_weights -> effector_weights: pointer, (read-only) +ClothSettings.goal_default -> goal_default: float Default Goal (vertex target position) value, when no Vertex Group used +ClothSettings.goal_friction -> goal_friction: float Goal (vertex target position) friction +ClothSettings.goal_max -> goal_max: float Goal maximum, vertex group weights are scaled to match this range +ClothSettings.goal_min -> goal_min: float Goal minimum, vertex group weights are scaled to match this range +ClothSettings.goal_spring -> goal_spring: float Goal (vertex target position) spring stiffness +ClothSettings.gravity -> gravity: float Gravity or external force vector +ClothSettings.internal_friction -> internal_friction: float +ClothSettings.mass -> mass: float Mass of cloth material +ClothSettings.mass_vertex_group -> mass_vertex_group: string Vertex Group for pinning of vertices +ClothSettings.pin_stiffness -> pin_stiffness: float Pin (vertex target position) spring stiffness +ClothSettings.pre_roll -> pre_roll: int Simulation starts on this frame +ClothSettings.quality -> quality: int Quality of the simulation in steps per frame. (higher is better quality but slower) +ClothSettings.rest_shape_key -> rest_shape_key: pointer Shape key to use the rest spring lengths from +ClothSettings.spring_damping -> spring_damping: float Damping of cloth velocity. (higher = more smooth, less jiggling) +ClothSettings.structural_stiffness -> structural_stiffness: float Overall stiffness of structure +ClothSettings.structural_stiffness_max -> structural_stiffness_max: float Maximum structural stiffness value +ClothSettings.structural_stiffness_vertex_group -> structural_stiffness_vertex_group: string Vertex group for fine control over structural stiffness +CloudsTexture.nabla -> nabla: float Size of derivative offset used for calculating normal +CloudsTexture.noise_basis -> noise_basis: enum Sets the noise basis used for turbulence +CloudsTexture.noise_depth -> noise_depth: int Sets the depth of the cloud calculation +CloudsTexture.noise_size -> noise_size: float Sets scaling for noise input +CloudsTexture.noise_type -> noise_type: enum +CloudsTexture.stype -> stype: enum +CollectionProperty.fixed_type -> fixed_type: pointer, (read-only) Fixed pointer type, empty if variable type +CollisionModifier.settings -> settings: pointer, (read-only) +CollisionSensor.material -> material: string Only look for Objects with this material +CollisionSensor.property -> property: string Only look for Objects with this property +CollisionSettings.absorption -> absorption: float How much of effector force gets lost during collision with this object (in percent) +CollisionSettings.damping -> damping: float Amount of damping during collision +CollisionSettings.damping_factor -> damping_factor: float Amount of damping during particle collision +CollisionSettings.friction_factor -> friction_factor: float Amount of friction during particle collision +CollisionSettings.inner_thickness -> inner_thickness: float Inner face thickness +CollisionSettings.outer_thickness -> outer_thickness: float Outer face thickness +CollisionSettings.permeability -> permeability: float Chance that the particle will pass through the mesh +CollisionSettings.random_damping -> random_damping: float Random variation of damping +CollisionSettings.random_friction -> random_friction: float Random variation of friction +CollisionSettings.stickness -> stickness: float Amount of stickness to surface collision +ColorRamp.elements -> elements: collection, (read-only) +ColorRamp.interpolation -> interpolation: enum +ColorRampElement.color -> color: float +ColorRampElement.position -> position: float +ColorSequence.color -> color: float +CompositorNode.type -> type: enum, (read-only) +CompositorNodeAlphaOver.premul -> premul: float Mix Factor +CompositorNodeBilateralblur.iterations -> iterations: int +CompositorNodeBilateralblur.sigma_color -> sigma_color: float +CompositorNodeBilateralblur.sigma_space -> sigma_space: float +CompositorNodeBlur.factor -> factor: float +CompositorNodeBlur.factor_x -> factor_x: float +CompositorNodeBlur.factor_y -> factor_y: float +CompositorNodeBlur.filter_type -> filter_type: enum +CompositorNodeBlur.sizex -> sizex: int +CompositorNodeBlur.sizey -> sizey: int +CompositorNodeChannelMatte.algorithm -> algorithm: enum Algorithm to use to limit channel +CompositorNodeChannelMatte.channel -> channel: enum Channel used to determine matte +CompositorNodeChannelMatte.color_space -> color_space: enum +CompositorNodeChannelMatte.high -> high: float Values higher than this setting are 100% opaque +CompositorNodeChannelMatte.limit_channel -> limit_channel: enum Limit by this channels value +CompositorNodeChannelMatte.low -> low: float Values lower than this setting are 100% keyed +CompositorNodeChromaMatte.acceptance -> acceptance: float Tolerance for a color to be considered a keying color +CompositorNodeChromaMatte.cutoff -> cutoff: float Tolerance below which colors will be considered as exact matches +CompositorNodeChromaMatte.gain -> gain: float Alpha gain +CompositorNodeChromaMatte.lift -> lift: float Alpha lift +CompositorNodeChromaMatte.shadow_adjust -> shadow_adjust: float Adjusts the brightness of any shadows captured +CompositorNodeColorBalance.correction_formula -> correction_formula: enum +CompositorNodeColorBalance.gain -> gain: float Correction for Highlights +CompositorNodeColorBalance.gamma -> gamma: float Correction for Midtones +CompositorNodeColorBalance.lift -> lift: float Correction for Shadows +CompositorNodeColorBalance.offset -> offset: float Correction for Shadows +CompositorNodeColorBalance.power -> power: float Correction for Midtones +CompositorNodeColorBalance.slope -> slope: float Correction for Highlights +CompositorNodeColorMatte.h -> h: float Hue tolerance for colors to be considered a keying color +CompositorNodeColorMatte.s -> s: float Saturation Tolerance for the color +CompositorNodeColorMatte.v -> v: float Value Tolerance for the color +CompositorNodeColorSpill.algorithm -> algorithm: enum +CompositorNodeColorSpill.channel -> channel: enum +CompositorNodeColorSpill.limit_channel -> limit_channel: enum +CompositorNodeColorSpill.ratio -> ratio: float Scale limit by value +CompositorNodeColorSpill.unspill_blue -> unspill_blue: float Blue spillmap scale +CompositorNodeColorSpill.unspill_green -> unspill_green: float Green spillmap scale +CompositorNodeColorSpill.unspill_red -> unspill_red: float Red spillmap scale +CompositorNodeCrop.x1 -> x1: int +CompositorNodeCrop.x2 -> x2: int +CompositorNodeCrop.y1 -> y1: int +CompositorNodeCrop.y2 -> y2: int +CompositorNodeCurveRGB.mapping -> mapping: pointer, (read-only) +CompositorNodeCurveVec.mapping -> mapping: pointer, (read-only) +CompositorNodeDBlur.angle -> angle: float +CompositorNodeDBlur.center_x -> center_x: float +CompositorNodeDBlur.center_y -> center_y: float +CompositorNodeDBlur.distance -> distance: float +CompositorNodeDBlur.iterations -> iterations: int +CompositorNodeDBlur.spin -> spin: float +CompositorNodeDBlur.zoom -> zoom: float +CompositorNodeDefocus.angle -> angle: int Bokeh shape rotation offset in degrees +CompositorNodeDefocus.bokeh -> bokeh: enum +CompositorNodeDefocus.f_stop -> f_stop: float Amount of focal blur, 128=infinity=perfect focus, half the value doubles the blur radius +CompositorNodeDefocus.max_blur -> max_blur: float blur limit, maximum CoC radius, 0=no limit +CompositorNodeDefocus.samples -> samples: int Number of samples (16=grainy, higher=less noise) +CompositorNodeDefocus.threshold -> threshold: float CoC radius threshold, prevents background bleed on in-focus midground, 0=off +CompositorNodeDefocus.z_scale -> z_scale: float Scales the Z input when not using a zbuffer, controls maximum blur designated by the color white or input value 1 +CompositorNodeDiffMatte.falloff -> falloff: float Color distances below this additional threshold are partially keyed +CompositorNodeDiffMatte.tolerance -> tolerance: float Color distances below this threshold are keyed +CompositorNodeDilateErode.distance -> distance: int Distance to grow/shrink (number of iterations) +CompositorNodeDistanceMatte.falloff -> falloff: float Color distances below this additional threshold are partially keyed +CompositorNodeDistanceMatte.tolerance -> tolerance: float Color distances below this threshold are keyed +CompositorNodeFilter.filter_type -> filter_type: enum +CompositorNodeFlip.axis -> axis: enum +CompositorNodeGlare.angle_offset -> angle_offset: float Streak angle offset in degrees +CompositorNodeGlare.color_modulation -> color_modulation: float Amount of Color Modulation, modulates colors of streaks and ghosts for a spectral dispersion effect +CompositorNodeGlare.fade -> fade: float Streak fade-out factor +CompositorNodeGlare.glare_type -> glare_type: enum +CompositorNodeGlare.iterations -> iterations: int +CompositorNodeGlare.mix -> mix: float -1 is original image only, 0 is exact 50/50 mix, 1 is processed image only +CompositorNodeGlare.quality -> quality: enum If not set to high quality, the effect will be applied to a low-res copy of the source image +CompositorNodeGlare.size -> size: int Glow/glare size (not actual size; relative to initial size of bright area of pixels) +CompositorNodeGlare.streaks -> streaks: int Total number of streaks +CompositorNodeGlare.threshold -> threshold: float The glare filter will only be applied to pixels brighter than this value +CompositorNodeHueCorrect.mapping -> mapping: pointer, (read-only) +CompositorNodeHueSat.hue -> hue: float +CompositorNodeHueSat.sat -> sat: float +CompositorNodeHueSat.val -> val: float +CompositorNodeIDMask.index -> index: int Pass index number to convert to alpha +CompositorNodeImage.frames -> frames: int Number of images used in animation +CompositorNodeImage.image -> image: pointer +CompositorNodeImage.layer -> layer: enum +CompositorNodeImage.offset -> offset: int Offsets the number of the frame to use in the animation +CompositorNodeImage.start -> start: int +CompositorNodeLevels.channel -> channel: enum +CompositorNodeLumaMatte.high -> high: float Values higher than this setting are 100% opaque +CompositorNodeLumaMatte.low -> low: float Values lower than this setting are 100% keyed +CompositorNodeMapUV.alpha -> alpha: int +CompositorNodeMapValue.max -> max: float +CompositorNodeMapValue.min -> min: float +CompositorNodeMapValue.offset -> offset: float +CompositorNodeMapValue.size -> size: float +CompositorNodeMath.operation -> operation: enum +CompositorNodeMixRGB.blend_type -> blend_type: enum +CompositorNodeOutputFile.exr_codec -> exr_codec: enum +CompositorNodeOutputFile.filepath -> filepath: string Output path for the image, same functionality as render output. +CompositorNodeOutputFile.frame_end -> frame_end: int +CompositorNodeOutputFile.frame_start -> frame_start: int +CompositorNodeOutputFile.image_type -> image_type: enum +CompositorNodeOutputFile.quality -> quality: int +CompositorNodePremulKey.mapping -> mapping: enum Conversion between premultiplied alpha and key alpha +CompositorNodeRLayers.layer -> layer: enum +CompositorNodeRLayers.scene -> scene: pointer +CompositorNodeRotate.filter -> filter: enum Method to use to filter rotation +CompositorNodeScale.space -> space: enum Coordinate space to scale relative to +CompositorNodeSplitViewer.axis -> axis: enum +CompositorNodeSplitViewer.factor -> factor: int +CompositorNodeTexture.node_output -> node_output: int For node-based textures, which output node to use +CompositorNodeTexture.texture -> texture: pointer +CompositorNodeTime.curve -> curve: pointer, (read-only) +CompositorNodeTime.end -> end: int +CompositorNodeTime.start -> start: int +CompositorNodeTonemap.adaptation -> adaptation: float If 0, global; if 1, based on pixel intensity +CompositorNodeTonemap.contrast -> contrast: float Set to 0 to use estimate from input image +CompositorNodeTonemap.correction -> correction: float If 0, same for all channels; if 1, each independent +CompositorNodeTonemap.gamma -> gamma: float If not used, set to 1 +CompositorNodeTonemap.intensity -> intensity: float If less than zero, darkens image; otherwise, makes it brighter +CompositorNodeTonemap.key -> key: float The value the average luminance is mapped to +CompositorNodeTonemap.offset -> offset: float Normally always 1, but can be used as an extra control to alter the brightness curve +CompositorNodeTonemap.tonemap_type -> tonemap_type: enum +CompositorNodeValToRGB.color_ramp -> color_ramp: pointer, (read-only) +CompositorNodeVecBlur.factor -> factor: float Scaling factor for motion vectors; actually 'shutter speed' in frames +CompositorNodeVecBlur.max_speed -> max_speed: int Maximum speed, or zero for none +CompositorNodeVecBlur.min_speed -> min_speed: int Minimum speed for a pixel to be blurred; used to separate background from foreground +CompositorNodeVecBlur.samples -> samples: int +ConsoleLine.current_character -> current_character: int +ConsoleLine.line -> line: string Text in the line +Constraint.influence -> influence: float Amount of influence constraint will have on the final solution +Constraint.lin_error -> lin_error: float, (read-only) Amount of residual error in Blender space unit for constraints that work on position +Constraint.name -> name: string Constraint name +Constraint.owner_space -> owner_space: enum Space that owner is evaluated in +Constraint.rot_error -> rot_error: float, (read-only) Amount of residual error in radiant for constraints that work on orientation +Constraint.target_space -> target_space: enum Space that target is evaluated in +Constraint.type -> type: enum, (read-only) +ConstraintActuator.damping -> damping: int Damping factor: time constant (in frame) of low pass filter +ConstraintActuator.damping_rotation -> damping_rotation: int Use a different damping for orientation +ConstraintActuator.direction -> direction: enum Set the direction of the ray +ConstraintActuator.direction_axis -> direction_axis: enum Select the axis to be aligned along the reference direction +ConstraintActuator.distance -> distance: float Set the maximum length of ray +ConstraintActuator.fh_damping -> fh_damping: float Damping factor of the Fh spring force +ConstraintActuator.fh_height -> fh_height: float Height of the Fh area +ConstraintActuator.limit -> limit: enum +ConstraintActuator.limit_max -> limit_max: float +ConstraintActuator.limit_min -> limit_min: float +ConstraintActuator.material -> material: string Ray detects only Objects with this material +ConstraintActuator.max_angle -> max_angle: float Maximum angle (in degree) allowed with target direction. No correction is done if angle with target direction is between min and max +ConstraintActuator.max_rotation -> max_rotation: float Reference Direction +ConstraintActuator.min_angle -> min_angle: float Minimum angle (in degree) to maintain with target direction. No correction is done if angle with target direction is between min and max +ConstraintActuator.mode -> mode: enum The type of the constraint +ConstraintActuator.property -> property: string Ray detect only Objects with this property +ConstraintActuator.range -> range: float Set the maximum length of ray +ConstraintActuator.spring -> spring: float Spring force within the Fh area +ConstraintActuator.time -> time: int Maximum activation time in frame, 0 for unlimited +ConstraintTarget.subtarget -> subtarget: string +ConstraintTarget.target -> target: pointer Target Object +Context.area -> area: pointer, (read-only) +Context.main -> main: pointer, (read-only) +Context.manager -> manager: pointer, (read-only) +Context.mode -> mode: enum, (read-only) +Context.region -> region: pointer, (read-only) +Context.scene -> scene: pointer, (read-only) +Context.screen -> screen: pointer, (read-only) +Context.space_data -> space_data: pointer, (read-only) +Context.tool_settings -> tool_settings: pointer, (read-only) +Context.user_preferences -> user_preferences: pointer, (read-only) +Context.window -> window: pointer, (read-only) +ControlFluidSettings.attraction_radius -> attraction_radius: float Specifies the force field radius around the control object +ControlFluidSettings.attraction_strength -> attraction_strength: float Force strength for directional attraction towards the control object +ControlFluidSettings.end_time -> end_time: float Specifies time when the control particles are deactivated +ControlFluidSettings.quality -> quality: float Specifies the quality which is used for object sampling. (higher = better but slower) +ControlFluidSettings.start_time -> start_time: float Specifies time when the control particles are activated +ControlFluidSettings.velocity_radius -> velocity_radius: float Specifies the force field radius around the control object +ControlFluidSettings.velocity_strength -> velocity_strength: float Force strength of how much of the control object's velocity is influencing the fluid velocity +Controller.name -> name: string +Controller.state_number -> state_number: int Set Controller state index (1 to 30) +Controller.type -> type: enum +CopyLocationConstraint.head_tail -> head_tail: float Target along length of bone: Head=0, Tail=1 +CopyLocationConstraint.subtarget -> subtarget: string +CopyLocationConstraint.target -> target: pointer Target Object +CopyRotationConstraint.subtarget -> subtarget: string +CopyRotationConstraint.target -> target: pointer Target Object +CopyScaleConstraint.subtarget -> subtarget: string +CopyScaleConstraint.target -> target: pointer Target Object +CopyTransformsConstraint.head_tail -> head_tail: float Target along length of bone: Head=0, Tail=1 +CopyTransformsConstraint.subtarget -> subtarget: string +CopyTransformsConstraint.target -> target: pointer Target Object +Curve.animation_data -> animation_data: pointer, (read-only) Animation data for this datablock +Curve.bevel_depth -> bevel_depth: float Bevel depth when not using a bevel object +Curve.bevel_object -> bevel_object: pointer Curve object name that defines the bevel shape +Curve.bevel_resolution -> bevel_resolution: int Bevel resolution when depth is non-zero and no specific bevel object has been defined +Curve.dimensions -> dimensions: enum Select 2D or 3D curve type +Curve.eval_time -> eval_time: float Parametric position along the length of the curve that Objects 'following' it should be at. Position is evaluated by dividing by the 'Path Length' value +Curve.extrude -> extrude: float Amount of curve extrusion when not using a bevel object +Curve.materials -> materials: collection, (read-only) +Curve.path_length -> path_length: int The number of frames that are needed to traverse the path, defining the maximum value for the 'Evaluation Time' setting +Curve.render_resolution_u -> render_resolution_u: int Surface resolution in U direction used while rendering. Zero skips this property +Curve.render_resolution_v -> render_resolution_v: int Surface resolution in V direction used while rendering. Zero skips this property +Curve.resolution_u -> resolution_u: int Surface resolution in U direction +Curve.resolution_v -> resolution_v: int Surface resolution in V direction +Curve.shape_keys -> shape_keys: pointer, (read-only) +Curve.splines -> splines: collection, (read-only) Collection of splines in this curve data object +Curve.taper_object -> taper_object: pointer Curve object name that defines the taper (width) +Curve.texspace_loc -> texspace_loc: float Texture space location +Curve.texspace_size -> texspace_size: float Texture space size +Curve.twist_mode -> twist_mode: enum The type of tilt calculation for 3D Curves +Curve.twist_smooth -> twist_smooth: float Smoothing iteration for tangents +Curve.width -> width: float Scale the original width (1.0) based on given factor +CurveMap.extend -> extend: enum, (read-only) Extrapolate the curve or extend it horizontally +CurveMap.points -> points: collection, (read-only) +CurveMapPoint.handle_type -> handle_type: enum, (read-only) Curve interpolation at this point: bezier or vector +CurveMapPoint.location -> location: float, (read-only) X/Y coordinates of the curve point +CurveMapping.black_level -> black_level: float For RGB curves, the color that black is mapped to +CurveMapping.clip_max_x -> clip_max_x: float +CurveMapping.clip_max_y -> clip_max_y: float +CurveMapping.clip_min_x -> clip_min_x: float +CurveMapping.clip_min_y -> clip_min_y: float +CurveMapping.curves -> curves: collection, (read-only) +CurveMapping.white_level -> white_level: float For RGB curves, the color that white is mapped to +CurveModifier.deform_axis -> deform_axis: enum The axis that the curve deforms along +CurveModifier.object -> object: pointer Curve object to deform with +CurveModifier.vertex_group -> vertex_group: string Vertex group name +CurveSplines.active -> active: pointer Active curve spline +DampedTrackConstraint.subtarget -> subtarget: string +DampedTrackConstraint.target -> target: pointer Target Object +DampedTrackConstraint.track -> track: enum Axis that points to the target object +DecimateModifier.face_count -> face_count: int, (read-only) The current number of faces in the decimated mesh +DecimateModifier.ratio -> ratio: float Defines the ratio of triangles to reduce to +DelaySensor.delay -> delay: int Delay in number of logic tics before the positive trigger (default 60 per second) +DelaySensor.duration -> duration: int If >0, delay in number of logic tics before the negative trigger following the positive trigger +DisplaceModifier.direction -> direction: enum +DisplaceModifier.midlevel -> midlevel: float Material value that gives no displacement +DisplaceModifier.strength -> strength: float +DisplaceModifier.texture -> texture: pointer +DisplaceModifier.texture_coordinate_object -> texture_coordinate_object: pointer +DisplaceModifier.texture_coordinates -> texture_coordinates: enum +DisplaceModifier.uv_layer -> uv_layer: string UV layer name +DisplaceModifier.vertex_group -> vertex_group: string Vertex group name +DistortedNoiseTexture.distortion -> distortion: float +DistortedNoiseTexture.nabla -> nabla: float Size of derivative offset used for calculating normal +DistortedNoiseTexture.noise_basis -> noise_basis: enum Sets the noise basis used for turbulence +DistortedNoiseTexture.noise_distortion -> noise_distortion: enum Sets the noise basis for the distortion +DistortedNoiseTexture.noise_size -> noise_size: float Sets scaling for noise input +DomainFluidSettings.compressibility -> compressibility: float Allowed compressibility due to gravitational force for standing fluid. (directly affects simulation step size) +DomainFluidSettings.end_time -> end_time: float Simulation time of the last blender frame +DomainFluidSettings.generate_particles -> generate_particles: float Amount of particles to generate (0=off, 1=normal, >1=more) +DomainFluidSettings.gravity -> gravity: float Gravity in X, Y and Z direction +DomainFluidSettings.grid_levels -> grid_levels: int Number of coarsened grids to use (-1 for automatic) +DomainFluidSettings.memory_estimate -> memory_estimate: string, (read-only) Estimated amount of memory needed for baking the domain +DomainFluidSettings.partial_slip_factor -> partial_slip_factor: float Amount of mixing between no- and free-slip, 0 is no slip and 1 is free slip +DomainFluidSettings.path -> path: string Directory (and/or filename prefix) to store baked fluid simulation files in +DomainFluidSettings.preview_resolution -> preview_resolution: int Preview resolution in X,Y and Z direction +DomainFluidSettings.real_world_size -> real_world_size: float Size of the simulation domain in metres +DomainFluidSettings.render_display_mode -> render_display_mode: enum How to display the mesh for rendering +DomainFluidSettings.resolution -> resolution: int Domain resolution in X,Y and Z direction +DomainFluidSettings.slip_type -> slip_type: enum +DomainFluidSettings.start_time -> start_time: float Simulation time of the first blender frame +DomainFluidSettings.surface_smoothing -> surface_smoothing: float Amount of surface smoothing. A value of 0 is off, 1 is normal smoothing and more than 1 is extra smoothing +DomainFluidSettings.surface_subdivisions -> surface_subdivisions: int Number of isosurface subdivisions. This is necessary for the inclusion of particles into the surface generation. Warning - can lead to longer computation times! +DomainFluidSettings.tracer_particles -> tracer_particles: int Number of tracer particles to generate +DomainFluidSettings.viewport_display_mode -> viewport_display_mode: enum How to display the mesh in the viewport +DomainFluidSettings.viscosity_base -> viscosity_base: float Viscosity setting: value that is multiplied by 10 to the power of (exponent*-1) +DomainFluidSettings.viscosity_exponent -> viscosity_exponent: int Negative exponent for the viscosity value (to simplify entering small values e.g. 5*10^-6.) +DomainFluidSettings.viscosity_preset -> viscosity_preset: enum Set viscosity of the fluid to a preset value, or use manual input +DopeSheet.filtering_group -> filtering_group: pointer Group that included Object should be a member of +DopeSheet.source -> source: pointer, (read-only) ID-Block representing source data, currently ID_SCE (for Dopesheet), and ID_SC (for Grease Pencil) +Driver.expression -> expression: string Expression to use for Scripted Expression +Driver.type -> type: enum Driver type +Driver.variables -> variables: collection, (read-only) Properties acting as inputs for this driver +DriverTarget.bone_target -> bone_target: string Name of PoseBone to use as target +DriverTarget.data_path -> data_path: string RNA Path (from ID-block) to property used +DriverTarget.id -> id: pointer ID-block that the specific property used can be found from (id_type property must be set first) +DriverTarget.id_type -> id_type: enum Type of ID-block that can be used +DriverTarget.transform_type -> transform_type: enum Driver variable type +DriverVariable.name -> name: string Name to use in scripted expressions/functions. (No spaces or dots are allowed. Also, must not start with a symbol or digit) +DriverVariable.targets -> targets: collection, (read-only) Sources of input data for evaluating this variable +DriverVariable.type -> type: enum Driver variable type +DupliObject.matrix -> matrix: float Object duplicate transformation matrix +DupliObject.object -> object: pointer, (read-only) Object being duplicated +DupliObject.object_matrix -> object_matrix: float Duplicated object transformation matrix +EdgeSplitModifier.split_angle -> split_angle: float Angle above which to split edges +EditBone.bbone_in -> bbone_in: float Length of first Bezier Handle (for B-Bones only) +EditBone.bbone_out -> bbone_out: float Length of second Bezier Handle (for B-Bones only) +EditBone.bbone_segments -> bbone_segments: int Number of subdivisions of bone (for B-Bones only) +EditBone.envelope_distance -> envelope_distance: float Bone deformation distance (for Envelope deform only) +EditBone.envelope_weight -> envelope_weight: float Bone deformation weight (for Envelope deform only) +EditBone.head -> head: float Location of head end of the bone +EditBone.head_radius -> head_radius: float Radius of head of bone (for Envelope deform only) +EditBone.matrix -> matrix: float, (read-only) Read-only matrix calculated from the roll (armature space) +EditBone.name -> name: string +EditBone.parent -> parent: pointer Parent edit bone (in same Armature) +EditBone.roll -> roll: float Bone rotation around head-tail axis +EditBone.tail -> tail: float Location of tail end of the bone +EditBone.tail_radius -> tail_radius: float Radius of tail of bone (for Envelope deform only) +EditObjectActuator.angular_velocity -> angular_velocity: float Angular velocity upon creation +EditObjectActuator.dynamic_operation -> dynamic_operation: enum +EditObjectActuator.linear_velocity -> linear_velocity: float Velocity upon creation +EditObjectActuator.mass -> mass: float The mass of the object +EditObjectActuator.mesh -> mesh: pointer Replace the existing, when left blank 'Phys' will remake the existing physics mesh +EditObjectActuator.mode -> mode: enum The mode of the actuator +EditObjectActuator.object -> object: pointer Add this Object and all its children (cant be on an visible layer) +EditObjectActuator.time -> time: int Duration the new Object lives or the track takes +EditObjectActuator.track_object -> track_object: pointer Track to this Object +EffectSequence.color_balance -> color_balance: pointer, (read-only) +EffectSequence.crop -> crop: pointer, (read-only) +EffectSequence.multiply_colors -> multiply_colors: float +EffectSequence.proxy -> proxy: pointer, (read-only) +EffectSequence.strobe -> strobe: float Only display every nth frame +EffectSequence.transform -> transform: pointer, (read-only) +EffectorWeights.all -> all: float All effector's weight +EffectorWeights.boid -> boid: float Boid effector weight +EffectorWeights.charge -> charge: float Charge effector weight +EffectorWeights.curveguide -> curveguide: float Curve guide effector weight +EffectorWeights.drag -> drag: float Drag effector weight +EffectorWeights.force -> force: float Force effector weight +EffectorWeights.gravity -> gravity: float Global gravity weight +EffectorWeights.group -> group: pointer Limit effectors to this Group +EffectorWeights.harmonic -> harmonic: float Harmonic effector weight +EffectorWeights.lennardjones -> lennardjones: float Lennard-Jones effector weight +EffectorWeights.magnetic -> magnetic: float Magnetic effector weight +EffectorWeights.texture -> texture: float Texture effector weight +EffectorWeights.turbulence -> turbulence: float Turbulence effector weight +EffectorWeights.vortex -> vortex: float Vortex effector weight +EffectorWeights.wind -> wind: float Wind effector weight +EnumProperty.default -> default: enum, (read-only) Default value for this enum +EnumProperty.items -> items: collection, (read-only) Possible values for the property +EnumPropertyItem.description -> description: string, (read-only) Description of the item's purpose +EnumPropertyItem.identifier -> identifier: string, (read-only) Unique name used in the code and scripting +EnumPropertyItem.name -> name: string, (read-only) Human readable name +EnumPropertyItem.value -> value: int, (read-only) Value of the item +EnvironmentMap.clip_end -> clip_end: float Objects further than this are not visible to map +EnvironmentMap.clip_start -> clip_start: float Objects nearer than this are not visible to map +EnvironmentMap.depth -> depth: int Number of times a map will be rendered recursively (mirror effects.) +EnvironmentMap.mapping -> mapping: enum +EnvironmentMap.resolution -> resolution: int Pixel resolution of the rendered environment map +EnvironmentMap.source -> source: enum +EnvironmentMap.viewpoint_object -> viewpoint_object: pointer Object to use as the environment map's viewpoint location +EnvironmentMap.zoom -> zoom: float +EnvironmentMapTexture.environment_map -> environment_map: pointer, (read-only) Gets the environment map associated with this texture +EnvironmentMapTexture.filter -> filter: enum Texture filter to use for sampling image +EnvironmentMapTexture.filter_eccentricity -> filter_eccentricity: int Maximum eccentricity. Higher gives less blur at distant/oblique angles, but is also slower +EnvironmentMapTexture.filter_probes -> filter_probes: int Maximum number of samples. Higher gives less blur at distant/oblique angles, but is also slower +EnvironmentMapTexture.filter_size -> filter_size: float Multiplies the filter size used by MIP Map and Interpolation +EnvironmentMapTexture.image -> image: pointer Source image file to read the environment map from +EnvironmentMapTexture.image_user -> image_user: pointer, (read-only) Parameters defining which layer, pass and frame of the image is displayed +Event.ascii -> ascii: string, (read-only) Single ASCII character for this event +Event.mouse_prev_x -> mouse_prev_x: int, (read-only) The window relative vertical location of the mouse +Event.mouse_prev_y -> mouse_prev_y: int, (read-only) The window relative horizontal location of the mouse +Event.mouse_region_x -> mouse_region_x: int, (read-only) The region relative vertical location of the mouse +Event.mouse_region_y -> mouse_region_y: int, (read-only) The region relative horizontal location of the mouse +Event.mouse_x -> mouse_x: int, (read-only) The window relative vertical location of the mouse +Event.mouse_y -> mouse_y: int, (read-only) The window relative horizontal location of the mouse +Event.type -> type: enum, (read-only) +Event.value -> value: enum, (read-only) The type of event, only applies to some +ExplodeModifier.protect -> protect: float Clean vertex group edges +ExplodeModifier.vertex_group -> vertex_group: string +ExpressionController.expression -> expression: string +FCurve.array_index -> array_index: int Index to the specific property affected by F-Curve if applicable +FCurve.color -> color: float Color of the F-Curve in the Graph Editor +FCurve.color_mode -> color_mode: enum Method used to determine color of F-Curve in Graph Editor +FCurve.data_path -> data_path: string RNA Path to property affected by F-Curve +FCurve.driver -> driver: pointer, (read-only) Channel Driver (only set for Driver F-Curves) +FCurve.extrapolation -> extrapolation: enum +FCurve.group -> group: pointer Action Group that this F-Curve belongs to +FCurve.keyframe_points -> keyframe_points: collection, (read-only) User-editable keyframes +FCurve.modifiers -> modifiers: collection, (read-only) Modifiers affecting the shape of the F-Curve +FCurve.sampled_points -> sampled_points: collection, (read-only) Sampled animation data +FCurveModifiers.active -> active: pointer Active F-Curve Modifier +FCurveSample.co -> co: float Point coordinates +FModifier.type -> type: enum, (read-only) F-Curve Modifier Type +FModifierCycles.after_cycles -> after_cycles: float Maximum number of cycles to allow after last keyframe. (0 = infinite) +FModifierCycles.after_mode -> after_mode: enum Cycling mode to use after last keyframe +FModifierCycles.before_cycles -> before_cycles: float Maximum number of cycles to allow before first keyframe. (0 = infinite) +FModifierCycles.before_mode -> before_mode: enum Cycling mode to use before first keyframe +FModifierEnvelope.control_points -> control_points: collection, (read-only) Control points defining the shape of the envelope +FModifierEnvelope.default_maximum -> default_maximum: float Upper distance from Reference Value for 1:1 default influence +FModifierEnvelope.default_minimum -> default_minimum: float Lower distance from Reference Value for 1:1 default influence +FModifierEnvelope.reference_value -> reference_value: float Value that envelope's influence is centered around / based on +FModifierEnvelopeControlPoint.frame -> frame: float Frame this control-point occurs on +FModifierEnvelopeControlPoint.maximum -> maximum: float Upper bound of envelope at this control-point +FModifierEnvelopeControlPoint.minimum -> minimum: float Lower bound of envelope at this control-point +FModifierFunctionGenerator.amplitude -> amplitude: float Scale factor determining the maximum/minimum values +FModifierFunctionGenerator.function_type -> function_type: enum Type of built-in function to use +FModifierFunctionGenerator.phase_multiplier -> phase_multiplier: float Scale factor determining the 'speed' of the function +FModifierFunctionGenerator.phase_offset -> phase_offset: float Constant factor to offset time by for function +FModifierFunctionGenerator.value_offset -> value_offset: float Constant factor to offset values by +FModifierGenerator.coefficients -> coefficients: float Coefficients for 'x' (starting from lowest power of x^0) +FModifierGenerator.mode -> mode: enum Type of generator to use +FModifierGenerator.poly_order -> poly_order: int The highest power of 'x' for this polynomial. (number of coefficients - 1) +FModifierLimits.maximum_x -> maximum_x: float Highest X value to allow +FModifierLimits.maximum_y -> maximum_y: float Highest Y value to allow +FModifierLimits.minimum_x -> minimum_x: float Lowest X value to allow +FModifierLimits.minimum_y -> minimum_y: float Lowest Y value to allow +FModifierNoise.depth -> depth: int Amount of fine level detail present in the noise +FModifierNoise.modification -> modification: enum Method of modifying the existing F-Curve +FModifierNoise.phase -> phase: float A random seed for the noise effect +FModifierNoise.size -> size: float Scaling (in time) of the noise +FModifierNoise.strength -> strength: float Amplitude of the noise - the amount that it modifies the underlying curve +FModifierStepped.frame_end -> frame_end: float Frame that modifier's influence ends (if applicable) +FModifierStepped.frame_start -> frame_start: float Frame that modifier's influence starts (if applicable) +FModifierStepped.offset -> offset: float Reference number of frames before frames get held. Use to get hold for '1-3' vs '5-7' holding patterns +FModifierStepped.step_size -> step_size: float Number of frames to hold each value +FcurveActuator.frame_end -> frame_end: int +FcurveActuator.frame_property -> frame_property: string Assign the action's current frame number to this property +FcurveActuator.frame_start -> frame_start: int +FcurveActuator.play_type -> play_type: enum Specify the way you want to play the animation +FcurveActuator.property -> property: string Use this property to define the F-Curve position +FieldSettings.falloff_power -> falloff_power: float Falloff power (real gravitational falloff = 2) +FieldSettings.falloff_type -> falloff_type: enum Fall-off shape +FieldSettings.flow -> flow: float Convert effector force into air flow velocity +FieldSettings.guide_clump_amount -> guide_clump_amount: float Amount of clumping +FieldSettings.guide_clump_shape -> guide_clump_shape: float Shape of clumping +FieldSettings.guide_free -> guide_free: float Guide-free time from particle life's end +FieldSettings.guide_kink_amplitude -> guide_kink_amplitude: float The amplitude of the offset +FieldSettings.guide_kink_axis -> guide_kink_axis: enum Which axis to use for offset +FieldSettings.guide_kink_frequency -> guide_kink_frequency: float The frequency of the offset (1/total length) +FieldSettings.guide_kink_shape -> guide_kink_shape: float Adjust the offset to the beginning/end +FieldSettings.guide_kink_type -> guide_kink_type: enum Type of periodic offset on the curve +FieldSettings.guide_minimum -> guide_minimum: float The distance from which particles are affected fully +FieldSettings.harmonic_damping -> harmonic_damping: float Damping of the harmonic force +FieldSettings.inflow -> inflow: float Inwards component of the vortex force +FieldSettings.linear_drag -> linear_drag: float Drag component proportional to velocity +FieldSettings.maximum_distance -> maximum_distance: float Maximum distance for the field to work +FieldSettings.minimum_distance -> minimum_distance: float Minimum distance for the field's fall-off +FieldSettings.noise -> noise: float Noise of the force +FieldSettings.quadratic_drag -> quadratic_drag: float Drag component proportional to the square of velocity +FieldSettings.radial_falloff -> radial_falloff: float Radial falloff power (real gravitational falloff = 2) +FieldSettings.radial_maximum -> radial_maximum: float Maximum radial distance for the field to work +FieldSettings.radial_minimum -> radial_minimum: float Minimum radial distance for the field's fall-off +FieldSettings.rest_length -> rest_length: float Rest length of the harmonic force +FieldSettings.seed -> seed: int Seed of the noise +FieldSettings.shape -> shape: enum Which direction is used to calculate the effector force +FieldSettings.size -> size: float Size of the noise +FieldSettings.strength -> strength: float Strength of force field +FieldSettings.texture -> texture: pointer Texture to use as force +FieldSettings.texture_mode -> texture_mode: enum How the texture effect is calculated (RGB & Curl need a RGB texture else Gradient will be used instead) +FieldSettings.texture_nabla -> texture_nabla: float Defines size of derivative offset used for calculating gradient and curl +FieldSettings.type -> type: enum Type of field +FieldSettings.z_direction -> z_direction: enum Effect in full or only positive/negative Z direction +FileSelectParams.directory -> directory: string Directory displayed in the file browser +FileSelectParams.display -> display: enum Display mode for the file list +FileSelectParams.file -> file: string Active file in the file browser +FileSelectParams.sort -> sort: enum +FileSelectParams.title -> title: string, (read-only) Title for the file browser +Filter2DActuator.filter_pass -> filter_pass: int Set filter order +Filter2DActuator.glsl_shader -> glsl_shader: pointer +Filter2DActuator.mode -> mode: enum +Filter2DActuator.motion_blur_value -> motion_blur_value: float Set motion blur value +FloatProperty.array_length -> array_length: int, (read-only) Maximum length of the array, 0 means unlimited +FloatProperty.default -> default: float, (read-only) Default value for this number +FloatProperty.default_array -> default_array: float, (read-only) Default value for this array +FloatProperty.hard_max -> hard_max: float, (read-only) Maximum value used by buttons +FloatProperty.hard_min -> hard_min: float, (read-only) Minimum value used by buttons +FloatProperty.precision -> precision: int, (read-only) Number of digits after the dot used by buttons +FloatProperty.soft_max -> soft_max: float, (read-only) Maximum value used by buttons +FloatProperty.soft_min -> soft_min: float, (read-only) Minimum value used by buttons +FloatProperty.step -> step: float, (read-only) Step size used by number buttons, for floats 1/100th of the step size +FloorConstraint.floor_location -> floor_location: enum Location of target that object will not pass through +FloorConstraint.offset -> offset: float Offset of floor from object origin +FloorConstraint.subtarget -> subtarget: string +FloorConstraint.target -> target: pointer Target Object +FluidFluidSettings.initial_velocity -> initial_velocity: float Initial velocity of fluid +FluidFluidSettings.volume_initialization -> volume_initialization: enum Volume initialization type +FluidSettings.type -> type: enum Type of participation in the fluid simulation +FluidSimulationModifier.settings -> settings: pointer, (read-only) Settings for how this object is used in the fluid simulation +FollowPathConstraint.forward -> forward: enum Axis that points forward along the path +FollowPathConstraint.offset -> offset: int Offset from the position corresponding to the time frame +FollowPathConstraint.offset_factor -> offset_factor: float Percentage value defining target position along length of bone +FollowPathConstraint.target -> target: pointer Target Object +FollowPathConstraint.up -> up: enum Axis that points upward +Function.description -> description: string, (read-only) Description of the Function's purpose +Function.identifier -> identifier: string, (read-only) Unique name used in the code and scripting +Function.parameters -> parameters: collection, (read-only) Parameters for the function +GPencilFrame.frame_number -> frame_number: int The frame on which this sketch appears +GPencilFrame.strokes -> strokes: collection, (read-only) Freehand curves defining the sketch on this frame +GPencilLayer.active_frame -> active_frame: pointer, (read-only) Frame currently being displayed for this layer +GPencilLayer.color -> color: float Color for all strokes in this layer +GPencilLayer.frames -> frames: collection, (read-only) Sketches for this layer on different frames +GPencilLayer.info -> info: string Layer name +GPencilLayer.line_thickness -> line_thickness: int Thickness of strokes (in pixels) +GPencilLayer.max_ghost_range -> max_ghost_range: int Maximum number of frames on either side of the active frame to show (0 = show the 'first' available sketch on either side) +GPencilLayer.opacity -> opacity: float Layer Opacity +GPencilStroke.points -> points: collection, (read-only) Stroke data points +GPencilStrokePoint.co -> co: float +GPencilStrokePoint.pressure -> pressure: float Pressure of tablet at point when drawing it +GameActuator.filename -> filename: string Load this blend file, use the "//" prefix for a path relative to the current blend file +GameActuator.mode -> mode: enum +GameFloatProperty.value -> value: float Property value +GameIntProperty.value -> value: int Property value +GameObjectSettings.actuators -> actuators: collection, (read-only) Game engine actuators to act on events +GameObjectSettings.collision_bounds -> collision_bounds: enum Selects the collision type +GameObjectSettings.collision_margin -> collision_margin: float Extra margin around object for collision detection, small amount required for stability +GameObjectSettings.controllers -> controllers: collection, (read-only) Game engine controllers to process events, connecting sensor to actuators +GameObjectSettings.damping -> damping: float General movement damping +GameObjectSettings.form_factor -> form_factor: float Form factor scales the inertia tensor +GameObjectSettings.friction_coefficients -> friction_coefficients: float Relative friction coefficient in the in the X, Y and Z directions, when anisotropic friction is enabled +GameObjectSettings.mass -> mass: float Mass of the object +GameObjectSettings.maximum_velocity -> maximum_velocity: float Clamp velocity to this maximum speed +GameObjectSettings.minimum_velocity -> minimum_velocity: float Clamp velocity to this minimum speed (except when totally still) +GameObjectSettings.physics_type -> physics_type: enum Selects the type of physical representation +GameObjectSettings.properties -> properties: collection, (read-only) Game engine properties +GameObjectSettings.radius -> radius: float Radius of bounding sphere and material physics +GameObjectSettings.rotation_damping -> rotation_damping: float General rotation damping +GameObjectSettings.sensors -> sensors: collection, (read-only) Game engine sensor to detect events +GameObjectSettings.soft_body -> soft_body: pointer, (read-only) Settings for Bullet soft body simulation +GameProperty.name -> name: string Available as GameObject attributes in the game engine's python API +GameProperty.type -> type: enum +GameSoftBodySettings.cluster_iterations -> cluster_iterations: int Specify the number of cluster iterations +GameSoftBodySettings.dynamic_friction -> dynamic_friction: float Dynamic Friction +GameSoftBodySettings.linstiff -> linstiff: float Linear stiffness of the soft body links +GameSoftBodySettings.margin -> margin: float Collision margin for soft body. Small value makes the algorithm unstable +GameSoftBodySettings.position_iterations -> position_iterations: int Position solver iterations +GameSoftBodySettings.threshold -> threshold: float Shape matching threshold +GameSoftBodySettings.welding -> welding: float 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) +GameStringProperty.value -> value: string Property value +GameTimerProperty.value -> value: float Property value +GlowSequence.blur_distance -> blur_distance: float Radius of glow effect +GlowSequence.boost_factor -> boost_factor: float Brightness multiplier +GlowSequence.clamp -> clamp: float rightness limit of intensity +GlowSequence.quality -> quality: int Accuracy of the blur effect +GlowSequence.threshold -> threshold: float Minimum intensity to trigger a glow +GreasePencil.draw_mode -> draw_mode: enum +GreasePencil.layers -> layers: collection, (read-only) +Group.dupli_offset -> dupli_offset: float Offset from the origin to use when instancing as DupliGroup +Group.objects -> objects: collection, (read-only) A collection of this groups objects +Header.bl_idname -> bl_idname: string +Header.bl_space_type -> bl_space_type: enum +Header.layout -> layout: pointer, (read-only) +Histogram.mode -> mode: enum Channels to display when drawing the histogram +HookModifier.falloff -> falloff: float If not zero, the distance from the hook where influence ends +HookModifier.force -> force: float Relative force of the hook +HookModifier.object -> object: pointer Parent Object for hook, also recalculates and clears offset +HookModifier.subtarget -> subtarget: string Name of Parent Bone for hook (if applicable), also recalculates and clears offset +HookModifier.vertex_group -> vertex_group: string Vertex group name +ID.library -> library: pointer, (read-only) Library file the datablock is linked from +ID.name -> name: string Unique datablock ID name +ID.users -> users: int, (read-only) Number of times this datablock is referenced +IDProperty.collection -> collection: collection, (read-only) +IDProperty.double -> double: float +IDProperty.double_array -> double_array: float +IDProperty.float -> float: float +IDProperty.float_array -> float_array: float +IDProperty.group -> group: pointer, (read-only) +IDProperty.int -> int: int +IDProperty.int_array -> int_array: int +IDProperty.string -> string: string +IDPropertyGroup.name -> name: string Unique name used in the code and scripting +IKParam.ik_solver -> ik_solver: enum, (read-only) IK solver for which these parameters are defined, 0 for Legacy, 1 for iTaSC +Image.animation_end -> animation_end: int End frame of an animated texture +Image.animation_speed -> animation_speed: int Speed of the animation in frames per second +Image.animation_start -> animation_start: int Start frame of an animated texture +Image.bindcode -> bindcode: int, (read-only) OpenGL bindcode +Image.depth -> depth: int, (read-only) Image bit depth +Image.display_aspect -> display_aspect: float Display Aspect for this image, does not affect rendering +Image.field_order -> field_order: enum Order of video fields. Select which lines are displayed first +Image.file_format -> file_format: enum Format used for re-saving this file +Image.filepath -> filepath: string Image/Movie file name +Image.filepath_raw -> filepath_raw: string Image/Movie file name (without data refreshing) +Image.generated_height -> generated_height: int Generated image height +Image.generated_type -> generated_type: enum Generated image type +Image.generated_width -> generated_width: int Generated image width +Image.mapping -> mapping: enum Mapping type to use for this image in the game engine +Image.packed_file -> packed_file: pointer, (read-only) +Image.size -> size: int, (read-only) Width and height in pixels, zero when image data cant be loaded +Image.source -> source: enum Where the image comes from +Image.tiles_x -> tiles_x: int Degree of repetition in the X direction +Image.tiles_y -> tiles_y: int Degree of repetition in the Y direction +Image.type -> type: enum, (read-only) How to generate the image +ImagePaint.normal_angle -> normal_angle: int Paint most on faces pointing towards the view according to this angle +ImagePaint.screen_grab_size -> screen_grab_size: int Size to capture the image for re-projecting +ImagePaint.seam_bleed -> seam_bleed: int Extend paint beyond the faces UVs to reduce seams (in pixels, slower) +ImageSequence.animation_end_offset -> animation_end_offset: int Animation end offset (trim end) +ImageSequence.animation_start_offset -> animation_start_offset: int Animation start offset (trim start) +ImageSequence.color_balance -> color_balance: pointer, (read-only) +ImageSequence.crop -> crop: pointer, (read-only) +ImageSequence.directory -> directory: string +ImageSequence.elements -> elements: collection, (read-only) +ImageSequence.multiply_colors -> multiply_colors: float +ImageSequence.proxy -> proxy: pointer, (read-only) +ImageSequence.strobe -> strobe: float Only display every nth frame +ImageSequence.transform -> transform: pointer, (read-only) +ImageTexture.checker_distance -> checker_distance: float Sets distance between checker tiles +ImageTexture.crop_max_x -> crop_max_x: float Sets maximum X value to crop the image +ImageTexture.crop_max_y -> crop_max_y: float Sets maximum Y value to crop the image +ImageTexture.crop_min_x -> crop_min_x: float Sets minimum X value to crop the image +ImageTexture.crop_min_y -> crop_min_y: float Sets minimum Y value to crop the image +ImageTexture.extension -> extension: enum Sets how the image is extrapolated past its original bounds +ImageTexture.filter -> filter: enum Texture filter to use for sampling image +ImageTexture.filter_eccentricity -> filter_eccentricity: int Maximum eccentricity. Higher gives less blur at distant/oblique angles, but is also slower +ImageTexture.filter_probes -> filter_probes: int Maximum number of samples. Higher gives less blur at distant/oblique angles, but is also slower +ImageTexture.filter_size -> filter_size: float Multiplies the filter size used by MIP Map and Interpolation +ImageTexture.image -> image: pointer +ImageTexture.image_user -> image_user: pointer, (read-only) Parameters defining which layer, pass and frame of the image is displayed +ImageTexture.normal_space -> normal_space: enum Sets space of normal map image +ImageTexture.repeat_x -> repeat_x: int Sets a repetition multiplier in the X direction +ImageTexture.repeat_y -> repeat_y: int Sets a repetition multiplier in the Y direction +ImageUser.fields_per_frame -> fields_per_frame: int The number of fields per rendered frame (2 fields is 1 image) +ImageUser.frame_start -> frame_start: int Sets the global starting frame of the movie +ImageUser.frames -> frames: int Sets the number of images of a movie to use +ImageUser.multilayer_layer -> multilayer_layer: int, (read-only) Layer in multilayer image +ImageUser.multilayer_pass -> multilayer_pass: int, (read-only) Pass in multilayer image +ImageUser.offset -> offset: int Offsets the number of the frame to use in the animation +InflowFluidSettings.inflow_velocity -> inflow_velocity: float Initial velocity of fluid +InflowFluidSettings.volume_initialization -> volume_initialization: enum Volume initialization type +IntProperty.array_length -> array_length: int, (read-only) Maximum length of the array, 0 means unlimited +IntProperty.default -> default: int, (read-only) Default value for this number +IntProperty.default_array -> default_array: int, (read-only) Default value for this array +IntProperty.hard_max -> hard_max: int, (read-only) Maximum value used by buttons +IntProperty.hard_min -> hard_min: int, (read-only) Minimum value used by buttons +IntProperty.soft_max -> soft_max: int, (read-only) Maximum value used by buttons +IntProperty.soft_min -> soft_min: int, (read-only) Minimum value used by buttons +IntProperty.step -> step: int, (read-only) Step size used by number buttons, for floats 1/100th of the step size +Itasc.dampeps -> dampeps: float Singular value under which damping is progressively applied. Higher values=more stability, less reactivity. Default=0.1 +Itasc.dampmax -> dampmax: float Maximum damping coefficient when singular value is nearly 0. Higher values=more stability, less reactivity. Default=0.5 +Itasc.feedback -> feedback: float Feedback coefficient for error correction. Average response time=1/feedback. Default=20 +Itasc.max_step -> max_step: float Higher bound for timestep in second in case of automatic substeps +Itasc.max_velocity -> max_velocity: float Maximum joint velocity in rad/s. Default=50 +Itasc.min_step -> min_step: float Lower bound for timestep in second in case of automatic substeps +Itasc.mode -> mode: enum +Itasc.num_iter -> num_iter: int Maximum number of iterations for convergence in case of reiteration +Itasc.num_step -> num_step: int Divides the frame interval into this many steps +Itasc.precision -> precision: float Precision of convergence in case of reiteration +Itasc.reiteration -> reiteration: enum Defines if the solver is allowed to reiterate (converges until precision is met) on none, first or all frames +Itasc.solver -> solver: enum Solving method selection: Automatic damping or manual damping +JoystickSensor.axis_direction -> axis_direction: enum The direction of the axis +JoystickSensor.axis_number -> axis_number: int Specify which axis pair to use, 1 is usually the main direction input +JoystickSensor.axis_threshold -> axis_threshold: int Specify the precision of the axis +JoystickSensor.button_number -> button_number: int Specify which button to use +JoystickSensor.event_type -> event_type: enum The type of event this joystick sensor is triggered on +JoystickSensor.hat_direction -> hat_direction: enum Specify hat direction +JoystickSensor.hat_number -> hat_number: int Specify which hat to use +JoystickSensor.joystick_index -> joystick_index: int Specify which joystick to use +JoystickSensor.single_axis_number -> single_axis_number: int Specify a single axis (verticle/horizontal/other) to detect +Key.animation_data -> animation_data: pointer, (read-only) Animation data for this datablock +Key.keys -> keys: collection, (read-only) Shape keys +Key.reference_key -> reference_key: pointer, (read-only) +Key.slurph -> slurph: int Creates a delay in amount of frames in applying keypositions, first vertex goes first +Key.user -> user: pointer, (read-only) Datablock using these shape keys +KeyConfig.keymaps -> keymaps: collection, (read-only) Key maps configured as part of this configuration +KeyConfig.name -> name: string Name of the key configuration +KeyMap.items -> items: collection, (read-only) Items in the keymap, linking an operator to an input event +KeyMap.name -> name: string, (read-only) Name of the key map +KeyMap.region_type -> region_type: enum, (read-only) Optional region type keymap is associated with +KeyMap.space_type -> space_type: enum, (read-only) Optional space type keymap is associated with +KeyMapItem.id -> id: int, (read-only) ID of the item +KeyMapItem.idname -> idname: string Identifier of operator to call on input event +KeyMapItem.key_modifier -> key_modifier: enum Regular key pressed as a modifier +KeyMapItem.map_type -> map_type: enum Type of event mapping +KeyMapItem.name -> name: string, (read-only) Name of operator to call on input event +KeyMapItem.properties -> properties: pointer, (read-only) Properties to set when the operator is called +KeyMapItem.propvalue -> propvalue: enum The value this event translates to in a modal keymap +KeyMapItem.type -> type: enum Type of event +KeyMapItem.value -> value: enum +KeyboardSensor.key -> key: enum +KeyboardSensor.log -> log: string Property that receive the keystrokes in case a string is logged +KeyboardSensor.modifier_key -> modifier_key: enum Modifier key code +KeyboardSensor.second_modifier_key -> second_modifier_key: enum Modifier key code +KeyboardSensor.target -> target: string Property that indicates whether to log keystrokes as a string +Keyframe.co -> co: float Coordinates of the control point +Keyframe.handle1 -> handle1: float Coordinates of the first handle +Keyframe.handle1_type -> handle1_type: enum Handle types +Keyframe.handle2 -> handle2: float Coordinates of the second handle +Keyframe.handle2_type -> handle2_type: enum Handle types +Keyframe.interpolation -> interpolation: enum Interpolation method to use for segment of the curve from this Keyframe until the next Keyframe +Keyframe.type -> type: enum The type of keyframe +KeyingSet.active_path -> active_path: pointer Active Keying Set used to insert/delete keyframes +KeyingSet.active_path_index -> active_path_index: int Current Keying Set index +KeyingSet.name -> name: string +KeyingSet.paths -> paths: collection, (read-only) Keying Set Paths to define settings that get keyframed together +KeyingSet.type_info -> type_info: pointer, (read-only) Callback function defines for built-in Keying Sets +KeyingSetInfo.bl_idname -> bl_idname: string +KeyingSetInfo.bl_label -> bl_label: string +KeyingSetPath.array_index -> array_index: int Index to the specific setting if applicable +KeyingSetPath.data_path -> data_path: string Path to property setting +KeyingSetPath.group -> group: string Name of Action Group to assign setting(s) for this path to +KeyingSetPath.grouping -> grouping: enum Method used to define which Group-name to use +KeyingSetPath.id -> id: pointer ID-Block that keyframes for Keying Set should be added to (for Absolute Keying Sets only) +KeyingSetPath.id_type -> id_type: enum Type of ID-block that can be used +KinematicConstraint.axis_reference -> axis_reference: enum Constraint axis Lock options relative to Bone or Target reference +KinematicConstraint.chain_length -> chain_length: int How many bones are included in the IK effect - 0 uses all bones +KinematicConstraint.distance -> distance: float Radius of limiting sphere +KinematicConstraint.ik_type -> ik_type: enum +KinematicConstraint.iterations -> iterations: int Maximum number of solving iterations +KinematicConstraint.limit_mode -> limit_mode: enum Distances in relation to sphere of influence to allow +KinematicConstraint.orient_weight -> orient_weight: float For Tree-IK: Weight of orientation control for this target +KinematicConstraint.pole_angle -> pole_angle: float Pole rotation offset +KinematicConstraint.pole_subtarget -> pole_subtarget: string +KinematicConstraint.pole_target -> pole_target: pointer Object for pole rotation +KinematicConstraint.subtarget -> subtarget: string +KinematicConstraint.target -> target: pointer Target Object +KinematicConstraint.weight -> weight: float For Tree-IK: Weight of position control for this target +Lamp.active_texture -> active_texture: pointer Active texture slot being displayed +Lamp.active_texture_index -> active_texture_index: int Index of active texture slot +Lamp.animation_data -> animation_data: pointer, (read-only) Animation data for this datablock +Lamp.color -> color: float Light color +Lamp.distance -> distance: float Falloff distance - the light is at half the original intensity at this point +Lamp.energy -> energy: float Amount of light that the lamp emits +Lamp.texture_slots -> texture_slots: collection, (read-only) Texture slots defining the mapping and influence of textures +Lamp.type -> type: enum Type of Lamp +LampSkySettings.atmosphere_distance_factor -> atmosphere_distance_factor: float Multiplier to convert blender units to physical distance +LampSkySettings.atmosphere_extinction -> atmosphere_extinction: float Extinction scattering contribution factor +LampSkySettings.atmosphere_inscattering -> atmosphere_inscattering: float Scatter contribution factor +LampSkySettings.atmosphere_turbidity -> atmosphere_turbidity: float Sky turbidity +LampSkySettings.backscattered_light -> backscattered_light: float Backscattered light +LampSkySettings.horizon_brightness -> horizon_brightness: float Horizon brightness +LampSkySettings.sky_blend -> sky_blend: float Blend factor with sky +LampSkySettings.sky_blend_type -> sky_blend_type: enum Blend mode for combining sun sky with world sky +LampSkySettings.sky_color_space -> sky_color_space: enum Color space to use for internal XYZ->RGB color conversion +LampSkySettings.sky_exposure -> sky_exposure: float Strength of sky shading exponential exposure correction +LampSkySettings.spread -> spread: float Horizon Spread +LampSkySettings.sun_brightness -> sun_brightness: float Sun brightness +LampSkySettings.sun_intensity -> sun_intensity: float Sun intensity +LampSkySettings.sun_size -> sun_size: float Sun size +LampTextureSlot.color_factor -> color_factor: float Amount texture affects color values +LampTextureSlot.object -> object: pointer Object to use for mapping with Object texture coordinates +LampTextureSlot.shadow_factor -> shadow_factor: float Amount texture affects shadow +LampTextureSlot.texture_coordinates -> texture_coordinates: enum +Lattice.interpolation_type_u -> interpolation_type_u: enum +Lattice.interpolation_type_v -> interpolation_type_v: enum +Lattice.interpolation_type_w -> interpolation_type_w: enum +Lattice.points -> points: collection, (read-only) Points of the lattice +Lattice.points_u -> points_u: int Points in U direction +Lattice.points_v -> points_v: int Points in V direction +Lattice.points_w -> points_w: int Points in W direction +Lattice.shape_keys -> shape_keys: pointer, (read-only) +Lattice.vertex_group -> vertex_group: string Vertex group to apply the influence of the lattice +LatticeModifier.object -> object: pointer Lattice object to deform with +LatticeModifier.vertex_group -> vertex_group: string Vertex group name +LatticePoint.co -> co: float, (read-only) +LatticePoint.deformed_co -> deformed_co: float +LatticePoint.groups -> groups: collection, (read-only) Weights for the vertex groups this point is member of +Library.filepath -> filepath: string Path to the library .blend file +Library.parent -> parent: pointer, (read-only) +LimitDistanceConstraint.distance -> distance: float Radius of limiting sphere +LimitDistanceConstraint.limit_mode -> limit_mode: enum Distances in relation to sphere of influence to allow +LimitDistanceConstraint.subtarget -> subtarget: string +LimitDistanceConstraint.target -> target: pointer Target Object +LimitLocationConstraint.maximum_x -> maximum_x: float Highest X value to allow +LimitLocationConstraint.maximum_y -> maximum_y: float Highest Y value to allow +LimitLocationConstraint.maximum_z -> maximum_z: float Highest Z value to allow +LimitLocationConstraint.minimum_x -> minimum_x: float Lowest X value to allow +LimitLocationConstraint.minimum_y -> minimum_y: float Lowest Y value to allow +LimitLocationConstraint.minimum_z -> minimum_z: float Lowest Z value to allow +LimitRotationConstraint.maximum_x -> maximum_x: float Highest X value to allow +LimitRotationConstraint.maximum_y -> maximum_y: float Highest Y value to allow +LimitRotationConstraint.maximum_z -> maximum_z: float Highest Z value to allow +LimitRotationConstraint.minimum_x -> minimum_x: float Lowest X value to allow +LimitRotationConstraint.minimum_y -> minimum_y: float Lowest Y value to allow +LimitRotationConstraint.minimum_z -> minimum_z: float Lowest Z value to allow +LimitScaleConstraint.maximum_x -> maximum_x: float Highest X value to allow +LimitScaleConstraint.maximum_y -> maximum_y: float Highest Y value to allow +LimitScaleConstraint.maximum_z -> maximum_z: float Highest Z value to allow +LimitScaleConstraint.minimum_x -> minimum_x: float Lowest X value to allow +LimitScaleConstraint.minimum_y -> minimum_y: float Lowest Y value to allow +LimitScaleConstraint.minimum_z -> minimum_z: float Lowest Z value to allow +LockedTrackConstraint.locked -> locked: enum Axis that points upward +LockedTrackConstraint.subtarget -> subtarget: string +LockedTrackConstraint.target -> target: pointer Target Object +LockedTrackConstraint.track -> track: enum Axis that points to the target object +Macro.bl_description -> bl_description: string +Macro.bl_idname -> bl_idname: string +Macro.bl_label -> bl_label: string +Macro.bl_options -> bl_options: enum Options for this operator type +Macro.name -> name: string, (read-only) +Macro.properties -> properties: pointer, (read-only) +MagicTexture.noise_depth -> noise_depth: int Sets the depth of the cloud calculation +MagicTexture.turbulence -> turbulence: float Sets the turbulence of the bandnoise and ringnoise types +Main.actions -> actions: collection, (read-only) Action datablocks. +Main.armatures -> armatures: collection, (read-only) Armature datablocks. +Main.brushes -> brushes: collection, (read-only) Brush datablocks. +Main.cameras -> cameras: collection, (read-only) Camera datablocks. +Main.curves -> curves: collection, (read-only) Curve datablocks. +Main.filepath -> filepath: string, (read-only) Path to the .blend file +Main.fonts -> fonts: collection, (read-only) Vector font datablocks. +Main.gpencil -> gpencil: collection, (read-only) Grease Pencil datablocks. +Main.groups -> groups: collection, (read-only) Group datablocks. +Main.images -> images: collection, (read-only) Image datablocks. +Main.lamps -> lamps: collection, (read-only) Lamp datablocks. +Main.lattices -> lattices: collection, (read-only) Lattice datablocks. +Main.libraries -> libraries: collection, (read-only) Library datablocks. +Main.materials -> materials: collection, (read-only) Material datablocks. +Main.meshes -> meshes: collection, (read-only) Mesh datablocks. +Main.metaballs -> metaballs: collection, (read-only) Metaball datablocks. +Main.node_groups -> node_groups: collection, (read-only) Node group datablocks. +Main.objects -> objects: collection, (read-only) Object datablocks. +Main.particles -> particles: collection, (read-only) Particle datablocks. +Main.scenes -> scenes: collection, (read-only) Scene datablocks. +Main.screens -> screens: collection, (read-only) Screen datablocks. +Main.scripts -> scripts: collection, (read-only) Script datablocks (DEPRECATED). +Main.sounds -> sounds: collection, (read-only) Sound datablocks. +Main.texts -> texts: collection, (read-only) Text datablocks. +Main.textures -> textures: collection, (read-only) Texture datablocks. +Main.window_managers -> window_managers: collection, (read-only) Window manager datablocks. +Main.worlds -> worlds: collection, (read-only) World datablocks. +MaintainVolumeConstraint.axis -> axis: enum The free scaling axis of the object +MaintainVolumeConstraint.volume -> volume: float Volume of the bone at rest +MarbleTexture.nabla -> nabla: float Size of derivative offset used for calculating normal +MarbleTexture.noise_basis -> noise_basis: enum Sets the noise basis used for turbulence +MarbleTexture.noise_depth -> noise_depth: int Sets the depth of the cloud calculation +MarbleTexture.noise_size -> noise_size: float Sets scaling for noise input +MarbleTexture.noise_type -> noise_type: enum +MarbleTexture.noisebasis2 -> noisebasis2: enum +MarbleTexture.stype -> stype: enum +MarbleTexture.turbulence -> turbulence: float Sets the turbulence of the bandnoise and ringnoise types +MaskModifier.armature -> armature: pointer Armature to use as source of bones to mask +MaskModifier.mode -> mode: enum +MaskModifier.vertex_group -> vertex_group: string Vertex group name +Material.active_node_material -> active_node_material: pointer Active node material +Material.active_texture -> active_texture: pointer Active texture slot being displayed +Material.active_texture_index -> active_texture_index: int Index of active texture slot +Material.alpha -> alpha: float Alpha transparency of the material +Material.ambient -> ambient: float Amount of global ambient color the material receives +Material.animation_data -> animation_data: pointer, (read-only) Animation data for this datablock +Material.darkness -> darkness: float Minnaert darkness +Material.diffuse_color -> diffuse_color: float +Material.diffuse_fresnel -> diffuse_fresnel: float Power of Fresnel +Material.diffuse_fresnel_factor -> diffuse_fresnel_factor: float Blending factor of Fresnel +Material.diffuse_intensity -> diffuse_intensity: float Amount of diffuse reflection +Material.diffuse_ramp -> diffuse_ramp: pointer, (read-only) Color ramp used to affect diffuse shading +Material.diffuse_ramp_blend -> diffuse_ramp_blend: enum +Material.diffuse_ramp_factor -> diffuse_ramp_factor: float Blending factor (also uses alpha in Colorband) +Material.diffuse_ramp_input -> diffuse_ramp_input: enum +Material.diffuse_shader -> diffuse_shader: enum +Material.diffuse_toon_size -> diffuse_toon_size: float Size of diffuse toon area +Material.diffuse_toon_smooth -> diffuse_toon_smooth: float Smoothness of diffuse toon area +Material.emit -> emit: float Amount of light to emit +Material.halo -> halo: pointer, (read-only) Halo settings for the material +Material.light_group -> light_group: pointer Limit lighting to lamps in this Group +Material.mirror_color -> mirror_color: float Mirror color of the material +Material.node_tree -> node_tree: pointer, (read-only) Node tree for node based materials +Material.physics -> physics: pointer, (read-only) Game physics settings +Material.preview_render_type -> preview_render_type: enum Type of preview render +Material.raytrace_mirror -> raytrace_mirror: pointer, (read-only) Raytraced reflection settings for the material +Material.raytrace_transparency -> raytrace_transparency: pointer, (read-only) Raytraced transparency settings for the material +Material.roughness -> roughness: float Oren-Nayar Roughness +Material.shadow_buffer_bias -> shadow_buffer_bias: float Factor to multiply shadow buffer bias with (0 is ignore.) +Material.shadow_casting_alpha -> shadow_casting_alpha: float Shadow casting alpha, in use for Irregular and Deep shadow buffer +Material.shadow_ray_bias -> shadow_ray_bias: float Shadow raytracing bias to prevent terminator problems on shadow boundary +Material.specular_alpha -> specular_alpha: float Alpha transparency for specular areas +Material.specular_color -> specular_color: float Specular color of the material +Material.specular_hardness -> specular_hardness: int +Material.specular_intensity -> specular_intensity: float +Material.specular_ior -> specular_ior: float +Material.specular_ramp -> specular_ramp: pointer, (read-only) Color ramp used to affect specular shading +Material.specular_ramp_blend -> specular_ramp_blend: enum +Material.specular_ramp_factor -> specular_ramp_factor: float Blending factor (also uses alpha in Colorband) +Material.specular_ramp_input -> specular_ramp_input: enum +Material.specular_shader -> specular_shader: enum +Material.specular_slope -> specular_slope: float The standard deviation of surface slope +Material.specular_toon_size -> specular_toon_size: float Size of specular toon area +Material.specular_toon_smooth -> specular_toon_smooth: float Smoothness of specular toon area +Material.strand -> strand: pointer, (read-only) Strand settings for the material +Material.subsurface_scattering -> subsurface_scattering: pointer, (read-only) Subsurface scattering settings for the material +Material.texture_slots -> texture_slots: collection, (read-only) Texture slots defining the mapping and influence of textures +Material.translucency -> translucency: float Amount of diffuse shading on the back side +Material.transparency_method -> transparency_method: enum Method to use for rendering transparency +Material.type -> type: enum Material type defining how the object is rendered +Material.volume -> volume: pointer, (read-only) Volume settings for the material +Material.z_offset -> z_offset: float Gives faces an artificial offset in the Z buffer for Z transparency +MaterialHalo.add -> add: float Sets the strength of the add effect +MaterialHalo.flare_boost -> flare_boost: float Gives the flare extra strength +MaterialHalo.flare_seed -> flare_seed: int Specifies an offset in the flare seed table +MaterialHalo.flare_size -> flare_size: float Sets the factor by which the flare is larger than the halo +MaterialHalo.flare_subsize -> flare_subsize: float Sets the dimension of the subflares, dots and circles +MaterialHalo.flares_sub -> flares_sub: int Sets the number of subflares +MaterialHalo.hardness -> hardness: int Sets the hardness of the halo +MaterialHalo.line_number -> line_number: int Sets the number of star shaped lines rendered over the halo +MaterialHalo.rings -> rings: int Sets the number of rings rendered over the halo +MaterialHalo.seed -> seed: int Randomizes ring dimension and line location +MaterialHalo.size -> size: float Sets the dimension of the halo +MaterialHalo.star_tips -> star_tips: int Sets the number of points on the star shaped halo +MaterialPhysics.damp -> damp: float Damping of the spring force, when inside the physics distance area +MaterialPhysics.distance -> distance: float Distance of the physics area +MaterialPhysics.elasticity -> elasticity: float Elasticity of collisions +MaterialPhysics.force -> force: float Upward spring force, when inside the physics distance area +MaterialPhysics.friction -> friction: float Coulomb friction coefficient, when inside the physics distance area +MaterialRaytraceMirror.depth -> depth: int Maximum allowed number of light inter-reflections +MaterialRaytraceMirror.distance -> distance: float Maximum distance of reflected rays. Reflections further than this range fade to sky color or material color +MaterialRaytraceMirror.fade_to -> fade_to: enum The color that rays with no intersection within the Max Distance take. Material color can be best for indoor scenes, sky color for outdoor +MaterialRaytraceMirror.fresnel -> fresnel: float Power of Fresnel for mirror reflection +MaterialRaytraceMirror.fresnel_factor -> fresnel_factor: float Blending factor for Fresnel +MaterialRaytraceMirror.gloss_anisotropic -> gloss_anisotropic: float The shape of the reflection, from 0.0 (circular) to 1.0 (fully stretched along the tangent +MaterialRaytraceMirror.gloss_factor -> gloss_factor: float The shininess of the reflection. Values < 1.0 give diffuse, blurry reflections +MaterialRaytraceMirror.gloss_samples -> gloss_samples: int Number of cone samples averaged for blurry reflections +MaterialRaytraceMirror.gloss_threshold -> gloss_threshold: float Threshold for adaptive sampling. If a sample contributes less than this amount (as a percentage), sampling is stopped +MaterialRaytraceMirror.reflect_factor -> reflect_factor: float Sets the amount mirror reflection for raytrace +MaterialRaytraceTransparency.depth -> depth: int Maximum allowed number of light inter-refractions +MaterialRaytraceTransparency.falloff -> falloff: float Falloff power for transmissivity filter effect (1.0 is linear) +MaterialRaytraceTransparency.filter -> filter: float Amount to blend in the material's diffuse color in raytraced transparency (simulating absorption) +MaterialRaytraceTransparency.fresnel -> fresnel: float Power of Fresnel for transparency (Ray or ZTransp) +MaterialRaytraceTransparency.fresnel_factor -> fresnel_factor: float Blending factor for Fresnel +MaterialRaytraceTransparency.gloss_factor -> gloss_factor: float The clarity of the refraction. Values < 1.0 give diffuse, blurry refractions +MaterialRaytraceTransparency.gloss_samples -> gloss_samples: int Number of cone samples averaged for blurry refractions +MaterialRaytraceTransparency.gloss_threshold -> gloss_threshold: float Threshold for adaptive sampling. If a sample contributes less than this amount (as a percentage), sampling is stopped +MaterialRaytraceTransparency.ior -> ior: float Sets angular index of refraction for raytraced refraction +MaterialRaytraceTransparency.limit -> limit: float Maximum depth for light to travel through the transparent material before becoming fully filtered (0.0 is disabled) +MaterialSlot.link -> link: enum Link material to object or the object's data +MaterialSlot.material -> material: pointer Material datablock used by this material slot +MaterialSlot.name -> name: string, (read-only) Material slot name +MaterialStrand.blend_distance -> blend_distance: float Worldspace distance over which to blend in the surface normal +MaterialStrand.min_size -> min_size: float Minimum size of strands in pixels +MaterialStrand.root_size -> root_size: float Start size of strands in pixels or Blender units +MaterialStrand.shape -> shape: float Positive values make strands rounder, negative makes strands spiky +MaterialStrand.tip_size -> tip_size: float End size of strands in pixels or Blender units +MaterialStrand.uv_layer -> uv_layer: string Name of UV layer to override +MaterialStrand.width_fade -> width_fade: float Transparency along the width of the strand +MaterialSubsurfaceScattering.back -> back: float Back scattering weight +MaterialSubsurfaceScattering.color -> color: float Scattering color +MaterialSubsurfaceScattering.color_factor -> color_factor: float Blend factor for SSS colors +MaterialSubsurfaceScattering.error_tolerance -> error_tolerance: float Error tolerance (low values are slower and higher quality) +MaterialSubsurfaceScattering.front -> front: float Front scattering weight +MaterialSubsurfaceScattering.ior -> ior: float Index of refraction (higher values are denser) +MaterialSubsurfaceScattering.radius -> radius: float Mean red/green/blue scattering path length +MaterialSubsurfaceScattering.scale -> scale: float Object scale factor +MaterialSubsurfaceScattering.texture_factor -> texture_factor: float Texture scatting blend factor +MaterialTextureSlot.alpha_factor -> alpha_factor: float Amount texture affects alpha +MaterialTextureSlot.ambient_factor -> ambient_factor: float Amount texture affects ambient +MaterialTextureSlot.colordiff_factor -> colordiff_factor: float Amount texture affects diffuse color +MaterialTextureSlot.coloremission_factor -> coloremission_factor: float Amount texture affects emission color +MaterialTextureSlot.colorreflection_factor -> colorreflection_factor: float Amount texture affects color of out-scattered light +MaterialTextureSlot.colorspec_factor -> colorspec_factor: float Amount texture affects specular color +MaterialTextureSlot.colortransmission_factor -> colortransmission_factor: float Amount texture affects result color after light has been scattered/absorbed +MaterialTextureSlot.density_factor -> density_factor: float Amount texture affects density +MaterialTextureSlot.diffuse_factor -> diffuse_factor: float Amount texture affects diffuse reflectivity +MaterialTextureSlot.displacement_factor -> displacement_factor: float Amount texture displaces the surface +MaterialTextureSlot.emission_factor -> emission_factor: float Amount texture affects emission +MaterialTextureSlot.emit_factor -> emit_factor: float Amount texture affects emission +MaterialTextureSlot.hardness_factor -> hardness_factor: float Amount texture affects hardness +MaterialTextureSlot.mapping -> mapping: enum +MaterialTextureSlot.mirror_factor -> mirror_factor: float Amount texture affects mirror color +MaterialTextureSlot.normal_factor -> normal_factor: float Amount texture affects normal values +MaterialTextureSlot.normal_map_space -> normal_map_space: enum +MaterialTextureSlot.object -> object: pointer Object to use for mapping with Object texture coordinates +MaterialTextureSlot.raymir_factor -> raymir_factor: float Amount texture affects ray mirror +MaterialTextureSlot.reflection_factor -> reflection_factor: float Amount texture affects brightness of out-scattered light +MaterialTextureSlot.scattering_factor -> scattering_factor: float Amount texture affects scattering +MaterialTextureSlot.specular_factor -> specular_factor: float Amount texture affects specular reflectivity +MaterialTextureSlot.texture_coordinates -> texture_coordinates: enum +MaterialTextureSlot.translucency_factor -> translucency_factor: float Amount texture affects translucency +MaterialTextureSlot.uv_layer -> uv_layer: string UV layer to use for mapping with UV texture coordinates +MaterialTextureSlot.warp_factor -> warp_factor: float Amount texture affects texture coordinates of next channels +MaterialTextureSlot.x_mapping -> x_mapping: enum +MaterialTextureSlot.y_mapping -> y_mapping: enum +MaterialTextureSlot.z_mapping -> z_mapping: enum +MaterialVolume.asymmetry -> asymmetry: float Back scattering (-1.0) to Forward scattering (1.0) and the range in between +MaterialVolume.cache_resolution -> cache_resolution: int Resolution of the voxel grid, low resolutions are faster, high resolutions use more memory +MaterialVolume.density -> density: float The base density of the volume +MaterialVolume.density_scale -> density_scale: float Multiplier for the material's density +MaterialVolume.depth_cutoff -> depth_cutoff: float Stop ray marching early if transmission drops below this luminance - higher values give speedups in dense volumes at the expense of accuracy +MaterialVolume.emission -> emission: float Amount of light that gets emitted by the volume +MaterialVolume.emission_color -> emission_color: float +MaterialVolume.lighting_mode -> lighting_mode: enum Method of shading, attenuating, and scattering light through the volume +MaterialVolume.ms_diffusion -> ms_diffusion: float Diffusion factor, the strength of the blurring effect +MaterialVolume.ms_intensity -> ms_intensity: float Multiplier for multiple scattered light energy +MaterialVolume.ms_spread -> ms_spread: float Proportional distance over which the light is diffused +MaterialVolume.reflection -> reflection: float Multiplier to make out-scattered light brighter or darker (non-physically correct) +MaterialVolume.reflection_color -> reflection_color: float Colour of light scattered out of the volume (does not affect transmission) +MaterialVolume.scattering -> scattering: float Amount of light that gets scattered out by the volume - the more out-scattering, the shallower the light will penetrate +MaterialVolume.step_calculation -> step_calculation: enum Method of calculating the steps through the volume +MaterialVolume.step_size -> step_size: float Distance between subsequent volume depth samples +MaterialVolume.transmission_color -> transmission_color: float Result color of the volume, after other light has been scattered/absorbed +Menu.bl_idname -> bl_idname: string +Menu.bl_label -> bl_label: string +Menu.layout -> layout: pointer, (read-only) +Mesh.active_uv_texture -> active_uv_texture: pointer Active UV texture +Mesh.active_uv_texture_index -> active_uv_texture_index: int Active UV texture index +Mesh.active_vertex_color -> active_vertex_color: pointer Active vertex color layer +Mesh.active_vertex_color_index -> active_vertex_color_index: int Active vertex color index +Mesh.animation_data -> animation_data: pointer, (read-only) Animation data for this datablock +Mesh.autosmooth_angle -> autosmooth_angle: int Defines maximum angle between face normals that 'Auto Smooth' will operate on +Mesh.edges -> edges: collection, (read-only) Edges of the mesh +Mesh.faces -> faces: collection, (read-only) Faces of the mesh +Mesh.float_layers -> float_layers: collection, (read-only) +Mesh.int_layers -> int_layers: collection, (read-only) +Mesh.materials -> materials: collection, (read-only) +Mesh.shape_keys -> shape_keys: pointer, (read-only) +Mesh.sticky -> sticky: collection, (read-only) Sticky texture coordinates +Mesh.string_layers -> string_layers: collection, (read-only) +Mesh.texco_mesh -> texco_mesh: pointer Derive texture coordinates from another mesh +Mesh.texspace_loc -> texspace_loc: float Texture space location +Mesh.texspace_size -> texspace_size: float Texture space size +Mesh.texture_mesh -> texture_mesh: pointer Use another mesh for texture indices (vertex indices must be aligned) +Mesh.total_edge_sel -> total_edge_sel: int, (read-only) Selected edge count in editmode +Mesh.total_face_sel -> total_face_sel: int, (read-only) Selected face count in editmode +Mesh.total_vert_sel -> total_vert_sel: int, (read-only) Selected vertex count in editmode +Mesh.uv_texture_clone -> uv_texture_clone: pointer UV texture to be used as cloning source +Mesh.uv_texture_clone_index -> uv_texture_clone_index: int Clone UV texture index +Mesh.uv_texture_stencil -> uv_texture_stencil: pointer UV texture to mask the painted area +Mesh.uv_texture_stencil_index -> uv_texture_stencil_index: int Mask UV texture index +Mesh.uv_textures -> uv_textures: collection, (read-only) +Mesh.vertex_colors -> vertex_colors: collection, (read-only) +Mesh.verts -> verts: collection, (read-only) Vertices of the mesh +MeshColor.color1 -> color1: float +MeshColor.color2 -> color2: float +MeshColor.color3 -> color3: float +MeshColor.color4 -> color4: float +MeshColorLayer.data -> data: collection, (read-only) +MeshColorLayer.name -> name: string +MeshDeformModifier.object -> object: pointer Mesh object to deform with +MeshDeformModifier.precision -> precision: int The grid size for binding +MeshDeformModifier.vertex_group -> vertex_group: string Vertex group name +MeshEdge.bevel_weight -> bevel_weight: float Weight used by the Bevel modifier +MeshEdge.crease -> crease: float Weight used by the Subsurf modifier for creasing +MeshEdge.index -> index: int, (read-only) Index number of the vertex +MeshEdge.verts -> verts: int Vertex indices +MeshFace.area -> area: float, (read-only) read only area of the face +MeshFace.index -> index: int, (read-only) Index number of the vertex +MeshFace.material_index -> material_index: int +MeshFace.normal -> normal: float, (read-only) local space unit length normal vector for this face +MeshFace.verts -> verts: int Vertex indices +MeshFace.verts_raw -> verts_raw: int Fixed size vertex indices array +MeshFaces.active -> active: int The active face for this mesh +MeshFaces.active_tface -> active_tface: pointer, (read-only) Active Texture Face +MeshFloatProperty.value -> value: float +MeshFloatPropertyLayer.data -> data: collection, (read-only) +MeshFloatPropertyLayer.name -> name: string +MeshIntProperty.value -> value: int +MeshIntPropertyLayer.data -> data: collection, (read-only) +MeshIntPropertyLayer.name -> name: string +MeshSticky.co -> co: float Sticky texture coordinate location +MeshStringProperty.value -> value: string +MeshStringPropertyLayer.data -> data: collection, (read-only) +MeshStringPropertyLayer.name -> name: string +MeshTextureFace.image -> image: pointer +MeshTextureFace.transp -> transp: enum Transparency blending mode +MeshTextureFace.uv -> uv: float +MeshTextureFace.uv1 -> uv1: float +MeshTextureFace.uv2 -> uv2: float +MeshTextureFace.uv3 -> uv3: float +MeshTextureFace.uv4 -> uv4: float +MeshTextureFace.uv_raw -> uv_raw: float Fixed size UV coordinates array +MeshTextureFaceLayer.data -> data: collection, (read-only) +MeshTextureFaceLayer.name -> name: string +MeshVertex.bevel_weight -> bevel_weight: float Weight used by the Bevel modifier 'Only Vertices' option +MeshVertex.co -> co: float +MeshVertex.groups -> groups: collection, (read-only) Weights for the vertex groups this vertex is member of +MeshVertex.index -> index: int, (read-only) Index number of the vertex +MeshVertex.normal -> normal: float Vertex Normal +MessageActuator.body_message -> body_message: string Optional message body Text +MessageActuator.body_property -> body_property: string The message body will be set by the Property Value +MessageActuator.body_type -> body_type: enum Toggle message type: either Text or a PropertyName +MessageActuator.subject -> subject: string Optional message subject. This is what can be filtered on +MessageActuator.to_property -> to_property: string Optional send message to objects with this name only, or empty to broadcast +MessageSensor.subject -> subject: string Optional subject filter: only accept messages with this subject, or empty for all +MetaBall.active_element -> active_element: pointer, (read-only) Last selected element +MetaBall.animation_data -> animation_data: pointer, (read-only) Animation data for this datablock +MetaBall.elements -> elements: collection, (read-only) Meta elements +MetaBall.flag -> flag: enum Metaball edit update behavior +MetaBall.materials -> materials: collection, (read-only) +MetaBall.render_size -> render_size: float Polygonization resolution in rendering +MetaBall.texspace_loc -> texspace_loc: float Texture space location +MetaBall.texspace_size -> texspace_size: float Texture space size +MetaBall.threshold -> threshold: float Influence of meta elements +MetaBall.wire_size -> wire_size: float Polygonization resolution in the 3D viewport +MetaElement.location -> location: float +MetaElement.radius -> radius: float +MetaElement.rotation -> rotation: float +MetaElement.size_x -> size_x: float Size of element, use of components depends on element type +MetaElement.size_y -> size_y: float Size of element, use of components depends on element type +MetaElement.size_z -> size_z: float Size of element, use of components depends on element type +MetaElement.stiffness -> stiffness: float Stiffness defines how much of the element to fill +MetaElement.type -> type: enum Metaball types +MetaSequence.animation_end_offset -> animation_end_offset: int Animation end offset (trim end) +MetaSequence.animation_start_offset -> animation_start_offset: int Animation start offset (trim start) +MetaSequence.color_balance -> color_balance: pointer, (read-only) +MetaSequence.crop -> crop: pointer, (read-only) +MetaSequence.multiply_colors -> multiply_colors: float +MetaSequence.proxy -> proxy: pointer, (read-only) +MetaSequence.sequences -> sequences: collection, (read-only) +MetaSequence.strobe -> strobe: float Only display every nth frame +MetaSequence.transform -> transform: pointer, (read-only) +MirrorModifier.merge_limit -> merge_limit: float Distance from axis within which mirrored vertices are merged +MirrorModifier.mirror_object -> mirror_object: pointer Object to use as mirror +Modifier.name -> name: string Modifier name +Modifier.type -> type: enum, (read-only) +MotionPath.frame_end -> frame_end: int, (read-only) End frame of the stored range +MotionPath.frame_start -> frame_start: int, (read-only) Starting frame of the stored range +MotionPath.length -> length: int, (read-only) Number of frames cached +MotionPath.points -> points: collection, (read-only) Cached positions per frame +MotionPathVert.co -> co: float +MouseSensor.mouse_event -> mouse_event: enum Specify the type of event this mouse sensor should trigger on +MovieSequence.animation_end_offset -> animation_end_offset: int Animation end offset (trim end) +MovieSequence.animation_start_offset -> animation_start_offset: int Animation start offset (trim start) +MovieSequence.color_balance -> color_balance: pointer, (read-only) +MovieSequence.crop -> crop: pointer, (read-only) +MovieSequence.filepath -> filepath: string +MovieSequence.mpeg_preseek -> mpeg_preseek: int For MPEG movies, preseek this many frames +MovieSequence.multiply_colors -> multiply_colors: float +MovieSequence.proxy -> proxy: pointer, (read-only) +MovieSequence.strobe -> strobe: float Only display every nth frame +MovieSequence.transform -> transform: pointer, (read-only) +MulticamSequence.animation_end_offset -> animation_end_offset: int Animation end offset (trim end) +MulticamSequence.animation_start_offset -> animation_start_offset: int Animation start offset (trim start) +MulticamSequence.color_balance -> color_balance: pointer, (read-only) +MulticamSequence.crop -> crop: pointer, (read-only) +MulticamSequence.multicam_source -> multicam_source: int +MulticamSequence.multiply_colors -> multiply_colors: float +MulticamSequence.proxy -> proxy: pointer, (read-only) +MulticamSequence.strobe -> strobe: float Only display every nth frame +MulticamSequence.transform -> transform: pointer, (read-only) +MultiresModifier.filepath -> filepath: string Path to external displacements file +MultiresModifier.levels -> levels: int Number of subdivisions to use in the viewport +MultiresModifier.render_levels -> render_levels: int +MultiresModifier.sculpt_levels -> sculpt_levels: int Number of subdivisions to use in sculpt mode +MultiresModifier.subdivision_type -> subdivision_type: enum Selects type of subdivision algorithm +MultiresModifier.total_levels -> total_levels: int, (read-only) Number of subdivisions for which displacements are stored +MusgraveTexture.gain -> gain: float The gain multiplier +MusgraveTexture.highest_dimension -> highest_dimension: float Highest fractal dimension +MusgraveTexture.lacunarity -> lacunarity: float Gap between successive frequencies +MusgraveTexture.musgrave_type -> musgrave_type: enum +MusgraveTexture.nabla -> nabla: float Size of derivative offset used for calculating normal +MusgraveTexture.noise_basis -> noise_basis: enum Sets the noise basis used for turbulence +MusgraveTexture.noise_intensity -> noise_intensity: float +MusgraveTexture.noise_size -> noise_size: float Sets scaling for noise input +MusgraveTexture.octaves -> octaves: float Number of frequencies used +MusgraveTexture.offset -> offset: float The fractal offset +NearSensor.distance -> distance: float Trigger distance +NearSensor.property -> property: string Only look for objects with this property +NearSensor.reset_distance -> reset_distance: float +NetRenderJob.name -> name: string +NetRenderSettings.active_blacklisted_slave_index -> active_blacklisted_slave_index: int +NetRenderSettings.active_job_index -> active_job_index: int +NetRenderSettings.active_slave_index -> active_slave_index: int +NetRenderSettings.chunks -> chunks: int Number of frame to dispatch to each slave in one chunk +NetRenderSettings.job_category -> job_category: string Category of the job +NetRenderSettings.job_id -> job_id: string id of the last sent render job +NetRenderSettings.job_name -> job_name: string Name of the job +NetRenderSettings.jobs -> jobs: collection, (read-only) +NetRenderSettings.mode -> mode: enum Mode of operation of this instance +NetRenderSettings.path -> path: string Path for temporary files +NetRenderSettings.priority -> priority: int Priority of the job +NetRenderSettings.server_address -> server_address: string IP or name of the master render server +NetRenderSettings.server_port -> server_port: int port of the master render server +NetRenderSettings.slaves -> slaves: collection, (read-only) +NetRenderSettings.slaves_blacklist -> slaves_blacklist: collection, (read-only) +NetRenderSlave.name -> name: string +NlaStrip.action -> action: pointer Action referenced by this strip +NlaStrip.action_frame_end -> action_frame_end: float +NlaStrip.action_frame_start -> action_frame_start: float +NlaStrip.blend_in -> blend_in: float Number of frames at start of strip to fade in influence +NlaStrip.blend_out -> blend_out: float +NlaStrip.blending -> blending: enum Method used for combining strip's result with accumulated result +NlaStrip.extrapolation -> extrapolation: enum Action to take for gaps past the strip extents +NlaStrip.fcurves -> fcurves: collection, (read-only) F-Curves for controlling the strip's influence and timing +NlaStrip.frame_end -> frame_end: float +NlaStrip.frame_start -> frame_start: float +NlaStrip.influence -> influence: float Amount the strip contributes to the current result +NlaStrip.modifiers -> modifiers: collection, (read-only) Modifiers affecting all the F-Curves in the referenced Action +NlaStrip.name -> name: string +NlaStrip.repeat -> repeat: float Number of times to repeat the action range +NlaStrip.scale -> scale: float Scaling factor for action +NlaStrip.strip_time -> strip_time: float Frame of referenced Action to evaluate +NlaStrip.strips -> strips: collection, (read-only) NLA Strips that this strip acts as a container for (if it is of type Meta) +NlaStrip.type -> type: enum, (read-only) Type of NLA Strip +NlaTrack.name -> name: string +NlaTrack.strips -> strips: collection, (read-only) NLA Strips on this NLA-track +Node.inputs -> inputs: collection, (read-only) +Node.location -> location: float +Node.name -> name: string Node name +Node.outputs -> outputs: collection, (read-only) +NodeGroup.nodetree -> nodetree: pointer +NodeTree.animation_data -> animation_data: pointer, (read-only) Animation data for this datablock +NodeTree.grease_pencil -> grease_pencil: pointer Grease Pencil datablock +NodeTree.nodes -> nodes: collection, (read-only) +Object.active_material -> active_material: pointer Active material being displayed +Object.active_material_index -> active_material_index: int Index of active material slot +Object.active_particle_system -> active_particle_system: pointer, (read-only) Active particle system being displayed +Object.active_particle_system_index -> active_particle_system_index: int Index of active particle system slot +Object.active_shape_key -> active_shape_key: pointer, (read-only) Current shape key +Object.active_shape_key_index -> active_shape_key_index: int Current shape key index +Object.active_vertex_group -> active_vertex_group: pointer, (read-only) Vertex groups of the object +Object.active_vertex_group_index -> active_vertex_group_index: int Active index in vertex group array +Object.animation_data -> animation_data: pointer, (read-only) Animation data for this datablock +Object.animation_visualisation -> animation_visualisation: pointer, (read-only) Animation data for this datablock +Object.bound_box -> bound_box: float, (read-only) Objects bound box in object-space coordinates +Object.collision -> collision: pointer, (read-only) Settings for using the objects as a collider in physics simulation +Object.color -> color: float Object color and alpha, used when faces have the ObColor mode enabled +Object.constraints -> constraints: collection, (read-only) Constraints affecting the transformation of the object +Object.data -> data: pointer Object data +Object.delta_location -> delta_location: float Extra translation added to the location of the object +Object.delta_rotation_euler -> delta_rotation_euler: float Extra rotation added to the rotation of the object (when using Euler rotations) +Object.delta_rotation_quaternion -> delta_rotation_quaternion: float Extra rotation added to the rotation of the object (when using Quaternion rotations) +Object.delta_scale -> delta_scale: float Extra scaling added to the scale of the object +Object.dimensions -> dimensions: float Absolute bounding box dimensions of the object +Object.draw_bounds_type -> draw_bounds_type: enum Object boundary display type +Object.dupli_faces_scale -> dupli_faces_scale: float Scale the DupliFace objects +Object.dupli_frames_end -> dupli_frames_end: int End frame for DupliFrames +Object.dupli_frames_off -> dupli_frames_off: int Recurring frames to exclude from the Dupliframes +Object.dupli_frames_on -> dupli_frames_on: int Number of frames to use between DupOff frames +Object.dupli_frames_start -> dupli_frames_start: int Start frame for DupliFrames +Object.dupli_group -> dupli_group: pointer Instance an existing group +Object.dupli_list -> dupli_list: collection, (read-only) Object duplis +Object.dupli_type -> dupli_type: enum If not None, object duplication method to use +Object.empty_draw_size -> empty_draw_size: float Size of display for empties in the viewport +Object.empty_draw_type -> empty_draw_type: enum Viewport display style for empties +Object.field -> field: pointer, (read-only) Settings for using the objects as a field in physics simulation +Object.game -> game: pointer, (read-only) Game engine related settings for the object +Object.grease_pencil -> grease_pencil: pointer Grease Pencil datablock +Object.location -> location: float Location of the object +Object.material_slots -> material_slots: collection, (read-only) Material slots in the object +Object.matrix_local -> matrix_local: float Parent relative transformation matrix +Object.matrix_world -> matrix_world: float Worldspace transformation matrix +Object.max_draw_type -> max_draw_type: enum Maximum draw type to display object with in viewport +Object.mode -> mode: enum, (read-only) Object interaction mode +Object.modifiers -> modifiers: collection, (read-only) Modifiers affecting the geometric data of the object +Object.motion_path -> motion_path: pointer, (read-only) Motion Path for this element +Object.parent -> parent: pointer Parent Object +Object.parent_bone -> parent_bone: string Name of parent bone in case of a bone parenting relation +Object.parent_type -> parent_type: enum Type of parent relation +Object.parent_vertices -> parent_vertices: int, (read-only) Indices of vertices in cases of a vertex parenting relation +Object.particle_systems -> particle_systems: collection, (read-only) Particle systems emitted from the object +Object.pass_index -> pass_index: int Index # for the IndexOB render pass +Object.pose -> pose: pointer, (read-only) Current pose for armatures +Object.pose_library -> pose_library: pointer, (read-only) Action used as a pose library for armatures +Object.proxy -> proxy: pointer, (read-only) Library object this proxy object controls +Object.proxy_group -> proxy_group: pointer, (read-only) Library group duplicator object this proxy object controls +Object.rotation_axis_angle -> rotation_axis_angle: float Angle of Rotation for Axis-Angle rotation representation +Object.rotation_euler -> rotation_euler: float Rotation in Eulers +Object.rotation_mode -> rotation_mode: enum +Object.rotation_quaternion -> rotation_quaternion: float Rotation in Quaternions +Object.scale -> scale: float Scaling of the object +Object.soft_body -> soft_body: pointer, (read-only) Settings for soft body simulation +Object.time_offset -> time_offset: float Animation offset in frames for F-Curve and dupligroup instances +Object.track_axis -> track_axis: enum Axis that points in 'forward' direction +Object.type -> type: enum, (read-only) Type of Object +Object.up_axis -> up_axis: enum Axis that points in the upward direction +Object.vertex_groups -> vertex_groups: collection, (read-only) Vertex groups of the object +ObjectActuator.angular_velocity -> angular_velocity: float Sets the angular velocity +ObjectActuator.damping -> damping: int Number of frames to reach the target velocity +ObjectActuator.derivate_coefficient -> derivate_coefficient: float Not required, high values can cause instability +ObjectActuator.force -> force: float Sets the force +ObjectActuator.force_max_x -> force_max_x: float Set the upper limit for force +ObjectActuator.force_max_y -> force_max_y: float Set the upper limit for force +ObjectActuator.force_max_z -> force_max_z: float Set the upper limit for force +ObjectActuator.force_min_x -> force_min_x: float Set the lower limit for force +ObjectActuator.force_min_y -> force_min_y: float Set the lower limit for force +ObjectActuator.force_min_z -> force_min_z: float Set the lower limit for force +ObjectActuator.integral_coefficient -> integral_coefficient: float Low value (0.01) for slow response, high value (0.5) for fast response +ObjectActuator.linear_velocity -> linear_velocity: float Sets the linear velocity (in Servo mode it sets the target relative linear velocity, it will be achieved by automatic application of force. Null velocity is a valid target) +ObjectActuator.loc -> loc: float Sets the location +ObjectActuator.mode -> mode: enum Specify the motion system +ObjectActuator.proportional_coefficient -> proportional_coefficient: float Typical value is 60x integral coefficient +ObjectActuator.reference_object -> reference_object: pointer Reference object for velocity calculation, leave empty for world reference +ObjectActuator.rot -> rot: float Sets the rotation +ObjectActuator.torque -> torque: float Sets the torque +ObjectBase.object -> object: pointer, (read-only) Object this base links to +ObjectConstraints.active -> active: pointer Active Object constraint +ObstacleFluidSettings.impact_factor -> impact_factor: float This is an unphysical value for moving objects - it controls the impact an obstacle has on the fluid, =0 behaves a bit like outflow (deleting fluid), =1 is default, while >1 results in high forces. Can be used to tweak total mass +ObstacleFluidSettings.partial_slip_factor -> partial_slip_factor: float Amount of mixing between no- and free-slip, 0 is no slip and 1 is free slip +ObstacleFluidSettings.slip_type -> slip_type: enum +ObstacleFluidSettings.volume_initialization -> volume_initialization: enum Volume initialization type +Operator.bl_description -> bl_description: string +Operator.bl_idname -> bl_idname: string +Operator.bl_label -> bl_label: string +Operator.bl_options -> bl_options: enum Options for this operator type +Operator.layout -> layout: pointer, (read-only) +Operator.name -> name: string, (read-only) +Operator.properties -> properties: pointer, (read-only) +OperatorFileListElement.name -> name: string the name of a file or directory within a file list +OperatorMousePath.loc -> loc: float Mouse location +OperatorMousePath.time -> time: float Time of mouse location +OperatorStrokeElement.location -> location: float +OperatorStrokeElement.mouse -> mouse: float +OperatorStrokeElement.pressure -> pressure: float Tablet pressure +OperatorStrokeElement.time -> time: float +OperatorTypeMacro.properties -> properties: pointer, (read-only) +OutflowFluidSettings.volume_initialization -> volume_initialization: enum Volume initialization type +PackedFile.size -> size: int, (read-only) Size of packed file in bytes +Paint.active_brush_index -> active_brush_index: int +Paint.active_brush_name -> active_brush_name: string +Paint.brush -> brush: pointer Active paint brush +Paint.brushes -> brushes: collection, (read-only) Brushes selected for this paint mode +Panel.bl_context -> bl_context: string +Panel.bl_idname -> bl_idname: string +Panel.bl_label -> bl_label: string +Panel.bl_region_type -> bl_region_type: enum +Panel.bl_space_type -> bl_space_type: enum +Panel.layout -> layout: pointer, (read-only) +Panel.text -> text: string +ParentActuator.mode -> mode: enum +ParentActuator.object -> object: pointer Set this object as parent +Particle.alive_state -> alive_state: enum +Particle.angular_velocity -> angular_velocity: float +Particle.birthtime -> birthtime: float +Particle.die_time -> die_time: float +Particle.hair -> hair: collection, (read-only) +Particle.keys -> keys: collection, (read-only) +Particle.lifetime -> lifetime: float +Particle.location -> location: float +Particle.prev_angular_velocity -> prev_angular_velocity: float +Particle.prev_location -> prev_location: float +Particle.prev_rotation -> prev_rotation: float +Particle.prev_velocity -> prev_velocity: float +Particle.rotation -> rotation: float +Particle.size -> size: float +Particle.velocity -> velocity: float +ParticleBrush.count -> count: int Particle count +ParticleBrush.curve -> curve: pointer, (read-only) +ParticleBrush.length_mode -> length_mode: enum +ParticleBrush.puff_mode -> puff_mode: enum +ParticleBrush.size -> size: int Brush size +ParticleBrush.steps -> steps: int Brush steps +ParticleBrush.strength -> strength: float Brush strength +ParticleDupliWeight.count -> count: int The number of times this object is repeated with respect to other objects +ParticleDupliWeight.name -> name: string, (read-only) Particle dupliobject name +ParticleEdit.add_keys -> add_keys: int How many keys to make new particles with +ParticleEdit.brush -> brush: pointer, (read-only) +ParticleEdit.draw_step -> draw_step: int How many steps to draw the path with +ParticleEdit.emitter_distance -> emitter_distance: float Distance to keep particles away from the emitter +ParticleEdit.fade_frames -> fade_frames: int How many frames to fade +ParticleEdit.object -> object: pointer, (read-only) The edited object +ParticleEdit.selection_mode -> selection_mode: enum Particle select and display mode +ParticleEdit.tool -> tool: enum +ParticleEdit.type -> type: enum +ParticleFluidSettings.alpha_influence -> alpha_influence: float Amount of particle alpha change, inverse of size influence: 0=off (all same alpha), 1=full. (large particles get lower alphas, smaller ones higher values) +ParticleFluidSettings.particle_influence -> particle_influence: float Amount of particle size scaling: 0=off (all same size), 1=full (range 0.2-2.0), >1=stronger +ParticleFluidSettings.path -> path: string Directory (and/or filename prefix) to store and load particles from +ParticleHairKey.location -> location: float Location of the hair key in object space +ParticleHairKey.location_hairspace -> location_hairspace: float Location of the hair key in its internal coordinate system, relative to the emitting face +ParticleHairKey.time -> time: float Relative time of key over hair length +ParticleHairKey.weight -> weight: float Weight for cloth simulation +ParticleInstanceModifier.axis -> axis: enum Pole axis for rotation +ParticleInstanceModifier.object -> object: pointer Object that has the particle system +ParticleInstanceModifier.particle_system_number -> particle_system_number: int +ParticleInstanceModifier.position -> position: float Position along path +ParticleInstanceModifier.random_position -> random_position: float Randomize position along path +ParticleKey.angular_velocity -> angular_velocity: float Key angular velocity +ParticleKey.location -> location: float Key location +ParticleKey.rotation -> rotation: float Key rotation quaterion +ParticleKey.time -> time: float Time of key over the simulation +ParticleKey.velocity -> velocity: float Key velocity +ParticleSettings.active_dupliweight -> active_dupliweight: pointer, (read-only) +ParticleSettings.active_dupliweight_index -> active_dupliweight_index: int +ParticleSettings.adaptive_angle -> adaptive_angle: int How many degrees path has to curve to make another render segment +ParticleSettings.adaptive_pix -> adaptive_pix: int How many pixels path has to cover to make another render segment +ParticleSettings.amount -> amount: int Total number of particles +ParticleSettings.angular_velocity_factor -> angular_velocity_factor: float Angular velocity amount +ParticleSettings.angular_velocity_mode -> angular_velocity_mode: enum Particle angular velocity mode +ParticleSettings.animation_data -> animation_data: pointer, (read-only) Animation data for this datablock +ParticleSettings.billboard_align -> billboard_align: enum In respect to what the billboards are aligned +ParticleSettings.billboard_animation -> billboard_animation: enum How to animate billboard textures +ParticleSettings.billboard_object -> billboard_object: pointer Billboards face this object (default is active camera) +ParticleSettings.billboard_offset -> billboard_offset: float +ParticleSettings.billboard_random_tilt -> billboard_random_tilt: float Random tilt of the billboards +ParticleSettings.billboard_split_offset -> billboard_split_offset: enum How to offset billboard textures +ParticleSettings.billboard_tilt -> billboard_tilt: float Tilt of the billboards +ParticleSettings.billboard_uv_split -> billboard_uv_split: int Amount of rows/columns to split UV coordinates for billboards +ParticleSettings.boids -> boids: pointer, (read-only) +ParticleSettings.branch_threshold -> branch_threshold: float Threshold of branching +ParticleSettings.brownian_factor -> brownian_factor: float Specify the amount of Brownian motion +ParticleSettings.child_length -> child_length: float Length of child paths +ParticleSettings.child_length_thres -> child_length_thres: float Amount of particles left untouched by child path length +ParticleSettings.child_nbr -> child_nbr: int Amount of children/parent +ParticleSettings.child_radius -> child_radius: float Radius of children around parent +ParticleSettings.child_random_size -> child_random_size: float Random variation to the size of the child particles +ParticleSettings.child_roundness -> child_roundness: float Roundness of children around parent +ParticleSettings.child_size -> child_size: float A multiplier for the child particle size +ParticleSettings.child_type -> child_type: enum Create child particles +ParticleSettings.clump_factor -> clump_factor: float Amount of clumping +ParticleSettings.clumppow -> clumppow: float Shape of clumping +ParticleSettings.damp_factor -> damp_factor: float Specify the amount of damping +ParticleSettings.display -> display: int Percentage of particles to display in 3D view +ParticleSettings.distribution -> distribution: enum How to distribute particles on selected element +ParticleSettings.drag_factor -> drag_factor: float Specify the amount of air-drag +ParticleSettings.draw_as -> draw_as: enum How particles are drawn in viewport +ParticleSettings.draw_size -> draw_size: int Size of particles on viewport in pixels (0=default) +ParticleSettings.draw_step -> draw_step: int How many steps paths are drawn with (power of 2) +ParticleSettings.dupli_group -> dupli_group: pointer Show Objects in this Group in place of particles +ParticleSettings.dupli_object -> dupli_object: pointer Show this Object in place of particles +ParticleSettings.dupliweights -> dupliweights: collection, (read-only) Weights for all of the objects in the dupli group +ParticleSettings.effect_hair -> effect_hair: float Hair stiffness for effectors +ParticleSettings.effector_weights -> effector_weights: pointer, (read-only) +ParticleSettings.emit_from -> emit_from: enum Where to emit particles from +ParticleSettings.fluid -> fluid: pointer, (read-only) +ParticleSettings.force_field_1 -> force_field_1: pointer, (read-only) +ParticleSettings.force_field_2 -> force_field_2: pointer, (read-only) +ParticleSettings.frame_end -> frame_end: float Frame # to stop emitting particles +ParticleSettings.frame_start -> frame_start: float Frame # to start emitting particles +ParticleSettings.grid_resolution -> grid_resolution: int The resolution of the particle grid +ParticleSettings.hair_step -> hair_step: int Number of hair segments +ParticleSettings.integrator -> integrator: enum Select physics integrator type +ParticleSettings.jitter_factor -> jitter_factor: float Amount of jitter applied to the sampling +ParticleSettings.keyed_loops -> keyed_loops: int Number of times the keys are looped +ParticleSettings.keys_step -> keys_step: int +ParticleSettings.kink -> kink: enum Type of periodic offset on the path +ParticleSettings.kink_amplitude -> kink_amplitude: float The amplitude of the offset +ParticleSettings.kink_axis -> kink_axis: enum Which axis to use for offset +ParticleSettings.kink_frequency -> kink_frequency: float The frequency of the offset (1/total length) +ParticleSettings.kink_shape -> kink_shape: float Adjust the offset to the beginning/end +ParticleSettings.lifetime -> lifetime: float Specify the life span of the particles +ParticleSettings.line_length_head -> line_length_head: float Length of the line's head +ParticleSettings.line_length_tail -> line_length_tail: float Length of the line's tail +ParticleSettings.mass -> mass: float Specify the mass of the particles +ParticleSettings.material -> material: int Specify material used for the particles +ParticleSettings.normal_factor -> normal_factor: float Let the surface normal give the particle a starting speed +ParticleSettings.object_aligned_factor -> object_aligned_factor: float Let the emitter object orientation give the particle a starting speed +ParticleSettings.object_factor -> object_factor: float Let the object give the particle a starting speed +ParticleSettings.particle_factor -> particle_factor: float Let the target particle give the particle a starting speed +ParticleSettings.particle_size -> particle_size: float The size of the particles +ParticleSettings.path_end -> path_end: float End time of drawn path +ParticleSettings.path_start -> path_start: float Starting time of drawn path +ParticleSettings.phase_factor -> phase_factor: float Initial rotation phase +ParticleSettings.physics_type -> physics_type: enum Particle physics type +ParticleSettings.random_factor -> random_factor: float Give the starting speed a random variation +ParticleSettings.random_length -> random_length: float Give path length a random variation +ParticleSettings.random_lifetime -> random_lifetime: float Give the particle life a random variation +ParticleSettings.random_phase_factor -> random_phase_factor: float Randomize rotation phase +ParticleSettings.random_rotation_factor -> random_rotation_factor: float Randomize rotation +ParticleSettings.random_size -> random_size: float Give the particle size a random variation +ParticleSettings.react_event -> react_event: enum The event of target particles to react on +ParticleSettings.reaction_shape -> reaction_shape: float Power of reaction strength dependence on distance to target +ParticleSettings.reactor_factor -> reactor_factor: float Let the vector away from the target particles location give the particle a starting speed +ParticleSettings.ren_as -> ren_as: enum How particles are rendered +ParticleSettings.render_step -> render_step: int How many steps paths are rendered with (power of 2) +ParticleSettings.rendered_child_nbr -> rendered_child_nbr: int Amount of children/parent for rendering +ParticleSettings.rotate_from -> rotate_from: enum +ParticleSettings.rotation_mode -> rotation_mode: enum Particles initial rotation +ParticleSettings.rough1 -> rough1: float Amount of location dependent rough +ParticleSettings.rough1_size -> rough1_size: float Size of location dependent rough +ParticleSettings.rough2 -> rough2: float Amount of random rough +ParticleSettings.rough2_size -> rough2_size: float Size of random rough +ParticleSettings.rough2_thres -> rough2_thres: float Amount of particles left untouched by random rough +ParticleSettings.rough_end_shape -> rough_end_shape: float Shape of end point rough +ParticleSettings.rough_endpoint -> rough_endpoint: float Amount of end point rough +ParticleSettings.simplify_rate -> simplify_rate: float Speed of simplification +ParticleSettings.simplify_refsize -> simplify_refsize: int Reference size in pixels, after which simplification begins +ParticleSettings.simplify_transition -> simplify_transition: float Transition period for fading out strands +ParticleSettings.simplify_viewport -> simplify_viewport: float Speed of Simplification +ParticleSettings.subframes -> subframes: int Subframes to simulate for improved stability and finer granularity simulations +ParticleSettings.tangent_factor -> tangent_factor: float Let the surface tangent give the particle a starting speed +ParticleSettings.tangent_phase -> tangent_phase: float Rotate the surface tangent +ParticleSettings.time_tweak -> time_tweak: float A multiplier for physics timestep (1.0 means one frame = 1/25 seconds) +ParticleSettings.trail_count -> trail_count: int Number of trail particles +ParticleSettings.type -> type: enum +ParticleSettings.userjit -> userjit: int Emission locations / face (0 = automatic) +ParticleSettings.virtual_parents -> virtual_parents: float Relative amount of virtual parents +ParticleSystem.active_particle_target -> active_particle_target: pointer, (read-only) +ParticleSystem.active_particle_target_index -> active_particle_target_index: int +ParticleSystem.billboard_normal_uv -> billboard_normal_uv: string UV Layer to control billboard normals +ParticleSystem.billboard_split_uv -> billboard_split_uv: string UV Layer to control billboard splitting +ParticleSystem.billboard_time_index_uv -> billboard_time_index_uv: string UV Layer to control billboard time index (X-Y) +ParticleSystem.child_particles -> child_particles: collection, (read-only) Child particles generated by the particle system +ParticleSystem.cloth -> cloth: pointer, (read-only) Cloth dynamics for hair +ParticleSystem.name -> name: string Particle system name +ParticleSystem.parent -> parent: pointer Use this object's coordinate system instead of global coordinate system +ParticleSystem.particles -> particles: collection, (read-only) Particles generated by the particle system +ParticleSystem.point_cache -> point_cache: pointer, (read-only) +ParticleSystem.reactor_target_object -> reactor_target_object: pointer For reactor systems, the object that has the target particle system (empty if same object) +ParticleSystem.reactor_target_particle_system -> reactor_target_particle_system: int For reactor systems, index of particle system on the target object +ParticleSystem.seed -> seed: int Offset in the random number table, to get a different randomized result +ParticleSystem.settings -> settings: pointer Particle system settings +ParticleSystem.targets -> targets: collection, (read-only) Target particle systems +ParticleSystem.vertex_group_clump -> vertex_group_clump: string Vertex group to control clump +ParticleSystem.vertex_group_density -> vertex_group_density: string Vertex group to control density +ParticleSystem.vertex_group_field -> vertex_group_field: string Vertex group to control field +ParticleSystem.vertex_group_kink -> vertex_group_kink: string Vertex group to control kink +ParticleSystem.vertex_group_length -> vertex_group_length: string Vertex group to control length +ParticleSystem.vertex_group_rotation -> vertex_group_rotation: string Vertex group to control rotation +ParticleSystem.vertex_group_roughness1 -> vertex_group_roughness1: string Vertex group to control roughness 1 +ParticleSystem.vertex_group_roughness2 -> vertex_group_roughness2: string Vertex group to control roughness 2 +ParticleSystem.vertex_group_roughness_end -> vertex_group_roughness_end: string Vertex group to control roughness end +ParticleSystem.vertex_group_size -> vertex_group_size: string Vertex group to control size +ParticleSystem.vertex_group_tangent -> vertex_group_tangent: string Vertex group to control tangent +ParticleSystem.vertex_group_velocity -> vertex_group_velocity: string Vertex group to control velocity +ParticleSystemModifier.particle_system -> particle_system: pointer, (read-only) Particle System that this modifier controls +ParticleTarget.duration -> duration: float +ParticleTarget.mode -> mode: enum +ParticleTarget.name -> name: string, (read-only) Particle target name +ParticleTarget.object -> object: pointer The object that has the target particle system (empty if same object) +ParticleTarget.system -> system: int The index of particle system on the target object +ParticleTarget.time -> time: float +PivotConstraint.enabled_rotation_range -> enabled_rotation_range: enum Rotation range on which pivoting should occur +PivotConstraint.head_tail -> head_tail: float Target along length of bone: Head=0, Tail=1 +PivotConstraint.offset -> offset: float Offset of pivot from target (when set), or from owner's location (when Fixed Position is off), or the absolute pivot point +PivotConstraint.subtarget -> subtarget: string +PivotConstraint.target -> target: pointer Target Object, defining the position of the pivot when defined +PluginSequence.filename -> filename: string, (read-only) +PointCache.active_point_cache_index -> active_point_cache_index: int +PointCache.filepath -> filepath: string Cache file path +PointCache.frame_end -> frame_end: int Frame on which the simulation stops +PointCache.frame_start -> frame_start: int Frame on which the simulation starts +PointCache.index -> index: int Index number of cache files +PointCache.info -> info: string, (read-only) Info on current cache status +PointCache.name -> name: string Cache name +PointCache.point_cache_list -> point_cache_list: collection, (read-only) Point cache list +PointCache.step -> step: int Number of frames between cached frames +PointDensity.color_ramp -> color_ramp: pointer, (read-only) +PointDensity.color_source -> color_source: enum Data to derive color results from +PointDensity.falloff -> falloff: enum Method of attenuating density by distance from the point +PointDensity.falloff_softness -> falloff_softness: float Softness of the 'soft' falloff option +PointDensity.noise_basis -> noise_basis: enum Noise formula used for turbulence +PointDensity.object -> object: pointer Object to take point data from +PointDensity.particle_cache -> particle_cache: enum Co-ordinate system to cache particles in +PointDensity.particle_system -> particle_system: pointer Particle System to render as points +PointDensity.point_source -> point_source: enum Point data to use as renderable point density +PointDensity.radius -> radius: float Radius from the shaded sample to look for points within +PointDensity.speed_scale -> speed_scale: float Multiplier to bring particle speed within an acceptable range +PointDensity.turbulence_depth -> turbulence_depth: int Level of detail in the added turbulent noise +PointDensity.turbulence_influence -> turbulence_influence: enum Method for driving added turbulent noise +PointDensity.turbulence_size -> turbulence_size: float Scale of the added turbulent noise +PointDensity.turbulence_strength -> turbulence_strength: float +PointDensity.vertices_cache -> vertices_cache: enum Co-ordinate system to cache vertices in +PointDensityTexture.pointdensity -> pointdensity: pointer, (read-only) The point density settings associated with this texture +PointLamp.falloff_curve -> falloff_curve: pointer, (read-only) Custom Lamp Falloff Curve +PointLamp.falloff_type -> falloff_type: enum Intensity Decay with distance +PointLamp.linear_attenuation -> linear_attenuation: float Linear distance attenuation +PointLamp.quadratic_attenuation -> quadratic_attenuation: float Quadratic distance attenuation +PointLamp.shadow_adaptive_threshold -> shadow_adaptive_threshold: float Threshold for Adaptive Sampling (Raytraced shadows) +PointLamp.shadow_color -> shadow_color: float Color of shadows cast by the lamp +PointLamp.shadow_method -> shadow_method: enum Method to compute lamp shadow with +PointLamp.shadow_ray_samples -> shadow_ray_samples: int Amount of samples taken extra (samples x samples) +PointLamp.shadow_ray_sampling_method -> shadow_ray_sampling_method: enum Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower +PointLamp.shadow_soft_size -> shadow_soft_size: float Light size for ray shadow sampling (Raytraced shadows) +PointerProperty.fixed_type -> fixed_type: pointer, (read-only) Fixed pointer type, empty if variable type +Pose.active_bone_group -> active_bone_group: pointer Active bone group for this pose +Pose.active_bone_group_index -> active_bone_group_index: int Active index in bone groups array +Pose.animation_visualisation -> animation_visualisation: pointer, (read-only) Animation data for this datablock +Pose.bone_groups -> bone_groups: collection, (read-only) Groups of the bones +Pose.bones -> bones: collection, (read-only) Individual pose bones for the armature +Pose.ik_param -> ik_param: pointer, (read-only) Parameters for IK solver +Pose.ik_solver -> ik_solver: enum Selection of IK solver for IK chain, current choice is 0 for Legacy, 1 for iTaSC +PoseBone.bone -> bone: pointer, (read-only) Bone associated with this PoseBone +PoseBone.bone_group -> bone_group: pointer Bone Group this pose channel belongs to +PoseBone.bone_group_index -> bone_group_index: int Bone Group this pose channel belongs to (0=no group) +PoseBone.child -> child: pointer, (read-only) Child of this pose bone +PoseBone.constraints -> constraints: collection, (read-only) Constraints that act on this PoseChannel +PoseBone.custom_shape -> custom_shape: pointer Object that defines custom draw type for this bone +PoseBone.custom_shape_transform -> custom_shape_transform: pointer Bone that defines the display transform of this custom shape +PoseBone.head -> head: float, (read-only) Location of head of the channel's bone +PoseBone.ik_lin_weight -> ik_lin_weight: float Weight of scale constraint for IK +PoseBone.ik_max_x -> ik_max_x: float Maximum angles for IK Limit +PoseBone.ik_max_y -> ik_max_y: float Maximum angles for IK Limit +PoseBone.ik_max_z -> ik_max_z: float Maximum angles for IK Limit +PoseBone.ik_min_x -> ik_min_x: float Minimum angles for IK Limit +PoseBone.ik_min_y -> ik_min_y: float Minimum angles for IK Limit +PoseBone.ik_min_z -> ik_min_z: float Minimum angles for IK Limit +PoseBone.ik_rot_weight -> ik_rot_weight: float Weight of rotation constraint for IK +PoseBone.ik_stiffness_x -> ik_stiffness_x: float IK stiffness around the X axis +PoseBone.ik_stiffness_y -> ik_stiffness_y: float IK stiffness around the Y axis +PoseBone.ik_stiffness_z -> ik_stiffness_z: float IK stiffness around the Z axis +PoseBone.ik_stretch -> ik_stretch: float Allow scaling of the bone for IK +PoseBone.location -> location: float +PoseBone.matrix -> matrix: float, (read-only) Final 4x4 matrix for this channel +PoseBone.matrix_channel -> matrix_channel: float, (read-only) 4x4 matrix, before constraints +PoseBone.matrix_local -> matrix_local: float Matrix representing the parent relative location, scale and rotation. Provides an alternative access to these properties. +PoseBone.motion_path -> motion_path: pointer, (read-only) Motion Path for this element +PoseBone.name -> name: string +PoseBone.parent -> parent: pointer, (read-only) Parent of this pose bone +PoseBone.rotation_axis_angle -> rotation_axis_angle: float Angle of Rotation for Axis-Angle rotation representation +PoseBone.rotation_euler -> rotation_euler: float Rotation in Eulers +PoseBone.rotation_mode -> rotation_mode: enum +PoseBone.rotation_quaternion -> rotation_quaternion: float Rotation in Quaternions +PoseBone.scale -> scale: float +PoseBone.tail -> tail: float, (read-only) Location of tail of the channel's bone +PoseBoneConstraints.active -> active: pointer Active PoseChannel constraint +PoseTemplate.name -> name: string +PoseTemplateSettings.active_template_index -> active_template_index: int +PoseTemplateSettings.templates -> templates: collection, (read-only) +Property.description -> description: string, (read-only) Description of the property for tooltips +Property.identifier -> identifier: string, (read-only) Unique name used in the code and scripting +Property.name -> name: string, (read-only) Human readable name +Property.srna -> srna: pointer, (read-only) Struct definition used for properties assigned to this item +Property.subtype -> subtype: enum, (read-only) Semantic interpretation of the property +Property.type -> type: enum, (read-only) Data type of the property +Property.unit -> unit: enum, (read-only) Type of units for this property +PropertyActuator.mode -> mode: enum +PropertyActuator.object -> object: pointer Copy from this Object +PropertyActuator.object_property -> object_property: string Copy this property +PropertyActuator.property -> property: string The name of the property +PropertyActuator.value -> value: string The value to use, use "" around strings +PropertySensor.evaluation_type -> evaluation_type: enum Type of property evaluation +PropertySensor.max_value -> max_value: string Specify maximum value in Interval type +PropertySensor.min_value -> min_value: string Specify minimum value in Interval type +PropertySensor.property -> property: string +PropertySensor.value -> value: string Check for this value in types in Equal or Not Equal types +PythonConstraint.number_of_targets -> number_of_targets: int Usually only 1-3 are needed +PythonConstraint.targets -> targets: collection, (read-only) Target Objects +PythonConstraint.text -> text: pointer The text object that contains the Python script +PythonController.mode -> mode: enum Python script type (textblock or module - faster) +PythonController.module -> module: string Module name and function to run e.g. "someModule.main". Internal texts and external python files can be used +PythonController.text -> text: pointer Text datablock with the python script +RGBANodeSocket.default_value -> default_value: float Default value of the socket when no link is attached +RGBANodeSocket.name -> name: string, (read-only) Socket name +RadarSensor.angle -> angle: float Opening angle of the radar cone +RadarSensor.axis -> axis: enum Specify along which axis the radar cone is cast +RadarSensor.distance -> distance: float Depth of the radar cone +RadarSensor.property -> property: string Only look for Objects with this property +RandomActuator.chance -> chance: float Pick a number between 0 and 1. Success if you stay below this value +RandomActuator.distribution -> distribution: enum Choose the type of distribution +RandomActuator.float_max -> float_max: float Choose a number from a range. Upper boundary of the range +RandomActuator.float_mean -> float_mean: float A normal distribution. Mean of the distribution +RandomActuator.float_min -> float_min: float Choose a number from a range. Lower boundary of the range +RandomActuator.float_value -> float_value: float Always return this number +RandomActuator.half_life_time -> half_life_time: float Negative exponential dropoff +RandomActuator.int_max -> int_max: int Choose a number from a range. Upper boundary of the range +RandomActuator.int_mean -> int_mean: float Expected mean value of the distribution +RandomActuator.int_min -> int_min: int Choose a number from a range. Lower boundary of the range +RandomActuator.int_value -> int_value: int Always return this number +RandomActuator.property -> property: string Assign the random value to this property +RandomActuator.seed -> seed: int Initial seed of the random generator. Use Python for more freedom (choose 0 for not random) +RandomActuator.standard_derivation -> standard_derivation: float A normal distribution. Standard deviation of the distribution +RandomSensor.seed -> seed: int Initial seed of the generator. (Choose 0 for not random) +RaySensor.axis -> axis: enum Specify along which axis the ray is cast +RaySensor.material -> material: string Only look for Objects with this material +RaySensor.property -> property: string Only look for Objects with this property +RaySensor.range -> range: float Sense objects no farther than this distance +RaySensor.ray_type -> ray_type: enum Toggle collision on material or property +Region.height -> height: int, (read-only) Region height +Region.id -> id: int, (read-only) Unique ID for this region +Region.type -> type: enum, (read-only) Type of this region +Region.width -> width: int, (read-only) Region width +RegionView3D.perspective_matrix -> perspective_matrix: float, (read-only) Current perspective matrix of the 3D region +RegionView3D.view_distance -> view_distance: float Distance to the view location +RegionView3D.view_location -> view_location: float View pivot location +RegionView3D.view_matrix -> view_matrix: float, (read-only) Current view matrix of the 3D region +RegionView3D.view_perspective -> view_perspective: enum View Perspective +RegionView3D.view_rotation -> view_rotation: float Rotation in quaternions (keep normalized) +RenderEngine.bl_idname -> bl_idname: string +RenderEngine.bl_label -> bl_label: string +RenderLayer.light_override -> light_override: pointer, (read-only) Group to override all other lights in this render layer +RenderLayer.material_override -> material_override: pointer, (read-only) Material to override all other materials in this render layer +RenderLayer.name -> name: string, (read-only) Render layer name +RenderLayer.passes -> passes: collection, (read-only) +RenderLayer.rect -> rect: float +RenderPass.channel_id -> channel_id: string, (read-only) +RenderPass.channels -> channels: int, (read-only) +RenderPass.name -> name: string, (read-only) +RenderPass.rect -> rect: float +RenderPass.type -> type: enum, (read-only) +RenderResult.layers -> layers: collection, (read-only) +RenderResult.resolution_x -> resolution_x: int, (read-only) +RenderResult.resolution_y -> resolution_y: int, (read-only) +RenderSettings.active_layer_index -> active_layer_index: int Active index in render layer array +RenderSettings.alpha_mode -> alpha_mode: enum Representation of alpha information in the RGBA pixels +RenderSettings.antialiasing_samples -> antialiasing_samples: enum Amount of anti-aliasing samples per pixel +RenderSettings.bake_aa_mode -> bake_aa_mode: enum +RenderSettings.bake_bias -> bake_bias: float Bias towards faces further away from the object (in blender units) +RenderSettings.bake_distance -> bake_distance: float Maximum distance from active object to other object (in blender units +RenderSettings.bake_margin -> bake_margin: int Amount of pixels to extend the baked result with, as post process filter +RenderSettings.bake_normal_space -> bake_normal_space: enum Choose normal space for baking +RenderSettings.bake_quad_split -> bake_quad_split: enum Choose the method used to split a quad into 2 triangles for baking +RenderSettings.bake_type -> bake_type: enum Choose shading information to bake into the image +RenderSettings.border_max_x -> border_max_x: float Sets maximum X value for the render border +RenderSettings.border_max_y -> border_max_y: float Sets maximum Y value for the render border +RenderSettings.border_min_x -> border_min_x: float Sets minimum X value to for the render border +RenderSettings.border_min_y -> border_min_y: float Sets minimum Y value for the render border +RenderSettings.cineon_black -> cineon_black: int Log conversion reference blackpoint +RenderSettings.cineon_gamma -> cineon_gamma: float Log conversion gamma +RenderSettings.cineon_white -> cineon_white: int Log conversion reference whitepoint +RenderSettings.color_mode -> color_mode: enum Choose BW for saving greyscale images, RGB for saving red, green and blue channels, AND RGBA for saving red, green, blue + alpha channels +RenderSettings.display_mode -> display_mode: enum Select where rendered images will be displayed +RenderSettings.dither_intensity -> dither_intensity: float Amount of dithering noise added to the rendered image to break up banding +RenderSettings.edge_color -> edge_color: float +RenderSettings.edge_threshold -> edge_threshold: int Threshold for drawing outlines on geometry edges +RenderSettings.engine -> engine: enum Engine to use for rendering +RenderSettings.field_order -> field_order: enum Order of video fields. Select which lines get rendered first, to create smooth motion for TV output +RenderSettings.file_extension -> file_extension: string, (read-only) The file extension used for saving renders +RenderSettings.file_format -> file_format: enum File format to save the rendered images as +RenderSettings.file_quality -> file_quality: int Quality of JPEG images, AVI Jpeg and SGI movies +RenderSettings.filter_size -> filter_size: float Pixel width over which the reconstruction filter combines samples +RenderSettings.fps -> fps: int Framerate, expressed in frames per second +RenderSettings.fps_base -> fps_base: float Framerate base +RenderSettings.layers -> layers: collection, (read-only) +RenderSettings.motion_blur_samples -> motion_blur_samples: int Number of scene samples to take with motion blur +RenderSettings.motion_blur_shutter -> motion_blur_shutter: float Time taken in frames between shutter open and close +RenderSettings.octree_resolution -> octree_resolution: enum Resolution of raytrace accelerator. Use higher resolutions for larger scenes +RenderSettings.output_path -> output_path: string Directory/name to save animations, # characters defines the position and length of frame numbers +RenderSettings.parts_x -> parts_x: int Number of horizontal tiles to use while rendering +RenderSettings.parts_y -> parts_y: int Number of vertical tiles to use while rendering +RenderSettings.pixel_aspect_x -> pixel_aspect_x: float Horizontal aspect ratio - for anamorphic or non-square pixel output +RenderSettings.pixel_aspect_y -> pixel_aspect_y: float Vertical aspect ratio - for anamorphic or non-square pixel output +RenderSettings.pixel_filter -> pixel_filter: enum Reconstruction filter used for combining anti-aliasing samples +RenderSettings.raytrace_structure -> raytrace_structure: enum Type of raytrace accelerator structure +RenderSettings.resolution_percentage -> resolution_percentage: int Percentage scale for render resolution +RenderSettings.resolution_x -> resolution_x: int Number of horizontal pixels in the rendered image +RenderSettings.resolution_y -> resolution_y: int Number of vertical pixels in the rendered image +RenderSettings.sequencer_gl_preview -> sequencer_gl_preview: enum Method to draw in the sequencer view +RenderSettings.sequencer_gl_render -> sequencer_gl_render: enum Method to draw in the sequencer view +RenderSettings.simplify_ao_sss -> simplify_ao_sss: float Global approximate AA and SSS quality factor +RenderSettings.simplify_child_particles -> simplify_child_particles: float Global child particles percentage +RenderSettings.simplify_shadow_samples -> simplify_shadow_samples: int Global maximum shadow samples +RenderSettings.simplify_subdivision -> simplify_subdivision: int Global maximum subdivision level +RenderSettings.stamp_background -> stamp_background: float Color to use behind stamp text +RenderSettings.stamp_font_size -> stamp_font_size: int Size of the font used when rendering stamp text +RenderSettings.stamp_foreground -> stamp_foreground: float Color to use for stamp text +RenderSettings.stamp_note_text -> stamp_note_text: string Custom text to appear in the stamp note +RenderSettings.threads -> threads: int Number of CPU threads to use simultaneously while rendering (for multi-core/CPU systems) +RenderSettings.threads_mode -> threads_mode: enum Determine the amount of render threads used +RigidBodyJointConstraint.axis_x -> axis_x: float Rotate pivot on X axis in degrees +RigidBodyJointConstraint.axis_y -> axis_y: float Rotate pivot on Y axis in degrees +RigidBodyJointConstraint.axis_z -> axis_z: float Rotate pivot on Z axis in degrees +RigidBodyJointConstraint.child -> child: pointer Child object +RigidBodyJointConstraint.pivot_type -> pivot_type: enum +RigidBodyJointConstraint.pivot_x -> pivot_x: float Offset pivot on X +RigidBodyJointConstraint.pivot_y -> pivot_y: float Offset pivot on Y +RigidBodyJointConstraint.pivot_z -> pivot_z: float Offset pivot on Z +RigidBodyJointConstraint.target -> target: pointer Target Object +SPHFluidSettings.buoyancy -> buoyancy: float +SPHFluidSettings.fluid_radius -> fluid_radius: float Fluid interaction Radius +SPHFluidSettings.rest_density -> rest_density: float Density +SPHFluidSettings.rest_length -> rest_length: float The Spring Rest Length (factor of interaction radius) +SPHFluidSettings.spring_k -> spring_k: float Spring force constant +SPHFluidSettings.stiffness_k -> stiffness_k: float Constant K - Stiffness +SPHFluidSettings.stiffness_knear -> stiffness_knear: float Repulsion factor: stiffness_knear +SPHFluidSettings.viscosity_beta -> viscosity_beta: float Square viscosity factor +SPHFluidSettings.viscosity_omega -> viscosity_omega: float Linear viscosity +Scene.active_keying_set -> active_keying_set: pointer Active Keying Set used to insert/delete keyframes +Scene.active_keying_set_index -> active_keying_set_index: int Current Keying Set index (negative for 'builtin' and positive for 'absolute') +Scene.all_keying_sets -> all_keying_sets: collection, (read-only) All Keying Sets available for use (builtins and Absolute Keying Sets for this Scene) +Scene.animation_data -> animation_data: pointer, (read-only) Animation data for this datablock +Scene.bases -> bases: collection, (read-only) +Scene.camera -> camera: pointer Active camera used for rendering the scene +Scene.cursor_location -> cursor_location: float 3D cursor location +Scene.distance_model -> distance_model: enum Distance model for distance attenuation calculation +Scene.doppler_factor -> doppler_factor: float Pitch factor for Doppler effect calculation +Scene.frame_current -> frame_current: int +Scene.frame_end -> frame_end: int Final frame of the playback/rendering range +Scene.frame_start -> frame_start: int First frame of the playback/rendering range +Scene.frame_step -> frame_step: int Number of frames to skip forward while rendering/playing back each frame +Scene.game_data -> game_data: pointer, (read-only) +Scene.gravity -> gravity: float Constant acceleration in a given direction +Scene.grease_pencil -> grease_pencil: pointer Grease Pencil datablock +Scene.keying_sets -> keying_sets: collection, (read-only) Absolute Keying Sets for this Scene +Scene.network_render -> network_render: pointer, (read-only) Network Render Settings +Scene.nodetree -> nodetree: pointer, (read-only) Compositing node tree +Scene.objects -> objects: collection, (read-only) +Scene.orientations -> orientations: collection, (read-only) +Scene.pose_templates -> pose_templates: pointer, (read-only) Pose Template Settings +Scene.pov_radio_adc_bailout -> pov_radio_adc_bailout: float The adc_bailout for radiosity rays. Use adc_bailout = 0.01 / brightest_ambient_object for good results +Scene.pov_radio_brightness -> pov_radio_brightness: float Amount objects are brightened before being returned upwards to the rest of the system +Scene.pov_radio_count -> pov_radio_count: int Number of rays that are sent out whenever a new radiosity value has to be calculated +Scene.pov_radio_error_bound -> pov_radio_error_bound: float One of the two main speed/quality tuning values, lower values are more accurate +Scene.pov_radio_gray_threshold -> pov_radio_gray_threshold: float One of the two main speed/quality tuning values, lower values are more accurate +Scene.pov_radio_low_error_factor -> pov_radio_low_error_factor: float If you calculate just enough samples, but no more, you will get an image which has slightly blotchy lighting +Scene.pov_radio_minimum_reuse -> pov_radio_minimum_reuse: float Fraction of the screen width which sets the minimum radius of reuse for each sample point (At values higher than 2% expect errors) +Scene.pov_radio_nearest_count -> pov_radio_nearest_count: int Number of old ambient values blended together to create a new interpolated value +Scene.pov_radio_recursion_limit -> pov_radio_recursion_limit: int how many recursion levels are used to calculate the diffuse inter-reflection +Scene.preview_range_frame_end -> preview_range_frame_end: int Alternative end frame for UI playback +Scene.preview_range_frame_start -> preview_range_frame_start: int Alternative start frame for UI playback +Scene.render -> render: pointer, (read-only) +Scene.sequence_editor -> sequence_editor: pointer, (read-only) +Scene.set -> set: pointer Background set scene +Scene.speed_of_sound -> speed_of_sound: float Speed of sound for Doppler effect calculation +Scene.stamp_note -> stamp_note: string User define note for the render stamping +Scene.sync_mode -> sync_mode: enum How to sync playback +Scene.timeline_markers -> timeline_markers: collection, (read-only) Markers used in all timelines for the current scene +Scene.tool_settings -> tool_settings: pointer, (read-only) +Scene.unit_settings -> unit_settings: pointer, (read-only) Unit editing settings +Scene.world -> world: pointer World used for rendering the scene +SceneActuator.camera -> camera: pointer Set this Camera. Leave empty to refer to self object +SceneActuator.mode -> mode: enum +SceneActuator.scene -> scene: pointer Set the Scene to be added/removed/paused/resumed +SceneBases.active -> active: pointer Active object base in the scene +SceneGameData.activity_culling_box_radius -> activity_culling_box_radius: float Radius of the activity bubble, in Manhattan length. Objects outside the box are activity-culled +SceneGameData.depth -> depth: int Displays bit depth of full screen display +SceneGameData.dome_angle -> dome_angle: int Field of View of the Dome - it only works in mode Fisheye and Truncated +SceneGameData.dome_buffer_resolution -> dome_buffer_resolution: float Buffer Resolution - decrease it to increase speed +SceneGameData.dome_mode -> dome_mode: enum Dome physical configurations +SceneGameData.dome_tesselation -> dome_tesselation: int Tessellation level - check the generated mesh in wireframe mode +SceneGameData.dome_text -> dome_text: pointer Custom Warp Mesh data file +SceneGameData.dome_tilt -> dome_tilt: int Camera rotation in horizontal axis +SceneGameData.eye_separation -> eye_separation: float Set the distance between the eyes - the camera focal length/30 should be fine +SceneGameData.fps -> fps: int The nominal number of game frames per second. Physics fixed timestep = 1/fps, independently of actual frame rate +SceneGameData.framing_color -> framing_color: float Set colour of the bars +SceneGameData.framing_type -> framing_type: enum Select the type of Framing you want +SceneGameData.frequency -> frequency: int Displays clock frequency of fullscreen display +SceneGameData.logic_step_max -> logic_step_max: int Sets the maximum number of logic frame per game frame if graphics slows down the game, higher value allows better synchronization with physics +SceneGameData.material_mode -> material_mode: enum Material mode to use for rendering +SceneGameData.occlusion_culling_resolution -> occlusion_culling_resolution: float The size of the occlusion buffer in pixel, use higher value for better precision (slower) +SceneGameData.physics_engine -> physics_engine: enum Physics engine used for physics simulation in the game engine +SceneGameData.physics_gravity -> physics_gravity: float Gravitational constant used for physics simulation in the game engine +SceneGameData.physics_step_max -> physics_step_max: int Sets the maximum number of physics step per game frame if graphics slows down the game, higher value allows physics to keep up with realtime +SceneGameData.physics_step_sub -> physics_step_sub: int Sets the number of simulation substep per physic timestep, higher value give better physics precision +SceneGameData.resolution_x -> resolution_x: int Number of horizontal pixels in the screen +SceneGameData.resolution_y -> resolution_y: int Number of vertical pixels in the screen +SceneGameData.stereo -> stereo: enum +SceneGameData.stereo_mode -> stereo_mode: enum Stereographic techniques +SceneObjects.active -> active: pointer Active object for this scene +SceneRenderLayer.light_override -> light_override: pointer Group to override all other lights in this render layer +SceneRenderLayer.material_override -> material_override: pointer Material to override all other materials in this render layer +SceneRenderLayer.name -> name: string Render layer name +SceneSequence.animation_end_offset -> animation_end_offset: int Animation end offset (trim end) +SceneSequence.animation_start_offset -> animation_start_offset: int Animation start offset (trim start) +SceneSequence.color_balance -> color_balance: pointer, (read-only) +SceneSequence.crop -> crop: pointer, (read-only) +SceneSequence.multiply_colors -> multiply_colors: float +SceneSequence.proxy -> proxy: pointer, (read-only) +SceneSequence.scene -> scene: pointer Scene that this sequence uses +SceneSequence.scene_camera -> scene_camera: pointer Override the scenes active camera +SceneSequence.strobe -> strobe: float Only display every nth frame +SceneSequence.transform -> transform: pointer, (read-only) +Scopes.accuracy -> accuracy: float Proportion of original image source pixel lines to sample +Scopes.histogram -> histogram: pointer, (read-only) Histogram for viewing image statistics +Scopes.vectorscope_alpha -> vectorscope_alpha: float Opacity of the points +Scopes.waveform_alpha -> waveform_alpha: float Opacity of the points +Scopes.waveform_mode -> waveform_mode: enum +Screen.areas -> areas: collection, (read-only) Areas the screen is subdivided into +Screen.scene -> scene: pointer Active scene to be edited in the screen +ScrewModifier.angle -> angle: float Angle of revolution +ScrewModifier.axis -> axis: enum Screw axis +ScrewModifier.iterations -> iterations: int Number of times to apply the screw operation +ScrewModifier.object -> object: pointer Object to define the screw axis +ScrewModifier.render_steps -> render_steps: int Number of steps in the revolution +ScrewModifier.screw_offset -> screw_offset: float Offset the revolution along its axis +ScrewModifier.steps -> steps: int Number of steps in the revolution +Sensor.frequency -> frequency: int Delay between repeated pulses(in logic tics, 0=no delay) +Sensor.name -> name: string Sensor name +Sensor.type -> type: enum +Sequence.blend_mode -> blend_mode: enum +Sequence.blend_opacity -> blend_opacity: float +Sequence.channel -> channel: int Y position of the sequence strip +Sequence.effect_fader -> effect_fader: float +Sequence.frame_final_end -> frame_final_end: int End frame displayed in the sequence editor after offsets are applied +Sequence.frame_final_length -> frame_final_length: int The length of the contents of this strip before the handles are applied +Sequence.frame_final_start -> frame_final_start: int Start frame displayed in the sequence editor after offsets are applied, setting this is equivalent to moving the handle, not the actual start frame +Sequence.frame_length -> frame_length: int, (read-only) The length of the contents of this strip before the handles are applied +Sequence.frame_offset_end -> frame_offset_end: int, (read-only) +Sequence.frame_offset_start -> frame_offset_start: int, (read-only) +Sequence.frame_start -> frame_start: int +Sequence.frame_still_end -> frame_still_end: int, (read-only) +Sequence.frame_still_start -> frame_still_start: int, (read-only) +Sequence.name -> name: string +Sequence.speed_fader -> speed_fader: float +Sequence.type -> type: enum, (read-only) +SequenceColorBalance.gain -> gain: float Color balance gain (highlights) +SequenceColorBalance.gamma -> gamma: float Color balance gamma (midtones) +SequenceColorBalance.lift -> lift: float Color balance lift (shadows) +SequenceCrop.bottom -> bottom: int +SequenceCrop.left -> left: int +SequenceCrop.right -> right: int +SequenceCrop.top -> top: int +SequenceEditor.active_strip -> active_strip: pointer +SequenceEditor.meta_stack -> meta_stack: collection, (read-only) Meta strip stack, last is currently edited meta strip +SequenceEditor.overlay_frame -> overlay_frame: int Sequencers active strip +SequenceEditor.sequences -> sequences: collection, (read-only) +SequenceEditor.sequences_all -> sequences_all: collection, (read-only) +SequenceElement.filename -> filename: string +SequenceProxy.directory -> directory: string Location to store the proxy files +SequenceProxy.filepath -> filepath: string Location of custom proxy file +SequenceTransform.offset_x -> offset_x: int +SequenceTransform.offset_y -> offset_y: int +ShaderNode.type -> type: enum, (read-only) +ShaderNodeExtendedMaterial.material -> material: pointer +ShaderNodeGeometry.color_layer -> color_layer: string +ShaderNodeGeometry.uv_layer -> uv_layer: string +ShaderNodeMapping.location -> location: float Location offset for the input coordinate +ShaderNodeMapping.maximum -> maximum: float Maximum value to clamp coordinate to +ShaderNodeMapping.minimum -> minimum: float Minimum value to clamp coordinate to +ShaderNodeMapping.rotation -> rotation: float Rotation offset for the input coordinate +ShaderNodeMapping.scale -> scale: float Scale adjustment for the input coordinate +ShaderNodeMaterial.material -> material: pointer +ShaderNodeMath.operation -> operation: enum +ShaderNodeMixRGB.blend_type -> blend_type: enum +ShaderNodeRGBCurve.mapping -> mapping: pointer, (read-only) +ShaderNodeTexture.node_output -> node_output: int For node-based textures, which output node to use +ShaderNodeTexture.texture -> texture: pointer +ShaderNodeValToRGB.color_ramp -> color_ramp: pointer, (read-only) +ShaderNodeVectorCurve.mapping -> mapping: pointer, (read-only) +ShaderNodeVectorMath.operation -> operation: enum +ShapeActionActuator.action -> action: pointer +ShapeActionActuator.blendin -> blendin: int Number of frames of motion blending +ShapeActionActuator.frame_end -> frame_end: int +ShapeActionActuator.frame_property -> frame_property: string Assign the action's current frame number to this property +ShapeActionActuator.frame_start -> frame_start: int +ShapeActionActuator.mode -> mode: enum Action playback type +ShapeActionActuator.priority -> priority: int Execution priority - lower numbers will override actions with higher numbers. With 2 or more actions at once, the overriding channels must be lower in the stack +ShapeActionActuator.property -> property: string Use this property to define the Action position +ShapeKey.data -> data: collection, (read-only) +ShapeKey.frame -> frame: float, (read-only) Frame for absolute keys +ShapeKey.interpolation -> interpolation: enum Interpolation type +ShapeKey.name -> name: string +ShapeKey.relative_key -> relative_key: pointer Shape used as a relative key +ShapeKey.slider_max -> slider_max: float Maximum for slider +ShapeKey.slider_min -> slider_min: float Minimum for slider +ShapeKey.value -> value: float Value of shape key at the current frame +ShapeKey.vertex_group -> vertex_group: string Vertex weight group, to blend with basis shape +ShapeKeyBezierPoint.co -> co: float +ShapeKeyBezierPoint.handle_1_co -> handle_1_co: float +ShapeKeyBezierPoint.handle_2_co -> handle_2_co: float +ShapeKeyCurvePoint.co -> co: float +ShapeKeyCurvePoint.tilt -> tilt: float +ShapeKeyPoint.co -> co: float +ShrinkwrapConstraint.distance -> distance: float Distance to Target +ShrinkwrapConstraint.shrinkwrap_type -> shrinkwrap_type: enum Selects type of shrinkwrap algorithm for target position +ShrinkwrapConstraint.target -> target: pointer Target Object +ShrinkwrapModifier.auxiliary_target -> auxiliary_target: pointer Additional mesh target to shrink to +ShrinkwrapModifier.mode -> mode: enum +ShrinkwrapModifier.offset -> offset: float Distance to keep from the target +ShrinkwrapModifier.subsurf_levels -> subsurf_levels: int Number of subdivisions that must be performed before extracting vertices' positions and normals +ShrinkwrapModifier.target -> target: pointer Mesh target to shrink to +ShrinkwrapModifier.vertex_group -> vertex_group: string Vertex group name +SimpleDeformModifier.factor -> factor: float +SimpleDeformModifier.limits -> limits: float Lower/Upper limits for deform +SimpleDeformModifier.mode -> mode: enum +SimpleDeformModifier.origin -> origin: pointer Origin of modifier space coordinates +SimpleDeformModifier.vertex_group -> vertex_group: string Vertex group name +SmokeDomainSettings.alpha -> alpha: float Higher value results in sinking smoke +SmokeDomainSettings.amplify -> amplify: int Enhance the resolution of smoke by this factor using noise +SmokeDomainSettings.beta -> beta: float Higher value results in faster rising smoke +SmokeDomainSettings.coll_group -> coll_group: pointer Limit collisions to this group +SmokeDomainSettings.dissolve_speed -> dissolve_speed: int Dissolve Speed +SmokeDomainSettings.eff_group -> eff_group: pointer Limit effectors to this group +SmokeDomainSettings.effector_weights -> effector_weights: pointer, (read-only) +SmokeDomainSettings.fluid_group -> fluid_group: pointer Limit fluid objects to this group +SmokeDomainSettings.maxres -> maxres: int Maximal resolution used in the fluid domain +SmokeDomainSettings.noise_type -> noise_type: enum Noise method which is used for creating the high resolution +SmokeDomainSettings.point_cache_high -> point_cache_high: pointer, (read-only) +SmokeDomainSettings.point_cache_low -> point_cache_low: pointer, (read-only) +SmokeDomainSettings.smoke_cache_comp -> smoke_cache_comp: enum Compression method to be used +SmokeDomainSettings.smoke_cache_high_comp -> smoke_cache_high_comp: enum Compression method to be used +SmokeDomainSettings.strength -> strength: float Strength of wavelet noise +SmokeFlowSettings.density -> density: float +SmokeFlowSettings.psys -> psys: pointer Particle systems emitted from the object +SmokeFlowSettings.temperature -> temperature: float Temperature difference to ambient temperature +SmokeModifier.coll_settings -> coll_settings: pointer, (read-only) +SmokeModifier.domain_settings -> domain_settings: pointer, (read-only) +SmokeModifier.flow_settings -> flow_settings: pointer, (read-only) +SmokeModifier.smoke_type -> smoke_type: enum +SmoothModifier.factor -> factor: float +SmoothModifier.repeat -> repeat: int +SmoothModifier.vertex_group -> vertex_group: string Vertex group name +SoftBodyModifier.point_cache -> point_cache: pointer, (read-only) +SoftBodyModifier.settings -> settings: pointer, (read-only) +SoftBodySettings.aero -> aero: float Make edges 'sail' +SoftBodySettings.aerodynamics_type -> aerodynamics_type: enum Method of calculating aerodynamic interaction +SoftBodySettings.ball_damp -> ball_damp: float Blending to inelastic collision +SoftBodySettings.ball_size -> ball_size: float Absolute ball size or factor if not manual adjusted +SoftBodySettings.ball_stiff -> ball_stiff: float Ball inflating pressure +SoftBodySettings.bending -> bending: float Bending Stiffness +SoftBodySettings.choke -> choke: int 'Viscosity' inside collision target +SoftBodySettings.collision_type -> collision_type: enum Choose Collision Type +SoftBodySettings.damp -> damp: float Edge spring friction +SoftBodySettings.effector_weights -> effector_weights: pointer, (read-only) +SoftBodySettings.error_limit -> error_limit: float The Runge-Kutta ODE solver error limit, low value gives more precision, high values speed +SoftBodySettings.friction -> friction: float General media friction for point movements +SoftBodySettings.fuzzy -> fuzzy: int Fuzziness while on collision, high values make collsion handling faster but less stable +SoftBodySettings.goal_default -> goal_default: float Default Goal (vertex target position) value, when no Vertex Group used +SoftBodySettings.goal_friction -> goal_friction: float Goal (vertex target position) friction +SoftBodySettings.goal_max -> goal_max: float Goal maximum, vertex weights are scaled to match this range +SoftBodySettings.goal_min -> goal_min: float Goal minimum, vertex weights are scaled to match this range +SoftBodySettings.goal_spring -> goal_spring: float Goal (vertex target position) spring stiffness +SoftBodySettings.goal_vertex_group -> goal_vertex_group: string Control point weight values +SoftBodySettings.gravity -> gravity: float Apply gravitation to point movement +SoftBodySettings.lcom -> lcom: float Location of Center of mass +SoftBodySettings.lrot -> lrot: float Estimated rotation matrix +SoftBodySettings.lscale -> lscale: float Estimated scale matrix +SoftBodySettings.mass -> mass: float General Mass value +SoftBodySettings.mass_vertex_group -> mass_vertex_group: string Control point mass values +SoftBodySettings.maxstep -> maxstep: int Maximal # solver steps/frame +SoftBodySettings.minstep -> minstep: int Minimal # solver steps/frame +SoftBodySettings.plastic -> plastic: float Permanent deform +SoftBodySettings.pull -> pull: float Edge spring stiffness when longer than rest length +SoftBodySettings.push -> push: float Edge spring stiffness when shorter than rest length +SoftBodySettings.shear -> shear: float Shear Stiffness +SoftBodySettings.speed -> speed: float Tweak timing for physics to control frequency and speed +SoftBodySettings.spring_length -> spring_length: float Alter spring length to shrink/blow up (unit %) 0 to disable +SoftBodySettings.spring_vertex_group -> spring_vertex_group: string Control point spring strength values +SolidifyModifier.edge_crease_inner -> edge_crease_inner: float Assign a crease to inner edges +SolidifyModifier.edge_crease_outer -> edge_crease_outer: float Assign a crease to outer edges +SolidifyModifier.edge_crease_rim -> edge_crease_rim: float Assign a crease to the edges making up the rim +SolidifyModifier.offset -> offset: float +SolidifyModifier.thickness -> thickness: float Thickness of the shell +SolidifyModifier.vertex_group -> vertex_group: string Vertex group name +Sound.filepath -> filepath: string Sound sample file used by this Sound datablock +Sound.packed_file -> packed_file: pointer, (read-only) +SoundActuator.cone_inner_angle_3d -> cone_inner_angle_3d: float The angle of the inner cone +SoundActuator.cone_outer_angle_3d -> cone_outer_angle_3d: float The angle of the outer cone +SoundActuator.cone_outer_gain_3d -> cone_outer_gain_3d: float The gain outside the outer cone. The gain in the outer cone will be interpolated between this value and the normal gain in the inner cone +SoundActuator.max_distance_3d -> max_distance_3d: float The maximum distance at which you can hear the sound +SoundActuator.maximum_gain_3d -> maximum_gain_3d: float The maximum gain of the sound, no matter how near it is +SoundActuator.minimum_gain_3d -> minimum_gain_3d: float The minimum gain of the sound, no matter how far it is away +SoundActuator.mode -> mode: enum +SoundActuator.pitch -> pitch: float Sets the pitch of the sound +SoundActuator.reference_distance_3d -> reference_distance_3d: float The distance where the sound has a gain of 1.0 +SoundActuator.rolloff_factor_3d -> rolloff_factor_3d: float The influence factor on volume depending on distance +SoundActuator.sound -> sound: pointer +SoundActuator.volume -> volume: float Sets the initial volume of the sound +SoundSequence.animation_end_offset -> animation_end_offset: int Animation end offset (trim end) +SoundSequence.animation_start_offset -> animation_start_offset: int Animation start offset (trim start) +SoundSequence.attenuation -> attenuation: float Attenuation in dezibel +SoundSequence.filepath -> filepath: string +SoundSequence.sound -> sound: pointer, (read-only) Sound datablock used by this sequence +SoundSequence.volume -> volume: float Playback volume of the sound +Space.type -> type: enum, (read-only) Space data type +SpaceConsole.console_type -> console_type: enum Console type +SpaceConsole.font_size -> font_size: int Font size to use for displaying the text +SpaceConsole.history -> history: collection, (read-only) Command history +SpaceConsole.language -> language: string Command line prompt language +SpaceConsole.prompt -> prompt: string Command line prompt +SpaceConsole.scrollback -> scrollback: collection, (read-only) Command output +SpaceConsole.selection_end -> selection_end: int +SpaceConsole.selection_start -> selection_start: int +SpaceDopeSheetEditor.action -> action: pointer Action displayed and edited in this space +SpaceDopeSheetEditor.autosnap -> autosnap: enum Automatic time snapping settings for transformations +SpaceDopeSheetEditor.dopesheet -> dopesheet: pointer, (read-only) Settings for filtering animation data +SpaceDopeSheetEditor.mode -> mode: enum Editing context being displayed +SpaceFileBrowser.params -> params: pointer, (read-only) Parameters and Settings for the Filebrowser +SpaceGraphEditor.autosnap -> autosnap: enum Automatic time snapping settings for transformations +SpaceGraphEditor.cursor_value -> cursor_value: float Graph Editor 2D-Value cursor - Y-Value component +SpaceGraphEditor.dopesheet -> dopesheet: pointer, (read-only) Settings for filtering animation data +SpaceGraphEditor.mode -> mode: enum Editing context being displayed +SpaceGraphEditor.pivot_point -> pivot_point: enum Pivot center for rotation/scaling +SpaceImageEditor.curves -> curves: pointer, (read-only) Color curve mapping to use for displaying the image +SpaceImageEditor.draw_channels -> draw_channels: enum Channels of the image to draw +SpaceImageEditor.grease_pencil -> grease_pencil: pointer Grease pencil data for this space +SpaceImageEditor.image -> image: pointer Image displayed and edited in this space +SpaceImageEditor.image_user -> image_user: pointer, (read-only) Parameters defining which layer, pass and frame of the image is displayed +SpaceImageEditor.sample_histogram -> sample_histogram: pointer, (read-only) Sampled colors along line +SpaceImageEditor.scopes -> scopes: pointer, (read-only) Scopes to visualize image statistics. +SpaceImageEditor.uv_editor -> uv_editor: pointer, (read-only) UV editor settings +SpaceNLA.autosnap -> autosnap: enum Automatic time snapping settings for transformations +SpaceNLA.dopesheet -> dopesheet: pointer, (read-only) Settings for filtering animation data +SpaceNodeEditor.id -> id: pointer, (read-only) Datablock whose nodes are being edited +SpaceNodeEditor.id_from -> id_from: pointer, (read-only) Datablock from which the edited datablock is linked +SpaceNodeEditor.nodetree -> nodetree: pointer, (read-only) Node tree being displayed and edited +SpaceNodeEditor.texture_type -> texture_type: enum Type of data to take texture from +SpaceNodeEditor.tree_type -> tree_type: enum Node tree type to display and edit +SpaceOutliner.display_filter -> display_filter: string Live search filtering string +SpaceOutliner.display_mode -> display_mode: enum Type of information to display +SpaceProperties.align -> align: enum Arrangement of the panels +SpaceProperties.context -> context: enum Type of active data to display and edit +SpaceProperties.pin_id -> pin_id: pointer +SpaceSequenceEditor.display_channel -> display_channel: int The channel number shown in the image preview. 0 is the result of all strips combined +SpaceSequenceEditor.display_mode -> display_mode: enum The view mode to use for displaying sequencer output +SpaceSequenceEditor.draw_overexposed -> draw_overexposed: int Show overexposed areas with zebra stripes +SpaceSequenceEditor.grease_pencil -> grease_pencil: pointer, (read-only) Grease pencil data for this space +SpaceSequenceEditor.offset_x -> offset_x: float Offsets image horizontally from the view center +SpaceSequenceEditor.offset_y -> offset_y: float Offsets image horizontally from the view center +SpaceSequenceEditor.proxy_render_size -> proxy_render_size: enum Draw preview using full resolution or different proxy resolutions +SpaceSequenceEditor.view_type -> view_type: enum The type of the Sequencer view (sequencer, preview or both) +SpaceSequenceEditor.zoom -> zoom: float Display zoom level +SpaceTextEditor.find_text -> find_text: string Text to search for with the find tool +SpaceTextEditor.font_size -> font_size: int Font size to use for displaying the text +SpaceTextEditor.replace_text -> replace_text: string Text to replace selected text with using the replace tool +SpaceTextEditor.tab_width -> tab_width: int Number of spaces to display tabs with +SpaceTextEditor.text -> text: pointer Text displayed and edited in this space +SpaceUVEditor.cursor_location -> cursor_location: float 2D cursor location for this view +SpaceUVEditor.draw_stretch_type -> draw_stretch_type: enum Type of stretch to draw +SpaceUVEditor.edge_draw_type -> edge_draw_type: enum Draw type for drawing UV edges +SpaceUVEditor.pivot -> pivot: enum Rotation/Scaling Pivot +SpaceUVEditor.sticky_selection_mode -> sticky_selection_mode: enum Automatically select also UVs sharing the same vertex as the ones being selected +SpaceUserPreferences.filter -> filter: string Search term for filtering in the UI +SpaceView3D.background_images -> background_images: collection, (read-only) List of background images +SpaceView3D.camera -> camera: pointer Active camera used in this view (when unlocked from the scene's active camera) +SpaceView3D.clip_end -> clip_end: float 3D View far clipping distance +SpaceView3D.clip_start -> clip_start: float 3D View near clipping distance +SpaceView3D.current_orientation -> current_orientation: pointer, (read-only) Current Transformation orientation +SpaceView3D.cursor_location -> cursor_location: float 3D cursor location for this view (dependent on local view setting) +SpaceView3D.grid_lines -> grid_lines: int The number of grid lines to display in perspective view +SpaceView3D.grid_spacing -> grid_spacing: float The distance between 3D View grid lines +SpaceView3D.grid_subdivisions -> grid_subdivisions: int The number of subdivisions between grid lines +SpaceView3D.lens -> lens: float Lens angle (mm) in perspective view +SpaceView3D.local_view -> local_view: pointer, (read-only) Display an isolated sub-set of objects, apart from the scene visibility +SpaceView3D.lock_bone -> lock_bone: string 3D View center is locked to this bone's position +SpaceView3D.lock_object -> lock_object: pointer 3D View center is locked to this object's position +SpaceView3D.pivot_point -> pivot_point: enum Pivot center for rotation/scaling +SpaceView3D.region_3d -> region_3d: pointer, (read-only) 3D region in this space, in case of quad view the camera region +SpaceView3D.region_quadview -> region_quadview: pointer, (read-only) 3D region that defines the quad view settings +SpaceView3D.transform_orientation -> transform_orientation: enum Transformation orientation +SpaceView3D.viewport_shading -> viewport_shading: enum Method to display/shade objects in the 3D View +SpeedControlSequence.global_speed -> global_speed: float +Spline.bezier_points -> bezier_points: collection, (read-only) Collection of points for bezier curves only +Spline.character_index -> character_index: int, (read-only) Location of this character in the text data (only for text curves) +Spline.material_index -> material_index: int +Spline.order_u -> order_u: int Nurbs order in the U direction (For splines and surfaces), Higher values let points influence a greater area +Spline.order_v -> order_v: int Nurbs order in the V direction (For surfaces only), Higher values let points influence a greater area +Spline.point_count_u -> point_count_u: int, (read-only) Total number points for the curve or surface in the U direction +Spline.point_count_v -> point_count_v: int, (read-only) Total number points for the surface on the V direction +Spline.points -> points: collection, (read-only) Collection of points that make up this poly or nurbs spline +Spline.radius_interpolation -> radius_interpolation: enum The type of radius interpolation for Bezier curves +Spline.resolution_u -> resolution_u: int Curve or Surface subdivisions per segment +Spline.resolution_v -> resolution_v: int Surface subdivisions per segment +Spline.tilt_interpolation -> tilt_interpolation: enum The type of tilt interpolation for 3D, Bezier curves +Spline.type -> type: enum The interpolation type for this curve element +SplineIKConstraint.chain_length -> chain_length: int How many bones are included in the chain +SplineIKConstraint.joint_bindings -> joint_bindings: float (EXPERIENCED USERS ONLY) The relative positions of the joints along the chain as percentages +SplineIKConstraint.target -> target: pointer Curve that controls this relationship +SplineIKConstraint.xz_scaling_mode -> xz_scaling_mode: enum Method used for determining the scaling of the X and Z axes of the bones +SplinePoint.co -> co: float Point coordinates +SplinePoint.radius -> radius: float, (read-only) Radius for bevelling +SplinePoint.tilt -> tilt: float Tilt in 3D View +SplinePoint.weight -> weight: float Nurbs weight +SplinePoint.weight_softbody -> weight_softbody: float Softbody goal weight +SpotLamp.compression_threshold -> compression_threshold: float Deep shadow map compression threshold +SpotLamp.falloff_curve -> falloff_curve: pointer, (read-only) Custom Lamp Falloff Curve +SpotLamp.falloff_type -> falloff_type: enum Intensity Decay with distance +SpotLamp.halo_intensity -> halo_intensity: float Brightness of the spotlight's halo cone (Buffer Shadows) +SpotLamp.halo_step -> halo_step: int Volumetric halo sampling frequency +SpotLamp.linear_attenuation -> linear_attenuation: float Linear distance attenuation +SpotLamp.quadratic_attenuation -> quadratic_attenuation: float Quadratic distance attenuation +SpotLamp.shadow_adaptive_threshold -> shadow_adaptive_threshold: float Threshold for Adaptive Sampling (Raytraced shadows) +SpotLamp.shadow_buffer_bias -> shadow_buffer_bias: float Shadow buffer sampling bias +SpotLamp.shadow_buffer_clip_end -> shadow_buffer_clip_end: float Shadow map clip end beyond which objects will not generate shadows +SpotLamp.shadow_buffer_clip_start -> shadow_buffer_clip_start: float Shadow map clip start: objects closer will not generate shadows +SpotLamp.shadow_buffer_samples -> shadow_buffer_samples: int Number of shadow buffer samples +SpotLamp.shadow_buffer_size -> shadow_buffer_size: int Resolution of the shadow buffer, higher values give crisper shadows but use more memory +SpotLamp.shadow_buffer_soft -> shadow_buffer_soft: float Size of shadow buffer sampling area +SpotLamp.shadow_buffer_type -> shadow_buffer_type: enum Type of shadow buffer +SpotLamp.shadow_color -> shadow_color: float Color of shadows cast by the lamp +SpotLamp.shadow_filter_type -> shadow_filter_type: enum Type of shadow filter (Buffer Shadows) +SpotLamp.shadow_method -> shadow_method: enum Method to compute lamp shadow with +SpotLamp.shadow_ray_samples -> shadow_ray_samples: int Amount of samples taken extra (samples x samples) +SpotLamp.shadow_ray_sampling_method -> shadow_ray_sampling_method: enum Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower +SpotLamp.shadow_sample_buffers -> shadow_sample_buffers: enum Number of shadow buffers to render for better AA, this increases memory usage +SpotLamp.shadow_soft_size -> shadow_soft_size: float Light size for ray shadow sampling (Raytraced shadows) +SpotLamp.spot_blend -> spot_blend: float The softness of the spotlight edge +SpotLamp.spot_size -> spot_size: float Angle of the spotlight beam in degrees +StateActuator.operation -> operation: enum Select the bit operation on object state mask +StretchToConstraint.bulge -> bulge: float Factor between volume variation and stretching +StretchToConstraint.head_tail -> head_tail: float Target along length of bone: Head=0, Tail=1 +StretchToConstraint.keep_axis -> keep_axis: enum Axis to maintain during stretch +StretchToConstraint.original_length -> original_length: float Length at rest position +StretchToConstraint.subtarget -> subtarget: string +StretchToConstraint.target -> target: pointer Target Object +StretchToConstraint.volume -> volume: enum Maintain the object's volume as it stretches +StringProperty.default -> default: string, (read-only) string default value +StringProperty.max_length -> max_length: int, (read-only) Maximum length of the string, 0 means unlimited +Struct.base -> base: pointer, (read-only) Struct definition this is derived from +Struct.description -> description: string, (read-only) Description of the Struct's purpose +Struct.functions -> functions: collection, (read-only) +Struct.identifier -> identifier: string, (read-only) Unique name used in the code and scripting +Struct.name -> name: string, (read-only) Human readable name +Struct.name_property -> name_property: pointer, (read-only) Property that gives the name of the struct +Struct.nested -> nested: pointer, (read-only) Struct in which this struct is always nested, and to which it logically belongs +Struct.properties -> properties: collection, (read-only) Properties in the struct +StucciTexture.noise_basis -> noise_basis: enum Sets the noise basis used for turbulence +StucciTexture.noise_size -> noise_size: float Sets scaling for noise input +StucciTexture.noise_type -> noise_type: enum +StucciTexture.stype -> stype: enum +StucciTexture.turbulence -> turbulence: float Sets the turbulence of the bandnoise and ringnoise types +SubsurfModifier.levels -> levels: int Number of subdivisions to perform +SubsurfModifier.render_levels -> render_levels: int Number of subdivisions to perform when rendering +SubsurfModifier.subdivision_type -> subdivision_type: enum Selects type of subdivision algorithm +SunLamp.shadow_adaptive_threshold -> shadow_adaptive_threshold: float Threshold for Adaptive Sampling (Raytraced shadows) +SunLamp.shadow_color -> shadow_color: float Color of shadows cast by the lamp +SunLamp.shadow_method -> shadow_method: enum Method to compute lamp shadow with +SunLamp.shadow_ray_samples -> shadow_ray_samples: int Amount of samples taken extra (samples x samples) +SunLamp.shadow_ray_sampling_method -> shadow_ray_sampling_method: enum Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower +SunLamp.shadow_soft_size -> shadow_soft_size: float Light size for ray shadow sampling (Raytraced shadows) +SunLamp.sky -> sky: pointer, (read-only) Sky related settings for sun lamps +TexMapping.location -> location: float +TexMapping.maximum -> maximum: float Maximum value for clipping +TexMapping.minimum -> minimum: float Minimum value for clipping +TexMapping.rotation -> rotation: float +TexMapping.scale -> scale: float +Text.current_character -> current_character: int, (read-only) Index of current character in current line, and also start index of character in selection if one exists +Text.current_line -> current_line: pointer, (read-only) Current line, and start line of selection if one exists +Text.filepath -> filepath: string Filename of the text file +Text.lines -> lines: collection, (read-only) Lines of text +Text.markers -> markers: collection, (read-only) Text markers highlighting part of the text +Text.selection_end_character -> selection_end_character: int, (read-only) Index of character after end of selection in the selection end line +Text.selection_end_line -> selection_end_line: pointer, (read-only) End line of selection +TextBox.height -> height: float +TextBox.width -> width: float +TextBox.x -> x: float +TextBox.y -> y: float +TextCurve.active_textbox -> active_textbox: int +TextCurve.body -> body: string contents of this text object +TextCurve.edit_format -> edit_format: pointer, (read-only) Editing settings character formatting +TextCurve.family -> family: string Use Blender Objects as font characters. Give font objects a common name followed by the character it represents, eg. familya, familyb etc, and turn on Verts Duplication +TextCurve.font -> font: pointer +TextCurve.line_dist -> line_dist: float +TextCurve.offset_x -> offset_x: float Horizontal offset from the object origin +TextCurve.offset_y -> offset_y: float Vertical offset from the object origin +TextCurve.shear -> shear: float Italic angle of the characters +TextCurve.spacemode -> spacemode: enum Text align from the object center +TextCurve.spacing -> spacing: float +TextCurve.text_on_curve -> text_on_curve: pointer Curve deforming text object +TextCurve.text_size -> text_size: float +TextCurve.textboxes -> textboxes: collection, (read-only) +TextCurve.ul_height -> ul_height: float +TextCurve.ul_position -> ul_position: float Vertical position of underline +TextCurve.word_spacing -> word_spacing: float +TextLine.line -> line: string Text in the line +TextMarker.color -> color: float Color to display the marker with +TextMarker.end -> end: int, (read-only) Start position of the marker in the line +TextMarker.group -> group: int, (read-only) +TextMarker.line -> line: int, (read-only) Line in which the marker is located +TextMarker.start -> start: int, (read-only) Start position of the marker in the line +Texture.animation_data -> animation_data: pointer, (read-only) Animation data for this datablock +Texture.brightness -> brightness: float +Texture.color_ramp -> color_ramp: pointer, (read-only) +Texture.contrast -> contrast: float +Texture.factor_blue -> factor_blue: float +Texture.factor_green -> factor_green: float +Texture.factor_red -> factor_red: float +Texture.node_tree -> node_tree: pointer, (read-only) Node tree for node-based textures +Texture.saturation -> saturation: float +Texture.type -> type: enum +TextureNode.type -> type: enum, (read-only) +TextureNodeBricks.offset -> offset: float +TextureNodeBricks.offset_frequency -> offset_frequency: int Offset every N rows +TextureNodeBricks.squash -> squash: float +TextureNodeBricks.squash_frequency -> squash_frequency: int Squash every N rows +TextureNodeCurveRGB.mapping -> mapping: pointer, (read-only) +TextureNodeCurveTime.curve -> curve: pointer, (read-only) +TextureNodeCurveTime.end -> end: int +TextureNodeCurveTime.start -> start: int +TextureNodeImage.image -> image: pointer +TextureNodeMath.operation -> operation: enum +TextureNodeMixRGB.blend_type -> blend_type: enum +TextureNodeOutput.output_name -> output_name: string +TextureNodeTexture.node_output -> node_output: int For node-based textures, which output node to use +TextureNodeTexture.texture -> texture: pointer +TextureNodeValToRGB.color_ramp -> color_ramp: pointer, (read-only) +TextureSlot.blend_type -> blend_type: enum +TextureSlot.color -> color: float The default color for textures that don't return RGB +TextureSlot.default_value -> default_value: float Value to use for Ref, Spec, Amb, Emit, Alpha, RayMir, TransLu and Hard +TextureSlot.name -> name: string, (read-only) Texture slot name +TextureSlot.offset -> offset: float Fine tunes texture mapping X, Y and Z locations +TextureSlot.output_node -> output_node: enum Which output node to use, for node-based textures +TextureSlot.size -> size: float Sets scaling for the texture's X, Y and Z sizes +TextureSlot.texture -> texture: pointer Texture datablock used by this texture slot +Theme.bone_color_sets -> bone_color_sets: collection, (read-only) +Theme.console -> console: pointer, (read-only) +Theme.dopesheet_editor -> dopesheet_editor: pointer, (read-only) +Theme.file_browser -> file_browser: pointer, (read-only) +Theme.graph_editor -> graph_editor: pointer, (read-only) +Theme.image_editor -> image_editor: pointer, (read-only) +Theme.info -> info: pointer, (read-only) +Theme.logic_editor -> logic_editor: pointer, (read-only) +Theme.name -> name: string Name of the theme +Theme.nla_editor -> nla_editor: pointer, (read-only) +Theme.node_editor -> node_editor: pointer, (read-only) +Theme.outliner -> outliner: pointer, (read-only) +Theme.properties -> properties: pointer, (read-only) +Theme.sequence_editor -> sequence_editor: pointer, (read-only) +Theme.text_editor -> text_editor: pointer, (read-only) +Theme.theme_area -> theme_area: enum +Theme.timeline -> timeline: pointer, (read-only) +Theme.user_interface -> user_interface: pointer, (read-only) +Theme.user_preferences -> user_preferences: pointer, (read-only) +Theme.view_3d -> view_3d: pointer, (read-only) +ThemeAudioWindow.back -> back: float +ThemeAudioWindow.button -> button: float +ThemeAudioWindow.button_text -> button_text: float +ThemeAudioWindow.button_text_hi -> button_text_hi: float +ThemeAudioWindow.button_title -> button_title: float +ThemeAudioWindow.frame_current -> frame_current: float +ThemeAudioWindow.grid -> grid: float +ThemeAudioWindow.header -> header: float +ThemeAudioWindow.header_text -> header_text: float +ThemeAudioWindow.header_text_hi -> header_text_hi: float +ThemeAudioWindow.text -> text: float +ThemeAudioWindow.text_hi -> text_hi: float +ThemeAudioWindow.title -> title: float +ThemeAudioWindow.window_sliders -> window_sliders: float +ThemeBoneColorSet.active -> active: float Color used for active bones +ThemeBoneColorSet.normal -> normal: float Color used for the surface of bones +ThemeBoneColorSet.selected -> selected: float Color used for selected bones +ThemeConsole.back -> back: float +ThemeConsole.button -> button: float +ThemeConsole.button_text -> button_text: float +ThemeConsole.button_text_hi -> button_text_hi: float +ThemeConsole.button_title -> button_title: float +ThemeConsole.cursor -> cursor: float +ThemeConsole.header -> header: float +ThemeConsole.header_text -> header_text: float +ThemeConsole.header_text_hi -> header_text_hi: float +ThemeConsole.line_error -> line_error: float +ThemeConsole.line_info -> line_info: float +ThemeConsole.line_input -> line_input: float +ThemeConsole.line_output -> line_output: float +ThemeConsole.text -> text: float +ThemeConsole.text_hi -> text_hi: float +ThemeConsole.title -> title: float +ThemeDopeSheet.active_channels_group -> active_channels_group: float +ThemeDopeSheet.back -> back: float +ThemeDopeSheet.button -> button: float +ThemeDopeSheet.button_text -> button_text: float +ThemeDopeSheet.button_text_hi -> button_text_hi: float +ThemeDopeSheet.button_title -> button_title: float +ThemeDopeSheet.channel_group -> channel_group: float +ThemeDopeSheet.channels -> channels: float +ThemeDopeSheet.channels_selected -> channels_selected: float +ThemeDopeSheet.dopesheet_channel -> dopesheet_channel: float +ThemeDopeSheet.dopesheet_subchannel -> dopesheet_subchannel: float +ThemeDopeSheet.frame_current -> frame_current: float +ThemeDopeSheet.grid -> grid: float +ThemeDopeSheet.header -> header: float +ThemeDopeSheet.header_text -> header_text: float +ThemeDopeSheet.header_text_hi -> header_text_hi: float +ThemeDopeSheet.list -> list: float +ThemeDopeSheet.list_text -> list_text: float +ThemeDopeSheet.list_text_hi -> list_text_hi: float +ThemeDopeSheet.list_title -> list_title: float +ThemeDopeSheet.long_key -> long_key: float +ThemeDopeSheet.long_key_selected -> long_key_selected: float +ThemeDopeSheet.text -> text: float +ThemeDopeSheet.text_hi -> text_hi: float +ThemeDopeSheet.title -> title: float +ThemeDopeSheet.value_sliders -> value_sliders: float +ThemeDopeSheet.view_sliders -> view_sliders: float +ThemeFileBrowser.active_file -> active_file: float +ThemeFileBrowser.active_file_text -> active_file_text: float +ThemeFileBrowser.back -> back: float +ThemeFileBrowser.button -> button: float +ThemeFileBrowser.button_text -> button_text: float +ThemeFileBrowser.button_text_hi -> button_text_hi: float +ThemeFileBrowser.button_title -> button_title: float +ThemeFileBrowser.header -> header: float +ThemeFileBrowser.header_text -> header_text: float +ThemeFileBrowser.header_text_hi -> header_text_hi: float +ThemeFileBrowser.list -> list: float +ThemeFileBrowser.list_text -> list_text: float +ThemeFileBrowser.list_text_hi -> list_text_hi: float +ThemeFileBrowser.list_title -> list_title: float +ThemeFileBrowser.scroll_handle -> scroll_handle: float +ThemeFileBrowser.scrollbar -> scrollbar: float +ThemeFileBrowser.selected_file -> selected_file: float +ThemeFileBrowser.text -> text: float +ThemeFileBrowser.text_hi -> text_hi: float +ThemeFileBrowser.tiles -> tiles: float +ThemeFileBrowser.title -> title: float +ThemeFontStyle.font_kerning_style -> font_kerning_style: enum Which style to use for font kerning +ThemeFontStyle.points -> points: int +ThemeFontStyle.shadow -> shadow: int Shadow size in pixels (0, 3 and 5 supported) +ThemeFontStyle.shadowalpha -> shadowalpha: float +ThemeFontStyle.shadowcolor -> shadowcolor: float Shadow color in grey value +ThemeFontStyle.shadx -> shadx: int Shadow offset in pixels +ThemeFontStyle.shady -> shady: int Shadow offset in pixels +ThemeGraphEditor.active_channels_group -> active_channels_group: float +ThemeGraphEditor.back -> back: float +ThemeGraphEditor.button -> button: float +ThemeGraphEditor.button_text -> button_text: float +ThemeGraphEditor.button_text_hi -> button_text_hi: float +ThemeGraphEditor.button_title -> button_title: float +ThemeGraphEditor.channel_group -> channel_group: float +ThemeGraphEditor.channels_region -> channels_region: float +ThemeGraphEditor.dopesheet_channel -> dopesheet_channel: float +ThemeGraphEditor.dopesheet_subchannel -> dopesheet_subchannel: float +ThemeGraphEditor.frame_current -> frame_current: float +ThemeGraphEditor.grid -> grid: float +ThemeGraphEditor.handle_align -> handle_align: float +ThemeGraphEditor.handle_auto -> handle_auto: float +ThemeGraphEditor.handle_free -> handle_free: float +ThemeGraphEditor.handle_sel_align -> handle_sel_align: float +ThemeGraphEditor.handle_sel_auto -> handle_sel_auto: float +ThemeGraphEditor.handle_sel_free -> handle_sel_free: float +ThemeGraphEditor.handle_sel_vect -> handle_sel_vect: float +ThemeGraphEditor.handle_vect -> handle_vect: float +ThemeGraphEditor.handle_vertex -> handle_vertex: float +ThemeGraphEditor.handle_vertex_select -> handle_vertex_select: float +ThemeGraphEditor.handle_vertex_size -> handle_vertex_size: int +ThemeGraphEditor.header -> header: float +ThemeGraphEditor.header_text -> header_text: float +ThemeGraphEditor.header_text_hi -> header_text_hi: float +ThemeGraphEditor.lastsel_point -> lastsel_point: float +ThemeGraphEditor.list -> list: float +ThemeGraphEditor.list_text -> list_text: float +ThemeGraphEditor.list_text_hi -> list_text_hi: float +ThemeGraphEditor.list_title -> list_title: float +ThemeGraphEditor.panel -> panel: float +ThemeGraphEditor.text -> text: float +ThemeGraphEditor.text_hi -> text_hi: float +ThemeGraphEditor.title -> title: float +ThemeGraphEditor.vertex -> vertex: float +ThemeGraphEditor.vertex_select -> vertex_select: float +ThemeGraphEditor.vertex_size -> vertex_size: int +ThemeGraphEditor.window_sliders -> window_sliders: float +ThemeImageEditor.back -> back: float +ThemeImageEditor.button -> button: float +ThemeImageEditor.button_text -> button_text: float +ThemeImageEditor.button_text_hi -> button_text_hi: float +ThemeImageEditor.button_title -> button_title: float +ThemeImageEditor.editmesh_active -> editmesh_active: float +ThemeImageEditor.face -> face: float +ThemeImageEditor.face_dot -> face_dot: float +ThemeImageEditor.face_select -> face_select: float +ThemeImageEditor.facedot_size -> facedot_size: int +ThemeImageEditor.header -> header: float +ThemeImageEditor.header_text -> header_text: float +ThemeImageEditor.header_text_hi -> header_text_hi: float +ThemeImageEditor.scope_back -> scope_back: float +ThemeImageEditor.text -> text: float +ThemeImageEditor.text_hi -> text_hi: float +ThemeImageEditor.title -> title: float +ThemeImageEditor.vertex -> vertex: float +ThemeImageEditor.vertex_select -> vertex_select: float +ThemeImageEditor.vertex_size -> vertex_size: int +ThemeInfo.back -> back: float +ThemeInfo.button -> button: float +ThemeInfo.button_text -> button_text: float +ThemeInfo.button_text_hi -> button_text_hi: float +ThemeInfo.button_title -> button_title: float +ThemeInfo.header -> header: float +ThemeInfo.header_text -> header_text: float +ThemeInfo.header_text_hi -> header_text_hi: float +ThemeInfo.text -> text: float +ThemeInfo.text_hi -> text_hi: float +ThemeInfo.title -> title: float +ThemeLogicEditor.back -> back: float +ThemeLogicEditor.button -> button: float +ThemeLogicEditor.button_text -> button_text: float +ThemeLogicEditor.button_text_hi -> button_text_hi: float +ThemeLogicEditor.button_title -> button_title: float +ThemeLogicEditor.header -> header: float +ThemeLogicEditor.header_text -> header_text: float +ThemeLogicEditor.header_text_hi -> header_text_hi: float +ThemeLogicEditor.panel -> panel: float +ThemeLogicEditor.text -> text: float +ThemeLogicEditor.text_hi -> text_hi: float +ThemeLogicEditor.title -> title: float +ThemeNLAEditor.back -> back: float +ThemeNLAEditor.bars -> bars: float +ThemeNLAEditor.bars_selected -> bars_selected: float +ThemeNLAEditor.button -> button: float +ThemeNLAEditor.button_text -> button_text: float +ThemeNLAEditor.button_text_hi -> button_text_hi: float +ThemeNLAEditor.button_title -> button_title: float +ThemeNLAEditor.frame_current -> frame_current: float +ThemeNLAEditor.grid -> grid: float +ThemeNLAEditor.header -> header: float +ThemeNLAEditor.header_text -> header_text: float +ThemeNLAEditor.header_text_hi -> header_text_hi: float +ThemeNLAEditor.list -> list: float +ThemeNLAEditor.list_text -> list_text: float +ThemeNLAEditor.list_text_hi -> list_text_hi: float +ThemeNLAEditor.list_title -> list_title: float +ThemeNLAEditor.strips -> strips: float +ThemeNLAEditor.strips_selected -> strips_selected: float +ThemeNLAEditor.text -> text: float +ThemeNLAEditor.text_hi -> text_hi: float +ThemeNLAEditor.title -> title: float +ThemeNLAEditor.view_sliders -> view_sliders: float +ThemeNodeEditor.back -> back: float +ThemeNodeEditor.button -> button: float +ThemeNodeEditor.button_text -> button_text: float +ThemeNodeEditor.button_text_hi -> button_text_hi: float +ThemeNodeEditor.button_title -> button_title: float +ThemeNodeEditor.converter_node -> converter_node: float +ThemeNodeEditor.group_node -> group_node: float +ThemeNodeEditor.header -> header: float +ThemeNodeEditor.header_text -> header_text: float +ThemeNodeEditor.header_text_hi -> header_text_hi: float +ThemeNodeEditor.in_out_node -> in_out_node: float +ThemeNodeEditor.list -> list: float +ThemeNodeEditor.list_text -> list_text: float +ThemeNodeEditor.list_text_hi -> list_text_hi: float +ThemeNodeEditor.list_title -> list_title: float +ThemeNodeEditor.node_backdrop -> node_backdrop: float +ThemeNodeEditor.operator_node -> operator_node: float +ThemeNodeEditor.selected_text -> selected_text: float +ThemeNodeEditor.text -> text: float +ThemeNodeEditor.text_hi -> text_hi: float +ThemeNodeEditor.title -> title: float +ThemeNodeEditor.wire_select -> wire_select: float +ThemeNodeEditor.wires -> wires: float +ThemeOutliner.back -> back: float +ThemeOutliner.button -> button: float +ThemeOutliner.button_text -> button_text: float +ThemeOutliner.button_text_hi -> button_text_hi: float +ThemeOutliner.button_title -> button_title: float +ThemeOutliner.header -> header: float +ThemeOutliner.header_text -> header_text: float +ThemeOutliner.header_text_hi -> header_text_hi: float +ThemeOutliner.text -> text: float +ThemeOutliner.text_hi -> text_hi: float +ThemeOutliner.title -> title: float +ThemeProperties.back -> back: float +ThemeProperties.button -> button: float +ThemeProperties.button_text -> button_text: float +ThemeProperties.button_text_hi -> button_text_hi: float +ThemeProperties.button_title -> button_title: float +ThemeProperties.header -> header: float +ThemeProperties.header_text -> header_text: float +ThemeProperties.header_text_hi -> header_text_hi: float +ThemeProperties.panel -> panel: float +ThemeProperties.text -> text: float +ThemeProperties.text_hi -> text_hi: float +ThemeProperties.title -> title: float +ThemeSequenceEditor.audio_strip -> audio_strip: float +ThemeSequenceEditor.back -> back: float +ThemeSequenceEditor.button -> button: float +ThemeSequenceEditor.button_text -> button_text: float +ThemeSequenceEditor.button_text_hi -> button_text_hi: float +ThemeSequenceEditor.button_title -> button_title: float +ThemeSequenceEditor.draw_action -> draw_action: float +ThemeSequenceEditor.effect_strip -> effect_strip: float +ThemeSequenceEditor.frame_current -> frame_current: float +ThemeSequenceEditor.grid -> grid: float +ThemeSequenceEditor.header -> header: float +ThemeSequenceEditor.header_text -> header_text: float +ThemeSequenceEditor.header_text_hi -> header_text_hi: float +ThemeSequenceEditor.image_strip -> image_strip: float +ThemeSequenceEditor.keyframe -> keyframe: float +ThemeSequenceEditor.meta_strip -> meta_strip: float +ThemeSequenceEditor.movie_strip -> movie_strip: float +ThemeSequenceEditor.plugin_strip -> plugin_strip: float +ThemeSequenceEditor.scene_strip -> scene_strip: float +ThemeSequenceEditor.text -> text: float +ThemeSequenceEditor.text_hi -> text_hi: float +ThemeSequenceEditor.title -> title: float +ThemeSequenceEditor.transition_strip -> transition_strip: float +ThemeSequenceEditor.window_sliders -> window_sliders: float +ThemeStyle.grouplabel -> grouplabel: pointer, (read-only) +ThemeStyle.paneltitle -> paneltitle: pointer, (read-only) +ThemeStyle.panelzoom -> panelzoom: float Default zoom level for panel areas +ThemeStyle.widget -> widget: pointer, (read-only) +ThemeStyle.widgetlabel -> widgetlabel: pointer, (read-only) +ThemeTextEditor.back -> back: float +ThemeTextEditor.button -> button: float +ThemeTextEditor.button_text -> button_text: float +ThemeTextEditor.button_text_hi -> button_text_hi: float +ThemeTextEditor.button_title -> button_title: float +ThemeTextEditor.cursor -> cursor: float +ThemeTextEditor.header -> header: float +ThemeTextEditor.header_text -> header_text: float +ThemeTextEditor.header_text_hi -> header_text_hi: float +ThemeTextEditor.line_numbers_background -> line_numbers_background: float +ThemeTextEditor.scroll_bar -> scroll_bar: float +ThemeTextEditor.selected_text -> selected_text: float +ThemeTextEditor.syntax_builtin -> syntax_builtin: float +ThemeTextEditor.syntax_comment -> syntax_comment: float +ThemeTextEditor.syntax_numbers -> syntax_numbers: float +ThemeTextEditor.syntax_special -> syntax_special: float +ThemeTextEditor.syntax_string -> syntax_string: float +ThemeTextEditor.text -> text: float +ThemeTextEditor.text_hi -> text_hi: float +ThemeTextEditor.title -> title: float +ThemeTimeline.back -> back: float +ThemeTimeline.button -> button: float +ThemeTimeline.button_text -> button_text: float +ThemeTimeline.button_text_hi -> button_text_hi: float +ThemeTimeline.button_title -> button_title: float +ThemeTimeline.frame_current -> frame_current: float +ThemeTimeline.grid -> grid: float +ThemeTimeline.header -> header: float +ThemeTimeline.header_text -> header_text: float +ThemeTimeline.header_text_hi -> header_text_hi: float +ThemeTimeline.text -> text: float +ThemeTimeline.text_hi -> text_hi: float +ThemeTimeline.title -> title: float +ThemeUserInterface.icon_file -> icon_file: string +ThemeUserInterface.wcol_box -> wcol_box: pointer, (read-only) +ThemeUserInterface.wcol_list_item -> wcol_list_item: pointer, (read-only) +ThemeUserInterface.wcol_menu -> wcol_menu: pointer, (read-only) +ThemeUserInterface.wcol_menu_back -> wcol_menu_back: pointer, (read-only) +ThemeUserInterface.wcol_menu_item -> wcol_menu_item: pointer, (read-only) +ThemeUserInterface.wcol_num -> wcol_num: pointer, (read-only) +ThemeUserInterface.wcol_numslider -> wcol_numslider: pointer, (read-only) +ThemeUserInterface.wcol_option -> wcol_option: pointer, (read-only) +ThemeUserInterface.wcol_progress -> wcol_progress: pointer, (read-only) +ThemeUserInterface.wcol_pulldown -> wcol_pulldown: pointer, (read-only) +ThemeUserInterface.wcol_radio -> wcol_radio: pointer, (read-only) +ThemeUserInterface.wcol_regular -> wcol_regular: pointer, (read-only) +ThemeUserInterface.wcol_scroll -> wcol_scroll: pointer, (read-only) +ThemeUserInterface.wcol_state -> wcol_state: pointer, (read-only) +ThemeUserInterface.wcol_text -> wcol_text: pointer, (read-only) +ThemeUserInterface.wcol_toggle -> wcol_toggle: pointer, (read-only) +ThemeUserInterface.wcol_tool -> wcol_tool: pointer, (read-only) +ThemeUserPreferences.back -> back: float +ThemeUserPreferences.button -> button: float +ThemeUserPreferences.button_text -> button_text: float +ThemeUserPreferences.button_text_hi -> button_text_hi: float +ThemeUserPreferences.button_title -> button_title: float +ThemeUserPreferences.header -> header: float +ThemeUserPreferences.header_text -> header_text: float +ThemeUserPreferences.header_text_hi -> header_text_hi: float +ThemeUserPreferences.text -> text: float +ThemeUserPreferences.text_hi -> text_hi: float +ThemeUserPreferences.title -> title: float +ThemeView3D.act_spline -> act_spline: float +ThemeView3D.back -> back: float +ThemeView3D.bone_pose -> bone_pose: float +ThemeView3D.bone_solid -> bone_solid: float +ThemeView3D.button -> button: float +ThemeView3D.button_text -> button_text: float +ThemeView3D.button_text_hi -> button_text_hi: float +ThemeView3D.button_title -> button_title: float +ThemeView3D.edge_crease -> edge_crease: float +ThemeView3D.edge_facesel -> edge_facesel: float +ThemeView3D.edge_seam -> edge_seam: float +ThemeView3D.edge_select -> edge_select: float +ThemeView3D.edge_sharp -> edge_sharp: float +ThemeView3D.editmesh_active -> editmesh_active: float +ThemeView3D.face -> face: float +ThemeView3D.face_dot -> face_dot: float +ThemeView3D.face_select -> face_select: float +ThemeView3D.facedot_size -> facedot_size: int +ThemeView3D.frame_current -> frame_current: float +ThemeView3D.grid -> grid: float +ThemeView3D.handle_align -> handle_align: float +ThemeView3D.handle_auto -> handle_auto: float +ThemeView3D.handle_free -> handle_free: float +ThemeView3D.handle_sel_align -> handle_sel_align: float +ThemeView3D.handle_sel_auto -> handle_sel_auto: float +ThemeView3D.handle_sel_free -> handle_sel_free: float +ThemeView3D.handle_sel_vect -> handle_sel_vect: float +ThemeView3D.handle_vect -> handle_vect: float +ThemeView3D.header -> header: float +ThemeView3D.header_text -> header_text: float +ThemeView3D.header_text_hi -> header_text_hi: float +ThemeView3D.lamp -> lamp: float +ThemeView3D.lastsel_point -> lastsel_point: float +ThemeView3D.normal -> normal: float +ThemeView3D.nurb_sel_uline -> nurb_sel_uline: float +ThemeView3D.nurb_sel_vline -> nurb_sel_vline: float +ThemeView3D.nurb_uline -> nurb_uline: float +ThemeView3D.nurb_vline -> nurb_vline: float +ThemeView3D.object_active -> object_active: float +ThemeView3D.object_grouped -> object_grouped: float +ThemeView3D.object_grouped_active -> object_grouped_active: float +ThemeView3D.object_selected -> object_selected: float +ThemeView3D.panel -> panel: float +ThemeView3D.text -> text: float +ThemeView3D.text_hi -> text_hi: float +ThemeView3D.title -> title: float +ThemeView3D.transform -> transform: float +ThemeView3D.vertex -> vertex: float +ThemeView3D.vertex_normal -> vertex_normal: float +ThemeView3D.vertex_select -> vertex_select: float +ThemeView3D.vertex_size -> vertex_size: int +ThemeView3D.wire -> wire: float +ThemeWidgetColors.inner -> inner: float +ThemeWidgetColors.inner_sel -> inner_sel: float +ThemeWidgetColors.item -> item: float +ThemeWidgetColors.outline -> outline: float +ThemeWidgetColors.shadedown -> shadedown: int +ThemeWidgetColors.shadetop -> shadetop: int +ThemeWidgetColors.text -> text: float +ThemeWidgetColors.text_sel -> text_sel: float +ThemeWidgetStateColors.blend -> blend: float +ThemeWidgetStateColors.inner_anim -> inner_anim: float +ThemeWidgetStateColors.inner_anim_sel -> inner_anim_sel: float +ThemeWidgetStateColors.inner_driven -> inner_driven: float +ThemeWidgetStateColors.inner_driven_sel -> inner_driven_sel: float +ThemeWidgetStateColors.inner_key -> inner_key: float +ThemeWidgetStateColors.inner_key_sel -> inner_key_sel: float +TimelineMarker.camera -> camera: pointer Camera this timeline sets to active +TimelineMarker.frame -> frame: int The frame on which the timeline marker appears +TimelineMarker.name -> name: string +ToolSettings.autokey_mode -> autokey_mode: enum Mode of automatic keyframe insertion for Objects and Bones +ToolSettings.edge_path_mode -> edge_path_mode: enum The edge flag to tag when selecting the shortest path +ToolSettings.etch_adaptive_limit -> etch_adaptive_limit: float Number of bones in the subdivided stroke +ToolSettings.etch_convert_mode -> etch_convert_mode: enum Method used to convert stroke to bones +ToolSettings.etch_length_limit -> etch_length_limit: float Number of bones in the subdivided stroke +ToolSettings.etch_number -> etch_number: string DOC BROKEN +ToolSettings.etch_roll_mode -> etch_roll_mode: enum Method used to adjust the roll of bones when retargeting +ToolSettings.etch_side -> etch_side: string DOC BROKEN +ToolSettings.etch_subdivision_number -> etch_subdivision_number: int Number of bones in the subdivided stroke +ToolSettings.etch_template -> etch_template: pointer Template armature that will be retargeted to the stroke +ToolSettings.image_paint -> image_paint: pointer, (read-only) +ToolSettings.normal_size -> normal_size: float Display size for normals in the 3D view +ToolSettings.particle_edit -> particle_edit: pointer, (read-only) +ToolSettings.proportional_editing -> proportional_editing: enum Proportional editing mode +ToolSettings.proportional_editing_falloff -> proportional_editing_falloff: enum Falloff type for proportional editing mode +ToolSettings.sculpt -> sculpt: pointer, (read-only) +ToolSettings.snap_element -> snap_element: enum Type of element to snap to +ToolSettings.snap_target -> snap_target: enum Which part to snap onto the target +ToolSettings.uv_selection_mode -> uv_selection_mode: enum UV selection and display mode +ToolSettings.vertex_group_weight -> vertex_group_weight: float Weight to assign in vertex groups +ToolSettings.vertex_paint -> vertex_paint: pointer, (read-only) +ToolSettings.weight_paint -> weight_paint: pointer, (read-only) +TouchSensor.material -> material: pointer Only look for objects with this material +TrackToConstraint.head_tail -> head_tail: float Target along length of bone: Head=0, Tail=1 +TrackToConstraint.subtarget -> subtarget: string +TrackToConstraint.target -> target: pointer Target Object +TrackToConstraint.track -> track: enum Axis that points to the target object +TrackToConstraint.up -> up: enum Axis that points upward +TransformConstraint.from_max_x -> from_max_x: float Top range of X axis source motion +TransformConstraint.from_max_y -> from_max_y: float Top range of Y axis source motion +TransformConstraint.from_max_z -> from_max_z: float Top range of Z axis source motion +TransformConstraint.from_min_x -> from_min_x: float Bottom range of X axis source motion +TransformConstraint.from_min_y -> from_min_y: float Bottom range of Y axis source motion +TransformConstraint.from_min_z -> from_min_z: float Bottom range of Z axis source motion +TransformConstraint.map_from -> map_from: enum The transformation type to use from the target +TransformConstraint.map_to -> map_to: enum The transformation type to affect of the constrained object +TransformConstraint.map_to_x_from -> map_to_x_from: enum The source axis constrained object's X axis uses +TransformConstraint.map_to_y_from -> map_to_y_from: enum The source axis constrained object's Y axis uses +TransformConstraint.map_to_z_from -> map_to_z_from: enum The source axis constrained object's Z axis uses +TransformConstraint.subtarget -> subtarget: string +TransformConstraint.target -> target: pointer Target Object +TransformConstraint.to_max_x -> to_max_x: float Top range of X axis destination motion +TransformConstraint.to_max_y -> to_max_y: float Top range of Y axis destination motion +TransformConstraint.to_max_z -> to_max_z: float Top range of Z axis destination motion +TransformConstraint.to_min_x -> to_min_x: float Bottom range of X axis destination motion +TransformConstraint.to_min_y -> to_min_y: float Bottom range of Y axis destination motion +TransformConstraint.to_min_z -> to_min_z: float Bottom range of Z axis destination motion +TransformOrientation.matrix -> matrix: float +TransformOrientation.name -> name: string +TransformSequence.interpolation -> interpolation: enum +TransformSequence.rotation_start -> rotation_start: float +TransformSequence.scale_start_x -> scale_start_x: float +TransformSequence.scale_start_y -> scale_start_y: float +TransformSequence.translate_start_x -> translate_start_x: float +TransformSequence.translate_start_y -> translate_start_y: float +TransformSequence.translation_unit -> translation_unit: enum +UILayout.alignment -> alignment: enum +UILayout.operator_context -> operator_context: enum +UILayout.scale_x -> scale_x: float +UILayout.scale_y -> scale_y: float +UVProjectModifier.aspect_x -> aspect_x: float +UVProjectModifier.aspect_y -> aspect_y: float +UVProjectModifier.image -> image: pointer +UVProjectModifier.num_projectors -> num_projectors: int Number of projectors to use +UVProjectModifier.projectors -> projectors: collection, (read-only) +UVProjectModifier.scale_x -> scale_x: float +UVProjectModifier.scale_y -> scale_y: float +UVProjectModifier.uv_layer -> uv_layer: string UV layer name +UVProjector.object -> object: pointer Object to use as projector transform +UnitSettings.rotation_units -> rotation_units: enum Unit to use for displaying/editing rotation values +UnitSettings.scale_length -> scale_length: float Scale to use when converting between blender units and dimensions +UnitSettings.system -> system: enum The unit system to use for button display +UserPreferences.active_section -> active_section: enum Active section of the user preferences shown in the user interface +UserPreferences.addons -> addons: collection, (read-only) +UserPreferences.edit -> edit: pointer, (read-only) Settings for interacting with Blender data +UserPreferences.filepaths -> filepaths: pointer, (read-only) Default paths for external files +UserPreferences.inputs -> inputs: pointer, (read-only) Settings for input devices +UserPreferences.system -> system: pointer, (read-only) Graphics driver and operating system settings +UserPreferences.themes -> themes: collection, (read-only) +UserPreferences.uistyles -> uistyles: collection, (read-only) +UserPreferences.view -> view: pointer, (read-only) Preferences related to viewing data +UserPreferencesEdit.auto_keying_mode -> auto_keying_mode: enum Mode of automatic keyframe insertion for Objects and Bones +UserPreferencesEdit.grease_pencil_eraser_radius -> grease_pencil_eraser_radius: int Radius of eraser 'brush' +UserPreferencesEdit.grease_pencil_euclidean_distance -> grease_pencil_euclidean_distance: int Distance moved by mouse when drawing stroke (in pixels) to include +UserPreferencesEdit.grease_pencil_manhattan_distance -> grease_pencil_manhattan_distance: int Pixels moved by mouse per axis when drawing stroke +UserPreferencesEdit.keyframe_new_handle_type -> keyframe_new_handle_type: enum +UserPreferencesEdit.keyframe_new_interpolation_type -> keyframe_new_interpolation_type: enum +UserPreferencesEdit.material_link -> material_link: enum Toggle whether the material is linked to object data or the object block +UserPreferencesEdit.object_align -> object_align: enum When adding objects from a 3D View menu, either align them to that view's direction or the world coordinates +UserPreferencesEdit.undo_memory_limit -> undo_memory_limit: int Maximum memory usage in megabytes (0 means unlimited) +UserPreferencesEdit.undo_steps -> undo_steps: int Number of undo steps available (smaller values conserve memory) +UserPreferencesFilePaths.animation_player -> animation_player: string Path to a custom animation/frame sequence player +UserPreferencesFilePaths.animation_player_preset -> animation_player_preset: enum Preset configs for external animation players +UserPreferencesFilePaths.auto_save_time -> auto_save_time: int The time (in minutes) to wait between automatic temporary saves +UserPreferencesFilePaths.fonts_directory -> fonts_directory: string The default directory to search for loading fonts +UserPreferencesFilePaths.image_editor -> image_editor: string Path to an image editor +UserPreferencesFilePaths.python_scripts_directory -> python_scripts_directory: string The default directory to search for Python scripts (resets python module search path: sys.path) +UserPreferencesFilePaths.recent_files -> recent_files: int Maximum number of recently opened files to remember +UserPreferencesFilePaths.render_output_directory -> render_output_directory: string The default directory for rendering output +UserPreferencesFilePaths.save_version -> save_version: int The number of old versions to maintain in the current directory, when manually saving +UserPreferencesFilePaths.sequence_plugin_directory -> sequence_plugin_directory: string The default directory to search for sequence plugins +UserPreferencesFilePaths.sounds_directory -> sounds_directory: string The default directory to search for sounds +UserPreferencesFilePaths.temporary_directory -> temporary_directory: string The directory for storing temporary save files +UserPreferencesFilePaths.texture_plugin_directory -> texture_plugin_directory: string The default directory to search for texture plugins +UserPreferencesFilePaths.textures_directory -> textures_directory: string The default directory to search for textures +UserPreferencesInput.double_click_time -> double_click_time: int The time (in ms) for a double click +UserPreferencesInput.edited_keymaps -> edited_keymaps: collection, (read-only) +UserPreferencesInput.ndof_pan_speed -> ndof_pan_speed: int The overall panning speed of an NDOF device, as percent of standard +UserPreferencesInput.ndof_rotate_speed -> ndof_rotate_speed: int The overall rotation speed of an NDOF device, as percent of standard +UserPreferencesInput.select_mouse -> select_mouse: enum The mouse button used for selection +UserPreferencesInput.view_rotation -> view_rotation: enum Rotation style in the viewport +UserPreferencesInput.zoom_axis -> zoom_axis: enum Axis of mouse movement to zoom in or out on +UserPreferencesInput.zoom_style -> zoom_style: enum Which style to use for viewport scaling +UserPreferencesSystem.audio_channels -> audio_channels: enum Sets the audio channel count +UserPreferencesSystem.audio_device -> audio_device: enum Sets the audio output device +UserPreferencesSystem.audio_mixing_buffer -> audio_mixing_buffer: enum Sets the number of samples used by the audio mixing buffer +UserPreferencesSystem.audio_sample_format -> audio_sample_format: enum Sets the audio sample format +UserPreferencesSystem.audio_sample_rate -> audio_sample_rate: enum Sets the audio sample rate +UserPreferencesSystem.clip_alpha -> clip_alpha: float Clip alpha below this threshold in the 3D textured view +UserPreferencesSystem.color_picker_type -> color_picker_type: enum Different styles of displaying the color picker widget +UserPreferencesSystem.dpi -> dpi: int Font size and resolution for display +UserPreferencesSystem.frame_server_port -> frame_server_port: int Frameserver Port for Frameserver Rendering +UserPreferencesSystem.gl_texture_limit -> gl_texture_limit: enum Limit the texture size to save graphics memory +UserPreferencesSystem.language -> language: enum Language use for translation +UserPreferencesSystem.memory_cache_limit -> memory_cache_limit: int Memory cache limit in sequencer (megabytes) +UserPreferencesSystem.prefetch_frames -> prefetch_frames: int Number of frames to render ahead during playback +UserPreferencesSystem.screencast_fps -> screencast_fps: int Frame rate for the screencast to be played back +UserPreferencesSystem.screencast_wait_time -> screencast_wait_time: int Time in milliseconds between each frame recorded for screencast +UserPreferencesSystem.scrollback -> scrollback: int Maximum number of lines to store for the console buffer +UserPreferencesSystem.solid_lights -> solid_lights: collection, (read-only) Lights user to display objects in solid draw mode +UserPreferencesSystem.texture_collection_rate -> texture_collection_rate: int Number of seconds between each run of the GL texture garbage collector +UserPreferencesSystem.texture_time_out -> texture_time_out: int Time since last access of a GL texture in seconds after which it is freed. (Set to 0 to keep textures allocated.) +UserPreferencesSystem.weight_color_range -> weight_color_range: pointer, (read-only) Color range used for weight visualization in weight painting mode +UserPreferencesSystem.window_draw_method -> window_draw_method: enum Drawing method used by the window manager +UserPreferencesView.manipulator_handle_size -> manipulator_handle_size: int Size of widget handles as percentage of widget radius +UserPreferencesView.manipulator_hotspot -> manipulator_hotspot: int Hotspot in pixels for clicking widget handles +UserPreferencesView.manipulator_size -> manipulator_size: int Diameter of widget, in 10 pixel units +UserPreferencesView.mini_axis_brightness -> mini_axis_brightness: int The brightness of the icon +UserPreferencesView.mini_axis_size -> mini_axis_size: int The axis icon's size +UserPreferencesView.object_origin_size -> object_origin_size: int Diameter in Pixels for Object/Lamp origin display +UserPreferencesView.open_left_mouse_delay -> open_left_mouse_delay: int Time in 1/10 seconds to hold the Left Mouse Button before opening the toolbox +UserPreferencesView.open_right_mouse_delay -> open_right_mouse_delay: int Time in 1/10 seconds to hold the Right Mouse Button before opening the toolbox +UserPreferencesView.open_sublevel_delay -> open_sublevel_delay: int Time delay in 1/10 seconds before automatically opening sub level menus +UserPreferencesView.open_toplevel_delay -> open_toplevel_delay: int Time delay in 1/10 seconds before automatically opening top level menus +UserPreferencesView.properties_width_check -> properties_width_check: int Dual Column layout will change to single column layout when the width of the area gets below this value (needs restart to take effect) +UserPreferencesView.rotation_angle -> rotation_angle: int The rotation step for numerical pad keys (2 4 6 8) +UserPreferencesView.smooth_view -> smooth_view: int The time to animate the view in milliseconds, zero to disable +UserPreferencesView.timecode_style -> timecode_style: enum Format of Time Codes displayed when not displaying timing in terms of frames +UserPreferencesView.view2d_grid_minimum_spacing -> view2d_grid_minimum_spacing: int Minimum number of pixels between each gridline in 2D Viewports +UserPreferencesView.wheel_scroll_lines -> wheel_scroll_lines: int The number of lines scrolled at a time with the mouse wheel +UserSolidLight.diffuse_color -> diffuse_color: float The diffuse color of the OpenGL light +UserSolidLight.direction -> direction: float The direction that the OpenGL light is shining +UserSolidLight.specular_color -> specular_color: float The color of the lights specular highlight +ValueNodeSocket.default_value -> default_value: float Default value of the socket when no link is attached +ValueNodeSocket.name -> name: string, (read-only) Socket name +VectorFont.filepath -> filepath: string, (read-only) +VectorFont.packed_file -> packed_file: pointer, (read-only) +VectorNodeSocket.default_value -> default_value: float Default value of the socket when no link is attached +VectorNodeSocket.name -> name: string, (read-only) Socket name +VertexGroup.index -> index: int, (read-only) Index number of the vertex group +VertexGroup.name -> name: string Vertex group name +VertexGroupElement.group -> group: int, (read-only) +VertexGroupElement.weight -> weight: float Vertex Weight +VoronoiTexture.coloring -> coloring: enum +VoronoiTexture.distance_metric -> distance_metric: enum +VoronoiTexture.minkovsky_exponent -> minkovsky_exponent: float Minkovsky exponent +VoronoiTexture.nabla -> nabla: float Size of derivative offset used for calculating normal +VoronoiTexture.noise_intensity -> noise_intensity: float +VoronoiTexture.noise_size -> noise_size: float Sets scaling for noise input +VoronoiTexture.weight_1 -> weight_1: float Voronoi feature weight 1 +VoronoiTexture.weight_2 -> weight_2: float Voronoi feature weight 2 +VoronoiTexture.weight_3 -> weight_3: float Voronoi feature weight 3 +VoronoiTexture.weight_4 -> weight_4: float Voronoi feature weight 4 +VoxelData.domain_object -> domain_object: pointer Object used as the smoke simulation domain +VoxelData.extension -> extension: enum Sets how the texture is extrapolated past its original bounds +VoxelData.file_format -> file_format: enum Format of the source data set to render +VoxelData.intensity -> intensity: float Multiplier for intensity values +VoxelData.interpolation -> interpolation: enum Method to interpolate/smooth values between voxel cells +VoxelData.resolution -> resolution: int Resolution of the voxel grid +VoxelData.smoke_data_type -> smoke_data_type: enum Simulation value to be used as a texture +VoxelData.source_path -> source_path: string The external source data file to use +VoxelData.still_frame_number -> still_frame_number: int The frame number to always use +VoxelDataTexture.image -> image: pointer +VoxelDataTexture.image_user -> image_user: pointer, (read-only) Parameters defining which layer, pass and frame of the image is displayed +VoxelDataTexture.voxeldata -> voxeldata: pointer, (read-only) The voxel data associated with this texture +WaveModifier.damping_time -> damping_time: float +WaveModifier.falloff_radius -> falloff_radius: float +WaveModifier.height -> height: float +WaveModifier.lifetime -> lifetime: float +WaveModifier.narrowness -> narrowness: float +WaveModifier.speed -> speed: float +WaveModifier.start_position_object -> start_position_object: pointer +WaveModifier.start_position_x -> start_position_x: float +WaveModifier.start_position_y -> start_position_y: float +WaveModifier.texture -> texture: pointer Texture for modulating the wave +WaveModifier.texture_coordinates -> texture_coordinates: enum Texture coordinates used for modulating input +WaveModifier.texture_coordinates_object -> texture_coordinates_object: pointer +WaveModifier.time_offset -> time_offset: float Either the starting frame (for positive speed) or ending frame (for negative speed.) +WaveModifier.uv_layer -> uv_layer: string UV layer name +WaveModifier.vertex_group -> vertex_group: string Vertex group name for modulating the wave +WaveModifier.width -> width: float +Window.screen -> screen: pointer Active screen showing in the window +WindowManager.active_keyconfig -> active_keyconfig: pointer +WindowManager.default_keyconfig -> default_keyconfig: pointer, (read-only) +WindowManager.keyconfigs -> keyconfigs: collection, (read-only) Registered key configurations +WindowManager.operators -> operators: collection, (read-only) Operator registry +WindowManager.windows -> windows: collection, (read-only) Open windows +WipeSequence.angle -> angle: float Edge angle +WipeSequence.blur_width -> blur_width: float Width of the blur edge, in percentage relative to the image size +WipeSequence.direction -> direction: enum Wipe direction +WipeSequence.transition_type -> transition_type: enum +WoodTexture.nabla -> nabla: float Size of derivative offset used for calculating normal +WoodTexture.noise_basis -> noise_basis: enum Sets the noise basis used for turbulence +WoodTexture.noise_size -> noise_size: float Sets scaling for noise input +WoodTexture.noise_type -> noise_type: enum +WoodTexture.noisebasis2 -> noisebasis2: enum +WoodTexture.stype -> stype: enum +WoodTexture.turbulence -> turbulence: float Sets the turbulence of the bandnoise and ringnoise types +World.active_texture -> active_texture: pointer Active texture slot being displayed +World.active_texture_index -> active_texture_index: int Index of active texture slot +World.ambient_color -> ambient_color: float +World.animation_data -> animation_data: pointer, (read-only) Animation data for this datablock +World.exposure -> exposure: float Amount of exponential color correction for light +World.horizon_color -> horizon_color: float Color at the horizon +World.lighting -> lighting: pointer, (read-only) World lighting settings +World.mist -> mist: pointer, (read-only) World mist settings +World.range -> range: float The color range that will be mapped to 0-1 +World.stars -> stars: pointer, (read-only) World stars settings +World.texture_slots -> texture_slots: collection, (read-only) Texture slots defining the mapping and influence of textures +World.zenith_color -> zenith_color: float Color at the zenith +WorldLighting.adapt_to_speed -> adapt_to_speed: float Use the speed vector pass to reduce AO samples in fast moving pixels. Higher values result in more aggressive sample reduction. Requires Vec pass enabled (for Raytrace Adaptive QMC) +WorldLighting.ao_blend_mode -> ao_blend_mode: enum Defines how AO mixes with material shading +WorldLighting.ao_factor -> ao_factor: float Factor for ambient occlusion blending +WorldLighting.bias -> bias: float Bias (in radians) to prevent smoothed faces from showing banding (for Raytrace Constant Jittered) +WorldLighting.correction -> correction: float Ad-hoc correction for over-occlusion due to the approximation (for Approximate) +WorldLighting.distance -> distance: float Length of rays, defines how far away other faces give occlusion effect +WorldLighting.environment_color -> environment_color: enum Defines where the color of the environment light comes from +WorldLighting.environment_energy -> environment_energy: float Defines the strength of environment light +WorldLighting.error_tolerance -> error_tolerance: float Low values are slower and higher quality (for Approximate) +WorldLighting.falloff_strength -> falloff_strength: float Distance attenuation factor, the higher, the 'shorter' the shadows +WorldLighting.gather_method -> gather_method: enum +WorldLighting.indirect_bounces -> indirect_bounces: int Number of indirect diffuse light bounces to use for approximate ambient occlusion +WorldLighting.indirect_factor -> indirect_factor: float Factor for how much surrounding objects contribute to light +WorldLighting.passes -> passes: int Number of preprocessing passes to reduce overocclusion (for approximate ambient occlusion) +WorldLighting.sample_method -> sample_method: enum Method for generating shadow samples (for Raytrace) +WorldLighting.samples -> samples: int Amount of ray samples. Higher values give smoother results and longer rendering times +WorldLighting.threshold -> threshold: float Samples below this threshold will be considered fully shadowed/unshadowed and skipped (for Raytrace Adaptive QMC) +WorldMistSettings.depth -> depth: float The distance over which the mist effect fades in +WorldMistSettings.falloff -> falloff: enum Type of transition used to fade mist +WorldMistSettings.height -> height: float Control how much mist density decreases with height +WorldMistSettings.intensity -> intensity: float Intensity of the mist effect +WorldMistSettings.start -> start: float Starting distance of the mist, measured from the camera +WorldStarsSettings.average_separation -> average_separation: float Average distance between any two stars +WorldStarsSettings.color_randomization -> color_randomization: float Randomize star colors +WorldStarsSettings.min_distance -> min_distance: float Minimum distance to the camera for stars +WorldStarsSettings.size -> size: float Average screen dimension of stars +WorldTextureSlot.blend_factor -> blend_factor: float Amount texture affects color progression of the background +WorldTextureSlot.horizon_factor -> horizon_factor: float Amount texture affects color of the horizon +WorldTextureSlot.object -> object: pointer Object to use for mapping with Object texture coordinates +WorldTextureSlot.texture_coordinates -> texture_coordinates: enum Texture coordinates used to map the texture onto the background +WorldTextureSlot.zenith_down_factor -> zenith_down_factor: float Amount texture affects color of the zenith below +WorldTextureSlot.zenith_up_factor -> zenith_up_factor: float Amount texture affects color of the zenith above From 5436008e40c9a385082afd1c7cf99c73163c061e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 12 Jul 2010 22:24:53 +0000 Subject: [PATCH 426/674] rna api cleanup... - remove 'ing' suffix - use 'blend_type' rather then 'blend_mode' or 'blending' --- .../makesrna/rna_cleanup/rna_properties.txt | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/source/blender/makesrna/rna_cleanup/rna_properties.txt b/source/blender/makesrna/rna_cleanup/rna_properties.txt index 4ea22e422b0..f6979075898 100644 --- a/source/blender/makesrna/rna_cleanup/rna_properties.txt +++ b/source/blender/makesrna/rna_cleanup/rna_properties.txt @@ -25,13 +25,13 @@ Actuator.type -> type: enum ActuatorSensor.actuator -> actuator: string Actuator name, actuator active state modifications will be detected Addon.module -> module: string Module name AnimData.action -> action: pointer Active Action for this datablock -AnimData.action_blending -> action_blending: enum Method used for combining Active Action's result with result of NLA stack +AnimData.action_blending -> action_blend_type: enum Method used for combining Active Action's result with result of NLA stack AnimData.action_extrapolation -> action_extrapolation: enum Action to take for gaps past the Active Action's range (when evaluating with NLA) AnimData.action_influence -> action_influence: float Amount the Active Action contributes to the result of the NLA stack AnimData.drivers -> drivers: collection, (read-only) The Drivers/Expressions for this datablock AnimData.nla_tracks -> nla_tracks: collection, (read-only) NLA Tracks (i.e. Animation Layers) AnimViz.motion_paths -> motion_paths: pointer, (read-only) Motion Path settings for visualisation -AnimViz.onion_skinning -> onion_skinning: pointer, (read-only) Onion Skinning (ghosting) settings for visualisation +AnimViz.onion_skinning -> onion_skin_frames: pointer, (read-only) Onion Skinning (ghosting) settings for visualisation AnimVizMotionPaths.after_current -> after_current: int Number of frames to show after the current frame (only for 'Around Current Frame' Onion-skinning method) AnimVizMotionPaths.bake_location -> bake_location: enum When calculating Bone Paths, use Head or Tips AnimVizMotionPaths.before_current -> before_current: int Number of frames to show before the current frame (only for 'Around Current Frame' Onion-skinning method) @@ -139,7 +139,7 @@ BoidSettings.air_max_ave -> air_max_ave: float Maximum angular velocity in BoidSettings.air_max_speed -> air_max_speed: float Maximum speed in air BoidSettings.air_min_speed -> air_min_speed: float Minimum speed in air (relative to maximum speed) BoidSettings.air_personal_space -> air_personal_space: float Radius of boids personal space in air (% of particle size) -BoidSettings.banking -> banking: float Amount of rotation around velocity vector on turns +BoidSettings.banking -> bank: float Amount of rotation around velocity vector on turns BoidSettings.health -> health: float Initial boid health when born BoidSettings.height -> height: float Boid height relative to particle size BoidSettings.land_jump_speed -> land_jump_speed: float Maximum speed for jumping @@ -551,7 +551,7 @@ DomainFluidSettings.render_display_mode -> render_display_mode: enum How t DomainFluidSettings.resolution -> resolution: int Domain resolution in X,Y and Z direction DomainFluidSettings.slip_type -> slip_type: enum DomainFluidSettings.start_time -> start_time: float Simulation time of the first blender frame -DomainFluidSettings.surface_smoothing -> surface_smoothing: float Amount of surface smoothing. A value of 0 is off, 1 is normal smoothing and more than 1 is extra smoothing +DomainFluidSettings.surface_smoothing -> surface_smooth: float Amount of surface smoothing. A value of 0 is off, 1 is normal smoothing and more than 1 is extra smoothing DomainFluidSettings.surface_subdivisions -> surface_subdivisions: int Number of isosurface subdivisions. This is necessary for the inclusion of particles into the surface generation. Warning - can lead to longer computation times! DomainFluidSettings.tracer_particles -> tracer_particles: int Number of tracer particles to generate DomainFluidSettings.viewport_display_mode -> viewport_display_mode: enum How to display the mesh in the viewport @@ -807,7 +807,7 @@ GameSoftBodySettings.linstiff -> linstiff: float Linear stiffness of the s GameSoftBodySettings.margin -> margin: float Collision margin for soft body. Small value makes the algorithm unstable GameSoftBodySettings.position_iterations -> position_iterations: int Position solver iterations GameSoftBodySettings.threshold -> threshold: float Shape matching threshold -GameSoftBodySettings.welding -> welding: float 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) +GameSoftBodySettings.welding -> weld_threshold: float 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) GameStringProperty.value -> value: string Property value GameTimerProperty.value -> value: float Property value GlowSequence.blur_distance -> blur_distance: float Radius of glow effect @@ -969,7 +969,7 @@ KeyingSetInfo.bl_label -> bl_label: string KeyingSetPath.array_index -> array_index: int Index to the specific setting if applicable KeyingSetPath.data_path -> data_path: string Path to property setting KeyingSetPath.group -> group: string Name of Action Group to assign setting(s) for this path to -KeyingSetPath.grouping -> grouping: enum Method used to define which Group-name to use +KeyingSetPath.grouping -> group_method: enum Method used to define which Group-name to use KeyingSetPath.id -> id: pointer ID-Block that keyframes for Keying Set should be added to (for Absolute Keying Sets only) KeyingSetPath.id_type -> id_type: enum Type of ID-block that can be used KinematicConstraint.axis_reference -> axis_reference: enum Constraint axis Lock options relative to Bone or Target reference @@ -1435,7 +1435,7 @@ NlaStrip.action_frame_end -> action_frame_end: float NlaStrip.action_frame_start -> action_frame_start: float NlaStrip.blend_in -> blend_in: float Number of frames at start of strip to fade in influence NlaStrip.blend_out -> blend_out: float -NlaStrip.blending -> blending: enum Method used for combining strip's result with accumulated result +NlaStrip.blending -> blend_type: enum Method used for combining strip's result with accumulated result NlaStrip.extrapolation -> extrapolation: enum Action to take for gaps past the strip extents NlaStrip.fcurves -> fcurves: collection, (read-only) F-Curves for controlling the strip's influence and timing NlaStrip.frame_end -> frame_end: float @@ -2102,7 +2102,7 @@ ScrewModifier.steps -> steps: int Number of steps in the revolution Sensor.frequency -> frequency: int Delay between repeated pulses(in logic tics, 0=no delay) Sensor.name -> name: string Sensor name Sensor.type -> type: enum -Sequence.blend_mode -> blend_mode: enum +Sequence.blend_mode -> blend_type: enum Sequence.blend_opacity -> blend_opacity: float Sequence.channel -> channel: int Y position of the sequence strip Sequence.effect_fader -> effect_fader: float @@ -2222,7 +2222,7 @@ SoftBodySettings.aerodynamics_type -> aerodynamics_type: enum Method of ca SoftBodySettings.ball_damp -> ball_damp: float Blending to inelastic collision SoftBodySettings.ball_size -> ball_size: float Absolute ball size or factor if not manual adjusted SoftBodySettings.ball_stiff -> ball_stiff: float Ball inflating pressure -SoftBodySettings.bending -> bending: float Bending Stiffness +SoftBodySettings.bending -> bend: float Bending Stiffness SoftBodySettings.choke -> choke: int 'Viscosity' inside collision target SoftBodySettings.collision_type -> collision_type: enum Choose Collision Type SoftBodySettings.damp -> damp: float Edge spring friction @@ -2353,7 +2353,7 @@ SpaceView3D.pivot_point -> pivot_point: enum Pivot center for rotation/sca SpaceView3D.region_3d -> region_3d: pointer, (read-only) 3D region in this space, in case of quad view the camera region SpaceView3D.region_quadview -> region_quadview: pointer, (read-only) 3D region that defines the quad view settings SpaceView3D.transform_orientation -> transform_orientation: enum Transformation orientation -SpaceView3D.viewport_shading -> viewport_shading: enum Method to display/shade objects in the 3D View +SpaceView3D.viewport_shading -> viewport_shade: enum Method to display/shade objects in the 3D View SpeedControlSequence.global_speed -> global_speed: float Spline.bezier_points -> bezier_points: collection, (read-only) Collection of points for bezier curves only Spline.character_index -> character_index: int, (read-only) Location of this character in the text data (only for text curves) @@ -2939,8 +2939,8 @@ ToolSettings.etch_template -> etch_template: pointer Template armature tha ToolSettings.image_paint -> image_paint: pointer, (read-only) ToolSettings.normal_size -> normal_size: float Display size for normals in the 3D view ToolSettings.particle_edit -> particle_edit: pointer, (read-only) -ToolSettings.proportional_editing -> proportional_editing: enum Proportional editing mode -ToolSettings.proportional_editing_falloff -> proportional_editing_falloff: enum Falloff type for proportional editing mode +ToolSettings.proportional_editing -> proportional_edit: enum Proportional editing mode +ToolSettings.proportional_editing_falloff -> proportional_edit_falloff: enum Falloff type for proportional editing mode ToolSettings.sculpt -> sculpt: pointer, (read-only) ToolSettings.snap_element -> snap_element: enum Type of element to snap to ToolSettings.snap_target -> snap_target: enum Which part to snap onto the target @@ -3074,7 +3074,7 @@ UserPreferencesView.properties_width_check -> properties_width_check: int UserPreferencesView.rotation_angle -> rotation_angle: int The rotation step for numerical pad keys (2 4 6 8) UserPreferencesView.smooth_view -> smooth_view: int The time to animate the view in milliseconds, zero to disable UserPreferencesView.timecode_style -> timecode_style: enum Format of Time Codes displayed when not displaying timing in terms of frames -UserPreferencesView.view2d_grid_minimum_spacing -> view2d_grid_minimum_spacing: int Minimum number of pixels between each gridline in 2D Viewports +UserPreferencesView.view2d_grid_minimum_spacing -> view2d_grid_min_spacing: int Minimum number of pixels between each gridline in 2D Viewports UserPreferencesView.wheel_scroll_lines -> wheel_scroll_lines: int The number of lines scrolled at a time with the mouse wheel UserSolidLight.diffuse_color -> diffuse_color: float The diffuse color of the OpenGL light UserSolidLight.direction -> direction: float The direction that the OpenGL light is shining @@ -3089,7 +3089,7 @@ VertexGroup.index -> index: int, (read-only) Index number of the vertex gr VertexGroup.name -> name: string Vertex group name VertexGroupElement.group -> group: int, (read-only) VertexGroupElement.weight -> weight: float Vertex Weight -VoronoiTexture.coloring -> coloring: enum +VoronoiTexture.coloring -> color_mode: enum VoronoiTexture.distance_metric -> distance_metric: enum VoronoiTexture.minkovsky_exponent -> minkovsky_exponent: float Minkovsky exponent VoronoiTexture.nabla -> nabla: float Size of derivative offset used for calculating normal @@ -3157,7 +3157,7 @@ World.stars -> stars: pointer, (read-only) World stars settings World.texture_slots -> texture_slots: collection, (read-only) Texture slots defining the mapping and influence of textures World.zenith_color -> zenith_color: float Color at the zenith WorldLighting.adapt_to_speed -> adapt_to_speed: float Use the speed vector pass to reduce AO samples in fast moving pixels. Higher values result in more aggressive sample reduction. Requires Vec pass enabled (for Raytrace Adaptive QMC) -WorldLighting.ao_blend_mode -> ao_blend_mode: enum Defines how AO mixes with material shading +WorldLighting.ao_blend_mode -> ao_blend_type: enum Defines how AO mixes with material shading WorldLighting.ao_factor -> ao_factor: float Factor for ambient occlusion blending WorldLighting.bias -> bias: float Bias (in radians) to prevent smoothed faces from showing banding (for Raytrace Constant Jittered) WorldLighting.correction -> correction: float Ad-hoc correction for over-occlusion due to the approximation (for Approximate) From 395d964a7029aaf0b6d30789f97c93f9bdce6067 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 12 Jul 2010 22:49:42 +0000 Subject: [PATCH 427/674] - minimum -> min, maximum -> max - have min/max as suffix - replace unneeded use of common suffix 'ing' and 'ness' where possible - replace term 'brightness' for 'intensity' --- .../makesrna/rna_cleanup/rna_properties.txt | 152 +++++++++--------- 1 file changed, 76 insertions(+), 76 deletions(-) diff --git a/source/blender/makesrna/rna_cleanup/rna_properties.txt b/source/blender/makesrna/rna_cleanup/rna_properties.txt index f6979075898..b55dcd58dfb 100644 --- a/source/blender/makesrna/rna_cleanup/rna_properties.txt +++ b/source/blender/makesrna/rna_cleanup/rna_properties.txt @@ -12,8 +12,8 @@ ActionActuator.property -> property: string Use this property to define th ActionConstraint.action -> action: pointer ActionConstraint.frame_end -> frame_end: int Last frame of the Action to use ActionConstraint.frame_start -> frame_start: int First frame of the Action to use -ActionConstraint.maximum -> maximum: float Maximum value for target channel range -ActionConstraint.minimum -> minimum: float Minimum value for target channel range +ActionConstraint.maximum -> max: float Maximum value for target channel range +ActionConstraint.minimum -> min: float Minimum value for target channel range ActionConstraint.subtarget -> subtarget: string ActionConstraint.target -> target: pointer Target Object ActionConstraint.transform_channel -> transform_channel: enum Transformation channel from the target that is used to key the Action @@ -148,7 +148,7 @@ BoidSettings.land_max_ave -> land_max_ave: float Maximum angular velocity BoidSettings.land_max_speed -> land_max_speed: float Maximum speed on land BoidSettings.land_personal_space -> land_personal_space: float Radius of boids personal space on land (% of particle size) BoidSettings.land_stick_force -> land_stick_force: float How strong a force must be to start effecting a boid on land -BoidSettings.landing_smoothness -> landing_smoothness: float How smoothly the boids land +BoidSettings.landing_smoothness -> land_smooth: float How smoothly the boids land BoidSettings.range -> range: float The maximum distance from which a boid can attack BoidSettings.states -> states: collection, (read-only) BoidSettings.strength -> strength: float Maximum caused damage on attack per second @@ -156,7 +156,7 @@ BoidState.active_boid_rule -> active_boid_rule: pointer, (read-only) BoidState.active_boid_rule_index -> active_boid_rule_index: int BoidState.falloff -> falloff: float BoidState.name -> name: string Boid state name -BoidState.rule_fuzziness -> rule_fuzziness: float +BoidState.rule_fuzziness -> rule_fuzzy: float BoidState.rules -> rules: collection, (read-only) BoidState.ruleset_type -> ruleset_type: enum How the rules in the list are evaluated BoidState.volume -> volume: float @@ -238,7 +238,7 @@ ClampToConstraint.target -> target: pointer Target Object ClothCollisionSettings.collision_quality -> collision_quality: int How many collision iterations should be done. (higher is better quality but slower) ClothCollisionSettings.friction -> friction: float Friction force if a collision happened. (higher = less movement) ClothCollisionSettings.group -> group: pointer Limit colliders to this Group -ClothCollisionSettings.min_distance -> min_distance: float Minimum distance between collision objects before collision response takes in +ClothCollisionSettings.min_distance -> distance_min: float Minimum distance between collision objects before collision response takes in ClothCollisionSettings.self_collision_quality -> self_collision_quality: int How many self collision iterations should be done. (higher is better quality but slower) ClothCollisionSettings.self_friction -> self_friction: float Friction/damping with self contact ClothCollisionSettings.self_min_distance -> self_min_distance: float 0.5 means no distance at all, 1.0 is maximum distance @@ -348,7 +348,7 @@ CompositorNodeDBlur.zoom -> zoom: float CompositorNodeDefocus.angle -> angle: int Bokeh shape rotation offset in degrees CompositorNodeDefocus.bokeh -> bokeh: enum CompositorNodeDefocus.f_stop -> f_stop: float Amount of focal blur, 128=infinity=perfect focus, half the value doubles the blur radius -CompositorNodeDefocus.max_blur -> max_blur: float blur limit, maximum CoC radius, 0=no limit +CompositorNodeDefocus.max_blur -> blur_max: float blur limit, maximum CoC radius, 0=no limit CompositorNodeDefocus.samples -> samples: int Number of samples (16=grainy, higher=less noise) CompositorNodeDefocus.threshold -> threshold: float CoC radius threshold, prevents background bleed on in-focus midground, 0=off CompositorNodeDefocus.z_scale -> z_scale: float Scales the Z input when not using a zbuffer, controls maximum blur designated by the color white or input value 1 @@ -417,8 +417,8 @@ CompositorNodeTonemap.offset -> offset: float Normally always 1, but can b CompositorNodeTonemap.tonemap_type -> tonemap_type: enum CompositorNodeValToRGB.color_ramp -> color_ramp: pointer, (read-only) CompositorNodeVecBlur.factor -> factor: float Scaling factor for motion vectors; actually 'shutter speed' in frames -CompositorNodeVecBlur.max_speed -> max_speed: int Maximum speed, or zero for none -CompositorNodeVecBlur.min_speed -> min_speed: int Minimum speed for a pixel to be blurred; used to separate background from foreground +CompositorNodeVecBlur.max_speed -> speed_max: int Maximum speed, or zero for none +CompositorNodeVecBlur.min_speed -> speed_min: int Minimum speed for a pixel to be blurred; used to separate background from foreground CompositorNodeVecBlur.samples -> samples: int ConsoleLine.current_character -> current_character: int ConsoleLine.line -> line: string Text in the line @@ -440,9 +440,9 @@ ConstraintActuator.limit -> limit: enum ConstraintActuator.limit_max -> limit_max: float ConstraintActuator.limit_min -> limit_min: float ConstraintActuator.material -> material: string Ray detects only Objects with this material -ConstraintActuator.max_angle -> max_angle: float Maximum angle (in degree) allowed with target direction. No correction is done if angle with target direction is between min and max -ConstraintActuator.max_rotation -> max_rotation: float Reference Direction -ConstraintActuator.min_angle -> min_angle: float Minimum angle (in degree) to maintain with target direction. No correction is done if angle with target direction is between min and max +ConstraintActuator.max_angle -> angle_max: float Maximum angle (in degree) allowed with target direction. No correction is done if angle with target direction is between min and max +ConstraintActuator.max_rotation -> rotation_max: float Reference Direction +ConstraintActuator.min_angle -> angle_min: float Minimum angle (in degree) to maintain with target direction. No correction is done if angle with target direction is between min and max ConstraintActuator.mode -> mode: enum The type of the constraint ConstraintActuator.property -> property: string Ray detect only Objects with this property ConstraintActuator.range -> range: float Set the maximum length of ray @@ -669,12 +669,12 @@ FModifierCycles.after_mode -> after_mode: enum Cycling mode to use after l FModifierCycles.before_cycles -> before_cycles: float Maximum number of cycles to allow before first keyframe. (0 = infinite) FModifierCycles.before_mode -> before_mode: enum Cycling mode to use before first keyframe FModifierEnvelope.control_points -> control_points: collection, (read-only) Control points defining the shape of the envelope -FModifierEnvelope.default_maximum -> default_maximum: float Upper distance from Reference Value for 1:1 default influence -FModifierEnvelope.default_minimum -> default_minimum: float Lower distance from Reference Value for 1:1 default influence +FModifierEnvelope.default_maximum -> default_max: float Upper distance from Reference Value for 1:1 default influence +FModifierEnvelope.default_minimum -> default_min: float Lower distance from Reference Value for 1:1 default influence FModifierEnvelope.reference_value -> reference_value: float Value that envelope's influence is centered around / based on FModifierEnvelopeControlPoint.frame -> frame: float Frame this control-point occurs on -FModifierEnvelopeControlPoint.maximum -> maximum: float Upper bound of envelope at this control-point -FModifierEnvelopeControlPoint.minimum -> minimum: float Lower bound of envelope at this control-point +FModifierEnvelopeControlPoint.maximum -> max: float Upper bound of envelope at this control-point +FModifierEnvelopeControlPoint.minimum -> min: float Lower bound of envelope at this control-point FModifierFunctionGenerator.amplitude -> amplitude: float Scale factor determining the maximum/minimum values FModifierFunctionGenerator.function_type -> function_type: enum Type of built-in function to use FModifierFunctionGenerator.phase_multiplier -> phase_multiplier: float Scale factor determining the 'speed' of the function @@ -683,10 +683,10 @@ FModifierFunctionGenerator.value_offset -> value_offset: float Constant fa FModifierGenerator.coefficients -> coefficients: float Coefficients for 'x' (starting from lowest power of x^0) FModifierGenerator.mode -> mode: enum Type of generator to use FModifierGenerator.poly_order -> poly_order: int The highest power of 'x' for this polynomial. (number of coefficients - 1) -FModifierLimits.maximum_x -> maximum_x: float Highest X value to allow -FModifierLimits.maximum_y -> maximum_y: float Highest Y value to allow -FModifierLimits.minimum_x -> minimum_x: float Lowest X value to allow -FModifierLimits.minimum_y -> minimum_y: float Lowest Y value to allow +FModifierLimits.maximum_x -> max_x: float Highest X value to allow +FModifierLimits.maximum_y -> max_y: float Highest Y value to allow +FModifierLimits.minimum_x -> min_x: float Lowest X value to allow +FModifierLimits.minimum_y -> min_y: float Lowest Y value to allow FModifierNoise.depth -> depth: int Amount of fine level detail present in the noise FModifierNoise.modification -> modification: enum Method of modifying the existing F-Curve FModifierNoise.phase -> phase: float A random seed for the noise effect @@ -716,13 +716,13 @@ FieldSettings.guide_minimum -> guide_minimum: float The distance from whic FieldSettings.harmonic_damping -> harmonic_damping: float Damping of the harmonic force FieldSettings.inflow -> inflow: float Inwards component of the vortex force FieldSettings.linear_drag -> linear_drag: float Drag component proportional to velocity -FieldSettings.maximum_distance -> maximum_distance: float Maximum distance for the field to work -FieldSettings.minimum_distance -> minimum_distance: float Minimum distance for the field's fall-off +FieldSettings.maximum_distance -> distance_max: float Maximum distance for the field to work +FieldSettings.minimum_distance -> distance_min: float Minimum distance for the field's fall-off FieldSettings.noise -> noise: float Noise of the force FieldSettings.quadratic_drag -> quadratic_drag: float Drag component proportional to the square of velocity FieldSettings.radial_falloff -> radial_falloff: float Radial falloff power (real gravitational falloff = 2) -FieldSettings.radial_maximum -> radial_maximum: float Maximum radial distance for the field to work -FieldSettings.radial_minimum -> radial_minimum: float Minimum radial distance for the field's fall-off +FieldSettings.radial_maximum -> radial_max: float Maximum radial distance for the field to work +FieldSettings.radial_minimum -> radial_min: float Minimum radial distance for the field's fall-off FieldSettings.rest_length -> rest_length: float Rest length of the harmonic force FieldSettings.seed -> seed: int Seed of the noise FieldSettings.shape -> shape: enum Which direction is used to calculate the effector force @@ -773,8 +773,8 @@ GPencilLayer.active_frame -> active_frame: pointer, (read-only) Frame curr GPencilLayer.color -> color: float Color for all strokes in this layer GPencilLayer.frames -> frames: collection, (read-only) Sketches for this layer on different frames GPencilLayer.info -> info: string Layer name -GPencilLayer.line_thickness -> line_thickness: int Thickness of strokes (in pixels) -GPencilLayer.max_ghost_range -> max_ghost_range: int Maximum number of frames on either side of the active frame to show (0 = show the 'first' available sketch on either side) +GPencilLayer.line_thickness -> line_width: int Thickness of strokes (in pixels) +GPencilLayer.max_ghost_range -> ghost_range_max: int Maximum number of frames on either side of the active frame to show (0 = show the 'first' available sketch on either side) GPencilLayer.opacity -> opacity: float Layer Opacity GPencilStroke.points -> points: collection, (read-only) Stroke data points GPencilStrokePoint.co -> co: float @@ -791,8 +791,8 @@ GameObjectSettings.damping -> damping: float General movement damping GameObjectSettings.form_factor -> form_factor: float Form factor scales the inertia tensor GameObjectSettings.friction_coefficients -> friction_coefficients: float Relative friction coefficient in the in the X, Y and Z directions, when anisotropic friction is enabled GameObjectSettings.mass -> mass: float Mass of the object -GameObjectSettings.maximum_velocity -> maximum_velocity: float Clamp velocity to this maximum speed -GameObjectSettings.minimum_velocity -> minimum_velocity: float Clamp velocity to this minimum speed (except when totally still) +GameObjectSettings.maximum_velocity -> velocity_max: float Clamp velocity to this maximum speed +GameObjectSettings.minimum_velocity -> velocity_min: float Clamp velocity to this minimum speed (except when totally still) GameObjectSettings.physics_type -> physics_type: enum Selects the type of physical representation GameObjectSettings.properties -> properties: collection, (read-only) Game engine properties GameObjectSettings.radius -> radius: float Radius of bounding sphere and material physics @@ -803,7 +803,7 @@ GameProperty.name -> name: string Available as GameObject attributes in th GameProperty.type -> type: enum GameSoftBodySettings.cluster_iterations -> cluster_iterations: int Specify the number of cluster iterations GameSoftBodySettings.dynamic_friction -> dynamic_friction: float Dynamic Friction -GameSoftBodySettings.linstiff -> linstiff: float Linear stiffness of the soft body links +GameSoftBodySettings.linstiff -> linear_stiffness: float Linear stiffness of the soft body links GameSoftBodySettings.margin -> margin: float Collision margin for soft body. Small value makes the algorithm unstable GameSoftBodySettings.position_iterations -> position_iterations: int Position solver iterations GameSoftBodySettings.threshold -> threshold: float Shape matching threshold @@ -909,9 +909,9 @@ IntProperty.step -> step: int, (read-only) Step size used by number button Itasc.dampeps -> dampeps: float Singular value under which damping is progressively applied. Higher values=more stability, less reactivity. Default=0.1 Itasc.dampmax -> dampmax: float Maximum damping coefficient when singular value is nearly 0. Higher values=more stability, less reactivity. Default=0.5 Itasc.feedback -> feedback: float Feedback coefficient for error correction. Average response time=1/feedback. Default=20 -Itasc.max_step -> max_step: float Higher bound for timestep in second in case of automatic substeps -Itasc.max_velocity -> max_velocity: float Maximum joint velocity in rad/s. Default=50 -Itasc.min_step -> min_step: float Lower bound for timestep in second in case of automatic substeps +Itasc.max_step -> step_max: float Higher bound for timestep in second in case of automatic substeps +Itasc.max_velocity -> velocity_max: float Maximum joint velocity in rad/s. Default=50 +Itasc.min_step -> step_min: float Lower bound for timestep in second in case of automatic substeps Itasc.mode -> mode: enum Itasc.num_iter -> num_iter: int Maximum number of iterations for convergence in case of reiteration Itasc.num_step -> num_step: int Divides the frame interval into this many steps @@ -998,13 +998,13 @@ LampSkySettings.atmosphere_extinction -> atmosphere_extinction: float Exti LampSkySettings.atmosphere_inscattering -> atmosphere_inscattering: float Scatter contribution factor LampSkySettings.atmosphere_turbidity -> atmosphere_turbidity: float Sky turbidity LampSkySettings.backscattered_light -> backscattered_light: float Backscattered light -LampSkySettings.horizon_brightness -> horizon_brightness: float Horizon brightness +TODO * LampSkySettings.horizon_brightness -> horizon_intensity: float Horizon brightness LampSkySettings.sky_blend -> sky_blend: float Blend factor with sky LampSkySettings.sky_blend_type -> sky_blend_type: enum Blend mode for combining sun sky with world sky LampSkySettings.sky_color_space -> sky_color_space: enum Color space to use for internal XYZ->RGB color conversion LampSkySettings.sky_exposure -> sky_exposure: float Strength of sky shading exponential exposure correction LampSkySettings.spread -> spread: float Horizon Spread -LampSkySettings.sun_brightness -> sun_brightness: float Sun brightness +TODO * LampSkySettings.sun_brightness -> sun_intensity: float Sun brightness LampSkySettings.sun_intensity -> sun_intensity: float Sun intensity LampSkySettings.sun_size -> sun_size: float Sun size LampTextureSlot.color_factor -> color_factor: float Amount texture affects color values @@ -1031,24 +1031,24 @@ LimitDistanceConstraint.distance -> distance: float Radius of limiting sph LimitDistanceConstraint.limit_mode -> limit_mode: enum Distances in relation to sphere of influence to allow LimitDistanceConstraint.subtarget -> subtarget: string LimitDistanceConstraint.target -> target: pointer Target Object -LimitLocationConstraint.maximum_x -> maximum_x: float Highest X value to allow -LimitLocationConstraint.maximum_y -> maximum_y: float Highest Y value to allow -LimitLocationConstraint.maximum_z -> maximum_z: float Highest Z value to allow -LimitLocationConstraint.minimum_x -> minimum_x: float Lowest X value to allow -LimitLocationConstraint.minimum_y -> minimum_y: float Lowest Y value to allow -LimitLocationConstraint.minimum_z -> minimum_z: float Lowest Z value to allow -LimitRotationConstraint.maximum_x -> maximum_x: float Highest X value to allow -LimitRotationConstraint.maximum_y -> maximum_y: float Highest Y value to allow -LimitRotationConstraint.maximum_z -> maximum_z: float Highest Z value to allow -LimitRotationConstraint.minimum_x -> minimum_x: float Lowest X value to allow -LimitRotationConstraint.minimum_y -> minimum_y: float Lowest Y value to allow -LimitRotationConstraint.minimum_z -> minimum_z: float Lowest Z value to allow -LimitScaleConstraint.maximum_x -> maximum_x: float Highest X value to allow -LimitScaleConstraint.maximum_y -> maximum_y: float Highest Y value to allow -LimitScaleConstraint.maximum_z -> maximum_z: float Highest Z value to allow -LimitScaleConstraint.minimum_x -> minimum_x: float Lowest X value to allow -LimitScaleConstraint.minimum_y -> minimum_y: float Lowest Y value to allow -LimitScaleConstraint.minimum_z -> minimum_z: float Lowest Z value to allow +LimitLocationConstraint.maximum_x -> max_x: float Highest X value to allow +LimitLocationConstraint.maximum_y -> max_y: float Highest Y value to allow +LimitLocationConstraint.maximum_z -> max_z: float Highest Z value to allow +LimitLocationConstraint.minimum_x -> min_x: float Lowest X value to allow +LimitLocationConstraint.minimum_y -> min_y: float Lowest Y value to allow +LimitLocationConstraint.minimum_z -> min_z: float Lowest Z value to allow +LimitRotationConstraint.maximum_x -> max_x: float Highest X value to allow +LimitRotationConstraint.maximum_y -> max_y: float Highest Y value to allow +LimitRotationConstraint.maximum_z -> max_z: float Highest Z value to allow +LimitRotationConstraint.minimum_x -> min_x: float Lowest X value to allow +LimitRotationConstraint.minimum_y -> min_y: float Lowest Y value to allow +LimitRotationConstraint.minimum_z -> min_z: float Lowest Z value to allow +LimitScaleConstraint.maximum_x -> max_x: float Highest X value to allow +LimitScaleConstraint.maximum_y -> max_y: float Highest Y value to allow +LimitScaleConstraint.maximum_z -> max_z: float Highest Z value to allow +LimitScaleConstraint.minimum_x -> min_x: float Lowest X value to allow +LimitScaleConstraint.minimum_y -> min_y: float Lowest Y value to allow +LimitScaleConstraint.minimum_z -> min_z: float Lowest Z value to allow LockedTrackConstraint.locked -> locked: enum Axis that points upward LockedTrackConstraint.subtarget -> subtarget: string LockedTrackConstraint.target -> target: pointer Target Object @@ -1128,13 +1128,13 @@ Material.physics -> physics: pointer, (read-only) Game physics settings Material.preview_render_type -> preview_render_type: enum Type of preview render Material.raytrace_mirror -> raytrace_mirror: pointer, (read-only) Raytraced reflection settings for the material Material.raytrace_transparency -> raytrace_transparency: pointer, (read-only) Raytraced transparency settings for the material -Material.roughness -> roughness: float Oren-Nayar Roughness +Material.roughness -> rough: float Oren-Nayar Roughness Material.shadow_buffer_bias -> shadow_buffer_bias: float Factor to multiply shadow buffer bias with (0 is ignore.) Material.shadow_casting_alpha -> shadow_casting_alpha: float Shadow casting alpha, in use for Irregular and Deep shadow buffer Material.shadow_ray_bias -> shadow_ray_bias: float Shadow raytracing bias to prevent terminator problems on shadow boundary Material.specular_alpha -> specular_alpha: float Alpha transparency for specular areas Material.specular_color -> specular_color: float Specular color of the material -Material.specular_hardness -> specular_hardness: int +Material.specular_hardness -> specular_hard: int Material.specular_intensity -> specular_intensity: float Material.specular_ior -> specular_ior: float Material.specular_ramp -> specular_ramp: pointer, (read-only) Color ramp used to affect specular shading @@ -1159,7 +1159,7 @@ MaterialHalo.flare_seed -> flare_seed: int Specifies an offset in the flar MaterialHalo.flare_size -> flare_size: float Sets the factor by which the flare is larger than the halo MaterialHalo.flare_subsize -> flare_subsize: float Sets the dimension of the subflares, dots and circles MaterialHalo.flares_sub -> flares_sub: int Sets the number of subflares -MaterialHalo.hardness -> hardness: int Sets the hardness of the halo +MaterialHalo.hardness -> hard: int Sets the hardness of the halo MaterialHalo.line_number -> line_number: int Sets the number of star shaped lines rendered over the halo MaterialHalo.rings -> rings: int Sets the number of rings rendered over the halo MaterialHalo.seed -> seed: int Randomizes ring dimension and line location @@ -1194,7 +1194,7 @@ MaterialSlot.link -> link: enum Link material to object or the object's da MaterialSlot.material -> material: pointer Material datablock used by this material slot MaterialSlot.name -> name: string, (read-only) Material slot name MaterialStrand.blend_distance -> blend_distance: float Worldspace distance over which to blend in the surface normal -MaterialStrand.min_size -> min_size: float Minimum size of strands in pixels +MaterialStrand.min_size -> size_min: float Minimum size of strands in pixels MaterialStrand.root_size -> root_size: float Start size of strands in pixels or Blender units MaterialStrand.shape -> shape: float Positive values make strands rounder, negative makes strands spiky MaterialStrand.tip_size -> tip_size: float End size of strands in pixels or Blender units @@ -1221,7 +1221,7 @@ MaterialTextureSlot.diffuse_factor -> diffuse_factor: float Amount texture MaterialTextureSlot.displacement_factor -> displacement_factor: float Amount texture displaces the surface MaterialTextureSlot.emission_factor -> emission_factor: float Amount texture affects emission MaterialTextureSlot.emit_factor -> emit_factor: float Amount texture affects emission -MaterialTextureSlot.hardness_factor -> hardness_factor: float Amount texture affects hardness +MaterialTextureSlot.hardness_factor -> hard_factor: float Amount texture affects hardness MaterialTextureSlot.mapping -> mapping: enum MaterialTextureSlot.mirror_factor -> mirror_factor: float Amount texture affects mirror color MaterialTextureSlot.normal_factor -> normal_factor: float Amount texture affects normal values @@ -1496,7 +1496,7 @@ Object.location -> location: float Location of the object Object.material_slots -> material_slots: collection, (read-only) Material slots in the object Object.matrix_local -> matrix_local: float Parent relative transformation matrix Object.matrix_world -> matrix_world: float Worldspace transformation matrix -Object.max_draw_type -> max_draw_type: enum Maximum draw type to display object with in viewport +Object.max_draw_type -> draw_type: enum Maximum draw type to display object with in viewport Object.mode -> mode: enum, (read-only) Object interaction mode Object.modifiers -> modifiers: collection, (read-only) Modifiers affecting the geometric data of the object Object.motion_path -> motion_path: pointer, (read-only) Motion Path for this element @@ -1752,9 +1752,9 @@ ParticleSystem.vertex_group_field -> vertex_group_field: string Vertex gro ParticleSystem.vertex_group_kink -> vertex_group_kink: string Vertex group to control kink ParticleSystem.vertex_group_length -> vertex_group_length: string Vertex group to control length ParticleSystem.vertex_group_rotation -> vertex_group_rotation: string Vertex group to control rotation -ParticleSystem.vertex_group_roughness1 -> vertex_group_roughness1: string Vertex group to control roughness 1 -ParticleSystem.vertex_group_roughness2 -> vertex_group_roughness2: string Vertex group to control roughness 2 -ParticleSystem.vertex_group_roughness_end -> vertex_group_roughness_end: string Vertex group to control roughness end +ParticleSystem.vertex_group_roughness1 -> vertex_group_rough1: string Vertex group to control roughness 1 +ParticleSystem.vertex_group_roughness2 -> vertex_group_rough2: string Vertex group to control roughness 2 +ParticleSystem.vertex_group_roughness_end -> vertex_group_rough_end: string Vertex group to control roughness end ParticleSystem.vertex_group_size -> vertex_group_size: string Vertex group to control size ParticleSystem.vertex_group_tangent -> vertex_group_tangent: string Vertex group to control tangent ParticleSystem.vertex_group_velocity -> vertex_group_velocity: string Vertex group to control velocity @@ -1783,7 +1783,7 @@ PointCache.step -> step: int Number of frames between cached frames PointDensity.color_ramp -> color_ramp: pointer, (read-only) PointDensity.color_source -> color_source: enum Data to derive color results from PointDensity.falloff -> falloff: enum Method of attenuating density by distance from the point -PointDensity.falloff_softness -> falloff_softness: float Softness of the 'soft' falloff option +PointDensity.falloff_softness -> falloff_soft: float Softness of the 'soft' falloff option PointDensity.noise_basis -> noise_basis: enum Noise formula used for turbulence PointDensity.object -> object: pointer Object to take point data from PointDensity.particle_cache -> particle_cache: enum Co-ordinate system to cache particles in @@ -1865,8 +1865,8 @@ PropertyActuator.object_property -> object_property: string Copy this prop PropertyActuator.property -> property: string The name of the property PropertyActuator.value -> value: string The value to use, use "" around strings PropertySensor.evaluation_type -> evaluation_type: enum Type of property evaluation -PropertySensor.max_value -> max_value: string Specify maximum value in Interval type -PropertySensor.min_value -> min_value: string Specify minimum value in Interval type +PropertySensor.max_value -> value_max: string Specify maximum value in Interval type +PropertySensor.min_value -> value_min: string Specify minimum value in Interval type PropertySensor.property -> property: string PropertySensor.value -> value: string Check for this value in types in Equal or Not Equal types PythonConstraint.number_of_targets -> number_of_targets: int Usually only 1-3 are needed @@ -2023,7 +2023,7 @@ Scene.objects -> objects: collection, (read-only) Scene.orientations -> orientations: collection, (read-only) Scene.pose_templates -> pose_templates: pointer, (read-only) Pose Template Settings Scene.pov_radio_adc_bailout -> pov_radio_adc_bailout: float The adc_bailout for radiosity rays. Use adc_bailout = 0.01 / brightest_ambient_object for good results -Scene.pov_radio_brightness -> pov_radio_brightness: float Amount objects are brightened before being returned upwards to the rest of the system +Scene.pov_radio_brightness -> pov_radio_intensity: float Amount objects are brightened before being returned upwards to the rest of the system Scene.pov_radio_count -> pov_radio_count: int Number of rays that are sent out whenever a new radiosity value has to be calculated Scene.pov_radio_error_bound -> pov_radio_error_bound: float One of the two main speed/quality tuning values, lower values are more accurate Scene.pov_radio_gray_threshold -> pov_radio_gray_threshold: float One of the two main speed/quality tuning values, lower values are more accurate @@ -2140,8 +2140,8 @@ ShaderNodeExtendedMaterial.material -> material: pointer ShaderNodeGeometry.color_layer -> color_layer: string ShaderNodeGeometry.uv_layer -> uv_layer: string ShaderNodeMapping.location -> location: float Location offset for the input coordinate -ShaderNodeMapping.maximum -> maximum: float Maximum value to clamp coordinate to -ShaderNodeMapping.minimum -> minimum: float Minimum value to clamp coordinate to +ShaderNodeMapping.maximum -> max: float Maximum value to clamp coordinate to +ShaderNodeMapping.minimum -> min: float Minimum value to clamp coordinate to ShaderNodeMapping.rotation -> rotation: float Rotation offset for the input coordinate ShaderNodeMapping.scale -> scale: float Scale adjustment for the input coordinate ShaderNodeMaterial.material -> material: pointer @@ -2242,8 +2242,8 @@ SoftBodySettings.lrot -> lrot: float Estimated rotation matrix SoftBodySettings.lscale -> lscale: float Estimated scale matrix SoftBodySettings.mass -> mass: float General Mass value SoftBodySettings.mass_vertex_group -> mass_vertex_group: string Control point mass values -SoftBodySettings.maxstep -> maxstep: int Maximal # solver steps/frame -SoftBodySettings.minstep -> minstep: int Minimal # solver steps/frame +SoftBodySettings.maxstep -> step_max: int Maximal # solver steps/frame +SoftBodySettings.minstep -> step_min: int Minimal # solver steps/frame SoftBodySettings.plastic -> plastic: float Permanent deform SoftBodySettings.pull -> pull: float Edge spring stiffness when longer than rest length SoftBodySettings.push -> push: float Edge spring stiffness when shorter than rest length @@ -2262,9 +2262,9 @@ Sound.packed_file -> packed_file: pointer, (read-only) SoundActuator.cone_inner_angle_3d -> cone_inner_angle_3d: float The angle of the inner cone SoundActuator.cone_outer_angle_3d -> cone_outer_angle_3d: float The angle of the outer cone SoundActuator.cone_outer_gain_3d -> cone_outer_gain_3d: float The gain outside the outer cone. The gain in the outer cone will be interpolated between this value and the normal gain in the inner cone -SoundActuator.max_distance_3d -> max_distance_3d: float The maximum distance at which you can hear the sound -SoundActuator.maximum_gain_3d -> maximum_gain_3d: float The maximum gain of the sound, no matter how near it is -SoundActuator.minimum_gain_3d -> minimum_gain_3d: float The minimum gain of the sound, no matter how far it is away +SoundActuator.max_distance_3d -> distance_3d_max: float The maximum distance at which you can hear the sound +SoundActuator.maximum_gain_3d -> gain_3d_max: float The maximum gain of the sound, no matter how near it is +SoundActuator.minimum_gain_3d -> gain_3d_min: float The minimum gain of the sound, no matter how far it is away SoundActuator.mode -> mode: enum SoundActuator.pitch -> pitch: float Sets the pitch of the sound SoundActuator.reference_distance_3d -> reference_distance_3d: float The distance where the sound has a gain of 1.0 @@ -2410,7 +2410,7 @@ StretchToConstraint.subtarget -> subtarget: string StretchToConstraint.target -> target: pointer Target Object StretchToConstraint.volume -> volume: enum Maintain the object's volume as it stretches StringProperty.default -> default: string, (read-only) string default value -StringProperty.max_length -> max_length: int, (read-only) Maximum length of the string, 0 means unlimited +StringProperty.max_length -> length_max: int, (read-only) Maximum length of the string, 0 means unlimited Struct.base -> base: pointer, (read-only) Struct definition this is derived from Struct.description -> description: string, (read-only) Description of the Struct's purpose Struct.functions -> functions: collection, (read-only) @@ -2435,8 +2435,8 @@ SunLamp.shadow_ray_sampling_method -> shadow_ray_sampling_method: enum Met SunLamp.shadow_soft_size -> shadow_soft_size: float Light size for ray shadow sampling (Raytraced shadows) SunLamp.sky -> sky: pointer, (read-only) Sky related settings for sun lamps TexMapping.location -> location: float -TexMapping.maximum -> maximum: float Maximum value for clipping -TexMapping.minimum -> minimum: float Minimum value for clipping +TexMapping.maximum -> max: float Maximum value for clipping +TexMapping.minimum -> min: float Minimum value for clipping TexMapping.rotation -> rotation: float TexMapping.scale -> scale: float Text.current_character -> current_character: int, (read-only) Index of current character in current line, and also start index of character in selection if one exists @@ -2474,7 +2474,7 @@ TextMarker.group -> group: int, (read-only) TextMarker.line -> line: int, (read-only) Line in which the marker is located TextMarker.start -> start: int, (read-only) Start position of the marker in the line Texture.animation_data -> animation_data: pointer, (read-only) Animation data for this datablock -Texture.brightness -> brightness: float +Texture.brightness -> intensity: float Texture.color_ramp -> color_ramp: pointer, (read-only) Texture.contrast -> contrast: float Texture.factor_blue -> factor_blue: float @@ -3180,7 +3180,7 @@ WorldMistSettings.intensity -> intensity: float Intensity of the mist effe WorldMistSettings.start -> start: float Starting distance of the mist, measured from the camera WorldStarsSettings.average_separation -> average_separation: float Average distance between any two stars WorldStarsSettings.color_randomization -> color_randomization: float Randomize star colors -WorldStarsSettings.min_distance -> min_distance: float Minimum distance to the camera for stars +WorldStarsSettings.min_distance -> distance_min: float Minimum distance to the camera for stars WorldStarsSettings.size -> size: float Average screen dimension of stars WorldTextureSlot.blend_factor -> blend_factor: float Amount texture affects color progression of the background WorldTextureSlot.horizon_factor -> horizon_factor: float Amount texture affects color of the horizon From ded8ba1d90dade45665b7009f664ea75f2bbfd96 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 12 Jul 2010 23:43:14 +0000 Subject: [PATCH 428/674] - more misc rna rename updates - edited the rna_cleaner.py script to use repr() on descriptions so quotes dont result in invalid generated python scripts. --- .../makesrna/rna_cleanup/rna_cleaner.py | 38 ++++++----- .../makesrna/rna_cleanup/rna_properties.txt | 66 +++++++++---------- 2 files changed, 56 insertions(+), 48 deletions(-) diff --git a/source/blender/makesrna/rna_cleanup/rna_cleaner.py b/source/blender/makesrna/rna_cleanup/rna_cleaner.py index 3f68ec4a955..f39ee586237 100755 --- a/source/blender/makesrna/rna_cleanup/rna_cleaner.py +++ b/source/blender/makesrna/rna_cleanup/rna_cleaner.py @@ -57,7 +57,7 @@ def check_commandline(): usage() if sys.argv[1] == '-h': help() - elif not (sys.argv[1][-4:] == '.txt' or sys.argv[1][-3:] == '.py'): + elif not (sys.argv[1].endswith(".txt") or sys.argv[1].endswith(".py")): print ('\nBad input file extension... exiting.') usage() else: @@ -147,7 +147,7 @@ def get_props_from_txt(input_filename): changed = check_if_changed(bfrom, bto) # lists formatting - props=[comment, changed, bclass, bfrom, bto, kwcheck, btype, description] + props=[comment, changed, bclass, bfrom, bto, kwcheck, btype, repr(description)] props_list.append(props) props_length_max=list(map(max,zip(props_length_max,list(map(len,props))))) @@ -164,9 +164,10 @@ def get_props_from_py(input_filename): props_length_max = [0 for i in rna_api[0]] # this way if the vector will take more elements we are safe for index,props in enumerate(rna_api): - [comment, changed, bclass, bfrom, bto, kwcheck, btype, description] = props + comment, changed, bclass, bfrom, bto, kwcheck, btype, description = props kwcheck = check_prefix(bto) # keyword-check changed = check_if_changed(bfrom, bto) # changed? + description = repr(description) rna_api[index] = [comment, changed, bclass, bfrom, bto, kwcheck, btype, description] props_length = list(map(len,props)) # lengths props_length_max = list(map(max,zip(props_length_max,props_length))) # max lengths @@ -174,9 +175,9 @@ def get_props_from_py(input_filename): def get_props(input_filename): - if input_filename[-4:] == '.txt': + if input_filename.endswith(".txt"): props_list,props_length_max = get_props_from_txt(input_filename) - elif input_filename[-3:] == '.py': + elif input_filename.endswith(".py"): props_list,props_length_max = get_props_from_py(input_filename) return (props_list,props_length_max) @@ -200,16 +201,17 @@ def sort(props_list, sort_priority): def file_basename(input_filename): # if needed will use os.path - if input_filename[-4:] == '.txt': - if input_filename[-9:] == '_work.txt': - base_filename = input_filename[:-9] + if input_filename.endswith(".txt"): + if input_filename.endswith("_work.txt"): + base_filename = input_filename.replace("_work.txt", "") else: - base_filename = input_filename[:-4] - elif input_filename[-3:] == '.py': - if input_filename[-8:] == '_work.py': - base_filename = input_filename[:-8] + base_filename = input_filename.replace(".txt", "") + elif input_filename.endswith(".py"): + if input_filename.endswith("_work.py"): + base_filename = input_filename.replace("_work.py", "") else: - base_filename = input_filename[:-3] + base_filename = input_filename.replace(".py", "") + return base_filename @@ -236,15 +238,21 @@ def write_files(basename, props_list, props_length_max): # rna_api if props[0] == 'NOTE': indent = '# ' else: indent = ' ' - rna += indent + '("%s", "%s", "%s", "%s", "%s"),\n' % tuple(props[2:5] + props[6:]) + rna += indent + '("%s", "%s", "%s", "%s", %s),\n' % tuple(props[2:5] + props[6:]) # description is alredy string formatted # py blanks = [' '* (x[0]-x[1]) for x in zip(props_length_max,list(map(len,props)))] - props = ['"%s"%s'%(x[0],x[1]) for x in zip(props,blanks)] + props = [('"%s"%s' if props[-1] != x[0] else "%s%s") % (x[0],x[1]) for x in zip(props,blanks)] py += indent + '(%s, %s, %s, %s, %s, %s, %s, %s),\n' % tuple(props) f_txt.write(txt) f_py.write("rna_api = [\n%s]\n" % py) f_rna.write("rna_api = [\n%s]\n" % rna) + + # write useful py script, wont hurt + f_py.write("\n'''\n") + f_py.write("for p_note, p_changed, p_class, p_from, p_to, p_check, p_type, p_desc in rna_api:\n") + f_py.write(" print(p_to)\n") + f_py.write("\n'''\n") f_txt.close() f_py.close() diff --git a/source/blender/makesrna/rna_cleanup/rna_properties.txt b/source/blender/makesrna/rna_cleanup/rna_properties.txt index b55dcd58dfb..e7ad37b0d72 100644 --- a/source/blender/makesrna/rna_cleanup/rna_properties.txt +++ b/source/blender/makesrna/rna_cleanup/rna_properties.txt @@ -55,7 +55,7 @@ AreaLamp.shadow_color -> shadow_color: float Color of shadows cast by the AreaLamp.shadow_method -> shadow_method: enum Method to compute lamp shadow with AreaLamp.shadow_ray_samples_x -> shadow_ray_samples_x: int Amount of samples taken extra (samples x samples) AreaLamp.shadow_ray_samples_y -> shadow_ray_samples_y: int Amount of samples taken extra (samples x samples) -AreaLamp.shadow_ray_sampling_method -> shadow_ray_sampling_method: enum Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower +AreaLamp.shadow_ray_sampling_method -> shadow_ray_sample_method: enum Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower AreaLamp.shadow_soft_size -> shadow_soft_size: float Light size for ray shadow sampling (Raytraced shadows) AreaLamp.shape -> shape: enum Shape of the area lamp AreaLamp.size -> size: float Size of the area of the area Lamp, X direction size for Rectangle shapes @@ -106,10 +106,10 @@ BevelModifier.edge_weight_method -> edge_weight_method: enum What edge wei BevelModifier.limit_method -> limit_method: enum BevelModifier.width -> width: float Bevel value/amount BezierSplinePoint.co -> co: float Coordinates of the control point -BezierSplinePoint.handle1 -> handle1: float Coordinates of the first handle -BezierSplinePoint.handle1_type -> handle1_type: enum Handle types -BezierSplinePoint.handle2 -> handle2: float Coordinates of the second handle -BezierSplinePoint.handle2_type -> handle2_type: enum Handle types +BezierSplinePoint.handle1 -> handle_left: float Coordinates of the first handle +BezierSplinePoint.handle1_type -> handle_left_type: enum Handle types +BezierSplinePoint.handle2 -> handle_right: float Coordinates of the second handle +BezierSplinePoint.handle2_type -> handle_right_type: enum Handle types BezierSplinePoint.radius -> radius: float, (read-only) Radius for bevelling BezierSplinePoint.tilt -> tilt: float Tilt in 3D View BezierSplinePoint.weight -> weight: float Softbody goal weight @@ -134,18 +134,18 @@ BoidSettings.accuracy -> accuracy: float Accuracy of attack BoidSettings.active_boid_state -> active_boid_state: pointer, (read-only) BoidSettings.active_boid_state_index -> active_boid_state_index: int BoidSettings.aggression -> aggression: float Boid will fight this times stronger enemy -BoidSettings.air_max_acc -> air_max_acc: float Maximum acceleration in air (relative to maximum speed) -BoidSettings.air_max_ave -> air_max_ave: float Maximum angular velocity in air (relative to 180 degrees) -BoidSettings.air_max_speed -> air_max_speed: float Maximum speed in air -BoidSettings.air_min_speed -> air_min_speed: float Minimum speed in air (relative to maximum speed) +BoidSettings.air_max_acc -> air_acc_max: float Maximum acceleration in air (relative to maximum speed) +BoidSettings.air_max_ave -> air_ave_max: float Maximum angular velocity in air (relative to 180 degrees) +BoidSettings.air_max_speed -> air_speed_max: float Maximum speed in air +BoidSettings.air_min_speed -> air_speed_min: float Minimum speed in air (relative to maximum speed) BoidSettings.air_personal_space -> air_personal_space: float Radius of boids personal space in air (% of particle size) BoidSettings.banking -> bank: float Amount of rotation around velocity vector on turns BoidSettings.health -> health: float Initial boid health when born BoidSettings.height -> height: float Boid height relative to particle size BoidSettings.land_jump_speed -> land_jump_speed: float Maximum speed for jumping -BoidSettings.land_max_acc -> land_max_acc: float Maximum acceleration on land (relative to maximum speed) -BoidSettings.land_max_ave -> land_max_ave: float Maximum angular velocity on land (relative to 180 degrees) -BoidSettings.land_max_speed -> land_max_speed: float Maximum speed on land +BoidSettings.land_max_acc -> land_acc_max: float Maximum acceleration on land (relative to maximum speed) +BoidSettings.land_max_ave -> land_ave_max: float Maximum angular velocity on land (relative to 180 degrees) +BoidSettings.land_max_speed -> land_speed_max: float Maximum speed on land BoidSettings.land_personal_space -> land_personal_space: float Radius of boids personal space on land (% of particle size) BoidSettings.land_stick_force -> land_stick_force: float How strong a force must be to start effecting a boid on land BoidSettings.landing_smoothness -> land_smooth: float How smoothly the boids land @@ -241,7 +241,7 @@ ClothCollisionSettings.group -> group: pointer Limit colliders to this Gro ClothCollisionSettings.min_distance -> distance_min: float Minimum distance between collision objects before collision response takes in ClothCollisionSettings.self_collision_quality -> self_collision_quality: int How many self collision iterations should be done. (higher is better quality but slower) ClothCollisionSettings.self_friction -> self_friction: float Friction/damping with self contact -ClothCollisionSettings.self_min_distance -> self_min_distance: float 0.5 means no distance at all, 1.0 is maximum distance +ClothCollisionSettings.self_min_distance -> self_distance_min: float 0.5 means no distance at all, 1.0 is maximum distance ClothModifier.collision_settings -> collision_settings: pointer, (read-only) ClothModifier.point_cache -> point_cache: pointer, (read-only) ClothModifier.settings -> settings: pointer, (read-only) @@ -302,8 +302,8 @@ CompositorNodeBlur.factor -> factor: float CompositorNodeBlur.factor_x -> factor_x: float CompositorNodeBlur.factor_y -> factor_y: float CompositorNodeBlur.filter_type -> filter_type: enum -CompositorNodeBlur.sizex -> sizex: int -CompositorNodeBlur.sizey -> sizey: int +CompositorNodeBlur.sizex -> size_x: int +CompositorNodeBlur.sizey -> size_y: int CompositorNodeChannelMatte.algorithm -> algorithm: enum Algorithm to use to limit channel CompositorNodeChannelMatte.channel -> channel: enum Channel used to determine matte CompositorNodeChannelMatte.color_space -> color_space: enum @@ -953,10 +953,10 @@ KeyboardSensor.modifier_key -> modifier_key: enum Modifier key code KeyboardSensor.second_modifier_key -> second_modifier_key: enum Modifier key code KeyboardSensor.target -> target: string Property that indicates whether to log keystrokes as a string Keyframe.co -> co: float Coordinates of the control point -Keyframe.handle1 -> handle1: float Coordinates of the first handle -Keyframe.handle1_type -> handle1_type: enum Handle types -Keyframe.handle2 -> handle2: float Coordinates of the second handle -Keyframe.handle2_type -> handle2_type: enum Handle types +Keyframe.handle1 -> handle_left: float Coordinates of the first handle +Keyframe.handle1_type -> handle_left_type: enum Handle types +Keyframe.handle2 -> handle_right: float Coordinates of the second handle +Keyframe.handle2_type -> handle_right_type: enum Handle types Keyframe.interpolation -> interpolation: enum Interpolation method to use for segment of the curve from this Keyframe until the next Keyframe Keyframe.type -> type: enum The type of keyframe KeyingSet.active_path -> active_path: pointer Active Keying Set used to insert/delete keyframes @@ -998,13 +998,13 @@ LampSkySettings.atmosphere_extinction -> atmosphere_extinction: float Exti LampSkySettings.atmosphere_inscattering -> atmosphere_inscattering: float Scatter contribution factor LampSkySettings.atmosphere_turbidity -> atmosphere_turbidity: float Sky turbidity LampSkySettings.backscattered_light -> backscattered_light: float Backscattered light -TODO * LampSkySettings.horizon_brightness -> horizon_intensity: float Horizon brightness +LampSkySettings.horizon_brightness -> horizon_intensity: float Horizon brightness LampSkySettings.sky_blend -> sky_blend: float Blend factor with sky LampSkySettings.sky_blend_type -> sky_blend_type: enum Blend mode for combining sun sky with world sky LampSkySettings.sky_color_space -> sky_color_space: enum Color space to use for internal XYZ->RGB color conversion LampSkySettings.sky_exposure -> sky_exposure: float Strength of sky shading exponential exposure correction LampSkySettings.spread -> spread: float Horizon Spread -TODO * LampSkySettings.sun_brightness -> sun_intensity: float Sun brightness +LampSkySettings.sun_brightness -> sun_intensity: float Sun brightness LampSkySettings.sun_intensity -> sun_intensity: float Sun intensity LampSkySettings.sun_size -> sun_size: float Sun size LampTextureSlot.color_factor -> color_factor: float Amount texture affects color values @@ -1130,7 +1130,7 @@ Material.raytrace_mirror -> raytrace_mirror: pointer, (read-only) Raytrace Material.raytrace_transparency -> raytrace_transparency: pointer, (read-only) Raytraced transparency settings for the material Material.roughness -> rough: float Oren-Nayar Roughness Material.shadow_buffer_bias -> shadow_buffer_bias: float Factor to multiply shadow buffer bias with (0 is ignore.) -Material.shadow_casting_alpha -> shadow_casting_alpha: float Shadow casting alpha, in use for Irregular and Deep shadow buffer +Material.shadow_casting_alpha -> shadow_cast_alpha: float Shadow casting alpha, in use for Irregular and Deep shadow buffer Material.shadow_ray_bias -> shadow_ray_bias: float Shadow raytracing bias to prevent terminator problems on shadow boundary Material.specular_alpha -> specular_alpha: float Alpha transparency for specular areas Material.specular_color -> specular_color: float Specular color of the material @@ -1245,7 +1245,7 @@ MaterialVolume.density_scale -> density_scale: float Multiplier for the ma MaterialVolume.depth_cutoff -> depth_cutoff: float Stop ray marching early if transmission drops below this luminance - higher values give speedups in dense volumes at the expense of accuracy MaterialVolume.emission -> emission: float Amount of light that gets emitted by the volume MaterialVolume.emission_color -> emission_color: float -MaterialVolume.lighting_mode -> lighting_mode: enum Method of shading, attenuating, and scattering light through the volume +MaterialVolume.lighting_mode -> light_mode: enum Method of shading, attenuating, and scattering light through the volume MaterialVolume.ms_diffusion -> ms_diffusion: float Diffusion factor, the strength of the blurring effect MaterialVolume.ms_intensity -> ms_intensity: float Multiplier for multiple scattered light energy MaterialVolume.ms_spread -> ms_spread: float Proportional distance over which the light is diffused @@ -1805,7 +1805,7 @@ PointLamp.shadow_adaptive_threshold -> shadow_adaptive_threshold: float Th PointLamp.shadow_color -> shadow_color: float Color of shadows cast by the lamp PointLamp.shadow_method -> shadow_method: enum Method to compute lamp shadow with PointLamp.shadow_ray_samples -> shadow_ray_samples: int Amount of samples taken extra (samples x samples) -PointLamp.shadow_ray_sampling_method -> shadow_ray_sampling_method: enum Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower +PointLamp.shadow_ray_sampling_method -> shadow_ray_sample_method: enum Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower PointLamp.shadow_soft_size -> shadow_soft_size: float Light size for ray shadow sampling (Raytraced shadows) PointerProperty.fixed_type -> fixed_type: pointer, (read-only) Fixed pointer type, empty if variable type Pose.active_bone_group -> active_bone_group: pointer Active bone group for this pose @@ -2057,8 +2057,8 @@ SceneGameData.dome_text -> dome_text: pointer Custom Warp Mesh data file SceneGameData.dome_tilt -> dome_tilt: int Camera rotation in horizontal axis SceneGameData.eye_separation -> eye_separation: float Set the distance between the eyes - the camera focal length/30 should be fine SceneGameData.fps -> fps: int The nominal number of game frames per second. Physics fixed timestep = 1/fps, independently of actual frame rate -SceneGameData.framing_color -> framing_color: float Set colour of the bars -SceneGameData.framing_type -> framing_type: enum Select the type of Framing you want +SceneGameData.framing_color -> frame_color: float Set colour of the bars +SceneGameData.framing_type -> frame_type: enum Select the type of Framing you want SceneGameData.frequency -> frequency: int Displays clock frequency of fullscreen display SceneGameData.logic_step_max -> logic_step_max: int Sets the maximum number of logic frame per game frame if graphics slows down the game, higher value allows better synchronization with physics SceneGameData.material_mode -> material_mode: enum Material mode to use for rendering @@ -2371,7 +2371,7 @@ Spline.type -> type: enum The interpolation type for this curve element SplineIKConstraint.chain_length -> chain_length: int How many bones are included in the chain SplineIKConstraint.joint_bindings -> joint_bindings: float (EXPERIENCED USERS ONLY) The relative positions of the joints along the chain as percentages SplineIKConstraint.target -> target: pointer Curve that controls this relationship -SplineIKConstraint.xz_scaling_mode -> xz_scaling_mode: enum Method used for determining the scaling of the X and Z axes of the bones +SplineIKConstraint.xz_scaling_mode -> xz_scale_mode: enum Method used for determining the scaling of the X and Z axes of the bones SplinePoint.co -> co: float Point coordinates SplinePoint.radius -> radius: float, (read-only) Radius for bevelling SplinePoint.tilt -> tilt: float Tilt in 3D View @@ -2396,7 +2396,7 @@ SpotLamp.shadow_color -> shadow_color: float Color of shadows cast by the SpotLamp.shadow_filter_type -> shadow_filter_type: enum Type of shadow filter (Buffer Shadows) SpotLamp.shadow_method -> shadow_method: enum Method to compute lamp shadow with SpotLamp.shadow_ray_samples -> shadow_ray_samples: int Amount of samples taken extra (samples x samples) -SpotLamp.shadow_ray_sampling_method -> shadow_ray_sampling_method: enum Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower +SpotLamp.shadow_ray_sampling_method -> shadow_ray_sample_method: enum Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower SpotLamp.shadow_sample_buffers -> shadow_sample_buffers: enum Number of shadow buffers to render for better AA, this increases memory usage SpotLamp.shadow_soft_size -> shadow_soft_size: float Light size for ray shadow sampling (Raytraced shadows) SpotLamp.spot_blend -> spot_blend: float The softness of the spotlight edge @@ -2455,7 +2455,7 @@ TextCurve.body -> body: string contents of this text object TextCurve.edit_format -> edit_format: pointer, (read-only) Editing settings character formatting TextCurve.family -> family: string Use Blender Objects as font characters. Give font objects a common name followed by the character it represents, eg. familya, familyb etc, and turn on Verts Duplication TextCurve.font -> font: pointer -TextCurve.line_dist -> line_dist: float +TextCurve.line_dist -> line_distance: float TextCurve.offset_x -> offset_x: float Horizontal offset from the object origin TextCurve.offset_y -> offset_y: float Vertical offset from the object origin TextCurve.shear -> shear: float Italic angle of the characters @@ -2543,7 +2543,7 @@ ThemeAudioWindow.title -> title: float ThemeAudioWindow.window_sliders -> window_sliders: float ThemeBoneColorSet.active -> active: float Color used for active bones ThemeBoneColorSet.normal -> normal: float Color used for the surface of bones -ThemeBoneColorSet.selected -> selected: float Color used for selected bones +ThemeBoneColorSet.selected -> select: float Color used for selected bones ThemeConsole.back -> back: float ThemeConsole.button -> button: float ThemeConsole.button_text -> button_text: float @@ -2613,8 +2613,8 @@ ThemeFontStyle.points -> points: int ThemeFontStyle.shadow -> shadow: int Shadow size in pixels (0, 3 and 5 supported) ThemeFontStyle.shadowalpha -> shadowalpha: float ThemeFontStyle.shadowcolor -> shadowcolor: float Shadow color in grey value -ThemeFontStyle.shadx -> shadx: int Shadow offset in pixels -ThemeFontStyle.shady -> shady: int Shadow offset in pixels +ThemeFontStyle.shadx -> shadow_offset_x: int Shadow offset in pixels +ThemeFontStyle.shady -> shadow_offset_y: int Shadow offset in pixels ThemeGraphEditor.active_channels_group -> active_channels_group: float ThemeGraphEditor.back -> back: float ThemeGraphEditor.button -> button: float @@ -3074,7 +3074,7 @@ UserPreferencesView.properties_width_check -> properties_width_check: int UserPreferencesView.rotation_angle -> rotation_angle: int The rotation step for numerical pad keys (2 4 6 8) UserPreferencesView.smooth_view -> smooth_view: int The time to animate the view in milliseconds, zero to disable UserPreferencesView.timecode_style -> timecode_style: enum Format of Time Codes displayed when not displaying timing in terms of frames -UserPreferencesView.view2d_grid_minimum_spacing -> view2d_grid_min_spacing: int Minimum number of pixels between each gridline in 2D Viewports +UserPreferencesView.view2d_grid_minimum_spacing -> view2d_grid_spacing_min: int Minimum number of pixels between each gridline in 2D Viewports UserPreferencesView.wheel_scroll_lines -> wheel_scroll_lines: int The number of lines scrolled at a time with the mouse wheel UserSolidLight.diffuse_color -> diffuse_color: float The diffuse color of the OpenGL light UserSolidLight.direction -> direction: float The direction that the OpenGL light is shining From bfe11037b5d8bedb7a5185dea2eee00584254d69 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 13 Jul 2010 00:57:19 +0000 Subject: [PATCH 429/674] move nan mk files from source/ into build_files/make/ --- Makefile | 4 ++-- {source => build_files/make}/nan_compile.mk | 0 {source => build_files/make}/nan_definitions.mk | 2 +- {source => build_files/make}/nan_link.mk | 0 {source => build_files/make}/nan_subdirs.mk | 0 {source => build_files/make}/nan_warn.mk | 0 6 files changed, 3 insertions(+), 3 deletions(-) rename {source => build_files/make}/nan_compile.mk (100%) rename {source => build_files/make}/nan_definitions.mk (99%) rename {source => build_files/make}/nan_link.mk (100%) rename {source => build_files/make}/nan_subdirs.mk (100%) rename {source => build_files/make}/nan_warn.mk (100%) diff --git a/Makefile b/Makefile index 7c883c41741..b16e046d5e8 100644 --- a/Makefile +++ b/Makefile @@ -41,7 +41,7 @@ sinclude user-def.mk # export NAN_NO_OPENAL=true export NANBLENDERHOME=$(shell pwd) -MAKEFLAGS=-I$(NANBLENDERHOME)/source --no-print-directory +MAKEFLAGS=-I$(NANBLENDERHOME)/build_files/make --no-print-directory SOURCEDIR = ifeq ($(FREE_WINDOWS),true) @@ -50,7 +50,7 @@ else DIRS ?= extern intern source po endif -include source/nan_subdirs.mk +include build_files/make/nan_subdirs.mk .PHONY: release release: diff --git a/source/nan_compile.mk b/build_files/make/nan_compile.mk similarity index 100% rename from source/nan_compile.mk rename to build_files/make/nan_compile.mk diff --git a/source/nan_definitions.mk b/build_files/make/nan_definitions.mk similarity index 99% rename from source/nan_definitions.mk rename to build_files/make/nan_definitions.mk index 37df7b05467..d14bdb0a13c 100644 --- a/source/nan_definitions.mk +++ b/build_files/make/nan_definitions.mk @@ -31,7 +31,7 @@ # set some defaults when these are not overruled (?=) by environment variables # -sinclude ../user-def.mk +sinclude ../../user-def.mk # This warning only takes place once in source/ ifeq (debug, $(findstring debug, $(MAKECMDGOALS))) diff --git a/source/nan_link.mk b/build_files/make/nan_link.mk similarity index 100% rename from source/nan_link.mk rename to build_files/make/nan_link.mk diff --git a/source/nan_subdirs.mk b/build_files/make/nan_subdirs.mk similarity index 100% rename from source/nan_subdirs.mk rename to build_files/make/nan_subdirs.mk diff --git a/source/nan_warn.mk b/build_files/make/nan_warn.mk similarity index 100% rename from source/nan_warn.mk rename to build_files/make/nan_warn.mk From ef76dfd591f2643a86bf0f92f282f95724ca2fa7 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 13 Jul 2010 08:20:34 +0000 Subject: [PATCH 430/674] sequencer ui tweaks & display frame position of the playhead in a strip, helpful for working out the exact frame of an avi <> exr --- release/scripts/ui/space_sequencer.py | 47 ++++++++----------- .../blender/makesrna/intern/rna_sequencer.c | 2 +- 2 files changed, 21 insertions(+), 28 deletions(-) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 5f014f639e1..11f542ce5be 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -336,7 +336,9 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel): def draw(self, context): layout = self.layout + scene = context.scene render = context.scene.render + frame_current = scene.frame_current strip = act_strip(context) split = layout.split(percentage=0.3) @@ -351,37 +353,30 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel): split.label(text="Blend:") split.prop(strip, "blend_mode", text="") - row = layout.row() - if strip.mute == True: - row.prop(strip, "mute", toggle=True, icon='RESTRICT_VIEW_ON', text="") - elif strip.mute is False: - row.prop(strip, "mute", toggle=True, icon='RESTRICT_VIEW_OFF', text="") - + row = layout.row(align=True) sub = row.row() sub.active = (not strip.mute) - sub.prop(strip, "blend_opacity", text="Opacity", slider=True) - - row = layout.row() - row.prop(strip, "lock") + sub = row.row() + row.prop(strip, "mute", toggle=True, icon='RESTRICT_VIEW_ON' if strip.mute else 'RESTRICT_VIEW_OFF', text="") + row.prop(strip, "lock", toggle=True, icon='LOCKED' if strip.lock else 'UNLOCKED', text="") col = layout.column() - col.enabled = not strip.lock - col.prop(strip, "channel") - col.prop(strip, "frame_start") - subrow = col.split(percentage=0.66) - subrow.prop(strip, "frame_final_length") - subrow.label(text="%.2f sec" % (strip.frame_final_length / (render.fps / render.fps_base))) + sub = col.column() + sub.enabled = not strip.lock + sub.prop(strip, "channel") + sub.prop(strip, "frame_start") + sub.prop(strip, "frame_final_length") col = layout.column(align=True) - col.label(text="Offset:") - col.prop(strip, "frame_offset_start", text="Start") - col.prop(strip, "frame_offset_end", text="End") + row = col.row() + row.label(text="Final Length: %s" % bpy.utils.smpte_from_frame(strip.frame_final_length)) + row = col.row() + row.active = (frame_current >= strip.frame_start and frame_current <= strip.frame_start + strip.frame_length) + row.label(text="Strip Position: %d" % (frame_current - strip.frame_start)) - col = layout.column(align=True) - col.label(text="Still:") - col.prop(strip, "frame_still_start", text="Start") - col.prop(strip, "frame_still_end", text="End") + col.label(text="Frame Offset %d:%d" % (strip.frame_offset_start, strip.frame_offset_end)) + col.label(text="Frame Still %d:%d" % (strip.frame_still_start, strip.frame_still_end)) class SEQUENCER_PT_preview(bpy.types.Panel): @@ -552,16 +547,14 @@ class SEQUENCER_PT_input(SequencerButtonsPanel): self.draw_filename(context) layout.prop(strip, "use_translation", text="Image Offset:") - if strip.transform: + if strip.use_translation: col = layout.column(align=True) - col.active = strip.use_translation col.prop(strip.transform, "offset_x", text="X") col.prop(strip.transform, "offset_y", text="Y") layout.prop(strip, "use_crop", text="Image Crop:") - if strip.crop: + if strip.use_crop: col = layout.column(align=True) - col.active = strip.use_crop col.prop(strip.crop, "top") col.prop(strip.crop, "left") col.prop(strip.crop, "bottom") diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index 9313a85c17f..9e00dc26008 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -846,7 +846,7 @@ static void rna_def_sequence(BlenderRNA *brna) prop= RNA_def_property(srna, "frame_offset_end", PROP_INT, PROP_TIME); RNA_def_property_int_sdna(prop, NULL, "endofs"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests - RNA_def_property_ui_text(prop, "End offset", ""); + RNA_def_property_ui_text(prop, "End Offset", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop= RNA_def_property(srna, "frame_still_start", PROP_INT, PROP_TIME); From 291c99c5d9fd25e69a17a150ee86d3261987cf34 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 13 Jul 2010 09:28:01 +0000 Subject: [PATCH 431/674] - saturation option for sequencer strips, runs before multiply and color balance. - multiply of 0.0 wasnt being applied. --- release/scripts/ui/space_sequencer.py | 1 + source/blender/blenkernel/intern/sequencer.c | 29 +++++++++++++++---- source/blender/blenloader/intern/readfile.c | 9 ++++++ source/blender/makesdna/DNA_sequence_types.h | 1 + .../blender/makesrna/intern/rna_sequencer.c | 7 +++++ .../makesrna/rna_cleanup/rna_properties.txt | 2 +- 6 files changed, 43 insertions(+), 6 deletions(-) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 11f542ce5be..a41b5fe5262 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -745,6 +745,7 @@ class SEQUENCER_PT_filter(SequencerButtonsPanel): col = layout.column() col.label(text="Colors:") + col.prop(strip, "color_saturation", text="Saturation") col.prop(strip, "multiply_colors", text="Multiply") col.prop(strip, "premultiply") col.prop(strip, "convert_float") diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 1ab4e75ee06..69dd4b3a1b7 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -1769,12 +1769,31 @@ static void input_preprocess(Scene *scene, Sequence *seq, TStripElem *se, int cf if(seq->flag & SEQ_FLIPX) { IMB_flipx(se->ibuf); } - if(seq->flag & SEQ_FLIPY) { - IMB_flipy(se->ibuf); - } - if(seq->mul == 0.0) { - seq->mul = 1.0; + if(seq->sat != 1.0f) { + /* inline for now, could become an imbuf function */ + int i; + char *rct= (char *)se->ibuf->rect; + float *rctf= se->ibuf->rect_float; + const float sat= seq->sat; + float hsv[3]; + + if(rct) { + float rgb[3]; + for (i = se->ibuf->x * se->ibuf->y; i > 0; i--, rct+=4) { + rgb_byte_to_float(rct, rgb); + rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); + hsv_to_rgb(hsv[0], hsv[1] * sat, hsv[2], rgb, rgb+1, rgb+2); + rgb_float_to_byte(rgb, rct); + } + } + + if(rctf) { + for (i = se->ibuf->x * se->ibuf->y; i > 0; i--, rctf+=4) { + rgb_to_hsv(rctf[0], rctf[1], rctf[2], hsv, hsv+1, hsv+2); + hsv_to_rgb(hsv[0], hsv[1] * sat, hsv[2], rctf, rctf+1, rctf+2); + } + } } mul = seq->mul; diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 31627141235..4309163fe7a 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10953,6 +10953,15 @@ static void do_versions(FileData *fd, Library *lib, Main *main) tex->saturation= 1.0f; } + for (scene= main->scene.first; scene; scene=scene->id.next) { + if(scene) { + Sequence *seq; + SEQ_BEGIN(scene->ed, seq) { + seq->sat= 1.0f; + } + SEQ_END + } + } } /* WATCH IT!!!: pointers from libdata have not been converted yet here! */ diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h index 3ab7cb73d56..a5299ef081d 100644 --- a/source/blender/makesdna/DNA_sequence_types.h +++ b/source/blender/makesdna/DNA_sequence_types.h @@ -140,6 +140,7 @@ typedef struct Sequence { int startstill, endstill; int machine, depth; /*machine - the strip channel, depth - the depth in the sequence when dealing with metastrips */ int startdisp, enddisp; /*starting and ending points in the sequence*/ + float sat, pad; float mul, handsize; /* is sfra needed anymore? - it looks like its only used in one place */ int sfra; /* starting frame according to the timeline of the scene. */ diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index 9e00dc26008..f46efb675ca 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -992,6 +992,13 @@ static void rna_def_filter_video(StructRNA *srna) RNA_def_property_ui_text(prop, "Multiply Colors", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + prop= RNA_def_property(srna, "color_saturation", PROP_FLOAT, PROP_UNSIGNED); + RNA_def_property_float_sdna(prop, NULL, "sat"); + RNA_def_property_range(prop, 0.0f, 20.0f); + RNA_def_property_ui_range(prop, 0.0f, 2.0f, 3, 3); + RNA_def_property_ui_text(prop, "Saturation", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + prop= RNA_def_property(srna, "strobe", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 1.0f, 30.0f); RNA_def_property_ui_text(prop, "Strobe", "Only display every nth frame"); diff --git a/source/blender/makesrna/rna_cleanup/rna_properties.txt b/source/blender/makesrna/rna_cleanup/rna_properties.txt index e7ad37b0d72..0c0b7e1070b 100644 --- a/source/blender/makesrna/rna_cleanup/rna_properties.txt +++ b/source/blender/makesrna/rna_cleanup/rna_properties.txt @@ -599,7 +599,7 @@ EditObjectActuator.time -> time: int Duration the new Object lives or the EditObjectActuator.track_object -> track_object: pointer Track to this Object EffectSequence.color_balance -> color_balance: pointer, (read-only) EffectSequence.crop -> crop: pointer, (read-only) -EffectSequence.multiply_colors -> multiply_colors: float +EffectSequence.multiply_colors -> color_multiply: float EffectSequence.proxy -> proxy: pointer, (read-only) EffectSequence.strobe -> strobe: float Only display every nth frame EffectSequence.transform -> transform: pointer, (read-only) From 37173c0cd86ac28e3659d7b47077335ccf51e9f3 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Tue, 13 Jul 2010 09:29:02 +0000 Subject: [PATCH 432/674] Logic Editor UI: Make the Active object always the first one of the list, and have the ADD button only for it. The reason for that is because I can't find a way to change the active object for a particular context (it may be even a bug in the rna/UI base code). So for the time being (a.k.a. for Beta) this will make it. I actually like this solution, maybe the bug is for the good afterall. --- .../editors/space_logic/logic_window.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index 4ab2511fcd2..1d8100be1b0 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -912,8 +912,15 @@ static ID **get_selected_and_linked_obs(bContext *C, short *count, short scavisf ob= G.main->object.first; nr= 0; + + /* make the active object always the first one of the list */ + if (obact) { + idar[0]= (ID *)obact; + nr++; + } + while(ob) { - if( ob->scavisflag ) { + if( (ob->scavisflag) && (ob != obact)) { idar[nr]= (ID *)ob; nr++; } @@ -4377,6 +4384,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar) { SpaceLogic *slogic= CTX_wm_space_logic(C); Object *ob= CTX_data_active_object(C); + Object *act_ob= ob; ID **idar; PointerRNA logic_ptr, settings_ptr; @@ -4470,7 +4478,8 @@ static void logic_buttons_new(bContext *C, ARegion *ar) row = uiLayoutRow(split, 1); uiDefButBitS(block, TOG, OB_SHOWCONT, B_REDR, ob->id.name+2,(short)(xco-10), yco, (short)(width-30), UI_UNIT_Y, &ob->scaflag, 0, 31, 0, 0, "Object name, click to show/hide controllers"); - uiItemMenuEnumO(row, "LOGIC_OT_controller_add", "type", "Add Controller", 0); + if (ob == act_ob) + uiItemMenuEnumO(row, "LOGIC_OT_controller_add", "type", "Add Controller", 0); if (RNA_boolean_get(&settings_ptr, "show_state_panel")) { @@ -4563,7 +4572,8 @@ static void logic_buttons_new(bContext *C, ARegion *ar) row = uiLayoutRow(layout, 1); uiDefButBitS(block, TOG, OB_SHOWSENS, B_REDR, ob->id.name+2,(short)(xco-10), yco, (short)(width-30), UI_UNIT_Y, &ob->scaflag, 0, 31, 0, 0, "Object name, click to show/hide sensors"); - uiItemMenuEnumO(row, "LOGIC_OT_sensor_add", "type", "Add Sensor", 0); + if (ob == act_ob) + uiItemMenuEnumO(row, "LOGIC_OT_sensor_add", "type", "Add Sensor", 0); if ((ob->scaflag & OB_SHOWSENS) == 0) continue; @@ -4628,7 +4638,8 @@ static void logic_buttons_new(bContext *C, ARegion *ar) row = uiLayoutRow(layout, 1); uiDefButBitS(block, TOG, OB_SHOWACT, B_REDR, ob->id.name+2,(short)(xco-10), yco, (short)(width-30), UI_UNIT_Y, &ob->scaflag, 0, 31, 0, 0, "Object name, click to show/hide actuators"); - uiItemMenuEnumO(row, "LOGIC_OT_actuator_add", "type", "Add Actuator", 0); + if (ob == act_ob) + uiItemMenuEnumO(row, "LOGIC_OT_actuator_add", "type", "Add Actuator", 0); if ((ob->scaflag & OB_SHOWACT) == 0) continue; From 862427e0b2de1a0dc3d5bed023a3e908c2444775 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 13 Jul 2010 09:31:28 +0000 Subject: [PATCH 433/674] fix for crash copying in the sequencer. --- source/blender/blenkernel/intern/sequencer.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 69dd4b3a1b7..4a5d08f96cc 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -247,9 +247,9 @@ void seq_free_sequence(Scene *scene, Sequence *seq) if(seq->scene_sound) sound_remove_scene_sound(scene, seq->scene_sound); - } - seq_free_animdata(scene, seq); + seq_free_animdata(scene, seq); + } MEM_freeN(seq); } @@ -4062,6 +4062,7 @@ Sequence *alloc_sequence(ListBase *lb, int cfra, int machine) seq->flag= SELECT; seq->start= cfra; seq->machine= machine; + seq->sat= 1.0; seq->mul= 1.0; seq->blend_opacity = 100.0; seq->volume = 1.0f; From 161ee379a06d57f0dc732960ae05f089924727fb Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 13 Jul 2010 10:29:41 +0000 Subject: [PATCH 434/674] 2.5: startup.blend changes, these should all be consistent with new datablocks, mostly the startup.blend was trailing behind. Also renamed B.blend.c. * Lamp shadow buffer was Classical instead of Classical Halfway. * Point Lamp was named "Spot". * Render resolution is 50% 1080p. * Scene and material bake/use tangent space normal maps. * Remove empty text datablock. * Enable auto ray bias on material. * Change default material diffuse color to match new material. * Mist start/depth from 0/0 to 5/25 so it does something. * AO uses Add instead of Multiply. * Change world colors for new world same as startup.blend. * Default cube rotation was 0,-0,0 now 0,0,0. * Enable relative/filter/hide files in user preferences. --- source/blender/blenkernel/intern/world.c | 14 +- source/blender/editors/datafiles/B.blend.c | 13006 ---------------- .../blender/editors/datafiles/startup.blend.c | 7537 +++++++++ source/blender/editors/include/ED_datafiles.h | 4 +- source/blender/makesrna/intern/rna_modifier.c | 5 - .../blender/windowmanager/intern/wm_files.c | 2 +- 6 files changed, 7548 insertions(+), 13020 deletions(-) delete mode 100644 source/blender/editors/datafiles/B.blend.c create mode 100644 source/blender/editors/datafiles/startup.blend.c diff --git a/source/blender/blenkernel/intern/world.c b/source/blender/blenkernel/intern/world.c index fa8c8188f54..6fb1c5ff70c 100644 --- a/source/blender/blenkernel/intern/world.c +++ b/source/blender/blenkernel/intern/world.c @@ -72,12 +72,12 @@ World *add_world(char *name) wrld= alloc_libblock(&G.main->world, ID_WO, name); - wrld->horr= 0.25f; - wrld->horg= 0.25f; - wrld->horb= 0.25f; - wrld->zenr= 0.1f; - wrld->zeng= 0.1f; - wrld->zenb= 0.1f; + wrld->horr= 0.05f; + wrld->horg= 0.05f; + wrld->horb= 0.05f; + wrld->zenr= 0.01f; + wrld->zeng= 0.01f; + wrld->zenb= 0.01f; wrld->skytype= 0; wrld->stardist= 15.0f; wrld->starsize= 2.0f; @@ -96,6 +96,8 @@ World *add_world(char *name) wrld->ao_approx_error= 0.25f; wrld->preview = NULL; + wrld->miststa = 5.0f; + wrld->mistdist = 25.0f; return wrld; } diff --git a/source/blender/editors/datafiles/B.blend.c b/source/blender/editors/datafiles/B.blend.c deleted file mode 100644 index 7b51063b4dd..00000000000 --- a/source/blender/editors/datafiles/B.blend.c +++ /dev/null @@ -1,13006 +0,0 @@ -/* DataToC output of file */ - -int datatoc_B_blend_size= 415988; -char datatoc_B_blend[]= { - 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 53, 50, 82, 69, 78, 68, 32, 0, 0, 0, - 32,237,191, 95,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 76, 79, 66, 24, 1, 0, 0, 32,236,191, 95,255,127, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 53, 5, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1,168,175,123, 26, 1, 0, 0, 0, - 56,186,171, 3, 1, 0, 0, 0, 0, 16, 0, 0,128, 32, 4, 0, 60,109,101,109,111,114,121, 50, 62, 0, 0, 0, 0, 0, 0, 0, - 32, 0, 0, 0, 0, 0, 0, 0, 32,237,191, 95,255,127, 0, 0, 92,170, 54, 4, 1, 0, 0, 0,176,236,191, 95,255,127, 0, 0, -178,155,100, 0, 1, 0, 0, 0,144,236,191, 95,255,127, 0, 0,216, 48, 56, 4, 32, 0, 0, 0, 32,237,191, 95,255,127, 0, 0, - 88, 29,114, 26, 1, 0, 0, 0,208,236,191, 95,255,127, 0, 0, 56,170, 54, 4, 1, 0, 0, 0, 0,237,191, 95,255,127, 0, 0, - 41,158,100, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,237,191, 95,255,127, 0, 0, 32, 0, 0, 0, 82, 69, 78, 68, - 88, 29,114, 26, 1, 0, 0, 0, 82, 69, 78, 68, 32, 0, 0, 0, 32,237,191, 95,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 40,237,191, 95,255,127, 0, 0, 80,237,191, 95,255,127, 0, 0, 81,165,100, 0, 1, 0, 0, 0,152, 57,122, 26, 1, 0, 0, 0, - 88, 29,114, 26, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 87, 77, 0, 0, 24, 1, 0, 0,184, 60,122, 26, 1, 0, 0, 0,110, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 87,105,110, 77, 97,110, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 62,122, 26, 1, 0, 0, 0, 24, 62,122, 26, 1, 0, 0, 0, 24, 62,122, 26, 1, 0, 0, 0, 24, 62,122, 26, 1, 0, 0, 0, - 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200,122, 88, 23, 1, 0, 0, 0,200,122, 88, 23, 1, 0, 0, 0,200,122, 88, 23, 1, 0, 0, 0,152, 20, 15, 26, 1, 0, 0, 0, -152, 20, 15, 26, 1, 0, 0, 0,152, 20, 15, 26, 1, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0, 24, 62,122, 26, 1, 0, 0, 0, -111, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 26, 88, 23, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,168,175,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234,255,160, 5,132, 3, - 0, 0, 0, 0, 1, 0,238, 3, 0, 0, 1, 0, 0, 0, 0, 0, 40, 49,132, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 56,124, 81, 26, 1, 0, 0, 0,232,181,115, 26, 1, 0, 0, 0, -232,181,115, 26, 1, 0, 0, 0, 56, 21, 15, 26, 1, 0, 0, 0, 8, 22, 15, 26, 1, 0, 0, 0,216, 22, 15, 26, 1, 0, 0, 0, -216, 22, 15, 26, 1, 0, 0, 0,168, 23, 15, 26, 1, 0, 0, 0,216, 72, 15, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 56, 63,122, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, - 72, 6,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216,111,239, 25, 1, 0, 0, 0,200, 68,122, 26, 1, 0, 0, 0, 40, 69,122, 26, 1, 0, 0, 0, -104, 81,122, 26, 1, 0, 0, 0,216, 81,122, 26, 1, 0, 0, 0,200,243,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,216,111,239, 25, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,200, 91,238, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200, 91,238, 25, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, - 88, 62,117, 26, 1, 0, 0, 0,216,111,239, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 88, 62,117, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,184, 69,115, 26, 1, 0, 0, 0, -200, 91,238, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -184, 69,115, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,104, 21,113, 26, 1, 0, 0, 0, 88, 62,117, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 21,113, 26, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 72, 64,122, 26, 1, 0, 0, 0,184, 69,115, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72, 64,122, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -168, 64,122, 26, 1, 0, 0, 0,104, 21,113, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,168, 64,122, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 8, 65,122, 26, 1, 0, 0, 0, - 72, 64,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 8, 65,122, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,104, 65,122, 26, 1, 0, 0, 0,168, 64,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 65,122, 26, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,200, 65,122, 26, 1, 0, 0, 0, 8, 65,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200, 65,122, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, - 40, 66,122, 26, 1, 0, 0, 0,104, 65,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 52, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 40, 66,122, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,136, 66,122, 26, 1, 0, 0, 0, -200, 65,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -136, 66,122, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,232, 66,122, 26, 1, 0, 0, 0, 40, 66,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232, 66,122, 26, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 72, 67,122, 26, 1, 0, 0, 0,136, 66,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72, 67,122, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -168, 67,122, 26, 1, 0, 0, 0,232, 66,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,168, 67,122, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 8, 68,122, 26, 1, 0, 0, 0, - 72, 67,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 8, 68,122, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,104, 68,122, 26, 1, 0, 0, 0,168, 67,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 68,122, 26, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,200, 68,122, 26, 1, 0, 0, 0, 8, 68,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200, 68,122, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104, 68,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 48, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 40, 69,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152, 69,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200, 91,238, 25, 1, 0, 0, 0, 88, 62,117, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,152, 69,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8, 70,122, 26, 1, 0, 0, 0, - 40, 69,122, 26, 1, 0, 0, 0,200, 91,238, 25, 1, 0, 0, 0,104, 21,113, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 8, 70,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,120, 70,122, 26, 1, 0, 0, 0, -152, 69,122, 26, 1, 0, 0, 0, 88, 62,117, 26, 1, 0, 0, 0, 72, 64,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,120, 70,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,232, 70,122, 26, 1, 0, 0, 0, - 8, 70,122, 26, 1, 0, 0, 0,104, 21,113, 26, 1, 0, 0, 0, 72, 64,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,232, 70,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 88, 71,122, 26, 1, 0, 0, 0, -120, 70,122, 26, 1, 0, 0, 0,216,111,239, 25, 1, 0, 0, 0,168, 64,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 88, 71,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,200, 71,122, 26, 1, 0, 0, 0, -232, 70,122, 26, 1, 0, 0, 0,184, 69,115, 26, 1, 0, 0, 0,168, 64,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,200, 71,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 56, 72,122, 26, 1, 0, 0, 0, - 88, 71,122, 26, 1, 0, 0, 0, 72, 64,122, 26, 1, 0, 0, 0, 8, 65,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 56, 72,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,168, 72,122, 26, 1, 0, 0, 0, -200, 71,122, 26, 1, 0, 0, 0,168, 64,122, 26, 1, 0, 0, 0,104, 65,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,168, 72,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24, 73,122, 26, 1, 0, 0, 0, - 56, 72,122, 26, 1, 0, 0, 0,184, 69,115, 26, 1, 0, 0, 0,200, 65,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 24, 73,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136, 73,122, 26, 1, 0, 0, 0, -168, 72,122, 26, 1, 0, 0, 0,104, 65,122, 26, 1, 0, 0, 0,200, 65,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,136, 73,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,248, 73,122, 26, 1, 0, 0, 0, - 24, 73,122, 26, 1, 0, 0, 0,216,111,239, 25, 1, 0, 0, 0, 40, 66,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,248, 73,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,104, 74,122, 26, 1, 0, 0, 0, -136, 73,122, 26, 1, 0, 0, 0, 8, 65,122, 26, 1, 0, 0, 0,136, 66,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,104, 74,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,216, 74,122, 26, 1, 0, 0, 0, -248, 73,122, 26, 1, 0, 0, 0,168, 64,122, 26, 1, 0, 0, 0,136, 66,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,216, 74,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72, 75,122, 26, 1, 0, 0, 0, -104, 74,122, 26, 1, 0, 0, 0, 40, 66,122, 26, 1, 0, 0, 0,136, 66,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 72, 75,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,184, 75,122, 26, 1, 0, 0, 0, -216, 74,122, 26, 1, 0, 0, 0, 40, 66,122, 26, 1, 0, 0, 0,232, 66,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,184, 75,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 40, 76,122, 26, 1, 0, 0, 0, - 72, 75,122, 26, 1, 0, 0, 0,136, 66,122, 26, 1, 0, 0, 0,232, 66,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 40, 76,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152, 76,122, 26, 1, 0, 0, 0, -184, 75,122, 26, 1, 0, 0, 0,104, 21,113, 26, 1, 0, 0, 0, 72, 67,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,152, 76,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8, 77,122, 26, 1, 0, 0, 0, - 40, 76,122, 26, 1, 0, 0, 0, 8, 65,122, 26, 1, 0, 0, 0, 72, 67,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 8, 77,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,120, 77,122, 26, 1, 0, 0, 0, -152, 76,122, 26, 1, 0, 0, 0,232, 66,122, 26, 1, 0, 0, 0, 72, 67,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,120, 77,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,232, 77,122, 26, 1, 0, 0, 0, - 8, 77,122, 26, 1, 0, 0, 0, 40, 66,122, 26, 1, 0, 0, 0,168, 67,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,232, 77,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 88, 78,122, 26, 1, 0, 0, 0, -120, 77,122, 26, 1, 0, 0, 0,232, 66,122, 26, 1, 0, 0, 0, 8, 68,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 88, 78,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,200, 78,122, 26, 1, 0, 0, 0, -232, 77,122, 26, 1, 0, 0, 0,168, 67,122, 26, 1, 0, 0, 0, 8, 68,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,200, 78,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 56, 79,122, 26, 1, 0, 0, 0, - 88, 78,122, 26, 1, 0, 0, 0,104, 65,122, 26, 1, 0, 0, 0,104, 68,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 56, 79,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,168, 79,122, 26, 1, 0, 0, 0, -200, 78,122, 26, 1, 0, 0, 0, 8, 65,122, 26, 1, 0, 0, 0,104, 68,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,168, 79,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24, 80,122, 26, 1, 0, 0, 0, - 56, 79,122, 26, 1, 0, 0, 0, 72, 64,122, 26, 1, 0, 0, 0,200, 68,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 24, 80,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136, 80,122, 26, 1, 0, 0, 0, -168, 79,122, 26, 1, 0, 0, 0,200, 65,122, 26, 1, 0, 0, 0,200, 68,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,136, 80,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,248, 80,122, 26, 1, 0, 0, 0, - 24, 80,122, 26, 1, 0, 0, 0,104, 68,122, 26, 1, 0, 0, 0,200, 68,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,248, 80,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,104, 81,122, 26, 1, 0, 0, 0, -136, 80,122, 26, 1, 0, 0, 0,104, 21,113, 26, 1, 0, 0, 0,168, 67,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,104, 81,122, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 80,122, 26, 1, 0, 0, 0, 72, 67,122, 26, 1, 0, 0, 0, 8, 68,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,216, 81,122, 26, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,120, 85,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104, 21,113, 26, 1, 0, 0, 0,200, 91,238, 25, 1, 0, 0, 0, 88, 62,117, 26, 1, 0, 0, 0, - 72, 64,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, - 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 5,123, 26, 1, 0, 0, 0, -184, 5,123, 26, 1, 0, 0, 0,184, 82,122, 26, 1, 0, 0, 0, 24, 84,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -184, 82,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 24, 84,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 24, 84,122, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 82,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, - 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, - 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, - 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,120, 85,122, 26, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, - 56,124,122, 26, 1, 0, 0, 0,216, 81,122, 26, 1, 0, 0, 0,168, 64,122, 26, 1, 0, 0, 0,104, 65,122, 26, 1, 0, 0, 0, -200, 65,122, 26, 1, 0, 0, 0,184, 69,115, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 51, 1, 0, 0, 4, 4,222, 0, 52, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24,115,122, 26, 1, 0, 0, 0,200,122,122, 26, 1, 0, 0, 0, 88, 86,122, 26, 1, 0, 0, 0,184, 87,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 88, 86,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,184, 87,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 94, 67, - 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, - 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, - 31, 0,222, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, - 21, 1, 0, 0, 51, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 31, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -184, 87,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 86,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 94, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 77, 67, 1,128,138,195, 0, 0, 0, 0, -205, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,222, 0, 21, 1,205, 0, 21, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 89,122, 26, 1, 0, 0, 0,120,113,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 24, 89,122, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,184, 90,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255,205, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,184, 90,122, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88, 92,122, 26, 1, 0, 0, 0, - 24, 89,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, - 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, - 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 63, 1, 61, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 88, 92,122, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,248, 93,122, 26, 1, 0, 0, 0,184, 90,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 85,110,105,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,255, 63, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,248, 93,122, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152, 95,122, 26, 1, 0, 0, 0, - 88, 92,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, - 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, - 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75,101,121,105,110,103, 32, 83, -101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,254, 63, 1, 69, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,152, 95,122, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 56, 97,122, 26, 1, 0, 0, 0,248, 93,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 71,114, 97,118,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,254, 63, 1, 36, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 56, 97,122, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216, 98,122, 26, 1, 0, 0, 0, -152, 95,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,205, 0, 61, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,216, 98,122, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,120,100,122, 26, 1, 0, 0, 0, 56, 97,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255,205, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,120,100,122, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24,102,122, 26, 1, 0, 0, 0, -216, 98,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111, -110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254,205, 0,203, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 24,102,122, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,184,103,122, 26, 1, 0, 0, 0,120,100,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254,205, 0, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,184,103,122, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88,105,122, 26, 1, 0, 0, 0, - 24,102,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,253,205, 0,102, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 88,105,122, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,248,106,122, 26, 1, 0, 0, 0,184,103,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35,253,205, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,248,106,122, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152,108,122, 26, 1, 0, 0, 0, - 88,105,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97, -110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,253,205, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,152,108,122, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 56,110,122, 26, 1, 0, 0, 0,248,106,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243,252,205, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 56,110,122, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,111,122, 26, 1, 0, 0, 0, -152,108,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219,252,205, 0, 0, 0, - 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,216,111,122, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,120,113,122, 26, 1, 0, 0, 0, 56,110,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 70,117,108,108, 32, 83, 97,109,112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254,205, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,120,113,122, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216,111,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,252,205, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24,115,122, 26, 1, 0, 0, 0, -165, 0, 0, 0, 1, 0, 0, 0,200,122,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 88,116,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,184,117,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, - 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, - 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -184,117,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,116,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24,119,122, 26, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 24,119,122, 26, 1, 0, 0, 0, -159, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, -226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, - 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,200,122,122, 26, 1, 0, 0, 0, -160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,115,122, 26, 1, 0, 0, 0, 88,116,122, 26, 1, 0, 0, 0, -184,117,122, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, - 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, -159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 56,124,122, 26, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,184,136,122, 26, 1, 0, 0, 0,120, 85,122, 26, 1, 0, 0, 0, -216,111,239, 25, 1, 0, 0, 0, 40, 66,122, 26, 1, 0, 0, 0,136, 66,122, 26, 1, 0, 0, 0,168, 64,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 15, 15, 32, 4, 84, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,127,122, 26, 1, 0, 0, 0, 72,135,122, 26, 1, 0, 0, 0, - 24,125,122, 26, 1, 0, 0, 0,120,126,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 24,125,122, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,120,126,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,132, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 32, 4, 26, 0, 32, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,120,126,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24,125,122, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, -112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 18, 0, 0, 0, 57, 0, 0, 0, - 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, - 4, 0, 0, 4, 8, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 4, 0, 0, 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,192, 0, 0, 0,216,127,122, 26, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 72,135,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -216,128,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 56,130,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 56,130,122, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,128,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 26, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152,131,122, 26, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0,152,131,122, 26, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, -161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, 72,135,122, 26, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216,127,122, 26, 1, 0, 0, 0,216,128,122, 26, 1, 0, 0, 0, 56,130,122, 26, 1, 0, 0, 0, - 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, - 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184,136,122, 26, 1, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0,168,154,122, 26, 1, 0, 0, 0, 56,124,122, 26, 1, 0, 0, 0,104, 65,122, 26, 1, 0, 0, 0, -104, 68,122, 26, 1, 0, 0, 0,200, 68,122, 26, 1, 0, 0, 0,200, 65,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 47, 2, 0, 0, 3, 3,222, 0,251, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88,140,122, 26, 1, 0, 0, 0, 56,153,122, 26, 1, 0, 0, 0,152,137,122, 26, 1, 0, 0, 0, -248,138,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,152,137,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -248,138,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,222, 0, 26, 0,222, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 4, 0, 0,254, 4, 0, 0, 22, 2, 0, 0, 47, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -222, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,248,138,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152,137,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0,100, 66, 0, 0,131, 67, - 0, 0, 79,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,222, 0, -225, 0,205, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, - 53, 1, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,225, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 88,140,122, 26, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,136,145,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,192,239, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, 56,192,239, 25, 1, 0, 0, 0, -222, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,184,141,122, 26, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, -184,141,122, 26, 1, 0, 0, 0,221, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 56,186,171, 3, 1, 0, 0, 0, - 19, 0, 0, 0, 1, 0, 1, 0, 56,186,171, 3, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 56,186,171, 3, 1, 0, 0, 0, - 21, 0, 1, 0, 1, 0, 1, 0, 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 56,216, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 56,212,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,104,228, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 40,221, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 72,226, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 56, 70,170, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,168,211, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,210, 96, 23, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,200,142,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 40,144,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 67, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, - 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,195, 0, - 26, 0,195, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, - 69, 2, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 40,144,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,142,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0,150, 67, 0,192,116,196, 0, 0, 0, 0, 0, 0, 0, 0,205, 85,150, 67,223,204, 35,196, 26, 85,207,195, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0,155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 3, 0, 2, 0, 0, 4, 6, 0,195, 0,156, 0,195, 0,156, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136,145,122, 26, 1, 0, 0, 0, -165, 0, 0, 0, 1, 0, 0, 0, 56,153,122, 26, 1, 0, 0, 0, 88,140,122, 26, 1, 0, 0, 0,200,142,122, 26, 1, 0, 0, 0, - 40,144,122, 26, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,200,146,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 40,148,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, - 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, - 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 40,148,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,146,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136,149,122, 26, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0,136,149,122, 26, 1, 0, 0, 0, -159, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, -226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, - 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, 56,153,122, 26, 1, 0, 0, 0, -160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,145,122, 26, 1, 0, 0, 0,200,146,122, 26, 1, 0, 0, 0, - 40,148,122, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, - 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, -159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -168,154,122, 26, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,168,182,122, 26, 1, 0, 0, 0,184,136,122, 26, 1, 0, 0, 0, -232, 66,122, 26, 1, 0, 0, 0, 72, 67,122, 26, 1, 0, 0, 0, 8, 65,122, 26, 1, 0, 0, 0,136, 66,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,186, 2, 0, 0, 1, 1, 95, 2,102, 2, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,177,122, 26, 1, 0, 0, 0,168,181,122, 26, 1, 0, 0, 0, -136,155,122, 26, 1, 0, 0, 0,104,172,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,136,155,122, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,232,156,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 23, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 2, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 95, 2, 26, 0, 95, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,232,156,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 72,158,122, 26, 1, 0, 0, 0,136,155,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 1, 0, 0,193, 1, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 76, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 72,158,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,168,159,122, 26, 1, 0, 0, 0, -232,156,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, - 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, -120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, -111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, - 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -168,159,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104,172,122, 26, 1, 0, 0, 0, 72,158,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0, -163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,148, 3,163, 0,130, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,161,122, 26, 1, 0, 0, 0,200,170,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 8,161,122, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,168,162,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,254,163, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,168,162,122, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,164,122, 26, 1, 0, 0, 0, - 8,161,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80, -101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,252,163, 0, 58, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 72,164,122, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,232,165,122, 26, 1, 0, 0, 0,168,162,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116, -105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116, -105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,235,252,163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,232,165,122, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136,167,122, 26, 1, 0, 0, 0, - 72,164,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211,252,163, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,136,167,122, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 40,169,122, 26, 1, 0, 0, 0,232,165,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97, -103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97, -103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107,103,114,111,117,110,100, 32, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187,252,163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 40,169,122, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200,170,122, 26, 1, 0, 0, 0, -136,167,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114, -109, 32, 79,114,105,101,110,116, 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,163,252,163, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,200,170,122, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,169,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 73,116,101,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,163, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,104,172,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168,159,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, -111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 76, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,173,122, 26, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, -200,173,122, 26, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 25,134,144, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, - 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, -164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191, -117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62,145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, 99,240,191, 62,110,116, 85, 63, 80,185, 70,188, 0, 0, 82,180, -206, 44,182,190,198,158, 47, 62, 36,239, 74, 63, 0, 0, 8,179, 67,108,117,194,183,204,216, 65,104,156, 5,194,212,247,159,192, -235, 62,114, 66, 59,254,213,193,157,225, 3, 66, 55, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191, -117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62,145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, -214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,234,108, 69, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 32, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, -120,177,122, 26, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0,168,181,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,232,178,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 72,180,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, - 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, - 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, -101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 72,180,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,178,122, 26, 1, 0, 0, 0, - 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, -205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0,168,181,122, 26, 1, 0, 0, 0, -175, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,177,122, 26, 1, 0, 0, 0,232,178,122, 26, 1, 0, 0, 0, - 72,180,122, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,168,182,122, 26, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, -136,210,122, 26, 1, 0, 0, 0,168,154,122, 26, 1, 0, 0, 0, 40, 66,122, 26, 1, 0, 0, 0,168, 67,122, 26, 1, 0, 0, 0, - 8, 68,122, 26, 1, 0, 0, 0,232, 66,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, - 85, 0, 0, 0,255, 0, 0, 0, 2, 2,192, 1,171, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,189,122, 26, 1, 0, 0, 0,136,209,122, 26, 1, 0, 0, 0,136,183,122, 26, 1, 0, 0, 0,168,187,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,136,183,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,232,184,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, - 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, - 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, - 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -232,184,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 72,186,122, 26, 1, 0, 0, 0,136,183,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,254,194, 0, 0, 0, 0, -200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0,145, 0,200, 0,127, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,111, 0, 0, 0,255, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0,145, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 72,186,122, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,168,187,122, 26, 1, 0, 0, 0,232,184,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,168,187,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 72,186,122, 26, 1, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, - 18, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, -111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, 0, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,240, 0, 0, 0, 8,189,122, 26, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 56, 96, 58, 4, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56,190,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,190,122, 26, 1, 0, 0, 0, 23, 1, 0, 0, 1, 0, 0, 0, - 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,168,190,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 8,192,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,159, 3, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 8,192,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104,193,122, 26, 1, 0, 0, 0, -168,190,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, - 0,128,100,196, 0, 0, 0, 0,172, 0, 0, 0,189, 0, 0, 0, 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,189, 0, -164, 3,172, 0,146, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -104,193,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,192,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0,168,191, 0, 0, 20, 64, 0, 0,169,191, 0,128, 20, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160, 3, 0, 0, 0, 0, 0, 0,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 33, 0, 0, 56, 96, 58, 4, 1, 0, 0, 0, -170, 0, 0, 0, 1, 0, 0, 0, 88,205,122, 26, 1, 0, 0, 0, 8,189,122, 26, 1, 0, 0, 0,168,190,122, 26, 1, 0, 0, 0, -104,193,122, 26, 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,200,194,122, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 40,196,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 40,196,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -136,197,122, 26, 1, 0, 0, 0,200,194,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0,164, 3, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,136,197,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,232,198,122, 26, 1, 0, 0, 0, - 40,196,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, - 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, -120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, -111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, - 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -232,198,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 72,200,122, 26, 1, 0, 0, 0,136,197,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0, -163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 72,200,122, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,198,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168,201,122, 26, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0,168,201,122, 26, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, -226,225,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, - 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, -185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, -192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62, -232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, -250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181,195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63, 0,128,163, 53, -215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,151,254, 71, 66, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, -192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62, -232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, -172,148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, 88,205,122, 26, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, -136,209,122, 26, 1, 0, 0, 0, 56, 96, 58, 4, 1, 0, 0, 0,200,194,122, 26, 1, 0, 0, 0, 72,200,122, 26, 1, 0, 0, 0, - 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, - 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,200,206,122, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 40,208,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 40,208,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200,206,122, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, -112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, - 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,192, 0, 0, 0,136,209,122, 26, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88,205,122, 26, 1, 0, 0, 0,200,206,122, 26, 1, 0, 0, 0, 40,208,122, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -136,210,122, 26, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,200,243,122, 26, 1, 0, 0, 0,168,182,122, 26, 1, 0, 0, 0, -168, 67,122, 26, 1, 0, 0, 0,104, 21,113, 26, 1, 0, 0, 0, 72, 67,122, 26, 1, 0, 0, 0, 8, 68,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0,186, 2, 0, 0, 12, 12,192, 1,186, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,215,122, 26, 1, 0, 0, 0,200,242,122, 26, 1, 0, 0, 0, -104,211,122, 26, 1, 0, 0, 0, 40,214,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,104,211,122, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,200,212,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 98, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,200,212,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 40,214,122, 26, 1, 0, 0, 0,104,211,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,199,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, - 0, 0, 2, 4, 6, 0,200, 0,160, 1,200, 0,142, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,199, 0, 0, 0, 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0,160, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 40,214,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200,212,122, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, - 0, 0,199,195, 0, 0, 0, 0,231, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,248, 0, -160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0, 0, 0,191, 1, 0, 0, - 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 0,160, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, -136,215,122, 26, 1, 0, 0, 0, 24, 1, 0, 0, 1, 0, 0, 0, 72,222,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,200,216,122, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 40,218,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 78, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 49, 2, 0, 0, 74, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 40,218,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -136,219,122, 26, 1, 0, 0, 0,200,216,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,219,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,199, 1, 0, 0, - 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,199, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 0, 0, 0, 2, 0, 3, 3, - 0, 0, 0, 4, 6, 0,217, 0,200, 1,200, 0,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,216, 0, 0, 0, 75, 2, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, 0,200, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,136,219,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,232,220,122, 26, 1, 0, 0, 0, - 40,218,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0,159, 3, 0, 0, - 75, 2, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -232,220,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,219,122, 26, 1, 0, 0, 0, - 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, - 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,199, 1, 0, 0, 18, 0, 0, 0,198, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0,198, 2, 0, 0, 18, 0, 0, 0,199, 1, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, - 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,199, 2,200, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0,159, 3, 0, 0, 75, 2, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 2,200, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 72,222,122, 26, 1, 0, 0, 0, -164, 0, 0, 0, 1, 0, 0, 0, 56,102, 54, 4, 1, 0, 0, 0,136,215,122, 26, 1, 0, 0, 0,200,216,122, 26, 1, 0, 0, 0, -232,220,122, 26, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,223,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -120,223,122, 26, 1, 0, 0, 0, 23, 1, 0, 0, 1, 0, 0, 0, 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -232,223,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 72,225,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,159, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 3, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 72,225,122, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,168,226,122, 26, 1, 0, 0, 0,232,223,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, - 0,128,100,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0,172, 0, 0, 0,189, 0, 0, 0, - 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, - 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,189, 0,164, 3,172, 0,146, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,168,226,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 72,225,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, - 0, 0,168,191, 0, 0, 20, 64, 0, 0,169,191, 0,128, 20, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 0, 0, 0, 0, 0, 0,164, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,159, 3, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 3,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 72, 33, 0, 0, 56,102, 54, 4, 1, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0,152,238,122, 26, 1, 0, 0, 0, - 72,222,122, 26, 1, 0, 0, 0,232,223,122, 26, 1, 0, 0, 0,168,226,122, 26, 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, - 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 8,228,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104,229,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, - 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, - 26, 0,168, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, - 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -104,229,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,200,230,122, 26, 1, 0, 0, 0, 8,228,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,200,230,122, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 40,232,122, 26, 1, 0, 0, 0,104,229,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, - 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 40,232,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -136,233,122, 26, 1, 0, 0, 0,200,230,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, 2, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,136,233,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40,232,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, -111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,234,122, 26, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, -232,234,122, 26, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,226,225,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, - 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, -164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191, -253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181, -195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63, 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, - 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191, -253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, -214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,172,148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, -152,238,122, 26, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0,200,242,122, 26, 1, 0, 0, 0, 56,102, 54, 4, 1, 0, 0, 0, - 8,228,122, 26, 1, 0, 0, 0,136,233,122, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 8,240,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104,241,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, - 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, - 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, -101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -104,241,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,240,122, 26, 1, 0, 0, 0, - 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, -205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0,200,242,122, 26, 1, 0, 0, 0, -175, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,238,122, 26, 1, 0, 0, 0, 8,240,122, 26, 1, 0, 0, 0, -104,241,122, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,200,243,122, 26, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136,210,122, 26, 1, 0, 0, 0,104, 68,122, 26, 1, 0, 0, 0, 8, 65,122, 26, 1, 0, 0, 0, - 72, 64,122, 26, 1, 0, 0, 0,200, 68,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, - 49, 2, 0, 0,186, 2, 0, 0, 1, 1,222, 0,138, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24,251,122, 26, 1, 0, 0, 0,120, 4,123, 26, 1, 0, 0, 0,168,244,122, 26, 1, 0, 0, 0, 8,246,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,168,244,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8,246,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, - 0, 0, 0, 64, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, - 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,132, 1, - 24, 0,132, 1, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, - 49, 2, 0, 0, 49, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, - 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 8,246,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,244,122, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104,247,122, 26, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0,104,247,122, 26, 1, 0, 0, 0, -159, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,109,100, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, -149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, -152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, - 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, - 77,255,170, 64, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191,142,164,206, 63,250,192,142, 63, -180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, 81, 21, 64,191,119, 24,172,191, -216, 49, 49, 65,152, 9, 52, 65,231, 70,158, 62, 24,234,167, 62,160,206,159,187, 0, 0,170,180,243, 26,182,189,252, 74,179, 61, -195,111,128, 62, 0, 0,124, 51,211,120, 21,194,144, 5, 2, 66, 10,136,213,193,193,214,159,192,219, 38, 19, 66,196,173,255,193, -158,101,210, 65,173, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, -149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, -152, 9, 52,193, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191,142,164,206, 63,250,192,142, 63, -180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, 81, 21, 64,191,119, 24,172,191, -216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190, 0, 0, 32, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 13,133, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, 24,251,122, 26, 1, 0, 0, 0, -160, 0, 0, 0, 1, 0, 0, 0, 72,255,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, - 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -136,252,122, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,232,253,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,132, 1, 26, 0,132, 1, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 5, 0, 0,128, 7, 0, 0,249, 3, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 1, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,232,253,122, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,252,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, - 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,185, 67, 0, 0, 62,195, 0, 0, 0, 0,115, 1, 0, 0,132, 1, 0, 0, - 18, 0, 0, 0,207, 0, 0, 0, 0, 0, 0, 0,114, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,114, 1, 0, 0, - 18, 0, 0, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,132, 1,208, 0,115, 1,190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,253, 5, 0, 0,128, 7, 0, 0, 41, 3, 0, 0,248, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,132, 1,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 72,255,122, 26, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, -120, 4,123, 26, 1, 0, 0, 0, 24,251,122, 26, 1, 0, 0, 0,136,252,122, 26, 1, 0, 0, 0,232,253,122, 26, 1, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,148,239, 25, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 68, 65, 84, 65, 16, 0, 0, 0,248,148,239, 25, 1, 0, 0, 0,222, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, -168, 0,123, 26, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,168, 0,123, 26, 1, 0, 0, 0,221, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 56,186,171, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 56,186,171, 3, 1, 0, 0, 0, - 20, 0, 0, 0, 1, 0, 1, 0, 56,186,171, 3, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 56,186,171, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 56,216, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 56,212,171, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,104,228, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 40,221, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 72,226, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 56, 70,170, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,168,211, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 56,160,214, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,200,210, 96, 23, 1, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184, 1,123, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 24, 3,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 67, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,195, 0, 26, 0,195, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,195, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 24, 3,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184, 1,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0,192,116,196, 0, 0, 0, 0, - 0, 0, 0, 0,205, 85,150, 67,223,204, 35,196, 26, 85,207,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0,155, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 3, 0, - 2, 0, 0, 4, 6, 0,195, 0,156, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,120, 4,123, 26, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72,255,122, 26, 1, 0, 0, 0,184, 1,123, 26, 1, 0, 0, 0, 24, 3,123, 26, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 72, 6,123, 26, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,168,175,123, 26, 1, 0, 0, 0, 56, 63,122, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 7,123, 26, 1, 0, 0, 0, 56, 12,123, 26, 1, 0, 0, 0, -152, 12,123, 26, 1, 0, 0, 0,200, 21,123, 26, 1, 0, 0, 0, 56, 22,123, 26, 1, 0, 0, 0,136,143,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 88, 7,123, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,184, 7,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184, 7,123, 26, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 24, 8,123, 26, 1, 0, 0, 0, 88, 7,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24, 8,123, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -120, 8,123, 26, 1, 0, 0, 0,184, 7,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,120, 8,123, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,216, 8,123, 26, 1, 0, 0, 0, - 24, 8,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -216, 8,123, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 56, 9,123, 26, 1, 0, 0, 0,120, 8,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56, 9,123, 26, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,152, 9,123, 26, 1, 0, 0, 0,216, 8,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,152, 9,123, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -248, 9,123, 26, 1, 0, 0, 0, 56, 9,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 64, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,248, 9,123, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 88, 10,123, 26, 1, 0, 0, 0, -152, 9,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 88, 10,123, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,184, 10,123, 26, 1, 0, 0, 0,248, 9,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184, 10,123, 26, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 24, 11,123, 26, 1, 0, 0, 0, 88, 10,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24, 11,123, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -120, 11,123, 26, 1, 0, 0, 0,184, 10,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,120, 11,123, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,216, 11,123, 26, 1, 0, 0, 0, - 24, 11,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -216, 11,123, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 56, 12,123, 26, 1, 0, 0, 0,120, 11,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56, 12,123, 26, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 11,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152, 12,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 8, 13,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 7,123, 26, 1, 0, 0, 0, 24, 8,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8, 13,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -120, 13,123, 26, 1, 0, 0, 0,152, 12,123, 26, 1, 0, 0, 0,184, 7,123, 26, 1, 0, 0, 0,216, 8,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120, 13,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -232, 13,123, 26, 1, 0, 0, 0, 8, 13,123, 26, 1, 0, 0, 0, 24, 8,123, 26, 1, 0, 0, 0, 56, 9,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232, 13,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 88, 14,123, 26, 1, 0, 0, 0,120, 13,123, 26, 1, 0, 0, 0,216, 8,123, 26, 1, 0, 0, 0, 56, 9,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88, 14,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -200, 14,123, 26, 1, 0, 0, 0,232, 13,123, 26, 1, 0, 0, 0,120, 8,123, 26, 1, 0, 0, 0,248, 9,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200, 14,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 56, 15,123, 26, 1, 0, 0, 0, 88, 14,123, 26, 1, 0, 0, 0,152, 9,123, 26, 1, 0, 0, 0,248, 9,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56, 15,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -168, 15,123, 26, 1, 0, 0, 0,200, 14,123, 26, 1, 0, 0, 0, 56, 9,123, 26, 1, 0, 0, 0, 88, 10,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168, 15,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 24, 16,123, 26, 1, 0, 0, 0, 56, 15,123, 26, 1, 0, 0, 0,216, 8,123, 26, 1, 0, 0, 0, 88, 10,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24, 16,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -136, 16,123, 26, 1, 0, 0, 0,168, 15,123, 26, 1, 0, 0, 0,152, 9,123, 26, 1, 0, 0, 0, 88, 10,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136, 16,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -248, 16,123, 26, 1, 0, 0, 0, 24, 16,123, 26, 1, 0, 0, 0, 56, 9,123, 26, 1, 0, 0, 0,248, 9,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248, 16,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -104, 17,123, 26, 1, 0, 0, 0,136, 16,123, 26, 1, 0, 0, 0,216, 8,123, 26, 1, 0, 0, 0,184, 10,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104, 17,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -216, 17,123, 26, 1, 0, 0, 0,248, 16,123, 26, 1, 0, 0, 0, 88, 10,123, 26, 1, 0, 0, 0, 24, 11,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216, 17,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 72, 18,123, 26, 1, 0, 0, 0,104, 17,123, 26, 1, 0, 0, 0,184, 10,123, 26, 1, 0, 0, 0, 24, 11,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72, 18,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -184, 18,123, 26, 1, 0, 0, 0,216, 17,123, 26, 1, 0, 0, 0,184, 10,123, 26, 1, 0, 0, 0,120, 11,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184, 18,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 40, 19,123, 26, 1, 0, 0, 0, 72, 18,123, 26, 1, 0, 0, 0, 24, 11,123, 26, 1, 0, 0, 0,120, 11,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40, 19,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -152, 19,123, 26, 1, 0, 0, 0,184, 18,123, 26, 1, 0, 0, 0, 88, 7,123, 26, 1, 0, 0, 0,216, 11,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152, 19,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 8, 20,123, 26, 1, 0, 0, 0, 40, 19,123, 26, 1, 0, 0, 0,216, 11,123, 26, 1, 0, 0, 0, 56, 12,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8, 20,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -120, 20,123, 26, 1, 0, 0, 0,152, 19,123, 26, 1, 0, 0, 0,120, 8,123, 26, 1, 0, 0, 0, 56, 12,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120, 20,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -232, 20,123, 26, 1, 0, 0, 0, 8, 20,123, 26, 1, 0, 0, 0,152, 9,123, 26, 1, 0, 0, 0, 56, 12,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232, 20,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 88, 21,123, 26, 1, 0, 0, 0,120, 20,123, 26, 1, 0, 0, 0,120, 11,123, 26, 1, 0, 0, 0,216, 11,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88, 21,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -200, 21,123, 26, 1, 0, 0, 0,232, 20,123, 26, 1, 0, 0, 0, 24, 11,123, 26, 1, 0, 0, 0, 56, 12,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200, 21,123, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 21,123, 26, 1, 0, 0, 0, 88, 7,123, 26, 1, 0, 0, 0,184, 10,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 56, 22,123, 26, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, -216, 25,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 8,123, 26, 1, 0, 0, 0,184, 7,123, 26, 1, 0, 0, 0, - 24, 8,123, 26, 1, 0, 0, 0, 56, 9,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, -188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24,175,123, 26, 1, 0, 0, 0, 24,175,123, 26, 1, 0, 0, 0, 24, 23,123, 26, 1, 0, 0, 0,120, 24,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 24, 23,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,120, 24,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, - 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, - 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, -188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -120, 24,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 23,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, -112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,216, 25,123, 26, 1, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0, 88, 38,123, 26, 1, 0, 0, 0, 56, 22,123, 26, 1, 0, 0, 0, 56, 12,123, 26, 1, 0, 0, 0, -152, 9,123, 26, 1, 0, 0, 0,248, 9,123, 26, 1, 0, 0, 0,120, 8,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,234, 0, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120, 29,123, 26, 1, 0, 0, 0,232, 36,123, 26, 1, 0, 0, 0,184, 26,123, 26, 1, 0, 0, 0, - 24, 28,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184, 26,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 24, 28,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,116, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0,128,190, 67, 0,192, 25, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,234, 0, 26, 0,234, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -234, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 24, 28,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, 26,123, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, - 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, - 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,234, 0, - 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, - 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 38, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, -120, 29,123, 26, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0,232, 36,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,120, 30,123, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,216, 31,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,216, 31,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120, 30,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 87, 6, 0, 0, 26, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 6, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 33,123, 26, 1, 0, 0, 0, - 68, 65, 84, 65,104, 3, 0, 0, 56, 33,123, 26, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 1, 0, 0,232, 36,123, 26, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 29,123, 26, 1, 0, 0, 0,120, 30,123, 26, 1, 0, 0, 0,216, 31,123, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 88, 38,123, 26, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, - 72, 77,123, 26, 1, 0, 0, 0,216, 25,123, 26, 1, 0, 0, 0,152, 9,123, 26, 1, 0, 0, 0, 88, 10,123, 26, 1, 0, 0, 0, - 56, 9,123, 26, 1, 0, 0, 0,248, 9,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, - 65, 0, 0, 0,186, 2, 0, 0, 4, 4,234, 0,122, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 61,123, 26, 1, 0, 0, 0,216, 75,123, 26, 1, 0, 0, 0, 56, 39,123, 26, 1, 0, 0, 0,152, 40,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 56, 39,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,152, 40,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, - 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, - 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, - 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, -156, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -152, 40,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 39,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 88, 67, 0,192, 22,196, 0, 0, 0, 0, -217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0, 91, 2,217, 0, 91, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,155, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 41,123, 26, 1, 0, 0, 0,216, 59,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248, 41,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,152, 43,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255,216, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,152, 43,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56, 45,123, 26, 1, 0, 0, 0, -248, 41,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,216, 0, 61, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56, 45,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,216, 46,123, 26, 1, 0, 0, 0,152, 43,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255,216, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,216, 46,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120, 48,123, 26, 1, 0, 0, 0, - 56, 45,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111, -110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254,216, 0,203, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120, 48,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 24, 50,123, 26, 1, 0, 0, 0,216, 46,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254,216, 0, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 24, 50,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184, 51,123, 26, 1, 0, 0, 0, -120, 48,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,253,216, 0,102, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184, 51,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 88, 53,123, 26, 1, 0, 0, 0, 24, 50,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35,253,216, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 88, 53,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248, 54,123, 26, 1, 0, 0, 0, -184, 51,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97, -110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,253,216, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248, 54,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,152, 56,123, 26, 1, 0, 0, 0, 88, 53,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243,252,216, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,152, 56,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56, 58,123, 26, 1, 0, 0, 0, -248, 54,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219,252,216, 0, 0, 0, - 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56, 58,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,216, 59,123, 26, 1, 0, 0, 0,152, 56,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 70,117,108,108, 32, 83, 97,109,112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254,216, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,216, 59,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56, 58,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,252,216, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120, 61,123, 26, 1, 0, 0, 0, -165, 0, 0, 0, 1, 0, 0, 0, 56, 68,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,184, 62,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 24, 64,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, - 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, - 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, - 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, - 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 24, 64,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,120, 65,123, 26, 1, 0, 0, 0,184, 62,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,120, 65,123, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,216, 66,123, 26, 1, 0, 0, 0, 24, 64,123, 26, 1, 0, 0, 0, 0, 0,112,196, 0, 0,112, 68, - 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,216, 66,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120, 65,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, - 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, - 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 8, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,240, 0, 0, 0, 56, 68,123, 26, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0,216, 75,123, 26, 1, 0, 0, 0, -120, 61,123, 26, 1, 0, 0, 0,184, 62,123, 26, 1, 0, 0, 0,216, 66,123, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,104, 69,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -200, 70,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,200, 70,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 69,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, - 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 72,123, 26, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, - 40, 72,123, 26, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, - 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, -216, 75,123, 26, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 68,123, 26, 1, 0, 0, 0, -104, 69,123, 26, 1, 0, 0, 0,200, 70,123, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0, 72, 77,123, 26, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 24,116,123, 26, 1, 0, 0, 0, - 88, 38,123, 26, 1, 0, 0, 0,216, 11,123, 26, 1, 0, 0, 0,120, 11,123, 26, 1, 0, 0, 0, 24, 11,123, 26, 1, 0, 0, 0, - 56, 12,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, - 1, 1, 19, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,100,123, 26, 1, 0, 0, 0, - 24,115,123, 26, 1, 0, 0, 0, 40, 78,123, 26, 1, 0, 0, 0, 8, 95,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 40, 78,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,136, 79,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 4, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 18, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 19, 2, 26, 0, 19, 2, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,136, 79,123, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,232, 80,123, 26, 1, 0, 0, 0, 40, 78,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, - 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,250, 0, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,232, 80,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 72, 82,123, 26, 1, 0, 0, 0,136, 79,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, - 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 72, 82,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8, 95,123, 26, 1, 0, 0, 0, -232, 80,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, - 0, 0,184,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, -130, 1,163, 0,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 19, 4, 0, 0, - 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168, 83,123, 26, 1, 0, 0, 0,104, 93,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -168, 83,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72, 85,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,254,163, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 72, 85,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -232, 86,123, 26, 1, 0, 0, 0,168, 83,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71,114,101, 97,115,101, 32, 80,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,236,253,163, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -232, 86,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136, 88,123, 26, 1, 0, 0, 0, 72, 85,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, - 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, - 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,252,163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,136, 88,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 40, 90,123, 26, 1, 0, 0, 0,232, 86,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,129,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, - 40, 90,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200, 91,123, 26, 1, 0, 0, 0,136, 88,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114, -111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114, -111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107,103,114,111,117,110,100, 32, 73,109, 97,103,101, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105,252,163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,200, 91,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -104, 93,123, 26, 1, 0, 0, 0, 40, 90,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84,114, 97,110,115,102,111,114,109, 32, 79,114,105,101,110,116, 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 81,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -104, 93,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 91,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, - 95,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, - 95,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,116,101,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,163, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 8, 95,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 72, 82,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 96,123, 26, 1, 0, 0, 0, - 68, 65, 84, 65,104, 3, 0, 0,104, 96,123, 26, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 37,101,230, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249,173,116, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, - 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, - 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63, -192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, - 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191, -244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, - 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, 80, 25,195, 62,218,249,206, 62, - 0,237,196,187, 0, 0, 96,179,234, 2,170,189,191, 98,167, 61, 1,208,111, 62, 0, 0,224, 49,254,120, 21,194,182, 5, 2, 66, - 70,136,213,193,239,214,159,192, 5, 39, 19, 66, 15,174,255,193,217,101,210, 65,219, 40,160, 64,221,149, 47, 63, 85,126,162,190, - 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, - 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191, -244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, - 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, - 44, 8, 90,190, 2, 35,171,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,223, 34, 9, 59, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190, -237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 1, 0, 0, 24,100,123, 26, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 72,104,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,136,101,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -232,102,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,192, 59, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,239, 2, 26, 0,239, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 3, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,232,102,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136,101,123, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 40, 57, 61,194,146,211, 11, 68, -174,122,214, 66, 82, 97,202, 67,222, 2, 0, 0,239, 2, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0,221, 2, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,221, 2, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,239, 2, -122, 1,222, 2,104, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0,239, 5, 0, 0, - 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 2,122, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 72,104,123, 26, 1, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 40,111,123, 26, 1, 0, 0, 0, 24,100,123, 26, 1, 0, 0, 0, -136,101,123, 26, 1, 0, 0, 0,232,102,123, 26, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,186,171, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,199, 78, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,168,105,123, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 8,107,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, - 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, - 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 8,107,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -104,108,123, 26, 1, 0, 0, 0,168,105,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,104,108,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,200,109,123, 26, 1, 0, 0, 0, - 8,107,123, 26, 1, 0, 0, 0, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, - 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -200,109,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,108,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, - 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 40,111,123, 26, 1, 0, 0, 0, -166, 0, 0, 0, 1, 0, 0, 0, 24,115,123, 26, 1, 0, 0, 0, 72,104,123, 26, 1, 0, 0, 0,168,105,123, 26, 1, 0, 0, 0, -200,109,123, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 88,112,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,184,113,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184,113,123, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,112,123, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, - 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, - 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, - 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, 24,115,123, 26, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 40,111,123, 26, 1, 0, 0, 0, 88,112,123, 26, 1, 0, 0, 0,184,113,123, 26, 1, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0, 24,116,123, 26, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,136,143,123, 26, 1, 0, 0, 0, - 72, 77,123, 26, 1, 0, 0, 0,184, 10,123, 26, 1, 0, 0, 0,216, 8,123, 26, 1, 0, 0, 0, 88, 10,123, 26, 1, 0, 0, 0, - 24, 11,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, - 16, 16, 20, 4,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,119,123, 26, 1, 0, 0, 0, -136,142,123, 26, 1, 0, 0, 0,248,116,123, 26, 1, 0, 0, 0, 88,118,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -248,116,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 88,118,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 88,118,123, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,116,123, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, - 0, 0, 32,193, 0, 0, 0, 68,110,142,241,195, 55,199,120, 68,240, 80,128,193,136, 2, 4, 68, 3, 4, 0, 0, 20, 4, 0, 0, - 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, - 18, 0, 0, 0,139, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, - 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 20, 4,140, 1, 3, 4,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184,119,123, 26, 1, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, -152,126,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 19, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 61,181, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 24,121,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,120,122,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, - 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, - 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, - 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, - 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -120,122,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,216,123,123, 26, 1, 0, 0, 0, 24,121,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,216,123,123, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 56,125,123, 26, 1, 0, 0, 0,120,122,123, 26, 1, 0, 0, 0, 0, 0,112,196, 0, 0,112, 68, - 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 56,125,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216,123,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, - 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, - 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,240, 0, 0, 0,152,126,123, 26, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 88,138,123, 26, 1, 0, 0, 0, -184,119,123, 26, 1, 0, 0, 0, 24,121,123, 26, 1, 0, 0, 0, 56,125,123, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,200,127,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 40,129,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 40,129,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,136,130,123, 26, 1, 0, 0, 0, -200,127,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, -255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, - 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0, -251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, - 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -136,130,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,232,131,123, 26, 1, 0, 0, 0, 40,129,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,232,131,123, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 72,133,123, 26, 1, 0, 0, 0,136,130,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, - 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, - 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 72,133,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232,131,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,134,123, 26, 1, 0, 0, 0, - 68, 65, 84, 65,104, 3, 0, 0,168,134,123, 26, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63, -176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, - 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191, -222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, -224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, - 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191, -222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190, -237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 1, 0, 0, 88,138,123, 26, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0,136,142,123, 26, 1, 0, 0, 0, -152,126,123, 26, 1, 0, 0, 0,200,127,123, 26, 1, 0, 0, 0, 72,133,123, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,200,139,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 40,141,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 40,141,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200,139,123, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, - 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, - 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4, -122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, -127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, -136,142,123, 26, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,138,123, 26, 1, 0, 0, 0, -200,139,123, 26, 1, 0, 0, 0, 40,141,123, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,136,143,123, 26, 1, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,116,123, 26, 1, 0, 0, 0, 88, 7,123, 26, 1, 0, 0, 0, -184, 10,123, 26, 1, 0, 0, 0,120, 11,123, 26, 1, 0, 0, 0,216, 11,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 6, 6, 0, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,136, 54, 4, 1, 0, 0, 0, 24,174,123, 26, 1, 0, 0, 0,104,144,123, 26, 1, 0, 0, 0, - 40,147,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,104,144,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -200,145,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 0, 2, 26, 0, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,200,145,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 40,147,123, 26, 1, 0, 0, 0, -104,144,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 40,147,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,145,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0,191, 0, 0,192, 63, 0, 0, 64, 60, 0, 0,125, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 33, 0, 0, 56,136, 54, 4, 1, 0, 0, 0, -170, 0, 0, 0, 1, 0, 0, 0, 72,151,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,136,148,123, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,232,149,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 3, 26, 0, 0, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,232,149,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136,148,123, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, -144, 82, 89,194, 41,149, 13, 68,176,122,214, 66, 82, 97,202, 67,239, 2, 0, 0, 0, 3, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, - 0, 0, 0, 0,238, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, - 0, 0, 0, 4, 0, 0, 0, 3,122, 1,239, 2,104, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 2, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 72,151,123, 26, 1, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 40,158,123, 26, 1, 0, 0, 0, - 56,136, 54, 4, 1, 0, 0, 0,136,148,123, 26, 1, 0, 0, 0,232,149,123, 26, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,227, 78, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -168,152,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8,154,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 8,154,123, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,104,155,123, 26, 1, 0, 0, 0,168,152,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,104,155,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -200,156,123, 26, 1, 0, 0, 0, 8,154,123, 26, 1, 0, 0, 0, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, - 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,200,156,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104,155,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, - 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, - 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5, -163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, -112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, - 40,158,123, 26, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0,232,169,123, 26, 1, 0, 0, 0, 72,151,123, 26, 1, 0, 0, 0, -168,152,123, 26, 1, 0, 0, 0,200,156,123, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 88,159,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,184,160,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, - 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, - 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0, -225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -184,160,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 24,162,123, 26, 1, 0, 0, 0, 88,159,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 24,162,123, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,120,163,123, 26, 1, 0, 0, 0,184,160,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, - 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,120,163,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -216,164,123, 26, 1, 0, 0, 0, 24,162,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,216,164,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120,163,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0, -251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,166,123, 26, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, - 56,166,123, 26, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, - 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, -164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191, -118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, - 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, - 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191, -118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, -214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, -232,169,123, 26, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 24,174,123, 26, 1, 0, 0, 0, 40,158,123, 26, 1, 0, 0, 0, - 88,159,123, 26, 1, 0, 0, 0,216,164,123, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 88,171,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,184,172,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, - 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, - 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, -101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -184,172,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,171,123, 26, 1, 0, 0, 0, - 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, -205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, 24,174,123, 26, 1, 0, 0, 0, -175, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,169,123, 26, 1, 0, 0, 0, 88,171,123, 26, 1, 0, 0, 0, -184,172,123, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,168,175,123, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -200,166, 91, 23, 1, 0, 0, 0, 72, 6,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184,176,123, 26, 1, 0, 0, 0,216,180,123, 26, 1, 0, 0, 0, 56,181,123, 26, 1, 0, 0, 0, -168,188,123, 26, 1, 0, 0, 0, 24,189,123, 26, 1, 0, 0, 0,120, 38,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245,209, 42, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,176,123, 26, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 24,177,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24,177,123, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -120,177,123, 26, 1, 0, 0, 0,184,176,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 3, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,120,177,123, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,216,177,123, 26, 1, 0, 0, 0, - 24,177,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 5,132, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -216,177,123, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 56,178,123, 26, 1, 0, 0, 0,120,177,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,178,123, 26, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,152,178,123, 26, 1, 0, 0, 0,216,177,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,104, 3, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,152,178,123, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -248,178,123, 26, 1, 0, 0, 0, 56,178,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 5,104, 3, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,248,178,123, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 88,179,123, 26, 1, 0, 0, 0, -152,178,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 88,179,123, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,184,179,123, 26, 1, 0, 0, 0,248,178,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168, 4,104, 3, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,179,123, 26, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 24,180,123, 26, 1, 0, 0, 0, 88,179,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, 4,196, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24,180,123, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -120,180,123, 26, 1, 0, 0, 0,184,179,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 5,196, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,120,180,123, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,216,180,123, 26, 1, 0, 0, 0, - 24,180,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -216,180,123, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,180,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168, 4, 72, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,181,123, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,168,181,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,177,123, 26, 1, 0, 0, 0, -120,177,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,181,123, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 24,182,123, 26, 1, 0, 0, 0, 56,181,123, 26, 1, 0, 0, 0, 24,177,123, 26, 1, 0, 0, 0, - 56,178,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,182,123, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,136,182,123, 26, 1, 0, 0, 0,168,181,123, 26, 1, 0, 0, 0,120,177,123, 26, 1, 0, 0, 0, -152,178,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,182,123, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,248,182,123, 26, 1, 0, 0, 0, 24,182,123, 26, 1, 0, 0, 0, 56,178,123, 26, 1, 0, 0, 0, -152,178,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,182,123, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,104,183,123, 26, 1, 0, 0, 0,136,182,123, 26, 1, 0, 0, 0,184,176,123, 26, 1, 0, 0, 0, -248,178,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,183,123, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,216,183,123, 26, 1, 0, 0, 0,248,182,123, 26, 1, 0, 0, 0,216,177,123, 26, 1, 0, 0, 0, -248,178,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,183,123, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 72,184,123, 26, 1, 0, 0, 0,104,183,123, 26, 1, 0, 0, 0, 56,178,123, 26, 1, 0, 0, 0, - 88,179,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,184,123, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,184,184,123, 26, 1, 0, 0, 0,216,183,123, 26, 1, 0, 0, 0,152,178,123, 26, 1, 0, 0, 0, - 88,179,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,184,123, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 40,185,123, 26, 1, 0, 0, 0, 72,184,123, 26, 1, 0, 0, 0,248,178,123, 26, 1, 0, 0, 0, -184,179,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,185,123, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,152,185,123, 26, 1, 0, 0, 0,184,184,123, 26, 1, 0, 0, 0, 88,179,123, 26, 1, 0, 0, 0, -184,179,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,185,123, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 8,186,123, 26, 1, 0, 0, 0, 40,185,123, 26, 1, 0, 0, 0,152,178,123, 26, 1, 0, 0, 0, - 24,180,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,186,123, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,120,186,123, 26, 1, 0, 0, 0,152,185,123, 26, 1, 0, 0, 0,216,177,123, 26, 1, 0, 0, 0, - 24,180,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,186,123, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,232,186,123, 26, 1, 0, 0, 0, 8,186,123, 26, 1, 0, 0, 0,184,179,123, 26, 1, 0, 0, 0, - 24,180,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,186,123, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 88,187,123, 26, 1, 0, 0, 0,120,186,123, 26, 1, 0, 0, 0,184,176,123, 26, 1, 0, 0, 0, -120,180,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,187,123, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,200,187,123, 26, 1, 0, 0, 0,232,186,123, 26, 1, 0, 0, 0, 56,178,123, 26, 1, 0, 0, 0, -120,180,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,187,123, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 56,188,123, 26, 1, 0, 0, 0, 88,187,123, 26, 1, 0, 0, 0, 88,179,123, 26, 1, 0, 0, 0, -216,180,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,188,123, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,168,188,123, 26, 1, 0, 0, 0,200,187,123, 26, 1, 0, 0, 0,248,178,123, 26, 1, 0, 0, 0, -216,180,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,188,123, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,188,123, 26, 1, 0, 0, 0,120,180,123, 26, 1, 0, 0, 0, -216,180,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 24,189,123, 26, 1, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0,184,192,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,178,123, 26, 1, 0, 0, 0, - 24,177,123, 26, 1, 0, 0, 0,120,177,123, 26, 1, 0, 0, 0,152,178,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160, 5, 0, 0,105, 3, 0, 0,132, 3, 0, 0, 7, 7,161, 5, 28, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, -232,254,121, 3, 1, 0, 0, 0,184, 95,124, 26, 1, 0, 0, 0,184, 95,124, 26, 1, 0, 0, 0,248,189,123, 26, 1, 0, 0, 0, - 88,191,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,131,115, 26, 1, 0, 0, 0, - 56,190,115, 26, 1, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,248,189,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 88,191,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,148, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 32,180, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,161, 5, 26, 0,161, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160, 5, 0, 0,105, 3, 0, 0,130, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -161, 5, 26, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 0,122, 3, 1, 0, 0, 0, -232,127, 81, 26, 1, 0, 0, 0,232,127, 81, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88,105,115, 26, 1, 0, 0, 0,120, 28, 15, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 88,191,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248,189,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, - 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, - 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 5, 0, 0, -131, 3, 0, 0,132, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 5, 2, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,255,121, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,106,115, 26, 1, 0, 0, 0, -136, 30, 15, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -184,192,123, 26, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,248, 7,124, 26, 1, 0, 0, 0, 24,189,123, 26, 1, 0, 0, 0, -248,178,123, 26, 1, 0, 0, 0,184,179,123, 26, 1, 0, 0, 0, 24,180,123, 26, 1, 0, 0, 0,216,177,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,169, 4, 0, 0,160, 5, 0, 0, 0, 0, 0, 0,195, 2, 0, 0, 4, 4,248, 0,196, 2, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152,250,121, 3, 1, 0, 0, 0,216,254,123, 26, 1, 0, 0, 0,136, 6,124, 26, 1, 0, 0, 0, -152,193,123, 26, 1, 0, 0, 0,248,194,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104,139,115, 26, 1, 0, 0, 0,248,142,115, 26, 1, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,152,193,123, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,248,194,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,120, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 0, 0, 0, - 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 0, 31, 0,248, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,169, 4, 0, 0,160, 5, 0, 0,165, 2, 0, 0,195, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248, 0, 31, 0, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248,253,121, 3, 1, 0, 0, 0, 72,130, 81, 26, 1, 0, 0, 0, 72,130, 81, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 40,127,113, 26, 1, 0, 0, 0,184, 35, 15, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,248,194,123, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152,193,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 67, 0, 64, 80,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,103, 67, 0, 64, 41,196, 0, 0, 0, 0,231, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,164, 2, 0, 0, - 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0,164, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,248, 0,165, 2,231, 0,165, 2, 0, 0,184,143, 81, 26, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -169, 4, 0, 0,160, 5, 0, 0, 0, 0, 0, 0,164, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 0,165, 2, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,251,121, 3, 1, 0, 0, 0, -232,180, 81, 26, 1, 0, 0, 0, 8,136, 81, 26, 1, 0, 0, 0, 88,196,123, 26, 1, 0, 0, 0, 56,253,123, 26, 1, 0, 0, 0, -248,127,113, 26, 1, 0, 0, 0,104, 39, 15, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 88,196,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248,197,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152,252,121, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, - 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, - 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255,231, 0, 36, 0, - 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248,197,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,152,199,123, 26, 1, 0, 0, 0, 88,196,123, 26, 1, 0, 0, 0,184, 40,117, 25, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,231, 0, 61, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,152,199,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56,201,123, 26, 1, 0, 0, 0, -248,197,123, 26, 1, 0, 0, 0, 24, 46,117, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,253,231, 0,240, 1, - 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56,201,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,216,202,123, 26, 1, 0, 0, 0,152,199,123, 26, 1, 0, 0, 0,120, 48,117, 25, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254,231, 0,203, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 27, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,216,202,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120,204,123, 26, 1, 0, 0, 0, - 56,201,123, 26, 1, 0, 0, 0,216, 53,117, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, - 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254,231, 0, 58, 0, - 20, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120,204,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 24,206,123, 26, 1, 0, 0, 0,216,202,123, 26, 1, 0, 0, 0,152, 58,117, 25, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,253,231, 0,102, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 30, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 24,206,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,207,123, 26, 1, 0, 0, 0, -120,204,123, 26, 1, 0, 0, 0,248, 63,117, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35,253,231, 0,105, 0, - 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184,207,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 88,209,123, 26, 1, 0, 0, 0, 24,206,123, 26, 1, 0, 0, 0,184, 71,117, 25, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99,252,231, 0,168, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 88,209,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248,210,123, 26, 1, 0, 0, 0, -184,207,123, 26, 1, 0, 0, 0, 24, 74,117, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, - 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243,252,231, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248,210,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,152,212,123, 26, 1, 0, 0, 0, 88,209,123, 26, 1, 0, 0, 0,120, 76,117, 25, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,238,251,231, 0,237, 0, 20, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 34, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,152,212,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56,214,123, 26, 1, 0, 0, 0, -248,210,123, 26, 1, 0, 0, 0,216, 78,117, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,252,231, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56,214,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,216,215,123, 26, 1, 0, 0, 0,152,212,123, 26, 1, 0, 0, 0, 56, 56,117, 25, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 70,117,108,108, 32, 83, 97,109,112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254,231, 0, 0, 0, 20, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 29, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,216,215,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120,217,123, 26, 1, 0, 0, 0, - 56,214,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, - 99,111,110,116,101,120,116, 95,109,101,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, - 99,111,110,116,101,120,116, 95,109,101,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,255,207, 0, 36, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120,217,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 24,219,123, 26, 1, 0, 0, 0,216,215,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95,110,111,114,109, 97,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95,110,111,114,109, 97,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 78,111,114,109, 97,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102,255,207, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 24,219,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,220,123, 26, 1, 0, 0, 0, -120,217,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, -115,101,116,116,105,110,103,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, -115,101,116,116,105,110,103,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,101,116,116,105,110,103,115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,255,207, 0, 36, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184,220,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 88,222,123, 26, 1, 0, 0, 0, 24,219,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95,118,101,114,116,101,120, 95,103,114,111,117,112,115, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95,118,101,114,116,101,120, 95,103,114,111,117,112,115, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86,101,114,116,101,120, 32, 71,114,111,117,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,198,254,207, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 88,222,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248,223,123, 26, 1, 0, 0, 0, -184,220,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, -115,104, 97,112,101, 95,107,101,121,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, -115,104, 97,112,101, 95,107,101,121,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,112,101, 32, 75,101, -121,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98,254,207, 0, 76, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248,223,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,152,225,123, 26, 1, 0, 0, 0, 88,222,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95,117,118, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95,117,118, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 32, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,254,207, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,152,225,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56,227,123, 26, 1, 0, 0, 0, -248,223,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, -118,101,114,116,101,120, 95, 99,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, -118,101,114,116,101,120, 95, 99,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,101,114,116,101,120, 32, 67, -111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,253,207, 0, 69, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56,227,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,216,228,123, 26, 1, 0, 0, 0,152,225,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114,111,112,115, 95,109,101,115, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114,111,112,115, 95,109,101,115, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 67,117,115,116,111,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,253,207, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,216,228,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120,230,123, 26, 1, 0, 0, 0, - 56,227,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, - 95, 99,111,110,116,101,120,116, 95,119,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, - 95, 99,111,110,116,101,120,116, 95,119,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,255,207, 0, 36, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120,230,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 24,232,123, 26, 1, 0, 0, 0,216,228,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,255,207, 0,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 24,232,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,233,123, 26, 1, 0, 0, 0, -120,230,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, - 95,119,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, - 95,119,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,175,254,207, 0, 81, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184,233,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 88,235,123, 26, 1, 0, 0, 0, 24,232,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95, 97,109, 98,105,101,110,116, 95,111, 99, 99,108,117,115,105, -111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95, 97,109, 98,105,101,110,116, 95,111, 99, 99,108,117,115,105, -111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 65,109, 98,105,101,110,116, 32, 79, 99, 99,108,117,115,105,111,110, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,254,207, 0, 36, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 88,235,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248,236,123, 26, 1, 0, 0, 0, -184,233,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, - 95,101,110,118,105,114,111,110,109,101,110,116, 95,108,105,103,104,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, - 95,101,110,118,105,114,111,110,109,101,110,116, 95,108,105,103,104,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,110,118,105,114,111,110,109, -101,110,116, 32, 76,105,103,104,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55,254,207, 0, 36, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248,236,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,152,238,123, 26, 1, 0, 0, 0, 88,235,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95,105,110,100,105,114,101, 99,116, 95,108,105,103,104,116,105, -110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95,105,110,100,105,114,101, 99,116, 95,108,105,103,104,116,105, -110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 73,110,100,105,114,101, 99,116, 32, 76,105,103,104,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251,253,207, 0, 36, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,152,238,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56,240,123, 26, 1, 0, 0, 0, -248,236,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, - 95,103, 97,116,104,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, - 95,103, 97,116,104,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 97,116,104,101,114, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100,253,207, 0,127, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56,240,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,216,241,123, 26, 1, 0, 0, 0,152,238,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95,109,105,115,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95,109,105,115,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 77,105,115,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76,253,207, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,216,241,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120,243,123, 26, 1, 0, 0, 0, - 56,240,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, - 95,115,116, 97,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, - 95,115,116, 97,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,114,115, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,253,207, 0, 0, 0, - 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120,243,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 24,245,123, 26, 1, 0, 0, 0,216,241,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114,111,112,115, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114,111,112,115, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 67,117,115,116,111,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,253,207, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 24,245,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,246,123, 26, 1, 0, 0, 0, -120,243,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, - 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, - 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,207, 0, 61, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184,246,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 88,248,123, 26, 1, 0, 0, 0, 24,245,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 85,110,105,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,255,207, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 88,248,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248,249,123, 26, 1, 0, 0, 0, -184,246,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, - 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, - 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75,101,121,105,110,103, 32, 83, -101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,254,207, 0, 69, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248,249,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,152,251,123, 26, 1, 0, 0, 0, 88,248,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 71,114, 97,118,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,254,207, 0, 36, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,152,251,123, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56,253,123, 26, 1, 0, 0, 0, -248,249,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, - 95,115,105,109,112,108,105,102,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, - 95,115,105,109,112,108,105,102,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,105,109,112,108,105,102,121, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,254,207, 0, 80, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56,253,123, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,251,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114,111,112,115, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114,111,112,115, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 67,117,115,116,111,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,207, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,216,254,123, 26, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0,136, 6,124, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,136,144, 81, 26, 1, 0, 0, 0, -255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 24, 0,124, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,120, 1,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,120, 1,124, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 0,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 2,124, 26, 1, 0, 0, 0, - 68, 65, 84, 65,104, 3, 0, 0,216, 2,124, 26, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 1, 0, 0,136, 6,124, 26, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216,254,123, 26, 1, 0, 0, 0, 24, 0,124, 26, 1, 0, 0, 0,120, 1,124, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,248, 7,124, 26, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, -120, 20,124, 26, 1, 0, 0, 0,184,192,123, 26, 1, 0, 0, 0,184,176,123, 26, 1, 0, 0, 0,120,180,123, 26, 1, 0, 0, 0, -216,180,123, 26, 1, 0, 0, 0,248,178,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 4, 0, 0, - 0, 0, 0, 0, 71, 0, 0, 0, 15, 15,168, 4, 72, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,208,121, 3, 1, 0, 0, 0, -152, 11,124, 26, 1, 0, 0, 0, 8, 19,124, 26, 1, 0, 0, 0,216, 8,124, 26, 1, 0, 0, 0, 56, 10,124, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,135,113, 26, 1, 0, 0, 0,104, 44,133, 4, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,216, 8,124, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 56, 10,124, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,137, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,149, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, - 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 4, - 26, 0,168, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 4, 26, 0, 6, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,210,121, 3, 1, 0, 0, 0, 72,183, 81, 26, 1, 0, 0, 0, - 72,183, 81, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 47,115, 26, 1, 0, 0, 0, -152, 44, 15, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 56, 10,124, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 8,124, 26, 1, 0, 0, 0, - 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,167, 4, 0, 0, 18, 0, 0, 0, 45, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, -205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,168, 4, 46, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 4, 0, 0, 26, 0, 0, 0, 71, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 4, 46, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,209,121, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 45, 15, 26, 1, 0, 0, 0, 24, 49, 15, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0,152, 11,124, 26, 1, 0, 0, 0, -175, 0, 0, 0, 1, 0, 0, 0, 8, 19,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,152, 12,124, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -248, 13,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,248, 13,124, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 12,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, - 26, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 30, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 15,124, 26, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, - 88, 15,124, 26, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,224, 91,138, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, - 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, - 8, 19,124, 26, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 11,124, 26, 1, 0, 0, 0, -152, 12,124, 26, 1, 0, 0, 0,248, 13,124, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,120, 20,124, 26, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,120, 38,124, 26, 1, 0, 0, 0, -248, 7,124, 26, 1, 0, 0, 0,184,179,123, 26, 1, 0, 0, 0, 88,179,123, 26, 1, 0, 0, 0,152,178,123, 26, 1, 0, 0, 0, - 24,180,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,169, 4, 0, 0,160, 5, 0, 0,197, 2, 0, 0,103, 3, 0, 0, - 3, 3,248, 0,163, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,206,121, 3, 1, 0, 0, 0, 24, 24,124, 26, 1, 0, 0, 0, - 8, 37,124, 26, 1, 0, 0, 0, 88, 21,124, 26, 1, 0, 0, 0,184, 22,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216, 28,114, 26, 1, 0, 0, 0, 8,157,113, 26, 1, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 88, 21,124, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,184, 22,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,120, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,247, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 0, 26, 0,248, 0, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,169, 4, 0, 0,160, 5, 0, 0, 78, 3, 0, 0,103, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 0, 26, 0, 8, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,207,121, 3, 1, 0, 0, 0, 24,187, 81, 26, 1, 0, 0, 0, 24,187, 81, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 49,115, 26, 1, 0, 0, 0, 72, 54, 15, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184, 22,124, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 21,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, - 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,103, 67, 0, 0,238,194, 0, 0, 0, 0,231, 0, 0, 0,248, 0, 0, 0, - 18, 0, 0, 0,136, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, - 18, 0, 0, 0,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,248, 0,137, 0,231, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,169, 4, 0, 0,160, 5, 0, 0,197, 2, 0, 0, 77, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248, 0,137, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, 34,121, 3, 1, 0, 0, 0, 88,213, 81, 26, 1, 0, 0, 0, 88,213, 81, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 50,115, 26, 1, 0, 0, 0, 40, 57, 15, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 24, 24,124, 26, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, - 88, 29,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136,142, 81, 26, 1, 0, 0, 0,136,142, 81, 26, 1, 0, 0, 0, 8,125,239, 25, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 68, 65, 84, 65, 16, 0, 0, 0, 8,125,239, 25, 1, 0, 0, 0,222, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, -120, 25,124, 26, 1, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,120, 25,124, 26, 1, 0, 0, 0,221, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 56,186,171, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 56,186,171, 3, 1, 0, 0, 0, - 20, 0, 0, 0, 1, 0, 1, 0, 56,186,171, 3, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 0, 0, 56,186,171, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 56,216, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 56,212,171, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,104,228, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 40,221, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 72,226, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 56, 70,170, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,168,211, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 56,160,214, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,200,210, 96, 23, 1, 0, 0, 0, 21, 0, 0, 0, 1, 0, 1, 0, 56,186,171, 3, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,152, 26,124, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,248, 27,124, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 67, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, - 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,195, 0, - 26, 0,195, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, - 69, 2, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -248, 27,124, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 26,124, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0,150, 67, 0,192,116,196, 0, 0, 0, 0, 0, 0, 0, 0,205, 85,150, 67,223,204, 35,196, 26, 85,207,195, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0,155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 3, 0, 2, 0, 0, 4, 6, 0,195, 0,156, 0,195, 0,156, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88, 29,124, 26, 1, 0, 0, 0, -165, 0, 0, 0, 1, 0, 0, 0, 8, 37,124, 26, 1, 0, 0, 0, 24, 24,124, 26, 1, 0, 0, 0,152, 26,124, 26, 1, 0, 0, 0, -248, 27,124, 26, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,152, 30,124, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,248, 31,124, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, - 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, - 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -248, 31,124, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 30,124, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 33,124, 26, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 88, 33,124, 26, 1, 0, 0, 0, -159, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, -226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, - 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, 8, 37,124, 26, 1, 0, 0, 0, -160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 29,124, 26, 1, 0, 0, 0,152, 30,124, 26, 1, 0, 0, 0, -248, 31,124, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, - 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, -159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -120, 38,124, 26, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 20,124, 26, 1, 0, 0, 0, -120,180,123, 26, 1, 0, 0, 0, 56,178,123, 26, 1, 0, 0, 0, 88,179,123, 26, 1, 0, 0, 0,216,180,123, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 4, 0, 0, 73, 0, 0, 0,103, 3, 0, 0, 1, 1,168, 4, 31, 3, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24,211,121, 3, 1, 0, 0, 0,136, 90,124, 26, 1, 0, 0, 0,184, 94,124, 26, 1, 0, 0, 0, - 88, 39,124, 26, 1, 0, 0, 0,120, 85,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168,125,113, 26, 1, 0, 0, 0,184, 45,115, 26, 1, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 88, 39,124, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,184, 40,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,149, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 4, 26, 0,168, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 4, 0, 0, 73, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168, 4, 26, 0, 10, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200,222,121, 3, 1, 0, 0, 0,248, 57, 15, 26, 1, 0, 0, 0,248, 57, 15, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,126,115, 26, 1, 0, 0, 0,168, 64, 15, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184, 40,124, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -120, 66,124, 26, 1, 0, 0, 0, 88, 39,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 67, 0,128,254,195, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67, 1,128,230,195, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,204, 1, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,204, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,160, 0,205, 1,143, 0,205, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,159, 0, 0, 0,155, 1, 0, 0,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 0,205, 1, 11, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,218,121, 3, 1, 0, 0, 0, -216,159,115, 26, 1, 0, 0, 0,168,187,115, 26, 1, 0, 0, 0, 24, 42,124, 26, 1, 0, 0, 0,216, 64,124, 26, 1, 0, 0, 0, - 8,127,115, 26, 1, 0, 0, 0, 88, 68, 15, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 24, 42,124, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184, 43,124, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24,219,121, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108, 95,115,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108, 95,115,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 32, 83,104,101, -108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,143, 0, 36, 0, - 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184, 43,124, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 88, 45,124, 26, 1, 0, 0, 0, 24, 42,124, 26, 1, 0, 0, 0,184, 36,120, 25, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111, -100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111, -100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,254,143, 0,165, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 88, 45,124, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248, 46,124, 26, 1, 0, 0, 0, -184, 43,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,109,101,115,104,101,100,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,109,101,115,104,101,100,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77,101,115,104, 32, 84,111,111, -108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,252,143, 0, 8, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248, 46,124, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,152, 48,124, 26, 1, 0, 0, 0, 88, 45,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,109,101,115,104,101,100,105,116, - 95,111,112,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,109,101,115,104,101,100,105,116, - 95,111,112,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 77,101,115,104, 32, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,252,143, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,152, 48,124, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56, 50,124, 26, 1, 0, 0, 0, -248, 46,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,114,117,115,104, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,254,143, 0, 57, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56, 50,124, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,216, 51,124, 26, 1, 0, 0, 0,152, 48,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111, -111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111, -111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,147,253,143, 0,176, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,216, 51,124, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120, 53,124, 26, 1, 0, 0, 0, - 56, 50,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,114,111,107,101, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116,253,143, 0,183, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120, 53,124, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 24, 55,124, 26, 1, 0, 0, 0,216, 51,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 99,117, -114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 99,117, -114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 67,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,253,143, 0,191, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 24, 55,124, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184, 56,124, 26, 1, 0, 0, 0, -120, 53,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,111,106,101, 99,116, 32, - 80, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,252,143, 0, 9, 1, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184, 56,124, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 88, 58,124, 26, 1, 0, 0, 0, 24, 55,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102,253,143, 0,149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 88, 58,124, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248, 59,124, 26, 1, 0, 0, 0, -184, 56,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,118,101,114,116,101,120,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,118,101,114,116,101,120,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,146,253,143, 0, 80, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248, 59,124, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,152, 61,124, 26, 1, 0, 0, 0, 88, 58,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101, -120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101, -120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,253,143, 0,180, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,152, 61,124, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56, 63,124, 26, 1, 0, 0, 0, -248, 59,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,101,105,103,104,116, 32, 84, -111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,255,143, 0,124, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56, 63,124, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,216, 64,124, 26, 1, 0, 0, 0,152, 61,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97, -105,110,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97, -105,110,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,253,143, 0,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,216, 64,124, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56, 63,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,109,101,115,104,101,100,105,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,109,101,115,104,101,100,105,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77,101,115,104, 32, 79,112,116, -105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,252,143, 0, 76, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,120, 66,124, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,120, 69,124, 26, 1, 0, 0, 0,184, 40,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 67, - 0,128,157,195, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67,136,135,157,195, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 56, 1,143, 0, 56, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0, 99, 0, 0, 0,154, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 56, 1, 12, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 1, 0, 0, 0, 0, -120,220,121, 3, 1, 0, 0, 0,136,131,115, 26, 1, 0, 0, 0,136,131,115, 26, 1, 0, 0, 0,216, 67,124, 26, 1, 0, 0, 0, -216, 67,124, 26, 1, 0, 0, 0,216,127,115, 26, 1, 0, 0, 0, 8, 72, 15, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,216, 67,124, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,221,121, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 79,112,101,114, 97,116,111,114, 0,105,116,109,111,100,101, 0, 65,108,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,216,255,144, 0, 16, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -120, 69,124, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,120, 85,124, 26, 1, 0, 0, 0,120, 66,124, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 52, 67, 0,160,145,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 64, 83,196, 0, 0, 0, 0, -163, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0, 76, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 76, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, 77, 3,163, 0, 77, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 4, 0, 0,167, 4, 0, 0, 99, 0, 0, 0,103, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 24,213,121, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 70,124, 26, 1, 0, 0, 0,216, 83,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,216, 70,124, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,120, 72,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,254,163, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,120, 72,124, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24, 74,124, 26, 1, 0, 0, 0, -216, 70,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80, -101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,251,163, 0, 58, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 24, 74,124, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,184, 75,124, 26, 1, 0, 0, 0,120, 72,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116, -105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116, -105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22,253,163, 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,184, 75,124, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88, 77,124, 26, 1, 0, 0, 0, - 24, 74,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,251,163, 0, 63, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 88, 77,124, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,248, 78,124, 26, 1, 0, 0, 0,184, 75,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97, -103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97, -103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107,103,114,111,117,110,100, 32, 73,109, 97,103,101,115, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,251,163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,248, 78,124, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152, 80,124, 26, 1, 0, 0, 0, - 88, 77,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114, -109, 32, 79,114,105,101,110,116, 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,251,163, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,152, 80,124, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 56, 82,124, 26, 1, 0, 0, 0,248, 78,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,109,101,115,104,100,105,115, -112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,109,101,115,104,100,105,115, -112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 77,101,115,104, 32, 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23,252,163, 0,104, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 56, 82,124, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216, 83,124, 26, 1, 0, 0, 0, -152, 80,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95, 51,100,118,105,101,119, 95,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95, 51,100,118,105,101,119, 95,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,116,101,109, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,163, 0, 36, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,216, 83,124, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 82,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101, -110,116, 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101, -110,116, 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 79,114,105,101,110,116, 97,116,105,111,110,115, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143,251,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,120, 85,124, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 69,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 0, 0,167, 4, 0, 0, - 99, 0, 0, 0,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 5, 3, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,212,121, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 90, 15, 26, 1, 0, 0, 0, -120, 89, 15, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 86,124, 26, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, -216, 86,124, 26, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,124,232,186, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 1,128,191, 0, 0,128,191, - 0, 0, 0,128, 0, 0, 0,128,217,205, 76,190, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, - 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, -164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,177,157,229, 62,139, 45, 22,191,221,160, 81,191,184,158, 81,191, -115, 90,127, 63, 64,198,144, 62, 8, 46,185, 62, 35, 44,185, 62,143,180,109,188,136, 74,167, 63,127, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 19,163,108, 65,214,211,111, 65,100,240,191, 62,112,116, 85, 63, 80,185, 70,188, 0, 0, 84,180, -226,220,140,190,104,203, 7, 62,127,234, 28, 63, 0, 0, 48, 52, 63,119,117,194,107,214,216, 65, 99,162, 5,194,253,254,159,192, - 72, 51,114, 66,244,243,213,193, 71,219, 3, 66,161, 0,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,177,157,229, 62,139, 45, 22,191,221,160, 81,191,184,158, 81,191, -115, 90,127, 63, 64,198,144, 62, 8, 46,185, 62, 35, 44,185, 62,143,180,109,188,136, 74,167, 63,127, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 19,163,108, 65,214,211,111, 65, 84,247,254, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84,247,254, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,247,254, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, -214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 38, 62,232, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 30, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, -136, 90,124, 26, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0,184, 94,124, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 24, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -205,204,204, 61, 0, 64,156, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,248, 91,124, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 88, 93,124, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, - 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, - 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, -101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 88, 93,124, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 91,124, 26, 1, 0, 0, 0, - 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, -205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0,184, 94,124, 26, 1, 0, 0, 0, -175, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 90,124, 26, 1, 0, 0, 0,248, 91,124, 26, 1, 0, 0, 0, - 88, 93,124, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,200,166, 91, 23, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -168, 36, 86, 26, 1, 0, 0, 0,168,175,123, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 82, 71, 97,109,101, 32, 76,111,103,105, 99, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 63, 91, 23, 1, 0, 0, 0, 40,162, 91, 23, 1, 0, 0, 0,136,162, 91, 23, 1, 0, 0, 0, -168,123, 92, 23, 1, 0, 0, 0, 8, 96, 92, 23, 1, 0, 0, 0,120, 34, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24, 63, 91, 23, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,232,172, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232,172, 91, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -152, 42, 90, 23, 1, 0, 0, 0, 24, 63, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,152, 42, 90, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,136,171, 91, 23, 1, 0, 0, 0, -232,172, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -136,171, 91, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,184,157, 91, 23, 1, 0, 0, 0,152, 42, 90, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,157, 91, 23, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,216,159, 91, 23, 1, 0, 0, 0,136,171, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,216,159, 91, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, - 56,160, 91, 23, 1, 0, 0, 0,184,157, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 56,160, 91, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 88, 77, 92, 23, 1, 0, 0, 0, -216,159, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 88, 77, 92, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,184, 77, 92, 23, 1, 0, 0, 0, 56,160, 91, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184, 77, 92, 23, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 24,169, 91, 23, 1, 0, 0, 0, 88, 77, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24,169, 91, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -120,169, 91, 23, 1, 0, 0, 0,184, 77, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 20, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,120,169, 91, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,216,169, 91, 23, 1, 0, 0, 0, - 24,169, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 3, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -216,169, 91, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 56,170, 91, 23, 1, 0, 0, 0,120,169, 91, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,124, 3,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,170, 91, 23, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 40,162, 91, 23, 1, 0, 0, 0,216,169, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 40,162, 91, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,170, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,136,162, 91, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,248,162, 91, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 42, 90, 23, 1, 0, 0, 0,232,172, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,248,162, 91, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,248,175, 91, 23, 1, 0, 0, 0, -136,162, 91, 23, 1, 0, 0, 0,184,157, 91, 23, 1, 0, 0, 0,232,172, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,248,175, 91, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,104,176, 91, 23, 1, 0, 0, 0, -248,162, 91, 23, 1, 0, 0, 0,152, 42, 90, 23, 1, 0, 0, 0,216,159, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,104,176, 91, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,216,176, 91, 23, 1, 0, 0, 0, -248,175, 91, 23, 1, 0, 0, 0,184,157, 91, 23, 1, 0, 0, 0,216,159, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,216,176, 91, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72,177, 91, 23, 1, 0, 0, 0, -104,176, 91, 23, 1, 0, 0, 0,184,157, 91, 23, 1, 0, 0, 0, 56,160, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 72,177, 91, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,168, 69, 92, 23, 1, 0, 0, 0, -216,176, 91, 23, 1, 0, 0, 0, 56,160, 91, 23, 1, 0, 0, 0, 88, 77, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,168, 69, 92, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24, 70, 92, 23, 1, 0, 0, 0, - 72,177, 91, 23, 1, 0, 0, 0,136,171, 91, 23, 1, 0, 0, 0,184, 77, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 24, 70, 92, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136, 70, 92, 23, 1, 0, 0, 0, -168, 69, 92, 23, 1, 0, 0, 0, 88, 77, 92, 23, 1, 0, 0, 0,184, 77, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,136, 70, 92, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,248, 70, 92, 23, 1, 0, 0, 0, - 24, 70, 92, 23, 1, 0, 0, 0, 24, 63, 91, 23, 1, 0, 0, 0, 56,160, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,248, 70, 92, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,168,214, 80, 26, 1, 0, 0, 0, -136, 70, 92, 23, 1, 0, 0, 0, 24, 63, 91, 23, 1, 0, 0, 0,184, 77, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,168,214, 80, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24,215, 80, 26, 1, 0, 0, 0, -248, 70, 92, 23, 1, 0, 0, 0,216,159, 91, 23, 1, 0, 0, 0, 24,169, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 24,215, 80, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136,215, 80, 26, 1, 0, 0, 0, -168,214, 80, 26, 1, 0, 0, 0, 24,169, 91, 23, 1, 0, 0, 0,136,171, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,136,215, 80, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,248,215, 80, 26, 1, 0, 0, 0, - 24,215, 80, 26, 1, 0, 0, 0, 24,169, 91, 23, 1, 0, 0, 0, 88, 77, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,248,215, 80, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,104,216, 80, 26, 1, 0, 0, 0, -136,215, 80, 26, 1, 0, 0, 0,120,169, 91, 23, 1, 0, 0, 0,216,169, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,104,216, 80, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,216,216, 80, 26, 1, 0, 0, 0, -248,215, 80, 26, 1, 0, 0, 0,216,159, 91, 23, 1, 0, 0, 0,216,169, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,216,216, 80, 26, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,232,121, 92, 23, 1, 0, 0, 0, -104,216, 80, 26, 1, 0, 0, 0, 24,169, 91, 23, 1, 0, 0, 0,120,169, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,232,121, 92, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 88,122, 92, 23, 1, 0, 0, 0, -216,216, 80, 26, 1, 0, 0, 0, 56,160, 91, 23, 1, 0, 0, 0, 56,170, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 88,122, 92, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,200,122, 92, 23, 1, 0, 0, 0, -232,121, 92, 23, 1, 0, 0, 0,120,169, 91, 23, 1, 0, 0, 0, 56,170, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,200,122, 92, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 56,123, 92, 23, 1, 0, 0, 0, - 88,122, 92, 23, 1, 0, 0, 0,184,157, 91, 23, 1, 0, 0, 0, 40,162, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 56,123, 92, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,168,123, 92, 23, 1, 0, 0, 0, -200,122, 92, 23, 1, 0, 0, 0, 40,162, 91, 23, 1, 0, 0, 0,216,169, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,168,123, 92, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56,123, 92, 23, 1, 0, 0, 0, 40,162, 91, 23, 1, 0, 0, 0, 56,170, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0, 8, 96, 92, 23, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 72, 98, 92, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184,157, 91, 23, 1, 0, 0, 0,232,172, 91, 23, 1, 0, 0, 0,152, 42, 90, 23, 1, 0, 0, 0, -216,159, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, - 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,112, 92, 23, 1, 0, 0, 0, - 56,112, 92, 23, 1, 0, 0, 0,232, 96, 92, 23, 1, 0, 0, 0,184, 79, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -232, 96, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,184, 79, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184, 79, 92, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 96, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, - 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, - 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, - 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 72, 98, 92, 23, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, -152, 93, 92, 23, 1, 0, 0, 0, 8, 96, 92, 23, 1, 0, 0, 0,184, 77, 92, 23, 1, 0, 0, 0, 88, 77, 92, 23, 1, 0, 0, 0, - 24,169, 91, 23, 1, 0, 0, 0,136,171, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 19, 1, 0, 0, 4, 4,234, 0, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 65, 92, 23, 1, 0, 0, 0,152,183, 91, 23, 1, 0, 0, 0, 24, 81, 92, 23, 1, 0, 0, 0,120, 82, 92, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 24, 81, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,120, 82, 92, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, - 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, - 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, - 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, -245, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -120, 82, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 81, 92, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 88, 67,254,255,116,195, 0, 0, 0, 0, -217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0,245, 0,217, 0,245, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 83, 92, 23, 1, 0, 0, 0,248,101, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,216, 83, 92, 23, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,120, 85, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255,216, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,120, 85, 92, 23, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24, 87, 92, 23, 1, 0, 0, 0, -216, 83, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,216, 0, 61, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 24, 87, 92, 23, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,184, 88, 92, 23, 1, 0, 0, 0,120, 85, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255,216, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,184, 88, 92, 23, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88, 90, 92, 23, 1, 0, 0, 0, - 24, 87, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111, -110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254,216, 0,203, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 88, 90, 92, 23, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,248, 91, 92, 23, 1, 0, 0, 0,184, 88, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254,216, 0, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,248, 91, 92, 23, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200, 58, 92, 23, 1, 0, 0, 0, - 88, 90, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,253,216, 0,102, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,200, 58, 92, 23, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,104, 60, 92, 23, 1, 0, 0, 0,248, 91, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35,253,216, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,104, 60, 92, 23, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 8, 62, 92, 23, 1, 0, 0, 0, -200, 58, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97, -110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,253,216, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 8, 62, 92, 23, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,168, 63, 92, 23, 1, 0, 0, 0,104, 60, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243,252,216, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,168, 63, 92, 23, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88,100, 92, 23, 1, 0, 0, 0, - 8, 62, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219,252,216, 0, 0, 0, - 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 88,100, 92, 23, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,248,101, 92, 23, 1, 0, 0, 0,168, 63, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 70,117,108,108, 32, 83, 97,109,112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254,216, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,248,101, 92, 23, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88,100, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,252,216, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72, 65, 92, 23, 1, 0, 0, 0, -165, 0, 0, 0, 1, 0, 0, 0, 24,109, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,152,103, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,248,104, 92, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, - 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, - 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, - 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, - 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -248,104, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 88,106, 92, 23, 1, 0, 0, 0,152,103, 92, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 88,106, 92, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,184,107, 92, 23, 1, 0, 0, 0,248,104, 92, 23, 1, 0, 0, 0, 0, 0,112,196, 0, 0,112, 68, - 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184,107, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88,106, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, - 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, - 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 8, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,240, 0, 0, 0, 24,109, 92, 23, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0,152,183, 91, 23, 1, 0, 0, 0, - 72, 65, 92, 23, 1, 0, 0, 0,152,103, 92, 23, 1, 0, 0, 0,184,107, 92, 23, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 72,110, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -136,178, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,136,178, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72,110, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, - 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,179, 91, 23, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, -232,179, 91, 23, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, - 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, -152,183, 91, 23, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,109, 92, 23, 1, 0, 0, 0, - 72,110, 92, 23, 1, 0, 0, 0,136,178, 91, 23, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,152, 93, 92, 23, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,120,221, 91, 23, 1, 0, 0, 0, - 72, 98, 92, 23, 1, 0, 0, 0, 24, 63, 91, 23, 1, 0, 0, 0, 56,160, 91, 23, 1, 0, 0, 0, 88, 77, 92, 23, 1, 0, 0, 0, -184, 77, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, - 17, 17, 20, 4, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,111, 92, 23, 1, 0, 0, 0, -120,220, 91, 23, 1, 0, 0, 0, 8,185, 91, 23, 1, 0, 0, 0,104,189, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 8,185, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104,186, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,150, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,104,186, 91, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,104,189, 91, 23, 1, 0, 0, 0, 8,185, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 67, - 0, 0,122,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,122,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, - 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, - 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,250, 0,203, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,220, 0,250, 0, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,187, 91, 23, 1, 0, 0, 0, -200,187, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,200,187, 91, 23, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 76, 79, 71, 73, 67, 95, 80, 84, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 76, 79, 71, 73, 67, 95, 80, 84, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,196,255,203, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -104,189, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,186, 91, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67, 4, 0, 39,195, 0,224,180, 68, 1, 0,224,194, 0, 0,176, 67, - 39, 3, 0, 0, 56, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 38, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, - 0, 0, 0, 63, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 56, 3,250, 0, 39, 3,232, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 3,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 0, 0, 0,168,111, 92, 23, 1, 0, 0, 0, -177, 0, 0, 0, 1, 0, 0, 0, 56,126,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,200,190, 91, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 40,192, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 3, 26, 0, 0, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 40,192, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -136,193, 91, 23, 1, 0, 0, 0,200,190, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,136,193, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40,192, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0,128,191, 0, 0, 0, 64, - 0, 0,116,190, 0,128,158, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, - 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,122, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 33, 0, 0, - 56,126,214, 3, 1, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0,168,197, 91, 23, 1, 0, 0, 0,168,111, 92, 23, 1, 0, 0, 0, -200,190, 91, 23, 1, 0, 0, 0,136,193, 91, 23, 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0, -154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -232,194, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 72,196, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 3, 26, 0, 0, 3, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 72,196, 91, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,194, 91, 23, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, - 0, 0, 32,193, 0, 0, 0, 68,144, 82, 89,194, 41,149, 13, 68,176,122,214, 66, 82, 97,202, 67,239, 2, 0, 0, 0, 3, 0, 0, - 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, - 18, 0, 0, 0,121, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, - 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 0, 3,122, 1,239, 2,104, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,168,197, 91, 23, 1, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, -136,204, 91, 23, 1, 0, 0, 0, 56,126,214, 3, 1, 0, 0, 0,232,194, 91, 23, 1, 0, 0, 0, 72,196, 91, 23, 1, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 19, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,227, 78, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 8,199, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104,200, 91, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, - 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, - 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, - 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, - 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -104,200, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,200,201, 91, 23, 1, 0, 0, 0, 8,199, 91, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,200,201, 91, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 40,203, 91, 23, 1, 0, 0, 0,104,200, 91, 23, 1, 0, 0, 0, 0, 0,112,196, 0, 0,112, 68, - 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 40,203, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200,201, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, - 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, - 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,240, 0, 0, 0,136,204, 91, 23, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 72,216, 91, 23, 1, 0, 0, 0, -168,197, 91, 23, 1, 0, 0, 0, 8,199, 91, 23, 1, 0, 0, 0, 40,203, 91, 23, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184,205, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 24,207, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 24,207, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,120,208, 91, 23, 1, 0, 0, 0, -184,205, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, -255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, - 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0, -251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, - 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -120,208, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,216,209, 91, 23, 1, 0, 0, 0, 24,207, 91, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,216,209, 91, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 56,211, 91, 23, 1, 0, 0, 0,120,208, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, - 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, - 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 56,211, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216,209, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,212, 91, 23, 1, 0, 0, 0, - 68, 65, 84, 65,104, 3, 0, 0,152,212, 91, 23, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63, -176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, - 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191, -222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, -224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, - 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191, -222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190, -237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 1, 0, 0, 72,216, 91, 23, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0,120,220, 91, 23, 1, 0, 0, 0, -136,204, 91, 23, 1, 0, 0, 0,184,205, 91, 23, 1, 0, 0, 0, 56,211, 91, 23, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184,217, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 24,219, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 24,219, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184,217, 91, 23, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, - 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, - 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4, -122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, -127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, -120,220, 91, 23, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,216, 91, 23, 1, 0, 0, 0, -184,217, 91, 23, 1, 0, 0, 0, 24,219, 91, 23, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,120,221, 91, 23, 1, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0,168,251, 91, 23, 1, 0, 0, 0,152, 93, 92, 23, 1, 0, 0, 0,120,169, 91, 23, 1, 0, 0, 0, -216,169, 91, 23, 1, 0, 0, 0,216,159, 91, 23, 1, 0, 0, 0, 24,169, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 9, 9,130, 1,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24,225, 91, 23, 1, 0, 0, 0, 56,250, 91, 23, 1, 0, 0, 0, 88,222, 91, 23, 1, 0, 0, 0, -184,223, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 88,222, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -184,223, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,193, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,181, 67, 0, 0,200, 65, 0,128,181, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,130, 1, 26, 0,130, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -130, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,184,223, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88,222, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, 0, 0, 0, 0,131,248, 1, 68, - 0, 0, 0, 0,126, 86, 5, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,130, 1, -140, 1,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, - 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1,140, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0, - 24,225, 91, 23, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0,168,230, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,232,227, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 72,229, 91, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,182, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,161, 67, 0, 0,200, 65, - 0,128,161, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,108, 1, - 26, 0,108, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,160, 5, 0, 0, - 41, 1, 0, 0, 66, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 1, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 72,229, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,227, 91, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,173, 67, 0, 0,210,195, 0, 0, 0, 0, - 91, 1, 0, 0,108, 1, 0, 0, 18, 0, 0, 0,181, 1, 0, 0, 0, 0, 0, 0, 90, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 90, 1, 0, 0, 18, 0, 0, 0,181, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,108, 1,182, 1, 91, 1,164, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,160, 5, 0, 0, 67, 1, 0, 0,248, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 1,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,168,230, 91, 23, 1, 0, 0, 0, -169, 0, 0, 0, 1, 0, 0, 0,216,235, 91, 23, 1, 0, 0, 0, 24,225, 91, 23, 1, 0, 0, 0,232,227, 91, 23, 1, 0, 0, 0, - 72,229, 91, 23, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 71, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,104, 71, 92, 23, 1, 0, 0, 0,222, 0, 0, 0, 1, 0, 0, 0, - 13, 0, 0, 0, 13, 0, 0, 0, 8,232, 91, 23, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 8,232, 91, 23, 1, 0, 0, 0, -221, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 56,186,171, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, - 56,186,171, 3, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 56,186,171, 3, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, - 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 56,216, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 56,212,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,104,228, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 40,221, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 72,226, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 56, 70,170, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,168,211, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,210, 96, 23, 1, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 24,233, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,120,234, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,162, 67, 0, 0, 0, 0, 0, 0,240, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 68, 1, 30, 0, 68, 1, 30, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 6, 0, 0,128, 7, 0, 0,252, 3, 0, 0, 25, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 1, 30, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,120,234, 91, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,233, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 67, - 0, 0,137,196, 0, 0, 0, 0, 0, 0, 0, 0,254,127,153, 67,253,127,198,195, 0, 0, 0, 0, 51, 1, 0, 0, 68, 1, 0, 0, - 18, 0, 0, 0,158, 1, 0, 0, 0, 0, 0, 0, 50, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 50, 1, 0, 0, - 18, 0, 0, 0,158, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 68, 1,159, 1, 51, 1,141, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 61, 6, 0, 0,128, 7, 0, 0, 93, 2, 0, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 1,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,235, 91, 23, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, -152,242, 91, 23, 1, 0, 0, 0,168,230, 91, 23, 1, 0, 0, 0, 24,233, 91, 23, 1, 0, 0, 0,120,234, 91, 23, 1, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 24,237, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,120,238, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,120,238, 91, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,216,239, 91, 23, 1, 0, 0, 0, 24,237, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,216,239, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 56,241, 91, 23, 1, 0, 0, 0,120,238, 91, 23, 1, 0, 0, 0, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, - 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 56,241, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216,239, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, - 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, - 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,228, 1, -124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, -112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, -152,242, 91, 23, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 56,250, 91, 23, 1, 0, 0, 0,216,235, 91, 23, 1, 0, 0, 0, - 24,237, 91, 23, 1, 0, 0, 0, 56,241, 91, 23, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,200,243, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 40,245, 91, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, - 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, - 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 40,245, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,243, 91, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136,246, 91, 23, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0,136,246, 91, 23, 1, 0, 0, 0, -159, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, -226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, - 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, 56,250, 91, 23, 1, 0, 0, 0, -160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,242, 91, 23, 1, 0, 0, 0,200,243, 91, 23, 1, 0, 0, 0, - 40,245, 91, 23, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, - 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, -159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -168,251, 91, 23, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,120, 34, 92, 23, 1, 0, 0, 0,120,221, 91, 23, 1, 0, 0, 0, - 56,170, 91, 23, 1, 0, 0, 0, 40,162, 91, 23, 1, 0, 0, 0,216,169, 91, 23, 1, 0, 0, 0,120,169, 91, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 1, 1,167, 2,166, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 18, 92, 23, 1, 0, 0, 0,120, 33, 92, 23, 1, 0, 0, 0, -136,252, 91, 23, 1, 0, 0, 0,104, 13, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,136,252, 91, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,232,253, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 56, 0,192, 41, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 2, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,167, 2, 26, 0,167, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,232,253, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 72,255, 91, 23, 1, 0, 0, 0,136,252, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0,213, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0,140, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 72,255, 91, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,168, 0, 92, 23, 1, 0, 0, 0, -232,253, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, - 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, -120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, - 47, 1, 0, 0, 47, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, - 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -168, 0, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104, 13, 92, 23, 1, 0, 0, 0, 72,255, 91, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 23,196, 0, 0, 0, 0, -163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,112, 2,163, 0, 94, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123, 3, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 2, 92, 23, 1, 0, 0, 0,200, 11, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 8, 2, 92, 23, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,168, 3, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,254,163, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,168, 3, 92, 23, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72, 5, 92, 23, 1, 0, 0, 0, - 8, 2, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80, -101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,236,253,163, 0, 58, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 72, 5, 92, 23, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,232, 6, 92, 23, 1, 0, 0, 0,168, 3, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116, -105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116, -105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,252,163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,232, 6, 92, 23, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136, 8, 92, 23, 1, 0, 0, 0, - 72, 5, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129,252,163, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,136, 8, 92, 23, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 40, 10, 92, 23, 1, 0, 0, 0,232, 6, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97, -103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97, -103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107,103,114,111,117,110,100, 32, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105,252,163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 40, 10, 92, 23, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200, 11, 92, 23, 1, 0, 0, 0, -136, 8, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114, -109, 32, 79,114,105,101,110,116, 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,252,163, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,200, 11, 92, 23, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 10, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 73,116,101,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,163, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,104, 13, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, 0, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, - 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2,140, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 14, 92, 23, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, -200, 14, 92, 23, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,126,177,113, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 6, 63,156, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, - 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, -120, 18, 92, 23, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0,168, 22, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,232, 19, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 72, 21, 92, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, - 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, - 26, 0, 24, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0, -149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 72, 21, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 19, 92, 23, 1, 0, 0, 0, - 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 56,205,190,195,156,102, 95, 68,160,228,244, 64,110, 44,252, 67, - 7, 6, 0, 0, 24, 6, 0, 0, 18, 0, 0, 0,106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 6, 6, 0, 0, 18, 0, 0, 0,106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, -205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6,107, 2, 7, 6, 89, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6,107, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,168, 22, 92, 23, 1, 0, 0, 0, -176, 0, 0, 0, 1, 0, 0, 0,136, 29, 92, 23, 1, 0, 0, 0,120, 18, 92, 23, 1, 0, 0, 0,232, 19, 92, 23, 1, 0, 0, 0, - 72, 21, 92, 23, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,193, 67, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 8, 24, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -104, 25, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, - 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, - 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,104, 25, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,200, 26, 92, 23, 1, 0, 0, 0, - 8, 24, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0, -112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -200, 26, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 40, 28, 92, 23, 1, 0, 0, 0,104, 25, 92, 23, 1, 0, 0, 0, - 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70, -172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 40, 28, 92, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 26, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, - 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, - 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,136, 29, 92, 23, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, -120, 33, 92, 23, 1, 0, 0, 0,168, 22, 92, 23, 1, 0, 0, 0, 8, 24, 92, 23, 1, 0, 0, 0, 40, 28, 92, 23, 1, 0, 0, 0, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184, 30, 92, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 24, 32, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 24, 32, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184, 30, 92, 23, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, -112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, - 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,192, 0, 0, 0,120, 33, 92, 23, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136, 29, 92, 23, 1, 0, 0, 0,184, 30, 92, 23, 1, 0, 0, 0, 24, 32, 92, 23, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -120, 34, 92, 23, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,251, 91, 23, 1, 0, 0, 0, - 56,160, 91, 23, 1, 0, 0, 0,184,157, 91, 23, 1, 0, 0, 0, 40,162, 91, 23, 1, 0, 0, 0, 56,170, 91, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 3, 3,212, 0,166, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 38, 92, 23, 1, 0, 0, 0,168, 35, 86, 26, 1, 0, 0, 0, - 88, 35, 92, 23, 1, 0, 0, 0,184, 36, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 88, 35, 92, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,184, 36, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 83, 67, 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,212, 0, 26, 0,212, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,212, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184, 36, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 35, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, - 0, 0, 80, 66, 0, 0,119, 67, 0, 0,189,195, 0, 0, 0, 0,195, 0, 0, 0,212, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, - 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, - 0, 0, 0, 4, 6, 0,212, 0,140, 1,195, 0,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,211, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 24, 38, 92, 23, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 24, 51, 92, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 52, 88, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, -136, 52, 88, 23, 1, 0, 0, 0,222, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,120, 39, 92, 23, 1, 0, 0, 0, - 68, 65, 84, 65,208, 0, 0, 0,120, 39, 92, 23, 1, 0, 0, 0,221, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 56,186,171, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 56,186,171, 3, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, - 56,186,171, 3, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 56,216, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 56,212,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -104,228, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 40,221, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 72,226, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 56, 70,170, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -168,211, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -200,210, 96, 23, 1, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,136, 40, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -232, 41, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 68, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,212, 0, 26, 0,212, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,211, 0, 0, 0, 41, 1, 0, 0, 66, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,232, 41, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 72, 43, 92, 23, 1, 0, 0, 0, -136, 40, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, -255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, - 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 67, 1, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,182, 1, 0, 0, 5, 0, - 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 72, 43, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,168, 44, 92, 23, 1, 0, 0, 0,232, 41, 92, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 67, 1, 0, 0, 67, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,168, 44, 92, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 8, 46, 92, 23, 1, 0, 0, 0, 72, 43, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, - 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, - 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0,211, 0, 0, 0, 67, 1, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 8, 46, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168, 44, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,211, 0, 0, 0, 67, 1, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 47, 92, 23, 1, 0, 0, 0, - 68, 65, 84, 65,104, 3, 0, 0,104, 47, 92, 23, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,121, 92,163, 61, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128, -111, 18,131,187, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,121, 92,163, 61, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 15,150, 72, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,121, 92,163, 61, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,159, 55,242, 61, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190, -237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 1, 0, 0, 24, 51, 92, 23, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 72, 55, 92, 23, 1, 0, 0, 0, - 24, 38, 92, 23, 1, 0, 0, 0,136, 40, 92, 23, 1, 0, 0, 0, 8, 46, 92, 23, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,136, 52, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -232, 53, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,195, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 24, 6, 26, 0, 24, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 23, 6, 0, 0,149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,232, 53, 92, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136, 52, 92, 23, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 56,205,190,195,156,102, 95, 68, -160,228,244, 64,110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0, 18, 0, 0, 0,106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 18, 0, 0, 0,106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6, -107, 2, 7, 6, 89, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0, -175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6,107, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 72, 55, 92, 23, 1, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0,184, 31, 86, 26, 1, 0, 0, 0, 24, 51, 92, 23, 1, 0, 0, 0, -136, 52, 92, 23, 1, 0, 0, 0,232, 53, 92, 23, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,186,171, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,168, 56, 92, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,152, 27, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, - 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, - 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,152, 27, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -248, 28, 86, 26, 1, 0, 0, 0,168, 56, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,248, 28, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 88, 30, 86, 26, 1, 0, 0, 0, -152, 27, 86, 26, 1, 0, 0, 0, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, - 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 88, 30, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 28, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, - 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,184, 31, 86, 26, 1, 0, 0, 0, -166, 0, 0, 0, 1, 0, 0, 0,168, 35, 86, 26, 1, 0, 0, 0, 72, 55, 92, 23, 1, 0, 0, 0,168, 56, 92, 23, 1, 0, 0, 0, - 88, 30, 86, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -232, 32, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 72, 34, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 72, 34, 86, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 32, 86, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, - 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, - 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, - 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0,168, 35, 86, 26, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184, 31, 86, 26, 1, 0, 0, 0,232, 32, 86, 26, 1, 0, 0, 0, 72, 34, 86, 26, 1, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, - 83, 78, 0, 0,208, 0, 0, 0,168, 36, 86, 26, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,152, 24, 96, 23, 1, 0, 0, 0, -200,166, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116, -105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104,163, 91, 23, 1, 0, 0, 0,216, 41, 86, 26, 1, 0, 0, 0, 56, 42, 86, 26, 1, 0, 0, 0,216, 51, 86, 26, 1, 0, 0, 0, - 72, 52, 86, 26, 1, 0, 0, 0,232,227, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104,163, 91, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, - 40, 99, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 40, 99, 92, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 24,124, 92, 23, 1, 0, 0, 0, -104,163, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 24,124, 92, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,184, 37, 86, 26, 1, 0, 0, 0, 40, 99, 92, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184, 37, 86, 26, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 24, 38, 86, 26, 1, 0, 0, 0, 24,124, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24, 38, 86, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -120, 38, 86, 26, 1, 0, 0, 0,184, 37, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,120, 38, 86, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,216, 38, 86, 26, 1, 0, 0, 0, - 24, 38, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -216, 38, 86, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 56, 39, 86, 26, 1, 0, 0, 0,120, 38, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,244, 3,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56, 39, 86, 26, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,152, 39, 86, 26, 1, 0, 0, 0,216, 38, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,152, 39, 86, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -248, 39, 86, 26, 1, 0, 0, 0, 56, 39, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,248, 39, 86, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 88, 40, 86, 26, 1, 0, 0, 0, -152, 39, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244, 3, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 88, 40, 86, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,184, 40, 86, 26, 1, 0, 0, 0,248, 39, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184, 40, 86, 26, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 24, 41, 86, 26, 1, 0, 0, 0, 88, 40, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24, 41, 86, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -120, 41, 86, 26, 1, 0, 0, 0,184, 40, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244, 3, 12, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,120, 41, 86, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,216, 41, 86, 26, 1, 0, 0, 0, - 24, 41, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -216, 41, 86, 26, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 41, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56, 42, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,168, 42, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 99, 92, 23, 1, 0, 0, 0, - 24,124, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168, 42, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 24, 43, 86, 26, 1, 0, 0, 0, 56, 42, 86, 26, 1, 0, 0, 0, 40, 99, 92, 23, 1, 0, 0, 0, - 24, 38, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24, 43, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,136, 43, 86, 26, 1, 0, 0, 0,168, 42, 86, 26, 1, 0, 0, 0, 24,124, 92, 23, 1, 0, 0, 0, -120, 38, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136, 43, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,248, 43, 86, 26, 1, 0, 0, 0, 24, 43, 86, 26, 1, 0, 0, 0, 24, 38, 86, 26, 1, 0, 0, 0, -120, 38, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248, 43, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,104, 44, 86, 26, 1, 0, 0, 0,136, 43, 86, 26, 1, 0, 0, 0,120, 38, 86, 26, 1, 0, 0, 0, -216, 38, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104, 44, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,216, 44, 86, 26, 1, 0, 0, 0,248, 43, 86, 26, 1, 0, 0, 0,184, 37, 86, 26, 1, 0, 0, 0, - 56, 39, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216, 44, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 72, 45, 86, 26, 1, 0, 0, 0,104, 44, 86, 26, 1, 0, 0, 0,104,163, 91, 23, 1, 0, 0, 0, -152, 39, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72, 45, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,184, 45, 86, 26, 1, 0, 0, 0,216, 44, 86, 26, 1, 0, 0, 0, 24, 38, 86, 26, 1, 0, 0, 0, -152, 39, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184, 45, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 40, 46, 86, 26, 1, 0, 0, 0, 72, 45, 86, 26, 1, 0, 0, 0,216, 38, 86, 26, 1, 0, 0, 0, -248, 39, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40, 46, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,152, 46, 86, 26, 1, 0, 0, 0,184, 45, 86, 26, 1, 0, 0, 0, 56, 39, 86, 26, 1, 0, 0, 0, -248, 39, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152, 46, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 8, 47, 86, 26, 1, 0, 0, 0, 40, 46, 86, 26, 1, 0, 0, 0,104,163, 91, 23, 1, 0, 0, 0, - 88, 40, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8, 47, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,120, 47, 86, 26, 1, 0, 0, 0,152, 46, 86, 26, 1, 0, 0, 0, 56, 39, 86, 26, 1, 0, 0, 0, - 88, 40, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120, 47, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,232, 47, 86, 26, 1, 0, 0, 0, 8, 47, 86, 26, 1, 0, 0, 0,152, 39, 86, 26, 1, 0, 0, 0, -184, 40, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232, 47, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 88, 48, 86, 26, 1, 0, 0, 0,120, 47, 86, 26, 1, 0, 0, 0,248, 39, 86, 26, 1, 0, 0, 0, -184, 40, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88, 48, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,200, 48, 86, 26, 1, 0, 0, 0,232, 47, 86, 26, 1, 0, 0, 0, 88, 40, 86, 26, 1, 0, 0, 0, -184, 40, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200, 48, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 56, 49, 86, 26, 1, 0, 0, 0, 88, 48, 86, 26, 1, 0, 0, 0, 56, 39, 86, 26, 1, 0, 0, 0, - 24, 41, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56, 49, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,168, 49, 86, 26, 1, 0, 0, 0,200, 48, 86, 26, 1, 0, 0, 0,216, 38, 86, 26, 1, 0, 0, 0, - 24, 41, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168, 49, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 24, 50, 86, 26, 1, 0, 0, 0, 56, 49, 86, 26, 1, 0, 0, 0,120, 38, 86, 26, 1, 0, 0, 0, -120, 41, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24, 50, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,136, 50, 86, 26, 1, 0, 0, 0,168, 49, 86, 26, 1, 0, 0, 0,184, 37, 86, 26, 1, 0, 0, 0, -120, 41, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136, 50, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,248, 50, 86, 26, 1, 0, 0, 0, 24, 50, 86, 26, 1, 0, 0, 0, 24, 41, 86, 26, 1, 0, 0, 0, -120, 41, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248, 50, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,104, 51, 86, 26, 1, 0, 0, 0,136, 50, 86, 26, 1, 0, 0, 0, 24, 38, 86, 26, 1, 0, 0, 0, -216, 41, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104, 51, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,216, 51, 86, 26, 1, 0, 0, 0,248, 50, 86, 26, 1, 0, 0, 0,216, 38, 86, 26, 1, 0, 0, 0, -216, 41, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216, 51, 86, 26, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 51, 86, 26, 1, 0, 0, 0,184, 40, 86, 26, 1, 0, 0, 0, -216, 41, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 72, 52, 86, 26, 1, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0,232, 55, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 38, 86, 26, 1, 0, 0, 0, - 40, 99, 92, 23, 1, 0, 0, 0, 24,124, 92, 23, 1, 0, 0, 0,120, 38, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 24, 96, 23, 1, 0, 0, 0, 8, 24, 96, 23, 1, 0, 0, 0, 40, 53, 86, 26, 1, 0, 0, 0, -136, 54, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 40, 53, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -136, 54, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,136, 54, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40, 53, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, - 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, - 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -232, 55, 86, 26, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,216, 94, 86, 26, 1, 0, 0, 0, 72, 52, 86, 26, 1, 0, 0, 0, - 56, 39, 86, 26, 1, 0, 0, 0, 24, 41, 86, 26, 1, 0, 0, 0,120, 41, 86, 26, 1, 0, 0, 0,184, 37, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 4, 4, 10, 1, 12, 2, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 79, 86, 26, 1, 0, 0, 0,104, 93, 86, 26, 1, 0, 0, 0, -200, 56, 86, 26, 1, 0, 0, 0, 40, 58, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,200, 56, 86, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 40, 58, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, - 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, 31, 0, 10, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0,237, 1, 0, 0, 11, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 40, 58, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200, 56, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,132, 67, 0, 64, 80,196, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,120, 67,255,127,246,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, - 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0, 10, 1,237, 1,249, 0,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 1,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 59, 86, 26, 1, 0, 0, 0,104, 77, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,136, 59, 86, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40, 61, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, - 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, - 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255,248, 0, 36, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 40, 61, 86, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,200, 62, 86, 26, 1, 0, 0, 0,136, 59, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,248, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,200, 62, 86, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104, 64, 86, 26, 1, 0, 0, 0, - 40, 61, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255,248, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,104, 64, 86, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 8, 66, 86, 26, 1, 0, 0, 0,200, 62, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254,248, 0,203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 8, 66, 86, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168, 67, 86, 26, 1, 0, 0, 0, -104, 64, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, - 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254,248, 0, 58, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,168, 67, 86, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 72, 69, 86, 26, 1, 0, 0, 0, 8, 66, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,253,248, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 72, 69, 86, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,232, 70, 86, 26, 1, 0, 0, 0, -168, 67, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35,253,248, 0,105, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,232, 70, 86, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,136, 72, 86, 26, 1, 0, 0, 0, 72, 69, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,253,248, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,136, 72, 86, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40, 74, 86, 26, 1, 0, 0, 0, -232, 70, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, - 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243,252,248, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 40, 74, 86, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,200, 75, 86, 26, 1, 0, 0, 0,136, 72, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,238,251,248, 0,237, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,200, 75, 86, 26, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104, 77, 86, 26, 1, 0, 0, 0, - 40, 74, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,117,108,108, 32, 83, 97,109, -112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254,248, 0, 0, 0, - 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,104, 77, 86, 26, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 75, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,252,248, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 8, 79, 86, 26, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0,200, 85, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 72, 80, 86, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,168, 81, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, - 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, - 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,168, 81, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 8, 83, 86, 26, 1, 0, 0, 0, 72, 80, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 8, 83, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104, 84, 86, 26, 1, 0, 0, 0, -168, 81, 86, 26, 1, 0, 0, 0, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, - 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -104, 84, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 83, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, - 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,200, 85, 86, 26, 1, 0, 0, 0, -166, 0, 0, 0, 1, 0, 0, 0,104, 93, 86, 26, 1, 0, 0, 0, 8, 79, 86, 26, 1, 0, 0, 0, 72, 80, 86, 26, 1, 0, 0, 0, -104, 84, 86, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -248, 86, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 88, 88, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 88, 88, 86, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 86, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, 89, 86, 26, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0,184, 89, 86, 26, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, -103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, -103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, -237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, -103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,104, 93, 86, 26, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200, 85, 86, 26, 1, 0, 0, 0,248, 86, 86, 26, 1, 0, 0, 0, 88, 88, 86, 26, 1, 0, 0, 0, - 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, - 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,216, 94, 86, 26, 1, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0,104,132, 86, 26, 1, 0, 0, 0,232, 55, 86, 26, 1, 0, 0, 0, 88, 40, 86, 26, 1, 0, 0, 0, -184, 40, 86, 26, 1, 0, 0, 0,248, 39, 86, 26, 1, 0, 0, 0, 56, 39, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,251, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120, 98, 86, 26, 1, 0, 0, 0,104,131, 86, 26, 1, 0, 0, 0,184, 95, 86, 26, 1, 0, 0, 0, - 24, 97, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184, 95, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 24, 97, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 24, 97, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, 95, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 67, 0, 0, 0, 0, 0, 0, 48, 65, 0, 0, 0, 0, 0, 0,245, 67, - 0, 0, 0, 0, 0, 0,129, 67,234, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,251, 1, - 2, 1,234, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, - 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 2, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 1, 0, 0, -120, 98, 86, 26, 1, 0, 0, 0,180, 0, 0, 0, 1, 0, 0, 0, 8,103, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 72,100, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,168,101, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, - 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, - 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -168,101, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,100, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,128,192, 67, 0, 6,188, 63,254,176,189, 68, 0, 0, 0, 0, 0,128,192, 67, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,240, 5,130, 1,240, 5,130, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0, 8,103, 86, 26, 1, 0, 0, 0, -172, 0, 0, 0, 1, 0, 0, 0,152,108, 86, 26, 1, 0, 0, 0,120, 98, 86, 26, 1, 0, 0, 0, 72,100, 86, 26, 1, 0, 0, 0, -168,101, 86, 26, 1, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -216,105, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 56,107, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 56,107, 86, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,105, 86, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, - 0, 0, 32,193, 0, 0, 0, 68,134,137,182,195,195, 68, 91, 68, 30,222,207, 66,116, 8,204, 67,223, 5, 0, 0,240, 5, 0, 0, - 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, - 18, 0, 0, 0,129, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, - 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,240, 5,130, 1,223, 5,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,152,108, 86, 26, 1, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, -120,115, 86, 26, 1, 0, 0, 0, 8,103, 86, 26, 1, 0, 0, 0,216,105, 86, 26, 1, 0, 0, 0, 56,107, 86, 26, 1, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 19, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 52, 81, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,248,109, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 88,111, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, - 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, - 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, - 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, - 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 88,111, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,184,112, 86, 26, 1, 0, 0, 0,248,109, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184,112, 86, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 24,114, 86, 26, 1, 0, 0, 0, 88,111, 86, 26, 1, 0, 0, 0, 0, 0,112,196, 0, 0,112, 68, - 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 24,114, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184,112, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, - 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, - 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,240, 0, 0, 0,120,115, 86, 26, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 56,127, 86, 26, 1, 0, 0, 0, -152,108, 86, 26, 1, 0, 0, 0,248,109, 86, 26, 1, 0, 0, 0, 24,114, 86, 26, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,168,116, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 8,118, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 8,118, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104,119, 86, 26, 1, 0, 0, 0, -168,116, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, -255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, - 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0, -251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, - 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -104,119, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,200,120, 86, 26, 1, 0, 0, 0, 8,118, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,200,120, 86, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 40,122, 86, 26, 1, 0, 0, 0,104,119, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, - 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, - 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 40,122, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200,120, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,123, 86, 26, 1, 0, 0, 0, - 68, 65, 84, 65,104, 3, 0, 0,136,123, 86, 26, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63, -176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, - 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191, -222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, -224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, - 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191, -222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190, -237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 1, 0, 0, 56,127, 86, 26, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0,104,131, 86, 26, 1, 0, 0, 0, -120,115, 86, 26, 1, 0, 0, 0,168,116, 86, 26, 1, 0, 0, 0, 40,122, 86, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,168,128, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 8,130, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 8,130, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168,128, 86, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, - 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, - 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4, -122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, -127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, -104,131, 86, 26, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,127, 86, 26, 1, 0, 0, 0, -168,128, 86, 26, 1, 0, 0, 0, 8,130, 86, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,104,132, 86, 26, 1, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0,104,165, 86, 26, 1, 0, 0, 0,216, 94, 86, 26, 1, 0, 0, 0,184, 40, 86, 26, 1, 0, 0, 0, -216, 41, 86, 26, 1, 0, 0, 0,216, 38, 86, 26, 1, 0, 0, 0,248, 39, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 1, 1,251, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216,143, 86, 26, 1, 0, 0, 0,104,164, 86, 26, 1, 0, 0, 0, 72,133, 86, 26, 1, 0, 0, 0, -200,138, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 72,133, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -168,134, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,168,134, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8,136, 86, 26, 1, 0, 0, 0, - 72,133, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, -255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, - 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,249, 1, 0, 0, - 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,132, 1, 0, 0, 5, 0, - 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 8,136, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104,137, 86, 26, 1, 0, 0, 0,168,134, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0, 55, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,104,137, 86, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,200,138, 86, 26, 1, 0, 0, 0, 8,136, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, - 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, - 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,243, 3, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,200,138, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104,137, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -251, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,140, 86, 26, 1, 0, 0, 0, - 68, 65, 84, 65,104, 3, 0, 0, 40,140, 86, 26, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,240,182, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63, -176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, - 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62,242,252, 18,191, -222,160, 81,191,184,158, 81,191,117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, - 0,247, 70,188, 0,192, 32,182, 15,232,143,190,210,186, 10, 62, 44, 83, 32, 63, 0,192, 24, 54,215,104, 25,196,133,132,135, 67, - 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,158, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62,242,252, 18,191, -222,160, 81,191,184,158, 81,191,117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190, -237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,138, 93,108, 59, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 1, 0, 0,216,143, 86, 26, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 8,148, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 72,145, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -168,146, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,168,146, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72,145, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,125, 79, 21, 68,131,112,102, 68, -133, 83, 49, 67, 62,214,212, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,251, 1, -132, 1,251, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, - 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1,132, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0, - 8,148, 86, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0,152,153, 86, 26, 1, 0, 0, 0,216,143, 86, 26, 1, 0, 0, 0, - 72,145, 86, 26, 1, 0, 0, 0,168,146, 86, 26, 1, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,216,150, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 56,152, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, - 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, - 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, -157, 1, 0, 0,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 56,152, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,150, 86, 26, 1, 0, 0, 0, - 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,132,137,182,195,194, 68, 91, 68,112,158, 93, 65, 8, 19,249, 67, -223, 5, 0, 0,240, 5, 0, 0, 18, 0, 0, 0, 91, 2, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,222, 5, 0, 0, 18, 0, 0, 0, 91, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, -205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,240, 5, 92, 2,223, 5, 74, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,183, 1, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 92, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,152,153, 86, 26, 1, 0, 0, 0, -176, 0, 0, 0, 1, 0, 0, 0,120,160, 86, 26, 1, 0, 0, 0, 8,148, 86, 26, 1, 0, 0, 0,216,150, 86, 26, 1, 0, 0, 0, - 56,152, 86, 26, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 57, 52, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,248,154, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 88,156, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, - 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, - 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 88,156, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,184,157, 86, 26, 1, 0, 0, 0, -248,154, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0, -112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -184,157, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 24,159, 86, 26, 1, 0, 0, 0, 88,156, 86, 26, 1, 0, 0, 0, - 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70, -172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 24,159, 86, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,157, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, - 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, - 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,120,160, 86, 26, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, -104,164, 86, 26, 1, 0, 0, 0,152,153, 86, 26, 1, 0, 0, 0,248,154, 86, 26, 1, 0, 0, 0, 24,159, 86, 26, 1, 0, 0, 0, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,168,161, 86, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 8,163, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 8,163, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168,161, 86, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, -112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, - 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,192, 0, 0, 0,104,164, 86, 26, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120,160, 86, 26, 1, 0, 0, 0,168,161, 86, 26, 1, 0, 0, 0, 8,163, 86, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -104,165, 86, 26, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,248,202, 86, 26, 1, 0, 0, 0,104,132, 86, 26, 1, 0, 0, 0, -104,163, 91, 23, 1, 0, 0, 0,152, 39, 86, 26, 1, 0, 0, 0,184, 40, 86, 26, 1, 0, 0, 0, 88, 40, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,248, 1, 28, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,169, 86, 26, 1, 0, 0, 0,248,201, 86, 26, 1, 0, 0, 0, - 72,166, 86, 26, 1, 0, 0, 0,168,167, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 72,166, 86, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,168,167, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,168,167, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 72,166, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0, 65, 67, - 0, 0, 0, 0, 0,128,243, 67, 0, 0, 0, 0, 0, 0,129, 67,231, 1, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, - 2, 0, 0, 4, 10, 0,248, 1, 2, 1,231, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,247, 1, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,144, 1, 0, 0, 8,169, 86, 26, 1, 0, 0, 0,180, 0, 0, 0, 1, 0, 0, 0,152,173, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112,121,116,104,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,216,170, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 56,172, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 56,172, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216,170, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,128,192, 67, 0, 6,188, 63,254,176,189, 68, - 0, 0, 0, 0, 0,128,192, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,240, 5, -130, 1,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, - 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,130, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0, -152,173, 86, 26, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 40,179, 86, 26, 1, 0, 0, 0, 8,169, 86, 26, 1, 0, 0, 0, -216,170, 86, 26, 1, 0, 0, 0, 56,172, 86, 26, 1, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,104,176, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,200,177, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, - 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, - 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -200,177, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,176, 86, 26, 1, 0, 0, 0, - 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,134,137,182,195,195, 68, 91, 68, 30,222,207, 66,116, 8,204, 67, -223, 5, 0, 0,240, 5, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,222, 5, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, -205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,240, 5,130, 1,223, 5,112, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 40,179, 86, 26, 1, 0, 0, 0, -176, 0, 0, 0, 1, 0, 0, 0, 8,186, 86, 26, 1, 0, 0, 0,152,173, 86, 26, 1, 0, 0, 0,104,176, 86, 26, 1, 0, 0, 0, -200,177, 86, 26, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 58, 52, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,136,180, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -232,181, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, - 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, - 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,232,181, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 72,183, 86, 26, 1, 0, 0, 0, -136,180, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0, -112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 72,183, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,168,184, 86, 26, 1, 0, 0, 0,232,181, 86, 26, 1, 0, 0, 0, - 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70, -172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,168,184, 86, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,183, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, - 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, - 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 8,186, 86, 26, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, -200,197, 86, 26, 1, 0, 0, 0, 40,179, 86, 26, 1, 0, 0, 0,136,180, 86, 26, 1, 0, 0, 0,168,184, 86, 26, 1, 0, 0, 0, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 56,187, 86, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,152,188, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,152,188, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -248,189, 86, 26, 1, 0, 0, 0, 56,187, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,248,189, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 88,191, 86, 26, 1, 0, 0, 0, -152,188, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, - 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, -120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0, -251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, - 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 88,191, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,184,192, 86, 26, 1, 0, 0, 0,248,189, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0, -163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184,192, 86, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,191, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24,194, 86, 26, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 24,194, 86, 26, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, - 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, - 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, -185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, -180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62, -147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, -217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53, -215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, -180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62, -147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, -218,210,190, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,200,197, 86, 26, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, -248,201, 86, 26, 1, 0, 0, 0, 8,186, 86, 26, 1, 0, 0, 0, 56,187, 86, 26, 1, 0, 0, 0,184,192, 86, 26, 1, 0, 0, 0, - 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, - 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 56,199, 86, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,152,200, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,152,200, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,199, 86, 26, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, -112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, - 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,192, 0, 0, 0,248,201, 86, 26, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200,197, 86, 26, 1, 0, 0, 0, 56,199, 86, 26, 1, 0, 0, 0,152,200, 86, 26, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -248,202, 86, 26, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,232,227, 86, 26, 1, 0, 0, 0,104,165, 86, 26, 1, 0, 0, 0, - 24, 41, 86, 26, 1, 0, 0, 0,216, 38, 86, 26, 1, 0, 0, 0,120, 38, 86, 26, 1, 0, 0, 0,120, 41, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0,186, 2, 0, 0, 3, 3, 10, 1,174, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,206, 86, 26, 1, 0, 0, 0,120,226, 86, 26, 1, 0, 0, 0, -216,203, 86, 26, 1, 0, 0, 0, 56,205, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,216,203, 86, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 56,205, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,149, 67, 0, 0,200, 65, 0,128,149, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, 26, 0, 10, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0, 38, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 56,205, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216,203, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,121, 67, 0, 0, 2,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, - 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, - 0, 0, 0, 4, 6, 0, 10, 1,148, 0,249, 0,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -245, 3, 0, 0,254, 4, 0, 0, 39, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 1,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,152,206, 86, 26, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 24,212, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,207, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, -248,207, 86, 26, 1, 0, 0, 0,222, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 72,208, 86, 26, 1, 0, 0, 0, - 68, 65, 84, 65,208, 0, 0, 0, 72,208, 86, 26, 1, 0, 0, 0,221, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 56,186,171, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 56,186,171, 3, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, - 56,186,171, 3, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 56,216, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 56,212,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -104,228, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 40,221, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 72,226, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 56, 70,170, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -168,211, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -200,210, 96, 23, 1, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 88,209, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -184,210, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,150, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, - 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 44, 1, 31, 0, 44, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, 4, 0, 0,160, 5, 0, 0,218, 2, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 44, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,184,210, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88,209, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,141, 67, 0, 0, 62,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,141, 67, - 0, 0,246,194, 0, 0, 0, 0, 27, 1, 0, 0, 44, 1, 0, 0, 18, 0, 0, 0,140, 0, 0, 0, 0, 0, 0, 0, 26, 1, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 26, 1, 0, 0, 18, 0, 0, 0,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 44, 1, -141, 0, 27, 1,123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 4, 0, 0,160, 5, 0, 0, - 77, 2, 0, 0,217, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 1,141, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 24,212, 86, 26, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0,216,218, 86, 26, 1, 0, 0, 0,152,206, 86, 26, 1, 0, 0, 0, - 88,209, 86, 26, 1, 0, 0, 0,184,210, 86, 26, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 88,213, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -184,214, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, - 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, - 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -228, 1, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,184,214, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 24,216, 86, 26, 1, 0, 0, 0, - 88,213, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0, -112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 24,216, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,120,217, 86, 26, 1, 0, 0, 0,184,214, 86, 26, 1, 0, 0, 0, - 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70, -172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,120,217, 86, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,216, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, - 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, - 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,216,218, 86, 26, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, -120,226, 86, 26, 1, 0, 0, 0, 24,212, 86, 26, 1, 0, 0, 0, 88,213, 86, 26, 1, 0, 0, 0,120,217, 86, 26, 1, 0, 0, 0, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 8,220, 86, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,104,221, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,104,221, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8,220, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,222, 86, 26, 1, 0, 0, 0, - 68, 65, 84, 65,104, 3, 0, 0,200,222, 86, 26, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 1, 0, 0,120,226, 86, 26, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216,218, 86, 26, 1, 0, 0, 0, 8,220, 86, 26, 1, 0, 0, 0,104,221, 86, 26, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,232,227, 86, 26, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248,202, 86, 26, 1, 0, 0, 0,152, 39, 86, 26, 1, 0, 0, 0, 24, 38, 86, 26, 1, 0, 0, 0, -216, 41, 86, 26, 1, 0, 0, 0,184, 40, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, - 29, 1, 0, 0,186, 2, 0, 0, 9, 9,248, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136,231, 86, 26, 1, 0, 0, 0, 8, 23, 96, 23, 1, 0, 0, 0,200,228, 86, 26, 1, 0, 0, 0, 40,230, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,200,228, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 40,230, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 73, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, - 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 1, - 26, 0,248, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, - 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 40,230, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,228, 86, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,236,140, 21, 68, 20, 51,102, 68,120, 83, 49, 67, 68,214,212, 67, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,248, 1,132, 1,248, 1,132, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0,136,231, 86, 26, 1, 0, 0, 0, -172, 0, 0, 0, 1, 0, 0, 0, 56, 0, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216,218, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,231, 1, 0, 0,243, 1, 0, 0,122, 1, 0, 0,124, 1, 0, 0, -231, 1, 0, 0,243, 1, 0, 0, 4, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 88,234, 86, 26, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,184,235, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,157, 1, 0, 0,182, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184,235, 86, 26, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,234, 86, 26, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, - 0, 0, 32,193, 0, 0, 0, 68,132,137,182,195,194, 68, 91, 68,112,158, 93, 65, 8, 19,249, 67,223, 5, 0, 0,240, 5, 0, 0, - 18, 0, 0, 0, 91, 2, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, - 18, 0, 0, 0, 91, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, - 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,240, 5, 92, 2,223, 5, 74, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,183, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 92, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 56, 0, 96, 23, 1, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, - 24, 7, 96, 23, 1, 0, 0, 0,136,231, 86, 26, 1, 0, 0, 0, 88,234, 86, 26, 1, 0, 0, 0,184,235, 86, 26, 1, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 19, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 52, 81, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,152, 1, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,248, 2, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, - 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, - 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, - 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, - 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -248, 2, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 88, 4, 96, 23, 1, 0, 0, 0,152, 1, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 88, 4, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,184, 5, 96, 23, 1, 0, 0, 0,248, 2, 96, 23, 1, 0, 0, 0, 0, 0,112,196, 0, 0,112, 68, - 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184, 5, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 4, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, - 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, - 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,240, 0, 0, 0, 24, 7, 96, 23, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0,216, 18, 96, 23, 1, 0, 0, 0, - 56, 0, 96, 23, 1, 0, 0, 0,152, 1, 96, 23, 1, 0, 0, 0,184, 5, 96, 23, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 72, 8, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -168, 9, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,168, 9, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8, 11, 96, 23, 1, 0, 0, 0, - 72, 8, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, -255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, - 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0, -251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, - 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 8, 11, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104, 12, 96, 23, 1, 0, 0, 0,168, 9, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,104, 12, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,200, 13, 96, 23, 1, 0, 0, 0, 8, 11, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, - 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, - 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,200, 13, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104, 12, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 15, 96, 23, 1, 0, 0, 0, - 68, 65, 84, 65,104, 3, 0, 0, 40, 15, 96, 23, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63, -176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, - 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191, -222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, -224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, - 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191, -222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190, -237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 1, 0, 0,216, 18, 96, 23, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 8, 23, 96, 23, 1, 0, 0, 0, - 24, 7, 96, 23, 1, 0, 0, 0, 72, 8, 96, 23, 1, 0, 0, 0,200, 13, 96, 23, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 72, 20, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -168, 21, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,168, 21, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 20, 96, 23, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, - 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, - 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4, -122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, -127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, - 8, 23, 96, 23, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 18, 96, 23, 1, 0, 0, 0, - 72, 20, 96, 23, 1, 0, 0, 0,168, 21, 96, 23, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,152, 24, 96, 23, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 72, 91, 96, 23, 1, 0, 0, 0,168, 36, 86, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 25, 96, 23, 1, 0, 0, 0, 72, 28, 96, 23, 1, 0, 0, 0, -168, 28, 96, 23, 1, 0, 0, 0, 8, 33, 96, 23, 1, 0, 0, 0,120, 33, 96, 23, 1, 0, 0, 0,120, 59, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -168, 25, 96, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 8, 26, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8, 26, 96, 23, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,104, 26, 96, 23, 1, 0, 0, 0,168, 25, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 26, 96, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -200, 26, 96, 23, 1, 0, 0, 0, 8, 26, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,200, 26, 96, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 40, 27, 96, 23, 1, 0, 0, 0, -104, 26, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 40, 27, 96, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,136, 27, 96, 23, 1, 0, 0, 0,200, 26, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136, 27, 96, 23, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,232, 27, 96, 23, 1, 0, 0, 0, 40, 27, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232, 27, 96, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, - 72, 28, 96, 23, 1, 0, 0, 0,136, 27, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 2,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 72, 28, 96, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232, 27, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -168, 28, 96, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24, 29, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 26, 96, 23, 1, 0, 0, 0,104, 26, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 24, 29, 96, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136, 29, 96, 23, 1, 0, 0, 0,168, 28, 96, 23, 1, 0, 0, 0, - 8, 26, 96, 23, 1, 0, 0, 0, 40, 27, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -136, 29, 96, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,248, 29, 96, 23, 1, 0, 0, 0, 24, 29, 96, 23, 1, 0, 0, 0, -104, 26, 96, 23, 1, 0, 0, 0,136, 27, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -248, 29, 96, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,104, 30, 96, 23, 1, 0, 0, 0,136, 29, 96, 23, 1, 0, 0, 0, - 40, 27, 96, 23, 1, 0, 0, 0,136, 27, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -104, 30, 96, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,216, 30, 96, 23, 1, 0, 0, 0,248, 29, 96, 23, 1, 0, 0, 0, - 40, 27, 96, 23, 1, 0, 0, 0,232, 27, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -216, 30, 96, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72, 31, 96, 23, 1, 0, 0, 0,104, 30, 96, 23, 1, 0, 0, 0, -168, 25, 96, 23, 1, 0, 0, 0, 72, 28, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 72, 31, 96, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,184, 31, 96, 23, 1, 0, 0, 0,216, 30, 96, 23, 1, 0, 0, 0, -168, 25, 96, 23, 1, 0, 0, 0, 40, 27, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -184, 31, 96, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 40, 32, 96, 23, 1, 0, 0, 0, 72, 31, 96, 23, 1, 0, 0, 0, -232, 27, 96, 23, 1, 0, 0, 0, 72, 28, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 40, 32, 96, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152, 32, 96, 23, 1, 0, 0, 0,184, 31, 96, 23, 1, 0, 0, 0, -136, 27, 96, 23, 1, 0, 0, 0,232, 27, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -152, 32, 96, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8, 33, 96, 23, 1, 0, 0, 0, 40, 32, 96, 23, 1, 0, 0, 0, -200, 26, 96, 23, 1, 0, 0, 0, 72, 28, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 8, 33, 96, 23, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 32, 96, 23, 1, 0, 0, 0, -200, 26, 96, 23, 1, 0, 0, 0,136, 27, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -120, 33, 96, 23, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 24, 37, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40, 27, 96, 23, 1, 0, 0, 0, 8, 26, 96, 23, 1, 0, 0, 0,104, 26, 96, 23, 1, 0, 0, 0,136, 27, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 90, 96, 23, 1, 0, 0, 0,184, 90, 96, 23, 1, 0, 0, 0, - 88, 34, 96, 23, 1, 0, 0, 0,184, 35, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 88, 34, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,184, 35, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184, 35, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 34, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0, 24, 37, 96, 23, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,120, 59, 96, 23, 1, 0, 0, 0, -120, 33, 96, 23, 1, 0, 0, 0,168, 25, 96, 23, 1, 0, 0, 0, 40, 27, 96, 23, 1, 0, 0, 0,232, 27, 96, 23, 1, 0, 0, 0, - 72, 28, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, - 6, 6,132, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 10,225, 3, 1, 0, 0, 0, -120, 58, 96, 23, 1, 0, 0, 0,248, 37, 96, 23, 1, 0, 0, 0, 88, 42, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -248, 37, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 88, 39, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 33, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,132, 2, 26, 0,132, 2, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 88, 39, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 88, 42, 96, 23, 1, 0, 0, 0,248, 37, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 67, - 0, 0, 40,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 74, 67,254, 63, 40,196, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, - 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, - 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,161, 2,203, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,220, 0,161, 2, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 40, 96, 23, 1, 0, 0, 0, -184, 40, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184, 40, 96, 23, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 73, 77, 65, 71, 69, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 73, 77, 65, 71, 69, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71,114,101, 97,115,101, 32, 80,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,196,255,202, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 88, 42, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 39, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67,102,102, 38,190,205,204,148, 63, 51, 51, 13,191,154,153,198, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,168, 1, 0, 0, 0, 0, 0, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0,131, 2, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 33, 0, 0, 56, 10,225, 3, 1, 0, 0, 0, -170, 0, 0, 0, 1, 0, 0, 0, 72, 54, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184, 43, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 24, 45, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 24, 45, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -120, 46, 96, 23, 1, 0, 0, 0,184, 43, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0,164, 3, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,120, 46, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,216, 47, 96, 23, 1, 0, 0, 0, - 24, 45, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, - 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, -120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, -111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, - 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -216, 47, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 56, 49, 96, 23, 1, 0, 0, 0,120, 46, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0, -163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 56, 49, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 47, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 50, 96, 23, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0,152, 50, 96, 23, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, -226,225,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, - 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, -185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, -192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62, -232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, -250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181,195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63, 0,128,163, 53, -215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,151,254, 71, 66, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, -192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62, -232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, -172,148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, 72, 54, 96, 23, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, -120, 58, 96, 23, 1, 0, 0, 0, 56, 10,225, 3, 1, 0, 0, 0,184, 43, 96, 23, 1, 0, 0, 0, 56, 49, 96, 23, 1, 0, 0, 0, - 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, - 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184, 55, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 24, 57, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 24, 57, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184, 55, 96, 23, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, -112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, - 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,192, 0, 0, 0,120, 58, 96, 23, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 54, 96, 23, 1, 0, 0, 0,184, 55, 96, 23, 1, 0, 0, 0, 24, 57, 96, 23, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -120, 59, 96, 23, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 37, 96, 23, 1, 0, 0, 0, - 72, 28, 96, 23, 1, 0, 0, 0,232, 27, 96, 23, 1, 0, 0, 0,136, 27, 96, 23, 1, 0, 0, 0,200, 26, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 1, 1,122, 2,187, 2, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 85, 96, 23, 1, 0, 0, 0,184, 89, 96, 23, 1, 0, 0, 0, - 88, 60, 96, 23, 1, 0, 0, 0,120, 80, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 88, 60, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,184, 61, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 30, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 2, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,122, 2, 26, 0,122, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,122, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184, 61, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 88, 66, 96, 23, 1, 0, 0, 0, 88, 60, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 67, 0, 64, 10,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 10,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,160, 0, 41, 2,143, 0, 41, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -133, 2, 0, 0, 36, 3, 0, 0,146, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 0, 41, 2, 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 63, 96, 23, 1, 0, 0, 0,184, 64, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 24, 63, 96, 23, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184, 64, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108, 95,115,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108, 95,115,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 32, 83,104,101, -108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,143, 0, 36, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184, 64, 96, 23, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 63, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111, -100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111, -100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,254,143, 0,165, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 88, 66, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 88, 69, 96, 23, 1, 0, 0, 0, -184, 61, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,242,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, - 91, 90,242,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, -120, 0,143, 0,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0, - 26, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 0, 0, 6, 0, - 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184, 67, 96, 23, 1, 0, 0, 0,184, 67, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -184, 67, 96, 23, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111, -112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111, -112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,101,114, 97,116,111,114, 0, 97,121,101,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,255,144, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 88, 69, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -120, 80, 96, 23, 1, 0, 0, 0, 88, 66, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,126,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67,255,191,126,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,180, 0, 13, 4,163, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 70, 96, 23, 1, 0, 0, 0,216, 78, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,184, 70, 96, 23, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88, 72, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122,254,163, 0,110, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 88, 72, 96, 23, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,248, 73, 96, 23, 1, 0, 0, 0,184, 70, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,254,163, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,248, 73, 96, 23, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152, 75, 96, 23, 1, 0, 0, 0, - 88, 72, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,252,163, 0, 59, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,152, 75, 96, 23, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 56, 77, 96, 23, 1, 0, 0, 0,248, 73, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,189,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 56, 77, 96, 23, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216, 78, 96, 23, 1, 0, 0, 0, -152, 75, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107,103,114,111,117, -110,100, 32, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,252,163, 0, 0, 0, - 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,216, 78, 96, 23, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 77, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101, -110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101, -110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 79,114,105,101,110,116, 97,116,105,111,110,115, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,120, 80, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 69, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 3, 0, 0,254, 4, 0, 0, - 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218, 1,161, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 81, 96, 23, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, -216, 81, 96, 23, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,193,198,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,160, 84, 89,188, 0, 0, 0, 0, - 52,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, -188,173, 54, 64,136, 95,161,191,147,231,198, 63, 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191, -130, 71,181, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0,101, 98, 82, 64, 0, 25, 95, 64,101, 47,135, 62,134, 86, 22, 63, 32,243, 11,188, 0, 0,160,179, -195, 15,188,190,132, 75, 53, 62,216,125, 81, 63, 0, 0,192,179,115, 77,100,193, 17,173,201, 64,181,148,248,192,202,247,159,192, -233, 74, 87, 65,247, 46,190,192, 88,106,234, 64, 44, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191, -130, 71,181, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0,101, 98, 82, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, - 0, 25, 95, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0,116, 16, 50, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, -136, 85, 96, 23, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0,184, 89, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,248, 86, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 88, 88, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, - 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, - 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, -101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 88, 88, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 86, 96, 23, 1, 0, 0, 0, - 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, -205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0,184, 89, 96, 23, 1, 0, 0, 0, -175, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 85, 96, 23, 1, 0, 0, 0,248, 86, 96, 23, 1, 0, 0, 0, - 88, 88, 96, 23, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 72, 91, 96, 23, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 24, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 82, 86,105,100,101,111, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 92, 96, 23, 1, 0, 0, 0,120, 96, 96, 23, 1, 0, 0, 0,216, 96, 96, 23, 1, 0, 0, 0, - 72,104, 96, 23, 1, 0, 0, 0,184,104, 96, 23, 1, 0, 0, 0,104,177, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88, 92, 96, 23, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,184, 92, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184, 92, 96, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, - 24, 93, 96, 23, 1, 0, 0, 0, 88, 92, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 24, 93, 96, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,120, 93, 96, 23, 1, 0, 0, 0, -184, 92, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -120, 93, 96, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,216, 93, 96, 23, 1, 0, 0, 0, 24, 93, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,216, 93, 96, 23, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 56, 94, 96, 23, 1, 0, 0, 0,120, 93, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56, 94, 96, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -152, 94, 96, 23, 1, 0, 0, 0,216, 93, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,152, 94, 96, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,248, 94, 96, 23, 1, 0, 0, 0, - 56, 94, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -248, 94, 96, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 88, 95, 96, 23, 1, 0, 0, 0,152, 94, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88, 95, 96, 23, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,184, 95, 96, 23, 1, 0, 0, 0,248, 94, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 52, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184, 95, 96, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, - 24, 96, 96, 23, 1, 0, 0, 0, 88, 95, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 24, 96, 96, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,120, 96, 96, 23, 1, 0, 0, 0, -184, 95, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -120, 96, 96, 23, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 96, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216, 96, 96, 23, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 72, 97, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 92, 96, 23, 1, 0, 0, 0, - 24, 93, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72, 97, 96, 23, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,184, 97, 96, 23, 1, 0, 0, 0,216, 96, 96, 23, 1, 0, 0, 0,184, 92, 96, 23, 1, 0, 0, 0, -216, 93, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184, 97, 96, 23, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 40, 98, 96, 23, 1, 0, 0, 0, 72, 97, 96, 23, 1, 0, 0, 0, 24, 93, 96, 23, 1, 0, 0, 0, - 56, 94, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40, 98, 96, 23, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,152, 98, 96, 23, 1, 0, 0, 0,184, 97, 96, 23, 1, 0, 0, 0,216, 93, 96, 23, 1, 0, 0, 0, - 56, 94, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152, 98, 96, 23, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 8, 99, 96, 23, 1, 0, 0, 0, 40, 98, 96, 23, 1, 0, 0, 0, 56, 94, 96, 23, 1, 0, 0, 0, -152, 94, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8, 99, 96, 23, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,120, 99, 96, 23, 1, 0, 0, 0,152, 98, 96, 23, 1, 0, 0, 0, 88, 92, 96, 23, 1, 0, 0, 0, -248, 94, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120, 99, 96, 23, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,232, 99, 96, 23, 1, 0, 0, 0, 8, 99, 96, 23, 1, 0, 0, 0,216, 93, 96, 23, 1, 0, 0, 0, - 88, 95, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232, 99, 96, 23, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 88,100, 96, 23, 1, 0, 0, 0,120, 99, 96, 23, 1, 0, 0, 0,248, 94, 96, 23, 1, 0, 0, 0, -184, 95, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,100, 96, 23, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,200,100, 96, 23, 1, 0, 0, 0,232, 99, 96, 23, 1, 0, 0, 0,184, 95, 96, 23, 1, 0, 0, 0, - 24, 96, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,100, 96, 23, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 56,101, 96, 23, 1, 0, 0, 0, 88,100, 96, 23, 1, 0, 0, 0, 88, 95, 96, 23, 1, 0, 0, 0, - 24, 96, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,101, 96, 23, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,168,101, 96, 23, 1, 0, 0, 0,200,100, 96, 23, 1, 0, 0, 0,152, 94, 96, 23, 1, 0, 0, 0, -120, 96, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,101, 96, 23, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 24,102, 96, 23, 1, 0, 0, 0, 56,101, 96, 23, 1, 0, 0, 0,120, 93, 96, 23, 1, 0, 0, 0, -120, 96, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,102, 96, 23, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,136,102, 96, 23, 1, 0, 0, 0,168,101, 96, 23, 1, 0, 0, 0,248, 94, 96, 23, 1, 0, 0, 0, -120, 96, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,102, 96, 23, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,248,102, 96, 23, 1, 0, 0, 0, 24,102, 96, 23, 1, 0, 0, 0, 88, 92, 96, 23, 1, 0, 0, 0, -120, 93, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,102, 96, 23, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,104,103, 96, 23, 1, 0, 0, 0,136,102, 96, 23, 1, 0, 0, 0, 56, 94, 96, 23, 1, 0, 0, 0, - 88, 95, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,103, 96, 23, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,216,103, 96, 23, 1, 0, 0, 0,248,102, 96, 23, 1, 0, 0, 0,152, 94, 96, 23, 1, 0, 0, 0, - 24, 96, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,103, 96, 23, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 72,104, 96, 23, 1, 0, 0, 0,104,103, 96, 23, 1, 0, 0, 0,216, 93, 96, 23, 1, 0, 0, 0, -184, 95, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,104, 96, 23, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,103, 96, 23, 1, 0, 0, 0,152, 94, 96, 23, 1, 0, 0, 0, -184, 95, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184,104, 96, 23, 1, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0, 88,108, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 93, 96, 23, 1, 0, 0, 0, -184, 92, 96, 23, 1, 0, 0, 0, 24, 93, 96, 23, 1, 0, 0, 0, 56, 94, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184,200, 96, 23, 1, 0, 0, 0,184,200, 96, 23, 1, 0, 0, 0,152,105, 96, 23, 1, 0, 0, 0, -248,106, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,152,105, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -248,106, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,248,106, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152,105, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, - 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, - 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 88,108, 96, 23, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,216,120, 96, 23, 1, 0, 0, 0,184,104, 96, 23, 1, 0, 0, 0, - 88, 92, 96, 23, 1, 0, 0, 0,248, 94, 96, 23, 1, 0, 0, 0,120, 96, 96, 23, 1, 0, 0, 0,120, 93, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,255, 4, 64, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,111, 96, 23, 1, 0, 0, 0,104,119, 96, 23, 1, 0, 0, 0, - 56,109, 96, 23, 1, 0, 0, 0,152,110, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 56,109, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,152,110, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,152,110, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,109, 96, 23, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, -112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, - 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, - 4, 0, 0, 4, 8, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,192, 0, 0, 0,248,111, 96, 23, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0,104,119, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -248,112, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 88,114, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 88,114, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,112, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 26, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184,115, 96, 23, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0,184,115, 96, 23, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, -161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,104,119, 96, 23, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248,111, 96, 23, 1, 0, 0, 0,248,112, 96, 23, 1, 0, 0, 0, 88,114, 96, 23, 1, 0, 0, 0, - 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, - 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,216,120, 96, 23, 1, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0, 40,144, 96, 23, 1, 0, 0, 0, 88,108, 96, 23, 1, 0, 0, 0,248, 94, 96, 23, 1, 0, 0, 0, -184, 95, 96, 23, 1, 0, 0, 0,152, 94, 96, 23, 1, 0, 0, 0,120, 96, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 83, 1, 0, 0, 8, 8,255, 4, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,127, 96, 23, 1, 0, 0, 0, 40,143, 96, 23, 1, 0, 0, 0,184,121, 96, 23, 1, 0, 0, 0, -216,125, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,184,121, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 24,123, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 96,191, 68, 0, 0,200, 65, 0, 96,191, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 24,123, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,120,124, 96, 23, 1, 0, 0, 0, -184,121, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, - 0, 0,121,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0, -249, 0,203, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4, 0, 0,254, 4, 0, 0, - 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,249, 0, 0, 0, 4, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -120,124, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,216,125, 96, 23, 1, 0, 0, 0, 24,123, 96, 23, 1, 0, 0, 0, - 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70, -172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 83, 1, 0, 0, 83, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,216,125, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,124, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, - 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, - 18, 0, 0, 0,248, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 56,127, 96, 23, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, -248,138, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,104,128, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,200,129, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,191, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 5, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,252, 5, 26, 0,252, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 5, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,252, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,200,129, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 40,131, 96, 23, 1, 0, 0, 0,104,128, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0,223, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0,113, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 40,131, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,136,132, 96, 23, 1, 0, 0, 0, -200,129, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, - 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, -120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 5, 0, 0, -111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, - 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -136,132, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,232,133, 96, 23, 1, 0, 0, 0, 40,131, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0, -163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 5, 0, 0,251, 5, 0, 0,111, 0, 0, 0,223, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,232,133, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,132, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 5, 0, 0,111, 0, 0, 0,223, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,252, 5,113, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72,135, 96, 23, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 72,135, 96, 23, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 79,145, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, - 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, -185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, -178,157,229, 62,241,130,233,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 14, 28, 97, 63, 9, 46,185, 62, 35, 44,185, 62, -145,180,109,188,119, 15,130, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, -112,240,191, 62,108,116, 85, 63, 80,184, 70,188, 0, 0, 46,180,159, 49,181,189,125,172, 46, 61, 7,213, 73, 62, 0, 64,143,180, -182,107, 25,196, 13,135,135, 67, 70, 12,167,195, 71, 0, 72,194,225, 56, 25, 68, 38, 90,135,195,237,212,166, 67, 84, 2, 72, 66, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, -178,157,229, 62,241,130,233,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 14, 28, 97, 63, 9, 46,185, 62, 35, 44,185, 62, -145,180,109,188,119, 15,130, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 13,114,156, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,248,138, 96, 23, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, - 40,143, 96, 23, 1, 0, 0, 0, 56,127, 96, 23, 1, 0, 0, 0,104,128, 96, 23, 1, 0, 0, 0,232,133, 96, 23, 1, 0, 0, 0, - 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, - 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,104,140, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,200,141, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,200,141, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104,140, 96, 23, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, -112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, - 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,192, 0, 0, 0, 40,143, 96, 23, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248,138, 96, 23, 1, 0, 0, 0,104,140, 96, 23, 1, 0, 0, 0,200,141, 96, 23, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 40,144, 96, 23, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,104,177, 96, 23, 1, 0, 0, 0,216,120, 96, 23, 1, 0, 0, 0, -184, 95, 96, 23, 1, 0, 0, 0,216, 93, 96, 23, 1, 0, 0, 0, 88, 95, 96, 23, 1, 0, 0, 0, 24, 96, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, 2, 2, 52, 2,102, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,150, 96, 23, 1, 0, 0, 0,104,176, 96, 23, 1, 0, 0, 0, - 8,145, 96, 23, 1, 0, 0, 0, 40,149, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 8,145, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,104,146, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 13, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 52, 2, 26, 0, 52, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 52, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,104,146, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -200,147, 96, 23, 1, 0, 0, 0, 8,145, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,157,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, - 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, - 0, 0, 0, 4, 6, 0,217, 0, 76, 1,200, 0, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,216, 0, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, 0, 76, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,200,147, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 40,149, 96, 23, 1, 0, 0, 0, -104,146, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 51, 2, 0, 0, -111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 40,149, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,147, 96, 23, 1, 0, 0, 0, - 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, - 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0, 90, 1, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, - 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,136,150, 96, 23, 1, 0, 0, 0, -164, 0, 0, 0, 1, 0, 0, 0, 72,156, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,151, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -184,151, 96, 23, 1, 0, 0, 0, 23, 1, 0, 0, 1, 0, 0, 0, 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 40,152, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,136,153, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 73, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 38, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 2, 26, 0,152, 2, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 2, 0, 0,225, 1, 0, 0,250, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,136,153, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,232,154, 96, 23, 1, 0, 0, 0, 40,152, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 67, - 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 67, 0,128, 4,196, 0, 0, 64,193, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,180, 0, 0, 0, - 18, 0, 0, 0, 23, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 8, 0, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,181, 0, 24, 2,181, 0, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180, 0, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,181, 0, 24, 2, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,232,154, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136,153, 96, 23, 1, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68,171,170, 67,195, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,104, 68,171,170, 67,195, 0, 0, 0, 0,210, 1, 0, 0,227, 1, 0, 0, 18, 0, 0, 0, 23, 2, 0, 0, - 0, 0, 0, 0,209, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,209, 1, 0, 0, 18, 0, 0, 0, 23, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0, 0, 0, 0, 2, - 0, 0, 2, 4, 4, 0,227, 1, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0,151, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -227, 1, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 0, 1, 0, 0, 72,156, 96, 23, 1, 0, 0, 0, 24, 1, 0, 0, 1, 0, 0, 0, 56,108,229, 3, 1, 0, 0, 0, -136,150, 96, 23, 1, 0, 0, 0, 40,152, 96, 23, 1, 0, 0, 0,232,154, 96, 23, 1, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,186,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -136,157, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,232,158, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,159, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 3, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,232,158, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 72,160, 96, 23, 1, 0, 0, 0,136,157, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, - 0,128,100,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0,172, 0, 0, 0,189, 0, 0, 0, - 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, - 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,189, 0,164, 3,172, 0,146, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 72,160, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232,158, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, - 0, 0,168,191, 0, 0, 20, 64, 0, 0,169,191, 0,128, 20, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 0, 0, 0, 0, 0, 0,164, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,159, 3, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 3,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 72, 33, 0, 0, 56,108,229, 3, 1, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0, 56,172, 96, 23, 1, 0, 0, 0, - 72,156, 96, 23, 1, 0, 0, 0,136,157, 96, 23, 1, 0, 0, 0, 72,160, 96, 23, 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, - 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,168,161, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8,163, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, - 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, - 26, 0,168, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, - 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 8,163, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104,164, 96, 23, 1, 0, 0, 0,168,161, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,104,164, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,200,165, 96, 23, 1, 0, 0, 0, 8,163, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, - 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,200,165, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 40,167, 96, 23, 1, 0, 0, 0,104,164, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, 2, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 40,167, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200,165, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, -111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,168, 96, 23, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, -136,168, 96, 23, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,226,225,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, - 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, -164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191, -253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181, -195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63, 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, - 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191, -253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, -214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,172,148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, - 56,172, 96, 23, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0,104,176, 96, 23, 1, 0, 0, 0, 56,108,229, 3, 1, 0, 0, 0, -168,161, 96, 23, 1, 0, 0, 0, 40,167, 96, 23, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,168,173, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8,175, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, - 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, - 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, -101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 8,175, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,173, 96, 23, 1, 0, 0, 0, - 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, -205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0,104,176, 96, 23, 1, 0, 0, 0, -175, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,172, 96, 23, 1, 0, 0, 0,168,173, 96, 23, 1, 0, 0, 0, - 8,175, 96, 23, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,104,177, 96, 23, 1, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 40,144, 96, 23, 1, 0, 0, 0, 24, 96, 96, 23, 1, 0, 0, 0, 88, 95, 96, 23, 1, 0, 0, 0, - 56, 94, 96, 23, 1, 0, 0, 0,152, 94, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, - 85, 1, 0, 0,186, 2, 0, 0, 8, 8,202, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200,183, 96, 23, 1, 0, 0, 0,184,199, 96, 23, 1, 0, 0, 0, 72,178, 96, 23, 1, 0, 0, 0,104,182, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 72,178, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,168,179, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 15, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 50, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 64, 50, 68, 0, 0,200, 65, - 0, 64, 50, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,202, 2, - 26, 0,202, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, - 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -168,179, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8,181, 96, 23, 1, 0, 0, 0, 72,178, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 8,181, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,104,182, 96, 23, 1, 0, 0, 0,168,179, 96, 23, 1, 0, 0, 0, 0, 0,112,195, 0, 0,112, 67, - 0, 0, 7,195, 0, 0, 7, 67,105, 42,145,196,105, 42,145, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, - 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 4, 0, 0,202, 2, 76, 1,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 76, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,104,182, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8,181, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, - 18, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, - 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 8, 0,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,240, 0, 0, 0,200,183, 96, 23, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0,136,195, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,248,184, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 88,186, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 88,186, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,184,187, 96, 23, 1, 0, 0, 0, -248,184, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, -255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, - 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0, -251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, - 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -184,187, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 24,189, 96, 23, 1, 0, 0, 0, 88,186, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 24,189, 96, 23, 1, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,120,190, 96, 23, 1, 0, 0, 0,184,187, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, - 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, - 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,120,190, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24,189, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,191, 96, 23, 1, 0, 0, 0, - 68, 65, 84, 65,104, 3, 0, 0,216,191, 96, 23, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63, -176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, - 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191, -222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, -224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, - 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191, -222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190, -237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 1, 0, 0,136,195, 96, 23, 1, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0,184,199, 96, 23, 1, 0, 0, 0, -200,183, 96, 23, 1, 0, 0, 0,248,184, 96, 23, 1, 0, 0, 0,120,190, 96, 23, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,248,196, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 88,198, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0, 88,198, 96, 23, 1, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248,196, 96, 23, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, - 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, - 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4, -122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, -127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, -184,199, 96, 23, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,195, 96, 23, 1, 0, 0, 0, -248,196, 96, 23, 1, 0, 0, 0, 88,198, 96, 23, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 83, 67, 0, 0,104, 6, 0, 0, 56,186,171, 3, 1, 0, 0, 0, -157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99,101,110,101, 0,116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 72,201, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,160,214, 3, 1, 0, 0, 0, - 56,216, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,203, 96, 23, 1, 0, 0, 0, - 88,204, 96, 23, 1, 0, 0, 0,120,203, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200,204, 96, 23, 1, 0, 0, 0,120,146, 81, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, -100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0,100, 0,141, 0, 32, 3, 88, 2, 8, 0, - 8, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40,210, 96, 23, 1, 0, 0, 0, 40,210, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, 0, 0,200, 66, 0, 0,128, 63, - 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 5, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63, -205,204, 76, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 0, 16, 0, 0, 0,128, 63, 0, 0,128, 63,173, 2, 95, 0,154,153,217, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, 68, 69, 82, 95, - 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63, -102,166,171, 67, 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 57, 92, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248, 96, 88, 23, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205,204, 28, 65, 0, 0, 0, 0, 32, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 5, 0, 60, 0, 5, 0, 1, 0, 5, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4, -205,204,204, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195,245, 28,193, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 72,201, 96, 23, 1, 0, 0, 0, - 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232,201, 96, 23, 1, 0, 0, 0,232,201, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,232,201, 96, 23, 1, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,110,101,116,119,111,114,107, 95,114,101,110,100, -101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136,202, 96, 23, 1, 0, 0, 0,136,202, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0,136,202, 96, 23, 1, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,101,114,118,101,114, 95, 97,100,100,114,101,115,115, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,203, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, - 40,203, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 91,100,101,102, 97,117,108,116, 93, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,120,203, 96, 23, 1, 0, 0, 0,133, 0, 0, 0, 1, 0, 0, 0,232,203, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 4, 2,130, 1, 56,212,171, 3, 1, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,232,203, 96, 23, 1, 0, 0, 0,133, 0, 0, 0, 1, 0, 0, 0, 88,204, 96, 23, 1, 0, 0, 0,120,203, 96, 23, - 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0,154, 2,104, 2, 56, 70,170, 3, 1, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0, 88,204, 96, 23, 1, 0, 0, 0,133, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,203, 96, 23, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,114, 0,200, 1, 56,160,214, 3, 1, 0, 0, 0, 68, 65, 84, 65, -184, 1, 0, 0,200,204, 96, 23, 1, 0, 0, 0,153, 0, 0, 0, 1, 0, 0, 0,200,206, 96, 23, 1, 0, 0, 0,200,207, 96, 23, - 1, 0, 0, 0,200,208, 96, 23, 1, 0, 0, 0, 0, 0,128, 63, 1, 0, 1, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, - 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, 32, 0, 32, 0, 32, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,200,209, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 2, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 10,215, 35, 60,205,204,204, 61, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 0,205,204,204, 61,205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, - 72,225,122, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 0, 0, 0,200,206, 96, 23, 1, 0, 0, 0,152, 0, 0, 0, - 1, 0, 0, 0, 72,207, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, - 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 56, 0, 0, 0, 72,207, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,104, 25, 97, 23, - 1, 0, 0, 0,120,237, 96, 23, 1, 0, 0, 0,168, 48, 97, 23, 1, 0, 0, 0, 72, 29, 97, 23, 1, 0, 0, 0,168,242, 96, 23, - 1, 0, 0, 0,136, 21, 97, 23, 1, 0, 0, 0, 72,254, 96, 23, 1, 0, 0, 0, 68, 65, 84, 65, 64, 0, 0, 0,200,207, 96, 23, - 1, 0, 0, 0,152, 0, 0, 0, 1, 0, 0, 0, 72,208, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 0, 0, 0, 72,208, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0,104, 25, 97, 23, 1, 0, 0, 0,120,237, 96, 23, 1, 0, 0, 0,168, 48, 97, 23, 1, 0, 0, 0, 72, 29, 97, 23, - 1, 0, 0, 0,168,242, 96, 23, 1, 0, 0, 0,136, 21, 97, 23, 1, 0, 0, 0, 72,254, 96, 23, 1, 0, 0, 0, 68, 65, 84, 65, - 56, 0, 0, 0,200,208, 96, 23, 1, 0, 0, 0,151, 0, 0, 0, 1, 0, 0, 0, 72,209, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,100,100,128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 0, 0, 0, 72,209, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 40, 2, 97, 23, 1, 0, 0, 0,232, 40, 97, 23, 1, 0, 0, 0, 40, 33, 97, 23, 1, 0, 0, 0,200, 13, 97, 23, - 1, 0, 0, 0,232, 9, 97, 23, 1, 0, 0, 0,168, 17, 97, 23, 1, 0, 0, 0, 8, 6, 97, 23, 1, 0, 0, 0,136,246, 96, 23, - 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200,209, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 40, 2, 97, 23, - 1, 0, 0, 0,200, 44, 97, 23, 1, 0, 0, 0,104,250, 96, 23, 1, 0, 0, 0, 8, 37, 97, 23, 1, 0, 0, 0, 68, 65, 84, 65, - 88, 0, 0, 0, 40,210, 96, 23, 1, 0, 0, 0,139, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82,101,110,100,101,114, 76, 97,121,101,114, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 67, 65, 0, 0,152, 0, 0, 0,200,210, 96, 23, 1, 0, 0, 0, 29, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63,205,204,204, 61, - 0, 0,200, 66, 0, 0, 12, 66,161, 14,234, 64, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, -248, 1, 0, 0,168,211, 96, 23, 1, 0, 0, 0, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 83,112,111,116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,247,255,239, 65, 0, 0,150, 66,154,153, 25, 62, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,232,213, 96, 23, 1, 0, 0, 0, 2, 0, 0, 0, 46, 26,128, 63, 25, 4,240, 65, - 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 11, 3, 0, - 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111, 18,131, 58, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,200,215, 96, 23, 1, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,232,213, 96, 23, 1, 0, 0, 0, 82, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63,104,215, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,215, 96, 23, 1, 0, 0, 0, 80, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,215, 96, 23, - 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0,232, 1, 0, 0, 56,216, 96, 23, - 1, 0, 0, 0,132, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,114, 99, 80, 61,114, 99, 80, 61,114, 99, 80, 61, 0, 0, 0, 0,199, 54, 36, 60,199, 54, 36, 60,199, 54, 36, 60, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0,128, 0, 5, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 61, 0, 0, 5, 0, 3, 0, 0, 0, 10,215,163, 59, 0, 0, 0, 0, 0, 0,128, 62, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,218, 96, 23, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,218, 96, 23, - 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 88, 0, 0,176, 0, 0, 0,216,218, 96, 23, - 1, 0, 0, 0, 27, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 88, 84,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 1, 0, 0, 0,200,219, 96, 23, 1, 0, 0, 0,200,219, 96, 23, 1, 0, 0, 0,200,219, 96, 23, 1, 0, 0, 0,200,219, 96, 23, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 92,179, 3, - 1, 0, 0, 0,255,255,255,255, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,200,219, 96, 23, 1, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 56,220, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 69, 82, 70, 68, 65, 84, 65, - 4, 0, 0, 0, 56,220, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 79, 66, 0, 0,208, 4, 0, 0, - 56,160,214, 3, 1, 0, 0, 0,121, 0, 0, 0, 1, 0, 0, 0, 56,212,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, - 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,210, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, - 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222,149, 47, 63, - 53, 70, 58, 63,222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63, -149, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 1, 0,128, 63, - 1, 0,128, 51, 1, 0, 0,179, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0,128, 63, 1, 0,128, 51, 0, 0, 0, 0, 2, 0, 0,179, - 2, 0, 0,167, 1, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 53, 1, 0, 0, 41, 1, 0,128,168, 0, 0,128, 63, 0, 0,128, 63, -157,190,215, 49,167,170, 4, 52, 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, 33, 69, 15, 51, 0, 0, 0,128, 73,254, 67, 51, -243, 97,106, 49, 0, 0,128, 63, 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, 0, 0,128, 53, 0, 0,128, 63, 1, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,187,225, 16, 63, 0, 0,128, 63,205,204,204, 62, -237, 54, 32, 63, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 79, 66, 0, 0,208, 4, 0, 0, 56,212,171, 3, 1, 0, 0, 0,121, 0, 0, 0, 1, 0, 0, 0, 56, 70,170, 3, 1, 0, 0, 0, - 56,160,214, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112, -104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,123, 81, 26, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,228, 96, 23, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,220, 96, 23, 1, 0, 0, 0, -216,220, 96, 23, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63,222,149, 47, 63, 52, 70, 58, 63,179, 56, 49,188, 0, 0, 0,128, 86,126,162,190,227,251,159, 62, 56, 53,101, 63, - 0, 0, 0,128, 7,165, 39, 63,149, 84, 28,191, 50,247,227, 62, 0, 0, 0,128,110,101,239, 64,151, 62,208,192, 77,255,170, 64, - 0, 0,128, 63, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, 79, 66, 0, 0, 7, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, - 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,108, 81, 26, 1, 0, 0, 0,200,115, 81, 26, 1, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0,136,220, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,216,220, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 79, 66, 0, 0,208, 4, 0, 0, 56, 70,170, 3, 1, 0, 0, 0,121, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 56,212,171, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97, -109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,211, 96, 23, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229,123, 38, 63, 87, 43, 98, 61,229,229,238, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 54,236,148,190, 25,134,116, 63,236, 13, 98,189, 0, 0, 0, 0,221,102, 69,191, 57,174, 76,190, - 34,194, 26, 63, 0, 0, 0, 0, 37,255, 16, 63,241,161, 95, 62,164,111, 75, 63, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63, -112,236,188, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 1, 0,128, 50, 0, 0, 0,179, 0, 0, 0, 0, 1, 0,128, 50, 1, 0,128, 63, - 1, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 39, 1, 0, 0, 52, - 1, 0,128, 39, 0, 0,128, 63, 53,236,148,190,222,102, 69,191, 37,255, 16, 63, 0, 0, 0,128, 24,134,116, 63, 57,174, 76,190, -240,161, 95, 62, 0, 0, 0,128,235, 13, 98,189, 34,194, 26, 63,166,111, 75, 63, 0, 0, 0,128,208, 19, 13, 63,234, 65,102,190, - 10, 10,231,192, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 68, 0, 79, 66, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63, -169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0, 32, 3, 0, 0, 40,221, 96, 23, 1, 0, 0, 0, 44, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,148, 26, 63,111,148, 26, 63, -111,148, 26, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, -205,204, 76, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 50, 0,205,204, 76, 62, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 18, 0, 10,215,163, 59, - 10,215,163, 59, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 4, 0, 67, 0, 0, 3, 67, 0, 0, 3, 1, 0, 4, 0, 12, 0, 4, 0, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61, 0, 0, 0, 63,205,204,204, 61, -205,204,204, 61, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,136,224, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,225, 96, 23, 1, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -111,148, 26, 63,111,148, 26, 63,111,148, 26, 63,205,204, 76, 61,205,204,204, 61,102,102,166, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0,136,224, 96, 23, 1, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,226, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 40, 0, 0, 0,216,225, 96, 23, 1, 0, 0, 0, 19, 0, 0, 0, - 1, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 56,218,179, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, 56,218,179, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 51, 2, 2, 2, 51, 6, 6, 6,153, - 6, 6, 6,153, 6, 6, 6,153, 4, 4, 4,102, 3, 3, 3,102, 2, 2, 2, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 51, 8, 8, 8,153, 11, 11, 11,204, 13, 13, 13,255, 12, 12, 12,255, 12, 12, 12,255, - 11, 11, 11,255, 10, 10, 10,255, 10, 10, 10,255, 9, 9, 9,255, 9, 9, 9,255, 9, 9, 9,255, 4, 4, 4,102, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 3, 3, 51, 10, 10, 10,153, 18, 18, 18,255, 20, 20, 20,255, 22, 22, 22,255, 23, 23, 23,255, 22, 22, 22,255, 20, 20, 20,255, - 19, 19, 19,255, 16, 16, 16,255, 14, 14, 14,255, 11, 11, 11,255, 10, 10, 10,255, 9, 9, 9,255, 9, 9, 9,255, 9, 9, 9,255, - 8, 8, 8,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7,102, - 19, 19, 19,204, 27, 27, 27,255, 31, 31, 31,255, 32, 32, 32,255, 33, 33, 33,255, 33, 33, 33,255, 31, 31, 31,255, 30, 30, 30,255, - 27, 27, 27,255, 25, 25, 25,255, 22, 22, 22,255, 19, 19, 19,255, 16, 16, 16,255, 12, 12, 12,255, 10, 10, 10,255, 10, 10, 10,255, - 10, 10, 10,255, 10, 10, 10,255, 4, 4, 4,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13,153, 29, 29, 29,255, - 37, 37, 37,255, 40, 40, 40,255, 42, 42, 42,255, 42, 42, 42,255, 43, 43, 43,255, 41, 41, 41,255, 40, 40, 40,255, 38, 38, 38,255, - 36, 36, 36,255, 33, 33, 33,255, 30, 30, 30,255, 27, 27, 27,255, 24, 24, 24,255, 20, 20, 20,255, 16, 16, 16,255, 12, 12, 12,255, - 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255, 7, 7, 7,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13,102, 37, 37, 37,255, 44, 44, 44,255, - 48, 48, 48,255, 50, 50, 50,255, 51, 51, 51,255, 51, 51, 51,255, 50, 50, 50,255, 49, 49, 49,255, 48, 48, 48,255, 45, 45, 45,255, - 43, 43, 43,255, 41, 41, 41,255, 37, 37, 37,255, 34, 34, 34,255, 31, 31, 31,255, 28, 28, 28,255, 24, 24, 24,255, 20, 20, 20,255, - 15, 15, 15,255, 11, 11, 11,255, 10, 10, 10,255, 11, 11, 11,255, 7, 7, 7,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13,102, 41, 41, 41,255, 50, 50, 50,255, 54, 54, 54,255, - 57, 57, 57,255, 58, 58, 58,255, 59, 59, 59,255, 59, 59, 59,255, 58, 58, 58,255, 57, 57, 57,255, 55, 55, 55,255, 53, 53, 53,255, - 51, 51, 51,255, 48, 48, 48,255, 45, 45, 45,255, 41, 41, 41,255, 38, 38, 38,255, 35, 35, 35,255, 31, 31, 31,255, 27, 27, 27,255, - 23, 23, 23,255, 17, 17, 17,255, 12, 12, 12,255, 11, 11, 11,255, 11, 11, 11,255, 5, 5, 5,102, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 36, 36,204, 53, 53, 53,255, 59, 59, 59,255, 63, 63, 63,255, - 65, 65, 65,255, 66, 66, 66,255, 66, 66, 66,255, 66, 66, 66,255, 65, 65, 65,255, 64, 64, 64,255, 62, 62, 62,255, 60, 60, 60,255, - 57, 57, 57,255, 54, 54, 54,255, 51, 51, 51,255, 48, 48, 48,255, 44, 44, 44,255, 41, 41, 41,255, 37, 37, 37,255, 33, 33, 33,255, - 29, 29, 29,255, 24, 24, 24,255, 19, 19, 19,255, 13, 13, 13,255, 11, 11, 11,255, 12, 12, 12,255, 3, 3, 3, 51, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19,102, 56, 56, 56,255, 64, 64, 64,255, 68, 68, 68,255, 71, 71, 71,255, - 73, 73, 73,255, 74, 74, 74,255, 74, 74, 74,255, 73, 73, 73,255, 72, 72, 72,255, 71, 71, 71,255, 69, 69, 69,255, 67, 67, 67,255, - 64, 64, 64,255, 61, 61, 61,255, 58, 58, 58,255, 54, 54, 54,255, 50, 50, 50,255, 47, 47, 47,255, 43, 43, 43,255, 39, 39, 39,255, - 34, 34, 34,255, 30, 30, 30,255, 25, 25, 25,255, 19, 19, 19,255, 13, 13, 13,255, 12, 12, 12,255, 10, 10, 10,204, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 54, 54,255, 66, 66, 66,255, 72, 72, 72,255, 77, 77, 77,255, 79, 79, 79,255, - 81, 81, 81,255, 81, 81, 81,255, 81, 81, 81,255, 80, 80, 80,255, 79, 79, 79,255, 77, 77, 77,255, 75, 75, 75,255, 73, 73, 73,255, - 70, 70, 70,255, 67, 67, 67,255, 63, 63, 63,255, 60, 60, 60,255, 56, 56, 56,255, 52, 52, 52,255, 49, 49, 49,255, 44, 44, 44,255, - 40, 40, 40,255, 35, 35, 35,255, 30, 30, 30,255, 24, 24, 24,255, 18, 18, 18,255, 12, 12, 12,255, 12, 12, 12,255, 6, 6, 6,102, - 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 22,102, 67, 67, 67,255, 76, 76, 76,255, 81, 81, 81,255, 84, 84, 84,255, 87, 87, 87,255, - 88, 88, 88,255, 88, 88, 88,255, 88, 88, 88,255, 87, 87, 87,255, 86, 86, 86,255, 84, 84, 84,255, 82, 82, 82,255, 79, 79, 79,255, - 76, 76, 76,255, 73, 73, 73,255, 69, 69, 69,255, 65, 65, 65,255, 62, 62, 62,255, 58, 58, 58,255, 54, 54, 54,255, 49, 49, 49,255, - 45, 45, 45,255, 40, 40, 40,255, 35, 35, 35,255, 29, 29, 29,255, 23, 23, 23,255, 16, 16, 16,255, 12, 12, 12,255, 12, 12, 12,204, - 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49,204, 76, 76, 76,255, 84, 84, 84,255, 89, 89, 89,255, 92, 92, 92,255, 94, 94, 94,255, - 95, 95, 95,255, 95, 95, 95,255, 95, 95, 95,255, 94, 94, 94,255, 93, 93, 93,255, 91, 91, 91,255, 88, 88, 88,255, 85, 85, 85,255, - 82, 82, 82,255, 79, 79, 79,255, 75, 75, 75,255, 71, 71, 71,255, 67, 67, 67,255, 63, 63, 63,255, 59, 59, 59,255, 55, 55, 55,255, - 50, 50, 50,255, 45, 45, 45,255, 40, 40, 40,255, 34, 34, 34,255, 28, 28, 28,255, 21, 21, 21,255, 13, 13, 13,255, 14, 14, 14,255, - 0, 0, 0, 0, 14, 14, 14,102, 70, 70, 70,255, 85, 85, 85,255, 92, 92, 92,255, 97, 97, 97,255,100,100,100,255,102,102,102,255, -102,102,102,255,103,103,103,255,102,102,102,255,101,101,101,255, 99, 99, 99,255, 97, 97, 97,255, 94, 94, 94,255, 91, 91, 91,255, - 88, 88, 88,255, 84, 84, 84,255, 81, 81, 81,255, 77, 77, 77,255, 72, 72, 72,255, 68, 68, 68,255, 64, 64, 64,255, 59, 59, 59,255, - 55, 55, 55,255, 50, 50, 50,255, 44, 44, 44,255, 39, 39, 39,255, 32, 32, 32,255, 25, 25, 25,255, 17, 17, 17,255, 13, 13, 13,255, - 7, 7, 7,102, 24, 24, 24,102, 80, 80, 80,255, 93, 93, 93,255,100,100,100,255,104,104,104,255,107,107,107,255,109,109,109,255, -109,109,109,255,109,109,109,255,109,109,109,255,107,107,107,255,106,106,106,255,103,103,103,255,100,100,100,255, 97, 97, 97,255, - 94, 94, 94,255, 90, 90, 90,255, 86, 86, 86,255, 82, 82, 82,255, 77, 77, 77,255, 73, 73, 73,255, 69, 69, 69,255, 64, 64, 64,255, - 59, 59, 59,255, 54, 54, 54,255, 49, 49, 49,255, 43, 43, 43,255, 36, 36, 36,255, 29, 29, 29,255, 21, 21, 21,255, 14, 14, 14,255, - 10, 10, 10,153, 29, 29, 29,102, 89, 89, 89,255,100,100,100,255,107,107,107,255,112,112,112,255,114,114,114,255,116,116,116,255, -116,116,116,255,116,116,116,255,115,115,115,255,114,114,114,255,112,112,112,255,110,110,110,255,107,107,107,255,104,104,104,255, -100,100,100,255, 96, 96, 96,255, 92, 92, 92,255, 87, 87, 87,255, 83, 83, 83,255, 78, 78, 78,255, 73, 73, 73,255, 68, 68, 68,255, - 63, 63, 63,255, 58, 58, 58,255, 52, 52, 52,255, 46, 46, 46,255, 40, 40, 40,255, 33, 33, 33,255, 24, 24, 24,255, 17, 17, 17,255, - 13, 13, 13,204, 46, 46, 46,153, 95, 95, 95,255,107,107,107,255,114,114,114,255,118,118,118,255,121,121,121,255,122,122,122,255, -123,123,123,255,123,123,123,255,122,122,122,255,122,122,122,255,120,120,120,255,118,118,118,255,114,114,114,255,110,110,110,255, -106,106,106,255,101,101,101,255, 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255, 83, 83, 83,255, 78, 78, 78,255, 73, 73, 73,255, - 68, 68, 68,255, 62, 62, 62,255, 56, 56, 56,255, 50, 50, 50,255, 44, 44, 44,255, 36, 36, 36,255, 28, 28, 28,255, 19, 19, 19,255, - 12, 12, 12,204, 47, 47, 47,153,101,101,101,255,113,113,113,255,120,120,120,255,125,125,125,255,127,127,127,255,129,129,129,255, -130,130,130,255,130,130,130,255,131,131,131,255,131,131,131,255,131,131,131,255,129,129,129,255,125,125,125,255,120,120,120,255, -113,113,113,255,108,108,108,255,103,103,103,255, 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255, 82, 82, 82,255, 77, 77, 77,255, - 72, 72, 72,255, 66, 66, 66,255, 60, 60, 60,255, 54, 54, 54,255, 47, 47, 47,255, 39, 39, 39,255, 31, 31, 31,255, 22, 22, 22,255, - 12, 12, 12,204, 48, 48, 48,153,106,106,106,255,118,118,118,255,126,126,126,255,131,131,131,255,134,134,134,255,135,135,135,255, -137,137,137,255,138,138,138,255,142,142,142,255,147,147,147,255,149,149,149,255,148,148,148,255,142,142,142,255,133,133,133,255, -124,124,124,255,115,115,115,255,108,108,108,255,102,102,102,255, 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255, 81, 81, 81,255, - 75, 75, 75,255, 69, 69, 69,255, 63, 63, 63,255, 57, 57, 57,255, 49, 49, 49,255, 42, 42, 42,255, 33, 33, 33,255, 24, 24, 24,255, - 9, 9, 9,153, 32, 32, 32,102,109,109,109,255,123,123,123,255,131,131,131,255,136,136,136,255,140,140,140,255,142,142,142,255, -144,144,144,255,148,148,148,255,156,156,156,255,168,168,168,255,176,176,176,255,177,177,177,255,168,168,168,255,153,153,153,255, -137,137,137,255,124,124,124,255,114,114,114,255,107,107,107,255,101,101,101,255, 96, 96, 96,255, 90, 90, 90,255, 85, 85, 85,255, - 79, 79, 79,255, 72, 72, 72,255, 66, 66, 66,255, 59, 59, 59,255, 52, 52, 52,255, 44, 44, 44,255, 35, 35, 35,255, 26, 26, 26,255, - 10, 10, 10,153, 17, 17, 17, 51,110,110,110,255,127,127,127,255,136,136,136,255,142,142,142,255,145,145,145,255,148,148,148,255, -151,151,151,255,159,159,159,255,174,174,174,255,195,195,195,255,212,212,212,255,216,216,216,255,204,204,204,255,179,179,179,255, -154,154,154,255,135,135,135,255,121,121,121,255,112,112,112,255,106,106,106,255, 99, 99, 99,255, 94, 94, 94,255, 88, 88, 88,255, - 82, 82, 82,255, 76, 76, 76,255, 69, 69, 69,255, 62, 62, 62,255, 54, 54, 54,255, 46, 46, 46,255, 37, 37, 37,255, 26, 26, 26,255, - 6, 6, 6,102, 0, 0, 0, 0,107,107,107,255,130,130,130,255,140,140,140,255,146,146,146,255,150,150,150,255,153,153,153,255, -158,158,158,255,169,169,169,255,191,191,191,255,219,219,219,255,246,246,246,255,254,254,254,255,237,237,237,255,204,204,204,255, -170,170,170,255,145,145,145,255,127,127,127,255,117,117,117,255,110,110,110,255,103,103,103,255, 97, 97, 97,255, 91, 91, 91,255, - 85, 85, 85,255, 78, 78, 78,255, 71, 71, 71,255, 64, 64, 64,255, 55, 55, 55,255, 47, 47, 47,255, 37, 37, 37,255, 25, 25, 25,255, - 3, 3, 3, 51, 0, 0, 0, 0, 65, 65, 65,153,129,129,129,255,142,142,142,255,149,149,149,255,154,154,154,255,157,157,157,255, -163,163,163,255,176,176,176,255,199,199,199,255,232,232,232,255,255,255,255,255,255,255,255,255,255,255,255,255,220,220,220,255, -181,181,181,255,151,151,151,255,132,132,132,255,121,121,121,255,113,113,113,255,106,106,106,255,100,100,100,255, 94, 94, 94,255, - 87, 87, 87,255, 80, 80, 80,255, 73, 73, 73,255, 65, 65, 65,255, 57, 57, 57,255, 48, 48, 48,255, 38, 38, 38,255, 16, 16, 16,153, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 21, 51,127,127,127,255,143,143,143,255,152,152,152,255,157,157,157,255,161,161,161,255, -165,165,165,255,177,177,177,255,198,198,198,255,227,227,227,255,253,253,253,255,255,255,255,255,250,250,250,255,217,217,217,255, -181,181,181,255,153,153,153,255,135,135,135,255,124,124,124,255,117,117,117,255,110,110,110,255,103,103,103,255, 96, 96, 96,255, - 89, 89, 89,255, 82, 82, 82,255, 74, 74, 74,255, 66, 66, 66,255, 57, 57, 57,255, 48, 48, 48,255, 35, 35, 35,255, 10, 10, 10,153, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 93, 93,204,141,141,141,255,153,153,153,255,159,159,159,255,163,163,163,255, -167,167,167,255,174,174,174,255,188,188,188,255,209,209,209,255,228,228,228,255,234,234,234,255,224,224,224,255,200,200,200,255, -173,173,173,255,151,151,151,255,136,136,136,255,127,127,127,255,119,119,119,255,112,112,112,255,105,105,105,255, 98, 98, 98,255, - 91, 91, 91,255, 83, 83, 83,255, 75, 75, 75,255, 66, 66, 66,255, 57, 57, 57,255, 46, 46, 46,255, 24, 24, 24,204, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 20, 20, 51,134,134,134,255,151,151,151,255,160,160,160,255,164,164,164,255, -167,167,167,255,171,171,171,255,178,178,178,255,189,189,189,255,200,200,200,255,202,202,202,255,195,195,195,255,180,180,180,255, -163,163,163,255,148,148,148,255,137,137,137,255,129,129,129,255,121,121,121,255,114,114,114,255,107,107,107,255, 99, 99, 99,255, - 91, 91, 91,255, 83, 83, 83,255, 74, 74, 74,255, 65, 65, 65,255, 55, 55, 55,255, 41, 41, 41,255, 7, 7, 7, 51, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49,102,145,145,145,255,157,157,157,255,164,164,164,255, -167,167,167,255,170,170,170,255,172,172,172,255,176,176,176,255,180,180,180,255,179,179,179,255,174,174,174,255,165,165,165,255, -155,155,155,255,145,145,145,255,137,137,137,255,130,130,130,255,122,122,122,255,115,115,115,255,107,107,107,255, 99, 99, 99,255, - 91, 91, 91,255, 82, 82, 82,255, 73, 73, 73,255, 63, 63, 63,255, 50, 50, 50,255, 22, 22, 22,153, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 78, 78,153,149,149,149,255,160,160,160,255, -166,166,166,255,168,168,168,255,169,169,169,255,170,170,170,255,169,169,169,255,167,167,167,255,164,164,164,255,158,158,158,255, -151,151,151,255,144,144,144,255,137,137,137,255,130,130,130,255,123,123,123,255,115,115,115,255,106,106,106,255, 98, 98, 98,255, - 89, 89, 89,255, 80, 80, 80,255, 70, 70, 70,255, 58, 58, 58,255, 27, 27, 27,153, 3, 3, 3, 51, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 80, 80,153,150,150,150,255, -160,160,160,255,165,165,165,255,167,167,167,255,167,167,167,255,166,166,166,255,163,163,163,255,160,160,160,255,155,155,155,255, -149,149,149,255,143,143,143,255,137,137,137,255,129,129,129,255,121,121,121,255,113,113,113,255,105,105,105,255, 96, 96, 96,255, - 86, 86, 86,255, 76, 76, 76,255, 63, 63, 63,255, 38, 38, 38,204, 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 78, 78,153, -147,147,147,255,157,157,157,255,161,161,161,255,163,163,163,255,162,162,162,255,160,160,160,255,157,157,157,255,152,152,152,255, -147,147,147,255,141,141,141,255,135,135,135,255,127,127,127,255,119,119,119,255,110,110,110,255,101,101,101,255, 91, 91, 91,255, - 80, 80, 80,255, 66, 66, 66,255, 32, 32, 32,153, 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,134,134,134,255,148,148,148,255,154,154,154,255,155,155,155,255,154,154,154,255,152,152,152,255,147,147,147,255, -142,142,142,255,136,136,136,255,130,130,130,255,122,122,122,255,114,114,114,255,104,104,104,255, 93, 93, 93,255, 81, 81, 81,255, - 54, 54, 54,204, 22, 22, 22,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 73, 73, 73,153,103,103,103,204,137,137,137,255,140,140,140,255,140,140,140,255,137,137,137,255, -133,133,133,255,127,127,127,255,120,120,120,255,113,113,113,255,102,102,102,255, 91, 91, 91,255, 64, 64, 64,204, 28, 28, 28,102, - 6, 6, 6, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 46, 46,102, 72, 72, 72,153, 72, 72, 72,153, - 92, 92, 92,204, 88, 88, 88,204, 81, 81, 81,204, 54, 54, 54,153, 35, 35, 35,102, 16, 16, 16, 51, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 0, 0,104, 1, 0, 0, 72,226, 96, 23, 1, 0, 0, 0, 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 84,101, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 5, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,205,204,204, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,248,227, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,227, 96, 23, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 56,142,229, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, 56,142,229, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0, -176, 1, 0, 0,104,228, 96, 23, 1, 0, 0, 0, 54, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 67,117, 98,101, 0,112,104,101,114,101, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,230, 96, 23, 1, 0, 0, 0,184,236, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,232, 96, 23, 1, 0, 0, 0,184,170, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,230, 96, 23, 1, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,233, 96, 23, 1, 0, 0, 0, 1, 0, 0, 0, - 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,235, 96, 23, - 1, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, - 0, 0, 0,180, 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 67, 0, 0, 0, 30, 0, 4, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0, 88,230, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 40,221, 96, 23, - 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0,168,230, 96, 23, 1, 0, 0, 0, 87, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,232, 96, 23, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, 88,232, 96, 23, 1, 0, 0, 0, 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63, -255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191, -230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191,253,255,127,191, 0, 0,128,191, 26,182, 26,182, 26,182,255,127, - 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63, -247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, 1, 0, 0, 0,245,255,127, 63, 5, 0,128,191, 0, 0,128, 63, -230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191,250,255,127,191, 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, - 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73,230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65, -104, 1, 0, 0, 88,233, 96, 23, 1, 0, 0, 0, 87, 1, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,170, 91, 23, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -144, 0, 0, 0,184,170, 91, 23, 1, 0, 0, 0, 57, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, - 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 35, 0, 68, 65, 84, 65,104, 1, 0, 0, 8,235, 96, 23, 1, 0, 0, 0, 87, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,236, 96, 23, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,120, 0, 0, 0,184,236, 96, 23, 1, 0, 0, 0, 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 0, 0, - 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, - 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, 66, 82, 0, 0,168, 1, 0, 0,120,237, 96, 23, - 1, 0, 0, 0, 86, 1, 0, 0, 1, 0, 0, 0,168,242, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,184,240, 96, 23, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 1, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0,224,237, 96, 23, - 1, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 64, 1, 0, 0,184,240, 96, 23, 1, 0, 0, 0, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61, 56,242, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,242, 96, 23, - 1, 0, 0, 0, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, - 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, -168, 1, 0, 0,168,242, 96, 23, 1, 0, 0, 0, 86, 1, 0, 0, 1, 0, 0, 0,136,246, 96, 23, 1, 0, 0, 0,120,237, 96, 23, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,117,114, 0, 46, 48, 48, 52, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,152,244, 96, 23, 1, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 4, 0, 0, 68, 65, 84, 65, - 16, 1, 0, 0, 16,243, 96, 23, 1, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,152,244, 96, 23, 1, 0, 0, 0, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, - 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 24,246, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 48, 0, 0, 0, 24,246, 96, 23, 1, 0, 0, 0, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,136,246, 96, 23, 1, 0, 0, 0, 86, 1, 0, 0, 1, 0, 0, 0,104,250, 96, 23, - 1, 0, 0, 0,168,242, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, - 97,121, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,120,248, 96, 23, - 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 8, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0,240,246, 96, 23, 1, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,120,248, 96, 23, 1, 0, 0, 0, 82, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,248,249, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,248,249, 96, 23, 1, 0, 0, 0, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,104,250, 96, 23, 1, 0, 0, 0, 86, 1, 0, 0, - 1, 0, 0, 0, 72,254, 96, 23, 1, 0, 0, 0,136,246, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 88,252, 96, 23, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 1, 0, 3, 0, 68, 65, 84, 65, 16, 1, 0, 0,208,250, 96, 23, 1, 0, 0, 0, 32, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 88,252, 96, 23, - 1, 0, 0, 0, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,216,253, 96, 23, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,216,253, 96, 23, 1, 0, 0, 0, 80, 1, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, - 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, 72,254, 96, 23, - 1, 0, 0, 0, 86, 1, 0, 0, 1, 0, 0, 0, 40, 2, 97, 23, 1, 0, 0, 0,104,250, 96, 23, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, 0, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 56, 0, 97, 23, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 6, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0,176,254, 96, 23, - 1, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 64, 1, 0, 0, 56, 0, 97, 23, 1, 0, 0, 0, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61,184, 1, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,184, 1, 97, 23, - 1, 0, 0, 0, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, - 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, -168, 1, 0, 0, 40, 2, 97, 23, 1, 0, 0, 0, 86, 1, 0, 0, 1, 0, 0, 0, 8, 6, 97, 23, 1, 0, 0, 0, 72,254, 96, 23, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 24, 4, 97, 23, 1, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 0, 0, 68, 65, 84, 65, - 16, 1, 0, 0,144, 2, 97, 23, 1, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 24, 4, 97, 23, 1, 0, 0, 0, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, - 54,189,194, 61, 14,215,126,191, 46,189,194, 61,152, 5, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 48, 0, 0, 0,152, 5, 97, 23, 1, 0, 0, 0, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, 8, 6, 97, 23, 1, 0, 0, 0, 86, 1, 0, 0, 1, 0, 0, 0,232, 9, 97, 23, - 1, 0, 0, 0, 40, 2, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,108, - 97,116,116,101,110, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,248, 7, 97, 23, - 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 7, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0,112, 6, 97, 23, 1, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,248, 7, 97, 23, 1, 0, 0, 0, 82, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,120, 9, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,120, 9, 97, 23, 1, 0, 0, 0, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,232, 9, 97, 23, 1, 0, 0, 0, 86, 1, 0, 0, - 1, 0, 0, 0,200, 13, 97, 23, 1, 0, 0, 0, 8, 6, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 71,114, 97, 98, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,216, 11, 97, 23, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 5, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 80, 10, 97, 23, 1, 0, 0, 0, 32, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,216, 11, 97, 23, - 1, 0, 0, 0, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 88, 13, 97, 23, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 88, 13, 97, 23, 1, 0, 0, 0, 80, 1, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, - 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,200, 13, 97, 23, - 1, 0, 0, 0, 86, 1, 0, 0, 1, 0, 0, 0,168, 17, 97, 23, 1, 0, 0, 0,232, 9, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 73,110,102,108, 97,116,101, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,184, 15, 97, 23, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 4, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 48, 14, 97, 23, - 1, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 64, 1, 0, 0,184, 15, 97, 23, 1, 0, 0, 0, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61, 56, 17, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56, 17, 97, 23, - 1, 0, 0, 0, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, - 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, -168, 1, 0, 0,168, 17, 97, 23, 1, 0, 0, 0, 86, 1, 0, 0, 1, 0, 0, 0,136, 21, 97, 23, 1, 0, 0, 0,200, 13, 97, 23, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,152, 19, 97, 23, 1, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 6, 0, 0, 0, 68, 65, 84, 65, - 16, 1, 0, 0, 16, 18, 97, 23, 1, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,152, 19, 97, 23, 1, 0, 0, 0, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, - 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 24, 21, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 48, 0, 0, 0, 24, 21, 97, 23, 1, 0, 0, 0, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,136, 21, 97, 23, 1, 0, 0, 0, 86, 1, 0, 0, 1, 0, 0, 0,104, 25, 97, 23, - 1, 0, 0, 0,168, 17, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105, -103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,120, 23, 97, 23, - 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 1, 5, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0,240, 21, 97, 23, 1, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,120, 23, 97, 23, 1, 0, 0, 0, 82, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,248, 24, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,248, 24, 97, 23, 1, 0, 0, 0, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,104, 25, 97, 23, 1, 0, 0, 0, 86, 1, 0, 0, - 1, 0, 0, 0, 72, 29, 97, 23, 1, 0, 0, 0,136, 21, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 88, 27, 97, 23, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 1, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0,208, 25, 97, 23, 1, 0, 0, 0, 32, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 88, 27, 97, 23, - 1, 0, 0, 0, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,216, 28, 97, 23, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,216, 28, 97, 23, 1, 0, 0, 0, 80, 1, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, - 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, 72, 29, 97, 23, - 1, 0, 0, 0, 86, 1, 0, 0, 1, 0, 0, 0, 40, 33, 97, 23, 1, 0, 0, 0,104, 25, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117,108,116,105,112,108,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 56, 31, 97, 23, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 3, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0,176, 29, 97, 23, - 1, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 64, 1, 0, 0, 56, 31, 97, 23, 1, 0, 0, 0, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61,184, 32, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,184, 32, 97, 23, - 1, 0, 0, 0, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, - 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, -168, 1, 0, 0, 40, 33, 97, 23, 1, 0, 0, 0, 86, 1, 0, 0, 1, 0, 0, 0, 8, 37, 97, 23, 1, 0, 0, 0, 72, 29, 97, 23, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,105,110, 99,104, 0, 48, 48, 49, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 24, 35, 97, 23, 1, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 3, 0, 0, 0, 68, 65, 84, 65, - 16, 1, 0, 0,144, 33, 97, 23, 1, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 24, 35, 97, 23, 1, 0, 0, 0, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, - 54,189,194, 61, 14,215,126,191, 46,189,194, 61,152, 36, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 48, 0, 0, 0,152, 36, 97, 23, 1, 0, 0, 0, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, 8, 37, 97, 23, 1, 0, 0, 0, 86, 1, 0, 0, 1, 0, 0, 0,232, 40, 97, 23, - 1, 0, 0, 0, 40, 33, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109, -101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,248, 38, 97, 23, - 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 1, 0, 2, 0, 68, 65, 84, 65, 16, 1, 0, 0,112, 37, 97, 23, 1, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,248, 38, 97, 23, 1, 0, 0, 0, 82, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,120, 40, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,120, 40, 97, 23, 1, 0, 0, 0, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,232, 40, 97, 23, 1, 0, 0, 0, 86, 1, 0, 0, - 1, 0, 0, 0,200, 44, 97, 23, 1, 0, 0, 0, 8, 37, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,216, 42, 97, 23, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 2, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 80, 41, 97, 23, 1, 0, 0, 0, 32, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,216, 42, 97, 23, - 1, 0, 0, 0, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 88, 44, 97, 23, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 88, 44, 97, 23, 1, 0, 0, 0, 80, 1, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, - 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,200, 44, 97, 23, - 1, 0, 0, 0, 86, 1, 0, 0, 1, 0, 0, 0,168, 48, 97, 23, 1, 0, 0, 0,232, 40, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,184, 46, 97, 23, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 1, 0, 68, 65, 84, 65, 16, 1, 0, 0, 48, 45, 97, 23, - 1, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 64, 1, 0, 0,184, 46, 97, 23, 1, 0, 0, 0, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61, 56, 48, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56, 48, 97, 23, - 1, 0, 0, 0, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, - 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, -168, 1, 0, 0,168, 48, 97, 23, 1, 0, 0, 0, 86, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 44, 97, 23, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,117, 98,116,114, 97, 99,116, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,152, 50, 97, 23, 1, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 2, 0, 0, 68, 65, 84, 65, - 16, 1, 0, 0, 16, 49, 97, 23, 1, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,152, 50, 97, 23, 1, 0, 0, 0, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, - 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 24, 52, 97, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 48, 0, 0, 0, 24, 52, 97, 23, 1, 0, 0, 0, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 85, 83, 69, 82, 8, 13, 0, 0,192, 8,103, 2, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 33,136, 1, 1, - 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85,115,101,114,115, 47,116,111,110, 47, 68,101,115,107,116,111,112, 47, 0, 45,112, -111,119,101,114,112, 99, 47, 98,105,110, 47, 98,108,101,110,100,101,114, 46, 97,112,112, 47, 67,111,110,116,101,110,116,115, 47, - 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 2, 0, 94, 1, 8, 0, 0, 0, 3, 0, 0, 0, 48, 52, 38, 1, - 0, 0, 0, 0, 3, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0, 68,172, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0,128, 0, 0, 0, - 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0, 56, 4,215, 3, 1, 0, 0, 0, 56, 4,215, 3, 1, 0, 0, 0, 24, 91, 15, 26, - 1, 0, 0, 0, 24, 91, 15, 26, 1, 0, 0, 0,120, 92, 15, 26, 1, 0, 0, 0,120, 92, 15, 26, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, - 1, 0, 2, 0, 25, 0, 1, 0, 20, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 30, 90,100,191,154,153,153, 62,102,102,102, 63, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31,250,254, 62, 9, 0, 0, 63,156,153, 25, 63, 0, 0, 0, 0,205,204, 76, 62, -205,204, 76, 62,205,204, 76, 62, 0, 0,128, 63, 44,135, 22, 63, 32,133,235, 62,184,243,125, 62, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,195, 73, 76, 63, 42,135, 86, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 43,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 16, 47, 93, 62, 58,180,200,190, 24, 47, 93,190, 0, 0, 0, 0, 14, 0, 0, 0, 25, 0, 15, 0,120, 0, 60, 0, - 3, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0,144, 31, 15, 0, 6, 0, 25, 0, 8, 0, 10, 0,200, 0, 0, 0,100, 0,100, 0, - 0, 0, 0, 0, 2, 0, 1, 0, 10, 0, 50, 0,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 56, 29, 0, 0, 56, 4,215, 3, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255, -255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255, -255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255, -255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 86,128,194,255,255,255,255,255,255,255,255,255, - 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255, 0, 0, 0,255, -255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255, -255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255, -255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255,128,128,128,255, 0, 0, 0,255, -255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255,255,255,255,255, -204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 63, 63, 63,255, 86,128,194,255,255,255,255,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 25, 25, 25,230, 45, 45, 45,230,100,100,100,255,160,160,160,255, -255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255,255,255,255,255,255,255,255,255, - 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, 25, 25, 25,255,128,128,128,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255, -255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50,180, 80, 80, 80,180,100,100,100,180,128,128,128,255, 0, 0, 0,255, -255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255,190,190,190,255,100,100,100,180, 68, 68, 68,255, 0, 0, 0,255, -255,255,255,255, 0, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,115,190, 76,255, 90,166, 51,255,240,235,100,255,215,211, 75,255,180, 0,255,255, -153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, - 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,130,130,130,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255, -241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, - 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60, -255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, -144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, - 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, - 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255,204, 0,153,255, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, - 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255,255,255,255,255, - 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 76, 76,255, 0, 0, 0, 0,250,250,250,255, 15, 15, 15,255,114,114,114,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100, -127,112,112,100,255,140, 25,255,250,250,250,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,130,130,130,255, 8, 48, 8,255, - 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, - 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, - 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, - 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250,250,250,255, -250,250,250,255,250,250,250,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, -255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255, -219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, - 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255, -241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, - 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60, -255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, -144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, - 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,173,173,173,255,127,112,112,100, 0, 0, 0, 0, - 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, - 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, - 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100, -112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255, -135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, - 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, - 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, - 64,192, 48,255,240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, - 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, -255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255, -219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116,116,116,255, - 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255, -241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, - 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60, -255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, -144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, - 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,109, 88,129,255, 78,152, 62,255, 46,143,143,255,169, 84,124,255, -126,126, 80,255,162, 95,111,255,109,145,131,255,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, - 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, -255,255,255, 10,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, - 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, - 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255,110,110,110,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,132,132,132,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 94, 94, 94,255, -172,172,172,255, 17, 27, 60,100, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,195,195,195,255, 8, 48, 8,255, - 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, - 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, - 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, - 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, -255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255, -219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,100, 0, 0,255, 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, - 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, - 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255, -241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, - 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60, -255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, -144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, - 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,173,173,173,255,127,112,112,100, 0, 0, 0, 0, - 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, - 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, - 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100, -127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, - 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,255,255,255,219, 37, 18,255,255, 32, 32,255, - 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, - 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, - 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 4, 0, 0,155,155,155,160,100,100,100,255,108,105,111,255,104,106,117,255,105,117,110,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, -255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255, -219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, - 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255, -241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, - 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60, -255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, -144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, - 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, - 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, - 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, - 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0, 0, 96,128,255,255,255,255,255,255, 0,170, 0,255,220, 96, 96,255,220, 96, 96,255, 3, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255,247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255, -246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255,131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255, - 54,103,223,255, 94,193,239,255, 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255,240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255, - 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255,111,182,171,255, 0, 0, 0, 0, 75,112,124,255, -106,134,145,255,155,194,205,255, 0, 0, 0, 0,244,201, 12,255,238,194, 54,255,243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255, - 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0,111, 47,106,255,152, 69,190,255,211, 48,214,255, 0, 0, 0, 0,108,142, 34,255, -127,176, 34,255,187,239, 91,255, 0, 0, 0, 0,141,141,141,255,176,176,176,255,222,222,222,255, 0, 0, 0, 0,131, 67, 38,255, -139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 78, 65, 49, 60,226, 0, 0, 56,214, 42, 4, - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69,211, 11, 0, 0, 42,110,101,120,116, 0, 42,112, -114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, 0, 42,108, 97,115,116, 0,120, 0,121, 0,122, 0,119, 0,120, -109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, 97,120, 0, 42,112,111,105,110,116,101,114, 0,103,114,111,117, -112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0,115,117, 98,116,121,112,101, 0,102,108, 97,103, 0,110, 97,109, -101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0,100, 97,116, 97, 0,108,101,110, 0,116,111,116, 97,108,108,101,110, 0, 42,110, -101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 50, 52, 93, 0,117,115, 0,105, 99,111,110, 95,105,100, 0, 42,112, -114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, 98,108,111, 99,107, 0, 42,102,105,108,101,100, 97,116, 97, 0, -110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,108,101,112, 97,116,104, 91, 50, 52, 48, 93, 0,116,111,116, 0,112, 97,100, 0, - 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 91, 50, 93, 0,112, 97,100, - 48, 0,112, 97,100, 49, 0, 42,114,101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, 98,108,111, 99,107,116,121,112,101, 0, 97,100, -114, 99,111,100,101, 0,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, 42, 98,101,122,116, 0,109, 97,120,114, 99,116, - 0,116,111,116,114, 99,116, 0,118, 97,114,116,121,112,101, 0,116,111,116,118,101,114,116, 0,105,112,111, 0,101,120,116,114, - 97,112, 0,114,116, 0, 98,105,116,109, 97,115,107, 0,115,108,105,100,101, 95,109,105,110, 0,115,108,105,100,101, 95,109, 97, -120, 0, 99,117,114,118, 97,108, 0, 42,100,114,105,118,101,114, 0, 99,117,114,118,101, 0, 99,117,114, 0,115,104,111,119,107, -101,121, 0,109,117,116,101,105,112,111, 0,112,111,115, 0,114,101,108, 97,116,105,118,101, 0,116,111,116,101,108,101,109, 0, -112, 97,100, 50, 0, 42,119,101,105,103,104,116,115, 0,118,103,114,111,117,112, 91, 51, 50, 93, 0,115,108,105,100,101,114,109, -105,110, 0,115,108,105,100,101,114,109, 97,120, 0, 42, 97,100,116, 0, 42,114,101,102,107,101,121, 0,101,108,101,109,115,116, -114, 91, 51, 50, 93, 0,101,108,101,109,115,105,122,101, 0, 98,108,111, 99,107, 0, 42,105,112,111, 0, 42,102,114,111,109, 0, -116,111,116,107,101,121, 0,115,108,117,114,112,104, 0, 42,108,105,110,101, 0, 42,102,111,114,109, 97,116, 0, 98,108,101,110, - 0,108,105,110,101,110,111, 0,115,116, 97,114,116, 0,101,110,100, 0,102,108, 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, - 0,112, 97,100, 91, 52, 93, 0, 42,110, 97,109,101, 0,110,108,105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108, - 0, 42,115,101,108,108, 0, 99,117,114, 99, 0,115,101,108, 99, 0,109, 97,114,107,101,114,115, 0, 42,117,110,100,111, 95, 98, -117,102, 0,117,110,100,111, 95,112,111,115, 0,117,110,100,111, 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,109, -116,105,109,101, 0,115,105,122,101, 0,115,101,101,107, 0,112, 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0, 99,108, -105,112,115,116, 97, 0, 99,108,105,112,101,110,100, 0,108,101,110,115, 0,111,114,116,104,111, 95,115, 99, 97,108,101, 0,100, -114, 97,119,115,105,122,101, 0,115,104,105,102,116,120, 0,115,104,105,102,116,121, 0, 89, 70, 95,100,111,102,100,105,115,116, - 0, 89, 70, 95, 97,112,101,114,116,117,114,101, 0, 89, 70, 95, 98,107,104,116,121,112,101, 0, 89, 70, 95, 98,107,104, 98,105, - 97,115, 0, 89, 70, 95, 98,107,104,114,111,116, 0, 42,100,111,102, 95,111, 98, 0,102,114, 97,109,101,110,114, 0,102,114, 97, -109,101,115, 0,111,102,102,115,101,116, 0,115,102,114, 97, 0,102,105,101, 95,105,109, 97, 0, 99,121, 99,108, 0,111,107, 0, -109,117,108,116,105, 95,105,110,100,101,120, 0,108, 97,121,101,114, 0,112, 97,115,115, 0,109,101,110,117,110,114, 0, 42,115, - 99,101,110,101, 0,105, 98,117,102,115, 0, 42,103,112,117,116,101,120,116,117,114,101, 0, 42, 97,110,105,109, 0, 42,114,114, - 0, 42,114,101,110,100,101,114,115, 91, 56, 93, 0,114,101,110,100,101,114, 95,115,108,111,116, 0,108, 97,115,116, 95,114,101, -110,100,101,114, 95,115,108,111,116, 0,115,111,117,114, 99,101, 0,108, 97,115,116,102,114, 97,109,101, 0,116,112, 97,103,101, -102,108, 97,103, 0,116,111,116, 98,105,110,100, 0,120,114,101,112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119,101, -110,100, 0, 98,105,110,100, 99,111,100,101, 0, 42,114,101,112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108,101, - 0, 42,112,114,101,118,105,101,119, 0,108, 97,115,116,117,112,100, 97,116,101, 0,108, 97,115,116,117,115,101,100, 0, 97,110, -105,109,115,112,101,101,100, 0,103,101,110, 95,120, 0,103,101,110, 95,121, 0,103,101,110, 95,116,121,112,101, 0, 97,115,112, -120, 0, 97,115,112,121, 0,116,101,120, 99,111, 0,109, 97,112,116,111, 0,109, 97,112,116,111,110,101,103, 0, 98,108,101,110, -100,116,121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116,101,120, 0,117,118,110, 97,109,101, 91, 51, 50, 93, 0,112,114, -111,106,120, 0,112,114,111,106,121, 0,112,114,111,106,122, 0,109, 97,112,112,105,110,103, 0,111,102,115, 91, 51, 93, 0,115, -105,122,101, 91, 51, 93, 0,114,111,116, 0,116,101,120,102,108, 97,103, 0, 99,111,108,111,114,109,111,100,101,108, 0,112,109, - 97,112,116,111, 0,112,109, 97,112,116,111,110,101,103, 0,110,111,114,109, 97,112,115,112, 97, 99,101, 0,119,104,105, 99,104, - 95,111,117,116,112,117,116, 0, 98,114,117,115,104, 95,109, 97,112, 95,109,111,100,101, 0,112, 97,100, 91, 55, 93, 0,114, 0, -103, 0, 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111,108,102, 97, 99, 0,118, 97,114,102, 97, 99, 0,110,111,114,102, - 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, 0, 99,111,108,115,112,101, 99,102, 97, 99, 0,109,105, -114,114,102, 97, 99, 0, 97,108,112,104, 97,102, 97, 99, 0,100,105,102,102,102, 97, 99, 0,115,112,101, 99,102, 97, 99, 0,101, -109,105,116,102, 97, 99, 0,104, 97,114,100,102, 97, 99, 0,114, 97,121,109,105,114,114,102, 97, 99, 0,116,114, 97,110,115,108, -102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99,111,108,101,109,105,116,102, 97, 99, 0, 99,111,108,114,101,102,108,102, 97, 99, - 0, 99,111,108,116,114, 97,110,115,102, 97, 99, 0,100,101,110,115,102, 97, 99, 0,115, 99, 97,116,116,101,114,102, 97, 99, 0, -114,101,102,108,102, 97, 99, 0,116,105,109,101,102, 97, 99, 0,108,101,110,103,116,104,102, 97, 99, 0, 99,108,117,109,112,102, - 97, 99, 0,107,105,110,107,102, 97, 99, 0,114,111,117,103,104,102, 97, 99, 0,112, 97,100,101,110,115,102, 97, 99, 0,108,105, -102,101,102, 97, 99, 0,115,105,122,101,102, 97, 99, 0,105,118,101,108,102, 97, 99, 0,112,118,101,108,102, 97, 99, 0,115,104, - 97,100,111,119,102, 97, 99, 0,122,101,110,117,112,102, 97, 99, 0,122,101,110,100,111,119,110,102, 97, 99, 0, 98,108,101,110, -100,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0, 42,104, 97,110,100,108,101, 0, 42,112,110, 97,109,101, 0, 42,115, -116,110, 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97,114,115, 0, 42,118, 97,114,115,116,114, 0, 42,114,101,115,117, -108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, 93, 0, 40, 42,100,111,105,116, 41, 40, 41, 0, 40, 42,105,110, -115,116, 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, 42, 99, 97,108,108, 98, 97, 99,107, 41, 40, 41, 0,118,101,114, -115,105,111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42,105,109, 97, 0, 42, 99,117, 98,101, 91, 54, 93, 0,105,109, 97, -116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, 93, 91, 51, 93, 0,115,116,121,112,101, 0,118,105,101,119,115, - 99, 97,108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101,114,101,115, 0,100,101,112,116,104, 0,114,101, 99, 97,108, 99, - 0,108, 97,115,116,115,105,122,101, 0,102, 97,108,108,111,102,102, 95,116,121,112,101, 0,102, 97,108,108,111,102,102, 95,115, -111,102,116,110,101,115,115, 0,114, 97,100,105,117,115, 0, 99,111,108,111,114, 95,115,111,117,114, 99,101, 0,116,111,116,112, -111,105,110,116,115, 0,112,100,112, 97,100, 0,112,115,121,115, 0,112,115,121,115, 95, 99, 97, 99,104,101, 95,115,112, 97, 99, -101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0, 42,112,111,105,110,116, 95,116,114,101,101, 0, 42,112,111, -105,110,116, 95,100, 97,116, 97, 0,110,111,105,115,101, 95,115,105,122,101, 0,110,111,105,115,101, 95,100,101,112,116,104, 0, -110,111,105,115,101, 95,105,110,102,108,117,101,110, 99,101, 0,110,111,105,115,101, 95, 98, 97,115,105,115, 0,112,100,112, 97, -100, 51, 91, 51, 93, 0,110,111,105,115,101, 95,102, 97, 99, 0,115,112,101,101,100, 95,115, 99, 97,108,101, 0, 42, 99,111, 98, - 97, 0,114,101,115,111,108, 91, 51, 93, 0,105,110,116,101,114,112, 95,116,121,112,101, 0,102,105,108,101, 95,102,111,114,109, - 97,116, 0,101,120,116,101,110,100, 0,115,109,111,107,101,100, 95,116,121,112,101, 0,105,110,116, 95,109,117,108,116,105,112, -108,105,101,114, 0,115,116,105,108,108, 95,102,114, 97,109,101, 0,115,111,117,114, 99,101, 95,112, 97,116,104, 91, 50, 52, 48, - 93, 0, 42,100, 97,116, 97,115,101,116, 0, 99, 97, 99,104,101,100,102,114, 97,109,101, 0,110,111,105,115,101,115,105,122,101, - 0,116,117,114, 98,117,108, 0, 98,114,105,103,104,116, 0, 99,111,110,116,114, 97,115,116, 0,114,102, 97, 99, 0,103,102, 97, - 99, 0, 98,102, 97, 99, 0,102,105,108,116,101,114,115,105,122,101, 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, 97, -114,105,116,121, 0,109,103, 95,111, 99,116, 97,118,101,115, 0,109,103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97,105, -110, 0,100,105,115,116, 95, 97,109,111,117,110,116, 0,110,115, 95,111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, 0, -118,110, 95,119, 50, 0,118,110, 95,119, 51, 0,118,110, 95,119, 52, 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105,115, -116,109, 0,118,110, 95, 99,111,108,116,121,112,101, 0,110,111,105,115,101,100,101,112,116,104, 0,110,111,105,115,101,116,121, -112,101, 0,110,111,105,115,101, 98, 97,115,105,115, 0,110,111,105,115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, 97, -103, 0, 99,114,111,112,120,109,105,110, 0, 99,114,111,112,121,109,105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114,111, -112,121,109, 97,120, 0,116,101,120,102,105,108,116,101,114, 0, 97,102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114, -101,112,101, 97,116, 0, 99,104,101, 99,107,101,114,100,105,115,116, 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42,110, -111,100,101,116,114,101,101, 0, 42,112,108,117,103,105,110, 0, 42,101,110,118, 0, 42,112,100, 0, 42,118,100, 0,117,115,101, - 95,110,111,100,101,115, 0,108,111, 99, 91, 51, 93, 0,114,111,116, 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0,109, -105,110, 91, 51, 93, 0,109, 97,120, 91, 51, 93, 0,109,111,100,101, 0,116,111,116,101,120, 0,115,104,100,119,114, 0,115,104, -100,119,103, 0,115,104,100,119, 98, 0,115,104,100,119,112, 97,100, 0,101,110,101,114,103,121, 0,100,105,115,116, 0,115,112, -111,116,115,105,122,101, 0,115,112,111,116, 98,108,101,110,100, 0,104, 97,105,110,116, 0, 97,116,116, 49, 0, 97,116,116, 50, - 0, 42, 99,117,114,102, 97,108,108,111,102,102, 0,115,104, 97,100,115,112,111,116,115,105,122,101, 0, 98,105, 97,115, 0,115, -111,102,116, 0, 99,111,109,112,114,101,115,115,116,104,114,101,115,104, 0,112, 97,100, 53, 91, 51, 93, 0, 98,117,102,115,105, -122,101, 0,115, 97,109,112, 0, 98,117,102,102,101,114,115, 0,102,105,108,116,101,114,116,121,112,101, 0, 98,117,102,102,108, - 97,103, 0, 98,117,102,116,121,112,101, 0,114, 97,121, 95,115, 97,109,112, 0,114, 97,121, 95,115, 97,109,112,121, 0,114, 97, -121, 95,115, 97,109,112,122, 0,114, 97,121, 95,115, 97,109,112, 95,116,121,112,101, 0, 97,114,101, 97, 95,115,104, 97,112,101, - 0, 97,114,101, 97, 95,115,105,122,101, 0, 97,114,101, 97, 95,115,105,122,101,121, 0, 97,114,101, 97, 95,115,105,122,101,122, - 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0,114, 97,121, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0,116,101, -120, 97, 99,116, 0,115,104, 97,100,104, 97,108,111,115,116,101,112, 0,115,117,110, 95,101,102,102,101, 99,116, 95,116,121,112, -101, 0,115,107,121, 98,108,101,110,100,116,121,112,101, 0,104,111,114,105,122,111,110, 95, 98,114,105,103,104,116,110,101,115, -115, 0,115,112,114,101, 97,100, 0,115,117,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,117,110, 95,115,105,122,101, - 0, 98, 97, 99,107,115, 99, 97,116,116,101,114,101,100, 95,108,105,103,104,116, 0,115,117,110, 95,105,110,116,101,110,115,105, -116,121, 0, 97,116,109, 95,116,117,114, 98,105,100,105,116,121, 0, 97,116,109, 95,105,110,115, 99, 97,116,116,101,114,105,110, -103, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,101,120,116,105,110, 99,116,105,111,110, 95,102, 97, 99,116,111,114, 0, 97, -116,109, 95,100,105,115,116, 97,110, 99,101, 95,102, 97, 99,116,111,114, 0,115,107,121, 98,108,101,110,100,102, 97, 99, 0,115, -107,121, 95,101,120,112,111,115,117,114,101, 0,115,107,121, 95, 99,111,108,111,114,115,112, 97, 99,101, 0,112, 97,100, 52, 0, - 89, 70, 95,110,117,109,112,104,111,116,111,110,115, 0, 89, 70, 95,110,117,109,115,101, 97,114, 99,104, 0, 89, 70, 95,112,104, -100,101,112,116,104, 0, 89, 70, 95,117,115,101,113,109, 99, 0, 89, 70, 95, 98,117,102,115,105,122,101, 0, 89, 70, 95,112, 97, -100, 0, 89, 70, 95, 99, 97,117,115,116,105, 99, 98,108,117,114, 0, 89, 70, 95,108,116,114, 97,100,105,117,115, 0, 89, 70, 95, -103,108,111,119,105,110,116, 0, 89, 70, 95,103,108,111,119,111,102,115, 0, 89, 70, 95,103,108,111,119,116,121,112,101, 0, 89, - 70, 95,112, 97,100, 50, 0, 42,109,116,101,120, 91, 49, 56, 93, 0,112,114, 95,116,101,120,116,117,114,101, 0,112, 97,100, 91, - 51, 93, 0,100,101,110,115,105,116,121, 0,101,109,105,115,115,105,111,110, 0,115, 99, 97,116,116,101,114,105,110,103, 0,114, -101,102,108,101, 99,116,105,111,110, 0,101,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,116,114, 97,110,115,109, -105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,114,101,102,108,101, 99,116,105,111,110, 95, 99,111,108, 91, 51, 93, 0, -100,101,110,115,105,116,121, 95,115, 99, 97,108,101, 0,100,101,112,116,104, 95, 99,117,116,111,102,102, 0, 97,115,121,109,109, -101,116,114,121, 0,115,116,101,112,115,105,122,101, 95,116,121,112,101, 0,115,104, 97,100,101,102,108, 97,103, 0,115,104, 97, -100,101, 95,116,121,112,101, 0,112,114,101, 99, 97, 99,104,101, 95,114,101,115,111,108,117,116,105,111,110, 0,115,116,101,112, -115,105,122,101, 0,109,115, 95,100,105,102,102, 0,109,115, 95,105,110,116,101,110,115,105,116,121, 0,109,115, 95,115,112,114, -101, 97,100, 0,109, 97,116,101,114,105, 97,108, 95,116,121,112,101, 0,115,112,101, 99,114, 0,115,112,101, 99,103, 0,115,112, -101, 99, 98, 0,109,105,114,114, 0,109,105,114,103, 0,109,105,114, 98, 0, 97,109, 98,114, 0, 97,109, 98, 98, 0, 97,109, 98, -103, 0, 97,109, 98, 0,101,109,105,116, 0, 97,110,103, 0,115,112,101, 99,116,114, 97, 0,114, 97,121, 95,109,105,114,114,111, -114, 0, 97,108,112,104, 97, 0,114,101,102, 0,115,112,101, 99, 0,122,111,102,102,115, 0, 97,100,100, 0,116,114, 97,110,115, -108,117, 99,101,110, 99,121, 0,118,111,108, 0,102,114,101,115,110,101,108, 95,109,105,114, 0,102,114,101,115,110,101,108, 95, -109,105,114, 95,105, 0,102,114,101,115,110,101,108, 95,116,114, 97, 0,102,114,101,115,110,101,108, 95,116,114, 97, 95,105, 0, -102,105,108,116,101,114, 0,116,120, 95,108,105,109,105,116, 0,116,120, 95,102, 97,108,108,111,102,102, 0,114, 97,121, 95,100, -101,112,116,104, 0,114, 97,121, 95,100,101,112,116,104, 95,116,114, 97, 0,104, 97,114, 0,115,101,101,100, 49, 0,115,101,101, -100, 50, 0,103,108,111,115,115, 95,109,105,114, 0,103,108,111,115,115, 95,116,114, 97, 0,115, 97,109,112, 95,103,108,111,115, -115, 95,109,105,114, 0,115, 97,109,112, 95,103,108,111,115,115, 95,116,114, 97, 0, 97,100, 97,112,116, 95,116,104,114,101,115, -104, 95,109,105,114, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,116,114, 97, 0, 97,110,105,115,111, 95,103,108,111, -115,115, 95,109,105,114, 0,100,105,115,116, 95,109,105,114, 0,102, 97,100,101,116,111, 95,109,105,114, 0,115,104, 97,100,101, - 95,102,108, 97,103, 0,109,111,100,101, 95,108, 0,102,108, 97,114,101, 99, 0,115,116, 97,114, 99, 0,108,105,110,101, 99, 0, -114,105,110,103, 99, 0,104, 97,115,105,122,101, 0,102,108, 97,114,101,115,105,122,101, 0,115,117, 98,115,105,122,101, 0,102, -108, 97,114,101, 98,111,111,115,116, 0,115,116,114, 97,110,100, 95,115,116, 97, 0,115,116,114, 97,110,100, 95,101,110,100, 0, -115,116,114, 97,110,100, 95,101, 97,115,101, 0,115,116,114, 97,110,100, 95,115,117,114,102,110,111,114, 0,115,116,114, 97,110, -100, 95,109,105,110, 0,115,116,114, 97,110,100, 95,119,105,100,116,104,102, 97,100,101, 0,115,116,114, 97,110,100, 95,117,118, -110, 97,109,101, 91, 51, 50, 93, 0,115, 98,105, 97,115, 0,108, 98,105, 97,115, 0,115,104, 97,100, 95, 97,108,112,104, 97, 0, -115,101,112,116,101,120, 0,114,103, 98,115,101,108, 0,112,114, 95,116,121,112,101, 0,112,114, 95, 98, 97, 99,107, 0,112,114, - 95,108, 97,109,112, 0,109,108, 95,102,108, 97,103, 0,100,105,102,102, 95,115,104, 97,100,101,114, 0,115,112,101, 99, 95,115, -104, 97,100,101,114, 0,114,111,117,103,104,110,101,115,115, 0,114,101,102,114, 97, 99, 0,112, 97,114, 97,109, 91, 52, 93, 0, -114,109,115, 0,100, 97,114,107,110,101,115,115, 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42,114, 97,109,112, 95,115,112,101, - 99, 0,114, 97,109,112,105,110, 95, 99,111,108, 0,114, 97,109,112,105,110, 95,115,112,101, 99, 0,114, 97,109,112, 98,108,101, -110,100, 95, 99,111,108, 0,114, 97,109,112, 98,108,101,110,100, 95,115,112,101, 99, 0,114, 97,109,112, 95,115,104,111,119, 0, -112, 97,100, 51, 0,114, 97,109,112,102, 97, 99, 95, 99,111,108, 0,114, 97,109,112,102, 97, 99, 95,115,112,101, 99, 0, 42,103, -114,111,117,112, 0,102,114,105, 99,116,105,111,110, 0,102,104, 0,114,101,102,108,101, 99,116, 0,102,104,100,105,115,116, 0, -120,121,102,114,105, 99,116, 0,100,121,110, 97,109,111,100,101, 0,115,115,115, 95,114, 97,100,105,117,115, 91, 51, 93, 0,115, -115,115, 95, 99,111,108, 91, 51, 93, 0,115,115,115, 95,101,114,114,111,114, 0,115,115,115, 95,115, 99, 97,108,101, 0,115,115, -115, 95,105,111,114, 0,115,115,115, 95, 99,111,108,102, 97, 99, 0,115,115,115, 95,116,101,120,102, 97, 99, 0,115,115,115, 95, -102,114,111,110,116, 0,115,115,115, 95, 98, 97, 99,107, 0,115,115,115, 95,102,108, 97,103, 0,115,115,115, 95,112,114,101,115, -101,116, 0,109, 97,112,116,111, 95,116,101,120,116,117,114,101,100, 0,103,112,117,109, 97,116,101,114,105, 97,108, 0,110, 97, -109,101, 91, 50, 53, 54, 93, 0, 42, 98, 98, 0,105, 49, 0,106, 49, 0,107, 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115,101, -108, 99,111,108, 49, 0,115,101,108, 99,111,108, 50, 0,113,117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,101,120,112,121, 0, -101,120,112,122, 0,114, 97,100, 0,114, 97,100, 50, 0,115, 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,101,108,101,109,115, - 0,100,105,115,112, 0, 42,101,100,105,116,101,108,101,109,115, 0, 42, 42,109, 97,116, 0,102,108, 97,103, 50, 0,116,111,116, - 99,111,108, 0,119,105,114,101,115,105,122,101, 0,114,101,110,100,101,114,115,105,122,101, 0,116,104,114,101,115,104, 0, 42, -108, 97,115,116,101,108,101,109, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,104,116, 0,104, - 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104,105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110,114, - 0,112,110,116,115,117, 0,112,110,116,115,118, 0,114,101,115,111,108,117, 0,114,101,115,111,108,118, 0,111,114,100,101,114, -117, 0,111,114,100,101,114,118, 0,102,108, 97,103,117, 0,102,108, 97,103,118, 0, 42,107,110,111,116,115,117, 0, 42,107,110, -111,116,115,118, 0,116,105,108,116, 95,105,110,116,101,114,112, 0,114, 97,100,105,117,115, 95,105,110,116,101,114,112, 0, 99, -104, 97,114,105,100,120, 0,107,101,114,110, 0,104, 0,110,117,114, 98, 0, 42,101,100,105,116,110,117,114, 98, 0, 42, 98,101, -118,111, 98,106, 0, 42,116, 97,112,101,114,111, 98,106, 0, 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,112, 97,116, -104, 0, 42,107,101,121, 0, 98,101,118, 0,100,114, 97,119,102,108, 97,103, 0,116,119,105,115,116, 95,109,111,100,101, 0,112, - 97,100, 91, 50, 93, 0,116,119,105,115,116, 95,115,109,111,111,116,104, 0,112, 97,116,104,108,101,110, 0, 98,101,118,114,101, -115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0,101,120,116, 50, 0,114,101,115,111,108,117, 95,114,101,110, 0,114, -101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117, 0, 42,108, 97,115,116,115,101,108, 0,115,112, 97, 99,101,109,111, -100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101,100,105,115,116, 0,115,104,101, 97,114, 0,102,115,105,122,101, 0, -119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, 0,117,108,104,101,105,103,104,116, 0,120,111,102, 0,121,111,102, - 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, 0, 42,115,101,108, 98,111,120,101,115, 0, 42,101,100,105,116,102, -111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, 42,118,102,111,110,116, 0, 42,118,102,111,110,116, 98, 0, 42,118, -102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0,115,101,112, 99,104, 97,114, 0, 99,116,105,109,101, 0,116,111,116, - 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0,115,101,108,115,116, 97,114,116, 0,115,101,108,101,110,100, 0, 42, -115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, 0,101,102,102,101, 99,116, 0, 42,109,102, 97, 99,101, 0, 42,109, -116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109,118,101,114,116, 0, 42,109,101,100,103,101, 0, 42,100,118,101,114, -116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107,121, 0, 42,116,101,120, 99,111,109,101,115,104, 0, 42,109,115,101, -108,101, 99,116, 0, 42,101,100,105,116, 95,109,101,115,104, 0,118,100, 97,116, 97, 0,101,100, 97,116, 97, 0,102,100, 97,116, - 97, 0,116,111,116,101,100,103,101, 0,116,111,116,102, 97, 99,101, 0,116,111,116,115,101,108,101, 99,116, 0, 97, 99,116, 95, -102, 97, 99,101, 0,101,100,105,116,102,108, 97,103, 0, 99,117, 98,101,109, 97,112,115,105,122,101, 0,115,109,111,111,116,104, -114,101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98,100,105,118,114, 0,115,117, 98,115,117,114,102,116,121,112,101, 0, - 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,103,101, 0,117,118, 91, 52, 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0,116, -114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, 97,112, 0,118, 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101,100, - 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,119,101,105,103,104,116, 0,100,101,102, 95,110,114, 0, 42,100,119, 0,116, -111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0,110,111, 91, 51, 93, 0,117,118, 91, 50, 93, 0, 99,111, 91, 50, 93, - 0,105,110,100,101,120, 0,102, 0,105, 0,115, 91, 50, 53, 54, 93, 0,116,111,116,100,105,115,112, 0, 40, 42,100,105,115,112, -115, 41, 40, 41, 0,118, 91, 52, 93, 0,109,105,100, 0,118, 91, 50, 93, 0, 42,102, 97, 99,101,115, 0, 42, 99,111,108,102, 97, - 99,101,115, 0, 42,101,100,103,101,115, 0, 42,118,101,114,116,115, 0,108,101,118,101,108,115, 0,108,101,118,101,108, 95, 99, -111,117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101,119,108,118,108, 0,101,100,103,101,108,118,108, 0,112,105,110,108, -118,108, 0,114,101,110,100,101,114,108,118,108, 0,117,115,101, 95, 99,111,108, 0, 42,101,100,103,101, 95,102,108, 97,103,115, - 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, 42,118,101,114,116, 95,109, 97,112, 0, 42,101,100,103,101, 95,109, - 97,112, 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42,111,108,100, 95,101,100,103,101,115, 0,115,116, 97, 99,107,105,110, -100,101,120, 0, 42,101,114,114,111,114, 0,109,111,100,105,102,105,101,114, 0,115,117, 98,100,105,118, 84,121,112,101, 0,114, -101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, 67, 97, 99,104,101, 0, 42,109, 67, 97, 99,104,101, 0,100,101,102, - 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,101,110,103,116,104, 0,114, 97,110,100,111,109,105,122,101, 0,115,101,101, -100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116, 97,114,116, 95, 99, 97,112, 0, 42,101,110,100, 95, 99, 97,112, 0, 42, 99, -117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, 95,111, 98, 0,111,102,102,115,101,116, 91, 51, 93, 0,115, 99, 97, -108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115,116, 0,102,105,116, 95,116,121,112,101, 0,111,102,102,115,101,116, - 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105,115, 0,116,111,108,101,114, 97,110, 99,101, 0, 42,109,105,114,114, -111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103,108,101, 0,118, 97,108,117,101, 0,114,101,115, 0,118, 97,108, 95, -102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, 0,101, 95,102,108, 97,103,115, 0, 98,101,118,101,108, 95, 97,110, -103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, 91, 51, 50, 93, 0, 42,100,111,109, 97,105,110, 0, 42,102,108,111, -119, 0, 42, 99,111,108,108, 0,116,105,109,101, 0, 42,116,101,120,116,117,114,101, 0,115,116,114,101,110,103,116,104, 0,100, -105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118,101,108, 0,116,101,120,109, 97,112,112,105,110,103, 0, 42,109, 97, -112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101,114, 95,110, 97,109,101, 91, 51, 50, 93, 0,117,118,108, 97,121,101, -114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,116,111,114,115, 91, 49, 48, 93, 0, 42,105,109, 97,103,101, 0,110,117,109, - 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112,101, 99,116,120, 0, 97,115,112,101, 99,116,121, 0,115, 99, 97,108, -101,120, 0,115, 99, 97,108,101,121, 0,112,101,114, 99,101,110,116, 0,102, 97, 99,101, 67,111,117,110,116, 0,102, 97, 99, 0, -114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99,101,110,116,101,114, 0,115,116, 97,114,116,120, 0,115,116, 97,114, -116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111,119, 0,115,112,101,101,100, 0,100, 97,109,112, 0,102, 97,108,108, -111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105,102,101,116,105,109,101, 0,100,101,102,111,114,109,102,108, 97,103, - 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, 0,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112, 97, -114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116, 91, 51, 93, 0, 42,105,110,100,101,120, 97,114, 0,116, -111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, 99,108,111,116,104, 79, 98,106,101, 99,116, 0, 42,115,105,109, 95, -112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114,109,115, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 0,112, -116, 99, 97, 99,104,101,115, 0, 42,120, 0, 42,120,110,101,119, 0, 42,120,111,108,100, 0, 42, 99,117,114,114,101,110,116, 95, -120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, 0, 42, 99,117,114,114,101,110,116, 95,118, 0, 42,109,102, 97, 99, -101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109,102, 97, 99,101,115, 0, 42, 98,118,104,116,114,101,101, 0, 42,118, - 0, 42,100,109, 0, 99,102,114, 97, 0,111,112,101,114, 97,116,105,111,110, 0,118,101,114,116,101,120, 0,116,111,116,105,110, -102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,122,101, 0, 42, 98,105,110,100,105,110,102,108,117,101,110, 99,101,115, - 0, 42, 98,105,110,100,111,102,102,115,101,116,115, 0, 42, 98,105,110,100, 99, 97,103,101, 99,111,115, 0,116,111,116, 99, 97, -103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,100, 0, 42,100,121,110,105,110,102,108,117,101,110, 99,101,115, 0, 42, -100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0,100,121,110,103,114,105,100,115,105,122,101, 0,100,121,110, 99,101, -108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108,108,119,105,100,116,104, 0, 98,105,110,100,109, 97,116, 91, 52, 93, - 91, 52, 93, 0, 42, 98,105,110,100,119,101,105,103,104,116,115, 0, 42, 98,105,110,100, 99,111,115, 0, 40, 42, 98,105,110,100, -102,117,110, 99, 41, 40, 41, 0, 42,112,115,121,115, 0,116,111,116,100,109,118,101,114,116, 0,116,111,116,100,109,101,100,103, -101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,111,115,105,116,105,111,110, 0,114, 97,110,100,111,109, 95,112,111,115,105, -116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103,114,111,117,112, 0,112,114,111,116,101, 99,116, 0,108,118,108, 0, -115, 99,117,108,112,116,108,118,108, 0,116,111,116,108,118,108, 0,115,105,109,112,108,101, 0, 42,102,115,115, 0, 42,116, 97, -114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, 0,118,103,114,111,117,112, 95,110, 97,109,101, 91, 51, 50, 93, 0, -107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, 84,121,112,101, 0,115,104,114,105,110,107, 79,112,116,115, 0,112, -114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, 76,101,118,101,108,115, 0, 42,111,114,105,103,105,110, 0,102, 97, - 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111,114,105,103,105,110, 79,112,116,115, 0,111,102,102,115,101,116, 95, -102, 97, 99, 0, 99,114,101, 97,115,101, 95,105,110,110,101,114, 0, 99,114,101, 97,115,101, 95,111,117,116,101,114, 0, 99,114, -101, 97,115,101, 95,114,105,109, 0, 42,111, 98, 95, 97,120,105,115, 0,115,116,101,112,115, 0,114,101,110,100,101,114, 95,115, -116,101,112,115, 0,105,116,101,114, 0,115, 99,114,101,119, 95,111,102,115, 0, 97,110,103,108,101, 0,112,110,116,115,119, 0, -111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111,112,110,116,115,119, 0,116,121,112,101,117, 0,116,121,112,101,118, - 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, 0,100,117, 0,100,118, 0,100,119, 0, 42,100,101,102, 0, 42,108, - 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42,101,100,105,116,108, 97,116, -116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99,117,108,112,116, 0,112, 97,114,116,121,112,101, 0,112, 97,114, 49, - 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115,117, 98,115,116,114, 91, 51, 50, 93, 0, 42,116,114, 97, 99,107, 0, - 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103,114,111,117,112, 0, 42,112,114,111,120,121, 95,102,114,111,109, 0, - 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, 98, 0, 42,112,111,115,101, 0, 42,103,112,100, 0, 97,118,115, 0, - 42,109,112, 97,116,104, 0, 99,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108,115, 0,100,101,102, 98, 97,115, -101, 0,109,111,100,105,102,105,101,114,115, 0,114,101,115,116,111,114,101, 95,109,111,100,101, 0, 42,109, 97,116, 98,105,116, -115, 0, 97, 99,116, 99,111,108, 0,100,108,111, 99, 91, 51, 93, 0,111,114,105,103, 91, 51, 93, 0,100,115,105,122,101, 91, 51, - 93, 0,100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116, 91, 52, 93, 0,114,111,116, 65,120,105,115, 91, 51, 93, 0,100,114, -111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110,103,108,101, 0,100,114,111,116, 65,110,103,108,101, 0,111, 98,109, - 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105,110,118, 91, 52, 93, 91, 52, 93, 0,108, 97,121, 0, 99,111,108, 98, -105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,112,114,111,116,101, 99,116,102,108, 97,103, 0,116,114, 97, 99,107,102, -108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102,108, 97,103, 0,105,112,111,102,108, 97,103, 0,105,112,111,119,105, -110, 0,115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105,115,102,108, 97,103, 0, 98,111,117,110,100,116,121,112,101, 0,100, -117,112,111,110, 0,100,117,112,111,102,102, 0,100,117,112,115,116, 97, 0,100,117,112,101,110,100, 0,115,102, 0,109, 97,115, -115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116,105, 97, 0,102,111,114,109,102, 97, 99,116,111,114, 0,114,100, 97, -109,112,105,110,103, 0,109, 97,114,103,105,110, 0,109, 97,120, 95,118,101,108, 0,109,105,110, 95,118,101,108, 0,109, 95, 99, -111,110,116, 97, 99,116, 80,114,111, 99,101,115,115,105,110,103, 84,104,114,101,115,104,111,108,100, 0,114,111,116,109,111,100, -101, 0,100,116, 0,100,116,120, 0,101,109,112,116,121, 95,100,114, 97,119,116,121,112,101, 0,112, 97,100, 49, 91, 51, 93, 0, -101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0,100,117,112,102, 97, 99,101,115, 99, 97, 0,112,114,111,112, 0,115, -101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108,101,114,115, 0, 97, 99,116,117, 97,116,111,114,115, 0, 98, 98,115, -105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, 97,109,101,102,108, 97,103, 0,103, 97,109,101,102,108, 97,103, 50, - 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97,103, 0, 97,110,105,115,111,116,114,111,112,105, 99, 70,114,105, 99, -116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97,105,110,116,115, 0,110,108, 97,115,116,114,105,112,115, 0,104,111, -111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115,116,101,109, 0, 42,115,111,102,116, 0, 42,100,117,112, 95,103,114, -111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97,103, 0,114,101,115,116,114,105, 99,116,102,108, 97,103, 0,115,104, - 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, 0,114,101, 99, 97,108, 99,111, 0, 98,111,100,121, 95,116,121,112, -101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 42,100,101,114,105,118,101,100, 68,101,102,111, -114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97,108, 0,108, 97,115,116, 68, 97,116, 97, 77, 97,115,107, 0,115,116, - 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0,103,112,117,108, 97,109,112, 0,112, 99, 95,105,100,115, 0, 42,100, -117,112,108,105,108,105,115,116, 0, 99,117,114,105,110,100,101,120, 0, 97, 99,116,105,118,101, 0,111,114,105,103,108, 97,121, - 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116,101,100, 0,111,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111,114, 99, -111, 91, 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111,114, 99,101,102,105,101,108,100, 0,115,104, 97,112,101, 0,116,101, -120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110,107, 95, 97,120,105,115, 0,122,100,105,114, 0,102, 95,115,116,114, -101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95,102,108,111,119, 0,102, 95,115,105,122,101, 0,102, 95,112,111,119, -101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100,105,115,116, 0,102, 95,112,111,119,101,114, 95,114, 0,109, 97,120, -114, 97,100, 0,109,105,110,114, 97,100, 0,112,100,101,102, 95,100, 97,109,112, 0,112,100,101,102, 95,114,100, 97,109,112, 0, -112,100,101,102, 95,112,101,114,109, 0,112,100,101,102, 95,102,114,105, 99,116, 0,112,100,101,102, 95,114,102,114,105, 99,116, - 0,112,100,101,102, 95,115,116,105, 99,107,110,101,115,115, 0, 97, 98,115,111,114,112,116,105,111,110, 0,112,100,101,102, 95, -115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105,102,116, 0,112,100,101,102, 95,115, 98,111,102,116, 0, 99,108,117, -109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111,119, 0,107,105,110,107, 95,102,114,101,113, 0,107,105,110,107, 95, -115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0,102,114,101,101, 95,101,110,100, 0,116,101,120, 95,110, 97, 98,108, - 97, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0,119,101,105,103,104,116, 91, 49, 51, 93, 0,103,108,111, 98, 97,108, - 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93, 0,102,114, 97,109,101, 0,116,111,116,112,111,105,110,116, 0,100, 97, -116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,120, 95, 97,114,114, 97,121, 0, 42,100, 97,116, 97, 91, 56, 93, 0, 42, - 99,117,114, 91, 56, 93, 0,115,116,101,112, 0,115,105,109,102,114, 97,109,101, 0,115,116, 97,114,116,102,114, 97,109,101, 0, -101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, 97,109,101, 0,108, 97,115,116, 95,101,120, 97, 99,116, 0,110, 97, -109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,109,101, 91, 54, 52, 93, 0,105,110,102,111, 91, 54, 52, 93, 0,112, 97, -116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97, 99,104,101, 0, 42,101,100,105,116, 0, 40, 42,102,114,101,101, 95,101, -100,105,116, 41, 40, 41, 0,108,105,110, 83,116,105,102,102, 0, 97,110,103, 83,116,105,102,102, 0,118,111,108,117,109,101, 0, -118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,116,101,114, 97,116,105,111,110,115, 0,100,105,116,101,114, 97,116,105, -111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,115, 0,107, 83, 82, 72, 82, 95, 67, 76, 0,107, 83, 75, 72, 82, 95, 67, - 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 75, 95, 83, 80, 76, 84, 95, - 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 86, 67, 70, 0,107, 68, 80, 0,107, 68, 71, 0,107, 76, 70, 0, -107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77, 84, 0,107, 67, 72, 82, 0,107, 75, 72, 82, 0,107, 83, 72, 82, 0,107, - 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,108, 97,103,115, 0,110,117,109, 99,108,117,115,116,101,114,105,116,101, -114, 97,116,105,111,110,115, 0,119,101,108,100,105,110,103, 0,116,111,116,115,112,114,105,110,103, 0, 42, 98,112,111,105,110, -116, 0, 42, 98,115,112,114,105,110,103, 0,109,115,103, 95,108,111, 99,107, 0,109,115,103, 95,118, 97,108,117,101, 0,110,111, -100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71, 95, 77, 97,115,115, 91, 51, 50, 93, 0,103,114, 97,118, 0,109,101,100, -105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, 0,112,104,121,115,105, 99,115, 95,115,112,101,101,100, 0,103,111, - 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114,105, 99,116, 0,109,105,110,103,111, 97,108, 0,109, 97,120,103,111, - 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116,103,114,111,117,112, 0,110, 97,109,101,100, 86, 71, 95, 83,111,102, -116,103,111, 97,108, 91, 51, 50, 93, 0,102,117,122,122,121,110,101,115,115, 0,105,110,115,112,114,105,110,103, 0,105,110,102, -114,105, 99,116, 0,110, 97,109,101,100, 86, 71, 95, 83,112,114,105,110,103, 95, 75, 91, 51, 50, 93, 0,101,102,114, 97, 0,105, -110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115,111,108,118,101,114,102,108, 97,103,115, 0, 42, 42,107,101,121,115, - 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, 99,111,110,100,115,112,114,105,110,103, 0, 99,111,108, 98, 97,108, -108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108,115,116,105,102,102, 0,115, 98, 99, 95,109,111,100,101, 0, 97,101, -114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, 0,109, 97,120,108,111,111,112,115, 0, 99,104,111,107,101, 0,115, -111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, 99, 0,115,112,114,105,110,103,112,114,101,108,111, 97,100, 0, 42, -115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116,105,102,102, 0,105,110,112,117,115,104, 0, 42,112,111,105,110,116, - 99, 97, 99,104,101, 0, 42,101,102,102,101, 99,116,111,114, 95,119,101,105,103,104,116,115, 0,108, 99,111,109, 91, 51, 93, 0, -108,114,111,116, 91, 51, 93, 91, 51, 93, 0,108,115, 99, 97,108,101, 91, 51, 93, 91, 51, 93, 0,112, 97,100, 52, 91, 52, 93, 0, - 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,101,100,111,112,116,105,111,110,115, 0,114,101,115,111,108,117, -116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119,114,101,115,120,121,122, 0,114,101, 97,108,115,105,122,101, 0,103, -117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114,101,110,100,101,114, 68,105,115,112,108, 97,121, 77,111,100,101, 0, -118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0,118,105,115, 99,111,115,105,116,121, 77,111,100,101, 0,118,105,115, - 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0,103,114, 97,118,120, 0,103,114, 97,118,121, 0,103,114, 97,118,122, - 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, 69,110,100, 0, 98, 97,107,101, 83,116, 97,114,116, 0, 98, 97,107, -101, 69,110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82,101,102,105,110,101, 0,105,110,105, 86,101,108,120, 0,105,110,105, - 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111,114,103, 77,101,115,104, 0, 42,109,101,115,104, 83,117,114,102, 97, - 99,101, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102,100, 97,116, 97, 80, 97,116,104, 91, 50, 52, 48, 93, 0, 98, 98, 83, -116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, 51, 93, 0,116,121,112,101, 70,108, 97,103,115, 0,100,111,109, 97, -105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117,109,101, 73,110,105,116, 84,121,112,101, 0,112, 97,114,116, 83,108, -105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116,101, 84,114, 97, 99,101,114,115, 0,103,101,110,101,114, 97,116,101, - 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, 99,101, 83,109,111,111,116,104,105,110,103, 0,115,117,114,102, 97, - 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 83,105,122,101, 0,112, 97,114,116,105, 99, -108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70,105,101,108,100, 83,105,122,101, 0, 42,109,101,115,104, 83,117,114, -102, 78,111,114,109, 97,108,115, 0, 99,112,115, 84,105,109,101, 83,116, 97,114,116, 0, 99,112,115, 84,105,109,101, 69,110,100, - 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 83,116,114,101,110,103,116,104, - 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97,100,105,117,115, 0,118,101,108,111, 99,105,116,121,102,111,114, 99, -101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 82, 97,100,105,117,115, 0,108, 97, -115,116,103,111,111,100,102,114, 97,109,101, 0,109,105,115,116,121,112,101, 0,104,111,114,114, 0,104,111,114,103, 0,104,111, -114, 98, 0,104,111,114,107, 0,122,101,110,114, 0,122,101,110,103, 0,122,101,110, 98, 0,122,101,110,107, 0, 97,109, 98,107, - 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101,120,112, 0,114, 97,110,103,101, 0,108,105,110,102, - 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97, 99,116,105,118,105,116,121, 66,111,120, 82, 97,100, -105,117,115, 0,115,107,121,116,121,112,101, 0,111, 99, 99,108,117,115,105,111,110, 82,101,115, 0,112,104,121,115,105, 99,115, - 69,110,103,105,110,101, 0,116,105, 99,114, 97,116,101, 0,109, 97,120,108,111,103,105, 99,115,116,101,112, 0,112,104,121,115, -117, 98,115,116,101,112, 0,109, 97,120,112,104,121,115,116,101,112, 0,109,105,115,105, 0,109,105,115,116,115,116, 97, 0,109, -105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0,115,116, 97,114,114, 0,115,116, 97,114,103, 0,115,116, 97,114, 98, - 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, 0,115,116, 97,114,109,105,110,100,105,115,116, 0,115,116, 97,114, -100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105,115,101, 0,100,111,102,115,116, 97, 0,100,111,102,101,110,100, 0, -100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97,111,100,105,115,116, 0, 97,111,100,105,115,116,102, 97, 99, 0, 97, -111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, 97,111,109,111,100,101, 0, 97,111,115, 97,109,112, 0, 97,111,109, -105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0, 97,111, 95, 97,100, - 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97,111, 95, 97,112,112,114,111,120, 95,101,114,114,111,114, 0, 97,111, - 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116,105,111,110, 0, 97,111, 95,105,110,100,105,114,101, 99,116, 95,101, -110,101,114,103,121, 0, 97,111, 95,101,110,118, 95,101,110,101,114,103,121, 0, 97,111, 95,112, 97,100, 50, 0, 97,111, 95,105, -110,100,105,114,101, 99,116, 95, 98,111,117,110, 99,101,115, 0, 97,111, 95,112, 97,100, 0, 97,111, 95,115, 97,109,112, 95,109, -101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, 95,109,101,116,104,111,100, 0, 97,111, 95, 97,112,112,114,111,120, - 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101,114,101, 0, 42, 97,111,116, 97, 98,108,101,115, 0,115,101,108, 99, -111,108, 0,115,120, 0,115,121, 0, 42,108,112, 70,111,114,109, 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, 98, 70,111, -114,109, 97,116, 0, 99, 98, 80, 97,114,109,115, 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108,101,114, 0, -100,119, 75,101,121, 70,114, 97,109,101, 69,118,101,114,121, 0,100,119, 81,117, 97,108,105,116,121, 0,100,119, 66,121,116,101, -115, 80,101,114, 83,101, 99,111,110,100, 0,100,119, 70,108, 97,103,115, 0,100,119, 73,110,116,101,114,108,101, 97,118,101, 69, -118,101,114,121, 0, 97,118,105, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114,109,115, 0, - 42,112, 97,100, 0, 99,100, 83,105,122,101, 0,113,116, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 99,111,100, -101, 99, 84,121,112,101, 0, 99,111,100,101, 99, 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0, 99,111,100,101, 99, - 0, 99,111,100,101, 99, 70,108, 97,103,115, 0, 99,111,108,111,114, 68,101,112,116,104, 0, 99,111,100,101, 99, 84,101,109,112, -111,114, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0,109,105, -110, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0,107,101,121, 70,114, 97,109,101, 82, 97,116,101, 0, 98,105, -116, 82, 97,116,101, 0, 97,117,100,105,111, 99,111,100,101, 99, 84,121,112,101, 0, 97,117,100,105,111, 83, 97,109,112,108,101, - 82, 97,116,101, 0, 97,117,100,105,111, 66,105,116, 68,101,112,116,104, 0, 97,117,100,105,111, 67,104, 97,110,110,101,108,115, - 0, 97,117,100,105,111, 67,111,100,101, 99, 70,108, 97,103,115, 0, 97,117,100,105,111, 66,105,116, 82, 97,116,101, 0, 97,117, -100,105,111, 95, 99,111,100,101, 99, 0,118,105,100,101,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, 98,105, -116,114, 97,116,101, 0, 97,117,100,105,111, 95,109,105,120,114, 97,116,101, 0, 97,117,100,105,111, 95,118,111,108,117,109,101, - 0,103,111,112, 95,115,105,122,101, 0,114, 99, 95,109,105,110, 95,114, 97,116,101, 0,114, 99, 95,109, 97,120, 95,114, 97,116, -101, 0,114, 99, 95, 98,117,102,102,101,114, 95,115,105,122,101, 0,109,117,120, 95,112, 97, 99,107,101,116, 95,115,105,122,101, - 0,109,117,120, 95,114, 97,116,101, 0,109,105,120,114, 97,116,101, 0,109, 97,105,110, 0,115,112,101,101,100, 95,111,102, 95, -115,111,117,110,100, 0,100,111,112,112,108,101,114, 95,102, 97, 99,116,111,114, 0,100,105,115,116, 97,110, 99,101, 95,109,111, -100,101,108, 0, 42,109, 97,116, 95,111,118,101,114,114,105,100,101, 0, 42,108,105,103,104,116, 95,111,118,101,114,114,105,100, -101, 0,108, 97,121, 95,122,109, 97,115,107, 0,108, 97,121,102,108, 97,103, 0,112, 97,115,115,102,108, 97,103, 0,112, 97,115, -115, 95,120,111,114, 0, 42, 97,118,105, 99,111,100,101, 99,100, 97,116, 97, 0, 42,113,116, 99,111,100,101, 99,100, 97,116, 97, - 0,113,116, 99,111,100,101, 99,115,101,116,116,105,110,103,115, 0,102,102, 99,111,100,101, 99,100, 97,116, 97, 0,112,115,102, -114, 97, 0,112,101,102,114, 97, 0,105,109, 97,103,101,115, 0,102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97,100,115, - 0,102,114, 97,109,101,108,101,110, 0, 98,108,117,114,102, 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101,100, -103,101, 66, 0,102,117,108,108,115, 99,114,101,101,110, 0,120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113,112, -108, 97,121, 0, 97,116,116,114,105, 98, 0,114,116, 50, 0,102,114, 97,109,101, 95,115,116,101,112, 0,115,116,101,114,101,111, -109,111,100,101, 0,100,105,109,101,110,115,105,111,110,115,112,114,101,115,101,116, 0,109, 97,120,105,109,115,105,122,101, 0, -120,115, 99,104, 0,121,115, 99,104, 0,120,112, 97,114,116,115, 0,121,112, 97,114,116,115, 0,119,105,110,112,111,115, 0,112, -108, 97,110,101,115, 0,105,109,116,121,112,101, 0,115,117, 98,105,109,116,121,112,101, 0,113,117, 97,108,105,116,121, 0,100, -105,115,112,108, 97,121,109,111,100,101, 0,114,112, 97,100, 49, 0,114,112, 97,100, 50, 0,115, 99,101,109,111,100,101, 0,114, - 97,121,116,114, 97, 99,101, 95,111,112,116,105,111,110,115, 0,114, 97,121,116,114, 97, 99,101, 95,115,116,114,117, 99,116,117, -114,101, 0,114,101,110,100,101,114,101,114, 0,111, 99,114,101,115, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, 0, -102,114,115, 95,115,101, 99, 0,101,100,103,101,105,110,116, 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100,105, -115,112,114,101, 99,116, 0,108, 97,121,101,114,115, 0, 97, 99,116,108, 97,121, 0,109, 98,108,117,114, 95,115, 97,109,112,108, -101,115, 0,120, 97,115,112, 0,121, 97,115,112, 0,102,114,115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, 0, - 99,111,108,111,114, 95,109,103,116, 95,102,108, 97,103, 0,112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117,101, - 0,112,111,115,116,115, 97,116, 0,100,105,116,104,101,114, 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95,111, -115, 97, 0, 98, 97,107,101, 95,102,105,108,116,101,114, 0, 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102,108, - 97,103, 0, 98, 97,107,101, 95,110,111,114,109, 97,108, 95,115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95,115, -112,108,105,116, 0, 98, 97,107,101, 95,109, 97,120,100,105,115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, 0, - 98, 97,107,101, 95,112, 97,100, 0, 71, 73,113,117, 97,108,105,116,121, 0, 71, 73, 99, 97, 99,104,101, 0, 71, 73,109,101,116, -104,111,100, 0, 71, 73,112,104,111,116,111,110,115, 0, 71, 73,100,105,114,101, 99,116, 0, 89, 70, 95, 65, 65, 0, 89, 70,101, -120,112,111,114,116,120,109,108, 0, 89, 70, 95,110,111, 98,117,109,112, 0, 89, 70, 95, 99,108, 97,109,112,114,103, 98, 0,121, -102,112, 97,100, 49, 0, 71, 73,100,101,112,116,104, 0, 71, 73, 99, 97,117,115,100,101,112,116,104, 0, 71, 73,112,105,120,101, -108,115,112,101,114,115, 97,109,112,108,101, 0, 71, 73,112,104,111,116,111,110, 99,111,117,110,116, 0, 71, 73,109,105,120,112, -104,111,116,111,110,115, 0, 71, 73,112,104,111,116,111,110,114, 97,100,105,117,115, 0, 89, 70, 95,114, 97,121,100,101,112,116, -104, 0, 89, 70, 95, 65, 65,112, 97,115,115,101,115, 0, 89, 70, 95, 65, 65,115, 97,109,112,108,101,115, 0,121,102,112, 97,100, - 50, 0, 71, 73,115,104, 97,100,111,119,113,117, 97,108,105,116,121, 0, 71, 73,114,101,102,105,110,101,109,101,110,116, 0, 71, - 73,112,111,119,101,114, 0, 71, 73,105,110,100,105,114,112,111,119,101,114, 0, 89, 70, 95,103, 97,109,109, 97, 0, 89, 70, 95, -101,120,112,111,115,117,114,101, 0, 89, 70, 95,114, 97,121, 98,105, 97,115, 0, 89, 70, 95, 65, 65,112,105,120,101,108,115,105, -122,101, 0, 89, 70, 95, 65, 65,116,104,114,101,115,104,111,108,100, 0, 98, 97, 99,107, 98,117,102, 91, 49, 54, 48, 93, 0,112, -105, 99, 91, 49, 54, 48, 93, 0,115,116, 97,109,112, 0,115,116, 97,109,112, 95,102,111,110,116, 95,105,100, 0,115,116, 97,109, -112, 95,117,100, 97,116, 97, 91, 49, 54, 48, 93, 0,102,103, 95,115,116, 97,109,112, 91, 52, 93, 0, 98,103, 95,115,116, 97,109, -112, 91, 52, 93, 0,115,101,113, 95,112,114,101,118, 95,116,121,112,101, 0,115,101,113, 95,114,101,110,100, 95,116,121,112,101, - 0,115,101,113, 95,102,108, 97,103, 0,112, 97,100, 53, 91, 53, 93, 0,115,105,109,112,108,105,102,121, 95,102,108, 97,103, 0, -115,105,109,112,108,105,102,121, 95,115,117, 98,115,117,114,102, 0,115,105,109,112,108,105,102,121, 95,115,104, 97,100,111,119, -115, 97,109,112,108,101,115, 0,115,105,109,112,108,105,102,121, 95,112, 97,114,116,105, 99,108,101,115, 0,115,105,109,112,108, -105,102,121, 95, 97,111,115,115,115, 0, 99,105,110,101,111,110,119,104,105,116,101, 0, 99,105,110,101,111,110, 98,108, 97, 99, -107, 0, 99,105,110,101,111,110,103, 97,109,109, 97, 0,106,112, 50, 95,112,114,101,115,101,116, 0,106,112, 50, 95,100,101,112, -116,104, 0,114,112, 97,100, 51, 0,100,111,109,101,114,101,115, 0,100,111,109,101,109,111,100,101, 0,100,111,109,101, 97,110, -103,108,101, 0,100,111,109,101,116,105,108,116, 0,100,111,109,101,114,101,115, 98,117,102, 0, 42,100,111,109,101,116,101,120, -116, 0,101,110,103,105,110,101, 91, 51, 50, 93, 0,112, 97,114,116,105, 99,108,101, 95,112,101,114, 99, 0,115,117, 98,115,117, -114,102, 95,109, 97,120, 0,115,104, 97,100, 98,117,102,115, 97,109,112,108,101, 95,109, 97,120, 0, 97,111, 95,101,114,114,111, -114, 0,116,105,108,116, 0,114,101,115, 98,117,102, 0, 42,119, 97,114,112,116,101,120,116, 0, 99,111,108, 91, 51, 93, 0,109, - 97,116,109,111,100,101, 0,102,114, 97,109,105,110,103, 0,114,116, 49, 0,100,111,109,101, 0,115,116,101,114,101,111,102,108, - 97,103, 0,101,121,101,115,101,112, 97,114, 97,116,105,111,110, 0, 42, 99, 97,109,101,114, 97, 0, 42, 42, 98,114,117,115,104, -101,115, 0, 97, 99,116,105,118,101, 95, 98,114,117,115,104, 95,105,110,100,101,120, 0, 98,114,117,115,104, 95, 99,111,117,110, -116, 0, 42,112, 97,105,110,116, 95, 99,117,114,115,111,114, 0,112, 97,105,110,116, 95, 99,117,114,115,111,114, 95, 99,111,108, - 91, 52, 93, 0,112, 97,105,110,116, 0,115,101, 97,109, 95, 98,108,101,101,100, 0,110,111,114,109, 97,108, 95, 97,110,103,108, -101, 0,115, 99,114,101,101,110, 95,103,114, 97, 98, 95,115,105,122,101, 91, 50, 93, 0, 42,112, 97,105,110,116, 99,117,114,115, -111,114, 0,105,110,118,101,114,116, 0,116,111,116,114,101,107,101,121, 0,116,111,116, 97,100,100,107,101,121, 0, 98,114,117, -115,104,116,121,112,101, 0, 98,114,117,115,104, 91, 55, 93, 0,101,109,105,116,116,101,114,100,105,115,116, 0,115,101,108,101, - 99,116,109,111,100,101, 0,101,100,105,116,116,121,112,101, 0,100,114, 97,119, 95,115,116,101,112, 0,102, 97,100,101, 95,102, -114, 97,109,101,115, 0,110, 97,109,101, 91, 51, 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, 93, 0,112,105,118,111,116, 91, 51, - 93, 0,116, 97, 98,108,101,116, 95,115,105,122,101, 0,116, 97, 98,108,101,116, 95,115,116,114,101,110,103,116,104, 0, 42,118, -112, 97,105,110,116, 95,112,114,101,118, 0, 42,119,112, 97,105,110,116, 95,112,114,101,118, 0, 42,118,112, 97,105,110,116, 0, - 42,119,112, 97,105,110,116, 0,118,103,114,111,117,112, 95,119,101,105,103,104,116, 0, 99,111,114,110,101,114,116,121,112,101, - 0,101,100,105,116, 98,117,116,102,108, 97,103, 0,106,111,105,110,116,114,105,108,105,109,105,116, 0,100,101,103,114, 0,116, -117,114,110, 0,101,120,116,114, 95,111,102,102,115, 0,100,111,117, 98,108,105,109,105,116, 0,110,111,114,109, 97,108,115,105, -122,101, 0, 97,117,116,111,109,101,114,103,101, 0,115,101,103,109,101,110,116,115, 0,114,105,110,103,115, 0,118,101,114,116, -105, 99,101,115, 0,117,110,119,114, 97,112,112,101,114, 0,117,118, 99, 97,108, 99, 95,114, 97,100,105,117,115, 0,117,118, 99, - 97,108, 99, 95, 99,117, 98,101,115,105,122,101, 0,117,118, 99, 97,108, 99, 95,109, 97,114,103,105,110, 0,117,118, 99, 97,108, - 99, 95,109, 97,112,100,105,114, 0,117,118, 99, 97,108, 99, 95,109, 97,112, 97,108,105,103,110, 0,117,118, 99, 97,108, 99, 95, -102,108, 97,103, 0,117,118, 95,102,108, 97,103, 0,117,118, 95,115,101,108,101, 99,116,109,111,100,101, 0,117,118, 95,112, 97, -100, 91, 50, 93, 0, 97,117,116,111,105,107, 95, 99,104, 97,105,110,108,101,110, 0,105,109, 97,112, 97,105,110,116, 0,112, 97, -114,116,105, 99,108,101, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 95,115,105,122,101, 0,115,101,108,101, 99,116, 95, -116,104,114,101,115,104, 0, 99,108,101, 97,110, 95,116,104,114,101,115,104, 0, 97,117,116,111,107,101,121, 95,109,111,100,101, - 0, 97,117,116,111,107,101,121, 95,102,108, 97,103, 0,114,101,116,111,112,111, 95,109,111,100,101, 0,114,101,116,111,112,111, - 95,112, 97,105,110,116, 95,116,111,111,108, 0,108,105,110,101, 95,100,105,118, 0,101,108,108,105,112,115,101, 95,100,105,118, - 0,114,101,116,111,112,111, 95,104,111,116,115,112,111,116, 0,109,117,108,116,105,114,101,115, 95,115,117, 98,100,105,118, 95, -116,121,112,101, 0,115,107,103,101,110, 95,114,101,115,111,108,117,116,105,111,110, 0,115,107,103,101,110, 95,116,104,114,101, -115,104,111,108,100, 95,105,110,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,101, -120,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,114, 97,116,105,111, 0,115,107,103,101,110, - 95,108,101,110,103,116,104, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 97,110,103,108,101, 95,108,105,109,105,116, 0, -115,107,103,101,110, 95, 99,111,114,114,101,108, 97,116,105,111,110, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,115,121, -109,109,101,116,114,121, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95, 97,110,103,108, -101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,108,101,110,103,116,104, 95,119, -101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,100,105,115,116, 97,110, 99,101, 95,119,101, -105,103,104,116, 0,115,107,103,101,110, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, - 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 95,112, 97,115,115,101,115, 0,115,107,103,101,110, 95,115,117, 98,100, -105,118,105,115,105,111,110,115, 91, 51, 93, 0,115,107,103,101,110, 95,109,117,108,116,105, 95,108,101,118,101,108, 0, 42,115, -107,103,101,110, 95,116,101,109,112,108, 97,116,101, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 0, 98,111,110, -101, 95,115,107,101,116, 99,104,105,110,103, 95, 99,111,110,118,101,114,116, 0,115,107,103,101,110, 95,115,117, 98,100,105,118, -105,115,105,111,110, 95,110,117,109, 98,101,114, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,111,112,116,105, -111,110,115, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,114,111,108,108, 0,115,107,103,101,110, 95,115,105, -100,101, 95,115,116,114,105,110,103, 91, 56, 93, 0,115,107,103,101,110, 95,110,117,109, 95,115,116,114,105,110,103, 91, 56, 93, - 0,101,100,103,101, 95,109,111,100,101, 0,115,110, 97,112, 95,109,111,100,101, 0,115,110, 97,112, 95,102,108, 97,103, 0,115, -110, 97,112, 95,116, 97,114,103,101,116, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 0,112,114,111,112, 95,109,111,100, -101, 0, 97,117,116,111, 95,110,111,114,109, 97,108,105,122,101, 0,105,110,116,112, 97,100, 0,116,111,116,111, 98,106, 0,116, -111,116,108, 97,109,112, 0,116,111,116,111, 98,106,115,101,108, 0,116,111,116, 99,117,114,118,101, 0,116,111,116,109,101,115, -104, 0,116,111,116, 97,114,109, 97,116,117,114,101, 0,115, 99, 97,108,101, 95,108,101,110,103,116,104, 0,115,121,115,116,101, -109, 0,103,114, 97,118,105,116,121, 91, 51, 93, 0,113,117,105, 99,107, 95, 99, 97, 99,104,101, 95,115,116,101,112, 0, 42,119, -111,114,108,100, 0, 42,115,101,116, 0, 98, 97,115,101, 0, 42, 98, 97,115, 97, 99,116, 0, 42,111, 98,101,100,105,116, 0, 99, -117,114,115,111,114, 91, 51, 93, 0,116,119, 99,101,110,116, 91, 51, 93, 0,116,119,109,105,110, 91, 51, 93, 0,116,119,109, 97, -120, 91, 51, 93, 0,108, 97,121, 97, 99,116, 0, 42,101,100, 0, 42,116,111,111,108,115,101,116,116,105,110,103,115, 0, 42,115, -116, 97,116,115, 0, 97,117,100,105,111, 0,116,114, 97,110,115,102,111,114,109, 95,115,112, 97, 99,101,115, 0, 42,115,111,117, -110,100, 95,115, 99,101,110,101, 0, 42,115,111,117,110,100, 95,115, 99,101,110,101, 95,104, 97,110,100,108,101, 0, 42,102,112, -115, 95,105,110,102,111, 0, 42,116,104,101, 68, 97,103, 0,100, 97,103,105,115,118, 97,108,105,100, 0,100, 97,103,102,108, 97, -103,115, 0,106,117,109,112,102,114, 97,109,101, 0,112, 97,100, 53, 0, 97, 99,116,105,118,101, 95,107,101,121,105,110,103,115, -101,116, 0,107,101,121,105,110,103,115,101,116,115, 0,103,109, 0,117,110,105,116, 0,112,104,121,115,105, 99,115, 95,115,101, -116,116,105,110,103,115, 0, 98,108,101,110,100, 0,118,105,101,119, 0,119,105,110,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118, -105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,105,110,118, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, - 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,105,110,118, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116,111, 98, - 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,116,119,109, 97,116, 91, 52, 93, 91, - 52, 93, 0,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,122,102, 97, 99, 0, 99, 97,109,100,120, 0, 99, 97,109,100,121, 0, -112,105,120,115,105,122,101, 0, 99, 97,109,122,111,111,109, 0,118,105,101,119, 98,117,116, 0,116,119,100,114, 97,119,102,108, - 97,103, 0,114,102,108, 97,103, 0,118,105,101,119,108,111, 99,107, 0,112,101,114,115,112, 0, 99,108,105,112, 91, 54, 93, 91, - 52, 93, 0, 99,108,105,112, 95,108,111, 99, 97,108, 91, 54, 93, 91, 52, 93, 0, 42, 99,108,105,112, 98, 98, 0, 42,108,111, 99, - 97,108,118,100, 0, 42,114,105, 0, 42,114,101,116,111,112,111, 95,118,105,101,119, 95,100, 97,116, 97, 0, 42,100,101,112,116, -104,115, 0, 42,115,109,115, 0, 42,115,109,111,111,116,104, 95,116,105,109,101,114, 0,108,118,105,101,119,113,117, 97,116, 91, - 52, 93, 0,108,112,101,114,115,112, 0,108,118,105,101,119, 0,103,114,105,100,118,105,101,119, 0,116,119, 97,110,103,108,101, - 91, 51, 93, 0,112, 97,100,102, 0,114,101,103,105,111,110, 98, 97,115,101, 0,115,112, 97, 99,101,116,121,112,101, 0, 98,108, -111, 99,107,115, 99, 97,108,101, 0, 98,108,111, 99,107,104, 97,110,100,108,101,114, 91, 56, 93, 0,108, 97,121, 95,117,115,101, -100, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0, 98,103,112,105, 99, 98, 97,115,101, 0, 42, 98,103,112,105, 99, 0,111, 98, - 95, 99,101,110,116,114,101, 95, 98,111,110,101, 91, 51, 50, 93, 0,100,114, 97,119,116,121,112,101, 0,115, 99,101,110,101,108, -111, 99,107, 0, 97,114,111,117,110,100, 0,112,105,118,111,116, 95,108, 97,115,116, 0,103,114,105,100, 0,110,101, 97,114, 0, -102, 97,114, 0,103,114,105,100,108,105,110,101,115, 0,103,114,105,100,102,108, 97,103, 0,103,114,105,100,115,117, 98,100,105, -118, 0,109,111,100,101,115,101,108,101, 99,116, 0,107,101,121,102,108, 97,103,115, 0,116,119,116,121,112,101, 0,116,119,109, -111,100,101, 0,116,119,102,108, 97,103, 0, 99,117,115,116,111,109,100, 97,116, 97, 95,109, 97,115,107, 0, 97,102,116,101,114, -100,114, 97,119, 0,122, 98,117,102, 0,120,114, 97,121, 0,110,100,111,102,109,111,100,101, 0,110,100,111,102,102,105,108,116, -101,114, 0, 42,112,114,111,112,101,114,116,105,101,115, 95,115,116,111,114, 97,103,101, 0,118,101,114,116, 0,104,111,114, 0, -109, 97,115,107, 0,109,105,110, 91, 50, 93, 0,109, 97,120, 91, 50, 93, 0,109,105,110,122,111,111,109, 0,109, 97,120,122,111, -111,109, 0,115, 99,114,111,108,108, 0,115, 99,114,111,108,108, 95,117,105, 0,107,101,101,112,116,111,116, 0,107,101,101,112, -122,111,111,109, 0,107,101,101,112,111,102,115, 0, 97,108,105,103,110, 0,119,105,110,120, 0,119,105,110,121, 0,111,108,100, -119,105,110,120, 0,111,108,100,119,105,110,121, 0, 42,116, 97, 98, 95,111,102,102,115,101,116, 0,116, 97, 98, 95,110,117,109, - 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99,114,101,101,110, 0,118, 50,100, 0, 42, 97,100,115, 0,103,104,111,115,116, 67, -117,114,118,101,115, 0, 97,117,116,111,115,110, 97,112, 0, 99,117,114,115,111,114, 86, 97,108, 0,109, 97,105,110, 98, 0,109, - 97,105,110, 98,111, 0,109, 97,105,110, 98,117,115,101,114, 0,114,101, 95, 97,108,105,103,110, 0,112,114,101,118,105,101,119, - 0,112, 97,116,104,102,108, 97,103, 0,100, 97,116, 97,105, 99,111,110, 0, 42,112,105,110,105,100, 0,114,101,110,100,101,114, - 95,115,105,122,101, 0, 99,104, 97,110,115,104,111,119,110, 0,122,101, 98,114, 97, 0,122,111,111,109, 0,116,105,116,108,101, - 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,102,105,108,101, 91, 56, 48, 93, 0,114,101,110, 97,109,101,102,105,108, -101, 91, 56, 48, 93, 0,115,111,114,116, 0,100,105,115,112,108, 97,121, 0, 97, 99,116,105,118,101, 95, 98,111,111,107,109, 97, -114,107, 0, 97, 99,116,105,118,101, 95,102,105,108,101, 0,115,101,108,115,116, 97,116,101, 0,102, 95,102,112, 0,102,112, 95, -115,116,114, 91, 56, 93, 0,115, 99,114,111,108,108, 95,111,102,102,115,101,116, 0, 42,112, 97,114, 97,109,115, 0, 42,102,105, -108,101,115, 0, 42,102,111,108,100,101,114,115, 95,112,114,101,118, 0, 42,102,111,108,100,101,114,115, 95,110,101,120,116, 0, - 42,111,112, 0, 42,115,109,111,111,116,104,115, 99,114,111,108,108, 95,116,105,109,101,114, 0, 42,108, 97,121,111,117,116, 0, -114,101, 99,101,110,116,110,114, 0, 98,111,111,107,109, 97,114,107,110,114, 0,115,121,115,116,101,109,110,114, 0,116,114,101, -101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97,114, 99,104, 95,115,116,114,105,110,103, 91, 51, 50, 93, 0,115, -101, 97,114, 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, 95,102,108, 97,103,115, 0,100,111, 95, 0,111,117,116,108,105, -110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0, 42, 99,117,109, 97,112, 0,105,109, 97,110,114, 0, 99,117,114, -116,105,108,101, 0,105,109,116,121,112,101,110,114, 0,108,111, 99,107, 0,112,105,110, 0,100,116, 95,117,118, 0,115,116,105, - 99,107,121, 0,100,116, 95,117,118,115,116,114,101,116, 99,104, 0, 99,117,114,115,111,114, 91, 50, 93, 0, 99,101,110,116,120, - 0, 99,101,110,116,121, 0,115, 99,111,112,101,115, 0,115, 97,109,112,108,101, 95,108,105,110,101, 95,104,105,115,116, 0, 42, -116,101,120,116, 0,116,111,112, 0,118,105,101,119,108,105,110,101,115, 0,108,104,101,105,103,104,116, 0, 99,119,105,100,116, -104, 0,108,105,110,101,110,114,115, 95,116,111,116, 0,108,101,102,116, 0,115,104,111,119,108,105,110,101,110,114,115, 0,116, - 97, 98,110,117,109, 98,101,114, 0,115,104,111,119,115,121,110,116, 97,120, 0,111,118,101,114,119,114,105,116,101, 0,108,105, -118,101, 95,101,100,105,116, 0,112,105,120, 95,112,101,114, 95,108,105,110,101, 0,116,120,116,115, 99,114,111,108,108, 0,116, -120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100,111,112,108,117,103,105,110,115, 0,102,105,110,100,115,116,114, - 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99,101,115,116,114, 91, 50, 53, 54, 93, 0, 42,112,121, 95,100,114, 97,119, 0, 42, -112,121, 95,101,118,101,110,116, 0, 42,112,121, 95, 98,117,116,116,111,110, 0, 42,112,121, 95, 98,114,111,119,115,101,114, 99, - 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,111, 98, 97,108,100,105, 99,116, 0,108, 97,115,116,115,112, 97, 99,101, - 0,115, 99,114,105,112,116,110, 97,109,101, 91, 50, 53, 54, 93, 0,115, 99,114,105,112,116, 97,114,103, 91, 50, 53, 54, 93, 0, - 42,115, 99,114,105,112,116, 0, 42, 98,117,116, 95,114,101,102,115, 0,114,101,100,114, 97,119,115, 0, 42,105,100, 0, 97,115, -112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, 0,109,121, 0, 42,101,100,105,116,116,114,101,101, 0,116,114, -101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,109,101,110,117, 0,110,117,109,116,105,108,101,115,120, 0,110,117, -109,116,105,108,101,115,121, 0,118,105,101,119,114,101, 99,116, 0, 98,111,111,107,109, 97,114,107,114,101, 99,116, 0,115, 99, -114,111,108,108,112,111,115, 0,115, 99,114,111,108,108,104,101,105,103,104,116, 0,115, 99,114,111,108,108, 97,114,101, 97, 0, -114,101,116,118, 97,108, 0,112,114,118, 95,119, 0,112,114,118, 95,104, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 41, - 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95,101,118,101,110,116, 41, 40, 41, 0, 40, 42,114,101,116,117,114, -110,102,117,110, 99, 95, 97,114,103,115, 41, 40, 41, 0, 42, 97,114,103, 49, 0, 42, 97,114,103, 50, 0, 42,109,101,110,117,112, - 0, 42,112,117,112,109,101,110,117, 0, 42,105,109,103, 0,108,101,110, 95, 97,108,108,111, 99, 0, 99,117,114,115,111,114, 0, -114,112,116, 95,109, 97,115,107, 0,115, 99,114,111,108,108, 98, 97, 99,107, 0,104,105,115,116,111,114,121, 0,112,114,111,109, -112,116, 91, 50, 53, 54, 93, 0,108, 97,110,103,117, 97,103,101, 91, 51, 50, 93, 0,115,101,108, 95,115,116, 97,114,116, 0,115, -101,108, 95,101,110,100, 0,102,105,108,116,101,114, 91, 54, 52, 93, 0,102,105,108,101,110, 97,109,101, 91, 50, 53, 54, 93, 0, - 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,100, 0,114, 95,116,111, 95,108, 0,112,111,105,110,116,115, 0,107, -101,114,110,105,110,103, 0,105,116, 97,108,105, 99, 0, 98,111,108,100, 0,115,104, 97,100,111,119, 0,115,104, 97,100,120, 0, -115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, 97, 0,115,104, 97,100,111,119, 99,111,108,111,114, 0,112, 97, -110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, 98,101,108, 0,119,105,100,103,101,116,108, 97, 98,101,108, 0, -119,105,100,103,101,116, 0,112, 97,110,101,108,122,111,111,109, 0,109,105,110,108, 97, 98,101,108, 99,104, 97,114,115, 0,109, -105,110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111,108,117,109,110,115,112, 97, 99,101, 0,116,101,109,112,108, 97, -116,101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, 0, 98,117,116,116,111,110,115,112, 97, 99,101,120, 0, 98,117, -116,116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108,115,112, 97, 99,101, 0,112, 97,110,101,108,111,117,116,101,114, - 0,112, 97,100, 91, 49, 93, 0,111,117,116,108,105,110,101, 91, 52, 93, 0,105,110,110,101,114, 91, 52, 93, 0,105,110,110,101, -114, 95,115,101,108, 91, 52, 93, 0,105,116,101,109, 91, 52, 93, 0,116,101,120,116, 91, 52, 93, 0,116,101,120,116, 95,115,101, -108, 91, 52, 93, 0,115,104, 97,100,101,100, 0,115,104, 97,100,101,116,111,112, 0,115,104, 97,100,101,100,111,119,110, 0,105, -110,110,101,114, 95, 97,110,105,109, 91, 52, 93, 0,105,110,110,101,114, 95, 97,110,105,109, 95,115,101,108, 91, 52, 93, 0,105, -110,110,101,114, 95,107,101,121, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 95,115,101,108, 91, 52, 93, 0,105,110,110, -101,114, 95,100,114,105,118,101,110, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 95,115,101,108, 91, 52, 93, - 0,119, 99,111,108, 95,114,101,103,117,108, 97,114, 0,119, 99,111,108, 95,116,111,111,108, 0,119, 99,111,108, 95,116,101,120, -116, 0,119, 99,111,108, 95,114, 97,100,105,111, 0,119, 99,111,108, 95,111,112,116,105,111,110, 0,119, 99,111,108, 95,116,111, -103,103,108,101, 0,119, 99,111,108, 95,110,117,109, 0,119, 99,111,108, 95,110,117,109,115,108,105,100,101,114, 0,119, 99,111, -108, 95,109,101,110,117, 0,119, 99,111,108, 95,112,117,108,108,100,111,119,110, 0,119, 99,111,108, 95,109,101,110,117, 95, 98, - 97, 99,107, 0,119, 99,111,108, 95,109,101,110,117, 95,105,116,101,109, 0,119, 99,111,108, 95, 98,111,120, 0,119, 99,111,108, - 95,115, 99,114,111,108,108, 0,119, 99,111,108, 95,112,114,111,103,114,101,115,115, 0,119, 99,111,108, 95,108,105,115,116, 95, -105,116,101,109, 0,119, 99,111,108, 95,115,116, 97,116,101, 0,105, 99,111,110,102,105,108,101, 91, 56, 48, 93, 0, 98, 97, 99, -107, 91, 52, 93, 0,116,105,116,108,101, 91, 52, 93, 0,116,101,120,116, 95,104,105, 91, 52, 93, 0,104,101, 97,100,101,114, 91, - 52, 93, 0,104,101, 97,100,101,114, 95,116,105,116,108,101, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 91, 52, - 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0, 98,117,116,116,111,110, 91, 52, 93, 0, 98,117, -116,116,111,110, 95,116,105,116,108,101, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 91, 52, 93, 0, 98,117,116, -116,111,110, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,108,105,115,116, 91, 52, 93, 0,108,105,115,116, 95,116,105,116,108, -101, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 95,104,105, 91, 52, - 93, 0,112, 97,110,101,108, 91, 52, 93, 0,112, 97,110,101,108, 95,116,105,116,108,101, 91, 52, 93, 0,112, 97,110,101,108, 95, -116,101,120,116, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, - 52, 93, 0,115,104, 97,100,101, 50, 91, 52, 93, 0,104,105,108,105,116,101, 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119, -105,114,101, 91, 52, 93, 0,115,101,108,101, 99,116, 91, 52, 93, 0,108, 97,109,112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, - 52, 93, 0,103,114,111,117,112, 91, 52, 93, 0,103,114,111,117,112, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,110, -115,102,111,114,109, 91, 52, 93, 0,118,101,114,116,101,120, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,101,108,101, 99,116, - 91, 52, 93, 0,101,100,103,101, 91, 52, 93, 0,101,100,103,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 95, -115,101, 97,109, 91, 52, 93, 0,101,100,103,101, 95,115,104, 97,114,112, 91, 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115, -101,108, 91, 52, 93, 0,101,100,103,101, 95, 99,114,101, 97,115,101, 91, 52, 93, 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99, -101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,102, 97, 99,101, 95,100,111,116, 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, - 93, 0,118,101,114,116,101,120, 95,110,111,114,109, 97,108, 91, 52, 93, 0, 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, - 0, 98,111,110,101, 95,112,111,115,101, 91, 52, 93, 0,115,116,114,105,112, 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108, -101, 99,116, 91, 52, 93, 0, 99,102,114, 97,109,101, 91, 52, 93, 0,110,117,114, 98, 95,117,108,105,110,101, 91, 52, 93, 0,110, -117,114, 98, 95,118,108,105,110,101, 91, 52, 93, 0, 97, 99,116, 95,115,112,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95, -115,101,108, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95,118,108,105,110,101, 91, 52, 93, 0,108, - 97,115,116,115,101,108, 95,112,111,105,110,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,102,114,101,101, 91, 52, 93, 0,104, - 97,110,100,108,101, 95, 97,117,116,111, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110, -100,108,101, 95, 97,108,105,103,110, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95,102,114,101,101, 91, 52, 93, 0, -104, 97,110,100,108,101, 95,115,101,108, 95, 97,117,116,111, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95,118,101, - 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97,108,105,103,110, 91, 52, 93, 0,100,115, 95, 99,104, 97, -110,110,101,108, 91, 52, 93, 0,100,115, 95,115,117, 98, 99,104, 97,110,110,101,108, 91, 52, 93, 0, 99,111,110,115,111,108,101, - 95,111,117,116,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,112,117,116, 91, 52, 93, 0, 99,111,110,115, -111,108,101, 95,105,110,102,111, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,101,114,114,111,114, 91, 52, 93, 0, 99,111,110, -115,111,108,101, 95, 99,117,114,115,111,114, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,105,122,101, 0,102, 97, 99,101,100, -111,116, 95,115,105,122,101, 0, 98,112, 97,100, 91, 50, 93, 0,115,121,110,116, 97,120,108, 91, 52, 93, 0,115,121,110,116, 97, -120,110, 91, 52, 93, 0,115,121,110,116, 97,120, 98, 91, 52, 93, 0,115,121,110,116, 97,120,118, 91, 52, 93, 0,115,121,110,116, - 97,120, 99, 91, 52, 93, 0,109,111,118,105,101, 91, 52, 93, 0,105,109, 97,103,101, 91, 52, 93, 0,115, 99,101,110,101, 91, 52, - 93, 0, 97,117,100,105,111, 91, 52, 93, 0,101,102,102,101, 99,116, 91, 52, 93, 0,112,108,117,103,105,110, 91, 52, 93, 0,116, -114, 97,110,115,105,116,105,111,110, 91, 52, 93, 0,109,101,116, 97, 91, 52, 93, 0,101,100,105,116,109,101,115,104, 95, 97, 99, -116,105,118,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 91, 52, 93, 0,104, 97,110,100,108,101, 95, -118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115, -105,122,101, 0,104,112, 97,100, 91, 55, 93, 0,112,114,101,118,105,101,119, 95, 98, 97, 99,107, 91, 52, 93, 0,115,111,108,105, -100, 91, 52, 93, 0,116,117,105, 0,116, 98,117,116,115, 0,116,118, 51,100, 0,116,102,105,108,101, 0,116,105,112,111, 0,116, -105,110,102,111, 0,116,115,110,100, 0,116, 97, 99,116, 0,116,110,108, 97, 0,116,115,101,113, 0,116,105,109, 97, 0,116,105, -109, 97,115,101,108, 0,116,101,120,116, 0,116,111,111,112,115, 0,116,116,105,109,101, 0,116,110,111,100,101, 0,116,108,111, -103,105, 99, 0,116,117,115,101,114,112,114,101,102, 0,116, 99,111,110,115,111,108,101, 0,116, 97,114,109, 91, 50, 48, 93, 0, - 97, 99,116,105,118,101, 95,116,104,101,109,101, 95, 97,114,101, 97, 0,109,111,100,117,108,101, 91, 54, 52, 93, 0,115,112,101, - 99, 91, 52, 93, 0,100,117,112,102,108, 97,103, 0,115, 97,118,101,116,105,109,101, 0,116,101,109,112,100,105,114, 91, 49, 54, - 48, 93, 0,102,111,110,116,100,105,114, 91, 49, 54, 48, 93, 0,114,101,110,100,101,114,100,105,114, 91, 49, 54, 48, 93, 0,116, -101,120,116,117,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,116,101,120,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117, -103,115,101,113,100,105,114, 91, 49, 54, 48, 93, 0,112,121,116,104,111,110,100,105,114, 91, 49, 54, 48, 93, 0,115,111,117,110, -100,100,105,114, 91, 49, 54, 48, 93, 0,105,109, 97,103,101, 95,101,100,105,116,111,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, - 95,112,108, 97,121,101,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 95,112,114,101,115,101,116, 0, -118, 50,100, 95,109,105,110, 95,103,114,105,100,115,105,122,101, 0,116,105,109,101, 99,111,100,101, 95,115,116,121,108,101, 0, -118,101,114,115,105,111,110,115, 0,100, 98,108, 95, 99,108,105, 99,107, 95,116,105,109,101, 0,103, 97,109,101,102,108, 97,103, -115, 0,119,104,101,101,108,108,105,110,101,115, 99,114,111,108,108, 0,117,105,102,108, 97,103, 0,108, 97,110,103,117, 97,103, -101, 0,117,115,101,114,112,114,101,102, 0,118,105,101,119,122,111,111,109, 0,109,105,120, 98,117,102,115,105,122,101, 0, 97, -117,100,105,111,100,101,118,105, 99,101, 0, 97,117,100,105,111,114, 97,116,101, 0, 97,117,100,105,111,102,111,114,109, 97,116, - 0, 97,117,100,105,111, 99,104, 97,110,110,101,108,115, 0,100,112,105, 0,101,110, 99,111,100,105,110,103, 0,116,114, 97,110, -115,111,112,116,115, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 49, 0,109,101,110,117,116,104,114,101,115,104,111, -108,100, 50, 0,116,104,101,109,101,115, 0,117,105,102,111,110,116,115, 0,117,105,115,116,121,108,101,115, 0,107,101,121,109, - 97,112,115, 0, 97,100,100,111,110,115, 0,107,101,121, 99,111,110,102,105,103,115,116,114, 91, 54, 52, 93, 0,117,110,100,111, -115,116,101,112,115, 0,117,110,100,111,109,101,109,111,114,121, 0,103,112, 95,109, 97,110,104, 97,116,116,101,110,100,105,115, -116, 0,103,112, 95,101,117, 99,108,105,100,101, 97,110,100,105,115,116, 0,103,112, 95,101,114, 97,115,101,114, 0,103,112, 95, -115,101,116,116,105,110,103,115, 0,116, 98, 95,108,101,102,116,109,111,117,115,101, 0,116, 98, 95,114,105,103,104,116,109,111, -117,115,101, 0,108,105,103,104,116, 91, 51, 93, 0,116,119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108, 97,103, 0, -116,119, 95,104, 97,110,100,108,101,115,105,122,101, 0,116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101,111,117,116, - 0,116,101,120, 99,111,108,108,101, 99,116,114, 97,116,101, 0,119,109,100,114, 97,119,109,101,116,104,111,100, 0,119,109,112, - 97,100, 0,109,101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101,102,101,116, 99,104,102,114, 97,109,101,115, 0, -102,114, 97,109,101,115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95,114,111,116, 95, 97,110,103,108,101, 0,111, 98, - 99,101,110,116,101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114,118,105, 98,114,105,103,104,116, 0,114,101, 99, -101,110,116, 95,102,105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101,119,116,120, 0,103,108,114,101,115,108,105,109, -105,116, 0,110,100,111,102, 95,112, 97,110, 0,110,100,111,102, 95,114,111,116, 97,116,101, 0, 99,117,114,115,115,105,122,101, - 0, 99,111,108,111,114, 95,112,105, 99,107,101,114, 95,116,121,112,101, 0,105,112,111, 95,110,101,119, 0,107,101,121,104, 97, -110,100,108,101,115, 95,110,101,119, 0,115, 99,114, 99, 97,115,116,102,112,115, 0,115, 99,114, 99, 97,115,116,119, 97,105,116, - 0,112,114,111,112,119,105,100,116,104, 0,118,101,114,115,101,109, 97,115,116,101,114, 91, 49, 54, 48, 93, 0,118,101,114,115, -101,117,115,101,114, 91, 49, 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108,105,112, 0, 99,111, 98, 97, 95,119,101,105,103, -104,116, 0,118,101,114,116, 98, 97,115,101, 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,115,101, 0, 42,110, -101,119,115, 99,101,110,101, 0,102,117,108,108, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0,100,111, 95,114,101, -102,114,101,115,104, 0,100,111, 95,100,114, 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, 97,119, 95,112, 97, -105,110,116, 99,117,114,115,111,114, 0,100,111, 95,100,114, 97,119, 95,100,114, 97,103, 0,115,119, 97,112, 0,109, 97,105,110, -119,105,110, 0,115,117, 98,119,105,110, 97, 99,116,105,118,101, 0, 42, 97,110,105,109,116,105,109,101,114, 0, 42, 99,111,110, -116,101,120,116, 0,104, 97,110,100,108,101,114, 91, 56, 93, 0, 42,110,101,119,118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118, - 50, 0, 42,116,121,112,101, 0,112, 97,110,101,108,110, 97,109,101, 91, 54, 52, 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, - 93, 0,100,114, 97,119,110, 97,109,101, 91, 54, 52, 93, 0,111,102,115,120, 0,111,102,115,121, 0,115,105,122,101,120, 0,115, -105,122,101,121, 0,108, 97, 98,101,108,111,102,115, 0,114,117,110,116,105,109,101, 95,102,108, 97,103, 0, 99,111,110,116,114, -111,108, 0,115,110, 97,112, 0,115,111,114,116,111,114,100,101,114, 0, 42,112, 97,110,101,108,116, 97, 98, 0, 42, 97, 99,116, -105,118,101,100, 97,116, 97, 0,108,105,115,116, 95,115, 99,114,111,108,108, 0,108,105,115,116, 95,115,105,122,101, 0,108,105, -115,116, 95,108, 97,115,116, 95,108,101,110, 0,108,105,115,116, 95,103,114,105,112, 95,115,105,122,101, 0,108,105,115,116, 95, -115,101, 97,114, 99,104, 91, 54, 52, 93, 0, 42,118, 51, 0, 42,118, 52, 0, 42,102,117,108,108, 0, 98,117,116,115,112, 97, 99, -101,116,121,112,101, 0,104,101, 97,100,101,114,116,121,112,101, 0,115,112, 97, 99,101,100, 97,116, 97, 0,104, 97,110,100,108, -101,114,115, 0, 97, 99,116,105,111,110,122,111,110,101,115, 0,119,105,110,114, 99,116, 0,100,114, 97,119,114, 99,116, 0,115, -119,105,110,105,100, 0,114,101,103,105,111,110,116,121,112,101, 0, 97,108,105,103,110,109,101,110,116, 0,117,105, 98,108,111, - 99,107,115, 0,112, 97,110,101,108,115, 0, 42,104,101, 97,100,101,114,115,116,114, 0, 42,114,101,103,105,111,110,100, 97,116, - 97, 0,115,117, 98,118,115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115,105,111,110, 0,112, 97,100,115, 0,109,105,110, -118,101,114,115,105,111,110, 0,109,105,110,115,117, 98,118,101,114,115,105,111,110, 0, 42, 99,117,114,115, 99,114,101,101,110, - 0, 42, 99,117,114,115, 99,101,110,101, 0,102,105,108,101,102,108, 97,103,115, 0,103,108,111, 98, 97,108,102, 0,102,105,108, -101,110, 97,109,101, 91, 50, 52, 48, 93, 0,110, 97,109,101, 91, 56, 48, 93, 0, 42,105, 98,117,102, 0, 42,105, 98,117,102, 95, - 99,111,109,112, 0, 42,115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0,110,114, 0, 98,111,116,116,111,109, 0,114,105, -103,104,116, 0,120,111,102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93, 0,103, 97,109,109, 97, 91, 51, 93, 0,103, - 97,105,110, 91, 51, 93, 0,115, 97,116,117,114, 97,116,105,111,110, 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110,101, 0, -115,116, 97,114,116,115,116,105,108,108, 0,101,110,100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0,111, -114,120, 0,111,114,121, 0, 42, 99,114,111,112, 0, 42,116,114, 97,110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, 98, - 97,108, 97,110, 99,101, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,115, -116, 97,114,116,115,116,105,108,108, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,101,110,100,115,116,105,108,108, 0, 42, -105, 98,117,102, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42,105, 98,117,102, 95,101,110,100,115,116,105,108,108, 0, 42, -105,110,115,116, 97,110, 99,101, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, 95, -112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111,102, -115, 0,109, 97, 99,104,105,110,101, 0,115,116, 97,114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,109,117,108, 0, -104, 97,110,100,115,105,122,101, 0, 97,110,105,109, 95,112,114,101,115,101,101,107, 0, 42,115,116,114,105,112, 0, 42,115, 99, -101,110,101, 95, 99, 97,109,101,114, 97, 0,101,102,102,101, 99,116, 95,102, 97,100,101,114, 0,115,112,101,101,100, 95,102, 97, -100,101,114, 0, 42,115,101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42,115, -111,117,110,100, 0, 42,115, 99,101,110,101, 95,115,111,117,110,100, 0,108,101,118,101,108, 0,112, 97,110, 0,115, 99,101,110, -101,110,114, 0,109,117,108,116,105, 99, 97,109, 95,115,111,117,114, 99,101, 0,115,116,114,111, 98,101, 0, 42,101,102,102,101, - 99,116,100, 97,116, 97, 0, 97,110,105,109, 95,115,116, 97,114,116,111,102,115, 0, 97,110,105,109, 95,101,110,100,111,102,115, - 0, 98,108,101,110,100, 95,109,111,100,101, 0, 98,108,101,110,100, 95,111,112, 97, 99,105,116,121, 0, 42,111,108,100, 98, 97, -115,101,112, 0, 42,112, 97,114,115,101,113, 0, 42,115,101,113, 98, 97,115,101,112, 0,109,101,116, 97,115,116, 97, 99,107, 0, - 42, 97, 99,116, 95,115,101,113, 0, 97, 99,116, 95,105,109, 97,103,101,100,105,114, 91, 50, 53, 54, 93, 0, 97, 99,116, 95,115, -111,117,110,100,100,105,114, 91, 50, 53, 54, 93, 0,101,100,103,101, 87,105,100,116,104, 0,102,111,114,119, 97,114,100, 0,119, -105,112,101,116,121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109,112, 0,102, 66,111,111,115,116, 0,100, 68,105,115, -116, 0,100, 81,117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0, 83, 99, 97,108,101,120, 73,110,105, 0, 83, 99, 97, -108,101,121, 73,110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, 83, 99, 97,108,101,121, 70,105,110, 0,120, 73,110,105, 0, -120, 70,105,110, 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111,116, 73,110,105, 0,114,111,116, 70,105,110, 0,105,110,116, -101,114,112,111,108, 97,116,105,111,110, 0,117,110,105,102,111,114,109, 95,115, 99, 97,108,101, 0, 42,102,114, 97,109,101, 77, - 97,112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115,116, 86, 97,108,105,100, 70,114, 97,109,101, 0, 98,117, -116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,116,111,116,112, 97,114,116, 0,110,111,114,109,102, 97, - 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,120,102, 97, 99, 0,114, 97,110,100,108,105,102,101, 0, -102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,109, 97,120,108,101,110, 0,100,101,102,118,101, 99, 91, - 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, 0, 99,104,105,108,100, 91, 52, 93, 0,109, 97,116, 91, - 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,115,116, 97,116,105, 99,115,116,101,112, 0,111,109, 97, -116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101,120, 0,102,108, 97,103, 50,110,101,103, 0,118,101,114,116, -103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, 91, 51, 50, 93, 0,118,103,114,111,117,112,110, 97,109, -101, 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102, 97, 99, 0,117,115,101,100, 0,117,115,101,100,101,108, -101,109, 0, 42,112,111,105,110, 0,114,101,115,101,116,100,105,115,116, 0,108, 97,115,116,118, 97,108, 0, 42,109, 97, 0,107, -101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,101,116, 78, 97,109,101, 91, 51, 50, 93, 0,116,111,103, -103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91, 51, 50, 93, 0,109, 97,120,118, 97,108,117,101, 91, 51, - 50, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,105,111,110, 0,109, 97,116,101,114,105, 97,108, 78, 97,109,101, 91, 51, - 50, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,114,111,112,110, 97,109,101, 91, 51, 50, 93, 0,109, 97,116,110, 97,109, -101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111,115,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0, 99, -111,110,115,116,114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114,111,109, 79, 98,106,101, 99,116, 0,115,117, 98,106,101, 99, -116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116,121,112,101, 0,112,117,108,115,101, 0,102,114,101,113, 0, -116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,116, 97,112, 0,106,111,121,105,110,100,101,120, 0, 97,120, -105,115, 95,115,105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, 0,104, 97,116, 0,104, 97,116,102, 0, -112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0, 42,109,121,110,101,119, 0,105,110,112,117,116,115, - 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,108,105,110,107,115, 0,118, 97,108,111, 0,115,116, 97,116,101, 95,109, - 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111,112, 91, 51, 50, 93, 0, 98,108,101,110,100,105,110, 0,112, -114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,115,101,116, 0,115,116,114,105,100,101, 97,120,105,115, 0,115,116,114, -105,100,101,108,101,110,103,116,104, 0,115,110,100,110,114, 0,112, 97,100, 51, 91, 50, 93, 0,112,105,116, 99,104, 0,115,111, -117,110,100, 51, 68, 0,112, 97,100, 54, 91, 49, 93, 0, 42,109,101, 0,108,105,110, 86,101,108,111, 99,105,116,121, 91, 51, 93, - 0, 97,110,103, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108,102,108, 97,103, 0,100,121,110, 95,111,112, -101,114, 97,116,105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,102,111,114, 99,101,114,111,116, 91, 51, 93, 0, -108,105,110,101, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103,117,108, 97,114,118,101,108,111, 99,105,116, -121, 91, 51, 93, 0, 42,114,101,102,101,114,101,110, 99,101, 0,109,105,110, 0,109, 97,120, 0,114,111,116,100, 97,109,112, 0, -109,105,110,108,111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, 51, 93, 0,109,105,110,114,111,116, 91, 51, 93, 0,109, 97, -120,114,111,116, 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51, 50, 93, 0, 98,117,116,115,116, 97, 0, 98,117,116,101,110, -100, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, 97,114,103, 95, 49, 0,105,110,116, 95, 97,114,103, - 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97,116, 95, 97,114,103, 95, 50, 0,116,111, 80,114,111, -112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, 99,116, 0, 98,111,100,121, 84,121,112,101, 0,102,105,108, -101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97,109,101, 91, 54, 52, 93, 0,105,110,116, 95, 97,114, -103, 0,102,108,111, 97,116, 95, 97,114,103, 0, 42,115,117, 98,116, 97,114,103,101,116, 0,103,111, 0, 97, 99, 99,101,108,108, -101,114, 97,116,105,111,110, 0,109, 97,120,115,112,101,101,100, 0,109, 97,120,114,111,116,115,112,101,101,100, 0,109, 97,120, -116,105,108,116,115,112,101,101,100, 0,116,105,108,116,100, 97,109,112, 0,115,112,101,101,100,100, 97,109,112, 0,109,105,110, - 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101,102,101,114,101,110, 99,101, 95,100,105,115,116, 97,110, 99, -101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,101, 0,114,111,108,108,111,102,102, 95,102, 97, 99,116,111,114, 0, 99,111, -110,101, 95,105,110,110,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95, 97,110,103,108,101, 0, - 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42,110,101,119,112, 97, 99,107,101,100,102,105,108,101, 0, 97, -116,116,101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, 97, 99,104,101, 0, 42,112,108, 97,121, - 98, 97, 99,107, 95,104, 97,110,100,108,101, 0, 42, 97,114,101, 97, 0, 42,108, 97,109,112,114,101,110, 0,103,111, 98,106,101, - 99,116, 0,100,117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 42,112,114,111,112, 0, 99,104,105,108,100, 98, 97,115,101, 0, -114,111,108,108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98,111,110,101, 95,109, 97,116, 91, 51, 93, - 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97,105,108, 91, 51, 93, 0, 97,114,109, 95, -109, 97,116, 91, 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0,122,119,105,100,116,104, 0,101, 97,115,101, 49, 0,101, 97, -115,101, 50, 0,114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95,116, 97,105,108, 0, 98,111,110,101, 98, 97,115,101, 0, 99, -104, 97,105,110, 98, 97,115,101, 0, 42,101,100, 98,111, 0, 42, 97, 99,116, 95, 98,111,110,101, 0, 42, 97, 99,116, 95,101,100, - 98,111,110,101, 0, 42,115,107,101,116, 99,104, 0,108, 97,121,101,114, 95,112,114,111,116,101, 99,116,101,100, 0,103,104,111, -115,116,101,112, 0,103,104,111,115,116,115,105,122,101, 0,103,104,111,115,116,116,121,112,101, 0,112, 97,116,104,115,105,122, -101, 0,103,104,111,115,116,115,102, 0,103,104,111,115,116,101,102, 0,112, 97,116,104,115,102, 0,112, 97,116,104,101,102, 0, -112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,111,105,110,116,115, 0,115,116, 97,114,116, 95,102,114, 97,109, -101, 0,101,110,100, 95,102,114, 97,109,101, 0,103,104,111,115,116, 95,115,102, 0,103,104,111,115,116, 95,101,102, 0,103,104, -111,115,116, 95, 98, 99, 0,103,104,111,115,116, 95, 97, 99, 0,103,104,111,115,116, 95,116,121,112,101, 0,103,104,111,115,116, - 95,115,116,101,112, 0,103,104,111,115,116, 95,102,108, 97,103, 0,112, 97,116,104, 95,116,121,112,101, 0,112, 97,116,104, 95, -115,116,101,112, 0,112, 97,116,104, 95,118,105,101,119,102,108, 97,103, 0,112, 97,116,104, 95, 98, 97,107,101,102,108, 97,103, - 0,112, 97,116,104, 95,115,102, 0,112, 97,116,104, 95,101,102, 0,112, 97,116,104, 95, 98, 99, 0,112, 97,116,104, 95, 97, 99, - 0, 99,111,110,115,116,102,108, 97,103, 0,105,107,102,108, 97,103, 0,115,101,108,101, 99,116,102,108, 97,103, 0, 97,103,114, -112, 95,105,110,100,101,120, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105,107,116,114,101,101, 0, 42, 98, 95, 98, -111,110,101, 95,109, 97,116,115, 0, 42,100,117, 97,108, 95,113,117, 97,116, 0, 42, 98, 95, 98,111,110,101, 95,100,117, 97,108, - 95,113,117, 97,116,115, 0,101,117,108, 91, 51, 93, 0, 99,104, 97,110, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115, -101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, 51, 93, 0,112,111,115,101, 95,116, 97, -105,108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105,109,105,116,109, 97,120, 91, 51, 93, 0,115,116, -105,102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, 0,105,107,114,111,116,119,101,105,103,104,116, - 0,105,107,108,105,110,119,101,105,103,104,116, 0, 42, 99,117,115,116,111,109, 0, 42, 99,117,115,116,111,109, 95,116,120, 0, - 99,104, 97,110, 98, 97,115,101, 0, 42, 99,104, 97,110,104, 97,115,104, 0,112,114,111,120,121, 95,108, 97,121,101,114, 0,115, -116,114,105,100,101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, 95,111,102,102,115,101,116, 91, 51, 93, - 0, 97,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,103,114,111,117,112, 0,105,107,115,111,108,118,101,114, 0, 42, -105,107,100, 97,116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,112,114,111,120,121, 95, 97, 99,116, 95, 98,111,110,101, 91, 51, - 50, 93, 0,110,117,109,105,116,101,114, 0,110,117,109,115,116,101,112, 0,109,105,110,115,116,101,112, 0,109, 97,120,115,116, -101,112, 0,115,111,108,118,101,114, 0,102,101,101,100, 98, 97, 99,107, 0,109, 97,120,118,101,108, 0,100, 97,109,112,109, 97, -120, 0,100, 97,109,112,101,112,115, 0, 99,104, 97,110,110,101,108,115, 0, 99,117,115,116,111,109, 67,111,108, 0, 99,115, 0, - 99,117,114,118,101,115, 0,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,109, 97,114,107,101,114, 0, 42,115,111,117, -114, 99,101, 0, 42,102,105,108,116,101,114, 95,103,114,112, 0,102,105,108,116,101,114,102,108, 97,103, 0, 97,100,115, 0,116, -105,109,101,115,108,105,100,101, 0, 42,103,114,112, 0,116,101,109,112, 0,110, 97,109,101, 91, 51, 48, 93, 0,111,119,110,115, -112, 97, 99,101, 0,116, 97,114,115,112, 97, 99,101, 0,101,110,102,111,114, 99,101, 0,104,101, 97,100,116, 97,105,108, 0,108, -105,110, 95,101,114,114,111,114, 0,114,111,116, 95,101,114,114,111,114, 0, 42,116, 97,114, 0,109, 97,116,114,105,120, 91, 52, - 93, 91, 52, 93, 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100,101,114, 0,116, 97,114,110,117,109, 0,116, 97,114,103,101, -116,115, 0,105,116,101,114, 97,116,105,111,110,115, 0,114,111,111,116, 98,111,110,101, 0,109, 97,120, 95,114,111,111,116, 98, -111,110,101, 0, 42,112,111,108,101,116, 97,114, 0,112,111,108,101,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112, -111,108,101, 97,110,103,108,101, 0,111,114,105,101,110,116,119,101,105,103,104,116, 0,103,114, 97, 98,116, 97,114,103,101,116, - 91, 51, 93, 0,110,117,109,112,111,105,110,116,115, 0, 99,104, 97,105,110,108,101,110, 0,120,122, 83, 99, 97,108,101, 77,111, -100,101, 0,114,101,115,101,114,118,101,100, 49, 0,114,101,115,101,114,118,101,100, 50, 0,109,105,110,109, 97,120,102,108, 97, -103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99,107,102,108, 97,103, 0,102,111,108,108,111,119, -102,108, 97,103, 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103,108,101,110,103,116,104, 0, 98,117,108, -103,101, 0,112,105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120, 88, 0, 97,120, 89, 0, 97,120, 90, 0,109,105, -110, 76,105,109,105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54, 93, 0,101,120,116,114, 97, 70,122, 0,105,110, -118,109, 97,116, 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109, 97,112, 91, 51, 93, 0,101,120,112,111, 0,102, -114,111,109, 95,109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91, 51, 93, 0,116,111, 95,109,105,110, 91, 51, 93, - 0,116,111, 95,109, 97,120, 91, 51, 93, 0,114,111,116, 65,120,105,115, 0,122,109,105,110, 0,122,109, 97,120, 0,112, 97,100, - 91, 57, 93, 0, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, 95, 97,120,105,115, 0,115,116,114,105, -100,101, 95, 97,120,105,115, 0, 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114,116, 0, 97, 99,116,101,110,100, 0, 97, - 99,116,111,102,102,115, 0,115,116,114,105,100,101,108,101,110, 0,115, 99, 97,108,101, 0, 98,108,101,110,100,111,117,116, 0, -115,116,114,105,100,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,111,102,102,115, 95, 98,111,110,101, 91, 51, 50, 93, 0, -104, 97,115,105,110,112,117,116, 0,104, 97,115,111,117,116,112,117,116, 0,100, 97,116, 97,116,121,112,101, 0,115,111, 99,107, -101,116,116,121,112,101, 0, 42,110,101,119, 95,115,111, 99,107, 0,110,115, 0,108,105,109,105,116, 0,115,116, 97, 99,107, 95, -105,110,100,101,120, 0,105,110,116,101,114,110, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 95,101,120,116, 0,108,111, 99, -120, 0,108,111, 99,121, 0,111,119,110, 95,105,110,100,101,120, 0,116,111, 95,105,110,100,101,120, 0, 42,116,111,115,111, 99, -107, 0, 42,108,105,110,107, 0, 42,110,101,119, 95,110,111,100,101, 0,108, 97,115,116,121, 0,111,117,116,112,117,116,115, 0, - 42,115,116,111,114, 97,103,101, 0,109,105,110,105,119,105,100,116,104, 0, 99,117,115,116,111,109, 49, 0, 99,117,115,116,111, -109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117,115,116,111,109, 52, 0,110,101,101,100, 95,101,120,101, 99, 0,101,120,101, - 99, 0, 42,116,104,114,101, 97,100,100, 97,116, 97, 0,116,111,116,114, 0, 98,117,116,114, 0,112,114,118,114, 0, 42, 98,108, -111, 99,107, 0, 42,116,121,112,101,105,110,102,111, 0, 42,102,114,111,109,110,111,100,101, 0, 42,116,111,110,111,100,101, 0, - 42,102,114,111,109,115,111, 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0, 42,115,116, 97, 99,107, 0, 42,116,104, -114,101, 97,100,115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, 97, 99,107,115,105,122,101, 0, 99,117,114, 95,105,110,100, -101,120, 0, 97,108,108,116,121,112,101,115, 0, 42,111,119,110,116,121,112,101, 0,112, 97,100, 50, 91, 50, 93, 0, 40, 42,112, -114,111,103,114,101,115,115, 41, 40, 41, 0, 40, 42,115,116, 97,116,115, 95,100,114, 97,119, 41, 40, 41, 0, 40, 42,116,101,115, -116, 95, 98,114,101, 97,107, 41, 40, 41, 0, 42,116, 98,104, 0, 42,112,114,104, 0, 42,115,100,104, 0, 99,121, 99,108,105, 99, - 0,109,111,118,105,101, 0,115, 97,109,112,108,101,115, 0,109,105,110,115,112,101,101,100, 0,112,101,114, 99,101,110,116,120, - 0,112,101,114, 99,101,110,116,121, 0, 98,111,107,101,104, 0,103, 97,109,109, 97, 0, 99,117,114,118,101,100, 0,105,109, 97, -103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109, 97,103,101, 95,105,110, 95,104,101,105,103,104,116, 0, 99,101,110,116, -101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,115,112,105,110, 0,119,114, 97,112, 0,115,105,103,109, 97, 95, 99,111, -108,111,114, 0,115,105,103,109, 97, 95,115,112, 97, 99,101, 0,104,117,101, 0,115, 97,116, 0,116, 49, 0,116, 50, 0,116, 51, - 0,102,115,116,114,101,110,103,116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, 91, 52, 93, 0, 97,108,103,111,114,105,116, -104,109, 0, 99,104, 97,110,110,101,108, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, 0, 99,111,108,110, 97,109,101, 91, 51, - 50, 93, 0, 98,107,116,121,112,101, 0,114,111,116, 97,116,105,111,110, 0,103, 97,109, 99,111, 0,110,111, 95,122, 98,117,102, - 0,102,115,116,111,112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, 0, 42,100,105, 99,116, 0, 42,110,111, -100,101, 0, 97,110,103,108,101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105,120, 0,116,104,114,101,115,104,111,108, -100, 0,102, 97,100,101, 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105,116, 0,115,108,111,112,101, 91, 51, 93, - 0,112,111,119,101,114, 91, 51, 93, 0,108,105,109, 99,104, 97,110, 0,117,110,115,112,105,108,108, 0,108,105,109,115, 99, 97, -108,101, 0,117,115,112,105,108,108,114, 0,117,115,112,105,108,108,103, 0,117,115,112,105,108,108, 98, 0,115,104,111,114,116, -121, 0,109,105,110,116, 97, 98,108,101, 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95,105,110, 91, 50, 93, 0,101,120, -116, 95,111,117,116, 91, 50, 93, 0, 42, 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42,112,114,101,109,117,108,116, 97, - 98,108,101, 0,112,114,101,115,101,116, 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, 99, -107, 91, 51, 93, 0,119,104,105,116,101, 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, 93, - 0,120, 95,114,101,115,111,108,117,116,105,111,110, 0,100, 97,116, 97, 95,114, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,103, - 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95, 98, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,108,117,109, 97, 91, 50, 53, 54, 93, - 0,115, 97,109,112,108,101, 95,102,117,108,108, 0,115, 97,109,112,108,101, 95,108,105,110,101,115, 0, 97, 99, 99,117,114, 97, - 99,121, 0,119, 97,118,101,102,114,109, 95,109,111,100,101, 0,119, 97,118,101,102,114,109, 95, 97,108,112,104, 97, 0,119, 97, -118,101,102,114,109, 95,121,102, 97, 99, 0,119, 97,118,101,102,114,109, 95,104,101,105,103,104,116, 0,118,101, 99,115, 99,111, -112,101, 95, 97,108,112,104, 97, 0,118,101, 99,115, 99,111,112,101, 95,104,101,105,103,104,116, 0,109,105,110,109, 97,120, 91, - 51, 93, 91, 50, 93, 0,104,105,115,116, 0, 42,119, 97,118,101,102,111,114,109, 95, 49, 0, 42,119, 97,118,101,102,111,114,109, - 95, 50, 0, 42,119, 97,118,101,102,111,114,109, 95, 51, 0, 42,118,101, 99,115, 99,111,112,101, 0,119, 97,118,101,102,111,114, -109, 95,116,111,116, 0,111,102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,109,116,101,120, 0,106,105,116,116,101, -114, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,114, 97,100,105,117,115, 0,115,109,111,111,116,104, 95,115,116, -114,111,107,101, 95,102, 97, 99,116,111,114, 0,114, 97,116,101, 0,114,103, 98, 91, 51, 93, 0,115, 99,117,108,112,116, 95,116, -111,111,108, 0,118,101,114,116,101,120,112, 97,105,110,116, 95,116,111,111,108, 0,105,109, 97,103,101,112, 97,105,110,116, 95, -116,111,111,108, 0, 97, 99,116,105,118,101, 95,114,110,100, 0, 97, 99,116,105,118,101, 95, 99,108,111,110,101, 0, 97, 99,116, -105,118,101, 95,109, 97,115,107, 0, 42,108, 97,121,101,114,115, 0,116,111,116,108, 97,121,101,114, 0,109, 97,120,108, 97,121, -101,114, 0,116,111,116,115,105,122,101, 0, 42,112,111,111,108, 0, 42,101,120,116,101,114,110, 97,108, 0,118,101,108, 91, 51, - 93, 0,114,111,116, 91, 52, 93, 0, 97,118,101, 91, 51, 93, 0, 42,103,114,111,117,110,100, 0,119, 97,110,100,101,114, 91, 51, - 93, 0,110,117,109, 0,112, 97,114,101,110,116, 0,112, 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0,102, -111,102,102,115,101,116, 0,114,116, 91, 50, 93, 0,112,114,101,118, 95,115,116, 97,116,101, 0, 42,104, 97,105,114, 0, 42, 98, -111,105,100, 0,100,105,101,116,105,109,101, 0,110,117,109, 95,100,109, 99, 97, 99,104,101, 0,104, 97,105,114, 95,105,110,100, -101,120, 0, 97,108,105,118,101, 0,115,112,114,105,110,103, 95,107, 0,114,101,115,116, 95,108,101,110,103,116,104, 0,118,105, -115, 99,111,115,105,116,121, 95,111,109,101,103, 97, 0,118,105,115, 99,111,115,105,116,121, 95, 98,101,116, 97, 0,115,116,105, -102,102,110,101,115,115, 95,107, 0,115,116,105,102,102,110,101,115,115, 95,107,110,101, 97,114, 0,114,101,115,116, 95,100,101, -110,115,105,116,121, 0, 98,117,111,121, 97,110, 99,121, 0, 42, 98,111,105,100,115, 0, 42,102,108,117,105,100, 0,100,105,115, -116,114, 0,112,104,121,115,116,121,112,101, 0, 97,118,101,109,111,100,101, 0,114,101, 97, 99,116,101,118,101,110,116, 0,100, -114, 97,119, 0,100,114, 97,119, 95, 97,115, 0,100,114, 97,119, 95,115,105,122,101, 0, 99,104,105,108,100,116,121,112,101, 0, -114,101,110, 95, 97,115, 0,115,117, 98,102,114, 97,109,101,115, 0,114,101,110, 95,115,116,101,112, 0,104, 97,105,114, 95,115, -116,101,112, 0,107,101,121,115, 95,115,116,101,112, 0, 97,100, 97,112,116, 95, 97,110,103,108,101, 0, 97,100, 97,112,116, 95, -112,105,120, 0,114,111,116,102,114,111,109, 0,105,110,116,101,103,114, 97,116,111,114, 0, 98, 98, 95, 97,108,105,103,110, 0, - 98, 98, 95,117,118, 95,115,112,108,105,116, 0, 98, 98, 95, 97,110,105,109, 0, 98, 98, 95,115,112,108,105,116, 95,111,102,102, -115,101,116, 0, 98, 98, 95,116,105,108,116, 0, 98, 98, 95,114, 97,110,100, 95,116,105,108,116, 0, 98, 98, 95,111,102,102,115, -101,116, 91, 50, 93, 0,115,105,109,112,108,105,102,121, 95,114,101,102,115,105,122,101, 0,115,105,109,112,108,105,102,121, 95, -114, 97,116,101, 0,115,105,109,112,108,105,102,121, 95,116,114, 97,110,115,105,116,105,111,110, 0,115,105,109,112,108,105,102, -121, 95,118,105,101,119,112,111,114,116, 0,116,105,109,101,116,119,101, 97,107, 0,106,105,116,102, 97, 99, 0,101,102,102, 95, -104, 97,105,114, 0,103,114,105,100, 95,114,101,115, 0,112, 97,114,116,102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116, 97,110, -112,104, 97,115,101, 0,114,101, 97, 99,116,102, 97, 99, 0,111, 98, 95,118,101,108, 91, 51, 93, 0, 97,118,101,102, 97, 99, 0, -112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,114,111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, 99, - 0,114, 97,110,100,115,105,122,101, 0,114,101, 97, 99,116,115,104, 97,112,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97,103, -102, 97, 99, 0, 98,114,111,119,110,102, 97, 99, 0,100, 97,109,112,102, 97, 99, 0,114, 97,110,100,108,101,110,103,116,104, 0, - 99,104,105,108,100, 95,110, 98,114, 0,114,101,110, 95, 99,104,105,108,100, 95,110, 98,114, 0,112, 97,114,101,110,116,115, 0, - 99,104,105,108,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,110,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,100, - 0, 99,104,105,108,100,102,108, 97,116, 0, 99,108,117,109,112,112,111,119, 0,114,111,117,103,104, 49, 0,114,111,117,103,104, - 49, 95,115,105,122,101, 0,114,111,117,103,104, 50, 0,114,111,117,103,104, 50, 95,115,105,122,101, 0,114,111,117,103,104, 50, - 95,116,104,114,101,115, 0,114,111,117,103,104, 95,101,110,100, 0,114,111,117,103,104, 95,101,110,100, 95,115,104, 97,112,101, - 0, 99,108,101,110,103,116,104, 0, 99,108,101,110,103,116,104, 95,116,104,114,101,115, 0, 98,114, 97,110, 99,104, 95,116,104, -114,101,115, 0,100,114, 97,119, 95,108,105,110,101, 91, 50, 93, 0,112, 97,116,104, 95,115,116, 97,114,116, 0,112, 97,116,104, - 95,101,110,100, 0,116,114, 97,105,108, 95, 99,111,117,110,116, 0,107,101,121,101,100, 95,108,111,111,112,115, 0,100,117,112, -108,105,119,101,105,103,104,116,115, 0, 42,101,102,102, 95,103,114,111,117,112, 0, 42,100,117,112, 95,111, 98, 0, 42, 98, 98, - 95,111, 98, 0, 42,112,100, 50, 0, 42,112, 97,114,116, 0, 42,112, 97,114,116,105, 99,108,101,115, 0, 42, 42,112, 97,116,104, - 99, 97, 99,104,101, 0, 42, 42, 99,104,105,108,100, 99, 97, 99,104,101, 0,112, 97,116,104, 99, 97, 99,104,101, 98,117,102,115, - 0, 99,104,105,108,100, 99, 97, 99,104,101, 98,117,102,115, 0, 42, 99,108,109,100, 0, 42,104, 97,105,114, 95,105,110, 95,100, -109, 0, 42,104, 97,105,114, 95,111,117,116, 95,100,109, 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42,108, 97,116,116,105, - 99,101, 0,116,114,101,101, 95,102,114, 97,109,101, 0,116,111,116, 99,104,105,108,100, 0,116,111,116, 99, 97, 99,104,101,100, - 0,116,111,116, 99,104,105,108,100, 99, 97, 99,104,101, 0,116, 97,114,103,101,116, 95,112,115,121,115, 0,116,111,116,107,101, -121,101,100, 0, 98, 97,107,101,115,112, 97, 99,101, 0, 98, 98, 95,117,118,110, 97,109,101, 91, 51, 93, 91, 51, 50, 93, 0,118, -103,114,111,117,112, 91, 49, 50, 93, 0,118,103, 95,110,101,103, 0,114,116, 51, 0, 42,114,101,110,100,101,114,100, 97,116, 97, - 0, 42,101,102,102,101, 99,116,111,114,115, 0, 42,116,114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97,110,100, 0, 67,100, -105,115, 0, 67,118,105, 0,115,116,114,117, 99,116,117,114, 97,108, 0, 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98,101, -110,100, 0,109, 97,120, 95,115,116,114,117, 99,116, 0,109, 97,120, 95,115,104,101, 97,114, 0, 97,118,103, 95,115,112,114,105, -110,103, 95,108,101,110, 0,116,105,109,101,115, 99, 97,108,101, 0,101,102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108,101, - 0,101,102,102, 95,119,105,110,100, 95,115, 99, 97,108,101, 0,115,105,109, 95,116,105,109,101, 95,111,108,100, 0,118,101,108, -111, 99,105,116,121, 95,115,109,111,111,116,104, 0, 99,111,108,108,105,100,101,114, 95,102,114,105, 99,116,105,111,110, 0,115, -116,101,112,115, 80,101,114, 70,114, 97,109,101, 0,112,114,101,114,111,108,108, 0,109, 97,120,115,112,114,105,110,103,108,101, -110, 0,115,111,108,118,101,114, 95,116,121,112,101, 0,118,103,114,111,117,112, 95, 98,101,110,100, 0,118,103,114,111,117,112, - 95,109, 97,115,115, 0,118,103,114,111,117,112, 95,115,116,114,117, 99,116, 0,115,104, 97,112,101,107,101,121, 95,114,101,115, -116, 0,112,114,101,115,101,116,115, 0,114,101,115,101,116, 0, 42, 99,111,108,108,105,115,105,111,110, 95,108,105,115,116, 0, -101,112,115,105,108,111,110, 0,115,101,108,102, 95,102,114,105, 99,116,105,111,110, 0,115,101,108,102,101,112,115,105,108,111, -110, 0,115,101,108,102, 95,108,111,111,112, 95, 99,111,117,110,116, 0,108,111,111,112, 95, 99,111,117,110,116, 0,112,114,101, -115,115,117,114,101, 0,116,104,105, 99,107,110,101,115,115, 0,115,116,114,111,107,101,115, 0,102,114, 97,109,101,110,117,109, - 0, 42, 97, 99,116,102,114, 97,109,101, 0,103,115,116,101,112, 0,105,110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102, -101,114, 95,115,105,122,101, 0,115, 98,117,102,102,101,114, 95,115,102,108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, 42, -116,121,112,101,115,116,114, 0, 42,109,101,115,115, 97,103,101, 0,108,105,115,116, 0,112,114,105,110,116,108,101,118,101,108, - 0,115,116,111,114,101,108,101,118,101,108, 0, 42,114,101,112,111,114,116,116,105,109,101,114, 0,103,114,101,121,115, 99, 97, -108,101, 0,119,105,100,116,104,102, 97, 99, 0, 42,119,105,110,100,114, 97,119, 97, 98,108,101, 0, 42,119,105,110, 97, 99,116, -105,118,101, 0,119,105,110,100,111,119,115, 0,105,110,105,116,105, 97,108,105,122,101,100, 0,102,105,108,101, 95,115, 97,118, -101,100, 0,111,112, 95,117,110,100,111, 95,100,101,112,116,104, 0,111,112,101,114, 97,116,111,114,115, 0,113,117,101,117,101, - 0,114,101,112,111,114,116,115, 0,106,111, 98,115, 0,112, 97,105,110,116, 99,117,114,115,111,114,115, 0,100,114, 97,103,115, - 0,107,101,121, 99,111,110,102,105,103,115, 0, 42,100,101,102, 97,117,108,116, 99,111,110,102, 0,116,105,109,101,114,115, 0, - 42, 97,117,116,111,115, 97,118,101,116,105,109,101,114, 0, 42,103,104,111,115,116,119,105,110, 0,103,114, 97, 98, 99,117,114, -115,111,114, 0, 42,110,101,119,115, 99,114,101,101,110, 0,115, 99,114,101,101,110,110, 97,109,101, 91, 51, 50, 93, 0,112,111, -115,120, 0,112,111,115,121, 0,119,105,110,100,111,119,115,116, 97,116,101, 0,109,111,110,105,116,111,114, 0,108, 97,115,116, - 99,117,114,115,111,114, 0, 97,100,100,109,111,117,115,101,109,111,118,101, 0, 42,101,118,101,110,116,115,116, 97,116,101, 0, - 42, 99,117,114,115,119,105,110, 0, 42,116,119,101, 97,107, 0,100,114, 97,119,109,101,116,104,111,100, 0,100,114, 97,119,102, - 97,105,108, 0, 42,100,114, 97,119,100, 97,116, 97, 0,109,111,100, 97,108,104, 97,110,100,108,101,114,115, 0,115,117, 98,119, -105,110,100,111,119,115, 0,103,101,115,116,117,114,101, 0,105,100,110, 97,109,101, 91, 54, 52, 93, 0,112,114,111,112,118, 97, -108,117,101, 0,115,104,105,102,116, 0, 99,116,114,108, 0, 97,108,116, 0,111,115,107,101,121, 0,107,101,121,109,111,100,105, -102,105,101,114, 0,109, 97,112,116,121,112,101, 0, 42,112,116,114, 0,105,116,101,109,115, 0,115,112, 97, 99,101,105,100, 0, -114,101,103,105,111,110,105,100, 0,107,109,105, 95,105,100, 0, 40, 42,112,111,108,108, 41, 40, 41, 0, 42,109,111,100, 97,108, - 95,105,116,101,109,115, 0, 98, 97,115,101,110, 97,109,101, 91, 54, 52, 93, 0, 97, 99,116,107,101,121,109, 97,112, 0, 42, 99, -117,115,116,111,109,100, 97,116, 97, 0, 42,112,121, 95,105,110,115,116, 97,110, 99,101, 0, 42,114,101,112,111,114,116,115, 0, -109, 97, 99,114,111, 0, 42,111,112,109, 0, 42,101,100, 97,116, 97, 0,105,110,102,108,117,101,110, 99,101, 0, 42, 99,111,101, -102,102,105, 99,105,101,110,116,115, 0, 97,114,114, 97,121,115,105,122,101, 0,112,111,108,121, 95,111,114,100,101,114, 0, 97, -109,112,108,105,116,117,100,101, 0,112,104, 97,115,101, 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, 97,115,101, 95, -111,102,102,115,101,116, 0,118, 97,108,117,101, 95,111,102,102,115,101,116, 0,109,105,100,118, 97,108, 0, 98,101,102,111,114, -101, 95,109,111,100,101, 0, 97,102,116,101,114, 95,109,111,100,101, 0, 98,101,102,111,114,101, 95, 99,121, 99,108,101,115, 0, - 97,102,116,101,114, 95, 99,121, 99,108,101,115, 0,114,101, 99,116, 0,112,104, 97,115,101, 0,109,111,100,105,102,105, 99, 97, -116,105,111,110, 0,115,116,101,112, 95,115,105,122,101, 0, 42,114,110, 97, 95,112, 97,116,104, 0,112, 99,104, 97,110, 95,110, - 97,109,101, 91, 51, 50, 93, 0,116,114, 97,110,115, 67,104, 97,110, 0,105,100,116,121,112,101, 0,116, 97,114,103,101,116,115, - 91, 56, 93, 0,110,117,109, 95,116, 97,114,103,101,116,115, 0,118, 97,114,105, 97, 98,108,101,115, 0,101,120,112,114,101,115, -115,105,111,110, 91, 50, 53, 54, 93, 0, 42,101,120,112,114, 95, 99,111,109,112, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, - 0, 97,114,114, 97,121, 95,105,110,100,101,120, 0, 99,111,108,111,114, 95,109,111,100,101, 0, 99,111,108,111,114, 91, 51, 93, - 0,102,114,111,109, 91, 49, 50, 56, 93, 0,116,111, 91, 49, 50, 56, 93, 0,109, 97,112,112,105,110,103,115, 0,115,116,114,105, -112,115, 0, 42,114,101,109, 97,112, 0,102, 99,117,114,118,101,115, 0,115,116,114,105,112, 95,116,105,109,101, 0, 98,108,101, -110,100,109,111,100,101, 0,101,120,116,101,110,100,109,111,100,101, 0,103,114,111,117,112, 91, 54, 52, 93, 0,103,114,111,117, -112,109,111,100,101, 0,107,101,121,105,110,103,102,108, 97,103, 0,112, 97,116,104,115, 0,116,121,112,101,105,110,102,111, 91, - 54, 52, 93, 0, 97, 99,116,105,118,101, 95,112, 97,116,104, 0, 42,116,109,112, 97, 99,116, 0,110,108, 97, 95,116,114, 97, 99, -107,115, 0, 42, 97, 99,116,115,116,114,105,112, 0,100,114,105,118,101,114,115, 0,111,118,101,114,114,105,100,101,115, 0, 97, - 99,116, 95, 98,108,101,110,100,109,111,100,101, 0, 97, 99,116, 95,101,120,116,101,110,100,109,111,100,101, 0, 97, 99,116, 95, -105,110,102,108,117,101,110, 99,101, 0,114,117,108,101, 0,111,112,116,105,111,110,115, 0,102,101, 97,114, 95,102, 97, 99,116, -111,114, 0,115,105,103,110, 97,108, 95,105,100, 0,108,111,111,107, 95, 97,104,101, 97,100, 0,111,108,111, 99, 91, 51, 93, 0, -113,117,101,117,101, 95,115,105,122,101, 0,119, 97,110,100,101,114, 0,102,108,101,101, 95,100,105,115,116, 97,110, 99,101, 0, -104,101, 97,108,116,104, 0,115,116, 97,116,101, 95,105,100, 0,114,117,108,101,115, 0, 99,111,110,100,105,116,105,111,110,115, - 0, 97, 99,116,105,111,110,115, 0,114,117,108,101,115,101,116, 95,116,121,112,101, 0,114,117,108,101, 95,102,117,122,122,105, -110,101,115,115, 0,108, 97,115,116, 95,115,116, 97,116,101, 95,105,100, 0,108, 97,110,100,105,110,103, 95,115,109,111,111,116, -104,110,101,115,115, 0, 98, 97,110,107,105,110,103, 0, 97,103,103,114,101,115,115,105,111,110, 0, 97,105,114, 95,109,105,110, - 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, 99, - 0, 97,105,114, 95,109, 97,120, 95, 97,118,101, 0, 97,105,114, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0, -108, 97,110,100, 95,106,117,109,112, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95,115,112,101,101,100, 0,108, - 97,110,100, 95,109, 97,120, 95, 97, 99, 99, 0,108, 97,110,100, 95,109, 97,120, 95, 97,118,101, 0,108, 97,110,100, 95,112,101, -114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,115,116,105, 99,107, 95,102,111,114, 99,101, 0,115,116, - 97,116,101,115, 0, 42,115,109,100, 0, 42,102,108,117,105,100, 95,103,114,111,117,112, 0, 42, 99,111,108,108, 95,103,114,111, -117,112, 0, 42,119,116, 0, 42,116,101,120, 95,119,116, 0, 42,116,101,120, 95,115,104, 97,100,111,119, 0, 42,115,104, 97,100, -111,119, 0,112, 48, 91, 51, 93, 0,112, 49, 91, 51, 93, 0,100,120, 0,111,109,101,103, 97, 0,116,101,109,112, 65,109, 98, 0, - 98,101,116, 97, 0,114,101,115, 91, 51, 93, 0, 97,109,112,108,105,102,121, 0,109, 97,120,114,101,115, 0,118,105,101,119,115, -101,116,116,105,110,103,115, 0,110,111,105,115,101, 0,100,105,115,115, 95,112,101,114, 99,101,110,116, 0,100,105,115,115, 95, -115,112,101,101,100, 0,114,101,115, 95,119,116, 91, 51, 93, 0,100,120, 95,119,116, 0,118, 51,100,110,117,109, 0, 99, 97, 99, -104,101, 95, 99,111,109,112, 0, 99, 97, 99,104,101, 95,104,105,103,104, 95, 99,111,109,112, 0, 42,112,111,105,110,116, 95, 99, - 97, 99,104,101, 91, 50, 93, 0,112,116, 99, 97, 99,104,101,115, 91, 50, 93, 0,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, -118,103,114,112, 95,104,101, 97,116, 95,115, 99, 97,108,101, 91, 50, 93, 0,118,103,114,111,117,112, 95,102,108,111,119, 0,118, -103,114,111,117,112, 95,100,101,110,115,105,116,121, 0,118,103,114,111,117,112, 95,104,101, 97,116, 0, 42,112,111,105,110,116, -115, 95,111,108,100, 0, 42,118,101,108, 0,109, 97,116, 95,111,108,100, 91, 52, 93, 91, 52, 93, 0, 0, 0, 0, 84, 89, 80, 69, -211, 1, 0, 0, 99,104, 97,114, 0,117, 99,104, 97,114, 0,115,104,111,114,116, 0,117,115,104,111,114,116, 0,105,110,116, 0, -108,111,110,103, 0,117,108,111,110,103, 0,102,108,111, 97,116, 0,100,111,117, 98,108,101, 0,118,111,105,100, 0, 76,105,110, -107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76,105,115,116, 66, 97,115,101, 0,118,101, 99, 50,115, 0,118,101, 99, 50,102, 0, -118,101, 99, 50,105, 0,118,101, 99, 50,100, 0,118,101, 99, 51,105, 0,118,101, 99, 51,102, 0,118,101, 99, 51,100, 0,118,101, - 99, 52,105, 0,118,101, 99, 52,102, 0,118,101, 99, 52,100, 0,114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, 80,114,111,112, -101,114,116,121, 68, 97,116, 97, 0, 73, 68, 80,114,111,112,101,114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70, -105,108,101, 68, 97,116, 97, 0, 80,114,101,118,105,101,119, 73,109, 97,103,101, 0, 73,112,111, 68,114,105,118,101,114, 0, 79, - 98,106,101, 99,116, 0, 73,112,111, 67,117,114,118,101, 0, 66, 80,111,105,110,116, 0, 66,101,122, 84,114,105,112,108,101, 0, - 73,112,111, 0, 75,101,121, 66,108,111, 99,107, 0, 75,101,121, 0, 65,110,105,109, 68, 97,116, 97, 0, 84,101,120,116, 76,105, -110,101, 0, 84,101,120,116, 77, 97,114,107,101,114, 0, 84,101,120,116, 0, 80, 97, 99,107,101,100, 70,105,108,101, 0, 67, 97, -109,101,114, 97, 0, 73,109, 97,103,101, 85,115,101,114, 0, 83, 99,101,110,101, 0, 73,109, 97,103,101, 0, 71, 80, 85, 84,101, -120,116,117,114,101, 0, 97,110,105,109, 0, 82,101,110,100,101,114, 82,101,115,117,108,116, 0, 77, 84,101,120, 0, 84,101,120, - 0, 80,108,117,103,105,110, 84,101,120, 0, 67, 66, 68, 97,116, 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, 69,110,118, 77, - 97,112, 0, 73,109, 66,117,102, 0, 80,111,105,110,116, 68,101,110,115,105,116,121, 0, 86,111,120,101,108, 68, 97,116, 97, 0, - 98, 78,111,100,101, 84,114,101,101, 0, 84,101,120, 77, 97,112,112,105,110,103, 0, 76, 97,109,112, 0, 67,117,114,118,101, 77, - 97,112,112,105,110,103, 0, 87, 97,118,101, 0, 86,111,108,117,109,101, 83,101,116,116,105,110,103,115, 0, 77, 97,116,101,114, -105, 97,108, 0, 71,114,111,117,112, 0, 86, 70,111,110,116, 0, 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108, -101,109, 0, 66,111,117,110,100, 66,111,120, 0, 77,101,116, 97, 66, 97,108,108, 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110, -102,111, 0, 84,101,120,116, 66,111,120, 0, 67,117,114,118,101, 0, 80, 97,116,104, 0, 83,101,108, 66,111,120, 0, 69,100,105, -116, 70,111,110,116, 0, 77,101,115,104, 0, 77, 70, 97, 99,101, 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86, -101,114,116, 0, 77, 69,100,103,101, 0, 77, 68,101,102,111,114,109, 86,101,114,116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99, -107,121, 0, 77, 83,101,108,101, 99,116, 0, 69,100,105,116, 77,101,115,104, 0, 67,117,115,116,111,109, 68, 97,116, 97, 0, 77, -117,108,116,105,114,101,115, 0, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 0, 77, 68,101,102,111,114, -109, 87,101,105,103,104,116, 0, 77, 84,101,120, 80,111,108,121, 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111,111,112, 67,111, -108, 0, 77, 70,108,111, 97,116, 80,114,111,112,101,114,116,121, 0, 77, 73,110,116, 80,114,111,112,101,114,116,121, 0, 77, 83, -116,114,105,110,103, 80,114,111,112,101,114,116,121, 0, 79,114,105,103, 83,112, 97, 99,101, 70, 97, 99,101, 0, 77, 68,105,115, -112,115, 0, 77,117,108,116,105,114,101,115, 67,111,108, 0, 77,117,108,116,105,114,101,115, 67,111,108, 70, 97, 99,101, 0, 77, -117,108,116,105,114,101,115, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 69,100,103,101, 0, 77,117,108,116,105,114,101, -115, 76,101,118,101,108, 0, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,105,102, -105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,114,118, -101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,117,105,108,100, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, - 77, 97,115,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114,114, 97,121, 77,111,100,105,102,105,101,114, 68, 97, -116, 97, 0, 77,105,114,114,111,114, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,100,103,101, 83,112,108,105,116, 77, -111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,101,118,101,108, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 77, -101,115,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 77,111,100,105,102,105,101,114, 68, 97,116, - 97, 0, 83,109,111,107,101, 68,111,109, 97,105,110, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 70,108,111,119, 83, -101,116,116,105,110,103,115, 0, 83,109,111,107,101, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 68,105,115,112,108, 97, - 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 85, 86, 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,114, - 68, 97,116, 97, 0, 68,101, 99,105,109, 97,116,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,104, - 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67, 97,115,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87, 97, -118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114,109, 97,116,117,114,101, 77,111,100,105,102,105,101,114, 68, - 97,116, 97, 0, 72,111,111,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,100, -105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116, -104, 0, 67,108,111,116,104, 83,105,109, 83,101,116,116,105,110,103,115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,116, -105,110,103,115, 0, 80,111,105,110,116, 67, 97, 99,104,101, 0, 67,111,108,108,105,115,105,111,110, 77,111,100,105,102,105,101, -114, 68, 97,116, 97, 0, 66, 86, 72, 84,114,101,101, 0, 83,117,114,102, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, - 97, 0, 68,101,114,105,118,101,100, 77,101,115,104, 0, 66, 86, 72, 84,114,101,101, 70,114,111,109, 77,101,115,104, 0, 66,111, -111,108,101, 97,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101, 0, - 77, 68,101,102, 67,101,108,108, 0, 77,101,115,104, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, - 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, - 99,108,101, 83,121,115,116,101,109, 0, 80, 97,114,116,105, 99,108,101, 73,110,115,116, 97,110, 99,101, 77,111,100,105,102,105, -101,114, 68, 97,116, 97, 0, 69,120,112,108,111,100,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,117,108,116,105, -114,101,115, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 77,111,100,105,102,105,101,114, - 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 83,104,114,105,110,107,119,114, 97,112, - 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,105,109,112,108,101, 68,101,102,111,114,109, 77,111,100,105,102,105,101, -114, 68, 97,116, 97, 0, 83,104, 97,112,101, 75,101,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,108,105,100, -105,102,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83, 99,114,101,119, 77,111,100,105,102,105,101,114, 68, 97,116, - 97, 0, 76, 97,116,116,105, 99,101, 0, 98, 68,101,102,111,114,109, 71,114,111,117,112, 0, 83, 99,117,108,112,116, 83,101,115, -115,105,111,110, 0, 98, 65, 99,116,105,111,110, 0, 98, 80,111,115,101, 0, 98, 71, 80,100, 97,116, 97, 0, 98, 65,110,105,109, - 86,105,122, 83,101,116,116,105,110,103,115, 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 0, 66,117,108,108,101,116, 83,111, -102,116, 66,111,100,121, 0, 80, 97,114,116, 68,101,102,108,101, 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 79, 98, 72,111, -111,107, 0, 68,117,112,108,105, 79, 98,106,101, 99,116, 0, 82, 78, 71, 0, 69,102,102,101, 99,116,111,114, 87,101,105,103,104, -116,115, 0, 80, 84, 67, 97, 99,104,101, 77,101,109, 0, 80, 84, 67, 97, 99,104,101, 69,100,105,116, 0, 83, 66, 86,101,114,116, -101,120, 0, 66,111,100,121, 80,111,105,110,116, 0, 66,111,100,121, 83,112,114,105,110,103, 0, 83, 66, 83, 99,114, 97,116, 99, -104, 0, 87,111,114,108,100, 0, 66, 97,115,101, 0, 65,118,105, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116, -105,109,101, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 83,101,116,116,105, -110,103,115, 0, 70, 70, 77,112,101,103, 67,111,100,101, 99, 68, 97,116, 97, 0, 65,117,100,105,111, 68, 97,116, 97, 0, 83, 99, -101,110,101, 82,101,110,100,101,114, 76, 97,121,101,114, 0, 82,101,110,100,101,114, 68, 97,116, 97, 0, 82,101,110,100,101,114, - 80,114,111,102,105,108,101, 0, 71, 97,109,101, 68,111,109,101, 0, 71, 97,109,101, 70,114, 97,109,105,110,103, 0, 71, 97,109, -101, 68, 97,116, 97, 0, 84,105,109,101, 77, 97,114,107,101,114, 0, 80, 97,105,110,116, 0, 66,114,117,115,104, 0, 73,109, 97, -103,101, 80, 97,105,110,116, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 66,114,117,115,104, 68, 97,116, - 97, 0, 80, 97,114,116,105, 99,108,101, 69,100,105,116, 83,101,116,116,105,110,103,115, 0, 84,114, 97,110,115,102,111,114,109, - 79,114,105,101,110,116, 97,116,105,111,110, 0, 83, 99,117,108,112,116, 0, 86, 80, 97,105,110,116, 0, 84,111,111,108, 83,101, -116,116,105,110,103,115, 0, 98, 83,116, 97,116,115, 0, 85,110,105,116, 83,101,116,116,105,110,103,115, 0, 80,104,121,115,105, - 99,115, 83,101,116,116,105,110,103,115, 0, 69,100,105,116,105,110,103, 0, 83, 99,101,110,101, 83,116, 97,116,115, 0, 68, 97, -103, 70,111,114,101,115,116, 0, 66, 71,112,105, 99, 0, 82,101,103,105,111,110, 86,105,101,119, 51, 68, 0, 82,101,110,100,101, -114, 73,110,102,111, 0, 82,101,116,111,112,111, 86,105,101,119, 68, 97,116, 97, 0, 86,105,101,119, 68,101,112,116,104,115, 0, - 83,109,111,111,116,104, 86,105,101,119, 83,116,111,114,101, 0,119,109, 84,105,109,101,114, 0, 86,105,101,119, 51, 68, 0, 83, -112, 97, 99,101, 76,105,110,107, 0, 86,105,101,119, 50, 68, 0, 83,112, 97, 99,101, 73,110,102,111, 0, 98, 83, 99,114,101,101, -110, 0, 83,112, 97, 99,101, 73,112,111, 0, 98, 68,111,112,101, 83,104,101,101,116, 0, 83,112, 97, 99,101, 66,117,116,115, 0, - 83,112, 97, 99,101, 83,101,113, 0, 70,105,108,101, 83,101,108,101, 99,116, 80, 97,114, 97,109,115, 0, 83,112, 97, 99,101, 70, -105,108,101, 0, 70,105,108,101, 76,105,115,116, 0,119,109, 79,112,101,114, 97,116,111,114, 0, 70,105,108,101, 76, 97,121,111, -117,116, 0, 83,112, 97, 99,101, 79,111,112,115, 0, 84,114,101,101, 83,116,111,114,101, 0, 84,114,101,101, 83,116,111,114,101, - 69,108,101,109, 0, 83,112, 97, 99,101, 73,109, 97,103,101, 0, 83, 99,111,112,101,115, 0, 72,105,115,116,111,103,114, 97,109, - 0, 83,112, 97, 99,101, 78,108, 97, 0, 83,112, 97, 99,101, 84,101,120,116, 0, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, - 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 84,105,109,101, 0, 83,112, 97, 99,101, 78,111,100,101, 0, 83,112, 97, 99,101, - 76,111,103,105, 99, 0, 83,112, 97, 99,101, 73,109, 97, 83,101,108, 0, 67,111,110,115,111,108,101, 76,105,110,101, 0, 83,112, - 97, 99,101, 67,111,110,115,111,108,101, 0, 83,112, 97, 99,101, 85,115,101,114, 80,114,101,102, 0,117,105, 70,111,110,116, 0, -117,105, 70,111,110,116, 83,116,121,108,101, 0,117,105, 83,116,121,108,101, 0,117,105, 87,105,100,103,101,116, 67,111,108,111, -114,115, 0,117,105, 87,105,100,103,101,116, 83,116, 97,116,101, 67,111,108,111,114,115, 0, 84,104,101,109,101, 85, 73, 0, 84, -104,101,109,101, 83,112, 97, 99,101, 0, 84,104,101,109,101, 87,105,114,101, 67,111,108,111,114, 0, 98, 84,104,101,109,101, 0, - 98, 65,100,100,111,110, 0, 83,111,108,105,100, 76,105,103,104,116, 0, 85,115,101,114, 68,101,102, 0, 83, 99,114, 86,101,114, -116, 0, 83, 99,114, 69,100,103,101, 0, 80, 97,110,101,108, 0, 80, 97,110,101,108, 84,121,112,101, 0,117,105, 76, 97,121,111, -117,116, 0, 83, 99,114, 65,114,101, 97, 0, 83,112, 97, 99,101, 84,121,112,101, 0, 65, 82,101,103,105,111,110, 0, 65, 82,101, -103,105,111,110, 84,121,112,101, 0, 70,105,108,101, 71,108,111, 98, 97,108, 0, 83,116,114,105,112, 69,108,101,109, 0, 84, 83, -116,114,105,112, 69,108,101,109, 0, 83,116,114,105,112, 67,114,111,112, 0, 83,116,114,105,112, 84,114, 97,110,115,102,111,114, -109, 0, 83,116,114,105,112, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 83,116,114,105,112, 80,114,111,120,121, 0, 83, -116,114,105,112, 0, 80,108,117,103,105,110, 83,101,113, 0, 83,101,113,117,101,110, 99,101, 0, 98, 83,111,117,110,100, 0, 77, -101,116, 97, 83,116, 97, 99,107, 0, 87,105,112,101, 86, 97,114,115, 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, 97,110,115, -102,111,114,109, 86, 97,114,115, 0, 83,111,108,105,100, 67,111,108,111,114, 86, 97,114,115, 0, 83,112,101,101,100, 67,111,110, -116,114,111,108, 86, 97,114,115, 0, 69,102,102,101, 99,116, 0, 66,117,105,108,100, 69,102,102, 0, 80, 97,114,116, 69,102,102, - 0, 80, 97,114,116,105, 99,108,101, 0, 87, 97,118,101, 69,102,102, 0, 98, 80,114,111,112,101,114,116,121, 0, 98, 78,101, 97, -114, 83,101,110,115,111,114, 0, 98, 77,111,117,115,101, 83,101,110,115,111,114, 0, 98, 84,111,117, 99,104, 83,101,110,115,111, -114, 0, 98, 75,101,121, 98,111, 97,114,100, 83,101,110,115,111,114, 0, 98, 80,114,111,112,101,114,116,121, 83,101,110,115,111, -114, 0, 98, 65, 99,116,117, 97,116,111,114, 83,101,110,115,111,114, 0, 98, 68,101,108, 97,121, 83,101,110,115,111,114, 0, 98, - 67,111,108,108,105,115,105,111,110, 83,101,110,115,111,114, 0, 98, 82, 97,100, 97,114, 83,101,110,115,111,114, 0, 98, 82, 97, -110,100,111,109, 83,101,110,115,111,114, 0, 98, 82, 97,121, 83,101,110,115,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 83, -101,110,115,111,114, 0, 98, 77,101,115,115, 97,103,101, 83,101,110,115,111,114, 0, 98, 83,101,110,115,111,114, 0, 98, 67,111, -110,116,114,111,108,108,101,114, 0, 98, 74,111,121,115,116,105, 99,107, 83,101,110,115,111,114, 0, 98, 69,120,112,114,101,115, -115,105,111,110, 67,111,110,116, 0, 98, 80,121,116,104,111,110, 67,111,110,116, 0, 98, 65, 99,116,117, 97,116,111,114, 0, 98, - 65,100,100, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 65, 99,116,105,111,110, 65, 99,116,117, 97,116,111, -114, 0, 98, 83,111,117,110,100, 65, 99,116,117, 97,116,111,114, 0, 83,111,117,110,100, 51, 68, 0, 98, 69,100,105,116, 79, 98, -106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83, 99,101,110,101, 65, 99,116,117, 97,116,111,114, 0, 98, 80,114,111, -112,101,114,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 73, -112,111, 65, 99,116,117, 97,116,111,114, 0, 98, 67, 97,109,101,114, 97, 65, 99,116,117, 97,116,111,114, 0, 98, 67,111,110,115, -116,114, 97,105,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 71,114,111,117,112, 65, 99,116,117, 97,116,111,114, 0, 98, 82, - 97,110,100,111,109, 65, 99,116,117, 97,116,111,114, 0, 98, 77,101,115,115, 97,103,101, 65, 99,116,117, 97,116,111,114, 0, 98, - 71, 97,109,101, 65, 99,116,117, 97,116,111,114, 0, 98, 86,105,115,105, 98,105,108,105,116,121, 65, 99,116,117, 97,116,111,114, - 0, 98, 84,119,111, 68, 70,105,108,116,101,114, 65, 99,116,117, 97,116,111,114, 0, 98, 80, 97,114,101,110,116, 65, 99,116,117, - 97,116,111,114, 0, 98, 83,116, 97,116,101, 65, 99,116,117, 97,116,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 65, 99,116, -117, 97,116,111,114, 0, 70,114,101,101, 67, 97,109,101,114, 97, 0, 83,112, 97, 99,101, 83,111,117,110,100, 0, 71,114,111,117, -112, 79, 98,106,101, 99,116, 0, 66,111,110,101, 0, 98, 65,114,109, 97,116,117,114,101, 0, 98, 77,111,116,105,111,110, 80, 97, -116,104, 86,101,114,116, 0, 98, 80,111,115,101, 67,104, 97,110,110,101,108, 0, 71, 72, 97,115,104, 0, 98, 73, 75, 80, 97,114, - 97,109, 0, 98, 73,116, 97,115, 99, 0, 98, 65, 99,116,105,111,110, 71,114,111,117,112, 0, 83,112, 97, 99,101, 65, 99,116,105, -111,110, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 67,104, 97, -110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 84, 97,114,103, -101,116, 0, 98, 80,121,116,104,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 75,105,110,101,109, 97,116,105, 99, 67, -111,110,115,116,114, 97,105,110,116, 0, 98, 83,112,108,105,110,101, 73, 75, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84, -114, 97, 99,107, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,101, 76,105,107,101, 67,111,110,115, -116,114, 97,105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105, -122,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83, 97,109,101, 86,111,108,117,109,101, 67,111,110,115, -116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 77,105,110, - 77, 97,120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, - 98, 76,111, 99,107, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68, 97,109,112, 84,114, 97, 99,107, 67, -111,110,115,116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111,110,115,116,114, 97,105,110,116, 0, - 98, 83,116,114,101,116, 99,104, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,105,103,105,100, 66,111,100,121, 74, -111,105,110,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, 67,111,110,115,116,114, 97,105,110, -116, 0, 98, 67,104,105,108,100, 79,102, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115,102,111,114,109, 67, -111,110,115,116,114, 97,105,110,116, 0, 98, 80,105,118,111,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 76, -105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105, -110,116, 0, 98, 83,105,122,101, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68,105,115,116, 76,105,109, -105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,104,114,105,110,107,119,114, 97,112, 67,111,110,115,116,114, 97,105, -110,116, 0, 98, 65, 99,116,105,111,110, 77,111,100,105,102,105,101,114, 0, 98, 65, 99,116,105,111,110, 83,116,114,105,112, 0, - 98, 78,111,100,101, 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 0, 98, 78,111,100,101, 76,105,110,107, - 0, 98, 78,111,100,101, 0, 98, 78,111,100,101, 80,114,101,118,105,101,119, 0,117,105, 66,108,111, 99,107, 0, 98, 78,111,100, -101, 84,121,112,101, 0, 78,111,100,101, 73,109, 97,103,101, 65,110,105,109, 0, 78,111,100,101, 66,108,117,114, 68, 97,116, 97, - 0, 78,111,100,101, 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 66,105,108, 97,116,101,114, 97,108, 66,108,117,114, - 68, 97,116, 97, 0, 78,111,100,101, 72,117,101, 83, 97,116, 0, 78,111,100,101, 73,109, 97,103,101, 70,105,108,101, 0, 78,111, -100,101, 67,104,114,111,109, 97, 0, 78,111,100,101, 84,119,111, 88, 89,115, 0, 78,111,100,101, 84,119,111, 70,108,111, 97,116, -115, 0, 78,111,100,101, 71,101,111,109,101,116,114,121, 0, 78,111,100,101, 86,101,114,116,101,120, 67,111,108, 0, 78,111,100, -101, 68,101,102,111, 99,117,115, 0, 78,111,100,101, 83, 99,114,105,112,116, 68,105, 99,116, 0, 78,111,100,101, 71,108, 97,114, -101, 0, 78,111,100,101, 84,111,110,101,109, 97,112, 0, 78,111,100,101, 76,101,110,115, 68,105,115,116, 0, 78,111,100,101, 67, -111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 78,111,100,101, 67,111,108,111,114,115,112,105,108,108, 0, 84,101,120, 78,111, -100,101, 79,117,116,112,117,116, 0, 67,117,114,118,101, 77, 97,112, 80,111,105,110,116, 0, 67,117,114,118,101, 77, 97,112, 0, - 66,114,117,115,104, 67,108,111,110,101, 0, 67,117,115,116,111,109, 68, 97,116, 97, 76, 97,121,101,114, 0, 67,117,115,116,111, -109, 68, 97,116, 97, 69,120,116,101,114,110, 97,108, 0, 72, 97,105,114, 75,101,121, 0, 80, 97,114,116,105, 99,108,101, 75,101, -121, 0, 66,111,105,100, 80, 97,114,116,105, 99,108,101, 0, 66,111,105,100, 68, 97,116, 97, 0, 67,104,105,108,100, 80, 97,114, -116,105, 99,108,101, 0, 80, 97,114,116,105, 99,108,101, 84, 97,114,103,101,116, 0, 80, 97,114,116,105, 99,108,101, 68,117,112, -108,105, 87,101,105,103,104,116, 0, 80, 97,114,116,105, 99,108,101, 68, 97,116, 97, 0, 83, 80, 72, 70,108,117,105,100, 83,101, -116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 83,101,116,116,105,110,103,115, 0, 66,111,105,100, 83,101,116,116, -105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 75, 68, 84,114,101,101, 0, 80, 97,114, -116,105, 99,108,101, 68,114, 97,119, 68, 97,116, 97, 0, 76,105,110,107, 78,111,100,101, 0, 98, 71, 80, 68,115,112,111,105,110, -116, 0, 98, 71, 80, 68,115,116,114,111,107,101, 0, 98, 71, 80, 68,102,114, 97,109,101, 0, 98, 71, 80, 68,108, 97,121,101,114, - 0, 82,101,112,111,114,116, 0, 82,101,112,111,114,116, 76,105,115,116, 0, 82,101,112,111,114,116, 84,105,109,101,114, 73,110, -102,111, 0,119,109, 87,105,110,100,111,119, 77, 97,110, 97,103,101,114, 0,119,109, 87,105,110,100,111,119, 0,119,109, 75,101, -121, 67,111,110,102,105,103, 0,119,109, 69,118,101,110,116, 0,119,109, 83,117, 98, 87,105,110,100,111,119, 0,119,109, 71,101, -115,116,117,114,101, 0,119,109, 75,101,121, 77, 97,112, 73,116,101,109, 0, 80,111,105,110,116,101,114, 82, 78, 65, 0,119,109, - 75,101,121, 77, 97,112, 0,119,109, 79,112,101,114, 97,116,111,114, 84,121,112,101, 0, 70, 77,111,100,105,102,105,101,114, 0, - 70, 77,111,100, 95, 71,101,110,101,114, 97,116,111,114, 0, 70, 77,111,100, 95, 70,117,110, 99,116,105,111,110, 71,101,110,101, -114, 97,116,111,114, 0, 70, 67, 77, 95, 69,110,118,101,108,111,112,101, 68, 97,116, 97, 0, 70, 77,111,100, 95, 69,110,118,101, -108,111,112,101, 0, 70, 77,111,100, 95, 67,121, 99,108,101,115, 0, 70, 77,111,100, 95, 80,121,116,104,111,110, 0, 70, 77,111, -100, 95, 76,105,109,105,116,115, 0, 70, 77,111,100, 95, 78,111,105,115,101, 0, 70, 77,111,100, 95, 83,116,101,112,112,101,100, - 0, 68,114,105,118,101,114, 84, 97,114,103,101,116, 0, 68,114,105,118,101,114, 86, 97,114, 0, 67,104, 97,110,110,101,108, 68, -114,105,118,101,114, 0, 70, 80,111,105,110,116, 0, 70, 67,117,114,118,101, 0, 65,110,105,109, 77, 97,112, 80, 97,105,114, 0, - 65,110,105,109, 77, 97,112,112,101,114, 0, 78,108, 97, 83,116,114,105,112, 0, 78,108, 97, 84,114, 97, 99,107, 0, 75, 83, 95, - 80, 97,116,104, 0, 75,101,121,105,110,103, 83,101,116, 0, 65,110,105,109, 79,118,101,114,114,105,100,101, 0, 73,100, 65,100, -116, 84,101,109,112,108, 97,116,101, 0, 66,111,105,100, 82,117,108,101, 0, 66,111,105,100, 82,117,108,101, 71,111, 97,108, 65, -118,111,105,100, 0, 66,111,105,100, 82,117,108,101, 65,118,111,105,100, 67,111,108,108,105,115,105,111,110, 0, 66,111,105,100, - 82,117,108,101, 70,111,108,108,111,119, 76,101, 97,100,101,114, 0, 66,111,105,100, 82,117,108,101, 65,118,101,114, 97,103,101, - 83,112,101,101,100, 0, 66,111,105,100, 82,117,108,101, 70,105,103,104,116, 0, 66,111,105,100, 83,116, 97,116,101, 0, 70, 76, - 85, 73, 68, 95, 51, 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 0, 0, 84, 76, 69, 78, 1, 0, 1, 0, 2, 0, 2, 0, - 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 0, 0, 16, 0, 24, 0, 16, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, 12, 0, 24, 0, - 16, 0, 16, 0, 32, 0, 16, 0, 16, 0, 32, 0, 96, 0, 72, 0, 72, 2, 0, 0, 40, 0,144, 0,208, 4,112, 0, 36, 0, 56, 0, -112, 0,128, 0,168, 0, 96, 0, 40, 0, 48, 0,176, 0, 16, 0,152, 0, 40, 0,104, 6,240, 1, 0, 0, 0, 0, 0, 0, 16, 1, -104, 1,120, 1, 24, 0, 8, 3,200, 0, 0, 0, 88, 0, 40, 1,240, 0,136, 0,248, 1, 64, 1, 80, 0, 88, 0, 32, 3,104, 0, - 88, 1, 0, 0,128, 0,104, 0,208, 0, 80, 0, 8, 0, 16, 0,216, 1, 0, 0, 0, 0, 0, 0,176, 1, 20, 0, 48, 0, 64, 0, - 24, 0, 12, 0, 16, 0, 4, 0, 8, 0, 8, 0, 0, 0, 40, 0,128, 0, 48, 0, 8, 0, 16, 0, 8, 0, 8, 0, 4, 0, 4, 0, - 0, 1, 32, 0, 16, 0, 16, 0, 64, 0, 24, 0, 12, 0, 64, 0, 80, 0,104, 0,120, 0,128, 0, 96, 0,128, 0,160, 0, 96, 0, - 88, 0,136, 0, 88, 0,112, 0, 0, 1, 56, 0,192, 0,184, 0,232, 0, 88, 0,120, 0,136, 0,224, 0,136, 0,248, 0, 80, 0, -136, 0, 0, 0,152, 0, 40, 0, 8, 2,160, 0, 0, 0,120, 0, 0, 0, 0, 0, 96, 0, 8, 0, 8, 0, 48, 1,112, 0,240, 1, -104, 0, 96, 0, 88, 0, 96, 0,200, 1,144, 0,136, 0, 80, 0,136, 0,112, 0, 8, 1, 48, 0, 0, 0,144, 0,176, 0,104, 0, - 48, 0, 24, 0,120, 0,152, 0,120, 1,224, 0,192, 0, 0, 0, 72, 0,168, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,232, 1, - 40, 0,184, 0,152, 0, 64, 0, 64, 0, 24, 0, 88, 0, 96, 4, 64, 0, 24, 0, 16, 0,104, 0, 96, 0, 32, 0,168, 1, 56, 0, - 16, 0,168, 0, 88, 0, 56, 0, 64, 0,184, 1, 32, 0, 8, 0, 24, 0, 48, 2, 0, 0, 0, 0, 88, 0,104, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 48, 1, 56, 0,144, 0, 72, 0,208, 0,240, 0, 40, 0,248, 0,240, 0,200, 1,104, 0, 0, 0,168, 0, - 0, 0, 32, 1, 16, 0, 16, 0, 72, 33,128, 16, 24, 16,216, 0,144, 2,120, 2, 64, 0,192, 0, 32, 1, 72, 0,200, 2, 40, 0, -144, 1,104, 0, 24, 1, 32, 0,232, 0, 32, 0, 32, 0,112, 2,104, 1, 16, 0, 56, 29, 80, 0, 56, 0, 8, 13, 32, 0, 40, 0, - 88, 1, 0, 0, 0, 0,160, 0, 0, 0, 32, 1, 0, 0, 24, 1, 80, 0, 48, 0, 16, 0, 8, 0, 52, 0, 0, 1, 32, 1,200, 1, - 24, 1,136, 1, 32, 0, 12, 0, 24, 0, 52, 0, 16, 0, 24, 0, 24, 0, 32, 0, 72, 1, 0, 0, 64, 0, 64, 0, 48, 0, 8, 0, - 48, 0, 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 72, 0, 72, 0, 96, 0,104, 0, 60, 0,128, 0, 80, 0, - 80, 0, 16, 0, 96, 0, 72, 0, 32, 0, 88, 0, 24, 0, 80, 0,112, 0, 84, 0, 32, 0, 96, 0, 56, 0, 56, 0,112, 0,140, 0, - 4, 0, 24, 0, 16, 0, 8, 0, 88, 0, 40, 0,216, 0, 40, 0, 40, 1,200, 0, 16, 0, 16, 2, 0, 0, 4, 0, 40, 0,120, 0, - 0, 1, 88, 0, 56, 0, 88, 0,128, 0, 80, 0,120, 0, 24, 0, 56, 0, 48, 0, 48, 0, 48, 0, 8, 0, 40, 0, 72, 0, 72, 0, - 48, 0, 48, 0, 24, 0, 56, 0,104, 0, 16, 0,112, 0, 96, 0, 56, 0, 28, 0, 28, 0, 28, 0, 56, 0, 24, 0, 72, 0,168, 0, - 40, 0,144, 0, 56, 0,232, 0, 0, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, 44, 0, 8, 0, 8, 0, - 64, 0, 32, 0, 24, 0, 16, 0, 24, 0, 32, 0, 8, 0, 72, 0, 20, 0, 32, 0, 12, 0, 56, 0, 24, 0, 72, 0,240, 0, 24, 0, - 56, 0, 56, 0, 20, 0, 64, 0, 40, 0, 32, 0,192, 0, 36, 0, 16, 2,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 32, 0, - 40, 0,192, 0, 40, 0, 40, 0, 20, 0, 24, 1,224, 0,168, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0,120, 0, 0, 0,104, 0, - 24, 0, 24, 0, 16, 0, 24, 0, 8, 0, 16, 0, 24, 0, 20, 0, 20, 0, 56, 0, 24, 2, 40, 1, 16, 0,104, 0, 0, 1, 40, 0, -200, 0,104, 0,112, 0,168, 0, 32, 0, 80, 0, 56, 0, 80, 0, 64, 0,104, 0, 72, 0, 64, 0,128, 0, 0, 0, 0, 0, 0, 0, - 83, 84, 82, 67,152, 1, 0, 0, 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0, 11, 0, 1, 0, - 9, 0, 2, 0, 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4, 0, 13, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0, 14, 0, 2, 0, - 7, 0, 5, 0, 7, 0, 6, 0, 15, 0, 2, 0, 4, 0, 5, 0, 4, 0, 6, 0, 16, 0, 2, 0, 8, 0, 5, 0, 8, 0, 6, 0, - 17, 0, 3, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 18, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, - 19, 0, 3, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 20, 0, 4, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, - 4, 0, 8, 0, 21, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 8, 0, 22, 0, 4, 0, 8, 0, 5, 0, - 8, 0, 6, 0, 8, 0, 7, 0, 8, 0, 8, 0, 23, 0, 4, 0, 4, 0, 9, 0, 4, 0, 10, 0, 4, 0, 11, 0, 4, 0, 12, 0, - 24, 0, 4, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 25, 0, 4, 0, 9, 0, 13, 0, 12, 0, 14, 0, - 4, 0, 15, 0, 4, 0, 16, 0, 26, 0, 10, 0, 26, 0, 0, 0, 26, 0, 1, 0, 0, 0, 17, 0, 0, 0, 18, 0, 2, 0, 19, 0, - 0, 0, 20, 0, 4, 0, 21, 0, 25, 0, 22, 0, 4, 0, 23, 0, 4, 0, 24, 0, 27, 0, 9, 0, 9, 0, 0, 0, 9, 0, 1, 0, - 27, 0, 25, 0, 28, 0, 26, 0, 0, 0, 27, 0, 2, 0, 28, 0, 2, 0, 19, 0, 4, 0, 29, 0, 26, 0, 30, 0, 28, 0, 8, 0, - 27, 0, 31, 0, 27, 0, 32, 0, 29, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 4, 0, 36, 0, 4, 0, 37, 0, 28, 0, 38, 0, - 30, 0, 6, 0, 4, 0, 39, 0, 4, 0, 40, 0, 2, 0, 41, 0, 2, 0, 42, 0, 2, 0, 43, 0, 4, 0, 44, 0, 31, 0, 6, 0, - 32, 0, 45, 0, 2, 0, 46, 0, 2, 0, 47, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 48, 0, 33, 0, 21, 0, 33, 0, 0, 0, - 33, 0, 1, 0, 34, 0, 49, 0, 35, 0, 50, 0, 24, 0, 51, 0, 24, 0, 52, 0, 2, 0, 46, 0, 2, 0, 47, 0, 2, 0, 53, 0, - 2, 0, 54, 0, 2, 0, 55, 0, 2, 0, 56, 0, 2, 0, 19, 0, 2, 0, 57, 0, 7, 0, 11, 0, 7, 0, 12, 0, 4, 0, 58, 0, - 7, 0, 59, 0, 7, 0, 60, 0, 7, 0, 61, 0, 31, 0, 62, 0, 36, 0, 7, 0, 27, 0, 31, 0, 12, 0, 63, 0, 24, 0, 64, 0, - 2, 0, 46, 0, 2, 0, 65, 0, 2, 0, 66, 0, 2, 0, 37, 0, 37, 0, 16, 0, 37, 0, 0, 0, 37, 0, 1, 0, 7, 0, 67, 0, - 7, 0, 61, 0, 2, 0, 17, 0, 2, 0, 47, 0, 2, 0, 68, 0, 2, 0, 19, 0, 4, 0, 69, 0, 4, 0, 70, 0, 9, 0, 2, 0, - 7, 0, 71, 0, 0, 0, 20, 0, 0, 0, 72, 0, 7, 0, 73, 0, 7, 0, 74, 0, 38, 0, 13, 0, 27, 0, 31, 0, 39, 0, 75, 0, - 37, 0, 76, 0, 0, 0, 77, 0, 4, 0, 78, 0, 7, 0, 61, 0, 12, 0, 79, 0, 36, 0, 80, 0, 27, 0, 81, 0, 2, 0, 17, 0, - 2, 0, 82, 0, 2, 0, 83, 0, 2, 0, 19, 0, 40, 0, 6, 0, 40, 0, 0, 0, 40, 0, 1, 0, 0, 0, 84, 0, 0, 0, 85, 0, - 4, 0, 23, 0, 4, 0, 86, 0, 41, 0, 10, 0, 41, 0, 0, 0, 41, 0, 1, 0, 4, 0, 87, 0, 4, 0, 88, 0, 4, 0, 89, 0, - 4, 0, 43, 0, 4, 0, 14, 0, 4, 0, 90, 0, 0, 0, 91, 0, 0, 0, 92, 0, 42, 0, 15, 0, 27, 0, 31, 0, 0, 0, 93, 0, - 4, 0, 90, 0, 4, 0, 94, 0, 12, 0, 95, 0, 40, 0, 96, 0, 40, 0, 97, 0, 4, 0, 98, 0, 4, 0, 99, 0, 12, 0,100, 0, - 0, 0,101, 0, 4, 0,102, 0, 4, 0,103, 0, 9, 0,104, 0, 8, 0,105, 0, 43, 0, 3, 0, 4, 0,106, 0, 4, 0,107, 0, - 9, 0, 2, 0, 44, 0, 20, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,108, 0, 7, 0,109, 0, - 7, 0,110, 0, 7, 0,111, 0, 7, 0,112, 0, 7, 0,113, 0, 7, 0,114, 0, 7, 0,115, 0, 7, 0, 37, 0, 7, 0,116, 0, - 7, 0,117, 0, 2, 0,118, 0, 2, 0,119, 0, 7, 0,120, 0, 36, 0, 80, 0, 32, 0,121, 0, 45, 0, 13, 0, 4, 0,122, 0, - 4, 0,123, 0, 4, 0,124, 0, 4, 0,125, 0, 2, 0,126, 0, 2, 0,127, 0, 2, 0, 19, 0, 2, 0,128, 0, 2, 0,129, 0, - 2, 0,130, 0, 2, 0,131, 0, 2, 0,132, 0, 46, 0,133, 0, 47, 0, 32, 0, 27, 0, 31, 0, 0, 0, 34, 0, 12, 0,134, 0, - 48, 0,135, 0, 49, 0,136, 0, 50, 0,137, 0, 50, 0,138, 0, 2, 0,139, 0, 2, 0,140, 0, 2, 0,128, 0, 2, 0, 19, 0, - 2, 0,141, 0, 2, 0, 17, 0, 4, 0,142, 0, 2, 0,143, 0, 2, 0,144, 0, 2, 0,145, 0, 2, 0,146, 0, 2, 0,147, 0, - 2, 0,148, 0, 4, 0,149, 0, 4, 0,150, 0, 43, 0,151, 0, 30, 0,152, 0, 7, 0,153, 0, 4, 0,154, 0, 2, 0,155, 0, - 2, 0,156, 0, 2, 0,157, 0, 2, 0,158, 0, 7, 0,159, 0, 7, 0,160, 0, 51, 0, 63, 0, 2, 0,161, 0, 2, 0,162, 0, - 2, 0,163, 0, 2, 0,164, 0, 32, 0,165, 0, 52, 0,166, 0, 0, 0,167, 0, 0, 0,168, 0, 0, 0,169, 0, 0, 0,170, 0, - 0, 0,171, 0, 7, 0,172, 0, 7, 0,173, 0, 7, 0,174, 0, 2, 0,175, 0, 2, 0,176, 0, 2, 0,177, 0, 2, 0,178, 0, - 2, 0,179, 0, 2, 0,180, 0, 0, 0,181, 0, 0, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0,186, 0, - 7, 0,187, 0, 7, 0, 57, 0, 7, 0,188, 0, 7, 0,189, 0, 7, 0,190, 0, 7, 0,191, 0, 7, 0,192, 0, 7, 0,193, 0, - 7, 0,194, 0, 7, 0,195, 0, 7, 0,196, 0, 7, 0,197, 0, 7, 0,198, 0, 7, 0,199, 0, 7, 0,200, 0, 7, 0,201, 0, - 7, 0,202, 0, 7, 0,203, 0, 7, 0,204, 0, 7, 0,205, 0, 7, 0,206, 0, 7, 0,207, 0, 7, 0,208, 0, 7, 0,209, 0, - 7, 0,210, 0, 7, 0,211, 0, 7, 0,212, 0, 7, 0,213, 0, 7, 0,214, 0, 7, 0,215, 0, 7, 0,216, 0, 7, 0,217, 0, - 7, 0,218, 0, 7, 0,219, 0, 7, 0,220, 0, 7, 0,221, 0, 7, 0,222, 0, 53, 0, 15, 0, 0, 0,223, 0, 9, 0,224, 0, - 0, 0,225, 0, 0, 0,226, 0, 4, 0,227, 0, 4, 0,228, 0, 9, 0,229, 0, 7, 0,230, 0, 7, 0,231, 0, 7, 0,232, 0, - 4, 0,233, 0, 9, 0,234, 0, 9, 0,235, 0, 4, 0,236, 0, 4, 0, 37, 0, 54, 0, 6, 0, 7, 0,183, 0, 7, 0,184, 0, - 7, 0,185, 0, 7, 0,237, 0, 7, 0, 67, 0, 4, 0, 64, 0, 55, 0, 5, 0, 2, 0, 19, 0, 2, 0, 36, 0, 2, 0, 64, 0, - 2, 0,238, 0, 54, 0,232, 0, 56, 0, 17, 0, 32, 0,165, 0, 47, 0,239, 0, 57, 0,240, 0, 7, 0,241, 0, 7, 0,242, 0, - 2, 0, 17, 0, 2, 0,243, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0,244, 0, 4, 0,245, 0, 2, 0,246, 0, 2, 0,247, 0, - 4, 0,128, 0, 4, 0,142, 0, 2, 0,248, 0, 2, 0,249, 0, 58, 0, 22, 0, 2, 0, 19, 0, 2, 0,250, 0, 7, 0,251, 0, - 7, 0,252, 0, 2, 0,141, 0, 2, 0,253, 0, 4, 0,254, 0, 4, 0,255, 0, 32, 0,165, 0, 4, 0, 0, 1, 2, 0, 1, 1, - 2, 0, 2, 1, 9, 0, 3, 1, 7, 0, 4, 1, 7, 0, 5, 1, 2, 0, 6, 1, 2, 0, 7, 1, 2, 0, 8, 1, 2, 0, 9, 1, - 7, 0, 10, 1, 7, 0, 11, 1, 55, 0, 12, 1, 59, 0, 13, 0, 4, 0, 13, 1, 4, 0, 14, 1, 2, 0, 15, 1, 2, 0, 19, 0, - 2, 0, 16, 1, 2, 0, 17, 1, 32, 0,165, 0, 7, 0, 18, 1, 4, 0, 19, 1, 0, 0, 20, 1, 7, 0, 21, 1, 4, 0, 22, 1, - 4, 0,128, 0, 52, 0, 61, 0, 27, 0, 31, 0, 39, 0, 75, 0, 7, 0, 23, 1, 7, 0, 24, 1, 7, 0, 25, 1, 7, 0, 26, 1, - 7, 0, 27, 1, 7, 0, 28, 1, 7, 0, 29, 1, 7, 0, 30, 1, 7, 0, 31, 1, 7, 0, 32, 1, 7, 0, 33, 1, 7, 0, 34, 1, - 7, 0, 35, 1, 7, 0, 36, 1, 7, 0, 37, 1, 7, 0, 38, 1, 7, 0, 39, 1, 7, 0, 40, 1, 7, 0, 41, 1, 7, 0, 42, 1, - 2, 0, 43, 1, 2, 0, 44, 1, 2, 0, 45, 1, 2, 0, 46, 1, 2, 0, 47, 1, 2, 0, 48, 1, 2, 0, 49, 1, 2, 0, 19, 0, - 2, 0, 17, 0, 2, 0,243, 0, 7, 0, 50, 1, 7, 0, 51, 1, 7, 0, 52, 1, 7, 0, 53, 1, 4, 0, 54, 1, 4, 0, 55, 1, - 2, 0, 56, 1, 2, 0, 57, 1, 2, 0, 16, 1, 2, 0,126, 0, 4, 0, 23, 0, 4, 0,123, 0, 4, 0,124, 0, 4, 0,125, 0, - 7, 0, 58, 1, 7, 0, 59, 1, 7, 0, 43, 0, 45, 0, 60, 1, 60, 0, 61, 1, 36, 0, 80, 0, 47, 0,239, 0, 53, 0, 62, 1, - 55, 0, 12, 1, 56, 0, 63, 1, 30, 0,152, 0, 58, 0, 64, 1, 59, 0, 65, 1, 0, 0, 66, 1, 0, 0,182, 0, 61, 0, 8, 0, - 7, 0, 67, 1, 7, 0, 68, 1, 7, 0,173, 0, 4, 0, 19, 0, 7, 0, 69, 1, 7, 0, 70, 1, 7, 0, 71, 1, 32, 0, 45, 0, - 62, 0, 84, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 72, 1, 2, 0,176, 0, 2, 0, 73, 1, - 7, 0,183, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0,186, 0, 7, 0, 74, 1, 7, 0, 75, 1, 7, 0, 76, 1, 7, 0, 77, 1, - 7, 0, 78, 1, 7, 0, 79, 1, 7, 0, 80, 1, 7, 0, 81, 1, 7, 0, 82, 1, 7, 0, 83, 1, 7, 0, 84, 1, 63, 0, 85, 1, - 2, 0,250, 0, 2, 0, 70, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0, 86, 1, 7, 0, 87, 1, 7, 0, 88, 1, 7, 0, 89, 1, - 7, 0, 90, 1, 2, 0, 91, 1, 2, 0, 92, 1, 2, 0, 93, 1, 2, 0, 94, 1, 0, 0, 95, 1, 0, 0, 96, 1, 2, 0, 97, 1, - 2, 0, 98, 1, 2, 0, 99, 1, 2, 0,100, 1, 2, 0,101, 1, 7, 0,102, 1, 7, 0,103, 1, 7, 0,104, 1, 7, 0,105, 1, - 2, 0,106, 1, 2, 0, 43, 0, 2, 0,107, 1, 2, 0,108, 1, 2, 0,109, 1, 2, 0,110, 1, 7, 0,111, 1, 7, 0,112, 1, - 7, 0,113, 1, 7, 0,114, 1, 7, 0,115, 1, 7, 0,116, 1, 7, 0,117, 1, 7, 0,118, 1, 7, 0,119, 1, 7, 0,120, 1, - 7, 0,121, 1, 7, 0,122, 1, 2, 0,123, 1, 2, 0,124, 1, 4, 0,125, 1, 4, 0,126, 1, 2, 0,127, 1, 2, 0,128, 1, - 2, 0,129, 1, 2, 0,130, 1, 7, 0,131, 1, 7, 0,132, 1, 7, 0,133, 1, 7, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, - 36, 0, 80, 0, 51, 0,137, 1, 2, 0,138, 1, 2, 0,139, 1, 30, 0,152, 0, 64, 0, 2, 0, 27, 0, 31, 0, 36, 0, 80, 0, - 65, 0, 18, 0, 7, 0,140, 1, 7, 0,141, 1, 7, 0,142, 1, 7, 0,143, 1, 7, 0,144, 1, 7, 0,145, 1, 7, 0,146, 1, - 7, 0,147, 1, 7, 0,148, 1, 7, 0,149, 1, 2, 0,150, 1, 2, 0,151, 1, 2, 0,152, 1, 2, 0,153, 1, 7, 0,154, 1, - 7, 0,155, 1, 7, 0,156, 1, 7, 0,157, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0,158, 1, 2, 0, 19, 0, - 7, 0,183, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0,159, 1, 7, 0,160, 1, 7, 0,161, 1, 7, 0,162, 1, 7, 0,163, 1, - 7, 0,164, 1, 7, 0,165, 1, 7, 0,166, 1, 7, 0,167, 1, 7, 0,168, 1, 7, 0,169, 1, 7, 0,170, 1, 7, 0,171, 1, - 7, 0,172, 1, 7, 0,173, 1, 7, 0,174, 1, 7, 0,175, 1, 7, 0,176, 1, 7, 0,177, 1, 7, 0,178, 1, 65, 0,179, 1, - 7, 0,180, 1, 7, 0,181, 1, 7, 0,182, 1, 7, 0,183, 1, 7, 0,184, 1, 7, 0,185, 1, 7, 0,186, 1, 2, 0,187, 1, - 2, 0,188, 1, 2, 0,189, 1, 0, 0,190, 1, 0, 0,191, 1, 7, 0,192, 1, 7, 0,193, 1, 2, 0,194, 1, 2, 0,195, 1, - 7, 0,196, 1, 7, 0,197, 1, 7, 0,198, 1, 7, 0,199, 1, 2, 0,200, 1, 2, 0,201, 1, 4, 0, 72, 1, 4, 0,202, 1, - 2, 0,203, 1, 2, 0,204, 1, 2, 0,205, 1, 2, 0,206, 1, 7, 0,207, 1, 7, 0,208, 1, 7, 0,209, 1, 7, 0,210, 1, - 7, 0,211, 1, 7, 0,212, 1, 7, 0,213, 1, 7, 0,214, 1, 7, 0,215, 1, 7, 0,216, 1, 0, 0,217, 1, 7, 0,218, 1, - 7, 0,219, 1, 7, 0,220, 1, 4, 0,221, 1, 0, 0,222, 1, 0, 0,107, 1, 0, 0,223, 1, 0, 0, 66, 1, 2, 0,224, 1, - 2, 0,225, 1, 2, 0,138, 1, 2, 0,226, 1, 2, 0,227, 1, 2, 0,228, 1, 7, 0,229, 1, 7, 0,230, 1, 7, 0,231, 1, - 7, 0,232, 1, 7, 0,233, 1, 2, 0,161, 0, 2, 0,162, 0, 55, 0,234, 1, 55, 0,235, 1, 0, 0,236, 1, 0, 0,237, 1, - 0, 0,238, 1, 0, 0,239, 1, 2, 0,240, 1, 2, 0,241, 1, 7, 0,242, 1, 7, 0,243, 1, 51, 0,137, 1, 60, 0, 61, 1, - 36, 0, 80, 0, 67, 0,244, 1, 30, 0,152, 0, 7, 0,245, 1, 7, 0,246, 1, 7, 0,247, 1, 7, 0,248, 1, 7, 0,249, 1, - 2, 0,250, 1, 2, 0, 70, 0, 7, 0,251, 1, 7, 0,252, 1, 7, 0,253, 1, 7, 0,254, 1, 7, 0,255, 1, 7, 0, 0, 2, - 7, 0, 1, 2, 7, 0, 2, 2, 7, 0, 3, 2, 2, 0, 4, 2, 2, 0, 5, 2, 4, 0, 6, 2, 4, 0,124, 1, 12, 0, 7, 2, - 68, 0, 4, 0, 27, 0, 31, 0, 0, 0, 8, 2, 69, 0, 2, 0, 43, 0,151, 0, 70, 0, 26, 0, 70, 0, 0, 0, 70, 0, 1, 0, - 71, 0, 9, 2, 4, 0, 10, 2, 4, 0, 11, 2, 4, 0, 12, 2, 4, 0, 13, 2, 4, 0, 14, 2, 4, 0, 15, 2, 2, 0, 17, 0, - 2, 0, 19, 0, 2, 0, 16, 2, 2, 0, 17, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 18, 2, 7, 0, 19, 2, - 7, 0, 20, 2, 7, 0, 21, 2, 7, 0, 22, 2, 7, 0, 23, 2, 7, 0, 24, 2, 7, 0, 23, 0, 7, 0, 25, 2, 7, 0, 26, 2, - 72, 0, 20, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 9, 2, 12, 0, 27, 2, 12, 0, 28, 2, 12, 0, 29, 2, 36, 0, 80, 0, - 66, 0, 30, 2, 0, 0, 19, 0, 0, 0, 31, 2, 2, 0, 32, 2, 2, 0,175, 0, 2, 0, 37, 0, 7, 0, 67, 1, 7, 0,173, 0, - 7, 0, 68, 1, 7, 0, 33, 2, 7, 0, 34, 2, 7, 0, 35, 2, 70, 0, 36, 2, 35, 0, 11, 0, 7, 0, 37, 2, 7, 0, 38, 2, - 7, 0, 39, 2, 7, 0,252, 0, 2, 0, 55, 0, 0, 0, 40, 2, 0, 0, 41, 2, 0, 0, 42, 2, 0, 0, 43, 2, 0, 0, 44, 2, - 0, 0, 45, 2, 34, 0, 7, 0, 7, 0, 46, 2, 7, 0, 38, 2, 7, 0, 39, 2, 2, 0, 42, 2, 2, 0, 45, 2, 7, 0,252, 0, - 7, 0, 37, 0, 73, 0, 21, 0, 73, 0, 0, 0, 73, 0, 1, 0, 2, 0, 17, 0, 2, 0, 47, 2, 2, 0, 45, 2, 2, 0, 19, 0, - 2, 0, 48, 2, 2, 0, 49, 2, 2, 0, 50, 2, 2, 0, 51, 2, 2, 0, 52, 2, 2, 0, 53, 2, 2, 0, 54, 2, 2, 0, 55, 2, - 7, 0, 56, 2, 7, 0, 57, 2, 34, 0, 49, 0, 35, 0, 50, 0, 2, 0, 58, 2, 2, 0, 59, 2, 4, 0, 60, 2, 74, 0, 5, 0, - 2, 0, 61, 2, 2, 0, 47, 2, 0, 0, 19, 0, 0, 0, 37, 0, 2, 0, 70, 0, 75, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, - 7, 0, 8, 0, 7, 0, 62, 2, 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 9, 2, 12, 0, 63, 2, 12, 0, 28, 2, - 12, 0, 64, 2, 32, 0, 65, 2, 32, 0, 66, 2, 32, 0, 67, 2, 36, 0, 80, 0, 77, 0, 68, 2, 38, 0, 69, 2, 66, 0, 30, 2, - 12, 0, 70, 2, 7, 0, 67, 1, 7, 0,173, 0, 7, 0, 68, 1, 2, 0,175, 0, 2, 0, 43, 0, 2, 0, 71, 2, 2, 0, 72, 2, - 2, 0, 73, 2, 7, 0, 74, 2, 7, 0, 70, 0, 2, 0, 75, 2, 2, 0, 32, 2, 2, 0, 19, 0, 2, 0, 76, 2, 7, 0, 77, 2, - 7, 0, 78, 2, 7, 0, 79, 2, 2, 0, 50, 2, 2, 0, 51, 2, 2, 0, 80, 2, 2, 0, 81, 2, 4, 0, 82, 2, 9, 0, 83, 2, - 2, 0, 23, 0, 2, 0, 95, 0, 2, 0, 67, 0, 2, 0, 84, 2, 7, 0, 85, 2, 7, 0, 86, 2, 7, 0, 87, 2, 7, 0, 88, 2, - 7, 0, 89, 2, 7, 0, 90, 2, 7, 0, 91, 2, 7, 0, 92, 2, 7, 0, 93, 2, 7, 0, 94, 2, 0, 0, 95, 2, 78, 0, 96, 2, - 79, 0, 97, 2, 0, 0, 98, 2, 68, 0, 99, 2, 68, 0,100, 2, 68, 0,101, 2, 68, 0,102, 2, 4, 0,103, 2, 7, 0,104, 2, - 4, 0,105, 2, 4, 0,106, 2, 75, 0,107, 2, 4, 0,108, 2, 4, 0,109, 2, 74, 0,110, 2, 74, 0,111, 2, 80, 0, 41, 0, - 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 9, 2, 12, 0,112, 2, 36, 0, 80, 0, 38, 0, 69, 2, 66, 0, 30, 2, 81, 0,113, 2, - 82, 0,114, 2, 83, 0,115, 2, 84, 0,116, 2, 85, 0,117, 2, 86, 0,118, 2, 87, 0,119, 2, 88, 0,120, 2, 80, 0,121, 2, - 89, 0,122, 2, 90, 0,123, 2, 91, 0,124, 2, 91, 0,125, 2, 91, 0,126, 2, 4, 0, 54, 0, 4, 0,127, 2, 4, 0,128, 2, - 4, 0,129, 2, 4, 0,130, 2, 2, 0,175, 0, 2, 0,131, 2, 7, 0, 67, 1, 7, 0,173, 0, 7, 0, 68, 1, 7, 0,132, 2, - 4, 0, 71, 2, 2, 0,133, 2, 2, 0, 19, 0, 2, 0,134, 2, 2, 0,135, 2, 2, 0, 32, 2, 2, 0,136, 2, 92, 0,137, 2, - 93, 0,138, 2, 83, 0, 8, 0, 9, 0,139, 2, 7, 0,140, 2, 4, 0,141, 2, 0, 0, 19, 0, 0, 0,142, 2, 2, 0, 72, 1, - 2, 0,143, 2, 2, 0,144, 2, 81, 0, 7, 0, 4, 0,145, 2, 4, 0,146, 2, 4, 0,147, 2, 4, 0,148, 2, 2, 0, 47, 2, - 0, 0,149, 2, 0, 0, 19, 0, 85, 0, 5, 0, 4, 0,145, 2, 4, 0,146, 2, 0, 0,150, 2, 0, 0,151, 2, 2, 0, 19, 0, - 94, 0, 2, 0, 4, 0,152, 2, 7, 0, 39, 2, 86, 0, 3, 0, 94, 0,153, 2, 4, 0,154, 2, 4, 0, 19, 0, 84, 0, 6, 0, - 7, 0,155, 2, 2, 0,156, 2, 2, 0, 47, 2, 0, 0, 19, 0, 0, 0,151, 2, 0, 0, 73, 2, 87, 0, 4, 0, 0, 0,237, 0, - 0, 0,183, 0, 0, 0,184, 0, 0, 0,185, 0, 95, 0, 6, 0, 47, 0,139, 2, 0, 0, 19, 0, 0, 0,142, 2, 2, 0, 72, 1, - 2, 0,143, 2, 2, 0,144, 2, 96, 0, 1, 0, 7, 0,157, 2, 97, 0, 5, 0, 0, 0,237, 0, 0, 0,183, 0, 0, 0,184, 0, - 0, 0,185, 0, 4, 0, 37, 0, 88, 0, 1, 0, 7, 0,158, 2, 89, 0, 2, 0, 4, 0,159, 2, 4, 0, 17, 0, 82, 0, 7, 0, - 7, 0,140, 2, 47, 0,139, 2, 0, 0, 19, 0, 0, 0,142, 2, 2, 0, 72, 1, 2, 0,143, 2, 2, 0,144, 2, 98, 0, 1, 0, - 7, 0,160, 2, 99, 0, 1, 0, 4, 0,161, 2,100, 0, 1, 0, 0, 0,162, 2,101, 0, 1, 0, 7, 0,140, 2,102, 0, 3, 0, - 4, 0,163, 2, 0, 0, 92, 0, 7, 0,164, 2,103, 0, 4, 0, 7, 0,237, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,185, 0, -104, 0, 1, 0,103, 0,141, 2,105, 0, 5, 0, 4, 0,165, 2, 4, 0,166, 2, 0, 0, 19, 0, 0, 0, 47, 2, 0, 0, 73, 2, -106, 0, 2, 0, 4, 0,167, 2, 4, 0,166, 2,107, 0, 10, 0,107, 0, 0, 0,107, 0, 1, 0,105, 0,168, 2,104, 0,169, 2, -106, 0,170, 2, 4, 0, 54, 0, 4, 0,128, 2, 4, 0,127, 2, 4, 0, 37, 0, 84, 0,171, 2, 92, 0, 14, 0, 12, 0,172, 2, - 84, 0,171, 2, 0, 0,173, 2, 0, 0,174, 2, 0, 0,175, 2, 0, 0,176, 2, 0, 0,177, 2, 0, 0,178, 2, 0, 0,179, 2, - 0, 0, 19, 0, 91, 0,124, 2, 91, 0,126, 2, 2, 0,180, 2, 0, 0,181, 2, 93, 0, 8, 0, 4, 0,182, 2, 4, 0,183, 2, - 81, 0,184, 2, 85, 0,185, 2, 4, 0,128, 2, 4, 0,127, 2, 4, 0, 54, 0, 4, 0, 37, 0,108, 0, 9, 0,108, 0, 0, 0, -108, 0, 1, 0, 4, 0, 17, 0, 4, 0, 72, 1, 4, 0,186, 2, 4, 0, 37, 0, 0, 0, 20, 0, 46, 0,133, 0, 0, 0,187, 2, -109, 0, 7, 0,108, 0,188, 2, 2, 0,189, 2, 2, 0,172, 2, 2, 0,190, 2, 2, 0, 90, 0, 9, 0,191, 2, 9, 0,192, 2, -110, 0, 3, 0,108, 0,188, 2, 32, 0,165, 0, 0, 0, 20, 0,111, 0, 5, 0,108, 0,188, 2, 32, 0,165, 0, 0, 0, 20, 0, - 2, 0,193, 2, 0, 0,194, 2,112, 0, 5, 0,108, 0,188, 2, 7, 0, 88, 0, 7, 0,195, 2, 4, 0,196, 2, 4, 0,197, 2, -113, 0, 5, 0,108, 0,188, 2, 32, 0,198, 2, 0, 0, 72, 0, 4, 0, 72, 1, 4, 0, 19, 0,114, 0, 13, 0,108, 0,188, 2, - 32, 0,199, 2, 32, 0,200, 2, 32, 0,201, 2, 32, 0,202, 2, 7, 0,203, 2, 7, 0,204, 2, 7, 0,195, 2, 7, 0,205, 2, - 4, 0,206, 2, 4, 0,207, 2, 4, 0, 90, 0, 4, 0,208, 2,115, 0, 5, 0,108, 0,188, 2, 2, 0,209, 2, 2, 0, 19, 0, - 7, 0,210, 2, 32, 0,211, 2,116, 0, 3, 0,108, 0,188, 2, 7, 0,212, 2, 4, 0, 90, 0,117, 0, 10, 0,108, 0,188, 2, - 7, 0,213, 2, 4, 0,214, 2, 4, 0, 37, 0, 2, 0, 90, 0, 2, 0,215, 2, 2, 0,216, 2, 2, 0,217, 2, 7, 0,218, 2, - 0, 0,219, 2,118, 0, 3, 0,108, 0,188, 2, 7, 0, 37, 0, 4, 0, 17, 0,119, 0, 6, 0,108, 0,188, 2,120, 0,220, 2, -121, 0,221, 2,122, 0,222, 2, 7, 0,223, 2, 4, 0, 17, 0,123, 0, 11, 0,108, 0,188, 2, 52, 0,224, 2, 7, 0,225, 2, - 4, 0,226, 2, 0, 0,219, 2, 7, 0,227, 2, 4, 0,228, 2, 32, 0,229, 2, 0, 0,230, 2, 4, 0,231, 2, 4, 0, 37, 0, -124, 0, 12, 0,108, 0,188, 2, 32, 0,232, 2, 47, 0,233, 2, 4, 0, 90, 0, 4, 0,234, 2, 7, 0,235, 2, 7, 0,236, 2, - 7, 0,237, 2, 7, 0,238, 2, 0, 0,230, 2, 4, 0,231, 2, 4, 0, 37, 0,125, 0, 3, 0,108, 0,188, 2, 7, 0,239, 2, - 4, 0,240, 2,126, 0, 5, 0,108, 0,188, 2, 7, 0,241, 2, 0, 0,219, 2, 2, 0, 19, 0, 2, 0,242, 2,127, 0, 8, 0, -108, 0,188, 2, 32, 0,165, 0, 7, 0,241, 2, 7, 0,252, 0, 7, 0,106, 0, 0, 0,219, 2, 2, 0, 19, 0, 2, 0, 17, 0, -128, 0, 21, 0,108, 0,188, 2, 32, 0,243, 2, 0, 0,219, 2, 52, 0,224, 2, 32, 0,229, 2, 2, 0, 19, 0, 2, 0, 37, 0, - 7, 0,244, 2, 7, 0,245, 2, 7, 0,246, 2, 7, 0, 77, 2, 7, 0,247, 2, 7, 0,248, 2, 7, 0,249, 2, 7, 0,250, 2, - 4, 0,228, 2, 4, 0,231, 2, 0, 0,230, 2, 7, 0,251, 2, 7, 0,252, 2, 7, 0, 43, 0,129, 0, 7, 0,108, 0,188, 2, - 2, 0,253, 2, 2, 0,254, 2, 4, 0, 70, 0, 32, 0,165, 0, 7, 0,255, 2, 0, 0,219, 2,130, 0, 10, 0,108, 0,188, 2, - 32, 0,165, 0, 0, 0, 0, 3, 7, 0, 1, 3, 7, 0, 2, 3, 7, 0,250, 2, 4, 0, 3, 3, 4, 0, 4, 3, 7, 0, 5, 3, - 0, 0, 20, 0,131, 0, 1, 0,108, 0,188, 2,132, 0, 7, 0,108, 0,188, 2, 46, 0,133, 0,133, 0, 6, 3,134, 0, 7, 3, -135, 0, 8, 3,136, 0, 9, 3, 12, 0, 10, 3,137, 0, 13, 0,108, 0,188, 2, 84, 0, 11, 3, 84, 0, 12, 3, 84, 0, 13, 3, - 84, 0, 14, 3, 84, 0, 15, 3, 84, 0, 16, 3, 81, 0, 17, 3, 4, 0, 18, 3, 4, 0, 19, 3, 7, 0,223, 2, 7, 0, 37, 0, -138, 0, 20, 3,139, 0, 7, 0,108, 0,188, 2, 84, 0, 11, 3, 84, 0, 21, 3,140, 0, 22, 3,141, 0, 20, 3, 4, 0, 23, 3, - 4, 0, 18, 3,142, 0, 4, 0,108, 0,188, 2, 32, 0,165, 0, 4, 0, 24, 3, 4, 0, 37, 0,143, 0, 2, 0, 4, 0, 25, 3, - 7, 0, 39, 2,144, 0, 2, 0, 4, 0,124, 0, 4, 0, 26, 3,145, 0, 24, 0,108, 0,188, 2, 32, 0,165, 0, 0, 0,219, 2, - 2, 0, 27, 3, 2, 0, 19, 0, 2, 0, 72, 1, 2, 0, 37, 0,143, 0, 28, 3, 4, 0, 29, 3, 7, 0, 30, 3, 4, 0, 54, 0, - 4, 0, 31, 3,144, 0, 32, 3,143, 0, 33, 3, 4, 0, 34, 3, 4, 0, 35, 3, 4, 0, 36, 3, 4, 0, 26, 3, 7, 0, 37, 3, - 7, 0, 38, 3, 7, 0, 39, 3, 7, 0, 40, 3, 7, 0, 41, 3, 9, 0, 42, 3,146, 0, 8, 0,108, 0,188, 2,147, 0, 43, 3, -140, 0, 22, 3, 4, 0, 44, 3, 4, 0, 45, 3, 4, 0, 46, 3, 2, 0, 19, 0, 2, 0, 57, 0,148, 0, 8, 0,108, 0,188, 2, - 32, 0, 45, 0, 2, 0, 0, 1, 2, 0, 19, 0, 2, 0,209, 2, 2, 0, 57, 0, 7, 0, 47, 3, 7, 0, 48, 3,149, 0, 5, 0, -108, 0,188, 2, 4, 0, 49, 3, 2, 0, 19, 0, 2, 0, 50, 3, 7, 0, 51, 3,150, 0, 8, 0,108, 0,188, 2, 0, 0, 52, 3, - 0, 0, 53, 3, 0, 0,178, 2, 0, 0, 54, 3, 0, 0, 55, 3, 0, 0, 90, 0, 0, 0, 73, 2,151, 0, 3, 0,108, 0,188, 2, -152, 0, 56, 3,136, 0, 9, 3,153, 0, 10, 0,108, 0,188, 2, 32, 0, 57, 3, 32, 0, 58, 3, 0, 0, 59, 3, 7, 0, 60, 3, - 2, 0, 61, 3, 2, 0, 62, 3, 0, 0, 63, 3, 0, 0, 64, 3, 0, 0,194, 2,154, 0, 9, 0,108, 0,188, 2, 32, 0, 65, 3, - 0, 0, 59, 3, 7, 0, 66, 3, 7, 0, 67, 3, 0, 0, 72, 1, 0, 0,209, 2, 0, 0, 68, 3, 0, 0, 37, 0,155, 0, 1, 0, -108, 0,188, 2,156, 0, 8, 0,108, 0,188, 2, 0, 0,219, 2, 7, 0,124, 0, 7, 0, 69, 3, 7, 0, 70, 3, 7, 0, 71, 3, - 7, 0, 72, 3, 4, 0, 19, 0,157, 0, 9, 0,108, 0,188, 2, 32, 0, 73, 3, 4, 0, 74, 3, 4, 0, 75, 3, 4, 0, 76, 3, - 7, 0, 77, 3, 7, 0, 78, 3, 2, 0,209, 2, 2, 0, 19, 0,158, 0, 28, 0, 27, 0, 31, 0, 2, 0, 48, 2, 2, 0, 49, 2, - 2, 0, 79, 3, 2, 0, 19, 0, 2, 0, 80, 3, 2, 0, 81, 3, 2, 0, 82, 3, 2, 0, 70, 0, 0, 0, 83, 3, 0, 0, 84, 3, - 0, 0, 85, 3, 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 86, 3, 7, 0, 87, 3, 7, 0, 88, 3, 7, 0, 89, 3, 7, 0, 90, 3, - 7, 0, 91, 3, 34, 0, 92, 3, 36, 0, 80, 0, 38, 0, 69, 2, 86, 0,118, 2, 0, 0, 72, 0, 7, 0, 93, 3, 7, 0, 94, 3, -158, 0, 95, 3,159, 0, 3, 0,159, 0, 0, 0,159, 0, 1, 0, 0, 0, 20, 0, 71, 0, 3, 0, 7, 0, 96, 3, 4, 0, 19, 0, - 4, 0, 37, 0, 32, 0,126, 0, 27, 0, 31, 0, 39, 0, 75, 0,160, 0, 97, 3, 2, 0, 17, 0, 2, 0, 98, 3, 4, 0, 99, 3, - 4, 0,100, 3, 4, 0,101, 3, 0, 0,102, 3, 32, 0, 38, 0, 32, 0,103, 3, 32, 0,104, 3, 32, 0,105, 3, 32, 0,106, 3, - 36, 0, 80, 0, 77, 0, 68, 2, 71, 0, 9, 2,161, 0,107, 3,161, 0,108, 3,162, 0,109, 3, 9, 0, 2, 0,163, 0,110, 3, -164, 0,111, 3,165, 0,112, 3, 12, 0,113, 3, 12, 0,112, 2, 12, 0, 28, 2, 12, 0,114, 3, 12, 0,115, 3, 4, 0, 72, 1, - 4, 0,116, 3, 66, 0, 30, 2, 0, 0,117, 3, 4, 0, 32, 2, 4, 0,118, 3, 7, 0, 67, 1, 7, 0,119, 3, 7, 0,120, 3, - 7, 0,173, 0, 7, 0,121, 3, 7, 0, 68, 1, 7, 0,122, 3, 7, 0, 18, 2, 7, 0,123, 3, 7, 0,124, 3, 7, 0,125, 3, - 7, 0,126, 3, 7, 0,127, 3, 7, 0,128, 3, 7, 0, 1, 3, 7, 0,129, 3, 7, 0,241, 0, 4, 0,130, 3, 2, 0, 19, 0, - 2, 0,131, 3, 2, 0,132, 3, 2, 0,133, 3, 2, 0,134, 3, 2, 0,135, 3, 2, 0,136, 3, 2, 0,137, 3, 2, 0,138, 3, - 2, 0,139, 3, 2, 0,140, 3, 2, 0,141, 3, 4, 0,142, 3, 4, 0,143, 3, 4, 0,144, 3, 4, 0,145, 3, 7, 0,146, 3, - 7, 0,104, 2, 7, 0,147, 3, 7, 0,148, 3, 7, 0,149, 3, 7, 0,150, 3, 7, 0,151, 3, 7, 0,216, 0, 7, 0,152, 3, - 7, 0,153, 3, 7, 0,154, 3, 7, 0,155, 3, 2, 0,156, 3, 0, 0,157, 3, 0, 0,158, 3, 0, 0,159, 3, 0, 0,160, 3, - 7, 0,161, 3, 7, 0,162, 3, 12, 0,163, 3, 12, 0,164, 3, 12, 0,165, 3, 12, 0,166, 3, 7, 0,167, 3, 2, 0,159, 2, - 2, 0,168, 3, 7, 0,141, 2, 4, 0,169, 3, 4, 0,170, 3,166, 0,171, 3, 2, 0,172, 3, 2, 0,248, 0, 7, 0,173, 3, - 12, 0,174, 3, 12, 0,175, 3, 12, 0,176, 3, 12, 0,177, 3,167, 0, 64, 1,168, 0,178, 3, 67, 0,179, 3, 2, 0,180, 3, - 2, 0,181, 3, 2, 0,182, 3, 2, 0,183, 3, 7, 0,133, 2, 2, 0,184, 3, 2, 0,185, 3,152, 0,186, 3,140, 0,187, 3, -140, 0,188, 3, 4, 0,189, 3, 4, 0,190, 3, 4, 0,191, 3, 4, 0, 70, 0, 12, 0,192, 3, 12, 0,193, 3, 12, 0,194, 3, -169, 0, 14, 0,169, 0, 0, 0,169, 0, 1, 0, 32, 0, 38, 0, 7, 0, 1, 3, 7, 0, 69, 1, 7, 0, 2, 3, 7, 0,250, 2, - 0, 0, 20, 0, 4, 0, 3, 3, 4, 0, 4, 3, 4, 0,195, 3, 2, 0, 17, 0, 2, 0,196, 3, 7, 0, 5, 3,170, 0, 12, 0, -170, 0, 0, 0,170, 0, 1, 0, 32, 0, 45, 0, 4, 0,197, 3, 4, 0,159, 2, 4, 0,198, 3, 4, 0, 17, 0, 4, 0,199, 3, - 7, 0, 69, 1, 7, 0,200, 3, 7, 0,201, 3, 7, 0,157, 2,167, 0, 40, 0, 4, 0, 19, 0, 2, 0,202, 3, 2, 0,203, 3, - 2, 0,250, 2, 2, 0,204, 3, 2, 0,205, 3, 2, 0,206, 3, 2, 0,207, 3, 2, 0,208, 3, 7, 0,209, 3, 7, 0,210, 3, - 7, 0,211, 3, 7, 0,212, 3, 7, 0,213, 3, 7, 0,214, 3, 7, 0,215, 3, 7, 0,216, 3, 7, 0,217, 3, 7, 0,218, 3, - 7, 0,219, 3, 7, 0,220, 3, 7, 0,221, 3, 7, 0,222, 3, 7, 0,223, 3, 7, 0,224, 3, 7, 0,225, 3, 7, 0,226, 3, - 7, 0,227, 3, 7, 0,228, 3, 7, 0,229, 3, 7, 0,230, 3, 7, 0,231, 3, 7, 0,232, 3, 7, 0,233, 3, 7, 0,234, 3, - 7, 0,235, 3, 52, 0,166, 0,171, 0,236, 3, 7, 0,237, 3, 4, 0,197, 2,172, 0, 5, 0, 67, 0,244, 1, 7, 0,238, 3, - 7, 0,239, 3, 2, 0, 19, 0, 2, 0,240, 3,173, 0, 9, 0,173, 0, 0, 0,173, 0, 1, 0, 4, 0,241, 3, 4, 0,242, 3, - 4, 0,243, 3, 4, 0, 19, 0, 4, 0,244, 3, 9, 0,245, 3, 9, 0,246, 3,136, 0, 19, 0,136, 0, 0, 0,136, 0, 1, 0, - 4, 0, 19, 0, 4, 0,247, 3, 4, 0,248, 3, 4, 0,249, 3, 4, 0,250, 3, 4, 0,251, 3, 4, 0,252, 3, 4, 0,242, 3, - 4, 0,159, 2, 4, 0, 57, 0, 0, 0,253, 3, 0, 0,254, 3, 0, 0,255, 3, 0, 0, 0, 4, 12, 0, 1, 4,174, 0, 2, 4, - 9, 0, 3, 4,175, 0, 1, 0, 7, 0, 46, 2,166, 0, 30, 0, 4, 0, 19, 0, 7, 0, 4, 4, 7, 0, 5, 4, 7, 0, 6, 4, - 4, 0, 7, 4, 4, 0, 8, 4, 4, 0, 9, 4, 4, 0, 10, 4, 7, 0, 11, 4, 7, 0, 12, 4, 7, 0, 13, 4, 7, 0, 14, 4, - 7, 0, 15, 4, 7, 0, 16, 4, 7, 0, 17, 4, 7, 0, 18, 4, 7, 0, 19, 4, 7, 0, 20, 4, 7, 0, 21, 4, 7, 0, 22, 4, - 7, 0, 23, 4, 7, 0, 24, 4, 7, 0, 25, 4, 7, 0, 26, 4, 7, 0, 27, 4, 7, 0, 28, 4, 4, 0, 29, 4, 4, 0, 30, 4, - 7, 0, 31, 4, 7, 0,152, 3,168, 0, 54, 0, 4, 0,242, 3, 4, 0, 32, 4,176, 0, 33, 4,177, 0, 34, 4, 0, 0, 37, 0, - 0, 0, 35, 4, 2, 0, 36, 4, 7, 0, 37, 4, 0, 0, 38, 4, 7, 0, 39, 4, 7, 0, 40, 4, 7, 0, 41, 4, 7, 0, 42, 4, - 7, 0, 43, 4, 7, 0, 44, 4, 7, 0, 45, 4, 7, 0, 46, 4, 7, 0, 47, 4, 2, 0, 48, 4, 0, 0, 49, 4, 2, 0, 50, 4, - 7, 0, 51, 4, 7, 0, 52, 4, 0, 0, 53, 4, 4, 0,125, 0, 4, 0, 54, 4, 4, 0, 55, 4, 2, 0, 56, 4, 2, 0, 57, 4, -175, 0, 58, 4, 4, 0, 59, 4, 4, 0, 82, 0, 7, 0, 60, 4, 7, 0, 61, 4, 7, 0, 62, 4, 7, 0, 63, 4, 2, 0, 64, 4, - 2, 0, 65, 4, 2, 0, 66, 4, 2, 0, 67, 4, 2, 0, 68, 4, 2, 0, 69, 4, 2, 0, 70, 4, 2, 0, 71, 4,178, 0, 72, 4, - 7, 0, 73, 4, 7, 0, 74, 4,136, 0, 75, 4, 12, 0, 10, 3,172, 0, 76, 4, 7, 0, 77, 4, 7, 0, 78, 4, 7, 0, 79, 4, - 0, 0, 80, 4,152, 0, 51, 0,151, 0, 81, 4, 2, 0, 17, 0, 2, 0, 82, 4, 2, 0, 83, 4, 2, 0, 84, 4, 7, 0, 85, 4, - 2, 0, 86, 4, 2, 0, 87, 4, 7, 0, 88, 4, 2, 0, 89, 4, 2, 0, 90, 4, 7, 0, 91, 4, 7, 0, 92, 4, 7, 0, 93, 4, - 7, 0, 94, 4, 7, 0, 95, 4, 4, 0, 96, 4, 4, 0, 97, 4, 7, 0, 98, 4, 4, 0, 99, 4, 7, 0,100, 4, 7, 0,101, 4, - 7, 0,102, 4, 80, 0,103, 4, 80, 0,104, 4, 80, 0,105, 4, 0, 0,106, 4, 7, 0,107, 4, 7, 0,108, 4, 36, 0, 80, 0, - 2, 0,109, 4, 0, 0,110, 4, 0, 0,111, 4, 7, 0,112, 4, 4, 0,113, 4, 7, 0,114, 4, 7, 0,115, 4, 4, 0,116, 4, - 4, 0, 19, 0, 7, 0,117, 4, 7, 0,118, 4, 7, 0,119, 4, 84, 0,120, 4, 7, 0,121, 4, 7, 0,122, 4, 7, 0,123, 4, - 7, 0,124, 4, 7, 0,125, 4, 7, 0,126, 4, 7, 0,127, 4, 4, 0,128, 4,179, 0, 78, 0, 27, 0, 31, 0, 39, 0, 75, 0, - 2, 0,176, 0, 2, 0, 73, 1, 2, 0,107, 1, 2, 0,129, 4, 7, 0,130, 4, 7, 0,131, 4, 7, 0,132, 4, 7, 0,133, 4, - 7, 0,134, 4, 7, 0,135, 4, 7, 0,136, 4, 7, 0,137, 4, 7, 0,165, 1, 7, 0,167, 1, 7, 0,166, 1, 7, 0,138, 4, - 4, 0,139, 4, 7, 0,140, 4, 7, 0,141, 4, 7, 0,142, 4, 7, 0,143, 4, 7, 0,144, 4, 7, 0,145, 4, 7, 0,146, 4, - 2, 0,147, 4, 2, 0, 72, 1, 2, 0,148, 4, 2, 0,149, 4, 2, 0,150, 4, 2, 0,151, 4, 2, 0,152, 4, 2, 0,153, 4, - 7, 0,154, 4, 7, 0,155, 4, 7, 0,156, 4, 7, 0,157, 4, 7, 0,158, 4, 7, 0,159, 4, 7, 0,160, 4, 7, 0,161, 4, - 7, 0,162, 4, 7, 0,163, 4, 7, 0,164, 4, 7, 0,165, 4, 2, 0,166, 4, 2, 0,167, 4, 2, 0,168, 4, 2, 0,169, 4, - 7, 0,170, 4, 7, 0,171, 4, 7, 0,172, 4, 7, 0,173, 4, 2, 0,174, 4, 2, 0,175, 4, 2, 0,176, 4, 2, 0,177, 4, - 7, 0,178, 4, 7, 0,179, 4, 7, 0,180, 4, 7, 0,181, 4, 7, 0,182, 4, 7, 0,183, 4, 7, 0,184, 4, 2, 0,185, 4, - 2, 0,186, 4, 2, 0,187, 4, 2, 0,188, 4, 2, 0,189, 4, 2, 0, 19, 0, 7, 0,190, 4, 7, 0,191, 4, 36, 0, 80, 0, - 51, 0,137, 1, 2, 0,138, 1, 2, 0,139, 1, 30, 0,152, 0,180, 0, 8, 0,180, 0, 0, 0,180, 0, 1, 0, 4, 0,130, 3, - 4, 0,192, 4, 4, 0, 19, 0, 2, 0,193, 4, 2, 0,194, 4, 32, 0,165, 0,181, 0, 13, 0, 9, 0,195, 4, 9, 0,196, 4, - 4, 0,197, 4, 4, 0,198, 4, 4, 0,199, 4, 4, 0,200, 4, 4, 0,201, 4, 4, 0,202, 4, 4, 0,203, 4, 4, 0,204, 4, - 4, 0,205, 4, 4, 0, 37, 0, 0, 0,206, 4,182, 0, 5, 0, 9, 0,207, 4, 9, 0,208, 4, 4, 0,209, 4, 4, 0, 70, 0, - 0, 0,210, 4,183, 0, 17, 0, 4, 0,211, 4, 4, 0,212, 4, 4, 0,213, 4, 4, 0,214, 4, 4, 0,215, 4, 4, 0,216, 4, - 4, 0,217, 4, 4, 0,218, 4, 4, 0,219, 4, 4, 0,220, 4, 4, 0,221, 4, 4, 0,222, 4, 2, 0,223, 4, 2, 0,224, 4, - 4, 0,225, 4, 4, 0,226, 4, 4, 0, 43, 0,184, 0, 15, 0, 4, 0, 17, 0, 4, 0,213, 4, 4, 0,227, 4, 4, 0,228, 4, - 4, 0,229, 4, 4, 0,230, 4, 7, 0,231, 4, 4, 0,232, 4, 4, 0, 90, 0, 4, 0,233, 4, 4, 0,234, 4, 4, 0,235, 4, - 4, 0,236, 4, 4, 0,237, 4, 26, 0, 30, 0,185, 0, 7, 0, 4, 0,238, 4, 7, 0,239, 4, 7, 0,240, 4, 7, 0,241, 4, - 4, 0,242, 4, 2, 0, 19, 0, 2, 0, 37, 0,186, 0, 11, 0,186, 0, 0, 0,186, 0, 1, 0, 0, 0, 20, 0, 66, 0,243, 4, - 67, 0,244, 4, 4, 0,130, 3, 4, 0,245, 4, 4, 0,246, 4, 4, 0, 37, 0, 4, 0,247, 4, 4, 0,248, 4,187, 0,140, 0, -181, 0,249, 4,182, 0,250, 4,183, 0,251, 4,184, 0,252, 4, 4, 0, 23, 3, 4, 0,125, 0, 4, 0, 54, 4, 4, 0,253, 4, - 4, 0,254, 4, 4, 0,255, 4, 4, 0, 0, 5, 2, 0, 19, 0, 2, 0, 1, 5, 7, 0,104, 2, 7, 0, 2, 5, 7, 0, 3, 5, - 7, 0, 4, 5, 7, 0, 5, 5, 7, 0, 6, 5, 2, 0, 7, 5, 2, 0, 8, 5, 2, 0, 9, 5, 2, 0, 10, 5, 2, 0,247, 0, - 2, 0, 11, 5, 2, 0, 12, 5, 2, 0, 13, 5, 2, 0, 14, 5, 2, 0, 15, 5, 2, 0, 94, 1, 2, 0,106, 0, 2, 0, 16, 5, - 2, 0, 17, 5, 2, 0, 18, 5, 2, 0, 19, 5, 2, 0, 20, 5, 2, 0, 21, 5, 2, 0, 22, 5, 2, 0, 23, 5, 2, 0, 24, 5, - 2, 0, 95, 1, 2, 0, 25, 5, 2, 0, 26, 5, 2, 0, 27, 5, 2, 0, 28, 5, 4, 0, 29, 5, 4, 0, 72, 1, 4, 0, 30, 5, - 2, 0, 31, 5, 2, 0, 32, 5, 2, 0, 33, 5, 2, 0,124, 1, 2, 0, 34, 5, 2, 0, 35, 5, 2, 0, 36, 5, 2, 0, 37, 5, - 24, 0, 38, 5, 24, 0, 39, 5, 23, 0, 40, 5, 12, 0, 41, 5, 2, 0, 42, 5, 2, 0, 43, 5, 7, 0, 44, 5, 7, 0, 45, 5, - 7, 0, 46, 5, 7, 0, 47, 5, 4, 0, 48, 5, 7, 0, 49, 5, 7, 0, 50, 5, 7, 0, 51, 5, 7, 0, 52, 5, 2, 0, 53, 5, - 2, 0, 54, 5, 2, 0, 55, 5, 2, 0, 56, 5, 2, 0, 57, 5, 2, 0, 58, 5, 7, 0, 59, 5, 7, 0, 60, 5, 7, 0, 61, 5, - 2, 0, 62, 5, 2, 0, 63, 5, 2, 0, 64, 5, 2, 0, 65, 5, 2, 0, 66, 5, 2, 0, 67, 5, 2, 0, 68, 5, 2, 0, 69, 5, - 2, 0, 70, 5, 2, 0, 71, 5, 4, 0, 72, 5, 4, 0, 73, 5, 4, 0, 74, 5, 4, 0, 75, 5, 4, 0, 76, 5, 7, 0, 77, 5, - 4, 0, 78, 5, 4, 0, 79, 5, 4, 0, 80, 5, 4, 0, 81, 5, 7, 0, 82, 5, 7, 0, 83, 5, 7, 0, 84, 5, 7, 0, 85, 5, - 7, 0, 86, 5, 7, 0, 87, 5, 7, 0, 88, 5, 7, 0, 89, 5, 7, 0, 90, 5, 0, 0, 91, 5, 0, 0, 92, 5, 4, 0, 93, 5, - 2, 0, 94, 5, 2, 0,241, 1, 0, 0, 95, 5, 7, 0, 96, 5, 7, 0, 97, 5, 0, 0, 98, 5, 0, 0, 99, 5, 0, 0,100, 5, - 0, 0,101, 5, 4, 0,102, 5, 2, 0,103, 5, 2, 0,104, 5, 7, 0,105, 5, 7, 0,106, 5, 2, 0,107, 5, 2, 0,108, 5, - 7, 0,109, 5, 2, 0,110, 5, 2, 0,111, 5, 4, 0,112, 5, 2, 0,113, 5, 2, 0,114, 5, 2, 0,115, 5, 2, 0,116, 5, - 7, 0,117, 5, 7, 0, 70, 0, 42, 0,118, 5, 0, 0,119, 5,188, 0, 9, 0,188, 0, 0, 0,188, 0, 1, 0, 0, 0, 20, 0, - 2, 0,120, 5, 2, 0,121, 5, 2, 0,122, 5, 2, 0, 43, 0, 7, 0,123, 5, 7, 0, 70, 0,189, 0, 7, 0, 2, 0,214, 2, - 2, 0, 72, 1, 2, 0, 78, 3, 2, 0,124, 5, 7, 0,125, 5, 7, 0, 70, 0, 42, 0,126, 5,190, 0, 5, 0, 7, 0,127, 5, - 0, 0, 17, 0, 0, 0, 43, 0, 0, 0, 70, 0, 0, 0,241, 1,191, 0, 28, 0, 7, 0,145, 4, 7, 0,146, 4, 2, 0, 72, 1, - 2, 0, 19, 0, 2, 0,128, 5, 2, 0,139, 1, 2, 0,148, 4, 2, 0,149, 4, 2, 0,150, 4, 2, 0,151, 4, 2, 0,152, 4, - 2, 0,153, 4,190, 0,129, 5, 2, 0, 7, 5, 2, 0, 8, 5, 2, 0, 9, 5, 2, 0, 10, 5, 2, 0,247, 0, 2, 0, 11, 5, - 2, 0,130, 5, 2, 0, 12, 5,189, 0,131, 5, 2, 0,132, 5, 2, 0, 14, 5, 2, 0, 17, 5, 2, 0, 18, 5, 7, 0,133, 5, - 7, 0, 43, 0,192, 0, 6, 0,192, 0, 0, 0,192, 0, 1, 0, 4, 0,241, 3, 0, 0,253, 3, 4, 0, 19, 0, 32, 0,134, 5, -193, 0, 6, 0,194, 0,135, 5, 4, 0,136, 5, 4, 0,137, 5, 9, 0,138, 5, 0, 0,139, 5, 4, 0, 90, 0,195, 0, 8, 0, -193, 0,140, 5, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0,141, 5, 2, 0,142, 5, 2, 0,143, 5, 4, 0, 43, 0, 9, 0,144, 5, -196, 0, 6, 0, 2, 0,106, 0, 2, 0,247, 3, 2, 0,145, 5, 2, 0,208, 2, 4, 0, 19, 0, 7, 0,225, 2,197, 0, 14, 0, - 2, 0, 19, 0, 2, 0,146, 5, 2, 0,147, 5, 2, 0,148, 5,196, 0,149, 5, 9, 0,144, 5, 7, 0,150, 5, 7, 0, 57, 0, - 4, 0,151, 5, 4, 0,152, 5, 4, 0,153, 5, 4, 0,154, 5, 46, 0,133, 0, 32, 0,165, 0,198, 0, 4, 0,198, 0, 0, 0, -198, 0, 1, 0, 0, 0,155, 5, 7, 0,156, 5,199, 0, 6, 0,193, 0,140, 5, 7, 0,157, 5, 4, 0, 90, 0, 0, 0,158, 5, - 0, 0,159, 5, 0, 0,194, 2,200, 0, 7, 0,193, 0,140, 5, 2, 0, 19, 0, 2, 0, 37, 0, 4, 0, 36, 0, 4, 0,160, 5, - 86, 0,161, 5, 9, 0,144, 5,201, 0, 74, 0,200, 0,162, 5,200, 0,163, 5,199, 0, 97, 3, 7, 0,164, 5, 2, 0,165, 5, - 2, 0,166, 5, 7, 0,167, 5, 7, 0,168, 5, 2, 0,247, 3, 2, 0,169, 5, 7, 0,170, 5, 7, 0,171, 5, 7, 0,172, 5, - 2, 0,173, 5, 2, 0,151, 5, 2, 0,174, 5, 2, 0,175, 5, 2, 0,176, 5, 2, 0,177, 5, 7, 0,178, 5, 7, 0,179, 5, - 7, 0,180, 5, 2, 0,181, 5, 2, 0,182, 5, 2, 0,183, 5, 2, 0,184, 5, 2, 0,185, 5, 2, 0,186, 5, 2, 0,187, 5, -195, 0,188, 5,197, 0,189, 5, 7, 0,190, 5, 7, 0,191, 5, 7, 0,192, 5, 2, 0,193, 5, 2, 0,194, 5, 0, 0,195, 5, - 0, 0,196, 5, 0, 0,197, 5, 0, 0,198, 5, 0, 0,199, 5, 0, 0,200, 5, 2, 0,201, 5, 7, 0,202, 5, 7, 0,203, 5, - 7, 0,204, 5, 7, 0,205, 5, 7, 0,206, 5, 7, 0,207, 5, 7, 0,208, 5, 7, 0,209, 5, 7, 0,210, 5, 7, 0,211, 5, - 2, 0,212, 5, 0, 0,213, 5, 0, 0,214, 5, 0, 0,215, 5, 0, 0,216, 5, 32, 0,217, 5, 0, 0,218, 5, 0, 0,219, 5, - 0, 0,220, 5, 0, 0,221, 5, 0, 0,222, 5, 0, 0,223, 5, 0, 0,224, 5, 0, 0,225, 5, 2, 0,226, 5, 2, 0,227, 5, - 2, 0,228, 5, 2, 0,229, 5, 2, 0,230, 5, 4, 0,231, 5, 4, 0,232, 5,202, 0, 8, 0, 4, 0,233, 5, 4, 0,234, 5, - 4, 0,235, 5, 4, 0,236, 5, 4, 0,237, 5, 4, 0,238, 5, 4, 0, 54, 0, 4, 0,128, 2,203, 0, 3, 0, 7, 0,239, 5, - 2, 0,240, 5, 2, 0, 19, 0,204, 0, 4, 0, 7, 0,241, 5, 4, 0, 19, 0, 4, 0,242, 5, 4, 0, 57, 0, 46, 0, 42, 0, - 27, 0, 31, 0, 39, 0, 75, 0, 32, 0,134, 5,179, 0,243, 5, 46, 0,244, 5, 47, 0,239, 0, 12, 0,245, 5,180, 0,246, 5, - 32, 0,247, 5, 7, 0,248, 5, 7, 0,249, 5, 7, 0,250, 5, 7, 0,251, 5, 4, 0,130, 3, 4, 0,252, 5, 4, 0, 43, 0, - 2, 0, 19, 0, 2, 0, 66, 1, 60, 0, 61, 1,205, 0,253, 5,201, 0,254, 5,206, 0,255, 5,187, 0,183, 0,185, 0, 0, 6, - 12, 0,100, 0, 12, 0, 1, 6, 9, 0, 2, 6, 9, 0, 3, 6, 9, 0, 4, 6,207, 0, 5, 6, 2, 0, 6, 6, 2, 0, 7, 6, - 2, 0,248, 0, 2, 0, 8, 6, 4, 0, 9, 6, 4, 0, 10, 6, 12, 0, 11, 6,190, 0,129, 5,191, 0, 12, 6,203, 0, 13, 6, -163, 0,110, 3,204, 0, 14, 6,208, 0, 11, 0,208, 0, 0, 0,208, 0, 1, 0, 47, 0,239, 0, 45, 0, 60, 1, 7, 0, 92, 2, - 7, 0, 93, 2, 7, 0,106, 0, 7, 0, 15, 6, 2, 0, 16, 6, 2, 0, 19, 0, 7, 0, 70, 0,209, 0, 39, 0, 7, 0, 17, 6, - 7, 0, 18, 6, 7, 0, 19, 6, 7, 0, 20, 6, 7, 0, 21, 6, 7, 0, 22, 6, 7, 0, 23, 6, 7, 0, 24, 6, 7, 0, 25, 6, - 7, 0, 79, 1, 7, 0, 26, 6, 7, 0, 27, 6, 7, 0, 28, 6, 7, 0, 29, 6, 7, 0,172, 0, 2, 0, 30, 6, 2, 0, 31, 6, - 2, 0, 32, 6, 2, 0, 37, 0, 2, 0, 33, 6, 2, 0, 34, 6, 2, 0, 35, 6, 2, 0, 16, 6, 7, 0, 36, 6, 7, 0, 37, 6, - 71, 0, 38, 6,163, 0,110, 3,209, 0, 39, 6,210, 0, 40, 6,211, 0, 41, 6,212, 0, 42, 6,213, 0, 43, 6,214, 0, 44, 6, - 7, 0, 45, 6, 2, 0, 46, 6, 2, 0, 47, 6, 7, 0, 48, 6, 7, 0, 49, 6, 7, 0, 50, 6,215, 0, 55, 0,216, 0, 0, 0, -216, 0, 1, 0, 12, 0, 51, 6, 4, 0, 52, 6, 7, 0, 53, 6, 2, 0, 54, 6, 7, 0, 25, 6, 7, 0, 79, 1, 7, 0, 43, 0, - 4, 0, 55, 6, 2, 0, 35, 6, 2, 0, 16, 6, 32, 0,134, 5, 32, 0, 56, 6, 12, 0, 57, 6,208, 0, 58, 6,215, 0, 39, 6, - 0, 0, 59, 6, 4, 0,130, 3, 4, 0,252, 5, 2, 0, 60, 6, 2, 0, 70, 0, 2, 0, 61, 6, 2, 0, 62, 6, 2, 0,241, 1, - 2, 0, 19, 0, 2, 0, 31, 2, 2, 0, 63, 6, 7, 0,111, 0, 7, 0, 64, 6, 7, 0, 48, 6, 7, 0, 50, 6, 7, 0, 65, 6, - 7, 0, 66, 6, 7, 0,172, 0, 7, 0,248, 5, 2, 0, 67, 6, 2, 0,124, 1, 2, 0, 68, 6, 2, 0, 69, 6, 2, 0, 70, 6, - 2, 0, 71, 6, 2, 0, 72, 6, 2, 0, 73, 6, 2, 0, 74, 6, 2, 0, 32, 6, 4, 0, 75, 6, 12, 0, 76, 6, 2, 0, 77, 6, - 2, 0,142, 2, 2, 0, 78, 6, 0, 0, 79, 6, 0, 0, 80, 6, 9, 0, 81, 6,163, 0,110, 3,217, 0, 24, 0, 24, 0, 36, 0, - 24, 0, 64, 0, 23, 0, 82, 6, 23, 0, 83, 6, 23, 0, 84, 6, 7, 0, 85, 6, 7, 0, 86, 6, 7, 0, 87, 6, 7, 0, 88, 6, - 2, 0, 89, 6, 2, 0, 90, 6, 2, 0, 91, 6, 2, 0, 92, 6, 2, 0, 93, 6, 2, 0, 19, 0, 2, 0, 94, 6, 2, 0, 95, 6, - 2, 0, 96, 6, 2, 0, 97, 6, 2, 0, 98, 6, 2, 0, 62, 6, 7, 0, 99, 6, 4, 0,100, 6, 4, 0,101, 6,216, 0, 6, 0, -216, 0, 0, 0,216, 0, 1, 0, 12, 0, 51, 6, 4, 0, 52, 6, 7, 0, 53, 6, 2, 0, 54, 6,218, 0, 8, 0,216, 0, 0, 0, -216, 0, 1, 0, 12, 0, 51, 6, 4, 0, 52, 6, 7, 0, 53, 6, 2, 0, 54, 6,219, 0,102, 6, 46, 0,133, 0,220, 0, 14, 0, -216, 0, 0, 0,216, 0, 1, 0, 12, 0, 51, 6, 4, 0, 52, 6, 7, 0, 53, 6, 2, 0, 54, 6,217, 0,103, 6,221, 0,104, 6, - 12, 0,105, 6, 2, 0, 72, 1, 2, 0,106, 6, 4, 0, 19, 0, 7, 0,107, 6, 4, 0, 62, 6,222, 0, 20, 0,216, 0, 0, 0, -216, 0, 1, 0, 12, 0, 51, 6, 4, 0, 52, 6, 7, 0, 53, 6, 2, 0, 54, 6,210, 0, 40, 6,217, 0,103, 6, 2, 0,108, 6, - 2, 0,109, 6, 2, 0,110, 6, 2, 0,111, 6, 2, 0, 94, 6, 2, 0,112, 6, 0, 0, 19, 0, 0, 0,139, 1, 9, 0, 68, 2, - 4, 0,113, 6, 4, 0,114, 6, 27, 0,115, 6,223, 0, 18, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 51, 6, 4, 0, 52, 6, - 7, 0, 53, 6, 2, 0, 54, 6,217, 0,103, 6, 7, 0, 92, 2, 7, 0, 93, 2, 2, 0,108, 6, 2, 0,116, 6, 2, 0,117, 6, - 2, 0,118, 6, 4, 0, 19, 0, 7, 0,119, 6, 4, 0, 16, 6, 4, 0, 37, 0,163, 0,110, 3,224, 0, 15, 0, 0, 0,120, 6, - 0, 0,121, 6, 0, 0,122, 6, 0, 0,123, 6, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,124, 6, 2, 0,125, 6, 2, 0,184, 1, - 2, 0,126, 6, 4, 0,127, 6, 4, 0,128, 6, 2, 0,129, 6, 2, 0, 37, 0, 0, 0,130, 6,225, 0, 16, 0,216, 0, 0, 0, -216, 0, 1, 0, 12, 0, 51, 6, 4, 0, 52, 6, 4, 0,131, 6,224, 0,132, 6,226, 0,133, 6, 12, 0,134, 6, 12, 0,135, 6, -227, 0,136, 6,214, 0,137, 6,228, 0,138, 6, 2, 0,139, 6, 2, 0,140, 6, 2, 0,141, 6, 2, 0, 70, 0,229, 0, 17, 0, -216, 0, 0, 0,216, 0, 1, 0, 12, 0, 51, 6, 4, 0, 52, 6, 7, 0, 53, 6, 2, 0, 54, 6,217, 0,103, 6, 12, 0,142, 6, -230, 0,143, 6, 0, 0,144, 6,231, 0,145, 6, 4, 0,146, 6, 4, 0,147, 6, 2, 0, 19, 0, 2, 0,148, 6, 2, 0,149, 6, - 2, 0, 37, 0,232, 0, 32, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 51, 6, 4, 0, 52, 6, 7, 0, 53, 6, 2, 0, 54, 6, - 47, 0,233, 2, 45, 0, 60, 1, 63, 0,150, 6, 2, 0,132, 0, 2, 0,151, 6, 2, 0, 70, 0, 2, 0,152, 6, 4, 0, 19, 0, - 2, 0,153, 6, 2, 0,154, 6, 2, 0,155, 6, 2, 0,241, 1, 0, 0,156, 6, 0, 0,157, 6, 0, 0,158, 6, 0, 0, 62, 6, - 7, 0,159, 6, 7, 0, 92, 2, 7, 0, 93, 2, 7, 0,119, 6, 7, 0,124, 1, 7, 0,160, 6, 7, 0,161, 6,163, 0,110, 3, -233, 0,162, 6,234, 0,163, 6,235, 0, 11, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 51, 6, 4, 0, 52, 6, 7, 0, 53, 6, - 2, 0, 54, 6, 2, 0,106, 6, 2, 0, 19, 0, 4, 0, 37, 0,221, 0,104, 6,217, 0,103, 6,236, 0, 27, 0,216, 0, 0, 0, -216, 0, 1, 0, 12, 0, 51, 6, 4, 0, 52, 6, 7, 0, 53, 6, 2, 0, 54, 6, 42, 0,164, 6, 4, 0,165, 6, 4, 0,166, 6, - 2, 0, 90, 0, 2, 0,132, 0, 2, 0,167, 6, 0, 0,168, 6, 0, 0,169, 6, 4, 0,170, 6, 4, 0,171, 6, 4, 0,172, 6, - 4, 0,173, 6, 2, 0,174, 6, 2, 0,175, 6, 7, 0,176, 6, 23, 0,177, 6, 23, 0,178, 6, 4, 0,179, 6, 4, 0,180, 6, - 0, 0,181, 6, 0, 0,182, 6,237, 0, 10, 0, 27, 0, 31, 0, 9, 0,183, 6, 9, 0,184, 6, 9, 0,185, 6, 9, 0,186, 6, - 9, 0,187, 6, 4, 0, 90, 0, 4, 0,188, 6, 0, 0,189, 6, 0, 0,190, 6,238, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, - 12, 0, 51, 6, 4, 0, 52, 6, 7, 0, 53, 6,237, 0,191, 6, 2, 0, 90, 0, 2, 0,132, 0, 4, 0, 43, 0, 9, 0,192, 6, -239, 0, 8, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 51, 6, 4, 0, 52, 6, 7, 0, 53, 6,217, 0,103, 6, 4, 0, 19, 0, - 4, 0,193, 6,240, 0, 25, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 51, 6, 4, 0, 52, 6, 7, 0, 53, 6, 2, 0, 54, 6, -217, 0,103, 6, 27, 0,194, 6, 27, 0, 81, 0, 2, 0, 19, 0, 2, 0,132, 0, 7, 0,195, 6, 9, 0,196, 6, 7, 0, 92, 2, - 7, 0, 93, 2, 7, 0,119, 6, 7, 0, 50, 6, 7, 0,197, 6, 7, 0,198, 6, 60, 0, 61, 1, 60, 0,199, 6, 4, 0,200, 6, - 2, 0,201, 6, 2, 0, 37, 0,163, 0,110, 3,241, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 51, 6, 4, 0, 52, 6, - 7, 0, 53, 6, 2, 0, 54, 6, 2, 0, 19, 0, 2, 0,139, 3, 4, 0, 37, 0,163, 0,110, 3,242, 0, 42, 0,216, 0, 0, 0, -216, 0, 1, 0, 12, 0, 51, 6, 4, 0, 52, 6, 7, 0, 53, 6, 2, 0, 54, 6,217, 0,103, 6,226, 0,133, 6, 0, 0,120, 6, - 0, 0,121, 6, 0, 0,122, 6, 2, 0, 17, 0, 2, 0,202, 6, 2, 0, 19, 0, 2, 0,124, 6, 9, 0,196, 6, 4, 0,127, 6, - 4, 0,203, 6, 4, 0,204, 6, 4, 0,128, 6, 23, 0,205, 6, 23, 0,206, 6, 7, 0,207, 6, 7, 0,208, 6, 7, 0,209, 6, - 7, 0,195, 6, 2, 0,210, 6, 2, 0,238, 0, 2, 0,184, 1, 2, 0,126, 6, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0,211, 6, - 2, 0,212, 6, 9, 0,213, 6, 9, 0,214, 6, 9, 0,215, 6, 9, 0,216, 6, 9, 0,217, 6, 2, 0,218, 6, 0, 0,219, 6, - 57, 0,220, 6,243, 0, 7, 0,243, 0, 0, 0,243, 0, 1, 0, 4, 0,221, 6, 4, 0, 23, 0, 0, 0, 84, 0, 4, 0,222, 6, - 4, 0, 17, 0,244, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 51, 6, 4, 0, 52, 6, 7, 0, 53, 6, 2, 0, 54, 6, - 4, 0, 17, 0, 4, 0,223, 6, 4, 0, 19, 0, 4, 0,167, 6, 12, 0,224, 6, 12, 0,225, 6, 0, 0,226, 6, 0, 0,227, 6, - 4, 0,228, 6, 4, 0,229, 6,245, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 51, 6, 4, 0, 52, 6, 4, 0, 37, 0, - 0, 0,230, 6,246, 0, 7, 0,246, 0, 0, 0,246, 0, 1, 0, 0, 0,231, 6, 2, 0,232, 6, 2, 0,233, 6, 2, 0,234, 6, - 2, 0, 37, 0,247, 0, 12, 0, 2, 0,233, 6, 2, 0,235, 6, 2, 0,236, 6, 0, 0,194, 2, 2, 0,237, 6, 2, 0,238, 6, - 2, 0,239, 6, 2, 0,240, 6, 2, 0,241, 6, 2, 0, 94, 6, 7, 0,242, 6, 7, 0,243, 6,248, 0, 18, 0,248, 0, 0, 0, -248, 0, 1, 0, 0, 0,253, 3,247, 0,244, 6,247, 0,245, 6,247, 0,246, 6,247, 0,247, 6, 7, 0,248, 6, 2, 0,249, 6, - 2, 0,250, 6, 2, 0,251, 6, 2, 0,252, 6, 2, 0,253, 6, 2, 0,254, 6, 2, 0,255, 6, 2, 0, 0, 7, 2, 0, 1, 7, - 2, 0, 2, 7,249, 0, 10, 0, 0, 0, 3, 7, 0, 0, 4, 7, 0, 0, 5, 7, 0, 0, 6, 7, 0, 0, 7, 7, 0, 0, 8, 7, - 2, 0, 9, 7, 2, 0, 10, 7, 2, 0, 11, 7, 2, 0, 37, 0,250, 0, 8, 0, 0, 0, 12, 7, 0, 0, 13, 7, 0, 0, 14, 7, - 0, 0, 15, 7, 0, 0, 16, 7, 0, 0, 17, 7, 7, 0, 15, 6, 7, 0, 37, 0,251, 0, 18, 0,249, 0, 18, 7,249, 0, 19, 7, -249, 0, 20, 7,249, 0, 21, 7,249, 0, 22, 7,249, 0, 23, 7,249, 0, 24, 7,249, 0, 25, 7,249, 0, 26, 7,249, 0, 27, 7, -249, 0, 28, 7,249, 0, 29, 7,249, 0, 30, 7,249, 0, 31, 7,249, 0, 32, 7,249, 0, 33, 7,250, 0, 34, 7, 0, 0, 35, 7, -252, 0, 92, 0, 0, 0, 36, 7, 0, 0, 37, 7, 0, 0, 7, 7, 0, 0, 38, 7, 0, 0, 39, 7, 0, 0, 40, 7, 0, 0, 41, 7, - 0, 0, 42, 7, 0, 0, 43, 7, 0, 0, 44, 7, 0, 0, 45, 7, 0, 0, 46, 7, 0, 0, 47, 7, 0, 0, 48, 7, 0, 0, 49, 7, - 0, 0, 50, 7, 0, 0, 51, 7, 0, 0, 52, 7, 0, 0, 53, 7, 0, 0, 54, 7, 0, 0, 55, 7, 0, 0, 56, 7, 0, 0, 57, 7, - 0, 0, 58, 7, 0, 0, 59, 7, 0, 0, 60, 7, 0, 0, 61, 7, 0, 0, 62, 7, 0, 0, 63, 7, 0, 0, 64, 7, 0, 0, 65, 7, - 0, 0, 66, 7, 0, 0, 67, 7, 0, 0, 68, 7, 0, 0, 69, 7, 0, 0, 70, 7, 0, 0, 71, 7, 0, 0, 72, 7, 0, 0, 73, 7, - 0, 0, 74, 7, 0, 0, 75, 7, 0, 0, 76, 7, 0, 0, 77, 7, 0, 0, 78, 7, 0, 0, 79, 7, 0, 0, 80, 7, 0, 0, 81, 7, - 0, 0, 82, 7, 0, 0, 83, 7, 0, 0, 84, 7, 0, 0, 85, 7, 0, 0, 86, 7, 0, 0, 87, 7, 0, 0, 88, 7, 0, 0, 89, 7, - 0, 0, 90, 7, 0, 0, 91, 7, 0, 0, 92, 7, 0, 0, 93, 7, 0, 0, 94, 7, 0, 0, 95, 7, 0, 0, 96, 7, 0, 0, 97, 7, - 0, 0, 98, 7, 0, 0, 99, 7, 0, 0,100, 7, 0, 0,101, 7, 0, 0,102, 7, 0, 0,103, 7, 0, 0,104, 7, 0, 0,105, 7, - 0, 0,106, 7, 0, 0,107, 7, 0, 0,108, 7, 0, 0,109, 7, 0, 0,110, 7, 0, 0,111, 7, 0, 0,112, 7, 0, 0,113, 7, - 0, 0,114, 7, 0, 0,115, 7, 0, 0,116, 7, 0, 0,117, 7, 0, 0,118, 7, 0, 0,119, 7, 0, 0,120, 7, 0, 0,121, 7, - 0, 0,122, 7, 0, 0,123, 7, 0, 0,124, 7, 0, 0,125, 7, 0, 0,126, 7,253, 0, 5, 0, 0, 0,127, 7, 0, 0, 60, 7, - 0, 0, 62, 7, 2, 0, 19, 0, 2, 0, 37, 0,254, 0, 25, 0,254, 0, 0, 0,254, 0, 1, 0, 0, 0, 20, 0,251, 0,128, 7, -252, 0,129, 7,252, 0,130, 7,252, 0,131, 7,252, 0,132, 7,252, 0,133, 7,252, 0,134, 7,252, 0,135, 7,252, 0,136, 7, -252, 0,137, 7,252, 0,138, 7,252, 0,139, 7,252, 0,140, 7,252, 0,141, 7,252, 0,142, 7,252, 0,143, 7,252, 0,144, 7, -252, 0,145, 7,252, 0,146, 7,253, 0,147, 7, 4, 0,148, 7, 4, 0, 37, 0,255, 0, 3, 0,255, 0, 0, 0,255, 0, 1, 0, - 0, 0,149, 7, 0, 1, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,141, 2, 7, 0,150, 7, 7, 0, 46, 2, 1, 1, 84, 0, - 4, 0, 19, 0, 4, 0,151, 7, 4, 0,152, 7, 0, 0,153, 7, 0, 0,154, 7, 0, 0,155, 7, 0, 0,156, 7, 0, 0,157, 7, - 0, 0,158, 7, 0, 0,159, 7, 0, 0,160, 7, 0, 0,161, 7, 0, 0,162, 7, 4, 0,163, 7, 2, 0,164, 7, 2, 0,165, 7, - 2, 0,166, 7, 2, 0,167, 7, 4, 0,168, 7, 4, 0,169, 7, 4, 0,170, 7, 4, 0,171, 7, 2, 0,172, 7, 2, 0,173, 7, - 4, 0,174, 7, 4, 0,175, 7, 4, 0,176, 7, 4, 0,177, 7, 4, 0,178, 7, 4, 0,224, 6, 4, 0,179, 7, 2, 0,180, 7, - 2, 0,181, 7, 2, 0,182, 7, 2, 0,183, 7, 12, 0,184, 7, 12, 0,185, 7, 12, 0,186, 7, 12, 0,187, 7, 12, 0,188, 7, - 0, 0,189, 7, 2, 0,190, 7, 2, 0,191, 7, 2, 0,192, 7, 2, 0,193, 7, 2, 0,194, 7, 2, 0,195, 7, 2, 0,196, 7, - 2, 0,197, 7, 0, 1,198, 7, 2, 0,199, 7, 2, 0,200, 7, 2, 0,201, 7, 2, 0,202, 7, 2, 0,203, 7, 2, 0,204, 7, - 2, 0,205, 7, 2, 0,206, 7, 4, 0,207, 7, 4, 0,208, 7, 2, 0,209, 7, 2, 0,210, 7, 2, 0,211, 7, 2, 0,212, 7, - 2, 0,213, 7, 2, 0,214, 7, 2, 0,215, 7, 2, 0,216, 7, 2, 0,217, 7, 2, 0,218, 7, 2, 0,219, 7, 2, 0,220, 7, - 2, 0,221, 7, 2, 0,222, 7, 2, 0,223, 7, 2, 0,224, 7, 2, 0,225, 7, 2, 0,139, 1, 0, 0,226, 7, 0, 0,227, 7, - 7, 0,228, 7, 2, 0,193, 5, 2, 0,194, 5, 55, 0,229, 7,219, 0, 21, 0, 27, 0, 31, 0, 12, 0,230, 7, 12, 0,231, 7, - 12, 0,232, 7, 12, 0, 51, 6, 46, 0,133, 0, 46, 0,233, 7, 2, 0,234, 7, 2, 0,235, 7, 2, 0,236, 7, 2, 0,237, 7, - 2, 0,238, 7, 2, 0,239, 7, 2, 0,240, 7, 2, 0,241, 7, 2, 0,242, 7, 2, 0,243, 7, 4, 0, 70, 0,214, 0,244, 7, - 9, 0,245, 7, 2, 0,246, 7, 2, 1, 5, 0, 2, 1, 0, 0, 2, 1, 1, 0, 2, 1,247, 7, 13, 0,248, 7, 4, 0, 19, 0, - 3, 1, 7, 0, 3, 1, 0, 0, 3, 1, 1, 0, 2, 1,249, 7, 2, 1,250, 7, 2, 0, 39, 5, 2, 0, 19, 0, 4, 0, 37, 0, - 4, 1, 25, 0, 4, 1, 0, 0, 4, 1, 1, 0, 5, 1,251, 7, 6, 1,138, 6, 0, 0,252, 7, 0, 0,253, 7, 0, 0,254, 7, - 2, 0,255, 7, 2, 0, 0, 8, 2, 0, 1, 8, 2, 0, 2, 8, 2, 0, 3, 8, 2, 0, 37, 0, 2, 0, 19, 0, 2, 0, 4, 8, - 2, 0, 5, 8, 2, 0, 6, 8, 4, 0, 7, 8, 4, 1, 8, 8, 9, 0, 9, 8, 4, 0, 10, 8, 4, 0, 11, 8, 4, 0, 12, 8, - 4, 0, 13, 8, 0, 0, 14, 8, 7, 1, 22, 0, 7, 1, 0, 0, 7, 1, 1, 0, 2, 1,249, 7, 2, 1,250, 7, 2, 1, 15, 8, - 2, 1, 16, 8,219, 0, 17, 8, 23, 0, 52, 0, 0, 0, 52, 6, 0, 0, 18, 8, 2, 0, 95, 6, 2, 0, 96, 6, 2, 0, 19, 8, - 2, 0, 37, 0, 2, 0,237, 7, 2, 0,222, 6, 2, 0, 19, 0, 8, 1,251, 7, 12, 0, 20, 8, 12, 0, 51, 6, 12, 0, 21, 8, - 12, 0, 22, 8, 9, 1, 22, 0, 9, 1, 0, 0, 9, 1, 1, 0,217, 0,103, 6, 23, 0, 23, 8, 23, 0, 24, 8, 2, 0, 95, 6, - 2, 0, 96, 6, 2, 0, 25, 8, 2, 0, 26, 8, 2, 0, 27, 8, 2, 0, 19, 0, 7, 0, 88, 2, 2, 0, 1, 8, 2, 0, 2, 8, - 2, 0,236, 7, 2, 0,241, 7, 10, 1,251, 7, 12, 0, 28, 8, 12, 0, 29, 8, 12, 0, 21, 8, 0, 0, 30, 8, 9, 0, 31, 8, - 11, 1, 12, 0, 0, 0, 32, 8, 2, 0, 33, 8, 2, 0, 34, 8, 2, 0, 35, 8, 2, 0, 36, 8, 2, 0, 26, 5, 2, 0, 21, 5, -219, 0, 37, 8, 46, 0, 38, 8, 4, 0, 39, 8, 4, 0, 40, 8, 0, 0, 41, 8, 12, 1, 1, 0, 0, 0, 42, 8, 13, 1, 8, 0, - 57, 0, 43, 8, 57, 0, 44, 8, 13, 1, 45, 8, 13, 1, 46, 8, 13, 1, 47, 8, 2, 0,128, 0, 2, 0, 19, 0, 4, 0, 48, 8, - 14, 1, 4, 0, 4, 0,165, 6, 4, 0, 49, 8, 4, 0,170, 6, 4, 0, 50, 8, 15, 1, 2, 0, 4, 0, 51, 8, 4, 0, 52, 8, - 16, 1, 7, 0, 7, 0, 53, 8, 7, 0, 54, 8, 7, 0, 55, 8, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,140, 4, 7, 0, 56, 8, - 17, 1, 6, 0, 0, 0, 57, 8, 0, 0,122, 6, 49, 0,136, 0, 2, 0,106, 0, 2, 0, 25, 5, 4, 0, 37, 0, 18, 1, 21, 0, - 18, 1, 0, 0, 18, 1, 1, 0, 4, 0, 57, 0, 4, 0, 23, 0, 4, 0, 28, 0, 4, 0, 58, 8, 4, 0, 59, 8, 4, 0, 60, 8, - 12, 1, 61, 8, 0, 0, 57, 8, 4, 0, 62, 8, 4, 0, 63, 8, 17, 1,104, 3, 14, 1, 64, 8, 15, 1, 65, 8, 16, 1, 66, 8, - 13, 1, 67, 8, 13, 1, 68, 8, 13, 1, 69, 8, 57, 0, 70, 8, 57, 0, 71, 8, 19, 1, 12, 0, 0, 0, 8, 2, 9, 0,224, 0, - 0, 0,225, 0, 4, 0,228, 0, 4, 0,236, 0, 9, 0,229, 0, 7, 0,231, 0, 7, 0,232, 0, 9, 0, 72, 8, 9, 0, 73, 8, - 9, 0,233, 0, 9, 0,235, 0, 20, 1, 46, 0, 20, 1, 0, 0, 20, 1, 1, 0, 9, 0, 74, 8, 9, 0, 26, 0, 0, 0, 27, 0, - 4, 0, 19, 0, 4, 0, 17, 0, 4, 0, 23, 0, 4, 0, 88, 0, 4, 0, 75, 8, 4, 0, 76, 8, 4, 0, 59, 8, 4, 0, 60, 8, - 4, 0, 77, 8, 4, 0,247, 0, 4, 0, 78, 8, 4, 0, 79, 8, 7, 0, 80, 8, 7, 0, 81, 8, 4, 0,125, 0, 4, 0, 82, 8, - 18, 1, 83, 8, 36, 0, 80, 0, 46, 0,133, 0, 32, 0, 84, 8, 49, 0,136, 0, 7, 0, 85, 8, 7, 0, 86, 8, 19, 1, 62, 1, - 20, 1, 87, 8, 20, 1, 88, 8, 20, 1, 89, 8, 12, 0, 90, 8, 21, 1, 91, 8, 9, 0, 92, 8, 7, 0, 6, 4, 7, 0, 93, 8, - 7, 0, 94, 8, 4, 0, 95, 8, 4, 0, 96, 8, 7, 0, 97, 8, 9, 0, 98, 8, 4, 0, 99, 8, 4, 0,100, 8, 4, 0,101, 8, - 7, 0,102, 8, 22, 1, 4, 0, 22, 1, 0, 0, 22, 1, 1, 0, 12, 0,103, 8, 20, 1,104, 8,205, 0, 6, 0, 12, 0,105, 8, - 12, 0, 90, 8, 12, 0,106, 8, 20, 1,107, 8, 0, 0,108, 8, 0, 0,109, 8, 23, 1, 4, 0, 7, 0,110, 8, 7, 0, 78, 3, - 2, 0,111, 8, 2, 0,112, 8, 24, 1, 6, 0, 7, 0,113, 8, 7, 0,114, 8, 7, 0,115, 8, 7, 0,116, 8, 4, 0,117, 8, - 4, 0,118, 8, 25, 1, 13, 0, 7, 0,119, 8, 7, 0,120, 8, 7, 0,121, 8, 7, 0,122, 8, 7, 0,123, 8, 7, 0,124, 8, - 7, 0,125, 8, 7, 0,126, 8, 7, 0,127, 8, 7, 0,128, 8, 4, 0,239, 2, 4, 0,129, 8, 4, 0,130, 8, 26, 1, 2, 0, - 7, 0,127, 5, 7, 0, 37, 0, 27, 1, 5, 0, 7, 0,131, 8, 7, 0,132, 8, 4, 0, 90, 0, 4, 0,195, 2, 4, 0,133, 8, - 28, 1, 6, 0, 28, 1, 0, 0, 28, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,134, 8, 2, 0, 57, 0, 29, 1, 8, 0, - 29, 1, 0, 0, 29, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,134, 8, 2, 0, 57, 0, 7, 0, 23, 0, 7, 0,125, 0, - 30, 1, 45, 0, 30, 1, 0, 0, 30, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,134, 8, 2, 0,243, 0, 2, 0, 48, 4, - 2, 0,135, 8, 7, 0,136, 8, 7, 0, 89, 0, 7, 0,252, 2, 4, 0,137, 8, 4, 0, 82, 0, 4, 0,197, 2, 7, 0,138, 8, - 7, 0,139, 8, 7, 0,140, 8, 7, 0,141, 8, 7, 0,142, 8, 7, 0,143, 8, 7, 0,249, 2, 7, 0, 59, 1, 7, 0,144, 8, - 7, 0,145, 8, 7, 0, 37, 0, 7, 0,146, 8, 7, 0,147, 8, 7, 0,148, 8, 2, 0,149, 8, 2, 0,150, 8, 2, 0,151, 8, - 2, 0,152, 8, 2, 0,153, 8, 2, 0,154, 8, 2, 0,155, 8, 2, 0,156, 8, 2, 0, 31, 2, 2, 0,157, 8, 2, 0, 28, 2, - 2, 0,158, 8, 0, 0,159, 8, 0, 0,160, 8, 7, 0,241, 0, 31, 1,161, 8, 67, 0,244, 1, 32, 1, 16, 0, 32, 1, 0, 0, - 32, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,134, 8, 2, 0,243, 0, 7, 0,244, 2, 7, 0,245, 2, 7, 0,246, 2, - 7, 0, 77, 2, 7, 0,247, 2, 7, 0,248, 2, 7, 0,162, 8, 7, 0,249, 2, 7, 0,251, 2, 7, 0,252, 2,231, 0, 5, 0, - 2, 0, 17, 0, 2, 0, 48, 8, 2, 0, 19, 0, 2, 0,163, 8, 27, 0,194, 6,230, 0, 3, 0, 4, 0, 69, 0, 4, 0,164, 8, -231, 0, 2, 0, 33, 1, 7, 0, 33, 1, 0, 0, 33, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, - 9, 0,165, 8, 34, 1, 5, 0, 0, 0, 20, 0, 7, 0, 79, 1, 7, 0,166, 8, 4, 0,167, 8, 4, 0, 37, 0, 35, 1, 4, 0, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 43, 0, 2, 0, 70, 0, 36, 1, 4, 0, 0, 0, 20, 0, 66, 0,168, 8, 7, 0, 79, 1, - 7, 0, 37, 0, 37, 1, 6, 0, 2, 0,169, 8, 2, 0,170, 8, 2, 0, 17, 0, 2, 0,171, 8, 0, 0,172, 8, 0, 0,173, 8, - 38, 1, 5, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0,174, 8, 0, 0,175, 8, 39, 1, 3, 0, 4, 0, 17, 0, - 4, 0, 37, 0, 0, 0, 20, 0, 40, 1, 4, 0, 2, 0,176, 8, 2, 0,177, 8, 2, 0, 19, 0, 2, 0, 37, 0, 41, 1, 6, 0, - 0, 0, 20, 0, 0, 0,178, 8, 2, 0,179, 8, 2, 0,249, 2, 2, 0, 72, 1, 2, 0, 70, 0, 42, 1, 5, 0, 0, 0, 20, 0, - 7, 0, 78, 3, 7, 0,142, 4, 2, 0, 19, 0, 2, 0,209, 2, 43, 1, 3, 0, 0, 0, 20, 0, 4, 0,197, 2, 4, 0,176, 8, - 44, 1, 7, 0, 0, 0, 20, 0, 7, 0,142, 4, 0, 0,180, 8, 0, 0,181, 8, 2, 0, 72, 1, 2, 0, 43, 0, 4, 0,182, 8, - 45, 1, 4, 0, 0, 0,183, 8, 0, 0,184, 8, 4, 0, 17, 0, 7, 0,213, 2, 46, 1, 3, 0, 32, 0,185, 8, 0, 0,186, 8, - 0, 0,187, 8, 47, 1, 18, 0, 47, 1, 0, 0, 47, 1, 1, 0, 2, 0, 17, 0, 2, 0,188, 8, 2, 0, 19, 0, 2, 0,189, 8, - 2, 0,190, 8, 2, 0,191, 8, 2, 0, 43, 0, 2, 0, 70, 0, 0, 0, 20, 0, 9, 0, 2, 0, 48, 1,192, 8, 32, 0, 45, 0, - 2, 0,145, 5, 2, 0, 93, 8, 2, 0,193, 8, 2, 0, 37, 0, 49, 1, 11, 0, 0, 0, 20, 0, 0, 0, 17, 0, 0, 0,194, 8, - 2, 0, 19, 0, 2, 0,209, 2, 2, 0,195, 8, 4, 0,196, 8, 4, 0,197, 8, 4, 0,198, 8, 4, 0,199, 8, 4, 0,200, 8, - 50, 1, 1, 0, 0, 0,201, 8, 51, 1, 4, 0, 42, 0,164, 6, 0, 0,149, 7, 4, 0, 72, 1, 4, 0, 19, 0, 48, 1, 18, 0, - 48, 1, 0, 0, 48, 1, 1, 0, 48, 1,202, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,203, 8, 2, 0,191, 8, 2, 0,188, 8, - 2, 0,204, 8, 2, 0, 70, 0, 2, 0,241, 1, 0, 0, 20, 0, 9, 0, 2, 0, 52, 1,192, 8, 47, 1,205, 8, 2, 0, 15, 0, - 2, 0,206, 8, 4, 0,207, 8, 53, 1, 3, 0, 4, 0,223, 2, 4, 0, 37, 0, 32, 0, 45, 0, 54, 1, 12, 0,161, 0,208, 8, - 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,136, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,209, 8, 2, 0,210, 8, 2, 0,211, 8, - 2, 0,212, 8, 2, 0,213, 8, 7, 0,214, 8, 55, 1, 13, 0, 2, 0, 19, 0, 2, 0,215, 8, 4, 0, 43, 0, 4, 0, 70, 0, - 2, 0,216, 8, 7, 0, 6, 4, 7, 0,217, 8, 21, 1, 91, 8, 56, 1,218, 8, 2, 0, 17, 0, 2, 0,124, 1, 2, 0, 9, 6, - 2, 0,219, 8, 57, 1, 11, 0, 4, 0,223, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 45, 0, 80, 0,220, 8, 0, 0, 20, 0, - 7, 0,221, 8, 7, 0,222, 8, 7, 0,147, 3, 2, 0,223, 8, 2, 0,224, 8, 58, 1, 5, 0, 2, 0, 17, 0, 2, 0, 43, 0, - 4, 0, 37, 0, 46, 0,133, 0, 32, 0,134, 5, 59, 1, 5, 0, 4, 0, 37, 0, 4, 0, 17, 0, 0, 0, 20, 0, 0, 0,174, 8, - 32, 0, 45, 0, 60, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,188, 8, 2, 0,148, 3, 7, 0,225, 8, 7, 0,226, 8, - 7, 0,139, 1, 7, 0,160, 3, 7, 0,119, 3, 7, 0,122, 3, 7, 0,227, 8, 7, 0,228, 8, 32, 0,229, 8, 61, 1, 10, 0, - 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,136, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,209, 8, 2, 0, 43, 0, 2, 0, 70, 0, - 2, 0,241, 1, 2, 0,124, 1, 62, 1, 8, 0, 32, 0, 45, 0, 7, 0,246, 2, 7, 0,230, 8, 7, 0,231, 8, 7, 0, 37, 0, - 2, 0, 43, 0, 2, 0,209, 2, 7, 0, 70, 0, 63, 1, 12, 0, 2, 0, 17, 0, 2, 0, 72, 1, 2, 0, 19, 0, 2, 0,249, 2, - 2, 0,223, 2, 2, 0,232, 8, 4, 0, 37, 0, 7, 0,233, 8, 7, 0,234, 8, 7, 0,235, 8, 7, 0,236, 8, 0, 0,237, 8, - 64, 1, 9, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,136, 8, 4, 0, 89, 0, 0, 0, 20, 0, 2, 0,139, 1, 2, 0, 64, 0, - 2, 0,238, 8, 2, 0,239, 8, 65, 1, 7, 0, 4, 0,197, 2, 4, 0,240, 8, 4, 0,241, 8, 4, 0,242, 8, 7, 0,243, 8, - 7, 0,244, 8, 0, 0,180, 8, 66, 1, 7, 0, 0, 0,245, 8, 32, 0,246, 8, 0, 0,186, 8, 2, 0,247, 8, 2, 0, 43, 0, - 4, 0, 70, 0, 0, 0,187, 8, 67, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,136, 8, 4, 0, 89, 0, 0, 0,248, 8, - 0, 0,249, 8, 68, 1, 1, 0, 4, 0, 19, 0, 69, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,250, 8, - 7, 0,251, 8, 42, 0,164, 6, 70, 1, 4, 0, 0, 0, 73, 2, 2, 0, 19, 0, 4, 0, 17, 0, 32, 0, 45, 0, 71, 1, 2, 0, - 4, 0, 17, 0, 4, 0, 84, 6, 72, 1, 6, 0, 0, 0,183, 8, 0, 0,184, 8, 4, 0, 17, 0, 7, 0, 39, 2, 32, 0, 57, 3, - 32, 0,252, 8, 52, 1, 10, 0, 52, 1, 0, 0, 52, 1, 1, 0, 52, 1,202, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,188, 8, - 2, 0,253, 8, 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 45, 0, 73, 1, 10, 0, 7, 0,147, 3, 7, 0,254, 8, 7, 0,255, 8, - 7, 0, 0, 9, 7, 0, 1, 9, 4, 0, 19, 0, 7, 0,232, 8, 7, 0, 2, 9, 7, 0, 3, 9, 7, 0, 37, 0, 56, 1, 8, 0, - 7, 0, 4, 9, 7, 0, 5, 9, 7, 0, 6, 9, 7, 0, 7, 9, 7, 0, 8, 9, 7, 0, 9, 9, 7, 0, 10, 9, 7, 0, 11, 9, - 21, 1, 16, 0, 27, 0, 31, 0, 0, 0, 34, 0, 43, 0,151, 0, 9, 0,224, 0, 43, 0, 12, 9, 36, 0, 80, 0, 7, 0, 6, 4, - 7, 0, 13, 9, 7, 0,217, 8, 7, 0, 4, 9, 7, 0, 5, 9, 7, 0, 14, 9, 4, 0, 90, 0, 4, 0, 37, 0, 9, 0, 15, 9, - 9, 0, 16, 9, 74, 1, 15, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 51, 6, 4, 0, 52, 6, 7, 0, 53, 6, 7, 1, 17, 9, -217, 0,103, 6, 21, 1, 91, 8, 2, 0, 72, 1, 2, 0,215, 8, 2, 0, 92, 2, 2, 0, 93, 2, 2, 0, 19, 0, 2, 0,154, 6, - 4, 0, 70, 0, 75, 1, 6, 0, 75, 1, 0, 0, 75, 1, 1, 0, 32, 0, 45, 0, 9, 0, 18, 9, 4, 0,248, 0, 4, 0, 37, 0, - 67, 0, 4, 0, 27, 0, 31, 0, 12, 0, 19, 9, 4, 0,130, 0, 7, 0, 20, 9, 76, 1, 27, 0, 76, 1, 0, 0, 76, 1, 1, 0, - 26, 0, 21, 9, 76, 1, 38, 0, 12, 0, 22, 9, 0, 0, 20, 0, 7, 0, 23, 9, 7, 0, 24, 9, 7, 0, 25, 9, 7, 0, 26, 9, - 4, 0, 19, 0, 7, 0, 27, 9, 7, 0, 28, 9, 7, 0, 29, 9, 7, 0, 79, 1, 7, 0, 39, 2, 7, 0, 30, 9, 7, 0,195, 2, - 7, 0, 31, 9, 7, 0, 32, 9, 7, 0, 33, 9, 7, 0, 34, 9, 7, 0, 35, 9, 7, 0,173, 0, 4, 0,130, 0, 2, 0,174, 5, - 2, 0,139, 1, 77, 1, 25, 0, 27, 0, 31, 0, 39, 0, 75, 0, 12, 0, 36, 9, 12, 0, 37, 9, 12, 0, 38, 9, 76, 1, 39, 9, - 9, 0, 40, 9, 9, 0, 41, 9, 4, 0, 19, 0, 4, 0, 60, 6, 2, 0,253, 2, 2, 0,113, 6, 4, 0, 37, 0, 4, 0,130, 0, - 4, 0, 42, 9, 2, 0, 43, 9, 2, 0, 44, 9, 2, 0, 45, 9, 2, 0, 46, 9, 4, 0, 47, 9, 4, 0, 48, 9, 4, 0, 49, 9, - 4, 0, 50, 9, 4, 0, 51, 9, 4, 0, 52, 9, 78, 1, 2, 0, 7, 0,155, 2, 4, 0, 19, 0,165, 0, 5, 0, 78, 1, 53, 9, - 4, 0,195, 2, 4, 0, 54, 9, 4, 0, 55, 9, 4, 0, 19, 0,164, 0, 16, 0, 4, 0, 56, 9, 4, 0, 57, 9, 4, 0, 58, 9, - 4, 0, 59, 9, 2, 0, 60, 9, 2, 0, 61, 9, 2, 0, 62, 9, 2, 0,248, 0, 2, 0, 63, 9, 2, 0, 64, 9, 2, 0, 65, 9, - 2, 0, 66, 9, 4, 0, 67, 9, 4, 0, 68, 9, 4, 0, 69, 9, 4, 0, 70, 9, 79, 1, 44, 0, 79, 1, 0, 0, 79, 1, 1, 0, - 26, 0, 21, 9, 12, 0,174, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0, 71, 9, 2, 0, 72, 9, 2, 0, 73, 9, 2, 0,133, 3, - 2, 0, 74, 9, 4, 0, 75, 2, 4, 0, 49, 9, 4, 0, 50, 9, 76, 1, 75, 9, 79, 1, 38, 0, 79, 1, 76, 9, 12, 0, 77, 9, - 9, 0, 78, 9, 9, 0, 79, 9, 9, 0, 80, 9, 7, 0, 67, 1, 7, 0,173, 0, 7, 0, 81, 9, 7, 0, 18, 2, 7, 0,124, 3, - 7, 0,126, 3, 2, 0,156, 3, 2, 0, 37, 0, 7, 0, 82, 9, 7, 0, 83, 9, 7, 0,129, 3, 7, 0, 84, 9, 7, 0, 85, 9, - 7, 0, 86, 9, 7, 0, 87, 9, 7, 0, 88, 9, 7, 0, 89, 9, 7, 0, 90, 9, 7, 0, 91, 9, 7, 0, 68, 2,165, 0,112, 3, - 32, 0, 92, 9, 79, 1, 93, 9,162, 0, 14, 0, 12, 0, 94, 9, 80, 1, 95, 9, 2, 0, 19, 0, 2, 0, 96, 9, 7, 0,104, 2, - 7, 0, 97, 9, 7, 0, 98, 9, 12, 0, 99, 9, 4, 0,100, 9, 4, 0,101, 9, 9, 0,102, 9, 9, 0,103, 9,164, 0,111, 3, - 0, 0,104, 9, 81, 1, 1, 0, 4, 0,101, 9, 82, 1, 12, 0, 4, 0,101, 9, 7, 0,200, 8, 2, 0,105, 9, 2, 0,106, 9, - 7, 0,107, 9, 7, 0,108, 9, 2, 0,109, 9, 2, 0, 19, 0, 7, 0,110, 9, 7, 0,111, 9, 7, 0,112, 9, 7, 0,113, 9, - 83, 1, 7, 0, 83, 1, 0, 0, 83, 1, 1, 0, 12, 0,114, 9, 4, 0, 19, 0, 4, 0,115, 9, 0, 0,253, 3,253, 0,116, 9, -161, 0, 7, 0, 27, 0, 31, 0, 12, 0,117, 9, 12, 0, 94, 9, 12, 0,118, 9, 12, 0,100, 0, 4, 0, 19, 0, 4, 0,119, 9, -221, 0, 5, 0, 27, 0,120, 9, 12, 0, 94, 9, 67, 0,121, 9, 4, 0,122, 9, 4, 0, 19, 0, 84, 1, 13, 0,216, 0, 0, 0, -216, 0, 1, 0, 12, 0, 51, 6, 4, 0, 52, 6, 7, 0, 53, 6, 2, 0, 54, 6,217, 0,103, 6,161, 0,107, 3,221, 0,123, 9, - 0, 0, 72, 1, 0, 0,106, 6, 2, 0, 19, 0, 7, 0,124, 9, 85, 1, 8, 0, 85, 1, 0, 0, 85, 1, 1, 0, 83, 1,125, 9, - 36, 0, 80, 0, 12, 0,113, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0,126, 9, 86, 1, 5, 0, 86, 1, 0, 0, 86, 1, 1, 0, - 36, 0, 80, 0, 2, 0, 19, 0, 0, 0,127, 9, 87, 1, 14, 0, 87, 1, 0, 0, 87, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 0, 0,128, 9, 0, 0,129, 9, 0, 0,127, 9, 7, 0,130, 9, 7, 0,131, 9, 4, 0, 37, 0, 36, 0, 80, 0, - 7, 0,132, 9, 7, 0,133, 9, 88, 1, 9, 0, 88, 1, 0, 0, 88, 1, 1, 0, 32, 0,134, 9, 0, 0, 0, 3, 7, 0,135, 9, - 2, 0,136, 9, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,137, 9, 89, 1, 7, 0, 42, 0,164, 6, 26, 0, 21, 9, 4, 0, 19, 0, - 4, 0,138, 9, 12, 0,139, 9, 32, 0,134, 9, 0, 0, 0, 3, 90, 1, 15, 0, 32, 0,134, 9, 2, 0,140, 9, 2, 0, 19, 0, - 2, 0,141, 9, 2, 0,142, 9, 0, 0, 0, 3, 32, 0,143, 9, 0, 0,144, 9, 7, 0,145, 9, 7, 0, 39, 2, 7, 0,146, 9, - 7, 0,147, 9, 2, 0, 17, 0, 2, 0, 72, 1, 7, 0, 79, 1, 91, 1, 6, 0, 32, 0,134, 9, 7, 0, 53, 9, 2, 0,148, 9, - 2, 0,149, 9, 2, 0, 19, 0, 2, 0,150, 9, 92, 1, 6, 0, 32, 0,134, 9, 4, 0,151, 9, 4, 0,152, 9, 4, 0, 90, 0, - 4, 0, 37, 0, 0, 0, 0, 3, 93, 1, 4, 0, 32, 0,134, 9, 4, 0, 19, 0, 4, 0,151, 9, 0, 0, 0, 3, 94, 1, 4, 0, - 32, 0,134, 9, 4, 0, 19, 0, 4, 0,151, 9, 0, 0, 0, 3, 95, 1, 4, 0, 32, 0,134, 9, 4, 0, 19, 0, 4, 0,151, 9, - 0, 0, 0, 3, 96, 1, 2, 0, 4, 0, 19, 0, 7, 0, 6, 4, 97, 1, 2, 0, 32, 0,134, 9, 0, 0, 0, 3, 98, 1, 10, 0, - 32, 0,134, 9, 4, 0,153, 9, 7, 0,124, 0, 4, 0, 19, 0, 2, 0,157, 6, 2, 0,154, 9, 2, 0, 43, 0, 2, 0, 70, 0, - 7, 0,155, 9, 0, 0, 0, 3, 99, 1, 10, 0, 32, 0,134, 9, 2, 0, 17, 0, 2, 0, 56, 4, 4, 0, 88, 0, 4, 0, 89, 0, - 7, 0,230, 8, 7, 0,231, 8, 4, 0, 37, 0,161, 0,208, 8, 0, 0, 0, 3,100, 1, 4, 0, 32, 0,134, 9, 4, 0,134, 3, - 4, 0,156, 9, 0, 0, 0, 3,101, 1, 4, 0, 32, 0,134, 9, 4, 0,134, 3, 4, 0, 37, 0, 0, 0, 0, 3,102, 1, 6, 0, - 32, 0,134, 9, 7, 0,124, 0, 7, 0, 69, 3, 4, 0,157, 9, 2, 0,134, 3, 2, 0,135, 3,103, 1, 6, 0, 32, 0,134, 9, - 4, 0,158, 9, 4, 0,159, 9, 7, 0,160, 9, 7, 0,161, 9, 0, 0, 0, 3,104, 1, 16, 0, 32, 0,134, 9, 32, 0, 76, 9, - 4, 0, 17, 0, 7, 0,162, 9, 7, 0,163, 9, 7, 0,164, 9, 7, 0,165, 9, 7, 0,166, 9, 7, 0,167, 9, 7, 0,168, 9, - 7, 0,169, 9, 7, 0,170, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0, 70, 0,105, 1, 3, 0, 32, 0,134, 9, - 4, 0, 19, 0, 4, 0, 31, 2,106, 1, 5, 0, 32, 0,134, 9, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,171, 9, 0, 0, 0, 3, -107, 1, 10, 0, 32, 0,134, 9, 0, 0, 0, 3, 2, 0,172, 9, 2, 0,173, 9, 0, 0,174, 9, 0, 0,175, 9, 7, 0,176, 9, - 7, 0,177, 9, 7, 0,178, 9, 7, 0,179, 9,108, 1, 5, 0, 32, 0,134, 9, 0, 0, 0, 3, 7, 0,203, 2, 2, 0,180, 9, - 2, 0, 19, 0,109, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,181, 9, 7, 0,182, 9, - 2, 0, 19, 0, 2, 0, 31, 2,110, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,181, 9, - 7, 0,182, 9, 2, 0, 19, 0, 2, 0, 31, 2,111, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, - 7, 0,181, 9, 7, 0,182, 9, 2, 0, 19, 0, 2, 0, 31, 2,112, 1, 7, 0, 32, 0,134, 9, 0, 0, 0, 3, 7, 0, 79, 1, - 7, 0, 88, 1, 2, 0, 19, 0, 2, 0, 72, 1, 4, 0, 37, 0,113, 1, 5, 0, 32, 0, 57, 3, 7, 0, 79, 1, 2, 0, 61, 3, - 0, 0, 63, 3, 0, 0,183, 9,114, 1, 10, 0,114, 1, 0, 0,114, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0,184, 9, - 7, 0, 23, 1, 7, 0, 24, 1, 2, 0,114, 9, 2, 0,185, 9, 32, 0, 45, 0,115, 1, 22, 0,115, 1, 0, 0,115, 1, 1, 0, - 2, 0, 19, 0, 2, 0, 72, 1, 2, 0,186, 9, 2, 0,187, 9, 36, 0, 80, 0,161, 0,208, 8, 32, 0,165, 0, 7, 0, 88, 0, - 7, 0, 89, 0, 7, 0,188, 9, 7, 0,189, 9, 7, 0,190, 9, 7, 0,191, 9, 7, 0,242, 2, 7, 0,192, 9, 7, 0,210, 8, - 7, 0,193, 9, 0, 0,194, 9, 0, 0,195, 9, 12, 0,115, 3,116, 1, 8, 0, 7, 0, 46, 2, 7, 0,230, 8, 7, 0,231, 8, - 9, 0, 2, 0, 2, 0,196, 9, 2, 0,197, 9, 2, 0,198, 9, 2, 0,199, 9,117, 1, 18, 0,117, 1, 0, 0,117, 1, 1, 0, -117, 1,200, 9, 0, 0, 20, 0,116, 1,201, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,202, 9, 2, 0,203, 9, 2, 0,204, 9, - 2, 0,205, 9, 4, 0, 43, 0, 7, 0,206, 9, 7, 0,207, 9, 4, 0,208, 9, 4, 0,209, 9,117, 1,210, 9,118, 1,211, 9, -119, 1, 33, 0,119, 1, 0, 0,119, 1, 1, 0,119, 1,212, 9, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 58, 8, - 2, 0, 93, 8, 2, 0,213, 9, 2, 0,132, 0, 2, 0,203, 9, 2, 0, 48, 8, 12, 0,203, 8, 12, 0,214, 9, 27, 0,194, 6, - 9, 0,215, 9, 7, 0,206, 9, 7, 0,207, 9, 7, 0, 77, 2, 7, 0,216, 9, 2, 0,217, 9, 2, 0,218, 9, 7, 0,219, 9, - 7, 0,220, 9, 2, 0,221, 9, 2, 0,222, 9, 9, 0,223, 9, 24, 0,224, 9, 24, 0,225, 9, 24, 0,226, 9,120, 1,152, 0, -121, 1,227, 9,122, 1,228, 9,118, 1, 8, 0,118, 1, 0, 0,118, 1, 1, 0,119, 1,229, 9,119, 1,230, 9,117, 1,231, 9, -117, 1,210, 9, 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 22, 0, 27, 0, 31, 0, 39, 0, 75, 0,163, 0,110, 3, 12, 0,232, 9, - 12, 0,233, 9,116, 1,234, 9, 12, 0,235, 9, 4, 0, 17, 0, 4, 0,236, 9, 4, 0,237, 9, 4, 0,238, 9, 4, 0, 19, 0, - 4, 0, 37, 0, 12, 0,239, 9,122, 1,240, 9, 4, 0,241, 9, 9, 0,242, 9, 9, 0,243, 9, 4, 0,244, 9, 9, 0,245, 9, - 9, 0,246, 9, 9, 0,247, 9,123, 1, 6, 0, 4, 0,123, 0, 4, 0,125, 0, 4, 0, 48, 8, 0, 0,248, 9, 0, 0,249, 9, - 2, 0, 37, 0,124, 1, 16, 0, 2, 0, 1, 8, 2, 0, 2, 8, 2, 0,250, 9, 2, 0,255, 8, 2, 0,251, 9, 2, 0, 68, 0, - 7, 0,241, 2, 7, 0,252, 9, 7, 0,253, 9, 2, 0, 94, 1, 0, 0,254, 9, 0, 0,255, 9, 2, 0, 0, 10, 2, 0, 37, 0, - 4, 0, 1, 10, 4, 0, 2, 10,125, 1, 9, 0, 7, 0, 3, 10, 7, 0, 4, 10, 7, 0, 14, 9, 7, 0, 78, 3, 7, 0, 5, 10, - 7, 0,119, 6, 2, 0, 76, 3, 0, 0, 6, 10, 0, 0, 37, 0,126, 1, 4, 0, 7, 0, 7, 10, 7, 0, 8, 10, 2, 0, 76, 3, - 2, 0, 37, 0,127, 1, 3, 0, 7, 0, 9, 10, 7, 0, 10, 10, 7, 0, 15, 0,128, 1, 7, 0, 0, 0, 8, 2, 2, 0, 23, 5, - 2, 0, 24, 5, 2, 0, 25, 5, 2, 0,213, 4, 4, 0,125, 0, 4, 0, 54, 4,129, 1, 9, 0, 7, 0, 11, 10, 7, 0, 12, 10, - 7, 0, 13, 10, 7, 0, 88, 2, 7, 0, 14, 10, 7, 0, 15, 10, 7, 0, 16, 10, 2, 0, 17, 10, 2, 0, 18, 10,130, 1, 4, 0, - 2, 0, 19, 10, 2, 0, 20, 10, 2, 0, 21, 10, 2, 0, 22, 10,131, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,132, 1, 2, 0, - 0, 0,167, 0, 0, 0, 23, 10,133, 1, 1, 0, 0, 0, 20, 0,134, 1, 10, 0, 0, 0, 24, 10, 0, 0, 25, 10, 0, 0,112, 6, - 0, 0, 26, 10, 2, 0,250, 9, 2, 0, 27, 10, 7, 0, 28, 10, 7, 0, 29, 10, 7, 0, 30, 10, 7, 0,192, 9,135, 1, 2, 0, - 9, 0, 31, 10, 9, 0, 32, 10,136, 1, 11, 0, 0, 0, 25, 5, 0, 0, 17, 0, 0, 0, 76, 3, 0, 0, 78, 3, 0, 0, 33, 10, - 0, 0,106, 0, 0, 0, 73, 2, 7, 0, 34, 10, 7, 0, 35, 10, 7, 0, 36, 10, 7, 0, 37, 10,137, 1, 8, 0, 7, 0,169, 8, - 7, 0,124, 0, 7, 0,255, 9, 7, 0,160, 2, 7, 0, 38, 10, 7, 0,237, 0, 7, 0, 39, 10, 4, 0, 17, 0,138, 1, 4, 0, - 2, 0, 40, 10, 2, 0, 41, 10, 2, 0, 42, 10, 2, 0, 37, 0,139, 1, 6, 0, 7, 0, 43, 10, 7, 0,203, 2, 7, 0, 44, 10, - 7, 0, 53, 8, 7, 0, 54, 8, 7, 0, 55, 8,140, 1, 6, 0, 2, 0, 45, 10, 2, 0, 46, 10, 7, 0, 47, 10, 7, 0, 48, 10, - 7, 0, 49, 10, 7, 0, 50, 10,141, 1, 1, 0, 0, 0, 20, 0,142, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 19, 0, - 2, 0, 51, 10,143, 1, 10, 0, 2, 0,242, 3, 2, 0, 19, 0, 7, 0,142, 4, 7, 0, 52, 10, 7, 0, 53, 10, 7, 0, 54, 10, - 7, 0, 55, 10,142, 1, 56, 10,142, 1, 57, 10,142, 1, 58, 10, 63, 0, 11, 0, 4, 0, 19, 0, 4, 0, 64, 0, 4, 0, 59, 10, - 4, 0, 37, 0, 24, 0, 60, 10, 24, 0, 61, 10,143, 1, 62, 10, 7, 0, 63, 10, 7, 0, 64, 10, 7, 0, 65, 10, 7, 0, 66, 10, -234, 0, 10, 0, 4, 0,114, 9, 4, 0, 67, 10, 7, 0, 68, 10, 7, 0, 69, 10, 7, 0, 70, 10, 7, 0, 71, 10, 7, 0, 10, 0, - 7, 0, 12, 0, 4, 0, 72, 1, 4, 0,246, 2,233, 0, 18, 0, 4, 0,128, 0, 4, 0, 72, 10, 4, 0, 73, 10, 7, 0, 74, 10, - 4, 0, 75, 10, 7, 0, 76, 10, 7, 0, 77, 10, 4, 0, 78, 10, 7, 0, 79, 10, 4, 0, 80, 10, 7, 0, 81, 10,234, 0, 82, 10, - 7, 0, 83, 10, 7, 0, 84, 10, 7, 0, 85, 10, 7, 0, 86, 10, 4, 0, 87, 10, 4, 0, 37, 0,144, 1, 4, 0, 47, 0,233, 2, - 7, 0, 88, 10, 7, 0,173, 1, 7, 0, 37, 0,194, 0, 18, 0, 27, 0, 31, 0,144, 1, 89, 10, 63, 0, 56, 10, 51, 0, 90, 10, - 2, 0, 19, 0, 2, 0, 15, 6, 4, 0,106, 0, 7, 0, 91, 10, 7, 0, 85, 2, 4, 0, 92, 10, 7, 0, 93, 10, 7, 0, 94, 10, - 7, 0, 95, 10, 7, 0,173, 1, 0, 0, 96, 10, 0, 0, 97, 10, 0, 0, 98, 10, 0, 0, 70, 0,145, 1, 10, 0, 4, 0, 17, 0, - 4, 0,124, 0, 4, 0, 19, 0, 4, 0,196, 3, 4, 0, 99, 10, 4, 0,100, 10, 4, 0,101, 10, 0, 0, 92, 0, 0, 0, 20, 0, - 9, 0, 2, 0,146, 1, 1, 0, 0, 0, 41, 8, 91, 0, 7, 0,145, 1,102, 10, 4, 0,103, 10, 4, 0,104, 10, 4, 0,105, 10, - 4, 0, 37, 0, 9, 0,106, 10,146, 1,107, 10,147, 1, 5, 0, 7, 0,155, 2, 7, 0,223, 2, 7, 0, 39, 2, 2, 0,131, 2, - 2, 0, 37, 0,148, 1, 5, 0, 7, 0,155, 2, 7, 0,108, 10, 7, 0,109, 10, 7, 0,110, 10, 7, 0,223, 2,149, 1, 5, 0, - 32, 0,111, 10,150, 1, 22, 0, 7, 0,241, 5, 7, 0,112, 10, 7, 0, 57, 0,151, 1, 7, 0, 4, 0,113, 10, 4, 0,114, 10, - 4, 0,115, 10, 7, 0,116, 10, 7, 0,117, 10, 7, 0,118, 10, 7, 0, 57, 0,152, 1, 8, 0,152, 1, 0, 0,152, 1, 1, 0, - 32, 0, 45, 0, 4, 0, 0, 1, 2, 0, 19, 0, 2, 0, 72, 1, 7, 0,223, 2, 7, 0,177, 8,153, 1, 6, 0,153, 1, 0, 0, -153, 1, 1, 0, 32, 0, 45, 0, 2, 0,208, 2, 2, 0, 19, 0, 2, 0,119, 10,154, 1, 17, 0,148, 1,190, 3,148, 1,120, 10, -147, 1,121, 10,148, 1,161, 8,149, 1,122, 10, 4, 0, 82, 0, 7, 0,223, 2, 7, 0,252, 2, 7, 0,123, 10, 4, 0,113, 10, - 4, 0,124, 10, 7, 0,117, 10, 7, 0,118, 10, 7, 0,106, 0, 4, 0,125, 10, 2, 0, 19, 0, 2, 0,126, 10,155, 1, 9, 0, - 7, 0,127, 10, 7, 0,252, 0, 7, 0,128, 10, 7, 0,129, 10, 7, 0,130, 10, 7, 0,131, 10, 7, 0,132, 10, 7, 0,133, 10, - 7, 0,134, 10,156, 1,111, 0, 27, 0, 31, 0, 39, 0, 75, 0,157, 1,135, 10,155, 1,136, 10,172, 0, 76, 4, 4, 0, 19, 0, - 2, 0, 17, 0, 2, 0,172, 9, 2, 0,137, 10, 2, 0,138, 10, 2, 0,156, 3, 2, 0,139, 10, 2, 0,140, 10, 2, 0,141, 10, - 2, 0,142, 10, 2, 0,143, 10, 2, 0,144, 10, 2, 0,145, 10, 2, 0,146, 10, 2, 0,153, 5, 2, 0,147, 10, 2, 0,148, 10, - 2, 0,149, 10, 2, 0,150, 10, 2, 0,151, 10, 2, 0, 28, 2, 2, 0,154, 8, 2, 0,129, 8, 2, 0,152, 10, 2, 0,153, 10, - 2, 0,206, 3, 2, 0,207, 3, 2, 0,154, 10, 2, 0,155, 10, 2, 0,156, 10, 2, 0,157, 10, 7, 0,158, 10, 7, 0,159, 10, - 7, 0,160, 10, 2, 0,102, 5, 2, 0,161, 10, 7, 0,162, 10, 7, 0,163, 10, 7, 0,164, 10, 7, 0,136, 8, 7, 0, 89, 0, - 7, 0,252, 2, 7, 0,142, 8, 7, 0,165, 10, 7, 0,166, 10, 7, 0,167, 10, 4, 0,137, 8, 4, 0,135, 8, 4, 0,168, 10, - 7, 0,138, 8, 7, 0,139, 8, 7, 0,140, 8, 7, 0,169, 10, 7, 0,170, 10, 7, 0,171, 10, 7, 0,172, 10, 7, 0,173, 10, - 7, 0, 57, 0, 7, 0,174, 10, 7, 0,175, 10, 7, 0,176, 10, 7, 0,177, 10, 7, 0,147, 3, 7, 0,106, 0, 7, 0,178, 10, - 7, 0,179, 10, 7, 0,180, 10, 7, 0,181, 10, 7, 0,182, 10, 7, 0,183, 10, 7, 0,184, 10, 4, 0,185, 10, 4, 0,186, 10, - 7, 0,187, 10, 7, 0,188, 10, 7, 0,189, 10, 7, 0,190, 10, 7, 0,191, 10, 7, 0,211, 0, 7, 0,192, 10, 7, 0,233, 3, - 7, 0,231, 3, 7, 0,232, 3, 7, 0,193, 10, 7, 0,194, 10, 7, 0,195, 10, 7, 0,196, 10, 7, 0,197, 10, 7, 0,198, 10, - 7, 0,199, 10, 7, 0,200, 10, 7, 0,201, 10, 7, 0,202, 10, 7, 0,203, 10, 7, 0,204, 10, 7, 0,205, 10, 4, 0,206, 10, - 4, 0,207, 10, 67, 0,179, 3, 12, 0,208, 10, 67, 0,209, 10, 32, 0,210, 10, 32, 0,211, 10, 36, 0, 80, 0,167, 0, 64, 1, -167, 0,212, 10,147, 0, 44, 0,147, 0, 0, 0,147, 0, 1, 0,156, 1,213, 10,154, 1,214, 10,151, 1, 76, 9,174, 0, 2, 4, - 9, 0, 3, 4,158, 1,215, 10,158, 1,216, 10, 12, 0,217, 10, 12, 0,218, 10,132, 0,219, 10,140, 0,220, 10,140, 0,221, 10, - 32, 0,222, 10, 32, 0,223, 10, 32, 0, 38, 0, 12, 0,139, 9, 0, 0, 20, 0, 7, 0,241, 0, 7, 0, 23, 3, 7, 0,224, 10, - 4, 0,197, 2, 4, 0, 57, 0, 4, 0, 19, 0, 4, 0,137, 8, 4, 0,225, 10, 4, 0,226, 10, 4, 0,227, 10, 2, 0,248, 0, - 2, 0,228, 10, 2, 0,229, 10, 2, 0,230, 10, 0, 0,231, 10, 2, 0,232, 10, 2, 0,233, 10, 2, 0,234, 10, 9, 0,235, 10, -136, 0, 75, 4, 12, 0, 10, 3, 12, 0,236, 10,159, 1,237, 10,160, 1,238, 10, 7, 0,239, 10,134, 0, 37, 0,161, 1, 15, 9, - 7, 0, 45, 4, 7, 0,240, 10, 7, 0,241, 10, 7, 0,241, 5, 7, 0,157, 3, 7, 0,147, 3, 7, 0,242, 10, 7, 0, 87, 2, - 7, 0,243, 10, 7, 0,244, 10, 7, 0,245, 10, 7, 0,246, 10, 7, 0,247, 10, 7, 0,248, 10, 7, 0, 46, 4, 7, 0,249, 10, - 7, 0,250, 10, 7, 0,251, 10, 7, 0, 47, 4, 7, 0, 43, 4, 7, 0, 44, 4, 7, 0,252, 10, 7, 0,253, 10, 4, 0,254, 10, - 4, 0, 90, 0, 4, 0,255, 10, 4, 0, 0, 11, 2, 0, 1, 11, 2, 0, 2, 11, 2, 0, 3, 11, 2, 0, 4, 11, 2, 0, 5, 11, - 2, 0, 6, 11, 2, 0, 7, 11, 2, 0,139, 1,172, 0, 76, 4,135, 0, 9, 0,161, 1, 8, 11, 7, 0, 9, 11, 7, 0, 10, 11, - 7, 0,245, 1, 7, 0, 11, 11, 4, 0, 90, 0, 2, 0, 12, 11, 2, 0, 13, 11, 67, 0,244, 1,162, 1, 4, 0, 7, 0, 5, 0, - 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 14, 11,163, 1, 6, 0,163, 1, 0, 0,163, 1, 1, 0,162, 1, 53, 9, 4, 0,254, 0, - 2, 0, 15, 11, 2, 0, 19, 0,164, 1, 5, 0,164, 1, 0, 0,164, 1, 1, 0, 12, 0, 16, 11, 4, 0, 17, 11, 4, 0, 19, 0, -165, 1, 9, 0,165, 1, 0, 0,165, 1, 1, 0, 12, 0,123, 0,164, 1, 18, 11, 4, 0, 19, 0, 2, 0, 15, 11, 2, 0, 19, 11, - 7, 0, 91, 0, 0, 0, 20, 11,163, 0, 6, 0, 27, 0, 31, 0, 12, 0, 41, 5, 4, 0, 19, 0, 2, 0, 21, 11, 2, 0, 22, 11, - 9, 0, 23, 11,166, 1, 7, 0,166, 1, 0, 0,166, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, 0, 0, 24, 11, - 0, 0, 25, 11,167, 1, 6, 0, 12, 0, 26, 11, 4, 0, 27, 11, 4, 0, 28, 11, 4, 0, 19, 0, 4, 0, 37, 0,214, 0, 29, 11, -168, 1, 3, 0, 7, 0,127, 5, 7, 0, 30, 11, 7, 0, 31, 11,169, 1, 17, 0, 27, 0, 31, 0,170, 1, 32, 11,170, 1, 33, 11, - 12, 0, 34, 11, 4, 0, 35, 11, 2, 0, 36, 11, 2, 0, 37, 11, 12, 0, 38, 11, 12, 0, 39, 11,167, 1, 40, 11, 12, 0, 41, 11, - 12, 0, 42, 11, 12, 0, 43, 11, 12, 0, 44, 11,171, 1, 45, 11, 12, 0, 46, 11,214, 0, 47, 11,170, 1, 31, 0,170, 1, 0, 0, -170, 1, 1, 0, 9, 0, 48, 11, 4, 0,235, 7, 2, 0, 49, 11, 2, 0, 37, 0,219, 0,102, 6,219, 0, 50, 11, 0, 0, 51, 11, - 2, 0, 52, 11, 2, 0, 53, 11, 2, 0, 1, 8, 2, 0, 2, 8, 2, 0, 54, 11, 2, 0, 55, 11, 2, 0,196, 3, 2, 0,222, 6, - 2, 0, 56, 11, 2, 0, 57, 11, 2, 0,241, 9,172, 1, 58, 11,173, 1, 59, 11,174, 1, 60, 11, 4, 0, 61, 11, 4, 0, 62, 11, - 9, 0, 63, 11, 12, 0, 39, 11, 12, 0, 21, 8, 12, 0, 64, 11, 12, 0, 65, 11, 12, 0, 66, 11,175, 1, 17, 0,175, 1, 0, 0, -175, 1, 1, 0, 0, 0, 67, 11, 26, 0, 30, 0, 2, 0, 68, 11, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0, 69, 11, 2, 0, 70, 11, - 2, 0, 71, 11, 2, 0, 72, 11, 2, 0, 73, 11, 2, 0, 19, 0, 2, 0, 74, 11, 2, 0, 31, 0, 2, 0, 37, 0,176, 1, 75, 11, -177, 1, 10, 0,177, 1, 0, 0,177, 1, 1, 0, 12, 0, 76, 11, 0, 0, 67, 11, 2, 0, 77, 11, 2, 0, 78, 11, 2, 0, 19, 0, - 2, 0, 79, 11, 4, 0, 80, 11, 9, 0, 81, 11,171, 1, 7, 0,171, 1, 0, 0,171, 1, 1, 0, 0, 0, 67, 11, 0, 0, 82, 11, - 12, 0,187, 7, 4, 0, 83, 11, 4, 0, 19, 0,227, 0, 14, 0,227, 0, 0, 0,227, 0, 1, 0, 0, 0, 67, 11, 26, 0, 30, 0, -178, 1,251, 7, 9, 0, 84, 11, 9, 0, 85, 11,176, 1, 75, 11,167, 1, 86, 11, 12, 0, 87, 11,227, 0, 88, 11, 6, 1,138, 6, - 2, 0, 19, 0, 2, 0,139, 1,179, 1, 8, 0,179, 1, 0, 0,179, 1, 1, 0, 9, 0, 2, 0, 9, 0, 89, 11, 0, 0,253, 3, - 2, 0, 17, 0, 2, 0, 19, 0, 7, 0, 90, 11,180, 1, 5, 0, 7, 0, 91, 11, 4, 0, 92, 11, 4, 0, 93, 11, 4, 0, 72, 1, - 4, 0, 19, 0,181, 1, 6, 0, 7, 0, 94, 11, 7, 0, 95, 11, 7, 0, 96, 11, 7, 0, 97, 11, 4, 0, 17, 0, 4, 0, 19, 0, -182, 1, 5, 0, 7, 0,230, 8, 7, 0,231, 8, 7, 0,223, 2, 2, 0, 42, 2, 2, 0, 43, 2,183, 1, 5, 0,182, 1, 2, 0, - 4, 0, 54, 0, 7, 0, 98, 11, 7, 0,230, 8, 7, 0,231, 8,184, 1, 4, 0, 2, 0, 99, 11, 2, 0,100, 11, 2, 0,101, 11, - 2, 0,102, 11,185, 1, 2, 0, 42, 0,191, 6, 26, 0, 21, 9,186, 1, 3, 0, 24, 0,103, 11, 4, 0, 19, 0, 4, 0, 37, 0, -187, 1, 6, 0, 7, 0,106, 0, 7, 0,225, 2, 7, 0,104, 11, 7, 0, 37, 0, 2, 0,247, 0, 2, 0,105, 11,188, 1, 5, 0, - 7, 0,106, 11, 7, 0,124, 0, 7, 0, 54, 9, 7, 0, 55, 9, 4, 0, 19, 0,189, 1, 6, 0, 27, 0,194, 6, 0, 0,107, 11, - 0, 0,108, 11, 2, 0,109, 11, 2, 0, 19, 0, 4, 0,110, 11,190, 1, 7, 0,190, 1, 0, 0,190, 1, 1, 0, 0, 0,253, 3, -189, 1,111, 11, 2, 0,112, 11, 2, 0, 17, 0, 7, 0, 61, 0,191, 1, 7, 0, 12, 0,113, 11, 0, 0,114, 11, 9, 0,115, 11, - 7, 0, 61, 0, 7, 0, 90, 11, 4, 0, 17, 0, 4, 0, 19, 0,192, 1, 3, 0, 7, 0,116, 11, 4, 0, 19, 0, 4, 0, 37, 0, -193, 1, 15, 0,193, 1, 0, 0,193, 1, 1, 0, 83, 1,125, 9,191, 1, 62, 0, 12, 0,115, 3, 35, 0, 50, 0,192, 1,117, 11, - 4, 0, 54, 0, 7, 0, 61, 0, 2, 0, 19, 0, 2, 0, 16, 1, 4, 0,118, 11, 0, 0,107, 11, 4, 0,119, 11, 7, 0,120, 11, -194, 1, 2, 0, 0, 0,121, 11, 0, 0,122, 11,195, 1, 4, 0,195, 1, 0, 0,195, 1, 1, 0,161, 0, 57, 3, 12, 0,123, 11, -196, 1, 24, 0,196, 1, 0, 0,196, 1, 1, 0, 12, 0,124, 11,161, 0,208, 8,195, 1,125, 11, 12, 0,126, 11, 12, 0,115, 3, - 0, 0,253, 3, 7, 0, 90, 11, 7, 0,127, 11, 7, 0, 88, 0, 7, 0, 89, 0, 7, 0,188, 9, 7, 0,189, 9, 7, 0,242, 2, - 7, 0,192, 9, 7, 0,210, 8, 7, 0,193, 9, 2, 0,128, 11, 2, 0,129, 11, 2, 0, 43, 0, 2, 0, 17, 0, 4, 0, 19, 0, - 4, 0, 70, 0,197, 1, 6, 0,197, 1, 0, 0,197, 1, 1, 0, 12, 0,124, 11, 4, 0, 19, 0, 4, 0,159, 2, 0, 0,253, 3, -198, 1, 11, 0,198, 1, 0, 0,198, 1, 1, 0, 27, 0,194, 6, 0, 0,130, 11, 4, 0,110, 11, 2, 0,131, 11, 2, 0, 37, 0, - 0, 0,107, 11, 4, 0,118, 11, 2, 0, 19, 0, 2, 0,132, 11,199, 1, 8, 0,199, 1, 0, 0,199, 1, 1, 0, 12, 0,133, 11, - 0, 0,253, 3, 0, 0,134, 11, 2, 0, 19, 0, 2, 0,132, 11, 4, 0,135, 11,200, 1, 5, 0,200, 1, 0, 0,200, 1, 1, 0, - 0, 0,107, 11, 4, 0,118, 11, 7, 0,213, 2, 39, 0, 12, 0,161, 0,107, 3,161, 0,136, 11,195, 1,125, 11, 12, 0,137, 11, -196, 1,138, 11, 12, 0,139, 11, 12, 0,140, 11, 4, 0, 19, 0, 4, 0,248, 0, 2, 0,141, 11, 2, 0,142, 11, 7, 0,143, 11, -201, 1, 2, 0, 27, 0, 31, 0, 39, 0, 75, 0,202, 1, 5, 0,202, 1, 0, 0,202, 1, 1, 0, 4, 0, 17, 0, 4, 0, 19, 0, - 0, 0, 20, 0,203, 1, 6, 0,202, 1,144, 11, 32, 0, 45, 0, 4, 0,145, 11, 7, 0,146, 11, 4, 0,147, 11, 4, 0,114, 9, -204, 1, 3, 0,202, 1,144, 11, 4, 0,145, 11, 7, 0,148, 11,205, 1, 8, 0,202, 1,144, 11, 32, 0, 45, 0, 7, 0, 67, 1, - 7, 0,149, 11, 7, 0, 23, 3, 7, 0, 14, 9, 4, 0,145, 11, 4, 0,150, 11,206, 1, 5, 0,202, 1,144, 11, 7, 0,151, 11, - 7, 0, 93, 8, 7, 0,248, 2, 7, 0, 57, 0,207, 1, 3, 0,202, 1,144, 11, 7, 0, 14, 9, 7, 0,152, 11,150, 1, 4, 0, - 7, 0,153, 11, 7, 0,180, 10, 2, 0,154, 11, 2, 0, 72, 1,208, 1, 14, 0,208, 1, 0, 0,208, 1, 1, 0, 12, 0,155, 11, - 12, 0,156, 11, 12, 0,157, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0,158, 11, 7, 0,159, 11, 4, 0,147, 11, - 4, 0,114, 9, 7, 0, 6, 4, 7, 0,250, 2,157, 1, 23, 0, 4, 0,145, 11, 4, 0,160, 11, 7, 0,161, 11, 7, 0, 57, 0, - 7, 0,162, 11, 7, 0,246, 2, 7, 0,153, 11, 7, 0,163, 11, 7, 0,225, 2, 7, 0, 74, 10, 7, 0,142, 4, 7, 0,164, 11, - 7, 0,165, 11, 7, 0,166, 11, 7, 0,167, 11, 7, 0,168, 11, 7, 0,169, 11, 7, 0,170, 11, 7, 0,171, 11, 7, 0,172, 11, - 7, 0,173, 11, 7, 0,174, 11, 12, 0,175, 11,120, 0, 36, 0,119, 0,176, 11,209, 1,136, 10, 67, 0,177, 11, 67, 0,209, 10, - 67, 0,178, 11,210, 1,179, 11, 48, 0,166, 0, 48, 0,180, 11, 48, 0,181, 11, 7, 0,182, 11, 7, 0,183, 11, 7, 0,184, 11, - 7, 0,185, 11, 7, 0,186, 11, 7, 0,126, 9, 7, 0,187, 11, 7, 0,173, 1, 7, 0,188, 11, 4, 0,189, 11, 4, 0,190, 11, - 4, 0,191, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0,192, 11, 2, 0,193, 11, 2, 0,194, 11, 4, 0,195, 11, 7, 0,225, 2, - 4, 0,196, 11, 7, 0,197, 11, 4, 0,198, 11, 4, 0,199, 11, 4, 0,200, 11,136, 0,201, 11, 12, 0,202, 11,172, 0, 76, 4, -121, 0, 11, 0,119, 0,176, 11,147, 0, 43, 3, 7, 0,140, 1, 7, 0,126, 9, 7, 0,203, 11, 7, 0,204, 11, 2, 0,205, 11, - 2, 0,206, 11, 2, 0,207, 11, 2, 0, 17, 0, 4, 0, 37, 0,122, 0, 13, 0,119, 0,176, 11,138, 0, 20, 3,140, 0, 22, 3, - 7, 0, 53, 9, 7, 0,208, 11, 7, 0,209, 11, 7, 0, 69, 1, 7, 0,210, 11, 4, 0,148, 9, 4, 0, 18, 3, 2, 0, 17, 0, - 2, 0, 37, 0, 4, 0, 70, 0, 69, 78, 68, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0}; - diff --git a/source/blender/editors/datafiles/startup.blend.c b/source/blender/editors/datafiles/startup.blend.c new file mode 100644 index 00000000000..f34cf16430b --- /dev/null +++ b/source/blender/editors/datafiles/startup.blend.c @@ -0,0 +1,7537 @@ +/* DataToC output of file */ + +int datatoc_startup_blend_size= 240980; +char datatoc_startup_blend[]= { + 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 53, 50, 82, 69, 78, 68, 32, 0, 0, 0, +144,181, 39,248,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 76, 79, 66, 24, 1, 0, 0,144,180, 39,248,255,127, 0, 0, +201, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 53, 5, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1,200,187, 85, 3, 0, 0, 0, 0, +120,159, 89, 3, 0, 0, 0, 0, 0, 16, 0, 0,128, 32, 4, 0, 47,104,111,109,101, 47, 98,114,101, 99,104,116, 47, 46, 98,108, +101,110,100,101,114, 47, 50, 46, 53, 50, 47, 99,111,110,102,105,103, 47,115,116, 97,114,116,117,112, 46, 98,108,101,110,100, 0, + 61,117,232, 0, 0, 0, 0, 0, 40, 0, 0, 0, 48, 0, 0, 0,208,181, 39,248, 32, 0, 0, 0,144,181, 39,248,255,127, 0, 0, + 40,102,128, 4, 0, 0, 0, 0, 64,181, 39,248,255,127, 0, 0,104, 14,145, 4, 0, 0, 0, 0,112,181, 39,248,255,127, 0, 0, +133,119,232, 0, 0, 0, 0, 0,252, 0, 0, 0, 0, 0, 0, 0,144,181, 39,248,255,127, 0, 0, 32, 0, 0, 0, 82, 69, 78, 68, + 40,102,128, 4, 0, 0, 0, 0, 82, 69, 78, 68, 32, 0, 0, 0,144,181, 39,248,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +152,212, 83, 3, 0, 0, 0, 0,192,181, 39,248,255,127, 0, 0, 67,126,232, 0, 0, 0, 0, 0,104,209, 83, 3, 0, 0, 0, 0, + 40,102,128, 4, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 87, 77, 0, 0, 24, 1, 0, 0,152,212, 83, 3, 0, 0, 0, 0,111, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 87,105,110, 77, 97,110, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248,213, 83, 3, 0, 0, 0, 0,248,213, 83, 3, 0, 0, 0, 0,248,213, 83, 3, 0, 0, 0, 0,248,213, 83, 3, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88,173, 70, 3, 0, 0, 0, 0, 88,173, 70, 3, 0, 0, 0, 0, 88,173, 70, 3, 0, 0, 0, 0, 88,225, 90, 3, 0, 0, 0, 0, + 88,225, 90, 3, 0, 0, 0, 0, 88,225, 90, 3, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,248,213, 83, 3, 0, 0, 0, 0, +112, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,174, 70, 3, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,200,187, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 30, 0,118, 7, 97, 4, + 0, 0, 0, 0, 1, 0,238, 3, 0, 0, 1, 0, 0, 0, 0, 0,248, 1, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,136, 21, 55, 3, 0, 0, 0, 0,104,177,126, 4, 0, 0, 0, 0, +104,177,126, 4, 0, 0, 0, 0, 88, 3, 94, 3, 0, 0, 0, 0,232, 4, 94, 3, 0, 0, 0, 0,120, 6, 94, 3, 0, 0, 0, 0, +120, 6, 94, 3, 0, 0, 0, 0, 72, 7, 94, 3, 0, 0, 0, 0,120, 76, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 40,215, 83, 3, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +200,234, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 72,216, 83, 3, 0, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0, 40,224, 83, 3, 0, 0, 0, 0, +104,236, 83, 3, 0, 0, 0, 0,216,236, 83, 3, 0, 0, 0, 0, 72,215, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,216, 83, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,184,216, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,216, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 40,217, 83, 3, 0, 0, 0, 0, 72,216, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 40,217, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,217, 83, 3, 0, 0, 0, 0, +184,216, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +152,217, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0, 40,217, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0,152,217, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +232,218, 83, 3, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,232,218, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0, +120,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 88,219, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0,232,218, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +168,220, 83, 3, 0, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 52, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, + 56,220, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 24,221, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +104,222, 83, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,216,222, 83, 3, 0, 0, 0, 0, +248,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +216,222, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0,216,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 48, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 40,224, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152,224, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,184,216, 83, 3, 0, 0, 0, 0, 40,217, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,152,224, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 8,225, 83, 3, 0, 0, 0, 0, + 40,224, 83, 3, 0, 0, 0, 0,184,216, 83, 3, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 8,225, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120,225, 83, 3, 0, 0, 0, 0, +152,224, 83, 3, 0, 0, 0, 0, 40,217, 83, 3, 0, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,120,225, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,232,225, 83, 3, 0, 0, 0, 0, + 8,225, 83, 3, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,232,225, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88,226, 83, 3, 0, 0, 0, 0, +120,225, 83, 3, 0, 0, 0, 0, 72,216, 83, 3, 0, 0, 0, 0,232,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 88,226, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200,226, 83, 3, 0, 0, 0, 0, +232,225, 83, 3, 0, 0, 0, 0,152,217, 83, 3, 0, 0, 0, 0,232,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,200,226, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56,227, 83, 3, 0, 0, 0, 0, + 88,226, 83, 3, 0, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 56,227, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168,227, 83, 3, 0, 0, 0, 0, +200,226, 83, 3, 0, 0, 0, 0,232,218, 83, 3, 0, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,168,227, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24,228, 83, 3, 0, 0, 0, 0, + 56,227, 83, 3, 0, 0, 0, 0,152,217, 83, 3, 0, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 24,228, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136,228, 83, 3, 0, 0, 0, 0, +168,227, 83, 3, 0, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,136,228, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248,228, 83, 3, 0, 0, 0, 0, + 24,228, 83, 3, 0, 0, 0, 0, 72,216, 83, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,248,228, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104,229, 83, 3, 0, 0, 0, 0, +136,228, 83, 3, 0, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,104,229, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,229, 83, 3, 0, 0, 0, 0, +248,228, 83, 3, 0, 0, 0, 0,232,218, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,216,229, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,230, 83, 3, 0, 0, 0, 0, +104,229, 83, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 72,230, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,230, 83, 3, 0, 0, 0, 0, +216,229, 83, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,184,230, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40,231, 83, 3, 0, 0, 0, 0, + 72,230, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 40,231, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152,231, 83, 3, 0, 0, 0, 0, +184,230, 83, 3, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,152,231, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 8,232, 83, 3, 0, 0, 0, 0, + 40,231, 83, 3, 0, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 8,232, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120,232, 83, 3, 0, 0, 0, 0, +152,231, 83, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,120,232, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,232,232, 83, 3, 0, 0, 0, 0, + 8,232, 83, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,232,232, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88,233, 83, 3, 0, 0, 0, 0, +120,232, 83, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0,216,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 88,233, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200,233, 83, 3, 0, 0, 0, 0, +232,232, 83, 3, 0, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0,216,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,200,233, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56,234, 83, 3, 0, 0, 0, 0, + 88,233, 83, 3, 0, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 56,234, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168,234, 83, 3, 0, 0, 0, 0, +200,233, 83, 3, 0, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,168,234, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24,235, 83, 3, 0, 0, 0, 0, + 56,234, 83, 3, 0, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 24,235, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136,235, 83, 3, 0, 0, 0, 0, +168,234, 83, 3, 0, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,136,235, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248,235, 83, 3, 0, 0, 0, 0, + 24,235, 83, 3, 0, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,248,235, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104,236, 83, 3, 0, 0, 0, 0, +136,235, 83, 3, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,104,236, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248,235, 83, 3, 0, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0,216,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,216,236, 83, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,168,240, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0,184,216, 83, 3, 0, 0, 0, 0, 40,217, 83, 3, 0, 0, 0, 0, +120,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, + 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,234, 84, 3, 0, 0, 0, 0, + 56,234, 84, 3, 0, 0, 0, 0,200,237, 83, 3, 0, 0, 0, 0, 56,239, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +200,237, 83, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56,239, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 56,239, 83, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,237, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, +112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +168,240, 83, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,200, 23, 84, 3, 0, 0, 0, 0,216,236, 83, 3, 0, 0, 0, 0, +232,218, 83, 3, 0, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0,152,217, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 51, 1, 0, 0, 4, 4,222, 0, 52, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 14, 84, 3, 0, 0, 0, 0, 72, 22, 84, 3, 0, 0, 0, 0, +152,241, 83, 3, 0, 0, 0, 0, 8,243, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,241, 83, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 8,243, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, 31, 0,222, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 51, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8,243, 83, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,241, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 67, + 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 77, 67, 1,128,138,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, + 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, + 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,222, 0, 21, 1,205, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120, 14, 84, 3, 0, 0, 0, 0, +165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,200, 23, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,200, 36, 84, 3, 0, 0, 0, 0, +168,240, 83, 3, 0, 0, 0, 0, 72,216, 83, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, +232,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, + 15, 15, 32, 4, 84, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 27, 84, 3, 0, 0, 0, 0, + 72, 35, 84, 3, 0, 0, 0, 0,184, 24, 84, 3, 0, 0, 0, 0, 40, 26, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +184, 24, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 40, 26, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,132, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 32, 4, 26, 0, 32, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 40, 26, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 24, 84, 3, 0, 0, 0, 0, + 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 31, 4, 0, 0, 18, 0, 0, 0, 57, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, +205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 26, 0, 0, 0, 83, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, +152, 27, 84, 3, 0, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,200, 36, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, +184, 55, 84, 3, 0, 0, 0, 0,200, 23, 84, 3, 0, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0, +184,223, 83, 3, 0, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, + 53, 1, 0, 0, 47, 2, 0, 0, 3, 3,222, 0,251, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152, 40, 84, 3, 0, 0, 0, 0, 56, 54, 84, 3, 0, 0, 0, 0,184, 37, 84, 3, 0, 0, 0, 0, 40, 39, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,184, 37, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 40, 39, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 94, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, + 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, + 26, 0,222, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, + 22, 2, 0, 0, 47, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 26, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 40, 39, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +184, 37, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0,100, 66, 0, 0,131, 67, + 0, 0, 79,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,222, 0, +225, 0,205, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, + 53, 1, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,225, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 1, 0, 0,152, 40, 84, 3, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 42, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, + 8, 42, 84, 3, 0, 0, 0, 0,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,104, 42, 84, 3, 0, 0, 0, 0, + 68, 65, 84, 65,208, 0, 0, 0,104, 42, 84, 3, 0, 0, 0, 0,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, +120,159, 89, 3, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, +120,159, 89, 3, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +104,181, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 40,189, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 72,129, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,232,200, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +200,110, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,195, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +232,176, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 24,176, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184, 55, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, +104, 84, 84, 3, 0, 0, 0, 0,200, 36, 84, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0, + 88,219, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, + 85, 0, 0, 0,186, 2, 0, 0, 1, 1, 95, 2,102, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +232, 78, 84, 3, 0, 0, 0, 0, 72, 83, 84, 3, 0, 0, 0, 0,168, 56, 84, 3, 0, 0, 0, 0,200, 73, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,168, 56, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 24, 58, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 23, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 95, 2, + 26, 0, 95, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, + 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 24, 58, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,136, 59, 84, 3, 0, 0, 0, 0, +168, 56, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, +255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, + 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0,193, 1, 0, 0, +111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 76, 2, 0, 0, 5, 0, + 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,136, 59, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,248, 60, 84, 3, 0, 0, 0, 0, + 24, 58, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, + 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, +120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, +111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, + 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,248, 60, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,200, 73, 84, 3, 0, 0, 0, 0, +136, 59, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, +148, 3,163, 0,130, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 31, 4, 0, 0, +111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,200, 73, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 60, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, +111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 76, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 75, 84, 3, 0, 0, 0, 0, + 68, 65, 84, 65,104, 3, 0, 0, 56, 75, 84, 3, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,134,144, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190, +184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63, +176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, + 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62,215, 62,232,190, + 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62,145,180,109,188,243, 90,129, 63, +138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, 99,240,191, 62,110,116, 85, 63, + 80,185, 70,188, 0, 0, 82,180,206, 44,182,190,198,158, 47, 62, 36,239, 74, 63, 0, 0, 8,179, 67,108,117,194,183,204,216, 65, +104,156, 5,194,212,247,159,192,235, 62,114, 66, 59,254,213,193,157,225, 3, 66, 55, 8,160, 64, 68,239,209, 62, 51,177,205,190, +184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62,215, 62,232,190, + 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62,145,180,109,188,243, 90,129, 63, +138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65,255,189, 88, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190, +237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,234,108, 69, 59, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 32, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 1, 0, 0,232, 78, 84, 3, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,104, 84, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, + 8,147, 84, 3, 0, 0, 0, 0,184, 55, 84, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0, +216,222, 83, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, + 85, 0, 0, 0,255, 0, 0, 0, 2, 2,192, 1,171, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 91, 84, 3, 0, 0, 0, 0,232,145, 84, 3, 0, 0, 0, 0, 88, 85, 84, 3, 0, 0, 0, 0,168, 89, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 88, 85, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,200, 86, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, + 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, + 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, + 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,200, 86, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56, 88, 84, 3, 0, 0, 0, 0, + 88, 85, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, + 0, 0,254,194, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0, +145, 0,200, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, +111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0,145, 0, 0, 0, 2, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 56, 88, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,168, 89, 84, 3, 0, 0, 0, 0, +200, 86, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0,191, 1, 0, 0, +111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,168, 89, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 56, 88, 84, 3, 0, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, + 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0,111, 18,131, 58,111, 18,131, 58, + 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,231, 0, +145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0,191, 1, 0, 0, +111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 0,145, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,240, 0, 0, 0, 24, 91, 84, 3, 0, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 92, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88, 92, 84, 3, 0, 0, 0, 0, 24, 1, 0, 0, 1, 0, 0, 0, +120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 8,147, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, + 72,215, 84, 3, 0, 0, 0, 0,104, 84, 84, 3, 0, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0, +248,221, 83, 3, 0, 0, 0, 0,216,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, + 1, 1, 0, 0,186, 2, 0, 0, 12, 12,192, 1,186, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72,152, 84, 3, 0, 0, 0, 0, 40,214, 84, 3, 0, 0, 0, 0,248,147, 84, 3, 0, 0, 0, 0,216,150, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,248,147, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,104,149, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 98, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, + 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, + 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, + 1, 1, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,104,149, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216,150, 84, 3, 0, 0, 0, 0, +248,147, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, + 0, 0,199,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,200, 0, +160, 1,200, 0,142, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, + 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,160, 1, 0, 0, 2, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,216,150, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +104,149, 84, 3, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, + 0, 0,199,195, 0, 0, 0, 0,231, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,248, 0, +160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0, 0, 0,191, 1, 0, 0, + 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 0,160, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 0, 1, 0, 0, 72,152, 84, 3, 0, 0, 0, 0, 25, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 72,215, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,147, 84, 3, 0, 0, 0, 0, + 72,223, 83, 3, 0, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 1, 1,222, 0,138, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,222, 84, 3, 0, 0, 0, 0,248,232, 84, 3, 0, 0, 0, 0, + 56,216, 84, 3, 0, 0, 0, 0,168,217, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56,216, 84, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,168,217, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 64, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, + 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,132, 1, 24, 0,132, 1, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0, 49, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,217, 84, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,216, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,222, 0,138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 24,219, 84, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 24,219, 84, 3, 0, 0, 0, 0, +159, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,109,100, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, +149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, +152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, + 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, + 77,255,170, 64, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191,142,164,206, 63,250,192,142, 63, +180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, 81, 21, 64,191,119, 24,172,191, +216, 49, 49, 65,152, 9, 52, 65,231, 70,158, 62, 24,234,167, 62,160,206,159,187, 0, 0,170,180,243, 26,182,189,252, 74,179, 61, +195,111,128, 62, 0, 0,124, 51,211,120, 21,194,144, 5, 2, 66, 10,136,213,193,193,214,159,192,219, 38, 19, 66,196,173,255,193, +158,101,210, 65,173, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, +149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, +152, 9, 52,193, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191,142,164,206, 63,250,192,142, 63, +180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, 81, 21, 64,191,119, 24,172,191, +216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190, 0, 0, 32, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 13,133, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,200,222, 84, 3, 0, 0, 0, 0, +160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, + 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, +200,234, 84, 3, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,200,187, 85, 3, 0, 0, 0, 0, 40,215, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, + 48, 48, 49, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,235, 84, 3, 0, 0, 0, 0, +152,241, 84, 3, 0, 0, 0, 0, 8,242, 84, 3, 0, 0, 0, 0, 56,251, 84, 3, 0, 0, 0, 0,168,251, 84, 3, 0, 0, 0, 0, +184,120, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,232,235, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 88,236, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 88,236, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,200,236, 84, 3, 0, 0, 0, 0,232,235, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200,236, 84, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 56,237, 84, 3, 0, 0, 0, 0, 88,236, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,237, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +168,237, 84, 3, 0, 0, 0, 0,200,236, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24,238, 84, 3, 0, 0, 0, 0, + 56,237, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 24,238, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,248,238, 84, 3, 0, 0, 0, 0, 24,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248,238, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +104,239, 84, 3, 0, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,104,239, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,216,239, 84, 3, 0, 0, 0, 0, +248,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +216,239, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0,104,239, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,184,240, 84, 3, 0, 0, 0, 0,216,239, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,240, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 40,241, 84, 3, 0, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 20, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 40,241, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,241, 84, 3, 0, 0, 0, 0, +184,240, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +152,241, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,241, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,242, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,120,242, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,236, 84, 3, 0, 0, 0, 0, +200,236, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,242, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,232,242, 84, 3, 0, 0, 0, 0, 8,242, 84, 3, 0, 0, 0, 0, 88,236, 84, 3, 0, 0, 0, 0, +168,237, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,242, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 88,243, 84, 3, 0, 0, 0, 0,120,242, 84, 3, 0, 0, 0, 0,200,236, 84, 3, 0, 0, 0, 0, + 24,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,243, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,200,243, 84, 3, 0, 0, 0, 0,232,242, 84, 3, 0, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0, + 24,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,243, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 56,244, 84, 3, 0, 0, 0, 0, 88,243, 84, 3, 0, 0, 0, 0, 56,237, 84, 3, 0, 0, 0, 0, +248,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,244, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,168,244, 84, 3, 0, 0, 0, 0,200,243, 84, 3, 0, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, +248,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,244, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 24,245, 84, 3, 0, 0, 0, 0, 56,244, 84, 3, 0, 0, 0, 0, 24,238, 84, 3, 0, 0, 0, 0, +104,239, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,245, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,136,245, 84, 3, 0, 0, 0, 0,168,244, 84, 3, 0, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0, +104,239, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,245, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,248,245, 84, 3, 0, 0, 0, 0, 24,245, 84, 3, 0, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, +104,239, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,245, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,104,246, 84, 3, 0, 0, 0, 0,136,245, 84, 3, 0, 0, 0, 0, 24,238, 84, 3, 0, 0, 0, 0, +248,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,246, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,216,246, 84, 3, 0, 0, 0, 0,248,245, 84, 3, 0, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0, +216,239, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,246, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 72,247, 84, 3, 0, 0, 0, 0,104,246, 84, 3, 0, 0, 0, 0,104,239, 84, 3, 0, 0, 0, 0, + 72,240, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,247, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,184,247, 84, 3, 0, 0, 0, 0,216,246, 84, 3, 0, 0, 0, 0,216,239, 84, 3, 0, 0, 0, 0, + 72,240, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,247, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 40,248, 84, 3, 0, 0, 0, 0, 72,247, 84, 3, 0, 0, 0, 0,216,239, 84, 3, 0, 0, 0, 0, +184,240, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,248, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,152,248, 84, 3, 0, 0, 0, 0,184,247, 84, 3, 0, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0, +184,240, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,248, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 8,249, 84, 3, 0, 0, 0, 0, 40,248, 84, 3, 0, 0, 0, 0,232,235, 84, 3, 0, 0, 0, 0, + 40,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,249, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,120,249, 84, 3, 0, 0, 0, 0,152,248, 84, 3, 0, 0, 0, 0, 40,241, 84, 3, 0, 0, 0, 0, +152,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,249, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,232,249, 84, 3, 0, 0, 0, 0, 8,249, 84, 3, 0, 0, 0, 0, 56,237, 84, 3, 0, 0, 0, 0, +152,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,249, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 88,250, 84, 3, 0, 0, 0, 0,120,249, 84, 3, 0, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, +152,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,250, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,200,250, 84, 3, 0, 0, 0, 0,232,249, 84, 3, 0, 0, 0, 0,184,240, 84, 3, 0, 0, 0, 0, + 40,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,250, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 56,251, 84, 3, 0, 0, 0, 0, 88,250, 84, 3, 0, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0, +152,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,251, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,250, 84, 3, 0, 0, 0, 0,232,235, 84, 3, 0, 0, 0, 0, +216,239, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,168,251, 84, 3, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0,120,255, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0, + 88,236, 84, 3, 0, 0, 0, 0,200,236, 84, 3, 0, 0, 0, 0, 24,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56,187, 85, 3, 0, 0, 0, 0, 56,187, 85, 3, 0, 0, 0, 0,152,252, 84, 3, 0, 0, 0, 0, + 8,254, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,252, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 8,254, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8,254, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,152,252, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,120,255, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, +120, 12, 85, 3, 0, 0, 0, 0,168,251, 84, 3, 0, 0, 0, 0,152,241, 84, 3, 0, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, +248,238, 84, 3, 0, 0, 0, 0, 56,237, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,234, 0, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 3, 85, 3, 0, 0, 0, 0,248, 10, 85, 3, 0, 0, 0, 0,104, 0, 85, 3, 0, 0, 0, 0,216, 1, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,104, 0, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216, 1, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,116, 68, 0, 0, 0, 0, 0, 0,208, 65, 0,128,190, 67, 0,192, 25, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, + 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, + 26, 0,234, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,216, 1, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +104, 0, 85, 3, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, + 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, + 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,234, 0, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, + 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,216, 0, 0, 0, 72, 3, 85, 3, 0, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,120, 12, 85, 3, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0, 24, 52, 85, 3, 0, 0, 0, 0,120,255, 84, 3, 0, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, +104,239, 84, 3, 0, 0, 0, 0, 24,238, 84, 3, 0, 0, 0, 0,248,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,186, 2, 0, 0, 4, 4,234, 0,122, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,200, 35, 85, 3, 0, 0, 0, 0,152, 50, 85, 3, 0, 0, 0, 0,104, 13, 85, 3, 0, 0, 0, 0, +216, 14, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 13, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +216, 14, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0,156, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216, 14, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,104, 13, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, + 0, 0, 0, 0,255,255, 88, 67, 0,192, 22,196, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, + 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,234, 0, 91, 2,217, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,155, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +234, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 35, 85, 3, 0, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 24, 52, 85, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 24, 92, 85, 3, 0, 0, 0, 0,120, 12, 85, 3, 0, 0, 0, 0, + 40,241, 84, 3, 0, 0, 0, 0,184,240, 84, 3, 0, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0,152,241, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 1, 1, 19, 2, 20, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 75, 85, 3, 0, 0, 0, 0,248, 90, 85, 3, 0, 0, 0, 0, + 8, 53, 85, 3, 0, 0, 0, 0, 40, 70, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8, 53, 85, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,120, 54, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 4, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 19, 2, 26, 0, 19, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120, 54, 85, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,232, 55, 85, 3, 0, 0, 0, 0, 8, 53, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,250, 0, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232, 55, 85, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 88, 57, 85, 3, 0, 0, 0, 0,120, 54, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, + 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88, 57, 85, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 40, 70, 85, 3, 0, 0, 0, 0,232, 55, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,184,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, + 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,130, 1,163, 0,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 40, 70, 85, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 57, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 19, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,152, 71, 85, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0,152, 71, 85, 3, 0, 0, 0, 0, +159, 0, 0, 0, 1, 0, 0, 0, 37,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249,173,116, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, +149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, +152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, + 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, + 77,255,170, 64, 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63, +180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191, +216, 49, 49, 65,152, 9, 52, 65, 80, 25,195, 62,218,249,206, 62, 0,237,196,187, 0, 0, 96,179,234, 2,170,189,191, 98,167, 61, + 1,208,111, 62, 0, 0,224, 49,254,120, 21,194,182, 5, 2, 66, 70,136,213,193,239,214,159,192, 5, 39, 19, 66, 15,174,255,193, +217,101,210, 65,219, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, +149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, +152, 9, 52,193, 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63, +180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191, +216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190,214,211,111, 65,214,211,111, 65, + 0, 0, 0, 0, 0, 0, 0, 0,223, 34, 9, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, 72, 75, 85, 3, 0, 0, 0, 0, +160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, + 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 24, 92, 85, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,184,120, 85, 3, 0, 0, 0, 0, 24, 52, 85, 3, 0, 0, 0, 0, +216,239, 84, 3, 0, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0,104,239, 84, 3, 0, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 16, 16, 20, 4,166, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 95, 85, 3, 0, 0, 0, 0,152,119, 85, 3, 0, 0, 0, 0, + 8, 93, 85, 3, 0, 0, 0, 0,120, 94, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8, 93, 85, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,120, 94, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120, 94, 85, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 93, 85, 3, 0, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, + 0, 0, 32,193, 0, 0, 0, 68,110,142,241,195, 55,199,120, 68,240, 80,128,193,136, 2, 4, 68, 3, 4, 0, 0, 20, 4, 0, 0, + 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, + 18, 0, 0, 0,139, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,236, 81,184, 61, 10,215, 19, 64, + 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 20, 4,140, 1, 3, 4,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,232, 95, 85, 3, 0, 0, 0, 0, +177, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 61,181, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184,120, 85, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 24, 92, 85, 3, 0, 0, 0, 0,232,235, 84, 3, 0, 0, 0, 0,216,239, 84, 3, 0, 0, 0, 0, +184,240, 84, 3, 0, 0, 0, 0, 40,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, + 0, 0, 0, 0, 19, 1, 0, 0, 6, 6, 0, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248,125, 85, 3, 0, 0, 0, 0, 24,186, 85, 3, 0, 0, 0, 0,168,121, 85, 3, 0, 0, 0, 0,136,124, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,168,121, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 24,123, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, + 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 2, + 26, 0, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 24,123, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,136,124, 85, 3, 0, 0, 0, 0, +168,121, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,136,124, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24,123, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0,191, 0, 0,192, 63, + 0, 0, 64, 60, 0, 0,125, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, + 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,250, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 72, 33, 0, 0,248,125, 85, 3, 0, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, + 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 78, 0, 0,208, 0, 0, 0,200,187, 85, 3, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 40,202, 86, 3, 0, 0, 0, 0, +200,234, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108, +116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +232,188, 85, 3, 0, 0, 0, 0,184,193, 85, 3, 0, 0, 0, 0, 40,194, 85, 3, 0, 0, 0, 0,152,201, 85, 3, 0, 0, 0, 0, + 8,202, 85, 3, 0, 0, 0, 0,152,126, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92,100,177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232,188, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 88,189, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 88,189, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,200,189, 85, 3, 0, 0, 0, 0, +232,188, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +200,189, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 56,190, 85, 3, 0, 0, 0, 0, 88,189, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 97, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,190, 85, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0,200,189, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +118, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 24,191, 85, 3, 0, 0, 0, 0, 56,190, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 4, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0, +168,190, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 70, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +136,191, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 6, 70, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +216,192, 85, 3, 0, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,116, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0, +104,192, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7,116, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 72,193, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,184,193, 85, 3, 0, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,193, 85, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 6, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,194, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +152,194, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,189, 85, 3, 0, 0, 0, 0,200,189, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,194, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 8,195, 85, 3, 0, 0, 0, 0, 40,194, 85, 3, 0, 0, 0, 0, 88,189, 85, 3, 0, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,195, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +120,195, 85, 3, 0, 0, 0, 0,152,194, 85, 3, 0, 0, 0, 0,200,189, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,195, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +232,195, 85, 3, 0, 0, 0, 0, 8,195, 85, 3, 0, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,195, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 88,196, 85, 3, 0, 0, 0, 0,120,195, 85, 3, 0, 0, 0, 0,232,188, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,196, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +200,196, 85, 3, 0, 0, 0, 0,232,195, 85, 3, 0, 0, 0, 0, 56,190, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,196, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 56,197, 85, 3, 0, 0, 0, 0, 88,196, 85, 3, 0, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,197, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +168,197, 85, 3, 0, 0, 0, 0,200,196, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,197, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 24,198, 85, 3, 0, 0, 0, 0, 56,197, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,198, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +136,198, 85, 3, 0, 0, 0, 0,168,197, 85, 3, 0, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,198, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +248,198, 85, 3, 0, 0, 0, 0, 24,198, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,198, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +104,199, 85, 3, 0, 0, 0, 0,136,198, 85, 3, 0, 0, 0, 0, 56,190, 85, 3, 0, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,199, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +216,199, 85, 3, 0, 0, 0, 0,248,198, 85, 3, 0, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,199, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 72,200, 85, 3, 0, 0, 0, 0,104,199, 85, 3, 0, 0, 0, 0,232,188, 85, 3, 0, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,200, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +184,200, 85, 3, 0, 0, 0, 0,216,199, 85, 3, 0, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,200, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 40,201, 85, 3, 0, 0, 0, 0, 72,200, 85, 3, 0, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0,184,193, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,201, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +152,201, 85, 3, 0, 0, 0, 0,184,200, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0,184,193, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,201, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 40,201, 85, 3, 0, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0,184,193, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 8,202, 85, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, +216,205, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0, 88,189, 85, 3, 0, 0, 0, 0, +200,189, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 0, 0, + 71, 4, 0, 0, 97, 4, 0, 0, 7, 7,119, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 40,193, 55, 3, 0, 0, 0, 0, +152,201, 86, 3, 0, 0, 0, 0,152,201, 86, 3, 0, 0, 0, 0,248,202, 85, 3, 0, 0, 0, 0,104,204, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,104, 96, 3, 0, 0, 0, 0, 72, 22, 94, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,248,202, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,104,204, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,148, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,238, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,119, 7, + 26, 0,119, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 0, 0, + 71, 4, 0, 0, 96, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,119, 7, 26, 0, 2, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,195, 55, 3, 0, 0, 0, 0, +120, 77,142, 4, 0, 0, 0, 0,120, 77,142, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 56, 24, 94, 3, 0, 0, 0, 0,232, 28, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,104,204, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248,202, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, + 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, + 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 97, 4, 0, 0, 97, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,194, 55, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,216,205, 85, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,152, 94, 86, 3, 0, 0, 0, 0, + 8,202, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0, + 56,190, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, 0, 0, 0, 0,115, 3, 0, 0, + 4, 4, 70, 1,116, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,188, 55, 3, 0, 0, 0, 0, 72, 85, 86, 3, 0, 0, 0, 0, + 24, 93, 86, 3, 0, 0, 0, 0,200,206, 85, 3, 0, 0, 0, 0, 56,208, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,200, 22, 94, 3, 0, 0, 0, 0,184, 29, 94, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +200,206, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56,208, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,160, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,163, 67, 0, 0, 0, 0, 0, 0,248, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 70, 1, 31, 0, 70, 1, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, 85, 3, 0, 0,115, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,192, 55, 3, 0, 0, 0, 0,248, 24,142, 4, 0, 0, 0, 0, +248, 24,142, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 31, 94, 3, 0, 0, 0, 0, + 24, 34, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 56,208, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,206, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,163, 67, 0, 64, 85,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,154, 67, 0, 64, 85,196, 0, 0, 0, 0, + 53, 1, 0, 0, 70, 1, 0, 0, 0, 0, 0, 0, 84, 3, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 52, 1, 0, 0, 0, 0, 0, 0, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 70, 1, 85, 3, 53, 1, 85, 3, 0, 0, +104, 88,127, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, 0, 0, 0, 0, 84, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 85, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,189, 55, 3, 0, 0, 0, 0,152, 68,129, 4, 0, 0, 0, 0, + 40, 15, 54, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 35, 94, 3, 0, 0, 0, 0, + 72, 39, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 72, 85, 86, 3, 0, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,184,172,127, 4, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,152, 94, 86, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, +152,107, 86, 3, 0, 0, 0, 0,216,205, 85, 3, 0, 0, 0, 0,232,188, 85, 3, 0, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0, +184,193, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, + 0, 0, 0, 0, 91, 0, 0, 0, 15, 15, 48, 6, 92, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,147, 55, 3, 0, 0, 0, 0, +104, 98, 86, 3, 0, 0, 0, 0, 24,106, 86, 3, 0, 0, 0, 0,136, 95, 86, 3, 0, 0, 0, 0,248, 96, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 30, 94, 3, 0, 0, 0, 0, 24, 40, 94, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,136, 95, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,248, 96, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,137, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, + 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, + 26, 0, 48, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 5, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,149, 55, 3, 0, 0, 0, 0, +200,111,129, 4, 0, 0, 0, 0,200,111,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 42, 94, 3, 0, 0, 0, 0,120, 44, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,248, 96, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +136, 95, 86, 3, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, + 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 18, 0, 0, 0, 65, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, + 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 48, 6, + 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, + 26, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 66, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,148, 55, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +184, 45, 94, 3, 0, 0, 0, 0, 56, 51, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,216, 0, 0, 0,104, 98, 86, 3, 0, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,152,107, 86, 3, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0,152,126, 86, 3, 0, 0, 0, 0,152, 94, 86, 3, 0, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0, +248,191, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 49, 6, 0, 0,118, 7, 0, 0,117, 3, 0, 0, 69, 4, 0, 0, 3, 3, 70, 1,209, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88,144, 55, 3, 0, 0, 0, 0,104,111, 86, 3, 0, 0, 0, 0, 24,125, 86, 3, 0, 0, 0, 0,136,108, 86, 3, 0, 0, 0, 0, +248,109, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 40, 94, 3, 0, 0, 0, 0, + 8, 52, 94, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,108, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +248,109, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0, 70, 1, 26, 0, 70, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 49, 6, 0, 0,118, 7, 0, 0, 44, 4, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 70, 1, 26, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +104,146, 55, 3, 0, 0, 0, 0, 56,223,128, 4, 0, 0, 0, 0, 56,223,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,248, 53, 94, 3, 0, 0, 0, 0,104, 56, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,109, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,136,108, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,154, 67, 0, 0, 37,195, 0, 0, 0, 0, 53, 1, 0, 0, 70, 1, 0, 0, 18, 0, 0, 0,182, 0, 0, 0, + 0, 0, 0, 0, 52, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 52, 1, 0, 0, 18, 0, 0, 0,182, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, + 0, 0, 0, 4, 6, 0, 70, 1,183, 0, 53, 1,165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 49, 6, 0, 0,118, 7, 0, 0,117, 3, 0, 0, 43, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 70, 1,183, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +120,145, 55, 3, 0, 0, 0, 0,184, 89,128, 4, 0, 0, 0, 0,184, 89,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,168, 57, 94, 3, 0, 0, 0, 0, 8, 60, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,104,111, 86, 3, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,248, 87,141, 4, 0, 0, 0, 0,248, 87,141, 4, 0, 0, 0, 0,216,112, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 68, 65, 84, 65, 16, 0, 0, 0,216,112, 86, 3, 0, 0, 0, 0,223, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, + 56,113, 86, 3, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0, 56,113, 86, 3, 0, 0, 0, 0,222, 0, 0, 0, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, + 20, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,104,181, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 40,189, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 72,129, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,232,200, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,200,110, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,195, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,232,176, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 8,184, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 24,176, 89, 3, 0, 0, 0, 0, 21, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,152,126, 86, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152,107, 86, 3, 0, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0, +184,193, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0, 69, 4, 0, 0, + 1, 1, 48, 6,233, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 88,150, 55, 3, 0, 0, 0, 0,232,183, 86, 3, 0, 0, 0, 0, +120,200, 86, 3, 0, 0, 0, 0,136,127, 86, 3, 0, 0, 0, 0,200,178, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,136, 52, 94, 3, 0, 0, 0, 0, 8, 21, 55, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +136,127, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,248,128, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64,123, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,160, 55, 3, 0, 0, 0, 0,152, 81,128, 4, 0, 0, 0, 0, +152, 81,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 64, 94, 3, 0, 0, 0, 0, + 72, 68, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +248,128, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,200,154, 86, 3, 0, 0, 0, 0,136,127, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 67, 0,192, 37,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0,192, 37,196, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,150, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,150, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,151, 2,143, 0,151, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,175, 1, 0, 0, 69, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,151, 2, 10, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,157, 55, 3, 0, 0, 0, 0,136, 13,129, 4, 0, 0, 0, 0, +136, 13,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 69, 94, 3, 0, 0, 0, 0, +248, 71, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +200,154, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216,157, 86, 3, 0, 0, 0, 0,248,128, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 33, 67, 0,128,157,195, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67,136,135,157,195, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 56, 1,143, 0, 56, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,119, 0, 0, 0,174, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 56, 1, 11, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 56, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,158, 55, 3, 0, 0, 0, 0,248, 8, 54, 3, 0, 0, 0, 0, +248, 8, 54, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 73, 94, 3, 0, 0, 0, 0, +168, 75, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +216,157, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,200,178, 86, 3, 0, 0, 0, 0,200,154, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 52, 67, 0,192,115,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,115,196, 0, 0, 0, 0, +163, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,207, 3,163, 0,207, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,152, 55, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +200,178, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,157, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 5,207, 3, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,151, 55, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,106, 94, 3, 0, 0, 0, 0, +216,105, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,180, 86, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, + 56,180, 86, 3, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,200,120,204, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0,218,205, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, + 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, +164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,177,157,229, 62, 64, 74, 36,191,222,160, 81,191,184,158, 81,191, +115, 90,127, 63,248, 96,158, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188,235, 2,183, 63,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0, 21,163,108, 65,214,211,111, 65, 39,240,191, 62,125,116, 85, 63, 96,189, 70,188, 0, 0,186,180, + 34,195,128,190, 66, 66,248, 61,254,111, 15, 63, 0, 0,150, 52, 61,119,117,194,106,214,216, 65, 98,162, 5,194,251,254,159,192, + 72, 51,114, 66,244,243,213,193, 71,219, 3, 66,160, 0,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,177,157,229, 62, 64, 74, 36,191,222,160, 81,191,184,158, 81,191, +115, 90,127, 63,248, 96,158, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188,235, 2,183, 63,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0, 21,163,108, 65,214,211,111, 65, 97,199,184, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 97,199,184, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97,199,184, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, +214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,142, 79,168, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 30, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, +232,183, 86, 3, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0, 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 24, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +205,204,204, 61, 0, 64,156, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 78, 0, 0,208, 0, 0, 0, 40,202, 86, 3, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,184,185, 87, 3, 0, 0, 0, 0, +200,187, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97,109,101, 32, 76, +111,103,105, 99, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72,203, 86, 3, 0, 0, 0, 0,248,208, 86, 3, 0, 0, 0, 0,104,209, 86, 3, 0, 0, 0, 0, 40,218, 86, 3, 0, 0, 0, 0, +152,218, 86, 3, 0, 0, 0, 0,184,150, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,203, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +184,203, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,184,203, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 40,204, 86, 3, 0, 0, 0, 0, + 72,203, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 40,204, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,204, 86, 3, 0, 0, 0, 0,184,203, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,152,204, 86, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 8,205, 86, 3, 0, 0, 0, 0, 40,204, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8,205, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +120,205, 86, 3, 0, 0, 0, 0,152,204, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,120,205, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,232,205, 86, 3, 0, 0, 0, 0, + 8,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +232,205, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 88,206, 86, 3, 0, 0, 0, 0,120,205, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88,206, 86, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0,232,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 56,207, 86, 3, 0, 0, 0, 0, 88,206, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,168,207, 86, 3, 0, 0, 0, 0, +200,206, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +168,207, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24,208, 86, 3, 0, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,124, 3, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24,208, 86, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,136,208, 86, 3, 0, 0, 0, 0,168,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +124, 3,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136,208, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +248,208, 86, 3, 0, 0, 0, 0, 24,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0, 20, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,248,208, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +136,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +104,209, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,209, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +184,203, 86, 3, 0, 0, 0, 0, 40,204, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +216,209, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,210, 86, 3, 0, 0, 0, 0,104,209, 86, 3, 0, 0, 0, 0, +184,203, 86, 3, 0, 0, 0, 0, 8,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 72,210, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,210, 86, 3, 0, 0, 0, 0,216,209, 86, 3, 0, 0, 0, 0, + 40,204, 86, 3, 0, 0, 0, 0,120,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +184,210, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40,211, 86, 3, 0, 0, 0, 0, 72,210, 86, 3, 0, 0, 0, 0, + 8,205, 86, 3, 0, 0, 0, 0,120,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 40,211, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152,211, 86, 3, 0, 0, 0, 0,184,210, 86, 3, 0, 0, 0, 0, + 8,205, 86, 3, 0, 0, 0, 0,232,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +152,211, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 8,212, 86, 3, 0, 0, 0, 0, 40,211, 86, 3, 0, 0, 0, 0, +232,205, 86, 3, 0, 0, 0, 0, 88,206, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 8,212, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120,212, 86, 3, 0, 0, 0, 0,152,211, 86, 3, 0, 0, 0, 0, +152,204, 86, 3, 0, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +120,212, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,232,212, 86, 3, 0, 0, 0, 0, 8,212, 86, 3, 0, 0, 0, 0, + 88,206, 86, 3, 0, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +232,212, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88,213, 86, 3, 0, 0, 0, 0,120,212, 86, 3, 0, 0, 0, 0, + 72,203, 86, 3, 0, 0, 0, 0,232,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 88,213, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200,213, 86, 3, 0, 0, 0, 0,232,212, 86, 3, 0, 0, 0, 0, + 72,203, 86, 3, 0, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +200,213, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56,214, 86, 3, 0, 0, 0, 0, 88,213, 86, 3, 0, 0, 0, 0, +120,205, 86, 3, 0, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 56,214, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168,214, 86, 3, 0, 0, 0, 0,200,213, 86, 3, 0, 0, 0, 0, +152,204, 86, 3, 0, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +168,214, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24,215, 86, 3, 0, 0, 0, 0, 56,214, 86, 3, 0, 0, 0, 0, + 88,206, 86, 3, 0, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 24,215, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136,215, 86, 3, 0, 0, 0, 0,168,214, 86, 3, 0, 0, 0, 0, +168,207, 86, 3, 0, 0, 0, 0, 24,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +136,215, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248,215, 86, 3, 0, 0, 0, 0, 24,215, 86, 3, 0, 0, 0, 0, +120,205, 86, 3, 0, 0, 0, 0, 24,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +248,215, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104,216, 86, 3, 0, 0, 0, 0,136,215, 86, 3, 0, 0, 0, 0, + 56,207, 86, 3, 0, 0, 0, 0,168,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +104,216, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,216, 86, 3, 0, 0, 0, 0,248,215, 86, 3, 0, 0, 0, 0, +232,205, 86, 3, 0, 0, 0, 0,136,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +216,216, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,217, 86, 3, 0, 0, 0, 0,104,216, 86, 3, 0, 0, 0, 0, +168,207, 86, 3, 0, 0, 0, 0,136,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 72,217, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,217, 86, 3, 0, 0, 0, 0,216,216, 86, 3, 0, 0, 0, 0, + 8,205, 86, 3, 0, 0, 0, 0,248,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +184,217, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40,218, 86, 3, 0, 0, 0, 0, 72,217, 86, 3, 0, 0, 0, 0, + 24,208, 86, 3, 0, 0, 0, 0,248,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 40,218, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,217, 86, 3, 0, 0, 0, 0, +136,208, 86, 3, 0, 0, 0, 0,248,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +152,218, 86, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104,222, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8,205, 86, 3, 0, 0, 0, 0,184,203, 86, 3, 0, 0, 0, 0, 40,204, 86, 3, 0, 0, 0, 0,120,205, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,185, 87, 3, 0, 0, 0, 0, 40,185, 87, 3, 0, 0, 0, 0, +136,219, 86, 3, 0, 0, 0, 0,248,220, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,219, 86, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,248,220, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,220, 86, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,219, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, + 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, + 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, + 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,104,222, 86, 3, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0, 8, 6, 87, 3, 0, 0, 0, 0,152,218, 86, 3, 0, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0, + 88,206, 86, 3, 0, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0,152,204, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 4, 4,234, 0, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,184,245, 86, 3, 0, 0, 0, 0,136, 4, 87, 3, 0, 0, 0, 0, 88,223, 86, 3, 0, 0, 0, 0, +200,224, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88,223, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +200,224, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0,245, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200,224, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88,223, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, + 0, 0, 0, 0,254,255, 88, 67,254,255,116,195, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, + 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,234, 0,245, 0,217, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +234, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,245, 86, 3, 0, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 8, 6, 87, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8, 79, 87, 3, 0, 0, 0, 0,104,222, 86, 3, 0, 0, 0, 0, + 72,203, 86, 3, 0, 0, 0, 0,232,205, 86, 3, 0, 0, 0, 0, 88,206, 86, 3, 0, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 17, 17, 20, 4, 20, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 12, 87, 3, 0, 0, 0, 0,232, 77, 87, 3, 0, 0, 0, 0, +248, 6, 87, 3, 0, 0, 0, 0,120, 11, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248, 6, 87, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,104, 8, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 8, 87, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,120, 11, 87, 3, 0, 0, 0, 0,248, 6, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 67, + 0, 0,122,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,122,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, + 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, + 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,250, 0,203, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,220, 0,250, 0, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120, 11, 87, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 8, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 68, + 0, 0, 0, 0, 0, 0,112, 67, 4, 0, 39,195, 0,224,180, 68, 1, 0,224,194, 0, 0,176, 67, 39, 3, 0, 0, 56, 3, 0, 0, + 18, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, + 18, 0, 0, 0,249, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, + 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 56, 3,250, 0, 39, 3,232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 3,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 0, 0, 0,232, 12, 87, 3, 0, 0, 0, 0, +178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 8, 79, 87, 3, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0,184,110, 87, 3, 0, 0, 0, 0, 8, 6, 87, 3, 0, 0, 0, 0,168,207, 86, 3, 0, 0, 0, 0, + 24,208, 86, 3, 0, 0, 0, 0,120,205, 86, 3, 0, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 9, 9,130, 1,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,216, 82, 87, 3, 0, 0, 0, 0, 56,109, 87, 3, 0, 0, 0, 0,248, 79, 87, 3, 0, 0, 0, 0, +104, 81, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248, 79, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +104, 81, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,193, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,181, 67, 0, 0,200, 65, 0,128,181, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,130, 1, 26, 0,130, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +130, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 81, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,248, 79, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, + 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0,126, 86, 5, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, + 0, 0, 0, 4, 10, 0,130, 1,140, 1,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +125, 3, 0, 0,254, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0,216, 82, 87, 3, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184,110, 87, 3, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0,184,150, 87, 3, 0, 0, 0, 0, 8, 79, 87, 3, 0, 0, 0, 0,136,208, 86, 3, 0, 0, 0, 0, +248,208, 86, 3, 0, 0, 0, 0, 24,208, 86, 3, 0, 0, 0, 0,168,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 1, 1,167, 2,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,232,133, 87, 3, 0, 0, 0, 0,152,149, 87, 3, 0, 0, 0, 0,168,111, 87, 3, 0, 0, 0, 0, +200,128, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,111, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 24,113, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 56, 0,192, 41, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,167, 2, 26, 0,167, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +167, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24,113, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +136,114, 87, 3, 0, 0, 0, 0,168,111, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +213, 0, 0, 0,213, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0,140, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,114, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +248,115, 87, 3, 0, 0, 0, 0, 24,113, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, + 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0, 47, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,115, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +200,128, 87, 3, 0, 0, 0, 0,136,114, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 23,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,180, 0,112, 2,163, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +123, 3, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200,128, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,248,115, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +167, 2,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 56,130, 87, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 56,130, 87, 3, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, +190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126,177,113, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 63,156, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,232,133, 87, 3, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 8,184, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, + 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184,150, 87, 3, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,110, 87, 3, 0, 0, 0, 0,232,205, 86, 3, 0, 0, 0, 0, + 8,205, 86, 3, 0, 0, 0, 0,248,208, 86, 3, 0, 0, 0, 0,136,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 3, 3,212, 0,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,136,154, 87, 3, 0, 0, 0, 0, 8,184, 87, 3, 0, 0, 0, 0,168,151, 87, 3, 0, 0, 0, 0, + 24,153, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,151, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 24,153, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 83, 67, 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,212, 0, 26, 0,212, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +212, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24,153, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,168,151, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, + 0, 0, 80, 66, 0, 0,119, 67, 0, 0,189,195, 0, 0, 0, 0,195, 0, 0, 0,212, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, + 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, + 0, 0, 0, 4, 6, 0,212, 0,140, 1,195, 0,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,211, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +212, 0,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,136,154, 87, 3, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,155, 87, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 68, 65, 84, 65, 16, 0, 0, 0,248,155, 87, 3, 0, 0, 0, 0,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, + 88,156, 87, 3, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 88,156, 87, 3, 0, 0, 0, 0,222, 0, 0, 0, 13, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, + 20, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,104,181, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 40,189, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 72,129, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,232,200, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,200,110, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,195, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,232,176, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 8,184, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 24,176, 89, 3, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,184,185, 87, 3, 0, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,104,164, 88, 3, 0, 0, 0, 0, 40,202, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,186, 87, 3, 0, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0, +104,193, 87, 3, 0, 0, 0, 0, 8,203, 87, 3, 0, 0, 0, 0,120,203, 87, 3, 0, 0, 0, 0,120,129, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +216,186, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72,187, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,187, 87, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,184,187, 87, 3, 0, 0, 0, 0,216,186, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,187, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 40,188, 87, 3, 0, 0, 0, 0, 72,187, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 40,188, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0, +184,187, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +152,188, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0, 40,188, 87, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +232,189, 87, 3, 0, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244, 3,187, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,232,189, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0, +120,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 88,190, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0,232,189, 87, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 56,191, 87, 3, 0, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +244, 3, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,191, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +168,191, 87, 3, 0, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0, + 56,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 24,192, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,244, 3, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,104,193, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,193, 87, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 72,187, 87, 3, 0, 0, 0, 0,184,187, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,216,193, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,194, 87, 3, 0, 0, 0, 0, +104,193, 87, 3, 0, 0, 0, 0, 72,187, 87, 3, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 72,194, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,194, 87, 3, 0, 0, 0, 0, +216,193, 87, 3, 0, 0, 0, 0,184,187, 87, 3, 0, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,184,194, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40,195, 87, 3, 0, 0, 0, 0, + 72,194, 87, 3, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 40,195, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152,195, 87, 3, 0, 0, 0, 0, +184,194, 87, 3, 0, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,152,195, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 8,196, 87, 3, 0, 0, 0, 0, + 40,195, 87, 3, 0, 0, 0, 0, 40,188, 87, 3, 0, 0, 0, 0,232,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 8,196, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120,196, 87, 3, 0, 0, 0, 0, +152,195, 87, 3, 0, 0, 0, 0,216,186, 87, 3, 0, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,120,196, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,232,196, 87, 3, 0, 0, 0, 0, + 8,196, 87, 3, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,232,196, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88,197, 87, 3, 0, 0, 0, 0, +120,196, 87, 3, 0, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 88,197, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200,197, 87, 3, 0, 0, 0, 0, +232,196, 87, 3, 0, 0, 0, 0,232,189, 87, 3, 0, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,200,197, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56,198, 87, 3, 0, 0, 0, 0, + 88,197, 87, 3, 0, 0, 0, 0,216,186, 87, 3, 0, 0, 0, 0, 56,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 56,198, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168,198, 87, 3, 0, 0, 0, 0, +200,197, 87, 3, 0, 0, 0, 0,232,189, 87, 3, 0, 0, 0, 0, 56,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,168,198, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24,199, 87, 3, 0, 0, 0, 0, + 56,198, 87, 3, 0, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 24,199, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136,199, 87, 3, 0, 0, 0, 0, +168,198, 87, 3, 0, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,136,199, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248,199, 87, 3, 0, 0, 0, 0, + 24,199, 87, 3, 0, 0, 0, 0, 56,191, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,248,199, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104,200, 87, 3, 0, 0, 0, 0, +136,199, 87, 3, 0, 0, 0, 0,232,189, 87, 3, 0, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,104,200, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,200, 87, 3, 0, 0, 0, 0, +248,199, 87, 3, 0, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,216,200, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,201, 87, 3, 0, 0, 0, 0, +104,200, 87, 3, 0, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 72,201, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,201, 87, 3, 0, 0, 0, 0, +216,200, 87, 3, 0, 0, 0, 0, 40,188, 87, 3, 0, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,184,201, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40,202, 87, 3, 0, 0, 0, 0, + 72,201, 87, 3, 0, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 40,202, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152,202, 87, 3, 0, 0, 0, 0, +184,201, 87, 3, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,152,202, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 8,203, 87, 3, 0, 0, 0, 0, + 40,202, 87, 3, 0, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 8,203, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152,202, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,120,203, 87, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 72,207, 87, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0, 72,187, 87, 3, 0, 0, 0, 0,184,187, 87, 3, 0, 0, 0, 0, + 8,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, + 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,163, 88, 3, 0, 0, 0, 0, +216,163, 88, 3, 0, 0, 0, 0,104,204, 87, 3, 0, 0, 0, 0,216,205, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +104,204, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216,205, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +216,205, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,204, 87, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, +112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 72,207, 87, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,232,246, 87, 3, 0, 0, 0, 0,120,203, 87, 3, 0, 0, 0, 0, +232,189, 87, 3, 0, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0, 40,188, 87, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 4, 4, 10, 1, 12, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,230, 87, 3, 0, 0, 0, 0,104,245, 87, 3, 0, 0, 0, 0, + 56,208, 87, 3, 0, 0, 0, 0,168,209, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56,208, 87, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,168,209, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, 31, 0, 10, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0,237, 1, 0, 0, 11, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,209, 87, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,208, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,132, 67, + 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255,120, 67,255,127,246,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, + 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, + 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 10, 1,237, 1,249, 0,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,230, 87, 3, 0, 0, 0, 0, +165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,232,246, 87, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8, 30, 88, 3, 0, 0, 0, 0, + 72,207, 87, 3, 0, 0, 0, 0, 56,191, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0, +232,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, + 18, 18,251, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,250, 87, 3, 0, 0, 0, 0, +232, 28, 88, 3, 0, 0, 0, 0,216,247, 87, 3, 0, 0, 0, 0, 72,249, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +216,247, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 72,249, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 72,249, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,247, 87, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,253, 67, 0, 0, 0, 0, 0, 0, 48, 65, 0, 0, 0, 0, 0, 0,245, 67, 0, 0, 0, 0, 0, 0,129, 67, +234, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,233, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,251, 1, 2, 1,234, 1, 2, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 1, 0, 0, +184,250, 87, 3, 0, 0, 0, 0,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0, 8, 30, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104, 64, 88, 3, 0, 0, 0, 0, +232,246, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0, +200,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, + 1, 1,251, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 41, 88, 3, 0, 0, 0, 0, + 72, 63, 88, 3, 0, 0, 0, 0,248, 30, 88, 3, 0, 0, 0, 0,184, 36, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +248, 30, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,104, 32, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +104, 32, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216, 33, 88, 3, 0, 0, 0, 0,248, 30, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,249, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,132, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +216, 33, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 72, 35, 88, 3, 0, 0, 0, 0,104, 32, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0, 55, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 72, 35, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,184, 36, 88, 3, 0, 0, 0, 0,216, 33, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0, +163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243, 3, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +184, 36, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 35, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 38, 88, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, + 40, 38, 88, 3, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 42,240,182, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, + 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, +164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62,242,252, 18,191,222,160, 81,191,184,158, 81,191, +117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, 0,247, 70,188, 0,192, 32,182, + 15,232,143,190,210,186, 10, 62, 44, 83, 32, 63, 0,192, 24, 54,215,104, 25,196,133,132,135, 67, 37, 9,167,195,136,252, 71,194, + 3, 54, 25, 68,158, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62,242,252, 18,191,222,160, 81,191,184,158, 81,191, +117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, +214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,138, 93,108, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, +216, 41, 88, 3, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0, 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,104, 64, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,136,103, 88, 3, 0, 0, 0, 0, + 8, 30, 88, 3, 0, 0, 0, 0,216,186, 87, 3, 0, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0, + 56,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, + 18, 18,248, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 68, 88, 3, 0, 0, 0, 0, +104,102, 88, 3, 0, 0, 0, 0, 88, 65, 88, 3, 0, 0, 0, 0,200, 66, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 88, 65, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,200, 66, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,231, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +200, 66, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 65, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0, 65, 67, 0, 0, 0, 0, 0,128,243, 67, 0, 0, 0, 0, 0, 0,129, 67, +231, 1, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,230, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,248, 1, 2, 1,231, 1, 2, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 1, 0, 0, + 56, 68, 88, 3, 0, 0, 0, 0,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,121,116,104,111,110, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,136,103, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,120,129, 88, 3, 0, 0, 0, 0, +104, 64, 88, 3, 0, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0, +136,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0,186, 2, 0, 0, + 3, 3, 10, 1,174, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,107, 88, 3, 0, 0, 0, 0, +248,127, 88, 3, 0, 0, 0, 0,120,104, 88, 3, 0, 0, 0, 0,232,105, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +120,104, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,232,105, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,149, 67, 0, 0,200, 65, 0,128,149, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, 26, 0, 10, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0, 38, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +232,105, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,104, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 67, 0, 0, 2,195, 0, 0, 0, 0, +249, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 10, 1,148, 0,249, 0,130, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 39, 2, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, + 88,107, 88, 3, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,200,108, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,200,108, 88, 3, 0, 0, 0, 0, +223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 40,109, 88, 3, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, + 40,109, 88, 3, 0, 0, 0, 0,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, + 19, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, + 21, 0, 1, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,104,181, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 40,189, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 72,129, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,232,200, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,110, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,200,195, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,232,176, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 24,176, 89, 3, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,120,129, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +136,103, 88, 3, 0, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0, +168,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, + 9, 9,248, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,133, 88, 3, 0, 0, 0, 0, +184,162, 88, 3, 0, 0, 0, 0,104,130, 88, 3, 0, 0, 0, 0,216,131, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +104,130, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216,131, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 73, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +216,131, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,130, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,236,140, 21, 68, 20, 51,102, 68,120, 83, 49, 67, 68,214,212, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,248, 1,132, 1,248, 1,132, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0, + 72,133, 88, 3, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,231, 1, 0, 0,243, 1, 0, 0, +122, 1, 0, 0,124, 1, 0, 0,231, 1, 0, 0,243, 1, 0, 0, 4, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 78, 0, 0,208, 0, 0, 0,104,164, 88, 3, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,248, 10, 89, 3, 0, 0, 0, 0, +184,185, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86, 32, 69,100,105, +116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +136,165, 88, 3, 0, 0, 0, 0,152,168, 88, 3, 0, 0, 0, 0, 8,169, 88, 3, 0, 0, 0, 0,104,173, 88, 3, 0, 0, 0, 0, +216,173, 88, 3, 0, 0, 0, 0,120,234, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136,165, 88, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +248,165, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,248,165, 88, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,104,166, 88, 3, 0, 0, 0, 0, +136,165, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +104,166, 88, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,216,166, 88, 3, 0, 0, 0, 0,248,165, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,216,166, 88, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0,104,166, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +184,167, 88, 3, 0, 0, 0, 0,216,166, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0, + 72,167, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 40,168, 88, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,168, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,132, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,152,168, 88, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +132, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,169, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +120,169, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,165, 88, 3, 0, 0, 0, 0,104,166, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,169, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +232,169, 88, 3, 0, 0, 0, 0, 8,169, 88, 3, 0, 0, 0, 0,248,165, 88, 3, 0, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,169, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 88,170, 88, 3, 0, 0, 0, 0,120,169, 88, 3, 0, 0, 0, 0,104,166, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,170, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +200,170, 88, 3, 0, 0, 0, 0,232,169, 88, 3, 0, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,170, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 56,171, 88, 3, 0, 0, 0, 0, 88,170, 88, 3, 0, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,171, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +168,171, 88, 3, 0, 0, 0, 0,200,170, 88, 3, 0, 0, 0, 0,136,165, 88, 3, 0, 0, 0, 0,152,168, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,171, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 24,172, 88, 3, 0, 0, 0, 0, 56,171, 88, 3, 0, 0, 0, 0,136,165, 88, 3, 0, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,172, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +136,172, 88, 3, 0, 0, 0, 0,168,171, 88, 3, 0, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0,152,168, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,172, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +248,172, 88, 3, 0, 0, 0, 0, 24,172, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,172, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +104,173, 88, 3, 0, 0, 0, 0,136,172, 88, 3, 0, 0, 0, 0,216,166, 88, 3, 0, 0, 0, 0,152,168, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,173, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,248,172, 88, 3, 0, 0, 0, 0,216,166, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,216,173, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, +168,177, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0,248,165, 88, 3, 0, 0, 0, 0, +104,166, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, +188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +104, 10, 89, 3, 0, 0, 0, 0,104, 10, 89, 3, 0, 0, 0, 0,200,174, 88, 3, 0, 0, 0, 0, 56,176, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,200,174, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56,176, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, + 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, +188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 56,176, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +200,174, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, + 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, + 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,168,177, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,120,234, 88, 3, 0, 0, 0, 0, +216,173, 88, 3, 0, 0, 0, 0,136,165, 88, 3, 0, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0, +152,168, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, + 6, 6,132, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,184, 88, 3, 0, 0, 0, 0, + 88,233, 88, 3, 0, 0, 0, 0,152,178, 88, 3, 0, 0, 0, 0, 24,183, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +152,178, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 8,180, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 33, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,132, 2, 26, 0,132, 2, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 8,180, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 24,183, 88, 3, 0, 0, 0, 0,152,178, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 91, 67, 0, 0, 40,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 74, 67,254, 63, 40,196, 0, 0, 0, 0, +203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,161, 2,203, 0,161, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,161, 2, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 24,183, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,180, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67,102,102, 38,190,205,204,148, 63, 51, 51, 13,191,154,153,198, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,168, 1, 0, 0, 0, 0, 0, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0,131, 2, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 33, 0, 0, +136,184, 88, 3, 0, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0, +154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +120,234, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,177, 88, 3, 0, 0, 0, 0, +152,168, 88, 3, 0, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0,216,166, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 1, 1,122, 2,187, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 89, 3, 0, 0, 0, 0, 72, 9, 89, 3, 0, 0, 0, 0, +104,235, 88, 3, 0, 0, 0, 0,200,255, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104,235, 88, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,216,236, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 30, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,122, 2, 26, 0,122, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,122, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216,236, 88, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,136,241, 88, 3, 0, 0, 0, 0,104,235, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 67, + 0, 64, 10,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 10,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 41, 2,143, 0, 41, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0,146, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 41, 2, 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,241, 88, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,152,244, 88, 3, 0, 0, 0, 0,216,236, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 67, + 0, 0,242,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 91, 90,242,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0, 26, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 0, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,244, 88, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,200,255, 88, 3, 0, 0, 0, 0,136,241, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,255,191,126,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, + 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, 13, 4,163, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200,255, 88, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,244, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 37, 3, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,218, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 1, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 56, 1, 89, 3, 0, 0, 0, 0, +159, 0, 0, 0, 1, 0, 0, 0,193,198,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, + 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, + 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 25, 95,192, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,160, 84, 89,188, 0, 0, 0, 0, 52,177,205,190,142, 74, 70, 62, +166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,188,173, 54, 64,136, 95,161,191, +147,231,198, 63, 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191,130, 71,181, 63,140,225, 88, 62, + 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, +101, 98, 82, 64, 0, 25, 95, 64,101, 47,135, 62,134, 86, 22, 63, 32,243, 11,188, 0, 0,160,179,195, 15,188,190,132, 75, 53, 62, +216,125, 81, 63, 0, 0,192,179,115, 77,100,193, 17,173,201, 64,181,148,248,192,202,247,159,192,233, 74, 87, 65,247, 46,190,192, + 88,106,234, 64, 44, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, + 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 25, 95,192, 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191,130, 71,181, 63,140,225, 88, 62, + 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, +101, 98, 82, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 0, 25, 95, 64, 0, 25, 95, 64, + 0, 0, 0, 0, 0, 0, 0, 0,116, 16, 50, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,232, 4, 89, 3, 0, 0, 0, 0, +160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, + 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, +248, 10, 89, 3, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,164, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105,100,101,111, 32, 69,100,105,116,105,110,103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 12, 89, 3, 0, 0, 0, 0, +232, 16, 89, 3, 0, 0, 0, 0, 88, 17, 89, 3, 0, 0, 0, 0,200, 24, 89, 3, 0, 0, 0, 0, 56, 25, 89, 3, 0, 0, 0, 0, +152,134, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 24, 12, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136, 12, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +136, 12, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,248, 12, 89, 3, 0, 0, 0, 0, 24, 12, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248, 12, 89, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,104, 13, 89, 3, 0, 0, 0, 0,136, 12, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 13, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +216, 13, 89, 3, 0, 0, 0, 0,248, 12, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0, +104, 13, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 72, 14, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +152, 15, 89, 3, 0, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0, + 40, 15, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 8, 16, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,232, 16, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 52, 2, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232, 16, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 88, 17, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200, 17, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,136, 12, 89, 3, 0, 0, 0, 0,248, 12, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,200, 17, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56, 18, 89, 3, 0, 0, 0, 0, + 88, 17, 89, 3, 0, 0, 0, 0,136, 12, 89, 3, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 56, 18, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168, 18, 89, 3, 0, 0, 0, 0, +200, 17, 89, 3, 0, 0, 0, 0,248, 12, 89, 3, 0, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,168, 18, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24, 19, 89, 3, 0, 0, 0, 0, + 56, 18, 89, 3, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 24, 19, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136, 19, 89, 3, 0, 0, 0, 0, +168, 18, 89, 3, 0, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,136, 19, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248, 19, 89, 3, 0, 0, 0, 0, + 24, 19, 89, 3, 0, 0, 0, 0, 24, 12, 89, 3, 0, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,248, 19, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104, 20, 89, 3, 0, 0, 0, 0, +136, 19, 89, 3, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,104, 20, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216, 20, 89, 3, 0, 0, 0, 0, +248, 19, 89, 3, 0, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,216, 20, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72, 21, 89, 3, 0, 0, 0, 0, +104, 20, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 72, 21, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184, 21, 89, 3, 0, 0, 0, 0, +216, 20, 89, 3, 0, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,184, 21, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40, 22, 89, 3, 0, 0, 0, 0, + 72, 21, 89, 3, 0, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0,232, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 40, 22, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152, 22, 89, 3, 0, 0, 0, 0, +184, 21, 89, 3, 0, 0, 0, 0,104, 13, 89, 3, 0, 0, 0, 0,232, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,152, 22, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 8, 23, 89, 3, 0, 0, 0, 0, + 40, 22, 89, 3, 0, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0,232, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 8, 23, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120, 23, 89, 3, 0, 0, 0, 0, +152, 22, 89, 3, 0, 0, 0, 0, 24, 12, 89, 3, 0, 0, 0, 0,104, 13, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,120, 23, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,232, 23, 89, 3, 0, 0, 0, 0, + 8, 23, 89, 3, 0, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,232, 23, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88, 24, 89, 3, 0, 0, 0, 0, +120, 23, 89, 3, 0, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 88, 24, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200, 24, 89, 3, 0, 0, 0, 0, +232, 23, 89, 3, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,200, 24, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 24, 89, 3, 0, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0, 56, 25, 89, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8, 29, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0,136, 12, 89, 3, 0, 0, 0, 0,248, 12, 89, 3, 0, 0, 0, 0, + 72, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, + 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,158, 89, 3, 0, 0, 0, 0, +232,158, 89, 3, 0, 0, 0, 0, 40, 26, 89, 3, 0, 0, 0, 0,152, 27, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 40, 26, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,152, 27, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +152, 27, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 26, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, +112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 8, 29, 89, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8, 42, 89, 3, 0, 0, 0, 0, 56, 25, 89, 3, 0, 0, 0, 0, + 24, 12, 89, 3, 0, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0,232, 16, 89, 3, 0, 0, 0, 0,104, 13, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,255, 4, 64, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 32, 89, 3, 0, 0, 0, 0,136, 40, 89, 3, 0, 0, 0, 0, +248, 29, 89, 3, 0, 0, 0, 0,104, 31, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248, 29, 89, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,104, 31, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 31, 89, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 29, 89, 3, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, + 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,216, 32, 89, 3, 0, 0, 0, 0, +176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0, 8, 42, 89, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 88, 66, 89, 3, 0, 0, 0, 0, + 8, 29, 89, 3, 0, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0, +232, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 83, 1, 0, 0, + 8, 8,255, 4, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 48, 89, 3, 0, 0, 0, 0, + 56, 65, 89, 3, 0, 0, 0, 0,248, 42, 89, 3, 0, 0, 0, 0, 72, 47, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +248, 42, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,104, 44, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 96,191, 68, 0, 0,200, 65, 0, 96,191, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 90, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +104, 44, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216, 45, 89, 3, 0, 0, 0, 0,248, 42, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,121,195, 0, 0, 0, 0, +203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,249, 0,203, 0,249, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4, 0, 0,254, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,249, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +216, 45, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 72, 47, 89, 3, 0, 0, 0, 0,104, 44, 89, 3, 0, 0, 0, 0, + 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70, +172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 83, 1, 0, 0, 83, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 72, 47, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 45, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0, 34, 4, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, + 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, +184, 48, 89, 3, 0, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0, 88, 66, 89, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,152,134, 89, 3, 0, 0, 0, 0, + 8, 42, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0, +120, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, + 2, 2, 52, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 73, 89, 3, 0, 0, 0, 0, +120,133, 89, 3, 0, 0, 0, 0, 72, 67, 89, 3, 0, 0, 0, 0,152, 71, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 72, 67, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,184, 68, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 13, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 52, 2, 26, 0, 52, 2, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +184, 68, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 40, 70, 89, 3, 0, 0, 0, 0, 72, 67, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,157,195, 0, 0, 0, 0, +200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0, 76, 1,200, 0, 58, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,111, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 76, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 40, 70, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,152, 71, 89, 3, 0, 0, 0, 0,184, 68, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +152, 71, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 70, 89, 3, 0, 0, 0, 0, + 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0, 90, 1, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, + 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, + 8, 73, 89, 3, 0, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 74, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 72, 74, 89, 3, 0, 0, 0, 0, 24, 1, 0, 0, 1, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,152,134, 89, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 66, 89, 3, 0, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0, +184, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, + 8, 8,202, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,141, 89, 3, 0, 0, 0, 0, +200,157, 89, 3, 0, 0, 0, 0,136,135, 89, 3, 0, 0, 0, 0,216,139, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +136,135, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,248,136, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,192, 15, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 50, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 64, 50, 68, 0, 0,200, 65, 0, 64, 50, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,202, 2, 26, 0,202, 2, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +248,136, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,104,138, 89, 3, 0, 0, 0, 0,136,135, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +104,138, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216,139, 89, 3, 0, 0, 0, 0,248,136, 89, 3, 0, 0, 0, 0, + 0, 0,112,195, 0, 0,112, 67, 0, 0, 7,195, 0, 0, 7, 67,105, 42,145,196,105, 42,145, 68, 0, 0, 7,196, 0, 0, 7, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70, +172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 4, 0, 0,202, 2, 76, 1,202, 2, 76, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 76, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +216,139, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,138, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0,201, 2, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, + 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, + 72,141, 89, 3, 0, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 0, 0, 8, 6, 0, 0,120,159, 89, 3, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99,101,110,101, 0, +116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,200,165, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8,184, 89, 3, 0, 0, 0, 0,104,181, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56,168, 89, 3, 0, 0, 0, 0, 24,169, 89, 3, 0, 0, 0, 0, 56,168, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,169, 89, 3, 0, 0, 0, 0, +184, 55,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, +250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 6, 0, 50, 0,141, 0,128, 7, 56, 4, 8, 0, 8, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, 90, 0, 1, 0, + 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,175, 89, 3, 0, 0, 0, 0, 40,175, 89, 3, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 5, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 16, 0, 0, 0,128, 63, 0, 0,128, 63, +173, 2, 95, 0,154,153,217, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, 68, 69, 82, 95, 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63,102,166,171, 67, 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144,175, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,141, 90, 3, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 32, 0, 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0,128, 0, 5, 0, 60, 0, 5, 0, 1, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4,205,204,204, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 96, 0, 0, 0,200,165, 89, 3, 0, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,166, 89, 3, 0, 0, 0, 0, +120,166, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, +120,166, 89, 3, 0, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0,110,101,116,119,111,114,107, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,167, 89, 3, 0, 0, 0, 0, 40,167, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 40,167, 89, 3, 0, 0, 0, 0, + 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,101,114,118, +101,114, 95, 97,100,100,114,101,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +216,167, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 10, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,216,167, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 91,100,101,102, 97,117,108,116, 93, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,168, 89, 3, 0, 0, 0, 0,133, 0, 0, 0, + 1, 0, 0, 0,168,168, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, +200, 2,231, 1, 40,189, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,168, 89, 3, 0, 0, 0, 0,133, 0, 0, 0, + 1, 0, 0, 0, 24,169, 89, 3, 0, 0, 0, 0, 56,168, 89, 3, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, +152, 3, 37, 3,200,195, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,169, 89, 3, 0, 0, 0, 0,133, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,168, 89, 3, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, +157, 0, 72, 2, 8,184, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65,184, 1, 0, 0,136,169, 89, 3, 0, 0, 0, 0,153, 0, 0, 0, + 1, 0, 0, 0,136,171, 89, 3, 0, 0, 0, 0,152,172, 89, 3, 0, 0, 0, 0,168,173, 89, 3, 0, 0, 0, 0, 0, 0,128, 63, + 1, 0, 1, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, + 32, 0, 32, 0, 32, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,184,174, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, + 5, 0,255,255, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,200, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 10,215, 35, 60,205,204,204, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 0,205,204,204, 61, +205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, 72,225,122, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 0, 0, 0,136,171, 89, 3, 0, 0, 0, 0,152, 0, 0, 0, 1, 0, 0, 0, 24,172, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 0, 0, 0, 24,172, 89, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,184,184, 90, 3, 0, 0, 0, 0, 88,139, 90, 3, 0, 0, 0, 0,184,208, 90, 3, + 0, 0, 0, 0,184,188, 90, 3, 0, 0, 0, 0,184,144, 90, 3, 0, 0, 0, 0,184,180, 90, 3, 0, 0, 0, 0,184,156, 90, 3, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 0, 0, 0,152,172, 89, 3, 0, 0, 0, 0,152, 0, 0, 0, 1, 0, 0, 0, 40,173, 89, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 56, 0, 0, 0, 40,173, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,184,184, 90, 3, 0, 0, 0, 0, 88,139, 90, 3, + 0, 0, 0, 0,184,208, 90, 3, 0, 0, 0, 0,184,188, 90, 3, 0, 0, 0, 0,184,144, 90, 3, 0, 0, 0, 0,184,180, 90, 3, + 0, 0, 0, 0,184,156, 90, 3, 0, 0, 0, 0, 68, 65, 84, 65, 56, 0, 0, 0,168,173, 89, 3, 0, 0, 0, 0,151, 0, 0, 0, + 1, 0, 0, 0, 40,174, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,100,100,128, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 0, 0, 0, 40,174, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,184,160, 90, 3, 0, 0, 0, 0,184,200, 90, 3, + 0, 0, 0, 0,184,192, 90, 3, 0, 0, 0, 0,184,172, 90, 3, 0, 0, 0, 0,184,168, 90, 3, 0, 0, 0, 0,184,176, 90, 3, + 0, 0, 0, 0,184,164, 90, 3, 0, 0, 0, 0,184,148, 90, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,174, 89, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,184,160, 90, 3, 0, 0, 0, 0,184,204, 90, 3, 0, 0, 0, 0,184,152, 90, 3, + 0, 0, 0, 0,184,196, 90, 3, 0, 0, 0, 0, 68, 65, 84, 65, 88, 0, 0, 0, 40,175, 89, 3, 0, 0, 0, 0,139, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 76, 97,121,101,114, 0, +114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 67, 65, 0, 0, +136, 0, 0, 0, 24,176, 89, 3, 0, 0, 0, 0, 29, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101, +114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63,205,204,204, 61, 0, 0,200, 66, 0, 0, 12, 66,161, 14,234, 64, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, +216, 1, 0, 0,232,176, 89, 3, 0, 0, 0, 0, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 76, 97,109,112, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,247,255,239, 65, 0, 0,150, 66,154,153, 25, 62, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 8,179, 89, 3, 0, 0, 0, 0, 2, 0, 0, 0, 46, 26,128, 63, 25, 4,240, 65, + 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 11, 3, 0, + 1, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111, 18,131, 58, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,248,180, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 8,179, 89, 3, 0, 0, 0, 0, 83, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63,152,180, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,180, 89, 3, 0, 0, 0, 0, 81, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,180, 89, 3, + 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0,232, 1, 0, 0,104,181, 89, 3, + 0, 0, 0, 0,132, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,114, 99, 80, 61,114, 99, 80, 61,114, 99, 80, 61, 0, 0, 0, 0,199, 54, 36, 60,199, 54, 36, 60,199, 54, 36, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0,128, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 64, 0, 0,200, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, + 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 61, 0, 0, 5, 0, 0, 0, 0, 0, 10,215,163, 59, 0, 0, 0, 0, 0, 0,128, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,183, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,183, 89, 3, + 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,208, 4, 0, 0, 8,184, 89, 3, + 0, 0, 0, 0,121, 0, 0, 0, 1, 0, 0, 0, 40,189, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,176, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0, +250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222,149, 47, 63, 53, 70, 58, 63, +222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,149, 84, 28,191, + 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 1, 0,128, 63, 1, 0,128, 51, + 1, 0, 0,179, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0,128, 63, 1, 0,128, 51, 0, 0, 0, 0, 2, 0, 0,179, 2, 0, 0,167, + 1, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 53, 1, 0, 0, 41, 1, 0,128,168, 0, 0,128, 63, 0, 0,128, 63,157,190,215, 49, +167,170, 4, 52, 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, 33, 69, 15, 51, 0, 0, 0,128, 73,254, 67, 51,243, 97,106, 49, + 0, 0,128, 63, 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, 0, 0,128, 53, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,187,225, 16, 63, 0, 0,128, 63,205,204,204, 62,237, 54, 32, 63, + 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, +208, 4, 0, 0, 40,189, 89, 3, 0, 0, 0, 0,121, 0, 0, 0, 1, 0, 0, 0,200,195, 89, 3, 0, 0, 0, 0, 8,184, 89, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112,104,101,114,101, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 40, 54, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,129, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,194, 89, 3, 0, 0, 0, 0,152,194, 89, 3, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +222,149, 47, 63, 52, 70, 58, 63,179, 56, 49,188, 0, 0, 0,128, 86,126,162,190,227,251,159, 62, 56, 53,101, 63, 0, 0, 0,128, + 7,165, 39, 63,149, 84, 28,191, 50,247,227, 62, 0, 0, 0,128,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, 79, 66, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63, +205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, + 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,194, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,181,126, 4, + 0, 0, 0, 0,184,189,126, 4, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0, 72,194, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,152,194, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,152, 0, 0, 0,232,194, 89, 3, 0, 0, 0, 0,124, 0, 0, 0, 1, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,205,204, 76, 62, 10,215,163, 60, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 79, 66, 0, 0,208, 4, 0, 0,200,195, 89, 3, 0, 0, 0, 0, +121, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,189, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,232,176, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, + 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, + 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229,123, 38, 63, + 87, 43, 98, 61,229,229,238, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54,236,148,190, 25,134,116, 63,236, 13, 98,189, + 0, 0, 0, 0,221,102, 69,191, 57,174, 76,190, 34,194, 26, 63, 0, 0, 0, 0, 37,255, 16, 63,241,161, 95, 62,164,111, 75, 63, + 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 1, 0,128, 50, 0, 0, 0,179, + 0, 0, 0, 0, 1, 0,128, 50, 1, 0,128, 63, 1, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 1, 0, 0, 39, 1, 0, 0, 52, 1, 0,128, 39, 0, 0,128, 63, 53,236,148,190,222,102, 69,191, 37,255, 16, 63, + 0, 0, 0,128, 24,134,116, 63, 57,174, 76,190,240,161, 95, 62, 0, 0, 0,128,235, 13, 98,189, 34,194, 26, 63,166,111, 75, 63, + 0, 0, 0,128,208, 19, 13, 63,234, 65,102,190, 10, 10,231,192, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 5, 0, 1, 0, 0, 0, 68, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, + 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0, +143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0, 32, 3, 0, 0, +232,200, 89, 3, 0, 0, 0, 0, 44, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, + 0, 0, 8, 0, 1, 0, 50, 0,205,204, 76, 62, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,160, 63, + 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, + 0, 0,128, 63, 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 4, 0, 67, 0, 64, 3, + 67, 0, 64, 3, 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63, +205,204,204, 61, 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 88,204, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +184,205, 89, 3, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111,148, 26, 63,111,148, 26, 63,111,148, 26, 63,205,204, 76, 61,205,204,204, 61, +102,102,166, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 88,204, 89, 3, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,110, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 40, 0, 0, 0, +184,205, 89, 3, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 40,206, 89, 3, 0, 0, 0, 0,120,222, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, + 40,206, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0,120,222, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0,112, 1, 0, 0,200,110, 90, 3, 0, 0, 0, 0, 39, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 64, + 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 5, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,112, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,112, 90, 3, 0, 0, 0, 0, + 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, +248,112, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0,248,112, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0,176, 1, 0, 0, 72,129, 90, 3, 0, 0, 0, 0, 54, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 69, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,131, 90, 3, 0, 0, 0, 0, +152,138, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,133, 90, 3, 0, 0, 0, 0, + 8,136, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,131, 90, 3, 0, 0, 0, 0, + 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88,134, 90, 3, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,232,136, 90, 3, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 30, 0, 6, 0, 1, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0, 72,131, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0,232,200, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0,152,131, 90, 3, 0, 0, 0, 0, + 88, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 72,133, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, 72,133, 90, 3, 0, 0, 0, 0, + 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, 1, 0, 0, 0, + 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191,230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191,253,255,127,191, + 0, 0,128,191, 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, + 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, 1, 0, 0, 0, +245,255,127, 63, 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191,250,255,127,191, + 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73, +230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0, 88,134, 90, 3, 0, 0, 0, 0, 88, 1, 0, 0, 5, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8,136, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0, 8,136, 90, 3, 0, 0, 0, 0, 57, 0, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, + 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65,104, 1, 0, 0,232,136, 90, 3, 0, 0, 0, 0, + 88, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,152,138, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,120, 0, 0, 0,152,138, 90, 3, 0, 0, 0, 0, + 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, + 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, + 66, 82, 0, 0,168, 1, 0, 0, 88,139, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,144, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, + 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,142, 90, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 1, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,192,139, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,142, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,144, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 56,144, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,144, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, +184,148, 90, 3, 0, 0, 0, 0, 88,139, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 66,108,117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +168,146, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 1, 4, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,145, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,146, 90, 3, 0, 0, 0, 0, + 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,148, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,148, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,148, 90, 3, 0, 0, 0, 0, + 87, 1, 0, 0, 1, 0, 0, 0,184,152, 90, 3, 0, 0, 0, 0,184,144, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, 97,121, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0,168,150, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 8, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,149, 90, 3, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, +168,150, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, + 56,152, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,152, 90, 3, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, +184,152, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,156, 90, 3, 0, 0, 0, 0,184,148, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,154, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 3, 0, 68, 65, 84, 65, 16, 1, 0, 0, + 32,153, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 64, 1, 0, 0,168,154, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, + 14,215,126,191, 46,189,194, 61, 56,156, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, + 56,156, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 0, 0,168, 1, 0, 0,184,156, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,160, 90, 3, 0, 0, 0, 0, +184,152, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, + 0, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,158, 90, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 6, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 32,157, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,158, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,160, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 56,160, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,160, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, +184,164, 90, 3, 0, 0, 0, 0,184,156, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +168,162, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 1, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,161, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,162, 90, 3, 0, 0, 0, 0, + 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,164, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,164, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,164, 90, 3, 0, 0, 0, 0, + 87, 1, 0, 0, 1, 0, 0, 0,184,168, 90, 3, 0, 0, 0, 0,184,160, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,108, 97,116,116,101,110, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0,168,166, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 7, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,165, 90, 3, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, +168,166, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, + 56,168, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,168, 90, 3, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, +184,168, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,172, 90, 3, 0, 0, 0, 0,184,164, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, 97, 98, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,170, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 5, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, + 32,169, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 64, 1, 0, 0,168,170, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, + 14,215,126,191, 46,189,194, 61, 56,172, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, + 56,172, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 0, 0,168, 1, 0, 0,184,172, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,176, 90, 3, 0, 0, 0, 0, +184,168, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 73,110,102,108, 97,116, +101, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,174, 90, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 4, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 32,173, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,174, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,176, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 56,176, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,176, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, +184,180, 90, 3, 0, 0, 0, 0,184,172, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +168,178, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 6, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,177, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,178, 90, 3, 0, 0, 0, 0, + 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,180, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,180, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,180, 90, 3, 0, 0, 0, 0, + 87, 1, 0, 0, 1, 0, 0, 0,184,184, 90, 3, 0, 0, 0, 0,184,176, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105,103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0,168,182, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 5, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,181, 90, 3, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, +168,182, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, + 56,184, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,184, 90, 3, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, +184,184, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,188, 90, 3, 0, 0, 0, 0,184,180, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,186, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, + 32,185, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 64, 1, 0, 0,168,186, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, + 14,215,126,191, 46,189,194, 61, 56,188, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, + 56,188, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 0, 0,168, 1, 0, 0,184,188, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,192, 90, 3, 0, 0, 0, 0, +184,184, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117,108,116,105,112, +108,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,190, 90, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 3, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 32,189, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,190, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,192, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 56,192, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,192, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, +184,196, 90, 3, 0, 0, 0, 0,184,188, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 80,105,110, 99,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +168,194, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 3, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,193, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,194, 90, 3, 0, 0, 0, 0, + 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,196, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,196, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,196, 90, 3, 0, 0, 0, 0, + 87, 1, 0, 0, 1, 0, 0, 0,184,200, 90, 3, 0, 0, 0, 0,184,192, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0,168,198, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 2, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,197, 90, 3, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, +168,198, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, + 56,200, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,200, 90, 3, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, +184,200, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,204, 90, 3, 0, 0, 0, 0,184,196, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, 0, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,202, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 2, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, + 32,201, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 64, 1, 0, 0,168,202, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, + 14,215,126,191, 46,189,194, 61, 56,204, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, + 56,204, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 0, 0,168, 1, 0, 0,184,204, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,208, 90, 3, 0, 0, 0, 0, +184,200, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, + 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,206, 90, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 1, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 32,205, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,206, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,208, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 56,208, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,208, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,184,204, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 83,117, 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +168,210, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 1, 2, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,209, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,210, 90, 3, 0, 0, 0, 0, + 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,212, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,212, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 85, 83, 69, 82, 8, 13, 0, 0, 96,119,163, 2, 0, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 33, 8, 17, 1, 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85,115,101,114,115, 47,116,111,110, + 47, 68,101,115,107,116,111,112, 47, 0, 45,112,111,119,101,114,112, 99, 47, 98,105,110, 47, 98,108,101,110,100,101,114, 46, 97, +112,112, 47, 67,111,110,116,101,110,116,115, 47, 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 2, 0, 94, 1, + 8, 0, 0, 0, 3, 0, 0, 0, 56, 52, 39, 1, 0, 0, 0, 0, 2, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0, 68,172, 0, 0, + 36, 0, 0, 0, 2, 0, 0, 0,128, 0, 0, 0, 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0, 8,226, 90, 3, 0, 0, 0, 0, + 8,226, 90, 3, 0, 0, 0, 0,120,107, 94, 3, 0, 0, 0, 0,120,107, 94, 3, 0, 0, 0, 0,152,219, 94, 3, 0, 0, 0, 0, +152,219, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 2, 0, 25, 0, 1, 0, 20, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0, +205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 30, 90,100,191,154,153,153, 62,102,102,102, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31,250,254, 62, 9, 0, 0, 63, +156,153, 25, 63, 0, 0, 0, 0,205,204, 76, 62,205,204, 76, 62,205,204, 76, 62, 0, 0,128, 63, 44,135, 22, 63, 32,133,235, 62, +184,243,125, 62, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,195, 73, 76, 63, 42,135, 86, 63, 0, 0,128, 63, 0, 0, 0, 0, + 1, 43,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 16, 47, 93, 62, 58,180,200,190, 24, 47, 93,190, 0, 0, 0, 0, + 14, 0, 0, 0, 25, 0, 15, 0,120, 0, 60, 0, 3, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0,144, 31, 15, 0, 6, 0, 25, 0, + 8, 0, 10, 0,200, 0, 0, 0,100, 0,100, 0, 0, 0, 0, 0, 2, 0, 1, 0, 10, 0, 50, 0,200, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 29, 0, 0, 8,226, 90, 3, 0, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,101,102, 97,117,108,116, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255, +100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255, +100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255, +153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, + 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 70, 70, 70,255, + 70, 70, 70,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255, +100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255, +153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255, +153,153,153,255,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, + 70, 70, 70,255,255,255,255,255,255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 63, 63, 63,255, + 86,128,194,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 25, 25, 25,230, + 45, 45, 45,230,100,100,100,255,160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, + 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, 25, 25, 25,255,128,128,128,255, +100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50,180, 80, 80, 80,180, +100,100,100,180,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255,190,190,190,255, +100,100,100,180, 68, 68, 68,255, 0, 0, 0,255,255,255,255,255, 0, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, + 86,128,194,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,115,190, 76,255, 90,166, 51,255, +240,235,100,255,215,211, 75,255,180, 0,255,255,153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255,204, 0,153,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255,255,255,255,255, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 76, 76,255, 0, 0, 0, 0, +250,250,250,255, 15, 15, 15,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100,255,140, 25,255,250,250,250,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,130,130,130,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,250,250,250,255,250,250,250,255,250,250,250,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255, +124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255, +124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,109, 88,129,255, + 78,152, 62,255, 46,143,143,255,169, 84,124,255,126,126, 80,255,162, 95,111,255,109,145,131,255,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0,255,255,255, 10,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255,110,110,110,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,132,132,132,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255, 94, 94, 94,255,172,172,172,255, 17, 27, 60,100, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,195,195,195,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255, 64, 64, 64,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,100, 0, 0,255, + 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,255,255,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,155,155,155,160,100,100,100,255,108,105,111,255, +104,106,117,255,105,117,110,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,128,255,255,255,255,255,255, 0,170, 0,255, +220, 96, 96,255,220, 96, 96,255, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255, +247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255, +131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255, +240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255, +111,182,171,255, 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0,244,201, 12,255,238,194, 54,255, +243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0,111, 47,106,255,152, 69,190,255, +211, 48,214,255, 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0,141,141,141,255,176,176,176,255, +222,222,222,255, 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, + 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 68, 78, 65, 49,112,224, 0, 0,200,207,143, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69, +179, 11, 0, 0, 42,110,101,120,116, 0, 42,112,114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, 0, 42,108, 97, +115,116, 0,120, 0,121, 0,122, 0,119, 0,120,109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, 97,120, 0, 42, +112,111,105,110,116,101,114, 0,103,114,111,117,112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0,115,117, 98,116, +121,112,101, 0,102,108, 97,103, 0,110, 97,109,101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0,100, 97,116, 97, 0,108,101,110, + 0,116,111,116, 97,108,108,101,110, 0, 42,110,101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 50, 52, 93, 0,117, +115, 0,105, 99,111,110, 95,105,100, 0, 42,112,114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, 98,108,111, 99, +107, 0, 42,102,105,108,101,100, 97,116, 97, 0,110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,108,101,112, 97,116,104, 91, 50, + 52, 48, 93, 0,116,111,116, 0,112, 97,100, 0, 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, 93, 0, 99,104, + 97,110,103,101,100, 91, 50, 93, 0,112, 97,100, 48, 0,112, 97,100, 49, 0, 42,114,101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, + 98,108,111, 99,107,116,121,112,101, 0, 97,100,114, 99,111,100,101, 0,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, + 42, 98,101,122,116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, 99,116, 0,118, 97,114,116,121,112,101, 0,116,111,116,118, +101,114,116, 0,105,112,111, 0,101,120,116,114, 97,112, 0,114,116, 0, 98,105,116,109, 97,115,107, 0,115,108,105,100,101, 95, +109,105,110, 0,115,108,105,100,101, 95,109, 97,120, 0, 99,117,114,118, 97,108, 0, 42,100,114,105,118,101,114, 0, 99,117,114, +118,101, 0, 99,117,114, 0,115,104,111,119,107,101,121, 0,109,117,116,101,105,112,111, 0,112,111,115, 0,114,101,108, 97,116, +105,118,101, 0,116,111,116,101,108,101,109, 0,112, 97,100, 50, 0, 42,119,101,105,103,104,116,115, 0,118,103,114,111,117,112, + 91, 51, 50, 93, 0,115,108,105,100,101,114,109,105,110, 0,115,108,105,100,101,114,109, 97,120, 0, 42, 97,100,116, 0, 42,114, +101,102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, 0,101,108,101,109,115,105,122,101, 0, 98,108,111, 99,107, + 0, 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101,121, 0,115,108,117,114,112,104, 0, 42,108,105,110,101, 0, + 42,102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101,110,111, 0,115,116, 97,114,116, 0,101,110,100, 0,102,108, + 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, 0,112, 97,100, 91, 52, 93, 0, 42,110, 97,109,101, 0,110,108,105,110,101,115, + 0,108,105,110,101,115, 0, 42, 99,117,114,108, 0, 42,115,101,108,108, 0, 99,117,114, 99, 0,115,101,108, 99, 0,109, 97,114, +107,101,114,115, 0, 42,117,110,100,111, 95, 98,117,102, 0,117,110,100,111, 95,112,111,115, 0,117,110,100,111, 95,108,101,110, + 0, 42, 99,111,109,112,105,108,101,100, 0,109,116,105,109,101, 0,115,105,122,101, 0,115,101,101,107, 0,112, 97,115,115,101, +112, 97,114,116, 97,108,112,104, 97, 0, 99,108,105,112,115,116, 97, 0, 99,108,105,112,101,110,100, 0,108,101,110,115, 0,111, +114,116,104,111, 95,115, 99, 97,108,101, 0,100,114, 97,119,115,105,122,101, 0,115,104,105,102,116,120, 0,115,104,105,102,116, +121, 0, 89, 70, 95,100,111,102,100,105,115,116, 0, 42,100,111,102, 95,111, 98, 0,102,114, 97,109,101,110,114, 0,102,114, 97, +109,101,115, 0,111,102,102,115,101,116, 0,115,102,114, 97, 0,102,105,101, 95,105,109, 97, 0, 99,121, 99,108, 0,111,107, 0, +109,117,108,116,105, 95,105,110,100,101,120, 0,108, 97,121,101,114, 0,112, 97,115,115, 0,109,101,110,117,110,114, 0, 42,115, + 99,101,110,101, 0,105, 98,117,102,115, 0, 42,103,112,117,116,101,120,116,117,114,101, 0, 42, 97,110,105,109, 0, 42,114,114, + 0, 42,114,101,110,100,101,114,115, 91, 56, 93, 0,114,101,110,100,101,114, 95,115,108,111,116, 0,108, 97,115,116, 95,114,101, +110,100,101,114, 95,115,108,111,116, 0,115,111,117,114, 99,101, 0,108, 97,115,116,102,114, 97,109,101, 0,116,112, 97,103,101, +102,108, 97,103, 0,116,111,116, 98,105,110,100, 0,120,114,101,112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119,101, +110,100, 0, 98,105,110,100, 99,111,100,101, 0, 42,114,101,112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108,101, + 0, 42,112,114,101,118,105,101,119, 0,108, 97,115,116,117,112,100, 97,116,101, 0,108, 97,115,116,117,115,101,100, 0, 97,110, +105,109,115,112,101,101,100, 0,103,101,110, 95,120, 0,103,101,110, 95,121, 0,103,101,110, 95,116,121,112,101, 0, 97,115,112, +120, 0, 97,115,112,121, 0,116,101,120, 99,111, 0,109, 97,112,116,111, 0,109, 97,112,116,111,110,101,103, 0, 98,108,101,110, +100,116,121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116,101,120, 0,117,118,110, 97,109,101, 91, 51, 50, 93, 0,112,114, +111,106,120, 0,112,114,111,106,121, 0,112,114,111,106,122, 0,109, 97,112,112,105,110,103, 0,111,102,115, 91, 51, 93, 0,115, +105,122,101, 91, 51, 93, 0,114,111,116, 0,116,101,120,102,108, 97,103, 0, 99,111,108,111,114,109,111,100,101,108, 0,112,109, + 97,112,116,111, 0,112,109, 97,112,116,111,110,101,103, 0,110,111,114,109, 97,112,115,112, 97, 99,101, 0,119,104,105, 99,104, + 95,111,117,116,112,117,116, 0, 98,114,117,115,104, 95,109, 97,112, 95,109,111,100,101, 0,112, 97,100, 91, 55, 93, 0,114, 0, +103, 0, 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111,108,102, 97, 99, 0,118, 97,114,102, 97, 99, 0,110,111,114,102, + 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, 0, 99,111,108,115,112,101, 99,102, 97, 99, 0,109,105, +114,114,102, 97, 99, 0, 97,108,112,104, 97,102, 97, 99, 0,100,105,102,102,102, 97, 99, 0,115,112,101, 99,102, 97, 99, 0,101, +109,105,116,102, 97, 99, 0,104, 97,114,100,102, 97, 99, 0,114, 97,121,109,105,114,114,102, 97, 99, 0,116,114, 97,110,115,108, +102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99,111,108,101,109,105,116,102, 97, 99, 0, 99,111,108,114,101,102,108,102, 97, 99, + 0, 99,111,108,116,114, 97,110,115,102, 97, 99, 0,100,101,110,115,102, 97, 99, 0,115, 99, 97,116,116,101,114,102, 97, 99, 0, +114,101,102,108,102, 97, 99, 0,116,105,109,101,102, 97, 99, 0,108,101,110,103,116,104,102, 97, 99, 0, 99,108,117,109,112,102, + 97, 99, 0,107,105,110,107,102, 97, 99, 0,114,111,117,103,104,102, 97, 99, 0,112, 97,100,101,110,115,102, 97, 99, 0,108,105, +102,101,102, 97, 99, 0,115,105,122,101,102, 97, 99, 0,105,118,101,108,102, 97, 99, 0,112,118,101,108,102, 97, 99, 0,115,104, + 97,100,111,119,102, 97, 99, 0,122,101,110,117,112,102, 97, 99, 0,122,101,110,100,111,119,110,102, 97, 99, 0, 98,108,101,110, +100,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0, 42,104, 97,110,100,108,101, 0, 42,112,110, 97,109,101, 0, 42,115, +116,110, 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97,114,115, 0, 42,118, 97,114,115,116,114, 0, 42,114,101,115,117, +108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, 93, 0, 40, 42,100,111,105,116, 41, 40, 41, 0, 40, 42,105,110, +115,116, 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, 42, 99, 97,108,108, 98, 97, 99,107, 41, 40, 41, 0,118,101,114, +115,105,111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42,105,109, 97, 0, 42, 99,117, 98,101, 91, 54, 93, 0,105,109, 97, +116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, 93, 91, 51, 93, 0,115,116,121,112,101, 0,118,105,101,119,115, + 99, 97,108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101,114,101,115, 0,100,101,112,116,104, 0,114,101, 99, 97,108, 99, + 0,108, 97,115,116,115,105,122,101, 0,102, 97,108,108,111,102,102, 95,116,121,112,101, 0,102, 97,108,108,111,102,102, 95,115, +111,102,116,110,101,115,115, 0,114, 97,100,105,117,115, 0, 99,111,108,111,114, 95,115,111,117,114, 99,101, 0,116,111,116,112, +111,105,110,116,115, 0,112,100,112, 97,100, 0,112,115,121,115, 0,112,115,121,115, 95, 99, 97, 99,104,101, 95,115,112, 97, 99, +101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0, 42,112,111,105,110,116, 95,116,114,101,101, 0, 42,112,111, +105,110,116, 95,100, 97,116, 97, 0,110,111,105,115,101, 95,115,105,122,101, 0,110,111,105,115,101, 95,100,101,112,116,104, 0, +110,111,105,115,101, 95,105,110,102,108,117,101,110, 99,101, 0,110,111,105,115,101, 95, 98, 97,115,105,115, 0,112,100,112, 97, +100, 51, 91, 51, 93, 0,110,111,105,115,101, 95,102, 97, 99, 0,115,112,101,101,100, 95,115, 99, 97,108,101, 0, 42, 99,111, 98, + 97, 0,114,101,115,111,108, 91, 51, 93, 0,105,110,116,101,114,112, 95,116,121,112,101, 0,102,105,108,101, 95,102,111,114,109, + 97,116, 0,101,120,116,101,110,100, 0,115,109,111,107,101,100, 95,116,121,112,101, 0,105,110,116, 95,109,117,108,116,105,112, +108,105,101,114, 0,115,116,105,108,108, 95,102,114, 97,109,101, 0,115,111,117,114, 99,101, 95,112, 97,116,104, 91, 50, 52, 48, + 93, 0, 42,100, 97,116, 97,115,101,116, 0, 99, 97, 99,104,101,100,102,114, 97,109,101, 0,110,111,105,115,101,115,105,122,101, + 0,116,117,114, 98,117,108, 0, 98,114,105,103,104,116, 0, 99,111,110,116,114, 97,115,116, 0,115, 97,116,117,114, 97,116,105, +111,110, 0,114,102, 97, 99, 0,103,102, 97, 99, 0, 98,102, 97, 99, 0,102,105,108,116,101,114,115,105,122,101, 0,109,103, 95, + 72, 0,109,103, 95,108, 97, 99,117,110, 97,114,105,116,121, 0,109,103, 95,111, 99,116, 97,118,101,115, 0,109,103, 95,111,102, +102,115,101,116, 0,109,103, 95,103, 97,105,110, 0,100,105,115,116, 95, 97,109,111,117,110,116, 0,110,115, 95,111,117,116,115, + 99, 97,108,101, 0,118,110, 95,119, 49, 0,118,110, 95,119, 50, 0,118,110, 95,119, 51, 0,118,110, 95,119, 52, 0,118,110, 95, +109,101,120,112, 0,118,110, 95,100,105,115,116,109, 0,118,110, 95, 99,111,108,116,121,112,101, 0,110,111,105,115,101,100,101, +112,116,104, 0,110,111,105,115,101,116,121,112,101, 0,110,111,105,115,101, 98, 97,115,105,115, 0,110,111,105,115,101, 98, 97, +115,105,115, 50, 0,105,109, 97,102,108, 97,103, 0, 99,114,111,112,120,109,105,110, 0, 99,114,111,112,121,109,105,110, 0, 99, +114,111,112,120,109, 97,120, 0, 99,114,111,112,121,109, 97,120, 0,116,101,120,102,105,108,116,101,114, 0, 97,102,109, 97,120, + 0,120,114,101,112,101, 97,116, 0,121,114,101,112,101, 97,116, 0, 99,104,101, 99,107,101,114,100,105,115,116, 0,110, 97, 98, +108, 97, 0,105,117,115,101,114, 0, 42,110,111,100,101,116,114,101,101, 0, 42,112,108,117,103,105,110, 0, 42,101,110,118, 0, + 42,112,100, 0, 42,118,100, 0,117,115,101, 95,110,111,100,101,115, 0,108,111, 99, 91, 51, 93, 0,114,111,116, 91, 51, 93, 0, +109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105,110, 91, 51, 93, 0,109, 97,120, 91, 51, 93, 0,109,111,100,101, 0,116,111,116, +101,120, 0,115,104,100,119,114, 0,115,104,100,119,103, 0,115,104,100,119, 98, 0,115,104,100,119,112, 97,100, 0,101,110,101, +114,103,121, 0,100,105,115,116, 0,115,112,111,116,115,105,122,101, 0,115,112,111,116, 98,108,101,110,100, 0,104, 97,105,110, +116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, 42, 99,117,114,102, 97,108,108,111,102,102, 0,115,104, 97,100,115,112,111,116, +115,105,122,101, 0, 98,105, 97,115, 0,115,111,102,116, 0, 99,111,109,112,114,101,115,115,116,104,114,101,115,104, 0,112, 97, +100, 53, 91, 51, 93, 0, 98,117,102,115,105,122,101, 0,115, 97,109,112, 0, 98,117,102,102,101,114,115, 0,102,105,108,116,101, +114,116,121,112,101, 0, 98,117,102,102,108, 97,103, 0, 98,117,102,116,121,112,101, 0,114, 97,121, 95,115, 97,109,112, 0,114, + 97,121, 95,115, 97,109,112,121, 0,114, 97,121, 95,115, 97,109,112,122, 0,114, 97,121, 95,115, 97,109,112, 95,116,121,112,101, + 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, 97,114,101, 97, 95,115,105,122,101, 0, 97,114,101, 97, 95,115,105,122,101,121, + 0, 97,114,101, 97, 95,115,105,122,101,122, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0,114, 97,121, 95,115, 97,109, +112, 95,109,101,116,104,111,100, 0,116,101,120, 97, 99,116, 0,115,104, 97,100,104, 97,108,111,115,116,101,112, 0,115,117,110, + 95,101,102,102,101, 99,116, 95,116,121,112,101, 0,115,107,121, 98,108,101,110,100,116,121,112,101, 0,104,111,114,105,122,111, +110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,112,114,101, 97,100, 0,115,117,110, 95, 98,114,105,103,104,116,110,101, +115,115, 0,115,117,110, 95,115,105,122,101, 0, 98, 97, 99,107,115, 99, 97,116,116,101,114,101,100, 95,108,105,103,104,116, 0, +115,117,110, 95,105,110,116,101,110,115,105,116,121, 0, 97,116,109, 95,116,117,114, 98,105,100,105,116,121, 0, 97,116,109, 95, +105,110,115, 99, 97,116,116,101,114,105,110,103, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,101,120,116,105,110, 99,116,105, +111,110, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,100,105,115,116, 97,110, 99,101, 95,102, 97, 99,116,111,114, 0,115,107, +121, 98,108,101,110,100,102, 97, 99, 0,115,107,121, 95,101,120,112,111,115,117,114,101, 0,115,107,121, 95, 99,111,108,111,114, +115,112, 97, 99,101, 0,112, 97,100, 52, 91, 54, 93, 0, 42,109,116,101,120, 91, 49, 56, 93, 0,112,114, 95,116,101,120,116,117, +114,101, 0,112, 97,100, 54, 91, 54, 93, 0,100,101,110,115,105,116,121, 0,101,109,105,115,115,105,111,110, 0,115, 99, 97,116, +116,101,114,105,110,103, 0,114,101,102,108,101, 99,116,105,111,110, 0,101,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, + 93, 0,116,114, 97,110,115,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,114,101,102,108,101, 99,116,105,111,110, + 95, 99,111,108, 91, 51, 93, 0,100,101,110,115,105,116,121, 95,115, 99, 97,108,101, 0,100,101,112,116,104, 95, 99,117,116,111, +102,102, 0, 97,115,121,109,109,101,116,114,121, 0,115,116,101,112,115,105,122,101, 95,116,121,112,101, 0,115,104, 97,100,101, +102,108, 97,103, 0,115,104, 97,100,101, 95,116,121,112,101, 0,112,114,101, 99, 97, 99,104,101, 95,114,101,115,111,108,117,116, +105,111,110, 0,115,116,101,112,115,105,122,101, 0,109,115, 95,100,105,102,102, 0,109,115, 95,105,110,116,101,110,115,105,116, +121, 0,109,115, 95,115,112,114,101, 97,100, 0,109, 97,116,101,114,105, 97,108, 95,116,121,112,101, 0,115,112,101, 99,114, 0, +115,112,101, 99,103, 0,115,112,101, 99, 98, 0,109,105,114,114, 0,109,105,114,103, 0,109,105,114, 98, 0, 97,109, 98,114, 0, + 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, 98, 0,101,109,105,116, 0, 97,110,103, 0,115,112,101, 99,116,114, 97, 0,114, + 97,121, 95,109,105,114,114,111,114, 0, 97,108,112,104, 97, 0,114,101,102, 0,115,112,101, 99, 0,122,111,102,102,115, 0, 97, +100,100, 0,116,114, 97,110,115,108,117, 99,101,110, 99,121, 0,118,111,108, 0,102,114,101,115,110,101,108, 95,109,105,114, 0, +102,114,101,115,110,101,108, 95,109,105,114, 95,105, 0,102,114,101,115,110,101,108, 95,116,114, 97, 0,102,114,101,115,110,101, +108, 95,116,114, 97, 95,105, 0,102,105,108,116,101,114, 0,116,120, 95,108,105,109,105,116, 0,116,120, 95,102, 97,108,108,111, +102,102, 0,114, 97,121, 95,100,101,112,116,104, 0,114, 97,121, 95,100,101,112,116,104, 95,116,114, 97, 0,104, 97,114, 0,115, +101,101,100, 49, 0,115,101,101,100, 50, 0,103,108,111,115,115, 95,109,105,114, 0,103,108,111,115,115, 95,116,114, 97, 0,115, + 97,109,112, 95,103,108,111,115,115, 95,109,105,114, 0,115, 97,109,112, 95,103,108,111,115,115, 95,116,114, 97, 0, 97,100, 97, +112,116, 95,116,104,114,101,115,104, 95,109,105,114, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,116,114, 97, 0, 97, +110,105,115,111, 95,103,108,111,115,115, 95,109,105,114, 0,100,105,115,116, 95,109,105,114, 0,102, 97,100,101,116,111, 95,109, +105,114, 0,115,104, 97,100,101, 95,102,108, 97,103, 0,109,111,100,101, 95,108, 0,102,108, 97,114,101, 99, 0,115,116, 97,114, + 99, 0,108,105,110,101, 99, 0,114,105,110,103, 99, 0,104, 97,115,105,122,101, 0,102,108, 97,114,101,115,105,122,101, 0,115, +117, 98,115,105,122,101, 0,102,108, 97,114,101, 98,111,111,115,116, 0,115,116,114, 97,110,100, 95,115,116, 97, 0,115,116,114, + 97,110,100, 95,101,110,100, 0,115,116,114, 97,110,100, 95,101, 97,115,101, 0,115,116,114, 97,110,100, 95,115,117,114,102,110, +111,114, 0,115,116,114, 97,110,100, 95,109,105,110, 0,115,116,114, 97,110,100, 95,119,105,100,116,104,102, 97,100,101, 0,115, +116,114, 97,110,100, 95,117,118,110, 97,109,101, 91, 51, 50, 93, 0,115, 98,105, 97,115, 0,108, 98,105, 97,115, 0,115,104, 97, +100, 95, 97,108,112,104, 97, 0,115,101,112,116,101,120, 0,114,103, 98,115,101,108, 0,112,114, 95,116,121,112,101, 0,112,114, + 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109,112, 0,109,108, 95,102,108, 97,103, 0,100,105,102,102, 95,115,104, 97,100,101, +114, 0,115,112,101, 99, 95,115,104, 97,100,101,114, 0,114,111,117,103,104,110,101,115,115, 0,114,101,102,114, 97, 99, 0,112, + 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0,100, 97,114,107,110,101,115,115, 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42, +114, 97,109,112, 95,115,112,101, 99, 0,114, 97,109,112,105,110, 95, 99,111,108, 0,114, 97,109,112,105,110, 95,115,112,101, 99, + 0,114, 97,109,112, 98,108,101,110,100, 95, 99,111,108, 0,114, 97,109,112, 98,108,101,110,100, 95,115,112,101, 99, 0,114, 97, +109,112, 95,115,104,111,119, 0,112, 97,100, 51, 0,114, 97,109,112,102, 97, 99, 95, 99,111,108, 0,114, 97,109,112,102, 97, 99, + 95,115,112,101, 99, 0, 42,103,114,111,117,112, 0,102,114,105, 99,116,105,111,110, 0,102,104, 0,114,101,102,108,101, 99,116, + 0,102,104,100,105,115,116, 0,120,121,102,114,105, 99,116, 0,100,121,110, 97,109,111,100,101, 0,115,115,115, 95,114, 97,100, +105,117,115, 91, 51, 93, 0,115,115,115, 95, 99,111,108, 91, 51, 93, 0,115,115,115, 95,101,114,114,111,114, 0,115,115,115, 95, +115, 99, 97,108,101, 0,115,115,115, 95,105,111,114, 0,115,115,115, 95, 99,111,108,102, 97, 99, 0,115,115,115, 95,116,101,120, +102, 97, 99, 0,115,115,115, 95,102,114,111,110,116, 0,115,115,115, 95, 98, 97, 99,107, 0,115,115,115, 95,102,108, 97,103, 0, +115,115,115, 95,112,114,101,115,101,116, 0,109, 97,112,116,111, 95,116,101,120,116,117,114,101,100, 0,112, 97,100, 52, 0,103, +112,117,109, 97,116,101,114,105, 97,108, 0,110, 97,109,101, 91, 50, 53, 54, 93, 0, 42, 98, 98, 0,105, 49, 0,106, 49, 0,107, + 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115,101,108, 99,111,108, 49, 0,115,101,108, 99,111,108, 50, 0,113,117, 97,116, 91, + 52, 93, 0,101,120,112,120, 0,101,120,112,121, 0,101,120,112,122, 0,114, 97,100, 0,114, 97,100, 50, 0,115, 0, 42,109, 97, +116, 0, 42,105,109, 97,116, 0,101,108,101,109,115, 0,100,105,115,112, 0, 42,101,100,105,116,101,108,101,109,115, 0, 42, 42, +109, 97,116, 0,102,108, 97,103, 50, 0,116,111,116, 99,111,108, 0,119,105,114,101,115,105,122,101, 0,114,101,110,100,101,114, +115,105,122,101, 0,116,104,114,101,115,104, 0, 42,108, 97,115,116,101,108,101,109, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, + 97,108,102, 97, 0,119,101,105,103,104,116, 0,104, 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104,105,100,101, 0, +118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110,114, 0,112,110,116,115,117, 0,112,110,116,115,118, 0,114,101,115,111,108,117, + 0,114,101,115,111,108,118, 0,111,114,100,101,114,117, 0,111,114,100,101,114,118, 0,102,108, 97,103,117, 0,102,108, 97,103, +118, 0, 42,107,110,111,116,115,117, 0, 42,107,110,111,116,115,118, 0,116,105,108,116, 95,105,110,116,101,114,112, 0,114, 97, +100,105,117,115, 95,105,110,116,101,114,112, 0, 99,104, 97,114,105,100,120, 0,107,101,114,110, 0,104, 0,110,117,114, 98, 0, + 42,101,100,105,116,110,117,114, 98, 0, 42, 98,101,118,111, 98,106, 0, 42,116, 97,112,101,114,111, 98,106, 0, 42,116,101,120, +116,111,110, 99,117,114,118,101, 0, 42,112, 97,116,104, 0, 42,107,101,121, 0, 98,101,118, 0,100,114, 97,119,102,108, 97,103, + 0,116,119,105,115,116, 95,109,111,100,101, 0,112, 97,100, 91, 50, 93, 0,116,119,105,115,116, 95,115,109,111,111,116,104, 0, +112, 97,116,104,108,101,110, 0, 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0,101,120,116, 50, + 0,114,101,115,111,108,117, 95,114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117, 0, 42,108, 97, +115,116,115,101,108, 0,115,112, 97, 99,101,109,111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101,100,105,115,116, + 0,115,104,101, 97,114, 0,102,115,105,122,101, 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, 0,117,108,104, +101,105,103,104,116, 0,120,111,102, 0,121,111,102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, 0, 42,115,101, +108, 98,111,120,101,115, 0, 42,101,100,105,116,102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, 42,118,102,111, +110,116, 0, 42,118,102,111,110,116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0,115,101,112, 99, +104, 97,114, 0, 99,116,105,109,101, 0,116,111,116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0,115,101,108,115, +116, 97,114,116, 0,115,101,108,101,110,100, 0, 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, 0,101,102,102, +101, 99,116, 0, 42,109,102, 97, 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109,118,101,114,116, + 0, 42,109,101,100,103,101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107,121, 0, 42,116, +101,120, 99,111,109,101,115,104, 0, 42,109,115,101,108,101, 99,116, 0, 42,101,100,105,116, 95,109,101,115,104, 0,118,100, 97, +116, 97, 0,101,100, 97,116, 97, 0,102,100, 97,116, 97, 0,116,111,116,101,100,103,101, 0,116,111,116,102, 97, 99,101, 0,116, +111,116,115,101,108,101, 99,116, 0, 97, 99,116, 95,102, 97, 99,101, 0,101,100,105,116,102,108, 97,103, 0, 99,117, 98,101,109, + 97,112,115,105,122,101, 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98,100,105,118,114, + 0,115,117, 98,115,117,114,102,116,121,112,101, 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,103,101, 0,117,118, 91, 52, + 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, 97,112, 0,118, + 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,119,101,105,103,104,116, + 0,100,101,102, 95,110,114, 0, 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0,110,111, 91, 51, + 93, 0,117,118, 91, 50, 93, 0, 99,111, 91, 50, 93, 0,105,110,100,101,120, 0,102, 0,105, 0,115, 91, 50, 53, 54, 93, 0,116, +111,116,100,105,115,112, 0, 40, 42,100,105,115,112,115, 41, 40, 41, 0,118, 91, 52, 93, 0,109,105,100, 0,118, 91, 50, 93, 0, + 42,102, 97, 99,101,115, 0, 42, 99,111,108,102, 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,118,101,114,116,115, 0,108, +101,118,101,108,115, 0,108,101,118,101,108, 95, 99,111,117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101,119,108,118,108, + 0,101,100,103,101,108,118,108, 0,112,105,110,108,118,108, 0,114,101,110,100,101,114,108,118,108, 0,117,115,101, 95, 99,111, +108, 0, 42,101,100,103,101, 95,102,108, 97,103,115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, 42,118,101,114, +116, 95,109, 97,112, 0, 42,101,100,103,101, 95,109, 97,112, 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42,111,108,100, 95, +101,100,103,101,115, 0,115,116, 97, 99,107,105,110,100,101,120, 0, 42,101,114,114,111,114, 0,109,111,100,105,102,105,101,114, + 0,115,117, 98,100,105,118, 84,121,112,101, 0,114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, 67, 97, 99,104, +101, 0, 42,109, 67, 97, 99,104,101, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,101,110,103,116,104, 0, +114, 97,110,100,111,109,105,122,101, 0,115,101,101,100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116, 97,114,116, 95, 99, 97, +112, 0, 42,101,110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, 95,111, 98, 0, +111,102,102,115,101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115,116, 0,102,105, +116, 95,116,121,112,101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105,115, 0,116,111, +108,101,114, 97,110, 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103,108,101, 0,118, + 97,108,117,101, 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, 0,101, 95,102, +108, 97,103,115, 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, 91, 51, 50, 93, + 0, 42,100,111,109, 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,116,105,109,101, 0, 42,116,101,120,116,117, +114,101, 0,115,116,114,101,110,103,116,104, 0,100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118,101,108, 0,116, +101,120,109, 97,112,112,105,110,103, 0, 42,109, 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101,114, 95,110, 97, +109,101, 91, 51, 50, 93, 0,117,118,108, 97,121,101,114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,116,111,114,115, 91, 49, + 48, 93, 0, 42,105,109, 97,103,101, 0,110,117,109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112,101, 99,116,120, + 0, 97,115,112,101, 99,116,121, 0,115, 99, 97,108,101,120, 0,115, 99, 97,108,101,121, 0,112,101,114, 99,101,110,116, 0,102, + 97, 99,101, 67,111,117,110,116, 0,102, 97, 99, 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99,101,110,116,101, +114, 0,115,116, 97,114,116,120, 0,115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111,119, 0,115,112, +101,101,100, 0,100, 97,109,112, 0,102, 97,108,108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105,102,101,116,105, +109,101, 0,100,101,102,111,114,109,102,108, 97,103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, 0,115,117, 98, +116, 97,114,103,101,116, 91, 51, 50, 93, 0,112, 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116, 91, + 51, 93, 0, 42,105,110,100,101,120, 97,114, 0,116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, 99,108,111,116, +104, 79, 98,106,101, 99,116, 0, 42,115,105,109, 95,112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114,109,115, 0, 42, +112,111,105,110,116, 95, 99, 97, 99,104,101, 0,112,116, 99, 97, 99,104,101,115, 0, 42,120, 0, 42,120,110,101,119, 0, 42,120, +111,108,100, 0, 42, 99,117,114,114,101,110,116, 95,120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, 0, 42, 99,117, +114,114,101,110,116, 95,118, 0, 42,109,102, 97, 99,101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109,102, 97, 99,101, +115, 0, 42, 98,118,104,116,114,101,101, 0, 42,118, 0, 42,100,109, 0, 99,102,114, 97, 0,111,112,101,114, 97,116,105,111,110, + 0,118,101,114,116,101,120, 0,116,111,116,105,110,102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,122,101, 0, 42, 98, +105,110,100,105,110,102,108,117,101,110, 99,101,115, 0, 42, 98,105,110,100,111,102,102,115,101,116,115, 0, 42, 98,105,110,100, + 99, 97,103,101, 99,111,115, 0,116,111,116, 99, 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,100, 0, 42,100,121, +110,105,110,102,108,117,101,110, 99,101,115, 0, 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0,100,121,110,103, +114,105,100,115,105,122,101, 0,100,121,110, 99,101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108,108,119,105,100, +116,104, 0, 98,105,110,100,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42, 98,105,110,100,119,101,105,103,104,116,115, 0, 42, 98, +105,110,100, 99,111,115, 0, 40, 42, 98,105,110,100,102,117,110, 99, 41, 40, 41, 0, 42,112,115,121,115, 0,116,111,116,100,109, +118,101,114,116, 0,116,111,116,100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,111,115,105,116,105,111, +110, 0,114, 97,110,100,111,109, 95,112,111,115,105,116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103,114,111,117,112, + 0,112,114,111,116,101, 99,116, 0,108,118,108, 0,115, 99,117,108,112,116,108,118,108, 0,116,111,116,108,118,108, 0,115,105, +109,112,108,101, 0, 42,102,115,115, 0, 42,116, 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, 0,118,103,114, +111,117,112, 95,110, 97,109,101, 91, 51, 50, 93, 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, 84,121,112,101, + 0,115,104,114,105,110,107, 79,112,116,115, 0,112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, 76,101,118,101, +108,115, 0, 42,111,114,105,103,105,110, 0,102, 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111,114,105,103,105, +110, 79,112,116,115, 0,111,102,102,115,101,116, 95,102, 97, 99, 0, 99,114,101, 97,115,101, 95,105,110,110,101,114, 0, 99,114, +101, 97,115,101, 95,111,117,116,101,114, 0, 99,114,101, 97,115,101, 95,114,105,109, 0, 42,111, 98, 95, 97,120,105,115, 0,115, +116,101,112,115, 0,114,101,110,100,101,114, 95,115,116,101,112,115, 0,105,116,101,114, 0,115, 99,114,101,119, 95,111,102,115, + 0, 97,110,103,108,101, 0,112,110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111,112,110,116,115, +119, 0,116,121,112,101,117, 0,116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, 0,100,117, 0, +100,118, 0,100,119, 0, 42,100,101,102, 0, 42,108, 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, 97,116, 91, 52, + 93, 91, 52, 93, 0, 42,101,100,105,116,108, 97,116,116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99,117,108,112,116, + 0,112, 97,114,116,121,112,101, 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115,117, 98,115,116, +114, 91, 51, 50, 93, 0, 42,116,114, 97, 99,107, 0, 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103,114,111,117,112, + 0, 42,112,114,111,120,121, 95,102,114,111,109, 0, 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, 98, 0, 42,112, +111,115,101, 0, 42,103,112,100, 0, 97,118,115, 0, 42,109,112, 97,116,104, 0, 99,111,110,115,116,114, 97,105,110,116, 67,104, + 97,110,110,101,108,115, 0,100,101,102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115, 0,114,101,115,116,111,114,101, + 95,109,111,100,101, 0, 42,109, 97,116, 98,105,116,115, 0, 97, 99,116, 99,111,108, 0,100,108,111, 99, 91, 51, 93, 0,111,114, +105,103, 91, 51, 93, 0,100,115,105,122,101, 91, 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116, 91, 52, 93, 0, +114,111,116, 65,120,105,115, 91, 51, 93, 0,100,114,111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110,103,108,101, 0, +100,114,111,116, 65,110,103,108,101, 0,111, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105,110,118, 91, 52, + 93, 91, 52, 93, 0,108, 97,121, 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,112,114,111,116,101, + 99,116,102,108, 97,103, 0,116,114, 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102,108, 97,103, 0, +105,112,111,102,108, 97,103, 0,105,112,111,119,105,110, 0,115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105,115,102,108, 97, +103, 0, 98,111,117,110,100,116,121,112,101, 0,100,117,112,111,110, 0,100,117,112,111,102,102, 0,100,117,112,115,116, 97, 0, +100,117,112,101,110,100, 0,115,102, 0,109, 97,115,115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116,105, 97, 0,102, +111,114,109,102, 97, 99,116,111,114, 0,114,100, 97,109,112,105,110,103, 0,109, 97,114,103,105,110, 0,109, 97,120, 95,118,101, +108, 0,109,105,110, 95,118,101,108, 0,109, 95, 99,111,110,116, 97, 99,116, 80,114,111, 99,101,115,115,105,110,103, 84,104,114, +101,115,104,111,108,100, 0,114,111,116,109,111,100,101, 0,100,116, 0,100,116,120, 0,101,109,112,116,121, 95,100,114, 97,119, +116,121,112,101, 0,112, 97,100, 49, 91, 51, 93, 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0,100,117,112,102, + 97, 99,101,115, 99, 97, 0,112,114,111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108,101,114,115, 0, + 97, 99,116,117, 97,116,111,114,115, 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, 97,109,101,102, +108, 97,103, 0,103, 97,109,101,102,108, 97,103, 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97,103, 0, 97,110, +105,115,111,116,114,111,112,105, 99, 70,114,105, 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97,105,110,116,115, + 0,110,108, 97,115,116,114,105,112,115, 0,104,111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115,116,101,109, 0, + 42,115,111,102,116, 0, 42,100,117,112, 95,103,114,111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97,103, 0,114,101, +115,116,114,105, 99,116,102,108, 97,103, 0,115,104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, 0,114,101, 99, + 97,108, 99,111, 0, 98,111,100,121, 95,116,121,112,101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, + 0, 42,100,101,114,105,118,101,100, 68,101,102,111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97,108, 0,108, 97, +115,116, 68, 97,116, 97, 77, 97,115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0,103,112,117,108, + 97,109,112, 0,112, 99, 95,105,100,115, 0, 42,100,117,112,108,105,108,105,115,116, 0, 99,117,114,105,110,100,101,120, 0, 97, + 99,116,105,118,101, 0,111,114,105,103,108, 97,121, 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116,101,100, 0,111, +109, 97,116, 91, 52, 93, 91, 52, 93, 0,111,114, 99,111, 91, 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111,114, 99,101,102, +105,101,108,100, 0,115,104, 97,112,101, 0,116,101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110,107, 95, 97,120, +105,115, 0,122,100,105,114, 0,102, 95,115,116,114,101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95,102,108,111,119, + 0,102, 95,115,105,122,101, 0,102, 95,112,111,119,101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100,105,115,116, 0, +102, 95,112,111,119,101,114, 95,114, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,100, 0,112,100,101,102, 95,100, 97,109, +112, 0,112,100,101,102, 95,114,100, 97,109,112, 0,112,100,101,102, 95,112,101,114,109, 0,112,100,101,102, 95,102,114,105, 99, +116, 0,112,100,101,102, 95,114,102,114,105, 99,116, 0,112,100,101,102, 95,115,116,105, 99,107,110,101,115,115, 0, 97, 98,115, +111,114,112,116,105,111,110, 0,112,100,101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105,102,116, 0,112, +100,101,102, 95,115, 98,111,102,116, 0, 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111,119, 0,107,105, +110,107, 95,102,114,101,113, 0,107,105,110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0,102,114,101,101, + 95,101,110,100, 0,116,101,120, 95,110, 97, 98,108, 97, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0,119,101,105,103, +104,116, 91, 49, 51, 93, 0,103,108,111, 98, 97,108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93, 0,102,114, 97,109, +101, 0,116,111,116,112,111,105,110,116, 0,100, 97,116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,120, 95, 97,114,114, + 97,121, 0, 42,100, 97,116, 97, 91, 56, 93, 0, 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, 0,115,105,109,102,114, 97,109, +101, 0,115,116, 97,114,116,102,114, 97,109,101, 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, 97,109,101, 0, +108, 97,115,116, 95,101,120, 97, 99,116, 0,110, 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,109,101, 91, 54, 52, + 93, 0,105,110,102,111, 91, 54, 52, 93, 0,112, 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97, 99,104,101, 0, 42, +101,100,105,116, 0, 40, 42,102,114,101,101, 95,101,100,105,116, 41, 40, 41, 0,108,105,110, 83,116,105,102,102, 0, 97,110,103, + 83,116,105,102,102, 0,118,111,108,117,109,101, 0,118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,116,101,114, 97,116, +105,111,110,115, 0,100,105,116,101,114, 97,116,105,111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,115, 0,107, 83, 82, + 72, 82, 95, 67, 76, 0,107, 83, 75, 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82, 95, 83, 80, 76, 84, + 95, 67, 76, 0,107, 83, 75, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 86, 67, 70, + 0,107, 68, 80, 0,107, 68, 71, 0,107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77, 84, 0,107, 67, 72, + 82, 0,107, 75, 72, 82, 0,107, 83, 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,108, 97,103,115, 0, +110,117,109, 99,108,117,115,116,101,114,105,116,101,114, 97,116,105,111,110,115, 0,119,101,108,100,105,110,103, 0,116,111,116, +115,112,114,105,110,103, 0, 42, 98,112,111,105,110,116, 0, 42, 98,115,112,114,105,110,103, 0,109,115,103, 95,108,111, 99,107, + 0,109,115,103, 95,118, 97,108,117,101, 0,110,111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71, 95, 77, 97,115,115, + 91, 51, 50, 93, 0,103,114, 97,118, 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, 0,112,104,121, +115,105, 99,115, 95,115,112,101,101,100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114,105, 99,116, 0, +109,105,110,103,111, 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116,103,114,111,117, +112, 0,110, 97,109,101,100, 86, 71, 95, 83,111,102,116,103,111, 97,108, 91, 51, 50, 93, 0,102,117,122,122,121,110,101,115,115, + 0,105,110,115,112,114,105,110,103, 0,105,110,102,114,105, 99,116, 0,110, 97,109,101,100, 86, 71, 95, 83,112,114,105,110,103, + 95, 75, 91, 51, 50, 93, 0,101,102,114, 97, 0,105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115,111,108,118,101, +114,102,108, 97,103,115, 0, 42, 42,107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, 99,111,110,100, +115,112,114,105,110,103, 0, 99,111,108, 98, 97,108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108,115,116,105,102, +102, 0,115, 98, 99, 95,109,111,100,101, 0, 97,101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, 0,109, 97,120, +108,111,111,112,115, 0, 99,104,111,107,101, 0,115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, 99, 0,115,112, +114,105,110,103,112,114,101,108,111, 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116,105,102,102, 0, +105,110,112,117,115,104, 0, 42,112,111,105,110,116, 99, 97, 99,104,101, 0, 42,101,102,102,101, 99,116,111,114, 95,119,101,105, +103,104,116,115, 0,108, 99,111,109, 91, 51, 93, 0,108,114,111,116, 91, 51, 93, 91, 51, 93, 0,108,115, 99, 97,108,101, 91, 51, + 93, 91, 51, 93, 0,112, 97,100, 52, 91, 52, 93, 0, 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,101,100,111, +112,116,105,111,110,115, 0,114,101,115,111,108,117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119,114,101,115,120, +121,122, 0,114,101, 97,108,115,105,122,101, 0,103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114,101,110,100,101, +114, 68,105,115,112,108, 97,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0,118,105,115, 99, +111,115,105,116,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0,103,114, 97,118, +120, 0,103,114, 97,118,121, 0,103,114, 97,118,122, 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, 69,110,100, 0, + 98, 97,107,101, 83,116, 97,114,116, 0, 98, 97,107,101, 69,110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82,101,102,105,110, +101, 0,105,110,105, 86,101,108,120, 0,105,110,105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111,114,103, 77,101, +115,104, 0, 42,109,101,115,104, 83,117,114,102, 97, 99,101, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102,100, 97,116, 97, + 80, 97,116,104, 91, 50, 52, 48, 93, 0, 98, 98, 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, 51, 93, 0,116, +121,112,101, 70,108, 97,103,115, 0,100,111,109, 97,105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117,109,101, 73,110, +105,116, 84,121,112,101, 0,112, 97,114,116, 83,108,105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116,101, 84,114, 97, + 99,101,114,115, 0,103,101,110,101,114, 97,116,101, 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, 99,101, 83,109, +111,111,116,104,105,110,103, 0,115,117,114,102, 97, 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, 99,108,101, 73, +110,102, 83,105,122,101, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70,105,101,108,100, + 83,105,122,101, 0, 42,109,101,115,104, 83,117,114,102, 78,111,114,109, 97,108,115, 0, 99,112,115, 84,105,109,101, 83,116, 97, +114,116, 0, 99,112,115, 84,105,109,101, 69,110,100, 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116,114, 97, 99,116, +102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97,100,105,117,115, + 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99,105,116,121,102, +111,114, 99,101, 82, 97,100,105,117,115, 0,108, 97,115,116,103,111,111,100,102,114, 97,109,101, 0,109,105,115,116,121,112,101, + 0,104,111,114,114, 0,104,111,114,103, 0,104,111,114, 98, 0,104,111,114,107, 0,122,101,110,114, 0,122,101,110,103, 0,122, +101,110, 98, 0,122,101,110,107, 0, 97,109, 98,107, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101, +120,112, 0,114, 97,110,103,101, 0,108,105,110,102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97, + 99,116,105,118,105,116,121, 66,111,120, 82, 97,100,105,117,115, 0,115,107,121,116,121,112,101, 0,111, 99, 99,108,117,115,105, +111,110, 82,101,115, 0,112,104,121,115,105, 99,115, 69,110,103,105,110,101, 0,116,105, 99,114, 97,116,101, 0,109, 97,120,108, +111,103,105, 99,115,116,101,112, 0,112,104,121,115,117, 98,115,116,101,112, 0,109, 97,120,112,104,121,115,116,101,112, 0,109, +105,115,105, 0,109,105,115,116,115,116, 97, 0,109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0,115,116, 97,114, +114, 0,115,116, 97,114,103, 0,115,116, 97,114, 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, 0,115,116, 97, +114,109,105,110,100,105,115,116, 0,115,116, 97,114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105,115,101, 0,100, +111,102,115,116, 97, 0,100,111,102,101,110,100, 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97,111,100,105,115, +116, 0, 97,111,100,105,115,116,102, 97, 99, 0, 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, 97,111,109,111, +100,101, 0, 97,111,115, 97,109,112, 0, 97,111,109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97,100, 97,112,116, + 95,116,104,114,101,115,104, 0, 97,111, 95, 97,100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97,111, 95, 97,112, +112,114,111,120, 95,101,114,114,111,114, 0, 97,111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116,105,111,110, 0, + 97,111, 95,105,110,100,105,114,101, 99,116, 95,101,110,101,114,103,121, 0, 97,111, 95,101,110,118, 95,101,110,101,114,103,121, + 0, 97,111, 95,112, 97,100, 50, 0, 97,111, 95,105,110,100,105,114,101, 99,116, 95, 98,111,117,110, 99,101,115, 0, 97,111, 95, +112, 97,100, 0, 97,111, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, 95,109,101,116, +104,111,100, 0, 97,111, 95, 97,112,112,114,111,120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101,114,101, 0, 42, + 97,111,116, 97, 98,108,101,115, 0,112, 97,100, 91, 51, 93, 0,115,101,108, 99,111,108, 0,115,120, 0,115,121, 0, 42,108,112, + 70,111,114,109, 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, 98, 70,111,114,109, 97,116, 0, 99, 98, 80, 97,114,109,115, + 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108,101,114, 0,100,119, 75,101,121, 70,114, 97,109,101, 69,118, +101,114,121, 0,100,119, 81,117, 97,108,105,116,121, 0,100,119, 66,121,116,101,115, 80,101,114, 83,101, 99,111,110,100, 0,100, +119, 70,108, 97,103,115, 0,100,119, 73,110,116,101,114,108,101, 97,118,101, 69,118,101,114,121, 0, 97,118,105, 99,111,100,101, + 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114,109,115, 0, 42,112, 97,100, 0, 99,100, 83,105,122,101, 0, +113,116, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 99,111,100,101, 99, 84,121,112,101, 0, 99,111,100,101, 99, + 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0, 99,111,100,101, 99, 0, 99,111,100,101, 99, 70,108, 97,103,115, 0, + 99,111,108,111,114, 68,101,112,116,104, 0, 99,111,100,101, 99, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0, +109,105,110, 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 84,101,109,112,111,114, 97,108, 81,117, 97, +108,105,116,121, 0,107,101,121, 70,114, 97,109,101, 82, 97,116,101, 0, 98,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 99, +111,100,101, 99, 84,121,112,101, 0, 97,117,100,105,111, 83, 97,109,112,108,101, 82, 97,116,101, 0, 97,117,100,105,111, 66,105, +116, 68,101,112,116,104, 0, 97,117,100,105,111, 67,104, 97,110,110,101,108,115, 0, 97,117,100,105,111, 67,111,100,101, 99, 70, +108, 97,103,115, 0, 97,117,100,105,111, 66,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 95, 99,111,100,101, 99, 0,118,105, +100,101,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, +109,105,120,114, 97,116,101, 0, 97,117,100,105,111, 95,118,111,108,117,109,101, 0,103,111,112, 95,115,105,122,101, 0,114, 99, + 95,109,105,110, 95,114, 97,116,101, 0,114, 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102,102,101,114, 95, +115,105,122,101, 0,109,117,120, 95,112, 97, 99,107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116,101, 0,109,105, +120,114, 97,116,101, 0,109, 97,105,110, 0,115,112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,111,112,112,108,101, +114, 95,102, 97, 99,116,111,114, 0,100,105,115,116, 97,110, 99,101, 95,109,111,100,101,108, 0, 42,109, 97,116, 95,111,118,101, +114,114,105,100,101, 0, 42,108,105,103,104,116, 95,111,118,101,114,114,105,100,101, 0,108, 97,121, 95,122,109, 97,115,107, 0, +108, 97,121,102,108, 97,103, 0,112, 97,115,115,102,108, 97,103, 0,112, 97,115,115, 95,120,111,114, 0, 42, 97,118,105, 99,111, +100,101, 99,100, 97,116, 97, 0, 42,113,116, 99,111,100,101, 99,100, 97,116, 97, 0,113,116, 99,111,100,101, 99,115,101,116,116, +105,110,103,115, 0,102,102, 99,111,100,101, 99,100, 97,116, 97, 0,115,117, 98,102,114, 97,109,101, 0,112,115,102,114, 97, 0, +112,101,102,114, 97, 0,105,109, 97,103,101,115, 0,102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97,100,115, 0,102,114, + 97,109,101,108,101,110, 0, 98,108,117,114,102, 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101,100,103,101, 66, + 0,102,117,108,108,115, 99,114,101,101,110, 0,120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113,112,108, 97,121, + 0, 97,116,116,114,105, 98, 0,114,116, 50, 0,102,114, 97,109,101, 95,115,116,101,112, 0,115,116,101,114,101,111,109,111,100, +101, 0,100,105,109,101,110,115,105,111,110,115,112,114,101,115,101,116, 0,109, 97,120,105,109,115,105,122,101, 0,120,115, 99, +104, 0,121,115, 99,104, 0,120,112, 97,114,116,115, 0,121,112, 97,114,116,115, 0,119,105,110,112,111,115, 0,112,108, 97,110, +101,115, 0,105,109,116,121,112,101, 0,115,117, 98,105,109,116,121,112,101, 0,113,117, 97,108,105,116,121, 0,100,105,115,112, +108, 97,121,109,111,100,101, 0,114,112, 97,100, 49, 0,114,112, 97,100, 50, 0,115, 99,101,109,111,100,101, 0,114, 97,121,116, +114, 97, 99,101, 95,111,112,116,105,111,110,115, 0,114, 97,121,116,114, 97, 99,101, 95,115,116,114,117, 99,116,117,114,101, 0, +114,101,110,100,101,114,101,114, 0,111, 99,114,101,115, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, 0,102,114,115, + 95,115,101, 99, 0,101,100,103,101,105,110,116, 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100,105,115,112,114, +101, 99,116, 0,108, 97,121,101,114,115, 0, 97, 99,116,108, 97,121, 0,109, 98,108,117,114, 95,115, 97,109,112,108,101,115, 0, +120, 97,115,112, 0,121, 97,115,112, 0,102,114,115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, 0, 99,111,108, +111,114, 95,109,103,116, 95,102,108, 97,103, 0,112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117,101, 0,112,111, +115,116,115, 97,116, 0,100,105,116,104,101,114, 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95,111,115, 97, 0, + 98, 97,107,101, 95,102,105,108,116,101,114, 0, 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102,108, 97,103, 0, + 98, 97,107,101, 95,110,111,114,109, 97,108, 95,115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95,115,112,108,105, +116, 0, 98, 97,107,101, 95,109, 97,120,100,105,115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, 0, 98, 97,107, +101, 95,112, 97,100, 0, 98, 97, 99,107, 98,117,102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0,115,116, 97,109, +112, 0,115,116, 97,109,112, 95,102,111,110,116, 95,105,100, 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, 49, 54, 48, 93, + 0,102,103, 95,115,116, 97,109,112, 91, 52, 93, 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, 0,115,101,113, 95,112,114,101, +118, 95,116,121,112,101, 0,115,101,113, 95,114,101,110,100, 95,116,121,112,101, 0,115,101,113, 95,102,108, 97,103, 0,112, 97, +100, 53, 91, 53, 93, 0,115,105,109,112,108,105,102,121, 95,102,108, 97,103, 0,115,105,109,112,108,105,102,121, 95,115,117, 98, +115,117,114,102, 0,115,105,109,112,108,105,102,121, 95,115,104, 97,100,111,119,115, 97,109,112,108,101,115, 0,115,105,109,112, +108,105,102,121, 95,112, 97,114,116,105, 99,108,101,115, 0,115,105,109,112,108,105,102,121, 95, 97,111,115,115,115, 0, 99,105, +110,101,111,110,119,104,105,116,101, 0, 99,105,110,101,111,110, 98,108, 97, 99,107, 0, 99,105,110,101,111,110,103, 97,109,109, + 97, 0,106,112, 50, 95,112,114,101,115,101,116, 0,106,112, 50, 95,100,101,112,116,104, 0,114,112, 97,100, 51, 0,100,111,109, +101,114,101,115, 0,100,111,109,101,109,111,100,101, 0,100,111,109,101, 97,110,103,108,101, 0,100,111,109,101,116,105,108,116, + 0,100,111,109,101,114,101,115, 98,117,102, 0, 42,100,111,109,101,116,101,120,116, 0,101,110,103,105,110,101, 91, 51, 50, 93, + 0,112, 97,114,116,105, 99,108,101, 95,112,101,114, 99, 0,115,117, 98,115,117,114,102, 95,109, 97,120, 0,115,104, 97,100, 98, +117,102,115, 97,109,112,108,101, 95,109, 97,120, 0, 97,111, 95,101,114,114,111,114, 0,116,105,108,116, 0,114,101,115, 98,117, +102, 0, 42,119, 97,114,112,116,101,120,116, 0, 99,111,108, 91, 51, 93, 0,109, 97,116,109,111,100,101, 0,102,114, 97,109,105, +110,103, 0,114,116, 49, 0,100,111,109,101, 0,115,116,101,114,101,111,102,108, 97,103, 0,101,121,101,115,101,112, 97,114, 97, +116,105,111,110, 0, 42, 99, 97,109,101,114, 97, 0, 42, 42, 98,114,117,115,104,101,115, 0, 97, 99,116,105,118,101, 95, 98,114, +117,115,104, 95,105,110,100,101,120, 0, 98,114,117,115,104, 95, 99,111,117,110,116, 0, 42,112, 97,105,110,116, 95, 99,117,114, +115,111,114, 0,112, 97,105,110,116, 95, 99,117,114,115,111,114, 95, 99,111,108, 91, 52, 93, 0,112, 97,105,110,116, 0,115,101, + 97,109, 95, 98,108,101,101,100, 0,110,111,114,109, 97,108, 95, 97,110,103,108,101, 0,115, 99,114,101,101,110, 95,103,114, 97, + 98, 95,115,105,122,101, 91, 50, 93, 0, 42,112, 97,105,110,116, 99,117,114,115,111,114, 0,105,110,118,101,114,116, 0,116,111, +116,114,101,107,101,121, 0,116,111,116, 97,100,100,107,101,121, 0, 98,114,117,115,104,116,121,112,101, 0, 98,114,117,115,104, + 91, 55, 93, 0,101,109,105,116,116,101,114,100,105,115,116, 0,115,101,108,101, 99,116,109,111,100,101, 0,101,100,105,116,116, +121,112,101, 0,100,114, 97,119, 95,115,116,101,112, 0,102, 97,100,101, 95,102,114, 97,109,101,115, 0,110, 97,109,101, 91, 51, + 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, 93, 0,112,105,118,111,116, 91, 51, 93, 0,116, 97, 98,108,101,116, 95,115,105,122, +101, 0,116, 97, 98,108,101,116, 95,115,116,114,101,110,103,116,104, 0, 42,118,112, 97,105,110,116, 95,112,114,101,118, 0, 42, +119,112, 97,105,110,116, 95,112,114,101,118, 0, 42,118,112, 97,105,110,116, 0, 42,119,112, 97,105,110,116, 0,118,103,114,111, +117,112, 95,119,101,105,103,104,116, 0, 99,111,114,110,101,114,116,121,112,101, 0,101,100,105,116, 98,117,116,102,108, 97,103, + 0,106,111,105,110,116,114,105,108,105,109,105,116, 0,100,101,103,114, 0,116,117,114,110, 0,101,120,116,114, 95,111,102,102, +115, 0,100,111,117, 98,108,105,109,105,116, 0,110,111,114,109, 97,108,115,105,122,101, 0, 97,117,116,111,109,101,114,103,101, + 0,115,101,103,109,101,110,116,115, 0,114,105,110,103,115, 0,118,101,114,116,105, 99,101,115, 0,117,110,119,114, 97,112,112, +101,114, 0,117,118, 99, 97,108, 99, 95,114, 97,100,105,117,115, 0,117,118, 99, 97,108, 99, 95, 99,117, 98,101,115,105,122,101, + 0,117,118, 99, 97,108, 99, 95,109, 97,114,103,105,110, 0,117,118, 99, 97,108, 99, 95,109, 97,112,100,105,114, 0,117,118, 99, + 97,108, 99, 95,109, 97,112, 97,108,105,103,110, 0,117,118, 99, 97,108, 99, 95,102,108, 97,103, 0,117,118, 95,102,108, 97,103, + 0,117,118, 95,115,101,108,101, 99,116,109,111,100,101, 0,117,118, 95,112, 97,100, 91, 50, 93, 0, 97,117,116,111,105,107, 95, + 99,104, 97,105,110,108,101,110, 0,105,109, 97,112, 97,105,110,116, 0,112, 97,114,116,105, 99,108,101, 0,112,114,111,112,111, +114,116,105,111,110, 97,108, 95,115,105,122,101, 0,115,101,108,101, 99,116, 95,116,104,114,101,115,104, 0, 99,108,101, 97,110, + 95,116,104,114,101,115,104, 0, 97,117,116,111,107,101,121, 95,109,111,100,101, 0, 97,117,116,111,107,101,121, 95,102,108, 97, +103, 0,114,101,116,111,112,111, 95,109,111,100,101, 0,114,101,116,111,112,111, 95,112, 97,105,110,116, 95,116,111,111,108, 0, +108,105,110,101, 95,100,105,118, 0,101,108,108,105,112,115,101, 95,100,105,118, 0,114,101,116,111,112,111, 95,104,111,116,115, +112,111,116, 0,109,117,108,116,105,114,101,115, 95,115,117, 98,100,105,118, 95,116,121,112,101, 0,115,107,103,101,110, 95,114, +101,115,111,108,117,116,105,111,110, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,105,110,116,101,114,110, + 97,108, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,101,120,116,101,114,110, 97,108, 0,115,107,103,101, +110, 95,108,101,110,103,116,104, 95,114, 97,116,105,111, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,108,105,109,105, +116, 0,115,107,103,101,110, 95, 97,110,103,108,101, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 99,111,114,114,101,108, + 97,116,105,111,110, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,115,121,109,109,101,116,114,121, 95,108,105,109,105,116, + 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95, 97,110,103,108,101, 95,119,101,105,103,104,116, 0,115,107,103, +101,110, 95,114,101,116, 97,114,103,101,116, 95,108,101,110,103,116,104, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95, +114,101,116, 97,114,103,101,116, 95,100,105,115,116, 97,110, 99,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,111, +112,116,105,111,110,115, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 0,115,107,103,101,110, 95,112,111,115,116,112, +114,111, 95,112, 97,115,115,101,115, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110,115, 91, 51, 93, 0, +115,107,103,101,110, 95,109,117,108,116,105, 95,108,101,118,101,108, 0, 42,115,107,103,101,110, 95,116,101,109,112,108, 97,116, +101, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 95, + 99,111,110,118,101,114,116, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110, 95,110,117,109, 98,101,114, + 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,114,101, +116, 97,114,103,101,116, 95,114,111,108,108, 0,115,107,103,101,110, 95,115,105,100,101, 95,115,116,114,105,110,103, 91, 56, 93, + 0,115,107,103,101,110, 95,110,117,109, 95,115,116,114,105,110,103, 91, 56, 93, 0,101,100,103,101, 95,109,111,100,101, 0,115, +110, 97,112, 95,109,111,100,101, 0,115,110, 97,112, 95,102,108, 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0,112, +114,111,112,111,114,116,105,111,110, 97,108, 0,112,114,111,112, 95,109,111,100,101, 0, 97,117,116,111, 95,110,111,114,109, 97, +108,105,122,101, 0,105,110,116,112, 97,100, 0,116,111,116,111, 98,106, 0,116,111,116,108, 97,109,112, 0,116,111,116,111, 98, +106,115,101,108, 0,116,111,116, 99,117,114,118,101, 0,116,111,116,109,101,115,104, 0,116,111,116, 97,114,109, 97,116,117,114, +101, 0,115, 99, 97,108,101, 95,108,101,110,103,116,104, 0,115,121,115,116,101,109, 0,103,114, 97,118,105,116,121, 91, 51, 93, + 0,113,117,105, 99,107, 95, 99, 97, 99,104,101, 95,115,116,101,112, 0, 42,119,111,114,108,100, 0, 42,115,101,116, 0, 98, 97, +115,101, 0, 42, 98, 97,115, 97, 99,116, 0, 42,111, 98,101,100,105,116, 0, 99,117,114,115,111,114, 91, 51, 93, 0,116,119, 99, +101,110,116, 91, 51, 93, 0,116,119,109,105,110, 91, 51, 93, 0,116,119,109, 97,120, 91, 51, 93, 0,108, 97,121, 97, 99,116, 0, + 42,101,100, 0, 42,116,111,111,108,115,101,116,116,105,110,103,115, 0, 42,115,116, 97,116,115, 0, 97,117,100,105,111, 0,116, +114, 97,110,115,102,111,114,109, 95,115,112, 97, 99,101,115, 0, 42,115,111,117,110,100, 95,115, 99,101,110,101, 0, 42,115,111, +117,110,100, 95,115, 99,101,110,101, 95,104, 97,110,100,108,101, 0, 42,102,112,115, 95,105,110,102,111, 0, 42,116,104,101, 68, + 97,103, 0,100, 97,103,105,115,118, 97,108,105,100, 0,100, 97,103,102,108, 97,103,115, 0,106,117,109,112,102,114, 97,109,101, + 0,112, 97,100, 53, 0, 97, 99,116,105,118,101, 95,107,101,121,105,110,103,115,101,116, 0,107,101,121,105,110,103,115,101,116, +115, 0,103,109, 0,117,110,105,116, 0,112,104,121,115,105, 99,115, 95,115,101,116,116,105,110,103,115, 0, 98,108,101,110,100, + 0,118,105,101,119, 0,119,105,110,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, + 0,118,105,101,119,105,110,118, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114, +115,105,110,118, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, + 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,116,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, + 52, 93, 0,122,102, 97, 99, 0, 99, 97,109,100,120, 0, 99, 97,109,100,121, 0,112,105,120,115,105,122,101, 0, 99, 97,109,122, +111,111,109, 0,118,105,101,119, 98,117,116, 0,116,119,100,114, 97,119,102,108, 97,103, 0,114,102,108, 97,103, 0,118,105,101, +119,108,111, 99,107, 0,112,101,114,115,112, 0, 99,108,105,112, 91, 54, 93, 91, 52, 93, 0, 99,108,105,112, 95,108,111, 99, 97, +108, 91, 54, 93, 91, 52, 93, 0, 42, 99,108,105,112, 98, 98, 0, 42,108,111, 99, 97,108,118,100, 0, 42,114,105, 0, 42,114,101, +116,111,112,111, 95,118,105,101,119, 95,100, 97,116, 97, 0, 42,100,101,112,116,104,115, 0, 42,115,109,115, 0, 42,115,109,111, +111,116,104, 95,116,105,109,101,114, 0,108,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,108,112,101,114,115,112, 0,108,118, +105,101,119, 0,103,114,105,100,118,105,101,119, 0,116,119, 97,110,103,108,101, 91, 51, 93, 0,112, 97,100,102, 0,114,101,103, +105,111,110, 98, 97,115,101, 0,115,112, 97, 99,101,116,121,112,101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, + 99,107,104, 97,110,100,108,101,114, 91, 56, 93, 0,108, 97,121, 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, + 0, 98,103,112,105, 99, 98, 97,115,101, 0, 42, 98,103,112,105, 99, 0,111, 98, 95, 99,101,110,116,114,101, 95, 98,111,110,101, + 91, 51, 50, 93, 0,100,114, 97,119,116,121,112,101, 0,115, 99,101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0,112, +105,118,111,116, 95,108, 97,115,116, 0,103,114,105,100, 0,110,101, 97,114, 0,102, 97,114, 0,103,114,105,100,108,105,110,101, +115, 0,103,114,105,100,102,108, 97,103, 0,103,114,105,100,115,117, 98,100,105,118, 0,109,111,100,101,115,101,108,101, 99,116, + 0,107,101,121,102,108, 97,103,115, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101, 0,116,119,102,108, 97,103, 0, 99, +117,115,116,111,109,100, 97,116, 97, 95,109, 97,115,107, 0, 97,102,116,101,114,100,114, 97,119, 0,122, 98,117,102, 0,120,114, + 97,121, 0,110,100,111,102,109,111,100,101, 0,110,100,111,102,102,105,108,116,101,114, 0, 42,112,114,111,112,101,114,116,105, +101,115, 95,115,116,111,114, 97,103,101, 0,118,101,114,116, 0,104,111,114, 0,109, 97,115,107, 0,109,105,110, 91, 50, 93, 0, +109, 97,120, 91, 50, 93, 0,109,105,110,122,111,111,109, 0,109, 97,120,122,111,111,109, 0,115, 99,114,111,108,108, 0,115, 99, +114,111,108,108, 95,117,105, 0,107,101,101,112,116,111,116, 0,107,101,101,112,122,111,111,109, 0,107,101,101,112,111,102,115, + 0, 97,108,105,103,110, 0,119,105,110,120, 0,119,105,110,121, 0,111,108,100,119,105,110,120, 0,111,108,100,119,105,110,121, + 0, 42,116, 97, 98, 95,111,102,102,115,101,116, 0,116, 97, 98, 95,110,117,109, 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99, +114,101,101,110, 0,118, 50,100, 0, 42, 97,100,115, 0,103,104,111,115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, + 97,112, 0, 99,117,114,115,111,114, 86, 97,108, 0,109, 97,105,110, 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117, +115,101,114, 0,114,101, 95, 97,108,105,103,110, 0,112,114,101,118,105,101,119, 0,112, 97,116,104,102,108, 97,103, 0,100, 97, +116, 97,105, 99,111,110, 0, 42,112,105,110,105,100, 0,114,101,110,100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104, +111,119,110, 0,122,101, 98,114, 97, 0,122,111,111,109, 0,116,105,116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, + 93, 0,102,105,108,101, 91, 56, 48, 93, 0,114,101,110, 97,109,101,102,105,108,101, 91, 56, 48, 93, 0,115,111,114,116, 0,100, +105,115,112,108, 97,121, 0, 97, 99,116,105,118,101, 95, 98,111,111,107,109, 97,114,107, 0, 97, 99,116,105,118,101, 95,102,105, +108,101, 0,115,101,108,115,116, 97,116,101, 0,102, 95,102,112, 0,102,112, 95,115,116,114, 91, 56, 93, 0,115, 99,114,111,108, +108, 95,111,102,102,115,101,116, 0, 42,112, 97,114, 97,109,115, 0, 42,102,105,108,101,115, 0, 42,102,111,108,100,101,114,115, + 95,112,114,101,118, 0, 42,102,111,108,100,101,114,115, 95,110,101,120,116, 0, 42,111,112, 0, 42,115,109,111,111,116,104,115, + 99,114,111,108,108, 95,116,105,109,101,114, 0, 42,108, 97,121,111,117,116, 0,114,101, 99,101,110,116,110,114, 0, 98,111,111, +107,109, 97,114,107,110,114, 0,115,121,115,116,101,109,110,114, 0,116,114,101,101, 0, 42,116,114,101,101,115,116,111,114,101, + 0,115,101, 97,114, 99,104, 95,115,116,114,105,110,103, 91, 51, 50, 93, 0,115,101, 97,114, 99,104, 95,116,115,101, 0,115,101, + 97,114, 99,104, 95,102,108, 97,103,115, 0,100,111, 95, 0,111,117,116,108,105,110,101,118,105,115, 0,115,116,111,114,101,102, +108, 97,103, 0, 42, 99,117,109, 97,112, 0,105,109, 97,110,114, 0, 99,117,114,116,105,108,101, 0,105,109,116,121,112,101,110, +114, 0,108,111, 99,107, 0,112,105,110, 0,100,116, 95,117,118, 0,115,116,105, 99,107,121, 0,100,116, 95,117,118,115,116,114, +101,116, 99,104, 0, 99,117,114,115,111,114, 91, 50, 93, 0, 99,101,110,116,120, 0, 99,101,110,116,121, 0,115, 99,111,112,101, +115, 0,115, 97,109,112,108,101, 95,108,105,110,101, 95,104,105,115,116, 0, 42,116,101,120,116, 0,116,111,112, 0,118,105,101, +119,108,105,110,101,115, 0,108,104,101,105,103,104,116, 0, 99,119,105,100,116,104, 0,108,105,110,101,110,114,115, 95,116,111, +116, 0,108,101,102,116, 0,115,104,111,119,108,105,110,101,110,114,115, 0,116, 97, 98,110,117,109, 98,101,114, 0,115,104,111, +119,115,121,110,116, 97,120, 0,111,118,101,114,119,114,105,116,101, 0,108,105,118,101, 95,101,100,105,116, 0,112,105,120, 95, +112,101,114, 95,108,105,110,101, 0,116,120,116,115, 99,114,111,108,108, 0,116,120,116, 98, 97,114, 0,119,111,114,100,119,114, + 97,112, 0,100,111,112,108,117,103,105,110,115, 0,102,105,110,100,115,116,114, 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99, +101,115,116,114, 91, 50, 53, 54, 93, 0, 42,112,121, 95,100,114, 97,119, 0, 42,112,121, 95,101,118,101,110,116, 0, 42,112,121, + 95, 98,117,116,116,111,110, 0, 42,112,121, 95, 98,114,111,119,115,101,114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95, +103,108,111, 98, 97,108,100,105, 99,116, 0,108, 97,115,116,115,112, 97, 99,101, 0,115, 99,114,105,112,116,110, 97,109,101, 91, + 50, 53, 54, 93, 0,115, 99,114,105,112,116, 97,114,103, 91, 50, 53, 54, 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,117,116, + 95,114,101,102,115, 0, 42, 97,114,114, 97,121, 0, 99, 97, 99,104,101,115, 0, 99, 97, 99,104,101, 95,100,105,115,112,108, 97, +121, 0,114,101,100,114, 97,119,115, 0, 42,105,100, 0, 97,115,112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, + 0,109,121, 0, 42,101,100,105,116,116,114,101,101, 0,116,114,101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,109, +101,110,117, 0,110,117,109,116,105,108,101,115,120, 0,110,117,109,116,105,108,101,115,121, 0,118,105,101,119,114,101, 99,116, + 0, 98,111,111,107,109, 97,114,107,114,101, 99,116, 0,115, 99,114,111,108,108,112,111,115, 0,115, 99,114,111,108,108,104,101, +105,103,104,116, 0,115, 99,114,111,108,108, 97,114,101, 97, 0,114,101,116,118, 97,108, 0,112,114,118, 95,119, 0,112,114,118, + 95,104, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95, +101,118,101,110,116, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95, 97,114,103,115, 41, 40, 41, 0, 42, 97, +114,103, 49, 0, 42, 97,114,103, 50, 0, 42,109,101,110,117,112, 0, 42,112,117,112,109,101,110,117, 0, 42,105,109,103, 0,108, +101,110, 95, 97,108,108,111, 99, 0, 99,117,114,115,111,114, 0,114,112,116, 95,109, 97,115,107, 0,115, 99,114,111,108,108, 98, + 97, 99,107, 0,104,105,115,116,111,114,121, 0,112,114,111,109,112,116, 91, 50, 53, 54, 93, 0,108, 97,110,103,117, 97,103,101, + 91, 51, 50, 93, 0,115,101,108, 95,115,116, 97,114,116, 0,115,101,108, 95,101,110,100, 0,102,105,108,116,101,114, 91, 54, 52, + 93, 0,102,105,108,101,110, 97,109,101, 91, 50, 53, 54, 93, 0, 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,100, + 0,114, 95,116,111, 95,108, 0,112,111,105,110,116,115, 0,107,101,114,110,105,110,103, 0,105,116, 97,108,105, 99, 0, 98,111, +108,100, 0,115,104, 97,100,111,119, 0,115,104, 97,100,120, 0,115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, + 97, 0,115,104, 97,100,111,119, 99,111,108,111,114, 0,112, 97,110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, + 98,101,108, 0,119,105,100,103,101,116,108, 97, 98,101,108, 0,119,105,100,103,101,116, 0,112, 97,110,101,108,122,111,111,109, + 0,109,105,110,108, 97, 98,101,108, 99,104, 97,114,115, 0,109,105,110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111, +108,117,109,110,115,112, 97, 99,101, 0,116,101,109,112,108, 97,116,101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, + 0, 98,117,116,116,111,110,115,112, 97, 99,101,120, 0, 98,117,116,116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108, +115,112, 97, 99,101, 0,112, 97,110,101,108,111,117,116,101,114, 0,112, 97,100, 91, 49, 93, 0,111,117,116,108,105,110,101, 91, + 52, 93, 0,105,110,110,101,114, 91, 52, 93, 0,105,110,110,101,114, 95,115,101,108, 91, 52, 93, 0,105,116,101,109, 91, 52, 93, + 0,116,101,120,116, 91, 52, 93, 0,116,101,120,116, 95,115,101,108, 91, 52, 93, 0,115,104, 97,100,101,100, 0,115,104, 97,100, +101,116,111,112, 0,115,104, 97,100,101,100,111,119,110, 0, 97,108,112,104, 97, 95, 99,104,101, 99,107, 0,105,110,110,101,114, + 95, 97,110,105,109, 91, 52, 93, 0,105,110,110,101,114, 95, 97,110,105,109, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, + 95,107,101,121, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,100, +114,105,118,101,110, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 95,115,101,108, 91, 52, 93, 0,119, 99,111, +108, 95,114,101,103,117,108, 97,114, 0,119, 99,111,108, 95,116,111,111,108, 0,119, 99,111,108, 95,116,101,120,116, 0,119, 99, +111,108, 95,114, 97,100,105,111, 0,119, 99,111,108, 95,111,112,116,105,111,110, 0,119, 99,111,108, 95,116,111,103,103,108,101, + 0,119, 99,111,108, 95,110,117,109, 0,119, 99,111,108, 95,110,117,109,115,108,105,100,101,114, 0,119, 99,111,108, 95,109,101, +110,117, 0,119, 99,111,108, 95,112,117,108,108,100,111,119,110, 0,119, 99,111,108, 95,109,101,110,117, 95, 98, 97, 99,107, 0, +119, 99,111,108, 95,109,101,110,117, 95,105,116,101,109, 0,119, 99,111,108, 95, 98,111,120, 0,119, 99,111,108, 95,115, 99,114, +111,108,108, 0,119, 99,111,108, 95,112,114,111,103,114,101,115,115, 0,119, 99,111,108, 95,108,105,115,116, 95,105,116,101,109, + 0,119, 99,111,108, 95,115,116, 97,116,101, 0,105, 99,111,110,102,105,108,101, 91, 56, 48, 93, 0, 98, 97, 99,107, 91, 52, 93, + 0,116,105,116,108,101, 91, 52, 93, 0,116,101,120,116, 95,104,105, 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,104, +101, 97,100,101,114, 95,116,105,116,108,101, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 91, 52, 93, 0,104,101, + 97,100,101,114, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0, 98,117,116,116,111,110, 91, 52, 93, 0, 98,117,116,116,111,110, + 95,116,105,116,108,101, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 91, 52, 93, 0, 98,117,116,116,111,110, 95, +116,101,120,116, 95,104,105, 91, 52, 93, 0,108,105,115,116, 91, 52, 93, 0,108,105,115,116, 95,116,105,116,108,101, 91, 52, 93, + 0,108,105,115,116, 95,116,101,120,116, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,112, 97, +110,101,108, 91, 52, 93, 0,112, 97,110,101,108, 95,116,105,116,108,101, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, + 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93, 0,115, +104, 97,100,101, 50, 91, 52, 93, 0,104,105,108,105,116,101, 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,101, 91, + 52, 93, 0,115,101,108,101, 99,116, 91, 52, 93, 0,108, 97,109,112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, 52, 93, 0,103, +114,111,117,112, 91, 52, 93, 0,103,114,111,117,112, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,111,114, +109, 91, 52, 93, 0,118,101,114,116,101,120, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0, +101,100,103,101, 91, 52, 93, 0,101,100,103,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101, 97,109, + 91, 52, 93, 0,101,100,103,101, 95,115,104, 97,114,112, 91, 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, + 93, 0,101,100,103,101, 95, 99,114,101, 97,115,101, 91, 52, 93, 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101, +108,101, 99,116, 91, 52, 93, 0,102, 97, 99,101, 95,100,111,116, 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0,118,101, +114,116,101,120, 95,110,111,114,109, 97,108, 91, 52, 93, 0, 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110, +101, 95,112,111,115,101, 91, 52, 93, 0,115,116,114,105,112, 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, + 52, 93, 0, 99,102,114, 97,109,101, 91, 52, 93, 0,110,117,114, 98, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95, +118,108,105,110,101, 91, 52, 93, 0, 97, 99,116, 95,115,112,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95, +117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95,118,108,105,110,101, 91, 52, 93, 0,108, 97,115,116,115, +101,108, 95,112,111,105,110,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108, +101, 95, 97,117,116,111, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95, + 97,108,105,103,110, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100, +108,101, 95,115,101,108, 95, 97,117,116,111, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95,118,101, 99,116, 91, 52, + 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97,108,105,103,110, 91, 52, 93, 0,100,115, 95, 99,104, 97,110,110,101,108, + 91, 52, 93, 0,100,115, 95,115,117, 98, 99,104, 97,110,110,101,108, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,111,117,116, +112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95, +105,110,102,111, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,101,114,114,111,114, 91, 52, 93, 0, 99,111,110,115,111,108,101, + 95, 99,117,114,115,111,114, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,105,122,101, 0,102, 97, 99,101,100,111,116, 95,115, +105,122,101, 0, 98,112, 97,100, 91, 50, 93, 0,115,121,110,116, 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,120,110, 91, 52, + 93, 0,115,121,110,116, 97,120, 98, 91, 52, 93, 0,115,121,110,116, 97,120,118, 91, 52, 93, 0,115,121,110,116, 97,120, 99, 91, + 52, 93, 0,109,111,118,105,101, 91, 52, 93, 0,105,109, 97,103,101, 91, 52, 93, 0,115, 99,101,110,101, 91, 52, 93, 0, 97,117, +100,105,111, 91, 52, 93, 0,101,102,102,101, 99,116, 91, 52, 93, 0,112,108,117,103,105,110, 91, 52, 93, 0,116,114, 97,110,115, +105,116,105,111,110, 91, 52, 93, 0,109,101,116, 97, 91, 52, 93, 0,101,100,105,116,109,101,115,104, 95, 97, 99,116,105,118,101, + 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116, +101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,105,122,101, 0, +104,112, 97,100, 91, 55, 93, 0,112,114,101,118,105,101,119, 95, 98, 97, 99,107, 91, 52, 93, 0,115,111,108,105,100, 91, 52, 93, + 0,116,117,105, 0,116, 98,117,116,115, 0,116,118, 51,100, 0,116,102,105,108,101, 0,116,105,112,111, 0,116,105,110,102,111, + 0,116,115,110,100, 0,116, 97, 99,116, 0,116,110,108, 97, 0,116,115,101,113, 0,116,105,109, 97, 0,116,105,109, 97,115,101, +108, 0,116,101,120,116, 0,116,111,111,112,115, 0,116,116,105,109,101, 0,116,110,111,100,101, 0,116,108,111,103,105, 99, 0, +116,117,115,101,114,112,114,101,102, 0,116, 99,111,110,115,111,108,101, 0,116, 97,114,109, 91, 50, 48, 93, 0, 97, 99,116,105, +118,101, 95,116,104,101,109,101, 95, 97,114,101, 97, 0,109,111,100,117,108,101, 91, 54, 52, 93, 0,115,112,101, 99, 91, 52, 93, + 0,100,117,112,102,108, 97,103, 0,115, 97,118,101,116,105,109,101, 0,116,101,109,112,100,105,114, 91, 49, 54, 48, 93, 0,102, +111,110,116,100,105,114, 91, 49, 54, 48, 93, 0,114,101,110,100,101,114,100,105,114, 91, 49, 54, 48, 93, 0,116,101,120,116,117, +100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,116,101,120,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,115,101,113, +100,105,114, 91, 49, 54, 48, 93, 0,112,121,116,104,111,110,100,105,114, 91, 49, 54, 48, 93, 0,115,111,117,110,100,100,105,114, + 91, 49, 54, 48, 93, 0,105,109, 97,103,101, 95,101,100,105,116,111,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97, +121,101,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 95,112,114,101,115,101,116, 0,118, 50,100, 95, +109,105,110, 95,103,114,105,100,115,105,122,101, 0,116,105,109,101, 99,111,100,101, 95,115,116,121,108,101, 0,118,101,114,115, +105,111,110,115, 0,100, 98,108, 95, 99,108,105, 99,107, 95,116,105,109,101, 0,103, 97,109,101,102,108, 97,103,115, 0,119,104, +101,101,108,108,105,110,101,115, 99,114,111,108,108, 0,117,105,102,108, 97,103, 0,108, 97,110,103,117, 97,103,101, 0,117,115, +101,114,112,114,101,102, 0,118,105,101,119,122,111,111,109, 0,109,105,120, 98,117,102,115,105,122,101, 0, 97,117,100,105,111, +100,101,118,105, 99,101, 0, 97,117,100,105,111,114, 97,116,101, 0, 97,117,100,105,111,102,111,114,109, 97,116, 0, 97,117,100, +105,111, 99,104, 97,110,110,101,108,115, 0,100,112,105, 0,101,110, 99,111,100,105,110,103, 0,116,114, 97,110,115,111,112,116, +115, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 49, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 50, 0, +116,104,101,109,101,115, 0,117,105,102,111,110,116,115, 0,117,105,115,116,121,108,101,115, 0,107,101,121,109, 97,112,115, 0, + 97,100,100,111,110,115, 0,107,101,121, 99,111,110,102,105,103,115,116,114, 91, 54, 52, 93, 0,117,110,100,111,115,116,101,112, +115, 0,117,110,100,111,109,101,109,111,114,121, 0,103,112, 95,109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103,112, + 95,101,117, 99,108,105,100,101, 97,110,100,105,115,116, 0,103,112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101,116,116, +105,110,103,115, 0,116, 98, 95,108,101,102,116,109,111,117,115,101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, 0, +108,105,103,104,116, 91, 51, 93, 0,116,119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108, 97,103, 0,116,119, 95,104, + 97,110,100,108,101,115,105,122,101, 0,116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101,111,117,116, 0,116,101,120, + 99,111,108,108,101, 99,116,114, 97,116,101, 0,119,109,100,114, 97,119,109,101,116,104,111,100, 0,119,109,112, 97,100, 0,109, +101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101,102,101,116, 99,104,102,114, 97,109,101,115, 0,102,114, 97,109, +101,115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95,114,111,116, 95, 97,110,103,108,101, 0,111, 98, 99,101,110,116, +101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114,118,105, 98,114,105,103,104,116, 0,114,101, 99,101,110,116, 95, +102,105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101,119,116,120, 0,103,108,114,101,115,108,105,109,105,116, 0,110, +100,111,102, 95,112, 97,110, 0,110,100,111,102, 95,114,111,116, 97,116,101, 0, 99,117,114,115,115,105,122,101, 0, 99,111,108, +111,114, 95,112,105, 99,107,101,114, 95,116,121,112,101, 0,105,112,111, 95,110,101,119, 0,107,101,121,104, 97,110,100,108,101, +115, 95,110,101,119, 0,115, 99,114, 99, 97,115,116,102,112,115, 0,115, 99,114, 99, 97,115,116,119, 97,105,116, 0,112,114,111, +112,119,105,100,116,104, 0,118,101,114,115,101,109, 97,115,116,101,114, 91, 49, 54, 48, 93, 0,118,101,114,115,101,117,115,101, +114, 91, 49, 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108,105,112, 0, 99,111, 98, 97, 95,119,101,105,103,104,116, 0,118, +101,114,116, 98, 97,115,101, 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,115,101, 0, 42,110,101,119,115, 99, +101,110,101, 0,102,117,108,108, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0,100,111, 95,114,101,102,114,101,115, +104, 0,100,111, 95,100,114, 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, 97,119, 95,112, 97,105,110,116, 99, +117,114,115,111,114, 0,100,111, 95,100,114, 97,119, 95,100,114, 97,103, 0,115,119, 97,112, 0,109, 97,105,110,119,105,110, 0, +115,117, 98,119,105,110, 97, 99,116,105,118,101, 0, 42, 97,110,105,109,116,105,109,101,114, 0, 42, 99,111,110,116,101,120,116, + 0,104, 97,110,100,108,101,114, 91, 56, 93, 0, 42,110,101,119,118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42,116, +121,112,101, 0,112, 97,110,101,108,110, 97,109,101, 91, 54, 52, 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, + 97,119,110, 97,109,101, 91, 54, 52, 93, 0,111,102,115,120, 0,111,102,115,121, 0,115,105,122,101,120, 0,115,105,122,101,121, + 0,108, 97, 98,101,108,111,102,115, 0,114,117,110,116,105,109,101, 95,102,108, 97,103, 0, 99,111,110,116,114,111,108, 0,115, +110, 97,112, 0,115,111,114,116,111,114,100,101,114, 0, 42,112, 97,110,101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101,100, + 97,116, 97, 0,108,105,115,116, 95,115, 99,114,111,108,108, 0,108,105,115,116, 95,115,105,122,101, 0,108,105,115,116, 95,108, + 97,115,116, 95,108,101,110, 0,108,105,115,116, 95,103,114,105,112, 95,115,105,122,101, 0,108,105,115,116, 95,115,101, 97,114, + 99,104, 91, 54, 52, 93, 0, 42,118, 51, 0, 42,118, 52, 0, 42,102,117,108,108, 0, 98,117,116,115,112, 97, 99,101,116,121,112, +101, 0,104,101, 97,100,101,114,116,121,112,101, 0,115,112, 97, 99,101,100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, 0, + 97, 99,116,105,111,110,122,111,110,101,115, 0,119,105,110,114, 99,116, 0,100,114, 97,119,114, 99,116, 0,115,119,105,110,105, +100, 0,114,101,103,105,111,110,116,121,112,101, 0, 97,108,105,103,110,109,101,110,116, 0,100,111, 95,100,114, 97,119, 95,111, +118,101,114,108, 97,121, 0,117,105, 98,108,111, 99,107,115, 0,112, 97,110,101,108,115, 0, 42,104,101, 97,100,101,114,115,116, +114, 0, 42,114,101,103,105,111,110,100, 97,116, 97, 0,115,117, 98,118,115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115, +105,111,110, 0,112, 97,100,115, 0,109,105,110,118,101,114,115,105,111,110, 0,109,105,110,115,117, 98,118,101,114,115,105,111, +110, 0, 42, 99,117,114,115, 99,114,101,101,110, 0, 42, 99,117,114,115, 99,101,110,101, 0,102,105,108,101,102,108, 97,103,115, + 0,103,108,111, 98, 97,108,102, 0,102,105,108,101,110, 97,109,101, 91, 50, 52, 48, 93, 0,110, 97,109,101, 91, 56, 48, 93, 0, + 42,105, 98,117,102, 0, 42,105, 98,117,102, 95, 99,111,109,112, 0, 42,115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0, +110,114, 0, 98,111,116,116,111,109, 0,114,105,103,104,116, 0,120,111,102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, + 93, 0,103, 97,109,109, 97, 91, 51, 93, 0,103, 97,105,110, 91, 51, 93, 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110,101, + 0,115,116, 97,114,116,115,116,105,108,108, 0,101,110,100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0, +111,114,120, 0,111,114,121, 0, 42, 99,114,111,112, 0, 42,116,114, 97,110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, + 98, 97,108, 97,110, 99,101, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95, +115,116, 97,114,116,115,116,105,108,108, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,101,110,100,115,116,105,108,108, 0, + 42,105, 98,117,102, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42,105, 98,117,102, 95,101,110,100,115,116,105,108,108, 0, + 42,105,110,115,116, 97,110, 99,101, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, + 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111, +102,115, 0,109, 97, 99,104,105,110,101, 0,115,116, 97,114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,109,117,108, + 0,104, 97,110,100,115,105,122,101, 0, 97,110,105,109, 95,112,114,101,115,101,101,107, 0, 42,115,116,114,105,112, 0, 42,115, + 99,101,110,101, 95, 99, 97,109,101,114, 97, 0,101,102,102,101, 99,116, 95,102, 97,100,101,114, 0,115,112,101,101,100, 95,102, + 97,100,101,114, 0, 42,115,101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42, +115,111,117,110,100, 0, 42,115, 99,101,110,101, 95,115,111,117,110,100, 0,108,101,118,101,108, 0,112, 97,110, 0,115, 99,101, +110,101,110,114, 0,109,117,108,116,105, 99, 97,109, 95,115,111,117,114, 99,101, 0,115,116,114,111, 98,101, 0, 42,101,102,102, +101, 99,116,100, 97,116, 97, 0, 97,110,105,109, 95,115,116, 97,114,116,111,102,115, 0, 97,110,105,109, 95,101,110,100,111,102, +115, 0, 98,108,101,110,100, 95,109,111,100,101, 0, 98,108,101,110,100, 95,111,112, 97, 99,105,116,121, 0, 42,111,108,100, 98, + 97,115,101,112, 0, 42,112, 97,114,115,101,113, 0, 42,115,101,113, 98, 97,115,101,112, 0,109,101,116, 97,115,116, 97, 99,107, + 0, 42, 97, 99,116, 95,115,101,113, 0, 97, 99,116, 95,105,109, 97,103,101,100,105,114, 91, 50, 53, 54, 93, 0, 97, 99,116, 95, +115,111,117,110,100,100,105,114, 91, 50, 53, 54, 93, 0,111,118,101,114, 95,111,102,115, 0,111,118,101,114, 95, 99,102,114, 97, + 0,111,118,101,114, 95,102,108, 97,103, 0,111,118,101,114, 95, 98,111,114,100,101,114, 0,101,100,103,101, 87,105,100,116,104, + 0,102,111,114,119, 97,114,100, 0,119,105,112,101,116,121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109,112, 0,102, + 66,111,111,115,116, 0,100, 68,105,115,116, 0,100, 81,117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0, 83, 99, 97, +108,101,120, 73,110,105, 0, 83, 99, 97,108,101,121, 73,110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, 83, 99, 97,108,101, +121, 70,105,110, 0,120, 73,110,105, 0,120, 70,105,110, 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111,116, 73,110,105, 0, +114,111,116, 70,105,110, 0,105,110,116,101,114,112,111,108, 97,116,105,111,110, 0,117,110,105,102,111,114,109, 95,115, 99, 97, +108,101, 0, 42,102,114, 97,109,101, 77, 97,112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115,116, 86, 97,108, +105,100, 70,114, 97,109,101, 0, 98,117,116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,116,111,116,112, + 97,114,116, 0,110,111,114,109,102, 97, 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,120,102, 97, 99, + 0,114, 97,110,100,108,105,102,101, 0,102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,109, 97,120,108, +101,110, 0,100,101,102,118,101, 99, 91, 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, 0, 99,104,105, +108,100, 91, 52, 93, 0,109, 97,116, 91, 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,115,116, 97,116, +105, 99,115,116,101,112, 0,111,109, 97,116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101,120, 0,102,108, 97, +103, 50,110,101,103, 0,118,101,114,116,103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, 91, 51, 50, 93, + 0,118,103,114,111,117,112,110, 97,109,101, 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102, 97, 99, 0,117, +115,101,100, 0,117,115,101,100,101,108,101,109, 0, 42,112,111,105,110, 0,114,101,115,101,116,100,105,115,116, 0,108, 97,115, +116,118, 97,108, 0, 42,109, 97, 0,107,101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,101,116, 78, 97, +109,101, 91, 51, 50, 93, 0,116,111,103,103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91, 51, 50, 93, 0, +109, 97,120,118, 97,108,117,101, 91, 51, 50, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,105,111,110, 0,109, 97,116,101, +114,105, 97,108, 78, 97,109,101, 91, 51, 50, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,114,111,112,110, 97,109,101, 91, + 51, 50, 93, 0,109, 97,116,110, 97,109,101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111,115,101, 99,104, 97, +110,110,101,108, 91, 51, 50, 93, 0, 99,111,110,115,116,114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114,111,109, 79, 98,106, +101, 99,116, 0,115,117, 98,106,101, 99,116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116,121,112,101, 0,112, +117,108,115,101, 0,102,114,101,113, 0,116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,116, 97,112, 0,106, +111,121,105,110,100,101,120, 0, 97,120,105,115, 95,115,105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, + 0,104, 97,116, 0,104, 97,116,102, 0,112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0, 42,109,121, +110,101,119, 0,105,110,112,117,116,115, 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,108,105,110,107,115, 0,118, 97, +108,111, 0,115,116, 97,116,101, 95,109, 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111,112, 91, 51, 50, 93, + 0, 98,108,101,110,100,105,110, 0,112,114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,115,101,116, 0,115,116,114,105, +100,101, 97,120,105,115, 0,115,116,114,105,100,101,108,101,110,103,116,104, 0,115,110,100,110,114, 0,112, 97,100, 51, 91, 50, + 93, 0,112,105,116, 99,104, 0,115,111,117,110,100, 51, 68, 0,112, 97,100, 54, 91, 49, 93, 0, 42,109,101, 0,108,105,110, 86, +101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108,102, +108, 97,103, 0,100,121,110, 95,111,112,101,114, 97,116,105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,102,111, +114, 99,101,114,111,116, 91, 51, 93, 0,108,105,110,101, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103,117, +108, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 42,114,101,102,101,114,101,110, 99,101, 0,109,105,110, 0,109, 97, +120, 0,114,111,116,100, 97,109,112, 0,109,105,110,108,111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, 51, 93, 0,109,105, +110,114,111,116, 91, 51, 93, 0,109, 97,120,114,111,116, 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51, 50, 93, 0, 98,117, +116,115,116, 97, 0, 98,117,116,101,110,100, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, 97,114,103, + 95, 49, 0,105,110,116, 95, 97,114,103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97,116, 95, 97, +114,103, 95, 50, 0,116,111, 80,114,111,112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, 99,116, 0, 98,111, +100,121, 84,121,112,101, 0,102,105,108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97,109,101, 91, + 54, 52, 93, 0,105,110,116, 95, 97,114,103, 0,102,108,111, 97,116, 95, 97,114,103, 0, 42,115,117, 98,116, 97,114,103,101,116, + 0,103,111, 0, 97, 99, 99,101,108,108,101,114, 97,116,105,111,110, 0,109, 97,120,115,112,101,101,100, 0,109, 97,120,114,111, +116,115,112,101,101,100, 0,109, 97,120,116,105,108,116,115,112,101,101,100, 0,116,105,108,116,100, 97,109,112, 0,115,112,101, +101,100,100, 97,109,112, 0,109,105,110, 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101,102,101,114,101,110, + 99,101, 95,100,105,115,116, 97,110, 99,101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,101, 0,114,111,108,108,111,102,102, + 95,102, 97, 99,116,111,114, 0, 99,111,110,101, 95,105,110,110,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117, +116,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42,110,101,119,112, 97, + 99,107,101,100,102,105,108,101, 0, 97,116,116,101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, + 97, 99,104,101, 0, 42,112,108, 97,121, 98, 97, 99,107, 95,104, 97,110,100,108,101, 0, 42, 97,114,101, 97, 0, 42,108, 97,109, +112,114,101,110, 0,103,111, 98,106,101, 99,116, 0,100,117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 42,112,114,111,112, 0, + 99,104,105,108,100, 98, 97,115,101, 0,114,111,108,108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98, +111,110,101, 95,109, 97,116, 91, 51, 93, 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97, +105,108, 91, 51, 93, 0, 97,114,109, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0,122,119,105,100,116, +104, 0,101, 97,115,101, 49, 0,101, 97,115,101, 50, 0,114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95,116, 97,105,108, 0, + 98,111,110,101, 98, 97,115,101, 0, 99,104, 97,105,110, 98, 97,115,101, 0, 42,101,100, 98,111, 0, 42, 97, 99,116, 95, 98,111, +110,101, 0, 42, 97, 99,116, 95,101,100, 98,111,110,101, 0, 42,115,107,101,116, 99,104, 0,108, 97,121,101,114, 95,112,114,111, +116,101, 99,116,101,100, 0,103,104,111,115,116,101,112, 0,103,104,111,115,116,115,105,122,101, 0,103,104,111,115,116,116,121, +112,101, 0,112, 97,116,104,115,105,122,101, 0,103,104,111,115,116,115,102, 0,103,104,111,115,116,101,102, 0,112, 97,116,104, +115,102, 0,112, 97,116,104,101,102, 0,112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,111,105,110,116,115, 0, +115,116, 97,114,116, 95,102,114, 97,109,101, 0,101,110,100, 95,102,114, 97,109,101, 0,103,104,111,115,116, 95,115,102, 0,103, +104,111,115,116, 95,101,102, 0,103,104,111,115,116, 95, 98, 99, 0,103,104,111,115,116, 95, 97, 99, 0,103,104,111,115,116, 95, +116,121,112,101, 0,103,104,111,115,116, 95,115,116,101,112, 0,103,104,111,115,116, 95,102,108, 97,103, 0,112, 97,116,104, 95, +116,121,112,101, 0,112, 97,116,104, 95,115,116,101,112, 0,112, 97,116,104, 95,118,105,101,119,102,108, 97,103, 0,112, 97,116, +104, 95, 98, 97,107,101,102,108, 97,103, 0,112, 97,116,104, 95,115,102, 0,112, 97,116,104, 95,101,102, 0,112, 97,116,104, 95, + 98, 99, 0,112, 97,116,104, 95, 97, 99, 0, 99,111,110,115,116,102,108, 97,103, 0,105,107,102,108, 97,103, 0,115,101,108,101, + 99,116,102,108, 97,103, 0, 97,103,114,112, 95,105,110,100,101,120, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105, +107,116,114,101,101, 0, 42, 98, 95, 98,111,110,101, 95,109, 97,116,115, 0, 42,100,117, 97,108, 95,113,117, 97,116, 0, 42, 98, + 95, 98,111,110,101, 95,100,117, 97,108, 95,113,117, 97,116,115, 0,101,117,108, 91, 51, 93, 0, 99,104, 97,110, 95,109, 97,116, + 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, + 51, 93, 0,112,111,115,101, 95,116, 97,105,108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105,109,105, +116,109, 97,120, 91, 51, 93, 0,115,116,105,102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, 0,105, +107,114,111,116,119,101,105,103,104,116, 0,105,107,108,105,110,119,101,105,103,104,116, 0, 42, 99,117,115,116,111,109, 0, 42, + 99,117,115,116,111,109, 95,116,120, 0, 99,104, 97,110, 98, 97,115,101, 0, 42, 99,104, 97,110,104, 97,115,104, 0,112,114,111, +120,121, 95,108, 97,121,101,114, 0,115,116,114,105,100,101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, + 95,111,102,102,115,101,116, 91, 51, 93, 0, 97,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,103,114,111,117,112, 0, +105,107,115,111,108,118,101,114, 0, 42,105,107,100, 97,116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,112,114,111,120,121, 95, + 97, 99,116, 95, 98,111,110,101, 91, 51, 50, 93, 0,110,117,109,105,116,101,114, 0,110,117,109,115,116,101,112, 0,109,105,110, +115,116,101,112, 0,109, 97,120,115,116,101,112, 0,115,111,108,118,101,114, 0,102,101,101,100, 98, 97, 99,107, 0,109, 97,120, +118,101,108, 0,100, 97,109,112,109, 97,120, 0,100, 97,109,112,101,112,115, 0, 99,104, 97,110,110,101,108,115, 0, 99,117,115, +116,111,109, 67,111,108, 0, 99,115, 0, 99,117,114,118,101,115, 0,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,109, + 97,114,107,101,114, 0, 42,115,111,117,114, 99,101, 0, 42,102,105,108,116,101,114, 95,103,114,112, 0,102,105,108,116,101,114, +102,108, 97,103, 0, 97,100,115, 0,116,105,109,101,115,108,105,100,101, 0, 42,103,114,112, 0,116,101,109,112, 0,110, 97,109, +101, 91, 51, 48, 93, 0,111,119,110,115,112, 97, 99,101, 0,116, 97,114,115,112, 97, 99,101, 0,101,110,102,111,114, 99,101, 0, +104,101, 97,100,116, 97,105,108, 0,108,105,110, 95,101,114,114,111,114, 0,114,111,116, 95,101,114,114,111,114, 0, 42,116, 97, +114, 0,109, 97,116,114,105,120, 91, 52, 93, 91, 52, 93, 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100,101,114, 0,116, 97, +114,110,117,109, 0,116, 97,114,103,101,116,115, 0,105,116,101,114, 97,116,105,111,110,115, 0,114,111,111,116, 98,111,110,101, + 0,109, 97,120, 95,114,111,111,116, 98,111,110,101, 0, 42,112,111,108,101,116, 97,114, 0,112,111,108,101,115,117, 98,116, 97, +114,103,101,116, 91, 51, 50, 93, 0,112,111,108,101, 97,110,103,108,101, 0,111,114,105,101,110,116,119,101,105,103,104,116, 0, +103,114, 97, 98,116, 97,114,103,101,116, 91, 51, 93, 0,110,117,109,112,111,105,110,116,115, 0, 99,104, 97,105,110,108,101,110, + 0,120,122, 83, 99, 97,108,101, 77,111,100,101, 0,114,101,115,101,114,118,101,100, 49, 0,114,101,115,101,114,118,101,100, 50, + 0,109,105,110,109, 97,120,102,108, 97,103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99,107,102, +108, 97,103, 0,102,111,108,108,111,119,102,108, 97,103, 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103, +108,101,110,103,116,104, 0, 98,117,108,103,101, 0,112,105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120, 88, 0, + 97,120, 89, 0, 97,120, 90, 0,109,105,110, 76,105,109,105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54, 93, 0, +101,120,116,114, 97, 70,122, 0,105,110,118,109, 97,116, 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109, 97,112, + 91, 51, 93, 0,101,120,112,111, 0,102,114,111,109, 95,109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91, 51, 93, + 0,116,111, 95,109,105,110, 91, 51, 93, 0,116,111, 95,109, 97,120, 91, 51, 93, 0,114,111,116, 65,120,105,115, 0,122,109,105, +110, 0,122,109, 97,120, 0,112, 97,100, 91, 57, 93, 0, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, + 95, 97,120,105,115, 0,115,116,114,105,100,101, 95, 97,120,105,115, 0, 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114, +116, 0, 97, 99,116,101,110,100, 0, 97, 99,116,111,102,102,115, 0,115,116,114,105,100,101,108,101,110, 0,115, 99, 97,108,101, + 0, 98,108,101,110,100,111,117,116, 0,115,116,114,105,100,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,111,102,102,115, + 95, 98,111,110,101, 91, 51, 50, 93, 0,104, 97,115,105,110,112,117,116, 0,104, 97,115,111,117,116,112,117,116, 0,100, 97,116, + 97,116,121,112,101, 0,115,111, 99,107,101,116,116,121,112,101, 0, 42,110,101,119, 95,115,111, 99,107, 0,110,115, 0,108,105, +109,105,116, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 0,105,110,116,101,114,110, 0,115,116, 97, 99,107, 95,105,110,100, +101,120, 95,101,120,116, 0,108,111, 99,120, 0,108,111, 99,121, 0,111,119,110, 95,105,110,100,101,120, 0,116,111, 95,105,110, +100,101,120, 0, 42,116,111,115,111, 99,107, 0, 42,108,105,110,107, 0, 42,110,101,119, 95,110,111,100,101, 0,108, 97,115,116, +121, 0,111,117,116,112,117,116,115, 0, 42,115,116,111,114, 97,103,101, 0,109,105,110,105,119,105,100,116,104, 0, 99,117,115, +116,111,109, 49, 0, 99,117,115,116,111,109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117,115,116,111,109, 52, 0,110,101,101, +100, 95,101,120,101, 99, 0,101,120,101, 99, 0, 42,116,104,114,101, 97,100,100, 97,116, 97, 0,116,111,116,114, 0, 98,117,116, +114, 0,112,114,118,114, 0, 42, 98,108,111, 99,107, 0, 42,116,121,112,101,105,110,102,111, 0, 42,102,114,111,109,110,111,100, +101, 0, 42,116,111,110,111,100,101, 0, 42,102,114,111,109,115,111, 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0, + 42,115,116, 97, 99,107, 0, 42,116,104,114,101, 97,100,115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, 97, 99,107,115,105, +122,101, 0, 99,117,114, 95,105,110,100,101,120, 0, 97,108,108,116,121,112,101,115, 0, 42,111,119,110,116,121,112,101, 0,112, + 97,100, 50, 91, 50, 93, 0, 40, 42,112,114,111,103,114,101,115,115, 41, 40, 41, 0, 40, 42,115,116, 97,116,115, 95,100,114, 97, +119, 41, 40, 41, 0, 40, 42,116,101,115,116, 95, 98,114,101, 97,107, 41, 40, 41, 0, 42,116, 98,104, 0, 42,112,114,104, 0, 42, +115,100,104, 0, 99,121, 99,108,105, 99, 0,109,111,118,105,101, 0,115, 97,109,112,108,101,115, 0,109,105,110,115,112,101,101, +100, 0,112,101,114, 99,101,110,116,120, 0,112,101,114, 99,101,110,116,121, 0, 98,111,107,101,104, 0,103, 97,109,109, 97, 0, + 99,117,114,118,101,100, 0,105,109, 97,103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109, 97,103,101, 95,105,110, 95,104, +101,105,103,104,116, 0, 99,101,110,116,101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,115,112,105,110, 0,119,114, 97, +112, 0,115,105,103,109, 97, 95, 99,111,108,111,114, 0,115,105,103,109, 97, 95,115,112, 97, 99,101, 0,104,117,101, 0,115, 97, +116, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116,114,101,110,103,116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, 91, + 52, 93, 0, 97,108,103,111,114,105,116,104,109, 0, 99,104, 97,110,110,101,108, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, + 0, 99,111,108,110, 97,109,101, 91, 51, 50, 93, 0, 98,107,116,121,112,101, 0,114,111,116, 97,116,105,111,110, 0,103, 97,109, + 99,111, 0,110,111, 95,122, 98,117,102, 0,102,115,116,111,112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, + 0, 42,100,105, 99,116, 0, 42,110,111,100,101, 0, 97,110,103,108,101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105, +120, 0,116,104,114,101,115,104,111,108,100, 0,102, 97,100,101, 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105, +116, 0,115,108,111,112,101, 91, 51, 93, 0,112,111,119,101,114, 91, 51, 93, 0,108,105,102,116, 95,108,103,103, 91, 51, 93, 0, +108,105,109, 99,104, 97,110, 0,117,110,115,112,105,108,108, 0,108,105,109,115, 99, 97,108,101, 0,117,115,112,105,108,108,114, + 0,117,115,112,105,108,108,103, 0,117,115,112,105,108,108, 98, 0,115,104,111,114,116,121, 0,109,105,110,116, 97, 98,108,101, + 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95,105,110, 91, 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, 42, + 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42,112,114,101,109,117,108,116, 97, 98,108,101, 0,112,114,101,115,101,116, + 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, 0,119,104,105,116,101, + 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, 93, 0,120, 95,114,101,115,111,108,117,116, +105,111,110, 0,100, 97,116, 97, 95,114, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,103, 91, 50, 53, 54, 93, 0,100, 97,116, 97, + 95, 98, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,108,117,109, 97, 91, 50, 53, 54, 93, 0,115, 97,109,112,108,101, 95,102,117, +108,108, 0,115, 97,109,112,108,101, 95,108,105,110,101,115, 0, 97, 99, 99,117,114, 97, 99,121, 0,119, 97,118,101,102,114,109, + 95,109,111,100,101, 0,119, 97,118,101,102,114,109, 95, 97,108,112,104, 97, 0,119, 97,118,101,102,114,109, 95,121,102, 97, 99, + 0,119, 97,118,101,102,114,109, 95,104,101,105,103,104,116, 0,118,101, 99,115, 99,111,112,101, 95, 97,108,112,104, 97, 0,118, +101, 99,115, 99,111,112,101, 95,104,101,105,103,104,116, 0,109,105,110,109, 97,120, 91, 51, 93, 91, 50, 93, 0,104,105,115,116, + 0, 42,119, 97,118,101,102,111,114,109, 95, 49, 0, 42,119, 97,118,101,102,111,114,109, 95, 50, 0, 42,119, 97,118,101,102,111, +114,109, 95, 51, 0, 42,118,101, 99,115, 99,111,112,101, 0,119, 97,118,101,102,111,114,109, 95,116,111,116, 0,111,102,102,115, +101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,109,116,101,120, 0,106,105,116,116,101,114, 0,115,109,111,111,116,104, 95,115, +116,114,111,107,101, 95,114, 97,100,105,117,115, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,102, 97, 99,116,111, +114, 0,114, 97,116,101, 0,114,103, 98, 91, 51, 93, 0,115, 99,117,108,112,116, 95,116,111,111,108, 0,118,101,114,116,101,120, +112, 97,105,110,116, 95,116,111,111,108, 0,105,109, 97,103,101,112, 97,105,110,116, 95,116,111,111,108, 0, 97, 99,116,105,118, +101, 95,114,110,100, 0, 97, 99,116,105,118,101, 95, 99,108,111,110,101, 0, 97, 99,116,105,118,101, 95,109, 97,115,107, 0, 42, +108, 97,121,101,114,115, 0,116,111,116,108, 97,121,101,114, 0,109, 97,120,108, 97,121,101,114, 0,116,111,116,115,105,122,101, + 0, 42,112,111,111,108, 0, 42,101,120,116,101,114,110, 97,108, 0,118,101,108, 91, 51, 93, 0,114,111,116, 91, 52, 93, 0, 97, +118,101, 91, 51, 93, 0, 42,103,114,111,117,110,100, 0,119, 97,110,100,101,114, 91, 51, 93, 0,110,117,109, 0,112, 97,114,101, +110,116, 0,112, 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0,102,111,102,102,115,101,116, 0,114,116, 91, + 50, 93, 0,112,114,101,118, 95,115,116, 97,116,101, 0, 42,104, 97,105,114, 0, 42, 98,111,105,100, 0,100,105,101,116,105,109, +101, 0,110,117,109, 95,100,109, 99, 97, 99,104,101, 0,104, 97,105,114, 95,105,110,100,101,120, 0, 97,108,105,118,101, 0,115, +112,114,105,110,103, 95,107, 0,114,101,115,116, 95,108,101,110,103,116,104, 0,118,105,115, 99,111,115,105,116,121, 95,111,109, +101,103, 97, 0,118,105,115, 99,111,115,105,116,121, 95, 98,101,116, 97, 0,115,116,105,102,102,110,101,115,115, 95,107, 0,115, +116,105,102,102,110,101,115,115, 95,107,110,101, 97,114, 0,114,101,115,116, 95,100,101,110,115,105,116,121, 0, 98,117,111,121, + 97,110, 99,121, 0, 42, 98,111,105,100,115, 0, 42,102,108,117,105,100, 0,100,105,115,116,114, 0,112,104,121,115,116,121,112, +101, 0, 97,118,101,109,111,100,101, 0,114,101, 97, 99,116,101,118,101,110,116, 0,100,114, 97,119, 0,100,114, 97,119, 95, 97, +115, 0,100,114, 97,119, 95,115,105,122,101, 0, 99,104,105,108,100,116,121,112,101, 0,114,101,110, 95, 97,115, 0,115,117, 98, +102,114, 97,109,101,115, 0,114,101,110, 95,115,116,101,112, 0,104, 97,105,114, 95,115,116,101,112, 0,107,101,121,115, 95,115, +116,101,112, 0, 97,100, 97,112,116, 95, 97,110,103,108,101, 0, 97,100, 97,112,116, 95,112,105,120, 0,114,111,116,102,114,111, +109, 0,105,110,116,101,103,114, 97,116,111,114, 0, 98, 98, 95, 97,108,105,103,110, 0, 98, 98, 95,117,118, 95,115,112,108,105, +116, 0, 98, 98, 95, 97,110,105,109, 0, 98, 98, 95,115,112,108,105,116, 95,111,102,102,115,101,116, 0, 98, 98, 95,116,105,108, +116, 0, 98, 98, 95,114, 97,110,100, 95,116,105,108,116, 0, 98, 98, 95,111,102,102,115,101,116, 91, 50, 93, 0,115,105,109,112, +108,105,102,121, 95,114,101,102,115,105,122,101, 0,115,105,109,112,108,105,102,121, 95,114, 97,116,101, 0,115,105,109,112,108, +105,102,121, 95,116,114, 97,110,115,105,116,105,111,110, 0,115,105,109,112,108,105,102,121, 95,118,105,101,119,112,111,114,116, + 0,116,105,109,101,116,119,101, 97,107, 0,106,105,116,102, 97, 99, 0,101,102,102, 95,104, 97,105,114, 0,103,114,105,100, 95, +114,101,115, 0,112, 97,114,116,102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116, 97,110,112,104, 97,115,101, 0,114,101, 97, 99, +116,102, 97, 99, 0,111, 98, 95,118,101,108, 91, 51, 93, 0, 97,118,101,102, 97, 99, 0,112,104, 97,115,101,102, 97, 99, 0,114, + 97,110,100,114,111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,115,105,122,101, 0, +114,101, 97, 99,116,115,104, 97,112,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97,103,102, 97, 99, 0, 98,114,111,119,110,102, + 97, 99, 0,100, 97,109,112,102, 97, 99, 0,114, 97,110,100,108,101,110,103,116,104, 0, 99,104,105,108,100, 95,110, 98,114, 0, +114,101,110, 95, 99,104,105,108,100, 95,110, 98,114, 0,112, 97,114,101,110,116,115, 0, 99,104,105,108,100,115,105,122,101, 0, + 99,104,105,108,100,114, 97,110,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,100, 0, 99,104,105,108,100,102,108, 97,116, + 0, 99,108,117,109,112,112,111,119, 0,114,111,117,103,104, 49, 0,114,111,117,103,104, 49, 95,115,105,122,101, 0,114,111,117, +103,104, 50, 0,114,111,117,103,104, 50, 95,115,105,122,101, 0,114,111,117,103,104, 50, 95,116,104,114,101,115, 0,114,111,117, +103,104, 95,101,110,100, 0,114,111,117,103,104, 95,101,110,100, 95,115,104, 97,112,101, 0, 99,108,101,110,103,116,104, 0, 99, +108,101,110,103,116,104, 95,116,104,114,101,115, 0, 98,114, 97,110, 99,104, 95,116,104,114,101,115, 0,100,114, 97,119, 95,108, +105,110,101, 91, 50, 93, 0,112, 97,116,104, 95,115,116, 97,114,116, 0,112, 97,116,104, 95,101,110,100, 0,116,114, 97,105,108, + 95, 99,111,117,110,116, 0,107,101,121,101,100, 95,108,111,111,112,115, 0,100,117,112,108,105,119,101,105,103,104,116,115, 0, + 42,101,102,102, 95,103,114,111,117,112, 0, 42,100,117,112, 95,111, 98, 0, 42, 98, 98, 95,111, 98, 0, 42,112,100, 50, 0, 42, +112, 97,114,116, 0, 42,112, 97,114,116,105, 99,108,101,115, 0, 42, 42,112, 97,116,104, 99, 97, 99,104,101, 0, 42, 42, 99,104, +105,108,100, 99, 97, 99,104,101, 0,112, 97,116,104, 99, 97, 99,104,101, 98,117,102,115, 0, 99,104,105,108,100, 99, 97, 99,104, +101, 98,117,102,115, 0, 42, 99,108,109,100, 0, 42,104, 97,105,114, 95,105,110, 95,100,109, 0, 42,104, 97,105,114, 95,111,117, +116, 95,100,109, 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42,108, 97,116,116,105, 99,101, 0,116,114,101,101, 95,102,114, + 97,109,101, 0,116,111,116, 99,104,105,108,100, 0,116,111,116, 99, 97, 99,104,101,100, 0,116,111,116, 99,104,105,108,100, 99, + 97, 99,104,101, 0,116, 97,114,103,101,116, 95,112,115,121,115, 0,116,111,116,107,101,121,101,100, 0, 98, 97,107,101,115,112, + 97, 99,101, 0, 98, 98, 95,117,118,110, 97,109,101, 91, 51, 93, 91, 51, 50, 93, 0,118,103,114,111,117,112, 91, 49, 50, 93, 0, +118,103, 95,110,101,103, 0,114,116, 51, 0, 42,114,101,110,100,101,114,100, 97,116, 97, 0, 42,101,102,102,101, 99,116,111,114, +115, 0, 42,116,114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97,110,100, 0, 67,100,105,115, 0, 67,118,105, 0,115,116,114, +117, 99,116,117,114, 97,108, 0, 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98,101,110,100, 0,109, 97,120, 95,115,116,114, +117, 99,116, 0,109, 97,120, 95,115,104,101, 97,114, 0, 97,118,103, 95,115,112,114,105,110,103, 95,108,101,110, 0,116,105,109, +101,115, 99, 97,108,101, 0,101,102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108,101, 0,101,102,102, 95,119,105,110,100, 95, +115, 99, 97,108,101, 0,115,105,109, 95,116,105,109,101, 95,111,108,100, 0,118,101,108,111, 99,105,116,121, 95,115,109,111,111, +116,104, 0, 99,111,108,108,105,100,101,114, 95,102,114,105, 99,116,105,111,110, 0,115,116,101,112,115, 80,101,114, 70,114, 97, +109,101, 0,112,114,101,114,111,108,108, 0,109, 97,120,115,112,114,105,110,103,108,101,110, 0,115,111,108,118,101,114, 95,116, +121,112,101, 0,118,103,114,111,117,112, 95, 98,101,110,100, 0,118,103,114,111,117,112, 95,109, 97,115,115, 0,118,103,114,111, +117,112, 95,115,116,114,117, 99,116, 0,115,104, 97,112,101,107,101,121, 95,114,101,115,116, 0,112,114,101,115,101,116,115, 0, +114,101,115,101,116, 0, 42, 99,111,108,108,105,115,105,111,110, 95,108,105,115,116, 0,101,112,115,105,108,111,110, 0,115,101, +108,102, 95,102,114,105, 99,116,105,111,110, 0,115,101,108,102,101,112,115,105,108,111,110, 0,115,101,108,102, 95,108,111,111, +112, 95, 99,111,117,110,116, 0,108,111,111,112, 95, 99,111,117,110,116, 0,112,114,101,115,115,117,114,101, 0,116,104,105, 99, +107,110,101,115,115, 0,115,116,114,111,107,101,115, 0,102,114, 97,109,101,110,117,109, 0, 42, 97, 99,116,102,114, 97,109,101, + 0,103,115,116,101,112, 0,105,110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102,101,114, 95,115,105,122,101, 0,115, 98, +117,102,102,101,114, 95,115,102,108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, 42,116,121,112,101,115,116,114, 0, 42,109, +101,115,115, 97,103,101, 0,108,105,115,116, 0,112,114,105,110,116,108,101,118,101,108, 0,115,116,111,114,101,108,101,118,101, +108, 0, 42,114,101,112,111,114,116,116,105,109,101,114, 0,103,114,101,121,115, 99, 97,108,101, 0,119,105,100,116,104,102, 97, + 99, 0, 42,119,105,110,100,114, 97,119, 97, 98,108,101, 0, 42,119,105,110, 97, 99,116,105,118,101, 0,119,105,110,100,111,119, +115, 0,105,110,105,116,105, 97,108,105,122,101,100, 0,102,105,108,101, 95,115, 97,118,101,100, 0,111,112, 95,117,110,100,111, + 95,100,101,112,116,104, 0,111,112,101,114, 97,116,111,114,115, 0,113,117,101,117,101, 0,114,101,112,111,114,116,115, 0,106, +111, 98,115, 0,112, 97,105,110,116, 99,117,114,115,111,114,115, 0,100,114, 97,103,115, 0,107,101,121, 99,111,110,102,105,103, +115, 0, 42,100,101,102, 97,117,108,116, 99,111,110,102, 0,116,105,109,101,114,115, 0, 42, 97,117,116,111,115, 97,118,101,116, +105,109,101,114, 0, 42,103,104,111,115,116,119,105,110, 0,103,114, 97, 98, 99,117,114,115,111,114, 0, 42,110,101,119,115, 99, +114,101,101,110, 0,115, 99,114,101,101,110,110, 97,109,101, 91, 51, 50, 93, 0,112,111,115,120, 0,112,111,115,121, 0,119,105, +110,100,111,119,115,116, 97,116,101, 0,109,111,110,105,116,111,114, 0,108, 97,115,116, 99,117,114,115,111,114, 0, 97,100,100, +109,111,117,115,101,109,111,118,101, 0, 42,101,118,101,110,116,115,116, 97,116,101, 0, 42, 99,117,114,115,119,105,110, 0, 42, +116,119,101, 97,107, 0,100,114, 97,119,109,101,116,104,111,100, 0,100,114, 97,119,102, 97,105,108, 0, 42,100,114, 97,119,100, + 97,116, 97, 0,109,111,100, 97,108,104, 97,110,100,108,101,114,115, 0,115,117, 98,119,105,110,100,111,119,115, 0,103,101,115, +116,117,114,101, 0,105,100,110, 97,109,101, 91, 54, 52, 93, 0,112,114,111,112,118, 97,108,117,101, 0,115,104,105,102,116, 0, + 99,116,114,108, 0, 97,108,116, 0,111,115,107,101,121, 0,107,101,121,109,111,100,105,102,105,101,114, 0,109, 97,112,116,121, +112,101, 0, 42,112,116,114, 0,105,116,101,109,115, 0,115,112, 97, 99,101,105,100, 0,114,101,103,105,111,110,105,100, 0,107, +109,105, 95,105,100, 0, 40, 42,112,111,108,108, 41, 40, 41, 0, 42,109,111,100, 97,108, 95,105,116,101,109,115, 0, 98, 97,115, +101,110, 97,109,101, 91, 54, 52, 93, 0, 97, 99,116,107,101,121,109, 97,112, 0, 42, 99,117,115,116,111,109,100, 97,116, 97, 0, + 42,112,121, 95,105,110,115,116, 97,110, 99,101, 0, 42,114,101,112,111,114,116,115, 0,109, 97, 99,114,111, 0, 42,111,112,109, + 0, 42,101,100, 97,116, 97, 0,105,110,102,108,117,101,110, 99,101, 0, 42, 99,111,101,102,102,105, 99,105,101,110,116,115, 0, + 97,114,114, 97,121,115,105,122,101, 0,112,111,108,121, 95,111,114,100,101,114, 0, 97,109,112,108,105,116,117,100,101, 0,112, +104, 97,115,101, 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, 97,115,101, 95,111,102,102,115,101,116, 0,118, 97,108, +117,101, 95,111,102,102,115,101,116, 0,109,105,100,118, 97,108, 0, 98,101,102,111,114,101, 95,109,111,100,101, 0, 97,102,116, +101,114, 95,109,111,100,101, 0, 98,101,102,111,114,101, 95, 99,121, 99,108,101,115, 0, 97,102,116,101,114, 95, 99,121, 99,108, +101,115, 0,114,101, 99,116, 0,112,104, 97,115,101, 0,109,111,100,105,102,105, 99, 97,116,105,111,110, 0,115,116,101,112, 95, +115,105,122,101, 0, 42,114,110, 97, 95,112, 97,116,104, 0,112, 99,104, 97,110, 95,110, 97,109,101, 91, 51, 50, 93, 0,116,114, + 97,110,115, 67,104, 97,110, 0,105,100,116,121,112,101, 0,116, 97,114,103,101,116,115, 91, 56, 93, 0,110,117,109, 95,116, 97, +114,103,101,116,115, 0,118, 97,114,105, 97, 98,108,101,115, 0,101,120,112,114,101,115,115,105,111,110, 91, 50, 53, 54, 93, 0, + 42,101,120,112,114, 95, 99,111,109,112, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, 0, 97,114,114, 97,121, 95,105,110,100, +101,120, 0, 99,111,108,111,114, 95,109,111,100,101, 0, 99,111,108,111,114, 91, 51, 93, 0,102,114,111,109, 91, 49, 50, 56, 93, + 0,116,111, 91, 49, 50, 56, 93, 0,109, 97,112,112,105,110,103,115, 0,115,116,114,105,112,115, 0, 42,114,101,109, 97,112, 0, +102, 99,117,114,118,101,115, 0,115,116,114,105,112, 95,116,105,109,101, 0, 98,108,101,110,100,109,111,100,101, 0,101,120,116, +101,110,100,109,111,100,101, 0,103,114,111,117,112, 91, 54, 52, 93, 0,103,114,111,117,112,109,111,100,101, 0,107,101,121,105, +110,103,102,108, 97,103, 0,112, 97,116,104,115, 0,116,121,112,101,105,110,102,111, 91, 54, 52, 93, 0, 97, 99,116,105,118,101, + 95,112, 97,116,104, 0, 42,116,109,112, 97, 99,116, 0,110,108, 97, 95,116,114, 97, 99,107,115, 0, 42, 97, 99,116,115,116,114, +105,112, 0,100,114,105,118,101,114,115, 0,111,118,101,114,114,105,100,101,115, 0, 97, 99,116, 95, 98,108,101,110,100,109,111, +100,101, 0, 97, 99,116, 95,101,120,116,101,110,100,109,111,100,101, 0, 97, 99,116, 95,105,110,102,108,117,101,110, 99,101, 0, +114,117,108,101, 0,111,112,116,105,111,110,115, 0,102,101, 97,114, 95,102, 97, 99,116,111,114, 0,115,105,103,110, 97,108, 95, +105,100, 0,108,111,111,107, 95, 97,104,101, 97,100, 0,111,108,111, 99, 91, 51, 93, 0,113,117,101,117,101, 95,115,105,122,101, + 0,119, 97,110,100,101,114, 0,102,108,101,101, 95,100,105,115,116, 97,110, 99,101, 0,104,101, 97,108,116,104, 0,115,116, 97, +116,101, 95,105,100, 0,114,117,108,101,115, 0, 99,111,110,100,105,116,105,111,110,115, 0, 97, 99,116,105,111,110,115, 0,114, +117,108,101,115,101,116, 95,116,121,112,101, 0,114,117,108,101, 95,102,117,122,122,105,110,101,115,115, 0,108, 97,115,116, 95, +115,116, 97,116,101, 95,105,100, 0,108, 97,110,100,105,110,103, 95,115,109,111,111,116,104,110,101,115,115, 0, 98, 97,110,107, +105,110,103, 0, 97,103,103,114,101,115,115,105,111,110, 0, 97,105,114, 95,109,105,110, 95,115,112,101,101,100, 0, 97,105,114, + 95,109, 97,120, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, 99, 0, 97,105,114, 95,109, 97,120, 95, 97, +118,101, 0, 97,105,114, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,106,117,109,112, 95, +115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95, 97, 99, + 99, 0,108, 97,110,100, 95,109, 97,120, 95, 97,118,101, 0,108, 97,110,100, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, + 99,101, 0,108, 97,110,100, 95,115,116,105, 99,107, 95,102,111,114, 99,101, 0,115,116, 97,116,101,115, 0, 42,115,109,100, 0, + 42,102,108,117,105,100, 95,103,114,111,117,112, 0, 42, 99,111,108,108, 95,103,114,111,117,112, 0, 42,119,116, 0, 42,116,101, +120, 95,119,116, 0, 42,116,101,120, 95,115,104, 97,100,111,119, 0, 42,115,104, 97,100,111,119, 0,112, 48, 91, 51, 93, 0,112, + 49, 91, 51, 93, 0,100,120, 0,111,109,101,103, 97, 0,116,101,109,112, 65,109, 98, 0, 98,101,116, 97, 0,114,101,115, 91, 51, + 93, 0, 97,109,112,108,105,102,121, 0,109, 97,120,114,101,115, 0,118,105,101,119,115,101,116,116,105,110,103,115, 0,110,111, +105,115,101, 0,100,105,115,115, 95,112,101,114, 99,101,110,116, 0,100,105,115,115, 95,115,112,101,101,100, 0,114,101,115, 95, +119,116, 91, 51, 93, 0,100,120, 95,119,116, 0,118, 51,100,110,117,109, 0, 99, 97, 99,104,101, 95, 99,111,109,112, 0, 99, 97, + 99,104,101, 95,104,105,103,104, 95, 99,111,109,112, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 91, 50, 93, 0,112,116, + 99, 97, 99,104,101,115, 91, 50, 93, 0,118,101,108,111, 99,105,116,121, 91, 51, 93, 0,118,103,114,112, 95,104,101, 97,116, 95, +115, 99, 97,108,101, 91, 50, 93, 0,118,103,114,111,117,112, 95,102,108,111,119, 0,118,103,114,111,117,112, 95,100,101,110,115, +105,116,121, 0,118,103,114,111,117,112, 95,104,101, 97,116, 0, 42,112,111,105,110,116,115, 95,111,108,100, 0, 42,118,101,108, + 0,109, 97,116, 95,111,108,100, 91, 52, 93, 91, 52, 93, 0, 0, 84, 89, 80, 69,212, 1, 0, 0, 99,104, 97,114, 0,117, 99,104, + 97,114, 0,115,104,111,114,116, 0,117,115,104,111,114,116, 0,105,110,116, 0,108,111,110,103, 0,117,108,111,110,103, 0,102, +108,111, 97,116, 0,100,111,117, 98,108,101, 0,118,111,105,100, 0, 76,105,110,107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76, +105,115,116, 66, 97,115,101, 0,118,101, 99, 50,115, 0,118,101, 99, 50,102, 0,118,101, 99, 50,105, 0,118,101, 99, 50,100, 0, +118,101, 99, 51,105, 0,118,101, 99, 51,102, 0,118,101, 99, 51,100, 0,118,101, 99, 52,105, 0,118,101, 99, 52,102, 0,118,101, + 99, 52,100, 0,114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, 80,114,111,112,101,114,116,121, 68, 97,116, 97, 0, 73, 68, 80, +114,111,112,101,114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70,105,108,101, 68, 97,116, 97, 0, 80,114,101,118, +105,101,119, 73,109, 97,103,101, 0, 73,112,111, 68,114,105,118,101,114, 0, 79, 98,106,101, 99,116, 0, 73,112,111, 67,117,114, +118,101, 0, 66, 80,111,105,110,116, 0, 66,101,122, 84,114,105,112,108,101, 0, 73,112,111, 0, 75,101,121, 66,108,111, 99,107, + 0, 75,101,121, 0, 65,110,105,109, 68, 97,116, 97, 0, 84,101,120,116, 76,105,110,101, 0, 84,101,120,116, 77, 97,114,107,101, +114, 0, 84,101,120,116, 0, 80, 97, 99,107,101,100, 70,105,108,101, 0, 67, 97,109,101,114, 97, 0, 73,109, 97,103,101, 85,115, +101,114, 0, 83, 99,101,110,101, 0, 73,109, 97,103,101, 0, 71, 80, 85, 84,101,120,116,117,114,101, 0, 97,110,105,109, 0, 82, +101,110,100,101,114, 82,101,115,117,108,116, 0, 77, 84,101,120, 0, 84,101,120, 0, 80,108,117,103,105,110, 84,101,120, 0, 67, + 66, 68, 97,116, 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, 69,110,118, 77, 97,112, 0, 73,109, 66,117,102, 0, 80,111,105, +110,116, 68,101,110,115,105,116,121, 0, 86,111,120,101,108, 68, 97,116, 97, 0, 98, 78,111,100,101, 84,114,101,101, 0, 84,101, +120, 77, 97,112,112,105,110,103, 0, 76, 97,109,112, 0, 67,117,114,118,101, 77, 97,112,112,105,110,103, 0, 87, 97,118,101, 0, + 86,111,108,117,109,101, 83,101,116,116,105,110,103,115, 0, 77, 97,116,101,114,105, 97,108, 0, 71,114,111,117,112, 0, 86, 70, +111,110,116, 0, 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108,101,109, 0, 66,111,117,110,100, 66,111,120, 0, + 77,101,116, 97, 66, 97,108,108, 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110,102,111, 0, 84,101,120,116, 66,111,120, 0, 67, +117,114,118,101, 0, 80, 97,116,104, 0, 83,101,108, 66,111,120, 0, 69,100,105,116, 70,111,110,116, 0, 77,101,115,104, 0, 77, + 70, 97, 99,101, 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86,101,114,116, 0, 77, 69,100,103,101, 0, 77, 68, +101,102,111,114,109, 86,101,114,116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99,107,121, 0, 77, 83,101,108,101, 99,116, 0, 69, +100,105,116, 77,101,115,104, 0, 67,117,115,116,111,109, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 0, 80, 97,114,116, +105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 0, 77, 68,101,102,111,114,109, 87,101,105,103,104,116, 0, 77, 84,101,120, + 80,111,108,121, 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111,111,112, 67,111,108, 0, 77, 70,108,111, 97,116, 80,114,111,112, +101,114,116,121, 0, 77, 73,110,116, 80,114,111,112,101,114,116,121, 0, 77, 83,116,114,105,110,103, 80,114,111,112,101,114,116, +121, 0, 79,114,105,103, 83,112, 97, 99,101, 70, 97, 99,101, 0, 77, 68,105,115,112,115, 0, 77,117,108,116,105,114,101,115, 67, +111,108, 0, 77,117,108,116,105,114,101,115, 67,111,108, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 70, 97, 99,101, 0, + 77,117,108,116,105,114,101,115, 69,100,103,101, 0, 77,117,108,116,105,114,101,115, 76,101,118,101,108, 0, 77,111,100,105,102, +105,101,114, 68, 97,116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116, +105, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,114,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, + 97, 0, 66,117,105,108,100, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 97,115,107, 77,111,100,105,102,105,101,114, + 68, 97,116, 97, 0, 65,114,114, 97,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,105,114,114,111,114, 77,111,100, +105,102,105,101,114, 68, 97,116, 97, 0, 69,100,103,101, 83,112,108,105,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, + 66,101,118,101,108, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 77,101,115,104, 77,111,100,105,102,105,101,114, 68, + 97,116, 97, 0, 83,109,111,107,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 68,111,109, 97,105, +110, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 70,108,111,119, 83,101,116,116,105,110,103,115, 0, 83,109,111,107, +101, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 68,105,115,112,108, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97, +116, 97, 0, 85, 86, 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101, 99,105,109, 97,116, +101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, + 0, 67, 97,115,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87, 97,118,101, 77,111,100,105,102,105,101,114, 68, 97, +116, 97, 0, 65,114,109, 97,116,117,114,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 72,111,111,107, 77,111,100,105, +102,105,101,114, 68, 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108, +111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 0, 67,108,111,116,104, 83,105,109, 83,101, +116,116,105,110,103,115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 80,111,105,110,116, 67, 97, + 99,104,101, 0, 67,111,108,108,105,115,105,111,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 86, 72, 84,114,101, +101, 0, 83,117,114,102, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101,114,105,118,101,100, 77,101,115, +104, 0, 66, 86, 72, 84,114,101,101, 70,114,111,109, 77,101,115,104, 0, 66,111,111,108,101, 97,110, 77,111,100,105,102,105,101, +114, 68, 97,116, 97, 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101, 0, 77, 68,101,102, 67,101,108,108, 0, 77,101,115, +104, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116, +101,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 0, 80, 97, +114,116,105, 99,108,101, 73,110,115,116, 97,110, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,120,112,108,111, +100,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 77,111,100,105,102,105,101,114, 68, + 97,116, 97, 0, 70,108,117,105,100,115,105,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105, +109, 83,101,116,116,105,110,103,115, 0, 83,104,114,105,110,107,119,114, 97,112, 77,111,100,105,102,105,101,114, 68, 97,116, 97, + 0, 83,105,109,112,108,101, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,104, 97,112,101, 75, +101,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,108,105,100,105,102,121, 77,111,100,105,102,105,101,114, 68, + 97,116, 97, 0, 83, 99,114,101,119, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 0, 98, 68, +101,102,111,114,109, 71,114,111,117,112, 0, 83, 99,117,108,112,116, 83,101,115,115,105,111,110, 0, 98, 65, 99,116,105,111,110, + 0, 98, 80,111,115,101, 0, 98, 71, 80,100, 97,116, 97, 0, 98, 65,110,105,109, 86,105,122, 83,101,116,116,105,110,103,115, 0, + 98, 77,111,116,105,111,110, 80, 97,116,104, 0, 66,117,108,108,101,116, 83,111,102,116, 66,111,100,121, 0, 80, 97,114,116, 68, +101,102,108,101, 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 79, 98, 72,111,111,107, 0, 68,117,112,108,105, 79, 98,106,101, + 99,116, 0, 82, 78, 71, 0, 69,102,102,101, 99,116,111,114, 87,101,105,103,104,116,115, 0, 80, 84, 67, 97, 99,104,101, 77,101, +109, 0, 80, 84, 67, 97, 99,104,101, 69,100,105,116, 0, 83, 66, 86,101,114,116,101,120, 0, 66,111,100,121, 80,111,105,110,116, + 0, 66,111,100,121, 83,112,114,105,110,103, 0, 83, 66, 83, 99,114, 97,116, 99,104, 0, 87,111,114,108,100, 0, 66, 97,115,101, + 0, 65,118,105, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 68, 97,116, 97, + 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 83,101,116,116,105,110,103,115, 0, 70, 70, 77,112,101,103, 67,111, +100,101, 99, 68, 97,116, 97, 0, 65,117,100,105,111, 68, 97,116, 97, 0, 83, 99,101,110,101, 82,101,110,100,101,114, 76, 97,121, +101,114, 0, 82,101,110,100,101,114, 68, 97,116, 97, 0, 82,101,110,100,101,114, 80,114,111,102,105,108,101, 0, 71, 97,109,101, + 68,111,109,101, 0, 71, 97,109,101, 70,114, 97,109,105,110,103, 0, 71, 97,109,101, 68, 97,116, 97, 0, 84,105,109,101, 77, 97, +114,107,101,114, 0, 80, 97,105,110,116, 0, 66,114,117,115,104, 0, 73,109, 97,103,101, 80, 97,105,110,116, 83,101,116,116,105, +110,103,115, 0, 80, 97,114,116,105, 99,108,101, 66,114,117,115,104, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 69,100, +105,116, 83,101,116,116,105,110,103,115, 0, 84,114, 97,110,115,102,111,114,109, 79,114,105,101,110,116, 97,116,105,111,110, 0, + 83, 99,117,108,112,116, 0, 86, 80, 97,105,110,116, 0, 84,111,111,108, 83,101,116,116,105,110,103,115, 0, 98, 83,116, 97,116, +115, 0, 85,110,105,116, 83,101,116,116,105,110,103,115, 0, 80,104,121,115,105, 99,115, 83,101,116,116,105,110,103,115, 0, 69, +100,105,116,105,110,103, 0, 83, 99,101,110,101, 83,116, 97,116,115, 0, 68, 97,103, 70,111,114,101,115,116, 0, 66, 71,112,105, + 99, 0, 82,101,103,105,111,110, 86,105,101,119, 51, 68, 0, 82,101,110,100,101,114, 73,110,102,111, 0, 82,101,116,111,112,111, + 86,105,101,119, 68, 97,116, 97, 0, 86,105,101,119, 68,101,112,116,104,115, 0, 83,109,111,111,116,104, 86,105,101,119, 83,116, +111,114,101, 0,119,109, 84,105,109,101,114, 0, 86,105,101,119, 51, 68, 0, 83,112, 97, 99,101, 76,105,110,107, 0, 86,105,101, +119, 50, 68, 0, 83,112, 97, 99,101, 73,110,102,111, 0, 98, 83, 99,114,101,101,110, 0, 83,112, 97, 99,101, 73,112,111, 0, 98, + 68,111,112,101, 83,104,101,101,116, 0, 83,112, 97, 99,101, 66,117,116,115, 0, 83,112, 97, 99,101, 83,101,113, 0, 70,105,108, +101, 83,101,108,101, 99,116, 80, 97,114, 97,109,115, 0, 83,112, 97, 99,101, 70,105,108,101, 0, 70,105,108,101, 76,105,115,116, + 0,119,109, 79,112,101,114, 97,116,111,114, 0, 70,105,108,101, 76, 97,121,111,117,116, 0, 83,112, 97, 99,101, 79,111,112,115, + 0, 84,114,101,101, 83,116,111,114,101, 0, 84,114,101,101, 83,116,111,114,101, 69,108,101,109, 0, 83,112, 97, 99,101, 73,109, + 97,103,101, 0, 83, 99,111,112,101,115, 0, 72,105,115,116,111,103,114, 97,109, 0, 83,112, 97, 99,101, 78,108, 97, 0, 83,112, + 97, 99,101, 84,101,120,116, 0, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, + 84,105,109,101, 67, 97, 99,104,101, 0, 83,112, 97, 99,101, 84,105,109,101, 0, 83,112, 97, 99,101, 78,111,100,101, 0, 83,112, + 97, 99,101, 76,111,103,105, 99, 0, 83,112, 97, 99,101, 73,109, 97, 83,101,108, 0, 67,111,110,115,111,108,101, 76,105,110,101, + 0, 83,112, 97, 99,101, 67,111,110,115,111,108,101, 0, 83,112, 97, 99,101, 85,115,101,114, 80,114,101,102, 0,117,105, 70,111, +110,116, 0,117,105, 70,111,110,116, 83,116,121,108,101, 0,117,105, 83,116,121,108,101, 0,117,105, 87,105,100,103,101,116, 67, +111,108,111,114,115, 0,117,105, 87,105,100,103,101,116, 83,116, 97,116,101, 67,111,108,111,114,115, 0, 84,104,101,109,101, 85, + 73, 0, 84,104,101,109,101, 83,112, 97, 99,101, 0, 84,104,101,109,101, 87,105,114,101, 67,111,108,111,114, 0, 98, 84,104,101, +109,101, 0, 98, 65,100,100,111,110, 0, 83,111,108,105,100, 76,105,103,104,116, 0, 85,115,101,114, 68,101,102, 0, 83, 99,114, + 86,101,114,116, 0, 83, 99,114, 69,100,103,101, 0, 80, 97,110,101,108, 0, 80, 97,110,101,108, 84,121,112,101, 0,117,105, 76, + 97,121,111,117,116, 0, 83, 99,114, 65,114,101, 97, 0, 83,112, 97, 99,101, 84,121,112,101, 0, 65, 82,101,103,105,111,110, 0, + 65, 82,101,103,105,111,110, 84,121,112,101, 0, 70,105,108,101, 71,108,111, 98, 97,108, 0, 83,116,114,105,112, 69,108,101,109, + 0, 84, 83,116,114,105,112, 69,108,101,109, 0, 83,116,114,105,112, 67,114,111,112, 0, 83,116,114,105,112, 84,114, 97,110,115, +102,111,114,109, 0, 83,116,114,105,112, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 83,116,114,105,112, 80,114,111,120, +121, 0, 83,116,114,105,112, 0, 80,108,117,103,105,110, 83,101,113, 0, 83,101,113,117,101,110, 99,101, 0, 98, 83,111,117,110, +100, 0, 77,101,116, 97, 83,116, 97, 99,107, 0, 87,105,112,101, 86, 97,114,115, 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, + 97,110,115,102,111,114,109, 86, 97,114,115, 0, 83,111,108,105,100, 67,111,108,111,114, 86, 97,114,115, 0, 83,112,101,101,100, + 67,111,110,116,114,111,108, 86, 97,114,115, 0, 69,102,102,101, 99,116, 0, 66,117,105,108,100, 69,102,102, 0, 80, 97,114,116, + 69,102,102, 0, 80, 97,114,116,105, 99,108,101, 0, 87, 97,118,101, 69,102,102, 0, 98, 80,114,111,112,101,114,116,121, 0, 98, + 78,101, 97,114, 83,101,110,115,111,114, 0, 98, 77,111,117,115,101, 83,101,110,115,111,114, 0, 98, 84,111,117, 99,104, 83,101, +110,115,111,114, 0, 98, 75,101,121, 98,111, 97,114,100, 83,101,110,115,111,114, 0, 98, 80,114,111,112,101,114,116,121, 83,101, +110,115,111,114, 0, 98, 65, 99,116,117, 97,116,111,114, 83,101,110,115,111,114, 0, 98, 68,101,108, 97,121, 83,101,110,115,111, +114, 0, 98, 67,111,108,108,105,115,105,111,110, 83,101,110,115,111,114, 0, 98, 82, 97,100, 97,114, 83,101,110,115,111,114, 0, + 98, 82, 97,110,100,111,109, 83,101,110,115,111,114, 0, 98, 82, 97,121, 83,101,110,115,111,114, 0, 98, 65,114,109, 97,116,117, +114,101, 83,101,110,115,111,114, 0, 98, 77,101,115,115, 97,103,101, 83,101,110,115,111,114, 0, 98, 83,101,110,115,111,114, 0, + 98, 67,111,110,116,114,111,108,108,101,114, 0, 98, 74,111,121,115,116,105, 99,107, 83,101,110,115,111,114, 0, 98, 69,120,112, +114,101,115,115,105,111,110, 67,111,110,116, 0, 98, 80,121,116,104,111,110, 67,111,110,116, 0, 98, 65, 99,116,117, 97,116,111, +114, 0, 98, 65,100,100, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 65, 99,116,105,111,110, 65, 99,116,117, + 97,116,111,114, 0, 98, 83,111,117,110,100, 65, 99,116,117, 97,116,111,114, 0, 83,111,117,110,100, 51, 68, 0, 98, 69,100,105, +116, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83, 99,101,110,101, 65, 99,116,117, 97,116,111,114, 0, 98, + 80,114,111,112,101,114,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, + 0, 98, 73,112,111, 65, 99,116,117, 97,116,111,114, 0, 98, 67, 97,109,101,114, 97, 65, 99,116,117, 97,116,111,114, 0, 98, 67, +111,110,115,116,114, 97,105,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 71,114,111,117,112, 65, 99,116,117, 97,116,111,114, + 0, 98, 82, 97,110,100,111,109, 65, 99,116,117, 97,116,111,114, 0, 98, 77,101,115,115, 97,103,101, 65, 99,116,117, 97,116,111, +114, 0, 98, 71, 97,109,101, 65, 99,116,117, 97,116,111,114, 0, 98, 86,105,115,105, 98,105,108,105,116,121, 65, 99,116,117, 97, +116,111,114, 0, 98, 84,119,111, 68, 70,105,108,116,101,114, 65, 99,116,117, 97,116,111,114, 0, 98, 80, 97,114,101,110,116, 65, + 99,116,117, 97,116,111,114, 0, 98, 83,116, 97,116,101, 65, 99,116,117, 97,116,111,114, 0, 98, 65,114,109, 97,116,117,114,101, + 65, 99,116,117, 97,116,111,114, 0, 70,114,101,101, 67, 97,109,101,114, 97, 0, 83,112, 97, 99,101, 83,111,117,110,100, 0, 71, +114,111,117,112, 79, 98,106,101, 99,116, 0, 66,111,110,101, 0, 98, 65,114,109, 97,116,117,114,101, 0, 98, 77,111,116,105,111, +110, 80, 97,116,104, 86,101,114,116, 0, 98, 80,111,115,101, 67,104, 97,110,110,101,108, 0, 71, 72, 97,115,104, 0, 98, 73, 75, + 80, 97,114, 97,109, 0, 98, 73,116, 97,115, 99, 0, 98, 65, 99,116,105,111,110, 71,114,111,117,112, 0, 83,112, 97, 99,101, 65, + 99,116,105,111,110, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, + 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 84, + 97,114,103,101,116, 0, 98, 80,121,116,104,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 75,105,110,101,109, 97,116, +105, 99, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,112,108,105,110,101, 73, 75, 67,111,110,115,116,114, 97,105,110,116, + 0, 98, 84,114, 97, 99,107, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,101, 76,105,107,101, 67, +111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, + 98, 83,105,122,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83, 97,109,101, 86,111,108,117,109,101, 67, +111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, + 77,105,110, 77, 97,120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 67,111,110,115,116,114, 97,105, +110,116, 0, 98, 76,111, 99,107, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68, 97,109,112, 84,114, 97, + 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111,110,115,116,114, 97,105, +110,116, 0, 98, 83,116,114,101,116, 99,104, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,105,103,105,100, 66,111, +100,121, 74,111,105,110,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, 67,111,110,115,116,114, + 97,105,110,116, 0, 98, 67,104,105,108,100, 79,102, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115,102,111, +114,109, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 80,105,118,111,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76, +111, 99, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 76,105,109,105,116, 67,111,110,115,116, +114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68,105,115,116, + 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,104,114,105,110,107,119,114, 97,112, 67,111,110,115,116, +114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 77,111,100,105,102,105,101,114, 0, 98, 65, 99,116,105,111,110, 83,116,114, +105,112, 0, 98, 78,111,100,101, 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 0, 98, 78,111,100,101, 76, +105,110,107, 0, 98, 78,111,100,101, 0, 98, 78,111,100,101, 80,114,101,118,105,101,119, 0,117,105, 66,108,111, 99,107, 0, 98, + 78,111,100,101, 84,121,112,101, 0, 78,111,100,101, 73,109, 97,103,101, 65,110,105,109, 0, 78,111,100,101, 66,108,117,114, 68, + 97,116, 97, 0, 78,111,100,101, 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 66,105,108, 97,116,101,114, 97,108, 66, +108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 72,117,101, 83, 97,116, 0, 78,111,100,101, 73,109, 97,103,101, 70,105,108,101, + 0, 78,111,100,101, 67,104,114,111,109, 97, 0, 78,111,100,101, 84,119,111, 88, 89,115, 0, 78,111,100,101, 84,119,111, 70,108, +111, 97,116,115, 0, 78,111,100,101, 71,101,111,109,101,116,114,121, 0, 78,111,100,101, 86,101,114,116,101,120, 67,111,108, 0, + 78,111,100,101, 68,101,102,111, 99,117,115, 0, 78,111,100,101, 83, 99,114,105,112,116, 68,105, 99,116, 0, 78,111,100,101, 71, +108, 97,114,101, 0, 78,111,100,101, 84,111,110,101,109, 97,112, 0, 78,111,100,101, 76,101,110,115, 68,105,115,116, 0, 78,111, +100,101, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 78,111,100,101, 67,111,108,111,114,115,112,105,108,108, 0, 84,101, +120, 78,111,100,101, 79,117,116,112,117,116, 0, 67,117,114,118,101, 77, 97,112, 80,111,105,110,116, 0, 67,117,114,118,101, 77, + 97,112, 0, 66,114,117,115,104, 67,108,111,110,101, 0, 67,117,115,116,111,109, 68, 97,116, 97, 76, 97,121,101,114, 0, 67,117, +115,116,111,109, 68, 97,116, 97, 69,120,116,101,114,110, 97,108, 0, 72, 97,105,114, 75,101,121, 0, 80, 97,114,116,105, 99,108, +101, 75,101,121, 0, 66,111,105,100, 80, 97,114,116,105, 99,108,101, 0, 66,111,105,100, 68, 97,116, 97, 0, 67,104,105,108,100, + 80, 97,114,116,105, 99,108,101, 0, 80, 97,114,116,105, 99,108,101, 84, 97,114,103,101,116, 0, 80, 97,114,116,105, 99,108,101, + 68,117,112,108,105, 87,101,105,103,104,116, 0, 80, 97,114,116,105, 99,108,101, 68, 97,116, 97, 0, 83, 80, 72, 70,108,117,105, +100, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 83,101,116,116,105,110,103,115, 0, 66,111,105,100, 83, +101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 75, 68, 84,114,101,101, 0, + 80, 97,114,116,105, 99,108,101, 68,114, 97,119, 68, 97,116, 97, 0, 76,105,110,107, 78,111,100,101, 0, 98, 71, 80, 68,115,112, +111,105,110,116, 0, 98, 71, 80, 68,115,116,114,111,107,101, 0, 98, 71, 80, 68,102,114, 97,109,101, 0, 98, 71, 80, 68,108, 97, +121,101,114, 0, 82,101,112,111,114,116, 0, 82,101,112,111,114,116, 76,105,115,116, 0, 82,101,112,111,114,116, 84,105,109,101, +114, 73,110,102,111, 0,119,109, 87,105,110,100,111,119, 77, 97,110, 97,103,101,114, 0,119,109, 87,105,110,100,111,119, 0,119, +109, 75,101,121, 67,111,110,102,105,103, 0,119,109, 69,118,101,110,116, 0,119,109, 83,117, 98, 87,105,110,100,111,119, 0,119, +109, 71,101,115,116,117,114,101, 0,119,109, 75,101,121, 77, 97,112, 73,116,101,109, 0, 80,111,105,110,116,101,114, 82, 78, 65, + 0,119,109, 75,101,121, 77, 97,112, 0,119,109, 79,112,101,114, 97,116,111,114, 84,121,112,101, 0, 70, 77,111,100,105,102,105, +101,114, 0, 70, 77,111,100, 95, 71,101,110,101,114, 97,116,111,114, 0, 70, 77,111,100, 95, 70,117,110, 99,116,105,111,110, 71, +101,110,101,114, 97,116,111,114, 0, 70, 67, 77, 95, 69,110,118,101,108,111,112,101, 68, 97,116, 97, 0, 70, 77,111,100, 95, 69, +110,118,101,108,111,112,101, 0, 70, 77,111,100, 95, 67,121, 99,108,101,115, 0, 70, 77,111,100, 95, 80,121,116,104,111,110, 0, + 70, 77,111,100, 95, 76,105,109,105,116,115, 0, 70, 77,111,100, 95, 78,111,105,115,101, 0, 70, 77,111,100, 95, 83,116,101,112, +112,101,100, 0, 68,114,105,118,101,114, 84, 97,114,103,101,116, 0, 68,114,105,118,101,114, 86, 97,114, 0, 67,104, 97,110,110, +101,108, 68,114,105,118,101,114, 0, 70, 80,111,105,110,116, 0, 70, 67,117,114,118,101, 0, 65,110,105,109, 77, 97,112, 80, 97, +105,114, 0, 65,110,105,109, 77, 97,112,112,101,114, 0, 78,108, 97, 83,116,114,105,112, 0, 78,108, 97, 84,114, 97, 99,107, 0, + 75, 83, 95, 80, 97,116,104, 0, 75,101,121,105,110,103, 83,101,116, 0, 65,110,105,109, 79,118,101,114,114,105,100,101, 0, 73, +100, 65,100,116, 84,101,109,112,108, 97,116,101, 0, 66,111,105,100, 82,117,108,101, 0, 66,111,105,100, 82,117,108,101, 71,111, + 97,108, 65,118,111,105,100, 0, 66,111,105,100, 82,117,108,101, 65,118,111,105,100, 67,111,108,108,105,115,105,111,110, 0, 66, +111,105,100, 82,117,108,101, 70,111,108,108,111,119, 76,101, 97,100,101,114, 0, 66,111,105,100, 82,117,108,101, 65,118,101,114, + 97,103,101, 83,112,101,101,100, 0, 66,111,105,100, 82,117,108,101, 70,105,103,104,116, 0, 66,111,105,100, 83,116, 97,116,101, + 0, 70, 76, 85, 73, 68, 95, 51, 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 0, 0, 0, 84, 76, 69, 78, 1, 0, 1, 0, + 2, 0, 2, 0, 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 0, 0, 16, 0, 24, 0, 16, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, + 12, 0, 24, 0, 16, 0, 16, 0, 32, 0, 16, 0, 16, 0, 32, 0, 96, 0, 72, 0, 72, 2, 0, 0, 40, 0,144, 0,208, 4,112, 0, + 36, 0, 56, 0,112, 0,128, 0,168, 0, 96, 0, 40, 0, 48, 0,176, 0, 16, 0,136, 0, 40, 0, 8, 6,240, 1, 0, 0, 0, 0, + 0, 0, 16, 1,112, 1,120, 1, 24, 0, 8, 3,200, 0, 0, 0, 88, 0, 40, 1,240, 0,136, 0,216, 1, 64, 1, 80, 0, 88, 0, + 32, 3,104, 0, 88, 1, 0, 0,128, 0,104, 0,208, 0, 80, 0, 8, 0, 16, 0,216, 1, 0, 0, 0, 0, 0, 0,176, 1, 20, 0, + 48, 0, 64, 0, 24, 0, 12, 0, 16, 0, 4, 0, 8, 0, 8, 0, 0, 0, 40, 0,128, 0, 48, 0, 8, 0, 16, 0, 8, 0, 8, 0, + 4, 0, 4, 0, 0, 1, 32, 0, 16, 0, 16, 0, 64, 0, 24, 0, 12, 0, 64, 0, 80, 0,104, 0,120, 0,128, 0, 96, 0,128, 0, +160, 0, 96, 0, 88, 0,136, 0, 88, 0,112, 0, 0, 1, 56, 0,192, 0,184, 0,232, 0, 88, 0,120, 0,136, 0,224, 0,136, 0, +248, 0, 80, 0,136, 0, 0, 0,152, 0, 40, 0, 8, 2,160, 0, 0, 0,120, 0, 0, 0, 0, 0, 96, 0, 8, 0, 8, 0, 48, 1, +112, 0,240, 1,104, 0, 96, 0, 88, 0, 96, 0,200, 1,144, 0,136, 0, 80, 0,136, 0,112, 0, 8, 1, 48, 0, 0, 0,144, 0, +176, 0,104, 0, 48, 0, 24, 0,120, 0,152, 0,120, 1,224, 0,192, 0, 0, 0, 72, 0,168, 0, 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0,232, 1, 40, 0,184, 0,152, 0, 64, 0, 64, 0, 24, 0, 88, 0, 0, 4, 64, 0, 24, 0, 16, 0,104, 0, 96, 0, 32, 0, +168, 1, 56, 0, 16, 0,168, 0, 88, 0, 56, 0, 64, 0,184, 1, 32, 0, 8, 0, 24, 0, 80, 2, 0, 0, 0, 0, 88, 0,104, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 1, 56, 0,144, 0, 72, 0,208, 0,240, 0, 40, 0,248, 0,240, 0,200, 1,104, 0, + 0, 0,168, 0, 0, 0, 32, 1, 16, 0, 16, 0, 72, 33,128, 16, 24, 16,216, 0,144, 2,120, 2, 64, 0, 48, 0,216, 0, 32, 1, + 72, 0,200, 2, 40, 0,144, 1,104, 0, 24, 1, 32, 0,232, 0, 32, 0, 32, 0,112, 2,104, 1, 16, 0, 56, 29, 80, 0, 56, 0, + 8, 13, 32, 0, 40, 0, 88, 1, 0, 0, 0, 0,160, 0, 0, 0, 40, 1, 0, 0, 24, 1, 80, 0, 48, 0, 16, 0, 8, 0, 44, 0, + 0, 1, 32, 1,200, 1, 24, 1,136, 1, 32, 0, 12, 0, 24, 0, 52, 0, 16, 0, 24, 0, 24, 0, 32, 0, 72, 1, 0, 0, 64, 0, + 64, 0, 48, 0, 8, 0, 48, 0, 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 72, 0, 72, 0, 96, 0,104, 0, + 60, 0,128, 0, 80, 0, 80, 0, 16, 0, 96, 0, 72, 0, 32, 0, 88, 0, 24, 0, 80, 0,112, 0, 84, 0, 32, 0, 96, 0, 56, 0, + 56, 0,112, 0,140, 0, 4, 0, 24, 0, 16, 0, 8, 0, 88, 0, 40, 0,216, 0, 40, 0, 40, 1,200, 0, 16, 0, 16, 2, 0, 0, + 4, 0, 40, 0,120, 0, 0, 1, 88, 0, 56, 0, 88, 0,128, 0, 80, 0,120, 0, 24, 0, 56, 0, 48, 0, 48, 0, 48, 0, 8, 0, + 40, 0, 72, 0, 72, 0, 48, 0, 48, 0, 24, 0, 56, 0,104, 0, 16, 0,112, 0, 96, 0, 56, 0, 28, 0, 28, 0, 28, 0, 56, 0, + 24, 0, 72, 0,168, 0, 40, 0,144, 0, 56, 0,232, 0, 0, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, + 44, 0, 8, 0, 8, 0, 64, 0, 32, 0, 24, 0, 16, 0, 24, 0, 32, 0, 8, 0, 84, 0, 20, 0, 32, 0, 12, 0, 56, 0, 24, 0, + 72, 0,240, 0, 24, 0, 56, 0, 56, 0, 20, 0, 64, 0, 40, 0, 32, 0,192, 0, 36, 0, 16, 2,104, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 32, 0, 40, 0,192, 0, 40, 0, 40, 0, 20, 0, 24, 1,224, 0,168, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, +120, 0, 0, 0,104, 0, 24, 0, 24, 0, 16, 0, 24, 0, 8, 0, 16, 0, 24, 0, 20, 0, 20, 0, 56, 0, 24, 2, 40, 1, 16, 0, +104, 0, 0, 1, 40, 0,200, 0,104, 0,112, 0,168, 0, 32, 0, 80, 0, 56, 0, 80, 0, 64, 0,104, 0, 72, 0, 64, 0,128, 0, + 0, 0, 0, 0, 83, 84, 82, 67,153, 1, 0, 0, 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0, + 11, 0, 1, 0, 9, 0, 2, 0, 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4, 0, 13, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0, + 14, 0, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0, 15, 0, 2, 0, 4, 0, 5, 0, 4, 0, 6, 0, 16, 0, 2, 0, 8, 0, 5, 0, + 8, 0, 6, 0, 17, 0, 3, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 18, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0, + 7, 0, 7, 0, 19, 0, 3, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 20, 0, 4, 0, 4, 0, 5, 0, 4, 0, 6, 0, + 4, 0, 7, 0, 4, 0, 8, 0, 21, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 8, 0, 22, 0, 4, 0, + 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 8, 0, 8, 0, 23, 0, 4, 0, 4, 0, 9, 0, 4, 0, 10, 0, 4, 0, 11, 0, + 4, 0, 12, 0, 24, 0, 4, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 25, 0, 4, 0, 9, 0, 13, 0, + 12, 0, 14, 0, 4, 0, 15, 0, 4, 0, 16, 0, 26, 0, 10, 0, 26, 0, 0, 0, 26, 0, 1, 0, 0, 0, 17, 0, 0, 0, 18, 0, + 2, 0, 19, 0, 0, 0, 20, 0, 4, 0, 21, 0, 25, 0, 22, 0, 4, 0, 23, 0, 4, 0, 24, 0, 27, 0, 9, 0, 9, 0, 0, 0, + 9, 0, 1, 0, 27, 0, 25, 0, 28, 0, 26, 0, 0, 0, 27, 0, 2, 0, 28, 0, 2, 0, 19, 0, 4, 0, 29, 0, 26, 0, 30, 0, + 28, 0, 8, 0, 27, 0, 31, 0, 27, 0, 32, 0, 29, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 4, 0, 36, 0, 4, 0, 37, 0, + 28, 0, 38, 0, 30, 0, 6, 0, 4, 0, 39, 0, 4, 0, 40, 0, 2, 0, 41, 0, 2, 0, 42, 0, 2, 0, 43, 0, 4, 0, 44, 0, + 31, 0, 6, 0, 32, 0, 45, 0, 2, 0, 46, 0, 2, 0, 47, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 48, 0, 33, 0, 21, 0, + 33, 0, 0, 0, 33, 0, 1, 0, 34, 0, 49, 0, 35, 0, 50, 0, 24, 0, 51, 0, 24, 0, 52, 0, 2, 0, 46, 0, 2, 0, 47, 0, + 2, 0, 53, 0, 2, 0, 54, 0, 2, 0, 55, 0, 2, 0, 56, 0, 2, 0, 19, 0, 2, 0, 57, 0, 7, 0, 11, 0, 7, 0, 12, 0, + 4, 0, 58, 0, 7, 0, 59, 0, 7, 0, 60, 0, 7, 0, 61, 0, 31, 0, 62, 0, 36, 0, 7, 0, 27, 0, 31, 0, 12, 0, 63, 0, + 24, 0, 64, 0, 2, 0, 46, 0, 2, 0, 65, 0, 2, 0, 66, 0, 2, 0, 37, 0, 37, 0, 16, 0, 37, 0, 0, 0, 37, 0, 1, 0, + 7, 0, 67, 0, 7, 0, 61, 0, 2, 0, 17, 0, 2, 0, 47, 0, 2, 0, 68, 0, 2, 0, 19, 0, 4, 0, 69, 0, 4, 0, 70, 0, + 9, 0, 2, 0, 7, 0, 71, 0, 0, 0, 20, 0, 0, 0, 72, 0, 7, 0, 73, 0, 7, 0, 74, 0, 38, 0, 13, 0, 27, 0, 31, 0, + 39, 0, 75, 0, 37, 0, 76, 0, 0, 0, 77, 0, 4, 0, 78, 0, 7, 0, 61, 0, 12, 0, 79, 0, 36, 0, 80, 0, 27, 0, 81, 0, + 2, 0, 17, 0, 2, 0, 82, 0, 2, 0, 83, 0, 2, 0, 19, 0, 40, 0, 6, 0, 40, 0, 0, 0, 40, 0, 1, 0, 0, 0, 84, 0, + 0, 0, 85, 0, 4, 0, 23, 0, 4, 0, 86, 0, 41, 0, 10, 0, 41, 0, 0, 0, 41, 0, 1, 0, 4, 0, 87, 0, 4, 0, 88, 0, + 4, 0, 89, 0, 4, 0, 43, 0, 4, 0, 14, 0, 4, 0, 90, 0, 0, 0, 91, 0, 0, 0, 92, 0, 42, 0, 15, 0, 27, 0, 31, 0, + 0, 0, 93, 0, 4, 0, 90, 0, 4, 0, 94, 0, 12, 0, 95, 0, 40, 0, 96, 0, 40, 0, 97, 0, 4, 0, 98, 0, 4, 0, 99, 0, + 12, 0,100, 0, 0, 0,101, 0, 4, 0,102, 0, 4, 0,103, 0, 9, 0,104, 0, 8, 0,105, 0, 43, 0, 3, 0, 4, 0,106, 0, + 4, 0,107, 0, 9, 0, 2, 0, 44, 0, 15, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,108, 0, + 7, 0,109, 0, 7, 0,110, 0, 7, 0,111, 0, 7, 0,112, 0, 7, 0,113, 0, 7, 0,114, 0, 7, 0,115, 0, 7, 0,116, 0, + 36, 0, 80, 0, 32, 0,117, 0, 45, 0, 13, 0, 4, 0,118, 0, 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, 2, 0,122, 0, + 2, 0,123, 0, 2, 0, 19, 0, 2, 0,124, 0, 2, 0,125, 0, 2, 0,126, 0, 2, 0,127, 0, 2, 0,128, 0, 46, 0,129, 0, + 47, 0, 32, 0, 27, 0, 31, 0, 0, 0, 34, 0, 12, 0,130, 0, 48, 0,131, 0, 49, 0,132, 0, 50, 0,133, 0, 50, 0,134, 0, + 2, 0,135, 0, 2, 0,136, 0, 2, 0,124, 0, 2, 0, 19, 0, 2, 0,137, 0, 2, 0, 17, 0, 4, 0,138, 0, 2, 0,139, 0, + 2, 0,140, 0, 2, 0,141, 0, 2, 0,142, 0, 2, 0,143, 0, 2, 0,144, 0, 4, 0,145, 0, 4, 0,146, 0, 43, 0,147, 0, + 30, 0,148, 0, 7, 0,149, 0, 4, 0,150, 0, 2, 0,151, 0, 2, 0,152, 0, 2, 0,153, 0, 2, 0,154, 0, 7, 0,155, 0, + 7, 0,156, 0, 51, 0, 63, 0, 2, 0,157, 0, 2, 0,158, 0, 2, 0,159, 0, 2, 0,160, 0, 32, 0,161, 0, 52, 0,162, 0, + 0, 0,163, 0, 0, 0,164, 0, 0, 0,165, 0, 0, 0,166, 0, 0, 0,167, 0, 7, 0,168, 0, 7, 0,169, 0, 7, 0,170, 0, + 2, 0,171, 0, 2, 0,172, 0, 2, 0,173, 0, 2, 0,174, 0, 2, 0,175, 0, 2, 0,176, 0, 0, 0,177, 0, 0, 0,178, 0, + 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0, 57, 0, 7, 0,184, 0, 7, 0,185, 0, + 7, 0,186, 0, 7, 0,187, 0, 7, 0,188, 0, 7, 0,189, 0, 7, 0,190, 0, 7, 0,191, 0, 7, 0,192, 0, 7, 0,193, 0, + 7, 0,194, 0, 7, 0,195, 0, 7, 0,196, 0, 7, 0,197, 0, 7, 0,198, 0, 7, 0,199, 0, 7, 0,200, 0, 7, 0,201, 0, + 7, 0,202, 0, 7, 0,203, 0, 7, 0,204, 0, 7, 0,205, 0, 7, 0,206, 0, 7, 0,207, 0, 7, 0,208, 0, 7, 0,209, 0, + 7, 0,210, 0, 7, 0,211, 0, 7, 0,212, 0, 7, 0,213, 0, 7, 0,214, 0, 7, 0,215, 0, 7, 0,216, 0, 7, 0,217, 0, + 7, 0,218, 0, 53, 0, 15, 0, 0, 0,219, 0, 9, 0,220, 0, 0, 0,221, 0, 0, 0,222, 0, 4, 0,223, 0, 4, 0,224, 0, + 9, 0,225, 0, 7, 0,226, 0, 7, 0,227, 0, 7, 0,228, 0, 4, 0,229, 0, 9, 0,230, 0, 9, 0,231, 0, 4, 0,232, 0, + 4, 0, 37, 0, 54, 0, 6, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,233, 0, 7, 0, 67, 0, 4, 0, 64, 0, + 55, 0, 5, 0, 2, 0, 19, 0, 2, 0, 36, 0, 2, 0, 64, 0, 2, 0,234, 0, 54, 0,228, 0, 56, 0, 17, 0, 32, 0,161, 0, + 47, 0,235, 0, 57, 0,236, 0, 7, 0,237, 0, 7, 0,238, 0, 2, 0, 17, 0, 2, 0,239, 0, 7, 0,109, 0, 7, 0,110, 0, + 7, 0,240, 0, 4, 0,241, 0, 2, 0,242, 0, 2, 0,243, 0, 4, 0,124, 0, 4, 0,138, 0, 2, 0,244, 0, 2, 0,245, 0, + 58, 0, 22, 0, 2, 0, 19, 0, 2, 0,246, 0, 7, 0,247, 0, 7, 0,248, 0, 2, 0,137, 0, 2, 0,249, 0, 4, 0,250, 0, + 4, 0,251, 0, 32, 0,161, 0, 4, 0,252, 0, 2, 0,253, 0, 2, 0,254, 0, 9, 0,255, 0, 7, 0, 0, 1, 7, 0, 1, 1, + 2, 0, 2, 1, 2, 0, 3, 1, 2, 0, 4, 1, 2, 0, 5, 1, 7, 0, 6, 1, 7, 0, 7, 1, 55, 0, 8, 1, 59, 0, 13, 0, + 4, 0, 9, 1, 4, 0, 10, 1, 2, 0, 11, 1, 2, 0, 19, 0, 2, 0, 12, 1, 2, 0, 13, 1, 32, 0,161, 0, 7, 0, 14, 1, + 4, 0, 15, 1, 0, 0, 16, 1, 7, 0, 17, 1, 4, 0, 18, 1, 4, 0,124, 0, 52, 0, 63, 0, 27, 0, 31, 0, 39, 0, 75, 0, + 7, 0, 19, 1, 7, 0, 20, 1, 7, 0, 21, 1, 7, 0, 22, 1, 7, 0, 23, 1, 7, 0, 24, 1, 7, 0, 25, 1, 7, 0, 26, 1, + 7, 0, 27, 1, 7, 0, 70, 0, 7, 0, 28, 1, 7, 0, 29, 1, 7, 0, 30, 1, 7, 0, 31, 1, 7, 0, 32, 1, 7, 0, 33, 1, + 7, 0, 34, 1, 7, 0, 35, 1, 7, 0, 36, 1, 7, 0, 37, 1, 7, 0, 38, 1, 7, 0, 39, 1, 2, 0, 40, 1, 2, 0, 41, 1, + 2, 0, 42, 1, 2, 0, 43, 1, 2, 0, 44, 1, 2, 0, 45, 1, 2, 0, 46, 1, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,239, 0, + 7, 0, 47, 1, 7, 0, 48, 1, 7, 0, 49, 1, 7, 0, 50, 1, 4, 0, 51, 1, 4, 0, 52, 1, 2, 0, 53, 1, 2, 0, 54, 1, + 2, 0, 12, 1, 2, 0,122, 0, 4, 0, 23, 0, 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, 7, 0, 55, 1, 7, 0, 56, 1, + 7, 0, 43, 0, 45, 0, 57, 1, 60, 0, 58, 1, 36, 0, 80, 0, 47, 0,235, 0, 53, 0, 59, 1, 55, 0, 8, 1, 56, 0, 60, 1, + 30, 0,148, 0, 58, 0, 61, 1, 59, 0, 62, 1, 0, 0, 63, 1, 0, 0,178, 0, 61, 0, 8, 0, 7, 0, 64, 1, 7, 0, 65, 1, + 7, 0,169, 0, 4, 0, 19, 0, 7, 0, 66, 1, 7, 0, 67, 1, 7, 0, 68, 1, 32, 0, 45, 0, 62, 0, 72, 0, 27, 0, 31, 0, + 39, 0, 75, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 69, 1, 2, 0,172, 0, 2, 0, 70, 1, 7, 0,179, 0, 7, 0,180, 0, + 7, 0,181, 0, 7, 0,182, 0, 7, 0, 71, 1, 7, 0, 72, 1, 7, 0, 73, 1, 7, 0, 74, 1, 7, 0, 75, 1, 7, 0, 76, 1, + 7, 0, 77, 1, 7, 0, 78, 1, 7, 0, 79, 1, 7, 0, 80, 1, 7, 0, 81, 1, 63, 0, 82, 1, 2, 0,246, 0, 2, 0, 70, 0, + 7, 0,109, 0, 7, 0,110, 0, 7, 0, 83, 1, 7, 0, 84, 1, 7, 0, 85, 1, 7, 0, 86, 1, 7, 0, 87, 1, 2, 0, 88, 1, + 2, 0, 89, 1, 2, 0, 90, 1, 2, 0, 91, 1, 0, 0, 92, 1, 0, 0, 93, 1, 2, 0, 94, 1, 2, 0, 95, 1, 2, 0, 96, 1, + 2, 0, 97, 1, 2, 0, 98, 1, 7, 0, 99, 1, 7, 0,100, 1, 7, 0,101, 1, 7, 0,102, 1, 2, 0,103, 1, 2, 0, 43, 0, + 2, 0,104, 1, 2, 0,105, 1, 2, 0,106, 1, 2, 0,107, 1, 7, 0,108, 1, 7, 0,109, 1, 7, 0,110, 1, 7, 0,111, 1, + 7, 0,112, 1, 7, 0,113, 1, 7, 0,114, 1, 7, 0,115, 1, 7, 0,116, 1, 7, 0,117, 1, 7, 0,118, 1, 7, 0,119, 1, + 2, 0,120, 1, 0, 0,121, 1, 36, 0, 80, 0, 51, 0,122, 1, 2, 0,123, 1, 0, 0,124, 1, 30, 0,148, 0, 64, 0, 2, 0, + 27, 0, 31, 0, 36, 0, 80, 0, 65, 0, 18, 0, 7, 0,125, 1, 7, 0,126, 1, 7, 0,127, 1, 7, 0,128, 1, 7, 0,129, 1, + 7, 0,130, 1, 7, 0,131, 1, 7, 0,132, 1, 7, 0,133, 1, 7, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 2, 0,137, 1, + 2, 0,138, 1, 7, 0,139, 1, 7, 0,140, 1, 7, 0,141, 1, 7, 0,142, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0, + 2, 0,143, 1, 2, 0, 19, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,144, 1, 7, 0,145, 1, 7, 0,146, 1, + 7, 0,147, 1, 7, 0,148, 1, 7, 0,149, 1, 7, 0,150, 1, 7, 0,151, 1, 7, 0,152, 1, 7, 0,153, 1, 7, 0,154, 1, + 7, 0,155, 1, 7, 0,156, 1, 7, 0,157, 1, 7, 0,158, 1, 7, 0,159, 1, 7, 0,160, 1, 7, 0,161, 1, 7, 0,162, 1, + 7, 0,163, 1, 65, 0,164, 1, 7, 0,165, 1, 7, 0,166, 1, 7, 0,167, 1, 7, 0,168, 1, 7, 0,169, 1, 7, 0,170, 1, + 7, 0,171, 1, 2, 0,172, 1, 2, 0,173, 1, 2, 0,174, 1, 0, 0,175, 1, 0, 0,176, 1, 7, 0,177, 1, 7, 0,178, 1, + 2, 0,179, 1, 2, 0,180, 1, 7, 0,181, 1, 7, 0,182, 1, 7, 0,183, 1, 7, 0,184, 1, 2, 0,185, 1, 2, 0,186, 1, + 4, 0, 69, 1, 4, 0,187, 1, 2, 0,188, 1, 2, 0,189, 1, 2, 0,190, 1, 2, 0,191, 1, 7, 0,192, 1, 7, 0,193, 1, + 7, 0,194, 1, 7, 0,195, 1, 7, 0,196, 1, 7, 0,197, 1, 7, 0,198, 1, 7, 0,199, 1, 7, 0,200, 1, 7, 0,201, 1, + 0, 0,202, 1, 7, 0,203, 1, 7, 0,204, 1, 7, 0,205, 1, 4, 0,206, 1, 0, 0,207, 1, 0, 0,104, 1, 0, 0,208, 1, + 0, 0, 63, 1, 2, 0,209, 1, 2, 0,210, 1, 2, 0,123, 1, 2, 0,211, 1, 2, 0,212, 1, 2, 0,213, 1, 7, 0,214, 1, + 7, 0,215, 1, 7, 0,216, 1, 7, 0,217, 1, 7, 0,218, 1, 2, 0,157, 0, 2, 0,158, 0, 55, 0,219, 1, 55, 0,220, 1, + 0, 0,221, 1, 0, 0,222, 1, 0, 0,223, 1, 0, 0,224, 1, 2, 0,225, 1, 2, 0,226, 1, 7, 0,227, 1, 7, 0,228, 1, + 51, 0,122, 1, 60, 0, 58, 1, 36, 0, 80, 0, 67, 0,229, 1, 30, 0,148, 0, 7, 0,230, 1, 7, 0,231, 1, 7, 0,232, 1, + 7, 0,233, 1, 7, 0,234, 1, 2, 0,235, 1, 2, 0, 70, 0, 7, 0,236, 1, 7, 0,237, 1, 7, 0,238, 1, 7, 0,239, 1, + 7, 0,240, 1, 7, 0,241, 1, 7, 0,242, 1, 7, 0,243, 1, 7, 0,244, 1, 2, 0,245, 1, 2, 0,246, 1, 4, 0,247, 1, + 4, 0,248, 1, 12, 0,249, 1, 68, 0, 4, 0, 27, 0, 31, 0, 0, 0,250, 1, 69, 0, 2, 0, 43, 0,147, 0, 70, 0, 26, 0, + 70, 0, 0, 0, 70, 0, 1, 0, 71, 0,251, 1, 4, 0,252, 1, 4, 0,253, 1, 4, 0,254, 1, 4, 0,255, 1, 4, 0, 0, 2, + 4, 0, 1, 2, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 2, 2, 2, 0, 3, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, + 7, 0, 4, 2, 7, 0, 5, 2, 7, 0, 6, 2, 7, 0, 7, 2, 7, 0, 8, 2, 7, 0, 9, 2, 7, 0, 10, 2, 7, 0, 23, 0, + 7, 0, 11, 2, 7, 0, 12, 2, 72, 0, 20, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0,251, 1, 12, 0, 13, 2, 12, 0, 14, 2, + 12, 0, 15, 2, 36, 0, 80, 0, 66, 0, 16, 2, 0, 0, 19, 0, 0, 0, 17, 2, 2, 0, 18, 2, 2, 0,171, 0, 2, 0, 37, 0, + 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 7, 0, 19, 2, 7, 0, 20, 2, 7, 0, 21, 2, 70, 0, 22, 2, 35, 0, 11, 0, + 7, 0, 23, 2, 7, 0, 24, 2, 7, 0, 25, 2, 7, 0,248, 0, 2, 0, 55, 0, 0, 0, 26, 2, 0, 0, 27, 2, 0, 0, 28, 2, + 0, 0, 29, 2, 0, 0, 30, 2, 0, 0, 31, 2, 34, 0, 7, 0, 7, 0, 32, 2, 7, 0, 24, 2, 7, 0, 25, 2, 2, 0, 28, 2, + 2, 0, 31, 2, 7, 0,248, 0, 7, 0, 37, 0, 73, 0, 21, 0, 73, 0, 0, 0, 73, 0, 1, 0, 2, 0, 17, 0, 2, 0, 33, 2, + 2, 0, 31, 2, 2, 0, 19, 0, 2, 0, 34, 2, 2, 0, 35, 2, 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 38, 2, 2, 0, 39, 2, + 2, 0, 40, 2, 2, 0, 41, 2, 7, 0, 42, 2, 7, 0, 43, 2, 34, 0, 49, 0, 35, 0, 50, 0, 2, 0, 44, 2, 2, 0, 45, 2, + 4, 0, 46, 2, 74, 0, 5, 0, 2, 0, 47, 2, 2, 0, 33, 2, 0, 0, 19, 0, 0, 0, 37, 0, 2, 0, 70, 0, 75, 0, 4, 0, + 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 8, 0, 7, 0, 48, 2, 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0,251, 1, + 12, 0, 49, 2, 12, 0, 14, 2, 12, 0, 50, 2, 32, 0, 51, 2, 32, 0, 52, 2, 32, 0, 53, 2, 36, 0, 80, 0, 77, 0, 54, 2, + 38, 0, 55, 2, 66, 0, 16, 2, 12, 0, 56, 2, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 2, 0,171, 0, 2, 0, 43, 0, + 2, 0, 57, 2, 2, 0, 58, 2, 2, 0, 59, 2, 7, 0, 60, 2, 7, 0, 70, 0, 2, 0, 61, 2, 2, 0, 18, 2, 2, 0, 19, 0, + 2, 0, 62, 2, 7, 0, 63, 2, 7, 0, 64, 2, 7, 0, 65, 2, 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 66, 2, 2, 0, 67, 2, + 4, 0, 68, 2, 9, 0, 69, 2, 2, 0, 23, 0, 2, 0, 95, 0, 2, 0, 67, 0, 2, 0, 70, 2, 7, 0, 71, 2, 7, 0, 72, 2, + 7, 0, 73, 2, 7, 0, 74, 2, 7, 0, 75, 2, 7, 0, 76, 2, 7, 0, 77, 2, 7, 0, 78, 2, 7, 0, 79, 2, 7, 0, 80, 2, + 0, 0, 81, 2, 78, 0, 82, 2, 79, 0, 83, 2, 0, 0, 84, 2, 68, 0, 85, 2, 68, 0, 86, 2, 68, 0, 87, 2, 68, 0, 88, 2, + 4, 0, 89, 2, 7, 0, 90, 2, 4, 0, 91, 2, 4, 0, 92, 2, 75, 0, 93, 2, 4, 0, 94, 2, 4, 0, 95, 2, 74, 0, 96, 2, + 74, 0, 97, 2, 80, 0, 41, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0,251, 1, 12, 0, 98, 2, 36, 0, 80, 0, 38, 0, 55, 2, + 66, 0, 16, 2, 81, 0, 99, 2, 82, 0,100, 2, 83, 0,101, 2, 84, 0,102, 2, 85, 0,103, 2, 86, 0,104, 2, 87, 0,105, 2, + 88, 0,106, 2, 80, 0,107, 2, 89, 0,108, 2, 90, 0,109, 2, 91, 0,110, 2, 91, 0,111, 2, 91, 0,112, 2, 4, 0, 54, 0, + 4, 0,113, 2, 4, 0,114, 2, 4, 0,115, 2, 4, 0,116, 2, 2, 0,171, 0, 2, 0,117, 2, 7, 0, 64, 1, 7, 0,169, 0, + 7, 0, 65, 1, 7, 0,118, 2, 4, 0, 57, 2, 2, 0,119, 2, 2, 0, 19, 0, 2, 0,120, 2, 2, 0,121, 2, 2, 0, 18, 2, + 2, 0,122, 2, 92, 0,123, 2, 93, 0,124, 2, 83, 0, 8, 0, 9, 0,125, 2, 7, 0,126, 2, 4, 0,127, 2, 0, 0, 19, 0, + 0, 0,128, 2, 2, 0, 69, 1, 2, 0,129, 2, 2, 0,130, 2, 81, 0, 7, 0, 4, 0,131, 2, 4, 0,132, 2, 4, 0,133, 2, + 4, 0,134, 2, 2, 0, 33, 2, 0, 0,135, 2, 0, 0, 19, 0, 85, 0, 5, 0, 4, 0,131, 2, 4, 0,132, 2, 0, 0,136, 2, + 0, 0,137, 2, 2, 0, 19, 0, 94, 0, 2, 0, 4, 0,138, 2, 7, 0, 25, 2, 86, 0, 3, 0, 94, 0,139, 2, 4, 0,140, 2, + 4, 0, 19, 0, 84, 0, 6, 0, 7, 0,141, 2, 2, 0,142, 2, 2, 0, 33, 2, 0, 0, 19, 0, 0, 0,137, 2, 0, 0, 59, 2, + 87, 0, 4, 0, 0, 0,233, 0, 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 95, 0, 6, 0, 47, 0,125, 2, 0, 0, 19, 0, + 0, 0,128, 2, 2, 0, 69, 1, 2, 0,129, 2, 2, 0,130, 2, 96, 0, 1, 0, 7, 0,143, 2, 97, 0, 5, 0, 0, 0,233, 0, + 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 4, 0, 37, 0, 88, 0, 1, 0, 7, 0,144, 2, 89, 0, 2, 0, 4, 0,145, 2, + 4, 0, 17, 0, 82, 0, 7, 0, 7, 0,126, 2, 47, 0,125, 2, 0, 0, 19, 0, 0, 0,128, 2, 2, 0, 69, 1, 2, 0,129, 2, + 2, 0,130, 2, 98, 0, 1, 0, 7, 0,146, 2, 99, 0, 1, 0, 4, 0,147, 2,100, 0, 1, 0, 0, 0,148, 2,101, 0, 1, 0, + 7, 0,126, 2,102, 0, 3, 0, 4, 0,149, 2, 0, 0, 92, 0, 7, 0,150, 2,103, 0, 4, 0, 7, 0,233, 0, 7, 0,179, 0, + 7, 0,180, 0, 7, 0,181, 0,104, 0, 1, 0,103, 0,127, 2,105, 0, 5, 0, 4, 0,151, 2, 4, 0,152, 2, 0, 0, 19, 0, + 0, 0, 33, 2, 0, 0, 59, 2,106, 0, 2, 0, 4, 0,153, 2, 4, 0,152, 2,107, 0, 10, 0,107, 0, 0, 0,107, 0, 1, 0, +105, 0,154, 2,104, 0,155, 2,106, 0,156, 2, 4, 0, 54, 0, 4, 0,114, 2, 4, 0,113, 2, 4, 0, 37, 0, 84, 0,157, 2, + 92, 0, 14, 0, 12, 0,158, 2, 84, 0,157, 2, 0, 0,159, 2, 0, 0,160, 2, 0, 0,161, 2, 0, 0,162, 2, 0, 0,163, 2, + 0, 0,164, 2, 0, 0,165, 2, 0, 0, 19, 0, 91, 0,110, 2, 91, 0,112, 2, 2, 0,166, 2, 0, 0,167, 2, 93, 0, 8, 0, + 4, 0,168, 2, 4, 0,169, 2, 81, 0,170, 2, 85, 0,171, 2, 4, 0,114, 2, 4, 0,113, 2, 4, 0, 54, 0, 4, 0, 37, 0, +108, 0, 9, 0,108, 0, 0, 0,108, 0, 1, 0, 4, 0, 17, 0, 4, 0, 69, 1, 4, 0,172, 2, 4, 0, 37, 0, 0, 0, 20, 0, + 46, 0,129, 0, 0, 0,173, 2,109, 0, 7, 0,108, 0,174, 2, 2, 0,175, 2, 2, 0,158, 2, 2, 0,176, 2, 2, 0, 90, 0, + 9, 0,177, 2, 9, 0,178, 2,110, 0, 3, 0,108, 0,174, 2, 32, 0,161, 0, 0, 0, 20, 0,111, 0, 5, 0,108, 0,174, 2, + 32, 0,161, 0, 0, 0, 20, 0, 2, 0,179, 2, 0, 0,180, 2,112, 0, 5, 0,108, 0,174, 2, 7, 0, 88, 0, 7, 0,181, 2, + 4, 0,182, 2, 4, 0,183, 2,113, 0, 5, 0,108, 0,174, 2, 32, 0,184, 2, 0, 0, 72, 0, 4, 0, 69, 1, 4, 0, 19, 0, +114, 0, 13, 0,108, 0,174, 2, 32, 0,185, 2, 32, 0,186, 2, 32, 0,187, 2, 32, 0,188, 2, 7, 0,189, 2, 7, 0,190, 2, + 7, 0,181, 2, 7, 0,191, 2, 4, 0,192, 2, 4, 0,193, 2, 4, 0, 90, 0, 4, 0,194, 2,115, 0, 5, 0,108, 0,174, 2, + 2, 0,195, 2, 2, 0, 19, 0, 7, 0,196, 2, 32, 0,197, 2,116, 0, 3, 0,108, 0,174, 2, 7, 0,198, 2, 4, 0, 90, 0, +117, 0, 10, 0,108, 0,174, 2, 7, 0,199, 2, 4, 0,200, 2, 4, 0, 37, 0, 2, 0, 90, 0, 2, 0,201, 2, 2, 0,202, 2, + 2, 0,203, 2, 7, 0,204, 2, 0, 0,205, 2,118, 0, 3, 0,108, 0,174, 2, 7, 0, 37, 0, 4, 0, 17, 0,119, 0, 6, 0, +108, 0,174, 2,120, 0,206, 2,121, 0,207, 2,122, 0,208, 2, 7, 0,209, 2, 4, 0, 17, 0,123, 0, 11, 0,108, 0,174, 2, + 52, 0,210, 2, 7, 0,211, 2, 4, 0,212, 2, 0, 0,205, 2, 7, 0,213, 2, 4, 0,214, 2, 32, 0,215, 2, 0, 0,216, 2, + 4, 0,217, 2, 4, 0, 37, 0,124, 0, 12, 0,108, 0,174, 2, 32, 0,218, 2, 47, 0,219, 2, 4, 0, 90, 0, 4, 0,220, 2, + 7, 0,221, 2, 7, 0,222, 2, 7, 0,223, 2, 7, 0,224, 2, 0, 0,216, 2, 4, 0,217, 2, 4, 0, 37, 0,125, 0, 3, 0, +108, 0,174, 2, 7, 0,225, 2, 4, 0,226, 2,126, 0, 5, 0,108, 0,174, 2, 7, 0,227, 2, 0, 0,205, 2, 2, 0, 19, 0, + 2, 0,228, 2,127, 0, 8, 0,108, 0,174, 2, 32, 0,161, 0, 7, 0,227, 2, 7, 0,248, 0, 7, 0,106, 0, 0, 0,205, 2, + 2, 0, 19, 0, 2, 0, 17, 0,128, 0, 21, 0,108, 0,174, 2, 32, 0,229, 2, 0, 0,205, 2, 52, 0,210, 2, 32, 0,215, 2, + 2, 0, 19, 0, 2, 0, 37, 0, 7, 0,230, 2, 7, 0,231, 2, 7, 0,232, 2, 7, 0, 63, 2, 7, 0,233, 2, 7, 0,234, 2, + 7, 0,235, 2, 7, 0,236, 2, 4, 0,214, 2, 4, 0,217, 2, 0, 0,216, 2, 7, 0,237, 2, 7, 0,238, 2, 7, 0, 43, 0, +129, 0, 7, 0,108, 0,174, 2, 2, 0,239, 2, 2, 0,240, 2, 4, 0, 70, 0, 32, 0,161, 0, 7, 0,241, 2, 0, 0,205, 2, +130, 0, 10, 0,108, 0,174, 2, 32, 0,161, 0, 0, 0,242, 2, 7, 0,243, 2, 7, 0,244, 2, 7, 0,236, 2, 4, 0,245, 2, + 4, 0,246, 2, 7, 0,247, 2, 0, 0, 20, 0,131, 0, 1, 0,108, 0,174, 2,132, 0, 7, 0,108, 0,174, 2, 46, 0,129, 0, +133, 0,248, 2,134, 0,249, 2,135, 0,250, 2,136, 0,251, 2, 12, 0,252, 2,137, 0, 13, 0,108, 0,174, 2, 84, 0,253, 2, + 84, 0,254, 2, 84, 0,255, 2, 84, 0, 0, 3, 84, 0, 1, 3, 84, 0, 2, 3, 81, 0, 3, 3, 4, 0, 4, 3, 4, 0, 5, 3, + 7, 0,209, 2, 7, 0, 37, 0,138, 0, 6, 3,139, 0, 7, 0,108, 0,174, 2, 84, 0,253, 2, 84, 0, 7, 3,140, 0, 8, 3, +141, 0, 6, 3, 4, 0, 9, 3, 4, 0, 4, 3,142, 0, 4, 0,108, 0,174, 2, 32, 0,161, 0, 4, 0, 10, 3, 4, 0, 37, 0, +143, 0, 2, 0, 4, 0, 11, 3, 7, 0, 25, 2,144, 0, 2, 0, 4, 0,120, 0, 4, 0, 12, 3,145, 0, 24, 0,108, 0,174, 2, + 32, 0,161, 0, 0, 0,205, 2, 2, 0, 13, 3, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 37, 0,143, 0, 14, 3, 4, 0, 15, 3, + 7, 0, 16, 3, 4, 0, 54, 0, 4, 0, 17, 3,144, 0, 18, 3,143, 0, 19, 3, 4, 0, 20, 3, 4, 0, 21, 3, 4, 0, 22, 3, + 4, 0, 12, 3, 7, 0, 23, 3, 7, 0, 24, 3, 7, 0, 25, 3, 7, 0, 26, 3, 7, 0, 27, 3, 9, 0, 28, 3,146, 0, 8, 0, +108, 0,174, 2,147, 0, 29, 3,140, 0, 8, 3, 4, 0, 30, 3, 4, 0, 31, 3, 4, 0, 32, 3, 2, 0, 19, 0, 2, 0, 57, 0, +148, 0, 8, 0,108, 0,174, 2, 32, 0, 45, 0, 2, 0,252, 0, 2, 0, 19, 0, 2, 0,195, 2, 2, 0, 57, 0, 7, 0, 33, 3, + 7, 0, 34, 3,149, 0, 5, 0,108, 0,174, 2, 4, 0, 35, 3, 2, 0, 19, 0, 2, 0, 36, 3, 7, 0, 37, 3,150, 0, 8, 0, +108, 0,174, 2, 0, 0, 38, 3, 0, 0, 39, 3, 0, 0,164, 2, 0, 0, 40, 3, 0, 0, 41, 3, 0, 0, 90, 0, 0, 0, 59, 2, +151, 0, 3, 0,108, 0,174, 2,152, 0, 42, 3,136, 0,251, 2,153, 0, 10, 0,108, 0,174, 2, 32, 0, 43, 3, 32, 0, 44, 3, + 0, 0, 45, 3, 7, 0, 46, 3, 2, 0, 47, 3, 2, 0, 48, 3, 0, 0, 49, 3, 0, 0, 50, 3, 0, 0,180, 2,154, 0, 9, 0, +108, 0,174, 2, 32, 0, 51, 3, 0, 0, 45, 3, 7, 0, 52, 3, 7, 0, 53, 3, 0, 0, 69, 1, 0, 0,195, 2, 0, 0, 54, 3, + 0, 0, 37, 0,155, 0, 1, 0,108, 0,174, 2,156, 0, 8, 0,108, 0,174, 2, 0, 0,205, 2, 7, 0,120, 0, 7, 0, 55, 3, + 7, 0, 56, 3, 7, 0, 57, 3, 7, 0, 58, 3, 4, 0, 19, 0,157, 0, 9, 0,108, 0,174, 2, 32, 0, 59, 3, 4, 0, 60, 3, + 4, 0, 61, 3, 4, 0, 62, 3, 7, 0, 63, 3, 7, 0, 64, 3, 2, 0,195, 2, 2, 0, 19, 0,158, 0, 28, 0, 27, 0, 31, 0, + 2, 0, 34, 2, 2, 0, 35, 2, 2, 0, 65, 3, 2, 0, 19, 0, 2, 0, 66, 3, 2, 0, 67, 3, 2, 0, 68, 3, 2, 0, 70, 0, + 0, 0, 69, 3, 0, 0, 70, 3, 0, 0, 71, 3, 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 72, 3, 7, 0, 73, 3, 7, 0, 74, 3, + 7, 0, 75, 3, 7, 0, 76, 3, 7, 0, 77, 3, 34, 0, 78, 3, 36, 0, 80, 0, 38, 0, 55, 2, 86, 0,104, 2, 0, 0, 72, 0, + 7, 0, 79, 3, 7, 0, 80, 3,158, 0, 81, 3,159, 0, 3, 0,159, 0, 0, 0,159, 0, 1, 0, 0, 0, 20, 0, 71, 0, 3, 0, + 7, 0, 82, 3, 4, 0, 19, 0, 4, 0, 37, 0, 32, 0,126, 0, 27, 0, 31, 0, 39, 0, 75, 0,160, 0, 83, 3, 2, 0, 17, 0, + 2, 0, 84, 3, 4, 0, 85, 3, 4, 0, 86, 3, 4, 0, 87, 3, 0, 0, 88, 3, 32, 0, 38, 0, 32, 0, 89, 3, 32, 0, 90, 3, + 32, 0, 91, 3, 32, 0, 92, 3, 36, 0, 80, 0, 77, 0, 54, 2, 71, 0,251, 1,161, 0, 93, 3,161, 0, 94, 3,162, 0, 95, 3, + 9, 0, 2, 0,163, 0, 96, 3,164, 0, 97, 3,165, 0, 98, 3, 12, 0, 99, 3, 12, 0, 98, 2, 12, 0, 14, 2, 12, 0,100, 3, + 12, 0,101, 3, 4, 0, 69, 1, 4, 0,102, 3, 66, 0, 16, 2, 0, 0,103, 3, 4, 0, 18, 2, 4, 0,104, 3, 7, 0, 64, 1, + 7, 0,105, 3, 7, 0,106, 3, 7, 0,169, 0, 7, 0,107, 3, 7, 0, 65, 1, 7, 0,108, 3, 7, 0, 4, 2, 7, 0,109, 3, + 7, 0,110, 3, 7, 0,111, 3, 7, 0,112, 3, 7, 0,113, 3, 7, 0,114, 3, 7, 0,243, 2, 7, 0,115, 3, 7, 0,237, 0, + 4, 0,116, 3, 2, 0, 19, 0, 2, 0,117, 3, 2, 0,118, 3, 2, 0,119, 3, 2, 0,120, 3, 2, 0,121, 3, 2, 0,122, 3, + 2, 0,123, 3, 2, 0,124, 3, 2, 0,125, 3, 2, 0,126, 3, 2, 0,127, 3, 4, 0,128, 3, 4, 0,129, 3, 4, 0,130, 3, + 4, 0,131, 3, 7, 0,132, 3, 7, 0, 90, 2, 7, 0,133, 3, 7, 0,134, 3, 7, 0,135, 3, 7, 0,136, 3, 7, 0,137, 3, + 7, 0,212, 0, 7, 0,138, 3, 7, 0,139, 3, 7, 0,140, 3, 7, 0,141, 3, 2, 0,142, 3, 0, 0,143, 3, 0, 0,144, 3, + 0, 0,145, 3, 0, 0,146, 3, 7, 0,147, 3, 7, 0,148, 3, 12, 0,149, 3, 12, 0,150, 3, 12, 0,151, 3, 12, 0,152, 3, + 7, 0,153, 3, 2, 0,145, 2, 2, 0,154, 3, 7, 0,127, 2, 4, 0,155, 3, 4, 0,156, 3,166, 0,157, 3, 2, 0,158, 3, + 2, 0,244, 0, 7, 0,159, 3, 12, 0,160, 3, 12, 0,161, 3, 12, 0,162, 3, 12, 0,163, 3,167, 0, 61, 1,168, 0,164, 3, + 67, 0,165, 3, 2, 0,166, 3, 2, 0,167, 3, 2, 0,168, 3, 2, 0,169, 3, 7, 0,119, 2, 2, 0,170, 3, 2, 0,171, 3, +152, 0,172, 3,140, 0,173, 3,140, 0,174, 3, 4, 0,175, 3, 4, 0,176, 3, 4, 0,177, 3, 4, 0, 70, 0, 12, 0,178, 3, + 12, 0,179, 3, 12, 0,180, 3,169, 0, 14, 0,169, 0, 0, 0,169, 0, 1, 0, 32, 0, 38, 0, 7, 0,243, 2, 7, 0, 66, 1, + 7, 0,244, 2, 7, 0,236, 2, 0, 0, 20, 0, 4, 0,245, 2, 4, 0,246, 2, 4, 0,181, 3, 2, 0, 17, 0, 2, 0,182, 3, + 7, 0,247, 2,170, 0, 12, 0,170, 0, 0, 0,170, 0, 1, 0, 32, 0, 45, 0, 4, 0,183, 3, 4, 0,145, 2, 4, 0,184, 3, + 4, 0, 17, 0, 4, 0,185, 3, 7, 0, 66, 1, 7, 0,186, 3, 7, 0,187, 3, 7, 0,143, 2,167, 0, 40, 0, 4, 0, 19, 0, + 2, 0,188, 3, 2, 0,189, 3, 2, 0,236, 2, 2, 0,190, 3, 2, 0,191, 3, 2, 0,192, 3, 2, 0,193, 3, 2, 0,194, 3, + 7, 0,195, 3, 7, 0,196, 3, 7, 0,197, 3, 7, 0,198, 3, 7, 0,199, 3, 7, 0,200, 3, 7, 0,201, 3, 7, 0,202, 3, + 7, 0,203, 3, 7, 0,204, 3, 7, 0,205, 3, 7, 0,206, 3, 7, 0,207, 3, 7, 0,208, 3, 7, 0,209, 3, 7, 0,210, 3, + 7, 0,211, 3, 7, 0,212, 3, 7, 0,213, 3, 7, 0,214, 3, 7, 0,215, 3, 7, 0,216, 3, 7, 0,217, 3, 7, 0,218, 3, + 7, 0,219, 3, 7, 0,220, 3, 7, 0,221, 3, 52, 0,162, 0,171, 0,222, 3, 7, 0,223, 3, 4, 0,183, 2,172, 0, 5, 0, + 67, 0,229, 1, 7, 0,224, 3, 7, 0,225, 3, 2, 0, 19, 0, 2, 0,226, 3,173, 0, 9, 0,173, 0, 0, 0,173, 0, 1, 0, + 4, 0,227, 3, 4, 0,228, 3, 4, 0,229, 3, 4, 0, 19, 0, 4, 0,230, 3, 9, 0,231, 3, 9, 0,232, 3,136, 0, 19, 0, +136, 0, 0, 0,136, 0, 1, 0, 4, 0, 19, 0, 4, 0,233, 3, 4, 0,234, 3, 4, 0,235, 3, 4, 0,236, 3, 4, 0,237, 3, + 4, 0,238, 3, 4, 0,228, 3, 4, 0,145, 2, 4, 0, 57, 0, 0, 0,239, 3, 0, 0,240, 3, 0, 0,241, 3, 0, 0,242, 3, + 12, 0,243, 3,174, 0,244, 3, 9, 0,245, 3,175, 0, 1, 0, 7, 0, 32, 2,166, 0, 30, 0, 4, 0, 19, 0, 7, 0,246, 3, + 7, 0,247, 3, 7, 0,248, 3, 4, 0,249, 3, 4, 0,250, 3, 4, 0,251, 3, 4, 0,252, 3, 7, 0,253, 3, 7, 0,254, 3, + 7, 0,255, 3, 7, 0, 0, 4, 7, 0, 1, 4, 7, 0, 2, 4, 7, 0, 3, 4, 7, 0, 4, 4, 7, 0, 5, 4, 7, 0, 6, 4, + 7, 0, 7, 4, 7, 0, 8, 4, 7, 0, 9, 4, 7, 0, 10, 4, 7, 0, 11, 4, 7, 0, 12, 4, 7, 0, 13, 4, 7, 0, 14, 4, + 4, 0, 15, 4, 4, 0, 16, 4, 7, 0, 17, 4, 7, 0,138, 3,168, 0, 54, 0, 4, 0,228, 3, 4, 0, 18, 4,176, 0, 19, 4, +177, 0, 20, 4, 0, 0, 37, 0, 0, 0, 21, 4, 2, 0, 22, 4, 7, 0, 23, 4, 0, 0, 24, 4, 7, 0, 25, 4, 7, 0, 26, 4, + 7, 0, 27, 4, 7, 0, 28, 4, 7, 0, 29, 4, 7, 0, 30, 4, 7, 0, 31, 4, 7, 0, 32, 4, 7, 0, 33, 4, 2, 0, 34, 4, + 0, 0, 35, 4, 2, 0, 36, 4, 7, 0, 37, 4, 7, 0, 38, 4, 0, 0, 39, 4, 4, 0,121, 0, 4, 0, 40, 4, 4, 0, 41, 4, + 2, 0, 42, 4, 2, 0, 43, 4,175, 0, 44, 4, 4, 0, 45, 4, 4, 0, 82, 0, 7, 0, 46, 4, 7, 0, 47, 4, 7, 0, 48, 4, + 7, 0, 49, 4, 2, 0, 50, 4, 2, 0, 51, 4, 2, 0, 52, 4, 2, 0, 53, 4, 2, 0, 54, 4, 2, 0, 55, 4, 2, 0, 56, 4, + 2, 0, 57, 4,178, 0, 58, 4, 7, 0, 59, 4, 7, 0, 60, 4,136, 0, 61, 4, 12, 0,252, 2,172, 0, 62, 4, 7, 0, 63, 4, + 7, 0, 64, 4, 7, 0, 65, 4, 0, 0, 66, 4,152, 0, 51, 0,151, 0, 67, 4, 2, 0, 17, 0, 2, 0, 68, 4, 2, 0, 69, 4, + 2, 0, 70, 4, 7, 0, 71, 4, 2, 0, 72, 4, 2, 0, 73, 4, 7, 0, 74, 4, 2, 0, 75, 4, 2, 0, 76, 4, 7, 0, 77, 4, + 7, 0, 78, 4, 7, 0, 79, 4, 7, 0, 80, 4, 7, 0, 81, 4, 4, 0, 82, 4, 4, 0, 83, 4, 7, 0, 84, 4, 4, 0, 85, 4, + 7, 0, 86, 4, 7, 0, 87, 4, 7, 0, 88, 4, 80, 0, 89, 4, 80, 0, 90, 4, 80, 0, 91, 4, 0, 0, 92, 4, 7, 0, 93, 4, + 7, 0, 94, 4, 36, 0, 80, 0, 2, 0, 95, 4, 0, 0, 96, 4, 0, 0, 97, 4, 7, 0, 98, 4, 4, 0, 99, 4, 7, 0,100, 4, + 7, 0,101, 4, 4, 0,102, 4, 4, 0, 19, 0, 7, 0,103, 4, 7, 0,104, 4, 7, 0,105, 4, 84, 0,106, 4, 7, 0,107, 4, + 7, 0,108, 4, 7, 0,109, 4, 7, 0,110, 4, 7, 0,111, 4, 7, 0,112, 4, 7, 0,113, 4, 4, 0,114, 4,179, 0, 78, 0, + 27, 0, 31, 0, 39, 0, 75, 0, 2, 0,172, 0, 2, 0, 70, 1, 2, 0,104, 1, 2, 0,115, 4, 7, 0,116, 4, 7, 0,117, 4, + 7, 0,118, 4, 7, 0,119, 4, 7, 0,120, 4, 7, 0,121, 4, 7, 0,122, 4, 7, 0,123, 4, 7, 0,150, 1, 7, 0,152, 1, + 7, 0,151, 1, 7, 0,124, 4, 4, 0,125, 4, 7, 0,126, 4, 7, 0,127, 4, 7, 0,128, 4, 7, 0,129, 4, 7, 0,130, 4, + 7, 0,131, 4, 7, 0,132, 4, 2, 0,133, 4, 2, 0, 69, 1, 2, 0,134, 4, 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4, + 2, 0,138, 4, 2, 0,139, 4, 7, 0,140, 4, 7, 0,141, 4, 7, 0,142, 4, 7, 0,143, 4, 7, 0,144, 4, 7, 0,145, 4, + 7, 0,146, 4, 7, 0,147, 4, 7, 0,148, 4, 7, 0,149, 4, 7, 0,150, 4, 7, 0,151, 4, 2, 0,152, 4, 2, 0,153, 4, + 2, 0,154, 4, 2, 0,155, 4, 7, 0,156, 4, 7, 0,157, 4, 7, 0,158, 4, 7, 0,159, 4, 2, 0,160, 4, 2, 0,161, 4, + 2, 0,162, 4, 2, 0,163, 4, 7, 0,164, 4, 7, 0,165, 4, 7, 0,166, 4, 7, 0,167, 4, 7, 0,168, 4, 7, 0,169, 4, + 7, 0,170, 4, 2, 0,171, 4, 2, 0,172, 4, 2, 0,173, 4, 2, 0,174, 4, 2, 0,175, 4, 2, 0, 19, 0, 7, 0,176, 4, + 7, 0,177, 4, 36, 0, 80, 0, 51, 0,122, 1, 2, 0,123, 1, 2, 0,178, 4, 30, 0,148, 0,180, 0, 8, 0,180, 0, 0, 0, +180, 0, 1, 0, 4, 0,116, 3, 4, 0,179, 4, 4, 0, 19, 0, 2, 0,180, 4, 2, 0,181, 4, 32, 0,161, 0,181, 0, 13, 0, + 9, 0,182, 4, 9, 0,183, 4, 4, 0,184, 4, 4, 0,185, 4, 4, 0,186, 4, 4, 0,187, 4, 4, 0,188, 4, 4, 0,189, 4, + 4, 0,190, 4, 4, 0,191, 4, 4, 0,192, 4, 4, 0, 37, 0, 0, 0,193, 4,182, 0, 5, 0, 9, 0,194, 4, 9, 0,195, 4, + 4, 0,196, 4, 4, 0, 70, 0, 0, 0,197, 4,183, 0, 17, 0, 4, 0,198, 4, 4, 0,199, 4, 4, 0,200, 4, 4, 0,201, 4, + 4, 0,202, 4, 4, 0,203, 4, 4, 0,204, 4, 4, 0,205, 4, 4, 0,206, 4, 4, 0,207, 4, 4, 0,208, 4, 4, 0,209, 4, + 2, 0,210, 4, 2, 0,211, 4, 4, 0,212, 4, 4, 0,213, 4, 4, 0, 43, 0,184, 0, 15, 0, 4, 0, 17, 0, 4, 0,200, 4, + 4, 0,214, 4, 4, 0,215, 4, 4, 0,216, 4, 4, 0,217, 4, 7, 0,218, 4, 4, 0,219, 4, 4, 0, 90, 0, 4, 0,220, 4, + 4, 0,221, 4, 4, 0,222, 4, 4, 0,223, 4, 4, 0,224, 4, 26, 0, 30, 0,185, 0, 7, 0, 4, 0,225, 4, 7, 0,226, 4, + 7, 0,227, 4, 7, 0,228, 4, 4, 0,229, 4, 2, 0, 19, 0, 2, 0, 37, 0,186, 0, 11, 0,186, 0, 0, 0,186, 0, 1, 0, + 0, 0, 20, 0, 66, 0,230, 4, 67, 0,231, 4, 4, 0,116, 3, 4, 0,232, 4, 4, 0,233, 4, 4, 0, 37, 0, 4, 0,234, 4, + 4, 0,235, 4,187, 0,111, 0,181, 0,236, 4,182, 0,237, 4,183, 0,238, 4,184, 0,239, 4, 4, 0, 9, 3, 4, 0,121, 0, + 4, 0, 40, 4, 7, 0,240, 4, 4, 0,241, 4, 4, 0,242, 4, 4, 0,243, 4, 4, 0,244, 4, 2, 0, 19, 0, 2, 0,245, 4, + 7, 0,246, 4, 7, 0,247, 4, 7, 0,248, 4, 7, 0,249, 4, 7, 0,250, 4, 2, 0,251, 4, 2, 0,252, 4, 2, 0,253, 4, + 2, 0,254, 4, 2, 0,243, 0, 2, 0,255, 4, 2, 0, 0, 5, 2, 0, 1, 5, 2, 0, 2, 5, 2, 0, 3, 5, 2, 0, 91, 1, + 2, 0,106, 0, 2, 0, 4, 5, 2, 0, 5, 5, 2, 0, 6, 5, 2, 0, 7, 5, 2, 0, 8, 5, 2, 0, 9, 5, 2, 0, 10, 5, + 2, 0, 11, 5, 2, 0, 12, 5, 2, 0, 92, 1, 2, 0, 13, 5, 2, 0, 14, 5, 2, 0, 15, 5, 2, 0, 16, 5, 4, 0, 17, 5, + 4, 0, 69, 1, 4, 0, 18, 5, 2, 0, 19, 5, 2, 0, 20, 5, 2, 0, 21, 5, 2, 0,248, 1, 2, 0, 22, 5, 2, 0, 23, 5, + 2, 0, 24, 5, 2, 0, 25, 5, 24, 0, 26, 5, 24, 0, 27, 5, 23, 0, 28, 5, 12, 0, 29, 5, 2, 0, 30, 5, 2, 0, 31, 5, + 7, 0, 32, 5, 7, 0, 33, 5, 7, 0, 34, 5, 7, 0, 35, 5, 4, 0, 36, 5, 7, 0, 37, 5, 7, 0, 38, 5, 7, 0, 39, 5, + 7, 0, 40, 5, 2, 0, 41, 5, 2, 0, 42, 5, 2, 0, 43, 5, 2, 0, 44, 5, 2, 0, 45, 5, 2, 0, 46, 5, 7, 0, 47, 5, + 7, 0, 48, 5, 7, 0, 49, 5, 0, 0, 50, 5, 0, 0, 51, 5, 4, 0, 52, 5, 2, 0, 53, 5, 2, 0,226, 1, 0, 0, 54, 5, + 7, 0, 55, 5, 7, 0, 56, 5, 0, 0, 57, 5, 0, 0, 58, 5, 0, 0, 59, 5, 0, 0, 60, 5, 4, 0, 61, 5, 2, 0, 62, 5, + 2, 0, 63, 5, 7, 0, 64, 5, 7, 0, 65, 5, 2, 0, 66, 5, 2, 0, 67, 5, 7, 0, 68, 5, 2, 0, 69, 5, 2, 0, 70, 5, + 4, 0, 71, 5, 2, 0, 72, 5, 2, 0, 73, 5, 2, 0, 74, 5, 2, 0, 75, 5, 7, 0, 76, 5, 7, 0, 70, 0, 42, 0, 77, 5, + 0, 0, 78, 5,188, 0, 9, 0,188, 0, 0, 0,188, 0, 1, 0, 0, 0, 20, 0, 2, 0, 79, 5, 2, 0, 80, 5, 2, 0, 81, 5, + 2, 0, 43, 0, 7, 0, 82, 5, 7, 0, 70, 0,189, 0, 7, 0, 2, 0,200, 2, 2, 0, 69, 1, 2, 0, 64, 3, 2, 0, 83, 5, + 7, 0, 84, 5, 7, 0, 70, 0, 42, 0, 85, 5,190, 0, 5, 0, 7, 0, 86, 5, 0, 0, 17, 0, 0, 0, 43, 0, 0, 0, 70, 0, + 0, 0,226, 1,191, 0, 28, 0, 7, 0,131, 4, 7, 0,132, 4, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0, 87, 5, 2, 0,178, 4, + 2, 0,134, 4, 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4, 2, 0,138, 4, 2, 0,139, 4,190, 0, 88, 5, 2, 0,251, 4, + 2, 0,252, 4, 2, 0,253, 4, 2, 0,254, 4, 2, 0,243, 0, 2, 0,255, 4, 2, 0, 89, 5, 2, 0, 0, 5,189, 0, 90, 5, + 2, 0, 91, 5, 2, 0, 2, 5, 2, 0, 5, 5, 2, 0, 6, 5, 7, 0, 92, 5, 7, 0, 43, 0,192, 0, 6, 0,192, 0, 0, 0, +192, 0, 1, 0, 4, 0,227, 3, 0, 0,239, 3, 4, 0, 19, 0, 32, 0, 93, 5,193, 0, 6, 0,194, 0, 94, 5, 4, 0, 95, 5, + 4, 0, 96, 5, 9, 0, 97, 5, 0, 0, 98, 5, 4, 0, 90, 0,195, 0, 8, 0,193, 0, 99, 5, 2, 0, 19, 0, 2, 0, 37, 0, + 2, 0,100, 5, 2, 0,101, 5, 2, 0,102, 5, 4, 0, 43, 0, 9, 0,103, 5,196, 0, 6, 0, 2, 0,106, 0, 2, 0,233, 3, + 2, 0,104, 5, 2, 0,194, 2, 4, 0, 19, 0, 7, 0,211, 2,197, 0, 14, 0, 2, 0, 19, 0, 2, 0,105, 5, 2, 0,106, 5, + 2, 0,107, 5,196, 0,108, 5, 9, 0,103, 5, 7, 0,109, 5, 7, 0, 57, 0, 4, 0,110, 5, 4, 0,111, 5, 4, 0,112, 5, + 4, 0,113, 5, 46, 0,129, 0, 32, 0,161, 0,198, 0, 4, 0,198, 0, 0, 0,198, 0, 1, 0, 0, 0,114, 5, 7, 0,115, 5, +199, 0, 6, 0,193, 0, 99, 5, 7, 0,116, 5, 4, 0, 90, 0, 0, 0,117, 5, 0, 0,118, 5, 0, 0,180, 2,200, 0, 7, 0, +193, 0, 99, 5, 2, 0, 19, 0, 2, 0, 37, 0, 4, 0, 36, 0, 4, 0,119, 5, 86, 0,120, 5, 9, 0,103, 5,201, 0, 74, 0, +200, 0,121, 5,200, 0,122, 5,199, 0, 83, 3, 7, 0,123, 5, 2, 0,124, 5, 2, 0,125, 5, 7, 0,126, 5, 7, 0,127, 5, + 2, 0,233, 3, 2, 0,128, 5, 7, 0,129, 5, 7, 0,130, 5, 7, 0,131, 5, 2, 0,132, 5, 2, 0,110, 5, 2, 0,133, 5, + 2, 0,134, 5, 2, 0,135, 5, 2, 0,136, 5, 7, 0,137, 5, 7, 0,138, 5, 7, 0,139, 5, 2, 0,140, 5, 2, 0,141, 5, + 2, 0,142, 5, 2, 0,143, 5, 2, 0,144, 5, 2, 0,145, 5, 2, 0,146, 5,195, 0,147, 5,197, 0,148, 5, 7, 0,149, 5, + 7, 0,150, 5, 7, 0,151, 5, 2, 0,152, 5, 2, 0,153, 5, 0, 0,154, 5, 0, 0,155, 5, 0, 0,156, 5, 0, 0,157, 5, + 0, 0,158, 5, 0, 0,159, 5, 2, 0,160, 5, 7, 0,161, 5, 7, 0,162, 5, 7, 0,163, 5, 7, 0,164, 5, 7, 0,165, 5, + 7, 0,166, 5, 7, 0,167, 5, 7, 0,168, 5, 7, 0,169, 5, 7, 0,170, 5, 2, 0,171, 5, 0, 0,172, 5, 0, 0,173, 5, + 0, 0,174, 5, 0, 0,175, 5, 32, 0,176, 5, 0, 0,177, 5, 0, 0,178, 5, 0, 0,179, 5, 0, 0,180, 5, 0, 0,181, 5, + 0, 0,182, 5, 0, 0,183, 5, 0, 0,184, 5, 2, 0,185, 5, 2, 0,186, 5, 2, 0,187, 5, 2, 0,188, 5, 2, 0,189, 5, + 4, 0,190, 5, 4, 0,191, 5,202, 0, 8, 0, 4, 0,192, 5, 4, 0,193, 5, 4, 0,194, 5, 4, 0,195, 5, 4, 0,196, 5, + 4, 0,197, 5, 4, 0, 54, 0, 4, 0,114, 2,203, 0, 3, 0, 7, 0,198, 5, 2, 0,199, 5, 2, 0, 19, 0,204, 0, 4, 0, + 7, 0,200, 5, 4, 0, 19, 0, 4, 0,201, 5, 4, 0, 57, 0, 46, 0, 42, 0, 27, 0, 31, 0, 39, 0, 75, 0, 32, 0, 93, 5, +179, 0,202, 5, 46, 0,203, 5, 47, 0,235, 0, 12, 0,204, 5,180, 0,205, 5, 32, 0,206, 5, 7, 0,207, 5, 7, 0,208, 5, + 7, 0,209, 5, 7, 0,210, 5, 4, 0,116, 3, 4, 0,211, 5, 4, 0, 43, 0, 2, 0, 19, 0, 2, 0, 63, 1, 60, 0, 58, 1, +205, 0,212, 5,201, 0,213, 5,206, 0,214, 5,187, 0,179, 0,185, 0,215, 5, 12, 0,100, 0, 12, 0,216, 5, 9, 0,217, 5, + 9, 0,218, 5, 9, 0,219, 5,207, 0,220, 5, 2, 0,221, 5, 2, 0,222, 5, 2, 0,244, 0, 2, 0,223, 5, 4, 0,224, 5, + 4, 0,225, 5, 12, 0,226, 5,190, 0, 88, 5,191, 0,227, 5,203, 0,228, 5,163, 0, 96, 3,204, 0,229, 5,208, 0, 11, 0, +208, 0, 0, 0,208, 0, 1, 0, 47, 0,235, 0, 45, 0, 57, 1, 7, 0, 78, 2, 7, 0, 79, 2, 7, 0,106, 0, 7, 0,230, 5, + 2, 0,231, 5, 2, 0, 19, 0, 7, 0, 70, 0,209, 0, 39, 0, 7, 0,232, 5, 7, 0,233, 5, 7, 0,234, 5, 7, 0,235, 5, + 7, 0,236, 5, 7, 0,237, 5, 7, 0,238, 5, 7, 0,239, 5, 7, 0,240, 5, 7, 0, 76, 1, 7, 0,241, 5, 7, 0,242, 5, + 7, 0,243, 5, 7, 0,244, 5, 7, 0,168, 0, 2, 0,245, 5, 2, 0,246, 5, 2, 0,247, 5, 2, 0, 37, 0, 2, 0,248, 5, + 2, 0,249, 5, 2, 0,250, 5, 2, 0,231, 5, 7, 0,251, 5, 7, 0,252, 5, 71, 0,253, 5,163, 0, 96, 3,209, 0,254, 5, +210, 0,255, 5,211, 0, 0, 6,212, 0, 1, 6,213, 0, 2, 6,214, 0, 3, 6, 7, 0, 4, 6, 2, 0, 5, 6, 2, 0, 6, 6, + 7, 0, 7, 6, 7, 0, 8, 6, 7, 0, 9, 6,215, 0, 55, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, + 7, 0, 12, 6, 2, 0, 13, 6, 7, 0,240, 5, 7, 0, 76, 1, 7, 0, 43, 0, 4, 0, 14, 6, 2, 0,250, 5, 2, 0,231, 5, + 32, 0, 93, 5, 32, 0, 15, 6, 12, 0, 16, 6,208, 0, 17, 6,215, 0,254, 5, 0, 0, 18, 6, 4, 0,116, 3, 4, 0,211, 5, + 2, 0, 19, 6, 2, 0, 70, 0, 2, 0, 20, 6, 2, 0, 21, 6, 2, 0,226, 1, 2, 0, 19, 0, 2, 0, 17, 2, 2, 0, 22, 6, + 7, 0,111, 0, 7, 0, 23, 6, 7, 0, 7, 6, 7, 0, 9, 6, 7, 0, 24, 6, 7, 0, 25, 6, 7, 0,168, 0, 7, 0,207, 5, + 2, 0, 26, 6, 2, 0,248, 1, 2, 0, 27, 6, 2, 0, 28, 6, 2, 0, 29, 6, 2, 0, 30, 6, 2, 0, 31, 6, 2, 0, 32, 6, + 2, 0, 33, 6, 2, 0,247, 5, 4, 0, 34, 6, 12, 0, 35, 6, 2, 0, 36, 6, 2, 0,128, 2, 2, 0, 37, 6, 0, 0, 38, 6, + 0, 0, 39, 6, 9, 0, 40, 6,163, 0, 96, 3,217, 0, 24, 0, 24, 0, 36, 0, 24, 0, 64, 0, 23, 0, 41, 6, 23, 0, 42, 6, + 23, 0, 43, 6, 7, 0, 44, 6, 7, 0, 45, 6, 7, 0, 46, 6, 7, 0, 47, 6, 2, 0, 48, 6, 2, 0, 49, 6, 2, 0, 50, 6, + 2, 0, 51, 6, 2, 0, 52, 6, 2, 0, 19, 0, 2, 0, 53, 6, 2, 0, 54, 6, 2, 0, 55, 6, 2, 0, 56, 6, 2, 0, 57, 6, + 2, 0, 21, 6, 7, 0, 58, 6, 4, 0, 59, 6, 4, 0, 60, 6,216, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, + 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6,218, 0, 8, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, + 7, 0, 12, 6, 2, 0, 13, 6,219, 0, 61, 6, 46, 0,129, 0,220, 0, 14, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, + 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6,217, 0, 62, 6,221, 0, 63, 6, 12, 0, 64, 6, 2, 0, 69, 1, 2, 0, 65, 6, + 4, 0, 19, 0, 7, 0, 66, 6, 4, 0, 21, 6,222, 0, 20, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, + 7, 0, 12, 6, 2, 0, 13, 6,210, 0,255, 5,217, 0, 62, 6, 2, 0, 67, 6, 2, 0, 68, 6, 2, 0, 69, 6, 2, 0, 70, 6, + 2, 0, 53, 6, 2, 0, 71, 6, 0, 0, 19, 0, 0, 0,178, 4, 9, 0, 54, 2, 4, 0, 72, 6, 4, 0, 73, 6, 27, 0, 74, 6, +223, 0, 18, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6,217, 0, 62, 6, + 7, 0, 78, 2, 7, 0, 79, 2, 2, 0, 67, 6, 2, 0, 75, 6, 2, 0, 76, 6, 2, 0, 77, 6, 4, 0, 19, 0, 7, 0, 78, 6, + 4, 0,231, 5, 4, 0, 37, 0,163, 0, 96, 3,224, 0, 15, 0, 0, 0, 79, 6, 0, 0, 80, 6, 0, 0, 81, 6, 0, 0, 82, 6, + 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 83, 6, 2, 0, 84, 6, 2, 0,169, 1, 2, 0, 85, 6, 4, 0, 86, 6, 4, 0, 87, 6, + 2, 0, 88, 6, 2, 0, 37, 0, 0, 0, 89, 6,225, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, + 4, 0, 90, 6,224, 0, 91, 6,226, 0, 92, 6, 12, 0, 93, 6, 12, 0, 94, 6,227, 0, 95, 6,214, 0, 96, 6,228, 0, 97, 6, + 2, 0, 98, 6, 2, 0, 99, 6, 2, 0,100, 6, 2, 0, 70, 0,229, 0, 17, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, + 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6,217, 0, 62, 6, 12, 0,101, 6,230, 0,102, 6, 0, 0,103, 6,231, 0,104, 6, + 4, 0,105, 6, 4, 0,106, 6, 2, 0, 19, 0, 2, 0,107, 6, 2, 0,108, 6, 2, 0, 37, 0,232, 0, 32, 0,216, 0, 0, 0, +216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6, 47, 0,219, 2, 45, 0, 57, 1, 63, 0,109, 6, + 2, 0,128, 0, 2, 0,110, 6, 2, 0, 70, 0, 2, 0,111, 6, 4, 0, 19, 0, 2, 0,112, 6, 2, 0,113, 6, 2, 0,114, 6, + 2, 0,226, 1, 0, 0,115, 6, 0, 0,116, 6, 0, 0,117, 6, 0, 0, 21, 6, 7, 0,118, 6, 7, 0, 78, 2, 7, 0, 79, 2, + 7, 0, 78, 6, 7, 0,248, 1, 7, 0,119, 6, 7, 0,120, 6,163, 0, 96, 3,233, 0,121, 6,234, 0,122, 6,235, 0, 11, 0, +216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6, 2, 0, 65, 6, 2, 0, 19, 0, + 4, 0, 37, 0,221, 0, 63, 6,217, 0, 62, 6,236, 0, 27, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, + 7, 0, 12, 6, 2, 0, 13, 6, 42, 0,123, 6, 4, 0,124, 6, 4, 0,125, 6, 2, 0, 90, 0, 2, 0,128, 0, 2, 0,126, 6, + 0, 0,127, 6, 0, 0,128, 6, 4, 0,129, 6, 4, 0,130, 6, 4, 0,131, 6, 4, 0,132, 6, 2, 0,133, 6, 2, 0,134, 6, + 7, 0,135, 6, 23, 0,136, 6, 23, 0,137, 6, 4, 0,138, 6, 4, 0,139, 6, 0, 0,140, 6, 0, 0,141, 6,237, 0, 10, 0, + 27, 0, 31, 0, 9, 0,142, 6, 9, 0,143, 6, 9, 0,144, 6, 9, 0,145, 6, 9, 0,146, 6, 4, 0, 90, 0, 4, 0,147, 6, + 0, 0,148, 6, 0, 0,149, 6,238, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, +237, 0,150, 6, 2, 0, 90, 0, 2, 0,128, 0, 4, 0, 43, 0, 9, 0,151, 6,239, 0, 9, 0,239, 0, 0, 0,239, 0, 1, 0, + 4, 0, 17, 0, 4, 0, 19, 0, 7, 0,152, 6, 4, 0, 23, 0, 4, 0,235, 3, 4, 0,236, 3, 4, 0,124, 0,240, 0, 11, 0, +216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6,217, 0, 62, 6, 12, 0,153, 6, 4, 0,154, 6, + 4, 0, 37, 0, 4, 0, 19, 0, 4, 0,155, 6,241, 0, 25, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, + 7, 0, 12, 6, 2, 0, 13, 6,217, 0, 62, 6, 27, 0,156, 6, 27, 0, 81, 0, 2, 0, 19, 0, 2, 0,128, 0, 7, 0,157, 6, + 9, 0,158, 6, 7, 0, 78, 2, 7, 0, 79, 2, 7, 0, 78, 6, 7, 0, 9, 6, 7, 0,159, 6, 7, 0,160, 6, 60, 0, 58, 1, + 60, 0,161, 6, 4, 0,162, 6, 2, 0,163, 6, 2, 0, 37, 0,163, 0, 96, 3,242, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6, 2, 0, 19, 0, 2, 0,125, 3, 4, 0, 37, 0,163, 0, 96, 3, +243, 0, 42, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6,217, 0, 62, 6, +226, 0, 92, 6, 0, 0, 79, 6, 0, 0, 80, 6, 0, 0, 81, 6, 2, 0, 17, 0, 2, 0,164, 6, 2, 0, 19, 0, 2, 0, 83, 6, + 9, 0,158, 6, 4, 0, 86, 6, 4, 0,165, 6, 4, 0,166, 6, 4, 0, 87, 6, 23, 0,167, 6, 23, 0,168, 6, 7, 0,169, 6, + 7, 0,170, 6, 7, 0,171, 6, 7, 0,157, 6, 2, 0,172, 6, 2, 0,234, 0, 2, 0,169, 1, 2, 0, 85, 6, 2, 0, 37, 0, + 2, 0, 43, 0, 2, 0,173, 6, 2, 0,174, 6, 9, 0,175, 6, 9, 0,176, 6, 9, 0,177, 6, 9, 0,178, 6, 9, 0,179, 6, + 2, 0,180, 6, 0, 0,181, 6, 57, 0,182, 6,244, 0, 7, 0,244, 0, 0, 0,244, 0, 1, 0, 4, 0,183, 6, 4, 0, 23, 0, + 0, 0, 84, 0, 4, 0,184, 6, 4, 0, 17, 0,245, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, + 7, 0, 12, 6, 2, 0, 13, 6, 4, 0, 17, 0, 4, 0,185, 6, 4, 0, 19, 0, 4, 0,126, 6, 12, 0,186, 6, 12, 0,187, 6, + 0, 0,188, 6, 0, 0,189, 6, 4, 0,190, 6, 4, 0,191, 6,246, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, + 4, 0, 11, 6, 4, 0, 37, 0, 0, 0,192, 6,247, 0, 7, 0,247, 0, 0, 0,247, 0, 1, 0, 0, 0,193, 6, 2, 0,194, 6, + 2, 0,195, 6, 2, 0,196, 6, 2, 0, 37, 0,248, 0, 12, 0, 2, 0,195, 6, 2, 0,197, 6, 2, 0,198, 6, 0, 0,180, 2, + 2, 0,199, 6, 2, 0,200, 6, 2, 0,201, 6, 2, 0,202, 6, 2, 0,203, 6, 2, 0, 53, 6, 7, 0,204, 6, 7, 0,205, 6, +249, 0, 18, 0,249, 0, 0, 0,249, 0, 1, 0, 0, 0,239, 3,248, 0,206, 6,248, 0,207, 6,248, 0,208, 6,248, 0,209, 6, + 7, 0,210, 6, 2, 0,211, 6, 2, 0,212, 6, 2, 0,213, 6, 2, 0,214, 6, 2, 0,215, 6, 2, 0,216, 6, 2, 0,217, 6, + 2, 0,218, 6, 2, 0,219, 6, 2, 0,220, 6,250, 0, 10, 0, 0, 0,221, 6, 0, 0,222, 6, 0, 0,223, 6, 0, 0,224, 6, + 0, 0,225, 6, 0, 0,226, 6, 2, 0,227, 6, 2, 0,228, 6, 2, 0,229, 6, 2, 0,230, 6,251, 0, 8, 0, 0, 0,231, 6, + 0, 0,232, 6, 0, 0,233, 6, 0, 0,234, 6, 0, 0,235, 6, 0, 0,236, 6, 7, 0,230, 5, 7, 0, 37, 0,252, 0, 18, 0, +250, 0,237, 6,250, 0,238, 6,250, 0,239, 6,250, 0,240, 6,250, 0,241, 6,250, 0,242, 6,250, 0,243, 6,250, 0,244, 6, +250, 0,245, 6,250, 0,246, 6,250, 0,247, 6,250, 0,248, 6,250, 0,249, 6,250, 0,250, 6,250, 0,251, 6,250, 0,252, 6, +251, 0,253, 6, 0, 0,254, 6,253, 0, 92, 0, 0, 0,255, 6, 0, 0, 0, 7, 0, 0,225, 6, 0, 0, 1, 7, 0, 0, 2, 7, + 0, 0, 3, 7, 0, 0, 4, 7, 0, 0, 5, 7, 0, 0, 6, 7, 0, 0, 7, 7, 0, 0, 8, 7, 0, 0, 9, 7, 0, 0, 10, 7, + 0, 0, 11, 7, 0, 0, 12, 7, 0, 0, 13, 7, 0, 0, 14, 7, 0, 0, 15, 7, 0, 0, 16, 7, 0, 0, 17, 7, 0, 0, 18, 7, + 0, 0, 19, 7, 0, 0, 20, 7, 0, 0, 21, 7, 0, 0, 22, 7, 0, 0, 23, 7, 0, 0, 24, 7, 0, 0, 25, 7, 0, 0, 26, 7, + 0, 0, 27, 7, 0, 0, 28, 7, 0, 0, 29, 7, 0, 0, 30, 7, 0, 0, 31, 7, 0, 0, 32, 7, 0, 0, 33, 7, 0, 0, 34, 7, + 0, 0, 35, 7, 0, 0, 36, 7, 0, 0, 37, 7, 0, 0, 38, 7, 0, 0, 39, 7, 0, 0, 40, 7, 0, 0, 41, 7, 0, 0, 42, 7, + 0, 0, 43, 7, 0, 0, 44, 7, 0, 0, 45, 7, 0, 0, 46, 7, 0, 0, 47, 7, 0, 0, 48, 7, 0, 0, 49, 7, 0, 0, 50, 7, + 0, 0, 51, 7, 0, 0, 52, 7, 0, 0, 53, 7, 0, 0, 54, 7, 0, 0, 55, 7, 0, 0, 56, 7, 0, 0, 57, 7, 0, 0, 58, 7, + 0, 0, 59, 7, 0, 0, 60, 7, 0, 0, 61, 7, 0, 0, 62, 7, 0, 0, 63, 7, 0, 0, 64, 7, 0, 0, 65, 7, 0, 0, 66, 7, + 0, 0, 67, 7, 0, 0, 68, 7, 0, 0, 69, 7, 0, 0, 70, 7, 0, 0, 71, 7, 0, 0, 72, 7, 0, 0, 73, 7, 0, 0, 74, 7, + 0, 0, 75, 7, 0, 0, 76, 7, 0, 0, 77, 7, 0, 0, 78, 7, 0, 0, 79, 7, 0, 0, 80, 7, 0, 0, 81, 7, 0, 0, 82, 7, + 0, 0, 83, 7, 0, 0, 84, 7, 0, 0, 85, 7, 0, 0, 86, 7, 0, 0, 87, 7, 0, 0, 88, 7, 0, 0, 89, 7,254, 0, 5, 0, + 0, 0, 90, 7, 0, 0, 23, 7, 0, 0, 25, 7, 2, 0, 19, 0, 2, 0, 37, 0,255, 0, 25, 0,255, 0, 0, 0,255, 0, 1, 0, + 0, 0, 20, 0,252, 0, 91, 7,253, 0, 92, 7,253, 0, 93, 7,253, 0, 94, 7,253, 0, 95, 7,253, 0, 96, 7,253, 0, 97, 7, +253, 0, 98, 7,253, 0, 99, 7,253, 0,100, 7,253, 0,101, 7,253, 0,102, 7,253, 0,103, 7,253, 0,104, 7,253, 0,105, 7, +253, 0,106, 7,253, 0,107, 7,253, 0,108, 7,253, 0,109, 7,254, 0,110, 7, 4, 0,111, 7, 4, 0, 37, 0, 0, 1, 3, 0, + 0, 1, 0, 0, 0, 1, 1, 0, 0, 0,112, 7, 1, 1, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,127, 2, 7, 0,113, 7, + 7, 0, 32, 2, 2, 1, 84, 0, 4, 0, 19, 0, 4, 0,114, 7, 4, 0,115, 7, 0, 0,116, 7, 0, 0,117, 7, 0, 0,118, 7, + 0, 0,119, 7, 0, 0,120, 7, 0, 0,121, 7, 0, 0,122, 7, 0, 0,123, 7, 0, 0,124, 7, 0, 0,125, 7, 4, 0,126, 7, + 2, 0,127, 7, 2, 0,128, 7, 2, 0,129, 7, 2, 0,130, 7, 4, 0,131, 7, 4, 0,132, 7, 4, 0,133, 7, 4, 0,134, 7, + 2, 0,135, 7, 2, 0,136, 7, 4, 0,137, 7, 4, 0,138, 7, 4, 0,139, 7, 4, 0,140, 7, 4, 0,141, 7, 4, 0,186, 6, + 4, 0,142, 7, 2, 0,143, 7, 2, 0,144, 7, 2, 0,145, 7, 2, 0,146, 7, 12, 0,147, 7, 12, 0,148, 7, 12, 0,149, 7, + 12, 0,150, 7, 12, 0,151, 7, 0, 0,152, 7, 2, 0,153, 7, 2, 0,154, 7, 2, 0,155, 7, 2, 0,156, 7, 2, 0,157, 7, + 2, 0,158, 7, 2, 0,159, 7, 2, 0,160, 7, 1, 1,161, 7, 2, 0,162, 7, 2, 0,163, 7, 2, 0,164, 7, 2, 0,165, 7, + 2, 0,166, 7, 2, 0,167, 7, 2, 0,168, 7, 2, 0,169, 7, 4, 0,170, 7, 4, 0,171, 7, 2, 0,172, 7, 2, 0,173, 7, + 2, 0,174, 7, 2, 0,175, 7, 2, 0,176, 7, 2, 0,177, 7, 2, 0,178, 7, 2, 0,179, 7, 2, 0,180, 7, 2, 0,181, 7, + 2, 0,182, 7, 2, 0,183, 7, 2, 0,184, 7, 2, 0,185, 7, 2, 0,186, 7, 2, 0,187, 7, 2, 0,188, 7, 2, 0,178, 4, + 0, 0,189, 7, 0, 0,190, 7, 7, 0,191, 7, 2, 0,152, 5, 2, 0,153, 5, 55, 0,192, 7,219, 0, 21, 0, 27, 0, 31, 0, + 12, 0,193, 7, 12, 0,194, 7, 12, 0,195, 7, 12, 0, 10, 6, 46, 0,129, 0, 46, 0,196, 7, 2, 0,197, 7, 2, 0,198, 7, + 2, 0,199, 7, 2, 0,200, 7, 2, 0,201, 7, 2, 0,202, 7, 2, 0,203, 7, 2, 0,204, 7, 2, 0,205, 7, 2, 0,206, 7, + 4, 0, 70, 0,214, 0,207, 7, 9, 0,208, 7, 2, 0,209, 7, 3, 1, 5, 0, 3, 1, 0, 0, 3, 1, 1, 0, 3, 1,210, 7, + 13, 0,211, 7, 4, 0, 19, 0, 4, 1, 7, 0, 4, 1, 0, 0, 4, 1, 1, 0, 3, 1,212, 7, 3, 1,213, 7, 2, 0, 27, 5, + 2, 0, 19, 0, 4, 0, 37, 0, 5, 1, 25, 0, 5, 1, 0, 0, 5, 1, 1, 0, 6, 1,214, 7, 7, 1, 97, 6, 0, 0,215, 7, + 0, 0,216, 7, 0, 0,217, 7, 2, 0,218, 7, 2, 0,219, 7, 2, 0,220, 7, 2, 0,221, 7, 2, 0,222, 7, 2, 0, 37, 0, + 2, 0, 19, 0, 2, 0,223, 7, 2, 0,224, 7, 2, 0,225, 7, 4, 0,226, 7, 5, 1,227, 7, 9, 0,228, 7, 4, 0,229, 7, + 4, 0,230, 7, 4, 0,231, 7, 4, 0,232, 7, 0, 0,233, 7, 8, 1, 22, 0, 8, 1, 0, 0, 8, 1, 1, 0, 3, 1,212, 7, + 3, 1,213, 7, 3, 1,234, 7, 3, 1,235, 7,219, 0,236, 7, 23, 0, 52, 0, 0, 0, 11, 6, 0, 0,237, 7, 2, 0, 54, 6, + 2, 0, 55, 6, 2, 0,238, 7, 2, 0, 37, 0, 2, 0,200, 7, 2, 0,184, 6, 2, 0, 19, 0, 9, 1,214, 7, 12, 0,239, 7, + 12, 0, 10, 6, 12, 0,240, 7, 12, 0,241, 7, 10, 1, 24, 0, 10, 1, 0, 0, 10, 1, 1, 0,217, 0, 62, 6, 23, 0,242, 7, + 23, 0,243, 7, 2, 0, 54, 6, 2, 0, 55, 6, 2, 0,244, 7, 2, 0,245, 7, 2, 0,246, 7, 2, 0, 19, 0, 7, 0, 74, 2, + 2, 0,220, 7, 2, 0,221, 7, 2, 0,199, 7, 2, 0,247, 7, 2, 0,204, 7, 2, 0,178, 4, 11, 1,214, 7, 12, 0,248, 7, + 12, 0,249, 7, 12, 0,240, 7, 0, 0,250, 7, 9, 0,251, 7, 12, 1, 12, 0, 0, 0,252, 7, 2, 0,253, 7, 2, 0,254, 7, + 2, 0,255, 7, 2, 0, 0, 8, 2, 0, 14, 5, 2, 0, 9, 5,219, 0, 1, 8, 46, 0, 2, 8, 4, 0, 3, 8, 4, 0, 4, 8, + 0, 0, 5, 8, 13, 1, 1, 0, 0, 0, 6, 8, 14, 1, 8, 0, 57, 0, 7, 8, 57, 0, 8, 8, 14, 1, 9, 8, 14, 1, 10, 8, + 14, 1, 11, 8, 2, 0,124, 0, 2, 0, 19, 0, 4, 0, 12, 8, 15, 1, 4, 0, 4, 0,124, 6, 4, 0, 13, 8, 4, 0,129, 6, + 4, 0, 14, 8, 16, 1, 2, 0, 4, 0, 15, 8, 4, 0, 16, 8, 17, 1, 5, 0, 7, 0, 17, 8, 7, 0, 18, 8, 7, 0, 19, 8, + 4, 0, 19, 0, 4, 0, 37, 0, 18, 1, 6, 0, 0, 0, 20, 8, 0, 0, 81, 6, 49, 0,132, 0, 2, 0,106, 0, 2, 0, 13, 5, + 4, 0, 37, 0, 19, 1, 21, 0, 19, 1, 0, 0, 19, 1, 1, 0, 4, 0, 57, 0, 4, 0, 23, 0, 4, 0, 28, 0, 4, 0, 21, 8, + 4, 0, 22, 8, 4, 0, 23, 8, 13, 1, 24, 8, 0, 0, 20, 8, 4, 0, 25, 8, 4, 0, 26, 8, 18, 1, 90, 3, 15, 1, 27, 8, + 16, 1, 28, 8, 17, 1, 29, 8, 14, 1, 30, 8, 14, 1, 31, 8, 14, 1, 32, 8, 57, 0, 33, 8, 57, 0, 34, 8, 20, 1, 12, 0, + 0, 0,250, 1, 9, 0,220, 0, 0, 0,221, 0, 4, 0,224, 0, 4, 0,232, 0, 9, 0,225, 0, 7, 0,227, 0, 7, 0,228, 0, + 9, 0, 35, 8, 9, 0, 36, 8, 9, 0,229, 0, 9, 0,231, 0, 21, 1, 46, 0, 21, 1, 0, 0, 21, 1, 1, 0, 9, 0, 37, 8, + 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 19, 0, 4, 0, 17, 0, 4, 0, 23, 0, 4, 0, 88, 0, 4, 0, 38, 8, 4, 0, 39, 8, + 4, 0, 22, 8, 4, 0, 23, 8, 4, 0, 40, 8, 4, 0,243, 0, 4, 0, 41, 8, 4, 0, 42, 8, 7, 0, 43, 8, 7, 0, 44, 8, + 4, 0,121, 0, 4, 0, 45, 8, 19, 1, 46, 8, 36, 0, 80, 0, 46, 0,129, 0, 32, 0, 47, 8, 49, 0,132, 0, 7, 0, 48, 8, + 7, 0, 49, 8, 20, 1, 59, 1, 21, 1, 50, 8, 21, 1, 51, 8, 21, 1, 52, 8, 12, 0, 53, 8, 22, 1, 54, 8, 9, 0, 55, 8, + 7, 0,248, 3, 7, 0, 56, 8, 7, 0, 57, 8, 4, 0, 58, 8, 4, 0, 59, 8, 7, 0, 60, 8, 9, 0, 61, 8, 4, 0, 62, 8, + 4, 0, 63, 8, 4, 0, 64, 8, 7, 0, 65, 8, 23, 1, 4, 0, 23, 1, 0, 0, 23, 1, 1, 0, 12, 0, 66, 8, 21, 1, 67, 8, +205, 0, 11, 0, 12, 0, 68, 8, 12, 0, 53, 8, 12, 0, 69, 8, 21, 1, 70, 8, 0, 0, 71, 8, 0, 0, 72, 8, 4, 0, 73, 8, + 4, 0, 74, 8, 4, 0, 75, 8, 4, 0, 37, 0, 24, 0, 76, 8, 24, 1, 4, 0, 7, 0, 77, 8, 7, 0, 64, 3, 2, 0, 78, 8, + 2, 0, 79, 8, 25, 1, 6, 0, 7, 0, 80, 8, 7, 0, 81, 8, 7, 0, 82, 8, 7, 0, 83, 8, 4, 0, 84, 8, 4, 0, 85, 8, + 26, 1, 13, 0, 7, 0, 86, 8, 7, 0, 87, 8, 7, 0, 88, 8, 7, 0, 89, 8, 7, 0, 90, 8, 7, 0, 91, 8, 7, 0, 92, 8, + 7, 0, 93, 8, 7, 0, 94, 8, 7, 0, 95, 8, 4, 0,225, 2, 4, 0, 96, 8, 4, 0, 97, 8, 27, 1, 2, 0, 7, 0, 86, 5, + 7, 0, 37, 0, 28, 1, 5, 0, 7, 0, 98, 8, 7, 0, 99, 8, 4, 0, 90, 0, 4, 0,181, 2, 4, 0,100, 8, 29, 1, 6, 0, + 29, 1, 0, 0, 29, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,101, 8, 2, 0, 57, 0, 30, 1, 8, 0, 30, 1, 0, 0, + 30, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,101, 8, 2, 0, 57, 0, 7, 0, 23, 0, 7, 0,121, 0, 31, 1, 45, 0, + 31, 1, 0, 0, 31, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,101, 8, 2, 0,239, 0, 2, 0, 34, 4, 2, 0,102, 8, + 7, 0,103, 8, 7, 0, 89, 0, 7, 0,238, 2, 4, 0,104, 8, 4, 0, 82, 0, 4, 0,183, 2, 7, 0,105, 8, 7, 0,106, 8, + 7, 0,107, 8, 7, 0,108, 8, 7, 0,109, 8, 7, 0,110, 8, 7, 0,235, 2, 7, 0, 56, 1, 7, 0,111, 8, 7, 0,112, 8, + 7, 0, 37, 0, 7, 0,113, 8, 7, 0,114, 8, 7, 0,115, 8, 2, 0,116, 8, 2, 0,117, 8, 2, 0,118, 8, 2, 0,119, 8, + 2, 0,120, 8, 2, 0,121, 8, 2, 0,122, 8, 2, 0,123, 8, 2, 0, 17, 2, 2, 0,124, 8, 2, 0, 14, 2, 2, 0,125, 8, + 0, 0,126, 8, 0, 0,127, 8, 7, 0,237, 0, 32, 1,128, 8, 67, 0,229, 1, 33, 1, 16, 0, 33, 1, 0, 0, 33, 1, 1, 0, + 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,101, 8, 2, 0,239, 0, 7, 0,230, 2, 7, 0,231, 2, 7, 0,232, 2, 7, 0, 63, 2, + 7, 0,233, 2, 7, 0,234, 2, 7, 0,129, 8, 7, 0,235, 2, 7, 0,237, 2, 7, 0,238, 2,231, 0, 5, 0, 2, 0, 17, 0, + 2, 0, 12, 8, 2, 0, 19, 0, 2, 0,130, 8, 27, 0,156, 6,230, 0, 3, 0, 4, 0, 69, 0, 4, 0,131, 8,231, 0, 2, 0, + 34, 1, 7, 0, 34, 1, 0, 0, 34, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, 9, 0,132, 8, + 35, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0,133, 8, 4, 0,134, 8, 4, 0, 37, 0, 36, 1, 4, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 2, 0, 43, 0, 2, 0, 70, 0, 37, 1, 4, 0, 0, 0, 20, 0, 66, 0,135, 8, 7, 0, 76, 1, 7, 0, 37, 0, + 38, 1, 6, 0, 2, 0,136, 8, 2, 0,137, 8, 2, 0, 17, 0, 2, 0,138, 8, 0, 0,139, 8, 0, 0,140, 8, 39, 1, 5, 0, + 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0,141, 8, 0, 0,142, 8, 40, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, + 0, 0, 20, 0, 41, 1, 4, 0, 2, 0,143, 8, 2, 0,144, 8, 2, 0, 19, 0, 2, 0, 37, 0, 42, 1, 6, 0, 0, 0, 20, 0, + 0, 0,145, 8, 2, 0,146, 8, 2, 0,235, 2, 2, 0, 69, 1, 2, 0, 70, 0, 43, 1, 5, 0, 0, 0, 20, 0, 7, 0, 64, 3, + 7, 0,128, 4, 2, 0, 19, 0, 2, 0,195, 2, 44, 1, 3, 0, 0, 0, 20, 0, 4, 0,183, 2, 4, 0,143, 8, 45, 1, 7, 0, + 0, 0, 20, 0, 7, 0,128, 4, 0, 0,147, 8, 0, 0,148, 8, 2, 0, 69, 1, 2, 0, 43, 0, 4, 0,149, 8, 46, 1, 4, 0, + 0, 0,150, 8, 0, 0,151, 8, 4, 0, 17, 0, 7, 0,199, 2, 47, 1, 3, 0, 32, 0,152, 8, 0, 0,153, 8, 0, 0,154, 8, + 48, 1, 18, 0, 48, 1, 0, 0, 48, 1, 1, 0, 2, 0, 17, 0, 2, 0,155, 8, 2, 0, 19, 0, 2, 0,156, 8, 2, 0,157, 8, + 2, 0,158, 8, 2, 0, 43, 0, 2, 0, 70, 0, 0, 0, 20, 0, 9, 0, 2, 0, 49, 1,159, 8, 32, 0, 45, 0, 2, 0,104, 5, + 2, 0, 56, 8, 2, 0,160, 8, 2, 0, 37, 0, 50, 1, 11, 0, 0, 0, 20, 0, 0, 0, 17, 0, 0, 0,161, 8, 2, 0, 19, 0, + 2, 0,195, 2, 2, 0,162, 8, 4, 0,163, 8, 4, 0,164, 8, 4, 0,165, 8, 4, 0,166, 8, 4, 0,167, 8, 51, 1, 1, 0, + 0, 0,168, 8, 52, 1, 4, 0, 42, 0,123, 6, 0, 0,112, 7, 4, 0, 69, 1, 4, 0, 19, 0, 49, 1, 18, 0, 49, 1, 0, 0, + 49, 1, 1, 0, 49, 1,169, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,170, 8, 2, 0,158, 8, 2, 0,155, 8, 2, 0,171, 8, + 2, 0, 70, 0, 2, 0,226, 1, 0, 0, 20, 0, 9, 0, 2, 0, 53, 1,159, 8, 48, 1,172, 8, 2, 0, 15, 0, 2, 0,173, 8, + 4, 0,174, 8, 54, 1, 3, 0, 4, 0,209, 2, 4, 0, 37, 0, 32, 0, 45, 0, 55, 1, 12, 0,161, 0,175, 8, 2, 0, 17, 0, + 2, 0, 19, 0, 4, 0,103, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,176, 8, 2, 0,177, 8, 2, 0,178, 8, 2, 0,179, 8, + 2, 0,180, 8, 7, 0,181, 8, 56, 1, 13, 0, 2, 0, 19, 0, 2, 0,182, 8, 4, 0, 43, 0, 4, 0, 70, 0, 2, 0,183, 8, + 7, 0,248, 3, 7, 0,184, 8, 22, 1, 54, 8, 57, 1,185, 8, 2, 0, 17, 0, 2, 0,248, 1, 2, 0,224, 5, 2, 0,186, 8, + 58, 1, 11, 0, 4, 0,209, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 45, 0, 80, 0,187, 8, 0, 0, 20, 0, 7, 0,188, 8, + 7, 0,189, 8, 7, 0,133, 3, 2, 0,190, 8, 2, 0,191, 8, 59, 1, 5, 0, 2, 0, 17, 0, 2, 0, 43, 0, 4, 0, 37, 0, + 46, 0,129, 0, 32, 0, 93, 5, 60, 1, 5, 0, 4, 0, 37, 0, 4, 0, 17, 0, 0, 0, 20, 0, 0, 0,141, 8, 32, 0, 45, 0, + 61, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,155, 8, 2, 0,134, 3, 7, 0,192, 8, 7, 0,193, 8, 7, 0,178, 4, + 7, 0,146, 3, 7, 0,105, 3, 7, 0,108, 3, 7, 0,194, 8, 7, 0,195, 8, 32, 0,196, 8, 62, 1, 10, 0, 2, 0, 19, 0, + 2, 0, 17, 0, 4, 0,103, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,176, 8, 2, 0, 43, 0, 2, 0, 70, 0, 2, 0,226, 1, + 2, 0,248, 1, 63, 1, 8, 0, 32, 0, 45, 0, 7, 0,232, 2, 7, 0,197, 8, 7, 0,198, 8, 7, 0, 37, 0, 2, 0, 43, 0, + 2, 0,195, 2, 7, 0, 70, 0, 64, 1, 12, 0, 2, 0, 17, 0, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0,235, 2, 2, 0,209, 2, + 2, 0,199, 8, 4, 0, 37, 0, 7, 0,200, 8, 7, 0,201, 8, 7, 0,202, 8, 7, 0,203, 8, 0, 0,204, 8, 65, 1, 9, 0, + 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,103, 8, 4, 0, 89, 0, 0, 0, 20, 0, 2, 0,178, 4, 2, 0, 64, 0, 2, 0,205, 8, + 2, 0,206, 8, 66, 1, 7, 0, 4, 0,183, 2, 4, 0,207, 8, 4, 0,208, 8, 4, 0,209, 8, 7, 0,210, 8, 7, 0,211, 8, + 0, 0,147, 8, 67, 1, 7, 0, 0, 0,212, 8, 32, 0,213, 8, 0, 0,153, 8, 2, 0,214, 8, 2, 0, 43, 0, 4, 0, 70, 0, + 0, 0,154, 8, 68, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,103, 8, 4, 0, 89, 0, 0, 0,215, 8, 0, 0,216, 8, + 69, 1, 1, 0, 4, 0, 19, 0, 70, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,217, 8, 7, 0,218, 8, + 42, 0,123, 6, 71, 1, 4, 0, 0, 0, 59, 2, 2, 0, 19, 0, 4, 0, 17, 0, 32, 0, 45, 0, 72, 1, 2, 0, 4, 0, 17, 0, + 4, 0, 43, 6, 73, 1, 6, 0, 0, 0,150, 8, 0, 0,151, 8, 4, 0, 17, 0, 7, 0, 25, 2, 32, 0, 43, 3, 32, 0,219, 8, + 53, 1, 10, 0, 53, 1, 0, 0, 53, 1, 1, 0, 53, 1,169, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,155, 8, 2, 0,220, 8, + 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 45, 0, 74, 1, 10, 0, 7, 0,133, 3, 7, 0,221, 8, 7, 0,222, 8, 7, 0,223, 8, + 7, 0,224, 8, 4, 0, 19, 0, 7, 0,199, 8, 7, 0,225, 8, 7, 0,226, 8, 7, 0, 37, 0, 57, 1, 8, 0, 7, 0,227, 8, + 7, 0,228, 8, 7, 0,229, 8, 7, 0,230, 8, 7, 0,231, 8, 7, 0,232, 8, 7, 0,233, 8, 7, 0,234, 8, 22, 1, 16, 0, + 27, 0, 31, 0, 0, 0, 34, 0, 43, 0,147, 0, 9, 0,220, 0, 43, 0,235, 8, 36, 0, 80, 0, 7, 0,248, 3, 7, 0,236, 8, + 7, 0,184, 8, 7, 0,227, 8, 7, 0,228, 8, 7, 0,237, 8, 4, 0, 90, 0, 4, 0, 37, 0, 9, 0,238, 8, 9, 0,239, 8, + 75, 1, 15, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 8, 1,240, 8,217, 0, 62, 6, + 22, 1, 54, 8, 2, 0, 69, 1, 2, 0,182, 8, 2, 0, 78, 2, 2, 0, 79, 2, 2, 0, 19, 0, 2, 0,113, 6, 4, 0, 70, 0, + 76, 1, 6, 0, 76, 1, 0, 0, 76, 1, 1, 0, 32, 0, 45, 0, 9, 0,241, 8, 4, 0,244, 0, 4, 0, 37, 0, 67, 0, 4, 0, + 27, 0, 31, 0, 12, 0,242, 8, 4, 0,126, 0, 7, 0,243, 8, 77, 1, 27, 0, 77, 1, 0, 0, 77, 1, 1, 0, 26, 0,244, 8, + 77, 1, 38, 0, 12, 0,245, 8, 0, 0, 20, 0, 7, 0,246, 8, 7, 0,247, 8, 7, 0,248, 8, 7, 0,249, 8, 4, 0, 19, 0, + 7, 0,250, 8, 7, 0,251, 8, 7, 0,252, 8, 7, 0, 76, 1, 7, 0, 25, 2, 7, 0,253, 8, 7, 0,181, 2, 7, 0,254, 8, + 7, 0,255, 8, 7, 0, 0, 9, 7, 0, 1, 9, 7, 0, 2, 9, 7, 0,169, 0, 4, 0,126, 0, 2, 0,133, 5, 2, 0,178, 4, + 78, 1, 25, 0, 27, 0, 31, 0, 39, 0, 75, 0, 12, 0, 3, 9, 12, 0, 4, 9, 12, 0, 5, 9, 77, 1, 6, 9, 9, 0, 7, 9, + 9, 0, 8, 9, 4, 0, 19, 0, 4, 0, 19, 6, 2, 0,239, 2, 2, 0, 72, 6, 4, 0, 37, 0, 4, 0,126, 0, 4, 0, 9, 9, + 2, 0, 10, 9, 2, 0, 11, 9, 2, 0, 12, 9, 2, 0, 13, 9, 4, 0, 14, 9, 4, 0, 15, 9, 4, 0, 16, 9, 4, 0, 17, 9, + 4, 0, 18, 9, 4, 0, 19, 9, 79, 1, 2, 0, 7, 0,141, 2, 4, 0, 19, 0,165, 0, 5, 0, 79, 1, 20, 9, 4, 0,181, 2, + 4, 0, 21, 9, 4, 0, 22, 9, 4, 0, 19, 0,164, 0, 16, 0, 4, 0, 23, 9, 4, 0, 24, 9, 4, 0, 25, 9, 4, 0, 26, 9, + 2, 0, 27, 9, 2, 0, 28, 9, 2, 0, 29, 9, 2, 0,244, 0, 2, 0, 30, 9, 2, 0, 31, 9, 2, 0, 32, 9, 2, 0, 33, 9, + 4, 0, 34, 9, 4, 0, 35, 9, 4, 0, 36, 9, 4, 0, 37, 9, 80, 1, 44, 0, 80, 1, 0, 0, 80, 1, 1, 0, 26, 0,244, 8, + 12, 0,160, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0, 38, 9, 2, 0, 39, 9, 2, 0, 40, 9, 2, 0,119, 3, 2, 0, 41, 9, + 4, 0, 61, 2, 4, 0, 16, 9, 4, 0, 17, 9, 77, 1, 42, 9, 80, 1, 38, 0, 80, 1, 43, 9, 12, 0, 44, 9, 9, 0, 45, 9, + 9, 0, 46, 9, 9, 0, 47, 9, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 48, 9, 7, 0, 4, 2, 7, 0,110, 3, 7, 0,112, 3, + 2, 0,142, 3, 2, 0, 37, 0, 7, 0, 49, 9, 7, 0, 50, 9, 7, 0,115, 3, 7, 0, 51, 9, 7, 0, 52, 9, 7, 0, 53, 9, + 7, 0, 54, 9, 7, 0, 55, 9, 7, 0, 56, 9, 7, 0, 57, 9, 7, 0, 58, 9, 7, 0, 54, 2,165, 0, 98, 3, 32, 0, 59, 9, + 80, 1, 60, 9,162, 0, 14, 0, 12, 0, 61, 9, 81, 1, 62, 9, 2, 0, 19, 0, 2, 0, 63, 9, 7, 0, 90, 2, 7, 0, 64, 9, + 7, 0, 65, 9, 12, 0, 66, 9, 4, 0, 67, 9, 4, 0, 68, 9, 9, 0, 69, 9, 9, 0, 70, 9,164, 0, 97, 3, 0, 0, 71, 9, + 82, 1, 1, 0, 4, 0, 68, 9, 83, 1, 12, 0, 4, 0, 68, 9, 7, 0,167, 8, 2, 0, 72, 9, 2, 0, 73, 9, 7, 0, 74, 9, + 7, 0, 75, 9, 2, 0, 76, 9, 2, 0, 19, 0, 7, 0, 77, 9, 7, 0, 78, 9, 7, 0, 79, 9, 7, 0, 80, 9, 84, 1, 7, 0, + 84, 1, 0, 0, 84, 1, 1, 0, 12, 0, 81, 9, 4, 0, 19, 0, 4, 0, 82, 9, 0, 0,239, 3,254, 0, 83, 9,161, 0, 7, 0, + 27, 0, 31, 0, 12, 0, 84, 9, 12, 0, 61, 9, 12, 0, 85, 9, 12, 0,100, 0, 4, 0, 19, 0, 4, 0, 86, 9,221, 0, 5, 0, + 27, 0, 87, 9, 12, 0, 61, 9, 67, 0, 88, 9, 4, 0, 89, 9, 4, 0, 19, 0, 85, 1, 13, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6,217, 0, 62, 6,161, 0, 93, 3,221, 0, 90, 9, 0, 0, 69, 1, + 0, 0, 65, 6, 2, 0, 19, 0, 7, 0, 91, 9, 86, 1, 8, 0, 86, 1, 0, 0, 86, 1, 1, 0, 84, 1, 92, 9, 36, 0, 80, 0, + 12, 0, 99, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0, 93, 9, 87, 1, 5, 0, 87, 1, 0, 0, 87, 1, 1, 0, 36, 0, 80, 0, + 2, 0, 19, 0, 0, 0, 94, 9, 88, 1, 14, 0, 88, 1, 0, 0, 88, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, + 0, 0, 95, 9, 0, 0, 96, 9, 0, 0, 94, 9, 7, 0, 97, 9, 7, 0, 98, 9, 4, 0, 37, 0, 36, 0, 80, 0, 7, 0, 99, 9, + 7, 0,100, 9, 89, 1, 9, 0, 89, 1, 0, 0, 89, 1, 1, 0, 32, 0,101, 9, 0, 0,242, 2, 7, 0,102, 9, 2, 0,103, 9, + 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,104, 9, 90, 1, 7, 0, 42, 0,123, 6, 26, 0,244, 8, 4, 0, 19, 0, 4, 0,105, 9, + 12, 0,106, 9, 32, 0,101, 9, 0, 0,242, 2, 91, 1, 15, 0, 32, 0,101, 9, 2, 0,107, 9, 2, 0, 19, 0, 2, 0,108, 9, + 2, 0,109, 9, 0, 0,242, 2, 32, 0,110, 9, 0, 0,111, 9, 7, 0,112, 9, 7, 0, 25, 2, 7, 0,113, 9, 7, 0,114, 9, + 2, 0, 17, 0, 2, 0, 69, 1, 7, 0, 76, 1, 92, 1, 6, 0, 32, 0,101, 9, 7, 0, 20, 9, 2, 0,115, 9, 2, 0,116, 9, + 2, 0, 19, 0, 2, 0,117, 9, 93, 1, 6, 0, 32, 0,101, 9, 4, 0,118, 9, 4, 0,119, 9, 4, 0, 90, 0, 4, 0, 37, 0, + 0, 0,242, 2, 94, 1, 4, 0, 32, 0,101, 9, 4, 0, 19, 0, 4, 0,118, 9, 0, 0,242, 2, 95, 1, 4, 0, 32, 0,101, 9, + 4, 0, 19, 0, 4, 0,118, 9, 0, 0,242, 2, 96, 1, 4, 0, 32, 0,101, 9, 4, 0, 19, 0, 4, 0,118, 9, 0, 0,242, 2, + 97, 1, 2, 0, 4, 0, 19, 0, 7, 0,248, 3, 98, 1, 2, 0, 32, 0,101, 9, 0, 0,242, 2, 99, 1, 10, 0, 32, 0,101, 9, + 4, 0,120, 9, 7, 0,120, 0, 4, 0, 19, 0, 2, 0,116, 6, 2, 0,121, 9, 2, 0, 43, 0, 2, 0, 70, 0, 7, 0,122, 9, + 0, 0,242, 2,100, 1, 10, 0, 32, 0,101, 9, 2, 0, 17, 0, 2, 0, 42, 4, 4, 0, 88, 0, 4, 0, 89, 0, 7, 0,197, 8, + 7, 0,198, 8, 4, 0, 37, 0,161, 0,175, 8, 0, 0,242, 2,101, 1, 4, 0, 32, 0,101, 9, 4, 0,120, 3, 4, 0,123, 9, + 0, 0,242, 2,102, 1, 4, 0, 32, 0,101, 9, 4, 0,120, 3, 4, 0, 37, 0, 0, 0,242, 2,103, 1, 6, 0, 32, 0,101, 9, + 7, 0,120, 0, 7, 0, 55, 3, 4, 0,124, 9, 2, 0,120, 3, 2, 0,121, 3,104, 1, 6, 0, 32, 0,101, 9, 4, 0,125, 9, + 4, 0,126, 9, 7, 0,127, 9, 7, 0,128, 9, 0, 0,242, 2,105, 1, 16, 0, 32, 0,101, 9, 32, 0, 43, 9, 4, 0, 17, 0, + 7, 0,129, 9, 7, 0,130, 9, 7, 0,131, 9, 7, 0,132, 9, 7, 0,133, 9, 7, 0,134, 9, 7, 0,135, 9, 7, 0,136, 9, + 7, 0,137, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0, 70, 0,106, 1, 3, 0, 32, 0,101, 9, 4, 0, 19, 0, + 4, 0, 17, 2,107, 1, 5, 0, 32, 0,101, 9, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,138, 9, 0, 0,242, 2,108, 1, 10, 0, + 32, 0,101, 9, 0, 0,242, 2, 2, 0,139, 9, 2, 0,140, 9, 0, 0,141, 9, 0, 0,142, 9, 7, 0,143, 9, 7, 0,144, 9, + 7, 0,145, 9, 7, 0,146, 9,109, 1, 5, 0, 32, 0,101, 9, 0, 0,242, 2, 7, 0,189, 2, 2, 0,147, 9, 2, 0, 19, 0, +110, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,148, 9, 7, 0,149, 9, 2, 0, 19, 0, + 2, 0, 17, 2,111, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,148, 9, 7, 0,149, 9, + 2, 0, 19, 0, 2, 0, 17, 2,112, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,148, 9, + 7, 0,149, 9, 2, 0, 19, 0, 2, 0, 17, 2,113, 1, 7, 0, 32, 0,101, 9, 0, 0,242, 2, 7, 0, 76, 1, 7, 0, 85, 1, + 2, 0, 19, 0, 2, 0, 69, 1, 4, 0, 37, 0,114, 1, 5, 0, 32, 0, 43, 3, 7, 0, 76, 1, 2, 0, 47, 3, 0, 0, 49, 3, + 0, 0,150, 9,115, 1, 10, 0,115, 1, 0, 0,115, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0,151, 9, 7, 0, 19, 1, + 7, 0, 20, 1, 2, 0, 81, 9, 2, 0,152, 9, 32, 0, 45, 0,116, 1, 22, 0,116, 1, 0, 0,116, 1, 1, 0, 2, 0, 19, 0, + 2, 0, 69, 1, 2, 0,153, 9, 2, 0,154, 9, 36, 0, 80, 0,161, 0,175, 8, 32, 0,161, 0, 7, 0, 88, 0, 7, 0, 89, 0, + 7, 0,155, 9, 7, 0,156, 9, 7, 0,157, 9, 7, 0,158, 9, 7, 0,228, 2, 7, 0,159, 9, 7, 0,177, 8, 7, 0,160, 9, + 0, 0,161, 9, 0, 0,162, 9, 12, 0,101, 3,117, 1, 8, 0, 7, 0, 32, 2, 7, 0,197, 8, 7, 0,198, 8, 9, 0, 2, 0, + 2, 0,163, 9, 2, 0,164, 9, 2, 0,165, 9, 2, 0,166, 9,118, 1, 18, 0,118, 1, 0, 0,118, 1, 1, 0,118, 1,167, 9, + 0, 0, 20, 0,117, 1,168, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,169, 9, 2, 0,170, 9, 2, 0,171, 9, 2, 0,172, 9, + 4, 0, 43, 0, 7, 0,173, 9, 7, 0,174, 9, 4, 0,175, 9, 4, 0,176, 9,118, 1,177, 9,119, 1,178, 9,120, 1, 33, 0, +120, 1, 0, 0,120, 1, 1, 0,120, 1,179, 9, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 21, 8, 2, 0, 56, 8, + 2, 0,180, 9, 2, 0,128, 0, 2, 0,170, 9, 2, 0, 12, 8, 12, 0,170, 8, 12, 0,181, 9, 27, 0,156, 6, 9, 0,182, 9, + 7, 0,173, 9, 7, 0,174, 9, 7, 0, 63, 2, 7, 0,183, 9, 2, 0,184, 9, 2, 0,185, 9, 7, 0,186, 9, 7, 0,187, 9, + 2, 0,188, 9, 2, 0,189, 9, 9, 0,190, 9, 24, 0,191, 9, 24, 0,192, 9, 24, 0,193, 9,121, 1,148, 0,122, 1,194, 9, +123, 1,195, 9,119, 1, 8, 0,119, 1, 0, 0,119, 1, 1, 0,120, 1,196, 9,120, 1,197, 9,118, 1,198, 9,118, 1,177, 9, + 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 22, 0, 27, 0, 31, 0, 39, 0, 75, 0,163, 0, 96, 3, 12, 0,199, 9, 12, 0,200, 9, +117, 1,201, 9, 12, 0,202, 9, 4, 0, 17, 0, 4, 0,203, 9, 4, 0,204, 9, 4, 0,205, 9, 4, 0, 19, 0, 4, 0, 37, 0, + 12, 0,206, 9,123, 1,207, 9, 4, 0,208, 9, 9, 0,209, 9, 9, 0,210, 9, 4, 0,211, 9, 9, 0,212, 9, 9, 0,213, 9, + 9, 0,214, 9,124, 1, 6, 0, 4, 0,119, 0, 4, 0,121, 0, 4, 0, 12, 8, 0, 0,215, 9, 0, 0,216, 9, 2, 0, 37, 0, +125, 1, 16, 0, 2, 0,220, 7, 2, 0,221, 7, 2, 0,217, 9, 2, 0,222, 8, 2, 0,218, 9, 2, 0, 68, 0, 7, 0,227, 2, + 7, 0,219, 9, 7, 0,220, 9, 2, 0, 91, 1, 0, 0,221, 9, 0, 0,222, 9, 2, 0,223, 9, 2, 0, 37, 0, 4, 0,224, 9, + 4, 0,225, 9,126, 1, 9, 0, 7, 0,226, 9, 7, 0,227, 9, 7, 0,237, 8, 7, 0, 64, 3, 7, 0,228, 9, 7, 0, 78, 6, + 2, 0, 62, 3, 0, 0,229, 9, 0, 0, 37, 0,127, 1, 4, 0, 7, 0,230, 9, 7, 0,231, 9, 2, 0, 62, 3, 2, 0, 37, 0, +128, 1, 3, 0, 7, 0,232, 9, 7, 0,233, 9, 7, 0, 15, 0,129, 1, 7, 0, 0, 0,250, 1, 2, 0, 11, 5, 2, 0, 12, 5, + 2, 0, 13, 5, 2, 0,200, 4, 4, 0,121, 0, 4, 0, 40, 4,130, 1, 9, 0, 7, 0,234, 9, 7, 0,235, 9, 7, 0,236, 9, + 7, 0, 74, 2, 7, 0,237, 9, 7, 0,238, 9, 7, 0,239, 9, 2, 0,240, 9, 2, 0,241, 9,131, 1, 4, 0, 2, 0,242, 9, + 2, 0,243, 9, 2, 0,244, 9, 2, 0,245, 9,132, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,133, 1, 2, 0, 0, 0,163, 0, + 0, 0,246, 9,134, 1, 1, 0, 0, 0, 20, 0,135, 1, 10, 0, 0, 0,247, 9, 0, 0,248, 9, 0, 0, 71, 6, 0, 0,249, 9, + 2, 0,217, 9, 2, 0,250, 9, 7, 0,251, 9, 7, 0,252, 9, 7, 0,253, 9, 7, 0,159, 9,136, 1, 2, 0, 9, 0,254, 9, + 9, 0,255, 9,137, 1, 11, 0, 0, 0, 13, 5, 0, 0, 17, 0, 0, 0, 62, 3, 0, 0, 64, 3, 0, 0, 0, 10, 0, 0,106, 0, + 0, 0, 59, 2, 7, 0, 1, 10, 7, 0, 2, 10, 7, 0, 3, 10, 7, 0, 4, 10,138, 1, 8, 0, 7, 0,136, 8, 7, 0,120, 0, + 7, 0,222, 9, 7, 0,146, 2, 7, 0, 5, 10, 7, 0,233, 0, 7, 0, 6, 10, 4, 0, 17, 0,139, 1, 4, 0, 2, 0, 7, 10, + 2, 0, 8, 10, 2, 0, 9, 10, 2, 0, 37, 0,140, 1, 7, 0, 7, 0, 10, 10, 7, 0,189, 2, 7, 0, 11, 10, 7, 0, 17, 8, + 7, 0, 18, 8, 7, 0, 19, 8, 7, 0, 12, 10,141, 1, 6, 0, 2, 0, 13, 10, 2, 0, 14, 10, 7, 0, 15, 10, 7, 0, 16, 10, + 7, 0, 17, 10, 7, 0, 18, 10,142, 1, 1, 0, 0, 0, 20, 0,143, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 19, 0, + 2, 0, 19, 10,144, 1, 10, 0, 2, 0,228, 3, 2, 0, 19, 0, 7, 0,128, 4, 7, 0, 20, 10, 7, 0, 21, 10, 7, 0, 22, 10, + 7, 0, 23, 10,143, 1, 24, 10,143, 1, 25, 10,143, 1, 26, 10, 63, 0, 11, 0, 4, 0, 19, 0, 4, 0, 64, 0, 4, 0, 27, 10, + 4, 0, 37, 0, 24, 0, 28, 10, 24, 0, 29, 10,144, 1, 30, 10, 7, 0, 31, 10, 7, 0, 32, 10, 7, 0, 33, 10, 7, 0, 34, 10, +234, 0, 10, 0, 4, 0, 81, 9, 4, 0, 35, 10, 7, 0, 36, 10, 7, 0, 37, 10, 7, 0, 38, 10, 7, 0, 39, 10, 7, 0, 10, 0, + 7, 0, 12, 0, 4, 0, 69, 1, 4, 0,232, 2,233, 0, 18, 0, 4, 0,124, 0, 4, 0, 40, 10, 4, 0, 41, 10, 7, 0, 42, 10, + 4, 0, 43, 10, 7, 0, 44, 10, 7, 0, 45, 10, 4, 0, 46, 10, 7, 0, 47, 10, 4, 0, 48, 10, 7, 0, 49, 10,234, 0, 50, 10, + 7, 0, 51, 10, 7, 0, 52, 10, 7, 0, 53, 10, 7, 0, 54, 10, 4, 0, 55, 10, 4, 0, 37, 0,145, 1, 4, 0, 47, 0,219, 2, + 7, 0, 56, 10, 7, 0,158, 1, 7, 0, 37, 0,194, 0, 18, 0, 27, 0, 31, 0,145, 1, 57, 10, 63, 0, 24, 10, 51, 0, 58, 10, + 2, 0, 19, 0, 2, 0,230, 5, 4, 0,106, 0, 7, 0, 59, 10, 7, 0, 71, 2, 4, 0, 60, 10, 7, 0, 61, 10, 7, 0, 62, 10, + 7, 0, 63, 10, 7, 0,158, 1, 0, 0, 64, 10, 0, 0, 65, 10, 0, 0, 66, 10, 0, 0, 70, 0,146, 1, 10, 0, 4, 0, 17, 0, + 4, 0,120, 0, 4, 0, 19, 0, 4, 0,182, 3, 4, 0, 67, 10, 4, 0, 68, 10, 4, 0, 69, 10, 0, 0, 92, 0, 0, 0, 20, 0, + 9, 0, 2, 0,147, 1, 1, 0, 0, 0, 5, 8, 91, 0, 7, 0,146, 1, 70, 10, 4, 0, 71, 10, 4, 0, 72, 10, 4, 0, 73, 10, + 4, 0, 37, 0, 9, 0, 74, 10,147, 1, 75, 10,148, 1, 5, 0, 7, 0,141, 2, 7, 0,209, 2, 7, 0, 25, 2, 2, 0,117, 2, + 2, 0, 37, 0,149, 1, 5, 0, 7, 0,141, 2, 7, 0, 76, 10, 7, 0, 77, 10, 7, 0, 78, 10, 7, 0,209, 2,150, 1, 5, 0, + 32, 0, 79, 10,151, 1, 22, 0, 7, 0,200, 5, 7, 0, 80, 10, 7, 0, 57, 0,152, 1, 7, 0, 4, 0, 81, 10, 4, 0, 82, 10, + 4, 0, 83, 10, 7, 0, 84, 10, 7, 0, 85, 10, 7, 0, 86, 10, 7, 0, 57, 0,153, 1, 8, 0,153, 1, 0, 0,153, 1, 1, 0, + 32, 0, 45, 0, 4, 0,252, 0, 2, 0, 19, 0, 2, 0, 69, 1, 7, 0,209, 2, 7, 0,144, 8,154, 1, 6, 0,154, 1, 0, 0, +154, 1, 1, 0, 32, 0, 45, 0, 2, 0,194, 2, 2, 0, 19, 0, 2, 0, 87, 10,155, 1, 17, 0,149, 1,176, 3,149, 1, 88, 10, +148, 1, 89, 10,149, 1,128, 8,150, 1, 90, 10, 4, 0, 82, 0, 7, 0,209, 2, 7, 0,238, 2, 7, 0, 91, 10, 4, 0, 81, 10, + 4, 0, 92, 10, 7, 0, 85, 10, 7, 0, 86, 10, 7, 0,106, 0, 4, 0, 93, 10, 2, 0, 19, 0, 2, 0, 94, 10,156, 1, 9, 0, + 7, 0, 95, 10, 7, 0,248, 0, 7, 0, 96, 10, 7, 0, 97, 10, 7, 0, 98, 10, 7, 0, 99, 10, 7, 0,100, 10, 7, 0,101, 10, + 7, 0,102, 10,157, 1,111, 0, 27, 0, 31, 0, 39, 0, 75, 0,158, 1,103, 10,156, 1,104, 10,172, 0, 62, 4, 4, 0, 19, 0, + 2, 0, 17, 0, 2, 0,139, 9, 2, 0,105, 10, 2, 0,106, 10, 2, 0,142, 3, 2, 0,107, 10, 2, 0,108, 10, 2, 0,109, 10, + 2, 0,110, 10, 2, 0,111, 10, 2, 0,112, 10, 2, 0,113, 10, 2, 0,114, 10, 2, 0,112, 5, 2, 0,115, 10, 2, 0,116, 10, + 2, 0,117, 10, 2, 0,118, 10, 2, 0,119, 10, 2, 0, 14, 2, 2, 0,121, 8, 2, 0, 96, 8, 2, 0,120, 10, 2, 0,121, 10, + 2, 0,192, 3, 2, 0,193, 3, 2, 0,122, 10, 2, 0,123, 10, 2, 0,124, 10, 2, 0,125, 10, 7, 0,126, 10, 7, 0,127, 10, + 7, 0,128, 10, 2, 0, 61, 5, 2, 0,129, 10, 7, 0,130, 10, 7, 0,131, 10, 7, 0,132, 10, 7, 0,103, 8, 7, 0, 89, 0, + 7, 0,238, 2, 7, 0,109, 8, 7, 0,133, 10, 7, 0,134, 10, 7, 0,135, 10, 4, 0,104, 8, 4, 0,102, 8, 4, 0,136, 10, + 7, 0,105, 8, 7, 0,106, 8, 7, 0,107, 8, 7, 0,137, 10, 7, 0,138, 10, 7, 0,139, 10, 7, 0,140, 10, 7, 0,141, 10, + 7, 0, 57, 0, 7, 0,142, 10, 7, 0,143, 10, 7, 0,144, 10, 7, 0,145, 10, 7, 0,133, 3, 7, 0,106, 0, 7, 0,146, 10, + 7, 0,147, 10, 7, 0,148, 10, 7, 0,149, 10, 7, 0,150, 10, 7, 0,151, 10, 7, 0,152, 10, 4, 0,153, 10, 4, 0,154, 10, + 7, 0,155, 10, 7, 0,156, 10, 7, 0,157, 10, 7, 0,158, 10, 7, 0,159, 10, 7, 0,207, 0, 7, 0,160, 10, 7, 0,219, 3, + 7, 0,217, 3, 7, 0,218, 3, 7, 0,161, 10, 7, 0,162, 10, 7, 0,163, 10, 7, 0,164, 10, 7, 0,165, 10, 7, 0,166, 10, + 7, 0,167, 10, 7, 0,168, 10, 7, 0,169, 10, 7, 0,170, 10, 7, 0,171, 10, 7, 0,172, 10, 7, 0,173, 10, 4, 0,174, 10, + 4, 0,175, 10, 67, 0,165, 3, 12, 0,176, 10, 67, 0,177, 10, 32, 0,178, 10, 32, 0,179, 10, 36, 0, 80, 0,167, 0, 61, 1, +167, 0,180, 10,147, 0, 44, 0,147, 0, 0, 0,147, 0, 1, 0,157, 1,181, 10,155, 1,182, 10,152, 1, 43, 9,174, 0,244, 3, + 9, 0,245, 3,159, 1,183, 10,159, 1,184, 10, 12, 0,185, 10, 12, 0,186, 10,132, 0,187, 10,140, 0,188, 10,140, 0,189, 10, + 32, 0,190, 10, 32, 0,191, 10, 32, 0, 38, 0, 12, 0,106, 9, 0, 0, 20, 0, 7, 0,237, 0, 7, 0, 9, 3, 7, 0,192, 10, + 4, 0,183, 2, 4, 0, 57, 0, 4, 0, 19, 0, 4, 0,104, 8, 4, 0,193, 10, 4, 0,194, 10, 4, 0,195, 10, 2, 0,244, 0, + 2, 0,196, 10, 2, 0,197, 10, 2, 0,198, 10, 0, 0,199, 10, 2, 0,200, 10, 2, 0,201, 10, 2, 0,202, 10, 9, 0,203, 10, +136, 0, 61, 4, 12, 0,252, 2, 12, 0,204, 10,160, 1,205, 10,161, 1,206, 10, 7, 0,207, 10,134, 0, 37, 0,162, 1,238, 8, + 7, 0, 31, 4, 7, 0,208, 10, 7, 0,209, 10, 7, 0,200, 5, 7, 0,143, 3, 7, 0,133, 3, 7, 0,210, 10, 7, 0, 73, 2, + 7, 0,211, 10, 7, 0,212, 10, 7, 0,213, 10, 7, 0,214, 10, 7, 0,215, 10, 7, 0,216, 10, 7, 0, 32, 4, 7, 0,217, 10, + 7, 0,218, 10, 7, 0,219, 10, 7, 0, 33, 4, 7, 0, 29, 4, 7, 0, 30, 4, 7, 0,220, 10, 7, 0,221, 10, 4, 0,222, 10, + 4, 0, 90, 0, 4, 0,223, 10, 4, 0,224, 10, 2, 0,225, 10, 2, 0,226, 10, 2, 0,227, 10, 2, 0,228, 10, 2, 0,229, 10, + 2, 0,230, 10, 2, 0,231, 10, 2, 0,178, 4,172, 0, 62, 4,135, 0, 9, 0,162, 1,232, 10, 7, 0,233, 10, 7, 0,234, 10, + 7, 0,230, 1, 7, 0,235, 10, 4, 0, 90, 0, 2, 0,236, 10, 2, 0,237, 10, 67, 0,229, 1,163, 1, 4, 0, 7, 0, 5, 0, + 7, 0, 6, 0, 7, 0, 7, 0, 7, 0,238, 10,164, 1, 6, 0,164, 1, 0, 0,164, 1, 1, 0,163, 1, 20, 9, 4, 0,250, 0, + 2, 0,239, 10, 2, 0, 19, 0,165, 1, 5, 0,165, 1, 0, 0,165, 1, 1, 0, 12, 0,240, 10, 4, 0,241, 10, 4, 0, 19, 0, +166, 1, 9, 0,166, 1, 0, 0,166, 1, 1, 0, 12, 0,119, 0,165, 1,242, 10, 4, 0, 19, 0, 2, 0,239, 10, 2, 0,243, 10, + 7, 0, 91, 0, 0, 0,244, 10,163, 0, 6, 0, 27, 0, 31, 0, 12, 0, 29, 5, 4, 0, 19, 0, 2, 0,245, 10, 2, 0,246, 10, + 9, 0,247, 10,167, 1, 7, 0,167, 1, 0, 0,167, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, 0, 0,248, 10, + 0, 0,249, 10,168, 1, 6, 0, 12, 0,250, 10, 4, 0,251, 10, 4, 0,252, 10, 4, 0, 19, 0, 4, 0, 37, 0,214, 0,253, 10, +169, 1, 3, 0, 7, 0, 86, 5, 7, 0,254, 10, 7, 0,255, 10,170, 1, 17, 0, 27, 0, 31, 0,171, 1, 0, 11,171, 1, 1, 11, + 12, 0, 2, 11, 4, 0, 3, 11, 2, 0, 4, 11, 2, 0, 5, 11, 12, 0, 6, 11, 12, 0, 7, 11,168, 1, 8, 11, 12, 0, 9, 11, + 12, 0, 10, 11, 12, 0, 11, 11, 12, 0, 12, 11,172, 1, 13, 11, 12, 0, 14, 11,214, 0, 15, 11,171, 1, 31, 0,171, 1, 0, 0, +171, 1, 1, 0, 9, 0, 16, 11, 4, 0,198, 7, 2, 0, 17, 11, 2, 0, 37, 0,219, 0, 61, 6,219, 0, 18, 11, 0, 0, 19, 11, + 2, 0, 20, 11, 2, 0, 21, 11, 2, 0,220, 7, 2, 0,221, 7, 2, 0, 22, 11, 2, 0, 23, 11, 2, 0,182, 3, 2, 0,184, 6, + 2, 0, 24, 11, 2, 0, 25, 11, 2, 0,208, 9,173, 1, 26, 11,174, 1, 27, 11,175, 1, 28, 11, 4, 0, 29, 11, 4, 0, 30, 11, + 9, 0, 31, 11, 12, 0, 7, 11, 12, 0,240, 7, 12, 0, 32, 11, 12, 0, 33, 11, 12, 0, 34, 11,176, 1, 17, 0,176, 1, 0, 0, +176, 1, 1, 0, 0, 0, 35, 11, 26, 0, 30, 0, 2, 0, 36, 11, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0, 37, 11, 2, 0, 38, 11, + 2, 0, 39, 11, 2, 0, 40, 11, 2, 0, 41, 11, 2, 0, 19, 0, 2, 0, 42, 11, 2, 0, 31, 0, 2, 0, 37, 0,177, 1, 43, 11, +178, 1, 10, 0,178, 1, 0, 0,178, 1, 1, 0, 12, 0, 44, 11, 0, 0, 35, 11, 2, 0, 45, 11, 2, 0, 46, 11, 2, 0, 19, 0, + 2, 0, 47, 11, 4, 0, 48, 11, 9, 0, 49, 11,172, 1, 7, 0,172, 1, 0, 0,172, 1, 1, 0, 0, 0, 35, 11, 0, 0, 50, 11, + 12, 0,150, 7, 4, 0, 51, 11, 4, 0, 19, 0,227, 0, 14, 0,227, 0, 0, 0,227, 0, 1, 0, 0, 0, 35, 11, 26, 0, 30, 0, +179, 1,214, 7, 9, 0, 52, 11, 9, 0, 53, 11,177, 1, 43, 11,168, 1, 54, 11, 12, 0, 55, 11,227, 0, 56, 11, 7, 1, 97, 6, + 2, 0, 19, 0, 2, 0,178, 4,180, 1, 8, 0,180, 1, 0, 0,180, 1, 1, 0, 9, 0, 2, 0, 9, 0, 57, 11, 0, 0,239, 3, + 2, 0, 17, 0, 2, 0, 19, 0, 7, 0, 58, 11,181, 1, 5, 0, 7, 0, 59, 11, 4, 0, 60, 11, 4, 0, 61, 11, 4, 0, 69, 1, + 4, 0, 19, 0,182, 1, 6, 0, 7, 0, 62, 11, 7, 0, 63, 11, 7, 0, 64, 11, 7, 0, 65, 11, 4, 0, 17, 0, 4, 0, 19, 0, +183, 1, 5, 0, 7, 0,197, 8, 7, 0,198, 8, 7, 0,209, 2, 2, 0, 28, 2, 2, 0, 29, 2,184, 1, 5, 0,183, 1, 2, 0, + 4, 0, 54, 0, 7, 0, 66, 11, 7, 0,197, 8, 7, 0,198, 8,185, 1, 4, 0, 2, 0, 67, 11, 2, 0, 68, 11, 2, 0, 69, 11, + 2, 0, 70, 11,186, 1, 2, 0, 42, 0,150, 6, 26, 0,244, 8,187, 1, 3, 0, 24, 0, 71, 11, 4, 0, 19, 0, 4, 0, 37, 0, +188, 1, 6, 0, 7, 0,106, 0, 7, 0,211, 2, 7, 0, 72, 11, 7, 0, 37, 0, 2, 0,243, 0, 2, 0, 73, 11,189, 1, 5, 0, + 7, 0, 74, 11, 7, 0,120, 0, 7, 0, 21, 9, 7, 0, 22, 9, 4, 0, 19, 0,190, 1, 6, 0, 27, 0,156, 6, 0, 0, 75, 11, + 0, 0, 76, 11, 2, 0, 77, 11, 2, 0, 19, 0, 4, 0, 78, 11,191, 1, 7, 0,191, 1, 0, 0,191, 1, 1, 0, 0, 0,239, 3, +190, 1, 79, 11, 2, 0, 80, 11, 2, 0, 17, 0, 7, 0, 61, 0,192, 1, 7, 0, 12, 0, 81, 11, 0, 0, 82, 11, 9, 0, 83, 11, + 7, 0, 61, 0, 7, 0, 58, 11, 4, 0, 17, 0, 4, 0, 19, 0,193, 1, 3, 0, 7, 0, 84, 11, 4, 0, 19, 0, 4, 0, 37, 0, +194, 1, 15, 0,194, 1, 0, 0,194, 1, 1, 0, 84, 1, 92, 9,192, 1, 62, 0, 12, 0,101, 3, 35, 0, 50, 0,193, 1, 85, 11, + 4, 0, 54, 0, 7, 0, 61, 0, 2, 0, 19, 0, 2, 0, 12, 1, 4, 0, 86, 11, 0, 0, 75, 11, 4, 0, 87, 11, 7, 0, 88, 11, +195, 1, 2, 0, 0, 0, 89, 11, 0, 0, 90, 11,196, 1, 4, 0,196, 1, 0, 0,196, 1, 1, 0,161, 0, 43, 3, 12, 0, 91, 11, +197, 1, 24, 0,197, 1, 0, 0,197, 1, 1, 0, 12, 0, 92, 11,161, 0,175, 8,196, 1, 93, 11, 12, 0, 94, 11, 12, 0,101, 3, + 0, 0,239, 3, 7, 0, 58, 11, 7, 0, 95, 11, 7, 0, 88, 0, 7, 0, 89, 0, 7, 0,155, 9, 7, 0,156, 9, 7, 0,228, 2, + 7, 0,159, 9, 7, 0,177, 8, 7, 0,160, 9, 2, 0, 96, 11, 2, 0, 97, 11, 2, 0, 43, 0, 2, 0, 17, 0, 4, 0, 19, 0, + 4, 0, 70, 0,198, 1, 6, 0,198, 1, 0, 0,198, 1, 1, 0, 12, 0, 92, 11, 4, 0, 19, 0, 4, 0,145, 2, 0, 0,239, 3, +199, 1, 11, 0,199, 1, 0, 0,199, 1, 1, 0, 27, 0,156, 6, 0, 0, 98, 11, 4, 0, 78, 11, 2, 0, 99, 11, 2, 0, 37, 0, + 0, 0, 75, 11, 4, 0, 86, 11, 2, 0, 19, 0, 2, 0,100, 11,200, 1, 8, 0,200, 1, 0, 0,200, 1, 1, 0, 12, 0,101, 11, + 0, 0,239, 3, 0, 0,102, 11, 2, 0, 19, 0, 2, 0,100, 11, 4, 0,103, 11,201, 1, 5, 0,201, 1, 0, 0,201, 1, 1, 0, + 0, 0, 75, 11, 4, 0, 86, 11, 7, 0,199, 2, 39, 0, 12, 0,161, 0, 93, 3,161, 0,104, 11,196, 1, 93, 11, 12, 0,105, 11, +197, 1,106, 11, 12, 0,107, 11, 12, 0,108, 11, 4, 0, 19, 0, 4, 0,244, 0, 2, 0,109, 11, 2, 0,110, 11, 7, 0,111, 11, +202, 1, 2, 0, 27, 0, 31, 0, 39, 0, 75, 0,203, 1, 5, 0,203, 1, 0, 0,203, 1, 1, 0, 4, 0, 17, 0, 4, 0, 19, 0, + 0, 0, 20, 0,204, 1, 6, 0,203, 1,112, 11, 32, 0, 45, 0, 4, 0,113, 11, 7, 0,114, 11, 4, 0,115, 11, 4, 0, 81, 9, +205, 1, 3, 0,203, 1,112, 11, 4, 0,113, 11, 7, 0,116, 11,206, 1, 8, 0,203, 1,112, 11, 32, 0, 45, 0, 7, 0, 64, 1, + 7, 0,117, 11, 7, 0, 9, 3, 7, 0,237, 8, 4, 0,113, 11, 4, 0,118, 11,207, 1, 5, 0,203, 1,112, 11, 7, 0,119, 11, + 7, 0, 56, 8, 7, 0,234, 2, 7, 0, 57, 0,208, 1, 3, 0,203, 1,112, 11, 7, 0,237, 8, 7, 0,120, 11,151, 1, 4, 0, + 7, 0,121, 11, 7, 0,148, 10, 2, 0,122, 11, 2, 0, 69, 1,209, 1, 14, 0,209, 1, 0, 0,209, 1, 1, 0, 12, 0,123, 11, + 12, 0,124, 11, 12, 0,125, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0,126, 11, 7, 0,127, 11, 4, 0,115, 11, + 4, 0, 81, 9, 7, 0,248, 3, 7, 0,236, 2,158, 1, 23, 0, 4, 0,113, 11, 4, 0,128, 11, 7, 0,129, 11, 7, 0, 57, 0, + 7, 0,130, 11, 7, 0,232, 2, 7, 0,121, 11, 7, 0,131, 11, 7, 0,211, 2, 7, 0, 42, 10, 7, 0,128, 4, 7, 0,132, 11, + 7, 0,133, 11, 7, 0,134, 11, 7, 0,135, 11, 7, 0,136, 11, 7, 0,137, 11, 7, 0,138, 11, 7, 0,139, 11, 7, 0,140, 11, + 7, 0,141, 11, 7, 0,142, 11, 12, 0,143, 11,120, 0, 36, 0,119, 0,144, 11,210, 1,104, 10, 67, 0,145, 11, 67, 0,177, 10, + 67, 0,146, 11,211, 1,147, 11, 48, 0,162, 0, 48, 0,148, 11, 48, 0,149, 11, 7, 0,150, 11, 7, 0,151, 11, 7, 0,152, 11, + 7, 0,153, 11, 7, 0,154, 11, 7, 0, 93, 9, 7, 0,155, 11, 7, 0,158, 1, 7, 0,156, 11, 4, 0,157, 11, 4, 0,158, 11, + 4, 0,159, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0,160, 11, 2, 0,161, 11, 2, 0,162, 11, 4, 0,163, 11, 7, 0,211, 2, + 4, 0,164, 11, 7, 0,165, 11, 4, 0,166, 11, 4, 0,167, 11, 4, 0,168, 11,136, 0,169, 11, 12, 0,170, 11,172, 0, 62, 4, +121, 0, 11, 0,119, 0,144, 11,147, 0, 29, 3, 7, 0,125, 1, 7, 0, 93, 9, 7, 0,171, 11, 7, 0,172, 11, 2, 0,173, 11, + 2, 0,174, 11, 2, 0,175, 11, 2, 0, 17, 0, 4, 0, 37, 0,122, 0, 13, 0,119, 0,144, 11,138, 0, 6, 3,140, 0, 8, 3, + 7, 0, 20, 9, 7, 0,176, 11, 7, 0,177, 11, 7, 0, 66, 1, 7, 0,178, 11, 4, 0,115, 9, 4, 0, 4, 3, 2, 0, 17, 0, + 2, 0, 37, 0, 4, 0, 70, 0, 69, 78, 68, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0}; + diff --git a/source/blender/editors/include/ED_datafiles.h b/source/blender/editors/include/ED_datafiles.h index 136d46cdc91..9a5a1a5bea6 100644 --- a/source/blender/editors/include/ED_datafiles.h +++ b/source/blender/editors/include/ED_datafiles.h @@ -31,8 +31,8 @@ /* Datafiles embedded in Blender */ -extern int datatoc_B_blend_size; -extern char datatoc_B_blend[]; +extern int datatoc_startup_blend_size; +extern char datatoc_startup_blend[]; extern int datatoc_blenderbuttons_size; extern char datatoc_blenderbuttons[]; diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index 2d973d9a32d..1d3798713f5 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -983,11 +983,6 @@ static void rna_def_modifier_armature(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Quaternion", "Deform rotation interpolation with quaternions"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); - prop= RNA_def_property(srna, "b_bone_rest", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "deformflag", ARM_DEF_B_BONE_REST); - RNA_def_property_ui_text(prop, "B-Bone Rest", "Make B-Bones deform already in rest position"); - RNA_def_property_update(prop, 0, "rna_Modifier_update"); - prop= RNA_def_property(srna, "multi_modifier", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "multi", 0); RNA_def_property_ui_text(prop, "Multi Modifier", "Use same input as previous modifier, and mix results using overall vgroup"); diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index d926bbfed80..19a20a13345 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -362,7 +362,7 @@ int WM_read_homefile(bContext *C, wmOperator *op) if (!from_memory && BLI_exists(tstr)) { success = BKE_read_file(C, tstr, NULL, NULL); } else { - success = BKE_read_file_from_memory(C, datatoc_B_blend, datatoc_B_blend_size, NULL, NULL); + success = BKE_read_file_from_memory(C, datatoc_startup_blend, datatoc_startup_blend_size, NULL, NULL); if (wmbase.first == NULL) wm_clear_default_size(C); } From a806a892553738db53e8e74895c678cc0d1cabeb Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 13 Jul 2010 10:45:40 +0000 Subject: [PATCH 435/674] Fix #22804: own mistake, remove doubles shouldn't get cancelled if no vertices are merged, but finish so the threshold can be tweaked. --- source/blender/editors/mesh/editmesh_tools.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index 681e14dd693..ca9b0ff67f7 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -485,17 +485,16 @@ static int removedoublesflag_exec(bContext *C, wmOperator *op) int count = removedoublesflag(em,1,0,RNA_float_get(op->ptr, "limit")); - if(!count) - return OPERATOR_CANCELLED; + if(count) { + recalc_editnormals(em); - recalc_editnormals(em); + DAG_id_flush_update(obedit->data, OB_RECALC_DATA); + WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); + } BKE_reportf(op->reports, RPT_INFO, "Removed %d vertices", count); - - DAG_id_flush_update(obedit->data, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); - BKE_mesh_end_editmesh(obedit->data, em); + return OPERATOR_FINISHED; } From f533a70a4b80e0e347dc8284382c0d13359f4bb8 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Tue, 13 Jul 2010 11:06:19 +0000 Subject: [PATCH 436/674] Logic UI: HEADERS changes: adding option to change state + showing the name, type as label when not-expanded + renaming rna prop "states" (from state_number) + small UI changes + capitalizing Controller Type names (as we had in 2.49). Why? I'm not sure. Therefore let's stick to 2.49 way of doing it for a bit longer. * It would be really nice to have a drag&drop system for logic (instead of the move up/down button) * The controller header is so messy :/ definitively should find a better way to handle that (for one the "change state" operator doesn't need this up/down arrow. I'm (temporarly) using the old code for that, so this will wait for when we use proper rna ui here. * I wonder if it's possible to get the name of the logic type straight from the rna prop (instead of using sensor_name(sens->type) ) --- .../editors/space_logic/logic_window.c | 65 +++++++++++++------ .../blender/makesrna/intern/rna_controller.c | 26 ++++---- 2 files changed, 57 insertions(+), 34 deletions(-) diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index 1d8100be1b0..3a264cbb259 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -678,7 +678,7 @@ static char *actuator_name(int type) case ACT_OBJECT: return "Motion"; case ACT_IPO: - return "Ipo"; + return "F-Curve"; case ACT_LAMP: return "Lamp"; case ACT_CAMERA: @@ -706,7 +706,7 @@ static char *actuator_name(int type) case ACT_VISIBILITY: return "Visibility"; case ACT_2DFILTER: - return "2D Filter"; + return "Filter 2D"; case ACT_PARENT: return "Parent"; case ACT_STATE: @@ -3185,13 +3185,19 @@ static int is_sensor_linked(uiBlock *block, bSensor *sens) static void draw_sensor_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *logic_ptr) { uiLayout *box, *row, *subrow; + bSensor *sens= (bSensor *)ptr->data; box= uiLayoutBox(layout); row= uiLayoutRow(box, 0); uiItemR(row, ptr, "expanded", UI_ITEM_R_NO_BG, "", 0); - uiItemR(row, ptr, "type", 0, "", 0); - uiItemR(row, ptr, "name", 0, "", 0); + if(RNA_boolean_get(ptr, "expanded")) { + uiItemR(row, ptr, "type", 0, "", 0); + uiItemR(row, ptr, "name", 0, "", 0); + } else { + uiItemL(row, sensor_name(sens->type), 0); + uiItemL(row, sens->name, 0); + } subrow= uiLayoutRow(row, 0); uiLayoutSetActive(subrow, ((RNA_boolean_get(logic_ptr, "sensors_show_active_states") @@ -3199,8 +3205,9 @@ static void draw_sensor_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *lo uiItemR(subrow, ptr, "pinned", UI_ITEM_R_NO_BG, "", 0); if(RNA_boolean_get(ptr, "expanded")==0) { - uiItemEnumO(row, "LOGIC_OT_sensor_move", "", ICON_TRIA_UP, "direction", 1); // up - uiItemEnumO(row, "LOGIC_OT_sensor_move", "", ICON_TRIA_DOWN, "direction", 2); // down + subrow= uiLayoutRow(row, 1); + uiItemEnumO(subrow, "LOGIC_OT_sensor_move", "", ICON_TRIA_UP, "direction", 1); // up + uiItemEnumO(subrow, "LOGIC_OT_sensor_move", "", ICON_TRIA_DOWN, "direction", 2); // down } uiItemO(row, "", ICON_X, "LOGIC_OT_sensor_remove"); @@ -3525,27 +3532,35 @@ void draw_brick_sensor(uiLayout *layout, PointerRNA *ptr, bContext *C) } /* Controller code */ -static void draw_controller_header(uiLayout *layout, PointerRNA *ptr) +static void draw_controller_header(uiLayout *layout, PointerRNA *ptr, int xco, int width, int yco) { - uiLayout *box, *row; + uiLayout *box, *row, *subrow; + bController *cont= (bController *)ptr->data; + char name[3]; //XXX provisorly for state number box= uiLayoutBox(layout); row= uiLayoutRow(box, 0); uiItemR(row, ptr, "expanded", UI_ITEM_R_NO_BG, "", 0); - uiItemR(row, ptr, "type", 0, "", 0); - uiItemR(row, ptr, "name", 0, "", 0); + if(RNA_boolean_get(ptr, "expanded")) { + uiItemR(row, ptr, "type", 0, "", 0); + uiItemR(row, ptr, "name", 0, "", 0); + } else { + uiItemL(row, controller_name(cont->type), 0); + uiItemL(row, cont->name, 0); + } - /* XXX provisory: state number */ - sprintf(name, "%d", RNA_int_get(ptr, "state_number")); - uiItemL(row, name, 0); + /* XXX provisory for Blender 2.50Beta */ + sprintf(name, "%d", RNA_int_get(ptr, "state")); + uiDefBlockBut(uiLayoutGetBlock(layout), controller_state_mask_menu, cont, name, (short)(xco+width-44), yco, 22+22, UI_UNIT_Y, "Set controller state index (from 1 to 30)"); uiItemR(row, ptr, "priority", 0, "", 0); if(RNA_boolean_get(ptr, "expanded")==0) { - uiItemEnumO(row, "LOGIC_OT_controller_move", "", ICON_TRIA_UP, "direction", 1); // up - uiItemEnumO(row, "LOGIC_OT_controller_move", "", ICON_TRIA_DOWN, "direction", 2); // down + subrow= uiLayoutRow(row, 1); + uiItemEnumO(subrow, "LOGIC_OT_controller_move", "", ICON_TRIA_UP, "direction", 1); // up + uiItemEnumO(subrow, "LOGIC_OT_controller_move", "", ICON_TRIA_DOWN, "direction", 2); // down } uiItemO(row, "", ICON_X, "LOGIC_OT_controller_remove"); } @@ -3613,13 +3628,19 @@ void draw_brick_controller(uiLayout *layout, PointerRNA *ptr) static void draw_actuator_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *logic_ptr) { uiLayout *box, *row, *subrow; + bActuator *act= (bActuator *)ptr->data; box= uiLayoutBox(layout); row= uiLayoutRow(box, 0); uiItemR(row, ptr, "expanded", UI_ITEM_R_NO_BG, "", 0); - uiItemR(row, ptr, "type", 0, "", 0); - uiItemR(row, ptr, "name", 0, "", 0); + if(RNA_boolean_get(ptr, "expanded")) { + uiItemR(row, ptr, "type", 0, "", 0); + uiItemR(row, ptr, "name", 0, "", 0); + } else { + uiItemL(row, actuator_name(act->type), 0); + uiItemL(row, act->name, 0); + } subrow= uiLayoutRow(row, 0); uiLayoutSetActive(subrow, ((RNA_boolean_get(logic_ptr, "actuators_show_active_states") @@ -3627,8 +3648,9 @@ static void draw_actuator_header(uiLayout *layout, PointerRNA *ptr, PointerRNA * uiItemR(subrow, ptr, "pinned", UI_ITEM_R_NO_BG, "", 0); if(RNA_boolean_get(ptr, "expanded")==0) { - uiItemEnumO(row, "LOGIC_OT_actuator_move", "", ICON_TRIA_UP, "direction", 1); // up - uiItemEnumO(row, "LOGIC_OT_actuator_move", "", ICON_TRIA_DOWN, "direction", 2); // down + subrow= uiLayoutRow(row, 1); + uiItemEnumO(subrow, "LOGIC_OT_actuator_move", "", ICON_TRIA_UP, "direction", 1); // up + uiItemEnumO(subrow, "LOGIC_OT_actuator_move", "", ICON_TRIA_DOWN, "direction", 2); // down } uiItemO(row, "", ICON_X, "LOGIC_OT_actuator_remove"); } @@ -4532,8 +4554,9 @@ static void logic_buttons_new(bContext *C, ARegion *ar) uiLayoutSetContextPointer(col, "controller", &ptr); /* should make UI template for controller header.. function will do for now */ - draw_controller_header(col, &ptr); - +// draw_controller_header(col, &ptr); + draw_controller_header(col, &ptr, xco, width, yco); //provisory for 2.50 beta + /* draw the brick contents */ draw_brick_controller(col, &ptr); diff --git a/source/blender/makesrna/intern/rna_controller.c b/source/blender/makesrna/intern/rna_controller.c index a004f2d11b2..6307c39be52 100644 --- a/source/blender/makesrna/intern/rna_controller.c +++ b/source/blender/makesrna/intern/rna_controller.c @@ -32,12 +32,12 @@ #include "DNA_controller_types.h" EnumPropertyItem controller_type_items[] ={ - {CONT_LOGIC_AND, "LOGIC_AND", 0, "And", "Logic And"}, - {CONT_LOGIC_OR, "LOGIC_OR", 0, "Or", "Logic Or"}, - {CONT_LOGIC_NAND, "LOGIC_NAND", 0, "Nand", "Logic Nand"}, - {CONT_LOGIC_NOR, "LOGIC_NOR", 0, "Nor", "Logic Nor"}, - {CONT_LOGIC_XOR, "LOGIC_XOR", 0, "Xor", "Logic Xor"}, - {CONT_LOGIC_XNOR, "LOGIC_XNOR", 0, "Xnor", "Logic Xnor"}, + {CONT_LOGIC_AND, "LOGIC_AND", 0, "AND", "Logic And"}, + {CONT_LOGIC_OR, "LOGIC_OR", 0, "OR", "Logic Or"}, + {CONT_LOGIC_NAND, "LOGIC_NAND", 0, "NAND", "Logic Nand"}, + {CONT_LOGIC_NOR, "LOGIC_NOR", 0, "NOR", "Logic Nor"}, + {CONT_LOGIC_XOR, "LOGIC_XOR", 0, "XOR", "Logic Xor"}, + {CONT_LOGIC_XNOR, "LOGIC_XNOR", 0, "XNOR", "Logic Xnor"}, {CONT_EXPRESSION, "EXPRESSION", 0, "Expression", ""}, {CONT_PYTHON, "PYTHON", 0, "Python Script", ""}, {0, NULL, 0, NULL, NULL}}; @@ -185,15 +185,15 @@ void RNA_def_controller(BlenderRNA *brna) /* State */ // array of OB_MAX_STATES - prop= RNA_def_property(srna, "state", PROP_BOOLEAN, PROP_LAYER_MEMBER); - RNA_def_property_array(prop, OB_MAX_STATES); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_ui_text(prop, "", "Set Controller state index (1 to 30)"); - RNA_def_property_boolean_funcs(prop, "rna_Controller_state_get", "rna_Controller_state_set"); - RNA_def_property_update(prop, NC_LOGIC, NULL); + //prop= RNA_def_property(srna, "state", PROP_BOOLEAN, PROP_LAYER_MEMBER); + //RNA_def_property_array(prop, OB_MAX_STATES); + //RNA_def_property_clear_flag(prop, PROP_EDITABLE); + //RNA_def_property_ui_text(prop, "", "Set Controller state index (1 to 30)"); + //RNA_def_property_boolean_funcs(prop, "rna_Controller_state_get", "rna_Controller_state_set"); + //RNA_def_property_update(prop, NC_LOGIC, NULL); // number of the state - prop= RNA_def_property(srna, "state_number", PROP_INT, PROP_UNSIGNED); + prop= RNA_def_property(srna, "state", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_sdna(prop, NULL, "state_mask"); RNA_def_property_range(prop, 1, OB_MAX_STATES); RNA_def_property_ui_text(prop, "", "Set Controller state index (1 to 30)"); From ee03a99695a2eaff6dbc323dcabb44e759f64099 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 13 Jul 2010 13:31:43 +0000 Subject: [PATCH 437/674] Fix #20461: deleting VBO's from threads used for rendering or baking would crash, as OpenGL can't be called from these. Now deleting VBO's is delayed until the next redraw in the main thread. --- source/blender/gpu/gpu_buffers.h | 8 ++- source/blender/gpu/intern/gpu_buffers.c | 78 +++++++++++++++---------- source/blender/gpu/intern/gpu_draw.c | 4 ++ 3 files changed, 56 insertions(+), 34 deletions(-) diff --git a/source/blender/gpu/gpu_buffers.h b/source/blender/gpu/gpu_buffers.h index 98cefa7a696..983133a6d4b 100644 --- a/source/blender/gpu/gpu_buffers.h +++ b/source/blender/gpu/gpu_buffers.h @@ -69,8 +69,9 @@ typedef struct GPUBuffer typedef struct GPUBufferPool { - int size; /* number of allocated buffers stored */ - GPUBuffer* buffers[MAX_FREE_GPU_BUFFERS]; + int size; /* number of allocated buffers stored */ + int maxsize; /* size of the array */ + GPUBuffer **buffers; } GPUBufferPool; typedef struct GPUBufferMaterial @@ -119,7 +120,8 @@ typedef struct GPUAttrib } GPUAttrib; GPUBufferPool *GPU_buffer_pool_new(); -void GPU_buffer_pool_free( GPUBufferPool *pool ); /* TODO: Find a place where to call this function on exit */ +void GPU_buffer_pool_free( GPUBufferPool *pool ); +void GPU_buffer_pool_free_unused( GPUBufferPool *pool ); GPUBuffer *GPU_buffer_alloc( int size, GPUBufferPool *pool ); void GPU_buffer_free( GPUBuffer *buffer, GPUBufferPool *pool ); diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c index 1d615c8e67b..e0a47c0c5bc 100644 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@ -38,8 +38,9 @@ #include "MEM_guardedalloc.h" -#include "BLI_math.h" #include "BLI_ghash.h" +#include "BLI_math.h" +#include "BLI_threads.h" #include "DNA_meshdata_types.h" @@ -82,37 +83,12 @@ GPUBufferPool *GPU_buffer_pool_new() } pool = MEM_callocN(sizeof(GPUBufferPool), "GPU_buffer_pool_new"); + pool->maxsize = MAX_FREE_GPU_BUFFERS; + pool->buffers = MEM_callocN(sizeof(GPUBuffer*)*pool->maxsize, "GPU_buffer_pool_new buffers"); return pool; } -void GPU_buffer_pool_free(GPUBufferPool *pool) -{ - int i; - - DEBUG_VBO("GPU_buffer_pool_free\n"); - - if( pool == 0 ) - pool = globalPool; - if( pool == 0 ) - return; - - for( i = 0; i < pool->size; i++ ) { - if( pool->buffers[i] != 0 ) { - if( useVBOs ) { - glDeleteBuffersARB( 1, &pool->buffers[i]->id ); - } - else { - MEM_freeN( pool->buffers[i]->pointer ); - } - MEM_freeN(pool->buffers[i]); - } else { - ERROR_VBO("Why are we accessing a null buffer in GPU_buffer_pool_free?\n"); - } - } - MEM_freeN(pool); -} - void GPU_buffer_pool_remove( int index, GPUBufferPool *pool ) { int i; @@ -159,6 +135,35 @@ void GPU_buffer_pool_delete_last( GPUBufferPool *pool ) pool->size--; } +void GPU_buffer_pool_free(GPUBufferPool *pool) +{ + DEBUG_VBO("GPU_buffer_pool_free\n"); + + if( pool == 0 ) + pool = globalPool; + if( pool == 0 ) + return; + + while( pool->size ) + GPU_buffer_pool_delete_last(pool); + + MEM_freeN(pool->buffers); + MEM_freeN(pool); +} + +void GPU_buffer_pool_free_unused(GPUBufferPool *pool) +{ + DEBUG_VBO("GPU_buffer_pool_free_unused\n"); + + if( pool == 0 ) + pool = globalPool; + if( pool == 0 ) + return; + + while( pool->size > MAX_FREE_GPU_BUFFERS ) + GPU_buffer_pool_delete_last(pool); +} + GPUBuffer *GPU_buffer_alloc( int size, GPUBufferPool *pool ) { char buffer[60]; @@ -226,6 +231,7 @@ GPUBuffer *GPU_buffer_alloc( int size, GPUBufferPool *pool ) void GPU_buffer_free( GPUBuffer *buffer, GPUBufferPool *pool ) { int i; + DEBUG_VBO("GPU_buffer_free\n"); if( buffer == 0 ) @@ -235,9 +241,19 @@ void GPU_buffer_free( GPUBuffer *buffer, GPUBufferPool *pool ) if( pool == 0 ) globalPool = GPU_buffer_pool_new(); - /* free the last used buffer in the queue if no more space */ - if( pool->size == MAX_FREE_GPU_BUFFERS ) { - GPU_buffer_pool_delete_last( pool ); + /* free the last used buffer in the queue if no more space, but only + if we are in the main thread. for e.g. rendering or baking it can + happen that we are in other thread and can't call OpenGL, in that + case cleanup will be done GPU_buffer_pool_free_unused */ + if( BLI_thread_is_main() ) { + while( pool->size >= MAX_FREE_GPU_BUFFERS ) + GPU_buffer_pool_delete_last( pool ); + } + else { + if( pool->maxsize == pool->size ) { + pool->maxsize += MAX_FREE_GPU_BUFFERS; + pool->buffers = MEM_reallocN(pool->buffers, sizeof(GPUBuffer*)*pool->maxsize); + } } for( i =pool->size; i > 0; i-- ) { diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c index 9a5a6704428..506ce94b763 100644 --- a/source/blender/gpu/intern/gpu_draw.c +++ b/source/blender/gpu/intern/gpu_draw.c @@ -804,11 +804,15 @@ void GPU_free_unused_buffers(void) BLI_lock_thread(LOCK_OPENGL); + /* images */ for(ima=image_free_queue.first; ima; ima=ima->id.next) GPU_free_image(ima); BLI_freelistN(&image_free_queue); + /* vbo buffers */ + GPU_buffer_pool_free_unused(0); + BLI_unlock_thread(LOCK_OPENGL); } From 44f1decdc01ffdf8002261c78397b68a9f40b12c Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 13 Jul 2010 13:59:34 +0000 Subject: [PATCH 438/674] Fix #22829: build error in openjpeg with SSE using MSVC, already fixed in openjpeg svn but not in any release, so adding just that fix for now. --- extern/libopenjpeg/dwt.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/extern/libopenjpeg/dwt.c b/extern/libopenjpeg/dwt.c index 78d18d175f4..357b475b9ac 100644 --- a/extern/libopenjpeg/dwt.c +++ b/extern/libopenjpeg/dwt.c @@ -610,7 +610,7 @@ static void v4dwt_decode_step1_sse(v4* w, int count, const __m128 c){ int i; for(i = 0; i < count; ++i){ __m128 tmp = vw[i*2]; - vw[i*2] = tmp * c; + vw[i*2] = _mm_mul_ps(tmp, c); } } @@ -622,18 +622,18 @@ static void v4dwt_decode_step2_sse(v4* l, v4* w, int k, int m, __m128 c){ __m128 tmp1 = vl[ 0]; __m128 tmp2 = vw[-1]; __m128 tmp3 = vw[ 0]; - vw[-1] = tmp2 + ((tmp1 + tmp3) * c); + vw[-1] = _mm_add_ps(tmp2, _mm_mul_ps(_mm_add_ps(tmp1, tmp3), c)); vl = vw; vw += 2; } if(m >= k){ return; } - c += c; - c *= vl[0]; + c = _mm_add_ps(c, c); + c = _mm_mul_ps(c, vl[0]); for(; m < k; ++m){ __m128 tmp = vw[-1]; - vw[-1] = tmp + c; + vw[-1] = _mm_add_ps(tmp, c); vw += 2; } } From e86b78c47c7ebfd15ea51de99c02e45790cbf9d7 Mon Sep 17 00:00:00 2001 From: Joerg Mueller Date: Tue, 13 Jul 2010 15:19:15 +0000 Subject: [PATCH 439/674] Merging revision 30264:30270 from my GSoC branch to trunk, logs: Bugfix for [#22284] Blender cursor gets stuck in the timeline when scrubbing (jack transport). Dirty hack fix for: * [#22366] Cutting audio and meta strips with audio does not actually cut audio * [#22639] Audio not clipped to meta bounds Also fixed a seemingly symptomless bug in sequencer_edit.c --- source/blender/blenkernel/intern/sequencer.c | 26 +++++++++++++++++++ source/blender/editors/screen/screen_ops.c | 2 +- .../editors/space_sequencer/sequencer_edit.c | 2 +- .../windowmanager/intern/wm_event_system.c | 2 +- 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 4a5d08f96cc..e8f8c2f3c3b 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -517,6 +517,31 @@ void calc_sequence_disp(Scene *scene, Sequence *seq) seq_update_sound(scene, seq); } +static void seq_update_sound_bounds_recursive(Scene *scene, Sequence *metaseq) +{ + Sequence *seq; + + /* for sound we go over full meta tree to update bounds of the sound strips, + since sound is played outside of evaluating the imbufs, */ + for(seq=metaseq->seqbase.first; seq; seq=seq->next) { + if(seq->type == SEQ_META) { + seq_update_sound_bounds_recursive(scene, seq); + } + else if((seq->type == SEQ_SOUND) || (seq->type == SEQ_SCENE)) { + if(seq->scene_sound) { + int startofs = seq->startofs; + int endofs = seq->endofs; + if(seq->startofs + seq->start < metaseq->start + metaseq->startofs) + startofs = metaseq->start + metaseq->startofs - seq->start; + + if(seq->start + seq->len - seq->endofs > metaseq->start + metaseq->len - metaseq->endofs) + endofs = seq->start + seq->len - metaseq->start - metaseq->len + metaseq->endofs; + sound_move_scene_sound(scene, seq->scene_sound, seq->start + startofs, seq->start+seq->len - endofs, startofs); + } + } + } +} + void calc_sequence(Scene *scene, Sequence *seq) { Sequence *seqm; @@ -576,6 +601,7 @@ void calc_sequence(Scene *scene, Sequence *seq) new_tstripdata(seq); } } + seq_update_sound_bounds_recursive(scene, seq); } calc_sequence_disp(scene, seq); } diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 5aeb50b34c5..50a5414b6ff 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -2448,7 +2448,7 @@ static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event) else sync= (scene->flag & SCE_FRAME_DROP); if((scene->audio.flag & AUDIO_SYNC) && !(sad->flag & ANIMPLAY_FLAG_REVERSE) && finite(time = sound_sync_scene(scene))) - scene->r.cfra = floor(time * FPS); + scene->r.cfra = round(time * FPS); else { if(sync) { diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 19b8e9d7a79..d3d2fd7e220 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -827,7 +827,7 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence * seq, int cutframe) } reload_sequence_new_file(scene, seqn, FALSE); - calc_sequence(scene, seq); + calc_sequence(scene, seqn); } return seqn; } diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index b01d2b27364..3077b25cc73 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1598,7 +1598,7 @@ void wm_event_do_handlers(bContext *C) } if(playing == 0) { - int ncfra = floor(sound_sync_scene(scene) * FPS); + int ncfra = round(sound_sync_scene(scene) * FPS); if(ncfra != scene->r.cfra) { scene->r.cfra = ncfra; ED_update_for_newframe(C, 1); From ea143875f7b26654d0d2bb07d6510c0060877375 Mon Sep 17 00:00:00 2001 From: Diego Borghetti Date: Tue, 13 Jul 2010 15:20:35 +0000 Subject: [PATCH 440/674] Fix [#22833] missing lock icon Was missing the icon in makesrna definition. --- source/blender/makesrna/intern/rna_pose.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c index 79f601c0375..211583e3df6 100644 --- a/source/blender/makesrna/intern/rna_pose.c +++ b/source/blender/makesrna/intern/rna_pose.c @@ -980,6 +980,7 @@ static void rna_def_pose_channel(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "protectflag", OB_LOCK_LOCX); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Lock Location", "Lock editing of location 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"); @@ -987,6 +988,7 @@ static void rna_def_pose_channel(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "protectflag", OB_LOCK_ROTX); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Lock Rotation", "Lock editing of rotation 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"); @@ -994,6 +996,7 @@ static void rna_def_pose_channel(BlenderRNA *brna) 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_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"); @@ -1008,6 +1011,7 @@ static void rna_def_pose_channel(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "protectflag", OB_LOCK_SCALEX); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Lock Scale", "Lock editing of scale 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"); From 8ee36e1da56b10a84e02ba9790fbcafbdbf43f51 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 13 Jul 2010 16:06:51 +0000 Subject: [PATCH 441/674] - fix for eternal loop with metaballs in set scenes. - next_object() now loops through all set scenes, not just the first one. - removed F_SET, rather them having a mode for looping on a set, just use the set when the first scene ends. - metaballs can now glob between scenes however there are still some depsgraph issues that existed before. --- source/blender/blenkernel/BKE_scene.h | 2 +- source/blender/blenkernel/intern/mball.c | 16 ++++++----- source/blender/blenkernel/intern/scene.c | 35 +++++++++++++++-------- source/blender/makesdna/DNA_scene_types.h | 1 - 4 files changed, 33 insertions(+), 21 deletions(-) diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h index b5b0a72d2d8..f0fb2a65673 100644 --- a/source/blender/blenkernel/BKE_scene.h +++ b/source/blender/blenkernel/BKE_scene.h @@ -63,7 +63,7 @@ struct Scene *set_scene_name(char *name); struct Scene *copy_scene(struct Main *bmain, struct Scene *sce, int type); void unlink_scene(struct Main *bmain, struct Scene *sce, struct Scene *newsce); -int next_object(struct Scene *scene, int val, struct Base **base, struct Object **ob); +int next_object(struct Scene **scene, int val, struct Base **base, struct Object **ob); struct Object *scene_find_camera(struct Scene *sc); struct Object *scene_camera_switch_find(struct Scene *scene); // DURIAN_CAMERA_SWITCH int scene_camera_switch_update(struct Scene *scene); diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c index c41dcfa9588..e35d8bce886 100644 --- a/source/blender/blenkernel/intern/mball.c +++ b/source/blender/blenkernel/intern/mball.c @@ -296,6 +296,7 @@ int is_mball_basis_for(Object *ob1, Object *ob2) * because this metaball influence polygonisation of metaballs. */ void copy_mball_properties(Scene *scene, Object *active_object) { + Scene *sce_iter= scene; Base *base; Object *ob; MetaBall *active_mball = (MetaBall*)active_object->data; @@ -305,10 +306,10 @@ void copy_mball_properties(Scene *scene, Object *active_object) splitIDname(active_object->id.name+2, basisname, &basisnr); /* XXX recursion check, see scene.c, just too simple code this next_object() */ - if(F_ERROR==next_object(scene, 0, 0, 0)) + if(F_ERROR==next_object(&sce_iter, 0, 0, 0)) return; - while(next_object(scene, 1, &base, &ob)) { + while(next_object(&sce_iter, 1, &base, &ob)) { if (ob->type==OB_MBALL) { if(ob!=active_object){ splitIDname(ob->id.name+2, obname, &obnr); @@ -338,6 +339,7 @@ void copy_mball_properties(Scene *scene, Object *active_object) */ Object *find_basis_mball(Scene *scene, Object *basis) { + Scene *sce_iter= scene; Base *base; Object *ob,*bob= basis; MetaElem *ml=NULL; @@ -348,10 +350,10 @@ Object *find_basis_mball(Scene *scene, Object *basis) totelem= 0; /* XXX recursion check, see scene.c, just too simple code this next_object() */ - if(F_ERROR==next_object(scene, 0, 0, 0)) + if(F_ERROR==next_object(&sce_iter, 0, 0, 0)) return NULL; - while(next_object(scene, 1, &base, &ob)) { + while(next_object(&sce_iter, 1, &base, &ob)) { if (ob->type==OB_MBALL) { if(ob==bob){ @@ -1507,6 +1509,7 @@ void polygonize(PROCESS *mbproc, MetaBall *mb) float init_meta(Scene *scene, Object *ob) /* return totsize */ { + Scene *sce_iter= scene; Base *base; Object *bob; MetaBall *mb; @@ -1523,9 +1526,8 @@ float init_meta(Scene *scene, Object *ob) /* return totsize */ splitIDname(ob->id.name+2, obname, &obnr); /* make main array */ - - next_object(scene, 0, 0, 0); - while(next_object(scene, 1, &base, &bob)) { + next_object(&sce_iter, 0, 0, 0); + while(next_object(&sce_iter, 1, &base, &bob)) { if(bob->type==OB_MBALL) { zero_size= 0; diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 2896ac68f40..fe52375617b 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -593,7 +593,7 @@ void unlink_scene(Main *bmain, Scene *sce, Scene *newsce) /* used by metaballs * doesnt return the original duplicated object, only dupli's */ -int next_object(Scene *scene, int val, Base **base, Object **ob) +int next_object(Scene **scene, int val, Base **base, Object **ob) { static ListBase *duplilist= NULL; static DupliObject *dupob; @@ -622,17 +622,21 @@ int next_object(Scene *scene, int val, Base **base, Object **ob) /* the first base */ if(fase==F_START) { - *base= scene->base.first; + *base= (*scene)->base.first; if(*base) { *ob= (*base)->object; fase= F_SCENE; } else { /* exception: empty scene */ - if(scene->set && scene->set->base.first) { - *base= scene->set->base.first; - *ob= (*base)->object; - fase= F_SET; + while((*scene)->set) { + (*scene)= (*scene)->set; + if((*scene)->base.first) { + *base= (*scene)->base.first; + *ob= (*base)->object; + fase= F_SCENE; + break; + } } } } @@ -642,11 +646,14 @@ int next_object(Scene *scene, int val, Base **base, Object **ob) if(*base) *ob= (*base)->object; else { if(fase==F_SCENE) { - /* scene is finished, now do the set */ - if(scene->set && scene->set->base.first) { - *base= scene->set->base.first; - *ob= (*base)->object; - fase= F_SET; + /* (*scene) is finished, now do the set */ + while((*scene)->set) { + (*scene)= (*scene)->set; + if((*scene)->base.first) { + *base= (*scene)->base.first; + *ob= (*base)->object; + break; + } } } } @@ -661,7 +668,7 @@ int next_object(Scene *scene, int val, Base **base, Object **ob) this enters eternal loop because of makeDispListMBall getting called inside of group_duplilist */ if((*base)->object->dup_group == NULL) { - duplilist= object_duplilist(scene, (*base)->object); + duplilist= object_duplilist((*scene), (*base)->object); dupob= duplilist->first; @@ -697,6 +704,10 @@ int next_object(Scene *scene, int val, Base **base, Object **ob) } } + /* if(ob && *ob) { + printf("Scene: '%s', '%s'\n", (*scene)->id.name+2, (*ob)->id.name+2); + } */ + /* reset recursion test */ in_next_object= 0; diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index 1933798d7c9..a4e9deaa7d9 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -1093,7 +1093,6 @@ typedef struct Scene { #define F_ERROR -1 #define F_START 0 #define F_SCENE 1 -#define F_SET 2 #define F_DUPLI 3 /* audio->flag */ From c0ba1671c34683654b691684473bb4f3899604a7 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 13 Jul 2010 16:53:17 +0000 Subject: [PATCH 442/674] group refcount checking was inconsistent. - if a group has one or more objects in it, it gets a refcount of 1 on load (unchanged from before) - dupli-groups, and materials no longer add/remove a reference. - now groups are only freed when they contain no objects or when manually unlinked. --- source/blender/blenkernel/intern/anim.c | 2 +- source/blender/blenkernel/intern/material.c | 2 +- source/blender/blenkernel/intern/object.c | 3 +-- source/blender/editors/object/object_add.c | 3 +-- source/blender/editors/object/object_edit.c | 2 +- source/blender/editors/object/object_relations.c | 3 +-- source/blender/editors/space_outliner/outliner.c | 3 +-- source/blender/makesrna/intern/rna_main_api.c | 1 - 8 files changed, 7 insertions(+), 12 deletions(-) diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c index fa0ddc5f1d3..157c0743c50 100644 --- a/source/blender/blenkernel/intern/anim.c +++ b/source/blender/blenkernel/intern/anim.c @@ -741,7 +741,7 @@ static void group_duplilist(ListBase *lb, Scene *scene, Object *ob, int level, i if(go->ob->transflag & OB_DUPLI) { copy_m4_m4(dob->ob->obmat, dob->mat); - object_duplilist_recursive((ID *)group, scene, go->ob, lb, ob->obmat, level+1, animated); + object_duplilist_recursive(&group->id, scene, go->ob, lb, ob->obmat, level+1, animated); copy_m4_m4(dob->ob->obmat, dob->omat); } } diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c index 3b6a10c0872..11c96e9a347 100644 --- a/source/blender/blenkernel/intern/material.c +++ b/source/blender/blenkernel/intern/material.c @@ -210,7 +210,7 @@ Material *copy_material(Material *ma) #if 0 // XXX old animation system id_us_plus((ID *)man->ipo); #endif // XXX old animation system - id_us_plus((ID *)man->group); + id_lib_extern((ID *)man->group); for(a=0; amtex[a]) { diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 6d264b3fed2..012b38570da 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -283,7 +283,6 @@ void free_object(Object *ob) ob->path= 0; if(ob->adt) BKE_free_animdata((ID *)ob); if(ob->poselib) ob->poselib->id.us--; - if(ob->dup_group) ob->dup_group->id.us--; if(ob->gpd) ob->gpd->id.us--; if(ob->defbase.first) BLI_freelistN(&ob->defbase); @@ -1320,7 +1319,7 @@ Object *copy_object(Object *ob) /* increase user numbers */ id_us_plus((ID *)obn->data); - id_us_plus((ID *)obn->dup_group); + id_lib_extern((ID *)obn->dup_group); for(a=0; atotcol; a++) id_us_plus((ID *)obn->mat[a]); diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 757c167c496..2299207eaa9 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -754,8 +754,7 @@ static int group_instance_add_exec(bContext *C, wmOperator *op) rename_id(&ob->id, group->id.name+2); ob->dup_group= group; ob->transflag |= OB_DUPLIGROUP; - id_us_plus(&group->id); - + id_lib_extern(&group->id); WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index d3226b1adf4..5fe09f0083e 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -1408,7 +1408,7 @@ void copy_attr(Scene *scene, View3D *v3d, short event) base->object->dup_group= ob->dup_group; if(ob->dup_group) - id_us_plus((ID *)ob->dup_group); + id_lib_extern(&ob->dup_group->id); } else if(event==7) { /* mass */ base->object->mass= ob->mass; diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index fbc6075796c..8d488eeabac 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -1250,10 +1250,9 @@ static int make_links_data_exec(bContext *C, wmOperator *op) BKE_copy_animdata_id((ID *)obt->data, (ID *)ob->data); break; case MAKE_LINKS_DUPLIGROUP: - if(ob->dup_group) ob->dup_group->id.us--; obt->dup_group= ob->dup_group; if(obt->dup_group) { - id_us_plus((ID *)obt->dup_group); + id_lib_extern(&obt->dup_group->id); obt->transflag |= OB_DUPLIGROUP; } break; diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c index 794c700f8ce..95e2cb920fc 100644 --- a/source/blender/editors/space_outliner/outliner.c +++ b/source/blender/editors/space_outliner/outliner.c @@ -1411,7 +1411,7 @@ static void outliner_build_tree(Main *mainvar, Scene *scene, SpaceOops *soops) GroupObject *go; for(group= mainvar->group.first; group; group= group->id.next) { - if(group->id.us) { + if(group->gobject.first) { te= outliner_add_element(soops, &soops->tree, group, NULL, 0, 0); tselem= TREESTORE(te); @@ -3124,7 +3124,6 @@ static void unlink_group_cb(bContext *C, Scene *scene, TreeElement *te, TreeStor if( GS(tsep->id->name)==ID_OB) { Object *ob= (Object *)tsep->id; ob->dup_group= NULL; - group->id.us--; } } else { diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c index 6c74ff2fefa..49359e03985 100644 --- a/source/blender/makesrna/intern/rna_main_api.c +++ b/source/blender/makesrna/intern/rna_main_api.c @@ -397,7 +397,6 @@ Group *rna_Main_groups_new(Main *bmain, char* name) void rna_Main_groups_remove(Main *bmain, ReportList *reports, Group *group) { unlink_group(group); - group->id.us= 0; free_libblock(&bmain->group, group); /* XXX python now has invalid pointer? */ } From 78487eb0a2e90d7e1dcd048a4c98e6797b06f8a5 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 13 Jul 2010 17:11:50 +0000 Subject: [PATCH 443/674] RNA cleanup: review of booleans done. --- source/blender/makesrna/intern/rna_object.c | 5 - source/blender/makesrna/intern/rna_particle.c | 28 +- source/blender/makesrna/intern/rna_space.c | 4 +- .../makesrna/rna_cleanup/rna_booleans.txt | 819 +++++++++--------- 4 files changed, 415 insertions(+), 441 deletions(-) diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 638d867e862..e45a776eea2 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -2116,11 +2116,6 @@ static void rna_def_object_base(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Selected", "Object base selection state"); RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Base_select_update"); - prop= RNA_def_property(srna, "selected_user", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", BA_WAS_SEL); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_ui_text(prop, "User Selected", "Object base user selection state, used to restore user selection after transformations"); - RNA_api_object_base(srna); } diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c index e43f494c189..74bc564064e 100644 --- a/source/blender/makesrna/intern/rna_particle.c +++ b/source/blender/makesrna/intern/rna_particle.c @@ -888,17 +888,15 @@ static void rna_def_particle(BlenderRNA *brna) // int totkey; /* flag */ - prop= RNA_def_property(srna, "unexist", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", PARS_UNEXIST); - RNA_def_property_ui_text(prop, "unexist", ""); + prop= RNA_def_property(srna, "is_existing", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", PARS_UNEXIST); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Exists", ""); - prop= RNA_def_property(srna, "no_disp", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", PARS_NO_DISP); - RNA_def_property_ui_text(prop, "no_disp", ""); - - prop= RNA_def_property(srna, "rekey", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", PARS_REKEY); - RNA_def_property_ui_text(prop, "rekey", ""); + prop= RNA_def_property(srna, "is_visible", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", PARS_NO_DISP); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Visible", ""); prop= RNA_def_property(srna, "alive_state", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "alive"); @@ -1133,11 +1131,6 @@ static void rna_def_particle_settings(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Multi React", "React multiple times"); RNA_def_property_update(prop, 0, "rna_Particle_reset"); - /* TODO: used somewhere? */ - prop= RNA_def_property(srna, "hair_geometry", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_HAIR_GEOMETRY); - RNA_def_property_ui_text(prop, "Hair Geometry", "");//TODO: tooltip - prop= RNA_def_property(srna, "unborn", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_UNBORN); RNA_def_property_ui_text(prop, "Unborn", "Show particles before they are emitted"); @@ -1224,11 +1217,6 @@ static void rna_def_particle_settings(BlenderRNA *brna) //RNA_def_property_ui_text(prop, "Use seams", "Use seams to determine parents"); //RNA_def_property_update(prop, 0, "rna_Particle_redo_child"); - /* TODO: used somewhere? */ - prop= RNA_def_property(srna, "child_render", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_CHILD_RENDER); - RNA_def_property_ui_text(prop, "child_render", ""); - prop= RNA_def_property(srna, "child_guide", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_CHILD_GUIDE); RNA_def_property_ui_text(prop, "child_guide", ""); diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index d5b3db1185e..67a2892d2a2 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -1638,7 +1638,7 @@ static void rna_def_space_dopesheet(BlenderRNA *brna) /* editing */ prop= RNA_def_property(srna, "automerge_keyframes", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SACTION_NOTRANSKEYCULL); - RNA_def_property_ui_text(prop, "AutoMerge Keyframes", "Show handles of Bezier control points"); + RNA_def_property_ui_text(prop, "AutoMerge Keyframes", "Automatically merge nearby keyframes"); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, NULL); prop= RNA_def_property(srna, "realtime_updates", PROP_BOOLEAN, PROP_NONE); @@ -1731,7 +1731,7 @@ static void rna_def_space_graph(BlenderRNA *brna) /* editing */ prop= RNA_def_property(srna, "automerge_keyframes", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SIPO_NOTRANSKEYCULL); - RNA_def_property_ui_text(prop, "AutoMerge Keyframes", "Show handles of Bezier control points"); + RNA_def_property_ui_text(prop, "AutoMerge Keyframes", "Automatically merge nearby keyframes"); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL); prop= RNA_def_property(srna, "realtime_updates", PROP_BOOLEAN, PROP_NONE); diff --git a/source/blender/makesrna/rna_cleanup/rna_booleans.txt b/source/blender/makesrna/rna_cleanup/rna_booleans.txt index a2d3760d5a3..614db736d64 100644 --- a/source/blender/makesrna/rna_cleanup/rna_booleans.txt +++ b/source/blender/makesrna/rna_cleanup/rna_booleans.txt @@ -1,4 +1,4 @@ -TODO * ActionActuator.continue_last_frame -> continue_last_frame: boolean Restore last frame when switching on/off, otherwise play from the start each time +ActionActuator.continue_last_frame -> use_continue_last_frame: boolean Restore last frame when switching on/off, otherwise play from the start each time ActionGroup.expanded -> show_expanded: boolean Action Group is expanded ActionGroup.locked -> lock: boolean Action Group is locked ActionGroup.selected -> select: boolean Action Group is selected @@ -16,30 +16,30 @@ AreaLamp.only_shadow -> use_only_shadow: boolean Causes light to cast shad AreaLamp.shadow_layer -> use_shadow_layer: boolean Causes only objects on the same layer to cast shadows AreaLamp.umbra -> use_umbra: boolean Emphasize parts that are fully shadowed (Constant Jittered sampling) Armature.auto_ik -> use_auto_ik: boolean Add temporaral IK constraints while grabbing bones in Pose Mode -TODO * Armature.deform_envelope -> use_deform_envelope: boolean Enable Bone Envelopes when defining deform -TODO * Armature.deform_quaternion -> use_deform_quaternion: boolean Enable deform rotation with Quaternions -TODO * Armature.deform_vertexgroups -> use_deform_vertexgroups: boolean Enable Vertex Groups when defining deform -TODO * Armature.delay_deform -> use_deform_delay: boolean Don't deform children when manipulating bones in Pose Mode +Armature.deform_envelope -> use_deform_envelopes: boolean Enable Bone Envelopes when defining deform +Armature.deform_quaternion -> use_deform_preserve_volume: boolean Deform rotation interpolation with quaternions +Armature.deform_vertexgroups -> use_deform_vertex_groups: boolean Enable Vertex Groups when defining deform +Armature.delay_deform -> use_deform_delay: boolean Don't deform children when manipulating bones in Pose Mode Armature.draw_axes -> show_axes: boolean Draw bone axes Armature.draw_custom_bone_shapes -> show_bone_custom_shapes: boolean Draw bones with their custom shapes Armature.draw_group_colors -> show_group_colors: boolean Draw bone group colors Armature.draw_names -> show_names: boolean Draw bone names -TODO * Armature.ghost_only_selected -> show_only_ghost_selected: boolean +Armature.show_ghost_only_selected -> show_only_ghost_selected: boolean Armature.layer -> layer: boolean Armature layer visibility Armature.layer_protection -> layer_protected: boolean Protected layers in Proxy Instances are restored to Proxy settings on file reload and undo Armature.x_axis_mirror -> use_mirror_x: boolean Apply changes to matching bone on opposite side of X-Axis ArmatureModifier.invert -> invert_vertex_group: boolean Invert vertex group influence -TODO * ArmatureModifier.multi_modifier -> use_multi_modifier: boolean Use same input as previous modifier, and mix results using overall vgroup -TODO * ArmatureModifier.quaternion -> use_preserve_volume: boolean Deform rotation interpolation with quaternions -TODO * ArmatureModifier.use_bone_envelopes -> use_bone_envelopes: boolean -TODO * ArmatureModifier.use_vertex_groups -> use_vertex_groups: boolean +ArmatureModifier.multi_modifier -> use_multi_modifier: boolean Use same input as previous modifier, and mix results using overall vgroup +ArmatureModifier.quaternion -> use_deform_preserve_volume: boolean Deform rotation interpolation with quaternions +ArmatureModifier.use_deform_envelopes -> use_deform_envelopes: boolean +ArmatureModifier.use_deform_vertex_groups -> use_deform_vertex_groups: boolean ArrayModifier.add_offset_object -> use_object_offset: boolean Add another object's transformation to the total offset ArrayModifier.constant_offset -> use_constant_offset: boolean Add a constant offset -TODO * ArrayModifier.merge_adjacent_vertices -> use_merge_vertex: boolean Merge vertices in adjacent duplicates -TODO * ArrayModifier.merge_end_vertices -> use_merge_vertex_end: boolean Merge vertices in first and last duplicates +ArrayModifier.merge_adjacent_vertices -> use_merge_adjacent_vertices: boolean Merge vertices in adjacent duplicates +ArrayModifier.merge_end_vertices -> use_merge_end_vertices: boolean Merge vertices in first and last duplicates ArrayModifier.relative_offset -> use_relative_offset: boolean Add an offset relative to the object's bounding box BackgroundImage.show_expanded -> show_expanded: boolean Show the expanded in the user interface -TODO * BevelModifier.only_vertices -> use_only_vertex: boolean Bevel verts/corners, not edges +BevelModifier.only_vertices -> use_only_vertices: boolean Bevel verts/corners, not edges BezierSplinePoint.hidden -> hide: boolean Visibility status BezierSplinePoint.selected_control_point -> select_control_point: boolean Control point selection status BezierSplinePoint.selected_handle1 -> select_left_handle: boolean Handle 1 selection status @@ -47,24 +47,24 @@ BezierSplinePoint.selected_handle2 -> select_right_handle: boolean Handle BoidRule.in_air -> use_in_air: boolean Use rule when boid is flying BoidRule.on_land -> use_on_land: boolean Use rule when boid is on land BoidRuleAvoid.predict -> use_predict: boolean Predict target movement -TODO * BoidRuleAvoidCollision.boids -> use_avoid: boolean Avoid collision with other boids -TODO * BoidRuleAvoidCollision.deflectors -> use_avoid_collision: boolean Avoid collision with deflector objects +BoidRuleAvoidCollision.boids -> use_avoid: boolean Avoid collision with other boids +BoidRuleAvoidCollision.deflectors -> use_avoid_collision: boolean Avoid collision with deflector objects BoidRuleFollowLeader.line -> use_line: boolean Follow leader in a line BoidRuleGoal.predict -> use_predict: boolean Predict target movement BoidSettings.allow_climb -> use_climb: boolean Allow boids to climb goal objects BoidSettings.allow_flight -> use_flight: boolean Allow boids to move in air BoidSettings.allow_land -> use_land: boolean Allow boids to move on land -TODO * Bone.connected -> use_connect: boolean, (read-only) When bone has a parent, bone's head is struck to the parent's tail -TODO * Bone.cyclic_offset -> use_cyclic_offset: boolean When bone doesn't have a parent, it receives cyclic offset effects -TODO * Bone.deform -> use_deform: boolean Bone does not deform any geometry +Bone.connected -> use_connect: boolean, (read-only) When bone has a parent, bone's head is struck to the parent's tail +Bone.cyclic_offset -> use_cyclic_offset: boolean When bone doesn't have a parent, it receives cyclic offset effects +Bone.deform -> use_deform: boolean Bone does not deform any geometry Bone.draw_wire -> show_wire: boolean Bone is always drawn as Wireframe regardless of viewport draw mode. Useful for non-obstructive custom bone shapes Bone.hidden -> hide: boolean Bone is not visible when it is not in Edit Mode (i.e. in Object or Pose Modes) -TODO * Bone.hinge -> use_hinge: boolean Bone inherits rotation or scale from parent bone +Bone.hinge -> use_hinge: boolean Bone inherits rotation or scale from parent bone Bone.inherit_scale -> use_inherit_scale: boolean Bone inherits scaling from parent bone Bone.layer -> layer: boolean Layers bone exists in -TODO * Bone.local_location -> use_local_location: boolean Bone location is set in local space -TODO * Bone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean When deforming bone, multiply effects of Vertex Group weights with Envelope influence -TODO * Bone.restrict_select -> restrict_select: boolean Bone is able to be selected +Bone.local_location -> use_local_location: boolean Bone location is set in local space +Bone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean When deforming bone, multiply effects of Vertex Group weights with Envelope influence +Bone.restrict_select -> restrict_select: boolean Bone is able to be selected Bone.selected -> select: boolean BooleanProperty.default -> default: boolean, (read-only) Default value for this number BooleanProperty.default_array -> default_array: boolean, (read-only) Default value for this array @@ -81,7 +81,7 @@ Brush.use_space -> use_space: boolean Limit brush application to the dista Brush.use_spacing_pressure -> use_pressure_spacing: boolean Enable tablet pressure sensitivity for spacing Brush.use_strength_pressure -> use_pressure_strength: boolean Enable tablet pressure sensitivity for strength Brush.use_wrap -> use_wrap: boolean Enable torus wrapping while painting -TODO * BuildModifier.randomize -> use_random: boolean Randomize the faces or edges during build +BuildModifier.randomize -> use_random_order: boolean Randomize the faces or edges during build Camera.panorama -> use_panorama: boolean Render the scene with a cylindrical camera for pseudo-fisheye lens effects Camera.show_limits -> show_limits: boolean Draw the clipping range and focus point on the camera Camera.show_mist -> show_mist: boolean Draw a line from the Camera to indicate the mist area @@ -107,24 +107,24 @@ ClothCollisionSettings.enable_collision -> use_collision: boolean Enable c ClothCollisionSettings.enable_self_collision -> use_self_collision: boolean Enable self collisions ClothSettings.pin_cloth -> use_pin_cloth: boolean Enable pinning of cloth vertices to other objects/positions ClothSettings.stiffness_scaling -> use_stiffness_scale: boolean If enabled, stiffness can be scaled along a weight painted vertex group -TODO * CollisionSensor.collision_type -> collision_type: boolean Toggle collision on material or property -TODO * CollisionSensor.pulse -> use_pulse: boolean Changes to the set of colliding objects generates pulse -TODO * CollisionSettings.enabled -> use_collision: boolean Enable this objects as a collider for physics systems -TODO * CollisionSettings.kill_particles -> use_particle_kill: boolean Kill collided particles -TODO * CompositorNodeAlphaOver.convert_premul -> use_convert_premultiply: boolean +CollisionSensor.collision_type -> use_material: boolean Use material instead of property +CollisionSensor.pulse -> use_pulse: boolean Changes to the set of colliding objects generates pulse +CollisionSettings.enabled -> use: boolean Enable this objects as a collider for physics systems +CollisionSettings.kill_particles -> use_particle_kill: boolean Kill colliding particles +CompositorNodeAlphaOver.convert_premul -> use_premultiply: boolean CompositorNodeBlur.bokeh -> use_bokeh: boolean -TODO * CompositorNodeBlur.gamma -> use_gamma_correct: boolean +CompositorNodeBlur.gamma -> use_gamma_correction: boolean CompositorNodeBlur.relative -> use_relative: boolean CompositorNodeColorSpill.unspill -> use_unspill: boolean Compensate all channels (diffenrently) by hand CompositorNodeCrop.crop_size -> use_crop_size: boolean Whether to crop the size of the input image CompositorNodeDBlur.wrap -> use_wrap: boolean -TODO * CompositorNodeDefocus.gamma_correction -> use_gamma_correct: boolean Enable gamma correction before and after main process +CompositorNodeDefocus.gamma_correction -> use_gamma_correction: boolean Enable gamma correction before and after main process CompositorNodeDefocus.preview -> use_preview: boolean Enable sampling mode, useful for preview when using low samplecounts CompositorNodeDefocus.use_zbuffer -> use_zbuffer: boolean Disable when using an image as input instead of actual zbuffer (auto enabled if node not image based, eg. time node) CompositorNodeGlare.rotate_45 -> use_rotate_45: boolean Simple star filter: add 45 degree rotation offset CompositorNodeImage.auto_refresh -> use_auto_refresh: boolean CompositorNodeImage.cyclic -> use_cyclic: boolean -TODO * CompositorNodeInvert.alpha -> use_alpha: boolean +CompositorNodeInvert.alpha -> invert_alpha: boolean CompositorNodeInvert.rgb -> invert_rgb: boolean CompositorNodeLensdist.fit -> use_fit: boolean For positive distortion factor only: scale image such that black areas are not visible CompositorNodeLensdist.jitter -> use_jitter: boolean Enable/disable jittering; faster, but also noisier @@ -137,16 +137,16 @@ CompositorNodeVecBlur.curved -> use_curved: boolean Interpolate between fr Constraint.active -> active: boolean Constraint is the one being edited Constraint.disabled -> is_valid: boolean, (read-only) Constraint has invalid settings and will not be evaluated Constraint.expanded -> show_expanded: boolean Constraint's panel is expanded in UI -TODO * Constraint.proxy_local -> is_proxy_local: boolean Constraint was added in this proxy instance (i.e. did not belong to source Armature) +Constraint.proxy_local -> is_proxy_local: boolean Constraint was added in this proxy instance (i.e. did not belong to source Armature) ConstraintActuator.detect_material -> use_material_detect: boolean Detect material instead of property ConstraintActuator.fh_normal -> use_fh_normal: boolean Add a horizontal spring force on slopes ConstraintActuator.fh_paralel_axis -> use_fh_paralel_axis: boolean Keep object axis parallel to normal -TODO * ConstraintActuator.force_distance -> use_force_distance: boolean Force distance of object to point of impact of ray +ConstraintActuator.force_distance -> use_force_distance: boolean Force distance of object to point of impact of ray ConstraintActuator.local -> use_local: boolean Set ray along object's axis or global axis ConstraintActuator.normal -> use_normal: boolean Set object axis along (local axis) or parallel (global axis) to the normal at hit position ConstraintActuator.persistent -> use_persistent: boolean Persistent actuator: stays active even if ray does not reach target -ControlFluidSettings.active -> active: boolean Object contributes to the fluid simulation -TODO * ControlFluidSettings.reverse_frames -> use_frame_reverse: boolean Reverse control object movement +ControlFluidSettings.active -> use: boolean Object contributes to the fluid simulation +ControlFluidSettings.reverse_frames -> use_reverse_frames: boolean Reverse control object movement Controller.expanded -> show_expanded: boolean Set controller expanded in the user interface Controller.priority -> use_priority: boolean Mark controller for execution before all non-marked controllers (good for startup scripts) Controller.state -> state: boolean, (read-only) Set Controller state index (1 to 30) @@ -169,11 +169,11 @@ CopyScaleConstraint.use_x -> use_x: boolean Copy the target's X scale CopyScaleConstraint.use_y -> use_y: boolean Copy the target's Y scale CopyScaleConstraint.use_z -> use_z: boolean Copy the target's Z scale Curve.auto_texspace -> use_auto_texspace: boolean Adjusts active object's texture space automatically when transforming object -TODO * Curve.back -> use_fill_back: boolean Draw filled back for extruded/beveled curves +Curve.back -> use_fill_back: boolean Draw filled back for extruded/beveled curves Curve.draw_handles -> show_handles: boolean Display bezier handles in editmode Curve.draw_normals -> show_normals: boolean Display 3D curve normals in editmode Curve.front -> use_fill_front: boolean Draw filled front for extruded/beveled curves -TODO * Curve.map_along_length -> use_texture_map_length: boolean Generate texture mapping coordinates following the curve direction, rather than the local bounding box +Curve.map_along_length -> use_map_along_length: boolean Generate texture mapping coordinates following the curve direction, rather than the local bounding box Curve.use_deform_fill -> use_fill_deform: boolean Fill curve after applying deformation Curve.use_path -> use_path: boolean Enable the curve to become a translation path Curve.use_path_follow -> use_path_follow: boolean Make curve path children to rotate along the path @@ -185,7 +185,7 @@ CurveMapping.clip -> use_clip: boolean Force the curve view to fit a defin DelaySensor.repeat -> use_repeat: boolean Toggle repeat option. If selected, the sensor restarts after Delay+Dur logic tics DomainFluidSettings.generate_speed_vectors -> use_speed_vectors: boolean Generate speed vectors for vector blur DomainFluidSettings.override_time -> use_time_override: boolean Use a custom start and end time (in seconds) instead of the scene's timeline -TODO * DomainFluidSettings.reverse_frames -> use_frame_reverse: boolean Reverse fluid frames +DomainFluidSettings.reverse_frames -> use_reverse_frames: boolean Reverse fluid frames NEGATE * DopeSheet.collapse_summary -> show_expanded_summary: boolean Collapse summary when shown, so all other channels get hidden. (DopeSheet Editors Only) DopeSheet.display_armature -> show_armatures: boolean Include visualization of Armature related Animation data DopeSheet.display_camera -> show_cameras: boolean Include visualization of Camera related Animation data @@ -210,39 +210,39 @@ Driver.show_debug_info -> show_debug_info: boolean Show intermediate value DriverTarget.use_local_space_transforms -> use_local_space_transform: boolean Use transforms in Local Space (as opposed to the worldspace default) EdgeSplitModifier.use_edge_angle -> use_edge_angle: boolean Split edges with high angle between faces EdgeSplitModifier.use_sharp -> use_edge_sharp: boolean Split edges that are marked as sharp -TODO * EditBone.connected -> is_connected: boolean When bone has a parent, bone's head is struck to the parent's tail +EditBone.connected -> use_connect: boolean When bone has a parent, bone's head is struck to the parent's tail EditBone.cyclic_offset -> use_cyclic_offset: boolean When bone doesn't have a parent, it receives cyclic offset effects -TODO * EditBone.deform -> use_deform: boolean Bone does not deform any geometry +EditBone.deform -> use_deform: boolean Bone does not deform any geometry EditBone.draw_wire -> show_wire: boolean Bone is always drawn as Wireframe regardless of viewport draw mode. Useful for non-obstructive custom bone shapes EditBone.hidden -> hide: boolean Bone is not visible when in Edit Mode EditBone.hinge -> use_hinge: boolean Bone inherits rotation or scale from parent bone EditBone.inherit_scale -> use_inherit_scale: boolean Bone inherits scaling from parent bone EditBone.layer -> layer: boolean Layers bone exists in -TODO * EditBone.local_location -> use_local_location: boolean Bone location is set in local space +EditBone.local_location -> use_local_location: boolean Bone location is set in local space EditBone.locked -> lock: boolean Bone is not able to be transformed when in Edit Mode -TODO * EditBone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean When deforming bone, multiply effects of Vertex Group weights with Envelope influence -TODO * EditBone.restrict_select -> restrict_select: boolean Bone is able to be selected +EditBone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean When deforming bone, multiply effects of Vertex Group weights with Envelope influence +EditBone.restrict_select -> restrict_select: boolean Bone is able to be selected EditBone.selected -> select: boolean EditBone.selected_head -> select_head: boolean EditBone.selected_tail -> select_tail: boolean -TODO * EditObjectActuator.enable_3d_tracking -> use_track_3d: boolean Enable 3D tracking -TODO * EditObjectActuator.local_angular_velocity -> use_local_angular_velocity: boolean Apply the rotation locally -TODO * EditObjectActuator.local_linear_velocity -> use_local_linear_velocity: boolean Apply the transformation locally -TODO * EditObjectActuator.replace_display_mesh -> use_display_mesh: boolean Replace the display mesh -TODO * EditObjectActuator.replace_physics_mesh -> use_physics_mesh: boolean Replace the physics mesh (triangle bounds only - compound shapes not supported) -TODO * EffectSequence.convert_float -> use_float: boolean Convert input to float data +EditObjectActuator.enable_3d_tracking -> use_3d_tracking: boolean Enable 3D tracking +EditObjectActuator.local_angular_velocity -> use_local_angular_velocity: boolean Apply the rotation locally +EditObjectActuator.local_linear_velocity -> use_local_linear_velocity: boolean Apply the transformation locally +EditObjectActuator.replace_display_mesh -> use_replace_display_mesh: boolean Replace the display mesh +EditObjectActuator.replace_physics_mesh -> use_replace_physics_mesh: boolean Replace the physics mesh (triangle bounds only - compound shapes not supported) +EffectSequence.convert_float -> use_float: boolean Convert input to float data EffectSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields EffectSequence.flip_x -> use_flip_x: boolean Flip on the X axis EffectSequence.flip_y -> use_flip_y: boolean Flip on the Y axis -TODO * EffectSequence.premultiply -> use_premultiply: boolean Convert RGB from key alpha to premultiplied alpha +EffectSequence.premultiply -> use_premultiply: boolean Convert RGB from key alpha to premultiplied alpha EffectSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean Use a custom directory to store data EffectSequence.proxy_custom_file -> use_proxy_custom_file: boolean Use a custom file to read proxy data from -TODO * EffectSequence.reverse_frames -> use_frame_reverse: boolean Reverse frame order +EffectSequence.reverse_frames -> use_reverse_frames: boolean Reverse frame order EffectSequence.use_color_balance -> use_color_balance: boolean (3-Way color correction) on input EffectSequence.use_crop -> use_crop: boolean Crop image before processing EffectSequence.use_proxy -> use_proxy: boolean Use a preview proxy for this strip EffectSequence.use_translation -> use_translation: boolean Translate image before processing -TODO * EffectorWeights.do_growing_hair -> use_hair_grow: boolean Use force fields when growing hair +EffectorWeights.do_growing_hair -> apply_to_hair_growing: boolean Use force fields when growing hair EnvironmentMap.ignore_layers -> layer_ignore: boolean Hide objects on these layers when generating the Environment Map EnvironmentMapTexture.use_filter_size_min -> filter_size_min: boolean Use Filter Size as a minimal filter value in pixels EnvironmentMapTexture.mipmap -> use_mipmap: boolean Uses auto-generated MIP maps for the image @@ -251,12 +251,12 @@ Event.alt -> alt: boolean, (read-only) True when the Alt/Option key is hel Event.ctrl -> ctrl: boolean, (read-only) True when the Ctrl key is held Event.oskey -> oskey: boolean, (read-only) True when the Cmd key is held Event.shift -> shift: boolean, (read-only) True when the Shift key is held -TODO * ExplodeModifier.alive -> show_alive: boolean Show mesh when particles are alive -TODO * ExplodeModifier.dead -> show_dead: boolean Show mesh when particles are dead +ExplodeModifier.alive -> show_alive: boolean Show mesh when particles are alive +ExplodeModifier.dead -> show_dead: boolean Show mesh when particles are dead ExplodeModifier.size -> use_size: boolean Use particle size for the shrapnel ExplodeModifier.split_edges -> use_edge_split: boolean Split face edges for nicer shrapnel -TODO * ExplodeModifier.unborn -> show_unborn: boolean Show mesh when particles are unborn -TODO * FCurve.auto_clamped_handles -> use_auto_handle_clamp: boolean All auto-handles for F-Curve are clamped +ExplodeModifier.unborn -> show_unborn: boolean Show mesh when particles are unborn +FCurve.auto_clamped_handles -> use_auto_handle_clamp: boolean All auto-handles for F-Curve are clamped NEGATE * FCurve.disabled -> enabled: boolean F-Curve could not be evaluated in past, so should be skipped when evaluating FCurve.locked -> lock: boolean F-Curve's settings cannot be edited FCurve.muted -> mute: boolean F-Curve is not evaluated @@ -273,26 +273,26 @@ FModifierLimits.use_maximum_x -> use_max_x: boolean Use the maximum X valu FModifierLimits.use_maximum_y -> use_max_y: boolean Use the maximum Y value FModifierLimits.use_minimum_x -> use_min_x: boolean Use the minimum X value FModifierLimits.use_minimum_y -> use_min_y: boolean Use the minimum Y value -TODO * FModifierStepped.use_frame_end -> use_frame_end: boolean Restrict modifier to only act before its 'end' frame -TODO * FModifierStepped.use_frame_start -> use_frame_start: boolean Restrict modifier to only act after its 'start' frame -TODO * FcurveActuator.add -> use_additive: boolean F-Curve is added to the current loc/rot/scale in global or local coordinate according to Local flag -TODO * FcurveActuator.child -> use_child: boolean Update F-Curve on all children Objects as well -TODO * FcurveActuator.force -> use_force: boolean Apply F-Curve as a global or local force depending on the local option (dynamic objects only) -TODO * FcurveActuator.local -> use_local: boolean Let the F-Curve act in local coordinates, used in Force and Add mode +FModifierStepped.use_frame_end -> use_frame_end: boolean Restrict modifier to only act before its 'end' frame +FModifierStepped.use_frame_start -> use_frame_start: boolean Restrict modifier to only act after its 'start' frame +FcurveActuator.add -> use_add: boolean F-Curve is added to the current loc/rot/scale in global or local coordinate according to Local flag +FcurveActuator.child -> apply_to_children: boolean Update F-Curve on all children Objects as well +FcurveActuator.force -> use_force: boolean Apply F-Curve as a global or local force depending on the local option (dynamic objects only) +FcurveActuator.local -> use_local: boolean Let the F-Curve act in local coordinates, used in Force and Add mode FieldSettings.do_absorption -> use_absorption: boolean Force gets absorbed by collision objects -TODO * FieldSettings.do_location -> use_location: boolean Effect particles' location -TODO * FieldSettings.do_rotation -> use_rotation: boolean Effect particles' dynamic rotation -TODO * FieldSettings.force_2d -> use_force_2d: boolean Apply force only in 2d -TODO * FieldSettings.global_coordinates -> use_coordinates_global: boolean Use effector/global coordinates for turbulence -TODO * FieldSettings.guide_path_add -> use_guide_path_add: boolean Based on distance/falloff it adds a portion of the entire path +FieldSettings.do_location -> apply_to_location: boolean Effect particles' location +FieldSettings.do_rotation -> apply_to_rotation: boolean Effect particles' dynamic rotation +FieldSettings.force_2d -> use_2d_force: boolean Apply force only in 2d +FieldSettings.global_coordinates -> use_global_coordinates: boolean Use effector/global coordinates for turbulence +FieldSettings.guide_path_add -> use_guide_path_add: boolean Based on distance/falloff it adds a portion of the entire path FieldSettings.multiple_springs -> use_multiple_springs: boolean Every point is effected by multiple springs -TODO * FieldSettings.root_coordinates -> use_coordinates_root: boolean Texture coordinates from root particle locations -TODO * FieldSettings.use_coordinates -> use_coordinates_object: boolean Use object/global coordinates for texture +FieldSettings.root_coordinates -> use_root_coordinates: boolean Texture coordinates from root particle locations +FieldSettings.use_coordinates -> use_object_coordinates: boolean Use object/global coordinates for texture FieldSettings.use_guide_path_weight -> use_guide_path_weight: boolean Use curve weights to influence the particle influence along the curve -TODO * FieldSettings.use_max_distance -> use_distance_min: boolean Use a maximum distance for the field to work -TODO * FieldSettings.use_min_distance -> use_distance_max: boolean Use a minimum distance for the field's fall-off -TODO * FieldSettings.use_radial_max -> use_radial_max: boolean Use a maximum radial distance for the field to work -TODO * FieldSettings.use_radial_min -> use_radial_min: boolean Use a minimum radial distance for the field's fall-off +FieldSettings.use_max_distance -> use_max_distance: boolean Use a maximum distance for the field to work +FieldSettings.use_min_distance -> use_min_distance: boolean Use a minimum distance for the field's fall-off +FieldSettings.use_radial_max -> use_radial_max: boolean Use a maximum radial distance for the field to work +FieldSettings.use_radial_min -> use_radial_min: boolean Use a minimum radial distance for the field's fall-off FileSelectParams.do_filter -> use_filter: boolean Enable filtering of files FileSelectParams.filter_blender -> use_filter_blender: boolean Show .blend files FileSelectParams.filter_folder -> use_filter_folder: boolean Show folders @@ -306,14 +306,14 @@ NEGATE * FileSelectParams.hide_dot -> show_hidden: boolean Hide hidden do Filter2DActuator.enable_motion_blur -> use_motion_blur: boolean Enable/Disable Motion Blur FloorConstraint.sticky -> use_sticky: boolean Immobilize object while constrained FloorConstraint.use_rotation -> use_rotation: boolean Use the target's rotation to determine floor -FluidFluidSettings.active -> active: boolean Object contributes to the fluid simulation +FluidFluidSettings.active -> use: boolean Object contributes to the fluid simulation FluidFluidSettings.export_animated_mesh -> use_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it FollowPathConstraint.use_curve_follow -> use_curve_follow: boolean Object will follow the heading and banking of the curve FollowPathConstraint.use_curve_radius -> use_curve_radius: boolean Objects scale by the curve radius FollowPathConstraint.use_fixed_position -> use_fixed_location: boolean Object will stay locked to a single point somewhere along the length of the curve regardless of time -Function.registered -> registered: boolean, (read-only) Function is registered as callback as part of type registration -Function.registered_optional -> registered_optional: boolean, (read-only) Function is optionally registered as callback part of type registration -TODO * GPencilFrame.paint_lock -> lock_paint: boolean Frame is being edited (painted on) +Function.registered -> is_registered: boolean, (read-only) Function is registered as callback as part of type registration +Function.registered_optional -> is_registered_optional: boolean, (read-only) Function is optionally registered as callback part of type registration +GPencilFrame.paint_lock -> is_edited: boolean Frame is being edited (painted on) GPencilFrame.selected -> select: boolean Frame is selected for editing in the DopeSheet GPencilLayer.active -> active: boolean Set active layer for editing GPencilLayer.frame_lock -> lock_frame: boolean Lock current frame displayed by layer @@ -321,15 +321,15 @@ GPencilLayer.hide -> hide: boolean Set layer Visibility GPencilLayer.locked -> lock: boolean Protect layer from further editing and/or frame changes GPencilLayer.selected -> select: boolean Layer is selected for editing in the DopeSheet GPencilLayer.show_points -> show_points: boolean Draw the points which make up the strokes (for debugging purposes) -TODO * GPencilLayer.use_onion_skinning -> use_onion_skin: boolean Ghost frames on either side of frame +GPencilLayer.use_onion_skinning -> use_onion_skinning: boolean Ghost frames on either side of frame GameBooleanProperty.value -> value: boolean Property value -TODO * GameObjectSettings.actor -> use_actor: boolean Object is detected by the Near and Radar sensor -TODO * GameObjectSettings.all_states -> states_all: boolean Set all state bits +GameObjectSettings.actor -> use_actor: boolean Object is detected by the Near and Radar sensor +GameObjectSettings.all_states -> use_all_states: boolean Set all state bits GameObjectSettings.anisotropic_friction -> use_anisotropic_friction: boolean Enable anisotropic friction GameObjectSettings.collision_compound -> use_collision_compound: boolean Add children to form a compound collision object GameObjectSettings.debug_state -> show_debug_state: boolean Print state debug info in the game engine -TODO * GameObjectSettings.ghost -> use_ghost: boolean Object does not restitute collisions, like a ghost -TODO * GameObjectSettings.initial_state -> state_initial: boolean Initial state when the game starts +GameObjectSettings.ghost -> use_ghost: boolean Object does not restitute collisions, like a ghost +GameObjectSettings.initial_state -> state_initial: boolean Initial state when the game starts GameObjectSettings.lock_x_axis -> lock_location_x: boolean Disable simulation of linear motion along the X axis GameObjectSettings.lock_x_rot_axis -> lock_rotation_x: boolean Disable simulation of angular motion along the X axis GameObjectSettings.lock_y_axis -> lock_location_y: boolean Disable simulation of linear motion along the Y axis @@ -362,13 +362,13 @@ Image.clamp_x -> use_clamp_x: boolean Disable texture repeating horizontal Image.clamp_y -> use_clamp_y: boolean Disable texture repeating vertically Image.dirty -> is_dirty: boolean, (read-only) Image has changed and is not saved Image.fields -> use_fields: boolean Use fields of the image -Image.has_data -> is_data: boolean, (read-only) True if this image has data +Image.has_data -> has_data: boolean, (read-only) True if this image has data Image.premultiply -> use_premultiply: boolean Convert RGB from key alpha to premultiplied alpha Image.tiles -> use_tiles: boolean Use of tilemode for faces (default shift-LMB to pick the tile for selected faces) ImagePaint.invert_stencil -> invert_stencil: boolean Invert the stencil layer ImagePaint.show_brush -> show_brush: boolean Enables brush shape while not drawing ImagePaint.show_brush_draw -> show_brush_draw: boolean Enables brush shape while drawing -TODO * ImagePaint.use_backface_cull -> use_backface_cull: boolean Ignore faces pointing away from the view (faster) +ImagePaint.use_backface_cull -> use_backface_culling: boolean Ignore faces pointing away from the view (faster) ImagePaint.use_clone_layer -> use_clone_layer: boolean Use another UV layer as clone source, otherwise use 3D the cursor as the source ImagePaint.use_normal_falloff -> use_normal_falloff: boolean Paint most on faces pointing towards the view ImagePaint.use_occlude -> use_occlude: boolean Only paint onto the faces directly under the brush (slower) @@ -378,15 +378,15 @@ ImageSequence.convert_float -> use_float: boolean Convert input to float d ImageSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields ImageSequence.flip_x -> use_flip_x: boolean Flip on the X axis ImageSequence.flip_y -> use_flip_y: boolean Flip on the Y axis -TODO * ImageSequence.premultiply -> use_premultiply: boolean Convert RGB from key alpha to premultiplied alpha +ImageSequence.premultiply -> use_premultiply: boolean Convert RGB from key alpha to premultiplied alpha ImageSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean Use a custom directory to store data ImageSequence.proxy_custom_file -> use_proxy_custom_file: boolean Use a custom file to read proxy data from -TODO * ImageSequence.reverse_frames -> use_frame_reverse: boolean Reverse frame order +ImageSequence.reverse_frames -> use_reverse_frames: boolean Reverse frame order ImageSequence.use_color_balance -> use_color_balance: boolean (3-Way color correction) on input ImageSequence.use_crop -> use_crop: boolean Crop image before processing ImageSequence.use_proxy -> use_proxy: boolean Use a preview proxy for this strip ImageSequence.use_translation -> use_translation: boolean Translate image before processing -TODO * ImageTexture.calculate_alpha -> use_rgb_alpha: boolean Calculates an alpha channel based on RGB values in the image +ImageTexture.calculate_alpha -> use_calculate_alpha: boolean Calculates an alpha channel based on RGB values in the image ImageTexture.checker_even -> use_checker_even: boolean Sets even checker tiles ImageTexture.checker_odd -> use_checker_odd: boolean Sets odd checker tiles ImageTexture.filter_size_minimum -> use_minimum_filter_size: boolean Use Filter Size as a minimal filter value in pixels @@ -401,12 +401,12 @@ ImageTexture.normal_map -> use_normal_map: boolean Uses image RGB values f ImageTexture.use_alpha -> use_alpha: boolean Uses the alpha channel information in the image ImageUser.auto_refresh -> use_auto_refresh: boolean Always refresh image on frame changes ImageUser.cyclic -> use_cyclic: boolean Cycle the images in the movie -TODO would use is_ * InflowFluidSettings.active -> active: boolean Object contributes to the fluid simulation -TODO * InflowFluidSettings.export_animated_mesh -> use_export_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it -TODO * InflowFluidSettings.local_coordinates -> use_local_coordinates: boolean Use local coordinates for inflow. (e.g. for rotating objects) +InflowFluidSettings.active -> use: boolean Object contributes to the fluid simulation +InflowFluidSettings.export_animated_mesh -> use_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it +InflowFluidSettings.local_coordinates -> use_local_coordinates: boolean Use local coordinates for inflow. (e.g. for rotating objects) Itasc.auto_step -> use_auto_step: boolean Automatically determine the optimal number of steps for best performance/accuracy trade off JoystickSensor.all_events -> use_all_events: boolean Triggered by all events on this joysticks current type (axis/button/hat) -TODO * Key.relative -> use_relative: boolean Makes shape keys relative +Key.relative -> use_relative: boolean Makes shape keys relative KeyConfig.user_defined -> is_user_defined: boolean, (read-only) Indicates that a keyconfig was defined by the user KeyMap.children_expanded -> show_expanded_children: boolean Children expanded in the user interface KeyMap.items_expanded -> show_expanded_items: boolean Expanded in the user interface @@ -423,7 +423,7 @@ KeyboardSensor.all_keys -> use_all_keys: boolean Trigger this sensor on an Keyframe.selected -> select: boolean Control point selection status Keyframe.selected_handle1 -> select_left_handle: boolean Handle 1 selection status Keyframe.selected_handle2 -> select_right_handle: boolean Handle 2 selection status -TODO * KeyingSet.absolute -> use_absolute: boolean Keying Set defines specific paths/settings to be keyframed (i.e. is not reliant on context info) +KeyingSet.absolute -> use_absolute: boolean Keying Set defines specific paths/settings to be keyframed (i.e. is not reliant on context info) KeyingSet.insertkey_needed -> use_insertkey_needed: boolean Only insert keyframes where they're needed in the relevant F-Curves KeyingSet.insertkey_visual -> use_insertkey_visual: boolean Insert keyframes based on 'visual transforms' KeyingSet.insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb: boolean Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis @@ -447,7 +447,7 @@ KinematicConstraint.use_tail -> use_tail: boolean Include bone's tail as l KinematicConstraint.use_target -> use_target: boolean Disable for targetless IK Lamp.diffuse -> use_diffuse: boolean Lamp does diffuse shading Lamp.layer -> use_own_layer: boolean Illuminates objects only on the same layer the lamp is on -TODO * Lamp.negative -> use_negative: boolean Lamp casts negative light +Lamp.negative -> use_negative: boolean Lamp casts negative light Lamp.specular -> use_specular: boolean Lamp creates specular highlights LampSkySettings.use_atmosphere -> use_atmosphere: boolean Apply sun effect on atmosphere LampSkySettings.use_sky -> use_sky: boolean Apply sun effect on sky @@ -474,7 +474,7 @@ LimitScaleConstraint.use_minimum_y -> use_min_y: boolean Use the minimum Y LimitScaleConstraint.use_minimum_z -> use_min_z: boolean Use the minimum Z value Main.debug -> show_debug: boolean Print debugging information in console Main.file_is_saved -> is_saved: boolean, (read-only) Has the current session been saved to disk as a .blend file -MaskModifier.invert -> invert: boolean Use vertices that are not part of region defined +MaskModifier.invert -> invert_vertex_group: boolean Use vertices that are not part of region defined Material.cast_approximate -> use_cast_approximate: boolean Allow this material to cast shadows when using approximate ambient occlusion. Material.cast_buffer_shadows -> use_cast_buffer_shadows: boolean Allow this material to cast shadows from shadow buffer lamps Material.cast_shadows_only -> use_cast_shadows_only: boolean Makes objects with this material appear invisible, only casting shadows (not rendered) @@ -486,13 +486,13 @@ Material.full_oversampling -> use_full_oversampling: boolean Force this ma Material.invert_z -> invert_z: boolean Renders material's faces with an inverted Z buffer (scanline only) Material.light_group_exclusive -> use_light_group_exclusive: boolean Material uses the light group exclusively - these lamps are excluded from other scene lighting Material.object_color -> use_object_color: boolean Modulate the result with a per-object color -Material.only_shadow -> use_shadow_only: boolean Renders shadows as the material's alpha value, making materials transparent except for shadowed areas +Material.only_shadow -> use_only_shadow: boolean Renders shadows as the material's alpha value, making materials transparent except for shadowed areas Material.ray_shadow_bias -> use_ray_shadow_bias: boolean Prevents raytraced shadow errors on surfaces with smooth shaded normals (terminator problem) -TODO * Material.receive_transparent_shadows -> use_receive_transparent_shadows: boolean Allow this object to receive transparent shadows casted through other objects -TODO * Material.shadeless -> use_shadeless: boolean Makes this material insensitive to light or shadow -TODO * Material.shadows -> use_shadows: boolean Allows this material to receive shadows +Material.receive_transparent_shadows -> use_transparent_shadows: boolean Allow this object to receive transparent shadows casted through other objects +Material.shadeless -> use_shadeless: boolean Makes this material insensitive to light or shadow +Material.shadows -> use_shadows: boolean Allows this material to receive shadows Material.tangent_shading -> use_tangent_shading: boolean Use the material's tangent vector instead of the normal for shading - for anisotropic shading effects -TODO * Material.traceable -> use_traceable: boolean Include this material and geometry that uses it in ray tracing calculations +Material.traceable -> use_traceable: boolean Include this material and geometry that uses it in ray tracing calculations Material.transparency -> use_transparency: boolean Render material as transparent Material.use_diffuse_ramp -> use_diffuse_ramp: boolean Toggle diffuse ramp operations Material.use_nodes -> use_nodes: boolean Use shader nodes to render the material @@ -511,12 +511,12 @@ MaterialHalo.texture -> use_texture: boolean Gives halo a texture MaterialHalo.vertex_normal -> use_vertex_normal: boolean Uses the vertex normal to specify the dimension of the halo MaterialHalo.xalpha -> use_extreme_alpha: boolean Uses extreme alpha MaterialPhysics.align_to_normal -> use_align_to_normal: boolean Align dynamic game objects along the surface normal, when inside the physics distance area -TODO * MaterialRaytraceMirror.enabled -> enabled: boolean Enable raytraced reflections +MaterialRaytraceMirror.enabled -> use: boolean Enable raytraced reflections MaterialStrand.blender_units -> use_blender_units: boolean Use Blender units for widths instead of pixels MaterialStrand.surface_diffuse -> use_surface_diffuse: boolean Make diffuse shading more similar to shading the surface MaterialStrand.tangent_shading -> use_tangent_shading: boolean Uses direction of strands as normal for tangent-shading -TODO * MaterialSubsurfaceScattering.enabled -> enabled: boolean Enable diffuse subsurface scatting effects in a material -TODO * MaterialTextureSlot.enabled -> enabled: boolean Enable this material texture slot +MaterialSubsurfaceScattering.enabled -> use: boolean Enable diffuse subsurface scatting effects in a material +MaterialTextureSlot.enabled -> use: boolean Enable this material texture slot MaterialTextureSlot.from_dupli -> use_from_dupli: boolean Dupli's instanced from verts, faces or particles, inherit texture coordinate from their parent MaterialTextureSlot.from_original -> use_from_original: boolean Dupli's derive their object coordinates from the original objects transformation MaterialTextureSlot.map_alpha -> use_map_alpha: boolean Causes the texture to affect the alpha value @@ -541,7 +541,7 @@ MaterialTextureSlot.map_specular -> use_map_specular: boolean Causes the t MaterialTextureSlot.map_translucency -> use_map_translucency: boolean Causes the texture to affect the translucency value MaterialTextureSlot.map_warp -> use_map_warp: boolean Let the texture warp texture coordinates of next channels MaterialTextureSlot.new_bump -> use_new_bump: boolean Use new, corrected bump mapping code (backwards compatibility option) -TODO * MaterialVolume.external_shadows -> use_external_shadows: boolean Receive shadows from sources outside the volume (temporary) +MaterialVolume.external_shadows -> use_external_shadows: boolean Receive shadows from sources outside the volume (temporary) MaterialVolume.light_cache -> use_light_cache: boolean Pre-calculate the shading information into a voxel grid, speeds up shading at slightly less accuracy Mesh.all_edges -> show_all_edges: boolean Displays all edges for wireframe in all view modes in the 3D view Mesh.auto_texspace -> use_auto_texspace: boolean Adjusts active object's texture space automatically when transforming object @@ -565,22 +565,22 @@ Mesh.vertex_normal_flip -> use_vertex_normal_flip: boolean Flip vertex nor MeshColorLayer.active -> active: boolean Sets the layer as active for display and editing MeshColorLayer.active_render -> active_render: boolean Sets the layer as active for rendering MeshDeformModifier.dynamic -> dynamic: boolean Recompute binding dynamically on top of other deformers (slower and more memory consuming.) -MeshDeformModifier.invert -> invert: boolean Invert vertex group influence +MeshDeformModifier.invert -> invert_vertex_group: boolean Invert vertex group influence MeshDeformModifier.is_bound -> is_bound: boolean, (read-only) Whether geometry has been bound to control cage MeshEdge.fgon -> is_fgon: boolean, (read-only) Fgon edge MeshEdge.hidden -> hide: boolean MeshEdge.loose -> is_loose: boolean, (read-only) Loose edge -MeshEdge.seam -> is_seam: boolean Seam edge for UV unwrapping +MeshEdge.seam -> use_seam: boolean Seam edge for UV unwrapping MeshEdge.selected -> select: boolean -MeshEdge.sharp -> is_sharp: boolean Sharp edge for the EdgeSplit modifier +MeshEdge.sharp -> use_sharp: boolean Sharp edge for the EdgeSplit modifier MeshFace.hidden -> hide: boolean MeshFace.selected -> select: boolean -MeshFace.smooth -> is_smooth: boolean -TODO * MeshTextureFace.alpha_sort -> use_alpha_sort: boolean Enable sorting of faces for correct alpha drawing (slow, use Clip Alpha instead when possible) -TODO * MeshTextureFace.billboard -> use_billboard: boolean Billboard with Z-axis constraint -TODO * MeshTextureFace.collision -> use_collision: boolean Use face for collision and ray-sensor detection -TODO * MeshTextureFace.halo -> use_halo: boolean Screen aligned billboard -TODO would use is_ * MeshTextureFace.invisible -> invisible: boolean Make face invisible +MeshFace.smooth -> use_smooth: boolean +MeshTextureFace.alpha_sort -> use_alpha_sort: boolean Enable sorting of faces for correct alpha drawing (slow, use Clip Alpha instead when possible) +MeshTextureFace.billboard -> use_billboard: boolean Billboard with Z-axis constraint +MeshTextureFace.collision -> use_collision: boolean Use face for collision and ray-sensor detection +MeshTextureFace.halo -> use_halo: boolean Screen aligned billboard +MeshTextureFace.invisible -> hide: boolean Make face invisible MeshTextureFace.light -> use_light: boolean Use light for face MeshTextureFace.object_color -> use_object_color: boolean Use ObColor instead of vertex colors MeshTextureFace.shadow -> use_shadow_face: boolean Face is used for shadow @@ -590,22 +590,22 @@ MeshTextureFace.text -> use_bitmap_text: boolean Enable bitmap text on fac MeshTextureFace.twoside -> use_twoside: boolean Render face two-sided MeshTextureFace.uv_pinned -> uv_pin: boolean MeshTextureFace.uv_selected -> uv_select: boolean -TODO * MeshTextureFaceLayer.active -> active: boolean Sets the layer as active for display and editing -TODO * MeshTextureFaceLayer.active_clone -> active_clone: boolean Sets the layer as active for cloning -TODO * MeshTextureFaceLayer.active_render -> active_render: boolean Sets the layer as active for rendering +MeshTextureFaceLayer.active -> active: boolean Sets the layer as active for display and editing +MeshTextureFaceLayer.active_clone -> active_clone: boolean Sets the layer as active for cloning +MeshTextureFaceLayer.active_render -> active_render: boolean Sets the layer as active for rendering MeshVertex.hidden -> hide: boolean -TODO would use is_ * MeshVertex.selected -> select: boolean +MeshVertex.selected -> select: boolean MetaBall.auto_texspace -> use_auto_texspace: boolean Adjusts active object's texture space automatically when transforming object MetaElement.hide -> hide: boolean Hide element -TODO would use is_ * MetaElement.negative -> use_negative: boolean Set metaball as negative one -MetaSequence.convert_float -> use_convert_float: boolean Convert input to float data +MetaElement.negative -> use_negative: boolean Set metaball as negative one +MetaSequence.convert_float -> use_float: boolean Convert input to float data MetaSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields MetaSequence.flip_x -> use_flip_x: boolean Flip on the X axis MetaSequence.flip_y -> use_flip_y: boolean Flip on the Y axis -* TODO MetaSequence.premultiply -> use_convert_premultiply: boolean Convert RGB from key alpha to premultiplied alpha +MetaSequence.premultiply -> use_premultiply: boolean Convert RGB from key alpha to premultiplied alpha MetaSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean Use a custom directory to store data MetaSequence.proxy_custom_file -> use_proxy_custom_file: boolean Use a custom file to read proxy data from -TODO * MetaSequence.reverse_frames -> use_reverse_frames: boolean Reverse frame order +MetaSequence.reverse_frames -> use_reverse_frames: boolean Reverse frame order MetaSequence.use_color_balance -> use_color_balance: boolean (3-Way color correction) on input MetaSequence.use_crop -> use_crop: boolean Crop image before processing MetaSequence.use_proxy -> use_proxy: boolean Use a preview proxy for this strip @@ -614,55 +614,55 @@ MirrorModifier.clip -> use_clip: boolean Prevents vertices from going thro MirrorModifier.mirror_u -> use_mirror_u: boolean Mirror the U texture coordinate around the 0.5 point MirrorModifier.mirror_v -> use_mirror_v: boolean Mirror the V texture coordinate around the 0.5 point MirrorModifier.mirror_vertex_groups -> use_mirror_vertex_groups: boolean Mirror vertex groups (e.g. .R->.L) -TODO * MirrorModifier.x -> use_x: boolean Enable X axis mirror -TODO * MirrorModifier.y -> use_y: boolean Enable Y axis mirror -TODO * MirrorModifier.z -> use_z: boolean Enable Z axis mirror +MirrorModifier.x -> use_x: boolean Enable X axis mirror +MirrorModifier.y -> use_y: boolean Enable Y axis mirror +MirrorModifier.z -> use_z: boolean Enable Z axis mirror Modifier.editmode -> show_in_editmode: boolean Use modifier while in the edit mode Modifier.expanded -> show_expanded: boolean Set modifier expanded in the user interface Modifier.on_cage -> show_on_cage: boolean Enable direct editing of modifier control cage Modifier.realtime -> show_realtime: boolean Realtime display of a modifier -TODO * Modifier.render -> use_render: boolean Use modifier during rendering -TODO * MotionPath.editing -> editing: boolean Path is being edited -TODO * MotionPath.use_bone_head -> use_bone_head: boolean, (read-only) For PoseBone paths, use the bone head location when calculating this path +Modifier.render -> use_render: boolean Use modifier during rendering +MotionPath.editing -> is_edited: boolean Path is being edited +MotionPath.use_bone_head -> use_bone_head: boolean, (read-only) For PoseBone paths, use the bone head location when calculating this path MotionPathVert.selected -> select: boolean Path point is selected for editing -MovieSequence.convert_float -> use_convert_float: boolean Convert input to float data +MovieSequence.convert_float -> use_float: boolean Convert input to float data MovieSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields MovieSequence.flip_x -> use_flip_x: boolean Flip on the X axis MovieSequence.flip_y -> use_flip_y: boolean Flip on the Y axis -TODO * MovieSequence.premultiply -> use_convert_premultiply: boolean Convert RGB from key alpha to premultiplied alpha +MovieSequence.premultiply -> use_premultiply: boolean Convert RGB from key alpha to premultiplied alpha MovieSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean Use a custom directory to store data MovieSequence.proxy_custom_file -> use_proxy_custom_file: boolean Use a custom file to read proxy data from -TODO * MovieSequence.reverse_frames -> use_reverse_frames: boolean Reverse frame order +MovieSequence.reverse_frames -> use_reverse_frames: boolean Reverse frame order MovieSequence.use_color_balance -> use_color_balance: boolean (3-Way color correction) on input MovieSequence.use_crop -> use_crop: boolean Crop image before processing MovieSequence.use_proxy -> use_proxy: boolean Use a preview proxy for this strip MovieSequence.use_translation -> use_translation: boolean Translate image before processing -MulticamSequence.convert_float -> use_convert_float: boolean Convert input to float data +MulticamSequence.convert_float -> use_float: boolean Convert input to float data MulticamSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields MulticamSequence.flip_x -> use_flip_x: boolean Flip on the X axis MulticamSequence.flip_y -> use_flip_y: boolean Flip on the Y axis -TODO * MulticamSequence.premultiply -> use_convert_premultiply: boolean Convert RGB from key alpha to premultiplied alpha +MulticamSequence.premultiply -> use_premultiply: boolean Convert RGB from key alpha to premultiplied alpha MulticamSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean Use a custom directory to store data MulticamSequence.proxy_custom_file -> use_proxy_custom_file: boolean Use a custom file to read proxy data from -TODO * MulticamSequence.reverse_frames -> use_reverse_frames: boolean Reverse frame order +MulticamSequence.reverse_frames -> use_reverse_frames: boolean Reverse frame order MulticamSequence.use_color_balance -> use_color_balance: boolean (3-Way color correction) on input MulticamSequence.use_crop -> use_crop: boolean Crop image before processing MulticamSequence.use_proxy -> use_proxy: boolean Use a preview proxy for this strip MulticamSequence.use_translation -> use_translation: boolean Translate image before processing MultiresModifier.external -> is_external: boolean, (read-only) Store multires displacements outside the .blend file, to save memory -TODO * MultiresModifier.optimal_display -> show_optimal: boolean Skip drawing/rendering of interior subdivided edges -TODO * NetRenderSettings.master_broadcast -> use_master_broadcast: boolean broadcast master server address on local network -TODO * NetRenderSettings.master_clear -> use_master_clear: boolean delete saved files on exit -TODO * NetRenderSettings.slave_clear -> use_slave_clear: boolean delete downloaded files on exit -TODO * NetRenderSettings.slave_outputlog -> use_slave_outputlog: boolean Output render text log to console as well as sending it to the master -TODO * NetRenderSettings.slave_thumb -> use_slave_thumb: boolean Generate thumbnails on slaves instead of master +MultiresModifier.optimal_display -> show_only_control_edges: boolean Skip drawing/rendering of interior subdivided edges +NetRenderSettings.master_broadcast -> use_master_broadcast: boolean broadcast master server address on local network +NetRenderSettings.master_clear -> use_master_clear: boolean delete saved files on exit +NetRenderSettings.slave_clear -> use_slave_clear: boolean delete downloaded files on exit +NetRenderSettings.slave_outputlog -> use_slave_output_log: boolean Output render text log to console as well as sending it to the master +NetRenderSettings.slave_thumb -> use_slave_thumb: boolean Generate thumbnails on slaves instead of master NlaStrip.active -> active: boolean, (read-only) NLA Strip is active NlaStrip.animated_influence -> use_animated_influence: boolean Influence setting is controlled by an F-Curve rather than automatically determined NlaStrip.animated_time -> use_animated_time: boolean Strip time is controlled by an F-Curve rather than automatically determined NlaStrip.animated_time_cyclic -> use_animated_time_cyclic: boolean Cycle the animated time within the action start & end NlaStrip.auto_blending -> use_auto_blend: boolean Number of frames for Blending In/Out is automatically determined from overlapping strips NlaStrip.muted -> mute: boolean NLA Strip is not evaluated -TODO I'd use is_ * NlaStrip.reversed -> reversed: boolean NLA Strip is played back in reverse order (only when timing is automatically determined) +NlaStrip.reversed -> use_reverse: boolean NLA Strip is played back in reverse order (only when timing is automatically determined) NlaStrip.selected -> select: boolean NLA Strip is selected NlaTrack.active -> active: boolean, (read-only) NLA Track is active NlaTrack.locked -> lock: boolean NLA Track is locked @@ -682,11 +682,11 @@ Object.lock_rotation -> lock_rotation: boolean Lock editing of rotation in Object.lock_rotation_w -> lock_rotation_w: boolean Lock editing of 'angle' component of four-component rotations in the interface Object.lock_rotations_4d -> lock_rotations_4d: boolean Lock editing of four component rotations by components (instead of as Eulers) Object.lock_scale -> lock_scale: boolean Lock editing of scale in the interface -TODO * Object.restrict_render -> use_limit_render: boolean Restrict renderability -TODO * Object.restrict_select -> use_limit_select: boolean Restrict selection in the viewport -TODO * Object.restrict_view -> use_limit_view: boolean Restrict visibility in the viewport +Object.restrict_render -> restrict_render: boolean Restrict renderability +Object.restrict_select -> restrict_select: boolean Restrict selection in the viewport +Object.restrict_view -> restrict_view: boolean Restrict visibility in the viewport Object.selected -> select: boolean Object selection state -TODO * Object.shape_key_edit_mode -> use_shape_key_edit_mode: boolean Apply shape keys in edit mode (for Meshes only) +Object.shape_key_edit_mode -> use_shape_key_edit_mode: boolean Apply shape keys in edit mode (for Meshes only) Object.shape_key_lock -> show_shape_key: boolean Always show the current Shape for this Object Object.slow_parent -> use_slow_parent: boolean Create a delay in the parent relationship Object.time_offset_add_parent -> use_time_offset_add_parent: boolean Add the parents time offset value @@ -697,100 +697,94 @@ Object.use_dupli_faces_scale -> use_dupli_faces_scale: boolean Scale dupli Object.use_dupli_frames_speed -> use_dupli_frames_speed: boolean Set dupliframes to use the frame Object.use_dupli_verts_rotation -> use_dupli_verts_rotation: boolean Rotate dupli according to vertex normal Object.x_ray -> show_x_ray: boolean Makes the object draw in front of others -TODO * ObjectActuator.add_linear_velocity -> add_linear_velocity: boolean Toggles between ADD and SET linV +ObjectActuator.add_linear_velocity -> use_add_linear_velocity: boolean Toggles between ADD and SET linV ObjectActuator.local_angular_velocity -> use_local_angular_velocity: boolean Angular velocity is defined in local coordinates ObjectActuator.local_force -> use_local_force: boolean Force is defined in local coordinates ObjectActuator.local_linear_velocity -> use_local_linear_velocity: boolean Velocity is defined in local coordinates ObjectActuator.local_location -> use_local_location: boolean Location is defined in local coordinates ObjectActuator.local_rotation -> use_local_rotation: boolean Rotation is defined in local coordinates ObjectActuator.local_torque -> use_local_torque: boolean Torque is defined in local coordinates -TODO * ObjectActuator.servo_limit_x -> use_limit_servo_x: boolean Set limit to force along the X axis -TODO * ObjectActuator.servo_limit_y -> use_limit_servo_y: boolean Set limit to force along the Y axis -TODO * ObjectActuator.servo_limit_z -> use_limit_servo_z: boolean Set limit to force along the Z axis +ObjectActuator.servo_limit_x -> use_servo_limit_x: boolean Set limit to force along the X axis +ObjectActuator.servo_limit_y -> use_servo_limit_y: boolean Set limit to force along the Y axis +ObjectActuator.servo_limit_z -> use_servo_limit_z: boolean Set limit to force along the Z axis ObjectBase.layers -> layer: boolean Layers the object base is on ObjectBase.selected -> select: boolean Object base selection state -TODO * ObjectBase.selected_user -> is_select_user: boolean, (read-only) Object base user selection state, used to restore user selection after transformations -ObstacleFluidSettings.active -> active: boolean Object contributes to the fluid simulation -TODO * ObstacleFluidSettings.export_animated_mesh -> use_export_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it -TODO * Operator.has_reports -> has_reports: boolean, (read-only) Operator has a set of reports (warnings and errors) from last execution +ObstacleFluidSettings.active -> use: boolean Object contributes to the fluid simulation +ObstacleFluidSettings.export_animated_mesh -> use_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it +Operator.has_reports -> has_reports: boolean, (read-only) Operator has a set of reports (warnings and errors) from last execution OperatorStrokeElement.flip -> use_flip: boolean -OutflowFluidSettings.active -> active: boolean Object contributes to the fluid simulation -TODO * OutflowFluidSettings.export_animated_mesh -> use_export_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it +OutflowFluidSettings.active -> use: boolean Object contributes to the fluid simulation +OutflowFluidSettings.export_animated_mesh -> use_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it Paint.fast_navigate -> show_low_resolution: boolean For multires, show low resolution while navigating the view Paint.show_brush -> show_brush: boolean -TODO * Panel.bl_default_closed -> bl_default_closed: boolean -TODO * Panel.bl_show_header -> bl_show_header: boolean +Panel.bl_default_closed -> bl_use_closed: boolean +Panel.bl_show_header -> bl_show_header: boolean ParentActuator.compound -> use_compound: boolean Add this object shape to the parent shape (only if the parent shape is already compound) -TODO * ParentActuator.ghost -> use_ghost: boolean Make this object ghost while parented (only if not compound) -TODO * Particle.no_disp -> no_disp: boolean -TODO * Particle.rekey -> rekey: boolean -TODO * Particle.unexist -> unexist: boolean +ParentActuator.ghost -> use_ghost: boolean Make this object ghost while parented (only if not compound) ParticleBrush.use_puff_volume -> use_puff_volume: boolean Apply puff to unselected end-points, (helps maintain hair volume when puffing root) -TODO * ParticleEdit.add_interpolate -> use_add_interpolate: boolean Interpolate new particles from the existing ones +ParticleEdit.add_interpolate -> use_add_interpolate: boolean Interpolate new particles from the existing ones ParticleEdit.auto_velocity -> use_auto_velocity: boolean Calculate point velocities automatically ParticleEdit.draw_particles -> show_particles: boolean Draw actual particles ParticleEdit.editable -> is_editable: boolean, (read-only) A valid edit mode exists ParticleEdit.emitter_deflect -> use_emitter_deflect: boolean Keep paths from intersecting the emitter ParticleEdit.fade_time -> use_fade_time: boolean Fade paths and keys further away from current frame -TODO * ParticleEdit.hair -> hair: boolean, (read-only) Editing hair -TODO * ParticleEdit.keep_lengths -> use_keep_lengths: boolean Keep path lengths constant -TODO * ParticleEdit.keep_root -> use_keep_root: boolean Keep root keys unmodified -TODO * ParticleFluidSettings.drops -> show_drops: boolean Show drop particles -TODO * ParticleFluidSettings.floats -> show_floats: boolean Show floating foam particles -TODO * ParticleFluidSettings.tracer -> show_tracer: boolean Show tracer particles -TODO * ParticleInstanceModifier.alive -> show_alive: boolean Show instances when particles are alive -TODO * ParticleInstanceModifier.children -> use_children: boolean Create instances from child particles -TODO * ParticleInstanceModifier.dead -> show_dead: boolean Show instances when particles are dead -TODO * ParticleInstanceModifier.keep_shape -> use_keep_shape: boolean Don't stretch the object +ParticleEdit.hair -> is_hair: boolean, (read-only) Editing hair +ParticleEdit.keep_lengths -> use_preserve_lengths: boolean Keep path lengths constant +ParticleEdit.keep_root -> use_preserve_root: boolean Keep root keys unmodified +ParticleFluidSettings.drops -> use_drops: boolean Show drop particles +ParticleFluidSettings.floats -> use_floats: boolean Show floating foam particles +ParticleFluidSettings.tracer -> use_tracer: boolean Show tracer particles +ParticleInstanceModifier.alive -> use_alive: boolean Show instances when particles are alive +ParticleInstanceModifier.children -> use_children: boolean Create instances from child particles +ParticleInstanceModifier.dead -> use_dead: boolean Show instances when particles are dead +ParticleInstanceModifier.keep_shape -> use_preserve_shape: boolean Don't stretch the object ParticleInstanceModifier.normal -> use_normal: boolean Create instances from normal particles ParticleInstanceModifier.size -> use_size: boolean Use particle size to scale the instances -TODO * ParticleInstanceModifier.unborn -> show_unborn: boolean Show instances when particles are unborn +ParticleInstanceModifier.unborn -> use_unborn: boolean Show instances when particles are unborn ParticleInstanceModifier.use_path -> use_path: boolean Create instances along particle paths -TODO * ParticleSettings.abs_path_time -> use_abs_path_time: boolean Path timing is in absolute frames -TODO * ParticleSettings.animate_branching -> use_animate_branching: boolean Animate branching +ParticleSettings.abs_path_time -> use_absolute_path_time: boolean Path timing is in absolute frames +ParticleSettings.animate_branching -> use_animate_branching: boolean Animate branching ParticleSettings.billboard_lock -> lock_billboard: boolean Lock the billboards align axis ParticleSettings.boids_2d -> lock_boids_to_surface: boolean Constrain boids to a surface ParticleSettings.branching -> use_branching: boolean Branch child paths from each other -TODO * ParticleSettings.child_effector -> use_child_effector: boolean Apply effectors to children -TODO * ParticleSettings.child_guide -> use_child_guide: boolean -TODO * ParticleSettings.child_render -> use_child_render: boolean +ParticleSettings.child_effector -> apply_effector_to_children: boolean Apply effectors to children +ParticleSettings.child_guide -> apply_guide_to_children: boolean ParticleSettings.die_on_collision -> use_die_on_collision: boolean Particles die when they collide with a deflector object -TODO * ParticleSettings.died -> show_died: boolean Show particles after they have died +ParticleSettings.died -> use_died: boolean Show particles after they have died ParticleSettings.draw_health -> show_health: boolean Draw boid health -TODO * ParticleSettings.emitter -> use_emitter: boolean Render emitter Object also +ParticleSettings.emitter -> use_render_emitter: boolean Render emitter Object also ParticleSettings.enable_simplify -> use_simplify: boolean Remove child strands as the object becomes smaller on the screen ParticleSettings.even_distribution -> use_even_distribution: boolean Use even distribution from faces based on face areas or edge lengths ParticleSettings.grid_invert -> invert_grid: boolean Invert what is considered object and what is not -TODO * ParticleSettings.hair_bspline -> use_hair_bspline: boolean Interpolate hair using B-Splines -TODO * ParticleSettings.hair_geometry -> hair_geometry: boolean +ParticleSettings.hair_bspline -> use_hair_bspline: boolean Interpolate hair using B-Splines ParticleSettings.material_color -> show_material_color: boolean Draw particles using material's diffuse color -TODO * ParticleSettings.num -> use_number: boolean Show particle number +ParticleSettings.num -> show_number: boolean Show particle number ParticleSettings.parent -> use_parents: boolean Render parent particles -TODO * ParticleSettings.rand_group -> use_random_group: boolean Pick objects from group randomly -TODO * ParticleSettings.react_multiple -> use_react_multiple: boolean React multiple times -TODO * ParticleSettings.react_start_end -> use_react_start_end: boolean Give birth to unreacted particles eventually -TODO * ParticleSettings.render_adaptive -> show_path_steps: boolean Draw steps of the particle path -TODO * ParticleSettings.render_strand -> use_render_strand: boolean Use the strand primitive for rendering -TODO * ParticleSettings.rotation_dynamic -> use_rotation_dynamic: boolean Sets rotation to dynamic/constant -TODO * ParticleSettings.self_effect -> use_self_effect: boolean Particle effectors effect themselves +ParticleSettings.rand_group -> use_group_pick_random: boolean Pick objects from group randomly +ParticleSettings.react_multiple -> use_react_multiple: boolean React multiple times +ParticleSettings.react_start_end -> use_react_start_end: boolean Give birth to unreacted particles eventually +ParticleSettings.render_adaptive -> use_render_adaptive: boolean Use adapative rendering for paths +ParticleSettings.render_strand -> use_strand_primitive: boolean Use the strand primitive for rendering +ParticleSettings.rotation_dynamic -> use_dynamic_rotation: boolean Sets rotation to dynamic/constant +ParticleSettings.self_effect -> use_self_effect: boolean Particle effectors effect themselves ParticleSettings.show_size -> show_size: boolean Show particle size -TODO * ParticleSettings.size_deflect -> use_size_deflect: boolean Use particle's size in deflection +ParticleSettings.size_deflect -> use_size_deflect: boolean Use particle's size in deflection ParticleSettings.sizemass -> use_multiply_size_mass: boolean Multiply mass by particle size ParticleSettings.symmetric_branching -> use_symmetric_branching: boolean Start and end points are the same ParticleSettings.trand -> use_emit_random: boolean Emit in random order of elements -TODO * ParticleSettings.unborn -> show_unborn: boolean Show particles before they are emitted +ParticleSettings.unborn -> use_unborn: boolean Show particles before they are emitted ParticleSettings.use_global_dupli -> use_global_dupli: boolean Use object's global coordinates for duplication ParticleSettings.use_group_count -> use_group_count: boolean Use object multiple times in the same group ParticleSettings.velocity -> show_velocity: boolean Show particle velocity -TODO * ParticleSettings.velocity_length -> show_velocity_length: boolean Multiply line length by particle speed -TODO * ParticleSettings.viewport -> viewport: boolean +ParticleSettings.velocity_length -> use_velocity_length: boolean Multiply line length by particle speed +ParticleSettings.viewport -> use_simplify_viewport: boolean ParticleSettings.whole_group -> use_whole_group: boolean Use whole group at once ParticleSystem.editable -> is_editable: boolean, (read-only) Particle system can be edited in particle mode ParticleSystem.edited -> is_edited: boolean, (read-only) Particle system has been edited in particle mode -TODO * ParticleSystem.global_hair -> global_hair: boolean, (read-only) Hair keys are in global coordinate space +ParticleSystem.global_hair -> is_global_hair: boolean, (read-only) Hair keys are in global coordinate space ParticleSystem.hair_dynamics -> use_hair_dynamics: boolean Enable hair dynamics using cloth simulation ParticleSystem.keyed_timing -> use_keyed_timing: boolean Use key times -TODO * ParticleSystem.multiple_caches -> multiple_caches: boolean, (read-only) Particle system has multiple point caches +ParticleSystem.multiple_caches -> has_multiple_caches: boolean, (read-only) Particle system has multiple point caches ParticleSystem.vertex_group_clump_negate -> invert_vertex_group_clump: boolean Negate the effect of the clump vertex group ParticleSystem.vertex_group_density_negate -> invert_vertex_group_density: boolean Negate the effect of the density vertex group ParticleSystem.vertex_group_field_negate -> invert_vertex_group_field: boolean Negate the effect of the field vertex group @@ -803,98 +797,98 @@ ParticleSystem.vertex_group_roughness_end_negate -> invert_vertex_group_roughnes ParticleSystem.vertex_group_size_negate -> invert_vertex_group_size: boolean Negate the effect of the size vertex group ParticleSystem.vertex_group_tangent_negate -> invert_vertex_group_tangent: boolean Negate the effect of the tangent vertex group ParticleSystem.vertex_group_velocity_negate -> invert_vertex_group_velocity: boolean Negate the effect of the velocity vertex group -TODO * ParticleTarget.valid -> is_valid: boolean Keyed particles target is valid +ParticleTarget.valid -> is_valid: boolean Keyed particles target is valid PivotConstraint.use_relative_position -> use_relative_location: boolean Offset will be an absolute point in space instead of relative to the target PointCache.baked -> is_baked: boolean, (read-only) -TODO * PointCache.baking -> baking: boolean, (read-only) +PointCache.baking -> is_baking: boolean, (read-only) PointCache.disk_cache -> use_disk_cache: boolean Save cache files to disk (.blend file must be saved first) PointCache.external -> use_external: boolean Read cache from an external location -TODO * PointCache.frames_skipped -> frames_skipped: boolean, (read-only) +PointCache.has_skipped_frames-> frames_skipped: boolean, (read-only) PointCache.outdated -> is_outdated: boolean, (read-only) PointCache.quick_cache -> use_quick_cache: boolean Update simulation with cache steps PointCache.use_library_path -> use_library_path: boolean Use this files path when library linked into another file. PointDensity.turbulence -> use_turbulence: boolean Add directed noise to the density at render-time -TODO * PointLamp.only_shadow -> use_shadow_only: boolean Causes light to cast shadows only without illuminating objects -TODO * PointLamp.shadow_layer -> use_shadow_own_layer: boolean Causes only objects on the same layer to cast shadows -TODO * PointLamp.sphere -> use_sphere: boolean Sets light intensity to zero beyond lamp distance -TODO * PoseBone.has_ik -> is_in_ik_chain: boolean, (read-only) Is part of an IK chain -TODO * PoseBone.ik_dof_x -> ik_dof_x: boolean Allow movement around the X axis -TODO * PoseBone.ik_dof_y -> ik_dof_y: boolean Allow movement around the Y axis -TODO * PoseBone.ik_dof_z -> ik_dof_z: boolean Allow movement around the Z axis +PointLamp.only_shadow -> use_only_shadow: boolean Causes light to cast shadows only without illuminating objects +PointLamp.shadow_layer -> use_shadow_layer: boolean Causes only objects on the same layer to cast shadows +PointLamp.sphere -> use_sphere: boolean Sets light intensity to zero beyond lamp distance +PoseBone.has_ik -> is_in_ik_chain: boolean, (read-only) Is part of an IK chain +NEGATE * PoseBone.ik_dof_x -> lock_ik_x: boolean Allow movement around the X axis +NEGATE * PoseBone.ik_dof_y -> lock_ik_y: boolean Allow movement around the Y axis +NEGATE * PoseBone.ik_dof_z -> lock_ik_z: boolean Allow movement around the Z axis PoseBone.ik_limit_x -> lock_ik_x: boolean Limit movement around the X axis PoseBone.ik_limit_y -> lock_ik_y: boolean Limit movement around the Y axis PoseBone.ik_limit_z -> lock_ik_z: boolean Limit movement around the Z axis -TODO * PoseBone.ik_lin_control -> use_ik_lin_control: boolean Apply channel size as IK constraint if stretching is enabled -TODO * PoseBone.ik_rot_control -> use_ik_rot_control: boolean Apply channel rotation as IK constraint +PoseBone.ik_lin_control -> use_ik_lin_control: boolean Apply channel size as IK constraint if stretching is enabled +PoseBone.ik_rot_control -> use_ik_rot_control: boolean Apply channel rotation as IK constraint PoseBone.lock_location -> lock_location: boolean Lock editing of location in the interface PoseBone.lock_rotation -> lock_rotation: boolean Lock editing of rotation in the interface PoseBone.lock_rotation_w -> lock_rotation_w: boolean Lock editing of 'angle' component of four-component rotations in the interface PoseBone.lock_rotations_4d -> lock_rotations_4d: boolean Lock editing of four component rotations by components (instead of as Eulers) PoseBone.lock_scale -> lock_scale: boolean Lock editing of scale in the interface PoseBone.selected -> select: boolean -TODO * PoseTemplateSettings.generate_def_rig -> use_generate_def_rig: boolean Create a copy of the metarig, constrainted by the generated rig +PoseTemplateSettings.generate_def_rig -> use_generate_deform_rig: boolean Create a copy of the metarig, constrainted by the generated rig Property.is_never_none -> is_never_none: boolean, (read-only) True when this value can't be set to None Property.is_readonly -> is_readonly: boolean, (read-only) Property is editable through RNA Property.is_required -> is_required: boolean, (read-only) False when this property is an optional argument in an RNA function -TODO * Property.registered -> is_registered: boolean, (read-only) Property is registered as part of type registration -TODO * Property.registered_optional -> is_registered_optional: boolean, (read-only) Property is optionally registered as part of type registration +Property.registered -> is_registered: boolean, (read-only) Property is registered as part of type registration +Property.registered_optional -> is_registered_optional: boolean, (read-only) Property is optionally registered as part of type registration Property.use_output -> is_output: boolean, (read-only) True when this property is an output value from an RNA function -TODO * PythonConstraint.script_error -> is_script_error: boolean, (read-only) The linked Python script has thrown an error +PythonConstraint.script_error -> has_script_error: boolean, (read-only) The linked Python script has thrown an error PythonConstraint.use_targets -> use_targets: boolean Use the targets indicated in the constraint panel PythonController.debug -> use_debug: boolean Continuously reload the module from disk for editing external modules without restarting RandomActuator.always_true -> use_always_true: boolean Always false or always true -TODO * RaySensor.x_ray_mode -> use_x_ray_mode: boolean Toggle X-Ray option (see through objects that don't have the property) +RaySensor.x_ray_mode -> use_x_ray: boolean See through objects that don't have the property RegionView3D.box_clip -> use_box_clip: boolean Clip objects based on what's visible in other side views RegionView3D.box_preview -> show_synced_view: boolean Sync view position between side views RegionView3D.lock_rotation -> lock_rotation: boolean Lock view rotation in side views -TODO * RenderEngine.bl_postprocess -> use_bl_postprocess: boolean -TODO * RenderEngine.bl_preview -> use_bl_preview: boolean -TODO * RenderLayer.all_z -> all_z: boolean, (read-only) Fill in Z values for solid faces in invisible layers, for masking -TODO * RenderLayer.edge -> edge: boolean, (read-only) Render Edge-enhance in this Layer (only works for Solid faces) -TODO * RenderLayer.enabled -> enabled: boolean, (read-only) Disable or enable the render layer -TODO * RenderLayer.halo -> halo: boolean, (read-only) Render Halos in this Layer (on top of Solid) -TODO * RenderLayer.pass_ao -> pass_ao: boolean, (read-only) Deliver AO pass -TODO * RenderLayer.pass_ao_exclude -> pass_ao_exclude: boolean, (read-only) Exclude AO pass from combined -TODO * RenderLayer.pass_color -> pass_color: boolean, (read-only) Deliver shade-less color pass -TODO * RenderLayer.pass_combined -> pass_combined: boolean, (read-only) Deliver full combined RGBA buffer -TODO * RenderLayer.pass_diffuse -> pass_diffuse: boolean, (read-only) Deliver diffuse pass -TODO * RenderLayer.pass_emit -> pass_emit: boolean, (read-only) Deliver emission pass -TODO * RenderLayer.pass_emit_exclude -> pass_emit_exclude: boolean, (read-only) Exclude emission pass from combined -TODO * RenderLayer.pass_environment -> pass_environment: boolean, (read-only) Deliver environment lighting pass -TODO * RenderLayer.pass_environment_exclude -> pass_environment_exclude: boolean, (read-only) Exclude environment pass from combined -TODO * RenderLayer.pass_indirect -> pass_indirect: boolean, (read-only) Deliver indirect lighting pass -TODO * RenderLayer.pass_indirect_exclude -> pass_indirect_exclude: boolean, (read-only) Exclude indirect pass from combined -TODO * RenderLayer.pass_mist -> pass_mist: boolean, (read-only) Deliver mist factor pass (0.0-1.0) -TODO * RenderLayer.pass_normal -> pass_normal: boolean, (read-only) Deliver normal pass -TODO * RenderLayer.pass_object_index -> pass_object_index: boolean, (read-only) Deliver object index pass -TODO * RenderLayer.pass_reflection -> pass_reflection: boolean, (read-only) Deliver raytraced reflection pass -TODO * RenderLayer.pass_reflection_exclude -> pass_reflection_exclude: boolean, (read-only) Exclude raytraced reflection pass from combined -TODO * RenderLayer.pass_refraction -> pass_refraction: boolean, (read-only) Deliver raytraced refraction pass -TODO * RenderLayer.pass_refraction_exclude -> pass_refraction_exclude: boolean, (read-only) Exclude raytraced refraction pass from combined -TODO * RenderLayer.pass_shadow -> pass_shadow: boolean, (read-only) Deliver shadow pass -TODO * RenderLayer.pass_shadow_exclude -> pass_shadow_exclude: boolean, (read-only) Exclude shadow pass from combined -TODO * RenderLayer.pass_specular -> pass_specular: boolean, (read-only) Deliver specular pass -TODO * RenderLayer.pass_specular_exclude -> pass_specular_exclude: boolean, (read-only) Exclude specular pass from combined -TODO * RenderLayer.pass_uv -> pass_uv: boolean, (read-only) Deliver texture UV pass -TODO * RenderLayer.pass_vector -> pass_vector: boolean, (read-only) Deliver speed vector pass -TODO * RenderLayer.pass_z -> pass_z: boolean, (read-only) Deliver Z values pass -TODO * RenderLayer.sky -> sky: boolean, (read-only) Render Sky in this Layer -TODO * RenderLayer.solid -> solid: boolean, (read-only) Render Solid faces in this Layer -TODO * RenderLayer.strand -> strand: boolean, (read-only) Render Strands in this Layer -TODO * RenderLayer.visible_layers -> visible_layers: boolean, (read-only) Scene layers included in this render layer -TODO * RenderLayer.zmask -> zmask: boolean, (read-only) Only render what's in front of the solid z values -TODO * RenderLayer.zmask_layers -> zmask_layers: boolean, (read-only) Zmask scene layers -TODO * RenderLayer.zmask_negate -> zmask_negate: boolean, (read-only) For Zmask, only render what is behind solid z values instead of in front -TODO * RenderLayer.ztransp -> ztransp: boolean, (read-only) Render Z-Transparent faces in this Layer (On top of Solid and Halos) +RenderEngine.bl_postprocess -> bl_use_postprocess: boolean +RenderEngine.bl_preview -> bl_use_preview: boolean +RenderLayer.all_z -> use_all_z: boolean, (read-only) Fill in Z values for solid faces in invisible layers, for masking +RenderLayer.edge -> use_edge_enhance: boolean, (read-only) Render Edge-enhance in this Layer (only works for Solid faces) +RenderLayer.enabled -> use: boolean, (read-only) Disable or enable the render layer +RenderLayer.halo -> use_halo: boolean, (read-only) Render Halos in this Layer (on top of Solid) +RenderLayer.pass_ao -> use_pass_ambient_occlusion: boolean, (read-only) Deliver AO pass +RenderLayer.pass_ao_exclude -> exclude_ambient_occlusion: boolean, (read-only) Exclude AO pass from combined +RenderLayer.pass_color -> use_pass_color: boolean, (read-only) Deliver shade-less color pass +RenderLayer.pass_combined -> use_pass_combined: boolean, (read-only) Deliver full combined RGBA buffer +RenderLayer.pass_diffuse -> use_pass_diffuse: boolean, (read-only) Deliver diffuse pass +RenderLayer.pass_emit -> use_pass_emit: boolean, (read-only) Deliver emission pass +RenderLayer.pass_emit_exclude -> exclude_emit: boolean, (read-only) Exclude emission pass from combined +RenderLayer.pass_environment -> use_pass_environment: boolean, (read-only) Deliver environment lighting pass +RenderLayer.pass_environment_exclude -> exclude_environment: boolean, (read-only) Exclude environment pass from combined +RenderLayer.pass_indirect -> use_pass_indirect: boolean, (read-only) Deliver indirect lighting pass +RenderLayer.pass_indirect_exclude -> exclude_indirect: boolean, (read-only) Exclude indirect pass from combined +RenderLayer.pass_mist -> use_pass_mist: boolean, (read-only) Deliver mist factor pass (0.0-1.0) +RenderLayer.pass_normal -> use_pass_normal: boolean, (read-only) Deliver normal pass +RenderLayer.pass_object_index -> use_pass_object_index: boolean, (read-only) Deliver object index pass +RenderLayer.pass_reflection -> use_pass_reflection: boolean, (read-only) Deliver raytraced reflection pass +RenderLayer.pass_reflection_exclude -> exclude_reflection: boolean, (read-only) Exclude raytraced reflection pass from combined +RenderLayer.pass_refraction -> use_pass_refraction: boolean, (read-only) Deliver raytraced refraction pass +RenderLayer.pass_refraction_exclude -> exclude_refraction: boolean, (read-only) Exclude raytraced refraction pass from combined +RenderLayer.pass_shadow -> use_pass_shadow: boolean, (read-only) Deliver shadow pass +RenderLayer.pass_shadow_exclude -> exclude_shadow: boolean, (read-only) Exclude shadow pass from combined +RenderLayer.pass_specular -> use_pass_specular: boolean, (read-only) Deliver specular pass +RenderLayer.pass_specular_exclude -> exclude_specular: boolean, (read-only) Exclude specular pass from combined +RenderLayer.pass_uv -> use_pass_uv: boolean, (read-only) Deliver texture UV pass +RenderLayer.pass_vector -> use_pass_vector: boolean, (read-only) Deliver speed vector pass +RenderLayer.pass_z -> use_pass_z: boolean, (read-only) Deliver Z values pass +RenderLayer.sky -> use_sky: boolean, (read-only) Render Sky in this Layer +RenderLayer.solid -> use_solid: boolean, (read-only) Render Solid faces in this Layer +RenderLayer.strand -> use_strand: boolean, (read-only) Render Strands in this Layer +RenderLayer.visible_layers -> layer: boolean, (read-only) Scene layers included in this render layer +RenderLayer.zmask -> use_zmask: boolean, (read-only) Only render what's in front of the solid z values +RenderLayer.zmask_layers -> layer_zmask: boolean, (read-only) Zmask scene layers +RenderLayer.zmask_negate -> invert_zmask: boolean, (read-only) For Zmask, only render what is behind solid z values instead of in front +RenderLayer.ztransp -> use_ztransp: boolean, (read-only) Render Z-Transparent faces in this Layer (On top of Solid and Halos) RenderSettings.backbuf -> use_backbuf: boolean Render backbuffer image -TODO * RenderSettings.bake_active -> use_bake_active: boolean Bake shading on the surface of selected objects to the active object +RenderSettings.bake_active -> use_bake_active_to_selected: boolean Bake shading on the surface of selected objects to the active object RenderSettings.bake_clear -> use_bake_clear: boolean Clear Images before baking -TODO * RenderSettings.bake_enable_aa -> use_bake_enable_aa: boolean Enables Anti-aliasing +RenderSettings.bake_enable_aa -> use_bake_antialiasing: boolean Enables Anti-aliasing RenderSettings.bake_normalized -> use_bake_normalized: boolean With displacement normalize to the distance, with ambient occlusion normalize without using material settings -TODO * RenderSettings.cineon_log -> use_cineon_log: boolean Convert to logarithmic color space +RenderSettings.cineon_log -> use_cineon_log: boolean Convert to logarithmic color space RenderSettings.color_management -> use_color_management: boolean Use color profiles and gamma corrected imaging pipeline RenderSettings.crop_to_border -> use_crop_to_border: boolean Crop the rendered frame to the defined border size -TODO * RenderSettings.edge -> edge: boolean use_Create a toon outline around the edges of geometry +RenderSettings.edge -> use_edge_enhance: boolean use_Create a toon outline around the edges of geometry RenderSettings.exr_half -> use_exr_half: boolean Use 16 bit floats instead of 32 bit floats per channel RenderSettings.exr_preview -> use_exr_preview: boolean When rendering animations, save JPG preview images in same directory RenderSettings.exr_zbuf -> use_exr_zbuf: boolean Save the z-depth per pixel (32 bit unsigned int zbuffer) @@ -907,9 +901,9 @@ RenderSettings.full_sample -> use_full_sample: boolean Save for every anti RenderSettings.is_movie_format -> is_movie_format: boolean, (read-only) When true the format is a movie RenderSettings.jpeg2k_ycc -> use_jpeg2k_ycc: boolean Save luminance-chrominance-chrominance channels instead of RGB colors RenderSettings.motion_blur -> use_motion_blur: boolean Use multi-sampled 3D scene motion blur -TODO * RenderSettings.multiple_engines -> multiple_engines: boolean, (read-only) More than one rendering engine is available -TODO * RenderSettings.render_antialiasing -> use_render_antialiasing: boolean Render and combine multiple samples per pixel to prevent jagged edges -TODO doubled?* RenderSettings.render_stamp -> render_stamp: boolean Render the stamp info text in the rendered image +RenderSettings.multiple_engines -> has_multiple_engines: boolean, (read-only) More than one rendering engine is available +RenderSettings.render_antialiasing -> use_antialiasing: boolean Render and combine multiple samples per pixel to prevent jagged edges +RenderSettings.render_stamp -> use_stamp: boolean Render the stamp info text in the rendered image RenderSettings.save_buffers -> use_save_buffers: boolean Save tiles for all RenderLayers and SceneNodes to files in the temp directory (saves memory, required for Full Sample) RenderSettings.simplify_triangulate -> use_simplify_triangulate: boolean Disables non-planer quads being triangulated RenderSettings.single_layer -> use_single_layer: boolean Only render the active layer @@ -923,7 +917,7 @@ RenderSettings.stamp_render_time -> use_stamp_render_time: boolean Include RenderSettings.stamp_scene -> use_stamp_scene: boolean Include the name of the active scene in image metadata RenderSettings.stamp_sequencer_strip -> use_stamp_sequencer_strip: boolean Include the name of the foreground sequence strip in image metadata RenderSettings.stamp_time -> use_stamp_time: boolean Include the render frame as HH:MM:SS.FF in image metadata -TODO * RenderSettings.tiff_bit -> use_tiff_bit: boolean Save TIFF with 16 bits per channel +RenderSettings.tiff_bit -> use_tiff_16bit: boolean Save TIFF with 16 bits per channel RenderSettings.use_border -> use_border: boolean Render a user-defined border region, within the frame size. Note, this disables save_buffers and full_sample RenderSettings.use_compositing -> use_compositing: boolean Process the render result through the compositing pipeline, if compositing nodes are enabled RenderSettings.use_envmaps -> use_envmaps: boolean Calculate environment maps while rendering @@ -942,23 +936,23 @@ RenderSettings.use_shadows -> use_shadows: boolean Calculate shadows while RenderSettings.use_simplify -> use_simplify: boolean Enable simplification of scene for quicker preview renders RenderSettings.use_sss -> use_sss: boolean Calculate sub-surface scattering in materials rendering RenderSettings.use_textures -> use_textures: boolean Use textures to affect material properties -TODO * RigidBodyJointConstraint.disable_linked_collision -> use_disable_linked_collision: boolean Disable collision between linked bodies +NEGATE * RigidBodyJointConstraint.disable_linked_collision -> use_linked_collision: boolean Disable collision between linked bodies RigidBodyJointConstraint.draw_pivot -> show_pivot: boolean Display the pivot point and rotation in 3D view Scene.frame_drop -> use_frame_drop: boolean Play back dropping frames if frame display is too slow Scene.layers -> layer: boolean Layers visible when rendering the scene -TODO * Scene.mute_audio -> mute_audio: boolean Play back of audio from Sequence Editor will be muted -TODO * Scene.nla_tweakmode_on -> is_nla_tweakmode_on: boolean, (read-only) Indicates whether there is any action referenced by NLA being edited. Strictly read-only -TODO * Scene.pov_radio_always_sample -> use_pov_radio_always_sample: boolean Only use the data from the pretrace step and not gather any new samples during the final radiosity pass -TODO * Scene.pov_radio_display_advanced -> show_pov_radio_advanced: boolean Show advanced options -TODO * Scene.pov_radio_enable -> use_pov_radio_enable: boolean Enable povrays radiosity calculation -TODO * Scene.pov_radio_media -> use_pov_radio_media: boolean Radiosity estimation can be affected by media -TODO * Scene.pov_radio_normal -> use_pov_radio_normal: boolean Radiosity estimation can be affected by normals -TODO * Scene.scrub_audio -> use_scrub_audio: boolean Play audio from Sequence Editor while scrubbing -TODO * Scene.sync_audio -> use_sync_audio: boolean Play back and sync with audio clock, dropping frames if frame display is too slow +Scene.mute_audio -> mute_audio: boolean Play back of audio from Sequence Editor will be muted +Scene.nla_tweakmode_on -> use_nla_tweakmode: boolean, (read-only) Indicates whether there is any action referenced by NLA being edited. Strictly read-only +Scene.pov_radio_always_sample -> use_pov_radio_always_sample: boolean Only use the data from the pretrace step and not gather any new samples during the final radiosity pass +Scene.pov_radio_display_advanced -> show_pov_radio_advanced: boolean Show advanced options +Scene.pov_radio_enable -> use_pov_radio: boolean Enable povrays radiosity calculation +Scene.pov_radio_media -> use_pov_radio_media: boolean Radiosity estimation can be affected by media +Scene.pov_radio_normal -> use_pov_radio_normal: boolean Radiosity estimation can be affected by normals +Scene.scrub_audio -> use_audio_scrub: boolean Play audio from Sequence Editor while scrubbing +Scene.sync_audio -> use_audio_sync: boolean Play back and sync with audio clock, dropping frames if frame display is too slow Scene.use_gravity -> use_gravity: boolean Use global gravity for all dynamics Scene.use_nodes -> use_nodes: boolean Enable the compositing node tree Scene.use_preview_range -> use_preview_range: boolean Use an alternative start/end frame for UI playback, rather than the scene start/end frame -TODO * SceneGameData.activity_culling -> use_activity_culling: boolean Activity culling is enabled +SceneGameData.activity_culling -> use_activity_culling: boolean Activity culling is enabled SceneGameData.auto_start -> use_auto_start: boolean Automatically start game at load time SceneGameData.fullscreen -> show_fullscreen: boolean Starts player in a new fullscreen display SceneGameData.glsl_extra_textures -> use_glsl_extra_textures: boolean Use extra textures like normal or specular maps for GLSL rendering @@ -974,52 +968,52 @@ SceneGameData.use_animation_record -> use_animation_record: boolean Record SceneGameData.use_deprecation_warnings -> use_deprecation_warnings: boolean Print warnings when using deprecated features in the python API SceneGameData.use_display_lists -> use_display_lists: boolean Use display lists to speed up rendering by keeping geometry on the GPU SceneGameData.use_frame_rate -> use_frame_rate: boolean Respect the frame rate rather than rendering as many frames as possible -TODO * SceneGameData.use_occlusion_culling -> use_occlusion_culling: boolean Use optimized Bullet DBVT tree for view frustum and occlusion culling +SceneGameData.use_occlusion_culling -> use_occlusion_culling: boolean Use optimized Bullet DBVT tree for view frustum and occlusion culling SceneRenderLayer.all_z -> use_all_z: boolean Fill in Z values for solid faces in invisible layers, for masking -SceneRenderLayer.edge -> use_edge: boolean Render Edge-enhance in this Layer (only works for Solid faces) -TODO * SceneRenderLayer.enabled -> enabled: boolean Disable or enable the render layer +SceneRenderLayer.edge -> use_edge_enhance: boolean Render Edge-enhance in this Layer (only works for Solid faces) +SceneRenderLayer.enabled -> use: boolean Disable or enable the render layer SceneRenderLayer.halo -> use_halo: boolean Render Halos in this Layer (on top of Solid) -TODO * SceneRenderLayer.pass_ao -> use_pass_ao: boolean Deliver AO pass -TODO * SceneRenderLayer.pass_ao_exclude -> use_pass_ao_exclude: boolean Exclude AO pass from combined -TODO * SceneRenderLayer.pass_color -> use_pass_color: boolean Deliver shade-less color pass -TODO * SceneRenderLayer.pass_combined -> use_pass_combined: boolean Deliver full combined RGBA buffer -TODO * SceneRenderLayer.pass_diffuse -> use_pass_diffuse: boolean Deliver diffuse pass -TODO * SceneRenderLayer.pass_emit -> use_pass_emit: boolean Deliver emission pass -TODO * SceneRenderLayer.pass_emit_exclude -> use_pass_emit_exclude: boolean Exclude emission pass from combined -TODO * SceneRenderLayer.pass_environment -> use_pass_environment: boolean Deliver environment lighting pass -TODO * SceneRenderLayer.pass_environment_exclude -> use_pass_environment_exclude: boolean Exclude environment pass from combined -TODO * SceneRenderLayer.pass_indirect -> use_pass_indirect: boolean Deliver indirect lighting pass -TODO * SceneRenderLayer.pass_indirect_exclude -> use_pass_indirect_exclude: boolean Exclude indirect pass from combined -TODO * SceneRenderLayer.pass_mist -> use_pass_mist: boolean Deliver mist factor pass (0.0-1.0) -TODO * SceneRenderLayer.pass_normal -> use_pass_normal: boolean Deliver normal pass -TODO * SceneRenderLayer.pass_object_index -> use_pass_object_index: boolean Deliver object index pass -TODO * SceneRenderLayer.pass_reflection -> use_pass_reflection: boolean Deliver raytraced reflection pass -TODO * SceneRenderLayer.pass_reflection_exclude -> use_pass_reflection_exclude: boolean Exclude raytraced reflection pass from combined -TODO * SceneRenderLayer.pass_refraction -> use_pass_refraction: boolean Deliver raytraced refraction pass -TODO * SceneRenderLayer.pass_refraction_exclude -> use_pass_refraction_exclude: boolean Exclude raytraced refraction pass from combined -TODO * SceneRenderLayer.pass_shadow -> use_pass_shadow: boolean Deliver shadow pass -TODO * SceneRenderLayer.pass_shadow_exclude -> use_pass_shadow_exclude: boolean Exclude shadow pass from combined -TODO * SceneRenderLayer.pass_specular -> use_pass_specular: boolean Deliver specular pass -TODO * SceneRenderLayer.pass_specular_exclude -> use_pass_specular_exclude: boolean Exclude specular pass from combined -TODO * SceneRenderLayer.pass_uv -> use_pass_uv: boolean Deliver texture UV pass -TODO * SceneRenderLayer.pass_vector -> use_pass_vector: boolean Deliver speed vector pass -TODO * SceneRenderLayer.pass_z -> use_pass_z: boolean Deliver Z values pass -TODO * SceneRenderLayer.sky -> use_sky: boolean Render Sky in this Layer -TODO * SceneRenderLayer.solid -> use_solid: boolean Render Solid faces in this Layer -TODO * SceneRenderLayer.strand -> use_strand: boolean Render Strands in this Layer -TODO * SceneRenderLayer.visible_layers -> visible_layers: boolean Scene layers included in this render layer -TODO * SceneRenderLayer.zmask -> use_zmask: boolean Only render what's in front of the solid z values -TODO * SceneRenderLayer.zmask_layers -> use_zmask_layers: boolean Zmask scene layers -TODO * SceneRenderLayer.zmask_negate -> use_zmask_negate: boolean For Zmask, only render what is behind solid z values instead of in front -TODO * SceneRenderLayer.ztransp -> use_ztransp: boolean Render Z-Transparent faces in this Layer (On top of Solid and Halos) -TODO * SceneSequence.convert_float -> convert_float: boolean Convert input to float data +SceneRenderLayer.pass_ao -> use_pass_ambient_occlusion: boolean Deliver AO pass +SceneRenderLayer.pass_ao_exclude -> exclude_ambient_occlusion: boolean Exclude AO pass from combined +SceneRenderLayer.pass_color -> use_pass_color: boolean Deliver shade-less color pass +SceneRenderLayer.pass_combined -> use_pass_combined: boolean Deliver full combined RGBA buffer +SceneRenderLayer.pass_diffuse -> use_pass_diffuse: boolean Deliver diffuse pass +SceneRenderLayer.pass_emit -> use_pass_emit: boolean Deliver emission pass +SceneRenderLayer.pass_emit_exclude -> exclude_emit: boolean Exclude emission pass from combined +SceneRenderLayer.pass_environment -> use_pass_environment: boolean Deliver environment lighting pass +SceneRenderLayer.pass_environment_exclude -> exclude_environment: boolean Exclude environment pass from combined +SceneRenderLayer.pass_indirect -> use_pass_indirect: boolean Deliver indirect lighting pass +SceneRenderLayer.pass_indirect_exclude -> exclude_indirect: boolean Exclude indirect pass from combined +SceneRenderLayer.pass_mist -> use_pass_mist: boolean Deliver mist factor pass (0.0-1.0) +SceneRenderLayer.pass_normal -> use_pass_normal: boolean Deliver normal pass +SceneRenderLayer.pass_object_index -> use_pass_object_index: boolean Deliver object index pass +SceneRenderLayer.pass_reflection -> use_pass_reflection: boolean Deliver raytraced reflection pass +SceneRenderLayer.pass_reflection_exclude -> exclude_reflection: boolean Exclude raytraced reflection pass from combined +SceneRenderLayer.pass_refraction -> use_pass_refraction: boolean Deliver raytraced refraction pass +SceneRenderLayer.pass_refraction_exclude -> exclude_refraction: boolean Exclude raytraced refraction pass from combined +SceneRenderLayer.pass_shadow -> use_pass_shadow: boolean Deliver shadow pass +SceneRenderLayer.pass_shadow_exclude -> exclude_shadow: boolean Exclude shadow pass from combined +SceneRenderLayer.pass_specular -> use_pass_specular: boolean Deliver specular pass +SceneRenderLayer.pass_specular_exclude -> exclude_specular: boolean Exclude specular pass from combined +SceneRenderLayer.pass_uv -> use_pass_uv: boolean Deliver texture UV pass +SceneRenderLayer.pass_vector -> use_pass_vector: boolean Deliver speed vector pass +SceneRenderLayer.pass_z -> use_pass_z: boolean Deliver Z values pass +SceneRenderLayer.sky -> use_sky: boolean Render Sky in this Layer +SceneRenderLayer.solid -> use_solid: boolean Render Solid faces in this Layer +SceneRenderLayer.strand -> use_strand: boolean Render Strands in this Layer +SceneRenderLayer.visible_layers -> layer: boolean Scene layers included in this render layer +SceneRenderLayer.zmask -> use_zmask: boolean Only render what's in front of the solid z values +SceneRenderLayer.zmask_layers -> layer_zmask: boolean Zmask scene layers +SceneRenderLayer.zmask_negate -> invert_zmask: boolean For Zmask, only render what is behind solid z values instead of in front +SceneRenderLayer.ztransp -> use_ztransp: boolean Render Z-Transparent faces in this Layer (On top of Solid and Halos) +SceneSequence.convert_float -> use_float: boolean Convert input to float data SceneSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields SceneSequence.flip_x -> use_flip_x: boolean Flip on the X axis SceneSequence.flip_y -> use_flip_y: boolean Flip on the Y axis -TODO * SceneSequence.premultiply -> premultiply: boolean Convert RGB from key alpha to premultiplied alpha +SceneSequence.premultiply -> use_premultiply: boolean Convert RGB from key alpha to premultiplied alpha SceneSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean Use a custom directory to store data SceneSequence.proxy_custom_file -> use_proxy_custom_file: boolean Use a custom file to read proxy data from -TODO * SceneSequence.reverse_frames -> use_frame_reverse: boolean Reverse frame order +SceneSequence.reverse_frames -> use_reverse_frames: boolean Reverse frame order SceneSequence.use_color_balance -> use_color_balance: boolean (3-Way color correction) on input SceneSequence.use_crop -> use_crop: boolean Crop image before processing SceneSequence.use_proxy -> use_proxy: boolean Use a preview proxy for this strip @@ -1038,50 +1032,47 @@ Sculpt.symmetry_y -> use_symmetry_y: boolean Mirror brush across the Y axi Sculpt.symmetry_z -> use_symmetry_z: boolean Mirror brush across the Z axis Sensor.expanded -> show_expanded: boolean Set sensor expanded in the user interface Sensor.invert -> invert: boolean Invert the level(output) of this sensor -TODO * Sensor.level -> level: boolean Level detector, trigger controllers of new states(only applicable upon logic state transition) +Sensor.level -> use_level: boolean Level detector, trigger controllers of new states (only applicable upon logic state transition) Sensor.pulse_false_level -> use_pulse_false_level: boolean Activate FALSE level triggering (pulse mode) Sensor.pulse_true_level -> use_pulse_true_level: boolean Activate TRUE level triggering (pulse mode) Sensor.tap -> use_tap: boolean Trigger controllers only for an instant, even while the sensor remains true -TODO * Sequence.frame_locked -> frame_locked: boolean Lock the animation curve to the global frame counter +Sequence.frame_locked -> use_frame_lock: boolean Lock the animation curve to the global frame counter Sequence.left_handle_selected -> select_left_handle: boolean Sequence.lock -> lock: boolean Lock strip so that it can't be transformed Sequence.mute -> mute: boolean Sequence.right_handle_selected -> select_right_handle: boolean Sequence.selected -> select: boolean -TODO * Sequence.use_effect_default_fade -> use_effect_default_fade: boolean Fade effect using the built-in default (usually make transition as long as effect strip) +Sequence.use_effect_default_fade -> use_default_fade: boolean Fade effect using the built-in default (usually make transition as long as effect strip) SequenceColorBalance.inverse_gain -> invert_gain: boolean SequenceColorBalance.inverse_gamma -> invert_gamma: boolean SequenceColorBalance.inverse_lift -> invert_lift: boolean ShaderNodeExtendedMaterial.diffuse -> use_diffuse: boolean Material Node outputs Diffuse ShaderNodeExtendedMaterial.invert_normal -> invert_normal: boolean Material Node uses inverted normal ShaderNodeExtendedMaterial.specular -> use_specular: boolean Material Node outputs Specular -TODO * ShaderNodeMapping.clamp_maximum -> use_clamp_to_max: boolean Clamp the output coordinate to a maximum value -TODO * ShaderNodeMapping.clamp_minimum -> use_clamp_to_min: boolean Clamp the output coordinate to a minimum value +ShaderNodeMapping.clamp_maximum -> use_max: boolean Clamp the output coordinate to a maximum value +ShaderNodeMapping.clamp_minimum -> use_min: boolean Clamp the output coordinate to a minimum value ShaderNodeMaterial.diffuse -> use_diffuse: boolean Material Node outputs Diffuse ShaderNodeMaterial.invert_normal -> invert_normal: boolean Material Node uses inverted normal ShaderNodeMaterial.specular -> use_specular: boolean Material Node outputs Specular ShaderNodeMixRGB.alpha -> use_alpha: boolean Include alpha of second input in this operation -TODO * ShapeActionActuator.continue_last_frame -> use_continue_last_frame: boolean Restore last frame when switching on/off, otherwise play from the start each time +ShapeActionActuator.continue_last_frame -> use_continue_last_frame: boolean Restore last frame when switching on/off, otherwise play from the start each time ShapeKey.mute -> mute: boolean Mute this shape key -TODO see below * ShrinkwrapConstraint.use_x -> use_x: boolean Projection over X Axis -TODO see below* ShrinkwrapConstraint.use_y -> use_y: boolean Projection over Y Axis -TODO see below* ShrinkwrapConstraint.use_z -> use_z: boolean Projection over Z Axis ShrinkwrapModifier.cull_back_faces -> use_cull_back_faces: boolean Stop vertices from projecting to a back face on the target ShrinkwrapModifier.cull_front_faces -> use_cull_front_faces: boolean Stop vertices from projecting to a front face on the target ShrinkwrapModifier.keep_above_surface -> use_keep_above_surface: boolean -TODO * ShrinkwrapModifier.negative -> negative: boolean Allow vertices to move in the negative direction of axis -TODO * ShrinkwrapModifier.positive -> positive: boolean Allow vertices to move in the positive direction of axis -ShrinkwrapModifier.x -> use_x: boolean -ShrinkwrapModifier.y -> use_y: boolean -ShrinkwrapModifier.z -> use_z: boolean -TODO * SimpleDeformModifier.lock_x_axis -> lock_axis_x: boolean -TODO * SimpleDeformModifier.lock_y_axis -> lock_axis_y: boolean +ShrinkwrapModifier.negative -> use_negative_direction: boolean Allow vertices to move in the negative direction of axis +ShrinkwrapModifier.positive -> use_positive_direction: boolean Allow vertices to move in the positive direction of axis +ShrinkwrapModifier.x -> use_project_x: boolean +ShrinkwrapModifier.y -> use_project_y: boolean +ShrinkwrapModifier.z -> use_project_z: boolean +SimpleDeformModifier.lock_x_axis -> lock_x: boolean +SimpleDeformModifier.lock_y_axis -> lock_y: boolean SimpleDeformModifier.relative -> use_relative: boolean Sets the origin of deform space to be relative to the object SmokeDomainSettings.dissolve_smoke -> use_dissolve_smoke: boolean Enable smoke to disappear over time SmokeDomainSettings.dissolve_smoke_log -> use_dissolve_smoke_log: boolean Using 1/x -TODO * SmokeDomainSettings.highres -> use_highres: boolean Enable high resolution (using amplification) +SmokeDomainSettings.highres -> use_high_resolution: boolean Enable high resolution (using amplification) SmokeDomainSettings.initial_velocity -> use_initial_velocity: boolean Smoke inherits it's velocity from the emitter particle -TODO * SmokeDomainSettings.viewhighres -> show_highres: boolean Show high resolution (using amplification) +SmokeDomainSettings.viewhighres -> show_high_resolution: boolean Show high resolution (using amplification) NEGATE * SmokeFlowSettings.outflow -> use_outflow: boolean Deletes smoke from simulation SmoothModifier.x -> use_x: boolean SmoothModifier.y -> use_y: boolean @@ -1096,41 +1087,41 @@ SoftBodySettings.self_collision -> use_self_collision: boolean Enable naiv SoftBodySettings.stiff_quads -> use_stiff_quads: boolean Adds diagonal springs on 4-gons SoftBodySettings.use_edges -> use_edges: boolean Use Edges as springs SoftBodySettings.use_goal -> use_goal: boolean Define forces for vertices to stick to animated position -TODO * SolidifyModifier.invert -> invert_vertex_groups_influence: boolean Invert the vertex group influence +SolidifyModifier.invert -> invert_vertex_group: boolean Invert the vertex group influence SolidifyModifier.use_even_offset -> use_even_offset: boolean Maintain thickness by adjusting for sharp corners (slow, disable when not needed) SolidifyModifier.use_quality_normals -> use_quality_normals: boolean Calculate normals which result in more even thickness (slow, disable when not needed) SolidifyModifier.use_rim -> use_rim: boolean Create edge loops between the inner and outer surfaces on face edges (slow, disable when not needed) SolidifyModifier.use_rim_material -> use_rim_material: boolean Use in the next material for rim faces -TODO * Sound.caching -> use_ram_cache: boolean The sound file is decoded and loaded into RAM -TODO * SoundActuator.enable_sound_3d -> use_sound_3d: boolean Enable/Disable 3D Sound +Sound.caching -> use_ram_cache: boolean The sound file is decoded and loaded into RAM +SoundActuator.enable_sound_3d -> use_3d_sound: boolean Enable/Disable 3D Sound SpaceConsole.show_report_debug -> show_report_debug: boolean Display debug reporting info SpaceConsole.show_report_error -> show_report_error: boolean Display error text SpaceConsole.show_report_info -> show_report_info: boolean Display general information SpaceConsole.show_report_operator -> show_report_operator: boolean Display the operator log SpaceConsole.show_report_warn -> show_report_warning: boolean Display warnings -TODO * SpaceDopeSheetEditor.automerge_keyframes -> show_automerge_keyframes: boolean Show handles of Bezier control points -TODO * SpaceDopeSheetEditor.realtime_updates -> use_realtime_updates: boolean When transforming keyframes, changes to the animation data are flushed to other views -TODO * SpaceDopeSheetEditor.show_cframe_indicator -> show_cframe_indicator: boolean Show frame number beside the current frame indicator line +SpaceDopeSheetEditor.automerge_keyframes -> use_automerge_keyframes: boolean Automatically merge nearby keyframes +SpaceDopeSheetEditor.realtime_updates -> use_realtime_updates: boolean When transforming keyframes, changes to the animation data are flushed to other views +SpaceDopeSheetEditor.show_cframe_indicator -> show_frame_indicator: boolean Show frame number beside the current frame indicator line SpaceDopeSheetEditor.show_seconds -> show_seconds: boolean, (read-only) Show timing in seconds not frames SpaceDopeSheetEditor.show_sliders -> show_sliders: boolean Show sliders beside F-Curve channels SpaceDopeSheetEditor.use_marker_sync -> use_marker_sync: boolean Sync Markers with keyframe edits -SpaceGraphEditor.automerge_keyframes -> show_automerge_keyframes: boolean Show handles of Bezier control points -TODO * SpaceGraphEditor.has_ghost_curves -> has_ghost_curves: boolean Graph Editor instance has some ghost curves stored +SpaceGraphEditor.automerge_keyframes -> use_automerge_keyframes: boolean Automatically merge nearby keyframes +SpaceGraphEditor.has_ghost_curves -> has_ghost_curves: boolean Graph Editor instance has some ghost curves stored SpaceGraphEditor.only_selected_curves_handles -> use_only_selected_curves_handles: boolean Only keyframes of selected F-Curves are visible and editable SpaceGraphEditor.only_selected_keyframe_handles -> use_only_selected_keyframe_handles: boolean Only show and edit handles of selected keyframes -TODO * SpaceGraphEditor.realtime_updates -> use_realtime_updates: boolean When transforming keyframes, changes to the animation data are flushed to other views -TODO * SpaceGraphEditor.show_cframe_indicator -> show_cframe_indicator: boolean Show frame number beside the current frame indicator line +SpaceGraphEditor.realtime_updates -> use_realtime_updates: boolean When transforming keyframes, changes to the animation data are flushed to other views +SpaceGraphEditor.show_cframe_indicator -> show_frame_indicator: boolean Show frame number beside the current frame indicator line SpaceGraphEditor.show_cursor -> show_cursor: boolean Show 2D cursor SpaceGraphEditor.show_handles -> show_handles: boolean Show handles of Bezier control points SpaceGraphEditor.show_seconds -> show_seconds: boolean, (read-only) Show timing in seconds not frames SpaceGraphEditor.show_sliders -> show_sliders: boolean Show sliders beside F-Curve channels SpaceImageEditor.draw_repeated -> show_repeated: boolean Draw the image repeated outside of the main view SpaceImageEditor.image_painting -> use_image_paint: boolean Enable image painting mode -TODO * SpaceImageEditor.image_pin -> show_image_pin: boolean Display current image regardless of object selection +SpaceImageEditor.image_pin -> use_image_pin: boolean Display current image regardless of object selection SpaceImageEditor.show_paint -> show_paint: boolean, (read-only) Show paint related properties SpaceImageEditor.show_render -> show_render: boolean, (read-only) Show render related properties SpaceImageEditor.show_uvedit -> show_uvedit: boolean, (read-only) Show UV editing related properties -TODO * SpaceImageEditor.update_automatically -> use_update_automatically: boolean Update other affected window spaces automatically to reflect changes during interactive operations such as transform +SpaceImageEditor.update_automatically -> use_realtime_updates: boolean Update other affected window spaces automatically to reflect changes during interactive operations such as transform SpaceImageEditor.use_grease_pencil -> use_grease_pencil: boolean Display and edit the grease pencil freehand annotations overlay SpaceLogicEditor.actuators_show_active_objects -> show_actuators_active_objects: boolean Show actuators of active object SpaceLogicEditor.actuators_show_active_states -> show_actuators_active_states: boolean Show only actuators connected to active states @@ -1143,8 +1134,8 @@ SpaceLogicEditor.sensors_show_active_objects -> show_sensors_active_objects: SpaceLogicEditor.sensors_show_active_states -> show_sensors_active_states: boolean Show only sensors connected to active states SpaceLogicEditor.sensors_show_linked_controller -> show_sensors_linked_controller: boolean Show linked objects to the controller SpaceLogicEditor.sensors_show_selected_objects -> show_sensors_selected_objects: boolean Show sensors of all selected objects -TODO * SpaceNLA.realtime_updates -> use_realtime_updates: boolean When transforming strips, changes to the animation data are flushed to other views -TODO * SpaceNLA.show_cframe_indicator -> show_cframe_indicator: boolean Show frame number beside the current frame indicator line +SpaceNLA.realtime_updates -> use_realtime_updates: boolean When transforming strips, changes to the animation data are flushed to other views +SpaceNLA.show_cframe_indicator -> show_frame_indicator: boolean Show frame number beside the current frame indicator line SpaceNLA.show_seconds -> show_seconds: boolean, (read-only) Show timing in seconds not frames SpaceNLA.show_strip_curves -> show_strip_curves: boolean Show influence curves on strips SpaceNodeEditor.backdrop -> show_backdrop: boolean Use active Viewer Node output as backdrop for compositing nodes @@ -1153,28 +1144,28 @@ SpaceOutliner.match_complete -> use_match_complete: boolean Only use compl SpaceOutliner.show_restriction_columns -> show_restriction_columns: boolean Show column SpaceProperties.brush_texture -> show_brush_texture: boolean Show brush textures SpaceProperties.use_pin_id -> use_pin_id: boolean Use the pinned context -TODO * SpaceSequenceEditor.draw_frames -> draw_frames: boolean Draw frames rather than seconds -TODO * SpaceSequenceEditor.draw_safe_margin -> draw_safe_margin: boolean Draw title safe margins in preview -TODO * SpaceSequenceEditor.separate_color_preview -> separate_color_preview: boolean Separate color channels in preview -TODO * SpaceSequenceEditor.show_cframe_indicator -> show_cframe_indicator: boolean Show frame number beside the current frame indicator line -TODO * SpaceSequenceEditor.use_grease_pencil -> use_grease_pencil: boolean Display and edit the grease pencil freehand annotations overlay -TODO * SpaceSequenceEditor.use_marker_sync -> use_marker_sync: boolean Transform markers as well as strips +SpaceSequenceEditor.draw_frames -> show_frames: boolean Draw frames rather than seconds +SpaceSequenceEditor.draw_safe_margin -> show_safe_margin: boolean Draw title safe margins in preview +SpaceSequenceEditor.separate_color_preview -> show_separate_color: boolean Separate color channels in preview +SpaceSequenceEditor.show_cframe_indicator -> show_frame_indicator: boolean Show frame number beside the current frame indicator line +SpaceSequenceEditor.use_grease_pencil -> use_grease_pencil: boolean Display and edit the grease pencil freehand annotations overlay +SpaceSequenceEditor.use_marker_sync -> use_marker_sync: boolean Transform markers as well as strips SpaceTextEditor.find_all -> use_find_all: boolean Search in all text datablocks, instead of only the active one SpaceTextEditor.find_wrap -> use_find_wrap: boolean Search again from the start of the file when reaching the end SpaceTextEditor.line_numbers -> show_line_numbers: boolean Show line numbers next to the text SpaceTextEditor.live_edit -> use_live_edit: boolean Run python while editing SpaceTextEditor.overwrite -> use_overwrite: boolean Overwrite characters when typing rather than inserting them -TODO * SpaceTextEditor.syntax_highlight -> use_syntax_highlight: boolean Syntax highlight for scripting -TODO * SpaceTextEditor.word_wrap -> use_word_wrap: boolean Wrap words if there is not enough horizontal space +SpaceTextEditor.syntax_highlight -> show_syntax_highlight: boolean Syntax highlight for scripting +SpaceTextEditor.word_wrap -> use_word_wrap: boolean Wrap words if there is not enough horizontal space SpaceTimeline.only_selected -> show_only_selected: boolean Show keyframes for active Object and/or its selected channels only -SpaceTimeline.play_all_3d -> use_play_all_3d: boolean -TODO * SpaceTimeline.play_anim -> use_play_anim: boolean -SpaceTimeline.play_buttons -> use_play_buttons: boolean -SpaceTimeline.play_image -> use_play_image: boolean -SpaceTimeline.play_nodes -> use_play_nodes: boolean -SpaceTimeline.play_sequencer -> use_play_sequencer: boolean -SpaceTimeline.play_top_left -> use_play_top_left: boolean -TODO * SpaceTimeline.show_cframe_indicator -> show_cframe_indicator: boolean Show frame number beside the current frame indicator line +SpaceTimeline.play_all_3d -> use_play_3d_editors: boolean +SpaceTimeline.play_anim -> use_play_animation_editors: boolean +SpaceTimeline.play_buttons -> use_play_properties_editors: boolean +SpaceTimeline.play_image -> use_play_image_editors: boolean +SpaceTimeline.play_nodes -> use_play_node_editors: boolean +SpaceTimeline.play_sequencer -> use_play_sequence_editors: boolean +SpaceTimeline.play_top_left -> use_play_top_left_3d_editor: boolean +SpaceTimeline.show_cframe_indicator -> show_frame_indicator: boolean Show frame number beside the current frame indicator line SpaceUVEditor.constrain_to_image_bounds -> use_constrain_to_image_bounds: boolean Constraint to stay within the image bounds while editing SpaceUVEditor.draw_modified_edges -> show_modified_edges: boolean Draw edges after modifiers are applied SpaceUVEditor.draw_other_objects -> show_other_objects: boolean Draw other selected objects that share the same image @@ -1186,22 +1177,22 @@ SpaceUVEditor.snap_to_pixels -> use_snap_to_pixels: boolean Snap UVs to pi SpaceView3D.all_object_origins -> show_all_objects_origin: boolean Show the object origin center dot for all (selected and unselected) objects SpaceView3D.display_background_images -> show_background_images: boolean Display reference images behind objects in the 3D View SpaceView3D.display_floor -> show_floor: boolean Show the ground plane grid in perspective view -TODO * SpaceView3D.display_render_override -> show_render_override: boolean Display only objects which will be rendered +SpaceView3D.display_render_override -> show_only_render: boolean Display only objects which will be rendered SpaceView3D.display_x_axis -> show_axis_x: boolean Show the X axis line in perspective view SpaceView3D.display_y_axis -> show_axis_y: boolean Show the Y axis line in perspective view SpaceView3D.display_z_axis -> show_axis_z: boolean Show the Z axis line in perspective view -TODO * SpaceView3D.layers -> layer: boolean Layers visible in this 3D View +SpaceView3D.layers -> layer: boolean Layers visible in this 3D View SpaceView3D.lock_camera_and_layers -> lock_camera_and_layers: boolean Use the scene's active camera and layers in this view, rather than local layers SpaceView3D.manipulator -> use_manipulator: boolean Use a 3D manipulator widget for controlling transforms SpaceView3D.manipulator_rotate -> use_manipulator_rotate: boolean Use the manipulator for rotation transformations SpaceView3D.manipulator_scale -> use_manipulator_scale: boolean Use the manipulator for scale transformations SpaceView3D.manipulator_translate -> use_manipulator_translate: boolean Use the manipulator for movement transformations -TODO * SpaceView3D.occlude_geometry -> use_occlude_geometry: boolean Limit selection to visible (clipped with depth buffer) +SpaceView3D.occlude_geometry -> use_occlude_geometry: boolean Limit selection to visible (clipped with depth buffer) SpaceView3D.outline_selected -> show_outline_selected: boolean Show an outline highlight around selected objects in non-wireframe views SpaceView3D.pivot_point_align -> use_pivot_point_align: boolean Manipulate object centers only SpaceView3D.relationship_lines -> show_relationship_lines: boolean Show dashed lines indicating parent or constraint relationships SpaceView3D.textured_solid -> show_textured_solid: boolean Display face-assigned textures in solid view -TODO * SpaceView3D.used_layers -> layers_used: boolean, (read-only) Layers that contain something +SpaceView3D.used_layers -> layer_used: boolean, (read-only) Layers that contain something SpeedControlSequence.curve_compress_y -> use_curve_compress_y: boolean Scale F-Curve value to get the target frame number, F-Curve value runs from 0.0 to 1.0 SpeedControlSequence.curve_velocity -> use_curve_velocity: boolean Interpret the F-Curve value as a velocity instead of a frame number SpeedControlSequence.frame_blending -> use_frame_blend: boolean Blend two frames into the target for a smoother result @@ -1211,31 +1202,31 @@ Spline.cyclic_u -> use_cyclic_u: boolean Make this curve or surface a clos Spline.cyclic_v -> use_cyclic_v: boolean Make this surface a closed loop in the V direction Spline.endpoint_u -> use_endpoint_u: boolean Make this nurbs curve or surface meet the endpoints in the U direction (Cyclic U must be disabled) Spline.endpoint_v -> use_endpoint_v: boolean Make this nurbs surface meet the endpoints in the V direction (Cyclic V must be disabled) -TODO * Spline.hide -> hide: boolean Hide this curve in editmode +Spline.hide -> hide: boolean Hide this curve in editmode Spline.smooth -> use_smooth: boolean Smooth the normals of the surface or beveled curve SplineIKConstraint.chain_offset -> use_chain_offset: boolean Offset the entire chain relative to the root joint -TODO * SplineIKConstraint.even_divisions -> use_even_divisions: boolean Ignore the relative lengths of the bones when fitting to the curve +SplineIKConstraint.even_divisions -> use_even_divisions: boolean Ignore the relative lengths of the bones when fitting to the curve SplineIKConstraint.use_curve_radius -> use_curve_radius: boolean Average radius of the endpoints is used to tweak the X and Z Scaling of the bones, on top of XZ Scale mode SplineIKConstraint.y_stretch -> use_y_stretch: boolean Stretch the Y axis of the bones to fit the curve -TODO * SplinePoint.hidden -> hide: boolean Visibility status -TODO * SplinePoint.selected -> select_control_point: boolean Selection status +SplinePoint.hidden -> hide: boolean Visibility status +SplinePoint.selected -> select_control_point: boolean Selection status SpotLamp.auto_clip_end -> use_auto_clip_end: boolean Automatic calculation of clipping-end, based on visible vertices SpotLamp.auto_clip_start -> use_auto_clip_start: boolean Automatic calculation of clipping-start, based on visible vertices SpotLamp.halo -> use_halo: boolean Renders spotlight with a volumetric halo (Buffer Shadows) -TODO * SpotLamp.only_shadow -> use_shadow_only: boolean Causes light to cast shadows only without illuminating objects -TODO * SpotLamp.shadow_layer -> use_shadow_own_layer: boolean Causes only objects on the same layer to cast shadows +SpotLamp.only_shadow -> use_only_shadow: boolean Causes light to cast shadows only without illuminating objects +SpotLamp.shadow_layer -> use_shadow_layer: boolean Causes only objects on the same layer to cast shadows SpotLamp.show_cone -> show_cone: boolean Draw transparent cone in 3D view to visualize which objects are contained in it -TODO * SpotLamp.sphere -> use_sphere: boolean Sets light intensity to zero beyond lamp distance -TODO * SpotLamp.square -> use_square: boolean Casts a square spot light shape -TODO * StateActuator.state -> state: boolean -TODO * SubsurfModifier.optimal_display -> show_optimal: boolean Skip drawing/rendering of interior subdivided edges +SpotLamp.sphere -> use_sphere: boolean Sets light intensity to zero beyond lamp distance +SpotLamp.square -> use_square: boolean Casts a square spot light shape +StateActuator.state -> state: boolean +SubsurfModifier.optimal_display -> show_only_control_edges: boolean Skip drawing/rendering of interior subdivided edges SubsurfModifier.subsurf_uv -> use_subsurf_uv: boolean Use subsurf to subdivide UVs -SunLamp.only_shadow -> use_shadow_only: boolean Causes light to cast shadows only without illuminating objects -TODO * SunLamp.shadow_layer -> use_shadow_own_layer: boolean Causes only objects on the same layer to cast shadows -TODO * SurfaceCurve.map_along_length -> use_map_along_length: boolean Generate texture mapping coordinates following the curve direction, rather than the local bounding box +SunLamp.only_shadow -> use_only_shadow: boolean Causes light to cast shadows only without illuminating objects +SunLamp.shadow_layer -> use_shadow_layer: boolean Causes only objects on the same layer to cast shadows +SurfaceCurve.map_along_length -> use_map_along_length: boolean Generate texture mapping coordinates following the curve direction, rather than the local bounding box SurfaceCurve.vertex_normal_flip -> use_vertex_normal_flip: boolean Flip vertex normals towards the camera during render -TODO * TexMapping.has_maximum -> use_clip_to_max: boolean Whether to use maximum clipping value -TODO * TexMapping.has_minimum -> use_clip_to_min: boolean Whether to use minimum clipping value +TexMapping.has_maximum -> use_max: boolean Whether to use maximum clipping value +TexMapping.has_minimum -> use_min: boolean Whether to use minimum clipping value Text.dirty -> is_dirty: boolean, (read-only) Text file has been edited since last save Text.memory -> is_in_memory: boolean, (read-only) Text file is in memory, without a corresponding file on disk Text.modified -> is_modified: boolean, (read-only) Text file on disk is different than the one in memory @@ -1247,44 +1238,44 @@ TextCharacterFormat.style -> use_style: boolean TextCharacterFormat.underline -> use_underline: boolean TextCharacterFormat.wrap -> use_wrap: boolean TextCurve.fast -> use_fast_editing: boolean Don't fill polygons while editing -TODO * TextCurve.map_along_length -> use_map_along_length: boolean Generate texture mapping coordinates following the curve direction, rather than the local bounding box +TextCurve.map_along_length -> use_map_along_length: boolean Generate texture mapping coordinates following the curve direction, rather than the local bounding box TextCurve.vertex_normal_flip -> use_vertex_normal_flip: boolean Flip vertex normals towards the camera during render TextMarker.edit_all -> use_edit_all: boolean, (read-only) Edit all markers of the same group as one -TODO * TextMarker.temporary -> is_temporary: boolean, (read-only) Marker is temporary +TextMarker.temporary -> is_temporary: boolean, (read-only) Marker is temporary Texture.use_color_ramp -> use_color_ramp: boolean Toggle color ramp operations Texture.use_nodes -> use_nodes: boolean Make this a node-based texture Texture.use_preview_alpha -> use_preview_alpha: boolean Show Alpha in Preview Render TextureNodeMixRGB.alpha -> use_alpha: boolean Include alpha of second input in this operation -TODO * TextureSlot.negate -> use_negate: boolean Inverts the values of the texture to reverse its effect +TextureSlot.negate -> invert: boolean Inverts the values of the texture to reverse its effect TextureSlot.rgb_to_intensity -> use_rgb_to_intensity: boolean Converts texture RGB values to intensity (gray) values TextureSlot.stencil -> use_stencil: boolean Use this texture as a blending value on the next texture ThemeBoneColorSet.colored_constraints -> show_colored_constraints: boolean Allow the use of colors indicating constraints/keyed status ThemeWidgetColors.shaded -> show_shaded: boolean -TODO * TimelineMarker.selected -> select: boolean Marker selection state +TimelineMarker.selected -> select: boolean Marker selection state ToolSettings.auto_normalize -> use_auto_normalize: boolean Ensure all bone-deforming vertex groups add up to 1.0 while weight painting ToolSettings.automerge_editing -> use_automerge_editing: boolean Automatically merge vertices moved to the same location ToolSettings.bone_sketching -> use_bone_sketching: boolean DOC BROKEN ToolSettings.etch_autoname -> use_etch_autoname: boolean DOC BROKEN ToolSettings.etch_overdraw -> use_etch_overdraw: boolean DOC BROKEN ToolSettings.etch_quick -> use_etch_quick: boolean DOC BROKEN -TODO * ToolSettings.mesh_selection_mode -> use_mesh_selection_mode: boolean Which mesh elements selection works on +ToolSettings.mesh_selection_mode -> mesh_selection_mode: boolean Which mesh elements selection works on ToolSettings.record_with_nla -> use_record_with_nla: boolean Add a new NLA Track + Strip for every loop/pass made over the animation to allow non-destructive tweaking ToolSettings.snap -> use_snap: boolean Snap during transform ToolSettings.snap_align_rotation -> use_snap_align_rotation: boolean Align rotation with the snapping target ToolSettings.snap_peel_object -> use_snap_peel_object: boolean Consider objects as whole when finding volume center ToolSettings.snap_project -> use_snap_project: boolean Project vertices on the surface of other objects ToolSettings.use_auto_keying -> use_keyframe_insert_auto: boolean Automatic keyframe insertion for Objects and Bones -TODO * ToolSettings.uv_local_view -> show_only_uv_local_view: boolean Draw only faces with the currently displayed image assigned +ToolSettings.uv_local_view -> show_local_view: boolean Draw only faces with the currently displayed image assigned ToolSettings.uv_sync_selection -> use_uv_sync_selection: boolean Keep UV and edit mode mesh selection in sync TrackToConstraint.target_z -> use_target_z: boolean Target's Z axis, not World Z axis, will constraint the Up direction TransformConstraint.extrapolate_motion -> use_motion_extrapolate: boolean Extrapolate ranges TransformSequence.uniform_scale -> use_uniform_scale: boolean Scale uniformly, preserving aspect ratio -UILayout.active -> active: boolean -TODO * UILayout.enabled -> enabled: boolean -TODO * UVProjectModifier.override_image -> show_override_image: boolean Override faces' current images with the given image +UILayout.active -> show_active: boolean +UILayout.enabled -> show_enabled: boolean +UVProjectModifier.override_image -> use_image_override: boolean Override faces' current images with the given image UnitSettings.use_separate -> use_separate: boolean Display units in pairs -TODO * UserPreferencesEdit.auto_keyframe_insert_available -> use_keyframe_insert_auto_available: boolean Automatic keyframe insertion in available curves -TODO * UserPreferencesEdit.auto_keyframe_insert_keyingset -> use_keyframe_insert_auto_keyingset: boolean Automatic keyframe insertion using active Keying Set +UserPreferencesEdit.auto_keyframe_insert_available -> use_keyframe_insert_available: boolean Automatic keyframe insertion in available curves +UserPreferencesEdit.auto_keyframe_insert_keyingset -> use_keyframe_insert_keyingset: boolean Automatic keyframe insertion using active Keying Set UserPreferencesEdit.drag_immediately -> use_drag_immediately: boolean Moving things with a mouse drag confirms when releasing the button UserPreferencesEdit.duplicate_action -> use_duplicate_action: boolean Causes actions to be duplicated with the object UserPreferencesEdit.duplicate_armature -> use_duplicate_armature: boolean Causes armature data to be duplicated with the object @@ -1302,41 +1293,41 @@ UserPreferencesEdit.enter_edit_mode -> use_enter_edit_mode: boolean Enter UserPreferencesEdit.global_undo -> use_global_undo: boolean Global undo works by keeping a full copy of the file itself in memory, so takes extra memory UserPreferencesEdit.grease_pencil_simplify_stroke -> use_grease_pencil_simplify_stroke: boolean Simplify the final stroke UserPreferencesEdit.grease_pencil_smooth_stroke -> use_grease_pencil_smooth_stroke: boolean Smooth the final stroke -TODO * UserPreferencesEdit.insertkey_xyz_to_rgb -> show_insertkey_xyz_to_rgb: boolean Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis +UserPreferencesEdit.insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb: boolean Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis UserPreferencesEdit.keyframe_insert_needed -> use_keyframe_insert_needed: boolean Keyframe insertion only when keyframe needed UserPreferencesEdit.use_auto_keying -> use_auto_keying: boolean Automatic keyframe insertion for Objects and Bones UserPreferencesEdit.use_negative_frames -> use_negative_frames: boolean Current frame number can be manually set to a negative value -TODO * UserPreferencesEdit.use_visual_keying -> show_visual_keying: boolean Use Visual keying automatically for constrained objects +UserPreferencesEdit.use_visual_keying -> use_visual_keying: boolean Use Visual keying automatically for constrained objects UserPreferencesFilePaths.auto_save_temporary_files -> use_auto_save_temporary_files: boolean Automatic saving of temporary files -TODO * UserPreferencesFilePaths.compress_file -> use_file_compression: boolean Enable file compression when saving .blend files -TODO * UserPreferencesFilePaths.filter_file_extensions -> show_only_file_extensions: boolean Display only files with extensions in the image select window -TODO * UserPreferencesFilePaths.hide_dot_files_datablocks -> show_dot_files_datablocks: boolean Hide files/datablocks that start with a dot(.*) +UserPreferencesFilePaths.compress_file -> use_file_compression: boolean Enable file compression when saving .blend files +UserPreferencesFilePaths.filter_file_extensions -> use_filter_files: boolean Display only files with extensions in the image select window +UserPreferencesFilePaths.hide_dot_files_datablocks -> show_hidden_files_datablocks: boolean Hide files/datablocks that start with a dot(.*) UserPreferencesFilePaths.load_ui -> use_load_ui: boolean Load user interface setup when loading .blend files UserPreferencesFilePaths.save_preview_images -> use_save_preview_images: boolean Enables automatic saving of preview images in the .blend file UserPreferencesFilePaths.use_relative_paths -> use_relative_paths: boolean Default relative path option for the file selector UserPreferencesInput.continuous_mouse -> use_continuous_mouse: boolean Allow moving the mouse outside the view on some manipulations (transform, ui control drag) UserPreferencesInput.emulate_3_button_mouse -> use_emulate_3_button_mouse: boolean Emulates Middle Mouse with Alt+LeftMouse (doesn't work with Left Mouse Select option) UserPreferencesInput.emulate_numpad -> use_emulate_numpad: boolean Causes the 1 to 0 keys to act as the numpad (useful for laptops) -TODO * UserPreferencesInput.invert_zoom_direction -> invert_zoom: boolean Invert the axis of mouse movement for zooming +UserPreferencesInput.invert_zoom_direction -> invert_zoom_direction: boolean Invert the axis of mouse movement for zooming UserPreferencesSystem.auto_execute_scripts -> use_scripts_auto_execute: boolean Allow any .blend file to run scripts automatically (unsafe with blend files from an untrusted source) -TODO * UserPreferencesSystem.enable_all_codecs -> use_preview_images: boolean Enables automatic saving of preview images in the .blend file (Windows only) -TODO * UserPreferencesSystem.international_fonts -> use_fonts_international: boolean Use international fonts +UserPreferencesSystem.enable_all_codecs -> use_preview_images: boolean Enables automatic saving of preview images in the .blend file (Windows only) +UserPreferencesSystem.international_fonts -> use_international_fonts: boolean Use international fonts UserPreferencesSystem.tabs_as_spaces -> use_tabs_as_spaces: boolean Automatically converts all new tabs into spaces for new and loaded text files -UserPreferencesSystem.translate_buttons -> show_translate_buttons: boolean Translate button labels -UserPreferencesSystem.translate_toolbox -> show_translate_toolbox: boolean Translate toolbox menu -UserPreferencesSystem.translate_tooltips -> show_translate_tooltips: boolean Translate Tooltips -UserPreferencesSystem.use_antialiasing -> show_antialiasing: boolean Use anti-aliasing for the 3D view (may impact redraw performance) +UserPreferencesSystem.translate_buttons -> use_translate_buttons: boolean Translate button labels +UserPreferencesSystem.translate_toolbox -> use_translate_toolbox: boolean Translate toolbox menu +UserPreferencesSystem.translate_tooltips -> use_translate_tooltips: boolean Translate Tooltips +UserPreferencesSystem.use_antialiasing -> use_antialiasing: boolean Use anti-aliasing for the 3D view (may impact redraw performance) UserPreferencesSystem.use_mipmaps -> use_mipmaps: boolean Scale textures for the 3D View (looks nicer but uses more memory and slows image reloading) -TODO * UserPreferencesSystem.use_textured_fonts -> show_fonts_textured: boolean Use textures for drawing international fonts +UserPreferencesSystem.use_textured_fonts -> use_textured_fonts: boolean Use textures for drawing international fonts UserPreferencesSystem.use_vbos -> use_vertex_buffer_objects: boolean Use Vertex Buffer Objects (or Vertex Arrays, if unsupported) for viewport rendering -TODO * UserPreferencesSystem.use_weight_color_range -> show_weight_color_range: boolean Enable color range used for weight visualization in weight painting mode +UserPreferencesSystem.use_weight_color_range -> use_weight_color_range: boolean Enable color range used for weight visualization in weight painting mode UserPreferencesView.auto_depth -> use_mouse_auto_depth: boolean Use the depth under the mouse to improve view pan/rotate/zoom functionality -TODO * UserPreferencesView.auto_perspective -> show_auto_perspective: boolean Automatically switch between orthographic and perspective when changing from top/front/side views -UserPreferencesView.directional_menus -> show_directional_menus: boolean Otherwise menus, etc will always be top to bottom, left to right, no matter opening direction +UserPreferencesView.auto_perspective -> use_auto_perspective: boolean Automatically switch between orthographic and perspective when changing from top/front/side views +UserPreferencesView.directional_menus -> use_directional_menus: boolean Otherwise menus, etc will always be top to bottom, left to right, no matter opening direction UserPreferencesView.display_object_info -> show_object_info: boolean Display objects name and frame number in 3D view -TODO * UserPreferencesView.global_pivot -> show_global_pivot: boolean Lock the same rotation/scaling pivot in all 3D Views -TODO * UserPreferencesView.global_scene -> show_global_scene: boolean Forces the current Scene to be displayed in all Screens -TODO * UserPreferencesView.open_mouse_over -> use_mouse_over_open: boolean Open menu buttons and pulldowns automatically when the mouse is hovering +UserPreferencesView.global_pivot -> use_global_pivot: boolean Lock the same rotation/scaling pivot in all 3D Views +UserPreferencesView.global_scene -> use_global_scene: boolean Forces the current Scene to be displayed in all Screens +UserPreferencesView.open_mouse_over -> use_mouse_over_open: boolean Open menu buttons and pulldowns automatically when the mouse is hovering UserPreferencesView.rotate_around_selection -> use_rotate_around_selection: boolean Use selection as the pivot point UserPreferencesView.show_mini_axis -> show_mini_axis: boolean Show a small rotating 3D axis in the bottom left corner of the 3D View UserPreferencesView.show_playback_fps -> show_playback_fps: boolean Show the frames per second screen refresh rate, while animation is played back @@ -1347,18 +1338,18 @@ UserPreferencesView.use_column_layout -> show_column_layout: boolean Use a UserPreferencesView.use_large_cursors -> show_large_cursors: boolean Use large mouse cursors when available UserPreferencesView.use_manipulator -> show_manipulator: boolean Use 3D transform manipulator UserPreferencesView.use_middle_mouse_paste -> use_mouse_mmb_paste: boolean In text window, paste with middle mouse button instead of panning -TODO * UserPreferencesView.wheel_invert_zoom -> invert_mouse_wheel_zoom: boolean Swap the Mouse Wheel zoom direction -TODO * UserPreferencesView.zoom_to_mouse -> use_zoom_auto_mouse: boolean Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D window center -TODO * UserSolidLight.enabled -> use: boolean Enable this OpenGL light in solid draw mode -TODO * VertexPaint.all_faces -> use_all_faces: boolean Paint on all faces inside brush -TODO * VertexPaint.normals -> use_normals: boolean Applies the vertex normal before painting +UserPreferencesView.wheel_invert_zoom -> invert_mouse_wheel_zoom: boolean Swap the Mouse Wheel zoom direction +UserPreferencesView.zoom_to_mouse -> use_zoom_to_mouse: boolean Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D window center +UserSolidLight.enabled -> use: boolean Enable this OpenGL light in solid draw mode +VertexPaint.all_faces -> use_all_faces: boolean Paint on all faces inside brush +VertexPaint.normals -> use_normal: boolean Applies the vertex normal before painting VertexPaint.spray -> use_spray: boolean Keep applying paint effect while holding mouse -TODO * VisibilityActuator.children -> show_occluded_children: boolean Set all the children of this object to the same visibility/occlusion recursively -TODO * VisibilityActuator.occlusion -> show_occluded: boolean Set the object to occlude objects behind it. Initialized from the object type in physics button -TODO * VisibilityActuator.visible -> show: boolean Set the objects visible. Initialized from the objects render restriction toggle (access in the outliner) +VisibilityActuator.children -> apply_to_children: boolean Set all the children of this object to the same visibility/occlusion recursively +VisibilityActuator.occlusion -> use_occlusion: boolean Set the object to occlude objects behind it. Initialized from the object type in physics button +VisibilityActuator.visible -> use_visible: boolean Set the objects visible. Initialized from the objects render restriction toggle (access in the outliner) VoxelData.still -> use_still_frame: boolean Always render a still frame from the voxel data sequence WaveModifier.cyclic -> use_cyclic: boolean Cyclic wave effect -TODO * WaveModifier.normals -> show_normals: boolean Displace along normals +WaveModifier.normals -> use_normal: boolean Displace along normal WaveModifier.x -> use_x: boolean X axis motion WaveModifier.x_normal -> use_normal_x: boolean Enable displacement along the X normal WaveModifier.y -> use_y: boolean Y axis motion From 7f8f32db40cb3dea610f3c7028564c09149e42de Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 13 Jul 2010 19:24:35 +0000 Subject: [PATCH 444/674] dont show active spline for text --- release/scripts/ui/properties_data_curve.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/ui/properties_data_curve.py b/release/scripts/ui/properties_data_curve.py index e1d6c9c7f04..8ab0243ed3e 100644 --- a/release/scripts/ui/properties_data_curve.py +++ b/release/scripts/ui/properties_data_curve.py @@ -44,7 +44,7 @@ class DataButtonsPanelActive(DataButtonsPanel): def poll(self, context): curve = context.curve - return (curve and curve.splines.active) + return (curve and type(curve) is not bpy.types.TextCurve and curve.splines.active) class DATA_PT_context_curve(DataButtonsPanel): From c5d6665cb3965cde556e58b182070a41a3956732 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 13 Jul 2010 19:52:04 +0000 Subject: [PATCH 445/674] fix for rendering sequencer float buffers, need to convert into linear color space for the render buffer. --- source/blender/render/intern/source/pipeline.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index bdae4221bde..fd91bf8a2c2 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -2470,8 +2470,21 @@ static void do_render_seq(Render * re) if(ibuf->rect_float) { if (!rr->rectf) rr->rectf= MEM_mallocN(4*sizeof(float)*rr->rectx*rr->recty, "render_seq rectf"); - + memcpy(rr->rectf, ibuf->rect_float, 4*sizeof(float)*rr->rectx*rr->recty); + + /* sequencer float buffer is not in linear color space, convert + * should always be true, use a fake ibuf for the colorspace conversion */ + if(ibuf->profile != IB_PROFILE_LINEAR_RGB) { + ImBuf ibuf_dummy; + memset(&ibuf_dummy, 0, sizeof(ImBuf)); + ibuf_dummy.profile= ibuf->profile; + ibuf_dummy.x= rr->rectx; + ibuf_dummy.y= rr->recty; + ibuf_dummy.rect_float= rr->rectf; + /* only touch the rr->rectf */ + IMB_convert_profile(&ibuf_dummy, IB_PROFILE_LINEAR_RGB); + } /* TSK! Since sequence render doesn't free the *rr render result, the old rect32 can hang around when sequence render has rendered a 32 bits one before */ From 03e638d1285b2a26902230772ae9261406fd6658 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 13 Jul 2010 22:21:59 +0000 Subject: [PATCH 446/674] - make duplis real wasnt redrawing - small caps option for titles (doing manually is quite painful to watch). --- release/scripts/ui/properties_data_curve.py | 12 ++-- release/scripts/ui/space_sequencer.py | 2 +- source/blender/blenkernel/intern/curve.c | 1 + source/blender/blenkernel/intern/font.c | 65 +++++++++++++++------ source/blender/blenloader/intern/readfile.c | 7 +++ source/blender/editors/object/object_add.c | 1 + source/blender/makesdna/DNA_curve_types.h | 3 +- source/blender/makesrna/intern/rna_curve.c | 11 ++++ 8 files changed, 78 insertions(+), 24 deletions(-) diff --git a/release/scripts/ui/properties_data_curve.py b/release/scripts/ui/properties_data_curve.py index 8ab0243ed3e..8c02754ecac 100644 --- a/release/scripts/ui/properties_data_curve.py +++ b/release/scripts/ui/properties_data_curve.py @@ -308,10 +308,13 @@ class DATA_PT_font(DataButtonsPanel): split = layout.split() - col = split.column(align=True) - col.label(text="Underline:") - col.prop(text, "ul_position", text="Position") - col.prop(text, "ul_height", text="Thickness") + col = split.column() + colsub = col.column(align=True) + colsub.label(text="Underline:") + colsub.prop(text, "ul_position", text="Position") + colsub.prop(text, "ul_height", text="Thickness") + col.label(text="") + col.prop(text, "small_caps_scale", text="Small Caps") if wide_ui: col = split.column() @@ -319,6 +322,7 @@ class DATA_PT_font(DataButtonsPanel): col.prop(char, "bold") col.prop(char, "italic") col.prop(char, "underline") + col.prop(char, "use_small_caps") # col.prop(char, "style") # col.prop(char, "wrap") diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index a41b5fe5262..97d84b77e18 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -373,7 +373,7 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel): row.label(text="Final Length: %s" % bpy.utils.smpte_from_frame(strip.frame_final_length)) row = col.row() row.active = (frame_current >= strip.frame_start and frame_current <= strip.frame_start + strip.frame_length) - row.label(text="Strip Position: %d" % (frame_current - strip.frame_start)) + row.label(text="Playhead: %d" % (frame_current - strip.frame_start)) col.label(text="Frame Offset %d:%d" % (strip.frame_offset_start, strip.frame_offset_end)) col.label(text="Frame Still %d:%d" % (strip.frame_still_start, strip.frame_still_end)) diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index a01ee15dde1..2e645592229 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -138,6 +138,7 @@ Curve *add_curve(char *name, int type) cu->fsize= 1.0; cu->ulheight = 0.05; cu->texflag= CU_AUTOSPACE; + cu->smallcaps_scale= 0.75f; cu->twist_mode= CU_TWIST_MINIMUM; // XXX: this one seems to be the best one in most cases, at least for curve deform... cu->bb= unit_boundbox(); diff --git a/source/blender/blenkernel/intern/font.c b/source/blender/blenkernel/intern/font.c index 01f2b57de71..d07bd2ba8e5 100644 --- a/source/blender/blenkernel/intern/font.c +++ b/source/blender/blenkernel/intern/font.c @@ -1,4 +1,4 @@ -/* font.c +/* font.c * * * $Id$ @@ -34,6 +34,7 @@ #include #include #include +#include #include "MEM_guardedalloc.h" @@ -597,9 +598,23 @@ static void buildchar(Curve *cu, unsigned long character, CharInfo *info, float } bezt2 = nu2->bezt; + if(info->flag & CU_SMALLCAPS) { + const float sca= cu->smallcaps_scale; + for (i= nu2->pntsu; i > 0; i--) { + fp= bezt2->vec[0]; + fp[0] *= sca; + fp[1] *= sca; + fp[3] *= sca; + fp[4] *= sca; + fp[6] *= sca; + fp[7] *= sca; + bezt2++; + } + } + bezt2 = nu2->bezt; + for (i= nu2->pntsu; i > 0; i--) { fp= bezt2->vec[0]; - fp[0]= (fp[0]+ofsx)*fsize; fp[1]= (fp[1]+ofsy)*fsize; fp[3]= (fp[3]+ofsx)*fsize; @@ -635,6 +650,20 @@ int BKE_font_getselection(Object *ob, int *start, int *end) } } +static float char_width(Curve *cu, VChar *che, CharInfo *info) +{ + // The character wasn't found, propably ascii = 0, then the width shall be 0 as well + if(che == NULL) { + return 0.0f; + } + else if(info->flag & CU_SMALLCAPS) { + return che->width * cu->smallcaps_scale; + } + else { + return che->width; + } +} + struct chartrans *BKE_text_to_curve(Scene *scene, Object *ob, int mode) { VFont *vfont, *oldvfont; @@ -729,8 +758,18 @@ struct chartrans *BKE_text_to_curve(Scene *scene, Object *ob, int mode) makebreak: // Characters in the list che = vfd->characters.first; - ascii = mem[i]; info = &(custrinfo[i]); + ascii = mem[i]; + if(info->flag & CU_SMALLCAPS) { + ascii = towupper(ascii); + if(mem[i] != ascii) { + mem[i]= ascii; + } + else { + info->flag &= ~CU_SMALLCAPS; /* could have a different way to not scale caps */ + } + } + vfont = which_vfont(cu, info); if(vfont==NULL) break; @@ -780,11 +819,7 @@ struct chartrans *BKE_text_to_curve(Scene *scene, Object *ob, int mode) return 0; } - // The character wasn't found, propably ascii = 0, then the width shall be 0 as well - if(!che) - twidth = 0; - else - twidth = che->width; + twidth = char_width(cu, che, info); // Calculate positions if((tb->w != 0.0) && (ct->dobreak==0) && ((xof-(tb->x/cu->fsize)+twidth)*cu->fsize) > tb->w) { @@ -881,10 +916,7 @@ struct chartrans *BKE_text_to_curve(Scene *scene, Object *ob, int mode) else wsfac = 1.0; // Set the width of the character - if(!che) - twidth = 0; - else - twidth = che->width; + twidth = char_width(cu, che, info); xof += (twidth*wsfac*(1.0+(info->kern/40.0)) ) + xtrax; @@ -1024,10 +1056,7 @@ struct chartrans *BKE_text_to_curve(Scene *scene, Object *ob, int mode) che = che->next; } - if(che) - twidth = che->width; - else - twidth = 0; + twidth = char_width(cu, che, info); dtime= distfac*0.35f*twidth; /* why not 0.5? */ dtime= distfac*0.5f*twidth; /* why not 0.5? */ @@ -1167,8 +1196,8 @@ struct chartrans *BKE_text_to_curve(Scene *scene, Object *ob, int mode) break; che = che->next; } - - if(!che) twidth =0; else twidth=che->width; + + twidth = char_width(cu, che, info); ulwidth = cu->fsize * ((twidth* (1.0+(info->kern/40.0)))+uloverlap); build_underline(cu, ct->xof*cu->fsize, ct->yof*cu->fsize + (cu->ulpos-0.05)*cu->fsize, ct->xof*cu->fsize + ulwidth, diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 4309163fe7a..7f24c416526 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10953,6 +10953,13 @@ static void do_versions(FileData *fd, Library *lib, Main *main) tex->saturation= 1.0f; } + { + Curve *cu; + for(cu= main->curve.first; cu; cu= cu->id.next) { + cu->smallcaps_scale= 0.75f; + } + } + for (scene= main->scene.first; scene; scene=scene->id.next) { if(scene) { Sequence *seq; diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 2299207eaa9..5fa643200f4 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -1008,6 +1008,7 @@ static int object_duplicates_make_real_exec(bContext *C, wmOperator *op) DAG_scene_sort(scene); DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_SCENE, scene); + WM_main_add_notifier(NC_OBJECT|ND_DRAW, NULL); return OPERATOR_FINISHED; } diff --git a/source/blender/makesdna/DNA_curve_types.h b/source/blender/makesdna/DNA_curve_types.h index 4819455fac6..2c4c6019556 100644 --- a/source/blender/makesdna/DNA_curve_types.h +++ b/source/blender/makesdna/DNA_curve_types.h @@ -177,7 +177,7 @@ typedef struct Curve { short texflag, pad1; /* keep a short because of give_obdata_texspace() */ short drawflag, twist_mode, pad[2]; - float twist_smooth, pad2; + float twist_smooth, smallcaps_scale; short pathlen, totcol; short flag, bevresol; @@ -329,6 +329,7 @@ typedef enum eBezTriple_KeyframeType { #define CU_ITALIC 2 #define CU_UNDERLINE 4 #define CU_WRAP 8 /* wordwrap occured here */ +#define CU_SMALLCAPS 16 #endif diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index 09a0af9830f..b2d0e64bebf 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -730,6 +730,12 @@ static void rna_def_font(BlenderRNA *brna, StructRNA *srna) RNA_def_property_ui_text(prop, "Font size", ""); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); + prop= RNA_def_property(srna, "small_caps_scale", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "smallcaps_scale"); + RNA_def_property_ui_range(prop, 0, 1.0, 0.1, 0); + RNA_def_property_ui_text(prop, "Small Caps", "Scale of small capitals"); + RNA_def_property_update(prop, 0, "rna_Curve_update_data"); + prop= RNA_def_property(srna, "line_dist", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "linedist"); RNA_def_property_range(prop, 0.0f, 10.0f); @@ -896,6 +902,11 @@ static void rna_def_charinfo(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_WRAP); RNA_def_property_ui_text(prop, "Wrap", ""); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); + + prop= RNA_def_property(srna, "use_small_caps", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_SMALLCAPS); + RNA_def_property_ui_text(prop, "Small Caps", ""); + RNA_def_property_update(prop, 0, "rna_Curve_update_data"); } static void rna_def_surface(BlenderRNA *brna) From 3580d6229a2c2ee5815ff76665d4bb014eacfb99 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 13 Jul 2010 23:51:21 +0000 Subject: [PATCH 447/674] - text3d was missing menu items for toggling bold/underline/italic/smallcaps. - made smallcaps use a temp flag so caps can still have the smallcaps flag. - utility function for getting the char from a font. find_vfont_char(), was inline in ~5 places. - removed CU_STYLE mix of flags only used in one place, not needed. removed 'style' from rna too. - fix for some warnings. --- doc/blender.1.py | 14 ++-- release/scripts/modules/rna_info.py | 2 + release/scripts/op/presets.py | 4 +- release/scripts/ui/properties_data_curve.py | 10 ++- release/scripts/ui/space_view3d.py | 7 ++ source/blender/blenkernel/intern/font.c | 81 ++++++++------------- source/blender/editors/curve/curve_ops.c | 7 +- source/blender/editors/curve/editfont.c | 15 ++-- source/blender/gpu/gpu_buffers.h | 1 + source/blender/gpu/intern/gpu_draw.c | 1 + source/blender/makesdna/DNA_curve_types.h | 13 ++-- source/blender/makesrna/intern/rna_curve.c | 20 ++--- 12 files changed, 84 insertions(+), 91 deletions(-) diff --git a/doc/blender.1.py b/doc/blender.1.py index c77e5ccbc3d..576b58758cd 100644 --- a/doc/blender.1.py +++ b/doc/blender.1.py @@ -31,12 +31,12 @@ def man_format(data): data = data.replace("-", "\\-") data = data.replace("\t", " ") # data = data.replace("$", "\\fI") - + data_ls = [] for w in data.split(): if w.startswith("$"): w = "\\fI" + w[1:] + "\\fR" - + data_ls.append(w) data = data[:len(data) - len(data.lstrip())] + " ".join(data_ls) @@ -90,16 +90,16 @@ lines = [line.rstrip() for line in blender_help.split("\n")] while lines: l = lines.pop(0) if l.startswith("Environment Variables:"): - fw('.SH "ENVIRONMENT VARIABLES"\n') + fw('.SH "ENVIRONMENT VARIABLES"\n') elif l.endswith(":"): # one line - fw('.SS "%s"\n\n' % l) + fw('.SS "%s"\n\n' % l) elif l.startswith("-") or l.startswith("/"): # can be multi line fw('.TP\n') fw('.B %s\n' % man_format(l)) - + while lines: - # line with no + # line with no if lines[0].strip() and len(lines[0].lstrip()) == len(lines[0]): # no white space break @@ -112,7 +112,7 @@ while lines: l = l[1:] # remove first whitespace (tab) fw('%s\n' % man_format(l)) - + else: if not l.strip(): fw('.br\n') diff --git a/release/scripts/modules/rna_info.py b/release/scripts/modules/rna_info.py index 9c2a2688949..3fd70fedd8c 100644 --- a/release/scripts/modules/rna_info.py +++ b/release/scripts/modules/rna_info.py @@ -631,6 +631,8 @@ if __name__ == "__main__": props = [(prop.identifier, prop) for prop in v.properties] for prop_id, prop in sorted(props): + if prop.type == 'boolean': + continue data += "%s.%s -> %s: %s%s %s\n" % (struct_id_str, prop.identifier, prop.identifier, prop.type, ", (read-only)" if prop.is_readonly else "", prop.description) if bpy.app.background: diff --git a/release/scripts/op/presets.py b/release/scripts/op/presets.py index 9552a5e6785..f80c5e69ddd 100644 --- a/release/scripts/op/presets.py +++ b/release/scripts/op/presets.py @@ -27,8 +27,8 @@ class AddPresetBase(bpy.types.Operator): subclasses must define - preset_values - preset_subdir ''' - bl_idname = "script.add_preset_base" - bl_label = "Add a Python Preset" + # bl_idname = "script.preset_base_add" + # bl_label = "Add a Python Preset" name = bpy.props.StringProperty(name="Name", description="Name of the preset, used to make the path name", maxlen=64, default="") diff --git a/release/scripts/ui/properties_data_curve.py b/release/scripts/ui/properties_data_curve.py index 8c02754ecac..fd836f5e5d4 100644 --- a/release/scripts/ui/properties_data_curve.py +++ b/release/scripts/ui/properties_data_curve.py @@ -313,8 +313,6 @@ class DATA_PT_font(DataButtonsPanel): colsub.label(text="Underline:") colsub.prop(text, "ul_position", text="Position") colsub.prop(text, "ul_height", text="Thickness") - col.label(text="") - col.prop(text, "small_caps_scale", text="Small Caps") if wide_ui: col = split.column() @@ -322,9 +320,13 @@ class DATA_PT_font(DataButtonsPanel): col.prop(char, "bold") col.prop(char, "italic") col.prop(char, "underline") + + split = layout.split() + col = split.column() + col.prop(text, "small_caps_scale", text="Small Caps") + + col = split.column() col.prop(char, "use_small_caps") -# col.prop(char, "style") -# col.prop(char, "wrap") class DATA_PT_paragraph(DataButtonsPanel): diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 6860739bd03..bab3695a0b6 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -1707,6 +1707,13 @@ class VIEW3D_MT_edit_text(bpy.types.Menu): layout.menu("VIEW3D_MT_edit_text_chars") + layout.separator() + + layout.operator("font.style_toggle", text="Toggle Bold").style = 'BOLD' + layout.operator("font.style_toggle", text="Toggle Italic").style = 'ITALIC' + layout.operator("font.style_toggle", text="Toggle Underline").style = 'UNDERLINE' + layout.operator("font.style_toggle", text="Toggle Small Caps").style = 'SMALL_CAPS' + class VIEW3D_MT_edit_text_chars(bpy.types.Menu): bl_label = "Special Characters" diff --git a/source/blender/blenkernel/intern/font.c b/source/blender/blenkernel/intern/font.c index d07bd2ba8e5..a99f2599f66 100644 --- a/source/blender/blenkernel/intern/font.c +++ b/source/blender/blenkernel/intern/font.c @@ -427,12 +427,12 @@ VFont *load_vfont(char *name) static VFont *which_vfont(Curve *cu, CharInfo *info) { - switch(info->flag & CU_STYLE) { - case CU_BOLD: + switch(info->flag & (CU_CHINFO_BOLD|CU_CHINFO_ITALIC)) { + case CU_CHINFO_BOLD: if (cu->vfontb) return(cu->vfontb); else return(cu->vfont); - case CU_ITALIC: + case CU_CHINFO_ITALIC: if (cu->vfonti) return(cu->vfonti); else return(cu->vfont); - case (CU_BOLD|CU_ITALIC): + case (CU_CHINFO_BOLD|CU_CHINFO_ITALIC): if (cu->vfontbi) return(cu->vfontbi); else return(cu->vfont); default: return(cu->vfont); @@ -450,6 +450,17 @@ VFont *get_builtin_font(void) return load_vfont(""); } +static VChar *find_vfont_char(VFontData *vfd, intptr_t character) +{ + VChar *che= NULL; + + for(che = vfd->characters.first; che; che = che->next) { + if(che->index == character) + break; + } + return che; /* NULL if not found */ +} + static void build_underline(Curve *cu, float x1, float y1, float x2, float y2, int charidx, short mat_nr) { Nurb *nu2; @@ -524,14 +535,7 @@ static void buildchar(Curve *cu, unsigned long character, CharInfo *info, float si= (float)sin(rot); co= (float)cos(rot); - // Find the correct character from the font - che = vfd->characters.first; - while(che) - { - if(che->index == character) - break; - che = che->next; - } + che= find_vfont_char(vfd, character); // Select the glyph data if(che) @@ -598,7 +602,7 @@ static void buildchar(Curve *cu, unsigned long character, CharInfo *info, float } bezt2 = nu2->bezt; - if(info->flag & CU_SMALLCAPS) { + if(info->flag & CU_CHINFO_SMALLCAPS_CHECK) { const float sca= cu->smallcaps_scale; for (i= nu2->pntsu; i > 0; i--) { fp= bezt2->vec[0]; @@ -656,7 +660,7 @@ static float char_width(Curve *cu, VChar *che, CharInfo *info) if(che == NULL) { return 0.0f; } - else if(info->flag & CU_SMALLCAPS) { + else if(info->flag & CU_CHINFO_SMALLCAPS_CHECK) { return che->width * cu->smallcaps_scale; } else { @@ -745,7 +749,7 @@ struct chartrans *BKE_text_to_curve(Scene *scene, Object *ob, int mode) oldvfont = NULL; - for (i=0; iselboxes) MEM_freeN(cu->selboxes); cu->selboxes = NULL; @@ -760,26 +764,19 @@ struct chartrans *BKE_text_to_curve(Scene *scene, Object *ob, int mode) che = vfd->characters.first; info = &(custrinfo[i]); ascii = mem[i]; - if(info->flag & CU_SMALLCAPS) { + if(info->flag & CU_CHINFO_SMALLCAPS) { ascii = towupper(ascii); if(mem[i] != ascii) { mem[i]= ascii; - } - else { - info->flag &= ~CU_SMALLCAPS; /* could have a different way to not scale caps */ + info->flag |= CU_CHINFO_SMALLCAPS_CHECK; } } vfont = which_vfont(cu, info); if(vfont==NULL) break; - - // Find the character - while(che) { - if(che->index == ascii) - break; - che = che->next; - } + + che= find_vfont_char(vfd, ascii); /* * The character wasn't in the current curve base so load it @@ -791,12 +788,7 @@ struct chartrans *BKE_text_to_curve(Scene *scene, Object *ob, int mode) } /* Try getting the character again from the list */ - che = vfd->characters.first; - while(che) { - if(che->index == ascii) - break; - che = che->next; - } + che= find_vfont_char(vfd, ascii); /* No VFont found */ if (vfont==0) { @@ -833,13 +825,13 @@ struct chartrans *BKE_text_to_curve(Scene *scene, Object *ob, int mode) i = j-1; xof = ct->xof; ct[1].dobreak = 1; - custrinfo[i+1].flag |= CU_WRAP; + custrinfo[i+1].flag |= CU_CHINFO_WRAP; goto makebreak; } if (chartransdata[j].dobreak) { // fprintf(stderr, "word too long: %c%c%c...\n", mem[j], mem[j+1], mem[j+2]); ct->dobreak= 1; - custrinfo[i+1].flag |= CU_WRAP; + custrinfo[i+1].flag |= CU_CHINFO_WRAP; ct -= 1; cnr -= 1; i--; @@ -1047,14 +1039,8 @@ struct chartrans *BKE_text_to_curve(Scene *scene, Object *ob, int mode) /* rotate around center character */ ascii = mem[i]; - - // Find the character - che = vfd->characters.first; - while(che) { - if(che->index == ascii) - break; - che = che->next; - } + + che= find_vfont_char(vfd, ascii); twidth = char_width(cu, che, info); @@ -1180,22 +1166,17 @@ struct chartrans *BKE_text_to_curve(Scene *scene, Object *ob, int mode) if(cha != '\n' && cha != '\r') buildchar(cu, cha, info, ct->xof, ct->yof, ct->rot, i); - if ((info->flag & CU_UNDERLINE) && (cu->textoncurve == NULL) && (cha != '\n') && (cha != '\r')) { + if ((info->flag & CU_CHINFO_UNDERLINE) && (cu->textoncurve == NULL) && (cha != '\n') && (cha != '\r')) { float ulwidth, uloverlap= 0.0f; if ( (i<(slen-1)) && (mem[i+1] != '\n') && (mem[i+1] != '\r') && - ((mem[i+1] != ' ') || (custrinfo[i+1].flag & CU_UNDERLINE)) && ((custrinfo[i+1].flag & CU_WRAP)==0) + ((mem[i+1] != ' ') || (custrinfo[i+1].flag & CU_CHINFO_UNDERLINE)) && ((custrinfo[i+1].flag & CU_CHINFO_WRAP)==0) ) { uloverlap = xtrax + 0.1; } // Find the character, the characters has to be in the memory already // since character checking has been done earlier already. - che = vfd->characters.first; - while(che) { - if(che->index == cha) - break; - che = che->next; - } + che= find_vfont_char(vfd, cha); twidth = char_width(cu, che, info); ulwidth = cu->fsize * ((twidth* (1.0+(info->kern/40.0)))+uloverlap); diff --git a/source/blender/editors/curve/curve_ops.c b/source/blender/editors/curve/curve_ops.c index 026a10c013c..8f826d318b6 100644 --- a/source/blender/editors/curve/curve_ops.c +++ b/source/blender/editors/curve/curve_ops.c @@ -147,9 +147,10 @@ void ED_keymap_curve(wmKeyConfig *keyconf) keymap->poll= ED_operator_editfont; /* only set in editmode font, by space_view3d listener */ - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", BKEY, KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_BOLD); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", IKEY, KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_ITALIC); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", UKEY, KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_UNDERLINE); + RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", BKEY, KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_CHINFO_BOLD); + RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", IKEY, KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_CHINFO_ITALIC); + RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", UKEY, KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_CHINFO_UNDERLINE); + RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", PKEY, KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_CHINFO_SMALLCAPS); RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_delete", DELKEY, KM_PRESS, 0, 0)->ptr, "type", DEL_NEXT_SEL); RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0)->ptr, "type", DEL_PREV_SEL); diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c index 7d5af54b640..69ba432e778 100644 --- a/source/blender/editors/curve/editfont.c +++ b/source/blender/editors/curve/editfont.c @@ -611,9 +611,10 @@ static int kill_selection(Object *obedit, int ins) /* 1 == new character */ /******************* set style operator ********************/ static EnumPropertyItem style_items[]= { - {CU_BOLD, "BOLD", 0, "Bold", ""}, - {CU_ITALIC, "ITALIC", 0, "Italic", ""}, - {CU_UNDERLINE, "UNDERLINE", 0, "Underline", ""}, + {CU_CHINFO_BOLD, "BOLD", 0, "Bold", ""}, + {CU_CHINFO_ITALIC, "ITALIC", 0, "Italic", ""}, + {CU_CHINFO_UNDERLINE, "UNDERLINE", 0, "Underline", ""}, + {CU_CHINFO_SMALLCAPS, "SMALL_CAPS", 0, "Small Caps", ""}, {0, NULL, 0, NULL, NULL}}; static int set_style(bContext *C, int style, int clear) @@ -664,7 +665,7 @@ void FONT_OT_style_set(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "style", style_items, CU_BOLD, "Style", "Style to set selection to."); + RNA_def_enum(ot->srna, "style", style_items, CU_CHINFO_BOLD, "Style", "Style to set selection to."); RNA_def_boolean(ot->srna, "clear", 0, "Clear", "Clear style rather than setting it."); } @@ -702,7 +703,7 @@ void FONT_OT_style_toggle(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "style", style_items, CU_BOLD, "Style", "Style to set selection to."); + RNA_def_enum(ot->srna, "style", style_items, CU_CHINFO_BOLD, "Style", "Style to set selection to."); } /******************* copy text operator ********************/ @@ -862,7 +863,7 @@ static int move_cursor(bContext *C, int type, int select) if((select) && (cu->selstart==0)) cu->selstart = cu->selend = cu->pos+1; while(cu->pos>0) { if(ef->textbuf[cu->pos-1]=='\n') break; - if(ef->textbufinfo[cu->pos-1].flag & CU_WRAP ) break; + if(ef->textbufinfo[cu->pos-1].flag & CU_CHINFO_WRAP) break; cu->pos--; } cursmove=FO_CURS; @@ -873,7 +874,7 @@ static int move_cursor(bContext *C, int type, int select) while(cu->poslen) { if(ef->textbuf[cu->pos]==0) break; if(ef->textbuf[cu->pos]=='\n') break; - if(ef->textbufinfo[cu->pos].flag & CU_WRAP ) break; + if(ef->textbufinfo[cu->pos].flag & CU_CHINFO_WRAP ) break; cu->pos++; } cursmove=FO_CURS; diff --git a/source/blender/gpu/gpu_buffers.h b/source/blender/gpu/gpu_buffers.h index 983133a6d4b..75e596935a3 100644 --- a/source/blender/gpu/gpu_buffers.h +++ b/source/blender/gpu/gpu_buffers.h @@ -50,6 +50,7 @@ struct DerivedMesh; struct GHash; +struct DMGridData; /* V - vertex, N - normal, T - uv, C - color F - float, UB - unsigned byte */ diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c index 506ce94b763..abbdbb4ac27 100644 --- a/source/blender/gpu/intern/gpu_draw.c +++ b/source/blender/gpu/intern/gpu_draw.c @@ -68,6 +68,7 @@ #include "GPU_extensions.h" #include "GPU_material.h" #include "GPU_draw.h" +#include "gpu_buffers.h" #include "smoke_API.h" diff --git a/source/blender/makesdna/DNA_curve_types.h b/source/blender/makesdna/DNA_curve_types.h index 2c4c6019556..d27ab8f125d 100644 --- a/source/blender/makesdna/DNA_curve_types.h +++ b/source/blender/makesdna/DNA_curve_types.h @@ -324,12 +324,13 @@ typedef enum eBezTriple_KeyframeType { /* *************** CHARINFO **************** */ /* flag */ -#define CU_STYLE (1+2) -#define CU_BOLD 1 -#define CU_ITALIC 2 -#define CU_UNDERLINE 4 -#define CU_WRAP 8 /* wordwrap occured here */ -#define CU_SMALLCAPS 16 +/* note: CU_CHINFO_WRAP and CU_CHINFO_SMALLCAPS_TEST are set dynamically */ +#define CU_CHINFO_BOLD (1<<0) +#define CU_CHINFO_ITALIC (1<<1) +#define CU_CHINFO_UNDERLINE (1<<2) +#define CU_CHINFO_WRAP (1<<3) /* wordwrap occured here */ +#define CU_CHINFO_SMALLCAPS (1<<4) +#define CU_CHINFO_SMALLCAPS_CHECK (1<<5) /* set at runtime, checks if case switching is needed */ #endif diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index b2d0e64bebf..d8bc683ae12 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -878,33 +878,29 @@ static void rna_def_charinfo(BlenderRNA *brna) RNA_def_struct_ui_text(srna, "Text Character Format", "Text character formatting settings"); /* flags */ - prop= RNA_def_property(srna, "style", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_STYLE); - RNA_def_property_ui_text(prop, "Style", ""); - RNA_def_property_update(prop, 0, "rna_Curve_update_data"); - prop= RNA_def_property(srna, "bold", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_BOLD); + RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_CHINFO_BOLD); RNA_def_property_ui_text(prop, "Bold", ""); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); prop= RNA_def_property(srna, "italic", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_ITALIC); + RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_CHINFO_ITALIC); RNA_def_property_ui_text(prop, "Italic", ""); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); prop= RNA_def_property(srna, "underline", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_UNDERLINE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_CHINFO_UNDERLINE); RNA_def_property_ui_text(prop, "Underline", ""); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); - prop= RNA_def_property(srna, "wrap", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_WRAP); + /* probably there is no reason to expose this */ + /* prop= RNA_def_property(srna, "wrap", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_CHINFO_WRAP); RNA_def_property_ui_text(prop, "Wrap", ""); - RNA_def_property_update(prop, 0, "rna_Curve_update_data"); + RNA_def_property_update(prop, 0, "rna_Curve_update_data"); */ prop= RNA_def_property(srna, "use_small_caps", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_SMALLCAPS); + RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_CHINFO_SMALLCAPS); RNA_def_property_ui_text(prop, "Small Caps", ""); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); } From 7a2394c718112f9803418555fdcc0e222095ef2b Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Wed, 14 Jul 2010 03:19:19 +0000 Subject: [PATCH 448/674] Patch #22807: Add select/deselect buttons to armature bone group panel Patch submitted by Torsten Rupp (rupp) --- .../scripts/ui/properties_data_armature.py | 13 +- .../editors/armature/armature_intern.h | 2 + .../blender/editors/armature/armature_ops.c | 2 + source/blender/editors/armature/poseobject.c | 119 +++++++++++++++--- 4 files changed, 116 insertions(+), 20 deletions(-) diff --git a/release/scripts/ui/properties_data_armature.py b/release/scripts/ui/properties_data_armature.py index 0575f13e8be..38903cc1f27 100644 --- a/release/scripts/ui/properties_data_armature.py +++ b/release/scripts/ui/properties_data_armature.py @@ -160,13 +160,16 @@ class DATA_PT_bone_groups(DataButtonsPanel): col = split.column() col.template_triColorSet(group, "colors") - row = layout.row(align=True) + row = layout.row() row.active = (ob.proxy is None) - row.operator("pose.group_assign", text="Assign") - row.operator("pose.group_unassign", text="Remove") #row.operator("pose.bone_group_remove_from", text="Remove") - #row.operator("object.bone_group_select", text="Select") - #row.operator("object.bone_group_deselect", text="Deselect") + sub = row.row(align=True) + sub.operator("pose.group_assign", text="Assign") + sub.operator("pose.group_unassign", text="Remove") #row.operator("pose.bone_group_remove_from", text="Remove") + + sub = row.row(align=True) + sub.operator("pose.group_select", text="Select") + sub.operator("pose.group_deselect", text="Deselect") # TODO: this panel will soon be depreceated too diff --git a/source/blender/editors/armature/armature_intern.h b/source/blender/editors/armature/armature_intern.h index a4a2d020482..fadb4f234d9 100644 --- a/source/blender/editors/armature/armature_intern.h +++ b/source/blender/editors/armature/armature_intern.h @@ -107,6 +107,8 @@ void POSE_OT_group_remove(struct wmOperatorType *ot); void POSE_OT_group_remove(struct wmOperatorType *ot); void POSE_OT_group_assign(struct wmOperatorType *ot); void POSE_OT_group_unassign(struct wmOperatorType *ot); +void POSE_OT_group_select(struct wmOperatorType *ot); +void POSE_OT_group_deselect(struct wmOperatorType *ot); void POSE_OT_paths_calculate(struct wmOperatorType *ot); void POSE_OT_paths_clear(struct wmOperatorType *ot); diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c index 672dd22b704..7abf8575921 100644 --- a/source/blender/editors/armature/armature_ops.c +++ b/source/blender/editors/armature/armature_ops.c @@ -126,6 +126,8 @@ void ED_operatortypes_armature(void) WM_operatortype_append(POSE_OT_group_remove); WM_operatortype_append(POSE_OT_group_assign); WM_operatortype_append(POSE_OT_group_unassign); + WM_operatortype_append(POSE_OT_group_select); + WM_operatortype_append(POSE_OT_group_deselect); WM_operatortype_append(POSE_OT_paths_calculate); WM_operatortype_append(POSE_OT_paths_clear); diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c index 24c3aff9a6a..6fdce9b9c41 100644 --- a/source/blender/editors/armature/poseobject.c +++ b/source/blender/editors/armature/poseobject.c @@ -1247,8 +1247,8 @@ static int pose_group_assign_exec (bContext *C, wmOperator *op) pose_add_group(ob); /* add selected bones to group then */ - // NOTE: unfortunately, we cannot use the context-iterators here, since they might not be defined... - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) + { pchan->agrp_index= pose->active_group; done= 1; } @@ -1290,7 +1290,6 @@ static int pose_group_unassign_exec (bContext *C, wmOperator *op) Object *ob; bArmature *arm; bPose *pose; - bPoseChannel *pchan; short done= 0; /* since this call may also be used from the buttons window, we need to check for where to get the object */ @@ -1306,20 +1305,14 @@ static int pose_group_unassign_exec (bContext *C, wmOperator *op) arm= ob->data; /* find selected bones to remove from all bone groups */ - // NOTE: unfortunately, we cannot use the context-iterators here, since they might not be defined... - // CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) - for (pchan= pose->chanbase.first; pchan; pchan= pchan->next) { - /* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */ - // NOTE: sync this view3d_context() in space_view3d.c - if ((pchan->bone) && (arm->layer & pchan->bone->layer) && !(pchan->bone->flag & BONE_HIDDEN_P)) { - if ((pchan->bone->flag & BONE_SELECTED) || (pchan->bone == arm->act_bone)) { - if (pchan->agrp_index) { - pchan->agrp_index= 0; - done= 1; - } - } + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) + { + if (pchan->agrp_index) { + pchan->agrp_index= 0; + done= 1; } } + CTX_DATA_END; /* notifiers for updates */ WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); @@ -1346,6 +1339,102 @@ void POSE_OT_group_unassign (wmOperatorType *ot) ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; } +static void pose_group_select(bContext *C, Object *ob, int select) +{ + bPose *pose= ob->pose; + + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, visible_pose_bones) + { + if ((pchan->bone->flag & BONE_UNSELECTABLE)==0) { + if (select) { + if (pchan->agrp_index == pose->active_group) + pchan->bone->flag |= BONE_SELECTED; + } + else { + if (pchan->agrp_index == pose->active_group) + pchan->bone->flag &= ~BONE_SELECTED; + } + } + } + CTX_DATA_END; +} + +static int pose_group_select_exec (bContext *C, wmOperator *op) +{ + ScrArea *sa= CTX_wm_area(C); + Object *ob; + + /* since this call may also be used from the buttons window, we need to check for where to get the object */ + if (sa->spacetype == SPACE_BUTS) + ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; + else + ob= CTX_data_active_object(C); + + /* only continue if there's an object, and a pose there too */ + if (ELEM(NULL, ob, ob->pose)) + return OPERATOR_CANCELLED; + + pose_group_select(C, ob, 1); + + /* notifiers for updates */ + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); + + return OPERATOR_FINISHED; +} + +void POSE_OT_group_select (wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Select Bones of Bone Group"; + ot->idname= "POSE_OT_group_select"; + ot->description= "Select bones in active Bone Group"; + + /* api callbacks */ + ot->exec= pose_group_select_exec; + ot->poll= ED_operator_posemode; + + /* flags */ + ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; +} + +static int pose_group_deselect_exec (bContext *C, wmOperator *op) +{ + ScrArea *sa= CTX_wm_area(C); + Object *ob; + + /* since this call may also be used from the buttons window, we need to check for where to get the object */ + if (sa->spacetype == SPACE_BUTS) + ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; + else + ob= CTX_data_active_object(C); + + /* only continue if there's an object, and a pose there too */ + if (ELEM(NULL, ob, ob->pose)) + return OPERATOR_CANCELLED; + + pose_group_select(C, ob, 0); + + /* notifiers for updates */ + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); + + return OPERATOR_FINISHED; +} + +void POSE_OT_group_deselect (wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Deselecte Bone Group"; + ot->idname= "POSE_OT_group_deselect"; + ot->description= "Deselect bones of active Bone Group"; + + /* api callbacks */ + ot->exec= pose_group_deselect_exec; + ot->poll= ED_operator_posemode; + + /* flags */ + ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; +} + /* ********************************************** */ static int pose_flip_names_exec (bContext *C, wmOperator *op) From 6b6cdbe322a2663954b8c46699a8e162d1e923c5 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 14 Jul 2010 07:47:03 +0000 Subject: [PATCH 449/674] pointcache support for relative external paths with the useual // prefix as well as library path option. --- release/scripts/ui/properties_physics_common.py | 5 ++++- source/blender/blenkernel/intern/pointcache.c | 12 ++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/release/scripts/ui/properties_physics_common.py b/release/scripts/ui/properties_physics_common.py index 6d97e82ff41..be8972e4fe6 100644 --- a/release/scripts/ui/properties_physics_common.py +++ b/release/scripts/ui/properties_physics_common.py @@ -46,7 +46,10 @@ def point_cache_ui(self, context, cache, enabled, cachetype): split.prop(cache, "name", text="File Name") split.prop(cache, "index", text="") - layout.label(text="File Path:") + row = layout.row() + row.label(text="File Path:") + row.prop(cache, "use_library_path", "Use Lib Path") + layout.prop(cache, "filepath", text="") layout.label(text=cache.info) diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c index e14828d0f20..5295a496d2b 100644 --- a/source/blender/blenkernel/intern/pointcache.c +++ b/source/blender/blenkernel/intern/pointcache.c @@ -1067,20 +1067,20 @@ void BKE_ptcache_ids_from_object(ListBase *lb, Object *ob, Scene *scene, int dup static int ptcache_path(PTCacheID *pid, char *filename) { - Library *lib; + Library *lib= (pid)? pid->ob->id.lib: NULL; + const char *blendfilename= (lib && (pid->cache->flag & PTCACHE_IGNORE_LIBPATH)==0) ? lib->filepath: G.sce; size_t i; - lib= (pid)? pid->ob->id.lib: NULL; - if(pid->cache->flag & PTCACHE_EXTERNAL) { strcpy(filename, pid->cache->path); + + if(strncmp(filename, "//", 2)==0) + BLI_path_abs(filename, blendfilename); + return BLI_add_slash(filename); /* new strlen() */ } else if (G.relbase_valid || lib) { char file[MAX_PTCACHE_PATH]; /* we dont want the dir, only the file */ - char *blendfilename; - - blendfilename= (lib && (pid->cache->flag & PTCACHE_IGNORE_LIBPATH)==0) ? lib->filepath: G.sce; BLI_split_dirfile(blendfilename, NULL, file); i = strlen(file); From bdd733c3f2710b1bf5182401166a9285d779d255 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 14 Jul 2010 08:00:03 +0000 Subject: [PATCH 450/674] bugfix [#22840] Folders with ".blend" on the end are processed like .blend files elubie, this was added r27523 but cant see why it would be useful to have. --- source/blender/editors/space_file/filelist.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c index 37653d616c4..70ef857699a 100644 --- a/source/blender/editors/space_file/filelist.c +++ b/source/blender/editors/space_file/filelist.c @@ -807,9 +807,6 @@ void filelist_setfiletypes(struct FileList* filelist, short has_quicktime) /* Don't check extensions for directories */ if (file->type & S_IFDIR) { - if(BLO_has_bfile_extension(file->relname)) { - file->flags |= BLENDERFILE; - } continue; } From 16a54c9b8f1d972091b739b7b292c67a0fd2349c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 14 Jul 2010 08:24:24 +0000 Subject: [PATCH 451/674] [#22782] Solidify Thickness negative and positive values are the same result more a communication problem but Ed Britton raises a valid point that often you want the original faces so changing the default offset to -1.0. --- source/blender/makesrna/intern/rna_modifier.c | 2 +- source/blender/modifiers/intern/MOD_solidify.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index 1d3798713f5..25284932689 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -2065,7 +2065,7 @@ static void rna_def_modifier_solidify(BlenderRNA *brna) RNA_def_property_float_sdna(prop, NULL, "offset_fac"); RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); RNA_def_property_ui_range(prop, -1, 1, 0.1, 4); - RNA_def_property_ui_text(prop, "Offset", ""); + RNA_def_property_ui_text(prop, "Offset", "Offset the thickness from the center"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); prop= RNA_def_property(srna, "edge_crease_inner", PROP_FLOAT, PROP_FACTOR); diff --git a/source/blender/modifiers/intern/MOD_solidify.c b/source/blender/modifiers/intern/MOD_solidify.c index 1eb8f288006..a6d99ad72ae 100644 --- a/source/blender/modifiers/intern/MOD_solidify.c +++ b/source/blender/modifiers/intern/MOD_solidify.c @@ -162,6 +162,7 @@ static void initData(ModifierData *md) { SolidifyModifierData *smd = (SolidifyModifierData*) md; smd->offset = 0.01f; + smd->offset_fac = -1.0f; smd->flag = MOD_SOLIDIFY_RIM; } From 935ca611c30c1a2c5efb30d68f240b59de71febf Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 14 Jul 2010 08:39:59 +0000 Subject: [PATCH 452/674] [#22830] Hex colour number (COLOUR BALANCE) is out the range in video strip - use FTOCHAR macro which clamps values above 1.0 (rather then wrapping) - also fixes a problem rounding down where white would display as FEFEFE rather then FFFFFF the report also mentions how editing colors above 255 is broken but think this isnt worth trying to support. --- source/blender/editors/interface/interface_regions.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index a2a7f4bf77a..f17a3371df1 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -1600,7 +1600,7 @@ void ui_update_block_buts_rgb(uiBlock *block, float *rgb, float *rhsv) if (rgb_gamma[1] > 1.0f) rgb_gamma[1] = modf(rgb_gamma[1], &intpart); if (rgb_gamma[2] > 1.0f) rgb_gamma[2] = modf(rgb_gamma[2], &intpart); - sprintf(col, "%02X%02X%02X", (unsigned int)(rgb_gamma[0]*255.0), (unsigned int)(rgb_gamma[1]*255.0), (unsigned int)(rgb_gamma[2]*255.0)); + sprintf(col, "%02X%02X%02X", FTOCHAR(rgb_gamma[0]), FTOCHAR(rgb_gamma[1]), FTOCHAR(rgb_gamma[2])); strcpy(bt->poin, col); } @@ -1861,8 +1861,8 @@ static void uiBlockPicker(uiBlock *block, float *rgb, PointerRNA *ptr, PropertyR } rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); - - sprintf(hexcol, "%02X%02X%02X", (unsigned int)(rgb_gamma[0]*255.0), (unsigned int)(rgb_gamma[1]*255.0), (unsigned int)(rgb_gamma[2]*255.0)); + + sprintf(hexcol, "%02X%02X%02X", FTOCHAR(rgb_gamma[0]), FTOCHAR(rgb_gamma[1]), FTOCHAR(rgb_gamma[2])); bt= uiDefBut(block, TEX, 0, "Hex: ", 0, -60, butwidth, UI_UNIT_Y, hexcol, 0, 8, 0, 0, "Hex triplet for color (#RRGGBB)"); uiButSetFunc(bt, do_hex_rna_cb, bt, hexcol); From e7877979af44da1662a6f908bd8b41de8e6abe14 Mon Sep 17 00:00:00 2001 From: Joerg Mueller Date: Wed, 14 Jul 2010 08:55:08 +0000 Subject: [PATCH 453/674] Merging revision 30301:30302 from my GSoC branch to trunk, log: Fixed error in 2.4x sound conversion. --- source/blender/blenloader/intern/readfile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 7f24c416526..f6122161130 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -9684,7 +9684,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) if(sAct->sound) { sound = newlibadr(fd, lib, sAct->sound); - sAct->flag = sound->flags | SOUND_FLAGS_3D ? ACT_SND_3D_SOUND : 0; + sAct->flag = sound->flags & SOUND_FLAGS_3D ? ACT_SND_3D_SOUND : 0; sAct->pitch = sound->pitch; sAct->volume = sound->volume; sAct->sound3D.reference_distance = sound->distance; From a305a7293923bb9221c37c1c7bb22106e8d9d182 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 14 Jul 2010 09:40:26 +0000 Subject: [PATCH 454/674] select parent/child now works for multiple selections ([/] keys) --- release/scripts/op/object.py | 46 +++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index e76218e4637..0353856ed20 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -113,24 +113,42 @@ class SelectHierarchy(bpy.types.Operator): return context.object def execute(self, context): - obj = context.object - if self.properties.direction == 'PARENT': - parent = obj.parent - if not parent: - return {'CANCELLED'} - obj_act = parent - else: - children = obj.children - if len(children) != 1: - return {'CANCELLED'} - obj_act = children[0] + objs = context.selected_objects + obj_act = context.object + + if context.object not in objs: + objs.append(context.object) if not self.properties.extend: - # obj.selected = False + # for obj in objs: + # obj.selected = False bpy.ops.object.select_all(action='DESELECT') - obj_act.selected = True - context.scene.objects.active = obj_act + if self.properties.direction == 'PARENT': + parents = [] + for obj in objs: + parent = obj.parent + + if parent: + parents.append(parent) + + if obj_act == obj: + context.scene.objects.active = parent + + parent.selected = True + + if parents: + return {'CANCELLED'} + + else: + children = [] + for obj in objs: + children += list(obj.children) + for obj_iter in children: + obj_iter.selected = True + + children.sort(key=lambda obj_iter: obj_iter.name) + context.scene.objects.active = children[0] return {'FINISHED'} From 7ad8e5b6f87fbee78d6676e33b80be9cfc74feea Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 14 Jul 2010 09:46:26 +0000 Subject: [PATCH 455/674] Fix #22816: crash in depsgraph loading some 2.49 files, tagging objects for update on load should be done later because it's not known yet which scene is used with which layers visible before the windows are created. --- source/blender/blenkernel/intern/blender.c | 5 +++-- source/blender/blenkernel/intern/depsgraph.c | 4 ++-- source/blender/windowmanager/intern/wm_files.c | 4 ++++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index 57e72fc5671..101c7a3bbbd 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -313,8 +313,6 @@ static void setup_app_data(bContext *C, BlendFileData *bfd, char *filename) /* baseflags, groups, make depsgraph, etc */ set_scene_bg(CTX_data_scene(C)); - - DAG_on_load_update(); MEM_freeN(bfd); } @@ -478,6 +476,9 @@ static int read_undosave(bContext *C, UndoElem *uel) strcpy(G.sce, scestr); G.fileflags= fileflags; + if(success) + DAG_on_load_update(); + return success; } diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index 1a1ca8a8d3e..142f80a350e 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -2217,7 +2217,7 @@ static void dag_current_scene_layers(Main *bmain, Scene **sce, unsigned int *lay *sce= bmain->scene.first; if(*sce) *lay= (*sce)->lay; - /* XXX for background mode, we should get the scen + /* XXX for background mode, we should get the scene from somewhere, for the -S option, but it's in the context, how to get it here? */ } @@ -2248,7 +2248,7 @@ void DAG_on_load_update(void) dag_current_scene_layers(bmain, &scene, &lay); - if(scene) { + if(scene && scene->theDag) { /* derivedmeshes and displists are not saved to file so need to be remade, tag them so they get remade in the scene update loop, note armature poses or object matrices are preserved and do not diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 19a20a13345..8a05e6c4916 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -61,6 +61,7 @@ #include "BKE_blender.h" #include "BKE_context.h" +#include "BKE_depsgraph.h" #include "BKE_DerivedMesh.h" #include "BKE_exotic.h" #include "BKE_font.h" @@ -309,7 +310,9 @@ void WM_read_file(bContext *C, char *name, ReportList *reports) // refresh_interface_font(); CTX_wm_window_set(C, CTX_wm_manager(C)->windows.first); + ED_editors_init(C); + DAG_on_load_update(); #ifndef DISABLE_PYTHON /* run any texts that were loaded in and flagged as modules */ @@ -389,6 +392,7 @@ int WM_read_homefile(bContext *C, wmOperator *op) BKE_write_undo(C, "original"); /* save current state */ ED_editors_init(C); + DAG_on_load_update(); WM_event_add_notifier(C, NC_WM|ND_FILEREAD, NULL); CTX_wm_window_set(C, NULL); /* exits queues */ From ee9437f794d0c583a3535b94ab22231a1f3a4f58 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 14 Jul 2010 10:44:34 +0000 Subject: [PATCH 456/674] Fix for #22818: blender doesn't find a systemwide installed python. What happens is that blender looks for a directory "python" in the same place as the executable for local installations, but that also means when you have /usr/bin/blender it will look for /usr/bin/python, which is an executable. Now it checks if it is actually a directory and not a file. --- source/blender/blenlib/intern/path_util.c | 34 +++++++++++------------ 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index a75d57a988e..423bf452a4d 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -747,7 +747,7 @@ char *BLI_gethome(void) { ret = getenv("HOME"); if(ret) { sprintf(dir, "%s\\%s", ret, blender_version_decimal()); - if (BLI_exists(dir)) return dir; + if (BLI_is_dir(dir)) return dir; } /* else, check install dir (path containing blender.exe) */ @@ -755,7 +755,7 @@ char *BLI_gethome(void) { if(BLI_getInstallationDir(dir)) { sprintf(dir, "%s", dir, blender_version_decimal()); - if (BLI_exists(dir)) return(dir); + if (BLI_is_dir(dir)) return(dir); } @@ -768,24 +768,24 @@ char *BLI_gethome(void) { if (hResult == S_OK) { - if (BLI_exists(appdatapath)) { /* from fop, also below... */ + if (BLI_is_dir(appdatapath)) { /* from fop, also below... */ sprintf(dir, "%s\\Blender Foundation\\Blender", appdatapath); BLI_recurdir_fileops(dir); - if (BLI_exists(dir)) { + if (BLI_is_dir(dir)) { sprintf(dir,"%s\\%s", dir, blender_version_decimal()); - if(BLI_exists(dir)) return(dir); + if(BLI_is_dir(dir)) return(dir); } } hResult = SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, appdatapath); if (hResult == S_OK) { - if (BLI_exists(appdatapath)) + if (BLI_is_dir(appdatapath)) { /* from fop, also below... */ sprintf(dir, "%s\\Blender Foundation\\Blender", appdatapath); BLI_recurdir_fileops(dir); - if (BLI_exists(dir)) { + if (BLI_is_dir(dir)) { sprintf(dir,"%s\\%s", dir, blender_version_decimal()); - if(BLI_exists(dir)) return(dir); + if(BLI_is_dir(dir)) return(dir); } } } @@ -809,7 +809,7 @@ static int test_data_path(char *targetpath, char *path_base, char *path_sep, cha BLI_make_file_string("/", targetpath, tmppath, folder_name); - if (BLI_exists(targetpath)) { + if (BLI_is_dir(targetpath)) { #ifdef PATH_DEBUG printf("\tpath found: %s\n", targetpath); #endif @@ -932,7 +932,7 @@ static int test_path(char *targetpath, char *path_base, char *path_sep, char *fo BLI_make_file_string("/", targetpath, tmppath, folder_name); - if (BLI_exists(targetpath)) { + if (BLI_is_dir(targetpath)) { #ifdef PATH_DEBUG2 printf("\tpath found: %s\n", targetpath); #endif @@ -952,7 +952,7 @@ static int test_env_path(char *path, char *envvar) char *env = envvar?getenv(envvar):NULL; if (!env) return 0; - if (BLI_exists(env)) { + if (BLI_is_dir(env)) { BLI_strncpy(path, env, FILE_MAX); return 1; } else { @@ -1245,7 +1245,7 @@ void BLI_make_exist(char *dir) { a = strlen(dir); #ifdef WIN32 - while(BLI_exists(dir) == 0){ + while(BLI_is_dir(dir) == 0){ a --; while(dir[a] != '\\'){ a--; @@ -1259,7 +1259,7 @@ void BLI_make_exist(char *dir) { } } #else - while(BLI_exist(dir) == 0){ + while(BLI_is_dir(dir) == 0){ a --; while(dir[a] != '/'){ a--; @@ -1682,7 +1682,7 @@ void BLI_where_is_temp(char *fullname, int usertemp) { fullname[0] = '\0'; - if (usertemp && BLI_exists(U.tempdir)) { + if (usertemp && BLI_is_dir(U.tempdir)) { strcpy(fullname, U.tempdir); } @@ -1690,7 +1690,7 @@ void BLI_where_is_temp(char *fullname, int usertemp) #ifdef WIN32 if (fullname[0] == '\0') { char *tmp = getenv("TEMP"); /* Windows */ - if (tmp && BLI_exists(tmp)) { + if (tmp && BLI_is_dir(tmp)) { strcpy(fullname, tmp); } } @@ -1698,14 +1698,14 @@ void BLI_where_is_temp(char *fullname, int usertemp) /* Other OS's - Try TMP and TMPDIR */ if (fullname[0] == '\0') { char *tmp = getenv("TMP"); - if (tmp && BLI_exists(tmp)) { + if (tmp && BLI_is_dir(tmp)) { strcpy(fullname, tmp); } } if (fullname[0] == '\0') { char *tmp = getenv("TMPDIR"); - if (tmp && BLI_exists(tmp)) { + if (tmp && BLI_is_dir(tmp)) { strcpy(fullname, tmp); } } From f406cf4ac82510c6b064d9411ec0cbd38a0ef7e0 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 14 Jul 2010 10:46:12 +0000 Subject: [PATCH 457/674] Fix a few compile warnings and rename gpu_buffers.h to GPU_buffers.h for consistency. --- source/blender/blenkernel/intern/DerivedMesh.c | 2 +- source/blender/blenkernel/intern/cdderivedmesh.c | 2 +- source/blender/blenlib/intern/pbvh.c | 2 +- source/blender/editors/sculpt_paint/sculpt.c | 2 +- source/blender/editors/space_view3d/drawmesh.c | 2 +- source/blender/gpu/{gpu_buffers.h => GPU_buffers.h} | 1 + source/blender/gpu/intern/gpu_buffers.c | 2 +- source/blender/gpu/intern/gpu_draw.c | 4 ++-- source/blender/windowmanager/intern/wm_init_exit.c | 2 +- 9 files changed, 10 insertions(+), 9 deletions(-) rename source/blender/gpu/{gpu_buffers.h => GPU_buffers.h} (99%) diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index d5ece6ae31f..8b1443403a3 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -59,7 +59,7 @@ #include "BIF_gl.h" #include "BIF_glutil.h" -#include "gpu_buffers.h" +#include "GPU_buffers.h" #include "GPU_draw.h" #include "GPU_extensions.h" #include "GPU_material.h" diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index a586ca57966..41e33002999 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -54,7 +54,7 @@ #include "MEM_guardedalloc.h" -#include "gpu_buffers.h" +#include "GPU_buffers.h" #include "GPU_draw.h" #include "GPU_extensions.h" #include "GPU_material.h" diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c index 82e2090c432..426181e5304 100644 --- a/source/blender/blenlib/intern/pbvh.c +++ b/source/blender/blenlib/intern/pbvh.c @@ -32,7 +32,7 @@ #include "BKE_mesh.h" /* for mesh_calc_normals */ #include "BKE_global.h" /* for mesh_calc_normals */ -#include "gpu_buffers.h" +#include "GPU_buffers.h" #define LEAF_LIMIT 10000 diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 53e07a50020..b53771c92ae 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -82,7 +82,7 @@ #include "RE_render_ext.h" -#include "gpu_buffers.h" +#include "GPU_buffers.h" #include #include diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c index 63155a95601..f0e2f33491c 100644 --- a/source/blender/editors/space_view3d/drawmesh.c +++ b/source/blender/editors/space_view3d/drawmesh.c @@ -62,7 +62,7 @@ #include "UI_resources.h" -#include "gpu_buffers.h" +#include "GPU_buffers.h" #include "GPU_extensions.h" #include "GPU_draw.h" diff --git a/source/blender/gpu/gpu_buffers.h b/source/blender/gpu/GPU_buffers.h similarity index 99% rename from source/blender/gpu/gpu_buffers.h rename to source/blender/gpu/GPU_buffers.h index 75e596935a3..6f552e087d7 100644 --- a/source/blender/gpu/gpu_buffers.h +++ b/source/blender/gpu/GPU_buffers.h @@ -49,6 +49,7 @@ #endif struct DerivedMesh; +struct DMGridData; struct GHash; struct DMGridData; diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c index e0a47c0c5bc..bc90ddb23b7 100644 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@ -49,7 +49,7 @@ #include "DNA_userdef_types.h" -#include "gpu_buffers.h" +#include "GPU_buffers.h" #define GPU_BUFFER_VERTEX_STATE 1 #define GPU_BUFFER_NORMAL_STATE 2 diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c index abbdbb4ac27..488eea40500 100644 --- a/source/blender/gpu/intern/gpu_draw.c +++ b/source/blender/gpu/intern/gpu_draw.c @@ -65,10 +65,10 @@ #include "BLI_threads.h" #include "BLI_blenlib.h" +#include "GPU_buffers.h" +#include "GPU_draw.h" #include "GPU_extensions.h" #include "GPU_material.h" -#include "GPU_draw.h" -#include "gpu_buffers.h" #include "smoke_API.h" diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c index acb3f5ea254..db668390b88 100644 --- a/source/blender/windowmanager/intern/wm_init_exit.c +++ b/source/blender/windowmanager/intern/wm_init_exit.c @@ -88,7 +88,7 @@ #include "UI_interface.h" #include "BLF_api.h" -#include "gpu_buffers.h" +#include "GPU_buffers.h" #include "GPU_extensions.h" #include "GPU_draw.h" From 9a93713f645e43f795ffeffb3ef0435a86d3a74c Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Wed, 14 Jul 2010 11:03:07 +0000 Subject: [PATCH 458/674] Bugfix #22792: Blender crashes after inserting keyframe pressing "I" key Insert Keyframe function was not checking that an ID-block was given before trying to resolve the RNA-path using it. --- source/blender/editors/animation/keyframing.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index 882fb3e91dc..f60181d7f6c 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -817,15 +817,21 @@ short insert_keyframe_direct (PointerRNA ptr, PropertyRNA *prop, FCurve *fcu, fl short insert_keyframe (ID *id, bAction *act, const char group[], const char rna_path[], int array_index, float cfra, short flag) { PointerRNA id_ptr, ptr; - PropertyRNA *prop; + PropertyRNA *prop = NULL; FCurve *fcu; int array_index_max= array_index+1; int ret= 0; /* validate pointer first - exit if failure */ + if (id == NULL) { + printf("Insert Key: no ID-block to insert keyframe in (Path = %s) \n", rna_path); + return 0; + } + RNA_id_pointer_create(id, &id_ptr); if ((RNA_path_resolve(&id_ptr, rna_path, &ptr, &prop) == 0) || (prop == NULL)) { - printf("Insert Key: Could not insert keyframe, as RNA Path is invalid for the given ID (ID = %s, Path = %s)\n", id->name, rna_path); + printf("Insert Key: Could not insert keyframe, as RNA Path is invalid for the given ID (ID = %s, Path = %s)\n", + (id)? id->name : "", rna_path); return 0; } @@ -922,7 +928,7 @@ short delete_keyframe (ID *id, bAction *act, const char group[], const char rna_ if ELEM(NULL, id, adt) { printf("ERROR: no ID-block and/or AnimData to delete keyframe from \n"); return 0; - } + } /* validate pointer first - exit if failure */ RNA_id_pointer_create(id, &id_ptr); From fef943873c0b778ce9c372768399d9e706e49a62 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Wed, 14 Jul 2010 11:07:30 +0000 Subject: [PATCH 459/674] DopeSheet: Commented out menu entry for 'Grease Pencil' mode for now, since I don't have time to restore this now (i.e. in time for 2.53). It will come back some day, but just probably not for another few months. --- source/blender/makesrna/intern/rna_space.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 67a2892d2a2..227466f808d 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -1595,8 +1595,8 @@ static void rna_def_space_dopesheet(BlenderRNA *brna) static EnumPropertyItem mode_items[] = { {SACTCONT_DOPESHEET, "DOPESHEET", 0, "DopeSheet", ""}, {SACTCONT_ACTION, "ACTION", 0, "Action Editor", ""}, - {SACTCONT_SHAPEKEY, "SHAPEKEY", 0, "ShapeKey Editor", ""}, // XXX to be depreceated? - {SACTCONT_GPENCIL, "GPENCIL", 0, "Grease Pencil", ""}, + {SACTCONT_SHAPEKEY, "SHAPEKEY", 0, "ShapeKey Editor", ""}, + //{SACTCONT_GPENCIL, "GPENCIL", 0, "Grease Pencil", ""}, // XXX: to be reimplemented, but not enough time before 2.53 - Aligorith, 2010Jul14 {0, NULL, 0, NULL, NULL}}; From 80355fd456cbdb87d0b88a668796d68a0b66c0b2 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 14 Jul 2010 11:58:19 +0000 Subject: [PATCH 460/674] bugfix [#22843] Cannot export to folder with ".blend" on the end. --- release/scripts/io/export_3ds.py | 3 +-- release/scripts/io/export_fbx.py | 2 +- release/scripts/io/export_mdd.py | 3 ++- release/scripts/io/export_obj.py | 2 +- release/scripts/io/export_ply.py | 3 ++- release/scripts/io/export_x3d.py | 3 +-- release/scripts/op/object.py | 8 ++++---- release/scripts/op/uv.py | 3 ++- 8 files changed, 14 insertions(+), 13 deletions(-) diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index bfe568153f9..4fd889c75c6 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -1140,7 +1140,7 @@ class Export3DS(bpy.types.Operator): # Add to a menu def menu_func(self, context): - default_path = bpy.data.filepath.replace(".blend", ".3ds") + default_path = os.path.splitext(bpy.data.filepath)[0] + ".3ds" self.layout.operator(Export3DS.bl_idname, text="3D Studio (.3ds)").filepath = default_path @@ -1154,4 +1154,3 @@ def unregister(): if __name__ == "__main__": register() - diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index 9468cadec83..4505b56b41c 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -3437,7 +3437,7 @@ class ExportFBX(bpy.types.Operator): def menu_func(self, context): - default_path = bpy.data.filepath.replace(".blend", ".fbx") + default_path = os.path.splitext(bpy.data.filepath)[0] + ".fbx" self.layout.operator(ExportFBX.bl_idname, text="Autodesk FBX (.fbx)").filepath = default_path diff --git a/release/scripts/io/export_mdd.py b/release/scripts/io/export_mdd.py index b7de707c9f0..d2e53070910 100644 --- a/release/scripts/io/export_mdd.py +++ b/release/scripts/io/export_mdd.py @@ -183,7 +183,8 @@ class ExportMDD(bpy.types.Operator): def menu_func(self, context): - default_path = bpy.data.filepath.replace(".blend", ".mdd") + import os + default_path = os.path.splitext(bpy.data.filepath)[0] + ".mdd" self.layout.operator(ExportMDD.bl_idname, text="Lightwave Point Cache (.mdd)").filepath = default_path diff --git a/release/scripts/io/export_obj.py b/release/scripts/io/export_obj.py index 4451cb77a1b..626b92c3591 100644 --- a/release/scripts/io/export_obj.py +++ b/release/scripts/io/export_obj.py @@ -964,7 +964,7 @@ class ExportOBJ(bpy.types.Operator): def menu_func(self, context): - default_path = bpy.data.filepath.replace(".blend", ".obj") + default_path = os.path.splitext(bpy.data.filepath)[0] + ".obj" self.layout.operator(ExportOBJ.bl_idname, text="Wavefront (.obj)").filepath = default_path diff --git a/release/scripts/io/export_ply.py b/release/scripts/io/export_ply.py index 09d25b61010..0b936bdceb2 100644 --- a/release/scripts/io/export_ply.py +++ b/release/scripts/io/export_ply.py @@ -310,7 +310,8 @@ class ExportPLY(bpy.types.Operator): def menu_func(self, context): - default_path = bpy.data.filepath.replace(".blend", ".ply") + import os + default_path = os.path.splitext(bpy.data.filepath)[0] + ".ply" self.layout.operator(ExportPLY.bl_idname, text="Stanford (.ply)").filepath = default_path diff --git a/release/scripts/io/export_x3d.py b/release/scripts/io/export_x3d.py index 2ade015a1e9..1bad80f6d8e 100644 --- a/release/scripts/io/export_x3d.py +++ b/release/scripts/io/export_x3d.py @@ -1242,7 +1242,7 @@ class ExportX3D(bpy.types.Operator): def menu_func(self, context): - default_path = bpy.data.filepath.replace(".blend", ".x3d") + default_path = os.path.splitext(bpy.data.filepath)[0] + ".x3d" self.layout.operator(ExportX3D.bl_idname, text="X3D Extensible 3D (.x3d)").filepath = default_path @@ -1259,4 +1259,3 @@ def unregister(): if __name__ == "__main__": register() - diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index 0353856ed20..b16d2b0dcf2 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -131,11 +131,11 @@ class SelectHierarchy(bpy.types.Operator): if parent: parents.append(parent) - - if obj_act == obj: - context.scene.objects.active = parent - parent.selected = True + if obj_act == obj: + context.scene.objects.active = parent + + parent.selected = True if parents: return {'CANCELLED'} diff --git a/release/scripts/op/uv.py b/release/scripts/op/uv.py index b9bc54bf264..51c1695677b 100644 --- a/release/scripts/op/uv.py +++ b/release/scripts/op/uv.py @@ -210,7 +210,8 @@ class ExportUVLayout(bpy.types.Operator): def menu_func(self, context): - default_path = bpy.data.filepath.replace(".blend", ".svg") + import os + default_path = os.path.splitext(bpy.data.filepath)[0] + ".svg" self.layout.operator(ExportUVLayout.bl_idname).filepath = default_path From ae1748b98470f08ed805e101b218f44c17d9b6b2 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 14 Jul 2010 12:16:23 +0000 Subject: [PATCH 461/674] bugfix [#22847] 18+ char Name in Edit Strip causes errors when duplicating strips --- source/blender/blenkernel/intern/sequencer.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index e8f8c2f3c3b..d97e6151a13 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -795,7 +795,7 @@ static void seqbase_unique_name(ListBase *seqbasep, SeqUniqueInfo *sui) Sequence *seq; for(seq=seqbasep->first; seq; seq= seq->next) { if (sui->seq != seq && strcmp(sui->name_dest, seq->name+2)==0) { - sprintf(sui->name_dest, "%.18s.%03d", sui->name_src, sui->count++); + sprintf(sui->name_dest, "%.17s.%03d", sui->name_src, sui->count++); /*24 - 2 for prefix, -1 for \0 */ sui->match= 1; /* be sure to re-scan */ } } @@ -816,13 +816,18 @@ void seqbase_unique_name_recursive(ListBase *seqbasep, struct Sequence *seq) strcpy(sui.name_src, seq->name+2); strcpy(sui.name_dest, seq->name+2); - /* Strip off the suffix */ - if ((dot=strrchr(sui.name_src, '.'))) - *dot= '\0'; - sui.count= 1; sui.match= 1; /* assume the worst to start the loop */ + /* Strip off the suffix */ + if ((dot=strrchr(sui.name_src, '.'))) { + *dot= '\0'; + dot++; + + if(*dot) + sui.count= atoi(dot) + 1; + } + while(sui.match) { sui.match= 0; seqbase_unique_name(seqbasep, &sui); From 5505697ac508c02b8a2e196c5a8c07431bc687cf Mon Sep 17 00:00:00 2001 From: Jason Wilkins Date: Wed, 14 Jul 2010 14:11:03 +0000 Subject: [PATCH 462/674] Merge GSOC Sculpt Branch: 28499-30319 https://svn.blender.org/svnroot/bf-blender/branches/soc-2010-jwilkins See log of that branch for details. --- intern/ghost/SConscript | 3 +- intern/ghost/intern/GHOST_WindowCarbon.cpp | 4 +- intern/ghost/intern/GHOST_WindowCocoa.mm | 3 +- intern/ghost/intern/GHOST_WindowWin32.cpp | 2 +- .../scripts/ui/properties_data_modifier.py | 1 + release/scripts/ui/properties_texture.py | 19 +- release/scripts/ui/space_userpref.py | 14 + release/scripts/ui/space_view3d_toolbar.py | 476 ++- source/blender/blenkernel/BKE_blender.h | 4 +- source/blender/blenkernel/BKE_brush.h | 10 + source/blender/blenkernel/BKE_paint.h | 4 + source/blender/blenkernel/intern/brush.c | 106 +- source/blender/blenkernel/intern/colortools.c | 56 +- source/blender/blenkernel/intern/icons.c | 5 +- source/blender/blenkernel/intern/image.c | 6 +- source/blender/blenlib/BLI_pbvh.h | 26 +- source/blender/blenlib/intern/math_geom.c | 77 +- source/blender/blenlib/intern/pbvh.c | 321 +- source/blender/blenloader/intern/readfile.c | 77 + .../blender/editors/gpencil/gpencil_buttons.c | 2 +- source/blender/editors/include/UI_interface.h | 6 +- .../editors/interface/interface_icons.c | 12 + .../editors/interface/interface_templates.c | 73 +- source/blender/editors/interface/resources.c | 15 +- .../blender/editors/sculpt_paint/SConscript | 12 +- .../editors/sculpt_paint/paint_image.c | 78 +- .../editors/sculpt_paint/paint_intern.h | 7 + .../blender/editors/sculpt_paint/paint_ops.c | 93 +- .../editors/sculpt_paint/paint_stroke.c | 816 ++++- .../editors/sculpt_paint/paint_utils.c | 6 +- source/blender/editors/sculpt_paint/sculpt.c | 3109 ++++++++++++----- .../editors/sculpt_paint/sculpt_intern.h | 44 + .../editors/sculpt_paint/sculpt_undo.c | 302 ++ .../editors/space_image/image_buttons.c | 2 +- .../editors/space_logic/logic_window.c | 2 +- .../blender/editors/space_nla/nla_buttons.c | 2 +- source/blender/editors/space_node/drawnode.c | 10 +- source/blender/gpu/intern/gpu_draw.c | 1 + source/blender/makesdna/DNA_ID.h | 2 +- source/blender/makesdna/DNA_brush_types.h | 135 +- source/blender/makesdna/DNA_color_types.h | 7 +- source/blender/makesdna/DNA_scene_types.h | 43 +- source/blender/makesdna/DNA_userdef_types.h | 13 +- .../makesdna/DNA_windowmanager_types.h | 3 +- source/blender/makesrna/SConscript | 1 - source/blender/makesrna/intern/CMakeLists.txt | 1 + source/blender/makesrna/intern/rna_brush.c | 384 +- source/blender/makesrna/intern/rna_image.c | 17 + .../makesrna/intern/rna_sculpt_paint.c | 25 +- source/blender/makesrna/intern/rna_ui_api.c | 2 + source/blender/makesrna/intern/rna_userdef.c | 41 +- source/blender/windowmanager/SConscript | 4 +- source/blender/windowmanager/intern/wm_draw.c | 4 +- .../windowmanager/intern/wm_operators.c | 101 +- .../bad_level_call_stubs/stubs.c | 24 + 55 files changed, 5239 insertions(+), 1374 deletions(-) create mode 100644 source/blender/editors/sculpt_paint/sculpt_undo.c diff --git a/intern/ghost/SConscript b/intern/ghost/SConscript index 1269c631190..65c00b16373 100644 --- a/intern/ghost/SConscript +++ b/intern/ghost/SConscript @@ -56,9 +56,8 @@ else: if env['BF_GHOST_DEBUG']: defs.append('BF_GHOST_DEBUG') - + incs = '. ../string #extern/glew/include #source/blender/imbuf #source/blender/makesdna ' + env['BF_OPENGL_INC'] if window_system in ('win32-vc', 'win32-mingw', 'cygwin', 'linuxcross', 'win64-vc'): incs = env['BF_WINTAB_INC'] + ' ' + incs env.BlenderLib ('bf_ghost', sources, Split(incs), defines=defs, libtype=['intern','player'], priority = [40,15] ) - diff --git a/intern/ghost/intern/GHOST_WindowCarbon.cpp b/intern/ghost/intern/GHOST_WindowCarbon.cpp index 376859d3e16..a8295ec57d3 100644 --- a/intern/ghost/intern/GHOST_WindowCarbon.cpp +++ b/intern/ghost/intern/GHOST_WindowCarbon.cpp @@ -42,7 +42,7 @@ AGLContext GHOST_WindowCarbon::s_firstaglCtx = NULL; const GHOST_TInt32 GHOST_WindowCarbon::s_sizeRectSize = 16; #endif //GHOST_DRAW_CARBON_GUTTER -static const GLint sPreferredFormatWindow[8] = { +static const GLint sPreferredFormatWindow[10] = { AGL_RGBA, AGL_DOUBLEBUFFER, AGL_ACCELERATED, @@ -50,7 +50,7 @@ AGL_DEPTH_SIZE, 32, AGL_NONE, }; -static const GLint sPreferredFormatFullScreen[9] = { +static const GLint sPreferredFormatFullScreen[11] = { AGL_RGBA, AGL_DOUBLEBUFFER, AGL_ACCELERATED, diff --git a/intern/ghost/intern/GHOST_WindowCocoa.mm b/intern/ghost/intern/GHOST_WindowCocoa.mm index 0b22017c92c..a97f7621bb0 100644 --- a/intern/ghost/intern/GHOST_WindowCocoa.mm +++ b/intern/ghost/intern/GHOST_WindowCocoa.mm @@ -348,10 +348,11 @@ GHOST_WindowCocoa::GHOST_WindowCocoa( pixelFormatAttrsWindow[i++] = NSOpenGLPFAAccelerated; //pixelFormatAttrsWindow[i++] = NSOpenGLPFAAllowOfflineRenderers,; // Removed to allow 10.4 builds, and 2 GPUs rendering is not used anyway - + pixelFormatAttrsWindow[i++] = NSOpenGLPFADepthSize; pixelFormatAttrsWindow[i++] = (NSOpenGLPixelFormatAttribute) 32; + if (stereoVisual) pixelFormatAttrsWindow[i++] = NSOpenGLPFAStereo; if (numOfAASamples>0) { diff --git a/intern/ghost/intern/GHOST_WindowWin32.cpp b/intern/ghost/intern/GHOST_WindowWin32.cpp index bbfa84dbae0..1366aebf9e7 100644 --- a/intern/ghost/intern/GHOST_WindowWin32.cpp +++ b/intern/ghost/intern/GHOST_WindowWin32.cpp @@ -1093,7 +1093,7 @@ static int WeightPixelFormat(PIXELFORMATDESCRIPTOR& pfd) { !(pfd.dwFlags & PFD_DRAW_TO_WINDOW) || !(pfd.dwFlags & PFD_DOUBLEBUFFER) || /* Blender _needs_ this */ ( pfd.cDepthBits <= 8 ) || - !(pfd.iPixelType == PFD_TYPE_RGBA) ) + !(pfd.iPixelType == PFD_TYPE_RGBA)) return 0; weight = 1; /* it's usable */ diff --git a/release/scripts/ui/properties_data_modifier.py b/release/scripts/ui/properties_data_modifier.py index 37764e20854..dfa0d8029b2 100644 --- a/release/scripts/ui/properties_data_modifier.py +++ b/release/scripts/ui/properties_data_modifier.py @@ -437,6 +437,7 @@ class DATA_PT_modifiers(DataButtonsPanel): col.prop(md, "levels", text="Preview") col.prop(md, "sculpt_levels", text="Sculpt") col.prop(md, "render_levels", text="Render") + col.prop(bpy.context.tool_settings.sculpt, "fast_navigate") if wide_ui: col = split.column() diff --git a/release/scripts/ui/properties_texture.py b/release/scripts/ui/properties_texture.py index 86f2d867d41..2bfbe188c9e 100644 --- a/release/scripts/ui/properties_texture.py +++ b/release/scripts/ui/properties_texture.py @@ -275,15 +275,12 @@ class TEXTURE_PT_mapping(TextureSlotPanel): if type(idblock) == bpy.types.Brush: if context.sculpt_object: + layout.label(text="Brush Mapping:") layout.prop(tex, "map_mode", expand=True) row = layout.row() row.active = tex.map_mode in ('FIXED', 'TILED') row.prop(tex, "angle") - - row = layout.row() - row.active = tex.map_mode in ('TILED', '3D') - row.column().prop(tex, "size") else: if type(idblock) == bpy.types.Material: split = layout.split(percentage=0.3) @@ -307,15 +304,17 @@ class TEXTURE_PT_mapping(TextureSlotPanel): row.prop(tex, "y_mapping", text="") row.prop(tex, "z_mapping", text="") - # any non brush - split = layout.split() + split = layout.split() + col = split.column() + col.prop(tex, "offset") + + if wide_ui: col = split.column() - col.prop(tex, "offset") + else: + col.separator() - if wide_ui: - col = split.column() - col.prop(tex, "size") + col.prop(tex, "size") class TEXTURE_PT_influence(TextureSlotPanel): diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 44b6858bed3..61f759a1d83 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -327,7 +327,21 @@ class USERPREF_PT_edit(bpy.types.Panel): row.separator() row.separator() + sculpt = context.tool_settings.sculpt col = row.column() + col.label(text="Paint and Sculpt:") + col.prop(edit, "sculpt_paint_use_unified_size", text="Unify Size") + col.prop(edit, "sculpt_paint_use_unified_strength", text="Unify Strength") + row = col.row(align=True) + row.label("Overlay Color:") + row.prop(edit, "sculpt_paint_overlay_col", text="") + col.prop(sculpt, "use_openmp", text="Threaded Sculpt") + col.prop(sculpt, "show_brush") + + col.separator() + col.separator() + col.separator() + col.label(text="Duplicate Data:") col.prop(edit, "duplicate_mesh", text="Mesh") col.prop(edit, "duplicate_surface", text="Surface") diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index c503eaa9b3e..515fa236fc0 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -19,6 +19,7 @@ # import bpy +narrowui = bpy.context.user_preferences.view.properties_width_check class View3DPanel(bpy.types.Panel): bl_space_type = 'VIEW_3D' @@ -503,18 +504,26 @@ class VIEW3D_PT_tools_brush(PaintPanel): if not context.particle_edit_object: col = layout.split().column() - row = col.row() - if context.sculpt_object and brush: - defaultbrushes = 8 - elif context.texture_paint_object and brush: - defaultbrushes = 4 + if context.sculpt_object and context.tool_settings.sculpt: + col.template_ID_preview(settings, "brush", new="brush.add", filter="is_sculpt_brush", rows=3, cols=8) + elif context.texture_paint_object and context.tool_settings.image_paint: + col.template_ID_preview(settings, "brush", new="brush.add", filter="is_imapaint_brush", rows=3, cols=8) + elif context.vertex_paint_object and context.tool_settings.vertex_paint: + col.template_ID_preview(settings, "brush", new="brush.add", filter="is_vpaint_brush", rows=3, cols=8) + elif context.weight_paint_object and context.tool_settings.weight_paint: + col.template_ID_preview(settings, "brush", new="brush.add", filter="is_wpaint_brush", rows=3, cols=8) else: - defaultbrushes = 7 + row = col.row() - row.template_list(settings, "brushes", settings, "active_brush_index", rows=2, maxrows=defaultbrushes) + if context.sculpt_object and brush: + defaultbrushes = 8 + elif context.texture_paint_object and brush: + defaultbrushes = 4 + else: + defaultbrushes = 7 - col.template_ID(settings, "brush", new="brush.add") + row.template_list(settings, "brushes", settings, "active_brush_index", rows=2, maxrows=defaultbrushes) # Particle Mode # @@ -546,44 +555,152 @@ class VIEW3D_PT_tools_brush(PaintPanel): # Sculpt Mode # elif context.sculpt_object and brush: + edit = context.user_preferences.edit + col = layout.column() + + col.separator() row = col.row(align=True) - row.prop(brush, "size", slider=True) - if brush.sculpt_tool != 'GRAB': - row.prop(brush, "use_size_pressure", toggle=True, text="") + if edit.sculpt_paint_use_unified_size: + if edit.sculpt_paint_unified_lock_brush_size: + row.prop(edit, "sculpt_paint_unified_lock_brush_size", toggle=True, text="", icon='LOCKED') + row.prop(edit, "sculpt_paint_unified_unprojected_radius", text="Unified Radius", slider=True) + else: + row.prop(edit, "sculpt_paint_unified_lock_brush_size", toggle=True, text="", icon='UNLOCKED') + row.prop(edit, "sculpt_paint_unified_size", text="Unified Radius", slider=True) + + else: + if brush.lock_brush_size: + row.prop(brush, "lock_brush_size", toggle=True, text="", icon='LOCKED') + row.prop(brush, "unprojected_radius", text="Radius", slider=True) + else: + row.prop(brush, "lock_brush_size", toggle=True, text="", icon='UNLOCKED') + row.prop(brush, "size", text="Radius", slider=True) + + row.prop(brush, "use_size_pressure", toggle=True, text="") + + + if brush.sculpt_tool not in ('SNAKE_HOOK', 'GRAB', 'ROTATE'): + col.separator() row = col.row(align=True) - row.prop(brush, "strength", slider=True) + + if brush.use_space and brush.sculpt_tool not in ('SMOOTH'): + if brush.use_space_atten: + row.prop(brush, "use_space_atten", toggle=True, text="", icon='LOCKED') + else: + row.prop(brush, "use_space_atten", toggle=True, text="", icon='UNLOCKED') + + if edit.sculpt_paint_use_unified_strength: + row.prop(edit, "sculpt_paint_unified_strength", text="Unified Strength", slider=True) + else: + row.prop(brush, "strength", text="Strength", slider=True) + row.prop(brush, "use_strength_pressure", text="") - # XXX - TODO - #row = col.row(align=True) - #row.prop(brush, "jitter", slider=True) - #row.prop(brush, "use_jitter_pressure", toggle=True, text="") - col = layout.column() - if brush.sculpt_tool in ('DRAW', 'PINCH', 'INFLATE', 'LAYER', 'CLAY'): - col.row().prop(brush, "direction", expand=True) + if brush.sculpt_tool not in ('SMOOTH'): + col.separator() - if brush.sculpt_tool in ('DRAW', 'INFLATE', 'LAYER'): - col.prop(brush, "use_accumulate") + row = col.row(align=True) + row.prop(brush, "autosmooth_factor", slider=True) + row.prop(brush, "use_inverse_smooth_pressure", toggle=True, text="") - if brush.sculpt_tool == 'LAYER': - ob = context.sculpt_object - do_persistent = True - # not supported yet for this case - for md in ob.modifiers: - if md.type == 'MULTIRES': - do_persistent = False - if do_persistent: - col.prop(brush, "use_persistent") - col.operator("sculpt.set_persistent_base") + if brush.sculpt_tool in ('GRAB', 'SNAKE_HOOK'): + col.separator() + + row = col.row(align=True) + row.prop(brush, "normal_weight", slider=True) + + + + if brush.sculpt_tool in ('CREASE', 'BLOB'): + col.separator() + + row = col.row(align=True) + row.prop(brush, "crease_pinch_factor", slider=True, text="Pinch") + + if brush.sculpt_tool not in ('PINCH', 'INFLATE', 'SMOOTH'): + row = col.row(align=True) + + col.separator() + + if brush.use_original_normal: + row.prop(brush, "use_original_normal", toggle=True, text="", icon='LOCKED') + else: + row.prop(brush, "use_original_normal", toggle=True, text="", icon='UNLOCKED') + + row.prop(brush, "sculpt_plane", text="") + + #if brush.sculpt_tool in ('CLAY', 'CLAY_TUBES', 'FLATTEN', 'FILL', 'SCRAPE'): + if brush.sculpt_tool in ('CLAY', 'FLATTEN', 'FILL', 'SCRAPE'): + row = col.row(align=True) + row.prop(brush, "plane_offset", slider=True) + row.prop(brush, "use_offset_pressure", text="") + + col.separator() + + row= col.row() + row.prop(brush, "use_plane_trim", text="Trim") + row= col.row() + row.active=brush.use_plane_trim + row.prop(brush, "plane_trim", slider=True, text="Distance") + + col.separator() + + row= col.row() + row.prop(brush, "use_frontface", text="Front Faces Only") + + #if brush.sculpt_tool in ('DRAW', 'CREASE', 'BLOB', 'LAYER', 'CLAY', 'CLAY_TUBES'): + if brush.sculpt_tool in ('DRAW', 'CREASE', 'BLOB', 'LAYER', 'CLAY'): + col.separator() + col.row().prop(brush, "direction", expand=True) + elif brush.sculpt_tool in ('FLATTEN'): + col.separator() + col.row().prop(brush, "flatten_contrast", expand=True) + elif brush.sculpt_tool in ('FILL'): + col.separator() + col.row().prop(brush, "fill_deepen", expand=True) + elif brush.sculpt_tool in ('SCRAPE'): + col.separator() + col.row().prop(brush, "scrape_peaks", expand=True) + elif brush.sculpt_tool in ('INFLATE'): + col.separator() + col.row().prop(brush, "inflate_deflate", expand=True) + elif brush.sculpt_tool in ('PINCH'): + col.separator() + col.row().prop(brush, "pinch_magnify", expand=True) + + + + #if brush.sculpt_tool in ('DRAW', 'CREASE', 'BLOB', 'INFLATE', 'LAYER', 'CLAY', 'CLAY_TUBES'): + if brush.sculpt_tool in ('DRAW', 'CREASE', 'BLOB', 'INFLATE', 'LAYER', 'CLAY'): + col.separator() + + col.prop(brush, "use_accumulate") + + + + if brush.sculpt_tool == 'LAYER': + col.separator() + + ob = context.sculpt_object + do_persistent = True + + # not supported yet for this case + for md in ob.modifiers: + if md.type == 'MULTIRES': + do_persistent = False + + if do_persistent: + col.prop(brush, "use_persistent") + col.operator("sculpt.set_persistent_base") # Texture Paint Mode # @@ -669,10 +786,88 @@ class VIEW3D_PT_tools_brush_texture(PaintPanel): col = layout.column() - col.template_ID_preview(brush, "texture", new="texture.new", rows=2, cols=4) + col.template_ID_preview(brush, "texture", new="texture.new", rows=3, cols=8) if context.sculpt_object: - col.row().prop(tex_slot, "map_mode", expand=True) + #XXX duplicated from properties_texture.py + + wide_ui = context.region.width > narrowui + + + col.separator() + + + col.label(text="Brush Mapping:") + row = col.row(align=True) + row.prop(tex_slot, "map_mode", expand=True) + + col.separator() + + col = layout.column() + col.active = tex_slot.map_mode in ('FIXED') + col.label(text="Angle:") + + col = layout.column() + if not brush.use_anchor and brush.sculpt_tool not in ('GRAB', 'SNAKE_HOOK', 'THUMB', 'ROTATE') and tex_slot.map_mode in ('FIXED'): + col.prop(brush, "texture_angle_source", text="") + else: + col.prop(brush, "texture_angle_source_no_random", text="") + + #row = col.row(align=True) + #row.label(text="Angle:") + #row.active = tex_slot.map_mode in ('FIXED', 'TILED') + + #row = col.row(align=True) + + #col = row.column() + #col.active = tex_slot.map_mode in ('FIXED') + #col.prop(brush, "use_rake", toggle=True, icon='PARTICLEMODE', text="") + + col = layout.column() + col.prop(tex_slot, "angle", text="") + col.active = tex_slot.map_mode in ('FIXED', 'TILED') + + #col = layout.column() + #col.prop(brush, "use_random_rotation") + #col.active = (not brush.use_rake) and (not brush.use_anchor) and brush.sculpt_tool not in ('GRAB', 'SNAKE_HOOK', 'THUMB', 'ROTATE') and tex_slot.map_mode in ('FIXED') + + split = layout.split() + + col = split.column() + col.prop(tex_slot, "offset") + + if wide_ui: + col = split.column() + else: + col.separator() + + col.prop(tex_slot, "size") + + col = layout.column() + + row = col.row(align=True) + row.label(text="Sample Bias:") + row = col.row(align=True) + row.prop(brush, "texture_sample_bias", slider=True, text="") + + row = col.row(align=True) + row.label(text="Overlay:") + row.active = tex_slot.map_mode in ('FIXED', 'TILED') + + row = col.row(align=True) + + col = row.column() + + if brush.use_texture_overlay: + col.prop(brush, "use_texture_overlay", toggle=True, text="", icon='MUTE_IPO_OFF') + else: + col.prop(brush, "use_texture_overlay", toggle=True, text="", icon='MUTE_IPO_ON') + + col.active = tex_slot.map_mode in ('FIXED', 'TILED') + + col = row.column() + col.prop(brush, "texture_overlay_alpha", text="Alpha") + col.active = tex_slot.map_mode in ('FIXED', 'TILED') and brush.use_texture_overlay class VIEW3D_PT_tools_brush_tool(PaintPanel): @@ -696,15 +891,11 @@ class VIEW3D_PT_tools_brush_tool(PaintPanel): col = layout.column(align=True) if context.sculpt_object: - col.prop(brush, "sculpt_tool", expand=True) + col.prop(brush, "sculpt_tool", expand=False, text="") elif context.texture_paint_object: - col.prop(brush, "imagepaint_tool", expand=True) - #col.prop_enum(settings, "tool", 'DRAW') - #col.prop_enum(settings, "tool", 'SOFTEN') - #col.prop_enum(settings, "tool", 'CLONE') - #col.prop_enum(settings, "tool", 'SMEAR') + col.prop(brush, "imagepaint_tool", expand=False, text="") elif context.vertex_paint_object or context.weight_paint_object: - col.prop(brush, "vertexpaint_tool", expand=True) + col.prop(brush, "vertexpaint_tool", expand=False, text="") class VIEW3D_PT_tools_brush_stroke(PaintPanel): @@ -725,29 +916,83 @@ class VIEW3D_PT_tools_brush_stroke(PaintPanel): brush = settings.brush texture_paint = context.texture_paint_object - if context.sculpt_object: - if brush.sculpt_tool != 'LAYER': - layout.prop(brush, "use_anchor") - layout.prop(brush, "use_rake") - - layout.prop(brush, "use_airbrush") col = layout.column() - col.active = brush.use_airbrush - col.prop(brush, "rate", slider=True) - if not texture_paint: - layout.prop(brush, "use_smooth_stroke") + if context.sculpt_object: + col.label(text="Stroke Method:") + col.prop(brush, "stroke_method", text="") + + if brush.use_anchor: + col.separator() + row = col.row() + row.prop(brush, "edge_to_edge", "Edge To Edge") + + if brush.use_airbrush: + col.separator() + row = col.row() + row.prop(brush, "rate", text="Rate", slider=True) + + if brush.use_space: + col.separator() + row = col.row() + row.active = brush.use_space + row.prop(brush, "spacing", text="Spacing") + + if brush.sculpt_tool not in ('GRAB', 'THUMB', 'SNAKE_HOOK', 'ROTATE') and (not brush.use_anchor) and (not brush.restore_mesh): + col = layout.column() + col.separator() + + col.prop(brush, "use_smooth_stroke") + + sub = col.column() + sub.active = brush.use_smooth_stroke + sub.prop(brush, "smooth_stroke_radius", text="Radius", slider=True) + sub.prop(brush, "smooth_stroke_factor", text="Factor", slider=True) + + col.separator() + + row = col.row(align=True) + row.prop(brush, "jitter", slider=True) + row.prop(brush, "use_jitter_pressure", toggle=True, text="") + + else: + row = col.row() + row.prop(brush, "use_airbrush") + + row = col.row() + row.active = brush.use_airbrush and (not brush.use_space) and (not brush.use_anchor) + row.prop(brush, "rate", slider=True) + + col.separator() + + if not texture_paint: + row = col.row() + row.prop(brush, "use_smooth_stroke") + + col = layout.column() + col.active = brush.use_smooth_stroke + col.prop(brush, "smooth_stroke_radius", text="Radius", slider=True) + col.prop(brush, "smooth_stroke_factor", text="Factor", slider=True) + + col.separator() + col = layout.column() - col.active = brush.use_smooth_stroke - col.prop(brush, "smooth_stroke_radius", text="Radius", slider=True) - col.prop(brush, "smooth_stroke_factor", text="Factor", slider=True) + col.active = (not brush.use_anchor) and (brush.sculpt_tool not in ('GRAB', 'THUMB', 'ROTATE', 'SNAKE_HOOK')) - layout.prop(brush, "use_space") - row = layout.row(align=True) - row.active = brush.use_space - row.prop(brush, "spacing", text="Distance", slider=True) - if texture_paint: - row.prop(brush, "use_spacing_pressure", toggle=True, text="") + row = col.row() + row.prop(brush, "use_space") + + row = col.row() + row.active = brush.use_space + row.prop(brush, "spacing", text="Spacing") + + #col.prop(brush, "use_space_atten", text="Adaptive Strength") + #col.prop(brush, "use_adaptive_space", text="Adaptive Spacing") + + #col.separator() + + #if texture_paint: + # row.prop(brush, "use_spacing_pressure", toggle=True, text="") class VIEW3D_PT_tools_brush_curve(PaintPanel): @@ -767,13 +1012,17 @@ class VIEW3D_PT_tools_brush_curve(PaintPanel): layout.template_curve_mapping(brush, "curve", brush=True) row = layout.row(align=True) - row.operator("brush.curve_preset", text="Sharp").shape = 'SHARP' - row.operator("brush.curve_preset", text="Smooth").shape = 'SMOOTH' - row.operator("brush.curve_preset", text="Max").shape = 'MAX' - + row.operator("brush.curve_preset", icon="SMOOTHCURVE", text="").shape = 'SMOOTH' + row.operator("brush.curve_preset", icon="SPHERECURVE", text="").shape = 'ROUND' + row.operator("brush.curve_preset", icon="ROOTCURVE", text="").shape = 'ROOT' + row.operator("brush.curve_preset", icon="SHARPCURVE", text="").shape = 'SHARP' + row.operator("brush.curve_preset", icon="LINCURVE", text="").shape = 'LINE' + row.operator("brush.curve_preset", icon="NOCURVE", text="").shape = 'MAX' + row.operator("brush.curve_preset", icon="RNDCURVE", text="").shape = 'MID9' class VIEW3D_PT_sculpt_options(PaintPanel): bl_label = "Options" + bl_default_closed = True def poll(self, context): return (context.sculpt_object and context.tool_settings.sculpt) @@ -781,25 +1030,100 @@ class VIEW3D_PT_sculpt_options(PaintPanel): def draw(self, context): layout = self.layout + wide_ui = context.region.width > narrowui + sculpt = context.tool_settings.sculpt + settings = self.paint_settings(context) + brush = settings.brush - col = layout.column() - col.prop(sculpt, "show_brush") - col.prop(sculpt, "fast_navigate") - - split = self.layout.split() + split = layout.split() col = split.column() - col.label(text="Symmetry:") + + edit = context.user_preferences.edit + col.label(text="Unified Settings:") + col.prop(edit, "sculpt_paint_use_unified_size", text="Size") + col.prop(edit, "sculpt_paint_use_unified_strength", text="Strength") + + if wide_ui: + col = split.column() + else: + col.separator() + + col.label(text="Lock:") + row = col.row(align=True) + row.prop(sculpt, "lock_x", text="X", toggle=True) + row.prop(sculpt, "lock_y", text="Y", toggle=True) + row.prop(sculpt, "lock_z", text="Z", toggle=True) + +class VIEW3D_PT_sculpt_symmetry(PaintPanel): + bl_label = "Symmetry" + bl_default_closed = True + + def poll(self, context): + return (context.sculpt_object and context.tool_settings.sculpt) + + def draw(self, context): + wide_ui = context.region.width > narrowui + + layout = self.layout + + sculpt = context.tool_settings.sculpt + settings = self.paint_settings(context) + brush = settings.brush + + split = layout.split() + + col = split.column() + + col.label(text="Mirror:") col.prop(sculpt, "symmetry_x", text="X") col.prop(sculpt, "symmetry_y", text="Y") col.prop(sculpt, "symmetry_z", text="Z") - col = split.column() - col.label(text="Lock:") - col.prop(sculpt, "lock_x", text="X") - col.prop(sculpt, "lock_y", text="Y") - col.prop(sculpt, "lock_z", text="Z") + if wide_ui: + col = split.column() + else: + col.separator() + + col.prop(sculpt, "radial_symm", text="Radial") + + col = layout.column() + + col.separator() + + col.prop(sculpt, "use_symmetry_feather", text="Feather") + +class VIEW3D_PT_tools_brush_appearance(PaintPanel): + bl_label = "Appearance" + bl_default_closed = True + + def poll(self, context): + return (context.sculpt_object and context.tool_settings.sculpt) or (context.vertex_paint_object and context.tool_settings.vertex_paint) or (context.weight_paint_object and context.tool_settings.weight_paint) or (context.texture_paint_object and context.tool_settings.image_paint) + + def draw(self, context): + layout = self.layout + + sculpt = context.tool_settings.sculpt + settings = self.paint_settings(context) + brush = settings.brush + + col = layout.column(); + + if context.sculpt_object and context.tool_settings.sculpt: + #if brush.sculpt_tool in ('DRAW', 'INFLATE', 'CLAY', 'CLAY_TUBES', 'PINCH', 'CREASE', 'BLOB', 'FLATTEN'): + if brush.sculpt_tool in ('DRAW', 'INFLATE', 'CLAY', 'PINCH', 'CREASE', 'BLOB', 'FLATTEN'): + col.prop(brush, "add_col", text="Add Color") + col.prop(brush, "sub_col", text="Substract Color") + else: + col.prop(brush, "add_col", text="Color") + + col.separator() + + col = layout.column() + col.label(text="Icon:") + #col.template_ID_preview(brush, "image_icon", open="image.open", filter="is_image_icon", rows=3, cols=8) + col.template_ID_preview(brush, "image_icon", open="image.open", rows=3, cols=8) # ********** default tools for weightpaint **************** @@ -1049,9 +1373,11 @@ classes = [ VIEW3D_PT_tools_posemode_options, VIEW3D_PT_tools_brush, VIEW3D_PT_tools_brush_texture, - VIEW3D_PT_tools_brush_tool, VIEW3D_PT_tools_brush_stroke, VIEW3D_PT_tools_brush_curve, + VIEW3D_PT_tools_brush_appearance, + VIEW3D_PT_tools_brush_tool, + VIEW3D_PT_sculpt_symmetry, VIEW3D_PT_sculpt_options, VIEW3D_PT_tools_vertexpaint, VIEW3D_PT_tools_weightpaint_options, diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index 7ac5815943a..5936805765d 100644 --- a/source/blender/blenkernel/BKE_blender.h +++ b/source/blender/blenkernel/BKE_blender.h @@ -43,9 +43,9 @@ struct bContext; struct ReportList; struct Scene; struct Main; - + #define BLENDER_VERSION 252 -#define BLENDER_SUBVERSION 5 +#define BLENDER_SUBVERSION 6 // XXX: this shouldn't be merged with trunk, this is so Sculpt branch can detect old files #define BLENDER_MINVERSION 250 #define BLENDER_MINSUBVERSION 0 diff --git a/source/blender/blenkernel/BKE_brush.h b/source/blender/blenkernel/BKE_brush.h index fcc636215c9..6a209167f93 100644 --- a/source/blender/blenkernel/BKE_brush.h +++ b/source/blender/blenkernel/BKE_brush.h @@ -84,5 +84,15 @@ unsigned int *brush_gen_texture_cache(struct Brush *br, int half_side); void brush_radial_control_invoke(struct wmOperator *op, struct Brush *br, float size_weight); int brush_radial_control_exec(struct wmOperator *op, struct Brush *br, float size_weight); +/* unified strength and size */ +int sculpt_get_brush_size(struct Brush *brush); +void sculpt_set_brush_size(struct Brush *brush, int size); +int sculpt_get_lock_brush_size(struct Brush *brush); +float sculpt_get_brush_unprojected_radius(struct Brush *brush); +void sculpt_set_brush_unprojected_radius(struct Brush *brush, float unprojected_radius); +float sculpt_get_brush_alpha(struct Brush *brush); +void sculpt_set_brush_alpha(struct Brush *brush, float alpha); + + #endif diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h index cd412ca5a74..f9954b3d55d 100644 --- a/source/blender/blenkernel/BKE_paint.h +++ b/source/blender/blenkernel/BKE_paint.h @@ -28,6 +28,8 @@ #ifndef BKE_PAINT_H #define BKE_PAINT_H +#include "DNA_vec_types.h" + struct Brush; struct MFace; struct MultireModifierData; @@ -96,6 +98,8 @@ typedef struct SculptSession { struct GPUDrawObject *drawobject; int modifiers_active; + + rcti previous_r; } SculptSession; void free_sculptsession(struct Object *ob); diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index 538012ccc41..c423d426e32 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -53,8 +53,7 @@ #include "BKE_main.h" #include "BKE_paint.h" #include "BKE_texture.h" - - +#include "BKE_icons.h" #include "IMB_imbuf.h" #include "IMB_imbuf_types.h" @@ -70,29 +69,59 @@ Brush *add_brush(const char *name) brush= alloc_libblock(&G.main->brush, ID_BR, name); - brush->rgb[0]= 1.0f; + /* BRUSH SCULPT TOOL SETTINGS */ + brush->sculpt_tool = SCULPT_TOOL_DRAW; /* sculpting defaults to the draw tool for new brushes */ + brush->size= 35; /* radius of the brush in pixels */ + brush->alpha= 0.5f; /* brush strength/intensity probably variable should be renamed? */ + brush->autosmooth_factor= 0.0f; + brush->crease_pinch_factor= 0.5f; + brush->sculpt_plane = SCULPT_DISP_DIR_VIEW; + brush->plane_offset= 0.0f; /* how far above or below the plane that is found by averaging the faces */ + brush->plane_trim= 0.5f; + brush->clone.alpha= 0.5f; + brush->normal_weight= 0.0f; + + /* BRUSH PAINT TOOL SETTINGS */ + brush->rgb[0]= 1.0f; /* default rgb color of the brush when painting - white */ brush->rgb[1]= 1.0f; brush->rgb[2]= 1.0f; - brush->alpha= 0.2f; - brush->size= 25; - brush->spacing= 3.5f; - brush->smooth_stroke_radius= 75; - brush->smooth_stroke_factor= 0.9; - brush->rate= 0.1f; - brush->jitter= 0.0f; - brush->clone.alpha= 0.5; - brush->sculpt_tool = SCULPT_TOOL_DRAW; - brush->flag |= BRUSH_SPACE; - brush_curve_preset(brush, CURVE_PRESET_SMOOTH); - + /* BRUSH STROKE SETTINGS */ + brush->flag |= (BRUSH_SPACE|BRUSH_SPACE_ATTEN); + brush->spacing= 10; /* how far each brush dot should be spaced as a percentage of brush diameter */ + + brush->smooth_stroke_radius= 75; + brush->smooth_stroke_factor= 0.9f; + + brush->rate= 0.1f; /* time delay between dots of paint or sculpting when doing airbrush mode */ + + brush->jitter= 0.0f; + + /* BRUSH TEXTURE SETTINGS */ default_mtex(&brush->mtex); + brush->texture_sample_bias= 0; /* value to added to texture samples */ + + /* brush appearance */ + + brush->image_icon= NULL; + + brush->add_col[0]= 1.00; /* add mode color is light red */ + brush->add_col[1]= 0.39; + brush->add_col[2]= 0.39; + + brush->sub_col[0]= 0.39; /* subtract mode color is light blue */ + brush->sub_col[1]= 0.39; + brush->sub_col[2]= 1.00; + + /* the default alpha falloff curve */ + brush_curve_preset(brush, CURVE_PRESET_SMOOTH); + /* enable fake user by default */ brush->id.flag |= LIB_FAKEUSER; brush_toggled_fake_user(brush); - - return brush; + + return brush; } Brush *copy_brush(Brush *brush) @@ -118,7 +147,7 @@ Brush *copy_brush(Brush *brush) void free_brush(Brush *brush) { if(brush->mtex.tex) brush->mtex.tex->id.us--; - + curvemapping_free(brush->curve); } @@ -731,11 +760,19 @@ static void brush_apply_pressure(BrushPainter *painter, Brush *brush, float pres brush->spacing = MAX2(1.0, painter->startspacing*(1.5f-pressure)); } -static void brush_jitter_pos(Brush *brush, float *pos, float *jitterpos) +void brush_jitter_pos(Brush *brush, float *pos, float *jitterpos) { if(brush->jitter){ - jitterpos[0] = pos[0] + ((BLI_frand()-0.5f) * brush->size * brush->jitter * 2); - jitterpos[1] = pos[1] + ((BLI_frand()-0.5f) * brush->size * brush->jitter * 2); + float rand_pos[2]; + + // find random position within a circle of diameter 1 + do { + rand_pos[0] = BLI_frand()-0.5f; + rand_pos[1] = BLI_frand()-0.5f; + } while (len_v2(rand_pos) > 0.5f); + + jitterpos[0] = pos[0] + 2*rand_pos[0]*brush->size*brush->jitter; + jitterpos[1] = pos[1] + 2*rand_pos[1]*brush->size*brush->jitter; } else { VECCOPY2D(jitterpos, pos); @@ -887,7 +924,7 @@ int brush_painter_paint(BrushPainter *painter, BrushFunc func, float *pos, doubl /* Uses the brush curve control to find a strength value between 0 and 1 */ float brush_curve_strength_clamp(Brush *br, float p, const float len) { - if(p >= len) p= 1.0f; + if(p >= len) return 0; else p= p/len; p= curvemapping_evaluateF(br->curve, 0, p); @@ -899,9 +936,12 @@ float brush_curve_strength_clamp(Brush *br, float p, const float len) * used for sculpt only */ float brush_curve_strength(Brush *br, float p, const float len) { - if(p >= len) p= 1.0f; - else p= p/len; - return curvemapping_evaluateF(br->curve, 0, p); + if(p >= len) + p= 1.0f; + else + p= p/len; + + return curvemapping_evaluateF(br->curve, 0, p); } /* TODO: should probably be unified with BrushPainter stuff? */ @@ -915,7 +955,7 @@ unsigned int *brush_gen_texture_cache(Brush *br, int half_side) memset(&texres, 0, sizeof(TexResult)); - if(mtex && mtex->tex) { + if(mtex->tex) { float x, y, step = 2.0 / side, co[3]; texcache = MEM_callocN(sizeof(int) * side * side, "Brush texture cache"); @@ -993,9 +1033,9 @@ void brush_radial_control_invoke(wmOperator *op, Brush *br, float size_weight) float original_value= 0; if(mode == WM_RADIALCONTROL_SIZE) - original_value = br->size * size_weight; + original_value = sculpt_get_brush_size(br) * size_weight; else if(mode == WM_RADIALCONTROL_STRENGTH) - original_value = br->alpha; + original_value = sculpt_get_brush_alpha(br); else if(mode == WM_RADIALCONTROL_ANGLE) { MTex *mtex = brush_active_texture(br); if(mtex) @@ -1013,9 +1053,15 @@ int brush_radial_control_exec(wmOperator *op, Brush *br, float size_weight) const float conv = 0.017453293; if(mode == WM_RADIALCONTROL_SIZE) - br->size = new_value * size_weight; + if (sculpt_get_lock_brush_size(br)) { + float initial_value = RNA_float_get(op->ptr, "initial_value"); + const float unprojected_radius = sculpt_get_brush_unprojected_radius(br); + sculpt_set_brush_unprojected_radius(br, unprojected_radius * new_value/initial_value * size_weight); + } + else + sculpt_set_brush_size(br, new_value * size_weight); else if(mode == WM_RADIALCONTROL_STRENGTH) - br->alpha = new_value; + sculpt_set_brush_alpha(br, new_value); else if(mode == WM_RADIALCONTROL_ANGLE) { MTex *mtex = brush_active_texture(br); if(mtex) diff --git a/source/blender/blenkernel/intern/colortools.c b/source/blender/blenkernel/intern/colortools.c index c8a01b1c12f..a07c18f42f3 100644 --- a/source/blender/blenkernel/intern/colortools.c +++ b/source/blender/blenkernel/intern/colortools.c @@ -126,6 +126,9 @@ CurveMapping *curvemapping_add(int tot, float minx, float miny, float maxx, floa cumap->cm[a].curve[1].x= maxx; cumap->cm[a].curve[1].y= maxy; } + + cumap->changed_timestamp = 0; + return cumap; } @@ -240,10 +243,12 @@ void curvemap_reset(CurveMap *cuma, rctf *clipr, int preset) switch(preset) { case CURVE_PRESET_LINE: cuma->totpoint= 2; break; - case CURVE_PRESET_SHARP: cuma->totpoint= 3; break; + case CURVE_PRESET_SHARP: cuma->totpoint= 4; break; case CURVE_PRESET_SMOOTH: cuma->totpoint= 4; break; case CURVE_PRESET_MAX: cuma->totpoint= 2; break; - case CURVE_PRESET_MID9: cuma->totpoint= 9; + case CURVE_PRESET_MID9: cuma->totpoint= 9; break; + case CURVE_PRESET_ROUND: cuma->totpoint= 4; break; + case CURVE_PRESET_ROOT: cuma->totpoint= 4; break; } cuma->curve= MEM_callocN(cuma->totpoint*sizeof(CurveMapPoint), "curve points"); @@ -251,27 +256,29 @@ void curvemap_reset(CurveMap *cuma, rctf *clipr, int preset) switch(preset) { case CURVE_PRESET_LINE: cuma->curve[0].x= clipr->xmin; - cuma->curve[0].y= clipr->ymin; + cuma->curve[0].y= clipr->ymax; cuma->curve[0].flag= 0; cuma->curve[1].x= clipr->xmax; - cuma->curve[1].y= clipr->ymax; + cuma->curve[1].y= clipr->ymin; cuma->curve[1].flag= 0; break; case CURVE_PRESET_SHARP: cuma->curve[0].x= 0; cuma->curve[0].y= 1; - cuma->curve[1].x= 0.33; - cuma->curve[1].y= 0.33; - cuma->curve[2].x= 1; - cuma->curve[2].y= 0; + cuma->curve[1].x= 0.25; + cuma->curve[1].y= 0.50; + cuma->curve[2].x= 0.75; + cuma->curve[2].y= 0.04; + cuma->curve[3].x= 1; + cuma->curve[3].y= 0; break; case CURVE_PRESET_SMOOTH: cuma->curve[0].x= 0; cuma->curve[0].y= 1; cuma->curve[1].x= 0.25; - cuma->curve[1].y= 0.92; + cuma->curve[1].y= 0.94; cuma->curve[2].x= 0.75; - cuma->curve[2].y= 0.08; + cuma->curve[2].y= 0.06; cuma->curve[3].x= 1; cuma->curve[3].y= 0; break; @@ -290,8 +297,29 @@ void curvemap_reset(CurveMap *cuma, rctf *clipr, int preset) cuma->curve[i].y= 0.5; } } + break; + case CURVE_PRESET_ROUND: + cuma->curve[0].x= 0; + cuma->curve[0].y= 1; + cuma->curve[1].x= 0.5; + cuma->curve[1].y= 0.90; + cuma->curve[2].x= 0.86; + cuma->curve[2].y= 0.5; + cuma->curve[3].x= 1; + cuma->curve[3].y= 0; + break; + case CURVE_PRESET_ROOT: + cuma->curve[0].x= 0; + cuma->curve[0].y= 1; + cuma->curve[1].x= 0.25; + cuma->curve[1].y= 0.95; + cuma->curve[2].x= 0.75; + cuma->curve[2].y= 0.44; + cuma->curve[3].x= 1; + cuma->curve[3].y= 0; + break; } - + if(cuma->table) { MEM_freeN(cuma->table); cuma->table= NULL; @@ -619,7 +647,9 @@ void curvemapping_changed(CurveMapping *cumap, int rem_doubles) float thresh= 0.01f*(clipr->xmax - clipr->xmin); float dx= 0.0f, dy= 0.0f; int a; - + + cumap->changed_timestamp++; + /* clamp with clip */ if(cumap->flag & CUMA_DO_CLIP) { for(a=0; atotpoint; a++) { @@ -701,7 +731,7 @@ float curvemapping_evaluateF(CurveMapping *cumap, int cur, float value) if(cuma->table==NULL) { curvemap_make_table(cuma, &cumap->clipr); if(cuma->table==NULL) - return value; + return 1.0f-value; } return curvemap_evaluateF(cuma, value); } diff --git a/source/blender/blenkernel/intern/icons.c b/source/blender/blenkernel/intern/icons.c index 29314fb4865..ad2c857be75 100644 --- a/source/blender/blenkernel/intern/icons.c +++ b/source/blender/blenkernel/intern/icons.c @@ -38,6 +38,7 @@ #include "DNA_material_types.h" #include "DNA_texture_types.h" #include "DNA_world_types.h" +#include "DNA_brush_types.h" #include "BLI_ghash.h" @@ -120,6 +121,7 @@ struct PreviewImage* BKE_previewimg_create() for (i=0; ichanged[i] = 1; + prv_img->changed_timestamp[i] = 0; } return prv_img; } @@ -202,7 +204,7 @@ PreviewImage* BKE_previewimg_get(ID *id) Image *img = (Image*)id; if (!img->preview) img->preview = BKE_previewimg_create(); prv_img = img->preview; - } + } return prv_img; } @@ -224,6 +226,7 @@ void BKE_icon_changed(int id) int i; for (i=0; ichanged[i] = 1; + prv->changed_timestamp[i]++; } } } diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index dc78dac04dd..b66b5c60916 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -200,9 +200,9 @@ void free_image(Image *ima) } BKE_icon_delete(&ima->id); ima->id.icon_id = 0; - if (ima->preview) { - BKE_previewimg_free(&ima->preview); - } + + BKE_previewimg_free(&ima->preview); + for(a=0; arenders[a]) { RE_FreeRenderResult(ima->renders[a]); diff --git a/source/blender/blenlib/BLI_pbvh.h b/source/blender/blenlib/BLI_pbvh.h index 519e3ddde1d..4797aeb2364 100644 --- a/source/blender/blenlib/BLI_pbvh.h +++ b/source/blender/blenlib/BLI_pbvh.h @@ -36,12 +36,17 @@ struct ListBase; typedef struct PBVH PBVH; typedef struct PBVHNode PBVHNode; +typedef struct { + float (*co)[3]; +} PBVHProxyNode; + /* Callbacks */ /* returns 1 if the search should continue from this node, 0 otherwise */ typedef int (*BLI_pbvh_SearchCallback)(PBVHNode *node, void *data); typedef void (*BLI_pbvh_HitCallback)(PBVHNode *node, void *data); +typedef void (*BLI_pbvh_HitOccludedCallback)(PBVHNode *node, void *data, float* tmin); /* Building */ @@ -70,7 +75,7 @@ void BLI_pbvh_search_gather(PBVH *bvh, it's up to the callback to find the primitive within the leaves that is hit first */ -void BLI_pbvh_raycast(PBVH *bvh, BLI_pbvh_HitCallback cb, void *data, +void BLI_pbvh_raycast(PBVH *bvh, BLI_pbvh_HitOccludedCallback cb, void *data, float ray_start[3], float ray_normal[3], int original); int BLI_pbvh_node_raycast(PBVH *bvh, PBVHNode *node, float (*origco)[3], float ray_start[3], float ray_normal[3], float *dist); @@ -106,6 +111,8 @@ void BLI_pbvh_node_get_verts(PBVH *bvh, PBVHNode *node, void BLI_pbvh_node_get_BB(PBVHNode *node, float bb_min[3], float bb_max[3]); void BLI_pbvh_node_get_original_BB(PBVHNode *node, float bb_min[3], float bb_max[3]); +float BLI_pbvh_node_get_tmin(PBVHNode* node); + /* Update Normals/Bounding Box/Draw Buffers/Redraw and clear flags */ void BLI_pbvh_update(PBVH *bvh, int flags, float (*face_nors)[3]); @@ -159,13 +166,21 @@ typedef struct PBVHVertexIter { float *fno; } PBVHVertexIter; +#ifdef _MSC_VER +#pragma warning (disable:4127) // conditional expression is constant +#endif + #define BLI_pbvh_vertex_iter_begin(bvh, node, vi, mode) \ { \ struct DMGridData **grids; \ struct MVert *verts; \ int *grid_indices, totgrid, gridsize, *vert_indices, uniq_verts, totvert; \ \ - memset(&vi, 0, sizeof(PBVHVertexIter)); \ + vi.grid= 0; \ + vi.no= 0; \ + vi.fno= 0; \ + vi.mvert= 0; \ + vi.skip= 0; \ \ BLI_pbvh_node_get_grids(bvh, node, &grid_indices, &totgrid, NULL, &gridsize, &grids, NULL); \ BLI_pbvh_node_num_verts(bvh, node, &uniq_verts, &totvert); \ @@ -222,6 +237,13 @@ typedef struct PBVHVertexIter { } \ } +void BLI_pbvh_node_get_proxies(PBVHNode* node, PBVHProxyNode** proxies, int* proxy_count); +void BLI_pbvh_node_free_proxies(PBVHNode* node); +PBVHProxyNode* BLI_pbvh_node_add_proxy(PBVH* bvh, PBVHNode* node); +void BLI_pbvh_gather_proxies(PBVH* pbvh, PBVHNode*** nodes, int* totnode); + +//void BLI_pbvh_node_BB_reset(PBVHNode* node); +//void BLI_pbvh_node_BB_expand(PBVHNode* node, float co[3]); #endif /* BLI_PBVH_H */ diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c index 0a06cd10e1e..e8fb922ce4d 100644 --- a/source/blender/blenlib/intern/math_geom.c +++ b/source/blender/blenlib/intern/math_geom.c @@ -62,6 +62,7 @@ float normal_tri_v3(float n[3], const float v1[3], const float v2[3], const floa n[0]= n1[1]*n2[2]-n1[2]*n2[1]; n[1]= n1[2]*n2[0]-n1[0]*n2[2]; n[2]= n1[0]*n2[1]-n1[1]*n2[0]; + return normalize_v3(n); } @@ -401,16 +402,17 @@ int isect_line_tri_v3(float p1[3], float p2[3], float v0[3], float v1[3], float sub_v3_v3v3(s, p1, v0); - cross_v3_v3v3(q, s, e1); - *lambda = f * dot_v3v3(e2, q); - if ((*lambda < 0.0)||(*lambda > 1.0)) return 0; - u = f * dot_v3v3(s, p); if ((u < 0.0)||(u > 1.0)) return 0; - v = f * dot_v3v3(d, q); + cross_v3_v3v3(q, s, e1); + + v = f * dot_v3v3(d, q); if ((v < 0.0)||((u + v) > 1.0)) return 0; + *lambda = f * dot_v3v3(e2, q); + if ((*lambda < 0.0)||(*lambda > 1.0)) return 0; + if(uv) { uv[0]= u; uv[1]= v; @@ -440,17 +442,18 @@ int isect_ray_tri_v3(float p1[3], float d[3], float v0[3], float v1[3], float v2 sub_v3_v3v3(s, p1, v0); - cross_v3_v3v3(q, s, e1); - *lambda = f * dot_v3v3(e2, q); - if ((*lambda < 0.0)) return 0; - u = f * dot_v3v3(s, p); if ((u < 0.0)||(u > 1.0)) return 0; + cross_v3_v3v3(q, s, e1); + v = f * dot_v3v3(d, q); if ((v < 0.0)||((u + v) > 1.0)) return 0; - if(uv) { + *lambda = f * dot_v3v3(e2, q); + if ((*lambda < 0.0)) return 0; + + if(uv) { uv[0]= u; uv[1]= v; } @@ -460,36 +463,36 @@ int isect_ray_tri_v3(float p1[3], float d[3], float v0[3], float v1[3], float v2 int isect_ray_tri_epsilon_v3(float p1[3], float d[3], float v0[3], float v1[3], float v2[3], float *lambda, float *uv, float epsilon) { - float p[3], s[3], e1[3], e2[3], q[3]; - float a, f, u, v; - - sub_v3_v3v3(e1, v1, v0); - sub_v3_v3v3(e2, v2, v0); - - cross_v3_v3v3(p, d, e2); - a = dot_v3v3(e1, p); - if (a == 0.0f) return 0; - f = 1.0f/a; - - sub_v3_v3v3(s, p1, v0); - - cross_v3_v3v3(q, s, e1); + float p[3], s[3], e1[3], e2[3], q[3]; + float a, f, u, v; - u = f * dot_v3v3(s, p); - if ((u < -epsilon)||(u > 1.0f+epsilon)) return 0; - - v = f * dot_v3v3(d, q); - if ((v < -epsilon)||((u + v) > 1.0f+epsilon)) return 0; + sub_v3_v3v3(e1, v1, v0); + sub_v3_v3v3(e2, v2, v0); - *lambda = f * dot_v3v3(e2, q); - if ((*lambda < 0.0f)) return 0; + cross_v3_v3v3(p, d, e2); + a = dot_v3v3(e1, p); + if (a == 0.0f) return 0; + f = 1.0f/a; - if(uv) { - uv[0]= u; - uv[1]= v; - } - - return 1; + sub_v3_v3v3(s, p1, v0); + + u = f * dot_v3v3(s, p); + if ((u < -epsilon)||(u > 1.0f+epsilon)) return 0; + + cross_v3_v3v3(q, s, e1); + + v = f * dot_v3v3(d, q); + if ((v < -epsilon)||((u + v) > 1.0f+epsilon)) return 0; + + *lambda = f * dot_v3v3(e2, q); + if ((*lambda < 0.0f)) return 0; + + if(uv) { + uv[0]= u; + uv[1]= v; + } + + return 1; } int isect_ray_tri_threshold_v3(float p1[3], float d[3], float v0[3], float v1[3], float v2[3], float *lambda, float *uv, float threshold) diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c index 426181e5304..7069eeea510 100644 --- a/source/blender/blenlib/intern/pbvh.c +++ b/source/blender/blenlib/intern/pbvh.c @@ -92,6 +92,11 @@ struct PBVHNode { unsigned int uniq_verts, face_verts; char flag; + + float tmin; // used for raycasting, is how close bb is to the ray point + + int proxy_count; + PBVHProxyNode* proxies; }; struct PBVH { @@ -227,6 +232,17 @@ static void update_node_vb(PBVH *bvh, PBVHNode *node) node->vb= vb; } +//void BLI_pbvh_node_BB_reset(PBVHNode* node) +//{ +// BB_reset(&node->vb); +//} +// +//void BLI_pbvh_node_BB_expand(PBVHNode* node, float co[3]) +//{ +// BB_expand(&node->vb, co); +//} + + /* Adapted from BLI_kdopbvh.c */ /* Returns the index of the first element on the right of the partition */ static int partition_indices(int *prim_indices, int lo, int hi, int axis, @@ -354,10 +370,10 @@ static void build_mesh_leaf_node(PBVH *bvh, PBVHNode *node) if(!G.background) { node->draw_buffers = GPU_build_mesh_buffers(map, bvh->verts, bvh->faces, - node->prim_indices, - node->totprim, node->vert_indices, - node->uniq_verts, - node->uniq_verts + node->face_verts); + node->prim_indices, + node->totprim, node->vert_indices, + node->uniq_verts, + node->uniq_verts + node->face_verts); } node->flag |= PBVH_UpdateDrawBuffers; @@ -641,13 +657,12 @@ static PBVHNode *pbvh_iter_next(PBVHIter *iter) { PBVHNode *node; int revisiting; - void *search_data; /* purpose here is to traverse tree, visiting child nodes before their parents, this order is necessary for e.g. computing bounding boxes */ while(iter->stacksize) { - /* pop node */ + /* pop node */ iter->stacksize--; node= iter->stack[iter->stacksize].node; @@ -662,10 +677,7 @@ static PBVHNode *pbvh_iter_next(PBVHIter *iter) if(revisiting) return node; - /* check search callback */ - search_data= iter->search_data; - - if(iter->scb && !iter->scb(node, search_data)) + if(iter->scb && !iter->scb(node, iter->search_data)) continue; /* don't traverse, outside of search zone */ if(node->flag & PBVH_Leaf) { @@ -685,6 +697,34 @@ static PBVHNode *pbvh_iter_next(PBVHIter *iter) return NULL; } +static PBVHNode *pbvh_iter_next_occluded(PBVHIter *iter) +{ + PBVHNode *node; + + while(iter->stacksize) { + /* pop node */ + iter->stacksize--; + node= iter->stack[iter->stacksize].node; + + /* on a mesh with no faces this can happen + * can remove this check if we know meshes have at least 1 face */ + if(node==NULL) return NULL; + + if(iter->scb && !iter->scb(node, iter->search_data)) continue; /* don't traverse, outside of search zone */ + + if(node->flag & PBVH_Leaf) { + /* immediately hit leaf node */ + return node; + } + else { + pbvh_stack_push(iter, iter->bvh->nodes+node->children_offset+1, 0); + pbvh_stack_push(iter, iter->bvh->nodes+node->children_offset, 0); + } + } + + return NULL; +} + void BLI_pbvh_search_gather(PBVH *bvh, BLI_pbvh_SearchCallback scb, void *search_data, PBVHNode ***r_array, int *r_tot) @@ -736,12 +776,105 @@ void BLI_pbvh_search_callback(PBVH *bvh, pbvh_iter_begin(&iter, bvh, scb, search_data); while((node=pbvh_iter_next(&iter))) - if(node->flag & PBVH_Leaf) + if (node->flag & PBVH_Leaf) hcb(node, hit_data); pbvh_iter_end(&iter); } +typedef struct node_tree { + PBVHNode* data; + + struct node_tree* left; + struct node_tree* right; +} node_tree; + +static void node_tree_insert(node_tree* tree, node_tree* new_node) +{ + if (new_node->data->tmin < tree->data->tmin) { + if (tree->left) { + node_tree_insert(tree->left, new_node); + } + else { + tree->left = new_node; + } + } + else { + if (tree->right) { + node_tree_insert(tree->right, new_node); + } + else { + tree->right = new_node; + } + } +} + +static void traverse_tree(node_tree* tree, BLI_pbvh_HitOccludedCallback hcb, void* hit_data, float* tmin) +{ + if (tree->left) traverse_tree(tree->left, hcb, hit_data, tmin); + + hcb(tree->data, hit_data, tmin); + + if (tree->right) traverse_tree(tree->right, hcb, hit_data, tmin); +} + +static void free_tree(node_tree* tree) +{ + if (tree->left) { + free_tree(tree->left); + tree->left = 0; + } + + if (tree->right) { + free_tree(tree->right); + tree->right = 0; + } + + free(tree); +} + +float BLI_pbvh_node_get_tmin(PBVHNode* node) +{ + return node->tmin; +} + +void BLI_pbvh_search_callback_occluded(PBVH *bvh, + BLI_pbvh_SearchCallback scb, void *search_data, + BLI_pbvh_HitOccludedCallback hcb, void *hit_data) +{ + PBVHIter iter; + PBVHNode *node; + node_tree *tree = 0; + + pbvh_iter_begin(&iter, bvh, scb, search_data); + + while((node=pbvh_iter_next_occluded(&iter))) { + if(node->flag & PBVH_Leaf) { + node_tree* new_node = malloc(sizeof(node_tree)); + + new_node->data = node; + + new_node->left = NULL; + new_node->right = NULL; + + if (tree) { + node_tree_insert(tree, new_node); + } + else { + tree = new_node; + } + } + } + + pbvh_iter_end(&iter); + + if (tree) { + float tmin = FLT_MAX; + traverse_tree(tree, hcb, hit_data, &tmin); + free_tree(tree); + } +} + static int update_search_cb(PBVHNode *node, void *data_v) { int flag= GET_INT_FROM_POINTER(data_v); @@ -985,7 +1118,8 @@ void BLI_pbvh_get_grid_updates(PBVH *bvh, int clear, void ***gridfaces, int *tot GHashIterator *hiter; GHash *map; void *face, **faces; - int i, tot; + unsigned i; + int tot; map = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "pbvh_get_grid_updates gh"); @@ -1086,6 +1220,18 @@ void BLI_pbvh_node_get_original_BB(PBVHNode *node, float bb_min[3], float bb_max copy_v3_v3(bb_max, node->orig_vb.bmax); } +void BLI_pbvh_node_get_proxies(PBVHNode* node, PBVHProxyNode** proxies, int* proxy_count) +{ + if (node->proxy_count > 0) { + if (proxies) *proxies = node->proxies; + if (proxy_count) *proxy_count = node->proxy_count; + } + else { + if (proxies) *proxies = 0; + if (proxy_count) *proxy_count = 0; + } +} + /********************************* Raycast ***********************************/ typedef struct { @@ -1100,16 +1246,13 @@ typedef struct { static int ray_aabb_intersect(PBVHNode *node, void *data_v) { RaycastData *ray = data_v; - float bb_min[3], bb_max[3], bbox[2][3]; + float bbox[2][3]; float tmin, tmax, tymin, tymax, tzmin, tzmax; if(ray->original) - BLI_pbvh_node_get_original_BB(node, bb_min, bb_max); + BLI_pbvh_node_get_original_BB(node, bbox[0], bbox[1]); else - BLI_pbvh_node_get_BB(node, bb_min, bb_max); - - copy_v3_v3(bbox[0], bb_min); - copy_v3_v3(bbox[1], bb_max); + BLI_pbvh_node_get_BB(node, bbox[0], bbox[1]); tmin = (bbox[ray->sign[0]][0] - ray->start[0]) * ray->inv_dir[0]; tmax = (bbox[1-ray->sign[0]][0] - ray->start[0]) * ray->inv_dir[0]; @@ -1119,8 +1262,10 @@ static int ray_aabb_intersect(PBVHNode *node, void *data_v) if((tmin > tymax) || (tymin > tmax)) return 0; + if(tymin > tmin) tmin = tymin; + if(tymax < tmax) tmax = tymax; @@ -1129,20 +1274,20 @@ static int ray_aabb_intersect(PBVHNode *node, void *data_v) if((tmin > tzmax) || (tzmin > tmax)) return 0; - + + if(tzmin > tmin) + tmin = tzmin; + + // XXX jwilkins: tmax does not need to be updated since we don't use it + // keeping this here for future reference + //if(tzmax < tmax) tmax = tzmax; + + node->tmin = tmin; + return 1; - - /* XXX: Not sure about this? - if(tzmin > tmin) - tmin = tzmin; - if(tzmax < tmax) - tmax = tzmax; - return ((tmin < t1) && (tmax > t0)); - */ - } -void BLI_pbvh_raycast(PBVH *bvh, BLI_pbvh_HitCallback cb, void *data, +void BLI_pbvh_raycast(PBVH *bvh, BLI_pbvh_HitOccludedCallback cb, void *data, float ray_start[3], float ray_normal[3], int original) { RaycastData rcd; @@ -1156,37 +1301,24 @@ void BLI_pbvh_raycast(PBVH *bvh, BLI_pbvh_HitCallback cb, void *data, rcd.sign[2] = rcd.inv_dir[2] < 0; rcd.original = original; - BLI_pbvh_search_callback(bvh, ray_aabb_intersect, &rcd, cb, data); + BLI_pbvh_search_callback_occluded(bvh, ray_aabb_intersect, &rcd, cb, data); } -/* XXX: Code largely copied from bvhutils.c, could be unified */ -/* Returns 1 if a better intersection has been found */ static int ray_face_intersection(float ray_start[3], float ray_normal[3], float *t0, float *t1, float *t2, float *t3, float *fdist) { - int hit = 0; + float dist; - do - { - float dist = FLT_MAX; - - if(!isect_ray_tri_epsilon_v3(ray_start, ray_normal, t0, t1, t2, - &dist, NULL, 0.1f)) - dist = FLT_MAX; - - if(dist >= 0 && dist < *fdist) { - hit = 1; - *fdist = dist; - } - - t1 = t2; - t2 = t3; - t3 = NULL; - - } while(t2); - - return hit; + if ((isect_ray_tri_epsilon_v3(ray_start, ray_normal, t0, t1, t2, &dist, NULL, 0.1f) && dist < *fdist) || + (t3 && isect_ray_tri_epsilon_v3(ray_start, ray_normal, t0, t2, t3, &dist, NULL, 0.1f) && dist < *fdist)) + { + *fdist = dist; + return 1; + } + else { + return 0; + } } int BLI_pbvh_node_raycast(PBVH *bvh, PBVHNode *node, float (*origco)[3], @@ -1399,3 +1531,86 @@ int BLI_pbvh_isDeformed(PBVH *pbvh) { return pbvh->deformed; } +/* Proxies */ + +PBVHProxyNode* BLI_pbvh_node_add_proxy(PBVH* bvh, PBVHNode* node) +{ + int index, totverts; + + #pragma omp critical + { + + index = node->proxy_count; + + node->proxy_count++; + + if (node->proxies) + node->proxies= MEM_reallocN(node->proxies, node->proxy_count*sizeof(PBVHProxyNode)); + else + node->proxies= MEM_mallocN(sizeof(PBVHProxyNode), "PBVHNodeProxy"); + + if (bvh->grids) + totverts = node->totprim*bvh->gridsize*bvh->gridsize; + else + totverts = node->uniq_verts; + + node->proxies[index].co= MEM_callocN(sizeof(float[3])*totverts, "PBVHNodeProxy.co"); + } + + return node->proxies + index; +} + +void BLI_pbvh_node_free_proxies(PBVHNode* node) +{ + #pragma omp critical + { + int p; + + for (p= 0; p < node->proxy_count; p++) { + MEM_freeN(node->proxies[p].co); + node->proxies[p].co= 0; + } + + MEM_freeN(node->proxies); + node->proxies = 0; + + node->proxy_count= 0; + } +} + +void BLI_pbvh_gather_proxies(PBVH* pbvh, PBVHNode*** r_array, int* r_tot) +{ + PBVHNode **array= NULL, **newarray, *node; + int tot= 0, space= 0; + int n; + + for (n= 0; n < pbvh->totnode; n++) { + node = pbvh->nodes + n; + + if(node->proxy_count > 0) { + if(tot == space) { + /* resize array if needed */ + space= (tot == 0)? 32: space*2; + newarray= MEM_callocN(sizeof(PBVHNode)*space, "BLI_pbvh_gather_proxies"); + + if (array) { + memcpy(newarray, array, sizeof(PBVHNode)*tot); + MEM_freeN(array); + } + + array= newarray; + } + + array[tot]= node; + tot++; + } + } + + if(tot == 0 && array) { + MEM_freeN(array); + array= NULL; + } + + *r_array= array; + *r_tot= tot; +} diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index f6122161130..7b29ab2a666 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -1539,6 +1539,7 @@ static void lib_link_brush(FileData *fd, Main *main) brush->id.flag -= LIB_NEEDLINK; brush->mtex.tex= newlibadr_us(fd, brush->id.lib, brush->mtex.tex); + brush->image_icon= newlibadr_us(fd, brush->id.lib, brush->image_icon); brush->clone.image= newlibadr_us(fd, brush->id.lib, brush->clone.image); } } @@ -10971,6 +10972,82 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } + { + /* GSOC 2010 Sculpt - New settings for Brush */ + + Brush *brush; + for (brush= main->brush.first; brush; brush= brush->id.next) { + /* Sanity Check */ + + // infinite number of dabs + if (brush->spacing == 0) + brush->spacing = 10; + + // will have no effect + if (brush->alpha == 0) + brush->alpha = 0.5f; + + // bad radius + if (brush->unprojected_radius == 0) + brush->unprojected_radius = 0.125; + + // unusable size + if (brush->size == 0) + brush->size = 35; + + // can't see overlay + if (brush->texture_overlay_alpha == 0) + brush->texture_overlay_alpha = 33; + + // same as draw brush + if (brush->crease_pinch_factor == 0) + brush->crease_pinch_factor = 0.5f; + + // will sculpt no vertexes + if (brush->plane_trim == 0) + brush->plane_trim = 0.5f; + + // same as smooth stroke off + if (brush->smooth_stroke_radius == 0) + brush->smooth_stroke_radius= 75; + + // will keep cursor in one spot + if (brush->smooth_stroke_radius == 1) + brush->smooth_stroke_factor= 0.9f; + + // same as dots + if (brush->rate == 0) + brush->rate = 0.1f; + + /* New Settings */ + if (main->versionfile < 252 || (main->versionfile == 252 && main->subversionfile < 6)) { + brush->flag |= BRUSH_SPACE_ATTEN; // explicitly enable adaptive space + + // spacing was originally in pixels, convert it to percentage for new version + // size should not be zero due to sanity check above + brush->spacing = (int)(100*((float)brush->spacing) / ((float)brush->size)); + + if (brush->add_col[0] == 0 && + brush->add_col[1] == 0 && + brush->add_col[2] == 0) + { + brush->add_col[0] = 1.00; + brush->add_col[1] = 0.39; + brush->add_col[2] = 0.39; + } + + if (brush->sub_col[0] == 0 && + brush->sub_col[1] == 0 && + brush->sub_col[2] == 0) + { + brush->sub_col[0] = 0.39; + brush->sub_col[1] = 0.39; + brush->sub_col[2] = 1.00; + } + } + } + } + /* WATCH IT!!!: pointers from libdata have not been converted yet here! */ /* WATCH IT 2!: Userdef struct init has to be in editors/interface/resources.c! */ diff --git a/source/blender/editors/gpencil/gpencil_buttons.c b/source/blender/editors/gpencil/gpencil_buttons.c index 001773fc02a..17bafa3d399 100644 --- a/source/blender/editors/gpencil/gpencil_buttons.c +++ b/source/blender/editors/gpencil/gpencil_buttons.c @@ -243,7 +243,7 @@ static void draw_gpencil_panel (bContext *C, uiLayout *layout, bGPdata *gpd, Poi col= uiLayoutColumn(layout, 0); /* current Grease Pencil block */ // TODO: show some info about who owns this? - uiTemplateID(col, C, ctx_ptr, "grease_pencil", "GPENCIL_OT_data_add", NULL, "GPENCIL_OT_data_unlink"); + uiTemplateID(col, C, ctx_ptr, "grease_pencil", "GPENCIL_OT_data_add", NULL, "GPENCIL_OT_data_unlink", NULL); /* add new layer button - can be used even when no data, since it can add a new block too */ uiItemO(col, NULL, 0, "GPENCIL_OT_layer_add"); diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index 93e91d02599..4b6b396483d 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -669,11 +669,11 @@ uiBlock *uiLayoutAbsoluteBlock(uiLayout *layout); void uiTemplateHeader(uiLayout *layout, struct bContext *C, int menus); void uiTemplateDopeSheetFilter(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr); void uiTemplateID(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, - char *newop, char *openop, char *unlinkop); + char *newop, char *openop, char *unlinkop, char *filterop); void uiTemplateIDBrowse(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, - char *newop, char *openop, char *unlinkop); + char *newop, char *openop, char *unlinkop, char *filterop); void uiTemplateIDPreview(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, - char *newop, char *openop, char *unlinkop, int rows, int cols); + char *newop, char *openop, char *unlinkop, char *filterop, int rows, int cols); void uiTemplateAnyID(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, char *proptypename, char *text); void uiTemplatePathBuilder(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c index 499fe3b9767..232b6f7f317 100644 --- a/source/blender/editors/interface/interface_icons.c +++ b/source/blender/editors/interface/interface_icons.c @@ -46,6 +46,7 @@ #include "DNA_screen_types.h" #include "DNA_userdef_types.h" +#include "DNA_brush_types.h" #include "BKE_context.h" #include "BKE_global.h" @@ -762,6 +763,7 @@ static void icon_create_mipmap(struct PreviewImage* prv_img, int miplevel) prv_img->w[miplevel] = size; prv_img->h[miplevel] = size; prv_img->changed[miplevel] = 1; + prv_img->changed_timestamp[miplevel] = 0; prv_img->rect[miplevel] = MEM_callocN(size*size*sizeof(unsigned int), "prv_rect"); } } @@ -976,6 +978,16 @@ int ui_id_icon_get(bContext *C, ID *id, int preview) /* checks if not exists, or changed */ ui_id_icon_render(C, id, preview); break; + case ID_BR: + { /* use the image in the brush as the icon */ + /* XXX redundancy here can be reduced be rewriting this switch as an if */ + ID* ima_id = (ID*)((Brush*)id)->image_icon; + id = ima_id ? ima_id : id; + iconid= BKE_icon_getid(id); + /* checks if not exists, or changed */ + ui_id_icon_render(C, id, preview); + } + break; default: break; } diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 7a5e0413f6d..cbe10496a72 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -42,6 +42,7 @@ #include "BKE_main.h" #include "BKE_texture.h" #include "BKE_utildefines.h" +#include "BKE_report.h" #include "ED_screen.h" #include "ED_render.h" @@ -141,6 +142,8 @@ typedef struct TemplateID { ListBase *idlb; int prv_rows, prv_cols; + + char filterop[64]; } TemplateID; /* Search browse menu, assign */ @@ -170,15 +173,53 @@ static void id_search_cb(const bContext *C, void *arg_template, char *str, uiSea /* ID listbase */ for(id= lb->first; id; id= id->next) { if(!((flag & PROP_ID_SELF_CHECK) && id == id_from)) { + int filter_yes; - /* hide dot-datablocks */ - if(U.uiflag & USER_HIDE_DOT) + filter_yes= 0; + + /* use filter */ + if (template->filterop[0] != 0) { + PointerRNA ptr; + ReportList reports; + FunctionRNA *func; + ParameterList parms; + + RNA_id_pointer_create(id, &ptr); + + BKE_reports_init(&reports, RPT_PRINT); + + func= RNA_struct_find_function(&ptr, template->filterop); + + if (func) { + RNA_parameter_list_create(&parms, &ptr, func); + + RNA_parameter_set_lookup(&parms, "context", &C); + + if (RNA_function_call(C, &reports, &ptr, func, &parms) == 0) { + int* ret; + RNA_parameter_get_lookup(&parms, "ret", &ret); + + if (!(*ret)) { + RNA_parameter_list_free(&parms); + continue; + } + else { + filter_yes= 1; + } + } + + RNA_parameter_list_free(&parms); + } + } + + /* hide dot-datablocks, but only if filter does not force it visible */ + if(!filter_yes && U.uiflag & USER_HIDE_DOT) if ((id->name[2]=='.') && (str[0] != '.')) continue; if(BLI_strcasestr(id->name+2, str)) { iconid= ui_id_icon_get((bContext*)C, id, 1); - + if(!uiSearchItemAdd(items, id->name+2, id, iconid)) break; } @@ -340,7 +381,7 @@ static void template_id_cb(bContext *C, void *arg_litem, void *arg_event) } } -static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, StructRNA *type, int flag, char *newop, char *openop, char *unlinkop) +static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, StructRNA *type, int flag, char *newop, char *openop, char *unlinkop, char *filterop) { uiBut *but; uiBlock *block; @@ -480,7 +521,7 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str uiBlockEndAlign(block); } -static void ui_template_id(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, int flag, int prv_rows, int prv_cols) +static void ui_template_id(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, char* filterop, int flag, int prv_rows, int prv_cols) { TemplateID *template; PropertyRNA *prop; @@ -498,7 +539,12 @@ static void ui_template_id(uiLayout *layout, bContext *C, PointerRNA *ptr, char template->prop= prop; template->prv_rows = prv_rows; template->prv_cols = prv_cols; - + + if (filterop) + BLI_strncpy(template->filterop, filterop, sizeof(template->filterop)); + else + template->filterop[0] = 0; + if(newop) flag |= UI_ID_ADD_NEW; if(openop) @@ -512,26 +558,25 @@ static void ui_template_id(uiLayout *layout, bContext *C, PointerRNA *ptr, char */ if(template->idlb) { uiLayoutRow(layout, 1); - template_ID(C, layout, template, type, flag, newop, openop, unlinkop); + template_ID(C, layout, template, type, flag, newop, openop, unlinkop, filterop); } MEM_freeN(template); - } -void uiTemplateID(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop) +void uiTemplateID(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, char *filterop) { - ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, UI_ID_BROWSE|UI_ID_RENAME|UI_ID_DELETE, 0, 0); + ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, filterop, UI_ID_BROWSE|UI_ID_RENAME|UI_ID_DELETE, 0, 0); } -void uiTemplateIDBrowse(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop) +void uiTemplateIDBrowse(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, char *filterop) { - ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, UI_ID_BROWSE|UI_ID_RENAME, 0, 0); + ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, filterop, UI_ID_BROWSE|UI_ID_RENAME, 0, 0); } -void uiTemplateIDPreview(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, int rows, int cols) +void uiTemplateIDPreview(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, char *filterop, int rows, int cols) { - ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, UI_ID_BROWSE|UI_ID_RENAME|UI_ID_DELETE|UI_ID_PREVIEWS, rows, cols); + ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, filterop, UI_ID_BROWSE|UI_ID_RENAME|UI_ID_DELETE|UI_ID_PREVIEWS, rows, cols); } /************************ ID Chooser Template ***************************/ diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index cf47feb312b..bea8d3bd1f6 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -1463,7 +1463,7 @@ void init_userdef_do_versions(void) SETCOL(btheme->tv3d.lastsel_point, 0xff, 0xff, 0xff, 255); } } - if (G.main->versionfile <= 252 || (G.main->versionfile == 252 && G.main->subversionfile < 5)) { + if (G.main->versionfile < 252 || (G.main->versionfile == 252 && G.main->subversionfile < 5)) { bTheme *btheme; /* interface_widgets.c */ @@ -1521,7 +1521,14 @@ void init_userdef_do_versions(void) /* this timer uses U */ // XXX reset_autosave(); + /* GSOC Sculpt 2010 - Sanity check on Sculpt/Paint settings */ + + if (U.sculpt_paint_unified_alpha == 0) + U.sculpt_paint_unified_alpha = 0.5f; + + if (U.sculpt_paint_unified_unprojected_radius == 0) + U.sculpt_paint_unified_unprojected_radius = 0.125f; + + if (U.sculpt_paint_unified_size == 0) + U.sculpt_paint_unified_size = 35; } - - - diff --git a/source/blender/editors/sculpt_paint/SConscript b/source/blender/editors/sculpt_paint/SConscript index 472ba361059..3d9a5144c93 100644 --- a/source/blender/editors/sculpt_paint/SConscript +++ b/source/blender/editors/sculpt_paint/SConscript @@ -3,6 +3,8 @@ Import ('env') sources = env.Glob('*.c') +defs = [] + incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf' incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include' incs += ' ../../render/extern/include' @@ -12,7 +14,11 @@ if env['OURPLATFORM'] == 'linux2': cflags='-pthread' incs += ' ../../../extern/binreloc/include' -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): - incs += ' ' + env['BF_PTHREADS_INC'] +if env['OURPLATFORM'] == 'linuxcross': + if env['WITH_BF_OPENMP']: + incs += ' ' + env['BF_OPENMP_INC'] -env.BlenderLib ( 'bf_editors_sculpt_paint', sources, Split(incs), [], libtype=['core'], priority=[40] ) +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): + incs += ' ' + env['BF_PTHREADS_INC'] + +env.BlenderLib ( 'bf_editors_sculpt_paint', sources, Split(incs), defines=defs, libtype=['core'], priority=[40] ) diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index 41908bbe388..45c0396855d 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -641,8 +641,8 @@ static int project_paint_PickColor(const ProjPaintState *ps, float pt[2], float } } else { - xi = (uv[0]*ibuf->x) + 0.5f; - yi = (uv[1]*ibuf->y) + 0.5f; + xi = (int)((uv[0]*ibuf->x) + 0.5f); + yi = (int)((uv[1]*ibuf->y) + 0.5f); //if (xi<0 || xi>=ibuf->x || yi<0 || yi>=ibuf->y) return 0; @@ -1053,15 +1053,15 @@ static void uv_image_outset(float (*orig_uv)[2], float (*outset_uv)[2], const fl * This is incorrect. Its already given radians but without it wont work. * need to look into a fix - campbell */ if (is_quad) { - a1 = shell_angle_to_dist(angle_normalized_v2v2(dir4, dir1) * (M_PI/180.0f)); - a2 = shell_angle_to_dist(angle_normalized_v2v2(dir1, dir2) * (M_PI/180.0f)); - a3 = shell_angle_to_dist(angle_normalized_v2v2(dir2, dir3) * (M_PI/180.0f)); - a4 = shell_angle_to_dist(angle_normalized_v2v2(dir3, dir4) * (M_PI/180.0f)); + a1 = shell_angle_to_dist(angle_normalized_v2v2(dir4, dir1) * ((float)M_PI/180.0f)); + a2 = shell_angle_to_dist(angle_normalized_v2v2(dir1, dir2) * ((float)M_PI/180.0f)); + a3 = shell_angle_to_dist(angle_normalized_v2v2(dir2, dir3) * ((float)M_PI/180.0f)); + a4 = shell_angle_to_dist(angle_normalized_v2v2(dir3, dir4) * ((float)M_PI/180.0f)); } else { - a1 = shell_angle_to_dist(angle_normalized_v2v2(dir3, dir1) * (M_PI/180.0f)); - a2 = shell_angle_to_dist(angle_normalized_v2v2(dir1, dir2) * (M_PI/180.0f)); - a3 = shell_angle_to_dist(angle_normalized_v2v2(dir2, dir3) * (M_PI/180.0f)); + a1 = shell_angle_to_dist(angle_normalized_v2v2(dir3, dir1) * ((float)M_PI/180.0f)); + a2 = shell_angle_to_dist(angle_normalized_v2v2(dir1, dir2) * ((float)M_PI/180.0f)); + a3 = shell_angle_to_dist(angle_normalized_v2v2(dir2, dir3) * ((float)M_PI/180.0f)); } if (is_quad) { @@ -1197,7 +1197,7 @@ static void screen_px_from_persp( w[2] *= wtot_inv; } else { - w[0] = w[1] = w[2] = 1.0/3.0; /* dummy values for zero area face */ + w[0] = w[1] = w[2] = 1.0f/3.0f; /* dummy values for zero area face */ } /* done re-weighting */ @@ -2513,11 +2513,11 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i w[0]=w[1]=w[2]= 0.0; if (side) { w[fidx1?fidx1-1:0] = fac; - w[fidx2?fidx2-1:0] = 1.0-fac; + w[fidx2?fidx2-1:0] = 1.0f-fac; } else { w[fidx1] = fac; - w[fidx2] = 1.0-fac; + w[fidx2] = 1.0f-fac; } #endif } @@ -2571,11 +2571,12 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i static void project_paint_bucket_bounds(const ProjPaintState *ps, const float min[2], const float max[2], int bucketMin[2], int bucketMax[2]) { /* divide by bucketWidth & bucketHeight so the bounds are offset in bucket grid units */ - bucketMin[0] = (int)(((float)(min[0] - ps->screenMin[0]) / ps->screen_width) * ps->buckets_x) + 0.5f; /* these offsets of 0.5 and 1.5 seem odd but they are correct */ - bucketMin[1] = (int)(((float)(min[1] - ps->screenMin[1]) / ps->screen_height) * ps->buckets_y) + 0.5f; + /* XXX: the offset of 0.5 is always truncated to zero and the offset of 1.5f is always truncated to 1, is this really correct?? - jwilkins */ + bucketMin[0] = (int)((int)(((float)(min[0] - ps->screenMin[0]) / ps->screen_width) * ps->buckets_x) + 0.5f); /* these offsets of 0.5 and 1.5 seem odd but they are correct */ + bucketMin[1] = (int)((int)(((float)(min[1] - ps->screenMin[1]) / ps->screen_height) * ps->buckets_y) + 0.5f); - bucketMax[0] = (int)(((float)(max[0] - ps->screenMin[0]) / ps->screen_width) * ps->buckets_x) + 1.5f; - bucketMax[1] = (int)(((float)(max[1] - ps->screenMin[1]) / ps->screen_height) * ps->buckets_y) + 1.5f; + bucketMax[0] = (int)((int)(((float)(max[0] - ps->screenMin[0]) / ps->screen_width) * ps->buckets_x) + 1.5f); + bucketMax[1] = (int)((int)(((float)(max[1] - ps->screenMin[1]) / ps->screen_height) * ps->buckets_y) + 1.5f); /* incase the rect is outside the mesh 2d bounds */ CLAMP(bucketMin[0], 0, ps->buckets_x); @@ -3029,19 +3030,19 @@ static void project_paint_begin(ProjPaintState *ps) if(ps->source==PROJ_SRC_VIEW) { #ifdef PROJ_DEBUG_WINCLIP - CLAMP(ps->screenMin[0], -ps->brush->size, ps->winx + ps->brush->size); - CLAMP(ps->screenMax[0], -ps->brush->size, ps->winx + ps->brush->size); + CLAMP(ps->screenMin[0], (float)(-ps->brush->size), (float)(ps->winx + ps->brush->size)); + CLAMP(ps->screenMax[0], (float)(-ps->brush->size), (float)(ps->winx + ps->brush->size)); - CLAMP(ps->screenMin[1], -ps->brush->size, ps->winy + ps->brush->size); - CLAMP(ps->screenMax[1], -ps->brush->size, ps->winy + ps->brush->size); + CLAMP(ps->screenMin[1], (float)(-ps->brush->size), (float)(ps->winy + ps->brush->size)); + CLAMP(ps->screenMax[1], (float)(-ps->brush->size), (float)(ps->winy + ps->brush->size)); #endif } else { /* reprojection, use bounds */ ps->screenMin[0]= 0; - ps->screenMax[0]= ps->winx; + ps->screenMax[0]= (float)(ps->winx); ps->screenMin[1]= 0; - ps->screenMax[1]= ps->winy; + ps->screenMax[1]= (float)(ps->winy); } /* only for convenience */ @@ -3497,7 +3498,7 @@ static int project_bucket_iter_next(ProjPaintState *ps, int *bucket_index, rctf project_bucket_bounds(ps, ps->context_bucket_x, ps->context_bucket_y, bucket_bounds); if ( (ps->source != PROJ_SRC_VIEW) || - project_bucket_isect_circle(ps->context_bucket_x, ps->context_bucket_y, mval, ps->brush->size * ps->brush->size, bucket_bounds) + project_bucket_isect_circle(ps->context_bucket_x, ps->context_bucket_y, mval, (float)(ps->brush->size * ps->brush->size), bucket_bounds) ) { *bucket_index = ps->context_bucket_x + (ps->context_bucket_y * ps->buckets_x); ps->context_bucket_x++; @@ -3545,7 +3546,7 @@ static void blend_color_mix(unsigned char *cp, const unsigned char *cp1, const u static void blend_color_mix_float(float *cp, const float *cp1, const float *cp2, const float fac) { - const float mfac= 1.0-fac; + const float mfac= 1.0f-fac; cp[0]= mfac*cp1[0] + fac*cp2[0]; cp[1]= mfac*cp1[1] + fac*cp2[1]; cp[2]= mfac*cp1[2] + fac*cp2[2]; @@ -3712,7 +3713,7 @@ static void *do_projectpaint_thread(void *ph_v) } /* avoid a square root with every dist comparison */ - brush_size_sqared = ps->brush->size * ps->brush->size; + brush_size_sqared = (float)(ps->brush->size * ps->brush->size); /* printf("brush bounds %d %d %d %d\n", bucketMin[0], bucketMin[1], bucketMax[0], bucketMax[1]); */ @@ -3771,7 +3772,7 @@ static void *do_projectpaint_thread(void *ph_v) falloff = 1.0f - falloff; falloff = 1.0f - (falloff * falloff); - mask_short = projPixel->mask * (ps->brush->alpha * falloff); + mask_short = (unsigned short)(projPixel->mask * (ps->brush->alpha * falloff)); if (mask_short > projPixel->mask_max) { mask = ((float)mask_short)/65535.0f; projPixel->mask_max = mask_short; @@ -3932,8 +3933,8 @@ static int project_paint_sub_stroke(ProjPaintState *ps, BrushPainter *painter, i /* Use mouse coords as floats for projection painting */ float pos[2]; - pos[0] = mval_i[0]; - pos[1] = mval_i[1]; + pos[0] = (float)(mval_i[0]); + pos[1] = (float)(mval_i[1]); // we may want to use this later // brush_painter_require_imbuf(painter, ((ibuf->rect_float)? 1: 0), 0, 0); @@ -4057,7 +4058,8 @@ static int imapaint_ibuf_add_if(ImBuf *ibuf, unsigned int x, unsigned int y, flo { float inrgb[3]; - if ((x >= ibuf->x) || (y >= ibuf->y)) { + // XXX: signed unsigned mismatch + if ((x >= (unsigned int)(ibuf->x)) || (y >= (unsigned int)(ibuf->y))) { if (torus) imapaint_ibuf_get_set_rgb(ibuf, x, y, 1, 0, inrgb); else return 0; } @@ -4611,8 +4613,8 @@ static void project_state_init(bContext *C, Object *ob, ProjPaintState *ps) ps->normal_angle_inner= ps->normal_angle= settings->imapaint.normal_angle; } - ps->normal_angle_inner *= M_PI_2 / 90; - ps->normal_angle *= M_PI_2 / 90; + ps->normal_angle_inner *= (float)(M_PI_2 / 90); + ps->normal_angle *= (float)(M_PI_2 / 90); ps->normal_angle_range = ps->normal_angle - ps->normal_angle_inner; if(ps->normal_angle_range <= 0.0f) @@ -4711,8 +4713,8 @@ static void paint_apply(bContext *C, wmOperator *op, PointerRNA *itemptr) int mouse[2], redraw; RNA_float_get_array(itemptr, "mouse", mousef); - mouse[0] = mousef[0]; - mouse[1] = mousef[1]; + mouse[0] = (int)(mousef[0]); + mouse[1] = (int)(mousef[1]); time= RNA_float_get(itemptr, "time"); pressure= RNA_float_get(itemptr, "pressure"); @@ -4832,8 +4834,8 @@ static void paint_apply_event(bContext *C, wmOperator *op, wmEvent *event) /* fill in stroke */ RNA_collection_add(op->ptr, "stroke", &itemptr); - mousef[0] = mouse[0]; - mousef[1] = mouse[1]; + mousef[0] = (float)(mouse[0]); + mousef[1] = (float)(mouse[1]); RNA_float_set_array(&itemptr, "mouse", mousef); RNA_float_set(&itemptr, "time", (float)(time - pop->starttime)); RNA_float_set(&itemptr, "pressure", pressure); @@ -4950,7 +4952,7 @@ static void brush_drawcursor(bContext *C, int x, int y, void *customdata) glColor4ub(255, 255, 255, 128); glEnable( GL_LINE_SMOOTH ); glEnable(GL_BLEND); - glutil_draw_lined_arc(0.0, M_PI*2.0, brush->size*0.5f, 40); + glutil_draw_lined_arc(0, (float)(M_PI*2.0), brush->size*0.5f, 40); glDisable(GL_BLEND); glDisable( GL_LINE_SMOOTH ); @@ -4977,7 +4979,7 @@ static int paint_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *eve ToolSettings *ts = CTX_data_scene(C)->toolsettings; get_imapaint_zoom(C, &zoom, &zoom); toggle_paint_cursor(C, !ts->imapaint.paintcursor); - brush_radial_control_invoke(op, paint_brush(&ts->imapaint.paint), 0.5 * zoom); + brush_radial_control_invoke(op, paint_brush(&ts->imapaint.paint), 0.5f * zoom); return WM_radial_control_invoke(C, op, event); } @@ -4997,7 +4999,7 @@ static int paint_radial_control_exec(bContext *C, wmOperator *op) int ret; char str[256]; get_imapaint_zoom(C, &zoom, &zoom); - ret = brush_radial_control_exec(op, brush, 2.0 / zoom); + ret = brush_radial_control_exec(op, brush, 2.0f / zoom); WM_radial_control_string(op, str, 256); WM_event_add_notifier(C, NC_BRUSH|NA_EDITED, brush); diff --git a/source/blender/editors/sculpt_paint/paint_intern.h b/source/blender/editors/sculpt_paint/paint_intern.h index b25eec70311..0ae7c7fac19 100644 --- a/source/blender/editors/sculpt_paint/paint_intern.h +++ b/source/blender/editors/sculpt_paint/paint_intern.h @@ -110,6 +110,13 @@ void PAINT_OT_face_select_all(struct wmOperatorType *ot); int facemask_paint_poll(struct bContext *C); +/* stroke operator */ +typedef enum wmBrushStrokeMode { + WM_BRUSHSTROKE_NORMAL, + WM_BRUSHSTROKE_INVERT, + WM_BRUSHSTROKE_SMOOTH, +} wmBrushStrokeMode; + /* paint_undo.c */ typedef void (*UndoRestoreCb)(struct bContext *C, struct ListBase *lb); typedef void (*UndoFreeCb)(struct ListBase *lb); diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index 5470ac83370..5d52b0a3272 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -39,28 +39,25 @@ #include "sculpt_intern.h" #include +//#include /* Brush operators */ static int brush_add_exec(bContext *C, wmOperator *op) { /*int type = RNA_enum_get(op->ptr, "type");*/ - Brush *br = NULL; + Paint *paint = paint_get_active(CTX_data_scene(C)); + Brush *br = paint_brush(paint); - br = add_brush("Brush"); + if (br) + br = copy_brush(br); + else + br = add_brush("Brush"); - if(br) - paint_brush_set(paint_get_active(CTX_data_scene(C)), br); + paint_brush_set(paint_get_active(CTX_data_scene(C)), br); return OPERATOR_FINISHED; } -static EnumPropertyItem brush_type_items[] = { - {OB_MODE_SCULPT, "SCULPT", ICON_SCULPTMODE_HLT, "Sculpt", ""}, - {OB_MODE_VERTEX_PAINT, "VERTEX_PAINT", ICON_VPAINT_HLT, "Vertex Paint", ""}, - {OB_MODE_WEIGHT_PAINT, "WEIGHT_PAINT", ICON_WPAINT_HLT, "Weight Paint", ""}, - {OB_MODE_TEXTURE_PAINT, "TEXTURE_PAINT", ICON_TPAINT_HLT, "Texture Paint", ""}, - {0, NULL, 0, NULL, NULL}}; - void BRUSH_OT_add(wmOperatorType *ot) { /* identifiers */ @@ -72,9 +69,43 @@ void BRUSH_OT_add(wmOperatorType *ot) ot->exec= brush_add_exec; /* flags */ - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag= OPTYPE_UNDO; +} - RNA_def_enum(ot->srna, "type", brush_type_items, OB_MODE_VERTEX_PAINT, "Type", "Which paint mode to create the brush for."); + +static int brush_scale_size_exec(bContext *C, wmOperator *op) +{ + /*int type = RNA_enum_get(op->ptr, "type");*/ + Paint *paint = paint_get_active(CTX_data_scene(C)); + Brush *br = paint_brush(paint); + float factor = RNA_float_get(op->ptr, "scalar"); + + if (br) { + if (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE) { + U.sculpt_paint_unified_size *= factor; + } + else { + br->size *= factor; + } + } + + return OPERATOR_FINISHED; +} + +void BRUSH_OT_scale_size(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Scale Sculpt/Paint Brush Size"; + ot->description= "Change brush size by a scalar"; + ot->idname= "BRUSH_OT_scale_size"; + + /* api callbacks */ + ot->exec= brush_scale_size_exec; + + /* flags */ + ot->flag= OPTYPE_UNDO; + + RNA_def_float(ot->srna, "scalar", 1, 0, 2, "Scalar", "Factor to scale brush size by", 0, 2); } static int vertex_color_set_exec(bContext *C, wmOperator *op) @@ -108,8 +139,10 @@ void ED_operatortypes_paint(void) { /* brush */ WM_operatortype_append(BRUSH_OT_add); + WM_operatortype_append(BRUSH_OT_scale_size); WM_operatortype_append(BRUSH_OT_curve_preset); + /* image */ WM_operatortype_append(PAINT_OT_texture_paint_toggle); WM_operatortype_append(PAINT_OT_texture_paint_radial_control); @@ -141,6 +174,7 @@ void ED_operatortypes_paint(void) WM_operatortype_append(PAINT_OT_face_select_all); } + static void ed_keymap_paint_brush_switch(wmKeyMap *keymap, const char *path) { wmKeyMapItem *kmi; @@ -180,15 +214,13 @@ static void ed_keymap_paint_brush_switch(wmKeyMap *keymap, const char *path) static void ed_keymap_paint_brush_size(wmKeyMap *keymap, const char *path) { wmKeyMapItem *kmi; - - kmi= WM_keymap_add_item(keymap, "WM_OT_context_scale_int", LEFTBRACKETKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", path); - RNA_float_set(kmi->ptr, "value", 0.9); - - kmi= WM_keymap_add_item(keymap, "WM_OT_context_scale_int", RIGHTBRACKETKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", path); - RNA_float_set(kmi->ptr, "value", 10.0/9.0); // 1.1111.... -} + + kmi= WM_keymap_add_item(keymap, "BRUSH_OT_scale_size", LEFTBRACKETKEY, KM_PRESS, 0, 0); + RNA_float_set(kmi->ptr, "scalar", 0.9); + + kmi= WM_keymap_add_item(keymap, "BRUSH_OT_scale_size", RIGHTBRACKETKEY, KM_PRESS, 0, 0); + RNA_float_set(kmi->ptr, "scalar", 10.0/9.0); // 1.1111.... +} void ED_keymap_paint(wmKeyConfig *keyconf) { @@ -200,12 +232,15 @@ void ED_keymap_paint(wmKeyConfig *keyconf) keymap= WM_keymap_find(keyconf, "Sculpt", 0, 0); keymap->poll= sculpt_poll; - RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE); + RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE); RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH); - RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_radial_control", FKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", WM_RADIALCONTROL_ANGLE); + RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_radial_control", FKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", WM_RADIALCONTROL_ANGLE); - WM_keymap_add_item(keymap, "SCULPT_OT_brush_stroke", LEFTMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "SCULPT_OT_brush_stroke", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0); + RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_brush_stroke", LEFTMOUSE, KM_PRESS, 0, 0)->ptr, "mode", WM_BRUSHSTROKE_NORMAL); + RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_brush_stroke", LEFTMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "mode", WM_BRUSHSTROKE_INVERT); + RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_brush_stroke", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_BRUSHSTROKE_SMOOTH); + + //stroke_mode_modal_keymap(keyconf); for(i=0; i<=5; i++) RNA_int_set(WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", ZEROKEY+i, KM_PRESS, KM_CTRL, 0)->ptr, "level", i); @@ -221,7 +256,8 @@ void ED_keymap_paint(wmKeyConfig *keyconf) ed_keymap_paint_brush_switch(keymap, "tool_settings.sculpt.active_brush_index"); ed_keymap_paint_brush_size(keymap, "tool_settings.sculpt.brush.size"); - + + /* */ kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", AKEY, KM_PRESS, 0, 0); RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush.use_anchor"); @@ -254,11 +290,10 @@ void ED_keymap_paint(wmKeyConfig *keyconf) kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", LKEY, KM_PRESS, 0, 0); RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); RNA_string_set(kmi->ptr, "value", "Layer"); - + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", TKEY, KM_PRESS, KM_SHIFT, 0); // was just T in 2.4x RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); RNA_string_set(kmi->ptr, "value", "Flatten"); - /* Vertex Paint mode */ keymap= WM_keymap_find(keyconf, "Vertex Paint", 0, 0); diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c index 441464c5743..e373a254c3e 100644 --- a/source/blender/editors/sculpt_paint/paint_stroke.c +++ b/source/blender/editors/sculpt_paint/paint_stroke.c @@ -20,7 +20,7 @@ * * The Original Code is: all of this file. * - * Contributor(s): none yet. + * Contributor(s): Jason Wilkins, Tom Musgrove. * * ***** END GPL LICENSE BLOCK ***** * @@ -35,6 +35,7 @@ #include "BKE_context.h" #include "BKE_paint.h" +#include "BKE_brush.h" #include "WM_api.h" #include "WM_types.h" @@ -49,6 +50,9 @@ #include "ED_view3d.h" #include "paint_intern.h" +#include "sculpt_intern.h" // XXX, for expedience in getting this working, refactor later (or this just shows that this needs unification) + +#include "BKE_image.h" #include #include @@ -96,54 +100,748 @@ static void paint_draw_smooth_stroke(bContext *C, int x, int y, void *customdata glDisable(GL_LINE_SMOOTH); } -static void paint_draw_cursor(bContext *C, int x, int y, void *customdata) +#if 0 + +// grid texture for testing + +#define GRID_WIDTH 8 +#define GRID_LENGTH 8 + +#define W (0xFFFFFFFF) +#define G (0x00888888) +#define E (0xE1E1E1E1) +#define C (0xC3C3C3C3) +#define O (0xB4B4B4B4) +#define Q (0xA9A9A9A9) + +static unsigned grid_texture0[256] = { - Paint *paint = paint_get_active(CTX_data_scene(C)); - Brush *brush = paint_brush(paint); + W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W, +}; - if(!(paint->flags & PAINT_SHOW_BRUSH)) - return; +static unsigned grid_texture1[64] = +{ + C,C,C,C,C,C,C,C, + C,G,G,G,G,G,G,C, + C,G,G,G,G,G,G,C, + C,G,G,G,G,G,G,C, + C,G,G,G,G,G,G,C, + C,G,G,G,G,G,G,C, + C,G,G,G,G,G,G,C, + C,C,C,C,C,C,C,C, +}; - glColor4ubv(paint_get_active(CTX_data_scene(C))->paint_cursor_col); - glEnable(GL_LINE_SMOOTH); - glEnable(GL_BLEND); +static unsigned grid_texture2[16] = +{ + O,O,O,O, + O,G,G,O, + O,G,G,O, + O,O,O,O, +}; - glTranslatef((float)x, (float)y, 0.0f); - glutil_draw_lined_arc(0.0, M_PI*2.0, brush->size, 40); - glTranslatef((float)-x, (float)-y, 0.0f); +static unsigned grid_texture3[4] = +{ + Q,Q, + Q,Q, +}; - glDisable(GL_BLEND); - glDisable(GL_LINE_SMOOTH); +static unsigned grid_texture4[1] = +{ + Q, +}; + +#undef W +#undef G +#undef E +#undef C +#undef O +#undef Q + +static void load_grid() +{ + static GLuint overlay_texture; + + if (!overlay_texture) { + //GLfloat largest_supported_anisotropy; + + glGenTextures(1, &overlay_texture); + glBindTexture(GL_TEXTURE_2D, overlay_texture); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, grid_texture0); + glTexImage2D(GL_TEXTURE_2D, 1, GL_RGB, 8, 8, 0, GL_RGBA, GL_UNSIGNED_BYTE, grid_texture1); + glTexImage2D(GL_TEXTURE_2D, 2, GL_RGB, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, grid_texture2); + glTexImage2D(GL_TEXTURE_2D, 3, GL_RGB, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, grid_texture3); + glTexImage2D(GL_TEXTURE_2D, 4, GL_RGB, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, grid_texture4); + glEnable(GL_TEXTURE_2D); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR); + + //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + + //glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &largest_supported_anisotropy); + //glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, largest_supported_anisotropy); + } +} + +#endif + +extern float get_tex_pixel(Brush* br, float u, float v); + +typedef struct Snapshot { + float size[3]; + float ofs[3]; + float rot; + int brush_size; + int winx; + int winy; + int brush_map_mode; + int curve_changed_timestamp; +} Snapshot; + +static int same_snap(Snapshot* snap, Brush* brush, ViewContext* vc) +{ + MTex* mtex = &brush->mtex; + + return + (mtex->tex && + mtex->ofs[0] == snap->ofs[0] && + mtex->ofs[1] == snap->ofs[1] && + mtex->ofs[2] == snap->ofs[2] && + mtex->size[0] == snap->size[0] && + mtex->size[1] == snap->size[1] && + mtex->size[2] == snap->size[2] && + mtex->rot == snap->rot) && + ((mtex->brush_map_mode == MTEX_MAP_MODE_FIXED && sculpt_get_brush_size(brush) <= snap->brush_size) || (sculpt_get_brush_size(brush) == snap->brush_size)) && // make brush smaller shouldn't cause a resample + mtex->brush_map_mode == snap->brush_map_mode && + vc->ar->winx == snap->winx && + vc->ar->winy == snap->winy; +} + +static void make_snap(Snapshot* snap, Brush* brush, ViewContext* vc) +{ + if (brush->mtex.tex) { + snap->brush_map_mode = brush->mtex.brush_map_mode; + copy_v3_v3(snap->ofs, brush->mtex.ofs); + copy_v3_v3(snap->size, brush->mtex.size); + snap->rot = brush->mtex.rot; + } + else { + snap->brush_map_mode = -1; + snap->ofs[0]= snap->ofs[0]= snap->ofs[0]= -1; + snap->size[0]= snap->size[0]= snap->size[0]= -1; + snap->rot = -1; + } + + snap->brush_size = sculpt_get_brush_size(brush); + snap->winx = vc->ar->winx; + snap->winy = vc->ar->winy; +} + +int load_tex(Sculpt *sd, Brush* br, ViewContext* vc) +{ + static GLuint overlay_texture = 0; + static int init = 0; + static int tex_changed_timestamp = -1; + static int curve_changed_timestamp = -1; + static Snapshot snap; + static int old_size = -1; + + GLubyte* buffer = 0; + + int size; + int j; + int refresh; + + if (br->mtex.brush_map_mode == MTEX_MAP_MODE_TILED && !br->mtex.tex) return 0; + + refresh = + !overlay_texture || + (br->mtex.tex && + (!br->mtex.tex->preview || + br->mtex.tex->preview->changed_timestamp[0] != tex_changed_timestamp)) || + !br->curve || + br->curve->changed_timestamp != curve_changed_timestamp || + !same_snap(&snap, br, vc); + + if (refresh) { + if (br->mtex.tex && br->mtex.tex->preview) + tex_changed_timestamp = br->mtex.tex->preview->changed_timestamp[0]; + + if (br->curve) + curve_changed_timestamp = br->curve->changed_timestamp; + + make_snap(&snap, br, vc); + + if (br->mtex.brush_map_mode == MTEX_MAP_MODE_FIXED) { + int s = sculpt_get_brush_size(br); + int r = 1; + + for (s >>= 1; s > 0; s >>= 1) + r++; + + size = (1<flags & SCULPT_USE_OPENMP) + for (j= 0; j < size; j++) { + int i; + float y; + float len; + + for (i= 0; i < size; i++) { + + // largely duplicated from tex_strength + + const float rotation = -br->mtex.rot; + float diameter = sculpt_get_brush_size(br); + int index = j*size + i; + float x; + float avg; + + x = (float)i/size; + y = (float)j/size; + + x -= 0.5f; + y -= 0.5f; + + if (br->mtex.brush_map_mode == MTEX_MAP_MODE_TILED) { + x *= vc->ar->winx / diameter; + y *= vc->ar->winy / diameter; + } + else { + x *= 2; + y *= 2; + } + + len = sqrtf(x*x + y*y); + + if ((br->mtex.brush_map_mode == MTEX_MAP_MODE_TILED) || len <= 1) { + /* it is probably worth optimizing for those cases where + the texture is not rotated by skipping the calls to + atan2, sqrtf, sin, and cos. */ + if (br->mtex.tex && (rotation > 0.001 || rotation < -0.001)) { + const float angle = atan2(y, x) + rotation; + + x = len * cos(angle); + y = len * sin(angle); + } + + x *= br->mtex.size[0]; + y *= br->mtex.size[1]; + + x += br->mtex.ofs[0]; + y += br->mtex.ofs[1]; + + avg = br->mtex.tex ? get_tex_pixel(br, x, y) : 1; + + avg += br->texture_sample_bias; + + if (br->mtex.brush_map_mode == MTEX_MAP_MODE_FIXED) + avg *= brush_curve_strength(br, len, 1); /* Falloff curve */ + + buffer[index] = (GLubyte)(255*avg); + } + else { + buffer[index] = 0; + } + } + } + + if (!overlay_texture) + glGenTextures(1, &overlay_texture); + } + else { + size= old_size; + } + + glBindTexture(GL_TEXTURE_2D, overlay_texture); + + if (refresh) { + if (!init) { + glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, size, size, 0, GL_ALPHA, GL_UNSIGNED_BYTE, buffer); + init = 1; + } + else { + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, size, size, GL_ALPHA, GL_UNSIGNED_BYTE, buffer); + } + + if (buffer) + MEM_freeN(buffer); + } + + glEnable(GL_TEXTURE_2D); + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + + if (br->mtex.brush_map_mode == MTEX_MAP_MODE_FIXED) { + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + } + + return 1; +} + +/* Convert a point in model coordinates to 2D screen coordinates. */ +// XXX duplicated from sculpt.c, deal with this later. +static void projectf(bglMats *mats, const float v[3], float p[2]) +{ + double ux, uy, uz; + + gluProject(v[0],v[1],v[2], mats->modelview, mats->projection, + (GLint *)mats->viewport, &ux, &uy, &uz); + p[0]= ux; + p[1]= uy; +} + +static int project_brush_radius(RegionView3D* rv3d, float radius, float location[3], bglMats* mats) +{ + float view[3], nonortho[3], ortho[3], offset[3], p1[2], p2[2]; + + viewvector(rv3d, location, view); + + // create a vector that is not orthogonal to view + + if (fabsf(view[0]) < 0.1) { + nonortho[0] = view[0] + 1; + nonortho[1] = view[1]; + nonortho[2] = view[2]; + } + else if (fabsf(view[1]) < 0.1) { + nonortho[0] = view[0]; + nonortho[1] = view[1] + 1; + nonortho[2] = view[2]; + } + else { + nonortho[0] = view[0]; + nonortho[1] = view[1]; + nonortho[2] = view[2] + 1; + } + + // get a vector in the plane of the view + cross_v3_v3v3(ortho, nonortho, view); + normalize_v3(ortho); + + // make a point on the surface of the brush tagent to the view + mul_v3_fl(ortho, radius); + add_v3_v3v3(offset, location, ortho); + + // project the center of the brush, and the tagent point to the view onto the screen + projectf(mats, location, p1); + projectf(mats, offset, p2); + + // the distance between these points is the size of the projected brush in pixels + return len_v2v2(p1, p2); +} + +int sculpt_get_brush_geometry(bContext* C, int x, int y, int* pixel_radius, float location[3], float modelview[16], float projection[16], int viewport[4]) +{ + struct PaintStroke *stroke; + float window[2]; + int hit; + + stroke = paint_stroke_new(C, NULL, NULL, NULL, NULL); + + window[0] = x + stroke->vc.ar->winrct.xmin; + window[1] = y + stroke->vc.ar->winrct.ymin; + + memcpy(modelview, stroke->vc.rv3d->viewmat, sizeof(float[16])); + memcpy(projection, stroke->vc.rv3d->winmat, sizeof(float[16])); + memcpy(viewport, stroke->mats.viewport, sizeof(int[4])); + + if (stroke->vc.obact->sculpt && stroke->vc.obact->sculpt->pbvh && sculpt_stroke_get_location(C, stroke, location, window)) { + *pixel_radius = project_brush_radius(stroke->vc.rv3d, sculpt_get_brush_unprojected_radius(stroke->brush), location, &stroke->mats); + + if (*pixel_radius == 0) + *pixel_radius = sculpt_get_brush_size(stroke->brush); + + mul_m4_v3(stroke->vc.obact->sculpt->ob->obmat, location); + + hit = 1; + } + else { + Sculpt* sd = CTX_data_tool_settings(C)->sculpt; + Brush* brush = paint_brush(&sd->paint); + + *pixel_radius = sculpt_get_brush_size(brush); + hit = 0; + } + + paint_stroke_free(stroke); + + return hit; +} + +// XXX duplicated from sculpt.c +float unproject_brush_radius(Object *ob, ViewContext *vc, float center[3], float offset) +{ + float delta[3], scale, loc[3]; + + mul_v3_m4v3(loc, ob->obmat, center); + + initgrabz(vc->rv3d, loc[0], loc[1], loc[2]); + window_to_3d_delta(vc->ar, delta, offset, 0); + + scale= fabsf(mat4_to_scale(ob->obmat)); + scale= (scale == 0.0f)? 1.0f: scale; + + return len_v3(delta)/scale; +} + +// XXX paint cursor now does a lot of the same work that is needed during a sculpt stroke +// problem: all this stuff was not intended to be used at this point, so things feel a +// bit hacked. I've put lots of stuff in Brush that probably better goes in Paint +// Functions should be refactored so that they can be used between sculpt.c and +// paint_stroke.c clearly and optimally and the lines of communication between the +// two modules should be more clearly defined. +static void paint_draw_cursor(bContext *C, int x, int y, void *unused) +{ + ViewContext vc; + + (void)unused; + + view3d_set_viewcontext(C, &vc); + + if (vc.obact->sculpt) { + Paint *paint = paint_get_active(CTX_data_scene(C)); + Sculpt *sd = CTX_data_tool_settings(C)->sculpt; + Brush *brush = paint_brush(paint); + + int pixel_radius, viewport[4]; + float location[3], modelview[16], projection[16]; + + int hit; + + int flip; + int sign; + + float* col; + float alpha; + + float visual_strength = sculpt_get_brush_alpha(brush)*sculpt_get_brush_alpha(brush); + + const float min_alpha = 0.20f; + const float max_alpha = 0.80f; + + { + const float u = 0.5f; + const float v = 1 - u; + const float r = 20; + + const float dx = sd->last_x - x; + const float dy = sd->last_y - y; + + if (dx*dx + dy*dy >= r*r) { + sd->last_angle = atan2(dx, dy); + + sd->last_x = u*sd->last_x + v*x; + sd->last_y = u*sd->last_y + v*y; + } + } + + if(!sculpt_get_lock_brush_size(brush) && !(paint->flags & PAINT_SHOW_BRUSH)) + return; + + hit = sculpt_get_brush_geometry(C, x, y, &pixel_radius, location, modelview, projection, viewport); + + if (sculpt_get_lock_brush_size(brush)) + sculpt_set_brush_size(brush, pixel_radius); + + // XXX: no way currently to know state of pen flip or invert key modifier without starting a stroke + flip = 1; + + sign = flip * ((brush->flag & BRUSH_DIR_IN)? -1 : 1); + + if (sign < 0 && ELEM4(brush->sculpt_tool, SCULPT_TOOL_DRAW, SCULPT_TOOL_INFLATE, SCULPT_TOOL_CLAY, SCULPT_TOOL_PINCH)) + col = brush->sub_col; + else + col = brush->add_col; + + alpha = (paint->flags & PAINT_SHOW_BRUSH_ON_SURFACE) ? min_alpha + (visual_strength*(max_alpha-min_alpha)) : 0.50f; + + if (ELEM(brush->mtex.brush_map_mode, MTEX_MAP_MODE_FIXED, MTEX_MAP_MODE_TILED) && brush->flag & BRUSH_TEXTURE_OVERLAY) { + glPushAttrib( + GL_COLOR_BUFFER_BIT| + GL_CURRENT_BIT| + GL_DEPTH_BUFFER_BIT| + GL_ENABLE_BIT| + GL_LINE_BIT| + GL_POLYGON_BIT| + GL_STENCIL_BUFFER_BIT| + GL_TRANSFORM_BIT| + GL_VIEWPORT_BIT| + GL_TEXTURE_BIT); + + if (load_tex(sd, brush, &vc)) { + glEnable(GL_BLEND); + + glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + glDepthMask(GL_FALSE); + glDepthFunc(GL_ALWAYS); + + glMatrixMode(GL_TEXTURE); + glPushMatrix(); + glLoadIdentity(); + + if (brush->mtex.brush_map_mode == MTEX_MAP_MODE_FIXED) { + glTranslatef(0.5f, 0.5f, 0); + + if (brush->flag & BRUSH_RAKE) { + glRotatef(sd->last_angle*(float)(180.0/M_PI), 0, 0, 1); + } + else { + glRotatef(sd->special_rotation*(float)(180.0/M_PI), 0, 0, 1); + } + + glTranslatef(-0.5f, -0.5f, 0); + + if (sd->draw_pressure && (brush->flag & BRUSH_SIZE_PRESSURE)) { + glTranslatef(0.5f, 0.5f, 0); + glScalef(1.0f/sd->pressure_value, 1.0f/sd->pressure_value, 1); + glTranslatef(-0.5f, -0.5f, 0); + } + } + + glColor4f( + U.sculpt_paint_overlay_col[0], + U.sculpt_paint_overlay_col[1], + U.sculpt_paint_overlay_col[2], + brush->texture_overlay_alpha / 100.0f); + + glBegin(GL_QUADS); + if (brush->mtex.brush_map_mode == MTEX_MAP_MODE_FIXED) { + if (sd->draw_anchored) { + glTexCoord2f(0, 0); + glVertex2f(sd->anchored_initial_mouse[0]-sd->anchored_size - vc.ar->winrct.xmin, sd->anchored_initial_mouse[1]-sd->anchored_size - vc.ar->winrct.ymin); + + glTexCoord2f(1, 0); + glVertex2f(sd->anchored_initial_mouse[0]+sd->anchored_size - vc.ar->winrct.xmin, sd->anchored_initial_mouse[1]-sd->anchored_size - vc.ar->winrct.ymin); + + glTexCoord2f(1, 1); + glVertex2f(sd->anchored_initial_mouse[0]+sd->anchored_size - vc.ar->winrct.xmin, sd->anchored_initial_mouse[1]+sd->anchored_size - vc.ar->winrct.ymin); + + glTexCoord2f(0, 1); + glVertex2f(sd->anchored_initial_mouse[0]-sd->anchored_size - vc.ar->winrct.xmin, sd->anchored_initial_mouse[1]+sd->anchored_size - vc.ar->winrct.ymin); + } + else { + glTexCoord2f(0, 0); + glVertex2f((float)x-sculpt_get_brush_size(brush), (float)y-sculpt_get_brush_size(brush)); + + glTexCoord2f(1, 0); + glVertex2f((float)x+sculpt_get_brush_size(brush), (float)y-sculpt_get_brush_size(brush)); + + glTexCoord2f(1, 1); + glVertex2f((float)x+sculpt_get_brush_size(brush), (float)y+sculpt_get_brush_size(brush)); + + glTexCoord2f(0, 1); + glVertex2f((float)x-sculpt_get_brush_size(brush), (float)y+sculpt_get_brush_size(brush)); + } + } + else { + glTexCoord2f(0, 0); + glVertex2f(0, 0); + + glTexCoord2f(1, 0); + glVertex2f(viewport[2], 0); + + glTexCoord2f(1, 1); + glVertex2f(viewport[2], viewport[3]); + + glTexCoord2f(0, 1); + glVertex2f(0, viewport[3]); + } + glEnd(); + + glPopMatrix(); + } + + glPopAttrib(); + } + + if (hit) { + float unprojected_radius; + + // XXX duplicated from brush_strength & paint_stroke_add_step, refactor later + //wmEvent* event = CTX_wm_window(C)->eventstate; + + if (sd->draw_pressure && (brush->flag & BRUSH_ALPHA_PRESSURE)) + visual_strength *= sd->pressure_value; + + // don't show effect of strength past the soft limit + if (visual_strength > 1) visual_strength = 1; + + if (sd->draw_anchored) { + unprojected_radius = unproject_brush_radius(CTX_data_active_object(C), &vc, location, sd->anchored_size); + } + else { + if (brush->flag & BRUSH_ANCHORED) + unprojected_radius = unproject_brush_radius(CTX_data_active_object(C), &vc, location, 8); + else + unprojected_radius = unproject_brush_radius(CTX_data_active_object(C), &vc, location, sculpt_get_brush_size(brush)); + } + + if (sd->draw_pressure && (brush->flag & BRUSH_SIZE_PRESSURE)) + unprojected_radius *= sd->pressure_value; + + if (!sculpt_get_lock_brush_size(brush)) + sculpt_set_brush_unprojected_radius(brush, unprojected_radius); + + if(!(paint->flags & PAINT_SHOW_BRUSH)) + return; + + } + + glPushAttrib( + GL_COLOR_BUFFER_BIT| + GL_CURRENT_BIT| + GL_DEPTH_BUFFER_BIT| + GL_ENABLE_BIT| + GL_LINE_BIT| + GL_POLYGON_BIT| + GL_STENCIL_BUFFER_BIT| + GL_TRANSFORM_BIT| + GL_VIEWPORT_BIT| + GL_TEXTURE_BIT); + + glColor4f(col[0], col[1], col[2], alpha); + + glEnable(GL_BLEND); + + glEnable(GL_LINE_SMOOTH); + + if (sd->draw_anchored) { + glTranslatef(sd->anchored_initial_mouse[0] - vc.ar->winrct.xmin, sd->anchored_initial_mouse[1] - vc.ar->winrct.ymin, 0.0f); + glutil_draw_lined_arc(0.0, M_PI*2.0, sd->anchored_size, 40); + glTranslatef(-sd->anchored_initial_mouse[0] + vc.ar->winrct.xmin, -sd->anchored_initial_mouse[1] + vc.ar->winrct.xmin, 0.0f); + } + else { + glTranslatef((float)x, (float)y, 0.0f); + glutil_draw_lined_arc(0.0, M_PI*2.0, sculpt_get_brush_size(brush), 40); + glTranslatef(-(float)x, -(float)y, 0.0f); + } + + glPopAttrib(); + } + else { + Paint *paint = paint_get_active(CTX_data_scene(C)); + Brush *brush = paint_brush(paint); + + if(!(paint->flags & PAINT_SHOW_BRUSH)) + return; + + glColor4ubv(paint_get_active(CTX_data_scene(C))->paint_cursor_col); + glEnable(GL_LINE_SMOOTH); + glEnable(GL_BLEND); + + glTranslatef((float)x, (float)y, 0.0f); + glutil_draw_lined_arc(0.0, M_PI*2.0, brush->size, 40); // XXX: for now use the brushes size instead of potentially using the unified size because the feature has been enabled for sculpt + glTranslatef((float)-x, (float)-y, 0.0f); + + glDisable(GL_BLEND); + glDisable(GL_LINE_SMOOTH); + } } /* Put the location of the next stroke dot into the stroke RNA and apply it to the mesh */ -static void paint_brush_stroke_add_step(bContext *C, wmOperator *op, wmEvent *event, float mouse[2]) +static void paint_brush_stroke_add_step(bContext *C, wmOperator *op, wmEvent *event, float mouse_in[2]) { + Paint *paint = paint_get_active(CTX_data_scene(C)); // XXX + Brush *brush = paint_brush(paint); // XXX + + float mouse[2]; + PointerRNA itemptr; - float pressure = 1; - float center[3] = {0, 0, 0}; - int flip= event->shift?1:0; + + float location[3]; + + float pressure; + int pen_flip; + + ViewContext vc; // XXX + PaintStroke *stroke = op->customdata; - /* XXX: can remove the if statement once all modes have this */ - if(stroke->get_location) - stroke->get_location(C, stroke, center, mouse); + view3d_set_viewcontext(C, &vc); // XXX /* Tablet */ if(event->custom == EVT_DATA_TABLET) { wmTabletData *wmtab= event->customdata; - if(wmtab->Active != EVT_TABLET_NONE) - pressure= wmtab->Pressure; - if(wmtab->Active == EVT_TABLET_ERASER) - flip = 1; + + pressure = (wmtab->Active != EVT_TABLET_NONE) ? wmtab->Pressure : 1; + pen_flip = (wmtab->Active == EVT_TABLET_ERASER); } - + else { + pressure = 1; + pen_flip = 0; + } + + // XXX: temporary check for sculpt mode until things are more unified + if (vc.obact->sculpt) { + float delta[3]; + + brush_jitter_pos(brush, mouse_in, mouse); + + // XXX: meh, this is round about because brush_jitter_pos isn't written in the best way to be reused here + if (brush->flag & BRUSH_JITTER_PRESSURE) { + sub_v3_v3v3(delta, mouse, mouse_in); + mul_v3_fl(delta, pressure); + add_v3_v3v3(mouse, mouse_in, delta); + } + } + else + copy_v3_v3(mouse, mouse_in); + + /* XXX: can remove the if statement once all modes have this */ + if(stroke->get_location) + stroke->get_location(C, stroke, location, mouse); + else + zero_v3(location); + /* Add to stroke */ RNA_collection_add(op->ptr, "stroke", &itemptr); - RNA_float_set_array(&itemptr, "location", center); - RNA_float_set_array(&itemptr, "mouse", mouse); - RNA_boolean_set(&itemptr, "flip", flip); - RNA_float_set(&itemptr, "pressure", pressure); + + RNA_float_set_array(&itemptr, "location", location); + RNA_float_set_array(&itemptr, "mouse", mouse); + RNA_boolean_set (&itemptr, "pen_flip", pen_flip); + RNA_float_set (&itemptr, "pressure", pressure); stroke->last_mouse_position[0] = mouse[0]; stroke->last_mouse_position[1] = mouse[1]; @@ -154,10 +852,14 @@ static void paint_brush_stroke_add_step(bContext *C, wmOperator *op, wmEvent *ev /* Returns zero if no sculpt changes should be made, non-zero otherwise */ static int paint_smooth_stroke(PaintStroke *stroke, float output[2], wmEvent *event) { - output[0] = event->x; + output[0] = event->x; output[1] = event->y; - if(stroke->brush->flag & BRUSH_SMOOTH_STROKE && stroke->brush->sculpt_tool != SCULPT_TOOL_GRAB) { + if ((stroke->brush->flag & BRUSH_SMOOTH_STROKE) && + !ELEM4(stroke->brush->sculpt_tool, SCULPT_TOOL_GRAB, SCULPT_TOOL_THUMB, SCULPT_TOOL_ROTATE, SCULPT_TOOL_SNAKE_HOOK) && + !(stroke->brush->flag & BRUSH_ANCHORED) && + !(stroke->brush->flag & BRUSH_RESTORE_MESH)) + { float u = stroke->brush->smooth_stroke_factor, v = 1.0 - u; float dx = stroke->last_mouse_position[0] - event->x, dy = stroke->last_mouse_position[1] - event->y; @@ -176,7 +878,9 @@ static int paint_smooth_stroke(PaintStroke *stroke, float output[2], wmEvent *ev /* Returns zero if the stroke dots should not be spaced, non-zero otherwise */ static int paint_space_stroke_enabled(Brush *br) { - return (br->flag & BRUSH_SPACE) && !(br->flag & BRUSH_ANCHORED) && (br->sculpt_tool != SCULPT_TOOL_GRAB); + return (br->flag & BRUSH_SPACE) && + !(br->flag & BRUSH_ANCHORED) && + !ELEM4(br->sculpt_tool, SCULPT_TOOL_GRAB, SCULPT_TOOL_THUMB, SCULPT_TOOL_ROTATE, SCULPT_TOOL_SNAKE_HOOK); } /* For brushes with stroke spacing enabled, moves mouse in steps @@ -187,23 +891,34 @@ static int paint_space_stroke(bContext *C, wmOperator *op, wmEvent *event, const int cnt = 0; if(paint_space_stroke_enabled(stroke->brush)) { - float mouse[2] = {stroke->last_mouse_position[0], stroke->last_mouse_position[1]}; - float vec[2] = {final_mouse[0] - mouse[0], final_mouse[1] - mouse[1]}; + float mouse[2]; + float vec[2]; float length, scale; - int steps = 0, i; - /* Normalize the vector between the last stroke dot and the goal */ - length = sqrt(vec[0]*vec[0] + vec[1]*vec[1]); + copy_v2_v2(mouse, stroke->last_mouse_position); + sub_v2_v2v2(vec, final_mouse, mouse); + + length = len_v2(vec); if(length > FLT_EPSILON) { - scale = stroke->brush->spacing / length; - vec[0] *= scale; - vec[1] *= scale; + int steps; + int i; + float pressure = 1; + + // XXX duplicate code + if(event->custom == EVT_DATA_TABLET) { + wmTabletData *wmtab= event->customdata; + if(wmtab->Active != EVT_TABLET_NONE) + pressure = stroke->brush->flag & BRUSH_SIZE_PRESSURE ? wmtab->Pressure : 1; + } + + scale = (sculpt_get_brush_size(stroke->brush)*pressure*stroke->brush->spacing/50.0f) / length; + mul_v2_fl(vec, scale); + + steps = (int)(1.0f / scale); - steps = (int)(length / stroke->brush->spacing); for(i = 0; i < steps; ++i, ++cnt) { - mouse[0] += vec[0]; - mouse[1] += vec[1]; + add_v2_v2(mouse, vec); paint_brush_stroke_add_step(C, op, event, mouse); } } @@ -283,14 +998,25 @@ int paint_stroke_modal(bContext *C, wmOperator *op, wmEvent *event) //ED_region_tag_redraw(ar); } } - else + else { paint_brush_stroke_add_step(C, op, event, mouse); + } } else ;//ED_region_tag_redraw(ar); } } + /* we want the stroke to have the first daub at the start location instead of waiting till we have moved the space distance */ + if(first && + stroke->stroke_started && + paint_space_stroke_enabled(stroke->brush) && + !(stroke->brush->flag & BRUSH_ANCHORED) && + !(stroke->brush->flag & BRUSH_SMOOTH_STROKE)) + { + paint_brush_stroke_add_step(C, op, event, mouse); + } + return OPERATOR_RUNNING_MODAL; } diff --git a/source/blender/editors/sculpt_paint/paint_utils.c b/source/blender/editors/sculpt_paint/paint_utils.c index 85fbd5954e8..21ea6cb7f75 100644 --- a/source/blender/editors/sculpt_paint/paint_utils.c +++ b/source/blender/editors/sculpt_paint/paint_utils.c @@ -216,6 +216,10 @@ void BRUSH_OT_curve_preset(wmOperatorType *ot) {CURVE_PRESET_SHARP, "SHARP", 0, "Sharp", ""}, {CURVE_PRESET_SMOOTH, "SMOOTH", 0, "Smooth", ""}, {CURVE_PRESET_MAX, "MAX", 0, "Max", ""}, + {CURVE_PRESET_MID9, "MID9", 0, "Mid9", ""}, + {CURVE_PRESET_LINE, "LINE", 0, "Line", ""}, + {CURVE_PRESET_ROUND, "ROUND", 0, "Round", ""}, + {CURVE_PRESET_ROOT, "ROOT", 0, "Root", ""}, {0, NULL, 0, NULL, NULL}}; ot->name= "Preset"; @@ -225,7 +229,7 @@ void BRUSH_OT_curve_preset(wmOperatorType *ot) ot->exec= brush_curve_preset_exec; ot->poll= brush_curve_preset_poll; - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag= OPTYPE_UNDO; RNA_def_enum(ot->srna, "shape", prop_shape_items, CURVE_PRESET_SMOOTH, "Mode", ""); } diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index b53771c92ae..eee0d520747 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -22,7 +22,7 @@ * * The Original Code is: all of this file. * - * Contributor(s): none yet. + * Contributor(s): Jason Wilkins, Tom Musgrove. * * ***** END GPL LICENSE BLOCK ***** * @@ -38,6 +38,8 @@ #include "BLI_ghash.h" #include "BLI_pbvh.h" #include "BLI_threads.h" +#include "BLI_editVert.h" +#include "BLI_rand.h" #include "DNA_key_types.h" #include "DNA_mesh_types.h" @@ -73,6 +75,7 @@ #include "ED_screen.h" #include "ED_sculpt.h" #include "ED_view3d.h" +#include "ED_mesh.h" #include "paint_intern.h" #include "sculpt_intern.h" @@ -81,6 +84,7 @@ #include "RE_render_ext.h" +#include "RE_shader_ext.h" #include "GPU_buffers.h" @@ -88,13 +92,70 @@ #include #include -/* Number of vertices to average in order to determine the flatten distance */ -#define FLATTEN_SAMPLE_SIZE 10 +#ifdef _OPENMP +#include +#endif /* ==== FORWARD DEFINITIONS ===== * */ -static void sculpt_vertcos_to_key(Object *ob, KeyBlock *kb, float (*vertCos)[3]); + +void ED_sculpt_force_update(bContext *C) +{ + Object *ob= CTX_data_active_object(C); + + if(ob && (ob->mode & OB_MODE_SCULPT)) + multires_force_update(ob); +} + +/* Sculpt mode handles multires differently from regular meshes, but only if + it's the last modifier on the stack and it is not on the first level */ +struct MultiresModifierData *sculpt_multires_active(Scene *scene, Object *ob) +{ + ModifierData *md, *nmd; + + for(md= modifiers_getVirtualModifierList(ob); md; md= md->next) { + if(md->type == eModifierType_Multires) { + MultiresModifierData *mmd= (MultiresModifierData*)md; + + /* Check if any of the modifiers after multires are active + * if not it can use the multires struct */ + for(nmd= md->next; nmd; nmd= nmd->next) + if(modifier_isEnabled(scene, nmd, eModifierMode_Realtime)) + break; + + if(!nmd && mmd->sculptlvl > 0) + return mmd; + } + } + + return NULL; +} + +/* Checks whether full update mode (slower) needs to be used to work with modifiers */ +int sculpt_modifiers_active(Scene *scene, Object *ob) +{ + ModifierData *md; + MultiresModifierData *mmd= sculpt_multires_active(scene, ob); + + /* check if there are any modifiers after what we are sculpting, + for a multires modifier with a deform modifier in front, we + do no need to recalculate the modifier stack. note that this + needs to be in sync with ccgDM_use_grid_pbvh! */ + if(mmd) + md= mmd->modifier.next; + else + md= modifiers_getVirtualModifierList(ob); + + /* exception for shape keys because we can edit those */ + for(; md; md= md->next) { + if(modifier_isEnabled(scene, md, eModifierMode_Realtime)) + if(md->type != eModifierType_ShapeKey) + return 1; + } + + return 0; +} /* ===== STRUCTS ===== * @@ -121,10 +182,13 @@ typedef struct StrokeCache { /* Variants */ float radius; + float radius_squared; + //float traced_location[3]; float true_location[3]; float location[3]; - float flip; + float pen_flip; + float invert; float pressure; float mouse[2]; float bstrength; @@ -141,15 +205,32 @@ typedef struct StrokeCache { Brush *brush; float (*face_norms)[3]; /* Copy of the mesh faces' normals */ - float rotation; /* Texture rotation (radians) for anchored and rake modes */ + float special_rotation; /* Texture rotation (radians) for anchored and rake modes */ int pixel_radius, previous_pixel_radius; - float grab_active_location[8][3]; float grab_delta[3], grab_delta_symmetry[3]; float old_grab_location[3], orig_grab_location[3]; - int symmetry; /* Symmetry index between 0 and 7 */ - float view_normal[3], view_normal_symmetry[3]; - int last_rake[2]; /* Last location of updating rake rotation */ + + int symmetry; /* Symmetry index between 0 and 7 bit combo 0 is Brush only; + 1 is X mirror; 2 is Y mirror; 3 is XY; 4 is Z; 5 is XZ; 6 is YZ; 7 is XYZ */ + int mirror_symmetry_pass; /* the symmetry pass we are currently on between 0 and 7*/ + float true_view_normal[3]; + float view_normal[3]; + float last_area_normal[3]; + float last_center[3]; + int radial_symmetry_pass; + float symm_rot_mat[4][4]; + float symm_rot_mat_inv[4][4]; + float last_rake[2]; /* Last location of updating rake rotation */ int original; + + float vertex_rotation; + + char saved_active_brush_name[24]; + int alt_smooth; + + float plane_trim_squared; + + float autosmooth_overlap; } StrokeCache; /* ===== OPENGL ===== @@ -224,10 +305,12 @@ void sculpt_get_redraw_planes(float planes[4][4], ARegion *ar, RegionView3D *rv3d, Object *ob) { PBVH *pbvh= ob->sculpt->pbvh; - BoundBox *bb = MEM_callocN(sizeof(BoundBox), "sculpt boundbox"); + BoundBox bb; bglMats mats; rcti rect; + memset(&bb, 0, sizeof(BoundBox)); + view3d_get_transformation(ar, rv3d, ob, &mats); sculpt_get_redraw_rect(ar, rv3d,ob, &rect); @@ -246,386 +329,172 @@ void sculpt_get_redraw_planes(float planes[4][4], ARegion *ar, rect.ymax -= 2; #endif - view3d_calculate_clipping(bb, planes, &mats, &rect); + view3d_calculate_clipping(&bb, planes, &mats, &rect); mul_m4_fl(planes, -1.0f); - MEM_freeN(bb); - /* clear redraw flag from nodes */ if(pbvh) BLI_pbvh_update(pbvh, PBVH_UpdateRedraw, NULL); } -/************************** Undo *************************/ - -typedef struct SculptUndoNode { - struct SculptUndoNode *next, *prev; - - char idname[MAX_ID_NAME]; /* name instead of pointer*/ - void *node; /* only during push, not valid afterwards! */ - - float (*co)[3]; - short (*no)[3]; - int totvert; - - /* non-multires */ - int maxvert; /* to verify if totvert it still the same */ - int *index; /* to restore into right location */ - - /* multires */ - int maxgrid; /* same for grid */ - int gridsize; /* same for grid */ - int totgrid; /* to restore into right location */ - int *grids; /* to restore into right location */ - - /* layer brush */ - float *layer_disp; - - /* shape keys */ - char *shapeName[32]; /* keep size in sync with keyblock dna */ -} SculptUndoNode; - -static void update_cb(PBVHNode *node, void *data) -{ - BLI_pbvh_node_mark_update(node); -} - -/* Checks whether full update mode (slower) needs to be used to work with modifiers */ -static int sculpt_modifiers_active(Scene *scene, Object *ob) -{ - ModifierData *md; - MultiresModifierData *mmd = sculpt_multires_active(scene, ob); - - /* check if there are any modifiers after what we are sculpting, - for a multires modifier with a deform modifier in front, we - do no need to recalculate the modifier stack. note that this - needs to be in sync with ccgDM_use_grid_pbvh! */ - if(mmd) - md= mmd->modifier.next; - else - md= modifiers_getVirtualModifierList(ob); - - /* exception for shape keys because we can edit those */ - for(; md; md= md->next) { - if(modifier_isEnabled(scene, md, eModifierMode_Realtime)) - if(md->type != eModifierType_ShapeKey) - return 1; - } - - return 0; -} - -static void sculpt_undo_restore(bContext *C, ListBase *lb) -{ - Scene *scene = CTX_data_scene(C); - Object *ob = CTX_data_active_object(C); - DerivedMesh *dm = mesh_get_derived_final(scene, ob, 0); - SculptSession *ss = ob->sculpt; - SculptUndoNode *unode; - MVert *mvert; - MultiresModifierData *mmd; - int *index; - int i, j, update= 0; - - sculpt_update_mesh_elements(scene, ob, 0); - - for(unode=lb->first; unode; unode=unode->next) { - if(!(strcmp(unode->idname, ob->id.name)==0)) - continue; - - if(unode->maxvert) { - char *shapeName= (char*)unode->shapeName; - - /* regular mesh restore */ - if(ss->totvert != unode->maxvert) - continue; - - if (ss->kb && strcmp(ss->kb->name, shapeName)) { - /* shape key has been changed before calling undo operator */ - - Key *key= ob_get_key(ob); - KeyBlock *kb= key_get_named_keyblock(key, shapeName); - - if (kb) { - ob->shapenr= BLI_findindex(&key->block, kb) + 1; - ob->shapeflag|= OB_SHAPE_LOCK; - - sculpt_update_mesh_elements(scene, ob, 0); - WM_event_add_notifier(C, NC_OBJECT|ND_DATA, ob); - } else { - /* key has been removed -- skip this undo node */ - continue; - } - } - - index= unode->index; - mvert= ss->mvert; - - if (ss->kb) { - float (*vertCos)[3]; - vertCos= key_to_vertcos(ob, ss->kb); - - for(i=0; itotvert; i++) - swap_v3_v3(vertCos[index[i]], unode->co[i]); - - /* propagate new coords to keyblock */ - sculpt_vertcos_to_key(ob, ss->kb, vertCos); - - /* pbvh uses it's own mvert array, so coords should be */ - /* propagated to pbvh here */ - BLI_pbvh_apply_vertCos(ss->pbvh, vertCos); - - MEM_freeN(vertCos); - } else { - for(i=0; itotvert; i++) { - swap_v3_v3(mvert[index[i]].co, unode->co[i]); - mvert[index[i]].flag |= ME_VERT_PBVH_UPDATE; - } - } - } - else if(unode->maxgrid && dm->getGridData) { - /* multires restore */ - DMGridData **grids, *grid; - float (*co)[3]; - int gridsize; - - if(dm->getNumGrids(dm) != unode->maxgrid) - continue; - if(dm->getGridSize(dm) != unode->gridsize) - continue; - - grids= dm->getGridData(dm); - gridsize= dm->getGridSize(dm); - - co = unode->co; - for(j=0; jtotgrid; j++) { - grid= grids[unode->grids[j]]; - - for(i=0; ipbvh, NULL, NULL, update_cb, NULL); - BLI_pbvh_update(ss->pbvh, PBVH_UpdateBB|PBVH_UpdateOriginalBB|PBVH_UpdateRedraw, NULL); - - if((mmd=sculpt_multires_active(scene, ob))) - multires_mark_as_modified(ob); - - if(ss->modifiers_active || ((Mesh*)ob->data)->id.us > 1) - DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - } -} - -static void sculpt_undo_free(ListBase *lb) -{ - SculptUndoNode *unode; - - for(unode=lb->first; unode; unode=unode->next) { - if(unode->co) - MEM_freeN(unode->co); - if(unode->no) - MEM_freeN(unode->no); - if(unode->index) - MEM_freeN(unode->index); - if(unode->grids) - MEM_freeN(unode->grids); - if(unode->layer_disp) - MEM_freeN(unode->layer_disp); - } -} - -static SculptUndoNode *sculpt_undo_get_node(SculptSession *ss, PBVHNode *node) -{ - ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_MESH); - SculptUndoNode *unode; - - if(!lb) - return NULL; - - for(unode=lb->first; unode; unode=unode->next) - if(unode->node == node) - return unode; - - return NULL; -} - -static SculptUndoNode *sculpt_undo_push_node(SculptSession *ss, PBVHNode *node) -{ - ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_MESH); - Object *ob= ss->ob; - SculptUndoNode *unode; - int totvert, allvert, totgrid, maxgrid, gridsize, *grids; - - /* list is manipulated by multiple threads, so we lock */ - BLI_lock_thread(LOCK_CUSTOM1); - - if((unode= sculpt_undo_get_node(ss, node))) { - BLI_unlock_thread(LOCK_CUSTOM1); - return unode; - } - - unode= MEM_callocN(sizeof(SculptUndoNode), "SculptUndoNode"); - strcpy(unode->idname, ob->id.name); - unode->node= node; - - BLI_pbvh_node_num_verts(ss->pbvh, node, &totvert, &allvert); - BLI_pbvh_node_get_grids(ss->pbvh, node, &grids, &totgrid, - &maxgrid, &gridsize, NULL, NULL); - - unode->totvert= totvert; - /* we will use this while sculpting, is mapalloc slow to access then? */ - unode->co= MEM_mapallocN(sizeof(float)*3*allvert, "SculptUndoNode.co"); - unode->no= MEM_mapallocN(sizeof(short)*3*allvert, "SculptUndoNode.no"); - undo_paint_push_count_alloc(UNDO_PAINT_MESH, (sizeof(float)*3 + sizeof(short)*3 + sizeof(int))*allvert); - BLI_addtail(lb, unode); - - if(maxgrid) { - /* multires */ - unode->maxgrid= maxgrid; - unode->totgrid= totgrid; - unode->gridsize= gridsize; - unode->grids= MEM_mapallocN(sizeof(int)*totgrid, "SculptUndoNode.grids"); - } - else { - /* regular mesh */ - unode->maxvert= ss->totvert; - unode->index= MEM_mapallocN(sizeof(int)*allvert, "SculptUndoNode.index"); - } - - BLI_unlock_thread(LOCK_CUSTOM1); - - /* copy threaded, hopefully this is the performance critical part */ - { - PBVHVertexIter vd; - - BLI_pbvh_vertex_iter_begin(ss->pbvh, node, vd, PBVH_ITER_ALL) { - copy_v3_v3(unode->co[vd.i], vd.co); - if(vd.no) VECCOPY(unode->no[vd.i], vd.no) - else normal_float_to_short_v3(unode->no[vd.i], vd.fno); - if(vd.vert_indices) unode->index[vd.i]= vd.vert_indices[vd.i]; - } - BLI_pbvh_vertex_iter_end; - } - - if(unode->grids) - memcpy(unode->grids, grids, sizeof(int)*totgrid); - - /* store active shape key */ - if(ss->kb) BLI_strncpy((char*)unode->shapeName, ss->kb->name, sizeof(ss->kb->name)); - else unode->shapeName[0]= '\0'; - - return unode; -} - -static void sculpt_undo_push_begin(SculptSession *ss, char *name) -{ - undo_paint_push_begin(UNDO_PAINT_MESH, name, - sculpt_undo_restore, sculpt_undo_free); -} - -static void sculpt_undo_push_end(SculptSession *ss) -{ - ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_MESH); - SculptUndoNode *unode; - - /* we don't need normals in the undo stack */ - for(unode=lb->first; unode; unode=unode->next) { - if(unode->no) { - MEM_freeN(unode->no); - unode->no= NULL; - } - - if(unode->layer_disp) { - MEM_freeN(unode->layer_disp); - unode->layer_disp= NULL; - } - } - - undo_paint_push_end(UNDO_PAINT_MESH); -} - -void ED_sculpt_force_update(bContext *C) -{ - Object *ob= CTX_data_active_object(C); - - if(ob && (ob->mode & OB_MODE_SCULPT)) - multires_force_update(ob); -} - /************************ Brush Testing *******************/ typedef struct SculptBrushTest { float radius_squared; float location[3]; - float dist; } SculptBrushTest; static void sculpt_brush_test_init(SculptSession *ss, SculptBrushTest *test) { - test->radius_squared= ss->cache->radius*ss->cache->radius; + test->radius_squared= ss->cache->radius_squared; copy_v3_v3(test->location, ss->cache->location); } static int sculpt_brush_test(SculptBrushTest *test, float co[3]) { - float distsq, delta[3]; + float distsq = len_squared_v3v3(co, test->location); - sub_v3_v3v3(delta, co, test->location); - distsq = INPR(delta, delta); - - if(distsq < test->radius_squared) { + if(distsq <= test->radius_squared) { test->dist = sqrt(distsq); return 1; } + else { + return 0; + } +} + +static int sculpt_brush_test_sq(SculptBrushTest *test, float co[3]) +{ + float distsq = len_squared_v3v3(co, test->location); + + if(distsq <= test->radius_squared) { + test->dist = distsq; + return 1; + } + else { + return 0; + } +} + +static int sculpt_brush_test_fast(SculptBrushTest *test, float co[3]) +{ + return len_squared_v3v3(co, test->location) <= test->radius_squared; +} + +static int sculpt_brush_test_cube(SculptBrushTest *test, float co[3], float local[4][4]) +{ + const static float side = 0.70710678118654752440084436210485; // sqrt(.5); + + float local_co[3]; + + mul_v3_m4v3(local_co, local, co); + + local_co[0] = fabs(local_co[0]); + local_co[1] = fabs(local_co[1]); + local_co[2] = fabs(local_co[2]); + + if (local_co[0] <= side && local_co[1] <= side && local_co[2] <= side) { + test->dist = MAX3(local_co[0], local_co[1], local_co[2]) / side; + + return 1; + } + else { + return 0; + } +} + +static float frontface(Brush *brush, float sculpt_normal[3], short no[3], float fno[3]) +{ + if (brush->flag & BRUSH_FRONTFACE) { + float dot; + + if (no) { + float tmp[3]; + + normal_short_to_float_v3(tmp, no); + dot= dot_v3v3(tmp, sculpt_normal); + } + else { + dot= dot_v3v3(fno, sculpt_normal); + } + + return dot > 0 ? dot : 0; + } + else { + return 1; + } +} + +#if 0 + +static int sculpt_brush_test_cyl(SculptBrushTest *test, float co[3], float location[3], float an[3]) +{ + if (sculpt_brush_test_fast(test, co)) { + float t1[3], t2[3], t3[3], dist; + + sub_v3_v3v3(t1, location, co); + sub_v3_v3v3(t2, x2, location); + + cross_v3_v3v3(t3, an, t1); + + dist = len_v3(t3)/len_v3(t2); + + test->dist = dist; + + return 1; + } return 0; } +#endif + /* ===== Sculpting ===== * */ + -/* Return modified brush strength. Includes the direction of the brush, positive - values pull vertices, negative values push. Uses tablet pressure and a - special multiplier found experimentally to scale the strength factor. */ -static float brush_strength(Sculpt *sd, StrokeCache *cache) +static float overlapped_curve(Brush* br, float x) { - Brush *brush = paint_brush(&sd->paint); - /* Primary strength input; square it to make lower values more sensitive */ - float alpha = brush->alpha * brush->alpha; + int i; + const int n = 100 / br->spacing; + const float h = br->spacing / 50.0f; + const float x0 = x-1; - float dir= brush->flag & BRUSH_DIR_IN ? -1 : 1; - float pressure= 1; - float flip= cache->flip ? -1:1; + float sum; - if(brush->flag & BRUSH_ALPHA_PRESSURE) - pressure *= cache->pressure; - - switch(brush->sculpt_tool){ - case SCULPT_TOOL_DRAW: - case SCULPT_TOOL_INFLATE: - case SCULPT_TOOL_CLAY: - case SCULPT_TOOL_FLATTEN: - case SCULPT_TOOL_LAYER: - return alpha * dir * pressure * flip; /*XXX: not sure why? was multiplied by G.vd->grid */; - case SCULPT_TOOL_SMOOTH: - return alpha * 4 * pressure; - case SCULPT_TOOL_PINCH: - return alpha / 2 * dir * pressure * flip; - case SCULPT_TOOL_GRAB: - return 1; - default: - return 0; + sum = 0; + for (i= 0; i < n; i++) { + float xx; + + xx = fabs(x0 + i*h); + + if (xx < 1.0f) + sum += brush_curve_strength(br, xx, 1); } + + return sum; +} + +static float integrate_overlap(Brush* br) +{ + int i; + int m= 10; + float g = 1.0f/m; + float overlap; + float max; + + overlap= 0; + max= 0; + for(i= 0; i < m; i++) { + overlap = overlapped_curve(br, i*g); + + if (overlap > max) + max = overlap; + } + + return max; } /* Uses symm to selectively flip any axis of a coordinate. */ @@ -645,6 +514,166 @@ static void flip_coord(float out[3], float in[3], const char symm) out[2]= in[2]; } +float calc_overlap(StrokeCache *cache, const char symm, const char axis, const float angle) +{ + float mirror[3]; + float distsq; + float mat[4][4]; + + //flip_coord(mirror, cache->traced_location, symm); + flip_coord(mirror, cache->true_location, symm); + + unit_m4(mat); + rotate_m4(mat, axis, angle); + + mul_m4_v3(mat, mirror); + + //distsq = len_squared_v3v3(mirror, cache->traced_location); + distsq = len_squared_v3v3(mirror, cache->true_location); + + if (distsq <= 4*(cache->radius_squared)) + return (2*(cache->radius) - sqrt(distsq)) / (2*(cache->radius)); + else + return 0; +} + +static float calc_radial_symmetry_feather(Sculpt *sd, StrokeCache *cache, const char symm, const char axis) +{ + int i; + float overlap; + + overlap = 0; + for(i = 1; i < sd->radial_symm[axis-'X']; ++i) { + const float angle = 2*M_PI*i/sd->radial_symm[axis-'X']; + overlap += calc_overlap(cache, symm, axis, angle); + } + + return overlap; +} + +static float calc_symmetry_feather(Sculpt *sd, StrokeCache* cache) +{ + if (sd->flags & SCULPT_SYMMETRY_FEATHER) { + float overlap; + int symm = cache->symmetry; + int i; + + overlap = 0; + for (i = 0; i <= symm; i++) { + if(i == 0 || (symm & i && (symm != 5 || i != 3) && (symm != 6 || (i != 3 && i != 5)))) { + + overlap += calc_overlap(cache, i, 0, 0); + + overlap += calc_radial_symmetry_feather(sd, cache, i, 'X'); + overlap += calc_radial_symmetry_feather(sd, cache, i, 'Y'); + overlap += calc_radial_symmetry_feather(sd, cache, i, 'Z'); + } + } + + return 1/overlap; + } + else { + return 1; + } +} + +/* Return modified brush strength. Includes the direction of the brush, positive + values pull vertices, negative values push. Uses tablet pressure and a + special multiplier found experimentally to scale the strength factor. */ +static float brush_strength(Sculpt *sd, StrokeCache *cache, float feather, float overlap) +{ + Brush *brush = paint_brush(&sd->paint); + + /* Primary strength input; square it to make lower values more sensitive */ + float alpha = sculpt_get_brush_alpha(brush)*sculpt_get_brush_alpha(brush); + float dir = brush->flag & BRUSH_DIR_IN ? -1 : 1; + float pressure = brush->flag & BRUSH_ALPHA_PRESSURE ? cache->pressure : 1; + float pen_flip = cache->pen_flip ? -1 : 1; + float invert = cache->invert ? -1 : 1; + float flip = dir * invert * pen_flip; + + switch(brush->sculpt_tool){ + case SCULPT_TOOL_CLAY: + case SCULPT_TOOL_CLAY_TUBES: + case SCULPT_TOOL_DRAW: + case SCULPT_TOOL_LAYER: + return alpha * flip * pressure * overlap * feather; + + case SCULPT_TOOL_CREASE: + case SCULPT_TOOL_BLOB: + return alpha * flip * pressure * overlap * feather; + + case SCULPT_TOOL_INFLATE: + if (flip > 0) { + return 0.250f * alpha * flip * pressure * overlap * feather; + } + else { + return 0.125f * alpha * flip * pressure * overlap * feather; + } + + case SCULPT_TOOL_FILL: + case SCULPT_TOOL_SCRAPE: + case SCULPT_TOOL_FLATTEN: + if (flip > 0) { + overlap = (1+overlap) / 2; + return alpha * flip * pressure * overlap * feather; + } + else { + /* reduce strength for DEEPEN, PEAKS, and CONTRAST */ + return 0.5f * alpha * flip * pressure * overlap * feather; + } + + case SCULPT_TOOL_SMOOTH: + return alpha * pressure * feather; + + case SCULPT_TOOL_PINCH: + if (flip > 0) { + return alpha * flip * pressure * overlap * feather; + } + else { + return 0.25f * alpha * flip * pressure * overlap * feather; + } + + case SCULPT_TOOL_NUDGE: + overlap = (1+overlap) / 2; + return alpha * pressure * overlap * feather; + + case SCULPT_TOOL_THUMB: + return alpha*pressure*feather; + + case SCULPT_TOOL_SNAKE_HOOK: + return feather; + + case SCULPT_TOOL_GRAB: + case SCULPT_TOOL_ROTATE: + return feather; + + default: + return 0; + } +} + +float get_tex_pixel(Brush* br, float u, float v) +{ + TexResult texres; + float co[3]; + int hasrgb; + + co[0] = u; + co[1] = v; + co[2] = 0; + + memset(&texres, 0, sizeof(TexResult)); + hasrgb = multitex_ext(br->mtex.tex, co, NULL, NULL, 1, &texres); + + if (hasrgb & TEX_RGB) + texres.tin = (0.35*texres.tr + 0.45*texres.tg + 0.2*texres.tb)*texres.ta; + + return texres.tin; +} + +#if 0 + /* Get a pixel from the texcache at (px, py) */ static unsigned char get_texcache_pixel(const SculptSession *ss, int px, int py) { @@ -655,7 +684,7 @@ static unsigned char get_texcache_pixel(const SculptSession *ss, int px, int py) static float get_texcache_pixel_bilinear(const SculptSession *ss, float u, float v) { - int x, y, x2, y2; + unsigned x, y, x2, y2; const int tc_max = ss->texcache_side - 1; float urat, vrat, uopp; @@ -682,76 +711,97 @@ static float get_texcache_pixel_bilinear(const SculptSession *ss, float u, float get_texcache_pixel(ss, x2, y2) * urat) * vrat) / 255.0; } +#endif + /* Return a multiplier for brush strength on a particular vertex. */ static float tex_strength(SculptSession *ss, Brush *br, float *point, const float len) { - MTex *tex = &br->mtex; + MTex *mtex = &br->mtex; float avg= 1; - if(!tex) { + if(!mtex->tex) { avg= 1; } - else if(tex->brush_map_mode == MTEX_MAP_MODE_3D) { + else if(mtex->brush_map_mode == MTEX_MAP_MODE_3D) { float jnk; /* Get strength by feeding the vertex location directly into a texture */ - externtex(tex, point, &avg, + externtex(mtex, point, &avg, &jnk, &jnk, &jnk, &jnk); } else if(ss->texcache) { - const float bsize= ss->cache->pixel_radius * 2; - const float rot= tex->rot + ss->cache->rotation; - int px, py; - float flip[3], point_2d[2]; + float rotation = -mtex->rot; + float x, y, point_2d[3]; + float diameter; - /* If the active area is being applied for symmetry, flip it - across the symmetry axis in order to project it. This insures - that the brush texture will be oriented correctly. */ - copy_v3_v3(flip, point); - flip_coord(flip, flip, ss->cache->symmetry); - projectf(ss->cache->mats, flip, point_2d); + /* if the active area is being applied for symmetry, flip it + across the symmetry axis and rotate it back to the orignal + position in order to project it. This insures that the + brush texture will be oriented correctly. */ - /* For Tile and Drag modes, get the 2D screen coordinates of the - and scale them up or down to the texture size. */ - if(tex->brush_map_mode == MTEX_MAP_MODE_TILED) { - const int sx= (const int)tex->size[0]; - const int sy= (const int)tex->size[1]; - - float fx= point_2d[0]; - float fy= point_2d[1]; - - float angle= atan2(fy, fx) - rot; - float flen= sqrtf(fx*fx + fy*fy); - - if(rot<0.001 && rot>-0.001) { - px= point_2d[0]; - py= point_2d[1]; - } else { - px= flen * cos(angle) + 2000; - py= flen * sin(angle) + 2000; - } - if(sx != 1) - px %= sx-1; - if(sy != 1) - py %= sy-1; - avg= get_texcache_pixel_bilinear(ss, ss->texcache_side*px/sx, ss->texcache_side*py/sy); + flip_coord(point_2d, point, ss->cache->mirror_symmetry_pass); + + if (ss->cache->radial_symmetry_pass) + mul_m4_v3(ss->cache->symm_rot_mat_inv, point_2d); + + projectf(ss->cache->mats, point_2d, point_2d); + + /* if fixed mode, keep coordinates relative to mouse */ + if(mtex->brush_map_mode == MTEX_MAP_MODE_FIXED) { + rotation += ss->cache->special_rotation; + + point_2d[0] -= ss->cache->tex_mouse[0]; + point_2d[1] -= ss->cache->tex_mouse[1]; + + diameter = ss->cache->pixel_radius; // use pressure adjusted size for fixed mode + + x = point_2d[0]; + y = point_2d[1]; } - else if(tex->brush_map_mode == MTEX_MAP_MODE_FIXED) { - float fx= (point_2d[0] - ss->cache->tex_mouse[0]) / bsize; - float fy= (point_2d[1] - ss->cache->tex_mouse[1]) / bsize; - - float angle= atan2(fy, fx) - rot; - float flen= sqrtf(fx*fx + fy*fy); - - fx = flen * cos(angle) + 0.5; - fy = flen * sin(angle) + 0.5; - - avg= get_texcache_pixel_bilinear(ss, fx * ss->texcache_side, fy * ss->texcache_side); + else /* else (mtex->brush_map_mode == MTEX_MAP_MODE_TILED), + leave the coordinates relative to the screen */ + { + diameter = sculpt_get_brush_size(br); // use unadjusted size for tiled mode + + x = point_2d[0] - ss->cache->vc->ar->winrct.xmin; + y = point_2d[1] - ss->cache->vc->ar->winrct.ymin; } + + x /= ss->cache->vc->ar->winx; + y /= ss->cache->vc->ar->winy; + + if (mtex->brush_map_mode == MTEX_MAP_MODE_TILED) { + x -= 0.5f; + y -= 0.5f; + } + + x *= ss->cache->vc->ar->winx / diameter; + y *= ss->cache->vc->ar->winy / diameter; + + /* it is probably worth optimizing for those cases where + the texture is not rotated by skipping the calls to + atan2, sqrtf, sin, and cos. */ + if (rotation > 0.001 || rotation < -0.001) { + const float angle = atan2(y, x) + rotation; + const float flen = sqrtf(x*x + y*y); + + x = flen * cos(angle); + y = flen * sin(angle); + } + + x *= br->mtex.size[0]; + y *= br->mtex.size[1]; + + x += br->mtex.ofs[0]; + y += br->mtex.ofs[1]; + + avg = get_tex_pixel(br, x, y); } - avg*= brush_curve_strength(br, len, ss->cache->radius); /* Falloff curve */ + avg += br->texture_sample_bias; + + avg *= brush_curve_strength(br, len, ss->cache->radius); /* Falloff curve */ return avg; } @@ -787,7 +837,7 @@ static int sculpt_search_sphere_cb(PBVHNode *node, void *data_v) sub_v3_v3v3(t, center, nearest); - return t[0] * t[0] + t[1] * t[1] + t[2] * t[2] < data->radius_squared; + return dot_v3v3(t, t) < data->radius_squared; } /* Handles clipping against a mirror modifier and SCULPT_LOCK axis flags */ @@ -803,7 +853,7 @@ static void sculpt_clip(Sculpt *sd, SculptSession *ss, float *co, const float va co[i]= 0.0f; else co[i]= val[i]; - } + } } static void add_norm_if(float view_vec[3], float out[3], float out_flip[3], float fno[3]) @@ -815,52 +865,48 @@ static void add_norm_if(float view_vec[3], float out[3], float out_flip[3], floa } } -/* For draw/layer/flatten; finds average normal for all active vertices */ -static void calc_area_normal(Sculpt *sd, SculptSession *ss, float area_normal[3], PBVHNode **nodes, int totnode) +static void calc_area_normal(Sculpt *sd, SculptSession *ss, float an[3], PBVHNode **nodes, int totnode) { - PBVH *bvh= ss->pbvh; - StrokeCache *cache = ss->cache; - const int view = 0; /* XXX: should probably be a flag, not number: brush_type==SCULPT_TOOL_DRAW ? sculptmode_brush()->view : 0; */ - float out[3] = {0.0f, 0.0f, 0.0f}; - float out_flip[3] = {0.0f, 0.0f, 0.0f}; - float out_dir[3]; int n; - copy_v3_v3(out_dir, cache->view_normal_symmetry); + float out_flip[3] = {0.0f, 0.0f, 0.0f}; - /* threaded loop over nodes */ - //#pragma omp parallel for private(n) schedule(static) + zero_v3(an); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) for(n=0; ncache->original) { - BLI_pbvh_vertex_iter_begin(bvh, nodes[n], vd, PBVH_ITER_UNIQUE) { - if(sculpt_brush_test(&test, unode->co[vd.i])) { + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test_fast(&test, unode->co[vd.i])) { + float fno[3]; + normal_short_to_float_v3(fno, unode->no[vd.i]); - add_norm_if(out_dir, nout, nout_flip, fno); + add_norm_if(ss->cache->view_normal, private_an, private_out_flip, fno); } } BLI_pbvh_vertex_iter_end; } else { - BLI_pbvh_vertex_iter_begin(bvh, nodes[n], vd, PBVH_ITER_UNIQUE) { - if(sculpt_brush_test(&test, vd.co)) { + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test_fast(&test, vd.co)) { if(vd.no) { + float fno[3]; + normal_short_to_float_v3(fno, vd.no); - add_norm_if(out_dir, nout, nout_flip, fno); + add_norm_if(ss->cache->view_normal, private_an, private_out_flip, fno); + } + else { + add_norm_if(ss->cache->view_normal, private_an, private_out_flip, vd.fno); } - else - add_norm_if(out_dir, nout, nout_flip, vd.fno); } } BLI_pbvh_vertex_iter_end; @@ -868,72 +914,70 @@ static void calc_area_normal(Sculpt *sd, SculptSession *ss, float area_normal[3] //#pragma omp critical { - /* we sum per node and add together later for threads */ - add_v3_v3(out, nout); - add_v3_v3(out_flip, nout_flip); + add_v3_v3(an, private_an); + add_v3_v3(out_flip, private_out_flip); } } - if (out[0]==0.0 && out[1]==0.0 && out[2]==0.0) { - copy_v3_v3(out, out_flip); - } - - normalize_v3(out); + if (is_zero_v3(an)) + copy_v3_v3(an, out_flip); - out[0] = out_dir[0] * view + out[0] * (10-view); - out[1] = out_dir[1] * view + out[1] * (10-view); - out[2] = out_dir[2] * view + out[2] * (10-view); - - normalize_v3(out); - copy_v3_v3(area_normal, out); + normalize_v3(an); } -static void do_draw_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +/* This initializes the faces to be moved for this sculpt for draw/layer/flatten; then it + finds average normal for all active vertices - note that this is called once for each mirroring direction */ +static void calc_sculpt_normal(Sculpt *sd, SculptSession *ss, float an[3], PBVHNode **nodes, int totnode) { Brush *brush = paint_brush(&sd->paint); - float offset[3], area_normal[3]; - float bstrength= ss->cache->bstrength; - int n; - /* area normal */ - calc_area_normal(sd, ss, area_normal, nodes, totnode); + if (ss->cache->mirror_symmetry_pass == 0 && + ss->cache->radial_symmetry_pass == 0 && + (ss->cache->first_time || !(brush->flag & BRUSH_ORIGINAL_NORMAL))) + { + switch (brush->sculpt_plane) { + case SCULPT_DISP_DIR_VIEW: + viewvector(ss->cache->vc->rv3d, ss->cache->vc->rv3d->twmat[3], an); + break; - /* offset with as much as possible factored in already */ - offset[0]= area_normal[0]*ss->cache->radius*ss->cache->scale[0]*bstrength; - offset[1]= area_normal[1]*ss->cache->radius*ss->cache->scale[1]*bstrength; - offset[2]= area_normal[2]*ss->cache->radius*ss->cache->scale[2]*bstrength; + case SCULPT_DISP_DIR_X: + an[1] = 0.0; + an[2] = 0.0; + an[0] = 1.0; + break; - /* threaded loop over nodes */ - //#pragma omp parallel for private(n) schedule(static) - for(n=0; npbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { - if(sculpt_brush_test(&test, vd.co)) { - /* offset vertex */ - float fade = tex_strength(ss, brush, vd.co, test.dist); - float val[3]= {vd.co[0] + offset[0]*fade, - vd.co[1] + offset[1]*fade, - vd.co[2] + offset[2]*fade}; + case SCULPT_DISP_DIR_Z: + an[0] = 0.0; + an[1] = 0.0; + an[2] = 1.0; + break; - sculpt_clip(sd, ss, vd.co, val); - if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; - } + case SCULPT_DISP_DIR_AREA: + calc_area_normal(sd, ss, an, nodes, totnode); + + default: + break; } - BLI_pbvh_vertex_iter_end; - BLI_pbvh_node_mark_update(nodes[n]); + copy_v3_v3(ss->cache->last_area_normal, an); + } + else { + copy_v3_v3(an, ss->cache->last_area_normal); + flip_coord(an, an, ss->cache->mirror_symmetry_pass); + mul_m4_v3(ss->cache->symm_rot_mat, an); } } /* For the smooth brush, uses the neighboring vertices around vert to calculate a smoothed location for vert. Skips corner vertices (used by only one polygon.) */ -static void neighbor_average(SculptSession *ss, float avg[3], const int vert) +static void neighbor_average(SculptSession *ss, float avg[3], const unsigned vert) { int i, skip= -1, total=0; IndexNode *node= ss->fmap[vert].first; @@ -974,52 +1018,58 @@ static void neighbor_average(SculptSession *ss, float avg[3], const int vert) copy_v3_v3(avg, ss->mvert[vert].co); } -static void do_mesh_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode *node) +static void do_mesh_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode *node, float bstrength) { Brush *brush = paint_brush(&sd->paint); - float bstrength= ss->cache->bstrength; PBVHVertexIter vd; SculptBrushTest test; + CLAMP(bstrength, 0.0f, 1.0f); + sculpt_brush_test_init(ss, &test); BLI_pbvh_vertex_iter_begin(ss->pbvh, node, vd, PBVH_ITER_UNIQUE) { if(sculpt_brush_test(&test, vd.co)) { - float fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength; + const float fade = bstrength*tex_strength(ss, brush, vd.co, test.dist)*frontface(brush, ss->cache->view_normal, vd.no, vd.fno); float avg[3], val[3]; - CLAMP(fade, 0.0f, 1.0f); - neighbor_average(ss, avg, vd.vert_indices[vd.i]); - val[0] = vd.co[0]+(avg[0]-vd.co[0])*fade; - val[1] = vd.co[1]+(avg[1]-vd.co[1])*fade; - val[2] = vd.co[2]+(avg[2]-vd.co[2])*fade; - - sculpt_clip(sd, ss, vd.co, val); - if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + sub_v3_v3v3(val, avg, vd.co); + mul_v3_fl(val, fade); + + add_v3_v3(val, vd.co); + + sculpt_clip(sd, ss, vd.co, val); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; } } BLI_pbvh_vertex_iter_end; } -static void do_multires_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode *node) +static void do_multires_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode *node, float bstrength) { Brush *brush = paint_brush(&sd->paint); SculptBrushTest test; DMGridData **griddata, *data; DMGridAdjacency *gridadj, *adj; - float bstrength= ss->cache->bstrength; - float co[3], (*tmpgrid)[3]; + float (*tmpgrid)[3], (*tmprow)[3]; int v1, v2, v3, v4; int *grid_indices, totgrid, gridsize, i, x, y; - + sculpt_brush_test_init(ss, &test); + CLAMP(bstrength, 0.0f, 1.0f); + BLI_pbvh_node_get_grids(ss->pbvh, node, &grid_indices, &totgrid, NULL, &gridsize, &griddata, &gridadj); //#pragma omp critical - tmpgrid= MEM_mallocN(sizeof(float)*3*gridsize*gridsize, "tmpgrid"); + { + tmpgrid= MEM_mallocN(sizeof(float)*3*gridsize*gridsize, "tmpgrid"); + tmprow= MEM_mallocN(sizeof(float)*3*gridsize, "tmprow"); + } for(i = 0; i < totgrid; ++i) { data = griddata[grid_indices[i]]; @@ -1027,75 +1077,106 @@ static void do_multires_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode *no memset(tmpgrid, 0, sizeof(float)*3*gridsize*gridsize); - /* average grid values */ - for(y = 0; y < gridsize-1; ++y) { - for(x = 0; x < gridsize-1; ++x) { + for (y= 0; y < gridsize-1; y++) { + float tmp[3]; + + v1 = y*gridsize; + add_v3_v3v3(tmprow[0], data[v1].co, data[v1+gridsize].co); + + for (x= 0; x < gridsize-1; x++) { v1 = x + y*gridsize; - v2 = (x + 1) + y*gridsize; - v3 = (x + 1) + (y + 1)*gridsize; - v4 = x + (y + 1)*gridsize; + v2 = v1 + 1; + v3 = v1 + gridsize; + v4 = v3 + 1; - cent_quad_v3(co, data[v1].co, data[v2].co, data[v3].co, data[v4].co); - mul_v3_fl(co, 0.25f); + add_v3_v3v3(tmprow[x+1], data[v2].co, data[v4].co); + add_v3_v3v3(tmp, tmprow[x+1], tmprow[x]); - add_v3_v3(tmpgrid[v1], co); - add_v3_v3(tmpgrid[v2], co); - add_v3_v3(tmpgrid[v3], co); - add_v3_v3(tmpgrid[v4], co); + add_v3_v3(tmpgrid[v1], tmp); + add_v3_v3(tmpgrid[v2], tmp); + add_v3_v3(tmpgrid[v3], tmp); + add_v3_v3(tmpgrid[v4], tmp); } } /* blend with existing coordinates */ for(y = 0; y < gridsize; ++y) { for(x = 0; x < gridsize; ++x) { - if(x == 0 && adj->index[0] == -1) continue; - if(x == gridsize - 1 && adj->index[2] == -1) continue; - if(y == 0 && adj->index[3] == -1) continue; - if(y == gridsize - 1 && adj->index[1] == -1) continue; + float *co; + float *fno; + int index; - copy_v3_v3(co, data[x + y*gridsize].co); + if(x == 0 && adj->index[0] == -1) + continue; + + if(x == gridsize - 1 && adj->index[2] == -1) + continue; + + if(y == 0 && adj->index[3] == -1) + continue; + + if(y == gridsize - 1 && adj->index[1] == -1) + continue; + + index = x + y*gridsize; + co= data[index].co; + fno= data[index].no; if(sculpt_brush_test(&test, co)) { - float fade = tex_strength(ss, brush, co, test.dist)*bstrength; - float avg[3], val[3]; + const float fade = bstrength*tex_strength(ss, brush, co, test.dist)*frontface(brush, ss->cache->view_normal, NULL, fno); + float *avg, val[3]; + float n; + + avg = tmpgrid[x + y*gridsize]; + + n = 1/16.0f; - copy_v3_v3(avg, tmpgrid[x + y*gridsize]); if(x == 0 || x == gridsize - 1) - mul_v3_fl(avg, 2.0f); + n *= 2; + if(y == 0 || y == gridsize - 1) - mul_v3_fl(avg, 2.0f); + n *= 2; - CLAMP(fade, 0.0f, 1.0f); + mul_v3_fl(avg, n); - val[0] = co[0]+(avg[0]-co[0])*fade; - val[1] = co[1]+(avg[1]-co[1])*fade; - val[2] = co[2]+(avg[2]-co[2])*fade; - - sculpt_clip(sd, ss, data[x + y*gridsize].co, val); + sub_v3_v3v3(val, avg, co); + mul_v3_fl(val, fade); + + add_v3_v3(val, co); + + sculpt_clip(sd, ss, co, val); } } } } //#pragma omp critical - MEM_freeN(tmpgrid); + { + MEM_freeN(tmpgrid); + MEM_freeN(tmprow); + } } -static void do_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +static void smooth(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode, float bstrength) { - int iteration, n; + const int max_iterations = 4; + const float fract = 1.0f/max_iterations; + int iteration, n, count; + float last; - for(iteration = 0; iteration < 2; ++iteration) { - //#pragma omp parallel for private(n) schedule(static) + CLAMP(bstrength, 0, 1); + + count = (int)(bstrength*max_iterations); + last = max_iterations*(bstrength - count*fract); + + for(iteration = 1; iteration <= count; ++iteration) { + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) for(n=0; nmultires) - do_multires_smooth_brush(sd, ss, nodes[n]); + if(ss->multires) { + do_multires_smooth_brush(sd, ss, nodes[n], iteration != count ? 1.0f : last); + } else if(ss->fmap) - do_mesh_smooth_brush(sd, ss, nodes[n]); - - BLI_pbvh_node_mark_update(nodes[n]); + do_mesh_smooth_brush(sd, ss, nodes[n], iteration != count ? 1.0f : last); } if(ss->multires) @@ -1103,69 +1184,378 @@ static void do_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int } } +static void do_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + smooth(sd, ss, nodes, totnode, ss->cache->bstrength); +} + +static void do_draw_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + Brush *brush = paint_brush(&sd->paint); + float offset[3], area_normal[3]; + float bstrength= ss->cache->bstrength; + int n; + + calc_sculpt_normal(sd, ss, area_normal, nodes, totnode); + + /* offset with as much as possible factored in already */ + mul_v3_v3fl(offset, area_normal, ss->cache->radius); + mul_v3_v3(offset, ss->cache->scale); + mul_v3_fl(offset, bstrength); + + /* threaded loop over nodes */ + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for(n=0; npbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if (sculpt_brush_test(&test, vd.co)) { + //if(sculpt_brush_test_cyl(&test, vd.co, ss->cache->location, area_normal)) { + /* offset vertex */ + float fade = tex_strength(ss, brush, vd.co, test.dist)*frontface(brush, area_normal, vd.no, vd.fno); + + mul_v3_v3fl(proxy[vd.i], offset, fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } + } + BLI_pbvh_vertex_iter_end; + } +} + +static void do_crease_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + Brush *brush = paint_brush(&sd->paint); + float offset[3], area_normal[3]; + float bstrength= ss->cache->bstrength; + float flippedbstrength, crease_correction; + int n; + + calc_sculpt_normal(sd, ss, area_normal, nodes, totnode); + + /* offset with as much as possible factored in already */ + mul_v3_v3fl(offset, area_normal, ss->cache->radius); + mul_v3_v3(offset, ss->cache->scale); + mul_v3_fl(offset, bstrength); + + /* we divide out the squared alpha and multiply by the squared crease to give us the pinch strength */ + + if(sculpt_get_brush_alpha(brush) > 0.0f) + crease_correction = brush->crease_pinch_factor*brush->crease_pinch_factor/(sculpt_get_brush_alpha(brush)*sculpt_get_brush_alpha(brush)); + else + crease_correction = brush->crease_pinch_factor*brush->crease_pinch_factor; + + /* we always want crease to pinch or blob to relax even when draw is negative */ + flippedbstrength = (bstrength < 0) ? -crease_correction*bstrength : crease_correction*bstrength; + + if(brush->sculpt_tool == SCULPT_TOOL_BLOB) flippedbstrength *= -1.0f; + + /* threaded loop over nodes */ + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for(n=0; npbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test(&test, vd.co)) { + /* offset vertex */ + const float fade = tex_strength(ss, brush, vd.co, test.dist)*frontface(brush, area_normal, vd.no, vd.fno); + float val1[3]; + float val2[3]; + + /* first we pinch */ + sub_v3_v3v3(val1, test.location, vd.co); + //mul_v3_v3(val1, ss->cache->scale); + mul_v3_fl(val1, fade*flippedbstrength); + + /* then we draw */ + mul_v3_v3fl(val2, offset, fade); + + add_v3_v3v3(proxy[vd.i], val1, val2); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } + } + BLI_pbvh_vertex_iter_end; + } +} + static void do_pinch_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) { Brush *brush = paint_brush(&sd->paint); float bstrength= ss->cache->bstrength; int n; - //#pragma omp parallel for private(n) schedule(static) + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) for(n=0; npbvh, nodes[n])->co; + sculpt_brush_test_init(ss, &test); BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { if(sculpt_brush_test(&test, vd.co)) { - float fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength; - float val[3]= {vd.co[0]+(test.location[0]-vd.co[0])*fade, - vd.co[1]+(test.location[1]-vd.co[1])*fade, - vd.co[2]+(test.location[2]-vd.co[2])*fade}; + float fade = bstrength*tex_strength(ss, brush, vd.co, test.dist)*frontface(brush, ss->cache->view_normal, vd.no, vd.fno); + float val[3]; - sculpt_clip(sd, ss, vd.co, val); - if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; - } + sub_v3_v3v3(val, test.location, vd.co); + mul_v3_v3fl(proxy[vd.i], val, fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } } BLI_pbvh_vertex_iter_end; - - BLI_pbvh_node_mark_update(nodes[n]); } } static void do_grab_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) { - Brush *brush = paint_brush(&sd->paint); + Brush *brush= paint_brush(&sd->paint); float bstrength= ss->cache->bstrength; - float grab_delta[3]; + float grab_delta[3], an[3]; int n; - + float len; + + if (brush->normal_weight > 0) + calc_sculpt_normal(sd, ss, an, nodes, totnode); + copy_v3_v3(grab_delta, ss->cache->grab_delta_symmetry); - //#pragma omp parallel for private(n) schedule(static) + len = len_v3(grab_delta); + + if (brush->normal_weight > 0) { + mul_v3_fl(an, len*brush->normal_weight); + mul_v3_fl(grab_delta, 1.0f - brush->normal_weight); + add_v3_v3(grab_delta, an); + } + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) for(n=0; nco; + short (*origno)[3]; + float (*proxy)[3]; + + unode= sculpt_undo_push_node(ss, nodes[n]); + origco= unode->co; + origno= unode->no; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + sculpt_brush_test_init(ss, &test); BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { if(sculpt_brush_test(&test, origco[vd.i])) { - float fade = tex_strength(ss, brush, origco[vd.i], test.dist)*bstrength; - float add[3]= {vd.co[0]+fade*grab_delta[0], - vd.co[1]+fade*grab_delta[1], - vd.co[2]+fade*grab_delta[2]}; + const float fade = bstrength*tex_strength(ss, brush, origco[vd.i], test.dist)*frontface(brush, an, origno[vd.i], NULL); - sculpt_clip(sd, ss, vd.co, add); - if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + mul_v3_v3fl(proxy[vd.i], grab_delta, fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; } } BLI_pbvh_vertex_iter_end; + } +} - BLI_pbvh_node_mark_update(nodes[n]); +static void do_nudge_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + Brush *brush = paint_brush(&sd->paint); + float bstrength = ss->cache->bstrength; + float grab_delta[3]; + int n; + float an[3]; + float tmp[3], cono[3]; + + copy_v3_v3(grab_delta, ss->cache->grab_delta_symmetry); + + calc_sculpt_normal(sd, ss, an, nodes, totnode); + + cross_v3_v3v3(tmp, an, grab_delta); + cross_v3_v3v3(cono, tmp, an); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for(n = 0; n < totnode; n++) { + PBVHVertexIter vd; + SculptBrushTest test; + float (*proxy)[3]; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test(&test, vd.co)) { + const float fade = bstrength*tex_strength(ss, brush, vd.co, test.dist)*frontface(brush, an, vd.no, vd.fno); + + mul_v3_v3fl(proxy[vd.i], cono, fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } + } + BLI_pbvh_vertex_iter_end; + } +} + +static void do_snake_hook_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + Brush *brush = paint_brush(&sd->paint); + float bstrength = ss->cache->bstrength; + float grab_delta[3], an[3]; + int n; + float len; + + if (brush->normal_weight > 0) + calc_sculpt_normal(sd, ss, an, nodes, totnode); + + copy_v3_v3(grab_delta, ss->cache->grab_delta_symmetry); + + len = len_v3(grab_delta); + + if (bstrength < 0) + negate_v3(grab_delta); + + if (brush->normal_weight > 0) { + mul_v3_fl(an, len*brush->normal_weight); + mul_v3_fl(grab_delta, 1.0f - brush->normal_weight); + add_v3_v3(grab_delta, an); + } + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for(n = 0; n < totnode; n++) { + PBVHVertexIter vd; + SculptBrushTest test; + float (*proxy)[3]; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test(&test, vd.co)) { + const float fade = bstrength*tex_strength(ss, brush, vd.co, test.dist)*frontface(brush, an, vd.no, vd.fno); + + mul_v3_v3fl(proxy[vd.i], grab_delta, fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } + } + BLI_pbvh_vertex_iter_end; + } +} + +static void do_thumb_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + Brush *brush = paint_brush(&sd->paint); + float bstrength = ss->cache->bstrength; + float grab_delta[3]; + int n; + float an[3]; + float tmp[3], cono[3]; + + copy_v3_v3(grab_delta, ss->cache->grab_delta_symmetry); + + calc_sculpt_normal(sd, ss, an, nodes, totnode); + + cross_v3_v3v3(tmp, an, grab_delta); + cross_v3_v3v3(cono, tmp, an); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for(n = 0; n < totnode; n++) { + PBVHVertexIter vd; + SculptUndoNode* unode; + SculptBrushTest test; + float (*origco)[3]; + short (*origno)[3]; + float (*proxy)[3]; + + unode= sculpt_undo_push_node(ss, nodes[n]); + origco= unode->co; + origno= unode->no; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test(&test, origco[vd.i])) { + const float fade = bstrength*tex_strength(ss, brush, origco[vd.i], test.dist)*frontface(brush, an, origno[vd.i], NULL); + + mul_v3_v3fl(proxy[vd.i], cono, fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } + } + BLI_pbvh_vertex_iter_end; + } +} + +static void do_rotate_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + Brush *brush= paint_brush(&sd->paint); + float bstrength= ss->cache->bstrength; + float an[3]; + int n; + float m[3][3]; + static const int flip[8] = { 1, -1, -1, 1, -1, 1, 1, -1 }; + float angle = ss->cache->vertex_rotation * flip[ss->cache->mirror_symmetry_pass]; + + calc_sculpt_normal(sd, ss, an, nodes, totnode); + + axis_angle_to_mat3(m, an, angle); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for(n=0; nco; + origno= unode->no; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test(&test, origco[vd.i])) { + const float fade = bstrength*tex_strength(ss, brush, origco[vd.i], test.dist)*frontface(brush, an, origno[vd.i], NULL); + + mul_v3_m3v3(proxy[vd.i], m, origco[vd.i]); + sub_v3_v3(proxy[vd.i], origco[vd.i]); + mul_v3_fl(proxy[vd.i], fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } + } + BLI_pbvh_vertex_iter_end; } } @@ -1177,63 +1567,66 @@ static void do_layer_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int float lim= ss->cache->radius / 4; int n; - if(ss->cache->flip) + if(bstrength < 0) lim = -lim; - calc_area_normal(sd, ss, area_normal, nodes, totnode); + calc_sculpt_normal(sd, ss, area_normal, nodes, totnode); - offset[0]= ss->cache->scale[0]*area_normal[0]; - offset[1]= ss->cache->scale[1]*area_normal[1]; - offset[2]= ss->cache->scale[2]*area_normal[2]; + mul_v3_v3v3(offset, ss->cache->scale, area_normal); - //#pragma omp parallel for private(n) schedule(static) + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) for(n=0; npbvh, nodes[n])->co; unode= sculpt_undo_push_node(ss, nodes[n]); origco=unode->co; if(!unode->layer_disp) - unode->layer_disp= MEM_callocN(sizeof(float)*unode->totvert, "layer disp"); + { + #pragma omp critical + unode->layer_disp= MEM_callocN(sizeof(float)*unode->totvert, "layer disp"); + } + layer_disp= unode->layer_disp; sculpt_brush_test_init(ss, &test); BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { if(sculpt_brush_test(&test, vd.co)) { - float fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength; + const float fade = bstrength*ss->cache->radius*tex_strength(ss, brush, vd.co, test.dist)*frontface(brush, area_normal, vd.no, vd.fno); float *disp= &layer_disp[vd.i]; float val[3]; - + *disp+= fade; - + /* Don't let the displacement go past the limit */ if((lim < 0 && *disp < lim) || (lim > 0 && *disp > lim)) *disp = lim; - + + mul_v3_v3fl(val, offset, *disp); + if(ss->layer_co && (brush->flag & BRUSH_PERSISTENT)) { int index= vd.vert_indices[vd.i]; /* persistent base */ - val[0] = ss->layer_co[index][0] + (*disp)*offset[0]; - val[1] = ss->layer_co[index][1] + (*disp)*offset[1]; - val[2] = ss->layer_co[index][2] + (*disp)*offset[2]; + add_v3_v3(val, ss->layer_co[index]); } else { - val[0] = origco[vd.i][0] + (*disp)*offset[0]; - val[1] = origco[vd.i][1] + (*disp)*offset[1]; - val[2] = origco[vd.i][2] + (*disp)*offset[2]; + add_v3_v3(val, origco[vd.i]); } sculpt_clip(sd, ss, vd.co, val); - if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; } } BLI_pbvh_vertex_iter_end; - - BLI_pbvh_node_mark_update(nodes[n]); } } @@ -1243,177 +1636,634 @@ static void do_inflate_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, in float bstrength= ss->cache->bstrength; int n; - //#pragma omp parallel for private(n) schedule(static) + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) for(n=0; npbvh, nodes[n])->co; + sculpt_brush_test_init(ss, &test); BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { if(sculpt_brush_test(&test, vd.co)) { - float fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength; - float add[3]; + const float fade = bstrength*tex_strength(ss, brush, vd.co, test.dist)*frontface(brush, ss->cache->view_normal, vd.no, vd.fno); + float val[3]; - if(vd.fno) copy_v3_v3(add, vd.fno); - else normal_short_to_float_v3(add, vd.no); + if(vd.fno) copy_v3_v3(val, vd.fno); + else normal_short_to_float_v3(val, vd.no); - mul_v3_fl(add, fade * ss->cache->radius); - add[0]*= ss->cache->scale[0]; - add[1]*= ss->cache->scale[1]; - add[2]*= ss->cache->scale[2]; - add_v3_v3(add, vd.co); - - sculpt_clip(sd, ss, vd.co, add); - if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + mul_v3_fl(val, fade * ss->cache->radius); + mul_v3_v3v3(proxy[vd.i], val, ss->cache->scale); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; } } BLI_pbvh_vertex_iter_end; - - BLI_pbvh_node_mark_update(nodes[n]); } } -static void calc_flatten_center(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode, float co[3]) +static void calc_flatten_center(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode, float fc[3]) { - float outer_dist[FLATTEN_SAMPLE_SIZE]; - float outer_co[FLATTEN_SAMPLE_SIZE][3]; - int i, n; - - for(i = 0; i < FLATTEN_SAMPLE_SIZE; ++i) { - zero_v3(outer_co[i]); - outer_dist[i]= -1.0f; - } - - //#pragma omp parallel for private(n) schedule(static) + int n; + + float count = 0; + + zero_v3(fc); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) for(n=0; npbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { - if(sculpt_brush_test(&test, vd.co)) { - for(j = 0; j < FLATTEN_SAMPLE_SIZE; ++j) { - if(test.dist > outer_dist[j]) { - copy_v3_v3(outer_co[j], vd.co); - outer_dist[j] = test.dist; - break; - } + if(ss->cache->original) { + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test_fast(&test, unode->co[vd.i])) { + add_v3_v3(private_fc, vd.co); + private_count++; } } + BLI_pbvh_vertex_iter_end; + } + else { + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test_fast(&test, vd.co)) { + add_v3_v3(private_fc, vd.co); + private_count++; + } + } + BLI_pbvh_vertex_iter_end; } - BLI_pbvh_vertex_iter_end; - BLI_pbvh_node_mark_update(nodes[n]); + #pragma omp critical + { + add_v3_v3(fc, private_fc); + count += private_count; + } + } + + mul_v3_fl(fc, 1.0f / count); +} + +/* this calculates flatten center and area normal together, +amortizing the memory bandwidth and loop overhead to calculate both at the same time */ +static void calc_area_normal_and_flatten_center(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode, float an[3], float fc[3]) +{ + int n; + + // an + float out_flip[3] = {0.0f, 0.0f, 0.0f}; + + // fc + float count = 0; + + // an + zero_v3(an); + + // fc + zero_v3(fc); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for(n=0; ncache->original) { + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test_fast(&test, unode->co[vd.i])) { + // an + float fno[3]; + + normal_short_to_float_v3(fno, unode->no[vd.i]); + add_norm_if(ss->cache->view_normal, private_an, private_out_flip, fno); + + // fc + add_v3_v3(private_fc, vd.co); + private_count++; + } + } + BLI_pbvh_vertex_iter_end; + } + else { + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test_fast(&test, vd.co)) { + // an + if(vd.no) { + float fno[3]; + + normal_short_to_float_v3(fno, vd.no); + add_norm_if(ss->cache->view_normal, private_an, private_out_flip, fno); + } + else { + add_norm_if(ss->cache->view_normal, private_an, private_out_flip, vd.fno); + } + + // fc + add_v3_v3(private_fc, vd.co); + private_count++; + } + } + BLI_pbvh_vertex_iter_end; + } + + #pragma omp critical + { + // an + add_v3_v3(an, private_an); + add_v3_v3(out_flip, private_out_flip); + + // fc + add_v3_v3(fc, private_fc); + count += private_count; + } + } + + // an + if (is_zero_v3(an)) + copy_v3_v3(an, out_flip); + + normalize_v3(an); + + // fc + mul_v3_fl(fc, 1.0f / count); +} + +static void calc_sculpt_plane(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode, float an[3], float fc[3]) +{ + Brush *brush = paint_brush(&sd->paint); + + if (ss->cache->mirror_symmetry_pass == 0 && + ss->cache->radial_symmetry_pass == 0 && + (ss->cache->first_time || !(brush->flag & BRUSH_ORIGINAL_NORMAL))) + { + switch (brush->sculpt_plane) { + case SCULPT_DISP_DIR_VIEW: + viewvector(ss->cache->vc->rv3d, ss->cache->vc->rv3d->twmat[3], an); + break; + + case SCULPT_DISP_DIR_X: + an[1] = 0.0; + an[2] = 0.0; + an[0] = 1.0; + break; + + case SCULPT_DISP_DIR_Y: + an[0] = 0.0; + an[2] = 0.0; + an[1] = 1.0; + break; + + case SCULPT_DISP_DIR_Z: + an[0] = 0.0; + an[1] = 0.0; + an[2] = 1.0; + break; + + case SCULPT_DISP_DIR_AREA: + calc_area_normal_and_flatten_center(sd, ss, nodes, totnode, an, fc); + + default: + break; + } + + // fc + /* flatten center has not been calculated yet if we are not using the area normal */ + if (brush->sculpt_plane != SCULPT_DISP_DIR_AREA) + calc_flatten_center(sd, ss, nodes, totnode, fc); + + // an + copy_v3_v3(ss->cache->last_area_normal, an); + + // fc + copy_v3_v3(ss->cache->last_center, fc); + } + else { + // an + copy_v3_v3(an, ss->cache->last_area_normal); + + // fc + copy_v3_v3(fc, ss->cache->last_center); + + // an + flip_coord(an, an, ss->cache->mirror_symmetry_pass); + + // fc + flip_coord(fc, fc, ss->cache->mirror_symmetry_pass); + + // an + mul_m4_v3(ss->cache->symm_rot_mat, an); + + // fc + mul_m4_v3(ss->cache->symm_rot_mat, fc); } - - co[0] = co[1] = co[2] = 0.0f; - for(i = 0; i < FLATTEN_SAMPLE_SIZE; ++i) - if(outer_dist[i] >= 0.0f) - add_v3_v3(co, outer_co[i]); - mul_v3_fl(co, 1.0f / FLATTEN_SAMPLE_SIZE); } /* Projects a point onto a plane along the plane's normal */ static void point_plane_project(float intr[3], float co[3], float plane_normal[3], float plane_center[3]) { - float p1[3], sub1[3], sub2[3]; - - /* Find the intersection between squash-plane and vertex (along the area normal) */ - sub_v3_v3v3(p1, co, plane_normal); - sub_v3_v3v3(sub1, plane_center, p1); - sub_v3_v3v3(sub2, co, p1); - sub_v3_v3v3(intr, co, p1); - mul_v3_fl(intr, dot_v3v3(plane_normal, sub1) / dot_v3v3(plane_normal, sub2)); - add_v3_v3(intr, p1); + sub_v3_v3v3(intr, co, plane_center); + mul_v3_v3fl(intr, plane_normal, dot_v3v3(plane_normal, intr)); + sub_v3_v3v3(intr, co, intr); } -static int plane_point_side(float co[3], float plane_normal[3], float plane_center[3], int flip) +static int plane_trim(StrokeCache *cache, Brush *brush, float val[3]) { - float delta[3]; - float d; - - sub_v3_v3v3(delta, co, plane_center); - d = dot_v3v3(plane_normal, delta); - - if(flip) - d = -d; - - return d <= 0.0f; + return !(brush->flag & BRUSH_PLANE_TRIM) || (dot_v3v3(val, val) <= cache->radius_squared*cache->plane_trim_squared); } -static void do_flatten_clay_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode, int clay) +static int plane_point_side_flip(float co[3], float plane_normal[3], float plane_center[3], int flip) { - /* area_normal and cntr define the plane towards which vertices are squashed */ - Brush *brush = paint_brush(&sd->paint); - float bstrength= ss->cache->bstrength; - float area_normal[3]; - float cntr[3], cntr2[3] = {0}, bstr = 0; - int n, flip = 0; + float delta[3]; + float d; - calc_area_normal(sd, ss, area_normal, nodes, totnode); - calc_flatten_center(sd, ss, nodes, totnode, cntr); + sub_v3_v3v3(delta, co, plane_center); + d = dot_v3v3(plane_normal, delta); - if(clay) { - bstr= brush_strength(sd, ss->cache); - /* Limit clay application to here */ - cntr2[0]=cntr[0]+area_normal[0]*bstr*ss->cache->scale[0]; - cntr2[1]=cntr[1]+area_normal[1]*bstr*ss->cache->scale[1]; - cntr2[2]=cntr[2]+area_normal[2]*bstr*ss->cache->scale[2]; - flip = bstr < 0; + if (flip) d = -d; + + return d <= 0.0f; +} + +static int plane_point_side(float co[3], float plane_normal[3], float plane_center[3]) +{ + float delta[3]; + + sub_v3_v3v3(delta, co, plane_center); + return dot_v3v3(plane_normal, delta) <= 0.0f; +} + +static float get_offset(Sculpt *sd, SculptSession *ss) +{ + Brush* brush = paint_brush(&sd->paint); + + float rv = brush->plane_offset; + + if (brush->flag & BRUSH_OFFSET_PRESSURE) { + rv *= ss->cache->pressure; } - //#pragma omp parallel for private(n) schedule(static) - for(n=0; npaint); + + float bstrength = ss->cache->bstrength; + const float radius = ss->cache->radius; + + float an[3]; + float fc[3]; + + float offset = get_offset(sd, ss); + + float displace; + + int n; + + float temp[3]; + + calc_sculpt_plane(sd, ss, nodes, totnode, an, fc); + + displace = radius*offset; + + mul_v3_v3v3(temp, an, ss->cache->scale); + mul_v3_fl(temp, displace); + add_v3_v3(fc, temp); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for(n = 0; n < totnode; n++) { + PBVHVertexIter vd; SculptBrushTest test; - - sculpt_undo_push_node(ss, nodes[n]); + float (*proxy)[3]; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + sculpt_brush_test_init(ss, &test); BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { - if(sculpt_brush_test(&test, vd.co)) { - float intr[3], val[3]; - - if(!clay || plane_point_side(vd.co, area_normal, cntr2, flip)) { - const float fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength; + if (sculpt_brush_test_sq(&test, vd.co)) { + float intr[3]; + float val[3]; - /* Find the intersection between squash-plane and vertex (along the area normal) */ - point_plane_project(intr, vd.co, area_normal, cntr); + point_plane_project(intr, vd.co, an, fc); - sub_v3_v3v3(val, intr, vd.co); + sub_v3_v3v3(val, intr, vd.co); - if(clay) { - if(bstr > FLT_EPSILON) - mul_v3_fl(val, fade / bstr); - else - mul_v3_fl(val, fade); - /* Clay displacement */ - val[0]+=area_normal[0] * ss->cache->scale[0]*fade; - val[1]+=area_normal[1] * ss->cache->scale[1]*fade; - val[2]+=area_normal[2] * ss->cache->scale[2]*fade; - } - else - mul_v3_fl(val, fabs(fade)); + if (plane_trim(ss->cache, brush, val)) { + const float fade = bstrength*tex_strength(ss, brush, vd.co, sqrt(test.dist))*frontface(brush, an, vd.no, vd.fno); - add_v3_v3(val, vd.co); + mul_v3_v3fl(proxy[vd.i], val, fade); - sculpt_clip(sd, ss, vd.co, val); - if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; } } } BLI_pbvh_vertex_iter_end; - - BLI_pbvh_node_mark_update(nodes[n]); } } -static void sculpt_vertcos_to_key(Object *ob, KeyBlock *kb, float (*vertCos)[3]) +static void do_clay_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + Brush *brush = paint_brush(&sd->paint); + + float bstrength = ss->cache->bstrength; + float radius = ss->cache->radius; + float offset = get_offset(sd, ss); + + float displace; + + float an[3]; // area normal + float fc[3]; // flatten center + + int n; + + float temp[3]; + //float p[3]; + + int flip; + + calc_sculpt_plane(sd, ss, nodes, totnode, an, fc); + + flip = bstrength < 0; + + if (flip) { + bstrength = -bstrength; + radius = -radius; + } + + displace = radius * (0.25f+offset); + + mul_v3_v3v3(temp, an, ss->cache->scale); + mul_v3_fl(temp, displace); + add_v3_v3(fc, temp); + + //add_v3_v3v3(p, ss->cache->location, an); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for (n = 0; n < totnode; n++) { + PBVHVertexIter vd; + SculptBrushTest test; + float (*proxy)[3]; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if (sculpt_brush_test_sq(&test, vd.co)) { + if (plane_point_side_flip(vd.co, an, fc, flip)) { + //if (sculpt_brush_test_cyl(&test, vd.co, ss->cache->location, p)) { + float intr[3]; + float val[3]; + + point_plane_project(intr, vd.co, an, fc); + + sub_v3_v3v3(val, intr, vd.co); + + if (plane_trim(ss->cache, brush, val)) { + const float fade = bstrength*tex_strength(ss, brush, vd.co, sqrt(test.dist))*frontface(brush, an, vd.no, vd.fno); + + mul_v3_v3fl(proxy[vd.i], val, fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } + } + } + } + BLI_pbvh_vertex_iter_end; + } +} + +static void do_clay_tubes_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + Brush *brush = paint_brush(&sd->paint); + + float bstrength = ss->cache->bstrength; + float radius = ss->cache->radius; + float offset = get_offset(sd, ss); + + float displace; + + float sn[3]; // sculpt normal + float an[3]; // area normal + float fc[3]; // flatten center + + int n; + + float temp[3]; + float mat[4][4]; + float scale[4][4]; + float tmat[4][4]; + + int flip; + + calc_sculpt_plane(sd, ss, nodes, totnode, sn, fc); + + if (brush->sculpt_plane != SCULPT_DISP_DIR_AREA || (brush->flag & BRUSH_ORIGINAL_NORMAL)) + calc_area_normal(sd, ss, an, nodes, totnode); + else + copy_v3_v3(an, sn); + + if (ss->cache->first_time) + return; // delay the first daub because grab delta is not setup + + flip = bstrength < 0; + + if (flip) { + bstrength = -bstrength; + radius = -radius; + } + + displace = radius * (0.25f+offset); + + mul_v3_v3v3(temp, sn, ss->cache->scale); + mul_v3_fl(temp, displace); + add_v3_v3(fc, temp); + + cross_v3_v3v3(mat[0], an, ss->cache->grab_delta_symmetry); mat[0][3] = 0; + cross_v3_v3v3(mat[1], an, mat[0]); mat[1][3] = 0; + copy_v3_v3(mat[2], an); mat[2][3] = 0; + copy_v3_v3(mat[3], ss->cache->location); mat[3][3] = 1; + normalize_m4(mat); + scale_m4_fl(scale, ss->cache->radius); + mul_m4_m4m4(tmat, scale, mat); + invert_m4_m4(mat, tmat); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for (n = 0; n < totnode; n++) { + PBVHVertexIter vd; + SculptBrushTest test; + float (*proxy)[3]; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if (sculpt_brush_test_cube(&test, vd.co, mat)) { + if (plane_point_side_flip(vd.co, sn, fc, flip)) { + float intr[3]; + float val[3]; + + point_plane_project(intr, vd.co, sn, fc); + + sub_v3_v3v3(val, intr, vd.co); + + if (plane_trim(ss->cache, brush, val)) { + const float fade = bstrength*tex_strength(ss, brush, vd.co, ss->cache->radius*test.dist)*frontface(brush, an, vd.no, vd.fno); + + mul_v3_v3fl(proxy[vd.i], val, fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } + } + } + } + BLI_pbvh_vertex_iter_end; + } +} + +static void do_fill_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + Brush *brush = paint_brush(&sd->paint); + + float bstrength = ss->cache->bstrength; + const float radius = ss->cache->radius; + + float an[3]; + float fc[3]; + float offset = get_offset(sd, ss); + + float displace; + + int n; + + float temp[3]; + + calc_sculpt_plane(sd, ss, nodes, totnode, an, fc); + + displace = radius*offset; + + mul_v3_v3v3(temp, an, ss->cache->scale); + mul_v3_fl(temp, displace); + add_v3_v3(fc, temp); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for (n = 0; n < totnode; n++) { + PBVHVertexIter vd; + SculptBrushTest test; + float (*proxy)[3]; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if (sculpt_brush_test_sq(&test, vd.co)) { + if (plane_point_side(vd.co, an, fc)) { + float intr[3]; + float val[3]; + + point_plane_project(intr, vd.co, an, fc); + + sub_v3_v3v3(val, intr, vd.co); + + if (plane_trim(ss->cache, brush, val)) { + const float fade = bstrength*tex_strength(ss, brush, vd.co, sqrt(test.dist))*frontface(brush, an, vd.no, vd.fno); + + mul_v3_v3fl(proxy[vd.i], val, fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } + } + } + } + BLI_pbvh_vertex_iter_end; + } +} + +static void do_scrape_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + Brush *brush = paint_brush(&sd->paint); + + float bstrength = ss->cache->bstrength; + const float radius = ss->cache->radius; + + float an[3]; + float fc[3]; + float offset = get_offset(sd, ss); + + float displace; + + int n; + + float temp[3]; + + calc_sculpt_plane(sd, ss, nodes, totnode, an, fc); + + displace = -radius*offset; + + mul_v3_v3v3(temp, an, ss->cache->scale); + mul_v3_fl(temp, displace); + add_v3_v3(fc, temp); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for (n = 0; n < totnode; n++) { + PBVHVertexIter vd; + SculptBrushTest test; + float (*proxy)[3]; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if (sculpt_brush_test_sq(&test, vd.co)) { + if (!plane_point_side(vd.co, an, fc)) { + float intr[3]; + float val[3]; + + point_plane_project(intr, vd.co, an, fc); + + sub_v3_v3v3(val, intr, vd.co); + + if (plane_trim(ss->cache, brush, val)) { + const float fade = bstrength*tex_strength(ss, brush, vd.co, sqrt(test.dist))*frontface(brush, an, vd.no, vd.fno); + + mul_v3_v3fl(proxy[vd.i], val, fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } + } + } + } + BLI_pbvh_vertex_iter_end; + } +} + +void sculpt_vertcos_to_key(Object *ob, KeyBlock *kb, float (*vertCos)[3]) { Mesh *me= (Mesh*)ob->data; float (*ofs)[3]= NULL; @@ -1475,36 +2325,27 @@ static void sculpt_update_keyblock(SculptSession *ss) } } -static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache) +static void do_brush_action(Sculpt *sd, SculptSession *ss, Brush *brush) { SculptSearchSphereData data; - Brush *brush = paint_brush(&sd->paint); - PBVHNode **nodes= NULL; - int totnode; + PBVHNode **nodes = NULL; + int n, totnode; + /* Build a list of all nodes that are potentially within the brush's area of influence */ data.ss = ss; data.sd = sd; - data.radius_squared = ss->cache->radius * ss->cache->radius; - - /* Build a list of all nodes that are potentially within the brush's - area of influence */ - if(brush->sculpt_tool == SCULPT_TOOL_GRAB) { - data.original= 1; - BLI_pbvh_search_gather(ss->pbvh, sculpt_search_sphere_cb, &data, - &nodes, &totnode); - - if(cache->first_time) - copy_v3_v3(ss->cache->grab_active_location[ss->cache->symmetry], ss->cache->location); - else - copy_v3_v3(ss->cache->location, ss->cache->grab_active_location[ss->cache->symmetry]); - } - else { - BLI_pbvh_search_gather(ss->pbvh, sculpt_search_sphere_cb, &data, - &nodes, &totnode); - } + data.radius_squared = ss->cache->radius_squared; + data.original = ELEM4(brush->sculpt_tool, SCULPT_TOOL_GRAB, SCULPT_TOOL_ROTATE, SCULPT_TOOL_THUMB, SCULPT_TOOL_LAYER); + BLI_pbvh_search_gather(ss->pbvh, sculpt_search_sphere_cb, &data, &nodes, &totnode); /* Only act if some verts are inside the brush area */ - if(totnode) { + if (totnode) { + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for (n= 0; n < totnode; n++) { + sculpt_undo_push_node(ss, nodes[n]); + BLI_pbvh_node_mark_update(nodes[n]); + } + /* Apply one type of brush action */ switch(brush->sculpt_tool){ case SCULPT_TOOL_DRAW: @@ -1513,6 +2354,12 @@ static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache) case SCULPT_TOOL_SMOOTH: do_smooth_brush(sd, ss, nodes, totnode); break; + case SCULPT_TOOL_CREASE: + do_crease_brush(sd, ss, nodes, totnode); + break; + case SCULPT_TOOL_BLOB: + do_crease_brush(sd, ss, nodes, totnode); + break; case SCULPT_TOOL_PINCH: do_pinch_brush(sd, ss, nodes, totnode); break; @@ -1522,57 +2369,244 @@ static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache) case SCULPT_TOOL_GRAB: do_grab_brush(sd, ss, nodes, totnode); break; + case SCULPT_TOOL_ROTATE: + do_rotate_brush(sd, ss, nodes, totnode); + break; + case SCULPT_TOOL_SNAKE_HOOK: + do_snake_hook_brush(sd, ss, nodes, totnode); + break; + case SCULPT_TOOL_NUDGE: + do_nudge_brush(sd, ss, nodes, totnode); + break; + case SCULPT_TOOL_THUMB: + do_thumb_brush(sd, ss, nodes, totnode); + break; case SCULPT_TOOL_LAYER: do_layer_brush(sd, ss, nodes, totnode); break; case SCULPT_TOOL_FLATTEN: - do_flatten_clay_brush(sd, ss, nodes, totnode, 0); + do_flatten_brush(sd, ss, nodes, totnode); break; case SCULPT_TOOL_CLAY: - do_flatten_clay_brush(sd, ss, nodes, totnode, 1); + do_clay_brush(sd, ss, nodes, totnode); + break; + case SCULPT_TOOL_CLAY_TUBES: + do_clay_tubes_brush(sd, ss, nodes, totnode); + break; + case SCULPT_TOOL_FILL: + do_fill_brush(sd, ss, nodes, totnode); + break; + case SCULPT_TOOL_SCRAPE: + do_scrape_brush(sd, ss, nodes, totnode); break; } + if (brush->sculpt_tool != SCULPT_TOOL_SMOOTH && brush->autosmooth_factor > 0) { + if (brush->flag & BRUSH_INVERSE_SMOOTH_PRESSURE) { + smooth(sd, ss, nodes, totnode, brush->autosmooth_factor*(1-ss->cache->pressure)*ss->cache->autosmooth_overlap); + } + else { + smooth(sd, ss, nodes, totnode, brush->autosmooth_factor*ss->cache->autosmooth_overlap); + } + } + + /* copy the modified vertices from mesh to the active key */ + if(ss->kb) + mesh_to_key(ss->ob->data, ss->kb); + /* optimization: we could avoid copying new coords to keyblock at each */ /* stroke step if there are no modifiers due to pbvh is used for displaying */ /* so to increase speed we'll copy new coords to keyblock when stroke is done */ if(ss->kb && ss->modifiers_active) sculpt_update_keyblock(ss); - if(nodes) - MEM_freeN(nodes); + MEM_freeN(nodes); } } +static void sculpt_combine_proxies(Sculpt *sd, SculptSession *ss) +{ + Brush *brush= paint_brush(&sd->paint); + PBVHNode** nodes; + int totnode; + int n; + + BLI_pbvh_gather_proxies(ss->pbvh, &nodes, &totnode); + + switch (brush->sculpt_tool) { + case SCULPT_TOOL_GRAB: + case SCULPT_TOOL_ROTATE: + case SCULPT_TOOL_THUMB: + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for (n= 0; n < totnode; n++) { + PBVHVertexIter vd; + PBVHProxyNode* proxies; + int proxy_count; + float (*origco)[3]; + + origco= sculpt_undo_push_node(ss, nodes[n])->co; + + BLI_pbvh_node_get_proxies(nodes[n], &proxies, &proxy_count); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + float val[3]; + int p; + + copy_v3_v3(val, origco[vd.i]); + + for (p= 0; p < proxy_count; p++) + add_v3_v3(val, proxies[p].co[vd.i]); + + sculpt_clip(sd, ss, vd.co, val); + } + BLI_pbvh_vertex_iter_end; + + BLI_pbvh_node_free_proxies(nodes[n]); + } + + break; + + case SCULPT_TOOL_DRAW: + case SCULPT_TOOL_CLAY: + case SCULPT_TOOL_CLAY_TUBES: + case SCULPT_TOOL_CREASE: + case SCULPT_TOOL_BLOB: + case SCULPT_TOOL_FILL: + case SCULPT_TOOL_FLATTEN: + case SCULPT_TOOL_INFLATE: + case SCULPT_TOOL_NUDGE: + case SCULPT_TOOL_PINCH: + case SCULPT_TOOL_SCRAPE: + case SCULPT_TOOL_SNAKE_HOOK: + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for (n= 0; n < totnode; n++) { + PBVHVertexIter vd; + PBVHProxyNode* proxies; + int proxy_count; + + BLI_pbvh_node_get_proxies(nodes[n], &proxies, &proxy_count); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + float val[3]; + int p; + + copy_v3_v3(val, vd.co); + + for (p= 0; p < proxy_count; p++) + add_v3_v3(val, proxies[p].co[vd.i]); + + sculpt_clip(sd, ss, vd.co, val); + } + BLI_pbvh_vertex_iter_end; + + BLI_pbvh_node_free_proxies(nodes[n]); + + } + + break; + + case SCULPT_TOOL_SMOOTH: + case SCULPT_TOOL_LAYER: + default: + break; + } + + if (nodes) + MEM_freeN(nodes); +} + +//static int max_overlap_count(Sculpt *sd) +//{ +// int count[3]; +// int i, j; +// +// for (i= 0; i < 3; i++) { +// count[i] = sd->radial_symm[i]; +// +// for (j= 0; j < 3; j++) { +// if (i != j && sd->flags & (SCULPT_SYMM_X<location, cache->true_location, symm); - flip_coord(cache->view_normal_symmetry, cache->view_normal, symm); flip_coord(cache->grab_delta_symmetry, cache->grab_delta, symm); - cache->symmetry= symm; + flip_coord(cache->view_normal, cache->true_view_normal, symm); + + // XXX This reduces the length of the grab delta if it approaches the line of symmetry + // XXX However, a different approach appears to be needed + //if (sd->flags & SCULPT_SYMMETRY_FEATHER) { + // float frac = 1.0f/max_overlap_count(sd); + // float reduce = (feather-frac)/(1-frac); + + // printf("feather: %f frac: %f reduce: %f\n", feather, frac, reduce); + + // if (frac < 1) + // mul_v3_fl(cache->grab_delta_symmetry, reduce); + //} + + unit_m4(cache->symm_rot_mat); + unit_m4(cache->symm_rot_mat_inv); + rotate_m4(cache->symm_rot_mat, axis, angle); + rotate_m4(cache->symm_rot_mat_inv, axis, -angle); + + mul_m4_v3(cache->symm_rot_mat, cache->location); + mul_m4_v3(cache->symm_rot_mat, cache->grab_delta_symmetry); +} + +static void do_radial_symmetry(Sculpt *sd, SculptSession *ss, Brush *brush, const char symm, const int axis, const float feather) +{ + int i; + + for(i = 1; i < sd->radial_symm[axis-'X']; ++i) { + const float angle = 2*M_PI*i/sd->radial_symm[axis-'X']; + ss->cache->radial_symmetry_pass= i; + calc_brushdata_symm(sd, ss->cache, symm, axis, angle, feather); + do_brush_action(sd, ss, brush); + } } static void do_symmetrical_brush_actions(Sculpt *sd, SculptSession *ss) { + Brush *brush = paint_brush(&sd->paint); StrokeCache *cache = ss->cache; const char symm = sd->flags & 7; int i; - copy_v3_v3(cache->location, cache->true_location); - copy_v3_v3(cache->grab_delta_symmetry, cache->grab_delta); - cache->symmetry = 0; - cache->bstrength = brush_strength(sd, cache); - do_brush_action(sd, ss, cache); + float feather = calc_symmetry_feather(sd, ss->cache); + float accum = integrate_overlap(brush); + float overlap = (brush->flag & BRUSH_SPACE_ATTEN && brush->flag & BRUSH_SPACE && !(brush->flag & BRUSH_ANCHORED)) && (brush->spacing < 100) ? 1.0f/accum : 1; // spacing is integer percentage of radius, divide by 50 to get normalized diameter - for(i = 1; i <= symm; ++i) { - if(symm & i && (symm != 5 || i != 3) && (symm != 6 || (i != 3 && i != 5))) { - calc_brushdata_symm(cache, i); - do_brush_action(sd, ss, cache); + ss->cache->autosmooth_overlap = overlap; + + cache->bstrength= brush_strength(sd, cache, feather, overlap); + + cache->symmetry= symm; + + /* symm is a bit combination of XYZ - 1 is mirror X; 2 is Y; 3 is XY; 4 is Z; 5 is XZ; 6 is YZ; 7 is XYZ */ + for(i = 0; i <= symm; ++i) { + if(i == 0 || (symm & i && (symm != 5 || i != 3) && (symm != 6 || (i != 3 && i != 5)))) { + cache->mirror_symmetry_pass= i; + cache->radial_symmetry_pass= 0; + + calc_brushdata_symm(sd, cache, i, 0, 0, feather); + do_brush_action(sd, ss, brush); + + do_radial_symmetry(sd, ss, brush, i, 'X', feather); + do_radial_symmetry(sd, ss, brush, i, 'Y', feather); + do_radial_symmetry(sd, ss, brush, i, 'Z', feather); } } - cache->first_time = 0; + sculpt_combine_proxies(sd, ss); + + cache->first_time= 0; } static void sculpt_update_tex(Sculpt *sd, SculptSession *ss) @@ -1585,37 +2619,13 @@ static void sculpt_update_tex(Sculpt *sd, SculptSession *ss) } /* Need to allocate a bigger buffer for bigger brush size */ - ss->texcache_side = brush->size * 2; + ss->texcache_side = 2*sculpt_get_brush_size(brush); if(!ss->texcache || ss->texcache_side > ss->texcache_actual) { - ss->texcache = brush_gen_texture_cache(brush, brush->size); + ss->texcache = brush_gen_texture_cache(brush, sculpt_get_brush_size(brush)); ss->texcache_actual = ss->texcache_side; } } -/* Sculpt mode handles multires differently from regular meshes, but only if - it's the last modifier on the stack and it is not on the first level */ -struct MultiresModifierData *sculpt_multires_active(Scene *scene, Object *ob) -{ - ModifierData *md, *nmd; - - for(md= modifiers_getVirtualModifierList(ob); md; md= md->next) { - if(md->type == eModifierType_Multires) { - MultiresModifierData *mmd= (MultiresModifierData*)md; - - /* Check if any of the modifiers after multires are active - * if not it can use the multires struct */ - for(nmd= md->next; nmd; nmd= nmd->next) - if(modifier_isEnabled(scene, nmd, eModifierMode_Realtime)) - break; - - if(!nmd && mmd->sculptlvl > 0) - return mmd; - } - } - - return NULL; -} - void sculpt_update_mesh_elements(Scene *scene, Object *ob, int need_fmap) { DerivedMesh *dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH); @@ -1682,16 +2692,32 @@ static char *sculpt_tool_name(Sculpt *sd) return "Draw Brush"; break; case SCULPT_TOOL_SMOOTH: return "Smooth Brush"; break; + case SCULPT_TOOL_CREASE: + return "Crease Brush"; break; + case SCULPT_TOOL_BLOB: + return "Blob Brush"; break; case SCULPT_TOOL_PINCH: return "Pinch Brush"; break; case SCULPT_TOOL_INFLATE: return "Inflate Brush"; break; case SCULPT_TOOL_GRAB: return "Grab Brush"; break; + case SCULPT_TOOL_NUDGE: + return "Nudge Brush"; break; + case SCULPT_TOOL_THUMB: + return "Thumb Brush"; break; case SCULPT_TOOL_LAYER: return "Layer Brush"; break; case SCULPT_TOOL_FLATTEN: - return "Flatten Brush"; break; + return "Flatten Brush"; break; + case SCULPT_TOOL_CLAY: + return "Clay Brush"; break; + case SCULPT_TOOL_CLAY_TUBES: + return "Clay Tubes Brush"; break; + case SCULPT_TOOL_FILL: + return "Fill Brush"; break; + case SCULPT_TOOL_SCRAPE: + return "Scrape Brush"; break; default: return "Sculpting"; break; } @@ -1769,20 +2795,119 @@ static void sculpt_cache_free(StrokeCache *cache) MEM_freeN(cache); } +int sculpt_get_brush_size(Brush *brush) +{ + return (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE) ? U.sculpt_paint_unified_size : brush->size; +} + +void sculpt_set_brush_size(Brush *brush, int size) +{ + if (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE) + U.sculpt_paint_unified_size = size; + else + brush->size = size; +} + +int sculpt_get_lock_brush_size(Brush *brush) +{ + return (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE) ? (U.sculpt_paint_settings & SCULPT_PAINT_UNIFIED_LOCK_BRUSH_SIZE) : (brush->flag & BRUSH_LOCK_SIZE); +} + +float sculpt_get_brush_unprojected_radius(Brush *brush) +{ + return (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE) ? U.sculpt_paint_unified_unprojected_radius : brush->unprojected_radius; +} + +void sculpt_set_brush_unprojected_radius(Brush *brush, float unprojected_radius) +{ + if (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE) + U.sculpt_paint_unified_unprojected_radius = unprojected_radius; + else + brush->unprojected_radius = unprojected_radius; +} + +float sculpt_get_brush_alpha(Brush *brush) +{ + return (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_ALPHA) ? U.sculpt_paint_unified_alpha : brush->alpha; +} + +void sculpt_set_brush_alpha(Brush *brush, float alpha) +{ + if (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_ALPHA) + U.sculpt_paint_unified_alpha = alpha; + else + brush->alpha = alpha; +} + /* Initialize the stroke cache invariants from operator properties */ -static void sculpt_update_cache_invariants(Sculpt *sd, SculptSession *ss, bContext *C, wmOperator *op) +static void sculpt_update_cache_invariants(bContext* C, Sculpt *sd, SculptSession *ss, wmOperator *op, wmEvent *event) { StrokeCache *cache = MEM_callocN(sizeof(StrokeCache), "stroke cache"); Brush *brush = paint_brush(&sd->paint); ViewContext *vc = paint_stroke_view_context(op->customdata); + Object *ob= CTX_data_active_object(C); + ModifierData *md; int i; + int mode; ss->cache = cache; - RNA_float_get_array(op->ptr, "scale", cache->scale); - cache->flag = RNA_int_get(op->ptr, "flag"); - RNA_float_get_array(op->ptr, "clip_tolerance", cache->clip_tolerance); - RNA_float_get_array(op->ptr, "initial_mouse", cache->initial_mouse); + /* Set scaling adjustment */ + ss->cache->scale[0] = 1.0f / ob->size[0]; + ss->cache->scale[1] = 1.0f / ob->size[1]; + ss->cache->scale[2] = 1.0f / ob->size[2]; + + ss->cache->plane_trim_squared = brush->plane_trim * brush->plane_trim; + + /* Initialize mirror modifier clipping */ + + ss->cache->flag = 0; + + for(md= ob->modifiers.first; md; md= md->next) { + if(md->type==eModifierType_Mirror && (md->mode & eModifierMode_Realtime)) { + const MirrorModifierData *mmd = (MirrorModifierData*) md; + + /* Mark each axis that needs clipping along with its tolerance */ + if(mmd->flag & MOD_MIR_CLIPPING) { + ss->cache->flag |= CLIP_X << mmd->axis; + if(mmd->tolerance > ss->cache->clip_tolerance[mmd->axis]) + ss->cache->clip_tolerance[mmd->axis] = mmd->tolerance; + } + } + } + + /* Initial mouse location */ + if (event) { + ss->cache->initial_mouse[0] = event->x; + ss->cache->initial_mouse[1] = event->y; + } + else { + ss->cache->initial_mouse[0] = 0; + ss->cache->initial_mouse[1] = 0; + } + + mode = RNA_int_get(op->ptr, "mode"); + cache->invert = mode == WM_BRUSHSTROKE_INVERT; + cache->alt_smooth = mode == WM_BRUSHSTROKE_SMOOTH; + + /* Alt-Smooth */ + if (ss->cache->alt_smooth) { + Paint *p= &sd->paint; + Brush *br; + int i; + + BLI_strncpy(cache->saved_active_brush_name, brush->id.name+2, sizeof(cache->saved_active_brush_name)); + + for(i = 0; i < p->brush_count; ++i) { + br = p->brushes[i]; + + if (strcmp(br->id.name+2, "Smooth")==0) { + paint_brush_set(p, br); + brush = br; + break; + } + } + } copy_v2_v2(cache->mouse, cache->initial_mouse); copy_v2_v2(cache->tex_mouse, cache->initial_mouse); @@ -1790,11 +2915,13 @@ static void sculpt_update_cache_invariants(Sculpt *sd, SculptSession *ss, bConte /* Truly temporary data that isn't stored in properties */ cache->vc = vc; + cache->brush = brush; cache->mats = MEM_callocN(sizeof(bglMats), "sculpt bglMats"); view3d_get_transformation(vc->ar, vc->rv3d, vc->obact, cache->mats); + viewvector(cache->vc->rv3d, cache->vc->rv3d->twmat[3], cache->true_view_normal); /* Initialize layer brush displacements and persistent coords */ if(brush->sculpt_tool == SCULPT_TOOL_LAYER) { /* not supported yet for multires */ @@ -1820,69 +2947,143 @@ static void sculpt_update_cache_invariants(Sculpt *sd, SculptSession *ss, bConte cache->original = 1; } - if(ELEM3(brush->sculpt_tool, SCULPT_TOOL_DRAW, SCULPT_TOOL_LAYER, SCULPT_TOOL_INFLATE)) + if(ELEM7(brush->sculpt_tool, SCULPT_TOOL_DRAW, SCULPT_TOOL_CREASE, SCULPT_TOOL_BLOB, SCULPT_TOOL_LAYER, SCULPT_TOOL_INFLATE, SCULPT_TOOL_CLAY, SCULPT_TOOL_CLAY_TUBES)) if(!(brush->flag & BRUSH_ACCUMULATE)) cache->original = 1; - cache->rotation = 0; - cache->first_time = 1; + cache->special_rotation = (brush->flag & BRUSH_RAKE) ? sd->last_angle : 0; + //cache->last_rake[0] = sd->last_x; + //cache->last_rake[1] = sd->last_y; + + cache->first_time= 1; + + cache->vertex_rotation= 0; } /* Initialize the stroke cache variants from operator properties */ -static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, struct PaintStroke *stroke, PointerRNA *ptr) +static void sculpt_update_cache_variants(bContext *C, Sculpt *sd, SculptSession *ss, struct PaintStroke *stroke, PointerRNA *ptr) { StrokeCache *cache = ss->cache; Brush *brush = paint_brush(&sd->paint); - + int dx, dy; - if(!(brush->flag & BRUSH_ANCHORED) || cache->first_time) + //RNA_float_get_array(ptr, "location", cache->traced_location); + + if (cache->first_time || + !((brush->flag & BRUSH_ANCHORED)|| + (brush->sculpt_tool == SCULPT_TOOL_SNAKE_HOOK)|| + (brush->sculpt_tool == SCULPT_TOOL_ROTATE)) + ) + { RNA_float_get_array(ptr, "location", cache->true_location); - cache->flip = RNA_boolean_get(ptr, "flip"); + } + + cache->pen_flip = RNA_boolean_get(ptr, "pen_flip"); RNA_float_get_array(ptr, "mouse", cache->mouse); + cache->pressure = RNA_float_get(ptr, "pressure"); - + /* Truly temporary data that isn't stored in properties */ + sd->draw_pressure= 1; + sd->pressure_value= cache->pressure; + cache->previous_pixel_radius = cache->pixel_radius; - cache->pixel_radius = brush->size; + cache->pixel_radius = sculpt_get_brush_size(brush); - if(cache->first_time) - cache->initial_radius = unproject_brush_radius(ss->ob, cache->vc, cache->true_location, brush->size); + if(cache->first_time) { + if (!sculpt_get_lock_brush_size(brush)) { + cache->initial_radius= unproject_brush_radius(ss->ob, cache->vc, cache->true_location, sculpt_get_brush_size(brush)); + sculpt_set_brush_unprojected_radius(brush, cache->initial_radius); + } + else { + cache->initial_radius= sculpt_get_brush_unprojected_radius(brush); + } - if(brush->flag & BRUSH_SIZE_PRESSURE && brush->sculpt_tool != SCULPT_TOOL_GRAB) { + if (ELEM(brush->sculpt_tool, SCULPT_TOOL_GRAB, SCULPT_TOOL_SNAKE_HOOK)) + cache->initial_radius *= 2.0f; + } + + if(brush->flag & BRUSH_SIZE_PRESSURE) { cache->pixel_radius *= cache->pressure; - cache->radius = cache->initial_radius * cache->pressure; + cache->radius= cache->initial_radius * cache->pressure; } else - cache->radius = cache->initial_radius; + cache->radius= cache->initial_radius; - if(!(brush->flag & BRUSH_ANCHORED)) + cache->radius_squared = cache->radius*cache->radius; + + if(!(brush->flag & BRUSH_ANCHORED || ELEM4(brush->sculpt_tool, SCULPT_TOOL_GRAB, SCULPT_TOOL_SNAKE_HOOK, SCULPT_TOOL_THUMB, SCULPT_TOOL_ROTATE))) { copy_v2_v2(cache->tex_mouse, cache->mouse); + if ( (brush->mtex.brush_map_mode == MTEX_MAP_MODE_FIXED) && + (brush->flag & BRUSH_RANDOM_ROTATION) && + !(brush->flag & BRUSH_RAKE)) + { + cache->special_rotation = 2*M_PI*BLI_frand(); + } + } + if(brush->flag & BRUSH_ANCHORED) { + int hit = 0; + dx = cache->mouse[0] - cache->initial_mouse[0]; dy = cache->mouse[1] - cache->initial_mouse[1]; - cache->pixel_radius = sqrt(dx*dx + dy*dy); - cache->radius = unproject_brush_radius(ss->ob, paint_stroke_view_context(stroke), - cache->true_location, cache->pixel_radius); - cache->rotation = atan2(dy, dx); + + sd->anchored_size = cache->pixel_radius = sqrt(dx*dx + dy*dy); + + cache->special_rotation = atan2(dx, dy) + M_PI; + + if (brush->flag & BRUSH_EDGE_TO_EDGE) { + float d[3]; + float halfway[3]; + float out[3]; + + d[0] = dx; + d[1] = dy; + d[2] = 0; + + mul_v3_v3fl(halfway, d, 0.5f); + add_v3_v3(halfway, cache->initial_mouse); + + if (sculpt_stroke_get_location(C, stroke, out, halfway)) { + copy_v3_v3(sd->anchored_location, out); + copy_v3_v3(sd->anchored_initial_mouse, halfway); + copy_v2_v2(cache->tex_mouse, halfway); + copy_v3_v3(cache->true_location, sd->anchored_location); + sd->anchored_size /= 2.0f; + cache->pixel_radius /= 2.0f; + hit = 1; + } + } + + if (!hit) + copy_v2_v2(sd->anchored_initial_mouse, cache->initial_mouse); + + cache->radius= unproject_brush_radius(ss->ob, paint_stroke_view_context(stroke), cache->true_location, cache->pixel_radius); + cache->radius_squared = cache->radius*cache->radius; + + copy_v3_v3(sd->anchored_location, cache->true_location); + + sd->draw_anchored = 1; } else if(brush->flag & BRUSH_RAKE) { - int update; + const float u = 0.5f; + const float v = 1 - u; + const float r = 20; - dx = cache->last_rake[0] - cache->mouse[0]; - dy = cache->last_rake[1] - cache->mouse[1]; + const float dx = cache->last_rake[0] - cache->mouse[0]; + const float dy = cache->last_rake[1] - cache->mouse[1]; - update = dx*dx + dy*dy > 100; + if (cache->first_time) { + copy_v3_v3(cache->last_rake, cache->mouse); + } + else if (dx*dx + dy*dy >= r*r) { + cache->special_rotation = atan2(dx, dy); - /* To prevent jitter, only update the angle if the mouse has moved over 10 pixels */ - if(update && !cache->first_time) - cache->rotation = M_PI_2 + atan2(dy, dx); - - if(update || cache->first_time) { - cache->last_rake[0] = cache->mouse[0]; - cache->last_rake[1] = cache->mouse[1]; + cache->last_rake[0] = u*cache->last_rake[0] + v*cache->mouse[0]; + cache->last_rake[1] = u*cache->last_rake[1] + v*cache->mouse[1]; } } @@ -1900,16 +3101,123 @@ static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, struct P /* compute delta to move verts by */ if(!cache->first_time) { - sub_v3_v3v3(cache->grab_delta, grab_location, cache->old_grab_location); + float delta[3]; + sub_v3_v3v3(delta, grab_location, cache->old_grab_location); invert_m4_m4(imat, ss->ob->obmat); - mul_mat3_m4_v3(imat, cache->grab_delta); + mul_mat3_m4_v3(imat, delta); + add_v3_v3(cache->grab_delta, delta); + } + else { + zero_v3(cache->grab_delta); } copy_v3_v3(cache->old_grab_location, grab_location); /* location stays the same for finding vertices in brush radius */ copy_v3_v3(cache->true_location, cache->orig_grab_location); + + sd->draw_anchored = 1; + copy_v3_v3(sd->anchored_location, cache->true_location); + copy_v3_v3(sd->anchored_initial_mouse, cache->initial_mouse); + sd->anchored_size = cache->pixel_radius; } + /* Find the nudge/clay tubes delta */ + else if(brush->sculpt_tool == SCULPT_TOOL_NUDGE || brush->sculpt_tool == SCULPT_TOOL_CLAY_TUBES) { + float grab_location[3], imat[4][4]; + + if(cache->first_time) + copy_v3_v3(cache->orig_grab_location, cache->true_location); + + /* compute 3d coordinate at same z from original location + mouse */ + initgrabz(cache->vc->rv3d, cache->orig_grab_location[0], + cache->orig_grab_location[1], cache->orig_grab_location[2]); + window_to_3d_delta(cache->vc->ar, grab_location, cache->mouse[0], cache->mouse[1]); + + /* compute delta to move verts by */ + if (!cache->first_time) { + sub_v3_v3v3(cache->grab_delta, grab_location, cache->old_grab_location); + invert_m4_m4(imat, ss->ob->obmat); + mul_mat3_m4_v3(imat, cache->grab_delta); + } + else { + zero_v3(cache->grab_delta); + } + + copy_v3_v3(cache->old_grab_location, grab_location); + } + /* Find the snake hook delta */ + else if(brush->sculpt_tool == SCULPT_TOOL_SNAKE_HOOK) { + float grab_location[3], imat[4][4]; + + if(cache->first_time) + copy_v3_v3(cache->orig_grab_location, cache->true_location); + else + add_v3_v3(cache->true_location, cache->grab_delta); + + /* compute 3d coordinate at same z from original location + mouse */ + initgrabz(cache->vc->rv3d, cache->orig_grab_location[0], + cache->orig_grab_location[1], cache->orig_grab_location[2]); + window_to_3d_delta(cache->vc->ar, grab_location, cache->mouse[0], cache->mouse[1]); + + /* compute delta to move verts by */ + if (!cache->first_time) { + sub_v3_v3v3(cache->grab_delta, grab_location, cache->old_grab_location); + invert_m4_m4(imat, ss->ob->obmat); + mul_mat3_m4_v3(imat, cache->grab_delta); + } + else { + zero_v3(cache->grab_delta); + } + + copy_v3_v3(cache->old_grab_location, grab_location); + } + /* Find the thumb delta */ + else if(brush->sculpt_tool == SCULPT_TOOL_THUMB) { + float grab_location[3], imat[4][4]; + + if(cache->first_time) + copy_v3_v3(cache->orig_grab_location, cache->true_location); + + /* compute 3d coordinate at same z from original location + mouse */ + initgrabz(cache->vc->rv3d, cache->orig_grab_location[0], + cache->orig_grab_location[1], cache->orig_grab_location[2]); + window_to_3d_delta(cache->vc->ar, grab_location, cache->mouse[0], cache->mouse[1]); + + /* compute delta to move verts by */ + if (!cache->first_time) { + float delta[3]; + sub_v3_v3v3(delta, grab_location, cache->old_grab_location); + invert_m4_m4(imat, ss->ob->obmat); + mul_mat3_m4_v3(imat, delta); + add_v3_v3(cache->grab_delta, delta); + } + else { + zero_v3(cache->grab_delta); + } + + copy_v3_v3(cache->old_grab_location, grab_location); + + /* location stays the same for finding vertices in brush radius */ + copy_v3_v3(cache->true_location, cache->orig_grab_location); + + sd->draw_anchored = 1; + copy_v3_v3(sd->anchored_location, cache->orig_grab_location); + copy_v3_v3(sd->anchored_initial_mouse, cache->initial_mouse); + sd->anchored_size = cache->pixel_radius; + } + else if(brush->sculpt_tool == SCULPT_TOOL_ROTATE) { + dx = cache->mouse[0] - cache->initial_mouse[0]; + dy = cache->mouse[1] - cache->initial_mouse[1]; + + cache->vertex_rotation = -atan2(dx, dy) / 4.0f; + + sd->draw_anchored = 1; + copy_v2_v2(sd->anchored_initial_mouse, cache->initial_mouse); + copy_v3_v3(sd->anchored_location, cache->true_location); + sd->anchored_size = cache->pixel_radius; + } + + sd->special_rotation = cache->special_rotation; } static void sculpt_stroke_modifiers_check(bContext *C, SculptSession *ss) @@ -1930,19 +3238,23 @@ typedef struct { int original; } SculptRaycastData; -void sculpt_raycast_cb(PBVHNode *node, void *data_v) +void sculpt_raycast_cb(PBVHNode *node, void *data_v, float* tmin) { - SculptRaycastData *srd = data_v; - float (*origco)[3]= NULL; + if (BLI_pbvh_node_get_tmin(node) < *tmin) { + SculptRaycastData *srd = data_v; + float (*origco)[3]= NULL; - if(srd->original && srd->ss->cache) { - /* intersect with coordinates from before we started stroke */ - SculptUndoNode *unode= sculpt_undo_get_node(srd->ss, node); - origco= (unode)? unode->co: NULL; + if(srd->original && srd->ss->cache) { + /* intersect with coordinates from before we started stroke */ + SculptUndoNode *unode= sculpt_undo_get_node(node); + origco= (unode)? unode->co: NULL; + } + + if (BLI_pbvh_node_raycast(srd->ss->pbvh, node, origco, srd->ray_start, srd->ray_normal, &srd->dist)) { + srd->hit = 1; + *tmin = srd->dist; + } } - - srd->hit |= BLI_pbvh_node_raycast(srd->ss->pbvh, node, origco, - srd->ray_start, srd->ray_normal, &srd->dist); } /* Do a raycast in the tree to find the 3d brush location @@ -1956,10 +3268,12 @@ int sculpt_stroke_get_location(bContext *C, struct PaintStroke *stroke, float ou StrokeCache *cache= ss->cache; float ray_start[3], ray_end[3], ray_normal[3], dist; float obimat[4][4]; - float mval[2] = {mouse[0] - vc->ar->winrct.xmin, - mouse[1] - vc->ar->winrct.ymin}; + float mval[2]; SculptRaycastData srd; + mval[0] = mouse[0] - vc->ar->winrct.xmin; + mval[1] = mouse[1] - vc->ar->winrct.ymin; + sculpt_stroke_modifiers_check(C, ss); viewline(vc->ar, vc->v3d, mval, ray_start, ray_end); @@ -1987,43 +3301,6 @@ int sculpt_stroke_get_location(bContext *C, struct PaintStroke *stroke, float ou return srd.hit; } -/* Initialize stroke operator properties */ -static void sculpt_brush_stroke_init_properties(bContext *C, wmOperator *op, wmEvent *event, SculptSession *ss) -{ - Object *ob= CTX_data_active_object(C); - ModifierData *md; - float scale[3], clip_tolerance[3] = {0,0,0}; - float mouse[2]; - int flag = 0; - - /* Set scaling adjustment */ - scale[0] = 1.0f / ob->size[0]; - scale[1] = 1.0f / ob->size[1]; - scale[2] = 1.0f / ob->size[2]; - RNA_float_set_array(op->ptr, "scale", scale); - - /* Initialize mirror modifier clipping */ - for(md= ob->modifiers.first; md; md= md->next) { - if(md->type==eModifierType_Mirror && (md->mode & eModifierMode_Realtime)) { - const MirrorModifierData *mmd = (MirrorModifierData*) md; - - /* Mark each axis that needs clipping along with its tolerance */ - if(mmd->flag & MOD_MIR_CLIPPING) { - flag |= CLIP_X << mmd->axis; - if(mmd->tolerance > clip_tolerance[mmd->axis]) - clip_tolerance[mmd->axis] = mmd->tolerance; - } - } - } - RNA_int_set(op->ptr, "flag", flag); - RNA_float_set_array(op->ptr, "clip_tolerance", clip_tolerance); - - /* Initial mouse location */ - mouse[0] = event->x; - mouse[1] = event->y; - RNA_float_set_array(op->ptr, "initial_mouse", mouse); -} - static int sculpt_brush_stroke_init(bContext *C, ReportList *reports) { Scene *scene= CTX_data_scene(C); @@ -2051,22 +3328,26 @@ static int sculpt_brush_stroke_init(bContext *C, ReportList *reports) static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss) { - StrokeCache *cache = ss->cache; Brush *brush = paint_brush(&sd->paint); - int i; /* Restore the mesh before continuing with anchored stroke */ - if(brush->flag & BRUSH_ANCHORED) { + if((brush->flag & BRUSH_ANCHORED) || + (brush->sculpt_tool == SCULPT_TOOL_GRAB && (brush->flag & BRUSH_SIZE_PRESSURE)) || + (brush->flag & BRUSH_RESTORE_MESH)) + { + StrokeCache *cache = ss->cache; + int i; + PBVHNode **nodes; int n, totnode; BLI_pbvh_search_gather(ss->pbvh, NULL, NULL, &nodes, &totnode); - //#pragma omp parallel for private(n) schedule(static) + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) for(n=0; nco[vd.i]); if(vd.no) VECCOPY(vd.no, unode->no[vd.i]) else normal_short_to_float_v3(vd.fno, unode->no[vd.i]); + + if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; } BLI_pbvh_vertex_iter_end; + + BLI_pbvh_node_mark_update(nodes[n]); } } @@ -2096,7 +3381,6 @@ static void sculpt_flush_update(bContext *C) SculptSession *ss = ob->sculpt; ARegion *ar = CTX_wm_region(C); MultiresModifierData *mmd = ss->multires; - int redraw = 0; if(mmd) multires_mark_as_modified(ob); @@ -2109,14 +3393,22 @@ static void sculpt_flush_update(bContext *C) rcti r; BLI_pbvh_update(ss->pbvh, PBVH_UpdateBB, NULL); - redraw = sculpt_get_redraw_rect(ar, CTX_wm_region_view3d(C), ob, &r); - if(redraw) { + if (sculpt_get_redraw_rect(ar, CTX_wm_region_view3d(C), ob, &r)) { + //rcti tmp; + r.xmin += ar->winrct.xmin + 1; r.xmax += ar->winrct.xmin - 1; r.ymin += ar->winrct.ymin + 1; r.ymax += ar->winrct.ymin - 1; - + + //tmp = r; + + //if (!BLI_rcti_is_empty(&ss->previous_r)) + // BLI_union_rcti(&r, &ss->previous_r); + + //ss->previous_r= tmp; + ss->partial_redraw = 1; ED_region_tag_redraw_partial(ar, &r); } @@ -2127,9 +3419,12 @@ static void sculpt_flush_update(bContext *C) or over the background (0) */ static int over_mesh(bContext *C, struct wmOperator *op, float x, float y) { - float mouse[2] = {x, y}, co[3]; - - return (int)sculpt_stroke_get_location(C, op->customdata, co, mouse); + float mouse[2], co[3]; + + mouse[0] = x; + mouse[1] = y; + + return sculpt_stroke_get_location(C, op->customdata, co, mouse); } static int sculpt_stroke_test_start(bContext *C, struct wmOperator *op, @@ -2143,11 +3438,22 @@ static int sculpt_stroke_test_start(bContext *C, struct wmOperator *op, ED_view3d_init_mats_rv3d(ob, CTX_wm_region_view3d(C)); - sculpt_brush_stroke_init_properties(C, op, event, ss); + sculpt_update_cache_invariants(C, sd, ss, op, event); - sculpt_update_cache_invariants(sd, ss, C, op); + sculpt_undo_push_begin(sculpt_tool_name(sd)); - sculpt_undo_push_begin(ss, sculpt_tool_name(sd)); +#ifdef _OPENMP + /* If using OpenMP then create a number of threads two times the + number of processor cores. + Justification: Empirically I've found that two threads per + processor gives higher throughput. */ + if (sd->flags & SCULPT_USE_OPENMP) { + int num_procs; + + num_procs = omp_get_num_procs(); + omp_set_num_threads(2*num_procs); + } +#endif return 1; } @@ -2161,7 +3467,7 @@ static void sculpt_stroke_update_step(bContext *C, struct PaintStroke *stroke, P SculptSession *ss = CTX_data_active_object(C)->sculpt; sculpt_stroke_modifiers_check(C, ss); - sculpt_update_cache_variants(sd, ss, stroke, itemptr); + sculpt_update_cache_variants(C, sd, ss, stroke, itemptr); sculpt_restore_mesh(sd, ss); do_symmetrical_brush_actions(sd, ss); @@ -2169,19 +3475,43 @@ static void sculpt_stroke_update_step(bContext *C, struct PaintStroke *stroke, P sculpt_flush_update(C); } -static void sculpt_stroke_done(bContext *C, struct PaintStroke *stroke) +static void sculpt_stroke_done(bContext *C, struct PaintStroke *unused) { Object *ob= CTX_data_active_object(C); SculptSession *ss = ob->sculpt; + Sculpt *sd = CTX_data_tool_settings(C)->sculpt; + + (void)unused; + + // reset values used to draw brush after completing the stroke + sd->draw_anchored= 0; + sd->draw_pressure= 0; + sd->special_rotation= 0; /* Finished */ if(ss->cache) { sculpt_stroke_modifiers_check(C, ss); + /* Alt-Smooth */ + if (ss->cache->alt_smooth) { + Paint *p= &sd->paint; + Brush *br; + int i; + + for(i = 0; i < p->brush_count; ++i) { + br = p->brushes[i]; + + if (strcmp(br->id.name+2, ss->cache->saved_active_brush_name)==0) { + paint_brush_set(p, br); + break; + } + } + } + sculpt_cache_free(ss->cache); ss->cache = NULL; - sculpt_undo_push_end(ss); + sculpt_undo_push_end(); BLI_pbvh_update(ss->pbvh, PBVH_UpdateOriginalBB, NULL); @@ -2218,6 +3548,7 @@ static int sculpt_brush_stroke_invoke(bContext *C, wmOperator *op, wmEvent *even /* For tablet rotation */ ignore_background_click = RNA_boolean_get(op->ptr, "ignore_background_click"); + if(ignore_background_click && !over_mesh(C, op, event->x, event->y)) { paint_stroke_free(stroke); return OPERATOR_PASS_THROUGH; @@ -2242,7 +3573,7 @@ static int sculpt_brush_stroke_exec(bContext *C, wmOperator *op) op->customdata = paint_stroke_new(C, sculpt_stroke_get_location, sculpt_stroke_test_start, sculpt_stroke_update_step, sculpt_stroke_done); - sculpt_update_cache_invariants(sd, ss, C, op); + sculpt_update_cache_invariants(C, sd, ss, op, NULL); paint_stroke_exec(C, op); @@ -2254,7 +3585,12 @@ static int sculpt_brush_stroke_exec(bContext *C, wmOperator *op) static void SCULPT_OT_brush_stroke(wmOperatorType *ot) { - ot->flag |= OPTYPE_REGISTER; + static EnumPropertyItem stroke_mode_items[] = { + { WM_BRUSHSTROKE_NORMAL, "NORMAL", 0, "Normal", "Apply brush normally" }, + { WM_BRUSHSTROKE_INVERT, "INVERT", 0, "Invert", "Invert action of brush for duration of stroke" }, + { WM_BRUSHSTROKE_SMOOTH, "SMOOTH", 0, "Smooth", "Switch brush to smooth mode for duration of stroke" }, + { 0 } + }; /* identifiers */ ot->name= "Sculpt Mode"; @@ -2265,36 +3601,32 @@ static void SCULPT_OT_brush_stroke(wmOperatorType *ot) ot->modal= paint_stroke_modal; ot->exec= sculpt_brush_stroke_exec; ot->poll= sculpt_poll; - + /* flags (sculpt does own undo? (ton) */ - ot->flag= OPTYPE_REGISTER|OPTYPE_BLOCKING; + ot->flag= OPTYPE_BLOCKING; /* properties */ - RNA_def_collection_runtime(ot->srna, "stroke", &RNA_OperatorStrokeElement, "Stroke", ""); - /* If the object has a scaling factor, brushes also need to be scaled - to work as expected. */ - RNA_def_float_vector(ot->srna, "scale", 3, NULL, 0.0f, FLT_MAX, "Scale", "", 0.0f, 1000.0f); + RNA_def_collection_runtime(ot->srna, "stroke", &RNA_OperatorStrokeElement, + "Stroke", ""); - RNA_def_int(ot->srna, "flag", 0, 0, INT_MAX, "flag", "", 0, INT_MAX); - - /* For mirror modifiers */ - RNA_def_float_vector(ot->srna, "clip_tolerance", 3, NULL, 0.0f, FLT_MAX, "clip_tolerance", "", 0.0f, 1000.0f); - - /* The initial 2D location of the mouse */ - RNA_def_float_vector(ot->srna, "initial_mouse", 2, NULL, INT_MIN, INT_MAX, "initial_mouse", "", INT_MIN, INT_MAX); + RNA_def_enum(ot->srna, "mode", stroke_mode_items, WM_BRUSHSTROKE_NORMAL, + "Sculpt Stroke Mode", + "Action taken when a sculpt stroke is made"); RNA_def_boolean(ot->srna, "ignore_background_click", 0, "Ignore Background Click", - "Clicks on the background don't start the stroke"); + "Clicks on the background do not start the stroke"); } /**** Reset the copy of the mesh that is being sculpted on (currently just for the layer brush) ****/ -static int sculpt_set_persistent_base(bContext *C, wmOperator *op) +static int sculpt_set_persistent_base(bContext *C, wmOperator *unused) { SculptSession *ss = CTX_data_active_object(C)->sculpt; + (void)unused; + if(ss) { if(ss->layer_co) MEM_freeN(ss->layer_co); @@ -2314,7 +3646,7 @@ static void SCULPT_OT_set_persistent_base(wmOperatorType *ot) ot->exec= sculpt_set_persistent_base; ot->poll= sculpt_mode_poll; - ot->flag= OPTYPE_REGISTER; + ot->flag= 0;//OPTYPE_REGISTER; } /**** Toggle operator for turning sculpt mode on or off ****/ @@ -2322,18 +3654,21 @@ static void SCULPT_OT_set_persistent_base(wmOperatorType *ot) static void sculpt_init_session(Scene *scene, Object *ob) { ob->sculpt = MEM_callocN(sizeof(SculptSession), "sculpt session"); + ob->sculpt->ob = ob; sculpt_update_mesh_elements(scene, ob, 0); } -static int sculpt_toggle_mode(bContext *C, wmOperator *op) +static int sculpt_toggle_mode(bContext *C, wmOperator *unused) { Scene *scene = CTX_data_scene(C); ToolSettings *ts = CTX_data_tool_settings(C); Object *ob = CTX_data_active_object(C); - MultiresModifierData *mmd = sculpt_multires_active(scene, ob); + MultiresModifierData *mmd= sculpt_multires_active(scene, ob); int flush_recalc= 0; + (void)unused; + /* multires in sculpt mode could have different from object mode subdivision level */ flush_recalc |= mmd && mmd->sculptlvl != mmd->lvl; /* if object has got active modifiers, it's dm could be different in sculpt mode */ @@ -2359,9 +3694,13 @@ static int sculpt_toggle_mode(bContext *C, wmOperator *op) DAG_id_flush_update(&ob->id, OB_RECALC_DATA); /* Create persistent sculpt mode data */ - if(!ts->sculpt) + if(!ts->sculpt) { ts->sculpt = MEM_callocN(sizeof(Sculpt), "sculpt mode data"); + /* Turn on X plane mirror symmetry by default */ + ts->sculpt->flags |= SCULPT_SYMM_X; + } + /* Create sculpt mode session data */ if(ob->sculpt) free_sculptsession(ob); @@ -2388,7 +3727,7 @@ static void SCULPT_OT_sculptmode_toggle(wmOperatorType *ot) ot->exec= sculpt_toggle_mode; ot->poll= ED_operator_object_active; - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag= 0; } void ED_operatortypes_sculpt() diff --git a/source/blender/editors/sculpt_paint/sculpt_intern.h b/source/blender/editors/sculpt_paint/sculpt_intern.h index c7c6833b695..a46823a0b28 100644 --- a/source/blender/editors/sculpt_paint/sculpt_intern.h +++ b/source/blender/editors/sculpt_paint/sculpt_intern.h @@ -32,6 +32,9 @@ #include "DNA_listBase.h" #include "DNA_vec_types.h" +#include "DNA_key_types.h" + +#include "BLI_pbvh.h" struct bContext; struct Brush; @@ -65,8 +68,49 @@ void sculpt_stroke_free(struct SculptStroke *); void sculpt_stroke_add_point(struct SculptStroke *, const short x, const short y); void sculpt_stroke_apply(struct Sculpt *sd, struct SculptStroke *); void sculpt_stroke_apply_all(struct Sculpt *sd, struct SculptStroke *); +int sculpt_stroke_get_location(bContext *C, struct PaintStroke *stroke, float out[3], float mouse[2]); /* Partial Mesh Visibility */ void sculptmode_pmv(int mode); +/* Undo */ + +typedef struct SculptUndoNode { + struct SculptUndoNode *next, *prev; + + char idname[MAX_ID_NAME]; /* name instead of pointer*/ + void *node; /* only during push, not valid afterwards! */ + + float (*co)[3]; + short (*no)[3]; + int totvert; + + /* non-multires */ + int maxvert; /* to verify if totvert it still the same */ + int *index; /* to restore into right location */ + + /* multires */ + int maxgrid; /* same for grid */ + int gridsize; /* same for grid */ + int totgrid; /* to restore into right location */ + int *grids; /* to restore into right location */ + + /* layer brush */ + float *layer_disp; + + /* shape keys */ + char *shapeName[32]; /* keep size in sync with keyblock dna */ +} SculptUndoNode; + +SculptUndoNode *sculpt_undo_push_node(SculptSession *ss, PBVHNode *node); +SculptUndoNode *sculpt_undo_get_node(PBVHNode *node); +void sculpt_undo_push_begin(char *name); +void sculpt_undo_push_end(void); + +struct MultiresModifierData *sculpt_multires_active(struct Scene *scene, struct Object *ob); +int sculpt_modifiers_active(Scene *scene, Object *ob); +void sculpt_vertcos_to_key(Object *ob, KeyBlock *kb, float (*vertCos)[3]); + +void brush_jitter_pos(Brush *brush, float *pos, float *jitterpos); + #endif diff --git a/source/blender/editors/sculpt_paint/sculpt_undo.c b/source/blender/editors/sculpt_paint/sculpt_undo.c new file mode 100644 index 00000000000..303a7686a96 --- /dev/null +++ b/source/blender/editors/sculpt_paint/sculpt_undo.c @@ -0,0 +1,302 @@ +/* + * $Id: sculpt.c 29425 2010-06-12 15:05:19Z jwilkins $ + * + * ***** 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) 2006 by Nicholas Bishop + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + * + * Implements the Sculpt Mode tools + * + */ + +#include "BLI_math.h" +#include "BLI_ghash.h" +#include "BLI_threads.h" + +#include "DNA_meshdata_types.h" +#include "DNA_object_types.h" +#include "DNA_scene_types.h" +#include "DNA_mesh_types.h" +#include "DNA_key_types.h" + +#include "BKE_cdderivedmesh.h" +#include "BKE_context.h" +#include "BKE_depsgraph.h" +#include "BKE_modifier.h" +#include "BKE_multires.h" +#include "BKE_paint.h" +#include "BKE_mesh.h" +#include "BKE_key.h" + +#include "WM_api.h" +#include "WM_types.h" + +#include "ED_sculpt.h" +#include "paint_intern.h" +#include "sculpt_intern.h" + +/************************** Undo *************************/ + +static void update_cb(PBVHNode *node, void *unused) +{ + (void)unused; + BLI_pbvh_node_mark_update(node); +} + +static void sculpt_undo_restore(bContext *C, ListBase *lb) +{ + Scene *scene = CTX_data_scene(C); + Object *ob = CTX_data_active_object(C); + DerivedMesh *dm = mesh_get_derived_final(scene, ob, 0); + SculptSession *ss = ob->sculpt; + SculptUndoNode *unode; + MVert *mvert; + MultiresModifierData *mmd; + int *index; + int i, j, update= 0; + + sculpt_update_mesh_elements(scene, ob, 0); + + for(unode=lb->first; unode; unode=unode->next) { + if(!(strcmp(unode->idname, ob->id.name)==0)) + continue; + + if(unode->maxvert) { + char *shapeName= (char*)unode->shapeName; + + /* regular mesh restore */ + if(ss->totvert != unode->maxvert) + continue; + + if (ss->kb && strcmp(ss->kb->name, shapeName)) { + /* shape key has been changed before calling undo operator */ + + Key *key= ob_get_key(ob); + KeyBlock *kb= key_get_named_keyblock(key, shapeName); + + if (kb) { + ob->shapenr= BLI_findindex(&key->block, kb) + 1; + ob->shapeflag|= OB_SHAPE_LOCK; + + sculpt_update_mesh_elements(scene, ob, 0); + WM_event_add_notifier(C, NC_OBJECT|ND_DATA, ob); + } else { + /* key has been removed -- skip this undo node */ + continue; + } + } + + index= unode->index; + mvert= ss->mvert; + + if (ss->kb) { + float (*vertCos)[3]; + vertCos= key_to_vertcos(ob, ss->kb); + + for(i=0; itotvert; i++) + swap_v3_v3(vertCos[index[i]], unode->co[i]); + + /* propagate new coords to keyblock */ + sculpt_vertcos_to_key(ob, ss->kb, vertCos); + + /* pbvh uses it's own mvert array, so coords should be */ + /* propagated to pbvh here */ + BLI_pbvh_apply_vertCos(ss->pbvh, vertCos); + + MEM_freeN(vertCos); + } else { + for(i=0; itotvert; i++) { + swap_v3_v3(mvert[index[i]].co, unode->co[i]); + mvert[index[i]].flag |= ME_VERT_PBVH_UPDATE; + } + } + } + else if(unode->maxgrid && dm->getGridData) { + /* multires restore */ + DMGridData **grids, *grid; + float (*co)[3]; + int gridsize; + + if(dm->getNumGrids(dm) != unode->maxgrid) + continue; + if(dm->getGridSize(dm) != unode->gridsize) + continue; + + grids= dm->getGridData(dm); + gridsize= dm->getGridSize(dm); + + co = unode->co; + for(j=0; jtotgrid; j++) { + grid= grids[unode->grids[j]]; + + for(i=0; ipbvh, NULL, NULL, update_cb, NULL); + BLI_pbvh_update(ss->pbvh, PBVH_UpdateBB|PBVH_UpdateOriginalBB|PBVH_UpdateRedraw, NULL); + + if((mmd=sculpt_multires_active(scene, ob))) + multires_mark_as_modified(ob); + + if(ss->modifiers_active || ((Mesh*)ob->data)->id.us > 1) + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); + } +} + +static void sculpt_undo_free(ListBase *lb) +{ + SculptUndoNode *unode; + + for(unode=lb->first; unode; unode=unode->next) { + if(unode->co) + MEM_freeN(unode->co); + if(unode->no) + MEM_freeN(unode->no); + if(unode->index) + MEM_freeN(unode->index); + if(unode->grids) + MEM_freeN(unode->grids); + if(unode->layer_disp) + MEM_freeN(unode->layer_disp); + } +} + +SculptUndoNode *sculpt_undo_get_node(PBVHNode *node) +{ + ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_MESH); + SculptUndoNode *unode; + + if(!lb) + return NULL; + + for(unode=lb->first; unode; unode=unode->next) + if(unode->node == node) + return unode; + + return NULL; +} + +SculptUndoNode *sculpt_undo_push_node(SculptSession *ss, PBVHNode *node) +{ + ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_MESH); + Object *ob= ss->ob; + SculptUndoNode *unode; + int totvert, allvert, totgrid, maxgrid, gridsize, *grids; + + /* list is manipulated by multiple threads, so we lock */ + BLI_lock_thread(LOCK_CUSTOM1); + + if((unode= sculpt_undo_get_node(node))) { + BLI_unlock_thread(LOCK_CUSTOM1); + return unode; + } + + unode= MEM_callocN(sizeof(SculptUndoNode), "SculptUndoNode"); + strcpy(unode->idname, ob->id.name); + unode->node= node; + + BLI_pbvh_node_num_verts(ss->pbvh, node, &totvert, &allvert); + BLI_pbvh_node_get_grids(ss->pbvh, node, &grids, &totgrid, + &maxgrid, &gridsize, NULL, NULL); + + unode->totvert= totvert; + /* we will use this while sculpting, is mapalloc slow to access then? */ + unode->co= MEM_mapallocN(sizeof(float)*3*allvert, "SculptUndoNode.co"); + unode->no= MEM_mapallocN(sizeof(short)*3*allvert, "SculptUndoNode.no"); + undo_paint_push_count_alloc(UNDO_PAINT_MESH, (sizeof(float)*3 + sizeof(short)*3 + sizeof(int))*allvert); + BLI_addtail(lb, unode); + + if(maxgrid) { + /* multires */ + unode->maxgrid= maxgrid; + unode->totgrid= totgrid; + unode->gridsize= gridsize; + unode->grids= MEM_mapallocN(sizeof(int)*totgrid, "SculptUndoNode.grids"); + } + else { + /* regular mesh */ + unode->maxvert= ss->totvert; + unode->index= MEM_mapallocN(sizeof(int)*allvert, "SculptUndoNode.index"); + } + + BLI_unlock_thread(LOCK_CUSTOM1); + + /* copy threaded, hopefully this is the performance critical part */ + { + PBVHVertexIter vd; + + BLI_pbvh_vertex_iter_begin(ss->pbvh, node, vd, PBVH_ITER_ALL) { + copy_v3_v3(unode->co[vd.i], vd.co); + if(vd.no) VECCOPY(unode->no[vd.i], vd.no) + else normal_float_to_short_v3(unode->no[vd.i], vd.fno); + if(vd.vert_indices) unode->index[vd.i]= vd.vert_indices[vd.i]; + } + BLI_pbvh_vertex_iter_end; + } + + if(unode->grids) + memcpy(unode->grids, grids, sizeof(int)*totgrid); + + /* store active shape key */ + if(ss->kb) BLI_strncpy((char*)unode->shapeName, ss->kb->name, sizeof(ss->kb->name)); + else unode->shapeName[0]= '\0'; + + return unode; +} + +void sculpt_undo_push_begin(char *name) +{ + undo_paint_push_begin(UNDO_PAINT_MESH, name, + sculpt_undo_restore, sculpt_undo_free); +} + +void sculpt_undo_push_end(void) +{ + ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_MESH); + SculptUndoNode *unode; + + /* we don't need normals in the undo stack */ + for(unode=lb->first; unode; unode=unode->next) { + if(unode->no) { + MEM_freeN(unode->no); + unode->no= NULL; + } + + if(unode->layer_disp) { + MEM_freeN(unode->layer_disp); + unode->layer_disp= NULL; + } + } + + undo_paint_push_end(UNDO_PAINT_MESH); +} diff --git a/source/blender/editors/space_image/image_buttons.c b/source/blender/editors/space_image/image_buttons.c index 357aa9dacdf..f58326239ae 100644 --- a/source/blender/editors/space_image/image_buttons.c +++ b/source/blender/editors/space_image/image_buttons.c @@ -792,7 +792,7 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn uiLayoutSetContextPointer(layout, "edit_image", &imaptr); if(!compact) - uiTemplateID(layout, C, ptr, propname, "IMAGE_OT_new", "IMAGE_OT_open", NULL); + uiTemplateID(layout, C, ptr, propname, "IMAGE_OT_new", "IMAGE_OT_open", NULL, NULL); // XXX missing: reload, pack diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index 3a264cbb259..005ebfb5b88 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -4278,7 +4278,7 @@ static void draw_actuator_sound(uiLayout *layout, PointerRNA *ptr, bContext *C) { uiLayout *row, *col; - uiTemplateID(layout, C, ptr, "sound", NULL, "SOUND_OT_open", NULL); + uiTemplateID(layout, C, ptr, "sound", NULL, "SOUND_OT_open", NULL, NULL); if (!RNA_pointer_get(ptr, "sound").data) { uiItemL(layout, "Select a sound from the list or load a new one", 0); diff --git a/source/blender/editors/space_nla/nla_buttons.c b/source/blender/editors/space_nla/nla_buttons.c index 9b7bc9a8002..81d4e8b6b01 100644 --- a/source/blender/editors/space_nla/nla_buttons.c +++ b/source/blender/editors/space_nla/nla_buttons.c @@ -237,7 +237,7 @@ static void nla_panel_animdata (const bContext *C, Panel *pa) /* Active Action Properties ------------------------------------- */ /* action */ row= uiLayoutRow(layout, 1); - uiTemplateID(row, (bContext *)C, &adt_ptr, "action", "ACTION_OT_new", NULL, NULL /*"ACTION_OT_unlink"*/); // XXX: need to make these operators + uiTemplateID(row, (bContext *)C, &adt_ptr, "action", "ACTION_OT_new", NULL, NULL /*"ACTION_OT_unlink"*/, NULL); // XXX: need to make these operators /* extrapolation */ row= uiLayoutRow(layout, 1); diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c index 2d111b731ad..082f3f97dfd 100644 --- a/source/blender/editors/space_node/drawnode.c +++ b/source/blender/editors/space_node/drawnode.c @@ -81,7 +81,7 @@ void node_buts_group(uiLayout *layout, bContext *C, PointerRNA *ptr) { - uiTemplateIDBrowse(layout, C, ptr, "nodetree", NULL, NULL, ""); + uiTemplateIDBrowse(layout, C, ptr, "nodetree", NULL, NULL, "", NULL); } static void node_buts_value(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -306,7 +306,7 @@ static void node_shader_buts_material(uiLayout *layout, bContext *C, PointerRNA bNode *node= ptr->data; uiLayout *col; - uiTemplateID(layout, C, ptr, "material", "MATERIAL_OT_new", NULL, NULL); + uiTemplateID(layout, C, ptr, "material", "MATERIAL_OT_new", NULL, NULL, NULL); if(!node->id) return; @@ -467,7 +467,7 @@ static void node_composit_buts_image(uiLayout *layout, bContext *C, PointerRNA * PointerRNA imaptr; PropertyRNA *prop; - uiTemplateID(layout, C, ptr, "image", NULL, "IMAGE_OT_open", NULL); + uiTemplateID(layout, C, ptr, "image", NULL, "IMAGE_OT_open", NULL, NULL); if(!node->id) return; @@ -504,7 +504,7 @@ static void node_composit_buts_renderlayers(uiLayout *layout, bContext *C, Point const char *layer_name; char scene_name[19]; - uiTemplateID(layout, C, ptr, "scene", NULL, NULL, NULL); + uiTemplateID(layout, C, ptr, "scene", NULL, NULL, NULL, NULL); if(!node->id) return; @@ -1204,7 +1204,7 @@ static void node_texture_buts_proc(uiLayout *layout, bContext *C, PointerRNA *pt static void node_texture_buts_image(uiLayout *layout, bContext *C, PointerRNA *ptr) { - uiTemplateID(layout, C, ptr, "image", NULL, "IMAGE_OT_open", NULL); + uiTemplateID(layout, C, ptr, "image", NULL, "IMAGE_OT_open", NULL, NULL); } static void node_texture_buts_output(uiLayout *layout, bContext *C, PointerRNA *ptr) diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c index 488eea40500..14068fe5f47 100644 --- a/source/blender/gpu/intern/gpu_draw.c +++ b/source/blender/gpu/intern/gpu_draw.c @@ -69,6 +69,7 @@ #include "GPU_draw.h" #include "GPU_extensions.h" #include "GPU_material.h" +#include "gpu_buffers.h" #include "smoke_API.h" diff --git a/source/blender/makesdna/DNA_ID.h b/source/blender/makesdna/DNA_ID.h index 7c3641db379..76468ada523 100644 --- a/source/blender/makesdna/DNA_ID.h +++ b/source/blender/makesdna/DNA_ID.h @@ -130,7 +130,7 @@ typedef struct PreviewImage { unsigned int w[2]; unsigned int h[2]; short changed[2]; - short pad0, pad1; + short changed_timestamp[2]; unsigned int * rect[2]; } PreviewImage; diff --git a/source/blender/makesdna/DNA_brush_types.h b/source/blender/makesdna/DNA_brush_types.h index 14930f85e63..3b2ce6b436e 100644 --- a/source/blender/makesdna/DNA_brush_types.h +++ b/source/blender/makesdna/DNA_brush_types.h @@ -33,9 +33,9 @@ #include "DNA_ID.h" #include "DNA_texture_types.h" -#ifndef MAX_MTEX -#define MAX_MTEX 18 -#endif +//#ifndef MAX_MTEX // XXX Not used? +//#define MAX_MTEX 18 +//#endif struct CurveMapping; struct MTex; @@ -43,8 +43,8 @@ struct Image; typedef struct BrushClone { struct Image *image; /* image for clone tool */ - float offset[2]; /* offset of clone image from canvas */ - float alpha, pad; /* transparency for drawing of clone image */ + float offset[2]; /* offset of clone image from canvas */ + float alpha, pad; /* transparency for drawing of clone image */ } BrushClone; typedef struct Brush { @@ -53,50 +53,94 @@ typedef struct Brush { struct BrushClone clone; struct CurveMapping *curve; /* falloff curve */ struct MTex mtex; - - short flag, blend; /* general purpose flag, blend mode */ - int size; /* brush diameter */ - float jitter; /* jitter the position of the brush */ - float spacing; /* spacing of paint operations */ - int smooth_stroke_radius; /* turning radius (in pixels) for smooth stroke */ - float smooth_stroke_factor; /* higher values limit fast changes in the stroke direction */ - float rate; /* paint operations / second (airbrush) */ + struct Image *image_icon; - float rgb[3]; /* color */ - float alpha; /* opacity */ + float normal_weight; - char sculpt_tool; /* active sculpt tool */ + short blend, pad; /* blend mode */ + int size; /* brush diameter */ + int flag; /* general purpose flag */ + float jitter; /* jitter the position of the brush */ + int spacing; /* spacing of paint operations */ + int smooth_stroke_radius; /* turning radius (in pixels) for smooth stroke */ + float smooth_stroke_factor; /* higher values limit fast changes in the stroke direction */ + float rate; /* paint operations / second (airbrush) */ + + float rgb[3]; /* color */ + float alpha; /* opacity */ + + int sculpt_plane; /* the direction of movement for sculpt vertices */ + + float plane_offset; /* offset for plane brushes (clay, flatten, fill, scrape) */ + + char sculpt_tool; /* active sculpt tool */ char vertexpaint_tool; /* active vertex/weight paint tool/blend mode */ char imagepaint_tool; /* active image paint tool */ - char pad2; + char pad3; + + float autosmooth_factor; + + float crease_pinch_factor; + + float plane_trim; + + float texture_sample_bias; + int texture_overlay_alpha; + + float unprojected_radius; + + float add_col[3]; + float sub_col[3]; } Brush; /* Brush.flag */ -#define BRUSH_AIRBRUSH 1 -#define BRUSH_TORUS 2 -#define BRUSH_ALPHA_PRESSURE 4 -#define BRUSH_SIZE_PRESSURE 8 -#define BRUSH_JITTER_PRESSURE 16 /* was BRUSH_RAD_PRESSURE */ -#define BRUSH_SPACING_PRESSURE 32 -#define BRUSH_FIXED_TEX 64 -#define BRUSH_RAKE 128 -#define BRUSH_ANCHORED 256 -#define BRUSH_DIR_IN 512 -#define BRUSH_SPACE 1024 -#define BRUSH_SMOOTH_STROKE 2048 -#define BRUSH_PERSISTENT 4096 -#define BRUSH_ACCUMULATE 8192 -#define BRUSH_LOCK_ALPHA 16384 +#define BRUSH_AIRBRUSH (1<<0) +#define BRUSH_TORUS (1<<1) +#define BRUSH_ALPHA_PRESSURE (1<<2) +#define BRUSH_SIZE_PRESSURE (1<<3) +#define BRUSH_JITTER_PRESSURE (1<<4) /* was BRUSH_RAD_PRESSURE */ +#define BRUSH_SPACING_PRESSURE (1<<5) +#define BRUSH_FIXED_TEX (1<<6) +#define BRUSH_RAKE (1<<7) +#define BRUSH_ANCHORED (1<<8) +#define BRUSH_DIR_IN (1<<9) +#define BRUSH_SPACE (1<<10) +#define BRUSH_SMOOTH_STROKE (1<<11) +#define BRUSH_PERSISTENT (1<<12) +#define BRUSH_ACCUMULATE (1<<13) +#define BRUSH_LOCK_ALPHA (1<<14) +#define BRUSH_ORIGINAL_NORMAL (1<<15) +#define BRUSH_OFFSET_PRESSURE (1<<16) +#define BRUSH_SPACE_ATTEN (1<<18) +#define BRUSH_ADAPTIVE_SPACE (1<<19) +#define BRUSH_LOCK_SIZE (1<<20) +#define BRUSH_TEXTURE_OVERLAY (1<<21) +#define BRUSH_EDGE_TO_EDGE (1<<22) +#define BRUSH_RESTORE_MESH (1<<23) +#define BRUSH_INVERSE_SMOOTH_PRESSURE (1<<24) +#define BRUSH_RANDOM_ROTATION (1<<25) +#define BRUSH_PLANE_TRIM (1<<26) +#define BRUSH_FRONTFACE (1<<27) /* Brush.sculpt_tool */ -#define SCULPT_TOOL_DRAW 1 -#define SCULPT_TOOL_SMOOTH 2 -#define SCULPT_TOOL_PINCH 3 -#define SCULPT_TOOL_INFLATE 4 -#define SCULPT_TOOL_GRAB 5 -#define SCULPT_TOOL_LAYER 6 -#define SCULPT_TOOL_FLATTEN 7 -#define SCULPT_TOOL_CLAY 8 +#define SCULPT_TOOL_DRAW 1 +#define SCULPT_TOOL_SMOOTH 2 +#define SCULPT_TOOL_PINCH 3 +#define SCULPT_TOOL_INFLATE 4 +#define SCULPT_TOOL_GRAB 5 +#define SCULPT_TOOL_LAYER 6 +#define SCULPT_TOOL_FLATTEN 7 +#define SCULPT_TOOL_CLAY 8 +#define SCULPT_TOOL_FILL 9 +#define SCULPT_TOOL_SCRAPE 10 +#define SCULPT_TOOL_NUDGE 11 +#define SCULPT_TOOL_THUMB 12 +#define SCULPT_TOOL_SNAKE_HOOK 13 +#define SCULPT_TOOL_ROTATE 14 +//#define SCULPT_TOOL_WAX 15 // XXX: reuse this slot later +#define SCULPT_TOOL_CREASE 16 +#define SCULPT_TOOL_BLOB 17 +#define SCULPT_TOOL_CLAY_TUBES 18 /* ImagePaintSettings.tool */ #define PAINT_TOOL_DRAW 0 @@ -104,5 +148,16 @@ typedef struct Brush { #define PAINT_TOOL_SMEAR 2 #define PAINT_TOOL_CLONE 3 +/* direction that the brush displaces along */ +enum { + SCULPT_DISP_DIR_AREA, + SCULPT_DISP_DIR_VIEW, + SCULPT_DISP_DIR_X, + SCULPT_DISP_DIR_Y, + SCULPT_DISP_DIR_Z, +}; + +#define MAX_BRUSH_PIXEL_RADIUS 200 + #endif diff --git a/source/blender/makesdna/DNA_color_types.h b/source/blender/makesdna/DNA_color_types.h index bc35d379334..83cd7979ce7 100644 --- a/source/blender/makesdna/DNA_color_types.h +++ b/source/blender/makesdna/DNA_color_types.h @@ -64,7 +64,8 @@ typedef struct CurveMap { typedef struct CurveMapping { int flag, cur; /* cur; for buttons, to show active curve */ - int preset, pad; + int preset; + int changed_timestamp; rctf curr, clipr; /* current rect, clip rect (is default rect too) */ @@ -87,7 +88,9 @@ typedef enum CurveMappingPreset { CURVE_PRESET_SHARP, CURVE_PRESET_SMOOTH, CURVE_PRESET_MAX, - CURVE_PRESET_MID9 + CURVE_PRESET_MID9, + CURVE_PRESET_ROUND, + CURVE_PRESET_ROOT, } CurveMappingPreset; /* histogram->mode */ diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index a4e9deaa7d9..3ac11eabe54 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -569,12 +569,30 @@ typedef struct Sculpt { Paint paint; /* For rotating around a pivot point */ - float pivot[3]; + //float pivot[3]; XXX not used? int flags; /* Control tablet input */ - char tablet_size, tablet_strength; - char pad[6]; + //char tablet_size, tablet_strength; XXX not used? + int radial_symm[3]; + + // all this below is used to communicate with the cursor drawing routine + + /* record movement of mouse so that rake can start at an intuitive angle */ + float last_x, last_y; + float last_angle; + + int draw_anchored; + int anchored_size; + float anchored_location[3]; + float anchored_initial_mouse[2]; + + int draw_pressure; + float pressure_value; + + float special_rotation; + + int pad; } Sculpt; typedef struct VPaint { @@ -1105,19 +1123,22 @@ typedef struct Scene { /* Paint.flags */ typedef enum { - PAINT_SHOW_BRUSH = 1, - PAINT_FAST_NAVIGATE = 2 + PAINT_SHOW_BRUSH = (1<<0), + PAINT_FAST_NAVIGATE = (1<<1), + PAINT_SHOW_BRUSH_ON_SURFACE = (1<<2), } PaintFlags; /* Sculpt.flags */ /* These can eventually be moved to paint flags? */ typedef enum SculptFlags { - SCULPT_SYMM_X = 1, - SCULPT_SYMM_Y = 2, - SCULPT_SYMM_Z = 4, - SCULPT_LOCK_X = 64, - SCULPT_LOCK_Y = 128, - SCULPT_LOCK_Z = 256 + SCULPT_SYMM_X = (1<<0), + SCULPT_SYMM_Y = (1<<1), + SCULPT_SYMM_Z = (1<<2), + SCULPT_LOCK_X = (1<<3), + SCULPT_LOCK_Y = (1<<4), + SCULPT_LOCK_Z = (1<<5), + SCULPT_SYMMETRY_FEATHER = (1<<6), + SCULPT_USE_OPENMP = (1<<7), } SculptFlags; /* ImagePaintSettings.flag */ diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index b6e52699340..19db6316659 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -341,9 +341,10 @@ typedef struct UserDef { short gp_settings; short tb_leftmouse, tb_rightmouse; struct SolidLight light[3]; + short sculpt_paint_settings; /* user preferences for sculpt and paint */ short tw_hotspot, tw_flag, tw_handlesize, tw_size; short textimeout,texcollectrate; - short wmdrawmethod, wmpad; + short wmdrawmethod; /* removed wmpad */ int memcachelimit; int prefetchframes; short frameserverport; @@ -373,6 +374,11 @@ typedef struct UserDef { short autokey_flag; /* flags for autokeying */ struct ColorBand coba_weight; /* from texture.h */ + + int sculpt_paint_unified_size; /* unified radius of brush in pixels */ + float sculpt_paint_unified_unprojected_radius;/* unified radius of brush in Blender units */ + float sculpt_paint_unified_alpha; /* unified strength of brush */ + float sculpt_paint_overlay_col[3]; } UserDef; extern UserDef U; /* from blenkernel blender.c */ @@ -524,6 +530,11 @@ extern UserDef U; /* from blenkernel blender.c */ #define GP_PAINT_DOSMOOTH (1<<0) #define GP_PAINT_DOSIMPLIFY (1<<1) +/* sculpt_paint_settings */ +#define SCULPT_PAINT_USE_UNIFIED_SIZE (1<<0) +#define SCULPT_PAINT_USE_UNIFIED_ALPHA (1<<1) +#define SCULPT_PAINT_UNIFIED_LOCK_BRUSH_SIZE (1<<2) + /* color picker types */ #define USER_CP_CIRCLE 0 #define USER_CP_SQUARE_SV 1 diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h index ed52316990e..e6d0772f425 100644 --- a/source/blender/makesdna/DNA_windowmanager_types.h +++ b/source/blender/makesdna/DNA_windowmanager_types.h @@ -307,8 +307,7 @@ typedef struct wmOperator { typedef enum wmRadialControlMode { WM_RADIALCONTROL_SIZE, WM_RADIALCONTROL_STRENGTH, - WM_RADIALCONTROL_ANGLE + WM_RADIALCONTROL_ANGLE, } wmRadialControlMode; #endif /* DNA_WINDOWMANAGER_TYPES_H */ - diff --git a/source/blender/makesrna/SConscript b/source/blender/makesrna/SConscript index bd500adc8e4..1558eef713e 100644 --- a/source/blender/makesrna/SConscript +++ b/source/blender/makesrna/SConscript @@ -45,7 +45,6 @@ if env['WITH_BF_GAMEENGINE']: if env['BF_UNIT_TEST']: defs.append('UNIT_TEST') - if env['OURPLATFORM'] == 'linux2': cflags='-pthread' incs += ' ../../../extern/binreloc/include' diff --git a/source/blender/makesrna/intern/CMakeLists.txt b/source/blender/makesrna/intern/CMakeLists.txt index 9b824279d8d..207e4e15a72 100644 --- a/source/blender/makesrna/intern/CMakeLists.txt +++ b/source/blender/makesrna/intern/CMakeLists.txt @@ -52,6 +52,7 @@ INCLUDE_DIRECTORIES( ../../gpu ../../imbuf ../../render/extern/include + ../../../../extern/glew/include . ) FILE(GLOB INC_FILES ../*.h ../../makesdna/*.h) diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c index fff29ba8f56..6d5a06d4f81 100644 --- a/source/blender/makesrna/intern/rna_brush.c +++ b/source/blender/makesrna/intern/rna_brush.c @@ -30,6 +30,7 @@ #include "DNA_brush_types.h" #include "DNA_texture_types.h" +#include "DNA_scene_types.h" #include "BLI_math.h" @@ -51,6 +52,58 @@ static void rna_Brush_update(Main *bmain, Scene *scene, PointerRNA *ptr) WM_main_add_notifier(NC_BRUSH|NA_EDITED, br); } +static int rna_Brush_is_sculpt_brush(Brush *me, bContext *C) +{ + Sculpt *sd = CTX_data_tool_settings(C)->sculpt; + int i; + + for (i= 0; i < sd->paint.brush_count; i++) { + if (strcmp(me->id.name+2, sd->paint.brushes[i]->id.name+2) == 0) + return 1; + } + + return 0; +} + +static int rna_Brush_is_vpaint_brush(Brush *me, bContext *C) +{ + VPaint *vp = CTX_data_tool_settings(C)->vpaint; + int i; + + for (i= 0; i < vp->paint.brush_count; i++) { + if (strcmp(me->id.name+2, vp->paint.brushes[i]->id.name+2) == 0) + return 1; + } + + return 0; +} + +static int rna_Brush_is_wpaint_brush(Brush *me, bContext *C) +{ + VPaint *vp = CTX_data_tool_settings(C)->wpaint; + int i; + + for (i= 0; i < vp->paint.brush_count; i++) { + if (strcmp(me->id.name+2, vp->paint.brushes[i]->id.name+2) == 0) + return 1; + } + + return 0; +} + +static int rna_Brush_is_imapaint_brush(Brush *me, bContext *C) +{ + ImagePaintSettings *data = &(CTX_data_tool_settings(C)->imapaint); + int i; + + for (i= 0; i < data->paint.brush_count; i++) { + if (strcmp(me->id.name+2, data->paint.brushes[i]->id.name+2) == 0) + return 1; + } + + return 0; +} + #else static void rna_def_brush_texture_slot(BlenderRNA *brna) @@ -100,14 +153,42 @@ static void rna_def_brush(BlenderRNA *brna) static EnumPropertyItem brush_sculpt_tool_items[] = { {SCULPT_TOOL_DRAW, "DRAW", 0, "Draw", ""}, {SCULPT_TOOL_SMOOTH, "SMOOTH", 0, "Smooth", ""}, + {SCULPT_TOOL_CREASE, "CREASE", 0, "Crease", ""}, + {SCULPT_TOOL_BLOB, "BLOB", 0, "Blob", ""}, {SCULPT_TOOL_PINCH, "PINCH", 0, "Pinch", ""}, {SCULPT_TOOL_INFLATE, "INFLATE", 0, "Inflate", ""}, {SCULPT_TOOL_GRAB, "GRAB", 0, "Grab", ""}, + {SCULPT_TOOL_SNAKE_HOOK, "SNAKE_HOOK", 0, "Snake Hook", ""}, + {SCULPT_TOOL_ROTATE, "ROTATE", 0, "Rotate", ""}, + {SCULPT_TOOL_THUMB, "THUMB", 0, "Thumb", ""}, + {SCULPT_TOOL_NUDGE, "NUDGE", 0, "Nudge", ""}, {SCULPT_TOOL_LAYER, "LAYER", 0, "Layer", ""}, {SCULPT_TOOL_FLATTEN, "FLATTEN", 0, "Flatten", ""}, {SCULPT_TOOL_CLAY, "CLAY", 0, "Clay", ""}, + //{SCULPT_TOOL_CLAY_TUBES, "CLAY_TUBES", 0, "Clay Tubes", ""}, XXX: remove clay tubes from UI + {SCULPT_TOOL_FILL, "FILL", 0, "Fill", ""}, + {SCULPT_TOOL_SCRAPE, "SCRAPE", 0, "Scrape", ""}, {0, NULL, 0, NULL, NULL}}; - + + static EnumPropertyItem brush_stroke_method_items[] = { + {0, "DOTS", 0, "Dots", ""}, + {BRUSH_RESTORE_MESH, "DRAG_DOT", 0, "Drag Dot", ""}, + {BRUSH_SPACE, "SPACE", 0, "Space", ""}, + {BRUSH_ANCHORED, "ANCHORED", 0, "Anchored", ""}, + {BRUSH_AIRBRUSH, "AIRBRUSH", 0, "Airbrush", ""}, + {0, NULL, 0, NULL, NULL}}; + + static EnumPropertyItem texture_angle_source_items[] = { + {0, "USER", 0, "User", ""}, + {BRUSH_RAKE, "RAKE", 0, "Rake", ""}, + {BRUSH_RANDOM_ROTATION, "RANDOM", 0, "Random", ""}, + {0, NULL, 0, NULL, NULL}}; + + static EnumPropertyItem texture_angle_source_no_random_items[] = { + {0, "USER", 0, "User", ""}, + {BRUSH_RAKE, "RAKE", 0, "Rake", ""}, + {0, NULL, 0, NULL, NULL}}; + static EnumPropertyItem brush_vertexpaint_tool_items[] = { {0, "MIX", 0, "Mix", "Use mix blending mode while painting"}, {1, "ADD", 0, "Add", "Use add blending mode while painting"}, @@ -129,11 +210,76 @@ static void rna_def_brush(BlenderRNA *brna) {0, "ADD", 0, "Add", "Add effect of brush"}, {BRUSH_DIR_IN, "SUBTRACT", 0, "Subtract", "Subtract effect of brush"}, {0, NULL, 0, NULL, NULL}}; - + + static const EnumPropertyItem prop_flatten_contrast_items[]= { + {0, "FLATTEN", 0, "Flatten", "Add effect of brush"}, + {BRUSH_DIR_IN, "CONTRAST", 0, "Contrast", "Subtract effect of brush"}, + {0, NULL, 0, NULL, NULL}}; + + static const EnumPropertyItem prop_fill_deepen_items[]= { + {0, "FILL", 0, "Fill", "Add effect of brush"}, + {BRUSH_DIR_IN, "DEEPEN", 0, "Deepen", "Subtract effect of brush"}, + {0, NULL, 0, NULL, NULL}}; + + static const EnumPropertyItem prop_scrape_peaks_items[]= { + {0, "SCRAPE", 0, "Scrape", "Add effect of brush"}, + {BRUSH_DIR_IN, "PEAKS", 0, "Peaks", "Subtract effect of brush"}, + {0, NULL, 0, NULL, NULL}}; + + static const EnumPropertyItem prop_pinch_magnify_items[]= { + {0, "PINCH", 0, "Pinch", "Add effect of brush"}, + {BRUSH_DIR_IN, "MAGNIFY", 0, "Magnify", "Subtract effect of brush"}, + {0, NULL, 0, NULL, NULL}}; + + static const EnumPropertyItem prop_inflate_deflate_items[]= { + {0, "INFLATE", 0, "Inflate", "Add effect of brush"}, + {BRUSH_DIR_IN, "DEFLATE", 0, "Deflate", "Subtract effect of brush"}, + {0, NULL, 0, NULL, NULL}}; + + static EnumPropertyItem brush_sculpt_plane_items[] = { + {SCULPT_DISP_DIR_AREA, "AREA", 0, "Area Plane", ""}, + {SCULPT_DISP_DIR_VIEW, "VIEW", 0, "View Plane", ""}, + {SCULPT_DISP_DIR_X, "X", 0, "X Plane", ""}, + {SCULPT_DISP_DIR_Y, "Y", 0, "Y Plane", ""}, + {SCULPT_DISP_DIR_Z, "Z", 0, "Z Plane", ""}, + {0, NULL, 0, NULL, NULL}}; + + FunctionRNA *func; + PropertyRNA *parm; + srna= RNA_def_struct(brna, "Brush", "ID"); RNA_def_struct_ui_text(srna, "Brush", "Brush datablock for storing brush settings for painting and sculpting"); RNA_def_struct_ui_icon(srna, ICON_BRUSH_DATA); - + + /* functions */ + func= RNA_def_function(srna, "is_sculpt_brush", "rna_Brush_is_sculpt_brush"); + RNA_def_function_ui_description(func, "Returns true if Brush can be used for sculpting"); + parm= RNA_def_pointer(func, "context", "Context", "", ""); + RNA_def_property_flag(parm, PROP_REQUIRED); + parm= RNA_def_boolean(func, "ret", 0, "", ""); + RNA_def_function_return(func, parm); + + func= RNA_def_function(srna, "is_vpaint_brush", "rna_Brush_is_vpaint_brush"); + RNA_def_function_ui_description(func, "Returns true if Brush can be used for vertex painting"); + parm= RNA_def_pointer(func, "context", "Context", "", ""); + RNA_def_property_flag(parm, PROP_REQUIRED); + parm= RNA_def_boolean(func, "ret", 0, "", ""); + RNA_def_function_return(func, parm); + + func= RNA_def_function(srna, "is_wpaint_brush", "rna_Brush_is_wpaint_brush"); + RNA_def_function_ui_description(func, "Returns true if Brush can be used for weight painting"); + parm= RNA_def_pointer(func, "context", "Context", "", ""); + RNA_def_property_flag(parm, PROP_REQUIRED); + parm= RNA_def_boolean(func, "ret", 0, "", ""); + RNA_def_function_return(func, parm); + + func= RNA_def_function(srna, "is_imapaint_brush", "rna_Brush_is_imapaint_brush"); + RNA_def_function_ui_description(func, "Returns true if Brush can be used for image painting"); + parm= RNA_def_pointer(func, "context", "Context", "", ""); + RNA_def_property_flag(parm, PROP_REQUIRED); + parm= RNA_def_boolean(func, "ret", 0, "", ""); + RNA_def_function_return(func, parm); + /* enums */ prop= RNA_def_property(srna, "blend", PROP_ENUM, PROP_NONE); RNA_def_property_enum_items(prop, prop_blend_items); @@ -144,7 +290,7 @@ static void rna_def_brush(BlenderRNA *brna) RNA_def_property_enum_items(prop, brush_sculpt_tool_items); RNA_def_property_ui_text(prop, "Sculpt Tool", ""); RNA_def_property_update(prop, 0, "rna_Brush_update"); - + prop= RNA_def_property(srna, "vertexpaint_tool", PROP_ENUM, PROP_NONE); RNA_def_property_enum_items(prop, brush_vertexpaint_tool_items); RNA_def_property_ui_text(prop, "Vertex/Weight Paint Tool", ""); @@ -158,33 +304,94 @@ static void rna_def_brush(BlenderRNA *brna) prop= RNA_def_property(srna, "direction", PROP_ENUM, PROP_NONE); RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); RNA_def_property_enum_items(prop, prop_flip_direction_items); - RNA_def_property_ui_text(prop, "Direction", "Mapping type to use for this image in the game engine"); + RNA_def_property_ui_text(prop, "Direction", ""); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "stroke_method", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); + RNA_def_property_enum_items(prop, brush_stroke_method_items); + RNA_def_property_ui_text(prop, "Stroke Method", ""); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "texture_angle_source", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); + RNA_def_property_enum_items(prop, texture_angle_source_items); + RNA_def_property_ui_text(prop, "Texture Angle Source", ""); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "texture_angle_source_no_random", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); + RNA_def_property_enum_items(prop, texture_angle_source_no_random_items); + RNA_def_property_ui_text(prop, "Texture Angle Source", ""); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "flatten_contrast", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); + RNA_def_property_enum_items(prop, prop_flatten_contrast_items); + RNA_def_property_ui_text(prop, "Flatten/Contrast", ""); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "inflate_deflate", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); + RNA_def_property_enum_items(prop, prop_inflate_deflate_items); + RNA_def_property_ui_text(prop, "Inflate/Deflate", ""); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "fill_deepen", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); + RNA_def_property_enum_items(prop, prop_fill_deepen_items); + RNA_def_property_ui_text(prop, "Fill/Deepen", ""); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "scrape_peaks", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); + RNA_def_property_enum_items(prop, prop_scrape_peaks_items); + RNA_def_property_ui_text(prop, "Scrape/Peaks", ""); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "pinch_magnify", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); + RNA_def_property_enum_items(prop, prop_pinch_magnify_items); + RNA_def_property_ui_text(prop, "Pinch/Magnify", ""); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "sculpt_plane", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_items(prop, brush_sculpt_plane_items); + RNA_def_property_ui_text(prop, "Sculpt Plane", ""); RNA_def_property_update(prop, 0, "rna_Brush_update"); /* number values */ - prop= RNA_def_property(srna, "size", PROP_INT, PROP_NONE); - RNA_def_property_range(prop, 1, 200); - RNA_def_property_ui_text(prop, "Size", "Diameter of the brush"); + prop= RNA_def_property(srna, "size", PROP_INT, PROP_DISTANCE); + RNA_def_property_range(prop, 1, MAX_BRUSH_PIXEL_RADIUS*10); + RNA_def_property_ui_range(prop, 1, MAX_BRUSH_PIXEL_RADIUS, 1, 0); + RNA_def_property_ui_text(prop, "Size", "Radius of the brush in pixels"); RNA_def_property_update(prop, 0, "rna_Brush_update"); + prop= RNA_def_property(srna, "unprojected_radius", PROP_FLOAT, PROP_DISTANCE); + RNA_def_property_range(prop, 0, FLT_MAX); + RNA_def_property_ui_range(prop, 0, 1, 0, 0); + RNA_def_property_ui_text(prop, "Surface Size", "Radius of brush in Blender units"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + prop= RNA_def_property(srna, "jitter", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "jitter"); RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Jitter", "Jitter the position of the brush while painting"); RNA_def_property_update(prop, 0, "rna_Brush_update"); - prop= RNA_def_property(srna, "spacing", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "spacing"); - RNA_def_property_range(prop, 1.0f, 100.0f); - RNA_def_property_ui_text(prop, "Spacing", "Spacing between brush stamps"); + prop= RNA_def_property(srna, "spacing", PROP_INT, PROP_PERCENTAGE); + RNA_def_property_int_sdna(prop, NULL, "spacing"); + RNA_def_property_range(prop, 1, 1000); + RNA_def_property_ui_range(prop, 1, 500, 5, 0); + RNA_def_property_ui_text(prop, "Spacing", "Spacing between brush daubs as a percentage of brush diameter"); RNA_def_property_update(prop, 0, "rna_Brush_update"); - prop= RNA_def_property(srna, "smooth_stroke_radius", PROP_INT, PROP_NONE); + prop= RNA_def_property(srna, "smooth_stroke_radius", PROP_INT, PROP_DISTANCE); RNA_def_property_range(prop, 10, 200); RNA_def_property_ui_text(prop, "Smooth Stroke Radius", "Minimum distance from last point before stroke continues"); RNA_def_property_update(prop, 0, "rna_Brush_update"); - prop= RNA_def_property(srna, "smooth_stroke_factor", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "smooth_stroke_factor", PROP_FLOAT, PROP_FACTOR); RNA_def_property_range(prop, 0.5, 0.99); RNA_def_property_ui_text(prop, "Smooth Stroke Factor", "Higher values give a smoother stroke"); RNA_def_property_update(prop, 0, "rna_Brush_update"); @@ -202,10 +409,56 @@ static void rna_def_brush(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Color", ""); RNA_def_property_update(prop, 0, "rna_Brush_update"); - prop= RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "strength", PROP_FLOAT, PROP_FACTOR); RNA_def_property_float_sdna(prop, NULL, "alpha"); + RNA_def_property_float_default(prop, 0.5f); + RNA_def_property_range(prop, 0.0f, 10.0f); + RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.001, 0.001); + RNA_def_property_ui_text(prop, "Strength", "How powerful the effect of the brush is when applied"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "plane_offset", PROP_FLOAT, PROP_DISTANCE); + RNA_def_property_float_sdna(prop, NULL, "plane_offset"); + RNA_def_property_float_default(prop, 0); + RNA_def_property_range(prop, -2.0f, 2.0f); + RNA_def_property_ui_range(prop, -0.5f, 0.5f, 0.001, 0.001); + RNA_def_property_ui_text(prop, "Plane Offset", "Adjusts plane on which the brush acts towards or away from the object surface"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "plane_trim", PROP_FLOAT, PROP_DISTANCE); + RNA_def_property_float_sdna(prop, NULL, "plane_trim"); + RNA_def_property_float_default(prop, 0.5f); + RNA_def_property_range(prop, 0, 1.0f); + RNA_def_property_ui_text(prop, "Plane Trim", "If a vertex is further from offset plane than this then it is not affected"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "texture_sample_bias", PROP_FLOAT, PROP_DISTANCE); + RNA_def_property_float_sdna(prop, NULL, "texture_sample_bias"); + RNA_def_property_float_default(prop, 0); + RNA_def_property_range(prop, -1, 1); + RNA_def_property_ui_text(prop, "Texture Sample Bias", "Value added to texture samples"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "normal_weight", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, NULL, "normal_weight"); + RNA_def_property_float_default(prop, 0); RNA_def_property_range(prop, 0.0f, 1.0f); - RNA_def_property_ui_text(prop, "Strength", "The amount of pressure on the brush"); + RNA_def_property_ui_text(prop, "Normal Weight", "How much grab will pull vertexes out of surface during a grab"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "crease_pinch_factor", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, NULL, "crease_pinch_factor"); + RNA_def_property_float_default(prop, 2.0f/3.0f); + RNA_def_property_range(prop, 0.0f, 1.0f); + RNA_def_property_ui_text(prop, "Crease Brush Pinch Factor", "How much the crease brush pinches"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "autosmooth_factor", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, NULL, "autosmooth_factor"); + RNA_def_property_float_default(prop, 0); + RNA_def_property_range(prop, 0.0f, 1.0f); + RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.001, 0.001); + RNA_def_property_ui_text(prop, "Autosmooth", "Amount of smoothing to automatically apply to each stroke"); RNA_def_property_update(prop, 0, "rna_Brush_update"); /* flag */ @@ -214,6 +467,11 @@ static void rna_def_brush(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Airbrush", "Keep applying paint effect while holding mouse (spray)"); RNA_def_property_update(prop, 0, "rna_Brush_update"); + prop= RNA_def_property(srna, "use_original_normal", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_ORIGINAL_NORMAL); + RNA_def_property_ui_text(prop, "Original Normal", "When locked keep using normal of surface where stroke was initiated"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + prop= RNA_def_property(srna, "use_wrap", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_TORUS); RNA_def_property_ui_text(prop, "Wrap", "Enable torus wrapping while painting"); @@ -225,6 +483,12 @@ static void rna_def_brush(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Strength Pressure", "Enable tablet pressure sensitivity for strength"); RNA_def_property_update(prop, 0, "rna_Brush_update"); + prop= RNA_def_property(srna, "use_offset_pressure", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_OFFSET_PRESSURE); + RNA_def_property_ui_icon(prop, ICON_STYLUS_PRESSURE, 0); + RNA_def_property_ui_text(prop, "Plane Offset Pressure", "Enable tablet pressure sensitivity for offset"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + prop= RNA_def_property(srna, "use_size_pressure", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_SIZE_PRESSURE); RNA_def_property_ui_icon(prop, ICON_STYLUS_PRESSURE, 0); @@ -243,11 +507,32 @@ static void rna_def_brush(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Spacing Pressure", "Enable tablet pressure sensitivity for spacing"); RNA_def_property_update(prop, 0, "rna_Brush_update"); + prop= RNA_def_property(srna, "use_inverse_smooth_pressure", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_INVERSE_SMOOTH_PRESSURE); + RNA_def_property_ui_icon(prop, ICON_STYLUS_PRESSURE, 0); + RNA_def_property_ui_text(prop, "Inverse Smooth Pressure", "Lighter pressure causes more smoothing to be applied"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + prop= RNA_def_property(srna, "use_rake", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_RAKE); RNA_def_property_ui_text(prop, "Rake", "Rotate the brush texture to match the stroke direction"); RNA_def_property_update(prop, 0, "rna_Brush_update"); + prop= RNA_def_property(srna, "use_random_rotation", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_RANDOM_ROTATION); + RNA_def_property_ui_text(prop, "Random Rotation", "Rotate the brush texture at random"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "use_plane_trim", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_PLANE_TRIM); + RNA_def_property_ui_text(prop, "Use Plane Trim", "Enable Plane Trim"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "use_frontface", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_FRONTFACE); + RNA_def_property_ui_text(prop, "Use Front-Face", "Brush only affects vertexes that face the viewer"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + prop= RNA_def_property(srna, "use_anchor", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_ANCHORED); RNA_def_property_ui_text(prop, "Anchored", "Keep the brush anchored to the initial location"); @@ -273,6 +558,37 @@ static void rna_def_brush(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Accumulate", "Accumulate stroke dabs on top of each other"); RNA_def_property_update(prop, 0, "rna_Brush_update"); + prop= RNA_def_property(srna, "use_space_atten", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_SPACE_ATTEN); + RNA_def_property_ui_text(prop, "Use Automatic Strength Adjustment", "Automatically adjusts strength to give consistent results for different spacings"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + /* adaptive space is not implemented yet */ + prop= RNA_def_property(srna, "use_adaptive_space", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_ADAPTIVE_SPACE); + RNA_def_property_ui_text(prop, "Adaptive Spacing", "Space daubs according to surface orientation instead of screen space"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "lock_brush_size", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_LOCK_SIZE); + RNA_def_property_ui_text(prop, "Use Blender Units", "When locked brush stays same size relative to object; when unlocked brush size is given in pixels"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "use_texture_overlay", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_TEXTURE_OVERLAY); + RNA_def_property_ui_text(prop, "Use Texture Overlay", "Show texture in viewport"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "edge_to_edge", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_EDGE_TO_EDGE); + RNA_def_property_ui_text(prop, "Edge-to-edge", "Drag anchor brush from edge-to-edge"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "restore_mesh", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_RESTORE_MESH); + RNA_def_property_ui_text(prop, "Restore Mesh", "Allows a single dot to be carefully positioned"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + /* not exposed in the interface yet prop= RNA_def_property(srna, "fixed_tex", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_FIXED_TEX); @@ -303,6 +619,31 @@ static void rna_def_brush(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Texture", ""); RNA_def_property_update(prop, NC_TEXTURE, "rna_Brush_update"); + prop= RNA_def_property(srna, "texture_overlay_alpha", PROP_INT, PROP_PERCENTAGE); + RNA_def_property_int_sdna(prop, NULL, "texture_overlay_alpha"); + RNA_def_property_range(prop, 1, 100); + RNA_def_property_ui_text(prop, "Texture Overlay Alpha", ""); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "add_col", PROP_FLOAT, PROP_COLOR); + RNA_def_property_float_sdna(prop, NULL, "add_col"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Add Color", "Color of cursor when adding"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "sub_col", PROP_FLOAT, PROP_COLOR); + RNA_def_property_float_sdna(prop, NULL, "sub_col"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Subract Color", "Color of cursor when subtracting"); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "image_icon", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "image_icon"); + RNA_def_property_struct_type(prop, "Image"); + RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Image Icon", ""); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + /* clone tool */ prop= RNA_def_property(srna, "clone_image", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "clone.image"); @@ -357,16 +698,19 @@ static void rna_def_operator_stroke_element(BlenderRNA *brna) RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Pressure", "Tablet pressure"); + prop= RNA_def_property(srna, "pen_flip", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_flag(prop, PROP_IDPROPERTY); + RNA_def_property_ui_text(prop, "Flip", ""); + + // used in uv painting prop= RNA_def_property(srna, "time", PROP_FLOAT, PROP_UNSIGNED); RNA_def_property_flag(prop, PROP_IDPROPERTY); RNA_def_property_ui_text(prop, "Time", ""); - prop= RNA_def_property(srna, "flip", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_flag(prop, PROP_IDPROPERTY); - RNA_def_property_ui_text(prop, "Flip", ""); - /* XXX: Tool (this will be for pressing a modifier key for a different brush, e.g. switching to a Smooth brush in the middle of the stroke */ + + // XXX: i don't think blender currently supports the ability to properly do a remappable modifier in the middle of a stroke } void RNA_def_brush(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_image.c b/source/blender/makesrna/intern/rna_image.c index 7d8248b58ed..7144b409299 100644 --- a/source/blender/makesrna/intern/rna_image.c +++ b/source/blender/makesrna/intern/rna_image.c @@ -213,6 +213,12 @@ static int rna_Image_depth_get(PointerRNA *ptr) return depth; } +static int rna_Image_is_image_icon(Image *me, bContext *C) +{ + const char prefix[] = ".imageicon."; + return strncmp(me->id.name+2, prefix, sizeof(prefix)-1) == 0; +} + #else static void rna_def_imageuser(BlenderRNA *brna) @@ -292,6 +298,9 @@ static void rna_def_image(BlenderRNA *brna) {IMA_STD_FIELD, "ODD", 0, "Lower First", "Lower field first"}, {0, NULL, 0, NULL, NULL}}; + FunctionRNA *func; + PropertyRNA *parm; + srna= RNA_def_struct(brna, "Image", "ID"); RNA_def_struct_ui_text(srna, "Image", "Image datablock referencing an external or packed image"); RNA_def_struct_ui_icon(srna, ICON_IMAGE_DATA); @@ -333,6 +342,14 @@ static void rna_def_image(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Field Order", "Order of video fields. Select which lines are displayed first"); RNA_def_property_update(prop, NC_IMAGE|ND_DISPLAY, NULL); + /* functions */ + func= RNA_def_function(srna, "is_image_icon", "rna_Image_is_image_icon"); + RNA_def_function_ui_description(func, "Returns true if Image name is prefixed with .imageicon."); + parm= RNA_def_pointer(func, "context", "Context", "", ""); + RNA_def_property_flag(parm, PROP_REQUIRED); + parm= RNA_def_boolean(func, "ret", 0, "", ""); + RNA_def_function_return(func, parm); + /* booleans */ prop= RNA_def_property(srna, "fields", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", IMA_FIELDS); diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c index 3a7e7a02837..604f7776d56 100644 --- a/source/blender/makesrna/intern/rna_sculpt_paint.c +++ b/source/blender/makesrna/intern/rna_sculpt_paint.c @@ -193,7 +193,7 @@ static void rna_Paint_active_brush_name_get(PointerRNA *ptr, char *value) Paint *p= ptr->data; Brush *br = paint_brush(p); - BLI_strncpy(value, br->id.name+2, sizeof(br->id.name-2)); + BLI_strncpy(value, br->id.name+2, sizeof(br->id.name)-2); } @@ -212,7 +212,7 @@ static void rna_Paint_active_brush_name_set(PointerRNA *ptr, const char *value) for(i = 0; i < p->brush_count; ++i) { br = p->brushes[i]; - + if (strcmp(br->id.name+2, value)==0) { paint_brush_set(p, br); return; @@ -262,6 +262,10 @@ static void rna_def_paint(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flags", PAINT_SHOW_BRUSH); RNA_def_property_ui_text(prop, "Show Brush", ""); + prop= RNA_def_property(srna, "show_brush_on_surface", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flags", PAINT_SHOW_BRUSH_ON_SURFACE); + RNA_def_property_ui_text(prop, "Show Brush On Surface", ""); + prop= RNA_def_property(srna, "fast_navigate", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", PAINT_FAST_NAVIGATE); RNA_def_property_ui_text(prop, "Fast Navigate", "For multires, show low resolution while navigating the view"); @@ -274,7 +278,14 @@ static void rna_def_sculpt(BlenderRNA *brna) srna= RNA_def_struct(brna, "Sculpt", "Paint"); RNA_def_struct_ui_text(srna, "Sculpt", ""); - + + prop= RNA_def_property(srna, "radial_symm", PROP_INT, PROP_XYZ); + RNA_def_property_int_sdna(prop, NULL, "radial_symm"); + RNA_def_property_int_default(prop, 1); + RNA_def_property_range(prop, 1, 64); + RNA_def_property_ui_range(prop, 0, 32, 1, 1); + RNA_def_property_ui_text(prop, "Radial Symmetry Count X Axis", "Number of times to copy strokes across the surface"); + prop= RNA_def_property(srna, "symmetry_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", SCULPT_SYMM_X); RNA_def_property_ui_text(prop, "Symmetry X", "Mirror brush across the X axis"); @@ -298,6 +309,14 @@ static void rna_def_sculpt(BlenderRNA *brna) prop= RNA_def_property(srna, "lock_z", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", SCULPT_LOCK_Z); RNA_def_property_ui_text(prop, "Lock Z", "Disallow changes to the Z axis of vertices"); + + 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"); + + prop= RNA_def_property(srna, "use_openmp", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flags", SCULPT_USE_OPENMP); + RNA_def_property_ui_text(prop, "Use OpenMP", "Take advantage of multiple CPU cores to improve sculpting performance"); } static void rna_def_vertex_paint(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c index 1c751433e31..b2831c4b1d3 100644 --- a/source/blender/makesrna/intern/rna_ui_api.c +++ b/source/blender/makesrna/intern/rna_ui_api.c @@ -274,6 +274,7 @@ void RNA_api_ui_layout(StructRNA *srna) RNA_def_string(func, "new", "", 0, "", "Operator identifier to create a new ID block."); RNA_def_string(func, "open", "", 0, "", "Operator identifier to open a file for creating a new ID block."); RNA_def_string(func, "unlink", "", 0, "", "Operator identifier to unlink the ID block."); + RNA_def_string(func, "filter", "", 0, "", "Function identifier to filter the ID block."); func= RNA_def_function(srna, "template_ID_preview", "uiTemplateIDPreview"); RNA_def_function_flag(func, FUNC_USE_CONTEXT); @@ -281,6 +282,7 @@ void RNA_api_ui_layout(StructRNA *srna) RNA_def_string(func, "new", "", 0, "", "Operator identifier to create a new ID block."); RNA_def_string(func, "open", "", 0, "", "Operator identifier to open a file for creating a new ID block."); RNA_def_string(func, "unlink", "", 0, "", "Operator identifier to unlink the ID block."); + RNA_def_string(func, "filter", "", 0, "", "Function identifier to filter the ID block."); RNA_def_int(func, "rows", 0, 0, INT_MAX, "Number of thumbnail preview rows to display", "", 0, INT_MAX); RNA_def_int(func, "cols", 0, 0, INT_MAX, "Number of thumbnail preview columns to display", "", 0, INT_MAX); diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index d6aec37d6fb..a03488d3878 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -32,6 +32,7 @@ #include "DNA_curve_types.h" #include "DNA_space_types.h" #include "DNA_userdef_types.h" +#include "DNA_brush_types.h" #include "WM_api.h" #include "WM_types.h" @@ -867,7 +868,7 @@ static void rna_def_userdef_theme_space_view3d(BlenderRNA *brna) RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Transform", ""); RNA_def_property_update(prop, 0, "rna_userdef_update"); - + rna_def_userdef_theme_spaces_vertex(srna); rna_def_userdef_theme_spaces_edge(srna); rna_def_userdef_theme_spaces_face(srna); @@ -2194,7 +2195,43 @@ static void rna_def_userdef_edit(BlenderRNA *brna) RNA_def_property_int_sdna(prop, NULL, "gp_eraser"); RNA_def_property_range(prop, 0, 100); RNA_def_property_ui_text(prop, "Grease Pencil Eraser Radius", "Radius of eraser 'brush'"); - + + /* sculpt and paint */ + + prop= RNA_def_property(srna, "sculpt_paint_overlay_col", PROP_FLOAT, PROP_COLOR); + RNA_def_property_float_sdna(prop, NULL, "sculpt_paint_overlay_col"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Sculpt/Paint Overlay Color", "Color of texture overlay"); + + prop= RNA_def_property(srna, "sculpt_paint_use_unified_size", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "sculpt_paint_settings", SCULPT_PAINT_USE_UNIFIED_SIZE); + RNA_def_property_ui_text(prop, "Sculpt/Paint Use Unified Radius", "Instead of per brush radius, the radius is shared across brushes"); + + prop= RNA_def_property(srna, "sculpt_paint_use_unified_strength", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "sculpt_paint_settings", SCULPT_PAINT_USE_UNIFIED_ALPHA); + RNA_def_property_ui_text(prop, "Sculpt/Paint Use Unified Strength", "Instead of per brush strength, the strength is shared across brushes"); + + prop= RNA_def_property(srna, "sculpt_paint_unified_lock_brush_size", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "sculpt_paint_settings", SCULPT_PAINT_UNIFIED_LOCK_BRUSH_SIZE); + RNA_def_property_ui_text(prop, "Sculpt/Paint Use Unified Blender Units", "When locked all brushes stay same size relative to object; when unlocked all brush sizes are given in pixels"); + + prop= RNA_def_property(srna, "sculpt_paint_unified_size", PROP_INT, PROP_DISTANCE); + RNA_def_property_range(prop, 1, MAX_BRUSH_PIXEL_RADIUS*10); + RNA_def_property_ui_range(prop, 1, MAX_BRUSH_PIXEL_RADIUS, 1, 0); + RNA_def_property_ui_text(prop, "Sculpt/Paint Unified Size", "Unified radius of the brush in pixels"); + + prop= RNA_def_property(srna, "sculpt_paint_unified_unprojected_radius", PROP_FLOAT, PROP_DISTANCE); + RNA_def_property_range(prop, 0, FLT_MAX); + RNA_def_property_ui_range(prop, 0, 1, 0, 0); + RNA_def_property_ui_text(prop, "Sculpt/Paint Unified Surface Size", "Unified radius of brush in Blender units"); + + prop= RNA_def_property(srna, "sculpt_paint_unified_strength", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, NULL, "sculpt_paint_unified_alpha"); + RNA_def_property_float_default(prop, 0.5f); + RNA_def_property_range(prop, 0.0f, 10.0f); + RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.001, 0.001); + RNA_def_property_ui_text(prop, "Sculpt/Paint Unified Strength", "Unified power of effect of brushes when applied"); + /* duplication linking */ prop= RNA_def_property(srna, "duplicate_mesh", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_MESH); diff --git a/source/blender/windowmanager/SConscript b/source/blender/windowmanager/SConscript index 0a86133e614..179b1ddc998 100644 --- a/source/blender/windowmanager/SConscript +++ b/source/blender/windowmanager/SConscript @@ -24,7 +24,7 @@ if env['WITH_BF_COLLADA']: if env['OURPLATFORM'] == 'linux2': cflags='-pthread' - incs += ' ../../../extern/binreloc/include' + incs += ' ../../../extern/binreloc/include' if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): incs += ' ' + env['BF_PTHREADS_INC'] @@ -35,4 +35,4 @@ if env['WITH_GHOST_COCOA']: if env['BF_BUILDINFO']: defs.append('NAN_BUILDINFO') -env.BlenderLib ( 'bf_windowmanager', sources, Split(incs), defs, libtype=['core'], priority=[5] ) +env.BlenderLib ( 'bf_windowmanager', sources, Split(incs), defines=defs, libtype=['core'], priority=[5] ) diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index 5dbbf35796f..38322b66bbb 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -389,6 +389,7 @@ static void wm_draw_triple_free(wmWindow *win) wmDrawTriple *triple= win->drawdata; glDeleteTextures(triple->nx*triple->ny, triple->bind); + MEM_freeN(triple); win->drawdata= NULL; @@ -560,7 +561,8 @@ static void wm_method_draw_triple(bContext *C, wmWindow *win) else { win->drawdata= MEM_callocN(sizeof(wmDrawTriple), "wmDrawTriple"); - if(!wm_triple_gen_textures(win, win->drawdata)) { + if(!wm_triple_gen_textures(win, win->drawdata)) + { wm_draw_triple_fail(C, win); return; } diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 0023ded23f0..78e1c7d87a3 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -61,6 +61,7 @@ #include "BKE_scene.h" #include "BKE_screen.h" /* BKE_ST_MAXNAME */ #include "BKE_utildefines.h" +#include "BKE_brush.h" // JW #include "BIF_gl.h" #include "BIF_glutil.h" /* for paint cursor */ @@ -69,6 +70,7 @@ #include "ED_screen.h" #include "ED_util.h" +#include "ED_view3d.h" // JW #include "RNA_access.h" #include "RNA_define.h" @@ -2595,19 +2597,28 @@ typedef struct wmRadialControl { GLuint tex; } wmRadialControl; +extern Paint *paint_get_active(Scene *sce); +extern struct Brush *paint_brush(struct Paint *paint); + static void wm_radial_control_paint(bContext *C, int x, int y, void *customdata) { wmRadialControl *rc = (wmRadialControl*)customdata; ARegion *ar = CTX_wm_region(C); float r1=0.0f, r2=0.0f, r3=0.0f, angle=0.0f; - /* Keep cursor in the original place */ - x = rc->initial_mouse[0] - ar->winrct.xmin; - y = rc->initial_mouse[1] - ar->winrct.ymin; + Paint *paint = paint_get_active(CTX_data_scene(C)); + Brush *brush = paint_brush(paint); - glPushMatrix(); - - glTranslatef((float)x, (float)y, 0.0f); + ViewContext vc; + + int hit = 0; + + int flip; + int sign; + + float* col; + + const float str = rc->mode == WM_RADIALCONTROL_STRENGTH ? (rc->value + 0.5) : (brush->texture_overlay_alpha / 100.0f); if(rc->mode == WM_RADIALCONTROL_SIZE) { r1= rc->value; @@ -2615,29 +2626,37 @@ static void wm_radial_control_paint(bContext *C, int x, int y, void *customdata) r3= r1; } else if(rc->mode == WM_RADIALCONTROL_STRENGTH) { r1= (1 - rc->value) * WM_RADIAL_CONTROL_DISPLAY_SIZE; - r2= WM_RADIAL_CONTROL_DISPLAY_SIZE; - r3= WM_RADIAL_CONTROL_DISPLAY_SIZE; + r2= r3= WM_RADIAL_CONTROL_DISPLAY_SIZE; } else if(rc->mode == WM_RADIALCONTROL_ANGLE) { - r1= r2= WM_RADIAL_CONTROL_DISPLAY_SIZE; - r3= WM_RADIAL_CONTROL_DISPLAY_SIZE; + r1= r2= r3= WM_RADIAL_CONTROL_DISPLAY_SIZE; angle = rc->value; } - glColor4ub(255, 255, 255, 128); - glEnable( GL_LINE_SMOOTH ); + /* Keep cursor in the original place */ + x = rc->initial_mouse[0] - ar->winrct.xmin; + y = rc->initial_mouse[1] - ar->winrct.ymin; + + view3d_set_viewcontext(C, &vc); + + // XXX: no way currently to know state of pen flip or invert key modifier without starting a stroke + flip = 1; + + sign = flip * ((brush->flag & BRUSH_DIR_IN)? -1 : 1); + + if (sign < 0 && ELEM4(brush->sculpt_tool, SCULPT_TOOL_DRAW, SCULPT_TOOL_INFLATE, SCULPT_TOOL_CLAY, SCULPT_TOOL_PINCH)) + col = brush->sub_col; + else + col = brush->add_col; + + glTranslatef((float)x, (float)y, 0.0f); + glEnable(GL_BLEND); - if(rc->mode == WM_RADIALCONTROL_ANGLE) - fdrawline(0, 0, WM_RADIAL_CONTROL_DISPLAY_SIZE, 0); - - if(rc->tex) { - const float str = rc->mode == WM_RADIALCONTROL_STRENGTH ? (rc->value + 0.5) : 1; - - if(rc->mode == WM_RADIALCONTROL_ANGLE) { - glRotatef(angle, 0, 0, 1); - fdrawline(0, 0, WM_RADIAL_CONTROL_DISPLAY_SIZE, 0); - } + if(rc->mode == WM_RADIALCONTROL_ANGLE) { + glRotatef(angle, 0, 0, 1); + } + if (rc->tex) { glBindTexture(GL_TEXTURE_2D, rc->tex); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); @@ -2645,7 +2664,7 @@ static void wm_radial_control_paint(bContext *C, int x, int y, void *customdata) glEnable(GL_TEXTURE_2D); glBegin(GL_QUADS); - glColor4f(0,0,0, str); + glColor4f(U.sculpt_paint_overlay_col[0],U.sculpt_paint_overlay_col[1],U.sculpt_paint_overlay_col[2], str); glTexCoord2f(0,0); glVertex2f(-r3, -r3); glTexCoord2f(1,0); @@ -2658,11 +2677,20 @@ static void wm_radial_control_paint(bContext *C, int x, int y, void *customdata) glDisable(GL_TEXTURE_2D); } - glColor4ub(255, 255, 255, 128); + if(rc->mode == WM_RADIALCONTROL_ANGLE) { + glColor4f(col[0], col[1], col[2], 0.5f); + glEnable(GL_LINE_SMOOTH); + glRotatef(-angle, 0, 0, 1); + fdrawline(0, 0, WM_RADIAL_CONTROL_DISPLAY_SIZE, 0); + glRotatef(angle, 0, 0, 1); + fdrawline(0, 0, WM_RADIAL_CONTROL_DISPLAY_SIZE, 0); + glDisable(GL_LINE_SMOOTH); + } + + glColor4f(col[0], col[1], col[2], 0.5f); glutil_draw_lined_arc(0.0, M_PI*2.0, r1, 40); glutil_draw_lined_arc(0.0, M_PI*2.0, r2, 40); glDisable(GL_BLEND); - glDisable( GL_LINE_SMOOTH ); glPopMatrix(); } @@ -2674,6 +2702,7 @@ int WM_radial_control_modal(bContext *C, wmOperator *op, wmEvent *event) float dist; double new_value = RNA_float_get(op->ptr, "new_value"); int ret = OPERATOR_RUNNING_MODAL; + float initial_value = RNA_float_get(op->ptr, "initial_value"); mode = RNA_int_get(op->ptr, "mode"); RNA_int_get_array(op->ptr, "initial_mouse", initial_mouse); @@ -2682,6 +2711,16 @@ int WM_radial_control_modal(bContext *C, wmOperator *op, wmEvent *event) case MOUSEMOVE: delta[0]= initial_mouse[0] - event->x; delta[1]= initial_mouse[1] - event->y; + + //if (mode == WM_RADIALCONTROL_SIZE) + // delta[0]+= initial_value; + //else if(mode == WM_RADIALCONTROL_STRENGTH) + // delta[0]+= WM_RADIAL_CONTROL_DISPLAY_SIZE * (1 - initial_value); + //else if(mode == WM_RADIALCONTROL_ANGLE) { + // delta[0]+= WM_RADIAL_CONTROL_DISPLAY_SIZE * cos(initial_value*M_PI/180.0f); + // delta[1]+= WM_RADIAL_CONTROL_DISPLAY_SIZE * sin(initial_value*M_PI/180.0f); + //} + dist= sqrt(delta[0]*delta[0]+delta[1]*delta[1]); if(mode == WM_RADIALCONTROL_SIZE) @@ -2728,6 +2767,11 @@ int WM_radial_control_modal(bContext *C, wmOperator *op, wmEvent *event) ED_region_tag_redraw(CTX_wm_region(C)); + //if (ret != OPERATOR_RUNNING_MODAL) { + // wmWindow *win = CTX_wm_window(C); + // WM_cursor_restore(win); + //} + return ret; } @@ -2735,10 +2779,15 @@ int WM_radial_control_modal(bContext *C, wmOperator *op, wmEvent *event) int WM_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *event) { wmRadialControl *rc = MEM_callocN(sizeof(wmRadialControl), "radial control"); + wmWindow *win = CTX_wm_window(C); int mode = RNA_int_get(op->ptr, "mode"); float initial_value = RNA_float_get(op->ptr, "initial_value"); + //float initial_size = RNA_float_get(op->ptr, "initial_size"); int mouse[2] = {event->x, event->y}; + //if (initial_size == 0) + // initial_size = WM_RADIAL_CONTROL_DISPLAY_SIZE; + if(mode == WM_RADIALCONTROL_SIZE) { rc->max_value = 200; mouse[0]-= initial_value; @@ -2775,6 +2824,8 @@ int WM_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *event) rc->cursor = WM_paint_cursor_activate(CTX_wm_manager(C), op->type->poll, wm_radial_control_paint, op->customdata); + //WM_cursor_modal(win, CURSOR_NONE); + /* add modal handler */ WM_event_add_modal_handler(C, op); diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c index add9ac05189..4599f8ff17b 100644 --- a/source/blenderplayer/bad_level_call_stubs/stubs.c +++ b/source/blenderplayer/bad_level_call_stubs/stubs.c @@ -36,12 +36,14 @@ struct ARegion; struct ARegionType; struct Base; +struct Brush; struct bNodeTree; struct CSG_FaceIteratorDescriptor; struct CSG_VertexIteratorDescriptor; struct ColorBand; struct CurveMapping; struct EditBone; +struct EditFace; struct EditMesh; struct ID; struct FCurve; @@ -54,16 +56,20 @@ struct LOD_Decimation_Info; struct MTex; struct Main; struct Material; +struct MCol; struct MenuType; struct Mesh; struct ModifierData; +struct MultiresModifierData; struct NodeBlurData; struct Object; +struct PBVHNode; struct Render; struct RenderEngine; struct RenderLayer; struct RenderResult; struct ScrArea; +struct SculptSession; struct ShadeInput; struct ShadeResult; struct SpaceImage; @@ -375,6 +381,24 @@ void smoke_get_index(void) {return;} void smoke_step(void) {return;} */ +/* sculpt */ +/* + void ED_sculpt_force_update(struct bContext *C) {} +struct SculptUndoNode *sculpt_undo_push_node(struct SculptSession *ss, struct PBVHNode *node) {return (struct SculptUndoNode *)NULL;} +void sculpt_undo_push_end(void) {} +void sculpt_undo_push_begin(char *name) {} +struct SculptUndoNode *sculpt_undo_get_node(struct PBVHNode *node) {return (struct SculptUndoNode *) NULL;} +struct MultiresModifierData *sculpt_multires_active(struct Scene *scene, struct Object *ob) {return (struct MultiresModifierData *) NULL;} +int sculpt_modifiers_active(struct Scene *scene, struct Object *ob) {return 0;} +*/ +int sculpt_get_brush_size(struct Brush *brush) {return 0;} +void sculpt_set_brush_size(struct Brush *brush, int size) {} +int sculpt_get_lock_brush_size(struct Brush *brush){ return 0;} +float sculpt_get_brush_unprojected_radius(struct Brush *brush){return 0.0f;} +void sculpt_set_brush_unprojected_radius(struct Brush *brush, float unprojected_radius){} +float sculpt_get_brush_alpha(struct Brush *brush){return 0.0f;} +void sculpt_set_brush_alpha(struct Brush *brush, float alpha){} + char blender_path[] = ""; /* CSG */ From 267c286091d84cec17bfb6eb392699a4f2018a5b Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 14 Jul 2010 14:31:27 +0000 Subject: [PATCH 463/674] Fix compile error after merge, gpu_buffers.h -> GPU_buffers.h. --- source/blender/gpu/intern/gpu_draw.c | 1 - 1 file changed, 1 deletion(-) diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c index 14068fe5f47..488eea40500 100644 --- a/source/blender/gpu/intern/gpu_draw.c +++ b/source/blender/gpu/intern/gpu_draw.c @@ -69,7 +69,6 @@ #include "GPU_draw.h" #include "GPU_extensions.h" #include "GPU_material.h" -#include "gpu_buffers.h" #include "smoke_API.h" From 46f89336d644fd45d1960465637f67d0918a94bd Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 14 Jul 2010 14:56:33 +0000 Subject: [PATCH 464/674] fix for autocomp., was raising an error when autocompleating functions defined in the console because their file wasnt found (which is correct in this case). --- release/scripts/modules/console/complete_calltip.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/modules/console/complete_calltip.py b/release/scripts/modules/console/complete_calltip.py index c4687b4f10b..87fac9f4c07 100644 --- a/release/scripts/modules/console/complete_calltip.py +++ b/release/scripts/modules/console/complete_calltip.py @@ -124,7 +124,7 @@ def get_argspec(func, strip_self=True, doc=None, source=None): if source is None: try: source = inspect.getsource(func) - except TypeError: + except (TypeError, IOError): source = '' if source: match = re.search(DEF_SOURCE % func_name, source, RE_FLAG) From 18c82ce390f017baff8fd3020a189512e980c7a9 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Wed, 14 Jul 2010 16:38:09 +0000 Subject: [PATCH 465/674] Make SConstruct look in build_files/scons/tools and import from there, so no more 'import tools.Blender'. This fixes problem after change to this new location, but with .pyc files still lingering in old tools/ directory that still got imported due to syspath form. --- SConstruct | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/SConstruct b/SConstruct index 09ada7d7f70..b11df1b4c67 100644 --- a/SConstruct +++ b/SConstruct @@ -47,19 +47,18 @@ import re from tempfile import mkdtemp # needed for importing tools -sys.path.append(os.path.join(".", "build_files", "scons")) +sys.path.append(os.path.join(".", "build_files", "scons", "tools")) -import tools.Blender -import tools.btools -import tools.bcolors +import Blender +import btools +import bcolors EnsureSConsVersion(1,0,0) -BlenderEnvironment = tools.Blender.BlenderEnvironment -btools = tools.btools -B = tools.Blender +BlenderEnvironment = Blender.BlenderEnvironment +B = Blender -VERSION = tools.btools.VERSION # This is used in creating the local config directories +VERSION = btools.VERSION # This is used in creating the local config directories ### globals ### platform = sys.platform From fe958e647fe8caea6f764c4ab7192b95ec3d2a07 Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Wed, 14 Jul 2010 17:27:56 +0000 Subject: [PATCH 466/674] SVN maintenance. --- source/blender/editors/sculpt_paint/sculpt_undo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/sculpt_paint/sculpt_undo.c b/source/blender/editors/sculpt_paint/sculpt_undo.c index 303a7686a96..e4121c9c76a 100644 --- a/source/blender/editors/sculpt_paint/sculpt_undo.c +++ b/source/blender/editors/sculpt_paint/sculpt_undo.c @@ -1,5 +1,5 @@ /* - * $Id: sculpt.c 29425 2010-06-12 15:05:19Z jwilkins $ + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * From 8e3a9634a3dd939225d1424e0fd97b3d45746503 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 14 Jul 2010 17:47:58 +0000 Subject: [PATCH 467/674] Change to text3d: When back or front is enabled, the bevel rim on the other side is not created anymore, just as the back/front filling faces are not created when disabled. when both are off the behavior is unchanged. This is needed when rendering alpha text so its possible to have a single layer of faces but use the bevel option to make text thicker. adding a rim on the back when back is disabled also doesnt make much sense IMHO. minor python edits too. --- doc/blender.1.py | 2 +- release/scripts/op/console_python.py | 2 +- source/blender/blenkernel/intern/curve.c | 99 ++++++++++--------- .../blender/python/doc/examples/bpy.data.py | 3 +- 4 files changed, 56 insertions(+), 50 deletions(-) diff --git a/doc/blender.1.py b/doc/blender.1.py index 576b58758cd..05b491cf21e 100644 --- a/doc/blender.1.py +++ b/doc/blender.1.py @@ -53,7 +53,7 @@ blender_version = blender_version.split("Build")[0] date_string = datetime.date.fromtimestamp(time.time()).strftime("%B %d, %Y") -filepath = __file__.replace(".py", "") +filepath = os.path.splitext(__file__)[0] + ".1" file = open(filepath, "w") diff --git a/release/scripts/op/console_python.py b/release/scripts/op/console_python.py index 83a3130f80e..d3a90cb7acc 100644 --- a/release/scripts/op/console_python.py +++ b/release/scripts/op/console_python.py @@ -68,7 +68,7 @@ def get_console(console_id): stderr = io.StringIO() else: namespace = {'__builtins__': __builtins__, 'bpy': bpy} - console = InteractiveConsole(namespace) + console = InteractiveConsole(locals=namespace, filename="") import io stdout = io.StringIO() diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index 2e645592229..aa7b44aecda 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -1318,30 +1318,33 @@ void makebevelcurve(Scene *scene, Object *ob, ListBase *disp, int forRender) short dnr; /* bevel now in three parts, for proper vertex normals */ - /* part 1 */ - dnr= nr= 2+ cu->bevresol; - if( (cu->flag & (CU_FRONT|CU_BACK))==0) - nr= 3+ 2*cu->bevresol; - - dl= MEM_callocN(sizeof(DispList), "makebevelcurve p1"); - dl->verts= MEM_mallocN(nr*3*sizeof(float), "makebevelcurve p1"); - BLI_addtail(disp, dl); - dl->type= DL_SEGM; - dl->parts= 1; - dl->flag= DL_BACK_CURVE; - dl->nr= nr; + /* part 1, back */ - /* half a circle */ - fp= dl->verts; - dangle= (0.5*M_PI/(dnr-1)); - angle= -(nr-1)*dangle; - - for(a=0; aext2)); - fp[2]= (float)(sin(angle)*(cu->ext2)) - cu->ext1; - angle+= dangle; - fp+= 3; + if((cu->flag & CU_BACK) || !(cu->flag & CU_FRONT)) { + dnr= nr= 2+ cu->bevresol; + if( (cu->flag & (CU_FRONT|CU_BACK))==0) + nr= 3+ 2*cu->bevresol; + + dl= MEM_callocN(sizeof(DispList), "makebevelcurve p1"); + dl->verts= MEM_mallocN(nr*3*sizeof(float), "makebevelcurve p1"); + BLI_addtail(disp, dl); + dl->type= DL_SEGM; + dl->parts= 1; + dl->flag= DL_BACK_CURVE; + dl->nr= nr; + + /* half a circle */ + fp= dl->verts; + dangle= (0.5*M_PI/(dnr-1)); + angle= -(nr-1)*dangle; + + for(a=0; aext2)); + fp[2]= (float)(sin(angle)*(cu->ext2)) - cu->ext1; + angle+= dangle; + fp+= 3; + } } /* part 2, sidefaces */ @@ -1374,30 +1377,32 @@ void makebevelcurve(Scene *scene, Object *ob, ListBase *disp, int forRender) } } - /* part 3 */ - dnr= nr= 2+ cu->bevresol; - if( (cu->flag & (CU_FRONT|CU_BACK))==0) - nr= 3+ 2*cu->bevresol; - - dl= MEM_callocN(sizeof(DispList), "makebevelcurve p3"); - dl->verts= MEM_mallocN(nr*3*sizeof(float), "makebevelcurve p3"); - BLI_addtail(disp, dl); - dl->type= DL_SEGM; - dl->flag= DL_FRONT_CURVE; - dl->parts= 1; - dl->nr= nr; - - /* half a circle */ - fp= dl->verts; - angle= 0.0; - dangle= (0.5*M_PI/(dnr-1)); - - for(a=0; aext2)); - fp[2]= (float)(sin(angle)*(cu->ext2)) + cu->ext1; - angle+= dangle; - fp+= 3; + /* part 3, front */ + if((cu->flag & CU_FRONT) || !(cu->flag & CU_BACK)) { + dnr= nr= 2+ cu->bevresol; + if( (cu->flag & (CU_FRONT|CU_BACK))==0) + nr= 3+ 2*cu->bevresol; + + dl= MEM_callocN(sizeof(DispList), "makebevelcurve p3"); + dl->verts= MEM_mallocN(nr*3*sizeof(float), "makebevelcurve p3"); + BLI_addtail(disp, dl); + dl->type= DL_SEGM; + dl->flag= DL_FRONT_CURVE; + dl->parts= 1; + dl->nr= nr; + + /* half a circle */ + fp= dl->verts; + angle= 0.0; + dangle= (0.5*M_PI/(dnr-1)); + + for(a=0; aext2)); + fp[2]= (float)(sin(angle)*(cu->ext2)) + cu->ext1; + angle+= dangle; + fp+= 3; + } } } } diff --git a/source/blender/python/doc/examples/bpy.data.py b/source/blender/python/doc/examples/bpy.data.py index 0c2a463c01b..fc1145a523f 100644 --- a/source/blender/python/doc/examples/bpy.data.py +++ b/source/blender/python/doc/examples/bpy.data.py @@ -18,7 +18,8 @@ if "Cube" in bpy.data.meshes: # write images into a file next to the blend -file = open(bpy.data.filepath.replace(".blend", ".txt"), 'w') +import os +file = open(os.path.splitext(bpy.data.filepath)[0] + ".txt", 'w') for image in bpy.data.images: file.write("%s %dx%d\n" % (image.filepath, image.size[0], image.size[1])) From a6a646cf5bc18848ea7d51cbe9e88575999bc831 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Wed, 14 Jul 2010 18:19:34 +0000 Subject: [PATCH 468/674] Scons/darwin (OSX): blender.app package is now created correctly in the install folder --- build_files/scons/tools/Blender.py | 36 ++++++++++++++++-------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/build_files/scons/tools/Blender.py b/build_files/scons/tools/Blender.py index 1195b00b39d..7f5ce4767e3 100644 --- a/build_files/scons/tools/Blender.py +++ b/build_files/scons/tools/Blender.py @@ -498,7 +498,9 @@ def AppIt(target=None, source=None, env=None): builddir, b = os.path.split(a) libdir = env['LCGDIR'][1:] osxarch = env['MACOSX_ARCHITECTURE'] + installdir = env['BF_INSTALLDIR'] print("compiled architecture: %s"%(osxarch)) + print("Installing to %s"%(installdir)) if libdir == '../lib/darwin-9.x.universal': python_zip = 'python_' + osxarch + '.zip' # set specific python_arch.zip else: @@ -513,45 +515,45 @@ def AppIt(target=None, source=None, env=None): sourcedir = bldroot + '/source/darwin/%s.app'%binary sourceinfo = bldroot + "/source/darwin/%s.app/Contents/Info.plist"%binary - targetinfo = builddir +'/' + "%s.app/Contents/Info.plist"%binary - cmd = builddir + '/' +'%s.app'%binary + targetinfo = installdir +'/' + "%s.app/Contents/Info.plist"%binary + cmd = installdir + '/' +'%s.app'%binary if os.path.isdir(cmd): shutil.rmtree(cmd) shutil.copytree(sourcedir, cmd) cmd = "cat %s | sed s/VERSION/`cat release/VERSION`/ | sed s/DATE/`date +'%%Y-%%b-%%d'`/ > %s"%(sourceinfo,targetinfo) commands.getoutput(cmd) - cmd = 'cp %s/%s %s/%s.app/Contents/MacOS/%s'%(builddir, binary,builddir, binary, binary) + cmd = 'cp %s/%s %s/%s.app/Contents/MacOS/%s'%(builddir, binary,installdir, binary, binary) commands.getoutput(cmd) - cmd = 'mkdir %s/%s.app/Contents/MacOS/%s/'%(builddir, binary, VERSION) + cmd = 'mkdir %s/%s.app/Contents/MacOS/%s/'%(installdir, binary, VERSION) # print cmd commands.getoutput(cmd) - cmd = builddir + '/%s.app/Contents/MacOS/%s'%(binary,VERSION) + cmd = installdir + '/%s.app/Contents/MacOS/%s'%(binary,VERSION) shutil.copy(bldroot + '/bin/.blender/.bfont.ttf', cmd) shutil.copy(bldroot + '/bin/.blender/.Blanguages', cmd) - cmd = 'cp -R %s/bin/%s/locale %s/%s.app/Contents/Resources/'%(bldroot,VERSION,builddir,binary) + cmd = 'cp -R %s/bin/%s/locale %s/%s.app/Contents/Resources/'%(bldroot,VERSION,installdir,binary) commands.getoutput(cmd) - cmd = 'cp -R %s/bin/%s/locale %s/%s.app/Contents/MacOS/%s/'%(bldroot,VERSION,builddir,binary,VERSION) + cmd = 'cp -R %s/bin/%s/locale %s/%s.app/Contents/MacOS/%s/'%(bldroot,VERSION,installdir,binary,VERSION) commands.getoutput(cmd) - cmd = 'cp %s/bin/%s/.Blanguages %s/%s.app/Contents/Resources/'%(bldroot,VERSION,builddir,binary) + cmd = 'cp %s/bin/%s/.Blanguages %s/%s.app/Contents/Resources/'%(bldroot,VERSION,installdir,binary) commands.getoutput(cmd) - cmd = 'mkdir %s/%s.app/Contents/MacOS/%s/python/'%(builddir,binary, VERSION) + cmd = 'mkdir %s/%s.app/Contents/MacOS/%s/python/'%(installdir,binary, VERSION) commands.getoutput(cmd) - cmd = 'unzip -q %s/release/%s -d %s/%s.app/Contents/MacOS/%s/python/'%(libdir,python_zip,builddir,binary,VERSION) + cmd = 'unzip -q %s/release/%s -d %s/%s.app/Contents/MacOS/%s/python/'%(libdir,python_zip,installdir,binary,VERSION) commands.getoutput(cmd) - cmd = 'cp -R %s/release/scripts %s/%s.app/Contents/MacOS/%s/'%(bldroot,builddir,binary,VERSION) + cmd = 'cp -R %s/release/scripts %s/%s.app/Contents/MacOS/%s/'%(bldroot,installdir,binary,VERSION) commands.getoutput(cmd) - cmd = 'cp -R %s/release/ui %s/%s.app/Contents/MacOS/%s/'%(bldroot,builddir,binary,VERSION) + cmd = 'cp -R %s/release/ui %s/%s.app/Contents/MacOS/%s/'%(bldroot,installdir,binary,VERSION) commands.getoutput(cmd) - cmd = 'cp -R %s/release/io %s/%s.app/Contents/MacOS/%s/'%(bldroot,builddir,binary,VERSION) + cmd = 'cp -R %s/release/io %s/%s.app/Contents/MacOS/%s/'%(bldroot,installdir,binary,VERSION) commands.getoutput(cmd) - cmd = 'chmod +x %s/%s.app/Contents/MacOS/%s'%(builddir,binary, binary) + cmd = 'chmod +x %s/%s.app/Contents/MacOS/%s'%(installdir,binary, binary) commands.getoutput(cmd) - cmd = 'find %s/%s.app -name .svn -prune -exec rm -rf {} \;'%(builddir, binary) + cmd = 'find %s/%s.app -name .svn -prune -exec rm -rf {} \;'%(installdir, binary) commands.getoutput(cmd) - cmd = 'find %s/%s.app -name .DS_Store -exec rm -rf {} \;'%(builddir, binary) + cmd = 'find %s/%s.app -name .DS_Store -exec rm -rf {} \;'%(installdir, binary) commands.getoutput(cmd) - cmd = 'find %s/%s.app -name __MACOSX -exec rm -rf {} \;'%(builddir, binary) + cmd = 'find %s/%s.app -name __MACOSX -exec rm -rf {} \;'%(installdir, binary) commands.getoutput(cmd) # extract copy system python, be sure to update other build systems From d4b04fac044b2fe0b6295f271a78c73d57ef0533 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 14 Jul 2010 18:22:39 +0000 Subject: [PATCH 469/674] partial fix [#22846] GCC 4.4.1 support in Windows Still getting error: Warning: .drectve `/DEFAULTLIB:"LIBCMT" /DEFAULTLIB:"OLDNAMES" ' unrecognized --- CMakeLists.txt | 6 ++++++ source/blender/windowmanager/CMakeLists.txt | 4 ---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c14bdd6b9e..70ec8952ce1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -628,6 +628,12 @@ IF(WIN32) SET(WITH_JACK OFF) ENDIF(WITH_JACK) + IF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) + SET(PLATFORM_CFLAGS " -msse -msse2 ${PLATFORM_CFLAGS}") + ADD_DEFINITIONS(-D__SSE__) + ADD_DEFINITIONS(-D__MMX__) + ENDIF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) + ENDIF(MSVC) ENDIF(WIN32) diff --git a/source/blender/windowmanager/CMakeLists.txt b/source/blender/windowmanager/CMakeLists.txt index 6db32f8bba9..ce7474af477 100644 --- a/source/blender/windowmanager/CMakeLists.txt +++ b/source/blender/windowmanager/CMakeLists.txt @@ -49,10 +49,6 @@ IF(WITH_INTERNATIONAL) ADD_DEFINITIONS(-DINTERNATIONAL) ENDIF(WITH_INTERNATIONAL) -IF(WITH_OPENEXR) - ADD_DEFINITIONS(-DWITH_OPENEXR) -ENDIF(WITH_OPENEXR) - IF(WITH_OPENCOLLADA) ADD_DEFINITIONS(-DWITH_COLLADA) ENDIF(WITH_OPENCOLLADA) From fd8380da934d5de1f9b7b84f18632ceaf8f21389 Mon Sep 17 00:00:00 2001 From: Jason Wilkins Date: Wed, 14 Jul 2010 20:04:02 +0000 Subject: [PATCH 470/674] * removed unneeded autosmooth_overlap, forgot to remove before merge * replaced omp critical sections, code either crashes or does not function correctly without them --- source/blender/editors/sculpt_paint/sculpt.c | 22 ++++++++------------ 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index eee0d520747..fcc4fbab9bd 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -229,8 +229,6 @@ typedef struct StrokeCache { int alt_smooth; float plane_trim_squared; - - float autosmooth_overlap; } StrokeCache; /* ===== OPENGL ===== @@ -580,7 +578,7 @@ static float calc_symmetry_feather(Sculpt *sd, StrokeCache* cache) /* Return modified brush strength. Includes the direction of the brush, positive values pull vertices, negative values push. Uses tablet pressure and a special multiplier found experimentally to scale the strength factor. */ -static float brush_strength(Sculpt *sd, StrokeCache *cache, float feather, float overlap) +static float brush_strength(Sculpt *sd, StrokeCache *cache, float feather) { Brush *brush = paint_brush(&sd->paint); @@ -590,6 +588,8 @@ static float brush_strength(Sculpt *sd, StrokeCache *cache, float feather, float float pressure = brush->flag & BRUSH_ALPHA_PRESSURE ? cache->pressure : 1; float pen_flip = cache->pen_flip ? -1 : 1; float invert = cache->invert ? -1 : 1; + float accum = integrate_overlap(brush); + float overlap = (brush->flag & BRUSH_SPACE_ATTEN && brush->flag & BRUSH_SPACE && !(brush->flag & BRUSH_ANCHORED)) && (brush->spacing < 100) ? 1.0f/accum : 1; // spacing is integer percentage of radius, divide by 50 to get normalized diameter float flip = dir * invert * pen_flip; switch(brush->sculpt_tool){ @@ -912,7 +912,7 @@ static void calc_area_normal(Sculpt *sd, SculptSession *ss, float an[3], PBVHNod BLI_pbvh_vertex_iter_end; } - //#pragma omp critical + #pragma omp critical { add_v3_v3(an, private_an); add_v3_v3(out_flip, private_out_flip); @@ -1065,7 +1065,7 @@ static void do_multires_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode *no BLI_pbvh_node_get_grids(ss->pbvh, node, &grid_indices, &totgrid, NULL, &gridsize, &griddata, &gridadj); - //#pragma omp critical + #pragma omp critical { tmpgrid= MEM_mallocN(sizeof(float)*3*gridsize*gridsize, "tmpgrid"); tmprow= MEM_mallocN(sizeof(float)*3*gridsize, "tmprow"); @@ -1150,7 +1150,7 @@ static void do_multires_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode *no } } - //#pragma omp critical + #pragma omp critical { MEM_freeN(tmpgrid); MEM_freeN(tmprow); @@ -2403,10 +2403,10 @@ static void do_brush_action(Sculpt *sd, SculptSession *ss, Brush *brush) if (brush->sculpt_tool != SCULPT_TOOL_SMOOTH && brush->autosmooth_factor > 0) { if (brush->flag & BRUSH_INVERSE_SMOOTH_PRESSURE) { - smooth(sd, ss, nodes, totnode, brush->autosmooth_factor*(1-ss->cache->pressure)*ss->cache->autosmooth_overlap); + smooth(sd, ss, nodes, totnode, brush->autosmooth_factor*(1-ss->cache->pressure)); } else { - smooth(sd, ss, nodes, totnode, brush->autosmooth_factor*ss->cache->autosmooth_overlap); + smooth(sd, ss, nodes, totnode, brush->autosmooth_factor); } } @@ -2580,12 +2580,8 @@ static void do_symmetrical_brush_actions(Sculpt *sd, SculptSession *ss) int i; float feather = calc_symmetry_feather(sd, ss->cache); - float accum = integrate_overlap(brush); - float overlap = (brush->flag & BRUSH_SPACE_ATTEN && brush->flag & BRUSH_SPACE && !(brush->flag & BRUSH_ANCHORED)) && (brush->spacing < 100) ? 1.0f/accum : 1; // spacing is integer percentage of radius, divide by 50 to get normalized diameter - ss->cache->autosmooth_overlap = overlap; - - cache->bstrength= brush_strength(sd, cache, feather, overlap); + cache->bstrength= brush_strength(sd, cache, feather); cache->symmetry= symm; From 7de6a8e1aceaa109cd4c4f9274b25303c7c8a2ba Mon Sep 17 00:00:00 2001 From: Jason Wilkins Date: Wed, 14 Jul 2010 20:08:30 +0000 Subject: [PATCH 471/674] * Accidentally bumped file subversion after sculpt merge. Perhaps this should be done, but not without permission. My comment even said not to merge it :) --- 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 5936805765d..baec6ecfe6a 100644 --- a/source/blender/blenkernel/BKE_blender.h +++ b/source/blender/blenkernel/BKE_blender.h @@ -45,7 +45,7 @@ struct Scene; struct Main; #define BLENDER_VERSION 252 -#define BLENDER_SUBVERSION 6 // XXX: this shouldn't be merged with trunk, this is so Sculpt branch can detect old files +#define BLENDER_SUBVERSION 5 #define BLENDER_MINVERSION 250 #define BLENDER_MINSUBVERSION 0 From e25c0445f51122af4de9715946c9d5b6fd51d21d Mon Sep 17 00:00:00 2001 From: Jason Wilkins Date: Wed, 14 Jul 2010 20:16:04 +0000 Subject: [PATCH 472/674] * new settings for brushes in do_versions had wrong subversionfile --- source/blender/blenloader/intern/readfile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 7b29ab2a666..ea05352a73c 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -11020,7 +11020,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) brush->rate = 0.1f; /* New Settings */ - if (main->versionfile < 252 || (main->versionfile == 252 && main->subversionfile < 6)) { + if (main->versionfile < 252 || (main->versionfile == 252 && main->subversionfile < 5)) { brush->flag |= BRUSH_SPACE_ATTEN; // explicitly enable adaptive space // spacing was originally in pixels, convert it to percentage for new version From eb4795be57b9f56f2b1679310b2bf1e092e2c70a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 14 Jul 2010 20:19:53 +0000 Subject: [PATCH 473/674] mistake in recent commit, set all axis values. --- source/blender/editors/sculpt_paint/paint_stroke.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c index e373a254c3e..7b8d7c4b7ef 100644 --- a/source/blender/editors/sculpt_paint/paint_stroke.c +++ b/source/blender/editors/sculpt_paint/paint_stroke.c @@ -243,8 +243,8 @@ static void make_snap(Snapshot* snap, Brush* brush, ViewContext* vc) } else { snap->brush_map_mode = -1; - snap->ofs[0]= snap->ofs[0]= snap->ofs[0]= -1; - snap->size[0]= snap->size[0]= snap->size[0]= -1; + snap->ofs[0]= snap->ofs[1]= snap->ofs[2]= -1; + snap->size[0]= snap->size[1]= snap->size[2]= -1; snap->rot = -1; } From 1bb789956d42dc3e4a222a28b95a956ff8c97742 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 14 Jul 2010 20:26:46 +0000 Subject: [PATCH 474/674] =?UTF-8?q?CMake=20patch=20from=20Ralf=20H=C3=B6lz?= =?UTF-8?q?emer=20(cheleb)=20[#22849]=20Fix=20cmake=20install=20target=20o?= =?UTF-8?q?n=20linux=20---=20from=20the=20tracker=20---=20This=20patch=20f?= =?UTF-8?q?ixes=20the=20install=20target=20for=20the=20linux=20platform.?= =?UTF-8?q?=20Since=20the=20new=20configuration=20path=20changes=20are=20i?= =?UTF-8?q?n=20effect,=20files=20have=20to=20be=20installed=20in=20the=20c?= =?UTF-8?q?orrect=20places=20instead=20of=20just=20copying=20the=20local?= =?UTF-8?q?=20installation=20to=20$PREFIX/share/blender.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It also provides a new macro to determine the correct blender version values. Changes in this patch include: - the .desktop menu file is installed in $PREFIX/share/applications and points to the svg icon instead of a png one, which is also installed in $PREFIX/share/pixmaps - docs are installed in $PREFIX/share/doc/blender - scripts are installed in in $PREFIX/share/blender/x.xx/ - locales are installed in in $PREFIX/share/blender/x.xx/datafiles - a new cmake macro determines and sets the correct values for BLENDER_VERSION_MAJOR, BLENDER_VERSION_MINOR, BLENDER_SUBVERSION, BLENDER_VERSION, BLENDER_MINVERSION_MAJOR, BLENDER_MINVERSION_MINOR, BLENDER_MINSUBVERSION and BLENDER_MINVERSION by parsing source/blender/blenkernel/BKE_blender.h and calculating major/minor values. This replaces the hardcoded value in the top CMakeLists file and is used by all platforms. --- CMakeLists.txt | 6 ++---- build_files/cmake/macros.cmake | 33 +++++++++++++++++++++++++++++ release/freedesktop/blender.desktop | 2 +- source/creator/CMakeLists.txt | 28 +++++++++++++++++++++--- 4 files changed, 61 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 70ec8952ce1..bec1353a8cf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,10 +55,6 @@ PROJECT(Blender) SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) SET(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib) -# Note! - Could create this from the blender version string -# ...but thats quite involved, make sure this matches the blender version. -SET(BLENDER_VERSION 2.5) - #----------------------------------------------------------------------------- # Load some macros. INCLUDE(build_files/cmake/macros.cmake) @@ -66,6 +62,8 @@ INCLUDE(build_files/cmake/macros.cmake) #----------------------------------------------------------------------------- # Set default config options +GET_BLENDER_VERSION() + # Blender internal features OPTION(WITH_INTERNATIONAL "Enable I18N (International fonts and text)" ON) OPTION(WITH_LCMS "Enable color correction with lcms" OFF) diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index aec86f7467a..84e6b788dc0 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -198,3 +198,36 @@ MACRO(TEST_SSE_SUPPORT) SUPPORT_SSE_BUILD) ENDMACRO(TEST_SSE_SUPPORT) +MACRO(GET_BLENDER_VERSION) + FILE(READ ${CMAKE_SOURCE_DIR}/source/blender/blenkernel/BKE_blender.h CONTENT) + STRING(REGEX REPLACE "\n" ";" CONTENT "${CONTENT}") + STRING(REGEX REPLACE "\t" ";" CONTENT "${CONTENT}") + STRING(REGEX REPLACE " " ";" CONTENT "${CONTENT}") + + FOREACH(ITEM ${CONTENT}) + IF(LASTITEM MATCHES "BLENDER_VERSION") + MATH(EXPR BLENDER_VERSION_MAJOR "${ITEM} / 100") + MATH(EXPR BLENDER_VERSION_MINOR "${ITEM} % 100") + SET(BLENDER_VERSION "${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}") + ENDIF(LASTITEM MATCHES "BLENDER_VERSION") + + IF(LASTITEM MATCHES "BLENDER_SUBVERSION") + SET(BLENDER_SUBVERSION ${ITEM}) + ENDIF(LASTITEM MATCHES "BLENDER_SUBVERSION") + + IF(LASTITEM MATCHES "BLENDER_MINVERSION") + MATH(EXPR BLENDER_MINVERSION_MAJOR "${ITEM} / 100") + MATH(EXPR BLENDER_MINVERSION_MINOR "${ITEM} % 100") + SET(BLENDER_MINVERSION "${BLENDER_MINVERSION_MAJOR}.${BLENDER_MINVERSION_MINOR}") + ENDIF(LASTITEM MATCHES "BLENDER_MINVERSION") + + IF(LASTITEM MATCHES "BLENDER_MINSUBVERSION") + SET(BLENDER_MINSUBVERSION ${ITEM}) + ENDIF(LASTITEM MATCHES "BLENDER_MINSUBVERSION") + + SET(LASTITEM ${ITEM}) + ENDFOREACH(ITEM ${CONTENT}) + + MESSAGE(STATUS "Version major: ${BLENDER_VERSION_MAJOR}, Version minor: ${BLENDER_VERSION_MINOR}, Subversion: ${BLENDER_SUBVERSION}, Version: ${BLENDER_VERSION}") + MESSAGE(STATUS "Minversion major: ${BLENDER_MINVERSION_MAJOR}, Minversion minor: ${BLENDER_MINVERSION_MINOR}, MinSubversion: ${BLENDER_MINSUBVERSION}, Minversion: ${BLENDER_MINVERSION}") +ENDMACRO(GET_BLENDER_VERSION) diff --git a/release/freedesktop/blender.desktop b/release/freedesktop/blender.desktop index 39e0e3afe8e..1069958f6f1 100644 --- a/release/freedesktop/blender.desktop +++ b/release/freedesktop/blender.desktop @@ -3,7 +3,7 @@ Encoding=UTF-8 Name=Blender Comment=3D modeling, animation, rendering and post-production Exec=blender -Icon=blender.png +Icon=blender.svg Terminal=false Type=Application Categories=Graphics;3DGraphics; diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 36fd67c85c6..e9e6c982fde 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -192,9 +192,31 @@ IF(WITH_INSTALL) ENDIF(WITH_GAMEENGINE AND WITH_PLAYER) INSTALL( - DIRECTORY ${TARGETDIR}/.blender/ - DESTINATION ${BLENDERPATH} - ) + FILES ${CMAKE_SOURCE_DIR}/release/freedesktop/blender.desktop + DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications + ) + INSTALL( + FILES ${CMAKE_SOURCE_DIR}/release/freedesktop/icons/scalable/blender.svg + DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps + ) + INSTALL( + DIRECTORY ${CMAKE_SOURCE_DIR}/release/text/ + DESTINATION ${CMAKE_INSTALL_PREFIX}/share/doc/blender + PATTERN ".svn" EXCLUDE + ) + INSTALL( + DIRECTORY ${CMAKE_SOURCE_DIR}/release/scripts/ + DESTINATION ${BLENDERPATH}/scripts + PATTERN ".svn" EXCLUDE + ) + IF(WITH_INTERNATIONAL) + INSTALL( + DIRECTORY ${CMAKE_SOURCE_DIR}/bin/.blender/locale/ + DESTINATION ${BLENDERPATH}/datafiles/locale + PATTERN ".svn" EXCLUDE + ) + ENDIF(WITH_INTERNATIONAL) + # end "make install" ENDIF(UNIX AND NOT APPLE) From 64875e9fda7bf0c78a535e9ea354c37d8f113019 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 14 Jul 2010 20:31:11 +0000 Subject: [PATCH 475/674] - change blend thumbnail loading function not to use goto's - fix for some warnings --- .../editors/interface/interface_templates.c | 2 +- source/blender/imbuf/intern/thumbs_blend.c | 125 +++++++++++------- .../windowmanager/intern/wm_operators.c | 4 +- 3 files changed, 77 insertions(+), 54 deletions(-) diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index cbe10496a72..f951def739f 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -197,7 +197,7 @@ static void id_search_cb(const bContext *C, void *arg_template, char *str, uiSea if (RNA_function_call(C, &reports, &ptr, func, &parms) == 0) { int* ret; - RNA_parameter_get_lookup(&parms, "ret", &ret); + RNA_parameter_get_lookup(&parms, "ret", (void **)&ret); if (!(*ret)) { RNA_parameter_list_free(&parms); diff --git a/source/blender/imbuf/intern/thumbs_blend.c b/source/blender/imbuf/intern/thumbs_blend.c index c5c853f0c93..2b55e87546a 100644 --- a/source/blender/imbuf/intern/thumbs_blend.c +++ b/source/blender/imbuf/intern/thumbs_blend.c @@ -37,54 +37,60 @@ /* extracts the thumbnail from between the 'REND' and the 'GLOB' * chunks of the header, dont use typical blend loader because its too slow */ -ImBuf *IMB_loadblend_thumb(const char *path) + +static ImBuf *loadblend_thumb(gzFile gzfile) { char buf[8]; int code= 0; char endian, pointer_size; char endian_switch; int len, im_len, x, y; - int *rect= NULL; + ImBuf *img= NULL; - gzFile gzfile; - - ImBuf *img; - - /* not necessarily a gzip */ - gzfile = gzopen(path, "rb"); - if (NULL == gzfile ) { - return NULL; - } - /* read the blend file header */ - if(gzread(gzfile, buf, 8) != 8) goto thumb_error; - if(strncmp(buf, "BLENDER", 7)) goto thumb_error; - - if(buf[7]=='-') pointer_size= 8; - else if(buf[7]=='_') pointer_size= 4; - else goto thumb_error; - + if(gzread(gzfile, buf, 8) != 8) + return NULL; + if(strncmp(buf, "BLENDER", 7)) + return NULL; + + if(buf[7]=='-') + pointer_size= 8; + else if(buf[7]=='_') + pointer_size= 4; + else + return NULL; + /* read the next 4 bytes, only need the first char, ignore the version */ /* endian and vertsion (ignored) */ - if(gzread(gzfile, buf, 4) != 4) goto thumb_error; - - if(buf[0]=='V') endian= B_ENDIAN; /* big: PPC */ - else if(buf[0]=='v') endian= L_ENDIAN; /* little: x86 */ - else goto thumb_error; + if(gzread(gzfile, buf, 4) != 4) + return NULL; + + if(buf[0]=='V') + endian= B_ENDIAN; /* big: PPC */ + else if(buf[0]=='v') + endian= L_ENDIAN; /* little: x86 */ + else + return NULL; while(gzread(gzfile, &code, sizeof(int)) == sizeof(int)) { endian_switch = ((ENDIAN_ORDER != endian)) ? 1 : 0; - - if(gzread(gzfile, buf, sizeof(int)) != sizeof(int)) goto thumb_error; + + if(gzread(gzfile, buf, sizeof(int)) != sizeof(int)) + return NULL; + len = *( (int *)((void *)buf) ); - if(endian_switch) SWITCH_INT(len); - + + if(endian_switch) + SWITCH_INT(len); + /* finally read the rest of the bhead struct, pointer and 2 ints */ - if(gzread(gzfile, buf, pointer_size) != pointer_size) goto thumb_error; - if(gzread(gzfile, buf, sizeof(int) * 2) != sizeof(int) * 2) goto thumb_error; + if(gzread(gzfile, buf, pointer_size) != pointer_size) + return NULL; + if(gzread(gzfile, buf, sizeof(int) * 2) != sizeof(int) * 2) + return NULL; + /* we dont actually care whats in the bhead */ - if (code==REND) { gzseek(gzfile, len, SEEK_CUR); /* skip to the next */ } @@ -92,40 +98,57 @@ ImBuf *IMB_loadblend_thumb(const char *path) break; } } - + /* using 'TEST' since new names segfault when loading in old blenders */ - if(code != TEST) goto thumb_error; - - if(gzread(gzfile, &x, sizeof(int)) != sizeof(int)) goto thumb_error; - if(gzread(gzfile, &y, sizeof(int)) != sizeof(int)) goto thumb_error; + if(code != TEST) + return NULL; + + if(gzread(gzfile, &x, sizeof(int)) != sizeof(int)) + return NULL; + if(gzread(gzfile, &y, sizeof(int)) != sizeof(int)) + return NULL; + len -= sizeof(int) * 2; - if(endian_switch) { SWITCH_INT(x); SWITCH_INT(y); } + if(endian_switch) { + SWITCH_INT(x); + SWITCH_INT(y); + } /* inconsistant image size, quit early */ im_len = x * y * sizeof(int); - if(im_len != len) goto thumb_error; + if(im_len != len) + return NULL; /* finally malloc and read the data */ - rect= MEM_mallocN(len, "imb_loadblend_thumb"); + img= IMB_allocImBuf(x, y, 32, IB_rect, 0); - if(gzread(gzfile, rect, len) != len) goto thumb_error; + if(gzread(gzfile, img->rect, len) != len) { + IMB_freeImBuf(img); + img= NULL; + } - /* read ok! */ - gzclose(gzfile); + return img; +} - img = IMB_allocImBuf(x, y, 32, IB_rect | IB_metadata, 0); +ImBuf *IMB_loadblend_thumb(const char *path) +{ + gzFile gzfile; - memcpy(img->rect, rect, im_len); + /* not necessarily a gzip */ + gzfile = gzopen(path, "rb"); - MEM_freeN(rect); - - return img; + if (NULL == gzfile ) { + return NULL; + } + else { + ImBuf *img= loadblend_thumb(gzfile); -thumb_error: - gzclose(gzfile); - if(rect) MEM_freeN(rect); - return NULL; + /* read ok! */ + gzclose(gzfile); + + return img; + } } /* add a fake passepartout overlay to a byte buffer, use for blend file thumbnails */ diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 78e1c7d87a3..09c11bcfda5 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -2611,7 +2611,7 @@ static void wm_radial_control_paint(bContext *C, int x, int y, void *customdata) ViewContext vc; - int hit = 0; + // int hit = 0; int flip; int sign; @@ -2779,7 +2779,7 @@ int WM_radial_control_modal(bContext *C, wmOperator *op, wmEvent *event) int WM_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *event) { wmRadialControl *rc = MEM_callocN(sizeof(wmRadialControl), "radial control"); - wmWindow *win = CTX_wm_window(C); + // wmWindow *win = CTX_wm_window(C); int mode = RNA_int_get(op->ptr, "mode"); float initial_value = RNA_float_get(op->ptr, "initial_value"); //float initial_size = RNA_float_get(op->ptr, "initial_size"); From dd3f9cff91be36c48d24a3d6124727ea83234a1c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 14 Jul 2010 20:52:04 +0000 Subject: [PATCH 476/674] patch from Goran Milovanovic for the BGE python api. camera.ortho_scale (use when in ortho mode only) (own previous commit incorrectly removed thumb metadata from new imbuf) --- source/blender/imbuf/intern/thumbs_blend.c | 2 +- source/gameengine/Ketsji/KX_Camera.cpp | 21 +++++++++++++++++++++ source/gameengine/Ketsji/KX_Camera.h | 2 ++ source/gameengine/PyDoc/bge.types.rst | 6 ++++++ 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/source/blender/imbuf/intern/thumbs_blend.c b/source/blender/imbuf/intern/thumbs_blend.c index 2b55e87546a..7f1c903e9de 100644 --- a/source/blender/imbuf/intern/thumbs_blend.c +++ b/source/blender/imbuf/intern/thumbs_blend.c @@ -121,7 +121,7 @@ static ImBuf *loadblend_thumb(gzFile gzfile) return NULL; /* finally malloc and read the data */ - img= IMB_allocImBuf(x, y, 32, IB_rect, 0); + img= IMB_allocImBuf(x, y, 32, IB_rect | IB_metadata, 0); if(gzread(gzfile, img->rect, len) != len) { IMB_freeImBuf(img); diff --git a/source/gameengine/Ketsji/KX_Camera.cpp b/source/gameengine/Ketsji/KX_Camera.cpp index bba3b2219ed..82786456589 100644 --- a/source/gameengine/Ketsji/KX_Camera.cpp +++ b/source/gameengine/Ketsji/KX_Camera.cpp @@ -499,6 +499,7 @@ PyAttributeDef KX_Camera::Attributes[] = { KX_PYATTRIBUTE_RW_FUNCTION("perspective", KX_Camera, pyattr_get_perspective, pyattr_set_perspective), KX_PYATTRIBUTE_RW_FUNCTION("lens", KX_Camera, pyattr_get_lens, pyattr_set_lens), + KX_PYATTRIBUTE_RW_FUNCTION("ortho_scale", KX_Camera, pyattr_get_ortho_scale, pyattr_set_ortho_scale), KX_PYATTRIBUTE_RW_FUNCTION("near", KX_Camera, pyattr_get_near, pyattr_set_near), KX_PYATTRIBUTE_RW_FUNCTION("far", KX_Camera, pyattr_get_far, pyattr_set_far), @@ -728,6 +729,26 @@ int KX_Camera::pyattr_set_lens(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, return PY_SET_ATTR_SUCCESS; } +PyObject* KX_Camera::pyattr_get_ortho_scale(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef) +{ + KX_Camera* self= static_cast(self_v); + return PyFloat_FromDouble(self->m_camdata.m_scale); +} + +int KX_Camera::pyattr_set_ortho_scale(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value) +{ + KX_Camera* self= static_cast(self_v); + float param = PyFloat_AsDouble(value); + if (param == -1) { + PyErr_SetString(PyExc_AttributeError, "camera.scale = float: KX_Camera, expected a float greater then zero"); + return PY_SET_ATTR_FAIL; + } + + self->m_camdata.m_scale= param; + self->m_set_projection_matrix = false; + return PY_SET_ATTR_SUCCESS; +} + PyObject* KX_Camera::pyattr_get_near(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef) { KX_Camera* self= static_cast(self_v); diff --git a/source/gameengine/Ketsji/KX_Camera.h b/source/gameengine/Ketsji/KX_Camera.h index e209f0461b9..406ee1d0764 100644 --- a/source/gameengine/Ketsji/KX_Camera.h +++ b/source/gameengine/Ketsji/KX_Camera.h @@ -289,6 +289,8 @@ public: static PyObject* pyattr_get_lens(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); static int pyattr_set_lens(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); + static PyObject* pyattr_get_ortho_scale(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); + static int pyattr_set_ortho_scale(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); static PyObject* pyattr_get_near(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); static int pyattr_set_near(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); static PyObject* pyattr_get_far(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); diff --git a/source/gameengine/PyDoc/bge.types.rst b/source/gameengine/PyDoc/bge.types.rst index 935d3e7e00e..e0ace6ad85b 100644 --- a/source/gameengine/PyDoc/bge.types.rst +++ b/source/gameengine/PyDoc/bge.types.rst @@ -4185,6 +4185,12 @@ Game Engine bge.types Module :type: float + .. attribute:: ortho_scale + + The camera's view scale when in orthographic mode. + + :type: float + .. attribute:: near The camera's near clip distance. From ad12866e1947f6723e0b6111f67cdabdbed33538 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Wed, 14 Jul 2010 20:52:23 +0000 Subject: [PATCH 477/674] To be actually useful, also report the filename when write operation fails. --- source/blender/blenloader/intern/writefile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 82d46a84bdd..ed471117bdd 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -2481,7 +2481,7 @@ int BLO_write_file(Main *mainvar, char *dir, int write_flags, ReportList *report file = open(tempname,O_BINARY+O_WRONLY+O_CREAT+O_TRUNC, 0666); if(file == -1) { - BKE_reportf(reports, RPT_ERROR, "Can't open file for writing: %s.", strerror(errno)); + BKE_reportf(reports, RPT_ERROR, "Can't open file %s for writing: %s.", tempname, strerror(errno)); return 0; } From aa15c8a5bfdb11bccd9927f9bb77808d55c4356e Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Wed, 14 Jul 2010 22:16:56 +0000 Subject: [PATCH 478/674] S_ISDIR and S_ISREG were checking completely wrong for directory and regular file bits. --- source/blender/blenlib/BLI_winstuff.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/blenlib/BLI_winstuff.h b/source/blender/blenlib/BLI_winstuff.h index 957fdb2b017..e8689895735 100644 --- a/source/blender/blenlib/BLI_winstuff.h +++ b/source/blender/blenlib/BLI_winstuff.h @@ -74,10 +74,10 @@ extern "C" { #define MAXPATHLEN MAX_PATH #ifndef S_ISREG -#define S_ISREG(x) ((x&S_IFMT) == S_IFREG) +#define S_ISREG(x) (((x)&_S_IFREG) == _S_IFREG) #endif #ifndef S_ISDIR -#define S_ISDIR(x) ((x&S_IFMT) == S_IFDIR) +#define S_ISDIR(x) (((x)&_S_IFDIR) == _S_IFDIR) #endif /* defines for using ISO C++ conformant names */ From 0980f2555f565bfac0958483da76b7e75e8921e5 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Wed, 14 Jul 2010 23:39:23 +0000 Subject: [PATCH 479/674] * Use same BLI_exist() on all platforms. * remove extra sys/types.h include. --- source/blender/blenlib/intern/fileops.c | 16 ++++++---------- source/blender/blenlib/intern/storage.c | 9 +++++---- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/source/blender/blenlib/intern/fileops.c b/source/blender/blenlib/intern/fileops.c index a543f4623f1..7a24d9b36b1 100644 --- a/source/blender/blenlib/intern/fileops.c +++ b/source/blender/blenlib/intern/fileops.c @@ -205,6 +205,10 @@ int BLI_touch(const char *file) return 0; } +int BLI_exists(char *file) { + return BLI_exist(file); +} + #ifdef WIN32 static char str[MAXPATHLEN+12]; @@ -282,10 +286,6 @@ int BLI_link(char *file, char *to) { return 1; } -int BLI_exists(char *file) { - return (GetFileAttributes(file) != 0xFFFFFFFF); -} - void BLI_recurdir_fileops(char *dirname) { char *lslash; char tmp[MAXPATHLEN]; @@ -326,10 +326,10 @@ int BLI_rename(char *from, char *to) { return rename(from, to); } -#else /* The sane UNIX world */ +#else /* The weirdo UNIX world */ /* - * but the sane UNIX world is tied to the interface, and the system + * but the UNIX world is tied to the interface, and the system * timer, and... We implement a callback mechanism. The system will * have to initialise the callback before the functions will work! * */ @@ -374,10 +374,6 @@ int BLI_link(char *file, char *to) { return system(str); } -int BLI_exists(char *file) { - return BLI_exist(file); -} - void BLI_recurdir_fileops(char *dirname) { char *lslash; char tmp[MAXPATHLEN]; diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c index 51d5f0354f9..3315e9645d4 100644 --- a/source/blender/blenlib/intern/storage.c +++ b/source/blender/blenlib/intern/storage.c @@ -76,7 +76,6 @@ #endif #ifdef WIN32 -#include #include #include #include "BLI_winstuff.h" @@ -433,18 +432,20 @@ int BLI_filepathsize(const char *path) int BLI_exist(char *name) { - struct stat st; #ifdef WIN32 + struct _stat64i32 st; /* in Windows stat doesn't recognize dir ending on a slash To not break code where the ending slash is expected we don't mess with the argument name directly here - elubie */ char tmp[FILE_MAXDIR+FILE_MAXFILE]; - int len; + int len, res; BLI_strncpy(tmp, name, FILE_MAXDIR+FILE_MAXFILE); len = strlen(tmp); if (len > 3 && ( tmp[len-1]=='\\' || tmp[len-1]=='/') ) tmp[len-1] = '\0'; - if (stat(tmp,&st)) return(0); + res = _stat(tmp, &st); + if (res == -1) return(0); #else + struct stat st; if (stat(name,&st)) return(0); #endif return(st.st_mode); From 4242baa704a516400a415f4f05b3e908cc41ea27 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Wed, 14 Jul 2010 23:51:21 +0000 Subject: [PATCH 480/674] Logic UI: Changing Controllers names to follow Sensors and actuators (back to have only the first latter capitalized) + change the controller state only when in expanded mode (show the number otherwise). Cosmetic commit, no structural/big code changes (patch by dfelinto). --- .../editors/space_logic/logic_window.c | 22 +++++++++---------- .../blender/makesrna/intern/rna_controller.c | 12 +++++----- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index 005ebfb5b88..c4a42d89758 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -644,17 +644,17 @@ static char *controller_name(int type) { switch (type) { case CONT_LOGIC_AND: - return "AND"; + return "And"; case CONT_LOGIC_OR: - return "OR"; + return "Or"; case CONT_LOGIC_NAND: - return "NAND"; + return "Nand"; case CONT_LOGIC_NOR: - return "NOR"; + return "Nor"; case CONT_LOGIC_XOR: - return "XOR"; + return "Xor"; case CONT_LOGIC_XNOR: - return "XNOR"; + return "Xnor"; case CONT_EXPRESSION: return "Expression"; case CONT_PYTHON: @@ -3537,7 +3537,8 @@ static void draw_controller_header(uiLayout *layout, PointerRNA *ptr, int xco, i uiLayout *box, *row, *subrow; bController *cont= (bController *)ptr->data; - char name[3]; //XXX provisorly for state number + char state[3]; + sprintf(state, "%d", RNA_int_get(ptr, "state")); box= uiLayoutBox(layout); row= uiLayoutRow(box, 0); @@ -3546,15 +3547,14 @@ static void draw_controller_header(uiLayout *layout, PointerRNA *ptr, int xco, i if(RNA_boolean_get(ptr, "expanded")) { uiItemR(row, ptr, "type", 0, "", 0); uiItemR(row, ptr, "name", 0, "", 0); + /* XXX provisory for Blender 2.50Beta */ + uiDefBlockBut(uiLayoutGetBlock(layout), controller_state_mask_menu, cont, state, (short)(xco+width-44), yco, 22+22, UI_UNIT_Y, "Set controller state index (from 1 to 30)"); } else { uiItemL(row, controller_name(cont->type), 0); uiItemL(row, cont->name, 0); + uiItemL(row, state, 0); } - /* XXX provisory for Blender 2.50Beta */ - sprintf(name, "%d", RNA_int_get(ptr, "state")); - uiDefBlockBut(uiLayoutGetBlock(layout), controller_state_mask_menu, cont, name, (short)(xco+width-44), yco, 22+22, UI_UNIT_Y, "Set controller state index (from 1 to 30)"); - uiItemR(row, ptr, "priority", 0, "", 0); if(RNA_boolean_get(ptr, "expanded")==0) { diff --git a/source/blender/makesrna/intern/rna_controller.c b/source/blender/makesrna/intern/rna_controller.c index 6307c39be52..c66ce532351 100644 --- a/source/blender/makesrna/intern/rna_controller.c +++ b/source/blender/makesrna/intern/rna_controller.c @@ -32,12 +32,12 @@ #include "DNA_controller_types.h" EnumPropertyItem controller_type_items[] ={ - {CONT_LOGIC_AND, "LOGIC_AND", 0, "AND", "Logic And"}, - {CONT_LOGIC_OR, "LOGIC_OR", 0, "OR", "Logic Or"}, - {CONT_LOGIC_NAND, "LOGIC_NAND", 0, "NAND", "Logic Nand"}, - {CONT_LOGIC_NOR, "LOGIC_NOR", 0, "NOR", "Logic Nor"}, - {CONT_LOGIC_XOR, "LOGIC_XOR", 0, "XOR", "Logic Xor"}, - {CONT_LOGIC_XNOR, "LOGIC_XNOR", 0, "XNOR", "Logic Xnor"}, + {CONT_LOGIC_AND, "LOGIC_AND", 0, "And", "Logic And"}, + {CONT_LOGIC_OR, "LOGIC_OR", 0, "Or", "Logic Or"}, + {CONT_LOGIC_NAND, "LOGIC_NAND", 0, "Nand", "Logic Nand"}, + {CONT_LOGIC_NOR, "LOGIC_NOR", 0, "Nor", "Logic Nor"}, + {CONT_LOGIC_XOR, "LOGIC_XOR", 0, "Xor", "Logic Xor"}, + {CONT_LOGIC_XNOR, "LOGIC_XNOR", 0, "Xnor", "Logic Xnor"}, {CONT_EXPRESSION, "EXPRESSION", 0, "Expression", ""}, {CONT_PYTHON, "PYTHON", 0, "Python Script", ""}, {0, NULL, 0, NULL, NULL}}; From 7f083c45bee15f7540e2a35a725efe28fc962239 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 15 Jul 2010 00:52:26 +0000 Subject: [PATCH 481/674] use dict comprehension where possible --- release/scripts/io/import_scene_3ds.py | 2 +- release/scripts/io/import_scene_obj.py | 4 ++-- release/scripts/modules/bpy_types.py | 2 +- release/scripts/op/uvcalc_follow_active.py | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/release/scripts/io/import_scene_3ds.py b/release/scripts/io/import_scene_3ds.py index 6502dee73f1..7b3004d4f52 100644 --- a/release/scripts/io/import_scene_3ds.py +++ b/release/scripts/io/import_scene_3ds.py @@ -360,7 +360,7 @@ def process_next_chunk(file, previous_chunk, importedObjects, IMAGE_SEARCH): vertMappingIndex = 0 vertsToUse = [i for i in range(len(myContextMesh_vertls)) if faceVertUsers[i]] - myVertMapping = dict( [ (ii, i) for i, ii in enumerate(vertsToUse) ] ) + myVertMapping = {ii: i for i, ii in enumerate(vertsToUse)} tempName= '%s_%s' % (contextObName, matName) # matName may be None. bmesh = bpy.data.meshes.new(tempName) diff --git a/release/scripts/io/import_scene_obj.py b/release/scripts/io/import_scene_obj.py index 942619c49ee..afe82410557 100644 --- a/release/scripts/io/import_scene_obj.py +++ b/release/scripts/io/import_scene_obj.py @@ -596,7 +596,7 @@ def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_l if unique_smooth_groups: sharp_edges= {} - smooth_group_users= dict([ (context_smooth_group, {}) for context_smooth_group in list(unique_smooth_groups.keys()) ]) + smooth_group_users = {context_smooth_group: {} for context_smooth_group in list(unique_smooth_groups.keys())} context_smooth_group_old= -1 # Split fgons into tri's @@ -691,7 +691,7 @@ def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_l # map the material names to an index - material_mapping= dict([(name, i) for i, name in enumerate(unique_materials)]) # enumerate over unique_materials keys() + material_mapping = {name: i for i, name in enumerate(unique_materials)} # enumerate over unique_materials keys() materials= [None] * len(unique_materials) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index b1c5429d4ba..9d6f5ce7b2f 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -444,7 +444,7 @@ class Mesh(bpy_types.ID): if not hasattr(edges, "pop"): edges = edges[:] - edge_dict = dict((ed.key, ed) for ed in self.edges if ed.selected) + edge_dict = {ed.key: ed for ed in self.edges if ed.selected} while edges: current_edge = edges.pop() diff --git a/release/scripts/op/uvcalc_follow_active.py b/release/scripts/op/uvcalc_follow_active.py index 81229f73461..61c149c8735 100644 --- a/release/scripts/op/uvcalc_follow_active.py +++ b/release/scripts/op/uvcalc_follow_active.py @@ -65,9 +65,9 @@ def extend(obj, operator, EXTEND_MODE): # vertex index is the key, uv is the value - uvs_vhash_source = dict([(vindex, uvs_source[i]) for i, vindex in enumerate(vidx_source)]) + uvs_vhash_source = {vindex: uvs_source[i] for i, vindex in enumerate(vidx_source)} - uvs_vhash_target = dict([(vindex, uvs_target[i]) for i, vindex in enumerate(vidx_target)]) + uvs_vhash_target = {vindex: uvs_target[i] for i, vindex in enumerate(vidx_target)} edge_idxs_source = face_edge_vs(vidx_source) edge_idxs_target = face_edge_vs(vidx_target) From 82b55d93919101ac7e6e02aaf1bf93753f42d77a Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Thu, 15 Jul 2010 03:49:32 +0000 Subject: [PATCH 482/674] Disabled mode-switching keys during 3D View orbit/zoom etc. in default key map. Still possible to re-enable via editing the modal keymap, but was getting a bit annoying in its current state. Can probably be implemented a bit better in the future with timers etc, but no time at the moment. --- source/blender/editors/space_view3d/view3d_edit.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 9ac3d7cacdd..9a58536d029 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -490,9 +490,11 @@ void viewrotate_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, LEFTALTKEY, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_AXIS_SNAP_ENABLE); WM_modalkeymap_add_item(keymap, LEFTALTKEY, KM_RELEASE, KM_ANY, 0, VIEWROT_MODAL_AXIS_SNAP_DISABLE); + /* disabled mode switching for now, can re-implement better, later on WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ZOOM); WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ZOOM); WM_modalkeymap_add_item(keymap, LEFTSHIFTKEY, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_SWITCH_MOVE); + */ /* assign map to operators */ WM_modalkeymap_assign(keymap, "VIEW3D_OT_rotate"); @@ -796,9 +798,11 @@ void viewmove_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, KM_ANY, 0, VIEW_MODAL_CONFIRM); WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, VIEW_MODAL_CONFIRM); + /* disabled mode switching for now, can re-implement better, later on WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ZOOM); WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ZOOM); WM_modalkeymap_add_item(keymap, LEFTSHIFTKEY, KM_RELEASE, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ROTATE); + */ /* assign map to operators */ WM_modalkeymap_assign(keymap, "VIEW3D_OT_move"); @@ -936,9 +940,11 @@ void viewzoom_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, KM_ANY, 0, VIEW_MODAL_CONFIRM); WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, VIEW_MODAL_CONFIRM); + /* disabled mode switching for now, can re-implement better, later on WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_RELEASE, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ROTATE); WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_RELEASE, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ROTATE); WM_modalkeymap_add_item(keymap, LEFTSHIFTKEY, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_SWITCH_MOVE); + */ /* assign map to operators */ WM_modalkeymap_assign(keymap, "VIEW3D_OT_zoom"); From a5aa3ff7958ffb5e4778e7f09fcbbfe7f0296f65 Mon Sep 17 00:00:00 2001 From: Jason Wilkins Date: Thu, 15 Jul 2010 05:53:11 +0000 Subject: [PATCH 483/674] * smooth wasn't working with strengths below .5 --- source/blender/editors/sculpt_paint/sculpt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index fcc4fbab9bd..9577eb4eea2 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -1169,7 +1169,7 @@ static void smooth(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode, count = (int)(bstrength*max_iterations); last = max_iterations*(bstrength - count*fract); - for(iteration = 1; iteration <= count; ++iteration) { + for(iteration = 0; iteration <= count; ++iteration) { #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) for(n=0; nmultires) { From dcc1e6019df2f5655fa38aa9f6c8c98e2e57e4fa Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 15 Jul 2010 10:51:05 +0000 Subject: [PATCH 484/674] Fix: rename to .blend1 as last before writing, after creating blend thumbnail. --- source/blender/windowmanager/intern/wm_files.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 8a05e6c4916..deeb6ab154a 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -616,11 +616,12 @@ int WM_write_file(bContext *C, char *target, int fileflags, ReportList *reports) ED_object_exit_editmode(C, EM_DO_UNDO); ED_sculpt_force_update(C); - do_history(di, reports); - /* blend file thumbnail */ ibuf_thumb= blend_file_thumb(di, CTX_data_scene(C), &thumb); + /* rename to .blend1, do this as last before write */ + do_history(di, reports); + if (BLO_write_file(CTX_data_main(C), di, fileflags, reports, thumb)) { strcpy(G.sce, di); G.relbase_valid = 1; From 5daf9354d255bb40e832e7e0d48008e56158e0b4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 15 Jul 2010 11:51:43 +0000 Subject: [PATCH 485/674] change some references to .B.blend, .Blog to new names --- release/scripts/modules/rna_info.py | 4 ++-- source/blender/blenlib/intern/path_util.c | 2 +- source/blender/blenloader/intern/readfile.c | 2 +- source/blender/blenloader/intern/writefile.c | 2 +- source/blender/editors/interface/interface_style.c | 2 +- source/blender/editors/interface/resources.c | 4 ++-- source/blender/python/doc/sphinx_doc_gen.py | 7 +++---- source/blender/python/generic/bgl.c | 5 ++--- source/blender/windowmanager/intern/wm_files.c | 10 +++++----- source/blender/windowmanager/intern/wm_window.c | 2 +- source/creator/creator.c | 6 +++--- source/gameengine/Ketsji/KX_Camera.cpp | 2 +- 12 files changed, 23 insertions(+), 25 deletions(-) diff --git a/release/scripts/modules/rna_info.py b/release/scripts/modules/rna_info.py index 3fd70fedd8c..71895a25446 100644 --- a/release/scripts/modules/rna_info.py +++ b/release/scripts/modules/rna_info.py @@ -631,8 +631,8 @@ if __name__ == "__main__": props = [(prop.identifier, prop) for prop in v.properties] for prop_id, prop in sorted(props): - if prop.type == 'boolean': - continue + # if prop.type == 'boolean': + # continue data += "%s.%s -> %s: %s%s %s\n" % (struct_id_str, prop.identifier, prop.identifier, prop.type, ", (read-only)" if prop.is_readonly else "", prop.description) if bpy.app.background: diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 423bf452a4d..092cca7de88 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -364,7 +364,7 @@ void BLI_path_rel(char *file, const char *relfile) if (strlen(relfile) > 2 && relfile[1] != ':') { char* ptemp; /* fix missing volume name in relative base, - can happen with old .Blog files */ + can happen with old recent-files.txt files */ get_default_root(temp); ptemp = &temp[2]; if (relfile[0] != '\\' && relfile[0] != '/') { diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index ea05352a73c..536f133c91b 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -174,7 +174,7 @@ READ - read associated 'direct data' - link direct data (internal and to LibBlock) - read FileGlobal -- read USER data, only when indicated (file is ~/.B.blend or .B25.blend) +- read USER data, only when indicated (file is ~/X.XX/startup.blend) - free file - per Library (per Main) - read file diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index ed471117bdd..902f572b2f3 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -65,7 +65,7 @@ Any case: direct data is ALWAYS after the lib block - write TEST (128x128, blend file preview, optional) - write FileGlobal (some global vars) - write SDNA -- write USER if filename is ~/.B.blend +- write USER if filename is ~/X.XX/config/startup.blend */ diff --git a/source/blender/editors/interface/interface_style.c b/source/blender/editors/interface/interface_style.c index e3317e5598f..f12b8aeeca5 100644 --- a/source/blender/editors/interface/interface_style.c +++ b/source/blender/editors/interface/interface_style.c @@ -264,7 +264,7 @@ void UI_DrawString(float x, float y, char *str) /* ************** init exit ************************ */ -/* called on each .B.blend read */ +/* called on each startup.blend read */ /* reading without uifont will create one */ void uiStyleInit(void) { diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index bea8d3bd1f6..b5f2a59dedd 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -999,7 +999,7 @@ void init_userdef_do_versions(void) } if (U.savetime <= 0) { U.savetime = 1; -// XXX error(".B.blend is buggy, please consider removing it.\n"); +// XXX error("startup.blend is buggy, please consider removing it.\n"); } /* transform widget settings */ if(U.tw_hotspot==0) { @@ -1138,7 +1138,7 @@ void init_userdef_do_versions(void) } /* set defaults for 3D View rotating axis indicator */ - /* since size can't be set to 0, this indicates it's not saved in .B.blend */ + /* since size can't be set to 0, this indicates it's not saved in startup.blend */ if (U.rvisize == 0) { U.rvisize = 15; U.rvibright = 8; diff --git a/source/blender/python/doc/sphinx_doc_gen.py b/source/blender/python/doc/sphinx_doc_gen.py index 27524c66c36..04fdedd8c8f 100644 --- a/source/blender/python/doc/sphinx_doc_gen.py +++ b/source/blender/python/doc/sphinx_doc_gen.py @@ -553,10 +553,9 @@ def rna2sphinx(BASEPATH): fw(" %s\n\n" % struct.description) # properties sorted in alphabetical order - zip_props_ids = zip(struct.properties, [prop.identifier for prop in struct.properties]) - zip_props_ids = sorted(zip_props_ids, key=lambda p: p[1]) - sorted_struct_properties = [x[0] for x in zip_props_ids] - + sorted_struct_properties = struct.properties[:] + sorted_struct_properties.sort(key=lambda prop: prop.identifier) + for prop in sorted_struct_properties: type_descr = prop.get_type_description(class_fmt=":class:`%s`") # readonly properties use "data" directive, variables properties use "attribute" directive diff --git a/source/blender/python/generic/bgl.c b/source/blender/python/generic/bgl.c index ae19db28011..bb0b3a43186 100644 --- a/source/blender/python/generic/bgl.c +++ b/source/blender/python/generic/bgl.c @@ -27,9 +27,8 @@ * ***** END GPL LICENSE BLOCK ***** */ -/* This file is the Blender.BGL part of opy_draw.c, from the old - * bpython/intern dir, with minor changes to adapt it to the new Python - * implementation. The BGL submodule "wraps" OpenGL functions and constants, +/* This file is the 'bgl' module. + * The BGL submodule "wraps" OpenGL functions and constants, * allowing script writers to make OpenGL calls in their Python scripts. */ #include "bgl.h" /*This must come first */ diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index deeb6ab154a..ff859ebe166 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -382,7 +382,7 @@ int WM_read_homefile(bContext *C, wmOperator *op) /* XXX */ G.save_over = 0; // start with save preference untitled.blend - G.fileflags &= ~G_FILE_AUTOPLAY; /* disable autoplay in .B.blend... */ + G.fileflags &= ~G_FILE_AUTOPLAY; /* disable autoplay in startup.blend... */ // mainwindow_set_filename_to_title(""); // empty string re-initializes title to "Blender" // refresh_interface_font(); @@ -418,7 +418,7 @@ void read_history(void) G.recent_files.first = G.recent_files.last = NULL; - /* read list of recent opend files from .Blog to memory */ + /* read list of recent opend files from recent-files.txt to memory */ for (l= lines, num= 0; l && (numnext) { line = l->link; if (line[0] && BLI_exists(line)) { @@ -452,7 +452,7 @@ static void write_history(void) BLI_make_file_string("/", name, BLI_get_folder_create(BLENDER_USER_CONFIG, NULL), BLENDER_HISTORY_FILE); recent = G.recent_files.first; - /* refresh .Blog of recent opened files, when current file was changed */ + /* refresh recent-files.txt of recent opened files, when current file was changed */ if(!(recent) || (strcmp(recent->filepath, G.sce)!=0)) { fp= fopen(name, "w"); if (fp) { @@ -462,11 +462,11 @@ static void write_history(void) recent->filepath[0] = '\0'; strcpy(recent->filepath, G.sce); BLI_addhead(&(G.recent_files), recent); - /* write current file to .Blog */ + /* write current file to recent-files.txt */ fprintf(fp, "%s\n", recent->filepath); recent = recent->next; i=1; - /* write rest of recent opened files to .Blog */ + /* write rest of recent opened files to recent-files.txt */ while((ifilepath, G.sce)!=0) { diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index 6d01620dae8..e4bb5b797d3 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -258,7 +258,7 @@ void wm_window_title(wmWindowManager *wm, wmWindow *win) } else { - /* this is set to 1 if you don't have .B.blend open */ + /* this is set to 1 if you don't have startup.blend open */ if(G.save_over) { char *str= MEM_mallocN(strlen(G.sce) + 16, "title"); diff --git a/source/creator/creator.c b/source/creator/creator.c index c3499a5788c..34322ea6b73 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -289,7 +289,7 @@ static int print_help(int argc, char **argv, void *data) printf ("\t\t\"blender --background test.blend --render-output /tmp --render-frame 1\" works as expected.\n\n"); printf ("\nEnvironment Variables:\n"); - printf (" $HOME\t\t\tStore files such as .blender/ .B.blend .Bfs .Blog here.\n"); + printf (" $HOME\t\t\tStore '.blender/' containing defaults, bookmarks and user scripts.\n"); printf (" $BLENDERPATH System directory to use for data files and scripts.\n"); printf (" For this build of blender the default $BLENDERPATH is...\n"); printf (" \"%s\"\n", blender_path); @@ -1101,7 +1101,7 @@ int main(int argc, char **argv) WM_init(C, argc, argv); /* this is properly initialized with user defs, but this is default */ - BLI_where_is_temp( btempdir, 1 ); /* call after loading the .B.blend so we can read U.tempdir */ + BLI_where_is_temp( btempdir, 1 ); /* call after loading the startup.blend so we can read U.tempdir */ #ifndef DISABLE_SDL BLI_setenv("SDL_VIDEODRIVER", "dummy"); @@ -1119,7 +1119,7 @@ int main(int argc, char **argv) WM_init(C, argc, argv); - BLI_where_is_temp( btempdir, 0 ); /* call after loading the .B.blend so we can read U.tempdir */ + BLI_where_is_temp( btempdir, 0 ); /* call after loading the startup.blend so we can read U.tempdir */ } #ifndef DISABLE_PYTHON /** diff --git a/source/gameengine/Ketsji/KX_Camera.cpp b/source/gameengine/Ketsji/KX_Camera.cpp index 82786456589..36b90411e1f 100644 --- a/source/gameengine/Ketsji/KX_Camera.cpp +++ b/source/gameengine/Ketsji/KX_Camera.cpp @@ -740,7 +740,7 @@ int KX_Camera::pyattr_set_ortho_scale(void *self_v, const KX_PYATTRIBUTE_DEF *at KX_Camera* self= static_cast(self_v); float param = PyFloat_AsDouble(value); if (param == -1) { - PyErr_SetString(PyExc_AttributeError, "camera.scale = float: KX_Camera, expected a float greater then zero"); + PyErr_SetString(PyExc_AttributeError, "camera.ortho_scale = float: KX_Camera, expected a float greater then zero"); return PY_SET_ATTR_FAIL; } From f5957e62378f1ae9fd08c9a14222b940aaab15d0 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 15 Jul 2010 13:32:20 +0000 Subject: [PATCH 486/674] own recent commit which added support for writing srgb float buffers broke writing char buffers as half EXR's. --- source/blender/imbuf/intern/openexr/openexr_api.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp index a0969979817..9b68e0e45eb 100644 --- a/source/blender/imbuf/intern/openexr/openexr_api.cpp +++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp @@ -267,6 +267,8 @@ static int imb_save_openexr_half(struct ImBuf *ibuf, char *name, int flags) if(ibuf->profile == IB_PROFILE_LINEAR_RGB) { for (int i = ibuf->y-1; i >= 0; i--) { + from= (unsigned char *)ibuf->rect + channels*i*width; + for (int j = ibuf->x; j > 0; j--) { to->r = (float)(from[0])/255.0; @@ -280,6 +282,8 @@ static int imb_save_openexr_half(struct ImBuf *ibuf, char *name, int flags) else { for (int i = ibuf->y-1; i >= 0; i--) { + from= (unsigned char *)ibuf->rect + channels*i*width; + for (int j = ibuf->x; j > 0; j--) { to->r = srgb_to_linearrgb((float)from[0] / 255.0); From df3da6ec4981de8a568f50ec5f70578ed06991f4 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 15 Jul 2010 13:34:14 +0000 Subject: [PATCH 487/674] Fix #22851: missing undo push for color picker, these only work if there is a button label or tooltip. --- .../editors/interface/interface_regions.c | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index f17a3371df1..2f19ab6698a 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -1745,11 +1745,11 @@ static void circle_picker(uiBlock *block, PointerRNA *ptr, const char *propname) uiBut *bt; /* HS circle */ - bt= uiDefButR(block, HSVCIRCLE, 0, "", 0, 0, PICKER_H, PICKER_W, ptr, propname, 0, 0.0, 0.0, 0, 0, ""); + bt= uiDefButR(block, HSVCIRCLE, 0, "", 0, 0, PICKER_H, PICKER_W, ptr, propname, 0, 0.0, 0.0, 0, 0, "Color"); uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); /* value */ - bt= uiDefButR(block, HSVCUBE, 0, "", PICKER_W+PICKER_SPACE,0,PICKER_BAR,PICKER_H, ptr, propname, 0, 0.0, 0.0, UI_GRAD_V_ALT, 0, ""); + bt= uiDefButR(block, HSVCUBE, 0, "", PICKER_W+PICKER_SPACE,0,PICKER_BAR,PICKER_H, ptr, propname, 0, 0.0, 0.0, UI_GRAD_V_ALT, 0, "Value"); uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); } @@ -1760,11 +1760,11 @@ static void square_picker(uiBlock *block, PointerRNA *ptr, const char *propname, int bartype = type + 3; /* HS square */ - bt= uiDefButR(block, HSVCUBE, 0, "", 0, PICKER_BAR+PICKER_SPACE, PICKER_TOTAL_W, PICKER_H, ptr, propname, 0, 0.0, 0.0, type, 0, ""); + bt= uiDefButR(block, HSVCUBE, 0, "", 0, PICKER_BAR+PICKER_SPACE, PICKER_TOTAL_W, PICKER_H, ptr, propname, 0, 0.0, 0.0, type, 0, "Color"); uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); /* value */ - bt= uiDefButR(block, HSVCUBE, 0, "", 0, 0, PICKER_TOTAL_W, PICKER_BAR, ptr, propname, 0, 0.0, 0.0, bartype, 0, ""); + bt= uiDefButR(block, HSVCUBE, 0, "", 0, 0, PICKER_TOTAL_W, PICKER_BAR, ptr, propname, 0, 0.0, 0.0, bartype, 0, "Value"); uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); } @@ -1832,11 +1832,11 @@ static void uiBlockPicker(uiBlock *block, float *rgb, PointerRNA *ptr, PropertyR /* RGB values */ uiBlockBeginAlign(block); - bt= uiDefButR(block, NUMSLI, 0, "R ", 0, -60, butwidth, UI_UNIT_Y, ptr, propname, 0, 0.0, 0.0, 0, 3, ""); + bt= uiDefButR(block, NUMSLI, 0, "R ", 0, -60, butwidth, UI_UNIT_Y, ptr, propname, 0, 0.0, 0.0, 0, 3, "Red"); uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); - bt= uiDefButR(block, NUMSLI, 0, "G ", 0, -80, butwidth, UI_UNIT_Y, ptr, propname, 1, 0.0, 0.0, 0, 3, ""); + bt= uiDefButR(block, NUMSLI, 0, "G ", 0, -80, butwidth, UI_UNIT_Y, ptr, propname, 1, 0.0, 0.0, 0, 3, "Green"); uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); - bt= uiDefButR(block, NUMSLI, 0, "B ", 0, -100, butwidth, UI_UNIT_Y, ptr, propname, 2, 0.0, 0.0, 0, 3, ""); + bt= uiDefButR(block, NUMSLI, 0, "B ", 0, -100, butwidth, UI_UNIT_Y, ptr, propname, 2, 0.0, 0.0, 0, 3, "Blue"); uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); // could use uiItemFullR(col, ptr, prop, -1, 0, UI_ITEM_R_EXPAND|UI_ITEM_R_SLIDER, "", 0); @@ -1844,16 +1844,16 @@ static void uiBlockPicker(uiBlock *block, float *rgb, PointerRNA *ptr, PropertyR /* HSV values */ uiBlockBeginAlign(block); - bt= uiDefButF(block, NUMSLI, 0, "H ", 0, -60, butwidth, UI_UNIT_Y, hsv, 0.0, 1.0, 10, 3, ""); + bt= uiDefButF(block, NUMSLI, 0, "H ", 0, -60, butwidth, UI_UNIT_Y, hsv, 0.0, 1.0, 10, 3, "Hue"); uiButSetFunc(bt, do_hsv_rna_cb, bt, hsv); - bt= uiDefButF(block, NUMSLI, 0, "S ", 0, -80, butwidth, UI_UNIT_Y, hsv+1, 0.0, 1.0, 10, 3, ""); + bt= uiDefButF(block, NUMSLI, 0, "S ", 0, -80, butwidth, UI_UNIT_Y, hsv+1, 0.0, 1.0, 10, 3, "Saturation"); uiButSetFunc(bt, do_hsv_rna_cb, bt, hsv); - bt= uiDefButF(block, NUMSLI, 0, "V ", 0, -100, butwidth, UI_UNIT_Y, hsv+2, 0.0, max, 10, 3, ""); + bt= uiDefButF(block, NUMSLI, 0, "V ", 0, -100, butwidth, UI_UNIT_Y, hsv+2, 0.0, max, 10, 3, "Value"); uiButSetFunc(bt, do_hsv_rna_cb, bt, hsv); uiBlockEndAlign(block); if(rgb[3] != FLT_MAX) { - bt= uiDefButR(block, NUMSLI, 0, "A ", 0, -120, butwidth, UI_UNIT_Y, ptr, propname, 3, 0.0, 0.0, 0, 0, ""); + bt= uiDefButR(block, NUMSLI, 0, "A ", 0, -120, butwidth, UI_UNIT_Y, ptr, propname, 3, 0.0, 0.0, 0, 0, "Alpha"); uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); } else { From cfa5580843cabf86e1c6ca9eef132c5ebfa65f2d Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 15 Jul 2010 15:03:42 +0000 Subject: [PATCH 488/674] Fix for use of path environment variables, was not appending subfolder. --- source/blender/blenlib/intern/path_util.c | 44 +++++++++++------------ 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 092cca7de88..76877198bcb 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -947,13 +947,13 @@ static int test_path(char *targetpath, char *path_base, char *path_sep, char *fo } } -static int test_env_path(char *path, char *envvar) +static int test_env_path(char *path, char *subfolder_name, char *envvar) { char *env = envvar?getenv(envvar):NULL; if (!env) return 0; if (BLI_is_dir(env)) { - BLI_strncpy(path, env, FILE_MAX); + BLI_make_file_string("/", path, env, subfolder_name); return 1; } else { path[0] = '\0'; @@ -1002,14 +1002,14 @@ static int get_path_local(char *targetpath, char *folder_name) return 0; } -static int get_path_user(char *targetpath, char *folder_name, char *envvar) +static int get_path_user(char *targetpath, char *folder_name, char *subfolder_name, char *envvar) { char user_path[FILE_MAX]; const char *user_base_path; user_path[0] = '\0'; - if (test_env_path(targetpath, envvar)) + if (test_env_path(targetpath, subfolder_name, envvar)) return 1; user_base_path = (const char *)GHOST_getUserDir(); @@ -1028,14 +1028,14 @@ static int get_path_user(char *targetpath, char *folder_name, char *envvar) return test_path(targetpath, user_path, NULL, folder_name); } -static int get_path_system(char *targetpath, char *folder_name, char *envvar) +static int get_path_system(char *targetpath, char *folder_name, char *subfolder_name, char *envvar) { char system_path[FILE_MAX]; const char *system_base_path; system_path[0] = '\0'; - if (test_env_path(targetpath, envvar)) + if (test_env_path(targetpath, subfolder_name, envvar)) return 1; system_base_path = (const char *)GHOST_getSystemDir(); @@ -1065,66 +1065,66 @@ char *BLI_get_folder(int folder_id, char *subfolder) case BLENDER_DATAFILES: /* general case */ BLI_join_dirfile(search_path, "datafiles", subfolder); if (get_path_local(path, search_path)) break; - if (get_path_user(path, search_path, "BLENDER_USER_DATAFILES")) break; - if (get_path_system(path, search_path, "BLENDER_SYSTEM_DATAFILES")) break; + if (get_path_user(path, search_path, subfolder, "BLENDER_USER_DATAFILES")) break; + if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_DATAFILES")) break; return NULL; case BLENDER_USER_DATAFILES: BLI_join_dirfile(search_path, "datafiles", subfolder); if (get_path_local(path, search_path)) break; - if (get_path_user(path, search_path, "BLENDER_USER_DATAFILES")) break; + if (get_path_user(path, search_path, subfolder, "BLENDER_USER_DATAFILES")) break; return NULL; case BLENDER_SYSTEM_DATAFILES: BLI_join_dirfile(search_path, "datafiles", subfolder); - if (get_path_system(path, search_path, "BLENDER_SYSTEM_DATAFILES")) break; + if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_DATAFILES")) break; return NULL; case BLENDER_CONFIG: /* general case */ BLI_join_dirfile(search_path, "config", subfolder); if (get_path_local(path, search_path)) break; - if (get_path_user(path, search_path, "BLENDER_USER_CONFIG")) break; - if (get_path_system(path, search_path, "BLENDER_SYSTEM_CONFIG")) break; + if (get_path_user(path, search_path, subfolder, "BLENDER_USER_CONFIG")) break; + if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_CONFIG")) break; return NULL; case BLENDER_USER_CONFIG: BLI_join_dirfile(search_path, "config", subfolder); if (get_path_local(path, search_path)) break; - if (get_path_user(path, search_path, "BLENDER_USER_CONFIG")) break; + if (get_path_user(path, search_path, subfolder, "BLENDER_USER_CONFIG")) break; return NULL; case BLENDER_SYSTEM_CONFIG: BLI_join_dirfile(search_path, "config", subfolder); - if (get_path_system(path, search_path, "BLENDER_SYSTEM_CONFIG")) break; + if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_CONFIG")) break; return NULL; case BLENDER_SCRIPTS: /* general case */ BLI_join_dirfile(search_path, "scripts", subfolder); if (get_path_local(path, search_path)) break; - if (get_path_user(path, search_path, "BLENDER_USER_SCRIPTS")) break; - if (get_path_system(path, search_path, "BLENDER_SYSTEM_SCRIPTS")) break; + if (get_path_user(path, search_path, subfolder, "BLENDER_USER_SCRIPTS")) break; + if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_SCRIPTS")) break; return NULL; case BLENDER_USER_SCRIPTS: BLI_join_dirfile(search_path, "scripts", subfolder); if (get_path_local(path, search_path)) break; - if (get_path_user(path, search_path, "BLENDER_USER_SCRIPTS")) break; + if (get_path_user(path, search_path, subfolder, "BLENDER_USER_SCRIPTS")) break; return NULL; case BLENDER_SYSTEM_SCRIPTS: BLI_join_dirfile(search_path, "scripts", subfolder); - if (get_path_system(path, search_path, "BLENDER_SYSTEM_SCRIPTS")) break; + if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_SCRIPTS")) break; return NULL; case BLENDER_PYTHON: /* general case */ BLI_join_dirfile(search_path, "python", subfolder); if (get_path_local(path, search_path)) break; - if (get_path_system(path, search_path, "BLENDER_SYSTEM_PYTHON")) break; + if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_PYTHON")) break; return NULL; case BLENDER_SYSTEM_PYTHON: BLI_join_dirfile(search_path, "python", subfolder); - if (get_path_system(path, search_path, "BLENDER_SYSTEM_PYTHON")) break; + if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_PYTHON")) break; return NULL; } @@ -1139,11 +1139,11 @@ static char *BLI_get_user_folder_notest(int folder_id, char *subfolder) switch (folder_id) { case BLENDER_USER_DATAFILES: BLI_join_dirfile(search_path, "datafiles", subfolder); - get_path_user(path, search_path, "BLENDER_USER_DATAFILES"); + get_path_user(path, search_path, subfolder, "BLENDER_USER_DATAFILES"); break; case BLENDER_USER_CONFIG: BLI_join_dirfile(search_path, "config", subfolder); - get_path_user(path, search_path, "BLENDER_USER_CONFIG"); + get_path_user(path, search_path, subfolder, "BLENDER_USER_CONFIG"); break; } if ('\0' == path[0]) { From 7fb16fb5ec8951a2118aadbeaf8fbff214a059f0 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 15 Jul 2010 15:20:53 +0000 Subject: [PATCH 489/674] Update --help message for new path environment variables. --- source/creator/creator.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/source/creator/creator.c b/source/creator/creator.c index 34322ea6b73..ac79c0e6f80 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -289,11 +289,13 @@ static int print_help(int argc, char **argv, void *data) printf ("\t\t\"blender --background test.blend --render-output /tmp --render-frame 1\" works as expected.\n\n"); printf ("\nEnvironment Variables:\n"); - printf (" $HOME\t\t\tStore '.blender/' containing defaults, bookmarks and user scripts.\n"); - printf (" $BLENDERPATH System directory to use for data files and scripts.\n"); - printf (" For this build of blender the default $BLENDERPATH is...\n"); - printf (" \"%s\"\n", blender_path); - printf (" setting the $BLENDERPATH will override this\n"); + printf (" $BLENDER_USER_CONFIG Directory for user configuration files.\n"); + printf (" $BLENDER_SYSTEM_CONFIG Directory for system wide configuration files.\n"); + printf (" $BLENDER_USER_SCRIPTS Directory for user scripts.\n"); + printf (" $BLENDER_SYSTEM_SCRIPTS Directory for system wide scripts.\n"); + printf (" $BLENDER_USER_DATAFILES Directory for user data files (icons, translations, ..).\n"); + printf (" $BLENDER_SYSTEM_DATAFILES Directory for system wide data files.\n"); + printf (" $BLENDER_SYSTEM_PYTHON Directory for system python libraries.\n"); #ifdef WIN32 printf (" $TEMP Store temporary files here.\n"); #else From 220fd2e80aa353087e512d5333a64de1b0734954 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 15 Jul 2010 15:37:57 +0000 Subject: [PATCH 490/674] rna name edits as discussed with brecht. restrict -> hide. --- source/blender/makesrna/rna_cleanup/rna_booleans.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/blender/makesrna/rna_cleanup/rna_booleans.txt b/source/blender/makesrna/rna_cleanup/rna_booleans.txt index 614db736d64..87d4f8a0736 100644 --- a/source/blender/makesrna/rna_cleanup/rna_booleans.txt +++ b/source/blender/makesrna/rna_cleanup/rna_booleans.txt @@ -64,7 +64,7 @@ Bone.inherit_scale -> use_inherit_scale: boolean Bone inherits scaling fro Bone.layer -> layer: boolean Layers bone exists in Bone.local_location -> use_local_location: boolean Bone location is set in local space Bone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean When deforming bone, multiply effects of Vertex Group weights with Envelope influence -Bone.restrict_select -> restrict_select: boolean Bone is able to be selected +Bone.restrict_select -> hide_select: boolean Bone is able to be selected Bone.selected -> select: boolean BooleanProperty.default -> default: boolean, (read-only) Default value for this number BooleanProperty.default_array -> default_array: boolean, (read-only) Default value for this array @@ -221,7 +221,7 @@ EditBone.layer -> layer: boolean Layers bone exists in EditBone.local_location -> use_local_location: boolean Bone location is set in local space EditBone.locked -> lock: boolean Bone is not able to be transformed when in Edit Mode EditBone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean When deforming bone, multiply effects of Vertex Group weights with Envelope influence -EditBone.restrict_select -> restrict_select: boolean Bone is able to be selected +EditBone.restrict_select -> hide_select: boolean Bone is able to be selected EditBone.selected -> select: boolean EditBone.selected_head -> select_head: boolean EditBone.selected_tail -> select_tail: boolean @@ -682,9 +682,9 @@ Object.lock_rotation -> lock_rotation: boolean Lock editing of rotation in Object.lock_rotation_w -> lock_rotation_w: boolean Lock editing of 'angle' component of four-component rotations in the interface Object.lock_rotations_4d -> lock_rotations_4d: boolean Lock editing of four component rotations by components (instead of as Eulers) Object.lock_scale -> lock_scale: boolean Lock editing of scale in the interface -Object.restrict_render -> restrict_render: boolean Restrict renderability -Object.restrict_select -> restrict_select: boolean Restrict selection in the viewport -Object.restrict_view -> restrict_view: boolean Restrict visibility in the viewport +Object.restrict_render -> hide_render: boolean Restrict renderability +Object.restrict_select -> hide_select: boolean Restrict selection in the viewport +Object.restrict_view -> hide: boolean Restrict visibility in the viewport Object.selected -> select: boolean Object selection state Object.shape_key_edit_mode -> use_shape_key_edit_mode: boolean Apply shape keys in edit mode (for Meshes only) Object.shape_key_lock -> show_shape_key: boolean Always show the current Shape for this Object From 02da5ecfed33139f90a8a35c37300e6d3f3034eb Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 15 Jul 2010 16:56:04 +0000 Subject: [PATCH 491/674] Apply first pass of edits to rna values from rna_booleans.txt. These are not animated and are best not change names like this too late in the release. ActionGroup.selected -> select: boolean Action Group is selected BezierSplinePoint.hidden -> hide: boolean Visibility status BezierSplinePoint.selected_control_point -> select_control_point: boolean Control point selection status BezierSplinePoint.selected_handle1 -> select_left_handle: boolean Handle 1 selection status BezierSplinePoint.selected_handle2 -> select_right_handle: boolean Handle 2 selection status Bone.restrict_select -> hide_select: boolean Bone is able to be selected Bone.selected -> select: boolean CurveMapPoint.selected -> select: boolean Selection state of the curve point EditBone.restrict_select -> hide_select: boolean Bone is able to be selected EditBone.selected -> select: boolean EditBone.selected_head -> select_head: boolean EditBone.selected_tail -> select_tail: boolean EditBone.locked -> lock: boolean Bone is not able to be transformed when in Edit Mode EditBone.hidden -> hide: boolean Bone is not visible when in Edit Mode NEGATE * FCurve.disabled -> enabled: boolean F-Curve could not be evaluated in past, so should be skipped when evaluating FCurve.locked -> lock: boolean F-Curve's settings cannot be edited FCurve.muted -> mute: boolean F-Curve is not evaluated FCurve.selected -> select: boolean F-Curve is selected for editing NEGATE * FCurve.visible -> hide: boolean F-Curve and its keyframes are shown in the Graph Editor graphs FCurveSample.selected -> select: boolean Selection status GPencilFrame.selected -> select: boolean Frame is selected for editing in the DopeSheet GPencilLayer.locked -> lock: boolean Protect layer from further editing and/or frame changes GPencilLayer.selected -> select: boolean Layer is selected for editing in the DopeSheet Keyframe.selected -> select: boolean Control point selection status Keyframe.selected_handle1 -> select_left_handle: boolean Handle 1 selection status Keyframe.selected_handle2 -> select_right_handle: boolean Handle 2 selection status MeshEdge.selected -> select: boolean MeshEdge.hidden -> hide: boolean MeshFace.hidden -> hide: boolean MeshFace.selected -> select: boolean MeshVertex.hidden -> hide: boolean MeshVertex.selected -> select: boolean MotionPathVert.selected -> select: boolean Path point is selected for editing NlaStrip.selected -> select: boolean NLA Strip is selected NlaTrack.locked -> lock: boolean NLA Track is locked NlaTrack.muted -> mute: boolean NLA Track is not evaluated NlaTrack.selected -> select: boolean NLA Track is selected Object.restrict_render -> hide_render: boolean Restrict renderability Object.restrict_select -> hide_select: boolean Restrict selection in the viewport Object.restrict_view -> hide: boolean Restrict visibility in the viewport Object.selected -> select: boolean Object selection state ObjectBase.selected -> select: boolean Object base selection state PoseBone.selected -> select: boolean Sequence.right_handle_selected -> select_right_handle: boolean Sequence.selected -> select: boolean SplinePoint.selected -> select_control_point: boolean Selection status TimelineMarker.selected -> select: boolean Marker selection state Sequence.left_handle_selected -> select_left_handle: boolean ActionGroup.locked -> lock: boolean Action Group is locked Bone.hidden -> hide: boolean Bone is not visible when it is not in Edit Mode (i.e. in Object or Pose Modes) SplinePoint.hidden -> hide: boolean Visibility status FModifier.muted -> mute: boolean F-Curve Modifier will not be evaluated note: rebaned uv_select to select_uv --- release/scripts/io/import_anim_bvh.py | 4 +- release/scripts/modules/add_object_utils.py | 6 +- release/scripts/modules/bpy_types.py | 2 +- release/scripts/modules/rigify/__init__.py | 24 +++---- release/scripts/modules/rigify/arm_biped.py | 4 +- release/scripts/op/fcurve_euler_filter.py | 2 +- release/scripts/op/mesh.py | 6 +- release/scripts/op/nla.py | 2 +- release/scripts/op/object.py | 18 ++--- release/scripts/op/sequencer.py | 10 +-- release/scripts/op/uv.py | 4 +- release/scripts/op/uvcalc_follow_active.py | 2 +- release/scripts/op/uvcalc_smart_project.py | 4 +- release/scripts/op/vertexpaint_dirt.py | 2 +- release/scripts/presets/interaction/maya.py | 6 +- release/scripts/templates/operator_uv.py | 2 +- release/scripts/ui/properties_data_bone.py | 6 +- release/scripts/ui/properties_game.py | 8 +-- .../ui/properties_object_constraint.py | 2 +- release/scripts/ui/space_time.py | 2 +- release/scripts/ui/space_view3d.py | 6 +- .../blender/editors/animation/fmodifier_ui.c | 2 +- source/blender/editors/curve/editcurve.c | 2 +- .../blender/editors/gpencil/gpencil_buttons.c | 2 +- .../editors/interface/interface_templates.c | 2 +- source/blender/editors/object/object_edit.c | 40 ++++++------ source/blender/editors/object/object_intern.h | 8 +-- source/blender/editors/object/object_ops.c | 20 +++--- .../blender/editors/space_nla/nla_buttons.c | 2 +- .../blender/editors/space_outliner/outliner.c | 6 +- source/blender/makesrna/intern/rna_action.c | 8 +-- source/blender/makesrna/intern/rna_animviz.c | 4 +- source/blender/makesrna/intern/rna_armature.c | 30 ++++----- source/blender/makesrna/intern/rna_color.c | 4 +- .../blender/makesrna/intern/rna_constraint.c | 2 +- source/blender/makesrna/intern/rna_curve.c | 18 ++--- source/blender/makesrna/intern/rna_fcurve.c | 38 +++++------ source/blender/makesrna/intern/rna_gpencil.c | 10 +-- source/blender/makesrna/intern/rna_mesh.c | 26 ++++---- source/blender/makesrna/intern/rna_nla.c | 14 ++-- source/blender/makesrna/intern/rna_object.c | 14 ++-- source/blender/makesrna/intern/rna_pose.c | 4 +- .../blender/makesrna/intern/rna_sequencer.c | 8 +-- source/blender/makesrna/intern/rna_timeline.c | 4 +- source/blender/makesrna/intern/rna_userdef.c | 4 +- .../makesrna/rna_cleanup/rna_booleans.txt | 65 ++++--------------- 46 files changed, 209 insertions(+), 250 deletions(-) diff --git a/release/scripts/io/import_anim_bvh.py b/release/scripts/io/import_anim_bvh.py index d497ac47065..89097fd53f5 100644 --- a/release/scripts/io/import_anim_bvh.py +++ b/release/scripts/io/import_anim_bvh.py @@ -347,7 +347,7 @@ def bvh_node_dict2armature(context, bvh_nodes, ROT_MODE='XYZ', IMPORT_START_FRAM scn = context.scene #XXX scn.objects.selected = [] for ob in scn.objects: - ob.selected = False + ob.select = False scn.set_frame(IMPORT_START_FRAME) @@ -356,7 +356,7 @@ def bvh_node_dict2armature(context, bvh_nodes, ROT_MODE='XYZ', IMPORT_START_FRAM scn.objects.link(arm_ob) - arm_ob.selected = True + arm_ob.select = True scn.objects.active = arm_ob print(scn.objects.active) diff --git a/release/scripts/modules/add_object_utils.py b/release/scripts/modules/add_object_utils.py index cef368c529d..9031121060a 100644 --- a/release/scripts/modules/add_object_utils.py +++ b/release/scripts/modules/add_object_utils.py @@ -50,12 +50,12 @@ def add_object_data(context, obdata, operator=None): # ugh, could be made nicer for ob in scene.objects: - ob.selected = False + ob.select = False obj_new = bpy.data.objects.new(obdata.name, obdata) base = scene.objects.link(obj_new) - base.selected = True + base.select = True if context.space_data and context.space_data.type == 'VIEW_3D': base.layers_from_view(context.space_data) @@ -68,7 +68,7 @@ def add_object_data(context, obdata, operator=None): if obj_act and obj_act.mode == 'EDIT' and obj_act.type == obj_new.type: bpy.ops.object.mode_set(mode='OBJECT') - obj_act.selected = True + obj_act.select = True scene.update() # apply location #scene.objects.active = obj_new diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 9d6f5ce7b2f..8cbb2bf4e80 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -444,7 +444,7 @@ class Mesh(bpy_types.ID): if not hasattr(edges, "pop"): edges = edges[:] - edge_dict = {ed.key: ed for ed in self.edges if ed.selected} + edge_dict = {ed.key: ed for ed in self.edges if ed.select} while edges: current_edge = edges.pop() diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py index ef8f62ad058..095229016e9 100644 --- a/release/scripts/modules/rigify/__init__.py +++ b/release/scripts/modules/rigify/__init__.py @@ -191,8 +191,8 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): obj.animation_data_clear() # Select generated rig object - obj_orig.selected = False - obj.selected = True + obj_orig.select = False + obj.select = True scene.objects.active = obj # Remove all bones from the generated rig armature. @@ -212,9 +212,9 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): # Select the temp rigs for merging for objt in scene.objects: - objt.selected = False # deselect all objects - temp_rig_1.selected = True - temp_rig_2.selected = True + objt.select = False # deselect all objects + temp_rig_1.select = True + temp_rig_2.select = True scene.objects.active = temp_rig_2 # Merge the temporary rigs @@ -225,8 +225,8 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): # Select the generated rig for objt in scene.objects: - objt.selected = False # deselect all objects - obj.selected = True + objt.select = False # deselect all objects + obj.select = True scene.objects.active = obj # Copy over the pose_bone properties @@ -464,7 +464,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True): arm.layer = layer_show - # obj.restrict_view = True + # obj.hide = True obj.data.draw_axes = False bpy.ops.object.mode_set(mode=mode_orig) @@ -490,8 +490,8 @@ def generate_test(context, metarig_type="", GENERATE_FINAL=True): scene.objects.link(obj_new) scene.objects.active = obj_new for obj in scene.objects: - obj.selected = False - obj_new.selected = True + obj.select = False + obj_new.select = True for module_name in get_submodule_types(): if (metarig_type and module_name != metarig_type): @@ -551,8 +551,8 @@ def generate_test_all(context, GRAPH=False): obj.data.drawtype = 'STICK' obj.location[1] += i obj_new.location[1] += i - obj_new.selected = False - obj.selected = True + obj_new.select = False + obj.select = True i += 4 diff --git a/release/scripts/modules/rigify/arm_biped.py b/release/scripts/modules/rigify/arm_biped.py index 7a99eb5d80a..f80a617df47 100644 --- a/release/scripts/modules/rigify/arm_biped.py +++ b/release/scripts/modules/rigify/arm_biped.py @@ -137,8 +137,8 @@ def ik(obj, definitions, base_names, options): ik.pole_vis = add_stretch_to(obj, mt.forearm, ik.pole, "VIS-%s_ik" % base_names[mt.forearm]) ik.update() - ik.hand_vis_e.restrict_select = True - ik.pole_vis_e.restrict_select = True + ik.hand_vis_e.hide_select = True + ik.pole_vis_e.hide_select = True bpy.ops.object.mode_set(mode='OBJECT') diff --git a/release/scripts/op/fcurve_euler_filter.py b/release/scripts/op/fcurve_euler_filter.py index bba4576ef73..39c226294ee 100644 --- a/release/scripts/op/fcurve_euler_filter.py +++ b/release/scripts/op/fcurve_euler_filter.py @@ -40,7 +40,7 @@ def main(context): flist = bpy.context.active_object.animation_data.action.fcurves for f in flist: - if f.selected and f.data_path.endswith("rotation_euler"): + if f.select and f.data_path.endswith("rotation_euler"): cleanupEulCurve(f) class DiscontFilterOp(bpy.types.Operator): diff --git a/release/scripts/op/mesh.py b/release/scripts/op/mesh.py index 78ca9a18cdc..b63997b8eba 100644 --- a/release/scripts/op/mesh.py +++ b/release/scripts/op/mesh.py @@ -54,9 +54,9 @@ class MeshSelectInteriorFaces(bpy.types.Operator): for index, face in enumerate(face_list): if(test_interior(index)): - face.selected = True + face.select = True else: - face.selected = False + face.select = False if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) @@ -122,7 +122,7 @@ class MeshMirrorUV(bpy.types.Operator): # as a list faces = mesh.faces[:] - fuvsel = [(False not in uv.uv_selected) for uv in active_uv_layer] + fuvsel = [(False not in uv.select_uv) for uv in active_uv_layer] fcents = [f.center for f in faces] # find mirror faces diff --git a/release/scripts/op/nla.py b/release/scripts/op/nla.py index d0c53758ba9..ceb4621d643 100644 --- a/release/scripts/op/nla.py +++ b/release/scripts/op/nla.py @@ -100,7 +100,7 @@ def bake(frame_start, frame_end, step=1, only_selected=False): pose_items = pose.bones.items() for name, pbone in pose_items: - if only_selected and not pbone.selected: + if only_selected and not pbone.select: continue for f in frame_range: diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index b16d2b0dcf2..2df1250251e 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -52,9 +52,9 @@ class SelectPattern(bpy.types.Operator): # Can be pose bones or objects for item in items: if pattern_match(item.name, self.properties.pattern): - item.selected = True + item.select = True elif not self.properties.extend: - item.selected = False + item.select = False return {'FINISHED'} @@ -90,7 +90,7 @@ class SelectCamera(bpy.types.Operator): self.report({'WARNING'}, "Active camera is not in this scene") context.scene.objects.active = camera - camera.selected = True + camera.select = True return {'FINISHED'} @@ -121,7 +121,7 @@ class SelectHierarchy(bpy.types.Operator): if not self.properties.extend: # for obj in objs: - # obj.selected = False + # obj.select = False bpy.ops.object.select_all(action='DESELECT') if self.properties.direction == 'PARENT': @@ -135,7 +135,7 @@ class SelectHierarchy(bpy.types.Operator): if obj_act == obj: context.scene.objects.active = parent - parent.selected = True + parent.select = True if parents: return {'CANCELLED'} @@ -145,7 +145,7 @@ class SelectHierarchy(bpy.types.Operator): for obj in objs: children += list(obj.children) for obj_iter in children: - obj_iter.selected = True + obj_iter.select = True children.sort(key=lambda obj_iter: obj_iter.name) context.scene.objects.active = children[0] @@ -536,11 +536,11 @@ class IsolateTypeRender(bpy.types.Operator): for obj in context.visible_objects: - if obj.selected: - obj.restrict_render = False + if obj.select: + obj.hide_render = False else: if obj.type == act_type: - obj.restrict_render = True + obj.hide_render = True return {'FINISHED'} diff --git a/release/scripts/op/sequencer.py b/release/scripts/op/sequencer.py index 13668498aae..cf876189907 100644 --- a/release/scripts/op/sequencer.py +++ b/release/scripts/op/sequencer.py @@ -40,7 +40,7 @@ class SequencerCrossfadeSounds(bpy.types.Operator): seq1 = None seq2 = None for s in context.scene.sequence_editor.sequences: - if s.selected and s.type == 'SOUND': + if s.select and s.type == 'SOUND': if seq1 == None: seq1 = s elif seq2 == None: @@ -97,13 +97,13 @@ class SequencerCutMulticam(bpy.types.Operator): if s.multicam_source == camera: return {'FINISHED'} - if not s.selected: - s.selected = True + if not s.select: + s.select = True cfra = context.scene.frame_current bpy.ops.sequencer.cut(frame=cfra, type='SOFT', side='RIGHT') for s in context.scene.sequence_editor.sequences_all: - if s.selected and s.type == 'MULTICAM' and s.frame_final_start <= cfra and cfra < s.frame_final_end: + if s.select and s.type == 'MULTICAM' and s.frame_final_start <= cfra and cfra < s.frame_final_end: context.scene.sequence_editor.active_strip = s context.scene.sequence_editor.active_strip.multicam_source = camera @@ -125,7 +125,7 @@ class SequencerDeinterlaceSelectedMovies(bpy.types.Operator): def execute(self, context): for s in context.scene.sequence_editor.sequences_all: - if s.selected and s.type == 'MOVIE': + if s.select and s.type == 'MOVIE': s.de_interlace = True return {'FINISHED'} diff --git a/release/scripts/op/uv.py b/release/scripts/op/uv.py index 51c1695677b..a7abd475b8d 100644 --- a/release/scripts/op/uv.py +++ b/release/scripts/op/uv.py @@ -85,9 +85,9 @@ class ExportUVLayout(bpy.types.Operator): for i in range(uv_layer_len): uv_elem = uv_layer[i] # context checks - if faces[i].selected and (local_image is Ellipsis or local_image == uv_elem.image): + if faces[i].select and (local_image is Ellipsis or local_image == uv_elem.image): #~ uv = uv_elem.uv - #~ if False not in uv_elem.uv_selected[:len(uv)]: + #~ if False not in uv_elem.select_uv[:len(uv)]: #~ yield (i, uv) # just write what we see. diff --git a/release/scripts/op/uvcalc_follow_active.py b/release/scripts/op/uvcalc_follow_active.py index 61c149c8735..6466d48a9fe 100644 --- a/release/scripts/op/uvcalc_follow_active.py +++ b/release/scripts/op/uvcalc_follow_active.py @@ -146,7 +146,7 @@ def extend(obj, operator, EXTEND_MODE): operator.report({'ERROR'}, "No active face.") return - face_sel = [f for f in me.faces if len(f.verts) == 4 and f.selected] + face_sel = [f for f in me.faces if len(f.verts) == 4 and f.select] face_act_local_index = -1 for i, f in enumerate(face_sel): diff --git a/release/scripts/op/uvcalc_smart_project.py b/release/scripts/op/uvcalc_smart_project.py index 13bf6244f4d..a7ef980e8c5 100644 --- a/release/scripts/op/uvcalc_smart_project.py +++ b/release/scripts/op/uvcalc_smart_project.py @@ -821,7 +821,7 @@ def main(context, island_margin, projection_limit): #XXX ob = objects.active ob= objects[0] - if ob and ob.selected == 0 and ob.type == 'MESH': + if ob and (not ob.select) and ob.type == 'MESH': # Add to the list obList =[ob] del objects @@ -899,7 +899,7 @@ def main(context, island_margin, projection_limit): me_verts = list(me.verts) if USER_ONLY_SELECTED_FACES: - meshFaces = [thickface(f, uv_layer[i], me_verts) for i, f in enumerate(me.faces) if f.selected] + meshFaces = [thickface(f, uv_layer[i], me_verts) for i, f in enumerate(me.faces) if f.select] #else: # meshFaces = map(thickface, me.faces) diff --git a/release/scripts/op/vertexpaint_dirt.py b/release/scripts/op/vertexpaint_dirt.py index c1521866a56..63a3aa3896b 100644 --- a/release/scripts/op/vertexpaint_dirt.py +++ b/release/scripts/op/vertexpaint_dirt.py @@ -127,7 +127,7 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, return('CANCELLED', ) for i, f in enumerate(me.faces): - if not me.use_paint_mask or f.selected: + if not me.use_paint_mask or f.select: f_col = active_col_layer[i] diff --git a/release/scripts/presets/interaction/maya.py b/release/scripts/presets/interaction/maya.py index 31652035dff..777dee1e563 100644 --- a/release/scripts/presets/interaction/maya.py +++ b/release/scripts/presets/interaction/maya.py @@ -244,9 +244,9 @@ kmi = km.items.add('object.location_clear', 'G', 'PRESS', alt=True) kmi = km.items.add('object.rotation_clear', 'R', 'PRESS', alt=True) kmi = km.items.add('object.scale_clear', 'S', 'PRESS', alt=True) kmi = km.items.add('object.origin_clear', 'O', 'PRESS', alt=True) -kmi = km.items.add('object.restrictview_clear', 'H', 'PRESS', alt=True) -kmi = km.items.add('object.restrictview_set', 'H', 'PRESS') -kmi = km.items.add('object.restrictview_set', 'H', 'PRESS', shift=True) +kmi = km.items.add('object.hide_clear', 'H', 'PRESS', alt=True) +kmi = km.items.add('object.hide_set', 'H', 'PRESS') +kmi = km.items.add('object.hide_set', 'H', 'PRESS', shift=True) kmi.properties.unselected = True kmi = km.items.add('object.move_to_layer', 'M', 'PRESS') kmi = km.items.add('object.delete', 'X', 'PRESS') diff --git a/release/scripts/templates/operator_uv.py b/release/scripts/templates/operator_uv.py index 1003bd6c58b..9327de33312 100644 --- a/release/scripts/templates/operator_uv.py +++ b/release/scripts/templates/operator_uv.py @@ -16,7 +16,7 @@ def main(context): for i, uv in enumerate(mesh.active_uv_texture.data): uvs = uv.uv1, uv.uv2, uv.uv3, uv.uv4 for j, v_idx in enumerate(mesh.faces[i].verts): - if uv.uv_selected[j]: + if uv.select_uv[j]: # apply the location of the vertex as a UV uvs[j][:] = mesh.verts[v_idx].co.xy diff --git a/release/scripts/ui/properties_data_bone.py b/release/scripts/ui/properties_data_bone.py index b6b638ef380..a4be7b31042 100644 --- a/release/scripts/ui/properties_data_bone.py +++ b/release/scripts/ui/properties_data_bone.py @@ -81,13 +81,13 @@ class BONE_PT_transform(BoneButtonsPanel): sub.label(text="Roll:") sub.prop(bone, "roll", text="") sub.label() - sub.prop(bone, "locked") + sub.prop(bone, "lock") else: col = layout.column() col.prop(bone, "head") col.prop(bone, "tail") col.prop(bone, "roll") - col.prop(bone, "locked") + col.prop(bone, "lock") else: pchan = ob.pose.bones[context.bone.name] @@ -231,7 +231,7 @@ class BONE_PT_display(BoneButtonsPanel): col = split.column() col.prop(bone, "draw_wire", text="Wireframe") - col.prop(bone, "hidden", text="Hide") + col.prop(bone, "hide", text="Hide") if wide_ui: col = split.column() diff --git a/release/scripts/ui/properties_game.py b/release/scripts/ui/properties_game.py index 9ec7168f834..88803993c92 100644 --- a/release/scripts/ui/properties_game.py +++ b/release/scripts/ui/properties_game.py @@ -58,7 +58,7 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel): col = split.column() col.prop(game, "actor") col.prop(game, "ghost") - col.prop(ob, "restrict_render", text="Invisible") # out of place but useful + col.prop(ob, "hide_render", text="Invisible") # out of place but useful if wide_ui: col = split.column() @@ -120,7 +120,7 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel): col = layout.column() col.prop(game, "actor") col.prop(game, "ghost") - col.prop(ob, "restrict_render", text="Invisible") + col.prop(ob, "hide_render", text="Invisible") layout.separator() @@ -156,10 +156,10 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel): col = layout.column() col.prop(game, "actor") col.prop(game, "ghost") - col.prop(ob, "restrict_render", text="Invisible") + col.prop(ob, "hide_render", text="Invisible") elif game.physics_type in ('SENSOR', 'INVISIBLE', 'NO_COLLISION', 'OCCLUDE'): - layout.prop(ob, "restrict_render", text="Invisible") + layout.prop(ob, "hide_render", text="Invisible") class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel): diff --git a/release/scripts/ui/properties_object_constraint.py b/release/scripts/ui/properties_object_constraint.py index 335bd25b501..edeadb9326b 100644 --- a/release/scripts/ui/properties_object_constraint.py +++ b/release/scripts/ui/properties_object_constraint.py @@ -523,7 +523,7 @@ class ConstraintButtonsPanel(bpy.types.Panel): row = layout.row() if wide_ui: row.label(text="Lock:") - row.prop(con, "locked", expand=True) + row.prop(con, "lock", expand=True) def LIMIT_DISTANCE(self, context, layout, con, wide_ui): self.target_template(layout, con, wide_ui) diff --git a/release/scripts/ui/space_time.py b/release/scripts/ui/space_time.py index 042e4dbc015..8c24dbc2d9c 100644 --- a/release/scripts/ui/space_time.py +++ b/release/scripts/ui/space_time.py @@ -141,7 +141,7 @@ class TIME_MT_frame(bpy.types.Menu): # it was ok for riscos... ok TODO, operator for marker in context.scene.timeline_markers: - if marker.selected: + if marker.select: layout.separator() layout.prop(marker, "name", text="", icon='MARKER_HLT') break diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index bab3695a0b6..3ad945cd19d 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -859,9 +859,9 @@ class VIEW3D_MT_object_showhide(bpy.types.Menu): def draw(self, context): layout = self.layout - layout.operator("object.restrictview_clear", text="Show Hidden") - layout.operator("object.restrictview_set", text="Hide Selected") - layout.operator("object.restrictview_set", text="Hide Unselected").unselected = True + layout.operator("object.hide_view_clear", text="Show Hidden") + layout.operator("object.hide_view_set", text="Hide Selected") + layout.operator("object.hide_view_set", text="Hide Unselected").unselected = True class VIEW3D_MT_make_single_user(bpy.types.Menu): diff --git a/source/blender/editors/animation/fmodifier_ui.c b/source/blender/editors/animation/fmodifier_ui.c index cd6714ec51f..8c6a81bddf4 100644 --- a/source/blender/editors/animation/fmodifier_ui.c +++ b/source/blender/editors/animation/fmodifier_ui.c @@ -633,7 +633,7 @@ void ANIM_uiTemplate_fmodifier_draw (uiLayout *layout, ID *id, ListBase *modifie /* 'mute' button */ - uiItemR(subrow, &ptr, "muted", UI_ITEM_R_ICON_ONLY, "", 0); + uiItemR(subrow, &ptr, "mute", UI_ITEM_R_ICON_ONLY, "", 0); uiBlockSetEmboss(block, UI_EMBOSSN); diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 186f3f20082..659ee7b9cea 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -4737,7 +4737,7 @@ static int delete_invoke(bContext *C, wmOperator *op, wmEvent *event) void CURVE_OT_delete(wmOperatorType *ot) { static EnumPropertyItem type_items[] = { - {0, "SELECTED", 0, "Selected", ""}, + {0, "SELECTED", 0, "Select", ""}, {1, "SEGMENT", 0, "Segment", ""}, {2, "ALL", 0, "All", ""}, {0, NULL, 0, NULL, NULL}}; diff --git a/source/blender/editors/gpencil/gpencil_buttons.c b/source/blender/editors/gpencil/gpencil_buttons.c index 17bafa3d399..c1ac863b362 100644 --- a/source/blender/editors/gpencil/gpencil_buttons.c +++ b/source/blender/editors/gpencil/gpencil_buttons.c @@ -126,7 +126,7 @@ static void gp_drawui_layer (uiLayout *layout, bGPdata *gpd, bGPDlayer *gpl) /* locked */ icon= (gpl->flag & GP_LAYER_LOCKED) ? ICON_LOCKED : ICON_UNLOCKED; - uiItemR(subrow, &ptr, "locked", 0, "", icon); + uiItemR(subrow, &ptr, "lock", 0, "", icon); /* when layer is locked or hidden, only draw header */ if (gpl->flag & (GP_LAYER_LOCKED|GP_LAYER_HIDE)) { diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index f951def739f..ecbdab98257 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -2049,7 +2049,7 @@ void uiTemplateTriColorSet(uiLayout *layout, PointerRNA *ptr, char *propname) csPtr= RNA_property_pointer_get(ptr, prop); uiItemR(row, &csPtr, "normal", 0, "", 0); - uiItemR(row, &csPtr, "selected", 0, "", 0); + uiItemR(row, &csPtr, "select", 0, "", 0); uiItemR(row, &csPtr, "active", 0, "", 0); } diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 5fe09f0083e..78f8e0e11d3 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -135,7 +135,7 @@ Object *ED_object_active_context(bContext *C) /* ********* clear/set restrict view *********/ -static int object_restrictview_clear_exec(bContext *C, wmOperator *op) +static int object_hide_view_clear_exec(bContext *C, wmOperator *op) { ScrArea *sa= CTX_wm_area(C); View3D *v3d= sa->spacedata.first; @@ -160,23 +160,23 @@ static int object_restrictview_clear_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void OBJECT_OT_restrictview_clear(wmOperatorType *ot) +void OBJECT_OT_hide_view_clear(wmOperatorType *ot) { /* identifiers */ ot->name= "Clear Restrict View"; - ot->description = "Reveal the object by setting the restrictview flag"; - ot->idname= "OBJECT_OT_restrictview_clear"; + ot->description = "Reveal the object by setting the hide flag"; + ot->idname= "OBJECT_OT_hide_view_clear"; /* api callbacks */ - ot->exec= object_restrictview_clear_exec; + ot->exec= object_hide_view_clear_exec; ot->poll= ED_operator_view3d_active; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } -static int object_restrictview_set_exec(bContext *C, wmOperator *op) +static int object_hide_view_set_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); short changed = 0; @@ -213,15 +213,15 @@ static int object_restrictview_set_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void OBJECT_OT_restrictview_set(wmOperatorType *ot) +void OBJECT_OT_hide_view_set(wmOperatorType *ot) { /* identifiers */ ot->name= "Set Restrict View"; - ot->description = "Hide the object by setting the restrictview flag"; - ot->idname= "OBJECT_OT_restrictview_set"; + ot->description = "Hide the object by setting the hide flag"; + ot->idname= "OBJECT_OT_hide_view_set"; /* api callbacks */ - ot->exec= object_restrictview_set_exec; + ot->exec= object_hide_view_set_exec; ot->poll= ED_operator_view3d_active; /* flags */ @@ -232,7 +232,7 @@ void OBJECT_OT_restrictview_set(wmOperatorType *ot) } /* 99% same as above except no need for scene refreshing (TODO, update render preview) */ -static int object_restrictrender_clear_exec(bContext *C, wmOperator *op) +static int object_hide_render_clear_exec(bContext *C, wmOperator *op) { short changed= 0; @@ -251,23 +251,23 @@ static int object_restrictrender_clear_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void OBJECT_OT_restrictrender_clear(wmOperatorType *ot) +void OBJECT_OT_hide_render_clear(wmOperatorType *ot) { /* identifiers */ ot->name= "Clear Restrict Render"; - ot->description = "Reveal the render object by setting the restrictrender flag"; - ot->idname= "OBJECT_OT_restrictrender_clear"; + ot->description = "Reveal the render object by setting the hide render flag"; + ot->idname= "OBJECT_OT_hide_render_clear"; /* api callbacks */ - ot->exec= object_restrictrender_clear_exec; + ot->exec= object_hide_render_clear_exec; ot->poll= ED_operator_view3d_active; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } -static int object_restrictrender_set_exec(bContext *C, wmOperator *op) +static int object_hide_render_set_exec(bContext *C, wmOperator *op) { int unselected= RNA_boolean_get(op->ptr, "unselected"); @@ -288,15 +288,15 @@ static int object_restrictrender_set_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void OBJECT_OT_restrictrender_set(wmOperatorType *ot) +void OBJECT_OT_hide_render_set(wmOperatorType *ot) { /* identifiers */ ot->name= "Set Restrict Render"; - ot->description = "Hide the render object by setting the restrictrender flag"; - ot->idname= "OBJECT_OT_restrictrender_set"; + ot->description = "Hide the render object by setting the hide render flag"; + ot->idname= "OBJECT_OT_hide_render_set"; /* api callbacks */ - ot->exec= object_restrictrender_set_exec; + ot->exec= object_hide_render_set_exec; ot->poll= ED_operator_view3d_active; /* flags */ diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h index 8bd0da3b43f..3c22ccdad8f 100644 --- a/source/blender/editors/object/object_intern.h +++ b/source/blender/editors/object/object_intern.h @@ -75,10 +75,10 @@ void OBJECT_OT_drop_named_material(struct wmOperatorType *ot); void OBJECT_OT_mode_set(struct wmOperatorType *ot); void OBJECT_OT_editmode_toggle(struct wmOperatorType *ot); void OBJECT_OT_posemode_toggle(struct wmOperatorType *ot); -void OBJECT_OT_restrictview_set(struct wmOperatorType *ot); -void OBJECT_OT_restrictview_clear(struct wmOperatorType *ot); -void OBJECT_OT_restrictrender_set(struct wmOperatorType *ot); -void OBJECT_OT_restrictrender_clear(struct wmOperatorType *ot); +void OBJECT_OT_hide_view_set(struct wmOperatorType *ot); +void OBJECT_OT_hide_view_clear(struct wmOperatorType *ot); +void OBJECT_OT_hide_render_set(struct wmOperatorType *ot); +void OBJECT_OT_hide_render_clear(struct wmOperatorType *ot); void OBJECT_OT_proxy_make(struct wmOperatorType *ot); void OBJECT_OT_shade_smooth(struct wmOperatorType *ot); void OBJECT_OT_shade_flat(struct wmOperatorType *ot); diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index ba706a0d4b9..804f4dd7704 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -72,10 +72,10 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_editmode_toggle); WM_operatortype_append(OBJECT_OT_posemode_toggle); WM_operatortype_append(OBJECT_OT_proxy_make); - WM_operatortype_append(OBJECT_OT_restrictview_clear); - WM_operatortype_append(OBJECT_OT_restrictview_set); - WM_operatortype_append(OBJECT_OT_restrictrender_clear); - WM_operatortype_append(OBJECT_OT_restrictrender_set); + WM_operatortype_append(OBJECT_OT_hide_view_clear); + WM_operatortype_append(OBJECT_OT_hide_view_set); + WM_operatortype_append(OBJECT_OT_hide_render_clear); + WM_operatortype_append(OBJECT_OT_hide_render_set); WM_operatortype_append(OBJECT_OT_shade_smooth); WM_operatortype_append(OBJECT_OT_shade_flat); WM_operatortype_append(OBJECT_OT_paths_calculate); @@ -318,14 +318,14 @@ void ED_keymap_object(wmKeyConfig *keyconf) WM_keymap_verify_item(keymap, "OBJECT_OT_scale_clear", SKEY, KM_PRESS, KM_ALT, 0); WM_keymap_verify_item(keymap, "OBJECT_OT_origin_clear", OKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "OBJECT_OT_restrictview_clear", HKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "OBJECT_OT_restrictview_set", HKEY, KM_PRESS, 0, 0); - RNA_boolean_set(WM_keymap_add_item(keymap, "OBJECT_OT_restrictview_set", HKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "unselected", 1); + WM_keymap_add_item(keymap, "OBJECT_OT_hide_view_clear", HKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_add_item(keymap, "OBJECT_OT_hide_view_set", HKEY, KM_PRESS, 0, 0); + RNA_boolean_set(WM_keymap_add_item(keymap, "OBJECT_OT_hide_view_set", HKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "unselected", 1); /* same as above but for rendering */ - WM_keymap_add_item(keymap, "OBJECT_OT_restrictrender_clear", HKEY, KM_PRESS, KM_ALT|KM_CTRL, 0); - WM_keymap_add_item(keymap, "OBJECT_OT_restrictrender_set", HKEY, KM_PRESS, KM_CTRL, 0); -// RNA_boolean_set(WM_keymap_add_item(keymap, "OBJECT_OT_restrictrender_set", HKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0)->ptr, "unselected", 1); // conflicts, removing + WM_keymap_add_item(keymap, "OBJECT_OT_hide_render_clear", HKEY, KM_PRESS, KM_ALT|KM_CTRL, 0); + WM_keymap_add_item(keymap, "OBJECT_OT_hide_render_set", HKEY, KM_PRESS, KM_CTRL, 0); +// RNA_boolean_set(WM_keymap_add_item(keymap, "OBJECT_OT_hide_render_set", HKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0)->ptr, "unselected", 1); // conflicts, removing WM_keymap_add_item(keymap, "OBJECT_OT_move_to_layer", MKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/space_nla/nla_buttons.c b/source/blender/editors/space_nla/nla_buttons.c index 81d4e8b6b01..494e42ea2c8 100644 --- a/source/blender/editors/space_nla/nla_buttons.c +++ b/source/blender/editors/space_nla/nla_buttons.c @@ -322,7 +322,7 @@ static void nla_panel_properties(const bContext *C, Panel *pa) column= uiLayoutColumn(layout, 1); uiLayoutSetActive(column, !(RNA_boolean_get(&strip_ptr, "animated_influence") || RNA_boolean_get(&strip_ptr, "animated_time"))); uiItemL(column, "Playback Settings:", 0); - uiItemR(column, &strip_ptr, "muted", 0, NULL, 0); + uiItemR(column, &strip_ptr, "mute", 0, NULL, 0); uiItemR(column, &strip_ptr, "reversed", 0, NULL, 0); } diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c index 95e2cb920fc..3cdc2437c45 100644 --- a/source/blender/editors/space_outliner/outliner.c +++ b/source/blender/editors/space_outliner/outliner.c @@ -5115,17 +5115,17 @@ static void outliner_draw_restrictbuts(uiBlock *block, Scene *scene, ARegion *ar uiBlockSetEmboss(block, UI_EMBOSSN); bt= uiDefIconButR(block, ICONTOG, 0, ICON_RESTRICT_VIEW_OFF, (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, (short)te->ys, 17, OL_H-1, - &ptr, "restrict_view", -1, 0, 0, -1, -1, NULL); + &ptr, "hide", -1, 0, 0, -1, -1, NULL); uiButSetFunc(bt, restrictbutton_view_cb, scene, ob); bt= uiDefIconButR(block, ICONTOG, 0, ICON_RESTRICT_SELECT_OFF, (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX, (short)te->ys, 17, OL_H-1, - &ptr, "restrict_select", -1, 0, 0, -1, -1, NULL); + &ptr, "hide_select", -1, 0, 0, -1, -1, NULL); uiButSetFunc(bt, restrictbutton_sel_cb, scene, ob); bt= uiDefIconButR(block, ICONTOG, 0, ICON_RESTRICT_RENDER_OFF, (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_RENDERX, (short)te->ys, 17, OL_H-1, - &ptr, "restrict_render", -1, 0, 0, -1, -1, NULL); + &ptr, "hide_render", -1, 0, 0, -1, -1, NULL); uiButSetFunc(bt, restrictbutton_rend_cb, scene, ob); uiBlockSetEmboss(block, UI_EMBOSS); diff --git a/source/blender/makesrna/intern/rna_action.c b/source/blender/makesrna/intern/rna_action.c index 1f542e2babe..64adb16c9c7 100644 --- a/source/blender/makesrna/intern/rna_action.c +++ b/source/blender/makesrna/intern/rna_action.c @@ -326,14 +326,14 @@ static void rna_def_action_group(BlenderRNA *brna) RNA_def_property_collection_funcs(prop, 0, "rna_ActionGroup_channels_next", 0, 0, 0, 0, 0); RNA_def_property_ui_text(prop, "Channels", "F-Curves in this group"); - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", AGRP_SELECTED); - RNA_def_property_ui_text(prop, "Selected", "Action Group is selected"); + RNA_def_property_ui_text(prop, "Select", "Action Group is selected"); RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_SELECTED, NULL); - prop= RNA_def_property(srna, "locked", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "lock", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", AGRP_PROTECTED); - RNA_def_property_ui_text(prop, "Locked", "Action Group is locked"); + RNA_def_property_ui_text(prop, "Lock", "Action Group is locked"); RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_animviz.c b/source/blender/makesrna/intern/rna_animviz.c index 985521fe2c6..a85f19e7be4 100644 --- a/source/blender/makesrna/intern/rna_animviz.c +++ b/source/blender/makesrna/intern/rna_animviz.c @@ -104,9 +104,9 @@ static void rna_def_animviz_motionpath_vert(BlenderRNA *brna) RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Coordinates", ""); - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", MOTIONPATH_VERT_SEL); - RNA_def_property_ui_text(prop, "Selected", "Path point is selected for editing"); + RNA_def_property_ui_text(prop, "Select", "Path point is selected for editing"); } static void rna_def_animviz_motion_path(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index 9239378f496..437a22b6692 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -443,7 +443,7 @@ static void rna_def_bone_common(StructRNA *srna, int editbone) RNA_def_property_ui_text(prop, "Cyclic Offset", "When bone doesn't have a parent, it receives cyclic offset effects"); RNA_def_property_update(prop, 0, "rna_Armature_update_data"); - prop= RNA_def_property(srna, "restrict_select", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "hide_select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_UNSELECTABLE); RNA_def_property_ui_text(prop, "Selectable", "Bone is able to be selected"); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); @@ -523,14 +523,14 @@ static void rna_def_bone(BlenderRNA *brna) rna_def_bone_common(srna, 0); // XXX should we define this in PoseChannel wrapping code instead? but PoseChannels directly get some of their flags from here... - prop= RNA_def_property(srna, "hidden", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "hide", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_HIDDEN_P); - RNA_def_property_ui_text(prop, "Hidden", "Bone is not visible when it is not in Edit Mode (i.e. in Object or Pose Modes)"); + RNA_def_property_ui_text(prop, "Hide", "Bone is not visible when it is not in Edit Mode (i.e. in Object or Pose Modes)"); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_SELECTED); - RNA_def_property_ui_text(prop, "Selected", ""); + RNA_def_property_ui_text(prop, "Select", ""); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); /* XXX better matrix descriptions possible (Arystan) */ @@ -604,29 +604,29 @@ static void rna_def_edit_bone(BlenderRNA *brna) rna_def_bone_common(srna, 1); - prop= RNA_def_property(srna, "hidden", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "hide", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_HIDDEN_A); - RNA_def_property_ui_text(prop, "Hidden", "Bone is not visible when in Edit Mode"); + RNA_def_property_ui_text(prop, "Hide", "Bone is not visible when in Edit Mode"); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); - prop= RNA_def_property(srna, "locked", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "lock", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_EDITMODE_LOCKED); - RNA_def_property_ui_text(prop, "Locked", "Bone is not able to be transformed when in Edit Mode"); + RNA_def_property_ui_text(prop, "Lock", "Bone is not able to be transformed when in Edit Mode"); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_SELECTED); - RNA_def_property_ui_text(prop, "Selected", ""); + RNA_def_property_ui_text(prop, "Select", ""); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); - prop= RNA_def_property(srna, "selected_head", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select_head", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_ROOTSEL); - RNA_def_property_ui_text(prop, "Head Selected", ""); + RNA_def_property_ui_text(prop, "Head Select", ""); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); - prop= RNA_def_property(srna, "selected_tail", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select_tail", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_TIPSEL); - RNA_def_property_ui_text(prop, "Tail Selected", ""); + RNA_def_property_ui_text(prop, "Tail Select", ""); RNA_def_property_update(prop, 0, "rna_Armature_redraw_data"); /* calculated and read only, not actual data access */ diff --git a/source/blender/makesrna/intern/rna_color.c b/source/blender/makesrna/intern/rna_color.c index 218ca55e72d..9e004cd5946 100644 --- a/source/blender/makesrna/intern/rna_color.c +++ b/source/blender/makesrna/intern/rna_color.c @@ -305,9 +305,9 @@ static void rna_def_curvemappoint(BlenderRNA *brna) RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Handle Type", "Curve interpolation at this point: bezier or vector"); - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CUMA_SELECT); - RNA_def_property_ui_text(prop, "Selected", "Selection state of the curve point"); + RNA_def_property_ui_text(prop, "Select", "Selection state of the curve point"); } static void rna_def_curvemap(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index fb19e8976c3..1c6c35a88de 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -1034,7 +1034,7 @@ static void rna_def_constraint_locked_track(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Track Axis", "Axis that points to the target object"); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "locked", PROP_ENUM, PROP_NONE); + prop= RNA_def_property(srna, "lock", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "lockflag"); RNA_def_property_enum_items(prop, lock_items); RNA_def_property_ui_text(prop, "Locked Axis", "Axis that points upward"); diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index d8bc683ae12..9301e8dd142 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -525,14 +525,14 @@ static void rna_def_bpoint(BlenderRNA *brna) RNA_def_struct_ui_text(srna, "SplinePoint", "Spline point without handles"); /* Boolean values */ - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "f1", 0); - RNA_def_property_ui_text(prop, "Selected", "Selection status"); + RNA_def_property_ui_text(prop, "Select", "Selection status"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); - prop= RNA_def_property(srna, "hidden", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "hide", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "hide", 0); - RNA_def_property_ui_text(prop, "Hidden", "Visibility status"); + RNA_def_property_ui_text(prop, "Hide", "Visibility status"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); /* Vector value */ @@ -578,24 +578,24 @@ static void rna_def_beztriple(BlenderRNA *brna) RNA_def_struct_ui_text(srna, "Bezier Curve Point", "Bezier curve point with two handles"); /* Boolean values */ - prop= RNA_def_property(srna, "selected_handle1", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select_left_handle", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "f1", 0); RNA_def_property_ui_text(prop, "Handle 1 selected", "Handle 1 selection status"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); - prop= RNA_def_property(srna, "selected_handle2", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select_right_handle", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "f3", 0); RNA_def_property_ui_text(prop, "Handle 2 selected", "Handle 2 selection status"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); - prop= RNA_def_property(srna, "selected_control_point", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select_control_point", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "f2", 0); RNA_def_property_ui_text(prop, "Control Point selected", "Control point selection status"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); - prop= RNA_def_property(srna, "hidden", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "hide", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "hide", 0); - RNA_def_property_ui_text(prop, "Hidden", "Visibility status"); + RNA_def_property_ui_text(prop, "Hide", "Visibility status"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); /* Enums */ diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index d798753d123..cd58b6574be 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -940,7 +940,7 @@ static void rna_def_fmodifier(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Expanded", "F-Curve Modifier's panel is expanded in UI"); RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1); - prop= RNA_def_property(srna, "muted", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "mute", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FMODIFIER_FLAG_MUTED); RNA_def_property_ui_text(prop, "Muted", "F-Curve Modifier will not be evaluated"); RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL); @@ -1156,9 +1156,9 @@ static void rna_def_fpoint(BlenderRNA *brna) RNA_def_struct_ui_text(srna, "F-Curve Sample", "Sample point for F-Curve"); /* Boolean values */ - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", 1); - RNA_def_property_ui_text(prop, "Selected", "Selection status"); + RNA_def_property_ui_text(prop, "Select", "Selection status"); RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); /* Vector value */ @@ -1183,19 +1183,19 @@ static void rna_def_fkeyframe(BlenderRNA *brna) RNA_def_struct_ui_text(srna, "Keyframe", "Bezier curve point with two handles defining a Keyframe on an F-Curve"); /* Boolean values */ - prop= RNA_def_property(srna, "selected_handle1", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select_left_handle", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "f1", 0); RNA_def_property_ui_text(prop, "Handle 1 selected", "Handle 1 selection status"); RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); - prop= RNA_def_property(srna, "selected_handle2", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select_right_handle", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "f3", 0); RNA_def_property_ui_text(prop, "Handle 2 selected", "Handle 2 selection status"); RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select_control_point", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "f2", 0); - RNA_def_property_ui_text(prop, "Selected", "Control point selection status"); + RNA_def_property_ui_text(prop, "Select", "Control point selection status"); RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); /* Enums */ @@ -1384,17 +1384,17 @@ static void rna_def_fcurve(BlenderRNA *brna) RNA_def_property_update(prop, NC_ANIMATION, NULL); /* Flags */ - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FCURVE_SELECTED); - RNA_def_property_ui_text(prop, "Selected", "F-Curve is selected for editing"); + RNA_def_property_ui_text(prop, "Select", "F-Curve is selected for editing"); RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); - prop= RNA_def_property(srna, "locked", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "lock", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FCURVE_PROTECTED); - RNA_def_property_ui_text(prop, "Locked", "F-Curve's settings cannot be edited"); + RNA_def_property_ui_text(prop, "Lock", "F-Curve's settings cannot be edited"); RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); - prop= RNA_def_property(srna, "muted", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "mute", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", FCURVE_MUTED); RNA_def_property_ui_text(prop, "Muted", "F-Curve is not evaluated"); RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); @@ -1404,15 +1404,15 @@ static void rna_def_fcurve(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Auto Clamped Handles", "All auto-handles for F-Curve are clamped"); RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL); - prop= RNA_def_property(srna, "visible", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", FCURVE_VISIBLE); - RNA_def_property_ui_text(prop, "Visible", "F-Curve and its keyframes are shown in the Graph Editor graphs"); + prop= RNA_def_property(srna, "hide", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", FCURVE_VISIBLE); + RNA_def_property_ui_text(prop, "Hide", "F-Curve and its keyframes are hidden in the Graph Editor graphs"); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL); - + /* State Info (for Debugging) */ - prop= RNA_def_property(srna, "disabled", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", FCURVE_DISABLED); - RNA_def_property_ui_text(prop, "Disabled", "F-Curve could not be evaluated in past, so should be skipped when evaluating"); + prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", FCURVE_DISABLED); + RNA_def_property_ui_text(prop, "Enabled", "False when F-Curve could not be evaluated in past, so should be skipped when evaluating"); RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL); /* Collections */ diff --git a/source/blender/makesrna/intern/rna_gpencil.c b/source/blender/makesrna/intern/rna_gpencil.c index a503eab4ba9..0994f67879e 100644 --- a/source/blender/makesrna/intern/rna_gpencil.c +++ b/source/blender/makesrna/intern/rna_gpencil.c @@ -135,9 +135,9 @@ static void rna_def_gpencil_frame(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_FRAME_PAINT); // XXX should it be editable? RNA_def_property_ui_text(prop, "Paint Lock", "Frame is being edited (painted on)"); - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_FRAME_SELECT); - RNA_def_property_ui_text(prop, "Selected", "Frame is selected for editing in the DopeSheet"); + RNA_def_property_ui_text(prop, "Select", "Frame is selected for editing in the DopeSheet"); } static void rna_def_gpencil_layer(BlenderRNA *brna) @@ -203,7 +203,7 @@ static void rna_def_gpencil_layer(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Hide", "Set layer Visibility"); RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); - prop= RNA_def_property(srna, "locked", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "lock", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LAYER_LOCKED); RNA_def_property_ui_text(prop, "Locked", "Protect layer from further editing and/or frame changes"); RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); @@ -219,9 +219,9 @@ static void rna_def_gpencil_layer(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Active", "Set active layer for editing"); RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LAYER_SELECT); - RNA_def_property_ui_text(prop, "Selected", "Layer is selected for editing in the DopeSheet"); + RNA_def_property_ui_text(prop, "Select", "Layer is selected for editing in the DopeSheet"); RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); // XXX keep this option? diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c index b289373f349..8330e0dc32c 100644 --- a/source/blender/makesrna/intern/rna_mesh.c +++ b/source/blender/makesrna/intern/rna_mesh.c @@ -1106,14 +1106,14 @@ static void rna_def_mvert(BlenderRNA *brna) RNA_def_property_float_funcs(prop, "rna_MeshVertex_normal_get", "rna_MeshVertex_normal_set", NULL); RNA_def_property_ui_text(prop, "Normal", "Vertex Normal"); - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SELECT); - RNA_def_property_ui_text(prop, "Selected", ""); + RNA_def_property_ui_text(prop, "Select", ""); RNA_def_property_update(prop, 0, "rna_Mesh_update_select"); - prop= RNA_def_property(srna, "hidden", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "hide", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_HIDE); - RNA_def_property_ui_text(prop, "Hidden", ""); + RNA_def_property_ui_text(prop, "Hide", ""); RNA_def_property_update(prop, 0, "rna_Mesh_update_select"); prop= RNA_def_property(srna, "bevel_weight", PROP_FLOAT, PROP_NONE); @@ -1159,14 +1159,14 @@ static void rna_def_medge(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Bevel Weight", "Weight used by the Bevel modifier"); RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SELECT); - RNA_def_property_ui_text(prop, "Selected", ""); + RNA_def_property_ui_text(prop, "Select", ""); RNA_def_property_update(prop, 0, "rna_Mesh_update_select"); - prop= RNA_def_property(srna, "hidden", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "hide", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_HIDE); - RNA_def_property_ui_text(prop, "Hidden", ""); + RNA_def_property_ui_text(prop, "Hide", ""); RNA_def_property_update(prop, 0, "rna_Mesh_update_select"); prop= RNA_def_property(srna, "seam", PROP_BOOLEAN, PROP_NONE); @@ -1226,14 +1226,14 @@ static void rna_def_mface(BlenderRNA *brna) RNA_def_property_int_funcs(prop, NULL, NULL, "rna_MeshFace_material_index_range"); RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_FACE_SEL); - RNA_def_property_ui_text(prop, "Selected", ""); + RNA_def_property_ui_text(prop, "Select", ""); RNA_def_property_update(prop, 0, "rna_Mesh_update_select"); - prop= RNA_def_property(srna, "hidden", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "hide", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_HIDE); - RNA_def_property_ui_text(prop, "Hidden", ""); + RNA_def_property_ui_text(prop, "Hide", ""); RNA_def_property_update(prop, 0, "rna_Mesh_update_select"); prop= RNA_def_property(srna, "smooth", PROP_BOOLEAN, PROP_NONE); @@ -1383,7 +1383,7 @@ static void rna_def_mtface(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Transparency", "Transparency blending mode"); RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); - prop= RNA_def_property(srna, "uv_selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select_uv", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", TF_SEL1); RNA_def_property_array(prop, 4); RNA_def_property_ui_text(prop, "UV Selected", ""); diff --git a/source/blender/makesrna/intern/rna_nla.c b/source/blender/makesrna/intern/rna_nla.c index accb40d2223..59c7607e930 100644 --- a/source/blender/makesrna/intern/rna_nla.c +++ b/source/blender/makesrna/intern/rna_nla.c @@ -422,11 +422,11 @@ static void rna_def_nlastrip(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", NLASTRIP_FLAG_ACTIVE); RNA_def_property_ui_text(prop, "Active", "NLA Strip is active"); - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", NLASTRIP_FLAG_SELECT); - RNA_def_property_ui_text(prop, "Selected", "NLA Strip is selected"); + RNA_def_property_ui_text(prop, "Select", "NLA Strip is selected"); - prop= RNA_def_property(srna, "muted", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "mute", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", NLASTRIP_FLAG_MUTED); RNA_def_property_ui_text(prop, "Muted", "NLA Strip is not evaluated"); @@ -468,15 +468,15 @@ static void rna_def_nlatrack(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", NLATRACK_SOLO); RNA_def_property_ui_text(prop, "Solo", "NLA Track is evaluated itself (i.e. active Action and all other NLA Tracks in the same AnimData block are disabled)"); - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", NLATRACK_SELECTED); - RNA_def_property_ui_text(prop, "Selected", "NLA Track is selected"); + RNA_def_property_ui_text(prop, "Select", "NLA Track is selected"); - prop= RNA_def_property(srna, "muted", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "mute", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", NLATRACK_MUTED); RNA_def_property_ui_text(prop, "Muted", "NLA Track is not evaluated"); - prop= RNA_def_property(srna, "locked", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "lock", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", NLATRACK_PROTECTED); RNA_def_property_ui_text(prop, "Locked", "NLA Track is locked"); } diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index e45a776eea2..8b285c42e11 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -1538,9 +1538,9 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_LIB_EXCEPTION); RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_layer_update"); - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SELECT); - RNA_def_property_ui_text(prop, "Selected", "Object selection state"); + RNA_def_property_ui_text(prop, "Select", "Object selection state"); RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_select_update"); /* for data access */ @@ -1842,19 +1842,19 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_particle_update"); /* restrict */ - prop= RNA_def_property(srna, "restrict_view", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "hide", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "restrictflag", OB_RESTRICT_VIEW); RNA_def_property_ui_text(prop, "Restrict View", "Restrict visibility in the viewport"); RNA_def_property_ui_icon(prop, ICON_RESTRICT_VIEW_OFF, 1); RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL); - prop= RNA_def_property(srna, "restrict_select", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "hide_select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "restrictflag", OB_RESTRICT_SELECT); RNA_def_property_ui_text(prop, "Restrict Select", "Restrict selection in the viewport"); RNA_def_property_ui_icon(prop, ICON_RESTRICT_SELECT_OFF, 1); RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL); - prop= RNA_def_property(srna, "restrict_render", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "hide_render", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "restrictflag", OB_RESTRICT_RENDER); RNA_def_property_ui_text(prop, "Restrict Render", "Restrict renderability"); RNA_def_property_ui_icon(prop, ICON_RESTRICT_RENDER_OFF, 1); @@ -2111,9 +2111,9 @@ static void rna_def_object_base(BlenderRNA *brna) RNA_def_property_boolean_funcs(prop, NULL, "rna_Base_layer_set"); RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Base_layer_update"); - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BA_SELECT); - RNA_def_property_ui_text(prop, "Selected", "Object base selection state"); + RNA_def_property_ui_text(prop, "Select", "Object base selection state"); RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Base_select_update"); RNA_api_object_base(srna); diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c index 211583e3df6..21ece0ac4a9 100644 --- a/source/blender/makesrna/intern/rna_pose.c +++ b/source/blender/makesrna/intern/rna_pose.c @@ -698,9 +698,9 @@ static void rna_def_pose_channel(BlenderRNA *brna) RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_struct_name_property(srna, prop); - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "selectflag", BONE_SELECTED); - RNA_def_property_ui_text(prop, "Selected", ""); + RNA_def_property_ui_text(prop, "Select", ""); /* Baked Bone Path cache data */ rna_def_motionpath_common(srna); diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index f46efb675ca..7adf4e7d35d 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -776,17 +776,17 @@ static void rna_def_sequence(BlenderRNA *brna) /* flags */ - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SELECT); - RNA_def_property_ui_text(prop, "Selected", ""); + RNA_def_property_ui_text(prop, "Select", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER|NA_SELECTED, NULL); - prop= RNA_def_property(srna, "left_handle_selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select_left_handle", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_LEFTSEL); RNA_def_property_ui_text(prop, "Left Handle Selected", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER|NA_SELECTED, NULL); - prop= RNA_def_property(srna, "right_handle_selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select_right_handle", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_RIGHTSEL); RNA_def_property_ui_text(prop, "Right Handle Selected", ""); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER|NA_SELECTED, NULL); diff --git a/source/blender/makesrna/intern/rna_timeline.c b/source/blender/makesrna/intern/rna_timeline.c index afc1d087cf2..a436c746910 100644 --- a/source/blender/makesrna/intern/rna_timeline.c +++ b/source/blender/makesrna/intern/rna_timeline.c @@ -55,9 +55,9 @@ static void rna_def_timeline_marker(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Frame", "The frame on which the timeline marker appears"); RNA_def_property_update(prop, NC_ANIMATION, NULL); - prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", 1 /*SELECT*/); - RNA_def_property_ui_text(prop, "Selected", "Marker selection state"); + RNA_def_property_ui_text(prop, "Select", "Marker selection state"); RNA_def_property_update(prop, NC_ANIMATION, NULL); #ifdef DURIAN_CAMERA_SWITCH diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index a03488d3878..32d69e48adf 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -1622,10 +1622,10 @@ static void rna_def_userdef_theme_colorset(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Normal", "Color used for the surface of bones"); RNA_def_property_update(prop, 0, "rna_userdef_update"); - prop= RNA_def_property(srna, "selected", PROP_FLOAT, PROP_COLOR); + prop= RNA_def_property(srna, "select", PROP_FLOAT, PROP_COLOR); RNA_def_property_float_sdna(prop, NULL, "select"); RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Selected", "Color used for selected bones"); + RNA_def_property_ui_text(prop, "Select", "Color used for selected bones"); RNA_def_property_update(prop, 0, "rna_userdef_update"); prop= RNA_def_property(srna, "active", PROP_FLOAT, PROP_COLOR); diff --git a/source/blender/makesrna/rna_cleanup/rna_booleans.txt b/source/blender/makesrna/rna_cleanup/rna_booleans.txt index 87d4f8a0736..5c98ef7b9ad 100644 --- a/source/blender/makesrna/rna_cleanup/rna_booleans.txt +++ b/source/blender/makesrna/rna_cleanup/rna_booleans.txt @@ -1,7 +1,6 @@ ActionActuator.continue_last_frame -> use_continue_last_frame: boolean Restore last frame when switching on/off, otherwise play from the start each time ActionGroup.expanded -> show_expanded: boolean Action Group is expanded -ActionGroup.locked -> lock: boolean Action Group is locked -ActionGroup.selected -> select: boolean Action Group is selected + Actuator.expanded -> show_expanded: boolean Set actuator expanded in the user interface AnimData.nla_enabled -> use_nla: boolean NLA stack is evaluated when evaluating this block AnimVizMotionPaths.highlight_keyframes -> show_keyframe_highlight: boolean Emphasize position of keyframes on Motion Paths @@ -40,10 +39,7 @@ ArrayModifier.merge_end_vertices -> use_merge_end_vertices: boolean Merge ArrayModifier.relative_offset -> use_relative_offset: boolean Add an offset relative to the object's bounding box BackgroundImage.show_expanded -> show_expanded: boolean Show the expanded in the user interface BevelModifier.only_vertices -> use_only_vertices: boolean Bevel verts/corners, not edges -BezierSplinePoint.hidden -> hide: boolean Visibility status -BezierSplinePoint.selected_control_point -> select_control_point: boolean Control point selection status -BezierSplinePoint.selected_handle1 -> select_left_handle: boolean Handle 1 selection status -BezierSplinePoint.selected_handle2 -> select_right_handle: boolean Handle 2 selection status + BoidRule.in_air -> use_in_air: boolean Use rule when boid is flying BoidRule.on_land -> use_on_land: boolean Use rule when boid is on land BoidRuleAvoid.predict -> use_predict: boolean Predict target movement @@ -58,14 +54,12 @@ Bone.connected -> use_connect: boolean, (read-only) When bone has a parent Bone.cyclic_offset -> use_cyclic_offset: boolean When bone doesn't have a parent, it receives cyclic offset effects Bone.deform -> use_deform: boolean Bone does not deform any geometry Bone.draw_wire -> show_wire: boolean Bone is always drawn as Wireframe regardless of viewport draw mode. Useful for non-obstructive custom bone shapes -Bone.hidden -> hide: boolean Bone is not visible when it is not in Edit Mode (i.e. in Object or Pose Modes) + Bone.hinge -> use_hinge: boolean Bone inherits rotation or scale from parent bone Bone.inherit_scale -> use_inherit_scale: boolean Bone inherits scaling from parent bone Bone.layer -> layer: boolean Layers bone exists in Bone.local_location -> use_local_location: boolean Bone location is set in local space Bone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean When deforming bone, multiply effects of Vertex Group weights with Envelope influence -Bone.restrict_select -> hide_select: boolean Bone is able to be selected -Bone.selected -> select: boolean BooleanProperty.default -> default: boolean, (read-only) Default value for this number BooleanProperty.default_array -> default_array: boolean, (read-only) Default value for this array Brush.use_accumulate -> use_accumulate: boolean Accumulate stroke dabs on top of each other @@ -180,7 +174,7 @@ Curve.use_path_follow -> use_path_follow: boolean Make curve path children Curve.use_radius -> use_radius: boolean Option for paths: apply the curve radius with path following it and deforming Curve.use_stretch -> use_stretch: boolean Option for curve-deform: makes deformed child to stretch along entire path Curve.use_time_offset -> use_time_offset: boolean Children will use Time Offset value as path distance offset -CurveMapPoint.selected -> select: boolean Selection state of the curve point + CurveMapping.clip -> use_clip: boolean Force the curve view to fit a defined boundary DelaySensor.repeat -> use_repeat: boolean Toggle repeat option. If selected, the sensor restarts after Delay+Dur logic tics DomainFluidSettings.generate_speed_vectors -> use_speed_vectors: boolean Generate speed vectors for vector blur @@ -214,17 +208,13 @@ EditBone.connected -> use_connect: boolean When bone has a parent, bone's EditBone.cyclic_offset -> use_cyclic_offset: boolean When bone doesn't have a parent, it receives cyclic offset effects EditBone.deform -> use_deform: boolean Bone does not deform any geometry EditBone.draw_wire -> show_wire: boolean Bone is always drawn as Wireframe regardless of viewport draw mode. Useful for non-obstructive custom bone shapes -EditBone.hidden -> hide: boolean Bone is not visible when in Edit Mode + EditBone.hinge -> use_hinge: boolean Bone inherits rotation or scale from parent bone EditBone.inherit_scale -> use_inherit_scale: boolean Bone inherits scaling from parent bone EditBone.layer -> layer: boolean Layers bone exists in EditBone.local_location -> use_local_location: boolean Bone location is set in local space -EditBone.locked -> lock: boolean Bone is not able to be transformed when in Edit Mode EditBone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean When deforming bone, multiply effects of Vertex Group weights with Envelope influence -EditBone.restrict_select -> hide_select: boolean Bone is able to be selected -EditBone.selected -> select: boolean -EditBone.selected_head -> select_head: boolean -EditBone.selected_tail -> select_tail: boolean + EditObjectActuator.enable_3d_tracking -> use_3d_tracking: boolean Enable 3D tracking EditObjectActuator.local_angular_velocity -> use_local_angular_velocity: boolean Apply the rotation locally EditObjectActuator.local_linear_velocity -> use_local_linear_velocity: boolean Apply the transformation locally @@ -257,16 +247,9 @@ ExplodeModifier.size -> use_size: boolean Use particle size for the shrapn ExplodeModifier.split_edges -> use_edge_split: boolean Split face edges for nicer shrapnel ExplodeModifier.unborn -> show_unborn: boolean Show mesh when particles are unborn FCurve.auto_clamped_handles -> use_auto_handle_clamp: boolean All auto-handles for F-Curve are clamped -NEGATE * FCurve.disabled -> enabled: boolean F-Curve could not be evaluated in past, so should be skipped when evaluating -FCurve.locked -> lock: boolean F-Curve's settings cannot be edited -FCurve.muted -> mute: boolean F-Curve is not evaluated -FCurve.selected -> select: boolean F-Curve is selected for editing -NEGATE * FCurve.visible -> hide: boolean F-Curve and its keyframes are shown in the Graph Editor graphs -FCurveSample.selected -> select: boolean Selection status FModifier.active -> active: boolean F-Curve Modifier is the one being edited NEGATE * FModifier.disabled -> enabled: boolean, (read-only) F-Curve Modifier has invalid settings and will not be evaluated FModifier.expanded -> show_expanded: boolean F-Curve Modifier's panel is expanded in UI -FModifier.muted -> mute: boolean F-Curve Modifier will not be evaluated FModifierFunctionGenerator.additive -> use_additive: boolean Values generated by this modifier are applied on top of the existing values instead of overwriting them FModifierGenerator.additive -> use_additive: boolean Values generated by this modifier are applied on top of the existing values instead of overwriting them FModifierLimits.use_maximum_x -> use_max_x: boolean Use the maximum X value @@ -314,12 +297,10 @@ FollowPathConstraint.use_fixed_position -> use_fixed_location: boolean Obj Function.registered -> is_registered: boolean, (read-only) Function is registered as callback as part of type registration Function.registered_optional -> is_registered_optional: boolean, (read-only) Function is optionally registered as callback part of type registration GPencilFrame.paint_lock -> is_edited: boolean Frame is being edited (painted on) -GPencilFrame.selected -> select: boolean Frame is selected for editing in the DopeSheet GPencilLayer.active -> active: boolean Set active layer for editing GPencilLayer.frame_lock -> lock_frame: boolean Lock current frame displayed by layer GPencilLayer.hide -> hide: boolean Set layer Visibility -GPencilLayer.locked -> lock: boolean Protect layer from further editing and/or frame changes -GPencilLayer.selected -> select: boolean Layer is selected for editing in the DopeSheet + GPencilLayer.show_points -> show_points: boolean Draw the points which make up the strokes (for debugging purposes) GPencilLayer.use_onion_skinning -> use_onion_skinning: boolean Ghost frames on either side of frame GameBooleanProperty.value -> value: boolean Property value @@ -420,9 +401,6 @@ KeyMapItem.expanded -> show_expanded: boolean Show key map event and prope KeyMapItem.oskey -> oskey: boolean Operating system key pressed KeyMapItem.shift -> shift: boolean Shift key pressed KeyboardSensor.all_keys -> use_all_keys: boolean Trigger this sensor on any keystroke -Keyframe.selected -> select: boolean Control point selection status -Keyframe.selected_handle1 -> select_left_handle: boolean Handle 1 selection status -Keyframe.selected_handle2 -> select_right_handle: boolean Handle 2 selection status KeyingSet.absolute -> use_absolute: boolean Keying Set defines specific paths/settings to be keyframed (i.e. is not reliant on context info) KeyingSet.insertkey_needed -> use_insertkey_needed: boolean Only insert keyframes where they're needed in the relevant F-Curves KeyingSet.insertkey_visual -> use_insertkey_visual: boolean Insert keyframes based on 'visual transforms' @@ -568,13 +546,10 @@ MeshDeformModifier.dynamic -> dynamic: boolean Recompute binding dynamical MeshDeformModifier.invert -> invert_vertex_group: boolean Invert vertex group influence MeshDeformModifier.is_bound -> is_bound: boolean, (read-only) Whether geometry has been bound to control cage MeshEdge.fgon -> is_fgon: boolean, (read-only) Fgon edge -MeshEdge.hidden -> hide: boolean MeshEdge.loose -> is_loose: boolean, (read-only) Loose edge MeshEdge.seam -> use_seam: boolean Seam edge for UV unwrapping -MeshEdge.selected -> select: boolean MeshEdge.sharp -> use_sharp: boolean Sharp edge for the EdgeSplit modifier -MeshFace.hidden -> hide: boolean -MeshFace.selected -> select: boolean + MeshFace.smooth -> use_smooth: boolean MeshTextureFace.alpha_sort -> use_alpha_sort: boolean Enable sorting of faces for correct alpha drawing (slow, use Clip Alpha instead when possible) MeshTextureFace.billboard -> use_billboard: boolean Billboard with Z-axis constraint @@ -589,12 +564,10 @@ MeshTextureFace.tex -> use_texture: boolean Render face with texture MeshTextureFace.text -> use_bitmap_text: boolean Enable bitmap text on face MeshTextureFace.twoside -> use_twoside: boolean Render face two-sided MeshTextureFace.uv_pinned -> uv_pin: boolean -MeshTextureFace.uv_selected -> uv_select: boolean +MeshTextureFace.uv_selected -> select_uv: boolean MeshTextureFaceLayer.active -> active: boolean Sets the layer as active for display and editing MeshTextureFaceLayer.active_clone -> active_clone: boolean Sets the layer as active for cloning MeshTextureFaceLayer.active_render -> active_render: boolean Sets the layer as active for rendering -MeshVertex.hidden -> hide: boolean -MeshVertex.selected -> select: boolean MetaBall.auto_texspace -> use_auto_texspace: boolean Adjusts active object's texture space automatically when transforming object MetaElement.hide -> hide: boolean Hide element MetaElement.negative -> use_negative: boolean Set metaball as negative one @@ -624,7 +597,6 @@ Modifier.realtime -> show_realtime: boolean Realtime display of a modifier Modifier.render -> use_render: boolean Use modifier during rendering MotionPath.editing -> is_edited: boolean Path is being edited MotionPath.use_bone_head -> use_bone_head: boolean, (read-only) For PoseBone paths, use the bone head location when calculating this path -MotionPathVert.selected -> select: boolean Path point is selected for editing MovieSequence.convert_float -> use_float: boolean Convert input to float data MovieSequence.de_interlace -> use_deinterlace: boolean For video movies to remove fields MovieSequence.flip_x -> use_flip_x: boolean Flip on the X axis @@ -663,11 +635,7 @@ NlaStrip.animated_time_cyclic -> use_animated_time_cyclic: boolean Cycle t NlaStrip.auto_blending -> use_auto_blend: boolean Number of frames for Blending In/Out is automatically determined from overlapping strips NlaStrip.muted -> mute: boolean NLA Strip is not evaluated NlaStrip.reversed -> use_reverse: boolean NLA Strip is played back in reverse order (only when timing is automatically determined) -NlaStrip.selected -> select: boolean NLA Strip is selected NlaTrack.active -> active: boolean, (read-only) NLA Track is active -NlaTrack.locked -> lock: boolean NLA Track is locked -NlaTrack.muted -> mute: boolean NLA Track is not evaluated -NlaTrack.selected -> select: boolean NLA Track is selected NlaTrack.solo -> is_solo: boolean, (read-only) NLA Track is evaluated itself (i.e. active Action and all other NLA Tracks in the same AnimData block are disabled) Object.draw_axis -> show_axis: boolean Displays the object's origin and axis Object.draw_bounds -> show_bounds: boolean Displays the object's bounds @@ -682,10 +650,7 @@ Object.lock_rotation -> lock_rotation: boolean Lock editing of rotation in Object.lock_rotation_w -> lock_rotation_w: boolean Lock editing of 'angle' component of four-component rotations in the interface Object.lock_rotations_4d -> lock_rotations_4d: boolean Lock editing of four component rotations by components (instead of as Eulers) Object.lock_scale -> lock_scale: boolean Lock editing of scale in the interface -Object.restrict_render -> hide_render: boolean Restrict renderability -Object.restrict_select -> hide_select: boolean Restrict selection in the viewport -Object.restrict_view -> hide: boolean Restrict visibility in the viewport -Object.selected -> select: boolean Object selection state + Object.shape_key_edit_mode -> use_shape_key_edit_mode: boolean Apply shape keys in edit mode (for Meshes only) Object.shape_key_lock -> show_shape_key: boolean Always show the current Shape for this Object Object.slow_parent -> use_slow_parent: boolean Create a delay in the parent relationship @@ -708,7 +673,6 @@ ObjectActuator.servo_limit_x -> use_servo_limit_x: boolean Set limit to fo ObjectActuator.servo_limit_y -> use_servo_limit_y: boolean Set limit to force along the Y axis ObjectActuator.servo_limit_z -> use_servo_limit_z: boolean Set limit to force along the Z axis ObjectBase.layers -> layer: boolean Layers the object base is on -ObjectBase.selected -> select: boolean Object base selection state ObstacleFluidSettings.active -> use: boolean Object contributes to the fluid simulation ObstacleFluidSettings.export_animated_mesh -> use_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it Operator.has_reports -> has_reports: boolean, (read-only) Operator has a set of reports (warnings and errors) from last execution @@ -825,7 +789,7 @@ PoseBone.lock_rotation -> lock_rotation: boolean Lock editing of rotation PoseBone.lock_rotation_w -> lock_rotation_w: boolean Lock editing of 'angle' component of four-component rotations in the interface PoseBone.lock_rotations_4d -> lock_rotations_4d: boolean Lock editing of four component rotations by components (instead of as Eulers) PoseBone.lock_scale -> lock_scale: boolean Lock editing of scale in the interface -PoseBone.selected -> select: boolean + PoseTemplateSettings.generate_def_rig -> use_generate_deform_rig: boolean Create a copy of the metarig, constrainted by the generated rig Property.is_never_none -> is_never_none: boolean, (read-only) True when this value can't be set to None Property.is_readonly -> is_readonly: boolean, (read-only) Property is editable through RNA @@ -1037,11 +1001,8 @@ Sensor.pulse_false_level -> use_pulse_false_level: boolean Activate FALSE Sensor.pulse_true_level -> use_pulse_true_level: boolean Activate TRUE level triggering (pulse mode) Sensor.tap -> use_tap: boolean Trigger controllers only for an instant, even while the sensor remains true Sequence.frame_locked -> use_frame_lock: boolean Lock the animation curve to the global frame counter -Sequence.left_handle_selected -> select_left_handle: boolean Sequence.lock -> lock: boolean Lock strip so that it can't be transformed Sequence.mute -> mute: boolean -Sequence.right_handle_selected -> select_right_handle: boolean -Sequence.selected -> select: boolean Sequence.use_effect_default_fade -> use_default_fade: boolean Fade effect using the built-in default (usually make transition as long as effect strip) SequenceColorBalance.inverse_gain -> invert_gain: boolean SequenceColorBalance.inverse_gamma -> invert_gamma: boolean @@ -1208,8 +1169,7 @@ SplineIKConstraint.chain_offset -> use_chain_offset: boolean Offset the en SplineIKConstraint.even_divisions -> use_even_divisions: boolean Ignore the relative lengths of the bones when fitting to the curve SplineIKConstraint.use_curve_radius -> use_curve_radius: boolean Average radius of the endpoints is used to tweak the X and Z Scaling of the bones, on top of XZ Scale mode SplineIKConstraint.y_stretch -> use_y_stretch: boolean Stretch the Y axis of the bones to fit the curve -SplinePoint.hidden -> hide: boolean Visibility status -SplinePoint.selected -> select_control_point: boolean Selection status + SpotLamp.auto_clip_end -> use_auto_clip_end: boolean Automatic calculation of clipping-end, based on visible vertices SpotLamp.auto_clip_start -> use_auto_clip_start: boolean Automatic calculation of clipping-start, based on visible vertices SpotLamp.halo -> use_halo: boolean Renders spotlight with a volumetric halo (Buffer Shadows) @@ -1251,7 +1211,6 @@ TextureSlot.rgb_to_intensity -> use_rgb_to_intensity: boolean Converts tex TextureSlot.stencil -> use_stencil: boolean Use this texture as a blending value on the next texture ThemeBoneColorSet.colored_constraints -> show_colored_constraints: boolean Allow the use of colors indicating constraints/keyed status ThemeWidgetColors.shaded -> show_shaded: boolean -TimelineMarker.selected -> select: boolean Marker selection state ToolSettings.auto_normalize -> use_auto_normalize: boolean Ensure all bone-deforming vertex groups add up to 1.0 while weight painting ToolSettings.automerge_editing -> use_automerge_editing: boolean Automatically merge vertices moved to the same location ToolSettings.bone_sketching -> use_bone_sketching: boolean DOC BROKEN From 5ae1687bd7894e1676f1a940f71b07d8a16bf234 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 15 Jul 2010 17:36:00 +0000 Subject: [PATCH 492/674] fix for one of the problems with [#22846] GCC 4.4.1 support in Windows --- source/blender/blenlib/intern/storage.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c index 3315e9645d4..4fb5ca77989 100644 --- a/source/blender/blenlib/intern/storage.c +++ b/source/blender/blenlib/intern/storage.c @@ -29,6 +29,11 @@ * Some really low-level file thingies. */ +/* needed for mingw & _stat64i32 */ +#ifdef FREE_WINDOWS +# define __MSVCRT_VERSION__ 0x0800 +#endif + #include #include #include From 68c59beefdd19fb9140852da8c879ad5d8876101 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 15 Jul 2010 17:54:53 +0000 Subject: [PATCH 493/674] RNA cleanup: some more boolean changes based on discussion with Luca. --- .../makesrna/rna_cleanup/rna_booleans.txt | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/source/blender/makesrna/rna_cleanup/rna_booleans.txt b/source/blender/makesrna/rna_cleanup/rna_booleans.txt index 5c98ef7b9ad..ac3da595ee4 100644 --- a/source/blender/makesrna/rna_cleanup/rna_booleans.txt +++ b/source/blender/makesrna/rna_cleanup/rna_booleans.txt @@ -24,8 +24,8 @@ Armature.draw_custom_bone_shapes -> show_bone_custom_shapes: boolean Draw Armature.draw_group_colors -> show_group_colors: boolean Draw bone group colors Armature.draw_names -> show_names: boolean Draw bone names Armature.show_ghost_only_selected -> show_only_ghost_selected: boolean -Armature.layer -> layer: boolean Armature layer visibility -Armature.layer_protection -> layer_protected: boolean Protected layers in Proxy Instances are restored to Proxy settings on file reload and undo +Armature.layer -> layers: boolean Armature layer visibility +Armature.layer_protection -> layers_protected: boolean Protected layers in Proxy Instances are restored to Proxy settings on file reload and undo Armature.x_axis_mirror -> use_mirror_x: boolean Apply changes to matching bone on opposite side of X-Axis ArmatureModifier.invert -> invert_vertex_group: boolean Invert vertex group influence ArmatureModifier.multi_modifier -> use_multi_modifier: boolean Use same input as previous modifier, and mix results using overall vgroup @@ -57,7 +57,7 @@ Bone.draw_wire -> show_wire: boolean Bone is always drawn as Wireframe reg Bone.hinge -> use_hinge: boolean Bone inherits rotation or scale from parent bone Bone.inherit_scale -> use_inherit_scale: boolean Bone inherits scaling from parent bone -Bone.layer -> layer: boolean Layers bone exists in +Bone.layer -> layers: boolean Layers bone exists in Bone.local_location -> use_local_location: boolean Bone location is set in local space Bone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean When deforming bone, multiply effects of Vertex Group weights with Envelope influence BooleanProperty.default -> default: boolean, (read-only) Default value for this number @@ -143,7 +143,7 @@ ControlFluidSettings.active -> use: boolean Object contributes to the flui ControlFluidSettings.reverse_frames -> use_reverse_frames: boolean Reverse control object movement Controller.expanded -> show_expanded: boolean Set controller expanded in the user interface Controller.priority -> use_priority: boolean Mark controller for execution before all non-marked controllers (good for startup scripts) -Controller.state -> state: boolean, (read-only) Set Controller state index (1 to 30) +Controller.state -> states: boolean, (read-only) Set Controller state index (1 to 30) CopyLocationConstraint.invert_x -> invert_x: boolean Invert the X location CopyLocationConstraint.invert_y -> invert_y: boolean Invert the Y location CopyLocationConstraint.invert_z -> invert_z: boolean Invert the Z location @@ -211,7 +211,7 @@ EditBone.draw_wire -> show_wire: boolean Bone is always drawn as Wireframe EditBone.hinge -> use_hinge: boolean Bone inherits rotation or scale from parent bone EditBone.inherit_scale -> use_inherit_scale: boolean Bone inherits scaling from parent bone -EditBone.layer -> layer: boolean Layers bone exists in +EditBone.layer -> layers: boolean Layers bone exists in EditBone.local_location -> use_local_location: boolean Bone location is set in local space EditBone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean When deforming bone, multiply effects of Vertex Group weights with Envelope influence @@ -233,8 +233,8 @@ EffectSequence.use_crop -> use_crop: boolean Crop image before processing EffectSequence.use_proxy -> use_proxy: boolean Use a preview proxy for this strip EffectSequence.use_translation -> use_translation: boolean Translate image before processing EffectorWeights.do_growing_hair -> apply_to_hair_growing: boolean Use force fields when growing hair -EnvironmentMap.ignore_layers -> layer_ignore: boolean Hide objects on these layers when generating the Environment Map -EnvironmentMapTexture.use_filter_size_min -> filter_size_min: boolean Use Filter Size as a minimal filter value in pixels +EnvironmentMap.ignore_layers -> layers_ignore: boolean Hide objects on these layers when generating the Environment Map +EnvironmentMapTexture.use_filter_size_min -> use_minimum_filter_size: boolean Use Filter Size as a minimal filter value in pixels EnvironmentMapTexture.mipmap -> use_mipmap: boolean Uses auto-generated MIP maps for the image EnvironmentMapTexture.mipmap_gauss -> use_mipmap_gauss: boolean Uses Gauss filter to sample down MIP maps Event.alt -> alt: boolean, (read-only) True when the Alt/Option key is held @@ -248,7 +248,7 @@ ExplodeModifier.split_edges -> use_edge_split: boolean Split face edges fo ExplodeModifier.unborn -> show_unborn: boolean Show mesh when particles are unborn FCurve.auto_clamped_handles -> use_auto_handle_clamp: boolean All auto-handles for F-Curve are clamped FModifier.active -> active: boolean F-Curve Modifier is the one being edited -NEGATE * FModifier.disabled -> enabled: boolean, (read-only) F-Curve Modifier has invalid settings and will not be evaluated +NEGATE * FModifier.disabled -> use: boolean, (read-only) F-Curve Modifier has invalid settings and will not be evaluated FModifier.expanded -> show_expanded: boolean F-Curve Modifier's panel is expanded in UI FModifierFunctionGenerator.additive -> use_additive: boolean Values generated by this modifier are applied on top of the existing values instead of overwriting them FModifierGenerator.additive -> use_additive: boolean Values generated by this modifier are applied on top of the existing values instead of overwriting them @@ -310,7 +310,7 @@ GameObjectSettings.anisotropic_friction -> use_anisotropic_friction: boolean GameObjectSettings.collision_compound -> use_collision_compound: boolean Add children to form a compound collision object GameObjectSettings.debug_state -> show_debug_state: boolean Print state debug info in the game engine GameObjectSettings.ghost -> use_ghost: boolean Object does not restitute collisions, like a ghost -GameObjectSettings.initial_state -> state_initial: boolean Initial state when the game starts +GameObjectSettings.initial_state -> states_initial: boolean Initial state when the game starts GameObjectSettings.lock_x_axis -> lock_location_x: boolean Disable simulation of linear motion along the X axis GameObjectSettings.lock_x_rot_axis -> lock_rotation_x: boolean Disable simulation of angular motion along the X axis GameObjectSettings.lock_y_axis -> lock_location_y: boolean Disable simulation of linear motion along the Y axis @@ -326,8 +326,8 @@ GameObjectSettings.show_sensors -> show_sensors: boolean Shows sensors for GameObjectSettings.show_state_panel -> show_state_panel: boolean Show state panel GameObjectSettings.use_activity_culling -> use_activity_culling: boolean Disable simulation of angular motion along the Z axis GameObjectSettings.use_collision_bounds -> use_collision_bounds: boolean Specify a collision bounds type other than the default -GameObjectSettings.used_state -> state_used: boolean, (read-only) States which are being used by controllers -GameObjectSettings.visible_state -> state_visible: boolean State determining which controllers are displayed +GameObjectSettings.used_state -> states_used: boolean, (read-only) States which are being used by controllers +GameObjectSettings.visible_state -> states_visible: boolean State determining which controllers are displayed GameProperty.debug -> show_debug: boolean Print debug information for this property GameSoftBodySettings.bending_const -> use_bending_constraints: boolean Enable bending constraints GameSoftBodySettings.cluster_rigid_to_softbody -> use_cluster_rigid_to_softbody: boolean Enable cluster collision between soft and rigid body @@ -335,7 +335,7 @@ GameSoftBodySettings.cluster_soft_to_softbody -> use_cluster_soft_to_softbody: GameSoftBodySettings.shape_match -> use_shape_match: boolean Enable soft body shape matching goal GlowSequence.only_boost -> use_only_boost: boolean Show the glow buffer only GreasePencil.use_stroke_endpoints -> use_stroke_endpoints: boolean Only use the first and last parts of the stroke for snapping -Group.layer -> layer: boolean Layers visible when this groups is instanced as a dupli +Group.layer -> layers: boolean Layers visible when this groups is instanced as a dupli ID.fake_user -> use_fake_user: boolean Saves this datablock even if it has no users ID.tag -> tag: boolean Tools can use this to tag data, (initial state is undefined) Image.animated -> use_animation: boolean Use as animated texture in the game engine @@ -542,7 +542,7 @@ Mesh.use_paint_mask -> use_paint_mask: boolean Face selection masking for Mesh.vertex_normal_flip -> use_vertex_normal_flip: boolean Flip vertex normals towards the camera during render MeshColorLayer.active -> active: boolean Sets the layer as active for display and editing MeshColorLayer.active_render -> active_render: boolean Sets the layer as active for rendering -MeshDeformModifier.dynamic -> dynamic: boolean Recompute binding dynamically on top of other deformers (slower and more memory consuming.) +MeshDeformModifier.dynamic -> use_dynamic_bind: boolean Recompute binding dynamically on top of other deformers (slower and more memory consuming.) MeshDeformModifier.invert -> invert_vertex_group: boolean Invert vertex group influence MeshDeformModifier.is_bound -> is_bound: boolean, (read-only) Whether geometry has been bound to control cage MeshEdge.fgon -> is_fgon: boolean, (read-only) Fgon edge @@ -563,7 +563,7 @@ MeshTextureFace.shared -> use_blend_shared: boolean Blend vertex colors ac MeshTextureFace.tex -> use_texture: boolean Render face with texture MeshTextureFace.text -> use_bitmap_text: boolean Enable bitmap text on face MeshTextureFace.twoside -> use_twoside: boolean Render face two-sided -MeshTextureFace.uv_pinned -> uv_pin: boolean +MeshTextureFace.uv_pinned -> pin_uv: boolean MeshTextureFace.uv_selected -> select_uv: boolean MeshTextureFaceLayer.active -> active: boolean Sets the layer as active for display and editing MeshTextureFaceLayer.active_clone -> active_clone: boolean Sets the layer as active for cloning @@ -644,7 +644,7 @@ Object.draw_texture_space -> show_texture_space: boolean Displays the obje Object.draw_transparent -> show_transparent: boolean Enables transparent materials for the object (Mesh only) Object.draw_wire -> show_wire: boolean Adds the object's wireframe over solid drawing Object.duplis_used -> is_duplicator: boolean, (read-only) -Object.layers -> layer: boolean Layers the object is on +Object.layers -> layers: boolean Layers the object is on Object.lock_location -> lock_location: boolean Lock editing of location in the interface Object.lock_rotation -> lock_rotation: boolean Lock editing of rotation in the interface Object.lock_rotation_w -> lock_rotation_w: boolean Lock editing of 'angle' component of four-component rotations in the interface @@ -672,7 +672,7 @@ ObjectActuator.local_torque -> use_local_torque: boolean Torque is defined ObjectActuator.servo_limit_x -> use_servo_limit_x: boolean Set limit to force along the X axis ObjectActuator.servo_limit_y -> use_servo_limit_y: boolean Set limit to force along the Y axis ObjectActuator.servo_limit_z -> use_servo_limit_z: boolean Set limit to force along the Z axis -ObjectBase.layers -> layer: boolean Layers the object base is on +ObjectBase.layers -> layers: boolean Layers the object base is on ObstacleFluidSettings.active -> use: boolean Object contributes to the fluid simulation ObstacleFluidSettings.export_animated_mesh -> use_animated_mesh: boolean Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it Operator.has_reports -> has_reports: boolean, (read-only) Operator has a set of reports (warnings and errors) from last execution @@ -767,7 +767,7 @@ PointCache.baked -> is_baked: boolean, (read-only) PointCache.baking -> is_baking: boolean, (read-only) PointCache.disk_cache -> use_disk_cache: boolean Save cache files to disk (.blend file must be saved first) PointCache.external -> use_external: boolean Read cache from an external location -PointCache.has_skipped_frames-> frames_skipped: boolean, (read-only) +PointCache.has_skipped_frames-> has_skipped_frames: boolean, (read-only) PointCache.outdated -> is_outdated: boolean, (read-only) PointCache.quick_cache -> use_quick_cache: boolean Update simulation with cache steps PointCache.use_library_path -> use_library_path: boolean Use this files path when library linked into another file. @@ -839,9 +839,9 @@ RenderLayer.pass_z -> use_pass_z: boolean, (read-only) Deliver Z values pa RenderLayer.sky -> use_sky: boolean, (read-only) Render Sky in this Layer RenderLayer.solid -> use_solid: boolean, (read-only) Render Solid faces in this Layer RenderLayer.strand -> use_strand: boolean, (read-only) Render Strands in this Layer -RenderLayer.visible_layers -> layer: boolean, (read-only) Scene layers included in this render layer +RenderLayer.visible_layers -> layers: boolean, (read-only) Scene layers included in this render layer RenderLayer.zmask -> use_zmask: boolean, (read-only) Only render what's in front of the solid z values -RenderLayer.zmask_layers -> layer_zmask: boolean, (read-only) Zmask scene layers +RenderLayer.zmask_layers -> layers_zmask: boolean, (read-only) Zmask scene layers RenderLayer.zmask_negate -> invert_zmask: boolean, (read-only) For Zmask, only render what is behind solid z values instead of in front RenderLayer.ztransp -> use_ztransp: boolean, (read-only) Render Z-Transparent faces in this Layer (On top of Solid and Halos) RenderSettings.backbuf -> use_backbuf: boolean Render backbuffer image @@ -903,7 +903,7 @@ RenderSettings.use_textures -> use_textures: boolean Use textures to affec NEGATE * RigidBodyJointConstraint.disable_linked_collision -> use_linked_collision: boolean Disable collision between linked bodies RigidBodyJointConstraint.draw_pivot -> show_pivot: boolean Display the pivot point and rotation in 3D view Scene.frame_drop -> use_frame_drop: boolean Play back dropping frames if frame display is too slow -Scene.layers -> layer: boolean Layers visible when rendering the scene +Scene.layers -> layers: boolean Layers visible when rendering the scene Scene.mute_audio -> mute_audio: boolean Play back of audio from Sequence Editor will be muted Scene.nla_tweakmode_on -> use_nla_tweakmode: boolean, (read-only) Indicates whether there is any action referenced by NLA being edited. Strictly read-only Scene.pov_radio_always_sample -> use_pov_radio_always_sample: boolean Only use the data from the pretrace step and not gather any new samples during the final radiosity pass @@ -965,9 +965,9 @@ SceneRenderLayer.pass_z -> use_pass_z: boolean Deliver Z values pass SceneRenderLayer.sky -> use_sky: boolean Render Sky in this Layer SceneRenderLayer.solid -> use_solid: boolean Render Solid faces in this Layer SceneRenderLayer.strand -> use_strand: boolean Render Strands in this Layer -SceneRenderLayer.visible_layers -> layer: boolean Scene layers included in this render layer +SceneRenderLayer.visible_layers -> layers: boolean Scene layers included in this render layer SceneRenderLayer.zmask -> use_zmask: boolean Only render what's in front of the solid z values -SceneRenderLayer.zmask_layers -> layer_zmask: boolean Zmask scene layers +SceneRenderLayer.zmask_layers -> layers_zmask: boolean Zmask scene layers SceneRenderLayer.zmask_negate -> invert_zmask: boolean For Zmask, only render what is behind solid z values instead of in front SceneRenderLayer.ztransp -> use_ztransp: boolean Render Z-Transparent faces in this Layer (On top of Solid and Halos) SceneSequence.convert_float -> use_float: boolean Convert input to float data @@ -1142,7 +1142,7 @@ SpaceView3D.display_render_override -> show_only_render: boolean Display o SpaceView3D.display_x_axis -> show_axis_x: boolean Show the X axis line in perspective view SpaceView3D.display_y_axis -> show_axis_y: boolean Show the Y axis line in perspective view SpaceView3D.display_z_axis -> show_axis_z: boolean Show the Z axis line in perspective view -SpaceView3D.layers -> layer: boolean Layers visible in this 3D View +SpaceView3D.layers -> layers: boolean Layers visible in this 3D View SpaceView3D.lock_camera_and_layers -> lock_camera_and_layers: boolean Use the scene's active camera and layers in this view, rather than local layers SpaceView3D.manipulator -> use_manipulator: boolean Use a 3D manipulator widget for controlling transforms SpaceView3D.manipulator_rotate -> use_manipulator_rotate: boolean Use the manipulator for rotation transformations @@ -1153,7 +1153,7 @@ SpaceView3D.outline_selected -> show_outline_selected: boolean Show an out SpaceView3D.pivot_point_align -> use_pivot_point_align: boolean Manipulate object centers only SpaceView3D.relationship_lines -> show_relationship_lines: boolean Show dashed lines indicating parent or constraint relationships SpaceView3D.textured_solid -> show_textured_solid: boolean Display face-assigned textures in solid view -SpaceView3D.used_layers -> layer_used: boolean, (read-only) Layers that contain something +SpaceView3D.used_layers -> layers_used: boolean, (read-only) Layers that contain something SpeedControlSequence.curve_compress_y -> use_curve_compress_y: boolean Scale F-Curve value to get the target frame number, F-Curve value runs from 0.0 to 1.0 SpeedControlSequence.curve_velocity -> use_curve_velocity: boolean Interpret the F-Curve value as a velocity instead of a frame number SpeedControlSequence.frame_blending -> use_frame_blend: boolean Blend two frames into the target for a smoother result @@ -1178,7 +1178,7 @@ SpotLamp.shadow_layer -> use_shadow_layer: boolean Causes only objects on SpotLamp.show_cone -> show_cone: boolean Draw transparent cone in 3D view to visualize which objects are contained in it SpotLamp.sphere -> use_sphere: boolean Sets light intensity to zero beyond lamp distance SpotLamp.square -> use_square: boolean Casts a square spot light shape -StateActuator.state -> state: boolean +StateActuator.state -> states: boolean SubsurfModifier.optimal_display -> show_only_control_edges: boolean Skip drawing/rendering of interior subdivided edges SubsurfModifier.subsurf_uv -> use_subsurf_uv: boolean Use subsurf to subdivide UVs SunLamp.only_shadow -> use_only_shadow: boolean Causes light to cast shadows only without illuminating objects From 7df9df137391509a4795b7770e2e964379bffd15 Mon Sep 17 00:00:00 2001 From: Luca Bonavita Date: Thu, 15 Jul 2010 18:34:25 +0000 Subject: [PATCH 494/674] == rna cleanup == - after talking with brecht, changes keys prefixes with "is_pressed_alt" and so on if readonly and "pressed_alt" if not readonly - updated the rna_cleaner.py with real prefixes and keywords so it's clear what it is being used kw_prefixes = [ 'active','apply','bl','exclude','has','invert','is','lock', \ 'pressed','show','show_only','use','use_only','layers','states'] kw = ['active','hide','invert','select','layers','mute','states','use','lock'] --- .../makesrna/rna_cleanup/rna_booleans.txt | 18 +++++++++--------- .../makesrna/rna_cleanup/rna_cleaner.py | 7 +++---- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/source/blender/makesrna/rna_cleanup/rna_booleans.txt b/source/blender/makesrna/rna_cleanup/rna_booleans.txt index ac3da595ee4..51be6427c88 100644 --- a/source/blender/makesrna/rna_cleanup/rna_booleans.txt +++ b/source/blender/makesrna/rna_cleanup/rna_booleans.txt @@ -237,10 +237,10 @@ EnvironmentMap.ignore_layers -> layers_ignore: boolean Hide objects on the EnvironmentMapTexture.use_filter_size_min -> use_minimum_filter_size: boolean Use Filter Size as a minimal filter value in pixels EnvironmentMapTexture.mipmap -> use_mipmap: boolean Uses auto-generated MIP maps for the image EnvironmentMapTexture.mipmap_gauss -> use_mipmap_gauss: boolean Uses Gauss filter to sample down MIP maps -Event.alt -> alt: boolean, (read-only) True when the Alt/Option key is held -Event.ctrl -> ctrl: boolean, (read-only) True when the Ctrl key is held -Event.oskey -> oskey: boolean, (read-only) True when the Cmd key is held -Event.shift -> shift: boolean, (read-only) True when the Shift key is held +Event.alt -> is_pressed_alt: boolean, (read-only) True when the Alt/Option key is held +Event.ctrl -> is_pressed_ctrl: boolean, (read-only) True when the Ctrl key is held +Event.oskey -> is_pressed_cmd: boolean, (read-only) True when the Cmd key is held +Event.shift -> is_pressed_shift: boolean, (read-only) True when the Shift key is held ExplodeModifier.alive -> show_alive: boolean Show mesh when particles are alive ExplodeModifier.dead -> show_dead: boolean Show mesh when particles are dead ExplodeModifier.size -> use_size: boolean Use particle size for the shrapnel @@ -394,12 +394,12 @@ KeyMap.items_expanded -> show_expanded_items: boolean Expanded in the user KeyMap.modal -> is_modal: boolean, (read-only) Indicates that a keymap is used for translate modal events for an operator KeyMap.user_defined -> is_user_defined: boolean Keymap is defined by the user KeyMapItem.active -> active: boolean Activate or deactivate item -KeyMapItem.alt -> alt: boolean Alt key pressed -KeyMapItem.any -> any: boolean Any modifier keys pressed -KeyMapItem.ctrl -> ctrl: boolean Control key pressed +KeyMapItem.alt -> pressed_alt: boolean Alt key pressed +KeyMapItem.any -> pressed_any: boolean Any modifier keys pressed +KeyMapItem.ctrl -> pressed_ctrl: boolean Control key pressed KeyMapItem.expanded -> show_expanded: boolean Show key map event and property details in the user interface -KeyMapItem.oskey -> oskey: boolean Operating system key pressed -KeyMapItem.shift -> shift: boolean Shift key pressed +KeyMapItem.oskey -> pressed_cmd: boolean Operating system key pressed +KeyMapItem.shift -> pressed_shift: boolean Shift key pressed KeyboardSensor.all_keys -> use_all_keys: boolean Trigger this sensor on any keystroke KeyingSet.absolute -> use_absolute: boolean Keying Set defines specific paths/settings to be keyframed (i.e. is not reliant on context info) KeyingSet.insertkey_needed -> use_insertkey_needed: boolean Only insert keyframes where they're needed in the relevant F-Curves diff --git a/source/blender/makesrna/rna_cleanup/rna_cleaner.py b/source/blender/makesrna/rna_cleanup/rna_cleaner.py index f39ee586237..dbc27c8e5d5 100755 --- a/source/blender/makesrna/rna_cleanup/rna_cleaner.py +++ b/source/blender/makesrna/rna_cleanup/rna_cleaner.py @@ -268,10 +268,9 @@ def main(): sort_choices = ['note','changed','class','from','to','kw'] default_sort_choice = sort_choices[0] - #kw_prefixes = ['invert','is','lock','show','show_only','use','use_only'] - #kw = ['hide','select','layer','state'] - kw_prefixes = ['has','invert','is','lock','layers','show','show_only','states','use','use_only'] - kw = ['layers','states','value'] + kw_prefixes = [ 'active','apply','bl','exclude','has','invert','is','lock', \ + 'pressed','show','show_only','use','use_only','layers','states'] + kw = ['active','hide','invert','select','layers','mute','states','use','lock'] input_filename, sort_priority = check_commandline() props_list,props_length_max = get_props(input_filename) From 7a3ff665752e04fa20285fb82a4ddbcf34c12835 Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Thu, 15 Jul 2010 19:42:36 +0000 Subject: [PATCH 495/674] == installation paths == * fix case where environment variable was used without subfolder * some small cleanup --- source/blender/blenlib/intern/path_util.c | 116 ++++++++++++---------- 1 file changed, 66 insertions(+), 50 deletions(-) diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 76877198bcb..c1e0059e954 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -947,13 +947,13 @@ static int test_path(char *targetpath, char *path_base, char *path_sep, char *fo } } -static int test_env_path(char *path, char *subfolder_name, char *envvar) +static int test_env_path(char *path, char *envvar) { char *env = envvar?getenv(envvar):NULL; if (!env) return 0; if (BLI_is_dir(env)) { - BLI_make_file_string("/", path, env, subfolder_name); + BLI_strncpy(path, env, FILE_MAX); return 1; } else { path[0] = '\0'; @@ -961,10 +961,11 @@ static int test_env_path(char *path, char *subfolder_name, char *envvar) } } -static int get_path_local(char *targetpath, char *folder_name) +static int get_path_local(char *targetpath, char *folder_name, char *subfolder_name) { extern char bprogname[]; /* argv[0] from creator.c */ char bprogdir[FILE_MAX]; + char relfolder[FILE_MAX]; char cwd[FILE_MAX]; char *s; int i; @@ -973,6 +974,11 @@ static int get_path_local(char *targetpath, char *folder_name) printf("get_path_local...\n"); #endif + if (subfolder_name) { + BLI_join_dirfile(relfolder, folder_name, subfolder_name); + } else { + BLI_strncpy(relfolder, folder_name, FILE_MAX); + } /* use argv[0] (bprogname) to get the path to the executable */ s = BLI_last_slash(bprogname); @@ -980,23 +986,23 @@ static int get_path_local(char *targetpath, char *folder_name) BLI_strncpy(bprogdir, bprogname, i); /* try EXECUTABLE_DIR/folder_name */ - if(test_path(targetpath, bprogdir, "", folder_name)) + if(test_path(targetpath, bprogdir, "", relfolder)) return 1; /* try CWD/release/folder_name */ - if(test_path(targetpath, BLI_getwdN(cwd), "release", folder_name)) + if(test_path(targetpath, BLI_getwdN(cwd), "release", relfolder)) return 1; /* try EXECUTABLE_DIR/release/folder_name */ - if(test_path(targetpath, bprogdir, "release", folder_name)) + if(test_path(targetpath, bprogdir, "release", relfolder)) return 1; /* try EXECUTABLE_DIR/2.5/folder_name - new default directory for local blender installed files */ - if(test_path(targetpath, bprogdir, blender_version_decimal(), folder_name)) + if(test_path(targetpath, bprogdir, blender_version_decimal(), relfolder)) return 1; /* try ./.blender/folder_name -- DEPRECATED, need to update build systems */ - if(test_path(targetpath, bprogdir, ".blender", folder_name)) + if(test_path(targetpath, bprogdir, ".blender", relfolder)) return 1; return 0; @@ -1009,9 +1015,15 @@ static int get_path_user(char *targetpath, char *folder_name, char *subfolder_na user_path[0] = '\0'; - if (test_env_path(targetpath, subfolder_name, envvar)) - return 1; - + if (test_env_path(user_path, envvar)) { + if (subfolder_name) { + return test_path(targetpath, user_path, NULL, subfolder_name); + } else { + BLI_strncpy(targetpath, user_path, FILE_MAX); + return 1; + } + } + user_base_path = (const char *)GHOST_getUserDir(); if (user_base_path) { BLI_snprintf(user_path, FILE_MAX, BLENDER_USER_FORMAT, user_base_path, blender_version_decimal()); @@ -1024,8 +1036,13 @@ static int get_path_user(char *targetpath, char *folder_name, char *subfolder_na printf("get_path_user: %s\n", user_path); #endif - /* try $HOME/folder_name */ - return test_path(targetpath, user_path, NULL, folder_name); + if (subfolder_name) { + /* try $HOME/folder_name/subfolder_name */ + return test_path(targetpath, user_path, folder_name, subfolder_name); + } else { + /* try $HOME/folder_name */ + return test_path(targetpath, user_path, NULL, folder_name); + } } static int get_path_system(char *targetpath, char *folder_name, char *subfolder_name, char *envvar) @@ -1035,8 +1052,14 @@ static int get_path_system(char *targetpath, char *folder_name, char *subfolder_ system_path[0] = '\0'; - if (test_env_path(targetpath, subfolder_name, envvar)) - return 1; + if (test_env_path(system_path, envvar)) { + if (subfolder_name) { + return test_path(targetpath, system_path, NULL, subfolder_name); + } else { + BLI_strncpy(targetpath, system_path, FILE_MAX); + return 1; + } + } system_base_path = (const char *)GHOST_getSystemDir(); if (system_base_path) { @@ -1050,8 +1073,13 @@ static int get_path_system(char *targetpath, char *folder_name, char *subfolder_ printf("get_path_system: %s\n", system_path); #endif - /* try $BLENDERPATH/folder_name */ - return test_path(targetpath, system_path, NULL, folder_name); + if (subfolder_name) { + /* try $BLENDERPATH/folder_name/subfolder_name */ + return test_path(targetpath, system_path, folder_name, subfolder_name); + } else { + /* try $BLENDERPATH/folder_name */ + return test_path(targetpath, system_path, NULL, folder_name); + } } /* get a folder out of the 'folder_id' presets for paths */ @@ -1059,72 +1087,60 @@ static int get_path_system(char *targetpath, char *folder_name, char *subfolder_ char *BLI_get_folder(int folder_id, char *subfolder) { static char path[FILE_MAX] = ""; - char search_path[FILE_MAX]; switch (folder_id) { case BLENDER_DATAFILES: /* general case */ - BLI_join_dirfile(search_path, "datafiles", subfolder); - if (get_path_local(path, search_path)) break; - if (get_path_user(path, search_path, subfolder, "BLENDER_USER_DATAFILES")) break; - if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_DATAFILES")) break; + if (get_path_local(path, "datafiles", subfolder)) break; + if (get_path_user(path, "datafiles", subfolder, "BLENDER_USER_DATAFILES")) break; + if (get_path_system(path, "datafiles", subfolder, "BLENDER_SYSTEM_DATAFILES")) break; return NULL; case BLENDER_USER_DATAFILES: - BLI_join_dirfile(search_path, "datafiles", subfolder); - if (get_path_local(path, search_path)) break; - if (get_path_user(path, search_path, subfolder, "BLENDER_USER_DATAFILES")) break; + if (get_path_local(path, "datafiles", subfolder)) break; + if (get_path_user(path, "datafiles", subfolder, "BLENDER_USER_DATAFILES")) break; return NULL; case BLENDER_SYSTEM_DATAFILES: - BLI_join_dirfile(search_path, "datafiles", subfolder); - if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_DATAFILES")) break; + if (get_path_system(path, "datafiles", subfolder, "BLENDER_SYSTEM_DATAFILES")) break; return NULL; case BLENDER_CONFIG: /* general case */ - BLI_join_dirfile(search_path, "config", subfolder); - if (get_path_local(path, search_path)) break; - if (get_path_user(path, search_path, subfolder, "BLENDER_USER_CONFIG")) break; - if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_CONFIG")) break; + if (get_path_local(path, "config", subfolder)) break; + if (get_path_user(path, "config", subfolder, "BLENDER_USER_CONFIG")) break; + if (get_path_system(path, "config", subfolder, "BLENDER_SYSTEM_CONFIG")) break; return NULL; case BLENDER_USER_CONFIG: - BLI_join_dirfile(search_path, "config", subfolder); - if (get_path_local(path, search_path)) break; - if (get_path_user(path, search_path, subfolder, "BLENDER_USER_CONFIG")) break; + if (get_path_local(path, "config", subfolder)) break; + if (get_path_user(path, "config", subfolder, "BLENDER_USER_CONFIG")) break; return NULL; case BLENDER_SYSTEM_CONFIG: - BLI_join_dirfile(search_path, "config", subfolder); - if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_CONFIG")) break; + if (get_path_system(path, "config", subfolder, "BLENDER_SYSTEM_CONFIG")) break; return NULL; case BLENDER_SCRIPTS: /* general case */ - BLI_join_dirfile(search_path, "scripts", subfolder); - if (get_path_local(path, search_path)) break; - if (get_path_user(path, search_path, subfolder, "BLENDER_USER_SCRIPTS")) break; - if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_SCRIPTS")) break; + if (get_path_local(path, "scripts", subfolder)) break; + if (get_path_user(path, "scripts", subfolder, "BLENDER_USER_SCRIPTS")) break; + if (get_path_system(path, "scripts", subfolder, "BLENDER_SYSTEM_SCRIPTS")) break; return NULL; case BLENDER_USER_SCRIPTS: - BLI_join_dirfile(search_path, "scripts", subfolder); - if (get_path_local(path, search_path)) break; - if (get_path_user(path, search_path, subfolder, "BLENDER_USER_SCRIPTS")) break; + if (get_path_local(path, "scripts", subfolder)) break; + if (get_path_user(path, "scripts", subfolder, "BLENDER_USER_SCRIPTS")) break; return NULL; case BLENDER_SYSTEM_SCRIPTS: - BLI_join_dirfile(search_path, "scripts", subfolder); - if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_SCRIPTS")) break; + if (get_path_system(path, "scripts", subfolder, "BLENDER_SYSTEM_SCRIPTS")) break; return NULL; case BLENDER_PYTHON: /* general case */ - BLI_join_dirfile(search_path, "python", subfolder); - if (get_path_local(path, search_path)) break; - if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_PYTHON")) break; + if (get_path_local(path, "python", subfolder)) break; + if (get_path_system(path, "python", subfolder, "BLENDER_SYSTEM_PYTHON")) break; return NULL; case BLENDER_SYSTEM_PYTHON: - BLI_join_dirfile(search_path, "python", subfolder); - if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_PYTHON")) break; + if (get_path_system(path, "python", subfolder, "BLENDER_SYSTEM_PYTHON")) break; return NULL; } From 7fc9eee08afe87f3f688e8b9e9442951d6a08590 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 15 Jul 2010 19:58:23 +0000 Subject: [PATCH 496/674] - updated man page from --help output. - cmake now installs the man page. - added cmake_linux_install.sh, shell script which downloads and builds blender. --- .../example_scripts/cmake_linux_install.sh | 37 +++++++++++++++++++ doc/blender.1 | 14 ++++--- doc/blender.1.py | 4 +- source/creator/CMakeLists.txt | 4 ++ 4 files changed, 52 insertions(+), 7 deletions(-) create mode 100644 build_files/cmake/example_scripts/cmake_linux_install.sh diff --git a/build_files/cmake/example_scripts/cmake_linux_install.sh b/build_files/cmake/example_scripts/cmake_linux_install.sh new file mode 100644 index 00000000000..7770efcf392 --- /dev/null +++ b/build_files/cmake/example_scripts/cmake_linux_install.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +# This shell script checks out and compiles blender, tested on ubuntu 10.04 +# assumes you have dependancies installed alredy + +# See this page for more info: +# http://wiki.blender.org/index.php/Dev:2.5/Doc/Building_Blender/Linux/Generic_Distro/CMake + +# grab blender +mkdir ~/blender-svn +cd ~/blender-svn +svn co https://svn.blender.org/svnroot/bf-blender/trunk/blender + +# create cmake dir +mkdir ~/blender-svn/build-cmake +cd ~/blender-svn/build-cmake + +# cmake without copying files for fast rebuilds +# the files from svn will be used in place +cmake ../blender -DWITH_INSTALL:BOOL=FALSE + +# make blender, will take some time +make + +# link the binary to blenders source directory to run quickly +ln -s ~/blender-svn/build-cmake/bin/blender ~/blender-svn/blender/blender.bin + +# useful info +echo "" +echo "* Useful Commands *" +echo " Run Blender: ~/blender-svn/blender/blender.bin" +echo " Update Blender: svn up ~/blender-svn/blender" +echo " Reconfigure Blender: cd ~/blender-svn/build-cmake ; cmake ." +echo " Build Blender: cd ~/blender-svn/build-cmake ; make" +echo "" + + diff --git a/doc/blender.1 b/doc/blender.1 index 43ac5638765..dd5e60ff900 100644 --- a/doc/blender.1 +++ b/doc/blender.1 @@ -1,4 +1,4 @@ -.TH "BLENDER" "1" "June 27, 2010" "Blender Blender 2\&.52 (sub 5) " +.TH "BLENDER" "1" "July 15, 2010" "Blender Blender 2\&.52 (sub 5) " .SH NAME blender \- a 3D modelling and rendering package @@ -317,11 +317,13 @@ Arguments are executed in the order they are given. eg .br .br .SH "ENVIRONMENT VARIABLES" - \fIHOME\fR Store files such as .blender/ .B.blend .Bfs .Blog here. - \fIBLENDERPATH\fR System directory to use for data files and scripts. - For this build of blender the default \fIBLENDERPATH\fR is... - "/usr/local/share/blender/2.5" - setting the \fIBLENDERPATH\fR will override this + \fIBLENDER_USER_CONFIG\fR Directory for user configuration files. + \fIBLENDER_SYSTEM_CONFIG\fR Directory for system wide configuration files. + \fIBLENDER_USER_SCRIPTS\fR Directory for user scripts. + \fIBLENDER_SYSTEM_SCRIPTS\fR Directory for system wide scripts. + \fIBLENDER_USER_DATAFILES\fR Directory for user data files (icons, translations, ..). + \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. \fIPYTHONHOME\fR Path to the python directory, eg. /usr/lib/python. .br diff --git a/doc/blender.1.py b/doc/blender.1.py index 05b491cf21e..7c7fc987c64 100644 --- a/doc/blender.1.py +++ b/doc/blender.1.py @@ -53,7 +53,7 @@ blender_version = blender_version.split("Build")[0] date_string = datetime.date.fromtimestamp(time.time()).strftime("%B %d, %Y") -filepath = os.path.splitext(__file__)[0] + ".1" +filepath = os.path.splitext(__file__)[0] file = open(filepath, "w") @@ -132,3 +132,5 @@ This manpage was written for a Debian GNU/Linux system by Daniel Mester and updated by Cyril Brulebois and Dan Eicher . ''') + +print("written:", filepath) diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index e9e6c982fde..812c001a2bb 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -198,6 +198,10 @@ IF(WITH_INSTALL) INSTALL( FILES ${CMAKE_SOURCE_DIR}/release/freedesktop/icons/scalable/blender.svg DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps + ) + INSTALL( + FILES ${CMAKE_SOURCE_DIR}/doc/blender.1 + DESTINATION ${CMAKE_INSTALL_PREFIX}/man ) INSTALL( DIRECTORY ${CMAKE_SOURCE_DIR}/release/text/ From 05fb497f75aef331aa708945af5feb69e5169e7b Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Thu, 15 Jul 2010 20:02:53 +0000 Subject: [PATCH 497/674] == installation paths == remove deprecated python BLI_gethome_folder calls Patch by Brecht, thanks a lot --- release/scripts/modules/bpy/utils.py | 7 +- source/blender/blenlib/BLI_path_util.h | 25 ----- source/blender/blenlib/intern/path_util.c | 115 ---------------------- source/blender/python/intern/bpy.c | 30 ++---- source/creator/creator.c | 22 +---- 5 files changed, 18 insertions(+), 181 deletions(-) diff --git a/release/scripts/modules/bpy/utils.py b/release/scripts/modules/bpy/utils.py index 5cde7091257..f0de31a95f5 100644 --- a/release/scripts/modules/bpy/utils.py +++ b/release/scripts/modules/bpy/utils.py @@ -19,7 +19,7 @@ # """ -This module contains utility functions spesific to blender but +This module contains utility functions specific to blender but not assosiated with blenders internal data. """ @@ -27,7 +27,8 @@ import bpy as _bpy import os as _os import sys as _sys -from _bpy import home_paths, blend_paths +from _bpy import blend_paths +from _bpy import script_paths as _bpy_script_paths def _test_import(module_name, loaded_modules): @@ -313,7 +314,7 @@ def script_paths(subdir=None, user=True): else: user_script_path = None - for path in home_paths("scripts") + (user_script_path, ): + for path in _bpy_script_paths() + (user_script_path, ): if path: path = _os.path.normpath(path) if path not in scripts and _os.path.isdir(path): diff --git a/source/blender/blenlib/BLI_path_util.h b/source/blender/blenlib/BLI_path_util.h index 316b850805d..57e6d0b16d7 100644 --- a/source/blender/blenlib/BLI_path_util.h +++ b/source/blender/blenlib/BLI_path_util.h @@ -41,31 +41,6 @@ struct ListBase; struct direntry; char *BLI_gethome(void); -char *BLI_gethome_folder(char *folder_name, int flag); - -/* BLI_gethome_folder flag */ -#define BLI_GETHOME_LOCAL 1<<1 /* relative location for portable binaries */ -#define BLI_GETHOME_SYSTEM 1<<2 /* system location, or set from the BLENDERPATH env variable (UNIX only) */ -#define BLI_GETHOME_USER 1<<3 /* home folder ~/.blender */ -#define BLI_GETHOME_ALL (BLI_GETHOME_SYSTEM|BLI_GETHOME_LOCAL|BLI_GETHOME_USER) - - -#ifdef __APPLE__ -typedef enum { - BasePath_Temporary = 1, - BasePath_BlenderShared, - BasePath_BlenderUser, - BasePath_ApplicationBundle -} basePathesTypes; - -/** - * Gets the base path. The path may not exist. - * Note that return string must be copied as its persistence is not guaranteed - * - * @return base path of pathType - */ -const char* BLI_osx_getBasePath(basePathesTypes pathType); -#endif char *BLI_get_folder(int folder_id, char *subfolder); char *BLI_get_folder_create(int folder_id, char *subfolder); diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index c1e0059e954..6ab7ba2a7a5 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -795,121 +795,6 @@ char *BLI_gethome(void) { #endif } -/* this function returns the path to a blender folder, if it exists - * utility functions for BLI_gethome_folder */ - -// #define PATH_DEBUG /* for testing paths that are checked */ - -static int test_data_path(char *targetpath, char *path_base, char *path_sep, char *folder_name) -{ - char tmppath[FILE_MAXDIR]; - - if(path_sep) BLI_join_dirfile(tmppath, path_base, path_sep); - else BLI_strncpy(tmppath, path_base, sizeof(tmppath)); - - BLI_make_file_string("/", targetpath, tmppath, folder_name); - - if (BLI_is_dir(targetpath)) { -#ifdef PATH_DEBUG - printf("\tpath found: %s\n", targetpath); -#endif - return 1; - } - else { -#ifdef PATH_DEBUG - printf("\tpath missing: %s\n", targetpath); -#endif - targetpath[0] = '\0'; - return 0; - } -} - -static int gethome_path_local(char *targetpath, char *folder_name) -{ - extern char bprogname[]; /* argv[0] from creator.c */ - char bprogdir[FILE_MAXDIR]; - char cwd[FILE_MAXDIR]; - char *s; - int i; - -#ifdef PATH_DEBUG - printf("gethome_path_local...\n"); -#endif - - /* try release/folder_name (binary relative) */ - /* use argv[0] (bprogname) to get the path to the executable */ - s = BLI_last_slash(bprogname); - i = s - bprogname + 1; - BLI_strncpy(bprogdir, bprogname, i); - - /* try release/folder_name (BIN relative) */ - if(test_data_path(targetpath, bprogdir, "release", folder_name)) - return 1; - - /* try release/folder_name (CWD relative) */ - if(test_data_path(targetpath, BLI_getwdN(cwd), "release", folder_name)) - return 1; - - /* try ./.blender/folder_name */ - if(test_data_path(targetpath, bprogdir, ".blender", folder_name)) - return 1; - - return 0; -} - -static int gethome_path_user(char *targetpath, char *folder_name) -{ - char *home_path= BLI_gethome(); - -#ifdef PATH_DEBUG - printf("gethome_path_user...\n"); -#endif - - /* try $HOME/folder_name */ - return test_data_path(targetpath, home_path, ".blender", folder_name); -} - -static int gethome_path_system(char *targetpath, char *folder_name) -{ - extern char blender_path[]; /* unix prefix eg. /usr/share/blender/2.5 creator.c */ - - if(!blender_path[0]) - return 0; - -#ifdef PATH_DEBUG - printf("gethome_path_system...\n"); -#endif - - /* try $BLENDERPATH/folder_name */ - return test_data_path(targetpath, blender_path, NULL, folder_name); -} - -char *BLI_gethome_folder(char *folder_name, int flag) -{ - static char fulldir[FILE_MAXDIR] = ""; - - /* first check if this is a redistributable bundle */ - if(flag & BLI_GETHOME_LOCAL) { - if (gethome_path_local(fulldir, folder_name)) - return fulldir; - } - - /* then check if the OS has blender data files installed in a global location */ - if(flag & BLI_GETHOME_SYSTEM) { - if (gethome_path_system(fulldir, folder_name)) - return fulldir; - } - - /* now check the users home dir for data files */ - if(flag & BLI_GETHOME_USER) { - if (gethome_path_user(fulldir, folder_name)) - return fulldir; - } - - return NULL; -} - - /* NEW stuff, to be cleaned up when fully migrated */ /* ************************************************************* */ /* ************************************************************* */ diff --git a/source/blender/python/intern/bpy.c b/source/blender/python/intern/bpy.c index b978e46f6da..15be6174f29 100644 --- a/source/blender/python/intern/bpy.c +++ b/source/blender/python/intern/bpy.c @@ -41,33 +41,23 @@ #include "../generic/blf_api.h" #include "../generic/IDProp.h" -static char bpy_home_paths_doc[] = -".. function:: home_paths(subfolder)\n" +static char bpy_script_paths_doc[] = +".. function:: script_paths()\n" "\n" -" Return 3 paths to blender home directories.\n" +" Return 2 paths to blender scripts directories.\n" "\n" -" :arg subfolder: The name of a subfolder to find within the blenders home directory.\n" -" :type subfolder: string\n" -" :return: (system, local, user) strings will be empty when not found.\n" +" :return: (system, user) strings will be empty when not found.\n" " :rtype: tuple of strigs\n"; -PyObject *bpy_home_paths(PyObject *self, PyObject *args) +PyObject *bpy_script_paths(PyObject *self) { - PyObject *ret= PyTuple_New(3); + PyObject *ret= PyTuple_New(2); char *path; - char *subfolder= ""; - if (!PyArg_ParseTuple(args, "|s:blender_homes", &subfolder)) - return NULL; - - path= BLI_gethome_folder(subfolder, BLI_GETHOME_SYSTEM); + path= BLI_get_folder(BLENDER_USER_SCRIPTS, NULL); PyTuple_SET_ITEM(ret, 0, PyUnicode_FromString(path?path:"")); - - path= BLI_gethome_folder(subfolder, BLI_GETHOME_LOCAL); + path= BLI_get_folder(BLENDER_SYSTEM_SCRIPTS, NULL); PyTuple_SET_ITEM(ret, 1, PyUnicode_FromString(path?path:"")); - - path= BLI_gethome_folder(subfolder, BLI_GETHOME_USER); - PyTuple_SET_ITEM(ret, 2, PyUnicode_FromString(path?path:"")); return ret; } @@ -120,7 +110,7 @@ static PyObject *bpy_blend_paths(PyObject * self, PyObject *args, PyObject *kw) return list; } -static PyMethodDef meth_bpy_home_paths[] = {{ "home_paths", (PyCFunction)bpy_home_paths, METH_VARARGS, bpy_home_paths_doc}}; +static PyMethodDef meth_bpy_script_paths[] = {{ "script_paths", (PyCFunction)bpy_script_paths, METH_NOARGS, bpy_script_paths_doc}}; static PyMethodDef meth_bpy_blend_paths[] = {{ "blend_paths", (PyCFunction)bpy_blend_paths, METH_VARARGS|METH_KEYWORDS, bpy_blend_paths_doc}}; static void bpy_import_test(char *modname) @@ -191,7 +181,7 @@ void BPy_init_modules( void ) PyModule_AddObject(mod, "context", (PyObject *)bpy_context_module); /* utility func's that have nowhere else to go */ - PyModule_AddObject(mod, meth_bpy_home_paths->ml_name, (PyObject *)PyCFunction_New(meth_bpy_home_paths, NULL)); + PyModule_AddObject(mod, meth_bpy_script_paths->ml_name, (PyObject *)PyCFunction_New(meth_bpy_script_paths, NULL)); PyModule_AddObject(mod, meth_bpy_blend_paths->ml_name, (PyObject *)PyCFunction_New(meth_bpy_blend_paths, NULL)); /* add our own modules dir, this is a python package */ diff --git a/source/creator/creator.c b/source/creator/creator.c index ac79c0e6f80..283511ef3ff 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -131,14 +131,6 @@ extern int pluginapi_force_ref(void); /* from blenpluginapi:pluginapi.c */ char bprogname[FILE_MAXDIR+FILE_MAXFILE]; /* from blenpluginapi:pluginapi.c */ char btempdir[FILE_MAXDIR+FILE_MAXFILE]; -/* unix path support. - * defined by the compiler. eg "/usr/share/blender/2.5" "/opt/blender/2.5" */ -#ifndef BLENDERPATH -#define BLENDERPATH "" -#endif - -char blender_path[FILE_MAXDIR+FILE_MAXFILE] = BLENDERPATH; - /* Initialise callbacks for the modules that need them */ static void setCallbacks(void); @@ -297,14 +289,14 @@ static int print_help(int argc, char **argv, void *data) printf (" $BLENDER_SYSTEM_DATAFILES Directory for system wide data files.\n"); printf (" $BLENDER_SYSTEM_PYTHON Directory for system python libraries.\n"); #ifdef WIN32 - printf (" $TEMP Store temporary files here.\n"); + printf (" $TEMP Store temporary files here.\n"); #else - printf (" $TMP or $TMPDIR Store temporary files here.\n"); + printf (" $TMP or $TMPDIR Store temporary files here.\n"); #endif #ifndef DISABLE_SDL - printf (" $SDL_AUDIODRIVER LibSDL audio driver - alsa, esd, alsa, dma.\n"); + printf (" $SDL_AUDIODRIVER LibSDL audio driver - alsa, esd, dma.\n"); #endif - printf (" $PYTHONHOME Path to the python directory, eg. /usr/lib/python.\n\n"); + printf (" $PYTHONHOME Path to the python directory, eg. /usr/lib/python.\n\n"); exit(0); @@ -1040,12 +1032,6 @@ int main(int argc, char **argv) BLI_where_am_i(bprogname, argv[0]); - { /* override the hard coded blender path */ - char *blender_path_env = getenv("BLENDERPATH"); - if(blender_path_env) - BLI_strncpy(blender_path, blender_path_env, sizeof(blender_path)); - } - #ifdef BUILD_DATE strip_quotes(build_date); strip_quotes(build_time); From f36ab733bf2aefd1ace438170b35d846885ff058 Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Thu, 15 Jul 2010 20:16:17 +0000 Subject: [PATCH 498/674] Update MSVC9 project file --- projectfiles_vc9/blender/editors/ED_editors.vcproj | 12 ++++++++---- projectfiles_vc9/blender/gpu/BL_gpu.vcproj | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/projectfiles_vc9/blender/editors/ED_editors.vcproj b/projectfiles_vc9/blender/editors/ED_editors.vcproj index 819d0ca1042..cda69b46f5e 100644 --- a/projectfiles_vc9/blender/editors/ED_editors.vcproj +++ b/projectfiles_vc9/blender/editors/ED_editors.vcproj @@ -355,10 +355,6 @@ Name="datafiles" Filter="c" > - - @@ -387,6 +383,10 @@ RelativePath="..\..\..\source\blender\editors\datafiles\splash.png.c" > + + + + Date: Thu, 15 Jul 2010 20:25:09 +0000 Subject: [PATCH 499/674] Rather then hard coded /usr/share, use CMAKE_INSTALL_PREFIX to set the PREFIX, could be added for scons/make too. --- intern/ghost/CMakeLists.txt | 3 +++ intern/ghost/intern/GHOST_SystemX11.cpp | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/intern/ghost/CMakeLists.txt b/intern/ghost/CMakeLists.txt index 1a7627c9099..c262ea8aadd 100644 --- a/intern/ghost/CMakeLists.txt +++ b/intern/ghost/CMakeLists.txt @@ -85,6 +85,9 @@ ELSEIF(UNIX) ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_SystemX11.cpp ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowX11.cpp ) + + ADD_DEFINITIONS(-DPREFIX="${CMAKE_INSTALL_PREFIX}") + ENDIF(APPLE) BLENDERLIB(bf_ghost "${SRC}" "${INC}") diff --git a/intern/ghost/intern/GHOST_SystemX11.cpp b/intern/ghost/intern/GHOST_SystemX11.cpp index c9228e68e54..961a637e616 100644 --- a/intern/ghost/intern/GHOST_SystemX11.cpp +++ b/intern/ghost/intern/GHOST_SystemX11.cpp @@ -67,6 +67,10 @@ #include // for fprintf only #include // for exit +#ifndef PREFIX +# define PREFIX "/usr/local" +#endif + typedef struct NDOFPlatformInfo { Display *display; Window window; @@ -1461,7 +1465,7 @@ void GHOST_SystemX11::putClipboard(GHOST_TInt8 *buffer, bool selection) const const GHOST_TUns8* GHOST_SystemX11::getSystemDir() const { - return (GHOST_TUns8*)"/usr/share"; + return (GHOST_TUns8*) PREFIX "/share"; } const GHOST_TUns8* GHOST_SystemX11::getUserDir() const From 2f96ac8b9ff6290e2a63546cdab168e4376f3128 Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Thu, 15 Jul 2010 20:30:31 +0000 Subject: [PATCH 500/674] SVN maintenance. --- build_files/cmake/example_scripts/cmake_linux_install.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 build_files/cmake/example_scripts/cmake_linux_install.sh diff --git a/build_files/cmake/example_scripts/cmake_linux_install.sh b/build_files/cmake/example_scripts/cmake_linux_install.sh old mode 100644 new mode 100755 From 615db01b01c4ad96d8e712aa5469d9eb3ada0d07 Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Thu, 15 Jul 2010 21:39:47 +0000 Subject: [PATCH 501/674] == installation paths == * fix for autosave location -> shouldn't use BLI_gethome anymore * this frees BLI_gethome of having to emulate the local->user->system search path and can now be truly considered as 'home/default location for .blend files' * removed setting the default G.sce from read_history, was out of context there. * fix for creating user dir, leftover from previous commit. jesterKing, please review -> if there are any issues I will fix or revert. --- source/blender/blenlib/BLI_path_util.h | 1 + source/blender/blenlib/intern/path_util.c | 61 ++++++------------- source/blender/python/intern/bpy_app.c | 2 - .../blender/windowmanager/intern/wm_files.c | 14 +---- .../windowmanager/intern/wm_init_exit.c | 4 ++ 5 files changed, 26 insertions(+), 56 deletions(-) diff --git a/source/blender/blenlib/BLI_path_util.h b/source/blender/blenlib/BLI_path_util.h index 57e6d0b16d7..60d35c9ecdf 100644 --- a/source/blender/blenlib/BLI_path_util.h +++ b/source/blender/blenlib/BLI_path_util.h @@ -59,6 +59,7 @@ char *BLI_get_folder_create(int folder_id, char *subfolder); #define BLENDER_USER_DATAFILES 32 #define BLENDER_USER_SCRIPTS 33 #define BLENDER_USER_PLUGINS 34 +#define BLENDER_USER_AUTOSAVE 35 /* system */ #define BLENDER_SYSTEM_CONFIG 51 /* optional */ diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 6ab7ba2a7a5..df1e2c7d590 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -732,66 +732,38 @@ void BLI_getlastdir(const char* dir, char *last, int maxlen) } } +/* This is now only used to really get the user's home folder */ +/* On Windows I chose the 'Users//Documents' since it's used + as default location to save documents */ char *BLI_gethome(void) { #if !defined(WIN32) return getenv("HOME"); #else /* Windows */ char * ret; - static char dir[512]; - static char appdatapath[MAXPATHLEN]; + static char documentfolder[MAXPATHLEN]; HRESULT hResult; /* Check for %HOME% env var */ ret = getenv("HOME"); if(ret) { - sprintf(dir, "%s\\%s", ret, blender_version_decimal()); - if (BLI_is_dir(dir)) return dir; + if (BLI_is_dir(ret)) return ret; } - - /* else, check install dir (path containing blender.exe) */ - - if(BLI_getInstallationDir(dir)) - { - sprintf(dir, "%s", dir, blender_version_decimal()); - if (BLI_is_dir(dir)) return(dir); - } - /* add user profile support for WIN 2K / NT. * This is %APPDATA%, which translates to either * %USERPROFILE%\Application Data or since Vista * to %USERPROFILE%\AppData\Roaming */ - hResult = SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, appdatapath); + hResult = SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, documentfolder); if (hResult == S_OK) { - if (BLI_is_dir(appdatapath)) { /* from fop, also below... */ - sprintf(dir, "%s\\Blender Foundation\\Blender", appdatapath); - BLI_recurdir_fileops(dir); - if (BLI_is_dir(dir)) { - sprintf(dir,"%s\\%s", dir, blender_version_decimal()); - if(BLI_is_dir(dir)) return(dir); - } - } - hResult = SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, appdatapath); - if (hResult == S_OK) - { - if (BLI_is_dir(appdatapath)) - { /* from fop, also below... */ - sprintf(dir, "%s\\Blender Foundation\\Blender", appdatapath); - BLI_recurdir_fileops(dir); - if (BLI_is_dir(dir)) { - sprintf(dir,"%s\\%s", dir, blender_version_decimal()); - if(BLI_is_dir(dir)) return(dir); - } - } - } + if (BLI_is_dir(documentfolder)) return documentfolder; } - return "C:\\Temp"; /* sheesh! bad, bad, bad! (aphex) */ + return NULL; #endif } @@ -989,6 +961,11 @@ char *BLI_get_folder(int folder_id, char *subfolder) if (get_path_system(path, "datafiles", subfolder, "BLENDER_SYSTEM_DATAFILES")) break; return NULL; + case BLENDER_USER_AUTOSAVE: + if (get_path_local(path, "autosave", subfolder)) break; + if (get_path_user(path, "autosave", subfolder, "BLENDER_USER_DATAFILES")) break; + return NULL; + case BLENDER_CONFIG: /* general case */ if (get_path_local(path, "config", subfolder)) break; if (get_path_user(path, "config", subfolder, "BLENDER_USER_CONFIG")) break; @@ -1035,16 +1012,16 @@ char *BLI_get_folder(int folder_id, char *subfolder) static char *BLI_get_user_folder_notest(int folder_id, char *subfolder) { static char path[FILE_MAX] = ""; - char search_path[FILE_MAX]; switch (folder_id) { case BLENDER_USER_DATAFILES: - BLI_join_dirfile(search_path, "datafiles", subfolder); - get_path_user(path, search_path, subfolder, "BLENDER_USER_DATAFILES"); + get_path_user(path, "datafiles", subfolder, "BLENDER_USER_DATAFILES"); break; case BLENDER_USER_CONFIG: - BLI_join_dirfile(search_path, "config", subfolder); - get_path_user(path, search_path, subfolder, "BLENDER_USER_CONFIG"); + get_path_user(path, "config", subfolder, "BLENDER_USER_CONFIG"); + break; + case BLENDER_USER_AUTOSAVE: + get_path_user(path, "autosave", subfolder, "BLENDER_USER_AUTOSAVE"); break; } if ('\0' == path[0]) { @@ -1058,7 +1035,7 @@ char *BLI_get_folder_create(int folder_id, char *subfolder) char *path; /* only for user folders */ - if (!ELEM(folder_id, BLENDER_USER_DATAFILES, BLENDER_USER_CONFIG)) + if (!ELEM3(folder_id, BLENDER_USER_DATAFILES, BLENDER_USER_CONFIG, BLENDER_USER_AUTOSAVE)) return NULL; path = BLI_get_folder(folder_id, subfolder); diff --git a/source/blender/python/intern/bpy_app.c b/source/blender/python/intern/bpy_app.c index 4a2ac0c9252..78658a611a3 100644 --- a/source/blender/python/intern/bpy_app.c +++ b/source/blender/python/intern/bpy_app.c @@ -43,7 +43,6 @@ static PyTypeObject BlenderAppType; static PyStructSequence_Field app_info_fields[] = { {"version", "The Blender version as a tuple of 3 numbers. eg. (2, 50, 11)"}, {"version_string", "The Blender version formatted as a string"}, - {"home", "The blender home directory, normally matching $HOME"}, {"binary_path", "The location of blenders executable, useful for utilities that spawn new instances"}, {"debug", "Boolean, set when blender is running in debug mode (started with -d)"}, {"background", "Boolean, True when blender is running without a user interface (started with -b)"}, @@ -85,7 +84,6 @@ static PyObject *make_app_info(void) SetObjItem(Py_BuildValue("(iii)", BLENDER_VERSION/100, BLENDER_VERSION%100, BLENDER_SUBVERSION)); SetObjItem(PyUnicode_FromFormat("%d.%02d (sub %d)", BLENDER_VERSION/100, BLENDER_VERSION%100, BLENDER_SUBVERSION)); - SetStrItem(BLI_gethome()); SetStrItem(bprogname); SetObjItem(PyBool_FromLong(G.f & G_DEBUG)); SetObjItem(PyBool_FromLong(G.background)); diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index ff859ebe166..89b8267bb05 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -434,9 +434,6 @@ void read_history(void) num++; } } - - if(G.sce[0] == 0) - BLI_make_file_string("/", G.sce, BLI_gethome(), "untitled.blend"); BLI_free_file_lines(lines); @@ -686,21 +683,14 @@ void wm_autosave_location(char *filename) { char pidstr[32]; #ifdef WIN32 - char subdir[9]; - char savedir[FILE_MAXDIR]; + char *savedir; #endif sprintf(pidstr, "%d.blend", abs(getpid())); #ifdef WIN32 if (!BLI_exists(U.tempdir)) { - BLI_strncpy(subdir, "autosave", sizeof(subdir)); - BLI_make_file_string("/", savedir, BLI_gethome(), subdir); - - /* create a new autosave dir - * function already checks for existence or not */ - BLI_recurdir_fileops(savedir); - + savedir = BLI_get_folder_create(BLENDER_USER_AUTOSAVE, NULL); BLI_make_file_string("/", filename, savedir, pidstr); return; } diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c index db668390b88..5bfaf91aa11 100644 --- a/source/blender/windowmanager/intern/wm_init_exit.c +++ b/source/blender/windowmanager/intern/wm_init_exit.c @@ -164,6 +164,10 @@ void WM_init(bContext *C, int argc, char **argv) G.ndofdevice = -1; /* XXX bad initializer, needs set otherwise buttons show! */ read_history(); + + if(G.sce[0] == 0) + BLI_make_file_string("/", G.sce, BLI_gethome(), "untitled.blend"); + BLI_strncpy(G.lib, G.sce, FILE_MAX); } From ccbd4f3a0f95bd3271cd925142e02f26333a7a9d Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 15 Jul 2010 22:37:07 +0000 Subject: [PATCH 502/674] path -> filepath Someone must have missed that when updating the operator properties. --- release/scripts/io/netrender/repath.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/io/netrender/repath.py b/release/scripts/io/netrender/repath.py index 7f9befd34fb..34af8e137ec 100755 --- a/release/scripts/io/netrender/repath.py +++ b/release/scripts/io/netrender/repath.py @@ -144,4 +144,4 @@ if __name__ == "__main__": process(args) - bpy.ops.wm.save_as_mainfile(path=new_path, check_existing=False) + bpy.ops.wm.save_as_mainfile(filepath=new_path, check_existing=False) From e4e80c4def0fe30ec9285cafde2fd42c5e8c09b6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 16 Jul 2010 01:00:56 +0000 Subject: [PATCH 503/674] Blendfile thumbnail extractor, so icons can be automatically extracted from blend files as PNG's and displayed in a file browser. Runs with python 2.6 and 3.1 with no special deps. To have nautilus display thumbnails automatically. gconftool --type boolean --set /desktop/gnome/thumbnailers/application@x-blender/enable true gconftool --type string --set /desktop/gnome/thumbnailers/application@x-blender/command "blender-thumbnailer.py %i %o" --- release/freedesktop/blender-thumbnailer.py | 132 +++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100755 release/freedesktop/blender-thumbnailer.py diff --git a/release/freedesktop/blender-thumbnailer.py b/release/freedesktop/blender-thumbnailer.py new file mode 100755 index 00000000000..5274da103b9 --- /dev/null +++ b/release/freedesktop/blender-thumbnailer.py @@ -0,0 +1,132 @@ +#!/usr/bin/python + +# ##### 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. +# +# ##### END GPL LICENSE BLOCK ##### + +""" +Thumbnailer runs with python 2.6 and 3.x. +To run automatically with nautilus: + gconftool --type boolean --set /desktop/gnome/thumbnailers/application@x-blender/enable true + gconftool --type string --set /desktop/gnome/thumbnailers/application@x-blender/command "blender-thumbnailer.py %i %o" +""" + +import os +import struct +import sys + +def blend_extract_thumb(path): + # def MAKE_ID(tag): ord(tag[0])<<24 | ord(tag[1])<<16 | ord(tag[2])<<8 | ord(tag[3]) + REND = 1145980242 # MAKE_ID(b'REND') + TEST = 1414743380 # MAKE_ID(b'TEST') + + blendfile = open(path, 'rb') + + head = blendfile.read(7) + + if head[0:2] == b'\x1f\x8b': # gzip magic + import gzip + blendfile.close() + blendfile = gzip.open(path, 'rb') + head = blendfile.read(7) + + if head != b'BLENDER': + blendfile.close() + return None, 0, 0 + + is_64_bit = (blendfile.read(1) == b'-') + + # true for PPC, false for X86 + is_big_endian = (blendfile.read(1) == b'V') + + # Now read the bhead chunk!!! + blendfile.read(3) # skip the version + + sizeof_pointer = 8 if is_64_bit else 4 + + sizeof_bhead = 24 if is_64_bit else 20 + + int_endian = '>i' if is_big_endian else ' ") + else: + file_in = sys.argv[-2] + + buf, width, height = blend_extract_thumb(file_in) + + if buf: + file_out = sys.argv[-1] + + f = open(file_out, "wb") + f.write(write_png(buf, width, height)) + f.close() From 7ba821cab384f45691bb73bc0712926ae4c819de Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Fri, 16 Jul 2010 06:49:31 +0000 Subject: [PATCH 504/674] Add comment about case where autosave can fail on Windows. --- source/blender/windowmanager/intern/wm_files.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 89b8267bb05..fc7bf9b79c7 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -689,6 +689,14 @@ void wm_autosave_location(char *filename) sprintf(pidstr, "%d.blend", abs(getpid())); #ifdef WIN32 + // XXX Need to investigate how to handle default location of '/tmp/' + // This is a relative directory on Windows, and it may be + // found. Example: + // Blender installed on D:\ drive, D:\ drive has D:\tmp\ + // Now, BLI_exists() will find '/tmp/' exists, but + // 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(U.tempdir)) { savedir = BLI_get_folder_create(BLENDER_USER_AUTOSAVE, NULL); BLI_make_file_string("/", filename, savedir, pidstr); From 952821dfd44ad9bbf674bbea2d7738556a46c663 Mon Sep 17 00:00:00 2001 From: Mitchell Stokes Date: Fri, 16 Jul 2010 09:10:46 +0000 Subject: [PATCH 505/674] BGE doc updates: Fixed some typos and added docs for the following functions: startGame() endGame() restartGame() LibLoad() LibNew() LibFree() --- source/gameengine/PyDoc/bge.logic.rst | 62 ++++++++++++++++++++------ source/gameengine/PyDoc/bge.render.rst | 4 +- 2 files changed, 50 insertions(+), 16 deletions(-) diff --git a/source/gameengine/PyDoc/bge.logic.rst b/source/gameengine/PyDoc/bge.logic.rst index 84b480e2ab9..a10733569f3 100644 --- a/source/gameengine/PyDoc/bge.logic.rst +++ b/source/gameengine/PyDoc/bge.logic.rst @@ -158,6 +158,48 @@ General functions Saves bge.logic.globalDict to a file. +.. function:: startGame(blend) + + Loads the blend file. + + :arg blend: The name of the blend file + :type blend: string + +.. function:: endGame() + + Ends the current game. + +.. function:: restartGame() + + Restarts the current game by reloading the .blend file (the last saved version, not what is currently running). + +.. function:: LibLoad(blend, type) + + Converts the all of the datablocks of the given type from the given blend. + + :arg blend: The path to the blend file + :type blend: string + :arg type: The datablock type (currently only "Scene" and "Mesh" are supported) + :type type: string + +.. function:: LibNew(name, type, data) + + Uses existing datablock data and loads in as a new library. + + :arg name: A unique library name used for removal later + :type name: string + :arg type: The datablock type (currently only "Mesh" is supported) + :type type: string + :arg data: A list of names of the datablocks to load + :type data: list of strings + +.. function:: LibFree(name) + + Frees a library, removing all objects and meshes from the currently active scenes. + + :arg name: The name of the library to free (the name used in LibNew) + :type name: string + .. function:: addScene(name, overlay=1) Loads a scene into the game engine. @@ -202,24 +244,24 @@ General functions .. function:: getMaxLogicFrame() - Gets the maximum number of logic frame per render frame. + Gets the maximum number of logic frames per render frame. - :return: The maximum number of logic frame per render frame + :return: The maximum number of logic frames per render frame :rtype: integer .. function:: setMaxLogicFrame(maxlogic) - Sets the maximum number of logic frame that are executed per render frame. + Sets the maximum number of logic frames that are executed per render frame. This does not affect the physic system that still runs at full frame rate. - :arg maxlogic: The new maximum number of logic frame per render frame. Valid values: 1..5 + :arg maxlogic: The new maximum number of logic frames per render frame. Valid values: 1..5 :type maxlogic: integer .. function:: getMaxPhysicsFrame() - Gets the maximum number of physics frame per render frame. + Gets the maximum number of physics frames per render frame. - :return: The maximum number of physics frame per render frame + :return: The maximum number of physics frames per render frame :rtype: integer .. function:: setMaxPhysicsFrame(maxphysics) @@ -270,14 +312,6 @@ General functions .. warning: Not implimented yet -.. function:: saveGlobalDict() - - Saves bge.logic.globalDict to a file. - -.. function:: loadGlobalDict() - - Loads bge.logic.globalDict from a file. - ***************** Utility functions ***************** diff --git a/source/gameengine/PyDoc/bge.render.rst b/source/gameengine/PyDoc/bge.render.rst index cea84f3b506..9f17455601b 100644 --- a/source/gameengine/PyDoc/bge.render.rst +++ b/source/gameengine/PyDoc/bge.render.rst @@ -230,7 +230,7 @@ Functions .. function:: enableMotionBlur(factor) - Enable the motion blue effect. + Enable the motion blur effect. :arg factor: the ammount of motion blur to display. :type factor: float [0.0 - 1.0] @@ -238,5 +238,5 @@ Functions .. function:: disableMotionBlur() - Disable the motion blue effect. + Disable the motion blur effect. From d94868f82138baedbd227c708878577061191bbe Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 16 Jul 2010 09:45:09 +0000 Subject: [PATCH 506/674] Incorrect flags were checing for cyclic in order clamping functions --- source/blender/blenkernel/intern/curve.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index aa7b44aecda..5015e0cef6c 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -3078,7 +3078,7 @@ int clamp_nurb_order_u( struct Nurb *nu ) nu->orderu= nu->pntsu; change= 1; } - if(((nu->flag & CU_NURB_CYCLIC)==0) && (nu->flagu & CU_NURB_BEZIER)) { + if(((nu->flagu & CU_NURB_CYCLIC)==0) && (nu->flagu & CU_NURB_BEZIER)) { CLAMP(nu->orderu, 3,4); change= 1; } @@ -3092,7 +3092,7 @@ int clamp_nurb_order_v( struct Nurb *nu) nu->orderv= nu->pntsv; change= 1; } - if(((nu->flag & CU_NURB_CYCLIC)==0) && (nu->flagv & CU_NURB_BEZIER)) { + if(((nu->flagv & CU_NURB_CYCLIC)==0) && (nu->flagv & CU_NURB_BEZIER)) { CLAMP(nu->orderv, 3,4); change= 1; } From f6ae7af2431a83f4492f72fd1b1df421f8675936 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 16 Jul 2010 10:13:04 +0000 Subject: [PATCH 507/674] 2.5: automatic draw method now uses overlap for Intel on all platforms. --- source/blender/gpu/GPU_extensions.h | 14 +++++++------- source/blender/gpu/intern/gpu_extensions.c | 4 ++-- source/blender/windowmanager/intern/wm_draw.c | 9 +++++++++ 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/source/blender/gpu/GPU_extensions.h b/source/blender/gpu/GPU_extensions.h index 5275f8988a8..a7f43d3b0ae 100644 --- a/source/blender/gpu/GPU_extensions.h +++ b/source/blender/gpu/GPU_extensions.h @@ -75,17 +75,17 @@ typedef enum GPUDeviceType { } GPUDeviceType; typedef enum GPUOSType { - GPU_OS_WIN = (1<<16), - GPU_OS_MAC = (1<<17), - GPU_OS_UNIX = (1<<18), + GPU_OS_WIN = (1<<8), + GPU_OS_MAC = (1<<9), + GPU_OS_UNIX = (1<<10), GPU_OS_ANY = (0xff00) } GPUOSType; typedef enum GPUDriverType { - GPU_DRIVER_OFFICIAL = (1<<24), - GPU_DRIVER_OPENSOURCE = (1<<25), - GPU_DRIVER_SOFTWARE = (1<<26), - GPU_DRIVER_UNKNOWN = (0xff0000) + GPU_DRIVER_OFFICIAL = (1<<16), + GPU_DRIVER_OPENSOURCE = (1<<17), + GPU_DRIVER_SOFTWARE = (1<<18), + GPU_DRIVER_ANY = (0xff0000) } GPUDriverType; int GPU_type_matches(GPUDeviceType device, GPUOSType os, GPUDriverType driver); diff --git a/source/blender/gpu/intern/gpu_extensions.c b/source/blender/gpu/intern/gpu_extensions.c index 0b7ea605ec8..a96920aa839 100644 --- a/source/blender/gpu/intern/gpu_extensions.c +++ b/source/blender/gpu/intern/gpu_extensions.c @@ -152,8 +152,8 @@ void GPU_extensions_init() GG.driver = GPU_DRIVER_SOFTWARE; } else { - GG.device = GPU_DEVICE_UNKNOWN; - GG.driver = GPU_DRIVER_UNKNOWN; + GG.device = GPU_DEVICE_ANY; + GG.driver = GPU_DRIVER_ANY; } GG.os = GPU_OS_UNIX; diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index 38322b66bbb..7e0ee7226c5 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -677,13 +677,22 @@ static int wm_draw_update_test_window(wmWindow *win) static int wm_automatic_draw_method(wmWindow *win) { + /* Ideally all cards would work well with triple buffer, since if it works + well gives the least redraws and is considerably faster at partial redraw + for sculpting or drawing overlapping menus. For typically lower end cards + copy to texture is slow though and so we use overlap instead there. */ + if(win->drawmethod == USER_DRAW_AUTOMATIC) { /* ATI opensource driver is known to be very slow at this */ if(GPU_type_matches(GPU_DEVICE_ATI, GPU_OS_UNIX, GPU_DRIVER_OPENSOURCE)) return USER_DRAW_OVERLAP; + /* also Intel drivers don't work well with this */ + else if(GPU_type_matches(GPU_DEVICE_INTEL, GPU_OS_ANY, GPU_DRIVER_ANY)) + return USER_DRAW_OVERLAP; /* Windows software driver darkens color on each redraw */ else if(GPU_type_matches(GPU_DEVICE_SOFTWARE, GPU_OS_WIN, GPU_DRIVER_SOFTWARE)) return USER_DRAW_OVERLAP_FLIP; + /* drawing lower color depth again degrades colors each time */ else if(GPU_color_depth() < 24) return USER_DRAW_OVERLAP; else From dd705a25ceb0be2044f1f11055140811be892b03 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 16 Jul 2010 13:55:22 +0000 Subject: [PATCH 508/674] fix for freeze while resizing sequencer view vertically --- source/blender/editors/space_sequencer/sequencer_draw.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index 4f52a17f623..e46294513e7 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -381,6 +381,8 @@ static void draw_seq_extensions(Scene *scene, ARegion *ar, SpaceSeq *sseq, Seque pixely = (v2d->cur.ymax - v2d->cur.ymin)/(v2d->mask.ymax - v2d->mask.ymin); + if(pixely <= 0) return; /* can happen when the view is split/resized */ + blendcol[0] = blendcol[1] = blendcol[2] = 120; if(seq->startofs) { From ddfdf8e1b2d3826e8dac197e81f4bad2b7c6abdd Mon Sep 17 00:00:00 2001 From: Konrad Kleine Date: Fri, 16 Jul 2010 14:00:57 +0000 Subject: [PATCH 509/674] Fix for [#22668] Adding sequencer color strip fails when sound strip selected. Hi, I've written a patch to fix this issue. Since the Effect Strip "Color" doesn't need any input sequences, there is no need to output a warning when adding this effect while other sequences are selected. My fix let's all Effect Strips that don't need input sequences pass the warning "Can't apply effects to audio sequence strips". I think this is fair. -Konrad --- source/blender/editors/space_sequencer/sequencer_edit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index d3d2fd7e220..004aacb921f 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -621,7 +621,7 @@ int seq_effect_find_selected(Scene *scene, Sequence *activeseq, int type, Sequen for(seq=ed->seqbasep->first; seq; seq=seq->next) { if(seq->flag & SELECT) { - if (seq->type == SEQ_SOUND) { + if (seq->type == SEQ_SOUND && get_sequence_effect_num_inputs(type) != 0) { *error_str= "Can't apply effects to audio sequence strips"; return 0; } From 3ef41270f96b4ee3592ec5302a5383399c38ff5d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 16 Jul 2010 15:45:35 +0000 Subject: [PATCH 510/674] [#22880] SEQUENCER: Flip Y broken in recent builds (Windows & Linux) own fault when adding saturation. --- source/blender/blenkernel/intern/sequencer.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index d97e6151a13..de4e7a5ccbe 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -1800,6 +1800,10 @@ static void input_preprocess(Scene *scene, Sequence *seq, TStripElem *se, int cf if(seq->flag & SEQ_FLIPX) { IMB_flipx(se->ibuf); } + + if(seq->flag & SEQ_FLIPY) { + IMB_flipy(se->ibuf); + } if(seq->sat != 1.0f) { /* inline for now, could become an imbuf function */ @@ -2279,6 +2283,13 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int addzbuffloatImBuf(se->ibuf); memcpy(se->ibuf->zbuf_float, rres.rectz, sizeof(float)*rres.rectx*rres.recty); } + + /* { + ImBuf *imb= IMB_allocImBuf(rres.rectx, rres.recty, 32, IB_rectfloat, 0); + IMB_saveiff(imb, "/tmp/foo.image", IB_rect | IB_metadata); + IMB_freeImBuf(imb); + } */ + } else if (rres.rect32) { se->ibuf= IMB_allocImBuf(rres.rectx, rres.recty, 32, IB_rect, 0); memcpy(se->ibuf->rect, rres.rect32, 4*rres.rectx*rres.recty); From ca3f3317b2ca16f91972f8176c2fa366f1bf5fb5 Mon Sep 17 00:00:00 2001 From: Andrea Weikert Date: Fri, 16 Jul 2010 16:02:07 +0000 Subject: [PATCH 511/674] == installation paths == * rename BLI_gethome to BLI_getDefaultDocumentFolder to better reflect how this function is used * replaced BLI_gethome with getenv("HOME") on Linux and Mac where it retrieves location of bookmarks that are inserted as system bookmarks. BLI_gethome was a thin wrapper around these and in this case the user's home directory is what is actually wanted. --- source/blender/blenlib/BLI_path_util.h | 4 ++-- source/blender/blenlib/intern/path_util.c | 4 ++-- source/blender/editors/space_file/file_ops.c | 2 +- source/blender/editors/space_file/fsmenu.c | 4 ++-- source/blender/windowmanager/intern/wm_init_exit.c | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/source/blender/blenlib/BLI_path_util.h b/source/blender/blenlib/BLI_path_util.h index 60d35c9ecdf..07e0da5e461 100644 --- a/source/blender/blenlib/BLI_path_util.h +++ b/source/blender/blenlib/BLI_path_util.h @@ -40,14 +40,14 @@ extern "C" { struct ListBase; struct direntry; -char *BLI_gethome(void); +char *BLI_getDefaultDocumentFolder(void); char *BLI_get_folder(int folder_id, char *subfolder); char *BLI_get_folder_create(int folder_id, char *subfolder); /* folder_id */ -/* general, will find baserd on user/local/system priority */ +/* general, will find based on user/local/system priority */ #define BLENDER_CONFIG 1 #define BLENDER_DATAFILES 2 #define BLENDER_SCRIPTS 3 diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index df1e2c7d590..2f8e4ab44b2 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -732,10 +732,10 @@ void BLI_getlastdir(const char* dir, char *last, int maxlen) } } -/* This is now only used to really get the user's home folder */ +/* This is now only used to really get the user's default document folder */ /* On Windows I chose the 'Users//Documents' since it's used as default location to save documents */ -char *BLI_gethome(void) { +char *BLI_getDefaultDocumentFolder(void) { #if !defined(WIN32) return getenv("HOME"); diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index 55a44b36a52..bd7be303e33 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -945,7 +945,7 @@ int file_directory_exec(bContext *C, wmOperator *unused) if ( sfile->params->dir[0] == '~' ) { char tmpstr[sizeof(sfile->params->dir)-1]; strncpy(tmpstr, sfile->params->dir+1, sizeof(tmpstr)); - BLI_join_dirfile(sfile->params->dir, BLI_gethome(), tmpstr); + BLI_join_dirfile(sfile->params->dir, BLI_getDefaultDocumentFolder(), tmpstr); } #ifdef WIN32 diff --git a/source/blender/editors/space_file/fsmenu.c b/source/blender/editors/space_file/fsmenu.c index 6699c0b8bc7..6603bba5a89 100644 --- a/source/blender/editors/space_file/fsmenu.c +++ b/source/blender/editors/space_file/fsmenu.c @@ -338,7 +338,7 @@ void fsmenu_read_system(struct FSMenu* fsmenu) /* As 10.4 doesn't provide proper API to retrieve the favorite places, assume they are the standard ones TODO : replace hardcoded paths with proper BLI_get_folder calls */ - home = BLI_gethome(); + home = getenv("HOME"); if(home) { BLI_snprintf(line, 256, "%s/", home); fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, line, 1, 0); @@ -458,7 +458,7 @@ void fsmenu_read_system(struct FSMenu* fsmenu) #else /* unix */ { - char *home= BLI_gethome(); + char *home= getenv("HOME"); if(home) { BLI_snprintf(line, FILE_MAXDIR, "%s/", home); diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c index 5bfaf91aa11..558d20021ce 100644 --- a/source/blender/windowmanager/intern/wm_init_exit.c +++ b/source/blender/windowmanager/intern/wm_init_exit.c @@ -166,7 +166,7 @@ void WM_init(bContext *C, int argc, char **argv) read_history(); if(G.sce[0] == 0) - BLI_make_file_string("/", G.sce, BLI_gethome(), "untitled.blend"); + BLI_make_file_string("/", G.sce, BLI_getDefaultDocumentFolder(), "untitled.blend"); BLI_strncpy(G.lib, G.sce, FILE_MAX); From 6a880daa92487b7f18653c32fcfcbad11ead6b75 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 16 Jul 2010 16:54:39 +0000 Subject: [PATCH 512/674] homekey in sequencer viewer wasnt quite setting 1:1 --- source/blender/editors/space_sequencer/sequencer_edit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 004aacb921f..b320deb85e3 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -2157,7 +2157,7 @@ static int sequencer_view_zoom_ratio_exec(bContext *C, wmOperator *op) float facx= (v2d->mask.xmax - v2d->mask.xmin) / winx; float facy= (v2d->mask.ymax - v2d->mask.ymin) / winy; - BLI_resize_rctf(&v2d->cur, winx*facx*ratio, winy*facy*ratio); + BLI_resize_rctf(&v2d->cur, (int)(winx*facx*ratio) + 1, (int)(winy*facy*ratio) + 1); ED_region_tag_redraw(CTX_wm_region(C)); From addb2bbff252b6751e3eb97ac859d4ecbd4e1b78 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 16 Jul 2010 22:21:37 +0000 Subject: [PATCH 513/674] fix for assigning any ID in rna, it would not run id_lib_extern() which means the library reference would be lost on reload. --- source/blender/makesrna/intern/makesrna.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c index 40f6c1de67e..35b2eff9c62 100644 --- a/source/blender/makesrna/intern/makesrna.c +++ b/source/blender/makesrna/intern/makesrna.c @@ -628,6 +628,14 @@ static char *rna_def_property_set_func(FILE *f, StructRNA *srna, PropertyRNA *pr fprintf(f, " if(value.data)\n"); fprintf(f, " id_us_plus((ID*)value.data);\n\n"); } + else { + PointerPropertyRNA *pprop= (PointerPropertyRNA*)dp->prop; + StructRNA *type= rna_find_struct((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"); + } + } fprintf(f, " data->%s= value.data;\n", dp->dnaname); From 71c22fefea4269ba1c633b9dcee1c6a538ea616b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 16 Jul 2010 23:17:13 +0000 Subject: [PATCH 514/674] sequencer outline, credits on a black background wasnt easy to see. --- .../editors/space_sequencer/sequencer_draw.c | 48 ++++++++++++------- 1 file changed, 31 insertions(+), 17 deletions(-) diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index e46294513e7..221e144ed60 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -840,32 +840,46 @@ void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq glDisable(GL_TEXTURE_2D); glDeleteTextures(1, &texid); - /* safety border */ - if (sseq->mainb == SEQ_DRAW_IMG_IMBUF && - (sseq->flag & SEQ_DRAW_SAFE_MARGINS) != 0) { - float fac= 0.1; + if(sseq->mainb == SEQ_DRAW_IMG_IMBUF) { + float x1 = v2d->tot.xmin; float y1 = v2d->tot.ymin; float x2 = v2d->tot.xmax; float y2 = v2d->tot.ymax; - - float a= fac*(x2-x1); - x1+= a; - x2-= a; - - a= fac*(y2-y1); - y1+= a; - y2-= a; - - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + + /* border */ setlinestyle(3); + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + UI_ThemeColorBlendShade(TH_WIRE, TH_BACK, 1.0, 0); - - uiSetRoundBox(15); - gl_round_box(GL_LINE_LOOP, x1, y1, x2, y2, 12.0); + + glBegin(GL_LINE_LOOP); + glVertex2f(x1-0.5, y1-0.5); + glVertex2f(x1-0.5, y2+0.5); + glVertex2f(x2+0.5, y2+0.5); + glVertex2f(x2+0.5, y1-0.5); + glEnd(); + + /* safety border */ + if ((sseq->flag & SEQ_DRAW_SAFE_MARGINS) != 0) { + float fac= 0.1; + + float a= fac*(x2-x1); + x1+= a; + x2-= a; + + a= fac*(y2-y1); + y1+= a; + y2-= a; + + uiSetRoundBox(15); + gl_round_box(GL_LINE_LOOP, x1, y1, x2, y2, 12.0); + + } setlinestyle(0); + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); } From 4cc05dfc1b303f873a10ab576b0bc46751014473 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 17 Jul 2010 00:38:34 +0000 Subject: [PATCH 515/674] simplify thumbnail reading and remove some warnings --- release/freedesktop/blender-thumbnailer.py | 47 +++++----- .../editors/interface/interface_templates.c | 2 +- source/blender/imbuf/intern/thumbs_blend.c | 92 ++++++++----------- .../blender/makesrna/intern/rna_controller.c | 2 +- .../blender/windowmanager/intern/wm_files.c | 16 ++-- .../windowmanager/intern/wm_operators.c | 2 +- 6 files changed, 72 insertions(+), 89 deletions(-) diff --git a/release/freedesktop/blender-thumbnailer.py b/release/freedesktop/blender-thumbnailer.py index 5274da103b9..27d6259d172 100755 --- a/release/freedesktop/blender-thumbnailer.py +++ b/release/freedesktop/blender-thumbnailer.py @@ -25,57 +25,54 @@ To run automatically with nautilus: gconftool --type string --set /desktop/gnome/thumbnailers/application@x-blender/command "blender-thumbnailer.py %i %o" """ -import os import struct -import sys def blend_extract_thumb(path): + import os + # def MAKE_ID(tag): ord(tag[0])<<24 | ord(tag[1])<<16 | ord(tag[2])<<8 | ord(tag[3]) REND = 1145980242 # MAKE_ID(b'REND') TEST = 1414743380 # MAKE_ID(b'TEST') blendfile = open(path, 'rb') - head = blendfile.read(7) + head = blendfile.read(12) if head[0:2] == b'\x1f\x8b': # gzip magic import gzip blendfile.close() blendfile = gzip.open(path, 'rb') - head = blendfile.read(7) + head = blendfile.read(12) - if head != b'BLENDER': + if not head.startswith(b'BLENDER'): blendfile.close() return None, 0, 0 - is_64_bit = (blendfile.read(1) == b'-') + is_64_bit = (head[7] == b'-') # true for PPC, false for X86 - is_big_endian = (blendfile.read(1) == b'V') + is_big_endian = (head[8] == b'V') - # Now read the bhead chunk!!! - blendfile.read(3) # skip the version - - sizeof_pointer = 8 if is_64_bit else 4 + # blender pre 2.5 had no thumbs + if head[9:11] <= b'24': + return None, 0, 0 sizeof_bhead = 24 if is_64_bit else 20 - - int_endian = '>i' if is_big_endian else ' ") else: diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index ecbdab98257..53a9b85b980 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -195,7 +195,7 @@ static void id_search_cb(const bContext *C, void *arg_template, char *str, uiSea RNA_parameter_set_lookup(&parms, "context", &C); - if (RNA_function_call(C, &reports, &ptr, func, &parms) == 0) { + if (RNA_function_call((bContext *)C, &reports, &ptr, func, &parms) == 0) { int* ret; RNA_parameter_get_lookup(&parms, "ret", (void **)&ret); diff --git a/source/blender/imbuf/intern/thumbs_blend.c b/source/blender/imbuf/intern/thumbs_blend.c index 7f1c903e9de..cb27b1a647f 100644 --- a/source/blender/imbuf/intern/thumbs_blend.c +++ b/source/blender/imbuf/intern/thumbs_blend.c @@ -40,16 +40,14 @@ static ImBuf *loadblend_thumb(gzFile gzfile) { - char buf[8]; - int code= 0; + char buf[12]; + int bhead[24/sizeof(int)]; /* max size on 64bit */ char endian, pointer_size; char endian_switch; - int len, im_len, x, y; - ImBuf *img= NULL; - + int sizeof_bhead ; /* read the blend file header */ - if(gzread(gzfile, buf, 8) != 8) + if(gzread(gzfile, buf, 12) != 12) return NULL; if(strncmp(buf, "BLENDER", 7)) return NULL; @@ -61,38 +59,23 @@ static ImBuf *loadblend_thumb(gzFile gzfile) else return NULL; - /* read the next 4 bytes, only need the first char, ignore the version */ - /* endian and vertsion (ignored) */ - if(gzread(gzfile, buf, 4) != 4) - return NULL; + sizeof_bhead = 16 + pointer_size; - if(buf[0]=='V') + if(buf[8]=='V') endian= B_ENDIAN; /* big: PPC */ - else if(buf[0]=='v') + else if(buf[8]=='v') endian= L_ENDIAN; /* little: x86 */ else return NULL; - while(gzread(gzfile, &code, sizeof(int)) == sizeof(int)) { - endian_switch = ((ENDIAN_ORDER != endian)) ? 1 : 0; - - if(gzread(gzfile, buf, sizeof(int)) != sizeof(int)) - return NULL; - - len = *( (int *)((void *)buf) ); + endian_switch = ((ENDIAN_ORDER != endian)) ? 1 : 0; + while(gzread(gzfile, bhead, sizeof_bhead) == sizeof_bhead) { if(endian_switch) - SWITCH_INT(len); + SWITCH_INT(bhead[1]); /* length */ - /* finally read the rest of the bhead struct, pointer and 2 ints */ - if(gzread(gzfile, buf, pointer_size) != pointer_size) - return NULL; - if(gzread(gzfile, buf, sizeof(int) * 2) != sizeof(int) * 2) - return NULL; - - /* we dont actually care whats in the bhead */ - if (code==REND) { - gzseek(gzfile, len, SEEK_CUR); /* skip to the next */ + if (bhead[0]==REND) { + gzseek(gzfile, bhead[1], SEEK_CUR); /* skip to the next */ } else { break; @@ -100,35 +83,36 @@ static ImBuf *loadblend_thumb(gzFile gzfile) } /* using 'TEST' since new names segfault when loading in old blenders */ - if(code != TEST) - return NULL; + if(bhead[0] == TEST) { + ImBuf *img= NULL; + int size[2]; - if(gzread(gzfile, &x, sizeof(int)) != sizeof(int)) - return NULL; - if(gzread(gzfile, &y, sizeof(int)) != sizeof(int)) - return NULL; + if(gzread(gzfile, size, sizeof(size)) != sizeof(size)) + return NULL; - len -= sizeof(int) * 2; + if(endian_switch) { + SWITCH_INT(size[0]); + SWITCH_INT(size[1]); + } + /* length */ + bhead[1] -= sizeof(int) * 2; - if(endian_switch) { - SWITCH_INT(x); - SWITCH_INT(y); + /* inconsistant image size, quit early */ + if(bhead[1] != size[0] * size[1] * sizeof(int)) + return NULL; + + /* finally malloc and read the data */ + img= IMB_allocImBuf(size[0], size[1], 32, IB_rect | IB_metadata, 0); + + if(gzread(gzfile, img->rect, bhead[1]) != bhead[1]) { + IMB_freeImBuf(img); + img= NULL; + } + + return img; } - - /* inconsistant image size, quit early */ - im_len = x * y * sizeof(int); - if(im_len != len) - return NULL; - - /* finally malloc and read the data */ - img= IMB_allocImBuf(x, y, 32, IB_rect | IB_metadata, 0); - - if(gzread(gzfile, img->rect, len) != len) { - IMB_freeImBuf(img); - img= NULL; - } - - return img; + + return NULL; } ImBuf *IMB_loadblend_thumb(const char *path) diff --git a/source/blender/makesrna/intern/rna_controller.c b/source/blender/makesrna/intern/rna_controller.c index c66ce532351..43297f29945 100644 --- a/source/blender/makesrna/intern/rna_controller.c +++ b/source/blender/makesrna/intern/rna_controller.c @@ -103,6 +103,7 @@ static void rna_Controller_state_number_set(struct PointerRNA *ptr, const int va cont->state_mask = (1 << (value - 1)); } +#if 0 /* editable is set to false, comment for now. */ static void rna_Controller_state_get(PointerRNA *ptr, int *values) { bController *cont= (bController *)ptr->data; @@ -113,7 +114,6 @@ static void rna_Controller_state_get(PointerRNA *ptr, int *values) values[i] = (cont->state_mask & (1<data; diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index fc7bf9b79c7..86e08118e54 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -689,14 +689,14 @@ void wm_autosave_location(char *filename) sprintf(pidstr, "%d.blend", abs(getpid())); #ifdef WIN32 - // XXX Need to investigate how to handle default location of '/tmp/' - // This is a relative directory on Windows, and it may be - // found. Example: - // Blender installed on D:\ drive, D:\ drive has D:\tmp\ - // Now, BLI_exists() will find '/tmp/' exists, but - // 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. + /* XXX Need to investigate how to handle default location of '/tmp/' + * This is a relative directory on Windows, and it may be + * found. Example: + * Blender installed on D:\ drive, D:\ drive has D:\tmp\ + * Now, BLI_exists() will find '/tmp/' exists, but + * 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(U.tempdir)) { savedir = BLI_get_folder_create(BLENDER_USER_AUTOSAVE, NULL); BLI_make_file_string("/", filename, savedir, pidstr); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 09c11bcfda5..370dd111936 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -2702,7 +2702,7 @@ int WM_radial_control_modal(bContext *C, wmOperator *op, wmEvent *event) float dist; double new_value = RNA_float_get(op->ptr, "new_value"); int ret = OPERATOR_RUNNING_MODAL; - float initial_value = RNA_float_get(op->ptr, "initial_value"); + // float initial_value = RNA_float_get(op->ptr, "initial_value"); mode = RNA_int_get(op->ptr, "mode"); RNA_int_get_array(op->ptr, "initial_mouse", initial_mouse); From cc11047fad6b647aab4e2d0a5a6f0ce43c5f2eb5 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Sat, 17 Jul 2010 02:29:29 +0000 Subject: [PATCH 516/674] Logic Editor: fix for float values steps and precision (reported by Mal Duffin (malCanDo) over email) The UI wasn't working. + renaming motion blur rna to motion_blur_factor + fixing "using wrong dna" for min_y constraint actuator RNA --- source/blender/makesrna/intern/rna_actuator.c | 98 +++++++++---------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/source/blender/makesrna/intern/rna_actuator.c b/source/blender/makesrna/intern/rna_actuator.c index f07cc6fd419..fecf66f533e 100644 --- a/source/blender/makesrna/intern/rna_actuator.c +++ b/source/blender/makesrna/intern/rna_actuator.c @@ -606,100 +606,100 @@ static void rna_def_object_actuator(BlenderRNA *brna) prop= RNA_def_property(srna, "proportional_coefficient", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "forcerot[0]"); - RNA_def_property_ui_range(prop, 0.0, 200.0, 1.0, 0.1); + RNA_def_property_ui_range(prop, 0.0, 200.0, 10, 2); RNA_def_property_ui_text(prop, "Proportional Coefficient", "Typical value is 60x integral coefficient"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "integral_coefficient", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "forcerot[1]"); - RNA_def_property_ui_range(prop, 0.0, 3.0, 0.1, 0.01); + RNA_def_property_ui_range(prop, 0.0, 3.0, 10, 2); RNA_def_property_float_funcs(prop, NULL, "rna_ObjectActuator_integralcoefficient_set", NULL); RNA_def_property_ui_text(prop, "Integral Coefficient", "Low value (0.01) for slow response, high value (0.5) for fast response"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "derivate_coefficient", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "forcerot[2]"); - RNA_def_property_ui_range(prop, -100.0, 100.0, 1.0, 0.1); + RNA_def_property_ui_range(prop, -100.0, 100.0, 10, 2); RNA_def_property_ui_text(prop, "Derivate Coefficient", "Not required, high values can cause instability"); RNA_def_property_update(prop, NC_LOGIC, NULL); /* Servo Limit */ prop= RNA_def_property(srna, "force_max_x", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "dloc[0]"); - RNA_def_property_ui_range(prop, -100.0, 100.0, 1.0, 0.1); + RNA_def_property_ui_range(prop, -100.0, 100.0, 1, 2); RNA_def_property_ui_text(prop, "Max", "Set the upper limit for force"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "force_min_x", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "drot[0]"); - RNA_def_property_ui_range(prop, -100.0, 100.0, 1.0, 0.1); + RNA_def_property_ui_range(prop, -100.0, 100.0, 1, 2); RNA_def_property_ui_text(prop, "Min", "Set the lower limit for force"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "force_max_y", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "dloc[0]"); - RNA_def_property_ui_range(prop, -100.0, 100.0, 1.0, 0.1); + RNA_def_property_float_sdna(prop, NULL, "dloc[1]"); + RNA_def_property_ui_range(prop, -100.0, 100.0, 1, 2); RNA_def_property_ui_text(prop, "Max", "Set the upper limit for force"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "force_min_y", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "drot[1]"); - RNA_def_property_ui_range(prop, -100.0, 100.0, 1.0, 0.1); + RNA_def_property_ui_range(prop, -100.0, 100.0, 1, 2); RNA_def_property_ui_text(prop, "Min", "Set the lower limit for force"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "force_max_z", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "dloc[2]"); - RNA_def_property_ui_range(prop, -100.0, 100.0, 1.0, 0.1); + RNA_def_property_ui_range(prop, -100.0, 100.0, 1, 2); RNA_def_property_ui_text(prop, "Max", "Set the upper limit for force"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "force_min_z", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "drot[2]"); - RNA_def_property_ui_range(prop, -100.0, 100.0, 1.0, 0.1); + RNA_def_property_ui_range(prop, -100.0, 100.0, 1, 2); RNA_def_property_ui_text(prop, "Min", "Set the lower limit for force"); RNA_def_property_update(prop, NC_LOGIC, NULL); /* floats 3 Arrays*/ - prop= RNA_def_property(srna, "loc", PROP_FLOAT, PROP_TRANSLATION); + prop= RNA_def_property(srna, "loc", PROP_FLOAT, PROP_XYZ); RNA_def_property_float_sdna(prop, NULL, "dloc"); RNA_def_property_array(prop, 3); - RNA_def_property_ui_range(prop, -10000.0, 10000.0, 0.1, 0.001); + RNA_def_property_ui_range(prop, -10000.0, 10000.0, 10, 2); RNA_def_property_ui_text(prop, "Loc", "Sets the location"); RNA_def_property_update(prop, NC_LOGIC, NULL); - prop= RNA_def_property(srna, "rot", PROP_FLOAT, PROP_TRANSLATION); + prop= RNA_def_property(srna, "rot", PROP_FLOAT, PROP_XYZ); RNA_def_property_float_sdna(prop, NULL, "drot"); RNA_def_property_array(prop, 3); - RNA_def_property_ui_range(prop, -10000.0, 10000.0, 0.1, 0.001); + RNA_def_property_ui_range(prop, -10000.0, 10000.0, 10, 2); RNA_def_property_ui_text(prop, "Rot", "Sets the rotation"); RNA_def_property_update(prop, NC_LOGIC, NULL); - prop= RNA_def_property(srna, "force", PROP_FLOAT, PROP_TRANSLATION); + prop= RNA_def_property(srna, "force", PROP_FLOAT, PROP_XYZ); RNA_def_property_float_sdna(prop, NULL, "forceloc"); RNA_def_property_array(prop, 3); - RNA_def_property_ui_range(prop, -10000.0, 10000.0, 0.1, 0.001); + RNA_def_property_ui_range(prop, -10000.0, 10000.0, 10, 2); RNA_def_property_ui_text(prop, "Force", "Sets the force"); RNA_def_property_update(prop, NC_LOGIC, NULL); - prop= RNA_def_property(srna, "torque", PROP_FLOAT, PROP_TRANSLATION); + prop= RNA_def_property(srna, "torque", PROP_FLOAT, PROP_XYZ); RNA_def_property_float_sdna(prop, NULL, "forcerot"); RNA_def_property_array(prop, 3); - RNA_def_property_ui_range(prop, -10000.0, 10000.0, 0.1, 0.001); + RNA_def_property_ui_range(prop, -10000.0, 10000.0, 10, 2); RNA_def_property_ui_text(prop, "Torque", "Sets the torque"); RNA_def_property_update(prop, NC_LOGIC, NULL); - prop= RNA_def_property(srna, "linear_velocity", PROP_FLOAT, PROP_TRANSLATION); + prop= RNA_def_property(srna, "linear_velocity", PROP_FLOAT, PROP_XYZ); RNA_def_property_float_sdna(prop, NULL, "linearvelocity"); RNA_def_property_array(prop, 3); - RNA_def_property_ui_range(prop, -10000.0, 10000.0, 0.1, 0.001); + RNA_def_property_ui_range(prop, -10000.0, 10000.0, 10, 2); RNA_def_property_ui_text(prop, "Linear Velocity", "Sets the linear velocity (in Servo mode it sets the target relative linear velocity, it will be achieved by automatic application of force. Null velocity is a valid target)"); RNA_def_property_update(prop, NC_LOGIC, NULL); - prop= RNA_def_property(srna, "angular_velocity", PROP_FLOAT, PROP_TRANSLATION); + prop= RNA_def_property(srna, "angular_velocity", PROP_FLOAT, PROP_XYZ); RNA_def_property_float_sdna(prop, NULL, "angularvelocity"); RNA_def_property_array(prop, 3); - RNA_def_property_ui_range(prop, -10000.0, 10000.0, 0.1, 0.001); + RNA_def_property_ui_range(prop, -10000.0, 10000.0, 10, 2); RNA_def_property_ui_text(prop, "Angular Velocity", "Sets the angular velocity"); RNA_def_property_update(prop, NC_LOGIC, NULL); @@ -848,17 +848,17 @@ static void rna_def_camera_actuator(BlenderRNA *brna) /* floats */ prop= RNA_def_property(srna, "height", PROP_FLOAT, PROP_NONE); - RNA_def_property_ui_range(prop, 0.0, 20.0, 0.1, 0.1); + RNA_def_property_ui_range(prop, 0.0, 20.0, 1, 2); RNA_def_property_ui_text(prop, "Height", ""); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "min", PROP_FLOAT, PROP_NONE); - RNA_def_property_ui_range(prop, 0.0, 20.0, 0.1, 0.1); + RNA_def_property_ui_range(prop, 0.0, 20.0, 1, 2); RNA_def_property_ui_text(prop, "Min", ""); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "max", PROP_FLOAT, PROP_NONE); - RNA_def_property_ui_range(prop, 0.0, 20.0, 0.1, 0.1); + RNA_def_property_ui_range(prop, 0.0, 20.0, 1, 2); RNA_def_property_ui_text(prop, "Max", ""); RNA_def_property_update(prop, NC_LOGIC, NULL); @@ -902,62 +902,62 @@ static void rna_def_sound_actuator(BlenderRNA *brna) RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "volume", PROP_FLOAT, PROP_NONE); - RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 0.01); + RNA_def_property_ui_range(prop, 0.0, 1.0, 1, 2); RNA_def_property_range(prop, 0.0, 2.0); RNA_def_property_ui_text(prop, "Volume", "Sets the initial volume of the sound"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "pitch", PROP_FLOAT, PROP_NONE); - RNA_def_property_ui_range(prop, -12.0, 12.0, 1.0, 0.1); + RNA_def_property_ui_range(prop, -12.0, 12.0, 1, 2); RNA_def_property_ui_text(prop, "Pitch", "Sets the pitch of the sound"); RNA_def_property_update(prop, NC_LOGIC, NULL); /* floats - 3D Parameters */ prop= RNA_def_property(srna, "minimum_gain_3d", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "sound3D.min_gain"); - RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 0.01); + RNA_def_property_ui_range(prop, 0.0, 1.0, 1, 2); RNA_def_property_ui_text(prop, "Minimum Gain", "The minimum gain of the sound, no matter how far it is away"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "maximum_gain_3d", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "sound3D.max_gain"); - RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 0.01); + RNA_def_property_ui_range(prop, 0.0, 1.0, 1, 2); RNA_def_property_ui_text(prop, "Maximum Gain", "The maximum gain of the sound, no matter how near it is"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "reference_distance_3d", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "sound3D.reference_distance"); - RNA_def_property_ui_range(prop, 0.0, FLT_MAX, 1.0, 0.01); + RNA_def_property_ui_range(prop, 0.0, FLT_MAX, 1, 2); RNA_def_property_ui_text(prop, "Reference Distance", "The distance where the sound has a gain of 1.0"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "max_distance_3d", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "sound3D.max_distance"); - RNA_def_property_ui_range(prop, 0.0, FLT_MAX, 1.0, 0.01); + RNA_def_property_ui_range(prop, 0.0, FLT_MAX, 1, 2); RNA_def_property_ui_text(prop, "Maximum Distance", "The maximum distance at which you can hear the sound"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "rolloff_factor_3d", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "sound3D.rolloff_factor"); - RNA_def_property_ui_range(prop, 0.0, 5.0, 1.0, 0.01); + RNA_def_property_ui_range(prop, 0.0, 5.0, 1, 2); RNA_def_property_ui_text(prop, "Rolloff", "The influence factor on volume depending on distance"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "cone_outer_gain_3d", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "sound3D.cone_outer_gain"); - RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 0.01); + RNA_def_property_ui_range(prop, 0.0, 1.0, 1, 2); RNA_def_property_ui_text(prop, "Cone Outer Gain", "The gain outside the outer cone. The gain in the outer cone will be interpolated between this value and the normal gain in the inner cone"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "cone_outer_angle_3d", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "sound3D.cone_outer_angle"); - RNA_def_property_ui_range(prop, 0.0, 360.0, 1.0, 0.01); + RNA_def_property_ui_range(prop, 0.0, 360.0, 1, 2); RNA_def_property_ui_text(prop, "Cone Outer Angle", "The angle of the outer cone"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "cone_inner_angle_3d", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "sound3D.cone_inner_angle"); - RNA_def_property_ui_range(prop, 0.0, 360.0, 1.0, 0.01); + RNA_def_property_ui_range(prop, 0.0, 360.0, 1, 2); RNA_def_property_ui_text(prop, "Cone Inner Angle", "The angle of the inner cone"); RNA_def_property_update(prop, NC_LOGIC, NULL); @@ -1132,41 +1132,41 @@ static void rna_def_constraint_actuator(BlenderRNA *brna) RNA_def_property_update(prop, NC_LOGIC, NULL); /* ACT_CONST_TYPE_ORI */ - prop= RNA_def_property(srna, "max_rotation", PROP_FLOAT, PROP_TRANSLATION); + prop= RNA_def_property(srna, "max_rotation", PROP_FLOAT, PROP_XYZ); RNA_def_property_float_sdna(prop, NULL, "maxrot"); RNA_def_property_array(prop, 3); - RNA_def_property_ui_range(prop, -2000.0, 2000.0, 0.1, 0.001); + RNA_def_property_ui_range(prop, -2000.0, 2000.0, 10, 2); RNA_def_property_ui_text(prop, "Reference Direction", "Reference Direction"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "min_angle", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "minloc[0]"); - RNA_def_property_ui_range(prop, 0.0, 180.0, 0.1, 0.01); + RNA_def_property_ui_range(prop, 0.0, 180.0, 10, 2); RNA_def_property_ui_text(prop, "Min Angle", "Minimum angle (in degree) to maintain with target direction. No correction is done if angle with target direction is between min and max"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "max_angle", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "maxloc[0]"); - RNA_def_property_ui_range(prop, 0.0, 180.0, 0.1, 0.01); + RNA_def_property_ui_range(prop, 0.0, 180.0, 10, 2); RNA_def_property_ui_text(prop, "Max Angle", "Maximum angle (in degree) allowed with target direction. No correction is done if angle with target direction is between min and max"); RNA_def_property_update(prop, NC_LOGIC, NULL); /* ACT_CONST_TYPE_FH */ prop= RNA_def_property(srna, "fh_height", PROP_FLOAT, PROP_NONE); RNA_def_property_float_funcs(prop, "rna_ConstraintActuator_fhheight_get", "rna_ConstraintActuator_fhheight_set", NULL); - RNA_def_property_ui_range(prop, 0.01, 2000.0, 0.1, 0.01); + RNA_def_property_ui_range(prop, 0.01, 2000.0, 10, 2); RNA_def_property_ui_text(prop, "Distance", "Height of the Fh area"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "spring", PROP_FLOAT, PROP_NONE); RNA_def_property_float_funcs(prop, "rna_ConstraintActuator_spring_get", "rna_ConstraintActuator_spring_set", NULL); - RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 0.01); + RNA_def_property_ui_range(prop, 0.0, 1.0, 10, 2); RNA_def_property_ui_text(prop, "Fh", "Spring force within the Fh area"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "fh_damping", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "maxrot[0]"); - RNA_def_property_ui_range(prop, 0.0, 1.0, 1, 1); + RNA_def_property_ui_range(prop, 0.0, 1.0, 10, 2); RNA_def_property_ui_text(prop, "Damping", "Damping factor of the Fh spring force"); RNA_def_property_update(prop, NC_LOGIC, NULL); @@ -1275,22 +1275,22 @@ static void rna_def_edit_object_actuator(BlenderRNA *brna) RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "mass", PROP_FLOAT, PROP_NONE); - RNA_def_property_ui_range(prop, 0, 10000, 1, 0.01); + RNA_def_property_ui_range(prop, 0, 10000, 1, 2); RNA_def_property_ui_text(prop, "Mass", "The mass of the object"); RNA_def_property_update(prop, NC_LOGIC, NULL); /* floats 3 Arrays*/ - prop= RNA_def_property(srna, "linear_velocity", PROP_FLOAT, PROP_TRANSLATION); + prop= RNA_def_property(srna, "linear_velocity", PROP_FLOAT, PROP_XYZ); RNA_def_property_float_sdna(prop, NULL, "linVelocity"); RNA_def_property_array(prop, 3); - RNA_def_property_ui_range(prop, -100.0, 100.0, 0.1, 0.01); + RNA_def_property_ui_range(prop, -100.0, 100.0, 10, 2); RNA_def_property_ui_text(prop, "Linear Velocity", "Velocity upon creation"); RNA_def_property_update(prop, NC_LOGIC, NULL); - prop= RNA_def_property(srna, "angular_velocity", PROP_FLOAT, PROP_TRANSLATION); + prop= RNA_def_property(srna, "angular_velocity", PROP_FLOAT, PROP_XYZ); RNA_def_property_float_sdna(prop, NULL, "angVelocity"); RNA_def_property_array(prop, 3); - RNA_def_property_ui_range(prop, -10000.0, 10000.0, 1.0, 0.01); + RNA_def_property_ui_range(prop, -10000.0, 10000.0, 10, 2); RNA_def_property_ui_text(prop, "Angular Velocity", "Angular velocity upon creation"); RNA_def_property_update(prop, NC_LOGIC, NULL); @@ -1650,9 +1650,9 @@ static void rna_def_twodfilter_actuator(BlenderRNA *brna) RNA_def_property_range(prop, 0, 99); //MAX_RENDER_PASS-1 RNA_def_property_update(prop, NC_LOGIC, NULL); - prop= RNA_def_property(srna, "motion_blur_value", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "motion_blur_factor", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "float_arg"); - RNA_def_property_ui_text(prop, "Value", "Set motion blur value"); + RNA_def_property_ui_text(prop, "Value", "Set motion blur factor"); RNA_def_property_range(prop, 0.0, 1.0); RNA_def_property_update(prop, NC_LOGIC, NULL); From 30b712ed68dd72583357180741e845efb5952ad9 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Sat, 17 Jul 2010 13:18:11 +0000 Subject: [PATCH 517/674] 48Hr Bugfix: Paste pose not correctly updating Removed some antiquated cruft that used to work around the old anim-system. --- source/blender/editors/armature/poseobject.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c index 6fdce9b9c41..6b71ed1ca7a 100644 --- a/source/blender/editors/armature/poseobject.c +++ b/source/blender/editors/armature/poseobject.c @@ -1046,17 +1046,7 @@ static int pose_paste_exec (bContext *C, wmOperator *op) /* Update event for pose and deformation children */ DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - - if (IS_AUTOKEY_ON(scene)) { -// XXX remake_action_ipos(ob->action); - } - else { - /* need to trick depgraph, action is not allowed to execute on pose */ - // XXX: this is probably not an issue anymore - where_is_pose(scene, ob); - ob->recalc= 0; - } - + /* notifiers for updates */ WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); From 22c6b7d174ec7158acc526821b002d9703cf4f56 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 17 Jul 2010 13:29:55 +0000 Subject: [PATCH 518/674] PNG Compression can now be set, writing uncompressed PNG's is significantly faster for high resolution images - 2k. --- release/scripts/ui/properties_render.py | 21 ++++++++++++------- source/blender/blenkernel/intern/image.c | 4 ++++ .../editors/space_sequencer/sequencer_draw.c | 8 +++---- source/blender/imbuf/intern/png.c | 9 ++++++-- source/blender/makesrna/intern/rna_scene.c | 4 ++-- 5 files changed, 30 insertions(+), 16 deletions(-) diff --git a/release/scripts/ui/properties_render.py b/release/scripts/ui/properties_render.py index 829416b86d3..9a153875756 100644 --- a/release/scripts/ui/properties_render.py +++ b/release/scripts/ui/properties_render.py @@ -295,6 +295,7 @@ class RENDER_PT_output(RenderButtonsPanel): layout = self.layout rd = context.scene.render + file_format = rd.file_format wide_ui = context.region.width > narrowui layout.prop(rd, "output_path", text="") @@ -310,11 +311,15 @@ class RENDER_PT_output(RenderButtonsPanel): col.prop(rd, "use_overwrite") col.prop(rd, "use_placeholder") - if rd.file_format in ('AVI_JPEG', 'JPEG'): + if file_format in ('AVI_JPEG', 'JPEG'): split = layout.split() split.prop(rd, "file_quality", slider=True) + + if file_format == 'PNG': + split = layout.split() + split.prop(rd, "file_quality", slider=True, text="Compression") - elif rd.file_format == 'MULTILAYER': + elif file_format == 'MULTILAYER': split = layout.split() col = split.column() @@ -323,7 +328,7 @@ class RENDER_PT_output(RenderButtonsPanel): if wide_ui: col = split.column() - elif rd.file_format == 'OPEN_EXR': + elif file_format == 'OPEN_EXR': split = layout.split() col = split.column() @@ -340,7 +345,7 @@ class RENDER_PT_output(RenderButtonsPanel): col = subsplit.column() col.prop(rd, "exr_preview") - elif rd.file_format == 'JPEG2000': + elif file_format == 'JPEG2000': split = layout.split() col = split.column() col.label(text="Depth:") @@ -351,7 +356,7 @@ class RENDER_PT_output(RenderButtonsPanel): col.prop(rd, "jpeg2k_preset", text="") col.prop(rd, "jpeg2k_ycc") - elif rd.file_format in ('CINEON', 'DPX'): + elif file_format in ('CINEON', 'DPX'): split = layout.split() col = split.column() col.prop(rd, "cineon_log", text="Convert to Log") @@ -363,15 +368,15 @@ class RENDER_PT_output(RenderButtonsPanel): col.prop(rd, "cineon_white", text="White") col.prop(rd, "cineon_gamma", text="Gamma") - elif rd.file_format == 'TIFF': + elif file_format == 'TIFF': split = layout.split() split.prop(rd, "tiff_bit") - elif rd.file_format == 'QUICKTIME_CARBON': + elif file_format == 'QUICKTIME_CARBON': split = layout.split() split.operator("scene.render_data_set_quicktime_codec") - elif rd.file_format == 'QUICKTIME_QTKIT': + elif file_format == 'QUICKTIME_QTKIT': split = layout.split() col = split.column() col.prop(rd, "quicktime_codec_type", text="Video Codec") diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index b66b5c60916..ffd0b378f07 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -1180,6 +1180,10 @@ int BKE_write_ibuf(Scene *scene, ImBuf *ibuf, char *name, int imtype, int subimt } else if (ELEM5(imtype, R_PNG, R_FFMPEG, R_H264, R_THEORA, R_XVID)) { ibuf->ftype= PNG; + + if(imtype==R_PNG) + ibuf->ftype |= quality; /* quality is actually compression 0-100 --> 0-9 */ + } #ifdef WITH_DDS else if ((imtype==R_DDS)) { diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index 221e144ed60..62fe9dc96b7 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -850,8 +850,6 @@ void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq /* border */ setlinestyle(3); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - UI_ThemeColorBlendShade(TH_WIRE, TH_BACK, 1.0, 0); glBegin(GL_LINE_LOOP); @@ -873,14 +871,16 @@ void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq y1+= a; y2-= a; + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + uiSetRoundBox(15); gl_round_box(GL_LINE_LOOP, x1, y1, x2, y2, 12.0); + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + } setlinestyle(0); - - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); } /* draw grease-pencil (image aligned) */ diff --git a/source/blender/imbuf/intern/png.c b/source/blender/imbuf/intern/png.c index 68a3324816c..4df8d8a2271 100644 --- a/source/blender/imbuf/intern/png.c +++ b/source/blender/imbuf/intern/png.c @@ -103,6 +103,11 @@ int imb_savepng(struct ImBuf *ibuf, char *name, int flags) int i, bytesperpixel, color_type = PNG_COLOR_TYPE_GRAY; FILE *fp = 0; + /* use the jpeg quality setting for compression */ + int compression; + compression= (int)(((float)(ibuf->ftype & 0xff) / 11.1111f)); + compression= compression < 0 ? 0 : (compression > 9 ? 9 : compression); + bytesperpixel = (ibuf->depth + 7) >> 3; if ((bytesperpixel > 4) || (bytesperpixel == 2)) { printf("imb_savepng: unsupported bytes per pixel: %d\n", bytesperpixel); @@ -201,10 +206,10 @@ int imb_savepng(struct ImBuf *ibuf, char *name, int flags) PNG_FILTER_AVG | PNG_FILTER_VALUE_AVG | PNG_FILTER_PAETH | PNG_FILTER_VALUE_PAETH| PNG_ALL_FILTERS); - - png_set_compression_level(png_ptr, Z_BEST_COMPRESSION); */ + png_set_compression_level(png_ptr, compression); + // png image settings png_set_IHDR(png_ptr, info_ptr, diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 7c2037be6e0..1b733efd7cf 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -2037,8 +2037,8 @@ static void rna_def_scene_render_data(BlenderRNA *brna) prop= RNA_def_property(srna, "file_quality", PROP_INT, PROP_PERCENTAGE); RNA_def_property_int_sdna(prop, NULL, "quality"); - RNA_def_property_range(prop, 1, 100); - RNA_def_property_ui_text(prop, "Quality", "Quality of JPEG images, AVI Jpeg and SGI movies"); + RNA_def_property_range(prop, 0, 100); /* 0 is needed for compression. */ + RNA_def_property_ui_text(prop, "Quality", "Quality of JPEG images, AVI Jpeg and SGI movies, Compression for PNG's"); RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); /* Tiff */ From 06193537edfd0635b8a6edabf1ea2f87eb33b8c6 Mon Sep 17 00:00:00 2001 From: Jason Wilkins Date: Sat, 17 Jul 2010 13:31:33 +0000 Subject: [PATCH 519/674] * Applied patch from nicholasbishop that refactors calculation of the grab delta into a function with less duplication --- source/blender/editors/sculpt_paint/sculpt.c | 192 +++++++------------ 1 file changed, 74 insertions(+), 118 deletions(-) diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 9577eb4eea2..645441e415f 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -2956,6 +2956,78 @@ static void sculpt_update_cache_invariants(bContext* C, Sculpt *sd, SculptSessio cache->vertex_rotation= 0; } +static void sculpt_update_brush_delta(Sculpt *sd, SculptSession *ss, Brush *brush) +{ + StrokeCache *cache = ss->cache; + int tool = brush->sculpt_tool; + + if(ELEM5(tool, + SCULPT_TOOL_GRAB, SCULPT_TOOL_NUDGE, + SCULPT_TOOL_CLAY_TUBES, SCULPT_TOOL_SNAKE_HOOK, + SCULPT_TOOL_THUMB)) { + float grab_location[3], imat[4][4], delta[3]; + + if(cache->first_time) { + copy_v3_v3(cache->orig_grab_location, + cache->true_location); + } + else if(tool == SCULPT_TOOL_SNAKE_HOOK) + add_v3_v3(cache->true_location, cache->grab_delta); + + /* compute 3d coordinate at same z from original location + mouse */ + initgrabz(cache->vc->rv3d, + cache->orig_grab_location[0], + cache->orig_grab_location[1], + cache->orig_grab_location[2]); + + window_to_3d_delta(cache->vc->ar, grab_location, + cache->mouse[0], cache->mouse[1]); + + /* compute delta to move verts by */ + if(!cache->first_time) { + switch(tool) { + case SCULPT_TOOL_GRAB: + case SCULPT_TOOL_THUMB: + sub_v3_v3v3(delta, grab_location, cache->old_grab_location); + invert_m4_m4(imat, ss->ob->obmat); + mul_mat3_m4_v3(imat, delta); + add_v3_v3(cache->grab_delta, delta); + break; + case SCULPT_TOOL_CLAY_TUBES: + case SCULPT_TOOL_NUDGE: + sub_v3_v3v3(cache->grab_delta, grab_location, cache->old_grab_location); + invert_m4_m4(imat, ss->ob->obmat); + mul_mat3_m4_v3(imat, cache->grab_delta); + break; + case SCULPT_TOOL_SNAKE_HOOK: + sub_v3_v3v3(cache->grab_delta, grab_location, cache->old_grab_location); + invert_m4_m4(imat, ss->ob->obmat); + mul_mat3_m4_v3(imat, cache->grab_delta); + break; + } + } + else { + zero_v3(cache->grab_delta); + } + + copy_v3_v3(cache->old_grab_location, grab_location); + + if(tool == SCULPT_TOOL_GRAB) + copy_v3_v3(sd->anchored_location, cache->true_location); + else if(tool == SCULPT_TOOL_THUMB) + copy_v3_v3(sd->anchored_location, cache->orig_grab_location); + + if(ELEM(tool, SCULPT_TOOL_GRAB, SCULPT_TOOL_THUMB)) { + /* location stays the same for finding vertices in brush radius */ + copy_v3_v3(cache->true_location, cache->orig_grab_location); + + sd->draw_anchored = 1; + copy_v3_v3(sd->anchored_initial_mouse, cache->initial_mouse); + sd->anchored_size = cache->pixel_radius; + } + } +} + /* Initialize the stroke cache variants from operator properties */ static void sculpt_update_cache_variants(bContext *C, Sculpt *sd, SculptSession *ss, struct PaintStroke *stroke, PointerRNA *ptr) { @@ -3083,125 +3155,9 @@ static void sculpt_update_cache_variants(bContext *C, Sculpt *sd, SculptSession } } - /* Find the grab delta */ - if(brush->sculpt_tool == SCULPT_TOOL_GRAB) { - float grab_location[3], imat[4][4]; + sculpt_update_brush_delta(sd, ss, brush); - if(cache->first_time) - copy_v3_v3(cache->orig_grab_location, cache->true_location); - - /* compute 3d coordinate at same z from original location + mouse */ - initgrabz(cache->vc->rv3d, cache->orig_grab_location[0], - cache->orig_grab_location[1], cache->orig_grab_location[2]); - window_to_3d_delta(cache->vc->ar, grab_location, cache->mouse[0], cache->mouse[1]); - - /* compute delta to move verts by */ - if(!cache->first_time) { - float delta[3]; - sub_v3_v3v3(delta, grab_location, cache->old_grab_location); - invert_m4_m4(imat, ss->ob->obmat); - mul_mat3_m4_v3(imat, delta); - add_v3_v3(cache->grab_delta, delta); - } - else { - zero_v3(cache->grab_delta); - } - - copy_v3_v3(cache->old_grab_location, grab_location); - - /* location stays the same for finding vertices in brush radius */ - copy_v3_v3(cache->true_location, cache->orig_grab_location); - - sd->draw_anchored = 1; - copy_v3_v3(sd->anchored_location, cache->true_location); - copy_v3_v3(sd->anchored_initial_mouse, cache->initial_mouse); - sd->anchored_size = cache->pixel_radius; - } - /* Find the nudge/clay tubes delta */ - else if(brush->sculpt_tool == SCULPT_TOOL_NUDGE || brush->sculpt_tool == SCULPT_TOOL_CLAY_TUBES) { - float grab_location[3], imat[4][4]; - - if(cache->first_time) - copy_v3_v3(cache->orig_grab_location, cache->true_location); - - /* compute 3d coordinate at same z from original location + mouse */ - initgrabz(cache->vc->rv3d, cache->orig_grab_location[0], - cache->orig_grab_location[1], cache->orig_grab_location[2]); - window_to_3d_delta(cache->vc->ar, grab_location, cache->mouse[0], cache->mouse[1]); - - /* compute delta to move verts by */ - if (!cache->first_time) { - sub_v3_v3v3(cache->grab_delta, grab_location, cache->old_grab_location); - invert_m4_m4(imat, ss->ob->obmat); - mul_mat3_m4_v3(imat, cache->grab_delta); - } - else { - zero_v3(cache->grab_delta); - } - - copy_v3_v3(cache->old_grab_location, grab_location); - } - /* Find the snake hook delta */ - else if(brush->sculpt_tool == SCULPT_TOOL_SNAKE_HOOK) { - float grab_location[3], imat[4][4]; - - if(cache->first_time) - copy_v3_v3(cache->orig_grab_location, cache->true_location); - else - add_v3_v3(cache->true_location, cache->grab_delta); - - /* compute 3d coordinate at same z from original location + mouse */ - initgrabz(cache->vc->rv3d, cache->orig_grab_location[0], - cache->orig_grab_location[1], cache->orig_grab_location[2]); - window_to_3d_delta(cache->vc->ar, grab_location, cache->mouse[0], cache->mouse[1]); - - /* compute delta to move verts by */ - if (!cache->first_time) { - sub_v3_v3v3(cache->grab_delta, grab_location, cache->old_grab_location); - invert_m4_m4(imat, ss->ob->obmat); - mul_mat3_m4_v3(imat, cache->grab_delta); - } - else { - zero_v3(cache->grab_delta); - } - - copy_v3_v3(cache->old_grab_location, grab_location); - } - /* Find the thumb delta */ - else if(brush->sculpt_tool == SCULPT_TOOL_THUMB) { - float grab_location[3], imat[4][4]; - - if(cache->first_time) - copy_v3_v3(cache->orig_grab_location, cache->true_location); - - /* compute 3d coordinate at same z from original location + mouse */ - initgrabz(cache->vc->rv3d, cache->orig_grab_location[0], - cache->orig_grab_location[1], cache->orig_grab_location[2]); - window_to_3d_delta(cache->vc->ar, grab_location, cache->mouse[0], cache->mouse[1]); - - /* compute delta to move verts by */ - if (!cache->first_time) { - float delta[3]; - sub_v3_v3v3(delta, grab_location, cache->old_grab_location); - invert_m4_m4(imat, ss->ob->obmat); - mul_mat3_m4_v3(imat, delta); - add_v3_v3(cache->grab_delta, delta); - } - else { - zero_v3(cache->grab_delta); - } - - copy_v3_v3(cache->old_grab_location, grab_location); - - /* location stays the same for finding vertices in brush radius */ - copy_v3_v3(cache->true_location, cache->orig_grab_location); - - sd->draw_anchored = 1; - copy_v3_v3(sd->anchored_location, cache->orig_grab_location); - copy_v3_v3(sd->anchored_initial_mouse, cache->initial_mouse); - sd->anchored_size = cache->pixel_radius; - } - else if(brush->sculpt_tool == SCULPT_TOOL_ROTATE) { + if(brush->sculpt_tool == SCULPT_TOOL_ROTATE) { dx = cache->mouse[0] - cache->initial_mouse[0]; dy = cache->mouse[1] - cache->initial_mouse[1]; From fd982af4471d55e756629c0aeffe60fe8f5b4687 Mon Sep 17 00:00:00 2001 From: Joerg Mueller Date: Sat, 17 Jul 2010 13:41:22 +0000 Subject: [PATCH 520/674] Merging revision 30434 from my GSoC branch, log: Fixed sound wave display bug for sounds that are not full length. --- source/blender/blenkernel/BKE_sound.h | 2 +- source/blender/blenkernel/intern/sound.c | 6 ++++-- source/blender/editors/space_sequencer/sequencer_draw.c | 8 +++++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/source/blender/blenkernel/BKE_sound.h b/source/blender/blenkernel/BKE_sound.h index 50c86e80b08..190b0400aff 100644 --- a/source/blender/blenkernel/BKE_sound.h +++ b/source/blender/blenkernel/BKE_sound.h @@ -94,6 +94,6 @@ float sound_sync_scene(struct Scene *scene); int sound_scene_playing(struct Scene *scene); -int sound_read_sound_buffer(struct bSound* sound, float* buffer, int length); +int sound_read_sound_buffer(struct bSound* sound, float* buffer, int length, float start, float end); #endif diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c index 6402f908422..f780e71d5cd 100644 --- a/source/blender/blenkernel/intern/sound.c +++ b/source/blender/blenkernel/intern/sound.c @@ -468,7 +468,9 @@ int sound_scene_playing(struct Scene *scene) return -1; } -int sound_read_sound_buffer(struct bSound* sound, float* buffer, int length) +int sound_read_sound_buffer(struct bSound* sound, float* buffer, int length, float start, float end) { - return AUD_readSound(sound->cache, buffer, length); + AUD_Sound* limiter = AUD_limitSound(sound->cache, start, end); + return AUD_readSound(limiter, buffer, length); + AUD_unload(limiter); } diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index 62fe9dc96b7..4955450fc22 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -168,7 +168,7 @@ static void get_seq_color3ubv(Scene *curscene, Sequence *seq, char *col) } } -static void drawseqwave(Sequence *seq, float x1, float y1, float x2, float y2, float stepsize) +static void drawseqwave(Scene *scene, Sequence *seq, float x1, float y1, float x2, float y2, float stepsize) { /* x1 is the starting x value to draw the wave, @@ -184,7 +184,9 @@ static void drawseqwave(Sequence *seq, float x1, float y1, float x2, float y2, f float* samples = MEM_mallocN(length * sizeof(float) * 2, "seqwave_samples"); if(!samples) return; - if(sound_read_sound_buffer(seq->sound, samples, length) != length) + if(sound_read_sound_buffer(seq->sound, samples, length, + (seq->startofs + seq->anim_startofs)/FPS, + (seq->startofs + seq->anim_startofs + seq->enddisp - seq->startdisp)/FPS) != length) { MEM_freeN(samples); return; @@ -636,7 +638,7 @@ static void draw_seq_strip(Scene *scene, ARegion *ar, SpaceSeq *sseq, Sequence * x2= seq->enddisp; /* draw sound wave */ - if(seq->type == SEQ_SOUND) drawseqwave(seq, x1, y1, x2, y2, (ar->v2d.cur.xmax - ar->v2d.cur.xmin)/ar->winx); + if(seq->type == SEQ_SOUND) drawseqwave(scene, seq, x1, y1, x2, y2, (ar->v2d.cur.xmax - ar->v2d.cur.xmin)/ar->winx); get_seq_color3ubv(scene, seq, col); if (G.moving && (seq->flag & SELECT)) { From ebc971f532e1413986dfc302a30dbe361f24a081 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 17 Jul 2010 14:34:52 +0000 Subject: [PATCH 521/674] bugfix [#22890] Setting the Maya keymap gives python errors --- release/scripts/presets/interaction/maya.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/release/scripts/presets/interaction/maya.py b/release/scripts/presets/interaction/maya.py index 777dee1e563..ba4eae89982 100644 --- a/release/scripts/presets/interaction/maya.py +++ b/release/scripts/presets/interaction/maya.py @@ -244,9 +244,9 @@ kmi = km.items.add('object.location_clear', 'G', 'PRESS', alt=True) kmi = km.items.add('object.rotation_clear', 'R', 'PRESS', alt=True) kmi = km.items.add('object.scale_clear', 'S', 'PRESS', alt=True) kmi = km.items.add('object.origin_clear', 'O', 'PRESS', alt=True) -kmi = km.items.add('object.hide_clear', 'H', 'PRESS', alt=True) -kmi = km.items.add('object.hide_set', 'H', 'PRESS') -kmi = km.items.add('object.hide_set', 'H', 'PRESS', shift=True) +kmi = km.items.add('object.hide_view_clear', 'H', 'PRESS', alt=True) +kmi = km.items.add('object.hide_view_set', 'H', 'PRESS') +kmi = km.items.add('object.hide_view_set', 'H', 'PRESS', shift=True) kmi.properties.unselected = True kmi = km.items.add('object.move_to_layer', 'M', 'PRESS') kmi = km.items.add('object.delete', 'X', 'PRESS') From e4756f4c330bc422f23d26bf7f6afaa0fe849dda Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sat, 17 Jul 2010 15:42:01 +0000 Subject: [PATCH 522/674] 2.5: installation paths, local directories (in the same folder as executable) are now considered system rather than user directories, as you would expect these to override any system directory for local installations. --- source/blender/blenlib/intern/path_util.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 2f8e4ab44b2..470676cb461 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -953,11 +953,11 @@ char *BLI_get_folder(int folder_id, char *subfolder) return NULL; case BLENDER_USER_DATAFILES: - if (get_path_local(path, "datafiles", subfolder)) break; if (get_path_user(path, "datafiles", subfolder, "BLENDER_USER_DATAFILES")) break; return NULL; case BLENDER_SYSTEM_DATAFILES: + if (get_path_local(path, "datafiles", subfolder)) break; if (get_path_system(path, "datafiles", subfolder, "BLENDER_SYSTEM_DATAFILES")) break; return NULL; @@ -973,11 +973,11 @@ char *BLI_get_folder(int folder_id, char *subfolder) return NULL; case BLENDER_USER_CONFIG: - if (get_path_local(path, "config", subfolder)) break; if (get_path_user(path, "config", subfolder, "BLENDER_USER_CONFIG")) break; return NULL; case BLENDER_SYSTEM_CONFIG: + if (get_path_local(path, "config", subfolder)) break; if (get_path_system(path, "config", subfolder, "BLENDER_SYSTEM_CONFIG")) break; return NULL; @@ -988,11 +988,11 @@ char *BLI_get_folder(int folder_id, char *subfolder) return NULL; case BLENDER_USER_SCRIPTS: - if (get_path_local(path, "scripts", subfolder)) break; if (get_path_user(path, "scripts", subfolder, "BLENDER_USER_SCRIPTS")) break; return NULL; case BLENDER_SYSTEM_SCRIPTS: + if (get_path_local(path, "scripts", subfolder)) break; if (get_path_system(path, "scripts", subfolder, "BLENDER_SYSTEM_SCRIPTS")) break; return NULL; @@ -1002,6 +1002,7 @@ char *BLI_get_folder(int folder_id, char *subfolder) return NULL; case BLENDER_SYSTEM_PYTHON: + if (get_path_local(path, "python", subfolder)) break; if (get_path_system(path, "python", subfolder, "BLENDER_SYSTEM_PYTHON")) break; return NULL; } From 02ef91a6195db38388b12ec9c643858ba1b5be7e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 17 Jul 2010 16:17:30 +0000 Subject: [PATCH 523/674] [#22876] Add new scene, stacker ".00" bug finding duplicates is a bit faster now too since it doesnt split the name and number before comparing ID's prefix. --- source/blender/blenkernel/BKE_library.h | 3 +- source/blender/blenkernel/intern/library.c | 40 ++++++++++++---------- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/source/blender/blenkernel/BKE_library.h b/source/blender/blenkernel/BKE_library.h index cb61a08f3ba..fcf7ae85738 100644 --- a/source/blender/blenkernel/BKE_library.h +++ b/source/blender/blenkernel/BKE_library.h @@ -63,7 +63,7 @@ void free_libblock_us(struct ListBase *lb, void *idv); void free_main(struct Main *mainvar); void tag_main(struct Main *mainvar, int tag); -void splitIDname(char *name, char *left, int *nr); +int splitIDname(char *name, char *left, int *nr); void rename_id(struct ID *id, char *name); void test_idbutton(char *name); void text_idbutton(struct ID *id, char *text); @@ -85,4 +85,3 @@ void set_free_windowmanager_cb(void (*func)(struct bContext *, struct wmWindowMa #define ID_FALLBACK_NAME "Untitled" #endif - diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index 8d859a2f712..0cc31cc1cfa 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -995,7 +995,7 @@ void IMAnames_to_pupstring(char **str, char *title, char *extraops, ListBase *lb /* used by buttons.c library.c mball.c */ -void splitIDname(char *name, char *left, int *nr) +int splitIDname(char *name, char *left, int *nr) { int a; @@ -1003,19 +1003,21 @@ void splitIDname(char *name, char *left, int *nr) strncpy(left, name, 21); a= strlen(name); - if(a>1 && name[a-1]=='.') return; + if(a>1 && name[a-1]=='.') return a; while(a--) { if( name[a]=='.' ) { left[a]= 0; *nr= atol(name+a+1); - return; + return a; } if( isdigit(name[a])==0 ) break; left[a]= 0; } strcpy(left, name); + + return a; } static void sort_alpha_id(ListBase *lb, ID *id) @@ -1077,8 +1079,7 @@ static ID *is_dupid(ListBase *lb, ID *id, char *name) static int check_for_dupid(ListBase *lb, ID *id, char *name) { ID *idtest; - int nr= 0, nrtest, a; - const int maxtest=32; + int nr= 0, nrtest, a, left_len; char left[32], leftest[32], in_use[32]; /* make sure input name is terminated properly */ @@ -1095,22 +1096,25 @@ static int check_for_dupid(ListBase *lb, ID *id, char *name) /* we have a dup; need to make a new name */ /* quick check so we can reuse one of first 32 ids if vacant */ - memset(in_use, 0, maxtest); + memset(in_use, 0, sizeof(in_use)); /* get name portion, number portion ("name.number") */ - splitIDname( name, left, &nr); + left_len= splitIDname(name, left, &nr); /* if new name will be too long, truncate it */ if(nr>999 && strlen(left)>16) left[16]= 0; else if(strlen(left)>17) left[17]= 0; - for( idtest = lb->first; idtest; idtest = idtest->next ) { - if( id != idtest && idtest->lib == NULL ) { - splitIDname(idtest->name+2, leftest, &nrtest); - /* if base names match... */ - /* optimized */ - if( *left == *leftest && strcmp(left, leftest)==0 ) { - if(nrtest < maxtest) + if(left_len) { + for(idtest= lb->first; idtest; idtest= idtest->next) { + if( (id != idtest) && + (idtest->lib == NULL) && + (*name == *(idtest->name+2)) && + (strncmp(name, idtest->name+2, left_len)==0) && + (splitIDname(idtest->name+2, leftest, &nrtest) == left_len) + + ) { + if(nrtest < sizeof(in_use)) in_use[nrtest]= 1; /* mark as used */ if(nr <= nrtest) nr= nrtest+1; /* track largest unused */ @@ -1119,7 +1123,7 @@ static int check_for_dupid(ListBase *lb, ID *id, char *name) } /* decide which value of nr to use */ - for(a=0; a=nr) break; /* stop when we've check up to biggest */ if( in_use[a]==0 ) { /* found an unused value */ nr = a; @@ -1129,8 +1133,9 @@ static int check_for_dupid(ListBase *lb, ID *id, char *name) /* If the original name has no numeric suffix, * rather than just chopping and adding numbers, - * shave off the end chars until we have a unique name */ - if (nr==0) { + * shave off the end chars until we have a unique name. + * Check the null terminators match as well so we dont get Cube.000 -> Cube.00 */ + if (nr==0 && name[left_len] == left[left_len]) { int len = strlen(name)-1; idtest= is_dupid(lb, id, name); @@ -1389,4 +1394,3 @@ void rename_id(ID *id, char *name) new_id(lb, id, name); } - From 21cb1f82db01f9e0a69c955569cd6af4356b63e5 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sat, 17 Jul 2010 17:07:50 +0000 Subject: [PATCH 524/674] Revert part of commit 29079, cleanup of particle path drawing logic This commit and other commits attempting to fix it broke various things. The main thing that changed was that instead of computing children/paths in advance as part of particle_system_update, this was moved to do it just before drawing or rendering. I've changed back that behavior and tried to keep the other fixes in the commit. When the new particle system was just committed, it also worked this way but gave various problems, and I had to remove that behavior to get things working stable. Basically it meant that you could get have a path cache that was outdated in various situations, and it doesn't fit well with dependency graph evaluation order. This fixes: #22823: Children Particle Rendering is broken #22733: Particle objects not displayed #22888: SigSegV when rending hair particles #22820: Another SigSegV when undo adding hairs in particel edit mode Some particle setups in dupligroups. The three bugs that the original commit fixed are now also still working in my tests: #21316: Hair weight drawing is wrong #21923: Consistent Crash When Rendering Particle Scene. #21950: Path rendering option for particles causes crash --- source/blender/blenkernel/BKE_particle.h | 2 - source/blender/blenkernel/intern/particle.c | 8 +- .../blenkernel/intern/particle_system.c | 86 ++++++++++++++----- .../blender/editors/space_view3d/drawobject.c | 21 ++--- .../render/intern/source/convertblender.c | 4 - 5 files changed, 74 insertions(+), 47 deletions(-) diff --git a/source/blender/blenkernel/BKE_particle.h b/source/blender/blenkernel/BKE_particle.h index 33a41821fe2..fcef00ae9b3 100644 --- a/source/blender/blenkernel/BKE_particle.h +++ b/source/blender/blenkernel/BKE_particle.h @@ -255,11 +255,9 @@ void psys_threads_free(ParticleThread *threads); void psys_make_billboard(ParticleBillboardData *bb, float xvec[3], float yvec[3], float zvec[3], float center[3]); /* particle_system.c */ -void psys_update_path_cache(struct ParticleSimulationData *sim, float cfra); struct ParticleSystem *psys_get_target_system(struct Object *ob, struct ParticleTarget *pt); void psys_count_keyed_targets(struct ParticleSimulationData *sim); void psys_update_particle_tree(struct ParticleSystem *psys, float cfra); -void psys_update_children(struct ParticleSimulationData *sim); void psys_make_temp_pointcache(struct Object *ob, struct ParticleSystem *psys); void psys_get_pointcache_start_end(struct Scene *scene, ParticleSystem *psys, int *sfra, int *efra); diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index 96c0afedfb0..3791d808d01 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -433,7 +433,7 @@ void free_keyed_keys(ParticleSystem *psys) } } } -void psys_free_child_path_cache(ParticleSystem *psys) +static void free_child_path_cache(ParticleSystem *psys) { psys_free_path_cache_buffers(psys->childcache, &psys->childcachebufs); psys->childcache = NULL; @@ -451,7 +451,7 @@ void psys_free_path_cache(ParticleSystem *psys, PTCacheEdit *edit) psys->pathcache= NULL; psys->totcached= 0; - psys_free_child_path_cache(psys); + free_child_path_cache(psys); } } void psys_free_children(ParticleSystem *psys) @@ -462,7 +462,7 @@ void psys_free_children(ParticleSystem *psys) psys->totchild=0; } - psys_free_child_path_cache(psys); + free_child_path_cache(psys); } void psys_free_particles(ParticleSystem *psys) { @@ -2721,7 +2721,7 @@ void psys_cache_child_paths(ParticleSimulationData *sim, float cfra, int editupd } else { /* clear out old and create new empty path cache */ - psys_free_child_path_cache(sim->psys); + free_child_path_cache(sim->psys); sim->psys->childcache= psys_alloc_path_cache_buffers(&sim->psys->childcachebufs, totchild, ctx->steps+1); sim->psys->totchildcache = totchild; } diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index 33ea9f5ba6e..181d8fee4ba 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -3075,18 +3075,66 @@ static void deflect_particle(ParticleSimulationData *sim, int p, float dfra, flo /* Hair */ /************************************************/ /* check if path cache or children need updating and do it if needed */ -void psys_update_path_cache(ParticleSimulationData *sim, float cfra) +static void psys_update_path_cache(ParticleSimulationData *sim, float cfra) { ParticleSystem *psys = sim->psys; ParticleSettings *part = psys->part; - - /* only hair, keyed and baked stuff can have paths */ - if(part->type==PART_HAIR || psys->flag&PSYS_KEYED || psys->pointcache->mem_cache.first) { + ParticleEditSettings *pset = &sim->scene->toolsettings->particle; + int distr=0, alloc=0, skip=0; + + if((psys->part->childtype && psys->totchild != get_psys_tot_child(sim->scene, psys)) || psys->recalc&PSYS_RECALC_RESET) + alloc=1; + + if(alloc || psys->recalc&PSYS_RECALC_CHILD || (psys->vgroup[PSYS_VG_DENSITY] && (sim->ob && sim->ob->mode & OB_MODE_WEIGHT_PAINT))) + distr=1; + + if(distr){ + if(alloc) + realloc_particles(sim, sim->psys->totpart); + + if(get_psys_tot_child(sim->scene, psys)) { + /* don't generate children while computing the hair keys */ + if(!(psys->part->type == PART_HAIR) || (psys->flag & PSYS_HAIR_DONE)) { + distribute_particles(sim, PART_FROM_CHILD); + + if(part->from!=PART_FROM_PARTICLE && part->childtype==PART_CHILD_FACES && part->parents!=0.0) + psys_find_parents(sim); + } + } + else + psys_free_children(psys); + } + + if((part->type==PART_HAIR || psys->flag&PSYS_KEYED || psys->pointcache->flag & PTCACHE_BAKED)==0) + skip = 1; /* only hair, keyed and baked stuff can have paths */ + else if(part->ren_as != PART_DRAW_PATH && !(part->type==PART_HAIR && ELEM(part->ren_as, PART_DRAW_OB, PART_DRAW_GR))) + skip = 1; /* particle visualization must be set as path */ + else if(!psys->renderdata) { + if(part->draw_as != PART_DRAW_REND) + skip = 1; /* draw visualization */ + else if(psys->pointcache->flag & PTCACHE_BAKING) + skip = 1; /* no need to cache paths while baking dynamics */ + else if(psys_in_edit_mode(sim->scene, psys)) { + if((pset->flag & PE_DRAW_PART)==0) + skip = 1; + else if(part->childtype==0 && (psys->flag & PSYS_HAIR_DYNAMICS && psys->pointcache->flag & PTCACHE_BAKED)==0) + skip = 1; /* in edit mode paths are needed for child particles and dynamic hair */ + } + } + + if(!skip) { psys_cache_paths(sim, cfra); /* for render, child particle paths are computed on the fly */ - if(part->childtype && psys->totchild) - psys_cache_child_paths(sim, cfra, 0); + if(part->childtype) { + if(!psys->totchild) + skip = 1; + else if(psys->part->type == PART_HAIR && (psys->flag & PSYS_HAIR_DONE)==0) + skip = 1; + + if(!skip) + psys_cache_child_paths(sim, cfra, 0); + } } else if(psys->pathcache) psys_free_path_cache(psys, NULL); @@ -3201,8 +3249,6 @@ static void do_hair_dynamics(ParticleSimulationData *sim) psys->hair_out_dm = clothModifier_do(psys->clmd, sim->scene, sim->ob, dm, 0, 0); psys->clmd->sim_parms->effector_weights = NULL; - - psys_free_path_cache(psys, NULL); } static void hair_step(ParticleSimulationData *sim, float cfra) { @@ -3454,19 +3500,14 @@ static void dynamics_step(ParticleSimulationData *sim, float cfra) } free_collider_cache(&sim->colliders); - - if(psys->pathcache) - psys_free_path_cache(psys, NULL); } -void psys_update_children(ParticleSimulationData *sim) +static void update_children(ParticleSimulationData *sim) { if((sim->psys->part->type == PART_HAIR) && (sim->psys->flag & PSYS_HAIR_DONE)==0) /* don't generate children while growing hair - waste of time */ psys_free_children(sim->psys); - else if(sim->psys->part->childtype) { - if(sim->psys->totchild != get_psys_tot_child(sim->scene, sim->psys)) - distribute_particles(sim, PART_FROM_CHILD); - } + else if(sim->psys->part->childtype && sim->psys->totchild != get_psys_tot_child(sim->scene, sim->psys)) + distribute_particles(sim, PART_FROM_CHILD); else psys_free_children(sim->psys); } @@ -3721,6 +3762,8 @@ static void system_step(ParticleSimulationData *sim, float cfra) if(ELEM(cache_result, PTCACHE_READ_EXACT, PTCACHE_READ_INTERPOLATED)) { cached_step(sim, cfra); + update_children(sim); + psys_update_path_cache(sim, cfra); BKE_ptcache_validate(cache, framenr); @@ -3784,6 +3827,9 @@ static void system_step(ParticleSimulationData *sim, float cfra) BKE_ptcache_write_cache(use_cache, framenr); } + if(init) + update_children(sim); + /* cleanup */ if(psys->lattice){ end_latt_deform(psys->lattice); @@ -3946,13 +3992,6 @@ void particle_system_update(Scene *scene, Object *ob, ParticleSystem *psys) /* execute drivers only, as animation has already been done */ BKE_animsys_evaluate_animdata(&part->id, part->adt, cfra, ADT_RECALC_DRIVERS); - /* TODO: only free child paths in case of PSYS_RECALC_CHILD */ - if(psys->recalc & PSYS_RECALC || ob->recalc & OB_RECALC_ALL) - psys_free_path_cache(psys, NULL); - - if(psys->recalc & PSYS_RECALC_CHILD) - psys_free_children(psys); - if(psys->recalc & PSYS_RECALC_TYPE) psys_changed_type(&sim); else if(psys->recalc & PSYS_RECALC_PHYS) @@ -4009,6 +4048,7 @@ void particle_system_update(Scene *scene, Object *ob, ParticleSystem *psys) if(part->phystype == PART_PHYS_KEYED) { psys_count_keyed_targets(&sim); set_keyed_keys(&sim); + psys_update_path_cache(&sim,(int)cfra); } break; } diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index be98e24ea9d..532b4ce0771 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -3475,11 +3475,12 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv select=1; } - psys_update_children(&sim); - psys->flag|=PSYS_DRAWING; - totchild=psys->totchild*part->disp/100; + if(part->type==PART_HAIR && !psys->childcache) + totchild=0; + else + totchild=psys->totchild*part->disp/100; ma= give_current_material(ob,part->omat); @@ -3516,16 +3517,8 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv cfra=bsystem_time(scene, 0, (float)CFRA, 0.0f); - if(draw_as==PART_DRAW_PATH) { - if(psys->pathcache==NULL && psys->childcache==NULL) - psys_update_path_cache(&sim, cfra); - - /* can't create pathcache for some reason*/ - if(psys->pathcache==NULL && psys->childcache==NULL) - draw_as=PART_DRAW_DOT; - else if(psys->childcache==NULL) - totchild = 0; - } + if(draw_as==PART_DRAW_PATH && psys->pathcache==NULL && psys->childcache==NULL) + draw_as=PART_DRAW_DOT; /* 3. */ switch(draw_as){ @@ -3877,7 +3870,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv UI_ThemeColor(TH_WIRE); }*/ - if(totchild && ((part->draw&PART_DRAW_PARENT)==0 || psys_in_edit_mode(scene, psys))) + if(totchild && (part->draw&PART_DRAW_PARENT)==0) totpart=0; else if(psys->pathcache==NULL) totpart=0; diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 4436bdb9261..b2f526f0297 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -1550,7 +1550,6 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem if(part->phystype==PART_PHYS_KEYED) psys_count_keyed_targets(&sim); - psys_update_children(&sim); totchild=psys->totchild; if(G.rendering == 0) { /* preview render */ @@ -1655,9 +1654,6 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem transpose_m3(nmat); /* 2.6 setup strand rendering */ - if(part->ren_as == PART_DRAW_PATH && psys->pathcache==NULL) - psys_update_path_cache(&sim, cfra); - if(part->ren_as == PART_DRAW_PATH && psys->pathcache){ path_nbr=(int)pow(2.0,(double) part->ren_step); From a3d822f857657d45a62eda02467712561b4ab08a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 17 Jul 2010 17:36:53 +0000 Subject: [PATCH 525/674] Rendering from the sequencer in background mode was printing frame 0 for every frame --- source/blender/render/intern/source/pipeline.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index fd91bf8a2c2..258abe9a0fc 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -2453,6 +2453,8 @@ static void do_render_seq(Render * re) RenderResult *rr = re->result; int cfra = re->r.cfra; + re->i.cfra= cfra; + if(recurs_depth==0) { /* otherwise sequencer animation isnt updated */ BKE_animsys_evaluate_all_animation(G.main, (float)cfra); // XXX, was BKE_curframe(re->scene) From 1bb0c84236ec98647dabdd944d8575f32db33650 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 17 Jul 2010 17:50:20 +0000 Subject: [PATCH 526/674] - added text3d.body_format to be able to set bold/italic/smallcaps etc on text. - the length of a new text object wasnt set on creation. - tex3d and controllers rna name was being set to its body (rather then ID name) - remove reference to wave objects which are very old and not used anymore. --- source/blender/blenkernel/BKE_object.h | 1 - source/blender/blenkernel/intern/curve.c | 2 +- source/blender/blenkernel/intern/object.c | 8 -------- source/blender/makesdna/DNA_object_types.h | 2 +- source/blender/makesrna/intern/rna_controller.c | 1 - source/blender/makesrna/intern/rna_curve.c | 13 ++++++++----- source/blender/makesrna/intern/rna_object.c | 1 - 7 files changed, 10 insertions(+), 18 deletions(-) diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h index 07c3da48792..2a7ba4f98c9 100644 --- a/source/blender/blenkernel/BKE_object.h +++ b/source/blender/blenkernel/BKE_object.h @@ -83,7 +83,6 @@ struct Lamp *copy_lamp(struct Lamp *la); void make_local_lamp(struct Lamp *la); void free_camera(struct Camera *ca); void free_lamp(struct Lamp *la); -void *add_wave(void); struct Object *add_only_object(int type, char *name); struct Object *add_object(struct Scene *scene, int type); diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index 5015e0cef6c..d355a520a8c 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -148,7 +148,7 @@ Curve *add_curve(char *name, int type) cu->vfont->id.us+=4; cu->str= MEM_mallocN(12, "str"); strcpy(cu->str, "Text"); - cu->pos= 4; + cu->len= cu->pos= 4; cu->strinfo= MEM_callocN(12*sizeof(CharInfo), "strinfo new"); cu->totbox= cu->actbox= 1; cu->tb= MEM_callocN(MAXTEXTBOX*sizeof(TextBox), "textbox"); diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 012b38570da..75b5e6d9331 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -948,12 +948,6 @@ void free_lamp(Lamp *la) la->id.icon_id = 0; } -void *add_wave() -{ - return 0; -} - - /* *************************************************** */ static void *add_obdata_from_type(int type) @@ -967,7 +961,6 @@ static void *add_obdata_from_type(int type) case OB_CAMERA: return add_camera("Camera"); case OB_LAMP: return add_lamp("Lamp"); case OB_LATTICE: return add_lattice("Lattice"); - case OB_WAVE: return add_wave(); case OB_ARMATURE: return add_armature("Armature"); case OB_EMPTY: return NULL; default: @@ -987,7 +980,6 @@ static char *get_obdata_defname(int type) case OB_CAMERA: return "Camera"; case OB_LAMP: return "Lamp"; case OB_LATTICE: return "Lattice"; - case OB_WAVE: return "Wave"; case OB_ARMATURE: return "Armature"; case OB_EMPTY: return "Empty"; default: diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h index 601d2ef4fa5..2bd95b6f015 100644 --- a/source/blender/makesdna/DNA_object_types.h +++ b/source/blender/makesdna/DNA_object_types.h @@ -301,7 +301,7 @@ extern Object workob; #define OB_LAMP 10 #define OB_CAMERA 11 -#define OB_WAVE 21 +// #define OB_WAVE 21 #define OB_LATTICE 22 /* 23 and 24 are for life and sector (old file compat.) */ diff --git a/source/blender/makesrna/intern/rna_controller.c b/source/blender/makesrna/intern/rna_controller.c index 43297f29945..c5a57971001 100644 --- a/source/blender/makesrna/intern/rna_controller.c +++ b/source/blender/makesrna/intern/rna_controller.c @@ -229,7 +229,6 @@ void RNA_def_controller(BlenderRNA *brna) prop= RNA_def_property(srna, "module", PROP_STRING, PROP_NONE); RNA_def_property_ui_text(prop, "Module", "Module name and function to run e.g. \"someModule.main\". Internal texts and external python files can be used"); - RNA_def_struct_name_property(srna, prop); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "debug", PROP_BOOLEAN, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index 9301e8dd142..394a17903e2 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -342,13 +342,13 @@ static void rna_Curve_resolution_v_update_data(Main *bmain, Scene *scene, Pointe void rna_Curve_body_get(PointerRNA *ptr, char *value) { Curve *cu= (Curve*)ptr->id.data; - strcpy(value, cu->str); + BLI_strncpy(value, cu->str, cu->len+1); } int rna_Curve_body_length(PointerRNA *ptr) { Curve *cu= (Curve*)ptr->id.data; - return strlen(cu->str); + return cu->len; } /* TODO - check UTF & python play nice */ @@ -357,8 +357,7 @@ void rna_Curve_body_set(PointerRNA *ptr, const char *value) int len= strlen(value); Curve *cu= (Curve*)ptr->id.data; - cu->pos = len; - cu->len = len; + cu->len= cu->pos = len; if(cu->str) MEM_freeN(cu->str); if(cu->strinfo) MEM_freeN(cu->strinfo); @@ -805,8 +804,12 @@ static void rna_def_font(BlenderRNA *brna, StructRNA *srna) RNA_def_property_ui_text(prop, "Body Text", "contents of this text object"); RNA_def_property_string_funcs(prop, "rna_Curve_body_get", "rna_Curve_body_length", "rna_Curve_body_set"); RNA_def_property_string_maxlength(prop, 8192); /* note that originally str did not have a limit! */ - RNA_def_struct_name_property(srna, prop); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); + + prop= RNA_def_property(srna, "body_format", PROP_COLLECTION, PROP_NONE); + RNA_def_property_collection_sdna(prop, NULL, "strinfo", "len"); + RNA_def_property_struct_type(prop, "TextCharacterFormat"); + RNA_def_property_ui_text(prop, "Character Info", "Stores the style of each character"); /* pointers */ prop= RNA_def_property(srna, "text_on_curve", PROP_POINTER, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 8b285c42e11..4576a754f96 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -1433,7 +1433,6 @@ static void rna_def_object(BlenderRNA *brna) {OB_MBALL, "META", 0, "Meta", ""}, {OB_LAMP, "LAMP", 0, "Lamp", ""}, {OB_CAMERA, "CAMERA", 0, "Camera", ""}, - {OB_WAVE, "WAVE", 0, "Wave", ""}, {OB_LATTICE, "LATTICE", 0, "Lattice", ""}, {OB_ARMATURE, "ARMATURE", 0, "Armature", ""}, {0, NULL, 0, NULL, NULL}}; From e25393a0987b2756e77a17aef8555d68f4c0a53f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 17 Jul 2010 18:02:10 +0000 Subject: [PATCH 527/674] reverting commit r28693. Making backspace a 3rd delete key. We already have 2 keys for delete, no need to add a 3rd, better use backspace only when it makes sense or allow users to hook it up to something. --- source/blender/editors/animation/anim_channels_edit.c | 1 - source/blender/editors/animation/anim_markers.c | 1 - source/blender/editors/armature/armature_ops.c | 2 -- source/blender/editors/curve/curve_ops.c | 1 - source/blender/editors/mesh/mesh_ops.c | 1 - source/blender/editors/metaball/mball_ops.c | 1 - source/blender/editors/object/object_ops.c | 1 - source/blender/editors/physics/physics_ops.c | 1 - source/blender/editors/space_action/action_ops.c | 1 - source/blender/editors/space_file/space_file.c | 2 -- source/blender/editors/space_graph/graph_ops.c | 1 - source/blender/editors/space_nla/nla_ops.c | 4 +--- source/blender/editors/space_node/node_ops.c | 1 - source/blender/editors/space_sequencer/sequencer_ops.c | 1 - 14 files changed, 1 insertion(+), 18 deletions(-) diff --git a/source/blender/editors/animation/anim_channels_edit.c b/source/blender/editors/animation/anim_channels_edit.c index 21bdb591df9..a2a5ddaf363 100644 --- a/source/blender/editors/animation/anim_channels_edit.c +++ b/source/blender/editors/animation/anim_channels_edit.c @@ -2005,7 +2005,6 @@ void ED_keymap_animchannels(wmKeyConfig *keyconf) /* delete */ WM_keymap_add_item(keymap, "ANIM_OT_channels_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ANIM_OT_channels_delete", DELKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ANIM_OT_channels_delete", BACKSPACEKEY, KM_PRESS, 0, 0); /* settings */ WM_keymap_add_item(keymap, "ANIM_OT_channels_setting_toggle", WKEY, KM_PRESS, KM_SHIFT, 0); diff --git a/source/blender/editors/animation/anim_markers.c b/source/blender/editors/animation/anim_markers.c index 65c67691560..719b46738d3 100644 --- a/source/blender/editors/animation/anim_markers.c +++ b/source/blender/editors/animation/anim_markers.c @@ -1201,7 +1201,6 @@ void ED_marker_keymap(wmKeyConfig *keyconf) WM_keymap_verify_item(keymap, "MARKER_OT_select_all", AKEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "MARKER_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "MARKER_OT_delete", DELKEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "MARKER_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MARKER_OT_move", GKEY, KM_PRESS, 0, 0); #ifdef DURIAN_CAMERA_SWITCH diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c index 7abf8575921..63cef278104 100644 --- a/source/blender/editors/armature/armature_ops.c +++ b/source/blender/editors/armature/armature_ops.c @@ -192,7 +192,6 @@ void ED_keymap_armature(wmKeyConfig *keyconf) /* Armature -> Etch-A-Ton ------------------------ */ WM_keymap_add_item(keymap, "SKETCH_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SKETCH_OT_delete", DELKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "SKETCH_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SKETCH_OT_finish_stroke", RIGHTMOUSE, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SKETCH_OT_cancel_stroke", ESCKEY, KM_PRESS, 0, 0); // Already part of view3d select @@ -238,7 +237,6 @@ void ED_keymap_armature(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "ARMATURE_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_delete", DELKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ARMATURE_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_extrude_move", EKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_extrude_forked", EKEY, KM_PRESS, KM_SHIFT, 0); diff --git a/source/blender/editors/curve/curve_ops.c b/source/blender/editors/curve/curve_ops.c index 8f826d318b6..d650cecdc3e 100644 --- a/source/blender/editors/curve/curve_ops.c +++ b/source/blender/editors/curve/curve_ops.c @@ -214,7 +214,6 @@ void ED_keymap_curve(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "CURVE_OT_cyclic_toggle", CKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "CURVE_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "CURVE_OT_delete", DELKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "CURVE_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "CURVE_OT_tilt_clear", TKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "TRANSFORM_OT_tilt", TKEY, KM_PRESS, KM_CTRL, 0); diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index 1394331a191..e143e4859f5 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -299,7 +299,6 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "MESH_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MESH_OT_delete", DELKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "MESH_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MESH_OT_knife_cut", LEFTMOUSE, KM_PRESS, 0, KKEY); RNA_enum_set(WM_keymap_add_item(keymap, "MESH_OT_knife_cut", LEFTMOUSE, KM_PRESS, KM_SHIFT, KKEY)->ptr, "type", 2/*KNIFE_MIDPOINT*/); diff --git a/source/blender/editors/metaball/mball_ops.c b/source/blender/editors/metaball/mball_ops.c index e8d2237d8a2..14402d7dae6 100644 --- a/source/blender/editors/metaball/mball_ops.c +++ b/source/blender/editors/metaball/mball_ops.c @@ -64,7 +64,6 @@ void ED_keymap_metaball(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "MBALL_OT_delete_metaelems", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MBALL_OT_delete_metaelems", DELKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "MBALL_OT_delete_metaelems", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MBALL_OT_duplicate_metaelems", DKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "MBALL_OT_select_all", AKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index 804f4dd7704..e1ea7924916 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -331,7 +331,6 @@ void ED_keymap_object(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "OBJECT_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "OBJECT_OT_delete", DELKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "OBJECT_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_menu(keymap, "INFO_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "OBJECT_OT_duplicates_make_real", AKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0); diff --git a/source/blender/editors/physics/physics_ops.c b/source/blender/editors/physics/physics_ops.c index 28839693e2c..5a51c36cd09 100644 --- a/source/blender/editors/physics/physics_ops.c +++ b/source/blender/editors/physics/physics_ops.c @@ -100,7 +100,6 @@ static void keymap_particle(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "PARTICLE_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "PARTICLE_OT_delete", DELKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "PARTICLE_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "PARTICLE_OT_reveal", HKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "PARTICLE_OT_hide", HKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/space_action/action_ops.c b/source/blender/editors/space_action/action_ops.c index fa9968b2524..8ef37942fb3 100644 --- a/source/blender/editors/space_action/action_ops.c +++ b/source/blender/editors/space_action/action_ops.c @@ -145,7 +145,6 @@ static void action_keymap_keyframes (wmKeyConfig *keyconf, wmKeyMap *keymap) WM_keymap_add_item(keymap, "ACTION_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ACTION_OT_delete", DELKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ACTION_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ACTION_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "ACTION_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index 261b7058151..34571278f13 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -393,8 +393,6 @@ void file_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "FILE_OT_directory_new", IKEY, KM_PRESS, 0, 0); /* XXX needs button */ WM_keymap_add_item(keymap, "FILE_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "FILE_OT_delete", DELKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "FILE_OT_delete", BACKSPACEKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "FILE_OT_delete", BACKSPACEKEY, KM_PRESS, KM_OSKEY, 0); WM_keymap_verify_item(keymap, "FILE_OT_smoothscroll", TIMER1, KM_ANY, KM_ANY, 0); /* keys for main area */ diff --git a/source/blender/editors/space_graph/graph_ops.c b/source/blender/editors/space_graph/graph_ops.c index fa9acb282c7..282e9d2658b 100644 --- a/source/blender/editors/space_graph/graph_ops.c +++ b/source/blender/editors/space_graph/graph_ops.c @@ -347,7 +347,6 @@ static void graphedit_keymap_keyframes (wmKeyConfig *keyconf, wmKeyMap *keymap) WM_keymap_add_item(keymap, "GRAPH_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "GRAPH_OT_delete", DELKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "GRAPH_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "GRAPH_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); diff --git a/source/blender/editors/space_nla/nla_ops.c b/source/blender/editors/space_nla/nla_ops.c index dfb50ee33e5..f1974a8ec4f 100644 --- a/source/blender/editors/space_nla/nla_ops.c +++ b/source/blender/editors/space_nla/nla_ops.c @@ -177,7 +177,6 @@ static void nla_keymap_channels (wmKeyConfig *keyconf, wmKeyMap *keymap) /* delete tracks */ WM_keymap_add_item(keymap, "NLA_OT_delete_tracks", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "NLA_OT_delete_tracks", DELKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "NLA_OT_delete_tracks", BACKSPACEKEY, KM_PRESS, 0, 0); /* General Animation Channels keymap (see anim_channels.c) ----------------------- */ /* selection */ @@ -247,8 +246,7 @@ static void nla_keymap_main (wmKeyConfig *keyconf, wmKeyMap *keymap) /* delete */ WM_keymap_add_item(keymap, "NLA_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "NLA_OT_delete", DELKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "NLA_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); - + /* split */ WM_keymap_add_item(keymap, "NLA_OT_split", YKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/space_node/node_ops.c b/source/blender/editors/space_node/node_ops.c index 654fdc6800e..937a524367e 100644 --- a/source/blender/editors/space_node/node_ops.c +++ b/source/blender/editors/space_node/node_ops.c @@ -156,7 +156,6 @@ void node_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "NODE_OT_select_border", BKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "NODE_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "NODE_OT_delete", DELKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "NODE_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "NODE_OT_select_all", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "NODE_OT_select_linked_to", LKEY, KM_PRESS, KM_SHIFT, 0); diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c index 82f70eafc0a..65580d6f7bf 100644 --- a/source/blender/editors/space_sequencer/sequencer_ops.c +++ b/source/blender/editors/space_sequencer/sequencer_ops.c @@ -146,7 +146,6 @@ void sequencer_keymap(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "SEQUENCER_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_delete", DELKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "SEQUENCER_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0); From fd31436897f49ddf6e51a059add2e74361fbfdd8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 17 Jul 2010 18:08:14 +0000 Subject: [PATCH 528/674] spelling correction: alredy --> already --- .../ConstraintSolver/btConeTwistConstraint.cpp | 2 +- release/scripts/io/export_3ds.py | 2 +- release/scripts/io/export_fbx.py | 10 +++++----- release/scripts/io/export_obj.py | 6 +++--- release/scripts/modules/bpy/utils.py | 2 +- release/scripts/op/uvcalc_smart_project.py | 4 ++-- release/scripts/ui/space_userpref.py | 2 +- source/blender/blenkernel/intern/library.c | 2 +- source/blender/blenlib/intern/fileops.c | 2 +- source/blender/blenloader/intern/readfile.c | 4 ++-- source/blender/editors/mesh/editmesh_mods.c | 4 ++-- source/blender/editors/sculpt_paint/paint_image.c | 4 ++-- .../blender/editors/space_sequencer/sequencer_draw.c | 2 +- source/blender/editors/space_view3d/drawobject.c | 4 ++-- source/blender/editors/space_view3d/view3d_view.c | 2 +- .../blender/editors/transform/transform_conversions.c | 2 +- source/blender/imbuf/intern/imageprocess.c | 8 ++++---- source/blender/makesdna/intern/dna_genfile.c | 4 ++-- source/blender/makesrna/intern/rna_action.c | 2 +- source/blender/makesrna/rna_cleanup/rna_cleaner.py | 2 +- source/blender/modifiers/intern/MOD_screw.c | 2 +- source/blender/python/generic/bpy_internal_import.c | 2 +- source/blender/python/generic/geometry.c | 2 +- source/blender/python/generic/mathutils.c | 2 +- source/blender/python/generic/mathutils_vector.c | 4 ++-- source/blender/python/intern/bpy_rna.c | 2 +- source/blender/windowmanager/intern/wm_event_system.c | 2 +- source/gameengine/Expressions/PyObjectPlus.cpp | 2 +- source/gameengine/GameLogic/SCA_PythonController.cpp | 4 ++-- source/gameengine/Ketsji/KX_PythonSeq.cpp | 2 +- .../gameengine/Physics/Bullet/CcdPhysicsController.cpp | 2 +- 31 files changed, 48 insertions(+), 48 deletions(-) diff --git a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp index 50a79451f5d..07262b95b73 100644 --- a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp +++ b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp @@ -601,7 +601,7 @@ void btConeTwistConstraint::calcAngleInfo2() m_solveSwingLimit = false; // compute rotation of A wrt B (in constraint space) if (m_bMotorEnabled && (!m_useSolveConstraintObsolete)) - { // it is assumed that setMotorTarget() was alredy called + { // it is assumed that setMotorTarget() was already called // and motor target m_qTarget is within constraint limits // TODO : split rotation to pure swing and pure twist // compute desired transforms in world diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index 4fd889c75c6..6b776c77a7a 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -1006,7 +1006,7 @@ def save_3ds(filename, context): mat = mat_ls[mat_index] if mat: mat_name = mat.name else: mat_name = None - # else there alredy set to none + # else there already set to none img = uf.image # img = f.image diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index 4505b56b41c..40ef3ea9deb 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -83,7 +83,7 @@ def copy_images(dest_dir, textures): if Blender.sys.exists(image_path): # Make a name for the target path. dest_image_path = dest_dir + image_path.split('\\')[-1].split('/')[-1] - if not Blender.sys.exists(dest_image_path): # Image isnt alredy there + if not Blender.sys.exists(dest_image_path): # Image isnt already there print('\tCopying "%s" > "%s"' % (image_path, dest_image_path)) try: copy_file(image_path, dest_image_path) @@ -359,7 +359,7 @@ def write(filename, batch_objects = None, \ if BATCH_OWN_DIR: new_fbxpath = fbxpath + newname + os.sep - # path may alredy exist + # path may already exist # TODO - might exist but be a file. unlikely but should probably account for it. if bpy.utils.exists(new_fbxpath) == 0: @@ -391,7 +391,7 @@ def write(filename, batch_objects = None, \ # Call self with modified args - # Dont pass batch options since we alredy usedt them + # Dont pass batch options since we already usedt them write(filename, data.objects, context, False, @@ -2763,7 +2763,7 @@ Takes: {''') act_end = end else: # use existing name - if blenAction == blenActionDefault: # have we alredy got the name + if blenAction == blenActionDefault: # have we already got the name file.write('\n\tTake: "%s" {' % sane_name_mapping_take[blenAction.name]) else: file.write('\n\tTake: "%s" {' % sane_takename(blenAction)) @@ -2918,7 +2918,7 @@ Takes: {''') for val, frame in context_bone_anim_keys: if frame != context_bone_anim_keys[0][1]: # not the first file.write(',') - # frame is alredy one less then blenders frame + # frame is already one less then blenders frame file.write('\n\t\t\t\t\t\t\t%i,%.15f,L' % (fbx_time(frame), val )) if i==0: file.write('\n\t\t\t\t\t\tColor: 1,0,0') diff --git a/release/scripts/io/export_obj.py b/release/scripts/io/export_obj.py index 626b92c3591..6b47f6ddb54 100644 --- a/release/scripts/io/export_obj.py +++ b/release/scripts/io/export_obj.py @@ -193,7 +193,7 @@ def copy_images(dest_dir): # if bpy.sys.exists(image_path): # # Make a name for the target path. # dest_image_path = dest_dir + image_path.split('\\')[-1].split('/')[-1] -# if not bpy.utils.exists(dest_image_path): # Image isnt alredy there +# if not bpy.utils.exists(dest_image_path): # Image isnt already there # print('\tCopying "%s" > "%s"' % (image_path, dest_image_path)) # copy_file(image_path, dest_image_path) # copyCount+=1 @@ -299,7 +299,7 @@ def write(filepath, objects, scene, EXPORT_POLYGROUPS=False, EXPORT_CURVE_AS_NURBS=True): ''' - Basic write function. The context and options must be alredy set + Basic write function. The context and options must be already set This can be accessed externaly eg. write( 'c:\\test\\foobar.obj', Blender.Object.GetSelected() ) # Using default options. @@ -681,7 +681,7 @@ def write(filepath, objects, scene, # CHECK FOR CONTEXT SWITCH if key == contextMat: - pass # Context alredy switched, dont do anything + pass # Context already switched, dont do anything else: if key[0] == None and key[1] == None: # Write a null material, since we know the context has changed. diff --git a/release/scripts/modules/bpy/utils.py b/release/scripts/modules/bpy/utils.py index f0de31a95f5..404013fb79a 100644 --- a/release/scripts/modules/bpy/utils.py +++ b/release/scripts/modules/bpy/utils.py @@ -60,7 +60,7 @@ def modules_from_path(path, loaded_modules): :arg path: this path is scanned for scripts and packages. :type path: string - :arg loaded_modules: alredy loaded module names, files matching these names will be ignored. + :arg loaded_modules: already loaded module names, files matching these names will be ignored. :type loaded_modules: set :return: all loaded modules. :rtype: list diff --git a/release/scripts/op/uvcalc_smart_project.py b/release/scripts/op/uvcalc_smart_project.py index a7ef980e8c5..78cef26f78c 100644 --- a/release/scripts/op/uvcalc_smart_project.py +++ b/release/scripts/op/uvcalc_smart_project.py @@ -524,7 +524,7 @@ def mergeUvIslands(islandList): then move us 1 whole width accross, 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 alredy tested for it. + since we have already tested for it. It gives about 10% speedup with minimal errors. ''' @@ -1027,7 +1027,7 @@ def main(context, island_margin, projection_limit): bestAng = fvec.dot(projectVecs[0]) bestAngIdx = 0 - # Cycle through the remaining, first alredy done + # Cycle through the remaining, first already done while i-1: i-=1 diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 61f759a1d83..ac1b11282f3 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -1111,7 +1111,7 @@ class WM_OT_addon_expand(bpy.types.Operator): def execute(self, context): module_name = self.properties.module - # unlikely to fail, module should have alredy been imported + # unlikely to fail, module should have already been imported try: mod = __import__(module_name) except: diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index 0cc31cc1cfa..8b035ff1bba 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -1308,7 +1308,7 @@ void all_local(Library *lib, int untagged_only) /* The check on the second line (LIB_PRE_EXISTING) is done so its * possible to tag data you dont want to be made local, used for - * appending data, so any libdata alredy linked wont become local + * appending data, so any libdata already linked wont become local * (very nasty to discover all your links are lost after appending) * */ if(id->flag & (LIB_EXTERN|LIB_INDIRECT|LIB_NEW) && diff --git a/source/blender/blenlib/intern/fileops.c b/source/blender/blenlib/intern/fileops.c index 7a24d9b36b1..fde770c238c 100644 --- a/source/blender/blenlib/intern/fileops.c +++ b/source/blender/blenlib/intern/fileops.c @@ -80,7 +80,7 @@ char *BLI_last_slash(const char *string) { else return lfslash; } -/* adds a slash if there isnt one there alredy */ +/* adds a slash if there isnt one there already */ int BLI_add_slash(char *string) { int len = strlen(string); #ifdef WIN32 diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 536f133c91b..9005a3ebaa4 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -11338,7 +11338,7 @@ static void expand_doit(FileData *fd, Main *mainvar, void *old) else { /* The line below was commented by Ton (I assume), when Hos did the merge from the orange branch. rev 6568 * This line is NEEDED, the case is that you have 3 blend files... - * user.blend, lib.blend and lib_indirect.blend - if user.blend alredy references a "tree" from + * user.blend, lib.blend and lib_indirect.blend - if user.blend already references a "tree" from * lib_indirect.blend but lib.blend does too, linking in a Scene or Group from lib.blend can result in an * empty without the dupli group referenced. Once you save and reload the group would appier. - Campbell */ /* This crashes files, must look further into it */ @@ -12122,7 +12122,7 @@ static void give_base_to_objects(Main *mainvar, Scene *sce, Library *lib, int is /* IF below is quite confusing! if we are appending, but this object wasnt just added allong with a group, - then this is alredy used indirectly in the scene somewhere else and we didnt just append it. + 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 */ if (is_group_append==0 || (ob->id.flag & LIB_PRE_EXISTING)==0) { diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c index 5ac70d8f54c..9fb3f717122 100644 --- a/source/blender/editors/mesh/editmesh_mods.c +++ b/source/blender/editors/mesh/editmesh_mods.c @@ -931,7 +931,7 @@ static int similar_edge_select__internal(ToolSettings *ts, EditMesh *em, int mod /* cound how many faces each edge uses use tmp.l */ for(efa= em->faces.first; efa; efa= efa->next) { /* here we use the edges temp data to assign a face - if a face has alredy been assigned (eed->f2==1) + if a face has already been assigned (eed->f2==1) we calculate the angle between the current face and the edges previously found face. store the angle in eed->tmp.fp (loosing the face eed->tmp.f) @@ -1207,7 +1207,7 @@ static int similar_vert_select_exec(bContext *C, wmOperator *op) if (dvert && !(eve->f & SELECT) && !eve->h && dvert->totweight) { /* do the extra check for selection in the following if, so were not - checking verts that may be alredy selected */ + checking verts that may be already selected */ for (i=0; base_dvert->totweight >i && !(eve->f & SELECT); i++) { for (j=0; dvert->totweight >j; j++) { if (base_dvert->dw[i].def_nr==dvert->dw[j].def_nr) { diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index 45c0396855d..ef8c33007a2 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -1444,7 +1444,7 @@ static ProjPixel *project_paint_uvpixel_init( sub_v2_v2v2(co, projPixel->projCoSS, (float *)ps->cloneOffset); /* no need to initialize the bucket, we're only checking buckets faces and for this - * the faces are alredy initialized in project_paint_delayed_face_init(...) */ + * the faces are already initialized in project_paint_delayed_face_init(...) */ if (ibuf->rect_float) { if (!project_paint_PickColor(ps, co, ((ProjPixelClone *)projPixel)->clonepx.f, NULL, 1)) { ((ProjPixelClone *)projPixel)->clonepx.f[3] = 0; /* zero alpha - ignore */ @@ -1694,7 +1694,7 @@ static float Vec2Lenf_nosqrt_other(const float *v1, const float v2_1, const floa static int project_bucket_isect_circle(const int bucket_x, const int bucket_y, const float cent[2], const float radius_squared, rctf *bucket_bounds) { - /* Would normally to a simple intersection test, however we know the bounds of these 2 alredy intersect + /* Would normally to a simple intersection test, however we know the bounds of these 2 already intersect * so we only need to test if the center is inside the vertical or horizontal bounds on either axis, * this is even less work then an intersection test * diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index 4955450fc22..0d49f853a82 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -592,7 +592,7 @@ static void draw_shadedstrip(Sequence *seq, char *col, float x1, float y1, float } /* -Draw a sequence strip, bounds check alredy made +Draw a sequence strip, bounds check already made ARegion is currently only used to get the windows width in pixels so wave file sample drawing precision is zoom adjusted */ diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 532b4ce0771..f7c36103e5b 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -3835,7 +3835,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv sprintf(val_pos, (val_pos==val) ? "%.2f" : ":%.2f", pa_health); /* in path drawing state.co is the end point */ - /* use worldspace beause object matrix is alredy applied */ + /* use worldspace beause object matrix is already applied */ mul_v3_m4v3(vec_txt, ob->imat, state.co); view3d_cached_text_draw_add(vec_txt[0], vec_txt[1], vec_txt[2], val, 10, V3D_CACHE_TEXT_WORLDSPACE); } @@ -3929,7 +3929,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv val[0]= '\0'; sprintf(val, "%i", a); - /* use worldspace beause object matrix is alredy applied */ + /* use worldspace beause object matrix is already applied */ mul_v3_m4v3(vec_txt, ob->imat, cache[a]->co); view3d_cached_text_draw_add(vec_txt[0], vec_txt[1], vec_txt[2], val, 10, V3D_CACHE_TEXT_WORLDSPACE); } diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 585e3c03e58..29d9986c093 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -2222,7 +2222,7 @@ static void flyEvent(FlyInfo *fly, wmEvent *event) /* impliment WASD keys */ case FLY_MODAL_DIR_FORWARD: if (fly->speed < 0.0f) fly->speed= -fly->speed; /* flip speed rather then stopping, game like motion */ - else fly->speed += fly->grid; /* increse like mousewheel if were alredy moving in that difection*/ + else fly->speed += fly->grid; /* increse like mousewheel if were already moving in that difection*/ fly->axis= 2; break; case FLY_MODAL_DIR_BACKWARD: diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 555940c2f35..44a22da60e0 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -2283,7 +2283,7 @@ void flushTransNodes(TransInfo *t) #define XXX_DURIAN_ANIM_TX_HACK void flushTransSeq(TransInfo *t) { - ListBase *seqbasep= seq_give_editing(t->scene, FALSE)->seqbasep; /* Editing null check alredy done */ + ListBase *seqbasep= seq_give_editing(t->scene, FALSE)->seqbasep; /* Editing null check already done */ int a, new_frame; TransData *td= NULL; TransData2D *td2d= NULL; diff --git a/source/blender/imbuf/intern/imageprocess.c b/source/blender/imbuf/intern/imageprocess.c index 4450394e9e6..8fa76fa4502 100644 --- a/source/blender/imbuf/intern/imageprocess.c +++ b/source/blender/imbuf/intern/imageprocess.c @@ -129,7 +129,7 @@ void bicubic_interpolation_color(struct ImBuf *in, unsigned char *outI, float *o unsigned char *dataI; float a,b,w,wx,wy[4], outR,outG,outB,outA,*dataF; - /* ImBuf in must have a valid rect or rect_float, assume this is alredy checked */ + /* ImBuf in must have a valid rect or rect_float, assume this is already checked */ i= (int)floor(u); j= (int)floor(v); @@ -245,7 +245,7 @@ void bilinear_interpolation_color(struct ImBuf *in, unsigned char *outI, float * int y1, y2, x1, x2; - /* ImBuf in must have a valid rect or rect_float, assume this is alredy checked */ + /* ImBuf in must have a valid rect or rect_float, assume this is already checked */ x1= (int)floor(u); x2= (int)ceil(u); @@ -319,7 +319,7 @@ void bilinear_interpolation_color_wrap(struct ImBuf *in, unsigned char *outI, fl int y1, y2, x1, x2; - /* ImBuf in must have a valid rect or rect_float, assume this is alredy checked */ + /* ImBuf in must have a valid rect or rect_float, assume this is already checked */ x1= (int)floor(u); x2= (int)ceil(u); @@ -393,7 +393,7 @@ void neareast_interpolation_color(struct ImBuf *in, unsigned char *outI, float * unsigned char *dataI; int y1, x1; - /* ImBuf in must have a valid rect or rect_float, assume this is alredy checked */ + /* ImBuf in must have a valid rect or rect_float, assume this is already checked */ x1= (int)(u); y1= (int)(v); diff --git a/source/blender/makesdna/intern/dna_genfile.c b/source/blender/makesdna/intern/dna_genfile.c index 89219b114da..c7b86d1e502 100644 --- a/source/blender/makesdna/intern/dna_genfile.c +++ b/source/blender/makesdna/intern/dna_genfile.c @@ -41,9 +41,9 @@ #include "DNA_sdna_types.h" // for SDNA ;-) -/* gcc 4.1 on mingw was complaining that __int64 was alredy defined +/* gcc 4.1 on mingw was complaining that __int64 was already defined actually is saw the line below as typedef long long long long... -Anyhow, since its alredy defined, its safe to do an ifndef here- Cambpell*/ +Anyhow, since its already defined, its safe to do an ifndef here- Cambpell*/ #ifdef FREE_WINDOWS #ifndef __int64 typedef long long __int64; diff --git a/source/blender/makesrna/intern/rna_action.c b/source/blender/makesrna/intern/rna_action.c index 64adb16c9c7..db71fbd8c46 100644 --- a/source/blender/makesrna/intern/rna_action.c +++ b/source/blender/makesrna/intern/rna_action.c @@ -100,7 +100,7 @@ static FCurve *rna_Action_fcurve_new(bAction *act, ReportList *reports, char *da /* annoying, check if this exists */ if(verify_fcurve(act, group, data_path, index, 0)) { - BKE_reportf(reports, RPT_ERROR, "FCurve '%s[%d]' alredy exists in action '%s'", data_path, index, act->id.name+2); + BKE_reportf(reports, RPT_ERROR, "FCurve '%s[%d]' already exists in action '%s'", data_path, index, act->id.name+2); return NULL; } return verify_fcurve(act, group, data_path, index, 1); diff --git a/source/blender/makesrna/rna_cleanup/rna_cleaner.py b/source/blender/makesrna/rna_cleanup/rna_cleaner.py index dbc27c8e5d5..a0ce76d261d 100755 --- a/source/blender/makesrna/rna_cleanup/rna_cleaner.py +++ b/source/blender/makesrna/rna_cleanup/rna_cleaner.py @@ -238,7 +238,7 @@ def write_files(basename, props_list, props_length_max): # rna_api if props[0] == 'NOTE': indent = '# ' else: indent = ' ' - rna += indent + '("%s", "%s", "%s", "%s", %s),\n' % tuple(props[2:5] + props[6:]) # description is alredy string formatted + rna += indent + '("%s", "%s", "%s", "%s", %s),\n' % tuple(props[2:5] + props[6:]) # description is already string formatted # py blanks = [' '* (x[0]-x[1]) for x in zip(props_length_max,list(map(len,props)))] props = [('"%s"%s' if props[-1] != x[0] else "%s%s") % (x[0],x[1]) for x in zip(props,blanks)] diff --git a/source/blender/modifiers/intern/MOD_screw.c b/source/blender/modifiers/intern/MOD_screw.c index a1deaa140db..ab2f8925636 100644 --- a/source/blender/modifiers/intern/MOD_screw.c +++ b/source/blender/modifiers/intern/MOD_screw.c @@ -767,7 +767,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, mface_index++; /* new vertical edge */ - if (j) { /* The first set is alredy dome */ + if (j) { /* The first set is already dome */ med_new->v1= i1; med_new->v2= i2; med_new->flag= med_new_firstloop->flag; diff --git a/source/blender/python/generic/bpy_internal_import.c b/source/blender/python/generic/bpy_internal_import.c index 0b5129b79fa..2e45391247e 100644 --- a/source/blender/python/generic/bpy_internal_import.c +++ b/source/blender/python/generic/bpy_internal_import.c @@ -200,7 +200,7 @@ static PyObject *blender_import( PyObject * self, PyObject * args, PyObject * k &name, &globals, &locals, &fromlist, &dummy_val) ) return NULL; - /* import existing builtin modules or modules that have been imported alredy */ + /* import existing builtin modules or modules that have been imported already */ newmodule = PyImport_ImportModuleEx( name, globals, locals, fromlist ); if(newmodule) diff --git a/source/blender/python/generic/geometry.c b/source/blender/python/generic/geometry.c index 586c6a3406d..1e8436ed5ae 100644 --- a/source/blender/python/generic/geometry.c +++ b/source/blender/python/generic/geometry.c @@ -634,7 +634,7 @@ static int boxPack_FromPyObject(PyObject * value, boxPack **boxarray ) boxPack *box; - /* Error checking must alredy be done */ + /* Error checking must already be done */ if( !PyList_Check( value ) ) { PyErr_SetString( PyExc_TypeError, "can only back a list of [x,y,x,w]" ); return -1; diff --git a/source/blender/python/generic/mathutils.c b/source/blender/python/generic/mathutils.c index f0571f32f58..f953e7c6e4f 100644 --- a/source/blender/python/generic/mathutils.c +++ b/source/blender/python/generic/mathutils.c @@ -634,7 +634,7 @@ int Mathutils_RegisterCallback(Mathutils_Callback *cb) /* find the first free slot */ for(i= 0; mathutils_callbacks[i]; i++) { - if(mathutils_callbacks[i]==cb) /* alredy registered? */ + if(mathutils_callbacks[i]==cb) /* already registered? */ return i; } diff --git a/source/blender/python/generic/mathutils_vector.c b/source/blender/python/generic/mathutils_vector.c index a9bcdacdb03..eab03fc5911 100644 --- a/source/blender/python/generic/mathutils_vector.c +++ b/source/blender/python/generic/mathutils_vector.c @@ -1468,7 +1468,7 @@ static int Vector_setLength(VectorObject *self, PyObject * value ) self->vec[i]= self->vec[i] / (float)dot; } - BaseMath_WriteCallback(self); /* checked alredy */ + BaseMath_WriteCallback(self); /* checked already */ return 0; } @@ -2034,7 +2034,7 @@ static PyObject *Vector_Negate(VectorObject *self) for(i = 0; i < self->size; i++) self->vec[i] = -(self->vec[i]); - BaseMath_WriteCallback(self); // alredy checked for error + BaseMath_WriteCallback(self); // already checked for error Py_INCREF(self); return (PyObject*)self; diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index fbb806f6436..0a7fe81ed08 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -3970,7 +3970,7 @@ static PyObject* pyrna_srna_Subtype(StructRNA *srna) - myClass = type(name='myClass', bases=(myBase,), dict={'__module__':'bpy.types'}) */ - /* Assume RNA_struct_py_type_get(srna) was alredy checked */ + /* Assume RNA_struct_py_type_get(srna) was already checked */ PyObject *py_base= pyrna_srna_PyBase(srna); const char *idname= RNA_struct_identifier(srna); diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 3077b25cc73..d6aa8fa3255 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -801,7 +801,7 @@ int WM_operator_name_call(bContext *C, const char *opstring, int context, Pointe } /* Similar to WM_operator_name_call called with WM_OP_EXEC_DEFAULT context. - - wmOperatorType is used instead of operator name since python alredy has the operator type + - wmOperatorType is used instead of operator name since python already has the operator type - poll() must be called by python before this runs. - reports can be passed to this function (so python can report them as exceptions) */ diff --git a/source/gameengine/Expressions/PyObjectPlus.cpp b/source/gameengine/Expressions/PyObjectPlus.cpp index dbfa4a36ec6..e2642566a80 100644 --- a/source/gameengine/Expressions/PyObjectPlus.cpp +++ b/source/gameengine/Expressions/PyObjectPlus.cpp @@ -166,7 +166,7 @@ PyObject * PyObjectPlus::py_base_new(PyTypeObject *type, PyObject *args, PyObjec return NULL; } - /* use base_type rather then Py_TYPE(base) because we could alredy be subtyped */ + /* use base_type rather then Py_TYPE(base) because we could already be subtyped */ if(!PyType_IsSubtype(type, base_type)) { PyErr_Format(PyExc_TypeError, "can't subclass blender game type <%s> from <%s> because it is not a subclass", base_type->tp_name, type->tp_name); return NULL; diff --git a/source/gameengine/GameLogic/SCA_PythonController.cpp b/source/gameengine/GameLogic/SCA_PythonController.cpp index 45d3be01bbb..5914120d2c2 100644 --- a/source/gameengine/GameLogic/SCA_PythonController.cpp +++ b/source/gameengine/GameLogic/SCA_PythonController.cpp @@ -264,7 +264,7 @@ void SCA_PythonController::ErrorPrint(const char *error_msg) /* Added in 2.48a, the last_traceback can reference Objects for example, increasing * their user count. Not to mention holding references to wrapped data. * This is especially bad when the PyObject for the wrapped data is free'd, after blender - * has alredy dealocated the pointer */ + * has already dealocated the pointer */ PySys_SetObject( (char *)"last_traceback", NULL); PyErr_Clear(); /* just to be sure */ } @@ -452,7 +452,7 @@ void SCA_PythonController::Trigger(SCA_LogicManager* logicmgr) /* Added in 2.48a, the last_traceback can reference Objects for example, increasing * their user count. Not to mention holding references to wrapped data. * This is especially bad when the PyObject for the wrapped data is free'd, after blender - * has alredy dealocated the pointer */ + * has already dealocated the pointer */ PySys_SetObject( (char *)"last_traceback", NULL); PyErr_Clear(); /* just to be sure */ } diff --git a/source/gameengine/Ketsji/KX_PythonSeq.cpp b/source/gameengine/Ketsji/KX_PythonSeq.cpp index 8ffd58a781b..5c87fe2e757 100644 --- a/source/gameengine/Ketsji/KX_PythonSeq.cpp +++ b/source/gameengine/Ketsji/KX_PythonSeq.cpp @@ -351,7 +351,7 @@ static PyObject *KX_PythonSeq_getIter(KX_PythonSeq *self) return NULL; } - /* create a new iterator if were alredy using this one */ + /* create a new iterator if were already using this one */ if (self->iter == -1) { self->iter = 0; Py_INCREF(self); diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp index fe429200dd4..fd1a62d8997 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp @@ -507,7 +507,7 @@ bool CcdPhysicsController::DeleteControllerShape( ) bool CcdPhysicsController::ReplaceControllerShape(btCollisionShape *newShape) { - /* Note, deleting the previous collision shape must be done alredy */ + /* Note, deleting the previous collision shape must be done already */ /* if (m_collisionShape) DeleteControllerShape(); */ m_object->setCollisionShape(newShape); From 84b291462fe9023a09c8fd1a418df9ef03cc417d Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Sat, 17 Jul 2010 18:40:00 +0000 Subject: [PATCH 529/674] netrender - Temporary fix for linked libs repathing (didn't work correctly when using relative links). - autorefresh only for main page (on job page, it's really annoying because it keeps reseting results preview, so until that's fixed, off it is). --- release/scripts/io/netrender/master_html.py | 7 ++++--- release/scripts/io/netrender/repath.py | 9 ++++++--- release/scripts/io/netrender/slave.py | 2 ++ release/scripts/io/netrender/utils.py | 2 +- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/release/scripts/io/netrender/master_html.py b/release/scripts/io/netrender/master_html.py index c3695cd4f0f..74155f6bd66 100644 --- a/release/scripts/io/netrender/master_html.py +++ b/release/scripts/io/netrender/master_html.py @@ -27,9 +27,10 @@ def get(handler): def output(text): handler.wfile.write(bytes(text, encoding='utf8')) - def head(title): + def head(title, refresh = False): output("") - output("") + if refresh: + output("") output("") # output("") output("") @@ -104,7 +105,7 @@ def get(handler): f.close() elif handler.path == "/html" or handler.path == "/": handler.send_head(content = "text/html") - head("NetRender") + head("NetRender", refresh = True) output("<h2>Jobs</h2>") diff --git a/release/scripts/io/netrender/repath.py b/release/scripts/io/netrender/repath.py index 34af8e137ec..d9a13ade987 100755 --- a/release/scripts/io/netrender/repath.py +++ b/release/scripts/io/netrender/repath.py @@ -83,14 +83,17 @@ def process(paths): elif paths[i].endswith(".bobj.gz"): path_map[os.path.split(paths[i])[0]] = os.path.split(paths[i+1])[0] else: - path_map[paths[i]] = paths[i+1] + path_map[os.path.split(paths[i])[1]] = paths[i+1] + + # TODO original paths aren't really the orignal path (they are the normalized path + # so we repath using the filenames only. ########################### # LIBRARIES ########################### for lib in bpy.data.libraries: file_path = bpy.utils.expandpath(lib.filepath) - new_path = path_map.get(file_path, None) + new_path = path_map.get(os.path.split(file_path)[1], None) if new_path: lib.filepath = new_path @@ -100,7 +103,7 @@ def process(paths): for image in bpy.data.images: if image.source == "FILE" and not image.packed_file: file_path = bpy.utils.expandpath(image.filepath) - new_path = path_map.get(file_path, None) + new_path = path_map.get(os.path.split(file_path)[1], None) if new_path: image.filepath = new_path diff --git a/release/scripts/io/netrender/slave.py b/release/scripts/io/netrender/slave.py index 9fd00152dc1..fbaf2254504 100644 --- a/release/scripts/io/netrender/slave.py +++ b/release/scripts/io/netrender/slave.py @@ -79,6 +79,8 @@ def testFile(conn, job_id, slave_id, rfile, JOB_PREFIX, main_path = None): job_full_path = prefixPath(JOB_PREFIX, rfile.filepath, main_path, force = True) if not found: + # Force prefix path if not found + job_full_path = prefixPath(JOB_PREFIX, rfile.filepath, main_path, force = True) temp_path = JOB_PREFIX + "slave.temp" conn.request("GET", fileURL(job_id, rfile.index), headers={"slave-id":slave_id}) response = conn.getresponse() diff --git a/release/scripts/io/netrender/utils.py b/release/scripts/io/netrender/utils.py index 6288b9747c0..fa2eb6fb5f5 100644 --- a/release/scripts/io/netrender/utils.py +++ b/release/scripts/io/netrender/utils.py @@ -171,7 +171,7 @@ def prefixPath(prefix_directory, file_path, prefix_path, force = False): # if an absolute path, make sure path exists, if it doesn't, use relative local path full_path = file_path if force or not os.path.exists(full_path): - p, n = os.path.split(full_path) + p, n = os.path.split(os.path.normpath(full_path)) if prefix_path and p.startswith(prefix_path): if len(prefix_path) < len(p): From 2b408cab4eb955bcb17efbfa5813ae1b33267f13 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Sat, 17 Jul 2010 21:01:00 +0000 Subject: [PATCH 530/674] Fix for uninitialized results from hsv_to_rgb, when hue is out of range 0..1. --- source/blender/blenlib/intern/math_color.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/source/blender/blenlib/intern/math_color.c b/source/blender/blenlib/intern/math_color.c index 6637d74dbb1..396f2c52058 100644 --- a/source/blender/blenlib/intern/math_color.c +++ b/source/blender/blenlib/intern/math_color.c @@ -33,17 +33,14 @@ void hsv_to_rgb(float h, float s, float v, float *r, float *g, float *b) int i; float f, p, q, t; - h *= 360.0f; - if(s==0.0f) { *r = v; *g = v; *b = v; } else { - if(h== 360.0f) h = 0.0f; - - h /= 60.0f; + h= (h - floor(h))*6.0f; + i = (int)floor(h); f = h - i; p = v*(1.0f-s); From 40078f22b2af06ccf9b4e5c9d18d4865408e04d5 Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Sat, 17 Jul 2010 21:11:04 +0000 Subject: [PATCH 531/674] CMake on unix - install manpage into the correct location defined: http://www.pathname.com/fhs/2.2/fhs-4.11.html - dont copy pyc files from release/scripts --- source/creator/CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 812c001a2bb..3f62f4267a9 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -199,9 +199,13 @@ IF(WITH_INSTALL) FILES ${CMAKE_SOURCE_DIR}/release/freedesktop/icons/scalable/blender.svg DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps ) + INSTALL( + PROGRAMS ${CMAKE_SOURCE_DIR}/release/freedesktop/blender-thumbnailer.py + DESTINATION ${CMAKE_INSTALL_PREFIX}/bin + ) INSTALL( FILES ${CMAKE_SOURCE_DIR}/doc/blender.1 - DESTINATION ${CMAKE_INSTALL_PREFIX}/man + DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man/man1 ) INSTALL( DIRECTORY ${CMAKE_SOURCE_DIR}/release/text/ @@ -212,6 +216,7 @@ IF(WITH_INSTALL) DIRECTORY ${CMAKE_SOURCE_DIR}/release/scripts/ DESTINATION ${BLENDERPATH}/scripts PATTERN ".svn" EXCLUDE + PATTERN "*.pyc" EXCLUDE ) IF(WITH_INTERNATIONAL) INSTALL( From 7aebd561539140e2ae53b464536ba9aa43177795 Mon Sep 17 00:00:00 2001 From: Dalai Felinto <dfelinto@gmail.com> Date: Sun, 18 Jul 2010 01:51:14 +0000 Subject: [PATCH 532/674] fixing small ambiguity in the logic brick link code (not sure it booms in any compiler, but it doesn't hurt to make it right) --- source/blender/blenkernel/intern/sca.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/sca.c b/source/blender/blenkernel/intern/sca.c index 61e98ce9d45..f5ca7ee3cef 100644 --- a/source/blender/blenkernel/intern/sca.c +++ b/source/blender/blenkernel/intern/sca.c @@ -800,7 +800,7 @@ void link_logicbricks(void **poin, void ***ppoin, short *tot, short size) (*tot) ++; *ppoin = MEM_callocN((*tot)*size, "new link"); - for (ibrick=0; ibrick < *tot - 1; ibrick++) { + for (ibrick=0; ibrick < *(tot) - 1; ibrick++) { (*ppoin)[ibrick] = old_links[ibrick]; } (*ppoin)[ibrick] = *poin; From 93915f1120125deadedbdb0294a269d33e77f5ea Mon Sep 17 00:00:00 2001 From: Andrea Weikert <elubie@gmx.net> Date: Sun, 18 Jul 2010 08:07:38 +0000 Subject: [PATCH 533/674] fix for crash when terminating thumbnail threads --- source/blender/windowmanager/intern/wm_jobs.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_jobs.c b/source/blender/windowmanager/intern/wm_jobs.c index 80f1c680931..3ebfac4928c 100644 --- a/source/blender/windowmanager/intern/wm_jobs.c +++ b/source/blender/windowmanager/intern/wm_jobs.c @@ -355,9 +355,16 @@ void WM_jobs_kill(wmWindowManager *wm, void *owner, void *startjob) { wmJob *steve; - for(steve= wm->jobs.first; steve; steve= steve->next) - if(steve->owner==owner || steve->startjob==startjob) - wm_jobs_kill_job(wm, steve); + steve= wm->jobs.first; + while(steve) { + if(steve->owner==owner || steve->startjob==startjob) { + wmJob* bill = steve; + steve= steve->next; + wm_jobs_kill_job(wm, bill); + } else { + steve= steve->next; + } + } } From 82e7d6d33241e73e196f057e2b12c83f856ede98 Mon Sep 17 00:00:00 2001 From: Joerg Mueller <nexyon@gmail.com> Date: Sun, 18 Jul 2010 08:19:44 +0000 Subject: [PATCH 534/674] Merging revision 30461 from my GSoC branch, log: Fix for msvc which not has the round function. --- source/blender/editors/screen/screen_ops.c | 2 +- source/blender/windowmanager/intern/wm_event_system.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 50a5414b6ff..232206af6c6 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -2448,7 +2448,7 @@ static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event) else sync= (scene->flag & SCE_FRAME_DROP); if((scene->audio.flag & AUDIO_SYNC) && !(sad->flag & ANIMPLAY_FLAG_REVERSE) && finite(time = sound_sync_scene(scene))) - scene->r.cfra = round(time * FPS); + scene->r.cfra = time * FPS + 0.5; else { if(sync) { diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index d6aa8fa3255..63dcda3c12e 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1598,7 +1598,7 @@ void wm_event_do_handlers(bContext *C) } if(playing == 0) { - int ncfra = round(sound_sync_scene(scene) * FPS); + int ncfra = sound_sync_scene(scene) * FPS + 0.5; if(ncfra != scene->r.cfra) { scene->r.cfra = ncfra; ED_update_for_newframe(C, 1); From 0a34050e90e76ac5ee8c17987884190344c83d38 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Sun, 18 Jul 2010 10:58:41 +0000 Subject: [PATCH 535/674] 2.5: hide indirect light panel for raytrace, it does nothing. --- release/scripts/ui/properties_world.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/release/scripts/ui/properties_world.py b/release/scripts/ui/properties_world.py index e63d513a4b5..22acd49f897 100644 --- a/release/scripts/ui/properties_world.py +++ b/release/scripts/ui/properties_world.py @@ -205,6 +205,10 @@ class WORLD_PT_indirect_lighting(WorldButtonsPanel): bl_label = "Indirect Lighting" COMPAT_ENGINES = {'BLENDER_RENDER'} + def poll(self, context): + light = context.world.lighting + return light.gather_method == 'APPROXIMATE' + def draw_header(self, context): light = context.world.lighting self.layout.prop(light, "use_indirect_lighting", text="") From 0a2e485926b6bbeb866da107260030c7cbffa291 Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Sun, 18 Jul 2010 11:46:25 +0000 Subject: [PATCH 536/674] move the thumbnailer to bin/ --- {release/freedesktop => bin}/blender-thumbnailer.py | 0 source/creator/CMakeLists.txt | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename {release/freedesktop => bin}/blender-thumbnailer.py (100%) diff --git a/release/freedesktop/blender-thumbnailer.py b/bin/blender-thumbnailer.py similarity index 100% rename from release/freedesktop/blender-thumbnailer.py rename to bin/blender-thumbnailer.py diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 3f62f4267a9..12bb371de63 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -200,7 +200,7 @@ IF(WITH_INSTALL) DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps ) INSTALL( - PROGRAMS ${CMAKE_SOURCE_DIR}/release/freedesktop/blender-thumbnailer.py + PROGRAMS ${CMAKE_SOURCE_DIR}/bin/blender-thumbnailer.py DESTINATION ${CMAKE_INSTALL_PREFIX}/bin ) INSTALL( From 5f1246f62af853f07d8c5c3179491e76815d555c Mon Sep 17 00:00:00 2001 From: Andrea Weikert <elubie@gmx.net> Date: Sun, 18 Jul 2010 14:46:52 +0000 Subject: [PATCH 537/674] Small feature for the Durian guys: Playback Jog Keys: ALT+LEFTARROW: play backward (hit again for double speed) ALT+RIGHTARROW: play fordward (hit again for double speed) ALT+DOWNARROW: start/stop animation --- source/blender/editors/include/ED_screen.h | 4 +- .../blender/editors/include/ED_screen_types.h | 1 + .../blender/editors/render/render_internal.c | 2 +- source/blender/editors/screen/screen_edit.c | 8 +-- source/blender/editors/screen/screen_ops.c | 54 ++++++++++++++----- .../editors/space_sequencer/sequencer_ops.c | 8 ++- source/blender/makesdna/DNA_screen_types.h | 2 +- .../blender/makesrna/intern/rna_sequencer.c | 2 +- .../windowmanager/intern/wm_event_system.c | 2 +- 9 files changed, 59 insertions(+), 24 deletions(-) diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index 3478447b058..f313eeaf914 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -98,7 +98,7 @@ void ED_screen_set_scene(struct bContext *C, struct Scene *scene); void ED_screen_delete_scene(struct bContext *C, struct Scene *scene); void ED_screen_set_subwinactive(struct wmWindow *win, struct wmEvent *event); void ED_screen_exit(struct bContext *C, struct wmWindow *window, struct bScreen *screen); -void ED_screen_animation_timer(struct bContext *C, int redraws, int refresh, int sync, int enable); +void ED_screen_animation_timer(struct bContext *C, int redraws, int refresh, int sync, int enable, double speed); void ED_screen_animation_timer_update(struct bScreen *screen, int redraws, int refresh); int ED_screen_full_newspace(struct bContext *C, ScrArea *sa, int type); void ED_screen_full_prevspace(struct bContext *C, ScrArea *sa); @@ -110,7 +110,7 @@ void ED_screen_new_window(struct bContext *C, struct rcti *position, int type); /* anim */ void ED_update_for_newframe(const struct bContext *C, int mute); void ED_refresh_viewport_fps(struct bContext *C); -int ED_screen_animation_play(struct bContext *C, int sync, int mode); +int ED_screen_animation_play(struct bContext *C, int sync, int mode, int toggle); /* screen keymaps */ void ED_operatortypes_screen(void); diff --git a/source/blender/editors/include/ED_screen_types.h b/source/blender/editors/include/ED_screen_types.h index c55dafa6f51..f6767aaa07f 100644 --- a/source/blender/editors/include/ED_screen_types.h +++ b/source/blender/editors/include/ED_screen_types.h @@ -38,6 +38,7 @@ typedef struct ScreenAnimData { short refresh; short flag; /* flags for playback */ int sfra; /* frame that playback was started from */ + double speed_mul; /* speed multiplier */ } ScreenAnimData; /* for animplayer */ diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c index 7110c3aa7a7..3d9ba4e5921 100644 --- a/source/blender/editors/render/render_internal.c +++ b/source/blender/editors/render/render_internal.c @@ -628,7 +628,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event) /* cancel animation playback */ if (screen->animtimer) - ED_screen_animation_play(C, 0, 0); + ED_screen_animation_play(C, 0, 0, 1); /* handle UI stuff */ WM_cursor_wait(1); diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 1bd1fef4673..3e56e601788 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -25,6 +25,8 @@ */ #include <string.h> +#include <math.h> + #include "MEM_guardedalloc.h" @@ -1651,7 +1653,7 @@ void ED_refresh_viewport_fps(bContext *C) /* redraws: uses defines from stime->redraws * enable: 1 - forward on, -1 - backwards on, 0 - off */ -void ED_screen_animation_timer(bContext *C, int redraws, int refresh, int sync, int enable) +void ED_screen_animation_timer(bContext *C, int redraws, int refresh, int sync, int enable, double speed) { bScreen *screen= CTX_wm_screen(C); wmWindowManager *wm= CTX_wm_manager(C); @@ -1664,12 +1666,12 @@ void ED_screen_animation_timer(bContext *C, int redraws, int refresh, int sync, if(enable) { ScreenAnimData *sad= MEM_callocN(sizeof(ScreenAnimData), "ScreenAnimData"); - - screen->animtimer= WM_event_add_timer(wm, win, TIMER0, (1.0/FPS)); + screen->animtimer= WM_event_add_timer(wm, win, TIMER0, (1.0/(FPS*speed))); sad->ar= CTX_wm_region(C); sad->sfra = scene->r.cfra; sad->redraws= redraws; sad->refresh= refresh; + sad->speed_mul= speed; sad->flag |= (enable < 0)? ANIMPLAY_FLAG_REVERSE: 0; sad->flag |= (sync == 0)? ANIMPLAY_FLAG_NO_SYNC: (sync == 1)? ANIMPLAY_FLAG_SYNC: 0; screen->animtimer->customdata= sad; diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 232206af6c6..da2b520ed94 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -2441,31 +2441,32 @@ static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event) ScrArea *sa; int sync; float time; - + /* sync, don't sync, or follow scene setting */ if(sad->flag & ANIMPLAY_FLAG_SYNC) sync= 1; 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))) - scene->r.cfra = time * FPS + 0.5; + scene->r.cfra = time * (int)(FPS + 0.5) * sad->speed_mul; else { if(sync) { - int step = floor(wt->duration * FPS); + int step = floor(wt->duration * sad->speed_mul * FPS); /* skip frames */ if(sad->flag & ANIMPLAY_FLAG_REVERSE) scene->r.cfra -= step; else scene->r.cfra += step; - wt->duration -= ((float)step)/FPS; + wt->duration -= ((float)step)/(FPS*sad->speed_mul); } else { /* one frame +/- */ + int step = sad->speed_mul; if(sad->flag & ANIMPLAY_FLAG_REVERSE) - scene->r.cfra--; + scene->r.cfra-=step; else - scene->r.cfra++; + scene->r.cfra+=step; } } @@ -2533,7 +2534,7 @@ static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event) * since the frames-per-second value may have been changed */ // TODO: this may make evaluation a bit slower if the value doesn't change... any way to avoid this? - wt->timestep= (1.0/FPS); + wt->timestep= (1.0/(FPS*sad->speed_mul)); return OPERATOR_FINISHED; } @@ -2557,19 +2558,30 @@ static void SCREEN_OT_animation_step(wmOperatorType *ot) /* ****************** anim player, starts or ends timer ***************** */ /* toggle operator */ -int ED_screen_animation_play(bContext *C, int sync, int mode) +int ED_screen_animation_play(bContext *C, int sync, int mode, int toggle) { bScreen *screen= CTX_wm_screen(C); struct Scene* scene = CTX_data_scene(C); - if(screen->animtimer) { + if(screen->animtimer && toggle) { + ScreenAnimData *sad= (ScreenAnimData *)screen->animtimer->customdata; + /* stop playback now */ - ED_screen_animation_timer(C, 0, 0, 0, 0); + ED_screen_animation_timer(C, 0, 0, 0, 0, 0.0); sound_stop_scene(scene); } else { ScrArea *sa= CTX_wm_area(C); int refresh= SPACE_TIME; + double speed = 1.0; + if (screen->animtimer) { + ScreenAnimData *sad = (ScreenAnimData*)screen->animtimer->customdata; + int oldmode = sad->flag & ANIMPLAY_FLAG_REVERSE ? -1 : 1; + speed = (screen->animtimer && (oldmode == mode)) ? 2.0 : 1.0; + } else if (toggle) { + mode = screen->animmode; + } + screen->animmode = mode; if(mode == 1) // XXX only play audio forwards!? sound_play_scene(scene); @@ -2578,7 +2590,7 @@ int ED_screen_animation_play(bContext *C, int sync, int mode) if ((sa) && (sa->spacetype == SPACE_TIME)) { SpaceTime *stime= (SpaceTime *)sa->spacedata.first; - ED_screen_animation_timer(C, stime->redraws, refresh, sync, mode); + ED_screen_animation_timer(C, stime->redraws, refresh, sync, mode, speed); /* update region if TIME_REGION was set, to leftmost 3d window */ ED_screen_animation_timer_update(screen, stime->redraws, refresh); @@ -2591,7 +2603,7 @@ int ED_screen_animation_play(bContext *C, int sync, int mode) redraws |= TIME_SEQ; } - ED_screen_animation_timer(C, redraws, refresh, sync, mode); + ED_screen_animation_timer(C, redraws, refresh, sync, mode, speed); if(screen->animtimer) { wmTimer *wt= screen->animtimer; @@ -2608,12 +2620,13 @@ int ED_screen_animation_play(bContext *C, int sync, int mode) static int screen_animation_play_exec(bContext *C, wmOperator *op) { int mode= (RNA_boolean_get(op->ptr, "reverse")) ? -1 : 1; + int toggle= RNA_boolean_get(op->ptr, "toggle"); int sync= -1; if(RNA_property_is_set(op->ptr, "sync")) sync= (RNA_boolean_get(op->ptr, "sync")); - return ED_screen_animation_play(C, sync, mode); + return ED_screen_animation_play(C, sync, mode, toggle); } static void SCREEN_OT_animation_play(wmOperatorType *ot) @@ -2630,6 +2643,7 @@ static void SCREEN_OT_animation_play(wmOperatorType *ot) RNA_def_boolean(ot->srna, "reverse", 0, "Play in Reverse", "Animation is played backwards"); RNA_def_boolean(ot->srna, "sync", 0, "Sync", "Drop frames to maintain framerate"); + RNA_def_boolean(ot->srna, "toggle", 1, "Toggle Playback", "Toggle animation off or double speed on hitting play again"); } static int screen_animation_cancel_exec(bContext *C, wmOperator *op) @@ -2647,7 +2661,7 @@ static int screen_animation_cancel_exec(bContext *C, wmOperator *op) WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); /* call the other "toggling" operator to clean up now */ - ED_screen_animation_play(C, 0, 0); + ED_screen_animation_play(C, 0, 0, 1); } return OPERATOR_PASS_THROUGH; @@ -2999,6 +3013,7 @@ static void keymap_modal_set(wmKeyConfig *keyconf) void ED_keymap_screen(wmKeyConfig *keyconf) { wmKeyMap *keymap; + wmKeyMapItem *kmi; /* Screen Editing ------------------------------------------------ */ keymap= WM_keymap_find(keyconf, "Screen Editing", 0, 0); @@ -3098,6 +3113,17 @@ void ED_keymap_screen(wmKeyConfig *keyconf) RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", AKEY, KM_PRESS, KM_ALT|KM_SHIFT, 0)->ptr, "reverse", 1); WM_keymap_add_item(keymap, "SCREEN_OT_animation_cancel", ESCKEY, KM_PRESS, 0, 0); + /* Alternative keys for animation and sequencer playing */ + keymap= WM_keymap_find(keyconf, "Frames", 0, 0); + kmi = WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", RIGHTARROWKEY, KM_PRESS, KM_ALT, 0); + RNA_boolean_set(kmi->ptr, "toggle", 0); + + kmi = WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", LEFTARROWKEY, KM_PRESS, KM_ALT, 0); + RNA_boolean_set(kmi->ptr, "reverse", 1); + RNA_boolean_set(kmi->ptr, "toggle", 0); + + WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", DOWNARROWKEY, KM_PRESS, KM_ALT, 0); + keymap_modal_set(keyconf); } diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c index 65580d6f7bf..fb26e69f7db 100644 --- a/source/blender/editors/space_sequencer/sequencer_ops.c +++ b/source/blender/editors/space_sequencer/sequencer_ops.c @@ -242,12 +242,18 @@ void sequencer_keymap(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "SEQUENCER_OT_view_ghost_border", OKEY, KM_PRESS, 0, 0); /* would prefer to use numpad keys for job */ + RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD1, KM_PRESS, 0, 0)->ptr, "ratio", 1.0f); + + /* Setting zoom levels is not that useful, except for back to zoom level 1, removing keymap because of conflicts for now */ +#if 0 RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD8, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 8.0f); RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD4, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 4.0f); RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD2, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 2.0f); - RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD1, KM_PRESS, 0, 0)->ptr, "ratio", 1.0f); + RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD2, KM_PRESS, 0, 0)->ptr, "ratio", 0.5f); RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD4, KM_PRESS, 0, 0)->ptr, "ratio", 0.25f); RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD8, KM_PRESS, 0, 0)->ptr, "ratio", 0.125f); +#endif + } diff --git a/source/blender/makesdna/DNA_screen_types.h b/source/blender/makesdna/DNA_screen_types.h index a811fd9c014..e02a95d2119 100644 --- a/source/blender/makesdna/DNA_screen_types.h +++ b/source/blender/makesdna/DNA_screen_types.h @@ -66,7 +66,7 @@ typedef struct bScreen { short mainwin; /* screensize subwindow, for screenedges and global menus */ short subwinactive; /* active subwindow */ - int pad2; + int animmode; /* store current direction of animation(1=forward, -1=backward) */ struct wmTimer *animtimer; /* if set, screen has timer handler added in window */ void *context; /* context callback */ diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index 7adf4e7d35d..4becd3b065e 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -1203,7 +1203,7 @@ static void rna_def_sound(BlenderRNA *brna) RNA_def_property_ui_text(prop, "File", ""); RNA_def_property_string_funcs(prop, "rna_Sequence_filepath_get", "rna_Sequence_filepath_length", "rna_Sequence_filepath_set"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_filepath_update"); rna_def_input(srna); } diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 63dcda3c12e..dfb802f26b4 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1594,7 +1594,7 @@ void wm_event_do_handlers(bContext *C) CTX_data_scene_set(C, scene); if(((playing == 1) && (!win->screen->animtimer)) || ((playing == 0) && (win->screen->animtimer))){ - ED_screen_animation_play(C, -1, 1); + ED_screen_animation_play(C, -1, 1, 1); } if(playing == 0) { From beb4bec453b1b6fcfc576c0595db1c0783394c25 Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Sun, 18 Jul 2010 14:58:32 +0000 Subject: [PATCH 538/674] patch for displaying a node icon in the material panel if the material has nodes (from venomgfx) --- release/scripts/ui/properties_material.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/release/scripts/ui/properties_material.py b/release/scripts/ui/properties_material.py index 1526bd004a0..b15b77e8c2f 100644 --- a/release/scripts/ui/properties_material.py +++ b/release/scripts/ui/properties_material.py @@ -118,6 +118,8 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel): if ob: split.template_ID(ob, "active_material", new="material.new") row = split.row() + if mat.use_nodes: + row.label(icon="NODETREE") if slot: row.prop(slot, "link", text="") else: From 62ffc2ab1495ff54bd192e0e6d5696f07d87c5f4 Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Sun, 18 Jul 2010 15:13:19 +0000 Subject: [PATCH 539/674] update from venomgfx, have the node toggle rather then an icon. --- release/scripts/ui/properties_material.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release/scripts/ui/properties_material.py b/release/scripts/ui/properties_material.py index b15b77e8c2f..57488a57b89 100644 --- a/release/scripts/ui/properties_material.py +++ b/release/scripts/ui/properties_material.py @@ -118,8 +118,8 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel): if ob: split.template_ID(ob, "active_material", new="material.new") row = split.row() - if mat.use_nodes: - row.label(icon="NODETREE") + row.prop(mat, "use_nodes", icon="NODETREE", text="") + if slot: row.prop(slot, "link", text="") else: From bdc305b55bb38b9111bf44581d4ef356aa6dd4cb Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Sun, 18 Jul 2010 15:19:50 +0000 Subject: [PATCH 540/674] stupid mistake, was overwriting all strip saturation on load. --- source/blender/blenloader/intern/readfile.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 9005a3ebaa4..fce87302d30 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10965,7 +10965,9 @@ static void do_versions(FileData *fd, Library *lib, Main *main) if(scene) { Sequence *seq; SEQ_BEGIN(scene->ed, seq) { - seq->sat= 1.0f; + if(seq->sat==0.0f) { + seq->sat= 1.0f; + } } SEQ_END } From 87ff29f9321fbb78f54b7655c552db43bf4f3249 Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Mon, 19 Jul 2010 06:56:08 +0000 Subject: [PATCH 541/674] * new factory defaults include Eclectiel's sculpt icons and new default brush settings for the new GSoC sculpt tools --- .../blender/editors/datafiles/startup.blend.c | 33917 +++++++++++++--- 1 file changed, 28298 insertions(+), 5619 deletions(-) diff --git a/source/blender/editors/datafiles/startup.blend.c b/source/blender/editors/datafiles/startup.blend.c index f34cf16430b..219549fe91d 100644 --- a/source/blender/editors/datafiles/startup.blend.c +++ b/source/blender/editors/datafiles/startup.blend.c @@ -1,745 +1,2640 @@ /* DataToC output of file <startup_blend> */ -int datatoc_startup_blend_size= 240980; +int datatoc_startup_blend_size= 966716; char datatoc_startup_blend[]= { - 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 53, 50, 82, 69, 78, 68, 32, 0, 0, 0, -144,181, 39,248,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 76, 79, 66, 24, 1, 0, 0,144,180, 39,248,255,127, 0, 0, -201, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 53, 5, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1,200,187, 85, 3, 0, 0, 0, 0, -120,159, 89, 3, 0, 0, 0, 0, 0, 16, 0, 0,128, 32, 4, 0, 47,104,111,109,101, 47, 98,114,101, 99,104,116, 47, 46, 98,108, -101,110,100,101,114, 47, 50, 46, 53, 50, 47, 99,111,110,102,105,103, 47,115,116, 97,114,116,117,112, 46, 98,108,101,110,100, 0, - 61,117,232, 0, 0, 0, 0, 0, 40, 0, 0, 0, 48, 0, 0, 0,208,181, 39,248, 32, 0, 0, 0,144,181, 39,248,255,127, 0, 0, - 40,102,128, 4, 0, 0, 0, 0, 64,181, 39,248,255,127, 0, 0,104, 14,145, 4, 0, 0, 0, 0,112,181, 39,248,255,127, 0, 0, -133,119,232, 0, 0, 0, 0, 0,252, 0, 0, 0, 0, 0, 0, 0,144,181, 39,248,255,127, 0, 0, 32, 0, 0, 0, 82, 69, 78, 68, - 40,102,128, 4, 0, 0, 0, 0, 82, 69, 78, 68, 32, 0, 0, 0,144,181, 39,248,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -152,212, 83, 3, 0, 0, 0, 0,192,181, 39,248,255,127, 0, 0, 67,126,232, 0, 0, 0, 0, 0,104,209, 83, 3, 0, 0, 0, 0, - 40,102,128, 4, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 87, 77, 0, 0, 24, 1, 0, 0,152,212, 83, 3, 0, 0, 0, 0,111, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 87,105,110, 77, 97,110, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248,213, 83, 3, 0, 0, 0, 0,248,213, 83, 3, 0, 0, 0, 0,248,213, 83, 3, 0, 0, 0, 0,248,213, 83, 3, 0, 0, 0, 0, - 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 76, 69, 78, 68, 69, 82, 95,118, 50, 53, 50, 82, 69, 78, 68, 32, 0, 0, 0,248,227,141, 2, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 83, 84, 8, 0, 1, 0,176,239, 89, 3, 0, 0, 0, 0, 1, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 45, 45, 45, 63, 35, 35, 40, 64, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,100,102,122,255, 78, 80, 95,191, 35, 35, 40, 64, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 45, 45, 45, 63, +109,109,109,191,142,142,142,255,142,142,142,255,100,102,122,255,100,102,122,255,100,102,122,255, 56, 57, 67,127, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, + 56, 57, 67,127, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 45, 45, 45, 63,109,109,109,191,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255, 78, 80, 95,191, 35, 35, 40, 64, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255, 78, 80, 95,191, 35, 35, 40, 64, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 45, 45, 45, 63,109,109,109,191,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 78, 80, 95,191, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 56, 57, 67,127, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 45, 45, 45, 63,109,109,109,191, +142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255, 35, 35, 40, 64, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0,109,109,109,191,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,132,132,137,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255, 78, 80, 95,191, 35, 35, 40, 64, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 45, 45, 45, 63,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 78, 80, 95,191, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 45, 45, 45, 63,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,145,145,149,255,138,139,151,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,145,145,149,255, +152,152,163,255,156,156,170,255,156,156,170,255,156,156,170,255,142,142,158,255,114,115,134,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,145,145,149,255,152,152,163,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,142,142,158,255,128,129,146,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 45, 45, 45, 63,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,142,142,142,255,142,142,142,255,145,145,149,255,152,152,163,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,128,129,146,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, +142,142,142,255,145,145,149,255,152,152,163,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,142,142,158,255,114,115,134,255,100,102,122,255,100,102,122,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,145,145,149,255, +152,152,163,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,128,129,146,255,100,102,122,255, +100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,145,145,149,255,152,152,163,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +128,129,146,255,114,115,134,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,145,145,149,255,152,152,163,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,142,142,158,255,114,115,134,255,100,102,122,255,100,102,122,255, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 80, 80, 84,127,152,152,163,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, 93, 94,107,192, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 49, 49, 52, 64, 85, 85, 92,128,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255, 85, 85, 92,128, 49, 49, 53, 64, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 49, 49, 52, 64, 85, 85, 92,128,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +121,121,131,192, 49, 49, 53, 64, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 49, 49, 52, 64, 85, 85, 92,128,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, 85, 85, 92,128, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 49, 49, 52, 64, 85, 85, 92,128,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +156,156,170,255,156,156,170,255,156,156,170,255, 85, 85, 92,128, 49, 49, 53, 64, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 49, 49, 52, 64, 85, 85, 92,128, +156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, +121,121,131,192, 85, 85, 92,128, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 49, 49, 52, 64, 85, 85, 92,128,156,156,170,255,156,156,170,255,156,156,170,255, 85, 85, 92,128, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 49, 49, 53, 64, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, + 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, + 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, + 71, 76, 79, 66, 16, 1, 0, 0, 24,227,141, 2,201, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 53, 5, 0, 0, 0,250, 0, 0, 0, + 1, 0, 0, 1, 24, 81, 92, 7,208,195, 93, 7, 0, 16, 0, 0,128, 32, 4, 0, 67, 58, 92, 68,111, 99,117,109,101,110,116,115, + 32, 97,110,100, 32, 83,101,116,116,105,110,103,115, 92, 80,104,111,101,110,105,120, 92, 77,121, 32, 68,111, 99,117,109,101,110, +116,115, 92, 68,111,119,110,108,111, 97,100,115, 92,115,116, 97,114,116,117,112, 46, 98,108,101,110,100, 0,204,204,204,204,204, +204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, +204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, +204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, +204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, +204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, +204,204,204,204, 87, 77, 0, 0,168, 0, 0, 0,160,168,129, 3,111, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 87,105,110, 77, 97,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,169,129, 3,176,169,129, 3,176,169,129, 3,176,169,129, 3, 3, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240,238, 81, 3,240,238, 81, 3,240,238, 81, 3, 48,154, 76, 3, 48,154, 76, 3, 48,154, 76, 3, + 68, 65, 84, 65,148, 0, 0, 0,176,169,129, 3,112, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188, 81, 3, + 1, 0, 0, 0, 0, 0, 0, 0, 24, 81, 92, 7, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,136, 6,202, 3, 0, 0, 0, 0, 1, 0,238, 3, + 0, 0, 1, 0, 0, 0, 0, 0, 16,190, 81, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 32, 9,100, 3, +144,162, 89, 3, 32,120, 0, 3,232,154, 76, 3,152,155, 76, 3, 72,156, 76, 3, 72,156, 76, 3,248,156, 76, 3,200,200, 76, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,168,170,129, 3,195, 0, 0, 0, 1, 0, 0, 0,136,248,129, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,223,101, 3,160,178,129, 3, 24,179,129, 3, 24,193,129, 3, +152,193,129, 3, 88,239,129, 3, 0, 0, 0, 0, 0, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88,173, 70, 3, 0, 0, 0, 0, 88,173, 70, 3, 0, 0, 0, 0, 88,173, 70, 3, 0, 0, 0, 0, 88,225, 90, 3, 0, 0, 0, 0, - 88,225, 90, 3, 0, 0, 0, 0, 88,225, 90, 3, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,248,213, 83, 3, 0, 0, 0, 0, -112, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,174, 70, 3, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,200,187, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 30, 0,118, 7, 97, 4, - 0, 0, 0, 0, 1, 0,238, 3, 0, 0, 1, 0, 0, 0, 0, 0,248, 1, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,136, 21, 55, 3, 0, 0, 0, 0,104,177,126, 4, 0, 0, 0, 0, -104,177,126, 4, 0, 0, 0, 0, 88, 3, 94, 3, 0, 0, 0, 0,232, 4, 94, 3, 0, 0, 0, 0,120, 6, 94, 3, 0, 0, 0, 0, -120, 6, 94, 3, 0, 0, 0, 0, 72, 7, 94, 3, 0, 0, 0, 0,120, 76, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 40,215, 83, 3, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -200,234, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 72,216, 83, 3, 0, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0, 40,224, 83, 3, 0, 0, 0, 0, -104,236, 83, 3, 0, 0, 0, 0,216,236, 83, 3, 0, 0, 0, 0, 72,215, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,216, 83, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,184,216, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,216, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 40,217, 83, 3, 0, 0, 0, 0, 72,216, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 40,217, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,217, 83, 3, 0, 0, 0, 0, -184,216, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -152,217, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0, 40,217, 83, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0,152,217, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -232,218, 83, 3, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,232,218, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0, -120,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 88,219, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0,232,218, 83, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -168,220, 83, 3, 0, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 52, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, - 56,220, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 24,221, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -104,222, 83, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,216,222, 83, 3, 0, 0, 0, 0, -248,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -216,222, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0,216,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 48, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 40,224, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152,224, 83, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184,216, 83, 3, 0, 0, 0, 0, 40,217, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,152,224, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 8,225, 83, 3, 0, 0, 0, 0, - 40,224, 83, 3, 0, 0, 0, 0,184,216, 83, 3, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 8,225, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120,225, 83, 3, 0, 0, 0, 0, -152,224, 83, 3, 0, 0, 0, 0, 40,217, 83, 3, 0, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,120,225, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,232,225, 83, 3, 0, 0, 0, 0, - 8,225, 83, 3, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,232,225, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88,226, 83, 3, 0, 0, 0, 0, -120,225, 83, 3, 0, 0, 0, 0, 72,216, 83, 3, 0, 0, 0, 0,232,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 88,226, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200,226, 83, 3, 0, 0, 0, 0, -232,225, 83, 3, 0, 0, 0, 0,152,217, 83, 3, 0, 0, 0, 0,232,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,200,226, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56,227, 83, 3, 0, 0, 0, 0, - 88,226, 83, 3, 0, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 56,227, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168,227, 83, 3, 0, 0, 0, 0, -200,226, 83, 3, 0, 0, 0, 0,232,218, 83, 3, 0, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,168,227, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24,228, 83, 3, 0, 0, 0, 0, - 56,227, 83, 3, 0, 0, 0, 0,152,217, 83, 3, 0, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 24,228, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136,228, 83, 3, 0, 0, 0, 0, -168,227, 83, 3, 0, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,136,228, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248,228, 83, 3, 0, 0, 0, 0, - 24,228, 83, 3, 0, 0, 0, 0, 72,216, 83, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,248,228, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104,229, 83, 3, 0, 0, 0, 0, -136,228, 83, 3, 0, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,104,229, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,229, 83, 3, 0, 0, 0, 0, -248,228, 83, 3, 0, 0, 0, 0,232,218, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,216,229, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,230, 83, 3, 0, 0, 0, 0, -104,229, 83, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 72,230, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,230, 83, 3, 0, 0, 0, 0, -216,229, 83, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,184,230, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40,231, 83, 3, 0, 0, 0, 0, - 72,230, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 40,231, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152,231, 83, 3, 0, 0, 0, 0, -184,230, 83, 3, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,152,231, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 8,232, 83, 3, 0, 0, 0, 0, - 40,231, 83, 3, 0, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 8,232, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120,232, 83, 3, 0, 0, 0, 0, -152,231, 83, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,120,232, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,232,232, 83, 3, 0, 0, 0, 0, - 8,232, 83, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,232,232, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88,233, 83, 3, 0, 0, 0, 0, -120,232, 83, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0,216,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 88,233, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200,233, 83, 3, 0, 0, 0, 0, -232,232, 83, 3, 0, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0,216,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,200,233, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56,234, 83, 3, 0, 0, 0, 0, - 88,233, 83, 3, 0, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 56,234, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168,234, 83, 3, 0, 0, 0, 0, -200,233, 83, 3, 0, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,168,234, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24,235, 83, 3, 0, 0, 0, 0, - 56,234, 83, 3, 0, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 24,235, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136,235, 83, 3, 0, 0, 0, 0, -168,234, 83, 3, 0, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,136,235, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248,235, 83, 3, 0, 0, 0, 0, - 24,235, 83, 3, 0, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,248,235, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104,236, 83, 3, 0, 0, 0, 0, -136,235, 83, 3, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,104,236, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248,235, 83, 3, 0, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0,216,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,216,236, 83, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,168,240, 83, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0,184,216, 83, 3, 0, 0, 0, 0, 40,217, 83, 3, 0, 0, 0, 0, -120,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, - 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,234, 84, 3, 0, 0, 0, 0, - 56,234, 84, 3, 0, 0, 0, 0,200,237, 83, 3, 0, 0, 0, 0, 56,239, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -200,237, 83, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56,239, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208,223,101, 3,196, 0, 0, 0, 1, 0, 0, 0,136,191,113, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,191,113, 3,196, 0, 0, 0, + 1, 0, 0, 0,152,171,129, 3,208,223,101, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +152,171,129, 3,196, 0, 0, 0, 1, 0, 0, 0, 16,172,129, 3,136,191,113, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 16,172,129, 3,196, 0, 0, 0, 1, 0, 0, 0,136,172,129, 3,152,171,129, 3, 0, 0, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,172,129, 3,196, 0, 0, 0, 1, 0, 0, 0, 0,173,129, 3, + 16,172,129, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0,173,129, 3,196, 0, 0, 0, + 1, 0, 0, 0,120,173,129, 3,136,172,129, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +120,173,129, 3,196, 0, 0, 0, 1, 0, 0, 0,240,173,129, 3, 0,173,129, 3, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,240,173,129, 3,196, 0, 0, 0, 1, 0, 0, 0,104,174,129, 3,120,173,129, 3, 0, 0, 0, 0, + 32, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,174,129, 3,196, 0, 0, 0, 1, 0, 0, 0,224,174,129, 3, +240,173,129, 3, 0, 0, 0, 0, 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224,174,129, 3,196, 0, 0, 0, + 1, 0, 0, 0, 88,175,129, 3,104,174,129, 3, 0, 0, 0, 0,254, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 88,175,129, 3,196, 0, 0, 0, 1, 0, 0, 0,208,175,129, 3,224,174,129, 3, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,208,175,129, 3,196, 0, 0, 0, 1, 0, 0, 0, 72,176,129, 3, 88,175,129, 3, 0, 0, 0, 0, + 32, 4, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,176,129, 3,196, 0, 0, 0, 1, 0, 0, 0,192,176,129, 3, +208,175,129, 3, 0, 0, 0, 0,192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192,176,129, 3,196, 0, 0, 0, + 1, 0, 0, 0, 56,177,129, 3, 72,176,129, 3, 0, 0, 0, 0,192, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 56,177,129, 3,196, 0, 0, 0, 1, 0, 0, 0,176,177,129, 3,192,176,129, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,176,177,129, 3,196, 0, 0, 0, 1, 0, 0, 0, 40,178,129, 3, 56,177,129, 3, 0, 0, 0, 0, +192, 1, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,178,129, 3,196, 0, 0, 0, 1, 0, 0, 0,160,178,129, 3, +176,177,129, 3, 0, 0, 0, 0, 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,178,129, 3,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 40,178,129, 3, 0, 0, 0, 0,254, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 24,179,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,179,129, 3, 0, 0, 0, 0,136,191,113, 3,152,171,129, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,179,129, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,180,129, 3, 24,179,129, 3, +136,191,113, 3,136,172,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,180,129, 3,197, 0, 0, 0, + 1, 0, 0, 0,152,180,129, 3,152,179,129, 3,152,171,129, 3, 0,173,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,152,180,129, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,181,129, 3, 24,180,129, 3,136,172,129, 3, 0,173,129, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,181,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,181,129, 3, +152,180,129, 3,208,223,101, 3,120,173,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,181,129, 3, +197, 0, 0, 0, 1, 0, 0, 0, 24,182,129, 3, 24,181,129, 3, 16,172,129, 3,120,173,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 24,182,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,182,129, 3,152,181,129, 3, 0,173,129, 3, +240,173,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,182,129, 3,197, 0, 0, 0, 1, 0, 0, 0, + 24,183,129, 3, 24,182,129, 3,120,173,129, 3,104,174,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 24,183,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,183,129, 3,152,182,129, 3, 16,172,129, 3,224,174,129, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,183,129, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,184,129, 3, 24,183,129, 3, +104,174,129, 3,224,174,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,184,129, 3,197, 0, 0, 0, + 1, 0, 0, 0,152,184,129, 3,152,183,129, 3,208,223,101, 3, 88,175,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,152,184,129, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,185,129, 3, 24,184,129, 3,240,173,129, 3,208,175,129, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,185,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,185,129, 3, +152,184,129, 3,120,173,129, 3,208,175,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,185,129, 3, +197, 0, 0, 0, 1, 0, 0, 0, 24,186,129, 3, 24,185,129, 3, 88,175,129, 3,208,175,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 24,186,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,186,129, 3,152,185,129, 3, 88,175,129, 3, + 72,176,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,186,129, 3,197, 0, 0, 0, 1, 0, 0, 0, + 24,187,129, 3, 24,186,129, 3,208,175,129, 3, 72,176,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 24,187,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,187,129, 3,152,186,129, 3,136,172,129, 3,192,176,129, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,187,129, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,188,129, 3, 24,187,129, 3, +240,173,129, 3,192,176,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,188,129, 3,197, 0, 0, 0, + 1, 0, 0, 0,152,188,129, 3,152,187,129, 3, 72,176,129, 3,192,176,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,152,188,129, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,189,129, 3, 24,188,129, 3, 88,175,129, 3, 56,177,129, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,189,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,189,129, 3, +152,188,129, 3, 72,176,129, 3,176,177,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,189,129, 3, +197, 0, 0, 0, 1, 0, 0, 0, 24,190,129, 3, 24,189,129, 3, 56,177,129, 3,176,177,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 24,190,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,190,129, 3,152,189,129, 3,104,174,129, 3, + 40,178,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,190,129, 3,197, 0, 0, 0, 1, 0, 0, 0, + 24,191,129, 3, 24,190,129, 3,240,173,129, 3, 40,178,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 24,191,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,191,129, 3,152,190,129, 3, 0,173,129, 3,160,178,129, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,191,129, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,192,129, 3, 24,191,129, 3, +224,174,129, 3,160,178,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,192,129, 3,197, 0, 0, 0, + 1, 0, 0, 0,152,192,129, 3,152,191,129, 3, 40,178,129, 3,160,178,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,152,192,129, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,193,129, 3, 24,192,129, 3,136,172,129, 3, 56,177,129, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,193,129, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +152,192,129, 3,192,176,129, 3,176,177,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,152,193,129, 3, +199, 0, 0, 0, 1, 0, 0, 0, 32,197,129, 3, 0, 0, 0, 0,136,172,129, 3,136,191,113, 3,152,171,129, 3, 0,173,129, 3, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0,240,247,129, 3,240,247,129, 3, 96,194,129, 3,192,195,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,194,129, 3,200, 0, 0, 0, 1, 0, 0, 0,192,195,129, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 56,239, 83, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,237, 83, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, -112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -168,240, 83, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,200, 23, 84, 3, 0, 0, 0, 0,216,236, 83, 3, 0, 0, 0, 0, -232,218, 83, 3, 0, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0,152,217, 83, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 51, 1, 0, 0, 4, 4,222, 0, 52, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 14, 84, 3, 0, 0, 0, 0, 72, 22, 84, 3, 0, 0, 0, 0, -152,241, 83, 3, 0, 0, 0, 0, 8,243, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,241, 83, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 8,243, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, - 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, 31, 0,222, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 51, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8,243, 83, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,241, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 67, - 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 77, 67, 1,128,138,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, - 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, - 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,222, 0, 21, 1,205, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120, 14, 84, 3, 0, 0, 0, 0, -165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,200, 23, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,200, 36, 84, 3, 0, 0, 0, 0, -168,240, 83, 3, 0, 0, 0, 0, 72,216, 83, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, -232,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, - 15, 15, 32, 4, 84, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 27, 84, 3, 0, 0, 0, 0, - 72, 35, 84, 3, 0, 0, 0, 0,184, 24, 84, 3, 0, 0, 0, 0, 40, 26, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -184, 24, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 40, 26, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,132, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 32, 4, 26, 0, 32, 4, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 40, 26, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 24, 84, 3, 0, 0, 0, 0, - 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 31, 4, 0, 0, 18, 0, 0, 0, 57, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, -205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 26, 0, 0, 0, 83, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, -152, 27, 84, 3, 0, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,200, 36, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -184, 55, 84, 3, 0, 0, 0, 0,200, 23, 84, 3, 0, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0, -184,223, 83, 3, 0, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, - 53, 1, 0, 0, 47, 2, 0, 0, 3, 3,222, 0,251, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 40, 84, 3, 0, 0, 0, 0, 56, 54, 84, 3, 0, 0, 0, 0,184, 37, 84, 3, 0, 0, 0, 0, 40, 39, 84, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,184, 37, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 40, 39, 84, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 94, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, - 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, - 26, 0,222, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, - 22, 2, 0, 0, 47, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 26, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 40, 39, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, 37, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0,100, 66, 0, 0,131, 67, - 0, 0, 79,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,222, 0, -225, 0,205, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, - 53, 1, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,225, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,152, 40, 84, 3, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 42, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, - 8, 42, 84, 3, 0, 0, 0, 0,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,104, 42, 84, 3, 0, 0, 0, 0, - 68, 65, 84, 65,208, 0, 0, 0,104, 42, 84, 3, 0, 0, 0, 0,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -120,159, 89, 3, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, -120,159, 89, 3, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -104,181, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 40,189, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 72,129, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,232,200, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -200,110, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,195, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -232,176, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 24,176, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184, 55, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -104, 84, 84, 3, 0, 0, 0, 0,200, 36, 84, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0, - 88,219, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, - 85, 0, 0, 0,186, 2, 0, 0, 1, 1, 95, 2,102, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232, 78, 84, 3, 0, 0, 0, 0, 72, 83, 84, 3, 0, 0, 0, 0,168, 56, 84, 3, 0, 0, 0, 0,200, 73, 84, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,168, 56, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 24, 58, 84, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 23, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, - 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 95, 2, - 26, 0, 95, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, - 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 24, 58, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,136, 59, 84, 3, 0, 0, 0, 0, -168, 56, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, -255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, - 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0,193, 1, 0, 0, -111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 76, 2, 0, 0, 5, 0, - 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,136, 59, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,248, 60, 84, 3, 0, 0, 0, 0, - 24, 58, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, - 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, -120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, -111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, - 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,248, 60, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,200, 73, 84, 3, 0, 0, 0, 0, -136, 59, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, - 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, -148, 3,163, 0,130, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 31, 4, 0, 0, -111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,200, 73, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 60, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, -111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 76, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 75, 84, 3, 0, 0, 0, 0, - 68, 65, 84, 65,104, 3, 0, 0, 56, 75, 84, 3, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,134,144, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63, -176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, - 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62,215, 62,232,190, - 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62,145,180,109,188,243, 90,129, 63, -138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, 99,240,191, 62,110,116, 85, 63, - 80,185, 70,188, 0, 0, 82,180,206, 44,182,190,198,158, 47, 62, 36,239, 74, 63, 0, 0, 8,179, 67,108,117,194,183,204,216, 65, -104,156, 5,194,212,247,159,192,235, 62,114, 66, 59,254,213,193,157,225, 3, 66, 55, 8,160, 64, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62,215, 62,232,190, - 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62,145,180,109,188,243, 90,129, 63, -138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65,255,189, 88, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190, -237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,234,108, 69, 59, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 32, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 1, 0, 0,232, 78, 84, 3, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,104, 84, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 8,147, 84, 3, 0, 0, 0, 0,184, 55, 84, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0, -216,222, 83, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, - 85, 0, 0, 0,255, 0, 0, 0, 2, 2,192, 1,171, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 91, 84, 3, 0, 0, 0, 0,232,145, 84, 3, 0, 0, 0, 0, 88, 85, 84, 3, 0, 0, 0, 0,168, 89, 84, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 88, 85, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,200, 86, 84, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, - 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, - 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, - 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,200, 86, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56, 88, 84, 3, 0, 0, 0, 0, - 88, 85, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, - 0, 0,254,194, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0, -145, 0,200, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, -111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0,145, 0, 0, 0, 2, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 56, 88, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,168, 89, 84, 3, 0, 0, 0, 0, -200, 86, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0,191, 1, 0, 0, -111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,168, 89, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56, 88, 84, 3, 0, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, - 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0,111, 18,131, 58,111, 18,131, 58, - 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,231, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0,191, 1, 0, 0, -111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 0,145, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,240, 0, 0, 0, 24, 91, 84, 3, 0, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 92, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88, 92, 84, 3, 0, 0, 0, 0, 24, 1, 0, 0, 1, 0, 0, 0, -120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 8,147, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 72,215, 84, 3, 0, 0, 0, 0,104, 84, 84, 3, 0, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0, -248,221, 83, 3, 0, 0, 0, 0,216,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, - 1, 1, 0, 0,186, 2, 0, 0, 12, 12,192, 1,186, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72,152, 84, 3, 0, 0, 0, 0, 40,214, 84, 3, 0, 0, 0, 0,248,147, 84, 3, 0, 0, 0, 0,216,150, 84, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,248,147, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,104,149, 84, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 98, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, - 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, - 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, - 1, 1, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,104,149, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216,150, 84, 3, 0, 0, 0, 0, -248,147, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, - 0, 0,199,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,200, 0, -160, 1,200, 0,142, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, - 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,160, 1, 0, 0, 2, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,216,150, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104,149, 84, 3, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, - 0, 0,199,195, 0, 0, 0, 0,231, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,248, 0, -160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0, 0, 0,191, 1, 0, 0, - 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 0,160, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 0, 1, 0, 0, 72,152, 84, 3, 0, 0, 0, 0, 25, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 72,215, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,147, 84, 3, 0, 0, 0, 0, - 72,223, 83, 3, 0, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 1, 1,222, 0,138, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,222, 84, 3, 0, 0, 0, 0,248,232, 84, 3, 0, 0, 0, 0, - 56,216, 84, 3, 0, 0, 0, 0,168,217, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56,216, 84, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,168,217, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 64, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, - 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,132, 1, 24, 0,132, 1, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0, 49, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,217, 84, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,216, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,222, 0,138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24,219, 84, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 24,219, 84, 3, 0, 0, 0, 0, -159, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,109,100, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, -149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, -152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, - 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, - 77,255,170, 64, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191,142,164,206, 63,250,192,142, 63, -180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, 81, 21, 64,191,119, 24,172,191, -216, 49, 49, 65,152, 9, 52, 65,231, 70,158, 62, 24,234,167, 62,160,206,159,187, 0, 0,170,180,243, 26,182,189,252, 74,179, 61, -195,111,128, 62, 0, 0,124, 51,211,120, 21,194,144, 5, 2, 66, 10,136,213,193,193,214,159,192,219, 38, 19, 66,196,173,255,193, -158,101,210, 65,173, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, -149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, -152, 9, 52,193, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191,142,164,206, 63,250,192,142, 63, -180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, 81, 21, 64,191,119, 24,172,191, -216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190, 0, 0, 32, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 13,133, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,200,222, 84, 3, 0, 0, 0, 0, -160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, - 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, -200,234, 84, 3, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,200,187, 85, 3, 0, 0, 0, 0, 40,215, 83, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, - 48, 48, 49, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,235, 84, 3, 0, 0, 0, 0, -152,241, 84, 3, 0, 0, 0, 0, 8,242, 84, 3, 0, 0, 0, 0, 56,251, 84, 3, 0, 0, 0, 0,168,251, 84, 3, 0, 0, 0, 0, -184,120, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,232,235, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 88,236, 84, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 88,236, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,200,236, 84, 3, 0, 0, 0, 0,232,235, 84, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200,236, 84, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 56,237, 84, 3, 0, 0, 0, 0, 88,236, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,237, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -168,237, 84, 3, 0, 0, 0, 0,200,236, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24,238, 84, 3, 0, 0, 0, 0, - 56,237, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 24,238, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,248,238, 84, 3, 0, 0, 0, 0, 24,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248,238, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -104,239, 84, 3, 0, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,104,239, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,216,239, 84, 3, 0, 0, 0, 0, -248,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -216,239, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0,104,239, 84, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,184,240, 84, 3, 0, 0, 0, 0,216,239, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,240, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 40,241, 84, 3, 0, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 20, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 40,241, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,241, 84, 3, 0, 0, 0, 0, -184,240, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -152,241, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,241, 84, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,242, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,120,242, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,236, 84, 3, 0, 0, 0, 0, -200,236, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,242, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,232,242, 84, 3, 0, 0, 0, 0, 8,242, 84, 3, 0, 0, 0, 0, 88,236, 84, 3, 0, 0, 0, 0, -168,237, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,242, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 88,243, 84, 3, 0, 0, 0, 0,120,242, 84, 3, 0, 0, 0, 0,200,236, 84, 3, 0, 0, 0, 0, - 24,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,243, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,200,243, 84, 3, 0, 0, 0, 0,232,242, 84, 3, 0, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0, - 24,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,243, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 56,244, 84, 3, 0, 0, 0, 0, 88,243, 84, 3, 0, 0, 0, 0, 56,237, 84, 3, 0, 0, 0, 0, -248,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,244, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,168,244, 84, 3, 0, 0, 0, 0,200,243, 84, 3, 0, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, -248,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,244, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 24,245, 84, 3, 0, 0, 0, 0, 56,244, 84, 3, 0, 0, 0, 0, 24,238, 84, 3, 0, 0, 0, 0, -104,239, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,245, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,136,245, 84, 3, 0, 0, 0, 0,168,244, 84, 3, 0, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0, -104,239, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,245, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,248,245, 84, 3, 0, 0, 0, 0, 24,245, 84, 3, 0, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, -104,239, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,245, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,104,246, 84, 3, 0, 0, 0, 0,136,245, 84, 3, 0, 0, 0, 0, 24,238, 84, 3, 0, 0, 0, 0, -248,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,246, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,216,246, 84, 3, 0, 0, 0, 0,248,245, 84, 3, 0, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0, -216,239, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,246, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 72,247, 84, 3, 0, 0, 0, 0,104,246, 84, 3, 0, 0, 0, 0,104,239, 84, 3, 0, 0, 0, 0, - 72,240, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,247, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,184,247, 84, 3, 0, 0, 0, 0,216,246, 84, 3, 0, 0, 0, 0,216,239, 84, 3, 0, 0, 0, 0, - 72,240, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,247, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 40,248, 84, 3, 0, 0, 0, 0, 72,247, 84, 3, 0, 0, 0, 0,216,239, 84, 3, 0, 0, 0, 0, -184,240, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,248, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,152,248, 84, 3, 0, 0, 0, 0,184,247, 84, 3, 0, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0, -184,240, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,248, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 8,249, 84, 3, 0, 0, 0, 0, 40,248, 84, 3, 0, 0, 0, 0,232,235, 84, 3, 0, 0, 0, 0, - 40,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,249, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,120,249, 84, 3, 0, 0, 0, 0,152,248, 84, 3, 0, 0, 0, 0, 40,241, 84, 3, 0, 0, 0, 0, -152,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,249, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,232,249, 84, 3, 0, 0, 0, 0, 8,249, 84, 3, 0, 0, 0, 0, 56,237, 84, 3, 0, 0, 0, 0, -152,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,249, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 88,250, 84, 3, 0, 0, 0, 0,120,249, 84, 3, 0, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, -152,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,250, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,200,250, 84, 3, 0, 0, 0, 0,232,249, 84, 3, 0, 0, 0, 0,184,240, 84, 3, 0, 0, 0, 0, - 40,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,250, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 56,251, 84, 3, 0, 0, 0, 0, 88,250, 84, 3, 0, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0, -152,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,251, 84, 3, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,250, 84, 3, 0, 0, 0, 0,232,235, 84, 3, 0, 0, 0, 0, -216,239, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,168,251, 84, 3, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,120,255, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0, - 88,236, 84, 3, 0, 0, 0, 0,200,236, 84, 3, 0, 0, 0, 0, 24,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,187, 85, 3, 0, 0, 0, 0, 56,187, 85, 3, 0, 0, 0, 0,152,252, 84, 3, 0, 0, 0, 0, - 8,254, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,252, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 8,254, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8,254, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152,252, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,195,129, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,194,129, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 96, 0, 0, 0, 32,197,129, 3,199, 0, 0, 0, 1, 0, 0, 0,232,201,129, 3,152,193,129, 3,120,173,129, 3, +104,174,129, 3,224,174,129, 3, 16,172,129, 3, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 51, 1, 0, 0, + 4, 4,222, 0, 52, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,200,129, 3,168,200,129, 3,232,197,129, 3, + 72,199,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232,197,129, 3, +200, 0, 0, 0, 1, 0, 0, 0, 72,199,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 55, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,222, 0, 31, 0,222, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0, +254, 4, 0, 0, 21, 1, 0, 0, 51, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 31, 0, + 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 72,199,129, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232,197,129, 3, 0, 0, 0, 0, + 0, 0, 94, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 77, 67, 1,128,138,195, 0, 0, 0, 0,205, 0, 0, 0, +222, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +204, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,222, 0, 21, 1,205, 0, 21, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,168,200,129, 3,165, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,120,255, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -120, 12, 85, 3, 0, 0, 0, 0,168,251, 84, 3, 0, 0, 0, 0,152,241, 84, 3, 0, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, -248,238, 84, 3, 0, 0, 0, 0, 56,237, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,234, 0, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 3, 85, 3, 0, 0, 0, 0,248, 10, 85, 3, 0, 0, 0, 0,104, 0, 85, 3, 0, 0, 0, 0,216, 1, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,104, 0, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216, 1, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,116, 68, 0, 0, 0, 0, 0, 0,208, 65, 0,128,190, 67, 0,192, 25, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, +232,201,129, 3,199, 0, 0, 0, 1, 0, 0, 0,144,206,129, 3, 32,197,129, 3,208,223,101, 3, 88,175,129, 3,208,175,129, 3, +120,173,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 15, 15, 32, 4, 84, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,205,129, 3,112,205,129, 3,176,202,129, 3, 16,204,129, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,202,129, 3,200, 0, 0, 0, 1, 0, 0, 0, + 16,204,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,132, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, - 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, - 26, 0,234, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 26, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, + 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 32, 4, + 26, 0, 32, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 16,204,129, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,202,129, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, + 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 18, 0, 0, 0, + 57, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, + 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 4, 0, 0, 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0,112,205,129, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,144,206,129, 3, +199, 0, 0, 0, 1, 0, 0, 0,120,212,129, 3,232,201,129, 3,104,174,129, 3, 40,178,129, 3,160,178,129, 3,224,174,129, 3, + 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 47, 2, 0, 0, 3, 3,222, 0,251, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 24,210,129, 3, 24,210,129, 3, 88,207,129, 3,184,208,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,207,129, 3,200, 0, 0, 0, 1, 0, 0, 0,184,208,129, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 94, 67, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, 26, 0,222, 0, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 22, 2, 0, 0, 47, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,208,129, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88,207,129, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, + 0, 0,100, 66, 0, 0,131, 67, 0, 0, 79,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, + 0, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, + 0, 0, 0, 4, 6, 0,222, 0,225, 0,205, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0, +254, 4, 0, 0, 53, 1, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,225, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,252, 0, 0, 0, 24,210,129, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,161,100, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,240,161,100, 3,223, 0, 0, 0, + 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,120,211,129, 3, 68, 65, 84, 65,156, 0, 0, 0,120,211,129, 3,222, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,208,195, 93, 7, 19, 0, 0, 0, 1, 0, 1, 0,208,195, 93, 7, 20, 0, 0, 0, + 1, 0, 1, 0,208,195, 93, 7, 21, 0, 1, 0, 1, 0, 1, 0,208,195, 93, 7, 0, 0, 0, 0, 1, 0, 1, 0, 40,108,103, 7, + 0, 0, 0, 0, 1, 0, 1, 0,208,114,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, 8,197,104, 7, 0, 0, 0, 0, 1, 0, 1, 0, + 72,124,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, 24, 34,104, 7, 0, 0, 0, 0, 1, 0, 1, 0, 8,120,103, 7, 0, 0, 0, 0, + 1, 0, 1, 0,216,103,103, 7, 0, 0, 0, 0, 1, 0, 1, 0,144,110,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, 8,103,103, 7, + 68, 65, 84, 65, 96, 0, 0, 0,120,212,129, 3,199, 0, 0, 0, 1, 0, 0, 0, 48,225,129, 3,144,206,129, 3, 72,176,129, 3, +192,176,129, 3,240,173,129, 3,208,175,129, 3, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,186, 2, 0, 0, + 1, 1, 95, 2,102, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,223,129, 3,208,223,129, 3, 64,213,129, 3, +192,218,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,213,129, 3, +200, 0, 0, 0, 1, 0, 0, 0,160,214,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0,192, 23, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0, 95, 2, 26, 0, 95, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, + 31, 4, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 26, 0, + 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,160,214,129, 3,200, 0, 0, 0, 1, 0, 0, 0, 0,216,129, 3, 64,213,129, 3, 0, 0, 0, 0, + 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0, +160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0,193, 1, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 76, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0,216,129, 3,200, 0, 0, 0, 1, 0, 0, 0, + 96,217,129, 3,160,214,129, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, + 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, +120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0, +111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 96,217,129, 3,200, 0, 0, 0, 1, 0, 0, 0,192,218,129, 3, 0,216,129, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, +147, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, +147, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,148, 3,163, 0,130, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 4, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,218,129, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,217,129, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 76, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,220,129, 3, 68, 65, 84, 65, 72, 3, 0, 0, 32,220,129, 3,159, 0, 0, 0, + 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,134,144, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, + 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, + 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, + 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, + 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, + 0, 0,128, 63,178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, + 35, 44,185, 62,145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65, +214,211,111, 65, 99,240,191, 62,110,116, 85, 63, 80,185, 70,188, 0, 0, 82,180,206, 44,182,190,198,158, 47, 62, 36,239, 74, 63, + 0, 0, 8,179, 67,108,117,194,183,204,216, 65,104,156, 5,194,212,247,159,192,235, 62,114, 66, 59,254,213,193,157,225, 3, 66, + 55, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, + 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, + 0, 0,128, 63,178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, + 35, 44,185, 62,145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65, +214,211,111, 65,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, + 0, 0, 0, 0,234,108, 69, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 32, 33, 12, 66, + 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,223,129, 3,160, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0,144,110,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, + 48,225,129, 3,199, 0, 0, 0, 1, 0, 0, 0, 48,233,129, 3,120,212,129, 3, 88,175,129, 3, 56,177,129, 3,176,177,129, 3, + 72,176,129, 3, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,255, 0, 0, 0, 2, 2,192, 1,171, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,231,129, 3,120,231,129, 3,248,225,129, 3, 24,230,129, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,225,129, 3,200, 0, 0, 0, 1, 0, 0, 0, + 88,227,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, + 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, + 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0, +110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 88,227,129, 3,200, 0, 0, 0, 1, 0, 0, 0,184,228,129, 3,248,225,129, 3, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,254,194, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, +144, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, +144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, + 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0,145, 0,200, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,216, 0, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +217, 0,145, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,228,129, 3,200, 0, 0, 0, 1, 0, 0, 0, 24,230,129, 3, 88,227,129, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24,230,129, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,184,228,129, 3, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, + 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 18, 0, 0, 0, +230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0,111, 18,131, 58, +111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, + 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0,191, 1, 0, 0, +111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 0,145, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +208, 0, 0, 0,120,231,129, 3,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,216, 1, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 85, 3, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, - 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, - 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,234, 0, - 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, - 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,176,232,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,176,232,129, 3, 24, 1, 0, 0, 1, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 48,233,129, 3,199, 0, 0, 0, 1, 0, 0, 0, + 88,239,129, 3, 48,225,129, 3, 56,177,129, 3,136,172,129, 3,192,176,129, 3,176,177,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, +191, 1, 0, 0, 1, 1, 0, 0,186, 2, 0, 0, 12, 12,192, 1,186, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24,238,129, 3, 24,238,129, 3,248,233,129, 3,184,236,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,248,233,129, 3,200, 0, 0, 0, 1, 0, 0, 0, 88,235,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0,192, 98, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,235,129, 3,200, 0, 0, 0, 1, 0, 0, 0, +184,236,129, 3,248,233,129, 3, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, + 0, 0,199,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,200, 0, +160, 1,200, 0,142, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 27, 1, 0, 0, +186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,160, 1, 0, 0, 2, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +184,236,129, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88,235,129, 3, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194, + 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0,199,195, 0, 0, 0, 0,231, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, +159, 1, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0, +159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0, + 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +200, 0, 0, 0,191, 1, 0, 0, 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 24,238,129, 3, 25, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,216, 0, 0, 0, 72, 3, 85, 3, 0, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 88,239,129, 3,199, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 48,233,129, 3, 40,178,129, 3,240,173,129, 3, 0,173,129, 3,160,178,129, 3, 0, 0, 0, 0, + 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 1, 1,222, 0,138, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,144,246,129, 3,144,246,129, 3, 32,240,129, 3,128,241,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,240,129, 3,200, 0, 0, 0, 1, 0, 0, 0,128,241,129, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 64, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,132, 1, 24, 0,132, 1, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0, 49, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,241,129, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 32,240,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, + 49, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,138, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,242,129, 3, 68, 65, 84, 65, + 72, 3, 0, 0,224,242,129, 3,159, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,216,109,100, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, + 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, + 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, + 87,126,162,190,228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0, +110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191, +142,164,206, 63,250,192,142, 63,180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, + 81, 21, 64,191,119, 24,172,191,216, 49, 49, 65,152, 9, 52, 65,231, 70,158, 62, 24,234,167, 62,160,206,159,187, 0, 0,170,180, +243, 26,182,189,252, 74,179, 61,195,111,128, 62, 0, 0,124, 51,211,120, 21,194,144, 5, 2, 66, 10,136,213,193,193,214,159,192, +219, 38, 19, 66,196,173,255,193,158,101,210, 65,173, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, + 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, + 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191, +142,164,206, 63,250,192,142, 63,180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, + 81, 21, 64,191,119, 24,172,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190, + 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 13,133, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,120, 12, 85, 3, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 24, 52, 85, 3, 0, 0, 0, 0,120,255, 84, 3, 0, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, -104,239, 84, 3, 0, 0, 0, 0, 24,238, 84, 3, 0, 0, 0, 0,248,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,186, 2, 0, 0, 4, 4,234, 0,122, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200, 35, 85, 3, 0, 0, 0, 0,152, 50, 85, 3, 0, 0, 0, 0,104, 13, 85, 3, 0, 0, 0, 0, -216, 14, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 13, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -216, 14, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, - 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 7, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +144,246,129, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,144,110,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, + 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,136,248,129, 3,195, 0, 0, 0, 1, 0, 0, 0, 24, 81, 92, 7,168,170,129, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,249,129, 3,144,255,129, 3,136, 0, 92, 7, 8, 11, 92, 7,136, 11, 92, 7, + 24, 42, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120,249,129, 3,196, 0, 0, 0, 1, 0, 0, 0,240,249,129, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,249,129, 3,196, 0, 0, 0, 1, 0, 0, 0, +104,250,129, 3,120,249,129, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,250,129, 3, +196, 0, 0, 0, 1, 0, 0, 0,224,250,129, 3,240,249,129, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,224,250,129, 3,196, 0, 0, 0, 1, 0, 0, 0, 88,251,129, 3,104,250,129, 3, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 88,251,129, 3,196, 0, 0, 0, 1, 0, 0, 0,208,251,129, 3,224,250,129, 3, + 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208,251,129, 3,196, 0, 0, 0, 1, 0, 0, 0, + 72,252,129, 3, 88,251,129, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,252,129, 3, +196, 0, 0, 0, 1, 0, 0, 0,192,252,129, 3,208,251,129, 3, 0, 0, 0, 0, 20, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,192,252,129, 3,196, 0, 0, 0, 1, 0, 0, 0, 56,253,129, 3, 72,252,129, 3, 0, 0, 0, 0,254, 4, 64, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 56,253,129, 3,196, 0, 0, 0, 1, 0, 0, 0,176,253,129, 3,192,252,129, 3, + 0, 0, 0, 0, 20, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,253,129, 3,196, 0, 0, 0, 1, 0, 0, 0, + 40,254,129, 3, 56,253,129, 3, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,254,129, 3, +196, 0, 0, 0, 1, 0, 0, 0,160,254,129, 3,176,253,129, 3, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,160,254,129, 3,196, 0, 0, 0, 1, 0, 0, 0, 24,255,129, 3, 40,254,129, 3, 0, 0, 0, 0, 0, 2, 20, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24,255,129, 3,196, 0, 0, 0, 1, 0, 0, 0,144,255,129, 3,160,254,129, 3, + 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144,255,129, 3,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 24,255,129, 3, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 0, 92, 7, +197, 0, 0, 0, 1, 0, 0, 0, 8, 1, 92, 7, 0, 0, 0, 0,240,249,129, 3,104,250,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 8, 1, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,136, 1, 92, 7,136, 0, 92, 7,240,249,129, 3, + 88,251,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 1, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, + 8, 2, 92, 7, 8, 1, 92, 7,104,250,129, 3,208,251,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 8, 2, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,136, 2, 92, 7,136, 1, 92, 7, 88,251,129, 3,208,251,129, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 2, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 8, 3, 92, 7, 8, 2, 92, 7, +224,250,129, 3,192,252,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 3, 92, 7,197, 0, 0, 0, + 1, 0, 0, 0,136, 3, 92, 7,136, 2, 92, 7, 72,252,129, 3,192,252,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,136, 3, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 8, 4, 92, 7, 8, 3, 92, 7,208,251,129, 3, 56,253,129, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 4, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,136, 4, 92, 7, +136, 3, 92, 7, 88,251,129, 3, 56,253,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 4, 92, 7, +197, 0, 0, 0, 1, 0, 0, 0, 8, 5, 92, 7, 8, 4, 92, 7, 72,252,129, 3, 56,253,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 8, 5, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,136, 5, 92, 7,136, 4, 92, 7,208,251,129, 3, +192,252,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 5, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, + 8, 6, 92, 7, 8, 5, 92, 7, 88,251,129, 3,176,253,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 8, 6, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,136, 6, 92, 7,136, 5, 92, 7, 56,253,129, 3, 40,254,129, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 6, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 8, 7, 92, 7, 8, 6, 92, 7, +176,253,129, 3, 40,254,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 7, 92, 7,197, 0, 0, 0, + 1, 0, 0, 0,136, 7, 92, 7,136, 6, 92, 7,176,253,129, 3,160,254,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,136, 7, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 8, 8, 92, 7, 8, 7, 92, 7, 40,254,129, 3,160,254,129, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 8, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,136, 8, 92, 7, +136, 7, 92, 7,120,249,129, 3, 24,255,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 8, 92, 7, +197, 0, 0, 0, 1, 0, 0, 0, 8, 9, 92, 7, 8, 8, 92, 7, 24,255,129, 3,144,255,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 8, 9, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,136, 9, 92, 7,136, 8, 92, 7,224,250,129, 3, +144,255,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 9, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, + 8, 10, 92, 7, 8, 9, 92, 7, 72,252,129, 3,144,255,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 8, 10, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,136, 10, 92, 7,136, 9, 92, 7,160,254,129, 3, 24,255,129, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 10, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 8, 11, 92, 7, 8, 10, 92, 7, + 40,254,129, 3,144,255,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 11, 92, 7,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,136, 10, 92, 7,120,249,129, 3,176,253,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,136, 11, 92, 7,199, 0, 0, 0, 1, 0, 0, 0, 16, 15, 92, 7, 0, 0, 0, 0, 88,251,129, 3,240,249,129, 3, +104,250,129, 3,208,251,129, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, + 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,128, 80, 92, 7,128, 80, 92, 7, 80, 12, 92, 7,176, 13, 92, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 12, 92, 7,200, 0, 0, 0, + 1, 0, 0, 0,176, 13, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, + 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, +188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,176, 13, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80, 12, 92, 7, 0, 0, 0, 0, 0,240,109, 69, + 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, + 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, + 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16, 15, 92, 7,199, 0, 0, 0, 1, 0, 0, 0,184, 19, 92, 7, +136, 11, 92, 7,144,255,129, 3, 72,252,129, 3,192,252,129, 3,224,250,129, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,234, 0, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,152, 18, 92, 7, +152, 18, 92, 7,216, 15, 92, 7, 56, 17, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,216, 15, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 56, 17, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,116, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0,128,190, 67, 0,192, 25, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 26, 0,234, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,234, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56, 17, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +216, 15, 92, 7, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, 0, 0, 0, 0, + 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, + 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,234, 0, 38, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0,152, 18, 92, 7, +176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,184, 19, 92, 7,199, 0, 0, 0, 1, 0, 0, 0,128, 24, 92, 7, 16, 15, 92, 7, + 72,252,129, 3, 56,253,129, 3,208,251,129, 3,192,252,129, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, +186, 2, 0, 0, 4, 4,234, 0,122, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 23, 92, 7, 64, 23, 92, 7, +128, 20, 92, 7,224, 21, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +128, 20, 92, 7,200, 0, 0, 0, 1, 0, 0, 0,224, 21, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, + 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0,156, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224, 21, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 20, 92, 7, + 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 88, 67, 0,192, 22,196, 0, 0, 0, 0, +217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0, 91, 2,217, 0, 91, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,155, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216, 14, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104, 13, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, - 0, 0, 0, 0,255,255, 88, 67, 0,192, 22,196, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, - 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,234, 0, 91, 2,217, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,155, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -234, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 35, 85, 3, 0, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 64, 23, 92, 7,165, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 24, 52, 85, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 24, 92, 85, 3, 0, 0, 0, 0,120, 12, 85, 3, 0, 0, 0, 0, - 40,241, 84, 3, 0, 0, 0, 0,184,240, 84, 3, 0, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0,152,241, 84, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 1, 1, 19, 2, 20, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 75, 85, 3, 0, 0, 0, 0,248, 90, 85, 3, 0, 0, 0, 0, - 8, 53, 85, 3, 0, 0, 0, 0, 40, 70, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8, 53, 85, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,120, 54, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 4, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 19, 2, 26, 0, 19, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120, 54, 85, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,232, 55, 85, 3, 0, 0, 0, 0, 8, 53, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,128, 24, 92, 7,199, 0, 0, 0, 1, 0, 0, 0, 56, 37, 92, 7,184, 19, 92, 7, 24,255,129, 3,160,254,129, 3, + 40,254,129, 3,144,255,129, 3, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 1, 1, 19, 2, + 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 35, 92, 7,216, 35, 92, 7, 72, 25, 92, 7,200, 30, 92, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72, 25, 92, 7,200, 0, 0, 0, + 1, 0, 0, 0,168, 26, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0,192, 4, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, + 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0, 19, 2, 26, 0, 19, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,168, 26, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 8, 28, 92, 7, 72, 25, 92, 7, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,250, 0, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0,250, 0, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8, 28, 92, 7,200, 0, 0, 0, 1, 0, 0, 0,104, 29, 92, 7, +168, 26, 92, 7, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, + 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0, +102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232, 55, 85, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 88, 57, 85, 3, 0, 0, 0, 0,120, 54, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, - 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104, 29, 92, 7, +200, 0, 0, 0, 1, 0, 0, 0,200, 30, 92, 7, 8, 28, 92, 7, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,184,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,180, 0,130, 1,163, 0,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, + 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88, 57, 85, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 40, 70, 85, 3, 0, 0, 0, 0,232, 55, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, - 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,184,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, - 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,130, 1,163, 0,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 40, 70, 85, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 57, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,200, 30, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104, 29, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -747,975 +2642,25 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 71, 85, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0,152, 71, 85, 3, 0, 0, 0, 0, -159, 0, 0, 0, 1, 0, 0, 0, 37,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249,173,116, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, -149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, -152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, - 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, - 77,255,170, 64, 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63, -180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191, -216, 49, 49, 65,152, 9, 52, 65, 80, 25,195, 62,218,249,206, 62, 0,237,196,187, 0, 0, 96,179,234, 2,170,189,191, 98,167, 61, - 1,208,111, 62, 0, 0,224, 49,254,120, 21,194,182, 5, 2, 66, 70,136,213,193,239,214,159,192, 5, 39, 19, 66, 15,174,255,193, -217,101,210, 65,219, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, -149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, -152, 9, 52,193, 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63, -180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191, -216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190,214,211,111, 65,214,211,111, 65, - 0, 0, 0, 0, 0, 0, 0, 0,223, 34, 9, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, 72, 75, 85, 3, 0, 0, 0, 0, -160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, - 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 24, 92, 85, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,184,120, 85, 3, 0, 0, 0, 0, 24, 52, 85, 3, 0, 0, 0, 0, -216,239, 84, 3, 0, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0,104,239, 84, 3, 0, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 16, 16, 20, 4,166, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 95, 85, 3, 0, 0, 0, 0,152,119, 85, 3, 0, 0, 0, 0, - 8, 93, 85, 3, 0, 0, 0, 0,120, 94, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8, 93, 85, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,120, 94, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120, 94, 85, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 93, 85, 3, 0, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, - 0, 0, 32,193, 0, 0, 0, 68,110,142,241,195, 55,199,120, 68,240, 80,128,193,136, 2, 4, 68, 3, 4, 0, 0, 20, 4, 0, 0, - 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, - 18, 0, 0, 0,139, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,236, 81,184, 61, 10,215, 19, 64, - 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 20, 4,140, 1, 3, 4,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,232, 95, 85, 3, 0, 0, 0, 0, -177, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 61,181, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184,120, 85, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 92, 85, 3, 0, 0, 0, 0,232,235, 84, 3, 0, 0, 0, 0,216,239, 84, 3, 0, 0, 0, 0, -184,240, 84, 3, 0, 0, 0, 0, 40,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, - 0, 0, 0, 0, 19, 1, 0, 0, 6, 6, 0, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248,125, 85, 3, 0, 0, 0, 0, 24,186, 85, 3, 0, 0, 0, 0,168,121, 85, 3, 0, 0, 0, 0,136,124, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,168,121, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 24,123, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, - 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 2, - 26, 0, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 24,123, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,136,124, 85, 3, 0, 0, 0, 0, -168,121, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,136,124, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24,123, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0,191, 0, 0,192, 63, - 0, 0, 64, 60, 0, 0,125, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, - 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,250, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 72, 33, 0, 0,248,125, 85, 3, 0, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, - 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 78, 0, 0,208, 0, 0, 0,200,187, 85, 3, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 40,202, 86, 3, 0, 0, 0, 0, -200,234, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232,188, 85, 3, 0, 0, 0, 0,184,193, 85, 3, 0, 0, 0, 0, 40,194, 85, 3, 0, 0, 0, 0,152,201, 85, 3, 0, 0, 0, 0, - 8,202, 85, 3, 0, 0, 0, 0,152,126, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92,100,177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232,188, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 88,189, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 88,189, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,200,189, 85, 3, 0, 0, 0, 0, -232,188, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -200,189, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 56,190, 85, 3, 0, 0, 0, 0, 88,189, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 97, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,190, 85, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0,200,189, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 24,191, 85, 3, 0, 0, 0, 0, 56,190, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 4, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0, -168,190, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 70, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -136,191, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 6, 70, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -216,192, 85, 3, 0, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,116, 3, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0, -104,192, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7,116, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 72,193, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,184,193, 85, 3, 0, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,193, 85, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 6, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,194, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -152,194, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,189, 85, 3, 0, 0, 0, 0,200,189, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,194, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 8,195, 85, 3, 0, 0, 0, 0, 40,194, 85, 3, 0, 0, 0, 0, 88,189, 85, 3, 0, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,195, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -120,195, 85, 3, 0, 0, 0, 0,152,194, 85, 3, 0, 0, 0, 0,200,189, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,195, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -232,195, 85, 3, 0, 0, 0, 0, 8,195, 85, 3, 0, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,195, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 88,196, 85, 3, 0, 0, 0, 0,120,195, 85, 3, 0, 0, 0, 0,232,188, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,196, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -200,196, 85, 3, 0, 0, 0, 0,232,195, 85, 3, 0, 0, 0, 0, 56,190, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,196, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 56,197, 85, 3, 0, 0, 0, 0, 88,196, 85, 3, 0, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,197, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -168,197, 85, 3, 0, 0, 0, 0,200,196, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,197, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 24,198, 85, 3, 0, 0, 0, 0, 56,197, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,198, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -136,198, 85, 3, 0, 0, 0, 0,168,197, 85, 3, 0, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,198, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -248,198, 85, 3, 0, 0, 0, 0, 24,198, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,198, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -104,199, 85, 3, 0, 0, 0, 0,136,198, 85, 3, 0, 0, 0, 0, 56,190, 85, 3, 0, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,199, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -216,199, 85, 3, 0, 0, 0, 0,248,198, 85, 3, 0, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,199, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 72,200, 85, 3, 0, 0, 0, 0,104,199, 85, 3, 0, 0, 0, 0,232,188, 85, 3, 0, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,200, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -184,200, 85, 3, 0, 0, 0, 0,216,199, 85, 3, 0, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,200, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 40,201, 85, 3, 0, 0, 0, 0, 72,200, 85, 3, 0, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0,184,193, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,201, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -152,201, 85, 3, 0, 0, 0, 0,184,200, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0,184,193, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,201, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 40,201, 85, 3, 0, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0,184,193, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 8,202, 85, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -216,205, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0, 88,189, 85, 3, 0, 0, 0, 0, -200,189, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 0, 0, - 71, 4, 0, 0, 97, 4, 0, 0, 7, 7,119, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 40,193, 55, 3, 0, 0, 0, 0, -152,201, 86, 3, 0, 0, 0, 0,152,201, 86, 3, 0, 0, 0, 0,248,202, 85, 3, 0, 0, 0, 0,104,204, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,104, 96, 3, 0, 0, 0, 0, 72, 22, 94, 3, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,248,202, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,104,204, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,148, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,238, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, - 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,119, 7, - 26, 0,119, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 0, 0, - 71, 4, 0, 0, 96, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,119, 7, 26, 0, 2, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,195, 55, 3, 0, 0, 0, 0, -120, 77,142, 4, 0, 0, 0, 0,120, 77,142, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56, 24, 94, 3, 0, 0, 0, 0,232, 28, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,104,204, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248,202, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, - 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, - 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 97, 4, 0, 0, 97, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,194, 55, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,216,205, 85, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,152, 94, 86, 3, 0, 0, 0, 0, - 8,202, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0, - 56,190, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, 0, 0, 0, 0,115, 3, 0, 0, - 4, 4, 70, 1,116, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,188, 55, 3, 0, 0, 0, 0, 72, 85, 86, 3, 0, 0, 0, 0, - 24, 93, 86, 3, 0, 0, 0, 0,200,206, 85, 3, 0, 0, 0, 0, 56,208, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200, 22, 94, 3, 0, 0, 0, 0,184, 29, 94, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -200,206, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56,208, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,160, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,163, 67, 0, 0, 0, 0, 0, 0,248, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 70, 1, 31, 0, 70, 1, 31, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, 85, 3, 0, 0,115, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,192, 55, 3, 0, 0, 0, 0,248, 24,142, 4, 0, 0, 0, 0, -248, 24,142, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 31, 94, 3, 0, 0, 0, 0, - 24, 34, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 56,208, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,206, 85, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,163, 67, 0, 64, 85,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,154, 67, 0, 64, 85,196, 0, 0, 0, 0, - 53, 1, 0, 0, 70, 1, 0, 0, 0, 0, 0, 0, 84, 3, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 52, 1, 0, 0, 0, 0, 0, 0, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 70, 1, 85, 3, 53, 1, 85, 3, 0, 0, -104, 88,127, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, 0, 0, 0, 0, 84, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 85, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,189, 55, 3, 0, 0, 0, 0,152, 68,129, 4, 0, 0, 0, 0, - 40, 15, 54, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 35, 94, 3, 0, 0, 0, 0, - 72, 39, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 72, 85, 86, 3, 0, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,184,172,127, 4, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,152, 94, 86, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -152,107, 86, 3, 0, 0, 0, 0,216,205, 85, 3, 0, 0, 0, 0,232,188, 85, 3, 0, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0, -184,193, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, - 0, 0, 0, 0, 91, 0, 0, 0, 15, 15, 48, 6, 92, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,147, 55, 3, 0, 0, 0, 0, -104, 98, 86, 3, 0, 0, 0, 0, 24,106, 86, 3, 0, 0, 0, 0,136, 95, 86, 3, 0, 0, 0, 0,248, 96, 86, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 30, 94, 3, 0, 0, 0, 0, 24, 40, 94, 3, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,136, 95, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,248, 96, 86, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,137, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, - 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, - 26, 0, 48, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 5, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,149, 55, 3, 0, 0, 0, 0, -200,111,129, 4, 0, 0, 0, 0,200,111,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 42, 94, 3, 0, 0, 0, 0,120, 44, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,248, 96, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136, 95, 86, 3, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, - 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 18, 0, 0, 0, 65, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, - 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 48, 6, - 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, - 26, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 66, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,148, 55, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, 45, 94, 3, 0, 0, 0, 0, 56, 51, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,216, 0, 0, 0,104, 98, 86, 3, 0, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,152,107, 86, 3, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,152,126, 86, 3, 0, 0, 0, 0,152, 94, 86, 3, 0, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0, -248,191, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 6, 0, 0,118, 7, 0, 0,117, 3, 0, 0, 69, 4, 0, 0, 3, 3, 70, 1,209, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88,144, 55, 3, 0, 0, 0, 0,104,111, 86, 3, 0, 0, 0, 0, 24,125, 86, 3, 0, 0, 0, 0,136,108, 86, 3, 0, 0, 0, 0, -248,109, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 40, 94, 3, 0, 0, 0, 0, - 8, 52, 94, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,108, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -248,109, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 70, 1, 26, 0, 70, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 6, 0, 0,118, 7, 0, 0, 44, 4, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 70, 1, 26, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104,146, 55, 3, 0, 0, 0, 0, 56,223,128, 4, 0, 0, 0, 0, 56,223,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248, 53, 94, 3, 0, 0, 0, 0,104, 56, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,109, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136,108, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,154, 67, 0, 0, 37,195, 0, 0, 0, 0, 53, 1, 0, 0, 70, 1, 0, 0, 18, 0, 0, 0,182, 0, 0, 0, - 0, 0, 0, 0, 52, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 52, 1, 0, 0, 18, 0, 0, 0,182, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, - 0, 0, 0, 4, 6, 0, 70, 1,183, 0, 53, 1,165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 6, 0, 0,118, 7, 0, 0,117, 3, 0, 0, 43, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 70, 1,183, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120,145, 55, 3, 0, 0, 0, 0,184, 89,128, 4, 0, 0, 0, 0,184, 89,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168, 57, 94, 3, 0, 0, 0, 0, 8, 60, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,104,111, 86, 3, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248, 87,141, 4, 0, 0, 0, 0,248, 87,141, 4, 0, 0, 0, 0,216,112, 86, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 68, 65, 84, 65, 16, 0, 0, 0,216,112, 86, 3, 0, 0, 0, 0,223, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, - 56,113, 86, 3, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0, 56,113, 86, 3, 0, 0, 0, 0,222, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, - 20, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,104,181, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 40,189, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 72,129, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,232,200, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,200,110, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,195, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,232,176, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 8,184, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 24,176, 89, 3, 0, 0, 0, 0, 21, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,152,126, 86, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152,107, 86, 3, 0, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0, -184,193, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0, 69, 4, 0, 0, - 1, 1, 48, 6,233, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 88,150, 55, 3, 0, 0, 0, 0,232,183, 86, 3, 0, 0, 0, 0, -120,200, 86, 3, 0, 0, 0, 0,136,127, 86, 3, 0, 0, 0, 0,200,178, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136, 52, 94, 3, 0, 0, 0, 0, 8, 21, 55, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -136,127, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,248,128, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64,123, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,160, 55, 3, 0, 0, 0, 0,152, 81,128, 4, 0, 0, 0, 0, -152, 81,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 64, 94, 3, 0, 0, 0, 0, - 72, 68, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -248,128, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,200,154, 86, 3, 0, 0, 0, 0,136,127, 86, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 67, 0,192, 37,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0,192, 37,196, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,150, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,150, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,151, 2,143, 0,151, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,175, 1, 0, 0, 69, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,151, 2, 10, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,157, 55, 3, 0, 0, 0, 0,136, 13,129, 4, 0, 0, 0, 0, -136, 13,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 69, 94, 3, 0, 0, 0, 0, -248, 71, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -200,154, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216,157, 86, 3, 0, 0, 0, 0,248,128, 86, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 33, 67, 0,128,157,195, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67,136,135,157,195, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 56, 1,143, 0, 56, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,119, 0, 0, 0,174, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 56, 1, 11, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 56, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,158, 55, 3, 0, 0, 0, 0,248, 8, 54, 3, 0, 0, 0, 0, -248, 8, 54, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 73, 94, 3, 0, 0, 0, 0, -168, 75, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -216,157, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,200,178, 86, 3, 0, 0, 0, 0,200,154, 86, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 52, 67, 0,192,115,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,115,196, 0, 0, 0, 0, -163, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,207, 3,163, 0,207, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,152, 55, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -200,178, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,157, 86, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 5,207, 3, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,151, 55, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,106, 94, 3, 0, 0, 0, 0, -216,105, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,180, 86, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, - 56,180, 86, 3, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,200,120,204, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0,218,205, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, - 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, -164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,177,157,229, 62, 64, 74, 36,191,222,160, 81,191,184,158, 81,191, -115, 90,127, 63,248, 96,158, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188,235, 2,183, 63,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 21,163,108, 65,214,211,111, 65, 39,240,191, 62,125,116, 85, 63, 96,189, 70,188, 0, 0,186,180, - 34,195,128,190, 66, 66,248, 61,254,111, 15, 63, 0, 0,150, 52, 61,119,117,194,106,214,216, 65, 98,162, 5,194,251,254,159,192, - 72, 51,114, 66,244,243,213,193, 71,219, 3, 66,160, 0,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,177,157,229, 62, 64, 74, 36,191,222,160, 81,191,184,158, 81,191, -115, 90,127, 63,248, 96,158, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188,235, 2,183, 63,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 21,163,108, 65,214,211,111, 65, 97,199,184, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 97,199,184, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97,199,184, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, -214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,142, 79,168, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 30, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, -232,183, 86, 3, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0, 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 24, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -205,204,204, 61, 0, 64,156, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 78, 0, 0,208, 0, 0, 0, 40,202, 86, 3, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,184,185, 87, 3, 0, 0, 0, 0, -200,187, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97,109,101, 32, 76, -111,103,105, 99, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72,203, 86, 3, 0, 0, 0, 0,248,208, 86, 3, 0, 0, 0, 0,104,209, 86, 3, 0, 0, 0, 0, 40,218, 86, 3, 0, 0, 0, 0, -152,218, 86, 3, 0, 0, 0, 0,184,150, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,203, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -184,203, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,184,203, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 40,204, 86, 3, 0, 0, 0, 0, - 72,203, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 40,204, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,204, 86, 3, 0, 0, 0, 0,184,203, 86, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,152,204, 86, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 8,205, 86, 3, 0, 0, 0, 0, 40,204, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8,205, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -120,205, 86, 3, 0, 0, 0, 0,152,204, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,120,205, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,232,205, 86, 3, 0, 0, 0, 0, - 8,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -232,205, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 88,206, 86, 3, 0, 0, 0, 0,120,205, 86, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88,206, 86, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0,232,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 56,207, 86, 3, 0, 0, 0, 0, 88,206, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,168,207, 86, 3, 0, 0, 0, 0, -200,206, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -168,207, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24,208, 86, 3, 0, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,124, 3, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24,208, 86, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,136,208, 86, 3, 0, 0, 0, 0,168,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, 3,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136,208, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -248,208, 86, 3, 0, 0, 0, 0, 24,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0, 20, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,248,208, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -104,209, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,209, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184,203, 86, 3, 0, 0, 0, 0, 40,204, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -216,209, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,210, 86, 3, 0, 0, 0, 0,104,209, 86, 3, 0, 0, 0, 0, -184,203, 86, 3, 0, 0, 0, 0, 8,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 72,210, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,210, 86, 3, 0, 0, 0, 0,216,209, 86, 3, 0, 0, 0, 0, - 40,204, 86, 3, 0, 0, 0, 0,120,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -184,210, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40,211, 86, 3, 0, 0, 0, 0, 72,210, 86, 3, 0, 0, 0, 0, - 8,205, 86, 3, 0, 0, 0, 0,120,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 40,211, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152,211, 86, 3, 0, 0, 0, 0,184,210, 86, 3, 0, 0, 0, 0, - 8,205, 86, 3, 0, 0, 0, 0,232,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -152,211, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 8,212, 86, 3, 0, 0, 0, 0, 40,211, 86, 3, 0, 0, 0, 0, -232,205, 86, 3, 0, 0, 0, 0, 88,206, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 8,212, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120,212, 86, 3, 0, 0, 0, 0,152,211, 86, 3, 0, 0, 0, 0, -152,204, 86, 3, 0, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -120,212, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,232,212, 86, 3, 0, 0, 0, 0, 8,212, 86, 3, 0, 0, 0, 0, - 88,206, 86, 3, 0, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -232,212, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88,213, 86, 3, 0, 0, 0, 0,120,212, 86, 3, 0, 0, 0, 0, - 72,203, 86, 3, 0, 0, 0, 0,232,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 88,213, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200,213, 86, 3, 0, 0, 0, 0,232,212, 86, 3, 0, 0, 0, 0, - 72,203, 86, 3, 0, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -200,213, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56,214, 86, 3, 0, 0, 0, 0, 88,213, 86, 3, 0, 0, 0, 0, -120,205, 86, 3, 0, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 56,214, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168,214, 86, 3, 0, 0, 0, 0,200,213, 86, 3, 0, 0, 0, 0, -152,204, 86, 3, 0, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -168,214, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24,215, 86, 3, 0, 0, 0, 0, 56,214, 86, 3, 0, 0, 0, 0, - 88,206, 86, 3, 0, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 24,215, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136,215, 86, 3, 0, 0, 0, 0,168,214, 86, 3, 0, 0, 0, 0, -168,207, 86, 3, 0, 0, 0, 0, 24,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -136,215, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248,215, 86, 3, 0, 0, 0, 0, 24,215, 86, 3, 0, 0, 0, 0, -120,205, 86, 3, 0, 0, 0, 0, 24,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -248,215, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104,216, 86, 3, 0, 0, 0, 0,136,215, 86, 3, 0, 0, 0, 0, - 56,207, 86, 3, 0, 0, 0, 0,168,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -104,216, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,216, 86, 3, 0, 0, 0, 0,248,215, 86, 3, 0, 0, 0, 0, -232,205, 86, 3, 0, 0, 0, 0,136,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -216,216, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,217, 86, 3, 0, 0, 0, 0,104,216, 86, 3, 0, 0, 0, 0, -168,207, 86, 3, 0, 0, 0, 0,136,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 72,217, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,217, 86, 3, 0, 0, 0, 0,216,216, 86, 3, 0, 0, 0, 0, - 8,205, 86, 3, 0, 0, 0, 0,248,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -184,217, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40,218, 86, 3, 0, 0, 0, 0, 72,217, 86, 3, 0, 0, 0, 0, - 24,208, 86, 3, 0, 0, 0, 0,248,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 40,218, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,217, 86, 3, 0, 0, 0, 0, -136,208, 86, 3, 0, 0, 0, 0,248,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -152,218, 86, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104,222, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,205, 86, 3, 0, 0, 0, 0,184,203, 86, 3, 0, 0, 0, 0, 40,204, 86, 3, 0, 0, 0, 0,120,205, 86, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,185, 87, 3, 0, 0, 0, 0, 40,185, 87, 3, 0, 0, 0, 0, -136,219, 86, 3, 0, 0, 0, 0,248,220, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,219, 86, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,248,220, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,220, 86, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,219, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, - 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, - 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, - 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,104,222, 86, 3, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 8, 6, 87, 3, 0, 0, 0, 0,152,218, 86, 3, 0, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0, - 88,206, 86, 3, 0, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0,152,204, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 4, 4,234, 0, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184,245, 86, 3, 0, 0, 0, 0,136, 4, 87, 3, 0, 0, 0, 0, 88,223, 86, 3, 0, 0, 0, 0, -200,224, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88,223, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -200,224, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, - 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 4, 0, 0,254, 4, 0, 0,245, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200,224, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88,223, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, - 0, 0, 0, 0,254,255, 88, 67,254,255,116,195, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, - 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,234, 0,245, 0,217, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -234, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,245, 86, 3, 0, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 8, 6, 87, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8, 79, 87, 3, 0, 0, 0, 0,104,222, 86, 3, 0, 0, 0, 0, - 72,203, 86, 3, 0, 0, 0, 0,232,205, 86, 3, 0, 0, 0, 0, 88,206, 86, 3, 0, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 17, 17, 20, 4, 20, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 12, 87, 3, 0, 0, 0, 0,232, 77, 87, 3, 0, 0, 0, 0, -248, 6, 87, 3, 0, 0, 0, 0,120, 11, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248, 6, 87, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,104, 8, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 8, 87, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,120, 11, 87, 3, 0, 0, 0, 0,248, 6, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 67, - 0, 0,122,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,122,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, - 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, - 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,250, 0,203, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,220, 0,250, 0, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120, 11, 87, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 8, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 68, - 0, 0, 0, 0, 0, 0,112, 67, 4, 0, 39,195, 0,224,180, 68, 1, 0,224,194, 0, 0,176, 67, 39, 3, 0, 0, 56, 3, 0, 0, - 18, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, - 18, 0, 0, 0,249, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, - 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 56, 3,250, 0, 39, 3,232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 3,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 0, 0, 0,232, 12, 87, 3, 0, 0, 0, 0, -178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 8, 79, 87, 3, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,184,110, 87, 3, 0, 0, 0, 0, 8, 6, 87, 3, 0, 0, 0, 0,168,207, 86, 3, 0, 0, 0, 0, - 24,208, 86, 3, 0, 0, 0, 0,120,205, 86, 3, 0, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 9, 9,130, 1,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216, 82, 87, 3, 0, 0, 0, 0, 56,109, 87, 3, 0, 0, 0, 0,248, 79, 87, 3, 0, 0, 0, 0, -104, 81, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248, 79, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -104, 81, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,193, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,181, 67, 0, 0,200, 65, 0,128,181, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,130, 1, 26, 0,130, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -130, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 81, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248, 79, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, - 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0,126, 86, 5, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, - 0, 0, 0, 4, 10, 0,130, 1,140, 1,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, 3, 0, 0,254, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0,216, 82, 87, 3, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184,110, 87, 3, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,184,150, 87, 3, 0, 0, 0, 0, 8, 79, 87, 3, 0, 0, 0, 0,136,208, 86, 3, 0, 0, 0, 0, -248,208, 86, 3, 0, 0, 0, 0, 24,208, 86, 3, 0, 0, 0, 0,168,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 1, 1,167, 2,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232,133, 87, 3, 0, 0, 0, 0,152,149, 87, 3, 0, 0, 0, 0,168,111, 87, 3, 0, 0, 0, 0, -200,128, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,111, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 24,113, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 56, 0,192, 41, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,167, 2, 26, 0,167, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24,113, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -136,114, 87, 3, 0, 0, 0, 0,168,111, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0,213, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0,140, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,114, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -248,115, 87, 3, 0, 0, 0, 0, 24,113, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, - 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0, 47, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,115, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -200,128, 87, 3, 0, 0, 0, 0,136,114, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 23,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,180, 0,112, 2,163, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -123, 3, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200,128, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248,115, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, 2,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56,130, 87, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 56,130, 87, 3, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, -190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, -190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, -149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126,177,113, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, -190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 6, 63,156, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 40, 32, 92, 7, 68, 65, 84, 65, 72, 3, 0, 0, 40, 32, 92, 7,159, 0, 0, 0, 1, 0, 0, 0, + 37,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249,173,116, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0, +221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0, +191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, +223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0, + 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, + 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, + 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, + 80, 25,195, 62,218,249,206, 62, 0,237,196,187, 0, 0, 96,179,234, 2,170,189,191, 98,167, 61, 1,208,111, 62, 0, 0,224, 49, +254,120, 21,194,182, 5, 2, 66, 70,136,213,193,239,214,159,192, 5, 39, 19, 66, 15,174,255,193,217,101,210, 65,219, 40,160, 64, +221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0, +191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, + 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, + 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, +223, 34, 9, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1724,230 +2669,1549 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,232,133, 87, 3, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216, 35, 92, 7,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 7, 0,144,110,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 56, 37, 92, 7, +199, 0, 0, 0, 1, 0, 0, 0, 24, 42, 92, 7,128, 24, 92, 7,176,253,129, 3, 88,251,129, 3, 56,253,129, 3, 40,254,129, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 16, 16, 20, 4,166, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192, 40, 92, 7,192, 40, 92, 7, 0, 38, 92, 7, 96, 39, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0, 38, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 96, 39, 92, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 8,184, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96, 39, 92, 7, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 38, 92, 7, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, +110,142,241,195, 55,199,120, 68,240, 80,128,193,136, 2, 4, 68, 3, 4, 0, 0, 20, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, + 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,236, 81,184, 61, 10,215, 19, 64, 10, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 0, 4, 0, 0, 20, 4,140, 1, 3, 4,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 19, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, - 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 68, 65, 84, 65,244, 0, 0, 0,192, 40, 92, 7,177, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 6, 61,181, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 24, 42, 92, 7,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 56, 37, 92, 7,120,249,129, 3,176,253,129, 3,160,254,129, 3, 24,255,129, 3, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, + 0, 0, 0, 0, 19, 1, 0, 0, 6, 6, 0, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 92, 7, + 0, 47, 92, 7,224, 42, 92, 7,160, 45, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,224, 42, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 64, 44, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 2, 26, 0, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64, 44, 92, 7,200, 0, 0, 0, 1, 0, 0, 0,160, 45, 92, 7, +224, 42, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160, 45, 92, 7, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 44, 92, 7, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0,191, 0, 0,192, 63, 0, 0, 64, 60, 0, 0,125, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,250, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255, 1, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,250, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 33, 0, 0, 0, 47, 92, 7,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0, +100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, 24, 81, 92, 7,195, 0, 0, 0, 1, 0, 0, 0, + 48,100, 92, 7,136,248,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 82, 92, 7, 48, 87, 92, 7,168, 87, 92, 7, + 40, 96, 92, 7,168, 96, 92, 7,128,182, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,105,101,170, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8, 82, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, +128, 82, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128, 82, 92, 7, +196, 0, 0, 0, 1, 0, 0, 0,248, 82, 92, 7, 8, 82, 92, 7, 0, 0, 0, 0, 0, 0,202, 3, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,248, 82, 92, 7,196, 0, 0, 0, 1, 0, 0, 0,112, 83, 92, 7,128, 82, 92, 7, 0, 0, 0, 0,136, 6,202, 3, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,112, 83, 92, 7,196, 0, 0, 0, 1, 0, 0, 0,232, 83, 92, 7,248, 82, 92, 7, + 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232, 83, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, + 96, 84, 92, 7,112, 83, 92, 7, 0, 0, 0, 0, 0, 0,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96, 84, 92, 7, +196, 0, 0, 0, 1, 0, 0, 0,216, 84, 92, 7,232, 83, 92, 7, 0, 0, 0, 0,136, 6,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,216, 84, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, 80, 85, 92, 7, 96, 84, 92, 7, 0, 0, 0, 0,112, 5, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 80, 85, 92, 7,196, 0, 0, 0, 1, 0, 0, 0,200, 85, 92, 7,216, 84, 92, 7, + 0, 0, 0, 0,112, 5,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200, 85, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, + 64, 86, 92, 7, 80, 85, 92, 7, 0, 0, 0, 0,112, 5, 0, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64, 86, 92, 7, +196, 0, 0, 0, 1, 0, 0, 0,184, 86, 92, 7,200, 85, 92, 7, 0, 0, 0, 0,136, 6, 0, 3, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,184, 86, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, 48, 87, 92, 7, 64, 86, 92, 7, 0, 0, 0, 0, 0, 0, 84, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 48, 87, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,184, 86, 92, 7, + 0, 0, 0, 0,112, 5, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 87, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, + 40, 88, 92, 7, 0, 0, 0, 0,128, 82, 92, 7,248, 82, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 40, 88, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 88, 92, 7,168, 87, 92, 7,128, 82, 92, 7,232, 83, 92, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 88, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 40, 89, 92, 7, 40, 88, 92, 7, +248, 82, 92, 7, 96, 84, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 89, 92, 7,197, 0, 0, 0, + 1, 0, 0, 0,168, 89, 92, 7,168, 88, 92, 7,232, 83, 92, 7, 96, 84, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,168, 89, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 40, 90, 92, 7, 40, 89, 92, 7, 8, 82, 92, 7,216, 84, 92, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 90, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 90, 92, 7, +168, 89, 92, 7,112, 83, 92, 7,216, 84, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 90, 92, 7, +197, 0, 0, 0, 1, 0, 0, 0, 40, 91, 92, 7, 40, 90, 92, 7,232, 83, 92, 7, 80, 85, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 40, 91, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 91, 92, 7,168, 90, 92, 7, 96, 84, 92, 7, + 80, 85, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 91, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, + 40, 92, 92, 7, 40, 91, 92, 7,216, 84, 92, 7,200, 85, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 40, 92, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 92, 92, 7,168, 91, 92, 7, 80, 85, 92, 7,200, 85, 92, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 92, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 40, 93, 92, 7, 40, 92, 92, 7, + 96, 84, 92, 7, 64, 86, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 93, 92, 7,197, 0, 0, 0, + 1, 0, 0, 0,168, 93, 92, 7,168, 92, 92, 7,112, 83, 92, 7, 64, 86, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,168, 93, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 40, 94, 92, 7, 40, 93, 92, 7,200, 85, 92, 7, 64, 86, 92, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 94, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 94, 92, 7, +168, 93, 92, 7, 8, 82, 92, 7,184, 86, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 94, 92, 7, +197, 0, 0, 0, 1, 0, 0, 0, 40, 95, 92, 7, 40, 94, 92, 7,232, 83, 92, 7,184, 86, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 40, 95, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 95, 92, 7,168, 94, 92, 7, 80, 85, 92, 7, + 48, 87, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 95, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, + 40, 96, 92, 7, 40, 95, 92, 7,216, 84, 92, 7, 48, 87, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 40, 96, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,168, 95, 92, 7,184, 86, 92, 7, 48, 87, 92, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,168, 96, 92, 7,199, 0, 0, 0, 1, 0, 0, 0, 80,106, 92, 7, 0, 0, 0, 0, +232, 83, 92, 7,128, 82, 92, 7,248, 82, 92, 7, 96, 84, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,176, 3, 0, 0, +202, 3, 0, 0, 7, 7,137, 6, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 8, 0, 24,187,238, 2,224,222, 92, 7,224,222, 92, 7, +112, 97, 92, 7,208, 98, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0,120,157, 76, 3,152,158, 76, 3, 68, 65, 84, 65,248, 0, 0, 0, +112, 97, 92, 7,200, 0, 0, 0, 1, 0, 0, 0,208, 98, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,147, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,136, 6, 0, 0,176, 3, 0, 0,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +137, 6, 26, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +200,188,238, 2, 56,254,255, 2, 56,254,255, 2, 0, 0, 0, 0, 0, 0, 0, 0,168,159, 76, 3,184,161, 76, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208, 98, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,112, 97, 92, 7, + 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, +112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 3, 0, 0,202, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,188,238, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 80,106, 92, 7,199, 0, 0, 0, + 1, 0, 0, 0,224,171, 92, 7,168, 96, 92, 7,216, 84, 92, 7,200, 85, 92, 7, 64, 86, 92, 7,112, 83, 92, 7, 0, 0, 0, 0, +113, 5, 0, 0,136, 6, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 4, 4, 24, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, + 80,183,238, 2,128,164, 92, 7, 64,171, 92, 7, 24,107, 92, 7,120,108, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0,104,162, 76, 3, +136,163, 76, 3, 68, 65, 84, 65,248, 0, 0, 0, 24,107, 92, 7,200, 0, 0, 0, 1, 0, 0, 0,120,108, 92, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,160, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,140, 67, 0, 0, 0, 0, 0, 0,248, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 1, 31, 0, 24, 1, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,113, 5, 0, 0,136, 6, 0, 0,225, 2, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 1, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,186,238, 2, 88,211,255, 2, 88,211,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, +152,164, 76, 3,168,166, 76, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,108, 92, 7,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 24,107, 92, 7, 0, 0, 0, 0, 0, 0,140, 67, 0,128, 86,196, 0, 0, 0, 0, 0, 0, 0, 0, + 1,128,131, 67, 1, 64, 56,196, 0, 0, 0, 0, 7, 1, 0, 0, 24, 1, 0, 0, 0, 0, 0, 0,224, 2, 0, 0, 0, 0, 0, 0, + 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0,224, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, + 6, 0, 24, 1,225, 2, 7, 1,225, 2, 0, 0,168, 73, 67, 3, 1, 0, 0, 0, 0, 0, 0, 0,113, 5, 0, 0,136, 6, 0, 0, + 0, 0, 0, 0,224, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 1,225, 2, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,184,238, 2,112,194, 7, 3, + 56,253, 7, 3,216,109, 92, 7,216,162, 92, 7,216,167, 76, 3,232,169, 76, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0,216,109, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,128,111, 92, 7, 0, 0, 0, 0, 0,185,238, 2, 0, 0, 0, 0, + 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,220,255, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,128,111, 92, 7,198, 0, 0, 0, + 1, 0, 0, 0, 40,113, 92, 7,216,109, 92, 7,120,138,253, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, +110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, +110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 7, 1, 61, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 40,113, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,208,114, 92, 7,128,111, 92, 7, +144,140,253, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 23, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +208,114, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,120,116, 92, 7, 40,113, 92, 7,168,142,253, 2, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101, +110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254, + 7, 1,203, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,120,116, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, + 32,118, 92, 7,208,114, 92, 7,192,144,253, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108, +105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108, +105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254, 7, 1, 58, 0, 20, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184,150, 87, 3, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,110, 87, 3, 0, 0, 0, 0,232,205, 86, 3, 0, 0, 0, 0, - 8,205, 86, 3, 0, 0, 0, 0,248,208, 86, 3, 0, 0, 0, 0,136,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0, 32,118, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,200,119, 92, 7,120,116, 92, 7,216,146,253, 2, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 70,117,108,108, 32, 83, 97,109,112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 34,254, 7, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,200,119, 92, 7, +198, 0, 0, 0, 1, 0, 0, 0,112,121, 92, 7, 32,118, 92, 7,240,148,253, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,253, 7, 1,102, 0, + 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,112,121, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 24,123, 92, 7, +200,119, 92, 7, 8,151,253, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,253, 7, 1,130, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0, 24,123, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,192,124, 92, 7,112,121, 92, 7, 56,155,253, 2, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,242,252, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,192,124, 92, 7,198, 0, 0, 0, + 1, 0, 0, 0,104,126, 92, 7, 24,123, 92, 7, 80,157,253, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111, +115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111, +115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115, +105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218,252, 7, 1, 0, 0, 0, 0, 0, 0, + 4, 0, 6, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,104,126, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 16,128, 92, 7,192,124, 92, 7, +104,159,253, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,252, 7, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, + 16,128, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,184,129, 92, 7,104,126, 92, 7,128,161,253, 2, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,252, + 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,184,129, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, + 96,131, 92, 7, 16,128, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101, +120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101, +120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41,255, 7, 1,179, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0, 96,131, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 8,133, 92, 7,184,129, 92, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 77, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,102,254, 7, 1,171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 8,133, 92, 7, +198, 0, 0, 0, 1, 0, 0, 0,176,134, 92, 7, 96,131, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,110,102,108,117,101,110, 99, +101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,253, 7, 1, 36, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,176,134, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 88,136, 92, 7, + 8,133, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114, +111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114, +111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,117,115,116,111,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,253, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0, 88,136, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 0,138, 92, 7,176,134, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 87,254, 7, 1,186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 0,138, 92, 7,198, 0, 0, 0, + 1, 0, 0, 0,168,139, 92, 7, 88,136, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105, +109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105, +109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,253, 7, 1, 36, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,168,139, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 80,141, 92, 7, 0,138, 92, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 32, 83, 97,109,112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,252, 7, 1,212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, + 80,141, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,248,142, 92, 7,168,139, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103, +101, 32, 77, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, + 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,248,142, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, +160,144, 92, 7, 80,141, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,108,111,114, +115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,108,111,114, +115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,254, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,160,144, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 72,146, 92, 7,248,142, 92, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,161,253, 7, 1,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 72,146, 92, 7, +198, 0, 0, 0, 1, 0, 0, 0,240,147, 92, 7,160,144, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,119,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,119,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,111,100, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139,253, 7, 1,180, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,240,147, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,152,149, 92, 7, + 72,146, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0,152,149, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 64,151, 92, 7,240,147, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,123,253, 7, 1,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 64,151, 92, 7,198, 0, 0, 0, + 1, 0, 0, 0,232,152, 92, 7,152,149, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112, +111,105,110,116,100,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112, +111,105,110,116,100,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,105,110,116, 32, 68,101,110,115,105,116, +121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,253, 7, 1,179, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,232,152, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,144,154, 92, 7, 64,151, 92, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95, +116,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95, +116,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,253, 7, 1,102, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +144,154, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 56,156, 92, 7,232,152, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77,117,115,103, +114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139,253, + 7, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 56,156, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, +224,157, 92, 7,144,154, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,114, 98,108, +101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,114, 98,108, +101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,253, 7, 1,183, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,224,157, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,136,159, 92, 7, 56,156, 92, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 77, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,136,159, 92, 7, +198, 0, 0, 0, 1, 0, 0, 0, 48,161, 92, 7,224,157, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,100,105,115,116,111,114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,100,105,115,116,111,114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,116,111,114,116,101, +100, 32, 78,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211,253, 7, 1,108, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 48,161, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,216,162, 92, 7, +136,159, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,254, 7, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0,216,162, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,161, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,183,253, 7, 1,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,128,164, 92, 7,165, 0, 0, 0, + 1, 0, 0, 0, 64,171, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 96, 95, 67, 3,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,192,165, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 32,167, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,167, 92, 7,200, 0, 0, 0, 1, 0, 0, 0,128,168, 92, 7, +192,165, 92, 7, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, + 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0,149, 3,223, 0, +149, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,168, 92, 7, +200, 0, 0, 0, 1, 0, 0, 0,224,169, 92, 7, 32,167, 92, 7, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, + 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, + 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,153, 5, 60, 0,153, 5, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0, +136, 6, 0, 0, 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, + 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,224,169, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128,168, 92, 7, 0, 0, 0, 0, + 0,128,175, 68, 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0,136, 5, 0, 0, +153, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +135, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 2, 2, 0, 0, 2, 0, 3, 3, 2, 0, 0, 4, 6, 0,153, 5, 89, 3,136, 5, 89, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0, 64,171, 92, 7,168, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,128,164, 92, 7,192,165, 92, 7,224,169, 92, 7, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,224,171, 92, 7,199, 0, 0, 0, 1, 0, 0, 0,136,176, 92, 7, 80,106, 92, 7, 8, 82, 92, 7,184, 86, 92, 7, + 48, 87, 92, 7,216, 84, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 15, 15,112, 5, + 84, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,146,238, 2,104,175, 92, 7,104,175, 92, 7,168,172, 92, 7, 8,174, 92, 7, + 0, 0, 0, 0, 0, 0, 0, 0,152,170, 76, 3,184,171, 76, 3, 68, 65, 84, 65,248, 0, 0, 0,168,172, 92, 7,200, 0, 0, 0, + 1, 0, 0, 0, 8,174, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,137, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0,174, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, + 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,112, 5, 26, 0,112, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 5, 26, 0, 5, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,148,238, 2,216,241, 6, 3, +216,241, 6, 3, 0, 0, 0, 0, 0, 0, 0, 0,200,172, 76, 3,216,174, 76, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 8,174, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,168,172, 92, 7, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, + 18, 0, 0, 0, 57, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, + 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,112, 5, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,112, 5, 58, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,144,147,238, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,176, 76, 3,200,178, 76, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0,104,175, 92, 7,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, +136,176, 92, 7,199, 0, 0, 0, 1, 0, 0, 0,128,182, 92, 7,224,171, 92, 7,200, 85, 92, 7, 80, 85, 92, 7, 96, 84, 92, 7, + 64, 86, 92, 7, 0, 0, 0, 0,113, 5, 0, 0,136, 6, 0, 0, 1, 3, 0, 0,174, 3, 0, 0, 3, 3, 24, 1,174, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48,144,238, 2, 16,180, 92, 7, 16,180, 92, 7, 80,177, 92, 7,176,178, 92, 7, 0, 0, 0, 0, + 0, 0, 0, 0,120,179, 76, 3,152,180, 76, 3, 68, 65, 84, 65,248, 0, 0, 0, 80,177, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, +176,178, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,140, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, + 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 1, + 26, 0, 24, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,113, 5, 0, 0,136, 6, 0, 0,149, 3, 0, 0, +174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 1, 26, 0, 7, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,145,238, 2,128,155,255, 2,128,155,255, 2, + 0, 0, 0, 0, 0, 0, 0, 0,168,181, 76, 3,184,183, 76, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +176,178, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80,177, 92, 7, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0, 2,195, 0, 0, 0, 0, 7, 1, 0, 0, 24, 1, 0, 0, 18, 0, 0, 0, +147, 0, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 18, 0, 0, 0, +147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, + 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 24, 1,148, 0, 7, 1,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +113, 5, 0, 0,136, 6, 0, 0, 1, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 1,148, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32,145,238, 2, 48, 37,255, 2, 48, 37,255, 2, 0, 0, 0, 0, 0, 0, 0, 0,232,184, 76, 3, 72,186, 76, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0, 16,180, 92, 7,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 61, 0, 3, 24, 61, 0, 3, 80,126,252, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 80,126,252, 2, +223, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,112,181, 92, 7, 68, 65, 84, 65,168, 0, 0, 0,112,181, 92, 7, +222, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,208,195, 93, 7, 19, 0, 0, 0, 1, 0, 1, 0,208,195, 93, 7, + 20, 0, 0, 0, 1, 0, 1, 0,208,195, 93, 7, 21, 0, 1, 0, 1, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 1, 0, 1, 0, + 40,108,103, 7, 0, 0, 0, 0, 1, 0, 1, 0,208,114,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, 8,197,104, 7, 0, 0, 0, 0, + 1, 0, 1, 0, 72,124,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, 24, 34,104, 7, 0, 0, 0, 0, 1, 0, 1, 0, 8,120,103, 7, + 0, 0, 0, 0, 1, 0, 1, 0,216,103,103, 7, 0, 0, 0, 0, 1, 0, 1, 0,144,110,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, + 8,103,103, 7, 21, 0, 0, 0, 1, 0, 1, 0,208,195, 93, 7, 68, 65, 84, 65, 96, 0, 0, 0,128,182, 92, 7,199, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,136,176, 92, 7,184, 86, 92, 7,232, 83, 92, 7, 80, 85, 92, 7, 48, 87, 92, 7, 0, 0, 0, 0, + 0, 0, 0, 0,111, 5, 0, 0, 85, 0, 0, 0,174, 3, 0, 0, 1, 1,112, 5, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, + 16,149,238, 2, 96,215, 92, 7, 64,222, 92, 7, 72,183, 92, 7, 80,210, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0,248,186, 76, 3, +200,189, 76, 3, 68, 65, 84, 65,248, 0, 0, 0, 72,183, 92, 7,200, 0, 0, 0, 1, 0, 0, 0,168,184, 92, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,174, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,111, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,112, 5, 26, 0,112, 5, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 5, 26, 0, 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,158,238, 2, 64,114,255, 2, 64,114,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, +216,190, 76, 3,152,193, 76, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,184, 92, 7,200, 0, 0, 0, + 1, 0, 0, 0,232,205, 92, 7, 72,183, 92, 7, 0, 0, 0, 0, 0, 0, 72, 67, 0,128, 31,196, 0, 0, 0, 0, 0, 0, 0, 0, +252,255, 55, 67,252,191, 31,196, 0, 0, 0, 0,184, 0, 0, 0,201, 0, 0, 0, 0, 0, 0, 0,126, 2, 0, 0, 0, 0, 0, 0, +142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,183, 0, 0, 0, 0, 0, 0, 0,126, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, + 6, 0,201, 0,127, 2,184, 0,127, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0, 0, 0, + 48, 1, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 0,127, 2, 10, 0, 5, 0, + 3, 0, 0, 0, 0, 0, 0, 0,201, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,155,238, 2,120,234, 89, 3, +120,234, 89, 3, 8,186, 92, 7, 64,204, 92, 7,200,194, 76, 3,216,196, 76, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0, 8,186, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,176,187, 92, 7, 0, 0, 0, 0,200,193, 68, 3, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 42,254,183, 0,190, 1, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,176,187, 92, 7,198, 0, 0, 0, + 1, 0, 0, 0, 88,189, 92, 7, 8,186, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117,254,183, 0,115, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 88,189, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 0,191, 92, 7,176,187, 92, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101, +120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101, +120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,252,183, 0,213, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, + 0,191, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,168,192, 92, 7, 88,189, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, + 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, + 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,114,111, +107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130,253, +183, 0,195, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,168,192, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, + 80,194, 92, 7, 0,191, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, + 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, + 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,253,183, 0,231, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0, 80,194, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,248,195, 92, 7,168,192, 92, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, + 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, + 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 65,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,210,252,183, 0, 19, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,248,195, 92, 7, +198, 0, 0, 0, 1, 0, 0, 0,160,197, 92, 7, 80,194, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,169,253,183, 0, 36, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,160,197, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 72,199, 92, 7, +248,195, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109, +109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109, +109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142,253,183, 0,135, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0, 72,199, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,240,200, 92, 7,160,197, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,173,253,183, 0, 80, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,240,200, 92, 7,198, 0, 0, 0, + 1, 0, 0, 0,152,202, 92, 7, 72,199, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,101,105,103,104,116, 32, 84,111,111,108,115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108,255,183, 0,124, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,152,202, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 64,204, 92, 7,240,200, 92, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97, +105,110,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97, +105,110,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39,253,183, 0,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, + 64,204, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152,202, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, + 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, + 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,111,106, +101, 99,116, 32, 80, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157,252, +183, 0, 9, 1, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232,205, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, +240,208, 92, 7,168,184, 92, 7, 0, 0, 0, 0, 0, 0, 74, 67, 0, 0, 66,195, 0, 0, 0, 0, 0, 0, 0, 0,203,205, 57, 67, + 97,228, 66,195, 0, 0, 0, 0,184, 0, 0, 0,201, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,183, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,201, 0, +193, 0,184, 0,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0, 0, 0,111, 0, 0, 0, + 47, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 0,193, 0, 11, 0, 6, 0, 34, 0, 0, 0, + 0, 0, 0, 0, 0, 0,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,156,238, 2,144,157,255, 2,144,157,255, 2, + 72,207, 92, 7, 72,207, 92, 7, 8,198, 76, 3, 24,200, 76, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, + 72,207, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,157,238, 2, 0, 0, 0, 0, 86, 73, 69, 87, + 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, + 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,101,114, + 97,116,111,114, 0, 97,105,110,116, 32, 84,111,103,103,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,255, +185, 0, 16, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,208, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, + 80,210, 92, 7,232,205, 92, 7, 0, 0, 0, 0, 0, 0, 52, 67, 0,192,115,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0,192,115,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, +207, 3,163, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0,111, 5, 0, 0,111, 0, 0, 0, +174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,150,238, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 80,210, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240,208, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +201, 0, 0, 0,111, 5, 0, 0,111, 0, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +167, 4, 64, 3, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,150,238, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,215, 76, 3, 32,215, 76, 3, 0, 0, 0, 0, +176,211, 92, 7, 68, 65, 84, 65, 72, 3, 0, 0,176,211, 92, 7,159, 0, 0, 0, 1, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157,104,200, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,218,205, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190, +184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,210,111,193, 0, 0,128, 63, 68,239,209, 62, 70,119,105, 63, +192, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,144, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, + 42, 61,228, 62, 0, 0, 0, 0,164, 95, 68, 65,141,120,173,192,225,208,213, 64, 0, 0,128, 63,177,157,229, 62,126, 6, 33,191, +222,160, 81,191,184,158, 81,191,115, 90,127, 63, 72, 59,155, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188,236, 95,179, 63, +129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,220,161,108, 65,158,210,111, 65,130,240,191, 62,105,116, 85, 63, + 64,183, 70,188, 0, 0, 2,180,196, 95,131,190, 91, 75,253, 61, 97, 88, 18, 63, 0, 0,168, 51,230,117,117,194, 59,213,216, 65, +167,161, 5,194,236,254,159,192,240, 49,114, 66,196,242,213,193,140,218, 3, 66,145, 0,160, 64, 68,239,209, 62, 51,177,205,190, +184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,210,111,193, 0, 0,128, 63,177,157,229, 62,126, 6, 33,191, +222,160, 81,191,184,158, 81,191,115, 90,127, 63, 72, 59,155, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188,236, 95,179, 63, +129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,220,161,108, 65,158,210,111, 65,103,236,220, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,103,236,220, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +103,236,220, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190, +237,203,148,190, 3,236,234,190,158,210,111, 65,222,212, 92, 65, 0, 0, 0, 0, 0, 0, 0, 0,242, 60,201, 58, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 30, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 96,215, 92, 7,160, 0, 0, 0, 1, 0, 0, 0, 64,222, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,144,110,103, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 8, 24, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, + 0, 64,156, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,216, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, + 32,218, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, + 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, + 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0, +174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 32,218, 92, 7,200, 0, 0, 0, 1, 0, 0, 0,128,219, 92, 7,192,216, 92, 7, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0, +148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0, +148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0,149, 3,223, 0,149, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,219, 92, 7,200, 0, 0, 0, 1, 0, 0, 0,224,220, 92, 7, 32,218, 92, 7, + 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,153, 5, 60, 0,153, 5, 60, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,220, 92, 7,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,128,219, 92, 7, 0, 0, 0, 0, 0,128,175, 68, 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0,136, 5, 0, 0,153, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, +135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 2, 0, 3, 3, 2, 0, 0, 4, + 6, 0,153, 5, 89, 3,136, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, + 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 60, 0, 0, 0, 64,222, 92, 7,168, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,215, 92, 7,192,216, 92, 7,224,220, 92, 7, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, 48,100, 92, 7,195, 0, 0, 0, 1, 0, 0, 0, +208, 18, 93, 7, 24, 81, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97,109,101, 32, 76,111,103,105, 99, 0, 46, 48, 48, + 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,223, 92, 7,104,224, 92, 7,224,224, 92, 7, +224,234, 92, 7, 96,235, 92, 7, 80, 12, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120,223, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, + 32,101, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32,101, 92, 7, +196, 0, 0, 0, 1, 0, 0, 0,152,101, 92, 7,120,223, 92, 7, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,152,101, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, 16,102, 92, 7, 32,101, 92, 7, 0, 0, 0, 0,254, 4,214, 2, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 16,102, 92, 7,196, 0, 0, 0, 1, 0, 0, 0,136,102, 92, 7,152,101, 92, 7, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,102, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, + 0,103, 92, 7, 16,102, 92, 7, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0,103, 92, 7, +196, 0, 0, 0, 1, 0, 0, 0,120,103, 92, 7,136,102, 92, 7, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,120,103, 92, 7,196, 0, 0, 0, 1, 0, 0, 0,240,103, 92, 7, 0,103, 92, 7, 0, 0, 0, 0, 0, 0, 20, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,103, 92, 7,196, 0, 0, 0, 1, 0, 0, 0,104,104, 92, 7,120,103, 92, 7, + 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,104, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, +224,104, 92, 7,240,103, 92, 7, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224,104, 92, 7, +196, 0, 0, 0, 1, 0, 0, 0, 88,105, 92, 7,104,104, 92, 7, 0, 0, 0, 0,254, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 88,105, 92, 7,196, 0, 0, 0, 1, 0, 0, 0,208,105, 92, 7,224,104, 92, 7, 0, 0, 0, 0,124, 3, 20, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208,105, 92, 7,196, 0, 0, 0, 1, 0, 0, 0,240,223, 92, 7, 88,105, 92, 7, + 0, 0, 0, 0,124, 3,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,223, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, +104,224, 92, 7,208,105, 92, 7, 0, 0, 0, 0,212, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,224, 92, 7, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240,223, 92, 7, 0, 0, 0, 0,212, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,224,224, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 96,225, 92, 7, 0, 0, 0, 0, 32,101, 92, 7,152,101, 92, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,225, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,224,225, 92, 7, +224,224, 92, 7, 32,101, 92, 7,136,102, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,225, 92, 7, +197, 0, 0, 0, 1, 0, 0, 0, 96,226, 92, 7, 96,225, 92, 7,152,101, 92, 7, 0,103, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 96,226, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,224,226, 92, 7,224,225, 92, 7,136,102, 92, 7, + 0,103, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,226, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, + 96,227, 92, 7, 96,226, 92, 7,136,102, 92, 7,120,103, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 96,227, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,224,227, 92, 7,224,226, 92, 7,120,103, 92, 7,240,103, 92, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,227, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 96,228, 92, 7, 96,227, 92, 7, + 16,102, 92, 7,104,104, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,228, 92, 7,197, 0, 0, 0, + 1, 0, 0, 0,224,228, 92, 7,224,227, 92, 7,240,103, 92, 7,104,104, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,224,228, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 96,229, 92, 7, 96,228, 92, 7,120,103, 92, 7,120,223, 92, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,229, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,224,229, 92, 7, +224,228, 92, 7,104,104, 92, 7,120,223, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,229, 92, 7, +197, 0, 0, 0, 1, 0, 0, 0, 96,230, 92, 7, 96,229, 92, 7, 0,103, 92, 7,224,104, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 96,230, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,224,230, 92, 7,224,229, 92, 7, 16,102, 92, 7, +224,104, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,230, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, + 96,231, 92, 7, 96,230, 92, 7,240,103, 92, 7,224,104, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 96,231, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,224,231, 92, 7,224,230, 92, 7, 88,105, 92, 7,208,105, 92, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,231, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 96,232, 92, 7, 96,231, 92, 7, + 0,103, 92, 7,208,105, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,232, 92, 7,197, 0, 0, 0, + 1, 0, 0, 0,224,232, 92, 7,224,231, 92, 7,224,104, 92, 7, 88,105, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,224,232, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 96,233, 92, 7, 96,232, 92, 7,120,103, 92, 7,240,223, 92, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,233, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,224,233, 92, 7, +224,232, 92, 7, 88,105, 92, 7,240,223, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,233, 92, 7, +197, 0, 0, 0, 1, 0, 0, 0, 96,234, 92, 7, 96,233, 92, 7,136,102, 92, 7,104,224, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 96,234, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,224,234, 92, 7,224,233, 92, 7,208,105, 92, 7, +104,224, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,234, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 96,234, 92, 7,240,223, 92, 7,104,224, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, + 96,235, 92, 7,199, 0, 0, 0, 1, 0, 0, 0,232,238, 92, 7, 0, 0, 0, 0,136,102, 92, 7, 32,101, 92, 7,152,101, 92, 7, + 0,103, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 56, 18, 93, 7, 56, 18, 93, 7, 40,236, 92, 7,136,237, 92, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40,236, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, +136,237, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, + 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, +213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +136,237, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,236, 92, 7, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,232,238, 92, 7,199, 0, 0, 0, 1, 0, 0, 0,176,243, 92, 7, 96,235, 92, 7, +104,104, 92, 7,240,103, 92, 7,224,104, 92, 7, 16,102, 92, 7, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, + 19, 1, 0, 0, 4, 4,234, 0, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,242, 92, 7,112,242, 92, 7, +176,239, 92, 7, 16,241, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +176,239, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 16,241, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, + 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0,245, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,241, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,239, 92, 7, + 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 88, 67,254,255,116,195, 0, 0, 0, 0, +217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0,245, 0,217, 0,245, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,112,242, 92, 7,165, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,176,243, 92, 7,199, 0, 0, 0, 1, 0, 0, 0, 48,249, 92, 7,232,238, 92, 7,120,223, 92, 7,120,103, 92, 7, +240,103, 92, 7,104,104, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 17, 17, 20, 4, + 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,248, 92, 7,152,248, 92, 7,120,244, 92, 7, 56,247, 92, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,244, 92, 7,200, 0, 0, 0, + 1, 0, 0, 0,216,245, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, + 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,216,245, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 56,247, 92, 7,120,244, 92, 7, 0, 0, 0, 0, 0, 0, 92, 67, + 0, 0,122,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,122,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, + 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, + 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,250, 0,203, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,220, 0,250, 0, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,247, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +216,245, 92, 7, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67, 4, 0, 39,195, 0,224,180, 68, 1, 0,224,194, + 0, 0,176, 67, 39, 3, 0, 0, 56, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, + 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 56, 3,250, 0, 39, 3, +232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 3,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 52, 0, 0, 0,152,248, 92, 7, +178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0, 48,249, 92, 7,199, 0, 0, 0, 1, 0, 0, 0,152,255, 92, 7,176,243, 92, 7, 88,105, 92, 7,208,105, 92, 7, + 0,103, 92, 7,224,104, 92, 7, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 9, 9,130, 1, +166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,252, 92, 7,184,252, 92, 7,248,249, 92, 7, 88,251, 92, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,249, 92, 7,200, 0, 0, 0, + 1, 0, 0, 0, 88,251, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0,193, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,181, 67, + 0, 0,200, 65, 0,128,181, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,130, 1, 26, 0,130, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, + 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 88,251, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248,249, 92, 7, 0, 0, 0, 0, 0,128,181, 67, + 0, 0, 0, 0, 0,128,218, 67, 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0,126, 86, 5, 68, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, + 0, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, + 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,130, 1,140, 1,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0,184,252, 92, 7,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, +152,255, 92, 7,199, 0, 0, 0, 1, 0, 0, 0, 80, 12, 93, 7, 48,249, 92, 7,240,223, 92, 7,104,224, 92, 7,208,105, 92, 7, + 88,105, 92, 7, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 1, 1,167, 2,166, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 10, 93, 7,240, 10, 93, 7, 96, 0, 93, 7,224, 5, 93, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96, 0, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, +192, 1, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 56, 0,192, 41, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,167, 2, + 26, 0,167, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, + 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +192, 1, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 32, 3, 93, 7, 96, 0, 93, 7, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, + 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, + 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +213, 0, 0, 0,213, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0,140, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 3, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,128, 4, 93, 7,192, 1, 93, 7, + 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0, 47, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 4, 93, 7,200, 0, 0, 0, + 1, 0, 0, 0,224, 5, 93, 7, 32, 3, 93, 7, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 35, 67, 0,128, 23,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, +162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, + 6, 0,180, 0,112, 2,163, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123, 3, 0, 0,123, 3, 0, 0, + 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,224, 5, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 4, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,167, 2,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 7, 93, 7, 68, 65, 84, 65, 72, 3, 0, 0, 64, 7, 93, 7,159, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,149, 53,207, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126,177,113, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 6, 63,156, 61, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, + 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240, 10, 93, 7,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, +144,110,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 80, 12, 93, 7,199, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,152,255, 92, 7,120,103, 92, 7,136,102, 92, 7,104,224, 92, 7,240,223, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 3, 3,212, 0,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136,154, 87, 3, 0, 0, 0, 0, 8,184, 87, 3, 0, 0, 0, 0,168,151, 87, 3, 0, 0, 0, 0, - 24,153, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,151, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 24,153, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 83, 67, 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,212, 0, 26, 0,212, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,216, 15, 93, 7,216, 15, 93, 7, 24, 13, 93, 7,120, 14, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24, 13, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,120, 14, 93, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 83, 67, 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,212, 0, 26, 0,212, 0, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24,153, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168,151, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, - 0, 0, 80, 66, 0, 0,119, 67, 0, 0,189,195, 0, 0, 0, 0,195, 0, 0, 0,212, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, - 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, - 0, 0, 0, 4, 6, 0,212, 0,140, 1,195, 0,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,211, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,136,154, 87, 3, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120, 14, 93, 7,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 24, 13, 93, 7, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 80, 66, + 0, 0,119, 67, 0, 0,189,195, 0, 0, 0, 0,195, 0, 0, 0,212, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, +194, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, + 6, 0,212, 0,140, 1,195, 0,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, + 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +252, 0, 0, 0,216, 15, 93, 7,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,155, 87, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 30,252, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 68, 65, 84, 65, 16, 0, 0, 0,248,155, 87, 3, 0, 0, 0, 0,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, - 88,156, 87, 3, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 88,156, 87, 3, 0, 0, 0, 0,222, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, - 20, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,104,181, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 40,189, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 72,129, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,232,200, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,200,110, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,195, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,232,176, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 8,184, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 24,176, 89, 3, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,184,185, 87, 3, 0, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,104,164, 88, 3, 0, 0, 0, 0, 40,202, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,186, 87, 3, 0, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0, -104,193, 87, 3, 0, 0, 0, 0, 8,203, 87, 3, 0, 0, 0, 0,120,203, 87, 3, 0, 0, 0, 0,120,129, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,240, 30,252, 2,223, 0, 0, 0, 1, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0, 56, 17, 93, 7, 68, 65, 84, 65,156, 0, 0, 0, 56, 17, 93, 7,222, 0, 0, 0, 13, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0,208,195, 93, 7, 19, 0, 0, 0, 1, 0, 1, 0,208,195, 93, 7, 20, 0, 0, 0, 1, 0, 1, 0, +208,195, 93, 7, 21, 0, 1, 0, 1, 0, 1, 0,208,195, 93, 7, 0, 0, 0, 0, 1, 0, 1, 0, 40,108,103, 7, 0, 0, 0, 0, + 1, 0, 1, 0,208,114,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, 8,197,104, 7, 0, 0, 0, 0, 1, 0, 1, 0, 72,124,103, 7, + 0, 0, 0, 0, 1, 0, 1, 0, 24, 34,104, 7, 0, 0, 0, 0, 1, 0, 1, 0, 8,120,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, +216,103,103, 7, 0, 0, 0, 0, 1, 0, 1, 0,144,110,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, 8,103,103, 7, 83, 78, 0, 0, +140, 0, 0, 0,208, 18, 93, 7,195, 0, 0, 0, 1, 0, 0, 0,248, 82, 93, 7, 48,100, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 82, 83, 99,114,105,112,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,192, 19, 93, 7, 80, 26, 93, 7,200, 26, 93, 7,200, 37, 93, 7, 72, 38, 93, 7,248, 75, 93, 7, 0, 0, 0, 0, + 0, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,192, 19, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, 56, 20, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 56, 20, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,176, 20, 93, 7,192, 19, 93, 7, + 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176, 20, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, + 40, 21, 93, 7, 56, 20, 93, 7, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40, 21, 93, 7, +196, 0, 0, 0, 1, 0, 0, 0,160, 21, 93, 7,176, 20, 93, 7, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,160, 21, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, 24, 22, 93, 7, 40, 21, 93, 7, 0, 0, 0, 0, 0, 0,187, 2, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24, 22, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,144, 22, 93, 7,160, 21, 93, 7, + 0, 0, 0, 0,254, 4,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144, 22, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, + 8, 23, 93, 7, 24, 22, 93, 7, 0, 0, 0, 0,244, 3,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8, 23, 93, 7, +196, 0, 0, 0, 1, 0, 0, 0,128, 23, 93, 7,144, 22, 93, 7, 0, 0, 0, 0,244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,128, 23, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,248, 23, 93, 7, 8, 23, 93, 7, 0, 0, 0, 0, 0, 0, 28, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248, 23, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,112, 24, 93, 7,128, 23, 93, 7, + 0, 0, 0, 0,244, 3, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,112, 24, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, +232, 24, 93, 7,248, 23, 93, 7, 0, 0, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232, 24, 93, 7, +196, 0, 0, 0, 1, 0, 0, 0, 96, 25, 93, 7,112, 24, 93, 7, 0, 0, 0, 0,248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 96, 25, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,216, 25, 93, 7,232, 24, 93, 7, 0, 0, 0, 0,244, 3, 12, 2, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216, 25, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, 80, 26, 93, 7, 96, 25, 93, 7, + 0, 0, 0, 0,254, 4, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 80, 26, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,216, 25, 93, 7, 0, 0, 0, 0,248, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 26, 93, 7, +197, 0, 0, 0, 1, 0, 0, 0, 72, 27, 93, 7, 0, 0, 0, 0, 56, 20, 93, 7,176, 20, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 72, 27, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,200, 27, 93, 7,200, 26, 93, 7, 56, 20, 93, 7, +160, 21, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 27, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, + 72, 28, 93, 7, 72, 27, 93, 7,176, 20, 93, 7, 24, 22, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 72, 28, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,200, 28, 93, 7,200, 27, 93, 7,160, 21, 93, 7, 24, 22, 93, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 28, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 72, 29, 93, 7, 72, 28, 93, 7, + 24, 22, 93, 7,144, 22, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 29, 93, 7,197, 0, 0, 0, + 1, 0, 0, 0,200, 29, 93, 7,200, 28, 93, 7, 40, 21, 93, 7, 8, 23, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,200, 29, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 72, 30, 93, 7, 72, 29, 93, 7,192, 19, 93, 7,128, 23, 93, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 30, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,200, 30, 93, 7, +200, 29, 93, 7,160, 21, 93, 7,128, 23, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 30, 93, 7, +197, 0, 0, 0, 1, 0, 0, 0, 72, 31, 93, 7, 72, 30, 93, 7,144, 22, 93, 7,248, 23, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 72, 31, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,200, 31, 93, 7,200, 30, 93, 7, 8, 23, 93, 7, +248, 23, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 31, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, + 72, 32, 93, 7, 72, 31, 93, 7,192, 19, 93, 7,112, 24, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 72, 32, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,200, 32, 93, 7,200, 31, 93, 7, 8, 23, 93, 7,112, 24, 93, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 32, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 72, 33, 93, 7, 72, 32, 93, 7, +128, 23, 93, 7,232, 24, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 33, 93, 7,197, 0, 0, 0, + 1, 0, 0, 0,200, 33, 93, 7,200, 32, 93, 7,248, 23, 93, 7,232, 24, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,200, 33, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 72, 34, 93, 7, 72, 33, 93, 7,112, 24, 93, 7,232, 24, 93, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 34, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,200, 34, 93, 7, +200, 33, 93, 7, 8, 23, 93, 7, 96, 25, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 34, 93, 7, +197, 0, 0, 0, 1, 0, 0, 0, 72, 35, 93, 7, 72, 34, 93, 7,144, 22, 93, 7, 96, 25, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 72, 35, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,200, 35, 93, 7,200, 34, 93, 7, 24, 22, 93, 7, +216, 25, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 35, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, + 72, 36, 93, 7, 72, 35, 93, 7, 40, 21, 93, 7,216, 25, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 72, 36, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,200, 36, 93, 7,200, 35, 93, 7, 96, 25, 93, 7,216, 25, 93, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 36, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 72, 37, 93, 7, 72, 36, 93, 7, +160, 21, 93, 7, 80, 26, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 37, 93, 7,197, 0, 0, 0, + 1, 0, 0, 0,200, 37, 93, 7,200, 36, 93, 7,144, 22, 93, 7, 80, 26, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,200, 37, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72, 37, 93, 7,232, 24, 93, 7, 80, 26, 93, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 72, 38, 93, 7,199, 0, 0, 0, 1, 0, 0, 0,208, 41, 93, 7, + 0, 0, 0, 0,160, 21, 93, 7, 56, 20, 93, 7,176, 20, 93, 7, 24, 22, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, +188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 96, 82, 93, 7, + 96, 82, 93, 7, 16, 39, 93, 7,112, 40, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 16, 39, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,112, 40, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -216,186, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72,187, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,187, 87, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,184,187, 87, 3, 0, 0, 0, 0,216,186, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,187, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 40,188, 87, 3, 0, 0, 0, 0, 72,187, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 40,188, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0, -184,187, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -152,188, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0, 40,188, 87, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -232,189, 87, 3, 0, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244, 3,187, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,232,189, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0, -120,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 88,190, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0,232,189, 87, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 56,191, 87, 3, 0, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -244, 3, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,191, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -168,191, 87, 3, 0, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0, - 56,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 24,192, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,244, 3, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,104,193, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,193, 87, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 72,187, 87, 3, 0, 0, 0, 0,184,187, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,216,193, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,194, 87, 3, 0, 0, 0, 0, -104,193, 87, 3, 0, 0, 0, 0, 72,187, 87, 3, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 72,194, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,194, 87, 3, 0, 0, 0, 0, -216,193, 87, 3, 0, 0, 0, 0,184,187, 87, 3, 0, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,184,194, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40,195, 87, 3, 0, 0, 0, 0, - 72,194, 87, 3, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 40,195, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152,195, 87, 3, 0, 0, 0, 0, -184,194, 87, 3, 0, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,152,195, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 8,196, 87, 3, 0, 0, 0, 0, - 40,195, 87, 3, 0, 0, 0, 0, 40,188, 87, 3, 0, 0, 0, 0,232,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 8,196, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120,196, 87, 3, 0, 0, 0, 0, -152,195, 87, 3, 0, 0, 0, 0,216,186, 87, 3, 0, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,120,196, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,232,196, 87, 3, 0, 0, 0, 0, - 8,196, 87, 3, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,232,196, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88,197, 87, 3, 0, 0, 0, 0, -120,196, 87, 3, 0, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 88,197, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200,197, 87, 3, 0, 0, 0, 0, -232,196, 87, 3, 0, 0, 0, 0,232,189, 87, 3, 0, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,200,197, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56,198, 87, 3, 0, 0, 0, 0, - 88,197, 87, 3, 0, 0, 0, 0,216,186, 87, 3, 0, 0, 0, 0, 56,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 56,198, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168,198, 87, 3, 0, 0, 0, 0, -200,197, 87, 3, 0, 0, 0, 0,232,189, 87, 3, 0, 0, 0, 0, 56,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,168,198, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24,199, 87, 3, 0, 0, 0, 0, - 56,198, 87, 3, 0, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 24,199, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136,199, 87, 3, 0, 0, 0, 0, -168,198, 87, 3, 0, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,136,199, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248,199, 87, 3, 0, 0, 0, 0, - 24,199, 87, 3, 0, 0, 0, 0, 56,191, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,248,199, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104,200, 87, 3, 0, 0, 0, 0, -136,199, 87, 3, 0, 0, 0, 0,232,189, 87, 3, 0, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,104,200, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,200, 87, 3, 0, 0, 0, 0, -248,199, 87, 3, 0, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,216,200, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,201, 87, 3, 0, 0, 0, 0, -104,200, 87, 3, 0, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 72,201, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,201, 87, 3, 0, 0, 0, 0, -216,200, 87, 3, 0, 0, 0, 0, 40,188, 87, 3, 0, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,184,201, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40,202, 87, 3, 0, 0, 0, 0, - 72,201, 87, 3, 0, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 40,202, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152,202, 87, 3, 0, 0, 0, 0, -184,201, 87, 3, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,152,202, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 8,203, 87, 3, 0, 0, 0, 0, - 40,202, 87, 3, 0, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 8,203, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152,202, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,120,203, 87, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 72,207, 87, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0, 72,187, 87, 3, 0, 0, 0, 0,184,187, 87, 3, 0, 0, 0, 0, - 8,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, - 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,163, 88, 3, 0, 0, 0, 0, -216,163, 88, 3, 0, 0, 0, 0,104,204, 87, 3, 0, 0, 0, 0,216,205, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -104,204, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216,205, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -216,205, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,204, 87, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, -112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112, 40, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 16, 39, 93, 7, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, + 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,208, 41, 93, 7, +199, 0, 0, 0, 1, 0, 0, 0,152, 46, 93, 7, 72, 38, 93, 7, 8, 23, 93, 7, 96, 25, 93, 7,216, 25, 93, 7, 40, 21, 93, 7, + 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 4, 4, 10, 1, 12, 2, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88, 45, 93, 7, 88, 45, 93, 7,152, 42, 93, 7,248, 43, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152, 42, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,248, 43, 93, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, + 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, 31, 0, 10, 1, + 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0,237, 1, 0, 0, 11, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 72,207, 87, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,232,246, 87, 3, 0, 0, 0, 0,120,203, 87, 3, 0, 0, 0, 0, -232,189, 87, 3, 0, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0, 40,188, 87, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 4, 4, 10, 1, 12, 2, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,230, 87, 3, 0, 0, 0, 0,104,245, 87, 3, 0, 0, 0, 0, - 56,208, 87, 3, 0, 0, 0, 0,168,209, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56,208, 87, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,168,209, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, - 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, 31, 0, 10, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0,237, 1, 0, 0, 11, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248, 43, 93, 7, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152, 42, 93, 7, 0, 0, 0, 0, 0,128,132, 67, 0, 64, 80,196, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,120, 67,255,127,246,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, + 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0, 10, 1,237, 1,249, 0,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,209, 87, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,208, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,132, 67, - 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255,120, 67,255,127,246,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, - 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, - 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 10, 1,237, 1,249, 0,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,230, 87, 3, 0, 0, 0, 0, -165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,216, 0, 0, 0, 88, 45, 93, 7,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,152, 46, 93, 7,199, 0, 0, 0, 1, 0, 0, 0, +248, 51, 93, 7,208, 41, 93, 7,112, 24, 93, 7,232, 24, 93, 7,248, 23, 93, 7, 8, 23, 93, 7, 0, 0, 0, 0,249, 1, 0, 0, +243, 3, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,251, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 50, 93, 7, 32, 50, 93, 7, 96, 47, 93, 7,192, 48, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 96, 47, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,192, 48, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,232,246, 87, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8, 30, 88, 3, 0, 0, 0, 0, - 72,207, 87, 3, 0, 0, 0, 0, 56,191, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0, -232,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, - 18, 18,251, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,250, 87, 3, 0, 0, 0, 0, -232, 28, 88, 3, 0, 0, 0, 0,216,247, 87, 3, 0, 0, 0, 0, 72,249, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -216,247, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 72,249, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, +250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192, 48, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 96, 47, 93, 7, 0, 0, 0, 0, 0, 0,253, 67, 0, 0, 0, 0, 0, 0, 48, 65, 0, 0, 0, 0, 0, 0,245, 67, + 0, 0, 0, 0, 0, 0,129, 67,234, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,251, 1, + 2, 1,234, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 26, 0, 0, 0, + 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 72,249, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,247, 87, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,253, 67, 0, 0, 0, 0, 0, 0, 48, 65, 0, 0, 0, 0, 0, 0,245, 67, 0, 0, 0, 0, 0, 0,129, 67, -234, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,233, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,251, 1, 2, 1,234, 1, 2, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 1, 0, 0, -184,250, 87, 3, 0, 0, 0, 0,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0, + 32, 50, 93, 7,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1956,82 +4220,71 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,248, 51, 93, 7,199, 0, 0, 0, 1, 0, 0, 0,176, 64, 93, 7,152, 46, 93, 7,232, 24, 93, 7, 80, 26, 93, 7, +144, 22, 93, 7,248, 23, 93, 7, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 1, 1,251, 1, +158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 63, 93, 7, 80, 63, 93, 7,192, 52, 93, 7, 64, 58, 93, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192, 52, 93, 7,200, 0, 0, 0, + 1, 0, 0, 0, 32, 54, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, + 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, + 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 32, 54, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,128, 55, 93, 7,192, 52, 93, 7, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,249, 1, 0, 0,249, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0,132, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0, 8, 30, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104, 64, 88, 3, 0, 0, 0, 0, -232,246, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0, -200,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, - 1, 1,251, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 41, 88, 3, 0, 0, 0, 0, - 72, 63, 88, 3, 0, 0, 0, 0,248, 30, 88, 3, 0, 0, 0, 0,184, 36, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -248, 30, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,104, 32, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -104, 32, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216, 33, 88, 3, 0, 0, 0, 0,248, 30, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,249, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,132, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -216, 33, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 72, 35, 88, 3, 0, 0, 0, 0,104, 32, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0, 55, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 55, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,224, 56, 93, 7, + 32, 54, 93, 7, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, + 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0, +102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224, 56, 93, 7, +200, 0, 0, 0, 1, 0, 0, 0, 64, 58, 93, 7,128, 55, 93, 7, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243, 3, 0, 0, +243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 72, 35, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,184, 36, 88, 3, 0, 0, 0, 0,216, 33, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0, -163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243, 3, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -184, 36, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 35, 88, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 64, 58, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224, 56, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,251, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160, 59, 93, 7, 68, 65, 84, 65, 72, 3, 0, 0,160, 59, 93, 7,159, 0, 0, 0, 1, 0, 0, 0, + 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,240,182, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, + 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, +185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, +178,157,229, 62,242,252, 18,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62, +145,180,109,188,225,188,163, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, +217,236,191, 62, 54,117, 85, 63, 0,247, 70,188, 0,192, 32,182, 15,232,143,190,210,186, 10, 62, 44, 83, 32, 63, 0,192, 24, 54, +215,104, 25,196,133,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,158, 87,135,195,205,209,166, 67,151,254, 71, 66, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, +178,157,229, 62,242,252, 18,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62, +145,180,109,188,225,188,163, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 38, 88, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, - 40, 38, 88, 3, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 42,240,182, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, - 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, -164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62,242,252, 18,191,222,160, 81,191,184,158, 81,191, -117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, 0,247, 70,188, 0,192, 32,182, - 15,232,143,190,210,186, 10, 62, 44, 83, 32, 63, 0,192, 24, 54,215,104, 25,196,133,132,135, 67, 37, 9,167,195,136,252, 71,194, - 3, 54, 25, 68,158, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62,242,252, 18,191,222,160, 81,191,184,158, 81,191, -117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, -214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,138, 93,108, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, +138, 93,108, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2039,48 +4292,39 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, -216, 41, 88, 3, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0, 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,104, 64, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,136,103, 88, 3, 0, 0, 0, 0, - 8, 30, 88, 3, 0, 0, 0, 0,216,186, 87, 3, 0, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0, - 56,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, - 18, 18,248, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 68, 88, 3, 0, 0, 0, 0, -104,102, 88, 3, 0, 0, 0, 0, 88, 65, 88, 3, 0, 0, 0, 0,200, 66, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 88, 65, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,200, 66, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,231, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 63, 93, 7,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 7, 0,144,110,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,176, 64, 93, 7, +199, 0, 0, 0, 1, 0, 0, 0, 16, 70, 93, 7,248, 51, 93, 7,192, 19, 93, 7,128, 23, 93, 7,232, 24, 93, 7,112, 24, 93, 7, + 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,248, 1, 28, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 68, 93, 7, 56, 68, 93, 7,120, 65, 93, 7,216, 66, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120, 65, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,216, 66, 93, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -200, 66, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 65, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0, 65, 67, 0, 0, 0, 0, 0,128,243, 67, 0, 0, 0, 0, 0, 0,129, 67, -231, 1, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,230, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,248, 1, 2, 1,231, 1, 2, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216, 66, 93, 7, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120, 65, 93, 7, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0, 65, 67, + 0, 0, 0, 0, 0,128,243, 67, 0, 0, 0, 0, 0, 0,129, 67,231, 1, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, + 2, 0, 0, 4, 10, 0,248, 1, 2, 1,231, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +247, 1, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 1, 0, 0, - 56, 68, 88, 3, 0, 0, 0, 0,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, + 68, 65, 84, 65,112, 1, 0, 0, 56, 68, 93, 7,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2088,83 +4332,72 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,121,116,104,111,110, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,121,116,104, +111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16, 70, 93, 7,199, 0, 0, 0, 1, 0, 0, 0,248, 75, 93, 7,176, 64, 93, 7, + 96, 25, 93, 7,144, 22, 93, 7, 24, 22, 93, 7,216, 25, 93, 7, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0, +186, 2, 0, 0, 3, 3, 10, 1,174, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 73, 93, 7,152, 73, 93, 7, +216, 70, 93, 7, 56, 72, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +216, 70, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 56, 72, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,128,149, 67, 0, 0,200, 65, 0,128,149, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, 26, 0, 10, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0, 38, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,136,103, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,120,129, 88, 3, 0, 0, 0, 0, -104, 64, 88, 3, 0, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0, -136,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0,186, 2, 0, 0, - 3, 3, 10, 1,174, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,107, 88, 3, 0, 0, 0, 0, -248,127, 88, 3, 0, 0, 0, 0,120,104, 88, 3, 0, 0, 0, 0,232,105, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -120,104, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,232,105, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,149, 67, 0, 0,200, 65, 0,128,149, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, 26, 0, 10, 1, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0, 38, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -232,105, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,104, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56, 72, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216, 70, 93, 7, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 67, 0, 0, 2,195, 0, 0, 0, 0, 249, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 10, 1,148, 0,249, 0,130, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 39, 2, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 39, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 88,107, 88, 3, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,152, 73, 93, 7,169, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200,108, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,200,108, 88, 3, 0, 0, 0, 0, -223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 40,109, 88, 3, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, - 40,109, 88, 3, 0, 0, 0, 0,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, - 19, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, - 21, 0, 1, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,104,181, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 40,189, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 72,129, 90, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,232,200, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,110, 90, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,200,195, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,232,176, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 24,176, 89, 3, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,120,129, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136,103, 88, 3, 0, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0, -168,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, - 9, 9,248, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,133, 88, 3, 0, 0, 0, 0, -184,162, 88, 3, 0, 0, 0, 0,104,130, 88, 3, 0, 0, 0, 0,216,131, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -104,130, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216,131, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,114,100, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 68, 65, 84, 65, 12, 0, 0, 0, 80,114,100, 3,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,248, 74, 93, 7, + 68, 65, 84, 65,156, 0, 0, 0,248, 74, 93, 7,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,208,195, 93, 7, + 19, 0, 0, 0, 1, 0, 1, 0,208,195, 93, 7, 20, 0, 0, 0, 1, 0, 1, 0,208,195, 93, 7, 21, 0, 1, 0, 1, 0, 1, 0, +208,195, 93, 7, 0, 0, 0, 0, 1, 0, 1, 0, 40,108,103, 7, 0, 0, 0, 0, 1, 0, 1, 0,208,114,103, 7, 0, 0, 0, 0, + 1, 0, 1, 0, 8,197,104, 7, 0, 0, 0, 0, 1, 0, 1, 0, 72,124,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, 24, 34,104, 7, + 0, 0, 0, 0, 1, 0, 1, 0, 8,120,103, 7, 0, 0, 0, 0, 1, 0, 1, 0,216,103,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, +144,110,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, 8,103,103, 7, 68, 65, 84, 65, 96, 0, 0, 0,248, 75, 93, 7,199, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 16, 70, 93, 7,128, 23, 93, 7,160, 21, 93, 7, 80, 26, 93, 7,232, 24, 93, 7, 0, 0, 0, 0, + 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 9, 9,248, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 79, 93, 7,128, 79, 93, 7,192, 76, 93, 7, 32, 78, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192, 76, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 32, 78, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 73, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 78, 93, 7,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,192, 76, 93, 7, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,236,140, 21, 68, + 20, 51,102, 68,120, 83, 49, 67, 68,214,212, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, + 10, 0,248, 1,132, 1,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, + 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -216,131, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,130, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,236,140, 21, 68, 20, 51,102, 68,120, 83, 49, 67, 68,214,212, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +124, 2, 0, 0,128, 79, 93, 7,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +205,204,204, 61,231, 1, 0, 0,243, 1, 0, 0,122, 1, 0, 0,124, 1, 0, 0,231, 1, 0, 0,243, 1, 0, 0, 4, 0, 0, 0, +124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,248, 1,132, 1,248, 1,132, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0, - 72,133, 88, 3, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,231, 1, 0, 0,243, 1, 0, 0, -122, 1, 0, 0,124, 1, 0, 0,231, 1, 0, 0,243, 1, 0, 0, 4, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2177,1210 +4410,20369 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,248, 82, 93, 7,195, 0, 0, 0, 1, 0, 0, 0, +104,148, 93, 7,208, 18, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 83, 93, 7, 48, 87, 93, 7,168, 87, 93, 7, +168, 92, 93, 7, 40, 93, 93, 7, 24,135, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 78, 0, 0,208, 0, 0, 0,104,164, 88, 3, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,248, 10, 89, 3, 0, 0, 0, 0, -184,185, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86, 32, 69,100,105, -116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136,165, 88, 3, 0, 0, 0, 0,152,168, 88, 3, 0, 0, 0, 0, 8,169, 88, 3, 0, 0, 0, 0,104,173, 88, 3, 0, 0, 0, 0, -216,173, 88, 3, 0, 0, 0, 0,120,234, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136,165, 88, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -248,165, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,248,165, 88, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,104,166, 88, 3, 0, 0, 0, 0, -136,165, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -104,166, 88, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,216,166, 88, 3, 0, 0, 0, 0,248,165, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,216,166, 88, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0,104,166, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -184,167, 88, 3, 0, 0, 0, 0,216,166, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0, - 72,167, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 40,168, 88, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,168, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,132, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,152,168, 88, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,169, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -120,169, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,165, 88, 3, 0, 0, 0, 0,104,166, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,169, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -232,169, 88, 3, 0, 0, 0, 0, 8,169, 88, 3, 0, 0, 0, 0,248,165, 88, 3, 0, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,169, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 88,170, 88, 3, 0, 0, 0, 0,120,169, 88, 3, 0, 0, 0, 0,104,166, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,170, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -200,170, 88, 3, 0, 0, 0, 0,232,169, 88, 3, 0, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,170, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 56,171, 88, 3, 0, 0, 0, 0, 88,170, 88, 3, 0, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,171, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -168,171, 88, 3, 0, 0, 0, 0,200,170, 88, 3, 0, 0, 0, 0,136,165, 88, 3, 0, 0, 0, 0,152,168, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,171, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 24,172, 88, 3, 0, 0, 0, 0, 56,171, 88, 3, 0, 0, 0, 0,136,165, 88, 3, 0, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,172, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -136,172, 88, 3, 0, 0, 0, 0,168,171, 88, 3, 0, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0,152,168, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,172, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -248,172, 88, 3, 0, 0, 0, 0, 24,172, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,172, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -104,173, 88, 3, 0, 0, 0, 0,136,172, 88, 3, 0, 0, 0, 0,216,166, 88, 3, 0, 0, 0, 0,152,168, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,173, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248,172, 88, 3, 0, 0, 0, 0,216,166, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,216,173, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -168,177, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0,248,165, 88, 3, 0, 0, 0, 0, -104,166, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, -188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 10, 89, 3, 0, 0, 0, 0,104, 10, 89, 3, 0, 0, 0, 0,200,174, 88, 3, 0, 0, 0, 0, 56,176, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,200,174, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56,176, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, - 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, - 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, -188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 56,176, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200,174, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, - 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, - 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,168,177, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,120,234, 88, 3, 0, 0, 0, 0, -216,173, 88, 3, 0, 0, 0, 0,136,165, 88, 3, 0, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0, -152,168, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, - 6, 6,132, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,184, 88, 3, 0, 0, 0, 0, - 88,233, 88, 3, 0, 0, 0, 0,152,178, 88, 3, 0, 0, 0, 0, 24,183, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -152,178, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 8,180, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 33, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,132, 2, 26, 0,132, 2, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 8,180, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 24,183, 88, 3, 0, 0, 0, 0,152,178, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 91, 67, 0, 0, 40,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 74, 67,254, 63, 40,196, 0, 0, 0, 0, -203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,161, 2,203, 0,161, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,161, 2, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 24,183, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,180, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67,102,102, 38,190,205,204,148, 63, 51, 51, 13,191,154,153,198, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,168, 1, 0, 0, 0, 0, 0, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0,131, 2, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 33, 0, 0, -136,184, 88, 3, 0, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0, -154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -120,234, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,177, 88, 3, 0, 0, 0, 0, -152,168, 88, 3, 0, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0,216,166, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 1, 1,122, 2,187, 2, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 89, 3, 0, 0, 0, 0, 72, 9, 89, 3, 0, 0, 0, 0, -104,235, 88, 3, 0, 0, 0, 0,200,255, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104,235, 88, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,216,236, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 30, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 2, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,122, 2, 26, 0,122, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,122, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216,236, 88, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,136,241, 88, 3, 0, 0, 0, 0,104,235, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 67, - 0, 64, 10,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 10,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 41, 2,143, 0, 41, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0,146, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 41, 2, 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,241, 88, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,152,244, 88, 3, 0, 0, 0, 0,216,236, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 67, - 0, 0,242,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 91, 90,242,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0, 26, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 0, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,244, 88, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,200,255, 88, 3, 0, 0, 0, 0,136,241, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, - 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,255,191,126,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, - 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, 13, 4,163, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200,255, 88, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,244, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 37, 3, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,218, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 1, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 56, 1, 89, 3, 0, 0, 0, 0, -159, 0, 0, 0, 1, 0, 0, 0,193,198,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, - 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, - 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 25, 95,192, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,160, 84, 89,188, 0, 0, 0, 0, 52,177,205,190,142, 74, 70, 62, -166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,188,173, 54, 64,136, 95,161,191, -147,231,198, 63, 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191,130, 71,181, 63,140,225, 88, 62, - 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, -101, 98, 82, 64, 0, 25, 95, 64,101, 47,135, 62,134, 86, 22, 63, 32,243, 11,188, 0, 0,160,179,195, 15,188,190,132, 75, 53, 62, -216,125, 81, 63, 0, 0,192,179,115, 77,100,193, 17,173,201, 64,181,148,248,192,202,247,159,192,233, 74, 87, 65,247, 46,190,192, - 88,106,234, 64, 44, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, - 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 25, 95,192, 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191,130, 71,181, 63,140,225, 88, 62, - 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, -101, 98, 82, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 0, 25, 95, 64, 0, 25, 95, 64, - 0, 0, 0, 0, 0, 0, 0, 0,116, 16, 50, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,232, 4, 89, 3, 0, 0, 0, 0, -160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, - 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, -248, 10, 89, 3, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,164, 88, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105,100,101,111, 32, 69,100,105,116,105,110,103, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 12, 89, 3, 0, 0, 0, 0, -232, 16, 89, 3, 0, 0, 0, 0, 88, 17, 89, 3, 0, 0, 0, 0,200, 24, 89, 3, 0, 0, 0, 0, 56, 25, 89, 3, 0, 0, 0, 0, -152,134, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 24, 12, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136, 12, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -136, 12, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,248, 12, 89, 3, 0, 0, 0, 0, 24, 12, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248, 12, 89, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,104, 13, 89, 3, 0, 0, 0, 0,136, 12, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 13, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -216, 13, 89, 3, 0, 0, 0, 0,248, 12, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0, -104, 13, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 72, 14, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -152, 15, 89, 3, 0, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0, - 40, 15, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 8, 16, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,232, 16, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 52, 2, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232, 16, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 88, 17, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200, 17, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136, 12, 89, 3, 0, 0, 0, 0,248, 12, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,200, 17, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56, 18, 89, 3, 0, 0, 0, 0, - 88, 17, 89, 3, 0, 0, 0, 0,136, 12, 89, 3, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 56, 18, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168, 18, 89, 3, 0, 0, 0, 0, -200, 17, 89, 3, 0, 0, 0, 0,248, 12, 89, 3, 0, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,168, 18, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24, 19, 89, 3, 0, 0, 0, 0, - 56, 18, 89, 3, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 24, 19, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136, 19, 89, 3, 0, 0, 0, 0, -168, 18, 89, 3, 0, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,136, 19, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248, 19, 89, 3, 0, 0, 0, 0, - 24, 19, 89, 3, 0, 0, 0, 0, 24, 12, 89, 3, 0, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,248, 19, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104, 20, 89, 3, 0, 0, 0, 0, -136, 19, 89, 3, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,104, 20, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216, 20, 89, 3, 0, 0, 0, 0, -248, 19, 89, 3, 0, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,216, 20, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72, 21, 89, 3, 0, 0, 0, 0, -104, 20, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 72, 21, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184, 21, 89, 3, 0, 0, 0, 0, -216, 20, 89, 3, 0, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,184, 21, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40, 22, 89, 3, 0, 0, 0, 0, - 72, 21, 89, 3, 0, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0,232, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 40, 22, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152, 22, 89, 3, 0, 0, 0, 0, -184, 21, 89, 3, 0, 0, 0, 0,104, 13, 89, 3, 0, 0, 0, 0,232, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,152, 22, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 8, 23, 89, 3, 0, 0, 0, 0, - 40, 22, 89, 3, 0, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0,232, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 8, 23, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120, 23, 89, 3, 0, 0, 0, 0, -152, 22, 89, 3, 0, 0, 0, 0, 24, 12, 89, 3, 0, 0, 0, 0,104, 13, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,120, 23, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,232, 23, 89, 3, 0, 0, 0, 0, - 8, 23, 89, 3, 0, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,232, 23, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88, 24, 89, 3, 0, 0, 0, 0, -120, 23, 89, 3, 0, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 88, 24, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200, 24, 89, 3, 0, 0, 0, 0, -232, 23, 89, 3, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,200, 24, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 24, 89, 3, 0, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0, 56, 25, 89, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8, 29, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0,136, 12, 89, 3, 0, 0, 0, 0,248, 12, 89, 3, 0, 0, 0, 0, - 72, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, - 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,158, 89, 3, 0, 0, 0, 0, -232,158, 89, 3, 0, 0, 0, 0, 40, 26, 89, 3, 0, 0, 0, 0,152, 27, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 40, 26, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,152, 27, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232, 83, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, + 96, 84, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96, 84, 93, 7, +196, 0, 0, 0, 1, 0, 0, 0,216, 84, 93, 7,232, 83, 93, 7, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,216, 84, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, 80, 85, 93, 7, 96, 84, 93, 7, 0, 0, 0, 0,254, 4,214, 2, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 80, 85, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,200, 85, 93, 7,216, 84, 93, 7, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200, 85, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, + 64, 86, 93, 7, 80, 85, 93, 7, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64, 86, 93, 7, +196, 0, 0, 0, 1, 0, 0, 0,184, 86, 93, 7,200, 85, 93, 7, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,184, 86, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, 48, 87, 93, 7, 64, 86, 93, 7, 0, 0, 0, 0,132, 2,187, 2, + 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 48, 87, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,184, 86, 93, 7, + 0, 0, 0, 0,132, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 87, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, + 40, 88, 93, 7, 0, 0, 0, 0, 96, 84, 93, 7,216, 84, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 40, 88, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 88, 93, 7,168, 87, 93, 7, 96, 84, 93, 7,200, 85, 93, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 88, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 40, 89, 93, 7, 40, 88, 93, 7, +216, 84, 93, 7, 64, 86, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 89, 93, 7,197, 0, 0, 0, + 1, 0, 0, 0,168, 89, 93, 7,168, 88, 93, 7,200, 85, 93, 7, 64, 86, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,168, 89, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 40, 90, 93, 7, 40, 89, 93, 7,200, 85, 93, 7,184, 86, 93, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 90, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 90, 93, 7, +168, 89, 93, 7,232, 83, 93, 7, 48, 87, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 90, 93, 7, +197, 0, 0, 0, 1, 0, 0, 0, 40, 91, 93, 7, 40, 90, 93, 7,232, 83, 93, 7,200, 85, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 40, 91, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 91, 93, 7,168, 90, 93, 7,184, 86, 93, 7, + 48, 87, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 91, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, + 40, 92, 93, 7, 40, 91, 93, 7, 64, 86, 93, 7,184, 86, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 40, 92, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 92, 93, 7,168, 91, 93, 7, 80, 85, 93, 7, 48, 87, 93, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 92, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 92, 93, 7, + 80, 85, 93, 7, 64, 86, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 40, 93, 93, 7,199, 0, 0, 0, + 1, 0, 0, 0,176, 96, 93, 7, 0, 0, 0, 0,200, 85, 93, 7, 96, 84, 93, 7,216, 84, 93, 7, 64, 86, 93, 7, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0,208,147, 93, 7,208,147, 93, 7,240, 93, 93, 7, 80, 95, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240, 93, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 80, 95, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 95, 93, 7,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,240, 93, 93, 7, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, + 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,176, 96, 93, 7,199, 0, 0, 0, 1, 0, 0, 0, 24,135, 93, 7, 40, 93, 93, 7,232, 83, 93, 7,200, 85, 93, 7, +184, 86, 93, 7, 48, 87, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 6, 6,132, 2, +187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,101, 93, 7,152,101, 93, 7,120, 97, 93, 7, 56,100, 93, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120, 97, 93, 7,200, 0, 0, 0, + 1, 0, 0, 0,216, 98, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 33, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, + 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,132, 2, 26, 0,132, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 2, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,216, 98, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 56,100, 93, 7,120, 97, 93, 7, 0, 0, 0, 0, 0, 0, 91, 67, + 0, 0, 40,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 74, 67,254, 63, 40,196, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, + 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, + 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,161, 2,203, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,220, 0,161, 2, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,100, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +216, 98, 93, 7, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67,102,102, 38,190,205,204,148, 63, 51, 51, 13,191, +154,153,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,168, 1, 0, 0, 0, 0, 0, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0,131, 2, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0,152,101, 93, 7, +170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -152, 27, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 26, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, -112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 8, 29, 89, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8, 42, 89, 3, 0, 0, 0, 0, 56, 25, 89, 3, 0, 0, 0, 0, - 24, 12, 89, 3, 0, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0,232, 16, 89, 3, 0, 0, 0, 0,104, 13, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,255, 4, 64, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 32, 89, 3, 0, 0, 0, 0,136, 40, 89, 3, 0, 0, 0, 0, -248, 29, 89, 3, 0, 0, 0, 0,104, 31, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248, 29, 89, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,104, 31, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 31, 89, 3, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 29, 89, 3, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 96, 0, 0, 0, 24,135, 93, 7,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176, 96, 93, 7, 48, 87, 93, 7, +184, 86, 93, 7, 64, 86, 93, 7, 80, 85, 93, 7, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, + 1, 1,122, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,146, 93, 7,112,146, 93, 7,224,135, 93, 7, + 96,141, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,135, 93, 7, +200, 0, 0, 0, 1, 0, 0, 0, 64,137, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0,128, 30, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,122, 2, 26, 0,122, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 2, 26, 0, + 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 64,137, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,160,138, 93, 7,224,135, 93, 7, 0, 0, 0, 0, + 0, 0, 32, 67, 0, 64, 10,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 10,196, 0, 0, 0, 0,143, 0, 0, 0, +160, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +142, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 41, 2,143, 0, 41, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0,146, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 41, 2, 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160,138, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, + 0,140, 93, 7, 64,137, 93, 7, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,242,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, + 91, 90,242,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, +120, 0,143, 0,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0, 26, 0, 0, 0, +145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 0, 0, 6, 0, 34, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 0,140, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 96,141, 93, 7,160,138, 93, 7, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,126,196, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,255,191,126,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, + 12, 4, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, + 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, 13, 4,163, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,141, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,140, 93, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 3, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,142, 93, 7, 68, 65, 84, 65, 72, 3, 0, 0,192,142, 93, 7,159, 0, 0, 0, + 1, 0, 0, 0,193,198,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, + 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, + 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, + 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,160, 84, 89,188, 0, 0, 0, 0, 52,177,205,190,142, 74, 70, 62,166, 33,101, 63, + 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,188,173, 54, 64,136, 95,161,191,147,231,198, 63, + 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191,130, 71,181, 63,140,225, 88, 62, 26, 63,185, 62, + 35, 44,185, 62, 49,192,168,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,101, 98, 82, 64, + 0, 25, 95, 64,101, 47,135, 62,134, 86, 22, 63, 32,243, 11,188, 0, 0,160,179,195, 15,188,190,132, 75, 53, 62,216,125, 81, 63, + 0, 0,192,179,115, 77,100,193, 17,173,201, 64,181,148,248,192,202,247,159,192,233, 74, 87, 65,247, 46,190,192, 88,106,234, 64, + 44, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, + 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, + 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191,130, 71,181, 63,140,225, 88, 62, 26, 63,185, 62, + 35, 44,185, 62, 49,192,168,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,101, 98, 82, 64, + 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 0, 25, 95, 64, 0, 25, 95, 64, 0, 0, 0, 0, + 0, 0, 0, 0,116, 16, 50, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,146, 93, 7,160, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0,144,110,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, +104,148, 93, 7,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248, 82, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105, +100,101,111, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88,149, 93, 7,128,154, 93, 7,248,154, 93, 7,120,163, 93, 7,248,163, 93, 7,176,187, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, +208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 88,149, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,208,149, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,208,149, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, 72,150, 93, 7, 88,149, 93, 7, 0, 0, 0, 0, + 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,150, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,192,150, 93, 7, +208,149, 93, 7, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192,150, 93, 7,196, 0, 0, 0, + 1, 0, 0, 0, 56,151, 93, 7, 72,150, 93, 7, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 56,151, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,176,151, 93, 7,192,150, 93, 7, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,176,151, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, 40,152, 93, 7, 56,151, 93, 7, 0, 0, 0, 0, +254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,152, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,160,152, 93, 7, +176,151, 93, 7, 0, 0, 0, 0,254, 4, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,152, 93, 7,196, 0, 0, 0, + 1, 0, 0, 0, 24,153, 93, 7, 40,152, 93, 7, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 24,153, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,144,153, 93, 7,160,152, 93, 7, 0, 0, 0, 0, 52, 2,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,144,153, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, 8,154, 93, 7, 24,153, 93, 7, 0, 0, 0, 0, + 0, 0, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8,154, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,128,154, 93, 7, +144,153, 93, 7, 0, 0, 0, 0, 52, 2, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128,154, 93, 7,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 8,154, 93, 7, 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +248,154, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,120,155, 93, 7, 0, 0, 0, 0,208,149, 93, 7, 72,150, 93, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,155, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,248,155, 93, 7,248,154, 93, 7, +208,149, 93, 7, 56,151, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,155, 93, 7,197, 0, 0, 0, + 1, 0, 0, 0,120,156, 93, 7,120,155, 93, 7, 72,150, 93, 7,176,151, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,120,156, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,248,156, 93, 7,248,155, 93, 7, 56,151, 93, 7,176,151, 93, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,156, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,120,157, 93, 7, +120,156, 93, 7,176,151, 93, 7, 40,152, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,157, 93, 7, +197, 0, 0, 0, 1, 0, 0, 0,248,157, 93, 7,248,156, 93, 7, 88,149, 93, 7,160,152, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,248,157, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,120,158, 93, 7,120,157, 93, 7, 56,151, 93, 7, + 24,153, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,158, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, +248,158, 93, 7,248,157, 93, 7,160,152, 93, 7,144,153, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +248,158, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,120,159, 93, 7,120,158, 93, 7,144,153, 93, 7, 8,154, 93, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,159, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,248,159, 93, 7,248,158, 93, 7, + 24,153, 93, 7, 8,154, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,159, 93, 7,197, 0, 0, 0, + 1, 0, 0, 0,120,160, 93, 7,120,159, 93, 7, 40,152, 93, 7,128,154, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,120,160, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,248,160, 93, 7,248,159, 93, 7,192,150, 93, 7,128,154, 93, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,160, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,120,161, 93, 7, +120,160, 93, 7,160,152, 93, 7,128,154, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,161, 93, 7, +197, 0, 0, 0, 1, 0, 0, 0,248,161, 93, 7,248,160, 93, 7, 88,149, 93, 7,192,150, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,248,161, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,120,162, 93, 7,120,161, 93, 7,176,151, 93, 7, + 24,153, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,162, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, +248,162, 93, 7,248,161, 93, 7, 40,152, 93, 7, 8,154, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +248,162, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,120,163, 93, 7,120,162, 93, 7, 56,151, 93, 7,144,153, 93, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,163, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248,162, 93, 7, + 40,152, 93, 7,144,153, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,248,163, 93, 7,199, 0, 0, 0, + 1, 0, 0, 0,128,167, 93, 7, 0, 0, 0, 0, 56,151, 93, 7,208,149, 93, 7, 72,150, 93, 7,176,151, 93, 7, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 56,195, 93, 7, 56,195, 93, 7,192,164, 93, 7, 32,166, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,164, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 32,166, 93, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,166, 93, 7,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,192,164, 93, 7, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, + 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,128,167, 93, 7,199, 0, 0, 0, 1, 0, 0, 0, 40,172, 93, 7,248,163, 93, 7, 88,149, 93, 7,160,152, 93, 7, +128,154, 93, 7,192,150, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,255, 4, + 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,171, 93, 7, 8,171, 93, 7, 72,168, 93, 7,168,169, 93, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,168, 93, 7,200, 0, 0, 0, + 1, 0, 0, 0,168,169, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, + 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,168,169, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72,168, 93, 7, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,216, 32, 89, 3, 0, 0, 0, 0, -176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 8,171, 93, 7,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0, 8, 42, 89, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 88, 66, 89, 3, 0, 0, 0, 0, - 8, 29, 89, 3, 0, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0, -232, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 83, 1, 0, 0, - 8, 8,255, 4, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 48, 89, 3, 0, 0, 0, 0, - 56, 65, 89, 3, 0, 0, 0, 0,248, 42, 89, 3, 0, 0, 0, 0, 72, 47, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -248, 42, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,104, 44, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, + 40,172, 93, 7,199, 0, 0, 0, 1, 0, 0, 0,176,179, 93, 7,128,167, 93, 7,160,152, 93, 7,144,153, 93, 7, 40,152, 93, 7, +128,154, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 83, 1, 0, 0, 8, 8,255, 4, 19, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,178, 93, 7,112,178, 93, 7,240,172, 93, 7, 16,177, 93, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,172, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, + 80,174, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 96,191, 68, 0, 0,200, 65, + 0, 96,191, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, + 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, + 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 96,191, 68, 0, 0,200, 65, 0, 96,191, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 90, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 80,174, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,176,175, 93, 7,240,172, 93, 7, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,121,195, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,121,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0, +248, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, +248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,249, 0,203, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 4, 0, 0,254, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +220, 0,249, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -104, 44, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216, 45, 89, 3, 0, 0, 0, 0,248, 42, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,121,195, 0, 0, 0, 0, -203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,249, 0,203, 0,249, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4, 0, 0,254, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,249, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -216, 45, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 72, 47, 89, 3, 0, 0, 0, 0,104, 44, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,175, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 16,177, 93, 7, 80,174, 93, 7, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70, 172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 83, 1, 0, 0, 83, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 83, 1, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,177, 93, 7,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,176,175, 93, 7, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, + 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, + 34, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 0, 0, 32, 65, + 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, + 8, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, + 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 72, 47, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 45, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0, 34, 4, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, - 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, -184, 48, 89, 3, 0, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +216, 0, 0, 0,112,178, 93, 7,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,176,179, 93, 7,199, 0, 0, 0, 1, 0, 0, 0,176,187, 93, 7, + 40,172, 93, 7,144,153, 93, 7, 56,151, 93, 7, 24,153, 93, 7, 8,154, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, + 85, 1, 0, 0,186, 2, 0, 0, 2, 2, 52, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,185, 93, 7, +248,185, 93, 7,120,180, 93, 7,152,184, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,120,180, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,216,181, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 13, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 52, 2, 26, 0, 52, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0, 88, 66, 89, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,152,134, 89, 3, 0, 0, 0, 0, - 8, 42, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0, -120, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, - 2, 2, 52, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 73, 89, 3, 0, 0, 0, 0, -120,133, 89, 3, 0, 0, 0, 0, 72, 67, 89, 3, 0, 0, 0, 0,152, 71, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 72, 67, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,184, 68, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 13, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 52, 2, 26, 0, 52, 2, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -184, 68, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 40, 70, 89, 3, 0, 0, 0, 0, 72, 67, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,157,195, 0, 0, 0, 0, -200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0, 76, 1,200, 0, 58, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,111, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,181, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 56,183, 93, 7, +120,180, 93, 7, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,157,195, + 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0, 76, 1,200, 0, + 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 76, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 40, 70, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,152, 71, 89, 3, 0, 0, 0, 0,184, 68, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,183, 93, 7, +200, 0, 0, 0, 1, 0, 0, 0,152,184, 93, 7,216,181, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, + 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,152,184, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,183, 93, 7, 0, 0, 16,193, + 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, + 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, + 90, 1, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, + 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -152, 71, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 70, 89, 3, 0, 0, 0, 0, - 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, - 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0, 90, 1, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, - 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, - 8, 73, 89, 3, 0, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,248,185, 93, 7,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 74, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 72, 74, 89, 3, 0, 0, 0, 0, 24, 1, 0, 0, 1, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,152,134, 89, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 66, 89, 3, 0, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0, -184, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, - 8, 8,202, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,141, 89, 3, 0, 0, 0, 0, -200,157, 89, 3, 0, 0, 0, 0,136,135, 89, 3, 0, 0, 0, 0,216,139, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -136,135, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,248,136, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,192, 15, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 50, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 64, 50, 68, 0, 0,200, 65, 0, 64, 50, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,202, 2, 26, 0,202, 2, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -248,136, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,104,138, 89, 3, 0, 0, 0, 0,136,135, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,187, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,187, 93, 7, 24, 1, 0, 0, + 1, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,176,187, 93, 7,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,179, 93, 7, 8,154, 93, 7, 24,153, 93, 7, +176,151, 93, 7, 40,152, 93, 7, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, 8, 8,202, 2, +102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,193, 93, 7,248,193, 93, 7,120,188, 93, 7,152,192, 93, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,188, 93, 7,200, 0, 0, 0, + 1, 0, 0, 0,216,189, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 15, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0,128, 50, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 64, 50, 68, + 0, 0,200, 65, 0, 64, 50, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,202, 2, 26, 0,202, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, + 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,216,189, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 56,191, 93, 7,120,188, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -104,138, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216,139, 89, 3, 0, 0, 0, 0,248,136, 89, 3, 0, 0, 0, 0, - 0, 0,112,195, 0, 0,112, 67, 0, 0, 7,195, 0, 0, 7, 67,105, 42,145,196,105, 42,145, 68, 0, 0, 7,196, 0, 0, 7, 68, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70, -172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 4, 0, 0,202, 2, 76, 1,202, 2, 76, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,191, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,152,192, 93, 7, +216,189, 93, 7, 0, 0,112,195, 0, 0,112, 67, 0, 0, 7,195, 0, 0, 7, 67,105, 42,145,196,105, 42,145, 68, 0, 0, 7,196, + 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, + 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 4, 0, 0,202, 2, 76, 1,202, 2, + 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 76, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,192, 93, 7, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,191, 93, 7, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, + 18, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, + 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 0,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -216,139, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,138, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0,201, 2, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, - 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, - 72,141, 89, 3, 0, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,216, 0, 0, 0,248,193, 93, 7,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 0, 0,120, 5, 0, 0,208,195, 93, 7,157, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99,101,110,101, 0,116, 97,103,101, 0, 97,105,110, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,201, 93, 7, 0, 0, 0, 0,144,110,103, 7, 40,108,103, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 48,204, 93, 7, 48,205, 93, 7, 48,204, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 67, 0, 0, 8, 6, 0, 0,120,159, 89, 3, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99,101,110,101, 0, -116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,200,165, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8,184, 89, 3, 0, 0, 0, 0,104,181, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,168, 89, 3, 0, 0, 0, 0, 24,169, 89, 3, 0, 0, 0, 0, 56,168, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,169, 89, 3, 0, 0, 0, 0, -184, 55,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176,205, 93, 7,160, 35, 81, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, -250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 6, 0, 50, 0,141, 0,128, 7, 56, 4, 8, 0, 8, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, 90, 0, 1, 0, - 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,175, 89, 3, 0, 0, 0, 0, 40,175, 89, 3, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 50, 0,141, 0,128, 7, + 56, 4, 8, 0, 8, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, 90, 0, 1, 0, 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,176,211, 93, 7,176,211, 93, 7, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 1, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,116,109,112, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 5, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 5, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 16, 0, 0, 0,128, 63, 0, 0,128, 63, -173, 2, 95, 0,154,153,217, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, 68, 69, 82, 95, 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63,102,166,171, 67, 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144,175, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,141, 90, 3, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 16, 0, 0, 0,128, 63, 0, 0,128, 63,173, 2, 95, 0,154,153,217, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0, +180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, 68, 69, 82, 95, 82, 69, 78, 68, 69, 82, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63,102,166,171, 67, 0, 0,128, 63, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,212, 93, 7, 0, 0, 0, 0, + 0, 0, 0, 0,120,140,100, 3, 1, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 32, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 5, 0, 60, 0, 5, 0, 1, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4,205,204,204, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0,200,165, 89, 3, 0, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,166, 89, 3, 0, 0, 0, 0, -120,166, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -120,166, 89, 3, 0, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 6, 0, 0, 0,110,101,116,119,111,114,107, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,167, 89, 3, 0, 0, 0, 0, 40,167, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 40,167, 89, 3, 0, 0, 0, 0, - 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,101,114,118, -101,114, 95, 97,100,100,114,101,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216,167, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 0, 0, 0, 10, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,216,167, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 91,100,101,102, 97,117,108,116, 93, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,168, 89, 3, 0, 0, 0, 0,133, 0, 0, 0, - 1, 0, 0, 0,168,168, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, -200, 2,231, 1, 40,189, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,168, 89, 3, 0, 0, 0, 0,133, 0, 0, 0, - 1, 0, 0, 0, 24,169, 89, 3, 0, 0, 0, 0, 56,168, 89, 3, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, -152, 3, 37, 3,200,195, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,169, 89, 3, 0, 0, 0, 0,133, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,168, 89, 3, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, -157, 0, 72, 2, 8,184, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65,184, 1, 0, 0,136,169, 89, 3, 0, 0, 0, 0,153, 0, 0, 0, - 1, 0, 0, 0,136,171, 89, 3, 0, 0, 0, 0,152,172, 89, 3, 0, 0, 0, 0,168,173, 89, 3, 0, 0, 0, 0, 0, 0,128, 63, - 1, 0, 1, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, - 32, 0, 32, 0, 32, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,184,174, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, + 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4,205,204,204, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0, +176,201, 93, 7, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96,202, 93, 7, 96,202, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0, + 96,202, 93, 7, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,110,101,116,119,111,114,107, 95, +114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16,203, 93, 7, 16,203, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0, + 16,203, 93, 7, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,101,114,118,101,114, 95, 97, +100,100,114,101,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,203, 93, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, +192,203, 93, 7, 0, 0, 0, 0, 1, 0, 0, 0, 91,100,101,102, 97,117,108,116, 93, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0, + 48,204, 93, 7,133, 0, 0, 0, 1, 0, 0, 0,176,204, 93, 7, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, +119, 0,118, 0,208,114,103, 7, 68, 65, 84, 65, 28, 0, 0, 0,176,204, 93, 7,133, 0, 0, 0, 1, 0, 0, 0, 48,205, 93, 7, + 48,204, 93, 7, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0,224, 46,170, 2, 8,120,103, 7, 68, 65, 84, 65, 28, 0, 0, 0, + 48,205, 93, 7,133, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,204, 93, 7, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, +224, 46,241, 1,144,110,103, 7, 68, 65, 84, 65,144, 1, 0, 0,176,205, 93, 7,153, 0, 0, 0, 1, 0, 0, 0,168,207, 93, 7, +184,208, 93, 7,200,209, 93, 7, 0, 0,128, 63, 1, 0, 1, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63, +111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, 32, 0, 32, 0, 32, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,211, 93, 7, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 10,215, 35, 60,205,204,204, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 0,205,204,204, 61, -205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, 72,225,122, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 0, 0, 0,136,171, 89, 3, 0, 0, 0, 0,152, 0, 0, 0, 1, 0, 0, 0, 24,172, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 0, 0, 0, 24,172, 89, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,184,184, 90, 3, 0, 0, 0, 0, 88,139, 90, 3, 0, 0, 0, 0,184,208, 90, 3, - 0, 0, 0, 0,184,188, 90, 3, 0, 0, 0, 0,184,144, 90, 3, 0, 0, 0, 0,184,180, 90, 3, 0, 0, 0, 0,184,156, 90, 3, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 0, 0, 0,152,172, 89, 3, 0, 0, 0, 0,152, 0, 0, 0, 1, 0, 0, 0, 40,173, 89, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 56, 0, 0, 0, 40,173, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,184,184, 90, 3, 0, 0, 0, 0, 88,139, 90, 3, - 0, 0, 0, 0,184,208, 90, 3, 0, 0, 0, 0,184,188, 90, 3, 0, 0, 0, 0,184,144, 90, 3, 0, 0, 0, 0,184,180, 90, 3, - 0, 0, 0, 0,184,156, 90, 3, 0, 0, 0, 0, 68, 65, 84, 65, 56, 0, 0, 0,168,173, 89, 3, 0, 0, 0, 0,151, 0, 0, 0, - 1, 0, 0, 0, 40,174, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,100,100,128, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 0, 0, 0, 40,174, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,184,160, 90, 3, 0, 0, 0, 0,184,200, 90, 3, - 0, 0, 0, 0,184,192, 90, 3, 0, 0, 0, 0,184,172, 90, 3, 0, 0, 0, 0,184,168, 90, 3, 0, 0, 0, 0,184,176, 90, 3, - 0, 0, 0, 0,184,164, 90, 3, 0, 0, 0, 0,184,148, 90, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,174, 89, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,184,160, 90, 3, 0, 0, 0, 0,184,204, 90, 3, 0, 0, 0, 0,184,152, 90, 3, - 0, 0, 0, 0,184,196, 90, 3, 0, 0, 0, 0, 68, 65, 84, 65, 88, 0, 0, 0, 40,175, 89, 3, 0, 0, 0, 0,139, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 76, 97,121,101,114, 0, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 67, 65, 0, 0, -136, 0, 0, 0, 24,176, 89, 3, 0, 0, 0, 0, 29, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101, -114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63,205,204,204, 61, 0, 0,200, 66, 0, 0, 12, 66,161, 14,234, 64, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, -216, 1, 0, 0,232,176, 89, 3, 0, 0, 0, 0, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 76, 97,109,112, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,247,255,239, 65, 0, 0,150, 66,154,153, 25, 62, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 8,179, 89, 3, 0, 0, 0, 0, 2, 0, 0, 0, 46, 26,128, 63, 25, 4,240, 65, - 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 11, 3, 0, - 1, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111, 18,131, 58, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,248,180, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 8,179, 89, 3, 0, 0, 0, 0, 83, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63,152,180, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,180, 89, 3, 0, 0, 0, 0, 81, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,180, 89, 3, - 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0,232, 1, 0, 0,104,181, 89, 3, - 0, 0, 0, 0,132, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,114, 99, 80, 61,114, 99, 80, 61,114, 99, 80, 61, 0, 0, 0, 0,199, 54, 36, 60,199, 54, 36, 60,199, 54, 36, 60, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0,128, 0, 5, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 64, 0, 0,200, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 61, 0, 0, 5, 0, 0, 0, 0, 0, 10,215,163, 59, 0, 0, 0, 0, 0, 0,128, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,183, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,183, 89, 3, - 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,208, 4, 0, 0, 8,184, 89, 3, - 0, 0, 0, 0,121, 0, 0, 0, 1, 0, 0, 0, 40,189, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,176, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0, -250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222,149, 47, 63, 53, 70, 58, 63, -222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,149, 84, 28,191, - 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 1, 0,128, 63, 1, 0,128, 51, - 1, 0, 0,179, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0,128, 63, 1, 0,128, 51, 0, 0, 0, 0, 2, 0, 0,179, 2, 0, 0,167, - 1, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 53, 1, 0, 0, 41, 1, 0,128,168, 0, 0,128, 63, 0, 0,128, 63,157,190,215, 49, -167,170, 4, 52, 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, 33, 69, 15, 51, 0, 0, 0,128, 73,254, 67, 51,243, 97,106, 49, - 0, 0,128, 63, 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, 0, 0,128, 53, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,187,225, 16, 63, 0, 0,128, 63,205,204,204, 62,237, 54, 32, 63, - 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 10,215, 35, 60, +205,204,204, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 0,205,204,204, 61,205,204,204, 61,102,102,166, 63, 0, 0,192, 63, + 0, 0,240, 65, 72,225,122, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 44, 0, 0, 0,168,207, 93, 7,152, 0, 0, 0, 1, 0, 0, 0, + 56,208, 93, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0, 56,208, 93, 7, 0, 0, 0, 0, 1, 0, 0, 0, + 32, 13,105, 7, 48,208,104, 7,224, 59,105, 7, 96, 17,105, 7, 32,218,104, 7,224, 8,105, 7, 32,235,104, 7, 68, 65, 84, 65, + 44, 0, 0, 0,184,208, 93, 7,152, 0, 0, 0, 1, 0, 0, 0, 72,209, 93, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, +200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 28, 0, 0, 0, 72,209, 93, 7, 0, 0, 0, 0, 1, 0, 0, 0, 32, 13,105, 7, 48,208,104, 7,224, 59,105, 7, 96, 17,105, 7, + 32,218,104, 7,224, 8,105, 7, 32,235,104, 7, 68, 65, 84, 65, 96, 0, 0, 0,200,209, 93, 7,151, 0, 0, 0, 1, 0, 0, 0, +144,210, 93, 7, 5, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,255,100,100,128, 1, 0, 0, 0,129, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0,140,182,110, 66,132,188, 29, 65,150,123, 87, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 68, 0, 0, 0,144,210, 93, 7, 0, 0, 0, 0, 1, 0, 0, 0,224,213,104, 7, 96,222,104, 7,224,230,104, 7, +160,243,104, 7,224,247,104, 7,160, 38,105, 7, 32, 47,105, 7, 96, 51,105, 7, 32, 64,105, 7, 32,252,104, 7, 96, 0,105, 7, +160, 4,105, 7,160, 21,105, 7,224, 25,105, 7, 32, 30,105, 7, 96, 34,105, 7, 96, 68,105, 7, 68, 65, 84, 65, 16, 0, 0, 0, + 56,211, 93, 7, 0, 0, 0, 0, 1, 0, 0, 0, 96,239,104, 7,160, 55,105, 7,160,226,104, 7,224, 42,105, 7, 68, 65, 84, 65, + 72, 0, 0, 0,176,211, 93, 7,139, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 76, 97, +121,101,114, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 73, 77, 0, 0,156, 1, 0, 0, +224,212, 93, 7, 31, 0, 0, 0, 1, 0, 0, 0, 56,120, 94, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, + 46, 99,108, 97,121, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46, 99,108, 97,121, 46,112,110,103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,214, 93, 7, 0, 0, 0, 0,176, 71, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,224,214, 93, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, + 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,104,215, 93, 7,208,231, 93, 7, 68, 65, 84, 65, + 0, 16, 0, 0,104,215, 93, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0,208,231, 93, 7, 0, 0, 0, 0, + 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 61, 60, 60,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 62, 62, 62,255, 61, 61, 61,255, 84, 84, 84,255,103,104,104,255,103,103,103,255,102,102,103,255,101,101,102,255,101,101,101,255, +101,101,101,255,100,100,100,255,100,100,100,255,100,100,100,255,100,100,100,255,100,100,100,255,100,100,100,255,100,100,100,255, +100,100,101,255,100,101,101,255,101,101,101,255,101,101,101,255,101,101,102,255,101,101,101,255,101,101,101,255,101,101,101,255, +101,101,101,255,100,100,100,255, 99, 99,100,255, 99, 99, 99,255, 99, 99, 99,255, 99, 99, 99,255, 99, 99, 99,255, 99, 99, 99,255, + 99, 98, 99,255, 98, 98, 99,255, 98, 98, 99,255, 98, 98, 99,255, 99, 99, 99,255, 99, 99,100,255,100,100,101,255,101,101,101,255, +101,101,102,255,102,102,103,255,103,103,103,255,103,104,104,255,104,105,105,255,105,105,106,255,106,106,107,255,106,106,107,255, +106,106,107,255,106,106,107,255,105,106,106,255,104,105,105,255,101,102,102,255, 97, 97, 97,255, 91, 90, 90,255, 84, 83, 82,255, + 80, 78, 76,255, 78, 75, 73,255, 76, 73, 71,255, 76, 73, 69,255, 75, 72, 69,255, 74, 71, 68,255, 73, 70, 66,255, 71, 68, 64,255, + 70, 66, 62,255, 71, 68, 64,255, 82, 80, 79,255, 98, 98, 98,255,108,108,109,255,114,114,115,255,116,116,118,255,114,115,115,255, +112,112,113,255,110,110,111,255,109,110,110,255,108,108,109,255,107,107,108,255,106,106,107,255,105,105,106,255,104,104,105,255, +103,103,104,255,102,102,103,255,101,101,101,255,100, 99, 99,255, 98, 98, 98,255, 96, 96, 96,255, 94, 93, 93,255, 91, 91, 91,255, + 89, 89, 88,255, 87, 86, 85,255, 84, 83, 82,255, 81, 80, 78,255, 79, 77, 76,255, 77, 74, 72,255, 74, 72, 68,255, 67, 65, 63,255, + 61, 61, 61,255, 60, 60, 60,255,105,105,105,255,145,145,146,255,143,143,144,255,141,142,142,255,140,141,142,255,140,140,141,255, +139,139,140,255,138,138,139,255,138,138,139,255,138,138,139,255,138,138,139,255,138,138,139,255,138,138,139,255,138,138,139,255, +138,138,139,255,138,138,139,255,138,138,138,255,138,138,139,255,138,138,138,255,137,137,138,255,137,137,137,255,136,136,136,255, +136,136,136,255,136,136,136,255,136,136,136,255,136,136,136,255,136,136,136,255,135,135,136,255,135,135,135,255,134,134,134,255, +133,133,133,255,133,132,133,255,132,132,133,255,132,132,133,255,133,133,133,255,134,134,134,255,135,135,135,255,137,137,137,255, +138,138,139,255,139,139,140,255,141,141,142,255,142,142,143,255,143,144,145,255,145,145,146,255,145,145,146,255,145,145,146,255, +144,144,145,255,141,142,143,255,138,138,139,255,131,130,131,255,121,120,119,255,110,108,106,255,102, 99, 95,255, 97, 93, 88,255, + 95, 90, 85,255, 93, 89, 83,255, 93, 88, 84,255, 93, 89, 84,255, 93, 88, 84,255, 91, 87, 83,255, 90, 84, 79,255, 86, 80, 75,255, + 82, 76, 69,255, 78, 72, 63,255, 79, 73, 64,255, 98, 96, 92,255,131,131,132,255,152,153,154,255,161,162,164,255,160,161,163,255, +156,157,158,255,155,156,157,255,153,154,155,255,152,153,154,255,150,151,152,255,149,150,151,255,147,147,148,255,145,145,146,255, +143,143,144,255,141,141,142,255,139,139,140,255,136,136,137,255,134,133,134,255,130,130,130,255,126,126,125,255,122,121,121,255, +117,116,115,255,113,111,109,255,107,105,103,255,102, 99, 96,255, 97, 94, 90,255, 92, 88, 84,255, 86, 81, 75,255, 72, 70, 65,255, + 61, 61, 61,255, 60, 60, 60,255,105,105,106,255,146,146,147,255,143,145,146,255,142,143,144,255,142,142,143,255,141,141,142,255, +140,140,141,255,140,140,141,255,139,140,140,255,139,140,140,255,139,140,140,255,139,140,140,255,139,139,140,255,139,139,140,255, +139,139,139,255,139,139,139,255,138,138,139,255,138,138,138,255,137,137,137,255,137,137,137,255,137,137,137,255,137,137,137,255, +137,137,137,255,137,137,137,255,137,137,137,255,137,136,137,255,136,136,136,255,135,135,135,255,134,134,134,255,133,132,133,255, +131,131,131,255,130,130,130,255,129,128,129,255,129,128,129,255,129,129,129,255,129,129,129,255,131,131,131,255,132,132,132,255, +133,133,134,255,135,135,136,255,136,136,137,255,137,137,138,255,138,139,138,255,138,138,139,255,138,137,138,255,136,136,136,255, +132,131,131,255,126,126,126,255,119,118,116,255,110,109,107,255,104,101, 99,255,101, 97, 94,255,100, 96, 93,255,100, 97, 93,255, +101, 97, 94,255,101, 98, 95,255,102, 98, 96,255,100, 98, 95,255, 99, 96, 93,255, 98, 95, 92,255, 96, 92, 88,255, 92, 88, 84,255, + 89, 84, 80,255, 85, 79, 73,255, 78, 73, 64,255, 74, 66, 58,255, 91, 86, 81,255,125,124,124,255,147,147,149,255,152,153,155,255, +152,152,153,255,151,152,153,255,151,152,153,255,151,152,153,255,151,151,152,255,149,150,151,255,147,148,149,255,146,147,148,255, +143,144,145,255,142,142,143,255,140,140,141,255,137,137,138,255,134,134,135,255,132,131,132,255,128,128,128,255,124,124,123,255, +120,119,119,255,116,114,114,255,111,108,107,255,105,103,101,255, 99, 96, 93,255, 94, 90, 85,255, 87, 82, 76,255, 73, 70, 65,255, + 61, 61, 61,255, 60, 60, 60,255,106,106,107,255,147,147,149,255,145,145,147,255,144,145,146,255,142,143,144,255,142,142,143,255, +141,142,142,255,141,141,142,255,141,141,142,255,141,141,142,255,141,141,142,255,141,140,142,255,140,141,141,255,140,140,141,255, +139,140,140,255,139,139,140,255,138,139,139,255,138,138,139,255,138,138,138,255,138,138,139,255,138,138,139,255,139,139,139,255, +138,138,139,255,138,138,139,255,138,138,138,255,137,137,137,255,136,136,136,255,134,134,134,255,133,132,133,255,130,130,131,255, +128,128,128,255,126,126,126,255,125,124,124,255,123,122,122,255,123,122,123,255,123,123,122,255,124,123,123,255,126,125,125,255, +127,126,126,255,128,128,128,255,129,129,129,255,129,129,129,255,129,129,129,255,128,127,128,255,126,125,124,255,122,121,120,255, +117,116,115,255,112,111,109,255,109,106,104,255,106,104,101,255,106,103,100,255,107,104,102,255,108,105,103,255,109,106,105,255, +110,107,106,255,110,107,106,255,108,107,105,255,107,105,104,255,106,103,102,255,103,100, 98,255,100, 97, 94,255, 96, 94, 90,255, + 94, 90, 86,255, 90, 86, 82,255, 86, 81, 75,255, 79, 72, 64,255, 73, 67, 57,255, 91, 86, 82,255,126,124,124,255,141,142,143,255, +145,145,146,255,147,147,148,255,148,149,150,255,150,150,152,255,150,151,152,255,149,150,151,255,148,149,151,255,147,148,149,255, +145,145,146,255,143,143,144,255,141,141,142,255,139,139,139,255,136,136,137,255,133,134,133,255,130,130,130,255,127,126,126,255, +123,122,122,255,119,118,118,255,115,113,112,255,109,108,106,255,104,101, 99,255, 98, 94, 91,255, 91, 86, 81,255, 74, 71, 67,255, + 61, 61, 61,255, 60, 60, 60,255,106,107,107,255,147,148,149,255,146,146,147,255,144,145,146,255,144,144,145,255,142,143,143,255, +142,142,143,255,141,142,142,255,140,142,141,255,141,142,142,255,141,142,142,255,140,141,142,255,140,142,142,255,141,140,142,255, +140,140,141,255,140,140,141,255,139,139,140,255,139,140,140,255,139,139,140,255,140,140,140,255,140,140,140,255,140,140,140,255, +139,139,140,255,138,139,140,255,138,138,138,255,137,136,137,255,135,134,135,255,133,132,132,255,130,129,130,255,128,127,127,255, +125,124,124,255,122,121,122,255,120,119,119,255,118,117,116,255,117,116,115,255,116,114,115,255,116,114,114,255,116,115,114,255, +117,116,116,255,117,116,116,255,117,117,117,255,118,117,116,255,117,115,115,255,115,113,112,255,114,112,111,255,111,109,108,255, +110,108,105,255,110,107,106,255,110,108,106,255,111,109,107,255,113,110,109,255,115,113,112,255,116,115,114,255,118,116,116,255, +117,116,115,255,117,115,115,255,115,113,112,255,113,112,110,255,111,109,107,255,108,106,104,255,105,102,100,255,101, 98, 96,255, + 97, 94, 92,255, 94, 91, 88,255, 91, 87, 83,255, 86, 81, 75,255, 78, 72, 62,255, 73, 66, 57,255, 94, 90, 85,255,125,124,124,255, +135,135,136,255,140,140,141,255,144,144,145,255,147,147,148,255,149,150,151,255,150,150,152,255,149,150,151,255,148,148,150,255, +146,147,148,255,144,145,146,255,142,142,143,255,140,140,141,255,138,138,139,255,135,135,136,255,133,133,132,255,130,129,129,255, +126,126,126,255,122,122,121,255,119,118,117,255,115,113,112,255,109,107,106,255,103,100, 98,255, 96, 92, 89,255, 76, 74, 71,255, + 61, 61, 61,255, 60, 60, 60,255,106,107,107,255,148,148,149,255,146,146,147,255,145,145,146,255,144,144,145,255,142,143,143,255, +142,142,143,255,141,142,142,255,140,142,141,255,141,141,142,255,140,141,141,255,142,142,143,255,141,141,143,255,141,142,142,255, +141,142,142,255,141,141,142,255,141,142,142,255,141,142,142,255,142,142,143,255,142,142,143,255,141,142,142,255,141,141,142,255, +139,140,140,255,138,139,139,255,137,138,138,255,135,135,135,255,132,132,132,255,129,129,129,255,128,127,127,255,124,123,123,255, +121,120,120,255,118,117,116,255,116,114,114,255,113,111,111,255,110,109,108,255,110,108,107,255,108,107,106,255,108,107,106,255, +108,106,105,255,108,106,104,255,107,105,103,255,107,105,103,255,107,105,103,255,107,105,103,255,108,105,104,255,110,108,106,255, +113,111,109,255,114,112,111,255,116,115,114,255,119,118,117,255,121,120,120,255,123,122,121,255,124,123,122,255,123,123,122,255, +123,122,122,255,122,121,121,255,121,120,119,255,119,117,116,255,116,114,113,255,112,111,109,255,109,107,106,255,105,103,101,255, +101, 99, 96,255, 98, 95, 92,255, 94, 91, 88,255, 91, 87, 83,255, 84, 78, 72,255, 74, 68, 59,255, 72, 67, 58,255, 99, 96, 92,255, +121,120,119,255,130,130,131,255,137,137,138,255,143,142,144,255,146,147,148,255,148,149,150,255,149,149,150,255,149,150,151,255, +147,148,149,255,145,146,147,255,143,144,145,255,141,141,142,255,139,139,140,255,137,137,138,255,134,134,135,255,131,132,132,255, +129,129,129,255,126,125,125,255,122,121,121,255,119,118,117,255,115,113,112,255,109,107,106,255,103,100, 97,255, 79, 78, 76,255, + 61, 61, 61,255, 60, 60, 60,255,106,107,107,255,147,148,149,255,146,146,147,255,144,144,145,255,143,144,144,255,142,143,143,255, +141,142,142,255,141,141,142,255,141,141,142,255,141,141,142,255,140,140,141,255,141,142,142,255,141,141,143,255,142,142,143,255, +142,142,143,255,142,143,143,255,142,142,143,255,142,143,143,255,141,143,144,255,142,143,143,255,141,141,142,255,140,140,141,255, +139,139,139,255,137,137,137,255,135,135,135,255,133,132,132,255,130,129,129,255,128,127,127,255,124,124,123,255,121,120,120,255, +119,117,117,255,115,114,114,255,113,111,110,255,110,108,108,255,108,105,104,255,106,103,102,255,104,101, 99,255,103,101, 99,255, +102,100, 98,255,102, 99, 97,255,102, 99, 97,255,103,100, 98,255,104,101, 99,255,106,104,103,255,110,108,106,255,114,112,111,255, +118,116,116,255,121,120,119,255,123,123,122,255,126,125,125,255,128,127,127,255,129,128,128,255,130,129,130,255,130,129,129,255, +129,128,128,255,127,127,127,255,126,125,125,255,125,124,123,255,122,120,120,255,117,116,115,255,113,112,111,255,110,108,106,255, +106,103,101,255,102, 99, 97,255, 98, 95, 92,255, 95, 91, 88,255, 90, 86, 81,255, 82, 76, 68,255, 73, 66, 57,255, 77, 71, 64,255, +102, 98, 96,255,119,118,116,255,129,129,128,255,137,136,137,255,142,143,144,255,146,146,147,255,148,149,150,255,149,149,151,255, +148,148,149,255,146,148,149,255,145,145,146,255,142,143,144,255,140,141,142,255,138,138,139,255,136,136,137,255,134,134,134,255, +132,131,131,255,128,128,128,255,125,125,124,255,122,121,121,255,119,118,117,255,115,113,112,255,109,107,105,255, 83, 82, 81,255, + 61, 61, 61,255, 60, 60, 60,255,106,106,107,255,147,147,148,255,144,145,146,255,143,144,144,255,142,143,144,255,140,141,141,255, +141,141,142,255,140,140,141,255,140,140,141,255,139,140,140,255,141,141,142,255,141,141,142,255,142,142,143,255,141,141,142,255, +142,143,144,255,143,143,144,255,143,143,144,255,141,143,144,255,142,143,143,255,142,142,142,255,140,141,141,255,139,139,140,255, +137,137,138,255,135,135,136,255,133,133,133,255,130,130,130,255,129,128,127,255,126,125,124,255,122,121,121,255,120,119,118,255, +117,115,115,255,114,112,111,255,112,109,109,255,109,108,106,255,107,105,104,255,105,103,101,255,104,102, 99,255,103,100, 99,255, +102, 99, 98,255,102,100, 98,255,104,100, 98,255,105,102,100,255,107,104,103,255,110,108,107,255,115,113,113,255,120,119,118,255, +124,123,123,255,128,127,127,255,131,130,130,255,133,133,132,255,134,134,135,255,135,135,135,255,135,135,135,255,135,135,135,255, +134,134,134,255,133,133,133,255,131,131,131,255,129,129,129,255,126,126,126,255,123,122,122,255,119,118,117,255,114,113,112,255, +110,109,107,255,106,104,102,255,102, 99, 97,255, 99, 96, 93,255, 95, 90, 87,255, 88, 84, 79,255, 79, 73, 64,255, 72, 65, 57,255, + 82, 77, 70,255,104,101, 99,255,119,117,117,255,129,128,129,255,137,137,138,255,143,143,144,255,145,146,147,255,148,148,150,255, +148,149,150,255,147,148,149,255,145,146,147,255,144,144,145,255,142,142,143,255,139,139,140,255,138,138,138,255,136,135,136,255, +133,133,133,255,131,131,131,255,128,128,128,255,126,125,125,255,122,121,121,255,119,117,117,255,114,112,111,255, 86, 85, 84,255, + 61, 61, 61,255, 60, 60, 60,255,106,106,107,255,146,147,148,255,144,144,145,255,143,143,144,255,141,141,142,255,140,140,141,255, +139,139,140,255,139,139,140,255,138,138,139,255,139,139,140,255,139,139,140,255,140,140,141,255,141,141,142,255,141,142,142,255, +141,142,143,255,142,142,143,255,141,142,143,255,141,142,142,255,141,141,142,255,140,140,141,255,139,139,140,255,137,137,138,255, +136,136,136,255,134,133,133,255,132,131,132,255,129,129,129,255,127,126,126,255,125,124,123,255,122,121,120,255,120,117,117,255, +116,115,114,255,113,112,111,255,111,110,109,255,109,108,106,255,108,106,104,255,106,104,103,255,105,103,102,255,105,102,101,255, +105,102,101,255,105,103,101,255,107,105,103,255,109,106,105,255,111,109,108,255,116,114,113,255,120,119,119,255,125,124,125,255, +131,130,130,255,134,134,134,255,137,137,137,255,138,138,139,255,139,140,140,255,140,141,141,255,141,141,142,255,140,141,141,255, +140,140,141,255,138,138,139,255,137,136,137,255,134,134,134,255,132,131,131,255,128,128,127,255,124,123,123,255,120,119,118,255, +115,113,112,255,111,109,108,255,106,104,102,255,102,100, 97,255, 99, 96, 93,255, 95, 90, 87,255, 87, 81, 76,255, 76, 70, 60,255, + 72, 66, 57,255, 87, 83, 76,255,106,104,102,255,120,119,119,255,130,130,130,255,137,138,138,255,142,143,143,255,145,146,147,255, +147,147,148,255,147,148,149,255,147,146,148,255,145,145,146,255,143,143,144,255,141,141,142,255,139,139,139,255,136,136,137,255, +134,134,135,255,132,132,132,255,130,129,129,255,128,127,127,255,125,124,124,255,122,121,121,255,118,117,116,255, 89, 88, 87,255, + 61, 61, 61,255, 60, 60, 60,255,106,106,106,255,146,146,147,255,144,144,145,255,142,142,143,255,140,141,141,255,139,139,140,255, +138,138,138,255,138,138,138,255,137,138,138,255,138,138,138,255,138,138,139,255,139,139,139,255,140,140,141,255,140,140,141,255, +141,141,142,255,141,141,142,255,141,141,141,255,140,140,141,255,139,140,140,255,138,138,138,255,137,137,137,255,135,135,136,255, +134,134,134,255,132,132,132,255,131,130,130,255,129,128,128,255,126,126,125,255,124,124,123,255,122,121,120,255,119,118,117,255, +117,115,114,255,115,113,112,255,113,111,110,255,111,109,108,255,110,108,107,255,109,107,105,255,108,106,105,255,109,106,105,255, +109,106,105,255,109,107,105,255,110,109,108,255,113,111,110,255,116,115,114,255,121,119,119,255,126,125,125,255,131,130,131,255, +135,135,136,255,139,139,140,255,142,142,143,255,143,144,145,255,145,145,146,255,145,146,147,255,145,146,147,255,145,146,147,255, +144,144,145,255,143,143,144,255,141,142,142,255,139,139,140,255,137,136,137,255,134,134,134,255,130,128,129,255,125,124,124,255, +121,119,119,255,115,114,113,255,111,109,108,255,107,105,103,255,103,100, 98,255, 99, 96, 93,255, 93, 89, 86,255, 84, 78, 71,255, + 74, 68, 58,255, 76, 69, 60,255, 92, 88, 83,255,108,107,106,255,122,121,121,255,131,131,131,255,138,138,138,255,142,142,143,255, +145,145,146,255,146,147,148,255,147,147,148,255,145,146,147,255,144,145,146,255,142,142,143,255,139,139,140,255,138,138,138,255, +135,135,135,255,133,133,133,255,132,131,131,255,129,129,129,255,126,126,126,255,124,123,123,255,121,120,120,255, 91, 89, 89,255, + 61, 61, 61,255, 60, 60, 60,255,106,106,106,255,145,146,147,255,143,143,144,255,141,142,143,255,140,140,141,255,138,138,139,255, +137,137,138,255,137,137,137,255,136,136,137,255,135,136,137,255,137,137,137,255,137,137,137,255,138,138,138,255,139,139,139,255, +139,139,140,255,139,139,140,255,139,139,140,255,138,138,139,255,137,137,138,255,137,137,136,255,135,135,135,255,134,134,134,255, +133,132,133,255,131,131,131,255,130,130,130,255,128,128,127,255,127,126,126,255,125,124,124,255,123,122,121,255,120,119,118,255, +118,117,116,255,116,114,114,255,114,113,112,255,114,112,111,255,111,109,109,255,111,109,108,255,111,109,108,255,110,109,108,255, +111,109,108,255,112,110,109,255,114,112,112,255,117,115,115,255,120,119,118,255,124,125,124,255,130,130,130,255,135,135,135,255, +140,140,141,255,144,144,145,255,146,147,148,255,148,149,151,255,149,150,151,255,149,150,152,255,150,150,152,255,149,150,151,255, +148,149,150,255,147,148,149,255,145,146,147,255,143,144,145,255,140,141,142,255,138,138,139,255,134,134,135,255,130,130,130,255, +125,125,125,255,121,120,120,255,116,114,114,255,111,110,109,255,108,106,104,255,104,101, 99,255, 99, 96, 93,255, 92, 87, 83,255, + 81, 75, 67,255, 74, 67, 58,255, 79, 74, 66,255, 97, 93, 90,255,112,110,109,255,124,122,122,255,132,132,132,255,138,138,138,255, +141,142,143,255,144,144,145,255,146,146,147,255,145,146,147,255,145,145,146,255,142,142,143,255,140,141,141,255,138,138,139,255, +136,135,136,255,134,134,135,255,132,132,132,255,130,129,129,255,128,127,127,255,126,125,125,255,124,122,121,255, 92, 91, 91,255, + 61, 61, 61,255, 60, 60, 60,255,106,106,107,255,146,146,147,255,143,143,144,255,142,142,142,255,140,140,141,255,138,138,138,255, +136,136,137,255,135,134,135,255,134,134,134,255,134,134,134,255,135,134,135,255,135,135,135,255,136,136,136,255,136,136,137,255, +137,137,137,255,137,137,137,255,136,136,137,255,136,136,137,255,136,136,136,255,135,135,135,255,134,134,134,255,134,134,134,255, +132,132,133,255,131,131,131,255,130,130,130,255,129,129,129,255,127,126,126,255,125,125,124,255,124,123,123,255,122,121,120,255, +120,118,118,255,118,117,116,255,116,114,114,255,115,113,112,255,114,112,112,255,114,112,111,255,113,111,110,255,113,111,110,255, +114,112,111,255,115,113,113,255,117,116,115,255,120,119,118,255,124,123,123,255,128,128,128,255,134,133,133,255,138,138,139,255, +143,144,145,255,147,148,149,255,152,152,154,255,153,154,156,255,154,155,157,255,154,155,157,255,154,155,157,255,154,155,156,255, +152,154,155,255,151,152,154,255,150,151,152,255,147,148,149,255,145,146,147,255,142,142,143,255,138,139,139,255,135,135,135,255, +131,130,131,255,126,126,126,255,121,120,120,255,116,115,114,255,112,110,109,255,109,106,105,255,104,102,100,255, 99, 95, 92,255, + 89, 85, 79,255, 79, 72, 63,255, 75, 68, 58,255, 84, 79, 73,255,100, 98, 95,255,114,113,112,255,125,124,123,255,132,132,132,255, +136,136,137,255,140,141,142,255,143,144,145,255,144,144,145,255,144,145,146,255,142,144,145,255,141,141,142,255,138,138,139,255, +136,136,136,255,134,134,135,255,132,132,132,255,130,130,130,255,129,128,128,255,127,126,126,255,125,124,123,255, 93, 92, 92,255, + 61, 61, 61,255, 60, 60, 60,255,106,107,107,255,147,147,148,255,144,144,145,255,142,142,143,255,140,140,141,255,138,138,138,255, +136,136,136,255,135,134,135,255,133,133,133,255,133,132,133,255,133,132,133,255,133,133,133,255,134,134,134,255,135,134,135,255, +135,135,135,255,136,136,136,255,136,136,136,255,135,135,136,255,135,135,135,255,134,134,135,255,134,134,134,255,134,134,134,255, +133,132,133,255,132,132,132,255,131,131,131,255,130,130,130,255,129,128,128,255,126,126,125,255,125,124,124,255,123,122,122,255, +121,120,119,255,119,118,118,255,118,117,115,255,116,115,114,255,116,114,114,255,115,113,113,255,115,113,113,255,115,114,113,255, +116,114,114,255,118,116,116,255,119,118,117,255,123,122,122,255,127,126,126,255,131,131,131,255,136,136,136,255,141,142,143,255, +146,147,148,255,151,152,153,255,155,157,157,255,157,159,160,255,158,160,162,255,158,160,162,255,158,160,162,255,158,159,161,255, +157,158,160,255,155,157,159,255,154,155,157,255,152,153,154,255,150,150,152,255,147,147,148,255,143,144,145,255,139,140,141,255, +135,136,136,255,131,131,131,255,126,126,126,255,122,121,120,255,116,115,115,255,113,111,111,255,109,108,106,255,105,102,100,255, + 97, 94, 91,255, 87, 81, 75,255, 77, 70, 61,255, 78, 71, 62,255, 89, 84, 80,255,104,101, 99,255,116,114,113,255,125,124,125,255, +131,131,132,255,136,136,137,255,140,140,141,255,142,142,143,255,143,143,144,255,143,143,144,255,141,141,142,255,139,139,139,255, +136,136,136,255,134,134,135,255,133,132,133,255,130,130,130,255,129,128,128,255,128,127,127,255,126,125,124,255, 93, 93, 92,255, + 61, 61, 61,255, 60, 60, 60,255,107,107,108,255,149,149,151,255,145,146,147,255,143,143,144,255,141,142,142,255,139,139,140,255, +137,136,137,255,135,135,135,255,133,133,133,255,132,132,132,255,133,131,133,255,132,132,132,255,132,132,132,255,134,133,134,255, +134,134,134,255,135,135,134,255,135,135,136,255,134,134,135,255,134,134,136,255,134,134,136,255,134,134,135,255,135,135,134,255, +133,133,134,255,133,132,133,255,132,132,132,255,131,130,131,255,130,129,130,255,129,128,128,255,126,125,125,255,125,124,123,255, +123,122,121,255,121,119,119,255,119,118,118,255,118,117,116,255,117,115,115,255,116,115,114,255,115,114,114,255,117,115,115,255, +117,116,115,255,119,117,117,255,121,120,120,255,124,123,124,255,128,128,128,255,132,132,133,255,138,138,139,255,143,143,144,255, +149,150,151,255,154,156,157,255,158,160,161,255,161,162,164,255,163,164,166,255,162,164,166,255,163,164,166,255,162,165,166,255, +161,163,164,255,160,162,163,255,159,160,162,255,156,157,159,255,154,155,156,255,151,152,153,255,147,148,149,255,144,145,145,255, +140,140,141,255,136,136,136,255,131,131,131,255,126,126,126,255,121,120,120,255,117,115,115,255,113,112,110,255,110,108,106,255, +104,101, 99,255, 96, 92, 87,255, 84, 79, 71,255, 78, 70, 61,255, 80, 75, 66,255, 93, 89, 85,255,107,103,102,255,116,115,115,255, +125,124,124,255,131,130,130,255,136,136,136,255,139,139,139,255,141,141,142,255,142,143,144,255,141,141,142,255,139,139,139,255, +136,136,136,255,134,134,134,255,132,132,132,255,130,129,129,255,129,128,128,255,128,127,127,255,126,125,125,255, 94, 93, 93,255, + 61, 61, 61,255, 60, 60, 60,255,108,109,110,255,151,151,153,255,148,149,150,255,146,146,147,255,143,143,144,255,141,141,142,255, +138,139,139,255,136,136,136,255,134,134,134,255,133,133,133,255,132,132,132,255,132,132,132,255,132,133,132,255,132,132,132,255, +134,134,134,255,134,134,134,255,135,135,136,255,135,135,136,255,135,135,135,255,136,136,136,255,135,135,136,255,135,135,136,255, +134,134,135,255,134,134,134,255,134,133,134,255,132,132,132,255,131,130,131,255,129,129,129,255,128,127,127,255,126,125,125,255, +124,123,123,255,122,121,121,255,120,119,119,255,119,118,118,255,119,117,117,255,118,116,116,255,118,116,116,255,118,116,116,255, +119,117,117,255,121,120,120,255,123,122,122,255,126,126,125,255,130,129,130,255,134,133,134,255,138,139,139,255,145,144,145,255, +150,152,152,255,157,158,159,255,161,163,164,255,165,166,168,255,167,168,170,255,168,170,172,255,168,169,171,255,167,169,171,255, +166,168,170,255,164,166,168,255,163,164,166,255,161,162,164,255,158,159,161,255,155,156,157,255,151,152,153,255,148,149,150,255, +144,144,145,255,140,140,141,255,135,135,136,255,131,130,130,255,126,125,125,255,121,120,119,255,117,115,114,255,113,111,110,255, +109,107,105,255,103,100, 98,255, 94, 89, 85,255, 83, 78, 70,255, 79, 73, 64,255, 84, 79, 73,255, 96, 92, 89,255,108,105,104,255, +117,116,115,255,124,124,124,255,130,130,130,255,135,134,136,255,138,138,138,255,140,140,141,255,140,140,141,255,138,138,139,255, +135,135,136,255,133,133,133,255,131,131,132,255,129,129,129,255,128,127,127,255,127,126,126,255,126,125,125,255, 94, 94, 93,255, + 61, 61, 61,255, 60, 60, 60,255,110,111,112,255,154,155,157,255,150,152,153,255,149,149,150,255,146,147,148,255,143,144,145,255, +141,141,142,255,138,138,139,255,136,136,136,255,134,134,134,255,133,133,133,255,133,132,133,255,133,133,133,255,133,133,133,255, +133,133,134,255,134,134,134,255,135,135,136,255,135,135,135,255,136,136,136,255,135,135,137,255,136,136,137,255,136,136,136,255, +135,135,135,255,134,134,135,255,134,134,134,255,133,132,133,255,132,132,132,255,130,131,131,255,129,128,128,255,127,126,126,255, +125,124,124,255,124,123,123,255,122,121,121,255,120,119,119,255,119,118,118,255,119,117,117,255,119,118,118,255,120,118,117,255, +120,119,118,255,121,120,120,255,124,123,123,255,127,126,126,255,130,130,131,255,134,134,134,255,139,139,140,255,144,145,146,255, +152,153,154,255,159,160,161,255,163,165,167,255,167,169,171,255,170,172,174,255,172,174,176,255,172,174,176,255,172,174,176,255, +170,172,174,255,169,171,173,255,167,169,171,255,165,166,168,255,162,163,165,255,159,160,162,255,156,157,158,255,152,153,154,255, +148,148,150,255,143,144,145,255,139,140,141,255,134,134,135,255,130,129,129,255,124,123,123,255,119,118,117,255,115,114,113,255, +113,111,109,255,109,107,104,255,102, 99, 96,255, 92, 88, 83,255, 83, 78, 70,255, 82, 76, 68,255, 88, 84, 79,255, 99, 96, 93,255, +109,107,106,255,117,116,115,255,124,124,123,255,130,129,130,255,134,134,135,255,137,137,138,255,139,138,139,255,138,138,139,255, +135,135,136,255,133,132,132,255,130,130,130,255,129,128,128,255,127,126,126,255,127,126,125,255,126,125,124,255, 94, 94, 93,255, + 61, 61, 61,255, 60, 60, 60,255,111,113,113,255,158,159,161,255,154,155,157,255,152,154,154,255,150,151,152,255,147,147,149,255, +144,144,145,255,142,142,142,255,139,139,139,255,137,136,137,255,135,135,136,255,135,135,134,255,135,135,135,255,134,134,135,255, +134,134,134,255,135,135,135,255,135,135,135,255,136,136,135,255,135,135,136,255,136,136,137,255,136,136,137,255,135,135,136,255, +135,135,136,255,134,134,135,255,135,135,135,255,133,133,133,255,132,132,132,255,131,131,131,255,129,129,129,255,128,128,128,255, +127,126,126,255,124,124,124,255,123,122,122,255,122,121,121,255,120,119,119,255,119,118,118,255,120,119,118,255,120,119,118,255, +121,120,119,255,122,121,121,255,125,124,124,255,128,128,128,255,131,130,130,255,134,134,134,255,139,139,140,255,145,146,147,255, +152,153,154,255,159,160,162,255,165,167,168,255,169,171,173,255,173,175,177,255,175,177,179,255,175,178,180,255,176,178,180,255, +174,178,180,255,173,176,178,255,172,174,176,255,169,171,173,255,166,168,170,255,163,164,166,255,159,161,162,255,156,157,158,255, +151,152,153,255,147,148,149,255,143,143,144,255,138,138,139,255,133,133,133,255,128,127,127,255,122,121,121,255,118,116,116,255, +114,113,112,255,112,110,109,255,108,105,103,255,101, 98, 95,255, 92, 87, 83,255, 86, 80, 73,255, 85, 80, 74,255, 92, 87, 83,255, +102, 98, 96,255,111,109,108,255,118,117,116,255,125,124,123,255,130,129,129,255,134,134,135,255,137,136,137,255,137,137,138,255, +134,134,134,255,132,131,131,255,129,129,129,255,127,126,126,255,125,124,124,255,125,124,124,255,126,125,124,255, 94, 94, 93,255, + 61, 61, 61,255, 60, 60, 60,255,113,114,115,255,161,162,164,255,158,159,161,255,155,156,159,255,153,154,156,255,150,151,152,255, +147,148,149,255,144,144,145,255,142,142,143,255,139,139,140,255,137,137,138,255,136,136,136,255,135,135,135,255,135,135,135,255, +134,134,135,255,134,134,135,255,135,135,136,255,135,135,136,255,136,136,135,255,136,136,136,255,136,136,136,255,136,136,136,255, +135,135,136,255,134,134,135,255,134,134,135,255,133,133,133,255,133,132,132,255,132,131,132,255,130,129,129,255,128,128,128,255, +127,126,126,255,125,125,125,255,124,123,123,255,122,121,121,255,121,120,120,255,121,119,119,255,121,120,119,255,121,120,120,255, +122,121,121,255,123,122,122,255,125,125,125,255,128,128,128,255,131,130,130,255,134,134,134,255,139,139,140,255,145,146,147,255, +152,153,154,255,159,160,162,255,165,165,168,255,170,171,173,255,173,175,177,255,176,178,181,255,177,179,182,255,178,180,183,255, +178,180,182,255,177,179,182,255,176,178,180,255,173,175,177,255,170,172,174,255,167,168,170,255,163,164,166,255,159,160,162,255, +155,156,157,255,151,152,153,255,146,146,147,255,141,141,142,255,136,135,136,255,131,130,131,255,126,125,124,255,120,119,118,255, +116,114,113,255,114,112,110,255,111,109,107,255,107,105,103,255,101, 97, 95,255, 93, 88, 84,255, 89, 84, 78,255, 89, 85, 80,255, + 96, 92, 89,255,105,102,100,255,112,110,109,255,120,118,118,255,125,124,125,255,131,130,130,255,134,134,134,255,135,135,136,255, +134,134,134,255,131,130,130,255,128,127,127,255,126,125,124,255,124,123,122,255,124,123,122,255,125,124,123,255, 94, 93, 92,255, + 61, 61, 61,255, 60, 60, 60,255,115,116,117,255,164,166,168,255,161,163,164,255,159,160,162,255,156,157,159,255,153,154,156,255, +150,151,153,255,147,148,149,255,144,144,145,255,142,142,143,255,139,139,140,255,138,138,138,255,137,137,136,255,135,135,136,255, +135,135,135,255,134,134,135,255,135,135,136,255,135,135,136,255,135,135,135,255,135,135,136,255,135,135,136,255,135,135,135,255, +134,134,135,255,134,134,134,255,134,134,134,255,133,132,133,255,132,132,132,255,131,131,131,255,130,129,129,255,128,128,128,255, +128,127,127,255,126,125,125,255,125,124,124,255,123,122,122,255,122,121,121,255,121,120,120,255,122,121,120,255,121,120,121,255, +122,121,121,255,123,122,122,255,126,125,125,255,128,128,128,255,131,130,130,255,134,134,134,255,139,139,140,255,145,145,146,255, +152,152,154,255,158,159,161,255,164,166,167,255,169,171,173,255,173,175,177,255,176,178,181,255,178,181,183,255,179,182,184,255, +180,182,185,255,180,183,185,255,179,181,183,255,177,179,181,255,174,176,178,255,170,172,174,255,167,168,170,255,162,164,165,255, +157,159,161,255,153,154,155,255,148,149,150,255,143,143,144,255,138,138,139,255,134,133,133,255,128,127,127,255,123,121,121,255, +118,117,116,255,114,113,111,255,113,111,109,255,111,108,107,255,107,104,102,255,101, 97, 95,255, 94, 90, 87,255, 92, 87, 83,255, + 94, 90, 87,255,100, 97, 94,255,107,105,104,255,114,113,112,255,121,119,119,255,127,126,126,255,130,131,131,255,134,134,134,255, +133,133,133,255,130,129,129,255,126,125,125,255,124,122,122,255,122,121,120,255,123,121,120,255,124,122,121,255, 93, 93, 92,255, + 61, 61, 61,255, 60, 60, 60,255,116,117,118,255,167,169,171,255,163,165,167,255,162,164,165,255,159,161,163,255,156,157,159,255, +153,154,156,255,150,151,152,255,147,147,149,255,143,144,145,255,142,142,143,255,139,139,140,255,138,138,138,255,137,137,138,255, +136,136,137,255,136,136,136,255,134,134,136,255,135,135,135,255,135,135,136,255,135,134,134,255,134,135,134,255,135,134,134,255, +133,133,134,255,134,133,133,255,133,132,134,255,132,132,132,255,131,131,131,255,131,130,130,255,129,129,129,255,128,128,128,255, +128,127,127,255,126,125,125,255,125,124,124,255,124,123,123,255,122,121,121,255,122,122,120,255,122,121,121,255,122,121,121,255, +123,122,122,255,123,123,122,255,126,125,125,255,128,128,128,255,130,130,130,255,134,134,133,255,139,139,140,255,144,145,146,255, +151,151,152,255,157,158,159,255,163,164,166,255,168,169,171,255,172,174,176,255,176,178,180,255,178,180,183,255,180,182,185,255, +182,184,186,255,182,185,187,255,181,184,186,255,179,182,184,255,177,180,182,255,174,176,178,255,170,172,174,255,166,167,169,255, +161,162,163,255,156,157,158,255,150,152,153,255,146,146,147,255,141,141,142,255,136,135,136,255,131,130,130,255,126,124,124,255, +120,119,118,255,116,115,114,255,113,111,110,255,112,110,108,255,111,109,108,255,108,105,103,255,102, 99, 96,255, 97, 93, 90,255, + 96, 92, 88,255, 98, 95, 92,255,105,102, 99,255,110,109,108,255,117,115,115,255,123,122,122,255,128,127,127,255,131,131,131,255, +131,130,131,255,128,127,127,255,124,123,123,255,121,120,119,255,120,119,118,255,121,119,118,255,123,121,120,255, 93, 92, 91,255, + 61, 61, 61,255, 60, 60, 60,255,118,119,120,255,169,171,173,255,166,168,170,255,164,166,168,255,162,163,165,255,159,161,163,255, +156,157,159,255,153,154,155,255,149,150,152,255,146,146,147,255,143,143,144,255,141,141,142,255,139,139,140,255,138,138,139,255, +137,137,138,255,136,136,136,255,135,135,135,255,134,134,135,255,134,134,134,255,134,133,134,255,134,133,134,255,133,133,133,255, +134,133,133,255,133,132,133,255,133,132,133,255,132,131,131,255,131,131,131,255,130,130,130,255,129,128,128,255,128,128,128,255, +128,127,127,255,126,125,125,255,125,125,125,255,125,124,124,255,123,122,122,255,123,122,122,255,123,122,122,255,122,121,121,255, +123,122,122,255,124,123,123,255,126,125,125,255,128,127,127,255,130,129,129,255,134,134,134,255,139,139,139,255,144,144,145,255, +150,150,152,255,155,156,158,255,161,162,164,255,165,167,168,255,170,172,173,255,173,175,177,255,177,179,181,255,179,181,183,255, +181,183,186,255,181,185,187,255,183,185,188,255,182,184,187,255,180,183,185,255,177,180,182,255,173,175,177,255,169,171,173,255, +164,165,167,255,159,160,161,255,153,154,155,255,148,149,150,255,143,143,144,255,138,138,138,255,133,133,133,255,128,127,127,255, +123,122,121,255,119,116,116,255,115,113,112,255,113,111,110,255,112,110,109,255,112,109,108,255,108,106,104,255,103,101, 98,255, +100, 97, 94,255, 99, 96, 93,255,103,100, 97,255,109,106,104,255,114,112,111,255,119,118,117,255,124,123,123,255,128,127,128,255, +130,129,130,255,127,126,126,255,122,121,121,255,120,118,117,255,119,117,116,255,120,119,117,255,123,121,119,255, 92, 91, 90,255, + 61, 61, 61,255, 60, 60, 60,255,119,120,121,255,172,174,176,255,169,171,173,255,167,169,171,255,164,166,168,255,162,163,165,255, +158,160,161,255,155,156,158,255,151,152,154,255,148,149,150,255,145,146,147,255,143,143,144,255,141,141,142,255,139,139,140,255, +138,138,139,255,136,137,137,255,136,136,136,255,135,135,135,255,135,134,135,255,134,133,134,255,133,134,134,255,134,133,133,255, +133,132,133,255,132,132,132,255,132,132,132,255,131,131,131,255,131,130,130,255,130,130,130,255,129,128,128,255,128,128,128,255, +128,127,127,255,126,125,126,255,126,125,125,255,125,124,124,255,124,123,123,255,124,123,123,255,123,122,122,255,123,122,122,255, +123,123,122,255,124,123,124,255,126,125,124,255,128,127,127,255,130,129,129,255,134,133,134,255,138,138,138,255,143,144,144,255, +148,149,150,255,154,155,156,255,158,159,160,255,163,164,166,255,167,168,170,255,171,173,174,255,174,176,178,255,176,178,181,255, +179,181,184,255,181,184,186,255,182,185,187,255,183,185,188,255,182,184,187,255,180,182,184,255,177,179,181,255,172,174,176,255, +167,169,170,255,161,162,164,255,155,156,157,255,150,151,152,255,144,145,146,255,139,140,140,255,135,135,135,255,131,129,130,255, +126,125,125,255,120,119,119,255,117,115,114,255,114,112,110,255,112,110,108,255,113,111,109,255,112,110,109,255,109,107,105,255, +106,103,100,255,103,100, 98,255,103,101, 98,255,107,105,103,255,112,110,109,255,116,115,114,255,121,120,120,255,125,124,124,255, +127,127,127,255,126,124,124,255,121,120,119,255,118,116,115,255,118,116,114,255,120,118,116,255,122,120,118,255, 92, 91, 90,255, + 61, 61, 61,255, 60, 60, 60,255,120,121,122,255,174,177,179,255,171,173,175,255,170,172,174,255,167,169,171,255,164,165,167,255, +161,162,164,255,157,159,160,255,154,155,156,255,150,151,153,255,148,148,149,255,145,145,146,255,142,143,144,255,141,142,142,255, +139,139,140,255,138,138,139,255,138,138,138,255,136,136,137,255,136,136,136,255,135,135,136,255,134,134,135,255,134,134,134,255, +134,133,134,255,133,133,133,255,133,132,132,255,131,131,131,255,131,130,130,255,130,130,130,255,129,128,128,255,129,128,128,255, +128,127,128,255,126,126,126,255,127,126,126,255,126,125,125,255,125,124,124,255,125,124,124,255,124,123,123,255,123,122,123,255, +123,122,122,255,124,123,122,255,126,125,125,255,128,127,127,255,131,130,130,255,134,133,134,255,137,137,138,255,142,142,143,255, +146,147,148,255,151,152,153,255,155,156,157,255,160,161,162,255,163,165,166,255,167,169,170,255,171,173,175,255,174,177,179,255, +177,178,181,255,179,181,184,255,181,184,186,255,182,184,187,255,183,185,188,255,182,184,186,255,179,181,183,255,175,177,179,255, +169,171,174,255,163,165,166,255,158,159,160,255,152,152,153,255,147,147,148,255,141,141,142,255,137,137,137,255,132,132,132,255, +128,127,127,255,123,122,122,255,119,117,117,255,115,113,112,255,113,111,110,255,113,111,110,255,114,112,111,255,114,112,111,255, +111,109,107,255,107,105,103,255,107,104,102,255,107,105,103,255,111,109,107,255,115,113,112,255,119,118,117,255,123,122,122,255, +125,124,124,255,123,122,122,255,119,117,116,255,116,114,112,255,117,114,112,255,120,118,116,255,122,120,118,255, 91, 90, 89,255, + 61, 61, 61,255, 60, 60, 60,255,122,123,124,255,177,179,181,255,174,176,178,255,171,174,176,255,169,171,174,255,166,168,170,255, +163,165,167,255,160,161,163,255,156,158,159,255,153,154,155,255,150,150,152,255,147,148,149,255,145,146,146,255,143,144,144,255, +142,142,143,255,141,141,142,255,139,139,140,255,138,139,139,255,138,138,138,255,137,137,138,255,136,136,137,255,135,135,136,255, +135,134,135,255,134,134,134,255,133,133,133,255,132,132,132,255,131,131,131,255,131,130,130,255,130,130,130,255,129,128,129,255, +128,128,128,255,128,127,127,255,127,127,127,255,126,126,126,255,125,124,124,255,125,124,124,255,125,124,123,255,123,122,122,255, +123,122,122,255,124,123,122,255,126,125,124,255,128,127,127,255,131,130,130,255,133,133,133,255,137,137,137,255,141,141,142,255, +145,146,147,255,149,150,151,255,153,154,156,255,157,158,160,255,161,162,163,255,164,166,167,255,168,169,171,255,171,173,175,255, +173,175,177,255,176,178,180,255,178,180,183,255,181,183,186,255,181,184,186,255,182,184,187,255,181,183,186,255,177,180,182,255, +172,174,176,255,166,167,169,255,159,161,162,255,154,155,156,255,148,148,150,255,143,143,144,255,138,138,139,255,133,133,133,255, +129,129,129,255,125,124,124,255,120,120,119,255,117,115,114,255,114,112,111,255,113,111,110,255,114,112,111,255,116,114,113,255, +115,113,112,255,113,110,110,255,110,108,107,255,109,107,106,255,111,109,107,255,114,112,111,255,116,115,115,255,120,119,119,255, +123,122,122,255,122,120,119,255,116,114,114,255,115,113,111,255,117,114,112,255,120,118,116,255,121,119,117,255, 90, 89, 88,255, + 61, 61, 61,255, 60, 60, 60,255,123,124,125,255,179,181,183,255,176,179,181,255,174,176,178,255,171,173,176,255,169,171,173,255, +166,168,169,255,162,164,166,255,159,160,162,255,156,157,159,255,153,154,155,255,150,151,152,255,148,148,150,255,146,147,148,255, +145,146,146,255,143,144,145,255,143,143,144,255,141,141,142,255,140,141,141,255,140,140,141,255,139,139,140,255,138,138,138,255, +137,137,138,255,137,137,136,255,135,135,136,255,135,134,135,255,134,134,134,255,132,132,132,255,131,131,131,255,130,130,130,255, +129,129,129,255,128,128,128,255,128,127,127,255,127,126,126,255,126,125,125,255,125,124,124,255,124,123,123,255,124,123,122,255, +123,122,121,255,124,123,122,255,126,125,124,255,128,127,127,255,130,129,129,255,133,132,132,255,136,136,137,255,140,140,140,255, +143,144,145,255,147,148,149,255,151,152,153,255,155,156,157,255,158,159,160,255,161,162,164,255,164,165,167,255,167,169,171,255, +170,172,173,255,173,175,177,255,176,178,180,255,178,180,182,255,180,182,185,255,181,183,186,255,181,183,186,255,179,181,183,255, +175,177,179,255,168,170,172,255,162,163,164,255,155,156,157,255,149,150,151,255,144,145,146,255,140,140,141,255,136,135,135,255, +131,131,131,255,127,126,126,255,123,122,121,255,119,117,117,255,116,114,113,255,114,112,111,255,114,112,111,255,116,114,113,255, +116,115,114,255,116,114,113,255,114,112,111,255,112,111,109,255,112,110,109,255,114,111,110,255,116,114,113,255,118,117,116,255, +121,119,119,255,119,118,117,255,114,112,111,255,115,113,110,255,117,115,112,255,120,118,116,255,121,118,116,255, 89, 88, 86,255, + 61, 61, 61,255, 60, 60, 60,255,124,125,127,255,181,184,186,255,178,180,183,255,176,179,181,255,174,176,179,255,171,173,176,255, +169,171,173,255,166,167,169,255,162,164,166,255,160,161,163,255,157,158,160,255,154,155,157,255,152,153,155,255,151,152,153,255, +149,149,151,255,148,148,150,255,147,147,149,255,146,146,147,255,144,145,146,255,143,144,145,255,142,142,143,255,142,142,143,255, +141,141,142,255,139,139,140,255,138,138,139,255,137,137,138,255,136,136,136,255,135,135,135,255,134,134,134,255,132,132,132,255, +131,131,131,255,129,129,129,255,129,128,128,255,128,127,127,255,126,125,125,255,125,124,124,255,124,123,123,255,123,122,121,255, +124,123,121,255,123,122,122,255,125,124,124,255,128,127,127,255,130,129,129,255,132,132,132,255,135,135,135,255,138,138,138,255, +141,141,142,255,145,145,146,255,148,149,150,255,151,152,153,255,155,156,157,255,158,159,160,255,161,162,164,255,164,165,167,255, +166,168,170,255,170,171,173,255,172,175,177,255,174,176,179,255,177,179,182,255,180,182,184,255,180,182,186,255,180,182,185,255, +176,178,180,255,171,173,175,255,163,165,166,255,156,157,159,255,151,152,153,255,145,146,147,255,141,141,142,255,137,137,137,255, +133,132,133,255,129,128,128,255,125,124,124,255,121,120,119,255,118,116,115,255,115,113,112,255,114,112,111,255,115,113,112,255, +118,116,115,255,118,116,116,255,118,116,115,255,115,114,113,255,115,113,112,255,115,114,113,255,116,114,113,255,117,116,115,255, +118,117,116,255,116,114,113,255,113,109,108,255,116,113,110,255,117,114,112,255,120,118,115,255,119,117,115,255, 89, 86, 85,255, + 61, 61, 61,255, 60, 60, 60,255,125,126,128,255,184,186,189,255,181,183,186,255,179,181,183,255,177,179,182,255,174,176,179,255, +171,174,176,255,169,171,173,255,166,168,170,255,164,166,168,255,161,163,165,255,159,161,163,255,157,159,160,255,155,157,158,255, +154,155,157,255,153,154,156,255,152,152,154,255,150,152,153,255,150,151,152,255,148,149,150,255,147,148,149,255,145,147,148,255, +145,145,146,255,143,144,145,255,142,142,143,255,140,141,142,255,139,139,140,255,138,138,138,255,135,135,136,255,134,134,135,255, +132,132,133,255,131,131,131,255,129,129,130,255,128,128,128,255,127,126,126,255,125,124,123,255,124,123,122,255,122,121,120,255, +123,122,121,255,124,123,121,255,125,124,123,255,127,126,126,255,129,128,128,255,132,131,131,255,134,134,134,255,137,137,138,255, +140,140,141,255,143,144,145,255,146,147,148,255,149,150,151,255,152,153,154,255,155,157,158,255,158,159,161,255,161,162,164,255, +163,165,167,255,166,168,170,255,169,171,173,255,172,174,176,255,174,176,178,255,177,179,181,255,179,182,184,255,180,182,185,255, +177,179,182,255,172,174,176,255,165,167,168,255,159,160,161,255,152,153,154,255,147,147,149,255,142,142,143,255,137,138,138,255, +134,133,134,255,130,129,129,255,126,126,125,255,122,121,121,255,119,118,117,255,116,115,113,255,115,113,112,255,115,113,112,255, +116,114,114,255,118,117,116,255,119,118,117,255,119,117,116,255,118,116,115,255,117,115,114,255,117,115,115,255,117,116,115,255, +117,116,115,255,114,111,109,255,112,109,106,255,115,112,109,255,116,114,111,255,119,117,115,255,118,116,113,255, 87, 85, 83,255, + 61, 61, 61,255, 60, 60, 60,255,126,127,129,255,185,188,191,255,183,185,188,255,181,184,186,255,179,181,183,255,177,179,182,255, +175,177,179,255,172,175,177,255,171,173,175,255,168,170,172,255,167,169,171,255,164,166,168,255,163,164,166,255,162,163,164,255, +159,161,163,255,158,160,161,255,157,159,160,255,156,157,158,255,154,156,157,255,153,155,156,255,151,153,154,255,150,151,153,255, +149,150,151,255,147,148,149,255,146,146,148,255,144,145,146,255,142,143,143,255,140,140,141,255,138,138,139,255,136,136,137,255, +134,134,135,255,133,132,133,255,131,130,130,255,129,129,129,255,127,126,125,255,124,123,123,255,123,122,122,255,122,121,120,255, +122,121,121,255,123,122,121,255,125,124,123,255,126,126,125,255,128,128,128,255,131,130,130,255,133,133,133,255,136,136,137,255, +139,139,139,255,142,142,143,255,145,146,147,255,147,148,149,255,151,151,153,255,153,154,155,255,156,157,158,255,158,159,160,255, +160,162,163,255,163,165,167,255,166,167,169,255,168,170,172,255,172,174,176,255,175,176,178,255,177,179,181,255,178,181,183,255, +177,180,182,255,174,176,178,255,167,168,170,255,159,161,162,255,153,153,155,255,148,148,149,255,143,143,144,255,139,139,140,255, +135,135,135,255,131,131,131,255,127,127,127,255,124,122,122,255,120,119,118,255,118,117,116,255,116,115,114,255,115,113,112,255, +116,114,113,255,118,116,116,255,120,119,118,255,120,119,118,255,120,119,118,255,119,118,117,255,119,118,117,255,118,117,116,255, +116,115,113,255,111,109,106,255,113,110,106,255,115,112,109,255,115,112,109,255,119,117,113,255,116,113,111,255, 86, 84, 81,255, + 61, 61, 61,255, 60, 60, 60,255,127,129,130,255,188,190,193,255,184,188,190,255,183,186,188,255,182,184,186,255,179,182,184,255, +178,180,182,255,176,178,181,255,175,177,179,255,173,175,177,255,171,174,176,255,170,172,175,255,168,170,173,255,167,169,171,255, +166,168,169,255,164,165,168,255,163,164,166,255,162,163,165,255,160,161,163,255,158,160,162,255,157,158,160,255,155,156,158,255, +153,155,156,255,152,153,154,255,149,150,151,255,148,149,150,255,146,146,147,255,143,144,145,255,141,142,143,255,139,139,140,255, +136,136,137,255,133,133,134,255,132,132,132,255,130,129,129,255,127,126,126,255,124,123,123,255,123,122,122,255,122,121,122,255, +122,121,121,255,122,121,121,255,124,123,123,255,126,125,125,255,127,126,126,255,130,130,130,255,133,132,132,255,135,134,135,255, +138,138,138,255,141,141,142,255,143,143,144,255,146,147,147,255,149,150,151,255,151,152,153,255,154,155,156,255,156,157,158,255, +158,159,160,255,160,162,163,255,164,165,167,255,165,167,169,255,169,171,173,255,172,174,176,255,175,177,179,255,177,179,182,255, +177,180,182,255,174,176,178,255,168,170,172,255,160,161,163,255,154,155,156,255,148,149,150,255,144,144,145,255,139,139,140,255, +136,136,136,255,133,132,132,255,129,128,128,255,125,124,124,255,122,121,120,255,119,118,117,255,117,116,115,255,117,115,114,255, +116,114,114,255,117,116,115,255,119,117,117,255,121,119,119,255,121,120,120,255,122,121,121,255,121,120,119,255,120,119,118,255, +116,115,114,255,111,108,105,255,113,111,108,255,114,111,108,255,114,112,109,255,117,114,112,255,115,112,108,255, 84, 82, 79,255, + 61, 61, 61,255, 60, 60, 60,255,128,129,131,255,189,192,195,255,187,190,192,255,185,188,191,255,184,187,190,255,182,185,187,255, +181,184,186,255,180,182,185,255,179,181,184,255,178,180,182,255,177,179,182,255,175,178,180,255,174,177,179,255,173,175,177,255, +171,173,176,255,170,172,174,255,168,170,172,255,167,169,171,255,165,167,169,255,163,165,167,255,161,163,165,255,159,161,163,255, +157,159,160,255,156,157,158,255,153,154,156,255,151,152,153,255,149,150,151,255,146,147,148,255,143,144,145,255,140,141,142,255, +138,138,138,255,136,135,136,255,133,132,132,255,130,129,129,255,128,127,127,255,125,124,124,255,124,123,122,255,123,122,121,255, +123,122,121,255,123,122,121,255,124,123,123,255,126,125,125,255,127,126,126,255,130,129,129,255,132,132,132,255,134,134,134,255, +137,137,138,255,140,140,141,255,142,144,144,255,145,146,147,255,147,148,149,255,150,151,152,255,152,153,155,255,155,155,157,255, +156,158,159,255,159,160,161,255,161,163,164,255,164,165,167,255,166,168,170,255,169,171,173,255,173,175,177,255,175,177,180,255, +176,179,181,255,174,175,177,255,168,170,172,255,160,162,163,255,154,155,157,255,149,149,150,255,144,144,145,255,140,140,141,255, +137,136,137,255,133,133,133,255,130,129,129,255,126,125,125,255,123,122,122,255,120,119,118,255,118,117,116,255,117,116,115,255, +117,115,114,255,117,115,115,255,118,117,116,255,120,119,119,255,122,120,120,255,123,122,122,255,123,122,121,255,122,121,120,255, +117,114,112,255,113,111,107,255,115,112,109,255,114,111,108,255,113,110,107,255,116,113,111,255,112,109,105,255, 83, 80, 77,255, + 61, 61, 61,255, 60, 60, 60,255,129,131,132,255,191,194,198,255,189,192,195,255,188,191,194,255,186,189,192,255,185,188,191,255, +185,186,189,255,183,186,188,255,183,185,188,255,182,184,187,255,181,184,186,255,180,183,185,255,179,181,184,255,178,180,183,255, +176,180,182,255,175,178,180,255,174,176,179,255,172,175,176,255,170,172,174,255,169,171,173,255,166,168,170,255,164,166,168,255, +162,164,165,255,160,161,163,255,157,158,160,255,155,156,157,255,152,153,154,255,149,150,151,255,146,147,148,255,143,144,145,255, +140,140,141,255,137,137,137,255,134,133,134,255,132,131,131,255,129,128,128,255,126,125,125,255,124,123,123,255,124,123,122,255, +123,122,122,255,123,122,122,255,124,123,123,255,126,125,125,255,127,126,126,255,130,129,129,255,132,132,132,255,134,133,134,255, +137,137,137,255,140,140,140,255,143,143,144,255,145,145,146,255,147,147,149,255,149,150,151,255,151,152,153,255,153,154,155,255, +155,157,158,255,157,158,159,255,159,160,162,255,162,164,165,255,165,166,168,255,167,169,171,255,170,172,174,255,174,176,178,255, +175,178,180,255,173,175,177,255,168,170,172,255,160,162,163,255,155,155,157,255,149,150,151,255,145,145,146,255,141,141,142,255, +137,137,138,255,134,134,134,255,131,130,130,255,127,127,127,255,124,123,123,255,122,120,120,255,119,118,118,255,118,116,116,255, +117,116,115,255,118,116,115,255,118,117,116,255,120,119,118,255,122,120,120,255,123,122,122,255,124,123,123,255,122,122,120,255, +117,114,112,255,117,115,112,255,117,115,112,255,113,111,108,255,112,109,106,255,114,111,108,255,106,102, 98,255, 66, 65, 62,255, + 61, 61, 61,255, 60, 60, 60,255,130,131,133,255,193,196,199,255,192,194,197,255,190,192,195,255,189,192,195,255,188,191,194,255, +187,190,193,255,187,190,192,255,186,189,192,255,185,188,191,255,185,188,190,255,184,187,190,255,183,186,188,255,182,185,188,255, +182,184,187,255,180,182,185,255,179,181,184,255,178,180,182,255,176,178,181,255,174,176,178,255,172,174,176,255,170,172,174,255, +167,169,170,255,164,166,167,255,161,163,165,255,159,160,161,255,156,157,158,255,152,153,154,255,150,150,151,255,146,146,147,255, +142,142,143,255,139,139,139,255,136,136,136,255,133,132,132,255,130,129,129,255,128,127,127,255,126,125,125,255,125,124,123,255, +124,123,123,255,125,124,124,255,125,124,124,255,126,125,125,255,127,127,127,255,130,129,129,255,132,132,132,255,135,134,134,255, +137,137,137,255,139,140,140,255,141,143,142,255,144,145,146,255,147,147,148,255,149,150,151,255,150,151,152,255,152,153,154,255, +153,155,156,255,156,157,158,255,158,159,160,255,160,161,163,255,163,164,166,255,165,167,169,255,169,171,173,255,172,174,176,255, +173,175,177,255,173,175,177,255,167,169,171,255,160,162,164,255,155,156,157,255,149,150,151,255,145,145,146,255,141,141,142,255, +137,137,138,255,135,134,135,255,131,131,131,255,128,127,127,255,125,124,124,255,122,121,121,255,120,119,118,255,119,118,118,255, +119,118,117,255,118,118,117,255,120,118,118,255,120,119,119,255,122,120,120,255,124,122,121,255,125,123,122,255,122,120,117,255, +120,118,115,255,121,118,116,255,119,116,115,255,113,111,108,255,111,108,104,255,112,109,106,255,100, 96, 91,255, 50, 49, 47,255, + 61, 61, 61,255, 60, 60, 60,255,131,132,134,255,195,198,201,255,193,196,199,255,192,195,198,255,192,194,198,255,190,194,196,255, +190,193,196,255,190,193,196,255,190,192,195,255,189,192,195,255,189,191,194,255,187,190,193,255,187,189,192,255,186,189,192,255, +185,188,191,255,184,188,189,255,183,186,188,255,182,185,187,255,180,183,185,255,179,181,184,255,177,178,181,255,174,177,179,255, +172,174,175,255,168,170,172,255,165,167,169,255,163,164,165,255,159,161,162,255,156,157,158,255,153,153,155,255,149,150,151,255, +145,145,147,255,142,142,143,255,139,138,139,255,135,135,135,255,132,132,132,255,130,129,129,255,128,127,127,255,127,126,125,255, +126,125,125,255,126,125,125,255,126,125,125,255,127,127,126,255,128,127,127,255,130,129,130,255,132,132,132,255,134,135,134,255, +137,137,137,255,140,140,141,255,141,143,143,255,144,145,145,255,146,147,148,255,148,149,150,255,150,151,152,255,151,152,153,255, +153,154,155,255,155,156,157,255,157,158,159,255,159,160,162,255,161,163,165,255,164,166,167,255,167,169,171,255,170,172,174,255, +172,174,176,255,171,173,175,255,166,168,169,255,160,161,163,255,154,155,156,255,149,150,151,255,145,146,147,255,141,141,142,255, +138,138,138,255,135,135,135,255,132,131,131,255,129,128,128,255,126,125,125,255,123,122,122,255,122,120,120,255,120,119,118,255, +119,118,117,255,119,118,117,255,120,119,118,255,121,120,119,255,122,121,120,255,123,122,120,255,123,121,119,255,120,118,116,255, +122,120,118,255,124,122,120,255,121,119,117,255,114,111,109,255,109,106,103,255,109,106,102,255, 93, 88, 80,255, 28, 28, 28,255, + 62, 62, 62,255, 60, 60, 60,255,132,133,135,255,197,200,204,255,195,198,201,255,194,197,201,255,193,196,199,255,193,196,199,255, +193,196,199,255,192,195,198,255,192,194,198,255,191,194,197,255,190,193,196,255,190,193,196,255,190,193,196,255,189,192,195,255, +189,192,195,255,188,191,193,255,187,189,192,255,186,189,192,255,184,186,189,255,182,185,187,255,180,183,185,255,178,181,183,255, +175,177,180,255,172,174,176,255,170,171,173,255,166,168,169,255,163,165,166,255,160,161,162,255,156,157,159,255,153,154,155,255, +149,150,150,255,145,145,146,255,141,141,142,255,138,138,138,255,135,135,135,255,133,132,132,255,131,130,130,255,129,128,128,255, +128,127,127,255,128,127,127,255,127,127,126,255,128,127,127,255,129,128,128,255,131,130,131,255,133,133,133,255,135,134,135,255, +137,137,138,255,140,140,141,255,142,143,144,255,144,145,146,255,146,147,148,255,148,149,150,255,150,150,152,255,151,152,153,255, +153,154,155,255,154,155,156,255,156,157,158,255,158,160,161,255,159,161,162,255,162,164,166,255,165,167,169,255,168,170,172,255, +171,173,175,255,168,170,172,255,165,166,168,255,159,160,162,255,154,155,156,255,149,150,151,255,145,146,147,255,142,142,143,255, +138,138,139,255,136,135,136,255,132,132,132,255,129,129,129,255,126,125,125,255,124,123,123,255,122,121,120,255,120,120,118,255, +119,118,118,255,120,118,118,255,120,119,118,255,121,119,118,255,121,120,119,255,122,120,118,255,119,117,114,255,120,118,115,255, +124,122,120,255,126,124,122,255,123,121,120,255,116,113,110,255,108,105,102,255,107,103, 98,255, 59, 55, 50,255, 25, 25, 26,255, + 62, 62, 62,255, 60, 60, 60,255,132,134,136,255,199,202,205,255,197,200,204,255,196,199,203,255,196,199,202,255,195,199,202,255, +195,198,201,255,194,197,200,255,194,197,200,255,193,196,199,255,193,196,199,255,193,196,199,255,192,195,198,255,192,195,198,255, +191,194,197,255,190,193,197,255,190,193,196,255,189,191,194,255,187,190,193,255,186,188,191,255,183,186,189,255,181,183,185,255, +179,181,183,255,175,177,180,255,172,174,176,255,170,171,173,255,167,168,170,255,163,164,166,255,160,161,163,255,156,157,158,255, +152,153,154,255,148,149,150,255,144,144,145,255,141,141,141,255,139,138,139,255,136,135,135,255,133,133,133,255,132,132,132,255, +131,130,130,255,131,130,130,255,130,129,129,255,130,130,130,255,131,131,131,255,132,131,131,255,134,133,134,255,136,136,137,255, +138,138,138,255,140,140,141,255,143,143,144,255,144,145,146,255,146,147,148,255,149,149,151,255,149,150,151,255,151,152,153,255, +153,154,155,255,154,155,156,255,155,156,158,255,157,158,160,255,159,160,162,255,162,163,165,255,165,166,168,255,166,168,170,255, +168,170,173,255,167,169,171,255,163,164,166,255,158,159,160,255,153,154,155,255,149,150,151,255,146,146,147,255,142,142,143,255, +138,138,139,255,136,135,136,255,133,132,132,255,130,129,129,255,127,127,126,255,124,123,123,255,123,121,121,255,122,120,120,255, +120,118,118,255,119,118,117,255,119,117,116,255,120,118,116,255,119,117,115,255,118,116,114,255,117,114,111,255,120,117,115,255, +124,122,120,255,127,126,124,255,125,123,122,255,116,114,111,255,108,104,101,255,104, 99, 93,255, 13, 12, 10,255, 28, 28, 28,255, + 62, 62, 62,255, 60, 60, 60,255,134,135,137,255,200,203,207,255,199,202,205,255,198,201,205,255,197,201,204,255,197,200,203,255, +196,199,203,255,196,199,202,255,195,198,202,255,194,197,201,255,194,197,200,255,194,197,200,255,193,196,200,255,193,196,199,255, +193,196,199,255,192,195,198,255,191,194,197,255,191,193,196,255,189,191,195,255,187,190,193,255,186,188,191,255,183,186,188,255, +180,183,185,255,178,180,182,255,175,177,179,255,172,174,176,255,170,171,173,255,167,168,170,255,163,164,166,255,159,160,162,255, +156,156,158,255,152,152,153,255,148,149,149,255,144,144,145,255,142,142,143,255,139,139,140,255,137,137,137,255,135,135,135,255, +133,134,134,255,133,132,132,255,132,131,131,255,133,132,132,255,133,133,133,255,133,133,133,255,134,135,135,255,137,137,137,255, +139,139,140,255,141,141,142,255,143,144,145,255,144,146,147,255,147,148,149,255,149,149,151,255,150,151,152,255,151,152,153,255, +153,154,155,255,153,155,156,255,155,156,157,255,157,158,159,255,158,160,161,255,161,162,163,255,163,165,166,255,165,167,169,255, +166,168,170,255,165,166,169,255,161,163,165,255,156,157,158,255,152,153,154,255,149,149,151,255,146,146,147,255,142,142,143,255, +139,139,140,255,136,136,136,255,133,133,133,255,130,130,130,255,128,127,127,255,125,124,124,255,123,122,122,255,122,119,119,255, +120,119,118,255,119,117,116,255,118,117,115,255,118,116,114,255,117,114,111,255,115,113,110,255,116,114,110,255,120,117,114,255, +125,123,121,255,128,127,125,255,126,125,123,255,117,115,112,255,107,103, 99,255, 79, 75, 69,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,202,205,209,255,200,203,206,255,200,203,206,255,199,202,205,255,198,201,205,255, +198,201,204,255,197,200,203,255,196,199,203,255,196,199,202,255,195,198,201,255,195,198,201,255,194,197,201,255,194,197,200,255, +194,197,200,255,193,196,200,255,192,195,198,255,192,194,198,255,190,193,196,255,188,191,194,255,187,190,193,255,185,187,190,255, +182,185,187,255,181,182,184,255,178,180,182,255,175,177,178,255,172,174,175,255,169,171,173,255,166,168,170,255,163,164,166,255, +159,160,161,255,155,156,157,255,152,152,153,255,148,149,149,255,146,146,147,255,143,143,144,255,140,140,141,255,139,139,139,255, +138,137,137,255,136,136,136,255,135,135,135,255,135,135,135,255,134,134,134,255,136,136,136,255,137,137,137,255,138,138,139,255, +140,140,141,255,142,143,144,255,144,144,145,255,146,147,148,255,147,148,149,255,149,150,151,255,150,151,152,255,151,152,153,255, +153,154,155,255,153,154,156,255,155,156,157,255,156,157,159,255,158,159,161,255,159,161,163,255,162,163,165,255,163,165,167,255, +164,166,168,255,162,164,166,255,159,160,162,255,156,157,158,255,151,152,153,255,148,149,150,255,146,146,147,255,143,143,144,255, +139,139,140,255,137,137,137,255,134,133,134,255,131,130,130,255,128,128,128,255,125,125,124,255,123,122,122,255,122,120,120,255, +120,119,118,255,119,117,116,255,117,115,114,255,115,113,111,255,114,111,108,255,114,111,108,255,115,112,110,255,119,116,114,255, +124,123,121,255,129,127,126,255,128,126,125,255,117,114,112,255,105,100, 95,255, 21, 20, 18,255, 0, 0, 0,255, 29, 29, 29,255, + 62, 62, 62,255, 60, 60, 60,255,135,136,138,255,203,206,210,255,202,205,208,255,201,204,207,255,201,204,207,255,200,203,206,255, +199,202,205,255,198,201,205,255,198,201,204,255,197,200,203,255,197,200,203,255,196,199,203,255,196,199,202,255,196,199,202,255, +195,198,201,255,194,197,201,255,194,197,200,255,192,195,198,255,191,194,197,255,190,192,196,255,188,190,193,255,186,188,191,255, +184,186,189,255,181,184,186,255,179,181,183,255,177,179,181,255,174,176,178,255,172,173,175,255,169,170,172,255,166,167,169,255, +162,164,165,255,159,160,161,255,155,156,157,255,152,153,154,255,150,150,151,255,147,147,148,255,145,145,146,255,143,143,144,255, +142,142,142,255,140,140,140,255,139,139,139,255,139,139,139,255,138,138,139,255,139,138,139,255,140,140,140,255,141,141,141,255, +142,143,144,255,144,145,146,255,146,146,147,255,147,148,149,255,148,149,150,255,150,151,152,255,151,152,153,255,152,153,154,255, +153,154,155,255,153,155,156,255,154,155,157,255,156,157,159,255,157,158,160,255,159,160,162,255,160,161,163,255,161,163,165,255, +162,163,165,255,160,162,163,255,157,159,160,255,155,155,157,255,151,152,153,255,148,149,150,255,146,146,147,255,143,143,144,255, +139,140,140,255,137,137,138,255,134,134,134,255,131,131,131,255,129,128,128,255,126,125,125,255,123,122,122,255,122,121,120,255, +120,118,117,255,118,116,115,255,115,113,111,255,113,110,108,255,111,108,105,255,111,109,105,255,114,111,108,255,118,116,114,255, +124,123,121,255,129,128,126,255,129,127,126,255,117,114,112,255, 75, 72, 68,255, 4, 3, 3,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,135,137,138,255,204,207,210,255,202,205,209,255,202,205,208,255,201,205,208,255,201,204,207,255, +200,203,207,255,199,202,206,255,198,201,205,255,198,201,204,255,197,200,204,255,196,199,203,255,196,199,202,255,195,198,202,255, +195,198,201,255,195,198,201,255,193,196,200,255,193,196,199,255,192,195,198,255,190,193,196,255,188,191,194,255,187,189,192,255, +185,187,190,255,182,184,187,255,180,182,185,255,178,180,182,255,176,178,180,255,174,176,177,255,171,172,174,255,169,170,172,255, +165,167,168,255,162,163,165,255,159,160,161,255,155,157,158,255,154,154,155,255,151,152,153,255,150,150,151,255,149,148,150,255, +147,148,148,255,146,146,147,255,145,145,146,255,144,144,145,255,144,144,145,255,144,144,144,255,144,144,145,255,145,145,146,255, +145,146,147,255,146,147,148,255,149,149,150,255,150,150,151,255,150,151,152,255,152,152,154,255,152,153,154,255,153,154,155,255, +153,154,156,255,154,155,156,255,154,155,157,255,156,157,158,255,156,158,159,255,158,159,161,255,158,160,161,255,159,161,163,255, +159,161,163,255,158,160,161,255,156,157,158,255,153,154,155,255,151,152,153,255,148,149,150,255,146,146,147,255,143,143,144,255, +140,141,141,255,138,138,138,255,134,135,134,255,132,132,132,255,130,129,129,255,127,126,126,255,124,123,123,255,122,121,119,255, +120,118,117,255,117,115,114,255,114,112,110,255,111,109,106,255,110,107,103,255,111,107,104,255,113,111,108,255,118,116,113,255, +124,122,121,255,129,128,127,255,128,126,125,255,115,112,109,255, 44, 42, 39,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,135,137,138,255,205,208,211,255,203,206,209,255,203,206,210,255,202,205,209,255,202,205,208,255, +201,204,207,255,200,203,207,255,199,202,205,255,198,201,205,255,197,200,204,255,197,200,203,255,196,200,204,255,196,199,203,255, +195,198,202,255,195,198,202,255,194,197,200,255,193,196,199,255,192,195,198,255,190,193,196,255,189,192,195,255,188,190,193,255, +185,187,190,255,184,186,188,255,182,184,186,255,179,181,183,255,178,180,182,255,176,178,179,255,174,175,177,255,171,172,174,255, +169,170,171,255,165,167,168,255,162,163,165,255,160,160,163,255,158,159,160,255,156,157,158,255,155,155,156,255,154,155,156,255, +154,154,155,255,154,154,155,255,153,154,155,255,152,153,153,255,152,152,153,255,151,151,152,255,150,151,152,255,150,151,152,255, +150,151,152,255,151,152,153,255,151,152,153,255,153,153,155,255,153,154,155,255,154,155,156,255,154,155,156,255,154,155,156,255, +154,155,156,255,154,156,157,255,154,155,158,255,155,156,158,255,156,157,158,255,156,157,159,255,157,158,160,255,158,159,161,255, +158,160,162,255,156,157,159,255,155,156,157,255,153,154,155,255,150,151,152,255,148,149,150,255,146,147,148,255,144,144,145,255, +141,141,142,255,139,139,139,255,136,135,136,255,133,132,132,255,131,130,130,255,128,127,127,255,124,123,123,255,122,121,120,255, +119,118,117,255,116,114,113,255,113,111,108,255,110,106,103,255,108,104,101,255,110,106,103,255,113,110,107,255,117,114,112,255, +123,122,120,255,129,128,126,255,127,126,124,255,108,105,102,255, 16, 15, 13,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,135,137,138,255,205,208,211,255,203,206,210,255,204,207,209,255,204,207,210,255,203,206,209,255, +202,205,208,255,201,204,208,255,200,203,207,255,199,202,206,255,199,202,205,255,198,201,204,255,197,200,204,255,196,200,203,255, +196,199,202,255,196,199,202,255,194,197,200,255,193,196,199,255,193,195,198,255,192,193,196,255,189,192,195,255,188,191,194,255, +186,189,192,255,184,187,189,255,182,184,187,255,181,183,185,255,179,181,183,255,177,179,181,255,175,177,179,255,173,175,176,255, +171,172,174,255,169,170,171,255,166,167,168,255,163,165,165,255,162,163,164,255,161,162,163,255,161,162,163,255,161,162,163,255, +162,163,164,255,162,163,164,255,162,163,164,255,162,163,164,255,161,162,164,255,160,161,162,255,159,160,161,255,158,159,160,255, +158,158,160,255,157,158,159,255,157,158,159,255,156,157,158,255,156,157,159,255,156,157,159,255,156,158,159,255,156,157,159,255, +156,157,158,255,155,156,158,255,155,156,157,255,154,155,156,255,154,155,157,255,154,156,157,255,156,158,160,255,158,159,161,255, +157,158,160,255,156,157,158,255,154,156,157,255,153,153,155,255,150,151,152,255,149,149,150,255,147,147,148,255,144,144,145,255, +142,142,143,255,139,139,140,255,136,136,137,255,134,134,134,255,131,130,130,255,128,127,127,255,125,124,124,255,122,121,120,255, +119,117,115,255,115,113,111,255,112,109,106,255,108,104,102,255,107,103, 99,255,108,105,101,255,111,108,106,255,116,114,111,255, +123,121,119,255,128,127,126,255,126,124,122,255, 95, 93, 88,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,135,136,138,255,205,208,210,255,204,207,209,255,204,206,210,255,203,206,209,255,203,206,209,255, +203,206,209,255,202,205,208,255,201,204,207,255,200,203,206,255,199,202,205,255,198,201,205,255,198,201,204,255,197,201,204,255, +196,199,202,255,196,199,202,255,194,197,200,255,193,196,199,255,193,195,199,255,191,194,197,255,190,193,196,255,189,191,194,255, +187,189,192,255,186,187,190,255,183,186,188,255,181,183,185,255,179,181,183,255,178,180,182,255,176,177,179,255,175,177,178,255, +174,175,176,255,171,172,173,255,169,169,170,255,167,167,168,255,166,166,167,255,166,166,167,255,166,167,167,255,168,168,169,255, +169,170,170,255,171,171,172,255,171,172,173,255,171,172,173,255,170,172,173,255,169,171,172,255,168,169,171,255,166,168,169,255, +165,166,168,255,164,166,167,255,162,164,166,255,162,163,164,255,161,162,163,255,160,161,162,255,159,160,162,255,158,159,161,255, +157,158,159,255,156,157,158,255,155,156,157,255,153,155,156,255,154,155,157,255,155,157,158,255,157,158,160,255,158,159,161,255, +157,158,160,255,156,157,158,255,154,155,156,255,153,153,155,255,151,152,153,255,149,150,151,255,147,148,149,255,145,145,146,255, +143,143,144,255,140,140,141,255,138,137,138,255,135,134,135,255,132,131,131,255,129,128,128,255,125,124,123,255,122,121,120,255, +119,116,115,255,115,113,110,255,111,108,105,255,107,104,100,255,106,102, 99,255,107,104,100,255,110,107,104,255,115,112,110,255, +121,119,117,255,127,125,124,255,123,121,118,255, 59, 57, 53,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,135,136,137,255,205,207,209,255,204,206,209,255,203,207,209,255,204,207,210,255,204,207,209,255, +204,207,210,255,203,206,209,255,201,204,208,255,201,204,207,255,200,203,206,255,199,202,205,255,199,202,205,255,197,200,203,255, +197,200,203,255,196,199,202,255,194,197,200,255,194,196,200,255,193,196,199,255,191,194,197,255,190,193,196,255,190,192,195,255, +187,190,193,255,186,188,191,255,184,186,188,255,181,183,185,255,180,182,183,255,178,179,181,255,175,177,178,255,174,175,176,255, +173,173,174,255,170,171,172,255,169,169,169,255,168,168,168,255,168,168,168,255,169,169,169,255,171,171,172,255,173,174,175,255, +174,175,176,255,175,176,177,255,176,177,179,255,176,178,179,255,176,177,179,255,176,177,179,255,175,177,178,255,173,175,177,255, +172,174,176,255,171,172,174,255,169,170,172,255,168,169,171,255,166,168,169,255,164,165,167,255,163,164,166,255,161,162,164,255, +158,160,161,255,157,158,160,255,156,157,159,255,155,157,158,255,158,159,161,255,159,160,162,255,159,160,162,255,159,160,162,255, +158,159,160,255,156,157,158,255,154,156,157,255,153,154,155,255,151,152,153,255,149,150,151,255,148,149,150,255,146,146,147,255, +143,144,145,255,142,142,142,255,139,139,139,255,136,135,136,255,133,133,133,255,130,129,129,255,125,125,125,255,123,121,120,255, +119,117,115,255,115,112,110,255,109,106,104,255,107,103,100,255,105,101, 98,255,106,103, 99,255,109,106,103,255,113,110,107,255, +120,118,116,255,125,124,122,255,118,116,113,255, 22, 20, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,134,135,136,255,203,205,207,255,202,205,207,255,203,205,208,255,204,206,208,255,204,206,209,255, +204,207,210,255,203,206,209,255,202,205,208,255,202,205,208,255,201,204,207,255,200,203,206,255,199,202,205,255,199,202,205,255, +197,200,203,255,196,199,202,255,196,198,202,255,194,197,200,255,193,196,199,255,191,194,197,255,191,193,196,255,190,192,195,255, +188,190,193,255,186,189,191,255,184,186,188,255,181,183,185,255,178,180,181,255,175,176,178,255,173,174,175,255,170,171,171,255, +169,169,169,255,169,168,168,255,169,169,169,255,170,170,170,255,172,173,173,255,174,175,175,255,175,176,177,255,177,178,179,255, +178,180,181,255,179,180,182,255,180,182,184,255,180,182,183,255,180,182,184,255,180,182,184,255,180,182,184,255,179,181,183,255, +177,179,182,255,176,178,180,255,175,177,179,255,174,176,177,255,172,174,175,255,170,172,173,255,168,170,172,255,167,169,170,255, +164,166,169,255,163,165,167,255,163,165,167,255,163,165,167,255,163,165,167,255,163,165,167,255,162,163,165,255,160,162,163,255, +159,160,161,255,157,158,160,255,155,156,158,255,154,155,156,255,152,152,154,255,150,151,152,255,149,149,150,255,146,147,148,255, +145,145,146,255,142,143,143,255,140,140,140,255,137,137,137,255,134,134,134,255,131,130,130,255,127,126,125,255,123,122,120,255, +119,116,115,255,114,111,109,255,109,106,103,255,106,103, 99,255,104,101, 97,255,105,101, 98,255,107,104,101,255,112,109,106,255, +117,116,114,255,123,121,120,255,110,107,103,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,134,135,136,255,202,204,206,255,202,203,205,255,202,204,206,255,203,205,207,255,203,206,208,255, +204,206,209,255,204,206,209,255,202,205,209,255,202,205,208,255,201,204,207,255,200,203,206,255,200,202,206,255,199,202,205,255, +197,200,203,255,197,200,203,255,195,199,201,255,194,197,200,255,193,196,199,255,192,194,197,255,191,194,196,255,190,192,195,255, +188,190,193,255,186,188,190,255,183,184,187,255,179,181,182,255,175,176,177,255,172,172,172,255,167,167,167,255,166,165,165,255, +166,166,165,255,169,168,168,255,171,171,171,255,173,174,174,255,175,176,176,255,177,178,179,255,179,180,181,255,180,181,182,255, +181,183,184,255,183,184,186,255,184,186,187,255,185,186,188,255,184,186,189,255,184,187,189,255,184,187,189,255,184,186,189,255, +183,186,188,255,182,185,187,255,182,184,186,255,181,183,185,255,180,182,184,255,179,182,184,255,178,180,183,255,178,180,182,255, +176,178,181,255,175,177,180,255,173,176,178,255,172,174,176,255,170,172,174,255,168,170,171,255,165,167,168,255,163,164,166,255, +160,162,163,255,158,160,161,255,157,158,159,255,154,155,156,255,153,154,155,255,151,152,153,255,149,150,151,255,148,148,149,255, +146,146,147,255,144,144,145,255,142,141,142,255,139,138,138,255,135,135,135,255,132,131,131,255,128,127,126,255,123,121,121,255, +118,116,115,255,114,111,109,255,109,106,103,255,106,102, 99,255,104,100, 96,255,104,101, 97,255,106,103, 99,255,111,108,105,255, +116,114,112,255,120,118,116,255, 84, 82, 78,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,134,135,136,255,203,204,206,255,201,203,205,255,202,202,205,255,202,203,204,255,202,204,206,255, +203,205,207,255,203,206,207,255,202,206,208,255,203,205,207,255,202,205,208,255,201,203,206,255,200,203,206,255,199,202,205,255, +198,201,204,255,197,199,203,255,195,198,201,255,194,197,200,255,194,196,199,255,192,194,197,255,191,193,196,255,190,192,195,255, +187,189,191,255,184,186,188,255,180,182,184,255,176,176,178,255,171,171,171,255,166,166,165,255,164,164,163,255,165,165,164,255, +167,167,167,255,170,171,171,255,172,173,174,255,174,174,175,255,176,177,178,255,178,179,180,255,180,181,182,255,182,183,185,255, +184,185,187,255,184,186,188,255,187,188,190,255,187,189,191,255,188,190,192,255,189,191,194,255,189,191,193,255,188,191,193,255, +188,191,193,255,189,190,193,255,187,190,193,255,187,189,192,255,187,189,192,255,186,189,192,255,186,189,192,255,186,189,192,255, +185,188,191,255,184,187,190,255,182,184,187,255,179,181,184,255,176,178,180,255,173,175,176,255,169,171,173,255,166,167,169,255, +163,165,166,255,160,162,163,255,158,159,160,255,157,157,159,255,154,155,156,255,152,153,154,255,151,152,153,255,149,149,150,255, +147,147,148,255,145,146,147,255,143,143,144,255,140,140,140,255,137,137,137,255,133,133,132,255,129,128,127,255,124,123,122,255, +118,116,115,255,113,111,108,255,109,105,102,255,106,102, 99,255,104,100, 96,255,104,100, 96,255,105,101, 98,255,109,105,102,255, +115,112,110,255,117,115,112,255, 64, 60, 58,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,134,135,137,255,203,205,206,255,201,203,205,255,201,203,204,255,200,202,204,255,201,203,204,255, +201,203,205,255,202,204,206,255,203,205,207,255,203,205,207,255,202,205,207,255,201,204,206,255,200,203,206,255,200,202,205,255, +198,201,204,255,197,200,203,255,196,198,201,255,194,197,200,255,194,196,199,255,192,194,197,255,191,193,196,255,188,191,192,255, +186,187,189,255,182,183,184,255,176,177,178,255,171,172,172,255,167,166,166,255,165,165,164,255,166,167,166,255,168,169,169,255, +170,171,171,255,171,172,173,255,172,173,174,255,173,174,175,255,174,175,176,255,176,177,178,255,179,180,181,255,181,182,184,255, +183,185,186,255,185,187,189,255,188,189,191,255,188,190,193,255,190,192,195,255,191,193,196,255,192,194,197,255,192,194,197,255, +192,194,197,255,192,194,197,255,192,194,197,255,192,194,197,255,191,194,197,255,191,194,197,255,191,194,197,255,191,193,197,255, +190,193,196,255,189,192,195,255,187,190,193,255,185,187,190,255,181,184,187,255,177,179,182,255,173,175,177,255,170,172,174,255, +167,169,170,255,164,165,166,255,161,162,163,255,158,159,160,255,155,156,158,255,153,154,156,255,152,153,154,255,150,151,151,255, +148,149,150,255,147,147,148,255,144,144,145,255,142,142,142,255,138,138,138,255,134,134,134,255,130,129,128,255,125,123,122,255, +119,117,115,255,113,111,109,255,109,106,103,255,106,102, 99,255,104,100, 96,255,103, 99, 95,255,104,101, 97,255,108,104,101,255, +113,110,107,255,114,111,108,255, 45, 44, 42,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,205,209,255,202,204,207,255,202,204,206,255,201,203,205,255,201,203,204,255, +201,202,204,255,201,203,204,255,202,203,205,255,202,204,206,255,202,204,206,255,201,203,206,255,201,203,206,255,200,203,205,255, +198,201,204,255,198,200,203,255,197,198,201,255,195,197,200,255,193,196,198,255,192,194,196,255,189,191,194,255,187,188,190,255, +182,183,185,255,178,178,179,255,172,173,173,255,168,168,168,255,167,167,167,255,168,168,169,255,170,171,171,255,172,172,173,255, +173,174,175,255,173,174,175,255,173,174,175,255,173,174,175,255,173,175,176,255,174,176,177,255,177,178,179,255,179,180,182,255, +182,184,185,255,185,187,189,255,188,190,192,255,190,192,195,255,191,193,196,255,192,194,197,255,193,196,198,255,194,196,199,255, +194,197,200,255,194,197,200,255,194,197,200,255,194,197,200,255,193,196,199,255,193,196,199,255,193,196,199,255,193,196,199,255, +193,196,199,255,193,195,198,255,191,194,197,255,189,191,194,255,186,188,191,255,182,185,187,255,178,180,183,255,174,176,178,255, +170,172,174,255,166,168,169,255,163,165,166,255,160,162,163,255,157,158,160,255,155,156,158,255,153,154,155,255,152,152,153,255, +150,151,152,255,148,148,149,255,146,146,147,255,143,143,144,255,139,139,140,255,136,135,135,255,131,130,130,255,125,124,123,255, +120,118,116,255,114,112,110,255,109,106,104,255,106,103, 99,255,104,100, 96,255,102, 98, 94,255,104,100, 96,255,107,104,100,255, +112,109,106,255,110,107,103,255, 24, 23, 22,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,204,206,209,255,202,205,208,255,203,206,208,255,203,205,208,255,202,204,206,255, +202,204,205,255,201,203,204,255,200,202,203,255,201,202,204,255,201,203,204,255,201,203,206,255,201,203,205,255,200,202,205,255, +198,201,203,255,198,200,203,255,196,198,201,255,195,197,200,255,193,196,198,255,191,193,195,255,188,189,191,255,184,185,187,255, +179,179,180,255,174,174,175,255,170,170,170,255,170,170,170,255,171,171,171,255,172,173,174,255,174,175,176,255,175,176,177,255, +176,177,178,255,174,175,176,255,173,174,176,255,173,174,175,255,174,175,175,255,173,174,176,255,175,176,177,255,178,179,180,255, +181,182,184,255,184,186,188,255,187,189,192,255,190,192,195,255,191,194,196,255,193,196,198,255,194,196,199,255,195,197,200,255, +196,198,201,255,196,199,202,255,196,199,202,255,196,198,202,255,195,197,201,255,195,198,201,255,195,198,201,255,195,198,201,255, +195,198,201,255,195,198,201,255,194,197,200,255,191,194,198,255,190,192,195,255,186,189,191,255,182,185,187,255,178,180,183,255, +174,176,178,255,170,172,174,255,167,168,169,255,163,164,166,255,160,161,163,255,157,158,159,255,156,156,158,255,153,154,155,255, +151,152,153,255,150,150,151,255,148,148,149,255,145,145,145,255,142,142,142,255,137,137,137,255,132,131,131,255,127,126,125,255, +121,119,117,255,115,113,110,255,110,107,105,255,107,103,100,255,104,100, 97,255,102, 99, 94,255,103,100, 96,255,106,103,100,255, +111,108,105,255,107,103,100,255, 18, 18, 17,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,206,209,255,203,205,209,255,202,206,209,255,202,206,209,255,203,206,208,255, +203,205,208,255,203,204,206,255,202,203,205,255,200,203,204,255,200,202,203,255,200,202,204,255,201,203,205,255,199,201,204,255, +199,201,203,255,198,200,203,255,197,200,201,255,195,197,200,255,193,195,197,255,190,192,194,255,186,188,190,255,182,183,183,255, +176,177,177,255,172,173,173,255,171,172,172,255,172,173,173,255,174,175,176,255,176,177,178,255,177,178,180,255,177,178,180,255, +177,178,179,255,176,177,178,255,174,175,177,255,174,175,176,255,173,174,175,255,173,174,175,255,174,175,177,255,177,178,179,255, +179,181,183,255,183,185,187,255,187,189,191,255,190,192,195,255,191,194,198,255,193,196,199,255,194,197,200,255,196,198,201,255, +196,199,202,255,197,199,202,255,197,200,203,255,197,199,203,255,196,199,202,255,196,199,202,255,196,199,202,255,196,199,202,255, +196,199,202,255,196,199,202,255,195,198,202,255,194,197,200,255,192,195,198,255,190,193,195,255,186,189,191,255,182,185,187,255, +178,180,182,255,174,176,178,255,170,171,173,255,167,168,169,255,163,164,166,255,160,161,162,255,157,158,159,255,155,156,157,255, +153,154,155,255,151,152,153,255,149,149,150,255,147,147,147,255,143,143,143,255,139,139,139,255,134,133,133,255,128,127,126,255, +122,120,118,255,117,115,112,255,112,109,106,255,108,105,102,255,105,101, 98,255,104,100, 95,255,103,100, 95,255,106,102, 99,255, +110,107,103,255, 99, 95, 91,255, 13, 12, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,134,135,137,255,203,206,209,255,202,205,208,255,203,206,209,255,202,206,208,255,203,205,209,255, +204,206,209,255,203,206,208,255,203,205,208,255,202,204,206,255,201,203,205,255,201,202,204,255,200,202,204,255,200,202,204,255, +199,201,203,255,199,201,203,255,197,200,202,255,196,198,201,255,194,196,198,255,190,192,193,255,185,187,188,255,180,181,182,255, +176,176,177,255,174,174,175,255,174,175,175,255,175,176,178,255,177,178,180,255,179,181,182,255,179,181,183,255,179,180,182,255, +178,179,181,255,177,178,180,255,175,177,178,255,174,175,177,255,173,174,175,255,173,174,175,255,174,175,176,255,175,176,178,255, +178,180,181,255,183,184,186,255,186,189,191,255,189,192,194,255,191,194,197,255,193,196,199,255,195,197,200,255,196,198,201,255, +197,200,203,255,197,199,203,255,197,200,203,255,197,200,203,255,197,200,203,255,196,199,202,255,196,199,202,255,196,199,202,255, +197,199,203,255,197,200,203,255,197,199,203,255,196,199,202,255,195,198,201,255,192,195,198,255,190,192,195,255,186,188,191,255, +182,184,186,255,177,179,182,255,173,175,177,255,169,171,172,255,165,167,168,255,163,164,165,255,160,161,162,255,157,158,159,255, +155,156,157,255,153,154,155,255,151,151,152,255,148,148,149,255,144,145,145,255,141,140,141,255,136,135,135,255,130,129,128,255, +125,123,121,255,119,117,115,255,114,111,108,255,109,107,104,255,106,103, 99,255,103,100, 96,255,104,100, 96,255,106,102, 99,255, +109,106,103,255, 88, 84, 81,255, 8, 8, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,133,135,137,255,202,205,208,255,201,204,207,255,201,204,208,255,202,205,208,255,202,205,209,255, +203,206,210,255,204,206,210,255,204,207,209,255,204,206,209,255,203,206,208,255,202,204,206,255,202,204,205,255,202,203,205,255, +201,203,205,255,200,202,204,255,199,201,203,255,197,199,201,255,195,196,199,255,190,192,194,255,186,188,189,255,181,183,184,255, +177,178,179,255,177,177,178,255,176,177,179,255,179,180,181,255,180,182,183,255,181,183,184,255,181,183,185,255,180,182,184,255, +180,181,183,255,177,179,181,255,176,178,179,255,175,176,178,255,173,174,175,255,172,173,174,255,171,172,173,255,174,175,176,255, +177,179,181,255,181,183,185,255,185,187,190,255,189,191,194,255,191,193,196,255,193,196,199,255,195,197,200,255,196,200,203,255, +197,199,203,255,198,200,204,255,198,200,204,255,197,200,203,255,198,201,204,255,198,201,204,255,198,201,204,255,198,201,204,255, +198,201,203,255,198,201,204,255,198,201,204,255,197,200,203,255,196,199,202,255,195,198,201,255,192,195,198,255,189,192,195,255, +185,187,190,255,181,183,186,255,177,179,180,255,172,174,176,255,169,170,172,255,166,166,168,255,162,164,165,255,160,161,162,255, +157,158,159,255,155,156,157,255,153,153,154,255,150,150,151,255,147,147,148,255,143,143,142,255,138,137,136,255,133,132,131,255, +127,125,124,255,121,119,117,255,117,114,112,255,111,108,105,255,107,104,101,255,104,101, 97,255,104,100, 96,255,107,103,100,255, +109,105,101,255, 67, 64, 61,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,132,134,136,255,199,203,206,255,199,202,205,255,199,203,206,255,201,204,207,255,201,204,208,255, +202,205,208,255,203,205,209,255,203,206,209,255,204,207,210,255,204,207,210,255,203,206,209,255,203,205,208,255,202,204,206,255, +202,204,206,255,201,203,205,255,200,202,205,255,199,201,203,255,197,198,201,255,193,195,197,255,188,190,191,255,183,185,186,255, +180,182,182,255,179,181,182,255,180,181,182,255,181,182,184,255,182,184,186,255,183,184,187,255,182,184,186,255,182,183,185,255, +180,182,184,255,179,180,182,255,176,178,180,255,175,176,178,255,172,174,175,255,171,172,173,255,170,171,173,255,173,174,175,255, +176,178,180,255,180,182,184,255,184,186,189,255,188,190,192,255,190,193,195,255,193,196,199,255,195,197,200,255,196,199,202,255, +198,200,204,255,197,201,203,255,198,201,204,255,198,201,204,255,198,201,204,255,198,201,204,255,198,201,204,255,198,201,204,255, +198,200,204,255,198,201,204,255,198,201,205,255,198,201,204,255,197,200,204,255,196,199,202,255,195,197,201,255,191,194,197,255, +188,191,193,255,184,186,189,255,180,182,184,255,176,178,179,255,172,173,175,255,168,170,171,255,166,166,168,255,162,164,165,255, +160,161,162,255,157,158,159,255,155,156,157,255,152,153,153,255,149,149,149,255,145,145,145,255,141,140,139,255,135,134,133,255, +130,128,127,255,124,122,120,255,119,116,114,255,114,111,109,255,109,106,103,255,106,103, 99,255,106,101, 98,255,108,104,100,255, +108,104,101,255, 39, 37, 35,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,131,132,134,255,196,199,202,255,196,199,202,255,197,200,203,255,197,201,204,255,198,202,205,255, +200,203,207,255,201,204,208,255,202,205,208,255,203,206,209,255,204,207,210,255,204,207,210,255,204,206,209,255,203,206,208,255, +203,205,208,255,203,205,207,255,202,204,207,255,201,203,205,255,199,201,203,255,195,197,200,255,191,193,194,255,186,189,189,255, +184,185,187,255,183,184,186,255,183,184,186,255,183,185,187,255,184,186,188,255,184,186,188,255,183,185,187,255,182,184,187,255, +181,183,185,255,179,181,183,255,176,178,180,255,174,176,177,255,172,173,174,255,170,171,172,255,170,171,172,255,172,173,174,255, +176,177,178,255,180,180,182,255,184,185,188,255,187,189,192,255,190,192,195,255,192,195,198,255,194,197,200,255,197,198,201,255, +197,200,203,255,198,201,204,255,198,201,204,255,198,201,204,255,198,201,204,255,198,201,204,255,198,201,204,255,198,201,204,255, +197,200,203,255,199,201,205,255,199,202,204,255,199,202,205,255,198,201,204,255,197,200,204,255,196,199,202,255,193,196,199,255, +190,193,196,255,187,189,192,255,182,184,187,255,178,180,182,255,174,176,178,255,171,172,174,255,168,169,171,255,165,166,167,255, +162,163,165,255,160,161,162,255,157,158,159,255,155,155,156,255,151,151,152,255,147,147,147,255,143,142,142,255,138,137,136,255, +133,131,130,255,127,125,124,255,122,120,118,255,116,113,111,255,112,109,106,255,108,105,101,255,107,104,100,255,110,107,103,255, +101, 98, 93,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,129,131,133,255,193,196,199,255,192,195,198,255,193,196,199,255,194,197,200,255,196,199,202,255, +197,200,203,255,198,201,204,255,200,203,206,255,201,204,207,255,201,205,208,255,203,206,209,255,203,206,209,255,204,207,210,255, +204,207,210,255,204,207,209,255,204,206,209,255,202,205,207,255,200,203,205,255,198,200,203,255,193,196,199,255,189,191,194,255, +187,189,191,255,185,188,190,255,185,187,190,255,186,188,190,255,186,188,190,255,185,187,190,255,184,186,188,255,183,185,187,255, +182,184,186,255,179,181,183,255,176,179,180,255,174,175,177,255,171,172,173,255,169,170,171,255,169,170,171,255,171,172,174,255, +175,176,178,255,178,180,182,255,182,184,186,255,186,188,190,255,189,191,194,255,192,194,197,255,194,197,200,255,195,198,201,255, +197,199,203,255,198,200,204,255,198,201,204,255,198,200,203,255,198,201,204,255,198,201,204,255,198,201,204,255,197,200,203,255, +199,202,205,255,198,201,204,255,199,202,205,255,198,201,205,255,199,202,205,255,198,201,204,255,196,199,202,255,195,198,201,255, +192,194,197,255,188,190,193,255,185,187,189,255,181,183,185,255,177,179,181,255,174,176,177,255,171,172,173,255,168,169,170,255, +165,167,168,255,163,164,165,255,160,161,161,255,157,157,158,255,154,154,155,255,150,150,150,255,146,145,145,255,141,140,139,255, +135,134,133,255,130,129,127,255,125,124,122,255,119,117,115,255,115,112,109,255,111,108,104,255,110,107,103,255,113,109,105,255, + 34, 33, 31,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,128,129,131,255,190,193,196,255,190,192,195,255,190,193,195,255,190,193,196,255,191,194,197,255, +193,196,199,255,194,197,200,255,195,199,202,255,197,200,204,255,199,202,205,255,200,203,207,255,201,204,208,255,203,206,209,255, +203,206,209,255,203,206,210,255,204,207,210,255,203,206,209,255,202,205,208,255,200,202,205,255,196,199,202,255,193,195,198,255, +190,192,194,255,188,190,193,255,187,189,192,255,187,189,192,255,186,188,191,255,186,188,191,255,184,186,189,255,183,185,188,255, +181,183,186,255,179,181,183,255,176,178,179,255,172,174,175,255,170,171,173,255,167,168,169,255,168,169,170,255,171,172,173,255, +174,175,177,255,178,179,181,255,181,183,185,255,185,187,189,255,188,190,193,255,191,193,196,255,193,195,198,255,195,197,200,255, +196,199,202,255,197,199,203,255,197,200,203,255,198,201,204,255,198,200,203,255,198,201,204,255,198,201,204,255,197,200,203,255, +199,202,205,255,198,201,204,255,199,202,205,255,199,202,205,255,199,202,205,255,198,201,204,255,197,199,203,255,196,198,201,255, +193,195,198,255,190,193,195,255,186,188,192,255,183,185,187,255,179,181,183,255,176,178,180,255,174,175,176,255,171,172,173,255, +168,169,170,255,165,165,166,255,163,164,165,255,160,160,161,255,156,156,158,255,152,152,153,255,148,148,148,255,143,143,143,255, +139,137,136,255,134,132,131,255,128,127,125,255,123,121,118,255,117,114,112,255,113,110,106,255,113,110,106,255, 76, 73, 70,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,127,128,130,255,188,191,194,255,187,190,193,255,187,190,193,255,188,190,193,255,188,191,193,255, +190,192,195,255,190,193,196,255,192,194,198,255,194,197,200,255,195,198,202,255,197,200,204,255,199,202,205,255,200,203,207,255, +201,204,208,255,203,206,209,255,203,206,210,255,203,206,210,255,203,206,209,255,201,204,207,255,199,201,204,255,195,198,201,255, +192,195,198,255,190,192,195,255,188,191,193,255,187,190,193,255,187,189,192,255,186,189,191,255,184,187,189,255,183,185,188,255, +181,183,185,255,178,180,182,255,175,176,178,255,171,173,174,255,168,169,170,255,166,167,168,255,167,168,169,255,170,171,172,255, +173,174,176,255,176,178,180,255,181,182,183,255,184,186,188,255,187,189,192,255,189,192,194,255,192,195,198,255,194,197,200,255, +195,198,201,255,197,199,202,255,198,199,202,255,198,200,203,255,197,201,204,255,198,201,204,255,198,201,204,255,197,200,203,255, +198,201,204,255,199,202,205,255,199,201,204,255,198,202,205,255,199,202,205,255,198,201,204,255,197,199,202,255,196,198,201,255, +194,196,199,255,191,193,196,255,188,190,192,255,185,187,189,255,182,184,186,255,179,180,181,255,175,177,178,255,173,175,176,255, +171,172,173,255,168,169,170,255,165,166,167,255,163,163,164,255,159,159,160,255,155,156,156,255,152,151,151,255,147,147,146,255, +142,142,141,255,137,136,134,255,131,130,128,255,126,123,122,255,120,117,114,255,116,113,110,255,103,100, 97,255, 16, 15, 14,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,126,128,129,255,188,190,193,255,186,189,192,255,185,188,191,255,185,188,191,255,186,188,191,255, +186,189,192,255,187,190,193,255,189,192,195,255,190,193,196,255,192,195,198,255,194,197,200,255,196,199,202,255,197,200,203,255, +199,202,206,255,200,203,207,255,201,204,208,255,202,205,208,255,202,205,208,255,201,204,207,255,199,202,206,255,196,199,202,255, +193,196,199,255,191,194,197,255,190,192,195,255,188,190,193,255,187,190,192,255,186,188,191,255,184,187,189,255,182,184,187,255, +180,182,184,255,177,179,181,255,174,175,177,255,170,172,173,255,167,168,169,255,165,166,167,255,166,167,168,255,169,170,171,255, +173,174,175,255,176,177,179,255,179,181,183,255,183,185,187,255,185,188,190,255,188,191,193,255,191,194,196,255,193,195,198,255, +195,198,200,255,196,198,201,255,196,199,202,255,197,199,202,255,198,200,203,255,198,200,203,255,198,201,204,255,198,201,204,255, +198,200,203,255,198,201,204,255,198,201,204,255,198,201,204,255,198,200,203,255,197,201,203,255,196,198,201,255,195,198,200,255, +193,196,198,255,191,193,195,255,188,190,192,255,186,188,190,255,183,185,186,255,181,182,184,255,178,179,181,255,175,177,178,255, +174,175,176,255,171,172,173,255,168,169,170,255,166,166,167,255,162,163,164,255,159,159,160,255,155,155,155,255,151,150,150,255, +146,146,145,255,140,140,139,255,135,133,132,255,128,127,125,255,123,121,118,255,118,115,111,255, 48, 46, 44,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,127,129,130,255,188,192,194,255,187,190,193,255,186,189,192,255,186,188,191,255,185,188,191,255, +185,188,191,255,186,188,191,255,186,189,192,255,188,190,193,255,189,192,194,255,191,194,197,255,193,196,199,255,195,198,201,255, +196,199,202,255,198,201,204,255,199,203,206,255,200,203,207,255,200,204,207,255,200,203,206,255,199,202,205,255,197,200,203,255, +194,197,200,255,192,195,198,255,190,193,196,255,188,191,194,255,187,190,193,255,186,188,191,255,184,186,189,255,182,184,186,255, +178,180,183,255,176,177,178,255,172,173,175,255,168,169,171,255,166,167,168,255,165,165,166,255,166,167,168,255,169,170,171,255, +172,173,174,255,175,176,178,255,179,180,182,255,181,183,185,255,185,186,189,255,187,190,192,255,189,192,194,255,192,194,197,255, +193,196,199,255,195,198,201,255,196,198,201,255,197,200,203,255,197,199,202,255,197,199,202,255,198,201,204,255,198,201,204,255, +197,201,204,255,197,201,203,255,197,200,203,255,198,200,203,255,197,200,202,255,196,199,202,255,195,198,201,255,194,196,198,255, +192,194,196,255,190,193,194,255,188,190,192,255,186,188,190,255,184,185,187,255,182,183,185,255,180,181,182,255,178,179,180,255, +176,177,178,255,174,175,176,255,171,172,173,255,168,169,170,255,166,167,167,255,163,163,164,255,159,159,160,255,155,155,155,255, +150,150,149,255,145,144,142,255,138,136,135,255,131,129,127,255,128,124,121,255, 67, 65, 63,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,128,129,131,255,190,193,195,255,188,191,194,255,188,191,193,255,187,189,192,255,186,189,192,255, +186,188,191,255,185,188,191,255,185,188,191,255,186,189,192,255,188,191,193,255,189,192,195,255,191,194,197,255,193,196,199,255, +194,197,200,255,196,199,202,255,197,200,204,255,198,201,205,255,199,202,206,255,199,202,206,255,198,201,204,255,197,200,203,255, +194,197,200,255,193,196,199,255,191,193,197,255,188,191,194,255,187,190,193,255,185,188,191,255,183,185,187,255,181,183,185,255, +177,179,181,255,174,175,177,255,170,171,173,255,166,167,169,255,165,166,167,255,165,165,166,255,165,166,167,255,168,169,170,255, +171,172,174,255,174,176,177,255,177,179,180,255,180,182,184,255,183,185,187,255,185,187,190,255,188,190,193,255,191,193,196,255, +192,195,197,255,194,196,199,255,195,198,201,255,196,199,202,255,197,200,203,255,198,200,203,255,198,200,203,255,198,200,203,255, +198,200,203,255,197,199,202,255,197,199,202,255,196,199,201,255,195,197,200,255,195,197,199,255,194,196,198,255,192,194,196,255, +191,193,194,255,190,191,193,255,188,189,191,255,186,188,189,255,184,186,187,255,183,184,185,255,181,182,183,255,180,181,182,255, +178,179,180,255,176,177,178,255,174,175,176,255,172,173,173,255,169,170,170,255,166,167,167,255,163,163,163,255,159,159,159,255, +155,154,154,255,149,148,148,255,142,141,139,255,136,133,131,255, 73, 71, 68,255, 2, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,129,130,132,255,192,195,198,255,190,193,196,255,190,193,195,255,189,192,195,255,189,191,193,255, +187,190,193,255,187,190,193,255,187,190,193,255,187,190,193,255,187,190,193,255,189,191,194,255,190,193,196,255,191,194,197,255, +193,196,199,255,194,197,200,255,195,198,202,255,197,200,203,255,197,200,203,255,197,200,203,255,196,200,203,255,196,199,202,255, +194,197,200,255,193,196,199,255,191,194,197,255,188,191,194,255,187,190,193,255,185,187,190,255,182,184,187,255,179,181,183,255, +176,178,180,255,172,174,176,255,168,170,171,255,165,166,167,255,163,164,165,255,164,164,165,255,164,165,166,255,168,169,170,255, +171,172,173,255,173,174,176,255,176,178,179,255,179,181,183,255,181,183,185,255,184,186,189,255,186,189,191,255,189,191,194,255, +191,193,196,255,193,195,198,255,194,196,199,255,195,198,201,255,196,198,201,255,196,199,201,255,196,198,201,255,196,198,201,255, +195,198,200,255,195,197,200,255,194,196,198,255,194,195,198,255,193,195,197,255,191,193,195,255,191,192,194,255,190,192,193,255, +189,190,192,255,188,189,191,255,187,188,189,255,186,186,187,255,185,186,187,255,183,184,186,255,183,184,184,255,181,182,182,255, +180,181,181,255,179,179,180,255,176,178,178,255,175,176,176,255,173,173,174,255,170,170,171,255,167,167,167,255,163,163,163,255, +158,157,156,255,153,152,151,255,143,142,140,255, 90, 89, 87,255, 2, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,129,131,132,255,193,196,199,255,191,194,197,255,191,193,196,255,190,193,196,255,190,192,195,255, +189,192,195,255,188,191,194,255,188,191,194,255,188,191,194,255,188,191,194,255,189,192,195,255,189,192,195,255,190,193,196,255, +192,195,198,255,193,196,199,255,194,197,200,255,195,198,201,255,196,199,202,255,196,199,202,255,196,199,202,255,195,198,201,255, +193,196,200,255,192,195,198,255,190,193,196,255,188,191,194,255,186,188,192,255,184,186,188,255,181,183,186,255,178,180,182,255, +175,176,177,255,171,172,173,255,166,167,169,255,164,164,165,255,163,163,165,255,163,164,165,255,164,165,166,255,167,168,169,255, +169,170,172,255,172,173,175,255,175,176,178,255,177,179,181,255,180,182,184,255,183,185,187,255,184,187,189,255,187,189,192,255, +189,191,194,255,191,194,196,255,193,195,198,255,194,197,199,255,194,197,200,255,195,197,200,255,195,197,200,255,194,196,198,255, +193,195,197,255,192,194,196,255,191,192,194,255,189,191,192,255,189,190,191,255,188,189,191,255,188,189,189,255,187,188,189,255, +187,188,188,255,186,187,187,255,186,186,187,255,185,185,186,255,184,185,185,255,184,184,184,255,183,184,184,255,182,182,183,255, +181,182,182,255,180,181,181,255,179,180,180,255,177,178,178,255,175,176,176,255,173,173,173,255,170,170,169,255,164,164,164,255, +162,161,160,255,142,141,139,255, 65, 63, 62,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,129,131,133,255,194,196,200,255,191,194,197,255,191,194,197,255,191,194,197,255,190,193,196,255, +190,193,196,255,190,192,195,255,189,192,195,255,189,192,195,255,189,192,195,255,189,192,195,255,190,192,195,255,190,193,196,255, +192,194,198,255,192,195,198,255,193,196,200,255,194,197,200,255,194,198,201,255,195,198,201,255,195,198,201,255,194,197,200,255, +193,196,200,255,192,194,198,255,190,193,196,255,188,190,193,255,186,189,191,255,183,185,188,255,180,182,184,255,176,178,180,255, +172,174,176,255,168,170,171,255,166,166,167,255,163,164,165,255,162,163,164,255,163,163,164,255,164,164,165,255,166,167,168,255, +169,170,171,255,171,172,174,255,173,175,176,255,176,178,180,255,179,181,183,255,181,183,185,255,183,185,187,255,185,187,190,255, +187,189,191,255,189,191,194,255,190,192,195,255,191,193,196,255,192,194,196,255,192,194,196,255,192,193,196,255,190,192,194,255, +189,191,192,255,188,189,190,255,186,187,188,255,185,186,187,255,185,185,186,255,184,185,185,255,184,185,185,255,184,185,185,255, +184,184,184,255,184,184,184,255,184,184,184,255,184,184,184,255,184,184,184,255,184,184,184,255,183,184,183,255,183,183,183,255, +183,183,182,255,181,182,182,255,180,180,180,255,179,178,178,255,177,177,177,255,173,173,172,255,171,171,169,255,167,166,164,255, +111,109,108,255, 21, 21, 20,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,130,131,133,255,194,197,200,255,193,195,199,255,193,195,199,255,192,194,198,255,192,195,198,255, +191,194,197,255,191,194,197,255,190,193,196,255,190,192,195,255,189,192,195,255,189,192,195,255,190,193,196,255,190,194,197,255, +191,194,197,255,191,194,197,255,192,195,198,255,193,196,199,255,193,196,199,255,193,196,200,255,193,196,199,255,193,196,199,255, +192,195,198,255,191,194,197,255,190,192,195,255,187,190,193,255,186,187,191,255,182,185,187,255,179,181,183,255,175,177,179,255, +171,173,174,255,167,168,170,255,164,165,166,255,162,164,165,255,161,162,163,255,162,163,164,255,163,164,165,255,166,167,168,255, +168,169,171,255,171,172,173,255,173,174,176,255,176,177,179,255,177,179,181,255,180,181,183,255,181,183,186,255,183,185,187,255, +184,186,190,255,186,188,190,255,187,189,191,255,187,189,191,255,188,189,191,255,187,189,191,255,186,188,189,255,185,187,188,255, +184,185,186,255,182,183,184,255,181,182,182,255,181,181,181,255,181,181,181,255,181,181,180,255,181,181,180,255,181,181,181,255, +182,182,181,255,182,182,181,255,182,182,182,255,182,182,182,255,182,183,182,255,183,184,182,255,183,183,182,255,182,181,181,255, +183,183,181,255,182,182,181,255,180,180,179,255,178,178,177,255,170,170,169,255,160,159,156,255,117,116,115,255, 33, 32, 31,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,130,131,133,255,194,197,200,255,193,196,199,255,193,195,199,255,193,194,199,255,192,194,198,255, +192,195,198,255,192,194,198,255,191,193,197,255,191,193,196,255,190,193,196,255,190,192,195,255,190,192,195,255,191,193,196,255, +191,194,197,255,191,194,197,255,192,195,198,255,192,195,198,255,192,195,199,255,193,196,199,255,192,195,199,255,192,195,198,255, +191,194,197,255,190,193,196,255,189,191,194,255,187,189,192,255,185,187,189,255,181,184,186,255,178,180,182,255,175,176,178,255, +170,172,173,255,166,167,168,255,163,164,165,255,162,163,164,255,161,162,163,255,162,163,164,255,163,164,165,255,166,167,168,255, +168,169,170,255,170,171,172,255,173,174,175,255,174,176,177,255,176,178,180,255,178,180,181,255,180,182,183,255,181,182,184,255, +182,184,186,255,183,184,186,255,183,184,186,255,182,184,185,255,182,183,184,255,181,183,184,255,181,182,182,255,180,181,182,255, +179,180,180,255,178,178,178,255,177,178,178,255,177,177,177,255,177,177,177,255,178,178,178,255,179,179,179,255,179,179,179,255, +180,180,180,255,181,181,180,255,181,181,181,255,182,182,181,255,182,182,182,255,182,182,182,255,183,182,182,255,183,183,181,255, +175,174,173,255,148,148,147,255,125,124,124,255, 93, 93, 91,255, 55, 55, 54,255, 20, 20, 19,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,129,131,132,255,193,196,199,255,192,195,198,255,192,195,198,255,192,194,198,255,192,195,198,255, +191,194,197,255,192,195,198,255,191,193,197,255,190,194,197,255,191,194,197,255,189,192,195,255,190,193,196,255,191,192,195,255, +190,194,197,255,191,194,196,255,191,194,198,255,192,195,198,255,192,195,198,255,192,195,198,255,192,195,198,255,192,195,198,255, +191,194,197,255,190,192,196,255,188,191,194,255,186,188,191,255,184,186,189,255,181,182,185,255,177,179,181,255,173,174,176,255, +169,170,172,255,166,167,168,255,163,164,165,255,162,163,164,255,162,163,164,255,162,163,164,255,163,164,165,255,166,167,168,255, +168,169,170,255,169,170,172,255,172,173,174,255,173,175,176,255,176,177,179,255,177,178,180,255,178,179,181,255,179,181,182,255, +180,181,182,255,179,180,182,255,179,180,181,255,178,179,180,255,177,177,178,255,176,177,178,255,176,177,177,255,176,176,176,255, +176,176,176,255,175,175,175,255,175,175,175,255,175,175,175,255,175,175,175,255,176,176,176,255,177,177,177,255,177,177,177,255, +178,178,178,255,178,178,178,255,178,178,179,255,179,179,178,255,177,177,175,255,170,170,168,255,162,161,159,255,151,149,148,255, + 51, 50, 50,255, 9, 9, 9,255, 6, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,129,131,132,255,192,195,199,255,191,194,197,255,191,194,197,255,191,194,197,255,191,194,197,255, +191,194,197,255,190,193,196,255,191,194,197,255,191,193,196,255,190,193,196,255,189,192,195,255,189,193,196,255,189,192,195,255, +190,193,196,255,190,193,196,255,191,194,196,255,190,193,197,255,191,194,197,255,191,194,197,255,191,194,197,255,191,194,197,255, +190,193,196,255,189,192,195,255,188,191,194,255,185,188,191,255,183,185,187,255,180,182,184,255,176,178,180,255,172,174,175,255, +169,170,171,255,165,166,167,255,163,164,165,255,162,163,164,255,162,163,164,255,163,164,165,255,164,165,166,255,166,166,167,255, +168,169,170,255,170,171,172,255,171,172,174,255,173,174,176,255,174,175,177,255,176,177,177,255,176,177,179,255,177,178,179,255, +177,178,179,255,176,177,178,255,175,176,177,255,174,175,176,255,173,173,174,255,173,173,173,255,172,173,173,255,172,173,173,255, +172,173,173,255,172,172,172,255,173,173,173,255,173,173,173,255,174,174,174,255,174,174,174,255,174,174,174,255,173,173,173,255, +172,172,172,255,169,167,166,255,161,160,157,255,152,151,148,255,147,146,144,255,148,147,146,255,143,141,139,255, 58, 57, 55,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,129,130,131,255,192,195,198,255,191,194,197,255,191,194,197,255,191,194,197,255,190,194,197,255, +190,194,197,255,190,194,197,255,190,193,196,255,190,193,196,255,189,192,195,255,190,193,196,255,190,193,196,255,190,193,196,255, +189,192,195,255,189,192,195,255,190,193,196,255,190,193,197,255,190,193,196,255,190,193,196,255,190,194,197,255,190,193,196,255, +189,192,195,255,188,191,194,255,187,189,192,255,185,187,190,255,182,184,187,255,178,181,183,255,175,176,179,255,171,173,174,255, +168,169,170,255,165,166,167,255,164,165,166,255,163,164,165,255,162,163,164,255,163,164,165,255,165,166,166,255,166,167,168,255, +168,169,170,255,169,170,171,255,171,172,173,255,172,173,174,255,173,174,176,255,174,175,176,255,175,176,177,255,175,176,177,255, +174,175,176,255,173,174,175,255,172,173,173,255,171,172,172,255,170,171,170,255,170,170,170,255,170,170,170,255,171,171,171,255, +171,171,171,255,171,172,172,255,171,172,172,255,171,171,171,255,171,171,171,255,170,170,170,255,168,168,167,255,160,159,157,255, +146,144,140,255,140,137,134,255,141,139,137,255,146,145,143,255,148,147,145,255,141,139,137,255, 49, 47, 46,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,128,130,131,255,191,194,197,255,190,193,196,255,190,193,196,255,190,193,196,255,190,193,196,255, +190,193,196,255,191,193,196,255,189,193,196,255,189,192,195,255,189,193,196,255,190,193,196,255,190,193,196,255,190,193,196,255, +190,193,196,255,190,193,195,255,189,192,196,255,190,193,197,255,191,194,196,255,191,194,197,255,190,193,196,255,190,193,196,255, +188,192,195,255,187,190,193,255,186,188,191,255,183,186,188,255,181,183,185,255,178,180,181,255,174,176,177,255,171,172,174,255, +168,169,170,255,165,166,167,255,164,165,166,255,163,164,165,255,163,164,165,255,164,165,166,255,165,166,166,255,167,167,168,255, +168,168,169,255,169,170,170,255,171,171,172,255,172,172,173,255,173,174,175,255,173,174,175,255,174,174,175,255,174,174,175,255, +173,173,174,255,172,172,173,255,171,172,172,255,170,170,170,255,169,169,169,255,169,169,169,255,169,169,169,255,170,169,169,255, +170,170,170,255,169,169,169,255,169,169,169,255,168,167,167,255,166,165,164,255,162,160,159,255,148,146,143,255,131,127,122,255, +134,130,127,255,139,137,134,255,143,141,140,255,145,144,141,255,139,137,135,255, 38, 38, 37,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,127,129,131,255,190,193,196,255,190,193,194,255,190,193,195,255,190,193,196,255,189,193,196,255, +189,193,196,255,189,193,196,255,189,193,196,255,189,193,196,255,189,192,195,255,190,193,196,255,190,193,196,255,190,193,196,255, +190,193,195,255,189,192,195,255,189,193,195,255,190,193,196,255,190,193,196,255,190,192,195,255,189,193,196,255,189,192,195,255, +188,190,193,255,187,189,192,255,185,188,190,255,182,185,187,255,180,182,184,255,177,179,180,255,174,175,176,255,170,171,173,255, +168,169,170,255,166,166,167,255,164,165,166,255,163,164,165,255,163,165,166,255,164,165,165,255,165,166,166,255,167,167,168,255, +168,168,169,255,169,169,170,255,170,171,171,255,171,171,172,255,171,172,173,255,173,173,173,255,172,173,174,255,172,173,173,255, +173,172,173,255,172,172,172,255,172,172,172,255,172,172,172,255,172,172,172,255,172,172,172,255,172,172,172,255,171,171,171,255, +170,170,170,255,168,168,167,255,165,165,165,255,162,162,161,255,156,154,153,255,143,140,136,255,127,123,117,255,131,128,123,255, +135,133,131,255,138,137,135,255,144,142,140,255,135,133,131,255, 31, 30, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,128,129,131,255,190,193,196,255,190,193,195,255,189,193,195,255,189,192,195,255,189,192,195,255, +190,192,195,255,189,192,195,255,190,192,195,255,190,192,195,255,189,193,196,255,189,192,195,255,189,192,195,255,189,192,195,255, +189,192,196,255,190,193,196,255,190,192,195,255,190,192,195,255,190,192,195,255,189,193,196,255,189,192,195,255,188,191,194,255, +187,190,193,255,185,188,191,255,184,186,188,255,182,184,186,255,179,180,182,255,175,176,179,255,173,174,175,255,170,171,172,255, +168,168,169,255,166,167,167,255,165,166,166,255,164,165,165,255,164,165,166,255,164,165,166,255,165,165,166,255,166,166,167,255, +167,167,168,255,168,168,169,255,169,169,169,255,169,170,169,255,171,170,170,255,173,173,173,255,175,175,175,255,177,177,176,255, +177,177,176,255,176,176,175,255,176,176,176,255,177,177,176,255,176,177,177,255,176,176,176,255,175,175,175,255,173,173,173,255, +170,170,170,255,166,166,165,255,161,160,160,255,154,153,151,255,142,140,137,255,131,127,121,255,129,126,121,255,134,131,128,255, +137,135,132,255,140,139,136,255,125,123,121,255, 28, 28, 27,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,129,130,131,255,191,194,197,255,190,192,195,255,190,192,195,255,190,193,196,255,190,193,196,255, +190,193,196,255,190,193,196,255,190,193,196,255,190,193,196,255,190,194,196,255,190,193,196,255,190,193,196,255,190,193,196,255, +190,193,196,255,190,194,197,255,190,192,195,255,189,192,196,255,189,193,196,255,190,192,195,255,188,191,194,255,188,190,193,255, +186,189,191,255,184,187,189,255,182,184,187,255,180,181,183,255,177,179,180,255,174,175,177,255,171,172,173,255,168,170,171,255, +168,168,169,255,165,166,166,255,165,166,166,255,165,165,166,255,165,165,165,255,165,165,165,255,165,165,164,255,165,164,164,255, +166,165,164,255,169,168,167,255,174,173,172,255,181,182,181,255,184,185,185,255,188,189,189,255,190,191,191,255,192,193,194,255, +193,194,193,255,191,192,192,255,190,191,191,255,188,188,189,255,186,187,187,255,183,184,184,255,180,180,181,255,175,176,176,255, +170,170,170,255,164,164,163,255,156,155,154,255,146,144,142,255,135,133,128,255,130,127,122,255,133,131,127,255,135,132,130,255, +139,137,135,255,125,122,119,255, 14, 14, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,129,131,132,255,193,196,199,255,192,195,198,255,191,194,197,255,192,195,198,255,192,194,198,255, +192,194,198,255,192,195,198,255,191,194,198,255,191,194,198,255,191,194,198,255,191,194,197,255,191,194,197,255,191,194,197,255, +190,193,196,255,191,194,196,255,190,192,197,255,189,193,195,255,189,192,195,255,188,191,194,255,188,190,193,255,186,188,192,255, +185,187,190,255,183,185,187,255,181,183,184,255,178,180,182,255,175,176,178,255,173,174,175,255,170,171,172,255,168,169,170,255, +167,167,168,255,165,165,166,255,164,164,165,255,163,163,163,255,162,162,161,255,161,161,160,255,164,162,162,255,169,169,167,255, +176,176,176,255,180,180,181,255,182,183,183,255,183,184,185,255,186,187,188,255,188,189,191,255,191,193,194,255,194,195,196,255, +195,196,198,255,196,198,198,255,196,197,198,255,195,197,197,255,193,194,195,255,190,191,192,255,185,186,186,255,178,178,179,255, +171,171,170,255,161,161,160,255,153,151,149,255,142,140,137,255,135,132,127,255,134,132,128,255,136,133,131,255,138,136,134,255, +120,118,114,255, 10, 10, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,130,132,134,255,195,198,201,255,194,197,200,255,193,196,199,255,193,196,199,255,193,196,199,255, +193,196,199,255,192,195,199,255,192,195,199,255,192,195,198,255,192,195,198,255,192,195,198,255,191,194,197,255,192,195,198,255, +191,193,197,255,190,194,197,255,190,192,196,255,189,192,195,255,189,191,194,255,188,190,193,255,186,189,192,255,185,187,190,255, +183,186,188,255,181,183,186,255,179,181,182,255,177,178,179,255,174,174,175,255,171,172,173,255,169,170,171,255,167,168,168,255, +166,166,166,255,164,164,164,255,161,161,161,255,159,157,155,255,163,163,161,255,170,169,169,255,176,176,176,255,178,179,179,255, +179,180,181,255,180,181,182,255,182,183,184,255,184,185,186,255,186,188,189,255,189,190,192,255,191,193,195,255,194,195,197,255, +195,197,199,255,196,198,200,255,197,199,200,255,197,198,200,255,196,198,199,255,193,195,195,255,187,188,189,255,179,180,180,255, +170,170,169,255,160,160,158,255,150,149,147,255,142,140,136,255,138,135,132,255,137,135,132,255,138,136,133,255, 98, 97, 94,255, + 13, 13, 12,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,132,134,135,255,198,201,204,255,196,199,202,255,195,198,202,255,195,198,201,255,194,197,201,255, +195,198,200,255,194,197,200,255,193,196,199,255,194,197,199,255,193,196,199,255,192,196,198,255,193,195,199,255,192,194,197,255, +191,194,197,255,190,194,197,255,191,192,195,255,189,191,194,255,188,191,194,255,187,190,191,255,185,188,190,255,184,186,188,255, +181,183,185,255,179,181,183,255,177,178,179,255,174,175,176,255,172,173,174,255,170,170,171,255,167,167,168,255,165,165,165,255, +163,162,161,255,159,158,157,255,158,156,154,255,170,170,170,255,175,175,176,255,176,177,178,255,177,178,179,255,179,180,181,255, +180,181,182,255,181,183,184,255,183,185,186,255,185,187,188,255,187,188,190,255,189,191,193,255,191,193,195,255,193,194,197,255, +194,196,199,255,195,197,200,255,196,198,201,255,196,198,199,255,195,196,198,255,192,193,194,255,187,187,188,255,178,178,178,255, +169,169,168,255,159,158,157,255,149,148,145,255,142,140,138,255,140,138,135,255,141,139,136,255,110,107,104,255, 2, 2, 1,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,134,135,137,255,200,203,207,255,198,202,205,255,198,201,204,255,197,200,203,255,197,200,203,255, +196,199,202,255,195,198,202,255,195,198,201,255,195,197,201,255,194,197,200,255,193,196,199,255,193,196,199,255,192,195,199,255, +191,194,197,255,191,193,196,255,189,192,195,255,188,191,194,255,187,190,193,255,185,188,190,255,184,186,188,255,182,184,185,255, +180,181,183,255,177,178,180,255,174,175,177,255,172,173,174,255,170,170,171,255,167,167,167,255,164,164,164,255,160,159,158,255, +158,157,155,255,163,163,161,255,174,174,174,255,175,176,176,255,176,177,178,255,178,179,180,255,180,181,181,255,180,182,182,255, +181,183,184,255,183,185,186,255,184,186,188,255,186,188,189,255,188,190,192,255,189,191,194,255,191,193,195,255,192,195,196,255, +193,195,198,255,194,196,198,255,194,196,199,255,194,196,198,255,192,194,196,255,188,191,192,255,183,184,185,255,176,176,176,255, +166,166,165,255,156,155,153,255,146,146,144,255,145,143,140,255,140,138,136,255, 82, 80, 78,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,135,136,138,255,202,206,209,255,201,204,207,255,200,203,206,255,199,202,205,255,198,201,204,255, +197,200,204,255,196,199,203,255,196,199,202,255,195,198,201,255,195,197,201,255,193,196,200,255,193,196,199,255,193,195,198,255, +191,194,197,255,190,193,196,255,189,191,194,255,188,190,193,255,186,188,191,255,184,186,188,255,182,184,185,255,180,182,183,255, +178,179,180,255,175,176,177,255,172,174,174,255,170,170,171,255,167,167,167,255,163,164,163,255,157,156,154,255,159,159,157,255, +169,168,168,255,174,174,175,255,175,176,177,255,177,178,178,255,178,179,180,255,179,181,182,255,180,182,183,255,181,183,184,255, +183,184,186,255,184,185,187,255,185,187,189,255,186,188,190,255,188,190,192,255,189,191,194,255,190,192,195,255,192,194,197,255, +192,195,197,255,193,195,197,255,192,194,197,255,191,194,196,255,189,190,193,255,184,186,187,255,179,179,180,255,171,171,171,255, +161,161,160,255,152,151,151,255,148,147,145,255,141,139,137,255, 56, 55, 53,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,135,136,138,255,204,207,210,255,202,205,208,255,201,204,208,255,201,204,207,255,199,202,205,255, +199,202,205,255,198,201,204,255,196,199,202,255,196,199,202,255,195,198,201,255,194,196,200,255,193,196,199,255,192,195,198,255, +190,193,196,255,190,192,195,255,188,190,192,255,186,188,191,255,185,186,188,255,182,184,186,255,181,182,184,255,178,179,181,255, +175,176,177,255,173,174,174,255,170,170,170,255,166,166,166,255,162,161,160,255,154,153,150,255,160,161,159,255,169,169,170,255, +172,172,173,255,175,176,176,255,176,177,178,255,177,178,180,255,179,180,182,255,180,182,183,255,181,182,184,255,183,184,186,255, +184,185,187,255,184,186,188,255,186,188,190,255,187,189,191,255,188,190,192,255,189,191,194,255,189,192,194,255,191,193,196,255, +191,194,196,255,191,193,196,255,191,193,195,255,189,190,193,255,186,186,189,255,180,182,182,255,174,175,175,255,166,166,166,255, +157,157,156,255,151,150,148,255,135,133,131,255, 27, 26, 26,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,134,135,136,255,204,207,210,255,202,205,208,255,201,204,207,255,201,204,208,255,200,203,206,255, +199,202,205,255,198,201,205,255,197,200,203,255,196,199,202,255,195,198,201,255,194,196,200,255,193,196,199,255,191,194,196,255, +190,192,195,255,189,191,193,255,187,189,191,255,185,187,189,255,183,185,187,255,181,182,184,255,178,180,181,255,175,176,178,255, +173,174,174,255,170,170,170,255,166,166,165,255,159,158,156,255,154,153,151,255,160,160,159,255,167,167,168,255,170,170,171,255, +173,174,175,255,175,176,177,255,177,178,179,255,178,180,181,255,180,181,182,255,181,182,184,255,181,183,185,255,183,185,186,255, +184,186,188,255,186,188,189,255,186,188,191,255,187,189,192,255,188,190,192,255,189,191,194,255,189,192,194,255,189,192,194,255, +190,192,195,255,189,191,194,255,188,190,192,255,185,187,189,255,182,184,185,255,176,177,178,255,169,169,170,255,163,162,162,255, +153,153,151,255,103,102,101,255, 12, 12, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 61, 61, 61,255, 53, 53, 53,255,121,121,123,255,200,203,205,255,204,206,209,255,201,204,207,255,201,203,206,255, +200,203,206,255,199,202,205,255,197,200,203,255,196,199,202,255,195,198,201,255,193,196,199,255,192,195,197,255,190,193,196,255, +189,191,194,255,187,189,192,255,185,188,189,255,183,185,186,255,181,183,184,255,179,180,181,255,176,177,178,255,173,173,174,255, +169,170,170,255,164,164,163,255,155,154,151,255,152,150,148,255,157,157,156,255,164,164,164,255,167,168,169,255,171,172,173,255, +173,174,175,255,176,177,178,255,177,178,180,255,178,180,181,255,180,181,183,255,181,183,184,255,182,184,186,255,184,185,187,255, +184,186,189,255,185,187,189,255,187,189,191,255,187,189,192,255,189,191,192,255,188,190,193,255,189,191,194,255,189,191,194,255, +189,191,193,255,188,190,192,255,185,187,189,255,182,183,186,255,178,179,180,255,172,173,174,255,167,166,166,255,148,147,146,255, + 52, 51, 50,255, 3, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 61, 61, 61,255, 30, 30, 30,255, 0, 0, 0,255, 19, 19, 19,255,152,154,154,255,200,202,204,255,200,203,205,255, +200,203,205,255,199,202,205,255,197,200,203,255,197,199,202,255,195,198,200,255,193,196,198,255,192,194,196,255,191,193,195,255, +188,190,192,255,186,188,190,255,184,185,187,255,182,183,184,255,179,180,181,255,176,177,177,255,173,173,174,255,169,169,169,255, +163,162,161,255,153,150,148,255,149,148,145,255,156,155,154,255,161,161,162,255,166,167,167,255,170,170,171,255,172,173,174,255, +174,175,176,255,176,178,179,255,178,179,180,255,179,180,182,255,180,182,184,255,182,183,185,255,182,184,186,255,184,186,188,255, +184,186,189,255,185,187,189,255,187,189,191,255,188,190,191,255,187,189,192,255,189,191,192,255,189,191,192,255,187,189,192,255, +187,189,191,255,185,187,189,255,182,184,185,255,178,180,181,255,174,174,174,255,165,165,165,255,112,111,110,255, 10, 10, 9,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 48, 48, 48,255,134,136,136,255, +179,180,182,255,200,201,204,255,198,201,203,255,196,198,200,255,194,196,198,255,193,195,198,255,191,193,195,255,189,191,193,255, +187,189,190,255,185,186,188,255,183,184,185,255,179,180,181,255,177,177,178,255,173,173,173,255,168,168,167,255,160,158,156,255, +150,148,145,255,150,148,146,255,156,156,155,255,162,162,162,255,166,166,167,255,170,170,171,255,172,173,174,255,174,175,176,255, +176,177,178,255,177,178,180,255,179,180,181,255,180,182,183,255,181,183,184,255,182,183,185,255,183,184,186,255,184,186,188,255, +184,186,188,255,185,187,189,255,186,188,191,255,187,189,191,255,187,189,191,255,188,189,192,255,187,189,191,255,185,187,189,255, +184,186,187,255,182,184,184,255,178,179,179,255,154,154,154,255,112,111,111,255, 35, 34, 33,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 26, 26, 27,255, 66, 66, 66,255,147,148,149,255,197,199,200,255,196,198,200,255,195,196,198,255,191,193,194,255,188,189,191,255, +186,188,189,255,183,185,186,255,180,180,181,255,178,178,178,255,174,174,174,255,167,167,165,255,160,158,155,255,159,157,154,255, +161,160,158,255,165,164,164,255,168,168,167,255,170,171,171,255,171,172,172,255,175,175,176,255,176,177,178,255,178,179,179,255, +179,180,181,255,180,181,182,255,180,182,184,255,182,183,185,255,182,183,185,255,183,185,186,255,183,185,187,255,184,186,188,255, +185,187,189,255,186,188,190,255,186,188,190,255,186,188,190,255,185,186,188,255,187,189,190,255,185,187,188,255,183,184,185,255, +171,172,172,255,121,121,121,255, 56, 56, 56,255, 21, 21, 21,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 13, 13, 13,255, 85, 85, 85,255,151,152,152,255,184,185,186,255,184,185,186,255, +181,182,182,255,178,179,178,255,175,175,175,255,162,162,161,255,100,100, 98,255, 72, 71, 70,255, 82, 81, 81,255, 93, 93, 92,255, +103,103,103,255,119,120,119,255,148,149,148,255,172,172,172,255,177,178,178,255,177,178,178,255,178,179,179,255,180,181,182,255, +181,182,183,255,181,183,184,255,182,183,184,255,182,184,185,255,183,185,186,255,182,184,185,255,182,184,186,255,183,184,186,255, +183,184,186,255,183,184,186,255,182,183,184,255,179,180,180,255,177,178,178,255,137,137,137,255, 90, 90, 90,255, 33, 33, 32,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 12, 12, 11,255, + 19, 19, 19,255, 21, 21, 20,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 10, 10, 10,255, 41, 41, 41,255, 54, 55, 54,255, + 65, 66, 66,255, 74, 75, 75,255, 95, 95, 95,255,103,103,103,255,111,112,112,255,106,107,107,255,101,101,102,255, 88, 88, 88,255, + 75, 75, 75,255, 61, 61, 61,255, 43, 43, 43,255, 17, 17, 17,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, + 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0, 56,120, 94, 7, 31, 0, 0, 0, 1, 0, 0, 0,144, 27, 95, 7,224,212, 93, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, 46, 99,114,101, 97,115,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, + 92, 46,105, 46, 99,114,101, 97,115,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,122, 94, 7, 0, 0, 0, 0, +131, 71, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0, 56,122, 94, 7, + 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, +192,122, 94, 7, 40,139, 94, 7, 68, 65, 84, 65, 0, 16, 0, 0,192,122, 94, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 0,144, 0, 0, 40,139, 94, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 61, 60, 60,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 62, 62, 62,255, 61, 61, 61,255, 93, 94, 95,255,123,125,126,255,123,124,125,255, +123,125,126,255,123,125,126,255,123,125,126,255,124,125,126,255,124,125,127,255,124,126,127,255,125,126,128,255,125,126,127,255, +125,126,128,255,125,127,128,255,126,127,129,255,126,127,129,255,126,127,129,255,126,127,129,255,126,128,129,255,126,128,129,255, +126,128,129,255,126,128,129,255,126,128,129,255,126,127,129,255,126,127,129,255,126,127,129,255,126,127,129,255,126,127,128,255, +125,127,128,255,125,127,128,255,125,126,128,255,125,126,127,255,125,126,127,255,124,126,127,255,124,125,127,255,124,125,127,255, +124,125,126,255,123,125,126,255,123,125,126,255,123,124,126,255,123,124,125,255,122,124,125,255,122,123,124,255,122,123,124,255, +122,123,124,255,121,122,123,255,121,122,123,255,120,121,122,255,119,121,122,255,119,120,121,255,118,119,120,255,118,119,120,255, +118,119,119,255,117,118,118,255,116,117,118,255,115,116,117,255,115,115,116,255,114,115,116,255,113,114,115,255,112,113,114,255, +111,112,113,255,111,111,112,255,110,111,111,255,109,110,110,255,109,109,110,255,107,108,108,255,107,107,108,255,106,106,107,255, +105,105,106,255,105,105,105,255,103,104,104,255,103,103,103,255,102,102,103,255,101,101,101,255,101,100,101,255,100, 99,100,255, + 99, 99, 99,255, 99, 98, 98,255, 97, 97, 97,255, 97, 97, 97,255, 96, 96, 96,255, 95, 95, 95,255, 94, 94, 94,255, 94, 93, 93,255, + 93, 93, 93,255, 92, 92, 91,255, 92, 91, 91,255, 91, 90, 89,255, 90, 89, 89,255, 89, 88, 88,255, 88, 87, 86,255, 88, 86, 85,255, + 87, 86, 84,255, 86, 84, 83,255, 74, 73, 72,255, 61, 61, 61,255, 60, 60, 60,255,123,125,126,255,182,185,187,255,182,184,187,255, +182,185,187,255,181,185,186,255,182,185,188,255,183,185,188,255,183,186,189,255,185,187,190,255,185,187,189,255,184,188,190,255, +185,188,191,255,186,188,192,255,187,189,192,255,187,189,193,255,187,190,192,255,187,190,193,255,188,190,193,255,188,191,193,255, +188,191,193,255,188,191,193,255,189,190,193,255,187,190,193,255,187,190,194,255,187,190,193,255,187,190,193,255,186,189,192,255, +186,189,192,255,186,189,192,255,186,188,191,255,185,188,191,255,184,187,190,255,184,187,190,255,184,186,189,255,184,186,189,255, +183,186,188,255,183,185,188,255,182,185,187,255,182,184,187,255,181,183,186,255,180,183,185,255,180,182,185,255,179,181,183,255, +178,181,183,255,178,180,182,255,177,179,181,255,176,178,180,255,175,177,180,255,174,176,178,255,173,175,177,255,173,175,176,255, +171,173,174,255,170,172,173,255,169,171,171,255,167,169,170,255,166,167,169,255,164,165,167,255,163,164,166,255,162,163,164,255, +159,160,162,255,158,159,161,255,157,158,159,255,155,156,157,255,154,155,156,255,151,153,154,255,150,151,152,255,149,149,151,255, +147,148,148,255,145,146,147,255,144,145,146,255,142,143,143,255,141,141,142,255,140,140,140,255,137,137,138,255,136,136,137,255, +135,135,135,255,133,133,133,255,132,131,132,255,131,130,130,255,129,128,128,255,128,127,127,255,127,126,126,255,125,124,124,255, +124,123,122,255,123,120,121,255,120,119,118,255,119,117,117,255,117,115,114,255,116,114,112,255,115,112,111,255,112,110,108,255, +110,108,106,255,109,106,104,255, 85, 84, 82,255, 61, 61, 61,255, 60, 60, 60,255,123,124,125,255,182,183,187,255,181,184,185,255, +180,184,185,255,181,183,186,255,182,184,187,255,182,185,187,255,182,185,188,255,184,186,189,255,183,186,189,255,185,187,189,255, +185,188,190,255,186,188,191,255,186,188,192,255,187,189,192,255,187,190,193,255,188,191,194,255,188,191,194,255,188,191,194,255, +188,191,194,255,188,191,194,255,188,191,194,255,188,191,194,255,188,191,194,255,188,190,193,255,187,190,193,255,187,190,193,255, +187,190,192,255,187,189,192,255,186,189,192,255,186,189,192,255,185,188,191,255,185,187,190,255,184,187,190,255,184,187,189,255, +184,186,189,255,184,186,189,255,183,185,188,255,182,185,187,255,182,184,187,255,181,183,186,255,180,183,185,255,180,182,185,255, +179,181,183,255,178,181,183,255,177,180,182,255,176,178,180,255,176,178,180,255,175,177,179,255,173,175,177,255,172,174,176,255, +172,173,175,255,170,172,174,255,169,171,173,255,168,170,172,255,166,168,169,255,165,166,168,255,164,165,167,255,162,163,165,255, +161,162,163,255,159,161,161,255,157,158,159,255,156,157,158,255,155,155,157,255,153,153,155,255,151,152,153,255,150,150,151,255, +148,148,149,255,146,147,148,255,144,144,145,255,143,143,144,255,142,142,143,255,139,140,140,255,138,138,139,255,137,137,137,255, +135,135,135,255,134,133,134,255,132,132,132,255,131,130,130,255,129,129,129,255,128,128,128,255,126,126,125,255,125,124,124,255, +124,123,123,255,122,121,121,255,121,119,119,255,119,118,117,255,118,116,115,255,116,114,113,255,114,112,111,255,113,111,109,255, +111,108,106,255,110,107,105,255, 85, 84, 83,255, 61, 61, 61,255, 60, 60, 60,255,123,124,126,255,182,183,187,255,181,184,186,255, +180,183,185,255,181,183,186,255,182,185,187,255,183,185,188,255,182,185,189,255,184,186,188,255,184,186,189,255,184,188,190,255, +185,188,191,255,186,188,191,255,187,189,192,255,187,190,193,255,187,190,193,255,188,190,193,255,188,191,194,255,189,191,194,255, +189,192,195,255,189,192,195,255,189,192,195,255,189,192,195,255,189,192,194,255,188,191,194,255,188,191,194,255,188,190,193,255, +188,191,194,255,187,190,193,255,187,190,193,255,187,190,192,255,186,189,192,255,186,189,191,255,185,188,191,255,185,187,190,255, +184,187,190,255,184,187,190,255,184,186,189,255,183,186,188,255,182,185,188,255,182,185,187,255,181,184,186,255,181,183,186,255, +180,182,185,255,179,182,184,255,179,181,183,255,178,180,182,255,177,179,181,255,176,178,180,255,175,177,179,255,174,176,178,255, +173,175,177,255,172,174,176,255,170,172,174,255,169,171,173,255,168,170,172,255,166,168,169,255,165,167,168,255,164,165,166,255, +162,163,164,255,160,162,163,255,159,160,161,255,157,158,159,255,156,157,158,255,154,155,156,255,152,153,154,255,151,152,153,255, +149,149,150,255,147,148,149,255,146,146,147,255,144,145,146,255,142,142,143,255,141,141,142,255,140,139,140,255,137,137,138,255, +136,136,136,255,134,134,134,255,133,133,133,255,132,131,131,255,130,129,129,255,129,128,128,255,128,127,127,255,126,125,125,255, +125,123,123,255,123,121,121,255,121,120,119,255,120,118,117,255,118,117,115,255,117,115,113,255,115,113,111,255,113,111,109,255, +112,109,107,255,110,108,105,255, 86, 84, 83,255, 61, 61, 61,255, 60, 60, 60,255,123,124,126,255,182,184,187,255,181,183,186,255, +180,183,185,255,181,183,186,255,181,185,186,255,182,184,187,255,183,185,188,255,183,186,189,255,184,186,189,255,184,187,190,255, +186,188,191,255,186,189,191,255,186,189,192,255,188,190,193,255,188,191,194,255,188,191,194,255,189,193,195,255,189,192,195,255, +190,192,196,255,190,193,196,255,190,194,197,255,190,192,195,255,189,192,195,255,189,192,195,255,189,192,195,255,189,192,195,255, +188,191,194,255,188,191,194,255,188,191,194,255,188,190,193,255,187,190,193,255,187,190,193,255,186,189,191,255,185,188,191,255, +185,188,191,255,185,188,190,255,185,187,190,255,184,187,190,255,184,186,189,255,183,186,189,255,183,185,188,255,182,184,187,255, +181,184,186,255,181,183,186,255,180,182,184,255,179,181,184,255,178,180,183,255,177,179,181,255,176,179,181,255,175,178,180,255, +174,176,178,255,173,175,177,255,172,174,176,255,170,172,174,255,169,171,173,255,168,170,172,255,166,168,169,255,165,167,168,255, +164,165,167,255,161,163,164,255,160,161,163,255,159,160,161,255,157,158,159,255,155,156,158,255,154,155,156,255,152,153,154,255, +150,151,152,255,148,149,151,255,147,147,148,255,145,145,147,255,143,143,145,255,142,142,143,255,140,141,141,255,138,138,139,255, +137,137,138,255,136,135,136,255,133,133,133,255,132,132,132,255,131,131,131,255,129,128,128,255,128,127,127,255,127,126,125,255, +124,123,123,255,123,122,122,255,122,121,120,255,120,119,118,255,119,117,116,255,117,116,114,255,115,113,112,255,114,112,110,255, +112,110,108,255,111,108,106,255, 86, 85, 83,255, 61, 61, 61,255, 60, 60, 60,255,123,124,126,255,181,184,186,255,180,183,185,255, +181,183,185,255,180,184,185,255,182,184,186,255,181,184,186,255,182,185,187,255,183,186,188,255,184,186,189,255,184,187,190,255, +186,188,191,255,186,189,192,255,188,189,192,255,188,191,194,255,189,192,195,255,190,192,195,255,190,193,196,255,191,193,197,255, +191,194,197,255,191,194,197,255,191,194,197,255,191,194,197,255,191,194,197,255,191,194,197,255,190,193,196,255,190,193,196,255, +190,193,196,255,189,192,195,255,189,192,195,255,189,192,195,255,189,192,195,255,188,191,194,255,188,190,193,255,187,190,193,255, +187,189,192,255,187,189,192,255,186,189,192,255,186,189,191,255,185,188,191,255,185,187,190,255,184,187,190,255,184,186,189,255, +183,185,188,255,182,185,187,255,181,184,186,255,180,183,185,255,180,182,184,255,179,181,184,255,177,180,182,255,177,179,181,255, +176,178,180,255,174,176,179,255,173,175,177,255,172,174,176,255,170,172,174,255,169,171,173,255,168,170,172,255,166,168,170,255, +165,166,168,255,164,165,167,255,161,163,164,255,160,161,163,255,158,160,161,255,156,158,159,255,155,156,157,255,153,154,155,255, +151,152,153,255,150,151,152,255,148,148,150,255,146,147,148,255,145,145,146,255,143,143,144,255,141,141,142,255,140,140,141,255, +138,138,138,255,136,136,137,255,135,135,135,255,133,133,133,255,132,131,131,255,131,130,130,255,129,128,128,255,127,126,126,255, +125,124,124,255,124,123,122,255,123,121,121,255,121,119,119,255,119,118,117,255,118,116,115,255,116,114,113,255,114,112,111,255, +113,111,109,255,111,109,107,255, 86, 85, 84,255, 61, 61, 61,255, 60, 60, 60,255,123,124,125,255,180,183,186,255,180,182,184,255, +180,183,185,255,181,183,186,255,181,183,186,255,181,184,186,255,182,184,187,255,183,185,188,255,183,186,188,255,185,187,189,255, +185,188,191,255,186,189,192,255,187,189,192,255,188,191,194,255,189,192,195,255,190,192,195,255,191,193,197,255,191,194,197,255, +192,195,198,255,192,195,198,255,192,195,198,255,192,195,198,255,192,195,198,255,192,195,198,255,191,194,198,255,191,194,197,255, +191,194,197,255,190,193,196,255,190,193,196,255,190,193,196,255,189,192,195,255,189,192,195,255,189,191,194,255,188,191,194,255, +187,190,193,255,187,190,193,255,187,190,192,255,186,189,192,255,186,189,192,255,186,188,191,255,185,188,190,255,185,187,190,255, +184,187,189,255,183,185,188,255,182,185,188,255,182,184,187,255,181,183,186,255,180,182,185,255,179,182,184,255,178,180,182,255, +177,179,181,255,176,178,181,255,175,177,179,255,174,176,178,255,173,175,176,255,171,173,174,255,170,172,173,255,168,170,172,255, +166,168,169,255,165,166,168,255,163,165,166,255,161,162,164,255,160,161,163,255,158,159,161,255,156,157,159,255,155,156,157,255, +152,153,155,255,151,152,153,255,150,150,151,255,147,148,149,255,146,146,147,255,144,145,145,255,143,142,144,255,141,141,142,255, +139,139,140,255,137,137,138,255,136,136,136,255,134,134,134,255,132,132,132,255,131,130,130,255,130,129,129,255,128,127,127,255, +126,125,125,255,124,123,123,255,123,122,122,255,121,120,119,255,120,118,117,255,118,116,115,255,117,115,113,255,115,113,111,255, +113,111,109,255,112,109,107,255, 87, 85, 84,255, 61, 61, 61,255, 60, 60, 60,255,123,124,125,255,181,183,185,255,180,182,185,255, +180,181,185,255,180,182,185,255,181,183,185,255,180,183,186,255,181,184,186,255,182,185,187,255,183,185,188,255,184,187,188,255, +185,187,190,255,186,189,191,255,188,189,192,255,189,191,194,255,189,192,195,255,191,193,196,255,192,194,198,255,191,194,197,255, +192,195,198,255,193,196,199,255,193,196,199,255,193,196,199,255,193,196,199,255,193,196,199,255,192,195,199,255,192,195,198,255, +192,195,198,255,191,194,197,255,191,194,197,255,190,193,196,255,190,193,196,255,190,193,196,255,189,192,195,255,189,191,194,255, +188,192,195,255,188,191,193,255,187,190,193,255,187,190,194,255,187,190,193,255,186,189,192,255,187,189,192,255,185,188,191,255, +185,187,190,255,184,187,190,255,183,186,188,255,183,185,188,255,182,185,187,255,181,183,186,255,180,183,185,255,180,182,184,255, +178,180,182,255,177,179,181,255,177,179,181,255,175,177,179,255,174,176,178,255,173,175,176,255,171,172,174,255,169,171,173,255, +168,170,172,255,166,168,169,255,165,166,168,255,164,165,166,255,161,162,164,255,159,161,162,255,158,159,161,255,156,157,158,255, +154,155,156,255,153,154,155,255,150,151,152,255,149,149,150,255,147,148,149,255,145,145,146,255,143,144,144,255,142,142,143,255, +140,140,141,255,138,138,139,255,136,136,137,255,135,135,135,255,134,133,133,255,131,131,131,255,130,129,129,255,129,128,128,255, +127,126,125,255,125,124,124,255,124,123,122,255,122,120,119,255,121,119,118,255,119,117,116,255,117,115,114,255,116,114,112,255, +114,112,110,255,113,110,108,255, 87, 86, 84,255, 61, 61, 61,255, 60, 60, 60,255,123,124,125,255,180,182,185,255,179,181,183,255, +178,181,183,255,179,181,183,255,179,181,184,255,180,182,184,255,180,182,185,255,181,183,185,255,182,184,187,255,183,185,188,255, +184,187,190,255,185,188,191,255,186,189,192,255,188,191,194,255,189,192,195,255,191,194,197,255,192,195,198,255,192,195,198,255, +193,196,199,255,194,197,200,255,194,197,200,255,195,197,201,255,195,198,201,255,195,198,201,255,194,197,200,255,194,197,200,255, +193,196,199,255,193,196,199,255,192,195,198,255,192,195,198,255,191,194,197,255,191,194,197,255,191,194,197,255,190,193,196,255, +189,192,195,255,189,192,195,255,189,192,195,255,188,191,194,255,188,191,194,255,188,190,193,255,187,190,193,255,187,190,192,255, +186,189,192,255,186,188,191,255,185,188,191,255,184,187,189,255,183,186,189,255,183,185,188,255,182,184,186,255,181,183,185,255, +180,183,185,255,178,181,183,255,178,180,182,255,177,179,181,255,175,177,179,255,174,176,178,255,173,175,177,255,171,172,174,255, +170,171,173,255,168,170,171,255,166,168,169,255,165,166,167,255,163,164,166,255,161,162,163,255,159,160,162,255,157,159,159,255, +155,157,158,255,154,155,156,255,151,152,153,255,150,151,152,255,148,149,150,255,147,146,147,255,145,144,146,255,143,143,144,255, +141,141,142,255,139,139,139,255,138,138,138,255,136,136,136,255,134,134,134,255,133,132,132,255,131,130,130,255,130,129,129,255, +128,127,127,255,126,125,125,255,124,123,123,255,123,122,121,255,121,120,119,255,119,118,117,255,118,116,115,255,116,114,113,255, +114,112,111,255,113,111,109,255, 87, 86, 85,255, 61, 61, 61,255, 60, 60, 60,255,122,123,125,255,180,182,184,255,178,181,183,255, +178,181,182,255,178,180,183,255,178,181,183,255,179,181,183,255,179,182,184,255,180,182,184,255,180,183,185,255,182,184,187,255, +183,185,188,255,185,187,189,255,186,188,191,255,187,190,192,255,189,191,195,255,191,193,196,255,192,194,197,255,193,195,199,255, +194,197,200,255,194,197,200,255,195,198,201,255,195,198,201,255,195,198,202,255,195,198,202,255,195,198,201,255,195,198,201,255, +194,197,200,255,194,197,200,255,193,196,199,255,193,195,199,255,192,195,198,255,192,194,198,255,191,194,197,255,191,193,197,255, +190,193,196,255,190,193,196,255,189,192,195,255,189,192,195,255,189,192,195,255,188,191,194,255,188,191,194,255,188,190,193,255, +187,190,193,255,186,189,192,255,186,188,191,255,185,188,191,255,184,187,190,255,184,186,189,255,183,185,188,255,182,184,187,255, +181,183,186,255,180,182,185,255,179,181,183,255,178,180,182,255,177,179,181,255,175,177,179,255,174,176,178,255,173,175,177,255, +170,172,174,255,169,171,173,255,168,170,171,255,166,167,169,255,164,166,167,255,163,164,165,255,161,162,163,255,159,160,162,255, +157,158,159,255,155,156,157,255,153,154,155,255,151,152,153,255,149,150,151,255,148,148,149,255,146,146,147,255,144,144,145,255, +142,142,143,255,141,141,141,255,138,138,139,255,137,137,137,255,136,135,135,255,133,133,133,255,132,131,131,255,130,129,129,255, +129,128,128,255,127,126,126,255,125,124,124,255,123,122,121,255,122,120,119,255,120,118,117,255,118,117,115,255,117,115,113,255, +115,113,111,255,114,111,109,255, 88, 86, 85,255, 61, 61, 61,255, 60, 60, 60,255,122,123,124,255,179,181,183,255,178,180,182,255, +178,180,182,255,178,180,182,255,178,180,182,255,178,180,181,255,178,180,183,255,179,181,183,255,179,181,184,255,181,183,185,255, +182,184,186,255,183,185,188,255,185,187,190,255,186,189,191,255,188,190,193,255,190,193,196,255,191,194,197,255,193,195,199,255, +194,197,200,255,195,198,201,255,195,199,201,255,197,199,203,255,196,200,202,255,196,199,202,255,196,199,202,255,195,198,203,255, +196,199,202,255,194,197,201,255,194,197,200,255,193,197,199,255,193,195,199,255,192,196,198,255,192,195,198,255,192,194,198,255, +191,194,197,255,190,193,196,255,190,193,196,255,189,192,195,255,189,192,195,255,190,193,196,255,189,192,195,255,188,191,194,255, +188,191,194,255,188,190,193,255,187,189,192,255,186,189,192,255,186,189,191,255,184,187,190,255,184,186,189,255,183,186,189,255, +182,184,187,255,181,184,186,255,180,183,185,255,179,181,183,255,178,180,182,255,177,179,181,255,175,177,179,255,174,176,178,255, +173,174,176,255,170,172,174,255,169,170,172,255,168,169,171,255,165,167,168,255,164,165,166,255,163,164,165,255,160,161,162,255, +158,159,160,255,157,158,159,255,154,155,156,255,152,153,154,255,151,151,153,255,148,149,150,255,147,147,148,255,145,146,146,255, +143,143,144,255,141,141,142,255,139,139,140,255,138,137,138,255,136,136,136,255,134,134,134,255,133,132,132,255,131,130,130,255, +129,128,128,255,128,127,126,255,126,125,124,255,124,123,122,255,122,121,120,255,121,119,118,255,119,117,116,255,117,115,114,255, +116,114,112,255,115,112,110,255, 88, 87, 85,255, 61, 61, 61,255, 60, 60, 60,255,122,123,124,255,178,180,182,255,176,178,180,255, +176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,177,179,181,255,178,180,182,255,178,180,183,255, +179,181,184,255,181,183,186,255,182,185,187,255,184,187,189,255,187,189,191,255,188,191,194,255,191,193,196,255,192,195,198,255, +194,197,200,255,195,198,201,255,196,199,202,255,196,200,202,255,197,200,203,255,198,200,204,255,198,201,204,255,197,200,203,255, +197,200,203,255,196,199,203,255,195,198,202,255,195,198,201,255,194,197,200,255,194,196,200,255,193,196,199,255,193,196,199,255, +192,195,198,255,192,195,198,255,191,194,197,255,191,194,197,255,191,193,197,255,190,193,196,255,190,193,196,255,190,193,196,255, +189,192,195,255,189,192,195,255,188,191,194,255,188,190,193,255,187,190,192,255,186,189,192,255,186,188,191,255,185,187,190,255, +184,186,189,255,182,185,187,255,182,184,186,255,181,183,185,255,179,181,183,255,178,180,182,255,177,179,181,255,175,177,179,255, +174,176,178,255,172,174,176,255,171,172,174,255,169,170,172,255,168,169,171,255,165,167,168,255,163,165,166,255,162,163,165,255, +160,161,162,255,158,159,160,255,156,156,158,255,154,154,156,255,152,152,154,255,149,151,151,255,148,148,149,255,146,147,148,255, +144,144,145,255,142,142,143,255,141,141,141,255,138,138,139,255,137,137,137,255,136,135,135,255,133,133,133,255,132,131,131,255, +130,129,129,255,128,127,127,255,127,126,125,255,125,124,123,255,123,122,121,255,122,120,119,255,120,118,117,255,118,116,114,255, +116,114,112,255,115,112,110,255, 88, 87, 86,255, 61, 61, 61,255, 60, 60, 60,255,121,122,124,255,177,179,182,255,176,178,180,255, +175,177,179,255,175,177,179,255,175,177,179,255,174,176,178,255,175,176,178,255,175,176,178,255,176,177,179,255,176,178,180,255, +178,180,182,255,179,181,183,255,180,182,184,255,182,184,187,255,185,187,189,255,186,189,191,255,189,191,194,255,191,193,196,255, +193,196,199,255,195,197,201,255,196,199,202,255,197,200,203,255,197,201,204,255,198,201,204,255,198,201,204,255,198,201,204,255, +198,201,204,255,197,200,203,255,197,200,203,255,195,198,202,255,195,198,201,255,194,197,201,255,194,197,200,255,193,196,199,255, +193,196,199,255,192,195,199,255,192,195,198,255,191,194,197,255,191,194,197,255,190,193,196,255,190,193,196,255,190,193,196,255, +190,192,196,255,190,192,195,255,189,192,195,255,188,191,194,255,188,190,193,255,187,190,193,255,186,189,192,255,185,188,191,255, +185,187,190,255,184,186,189,255,183,185,187,255,182,184,187,255,181,183,185,255,179,181,183,255,178,180,182,255,177,179,181,255, +175,177,179,255,174,176,178,255,172,174,176,255,170,172,173,255,169,170,172,255,167,168,170,255,165,166,167,255,163,164,166,255, +161,162,164,255,159,160,161,255,157,158,159,255,155,156,157,255,153,153,155,255,151,152,153,255,149,150,151,255,147,147,148,255, +146,146,147,255,144,144,145,255,141,141,142,255,140,140,140,255,138,137,138,255,135,135,135,255,135,134,134,255,132,132,132,255, +131,130,130,255,130,129,128,255,128,127,126,255,126,124,124,255,124,123,122,255,122,120,119,255,120,118,117,255,118,116,115,255, +117,114,113,255,115,113,111,255, 88, 87, 86,255, 61, 61, 61,255, 60, 60, 60,255,121,122,123,255,177,179,181,255,174,176,178,255, +174,176,178,255,174,176,178,255,173,174,176,255,172,175,177,255,173,175,177,255,172,174,177,255,173,175,176,255,174,176,178,255, +175,177,178,255,176,177,179,255,178,180,182,255,179,181,183,255,181,184,186,255,184,186,189,255,186,189,191,255,189,192,194,255, +192,195,198,255,194,197,200,255,196,198,201,255,198,200,203,255,198,201,204,255,199,202,205,255,199,201,205,255,199,201,206,255, +198,201,206,255,198,201,204,255,198,201,204,255,198,201,204,255,196,199,202,255,195,198,201,255,195,198,201,255,195,197,201,255, +194,196,200,255,194,197,200,255,192,195,198,255,193,195,199,255,192,194,198,255,191,195,197,255,191,194,197,255,192,193,198,255, +190,193,196,255,191,194,197,255,190,193,196,255,190,193,196,255,189,192,195,255,188,190,193,255,187,190,193,255,187,190,193,255, +185,188,191,255,185,187,190,255,184,187,189,255,183,185,188,255,182,184,187,255,181,183,186,255,179,181,184,255,178,180,182,255, +177,179,181,255,175,177,179,255,173,175,177,255,172,174,176,255,170,171,173,255,168,170,171,255,167,168,170,255,164,165,167,255, +162,163,165,255,160,162,163,255,158,159,161,255,156,157,158,255,154,155,156,255,152,153,154,255,150,151,152,255,149,149,150,255, +146,147,147,255,144,144,145,255,143,143,144,255,140,140,141,255,139,138,139,255,136,136,136,255,135,135,135,255,134,133,133,255, +131,131,130,255,130,129,129,255,129,128,127,255,126,125,124,255,125,124,123,255,123,122,120,255,121,119,118,255,119,117,116,255, +117,115,113,255,116,114,112,255, 89, 87, 86,255, 61, 61, 61,255, 60, 60, 60,255,121,122,123,255,176,178,180,255,174,176,178,255, +173,175,177,255,172,174,176,255,172,173,175,255,171,173,175,255,171,173,174,255,171,172,174,255,171,173,174,255,171,173,175,255, +172,173,175,255,172,174,176,255,173,176,177,255,176,177,179,255,178,180,182,255,181,183,185,255,183,185,188,255,186,188,191,255, +189,192,194,255,192,195,198,255,195,198,201,255,196,199,202,255,198,201,204,255,199,201,204,255,200,203,206,255,200,203,205,255, +200,203,206,255,200,203,206,255,199,202,205,255,198,201,205,255,198,201,204,255,197,199,203,255,196,199,202,255,195,198,202,255, +195,198,201,255,195,197,201,255,194,197,200,255,193,196,199,255,193,196,199,255,192,195,198,255,192,195,198,255,191,195,197,255, +192,194,198,255,191,194,197,255,191,194,197,255,190,193,196,255,190,193,196,255,189,192,195,255,189,192,195,255,188,191,193,255, +187,190,193,255,186,188,191,255,185,188,190,255,184,187,189,255,184,185,189,255,182,184,186,255,181,183,186,255,179,181,183,255, +178,180,182,255,177,179,181,255,174,176,178,255,173,175,177,255,172,174,175,255,169,171,173,255,168,169,171,255,166,168,169,255, +164,165,167,255,161,163,164,255,159,160,162,255,157,158,160,255,156,156,158,255,153,154,155,255,151,152,153,255,150,150,151,255, +147,147,148,255,145,146,147,255,144,144,145,255,141,141,142,255,139,139,140,255,138,138,138,255,135,135,135,255,134,134,134,255, +132,132,131,255,131,130,130,255,129,128,127,255,127,126,125,255,125,124,123,255,124,122,121,255,122,120,119,255,120,118,117,255, +118,116,114,255,116,114,112,255, 89, 88, 86,255, 61, 61, 61,255, 60, 60, 60,255,120,121,122,255,176,178,180,255,173,175,177,255, +172,174,176,255,171,173,175,255,171,172,174,255,170,171,173,255,169,171,172,255,169,170,172,255,168,170,171,255,168,170,171,255, +168,170,171,255,169,170,172,255,169,171,173,255,171,173,174,255,173,175,177,255,176,177,179,255,179,181,182,255,182,184,186,255, +185,187,190,255,189,191,194,255,192,195,197,255,195,197,200,255,197,200,202,255,199,201,204,255,200,203,205,255,200,203,206,255, +201,203,206,255,201,203,207,255,200,203,206,255,199,202,206,255,199,202,205,255,198,201,204,255,197,200,203,255,196,199,202,255, +196,198,202,255,195,198,201,255,194,197,200,255,194,197,200,255,194,196,200,255,193,196,199,255,192,195,198,255,192,195,198,255, +192,195,198,255,192,195,198,255,191,194,197,255,191,194,197,255,191,194,197,255,190,193,196,255,189,192,195,255,189,191,194,255, +188,191,194,255,187,190,193,255,186,189,192,255,185,188,191,255,184,187,190,255,183,185,188,255,182,184,187,255,181,183,185,255, +179,181,183,255,178,180,182,255,176,178,180,255,174,176,178,255,173,174,176,255,171,173,174,255,169,170,172,255,167,169,170,255, +165,166,168,255,163,164,166,255,161,162,164,255,159,160,161,255,156,157,159,255,155,156,157,255,153,153,155,255,151,151,152,255, +149,149,150,255,147,147,148,255,144,145,145,255,143,142,143,255,141,141,141,255,138,138,138,255,137,137,137,255,135,134,135,255, +133,132,132,255,132,131,131,255,130,128,128,255,127,126,126,255,126,125,124,255,124,123,122,255,122,120,119,255,120,119,117,255, +118,116,115,255,117,115,113,255, 89, 88, 87,255, 61, 61, 61,255, 60, 60, 60,255,120,121,122,255,175,177,179,255,172,174,176,255, +171,173,175,255,171,172,174,255,169,171,172,255,169,170,172,255,168,170,171,255,167,168,170,255,167,168,170,255,166,167,169,255, +165,167,168,255,165,167,168,255,165,167,168,255,167,168,170,255,168,169,171,255,169,171,172,255,172,174,175,255,175,177,180,255, +180,182,184,255,184,186,188,255,188,190,192,255,192,195,197,255,195,197,200,255,197,200,202,255,199,202,204,255,200,203,205,255, +201,203,205,255,201,204,207,255,201,203,207,255,201,204,207,255,200,202,206,255,199,202,206,255,199,202,205,255,197,200,203,255, +197,200,203,255,196,199,202,255,196,199,202,255,195,198,201,255,195,198,201,255,194,197,200,255,194,196,200,255,193,196,199,255, +193,196,199,255,193,196,199,255,193,196,199,255,192,195,198,255,191,194,197,255,191,194,197,255,190,193,196,255,190,193,196,255, +189,191,194,255,188,191,194,255,188,190,193,255,186,189,191,255,185,188,191,255,185,187,190,255,183,185,188,255,182,184,187,255, +181,183,185,255,179,181,183,255,178,180,182,255,176,178,180,255,174,176,178,255,172,174,175,255,171,172,174,255,168,170,171,255, +166,168,169,255,165,166,167,255,162,163,165,255,160,161,162,255,158,159,161,255,156,157,158,255,154,154,155,255,152,153,154,255, +150,150,151,255,148,148,149,255,146,146,147,255,144,144,144,255,142,142,142,255,139,139,139,255,137,137,137,255,136,135,135,255, +133,133,133,255,132,131,131,255,131,130,129,255,128,127,126,255,127,126,125,255,125,123,122,255,123,121,120,255,121,119,118,255, +119,117,116,255,118,116,114,255, 89, 88, 87,255, 61, 61, 61,255, 60, 60, 60,255,120,121,122,255,175,177,179,255,172,174,176,255, +171,173,175,255,170,171,173,255,168,170,172,255,167,169,171,255,166,168,169,255,165,167,168,255,164,166,167,255,164,165,167,255, +163,164,166,255,163,164,166,255,162,164,165,255,162,163,165,255,163,164,166,255,164,165,167,255,165,166,168,255,168,169,171,255, +170,172,174,255,175,176,178,255,180,182,184,255,186,187,190,255,190,193,195,255,194,197,199,255,197,200,202,255,199,202,204,255, +200,202,205,255,201,203,206,255,201,204,206,255,202,203,207,255,202,204,207,255,200,203,206,255,200,202,206,255,199,202,205,255, +198,200,204,255,197,200,203,255,196,199,202,255,196,199,202,255,195,198,201,255,195,198,201,255,194,197,200,255,194,197,200,255, +194,196,200,255,194,196,200,255,193,196,199,255,193,195,199,255,193,196,199,255,192,195,198,255,191,194,197,255,191,194,197,255, +190,193,196,255,189,192,195,255,189,191,194,255,188,190,193,255,186,189,192,255,185,188,191,255,184,187,190,255,183,185,188,255, +182,184,186,255,180,183,185,255,179,181,183,255,177,179,181,255,176,178,180,255,174,175,177,255,172,173,175,255,170,172,174,255, +168,170,171,255,165,167,168,255,164,165,166,255,162,163,164,255,159,160,162,255,156,157,159,255,155,156,157,255,153,154,155,255, +150,151,152,255,148,149,149,255,147,147,148,255,144,144,145,255,142,142,142,255,141,141,141,255,138,138,138,255,137,136,136,255, +135,134,134,255,133,132,132,255,131,130,130,255,129,128,127,255,127,126,125,255,125,124,123,255,124,122,121,255,122,120,118,255, +120,118,116,255,118,116,114,255, 90, 89, 88,255, 61, 61, 61,255, 60, 60, 60,255,120,121,122,255,175,177,179,255,172,174,176,255, +171,172,174,255,170,171,173,255,168,170,171,255,167,168,170,255,166,167,168,255,164,166,167,255,163,164,166,255,162,163,165,255, +161,162,164,255,160,161,162,255,159,160,162,255,159,160,161,255,158,159,161,255,159,160,161,255,159,160,161,255,160,161,162,255, +162,163,165,255,164,166,167,255,168,169,171,255,173,175,176,255,180,181,184,255,187,189,192,255,193,195,198,255,197,200,202,255, +199,201,204,255,200,202,205,255,201,203,205,255,201,204,206,255,202,204,206,255,201,204,207,255,201,203,207,255,200,203,206,255, +199,202,205,255,198,201,204,255,197,200,203,255,197,200,203,255,196,199,202,255,196,198,202,255,195,198,201,255,194,197,200,255, +194,197,200,255,193,196,199,255,193,197,199,255,193,196,199,255,193,196,199,255,192,195,198,255,192,195,198,255,191,194,197,255, +191,194,197,255,190,193,196,255,189,192,196,255,188,191,194,255,188,190,193,255,186,189,192,255,185,188,190,255,184,187,189,255, +183,185,188,255,181,184,186,255,180,182,185,255,178,180,183,255,177,179,181,255,175,177,179,255,173,175,176,255,171,173,175,255, +169,171,173,255,167,168,170,255,165,167,168,255,163,164,166,255,160,161,163,255,159,160,161,255,156,157,158,255,154,155,156,255, +152,153,154,255,150,150,151,255,147,148,148,255,146,146,147,255,144,144,144,255,141,141,141,255,140,139,140,255,138,137,137,255, +135,135,135,255,133,133,132,255,132,131,130,255,130,129,128,255,128,126,126,255,126,125,124,255,124,122,121,255,122,120,119,255, +121,119,117,255,119,117,114,255, 90, 89, 88,255, 61, 61, 61,255, 60, 60, 60,255,120,121,122,255,175,177,179,255,172,174,176,255, +171,172,174,255,170,171,173,255,167,169,171,255,166,168,169,255,165,167,168,255,163,164,166,255,162,164,165,255,161,162,163,255, +159,160,162,255,158,159,161,255,157,158,159,255,156,157,158,255,155,156,157,255,154,155,156,255,154,154,156,255,153,154,155,255, +153,154,156,255,155,156,156,255,157,158,159,255,159,160,161,255,162,164,166,255,169,171,173,255,179,182,184,255,189,192,194,255, +197,199,201,255,200,202,204,255,200,202,204,255,201,203,205,255,202,204,207,255,201,205,207,255,202,205,206,255,201,203,207,255, +200,203,206,255,200,203,206,255,198,201,204,255,198,201,204,255,197,200,203,255,197,200,203,255,196,199,202,255,196,199,202,255, +195,197,201,255,194,198,200,255,195,197,201,255,193,197,199,255,194,197,200,255,194,197,200,255,193,195,199,255,193,196,199,255, +192,195,198,255,191,194,197,255,191,193,197,255,190,193,195,255,189,191,194,255,188,190,193,255,186,189,192,255,185,188,191,255, +184,187,189,255,182,185,187,255,181,183,186,255,180,182,184,255,177,179,182,255,176,178,180,255,174,176,178,255,172,174,175,255, +170,172,173,255,169,170,172,255,166,167,169,255,164,165,167,255,162,163,165,255,160,161,162,255,157,158,160,255,156,156,158,255, +153,154,155,255,151,151,152,255,149,150,150,255,147,147,147,255,144,144,145,255,143,142,143,255,140,140,140,255,138,138,138,255, +136,135,135,255,135,134,134,255,132,131,131,255,130,129,128,255,129,127,127,255,127,125,124,255,124,123,121,255,123,121,120,255, +121,119,117,255,120,118,115,255, 90, 89, 88,255, 61, 61, 61,255, 60, 60, 60,255,120,121,122,255,175,177,179,255,172,174,176,255, +171,173,174,255,170,171,173,255,167,169,171,255,166,168,169,255,165,167,168,255,163,165,166,255,162,163,165,255,161,162,162,255, +158,160,161,255,157,158,160,255,155,156,158,255,155,155,157,255,153,154,155,255,152,153,154,255,151,152,152,255,150,151,152,255, +149,149,150,255,148,149,150,255,148,149,150,255,148,149,150,255,150,150,151,255,151,152,154,255,155,157,158,255,164,165,168,255, +178,180,182,255,193,195,198,255,200,202,204,255,202,203,206,255,201,203,206,255,202,204,207,255,203,205,207,255,202,205,208,255, +201,204,207,255,201,204,207,255,200,203,206,255,198,201,205,255,198,201,204,255,197,200,203,255,197,200,203,255,197,200,203,255, +196,199,202,255,195,198,201,255,195,198,201,255,195,197,201,255,194,197,200,255,194,196,200,255,193,197,199,255,193,196,199,255, +192,196,198,255,192,195,198,255,191,194,197,255,191,193,196,255,190,193,196,255,189,191,194,255,188,190,193,255,186,189,192,255, +185,188,190,255,184,186,189,255,182,184,187,255,181,183,185,255,179,182,184,255,177,179,181,255,176,177,179,255,174,176,177,255, +172,173,175,255,170,171,173,255,167,169,170,255,165,167,168,255,163,164,166,255,161,162,163,255,159,160,161,255,156,157,158,255, +155,155,156,255,152,153,154,255,150,150,151,255,147,147,148,255,145,146,147,255,144,144,143,255,141,141,141,255,139,138,138,255, +137,136,136,255,135,135,134,255,133,132,131,255,131,130,129,255,129,128,127,255,127,126,125,255,125,124,122,255,123,121,120,255, +121,120,118,255,120,118,116,255, 91, 90, 89,255, 61, 61, 61,255, 60, 60, 60,255,121,122,123,255,175,177,179,255,172,174,176,255, +171,173,175,255,170,171,173,255,168,169,171,255,166,168,170,255,165,167,168,255,163,165,166,255,162,163,165,255,161,162,162,255, +159,160,161,255,157,158,159,255,156,157,157,255,154,155,156,255,152,153,154,255,151,151,153,255,149,149,151,255,147,148,149,255, +146,147,148,255,144,145,146,255,143,144,145,255,143,143,144,255,141,142,142,255,142,142,143,255,142,142,143,255,143,144,144,255, +148,148,149,255,158,160,161,255,182,184,186,255,201,204,206,255,202,204,206,255,202,204,206,255,203,205,207,255,202,204,208,255, +202,204,208,255,202,204,207,255,201,204,206,255,200,203,206,255,199,202,205,255,198,201,204,255,197,200,204,255,197,200,203,255, +196,199,202,255,196,199,202,255,195,198,201,255,195,198,201,255,194,197,200,255,195,197,201,255,194,197,200,255,194,196,200,255, +193,196,199,255,193,195,199,255,192,195,198,255,191,194,197,255,191,193,196,255,189,192,195,255,188,191,194,255,187,190,193,255, +187,188,191,255,185,187,190,255,184,186,188,255,183,184,186,255,180,182,185,255,179,181,183,255,177,178,180,255,175,177,179,255, +173,175,176,255,171,172,174,255,169,170,172,255,167,168,170,255,164,165,167,255,162,164,165,255,160,161,163,255,158,159,160,255, +156,157,158,255,153,154,155,255,151,151,152,255,149,149,150,255,146,147,147,255,144,144,144,255,142,142,142,255,140,140,140,255, +138,137,137,255,136,135,135,255,134,133,133,255,131,130,130,255,130,129,128,255,128,127,126,255,126,124,123,255,124,123,120,255, +122,120,119,255,121,119,116,255, 91, 90, 89,255, 61, 61, 61,255, 60, 60, 60,255,121,122,123,255,176,178,180,255,173,175,177,255, +171,173,175,255,170,172,174,255,168,170,172,255,167,168,170,255,166,167,169,255,163,165,166,255,162,164,165,255,161,162,164,255, +159,160,161,255,157,158,160,255,156,157,159,255,154,155,156,255,153,153,155,255,151,152,153,255,149,150,151,255,147,148,149,255, +145,146,147,255,144,145,146,255,142,143,144,255,140,140,141,255,139,139,140,255,138,138,138,255,136,136,137,255,135,135,136,255, +135,135,136,255,136,136,137,255,141,141,142,255,167,168,170,255,199,201,204,255,202,205,207,255,203,205,206,255,203,205,208,255, +202,206,208,255,203,205,207,255,201,205,207,255,201,204,207,255,200,203,206,255,199,202,205,255,199,201,205,255,198,200,204,255, +198,201,204,255,197,200,203,255,197,200,203,255,195,199,201,255,196,198,202,255,195,198,201,255,194,198,200,255,195,197,201,255, +194,197,200,255,194,196,200,255,193,196,199,255,192,195,198,255,191,194,197,255,191,193,196,255,189,192,195,255,188,191,194,255, +187,190,193,255,185,188,191,255,184,187,190,255,183,186,188,255,181,183,186,255,180,182,184,255,178,180,182,255,176,178,180,255, +174,176,177,255,172,174,176,255,170,171,173,255,168,169,171,255,166,167,169,255,163,165,166,255,161,162,163,255,159,160,162,255, +157,157,159,255,155,155,156,255,153,153,154,255,150,150,151,255,147,147,148,255,146,146,146,255,143,143,143,255,141,141,140,255, +139,138,138,255,137,136,136,255,135,134,133,255,132,131,130,255,130,129,129,255,129,127,126,255,126,125,123,255,124,123,122,255, +123,121,119,255,121,119,117,255, 92, 91, 89,255, 61, 61, 61,255, 60, 60, 60,255,121,122,123,255,177,179,181,255,174,176,178,255, +172,174,176,255,171,173,175,255,169,171,173,255,168,169,171,255,166,168,170,255,165,166,168,255,163,164,166,255,162,163,165,255, +159,162,163,255,158,159,161,255,157,158,159,255,155,156,158,255,153,154,156,255,152,153,154,255,150,151,152,255,148,149,150,255, +147,147,148,255,145,145,146,255,143,143,144,255,141,141,142,255,139,139,140,255,137,137,137,255,134,134,135,255,134,133,134,255, +132,132,132,255,131,130,131,255,130,130,130,255,132,132,131,255,151,152,154,255,190,193,195,255,203,205,208,255,202,205,207,255, +203,205,208,255,202,206,207,255,202,205,208,255,202,205,208,255,201,204,207,255,201,203,206,255,199,202,205,255,199,201,205,255, +198,201,204,255,198,201,204,255,197,200,203,255,197,200,203,255,196,199,202,255,196,199,202,255,195,198,201,255,194,197,200,255, +195,198,201,255,194,197,200,255,194,196,200,255,193,195,199,255,192,195,198,255,191,194,197,255,190,193,196,255,189,192,195,255, +188,191,194,255,187,190,193,255,185,188,190,255,184,186,189,255,183,185,187,255,181,183,185,255,179,181,183,255,177,179,181,255, +175,177,179,255,173,175,176,255,171,173,175,255,169,171,172,255,167,168,170,255,165,167,167,255,163,164,165,255,160,161,163,255, +158,159,160,255,156,157,158,255,153,154,155,255,151,151,152,255,149,149,150,255,146,146,147,255,144,143,144,255,141,141,142,255, +140,139,139,255,138,137,137,255,135,134,134,255,133,132,132,255,131,130,129,255,129,128,127,255,127,126,124,255,125,123,122,255, +123,121,119,255,122,119,118,255, 92, 90, 89,255, 61, 61, 61,255, 60, 60, 60,255,121,123,124,255,177,179,181,255,175,177,179,255, +174,176,178,255,172,174,176,255,170,172,174,255,169,171,173,255,167,169,171,255,166,168,169,255,165,166,168,255,162,164,166,255, +162,163,164,255,160,161,163,255,158,159,161,255,157,158,159,255,155,156,158,255,154,155,156,255,152,153,154,255,150,151,152,255, +149,150,151,255,147,148,149,255,145,146,147,255,143,143,144,255,141,141,142,255,138,138,139,255,136,136,137,255,133,133,134,255, +131,131,131,255,129,128,129,255,128,127,128,255,127,126,126,255,128,127,127,255,142,143,143,255,188,190,192,255,205,206,208,255, +202,205,207,255,202,206,208,255,203,205,207,255,202,205,207,255,202,204,208,255,201,204,207,255,201,203,206,255,199,202,205,255, +199,202,205,255,198,201,204,255,197,201,203,255,197,200,203,255,197,200,203,255,196,199,202,255,195,198,201,255,195,198,201,255, +194,197,200,255,194,197,200,255,194,197,200,255,194,196,200,255,193,195,199,255,192,195,198,255,191,194,197,255,190,193,196,255, +189,191,194,255,188,190,193,255,187,189,192,255,185,187,190,255,183,186,188,255,182,184,186,255,180,182,184,255,178,180,182,255, +176,178,180,255,174,176,177,255,172,174,176,255,170,171,173,255,168,169,171,255,166,167,168,255,164,165,166,255,161,162,164,255, +159,160,162,255,157,157,159,255,154,155,156,255,153,153,154,255,150,150,151,255,147,147,148,255,145,145,145,255,143,142,142,255, +140,140,139,255,139,138,138,255,136,135,135,255,134,133,132,255,131,130,130,255,130,129,128,255,128,126,125,255,125,124,122,255, +124,122,120,255,123,121,119,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,122,123,124,255,178,180,183,255,175,178,180,255, +175,177,179,255,173,175,177,255,171,173,175,255,170,172,174,255,169,171,173,255,167,169,171,255,166,168,169,255,165,167,168,255, +163,165,166,255,162,163,165,255,161,162,164,255,159,160,162,255,158,159,160,255,157,158,159,255,155,156,157,255,153,154,155,255, +152,153,154,255,150,151,152,255,148,149,150,255,147,147,148,255,144,145,146,255,142,142,143,255,140,140,141,255,137,137,137,255, +133,133,133,255,130,130,130,255,128,128,128,255,126,125,125,255,124,124,123,255,123,122,122,255,134,134,133,255,183,186,189,255, +203,205,207,255,203,205,207,255,203,206,208,255,203,205,209,255,202,206,208,255,202,205,208,255,202,204,207,255,201,204,207,255, +200,203,206,255,199,202,205,255,199,201,205,255,197,201,204,255,198,201,204,255,197,200,203,255,196,199,202,255,195,198,201,255, +196,199,202,255,194,197,200,255,195,198,201,255,194,197,200,255,193,196,199,255,193,196,199,255,192,195,198,255,191,194,197,255, +190,193,196,255,188,191,194,255,187,190,193,255,186,189,191,255,184,186,189,255,183,185,188,255,181,183,186,255,179,181,183,255, +177,179,182,255,176,178,179,255,173,175,177,255,171,172,174,255,169,171,172,255,166,168,169,255,164,166,167,255,163,164,165,255, +160,161,163,255,158,158,160,255,156,157,158,255,153,154,155,255,150,151,151,255,149,149,150,255,146,146,147,255,143,143,143,255, +141,141,141,255,139,139,138,255,137,136,135,255,134,133,132,255,133,132,131,255,130,129,128,255,128,127,125,255,127,125,124,255, +124,122,121,255,123,121,119,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,122,123,124,255,179,181,183,255,176,178,181,255, +175,177,180,255,174,176,178,255,173,175,177,255,172,174,175,255,171,173,174,255,170,172,173,255,168,170,172,255,167,168,170,255, +166,167,169,255,165,166,168,255,163,164,166,255,162,163,165,255,161,162,163,255,159,160,162,255,158,160,160,255,157,158,159,255, +155,157,158,255,153,155,156,255,152,153,155,255,151,152,153,255,149,150,151,255,147,148,149,255,144,145,146,255,141,142,143,255, +139,139,139,255,135,135,135,255,131,131,131,255,128,127,127,255,125,124,124,255,122,121,121,255,120,119,119,255,131,130,131,255, +178,180,182,255,203,205,207,255,203,205,207,255,203,206,208,255,202,205,209,255,202,205,208,255,202,205,208,255,202,204,207,255, +201,203,206,255,200,203,206,255,199,202,205,255,198,201,204,255,198,201,204,255,198,201,204,255,197,200,203,255,196,199,202,255, +196,199,202,255,195,198,201,255,195,198,201,255,195,198,201,255,193,196,199,255,193,196,199,255,192,195,198,255,191,194,197,255, +191,193,196,255,189,192,195,255,188,191,193,255,187,189,192,255,185,188,190,255,184,186,188,255,182,184,187,255,180,182,185,255, +178,180,182,255,176,178,180,255,175,176,178,255,172,174,176,255,170,171,173,255,168,169,171,255,166,167,168,255,163,164,166,255, +161,162,163,255,159,160,161,255,157,158,159,255,154,155,156,255,152,152,153,255,149,150,150,255,147,147,147,255,145,145,145,255, +142,142,142,255,140,140,139,255,138,137,137,255,136,135,134,255,133,132,131,255,131,130,129,255,129,128,126,255,127,126,124,255, +125,123,121,255,123,121,119,255, 93, 92, 90,255, 61, 61, 61,255, 60, 60, 60,255,122,123,125,255,179,181,184,255,177,179,181,255, +176,178,181,255,175,177,179,255,174,176,178,255,173,175,177,255,172,174,176,255,171,173,175,255,171,172,174,255,169,171,173,255, +168,170,172,255,167,168,170,255,166,167,169,255,165,167,168,255,163,165,166,255,163,164,166,255,162,163,165,255,160,162,163,255, +159,161,162,255,158,160,161,255,156,158,159,255,155,156,158,255,153,154,155,255,151,152,153,255,150,150,152,255,147,147,148,255, +143,144,145,255,140,140,141,255,136,136,137,255,132,132,132,255,128,128,128,255,124,123,123,255,121,120,120,255,120,118,118,255, +127,127,126,255,179,181,183,255,205,207,209,255,203,206,207,255,203,205,208,255,202,206,209,255,202,205,208,255,202,204,207,255, +201,204,207,255,201,203,206,255,199,202,205,255,199,202,205,255,199,201,205,255,197,200,204,255,198,201,203,255,197,200,203,255, +197,200,203,255,196,199,202,255,195,198,201,255,194,197,200,255,194,197,200,255,193,196,200,255,193,195,198,255,192,195,198,255, +191,194,197,255,190,193,196,255,189,191,194,255,188,190,193,255,186,188,191,255,185,187,190,255,183,186,188,255,181,183,186,255, +179,181,183,255,177,179,181,255,175,177,179,255,173,175,176,255,171,172,174,255,169,170,172,255,167,168,169,255,164,165,167,255, +162,163,165,255,160,161,162,255,157,158,159,255,156,156,157,255,153,153,154,255,150,150,151,255,148,148,148,255,146,146,146,255, +143,143,142,255,140,141,140,255,138,138,137,255,136,135,134,255,134,133,132,255,132,131,130,255,129,128,127,255,128,126,125,255, +125,124,122,255,124,122,120,255, 93, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,123,124,125,255,180,182,185,255,178,180,182,255, +177,179,181,255,176,178,180,255,175,177,179,255,174,176,178,255,174,176,178,255,172,174,176,255,172,174,176,255,171,173,175,255, +170,172,173,255,170,171,173,255,169,170,172,255,168,169,171,255,167,168,170,255,166,168,169,255,165,166,168,255,164,165,167,255, +163,165,166,255,162,163,165,255,160,162,163,255,159,161,162,255,158,159,160,255,156,157,158,255,154,155,156,255,151,152,153,255, +149,149,150,255,146,147,148,255,143,143,144,255,139,139,139,255,134,134,134,255,130,129,129,255,125,124,124,255,121,120,120,255, +118,117,116,255,123,123,123,255,181,183,185,255,203,206,208,255,203,206,208,255,203,206,209,255,202,205,209,255,203,206,209,255, +202,205,207,255,202,204,207,255,201,204,207,255,200,203,206,255,200,202,206,255,199,202,205,255,197,200,204,255,198,201,204,255, +197,200,203,255,197,200,203,255,196,199,202,255,195,198,201,255,194,197,200,255,194,197,200,255,193,196,199,255,193,195,198,255, +192,195,198,255,191,193,196,255,190,192,195,255,188,191,194,255,186,189,192,255,185,188,190,255,184,186,189,255,181,184,186,255, +180,182,185,255,179,181,183,255,176,178,180,255,174,175,177,255,172,174,175,255,170,171,173,255,167,168,170,255,165,166,168,255, +163,164,165,255,160,161,163,255,159,159,161,255,156,157,158,255,153,154,154,255,151,152,152,255,149,149,150,255,146,146,146,255, +144,144,144,255,142,141,141,255,139,138,138,255,136,135,135,255,135,134,133,255,133,131,130,255,130,128,127,255,128,127,125,255, +126,124,122,255,124,122,120,255, 93, 92, 91,255, 61, 61, 61,255, 60, 60, 60,255,123,124,126,255,180,183,185,255,178,181,183,255, +177,179,182,255,177,179,181,255,176,178,180,255,175,177,179,255,174,176,178,255,173,175,177,255,172,174,176,255,172,174,176,255, +171,173,175,255,170,172,174,255,170,172,173,255,169,171,173,255,169,170,172,255,168,170,172,255,168,169,171,255,167,168,170,255, +166,167,170,255,165,166,168,255,164,165,167,255,162,165,165,255,161,162,164,255,160,161,162,255,157,159,160,255,155,156,157,255, +152,153,155,255,150,151,152,255,147,148,149,255,143,144,145,255,140,140,140,255,136,135,136,255,131,130,131,255,126,125,125,255, +121,120,120,255,118,116,116,255,128,127,127,255,184,186,188,255,203,206,208,255,204,205,209,255,203,205,208,255,202,205,209,255, +202,205,208,255,202,205,208,255,202,205,208,255,201,204,207,255,200,203,206,255,200,202,205,255,199,201,205,255,198,201,204,255, +198,201,203,255,197,200,203,255,197,199,203,255,196,198,202,255,195,198,201,255,194,197,200,255,193,197,199,255,193,196,199,255, +192,195,198,255,191,194,197,255,190,193,196,255,189,192,195,255,188,190,193,255,186,189,191,255,185,187,189,255,183,185,188,255, +181,183,185,255,179,181,183,255,177,179,181,255,175,177,179,255,173,175,176,255,170,172,173,255,168,170,171,255,166,167,169,255, +164,165,166,255,162,163,164,255,160,160,162,255,157,158,159,255,155,155,156,255,152,152,153,255,150,150,150,255,148,148,148,255, +146,145,144,255,142,142,142,255,140,140,139,255,138,137,136,255,135,134,133,255,133,132,130,255,131,129,128,255,128,127,125,255, +126,125,123,255,124,123,121,255, 93, 92, 91,255, 61, 61, 61,255, 60, 60, 60,255,123,125,126,255,181,184,186,255,179,181,183,255, +178,181,183,255,177,179,181,255,176,179,181,255,176,178,180,255,174,176,178,255,174,176,178,255,173,175,177,255,172,174,176,255, +172,174,176,255,171,173,175,255,171,172,174,255,170,172,174,255,170,171,173,255,169,170,172,255,169,170,172,255,168,170,171,255, +167,169,170,255,167,168,170,255,166,168,169,255,165,166,168,255,164,165,167,255,162,163,166,255,161,162,163,255,158,160,161,255, +156,157,159,255,154,155,156,255,151,152,153,255,147,148,149,255,145,144,145,255,140,140,141,255,136,136,136,255,132,131,131,255, +126,125,125,255,121,119,119,255,117,116,115,255,133,132,132,255,195,198,201,255,204,206,208,255,204,206,209,255,203,205,208,255, +202,206,209,255,202,205,208,255,201,204,207,255,202,204,207,255,201,203,206,255,199,202,206,255,200,202,205,255,199,201,205,255, +197,200,204,255,198,201,203,255,197,200,203,255,196,199,202,255,195,198,201,255,195,198,201,255,194,196,200,255,193,196,199,255, +193,196,199,255,191,194,197,255,190,193,196,255,190,192,195,255,188,190,193,255,187,189,192,255,186,188,190,255,183,185,188,255, +182,184,186,255,180,182,185,255,178,180,182,255,176,177,179,255,173,175,177,255,172,173,175,255,169,170,172,255,167,168,170,255, +165,166,167,255,163,164,165,255,160,161,162,255,158,159,160,255,156,156,157,255,153,153,154,255,151,151,151,255,148,148,148,255, +145,145,145,255,144,143,143,255,141,140,140,255,138,137,137,255,136,135,134,255,133,132,131,255,131,130,128,255,128,128,126,255, +127,125,123,255,125,123,121,255, 93, 92, 91,255, 61, 61, 61,255, 60, 60, 60,255,123,125,126,255,182,184,186,255,179,182,184,255, +179,181,183,255,178,181,183,255,177,179,182,255,177,179,181,255,176,178,180,255,175,177,179,255,174,176,178,255,174,176,178,255, +173,175,177,255,172,174,176,255,171,174,176,255,171,173,175,255,171,172,174,255,170,172,174,255,170,171,173,255,170,171,173,255, +169,171,172,255,168,170,171,255,167,169,170,255,167,168,170,255,165,167,168,255,164,166,167,255,163,164,166,255,161,162,163,255, +159,160,161,255,157,158,159,255,154,155,156,255,151,152,153,255,148,149,150,255,144,146,146,255,141,141,142,255,136,136,136,255, +131,131,131,255,126,125,125,255,120,119,119,255,115,113,112,255,143,143,143,255,202,204,206,255,204,206,209,255,203,207,208,255, +203,206,209,255,202,205,208,255,203,206,209,255,202,204,208,255,201,204,207,255,201,204,206,255,200,203,206,255,200,202,206,255, +199,202,204,255,198,201,204,255,198,201,204,255,196,199,202,255,196,199,202,255,196,198,202,255,194,197,200,255,194,197,200,255, +193,196,199,255,192,195,198,255,191,194,197,255,190,193,196,255,188,191,194,255,187,190,193,255,186,188,191,255,184,186,189,255, +182,184,187,255,181,183,185,255,178,180,182,255,177,178,180,255,175,177,178,255,172,174,175,255,170,171,173,255,168,169,171,255, +165,166,168,255,163,164,165,255,161,162,163,255,159,159,160,255,156,156,157,255,154,154,155,255,151,151,152,255,149,149,149,255, +146,146,146,255,144,144,143,255,142,141,140,255,139,138,137,255,137,136,135,255,134,133,132,255,131,130,129,255,130,128,126,255, +127,125,123,255,125,123,121,255, 93, 92, 91,255, 61, 61, 61,255, 60, 60, 60,255,123,125,126,255,182,184,186,255,179,182,184,255, +179,181,184,255,179,181,183,255,177,179,182,255,177,179,181,255,176,178,181,255,175,177,180,255,175,177,179,255,174,176,178,255, +173,175,177,255,173,175,177,255,172,174,175,255,171,173,175,255,171,173,174,255,170,172,174,255,170,171,173,255,170,172,173,255, +169,171,173,255,168,170,172,255,168,169,171,255,167,168,170,255,166,168,169,255,165,167,168,255,164,165,167,255,163,164,165,255, +161,162,164,255,159,160,161,255,157,158,160,255,154,155,157,255,152,152,154,255,149,149,150,255,146,146,147,255,141,141,142,255, +136,137,136,255,131,131,131,255,125,124,124,255,120,118,118,255,115,113,113,255,156,157,158,255,203,205,208,255,204,207,209,255, +204,206,210,255,203,206,209,255,203,206,208,255,202,205,208,255,202,205,208,255,201,204,207,255,200,203,206,255,200,203,206,255, +199,201,205,255,198,201,204,255,198,201,204,255,197,200,203,255,197,199,203,255,196,199,202,255,195,198,201,255,194,197,200,255, +193,196,199,255,192,195,198,255,191,194,197,255,191,193,196,255,189,192,194,255,188,190,193,255,186,189,191,255,185,187,190,255, +183,185,187,255,181,183,186,255,179,181,183,255,178,179,181,255,175,177,179,255,174,175,177,255,171,172,174,255,169,170,171,255, +166,167,169,255,164,165,166,255,162,163,164,255,160,160,161,255,157,158,158,255,154,155,155,255,152,152,153,255,150,150,150,255, +147,147,147,255,145,144,144,255,142,142,141,255,140,139,138,255,137,136,136,255,135,134,132,255,132,131,130,255,129,128,127,255, +128,126,124,255,126,123,121,255, 94, 92, 91,255, 61, 61, 61,255, 60, 60, 60,255,124,125,126,255,182,184,187,255,179,182,184,255, +179,181,183,255,179,181,183,255,177,179,182,255,177,180,181,255,177,179,181,255,175,177,180,255,175,177,179,255,175,177,179,255, +173,175,177,255,174,176,177,255,173,175,176,255,172,174,175,255,171,173,175,255,171,173,175,255,170,172,174,255,170,171,173,255, +170,171,172,255,169,170,172,255,168,170,172,255,167,169,170,255,167,168,170,255,166,167,169,255,165,166,168,255,164,165,167,255, +163,164,165,255,161,162,163,255,159,160,161,255,157,158,159,255,155,155,157,255,152,152,154,255,149,149,150,255,145,146,146,255, +140,141,141,255,136,136,136,255,131,130,130,255,124,122,122,255,118,116,115,255,120,119,118,255,178,179,180,255,204,206,208,255, +203,207,209,255,204,207,210,255,202,205,208,255,203,206,209,255,203,205,209,255,202,205,208,255,201,204,207,255,200,203,206,255, +199,202,205,255,198,201,205,255,198,201,204,255,197,200,203,255,196,199,202,255,196,199,202,255,195,198,201,255,194,197,200,255, +194,197,200,255,192,195,198,255,192,194,197,255,191,193,196,255,189,192,195,255,188,190,193,255,187,189,192,255,185,187,190,255, +183,186,188,255,182,184,186,255,180,182,184,255,178,180,181,255,176,178,180,255,174,175,177,255,172,173,175,255,169,171,173,255, +167,168,170,255,165,166,167,255,162,163,164,255,161,161,162,255,158,158,159,255,155,156,156,255,153,154,154,255,151,151,151,255, +148,147,147,255,146,145,145,255,143,143,142,255,140,139,139,255,138,137,136,255,135,134,133,255,133,132,130,255,130,129,127,255, +128,126,124,255,126,124,122,255, 94, 93, 91,255, 61, 61, 61,255, 60, 60, 60,255,124,125,126,255,182,185,187,255,180,182,184,255, +179,182,184,255,179,181,183,255,178,180,182,255,177,180,182,255,177,179,181,255,175,177,180,255,175,177,179,255,174,176,178,255, +174,176,178,255,174,176,177,255,173,175,177,255,172,174,176,255,172,174,176,255,171,172,174,255,171,173,175,255,171,172,174,255, +170,171,174,255,169,171,172,255,169,171,172,255,167,169,172,255,167,168,170,255,167,168,170,255,165,167,168,255,165,166,167,255, +164,165,166,255,162,163,165,255,160,162,163,255,159,160,161,255,157,158,159,255,155,155,157,255,151,152,153,255,148,148,149,255, +144,145,146,255,139,140,141,255,135,134,134,255,129,129,129,255,122,121,121,255,116,114,113,255,131,130,130,255,197,198,201,255, +204,206,209,255,203,207,209,255,204,207,210,255,203,205,208,255,203,206,209,255,202,204,208,255,201,204,207,255,201,204,206,255, +200,203,207,255,199,202,205,255,199,202,205,255,197,200,204,255,197,200,203,255,197,200,203,255,196,198,202,255,195,198,201,255, +194,197,200,255,192,195,198,255,192,194,197,255,191,194,197,255,189,192,195,255,188,191,193,255,187,189,192,255,185,187,190,255, +184,186,188,255,182,184,187,255,180,182,184,255,179,180,182,255,177,179,181,255,174,176,178,255,172,173,175,255,171,172,173,255, +168,169,171,255,165,166,168,255,163,164,165,255,161,162,162,255,158,159,160,255,157,156,158,255,154,154,154,255,151,151,151,255, +149,149,149,255,147,146,146,255,144,143,142,255,142,141,139,255,139,138,137,255,136,135,134,255,133,132,130,255,131,129,128,255, +128,126,124,255,127,124,122,255, 94, 93, 91,255, 61, 61, 61,255, 60, 60, 60,255,124,125,127,255,183,185,187,255,180,182,185,255, +180,182,184,255,179,181,184,255,178,180,182,255,177,180,182,255,177,179,181,255,176,178,180,255,175,177,179,255,175,177,179,255, +174,176,178,255,174,176,178,255,172,174,177,255,173,175,176,255,172,174,175,255,172,173,175,255,171,172,174,255,170,172,174,255, +171,171,173,255,169,171,172,255,169,171,172,255,168,169,171,255,167,169,170,255,167,169,170,255,166,167,169,255,165,167,168,255, +164,166,167,255,163,164,166,255,162,163,165,255,160,161,163,255,159,160,161,255,157,158,159,255,154,155,156,255,151,152,153,255, +148,148,149,255,144,144,145,255,139,139,139,255,134,133,133,255,127,126,126,255,120,119,118,255,114,111,110,255,149,149,149,255, +205,207,210,255,204,207,209,255,203,207,210,255,203,206,209,255,202,205,208,255,203,205,209,255,201,205,207,255,201,204,207,255, +201,204,206,255,199,202,206,255,199,202,205,255,198,201,204,255,197,200,203,255,197,200,203,255,196,198,202,255,195,198,201,255, +195,197,200,255,193,196,199,255,192,195,198,255,191,194,197,255,189,192,195,255,189,191,194,255,188,190,193,255,185,188,190,255, +184,186,189,255,183,185,187,255,181,183,185,255,179,181,183,255,177,179,181,255,175,177,178,255,173,174,176,255,171,172,174,255, +169,170,172,255,166,167,168,255,164,165,166,255,162,162,163,255,159,160,161,255,157,157,158,255,154,154,155,255,152,152,152,255, +149,149,149,255,147,147,146,255,144,144,144,255,142,141,140,255,139,138,137,255,137,135,134,255,134,132,131,255,131,130,128,255, +129,127,125,255,127,125,122,255, 94, 93, 92,255, 61, 61, 61,255, 60, 60, 60,255,124,125,126,255,183,185,188,255,180,183,185,255, +180,182,184,255,179,181,184,255,178,180,183,255,178,180,182,255,177,179,180,255,176,178,181,255,176,178,180,255,175,177,179,255, +174,176,178,255,173,175,178,255,173,175,177,255,172,174,176,255,173,174,175,255,171,173,175,255,172,172,174,255,171,173,175,255, +170,171,173,255,169,172,173,255,169,171,173,255,169,169,171,255,168,170,171,255,167,169,170,255,166,168,169,255,165,167,168,255, +165,166,168,255,163,165,166,255,163,164,165,255,162,163,164,255,160,161,162,255,158,159,160,255,156,157,159,255,154,154,156,255, +150,151,152,255,147,148,149,255,143,142,143,255,138,138,138,255,132,132,132,255,126,124,123,255,118,117,115,255,116,114,113,255, +172,173,174,255,205,208,210,255,204,207,210,255,204,207,210,255,203,206,209,255,202,205,208,255,202,204,208,255,202,205,208,255, +200,203,206,255,200,203,206,255,199,202,206,255,198,201,204,255,197,200,204,255,197,200,203,255,196,199,202,255,195,198,201,255, +195,197,200,255,193,196,199,255,192,195,198,255,191,194,197,255,189,192,195,255,189,191,194,255,188,190,193,255,186,188,191,255, +184,186,189,255,183,185,187,255,181,183,185,255,179,181,183,255,178,180,182,255,176,177,179,255,174,175,177,255,172,173,174,255, +169,170,172,255,167,168,169,255,164,165,166,255,163,163,165,255,160,160,161,255,157,157,158,255,155,155,156,255,152,152,152,255, +149,149,149,255,148,148,147,255,145,144,144,255,142,141,140,255,140,139,138,255,137,136,134,255,134,133,131,255,132,130,129,255, +129,127,125,255,127,125,122,255, 94, 93, 92,255, 61, 61, 61,255, 60, 60, 60,255,124,126,127,255,183,186,188,255,181,183,186,255, +181,183,185,255,180,182,184,255,179,181,183,255,178,180,183,255,178,180,182,255,176,178,180,255,176,178,180,255,175,177,179,255, +175,177,179,255,174,176,178,255,174,176,176,255,173,175,176,255,173,174,176,255,171,173,175,255,172,173,175,255,171,172,175,255, +170,173,173,255,169,171,173,255,170,171,173,255,168,171,171,255,168,169,171,255,168,169,171,255,166,168,169,255,166,167,169,255, +165,166,168,255,164,165,167,255,163,164,166,255,162,163,165,255,161,162,163,255,159,160,162,255,158,159,160,255,155,156,157,255, +153,153,154,255,149,150,151,255,145,146,147,255,141,141,142,255,136,136,136,255,130,129,129,255,123,122,121,255,116,114,113,255, +129,128,127,255,194,196,198,255,204,206,208,255,203,207,210,255,204,206,209,255,202,205,208,255,202,205,209,255,202,205,208,255, +202,204,208,255,200,203,206,255,200,203,206,255,199,201,205,255,198,201,204,255,198,201,204,255,196,199,202,255,196,199,202,255, +195,198,201,255,194,196,199,255,192,195,198,255,191,194,197,255,189,192,195,255,188,191,193,255,187,190,192,255,186,188,191,255, +184,187,189,255,183,185,188,255,181,183,185,255,180,181,183,255,178,180,182,255,176,177,179,255,174,175,177,255,173,174,175,255, +170,171,173,255,167,168,169,255,166,166,167,255,163,164,165,255,161,161,162,255,159,159,160,255,156,156,157,255,153,153,154,255, +151,150,150,255,148,148,147,255,145,145,144,255,143,142,141,255,141,140,138,255,137,136,135,255,135,133,132,255,132,131,129,255, +130,128,125,255,127,125,123,255, 94, 93, 91,255, 61, 61, 61,255, 60, 60, 60,255,125,126,127,255,183,186,188,255,181,184,186,255, +180,183,185,255,180,182,185,255,179,181,184,255,178,180,183,255,178,179,181,255,177,179,181,255,176,178,180,255,176,178,180,255, +175,177,179,255,174,176,178,255,174,176,177,255,173,175,176,255,172,174,176,255,172,174,176,255,171,173,175,255,171,172,175,255, +170,172,173,255,169,171,173,255,170,171,173,255,168,170,171,255,169,170,172,255,168,170,171,255,166,168,169,255,166,167,169,255, +165,167,168,255,164,165,167,255,164,165,166,255,163,164,165,255,161,162,164,255,160,161,163,255,158,159,161,255,157,158,159,255, +154,155,157,255,152,152,153,255,148,149,150,255,144,144,145,255,140,140,140,255,134,133,133,255,128,127,126,255,120,118,117,255, +115,113,111,255,158,158,159,255,204,206,209,255,203,207,209,255,204,207,210,255,203,205,208,255,202,206,209,255,202,205,208,255, +201,205,207,255,201,204,207,255,200,203,206,255,200,202,205,255,198,201,204,255,198,201,204,255,196,199,202,255,196,199,202,255, +195,198,201,255,194,196,199,255,193,195,198,255,191,194,197,255,189,192,195,255,188,191,193,255,187,190,192,255,186,188,191,255, +185,187,189,255,183,185,188,255,181,183,185,255,180,182,184,255,178,180,182,255,177,178,180,255,175,176,178,255,173,174,175,255, +171,172,173,255,168,169,170,255,165,167,168,255,163,164,165,255,161,162,163,255,159,159,160,255,156,158,157,255,154,155,155,255, +152,151,151,255,149,148,148,255,147,146,145,255,143,143,142,255,141,140,138,255,138,137,135,255,135,134,132,255,133,131,129,255, +130,128,125,255,128,125,123,255, 95, 93, 91,255, 61, 61, 61,255, 60, 60, 60,255,125,126,128,255,184,187,189,255,182,184,187,255, +181,183,186,255,180,183,185,255,179,181,184,255,179,181,183,255,178,180,182,255,177,179,181,255,177,179,181,255,175,177,179,255, +175,177,179,255,175,177,179,255,173,175,177,255,174,175,177,255,173,175,177,255,172,173,175,255,171,174,175,255,172,173,175,255, +170,172,173,255,169,171,173,255,170,171,173,255,168,171,171,255,168,170,171,255,167,170,170,255,167,168,170,255,166,168,169,255, +166,168,169,255,164,166,167,255,164,165,167,255,163,164,166,255,162,163,164,255,161,162,163,255,160,161,162,255,158,159,160,255, +156,157,158,255,154,155,156,255,151,151,152,255,147,148,148,255,143,143,144,255,137,137,138,255,132,131,131,255,125,123,122,255, +116,115,113,255,118,116,115,255,189,191,193,255,205,207,210,255,203,207,210,255,203,206,209,255,202,205,208,255,203,206,209,255, +201,204,207,255,201,204,207,255,201,204,207,255,199,202,205,255,199,201,205,255,198,201,204,255,196,199,202,255,196,199,202,255, +196,198,201,255,194,196,200,255,193,196,199,255,192,194,197,255,190,192,195,255,188,191,193,255,187,190,192,255,185,188,190,255, +185,187,189,255,183,185,188,255,181,183,185,255,180,182,184,255,179,181,182,255,177,178,180,255,175,176,178,255,174,175,176,255, +171,172,173,255,169,170,171,255,166,167,168,255,164,165,166,255,162,162,163,255,159,159,160,255,157,158,158,255,155,155,155,255, +152,152,152,255,150,149,149,255,147,146,145,255,144,143,142,255,141,140,139,255,139,137,136,255,135,134,132,255,133,131,129,255, +130,128,125,255,128,125,122,255, 95, 93, 91,255, 61, 61, 61,255, 60, 60, 60,255,125,127,128,255,184,187,190,255,182,185,187,255, +182,184,187,255,181,183,186,255,180,182,185,255,180,182,184,255,179,181,183,255,177,180,182,255,177,179,181,255,177,179,181,255, +175,177,180,255,175,177,179,255,175,177,179,255,173,175,177,255,173,175,177,255,172,175,177,255,171,173,175,255,172,173,175,255, +170,172,174,255,170,171,173,255,169,171,172,255,170,170,173,255,168,170,171,255,167,170,170,255,167,168,170,255,166,168,169,255, +166,168,169,255,165,166,168,255,164,165,167,255,164,165,166,255,163,164,165,255,161,162,164,255,160,161,163,255,159,160,161,255, +157,158,159,255,155,156,157,255,152,153,154,255,149,149,150,255,145,146,146,255,141,141,141,255,136,135,135,255,130,129,129,255, +122,120,119,255,113,110,109,255,138,137,137,255,203,205,208,255,204,207,209,255,204,206,210,255,203,206,209,255,202,206,208,255, +203,204,209,255,201,204,207,255,201,204,207,255,200,202,206,255,199,202,205,255,198,201,204,255,197,199,203,255,196,199,202,255, +196,198,201,255,194,196,200,255,193,196,199,255,192,195,198,255,190,192,195,255,189,191,194,255,187,190,192,255,185,188,190,255, +184,186,189,255,183,185,188,255,181,183,185,255,180,182,184,255,179,181,182,255,177,178,180,255,175,176,178,255,174,175,176,255, +171,172,173,255,169,170,171,255,168,168,169,255,165,166,166,255,163,163,164,255,161,161,162,255,158,159,159,255,155,156,156,255, +153,153,153,255,150,149,149,255,147,146,145,255,145,144,143,255,142,141,139,255,139,137,136,255,136,134,132,255,133,131,129,255, +130,128,125,255,128,125,122,255, 94, 92, 91,255, 61, 61, 61,255, 60, 60, 60,255,125,126,128,255,185,188,190,255,182,185,188,255, +182,185,187,255,181,184,186,255,180,183,185,255,180,182,184,255,178,181,183,255,178,180,182,255,177,179,182,255,177,179,181,255, +176,178,180,255,175,177,180,255,175,177,179,255,173,175,177,255,174,175,177,255,172,174,176,255,172,174,175,255,172,174,175,255, +170,172,175,255,170,171,173,255,169,172,173,255,169,170,172,255,168,170,171,255,168,170,171,255,167,168,170,255,166,169,169,255, +166,168,169,255,165,166,168,255,165,166,168,255,164,165,167,255,163,164,165,255,162,163,165,255,161,162,163,255,159,160,161,255, +158,159,160,255,156,157,158,255,154,155,156,255,151,152,152,255,147,148,149,255,143,144,144,255,139,138,139,255,133,133,133,255, +126,125,125,255,118,117,115,255,114,111,110,255,168,170,171,255,205,207,210,255,203,207,209,255,203,206,209,255,203,205,208,255, +202,205,208,255,201,205,207,255,201,204,207,255,201,203,207,255,199,202,205,255,199,201,205,255,197,200,203,255,196,199,202,255, +196,198,201,255,194,196,200,255,193,196,199,255,192,194,197,255,190,192,195,255,189,191,194,255,187,190,192,255,185,188,190,255, +184,186,188,255,183,185,187,255,181,183,185,255,180,182,184,255,179,181,182,255,177,179,180,255,176,177,178,255,174,175,177,255, +172,173,174,255,170,171,172,255,168,169,169,255,166,166,167,255,163,164,165,255,161,161,162,255,158,159,159,255,156,156,156,255, +153,153,153,255,151,150,150,255,148,147,146,255,145,144,143,255,142,141,139,255,139,138,136,255,136,134,132,255,133,131,129,255, +130,128,125,255,128,125,121,255, 94, 92, 90,255, 61, 61, 61,255, 60, 60, 60,255,125,127,129,255,186,188,191,255,183,185,188,255, +183,185,188,255,182,185,187,255,181,183,185,255,180,183,185,255,180,182,184,255,178,181,183,255,178,180,183,255,177,180,182,255, +176,178,180,255,176,178,180,255,174,176,178,255,174,176,178,255,174,176,178,255,172,174,176,255,173,174,175,255,172,174,176,255, +171,172,174,255,170,172,173,255,169,172,173,255,169,170,172,255,168,170,171,255,168,169,171,255,167,169,170,255,166,168,169,255, +166,168,169,255,165,167,168,255,164,166,167,255,164,166,167,255,163,164,166,255,162,163,165,255,162,163,164,255,160,161,162,255, +158,159,161,255,157,158,160,255,155,156,157,255,152,153,154,255,150,150,151,255,146,147,147,255,142,141,142,255,137,136,136,255, +130,129,129,255,123,122,120,255,115,113,112,255,129,128,127,255,194,196,198,255,204,207,209,255,204,207,209,255,203,206,208,255, +203,205,209,255,202,204,208,255,202,204,207,255,200,203,206,255,199,202,205,255,199,202,205,255,197,200,203,255,196,199,202,255, +196,198,201,255,194,197,200,255,193,195,198,255,192,194,197,255,190,192,195,255,189,191,193,255,187,189,192,255,185,187,189,255, +184,186,188,255,183,185,187,255,181,183,185,255,180,182,184,255,179,181,182,255,178,179,180,255,176,177,178,255,174,175,177,255, +172,173,174,255,170,171,172,255,168,169,170,255,166,166,167,255,163,164,165,255,161,161,162,255,159,159,160,255,157,157,157,255, +154,154,153,255,152,151,150,255,149,148,147,255,145,144,143,255,143,141,140,255,140,138,136,255,136,134,132,255,134,131,129,255, +131,128,125,255,128,125,120,255, 94, 92, 90,255, 61, 61, 61,255, 60, 60, 60,255,126,127,128,255,186,189,192,255,184,187,189,255, +183,186,188,255,183,185,187,255,182,184,186,255,181,183,185,255,180,182,185,255,179,181,184,255,178,180,183,255,178,179,182,255, +177,179,181,255,176,178,181,255,176,178,180,255,175,177,179,255,174,176,178,255,174,175,177,255,173,175,176,255,172,174,176,255, +171,173,174,255,170,172,174,255,170,172,174,255,169,170,172,255,169,170,172,255,169,170,172,255,167,169,170,255,167,168,170,255, +167,168,170,255,165,167,168,255,165,167,168,255,165,166,168,255,163,165,166,255,163,164,165,255,162,163,164,255,160,161,163,255, +159,160,162,255,158,159,160,255,156,157,158,255,154,155,156,255,151,152,153,255,148,148,149,255,144,144,145,255,139,139,139,255, +134,133,133,255,127,126,125,255,119,119,117,255,114,112,110,255,161,162,163,255,204,206,209,255,204,206,208,255,204,206,209,255, +202,205,209,255,202,205,208,255,202,205,208,255,200,203,206,255,200,203,206,255,199,202,205,255,197,200,203,255,196,199,202,255, +196,198,201,255,194,197,199,255,193,195,198,255,191,194,197,255,190,192,195,255,188,190,193,255,187,189,191,255,185,187,189,255, +184,186,188,255,183,185,187,255,181,183,185,255,180,182,184,255,179,181,182,255,178,179,180,255,176,177,178,255,175,176,177,255, +173,174,175,255,171,171,172,255,169,170,171,255,167,167,168,255,164,165,165,255,162,162,163,255,159,159,160,255,157,157,157,255, +154,154,153,255,152,151,151,255,149,148,147,255,146,145,143,255,143,142,140,255,140,138,136,255,137,135,132,255,134,132,129,255, +131,128,125,255,128,124,120,255, 95, 92, 90,255, 61, 61, 61,255, 60, 60, 60,255,126,127,129,255,186,189,192,255,184,187,190,255, +184,186,189,255,182,185,188,255,182,184,187,255,181,184,186,255,181,183,185,255,180,182,184,255,179,181,184,255,178,180,182,255, +177,179,181,255,177,179,181,255,175,177,180,255,175,177,179,255,174,176,178,255,173,176,178,255,173,175,177,255,173,174,176,255, +171,173,175,255,171,172,174,255,170,172,174,255,169,171,173,255,169,170,172,255,169,170,172,255,167,169,170,255,167,168,170,255, +167,168,170,255,166,167,168,255,165,166,168,255,165,166,168,255,163,165,166,255,163,164,166,255,162,163,165,255,161,162,163,255, +160,161,162,255,158,159,160,255,156,157,159,255,155,156,157,255,152,153,154,255,149,150,151,255,145,146,146,255,142,142,142,255, +137,137,136,255,131,130,129,255,124,123,121,255,116,114,112,255,120,119,117,255,188,191,192,255,205,207,210,255,204,206,209,255, +202,206,209,255,202,205,208,255,202,205,208,255,201,203,206,255,200,203,206,255,199,202,205,255,197,200,203,255,197,199,202,255, +196,198,201,255,194,196,199,255,193,195,198,255,191,194,196,255,189,192,194,255,188,190,193,255,187,189,191,255,185,187,189,255, +184,186,188,255,183,185,186,255,181,183,185,255,180,182,183,255,179,181,182,255,178,179,180,255,176,178,179,255,175,176,177,255, +173,173,175,255,171,171,172,255,168,170,171,255,167,167,168,255,164,165,165,255,163,163,163,255,160,160,160,255,157,157,157,255, +155,154,154,255,152,151,151,255,150,149,147,255,146,145,144,255,143,142,140,255,140,138,136,255,137,135,132,255,135,132,129,255, +130,127,124,255,126,122,117,255, 69, 68, 66,255, 61, 61, 61,255, 60, 60, 60,255,127,128,130,255,187,190,193,255,185,187,190,255, +185,187,190,255,184,186,189,255,182,185,187,255,182,184,187,255,181,184,186,255,180,182,185,255,180,182,184,255,179,181,183,255, +178,180,182,255,177,179,182,255,176,178,181,255,175,177,179,255,175,177,179,255,173,175,177,255,173,175,177,255,173,175,176,255, +171,173,175,255,171,173,174,255,170,173,175,255,170,171,173,255,169,171,172,255,169,171,172,255,167,169,170,255,167,169,170,255, +166,169,170,255,166,167,168,255,165,166,169,255,165,166,168,255,163,166,166,255,164,165,167,255,163,164,166,255,161,162,164,255, +160,161,163,255,159,160,161,255,157,158,159,255,156,156,158,255,154,155,156,255,151,152,153,255,147,148,149,255,144,144,144,255, +139,139,139,255,134,133,133,255,128,127,127,255,121,119,118,255,113,111,109,255,139,138,138,255,202,204,207,255,204,206,208,255, +203,206,209,255,202,205,208,255,202,205,208,255,201,203,206,255,200,203,206,255,199,202,205,255,197,200,203,255,197,199,202,255, +196,198,201,255,194,196,199,255,192,195,197,255,191,194,196,255,189,191,194,255,188,190,192,255,187,189,191,255,185,187,189,255, +184,186,188,255,183,185,186,255,181,183,185,255,180,181,183,255,180,181,183,255,178,179,180,255,176,177,179,255,175,176,177,255, +173,174,175,255,171,172,173,255,170,170,171,255,167,168,168,255,165,165,166,255,162,162,162,255,160,160,160,255,157,157,157,255, +154,154,154,255,153,152,151,255,150,149,147,255,146,145,144,255,144,142,140,255,140,138,135,255,137,135,131,255,133,130,127,255, +131,128,123,255, 77, 75, 71,255, 25, 25, 25,255, 62, 62, 62,255, 60, 60, 60,255,127,128,130,255,188,191,194,255,186,188,191,255, +185,187,190,255,184,187,190,255,183,185,188,255,182,185,187,255,182,184,186,255,181,183,185,255,180,182,184,255,179,182,184,255, +178,180,183,255,178,180,182,255,176,178,181,255,176,178,180,255,175,177,179,255,175,177,179,255,174,175,177,255,173,175,177,255, +173,175,176,255,172,173,175,255,171,173,175,255,170,171,173,255,169,171,173,255,169,171,173,255,169,170,171,255,168,169,171,255, +167,169,170,255,166,167,169,255,166,167,168,255,165,167,168,255,164,165,167,255,164,165,167,255,163,164,166,255,162,163,164,255, +161,162,163,255,159,160,162,255,158,159,160,255,156,157,158,255,155,155,156,255,152,152,153,255,149,149,150,255,145,146,146,255, +141,141,141,255,137,136,136,255,132,131,130,255,125,124,123,255,118,116,114,255,115,112,110,255,165,167,168,255,203,206,208,255, +203,206,208,255,202,205,208,255,202,205,208,255,201,203,206,255,200,203,206,255,199,202,205,255,198,200,203,255,197,199,202,255, +196,198,201,255,193,196,199,255,192,195,197,255,191,193,195,255,189,191,193,255,188,190,192,255,186,188,190,255,185,187,189,255, +184,186,187,255,183,184,186,255,181,183,184,255,180,181,183,255,180,181,182,255,177,179,180,255,176,177,178,255,175,176,177,255, +173,174,175,255,171,172,173,255,170,170,171,255,167,168,168,255,165,165,166,255,162,163,164,255,161,161,160,255,158,157,157,255, +154,154,153,255,152,151,150,255,149,148,147,255,146,145,143,255,144,142,139,255,140,138,135,255,137,135,131,255,134,131,126,255, + 89, 86, 82,255, 0, 0, 0,255, 29, 29, 29,255, 61, 61, 61,255, 60, 60, 60,255,127,129,130,255,188,191,194,255,186,189,192,255, +185,188,191,255,185,187,190,255,184,186,189,255,183,185,188,255,182,185,187,255,181,183,186,255,181,183,185,255,179,181,184,255, +179,181,183,255,178,180,183,255,177,179,181,255,176,178,180,255,176,178,180,255,175,177,179,255,174,176,178,255,174,176,177,255, +172,174,176,255,172,174,175,255,171,173,175,255,170,172,174,255,170,171,173,255,169,171,173,255,168,170,171,255,167,169,170,255, +167,169,170,255,166,167,169,255,166,167,169,255,165,166,168,255,164,166,167,255,164,165,167,255,163,165,166,255,162,163,164,255, +161,162,164,255,160,161,163,255,158,159,161,255,157,158,159,255,155,156,157,255,154,154,155,255,150,150,151,255,147,147,148,255, +143,143,143,255,139,138,138,255,135,134,133,255,129,127,127,255,122,120,119,255,117,114,112,255,126,125,124,255,187,189,191,255, +203,205,207,255,203,205,208,255,202,205,208,255,201,203,206,255,200,203,205,255,200,202,205,255,198,200,203,255,197,199,202,255, +195,198,200,255,193,196,198,255,192,194,197,255,191,193,195,255,189,191,193,255,187,189,191,255,186,188,190,255,185,187,188,255, +184,185,187,255,183,184,186,255,181,183,184,255,180,181,183,255,179,181,182,255,177,178,180,255,176,177,178,255,175,176,177,255, +173,173,174,255,171,171,172,255,170,170,171,255,167,167,168,255,165,165,165,255,162,162,163,255,160,160,160,255,157,157,156,255, +154,154,153,255,152,150,150,255,149,147,146,255,146,144,142,255,144,141,138,255,139,137,134,255,138,135,131,255, 91, 89, 85,255, + 5, 5, 5,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 60, 60, 60,255,128,129,131,255,189,192,195,255,187,189,192,255, +186,189,192,255,186,188,191,255,184,187,189,255,184,186,189,255,183,186,188,255,182,184,186,255,181,184,186,255,181,183,185,255, +179,181,183,255,179,181,183,255,178,180,183,255,177,179,181,255,177,179,181,255,175,177,179,255,174,176,178,255,174,176,178,255, +173,175,176,255,172,174,176,255,172,174,176,255,170,172,174,255,171,172,174,255,170,172,173,255,168,170,171,255,168,170,171,255, +168,169,171,255,166,168,169,255,166,167,169,255,166,167,169,255,164,166,167,255,164,166,167,255,164,165,166,255,162,164,165,255, +162,163,164,255,161,162,163,255,159,160,161,255,157,158,159,255,156,157,158,255,154,154,156,255,151,152,152,255,149,149,150,255, +145,145,145,255,141,141,141,255,137,137,137,255,132,131,130,255,126,125,124,255,120,118,116,255,114,112,110,255,141,142,142,255, +199,201,203,255,203,205,207,255,203,205,207,255,201,203,206,255,200,203,205,255,200,202,205,255,198,200,203,255,197,199,202,255, +195,198,200,255,193,195,198,255,192,194,196,255,190,192,194,255,188,190,192,255,187,189,190,255,186,188,189,255,184,186,188,255, +184,185,187,255,183,184,186,255,181,182,184,255,180,181,182,255,179,180,181,255,177,178,179,255,176,177,178,255,175,176,177,255, +173,173,174,255,171,171,172,255,170,170,170,255,167,167,168,255,165,165,165,255,162,162,161,255,160,159,159,255,157,156,155,255, +154,153,152,255,151,150,148,255,148,147,144,255,144,142,140,255,143,141,137,255,142,139,134,255, 96, 94, 90,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,128,129,131,255,190,193,196,255,188,190,193,255, +187,189,192,255,186,189,192,255,185,188,191,255,184,187,189,255,184,186,189,255,182,185,187,255,182,184,187,255,181,184,186,255, +180,182,185,255,179,182,184,255,179,181,183,255,177,179,182,255,177,179,181,255,177,178,180,255,175,177,179,255,175,176,178,255, +173,175,178,255,173,175,176,255,172,174,176,255,172,173,175,255,170,172,174,255,170,172,173,255,169,171,172,255,168,170,171,255, +168,169,171,255,167,168,170,255,167,168,170,255,166,167,169,255,165,166,168,255,164,166,167,255,163,165,167,255,163,164,165,255, +162,163,165,255,161,162,164,255,159,160,162,255,158,159,160,255,157,157,159,255,154,156,156,255,152,153,154,255,150,150,151,255, +146,146,147,255,143,143,143,255,139,139,138,255,135,134,134,255,130,129,128,255,125,123,122,255,118,116,115,255,114,112,111,255, +156,156,156,255,201,202,205,255,202,204,207,255,201,203,205,255,200,202,205,255,199,202,204,255,198,200,202,255,197,199,201,255, +195,197,199,255,193,195,197,255,191,193,196,255,190,192,193,255,188,190,192,255,187,188,190,255,186,187,189,255,184,186,187,255, +183,185,186,255,183,184,185,255,181,182,183,255,180,181,182,255,179,180,181,255,177,178,179,255,176,176,177,255,174,175,176,255, +172,173,174,255,171,171,172,255,168,169,169,255,167,167,166,255,164,164,164,255,161,161,161,255,159,158,157,255,156,156,155,255, +153,152,151,255,151,149,147,255,147,145,143,255,146,143,140,255,138,135,131,255, 75, 74, 71,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,128,130,131,255,190,193,196,255,188,191,194,255, +188,190,193,255,187,189,192,255,186,188,191,255,185,188,190,255,184,187,189,255,183,185,188,255,182,185,187,255,182,183,186,255, +181,183,185,255,180,182,184,255,179,181,183,255,178,180,182,255,177,179,182,255,176,178,180,255,176,178,180,255,175,177,179,255, +174,175,177,255,173,175,177,255,173,174,176,255,171,173,175,255,171,172,174,255,170,172,173,255,169,171,172,255,169,170,172,255, +168,170,171,255,168,169,171,255,167,168,170,255,166,167,169,255,165,166,168,255,164,166,167,255,164,166,167,255,163,164,166,255, +162,164,165,255,162,163,164,255,160,161,163,255,159,159,161,255,157,158,159,255,155,156,157,255,153,154,155,255,151,151,152,255, +148,148,148,255,144,144,144,255,141,140,140,255,137,136,136,255,133,132,131,255,128,127,126,255,122,121,119,255,117,115,113,255, +119,117,115,255,163,164,165,255,201,203,205,255,201,203,205,255,200,202,204,255,199,201,203,255,197,200,202,255,196,198,200,255, +195,197,199,255,193,195,197,255,191,193,195,255,189,191,193,255,188,189,191,255,187,188,190,255,186,187,188,255,184,186,187,255, +183,184,185,255,182,184,185,255,181,182,183,255,180,181,182,255,178,179,180,255,176,177,178,255,175,176,177,255,174,175,175,255, +172,172,173,255,170,170,171,255,169,169,168,255,166,166,165,255,163,163,163,255,161,160,159,255,158,157,156,255,155,155,153,255, +153,151,150,255,149,147,145,255,149,147,143,255,135,133,129,255, 40, 38, 37,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,129,130,132,255,191,194,197,255,189,192,195,255, +188,191,194,255,188,190,193,255,186,189,192,255,186,189,191,255,185,187,190,255,184,186,189,255,183,186,188,255,182,185,187,255, +181,183,186,255,181,183,185,255,180,182,185,255,179,181,183,255,178,180,182,255,178,180,182,255,176,178,180,255,176,178,180,255, +174,177,178,255,173,175,177,255,173,175,177,255,172,173,175,255,172,173,175,255,171,173,174,255,170,171,173,255,169,170,172,255, +169,171,172,255,167,169,170,255,167,169,170,255,167,168,170,255,165,167,168,255,165,166,168,255,165,166,167,255,163,164,166,255, +163,164,165,255,162,163,165,255,160,161,163,255,159,160,161,255,158,159,160,255,155,156,157,255,154,154,155,255,152,152,153,255, +149,149,150,255,146,146,146,255,143,142,143,255,139,139,138,255,135,135,134,255,131,130,130,255,126,125,124,255,121,119,118,255, +117,115,112,255,122,120,119,255,172,173,174,255,200,202,203,255,200,202,204,255,199,201,203,255,197,199,201,255,196,198,200,255, +195,196,198,255,192,194,196,255,191,193,194,255,189,191,192,255,187,189,190,255,186,188,189,255,186,187,188,255,184,185,186,255, +183,184,185,255,182,183,184,255,180,181,182,255,179,180,181,255,178,179,180,255,176,177,177,255,175,175,175,255,173,173,173,255, +171,172,172,255,169,169,169,255,167,166,166,255,165,164,164,255,162,161,160,255,159,158,157,255,156,154,153,255,153,151,149,255, +151,149,146,255,150,147,143,255,102, 99, 96,255, 3, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,129,130,132,255,192,195,198,255,190,193,196,255, +189,192,195,255,188,191,194,255,187,190,193,255,186,189,192,255,186,188,191,255,185,187,190,255,184,186,189,255,183,185,188,255, +182,184,187,255,181,183,186,255,180,183,185,255,179,182,184,255,179,181,183,255,177,179,182,255,177,179,181,255,176,178,180,255, +175,178,179,255,174,176,178,255,174,176,177,255,173,174,177,255,172,174,175,255,171,173,175,255,170,172,173,255,170,171,173,255, +169,171,172,255,168,169,171,255,168,169,171,255,167,168,170,255,166,167,169,255,165,167,168,255,165,166,168,255,163,165,166,255, +163,164,166,255,163,164,165,255,161,162,164,255,160,161,162,255,158,159,160,255,156,157,158,255,155,155,156,255,153,153,154,255, +150,150,151,255,147,147,148,255,144,143,144,255,140,140,140,255,137,136,136,255,133,132,132,255,129,128,127,255,125,123,122,255, +120,119,116,255,116,113,111,255,122,120,119,255,168,169,169,255,197,199,201,255,199,200,202,255,197,199,200,255,195,197,199,255, +194,196,197,255,192,194,196,255,191,192,193,255,189,191,192,255,187,189,190,255,186,188,189,255,186,187,188,255,184,185,186,255, +183,184,185,255,182,183,183,255,180,181,181,255,179,180,180,255,177,178,178,255,175,176,176,255,174,174,174,255,172,172,172,255, +170,170,170,255,168,168,168,255,166,165,164,255,163,162,161,255,160,159,158,255,158,157,155,255,156,153,151,255,152,150,147,255, +119,116,114,255, 51, 50, 49,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,130,131,133,255,193,195,199,255,190,193,196,255, +190,192,195,255,189,191,194,255,188,190,193,255,187,190,193,255,186,189,192,255,185,188,190,255,185,187,190,255,183,185,188,255, +182,185,187,255,182,184,187,255,180,183,185,255,180,182,184,255,179,181,184,255,178,180,182,255,177,179,182,255,177,179,181,255, +176,177,179,255,175,177,179,255,174,176,178,255,173,175,176,255,172,174,176,255,172,173,175,255,171,172,174,255,170,172,173,255, +170,171,173,255,169,170,172,255,168,169,171,255,167,169,170,255,166,167,169,255,166,167,169,255,165,166,168,255,164,165,166,255, +163,164,166,255,163,164,165,255,161,162,164,255,160,161,162,255,159,160,161,255,157,157,159,255,155,155,156,255,154,154,155,255, +151,151,152,255,148,148,149,255,145,145,145,255,142,141,142,255,139,138,138,255,135,135,134,255,132,131,131,255,129,127,127,255, +124,123,121,255,119,117,116,255,115,113,112,255,121,119,117,255,156,155,156,255,194,196,197,255,197,199,199,255,195,197,198,255, +194,195,197,255,192,193,195,255,190,192,193,255,189,191,192,255,188,189,190,255,187,188,189,255,186,187,188,255,184,185,186,255, +183,184,185,255,181,182,183,255,179,180,181,255,178,178,180,255,176,177,177,255,175,174,175,255,173,172,173,255,171,171,170,255, +168,168,168,255,166,165,164,255,164,163,161,255,160,158,157,255,158,156,154,255,157,155,153,255,139,137,134,255, 51, 50, 49,255, + 10, 10, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,130,131,133,255,193,196,199,255,191,194,197,255, +191,193,196,255,190,192,196,255,188,191,194,255,188,191,194,255,187,190,193,255,186,188,191,255,185,188,191,255,185,187,190,255, +183,185,188,255,183,185,188,255,182,184,187,255,181,183,185,255,180,182,184,255,179,181,184,255,178,180,182,255,177,179,181,255, +176,179,181,255,176,177,179,255,175,177,178,255,174,176,178,255,173,175,177,255,173,174,176,255,171,173,175,255,171,172,174,255, +170,172,174,255,169,171,172,255,169,170,172,255,168,169,171,255,167,168,170,255,166,168,169,255,166,167,168,255,164,166,167,255, +164,165,167,255,163,164,166,255,162,163,164,255,161,162,163,255,159,160,161,255,157,158,159,255,156,156,157,255,154,155,156,255, +152,152,153,255,149,149,150,255,147,147,147,255,144,144,144,255,141,140,140,255,138,137,137,255,135,134,133,255,131,130,130,255, +128,127,126,255,123,122,120,255,118,117,115,255,115,113,111,255,115,114,112,255,142,140,140,255,185,186,187,255,195,196,197,255, +194,195,196,255,192,193,194,255,190,192,193,255,190,191,192,255,188,189,190,255,187,188,189,255,186,187,188,255,184,185,186,255, +182,183,184,255,181,182,182,255,179,179,180,255,177,177,177,255,175,175,175,255,173,173,173,255,171,171,170,255,168,168,167,255, +165,164,163,255,164,163,161,255,161,159,157,255,157,155,153,255,148,146,142,255, 66, 64, 63,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,130,131,133,255,194,197,200,255,192,195,198,255, +191,194,197,255,190,193,196,255,189,192,195,255,188,191,194,255,188,190,193,255,187,189,192,255,186,188,191,255,185,188,190,255, +184,187,189,255,183,185,188,255,183,185,187,255,181,184,186,255,181,183,185,255,180,182,184,255,179,181,183,255,178,180,182,255, +177,179,181,255,176,178,180,255,176,177,179,255,174,176,178,255,173,175,177,255,173,175,176,255,172,174,175,255,171,173,175,255, +171,172,174,255,169,172,172,255,169,170,172,255,168,170,171,255,167,168,170,255,166,168,169,255,166,167,168,255,165,166,167,255, +164,165,167,255,163,164,166,255,162,163,164,255,161,162,163,255,160,161,162,255,158,159,160,255,156,157,158,255,155,155,156,255, +152,153,153,255,150,151,151,255,148,148,148,255,145,145,145,255,142,142,142,255,139,139,138,255,136,135,135,255,133,132,132,255, +130,129,128,255,126,125,125,255,123,121,120,255,118,117,115,255,116,114,111,255,112,110,109,255,124,122,121,255,158,158,158,255, +186,187,188,255,195,195,196,255,192,193,193,255,190,191,192,255,189,190,190,255,187,188,189,255,186,187,188,255,185,186,186,255, +183,183,184,255,181,181,181,255,178,179,179,255,176,176,176,255,173,173,173,255,171,171,170,255,167,167,165,255,166,165,164,255, +165,163,161,255,155,153,151,255,114,113,110,255, 62, 61, 59,255, 3, 3, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,131,132,134,255,195,198,201,255,192,195,198,255, +192,195,198,255,191,194,197,255,190,193,196,255,189,192,195,255,188,191,194,255,187,190,193,255,187,189,192,255,185,188,191,255, +184,187,190,255,184,186,189,255,183,185,187,255,182,184,187,255,181,184,186,255,180,182,184,255,179,181,184,255,179,181,183,255, +177,179,181,255,177,178,180,255,176,178,180,255,175,177,179,255,174,176,178,255,174,175,177,255,172,174,176,255,171,173,175,255, +171,172,174,255,170,171,173,255,169,171,172,255,169,170,172,255,167,168,170,255,167,168,170,255,166,168,169,255,165,166,168,255, +164,165,167,255,164,165,166,255,162,163,165,255,162,163,164,255,160,161,163,255,159,159,161,255,157,158,159,255,155,156,157,255, +153,154,155,255,151,151,152,255,148,148,149,255,146,146,147,255,144,143,143,255,141,140,140,255,138,138,137,255,136,135,134,255, +133,132,131,255,129,128,128,255,127,126,125,255,123,122,120,255,120,117,116,255,116,113,112,255,113,111,109,255,115,112,110,255, +127,126,124,255,160,161,160,255,191,192,192,255,193,194,194,255,190,191,191,255,189,190,190,255,188,188,189,255,185,186,186,255, +183,183,183,255,180,180,180,255,177,177,176,255,174,174,173,255,169,169,168,255,168,167,165,255,168,166,164,255,153,151,148,255, + 80, 80, 78,255, 26, 25, 25,255, 5, 5, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,131,132,134,255,196,199,202,255,193,196,199,255, +193,196,199,255,192,195,198,255,191,193,196,255,190,193,196,255,190,192,195,255,188,191,194,255,187,190,193,255,187,189,192,255, +186,188,191,255,185,187,190,255,184,186,189,255,183,185,188,255,182,184,187,255,181,184,186,255,180,182,184,255,180,182,184,255, +178,180,182,255,178,179,181,255,177,179,181,255,176,177,179,255,175,177,178,255,174,176,178,255,173,175,177,255,172,174,176,255, +172,173,175,255,171,172,174,255,170,171,173,255,169,171,173,255,168,169,171,255,167,169,170,255,167,168,170,255,165,166,168,255, +165,166,168,255,164,165,167,255,163,164,165,255,162,163,164,255,161,162,164,255,159,160,161,255,157,158,159,255,156,157,158,255, +153,154,155,255,151,152,153,255,150,150,151,255,147,147,148,255,145,144,145,255,143,142,142,255,140,139,139,255,137,136,136,255, +135,134,134,255,132,131,131,255,129,128,127,255,127,126,125,255,124,122,121,255,120,119,117,255,117,115,113,255,114,112,109,255, +111,109,106,255,112,109,107,255,129,128,126,255,170,169,169,255,189,189,188,255,190,191,190,255,188,189,189,255,186,186,186,255, +184,184,184,255,179,180,179,255,175,175,174,255,168,167,165,255,159,159,156,255,131,130,128,255, 47, 47, 46,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,131,133,134,255,196,199,202,255,194,197,200,255, +193,196,199,255,193,196,199,255,192,194,197,255,191,193,196,255,190,193,196,255,189,192,195,255,188,191,194,255,187,190,193,255, +186,189,192,255,185,188,190,255,185,187,190,255,184,186,189,255,183,185,188,255,181,184,186,255,181,183,185,255,180,182,184,255, +179,181,183,255,178,180,182,255,178,179,181,255,176,178,180,255,176,177,179,255,175,177,178,255,174,176,177,255,173,175,177,255, +172,174,175,255,171,173,174,255,170,172,174,255,170,171,173,255,169,170,172,255,168,169,171,255,167,168,170,255,166,167,169,255, +165,166,168,255,164,166,167,255,163,164,165,255,162,163,165,255,161,162,164,255,160,161,162,255,158,159,160,255,156,157,158,255, +154,155,156,255,152,153,154,255,150,151,151,255,148,148,149,255,145,146,147,255,144,143,143,255,141,141,141,255,139,139,139,255, +137,136,135,255,134,134,133,255,132,131,130,255,129,128,127,255,127,126,124,255,124,123,121,255,121,119,118,255,118,115,114,255, +114,112,109,255,112,109,106,255,108,105,103,255,109,106,102,255,129,126,123,255,155,154,151,255,161,160,157,255,153,150,146,255, +139,137,134,255,107,107,106,255, 94, 94, 92,255, 59, 59, 58,255, 18, 18, 17,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,132,133,135,255,197,200,203,255,195,197,201,255, +194,197,200,255,193,196,199,255,192,195,198,255,191,194,197,255,190,193,196,255,190,192,195,255,189,192,195,255,188,190,193,255, +187,190,192,255,186,189,192,255,185,187,190,255,184,186,189,255,184,186,188,255,182,184,187,255,181,184,186,255,181,183,185,255, +180,182,184,255,179,181,183,255,178,180,182,255,177,179,181,255,176,178,180,255,176,177,179,255,174,176,178,255,174,175,177,255, +173,175,176,255,172,173,175,255,171,173,174,255,170,172,174,255,169,171,172,255,168,170,171,255,168,169,171,255,166,167,169,255, +165,167,168,255,165,166,167,255,163,165,166,255,163,164,165,255,162,163,164,255,160,161,163,255,159,160,161,255,157,158,159,255, +155,156,157,255,153,154,155,255,151,151,152,255,149,150,150,255,147,148,148,255,145,145,145,255,143,143,143,255,141,141,141,255, +138,138,138,255,136,135,135,255,134,133,133,255,132,131,130,255,129,128,127,255,127,126,124,255,125,123,122,255,122,120,118,255, +118,116,113,255,115,113,110,255,112,109,106,255,108,105,101,255,104,100, 95,255,101, 96, 90,255, 96, 90, 82,255, 91, 84, 73,255, + 43, 40, 35,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,132,133,135,255,198,200,204,255,195,198,201,255, +195,198,201,255,194,197,200,255,193,196,199,255,192,195,198,255,192,195,198,255,190,193,196,255,190,193,196,255,189,192,195,255, +188,190,193,255,187,189,192,255,187,189,192,255,185,187,190,255,185,187,189,255,183,186,188,255,182,184,187,255,182,184,186,255, +181,183,185,255,180,182,184,255,179,181,183,255,178,180,182,255,177,179,181,255,177,178,180,255,175,177,179,255,175,176,178,255, +174,176,177,255,173,175,176,255,172,173,175,255,171,172,174,255,170,171,173,255,169,171,172,255,169,170,172,255,167,168,170,255, +166,168,169,255,165,167,168,255,164,165,167,255,163,164,166,255,162,163,165,255,161,162,163,255,159,160,161,255,158,159,160,255, +156,156,157,255,154,154,155,255,153,153,154,255,150,151,151,255,149,149,149,255,147,147,147,255,144,144,144,255,142,142,142,255, +141,140,140,255,138,138,137,255,136,135,134,255,134,133,133,255,132,131,130,255,130,128,127,255,127,126,125,255,125,123,122,255, +121,120,118,255,118,115,114,255,114,112,109,255,110,108,104,255,105,101, 96,255, 99, 94, 88,255, 93, 87, 79,255, 88, 81, 71,255, + 25, 23, 20,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,132,133,135,255,198,201,204,255,196,199,202,255, +195,198,201,255,195,198,201,255,194,196,200,255,193,196,199,255,192,195,198,255,191,194,197,255,190,193,196,255,190,193,196,255, +189,191,194,255,188,190,193,255,187,190,192,255,186,188,191,255,185,187,190,255,184,186,189,255,183,186,188,255,182,184,187,255, +181,183,185,255,180,182,185,255,180,182,184,255,179,181,183,255,178,180,182,255,177,179,181,255,176,178,180,255,175,177,178,255, +175,176,178,255,173,175,177,255,173,174,176,255,172,173,175,255,171,172,174,255,169,171,172,255,169,170,172,255,168,169,171,255, +167,168,169,255,166,167,169,255,165,166,167,255,163,164,166,255,163,164,165,255,162,163,164,255,160,161,162,255,159,160,161,255, +157,157,158,255,155,155,156,255,153,154,155,255,152,151,153,255,149,149,151,255,148,148,148,255,146,145,145,255,144,143,143,255, +142,142,141,255,140,139,139,255,137,137,137,255,136,135,134,255,134,133,132,255,131,130,130,255,129,128,127,255,127,126,124,255, +124,123,121,255,121,119,117,255,118,115,113,255,114,110,106,255,108,104, 98,255,101, 96, 90,255, 97, 91, 83,255, 86, 80, 71,255, + 4, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,132,134,135,255,199,202,205,255,196,199,202,255, +196,199,202,255,195,198,201,255,194,197,200,255,194,196,200,255,192,195,198,255,192,195,198,255,191,194,197,255,190,193,196,255, +190,192,195,255,189,191,194,255,187,190,193,255,187,189,192,255,186,188,191,255,185,187,190,255,184,186,189,255,183,185,188,255, +182,184,186,255,181,183,186,255,180,182,185,255,179,181,183,255,178,180,183,255,178,180,182,255,177,179,181,255,176,178,180,255, +176,177,179,255,174,176,178,255,173,175,177,255,172,174,175,255,171,173,174,255,170,172,174,255,169,171,172,255,168,169,171,255, +167,169,170,255,167,168,169,255,165,166,168,255,164,165,167,255,163,164,166,255,162,163,164,255,161,162,163,255,159,160,161,255, +158,158,160,255,156,156,157,255,154,154,155,255,152,153,153,255,151,151,152,255,148,148,149,255,147,147,147,255,145,145,145,255, +143,143,143,255,142,142,141,255,140,139,138,255,137,136,136,255,135,134,133,255,134,132,131,255,131,129,128,255,128,128,125,255, +127,125,123,255,123,121,119,255,120,117,115,255,116,112,108,255,110,105,101,255,104, 98, 93,255,101, 94, 86,255, 56, 52, 46,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,132,134,136,255,199,202,205,255,197,200,203,255, +197,200,203,255,196,199,202,255,195,198,201,255,195,197,200,255,194,197,200,255,193,195,198,255,192,195,198,255,192,194,197,255, +191,193,196,255,189,192,195,255,189,191,194,255,188,190,193,255,187,189,192,255,186,188,191,255,185,187,190,255,184,186,189,255, +184,186,188,255,182,184,187,255,182,184,186,255,181,183,185,255,180,182,184,255,179,181,183,255,178,179,181,255,177,179,181,255, +177,178,180,255,175,177,179,255,175,176,178,255,174,175,177,255,173,174,175,255,171,173,175,255,171,172,174,255,169,170,172,255, +168,170,171,255,167,169,170,255,166,167,169,255,165,166,167,255,164,165,166,255,162,163,164,255,161,162,164,255,160,161,163,255, +158,159,160,255,157,157,159,255,155,156,157,255,153,154,154,255,151,152,152,255,150,150,151,255,148,148,148,255,146,146,146,255, +145,145,144,255,142,142,142,255,140,140,139,255,138,138,137,255,137,136,135,255,134,133,132,255,133,131,129,255,130,129,127,255, +128,126,124,255,124,122,120,255,121,119,116,255,116,114,111,255,111,107,103,255,106,101, 95,255,102, 96, 88,255, 5, 5, 4,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,136,255,199,202,205,255,198,200,204,255, +197,200,203,255,197,200,203,255,195,198,201,255,195,198,201,255,195,197,200,255,193,196,199,255,193,195,198,255,192,195,198,255, +191,193,196,255,190,193,196,255,190,192,195,255,189,191,194,255,187,190,193,255,187,189,192,255,186,188,191,255,185,187,190,255, +184,186,189,255,183,186,188,255,182,184,187,255,181,183,186,255,181,183,185,255,180,182,184,255,179,181,183,255,178,179,181,255, +177,179,181,255,176,178,180,255,175,177,178,255,175,176,178,255,173,175,176,255,172,174,175,255,171,173,175,255,170,171,173,255, +169,171,171,255,168,169,171,255,167,168,170,255,165,166,169,255,165,166,167,255,163,164,165,255,162,163,164,255,161,162,163,255, +160,160,162,255,158,158,160,255,156,157,158,255,154,155,155,255,152,153,153,255,150,151,151,255,149,149,149,255,147,147,148,255, +145,145,145,255,144,143,143,255,142,141,141,255,139,139,138,255,137,136,136,255,135,134,134,255,133,132,131,255,131,129,128,255, +128,126,125,255,126,124,121,255,122,119,117,255,118,114,111,255,112,108,104,255,109,104, 97,255, 57, 54, 49,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,136,255,200,203,206,255,197,200,203,255, +198,200,204,255,197,199,203,255,196,199,202,255,196,198,201,255,195,197,201,255,194,196,200,255,193,196,199,255,193,195,198,255, +191,194,197,255,191,193,196,255,190,192,195,255,189,192,195,255,188,191,194,255,187,190,192,255,187,189,192,255,186,188,191,255, +185,187,190,255,184,186,189,255,183,185,188,255,182,184,186,255,181,184,186,255,181,183,185,255,180,182,184,255,179,181,183,255, +178,180,182,255,177,179,181,255,176,178,180,255,175,177,179,255,174,176,177,255,173,175,177,255,172,173,175,255,171,172,174,255, +170,171,173,255,169,171,171,255,167,168,170,255,166,168,169,255,164,166,167,255,164,165,166,255,163,164,165,255,161,162,164,255, +160,161,162,255,158,159,160,255,156,157,158,255,155,155,156,255,153,153,154,255,151,151,151,255,150,150,150,255,148,148,148,255, +146,146,146,255,144,144,144,255,142,142,141,255,140,139,139,255,139,138,137,255,136,135,134,255,133,132,131,255,132,130,128,255, +129,127,125,255,126,124,121,255,123,120,117,255,118,114,111,255,113,109,105,255,100, 95, 90,255, 10, 9, 8,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,136,255,200,203,206,255,198,201,204,255, +198,201,204,255,198,200,204,255,196,199,202,255,196,199,202,255,196,198,201,255,195,197,201,255,194,197,200,255,194,196,199,255, +193,195,198,255,192,195,198,255,191,194,197,255,190,192,195,255,189,192,195,255,189,191,194,255,188,190,193,255,187,189,192,255, +186,189,191,255,185,187,189,255,184,186,189,255,184,186,188,255,182,185,187,255,182,184,186,255,181,183,185,255,180,182,184,255, +179,181,183,255,178,180,182,255,177,179,181,255,177,178,180,255,176,177,179,255,174,176,178,255,173,175,177,255,172,174,175,255, +170,172,173,255,170,171,173,255,168,169,171,255,167,169,170,255,166,168,169,255,164,165,167,255,163,164,166,255,162,163,165,255, +161,161,163,255,159,160,161,255,158,158,159,255,155,156,157,255,154,154,155,255,152,152,153,255,150,150,150,255,148,148,148,255, +147,146,146,255,145,144,144,255,143,143,142,255,141,140,139,255,139,138,137,255,137,136,134,255,134,133,131,255,132,130,129,255, +129,127,125,255,126,124,121,255,123,121,117,255,118,114,110,255,114,109,103,255, 56, 53, 50,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,135,136,255,200,203,206,255,199,202,205,255, +198,201,204,255,198,200,204,255,197,199,202,255,197,199,202,255,195,199,202,255,195,197,200,255,194,197,200,255,193,197,200,255, +193,196,199,255,193,195,198,255,192,195,198,255,191,193,196,255,190,192,195,255,189,191,194,255,189,191,194,255,188,190,193,255, +187,189,192,255,186,189,191,255,185,187,190,255,184,187,189,255,184,186,188,255,183,185,187,255,182,184,186,255,181,183,186,255, +180,182,184,255,179,181,183,255,179,180,183,255,177,179,181,255,176,178,180,255,176,177,179,255,174,175,177,255,173,174,176,255, +171,174,174,255,171,172,174,255,170,171,173,255,168,169,171,255,167,168,169,255,166,167,168,255,164,165,167,255,163,164,165,255, +162,163,164,255,159,161,162,255,158,159,160,255,157,156,158,255,155,154,156,255,152,152,154,255,150,150,151,255,148,148,149,255, +148,146,146,255,145,145,145,255,144,143,142,255,141,140,139,255,139,139,138,255,137,136,134,255,134,133,131,255,132,131,129,255, +129,127,125,255,126,124,121,255,123,119,116,255,118,114,110,255,102, 98, 91,255, 9, 8, 8,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,135,136,255,201,203,206,255,198,202,205,255, +199,201,204,255,198,201,203,255,198,200,203,255,197,200,203,255,196,199,202,255,195,198,201,255,195,197,201,255,194,197,199,255, +194,196,200,255,193,196,199,255,192,195,198,255,192,194,197,255,191,193,196,255,190,192,195,255,189,192,194,255,189,191,194,255, +187,190,192,255,187,189,192,255,186,189,191,255,185,187,190,255,185,187,189,255,184,186,189,255,183,185,187,255,182,184,186,255, +181,183,186,255,180,182,184,255,179,181,183,255,179,181,183,255,177,179,181,255,176,178,180,255,175,177,179,255,174,175,177,255, +173,174,176,255,171,174,174,255,170,171,173,255,169,170,172,255,168,169,170,255,166,168,169,255,165,166,168,255,164,165,167,255, +162,163,164,255,161,161,162,255,159,159,160,255,157,158,158,255,155,156,156,255,153,153,153,255,151,152,152,255,150,149,149,255, +147,147,146,255,146,145,145,255,144,143,142,255,141,140,139,255,140,139,138,255,137,136,135,255,134,133,131,255,132,130,128,255, +129,127,124,255,126,123,120,255,122,119,115,255,119,115,110,255, 33, 31, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,135,136,255,201,204,206,255,199,201,205,255, +198,201,204,255,198,201,204,255,197,200,203,255,197,200,203,255,196,200,203,255,196,199,201,255,196,198,201,255,195,197,201,255, +195,197,200,255,194,197,200,255,194,196,198,255,192,195,198,255,192,194,197,255,191,194,196,255,190,193,195,255,190,192,195,255, +189,191,194,255,188,190,193,255,187,190,192,255,187,189,192,255,186,188,190,255,185,187,190,255,184,186,189,255,183,185,187,255, +182,184,187,255,182,184,186,255,180,182,184,255,180,182,184,255,179,181,182,255,177,179,181,255,176,178,180,255,175,177,179,255, +174,175,177,255,173,175,176,255,172,172,175,255,170,171,173,255,169,170,172,255,167,168,170,255,166,167,168,255,165,166,167,255, +163,164,165,255,161,162,163,255,160,160,161,255,158,158,159,255,156,156,156,255,154,155,155,255,152,152,152,255,150,150,150,255, +147,147,147,255,146,145,145,255,144,143,143,255,141,140,139,255,140,139,137,255,137,136,134,255,134,132,130,255,132,130,127,255, +129,126,124,255,125,123,119,255,122,118,113,255, 73, 70, 66,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,135,136,255,201,204,206,255,199,201,204,255, +199,202,205,255,199,201,204,255,198,201,204,255,198,200,203,255,197,199,203,255,196,199,202,255,196,199,202,255,196,198,201,255, +195,198,200,255,195,197,200,255,194,197,199,255,193,196,198,255,192,195,198,255,191,194,197,255,191,193,196,255,190,193,195,255, +189,192,194,255,189,191,194,255,188,190,193,255,187,189,192,255,187,189,191,255,186,188,190,255,185,187,189,255,184,186,189,255, +183,185,188,255,182,184,187,255,182,184,186,255,181,182,185,255,180,182,184,255,179,181,182,255,177,179,181,255,176,178,180,255, +176,177,179,255,174,175,177,255,173,174,176,255,171,173,175,255,170,171,172,255,169,170,171,255,167,168,169,255,165,167,168,255, +164,165,166,255,162,163,164,255,161,161,162,255,158,159,160,255,157,157,158,255,154,154,155,255,152,152,152,255,150,150,150,255, +147,147,147,255,146,146,145,255,144,143,142,255,141,140,139,255,140,138,137,255,136,135,133,255,134,132,130,255,131,129,127,255, +128,125,123,255,125,122,117,255, 99, 96, 90,255, 7, 7, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,135,136,255,201,204,206,255,200,201,205,255, +199,202,204,255,198,201,203,255,198,201,204,255,197,200,203,255,198,199,202,255,196,199,202,255,197,198,202,255,195,199,200,255, +195,197,201,255,194,198,201,255,195,197,200,255,193,196,199,255,193,195,198,255,192,194,197,255,191,194,196,255,192,194,197,255, +190,193,195,255,190,192,195,255,189,192,194,255,188,190,193,255,188,190,192,255,187,189,192,255,186,188,191,255,185,188,190,255, +185,187,189,255,184,186,188,255,182,184,187,255,182,184,186,255,180,182,184,255,180,182,184,255,179,181,183,255,177,179,181,255, +176,178,180,255,176,177,179,255,173,175,177,255,173,174,176,255,171,173,174,255,170,171,172,255,168,169,171,255,166,167,169,255, +164,165,166,255,163,164,165,255,160,161,162,255,159,160,161,255,157,157,158,255,155,155,156,255,153,153,153,255,151,150,150,255, +149,148,148,255,147,146,145,255,144,144,143,255,141,140,139,255,139,138,137,255,136,135,133,255,134,132,129,255,131,128,126,255, +127,124,121,255,121,117,111,255, 33, 31, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,135,136,255,201,203,206,255,199,202,205,255, +199,201,204,255,198,202,203,255,199,200,204,255,198,201,203,255,197,200,202,255,197,200,202,255,196,199,201,255,197,198,202,255, +195,198,201,255,195,198,201,255,194,197,200,255,194,197,200,255,194,196,199,255,194,196,199,255,193,195,198,255,192,195,197,255, +192,194,197,255,191,193,196,255,190,193,195,255,190,192,195,255,189,191,193,255,188,190,193,255,188,190,192,255,186,189,191,255, +186,188,190,255,185,187,189,255,184,186,188,255,183,185,188,255,182,184,186,255,181,183,185,255,180,182,184,255,179,181,183,255, +177,179,181,255,177,178,180,255,175,177,178,255,174,175,177,255,172,174,175,255,170,172,174,255,169,170,171,255,168,169,170,255, +165,166,167,255,164,164,166,255,162,163,164,255,160,160,161,255,158,158,159,255,156,157,156,255,153,154,154,255,152,151,151,255, +149,148,148,255,147,146,145,255,145,144,142,255,141,140,139,255,139,138,136,255,136,135,133,255,132,131,128,255,130,127,125,255, +125,122,117,255, 60, 58, 54,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,136,255,201,203,205,255,199,202,204,255, +199,202,203,255,198,201,204,255,198,200,203,255,198,201,203,255,197,200,203,255,197,200,202,255,196,199,201,255,197,198,202,255, +196,198,201,255,196,198,201,255,195,198,199,255,194,197,200,255,194,197,199,255,193,196,198,255,193,195,198,255,192,195,198,255, +192,194,197,255,191,194,196,255,191,193,196,255,190,193,195,255,190,192,195,255,189,191,194,255,188,190,193,255,188,190,192,255, +187,189,191,255,186,188,191,255,185,187,190,255,184,186,189,255,183,185,187,255,182,184,186,255,181,183,185,255,180,182,184,255, +179,181,183,255,177,179,181,255,176,178,180,255,175,177,178,255,173,174,176,255,172,173,174,255,170,171,173,255,168,169,170,255, +166,167,168,255,164,166,167,255,162,163,164,255,161,161,162,255,159,159,160,255,157,157,157,255,155,155,155,255,152,152,152,255, +149,149,148,255,147,146,146,255,145,144,142,255,141,140,139,255,139,138,135,255,136,134,132,255,132,130,127,255,130,127,122,255, + 70, 68, 65,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,135,255,201,203,205,255,199,201,204,255, +198,200,204,255,198,201,203,255,198,201,202,255,197,200,203,255,198,199,202,255,198,200,202,255,197,200,201,255,196,199,202,255, +196,199,200,255,195,198,201,255,196,197,200,255,195,197,199,255,194,196,200,255,194,196,198,255,193,195,199,255,194,195,198,255, +192,195,198,255,193,194,197,255,192,194,196,255,191,193,196,255,190,193,195,255,191,193,195,255,189,191,194,255,189,191,193,255, +189,191,193,255,187,189,192,255,187,189,191,255,186,188,190,255,184,186,189,255,184,186,188,255,183,185,187,255,181,183,185,255, +180,182,184,255,179,181,182,255,177,179,181,255,176,178,179,255,175,176,178,255,173,174,175,255,171,172,174,255,170,171,172,255, +167,168,169,255,166,166,167,255,163,164,165,255,162,162,163,255,159,160,160,255,156,157,157,255,156,156,156,255,153,153,152,255, +150,149,149,255,148,147,146,255,145,144,143,255,142,141,139,255,139,137,135,255,136,134,131,255,132,130,126,255, 87, 84, 81,255, + 4, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,135,255,200,202,204,255,198,200,203,255, +199,201,202,255,199,201,203,255,197,200,202,255,198,200,202,255,197,199,202,255,197,199,202,255,197,199,202,255,196,199,200,255, +196,199,201,255,196,198,201,255,195,197,200,255,195,198,199,255,194,197,200,255,195,197,199,255,194,196,198,255,193,196,199,255, +194,195,197,255,193,195,198,255,193,195,197,255,193,195,196,255,192,194,196,255,191,193,196,255,191,193,195,255,190,192,194,255, +189,191,194,255,189,191,193,255,188,190,192,255,187,189,191,255,186,188,190,255,185,187,189,255,184,186,188,255,183,185,187,255, +181,183,185,255,180,182,184,255,179,181,181,255,177,179,180,255,176,177,178,255,173,174,177,255,172,173,175,255,171,172,173,255, +168,169,170,255,166,167,167,255,164,165,166,255,162,163,164,255,160,160,161,255,158,159,159,255,156,156,156,255,153,153,153,255, +151,150,150,255,149,148,146,255,145,145,143,255,142,139,138,255,138,136,134,255,137,134,131,255,108,105,101,255, 9, 9, 8,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,135,255,200,202,204,255,199,201,202,255, +198,200,202,255,198,200,202,255,197,200,202,255,198,200,201,255,198,200,202,255,197,199,201,255,196,198,201,255,196,198,201,255, +196,198,201,255,196,198,200,255,195,197,199,255,195,198,200,255,195,197,199,255,195,196,198,255,194,197,199,255,194,197,199,255, +194,195,197,255,194,196,198,255,193,195,198,255,192,194,197,255,192,194,196,255,192,194,196,255,191,193,195,255,191,193,195,255, +190,192,195,255,190,192,194,255,189,191,194,255,188,190,192,255,187,189,191,255,187,189,191,255,185,187,189,255,184,186,188,255, +183,185,187,255,181,183,185,255,180,182,183,255,179,180,181,255,176,177,179,255,175,176,178,255,174,175,176,255,171,172,173,255, +170,170,171,255,168,168,169,255,165,166,166,255,163,164,165,255,161,161,162,255,159,159,160,255,157,157,157,255,155,154,154,255, +152,151,150,255,149,148,147,255,146,145,143,255,142,140,138,255,140,137,134,255, 98, 95, 92,255, 12, 11, 11,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,133,134,255,200,201,203,255,198,200,202,255, +197,200,202,255,197,200,201,255,198,200,201,255,198,199,201,255,198,199,201,255,196,198,201,255,196,199,201,255,197,199,201,255, +195,197,199,255,195,197,200,255,195,197,199,255,195,197,199,255,194,196,198,255,194,197,199,255,195,197,199,255,194,196,199,255, +194,195,198,255,193,195,197,255,194,196,197,255,193,195,197,255,192,194,196,255,192,194,197,255,192,194,196,255,191,193,195,255, +191,194,196,255,191,192,194,255,190,192,194,255,190,192,194,255,188,190,192,255,188,189,192,255,187,189,191,255,185,187,189,255, +184,186,188,255,183,185,186,255,181,182,184,255,179,181,183,255,179,180,181,255,176,177,179,255,174,175,176,255,173,174,175,255, +170,171,172,255,168,169,170,255,167,167,168,255,164,165,165,255,162,162,162,255,159,159,159,255,157,157,157,255,155,154,154,255, +152,151,150,255,149,148,146,255,145,143,141,255,142,140,137,255, 96, 94, 91,255, 4, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,105,105,105,255,168,168,169,255,192,194,194,255, +199,200,201,255,198,199,201,255,197,198,199,255,195,197,199,255,196,198,200,255,196,198,199,255,196,198,199,255,195,197,199,255, +196,198,199,255,196,198,199,255,195,197,199,255,194,196,198,255,195,197,199,255,194,197,199,255,195,197,198,255,194,196,197,255, +193,196,197,255,194,195,198,255,194,196,198,255,194,195,198,255,193,194,197,255,192,195,196,255,193,195,197,255,192,194,196,255, +192,194,196,255,192,194,196,255,191,193,195,255,190,192,194,255,189,191,193,255,189,190,193,255,188,189,191,255,186,188,190,255, +185,187,189,255,184,186,187,255,182,184,185,255,181,182,184,255,179,180,182,255,177,178,179,255,175,176,178,255,174,175,176,255, +171,172,173,255,170,171,171,255,168,168,169,255,165,166,166,255,163,163,163,255,161,161,161,255,158,158,158,255,155,154,153,255, +152,151,150,255,150,148,146,255,139,137,134,255, 80, 78, 76,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 28, 28, 28,255, 19, 20, 20,255, 49, 50, 50,255, +104,105,105,255,172,173,173,255,195,196,197,255,198,199,200,255,197,198,199,255,195,196,197,255,196,197,199,255,196,197,198,255, +195,197,198,255,195,197,198,255,195,197,198,255,195,197,198,255,195,196,198,255,195,196,198,255,194,196,198,255,194,196,198,255, +194,196,198,255,194,196,198,255,193,195,197,255,194,195,197,255,193,194,196,255,193,195,197,255,192,195,197,255,193,195,197,255, +192,194,196,255,191,194,196,255,191,193,195,255,191,193,195,255,190,192,193,255,189,191,193,255,188,190,192,255,187,188,190,255, +186,187,189,255,184,186,188,255,183,184,186,255,182,183,184,255,180,181,183,255,179,180,180,255,177,178,179,255,175,176,177,255, +173,174,174,255,171,171,172,255,168,168,169,255,166,167,167,255,164,164,163,255,161,160,160,255,157,157,156,255,154,153,152,255, +154,152,150,255,120,119,117,255, 35, 35, 34,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 12, 12, 12,255, 94, 94, 94,255,160,161,161,255,195,196,196,255,193,194,195,255,193,194,195,255, +195,196,196,255,195,195,196,255,194,195,196,255,193,195,196,255,193,194,195,255,193,195,196,255,193,195,196,255,193,194,196,255, +193,194,196,255,193,194,196,255,194,194,196,255,192,194,196,255,192,194,196,255,192,194,196,255,193,194,196,255,192,193,195,255, +193,193,195,255,191,194,195,255,192,193,195,255,191,193,195,255,190,191,193,255,189,191,192,255,189,191,192,255,187,189,190,255, +186,188,189,255,186,187,188,255,184,185,186,255,182,184,185,255,181,182,183,255,179,180,181,255,177,178,179,255,176,177,177,255, +174,174,175,255,172,172,172,255,170,170,170,255,166,166,166,255,164,164,163,255,161,160,159,255,158,156,155,255,153,152,149,255, + 71, 69, 67,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 11, 11, 11,255, 61, 62, 62,255,102,102,102,255, +141,141,141,255,159,159,159,255,175,176,177,255,190,190,191,255,194,195,196,255,193,195,196,255,193,195,196,255,193,195,196,255, +192,194,195,255,191,192,194,255,192,193,195,255,192,193,195,255,192,193,195,255,192,193,195,255,192,193,195,255,192,193,195,255, +192,193,195,255,191,193,194,255,191,193,194,255,190,192,193,255,190,191,192,255,189,190,192,255,188,190,191,255,187,188,190,255, +186,188,189,255,186,187,187,255,184,185,186,255,183,184,185,255,182,182,183,255,180,180,181,255,178,179,179,255,177,177,177,255, +173,173,174,255,173,173,172,255,171,171,170,255,168,168,166,255,159,158,156,255,130,129,127,255, 85, 84, 82,255, 9, 9, 9,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 16, 16, 16,255, 28, 28, 28,255, 44, 44, 44,255, 66, 66, 66,255,109,110,110,255,137,138,138,255,161,161,161,255, +185,185,186,255,194,195,195,255,193,194,194,255,192,193,193,255,192,192,194,255,193,194,194,255,193,194,194,255,193,194,194,255, +191,192,193,255,190,192,193,255,190,191,192,255,189,190,190,255,189,190,191,255,188,189,190,255,188,189,189,255,187,188,189,255, +186,187,187,255,185,186,186,255,183,183,184,255,182,183,184,255,181,182,182,255,181,181,181,255,179,179,179,255,177,177,176,255, +176,176,175,255,165,165,163,255,127,127,125,255, 76, 75, 75,255, 34, 34, 33,255, 11, 11, 11,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 6, 6, 6,255, 34, 34, 34,255, 70, 70, 70,255, 91, 91, 91,255,102,102,102,255,120,120,120,255,140,140,140,255, +160,161,160,255,173,173,173,255,180,180,179,255,184,184,184,255,183,184,184,255,183,183,183,255,183,183,183,255,182,183,182,255, +181,181,181,255,180,181,180,255,179,179,178,255,173,173,172,255,164,164,163,255,130,129,128,255,102,102,100,255, 77, 77, 76,255, + 22, 22, 21,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0,144, 27, 95, 7, 31, 0, 0, 0, + 1, 0, 0, 0,232,190, 95, 7, 56,120, 94, 7, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, 46,100,114, 97,119, 46,112,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92, +115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46,100,114, 97,119, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,144, 29, 95, 7, 0, 0, 0, 0,245, 77, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 32, 0, 0, 0,144, 29, 95, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, + 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 24, 30, 95, 7,128, 46, 95, 7, 68, 65, 84, 65, 0, 16, 0, 0, 24, 30, 95, 7, + 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 62, 62, 62,255, 60, 60, 60,255,168,169,171,255,167,169,171,255,166,168,170,255,165,167,169,255,164,166,168,255, +163,165,167,255,162,164,165,255,161,162,164,255,159,161,163,255,158,159,161,255,156,158,159,255,155,156,157,255,153,154,155,255, +151,152,154,255,148,148,150,255,136,136,137,255,116,115,114,255,114,112,110,255,119,117,116,255,127,126,126,255,133,132,133,255, +137,137,137,255,137,137,138,255,133,133,133,255,125,122,121,255,113,108,103,255,116,114,113,255,111,109,108,255,106,103,101,255, + 99, 96, 92,255, 61, 61, 61,255, 60, 60, 60,255,170,172,174,255,170,172,174,255,169,171,173,255,168,170,172,255,167,169,171,255, +166,168,170,255,165,167,169,255,163,165,167,255,162,164,165,255,161,162,164,255,159,161,162,255,157,159,160,255,154,155,157,255, +142,142,143,255,121,120,120,255,111,109,107,255,115,113,111,255,123,122,122,255,131,130,131,255,137,137,137,255,141,141,142,255, +142,143,143,255,140,140,140,255,131,130,128,255,121,118,115,255,119,116,115,255,119,118,117,255,114,112,111,255,109,106,104,255, +102, 99, 96,255, 61, 61, 61,255, 60, 60, 60,255,173,175,177,255,172,174,176,255,171,173,176,255,170,172,174,255,169,171,174,255, +169,170,173,255,167,169,171,255,166,168,170,255,165,166,168,255,163,165,167,255,158,160,162,255,143,144,144,255,121,119,119,255, +109,107,104,255,112,110,109,255,121,119,118,255,130,129,129,255,137,137,138,255,143,143,144,255,146,147,148,255,147,148,149,255, +145,145,146,255,140,139,139,255,128,125,122,255,124,122,119,255,126,125,125,255,122,121,120,255,117,115,114,255,112,110,108,255, +105,102, 99,255, 61, 61, 61,255, 60, 60, 60,255,176,178,180,255,175,177,180,255,174,176,179,255,173,175,178,255,172,174,176,255, +171,173,175,255,170,172,174,255,169,171,173,255,167,169,171,255,156,157,159,255,128,126,126,255,117,115,113,255,116,114,114,255, +123,122,121,255,130,129,129,255,139,139,139,255,144,145,146,255,149,150,151,255,151,152,153,255,152,153,154,255,150,150,151,255, +144,144,143,255,136,134,132,255,129,127,124,255,133,132,133,255,129,129,129,255,124,123,123,255,120,118,117,255,114,112,111,255, +108,105,103,255, 61, 61, 61,255, 60, 60, 60,255,178,181,183,255,177,180,182,255,176,179,181,255,175,178,180,255,174,177,179,255, +174,176,178,255,172,174,177,255,170,172,175,255,153,153,155,255,130,129,128,255,126,125,124,255,130,129,129,255,136,136,136,255, +143,143,144,255,149,150,151,255,152,153,156,255,156,157,158,255,157,158,160,255,156,157,159,255,154,154,156,255,148,148,147,255, +141,139,137,255,134,133,129,255,139,139,139,255,136,136,136,255,132,132,132,255,127,126,126,255,122,120,120,255,116,115,113,255, +110,107,105,255, 61, 61, 61,255, 60, 60, 60,255,181,183,185,255,180,182,185,255,179,181,184,255,178,181,183,255,177,179,182,255, +176,178,181,255,175,177,179,255,159,160,161,255,138,137,137,255,138,138,138,255,144,144,144,255,150,150,151,255,155,156,157,255, +158,160,162,255,161,163,164,255,162,164,166,255,163,164,166,255,161,163,163,255,158,159,160,255,152,151,150,255,145,143,141,255, +141,140,137,255,144,144,145,255,141,141,142,255,138,138,138,255,134,134,134,255,130,129,129,255,124,123,122,255,119,117,116,255, +112,110,108,255, 61, 61, 61,255, 60, 60, 60,255,183,186,188,255,182,185,187,255,181,184,186,255,180,183,185,255,179,182,184,255, +178,181,183,255,177,179,181,255,147,147,147,255,147,147,148,255,155,155,157,255,160,162,163,255,164,165,167,255,166,168,170,255, +167,169,171,255,168,170,172,255,168,169,171,255,164,165,167,255,161,161,162,255,153,152,152,255,147,146,143,255,150,149,149,255, +150,151,153,255,147,148,149,255,143,144,145,255,140,140,141,255,137,137,137,255,132,131,131,255,127,126,125,255,121,119,118,255, +114,112,110,255, 61, 61, 61,255, 60, 60, 60,255,185,188,191,255,185,187,190,255,184,186,189,255,183,185,188,255,182,184,187,255, +181,184,187,255,166,167,168,255,159,159,160,255,167,168,170,255,171,173,175,255,173,175,177,255,172,174,176,255,172,173,176,255, +171,172,174,255,168,168,169,255,164,164,164,255,160,159,158,255,156,155,154,255,159,160,160,255,156,157,159,255,155,155,157,255, +152,153,154,255,149,150,151,255,146,146,147,255,143,143,144,255,139,139,139,255,135,135,135,255,130,129,129,255,124,122,121,255, +117,115,113,255, 61, 61, 61,255, 60, 60, 60,255,187,190,193,255,186,189,192,255,186,188,191,255,185,187,190,255,184,186,189,255, +184,187,189,255,167,168,169,255,171,173,174,255,176,178,180,255,176,178,181,255,174,176,178,255,171,172,174,255,166,167,168,255, +162,163,163,255,160,159,158,255,161,161,160,255,164,165,165,255,166,167,169,255,161,162,163,255,159,160,161,255,156,157,159,255, +154,155,156,255,152,152,154,255,148,148,149,255,145,145,146,255,141,141,141,255,137,136,137,255,132,131,130,255,125,124,123,255, +119,117,114,255, 61, 61, 61,255, 60, 60, 60,255,189,192,195,255,188,191,194,255,188,190,193,255,187,189,192,255,186,188,191,255, +188,191,194,255,175,176,176,255,180,182,185,255,181,185,187,255,178,180,183,255,169,171,173,255,160,161,162,255,148,147,145,255, +150,149,147,255,171,172,173,255,169,171,173,255,167,169,170,255,164,166,167,255,163,164,165,255,161,162,163,255,158,159,161,255, +156,157,158,255,153,154,155,255,150,150,151,255,146,147,148,255,142,142,143,255,138,138,138,255,133,132,132,255,127,125,124,255, +120,118,116,255, 61, 61, 61,255, 60, 60, 60,255,191,194,197,255,190,193,196,255,189,193,196,255,188,191,194,255,187,190,193,255, +193,196,199,255,182,183,184,255,189,192,195,255,186,189,192,255,176,178,180,255,163,164,165,255,144,144,143,255,117,114,112,255, +124,123,123,255,160,162,163,255,169,171,173,255,168,170,172,255,166,168,169,255,164,166,167,255,162,163,165,255,160,161,162,255, +157,158,160,255,155,156,157,255,151,152,153,255,148,148,149,255,144,144,144,255,139,139,139,255,135,134,133,255,128,127,126,255, +121,119,117,255, 61, 61, 61,255, 60, 60, 60,255,192,195,198,255,192,195,199,255,191,194,197,255,191,193,196,255,190,192,195,255, +193,196,199,255,190,191,192,255,194,197,200,255,188,191,194,255,175,177,179,255,156,157,158,255,133,132,132,255,107,105,103,255, +100, 97, 95,255,111,109,108,255,129,128,129,255,149,150,151,255,165,166,167,255,165,168,168,255,164,165,166,255,161,162,164,255, +159,160,161,255,156,157,158,255,152,153,154,255,149,150,150,255,145,145,145,255,141,141,140,255,135,135,134,255,129,128,127,255, +122,120,118,255, 61, 61, 61,255, 60, 60, 60,255,194,197,200,255,194,197,199,255,192,195,199,255,192,194,198,255,191,194,196,255, +191,194,197,255,197,200,201,255,199,202,205,255,194,198,201,255,180,182,184,255,161,162,163,255,141,142,142,255,121,120,120,255, +110,108,107,255,105,103,101,255,105,103,101,255,106,104,103,255,118,117,116,255,141,142,143,255,162,163,164,255,162,164,165,255, +160,161,163,255,157,158,160,255,154,154,155,255,150,151,152,255,146,146,147,255,142,142,141,255,136,135,135,255,130,129,127,255, +122,120,118,255, 61, 61, 61,255, 60, 60, 60,255,195,199,202,255,195,198,201,255,194,197,201,255,193,196,199,255,192,195,198,255, +191,194,197,255,199,202,205,255,201,203,205,255,201,204,208,255,190,193,196,255,175,177,179,255,160,161,162,255,144,145,146,255, +131,131,132,255,121,120,120,255,113,111,110,255,107,105,104,255,101, 98, 96,255,102, 99, 97,255,118,117,116,255,150,151,152,255, +161,163,164,255,158,159,161,255,155,155,156,255,151,152,152,255,147,147,147,255,143,143,142,255,137,136,135,255,130,129,127,255, +122,120,117,255, 61, 61, 61,255, 60, 60, 60,255,196,200,204,255,197,199,203,255,196,199,201,255,195,198,200,255,194,197,200,255, +192,195,199,255,191,194,198,255,201,203,205,255,203,206,208,255,200,203,207,255,190,193,196,255,177,179,181,255,165,167,168,255, +154,156,157,255,143,143,144,255,133,133,134,255,123,122,122,255,112,110,110,255,102, 99, 97,255, 97, 93, 90,255,104,101, 98,255, +141,141,142,255,160,161,162,255,156,156,157,255,152,153,153,255,148,148,148,255,143,143,142,255,137,136,135,255,130,129,127,255, +122,119,116,255, 61, 61, 61,255, 60, 60, 60,255,199,202,204,255,198,201,203,255,196,200,203,255,195,198,201,255,195,198,200,255, +194,197,199,255,193,196,199,255,193,196,200,255,202,204,206,255,202,204,206,255,201,204,207,255,194,196,200,255,184,186,189,255, +174,176,178,255,166,167,169,255,156,157,158,255,145,145,146,255,133,132,133,255,118,117,117,255,105,102,100,255, 94, 90, 87,255, + 99, 96, 92,255,144,144,144,255,156,157,158,255,153,153,154,255,148,148,148,255,144,143,143,255,137,136,135,255,130,128,126,255, +120,117,113,255, 61, 61, 61,255, 60, 60, 60,255,200,202,205,255,198,202,205,255,198,200,203,255,196,199,203,255,195,198,201,255, +195,198,200,255,194,196,200,255,192,195,198,255,190,193,196,255,199,202,204,255,198,199,199,255,200,202,204,255,197,200,203,255, +191,194,197,255,184,186,188,255,176,178,179,255,167,168,170,255,155,156,157,255,141,141,141,255,124,123,123,255,106,104,102,255, + 93, 89, 84,255,103,100, 95,255,157,158,158,255,154,154,154,255,149,149,149,255,144,143,143,255,137,136,135,255,129,127,124,255, +106,102, 97,255, 62, 62, 62,255, 60, 60, 60,255,201,204,207,255,199,202,206,255,198,201,205,255,197,200,203,255,197,200,202,255, +196,199,201,255,195,198,201,255,192,196,198,255,191,194,197,255,189,193,195,255,189,192,195,255,196,198,201,255,194,196,196,255, +196,198,198,255,196,198,200,255,191,194,197,255,185,187,189,255,175,177,179,255,161,163,165,255,146,146,147,255,126,125,124,255, +105,102, 98,255, 91, 86, 79,255,152,151,152,255,154,154,155,255,150,149,149,255,144,143,142,255,136,134,132,255,126,123,119,255, + 0, 0, 0,255, 62, 62, 62,255, 60, 60, 60,255,201,205,207,255,201,203,206,255,200,203,206,255,197,200,204,255,194,197,200,255, +193,196,199,255,194,197,200,255,194,197,200,255,192,195,198,255,191,194,197,255,189,191,194,255,188,190,193,255,186,188,191,255, +187,189,192,255,196,198,200,255,197,198,198,255,197,199,201,255,192,194,197,255,181,183,185,255,166,167,169,255,147,147,148,255, +122,120,118,255, 96, 91, 86,255,151,150,150,255,154,154,154,255,149,148,148,255,142,141,140,255,134,132,129,255, 34, 32, 31,255, + 0, 0, 0,255, 62, 62, 62,255, 60, 60, 60,255,202,205,209,255,202,205,209,255,196,198,201,255,183,186,188,255,174,176,179,255, +167,169,171,255,166,168,170,255,179,181,183,255,190,192,195,255,192,194,197,255,190,193,196,255,189,190,194,255,187,188,192,255, +185,187,190,255,182,185,187,255,186,189,191,255,201,202,204,255,200,201,203,255,196,198,201,255,185,187,189,255,166,167,169,255, +141,140,139,255,105,101, 97,255,156,157,157,255,154,154,153,255,148,147,146,255,140,139,137,255,129,126,121,255, 0, 0, 0,255, + 0, 0, 0,255, 62, 62, 62,255, 60, 60, 60,255,202,206,208,255,203,206,210,255,193,195,198,255,182,184,186,255,171,173,176,255, +161,163,164,255,153,154,155,255,149,150,151,255,153,155,156,255,163,164,165,255,172,174,176,255,181,183,186,255,185,187,189,255, +184,187,189,255,183,185,187,255,181,183,185,255,190,193,195,255,202,206,208,255,204,206,208,255,198,201,204,255,181,183,185,255, +155,155,156,255,113,110,106,255,157,157,157,255,153,152,152,255,146,145,143,255,137,134,130,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 62, 62, 62,255, 60, 60, 60,255,204,206,209,255,202,205,208,255,197,199,200,255,184,186,189,255,176,178,180,255, +166,168,170,255,156,158,159,255,146,146,147,255,144,144,145,255,143,144,145,255,146,147,148,255,148,149,150,255,152,152,154,255, +155,157,158,255,158,159,161,255,159,160,162,255,176,177,179,255,194,197,200,255,201,204,207,255,201,204,208,255,189,192,194,255, +161,162,163,255,120,117,114,255,156,156,155,255,150,149,147,255,141,139,136,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 62, 62, 62,255, 60, 60, 60,255,204,206,209,255,203,206,209,255,202,205,207,255,194,195,197,255,188,190,193,255, +178,180,182,255,168,169,171,255,156,157,158,255,150,151,152,255,147,148,149,255,146,146,147,255,144,144,145,255,144,144,145,255, +143,143,144,255,143,143,144,255,145,145,146,255,162,165,166,255,180,182,184,255,193,196,199,255,197,200,203,255,187,189,192,255, +157,158,157,255,162,162,162,255,153,152,151,255,144,142,139,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 62, 62, 62,255, 60, 60, 60,255,203,205,207,255,203,204,208,255,201,205,207,255,201,203,206,255,201,203,205,255, +199,202,205,255,191,194,197,255,178,181,183,255,172,174,176,255,166,168,169,255,161,163,164,255,158,159,160,255,155,156,157,255, +152,153,155,255,151,152,153,255,152,153,154,255,163,164,166,255,179,181,183,255,188,190,193,255,186,189,192,255,169,170,171,255, +161,161,160,255,155,154,152,255, 4, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, 42, 43, 43,255,202,204,205,255,201,203,205,255,201,202,205,255,200,202,204,255, +198,200,203,255,197,200,201,255,195,198,201,255,190,192,195,255,184,186,189,255,180,182,184,255,175,177,180,255,172,174,175,255, +168,170,172,255,167,168,170,255,166,168,170,255,171,173,176,255,181,183,186,255,183,185,188,255,172,172,173,255,161,160,159,255, +151,149,146,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, 0, 0, 0,255, 0, 0, 0,255, 32, 32, 32,255,201,204,204,255,198,200,202,255, +198,200,202,255,196,199,201,255,195,197,199,255,193,195,197,255,193,194,196,255,193,194,196,255,190,192,195,255,188,190,192,255, +185,187,190,255,182,184,186,255,181,182,184,255,181,182,185,255,179,181,182,255,167,167,165,255,115,114,112,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 36, 36, 36,255,177,178,179,255,194,196,196,255,192,193,194,255,190,192,193,255,188,190,191,255,186,187,188,255,184,185,185,255, +181,182,182,255,177,178,177,255,176,176,175,255,104,103,101,255, 10, 9, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 68, 65, 84, 65, 0,144, 0, 0,128, 46, 95, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, + 61, 61, 61,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 62, 62, 62,255, 61, 61, 61,255, + 90, 90, 91,255,117,117,118,255,115,117,118,255,115,117,118,255,115,117,118,255,115,116,118,255,116,116,117,255,115,116,117,255, +115,116,117,255,115,116,117,255,114,115,117,255,114,115,116,255,114,115,116,255,114,115,116,255,114,115,116,255,114,115,115,255, +113,114,115,255,113,115,115,255,113,114,115,255,113,114,115,255,113,114,114,255,112,113,114,255,112,113,114,255,112,113,114,255, +112,113,114,255,112,112,113,255,112,112,113,255,111,112,113,255,111,112,113,255,111,111,112,255,110,111,112,255,110,111,112,255, +110,111,111,255,110,110,111,255,110,110,111,255,109,110,111,255,109,109,110,255,109,109,110,255,108,109,109,255,108,109,109,255, +108,108,109,255,107,108,108,255,107,108,108,255,107,108,108,255,107,107,108,255,106,107,107,255,106,106,107,255,105,106,106,255, +105,105,105,255,104,104,104,255,102,102,103,255, 99, 99, 99,255, 95, 95, 95,255, 92, 91, 91,255, 90, 89, 89,255, 89, 88, 87,255, + 89, 88, 87,255, 90, 89, 87,255, 90, 89, 89,255, 91, 90, 90,255, 93, 92, 92,255, 94, 93, 93,255, 95, 94, 94,255, 96, 96, 95,255, + 97, 97, 97,255, 98, 98, 98,255, 98, 98, 98,255, 99, 99, 99,255, 99, 99, 99,255,100, 99,100,255, 99, 99,100,255, 99, 99, 99,255, + 99, 99, 99,255, 99, 98, 99,255, 98, 97, 97,255, 97, 96, 96,255, 95, 94, 93,255, 93, 92, 91,255, 91, 90, 88,255, 89, 87, 85,255, + 87, 84, 81,255, 84, 82, 78,255, 86, 84, 83,255, 87, 86, 86,255, 88, 87, 86,255, 86, 86, 85,255, 86, 84, 84,255, 84, 83, 82,255, + 83, 82, 81,255, 83, 81, 79,255, 82, 80, 78,255, 80, 78, 76,255, 79, 76, 74,255, 70, 69, 67,255, 61, 61, 61,255, 60, 60, 60,255, +116,117,119,255,168,170,172,255,167,169,171,255,167,169,170,255,167,169,171,255,167,168,170,255,166,168,170,255,166,168,170,255, +166,168,170,255,166,167,169,255,165,167,169,255,165,166,168,255,165,166,168,255,164,166,168,255,164,166,167,255,164,165,167,255, +163,165,167,255,163,164,166,255,163,164,166,255,162,164,165,255,162,163,165,255,161,163,165,255,161,163,164,255,161,162,164,255, +160,161,163,255,160,161,163,255,159,161,162,255,159,160,162,255,158,160,162,255,158,159,161,255,157,159,160,255,157,158,160,255, +156,158,159,255,156,157,159,255,155,157,158,255,155,156,158,255,154,155,157,255,154,155,156,255,153,154,156,255,152,153,155,255, +152,153,154,255,151,152,153,255,150,151,153,255,150,151,152,255,150,150,152,255,149,150,151,255,148,149,150,255,146,147,148,255, +143,144,144,255,139,139,139,255,134,134,134,255,127,126,126,255,121,120,119,255,117,115,113,255,115,113,111,255,115,112,111,255, +116,114,111,255,117,115,114,255,120,118,116,255,122,120,120,255,124,123,123,255,127,126,126,255,128,127,127,255,131,130,130,255, +132,132,132,255,134,134,134,255,135,135,135,255,136,136,136,255,137,137,137,255,137,137,137,255,136,136,137,255,136,135,136,255, +135,135,135,255,133,134,134,255,132,131,130,255,129,128,127,255,126,124,123,255,122,120,118,255,118,115,112,255,114,110,105,255, +111,106,100,255,108,105,100,255,112,110,109,255,114,112,111,255,112,111,110,255,111,108,107,255,109,107,105,255,107,105,103,255, +105,102,100,255,104,100, 97,255,101, 97, 94,255, 98, 95, 91,255, 96, 91, 87,255, 78, 76, 73,255, 61, 61, 61,255, 60, 60, 60,255, +117,118,119,255,169,171,173,255,168,169,171,255,168,169,171,255,167,169,171,255,167,169,171,255,167,169,171,255,167,168,170,255, +166,168,170,255,166,168,170,255,166,167,169,255,165,167,169,255,165,167,169,255,165,167,168,255,164,166,168,255,164,166,168,255, +164,165,167,255,163,165,167,255,163,165,167,255,163,164,166,255,162,164,165,255,162,164,165,255,161,163,165,255,161,162,164,255, +161,162,164,255,160,161,163,255,160,161,163,255,159,161,163,255,159,160,162,255,158,160,161,255,158,159,161,255,157,158,160,255, +157,158,160,255,156,158,159,255,156,157,159,255,155,157,158,255,155,156,157,255,154,155,157,255,153,154,156,255,153,154,155,255, +152,153,155,255,152,153,154,255,151,152,154,255,150,151,152,255,149,150,151,255,148,148,150,255,146,146,147,255,143,143,144,255, +136,136,137,255,128,128,128,255,121,120,120,255,116,115,114,255,114,112,111,255,114,111,110,255,114,112,110,255,115,113,111,255, +117,115,114,255,119,117,116,255,122,121,120,255,124,124,123,255,127,126,126,255,130,129,129,255,132,131,131,255,133,132,133,255, +134,134,134,255,136,136,136,255,137,137,137,255,137,137,138,255,138,138,139,255,137,137,138,255,137,137,137,255,136,136,137,255, +134,134,135,255,133,133,133,255,131,129,130,255,128,127,125,255,125,122,121,255,121,118,115,255,117,113,109,255,113,108,103,255, +111,107,102,255,113,110,108,255,116,114,113,255,115,113,113,255,113,111,111,255,111,109,108,255,110,108,106,255,108,106,104,255, +106,103,101,255,103,100, 98,255,101, 98, 95,255, 99, 96, 92,255, 97, 93, 88,255, 79, 77, 74,255, 61, 61, 61,255, 60, 60, 60,255, +117,118,119,255,170,171,173,255,168,170,172,255,168,170,172,255,168,170,172,255,167,169,171,255,168,169,171,255,167,169,171,255, +167,169,171,255,167,168,170,255,166,168,170,255,166,167,169,255,166,168,170,255,165,167,169,255,165,167,169,255,164,166,168,255, +164,166,168,255,164,166,168,255,164,165,167,255,163,165,167,255,163,164,166,255,163,164,166,255,162,164,165,255,162,163,165,255, +161,163,165,255,160,162,164,255,160,162,164,255,160,162,163,255,159,161,163,255,159,160,162,255,158,160,162,255,158,159,161,255, +158,159,161,255,157,159,160,255,156,158,160,255,156,157,159,255,155,157,158,255,155,156,158,255,154,155,157,255,153,155,156,255, +153,154,155,255,152,153,155,255,152,153,154,255,151,151,153,255,149,149,151,255,145,145,146,255,139,139,139,255,132,131,131,255, +124,124,123,255,119,117,116,255,114,112,110,255,113,110,108,255,112,110,108,255,114,111,110,255,116,114,112,255,118,116,115,255, +121,119,118,255,123,122,122,255,126,125,125,255,128,128,127,255,130,130,130,255,133,132,132,255,134,134,134,255,136,136,136,255, +137,137,137,255,138,139,138,255,139,139,140,255,139,139,140,255,139,139,140,255,138,138,139,255,138,137,138,255,137,137,137,255, +135,135,135,255,133,132,131,255,130,129,128,255,127,125,124,255,124,122,119,255,120,117,114,255,117,112,107,255,114,109,104,255, +115,112,109,255,116,115,114,255,118,116,116,255,116,114,113,255,114,112,111,255,112,110,109,255,111,109,107,255,109,106,105,255, +106,104,103,255,105,102,100,255,103,100, 96,255,100, 98, 94,255, 98, 94, 90,255, 79, 77, 75,255, 61, 61, 61,255, 60, 60, 60,255, +118,119,120,255,170,172,174,255,169,171,173,255,169,171,173,255,169,170,172,255,168,170,172,255,168,170,172,255,168,170,172,255, +167,169,171,255,167,169,171,255,167,168,170,255,167,168,170,255,166,168,170,255,166,168,170,255,165,167,169,255,165,167,169,255, +165,167,169,255,165,166,168,255,164,166,168,255,164,165,167,255,163,165,167,255,163,165,167,255,163,164,166,255,162,164,166,255, +162,163,165,255,161,163,165,255,161,163,165,255,161,162,164,255,160,161,163,255,160,161,163,255,159,161,163,255,159,160,162,255, +158,160,162,255,158,159,161,255,157,158,160,255,157,158,160,255,156,157,159,255,155,157,158,255,155,156,158,255,154,155,157,255, +153,154,156,255,152,153,154,255,150,151,152,255,146,146,147,255,142,143,143,255,136,136,137,255,128,127,127,255,120,118,117,255, +114,112,110,255,112,110,108,255,111,109,107,255,112,110,108,255,114,112,110,255,116,115,113,255,119,117,116,255,122,121,120,255, +125,124,124,255,127,126,126,255,130,129,129,255,132,132,132,255,133,133,133,255,136,135,136,255,137,137,138,255,138,138,139,255, +139,140,140,255,140,140,141,255,140,140,141,255,140,140,141,255,140,140,141,255,139,139,140,255,138,138,139,255,137,137,137,255, +135,134,134,255,132,130,130,255,130,128,127,255,126,124,122,255,123,120,117,255,119,116,111,255,116,111,106,255,115,113,109,255, +119,117,116,255,118,117,116,255,118,117,117,255,116,115,114,255,115,114,113,255,113,112,111,255,111,109,108,255,110,108,106,255, +108,105,103,255,106,103,101,255,104,101, 97,255,102, 98, 95,255, 99, 95, 91,255, 80, 78, 75,255, 61, 61, 61,255, 60, 60, 60,255, +118,119,120,255,171,174,176,255,170,172,174,255,170,172,174,255,170,172,174,255,170,172,174,255,170,171,173,255,169,171,173,255, +169,171,173,255,168,170,172,255,168,170,172,255,168,170,172,255,168,170,172,255,167,169,171,255,167,169,171,255,167,169,171,255, +166,168,170,255,166,168,170,255,166,167,169,255,165,167,169,255,165,167,169,255,165,166,168,255,164,166,167,255,163,165,167,255, +163,165,167,255,163,164,166,255,162,164,166,255,162,164,165,255,161,163,165,255,161,162,164,255,161,162,164,255,160,161,163,255, +160,161,163,255,159,161,162,255,158,160,162,255,158,159,161,255,157,159,160,255,156,157,159,255,155,157,158,255,154,155,157,255, +153,153,155,255,149,150,151,255,142,142,143,255,133,133,133,255,126,126,126,255,121,120,120,255,116,115,114,255,113,110,108,255, +111,109,107,255,112,109,107,255,113,111,109,255,115,113,111,255,117,115,114,255,120,119,118,255,123,122,122,255,127,126,126,255, +129,128,128,255,131,130,131,255,133,133,134,255,136,136,136,255,137,137,137,255,139,139,140,255,140,141,141,255,141,141,142,255, +142,142,143,255,142,142,143,255,142,143,143,255,142,142,143,255,141,141,142,255,140,140,140,255,139,138,139,255,137,136,135,255, +134,133,133,255,131,130,128,255,128,126,124,255,125,122,119,255,121,118,115,255,119,114,109,255,117,114,109,255,119,116,115,255, +122,121,121,255,120,119,118,255,119,118,117,255,118,116,116,255,116,114,113,255,114,112,111,255,113,111,110,255,111,109,107,255, +109,106,104,255,107,105,102,255,105,102, 99,255,102, 99, 96,255,100, 97, 93,255, 80, 79, 76,255, 61, 61, 61,255, 60, 60, 60,255, +119,120,121,255,172,174,176,255,171,173,175,255,171,173,175,255,171,173,175,255,170,172,174,255,170,172,174,255,170,172,174,255, +169,171,173,255,169,171,173,255,169,171,173,255,168,170,172,255,168,170,172,255,168,169,172,255,167,169,171,255,167,169,171,255, +167,169,171,255,166,168,170,255,166,168,170,255,166,168,170,255,165,167,169,255,165,167,169,255,164,166,168,255,164,166,168,255, +164,166,168,255,163,165,167,255,163,165,167,255,163,164,166,255,162,163,165,255,162,163,165,255,161,163,165,255,160,162,164,255, +160,162,164,255,160,161,163,255,159,160,163,255,158,160,162,255,158,159,161,255,155,156,158,255,152,153,154,255,147,147,148,255, +143,143,143,255,137,137,138,255,129,129,129,255,121,119,119,255,114,113,110,255,111,109,106,255,110,108,105,255,111,108,106,255, +112,110,108,255,114,112,110,255,117,114,113,255,119,118,117,255,122,121,120,255,125,124,123,255,127,127,127,255,131,130,130,255, +133,133,133,255,135,135,135,255,137,137,138,255,139,139,140,255,141,141,141,255,142,142,143,255,143,143,144,255,143,144,145,255, +144,144,145,255,143,144,145,255,143,143,144,255,142,143,144,255,142,142,143,255,140,140,140,255,138,138,138,255,136,135,134,255, +133,132,131,255,130,128,127,255,127,125,122,255,124,120,116,255,121,117,112,255,118,115,110,255,122,119,117,255,122,121,120,255, +123,122,122,255,121,120,120,255,120,119,118,255,118,117,117,255,117,115,114,255,115,113,112,255,114,112,110,255,112,109,108,255, +109,107,105,255,108,106,104,255,106,103,100,255,104,101, 98,255,101, 97, 94,255, 81, 79, 77,255, 61, 61, 61,255, 60, 60, 60,255, +119,120,121,255,173,175,177,255,171,173,176,255,171,173,176,255,171,173,175,255,171,173,175,255,171,173,175,255,170,172,174,255, +170,172,174,255,171,173,175,255,169,171,173,255,169,171,173,255,169,171,174,255,168,170,172,255,168,170,172,255,169,170,173,255, +167,169,171,255,167,169,171,255,168,170,172,255,166,168,170,255,166,168,171,255,166,167,170,255,165,167,169,255,166,167,169,255, +165,166,168,255,164,166,168,255,163,165,167,255,163,165,167,255,163,164,166,255,162,164,166,255,162,164,166,255,161,163,165,255, +160,162,165,255,160,162,163,255,158,160,161,255,157,158,160,255,155,156,157,255,150,151,152,255,142,143,144,255,133,133,133,255, +125,125,124,255,120,118,118,255,116,114,113,255,113,111,109,255,111,109,106,255,110,107,105,255,111,109,107,255,113,111,109,255, +115,113,111,255,118,116,115,255,121,120,119,255,124,123,123,255,127,126,126,255,130,129,129,255,132,131,132,255,135,135,135,255, +137,138,138,255,139,139,140,255,141,141,142,255,142,143,144,255,143,144,145,255,145,145,146,255,145,145,146,255,145,145,146,255, +146,145,146,255,145,146,146,255,144,144,145,255,143,143,144,255,142,142,143,255,140,140,140,255,138,137,136,255,135,134,133,255, +132,131,129,255,129,127,125,255,126,123,120,255,123,120,115,255,121,118,113,255,120,118,116,255,126,124,124,255,125,125,124,255, +124,123,123,255,122,121,121,255,121,120,120,255,119,118,117,255,117,116,115,255,116,115,114,255,114,112,111,255,112,110,109,255, +111,109,107,255,108,106,104,255,107,104,102,255,104,102, 98,255,103, 98, 95,255, 82, 80, 77,255, 61, 61, 61,255, 60, 60, 60,255, +120,121,122,255,174,176,178,255,173,175,177,255,173,175,177,255,173,175,177,255,172,174,176,255,172,174,176,255,172,174,176,255, +171,173,176,255,171,173,175,255,171,173,175,255,170,172,174,255,170,172,174,255,170,172,174,255,169,171,174,255,169,171,173,255, +169,171,173,255,169,170,173,255,168,170,172,255,168,170,172,255,167,169,171,255,167,169,171,255,167,169,171,255,166,168,170,255, +166,168,170,255,165,167,169,255,165,166,168,255,165,166,168,255,164,166,168,255,163,165,167,255,163,165,167,255,162,163,165,255, +161,163,165,255,158,160,162,255,155,156,158,255,149,150,151,255,143,144,144,255,137,137,137,255,129,129,128,255,121,119,119,255, +114,112,111,255,110,108,106,255,109,107,104,255,110,107,104,255,111,109,106,255,112,110,109,255,115,113,112,255,118,116,115,255, +121,119,118,255,123,122,121,255,127,126,126,255,130,129,129,255,132,132,132,255,135,134,135,255,137,137,138,255,139,139,140,255, +141,142,142,255,143,143,144,255,144,145,146,255,145,146,147,255,146,147,148,255,147,148,149,255,147,148,149,255,147,148,149,255, +146,147,148,255,146,146,148,255,145,145,146,255,143,143,144,255,142,141,141,255,140,139,139,255,137,136,134,255,134,132,131,255, +131,129,127,255,128,125,122,255,125,121,117,255,123,120,116,255,124,122,119,255,126,124,123,255,127,127,127,255,126,125,125,255, +125,125,124,255,123,122,122,255,122,121,120,255,120,119,119,255,118,117,116,255,117,115,114,255,115,114,113,255,113,111,110,255, +112,110,108,255,110,107,106,255,108,105,103,255,105,102, 99,255,103,100, 97,255, 82, 80, 78,255, 61, 61, 61,255, 60, 60, 60,255, +120,121,122,255,175,177,179,255,174,176,178,255,173,175,178,255,173,175,177,255,173,175,177,255,172,174,177,255,172,174,177,255, +172,174,176,255,172,174,176,255,171,174,176,255,171,173,175,255,171,173,175,255,170,173,175,255,170,172,174,255,170,172,174,255, +169,171,173,255,169,171,173,255,169,171,173,255,168,170,172,255,168,170,172,255,168,170,172,255,167,169,171,255,167,169,171,255, +166,168,170,255,166,168,170,255,166,168,170,255,165,167,169,255,164,166,168,255,164,166,168,255,163,165,167,255,161,163,165,255, +158,160,162,255,153,154,156,255,145,146,147,255,135,135,135,255,127,126,125,255,121,119,119,255,116,115,114,255,114,112,110,255, +112,110,108,255,112,109,106,255,112,109,108,255,113,111,109,255,115,113,111,255,118,116,114,255,121,119,118,255,124,123,122,255, +127,126,125,255,129,128,128,255,131,131,131,255,135,134,135,255,138,138,138,255,140,140,140,255,141,142,142,255,143,143,144,255, +145,145,146,255,146,147,148,255,148,148,149,255,148,149,150,255,149,149,150,255,149,149,150,255,148,149,150,255,148,149,150,255, +147,148,149,255,147,147,148,255,145,145,146,255,144,143,143,255,141,140,140,255,138,137,137,255,136,134,133,255,132,130,129,255, +130,127,124,255,127,124,120,255,125,122,117,255,127,124,121,255,129,127,127,255,130,129,129,255,129,128,128,255,127,127,127,255, +126,125,125,255,124,123,123,255,122,121,121,255,121,120,120,255,119,118,117,255,118,116,115,255,116,114,113,255,114,112,111,255, +112,110,109,255,110,108,107,255,109,106,104,255,107,104,101,255,104,101, 98,255, 82, 81, 79,255, 61, 61, 61,255, 60, 60, 60,255, +120,122,123,255,175,178,181,255,174,176,178,255,175,176,178,255,174,176,178,255,173,176,178,255,173,175,178,255,173,175,177,255, +173,176,177,255,172,175,178,255,172,174,177,255,173,174,176,255,172,174,177,255,171,173,175,255,171,174,175,255,170,173,175,255, +170,172,174,255,171,173,175,255,170,172,174,255,169,171,173,255,170,172,174,255,169,171,173,255,168,170,172,255,167,169,171,255, +167,169,171,255,167,169,171,255,166,168,170,255,166,168,170,255,165,167,169,255,164,166,168,255,161,163,165,255,156,157,159,255, +148,149,150,255,141,141,142,255,133,132,132,255,124,123,122,255,118,116,115,255,114,112,111,255,113,111,109,255,113,110,108,255, +114,112,110,255,115,113,112,255,116,115,113,255,119,117,116,255,121,120,118,255,123,122,122,255,127,126,126,255,130,129,129,255, +132,132,132,255,135,135,135,255,137,137,138,255,139,139,140,255,142,142,143,255,144,145,146,255,145,146,147,255,147,147,148,255, +147,148,149,255,149,150,151,255,150,151,152,255,150,151,152,255,150,151,152,255,151,151,152,255,150,151,152,255,149,149,150,255, +148,149,150,255,147,147,148,255,145,145,145,255,142,142,142,255,140,140,138,255,137,136,135,255,134,132,130,255,132,129,126,255, +130,127,123,255,127,124,119,255,127,125,122,255,130,129,128,255,132,131,131,255,131,130,131,255,130,129,129,255,128,128,128,255, +126,126,126,255,125,125,125,255,124,123,123,255,122,120,120,255,120,119,119,255,119,117,117,255,117,115,114,255,115,113,112,255, +114,112,110,255,111,109,107,255,110,107,105,255,107,105,102,255,105,101, 98,255, 83, 81, 80,255, 61, 61, 61,255, 60, 60, 60,255, +121,122,123,255,177,179,181,255,176,178,180,255,175,178,180,255,175,178,180,255,175,177,180,255,175,177,179,255,175,177,179,255, +174,176,179,255,174,176,178,255,173,176,178,255,173,175,178,255,173,175,177,255,173,175,177,255,172,174,176,255,172,174,176,255, +172,174,176,255,171,173,175,255,171,173,175,255,170,172,175,255,170,172,174,255,170,172,174,255,169,171,173,255,169,171,173,255, +169,171,173,255,168,170,172,255,167,169,171,255,167,169,171,255,165,166,168,255,162,163,165,255,156,157,159,255,146,146,147,255, +135,135,135,255,128,126,126,255,122,121,120,255,119,117,115,255,117,115,113,255,116,114,112,255,115,113,112,255,116,114,114,255, +118,116,115,255,120,119,118,255,123,122,121,255,126,125,125,255,128,127,127,255,130,129,129,255,133,133,133,255,136,136,136,255, +139,139,139,255,141,141,142,255,142,142,143,255,144,145,146,255,146,146,147,255,148,149,150,255,149,150,151,255,150,151,152,255, +151,152,153,255,151,152,153,255,151,152,153,255,152,153,154,255,152,153,154,255,151,152,153,255,151,151,152,255,150,150,151,255, +148,149,149,255,146,147,147,255,144,144,143,255,142,141,140,255,139,137,136,255,136,134,132,255,133,131,128,255,132,129,125,255, +129,126,122,255,129,127,124,255,131,131,129,255,134,134,134,255,133,132,133,255,132,132,132,255,130,131,131,255,129,129,129,255, +128,127,127,255,126,125,125,255,124,123,123,255,123,122,122,255,121,119,119,255,120,118,117,255,118,116,116,255,116,114,113,255, +114,112,111,255,112,110,109,255,110,108,106,255,108,105,103,255,106,103,100,255, 83, 82, 80,255, 61, 61, 61,255, 60, 60, 60,255, +121,123,124,255,177,180,182,255,176,178,181,255,176,178,181,255,176,178,180,255,175,178,180,255,175,177,180,255,175,177,180,255, +174,177,179,255,174,176,179,255,174,176,178,255,174,176,178,255,173,175,178,255,173,175,177,255,172,175,177,255,172,175,177,255, +172,174,176,255,171,174,176,255,171,173,175,255,171,173,175,255,171,173,175,255,170,172,174,255,169,171,174,255,169,171,174,255, +169,171,173,255,168,170,172,255,168,170,172,255,165,167,169,255,161,162,163,255,153,154,156,255,145,145,146,255,135,135,135,255, +127,126,125,255,122,120,120,255,119,118,117,255,119,117,116,255,119,117,116,255,119,117,116,255,120,119,118,255,123,121,121,255, +125,124,124,255,127,127,127,255,130,130,129,255,133,132,132,255,135,134,135,255,137,137,137,255,139,139,139,255,141,141,142,255, +143,144,145,255,146,147,148,255,147,148,149,255,149,149,150,255,150,151,152,255,151,152,153,255,152,153,155,255,153,154,155,255, +153,155,156,255,154,155,156,255,154,155,156,255,153,154,155,255,153,153,155,255,152,153,154,255,151,152,153,255,150,150,151,255, +148,148,148,255,145,145,145,255,144,142,142,255,140,139,138,255,137,135,134,255,135,132,130,255,133,130,126,255,132,128,125,255, +131,129,126,255,133,132,132,255,136,135,136,255,135,135,135,255,134,133,134,255,132,132,132,255,132,131,131,255,130,130,130,255, +128,128,128,255,127,126,126,255,125,124,124,255,123,123,122,255,122,121,121,255,120,120,119,255,118,117,116,255,117,115,114,255, +115,113,112,255,113,111,109,255,111,109,107,255,109,106,104,255,107,104,100,255, 84, 82, 80,255, 61, 61, 61,255, 60, 60, 60,255, +122,123,124,255,178,180,184,255,177,179,181,255,176,179,181,255,176,180,181,255,177,178,181,255,176,179,180,255,175,178,180,255, +175,177,181,255,176,177,180,255,175,178,179,255,174,176,179,255,175,177,178,255,174,176,178,255,173,175,178,255,174,176,177,255, +172,174,177,255,172,174,176,255,173,175,176,255,171,173,176,255,172,174,175,255,171,173,175,255,170,172,175,255,171,173,174,255, +170,172,174,255,168,170,173,255,166,168,170,255,161,163,164,255,153,152,154,255,142,142,143,255,134,134,134,255,129,128,127,255, +125,123,122,255,123,122,121,255,122,121,120,255,122,121,120,255,123,122,121,255,125,124,124,255,128,127,127,255,129,129,129,255, +132,132,132,255,134,134,134,255,136,136,137,255,139,139,140,255,142,142,143,255,143,143,144,255,145,145,146,255,146,147,148,255, +148,149,150,255,150,151,152,255,151,152,154,255,153,154,155,255,153,155,156,255,154,155,156,255,155,156,158,255,156,157,157,255, +155,156,157,255,155,156,157,255,155,156,157,255,155,156,157,255,153,154,155,255,153,153,154,255,152,152,152,255,149,149,149,255, +146,146,145,255,145,144,143,255,142,141,139,255,139,137,135,255,136,134,131,255,134,131,128,255,133,130,127,255,132,130,128,255, +135,134,134,255,137,137,137,255,137,137,138,255,136,136,136,255,135,135,135,255,133,134,133,255,132,132,132,255,131,131,131,255, +129,128,128,255,128,127,127,255,127,126,126,255,124,123,123,255,123,122,121,255,121,120,120,255,119,118,117,255,117,116,115,255, +116,114,113,255,113,111,110,255,112,110,108,255,109,107,105,255,108,105,101,255, 84, 83, 81,255, 61, 61, 61,255, 60, 60, 60,255, +122,124,124,255,179,182,184,255,178,181,183,255,178,180,183,255,178,180,183,255,177,180,182,255,177,179,182,255,177,179,182,255, +176,179,181,255,176,179,181,255,176,178,181,255,175,178,180,255,175,177,180,255,175,177,180,255,174,177,179,255,174,176,179,255, +174,176,178,255,174,176,178,255,173,175,178,255,173,175,177,255,172,174,177,255,172,174,176,255,172,174,176,255,171,173,175,255, +170,172,175,255,167,169,171,255,162,163,165,255,153,153,155,255,142,143,144,255,135,134,134,255,130,129,128,255,127,126,125,255, +127,126,125,255,126,125,124,255,127,126,125,255,129,128,127,255,130,129,129,255,132,132,132,255,134,134,134,255,136,136,136,255, +139,139,139,255,141,141,142,255,143,143,144,255,145,145,146,255,147,148,149,255,149,150,151,255,150,151,152,255,151,153,153,255, +152,153,156,255,154,155,157,255,155,156,158,255,156,157,158,255,157,158,159,255,157,158,160,255,157,158,160,255,157,158,160,255, +157,158,159,255,156,157,159,255,156,157,158,255,155,156,157,255,154,154,156,255,152,153,153,255,150,150,150,255,148,148,147,255, +146,145,144,255,143,142,140,255,141,139,137,255,138,136,133,255,136,134,129,255,134,133,129,255,135,133,131,255,137,137,136,255, +138,139,139,255,139,139,139,255,138,138,139,255,137,136,138,255,136,136,136,255,135,134,135,255,133,133,133,255,132,132,132,255, +131,130,130,255,129,129,129,255,127,126,126,255,125,125,124,255,124,123,122,255,122,120,120,255,120,119,118,255,118,116,116,255, +116,115,113,255,114,112,111,255,112,110,109,255,110,107,105,255,108,105,103,255, 84, 83, 81,255, 61, 61, 61,255, 60, 60, 60,255, +123,124,125,255,180,182,185,255,179,181,183,255,178,181,183,255,178,181,183,255,178,180,183,255,177,180,182,255,177,180,182,255, +177,179,182,255,177,179,181,255,176,178,181,255,176,178,181,255,176,178,180,255,175,178,180,255,175,178,180,255,175,177,179,255, +174,177,179,255,174,177,179,255,174,176,178,255,173,175,178,255,173,175,177,255,173,175,177,255,172,174,176,255,171,173,176,255, +169,171,173,255,163,164,166,255,154,155,156,255,144,144,144,255,137,136,136,255,132,131,130,255,131,130,129,255,130,129,128,255, +131,130,129,255,132,131,131,255,133,133,132,255,135,134,135,255,137,137,137,255,139,139,139,255,141,141,141,255,143,143,144,255, +145,145,146,255,147,148,149,255,148,149,150,255,150,151,152,255,152,153,154,255,154,155,156,255,155,156,158,255,155,157,158,255, +157,158,160,255,158,159,161,255,158,160,161,255,158,160,161,255,159,160,162,255,159,160,162,255,159,160,162,255,159,160,161,255, +158,159,160,255,157,158,159,255,156,157,159,255,156,156,157,255,154,154,155,255,152,152,152,255,149,148,148,255,146,145,145,255, +144,143,142,255,142,140,139,255,139,137,134,255,137,135,132,255,136,134,131,255,137,136,134,255,139,138,138,255,141,141,142,255, +140,141,141,255,140,140,140,255,139,139,139,255,137,137,138,255,137,137,137,255,135,135,135,255,134,134,134,255,133,133,133,255, +131,131,131,255,130,129,129,255,128,128,127,255,126,125,125,255,125,123,123,255,123,122,121,255,121,119,119,255,119,118,116,255, +117,116,114,255,115,113,111,255,113,111,109,255,111,109,107,255,109,106,103,255, 85, 84, 82,255, 61, 61, 61,255, 60, 60, 60,255, +123,124,125,255,181,184,186,255,180,182,185,255,180,181,185,255,180,182,184,255,178,181,184,255,179,180,184,255,179,181,184,255, +177,181,182,255,178,180,183,255,178,180,183,255,177,180,181,255,176,180,182,255,177,179,182,255,176,179,180,255,175,178,181,255, +176,178,180,255,175,178,179,255,174,177,180,255,175,177,178,255,174,177,179,255,174,176,178,255,172,174,177,255,170,172,174,255, +165,167,169,255,157,157,158,255,146,146,147,255,138,138,138,255,135,134,134,255,133,132,132,255,134,132,132,255,134,134,134,255, +136,135,135,255,137,137,137,255,139,139,140,255,142,142,142,255,143,143,144,255,145,146,146,255,147,148,149,255,148,149,150,255, +151,152,153,255,152,153,155,255,154,155,157,255,155,156,158,255,156,157,159,255,158,159,161,255,159,160,162,255,159,161,162,255, +161,162,164,255,161,162,164,255,161,163,164,255,161,163,164,255,161,163,164,255,161,163,164,255,160,161,162,255,159,160,162,255, +159,160,162,255,158,159,160,255,157,158,159,255,155,156,156,255,153,153,153,255,151,149,149,255,148,147,146,255,145,144,143,255, +144,141,139,255,141,139,136,255,139,136,134,255,138,136,134,255,139,138,136,255,141,141,140,255,143,143,143,255,142,143,144,255, +141,141,142,255,140,141,141,255,140,140,140,255,138,138,139,255,137,137,138,255,137,137,137,255,135,135,135,255,134,133,134,255, +132,131,131,255,131,130,130,255,129,128,128,255,127,126,126,255,126,125,124,255,123,122,122,255,121,120,119,255,120,118,117,255, +118,116,115,255,115,113,112,255,114,112,110,255,112,109,107,255,110,107,104,255, 85, 84, 82,255, 61, 61, 61,255, 60, 60, 60,255, +123,125,126,255,182,184,187,255,181,183,185,255,180,183,185,255,180,182,185,255,180,182,185,255,180,182,184,255,179,182,184,255, +179,181,184,255,179,181,184,255,178,181,183,255,178,181,183,255,178,180,183,255,178,180,182,255,177,179,182,255,177,179,182,255, +177,179,181,255,176,178,181,255,176,178,180,255,176,178,180,255,175,177,179,255,174,176,179,255,172,174,177,255,167,170,172,255, +159,160,161,255,149,149,149,255,141,141,141,255,138,137,137,255,136,136,135,255,136,136,135,255,138,138,138,255,139,139,140,255, +142,142,142,255,144,144,144,255,146,146,147,255,148,148,150,255,150,150,151,255,151,153,154,255,153,154,155,255,155,156,157,255, +155,157,158,255,157,158,160,255,158,160,162,255,159,161,163,255,160,161,163,255,161,163,164,255,161,163,165,255,162,164,165,255, +162,164,166,255,163,164,166,255,163,164,166,255,163,164,166,255,163,164,165,255,162,163,165,255,161,163,163,255,160,161,163,255, +160,160,162,255,158,159,160,255,156,156,157,255,154,154,154,255,152,151,150,255,149,148,147,255,146,145,144,255,145,143,141,255, +142,140,138,255,141,139,136,255,141,140,137,255,142,142,141,255,144,143,143,255,144,144,145,255,144,144,145,255,143,143,144,255, +142,142,143,255,141,141,142,255,140,140,141,255,139,139,139,255,138,138,138,255,137,137,138,255,135,136,136,255,134,134,134,255, +133,133,133,255,131,131,131,255,130,129,129,255,128,127,127,255,126,125,125,255,124,123,122,255,122,121,121,255,120,119,118,255, +119,117,116,255,116,114,113,255,114,112,111,255,112,110,108,255,111,108,106,255, 86, 84, 83,255, 61, 61, 61,255, 60, 60, 60,255, +124,125,126,255,182,185,187,255,181,183,186,255,181,183,186,255,180,183,185,255,180,183,185,255,180,183,185,255,180,182,185,255, +179,182,184,255,179,182,184,255,179,181,184,255,179,181,183,255,178,181,183,255,178,180,182,255,177,180,182,255,177,180,182,255, +177,179,181,255,176,179,181,255,176,178,181,255,176,178,180,255,175,177,180,255,174,176,178,255,170,172,174,255,162,163,165,255, +151,152,153,255,144,144,144,255,141,140,140,255,140,139,139,255,140,140,140,255,141,141,141,255,143,143,144,255,145,145,146,255, +148,148,149,255,150,151,152,255,152,152,153,255,153,154,156,255,155,156,158,255,157,158,160,255,158,159,161,255,159,160,162,255, +160,161,163,255,161,162,164,255,162,164,166,255,163,165,166,255,164,165,167,255,164,166,167,255,164,166,168,255,164,166,168,255, +165,166,168,255,165,166,168,255,164,166,167,255,164,165,166,255,163,164,166,255,163,164,165,255,161,162,164,255,160,161,162,255, +159,159,160,255,157,158,158,255,155,155,155,255,152,152,152,255,150,149,148,255,147,146,144,255,145,144,141,255,144,142,139,255, +142,141,138,255,144,143,142,255,145,145,144,255,146,146,146,255,146,147,148,255,145,146,147,255,145,145,146,255,144,144,145,255, +143,143,144,255,142,142,143,255,141,141,142,255,140,140,141,255,139,139,139,255,137,137,138,255,136,136,137,255,136,135,136,255, +133,133,133,255,132,132,132,255,131,130,130,255,129,128,128,255,127,126,126,255,125,124,124,255,123,122,121,255,122,120,119,255, +120,118,117,255,117,115,114,255,115,113,111,255,113,111,109,255,111,109,106,255, 86, 85, 83,255, 61, 61, 61,255, 60, 60, 60,255, +124,125,127,255,184,186,189,255,181,185,186,255,182,185,187,255,182,184,187,255,182,184,187,255,181,184,186,255,181,184,186,255, +181,182,186,255,180,183,185,255,180,183,185,255,180,182,185,255,179,181,184,255,179,182,184,255,179,180,184,255,179,181,183,255, +178,181,183,255,178,179,182,255,178,180,182,255,177,179,182,255,176,178,180,255,173,176,178,255,166,167,169,255,155,156,156,255, +147,147,147,255,143,143,143,255,143,142,142,255,143,142,142,255,144,144,145,255,147,147,148,255,148,149,150,255,151,152,153,255, +154,154,156,255,156,156,158,255,157,158,160,255,158,159,161,255,160,161,163,255,161,162,164,255,162,164,165,255,163,165,167,255, +164,166,168,255,164,166,168,255,165,167,169,255,166,168,169,255,166,168,170,255,167,168,170,255,167,168,170,255,167,169,170,255, +167,168,170,255,166,168,169,255,166,167,169,255,164,165,167,255,163,165,166,255,163,164,165,255,161,162,163,255,160,160,161,255, +158,159,159,255,156,155,155,255,153,152,152,255,151,150,148,255,148,146,145,255,146,144,142,255,146,144,142,255,145,143,142,255, +145,143,142,255,148,148,148,255,150,150,151,255,148,148,150,255,147,148,149,255,146,147,148,255,146,146,147,255,145,145,147,255, +143,144,145,255,143,143,144,255,142,142,143,255,140,141,141,255,140,140,140,255,139,139,139,255,137,137,137,255,136,136,136,255, +135,134,135,255,133,132,133,255,131,131,131,255,129,128,128,255,128,127,127,255,126,125,125,255,123,122,122,255,122,121,120,255, +120,118,117,255,117,116,114,255,116,114,113,255,114,111,110,255,112,110,107,255, 86, 85, 84,255, 61, 61, 61,255, 60, 60, 60,255, +125,126,127,255,184,187,189,255,183,186,188,255,183,185,188,255,183,185,188,255,182,185,187,255,182,185,187,255,182,184,187,255, +181,184,186,255,181,184,186,255,181,183,186,255,180,183,185,255,180,182,185,255,180,182,185,255,179,182,184,255,179,181,184,255, +179,181,184,255,178,181,183,255,178,180,183,255,178,180,183,255,177,179,181,255,170,172,174,255,160,161,163,255,151,151,152,255, +147,147,147,255,145,145,145,255,145,146,145,255,147,147,148,255,149,149,150,255,152,152,153,255,155,155,157,255,156,157,159,255, +158,160,161,255,160,162,163,255,161,163,165,255,162,164,166,255,164,165,167,255,165,166,168,255,165,167,169,255,166,168,170,255, +167,169,170,255,167,169,171,255,167,169,171,255,168,170,171,255,168,170,171,255,168,170,172,255,168,170,171,255,168,170,171,255, +168,169,171,255,167,168,169,255,166,167,169,255,164,165,167,255,163,164,165,255,162,162,163,255,161,161,162,255,158,159,159,255, +156,156,156,255,153,152,152,255,151,150,149,255,149,148,146,255,147,146,143,255,146,145,143,255,148,148,146,255,150,149,149,255, +148,148,149,255,150,151,152,255,150,151,153,255,149,149,151,255,148,149,150,255,147,148,149,255,146,147,148,255,145,146,147,255, +144,145,146,255,143,144,145,255,143,143,144,255,141,142,142,255,140,140,141,255,139,139,140,255,138,138,138,255,137,137,137,255, +135,135,136,255,134,133,133,255,132,131,131,255,130,129,129,255,129,128,128,255,127,126,125,255,124,123,123,255,123,122,121,255, +121,119,118,255,119,117,116,255,117,115,113,255,114,112,110,255,113,110,108,255, 87, 86, 84,255, 61, 61, 61,255, 60, 60, 60,255, +125,126,128,255,185,188,190,255,183,186,188,255,183,186,188,255,183,186,188,255,182,185,188,255,182,185,188,255,182,185,187,255, +182,184,187,255,182,184,187,255,181,183,186,255,181,183,186,255,180,183,185,255,180,182,185,255,180,182,185,255,179,182,184,255, +179,181,184,255,179,181,184,255,178,181,183,255,177,179,183,255,175,177,179,255,166,167,169,255,156,156,157,255,151,151,151,255, +148,148,149,255,148,148,149,255,149,149,150,255,152,152,154,255,155,156,157,255,157,158,160,255,159,161,162,255,162,163,165,255, +163,164,166,255,165,166,168,255,165,167,169,255,166,168,170,255,167,169,171,255,167,169,172,255,168,170,172,255,168,170,172,255, +169,171,173,255,169,171,173,255,169,171,173,255,169,171,173,255,169,171,173,255,169,170,172,255,169,171,172,255,168,170,171,255, +168,169,171,255,166,167,169,255,165,166,167,255,164,165,166,255,162,163,164,255,161,161,162,255,160,159,159,255,157,156,156,255, +154,153,152,255,152,150,149,255,150,148,147,255,149,148,146,255,149,148,147,255,149,149,148,255,152,152,152,255,153,153,155,255, +152,153,153,255,151,152,153,255,150,151,152,255,149,150,151,255,149,149,150,255,148,148,149,255,147,148,149,255,146,147,148,255, +145,145,146,255,144,145,145,255,143,143,144,255,142,142,143,255,141,141,142,255,139,139,140,255,138,138,139,255,137,137,138,255, +135,135,135,255,134,134,134,255,133,132,132,255,131,130,130,255,130,129,129,255,128,127,126,255,126,124,124,255,123,123,121,255, +122,120,119,255,119,118,116,255,118,115,114,255,115,113,111,255,113,111,109,255, 87, 86, 85,255, 61, 61, 61,255, 60, 60, 60,255, +125,127,129,255,186,189,191,255,185,186,190,255,184,187,190,255,184,187,190,255,184,186,188,255,184,185,189,255,183,186,189,255, +183,186,187,255,183,185,188,255,182,185,188,255,182,184,186,255,181,184,187,255,181,184,187,255,181,183,185,255,181,183,186,255, +180,183,185,255,180,182,185,255,179,182,184,255,177,179,181,255,172,173,175,255,162,163,163,255,154,155,156,255,152,152,152,255, +152,152,152,255,152,152,153,255,154,155,156,255,157,157,159,255,160,161,162,255,162,164,165,255,164,166,167,255,165,167,169,255, +167,168,170,255,168,170,172,255,169,171,173,255,169,171,173,255,170,172,174,255,171,173,175,255,171,173,175,255,171,173,175,255, +171,173,175,255,171,173,175,255,171,173,175,255,171,172,173,255,171,171,174,255,170,171,173,255,168,170,171,255,168,169,171,255, +166,167,168,255,165,166,167,255,164,165,166,255,162,163,163,255,162,162,162,255,160,159,159,255,157,156,156,255,155,155,154,255, +153,152,151,255,151,150,149,255,151,150,149,255,151,150,150,255,153,153,153,255,154,154,155,255,154,155,157,255,154,154,155,255, +153,154,155,255,152,153,154,255,151,151,152,255,150,151,152,255,150,150,152,255,148,149,150,255,148,148,149,255,147,148,149,255, +146,146,147,255,145,145,146,255,144,144,145,255,142,143,144,255,142,142,143,255,141,141,142,255,139,139,140,255,138,138,138,255, +137,137,137,255,135,135,135,255,133,133,133,255,131,130,130,255,130,129,129,255,128,127,127,255,126,125,124,255,125,123,123,255, +122,121,120,255,120,118,117,255,118,116,115,255,116,114,112,255,114,112,110,255, 87, 86, 85,255, 61, 61, 61,255, 60, 60, 60,255, +126,127,129,255,186,189,192,255,185,187,191,255,185,188,190,255,185,187,190,255,184,187,190,255,184,187,189,255,184,186,189,255, +184,186,189,255,183,186,188,255,183,185,188,255,182,185,187,255,182,185,187,255,182,185,187,255,181,184,186,255,181,184,186,255, +181,183,186,255,181,183,186,255,180,182,186,255,176,178,181,255,169,170,172,255,160,160,161,255,156,156,156,255,154,154,155,255, +155,155,156,255,156,157,158,255,159,160,161,255,162,163,165,255,164,166,167,255,166,168,169,255,168,170,172,255,169,171,173,255, +170,172,174,255,171,173,175,255,171,173,175,255,171,173,175,255,172,174,176,255,172,174,176,255,172,174,176,255,172,174,176,255, +172,174,175,255,172,173,175,255,171,173,175,255,170,172,174,255,170,171,172,255,169,170,172,255,168,169,170,255,166,167,168,255, +165,166,167,255,164,165,165,255,162,163,163,255,161,162,161,255,159,159,158,255,157,156,156,255,155,155,154,255,154,154,152,255, +154,153,152,255,154,153,152,255,155,155,154,255,155,155,156,255,156,157,158,255,156,158,159,255,155,156,157,255,154,155,156,255, +153,154,155,255,153,153,155,255,151,152,153,255,151,152,153,255,150,151,152,255,149,150,151,255,148,149,150,255,147,148,149,255, +146,147,148,255,145,146,147,255,145,145,146,255,143,144,144,255,142,142,143,255,141,142,142,255,140,140,140,255,138,138,138,255, +137,137,137,255,136,135,135,255,134,133,133,255,132,132,132,255,131,130,130,255,129,128,127,255,127,126,125,255,125,124,123,255, +123,121,120,255,121,119,118,255,119,117,115,255,116,114,112,255,115,112,110,255, 88, 87, 85,255, 61, 61, 61,255, 60, 60, 60,255, +126,127,129,255,187,190,192,255,185,188,191,255,185,188,191,255,185,188,191,255,185,187,190,255,184,187,190,255,184,186,189,255, +184,186,189,255,184,186,189,255,183,186,188,255,183,185,188,255,182,185,188,255,183,185,187,255,182,184,187,255,181,184,187,255, +181,183,186,255,181,184,187,255,181,183,186,255,175,177,179,255,166,167,168,255,159,160,160,255,157,157,158,255,157,157,158,255, +159,159,160,255,161,162,164,255,164,166,167,255,167,168,170,255,168,170,172,255,170,171,173,255,171,173,175,255,172,174,176,255, +173,175,177,255,173,175,177,255,172,175,177,255,172,174,176,255,172,174,176,255,172,174,176,255,172,174,175,255,172,173,176,255, +172,174,175,255,171,173,175,255,171,172,174,255,169,171,173,255,169,170,171,255,168,168,169,255,166,167,168,255,165,165,166,255, +164,164,164,255,162,162,162,255,161,160,160,255,160,159,158,255,158,157,156,255,157,156,154,255,156,155,154,255,156,156,155,255, +157,156,156,255,159,160,160,255,159,160,161,255,157,158,159,255,156,157,159,255,157,158,159,255,156,157,158,255,155,155,157,255, +154,155,156,255,153,154,155,255,152,153,154,255,151,152,153,255,151,151,152,255,149,150,151,255,149,149,151,255,148,148,150,255, +147,147,148,255,146,146,147,255,144,145,146,255,144,144,145,255,143,143,144,255,141,142,142,255,141,141,141,255,139,139,139,255, +137,138,137,255,136,136,136,255,135,135,135,255,133,132,132,255,131,131,131,255,130,129,129,255,128,127,126,255,126,125,124,255, +124,122,121,255,121,120,118,255,120,117,116,255,117,115,113,255,116,113,110,255, 88, 87, 86,255, 61, 61, 61,255, 60, 60, 60,255, +126,128,130,255,188,191,194,255,187,189,192,255,187,189,192,255,186,189,192,255,186,189,191,255,186,188,191,255,185,188,191,255, +185,188,190,255,185,187,190,255,184,187,190,255,184,186,188,255,184,186,189,255,183,186,189,255,183,186,188,255,182,185,188,255, +182,185,188,255,182,185,187,255,181,183,187,255,174,176,177,255,165,166,167,255,161,161,161,255,160,161,161,255,161,162,163,255, +163,164,165,255,166,167,169,255,168,170,172,255,170,172,174,255,172,174,176,255,173,175,177,255,174,176,178,255,174,176,178,255, +174,176,178,255,174,176,179,255,174,176,178,255,173,175,177,255,173,175,176,255,172,174,175,255,172,173,176,255,171,173,174,255, +171,172,174,255,170,172,173,255,169,170,172,255,168,169,170,255,167,168,168,255,165,165,166,255,164,164,164,255,163,163,162,255, +161,161,160,255,160,160,159,255,159,159,158,255,158,157,156,255,158,158,155,255,159,159,157,255,160,160,160,255,159,160,161,255, +159,160,161,255,162,163,164,255,161,162,163,255,159,160,161,255,158,159,160,255,157,158,159,255,157,158,159,255,155,156,157,255, +155,156,157,255,154,155,156,255,153,153,155,255,152,153,154,255,152,152,153,255,150,151,152,255,150,150,151,255,149,150,151,255, +148,148,149,255,147,147,148,255,146,146,147,255,144,145,146,255,144,144,145,255,143,143,144,255,141,141,142,255,140,139,140,255, +139,138,139,255,137,136,137,255,136,135,135,255,134,133,133,255,132,131,131,255,130,129,129,255,128,127,126,255,127,125,125,255, +124,123,122,255,122,120,119,255,120,118,117,255,118,115,113,255,116,114,111,255, 88, 87, 86,255, 61, 61, 61,255, 60, 60, 60,255, +127,128,130,255,188,191,194,255,187,190,193,255,187,190,193,255,187,190,192,255,186,189,192,255,186,188,192,255,186,188,191,255, +185,188,191,255,185,188,191,255,185,188,190,255,184,187,190,255,184,187,189,255,184,187,190,255,184,186,189,255,183,186,189,255, +183,185,188,255,183,185,188,255,182,184,186,255,173,174,176,255,166,167,167,255,164,163,164,255,163,163,164,255,165,166,167,255, +167,168,170,255,170,171,173,255,172,173,175,255,173,175,177,255,175,177,179,255,175,177,179,255,175,177,180,255,174,177,179,255, +175,177,178,255,174,177,179,255,174,176,178,255,173,175,177,255,172,174,176,255,171,173,175,255,170,172,173,255,170,171,172,255, +169,170,171,255,168,169,170,255,166,167,168,255,165,166,166,255,164,164,164,255,162,162,162,255,161,160,160,255,160,160,159,255, +160,159,158,255,160,160,159,255,160,159,158,255,160,160,159,255,161,160,160,255,163,164,164,255,165,166,167,255,163,164,165,255, +161,162,163,255,160,161,163,255,160,161,163,255,160,161,162,255,158,159,161,255,158,159,160,255,157,158,159,255,156,157,158,255, +155,156,157,255,154,155,157,255,153,154,156,255,153,153,155,255,152,153,154,255,151,152,153,255,150,151,152,255,150,150,151,255, +148,149,150,255,147,148,149,255,146,147,148,255,145,145,146,255,144,144,145,255,143,143,144,255,142,142,143,255,140,140,140,255, +138,138,139,255,137,137,137,255,136,136,136,255,135,133,133,255,133,132,132,255,131,130,130,255,129,128,127,255,127,126,125,255, +125,123,122,255,122,121,119,255,121,119,117,255,118,116,114,255,116,114,112,255, 89, 87, 86,255, 61, 61, 61,255, 60, 60, 60,255, +127,128,130,255,189,192,195,255,187,190,193,255,187,190,193,255,187,190,193,255,186,189,192,255,186,189,192,255,186,188,191,255, +186,188,191,255,185,188,191,255,185,188,190,255,185,187,190,255,184,187,190,255,184,187,190,255,184,186,189,255,183,186,189,255, +184,186,189,255,184,187,189,255,181,183,185,255,173,174,175,255,167,168,169,255,166,167,167,255,166,167,168,255,168,169,171,255, +171,173,174,255,173,175,176,255,175,177,179,255,176,178,180,255,176,179,181,255,176,179,181,255,176,178,181,255,175,177,180,255, +174,176,179,255,174,176,178,255,173,174,176,255,172,173,175,255,171,172,174,255,169,171,172,255,167,168,170,255,166,167,168,255, +165,166,167,255,164,165,165,255,162,163,163,255,161,161,161,255,160,159,159,255,160,159,158,255,160,158,157,255,160,159,158,255, +161,161,160,255,163,163,162,255,164,164,165,255,164,165,165,255,163,164,165,255,164,165,167,255,166,167,169,255,164,165,167,255, +163,164,165,255,161,162,163,255,160,162,163,255,160,161,162,255,159,160,161,255,158,159,161,255,157,159,160,255,156,157,159,255, +156,157,158,255,155,156,157,255,154,155,156,255,153,154,155,255,153,153,155,255,152,152,154,255,151,152,153,255,149,151,152,255, +149,149,150,255,148,148,149,255,146,147,148,255,146,146,147,255,145,145,146,255,143,143,144,255,142,142,143,255,141,141,141,255, +139,139,139,255,138,138,138,255,137,136,137,255,134,134,134,255,133,132,132,255,132,131,130,255,129,128,128,255,128,127,126,255, +125,124,123,255,123,121,120,255,120,119,118,255,119,117,114,255,117,114,112,255, 89, 88, 86,255, 61, 61, 61,255, 60, 60, 60,255, +128,129,131,255,190,193,196,255,189,192,194,255,188,191,194,255,188,191,194,255,188,191,193,255,187,190,193,255,187,190,193,255, +187,190,193,255,187,189,192,255,186,189,192,255,186,189,191,255,186,188,191,255,186,188,191,255,185,188,190,255,185,188,190,255, +185,188,191,255,186,188,191,255,182,183,186,255,173,174,175,255,170,170,171,255,169,170,171,255,169,170,171,255,171,173,174,255, +173,175,177,255,176,178,180,255,177,179,182,255,179,181,183,255,179,181,184,255,178,180,183,255,177,180,182,255,176,178,180,255, +175,176,178,255,173,175,177,255,171,173,175,255,170,172,173,255,167,169,170,255,166,167,169,255,163,165,166,255,162,162,163,255, +160,161,160,255,159,159,159,255,158,157,157,255,157,156,156,255,157,156,155,255,159,158,157,255,160,160,159,255,162,162,161,255, +165,165,166,255,168,169,170,255,169,170,172,255,168,169,171,255,165,166,168,255,164,165,167,255,164,165,166,255,163,164,166,255, +163,164,166,255,162,163,165,255,161,162,164,255,161,162,163,255,160,161,162,255,159,160,161,255,158,159,161,255,157,158,160,255, +157,158,159,255,156,157,158,255,155,156,157,255,154,155,156,255,154,154,156,255,152,153,154,255,152,152,153,255,151,152,153,255, +149,150,151,255,149,149,150,255,148,148,149,255,146,147,147,255,145,146,147,255,145,145,146,255,143,143,144,255,141,141,142,255, +140,140,141,255,138,138,139,255,137,137,137,255,135,135,135,255,133,133,133,255,132,131,131,255,129,128,128,255,128,127,126,255, +126,125,123,255,123,122,120,255,122,120,118,255,119,117,115,255,117,115,112,255, 89, 88, 86,255, 61, 61, 61,255, 60, 60, 60,255, +128,129,131,255,191,193,196,255,189,192,195,255,189,192,195,255,188,192,194,255,188,191,194,255,188,191,194,255,188,190,193,255, +187,190,193,255,187,190,193,255,187,190,192,255,186,189,192,255,186,189,191,255,185,189,192,255,185,188,191,255,185,188,191,255, +186,189,192,255,187,190,193,255,183,184,186,255,175,176,177,255,172,173,173,255,171,172,173,255,173,174,175,255,175,176,178,255, +177,179,180,255,179,181,183,255,180,182,185,255,180,183,185,255,180,182,185,255,179,181,184,255,178,180,182,255,176,178,181,255, +174,176,178,255,171,173,175,255,169,170,172,255,167,168,170,255,164,165,167,255,161,162,163,255,158,159,159,255,155,155,155,255, +153,153,153,255,153,152,151,255,153,152,151,255,155,154,152,255,159,158,157,255,165,164,164,255,167,167,167,255,167,168,169,255, +169,170,171,255,169,170,172,255,169,171,172,255,168,170,171,255,166,168,169,255,165,166,168,255,164,165,167,255,163,165,166,255, +163,165,166,255,162,164,165,255,162,163,164,255,161,162,164,255,160,161,163,255,159,161,162,255,159,160,161,255,158,159,160,255, +157,158,160,255,157,157,159,255,155,156,158,255,155,156,157,255,154,155,156,255,153,154,155,255,152,153,154,255,151,152,153,255, +150,151,152,255,149,150,151,255,148,149,150,255,147,147,148,255,146,146,147,255,144,145,145,255,144,143,144,255,142,142,142,255, +141,141,140,255,139,139,139,255,138,137,137,255,135,135,135,255,134,133,133,255,133,132,131,255,130,129,129,255,128,127,127,255, +126,125,124,255,124,122,121,255,121,120,118,255,119,117,115,255,118,115,113,255, 89, 88, 87,255, 61, 61, 61,255, 60, 60, 60,255, +129,130,131,255,191,194,197,255,189,192,195,255,189,192,195,255,189,192,195,255,188,191,194,255,188,191,194,255,188,190,193,255, +188,190,193,255,187,190,193,255,187,190,192,255,187,189,192,255,186,189,192,255,186,189,192,255,186,188,191,255,186,189,191,255, +187,190,193,255,188,191,194,255,184,186,188,255,177,178,180,255,175,176,176,255,175,176,177,255,176,177,178,255,179,180,182,255, +180,182,185,255,181,184,186,255,182,185,187,255,181,185,187,255,181,183,186,255,179,182,184,255,178,180,183,255,176,178,180,255, +173,175,176,255,169,171,173,255,166,168,169,255,163,164,166,255,160,161,162,255,156,155,157,255,151,150,151,255,148,147,145,255, +146,145,143,255,147,145,144,255,150,149,147,255,155,154,153,255,163,163,164,255,171,172,173,255,173,174,176,255,172,173,174,255, +169,171,173,255,168,170,171,255,168,170,171,255,167,169,170,255,166,168,169,255,166,167,169,255,164,166,167,255,164,166,167,255, +164,165,167,255,163,164,165,255,162,163,165,255,162,163,164,255,161,162,163,255,160,161,162,255,159,160,162,255,158,159,161,255, +158,159,160,255,157,158,159,255,156,157,158,255,155,156,158,255,154,155,157,255,153,154,155,255,153,153,155,255,151,152,154,255, +151,151,152,255,150,150,151,255,149,149,150,255,147,148,148,255,146,147,148,255,145,146,146,255,144,144,145,255,142,142,143,255, +140,140,141,255,139,139,140,255,138,138,138,255,135,135,135,255,135,134,134,255,133,132,132,255,130,129,129,255,129,128,127,255, +127,125,124,255,124,123,121,255,123,121,119,255,120,118,116,255,118,116,113,255, 89, 88, 87,255, 61, 61, 61,255, 60, 60, 60,255, +129,130,132,255,192,195,198,255,191,193,196,255,190,193,196,255,190,192,196,255,190,192,195,255,189,192,195,255,189,192,195,255, +188,192,195,255,189,191,194,255,188,191,194,255,187,190,193,255,188,190,193,255,187,190,192,255,186,190,193,255,186,189,193,255, +189,192,195,255,190,193,195,255,185,188,190,255,180,181,182,255,178,179,179,255,178,179,180,255,179,181,183,255,182,184,186,255, +184,186,188,255,185,187,190,255,184,187,190,255,183,186,189,255,181,184,187,255,180,182,185,255,178,180,182,255,175,177,179,255, +172,173,175,255,168,169,171,255,164,164,167,255,159,160,162,255,154,154,155,255,149,148,148,255,142,141,140,255,137,136,133,255, +137,134,132,255,140,138,135,255,147,146,145,255,157,157,158,255,167,168,169,255,172,173,175,255,172,174,176,255,172,173,175,255, +170,171,173,255,169,171,172,255,169,170,172,255,168,170,171,255,167,169,170,255,167,168,169,255,166,167,169,255,165,167,168,255, +165,166,167,255,163,165,166,255,163,164,166,255,162,164,165,255,161,162,164,255,161,162,163,255,160,161,163,255,159,160,161,255, +158,159,161,255,158,159,160,255,157,158,159,255,156,157,158,255,155,156,157,255,154,155,156,255,153,154,155,255,153,153,154,255, +151,152,153,255,150,151,152,255,149,150,151,255,148,148,149,255,147,147,148,255,146,146,147,255,144,144,145,255,143,143,143,255, +142,142,141,255,140,140,140,255,139,138,138,255,136,136,136,255,135,134,134,255,134,133,132,255,131,130,129,255,129,128,128,255, +127,126,125,255,125,123,121,255,123,121,120,255,120,118,116,255,118,116,114,255, 90, 88, 87,255, 61, 61, 61,255, 60, 60, 60,255, +129,130,132,255,192,195,198,255,190,193,196,255,190,194,197,255,191,193,196,255,190,193,196,255,190,193,196,255,190,192,195,255, +189,192,195,255,189,192,195,255,189,192,194,255,188,191,194,255,188,191,194,255,187,191,193,255,187,190,193,255,188,190,193,255, +190,192,195,255,192,194,197,255,188,189,192,255,181,182,184,255,180,181,182,255,180,182,183,255,183,185,186,255,185,187,189,255, +187,189,192,255,188,190,193,255,186,189,192,255,184,187,190,255,183,185,188,255,179,182,184,255,177,179,181,255,173,175,177,255, +169,172,173,255,165,167,168,255,161,162,163,255,155,155,157,255,149,149,149,255,142,140,140,255,133,132,130,255,127,124,122,255, +125,122,120,255,128,127,125,255,139,140,139,255,154,155,156,255,164,165,167,255,169,171,173,255,170,172,174,255,170,172,174,255, +169,172,173,255,169,171,173,255,169,171,172,255,169,170,171,255,167,169,171,255,167,168,170,255,166,167,169,255,166,167,169,255, +165,166,168,255,164,165,167,255,163,165,166,255,163,164,166,255,162,163,164,255,161,162,164,255,161,162,163,255,159,161,162,255, +159,160,161,255,158,159,160,255,157,158,159,255,156,157,159,255,156,157,158,255,154,155,156,255,154,154,156,255,153,154,155,255, +152,152,153,255,151,151,152,255,150,150,151,255,148,149,150,255,147,148,148,255,147,147,147,255,145,145,146,255,143,143,144,255, +142,141,142,255,140,140,140,255,139,139,139,255,137,136,136,255,135,135,134,255,134,133,132,255,131,130,130,255,130,128,128,255, +128,126,125,255,125,124,122,255,123,121,120,255,121,119,117,255,119,116,113,255, 90, 88, 87,255, 61, 61, 61,255, 60, 60, 60,255, +129,131,132,255,193,196,199,255,191,194,197,255,191,194,197,255,191,194,197,255,190,193,196,255,191,193,196,255,189,193,196,255, +189,193,196,255,189,193,196,255,189,191,194,255,188,191,194,255,188,191,194,255,188,190,193,255,187,190,193,255,188,191,194,255, +190,193,196,255,193,196,199,255,190,193,194,255,184,185,187,255,182,183,184,255,183,185,186,255,185,187,189,255,188,190,192,255, +189,192,195,255,189,192,195,255,188,191,194,255,186,189,192,255,183,185,188,255,180,182,184,255,176,178,180,255,172,174,176,255, +168,170,172,255,163,164,165,255,157,158,159,255,151,151,152,255,144,144,143,255,134,133,133,255,124,123,120,255,117,114,112,255, +113,110,108,255,114,112,110,255,124,123,123,255,139,138,139,255,151,152,153,255,160,162,163,255,165,166,168,255,168,169,171,255, +169,171,173,255,170,172,173,255,170,171,173,255,168,170,172,255,168,169,171,255,167,169,170,255,166,168,169,255,167,168,169,255, +166,167,168,255,164,166,167,255,164,165,166,255,163,165,166,255,162,163,165,255,161,163,164,255,161,162,164,255,160,161,162,255, +159,160,162,255,159,160,161,255,157,158,160,255,157,158,159,255,156,157,158,255,155,156,157,255,154,155,156,255,153,153,155,255, +152,153,154,255,151,152,153,255,149,151,152,255,149,149,150,255,148,148,149,255,146,146,148,255,145,145,146,255,144,144,144,255, +142,142,142,255,141,141,141,255,139,139,139,255,137,136,136,255,136,135,135,255,135,134,133,255,132,131,130,255,130,129,128,255, +128,127,126,255,126,124,123,255,124,122,119,255,121,119,117,255,119,117,114,255, 90, 89, 87,255, 61, 61, 61,255, 60, 60, 60,255, +130,131,133,255,194,196,200,255,192,195,198,255,192,194,198,255,192,195,198,255,191,194,197,255,191,194,197,255,191,194,197,255, +191,193,196,255,190,193,196,255,189,193,196,255,189,192,195,255,189,192,195,255,188,192,195,255,188,191,194,255,188,191,194,255, +191,192,195,255,194,197,200,255,193,195,198,255,187,189,190,255,185,186,188,255,185,187,188,255,188,189,191,255,190,192,195,255, +191,194,197,255,191,194,197,255,189,192,195,255,187,190,192,255,183,186,188,255,179,182,184,255,175,177,180,255,171,173,175,255, +166,168,169,255,160,161,163,255,154,154,155,255,147,147,148,255,139,139,138,255,129,128,127,255,119,116,114,255,109,106,104,255, +104,102, 99,255,105,103,101,255,110,108,107,255,119,118,118,255,131,131,131,255,142,142,143,255,150,151,152,255,158,159,160,255, +164,165,166,255,167,168,170,255,168,170,172,255,168,170,171,255,168,169,171,255,168,170,171,255,168,168,171,255,167,168,170,255, +166,168,169,255,165,166,168,255,164,166,167,255,164,165,167,255,163,164,165,255,162,163,165,255,162,163,164,255,161,162,163,255, +160,161,162,255,160,161,162,255,158,159,160,255,157,158,160,255,157,158,159,255,155,156,157,255,155,155,157,255,154,155,156,255, +153,153,154,255,152,152,153,255,151,151,152,255,149,150,150,255,148,149,149,255,148,148,148,255,146,146,146,255,144,144,145,255, +143,142,143,255,141,141,141,255,140,140,139,255,138,137,137,255,136,136,135,255,135,134,133,255,132,131,130,255,130,129,129,255, +128,127,126,255,126,125,123,255,124,123,121,255,122,119,117,255,119,117,115,255, 90, 89, 87,255, 61, 61, 61,255, 60, 60, 60,255, +130,131,133,255,194,197,200,255,193,195,199,255,193,195,199,255,192,195,198,255,191,194,198,255,192,194,198,255,191,194,197,255, +190,193,196,255,190,194,197,255,190,193,196,255,190,192,195,255,189,192,195,255,189,191,194,255,189,191,194,255,188,191,194,255, +190,193,196,255,194,197,200,255,195,197,200,255,190,191,193,255,187,189,190,255,187,189,190,255,190,192,194,255,192,194,196,255, +192,195,198,255,192,195,198,255,190,193,196,255,188,190,193,255,184,186,189,255,179,182,184,255,174,177,179,255,170,172,173,255, +164,165,167,255,158,159,160,255,151,151,152,255,143,143,144,255,135,135,135,255,126,124,124,255,115,113,112,255,107,104,102,255, +101, 98, 96,255,100, 97, 95,255,102,100, 98,255,107,105,104,255,116,114,113,255,123,123,123,255,131,131,131,255,140,140,141,255, +148,149,150,255,155,156,157,255,159,161,162,255,163,164,165,255,166,167,169,255,167,169,170,255,168,169,171,255,167,169,170,255, +167,168,170,255,165,167,168,255,165,166,168,255,164,166,167,255,163,164,166,255,163,164,165,255,162,163,165,255,161,162,163,255, +160,161,163,255,160,161,162,255,159,160,161,255,158,159,160,255,157,158,159,255,156,157,158,255,155,156,157,255,154,154,156,255, +153,154,155,255,152,152,153,255,150,152,153,255,150,150,151,255,149,149,150,255,148,147,149,255,146,146,147,255,144,144,145,255, +144,143,144,255,142,142,142,255,140,140,140,255,138,138,137,255,137,136,136,255,135,134,134,255,132,131,131,255,131,130,129,255, +129,127,126,255,126,125,123,255,124,123,121,255,122,120,118,255,120,117,115,255, 90, 89, 88,255, 61, 61, 61,255, 60, 60, 60,255, +130,132,133,255,195,198,201,255,192,195,198,255,192,195,198,255,193,196,199,255,192,195,199,255,192,195,198,255,191,195,197,255, +191,194,197,255,191,193,197,255,190,193,196,255,191,193,196,255,190,193,196,255,190,192,195,255,190,192,195,255,189,191,195,255, +190,193,196,255,193,196,199,255,196,199,202,255,193,194,196,255,190,191,192,255,190,191,193,255,192,194,197,255,194,196,199,255, +194,197,200,255,193,196,199,255,192,195,198,255,188,191,194,255,184,187,190,255,179,182,184,255,175,177,179,255,169,171,173,255, +163,164,166,255,156,157,158,255,149,149,150,255,141,141,142,255,133,132,132,255,124,123,123,255,115,113,112,255,107,105,103,255, +102, 99, 97,255,100, 97, 94,255,100, 97, 95,255,102,100, 98,255,106,104,103,255,111,109,108,255,116,114,114,255,122,121,121,255, +129,128,129,255,136,136,137,255,142,143,144,255,149,150,151,255,156,157,158,255,161,163,164,255,165,166,167,255,166,167,169,255, +166,168,169,255,165,168,168,255,166,167,169,255,165,166,168,255,164,165,166,255,163,164,166,255,163,164,165,255,161,162,164,255, +161,162,163,255,160,161,163,255,159,160,161,255,158,159,161,255,157,158,160,255,156,157,158,255,155,156,158,255,155,155,157,255, +153,154,155,255,152,153,154,255,151,152,153,255,150,150,151,255,149,150,150,255,147,148,149,255,146,147,147,255,145,145,145,255, +143,143,143,255,142,142,142,255,141,141,140,255,138,138,138,255,137,136,136,255,135,135,134,255,133,132,131,255,131,130,129,255, +129,128,127,255,127,125,124,255,125,123,121,255,122,120,118,255,120,117,115,255, 90, 89, 88,255, 61, 61, 61,255, 60, 60, 60,255, +130,132,133,255,195,198,201,255,194,197,200,255,193,197,200,255,193,196,199,255,192,196,199,255,193,196,199,255,193,195,199,255, +192,195,198,255,191,195,197,255,192,195,198,255,191,194,197,255,191,194,197,255,190,193,196,255,189,192,195,255,190,193,196,255, +190,193,196,255,193,196,199,255,197,201,204,255,196,198,200,255,192,193,194,255,192,193,194,255,194,196,198,255,196,198,201,255, +197,200,203,255,196,199,202,255,193,196,199,255,190,193,196,255,185,188,191,255,181,183,186,255,175,177,180,255,170,172,173,255, +163,164,166,255,156,157,158,255,148,149,150,255,141,141,142,255,133,132,133,255,124,123,124,255,116,115,114,255,109,108,107,255, +105,102,100,255,102, 99, 98,255,101, 98, 96,255,102, 99, 97,255,102,101, 98,255,106,104,102,255,108,106,105,255,111,110,109,255, +115,112,112,255,119,118,118,255,124,123,124,255,131,130,131,255,138,138,139,255,146,147,148,255,152,153,155,255,158,159,161,255, +162,164,165,255,165,166,168,255,165,167,168,255,166,167,168,255,164,165,167,255,164,165,167,255,163,164,166,255,162,163,165,255, +162,163,164,255,161,162,163,255,160,161,162,255,159,160,161,255,158,159,160,255,157,158,159,255,156,157,158,255,155,156,157,255, +154,154,155,255,153,153,154,255,152,153,154,255,150,151,152,255,150,150,151,255,149,149,149,255,147,147,147,255,145,145,146,255, +144,143,144,255,142,142,142,255,141,141,141,255,139,139,138,255,137,137,136,255,136,135,134,255,133,132,132,255,132,130,129,255, +130,128,127,255,127,126,124,255,125,123,121,255,122,120,118,255,120,118,115,255, 90, 89, 87,255, 61, 61, 61,255, 60, 60, 60,255, +131,132,134,255,195,198,202,255,193,197,200,255,193,196,200,255,194,197,199,255,193,196,200,255,193,196,199,255,192,196,198,255, +192,195,198,255,192,195,198,255,191,194,197,255,191,194,197,255,191,194,197,255,191,194,196,255,190,193,196,255,190,193,196,255, +190,193,195,255,192,196,199,255,197,200,204,255,199,202,204,255,194,196,198,255,193,194,196,255,195,197,198,255,197,199,202,255, +198,201,204,255,198,201,204,255,195,198,202,255,192,195,198,255,187,190,193,255,183,185,188,255,177,179,181,255,172,174,175,255, +165,166,167,255,157,158,160,255,150,151,152,255,143,144,144,255,136,135,136,255,128,127,128,255,121,120,119,255,115,114,113,255, +110,108,107,255,107,105,103,255,105,103,101,255,103,101, 99,255,103,101, 99,255,104,101, 99,255,104,101,100,255,105,102,101,255, +107,105,103,255,109,107,106,255,112,110,109,255,115,113,113,255,121,120,120,255,127,127,127,255,135,134,135,255,142,143,143,255, +150,151,152,255,157,158,160,255,162,163,165,255,164,165,167,255,165,166,167,255,164,165,167,255,164,165,166,255,162,163,165,255, +162,163,164,255,161,162,164,255,160,161,162,255,159,160,162,255,158,159,161,255,157,158,159,255,156,157,159,255,156,156,157,255, +154,155,156,255,153,154,155,255,152,153,154,255,151,151,152,255,150,150,151,255,149,148,150,255,147,147,148,255,146,146,146,255, +145,144,145,255,143,143,143,255,142,141,141,255,139,139,138,255,138,137,136,255,136,135,134,255,134,133,132,255,132,131,130,255, +130,128,127,255,127,126,124,255,125,124,121,255,122,120,118,255,120,118,114,255, 90, 89, 87,255, 61, 61, 61,255, 60, 60, 60,255, +131,132,134,255,196,199,202,255,194,197,200,255,194,198,200,255,193,197,200,255,194,197,199,255,194,197,200,255,193,196,199,255, +192,195,199,255,192,196,198,255,192,194,198,255,192,194,198,255,191,195,197,255,190,193,197,255,191,194,196,255,191,194,196,255, +189,192,196,255,191,194,197,255,195,199,202,255,201,203,206,255,197,200,201,255,194,196,197,255,196,198,199,255,198,200,203,255, +199,202,205,255,199,202,205,255,198,201,204,255,194,198,201,255,190,193,196,255,185,187,190,255,180,182,184,255,175,177,178,255, +168,169,171,255,161,162,163,255,154,155,156,255,147,148,150,255,141,142,142,255,134,134,135,255,128,127,127,255,121,120,120,255, +116,115,115,255,113,112,111,255,110,108,107,255,108,106,104,255,105,104,103,255,105,103,101,255,104,102,100,255,104,101,100,255, +105,103,101,255,105,103,101,255,106,104,102,255,106,104,103,255,109,107,106,255,112,111,110,255,118,117,116,255,124,124,123,255, +133,132,133,255,141,142,143,255,151,152,153,255,157,158,160,255,162,163,164,255,163,164,166,255,164,165,167,255,162,164,165,255, +163,163,165,255,162,163,164,255,160,161,163,255,160,161,162,255,159,160,161,255,157,158,160,255,157,158,159,255,156,157,158,255, +154,155,156,255,154,154,155,255,153,152,154,255,151,152,152,255,150,151,152,255,148,149,149,255,148,148,148,255,146,146,147,255, +144,144,144,255,143,143,143,255,142,142,141,255,139,139,139,255,138,138,137,255,136,135,135,255,134,133,132,255,133,131,130,255, +130,129,127,255,127,126,124,255,126,124,122,255,122,120,118,255,120,118,114,255, 90, 89, 87,255, 61, 61, 61,255, 60, 60, 60,255, +131,133,134,255,196,200,203,255,195,198,201,255,194,198,201,255,195,198,200,255,194,197,200,255,194,197,200,255,193,196,200,255, +193,196,200,255,193,196,199,255,192,196,198,255,193,196,199,255,192,195,198,255,192,195,197,255,191,194,197,255,191,194,197,255, +191,194,196,255,191,194,197,255,194,197,200,255,199,202,205,255,200,203,205,255,196,198,200,255,196,198,200,255,198,200,203,255, +200,203,206,255,201,204,207,255,199,202,206,255,197,200,203,255,193,196,200,255,188,191,194,255,183,185,188,255,178,180,182,255, +172,174,175,255,165,166,168,255,159,160,162,255,153,154,155,255,147,147,149,255,141,142,142,255,134,135,135,255,129,129,129,255, +124,123,123,255,120,119,119,255,116,115,115,255,113,111,111,255,111,109,108,255,109,107,106,255,107,105,104,255,106,104,103,255, +106,104,102,255,104,102,100,255,103,101, 99,255,103,101, 99,255,104,102,100,255,105,103,101,255,107,105,104,255,111,109,108,255, +116,114,114,255,124,123,122,255,133,133,133,255,144,145,145,255,152,153,154,255,158,159,160,255,161,162,164,255,162,164,165,255, +162,164,165,255,162,163,165,255,161,162,163,255,160,161,163,255,159,160,162,255,158,159,160,255,157,158,159,255,156,157,158,255, +155,155,157,255,154,155,156,255,153,154,155,255,152,152,153,255,151,151,152,255,150,149,151,255,148,148,149,255,146,147,147,255, +145,145,146,255,144,143,143,255,142,142,142,255,140,139,139,255,138,138,137,255,136,135,135,255,134,133,132,255,133,131,130,255, +130,129,127,255,127,126,124,255,126,124,122,255,123,120,118,255,120,117,114,255, 90, 89, 87,255, 61, 61, 61,255, 60, 60, 60,255, +131,133,135,255,197,200,203,255,195,198,201,255,195,198,202,255,194,197,201,255,194,197,200,255,194,197,201,255,193,196,201,255, +193,196,200,255,194,197,200,255,193,196,199,255,192,195,199,255,193,196,198,255,192,195,198,255,191,194,197,255,191,194,197,255, +191,194,197,255,190,193,196,255,192,195,198,255,196,199,203,255,201,204,207,255,200,202,204,255,197,199,200,255,199,200,203,255, +201,203,206,255,201,205,208,255,201,204,208,255,199,202,205,255,195,199,202,255,191,194,197,255,186,189,192,255,182,184,187,255, +176,178,180,255,169,172,174,255,164,165,167,255,159,160,161,255,153,154,155,255,148,148,149,255,142,142,143,255,136,136,137,255, +132,131,132,255,128,127,128,255,124,123,123,255,120,119,119,255,117,116,115,255,115,114,113,255,113,111,110,255,111,108,107,255, +108,106,105,255,107,105,104,255,105,103,101,255,105,102,101,255,104,101, 99,255,102,100, 98,255,102, 99, 97,255,103,100, 99,255, +105,103,102,255,110,107,106,255,116,115,113,255,125,125,124,255,136,135,136,255,145,146,147,255,154,155,157,255,159,160,162,255, +162,163,164,255,162,163,165,255,161,162,163,255,160,161,163,255,160,161,162,255,158,159,160,255,157,158,160,255,157,157,159,255, +155,156,157,255,154,155,156,255,154,153,154,255,152,152,153,255,151,151,152,255,150,150,151,255,148,149,149,255,147,147,147,255, +146,146,145,255,144,144,144,255,143,142,142,255,140,140,139,255,139,138,138,255,137,136,135,255,134,133,132,255,132,131,130,255, +130,129,127,255,128,126,124,255,126,123,121,255,122,120,117,255,120,116,115,255, 90, 89, 87,255, 61, 61, 61,255, 60, 60, 60,255, +132,133,135,255,197,201,204,255,195,199,202,255,195,198,202,255,195,198,201,255,195,198,201,255,194,197,201,255,194,197,200,255, +194,197,201,255,193,197,200,255,194,197,199,255,193,196,199,255,192,195,200,255,193,196,198,255,192,195,198,255,191,194,197,255, +192,195,198,255,191,194,197,255,191,194,197,255,194,197,200,255,199,202,205,255,203,205,208,255,199,200,202,255,198,200,201,255, +201,203,205,255,203,205,208,255,202,206,209,255,201,204,208,255,198,201,205,255,195,198,201,255,190,193,196,255,186,188,191,255, +180,182,185,255,175,177,179,255,169,171,172,255,164,166,167,255,160,161,162,255,154,155,156,255,149,150,151,255,144,145,146,255, +139,139,140,255,135,135,136,255,131,131,132,255,128,127,128,255,124,123,123,255,121,120,120,255,119,118,117,255,116,114,113,255, +113,111,110,255,111,109,108,255,109,107,106,255,107,105,104,255,106,103,102,255,103,101, 99,255,101, 98, 96,255,100, 97, 95,255, +101, 98, 96,255,102, 99, 97,255,105,102,100,255,110,108,107,255,118,117,116,255,128,127,127,255,140,140,141,255,150,151,152,255, +158,159,160,255,161,161,163,255,161,163,164,255,161,162,163,255,160,161,163,255,158,159,161,255,158,159,160,255,157,158,159,255, +155,156,157,255,155,155,156,255,154,154,155,255,152,153,154,255,151,152,152,255,149,151,150,255,149,149,149,255,147,147,147,255, +145,145,145,255,144,144,144,255,143,143,142,255,140,140,139,255,139,138,138,255,137,136,135,255,134,133,132,255,132,131,130,255, +130,129,127,255,128,126,124,255,126,123,121,255,122,120,117,255,120,116,113,255, 90, 88, 87,255, 61, 61, 61,255, 60, 60, 60,255, +132,133,135,255,198,201,204,255,197,200,202,255,196,199,203,255,195,199,203,255,196,198,202,255,195,198,202,255,194,198,201,255, +194,197,201,255,195,198,201,255,194,197,201,255,194,197,200,255,193,196,199,255,192,195,200,255,193,196,199,255,192,195,199,255, +191,194,198,255,192,195,197,255,192,195,197,255,191,194,198,255,195,198,201,255,201,204,207,255,202,205,206,255,199,201,202,255, +200,202,203,255,202,204,207,255,203,206,209,255,203,206,209,255,201,204,208,255,198,201,204,255,194,197,200,255,190,192,195,255, +185,187,190,255,179,182,184,255,175,177,179,255,170,172,174,255,165,167,168,255,160,162,163,255,156,157,158,255,151,152,154,255, +147,147,148,255,143,143,144,255,139,139,140,255,135,135,136,255,132,132,132,255,129,128,128,255,125,125,125,255,123,122,121,255, +119,118,118,255,116,115,115,255,114,112,112,255,112,111,110,255,109,108,106,255,106,104,102,255,103,101, 99,255,101, 98, 96,255, +100, 97, 95,255, 99, 96, 94,255, 99, 96, 94,255,102, 99, 96,255,105,103,101,255,111,110,109,255,122,120,120,255,134,134,134,255, +147,147,148,255,155,156,158,255,160,161,163,255,161,162,164,255,160,161,163,255,159,160,161,255,158,159,160,255,157,158,159,255, +156,157,158,255,155,156,157,255,154,155,156,255,152,153,154,255,152,152,153,255,151,151,152,255,149,149,150,255,147,147,147,255, +146,146,146,255,144,144,144,255,143,142,142,255,141,140,139,255,139,138,138,255,137,136,135,255,135,134,133,255,133,132,130,255, +130,129,127,255,128,126,124,255,126,124,121,255,122,120,117,255,119,116,113,255, 90, 88, 86,255, 61, 61, 61,255, 60, 60, 60,255, +132,134,135,255,198,201,204,255,197,199,203,255,197,200,203,255,196,200,202,255,196,199,202,255,195,198,202,255,195,199,201,255, +195,198,201,255,194,197,201,255,195,198,200,255,194,197,200,255,194,197,200,255,193,196,199,255,193,196,199,255,193,196,199,255, +192,195,199,255,191,194,198,255,192,195,198,255,192,195,197,255,192,195,199,255,197,200,204,255,202,205,208,255,202,204,206,255, +199,201,202,255,201,202,204,255,203,205,208,255,204,206,210,255,203,206,209,255,200,204,207,255,197,200,204,255,194,197,200,255, +190,192,195,255,185,188,190,255,180,182,185,255,175,178,180,255,171,173,175,255,167,169,170,255,162,164,166,255,158,160,161,255, +154,156,157,255,151,152,153,255,147,147,148,255,143,143,144,255,139,139,140,255,136,136,137,255,133,133,133,255,130,129,129,255, +126,125,126,255,123,122,122,255,120,118,118,255,117,116,116,255,114,113,112,255,111,109,108,255,107,105,104,255,104,101, 99,255, +101, 98, 96,255,100, 97, 95,255, 99, 96, 93,255, 98, 94, 92,255, 99, 95, 93,255,101, 98, 96,255,106,105,102,255,116,114,114,255, +129,128,128,255,143,144,145,255,155,155,156,255,159,160,162,255,161,162,163,255,159,160,162,255,159,159,161,255,158,158,160,255, +156,157,158,255,155,156,157,255,155,155,156,255,153,153,154,255,152,152,153,255,151,150,152,255,149,149,150,255,148,148,148,255, +147,147,147,255,145,145,144,255,143,142,142,255,141,140,140,255,140,139,138,255,137,136,135,255,135,134,133,255,133,132,130,255, +130,129,127,255,128,126,124,255,125,123,121,255,122,119,117,255,119,115,112,255, 90, 87, 86,255, 61, 61, 61,255, 60, 60, 60,255, +132,134,135,255,199,202,205,255,196,200,204,255,196,199,204,255,197,199,203,255,197,199,203,255,196,200,202,255,195,199,203,255, +196,199,201,255,195,198,202,255,194,197,202,255,195,198,200,255,194,197,201,255,193,196,200,255,194,197,200,255,193,196,200,255, +193,196,198,255,192,195,199,255,191,194,198,255,191,194,197,255,191,194,198,255,194,197,200,255,198,201,205,255,203,205,209,255, +201,203,205,255,200,202,202,255,201,203,205,255,203,206,208,255,204,207,210,255,203,206,209,255,200,203,207,255,197,200,204,255, +194,197,200,255,190,193,196,255,186,188,191,255,181,184,186,255,177,179,181,255,173,175,177,255,169,171,173,255,165,167,168,255, +162,163,165,255,158,159,161,255,154,156,157,255,151,152,153,255,146,147,148,255,143,143,144,255,140,141,141,255,137,137,137,255, +133,133,134,255,130,130,130,255,127,126,126,255,123,122,122,255,120,119,119,255,116,114,114,255,112,110,110,255,108,106,105,255, +105,102,101,255,102, 99, 97,255,100, 97, 95,255, 99, 95, 92,255, 97, 93, 90,255, 97, 93, 90,255, 98, 95, 92,255,104,101, 98,255, +112,110,108,255,126,125,125,255,141,141,142,255,153,154,154,255,158,159,160,255,160,161,162,255,159,160,161,255,158,159,160,255, +156,157,158,255,156,156,157,255,155,155,156,255,153,153,154,255,152,153,153,255,151,152,152,255,149,150,150,255,148,148,148,255, +146,146,146,255,145,145,145,255,143,143,142,255,141,140,140,255,140,139,138,255,137,136,135,255,135,133,132,255,133,132,130,255, +130,129,127,255,127,126,124,255,125,123,120,255,122,119,116,255,119,114,111,255, 89, 87, 85,255, 61, 61, 61,255, 60, 60, 60,255, +132,134,136,255,199,202,206,255,198,200,204,255,197,201,203,255,196,200,204,255,196,199,203,255,197,199,203,255,196,200,202,255, +196,199,202,255,196,199,202,255,195,198,201,255,194,197,201,255,195,198,201,255,194,197,201,255,193,196,200,255,194,197,199,255, +193,196,200,255,193,196,199,255,192,195,199,255,192,195,198,255,191,194,197,255,192,195,198,255,194,197,200,255,199,202,205,255, +203,206,209,255,202,203,205,255,200,202,203,255,202,203,205,255,203,205,208,255,204,207,210,255,203,206,209,255,200,203,207,255, +197,200,204,255,194,197,201,255,191,193,196,255,187,189,192,255,182,185,188,255,179,181,183,255,175,177,179,255,171,173,175,255, +167,170,171,255,165,166,167,255,161,162,164,255,158,159,160,255,154,156,157,255,151,152,153,255,148,149,150,255,144,145,146,255, +141,141,142,255,137,137,138,255,134,134,134,255,130,130,131,255,127,126,126,255,123,122,122,255,118,117,117,255,114,112,112,255, +110,108,107,255,106,103,102,255,104,101, 98,255,101, 97, 95,255, 97, 94, 92,255, 96, 92, 89,255, 96, 92, 88,255, 96, 93, 90,255, +100, 98, 95,255,110,107,106,255,125,124,123,255,140,140,141,255,152,153,153,255,158,158,160,255,159,160,161,255,158,159,160,255, +157,158,159,255,156,157,158,255,155,156,156,255,153,154,155,255,152,153,153,255,152,152,152,255,150,150,150,255,148,148,148,255, +146,146,146,255,145,145,145,255,143,143,142,255,141,141,140,255,140,139,138,255,138,136,135,255,135,133,132,255,133,132,130,255, +131,129,127,255,127,125,123,255,125,123,120,255,121,118,115,255,117,114,110,255, 89, 87, 84,255, 61, 61, 61,255, 60, 60, 60,255, +133,134,136,255,199,202,206,255,197,201,204,255,198,200,204,255,197,201,203,255,197,200,204,255,196,199,203,255,197,199,203,255, +196,199,202,255,196,199,202,255,196,199,201,255,195,198,202,255,195,198,201,255,195,198,200,255,194,197,200,255,193,196,200,255, +194,197,199,255,193,196,199,255,192,195,199,255,193,196,199,255,192,195,198,255,191,194,197,255,192,195,198,255,194,197,201,255, +198,202,205,255,203,205,208,255,202,204,206,255,200,201,202,255,201,203,205,255,203,205,207,255,204,206,209,255,202,205,208,255, +200,203,207,255,198,201,204,255,195,198,201,255,192,195,198,255,189,191,194,255,185,187,190,255,181,183,186,255,177,179,181,255, +174,176,178,255,171,173,175,255,168,169,171,255,164,166,168,255,161,163,164,255,158,160,161,255,155,156,158,255,152,153,153,255, +148,149,150,255,145,146,147,255,141,141,142,255,138,138,138,255,134,134,134,255,130,129,130,255,126,125,125,255,121,120,120,255, +116,115,114,255,112,110,109,255,108,106,104,255,104,102, 99,255,100, 97, 95,255, 98, 94, 91,255, 95, 92, 88,255, 94, 90, 86,255, + 94, 91, 87,255, 99, 96, 93,255,110,108,105,255,124,123,122,255,141,140,141,255,153,154,155,255,158,159,160,255,159,159,161,255, +157,158,159,255,156,157,158,255,154,156,157,255,154,154,155,255,153,153,154,255,152,152,151,255,150,150,150,255,148,148,148,255, +146,146,146,255,145,145,145,255,144,143,142,255,141,141,140,255,140,139,138,255,138,137,136,255,135,134,132,255,133,131,130,255, +130,128,126,255,127,125,123,255,125,122,119,255,121,118,115,255,117,113,109,255, 89, 86, 84,255, 61, 61, 61,255, 60, 60, 60,255, +133,134,136,255,200,203,207,255,199,202,204,255,198,202,204,255,197,201,205,255,198,201,203,255,197,200,203,255,196,200,203,255, +196,200,203,255,197,200,202,255,196,199,203,255,195,198,201,255,196,199,201,255,195,198,202,255,195,198,200,255,194,197,201,255, +193,196,200,255,194,197,199,255,193,196,200,255,192,195,198,255,193,196,199,255,192,195,198,255,191,194,197,255,192,195,198,255, +193,196,200,255,198,201,204,255,202,205,208,255,202,204,206,255,199,201,202,255,201,202,203,255,202,204,206,255,203,206,209,255, +202,205,208,255,201,204,207,255,198,201,204,255,195,198,202,255,194,196,200,255,190,193,196,255,187,190,192,255,184,186,189,255, +180,182,185,255,177,179,181,255,174,176,178,255,171,173,175,255,168,170,171,255,166,167,169,255,163,164,165,255,159,160,162,255, +156,157,158,255,152,153,154,255,148,150,151,255,145,145,146,255,141,141,142,255,137,137,138,255,133,132,133,255,128,128,128,255, +124,123,123,255,118,117,117,255,113,112,111,255,109,107,106,255,105,102,100,255,101, 98, 95,255, 97, 94, 91,255, 94, 90, 87,255, + 93, 89, 85,255, 94, 90, 85,255, 99, 96, 92,255,109,106,104,255,125,124,123,255,144,144,144,255,154,155,155,255,157,158,159,255, +157,158,159,255,156,157,158,255,156,156,157,255,154,154,155,255,153,153,154,255,152,152,153,255,150,150,151,255,148,148,148,255, +147,146,146,255,146,145,145,255,144,143,143,255,142,141,140,255,140,139,138,255,137,136,135,255,135,134,132,255,133,131,130,255, +130,128,126,255,127,125,122,255,124,122,119,255,120,117,113,255,113,110,104,255, 74, 72, 71,255, 61, 61, 61,255, 60, 60, 60,255, +133,135,136,255,200,203,207,255,198,202,205,255,199,201,205,255,198,202,204,255,198,201,204,255,198,201,204,255,197,201,203,255, +196,200,204,255,196,200,203,255,197,200,202,255,196,199,202,255,195,198,202,255,196,199,201,255,195,198,201,255,195,198,201,255, +194,197,201,255,193,196,200,255,194,197,200,255,193,196,200,255,192,195,198,255,193,195,199,255,191,194,198,255,191,194,197,255, +192,195,198,255,193,196,199,255,196,199,202,255,201,203,206,255,202,204,206,255,200,202,202,255,200,202,202,255,201,203,205,255, +202,205,207,255,202,205,207,255,201,204,206,255,199,202,205,255,196,200,202,255,194,197,200,255,193,195,198,255,189,192,194,255, +186,189,192,255,183,185,187,255,180,182,184,255,177,179,181,255,175,176,178,255,172,174,175,255,169,171,172,255,166,167,168,255, +163,164,166,255,159,161,162,255,156,157,158,255,152,154,155,255,148,149,150,255,144,145,146,255,140,140,141,255,136,136,136,255, +131,131,131,255,126,125,125,255,120,119,119,255,115,114,113,255,110,109,108,255,106,104,101,255,101, 99, 96,255, 98, 94, 90,255, + 94, 90, 86,255, 92, 88, 83,255, 95, 90, 86,255, 99, 95, 91,255,110,108,105,255,129,128,128,255,147,147,147,255,156,157,157,255, +157,158,159,255,157,157,158,255,156,155,157,255,154,154,155,255,153,153,154,255,151,152,153,255,150,150,151,255,149,148,148,255, +147,146,146,255,146,145,145,255,144,143,143,255,142,141,140,255,140,139,138,255,137,136,135,255,135,134,132,255,133,131,130,255, +130,128,126,255,127,124,122,255,123,121,117,255,119,115,111,255,104, 99, 94,255, 37, 36, 36,255, 61, 61, 61,255, 60, 60, 60,255, +133,135,136,255,201,204,207,255,199,203,206,255,198,202,205,255,199,201,205,255,198,201,204,255,198,201,204,255,198,200,203,255, +197,201,204,255,196,200,204,255,196,199,203,255,196,199,202,255,196,199,202,255,195,198,201,255,195,198,202,255,195,198,201,255, +195,198,200,255,194,197,201,255,193,196,200,255,194,197,199,255,193,196,199,255,192,196,198,255,192,195,198,255,191,195,197,255, +192,194,198,255,191,194,197,255,191,194,197,255,194,197,200,255,198,201,204,255,201,204,206,255,201,202,204,255,199,200,200,255, +199,201,201,255,201,203,204,255,202,204,206,255,200,204,206,255,199,202,205,255,198,200,203,255,195,198,201,255,194,197,200,255, +191,194,197,255,189,191,194,255,185,188,191,255,183,185,188,255,180,182,185,255,177,179,181,255,175,177,179,255,173,174,176,255, +169,171,173,255,166,168,169,255,163,164,166,255,160,161,163,255,156,156,158,255,152,153,154,255,147,148,149,255,143,143,145,255, +139,139,140,255,134,133,133,255,128,127,128,255,123,122,121,255,116,115,115,255,111,110,108,255,106,104,102,255,102, 99, 96,255, + 97, 94, 90,255, 94, 89, 85,255, 93, 88, 84,255, 93, 88, 84,255, 99, 96, 92,255,115,112,111,255,136,136,135,255,151,152,152,255, +157,157,158,255,157,157,158,255,156,156,157,255,154,155,155,255,153,154,154,255,152,153,153,255,150,150,150,255,149,149,149,255, +147,147,146,255,145,145,144,255,144,143,143,255,142,141,140,255,140,139,138,255,137,136,135,255,135,134,132,255,132,131,129,255, +129,127,125,255,126,124,120,255,123,119,116,255,119,115,110,255, 53, 51, 48,255, 25, 25, 25,255, 62, 62, 62,255, 60, 60, 60,255, +133,135,137,255,201,204,207,255,200,202,205,255,200,203,205,255,199,202,205,255,198,202,205,255,199,202,204,255,198,201,205,255, +198,200,203,255,198,200,204,255,197,201,203,255,196,199,203,255,197,200,202,255,196,199,203,255,195,198,201,255,196,199,202,255, +195,198,202,255,195,198,200,255,195,197,201,255,194,197,200,255,194,196,200,255,193,195,199,255,193,195,199,255,192,194,198,255, +192,195,198,255,190,193,196,255,190,193,196,255,190,193,196,255,193,196,199,255,196,199,202,255,199,202,204,255,199,202,204,255, +198,200,201,255,198,199,199,255,199,201,202,255,200,202,203,255,200,202,204,255,199,201,204,255,198,201,203,255,197,200,203,255, +195,197,200,255,193,196,199,255,191,194,197,255,189,191,194,255,186,188,191,255,184,186,188,255,181,183,185,255,178,180,182,255, +176,178,179,255,173,175,176,255,170,171,173,255,167,168,170,255,163,165,166,255,159,160,162,255,155,156,157,255,150,151,152,255, +145,146,147,255,141,141,141,255,136,136,136,255,131,130,130,255,124,123,123,255,118,116,116,255,112,110,109,255,106,104,102,255, +102, 99, 96,255, 97, 93, 89,255, 93, 89, 84,255, 91, 87, 82,255, 94, 89, 84,255,103,100, 95,255,124,121,120,255,142,142,142,255, +154,154,155,255,157,158,158,255,156,157,157,255,154,155,155,255,154,154,154,255,153,153,153,255,150,150,150,255,149,149,149,255, +147,147,146,255,145,145,144,255,144,143,143,255,141,140,140,255,140,139,138,255,137,136,135,255,134,133,131,255,132,130,128,255, +129,127,124,255,125,122,119,255,122,118,114,255,106,102, 97,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 60, 60, 60,255, +133,135,137,255,201,204,208,255,200,202,206,255,199,202,206,255,200,203,205,255,199,202,206,255,198,202,205,255,199,202,204,255, +198,201,205,255,197,200,204,255,198,200,204,255,197,200,204,255,196,200,203,255,197,200,202,255,196,199,203,255,195,198,202,255, +196,199,201,255,194,197,201,255,194,198,200,255,195,196,201,255,193,197,200,255,193,196,200,255,192,195,198,255,193,195,199,255, +192,195,198,255,192,194,198,255,191,193,197,255,191,194,197,255,190,193,196,255,191,194,197,255,192,195,199,255,195,198,201,255, +199,201,204,255,200,201,203,255,198,199,199,255,197,198,199,255,198,199,200,255,198,201,201,255,199,201,203,255,198,201,203,255, +198,199,203,255,196,198,201,255,194,197,200,255,193,195,198,255,191,193,196,255,189,191,194,255,187,188,192,255,184,186,188,255, +181,183,185,255,178,180,183,255,176,178,180,255,173,174,176,255,170,171,173,255,166,167,169,255,161,163,164,255,157,158,160,255, +152,153,155,255,148,148,149,255,143,143,144,255,137,138,138,255,132,131,131,255,125,124,124,255,119,117,116,255,112,111,109,255, +107,104,102,255,101, 97, 95,255, 96, 92, 88,255, 93, 87, 82,255, 91, 87, 80,255, 96, 91, 86,255,110,107,105,255,132,131,130,255, +151,151,151,255,156,156,157,255,156,157,157,255,155,155,156,255,154,154,154,255,152,152,153,255,150,150,150,255,149,149,149,255, +147,147,146,255,145,145,145,255,144,143,143,255,141,140,139,255,140,139,137,255,137,136,134,255,134,133,131,255,132,130,127,255, +128,126,123,255,124,121,118,255,119,115,110,255, 36, 34, 32,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 60, 60, 60,255, +134,135,137,255,202,205,208,255,199,203,207,255,199,202,206,255,199,202,206,255,199,203,205,255,199,202,206,255,198,201,205,255, +198,202,204,255,198,201,205,255,197,200,203,255,197,201,204,255,197,200,204,255,196,199,203,255,196,199,202,255,195,199,203,255, +195,198,201,255,195,198,201,255,194,197,201,255,194,197,201,255,194,197,200,255,194,197,200,255,193,195,199,255,192,196,198,255, +192,195,199,255,191,194,197,255,191,194,197,255,190,193,196,255,191,193,196,255,190,192,195,255,190,193,196,255,190,193,196,255, +192,195,198,255,195,198,201,255,196,199,201,255,197,199,201,255,197,199,200,255,196,197,197,255,197,197,197,255,197,198,199,255, +198,199,201,255,197,200,202,255,196,199,202,255,196,198,200,255,194,197,199,255,193,195,198,255,191,193,196,255,189,191,194,255, +186,189,191,255,184,186,189,255,181,184,186,255,178,180,182,255,176,178,180,255,172,174,176,255,169,170,172,255,164,165,167,255, +160,161,162,255,155,156,157,255,150,150,151,255,145,145,146,255,139,139,139,255,133,133,133,255,126,125,125,255,118,117,116,255, +112,110,108,255,105,103,100,255,100, 96, 93,255, 95, 90, 85,255, 91, 87, 81,255, 92, 86, 80,255,100, 97, 92,255,121,120,118,255, +145,145,144,255,154,154,155,255,157,157,158,255,155,155,156,255,154,154,155,255,151,151,153,255,150,150,150,255,149,149,149,255, +147,146,146,255,146,145,144,255,144,143,142,255,141,140,139,255,139,138,137,255,136,135,134,255,134,132,129,255,131,129,126,255, +127,125,122,255,124,120,116,255, 88, 86, 82,255, 4, 4, 4,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +134,135,137,255,202,205,208,255,201,204,207,255,200,204,206,255,199,203,206,255,199,202,206,255,200,202,205,255,199,203,205,255, +198,201,205,255,199,202,204,255,198,201,205,255,197,200,203,255,198,201,203,255,197,200,204,255,197,200,202,255,196,199,202,255, +195,198,203,255,196,199,201,255,195,198,202,255,194,197,201,255,195,198,201,255,194,197,200,255,194,196,200,255,193,195,199,255, +192,196,198,255,192,195,198,255,191,195,197,255,191,194,197,255,191,194,197,255,190,193,196,255,189,193,195,255,189,191,195,255, +189,191,195,255,189,192,195,255,190,193,196,255,192,195,198,255,196,198,201,255,196,199,202,255,196,197,199,255,194,196,196,255, +195,196,195,255,195,197,196,255,196,198,198,255,196,198,200,255,196,198,201,255,196,198,200,255,194,196,199,255,193,195,198,255, +191,194,197,255,189,192,194,255,187,189,191,255,185,187,189,255,181,183,186,255,178,180,182,255,175,177,179,255,171,172,174,255, +167,168,170,255,161,163,165,255,157,158,159,255,152,153,154,255,146,146,147,255,140,140,140,255,133,133,133,255,126,125,124,255, +118,117,115,255,112,110,108,255,105,102, 98,255, 98, 94, 90,255, 94, 89, 83,255, 91, 86, 79,255, 94, 90, 84,255,113,109,107,255, +138,136,136,255,152,151,152,255,155,155,156,255,155,155,156,255,154,154,155,255,152,152,153,255,151,150,150,255,150,149,149,255, +147,146,146,255,146,145,144,255,144,143,142,255,141,140,139,255,139,138,136,255,136,134,132,255,133,131,129,255,130,127,124,255, +126,123,119,255,119,115,110,255, 38, 36, 34,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +134,135,137,255,202,205,209,255,201,203,207,255,201,203,207,255,200,204,206,255,199,203,207,255,199,203,206,255,200,202,205,255, +199,202,206,255,198,201,205,255,199,202,205,255,198,201,204,255,197,200,204,255,198,201,203,255,196,199,203,255,197,200,203,255, +196,199,203,255,195,198,202,255,196,199,201,255,195,198,202,255,194,197,200,255,194,197,201,255,193,196,199,255,193,196,200,255, +193,196,199,255,192,196,198,255,192,195,198,255,192,195,198,255,191,193,197,255,191,193,197,255,190,193,196,255,189,192,195,255, +189,191,195,255,188,191,194,255,188,190,193,255,188,191,194,255,189,192,195,255,190,193,196,255,191,194,197,255,193,195,198,255, +195,197,198,255,195,197,197,255,195,196,196,255,195,196,196,255,196,197,197,255,196,198,199,255,196,198,199,255,196,198,200,255, +194,197,199,255,194,195,198,255,191,194,196,255,190,192,195,255,187,189,192,255,184,186,188,255,181,183,185,255,177,178,180,255, +173,174,176,255,168,170,172,255,164,165,167,255,158,160,161,255,153,153,154,255,147,147,148,255,141,141,141,255,133,132,133,255, +125,124,123,255,117,115,115,255,110,107,105,255,102, 99, 96,255, 97, 92, 87,255, 91, 87, 81,255, 92, 87, 80,255,105,102, 98,255, +131,130,128,255,150,150,151,255,157,156,158,255,155,156,156,255,154,154,154,255,153,153,153,255,151,151,151,255,149,148,148,255, +147,146,147,255,146,145,144,255,144,143,141,255,141,140,138,255,139,137,135,255,136,134,132,255,132,130,128,255,128,126,123,255, +126,123,118,255, 81, 78, 75,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +134,136,137,255,203,206,209,255,200,204,208,255,201,203,207,255,201,203,206,255,200,204,207,255,199,203,207,255,199,203,206,255, +199,202,205,255,198,201,206,255,198,201,205,255,198,201,205,255,198,201,204,255,197,200,204,255,197,200,203,255,197,200,203,255, +196,199,203,255,196,199,202,255,196,199,202,255,195,198,202,255,194,197,201,255,195,198,200,255,194,196,200,255,193,197,199,255, +193,196,199,255,192,196,198,255,192,195,198,255,191,194,197,255,191,194,197,255,190,194,196,255,191,193,196,255,189,193,196,255, +189,192,195,255,189,192,195,255,188,190,193,255,187,191,194,255,188,190,193,255,187,189,192,255,187,189,192,255,188,190,193,255, +190,192,195,255,192,194,197,255,193,195,198,255,195,197,199,255,196,197,197,255,195,197,196,255,196,197,197,255,197,198,198,255, +196,198,200,255,196,198,200,255,195,197,200,255,194,196,199,255,192,194,197,255,189,192,194,255,186,188,191,255,183,185,187,255, +179,180,183,255,175,176,178,255,170,172,174,255,165,166,168,255,160,161,162,255,154,155,156,255,147,147,148,255,140,140,140,255, +132,131,132,255,124,122,121,255,115,113,112,255,107,105,101,255, 99, 95, 92,255, 94, 89, 83,255, 91, 86, 78,255,101, 96, 91,255, +127,124,123,255,150,150,150,255,156,157,157,255,155,156,156,255,154,154,154,255,153,153,153,255,151,151,150,255,149,148,148,255, +147,146,146,255,145,144,143,255,143,142,141,255,140,139,138,255,138,137,135,255,135,133,131,255,131,128,126,255,128,125,122,255, +115,112,106,255, 3, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +134,136,138,255,203,206,209,255,201,205,207,255,201,204,207,255,201,203,208,255,201,203,206,255,200,204,206,255,199,203,207,255, +200,203,206,255,199,202,205,255,198,201,204,255,197,200,204,255,196,200,203,255,194,197,200,255,194,197,200,255,193,196,199,255, +193,196,199,255,193,196,199,255,194,197,200,255,194,197,200,255,194,197,200,255,194,198,201,255,194,196,200,255,193,197,199,255, +194,197,200,255,193,195,199,255,193,196,199,255,192,195,198,255,192,194,197,255,191,193,196,255,191,194,197,255,190,192,195,255, +190,192,195,255,189,191,194,255,189,191,194,255,188,191,194,255,188,190,193,255,186,189,192,255,187,188,191,255,186,188,191,255, +186,188,191,255,186,188,191,255,187,189,192,255,190,192,195,255,194,196,199,255,196,198,200,255,197,198,199,255,197,198,198,255, +197,198,198,255,197,199,200,255,198,199,200,255,197,199,201,255,195,197,200,255,193,196,198,255,192,194,197,255,189,191,194,255, +185,187,190,255,181,183,185,255,176,178,180,255,172,173,175,255,166,167,169,255,161,162,163,255,154,155,156,255,147,147,148,255, +139,139,139,255,130,129,128,255,122,120,118,255,112,110,108,255,103,100, 96,255, 96, 91, 86,255, 91, 86, 79,255, 97, 93, 86,255, +125,123,121,255,151,150,150,255,156,157,157,255,155,156,156,255,154,154,154,255,153,153,152,255,151,151,150,255,149,148,148,255, +147,146,145,255,145,144,143,255,142,141,140,255,140,138,137,255,137,135,133,255,134,132,129,255,130,128,125,255,125,121,116,255, + 34, 32, 31,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +134,136,138,255,203,206,210,255,202,205,208,255,202,205,207,255,201,204,207,255,201,204,207,255,201,203,207,255,200,204,207,255, +199,202,206,255,197,200,203,255,195,198,201,255,194,197,199,255,191,194,197,255,189,192,195,255,188,191,194,255,186,189,192,255, +186,188,192,255,186,189,191,255,187,189,192,255,188,191,194,255,190,193,196,255,192,195,199,255,194,196,200,255,194,196,200,255, +194,197,200,255,194,196,200,255,192,196,198,255,193,196,199,255,192,194,197,255,191,194,197,255,191,194,197,255,190,193,196,255, +190,193,196,255,190,192,195,255,188,191,194,255,189,190,193,255,188,191,193,255,187,189,192,255,186,189,191,255,186,189,191,255, +185,188,190,255,185,187,190,255,184,186,189,255,185,187,190,255,186,189,191,255,189,191,194,255,192,195,197,255,196,199,201,255, +198,200,200,255,198,199,199,255,197,199,200,255,198,200,201,255,198,199,202,255,197,199,201,255,195,197,200,255,193,195,198,255, +190,193,195,255,187,189,191,255,182,184,187,255,178,179,181,255,172,174,175,255,167,168,170,255,161,162,163,255,154,154,155,255, +145,145,146,255,136,136,135,255,127,126,125,255,117,115,114,255,108,104,102,255, 98, 94, 89,255, 92, 87, 80,255, 96, 91, 84,255, +127,124,122,255,152,152,152,255,157,158,158,255,155,156,156,255,154,154,154,255,153,153,151,255,151,150,150,255,149,148,148,255, +147,146,145,255,144,143,142,255,142,141,139,255,139,138,136,255,136,134,132,255,132,130,127,255,129,126,122,255, 80, 77, 73,255, + 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +135,136,138,255,203,207,210,255,201,204,209,255,202,205,208,255,202,205,207,255,202,205,207,255,201,204,207,255,200,203,207,255, +198,201,204,255,195,198,201,255,191,194,197,255,189,191,193,255,185,187,190,255,182,184,187,255,180,183,185,255,178,180,183,255, +177,179,181,255,175,178,180,255,175,177,180,255,176,179,181,255,178,181,183,255,182,184,187,255,186,188,191,255,188,191,194,255, +191,193,196,255,191,194,197,255,192,195,198,255,193,195,198,255,192,194,197,255,192,194,197,255,191,194,197,255,191,194,197,255, +190,193,196,255,190,192,195,255,188,191,194,255,189,190,193,255,188,191,194,255,187,189,192,255,186,189,192,255,187,188,192,255, +185,188,190,255,185,187,190,255,185,187,190,255,184,186,189,255,184,186,188,255,184,186,189,255,186,188,191,255,189,191,194,255, +194,197,200,255,199,201,203,255,199,200,201,255,198,199,200,255,198,199,201,255,198,200,202,255,198,200,202,255,197,199,201,255, +194,197,199,255,192,194,196,255,188,190,192,255,184,185,187,255,178,180,182,255,173,175,176,255,167,169,170,255,161,162,163,255, +152,153,154,255,143,143,143,255,134,133,133,255,123,122,120,255,113,110,108,255,102, 98, 94,255, 93, 88, 81,255, 96, 90, 83,255, +131,130,128,255,154,154,154,255,157,158,158,255,155,155,155,255,154,154,154,255,153,153,152,255,150,150,149,255,149,148,147,255, +147,146,145,255,144,143,142,255,141,140,138,255,139,137,135,255,135,133,131,255,131,128,126,255,120,116,111,255, 7, 7, 6,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +135,136,138,255,204,207,210,255,202,205,209,255,201,204,208,255,201,204,208,255,202,205,209,255,201,204,208,255,199,202,206,255, +196,198,201,255,192,194,197,255,187,190,193,255,183,186,188,255,180,183,185,255,177,179,182,255,174,176,179,255,172,174,177,255, +170,172,174,255,167,169,171,255,166,168,170,255,166,168,170,255,166,168,170,255,168,170,172,255,171,173,175,255,174,177,179,255, +179,181,183,255,183,186,188,255,187,189,192,255,190,192,195,255,191,194,197,255,191,194,197,255,192,194,197,255,190,193,196,255, +191,193,196,255,190,193,196,255,189,191,194,255,188,191,194,255,189,190,194,255,187,190,193,255,187,189,192,255,187,188,192,255, +186,188,191,255,186,188,190,255,185,187,190,255,184,186,189,255,184,186,188,255,182,185,187,255,183,185,187,255,184,186,188,255, +186,189,191,255,192,195,198,255,199,202,204,255,201,202,204,255,200,201,202,255,200,201,201,255,200,201,203,255,199,201,203,255, +198,200,202,255,196,198,201,255,193,195,198,255,189,191,194,255,185,187,189,255,179,181,183,255,173,174,176,255,166,167,169,255, +159,160,161,255,150,150,150,255,141,140,139,255,129,128,127,255,117,115,113,255,105,101, 97,255, 94, 88, 81,255,100, 94, 85,255, +139,138,137,255,156,157,157,255,157,157,157,255,155,155,155,255,154,154,153,255,151,151,151,255,150,149,149,255,148,147,146,255, +145,144,143,255,143,142,140,255,140,139,137,255,136,134,132,255,134,131,128,255,129,126,121,255, 20, 19, 18,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +135,136,138,255,204,207,210,255,203,206,208,255,202,205,209,255,201,205,209,255,202,205,209,255,202,205,208,255,198,201,204,255, +194,196,199,255,190,192,195,255,186,188,191,255,182,184,186,255,178,181,183,255,175,177,179,255,171,174,176,255,168,170,172,255, +166,168,170,255,163,164,166,255,160,161,163,255,158,160,162,255,158,159,160,255,158,159,161,255,159,161,162,255,162,163,165,255, +165,167,169,255,169,171,173,255,174,176,178,255,179,181,183,255,183,185,188,255,186,189,191,255,188,190,193,255,189,191,194,255, +189,192,195,255,189,192,195,255,190,192,195,255,189,192,195,255,189,191,194,255,187,190,193,255,187,190,192,255,186,189,192,255, +186,189,191,255,186,188,191,255,185,186,190,255,184,187,189,255,183,186,188,255,183,186,188,255,182,184,186,255,182,184,186,255, +182,184,187,255,185,187,190,255,192,195,198,255,199,203,205,255,202,204,206,255,201,203,204,255,201,202,203,255,201,202,204,255, +200,202,204,255,198,201,203,255,196,199,201,255,193,196,198,255,189,191,194,255,185,187,189,255,179,181,183,255,173,174,176,255, +164,165,167,255,155,156,157,255,146,145,145,255,134,133,133,255,122,120,118,255,108,105,101,255, 94, 88, 81,255,111,106,100,255, +150,150,149,255,157,158,158,255,157,157,157,255,155,155,155,255,154,153,153,255,152,151,151,255,150,149,148,255,148,146,146,255, +145,144,143,255,143,141,139,255,139,137,135,255,136,134,130,255,130,127,122,255, 49, 47, 45,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +135,136,138,255,204,207,210,255,202,205,209,255,203,206,209,255,202,206,209,255,203,206,208,255,202,205,208,255,198,201,203,255, +193,195,198,255,189,191,193,255,185,187,190,255,181,183,186,255,178,180,182,255,175,177,179,255,172,174,176,255,168,170,172,255, +165,167,169,255,161,162,164,255,158,159,161,255,156,156,159,255,153,155,156,255,153,154,155,255,152,153,155,255,153,154,156,255, +155,156,157,255,157,158,159,255,160,161,162,255,164,166,167,255,169,171,172,255,172,174,176,255,176,178,180,255,179,182,184,255, +182,185,187,255,185,187,190,255,187,190,193,255,188,191,193,255,188,191,194,255,188,190,193,255,187,190,193,255,187,189,192,255, +186,189,191,255,186,188,191,255,185,187,190,255,184,186,189,255,184,186,189,255,184,186,188,255,182,184,186,255,181,183,187,255, +181,183,186,255,182,184,186,255,186,188,190,255,194,197,200,255,202,204,207,255,203,205,207,255,202,204,206,255,201,203,205,255, +202,204,206,255,201,203,206,255,200,202,205,255,198,199,202,255,194,196,199,255,189,192,194,255,184,186,188,255,177,179,181,255, +170,171,172,255,161,161,162,255,150,150,151,255,139,139,138,255,126,124,122,255,111,108,104,255,100, 94, 87,255,135,133,130,255, +157,157,157,255,157,157,158,255,157,157,156,255,155,154,154,255,153,152,152,255,152,151,150,255,149,148,147,255,147,146,144,255, +145,143,141,255,141,140,137,255,136,135,132,255,135,132,127,255, 81, 79, 76,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +135,136,138,255,204,207,211,255,202,206,208,255,203,206,209,255,203,206,208,255,203,206,210,255,203,205,208,255,198,201,203,255, +193,195,198,255,189,191,193,255,185,187,190,255,182,184,186,255,178,180,182,255,175,177,179,255,171,173,176,255,168,170,172,255, +165,166,168,255,161,163,164,255,157,159,160,255,154,156,157,255,153,154,155,255,151,152,153,255,149,150,151,255,149,150,151,255, +149,150,151,255,149,150,151,255,151,152,153,255,153,155,156,255,157,157,159,255,160,161,162,255,163,164,165,255,165,167,168,255, +168,170,172,255,172,174,176,255,176,178,180,255,179,181,184,255,181,183,186,255,183,185,186,255,184,185,188,255,185,187,189,255, +185,188,190,255,185,187,190,255,184,187,189,255,184,186,189,255,184,186,188,255,183,185,187,255,182,184,186,255,182,184,186,255, +181,183,185,255,180,182,184,255,182,184,186,255,190,193,195,255,200,203,206,255,203,205,209,255,202,206,208,255,203,205,208,255, +203,205,208,255,204,206,208,255,202,205,207,255,200,203,206,255,198,201,204,255,193,196,199,255,188,190,193,255,181,183,185,255, +174,176,178,255,165,166,167,255,155,155,156,255,143,143,142,255,129,128,126,255,113,110,106,255,109,104, 98,255,152,151,151,255, +159,159,159,255,157,157,157,255,156,156,156,255,155,154,154,255,153,152,152,255,150,149,149,255,149,148,147,255,146,145,143,255, +142,140,138,255,139,137,134,255,137,134,130,255,103, 99, 95,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +135,137,138,255,205,207,211,255,202,205,209,255,203,206,208,255,203,206,209,255,203,206,209,255,204,206,209,255,199,201,204,255, +193,195,198,255,189,191,193,255,185,187,190,255,182,184,186,255,179,181,183,255,175,177,179,255,172,174,176,255,169,171,173,255, +166,167,169,255,162,164,166,255,159,160,162,255,155,157,158,255,153,154,155,255,150,151,152,255,148,148,150,255,146,146,148,255, +145,146,147,255,145,146,147,255,146,147,148,255,148,148,150,255,149,150,151,255,151,152,153,255,152,153,155,255,154,155,156,255, +156,158,158,255,159,161,162,255,162,163,165,255,165,166,168,255,167,169,170,255,170,171,173,255,172,174,176,255,175,177,179,255, +178,179,182,255,179,181,183,255,179,182,184,255,180,182,184,255,180,182,184,255,180,182,184,255,180,182,184,255,180,182,184,255, +180,181,184,255,181,183,184,255,183,185,187,255,190,193,196,255,197,200,203,255,200,203,206,255,202,205,207,255,202,205,208,255, +203,205,208,255,204,206,209,255,203,206,209,255,202,205,208,255,200,203,206,255,196,199,202,255,191,193,196,255,185,187,189,255, +177,178,180,255,169,170,172,255,159,160,160,255,146,146,146,255,131,131,129,255,114,110,106,255,127,124,121,255,158,158,158,255, +158,158,159,255,157,157,157,255,155,155,155,255,154,153,153,255,152,152,151,255,150,149,148,255,147,146,145,255,145,143,141,255, +141,140,137,255,138,136,133,255,100, 97, 94,255, 8, 8, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +135,137,138,255,205,208,211,255,203,206,209,255,202,205,208,255,203,206,209,255,203,206,209,255,204,207,210,255,202,204,206,255, +194,196,197,255,190,192,194,255,186,188,190,255,183,185,187,255,180,182,184,255,177,179,181,255,174,176,178,255,171,173,175,255, +167,169,171,255,164,165,167,255,160,162,164,255,157,158,160,255,153,155,156,255,151,152,153,255,148,149,150,255,146,147,148,255, +145,146,147,255,144,144,145,255,145,145,146,255,145,146,147,255,146,147,148,255,146,147,148,255,147,148,149,255,147,148,149,255, +149,149,151,255,150,151,152,255,152,153,155,255,154,155,157,255,155,156,158,255,157,158,160,255,159,160,161,255,162,163,164,255, +163,165,166,255,166,168,169,255,167,169,171,255,168,170,172,255,169,171,173,255,170,172,174,255,171,172,174,255,171,173,174,255, +172,173,175,255,174,176,178,255,178,181,183,255,184,187,190,255,191,194,197,255,195,198,201,255,198,201,204,255,200,203,206,255, +202,204,207,255,203,206,209,255,204,207,210,255,204,206,210,255,201,204,207,255,198,201,204,255,194,196,199,255,187,189,192,255, +179,181,183,255,170,172,173,255,161,162,162,255,148,148,147,255,133,131,130,255,116,113,110,255,143,142,140,255,160,160,160,255, +158,158,158,255,156,156,156,255,155,155,154,255,153,152,152,255,151,150,149,255,149,148,146,255,146,145,143,255,142,140,138,255, +140,138,134,255,108,105,102,255, 10, 10, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +135,137,138,255,205,208,211,255,204,206,209,255,203,205,208,255,202,206,209,255,202,205,208,255,203,206,209,255,203,206,208,255, +197,199,200,255,191,193,194,255,188,190,192,255,184,186,189,255,182,185,187,255,179,182,184,255,176,178,180,255,173,175,178,255, +170,172,174,255,166,168,170,255,163,165,166,255,159,161,163,255,156,158,159,255,152,154,155,255,150,151,152,255,147,148,149,255, +146,146,147,255,145,146,147,255,145,145,146,255,144,144,145,255,144,144,145,255,144,144,145,255,143,144,145,255,144,144,145,255, +145,146,147,255,146,147,148,255,147,148,149,255,147,148,149,255,148,149,150,255,149,150,151,255,150,151,152,255,152,152,154,255, +153,154,155,255,154,156,157,255,155,157,158,255,156,158,159,255,158,159,160,255,158,159,161,255,158,159,160,255,158,159,160,255, +159,160,162,255,162,163,165,255,168,170,172,255,176,177,179,255,182,185,188,255,189,191,194,255,194,197,200,255,197,200,203,255, +200,203,206,255,201,204,207,255,203,206,209,255,203,206,209,255,201,204,208,255,199,202,205,255,195,198,201,255,189,192,194,255, +181,183,185,255,172,174,175,255,161,162,163,255,149,148,148,255,133,131,129,255,120,117,114,255,157,157,156,255,160,159,159,255, +158,158,158,255,156,156,155,255,154,153,153,255,152,151,151,255,150,149,147,255,147,146,144,255,144,142,139,255,141,139,136,255, +118,115,111,255, 9, 8, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +135,137,138,255,205,208,211,255,204,206,209,255,203,205,208,255,202,206,209,255,203,206,209,255,202,205,208,255,203,206,209,255, +201,203,204,255,193,194,195,255,190,192,193,255,187,189,191,255,185,187,190,255,182,185,187,255,179,181,184,255,176,178,181,255, +172,175,177,255,169,171,173,255,166,168,170,255,162,164,166,255,159,161,162,255,156,157,159,255,152,153,155,255,150,151,152,255, +148,149,150,255,147,147,148,255,146,147,148,255,145,146,147,255,144,145,146,255,144,144,145,255,143,144,145,255,143,144,145,255, +144,144,145,255,144,145,146,255,144,145,146,255,144,144,145,255,144,145,146,255,144,145,146,255,144,145,146,255,145,147,147,255, +147,148,149,255,148,148,149,255,148,149,150,255,149,149,150,255,149,149,151,255,149,150,152,255,150,151,152,255,150,151,152,255, +150,151,153,255,154,155,156,255,160,162,164,255,168,170,172,255,176,178,180,255,183,185,188,255,189,191,194,255,194,196,199,255, +197,200,203,255,199,202,205,255,201,204,207,255,201,205,208,255,201,204,207,255,199,202,205,255,195,198,201,255,190,192,195,255, +182,184,186,255,173,174,176,255,162,163,164,255,148,148,147,255,130,127,125,255,134,132,129,255,162,163,163,255,159,158,158,255, +157,157,156,255,156,155,154,255,153,152,152,255,152,150,149,255,149,147,145,255,145,143,140,255,143,141,138,255,103,101, 98,255, + 9, 8, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +135,137,138,255,205,208,210,255,204,205,209,255,203,205,208,255,202,206,209,255,203,206,209,255,203,205,208,255,202,206,209,255, +203,206,208,255,195,196,197,255,192,193,194,255,191,192,195,255,189,191,193,255,186,188,191,255,183,186,188,255,180,182,185,255, +176,179,181,255,173,175,177,255,170,172,174,255,167,169,171,255,163,165,167,255,160,161,163,255,157,158,159,255,154,155,156,255, +151,152,154,255,150,150,151,255,149,149,150,255,147,148,149,255,146,147,148,255,145,146,147,255,144,145,146,255,144,145,146,255, +144,145,146,255,144,144,145,255,143,143,144,255,143,143,144,255,143,142,143,255,143,144,145,255,144,143,144,255,144,145,146,255, +144,145,146,255,145,145,146,255,145,145,146,255,145,146,147,255,145,145,146,255,145,145,146,255,145,145,146,255,145,145,146,255, +147,148,149,255,150,151,152,255,157,158,160,255,165,166,168,255,171,173,175,255,177,179,182,255,184,186,189,255,189,192,195,255, +193,196,199,255,196,199,203,255,198,202,205,255,200,203,207,255,199,202,206,255,197,200,203,255,194,197,200,255,189,192,195,255, +182,184,186,255,173,174,175,255,161,161,162,255,146,144,144,255,125,122,118,255,159,159,159,255,160,160,160,255,158,158,158,255, +156,156,155,255,154,153,152,255,152,151,150,255,149,148,147,255,146,144,142,255,144,142,139,255,113,111,107,255, 10, 10, 9,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +135,137,138,255,205,207,210,255,204,206,209,255,203,206,209,255,203,206,209,255,203,206,209,255,203,206,208,255,203,204,207,255, +202,205,207,255,203,205,208,255,194,196,197,255,194,195,197,255,192,195,197,255,190,192,195,255,188,190,193,255,184,187,189,255, +181,183,186,255,178,180,182,255,175,177,179,255,171,173,175,255,168,169,171,255,164,166,168,255,161,162,164,255,158,160,161,255, +156,157,158,255,153,154,156,255,152,153,154,255,150,151,152,255,149,150,151,255,149,149,150,255,147,148,149,255,147,147,148,255, +146,147,148,255,146,146,147,255,145,145,146,255,144,144,145,255,144,144,145,255,143,144,145,255,143,144,145,255,144,144,145,255, +143,144,145,255,143,144,145,255,143,143,144,255,142,143,144,255,142,142,143,255,143,143,144,255,143,144,145,255,144,144,145,255, +145,145,146,255,148,149,150,255,154,155,157,255,162,165,166,255,169,171,173,255,175,177,179,255,180,182,184,255,185,188,191,255, +189,192,195,255,193,196,199,255,196,199,202,255,197,201,204,255,197,200,203,255,195,198,201,255,192,195,198,255,187,189,192,255, +180,182,184,255,170,171,172,255,157,158,157,255,138,137,135,255,146,144,143,255,162,162,162,255,159,159,158,255,157,157,156,255, +156,155,154,255,153,152,151,255,150,149,148,255,148,146,144,255,144,142,139,255, 99, 98, 95,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +135,136,138,255,205,207,210,255,204,206,209,255,203,206,209,255,202,206,209,255,203,205,209,255,203,206,208,255,203,205,207,255, +201,204,207,255,201,205,208,255,202,205,208,255,197,198,200,255,196,198,200,255,195,198,200,255,192,195,198,255,190,193,196,255, +186,189,192,255,183,185,188,255,180,182,185,255,177,179,181,255,173,175,178,255,170,172,174,255,166,168,170,255,163,165,167,255, +160,162,163,255,159,160,162,255,156,158,159,255,155,156,157,255,153,155,156,255,152,153,154,255,151,151,152,255,149,150,151,255, +149,149,151,255,148,149,150,255,148,147,148,255,146,147,148,255,146,146,147,255,146,146,147,255,145,145,146,255,145,145,146,255, +144,145,146,255,144,144,145,255,144,144,145,255,143,144,145,255,143,143,144,255,143,144,145,255,144,144,145,255,144,145,146,255, +145,146,147,255,148,149,150,255,154,155,157,255,162,163,165,255,168,170,172,255,173,175,178,255,178,180,183,255,182,185,188,255, +186,190,192,255,191,194,197,255,193,196,199,255,194,198,201,255,195,197,201,255,192,195,199,255,190,192,195,255,185,187,189,255, +176,178,180,255,166,167,168,255,151,151,150,255,140,139,136,255,160,160,160,255,160,160,160,255,158,158,157,255,156,156,155,255, +154,153,152,255,151,149,148,255,149,148,145,255,143,141,138,255, 67, 66, 64,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +135,136,137,255,205,207,210,255,202,205,209,255,203,206,209,255,202,206,209,255,203,206,208,255,203,205,207,255,203,204,207,255, +201,205,208,255,202,204,208,255,202,205,207,255,201,203,205,255,198,200,202,255,199,202,204,255,198,201,204,255,195,198,201,255, +192,195,198,255,188,191,194,255,186,188,191,255,182,185,187,255,179,181,184,255,176,178,180,255,172,174,176,255,169,171,172,255, +166,168,170,255,164,166,167,255,162,163,165,255,160,161,162,255,158,159,161,255,157,158,159,255,155,156,157,255,154,155,156,255, +152,154,155,255,151,152,153,255,150,151,152,255,150,150,151,255,148,149,150,255,148,148,149,255,147,148,149,255,147,148,149,255, +146,147,148,255,146,146,147,255,145,146,147,255,145,145,146,255,145,145,146,255,145,145,146,255,145,146,147,255,145,146,147,255, +146,147,148,255,149,149,150,255,153,155,156,255,161,163,165,255,167,170,172,255,172,175,177,255,178,180,183,255,182,185,187,255, +186,188,191,255,189,192,195,255,191,194,197,255,192,196,199,255,192,195,198,255,190,193,196,255,186,189,192,255,181,183,185,255, +172,173,175,255,160,160,160,255,144,142,140,255,153,152,151,255,161,161,160,255,159,158,157,255,156,157,156,255,155,154,153,255, +151,150,149,255,150,148,146,255,145,142,138,255, 40, 39, 38,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +135,136,137,255,204,206,208,255,203,205,207,255,203,205,207,255,203,206,207,255,203,205,207,255,202,204,208,255,203,205,208,255, +201,204,207,255,202,205,207,255,201,204,207,255,201,204,207,255,199,201,204,255,200,202,204,255,202,205,208,255,200,203,207,255, +196,201,204,255,194,197,200,255,191,194,197,255,189,192,194,255,185,188,190,255,182,184,187,255,178,180,183,255,175,177,179,255, +172,174,176,255,170,172,174,255,168,169,171,255,166,167,169,255,164,165,167,255,162,163,165,255,160,162,163,255,158,160,161,255, +157,158,160,255,156,157,159,255,155,156,157,255,153,155,156,255,152,153,155,255,151,152,153,255,151,152,153,255,150,151,152,255, +150,150,151,255,149,150,151,255,148,149,150,255,148,149,150,255,148,149,150,255,148,148,149,255,148,148,149,255,148,149,150,255, +149,150,151,255,150,152,153,255,155,156,157,255,161,163,165,255,168,170,172,255,174,176,178,255,178,181,183,255,182,185,187,255, +186,188,191,255,188,191,194,255,189,192,195,255,190,193,196,255,190,192,196,255,187,190,192,255,182,184,187,255,176,177,179,255, +165,166,167,255,150,149,148,255,147,145,143,255,162,162,161,255,159,159,158,255,158,157,156,255,154,153,152,255,153,151,150,255, +150,148,145,255,116,114,111,255, 12, 12, 12,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +134,135,137,255,204,206,207,255,203,205,207,255,203,205,207,255,203,205,208,255,203,204,208,255,203,205,208,255,202,205,207,255, +201,205,207,255,202,204,206,255,202,203,206,255,201,203,206,255,201,204,206,255,199,201,204,255,201,203,205,255,203,206,209,255, +202,205,208,255,199,202,205,255,196,199,203,255,193,196,200,255,191,194,197,255,188,190,193,255,184,186,189,255,181,184,186,255, +178,181,183,255,176,178,180,255,174,176,178,255,172,174,176,255,170,171,173,255,168,170,171,255,166,168,169,255,164,166,167,255, +162,164,166,255,161,163,164,255,160,162,163,255,158,160,161,255,158,159,160,255,157,158,159,255,155,156,158,255,155,156,157,255, +154,155,156,255,153,154,156,255,152,153,155,255,152,153,154,255,151,152,153,255,151,152,153,255,152,152,153,255,152,152,153,255, +152,153,154,255,154,155,156,255,157,158,159,255,163,164,166,255,169,171,172,255,174,176,178,255,179,181,183,255,183,185,188,255, +185,188,191,255,188,190,193,255,188,191,194,255,188,190,193,255,186,189,192,255,183,185,188,255,177,179,181,255,169,170,171,255, +155,155,154,255,150,148,145,255,161,161,160,255,160,159,158,255,158,158,156,255,155,154,152,255,155,153,151,255,146,143,141,255, + 65, 64, 62,255, 4, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +135,136,137,255,203,205,206,255,201,203,205,255,202,204,205,255,202,203,206,255,202,205,207,255,202,205,207,255,201,205,207,255, +202,204,206,255,201,203,207,255,202,203,207,255,200,204,205,255,200,204,205,255,201,203,206,255,200,203,205,255,199,202,204,255, +203,205,208,255,202,205,208,255,200,203,206,255,197,200,203,255,196,199,202,255,194,196,200,255,190,193,196,255,187,190,193,255, +185,188,190,255,182,185,187,255,180,182,185,255,178,181,183,255,176,178,180,255,174,176,178,255,173,174,176,255,170,172,174,255, +169,171,172,255,167,169,170,255,166,167,169,255,165,166,168,255,163,164,166,255,162,163,165,255,161,162,163,255,160,161,162,255, +159,160,161,255,158,159,161,255,157,158,159,255,157,158,159,255,156,157,158,255,155,157,158,255,155,157,158,255,156,157,158,255, +156,157,158,255,158,159,160,255,160,162,163,255,166,168,169,255,171,173,175,255,175,178,180,255,180,182,185,255,183,185,188,255, +185,188,191,255,187,190,192,255,187,189,192,255,186,188,191,255,183,185,187,255,178,179,182,255,171,172,173,255,160,161,159,255, +151,150,147,255,162,161,159,255,160,160,159,255,159,157,156,255,155,154,152,255,154,153,150,255,119,118,115,255, 12, 12, 12,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, + 53, 53, 53,255,135,136,137,255,188,189,191,255,202,205,205,255,201,203,205,255,202,203,205,255,201,203,205,255,202,203,206,255, +202,203,206,255,201,204,206,255,200,203,205,255,201,203,206,255,201,202,205,255,200,203,205,255,199,202,204,255,199,202,204,255, +197,200,202,255,199,202,204,255,201,204,205,255,200,202,205,255,199,202,205,255,197,200,203,255,195,198,201,255,193,196,199,255, +191,193,196,255,189,191,194,255,186,189,191,255,184,187,189,255,183,184,187,255,180,182,185,255,178,180,182,255,177,179,181,255, +175,177,179,255,174,175,177,255,172,174,176,255,170,172,174,255,169,171,173,255,168,169,171,255,166,168,169,255,166,167,169,255, +164,166,168,255,164,165,166,255,163,164,166,255,162,163,165,255,161,163,164,255,161,162,164,255,161,162,164,255,161,162,164,255, +161,163,164,255,162,164,165,255,165,166,168,255,168,170,171,255,172,174,177,255,176,178,181,255,180,183,185,255,183,185,188,255, +184,187,190,255,185,188,190,255,185,187,190,255,182,184,187,255,178,180,181,255,172,172,174,255,161,161,161,255,153,152,150,255, +161,161,159,255,160,159,157,255,159,158,156,255,155,154,152,255,132,131,128,255, 68, 67, 65,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 27, 27, 27,255, 0, 0, 0,255, 42, 43, 43,255,128,129,130,255,201,203,204,255,202,204,205,255,200,202,203,255,201,203,205,255, +201,203,205,255,201,203,205,255,201,203,205,255,201,202,205,255,200,203,205,255,199,202,205,255,200,202,204,255,200,201,204,255, +199,202,204,255,198,200,203,255,199,200,202,255,197,199,200,255,197,200,201,255,198,200,202,255,197,200,203,255,197,199,202,255, +195,198,201,255,193,197,200,255,192,194,197,255,190,192,195,255,188,191,194,255,186,188,191,255,184,186,189,255,182,185,188,255, +180,183,185,255,180,182,184,255,178,181,183,255,177,179,181,255,175,177,180,255,174,176,177,255,173,174,176,255,172,174,175,255, +171,173,174,255,169,171,173,255,168,170,172,255,168,169,171,255,167,168,170,255,167,168,170,255,166,168,169,255,166,168,169,255, +166,168,170,255,167,169,170,255,169,171,173,255,171,173,176,255,175,177,179,255,179,181,182,255,181,183,186,255,183,185,188,255, +184,186,188,255,183,185,188,255,181,183,186,255,178,179,181,255,172,172,173,255,161,161,160,255,157,156,155,255,161,160,159,255, +160,159,158,255,160,159,157,255,151,149,146,255, 69, 68, 66,255, 15, 14, 14,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 27, 27, 27,255,153,154,155,255,202,203,204,255,201,202,204,255, +200,201,203,255,201,202,204,255,200,201,203,255,200,202,205,255,200,201,204,255,199,201,204,255,200,202,204,255,200,202,204,255, +198,201,203,255,199,200,202,255,198,201,203,255,197,199,202,255,198,200,202,255,196,198,200,255,195,197,198,255,196,198,200,255, +196,198,200,255,196,198,201,255,195,197,201,255,195,197,200,255,192,195,198,255,191,194,197,255,190,192,195,255,188,190,193,255, +186,189,192,255,185,188,190,255,184,186,188,255,183,185,188,255,182,184,186,255,180,182,184,255,179,181,183,255,178,180,182,255, +176,178,180,255,175,177,179,255,174,176,178,255,173,175,177,255,173,174,176,255,171,173,175,255,171,173,175,255,171,173,174,255, +171,173,174,255,172,174,176,255,174,175,177,255,176,178,180,255,178,180,182,255,180,182,185,255,182,184,187,255,183,185,187,255, +182,184,186,255,180,182,184,255,177,178,180,255,171,171,172,255,161,161,160,255,161,159,158,255,162,161,160,255,161,159,157,255, +157,156,153,255, 85, 84, 83,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 47, 48, 48,255,139,140,140,255, +181,182,183,255,200,202,202,255,200,202,204,255,198,200,202,255,199,201,203,255,199,201,203,255,199,201,203,255,198,200,203,255, +199,201,202,255,198,200,202,255,197,200,202,255,198,200,201,255,197,199,201,255,197,199,201,255,197,199,201,255,195,197,200,255, +195,196,198,255,194,196,198,255,195,196,198,255,195,197,198,255,194,197,199,255,194,197,199,255,193,195,198,255,192,194,197,255, +191,193,196,255,190,192,195,255,188,190,193,255,187,190,193,255,187,189,192,255,185,188,191,255,184,187,189,255,184,186,188,255, +182,185,187,255,181,183,185,255,180,182,184,255,179,181,183,255,178,180,182,255,178,179,181,255,177,179,181,255,177,179,180,255, +177,179,180,255,177,179,181,255,177,179,181,255,179,180,182,255,180,182,184,255,181,183,185,255,181,183,185,255,181,183,185,255, +179,180,182,255,174,175,176,255,167,167,167,255,163,161,161,255,164,163,161,255,161,160,158,255,136,134,132,255, 93, 92, 90,255, + 15, 15, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 32, 32, 32,255, 83, 83, 83,255,177,179,179,255,201,204,204,255,200,201,203,255,199,200,202,255,198,200,202,255,198,200,202,255, +198,200,202,255,198,200,202,255,198,199,201,255,197,199,201,255,196,199,201,255,197,199,201,255,196,198,200,255,196,198,200,255, +195,197,199,255,194,197,199,255,194,196,198,255,193,195,197,255,193,194,197,255,193,194,196,255,193,194,196,255,193,194,195,255, +193,194,196,255,193,194,196,255,191,193,196,255,191,193,195,255,190,192,195,255,189,191,193,255,188,190,193,255,188,190,192,255, +187,189,192,255,186,188,190,255,185,187,190,255,184,186,188,255,183,185,187,255,182,184,186,255,181,183,185,255,181,183,185,255, +181,182,184,255,180,182,184,255,180,182,184,255,181,182,185,255,181,183,185,255,181,182,184,255,179,181,182,255,176,177,177,255, +171,171,170,255,167,167,165,255,167,166,164,255,163,161,160,255,115,114,112,255, 50, 50, 49,255, 15, 14, 14,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 39, 39, 39,255,135,135,135,255,195,197,197,255,196,198,198,255,196,197,199,255, +197,198,200,255,196,198,199,255,195,197,199,255,196,198,199,255,197,197,199,255,196,197,199,255,196,197,199,255,195,197,198,255, +194,197,199,255,194,195,197,255,193,196,198,255,194,195,197,255,192,194,196,255,192,193,195,255,191,194,196,255,191,192,194,255, +190,192,193,255,190,191,193,255,190,191,193,255,190,191,192,255,190,191,192,255,190,191,192,255,190,191,193,255,189,190,192,255, +189,190,191,255,188,190,191,255,188,189,190,255,186,188,189,255,186,188,189,255,186,187,188,255,184,185,187,255,183,185,186,255, +182,183,185,255,181,182,184,255,181,182,183,255,179,180,180,255,179,179,180,255,175,176,175,255,171,171,170,255,168,167,165,255, +167,166,164,255,161,160,158,255, 90, 89, 87,255, 12, 12, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 2, 2, 2,255, 71, 72, 72,255,128,130,130,255, +166,167,168,255,187,188,189,255,196,198,198,255,196,198,199,255,196,198,199,255,195,197,198,255,195,196,198,255,194,196,198,255, +194,196,197,255,193,195,197,255,193,195,196,255,193,194,196,255,192,193,195,255,191,193,195,255,191,192,194,255,190,192,193,255, +190,191,193,255,189,191,192,255,189,190,191,255,188,189,191,255,187,188,189,255,186,188,189,255,186,187,188,255,187,187,188,255, +185,186,187,255,185,186,187,255,185,185,186,255,184,185,185,255,184,184,184,255,184,184,184,255,183,183,183,255,182,182,182,255, +178,178,178,255,179,179,178,255,178,178,177,255,175,174,173,255,172,172,170,255,158,157,155,255,133,132,131,255,101, 99, 98,255, + 47, 46, 45,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 20, 20, 20,255, 36, 36, 36,255, 81, 81, 81,255,127,127,128,255,177,178,179,255,196,197,197,255,195,196,197,255,196,197,198,255, +194,196,196,255,192,193,194,255,192,193,195,255,192,193,194,255,191,193,194,255,191,192,193,255,190,192,193,255,190,191,192,255, +189,190,191,255,188,190,191,255,188,189,190,255,187,188,189,255,186,187,188,255,186,187,187,255,185,185,186,255,184,185,185,255, +183,183,184,255,182,183,182,255,181,182,182,255,180,180,180,255,179,179,179,255,177,178,177,255,178,178,178,255,177,177,177,255, +176,176,175,255,172,171,170,255,138,137,136,255,104,103,101,255, 48, 48, 47,255, 27, 27, 27,255, 10, 9, 9,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 13, 13, 13,255, 73, 73, 73,255,117,118,118,255, +165,166,166,255,188,189,189,255,188,189,189,255,188,189,190,255,189,190,190,255,188,189,190,255,188,189,189,255,188,189,190,255, +188,189,189,255,188,189,189,255,186,187,187,255,186,187,187,255,186,186,186,255,184,185,185,255,184,184,184,255,182,183,182,255, +180,180,180,255,179,179,178,255,177,177,176,255,175,175,174,255,174,174,173,255,172,171,170,255,130,129,128,255, 92, 91, 90,255, + 54, 54, 53,255, 5, 5, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 24, 24, 24,255, 49, 49, 49,255, 63, 63, 63,255, 80, 80, 80,255,101,101,101,255,113,113,113,255, +120,120,120,255,121,122,121,255,124,124,124,255,123,123,123,255,122,122,122,255,118,118,117,255,114,113,113,255,106,106,105,255, + 90, 90, 89,255, 71, 71, 70,255, 55, 55, 54,255, 39, 39, 38,255, 8, 8, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, + 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0, +156, 1, 0, 0,232,190, 95, 7, 31, 0, 0, 0, 1, 0, 0, 0, 64, 98, 96, 7,144, 27, 95, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 73, 77, 46,105, 46,102,105,108,108, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46,102,105,108,108, + 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,192, 95, 7, 0, 0, 0, 0,188, 71, 42, 0, 0, 0, 0, 4, + 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,232,192, 95, 7, 19, 0, 0, 0, 1, 0, 0, 0, + 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,112,193, 95, 7,216,209, 95, 7, + 68, 65, 84, 65, 0, 16, 0, 0,112,193, 95, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0,216,209, 95, 7, + 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 62, 62,255, + 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 59, 60, 60,255, 59, 60, 60,255, 59, 60, 60,255, 59, 60, 60,255, 59, 60, 60,255, 59, 60, 60,255, 59, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 61,255, 60, 60, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 62, 62, 62,255, 61, 61, 61,255, 98, 93, 84,255,133,122,104,255,133,122,105,255,132,122,104,255,132,120,103,255, +129,117,101,255,125,112, 97,255,117,104, 90,255,107, 94, 82,255, 99, 84, 75,255, 92, 77, 69,255, 87, 72, 65,255, 84, 68, 63,255, + 83, 68, 63,255, 85, 70, 64,255, 89, 74, 67,255, 94, 78, 71,255, 99, 85, 75,255,106, 92, 81,255,112, 99, 86,255,118,106, 91,255, +124,112, 97,255,130,118,102,255,134,124,107,255,138,129,114,255,141,133,120,255,143,136,124,255,143,136,125,255,141,134,121,255, +140,132,119,255,141,133,121,255,143,137,125,255,143,136,125,255,140,131,118,255,135,125,109,255,132,121,103,255,128,117,101,255, +127,115, 99,255,127,115, 99,255,126,115, 98,255,126,114, 98,255,126,114, 98,255,125,113, 97,255,125,113, 97,255,125,113, 97,255, +124,112, 96,255,122,110, 95,255,120,107, 93,255,115,102, 88,255,106, 92, 81,255, 95, 80, 72,255, 82, 68, 62,255, 70, 59, 56,255, + 63, 57, 54,255, 63, 56, 54,255, 65, 57, 55,255, 72, 61, 57,255, 82, 67, 62,255, 91, 76, 69,255, 99, 84, 75,255,106, 93, 82,255, +113,101, 87,255,120,107, 93,255,126,114, 98,255,132,121,104,255,137,127,111,255,141,133,120,255,144,137,126,255,146,141,131,255, +147,143,135,255,148,144,137,255,148,145,137,255,149,145,137,255,149,145,137,255,148,144,137,255,147,143,134,255,145,139,130,255, +141,133,120,255,135,124,108,255,126,114, 98,255,119,107, 92,255,114,101, 88,255,111, 98, 85,255,109, 96, 84,255,109, 95, 83,255, +108, 94, 82,255,107, 94, 82,255,106, 93, 81,255,106, 92, 81,255,106, 92, 81,255,105, 91, 80,255,104, 90, 79,255,103, 89, 79,255, + 83, 75, 70,255, 61, 61, 61,255, 60, 60, 60,255,134,123,105,255,202,179,146,255,201,178,145,255,200,179,145,255,199,177,143,255, +195,173,140,255,187,164,133,255,175,151,123,255,158,133,108,255,141,113, 93,255,125, 96, 80,255,113, 84, 71,255,107, 77, 66,255, +104, 75, 65,255,106, 77, 66,255,112, 82, 69,255,120, 91, 76,255,131,103, 85,255,143,117, 96,255,155,130,106,255,168,143,116,255, +179,156,126,255,190,168,135,255,200,179,145,255,209,190,158,255,215,200,173,255,219,206,182,255,220,207,185,255,217,204,181,255, +214,200,175,255,214,199,175,255,220,206,183,255,221,209,187,255,217,202,178,255,209,191,160,255,201,179,146,255,195,173,139,255, +190,167,135,255,188,165,134,255,188,164,133,255,186,164,133,255,187,163,132,255,186,162,132,255,185,162,131,255,185,162,131,255, +184,161,130,255,182,158,128,255,178,154,125,255,170,144,118,255,156,131,107,255,137,110, 91,255,112, 83, 71,255, 87, 63, 55,255, + 69, 54, 48,255, 63, 51, 46,255, 66, 53, 47,255, 75, 57, 51,255, 93, 66, 58,255,112, 82, 69,255,127, 99, 83,255,142,115, 95,255, +156,131,107,255,170,144,118,255,182,158,128,255,193,171,139,255,203,183,151,255,212,195,167,255,219,205,182,255,224,213,193,255, +228,218,201,255,230,221,206,255,231,223,209,255,231,223,209,255,231,223,209,255,231,223,209,255,229,221,206,255,226,217,199,255, +220,208,186,255,210,192,163,255,194,172,140,255,179,156,126,255,168,143,117,255,160,134,110,255,155,130,106,255,153,126,104,255, +152,126,103,255,151,125,102,255,150,123,101,255,148,122,100,255,147,121, 99,255,147,119, 98,255,145,118, 97,255,144,116, 96,255, +103, 89, 79,255, 61, 61, 61,255, 60, 60, 60,255,134,122,105,255,202,180,146,255,200,179,146,255,200,179,145,255,200,178,145,255, +196,175,142,255,192,169,137,255,181,158,128,255,167,142,116,255,149,123,101,255,132,104, 86,255,118, 90, 75,255,110, 81, 68,255, +104, 75, 65,255,104, 75, 65,255,108, 79, 68,255,115, 87, 73,255,126, 97, 81,255,137,109, 91,255,149,123,101,255,161,136,111,255, +173,149,121,255,184,161,130,255,195,173,140,255,204,185,152,255,211,194,166,255,217,202,177,255,219,206,184,255,219,206,184,255, +215,201,178,255,213,197,173,255,216,202,178,255,220,207,186,255,219,206,183,255,213,197,170,255,204,184,152,255,197,175,143,255, +191,169,137,255,188,165,134,255,187,165,134,255,187,164,133,255,186,163,132,255,186,163,132,255,185,162,131,255,185,162,131,255, +184,161,131,255,182,159,129,255,180,156,127,255,174,150,122,255,165,139,114,255,149,123,101,255,128, 99, 83,255,103, 74, 64,255, + 78, 58, 52,255, 66, 53, 47,255, 64, 52, 46,255, 68, 53, 48,255, 81, 60, 52,255,100, 72, 62,255,117, 87, 74,255,132,104, 87,255, +147,120, 99,255,161,135,110,255,173,149,122,255,186,162,131,255,196,175,141,255,206,187,156,255,214,198,173,255,220,207,187,255, +224,214,196,255,227,219,203,255,228,221,207,255,230,222,208,255,229,223,209,255,229,223,209,255,229,222,207,255,228,219,204,255, +223,213,195,255,216,202,178,255,204,184,153,255,188,166,135,255,174,150,123,255,164,139,114,255,158,132,108,255,154,128,105,255, +152,126,104,255,151,125,102,255,150,124,102,255,149,123,101,255,148,121,100,255,146,120, 98,255,145,118, 97,255,144,117, 96,255, +104, 90, 79,255, 61, 61, 61,255, 60, 60, 60,255,134,123,106,255,202,181,148,255,201,180,146,255,201,180,146,255,201,180,146,255, +199,178,145,255,195,173,141,255,188,165,134,255,175,151,123,255,158,133,108,255,140,113, 94,255,125, 96, 81,255,113, 84, 71,255, +107, 78, 67,255,104, 75, 65,255,106, 77, 66,255,112, 83, 70,255,120, 91, 77,255,131,103, 86,255,144,116, 96,255,156,130,106,255, +168,144,117,255,180,156,126,255,190,168,136,255,200,179,146,255,208,190,159,255,215,199,174,255,219,205,183,255,220,208,186,255, +217,205,182,255,214,199,175,255,215,199,175,255,218,206,184,255,220,209,188,255,217,203,180,255,210,192,162,255,201,180,147,255, +195,173,140,255,190,168,136,255,188,165,134,255,187,164,133,255,187,164,133,255,186,163,133,255,186,163,132,255,185,162,132,255, +184,161,132,255,184,161,131,255,182,159,129,255,178,155,126,255,171,147,120,255,160,134,110,255,142,115, 94,255,119, 90, 76,255, + 93, 67, 59,255, 72, 56, 49,255, 64, 52, 47,255, 64, 52, 47,255, 71, 55, 49,255, 87, 63, 56,255,106, 77, 66,255,122, 94, 79,255, +138,110, 91,255,152,126,104,255,165,141,115,255,178,155,125,255,190,167,136,255,200,180,147,255,209,191,163,255,216,202,178,255, +222,210,191,255,225,216,199,255,228,220,205,255,229,222,207,255,230,223,209,255,230,223,210,255,229,222,209,255,229,221,207,255, +227,218,202,255,222,210,191,255,213,197,171,255,199,178,146,255,183,160,129,255,170,146,119,255,162,136,112,255,156,131,106,255, +153,127,104,255,152,126,103,255,151,125,102,255,150,123,101,255,148,122,100,255,147,120, 99,255,145,119, 98,255,145,118, 97,255, +104, 90, 79,255, 61, 61, 61,255, 60, 60, 60,255,134,124,106,255,203,182,148,255,202,181,147,255,202,181,147,255,202,181,147,255, +201,180,146,255,198,177,144,255,193,171,139,255,183,159,129,255,168,143,116,255,149,123,101,255,132,105, 87,255,119, 90, 76,255, +110, 81, 69,255,104, 75, 65,255,105, 76, 65,255,109, 80, 68,255,116, 87, 73,255,126, 97, 82,255,138,110, 91,255,150,124,102,255, +163,137,112,255,174,150,121,255,185,162,132,255,196,174,141,255,205,186,154,255,213,196,169,255,218,204,180,255,220,208,186,255, +220,207,186,255,216,203,180,255,215,199,174,255,217,203,180,255,220,208,188,255,221,208,187,255,214,198,173,255,206,186,155,255, +198,177,144,255,193,170,138,255,190,166,135,255,188,165,134,255,187,164,133,255,187,164,133,255,186,163,132,255,186,164,133,255, +185,162,131,255,184,161,132,255,184,161,131,255,181,158,128,255,177,153,124,255,168,143,116,255,154,128,105,255,134,106, 88,255, +110, 81, 69,255, 84, 61, 54,255, 68, 54, 48,255, 64, 52, 46,255, 66, 53, 47,255, 76, 57, 51,255, 94, 67, 59,255,112, 83, 70,255, +128, 99, 83,255,142,116, 96,255,157,131,108,255,170,145,118,255,182,159,129,255,194,171,139,255,203,184,152,255,211,195,169,255, +218,206,183,255,224,213,195,255,226,217,202,255,229,221,207,255,230,223,209,255,229,222,210,255,230,223,210,255,229,223,209,255, +228,220,206,255,225,217,200,255,219,207,186,255,209,191,163,255,193,171,139,255,178,155,125,255,167,143,117,255,159,134,109,255, +155,129,106,255,153,127,104,255,152,126,103,255,150,124,102,255,149,122,100,255,148,121, 99,255,147,120, 99,255,146,119, 98,255, +104, 90, 80,255, 60, 61, 61,255, 60, 60, 60,255,135,124,107,255,204,184,149,255,203,182,149,255,203,182,149,255,203,183,149,255, +203,182,149,255,201,180,146,255,197,175,142,255,189,166,136,255,176,152,124,255,159,134,109,255,141,114, 94,255,126, 97, 81,255, +114, 85, 72,255,107, 78, 67,255,104, 75, 65,255,106, 77, 66,255,113, 84, 71,255,121, 92, 78,255,132,104, 87,255,144,117, 97,255, +156,131,107,255,168,144,117,255,180,157,127,255,192,170,137,255,202,181,148,255,209,192,162,255,215,201,176,255,220,207,185,255, +221,209,188,255,218,206,184,255,215,201,177,255,215,200,177,255,219,207,186,255,222,210,191,255,219,205,183,255,211,193,165,255, +202,182,149,255,196,174,141,255,191,169,137,255,189,166,135,255,188,166,134,255,187,166,134,255,187,164,133,255,187,164,133,255, +187,164,133,255,186,163,132,255,185,162,131,255,184,161,131,255,180,157,127,255,174,150,122,255,164,139,113,255,148,121,100,255, +126, 97, 81,255,101, 73, 62,255, 77, 57, 51,255, 66, 53, 47,255, 63, 52, 47,255, 69, 54, 48,255, 82, 60, 53,255,100, 72, 62,255, +118, 89, 75,255,133,106, 88,255,148,122,100,255,161,137,111,255,174,151,122,255,186,163,132,255,197,176,143,255,207,188,158,255, +214,199,175,255,220,209,188,255,225,216,197,255,228,219,204,255,229,222,208,255,231,224,209,255,231,224,210,255,231,224,210,255, +230,223,209,255,228,220,205,255,224,214,197,255,216,202,179,255,203,184,154,255,188,165,134,255,174,150,122,255,164,139,114,255, +157,131,108,255,154,128,105,255,152,126,103,255,151,125,103,255,150,124,101,255,148,122,100,255,147,121, 99,255,146,120, 99,255, +105, 91, 80,255, 60, 61, 61,255, 60, 60, 60,255,136,125,108,255,205,184,151,255,203,183,150,255,203,183,150,255,203,183,150,255, +203,183,149,255,202,182,148,255,200,179,145,255,194,172,140,255,183,161,130,255,168,143,117,255,150,124,102,255,133,105, 87,255, +120, 91, 76,255,110, 81, 69,255,106, 77, 65,255,106, 77, 66,255,110, 81, 69,255,117, 88, 74,255,126, 99, 82,255,138,111, 92,255, +151,125,102,255,163,138,113,255,175,152,123,255,186,164,133,255,197,175,143,255,206,187,156,255,213,197,171,255,218,206,183,255, +222,209,189,255,220,209,188,255,217,204,182,255,215,200,176,255,217,204,181,255,221,210,190,255,222,210,189,255,216,201,176,255, +207,188,158,255,199,179,145,255,194,172,140,255,191,168,136,255,189,167,135,255,188,166,134,255,188,165,134,255,187,165,134,255, +186,165,134,255,186,164,133,255,186,163,132,255,184,162,131,255,183,160,130,255,179,155,126,255,171,147,120,255,159,133,109,255, +140,113, 93,255,117, 88, 75,255, 92, 66, 58,255, 71, 55, 49,255, 64, 52, 46,255, 65, 52, 47,255, 72, 56, 50,255, 88, 64, 56,255, +107, 78, 66,255,123, 95, 79,255,138,111, 92,255,153,127,104,255,166,141,116,255,179,155,126,255,190,168,136,255,201,180,148,255, +210,193,164,255,217,203,180,255,223,211,192,255,226,217,201,255,229,221,206,255,230,223,210,255,231,224,210,255,230,223,211,255, +231,223,210,255,230,223,208,255,228,219,204,255,222,211,192,255,212,197,171,255,198,178,146,255,182,159,129,255,170,146,119,255, +162,136,111,255,155,130,106,255,153,127,104,255,152,126,103,255,150,124,102,255,150,123,101,255,148,122,100,255,148,121, 99,255, +105, 92, 80,255, 60, 61, 61,255, 60, 60, 60,255,136,125,108,255,206,185,152,255,204,184,151,255,204,184,151,255,204,184,151,255, +204,183,150,255,204,184,151,255,202,182,149,255,198,177,143,255,190,168,136,255,178,154,125,255,160,134,110,255,141,115, 95,255, +126, 97, 81,255,115, 86, 73,255,107, 78, 67,255,105, 76, 65,255,107, 78, 67,255,113, 84, 71,255,122, 93, 78,255,133,105, 87,255, +145,118, 97,255,158,132,107,255,169,145,118,255,181,158,128,255,192,170,138,255,203,182,150,255,211,193,165,255,217,203,178,255, +221,208,187,255,222,210,190,255,219,208,187,255,216,202,179,255,215,201,178,255,219,208,186,255,223,212,192,255,220,207,186,255, +213,196,169,255,204,184,152,255,197,176,143,255,193,170,138,255,190,168,136,255,189,166,135,255,188,166,134,255,189,166,135,255, +187,164,133,255,187,165,134,255,186,164,133,255,185,162,132,255,185,162,131,255,182,159,129,255,177,153,124,255,168,143,117,255, +153,128,104,255,132,105, 87,255,109, 80, 68,255, 83, 61, 54,255, 68, 53, 48,255, 64, 52, 46,255, 67, 53, 47,255, 77, 58, 51,255, + 95, 68, 59,255,112, 83, 70,255,128,100, 84,255,143,116, 96,255,158,132,108,255,170,146,119,255,183,159,129,255,194,172,140,255, +205,185,154,255,213,197,171,255,219,207,185,255,224,214,196,255,228,219,204,255,229,222,208,255,231,224,210,255,230,224,211,255, +230,224,211,255,230,223,210,255,229,222,208,255,226,217,200,255,219,207,186,255,208,190,161,255,192,171,138,255,177,154,125,255, +167,142,116,255,159,133,109,255,154,128,105,255,153,127,104,255,151,125,102,255,150,124,102,255,149,123,101,255,148,122,100,255, +106, 92, 81,255, 60, 61, 61,255, 60, 60, 60,255,136,126,109,255,206,187,154,255,205,185,153,255,205,186,153,255,205,186,153,255, +205,185,153,255,205,185,152,255,204,183,150,255,201,180,147,255,195,174,140,255,184,162,131,255,169,144,118,255,151,125,102,255, +133,106, 88,255,120, 92, 77,255,112, 83, 70,255,107, 78, 66,255,106, 77, 66,255,110, 81, 69,255,118, 89, 75,255,127, 99, 83,255, +139,112, 92,255,151,125,102,255,164,139,113,255,176,152,124,255,187,164,133,255,198,177,143,255,207,188,158,255,215,199,173,255, +220,206,185,255,223,211,191,255,222,210,191,255,218,205,183,255,215,202,179,255,218,204,182,255,222,211,192,255,223,212,192,255, +217,203,180,255,209,190,161,255,201,181,147,255,195,173,140,255,191,169,137,255,191,168,136,255,189,167,136,255,188,167,134,255, +189,166,135,255,188,165,134,255,188,165,134,255,187,164,133,255,186,163,132,255,185,162,131,255,181,157,128,255,175,150,122,255, +164,139,113,255,147,121,100,255,125, 97, 81,255, 99, 72, 62,255, 76, 58, 51,255, 65, 52, 47,255, 64, 52, 46,255, 69, 54, 48,255, + 82, 60, 53,255,101, 73, 63,255,118, 88, 74,255,133,106, 87,255,148,122,100,255,162,137,112,255,175,151,123,255,187,164,133,255, +198,177,144,255,208,189,160,255,215,201,177,255,221,210,190,255,225,217,199,255,228,220,206,255,230,223,210,255,231,224,211,255, +230,224,211,255,231,224,211,255,230,223,210,255,228,221,206,255,225,214,197,255,216,202,179,255,203,183,153,255,187,164,133,255, +173,149,122,255,163,138,113,255,157,132,107,255,154,128,105,255,152,127,104,255,151,125,102,255,150,124,102,255,149,123,101,255, +106, 92, 81,255, 60, 61, 61,255, 60, 60, 60,255,137,127,110,255,207,187,155,255,206,186,154,255,206,186,154,255,205,186,154,255, +205,186,154,255,205,186,154,255,205,185,153,255,204,183,150,255,199,178,144,255,191,169,137,255,178,154,126,255,161,135,110,255, +142,116, 95,255,127, 98, 82,255,115, 86, 73,255,109, 80, 68,255,106, 77, 66,255,108, 78, 67,255,114, 85, 71,255,122, 94, 79,255, +134,106, 88,255,146,119, 98,255,158,133,109,255,170,146,118,255,182,158,129,255,193,171,138,255,203,183,150,255,211,195,167,255, +218,204,181,255,222,210,189,255,222,212,193,255,221,209,189,255,217,203,182,255,217,203,180,255,220,208,188,255,224,213,195,255, +222,210,189,255,214,198,173,255,206,186,155,255,199,177,144,255,194,172,139,255,191,169,137,255,190,168,136,255,189,167,135,255, +188,166,134,255,188,166,134,255,188,165,134,255,188,165,133,255,187,164,133,255,186,163,132,255,184,161,131,255,180,156,126,255, +172,148,120,255,159,134,110,255,140,113, 94,255,117, 88, 74,255, 91, 66, 58,255, 72, 55, 49,255, 65, 52, 47,255, 65, 53, 47,255, + 72, 56, 50,255, 89, 64, 56,255,107, 77, 67,255,123, 94, 79,255,139,111, 92,255,153,127,104,255,166,142,116,255,179,156,127,255, +191,169,137,255,202,182,149,255,211,194,167,255,218,204,182,255,223,213,194,255,227,218,202,255,229,222,208,255,230,224,211,255, +231,224,211,255,231,225,212,255,231,224,212,255,230,223,210,255,228,219,204,255,222,211,192,255,212,197,171,255,197,177,145,255, +181,158,129,255,169,145,118,255,160,135,110,255,155,130,106,255,153,127,104,255,152,126,103,255,150,124,102,255,150,124,101,255, +106, 93, 82,255, 60, 61, 61,255, 60, 60, 60,255,137,127,111,255,209,189,156,255,206,187,155,255,206,187,155,255,206,188,155,255, +206,186,155,255,207,186,155,255,206,186,154,255,205,185,153,255,202,182,149,255,197,175,142,255,186,163,132,255,170,145,118,255, +151,125,103,255,134,107, 89,255,121, 92, 77,255,111, 82, 70,255,107, 77, 66,255,107, 77, 66,255,111, 81, 70,255,118, 89, 75,255, +128,100, 83,255,139,112, 92,255,152,126,103,255,165,139,114,255,177,153,124,255,188,165,134,255,199,178,145,255,208,190,159,255, +215,200,175,255,220,208,186,255,224,212,193,255,223,212,193,255,220,207,187,255,216,202,180,255,218,206,184,255,222,212,194,255, +224,214,196,255,220,206,184,255,211,194,165,255,203,182,150,255,197,175,142,255,193,171,139,255,190,168,136,255,191,169,137,255, +189,167,135,255,190,166,136,255,189,167,135,255,187,165,134,255,188,165,134,255,187,164,133,255,185,163,132,255,183,160,130,255, +178,154,125,255,169,143,117,255,154,128,105,255,133,105, 87,255,109, 80, 68,255, 84, 61, 54,255, 68, 54, 48,255, 64, 52, 46,255, + 66, 53, 47,255, 77, 58, 51,255, 94, 68, 59,255,113, 83, 71,255,128,100, 84,255,144,116, 96,255,157,132,108,255,171,147,120,255, +184,160,130,255,194,173,141,255,205,186,155,255,213,198,173,255,220,208,187,255,224,215,198,255,228,220,205,255,230,223,210,255, +230,224,211,255,232,224,213,255,232,224,213,255,230,224,211,255,230,223,208,255,227,217,201,255,219,207,186,255,207,190,161,255, +191,170,138,255,176,153,125,255,165,141,115,255,158,133,109,255,154,128,105,255,152,126,104,255,151,125,103,255,150,124,102,255, +107, 93, 82,255, 60, 61, 61,255, 60, 60, 60,255,137,128,112,255,209,190,159,255,208,189,158,255,208,189,157,255,207,188,157,255, +207,188,157,255,207,188,157,255,207,188,156,255,206,187,156,255,205,184,152,255,201,180,146,255,193,170,138,255,179,155,126,255, +161,136,111,255,143,116, 96,255,127, 99, 83,255,116, 88, 73,255,110, 79, 68,255,107, 77, 66,255,109, 79, 67,255,115, 85, 72,255, +123, 94, 79,255,134,106, 88,255,146,119, 98,255,158,133,108,255,171,146,119,255,182,159,129,255,194,171,139,255,204,184,151,255, +212,196,168,255,219,205,183,255,223,212,192,255,224,213,195,255,222,211,192,255,219,206,184,255,217,204,182,255,221,209,190,255, +225,215,197,255,223,212,193,255,216,202,177,255,208,189,159,255,200,180,147,255,195,173,140,255,192,170,138,255,191,168,136,255, +191,169,137,255,190,167,136,255,190,166,136,255,189,167,135,255,188,166,135,255,188,165,134,255,187,164,133,255,185,162,132,255, +182,159,128,255,175,151,123,255,164,139,114,255,147,121, 99,255,125, 97, 81,255,100, 72, 63,255, 77, 58, 51,255, 66, 53, 48,255, + 64, 52, 47,255, 70, 54, 48,255, 82, 60, 53,255,101, 73, 63,255,118, 89, 75,255,133,106, 88,255,149,122,101,255,162,137,112,255, +175,152,124,255,188,165,134,255,198,178,145,255,208,190,162,255,216,202,178,255,223,211,192,255,226,218,201,255,229,221,207,255, +231,224,211,255,231,225,212,255,232,226,213,255,232,225,213,255,230,224,211,255,229,221,207,255,224,215,197,255,215,201,178,255, +202,182,151,255,186,163,133,255,172,148,121,255,163,137,112,255,157,131,107,255,153,128,104,255,152,126,103,255,151,125,103,255, +107, 94, 82,255, 60, 61, 61,255, 60, 60, 60,255,138,128,112,255,209,191,160,255,208,189,159,255,208,189,159,255,208,189,158,255, +207,189,158,255,208,189,158,255,207,188,157,255,207,188,157,255,206,187,155,255,204,184,151,255,198,176,143,255,186,164,133,255, +171,146,120,255,152,126,103,255,135,107, 89,255,121, 93, 78,255,112, 83, 71,255,108, 78, 66,255,107, 77, 67,255,112, 82, 70,255, +119, 90, 75,255,129,100, 83,255,140,112, 93,255,152,126,103,255,164,139,114,255,176,153,124,255,188,165,134,255,199,178,145,255, +209,191,161,255,216,202,177,255,221,209,188,255,224,213,195,255,224,214,196,255,221,210,191,255,217,204,183,255,218,206,185,255, +224,213,195,255,226,216,199,255,221,209,189,255,213,197,171,255,205,186,154,255,199,178,145,255,194,172,139,255,192,170,137,255, +191,168,136,255,191,168,136,255,190,167,136,255,190,167,136,255,189,166,135,255,188,166,135,255,187,165,134,255,187,164,133,255, +185,162,132,255,180,157,127,255,172,148,121,255,160,134,110,255,141,114, 94,255,117, 88, 74,255, 92, 66, 58,255, 72, 56, 49,255, + 65, 53, 46,255, 65, 53, 47,255, 73, 56, 50,255, 88, 64, 56,255,107, 78, 67,255,123, 95, 80,255,139,112, 92,255,154,128,105,255, +167,143,116,255,180,157,127,255,192,169,138,255,202,182,151,255,212,195,168,255,218,206,184,255,224,213,196,255,227,220,204,255, +230,223,209,255,231,225,212,255,232,225,213,255,232,226,212,255,231,225,212,255,231,223,210,255,228,219,205,255,222,211,192,255, +211,195,169,255,196,175,143,255,180,157,127,255,168,143,117,255,160,134,110,255,154,129,106,255,152,127,104,255,152,126,103,255, +108, 94, 83,255, 60, 61, 61,255, 60, 60, 60,255,138,129,113,255,211,193,161,255,208,190,161,255,208,190,160,255,208,191,159,255, +209,189,159,255,208,189,159,255,207,189,160,255,208,190,158,255,208,189,157,255,206,187,155,255,202,181,148,255,194,171,138,255, +180,156,127,255,162,136,112,255,143,117, 96,255,128,100, 83,255,117, 88, 74,255,110, 80, 68,255,108, 78, 67,255,109, 79, 68,255, +115, 85, 72,255,123, 94, 79,255,134,106, 89,255,146,119, 98,255,159,133,108,255,171,146,119,255,183,160,129,255,194,172,140,255, +204,184,152,255,213,196,170,255,219,206,183,255,223,212,194,255,226,215,197,255,223,213,196,255,220,208,188,255,217,204,183,255, +221,210,190,255,225,216,199,255,225,215,197,255,219,205,184,255,210,193,164,255,203,183,150,255,196,175,142,255,193,171,139,255, +192,169,137,255,192,170,138,255,191,169,137,255,189,167,135,255,190,167,136,255,189,167,135,255,188,165,135,255,188,165,134,255, +187,164,133,255,184,161,130,255,177,154,126,255,168,145,118,255,155,129,105,255,134,106, 88,255,109, 80, 68,255, 84, 61, 54,255, + 68, 54, 48,255, 64, 52, 47,255, 67, 54, 48,255, 77, 58, 51,255, 95, 68, 60,255,112, 83, 70,255,129,101, 84,255,144,117, 97,255, +158,132,109,255,171,147,120,255,184,161,131,255,196,174,142,255,206,187,157,255,214,199,174,255,221,208,188,255,226,216,200,255, +228,221,206,255,231,224,211,255,232,225,213,255,231,226,213,255,232,226,214,255,232,225,213,255,229,222,209,255,226,217,201,255, +219,206,185,255,207,188,159,255,190,168,137,255,175,151,123,255,165,140,114,255,157,132,108,255,154,128,105,255,152,126,104,255, +108, 94, 83,255, 60, 61, 61,255, 60, 60, 60,255,138,129,114,255,211,193,163,255,210,192,162,255,210,192,162,255,210,191,161,255, +209,191,161,255,209,191,161,255,209,190,161,255,208,190,160,255,208,190,160,255,207,189,157,255,204,185,152,255,198,178,144,255, +188,165,134,255,171,147,120,255,153,127,104,255,135,109, 89,255,122, 93, 78,255,114, 84, 71,255,108, 78, 67,255,108, 78, 67,255, +112, 82, 70,255,119, 89, 75,255,128,100, 83,255,140,113, 92,255,152,126,103,255,164,139,114,255,176,153,124,255,187,165,134,255, +199,178,145,255,208,191,161,255,216,201,178,255,222,210,190,255,225,215,198,255,225,216,199,255,223,212,194,255,218,206,186,255, +219,207,186,255,224,213,196,255,227,218,201,255,223,213,194,255,216,201,177,255,207,189,158,255,200,180,147,255,195,174,141,255, +193,171,139,255,192,170,138,255,192,170,138,255,191,169,137,255,190,168,136,255,190,168,136,255,189,167,135,255,189,166,135,255, +188,165,134,255,186,164,133,255,183,160,129,255,176,152,124,255,166,141,114,255,148,122,100,255,127, 97, 82,255,101, 73, 63,255, + 78, 58, 51,255, 66, 53, 48,255, 64, 52, 47,255, 69, 54, 48,255, 83, 61, 53,255,101, 72, 63,255,119, 89, 75,255,134,107, 88,255, +149,123,101,255,163,138,113,255,176,152,124,255,188,166,134,255,199,179,146,255,209,192,164,255,217,203,180,255,222,212,193,255, +227,219,202,255,230,223,209,255,231,225,212,255,231,226,214,255,232,225,214,255,232,226,213,255,231,225,212,255,229,222,207,255, +224,214,197,255,215,200,176,255,200,181,149,255,183,161,131,255,170,146,119,255,161,137,111,255,155,130,106,255,153,127,104,255, +108, 95, 83,255, 60, 61, 61,255, 60, 60, 60,255,139,130,115,255,211,194,165,255,210,192,163,255,210,192,163,255,209,192,163,255, +209,191,163,255,210,191,162,255,210,191,162,255,209,191,161,255,209,191,161,255,208,190,160,255,207,188,156,255,202,182,150,255, +194,173,140,255,181,157,128,255,163,138,112,255,145,118, 97,255,129,101, 84,255,117, 88, 74,255,111, 81, 69,255,107, 78, 66,255, +109, 79, 68,255,114, 85, 72,255,122, 94, 79,255,134,106, 88,255,145,118, 98,255,157,132,108,255,170,145,118,255,182,159,129,255, +193,172,139,255,204,184,152,255,212,196,169,255,219,206,184,255,223,213,195,255,226,217,200,255,225,216,198,255,221,210,191,255, +218,206,186,255,221,210,191,255,226,217,200,255,226,218,201,255,222,209,189,255,212,197,170,255,205,186,154,255,199,177,144,255, +195,173,140,255,193,171,138,255,192,170,138,255,191,169,138,255,191,169,137,255,190,168,136,255,189,168,135,255,189,167,135,255, +189,166,135,255,188,165,134,255,185,163,132,255,181,157,128,255,173,149,121,255,160,136,111,255,142,115, 94,255,118, 89, 75,255, + 93, 67, 58,255, 72, 55, 49,255, 65, 53, 47,255, 66, 53, 47,255, 72, 56, 50,255, 89, 64, 56,255,108, 78, 67,255,124, 95, 79,255, +140,112, 93,255,154,128,105,255,167,143,117,255,180,157,128,255,192,170,138,255,203,183,152,255,212,196,170,255,219,207,185,255, +224,214,197,255,228,220,205,255,231,223,210,255,232,226,213,255,231,225,214,255,231,225,214,255,232,226,213,255,231,223,211,255, +228,219,204,255,221,210,191,255,210,194,166,255,194,173,141,255,178,155,126,255,167,142,116,255,158,134,109,255,154,128,105,255, +108, 95, 83,255, 60, 61, 61,255, 60, 60, 60,255,139,131,116,255,213,196,166,255,210,193,165,255,211,194,164,255,211,194,165,255, +211,192,164,255,210,193,163,255,210,193,164,255,210,191,163,255,210,192,163,255,210,192,162,255,208,190,160,255,206,186,155,255, +200,179,146,255,189,166,135,255,173,148,121,255,154,128,105,255,136,109, 90,255,123, 94, 79,255,113, 84, 71,255,108, 78, 68,255, +107, 78, 67,255,111, 82, 70,255,118, 89, 75,255,128, 99, 83,255,139,111, 92,255,152,125,102,255,164,138,113,255,176,152,123,255, +187,164,133,255,198,177,144,255,209,190,160,255,216,201,177,255,222,210,190,255,226,216,198,255,227,217,201,255,224,215,197,255, +220,209,189,255,219,207,188,255,223,213,196,255,227,218,203,255,225,216,199,255,219,205,183,255,210,193,165,255,202,183,150,255, +198,176,143,255,194,172,140,255,193,171,139,255,192,170,138,255,191,169,138,255,191,169,137,255,190,167,136,255,189,168,135,255, +189,167,135,255,188,165,134,255,187,165,133,255,184,161,131,255,179,156,126,255,170,145,119,255,155,130,106,255,134,107, 89,255, +110, 81, 69,255, 85, 62, 55,255, 68, 54, 48,255, 65, 52, 47,255, 67, 53, 47,255, 77, 58, 51,255, 96, 68, 60,255,113, 83, 70,255, +129,101, 84,255,144,117, 97,255,159,133,109,255,172,148,121,255,184,161,131,255,196,175,142,255,207,188,158,255,215,200,176,255, +221,210,190,255,226,217,201,255,229,222,208,255,231,225,213,255,232,226,214,255,231,226,214,255,232,226,214,255,231,225,213,255, +229,222,209,255,225,217,200,255,218,205,183,255,204,185,155,255,187,166,134,255,173,149,122,255,163,138,113,255,157,130,107,255, +109, 96, 84,255, 60, 61, 61,255, 60, 60, 60,255,140,131,116,255,213,196,168,255,212,195,167,255,212,195,166,255,212,194,166,255, +211,194,166,255,211,194,165,255,211,193,165,255,211,193,165,255,210,193,164,255,210,192,163,255,209,192,162,255,208,189,159,255, +204,184,151,255,196,174,141,255,182,158,129,255,164,139,113,255,146,119, 98,255,130,102, 84,255,117, 88, 75,255,110, 81, 69,255, +107, 78, 67,255,108, 79, 68,255,114, 85, 72,255,122, 93, 79,255,133,105, 87,255,145,118, 97,255,157,131,107,255,169,145,118,255, +181,157,127,255,192,170,137,255,203,183,151,255,212,195,168,255,219,206,184,255,224,213,195,255,227,217,201,255,226,218,202,255, +224,213,196,255,220,208,188,255,222,210,191,255,226,217,200,255,227,219,204,255,224,214,195,255,216,201,177,255,207,189,159,255, +201,180,147,255,196,175,141,255,194,172,139,255,193,171,139,255,192,170,138,255,192,170,138,255,191,169,137,255,191,168,137,255, +190,168,136,255,189,167,135,255,188,165,134,255,187,164,133,255,183,160,130,255,177,153,124,255,166,141,115,255,150,123,101,255, +127, 98, 82,255,101, 73, 63,255, 78, 59, 52,255, 66, 53, 47,255, 65, 53, 47,255, 69, 55, 48,255, 83, 61, 54,255,102, 73, 63,255, +119, 90, 75,255,134,106, 88,255,149,123,101,255,163,138,113,255,176,153,124,255,188,167,135,255,200,179,147,255,210,193,165,255, +217,204,181,255,223,213,194,255,228,219,204,255,230,223,210,255,231,225,213,255,232,225,214,255,231,226,214,255,232,226,214,255, +231,225,212,255,229,221,207,255,223,213,195,255,213,198,173,255,198,178,146,255,181,158,128,255,168,145,118,255,160,135,110,255, +110, 97, 84,255, 60, 61, 61,255, 60, 60, 60,255,140,132,118,255,214,197,169,255,212,195,168,255,212,195,167,255,211,195,167,255, +211,194,167,255,212,194,167,255,211,194,166,255,211,194,166,255,211,194,165,255,210,193,165,255,210,193,164,255,210,192,163,255, +207,188,156,255,201,180,148,255,190,168,136,255,174,150,122,255,156,130,106,255,138,110, 91,255,123, 95, 80,255,114, 85, 72,255, +108, 79, 68,255,108, 79, 67,255,111, 82, 69,255,117, 88, 74,255,127, 98, 82,255,138,110, 91,255,149,123,101,255,162,137,112,255, +174,150,122,255,186,163,132,255,197,176,142,255,207,188,158,255,215,200,176,255,222,210,190,255,226,217,200,255,227,219,203,255, +226,217,201,255,222,211,194,255,220,207,188,255,223,213,195,255,227,219,204,255,227,219,203,255,221,209,190,255,213,197,171,255, +205,186,155,255,199,178,145,255,195,174,141,255,193,172,139,255,193,171,138,255,192,170,138,255,191,169,138,255,191,169,137,255, +191,168,137,255,190,168,136,255,189,167,135,255,188,165,134,255,186,164,133,255,182,159,128,255,174,150,123,255,162,137,111,255, +143,116, 95,255,119, 90, 76,255, 93, 67, 58,255, 73, 56, 50,255, 65, 53, 47,255, 65, 54, 48,255, 73, 57, 50,255, 89, 64, 56,255, +107, 79, 67,255,124, 95, 79,255,139,112, 93,255,154,128,105,255,167,143,117,255,181,157,128,255,193,171,139,255,203,184,153,255, +212,197,172,255,219,207,187,255,225,215,198,255,228,221,206,255,231,224,211,255,231,225,213,255,232,227,215,255,231,226,214,255, +232,226,213,255,230,224,211,255,227,219,203,255,220,208,188,255,208,190,162,255,191,170,137,255,176,152,123,255,165,140,115,255, +112, 98, 86,255, 60, 61, 61,255, 60, 60, 60,255,141,133,120,255,215,199,172,255,212,196,169,255,213,197,169,255,213,196,169,255, +213,196,169,255,212,196,168,255,212,195,168,255,212,195,168,255,212,195,167,255,212,195,167,255,210,193,166,255,210,193,165,255, +209,192,162,255,205,185,153,255,197,175,142,255,184,161,131,255,166,140,116,255,148,121, 99,255,131,103, 85,255,119, 90, 75,255, +111, 82, 69,255,107, 78, 67,255,108, 79, 68,255,113, 84, 71,255,121, 92, 78,255,131,103, 86,255,142,116, 96,255,155,129,105,255, +168,143,116,255,179,156,126,255,191,168,137,255,202,181,148,255,211,194,166,255,218,205,182,255,224,213,195,255,227,218,202,255, +227,219,204,255,225,216,199,255,221,210,191,255,220,209,190,255,225,216,199,255,228,220,206,255,226,217,200,255,219,205,184,255, +210,193,165,255,203,184,151,255,197,177,144,255,195,174,141,255,193,171,139,255,193,171,139,255,192,170,138,255,191,169,138,255, +191,169,137,255,191,167,137,255,190,168,136,255,189,167,135,255,187,165,134,255,185,162,132,255,180,157,127,255,171,146,119,255, +156,130,107,255,135,107, 89,255,111, 82, 70,255, 85, 62, 55,255, 70, 55, 49,255, 64, 53, 47,255, 67, 54, 48,255, 77, 59, 52,255, + 95, 68, 60,255,113, 83, 71,255,129,101, 83,255,144,117, 97,255,159,134,109,255,172,148,121,255,185,162,132,255,196,176,143,255, +207,189,160,255,215,201,177,255,222,210,191,255,226,217,202,255,229,223,209,255,231,225,213,255,232,226,214,255,232,227,215,255, +231,226,214,255,231,225,213,255,229,222,208,255,225,215,198,255,216,202,179,255,201,183,151,255,184,162,131,255,171,147,119,255, +114,101, 88,255, 60, 61, 61,255, 60, 60, 60,255,142,135,123,255,216,201,176,255,214,198,171,255,214,198,170,255,213,197,170,255, +212,197,170,255,212,197,170,255,213,196,169,255,213,196,169,255,212,196,168,255,212,195,168,255,211,195,167,255,211,194,166,255, +211,193,165,255,208,190,159,255,202,182,149,255,192,170,137,255,176,152,124,255,158,131,108,255,140,112, 92,255,125, 97, 81,255, +114, 85, 72,255,109, 80, 68,255,107, 78, 67,255,110, 81, 69,255,116, 87, 74,255,125, 97, 81,255,136,108, 90,255,148,122,100,255, +160,134,110,255,172,148,120,255,184,161,130,255,195,174,141,255,206,187,157,255,215,199,173,255,221,209,189,255,226,216,199,255, +228,220,205,255,227,219,204,255,224,214,198,255,220,209,191,255,222,212,194,255,227,219,203,255,228,220,205,255,224,214,195,255, +216,201,178,255,208,190,160,255,201,181,148,255,197,176,142,255,194,172,140,255,194,172,139,255,193,171,139,255,192,170,138,255, +192,170,138,255,191,169,137,255,190,168,137,255,190,168,136,255,189,167,135,255,187,165,134,255,184,161,131,255,177,154,125,255, +166,142,116,255,150,124,101,255,128, 99, 83,255,102, 75, 64,255, 79, 59, 52,255, 67, 54, 47,255, 65, 53, 47,255, 70, 55, 49,255, + 82, 61, 53,255,101, 73, 63,255,118, 89, 75,255,134,106, 88,255,149,123,101,255,163,138,113,255,177,153,125,255,189,167,136,255, +200,180,148,255,210,193,167,255,218,205,183,255,223,214,196,255,228,220,205,255,230,224,210,255,232,226,213,255,231,226,214,255, +232,227,215,255,231,226,214,255,231,224,212,255,228,220,206,255,221,211,192,255,210,195,168,255,194,174,142,255,178,155,126,255, +117,105, 90,255, 60, 60, 61,255, 60, 60, 60,255,143,137,126,255,219,204,181,255,215,199,174,255,214,198,172,255,214,198,171,255, +213,197,171,255,213,197,171,255,212,197,170,255,212,196,170,255,212,196,170,255,213,196,169,255,212,196,168,255,212,195,168,255, +211,194,167,255,210,193,164,255,206,187,156,255,198,178,144,255,186,163,132,255,168,144,117,255,150,123,101,255,133,105, 87,255, +120, 91, 77,255,111, 82, 71,255,108, 79, 67,255,108, 79, 67,255,113, 84, 70,255,120, 91, 77,255,129,102, 84,255,141,113, 94,255, +153,127,104,255,165,140,114,255,177,153,124,255,188,166,135,255,200,179,146,255,210,192,163,255,217,203,181,255,224,213,194,255, +227,219,202,255,229,221,206,255,226,218,203,255,223,213,196,255,221,210,191,255,224,215,198,255,228,221,206,255,228,219,205,255, +222,210,190,255,213,198,172,255,205,187,156,255,200,179,146,255,196,175,141,255,195,172,140,255,193,171,139,255,193,171,138,255, +192,170,138,255,191,169,138,255,191,169,137,255,190,168,137,255,190,168,135,255,189,167,135,255,187,165,133,255,182,159,129,255, +174,151,123,255,162,137,112,255,144,116, 96,255,120, 91, 76,255, 94, 67, 59,255, 73, 56, 50,255, 65, 54, 48,255, 66, 54, 48,255, + 73, 57, 50,255, 88, 64, 56,255,108, 78, 67,255,124, 95, 80,255,139,112, 93,255,154,128,106,255,168,144,117,255,181,158,128,255, +193,172,140,255,204,185,155,255,213,198,173,255,219,208,188,255,225,216,200,255,228,221,207,255,231,225,212,255,232,226,214,255, +231,227,215,255,232,226,214,255,232,225,213,255,230,223,210,255,226,217,201,255,218,205,184,255,204,186,157,255,188,166,134,255, +121,109, 94,255, 60, 60, 61,255, 60, 60, 60,255,145,139,128,255,221,208,187,255,216,202,179,255,215,200,174,255,215,199,174,255, +215,199,173,255,214,199,173,255,214,198,172,255,214,198,172,255,214,198,171,255,213,197,171,255,213,197,170,255,213,196,170,255, +213,196,169,255,211,194,167,255,210,191,162,255,204,184,152,255,194,172,139,255,179,154,126,255,160,134,109,255,142,115, 95,255, +127, 99, 82,255,116, 87, 73,255,109, 80, 69,255,107, 78, 67,255,109, 80, 69,255,115, 86, 73,255,124, 95, 80,255,134,106, 88,255, +145,119, 98,255,158,132,108,255,170,146,119,255,182,158,129,255,193,171,139,255,204,184,152,255,213,197,171,255,220,207,186,255, +225,215,198,255,228,220,205,255,229,221,206,255,226,218,201,255,222,211,193,255,221,211,193,255,226,218,201,255,230,222,208,255, +227,218,201,255,219,206,185,255,211,194,166,255,204,184,152,255,198,177,144,255,195,174,141,255,195,173,140,255,194,172,139,255, +193,171,139,255,192,170,138,255,191,170,138,255,191,169,137,255,189,167,135,255,190,168,136,255,188,166,135,255,186,163,132,255, +180,157,128,255,170,147,119,255,157,131,107,255,136,108, 90,255,111, 82, 70,255, 86, 63, 55,255, 69, 55, 49,255, 66, 53, 47,255, + 67, 54, 48,255, 77, 59, 51,255, 95, 68, 59,255,113, 84, 71,255,129,101, 84,255,144,117, 97,255,159,134,110,255,173,149,121,255, +185,163,132,255,197,176,144,255,208,190,161,255,215,202,179,255,222,211,192,255,227,218,203,255,229,223,209,255,231,225,213,255, +232,226,214,255,232,227,215,255,232,226,214,255,231,225,212,255,228,221,207,255,223,213,196,255,213,198,174,255,199,179,146,255, +125,114, 98,255, 60, 60, 61,255, 60, 60, 60,255,141,135,124,255,223,211,191,255,219,206,184,255,216,202,178,255,215,200,175,255, +214,199,174,255,215,200,174,255,215,199,173,255,214,199,173,255,214,198,172,255,214,198,172,255,213,198,171,255,213,197,171,255, +212,197,170,255,212,196,169,255,211,194,166,255,207,189,159,255,200,180,147,255,188,166,134,255,171,147,119,255,152,126,103,255, +135,108, 89,255,122, 93, 79,255,113, 84, 71,255,108, 79, 67,255,108, 79, 67,255,111, 82, 69,255,119, 89, 75,255,127, 99, 83,255, +138,111, 92,255,150,124,102,255,163,137,112,255,174,150,122,255,186,164,132,255,197,176,143,255,208,189,159,255,216,201,178,255, +222,211,191,255,226,217,200,255,228,220,205,255,227,219,204,255,225,215,198,255,221,211,192,255,223,213,196,255,228,220,205,255, +229,222,208,255,225,215,197,255,216,202,179,255,208,190,161,255,202,182,149,255,198,176,143,255,195,173,141,255,194,173,140,255, +194,172,139,255,192,171,138,255,192,170,138,255,192,170,138,255,191,169,137,255,190,168,136,255,189,167,135,255,188,166,134,255, +184,161,131,255,178,154,125,255,167,143,116,255,151,124,102,255,128,100, 83,255,103, 75, 65,255, 79, 59, 52,255, 67, 54, 48,255, + 65, 53, 48,255, 69, 55, 49,255, 82, 61, 54,255,101, 72, 63,255,119, 89, 75,255,135,107, 89,255,149,124,101,255,164,139,114,255, +177,155,125,255,189,168,136,255,201,181,149,255,211,194,168,255,218,205,184,255,224,214,197,255,228,221,206,255,231,224,211,255, +231,226,214,255,231,227,215,255,231,227,215,255,232,226,214,255,230,224,211,255,227,219,204,255,220,208,188,255,209,191,163,255, +131,120,103,255, 60, 60, 60,255, 60, 60, 60,255,136,129,117,255,220,208,187,255,222,210,189,255,218,205,183,255,216,201,177,255, +215,200,175,255,215,200,175,255,214,199,174,255,214,199,174,255,214,199,174,255,213,198,173,255,214,198,172,255,214,198,172,255, +213,197,171,255,213,197,171,255,213,196,169,255,210,193,165,255,205,186,154,255,196,175,142,255,181,159,129,255,164,139,113,255, +145,118, 98,255,129,101, 85,255,118, 89, 75,255,111, 82, 69,255,107, 78, 67,255,108, 79, 67,255,113, 84, 71,255,121, 93, 77,255, +132,103, 86,255,142,115, 95,255,154,129,105,255,167,142,116,255,179,155,126,255,190,168,136,255,201,181,149,255,209,192,164,255, +216,202,178,255,221,209,189,255,224,214,196,255,226,217,201,255,225,217,200,255,222,213,195,255,222,211,192,255,225,216,200,255, +229,222,208,255,229,221,206,255,222,211,192,255,213,198,173,255,206,188,157,255,201,180,147,255,197,175,142,255,195,173,141,255, +194,173,140,255,193,171,139,255,192,171,138,255,192,170,138,255,192,169,138,255,191,169,137,255,190,168,136,255,189,166,135,255, +187,165,133,255,183,160,130,255,175,151,123,255,162,138,113,255,144,117, 96,255,120, 92, 77,255, 94, 68, 59,255, 73, 56, 50,255, + 65, 54, 47,255, 66, 54, 47,255, 73, 57, 50,255, 88, 65, 56,255,107, 78, 67,255,124, 95, 80,255,139,112, 93,255,154,129,106,255, +169,144,118,255,181,159,129,255,194,173,140,255,205,186,156,255,213,199,174,255,220,209,189,255,226,216,201,255,229,222,208,255, +230,225,212,255,232,226,214,255,232,227,215,255,232,226,214,255,231,225,213,255,229,222,209,255,224,215,198,255,216,203,180,255, +136,127,112,255, 60, 60, 60,255, 60, 60, 60,255,144,138,128,255,208,195,173,255,223,212,193,255,221,209,188,255,218,204,181,255, +216,202,177,255,216,201,177,255,216,201,176,255,215,200,176,255,215,200,175,255,215,200,175,255,215,199,174,255,215,199,174,255, +214,199,173,255,214,198,172,255,213,197,171,255,213,196,169,255,208,191,161,255,203,183,150,255,191,169,137,255,175,151,123,255, +156,130,106,255,138,111, 91,255,124, 96, 81,255,114, 85, 72,255,108, 79, 68,255,107, 78, 67,255,109, 80, 69,255,116, 87, 74,255, +124, 96, 80,255,134,107, 89,255,146,120, 98,255,159,133,109,255,171,146,120,255,183,160,129,255,193,171,139,255,202,182,149,255, +209,191,161,255,212,197,171,255,215,201,177,255,217,203,180,255,219,206,184,255,222,209,190,255,221,210,192,255,222,213,195,255, +227,218,204,255,229,223,209,255,227,218,203,255,220,207,186,255,211,195,168,255,204,185,153,255,200,179,146,255,196,174,142,255, +195,174,141,255,194,173,140,255,193,171,139,255,193,171,139,255,192,170,138,255,192,170,138,255,191,169,137,255,190,167,136,255, +189,166,135,255,186,163,132,255,180,157,128,255,171,148,120,255,157,132,108,255,136,109, 91,255,112, 82, 71,255, 87, 63, 55,255, + 69, 55, 49,255, 66, 53, 47,255, 68, 54, 48,255, 77, 58, 52,255, 95, 68, 60,255,113, 84, 71,255,129,101, 84,255,145,118, 97,255, +160,134,110,255,173,149,122,255,186,163,132,255,198,177,144,255,208,191,163,255,216,203,180,255,222,212,194,255,227,219,204,255, +230,223,210,255,231,226,214,255,232,226,215,255,231,227,214,255,231,225,214,255,230,225,212,255,228,220,206,255,222,212,193,255, +141,133,121,255, 60, 60, 60,255, 60, 60, 60,255,146,140,130,255,219,207,187,255,212,199,178,255,224,213,193,255,220,207,186,255, +218,204,180,255,217,202,178,255,216,202,177,255,215,201,177,255,216,201,176,255,216,201,175,255,215,200,175,255,215,200,174,255, +215,199,174,255,214,199,173,255,214,198,173,255,213,198,171,255,211,194,167,255,207,189,158,255,199,178,145,255,185,163,132,255, +167,143,117,255,149,123,101,255,133,105, 87,255,120, 91, 77,255,112, 83, 70,255,108, 78, 67,255,108, 79, 67,255,112, 82, 70,255, +119, 90, 76,255,128, 99, 84,255,139,111, 92,255,151,125,103,255,164,138,113,255,175,152,123,255,185,162,132,255,193,171,139,255, +197,176,143,255,196,175,143,255,192,170,139,255,189,166,135,255,190,168,138,255,198,178,148,255,208,191,164,255,218,206,184,255, +225,215,198,255,229,221,207,255,230,222,209,255,225,216,198,255,217,203,181,255,209,192,163,255,203,183,151,255,198,177,144,255, +195,174,141,255,194,174,140,255,194,172,140,255,193,171,139,255,192,170,139,255,192,170,138,255,191,170,138,255,191,168,136,255, +189,168,136,255,188,166,135,255,185,162,131,255,178,155,126,255,167,143,117,255,151,125,103,255,129,101, 84,255,103, 75, 64,255, + 79, 60, 52,255, 67, 54, 48,255, 65, 54, 47,255, 69, 55, 50,255, 82, 61, 54,255,101, 73, 63,255,119, 90, 76,255,135,107, 89,255, +150,124,102,255,164,140,114,255,178,154,126,255,190,169,136,255,202,182,150,255,211,195,169,255,218,206,185,255,224,215,198,255, +228,221,206,255,230,224,211,255,231,225,214,255,232,226,214,255,232,225,214,255,231,225,213,255,229,223,210,255,227,218,202,255, +144,138,128,255, 60, 60, 60,255, 60, 60, 60,255,144,138,128,255,224,213,193,255,214,202,181,255,218,208,188,255,222,211,192,255, +220,207,185,255,217,203,180,255,216,202,178,255,216,201,178,255,216,201,177,255,215,201,177,255,215,200,176,255,215,200,176,255, +214,199,175,255,214,199,174,255,214,199,174,255,214,198,173,255,213,198,171,255,211,193,165,255,204,185,154,255,195,173,140,255, +179,156,126,255,161,135,111,255,143,116, 95,255,128,100, 83,255,117, 88, 74,255,110, 81, 68,255,107, 78, 66,255,109, 79, 68,255, +114, 84, 72,255,122, 92, 78,255,132,104, 86,255,144,117, 96,255,156,131,107,255,168,143,117,255,178,154,125,255,182,159,129,255, +178,155,125,255,168,144,118,255,160,137,113,255,158,133,110,255,159,135,112,255,164,140,116,255,175,153,124,255,195,174,144,255, +214,199,175,255,226,216,200,255,229,222,208,255,229,221,207,255,223,212,194,255,214,200,175,255,207,189,159,255,201,181,148,255, +197,176,143,255,195,173,141,255,194,172,140,255,194,172,140,255,193,171,138,255,192,170,138,255,191,170,138,255,190,168,137,255, +191,169,136,255,190,168,136,255,188,165,134,255,183,160,130,255,175,152,123,255,163,138,113,255,144,118, 97,255,121, 92, 77,255, + 95, 69, 60,255, 74, 57, 51,255, 66, 54, 47,255, 66, 55, 48,255, 73, 57, 51,255, 89, 65, 56,255,107, 78, 67,255,124, 96, 80,255, +140,113, 93,255,155,129,106,255,169,144,118,255,182,159,129,255,194,173,141,255,204,187,156,255,214,199,176,255,220,209,190,255, +225,217,201,255,229,222,208,255,231,225,212,255,231,226,213,255,231,226,215,255,231,226,213,255,231,225,212,255,229,222,207,255, +146,142,133,255, 60, 60, 60,255, 60, 60, 60,255,143,136,125,255,223,212,192,255,222,211,192,255,213,201,181,255,224,214,196,255, +222,211,191,255,219,206,183,255,218,204,180,255,217,203,179,255,217,203,179,255,217,203,179,255,216,202,178,255,215,201,177,255, +216,201,177,255,215,200,176,255,215,200,175,255,214,200,175,255,214,198,173,255,212,197,170,255,210,192,163,255,202,182,150,255, +190,168,136,255,173,149,121,255,154,128,105,255,137,109, 91,255,123, 95, 79,255,114, 84, 72,255,109, 79, 68,255,108, 78, 67,255, +110, 80, 69,255,117, 87, 73,255,125, 96, 81,255,137,109, 90,255,150,123,101,255,161,136,111,255,168,144,117,255,164,140,114,255, +155,130,108,255,148,124,104,255,144,120,102,255,144,120,101,255,144,120,103,255,148,124,104,255,156,131,109,255,168,144,118,255, +189,166,135,255,212,196,169,255,225,215,197,255,229,221,207,255,227,219,203,255,220,208,188,255,212,196,170,255,205,186,156,255, +200,179,146,255,197,176,142,255,195,173,141,255,195,172,140,255,194,172,139,255,193,171,138,255,193,171,139,255,192,170,138,255, +191,168,137,255,190,169,137,255,189,167,135,255,186,163,133,255,181,158,128,255,173,148,121,255,158,133,109,255,137,109, 91,255, +113, 84, 70,255, 87, 64, 56,255, 70, 56, 49,255, 65, 54, 48,255, 68, 55, 49,255, 77, 59, 52,255, 95, 69, 60,255,113, 84, 71,255, +129,101, 84,255,144,118, 97,255,159,135,110,255,173,150,122,255,186,164,133,255,198,178,145,255,208,191,163,255,216,203,181,255, +222,212,194,255,226,219,204,255,229,223,210,255,230,225,213,255,231,226,213,255,232,225,214,255,231,226,213,255,231,225,212,255, +148,144,137,255, 59, 60, 60,255, 60, 60, 60,255,142,134,121,255,221,208,187,255,223,213,195,255,216,204,184,255,217,206,187,255, +225,215,197,255,221,209,189,255,219,206,183,255,217,204,181,255,217,203,180,255,216,202,179,255,216,203,179,255,216,202,178,255, +216,202,178,255,215,201,177,255,216,201,176,255,215,200,176,255,214,200,175,255,214,199,173,255,212,195,169,255,207,189,159,255, +198,178,145,255,185,161,131,255,166,142,115,255,148,122, 99,255,132,104, 86,255,120, 91, 76,255,112, 82, 70,255,108, 78, 67,255, +108, 78, 67,255,113, 83, 71,255,120, 91, 77,255,131,103, 85,255,144,117, 96,255,155,130,106,255,157,131,108,255,150,125,104,255, +143,119,101,255,140,116,100,255,140,116, 99,255,141,117,100,255,145,120,101,255,150,126,105,255,157,132,109,255,166,142,116,255, +177,154,124,255,194,172,140,255,211,195,168,255,223,212,194,255,228,219,204,255,225,216,199,255,218,205,183,255,210,193,165,255, +203,184,152,255,198,178,144,255,196,174,142,255,195,173,141,255,194,172,140,255,193,172,139,255,193,171,139,255,192,170,138,255, +191,170,137,255,190,169,136,255,189,167,136,255,188,166,134,255,185,163,132,255,179,155,126,255,168,144,117,255,152,126,103,255, +129,101, 84,255,104, 76, 65,255, 80, 60, 53,255, 68, 55, 49,255, 66, 54, 48,255, 70, 56, 49,255, 82, 62, 54,255,101, 73, 63,255, +118, 90, 75,255,134,106, 88,255,149,124,102,255,164,140,114,255,177,154,126,255,190,168,137,255,202,182,151,255,211,196,169,255, +218,206,186,255,224,214,198,255,228,220,206,255,230,224,211,255,231,225,213,255,231,226,214,255,231,226,214,255,232,226,213,255, +148,145,138,255, 59, 60, 60,255, 60, 60, 60,255,139,131,116,255,218,203,180,255,222,211,191,255,225,215,197,255,209,197,177,255, +223,214,195,255,224,214,196,255,220,208,187,255,218,205,182,255,217,204,181,255,217,203,180,255,217,203,180,255,216,202,179,255, +216,202,178,255,216,202,178,255,215,201,178,255,216,201,177,255,215,200,176,255,215,200,175,255,213,198,173,255,211,194,167,255, +205,186,155,255,195,172,140,255,179,155,126,255,160,134,110,255,142,115, 95,255,128, 99, 83,255,117, 87, 74,255,111, 81, 69,255, +108, 78, 67,255,109, 79, 68,255,116, 86, 74,255,126, 98, 82,255,140,114, 94,255,150,124,102,255,148,123,102,255,142,118,101,255, +140,116,100,255,140,116,100,255,143,119,102,255,149,124,104,255,158,134,110,255,167,143,117,255,177,153,124,255,186,163,132,255, +192,170,138,255,200,179,146,255,207,189,159,255,216,202,178,255,224,213,194,255,227,217,202,255,224,213,195,255,215,202,178,255, +207,190,161,255,202,181,149,255,197,177,144,255,196,175,141,255,194,173,140,255,194,172,140,255,193,171,139,255,192,171,138,255, +192,170,138,255,191,169,137,255,190,168,136,255,189,167,136,255,188,165,134,255,183,161,130,255,176,153,124,255,164,138,113,255, +145,118, 98,255,121, 92, 78,255, 95, 69, 60,255, 74, 57, 51,255, 66, 55, 48,255, 67, 55, 48,255, 73, 58, 51,255, 89, 65, 57,255, +108, 79, 67,255,124, 95, 80,255,139,113, 93,255,154,129,106,255,168,145,118,255,182,159,129,255,194,173,141,255,204,187,156,255, +213,199,175,255,220,210,190,255,225,217,200,255,228,221,208,255,230,224,211,255,231,225,213,255,230,226,214,255,232,226,214,255, +149,146,139,255, 59, 60, 60,255, 60, 60, 60,255,137,127,111,255,214,197,170,255,220,207,186,255,224,215,196,255,224,214,196,255, +211,200,180,255,225,216,199,255,223,212,194,255,220,207,187,255,219,205,183,255,218,205,182,255,217,204,181,255,218,204,181,255, +218,204,180,255,217,203,180,255,217,203,179,255,216,202,178,255,216,202,177,255,216,201,177,255,215,200,176,255,213,198,172,255, +209,192,164,255,202,182,150,255,189,167,136,255,172,149,121,255,154,128,105,255,137,109, 90,255,123, 94, 79,255,114, 84, 72,255, +109, 80, 68,255,109, 79, 68,255,113, 83, 71,255,123, 95, 79,255,138,111, 91,255,145,120, 98,255,143,118,101,255,141,117,101,255, +143,119,101,255,149,124,104,255,158,134,110,255,170,146,119,255,182,159,129,255,192,170,138,255,199,179,146,255,205,186,154,255, +209,191,162,255,212,196,168,255,215,199,175,255,217,204,181,255,221,209,189,255,225,215,199,255,227,218,202,255,222,210,191,255, +213,198,172,255,206,188,157,255,201,180,147,255,197,176,143,255,196,175,142,255,195,173,141,255,194,172,140,255,193,171,139,255, +192,171,139,255,191,170,138,255,191,169,137,255,190,168,136,255,189,167,136,255,186,164,133,255,182,158,128,255,172,149,121,255, +158,133,109,255,138,110, 91,255,112, 83, 71,255, 87, 64, 55,255, 70, 56, 49,255, 66, 54, 49,255, 68, 55, 49,255, 78, 60, 52,255, + 95, 69, 60,255,113, 84, 71,255,128,101, 84,255,144,118, 98,255,159,135,110,255,173,150,122,255,186,164,133,255,198,177,145,255, +208,191,163,255,215,203,180,255,222,212,193,255,226,218,203,255,229,222,209,255,230,224,212,255,231,224,212,255,232,226,214,255, +149,146,140,255, 59, 60, 60,255, 60, 60, 60,255,134,123,106,255,210,191,160,255,216,202,178,255,222,211,191,255,226,216,199,255, +220,209,191,255,219,208,190,255,226,216,200,255,223,211,193,255,220,207,186,255,219,205,184,255,218,205,183,255,218,205,182,255, +217,204,181,255,218,203,181,255,217,203,180,255,216,202,179,255,217,202,179,255,216,202,178,255,215,201,177,255,215,200,175,255, +213,197,171,255,208,190,161,255,199,178,146,255,184,162,131,255,166,141,115,255,148,121,100,255,132,104, 86,255,120, 91, 77,255, +112, 83, 70,255,110, 80, 68,255,113, 83, 71,255,125, 96, 80,255,141,114, 94,255,146,121,101,255,145,121,103,255,148,123,104,255, +156,131,109,255,168,144,118,255,182,159,128,255,192,171,139,255,199,178,145,255,204,183,150,255,207,188,156,255,209,191,162,255, +211,194,167,255,213,198,173,255,216,202,179,255,218,205,184,255,220,208,188,255,223,213,195,255,227,218,202,255,226,217,201,255, +219,207,186,255,211,195,167,255,204,185,154,255,199,178,146,255,196,175,143,255,195,174,141,255,195,173,140,255,193,172,139,255, +193,171,139,255,192,171,138,255,191,169,137,255,191,169,137,255,190,168,136,255,189,166,135,255,185,163,132,255,179,156,126,255, +169,144,117,255,152,126,103,255,130,102, 84,255,104, 76, 65,255, 79, 60, 53,255, 67, 55, 48,255, 65, 54, 48,255, 70, 56, 49,255, + 83, 62, 54,255,101, 73, 63,255,118, 89, 75,255,134,106, 88,255,150,124,101,255,163,139,114,255,177,154,125,255,190,168,137,255, +201,182,150,255,211,195,168,255,217,206,185,255,223,214,197,255,227,220,205,255,229,223,210,255,230,224,212,255,232,226,214,255, +149,146,140,255, 59, 60, 60,255, 60, 60, 61,255,131,119,102,255,203,183,150,255,211,194,166,255,219,206,184,255,224,214,196,255, +226,217,200,255,213,201,183,255,225,216,200,255,226,216,199,255,222,211,191,255,219,207,185,255,219,206,184,255,218,205,183,255, +218,205,182,255,217,204,182,255,217,204,181,255,217,203,180,255,216,203,180,255,217,202,179,255,216,202,178,255,215,201,177,255, +215,200,175,255,212,195,168,255,205,187,155,255,195,173,141,255,179,156,126,255,160,135,110,255,143,115, 95,255,127, 99, 83,255, +118, 89, 74,255,112, 82, 70,255,114, 85, 72,255,128,100, 82,255,144,118, 97,255,150,126,105,255,154,130,108,255,164,139,114,255, +177,154,125,255,189,167,135,255,196,175,142,255,201,180,147,255,203,183,150,255,205,185,154,255,207,188,157,255,207,190,160,255, +210,192,164,255,211,194,168,255,213,198,173,255,216,202,178,255,217,205,182,255,221,209,189,255,225,216,199,255,228,220,206,255, +225,216,199,255,216,203,180,255,209,191,163,255,202,183,150,255,198,178,145,255,196,175,142,255,195,174,141,255,194,173,140,255, +193,172,139,255,193,171,139,255,192,170,138,255,191,169,137,255,191,169,137,255,189,167,135,255,187,165,134,255,184,161,131,255, +175,152,124,255,163,139,114,255,145,119, 97,255,121, 92, 77,255, 95, 69, 60,255, 73, 57, 50,255, 66, 54, 48,255, 67, 55, 48,255, + 73, 58, 51,255, 88, 65, 57,255,107, 78, 66,255,123, 95, 80,255,139,111, 92,255,154,128,106,255,168,144,118,255,181,158,129,255, +193,173,140,255,204,186,156,255,213,198,174,255,219,209,188,255,224,216,199,255,228,221,206,255,229,223,210,255,231,225,213,255, +149,146,139,255, 59, 60, 60,255, 60, 60, 61,255,128,115, 99,255,197,175,142,255,206,187,156,255,215,200,174,255,221,210,190,255, +226,217,199,255,224,215,198,255,212,201,182,255,227,219,203,255,225,215,198,255,222,210,191,255,219,207,186,255,219,206,185,255, +218,205,184,255,219,205,183,255,218,205,183,255,218,205,182,255,218,204,181,255,217,203,180,255,216,203,180,255,217,202,179,255, +216,201,178,255,214,199,174,255,210,193,165,255,203,183,151,255,190,168,137,255,173,149,121,255,154,128,105,255,138,110, 91,255, +124, 96, 80,255,118, 88, 75,255,119, 91, 76,255,135,108, 89,255,151,125,102,255,158,133,111,255,168,144,117,255,181,158,128,255, +192,170,138,255,199,177,144,255,201,181,148,255,203,183,150,255,204,185,153,255,205,187,155,255,207,188,157,255,207,189,160,255, +208,190,161,255,210,192,164,255,211,194,168,255,212,197,172,255,215,201,177,255,217,204,182,255,222,211,193,255,227,219,204,255, +228,221,207,255,223,212,195,255,215,200,176,255,207,189,159,255,201,181,148,255,197,176,143,255,196,174,142,255,195,173,141,255, +194,173,140,255,193,172,140,255,192,171,138,255,192,170,138,255,191,169,137,255,190,168,136,255,189,167,135,255,186,164,133,255, +181,158,128,255,172,149,121,255,158,134,109,255,137,110, 92,255,113, 83, 71,255, 86, 63, 56,255, 69, 56, 49,255, 65, 54, 49,255, + 68, 55, 48,255, 77, 59, 52,255, 94, 69, 60,255,112, 83, 70,255,128,100, 84,255,144,117, 96,255,158,133,109,255,172,149,121,255, +185,163,132,255,197,177,144,255,207,190,160,255,215,202,179,255,221,211,192,255,225,217,202,255,228,221,207,255,231,225,212,255, +149,146,139,255, 59, 60, 60,255, 60, 60, 61,255,124,112, 97,255,191,168,136,255,200,179,146,255,210,191,163,255,217,204,180,255, +224,213,195,255,228,219,204,255,221,211,194,255,215,205,187,255,228,219,203,255,224,214,196,255,221,210,189,255,220,207,186,255, +219,206,185,255,218,206,184,255,219,205,184,255,219,205,183,255,218,204,182,255,218,204,181,255,217,203,181,255,216,203,180,255, +217,202,179,255,215,201,178,255,213,198,172,255,208,191,162,255,200,179,147,255,185,162,132,255,167,143,116,255,149,122,100,255, +134,106, 88,255,124, 96, 80,255,126, 98, 81,255,144,118, 97,255,161,136,111,255,172,148,121,255,185,162,131,255,195,173,140,255, +199,178,145,255,202,181,148,255,203,183,150,255,204,185,153,255,205,187,155,255,205,187,156,255,207,188,158,255,207,189,159,255, +207,189,160,255,208,191,161,255,209,192,164,255,210,194,167,255,212,196,171,255,214,199,176,255,217,205,183,255,224,215,197,255, +229,222,208,255,228,221,206,255,221,209,189,255,212,197,170,255,204,186,156,255,200,180,147,255,196,175,142,255,195,174,141,255, +194,173,140,255,194,173,140,255,193,171,139,255,192,171,138,255,192,170,138,255,190,169,137,255,189,168,136,255,188,166,135,255, +185,162,132,255,178,155,126,255,168,144,118,255,152,127,104,255,129,101, 84,255,103, 75, 65,255, 79, 60, 53,255, 67, 55, 49,255, + 66, 55, 48,255, 70, 57, 49,255, 82, 62, 54,255,100, 73, 63,255,117, 88, 75,255,133,105, 87,255,148,122,100,255,162,138,113,255, +176,153,124,255,188,168,135,255,200,181,149,255,209,194,166,255,216,205,183,255,223,213,196,255,226,219,203,255,230,223,209,255, +149,146,138,255, 59, 60, 60,255, 60, 60, 61,255,121,109, 94,255,184,161,131,255,193,171,138,255,203,183,151,255,212,196,170,255, +220,208,186,255,226,216,198,255,228,220,204,255,218,209,192,255,222,213,197,255,227,218,202,255,224,213,194,255,221,209,189,255, +219,207,186,255,219,206,185,255,219,206,185,255,218,205,184,255,219,205,183,255,218,205,183,255,218,204,181,255,217,204,181,255, +217,203,180,255,216,202,179,255,215,201,177,255,212,196,170,255,207,188,158,255,196,174,143,255,180,156,127,255,162,136,111,255, +145,118, 97,255,133,106, 87,255,136,108, 89,255,154,128,105,255,173,149,120,255,185,162,132,255,194,172,139,255,198,177,144,255, +202,181,148,255,203,184,150,255,204,185,153,255,205,187,156,255,206,187,157,255,206,188,158,255,207,189,159,255,208,190,160,255, +208,189,159,255,207,190,161,255,208,191,162,255,209,192,164,255,210,193,166,255,211,196,170,255,214,199,174,255,220,208,187,255, +227,218,203,255,231,224,210,255,227,218,203,255,218,206,185,255,210,194,166,255,203,184,153,255,199,178,145,255,196,175,142,255, +195,174,141,255,194,173,140,255,193,171,139,255,193,171,139,255,192,170,138,255,190,169,137,255,191,168,136,255,190,168,136,255, +188,165,134,255,183,160,130,255,176,152,125,255,164,140,113,255,145,119, 97,255,120, 92, 77,255, 95, 68, 60,255, 74, 57, 51,255, + 66, 55, 48,255, 66, 55, 49,255, 73, 58, 51,255, 88, 64, 57,255,105, 77, 66,255,122, 93, 78,255,138,110, 92,255,152,127,104,255, +166,143,117,255,180,157,128,255,192,171,139,255,203,185,154,255,213,198,174,255,219,208,188,255,224,216,199,255,228,220,206,255, +148,144,137,255, 59, 60, 60,255, 60, 60, 61,255,118,105, 91,255,177,154,125,255,186,163,133,255,197,175,142,255,207,188,157,255, +215,200,175,255,222,211,191,255,227,218,202,255,227,219,203,255,215,205,188,255,227,219,204,255,227,218,201,255,223,213,194,255, +221,209,189,255,220,208,187,255,220,207,186,255,220,207,185,255,219,206,185,255,219,206,184,255,218,205,183,255,218,205,182,255, +218,204,182,255,217,204,181,255,216,202,179,255,214,200,177,255,211,195,167,255,204,185,153,255,192,169,138,255,175,151,123,255, +158,132,108,255,144,117, 96,255,147,120, 98,255,165,141,114,255,183,159,129,255,193,171,138,255,196,175,142,255,200,179,146,255, +203,183,151,255,204,185,153,255,206,187,156,255,207,188,157,255,207,189,159,255,208,190,160,255,208,190,160,255,207,189,160,255, +208,190,160,255,208,189,161,255,207,189,160,255,208,190,161,255,208,192,163,255,210,193,165,255,211,195,169,255,214,201,176,255, +222,211,192,255,228,221,207,255,230,224,210,255,225,215,198,255,216,202,180,255,208,191,162,255,202,182,151,255,197,177,144,255, +196,174,142,255,195,174,141,255,194,173,140,255,193,172,139,255,193,171,139,255,191,169,137,255,191,169,137,255,190,168,137,255, +189,167,135,255,186,164,133,255,181,159,129,255,173,149,121,255,158,133,109,255,137,109, 91,255,112, 84, 71,255, 87, 64, 56,255, + 71, 56, 50,255, 65, 55, 48,255, 68, 56, 49,255, 76, 59, 52,255, 93, 68, 59,255,111, 82, 70,255,126, 98, 81,255,141,115, 95,255, +157,131,108,255,170,147,120,255,183,161,131,255,196,177,144,255,207,190,163,255,215,201,178,255,221,210,192,255,226,217,201,255, +147,142,135,255, 59, 60, 60,255, 60, 61, 61,255,116,102, 89,255,172,147,120,255,180,156,127,255,190,167,135,255,200,179,146,255, +209,192,163,255,218,204,181,255,225,214,196,255,228,220,204,255,225,216,200,255,215,204,186,255,229,221,206,255,226,217,200,255, +223,212,193,255,221,209,189,255,220,208,187,255,219,207,186,255,219,207,186,255,219,206,185,255,219,206,184,255,218,205,183,255, +218,205,183,255,218,204,182,255,217,203,181,255,216,202,179,255,214,199,174,255,209,192,164,255,201,181,149,255,187,165,134,255, +170,146,119,255,156,130,107,255,156,130,106,255,174,149,121,255,190,167,135,255,194,172,140,255,197,175,143,255,201,180,148,255, +204,185,153,255,206,187,156,255,206,188,158,255,207,189,159,255,208,190,160,255,207,190,160,255,207,190,161,255,207,189,161,255, +208,189,161,255,208,190,160,255,208,190,161,255,207,189,160,255,208,190,161,255,208,191,162,255,209,192,165,255,211,195,169,255, +216,202,179,255,224,214,197,255,230,223,210,255,229,223,209,255,223,213,194,255,214,199,174,255,206,189,159,255,201,180,148,255, +197,176,143,255,195,174,141,255,194,173,140,255,194,172,140,255,193,171,139,255,191,170,138,255,191,170,137,255,190,168,137,255, +189,167,135,255,188,166,135,255,185,163,132,255,179,155,127,255,168,144,118,255,151,126,103,255,129,101, 84,255,103, 76, 65,255, + 80, 61, 53,255, 68, 55, 49,255, 65, 55, 48,255, 69, 56, 50,255, 81, 62, 54,255, 98, 71, 62,255,116, 86, 73,255,131,103, 86,255, +146,120, 98,255,160,136,111,255,175,152,123,255,189,168,137,255,201,183,151,255,209,193,166,255,216,204,181,255,223,213,195,255, +146,141,132,255, 60, 60, 60,255, 60, 61, 61,255,113,100, 87,255,167,142,114,255,173,149,122,255,183,159,130,255,193,171,138,255, +203,183,151,255,212,196,169,255,219,207,186,255,226,216,199,255,229,222,207,255,223,215,199,255,215,206,189,255,229,221,206,255, +225,216,199,255,223,211,192,255,221,209,189,255,220,208,187,255,220,207,187,255,219,207,186,255,218,206,185,255,218,206,184,255, +219,206,184,255,217,204,182,255,218,205,182,255,217,204,181,255,216,202,178,255,213,198,172,255,208,191,160,255,198,177,144,255, +183,160,130,255,169,145,118,255,167,142,116,255,178,155,126,255,191,169,137,255,194,172,140,255,197,176,142,255,201,181,149,255, +205,185,154,255,206,188,158,255,207,189,159,255,208,191,161,255,208,190,161,255,208,191,162,255,208,190,161,255,208,191,162,255, +207,189,160,255,208,189,160,255,208,189,160,255,208,189,160,255,208,189,160,255,207,190,161,255,209,191,163,255,209,192,165,255, +212,196,170,255,217,205,182,255,226,217,201,255,231,225,212,255,228,220,206,255,220,208,190,255,211,196,170,255,205,186,156,255, +200,179,146,255,197,176,143,255,194,173,141,255,194,172,140,255,193,172,139,255,192,171,138,255,191,170,137,255,191,169,137,255, +189,168,136,255,189,167,135,255,187,165,134,255,183,161,130,255,175,152,124,255,163,138,113,255,145,118, 98,255,121, 92, 78,255, + 95, 69, 60,255, 75, 58, 51,255, 66, 56, 49,255, 67, 56, 49,255, 72, 57, 50,255, 85, 64, 56,255,104, 76, 65,255,119, 91, 76,255, +135,108, 89,255,150,124,102,255,165,142,115,255,181,159,129,255,195,174,141,255,203,184,153,255,210,194,170,255,220,208,188,255, +144,139,129,255, 60, 60, 60,255, 60, 61, 61,255,111, 98, 85,255,162,136,112,255,168,143,117,255,176,152,124,255,185,163,132,255, +196,174,142,255,205,187,156,255,215,199,175,255,222,211,191,255,227,218,202,255,229,222,207,255,219,209,193,255,223,214,199,255, +228,220,206,255,225,215,198,255,222,211,192,255,221,209,189,255,221,209,188,255,220,208,187,255,220,208,187,255,220,207,186,255, +219,206,185,255,219,205,184,255,218,205,183,255,218,205,182,255,218,204,181,255,216,201,178,255,212,197,170,255,206,187,157,255, +194,173,141,255,180,157,128,255,174,150,122,255,182,160,129,255,190,168,136,255,193,172,139,255,197,176,143,255,201,181,149,255, +205,186,155,255,207,189,159,255,208,191,161,255,209,191,162,255,208,191,163,255,209,191,163,255,209,191,163,255,208,191,162,255, +207,191,162,255,207,191,162,255,208,190,161,255,207,189,160,255,206,190,161,255,206,189,160,255,207,189,161,255,208,191,163,255, +209,192,165,255,212,197,171,255,218,206,185,255,228,220,206,255,232,226,213,255,227,218,203,255,218,205,184,255,210,193,166,255, +203,184,152,255,198,177,145,255,195,174,142,255,195,173,141,255,194,172,140,255,192,171,139,255,192,171,138,255,191,170,138,255, +190,168,136,255,189,168,136,255,188,167,135,255,185,164,133,255,181,158,129,255,171,148,120,255,158,133,108,255,137,110, 91,255, +113, 84, 71,255, 88, 64, 56,255, 71, 57, 50,255, 66, 55, 48,255, 67, 56, 49,255, 76, 59, 52,255, 91, 67, 58,255,108, 80, 68,255, +124, 96, 80,255,139,112, 92,255,155,130,106,255,172,148,121,255,186,165,134,255,195,176,143,255,204,186,155,255,215,202,179,255, +142,136,125,255, 60, 60, 60,255, 60, 61, 61,255,110, 96, 84,255,158,132,108,255,163,138,112,255,170,145,118,255,179,156,126,255, +189,166,135,255,199,178,145,255,208,191,161,255,217,203,180,255,224,213,195,255,228,220,206,255,228,221,207,255,215,205,189,255, +229,221,206,255,228,219,204,255,224,214,197,255,222,211,192,255,221,209,189,255,221,208,188,255,220,208,187,255,219,207,187,255, +220,207,186,255,219,206,185,255,218,206,184,255,218,205,183,255,218,205,182,255,217,204,181,255,215,201,177,255,211,194,168,255, +203,184,152,255,191,169,137,255,180,157,128,255,181,158,128,255,189,167,135,255,193,171,138,255,197,175,143,255,201,180,148,255, +205,185,154,255,207,189,159,255,209,190,162,255,208,191,163,255,209,192,164,255,209,192,163,255,208,191,163,255,209,192,162,255, +208,191,162,255,208,190,162,255,207,191,162,255,207,189,161,255,206,190,160,255,207,190,160,255,206,189,160,255,207,190,160,255, +208,191,163,255,209,193,166,255,212,197,172,255,220,209,189,255,229,223,210,255,231,224,212,255,225,215,198,255,216,202,179,255, +208,191,162,255,202,182,150,255,197,177,144,255,196,175,141,255,194,173,140,255,193,172,139,255,192,171,138,255,192,170,138,255, +190,169,137,255,190,168,136,255,189,168,136,255,187,166,134,255,184,162,131,255,177,155,126,255,168,144,117,255,152,126,103,255, +130,101, 85,255,105, 77, 66,255, 81, 61, 54,255, 68, 56, 49,255, 65, 55, 48,255, 69, 56, 49,255, 79, 61, 53,255, 96, 70, 60,255, +113, 84, 71,255,127,100, 83,255,144,118, 97,255,161,137,112,255,176,154,125,255,188,167,135,255,197,177,145,255,209,192,164,255, +141,133,121,255, 60, 60, 60,255, 60, 61, 61,255,109, 96, 84,255,155,130,106,255,158,132,109,255,164,140,114,255,172,148,120,255, +181,159,128,255,191,169,137,255,201,181,149,255,211,194,167,255,219,206,185,255,225,216,199,255,229,222,208,255,227,220,205,255, +213,202,185,255,230,223,209,255,227,219,202,255,224,213,195,255,222,211,191,255,221,209,189,255,221,208,188,255,221,208,188,255, +220,208,187,255,220,206,185,255,219,207,185,255,219,206,185,255,217,204,183,255,218,205,183,255,217,203,181,255,214,200,175,255, +209,192,164,255,201,180,148,255,188,165,134,255,179,155,126,255,182,159,129,255,190,168,137,255,195,174,142,255,200,180,147,255, +204,184,154,255,207,188,159,255,208,190,162,255,208,192,164,255,208,193,165,255,208,192,164,255,209,191,163,255,208,192,164,255, +209,192,162,255,209,190,163,255,208,191,162,255,207,189,161,255,207,190,160,255,206,189,160,255,206,190,159,255,207,190,160,255, +207,189,160,255,209,192,163,255,210,194,167,255,213,198,173,255,224,213,196,255,231,224,212,255,229,222,209,255,222,212,194,255, +214,199,175,255,206,187,158,255,200,181,147,255,196,176,143,255,195,174,141,255,193,172,140,255,193,171,139,255,192,171,139,255, +191,169,137,255,190,169,137,255,189,168,136,255,188,166,135,255,186,164,133,255,182,160,130,255,175,152,124,255,163,139,113,255, +145,119, 98,255,122, 94, 79,255, 97, 71, 61,255, 75, 59, 51,255, 67, 55, 49,255, 66, 55, 49,255, 71, 58, 51,255, 83, 63, 54,255, +101, 73, 63,255,117, 88, 75,255,132,104, 87,255,149,123,101,255,165,141,115,255,179,157,127,255,189,168,136,255,201,182,150,255, +137,129,115,255, 60, 60, 60,255, 60, 61, 61,255,109, 95, 83,255,154,128,105,255,156,130,106,255,160,135,110,255,167,142,115,255, +174,151,123,255,184,161,131,255,194,173,140,255,204,185,153,255,214,198,173,255,221,210,190,255,227,218,202,255,230,223,210,255, +223,214,199,255,217,209,191,255,229,222,208,255,226,217,201,255,223,213,195,255,222,210,191,255,221,210,190,255,220,209,189,255, +221,209,188,255,220,208,187,255,220,207,186,255,219,207,186,255,218,206,185,255,218,205,184,255,218,205,182,255,217,203,180,255, +213,198,174,255,207,189,160,255,197,176,143,255,182,160,130,255,176,153,124,255,181,158,128,255,189,167,136,255,198,178,145,255, +203,183,152,255,206,187,158,255,207,190,161,255,209,192,164,255,209,192,165,255,210,193,164,255,209,192,164,255,209,192,164,255, +208,191,164,255,209,191,163,255,208,191,163,255,208,189,161,255,207,190,160,255,207,190,160,255,207,188,160,255,206,188,159,255, +207,189,160,255,207,190,161,255,209,192,164,255,210,194,168,255,216,202,179,255,226,218,203,255,231,224,212,255,228,221,206,255, +220,209,190,255,212,196,171,255,204,186,155,255,199,179,146,255,196,175,142,255,194,173,140,255,193,172,140,255,193,171,139,255, +191,170,138,255,191,169,137,255,190,168,136,255,188,167,135,255,187,166,134,255,185,163,132,255,180,157,128,255,171,148,121,255, +158,134,109,255,139,112, 93,255,115, 86, 73,255, 89, 66, 57,255, 71, 57, 50,255, 66, 55, 49,255, 67, 56, 49,255, 74, 58, 51,255, + 87, 65, 57,255,105, 77, 65,255,120, 92, 77,255,136,109, 91,255,152,127,104,255,168,145,118,255,181,159,129,255,192,171,139,255, +134,124,107,255, 60, 60, 60,255, 60, 61, 61,255,110, 96, 85,255,154,128,105,255,154,128,105,255,156,131,107,255,161,136,111,255, +168,144,117,255,177,153,125,255,187,164,133,255,197,176,143,255,207,189,159,255,216,202,178,255,223,213,194,255,228,220,206,255, +231,224,211,255,220,210,195,255,224,215,200,255,229,222,207,255,226,216,200,255,223,212,194,255,221,210,191,255,221,209,190,255, +220,209,189,255,221,208,188,255,220,208,187,255,220,207,186,255,219,206,186,255,218,206,185,255,218,205,184,255,217,204,182,255, +216,202,179,255,212,197,171,255,206,186,156,255,193,171,139,255,179,156,126,255,174,150,122,255,178,155,126,255,191,170,137,255, +202,181,150,255,205,187,156,255,207,190,161,255,209,192,163,255,209,193,165,255,209,193,165,255,210,192,165,255,209,192,164,255, +209,192,164,255,208,191,163,255,208,191,163,255,207,190,161,255,208,189,160,255,207,190,160,255,206,188,159,255,206,188,159,255, +206,188,159,255,208,190,161,255,208,191,162,255,210,193,165,255,211,197,171,255,219,207,186,255,228,220,205,255,230,224,211,255, +227,218,203,255,218,206,185,255,210,193,166,255,203,184,152,255,198,177,145,255,195,174,141,255,194,173,140,255,193,172,140,255, +192,171,138,255,191,170,137,255,190,168,137,255,188,167,135,255,188,166,135,255,186,164,133,255,183,161,131,255,177,155,125,255, +168,144,118,255,153,128,104,255,132,104, 86,255,107, 79, 67,255, 83, 62, 55,255, 69, 56, 50,255, 65, 57, 50,255, 68, 56, 50,255, + 77, 59, 52,255, 92, 68, 59,255,109, 80, 69,255,124, 96, 80,255,140,114, 94,255,156,131,108,255,171,148,120,255,184,162,131,255, +129,117,101,255, 60, 60, 61,255, 60, 61, 61,255,112, 99, 86,255,156,130,106,255,153,127,104,255,154,128,105,255,158,132,108,255, +164,138,113,255,171,147,119,255,179,156,127,255,190,167,136,255,201,180,147,255,209,193,165,255,218,205,183,255,225,215,198,255, +229,222,208,255,230,223,209,255,214,205,188,255,230,223,208,255,229,221,207,255,225,216,199,255,222,211,193,255,221,210,191,255, +221,210,190,255,221,209,188,255,221,208,189,255,220,208,188,255,220,207,186,255,219,207,186,255,218,206,185,255,218,205,183,255, +217,204,182,255,216,201,178,255,211,195,168,255,203,183,152,255,189,167,136,255,176,153,124,255,170,146,119,255,177,154,126,255, +195,175,142,255,204,185,153,255,206,188,159,255,209,191,163,255,209,192,164,255,210,192,165,255,209,194,166,255,210,193,165,255, +210,192,164,255,208,193,165,255,209,192,164,255,207,190,162,255,208,189,161,255,208,189,160,255,207,189,160,255,207,189,160,255, +206,189,160,255,207,189,160,255,207,190,161,255,208,191,163,255,211,194,167,255,214,199,175,255,221,210,191,255,227,220,206,255, +229,223,211,255,225,216,200,255,216,203,181,255,208,191,162,255,201,182,150,255,197,176,143,255,194,173,140,255,194,173,140,255, +192,171,138,255,191,170,138,255,191,169,137,255,189,167,135,255,188,167,135,255,188,166,134,255,185,163,132,255,182,159,129,255, +176,152,124,255,164,140,114,255,147,121,100,255,124, 96, 80,255, 99, 72, 62,255, 77, 60, 53,255, 67, 56, 49,255, 66, 56, 49,255, + 70, 57, 50,255, 79, 62, 54,255, 97, 71, 61,255,113, 84, 72,255,128,100, 84,255,144,118, 97,255,159,135,111,255,175,151,123,255, +124,113, 97,255, 60, 60, 61,255, 60, 61, 61,255,114,101, 88,255,160,134,109,255,155,129,105,255,154,128,105,255,155,130,106,255, +159,133,109,255,165,140,114,255,173,148,121,255,182,159,129,255,192,170,138,255,203,183,151,255,212,196,169,255,221,208,188,255, +227,218,202,255,231,224,211,255,227,220,206,255,215,205,188,255,230,223,209,255,228,220,205,255,225,215,197,255,222,211,193,255, +222,211,191,255,221,210,190,255,220,209,190,255,221,209,189,255,220,208,188,255,220,208,187,255,219,207,186,255,218,206,185,255, +218,205,183,255,217,204,182,255,215,200,176,255,209,193,164,255,200,180,147,255,186,163,132,255,171,148,120,255,166,141,114,255, +180,158,128,255,198,178,146,255,205,185,155,255,207,190,161,255,209,192,164,255,210,193,165,255,209,194,166,255,210,194,166,255, +209,194,166,255,209,192,165,255,209,193,165,255,209,192,164,255,208,191,162,255,207,190,161,255,208,190,161,255,207,189,160,255, +206,190,160,255,206,190,160,255,207,189,161,255,207,190,162,255,208,192,164,255,211,196,170,255,216,202,178,255,221,210,191,255, +227,220,206,255,229,222,209,255,223,213,196,255,214,200,176,255,207,188,159,255,200,180,148,255,196,175,142,255,194,173,140,255, +192,171,139,255,192,170,138,255,191,169,137,255,189,168,136,255,188,167,135,255,188,166,135,255,186,164,134,255,184,162,132,255, +180,157,128,255,172,149,121,255,160,135,110,255,140,114, 94,255,116, 88, 75,255, 91, 68, 59,255, 73, 58, 51,255, 66, 56, 49,255, + 66, 56, 49,255, 71, 58, 51,255, 84, 64, 56,255,101, 74, 64,255,117, 88, 74,255,132,104, 86,255,147,122,100,255,164,140,114,255, +119,108, 93,255, 60, 60, 61,255, 60, 60, 61,255,118,105, 91,255,165,139,114,255,158,132,108,255,154,129,105,255,154,128,105,255, +156,130,106,255,161,135,110,255,167,142,115,255,175,151,123,255,184,162,131,255,195,173,141,255,205,187,156,255,214,200,175,255, +223,211,192,255,228,220,204,255,232,225,213,255,225,217,202,255,218,209,193,255,230,223,210,255,227,218,204,255,224,214,197,255, +222,212,193,255,221,210,191,255,221,210,190,255,220,209,190,255,221,208,189,255,220,208,188,255,220,208,187,255,219,207,186,255, +218,206,185,255,218,205,183,255,217,204,181,255,213,199,174,255,208,190,161,255,197,176,144,255,181,158,129,255,166,141,115,255, +165,140,114,255,183,160,131,255,198,177,145,255,205,187,156,255,208,190,162,255,209,192,164,255,210,193,166,255,209,193,165,255, +210,193,166,255,210,192,166,255,210,193,166,255,208,191,165,255,208,191,163,255,208,191,162,255,208,191,162,255,207,189,161,255, +207,190,161,255,207,190,160,255,206,189,160,255,207,190,161,255,209,192,163,255,210,194,167,255,212,198,173,255,216,203,181,255, +222,211,193,255,229,221,207,255,228,220,205,255,221,211,191,255,212,197,172,255,204,186,156,255,198,178,145,255,195,174,141,255, +193,172,139,255,192,171,139,255,191,170,138,255,190,168,136,255,189,167,136,255,187,167,134,255,187,165,134,255,186,164,133,255, +183,161,130,255,177,155,126,255,169,145,118,255,154,129,106,255,134,107, 88,255,109, 81, 69,255, 85, 64, 56,255, 69, 57, 50,255, + 66, 56, 49,255, 67, 57, 50,255, 75, 59, 52,255, 89, 66, 57,255,106, 77, 66,255,120, 92, 77,255,136,108, 90,255,152,127,104,255, +114,101, 88,255, 60, 61, 61,255, 60, 60, 61,255,122,110, 95,255,172,147,119,255,162,136,112,255,157,131,107,255,155,129,105,255, +154,129,105,255,157,131,108,255,162,137,111,255,169,144,118,255,178,154,125,255,187,165,133,255,198,176,144,255,208,190,161,255, +216,203,180,255,224,214,196,255,229,222,208,255,231,225,212,255,221,213,198,255,225,217,202,255,230,223,209,255,227,218,202,255, +224,213,195,255,222,211,192,255,221,210,191,255,221,210,190,255,220,210,190,255,221,209,189,255,220,208,188,255,220,208,187,255, +219,207,186,255,218,206,185,255,218,205,183,255,217,203,180,255,213,197,172,255,206,188,158,255,194,172,140,255,177,153,125,255, +163,138,113,255,168,144,117,255,184,161,131,255,199,178,146,255,206,188,159,255,208,191,163,255,209,193,165,255,210,192,166,255, +209,193,166,255,210,193,166,255,210,193,166,255,209,192,164,255,209,192,163,255,208,191,163,255,208,190,161,255,208,189,162,255, +208,189,161,255,206,189,160,255,207,190,160,255,206,189,160,255,208,191,162,255,209,192,165,255,212,197,171,255,215,201,177,255, +218,206,186,255,224,214,197,255,227,220,205,255,225,217,201,255,218,207,187,255,210,194,167,255,203,183,152,255,197,177,144,255, +194,173,140,255,192,171,139,255,192,170,138,255,190,168,137,255,189,168,136,255,189,167,136,255,187,165,134,255,186,165,134,255, +185,163,132,255,181,159,129,255,175,152,123,255,164,141,115,255,149,123,101,255,127, 98, 83,255,103, 75, 64,255, 79, 61, 53,255, + 68, 57, 50,255, 67, 57, 50,255, 69, 58, 51,255, 77, 61, 54,255, 93, 68, 59,255,109, 80, 69,255,124, 95, 80,255,140,113, 93,255, +108, 94, 83,255, 60, 61, 61,255, 60, 60, 61,255,128,116,100,255,180,157,127,255,168,144,117,255,161,135,110,255,156,130,106,255, +154,128,105,255,155,129,105,255,158,132,109,255,164,138,113,255,171,147,119,255,179,157,127,255,190,168,136,255,200,180,148,255, +210,194,165,255,219,206,184,255,225,216,199,255,230,224,209,255,231,224,212,255,217,208,193,255,228,220,207,255,230,223,209,255, +226,217,201,255,223,213,195,255,222,211,192,255,222,211,192,255,221,210,191,255,220,210,190,255,221,209,189,255,220,208,188,255, +220,208,187,255,219,207,186,255,218,206,185,255,218,205,183,255,216,202,179,255,211,196,169,255,204,185,154,255,190,169,137,255, +173,149,122,255,164,138,113,255,169,146,118,255,185,163,132,255,201,181,150,255,207,190,160,255,209,192,163,255,209,192,165,255, +210,193,166,255,210,193,165,255,210,192,166,255,209,193,164,255,208,191,164,255,208,191,163,255,207,190,163,255,208,190,162,255, +207,190,161,255,207,190,161,255,207,189,160,255,206,189,160,255,207,190,161,255,208,192,164,255,211,194,168,255,213,199,175,255, +217,204,182,255,220,209,190,255,224,214,196,255,226,218,203,255,225,216,200,255,217,204,183,255,208,191,163,255,201,181,149,255, +196,175,142,255,193,172,139,255,192,171,139,255,191,169,137,255,190,168,136,255,189,168,136,255,188,166,135,255,187,165,134,255, +186,164,133,255,183,161,131,255,179,157,128,255,172,149,121,255,161,136,111,255,143,116, 96,255,120, 91, 77,255, 95, 70, 60,255, + 75, 59, 52,255, 67, 57, 50,255, 67, 57, 50,255, 71, 58, 51,255, 81, 63, 55,255, 97, 71, 61,255,112, 83, 71,255,128,100, 83,255, +101, 87, 77,255, 61, 61, 61,255, 60, 60, 60,255,134,124,107,255,192,169,137,255,176,153,124,255,166,142,115,255,159,134,110,255, +155,129,106,255,154,128,105,255,156,130,106,255,159,134,110,255,166,141,115,255,173,149,121,255,182,160,129,255,192,170,138,255, +202,183,151,255,212,196,169,255,220,208,188,255,227,218,202,255,231,224,211,255,229,223,210,255,215,206,190,255,230,222,210,255, +229,222,207,255,226,216,200,255,223,213,195,255,222,211,192,255,221,210,191,255,221,210,191,255,220,209,190,255,221,209,189,255, +220,208,188,255,220,207,187,255,219,207,186,255,218,206,185,255,217,205,183,255,215,201,177,255,211,194,167,255,201,182,150,255, +187,165,134,255,170,146,119,255,163,139,114,255,171,147,119,255,188,166,135,255,204,185,154,255,207,190,161,255,208,192,163,255, +210,193,166,255,209,192,166,255,210,193,165,255,208,192,164,255,209,192,164,255,209,192,163,255,208,191,163,255,207,191,162,255, +207,190,161,255,206,189,160,255,207,189,160,255,207,189,160,255,206,190,161,255,207,191,162,255,209,193,166,255,212,197,172,255, +215,203,180,255,218,205,185,255,218,207,187,255,223,214,197,255,227,220,206,255,223,214,197,255,214,201,178,255,206,188,159,255, +199,179,147,255,195,174,141,255,192,171,138,255,191,170,137,255,190,169,137,255,189,168,136,255,188,166,135,255,187,166,134,255, +185,164,133,255,184,163,132,255,182,160,130,255,177,155,126,255,169,145,118,255,156,131,107,255,136,109, 90,255,113, 84, 72,255, + 88, 66, 57,255, 71, 58, 51,255, 66, 57, 50,255, 67, 57, 50,255, 72, 59, 52,255, 85, 65, 56,255,101, 74, 64,255,115, 87, 74,255, + 95, 80, 72,255, 61, 61, 61,255, 60, 60, 60,255,140,132,119,255,204,184,153,255,187,164,133,255,174,150,122,255,164,139,114,255, +158,133,108,255,155,129,106,255,154,128,105,255,156,131,107,255,161,135,111,255,167,142,116,255,175,152,123,255,184,162,131,255, +194,172,140,255,205,185,155,255,213,198,174,255,221,210,190,255,228,219,204,255,231,225,213,255,229,222,209,255,216,207,192,255, +231,224,211,255,228,220,206,255,225,215,199,255,223,213,194,255,222,211,193,255,221,210,192,255,222,211,191,255,220,209,190,255, +221,209,189,255,220,209,188,255,220,207,187,255,219,207,186,255,219,206,185,255,217,204,183,255,214,200,176,255,209,192,164,255, +199,178,147,255,183,161,130,255,168,144,117,255,164,139,113,255,172,148,120,255,192,171,139,255,205,186,156,255,207,190,161,255, +208,191,163,255,210,193,165,255,209,192,164,255,209,193,164,255,209,192,165,255,209,191,164,255,208,191,163,255,207,190,162,255, +208,190,162,255,206,190,160,255,206,189,159,255,206,188,159,255,206,189,160,255,206,190,161,255,208,191,164,255,210,195,169,255, +214,200,176,255,214,200,176,255,206,190,162,255,216,204,183,255,228,222,209,255,228,222,208,255,222,211,193,255,212,198,173,255, +204,186,155,255,198,178,145,255,194,173,141,255,191,170,138,255,190,169,137,255,189,168,136,255,188,167,135,255,187,166,135,255, +187,165,134,255,185,163,132,255,183,161,131,255,181,159,129,255,175,152,123,255,165,142,116,255,150,125,102,255,130,102, 85,255, +106, 78, 67,255, 82, 63, 55,255, 69, 58, 51,255, 66, 57, 50,255, 69, 58, 51,255, 75, 61, 53,255, 88, 66, 57,255,104, 76, 65,255, + 89, 74, 67,255, 61, 61, 61,255, 60, 60, 60,255,145,139,130,255,216,200,176,255,199,178,146,255,184,160,130,255,171,148,120,255, +163,138,113,255,157,131,108,255,154,129,105,255,155,129,105,255,157,131,107,255,162,137,112,255,168,144,117,255,177,153,124,255, +186,164,132,255,197,175,143,255,206,188,159,255,215,201,178,255,223,213,194,255,229,221,207,255,231,226,213,255,225,217,203,255, +222,214,200,255,232,225,212,255,228,220,205,255,225,215,198,255,223,213,194,255,222,211,193,255,221,210,192,255,222,211,191,255, +221,210,190,255,221,209,189,255,220,208,188,255,219,208,187,255,219,207,186,255,218,206,185,255,217,204,182,255,214,199,174,255, +207,190,161,255,197,175,143,255,180,158,128,255,167,142,116,255,163,138,113,255,175,152,124,255,197,176,144,255,206,187,157,255, +207,190,161,255,208,191,163,255,208,192,164,255,208,193,165,255,208,192,164,255,209,192,164,255,207,190,162,255,208,191,162,255, +207,190,161,255,207,189,160,255,206,188,159,255,205,188,158,255,205,188,158,255,206,188,159,255,207,189,160,255,208,192,165,255, +210,194,168,255,197,177,148,255,179,157,127,255,209,194,170,255,227,219,206,255,229,224,211,255,227,220,205,255,219,209,189,255, +210,195,169,255,202,184,153,255,196,176,143,255,193,172,139,255,191,169,137,255,190,169,137,255,188,167,135,255,188,166,134,255, +187,165,134,255,185,163,132,255,184,162,131,255,182,160,130,255,179,156,127,255,172,149,121,255,162,137,112,255,145,119, 98,255, +123, 94, 79,255, 99, 72, 63,255, 77, 60, 53,255, 68, 57, 50,255, 67, 58, 50,255, 69, 59, 51,255, 77, 61, 53,255, 92, 68, 59,255, + 83, 68, 63,255, 61, 61, 61,255, 59, 60, 60,255,148,143,136,255,225,214,196,255,211,195,169,255,195,174,142,255,181,157,128,255, +169,145,119,255,161,137,112,255,156,131,107,255,154,128,105,255,155,129,106,255,158,133,109,255,163,138,112,255,170,146,119,255, +179,155,127,255,188,166,134,255,199,177,145,255,208,191,162,255,216,203,180,255,224,214,197,255,229,223,209,255,232,226,214,255, +221,213,198,255,223,215,201,255,232,225,213,255,227,219,204,255,224,215,197,255,223,213,194,255,222,211,193,255,221,210,192,255, +221,210,191,255,221,210,190,255,220,209,189,255,220,208,188,255,220,208,187,255,218,206,186,255,219,206,185,255,216,203,181,255, +213,197,172,255,206,188,158,255,193,173,141,255,178,154,125,255,165,141,114,255,164,139,114,255,181,158,129,255,200,181,149,255, +205,187,157,255,207,189,160,255,208,190,162,255,209,192,164,255,209,192,164,255,208,192,163,255,208,191,162,255,207,190,161,255, +207,190,160,255,206,189,159,255,205,187,158,255,205,187,157,255,205,187,156,255,204,186,156,255,204,186,157,255,205,187,158,255, +191,170,141,255,164,143,120,255,194,178,153,255,219,207,189,255,224,215,200,255,227,220,207,255,229,224,211,255,226,218,203,255, +218,206,185,255,208,193,165,255,201,182,149,255,196,175,142,255,192,171,139,255,189,168,136,255,188,167,135,255,187,166,134,255, +187,165,134,255,185,164,133,255,184,163,132,255,182,161,131,255,181,159,129,255,176,153,125,255,169,146,118,255,157,132,108,255, +139,112, 92,255,116, 88, 74,255, 92, 68, 59,255, 73, 60, 52,255, 67, 57, 50,255, 67, 59, 50,255, 71, 59, 51,255, 80, 63, 54,255, + 76, 64, 60,255, 61, 61, 62,255, 59, 60, 60,255,149,145,139,255,230,222,206,255,221,210,190,255,208,191,162,255,192,171,139,255, +178,155,126,255,168,143,117,255,160,135,110,255,156,130,107,255,154,128,105,255,155,129,105,255,159,133,109,255,164,139,114,255, +171,147,120,255,180,157,127,255,190,168,136,255,200,180,147,255,210,193,166,255,218,205,184,255,225,215,199,255,230,224,211,255, +232,226,215,255,217,209,193,255,227,220,207,255,230,224,210,255,226,218,202,255,224,213,197,255,222,213,194,255,222,211,193,255, +221,210,192,255,222,211,192,255,220,210,190,255,220,209,189,255,220,209,189,255,219,207,187,255,219,207,186,255,218,206,185,255, +216,203,180,255,212,196,170,255,205,185,154,255,191,169,138,255,175,152,123,255,164,140,114,255,167,143,116,255,188,166,135,255, +202,183,151,255,205,186,156,255,206,189,159,255,207,190,160,255,207,190,162,255,208,190,162,255,206,189,161,255,206,189,160,255, +205,188,159,255,205,187,157,255,204,186,155,255,203,185,154,255,202,184,152,255,202,183,151,255,200,180,148,255,186,166,135,255, +174,153,128,255,209,196,174,255,224,216,201,255,226,218,203,255,223,214,198,255,223,215,199,255,228,221,208,255,229,223,210,255, +225,216,200,255,216,203,181,255,207,190,161,255,200,180,148,255,194,173,141,255,191,170,138,255,189,167,136,255,188,166,135,255, +187,165,134,255,185,163,132,255,185,163,132,255,184,161,130,255,182,160,129,255,179,157,127,255,174,150,122,255,165,142,115,255, +152,127,104,255,132,104, 87,255,109, 81, 69,255, 85, 65, 56,255, 71, 58, 51,255, 67, 58, 50,255, 68, 58, 50,255, 72, 60, 52,255, + 71, 62, 57,255, 61, 62, 62,255, 59, 60, 60,255,149,146,140,255,232,225,212,255,227,219,204,255,219,207,186,255,206,187,156,255, +190,167,135,255,176,152,124,255,166,141,116,255,159,134,110,255,156,130,106,255,154,128,105,255,156,130,106,255,159,134,109,255, +165,141,115,255,172,149,121,255,182,159,128,255,192,170,138,255,202,182,150,255,211,195,169,255,220,208,187,255,226,218,202,255, +231,225,212,255,231,226,213,255,218,210,195,255,230,224,210,255,229,223,209,255,226,217,202,255,223,214,196,255,222,212,194,255, +222,211,193,255,221,210,193,255,221,210,191,255,221,209,190,255,221,208,190,255,220,209,188,255,219,207,187,255,219,207,186,255, +218,205,184,255,215,202,179,255,211,195,168,255,202,183,152,255,188,166,136,255,172,149,121,255,164,140,114,255,173,149,122,255, +193,172,140,255,202,182,150,255,203,185,154,255,205,186,156,255,206,188,158,255,206,189,159,255,206,189,158,255,205,188,158,255, +204,186,156,255,204,185,154,255,202,183,152,255,201,182,150,255,199,180,147,255,192,171,139,255,177,156,127,255,181,162,134,255, +210,196,171,255,222,213,196,255,227,220,206,255,228,222,209,255,225,218,204,255,223,213,197,255,224,216,200,255,229,222,209,255, +229,223,209,255,223,214,197,255,214,201,177,255,205,187,157,255,197,178,145,255,192,172,139,255,189,168,136,255,188,167,135,255, +187,166,134,255,185,164,133,255,184,163,132,255,183,161,130,255,182,160,130,255,181,159,129,255,177,154,125,255,171,149,120,255, +161,137,112,255,146,120, 99,255,125, 97, 81,255,102, 75, 65,255, 80, 62, 54,255, 69, 58, 51,255, 67, 58, 50,255, 68, 58, 52,255, + 67, 60, 57,255, 61, 62, 62,255, 59, 60, 60,255,149,146,140,255,233,226,214,255,230,224,210,255,227,217,202,255,217,203,181,255, +202,183,152,255,187,164,133,255,174,151,122,255,165,139,114,255,158,133,109,255,155,129,106,255,154,129,105,255,156,131,107,255, +160,135,110,255,166,141,116,255,174,150,122,255,183,160,130,255,193,171,140,255,204,184,153,255,212,198,172,255,221,210,190,255, +227,219,204,255,231,225,213,255,228,222,209,255,216,208,192,255,232,226,215,255,229,222,208,255,225,217,201,255,223,213,196,255, +222,212,194,255,222,211,193,255,222,211,192,255,221,210,191,255,220,209,190,255,221,208,189,255,220,208,188,255,219,207,187,255, +218,206,186,255,218,205,183,255,215,201,178,255,209,193,166,255,200,180,149,255,186,163,133,255,171,148,120,255,166,141,115,255, +179,157,127,255,195,175,142,255,200,180,147,255,201,182,150,255,203,184,152,255,204,185,154,255,204,185,154,255,203,185,153,255, +202,184,152,255,201,181,149,255,199,180,147,255,196,176,143,255,183,161,131,255,168,147,120,255,183,162,132,255,201,183,151,255, +212,197,173,255,220,209,190,255,226,218,203,255,228,222,209,255,228,221,209,255,225,217,202,255,222,213,196,255,224,216,201,255, +229,222,210,255,228,222,207,255,221,212,193,255,211,197,172,255,203,184,153,255,196,176,143,255,191,170,138,255,188,167,135,255, +187,166,133,255,185,164,133,255,184,163,132,255,182,161,130,255,182,160,129,255,181,159,129,255,178,156,126,255,175,152,123,255, +168,144,117,255,157,132,108,255,140,114, 94,255,119, 91, 76,255, 96, 70, 61,255, 76, 61, 53,255, 68, 58, 51,255, 68, 59, 51,255, + 65, 60, 56,255, 61, 62, 62,255, 59, 60, 60,255,150,146,140,255,233,227,214,255,231,225,213,255,230,224,210,255,225,216,199,255, +215,200,176,255,200,179,148,255,181,159,129,255,172,148,121,255,163,138,113,255,158,132,108,255,155,129,105,255,154,129,105,255, +156,131,107,255,161,136,111,255,167,143,116,255,175,152,123,255,184,162,131,255,194,174,141,255,205,187,156,255,214,200,176,255, +222,212,192,255,228,220,206,255,231,226,214,255,226,218,205,255,218,209,194,255,232,226,214,255,228,221,206,255,225,215,199,255, +223,213,196,255,223,212,194,255,222,212,193,255,222,211,192,255,221,210,191,255,221,209,190,255,220,209,189,255,219,208,188,255, +219,207,186,255,218,206,185,255,217,205,183,255,214,200,176,255,208,192,163,255,198,178,146,255,184,161,130,255,171,147,120,255, +170,146,119,255,185,163,132,255,195,174,141,255,197,177,144,255,198,178,145,255,199,180,147,255,200,180,148,255,199,180,147,255, +199,178,145,255,196,175,143,255,189,167,136,255,166,145,118,255,155,131,108,255,171,148,120,255,183,162,131,255,195,175,142,255, +205,189,160,255,215,201,179,255,222,212,194,255,226,219,204,255,228,222,209,255,228,221,208,255,224,216,200,255,221,212,196,255, +225,217,201,255,228,222,209,255,226,219,205,255,219,209,189,255,209,193,166,255,200,181,150,255,194,173,141,255,190,169,137,255, +187,166,135,255,185,164,133,255,184,163,132,255,184,161,130,255,182,160,129,255,180,159,129,255,178,156,127,255,177,155,125,255, +172,149,121,255,164,140,114,255,152,126,104,255,134,107, 88,255,112, 84, 71,255, 90, 67, 59,255, 73, 60, 52,255, 68, 59, 51,255, + 65, 61, 56,255, 61, 62, 62,255, 59, 59, 60,255,150,147,140,255,233,227,214,255,232,226,214,255,231,226,213,255,230,223,210,255, +224,214,197,255,212,197,171,255,197,176,144,255,182,159,129,255,171,146,119,255,162,137,112,255,157,132,108,255,155,129,106,255, +155,129,105,255,157,131,108,255,161,137,111,255,168,144,117,255,176,153,124,255,186,164,133,255,196,175,143,255,206,189,160,255, +215,202,179,255,223,213,195,255,229,222,208,255,233,227,215,255,223,216,202,255,222,215,201,255,231,225,212,255,227,219,205,255, +225,216,199,255,223,213,195,255,222,212,194,255,222,211,193,255,222,211,192,255,221,210,191,255,221,209,190,255,220,209,189,255, +219,208,188,255,219,207,186,255,218,206,185,255,217,204,182,255,214,199,175,255,207,190,161,255,196,176,144,255,182,159,129,255, +172,148,121,255,176,153,124,255,188,166,135,255,193,171,139,255,193,172,140,255,194,173,140,255,194,175,141,255,194,174,141,255, +188,167,136,255,169,147,121,255,144,119, 99,255,139,113, 93,255,152,126,103,255,163,139,113,255,174,151,123,255,186,164,133,255, +198,178,146,255,208,192,164,255,216,204,182,255,222,212,195,255,226,218,204,255,228,221,208,255,227,220,207,255,223,215,199,255, +221,212,195,255,225,218,203,255,228,221,209,255,225,217,202,255,217,204,183,255,207,190,161,255,199,179,147,255,192,171,139,255, +188,166,135,255,186,164,133,255,185,163,132,255,183,161,130,255,182,160,130,255,181,159,129,255,179,157,127,255,177,155,126,255, +175,152,124,255,169,146,119,255,160,136,111,255,147,121, 99,255,128,100, 83,255,106, 79, 67,255, 84, 65, 56,255, 72, 59, 51,255, + 65, 60, 56,255, 61, 62, 62,255, 59, 59, 60,255,150,147,140,255,233,227,215,255,231,225,214,255,232,226,213,255,231,225,213,255, +229,222,208,255,223,212,193,255,210,194,167,255,194,173,141,255,180,157,127,255,169,144,118,255,161,136,111,255,157,131,107,255, +154,128,105,255,155,129,106,255,157,132,108,255,162,137,112,255,169,145,118,255,178,155,125,255,187,165,134,255,198,178,145,255, +208,191,162,255,217,204,182,255,224,215,197,255,229,222,209,255,231,226,214,255,220,213,198,255,227,221,208,255,230,225,212,255, +227,219,204,255,224,215,198,255,223,213,195,255,222,212,194,255,221,211,193,255,221,210,192,255,220,210,191,255,221,209,190,255, +219,208,188,255,219,207,187,255,219,206,186,255,218,206,185,255,216,203,181,255,212,198,172,255,206,188,158,255,194,174,142,255, +181,159,129,255,176,152,124,255,182,159,129,255,188,167,135,255,190,169,137,255,190,169,136,255,186,165,134,255,170,148,120,255, +143,118, 99,255,125, 97, 81,255,124, 96, 80,255,132,104, 86,255,141,114, 94,255,152,127,103,255,164,140,114,255,176,154,125,255, +190,168,136,255,201,182,150,255,210,194,167,255,216,203,181,255,221,211,193,255,226,218,202,255,228,221,208,255,226,219,205,255, +222,214,197,255,221,212,195,255,226,218,203,255,228,221,207,255,224,215,198,255,215,201,178,255,205,187,157,255,197,177,144,255, +190,169,137,255,187,166,134,255,185,163,133,255,183,161,131,255,182,160,130,255,181,159,129,255,179,158,127,255,177,155,126,255, +176,153,125,255,172,149,121,255,166,142,116,255,156,132,107,255,141,115, 95,255,123, 94, 79,255,101, 74, 64,255, 82, 64, 55,255, + 67, 61, 56,255, 61, 62, 62,255, 59, 59, 60,255,150,147,140,255,233,227,215,255,232,225,213,255,232,226,214,255,231,226,215,255, +231,225,213,255,229,221,208,255,221,210,191,255,208,191,163,255,192,171,139,255,178,155,126,255,167,143,117,255,160,136,110,255, +156,131,107,255,154,128,105,255,155,129,106,255,158,132,108,255,163,139,113,255,170,147,119,255,179,156,127,255,189,167,135,255, +199,180,147,255,209,193,165,255,217,205,184,255,225,216,200,255,229,223,210,255,231,225,214,255,215,206,191,255,230,224,211,255, +230,223,210,255,226,217,202,255,223,214,197,255,223,212,194,255,222,211,194,255,222,211,192,255,221,210,191,255,220,209,191,255, +220,209,189,255,220,208,188,255,219,208,187,255,219,206,186,255,218,206,185,255,216,202,180,255,212,196,171,255,204,186,156,255, +193,172,140,255,181,159,129,255,177,155,125,255,178,157,126,255,177,155,126,255,170,147,119,255,153,128,105,255,129,101, 84,255, +115, 86, 72,255,113, 84, 71,255,115, 86, 73,255,122, 93, 79,255,130,103, 85,255,141,115, 95,255,153,128,105,255,167,143,117,255, +181,159,129,255,192,172,139,255,201,183,151,255,208,193,167,255,215,203,181,255,221,211,192,255,224,217,201,255,226,220,205,255, +225,218,204,255,221,213,195,255,221,212,196,255,226,218,203,255,226,219,205,255,221,212,195,255,212,197,173,255,202,184,152,255, +194,174,141,255,189,168,136,255,185,164,133,255,183,161,131,255,181,160,129,255,181,159,129,255,179,156,127,255,177,155,126,255, +176,154,125,255,173,150,122,255,169,147,119,255,163,139,113,255,151,127,104,255,136,109, 90,255,118, 89, 75,255, 97, 71, 62,255, + 72, 62, 58,255, 61, 61, 62,255, 59, 59, 60,255,150,147,141,255,233,227,215,255,232,226,214,255,232,226,215,255,232,227,214,255, +232,226,215,255,231,226,213,255,229,221,207,255,220,208,188,255,206,188,159,255,190,168,136,255,177,154,124,255,167,142,116,255, +159,134,110,255,155,130,106,255,154,128,105,255,155,130,106,255,158,133,109,255,164,139,113,255,171,148,120,255,180,157,127,255, +190,168,137,255,201,181,149,255,210,194,168,255,218,207,186,255,225,217,201,255,230,224,211,255,230,224,211,255,217,209,194,255, +230,223,210,255,229,222,209,255,226,217,200,255,223,213,196,255,223,212,194,255,222,211,193,255,221,211,192,255,220,210,191,255, +220,209,190,255,220,209,189,255,220,208,188,255,218,207,187,255,218,206,185,255,217,205,184,255,215,202,179,255,210,195,169,255, +203,185,154,255,192,171,138,255,180,157,127,255,170,146,118,255,158,134,109,255,144,118, 97,255,127,100, 83,255,116, 87, 74,255, +109, 80, 68,255,107, 78, 67,255,109, 80, 68,255,114, 85, 72,255,122, 93, 79,255,131,104, 86,255,143,116, 96,255,158,134,110,255, +171,148,120,255,180,158,128,255,190,170,137,255,201,182,150,255,208,193,166,255,215,202,179,255,219,208,188,255,223,214,197,255, +226,218,203,255,225,216,201,255,221,211,194,255,221,212,195,255,225,218,203,255,225,218,203,255,219,209,190,255,210,195,168,255, +200,181,149,255,192,171,139,255,187,165,134,255,183,162,131,255,181,160,129,255,180,158,128,255,178,156,126,255,177,154,125,255, +175,153,124,255,173,151,122,255,171,148,121,255,166,143,116,255,159,135,111,255,147,122,100,255,131,104, 86,255,114, 85, 72,255, + 81, 68, 62,255, 61, 61, 61,255, 60, 60, 60,255,146,142,134,255,233,226,214,255,231,226,214,255,232,227,215,255,232,226,215,255, +231,227,215,255,232,227,215,255,231,225,212,255,228,220,205,255,218,206,184,255,204,186,155,255,188,167,134,255,175,151,123,255, +166,142,115,255,158,133,109,255,155,130,106,255,154,129,105,255,155,130,106,255,159,134,110,255,165,141,114,255,172,149,121,255, +182,159,129,255,191,169,138,255,201,182,151,255,211,196,169,255,219,208,188,255,226,218,202,255,231,224,212,255,228,222,209,255, +219,212,197,255,231,225,213,255,229,221,207,255,225,216,200,255,223,214,196,255,222,212,194,255,221,211,193,255,221,211,192,255, +220,209,190,255,220,209,190,255,219,209,189,255,219,207,187,255,218,207,186,255,217,206,185,255,217,205,183,255,214,201,178,255, +210,194,167,255,202,183,152,255,190,168,137,255,174,152,123,255,158,134,109,255,142,116, 95,255,127, 99, 83,255,117, 88, 75,255, +109, 80, 69,255,105, 76, 65,255,105, 77, 66,255,108, 79, 67,255,114, 85, 73,255,122, 94, 78,255,133,106, 88,255,149,123,101,255, +163,139,113,255,171,148,120,255,178,155,127,255,189,168,137,255,200,181,148,255,207,190,162,255,213,199,174,255,217,206,185,255, +222,212,195,255,225,217,201,255,223,215,199,255,221,210,193,255,221,212,195,255,225,217,202,255,224,216,201,255,218,207,186,255, +208,191,164,255,197,178,146,255,191,170,137,255,185,164,132,255,182,160,130,255,180,158,128,255,178,156,126,255,177,154,125,255, +175,153,124,255,173,150,122,255,172,149,121,255,168,145,118,255,163,139,114,255,155,130,106,255,143,116, 96,255,129,100, 83,255, + 89, 74, 67,255, 61, 61, 61,255, 60, 60, 60,255,135,126,111,255,221,212,196,255,232,226,214,255,232,226,215,255,231,227,215,255, +232,227,215,255,232,226,214,255,231,227,215,255,231,225,212,255,227,218,203,255,216,203,182,255,202,182,152,255,186,164,133,255, +173,150,122,255,165,140,114,255,158,133,109,255,155,129,106,255,154,129,105,255,155,130,107,255,159,135,110,255,166,141,115,255, +173,149,121,255,182,160,130,255,192,171,139,255,202,184,152,255,211,196,171,255,219,208,188,255,226,218,202,255,231,225,212,255, +224,217,204,255,223,215,201,255,231,226,213,255,227,220,206,255,224,215,199,255,223,213,195,255,222,212,194,255,222,212,193,255, +221,210,191,255,221,210,190,255,220,209,190,255,219,208,188,255,218,207,187,255,219,207,186,255,217,205,184,255,216,204,182,255, +214,200,176,255,209,193,166,255,201,182,149,255,188,166,135,255,171,147,120,255,153,127,105,255,137,110, 91,255,124, 95, 80,255, +115, 86, 72,255,108, 79, 67,255,105, 76, 65,255,105, 76, 65,255,108, 79, 67,255,115, 86, 73,255,124, 95, 80,255,138,111, 92,255, +151,126,104,255,163,139,113,255,169,146,119,255,177,155,126,255,188,168,136,255,198,178,146,255,205,188,159,255,211,198,174,255, +218,206,186,255,222,213,196,255,224,216,201,255,223,214,198,255,220,210,192,255,221,212,194,255,224,216,201,255,223,214,198,255, +216,203,182,255,205,188,159,255,195,175,143,255,188,167,136,255,183,162,130,255,180,158,128,255,178,155,126,255,176,154,125,255, +175,152,124,255,173,150,122,255,170,148,121,255,169,146,119,255,165,142,115,255,160,135,111,255,152,126,103,255,140,113, 93,255, + 96, 82, 73,255, 61, 61, 61,255, 60, 60, 60,255,136,126,110,255,204,187,157,255,220,211,195,255,233,227,215,255,232,227,214,255, +232,226,215,255,232,227,215,255,232,226,214,255,232,226,215,255,231,224,212,255,226,218,201,255,214,201,178,255,199,180,149,255, +184,162,131,255,172,149,121,255,163,139,113,255,157,132,108,255,154,129,106,255,154,129,106,255,155,130,106,255,160,135,110,255, +166,142,116,255,174,151,122,255,183,160,130,255,193,172,139,255,203,184,153,255,211,197,172,255,219,209,189,255,226,219,202,255, +230,225,212,255,222,215,202,255,222,214,201,255,231,225,212,255,227,219,204,255,224,215,198,255,223,213,195,255,222,212,194,255, +221,210,192,255,220,210,191,255,221,210,190,255,219,208,189,255,219,208,187,255,219,206,187,255,218,206,185,255,217,205,184,255, +216,203,181,255,213,199,175,255,208,192,164,255,200,180,148,255,186,164,133,255,169,145,118,255,150,125,103,255,135,108, 89,255, +122, 93, 79,255,113, 83, 71,255,107, 77, 67,255,104, 75, 65,255,105, 76, 65,255,109, 80, 68,255,116, 87, 74,255,127, 99, 82,255, +139,112, 92,255,150,125,103,255,161,137,112,255,168,145,118,255,177,154,124,255,188,167,136,255,198,178,146,255,206,189,160,255, +213,199,175,255,217,207,186,255,222,212,195,255,223,216,200,255,222,214,197,255,219,209,192,255,220,210,193,255,223,214,198,255, +221,212,194,255,214,200,177,255,203,185,155,255,193,173,141,255,186,165,133,255,181,159,129,255,178,155,126,255,176,153,124,255, +174,151,123,255,172,149,121,255,170,147,120,255,168,145,118,255,166,143,116,255,162,138,112,255,156,131,107,255,148,122,100,255, +102, 88, 78,255, 61, 61, 61,255, 60, 60, 60,255,136,126,111,255,205,186,154,255,204,187,158,255,222,215,199,255,232,226,215,255, +231,227,214,255,232,226,215,255,232,227,215,255,232,227,215,255,232,227,215,255,230,224,211,255,225,216,199,255,213,199,174,255, +198,178,146,255,183,160,130,255,171,147,120,255,162,138,113,255,157,132,108,255,154,129,106,255,154,129,105,255,156,131,107,255, +160,136,111,255,167,143,116,255,174,151,123,255,183,161,131,255,192,172,139,255,203,184,153,255,212,197,172,255,220,209,189,255, +226,218,203,255,230,224,211,255,224,216,203,255,224,217,203,255,230,224,211,255,226,218,203,255,223,214,197,255,222,212,195,255, +221,211,192,255,220,210,191,255,221,210,191,255,219,208,189,255,220,208,188,255,219,207,186,255,218,206,186,255,217,205,185,255, +216,204,183,255,216,203,180,255,213,199,174,255,208,191,162,255,198,179,147,255,184,162,131,255,167,143,117,255,149,123,101,255, +134,106, 88,255,121, 93, 78,255,112, 83, 70,255,106, 77, 66,255,103, 75, 64,255,105, 76, 66,255,109, 80, 68,255,117, 88, 74,255, +127, 99, 82,255,137,110, 91,255,149,123,101,255,159,135,110,255,167,143,116,255,177,155,125,255,190,168,136,255,199,179,147,255, +206,188,159,255,212,197,172,255,216,204,183,255,220,211,192,255,223,214,197,255,222,213,196,255,219,208,190,255,220,210,191,255, +223,213,197,255,219,210,191,255,211,197,172,255,200,182,151,255,192,170,138,255,184,162,131,255,179,157,127,255,176,154,125,255, +173,151,123,255,172,148,121,255,169,146,119,255,167,144,117,255,165,141,115,255,162,138,113,255,158,134,109,255,153,127,104,255, +106, 92, 81,255, 60, 61, 61,255, 60, 60, 60,255,137,129,114,255,205,188,158,255,202,183,152,255,204,187,160,255,225,218,204,255, +232,226,215,255,232,226,215,255,231,227,215,255,232,226,215,255,231,227,214,255,232,226,215,255,230,223,211,255,224,215,197,255, +212,196,171,255,196,176,144,255,181,159,129,255,170,146,118,255,161,137,112,255,157,132,107,255,154,129,105,255,154,129,106,255, +156,131,107,255,161,136,111,255,167,143,116,255,175,151,123,255,183,161,131,255,193,172,140,255,203,185,153,255,211,197,172,255, +219,208,188,255,225,217,202,255,229,223,210,255,221,214,200,255,228,221,209,255,230,223,210,255,226,217,201,255,223,213,196,255, +222,211,193,255,221,211,192,255,221,210,192,255,220,209,190,255,220,209,189,255,219,208,188,255,218,207,186,255,217,206,185,255, +218,205,184,255,216,204,182,255,215,202,179,255,212,197,173,255,207,189,161,255,197,177,145,255,182,161,130,255,166,141,115,255, +147,122,100,255,132,105, 86,255,120, 90, 77,255,111, 81, 70,255,106, 77, 66,255,104, 75, 64,255,106, 77, 66,255,109, 80, 68,255, +117, 88, 74,255,125, 97, 81,255,135,108, 89,255,147,122,100,255,158,133,109,255,166,143,117,255,178,156,126,255,188,167,135,255, +196,176,144,255,203,185,155,255,209,193,167,255,213,200,178,255,217,207,186,255,220,211,193,255,220,211,193,255,218,207,188,255, +219,209,190,255,221,211,194,255,218,206,187,255,210,194,168,255,199,179,147,255,189,168,136,255,182,160,130,255,176,154,125,255, +173,151,123,255,170,147,120,255,169,146,118,255,167,143,117,255,164,140,114,255,161,137,112,255,158,134,110,255,155,130,105,255, +107, 94, 82,255, 60, 61, 61,255, 60, 60, 60,255,140,133,120,255,209,193,165,255,203,185,154,255,200,181,148,255,203,186,159,255, +225,218,204,255,232,227,215,255,232,226,215,255,232,227,214,255,232,226,215,255,231,227,215,255,231,226,214,255,229,223,209,255, +223,213,195,255,210,195,168,255,194,174,142,255,180,158,127,255,169,145,118,255,161,137,111,255,156,131,107,255,153,128,105,255, +154,129,105,255,156,131,108,255,161,136,111,255,166,143,116,255,174,151,123,255,183,161,131,255,193,172,139,255,202,184,153,255, +211,196,170,255,218,208,187,255,225,217,201,255,228,222,209,255,221,213,200,255,227,220,206,255,229,222,209,255,225,216,200,255, +223,213,195,255,221,211,193,255,221,211,192,255,220,209,190,255,219,209,189,255,219,207,188,255,218,207,187,255,218,207,186,255, +218,206,185,255,216,204,183,255,216,203,181,255,214,201,178,255,212,197,171,255,206,189,159,255,196,176,143,255,182,160,129,255, +164,140,115,255,146,120, 99,255,130,103, 86,255,119, 91, 76,255,110, 81, 69,255,106, 77, 66,255,104, 75, 64,255,105, 76, 65,255, +109, 80, 68,255,114, 86, 73,255,123, 95, 79,255,134,106, 88,255,147,121,100,255,157,133,108,255,165,141,115,255,176,153,124,255, +186,164,134,255,193,173,140,255,199,180,148,255,205,187,158,255,210,195,170,255,216,203,181,255,218,207,187,255,219,208,189,255, +217,206,187,255,218,207,188,255,220,209,191,255,216,205,183,255,207,191,163,255,196,176,144,255,186,165,134,255,179,157,128,255, +174,151,123,255,170,147,119,255,168,144,118,255,166,141,115,255,162,139,113,255,160,135,111,255,157,132,108,255,154,129,105,255, +107, 94, 83,255, 60, 61, 61,255, 60, 60, 60,255,144,140,130,255,216,203,180,255,207,190,162,255,202,184,152,255,200,180,147,255, +202,185,158,255,225,219,206,255,232,226,214,255,232,226,215,255,232,227,215,255,231,227,214,255,232,227,215,255,231,226,213,255, +229,222,208,255,221,211,193,255,209,192,166,255,193,172,140,255,179,157,126,255,168,144,117,255,161,136,111,255,156,131,107,255, +154,129,105,255,154,129,105,255,156,131,108,255,160,136,111,255,166,143,116,255,174,151,122,255,183,161,130,255,191,171,138,255, +202,183,151,255,210,196,170,255,219,208,188,255,225,217,202,255,229,222,209,255,221,213,200,255,226,220,207,255,228,221,207,255, +224,215,199,255,222,212,194,255,221,210,192,255,220,210,191,255,219,209,190,255,220,208,189,255,218,207,187,255,219,207,186,255, +218,206,184,255,216,204,183,255,216,204,182,255,215,203,180,255,214,200,177,255,211,195,170,255,205,187,158,255,195,175,143,255, +181,159,128,255,163,139,113,255,145,118, 98,255,130,102, 85,255,119, 90, 75,255,110, 81, 69,255,106, 77, 66,255,104, 75, 64,255, +104, 75, 65,255,107, 78, 67,255,113, 84, 72,255,122, 93, 78,255,133,105, 87,255,145,120, 98,255,154,129,106,255,161,137,112,255, +172,150,121,255,182,160,129,255,189,168,136,255,195,175,143,255,201,183,151,255,206,189,162,255,211,197,172,255,215,202,181,255, +217,205,185,255,216,204,184,255,217,205,186,255,218,208,189,255,214,202,179,255,205,188,158,255,193,173,140,255,183,162,132,255, +177,154,125,255,170,148,120,255,166,143,117,255,163,140,114,255,160,136,111,255,157,133,109,255,154,129,106,255,151,126,103,255, +106, 93, 82,255, 60, 61, 61,255, 60, 60, 60,255,130,127,121,255,221,212,195,255,215,203,180,255,206,190,162,255,201,183,151,255, +198,179,145,255,204,188,162,255,227,220,207,255,231,226,214,255,231,225,214,255,232,225,214,255,232,225,215,255,232,226,215,255, +231,225,213,255,228,221,208,255,220,210,191,255,208,191,163,255,192,171,139,255,178,156,126,255,168,144,118,255,160,136,111,255, +155,131,106,255,154,129,105,255,153,128,105,255,155,131,107,255,160,135,111,255,165,142,116,255,174,150,122,255,182,160,130,255, +192,171,139,255,202,183,152,255,210,196,169,255,218,207,187,255,225,216,201,255,228,221,208,255,220,213,200,255,228,221,208,255, +228,221,206,255,224,215,198,255,222,212,194,255,220,210,191,255,220,210,190,255,220,209,189,255,218,207,187,255,219,207,187,255, +218,206,186,255,217,205,183,255,216,204,182,255,216,203,181,255,215,202,179,255,213,200,175,255,210,195,169,255,204,186,157,255, +194,174,142,255,179,157,127,255,162,137,112,255,144,118, 96,255,130,102, 85,255,119, 90, 75,255,110, 81, 69,255,106, 77, 66,255, +103, 74, 63,255,103, 75, 64,255,106, 77, 66,255,113, 84, 71,255,122, 93, 78,255,132,104, 87,255,142,116, 96,255,150,125,102,255, +158,133,108,255,168,145,118,255,177,155,125,255,184,163,132,255,191,170,138,255,197,177,145,255,203,185,155,255,209,193,167,255, +213,200,177,255,215,203,182,255,214,202,181,255,216,204,183,255,216,205,185,255,212,198,175,255,202,184,154,255,191,169,137,255, +180,158,128,255,173,149,121,255,166,143,116,255,162,138,113,255,158,134,109,255,155,130,106,255,151,126,104,255,148,123,100,255, +105, 91, 80,255, 60, 61, 61,255, 61, 61, 61,255, 34, 34, 34,255, 90, 87, 81,255,214,206,190,255,217,206,184,255,206,191,163,255, +202,183,152,255,197,177,144,255,202,186,159,255,226,220,208,255,231,226,214,255,231,226,214,255,231,225,214,255,231,225,214,255, +231,226,214,255,231,225,213,255,228,221,207,255,220,209,190,255,207,190,162,255,191,170,139,255,178,155,126,255,168,144,117,255, +160,135,111,255,155,131,106,255,153,128,105,255,153,128,105,255,155,130,106,255,159,135,110,255,165,141,115,255,173,149,121,255, +181,160,129,255,192,171,139,255,202,183,152,255,210,195,169,255,217,206,186,255,224,215,199,255,226,219,205,255,220,213,199,255, +226,220,206,255,227,220,206,255,223,214,197,255,221,211,193,255,220,210,191,255,220,209,190,255,218,207,188,255,219,207,187,255, +218,207,186,255,217,205,184,255,216,204,183,255,216,203,182,255,215,202,180,255,214,201,178,255,213,199,174,255,209,194,167,255, +203,186,155,255,193,173,141,255,178,156,126,255,160,136,111,255,143,117, 96,255,130,101, 84,255,119, 90, 76,255,110, 81, 69,255, +105, 76, 65,255,102, 74, 63,255,102, 74, 64,255,105, 77, 66,255,113, 83, 71,255,121, 92, 77,255,129,101, 84,255,139,112, 92,255, +146,121, 99,255,153,128,104,255,163,139,114,255,173,150,122,255,180,158,128,255,187,165,134,255,192,172,140,255,198,179,147,255, +203,186,156,255,208,193,167,255,212,198,174,255,212,198,176,255,214,201,179,255,214,202,179,255,209,195,169,255,199,180,149,255, +187,165,134,255,176,154,125,255,168,144,117,255,161,137,112,255,156,131,107,255,152,127,104,255,147,123,100,255,144,117, 97,255, +103, 89, 78,255, 61, 61, 61,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 35, 34, 31,255,196,189,175,255,217,206,185,255, +207,192,165,255,202,183,152,255,197,177,144,255,201,184,157,255,227,220,207,255,231,225,213,255,230,226,214,255,230,226,214,255, +230,226,214,255,231,226,213,255,231,224,212,255,227,220,206,255,219,209,189,255,207,190,161,255,191,170,138,255,177,155,126,255, +168,144,117,255,160,136,111,255,155,130,106,255,153,128,105,255,153,128,105,255,154,129,106,255,158,134,109,255,165,141,114,255, +172,149,121,255,182,160,130,255,192,172,139,255,201,182,151,255,208,193,166,255,216,204,182,255,222,213,195,255,226,219,203,255, +220,212,198,255,226,220,206,255,227,219,204,255,223,213,197,255,220,210,191,255,220,209,190,255,218,207,188,255,219,208,187,255, +218,207,186,255,217,205,184,255,216,204,183,255,216,203,181,255,215,202,180,255,214,201,178,255,213,199,176,255,212,198,172,255, +208,193,165,255,203,184,153,255,192,171,140,255,178,155,126,255,160,136,111,255,143,117, 97,255,131,103, 85,255,119, 90, 75,255, +110, 81, 69,255,104, 76, 65,255,101, 74, 63,255,101, 73, 63,255,104, 76, 65,255,111, 82, 70,255,118, 89, 75,255,126, 98, 81,255, +136,108, 89,255,141,115, 95,255,148,123,101,255,159,135,111,255,168,145,118,255,174,152,123,255,181,159,128,255,186,165,134,255, +191,170,138,255,197,176,144,255,202,184,153,255,206,190,163,255,207,192,167,255,210,194,171,255,211,196,172,255,206,190,162,255, +195,176,143,255,182,161,131,255,172,149,121,255,163,139,113,255,156,131,107,255,148,124,102,255,143,118, 97,255,127,102, 84,255, + 54, 48, 45,255, 61, 61, 61,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 7, 7, 6,255,144,138,127,255, +207,197,177,255,210,195,169,255,201,183,151,255,195,175,142,255,202,187,162,255,226,220,206,255,231,225,213,255,230,224,212,255, +231,224,212,255,231,224,212,255,231,225,213,255,230,224,211,255,227,220,205,255,219,209,189,255,206,190,161,255,192,171,138,255, +178,156,126,255,168,144,117,255,160,136,111,255,155,130,106,255,153,127,105,255,152,126,104,255,153,129,105,255,157,133,108,255, +164,140,114,255,172,149,121,255,181,160,129,255,190,169,138,255,199,180,147,255,207,190,162,255,214,201,178,255,220,210,192,255, +224,216,201,255,218,211,196,255,226,219,205,255,226,218,203,255,222,213,195,255,220,209,190,255,219,208,188,255,219,208,187,255, +218,207,186,255,217,205,184,255,216,204,183,255,216,203,181,255,215,202,180,255,214,201,178,255,213,199,176,255,212,198,175,255, +211,197,172,255,207,191,164,255,201,183,152,255,191,171,139,255,177,155,125,255,160,136,112,255,145,119, 98,255,130,102, 86,255, +119, 90, 76,255,110, 81, 69,255,105, 76, 65,255,101, 73, 63,255,101, 73, 63,255,104, 75, 64,255,109, 80, 68,255,115, 86, 73,255, +123, 94, 79,255,131,104, 87,255,138,111, 93,255,146,120, 98,255,154,129,106,255,160,136,111,255,166,143,116,255,172,149,121,255, +177,154,126,255,180,159,129,255,185,163,132,255,188,167,136,255,193,172,141,255,193,174,146,255,186,172,148,255,183,170,147,255, +183,166,139,255,187,167,135,255,181,159,129,255,168,145,118,255,153,130,106,255,132,110, 89,255, 81, 66, 54,255, 0, 0, 0,255, + 27, 28, 28,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 55, 53, 48,255,157,149,134,255,212,197,172,255,203,184,153,255,191,170,137,255,198,182,157,255,226,219,206,255,230,225,212,255, +230,224,212,255,230,224,212,255,230,225,212,255,230,225,212,255,230,223,211,255,227,220,205,255,219,209,189,255,207,190,162,255, +192,171,139,255,179,156,127,255,168,145,117,255,161,136,111,255,155,130,106,255,152,127,104,255,152,126,103,255,153,128,104,255, +157,132,108,255,164,140,114,255,172,149,121,255,179,157,127,255,187,166,134,255,195,176,144,255,205,188,158,255,212,199,175,255, +219,209,189,255,222,214,198,255,219,212,197,255,223,217,202,255,226,218,203,255,221,212,194,255,219,208,189,255,219,207,187,255, +218,207,186,255,217,205,184,255,216,204,183,255,216,202,180,255,215,202,179,255,214,201,178,255,214,199,177,255,212,198,175,255, +212,197,173,255,210,195,169,255,206,190,161,255,201,182,150,255,191,170,137,255,178,155,126,255,162,138,112,255,145,119, 98,255, +131,103, 86,255,119, 90, 76,255,111, 82, 70,255,105, 76, 65,255,100, 73, 62,255,100, 72, 62,255,102, 74, 64,255,107, 78, 67,255, +112, 83, 71,255,119, 90, 76,255,129,101, 84,255,136,109, 90,255,140,113, 94,255,145,118, 98,255,150,125,103,255,158,133,109,255, +161,137,112,255,163,140,114,255,165,142,116,255,168,145,118,255,150,129,105,255, 69, 60, 48,255, 38, 34, 28,255, 30, 27, 24,255, + 35, 32, 27,255, 56, 51, 42,255, 74, 66, 53,255, 68, 59, 49,255, 46, 40, 32,255, 17, 14, 11,255, 0, 0, 0,255, 0, 0, 0,255, + 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 54, 51, 46,255,182,171,150,255,204,186,156,255,194,173,141,255,195,178,151,255,225,217,203,255, +229,223,211,255,230,224,211,255,230,224,211,255,230,224,211,255,230,224,211,255,229,223,210,255,226,219,205,255,219,209,189,255, +208,191,163,255,193,173,140,255,179,156,127,255,169,145,119,255,161,137,111,255,155,130,106,255,152,127,104,255,150,125,102,255, +151,126,103,255,156,131,107,255,162,138,113,255,169,147,119,255,176,154,125,255,184,162,132,255,194,174,142,255,204,187,157,255, +212,199,174,255,218,207,187,255,223,215,197,255,218,210,195,255,223,216,202,255,225,217,201,255,221,211,193,255,219,208,188,255, +218,207,186,255,216,205,184,255,216,204,183,255,216,202,180,255,215,202,179,255,214,201,178,255,213,199,175,255,212,198,174,255, +212,198,173,255,210,196,170,255,209,194,167,255,205,189,160,255,200,181,149,255,191,170,139,255,178,156,127,255,163,139,113,255, +146,120, 99,255,132,104, 86,255,121, 92, 77,255,111, 82, 70,255,104, 76, 66,255,100, 73, 63,255, 98, 71, 62,255, 99, 72, 62,255, +104, 75, 65,255,109, 80, 68,255,116, 87, 74,255,124, 96, 80,255,129,101, 84,255,131,103, 86,255,135,108, 90,255,140,114, 94,255, +144,118, 97,255,147,122,100,255,146,120, 99,255,111, 90, 76,255, 5, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 61, 57, 50,255,142,130,109,255,166,148,121,255,186,170,146,255, +221,213,198,255,230,223,210,255,227,221,208,255,228,222,209,255,228,222,209,255,229,222,209,255,229,223,209,255,226,219,205,255, +220,210,190,255,208,193,166,255,194,174,142,255,180,158,128,255,169,146,119,255,161,137,111,255,155,129,106,255,151,126,103,255, +149,124,102,255,150,125,103,255,154,129,106,255,160,135,111,255,166,143,117,255,174,152,124,255,183,161,131,255,193,172,139,255, +203,185,154,255,210,196,170,255,217,205,183,255,221,211,193,255,217,208,192,255,224,215,201,255,225,216,200,255,221,210,192,255, +218,207,186,255,216,205,184,255,216,204,182,255,216,203,180,255,214,202,179,255,214,201,177,255,212,199,175,255,212,198,174,255, +211,197,171,255,210,195,170,255,209,194,168,255,207,192,164,255,205,188,158,255,199,180,149,255,191,171,139,255,179,157,127,255, +164,140,114,255,148,122,100,255,134,106, 88,255,122, 93, 78,255,113, 83, 71,255,105, 76, 66,255,100, 72, 62,255, 97, 71, 61,255, + 97, 71, 61,255,101, 74, 64,255,106, 78, 66,255,111, 82, 70,255,115, 86, 73,255,120, 90, 76,255,123, 95, 80,255,125, 97, 81,255, +128,100, 84,255,125, 98, 82,255, 82, 64, 54,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 19, 18, 16,255, 39, 35, 28,255, + 63, 59, 53,255,163,157,148,255,229,222,208,255,227,220,206,255,228,222,208,255,228,222,208,255,228,222,208,255,228,221,208,255, +226,219,204,255,221,211,192,255,209,195,168,255,196,175,144,255,182,160,129,255,170,147,119,255,161,137,112,255,154,130,106,255, +150,125,102,255,148,123,101,255,148,124,101,255,151,127,104,255,156,131,108,255,164,140,114,255,174,152,123,255,183,161,131,255, +192,171,139,255,200,181,150,255,207,190,163,255,212,198,174,255,217,205,184,255,216,206,188,255,219,211,195,255,224,216,200,255, +220,209,191,255,217,206,185,255,216,204,182,255,215,203,181,255,214,202,179,255,214,200,176,255,213,199,174,255,211,198,172,255, +211,196,170,255,209,195,169,255,209,193,167,255,208,192,165,255,206,190,162,255,204,186,156,255,199,180,148,255,191,171,139,255, +180,158,129,255,166,142,116,255,150,125,102,255,135,108, 90,255,124, 95, 80,255,113, 84, 71,255,106, 77, 66,255, 99, 73, 63,255, + 96, 71, 61,255, 96, 71, 61,255, 98, 72, 62,255,100, 73, 63,255,102, 75, 64,255,106, 78, 66,255,109, 80, 68,255,113, 84, 71,255, +113, 84, 71,255, 93, 69, 60,255, 12, 9, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 7, 7, 6,255,153,147,137,255,227,219,205,255,226,219,205,255,227,221,206,255,227,221,207,255,227,221,207,255, +227,221,207,255,225,218,203,255,221,212,193,255,211,197,171,255,197,178,146,255,183,161,131,255,171,148,121,255,161,137,112,255, +154,130,106,255,150,124,102,255,147,121,100,255,147,121,100,255,149,124,101,255,153,129,105,255,162,138,113,255,174,151,122,255, +182,161,130,255,188,166,135,255,194,174,142,255,201,182,151,255,206,190,162,255,211,197,172,255,213,200,180,255,219,210,194,255, +223,214,198,255,219,208,189,255,216,204,183,255,214,202,179,255,213,200,178,255,213,199,176,255,211,197,173,255,210,196,171,255, +210,195,169,255,209,193,167,255,208,193,166,255,208,192,164,255,206,189,161,255,205,188,159,255,202,184,153,255,199,179,147,255, +192,171,139,255,181,160,130,255,169,145,118,255,153,128,105,255,138,111, 92,255,126, 96, 81,255,115, 86, 73,255,107, 79, 67,255, +101, 74, 64,255, 97, 71, 61,255, 95, 70, 60,255, 93, 70, 61,255, 94, 69, 60,255, 97, 71, 62,255, 96, 71, 61,255, 97, 71, 61,255, + 95, 70, 61,255, 26, 19, 17,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,106,102, 94,255,210,203,189,255,227,219,204,255,225,218,203,255,226,219,205,255, +226,219,205,255,226,219,204,255,225,217,203,255,222,211,195,255,212,199,174,255,199,180,150,255,185,164,133,255,172,150,121,255, +163,138,113,255,155,130,106,255,149,124,102,255,147,121, 99,255,146,120, 98,255,147,121,100,255,152,127,104,255,161,136,111,255, +170,147,119,255,177,155,125,255,182,160,130,255,188,166,135,255,194,173,141,255,199,181,149,255,205,188,159,255,206,191,168,255, +216,206,188,255,222,213,196,255,218,208,188,255,215,203,180,255,213,200,176,255,212,199,174,255,211,197,172,255,210,196,170,255, +209,195,168,255,208,193,166,255,207,191,164,255,206,190,162,255,205,188,160,255,204,187,157,255,203,186,154,255,201,182,151,255, +198,177,145,255,191,171,138,255,182,161,131,255,170,147,120,255,155,131,108,255,141,115, 94,255,128,100, 83,255,118, 89, 75,255, +110, 81, 69,255,103, 75, 65,255, 98, 72, 62,255, 94, 70, 61,255, 92, 69, 60,255, 92, 68, 59,255, 90, 68, 59,255, 90, 67, 58,255, + 24, 19, 16,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 45, 44, 40,255,183,176,163,255,227,219,203,255,223,215,200,255, +225,217,202,255,225,218,202,255,225,218,202,255,225,217,201,255,221,213,195,255,214,201,178,255,202,183,154,255,187,166,134,255, +174,152,123,255,164,140,114,255,156,131,107,255,150,124,102,255,146,120, 98,255,144,118, 97,255,145,119, 98,255,149,124,102,255, +156,131,107,255,163,139,113,255,171,147,119,255,176,154,125,255,181,159,129,255,186,165,134,255,191,170,138,255,195,175,144,255, +198,180,150,255,207,194,172,255,220,211,193,255,217,206,186,255,213,200,177,255,212,198,173,255,210,195,171,255,209,194,168,255, +209,193,166,255,208,192,164,255,206,191,162,255,206,188,160,255,204,187,158,255,203,185,155,255,202,184,153,255,201,182,150,255, +198,180,147,255,195,176,143,255,191,169,138,255,182,161,130,255,172,149,121,255,159,135,110,255,145,119, 98,255,132,105, 87,255, +122, 93, 78,255,114, 85, 72,255,108, 79, 68,255,102, 74, 64,255, 98, 72, 62,255, 96, 70, 61,255, 96, 71, 61,255, 40, 30, 26,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,120,115,106,255,224,215,198,255, +222,214,197,255,224,215,199,255,222,214,198,255,223,216,200,255,223,214,199,255,221,212,194,255,215,203,181,255,204,187,158,255, +190,170,138,255,177,154,126,255,166,143,117,255,157,133,109,255,151,125,103,255,146,120, 98,255,143,117, 96,255,142,116, 96,255, +145,118, 98,255,149,122,101,255,155,130,106,255,163,139,113,255,168,145,118,255,169,146,119,255,173,150,122,255,178,156,127,255, +185,163,132,255,192,171,139,255,201,186,161,255,217,207,189,255,217,205,184,255,212,199,175,255,210,195,169,255,208,193,166,255, +208,192,164,255,206,189,161,255,205,188,160,255,205,187,157,255,203,185,155,255,202,184,153,255,201,182,150,255,199,180,147,255, +198,178,146,255,196,176,143,255,193,173,140,255,189,168,136,255,182,161,130,255,173,151,122,255,162,138,113,255,151,125,103,255, +139,112, 92,255,128,100, 84,255,121, 92, 78,255,115, 86, 73,255,111, 82, 70,255,111, 83, 70,255, 43, 33, 29,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 51, 49, 44,255, +165,157,144,255,217,208,190,255,222,213,196,255,222,213,196,255,222,214,196,255,222,213,196,255,221,212,194,255,216,204,184,255, +207,191,163,255,194,174,143,255,181,159,129,255,169,146,119,255,160,136,111,255,153,127,105,255,146,121, 99,255,142,116, 96,255, +140,114, 94,255,140,113, 94,255,143,116, 96,255,147,121,100,255,151,126,103,255,153,128,104,255,155,131,107,255,164,140,113,255, +173,150,122,255,182,159,129,255,188,166,134,255,191,173,145,255,206,194,172,255,215,203,182,255,212,199,174,255,207,192,164,255, +206,190,161,255,205,188,158,255,204,186,156,255,203,185,154,255,202,183,152,255,200,181,149,255,198,179,147,255,197,177,145,255, +195,175,142,255,194,173,141,255,192,171,139,255,189,168,136,255,185,164,133,255,180,158,128,255,173,151,123,255,165,141,115,255, +156,131,108,255,148,122,100,255,141,114, 94,255,125,100, 83,255, 88, 69, 57,255, 16, 13, 11,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 9, 9, 8,255, 58, 55, 50,255,171,163,148,255,219,208,189,255,220,210,192,255,218,208,189,255,220,210,191,255,220,209,191,255, +217,205,185,255,210,195,170,255,198,180,148,255,186,165,134,255,174,151,123,255,164,140,114,255,155,130,107,255,148,122,100,255, +143,117, 96,255,139,112, 93,255,138,111, 92,255,136,109, 90,255,137,110, 90,255,137,109, 91,255,141,114, 93,255,146,120, 99,255, +155,131,107,255,160,137,111,255,161,136,113,255,159,136,110,255,149,126,104,255, 84, 78, 70,255,178,168,150,255,214,199,174,255, +206,190,162,255,204,185,155,255,202,183,152,255,200,182,150,255,199,180,148,255,198,178,146,255,195,176,143,255,194,174,141,255, +192,172,139,255,190,170,138,255,188,167,135,255,186,164,133,255,184,162,132,255,180,158,128,255,177,155,126,255,172,149,122,255, +166,142,116,255,132,112, 91,255, 64, 54, 44,255, 24, 20, 16,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 43, 40, 35,255,145,137,123,255,216,204,183,255,214,201,182,255,216,205,185,255, +217,206,186,255,216,204,183,255,212,199,174,255,202,185,156,255,191,172,139,255,180,158,128,255,168,146,118,255,160,135,110,255, +151,125,104,255,145,118, 98,255,139,113, 93,255,136,109, 90,255,133,104, 87,255,131,104, 85,255,129,101, 85,255,131,104, 87,255, +132,106, 87,255,134,107, 88,255,129,102, 86,255,103, 80, 69,255, 13, 11, 9,255, 0, 0, 0,255, 0, 0, 0,255, 85, 80, 71,255, +196,181,158,255,202,185,156,255,201,181,150,255,198,178,146,255,195,175,143,255,194,174,141,255,192,171,139,255,190,169,137,255, +188,167,135,255,186,165,134,255,184,163,132,255,181,159,129,255,177,155,125,255,171,150,122,255,147,127,104,255, 82, 70, 57,255, + 15, 13, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 9, 8, 7,255, 67, 63, 55,255,132,124,109,255, +161,151,133,255,187,176,157,255,209,196,173,255,214,200,175,255,208,191,163,255,199,181,149,255,188,167,136,255,177,154,125,255, +166,142,115,255,157,132,108,255,149,124,101,255,143,116, 96,255,137,110, 91,255,132,106, 88,255,130,102, 85,255,128,100, 83,255, +128,100, 83,255,101, 79, 66,255, 49, 37, 32,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 79, 73, 64,255,138,125,105,255,167,151,124,255,183,164,133,255,189,169,137,255,188,167,135,255,184,162,132,255, +171,151,123,255,155,137,111,255,129,112, 92,255,102, 89, 72,255, 60, 52, 43,255, 20, 17, 14,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 9, 8, 7,255, 25, 23, 20,255, 42, 39, 34,255, 75, 70, 61,255,124,115,100,255,155,143,122,255,192,174,146,255,197,177,145,255, +189,167,136,255,177,155,126,255,169,145,118,255,160,136,111,255,153,128,104,255,150,124,102,255,139,114, 94,255, 98, 81, 67,255, + 37, 30, 25,255, 9, 8, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 1, 1, 1,255, 20, 18, 15,255, 31, 28, 23,255, 41, 37, 30,255, 43, 38, 31,255, 39, 34, 28,255, + 28, 25, 20,255, 19, 17, 14,255, 4, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 3, 3, 3,255, + 32, 29, 24,255, 64, 58, 48,255, 77, 68, 57,255, 74, 67, 56,255, 61, 55, 47,255, 13, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, + 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0, 64, 98, 96, 7, 31, 0, 0, 0, 1, 0, 0, 0,152, 5, 97, 7, +232,190, 95, 7, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, 46,102,108, 97,116,116,101,110, 46,112,110,103, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, + 99,111,110,115, 92, 46,105, 46,102,108, 97,116,116,101,110, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,100, 96, 7, + 0, 0, 0, 0,208, 71, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0, + 64,100, 96, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0,200,100, 96, 7, 48,117, 96, 7, 68, 65, 84, 65, 0, 16, 0, 0,200,100, 96, 7, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 0,144, 0, 0, 48,117, 96, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, + 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 62, 61, 61,255, 61, 61, 61,255, 91, 85, 77,255,119,106, 92,255, +119,106, 92,255,119,106, 92,255,118,106, 92,255,118,106, 91,255,118,105, 91,255,118,105, 91,255,118,105, 91,255,117,105, 91,255, +118,104, 91,255,118,105, 91,255,118,104, 90,255,118,104, 91,255,118,104, 91,255,117,105, 91,255,117,105, 91,255,117,105, 91,255, +117,104, 90,255,116,103, 90,255,117,104, 90,255,116,103, 89,255,116,103, 89,255,115,103, 89,255,115,102, 89,255,115,102, 88,255, +114,101, 88,255,114,101, 87,255,113,100, 87,255,113,100, 87,255,112, 99, 86,255,112, 99, 86,255,112, 99, 86,255,111, 98, 86,255, +111, 98, 85,255,110, 97, 85,255,110, 97, 84,255,110, 96, 84,255,109, 96, 84,255,109, 95, 83,255,108, 95, 83,255,108, 94, 82,255, +107, 94, 82,255,107, 93, 82,255,106, 92, 81,255,106, 92, 81,255,106, 92, 81,255,105, 91, 80,255,105, 91, 80,255,104, 90, 80,255, +104, 90, 79,255,104, 90, 79,255,103, 89, 79,255,103, 89, 79,255,102, 88, 78,255,102, 88, 78,255,102, 88, 78,255,101, 87, 77,255, +101, 87, 77,255,101, 86, 76,255,100, 85, 76,255, 99, 85, 75,255, 98, 84, 75,255, 98, 83, 74,255, 97, 82, 74,255, 97, 82, 73,255, + 96, 82, 73,255, 95, 80, 72,255, 95, 80, 71,255, 94, 79, 71,255, 93, 78, 70,255, 92, 77, 70,255, 91, 76, 69,255, 90, 75, 68,255, + 90, 74, 67,255, 88, 73, 66,255, 87, 72, 66,255, 86, 71, 65,255, 85, 70, 64,255, 84, 69, 63,255, 82, 68, 63,255, 81, 66, 62,255, + 80, 66, 61,255, 78, 65, 60,255, 76, 64, 59,255, 75, 63, 58,255, 73, 62, 58,255, 71, 61, 57,255, 70, 61, 57,255, 68, 60, 56,255, + 67, 60, 56,255, 65, 59, 56,255, 65, 61, 56,255, 64, 61, 59,255, 61, 62, 62,255, 60, 60, 61,255,119,107, 93,255,175,151,122,255, +173,149,121,255,173,148,121,255,172,148,121,255,172,148,121,255,172,148,120,255,172,148,120,255,172,147,120,255,172,147,120,255, +171,147,120,255,171,147,120,255,171,147,119,255,171,147,119,255,171,147,119,255,171,146,119,255,170,146,119,255,170,146,119,255, +170,145,118,255,169,145,118,255,169,145,118,255,168,144,117,255,168,143,117,255,167,142,116,255,166,141,115,255,166,141,115,255, +165,139,114,255,164,139,113,255,163,138,113,255,163,137,112,255,161,136,111,255,160,135,110,255,160,134,110,255,159,133,109,255, +158,132,108,255,158,131,108,255,156,131,107,255,156,130,106,255,155,128,105,255,154,128,105,255,153,126,104,255,152,125,102,255, +150,124,102,255,149,123,101,255,149,121,100,255,147,120, 99,255,146,120, 99,255,145,119, 98,255,145,118, 97,255,145,118, 97,255, +144,117, 96,255,143,116, 96,255,143,116, 95,255,142,115, 95,255,141,114, 94,255,141,113, 93,255,140,113, 93,255,139,112, 93,255, +138,110, 91,255,137,109, 90,255,136,108, 90,255,135,106, 88,255,133,105, 87,255,133,105, 87,255,131,103, 86,255,130,102, 85,255, +130,101, 84,255,128, 99, 83,255,127, 98, 82,255,126, 96, 80,255,124, 94, 79,255,122, 93, 78,255,120, 91, 76,255,118, 88, 75,255, +116, 87, 73,255,115, 85, 72,255,112, 82, 70,255,111, 81, 69,255,108, 79, 67,255,106, 76, 66,255,103, 74, 63,255,101, 72, 62,255, + 97, 70, 61,255, 95, 68, 59,255, 91, 67, 58,255, 88, 65, 57,255, 85, 63, 55,255, 82, 62, 54,255, 79, 61, 53,255, 75, 59, 52,255, + 73, 58, 51,255, 70, 58, 50,255, 68, 59, 51,255, 65, 61, 56,255, 61, 62, 62,255, 60, 60, 61,255,120,108, 93,255,176,152,123,255, +174,150,122,255,174,150,122,255,174,149,122,255,173,149,121,255,173,149,121,255,173,149,121,255,173,149,121,255,173,148,121,255, +173,149,121,255,173,149,121,255,172,148,121,255,172,148,121,255,172,148,120,255,172,148,120,255,172,148,120,255,171,147,120,255, +171,147,119,255,171,146,119,255,170,145,118,255,169,145,118,255,168,144,117,255,168,143,116,255,167,142,116,255,166,141,115,255, +165,140,115,255,165,140,114,255,164,139,113,255,163,137,112,255,162,137,112,255,161,136,111,255,160,134,110,255,159,134,109,255, +158,132,108,255,157,132,108,255,157,131,107,255,155,129,106,255,155,129,105,255,154,128,105,255,152,126,103,255,151,125,103,255, +150,124,102,255,148,122,100,255,148,121,100,255,147,120, 99,255,145,119, 97,255,145,118, 97,255,144,117, 97,255,143,116, 95,255, +143,116, 96,255,142,115, 95,255,141,114, 94,255,141,114, 94,255,140,113, 93,255,140,113, 93,255,139,112, 93,255,138,111, 92,255, +138,111, 91,255,137,110, 91,255,136,108, 89,255,135,107, 89,255,134,106, 88,255,132,104, 86,255,131,103, 85,255,130,101, 85,255, +129,100, 84,255,129,100, 84,255,128, 99, 83,255,125, 97, 81,255,124, 96, 80,255,123, 94, 79,255,120, 91, 77,255,119, 90, 76,255, +118, 88, 75,255,115, 86, 73,255,114, 84, 72,255,112, 82, 70,255,109, 80, 68,255,107, 77, 66,255,105, 75, 65,255,102, 73, 63,255, + 99, 71, 61,255, 96, 69, 61,255, 93, 67, 59,255, 89, 66, 57,255, 87, 64, 57,255, 84, 63, 55,255, 80, 62, 54,255, 77, 60, 52,255, + 74, 59, 52,255, 71, 58, 51,255, 69, 59, 51,255, 65, 60, 56,255, 61, 62, 62,255, 60, 60, 61,255,121,109, 94,255,177,153,124,255, +175,152,123,255,175,151,123,255,175,151,123,255,175,151,122,255,175,151,122,255,174,150,122,255,175,151,122,255,174,150,122,255, +174,150,122,255,174,150,122,255,174,150,122,255,174,150,122,255,174,149,121,255,173,149,121,255,173,149,121,255,172,148,120,255, +172,148,120,255,172,147,120,255,171,147,120,255,171,146,119,255,169,145,118,255,169,144,118,255,168,143,117,255,168,143,116,255, +167,142,116,255,166,141,115,255,165,140,114,255,163,139,113,255,163,138,112,255,162,137,111,255,161,136,111,255,160,134,110,255, +159,133,109,255,158,132,108,255,157,132,108,255,156,130,106,255,155,129,105,255,154,128,105,255,152,126,103,255,152,125,103,255, +150,124,102,255,148,122,100,255,148,121,100,255,146,120, 99,255,145,119, 97,255,144,117, 96,255,143,116, 96,255,143,116, 95,255, +142,115, 95,255,141,113, 94,255,140,113, 94,255,139,112, 92,255,138,111, 92,255,138,110, 91,255,137,109, 91,255,136,109, 90,255, +135,108, 89,255,135,106, 88,255,133,105, 87,255,132,104, 86,255,130,102, 85,255,129,101, 84,255,129,100, 84,255,128,100, 83,255, +127, 98, 82,255,127, 98, 82,255,126, 97, 82,255,125, 97, 81,255,124, 95, 80,255,123, 94, 79,255,121, 92, 77,255,120, 91, 77,255, +119, 90, 75,255,117, 88, 74,255,115, 86, 73,255,113, 84, 71,255,111, 81, 70,255,109, 79, 68,255,106, 77, 66,255,103, 74, 64,255, +100, 72, 63,255, 97, 70, 61,255, 94, 69, 59,255, 91, 66, 58,255, 88, 65, 56,255, 85, 64, 56,255, 82, 62, 54,255, 79, 61, 53,255, + 76, 60, 52,255, 72, 59, 52,255, 70, 58, 51,255, 65, 61, 56,255, 61, 62, 62,255, 60, 60, 61,255,122,109, 94,255,178,154,125,255, +177,153,124,255,177,153,124,255,176,152,124,255,176,153,124,255,176,152,124,255,176,152,123,255,176,152,123,255,176,152,123,255, +176,152,123,255,175,151,123,255,175,151,123,255,175,151,123,255,175,151,122,255,175,151,122,255,174,150,122,255,174,150,122,255, +174,150,121,255,173,148,121,255,173,148,121,255,172,148,120,255,171,146,119,255,170,146,118,255,170,145,118,255,168,144,117,255, +168,143,116,255,167,142,116,255,165,140,115,255,165,140,114,255,164,139,113,255,163,137,112,255,162,136,111,255,161,135,110,255, +159,134,109,255,158,133,109,255,158,132,108,255,156,130,106,255,155,129,106,255,154,128,105,255,152,126,103,255,151,125,102,255, +150,124,102,255,148,122,100,255,147,120, 99,255,145,119, 98,255,144,117, 96,255,142,116, 95,255,141,113, 95,255,140,112, 93,255, +139,111, 93,255,139,111, 92,255,138,111, 92,255,138,111, 92,255,138,111, 92,255,139,112, 92,255,141,113, 93,255,142,115, 95,255, +144,117, 96,255,145,119, 98,255,147,120, 99,255,147,121, 99,255,147,120, 99,255,145,118, 97,255,142,115, 95,255,140,112, 93,255, +136,109, 89,255,132,104, 86,255,127, 99, 82,255,125, 95, 80,255,122, 94, 78,255,121, 92, 77,255,120, 91, 77,255,120, 90, 76,255, +119, 90, 76,255,118, 89, 75,255,117, 88, 74,255,114, 85, 72,255,113, 84, 71,255,110, 81, 69,255,107, 78, 67,255,105, 76, 65,255, +102, 73, 63,255, 98, 71, 61,255, 96, 69, 60,255, 92, 67, 58,255, 89, 65, 57,255, 87, 65, 56,255, 83, 63, 55,255, 80, 61, 53,255, + 77, 60, 53,255, 75, 60, 52,255, 71, 59, 51,255, 65, 60, 56,255, 61, 62, 62,255, 60, 60, 61,255,122,110, 95,255,180,157,126,255, +179,155,126,255,178,155,126,255,179,155,126,255,178,155,126,255,178,154,125,255,178,154,125,255,178,154,125,255,178,154,125,255, +178,154,125,255,178,154,125,255,178,154,125,255,177,153,125,255,177,153,124,255,176,153,124,255,176,152,124,255,175,151,123,255, +175,151,123,255,175,151,123,255,174,150,122,255,173,149,121,255,173,148,121,255,171,147,120,255,171,146,119,255,170,146,118,255, +169,144,117,255,168,144,117,255,167,142,116,255,166,141,115,255,165,140,114,255,164,139,113,255,162,137,112,255,162,136,111,255, +160,134,110,255,159,133,109,255,158,132,108,255,156,130,107,255,155,129,106,255,154,128,105,255,152,126,103,255,151,124,102,255, +148,122,100,255,148,121, 99,255,145,119, 98,255,145,118, 97,255,144,118, 97,255,145,118, 98,255,147,120, 99,255,149,123,101,255, +152,126,103,255,155,130,107,255,158,134,109,255,162,137,112,255,164,141,115,255,168,143,117,255,169,145,118,255,170,147,119,255, +171,147,120,255,171,148,120,255,171,148,121,255,171,148,120,255,170,147,120,255,170,147,120,255,170,147,119,255,170,147,119,255, +169,147,119,255,169,146,118,255,167,143,117,255,162,138,112,255,154,129,105,255,143,116, 96,255,132,105, 86,255,124, 95, 79,255, +118, 89, 75,255,116, 87, 73,255,116, 87, 73,255,116, 86, 73,255,114, 84, 72,255,112, 82, 70,255,109, 80, 68,255,106, 77, 66,255, +103, 74, 64,255,100, 72, 62,255, 97, 70, 61,255, 93, 68, 59,255, 90, 66, 58,255, 87, 65, 56,255, 84, 64, 56,255, 82, 62, 54,255, + 79, 61, 54,255, 76, 60, 53,255, 72, 59, 52,255, 66, 60, 56,255, 61, 62, 62,255, 60, 60, 61,255,123,111, 96,255,181,158,128,255, +180,157,127,255,180,157,127,255,180,156,127,255,180,156,127,255,180,156,127,255,180,156,127,255,180,156,127,255,179,156,126,255, +179,156,126,255,179,156,126,255,179,155,126,255,178,155,126,255,178,154,125,255,177,153,125,255,177,153,124,255,177,153,124,255, +176,152,124,255,175,152,123,255,175,151,123,255,174,150,122,255,174,150,121,255,173,149,121,255,172,147,120,255,171,146,119,255, +170,146,118,255,169,144,118,255,168,143,117,255,167,142,116,255,166,141,115,255,164,139,114,255,164,139,113,255,162,137,112,255, +161,135,110,255,159,134,110,255,158,132,108,255,156,131,107,255,155,129,106,255,154,128,105,255,151,125,102,255,149,123,101,255, +150,123,101,255,152,126,103,255,156,130,107,255,161,136,110,255,164,140,115,255,168,144,117,255,171,147,120,255,172,150,122,255, +173,151,122,255,174,151,123,255,174,151,123,255,174,151,123,255,173,150,122,255,173,150,122,255,172,149,121,255,172,149,121,255, +171,149,121,255,171,148,120,255,171,148,119,255,170,147,120,255,170,147,119,255,169,146,119,255,168,145,118,255,168,145,118,255, +167,144,118,255,168,145,118,255,168,145,118,255,168,145,118,255,169,145,118,255,170,146,119,255,168,144,118,255,161,138,112,255, +150,125,102,255,131,104, 86,255,115, 86, 72,255,113, 84, 71,255,114, 85, 72,255,113, 84, 71,255,110, 81, 69,255,108, 79, 67,255, +105, 76, 65,255,102, 74, 63,255, 98, 71, 61,255, 95, 69, 59,255, 91, 67, 58,255, 88, 66, 57,255, 86, 64, 56,255, 83, 63, 55,255, + 80, 62, 54,255, 78, 61, 53,255, 74, 60, 52,255, 67, 60, 57,255, 61, 62, 62,255, 60, 60, 61,255,124,112, 96,255,183,159,129,255, +181,158,128,255,181,158,128,255,181,158,128,255,181,158,128,255,181,158,128,255,181,158,128,255,181,158,128,255,180,157,127,255, +180,157,127,255,180,156,127,255,180,156,127,255,179,156,126,255,179,155,126,255,178,155,127,255,178,154,125,255,177,154,125,255, +177,154,125,255,176,152,124,255,176,152,124,255,176,152,123,255,174,150,122,255,174,150,122,255,173,149,121,255,171,147,120,255, +171,146,119,255,170,146,119,255,169,144,117,255,168,143,116,255,167,142,116,255,165,140,114,255,164,139,113,255,163,138,112,255, +161,136,111,255,159,134,110,255,159,133,109,255,156,131,107,255,155,129,105,255,154,128,105,255,156,131,107,255,163,138,113,255, +170,146,118,255,173,151,122,255,175,153,124,255,175,153,124,255,175,153,124,255,176,152,123,255,175,152,124,255,175,153,124,255, +175,152,124,255,174,152,123,255,173,151,122,255,174,151,123,255,172,149,121,255,173,150,122,255,172,149,121,255,171,148,120,255, +172,149,121,255,171,148,120,255,171,148,120,255,170,147,119,255,169,146,118,255,169,146,119,255,168,145,118,255,169,146,117,255, +167,144,118,255,168,145,118,255,168,144,117,255,167,144,117,255,167,143,116,255,167,143,116,255,168,144,117,255,168,144,117,255, +168,145,117,255,169,145,119,255,159,135,110,255,129,102, 84,255,112, 82, 70,255,112, 82, 70,255,111, 82, 69,255,109, 80, 68,255, +107, 78, 67,255,103, 75, 65,255,100, 72, 63,255, 96, 70, 60,255, 92, 67, 58,255, 90, 66, 58,255, 87, 65, 56,255, 84, 63, 55,255, + 82, 63, 54,255, 78, 62, 54,255, 75, 60, 52,255, 68, 61, 57,255, 61, 62, 62,255, 60, 60, 61,255,124,113, 97,255,184,161,130,255, +184,161,130,255,183,160,130,255,183,160,130,255,183,160,130,255,183,160,130,255,183,160,130,255,183,160,130,255,182,159,129,255, +182,159,129,255,182,159,129,255,182,158,129,255,181,158,128,255,181,157,128,255,180,157,127,255,180,156,127,255,179,156,126,255, +179,155,126,255,178,154,125,255,178,154,125,255,177,153,125,255,176,152,124,255,175,151,123,255,174,150,122,255,173,149,121,255, +172,148,120,255,171,147,120,255,170,146,119,255,169,144,117,255,168,143,117,255,166,141,115,255,165,140,114,255,164,139,113,255, +161,136,111,255,160,135,110,255,159,134,109,255,161,136,111,255,165,141,114,255,172,148,120,255,177,154,125,255,178,155,126,255, +178,155,126,255,177,154,125,255,177,154,125,255,176,154,124,255,176,153,125,255,175,152,124,255,175,153,124,255,174,152,123,255, +175,151,124,255,174,151,123,255,173,150,122,255,173,150,122,255,172,149,121,255,173,150,122,255,172,149,121,255,172,149,121,255, +171,148,120,255,170,147,119,255,170,147,120,255,170,147,119,255,170,147,118,255,169,146,118,255,168,146,118,255,169,145,117,255, +167,145,118,255,168,145,118,255,168,144,117,255,168,143,116,255,168,144,117,255,168,144,117,255,168,144,118,255,168,144,118,255, +167,143,118,255,167,143,117,255,169,146,118,255,171,148,121,255,152,127,104,255,121, 93, 78,255,110, 81, 69,255,109, 80, 68,255, +108, 79, 67,255,106, 77, 66,255,102, 74, 64,255, 98, 71, 61,255, 94, 69, 59,255, 91, 67, 58,255, 87, 65, 57,255, 85, 64, 56,255, + 83, 63, 55,255, 79, 63, 54,255, 77, 61, 53,255, 68, 61, 57,255, 61, 62, 62,255, 60, 60, 61,255,126,114, 98,255,186,163,132,255, +185,162,131,255,185,162,131,255,185,162,131,255,185,162,131,255,184,162,131,255,184,161,131,255,184,161,131,255,184,161,130,255, +183,160,130,255,183,160,129,255,182,159,129,255,182,158,128,255,182,158,128,255,181,157,128,255,181,157,127,255,180,157,127,255, +179,156,127,255,179,155,126,255,179,155,126,255,178,154,125,255,177,153,124,255,176,152,124,255,175,151,123,255,174,150,122,255, +173,149,121,255,172,148,120,255,171,147,119,255,170,145,118,255,169,144,117,255,167,142,116,255,166,141,115,255,164,139,113,255, +164,139,112,255,167,143,117,255,173,149,122,255,177,154,124,255,179,157,127,255,179,157,127,255,178,156,127,255,178,155,126,255, +177,154,125,255,176,154,125,255,176,154,124,255,175,153,124,255,176,152,124,255,175,152,124,255,175,152,123,255,175,151,124,255, +174,152,123,255,173,151,122,255,174,151,123,255,173,150,122,255,173,150,122,255,172,149,121,255,172,149,121,255,172,149,121,255, +171,148,120,255,170,147,119,255,170,147,120,255,169,146,119,255,170,147,118,255,168,145,118,255,169,145,117,255,169,145,118,255, +167,145,118,255,168,145,118,255,168,144,117,255,168,144,117,255,168,144,117,255,168,144,118,255,168,144,117,255,167,144,118,255, +168,144,118,255,168,143,118,255,168,143,118,255,167,144,117,255,170,146,120,255,166,142,116,255,140,114, 95,255,108, 80, 67,255, +107, 78, 67,255,107, 78, 67,255,104, 75, 65,255,100, 73, 63,255, 95, 70, 60,255, 92, 67, 59,255, 89, 66, 57,255, 86, 64, 56,255, + 83, 64, 55,255, 81, 63, 55,255, 78, 61, 53,255, 69, 61, 57,255, 61, 62, 62,255, 60, 60, 61,255,126,114, 98,255,188,164,133,255, +186,163,132,255,186,163,132,255,186,163,132,255,185,163,132,255,185,164,132,255,185,163,133,255,185,162,131,255,185,162,132,255, +184,161,131,255,184,161,130,255,184,161,131,255,183,160,129,255,183,159,129,255,182,160,129,255,182,158,128,255,181,158,128,255, +180,157,127,255,180,157,127,255,179,156,126,255,179,155,126,255,178,154,125,255,177,153,124,255,177,153,124,255,175,151,123,255, +174,150,122,255,173,149,121,255,172,148,120,255,170,146,119,255,170,145,118,255,167,143,116,255,167,142,116,255,170,146,119,255, +177,154,125,255,179,157,127,255,179,157,127,255,179,157,128,255,178,157,127,255,179,156,126,255,177,156,127,255,177,155,126,255, +176,154,125,255,176,154,125,255,175,154,124,255,176,153,125,255,176,153,123,255,175,152,123,255,174,151,124,255,175,152,123,255, +174,151,122,255,174,151,123,255,173,150,122,255,172,149,121,255,173,150,122,255,172,149,121,255,171,148,120,255,171,148,120,255, +170,147,119,255,171,148,120,255,169,146,118,255,169,147,118,255,170,146,119,255,168,146,117,255,169,145,117,255,169,144,118,255, +168,145,118,255,167,145,117,255,168,144,118,255,168,144,118,255,168,144,117,255,168,144,118,255,168,144,118,255,168,144,117,255, +167,144,117,255,167,144,117,255,167,144,117,255,166,143,116,255,167,144,117,255,166,144,116,255,169,145,118,255,155,131,107,255, +110, 82, 69,255,106, 77, 66,255,105, 76, 66,255,102, 74, 64,255, 98, 71, 61,255, 93, 69, 59,255, 90, 67, 58,255, 87, 65, 56,255, + 84, 64, 55,255, 81, 63, 55,255, 78, 62, 53,255, 69, 61, 57,255, 61, 61, 62,255, 60, 60, 61,255,127,115, 99,255,189,166,134,255, +188,165,134,255,188,165,134,255,188,165,134,255,187,165,134,255,187,165,134,255,187,164,133,255,187,164,133,255,187,164,133,255, +186,163,132,255,186,163,132,255,185,162,132,255,185,162,131,255,184,161,131,255,184,161,130,255,183,160,130,255,182,159,129,255, +182,159,129,255,181,158,128,255,180,157,127,255,180,156,127,255,179,156,127,255,178,154,125,255,177,154,125,255,176,153,124,255, +175,151,123,255,174,150,122,255,173,148,121,255,171,147,120,255,170,146,119,255,172,149,121,255,178,155,125,255,181,159,129,255, +180,158,128,255,179,157,127,255,180,158,128,255,179,157,128,255,179,157,127,255,177,156,127,255,178,156,126,255,177,155,125,255, +176,155,126,255,176,153,125,255,175,153,124,255,175,152,124,255,175,152,123,255,174,151,124,255,174,152,123,255,174,151,122,255, +173,150,123,255,174,151,123,255,172,149,121,255,172,150,121,255,172,149,121,255,171,148,120,255,171,148,120,255,171,148,120,255, +170,147,119,255,170,147,119,255,169,146,118,255,170,147,119,255,170,146,119,255,168,146,118,255,169,145,117,255,169,144,118,255, +168,145,118,255,168,144,118,255,167,144,118,255,167,144,118,255,168,144,117,255,168,144,116,255,167,144,116,255,166,144,116,255, +166,144,117,255,167,144,117,255,167,144,117,255,167,143,117,255,167,143,117,255,167,143,117,255,166,142,116,255,170,147,120,255, +160,136,112,255,116, 88, 74,255,102, 73, 63,255,103, 75, 64,255, 99, 72, 62,255, 96, 70, 60,255, 91, 67, 58,255, 88, 66, 58,255, + 85, 64, 56,255, 82, 64, 55,255, 79, 62, 54,255, 70, 62, 57,255, 61, 61, 62,255, 60, 60, 61,255,128,116,100,255,190,168,136,255, +189,167,135,255,189,166,135,255,189,166,135,255,189,166,135,255,188,166,134,255,188,165,134,255,188,165,134,255,187,165,134,255, +187,164,133,255,187,164,133,255,186,163,132,255,185,162,132,255,185,162,131,255,185,162,131,255,184,161,130,255,183,160,130,255, +183,160,129,255,182,159,129,255,181,158,128,255,181,157,128,255,180,156,127,255,179,156,126,255,178,154,125,255,177,153,124,255, +176,152,124,255,175,151,123,255,173,149,121,255,175,151,123,255,179,156,126,255,180,158,128,255,181,159,129,255,181,159,129,255, +180,158,128,255,179,157,127,255,180,158,128,255,178,156,127,255,179,157,127,255,178,156,127,255,177,155,125,255,177,155,126,255, +176,155,126,255,176,153,124,255,175,153,125,255,176,152,123,255,175,152,124,255,174,151,123,255,175,151,124,255,173,151,122,255, +174,151,123,255,173,150,122,255,172,149,121,255,173,150,122,255,172,149,121,255,171,148,120,255,172,149,121,255,171,148,120,255, +171,148,120,255,170,147,119,255,170,147,118,255,169,146,119,255,170,146,118,255,168,146,119,255,169,145,118,255,169,144,117,255, +168,145,118,255,167,144,118,255,168,143,118,255,168,144,118,255,167,144,117,255,167,144,116,255,166,144,117,255,167,143,117,255, +167,144,117,255,167,143,117,255,167,143,117,255,167,142,117,255,166,142,116,255,167,142,117,255,167,142,117,255,166,142,116,255, +168,146,118,255,166,141,116,255,122, 96, 80,255, 99, 72, 62,255,100, 73, 63,255, 97, 70, 61,255, 92, 69, 59,255, 89, 66, 57,255, + 85, 65, 56,255, 83, 64, 55,255, 80, 62, 54,255, 70, 62, 58,255, 61, 61, 62,255, 60, 60, 61,255,129,117,100,255,192,169,137,255, +190,168,136,255,190,168,137,255,191,167,136,255,189,167,135,255,189,168,135,255,189,167,135,255,189,167,135,255,188,166,134,255, +189,165,135,255,187,166,133,255,188,165,134,255,186,163,133,255,187,164,133,255,186,163,132,255,185,162,131,255,184,161,131,255, +184,161,131,255,183,160,129,255,182,159,129,255,182,159,129,255,180,157,127,255,180,156,127,255,179,156,127,255,178,154,125,255, +176,153,124,255,175,152,123,255,179,156,126,255,181,159,129,255,180,158,128,255,181,159,129,255,181,159,129,255,180,158,128,255, +180,158,128,255,179,157,127,255,180,158,128,255,178,156,127,255,178,157,126,255,179,156,127,255,177,155,125,255,177,154,126,255, +176,155,126,255,176,153,124,255,175,153,125,255,176,152,124,255,174,152,123,255,175,151,124,255,174,151,123,255,173,150,122,255, +174,151,123,255,172,150,121,255,172,149,122,255,173,150,122,255,171,149,120,255,172,148,121,255,172,149,121,255,170,147,120,255, +171,148,119,255,170,147,120,255,170,147,119,255,170,146,118,255,169,145,118,255,168,146,119,255,169,145,119,255,169,144,118,255, +168,145,118,255,167,144,118,255,168,143,118,255,167,144,117,255,166,144,116,255,166,144,116,255,167,143,117,255,167,144,117,255, +167,143,117,255,167,143,117,255,167,142,117,255,166,142,116,255,167,142,117,255,166,143,116,255,166,143,116,255,165,142,115,255, +166,141,116,255,166,143,116,255,167,144,118,255,117, 90, 76,255, 97, 71, 61,255, 97, 71, 61,255, 93, 69, 60,255, 89, 66, 58,255, + 86, 65, 56,255, 83, 64, 56,255, 80, 63, 54,255, 70, 62, 58,255, 61, 61, 62,255, 60, 60, 61,255,129,118,101,255,193,171,138,255, +192,170,138,255,191,169,137,255,192,170,137,255,191,169,137,255,191,169,137,255,191,168,136,255,190,168,136,255,190,167,136,255, +190,167,136,255,189,167,135,255,188,166,134,255,188,165,134,255,188,165,134,255,187,164,133,255,186,164,133,255,185,163,132,255, +185,162,132,255,184,161,131,255,184,161,130,255,183,159,129,255,181,159,129,255,181,157,128,255,180,156,127,255,179,155,126,255, +179,155,126,255,181,158,129,255,181,159,129,255,181,159,129,255,182,160,130,255,181,159,129,255,180,158,128,255,181,159,129,255, +180,158,128,255,179,157,127,255,180,158,127,255,179,156,127,255,179,157,127,255,177,156,125,255,178,155,126,255,177,155,126,255, +177,155,126,255,176,153,125,255,175,153,124,255,175,152,124,255,174,152,123,255,175,152,123,255,173,151,122,255,174,150,123,255, +173,151,122,255,173,150,122,255,173,150,122,255,172,149,122,255,171,149,121,255,172,148,120,255,171,149,120,255,170,147,120,255, +170,147,120,255,169,146,119,255,170,146,120,255,169,147,120,255,170,146,119,255,168,145,118,255,169,146,118,255,169,145,119,255, +168,145,118,255,167,144,117,255,168,144,118,255,167,144,117,255,166,144,116,255,167,144,117,255,167,143,117,255,167,143,117,255, +167,142,117,255,167,143,117,255,167,142,117,255,166,143,116,255,165,142,115,255,165,142,115,255,166,141,116,255,166,141,116,255, +166,142,116,255,165,141,115,255,167,144,117,255,167,144,117,255,113, 87, 74,255, 94, 68, 59,255, 95, 70, 60,255, 90, 67, 58,255, + 87, 66, 57,255, 83, 64, 56,255, 81, 63, 55,255, 71, 62, 58,255, 61, 61, 62,255, 60, 60, 61,255,130,118,102,255,194,172,139,255, +193,171,138,255,192,170,138,255,192,170,138,255,192,170,137,255,192,170,137,255,191,169,137,255,191,169,137,255,191,169,136,255, +190,168,136,255,190,168,136,255,189,167,135,255,189,167,135,255,188,166,134,255,188,165,134,255,187,164,133,255,187,164,133,255, +186,163,132,255,185,162,132,255,184,161,131,255,183,160,130,255,182,158,128,255,181,158,128,255,180,157,127,255,181,158,128,255, +181,159,129,255,180,158,128,255,181,159,129,255,182,160,130,255,182,160,130,255,181,159,129,255,180,158,128,255,181,159,129,255, +180,158,128,255,179,157,127,255,180,158,128,255,178,156,127,255,179,157,127,255,178,156,125,255,177,155,126,255,177,155,125,255, +177,154,126,255,175,153,124,255,176,153,125,255,175,153,123,255,174,152,124,255,175,151,123,255,173,151,123,255,174,151,123,255, +173,150,122,255,173,150,122,255,173,150,122,255,172,149,121,255,171,149,122,255,172,148,121,255,171,149,121,255,171,147,121,255, +170,147,120,255,169,147,119,255,170,147,120,255,170,146,119,255,170,147,120,255,168,145,118,255,169,146,119,255,169,145,118,255, +168,144,118,255,167,145,117,255,168,144,118,255,167,144,117,255,166,143,116,255,167,144,117,255,167,142,117,255,167,142,117,255, +166,143,116,255,166,142,116,255,166,143,116,255,165,142,115,255,166,142,116,255,166,141,116,255,166,142,116,255,166,142,116,255, +166,142,116,255,166,141,116,255,165,141,115,255,167,144,117,255,165,141,115,255,108, 83, 70,255, 93, 69, 59,255, 92, 68, 58,255, + 87, 66, 57,255, 84, 65, 56,255, 81, 63, 55,255, 71, 62, 58,255, 61, 61, 62,255, 60, 60, 61,255,131,119,102,255,196,173,140,255, +195,173,140,255,194,172,140,255,194,172,139,255,194,171,139,255,194,170,139,255,193,171,139,255,193,170,138,255,193,169,137,255, +192,170,138,255,191,169,136,255,190,169,137,255,191,168,137,255,189,167,135,255,189,167,135,255,188,166,134,255,187,165,133,255, +187,164,133,255,185,162,131,255,184,161,131,255,184,161,131,255,182,159,129,255,181,158,128,255,182,159,129,255,179,158,128,255, +181,159,129,255,181,159,129,255,181,159,129,255,182,160,130,255,182,160,130,255,180,158,128,255,181,159,129,255,180,159,128,255, +180,158,128,255,179,157,127,255,180,158,128,255,178,156,126,255,178,156,126,255,177,155,127,255,177,155,125,255,176,155,126,255, +177,154,125,255,175,154,125,255,175,153,124,255,176,152,123,255,174,152,123,255,175,151,122,255,173,152,123,255,173,151,122,255, +174,150,123,255,172,150,121,255,173,149,121,255,172,150,122,255,172,149,122,255,171,148,121,255,172,148,120,255,170,148,121,255, +170,147,120,255,169,147,119,255,170,147,120,255,170,147,120,255,170,147,120,255,168,145,118,255,169,146,119,255,169,145,119,255, +168,145,118,255,167,144,117,255,168,145,118,255,168,143,118,255,167,144,117,255,166,143,116,255,166,143,116,255,167,143,117,255, +167,142,117,255,165,143,115,255,166,142,116,255,166,141,116,255,166,142,116,255,166,142,116,255,165,141,115,255,165,141,115,255, +165,141,115,255,165,142,115,255,164,142,114,255,164,141,114,255,167,144,117,255,153,129,105,255, 96, 72, 62,255, 92, 68, 59,255, + 88, 67, 58,255, 84, 65, 56,255, 81, 63, 55,255, 71, 63, 58,255, 61, 61, 62,255, 60, 60, 61,255,131,120,103,255,197,175,142,255, +195,174,141,255,195,173,140,255,194,173,140,255,194,172,140,255,194,172,140,255,194,172,139,255,194,172,139,255,193,171,139,255, +193,170,138,255,192,170,138,255,192,170,138,255,192,169,137,255,191,168,136,255,190,168,136,255,189,167,135,255,189,166,135,255, +187,165,134,255,187,164,133,255,185,162,132,255,185,162,131,255,184,160,130,255,181,159,128,255,179,157,127,255,180,158,128,255, +181,159,129,255,180,158,128,255,181,159,129,255,182,160,130,255,182,160,129,255,180,158,128,255,181,158,129,255,181,159,129,255, +180,157,128,255,180,158,127,255,178,156,128,255,179,157,126,255,178,156,126,255,178,156,127,255,176,154,125,255,177,154,125,255, +177,154,125,255,175,153,124,255,176,153,124,255,175,153,123,255,174,152,124,255,175,151,123,255,173,152,122,255,174,150,123,255, +174,150,122,255,172,151,123,255,173,149,121,255,172,150,122,255,171,149,121,255,172,149,121,255,172,148,120,255,170,148,121,255, +170,147,120,255,170,147,119,255,169,146,120,255,169,146,120,255,169,146,120,255,169,146,119,255,168,145,118,255,168,145,119,255, +168,145,118,255,167,144,117,255,168,145,118,255,167,143,117,255,166,144,116,255,167,143,117,255,167,143,117,255,166,142,116,255, +165,143,115,255,166,142,116,255,166,141,116,255,165,141,115,255,165,141,115,255,165,141,115,255,164,140,114,255,164,140,114,255, +164,141,114,255,164,142,114,255,165,142,115,255,165,142,115,255,164,141,114,255,170,147,120,255,130,105, 87,255, 88, 66, 57,255, + 88, 67, 57,255, 84, 65, 57,255, 82, 64, 55,255, 71, 63, 58,255, 61, 61, 62,255, 60, 60, 61,255,132,121,104,255,197,175,142,255, +196,174,141,255,196,174,141,255,195,173,140,255,195,174,141,255,195,173,140,255,194,173,140,255,194,173,140,255,194,172,139,255, +193,171,139,255,193,171,139,255,193,171,138,255,192,170,138,255,191,169,137,255,191,169,137,255,190,168,136,255,189,167,135,255, +189,166,135,255,187,165,133,255,187,163,132,255,185,162,132,255,180,157,127,255,178,156,127,255,179,157,127,255,179,157,127,255, +181,159,129,255,180,158,128,255,182,160,129,255,182,160,129,255,181,159,129,255,180,158,129,255,180,159,128,255,181,158,129,255, +179,157,127,255,180,158,128,255,179,157,128,255,178,156,126,255,178,156,127,255,178,155,126,255,177,155,126,255,176,154,125,255, +177,154,125,255,175,153,124,255,176,153,123,255,174,152,124,255,174,151,123,255,175,152,124,255,173,151,122,255,173,150,122,255, +174,151,123,255,172,150,122,255,172,149,121,255,173,149,121,255,171,150,122,255,172,148,120,255,172,149,121,255,171,148,121,255, +170,147,120,255,171,148,119,255,170,147,120,255,170,147,120,255,170,147,119,255,169,146,120,255,169,146,119,255,169,146,118,255, +168,145,118,255,168,145,118,255,167,145,117,255,167,143,117,255,166,144,116,255,167,143,117,255,167,142,117,255,166,143,116,255, +165,142,115,255,166,141,116,255,165,142,115,255,166,142,116,255,165,141,115,255,164,140,114,255,165,141,115,255,165,140,115,255, +165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,166,143,116,255,170,147,120,255,105, 80, 68,255, + 86, 65, 56,255, 85, 65, 57,255, 82, 64, 55,255, 72, 63, 58,255, 61, 61, 62,255, 60, 60, 61,255,132,121,104,255,199,178,144,255, +198,175,142,255,197,176,143,255,197,176,142,255,197,174,142,255,196,175,142,255,196,174,142,255,195,174,140,255,194,174,141,255, +195,173,140,255,194,172,140,255,193,171,140,255,194,172,139,255,193,171,139,255,192,170,138,255,192,170,137,255,190,168,136,255, +190,167,136,255,189,165,134,255,186,163,133,255,179,157,127,255,178,156,127,255,179,157,128,255,179,157,127,255,181,159,129,255, +180,158,128,255,181,159,129,255,180,158,129,255,180,158,129,255,180,158,129,255,180,158,128,255,181,159,129,255,180,158,128,255, +180,158,128,255,179,157,128,255,178,156,128,255,178,156,126,255,177,156,127,255,177,155,126,255,177,154,125,255,176,153,124,255, +176,153,124,255,175,152,123,255,176,153,124,255,175,152,124,255,175,152,124,255,174,151,123,255,174,151,123,255,174,151,123,255, +173,150,122,255,173,150,122,255,173,150,122,255,173,150,122,255,171,148,120,255,172,149,121,255,172,149,121,255,172,149,121,255, +171,148,120,255,170,147,119,255,171,148,120,255,170,147,119,255,170,147,119,255,171,147,119,255,170,146,120,255,170,147,119,255, +168,145,119,255,168,145,118,255,167,144,117,255,167,144,117,255,166,143,116,255,167,144,117,255,166,142,116,255,165,142,115,255, +166,141,116,255,166,142,116,255,166,142,116,255,164,142,114,255,165,140,115,255,165,140,115,255,165,141,115,255,165,141,115,255, +165,141,115,255,165,141,115,255,165,141,115,255,165,140,115,255,165,142,115,255,164,141,114,255,168,145,118,255,154,130,107,255, + 86, 64, 56,255, 85, 65, 56,255, 82, 64, 55,255, 72, 62, 58,255, 61, 61, 62,255, 60, 60, 60,255,133,122,104,255,200,179,145,255, +198,177,144,255,198,177,143,255,198,176,143,255,198,176,143,255,197,176,142,255,197,175,142,255,196,175,142,255,196,174,142,255, +196,174,141,255,195,174,141,255,195,173,141,255,194,172,140,255,194,172,140,255,193,171,139,255,193,170,138,255,192,169,137,255, +190,168,136,255,188,166,134,255,180,157,128,255,178,156,126,255,179,157,127,255,179,157,128,255,180,157,128,255,181,159,129,255, +181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,180,158,128,255,180,158,128,255, +179,157,128,255,179,157,127,255,178,157,128,255,178,155,126,255,177,155,126,255,178,154,126,255,177,154,125,255,176,154,125,255, +175,152,123,255,176,153,124,255,175,152,124,255,174,152,123,255,174,152,123,255,174,151,123,255,174,150,123,255,173,151,122,255, +173,150,122,255,173,150,122,255,172,149,121,255,172,149,121,255,172,149,121,255,172,149,121,255,172,149,121,255,172,149,121,255, +171,148,120,255,171,148,120,255,172,149,121,255,171,148,120,255,171,148,120,255,171,148,120,255,171,148,120,255,170,147,120,255, +169,146,118,255,169,146,118,255,168,145,117,255,167,144,117,255,167,144,117,255,166,144,116,255,166,142,116,255,165,142,115,255, +166,141,116,255,166,142,116,255,165,142,115,255,164,141,114,255,165,141,115,255,165,140,115,255,165,141,115,255,165,141,115,255, +165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,140,115,255,164,140,114,255,164,141,114,255,169,146,119,255, +112, 90, 75,255, 84, 64, 56,255, 82, 64, 55,255, 72, 62, 58,255, 61, 61, 62,255, 60, 60, 60,255,133,122,105,255,201,179,146,255, +199,178,145,255,199,178,144,255,199,177,144,255,198,177,144,255,198,177,143,255,198,176,143,255,197,176,143,255,197,176,143,255, +197,175,142,255,196,175,142,255,196,174,142,255,195,174,141,255,195,173,140,255,194,172,139,255,193,171,139,255,193,171,138,255, +190,168,137,255,179,157,128,255,178,156,126,255,178,157,126,255,179,156,127,255,180,158,128,255,180,158,128,255,180,159,128,255, +181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,180,158,128,255,180,158,128,255,180,158,128,255,179,157,127,255, +179,157,127,255,179,157,128,255,178,157,127,255,178,155,126,255,178,155,126,255,177,155,125,255,177,154,124,255,176,154,125,255, +175,153,123,255,175,153,124,255,175,152,123,255,175,151,124,255,174,151,123,255,173,151,122,255,174,151,123,255,173,150,122,255, +172,150,121,255,173,150,122,255,172,149,121,255,171,148,120,255,172,149,121,255,172,149,121,255,172,149,121,255,171,148,120,255, +172,149,121,255,172,149,121,255,172,149,121,255,172,148,121,255,171,148,121,255,171,148,121,255,171,148,121,255,171,148,120,255, +170,147,119,255,169,146,119,255,169,146,118,255,168,144,117,255,167,144,117,255,167,144,116,255,166,143,116,255,165,142,115,255, +166,142,116,255,166,141,116,255,165,142,115,255,164,142,114,255,165,141,115,255,165,140,115,255,165,141,115,255,165,141,115,255, +165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,140,115,255,164,141,114,255,166,143,116,255, +143,120, 98,255, 86, 67, 57,255, 83, 64, 55,255, 72, 62, 58,255, 61, 61, 62,255, 60, 60, 60,255,134,123,106,255,202,181,147,255, +201,180,146,255,201,180,146,255,200,179,146,255,200,179,145,255,199,178,145,255,199,178,145,255,199,178,143,255,198,177,144,255, +198,177,144,255,198,177,142,255,197,176,143,255,197,176,143,255,196,175,142,255,196,174,141,255,195,173,141,255,193,171,139,255, +181,158,129,255,177,155,126,255,178,156,127,255,179,156,127,255,179,158,127,255,180,157,128,255,181,158,129,255,181,159,129,255, +181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,179,157,127,255,180,158,128,255,180,157,128,255, +180,157,128,255,179,156,127,255,178,156,126,255,178,156,126,255,177,155,126,255,177,154,125,255,176,154,125,255,175,154,125,255, +175,153,125,255,174,153,123,255,175,152,124,255,173,151,122,255,174,151,123,255,174,150,123,255,172,150,121,255,173,149,122,255, +173,150,122,255,171,148,120,255,172,149,121,255,171,148,121,255,172,149,121,255,171,148,121,255,171,148,121,255,171,149,121,255, +171,149,121,255,171,149,120,255,171,148,122,255,171,149,121,255,172,150,122,255,173,150,121,255,173,150,122,255,172,149,122,255, +170,148,121,255,170,147,120,255,170,147,119,255,168,146,118,255,168,145,117,255,167,144,116,255,166,143,116,255,165,142,115,255, +165,142,115,255,165,142,115,255,166,141,116,255,165,142,115,255,164,142,114,255,165,141,115,255,165,141,115,255,165,141,115,255, +165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255, +163,139,113,255, 94, 74, 63,255, 82, 65, 55,255, 72, 63, 58,255, 61, 61, 62,255, 60, 60, 60,255,134,124,107,255,203,183,149,255, +202,181,148,255,201,181,147,255,201,180,147,255,201,180,147,255,200,180,146,255,200,179,146,255,200,179,145,255,199,178,145,255, +199,178,145,255,199,178,144,255,198,177,144,255,198,176,143,255,198,176,143,255,196,175,142,255,196,174,141,255,185,163,132,255, +177,154,126,255,178,156,127,255,179,157,127,255,179,157,128,255,180,157,128,255,181,158,129,255,180,158,128,255,181,159,129,255, +181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,180,158,128,255,179,157,127,255,179,158,127,255, +179,157,127,255,179,157,127,255,178,156,127,255,177,155,125,255,177,155,126,255,177,154,125,255,175,154,124,255,176,153,125,255, +174,153,123,255,175,152,124,255,174,152,123,255,174,152,123,255,173,151,122,255,173,150,122,255,173,149,122,255,173,150,122,255, +172,149,121,255,172,148,121,255,171,149,121,255,172,149,121,255,171,148,121,255,171,148,121,255,170,147,121,255,170,149,121,255, +170,149,121,255,171,149,120,255,171,148,121,255,172,149,122,255,173,150,121,255,172,149,122,255,172,149,122,255,173,150,121,255, +172,149,121,255,171,148,121,255,170,147,120,255,169,146,119,255,169,146,118,255,168,145,117,255,167,144,116,255,166,143,116,255, +165,142,115,255,166,142,116,255,165,142,115,255,166,141,116,255,165,142,115,255,164,141,114,255,165,140,115,255,165,141,115,255, +165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255, +171,147,119,255,114, 93, 78,255, 80, 63, 55,255, 72, 63, 58,255, 61, 61, 62,255, 60, 60, 60,255,135,125,108,255,205,184,151,255, +202,182,149,255,202,182,149,255,202,182,148,255,201,181,148,255,201,181,148,255,201,180,147,255,201,180,147,255,200,179,146,255, +200,179,146,255,200,179,146,255,199,179,146,255,199,178,145,255,198,177,144,255,198,177,144,255,190,168,136,255,176,154,125,255, +178,156,126,255,178,156,127,255,179,157,128,255,179,158,127,255,180,157,128,255,181,158,129,255,181,159,129,255,181,159,129,255, +181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,180,158,128,255,181,159,129,255,180,158,128,255,180,158,128,255, +179,156,127,255,178,156,126,255,177,156,127,255,177,155,126,255,177,155,126,255,176,154,125,255,176,154,125,255,175,153,124,255, +175,152,124,255,174,152,123,255,174,152,123,255,174,151,123,255,173,151,122,255,172,150,121,255,173,150,122,255,172,150,121,255, +172,149,121,255,171,149,121,255,172,148,121,255,171,149,121,255,170,147,121,255,170,147,121,255,171,147,121,255,171,148,121,255, +170,148,121,255,171,148,121,255,172,149,120,255,172,149,121,255,172,149,122,255,173,150,121,255,173,149,122,255,172,149,122,255, +172,150,122,255,171,149,121,255,171,148,121,255,169,147,119,255,169,146,119,255,168,145,118,255,167,144,117,255,167,143,116,255, +166,143,116,255,165,142,115,255,166,142,116,255,165,142,115,255,165,141,115,255,165,142,115,255,165,141,115,255,165,140,115,255, +165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,164,140,114,255, +167,144,117,255,149,126,105,255, 77, 60, 52,255, 71, 63, 58,255, 61, 61, 62,255, 60, 60, 60,255,136,125,109,255,205,186,153,255, +204,185,152,255,204,183,151,255,204,183,151,255,203,183,150,255,203,183,150,255,203,182,149,255,202,182,149,255,202,182,149,255, +202,181,148,255,201,181,148,255,201,180,147,255,201,180,147,255,200,180,146,255,195,174,142,255,177,154,125,255,178,155,126,255, +179,157,127,255,180,158,127,255,179,157,127,255,179,157,127,255,181,159,129,255,181,158,129,255,181,159,129,255,181,159,129,255, +181,159,129,255,181,159,129,255,181,159,129,255,180,158,128,255,181,159,129,255,180,158,128,255,179,157,127,255,179,157,127,255, +178,156,126,255,178,156,127,255,177,155,126,255,176,154,125,255,177,155,126,255,176,154,125,255,175,153,124,255,174,152,123,255, +175,153,124,255,174,152,123,255,173,151,122,255,174,151,122,255,172,151,121,255,173,150,122,255,172,149,121,255,171,149,122,255, +172,148,121,255,172,148,121,255,171,149,121,255,170,148,121,255,171,148,121,255,171,148,121,255,171,148,121,255,171,148,121,255, +171,148,121,255,171,148,121,255,170,147,121,255,170,147,120,255,171,148,120,255,171,149,121,255,172,149,121,255,172,149,121,255, +172,150,122,255,172,149,121,255,171,149,120,255,170,148,120,255,170,147,120,255,169,146,119,255,168,145,118,255,168,144,117,255, +167,143,116,255,166,143,116,255,165,142,115,255,165,143,116,255,166,141,116,255,165,141,115,255,164,141,114,255,165,140,115,255, +165,140,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,140,115,255, +165,141,114,255,169,145,119,255, 83, 67, 58,255, 71, 62, 58,255, 61, 61, 62,255, 60, 60, 60,255,136,126,110,255,206,187,155,255, +205,186,154,255,205,185,153,255,204,184,152,255,204,184,152,255,204,184,151,255,203,183,150,255,203,183,150,255,203,183,150,255, +203,182,149,255,202,182,149,255,202,182,149,255,202,181,148,255,200,179,146,255,182,160,130,255,178,155,126,255,179,156,127,255, +179,157,127,255,179,157,127,255,180,158,128,255,180,158,128,255,180,158,128,255,181,159,129,255,181,159,129,255,181,159,129,255, +181,159,129,255,181,159,129,255,180,158,128,255,181,159,129,255,180,158,128,255,179,157,127,255,179,157,127,255,179,157,126,255, +178,156,127,255,177,156,127,255,177,155,126,255,176,154,125,255,176,154,125,255,176,154,125,255,175,153,124,255,175,153,124,255, +174,152,123,255,174,151,122,255,174,151,122,255,173,150,121,255,172,150,121,255,172,150,122,255,171,149,122,255,172,148,122,255, +172,149,121,255,171,149,121,255,170,148,121,255,171,148,121,255,171,148,121,255,171,148,121,255,171,148,121,255,171,148,121,255, +171,148,121,255,171,148,121,255,171,148,121,255,171,148,121,255,170,147,121,255,171,148,120,255,171,148,120,255,171,149,121,255, +171,149,121,255,171,149,121,255,171,149,120,255,170,148,120,255,170,147,120,255,170,147,120,255,168,145,118,255,168,145,118,255, +168,143,116,255,167,143,116,255,166,143,116,255,166,142,115,255,165,142,115,255,166,141,116,255,164,142,114,255,165,141,115,255, +165,140,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255, +164,140,114,255,171,147,119,255,107, 89, 79,255, 69, 60, 56,255, 61, 61, 62,255, 60, 60, 60,255,137,127,111,255,208,188,157,255, +206,187,155,255,205,186,155,255,205,186,154,255,205,185,154,255,204,185,153,255,204,185,153,255,204,185,153,255,204,184,152,255, +204,184,152,255,203,183,151,255,203,183,151,255,204,182,150,255,191,170,139,255,178,155,126,255,178,156,127,255,179,157,127,255, +180,158,128,255,180,158,128,255,181,159,129,255,181,159,129,255,181,159,129,255,180,158,128,255,180,158,128,255,181,159,129,255, +181,159,129,255,181,159,129,255,181,159,129,255,180,158,128,255,179,157,127,255,179,157,128,255,179,157,127,255,179,156,126,255, +177,156,127,255,177,155,126,255,178,155,126,255,176,154,125,255,176,154,124,255,175,153,124,255,176,152,123,255,175,152,123,255, +175,151,122,255,174,151,123,255,173,151,122,255,172,151,122,255,173,150,122,255,172,149,121,255,172,150,121,255,172,148,122,255, +172,148,121,255,170,149,121,255,171,148,121,255,171,147,121,255,171,148,121,255,171,148,121,255,170,147,120,255,171,148,121,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,148,120,255,170,148,120,255,170,148,120,255, +171,148,121,255,171,148,121,255,171,148,121,255,170,148,120,255,169,147,119,255,170,147,120,255,168,145,118,255,169,145,118,255, +168,144,117,255,167,143,116,255,167,143,116,255,165,143,116,255,166,142,116,255,166,142,116,255,164,142,114,255,165,141,115,255, +165,140,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255, +164,140,114,255,167,143,116,255,131,113, 98,255, 66, 58, 54,255, 61, 61, 62,255, 60, 60, 60,255,137,128,112,255,209,190,159,255, +207,189,158,255,207,188,157,255,206,188,156,255,206,187,156,255,206,187,155,255,206,187,155,255,205,186,155,255,205,186,154,255, +205,186,154,255,205,185,153,255,205,185,153,255,200,180,149,255,177,155,125,255,178,156,126,255,180,158,128,255,181,159,129,255, +181,159,129,255,180,158,128,255,181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,182,160,130,255,180,158,128,255, +181,159,129,255,181,159,129,255,180,158,128,255,179,157,127,255,180,158,128,255,179,157,128,255,179,156,127,255,178,156,127,255, +177,155,126,255,178,154,125,255,177,155,125,255,176,154,124,255,177,153,125,255,176,153,124,255,176,153,124,255,175,152,123,255, +173,152,122,255,174,150,123,255,173,151,123,255,173,149,122,255,172,150,121,255,171,150,122,255,171,148,122,255,172,149,121,255, +171,149,120,255,170,147,121,255,171,148,121,255,171,148,121,255,170,147,120,255,171,148,121,255,170,147,120,255,169,146,119,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,146,120,255,170,146,120,255,169,146,119,255, +169,147,119,255,169,147,119,255,169,147,119,255,169,147,119,255,170,146,120,255,169,146,119,255,168,145,118,255,169,145,118,255, +168,145,118,255,167,143,116,255,166,144,117,255,166,143,116,255,165,143,116,255,166,142,116,255,165,142,115,255,164,142,114,255, +165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,164,140,114,255,165,141,115,255,164,140,114,255,164,140,114,255, +164,140,114,255,165,141,114,255,146,126,107,255, 66, 58, 54,255, 61, 61, 62,255, 60, 60, 60,255,138,128,113,255,209,191,161,255, +208,190,159,255,208,189,159,255,208,189,159,255,207,188,158,255,207,188,158,255,207,188,157,255,206,187,157,255,206,187,157,255, +206,187,156,255,206,187,155,255,206,186,155,255,183,162,132,255,178,156,126,255,179,157,127,255,181,159,129,255,180,158,128,255, +180,158,128,255,181,159,129,255,182,160,130,255,182,160,130,255,182,160,130,255,181,159,129,255,180,158,128,255,181,159,129,255, +181,159,129,255,181,159,129,255,180,158,128,255,179,157,127,255,180,158,127,255,178,156,128,255,179,156,127,255,178,155,126,255, +177,155,125,255,177,155,125,255,176,154,124,255,176,153,124,255,176,153,124,255,176,153,123,255,175,152,124,255,174,152,123,255, +174,151,123,255,173,150,122,255,172,150,123,255,173,150,121,255,171,150,122,255,172,149,122,255,172,148,121,255,171,149,120,255, +171,148,121,255,171,147,121,255,171,148,121,255,170,147,120,255,171,148,121,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,146,120,255,170,146,120,255,170,146,120,255,170,146,120,255,169,146,119,255,168,145,118,255,169,145,118,255,168,145,118,255, +168,144,117,255,167,144,117,255,167,143,116,255,165,142,115,255,166,142,116,255,166,142,116,255,164,142,114,255,165,141,115,255, +165,140,115,255,165,141,115,255,165,141,115,255,164,140,114,255,165,141,115,255,164,140,114,255,164,140,114,255,163,139,113,255, +163,139,113,255,164,140,113,255,152,131,110,255, 67, 60, 57,255, 61, 61, 62,255, 60, 60, 60,255,138,129,114,255,211,192,163,255, +208,190,161,255,208,190,161,255,208,190,160,255,208,190,160,255,207,189,159,255,207,189,159,255,207,189,159,255,207,188,158,255, +207,188,158,255,208,189,158,255,193,173,143,255,177,155,126,255,180,158,127,255,180,158,128,255,181,159,129,255,180,158,128,255, +181,159,129,255,182,160,130,255,181,159,129,255,181,159,129,255,182,160,130,255,180,158,128,255,181,159,129,255,181,159,129,255, +181,159,129,255,180,158,129,255,180,158,129,255,179,157,128,255,179,157,128,255,178,156,127,255,179,156,127,255,178,155,126,255, +177,155,125,255,176,154,124,255,177,154,125,255,176,153,124,255,176,153,123,255,175,152,124,255,174,152,124,255,173,151,123,255, +174,150,123,255,172,150,123,255,173,149,122,255,172,149,122,255,171,149,121,255,172,148,122,255,172,149,120,255,171,148,121,255, +170,147,121,255,171,148,121,255,170,147,120,255,171,148,121,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,169,146,119,255,169,146,119,255,168,145,118,255,168,146,119,255,168,145,118,255,167,145,118,255, +168,144,117,255,166,143,116,255,166,143,116,255,166,142,115,255,165,142,115,255,166,141,116,255,164,142,114,255,165,141,115,255, +165,140,115,255,165,141,115,255,164,140,114,255,165,141,115,255,164,140,114,255,164,140,114,255,163,139,113,255,164,140,114,255, +164,140,114,255,164,139,113,255,155,134,111,255, 70, 63, 59,255, 61, 61, 61,255, 60, 60, 60,255,138,130,115,255,211,194,166,255, +210,192,164,255,209,192,163,255,209,192,163,255,209,192,163,255,209,191,162,255,209,191,162,255,209,191,161,255,208,190,161,255, +208,190,160,255,204,186,156,255,182,160,131,255,179,157,128,255,180,158,128,255,181,159,129,255,181,159,129,255,182,160,130,255, +182,160,130,255,182,160,129,255,182,160,130,255,182,160,129,255,181,159,128,255,181,159,129,255,181,159,129,255,180,158,129,255, +181,159,128,255,180,158,129,255,179,157,128,255,180,158,127,255,179,157,127,255,179,156,127,255,178,155,126,255,178,155,126,255, +177,154,125,255,177,153,124,255,176,153,125,255,176,152,123,255,175,152,124,255,175,151,123,255,174,151,123,255,173,150,122,255, +173,151,123,255,172,149,122,255,173,150,121,255,172,149,121,255,172,148,122,255,172,149,121,255,171,148,121,255,170,147,121,255, +171,148,121,255,171,148,121,255,171,148,121,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,169,146,119,255,168,145,118,255,169,146,119,255,168,145,118,255,167,144,117,255,167,144,117,255, +166,144,117,255,167,143,116,255,166,142,115,255,165,142,116,255,165,141,115,255,165,142,115,255,165,141,115,255,165,140,115,255, +165,141,115,255,165,141,115,255,165,141,115,255,164,140,114,255,164,140,114,255,163,139,114,255,164,140,114,255,164,140,114,255, +163,139,114,255,163,139,113,255,156,134,112,255, 72, 64, 61,255, 61, 61, 61,255, 60, 60, 60,255,139,130,116,255,212,195,167,255, +211,194,165,255,210,193,165,255,210,192,165,255,210,193,164,255,210,192,164,255,209,192,164,255,209,192,163,255,209,192,163,255, +210,192,163,255,193,173,144,255,178,156,127,255,180,158,128,255,181,159,129,255,181,159,129,255,182,160,130,255,181,159,129,255, +182,160,130,255,182,160,130,255,182,160,129,255,181,159,129,255,182,160,129,255,182,160,129,255,182,160,129,255,180,158,128,255, +181,159,129,255,180,158,128,255,180,157,127,255,179,157,127,255,179,157,127,255,178,156,126,255,178,155,125,255,177,155,125,255, +176,154,124,255,176,153,125,255,176,152,125,255,175,152,123,255,174,151,123,255,174,152,124,255,173,151,123,255,174,150,122,255, +172,151,123,255,173,149,121,255,172,150,122,255,172,148,122,255,171,149,121,255,172,149,120,255,170,147,121,255,171,148,121,255, +170,147,120,255,171,148,121,255,170,147,120,255,169,146,119,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +169,146,119,255,170,147,120,255,169,146,119,255,169,146,119,255,169,146,119,255,167,144,117,255,167,144,117,255,167,143,116,255, +167,143,116,255,166,142,115,255,165,143,116,255,165,141,115,255,165,142,115,255,164,142,114,255,165,140,115,255,165,141,115,255, +165,141,115,255,164,140,114,255,164,140,114,255,163,139,113,255,163,139,114,255,164,140,114,255,163,139,113,255,163,139,114,255, +163,139,114,255,163,139,114,255,154,132,109,255, 70, 63, 59,255, 61, 61, 61,255, 60, 60, 60,255,139,131,117,255,213,197,169,255, +211,194,167,255,211,194,167,255,211,194,167,255,210,193,166,255,210,193,166,255,210,193,166,255,210,193,165,255,211,194,166,255, +207,190,161,255,179,157,127,255,180,158,128,255,181,159,129,255,181,159,129,255,181,159,130,255,181,159,129,255,181,159,130,255, +181,159,130,255,182,160,130,255,182,160,129,255,182,160,128,255,181,159,129,255,182,160,129,255,181,159,129,255,181,159,129,255, +180,158,128,255,179,157,127,255,179,157,127,255,178,156,126,255,179,157,127,255,177,155,125,255,177,155,126,255,176,154,125,255, +176,154,125,255,175,153,124,255,176,153,125,255,175,152,123,255,174,152,124,255,173,151,123,255,174,150,122,255,173,151,123,255, +173,150,122,255,173,150,121,255,172,149,121,255,171,149,122,255,172,149,120,255,171,148,121,255,170,147,121,255,170,147,120,255, +171,148,121,255,170,147,120,255,169,146,119,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,169,146,119,255,169,146,119,255,168,146,119,255,169,145,118,255,168,145,118,255,167,144,117,255,167,144,117,255, +166,143,116,255,165,143,115,255,166,142,116,255,166,142,116,255,164,142,114,255,164,141,114,255,165,140,115,255,165,141,115,255, +164,140,114,255,165,141,115,255,163,139,113,255,164,140,114,255,164,140,114,255,163,139,113,255,162,138,114,255,163,139,113,255, +163,139,113,255,163,139,113,255,154,131,109,255, 70, 63, 59,255, 61, 61, 61,255, 60, 60, 60,255,140,131,118,255,214,197,171,255, +212,196,169,255,212,196,169,255,212,196,169,255,212,196,168,255,212,195,168,255,212,195,168,255,212,195,168,255,213,196,169,255, +189,168,139,255,179,156,127,255,181,159,129,255,181,159,129,255,182,160,130,255,183,161,129,255,183,161,130,255,183,161,130,255, +183,161,130,255,182,160,129,255,181,159,130,255,182,160,130,255,182,160,129,255,181,159,128,255,180,158,128,255,180,158,128,255, +179,157,127,255,179,157,127,255,178,156,126,255,178,156,126,255,178,156,126,255,177,155,126,255,176,154,126,255,176,154,125,255, +175,153,125,255,175,153,124,255,174,152,123,255,174,152,124,255,173,151,123,255,174,150,122,255,173,151,123,255,172,150,122,255, +172,149,121,255,172,149,122,255,171,148,121,255,172,149,120,255,171,148,121,255,171,148,121,255,170,147,120,255,171,148,121,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,169,146,119,255,168,145,118,255,169,146,119,255,168,145,118,255,168,145,118,255,166,143,116,255,166,143,116,255, +166,143,115,255,166,142,116,255,165,141,115,255,164,142,114,255,165,141,115,255,165,140,115,255,164,140,114,255,165,141,115,255, +164,140,114,255,163,139,113,255,164,140,114,255,164,140,113,255,163,139,114,255,162,138,113,255,162,138,113,255,161,137,113,255, +162,138,113,255,162,138,113,255,150,128,107,255, 68, 60, 57,255, 61, 61, 62,255, 60, 60, 60,255,140,132,118,255,214,198,172,255, +212,197,171,255,213,197,171,255,213,197,171,255,212,197,171,255,212,196,170,255,212,196,170,255,213,197,170,255,204,187,160,255, +180,158,128,255,180,158,129,255,181,159,129,255,182,160,130,255,183,161,129,255,182,160,129,255,183,161,129,255,183,161,129,255, +182,160,129,255,183,161,130,255,181,159,130,255,181,159,129,255,182,160,130,255,181,159,128,255,181,159,129,255,180,158,128,255, +180,158,128,255,179,157,127,255,179,157,127,255,178,156,126,255,178,156,125,255,177,154,125,255,177,154,126,255,176,154,125,255, +175,152,124,255,175,152,124,255,175,152,124,255,174,151,123,255,174,150,122,255,173,151,123,255,172,150,122,255,172,149,121,255, +173,150,122,255,172,149,121,255,171,148,121,255,171,148,120,255,171,148,121,255,170,147,121,255,171,148,121,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +169,146,119,255,169,146,119,255,168,145,118,255,169,145,118,255,168,145,118,255,168,144,117,255,166,143,116,255,166,143,116,255, +165,143,115,255,165,141,115,255,165,141,115,255,164,141,114,255,165,140,115,255,164,140,114,255,165,141,115,255,164,140,114,255, +164,140,114,255,164,140,114,255,164,140,113,255,163,139,114,255,162,138,113,255,162,138,112,255,162,138,113,255,162,138,113,255, +161,137,113,255,163,138,113,255,143,123,104,255, 66, 58, 55,255, 61, 61, 62,255, 60, 60, 60,255,140,133,119,255,215,199,173,255, +213,197,172,255,213,197,172,255,212,197,171,255,213,197,172,255,213,197,172,255,213,197,172,255,213,197,172,255,191,171,142,255, +180,158,128,255,181,159,130,255,182,160,129,255,183,161,129,255,182,160,131,255,183,161,130,255,183,161,130,255,183,161,130,255, +183,161,130,255,182,160,130,255,181,159,130,255,182,160,130,255,181,159,129,255,181,159,129,255,180,158,128,255,180,158,128,255, +179,157,127,255,179,157,126,255,178,156,126,255,178,156,125,255,177,155,125,255,177,154,126,255,176,154,125,255,175,153,124,255, +175,152,124,255,175,152,124,255,174,151,123,255,174,150,122,255,173,151,123,255,172,150,122,255,173,149,121,255,173,150,122,255, +172,149,121,255,171,148,121,255,171,148,120,255,172,149,121,255,170,147,121,255,170,147,120,255,171,148,121,255,169,147,119,255, +169,146,119,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +169,146,119,255,168,145,118,255,169,146,119,255,168,145,118,255,168,145,118,255,167,144,117,255,166,143,116,255,165,143,115,255, +166,142,116,255,164,142,114,255,164,141,114,255,165,140,115,255,164,140,114,255,165,141,115,255,164,140,114,255,164,140,114,255, +163,139,113,255,164,140,113,255,163,139,114,255,163,139,113,255,162,138,112,255,161,137,113,255,162,138,112,255,162,138,112,255, +161,137,112,255,164,140,113,255,128,110, 94,255, 66, 59, 54,255, 61, 61, 62,255, 60, 60, 60,255,141,133,120,255,215,200,175,255, +214,199,174,255,214,199,173,255,214,199,173,255,214,199,173,255,214,199,173,255,214,199,174,255,209,193,168,255,182,161,131,255, +181,159,129,255,182,160,130,255,183,161,130,255,182,160,131,255,183,161,130,255,183,161,131,255,183,161,131,255,183,161,131,255, +182,160,130,255,181,159,129,255,182,160,130,255,181,159,129,255,180,158,128,255,180,158,128,255,180,158,128,255,179,157,127,255, +178,156,126,255,178,156,127,255,177,155,126,255,177,155,125,255,176,155,126,255,176,154,125,255,175,153,124,255,175,153,124,255, +174,151,123,255,174,151,123,255,173,150,122,255,174,151,123,255,173,150,122,255,172,149,121,255,173,150,122,255,172,149,121,255, +172,149,122,255,172,149,120,255,171,148,121,255,170,147,121,255,171,148,121,255,170,147,120,255,169,148,119,255,170,146,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +169,146,119,255,168,145,118,255,168,146,119,255,168,145,118,255,168,144,117,255,167,144,117,255,166,143,116,255,165,142,115,255, +165,142,115,255,164,141,114,255,165,140,115,255,164,140,114,255,164,140,114,255,164,140,114,255,164,140,114,255,164,140,114,255, +163,139,113,255,162,138,114,255,162,138,113,255,162,138,112,255,161,137,113,255,161,137,112,255,161,137,111,255,160,136,111,255, +160,136,111,255,165,141,114,255,109, 93, 82,255, 66, 60, 55,255, 61, 61, 62,255, 60, 60, 60,255,141,133,121,255,216,201,177,255, +214,200,176,255,214,199,175,255,214,199,175,255,214,199,175,255,215,200,175,255,215,201,177,255,199,181,154,255,179,157,127,255, +182,160,130,255,182,160,130,255,183,161,131,255,183,161,130,255,183,161,131,255,183,161,131,255,183,161,131,255,183,161,131,255, +182,160,130,255,182,160,130,255,182,160,130,255,181,159,129,255,180,158,128,255,180,158,128,255,180,158,128,255,178,156,127,255, +178,156,126,255,178,156,126,255,178,155,126,255,177,154,125,255,177,154,126,255,175,153,124,255,175,153,124,255,174,152,123,255, +174,151,123,255,174,151,123,255,174,151,123,255,173,150,122,255,172,149,121,255,172,149,122,255,172,149,121,255,172,149,122,255, +171,148,121,255,171,148,120,255,171,148,121,255,170,147,120,255,170,147,120,255,170,148,120,255,170,147,120,255,170,146,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255, +168,145,118,255,169,146,119,255,169,146,119,255,168,144,117,255,168,144,117,255,167,144,117,255,166,142,115,255,166,142,116,255, +164,142,114,255,165,140,115,255,164,140,114,255,165,141,115,255,164,140,114,255,163,139,113,255,164,140,114,255,163,139,113,255, +163,139,114,255,163,139,113,255,162,138,112,255,162,138,113,255,161,137,112,255,161,137,111,255,161,137,111,255,161,137,111,255, +160,136,111,255,165,140,116,255, 85, 71, 64,255, 52, 47, 45,255, 61, 62, 62,255, 60, 60, 60,255,141,134,122,255,217,203,178,255, +215,201,177,255,215,200,176,255,215,200,176,255,215,200,176,255,215,201,177,255,217,203,179,255,183,162,133,255,181,159,129,255, +181,159,129,255,183,161,131,255,182,160,130,255,183,161,131,255,183,161,131,255,183,161,131,255,182,161,130,255,183,161,131,255, +182,161,130,255,182,159,130,255,181,160,129,255,180,159,128,255,180,158,128,255,179,157,127,255,179,157,128,255,179,157,126,255, +178,156,126,255,178,156,127,255,176,154,125,255,177,155,126,255,176,154,125,255,176,153,125,255,175,152,124,255,175,152,124,255, +173,150,122,255,174,151,123,255,173,150,122,255,172,149,121,255,172,149,122,255,173,150,122,255,171,148,122,255,171,148,121,255, +172,149,120,255,170,147,121,255,170,147,120,255,171,148,121,255,169,148,119,255,169,147,119,255,170,146,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255,169,146,119,255, +168,145,118,255,169,145,118,255,169,146,119,255,167,144,117,255,167,144,117,255,167,143,116,255,165,142,116,255,165,142,115,255, +165,141,115,255,164,140,114,255,165,141,115,255,164,140,114,255,163,139,113,255,163,139,114,255,164,140,114,255,162,138,114,255, +163,139,113,255,162,138,112,255,162,138,112,255,161,137,112,255,160,136,111,255,160,136,110,255,160,136,110,255,160,136,110,255, +161,136,111,255,157,136,115,255, 65, 52, 45,255, 28, 28, 28,255, 62, 62, 62,255, 60, 60, 60,255,142,134,122,255,217,203,180,255, +216,202,179,255,216,202,178,255,216,202,178,255,216,202,178,255,217,203,180,255,207,192,168,255,177,155,124,255,181,159,129,255, +181,159,129,255,183,161,131,255,183,161,131,255,183,161,131,255,183,161,131,255,183,161,131,255,183,161,131,255,182,160,130,255, +181,161,129,255,181,159,129,255,181,159,129,255,181,159,128,255,179,158,128,255,179,157,127,255,179,157,128,255,178,156,126,255, +177,155,127,255,177,155,126,255,177,154,126,255,176,154,125,255,176,153,125,255,175,152,124,255,174,152,123,255,174,151,123,255, +174,151,123,255,173,150,122,255,173,150,122,255,173,150,122,255,172,149,121,255,171,148,122,255,172,149,121,255,171,148,120,255, +170,147,121,255,171,148,121,255,170,148,120,255,169,147,119,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,168,145,118,255, +169,145,118,255,169,146,119,255,168,145,118,255,167,144,117,255,167,144,117,255,166,143,116,255,165,142,116,255,165,141,115,255, +164,141,114,255,164,140,114,255,164,140,114,255,163,139,113,255,163,139,113,255,163,139,114,255,162,138,113,255,162,138,112,255, +162,138,113,255,162,138,112,255,161,137,111,255,161,137,111,255,160,136,110,255,159,135,110,255,160,136,110,255,159,136,111,255, +162,137,112,255,129,111, 97,255, 29, 23, 19,255, 27, 28, 28,255, 61, 61, 61,255, 60, 60, 60,255,142,135,123,255,219,204,181,255, +217,203,180,255,216,203,180,255,216,202,180,255,216,203,180,255,219,206,184,255,190,172,144,255,180,158,127,255,181,159,129,255, +181,159,129,255,183,161,131,255,182,160,130,255,183,161,131,255,183,161,131,255,182,161,130,255,183,161,131,255,182,161,130,255, +181,160,129,255,182,159,130,255,180,159,128,255,180,159,129,255,179,157,128,255,179,157,127,255,179,157,128,255,177,155,126,255, +177,155,126,255,177,155,126,255,177,154,126,255,176,154,125,255,175,153,124,255,174,152,123,255,174,151,123,255,174,151,123,255, +173,150,122,255,173,150,122,255,172,149,121,255,172,149,121,255,172,149,122,255,171,148,121,255,171,148,120,255,171,148,121,255, +170,147,120,255,170,147,120,255,170,148,120,255,169,148,119,255,170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,169,146,119,255,168,145,118,255, +168,146,119,255,169,145,118,255,168,145,118,255,167,144,117,255,167,143,116,255,166,143,116,255,165,142,115,255,165,141,115,255, +164,140,114,255,164,140,114,255,163,139,113,255,164,140,114,255,163,139,114,255,162,138,113,255,163,139,112,255,162,138,113,255, +162,138,112,255,161,137,112,255,160,136,111,255,160,136,111,255,159,135,110,255,159,135,109,255,159,135,109,255,160,135,111,255, +164,140,115,255, 94, 80, 71,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 60, 60, 60,255,143,136,124,255,219,206,183,255, +217,204,182,255,217,204,182,255,217,203,181,255,218,204,182,255,216,204,181,255,181,159,130,255,181,159,129,255,182,160,130,255, +181,159,129,255,182,160,130,255,183,161,131,255,183,161,131,255,183,161,131,255,183,161,131,255,182,160,130,255,181,161,129,255, +182,160,130,255,181,159,129,255,181,158,128,255,180,158,129,255,179,157,127,255,178,156,128,255,178,156,127,255,177,155,126,255, +176,154,125,255,177,155,126,255,175,153,124,255,176,153,125,255,175,153,124,255,174,151,123,255,173,150,122,255,173,150,122,255, +173,150,122,255,172,149,121,255,173,150,122,255,171,148,122,255,171,148,121,255,172,149,120,255,170,147,121,255,170,147,120,255, +171,148,121,255,169,148,119,255,169,147,119,255,170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,169,146,119,255,168,145,118,255,169,146,119,255, +169,145,118,255,168,145,118,255,167,144,117,255,167,144,117,255,166,143,116,255,165,143,115,255,165,141,115,255,164,140,114,255, +165,141,115,255,163,139,113,255,164,140,113,255,163,139,113,255,162,138,113,255,163,139,112,255,162,138,113,255,162,138,112,255, +161,137,112,255,160,136,111,255,159,135,111,255,160,136,110,255,158,134,109,255,158,135,110,255,158,135,109,255,158,134,110,255, +151,129,108,255, 40, 34, 31,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,143,136,126,255,219,206,185,255, +218,205,184,255,218,205,183,255,218,205,183,255,218,206,184,255,208,194,170,255,180,158,128,255,181,159,129,255,182,160,130,255, +181,159,129,255,181,160,129,255,181,161,129,255,182,160,130,255,182,161,130,255,181,160,129,255,182,161,130,255,182,160,130,255, +181,160,129,255,180,159,129,255,180,158,128,255,180,158,129,255,178,156,127,255,178,156,127,255,178,156,127,255,177,155,126,255, +177,155,126,255,176,154,125,255,176,153,125,255,175,152,124,255,174,152,123,255,174,151,123,255,173,150,122,255,173,150,122,255, +172,149,121,255,172,149,122,255,171,148,122,255,172,149,121,255,171,148,120,255,170,147,121,255,171,148,121,255,170,148,120,255, +169,148,119,255,170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255,169,146,119,255,168,145,118,255,169,146,119,255,168,146,119,255, +169,145,118,255,168,144,117,255,168,144,117,255,166,143,116,255,166,143,115,255,165,141,115,255,164,141,114,255,165,141,115,255, +163,139,113,255,164,140,114,255,163,139,114,255,162,138,113,255,162,138,112,255,162,138,113,255,162,138,112,255,161,137,111,255, +160,136,111,255,159,135,110,255,159,135,109,255,158,134,109,255,158,134,110,255,158,134,110,255,158,133,110,255,159,135,110,255, +121,104, 88,255, 7, 6, 6,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,143,137,126,255,220,207,186,255, +219,206,184,255,219,205,184,255,219,206,184,255,219,207,185,255,200,183,159,255,180,158,128,255,181,159,129,255,181,159,129,255, +182,160,130,255,182,160,130,255,182,160,130,255,181,161,129,255,181,161,129,255,182,161,130,255,182,160,130,255,181,160,129,255, +181,159,129,255,181,158,128,255,179,158,129,255,179,157,128,255,179,157,128,255,178,156,127,255,177,155,126,255,176,154,125,255, +176,154,125,255,176,154,125,255,176,153,125,255,175,152,124,255,175,152,124,255,173,151,122,255,174,151,123,255,173,150,122,255, +173,150,122,255,172,149,122,255,171,148,121,255,171,148,120,255,171,148,121,255,170,147,120,255,170,148,120,255,170,147,120,255, +169,147,119,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,168,145,118,255,169,146,119,255,169,146,119,255,169,145,118,255, +168,144,117,255,168,144,117,255,167,144,117,255,166,143,116,255,166,142,116,255,165,142,115,255,165,140,115,255,164,140,114,255, +164,140,114,255,163,139,114,255,163,139,113,255,163,139,112,255,162,138,113,255,162,138,112,255,161,137,112,255,160,136,111,255, +160,136,110,255,159,135,109,255,159,134,109,255,158,134,110,255,157,134,110,255,157,133,109,255,158,133,109,255,157,133,109,255, + 67, 59, 51,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,137,126,255,221,208,188,255, +218,207,185,255,218,206,185,255,219,205,184,255,219,207,185,255,194,175,149,255,179,157,127,255,181,159,129,255,180,158,128,255, +181,159,129,255,182,159,130,255,182,160,130,255,182,160,130,255,182,160,129,255,181,160,130,255,181,160,129,255,180,159,128,255, +181,158,128,255,179,158,129,255,180,157,128,255,179,157,128,255,177,155,126,255,178,156,127,255,177,155,126,255,176,154,125,255, +175,153,124,255,176,154,125,255,174,152,123,255,175,151,124,255,174,152,123,255,174,150,123,255,173,150,122,255,172,149,121,255, +172,149,121,255,171,148,122,255,172,149,121,255,170,147,121,255,170,147,121,255,171,147,121,255,169,147,119,255,169,146,119,255, +170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,169,146,119,255,169,146,119,255,168,145,118,255,168,145,118,255,169,145,118,255,168,146,119,255,169,145,118,255, +167,144,117,255,167,144,117,255,167,143,116,255,165,143,116,255,165,142,115,255,164,141,114,255,164,140,114,255,163,139,113,255, +164,140,113,255,162,138,113,255,163,139,112,255,162,138,112,255,162,138,112,255,161,137,112,255,160,136,111,255,159,135,110,255, +159,135,109,255,158,134,110,255,157,133,110,255,158,134,109,255,158,132,109,255,158,133,109,255,157,131,108,255,147,127,106,255, + 1, 1, 2,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,137,127,255,221,209,188,255, +220,207,187,255,219,207,186,255,219,207,186,255,217,205,184,255,189,169,142,255,179,157,127,255,181,159,129,255,180,158,128,255, +181,159,129,255,181,160,129,255,182,159,130,255,182,160,130,255,181,159,129,255,181,160,129,255,180,159,128,255,180,158,129,255, +180,158,128,255,180,157,129,255,179,157,128,255,178,156,127,255,178,156,127,255,177,155,126,255,177,155,126,255,176,154,125,255, +175,153,124,255,175,153,124,255,174,152,123,255,174,151,123,255,174,151,123,255,174,151,123,255,173,150,122,255,173,150,121,255, +172,149,122,255,172,148,121,255,171,148,120,255,170,147,120,255,171,148,121,255,170,147,120,255,169,146,119,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255, +170,147,120,255,169,146,119,255,168,145,118,255,169,146,119,255,169,146,119,255,169,145,118,255,168,145,118,255,167,145,118,255, +168,143,116,255,167,143,116,255,166,143,116,255,165,142,115,255,165,141,115,255,165,141,115,255,164,140,114,255,164,140,113,255, +162,138,114,255,162,138,113,255,162,138,113,255,162,138,112,255,161,137,111,255,160,136,111,255,159,135,110,255,159,135,109,255, +158,134,110,255,157,133,109,255,157,133,108,255,157,132,108,255,156,132,108,255,155,131,107,255,159,135,110,255, 52, 45, 40,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,138,127,255,222,209,189,255, +219,207,187,255,220,208,187,255,220,207,186,255,216,204,183,255,184,164,136,255,179,157,127,255,181,159,129,255,180,158,128,255, +180,158,128,255,181,159,129,255,181,160,129,255,181,160,129,255,181,159,129,255,180,159,128,255,181,158,129,255,180,158,128,255, +180,158,129,255,179,157,128,255,178,156,127,255,178,156,127,255,177,155,126,255,177,155,126,255,176,154,125,255,175,153,124,255, +175,153,124,255,175,153,124,255,175,152,124,255,174,152,123,255,173,151,122,255,173,150,122,255,173,150,122,255,173,150,121,255, +171,148,121,255,171,149,121,255,170,148,120,255,171,148,121,255,170,148,120,255,169,147,119,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +169,146,119,255,168,145,118,255,169,146,119,255,169,146,119,255,169,145,118,255,169,145,118,255,168,145,118,255,168,144,117,255, +167,143,116,255,166,143,116,255,165,143,115,255,165,141,115,255,164,141,114,255,165,141,115,255,163,139,113,255,163,139,114,255, +163,139,113,255,162,138,112,255,162,138,112,255,161,137,112,255,160,136,111,255,160,136,110,255,159,135,109,255,158,134,110,255, +158,134,109,255,157,133,109,255,157,132,108,255,156,132,108,255,155,131,107,255,158,133,108,255,113, 97, 81,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,138,128,255,222,210,190,255, +220,208,188,255,219,207,187,255,219,207,187,255,215,202,181,255,181,160,131,255,179,157,127,255,180,158,128,255,181,159,129,255, +181,159,129,255,180,158,128,255,181,158,129,255,180,158,129,255,180,158,129,255,181,159,129,255,179,158,129,255,180,157,129,255, +180,158,128,255,178,156,128,255,178,156,127,255,178,156,127,255,176,154,125,255,176,154,125,255,175,153,124,255,176,153,125,255, +175,152,124,255,174,153,123,255,174,151,123,255,173,151,122,255,174,150,123,255,173,150,122,255,172,149,121,255,173,150,121,255, +171,148,121,255,171,148,120,255,170,147,121,255,171,148,121,255,170,147,120,255,169,146,119,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255,169,146,119,255, +168,145,118,255,169,146,119,255,169,145,118,255,168,146,119,255,169,146,119,255,168,144,117,255,167,144,117,255,168,143,116,255, +166,143,116,255,166,143,115,255,166,142,116,255,164,141,114,255,165,141,115,255,164,140,114,255,163,139,114,255,163,139,113,255, +162,138,112,255,162,138,112,255,161,137,112,255,160,136,111,255,159,135,110,255,159,135,109,255,158,133,109,255,157,133,109,255, +157,133,109,255,156,131,107,255,155,132,107,255,155,131,107,255,156,131,108,255,150,127,106,255, 24, 21, 18,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,138,128,255,222,211,191,255, +221,209,189,255,221,209,188,255,221,209,188,255,213,200,179,255,178,156,127,255,179,157,127,255,179,157,127,255,180,158,128,255, +180,158,128,255,181,159,129,255,181,159,129,255,181,159,128,255,180,158,129,255,179,158,128,255,180,157,129,255,179,157,128,255, +179,157,128,255,178,156,127,255,177,155,126,255,177,155,126,255,177,155,126,255,176,154,125,255,176,153,125,255,175,152,124,255, +174,153,123,255,175,152,124,255,174,151,123,255,173,151,122,255,174,151,123,255,172,149,121,255,173,150,122,255,172,149,122,255, +172,149,121,255,171,148,120,255,170,147,121,255,170,148,120,255,170,147,120,255,169,146,119,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255,169,146,119,255,168,145,118,255, +169,146,119,255,169,146,119,255,169,146,119,255,169,145,118,255,168,145,118,255,167,144,117,255,167,143,116,255,167,143,116,255, +166,142,115,255,165,142,115,255,164,141,114,255,164,140,114,255,164,140,114,255,164,140,113,255,163,139,113,255,162,138,113,255, +162,138,112,255,161,137,111,255,160,136,111,255,159,135,111,255,159,135,110,255,158,134,109,255,157,133,108,255,156,132,108,255, +156,132,108,255,155,131,107,255,155,130,106,255,154,129,106,255,156,131,106,255, 91, 78, 64,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,145,139,129,255,222,211,192,255, +220,209,190,255,221,209,189,255,221,209,189,255,211,197,176,255,177,154,124,255,179,156,127,255,180,158,128,255,179,157,127,255, +179,157,127,255,180,158,128,255,180,158,128,255,180,158,129,255,179,158,129,255,180,158,129,255,180,158,128,255,179,157,128,255, +178,156,127,255,177,155,126,255,177,155,126,255,177,155,126,255,176,154,125,255,175,154,124,255,175,153,124,255,174,153,123,255, +174,152,123,255,175,152,124,255,173,151,122,255,173,150,122,255,174,151,123,255,172,149,121,255,173,150,122,255,172,149,122,255, +171,149,120,255,171,148,121,255,170,147,121,255,170,148,120,255,169,147,119,255,170,146,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,169,146,119,255,169,146,119,255, +169,146,119,255,169,145,118,255,168,146,119,255,169,145,118,255,168,145,118,255,168,144,117,255,167,144,117,255,166,143,116,255, +165,142,116,255,165,141,115,255,164,140,114,255,164,140,114,255,164,140,113,255,163,139,114,255,162,138,113,255,162,138,112,255, +161,137,111,255,160,136,111,255,160,136,111,255,159,135,110,255,158,133,109,255,157,133,109,255,157,132,108,255,156,131,107,255, +156,131,107,255,155,131,106,255,155,130,107,255,153,128,106,255,149,126,103,255, 10, 9, 8,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,145,139,130,255,223,212,193,255, +221,210,190,255,220,209,191,255,221,210,191,255,208,193,170,255,176,153,123,255,178,156,126,255,180,158,128,255,180,158,128,255, +180,158,127,255,180,158,127,255,180,158,128,255,180,158,129,255,180,158,128,255,179,157,127,255,178,156,128,255,178,156,127,255, +177,155,126,255,177,155,126,255,176,154,125,255,176,154,125,255,176,154,125,255,176,153,125,255,175,152,124,255,175,152,124,255, +175,151,124,255,174,152,123,255,174,150,123,255,174,151,123,255,173,150,122,255,173,150,122,255,172,150,122,255,171,149,122,255, +171,149,120,255,170,148,121,255,171,147,121,255,170,148,120,255,169,147,119,255,170,146,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,169,146,119,255,170,147,120,255,169,146,119,255,169,146,119,255,168,145,118,255,169,146,119,255,169,145,118,255, +169,146,119,255,168,146,119,255,169,144,117,255,168,145,118,255,167,144,117,255,167,144,117,255,166,143,116,255,166,143,115,255, +165,141,115,255,164,141,114,255,165,141,115,255,163,139,113,255,163,139,114,255,163,139,113,255,161,137,113,255,161,137,112,255, +160,136,111,255,159,135,110,255,159,135,110,255,158,133,109,255,157,132,108,255,157,132,108,255,155,131,107,255,155,130,106,255, +154,130,107,255,154,128,106,255,154,129,106,255,157,132,108,255, 53, 46, 39,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,145,139,130,255,223,212,194,255, +221,210,192,255,221,210,191,255,222,211,192,255,204,189,166,255,176,152,123,255,178,156,126,255,179,157,127,255,179,157,127,255, +179,157,128,255,179,157,128,255,179,157,127,255,179,157,128,255,179,157,127,255,179,157,128,255,178,156,127,255,177,155,126,255, +177,155,126,255,176,154,125,255,176,154,125,255,176,154,125,255,176,153,125,255,175,152,124,255,174,153,123,255,175,152,124,255, +174,152,123,255,173,151,122,255,174,150,123,255,173,150,122,255,173,150,122,255,173,150,122,255,172,149,122,255,171,148,121,255, +171,149,121,255,170,148,121,255,171,147,121,255,170,148,120,255,169,147,119,255,170,146,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,169,146,119,255,169,146,119,255,168,145,118,255,169,146,119,255,169,146,119,255,169,146,119,255, +168,145,118,255,169,145,118,255,168,145,118,255,167,144,117,255,167,144,117,255,166,143,116,255,166,143,115,255,166,142,116,255, +164,141,114,255,164,140,114,255,163,139,113,255,163,139,113,255,162,138,113,255,162,138,113,255,161,137,112,255,160,136,111,255, +159,135,110,255,159,135,110,255,158,133,109,255,157,132,108,255,156,132,108,255,155,131,107,255,155,130,106,255,154,130,107,255, +155,130,106,255,153,128,105,255,154,129,106,255,107, 91, 76,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,145,140,131,255,224,214,195,255, +222,211,193,255,221,210,192,255,223,212,194,255,201,185,161,255,175,153,123,255,179,157,127,255,178,156,126,255,178,156,127,255, +178,156,128,255,179,157,128,255,178,156,128,255,178,156,127,255,179,157,128,255,178,156,127,255,177,155,126,255,177,155,126,255, +177,155,126,255,176,154,125,255,176,154,125,255,176,154,125,255,175,153,124,255,174,153,123,255,174,152,123,255,175,151,124,255, +174,151,123,255,173,150,122,255,174,151,123,255,173,150,122,255,172,149,121,255,172,150,121,255,172,149,122,255,172,148,121,255, +171,149,121,255,170,148,121,255,171,147,121,255,170,148,120,255,169,147,119,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255, +170,147,120,255,170,147,120,255,169,146,119,255,168,145,118,255,169,146,119,255,169,146,119,255,169,145,118,255,168,146,119,255, +169,145,118,255,168,145,118,255,167,144,117,255,167,144,117,255,167,143,116,255,166,142,115,255,166,142,116,255,165,142,115,255, +165,140,115,255,164,140,114,255,164,140,113,255,162,138,113,255,162,138,113,255,161,137,112,255,160,136,111,255,160,135,111,255, +159,135,110,255,158,133,109,255,157,132,108,255,156,132,108,255,155,131,107,255,155,130,106,255,154,129,107,255,154,129,106,255, +154,129,106,255,154,129,106,255,136,115, 95,255, 20, 17, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,146,141,131,255,224,214,196,255, +222,212,193,255,223,211,193,255,223,213,196,255,199,182,157,255,176,153,123,255,177,155,125,255,179,157,127,255,179,157,127,255, +179,157,128,255,179,157,128,255,178,156,128,255,179,157,127,255,178,156,127,255,177,155,126,255,177,155,126,255,176,154,125,255, +177,155,126,255,176,154,125,255,175,153,124,255,176,153,125,255,174,153,123,255,175,153,124,255,175,152,124,255,173,152,122,255, +174,151,123,255,173,150,122,255,173,150,122,255,172,149,121,255,173,150,122,255,172,149,122,255,171,148,121,255,172,149,120,255, +170,149,121,255,171,148,121,255,171,147,121,255,170,148,120,255,169,148,119,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +169,146,119,255,168,145,118,255,169,146,119,255,169,146,119,255,169,145,118,255,168,146,119,255,169,146,119,255,168,144,117,255, +168,145,118,255,167,144,117,255,167,144,117,255,166,144,117,255,167,143,116,255,165,142,116,255,165,141,115,255,164,141,114,255, +164,140,114,255,163,139,113,255,163,139,113,255,161,138,112,255,161,137,112,255,160,136,111,255,159,135,111,255,159,134,110,255, +158,133,109,255,157,132,108,255,156,131,107,255,155,130,106,255,154,129,106,255,154,129,107,255,154,129,105,255,152,127,106,255, +154,129,106,255,152,127,104,255, 65, 55, 46,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,146,141,132,255,225,215,197,255, +223,213,195,255,223,213,194,255,224,215,197,255,197,180,155,255,175,152,122,255,178,155,127,255,178,156,126,255,178,156,127,255, +179,157,128,255,179,157,127,255,179,157,127,255,178,156,126,255,177,155,126,255,178,156,127,255,177,155,126,255,176,154,125,255, +176,154,125,255,175,153,124,255,176,153,125,255,175,153,124,255,175,152,124,255,175,152,124,255,174,152,123,255,174,151,123,255, +173,150,122,255,174,151,123,255,173,150,122,255,172,149,121,255,173,150,122,255,171,149,121,255,172,148,121,255,171,149,120,255, +170,148,121,255,171,147,121,255,171,148,121,255,170,148,120,255,169,148,119,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,169,146,119,255, +168,145,118,255,169,146,119,255,169,146,119,255,169,146,119,255,168,146,119,255,169,145,118,255,168,145,118,255,167,145,118,255, +168,144,117,255,167,143,116,255,166,144,117,255,166,143,116,255,166,142,116,255,165,141,115,255,164,141,114,255,164,140,114,255, +163,139,113,255,163,139,113,255,162,138,113,255,161,137,112,255,160,136,111,255,160,135,111,255,159,134,110,255,158,134,109,255, +157,132,108,255,156,131,107,255,155,130,107,255,154,129,107,255,154,129,106,255,154,129,105,255,153,128,106,255,152,127,106,255, +155,130,107,255, 96, 81, 67,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,146,141,132,255,225,216,198,255, +223,213,196,255,223,213,196,255,224,215,198,255,197,179,153,255,175,152,123,255,177,155,126,255,177,155,127,255,177,155,126,255, +178,156,127,255,178,156,127,255,178,156,126,255,177,155,126,255,177,156,127,255,178,155,126,255,176,154,125,255,177,155,126,255, +176,154,125,255,176,154,125,255,175,153,124,255,175,152,124,255,175,153,124,255,174,151,123,255,174,151,123,255,173,150,122,255, +174,151,123,255,173,150,122,255,172,149,121,255,173,149,122,255,172,150,121,255,171,148,121,255,172,149,120,255,171,148,121,255, +171,148,121,255,171,147,121,255,170,148,120,255,170,148,120,255,169,148,119,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255,168,145,118,255, +169,146,119,255,169,146,119,255,169,146,119,255,169,145,118,255,169,146,119,255,168,145,118,255,167,145,118,255,168,144,117,255, +167,143,116,255,166,144,117,255,166,143,116,255,166,143,115,255,166,142,116,255,164,141,114,255,164,140,114,255,164,140,113,255, +163,139,113,255,162,138,113,255,161,137,112,255,160,136,111,255,160,135,111,255,159,135,110,255,158,134,109,255,157,132,108,255, +156,131,108,255,155,130,107,255,155,130,107,255,154,129,106,255,154,129,105,255,153,128,105,255,153,127,106,255,154,130,106,255, +111, 94, 77,255, 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,146,142,133,255,226,217,200,255, +224,215,197,255,224,215,196,255,224,216,199,255,197,180,154,255,175,152,123,255,177,155,126,255,177,155,126,255,178,156,127,255, +178,156,127,255,178,156,127,255,178,155,126,255,178,156,127,255,178,155,126,255,177,154,125,255,177,155,126,255,176,154,125,255, +175,153,124,255,175,153,124,255,175,153,124,255,174,153,123,255,174,151,123,255,173,152,122,255,174,151,123,255,174,151,123,255, +173,150,122,255,172,149,121,255,173,149,122,255,172,150,121,255,171,149,122,255,172,149,120,255,171,149,121,255,170,148,121,255, +171,147,121,255,170,148,120,255,171,148,121,255,169,147,119,255,170,148,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255,168,145,118,255,169,146,119,255, +169,146,119,255,169,145,118,255,168,146,119,255,169,146,119,255,168,144,117,255,167,145,118,255,168,144,117,255,167,144,117,255, +166,144,117,255,167,143,116,255,165,143,116,255,166,142,116,255,165,141,115,255,164,140,115,255,163,140,114,255,163,139,113,255, +161,138,112,255,161,137,112,255,160,136,111,255,159,135,111,255,159,134,110,255,158,133,109,255,157,132,108,255,156,131,107,255, +155,130,106,255,154,129,107,255,154,129,106,255,153,128,105,255,154,129,106,255,153,127,106,255,153,129,105,255,134,112, 92,255, + 18, 15, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,147,142,133,255,226,217,201,255, +224,216,199,255,225,215,199,255,225,217,200,255,198,181,156,255,174,152,122,255,177,155,126,255,178,156,127,255,178,156,127,255, +178,156,127,255,178,156,127,255,178,156,127,255,177,155,126,255,177,154,125,255,177,155,126,255,176,154,125,255,176,154,125,255, +175,153,124,255,175,153,124,255,174,152,123,255,174,153,123,255,175,151,124,255,173,151,122,255,174,150,123,255,173,150,122,255, +173,150,122,255,172,149,121,255,173,150,121,255,172,149,122,255,171,149,121,255,171,148,120,255,171,149,121,255,170,148,121,255, +171,148,121,255,171,148,121,255,170,148,120,255,169,148,119,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,168,145,118,255,169,146,119,255, +169,146,119,255,169,146,119,255,169,145,118,255,168,145,118,255,167,145,118,255,168,144,117,255,167,143,116,255,166,144,117,255, +166,143,116,255,166,143,115,255,166,142,116,255,165,141,115,255,164,141,115,255,163,140,114,255,163,139,113,255,162,138,113,255, +161,137,112,255,160,136,111,255,160,135,111,255,159,134,110,255,158,133,109,255,157,132,108,255,156,131,107,255,155,130,107,255, +155,130,106,255,154,129,106,255,153,128,105,255,154,129,106,255,152,127,105,255,154,129,105,255,150,126,103,255, 37, 31, 27,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,147,142,134,255,227,219,203,255, +225,216,200,255,224,216,199,255,225,217,201,255,201,185,161,255,174,152,122,255,176,154,125,255,178,156,127,255,178,155,126,255, +178,156,127,255,178,155,126,255,178,156,127,255,178,154,125,255,177,155,126,255,176,155,126,255,176,154,125,255,175,153,124,255, +176,154,125,255,175,153,124,255,174,152,123,255,175,152,124,255,174,151,123,255,173,151,122,255,173,150,122,255,173,150,122,255, +172,149,121,255,173,150,122,255,172,149,122,255,171,149,121,255,171,148,120,255,171,149,121,255,170,148,121,255,171,148,121,255, +170,148,120,255,171,148,121,255,170,148,120,255,170,148,120,255,170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,169,146,119,255,169,146,119,255, +169,145,118,255,168,146,119,255,169,145,118,255,168,145,118,255,168,144,117,255,168,143,116,255,167,144,117,255,167,143,116,255, +166,143,115,255,166,142,116,255,165,141,115,255,165,141,115,255,164,140,114,255,163,139,113,255,162,138,113,255,162,138,112,255, +161,137,111,255,160,135,111,255,159,134,110,255,158,133,109,255,157,132,108,255,156,131,108,255,155,130,107,255,154,130,106,255, +154,129,105,255,153,128,105,255,154,129,106,255,153,129,105,255,153,129,105,255,148,125,102,255, 32, 27, 22,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,147,143,135,255,228,219,203,255, +226,217,201,255,226,217,201,255,226,217,202,255,205,189,166,255,174,151,122,255,176,155,126,255,178,155,126,255,178,156,127,255, +178,155,126,255,178,156,127,255,177,155,126,255,178,154,125,255,176,155,126,255,176,154,125,255,177,155,126,255,175,153,124,255, +176,154,125,255,175,153,124,255,174,152,123,255,175,152,124,255,173,151,122,255,174,150,123,255,174,151,123,255,172,149,121,255, +173,150,122,255,172,150,122,255,171,149,121,255,172,148,121,255,171,148,120,255,170,149,121,255,171,148,121,255,171,147,121,255, +171,148,121,255,170,148,120,255,169,148,119,255,170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,169,146,119,255,168,145,118,255,169,146,119,255,169,145,118,255, +168,146,119,255,169,144,117,255,168,145,118,255,167,144,117,255,168,144,117,255,167,144,117,255,166,143,116,255,165,143,116,255, +166,142,116,255,165,141,115,255,165,140,115,255,164,140,114,255,163,139,113,255,162,138,112,255,161,137,112,255,161,137,111,255, +159,135,111,255,159,134,110,255,157,134,108,255,157,132,108,255,156,131,107,255,155,130,107,255,154,129,106,255,153,129,105,255, +154,128,106,255,153,129,105,255,152,127,105,255,153,129,105,255,152,128,104,255, 56, 48, 40,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,147,143,136,255,228,220,205,255, +226,218,203,255,226,218,202,255,226,218,203,255,209,195,174,255,174,152,122,255,176,155,126,255,178,155,126,255,177,155,126,255, +178,156,127,255,178,155,126,255,178,154,125,255,177,155,126,255,176,155,126,255,177,155,126,255,176,154,125,255,175,153,124,255, +176,154,125,255,175,153,124,255,174,152,123,255,175,152,124,255,173,151,122,255,173,150,122,255,174,151,123,255,172,149,121,255, +173,149,122,255,172,150,121,255,172,148,121,255,172,149,120,255,171,149,121,255,171,148,121,255,171,147,121,255,170,148,120,255, +170,148,120,255,170,147,120,255,169,148,119,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,169,146,119,255,170,147,120,255,170,147,120,255,169,146,119,255,168,145,118,255,169,145,118,255,168,146,119,255, +169,145,118,255,168,144,117,255,167,144,117,255,168,144,117,255,167,144,117,255,166,143,116,255,166,143,115,255,166,142,116,255, +165,141,115,255,165,141,114,255,164,140,115,255,163,139,114,255,162,138,113,255,161,137,112,255,161,137,111,255,160,135,111,255, +159,134,110,255,157,134,108,255,157,132,107,255,156,131,107,255,155,130,107,255,154,129,106,255,153,128,105,255,154,128,106,255, +153,129,105,255,151,127,104,255,152,127,104,255,153,129,105,255, 68, 57, 47,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,136,255,228,221,206,255, +227,218,203,255,227,218,203,255,227,219,203,255,215,203,183,255,176,154,125,255,176,154,125,255,177,154,125,255,178,155,126,255, +178,155,126,255,177,154,125,255,178,155,126,255,176,155,126,255,177,155,126,255,177,155,126,255,175,153,124,255,176,154,125,255, +176,154,125,255,175,153,124,255,174,152,123,255,175,152,124,255,173,151,122,255,174,150,123,255,173,150,122,255,172,149,121,255, +173,150,122,255,172,149,122,255,172,148,121,255,171,149,120,255,171,149,121,255,171,147,121,255,171,148,121,255,171,148,121,255, +170,147,120,255,169,148,119,255,170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, +170,147,120,255,170,147,120,255,169,146,119,255,169,146,119,255,168,145,118,255,169,146,119,255,168,146,119,255,169,145,118,255, +168,144,117,255,167,145,118,255,168,144,117,255,167,144,117,255,167,143,116,255,166,143,115,255,166,142,116,255,165,141,115,255, +165,141,114,255,164,140,115,255,163,139,114,255,162,138,113,255,162,138,112,255,160,136,111,255,160,135,111,255,159,135,110,255, +157,133,108,255,157,132,107,255,156,131,108,255,155,130,107,255,154,129,106,255,153,128,105,255,153,128,105,255,153,129,105,255, +152,128,104,255,152,127,105,255,154,129,106,255, 54, 45, 37,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,136,255,229,221,207,255, +227,219,204,255,227,218,203,255,227,219,204,255,219,208,191,255,179,157,129,255,176,154,125,255,177,155,126,255,178,155,126,255, +178,155,126,255,178,155,126,255,177,155,126,255,176,155,126,255,177,155,126,255,176,155,126,255,177,153,124,255,175,154,125,255, +176,154,125,255,175,153,124,255,174,152,123,255,175,152,124,255,173,151,122,255,174,150,123,255,173,150,122,255,173,150,122,255, +172,150,122,255,171,149,122,255,172,149,120,255,171,149,121,255,170,148,121,255,171,147,121,255,170,148,120,255,171,148,121,255, +169,148,119,255,170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255, +170,147,120,255,169,146,119,255,168,145,118,255,169,146,119,255,169,145,118,255,168,146,119,255,169,145,118,255,168,144,117,255, +167,144,117,255,168,143,116,255,167,144,117,255,166,143,116,255,165,143,116,255,166,142,116,255,165,141,115,255,165,140,115,255, +164,140,115,255,163,139,114,255,162,138,113,255,162,138,112,255,161,137,111,255,160,136,110,255,159,135,110,255,158,133,109,255, +157,132,108,255,156,131,107,255,155,130,107,255,154,129,106,255,153,129,105,255,153,129,105,255,152,129,104,255,151,127,104,255, +153,128,105,255,150,127,104,255, 62, 53, 43,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,137,255,229,221,207,255, +228,220,205,255,227,219,204,255,227,219,204,255,223,214,197,255,184,164,137,255,176,154,125,255,177,154,125,255,178,155,126,255, +178,155,126,255,178,155,126,255,177,155,126,255,176,155,126,255,177,155,126,255,177,155,126,255,176,153,124,255,175,154,125,255, +176,154,125,255,175,153,124,255,174,152,123,255,175,153,124,255,174,151,123,255,173,150,122,255,173,150,122,255,172,149,121,255, +172,150,122,255,171,149,122,255,172,149,120,255,171,149,121,255,170,148,121,255,171,148,121,255,171,148,121,255,170,148,120,255, +169,148,119,255,170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255, +169,146,119,255,168,145,118,255,169,146,119,255,169,146,119,255,168,146,119,255,169,145,118,255,168,144,117,255,167,144,117,255, +168,144,117,255,167,144,117,255,166,143,116,255,166,143,116,255,166,142,116,255,165,141,115,255,165,141,114,255,164,140,115,255, +163,139,114,255,163,139,113,255,162,138,112,255,160,136,111,255,160,136,111,255,159,135,110,255,158,133,109,255,157,132,108,255, +156,131,107,255,155,130,107,255,154,130,106,255,153,129,105,255,153,129,105,255,152,128,104,255,151,127,104,255,153,129,105,255, +148,125,102,255, 50, 42, 35,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,229,222,208,255, +228,221,206,255,228,220,205,255,228,219,205,255,226,218,203,255,192,173,149,255,175,153,124,255,177,155,126,255,178,155,126,255, +178,155,126,255,178,155,126,255,178,155,126,255,177,155,126,255,177,155,126,255,177,155,126,255,176,153,124,255,175,154,125,255, +176,154,125,255,175,153,124,255,174,152,123,255,174,153,123,255,174,151,123,255,173,151,122,255,174,151,123,255,172,149,121,255, +173,150,122,255,172,149,122,255,172,149,120,255,171,149,121,255,170,148,121,255,171,147,121,255,171,148,121,255,170,148,120,255, +170,147,120,255,170,146,120,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255, +168,145,118,255,169,146,119,255,169,146,119,255,169,145,118,255,169,145,118,255,168,144,117,255,167,145,118,255,168,143,116,255, +167,144,117,255,167,143,116,255,165,143,115,255,166,142,116,255,165,141,115,255,165,141,114,255,164,140,115,255,163,139,114,255, +163,139,113,255,162,138,112,255,160,136,111,255,160,136,111,255,159,135,110,255,158,133,109,255,157,132,108,255,156,131,108,255, +155,130,107,255,154,130,106,255,153,129,105,255,153,129,105,255,152,128,104,255,153,127,105,255,153,128,105,255,139,116, 95,255, + 27, 23, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,230,223,209,255, +228,221,207,255,227,221,206,255,228,221,206,255,228,221,206,255,203,188,166,255,176,154,125,255,177,155,126,255,178,155,125,255, +178,154,126,255,178,154,126,255,178,155,126,255,177,155,126,255,176,155,126,255,177,155,126,255,177,153,124,255,176,154,125,255, +175,154,125,255,175,153,124,255,175,153,124,255,174,153,123,255,174,151,123,255,173,151,122,255,174,151,123,255,172,149,121,255, +173,149,122,255,172,150,122,255,171,148,120,255,170,149,121,255,171,149,121,255,171,148,121,255,171,147,121,255,170,148,120,255, +170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255,169,146,119,255, +168,145,118,255,169,145,118,255,168,146,119,255,169,145,118,255,168,144,117,255,167,144,117,255,167,143,116,255,166,144,117,255, +166,143,116,255,165,143,116,255,166,142,115,255,165,141,115,255,165,140,115,255,164,140,114,255,163,139,114,255,162,138,113,255, +161,137,112,255,160,137,111,255,159,135,110,255,159,134,110,255,158,133,109,255,157,132,108,255,156,131,107,255,155,130,107,255, +154,129,106,255,153,129,105,255,153,129,105,255,151,127,104,255,153,128,105,255,152,127,104,255,125,105, 86,255, 18, 15, 12,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,230,223,209,255, +228,221,207,255,227,220,207,255,228,221,206,255,228,221,206,255,218,208,190,255,176,154,125,255,177,154,125,255,178,154,126,255, +177,155,126,255,178,155,126,255,177,154,126,255,178,155,126,255,176,155,126,255,177,155,126,255,177,153,124,255,176,154,125,255, +175,154,125,255,176,154,125,255,175,153,124,255,174,153,123,255,174,151,123,255,173,151,122,255,174,151,123,255,172,149,121,255, +173,150,122,255,172,150,122,255,171,148,120,255,171,149,121,255,170,148,121,255,171,148,121,255,171,147,121,255,170,148,120,255, +170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,168,145,118,255, +169,146,119,255,168,146,119,255,169,145,118,255,168,144,117,255,167,144,117,255,167,144,117,255,167,144,117,255,166,143,116,255, +166,143,115,255,166,142,116,255,165,141,115,255,165,141,115,255,164,140,114,255,163,139,114,255,162,138,113,255,161,137,112,255, +161,137,111,255,160,135,111,255,159,134,110,255,157,134,109,255,157,132,108,255,156,131,107,255,155,130,107,255,154,130,106,255, +153,129,105,255,153,129,105,255,152,128,104,255,153,128,105,255,151,126,103,255, 91, 75, 62,255, 10, 8, 7,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,229,223,209,255, +227,221,207,255,228,220,206,255,228,221,206,255,228,221,206,255,229,223,209,255,185,165,140,255,175,153,124,255,177,154,126,255, +178,155,126,255,178,155,126,255,178,154,126,255,178,155,126,255,177,155,126,255,176,155,126,255,177,153,124,255,176,154,125,255, +175,154,125,255,176,154,125,255,175,153,124,255,174,153,123,255,174,151,123,255,173,151,122,255,174,150,123,255,173,150,122,255, +172,149,121,255,172,150,122,255,172,148,120,255,171,149,121,255,170,149,121,255,171,148,121,255,171,147,121,255,170,148,120,255, +170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255,168,145,118,255,169,146,119,255, +169,145,118,255,169,145,118,255,168,144,117,255,167,145,118,255,167,143,116,255,167,144,117,255,166,143,116,255,166,143,115,255, +166,142,116,255,165,142,115,255,164,140,115,255,164,140,114,255,163,139,113,255,162,138,113,255,161,137,112,255,161,137,111,255, +160,135,111,255,159,134,110,255,157,133,109,255,157,132,108,255,156,131,108,255,155,129,107,255,154,130,106,255,153,129,105,255, +153,129,105,255,152,128,104,255,151,127,104,255,151,126,103,255, 61, 51, 42,255, 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,229,223,209,255, +228,221,207,255,228,220,206,255,227,220,207,255,228,220,206,255,229,223,209,255,211,201,182,255,173,150,121,255,177,154,125,255, +178,155,126,255,178,156,126,255,178,155,126,255,178,154,126,255,177,155,126,255,176,155,126,255,177,153,124,255,176,154,125,255, +175,154,125,255,176,154,125,255,175,153,124,255,174,152,123,255,175,153,124,255,174,151,123,255,173,151,122,255,173,150,122,255, +172,149,121,255,172,149,121,255,171,149,121,255,171,148,120,255,171,149,121,255,171,148,121,255,170,148,120,255,171,147,121,255, +169,147,119,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,168,145,118,255,169,146,119,255,168,145,118,255, +169,146,119,255,168,144,117,255,167,144,117,255,167,143,116,255,166,143,116,255,166,143,116,255,166,143,116,255,165,142,115,255, +165,141,115,255,164,140,115,255,163,139,114,255,163,139,113,255,162,138,112,255,161,137,112,255,160,136,111,255,159,135,110,255, +158,134,109,255,157,132,109,255,156,131,107,255,155,130,107,255,155,130,106,255,155,130,106,255,154,129,105,255,153,129,105,255, +153,128,104,255,153,128,105,255,137,115, 94,255, 38, 32, 27,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,229,222,209,255, +228,220,206,255,227,220,207,255,228,221,206,255,227,220,205,255,228,221,206,255,228,222,209,255,186,168,143,255,175,153,123,255, +177,155,126,255,178,156,126,255,178,155,126,255,178,154,126,255,177,155,126,255,176,155,126,255,177,153,124,255,176,154,125,255, +175,154,125,255,175,153,124,255,175,153,124,255,174,152,123,255,175,153,124,255,174,151,123,255,173,151,122,255,173,150,122,255, +172,149,121,255,173,150,122,255,171,149,121,255,172,149,121,255,171,148,120,255,171,149,121,255,171,148,121,255,171,147,121,255, +169,147,119,255,170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,169,146,119,255,169,145,118,255,169,146,119,255, +168,145,118,255,167,144,117,255,167,144,117,255,166,144,117,255,166,143,116,255,165,143,115,255,166,142,116,255,165,141,115,255, +164,140,115,255,163,139,114,255,163,139,113,255,162,138,112,255,161,137,111,255,160,136,111,255,159,135,110,255,158,134,109,255, +158,132,108,255,156,131,108,255,155,130,107,255,155,130,107,255,155,130,106,255,154,129,105,255,152,127,105,255,152,127,104,255, +153,128,105,255,100, 84, 70,255, 14, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,229,222,209,255, +228,221,206,255,228,221,205,255,227,220,206,255,227,220,206,255,226,219,205,255,228,221,207,255,215,204,187,255,176,154,125,255, +177,154,125,255,177,155,125,255,178,155,126,255,178,154,126,255,177,154,125,255,176,155,126,255,176,153,124,255,175,154,125,255, +175,154,125,255,175,153,124,255,174,152,123,255,175,153,124,255,175,152,124,255,174,152,123,255,173,151,122,255,174,151,123,255, +173,150,122,255,172,149,121,255,172,150,122,255,171,149,121,255,172,148,120,255,170,149,121,255,171,148,121,255,171,147,121,255, +169,148,119,255,170,147,120,255,170,146,120,255,169,146,119,255,170,147,120,255,169,146,119,255,168,146,119,255,169,145,118,255, +168,144,117,255,167,144,117,255,166,143,116,255,167,144,117,255,165,142,115,255,166,142,116,255,165,142,115,255,164,140,115,255, +164,140,114,255,163,139,114,255,162,138,112,255,161,137,112,255,160,135,111,255,159,135,110,255,158,134,109,255,158,132,109,255, +156,132,108,255,156,131,107,255,154,129,106,255,155,130,105,255,154,129,106,255,152,127,105,255,153,128,105,255,152,127,105,255, + 59, 50, 41,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,229,222,208,255, +227,220,206,255,226,219,205,255,226,219,206,255,227,220,205,255,227,220,205,255,226,219,205,255,227,219,205,255,194,178,155,255, +176,153,124,255,178,154,125,255,178,154,126,255,177,155,125,255,177,155,126,255,176,154,125,255,177,154,125,255,175,154,125,255, +175,153,124,255,175,153,124,255,174,152,123,255,175,153,124,255,175,151,124,255,174,152,123,255,173,151,122,255,174,151,123,255, +173,150,122,255,172,149,121,255,172,149,121,255,172,150,122,255,172,149,121,255,171,149,121,255,170,149,121,255,170,148,120,255, +170,148,120,255,169,147,119,255,170,147,120,255,170,147,120,255,169,146,119,255,168,145,118,255,169,146,119,255,168,145,118,255, +168,145,118,255,166,143,116,255,166,143,116,255,165,142,115,255,165,142,115,255,165,141,115,255,164,140,115,255,163,139,114,255, +162,138,113,255,161,137,112,255,161,137,111,255,160,136,111,255,159,134,110,255,158,133,109,255,157,132,108,255,156,131,107,255, +155,131,107,255,155,130,106,255,154,129,105,255,153,128,106,255,154,129,106,255,152,127,104,255,122,102, 84,255, 25, 21, 18,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,137,255,229,222,208,255, +227,220,206,255,226,219,206,255,227,220,205,255,227,219,204,255,227,219,204,255,227,219,204,255,227,220,206,255,223,215,200,255, +180,160,133,255,175,152,123,255,177,154,125,255,178,155,126,255,177,155,126,255,177,154,125,255,176,154,125,255,175,154,125,255, +176,154,125,255,175,153,124,255,174,152,123,255,175,153,124,255,174,151,123,255,174,152,123,255,173,151,122,255,174,151,123,255, +173,150,122,255,172,149,121,255,173,150,122,255,172,150,122,255,171,149,121,255,171,148,120,255,170,149,121,255,171,148,121,255, +170,147,120,255,170,148,120,255,169,147,119,255,170,147,120,255,169,146,119,255,169,146,119,255,168,145,118,255,168,145,118,255, +167,144,117,255,167,144,117,255,166,143,116,255,166,143,116,255,165,141,115,255,164,140,115,255,164,140,114,255,163,139,113,255, +162,138,112,255,161,137,112,255,160,136,111,255,159,134,110,255,158,133,109,255,157,133,108,255,156,131,108,255,155,130,107,255, +155,130,106,255,154,129,105,255,153,128,106,255,155,129,106,255,145,122,100,255, 68, 57, 47,255, 7, 6, 5,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,137,255,228,221,207,255, +226,220,205,255,227,220,205,255,226,219,204,255,226,219,204,255,226,219,204,255,226,219,204,255,226,219,204,255,226,219,205,255, +219,210,194,255,173,152,123,255,176,153,124,255,177,155,126,255,176,154,125,255,177,153,124,255,175,154,125,255,175,153,124,255, +176,154,125,255,174,152,123,255,175,152,124,255,175,153,124,255,174,151,123,255,173,152,122,255,174,151,123,255,174,151,123,255, +173,150,122,255,172,149,121,255,173,150,122,255,172,149,121,255,171,150,122,255,172,148,120,255,171,148,121,255,170,149,121,255, +171,147,121,255,170,148,120,255,169,147,119,255,169,146,119,255,170,147,120,255,169,146,119,255,168,145,118,255,168,145,118,255, +167,144,117,255,166,143,116,255,165,143,115,255,166,142,116,255,164,140,114,255,163,140,114,255,163,139,113,255,161,137,112,255, +161,137,112,255,159,136,110,255,159,134,110,255,158,134,109,255,156,132,108,255,156,131,108,255,156,131,107,255,154,129,106,255, +154,129,105,255,153,128,106,255,153,128,105,255,117, 99, 81,255, 13, 11, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,147,144,136,255,228,221,207,255, +226,218,204,255,226,218,204,255,226,218,203,255,225,217,202,255,225,217,202,255,225,217,202,255,225,217,202,255,225,217,202,255, +227,219,204,255,207,196,177,255,174,153,125,255,176,153,124,255,176,154,124,255,176,154,125,255,176,153,124,255,176,154,125,255, +175,153,124,255,175,153,124,255,175,153,124,255,175,152,124,255,174,152,123,255,173,151,122,255,174,150,123,255,173,150,122,255, +174,151,123,255,173,150,122,255,172,150,122,255,173,150,122,255,172,150,122,255,172,149,121,255,171,148,120,255,170,148,121,255, +171,148,121,255,170,148,120,255,169,147,119,255,170,147,120,255,169,146,119,255,169,146,119,255,168,145,117,255,167,144,117,255, +167,144,117,255,166,143,116,255,165,142,115,255,164,141,114,255,163,140,114,255,162,139,113,255,161,137,112,255,161,137,111,255, +159,135,111,255,158,134,109,255,158,133,109,255,157,133,108,255,156,131,107,255,155,130,106,255,154,129,106,255,154,129,106,255, +153,128,105,255,133,111, 91,255, 68, 57, 47,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,147,143,136,255,227,220,205,255, +226,218,204,255,225,218,203,255,225,217,202,255,224,217,201,255,225,217,201,255,224,216,200,255,224,216,200,255,224,216,200,255, +224,216,200,255,225,217,202,255,202,190,170,255,172,149,120,255,175,153,124,255,176,154,125,255,176,154,125,255,175,153,124,255, +175,153,124,255,175,153,124,255,174,152,123,255,175,152,124,255,173,152,122,255,174,151,123,255,174,150,123,255,173,150,122,255, +174,151,123,255,173,150,122,255,173,150,122,255,173,150,122,255,172,149,121,255,172,149,121,255,171,148,120,255,170,149,121,255, +171,148,121,255,170,148,120,255,169,147,119,255,170,147,119,255,169,146,119,255,169,146,118,255,167,144,117,255,167,144,117,255, +166,143,116,255,165,142,115,255,164,141,115,255,163,140,114,255,162,139,113,255,161,137,112,255,161,137,112,255,159,135,111,255, +159,134,110,255,158,133,109,255,157,132,108,255,156,131,107,255,154,129,106,255,153,128,106,255,155,130,107,255,149,125,103,255, + 73, 62, 51,255, 14, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,146,142,134,255,226,219,203,255, +225,216,202,255,225,217,202,255,225,217,201,255,224,216,200,255,223,216,200,255,224,215,199,255,224,215,199,255,224,215,199,255, +224,215,199,255,223,215,198,255,225,217,202,255,206,192,172,255,171,148,120,255,174,152,123,255,175,153,124,255,175,153,124,255, +174,152,123,255,174,152,123,255,175,151,124,255,174,152,123,255,173,150,122,255,174,150,123,255,174,151,123,255,174,151,123,255, +173,150,122,255,172,149,121,255,173,150,122,255,173,150,122,255,172,150,122,255,172,148,121,255,171,149,120,255,170,148,121,255, +170,148,120,255,169,147,119,255,169,146,120,255,169,146,118,255,168,146,118,255,169,145,118,255,167,144,116,255,167,143,117,255, +166,142,116,255,164,141,115,255,163,140,114,255,163,139,113,255,161,137,111,255,160,136,111,255,160,136,111,255,158,134,109,255, +158,133,109,255,156,131,108,255,155,131,107,255,155,130,107,255,154,129,105,255,153,129,106,255,103, 87, 73,255, 6, 6, 5,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,128,123,115,255,221,211,194,255, +224,215,199,255,223,215,199,255,222,214,198,255,223,214,198,255,223,214,198,255,222,214,197,255,222,214,197,255,222,213,196,255, +222,213,196,255,222,213,196,255,222,213,196,255,224,216,201,255,207,194,174,255,176,155,128,255,173,150,122,255,174,152,123,255, +174,152,123,255,174,151,123,255,174,151,123,255,173,151,122,255,174,151,123,255,173,150,122,255,174,151,123,255,174,151,123,255, +173,150,122,255,172,149,121,255,172,149,122,255,173,150,122,255,172,149,122,255,171,148,121,255,171,148,120,255,171,148,121,255, +170,147,120,255,169,146,120,255,170,147,119,255,169,145,118,255,168,145,118,255,168,144,117,255,166,143,116,255,166,142,116,255, +164,141,115,255,163,140,114,255,162,139,112,255,161,137,111,255,160,136,111,255,159,134,110,255,158,134,109,255,158,133,109,255, +155,130,108,255,155,131,107,255,156,131,107,255,147,122,100,255,113, 94, 78,255, 33, 28, 23,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 41, 40, 40,255, 56, 54, 49,255, +156,149,136,255,217,207,190,255,223,214,197,255,221,211,194,255,222,212,195,255,222,212,195,255,221,212,194,255,221,212,194,255, +221,212,194,255,221,212,194,255,221,211,194,255,221,211,193,255,222,213,195,255,212,200,182,255,183,163,138,255,169,146,117,255, +173,150,122,255,174,151,123,255,174,151,123,255,174,151,123,255,174,151,123,255,174,151,123,255,173,150,122,255,173,150,122,255, +172,149,121,255,173,150,122,255,173,150,122,255,172,149,121,255,172,148,122,255,171,148,120,255,170,148,120,255,171,148,121,255, +169,147,119,255,170,147,119,255,169,146,119,255,168,145,118,255,168,145,117,255,167,144,116,255,166,143,116,255,164,141,115,255, +163,140,114,255,162,138,112,255,161,136,112,255,160,135,111,255,159,135,110,255,158,134,109,255,157,132,109,255,156,131,107,255, +156,131,108,255,154,129,106,255, 96, 81, 67,255, 33, 28, 23,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, + 0, 0, 0,255, 29, 28, 25,255,155,146,133,255,221,210,191,255,218,207,189,255,219,209,190,255,219,209,190,255,218,209,190,255, +218,207,188,255,219,208,189,255,219,208,189,255,219,208,189,255,220,208,189,255,219,209,190,255,219,208,189,255,196,181,157,255, +172,150,122,255,172,149,121,255,173,150,122,255,172,149,121,255,172,149,121,255,172,149,121,255,172,149,121,255,172,150,122,255, +173,149,122,255,173,150,121,255,172,149,121,255,171,148,122,255,172,149,121,255,170,147,121,255,171,148,121,255,170,147,120,255, +170,147,120,255,170,146,119,255,169,146,119,255,168,144,117,255,167,144,117,255,167,143,117,255,165,141,115,255,164,140,114,255, +163,139,113,255,160,136,111,255,159,134,111,255,158,135,109,255,158,133,109,255,157,132,109,255,155,130,107,255,153,129,106,255, +103, 88, 73,255, 15, 13, 12,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 14, 13, 11,255,111,105, 94,255,167,158,143,255,202,191,173,255,217,206,185,255, +218,207,186,255,217,205,184,255,215,204,183,255,216,204,183,255,216,203,183,255,215,203,182,255,215,202,180,255,216,204,182,255, +209,196,173,255,190,172,147,255,178,157,131,255,172,150,123,255,170,147,119,255,172,148,120,255,172,149,121,255,173,150,122,255, +172,150,122,255,172,149,122,255,171,148,121,255,171,148,120,255,171,148,121,255,171,148,121,255,170,147,120,255,169,147,120,255, +169,146,119,255,169,145,118,255,168,145,118,255,167,144,117,255,166,143,116,255,165,141,115,255,164,140,114,255,162,138,113,255, +161,136,112,255,161,135,111,255,159,135,110,255,155,132,108,255,133,113, 93,255,109, 92, 76,255, 61, 52, 44,255, 11, 10, 8,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 10, 9, 8,255, 36, 34, 31,255, 85, 80, 71,255, +160,151,133,255,210,197,175,255,216,203,180,255,215,202,179,255,212,198,176,255,211,198,174,255,212,197,174,255,211,196,173,255, +211,196,172,255,211,195,171,255,207,191,166,255,200,184,159,255,191,173,147,255,178,157,132,255,170,147,119,255,168,145,118,255, +169,147,119,255,170,148,120,255,171,148,120,255,171,148,121,255,170,148,120,255,170,147,120,255,170,147,120,255,170,146,119,255, +169,145,118,255,168,145,118,255,167,144,117,255,166,143,116,255,164,141,115,255,165,141,115,255,164,139,113,255,162,137,112,255, +158,134,111,255,125,107, 88,255, 76, 65, 54,255, 37, 32, 26,255, 17, 14, 12,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 68, 64, 55,255,127,119,104,255,202,187,164,255,206,191,166,255,207,191,166,255,207,192,165,255, +208,192,166,255,207,191,163,255,206,190,162,255,206,190,162,255,206,190,160,255,206,189,161,255,204,187,161,255,194,177,152,255, +184,164,139,255,175,154,128,255,170,148,121,255,168,145,118,255,168,145,118,255,168,145,118,255,168,145,118,255,168,144,117,255, +167,144,117,255,164,141,115,255,163,139,113,255,161,138,113,255,163,140,117,255,137,120,101,255, 88, 77, 64,255, 48, 42, 38,255, + 3, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 24, 22, 18,255, 64, 59, 50,255,103, 95, 81,255, +132,121,103,255,144,132,111,255,162,149,125,255,172,156,131,255,179,163,136,255,184,166,138,255,191,173,143,255,190,172,141,255, +191,173,142,255,189,171,141,255,186,169,141,255,176,159,133,255,168,151,127,255,159,142,120,255,149,134,114,255,134,119,101,255, +121,108, 92,255,100, 90, 77,255, 67, 61, 54,255, 40, 36, 32,255, 0, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 3, 3, 2,255, 14, 13, 11,255, 20, 18, 15,255, 25, 22, 18,255, 28, 25, 20,255, 33, 29, 24,255, 33, 29, 24,255, + 33, 30, 24,255, 32, 28, 23,255, 31, 27, 22,255, 26, 23, 18,255, 23, 20, 16,255, 19, 17, 14,255, 14, 12, 9,255, 5, 5, 3,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0,152, 5, 97, 7, + 31, 0, 0, 0, 1, 0, 0, 0,240,168, 97, 7, 64, 98, 96, 7, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, 46,103,114, 97, + 98, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103, +115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46,103,114, 97, 98, 46,112,110,103, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,152, 7, 97, 7, 0, 0, 0, 0,223, 71, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,152, 7, 97, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, + 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 32, 8, 97, 7,136, 24, 97, 7, 68, 65, 84, 65, 0, 16, 0, 0, + 32, 8, 97, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0,136, 24, 97, 7, 0, 0, 0, 0, 1, 0, 0, 0, + 62, 62, 62,255, 61, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 62,255, + 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, + 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, + 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 61, 61, 61,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 61, 61, 61,255, 93, 78, 72,255,121, 93, 81,255,120, 93, 81,255,120, 92, 80,255,120, 92, 80,255,119, 92, 80,255,119, 91, 80,255, +118, 91, 79,255,117, 91, 79,255,117, 90, 79,255,117, 90, 78,255,116, 89, 78,255,115, 89, 78,255,115, 88, 78,255,114, 88, 77,255, +114, 88, 77,255,113, 87, 77,255,112, 87, 76,255,112, 87, 76,255,111, 86, 76,255,111, 86, 75,255,110, 85, 75,255,109, 85, 74,255, +108, 84, 74,255,108, 84, 73,255,107, 83, 73,255,107, 83, 73,255,106, 82, 72,255,106, 82, 72,255,104, 82, 71,255,104, 81, 71,255, +103, 80, 70,255,102, 79, 70,255,101, 79, 69,255,100, 79, 69,255,100, 78, 69,255, 99, 77, 68,255, 98, 76, 67,255, 97, 76, 67,255, + 96, 75, 66,255, 95, 74, 66,255, 93, 74, 65,255, 93, 73, 64,255, 91, 72, 63,255, 90, 71, 63,255, 89, 70, 62,255, 88, 69, 61,255, + 87, 68, 61,255, 85, 68, 60,255, 84, 66, 59,255, 83, 66, 58,255, 82, 65, 57,255, 80, 64, 57,255, 79, 63, 56,255, 78, 62, 55,255, + 76, 61, 55,255, 75, 60, 53,255, 73, 59, 53,255, 72, 58, 52,255, 70, 57, 51,255, 69, 56, 50,255, 67, 55, 49,255, 66, 54, 48,255, + 64, 52, 47,255, 63, 51, 47,255, 62, 51, 46,255, 60, 49, 45,255, 59, 48, 44,255, 57, 48, 43,255, 57, 47, 43,255, 55, 46, 42,255, + 55, 46, 42,255, 55, 46, 42,255, 56, 47, 43,255, 58, 48, 44,255, 43, 38, 37,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, + 60, 61, 61,255,122, 94, 81,255,178,124,100,255,176,123,100,255,175,122, 99,255,175,121, 98,255,173,121, 98,255,173,120, 97,255, +171,119, 97,255,171,119, 96,255,169,118, 95,255,168,117, 95,255,167,116, 94,255,166,115, 93,255,165,115, 93,255,164,114, 92,255, +163,113, 92,255,162,113, 91,255,161,111, 90,255,160,111, 90,255,159,110, 89,255,158,109, 88,255,156,108, 87,255,155,108, 87,255, +154,106, 86,255,152,106, 85,255,151,105, 84,255,150,103, 83,255,148,103, 83,255,147,102, 82,255,146,100, 81,255,144, 99, 80,255, +142, 99, 79,255,141, 97, 78,255,139, 96, 77,255,138, 95, 76,255,136, 94, 75,255,134, 93, 74,255,133, 91, 73,255,130, 90, 72,255, +129, 88, 71,255,127, 87, 69,255,125, 85, 69,255,122, 84, 67,255,120, 82, 66,255,118, 81, 65,255,116, 79, 62,255,113, 77, 61,255, +111, 75, 60,255,109, 74, 58,255,106, 72, 57,255,103, 70, 56,255,101, 68, 54,255, 98, 66, 53,255, 95, 65, 52,255, 93, 62, 49,255, + 90, 61, 48,255, 87, 59, 47,255, 85, 57, 44,255, 82, 55, 43,255, 79, 53, 42,255, 76, 50, 39,255, 74, 48, 38,255, 70, 47, 36,255, + 67, 44, 34,255, 64, 42, 33,255, 62, 41, 30,255, 59, 38, 29,255, 56, 36, 28,255, 54, 34, 26,255, 52, 33, 25,255, 50, 32, 24,255, + 49, 31, 23,255, 50, 31, 23,255, 52, 33, 25,255, 55, 36, 27,255, 20, 14, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, + 60, 61, 61,255,122, 94, 82,255,178,124,100,255,177,123,100,255,175,122, 99,255,175,122, 99,255,173,121, 98,255,172,120, 97,255, +172,120, 96,255,170,118, 96,255,170,117, 96,255,169,118, 95,255,167,116, 94,255,167,116, 94,255,166,115, 93,255,164,114, 92,255, +163,114, 92,255,163,113, 91,255,161,112, 90,255,160,111, 90,255,159,111, 89,255,157,109, 88,255,156,109, 88,255,155,107, 86,255, +154,107, 86,255,153,106, 86,255,151,105, 84,255,150,104, 84,255,149,103, 83,255,147,102, 82,255,146,101, 81,255,144,100, 81,255, +143, 98, 79,255,141, 97, 78,255,140, 96, 78,255,138, 95, 76,255,136, 94, 76,255,135, 93, 75,255,132, 91, 73,255,131, 90, 72,255, +129, 89, 71,255,127, 87, 70,255,125, 86, 69,255,123, 85, 68,255,120, 83, 66,255,118, 81, 65,255,116, 80, 64,255,114, 77, 62,255, +111, 76, 61,255,109, 75, 59,255,106, 72, 57,255,104, 71, 56,255,101, 69, 55,255, 99, 67, 53,255, 96, 65, 52,255, 94, 63, 50,255, + 91, 61, 48,255, 88, 59, 47,255, 85, 57, 45,255, 83, 55, 43,255, 79, 53, 42,255, 76, 51, 40,255, 74, 49, 38,255, 70, 47, 37,255, + 67, 44, 34,255, 64, 42, 33,255, 62, 41, 32,255, 59, 38, 29,255, 56, 36, 28,255, 55, 35, 27,255, 52, 33, 25,255, 50, 32, 24,255, + 49, 31, 23,255, 50, 32, 24,255, 51, 34, 25,255, 57, 37, 29,255, 9, 7, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,123, 94, 82,255,179,125,101,255,177,123, 99,255,177,123, 99,255,175,121, 98,255,174,121, 98,255,174,120, 98,255, +173,119, 97,255,172,119, 96,255,170,118, 96,255,170,117, 96,255,169,117, 95,255,167,116, 94,255,167,116, 94,255,165,115, 93,255, +164,114, 92,255,162,114, 92,255,162,112, 91,255,160,111, 90,255,159,110, 90,255,159,110, 89,255,157,109, 88,255,156,108, 87,255, +155,107, 86,255,153,106, 86,255,152,105, 85,255,151,104, 84,255,149,103, 83,255,148,102, 82,255,147,101, 81,255,145,101, 81,255, +144, 99, 80,255,142, 98, 79,255,141, 97, 78,255,139, 96, 77,255,137, 95, 76,255,135, 93, 75,255,134, 92, 74,255,132, 90, 72,255, +130, 89, 72,255,128, 88, 71,255,126, 86, 69,255,124, 84, 67,255,122, 83, 66,255,119, 82, 65,255,117, 80, 63,255,115, 78, 62,255, +112, 77, 61,255,109, 75, 59,255,107, 73, 58,255,105, 72, 57,255,102, 69, 55,255, 99, 67, 53,255, 97, 66, 52,255, 94, 63, 50,255, + 91, 61, 49,255, 89, 60, 47,255, 86, 57, 45,255, 82, 56, 44,255, 80, 54, 42,255, 77, 51, 40,255, 74, 49, 38,255, 71, 47, 37,255, + 67, 44, 34,255, 64, 43, 33,255, 62, 40, 31,255, 59, 38, 29,255, 56, 36, 28,255, 54, 35, 27,255, 52, 33, 25,255, 50, 32, 24,255, + 49, 31, 23,255, 50, 32, 24,255, 52, 34, 26,255, 57, 37, 28,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,123, 95, 82,255,181,125,102,255,178,124,100,255,177,123,100,255,176,123, 99,255,175,121, 98,255,174,121, 98,255, +173,120, 98,255,172,119, 97,255,171,120, 96,255,170,118, 95,255,169,117, 95,255,168,117, 94,255,166,115, 93,255,166,116, 94,255, +165,115, 93,255,163,113, 91,255,163,113, 92,255,162,112, 91,255,160,111, 89,255,159,110, 90,255,158,110, 89,255,156,108, 87,255, +155,108, 87,255,154,107, 86,255,153,106, 85,255,152,105, 84,255,151,104, 84,255,148,102, 82,255,147,102, 82,255,146,101, 82,255, +144,100, 80,255,143, 99, 79,255,142, 98, 79,255,139, 96, 77,255,138, 95, 77,255,137, 94, 76,255,134, 92, 74,255,132, 91, 73,255, +131, 90, 72,255,128, 88, 71,255,126, 87, 70,255,124, 85, 68,255,122, 84, 67,255,120, 82, 66,255,117, 81, 64,255,115, 79, 63,255, +113, 77, 62,255,110, 75, 60,255,108, 74, 59,255,105, 72, 57,255,102, 69, 55,255,100, 68, 54,255, 97, 66, 53,255, 94, 64, 50,255, + 92, 62, 49,255, 89, 60, 47,255, 86, 58, 45,255, 84, 56, 44,255, 80, 54, 42,255, 77, 51, 40,255, 74, 49, 38,255, 71, 47, 37,255, + 68, 44, 34,255, 64, 43, 32,255, 62, 40, 31,255, 59, 38, 29,255, 56, 36, 28,255, 54, 35, 27,255, 51, 33, 25,255, 50, 32, 24,255, + 49, 31, 23,255, 50, 32, 24,255, 54, 35, 26,255, 43, 29, 22,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,123, 95, 83,255,181,126,102,255,179,125,101,255,178,124,101,255,177,123,100,255,176,122, 99,255,175,122, 99,255, +174,121, 98,255,173,120, 98,255,172,120, 97,255,171,119, 97,255,170,118, 95,255,169,118, 95,255,168,117, 95,255,167,116, 93,255, +166,115, 93,255,165,115, 93,255,163,114, 92,255,162,113, 91,255,161,112, 91,255,160,111, 90,255,159,110, 89,255,158,110, 89,255, +156,108, 87,255,155,107, 87,255,153,106, 85,255,152,106, 85,255,151,105, 85,255,149,103, 83,255,148,103, 83,255,147,102, 82,255, +145,100, 81,255,144, 99, 80,255,142, 98, 79,255,140, 97, 78,255,139, 96, 77,255,137, 95, 76,255,135, 93, 74,255,134, 92, 74,255, +131, 91, 73,255,129, 88, 71,255,127, 87, 70,255,125, 86, 69,255,123, 84, 67,255,120, 83, 66,255,119, 81, 65,255,116, 79, 63,255, +113, 78, 62,255,111, 76, 60,255,109, 74, 59,255,106, 72, 58,255,103, 70, 55,255,101, 68, 54,255, 98, 66, 53,255, 95, 64, 51,255, + 92, 63, 49,255, 89, 60, 48,255, 86, 58, 45,255, 84, 56, 44,255, 80, 54, 42,255, 77, 52, 40,255, 74, 50, 39,255, 71, 47, 37,255, + 67, 44, 34,255, 64, 43, 32,255, 62, 40, 31,255, 59, 38, 29,255, 56, 36, 28,255, 54, 35, 27,255, 51, 33, 25,255, 50, 32, 24,255, + 49, 31, 23,255, 50, 32, 24,255, 54, 35, 26,255, 28, 20, 16,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,124, 95, 83,255,182,127,103,255,180,125,102,255,179,125,101,255,178,124,100,255,177,123,100,255,176,122, 99,255, +175,122, 99,255,174,121, 98,255,173,120, 98,255,172,120, 96,255,171,118, 96,255,170,118, 96,255,168,117, 94,255,168,116, 94,255, +166,116, 94,255,165,114, 92,255,164,114, 92,255,163,113, 92,255,162,113, 90,255,161,112, 90,255,160,111, 90,255,158,109, 88,255, +157,109, 88,255,155,108, 87,255,154,106, 86,255,153,106, 85,255,152,105, 85,255,150,104, 84,255,149,103, 83,255,147,102, 82,255, +146,101, 81,255,144,100, 80,255,143, 99, 80,255,141, 97, 78,255,140, 96, 77,255,138, 95, 77,255,136, 94, 75,255,134, 93, 74,255, +132, 91, 73,255,130, 89, 71,255,128, 88, 71,255,126, 86, 69,255,124, 85, 68,255,121, 84, 67,255,119, 82, 66,255,116, 80, 64,255, +114, 78, 62,255,111, 77, 60,255,109, 74, 59,255,107, 73, 58,255,104, 70, 56,255,101, 69, 54,255, 99, 67, 53,255, 96, 65, 51,255, + 93, 63, 49,255, 90, 61, 48,255, 87, 58, 46,255, 84, 56, 44,255, 81, 54, 43,255, 77, 52, 40,255, 74, 50, 39,255, 71, 47, 37,255, + 67, 44, 34,255, 64, 42, 33,255, 61, 40, 31,255, 59, 38, 29,255, 56, 36, 28,255, 53, 34, 26,255, 51, 32, 24,255, 49, 31, 23,255, + 49, 31, 23,255, 51, 33, 25,255, 56, 37, 27,255, 12, 8, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,124, 96, 83,255,184,127,103,255,181,126,102,255,180,125,101,255,179,124,101,255,178,124,100,255,177,123, 99,255, +176,122, 99,255,174,121, 98,255,174,120, 97,255,173,120, 97,255,171,119, 96,255,170,119, 96,255,169,117, 95,255,168,117, 94,255, +167,116, 94,255,166,115, 93,255,165,114, 92,255,164,114, 92,255,162,112, 91,255,161,112, 90,255,160,111, 90,255,158,110, 89,255, +158,109, 88,255,157,109, 88,255,155,107, 86,255,154,106, 86,255,153,106, 85,255,151,104, 85,255,150,104, 84,255,149,103, 83,255, +146,101, 81,255,145,100, 80,255,144,100, 80,255,142, 98, 79,255,140, 97, 78,255,139, 96, 77,255,136, 94, 76,255,135, 93, 75,255, +133, 92, 74,255,130, 90, 72,255,129, 88, 71,255,127, 87, 70,255,124, 85, 68,255,122, 84, 67,255,119, 82, 66,255,118, 80, 64,255, +115, 79, 63,255,112, 76, 61,255,110, 75, 60,255,108, 73, 58,255,104, 71, 56,255,102, 69, 55,255, 99, 68, 54,255, 96, 65, 51,255, + 93, 64, 50,255, 90, 61, 48,255, 87, 58, 46,255, 84, 57, 44,255, 81, 54, 43,255, 77, 52, 40,255, 74, 50, 39,255, 71, 47, 37,255, + 67, 44, 34,255, 63, 42, 32,255, 61, 40, 31,255, 58, 38, 29,255, 55, 35, 27,255, 53, 34, 26,255, 50, 32, 24,255, 49, 31, 23,255, + 49, 31, 23,255, 51, 33, 25,255, 54, 36, 28,255, 2, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,125, 96, 83,255,184,128,103,255,182,127,102,255,181,126,102,255,180,125,102,255,178,124,101,255,177,124,100,255, +177,123,100,255,176,122, 99,255,174,121, 98,255,174,120, 98,255,172,120, 97,255,171,119, 96,255,171,119, 96,255,169,118, 95,255, +168,117, 94,255,167,116, 93,255,165,115, 93,255,164,114, 92,255,164,114, 91,255,162,113, 91,255,161,112, 90,255,160,111, 89,255, +158,110, 89,255,157,109, 88,255,156,108, 87,255,154,107, 86,255,153,106, 86,255,152,105, 85,255,150,104, 84,255,149,103, 83,255, +148,102, 82,255,146,101, 81,255,145,100, 81,255,142, 99, 79,255,141, 97, 78,255,140, 97, 78,255,137, 94, 76,255,135, 93, 75,255, +134, 92, 74,255,131, 90, 72,255,129, 89, 72,255,127, 88, 71,255,125, 86, 69,255,123, 84, 67,255,121, 82, 65,255,118, 81, 64,255, +116, 79, 63,255,114, 78, 62,255,111, 75, 60,255,108, 74, 59,255,105, 72, 58,255,102, 70, 55,255,100, 68, 54,255, 97, 66, 52,255, + 94, 64, 50,255, 90, 61, 49,255, 87, 59, 46,255, 84, 57, 44,255, 81, 54, 43,255, 77, 52, 40,255, 74, 50, 39,255, 71, 47, 36,255, + 67, 44, 34,255, 63, 41, 32,255, 61, 40, 31,255, 58, 37, 29,255, 55, 35, 27,255, 52, 34, 26,255, 50, 32, 24,255, 49, 31, 23,255, + 49, 31, 23,255, 52, 34, 25,255, 42, 29, 23,255, 1, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,125, 96, 84,255,185,129,104,255,182,127,103,255,182,127,103,255,181,126,102,255,179,125,101,255,179,124,101,255, +177,123,100,255,176,123, 99,255,176,122, 99,255,174,121, 97,255,173,120, 97,255,172,120, 97,255,170,118, 97,255,170,118, 96,255, +168,117, 95,255,167,116, 94,255,166,116, 93,255,165,115, 93,255,164,114, 92,255,163,113, 91,255,162,112, 91,255,160,111, 90,255, +159,110, 89,255,158,110, 89,255,157,108, 87,255,155,108, 87,255,154,106, 86,255,152,105, 85,255,151,105, 84,255,150,104, 84,255, +148,102, 82,255,147,102, 82,255,145,101, 81,255,143, 99, 80,255,142, 98, 79,255,140, 97, 78,255,138, 95, 77,255,136, 94, 76,255, +134, 92, 74,255,132, 91, 73,255,130, 90, 72,255,128, 88, 71,255,126, 86, 69,255,124, 85, 68,255,121, 83, 66,255,119, 81, 65,255, +116, 80, 63,255,114, 78, 63,255,111, 76, 61,255,109, 74, 59,255,106, 72, 57,255,103, 70, 56,255,100, 68, 54,255, 97, 66, 52,255, + 94, 64, 50,255, 91, 62, 49,255, 88, 59, 46,255, 85, 57, 45,255, 81, 54, 43,255, 77, 52, 40,255, 74, 50, 39,255, 70, 47, 36,255, + 66, 44, 34,255, 63, 41, 32,255, 60, 40, 31,255, 57, 37, 28,255, 54, 35, 27,255, 52, 34, 26,255, 50, 32, 24,255, 49, 31, 23,255, + 50, 32, 24,255, 53, 35, 26,255, 30, 20, 16,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,126, 97, 84,255,186,129,105,255,183,128,103,255,182,127,104,255,182,127,103,255,180,125,101,255,179,125,102,255, +179,125,101,255,177,123, 99,255,176,123,100,255,175,122, 99,255,173,121, 97,255,173,120, 98,255,171,119, 96,255,170,118, 96,255, +170,118, 96,255,168,117, 94,255,167,116, 94,255,167,116, 94,255,165,114, 92,255,163,113, 91,255,163,113, 92,255,161,112, 90,255, +160,111, 89,255,159,110, 89,255,157,109, 88,255,156,108, 87,255,155,108, 87,255,153,106, 85,255,152,105, 85,255,151,104, 84,255, +149,103, 83,255,147,102, 82,255,146,101, 81,255,144, 99, 80,255,142, 99, 79,255,141, 97, 79,255,139, 95, 77,255,137, 94, 76,255, +135, 93, 75,255,133, 91, 73,255,131, 90, 72,255,129, 89, 71,255,126, 87, 69,255,124, 85, 68,255,122, 83, 66,255,120, 82, 65,255, +117, 80, 64,255,114, 78, 62,255,112, 77, 61,255,109, 75, 60,255,106, 72, 57,255,104, 71, 56,255,101, 69, 54,255, 97, 66, 52,255, + 95, 64, 51,255, 91, 62, 49,255, 88, 59, 46,255, 85, 57, 45,255, 81, 55, 43,255, 77, 52, 40,255, 74, 49, 38,255, 70, 46, 36,255, + 66, 43, 33,255, 62, 41, 32,255, 60, 39, 30,255, 56, 36, 27,255, 53, 35, 26,255, 51, 33, 25,255, 49, 31, 23,255, 49, 31, 23,255, + 50, 32, 24,255, 54, 35, 27,255, 19, 13, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,127, 97, 84,255,187,130,105,255,185,129,104,255,183,128,103,255,183,127,103,255,181,126,102,255,180,126,102,255, +179,125,101,255,177,124,100,255,177,123,100,255,176,122, 99,255,175,121, 99,255,173,121, 98,255,173,120, 98,255,171,119, 96,255, +170,118, 96,255,169,117, 96,255,168,117, 94,255,167,116, 94,255,166,116, 94,255,164,114, 92,255,163,113, 92,255,162,112, 90,255, +160,111, 90,255,159,111, 90,255,158,109, 88,255,157,109, 87,255,156,108, 87,255,154,107, 86,255,152,105, 85,255,151,105, 85,255, +150,103, 83,255,148,102, 82,255,147,101, 82,255,145,100, 81,255,143, 99, 80,255,141, 98, 79,255,139, 96, 77,255,137, 95, 77,255, +136, 94, 76,255,133, 92, 74,255,131, 90, 73,255,129, 89, 71,255,127, 87, 69,255,124, 86, 69,255,123, 85, 68,255,120, 82, 66,255, +117, 80, 64,255,116, 78, 62,255,113, 77, 61,255,110, 75, 60,255,107, 74, 59,255,104, 71, 56,255,101, 69, 55,255, 98, 66, 52,255, + 95, 64, 51,255, 91, 62, 49,255, 88, 59, 46,255, 85, 57, 45,255, 81, 55, 43,255, 77, 51, 40,255, 73, 48, 38,255, 69, 46, 36,255, + 66, 43, 33,255, 62, 41, 31,255, 58, 39, 29,255, 56, 36, 27,255, 53, 34, 26,255, 51, 33, 25,255, 49, 31, 23,255, 50, 32, 24,255, + 51, 33, 25,255, 50, 33, 25,255, 9, 7, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,127, 97, 84,255,188,130,106,255,185,130,104,255,184,129,104,255,183,128,104,255,182,127,103,255,181,126,102,255, +180,125,102,255,179,124,101,255,178,124,100,255,177,123,100,255,175,122, 99,255,174,121, 98,255,173,121, 97,255,172,119, 97,255, +171,119, 97,255,170,118, 95,255,169,117, 95,255,167,117, 94,255,167,115, 93,255,165,115, 92,255,164,114, 92,255,162,112, 91,255, +161,112, 91,255,161,111, 90,255,158,110, 89,255,157,109, 88,255,156,108, 88,255,155,107, 86,255,153,106, 85,255,152,105, 85,255, +150,104, 84,255,149,103, 83,255,147,102, 82,255,145,101, 81,255,144,100, 80,255,142, 98, 79,255,140, 97, 78,255,138, 96, 77,255, +136, 94, 76,255,134, 92, 74,255,132, 91, 73,255,130, 89, 72,255,128, 88, 70,255,126, 86, 69,255,123, 85, 68,255,121, 83, 66,255, +119, 81, 65,255,116, 79, 63,255,113, 78, 62,255,111, 76, 61,255,108, 73, 58,255,105, 72, 57,255,101, 69, 55,255, 98, 67, 53,255, + 95, 65, 51,255, 91, 62, 49,255, 88, 59, 46,255, 85, 57, 45,255, 81, 54, 43,255, 77, 51, 40,255, 73, 49, 38,255, 69, 46, 35,255, + 65, 43, 33,255, 61, 41, 31,255, 58, 38, 29,255, 55, 36, 27,255, 52, 34, 25,255, 51, 33, 25,255, 49, 31, 23,255, 50, 32, 24,255, + 52, 34, 25,255, 46, 30, 24,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,127, 98, 85,255,188,131,106,255,186,129,105,255,185,129,105,255,184,129,104,255,183,127,104,255,182,127,103,255, +181,126,102,255,179,125,101,255,178,124,101,255,178,124,100,255,176,122, 99,255,175,122, 98,255,174,121, 98,255,173,120, 97,255, +172,120, 96,255,170,118, 96,255,169,117, 95,255,168,117, 95,255,166,115, 93,255,166,116, 93,255,165,115, 93,255,163,113, 91,255, +162,112, 90,255,161,112, 91,255,159,110, 89,255,158,109, 88,255,157,109, 88,255,155,107, 86,255,154,106, 86,255,153,106, 86,255, +151,104, 84,255,150,103, 83,255,148,103, 83,255,146,101, 81,255,144,100, 80,255,143, 99, 80,255,141, 97, 78,255,139, 96, 77,255, +137, 95, 76,255,135, 93, 74,255,133, 92, 74,255,131, 90, 73,255,128, 88, 71,255,126, 87, 69,255,124, 85, 68,255,122, 83, 67,255, +119, 82, 65,255,116, 79, 63,255,114, 78, 62,255,111, 76, 61,255,108, 73, 58,255,105, 72, 57,255,102, 70, 55,255, 99, 67, 53,255, + 95, 65, 51,255, 92, 62, 49,255, 88, 59, 47,255, 84, 57, 45,255, 80, 54, 43,255, 76, 51, 40,255, 73, 49, 38,255, 68, 45, 35,255, + 64, 42, 33,255, 60, 39, 30,255, 58, 38, 29,255, 54, 35, 26,255, 52, 33, 25,255, 50, 32, 24,255, 49, 31, 23,255, 51, 32, 24,255, + 54, 34, 26,255, 34, 24, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,128, 98, 85,255,189,131,107,255,187,130,105,255,186,130,105,255,185,129,105,255,184,128,104,255,182,127,103,255, +182,127,103,255,180,125,101,255,179,125,101,255,178,124,101,255,177,123,100,255,176,123, 99,255,175,122, 99,255,173,121, 98,255, +172,120, 97,255,171,119, 96,255,170,118, 96,255,169,118, 95,255,167,117, 94,255,166,116, 94,255,165,115, 93,255,164,114, 92,255, +162,113, 91,255,162,112, 91,255,160,111, 89,255,159,110, 89,255,157,109, 88,255,156,108, 87,255,154,107, 86,255,153,106, 86,255, +152,105, 84,255,150,104, 84,255,149,103, 83,255,147,101, 81,255,145,101, 81,255,144, 99, 80,255,141, 98, 79,255,139, 96, 77,255, +138, 95, 76,255,135, 93, 75,255,133, 92, 74,255,132, 91, 73,255,129, 88, 71,255,127, 87, 70,255,125, 86, 69,255,122, 84, 67,255, +120, 82, 66,255,118, 81, 64,255,115, 78, 62,255,112, 76, 61,255,109, 74, 59,255,106, 72, 57,255,103, 70, 55,255, 99, 67, 53,255, + 96, 65, 52,255, 92, 62, 50,255, 89, 59, 47,255, 84, 57, 45,255, 80, 54, 43,255, 76, 51, 40,255, 72, 48, 38,255, 68, 45, 35,255, + 64, 42, 32,255, 60, 39, 30,255, 56, 36, 28,255, 53, 34, 26,255, 51, 33, 25,255, 49, 32, 24,255, 49, 32, 24,255, 51, 33, 25,255, + 55, 36, 27,255, 16, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,128, 98, 85,255,190,132,107,255,187,131,106,255,186,130,106,255,185,129,105,255,184,128,104,255,183,128,104,255, +182,127,103,255,181,126,102,255,180,126,102,255,179,125,100,255,177,123,100,255,177,123,100,255,175,122, 98,255,174,121, 98,255, +173,120, 98,255,171,120, 96,255,171,119, 96,255,170,118, 96,255,168,116, 94,255,167,116, 94,255,166,115, 93,255,164,114, 93,255, +163,114, 92,255,162,112, 91,255,160,111, 90,255,159,110, 89,255,158,110, 89,255,157,109, 88,255,155,108, 87,255,154,106, 86,255, +152,105, 85,255,151,105, 84,255,149,103, 83,255,148,102, 82,255,146,101, 81,255,144,100, 80,255,142, 98, 79,255,141, 97, 78,255, +138, 96, 77,255,136, 94, 75,255,134, 92, 74,255,132, 91, 73,255,130, 89, 72,255,128, 88, 71,255,125, 86, 68,255,123, 84, 67,255, +121, 83, 66,255,118, 80, 65,255,116, 79, 63,255,112, 77, 62,255,109, 75, 59,255,106, 73, 58,255,103, 70, 56,255, 99, 67, 53,255, + 96, 66, 52,255, 92, 62, 50,255, 88, 60, 47,255, 85, 57, 45,255, 80, 54, 43,255, 76, 51, 40,255, 72, 48, 38,255, 67, 45, 35,255, + 63, 41, 32,255, 59, 38, 30,255, 56, 36, 27,255, 52, 34, 25,255, 50, 32, 24,255, 48, 32, 23,255, 50, 32, 24,255, 52, 33, 25,255, + 56, 37, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,128, 98, 86,255,191,133,108,255,188,131,106,255,187,130,106,255,187,131,106,255,185,129,104,255,184,128,104,255, +183,128,104,255,181,126,102,255,181,126,102,255,180,125,102,255,178,124,100,255,177,124,100,255,176,123,100,255,175,122, 98,255, +174,121, 98,255,173,120, 97,255,171,119, 96,255,170,119, 96,255,169,117, 95,255,168,116, 94,255,167,116, 94,255,165,115, 92,255, +164,114, 92,255,163,113, 91,255,161,112, 90,255,160,111, 89,255,159,111, 89,255,157,109, 88,255,156,108, 87,255,155,107, 87,255, +153,106, 85,255,151,105, 85,255,150,104, 84,255,148,103, 83,255,147,101, 82,255,145,100, 81,255,143, 99, 79,255,141, 98, 79,255, +140, 96, 78,255,137, 94, 75,255,135, 93, 75,255,133, 92, 74,255,131, 90, 72,255,128, 88, 71,255,127, 87, 70,255,124, 85, 68,255, +121, 83, 67,255,118, 81, 64,255,116, 79, 63,255,113, 77, 62,255,110, 75, 59,255,107, 73, 58,255,103, 71, 56,255, 99, 68, 54,255, + 96, 66, 52,255, 92, 63, 50,255, 89, 60, 47,255, 85, 57, 45,255, 80, 54, 43,255, 76, 51, 40,255, 71, 48, 37,255, 67, 44, 34,255, + 62, 41, 31,255, 58, 38, 29,255, 55, 36, 27,255, 52, 33, 25,255, 50, 31, 24,255, 49, 31, 23,255, 50, 32, 24,255, 54, 35, 27,255, + 41, 29, 23,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,129, 99, 87,255,191,134,109,255,189,132,107,255,188,131,106,255,187,131,105,255,186,129,105,255,185,129,105,255, +184,128,104,255,183,127,103,255,181,126,103,255,180,126,102,255,179,124,101,255,178,124,101,255,177,123, 99,255,175,122, 99,255, +175,122, 99,255,174,121, 97,255,172,120, 97,255,171,119, 96,255,169,119, 95,255,168,117, 95,255,167,117, 94,255,166,115, 94,255, +164,114, 92,255,164,114, 92,255,162,112, 91,255,160,111, 90,255,160,111, 90,255,158,109, 88,255,156,108, 87,255,155,108, 87,255, +153,106, 86,255,152,105, 85,255,151,105, 84,255,149,103, 83,255,147,102, 82,255,146,101, 82,255,144, 99, 80,255,142, 98, 79,255, +140, 97, 78,255,137, 95, 76,255,136, 93, 75,255,134, 92, 74,255,131, 90, 73,255,129, 89, 71,255,127, 88, 69,255,124, 85, 68,255, +122, 84, 67,255,120, 82, 65,255,117, 80, 63,255,114, 78, 62,255,110, 75, 60,255,107, 73, 58,255,103, 71, 56,255,100, 68, 54,255, + 96, 66, 52,255, 93, 63, 50,255, 89, 60, 47,255, 85, 57, 45,255, 80, 54, 42,255, 76, 51, 39,255, 71, 47, 36,255, 66, 44, 34,255, + 62, 40, 31,255, 58, 37, 29,255, 54, 35, 26,255, 51, 33, 25,255, 49, 31, 23,255, 48, 30, 23,255, 51, 33, 25,255, 56, 36, 28,255, + 23, 16, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,128,100, 88,255,192,135,111,255,189,132,108,255,189,131,107,255,187,130,106,255,186,130,105,255,185,129,105,255, +184,129,105,255,183,127,103,255,182,127,103,255,180,125,101,255,180,125,101,255,179,124,101,255,177,123,100,255,176,123, 99,255, +175,122, 99,255,174,121, 98,255,173,120, 97,255,172,119, 96,255,170,118, 95,255,169,117, 95,255,168,117, 95,255,166,115, 93,255, +165,115, 92,255,164,114, 92,255,163,113, 91,255,162,112, 90,255,160,111, 90,255,159,110, 88,255,157,109, 88,255,156,108, 87,255, +154,106, 86,255,153,106, 86,255,151,105, 85,255,150,103, 83,255,148,103, 83,255,146,101, 82,255,145, 99, 80,255,143, 99, 80,255, +141, 97, 79,255,139, 96, 77,255,137, 95, 76,255,134, 93, 75,255,133, 91, 73,255,130, 90, 72,255,127, 88, 70,255,126, 86, 69,255, +123, 84, 67,255,120, 82, 65,255,117, 80, 64,255,114, 78, 62,255,111, 76, 60,255,108, 74, 59,255,104, 71, 57,255,100, 68, 54,255, + 97, 66, 53,255, 93, 63, 50,255, 89, 60, 47,255, 85, 57, 45,255, 80, 54, 43,255, 76, 50, 39,255, 71, 47, 37,255, 66, 44, 34,255, + 61, 40, 31,255, 57, 37, 28,255, 53, 34, 26,255, 50, 32, 24,255, 48, 31, 23,255, 49, 31, 23,255, 52, 33, 25,255, 57, 38, 29,255, + 5, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,129,100, 89,255,192,135,113,255,190,133,110,255,190,132,108,255,189,132,107,255,187,130,105,255,186,130,106,255, +185,129,105,255,183,128,103,255,183,127,103,255,182,127,103,255,180,125,101,255,179,125,101,255,179,125,100,255,177,123,100,255, +176,123,100,255,175,121, 98,255,173,120, 97,255,172,120, 97,255,170,118, 96,255,169,117, 96,255,169,117, 95,255,167,116, 93,255, +166,116, 93,255,165,115, 93,255,163,113, 91,255,162,113, 91,255,161,112, 90,255,159,110, 89,255,158,110, 89,255,157,109, 88,255, +155,107, 87,255,154,106, 86,255,153,106, 85,255,150,104, 84,255,149,103, 83,255,148,102, 83,255,145,100, 81,255,144, 99, 80,255, +142, 99, 80,255,140, 96, 77,255,138, 95, 76,255,136, 94, 75,255,133, 92, 74,255,131, 90, 72,255,129, 89, 71,255,126, 87, 69,255, +124, 85, 68,255,120, 83, 67,255,118, 81, 65,255,115, 79, 63,255,111, 76, 60,255,108, 74, 59,255,105, 72, 57,255,101, 68, 54,255, + 97, 66, 53,255, 93, 63, 50,255, 89, 60, 47,255, 85, 57, 45,255, 80, 54, 42,255, 75, 50, 39,255, 71, 47, 37,255, 66, 43, 34,255, + 61, 40, 31,255, 57, 37, 28,255, 53, 34, 26,255, 50, 32, 24,255, 48, 30, 22,255, 48, 31, 23,255, 53, 34, 26,255, 50, 33, 27,255, + 2, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,130,101, 90,255,193,137,115,255,190,135,111,255,190,133,109,255,189,132,107,255,188,131,107,255,187,130,106,255, +186,130,104,255,185,129,104,255,183,128,104,255,183,127,103,255,181,126,102,255,180,125,102,255,179,124,101,255,178,123,100,255, +177,123,100,255,176,122, 98,255,174,121, 98,255,173,120, 98,255,171,120, 96,255,171,119, 96,255,169,118, 95,255,168,117, 94,255, +166,116, 94,255,165,115, 93,255,164,114, 92,255,163,113, 91,255,162,112, 91,255,160,111, 89,255,159,110, 89,255,157,109, 88,255, +156,108, 87,255,154,107, 87,255,153,106, 86,255,152,105, 85,255,150,104, 84,255,148,103, 83,255,147,101, 82,255,144,100, 81,255, +143, 99, 80,255,141, 97, 78,255,139, 96, 77,255,137, 94, 76,255,134, 93, 75,255,132, 91, 73,255,130, 90, 72,255,127, 87, 70,255, +125, 85, 68,255,122, 83, 66,255,119, 81, 65,255,116, 79, 63,255,113, 77, 61,255,109, 75, 60,255,106, 72, 57,255,102, 69, 55,255, + 98, 67, 53,255, 94, 64, 50,255, 90, 61, 48,255, 85, 58, 46,255, 80, 54, 43,255, 76, 50, 39,255, 71, 47, 37,255, 65, 43, 34,255, + 61, 40, 31,255, 56, 36, 27,255, 52, 34, 26,255, 49, 31, 23,255, 47, 30, 22,255, 49, 31, 23,255, 54, 35, 26,255, 41, 27, 22,255, + 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,130,101, 91,255,193,138,116,255,191,135,113,255,191,134,110,255,190,132,108,255,188,131,106,255,187,131,106,255, +186,130,105,255,185,129,104,255,184,128,104,255,183,127,104,255,182,126,102,255,181,126,102,255,179,125,102,255,178,124,100,255, +177,123,100,255,176,123, 99,255,175,122, 98,255,174,121, 98,255,172,120, 97,255,171,119, 96,255,170,118, 95,255,168,117, 94,255, +167,116, 94,255,166,116, 94,255,165,114, 92,255,164,113, 91,255,162,113, 91,255,161,111, 90,255,160,111, 89,255,158,110, 89,255, +157,109, 88,255,155,108, 87,255,154,106, 86,255,152,105, 85,255,151,104, 84,255,149,103, 83,255,147,102, 82,255,146,101, 81,255, +144, 99, 80,255,142, 98, 79,255,140, 97, 78,255,138, 95, 76,255,136, 93, 75,255,133, 92, 74,255,130, 90, 72,255,128, 88, 71,255, +125, 86, 69,255,122, 84, 67,255,119, 82, 66,255,117, 80, 64,255,113, 77, 62,255,110, 75, 60,255,106, 73, 58,255,102, 70, 55,255, + 98, 67, 53,255, 94, 64, 51,255, 90, 61, 48,255, 86, 58, 46,255, 81, 54, 43,255, 76, 50, 39,255, 71, 47, 37,255, 65, 43, 34,255, + 61, 40, 30,255, 55, 37, 27,255, 51, 33, 25,255, 48, 31, 23,255, 47, 29, 22,255, 49, 31, 23,255, 55, 36, 27,255, 33, 22, 17,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,130,102, 91,255,194,138,117,255,192,136,114,255,191,135,112,255,190,134,109,255,189,132,107,255,188,131,106,255, +187,131,105,255,186,129,105,255,185,128,105,255,184,129,104,255,182,127,103,255,181,127,103,255,181,126,102,255,179,125,101,255, +178,124,100,255,177,123, 99,255,175,122, 99,255,174,121, 98,255,174,120, 97,255,172,119, 96,255,171,119, 96,255,169,117, 95,255, +168,117, 95,255,167,116, 94,255,165,115, 93,255,164,114, 92,255,163,113, 91,255,161,112, 91,255,160,111, 90,255,159,111, 90,255, +157,109, 88,255,156,108, 88,255,155,107, 87,255,153,105, 86,255,152,105, 85,255,150,104, 84,255,148,103, 83,255,147,101, 82,255, +145,101, 81,255,143, 99, 79,255,141, 97, 78,255,139, 96, 77,255,136, 94, 76,255,134, 92, 74,255,132, 91, 73,255,129, 89, 71,255, +126, 87, 70,255,124, 85, 69,255,121, 83, 66,255,117, 80, 64,255,114, 78, 62,255,110, 76, 60,255,107, 73, 58,255,103, 70, 56,255, + 99, 68, 54,255, 95, 64, 51,255, 90, 61, 48,255, 86, 58, 46,255, 81, 55, 43,255, 76, 50, 39,255, 71, 47, 37,255, 66, 43, 34,255, + 61, 40, 30,255, 55, 36, 27,255, 51, 33, 25,255, 48, 30, 23,255, 47, 29, 22,255, 49, 31, 23,255, 56, 36, 28,255, 26, 17, 14,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,130,102, 92,255,194,139,119,255,192,137,116,255,191,136,114,255,191,134,110,255,189,133,108,255,188,131,107,255, +188,130,106,255,186,130,105,255,185,129,105,255,184,129,104,255,183,128,103,255,182,127,103,255,181,126,102,255,180,125,101,255, +178,124,101,255,178,124,100,255,176,122, 99,255,175,122, 99,255,173,121, 97,255,173,120, 97,255,171,119, 96,255,170,118, 95,255, +169,117, 95,255,168,116, 94,255,166,115, 93,255,165,114, 92,255,164,114, 92,255,162,112, 91,255,161,112, 90,255,160,111, 90,255, +159,110, 89,255,157,109, 88,255,156,108, 87,255,154,107, 86,255,153,106, 85,255,151,105, 85,255,150,104, 83,255,148,102, 82,255, +146,101, 81,255,144,100, 80,255,142, 98, 79,255,140, 97, 78,255,137, 95, 76,255,136, 93, 75,255,133, 92, 74,255,130, 90, 72,255, +128, 88, 70,255,125, 86, 69,255,122, 83, 67,255,119, 81, 65,255,115, 79, 63,255,112, 77, 61,255,108, 74, 59,255,104, 71, 56,255, +100, 68, 54,255, 96, 65, 51,255, 91, 62, 49,255, 86, 58, 46,255, 81, 55, 43,255, 76, 51, 40,255, 71, 47, 37,255, 65, 43, 34,255, + 61, 40, 30,255, 55, 36, 27,255, 51, 33, 25,255, 48, 30, 22,255, 47, 29, 22,255, 50, 32, 24,255, 56, 37, 29,255, 23, 15, 12,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,131,103, 93,255,195,140,121,255,192,138,118,255,192,137,115,255,191,135,112,255,190,134,110,255,189,132,108,255, +188,131,107,255,187,130,105,255,186,130,105,255,184,128,104,255,184,128,104,255,183,127,103,255,181,127,103,255,180,125,101,255, +179,125,101,255,178,124,101,255,177,123, 99,255,176,122, 99,255,174,122, 98,255,173,121, 97,255,172,120, 97,255,171,118, 96,255, +170,117, 95,255,169,117, 95,255,167,116, 93,255,166,115, 93,255,164,114, 92,255,163,113, 91,255,162,112, 91,255,160,111, 90,255, +159,110, 89,255,158,110, 89,255,157,109, 88,255,155,107, 87,255,154,106, 86,255,152,105, 85,255,151,104, 84,255,149,103, 83,255, +147,101, 82,255,146,101, 81,255,143, 99, 80,255,141, 97, 78,255,139, 96, 77,255,137, 94, 76,255,134, 92, 74,255,132, 91, 72,255, +129, 88, 71,255,126, 86, 69,255,122, 84, 67,255,119, 82, 66,255,116, 79, 63,255,113, 77, 62,255,109, 74, 59,255,105, 71, 57,255, +101, 69, 55,255, 96, 65, 52,255, 92, 62, 49,255, 88, 59, 47,255, 82, 55, 43,255, 77, 51, 40,255, 72, 47, 37,255, 66, 44, 34,255, + 61, 40, 31,255, 55, 36, 27,255, 50, 33, 25,255, 47, 30, 22,255, 47, 29, 22,255, 50, 32, 24,255, 56, 37, 29,255, 21, 15, 12,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,131,103, 93,255,196,140,122,255,193,138,119,255,193,137,117,255,192,136,114,255,190,134,111,255,190,133,109,255, +189,132,107,255,187,131,106,255,187,130,105,255,186,130,106,255,184,128,104,255,184,128,104,255,183,127,103,255,180,126,102,255, +180,126,102,255,179,124,101,255,177,124,100,255,176,123, 99,255,176,122, 98,255,174,121, 98,255,173,121, 98,255,171,120, 97,255, +170,118, 96,255,169,118, 95,255,168,117, 94,255,167,116, 94,255,166,115, 93,255,164,114, 92,255,163,113, 92,255,162,112, 91,255, +160,111, 90,255,159,111, 89,255,158,110, 89,255,156,108, 88,255,155,107, 87,255,154,107, 86,255,152,105, 84,255,150,104, 84,255, +149,103, 83,255,147,101, 82,255,144,100, 81,255,143, 99, 80,255,140, 97, 78,255,138, 95, 77,255,136, 94, 76,255,133, 91, 73,255, +130, 89, 72,255,127, 88, 71,255,124, 85, 68,255,120, 83, 66,255,117, 81, 65,255,114, 78, 62,255,110, 75, 60,255,105, 72, 57,255, +101, 69, 55,255, 97, 66, 52,255, 93, 62, 49,255, 88, 59, 47,255, 82, 56, 44,255, 78, 52, 40,255, 72, 48, 37,255, 66, 44, 34,255, + 61, 40, 31,255, 55, 36, 27,255, 50, 33, 25,255, 47, 30, 22,255, 46, 29, 22,255, 50, 32, 24,255, 55, 37, 29,255, 19, 14, 12,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,131,103, 94,255,196,141,123,255,193,139,120,255,193,138,118,255,192,137,115,255,191,135,112,255,190,134,110,255, +189,133,108,255,188,131,106,255,187,131,106,255,186,130,106,255,185,129,104,255,184,128,104,255,182,128,104,255,182,127,103,255, +180,126,102,255,180,125,102,255,178,124,100,255,177,124,100,255,176,122, 99,255,175,122, 99,255,174,121, 98,255,172,121, 98,255, +171,119, 96,255,170,118, 96,255,169,117, 94,255,167,116, 94,255,166,116, 93,255,165,114, 92,255,164,114, 92,255,163,113, 91,255, +162,112, 90,255,160,111, 90,255,159,111, 89,255,158,110, 88,255,156,108, 87,255,155,107, 87,255,153,106, 85,255,152,105, 84,255, +150,104, 84,255,148,103, 83,255,146,101, 81,255,144,100, 81,255,142, 98, 79,255,140, 96, 77,255,137, 94, 76,255,134, 93, 74,255, +131, 90, 72,255,128, 88, 71,255,125, 86, 70,255,122, 84, 67,255,119, 81, 65,255,115, 79, 63,255,111, 76, 61,255,107, 73, 58,255, +103, 70, 56,255, 99, 66, 53,255, 93, 63, 50,255, 89, 60, 47,255, 84, 56, 44,255, 78, 52, 41,255, 73, 48, 38,255, 67, 44, 34,255, + 61, 40, 31,255, 55, 36, 27,255, 50, 32, 25,255, 47, 29, 22,255, 46, 29, 21,255, 49, 32, 24,255, 56, 37, 30,255, 21, 17, 15,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,131,104, 95,255,196,142,125,255,193,140,122,255,193,139,119,255,192,137,117,255,191,136,114,255,191,135,111,255, +189,133,109,255,189,131,107,255,188,131,106,255,186,131,106,255,186,130,105,255,185,129,104,255,183,128,103,255,182,127,103,255, +181,126,102,255,180,126,101,255,179,124,101,255,178,124,100,255,177,123, 99,255,176,122, 99,255,175,121, 98,255,173,120, 97,255, +172,120, 97,255,171,119, 96,255,170,118, 95,255,169,117, 94,255,168,117, 94,255,166,115, 93,255,165,114, 92,255,164,114, 92,255, +163,113, 91,255,162,112, 90,255,160,111, 90,255,159,110, 89,255,158,109, 88,255,156,108, 87,255,155,107, 86,255,153,106, 86,255, +151,105, 85,255,149,103, 83,255,148,102, 82,255,145,100, 80,255,143, 99, 80,255,141, 97, 78,255,138, 95, 76,255,136, 94, 75,255, +133, 92, 73,255,130, 89, 71,255,127, 87, 70,255,123, 85, 68,255,120, 82, 66,255,116, 80, 64,255,112, 77, 62,255,108, 74, 59,255, +104, 71, 56,255,100, 68, 54,255, 95, 64, 51,255, 90, 60, 47,255, 84, 57, 45,255, 79, 53, 41,255, 73, 49, 38,255, 67, 44, 34,255, + 62, 40, 31,255, 55, 36, 27,255, 50, 33, 25,255, 47, 29, 22,255, 45, 28, 21,255, 49, 31, 23,255, 55, 37, 29,255, 20, 16, 13,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,131,104, 95,255,196,143,125,255,194,141,123,255,194,140,121,255,193,138,118,255,192,136,115,255,192,135,113,255, +191,134,110,255,190,132,108,255,189,132,107,255,188,131,106,255,186,130,105,255,185,129,104,255,185,129,105,255,183,128,104,255, +182,127,103,255,181,126,102,255,180,125,102,255,179,125,101,255,178,123,101,255,177,123,100,255,176,122, 99,255,175,121, 98,255, +173,121, 98,255,172,120, 97,255,171,119, 96,255,170,118, 95,255,169,118, 95,255,168,117, 94,255,166,115, 93,255,166,115, 93,255, +164,114, 92,255,163,113, 91,255,162,113, 91,255,160,111, 90,255,159,110, 89,255,158,110, 89,255,156,108, 87,255,154,107, 86,255, +153,106, 86,255,151,104, 84,255,149,103, 83,255,147,102, 82,255,145,100, 80,255,142, 98, 79,255,140, 97, 78,255,137, 94, 76,255, +134, 93, 74,255,132, 91, 73,255,128, 88, 70,255,125, 86, 69,255,122, 84, 67,255,118, 81, 65,255,113, 78, 62,255,109, 75, 59,255, +105, 72, 58,255,100, 69, 54,255, 96, 65, 51,255, 91, 61, 49,255, 85, 57, 45,255, 80, 53, 42,255, 74, 49, 38,255, 68, 45, 35,255, + 62, 41, 32,255, 56, 36, 28,255, 50, 33, 25,255, 46, 29, 22,255, 44, 28, 20,255, 48, 30, 22,255, 55, 36, 29,255, 20, 15, 13,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,131,104, 96,255,197,144,127,255,195,142,124,255,194,140,122,255,194,139,119,255,192,138,118,255,192,136,115,255, +190,135,112,255,190,133,109,255,189,132,107,255,188,132,107,255,187,130,106,255,186,130,105,255,185,128,104,255,184,128,104,255, +183,127,103,255,182,126,102,255,181,125,102,255,180,125,102,255,179,124,101,255,178,123,100,255,177,123,100,255,175,122, 99,255, +175,121, 98,255,173,120, 97,255,172,120, 97,255,171,119, 96,255,170,118, 95,255,169,117, 95,255,168,117, 94,255,167,116, 94,255, +166,115, 93,255,164,114, 92,255,163,113, 92,255,162,112, 91,255,160,111, 90,255,159,110, 89,255,158,110, 88,255,156,108, 87,255, +154,107, 86,255,153,106, 85,255,151,104, 84,255,149,103, 83,255,146,101, 82,255,144,100, 80,255,141, 98, 79,255,138, 95, 77,255, +136, 93, 75,255,133, 92, 73,255,130, 89, 72,255,127, 87, 69,255,123, 85, 68,255,119, 82, 65,255,115, 79, 63,255,111, 76, 61,255, +107, 73, 58,255,102, 70, 56,255, 98, 66, 52,255, 92, 62, 50,255, 87, 59, 47,255, 81, 55, 43,255, 75, 50, 40,255, 69, 46, 35,255, + 63, 41, 32,255, 57, 37, 28,255, 51, 33, 25,255, 46, 29, 22,255, 44, 28, 20,255, 47, 30, 22,255, 55, 37, 29,255, 23, 17, 15,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,132,105, 97,255,198,144,128,255,195,142,125,255,194,141,123,255,194,140,121,255,193,138,118,255,192,137,116,255, +191,136,113,255,190,134,111,255,190,133,109,255,189,131,106,255,188,131,107,255,187,130,106,255,186,129,105,255,185,128,104,255, +184,128,104,255,182,127,103,255,182,126,102,255,181,126,102,255,179,125,101,255,179,124,101,255,178,123,100,255,176,122, 99,255, +176,122, 99,255,175,121, 98,255,173,120, 97,255,173,120, 97,255,172,119, 96,255,170,118, 95,255,169,117, 95,255,169,116, 94,255, +167,116, 94,255,166,115, 93,255,164,114, 92,255,163,113, 91,255,162,112, 91,255,160,111, 90,255,159,110, 89,255,158,109, 88,255, +156,108, 87,255,154,107, 86,255,152,106, 85,255,150,104, 84,255,148,102, 82,255,146,101, 82,255,143, 99, 79,255,141, 97, 78,255, +137, 95, 76,255,134, 93, 74,255,131, 91, 73,255,128, 88, 71,255,124, 86, 68,255,121, 84, 67,255,117, 80, 64,255,113, 77, 62,255, +108, 74, 59,255,104, 71, 56,255, 99, 67, 53,255, 94, 63, 50,255, 88, 60, 47,255, 83, 56, 44,255, 76, 51, 40,255, 70, 47, 36,255, + 65, 42, 32,255, 58, 37, 29,255, 52, 33, 25,255, 47, 30, 22,255, 44, 28, 20,255, 46, 29, 21,255, 55, 36, 28,255, 25, 18, 16,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,132,105, 97,255,198,145,130,255,196,143,126,255,195,142,125,255,194,141,122,255,193,139,120,255,192,138,118,255, +192,137,115,255,191,135,113,255,190,134,110,255,189,133,108,255,188,131,107,255,188,131,107,255,187,130,105,255,185,130,105,255, +185,129,104,255,184,128,103,255,183,127,103,255,182,127,103,255,181,126,103,255,180,125,102,255,179,124,101,255,178,124,101,255, +177,123,100,255,176,122, 99,255,175,122, 99,255,174,121, 98,255,173,121, 98,255,172,120, 97,255,171,118, 96,255,170,118, 96,255, +168,117, 95,255,167,117, 94,255,166,116, 94,255,166,114, 92,255,164,114, 92,255,163,113, 91,255,161,111, 91,255,159,111, 90,255, +158,110, 89,255,155,108, 87,255,154,107, 86,255,152,106, 85,255,150,103, 83,255,147,102, 82,255,145,101, 81,255,142, 98, 79,255, +139, 96, 77,255,136, 94, 76,255,133, 92, 73,255,130, 89, 71,255,126, 87, 70,255,123, 84, 67,255,118, 81, 65,255,114, 78, 63,255, +110, 75, 60,255,105, 71, 57,255,100, 68, 53,255, 95, 64, 51,255, 90, 60, 48,255, 84, 56, 44,255, 78, 52, 41,255, 72, 48, 37,255, + 66, 43, 33,255, 59, 39, 30,255, 52, 34, 26,255, 47, 30, 22,255, 44, 27, 20,255, 45, 28, 21,255, 54, 35, 27,255, 29, 21, 18,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,132,105, 98,255,198,146,131,255,196,144,128,255,195,143,126,255,195,141,123,255,193,140,122,255,193,138,119,255, +192,137,116,255,191,136,115,255,191,135,112,255,190,133,109,255,189,132,108,255,188,131,107,255,187,131,106,255,186,130,105,255, +185,130,105,255,184,129,104,255,183,128,103,255,183,128,104,255,182,127,103,255,181,126,102,255,180,125,102,255,179,124,101,255, +178,124,100,255,177,123,100,255,176,122, 99,255,176,122, 99,255,174,121, 98,255,173,121, 98,255,173,120, 97,255,171,119, 96,255, +170,118, 95,255,169,118, 95,255,168,117, 94,255,167,116, 94,255,165,115, 93,255,164,114, 92,255,163,113, 91,255,161,112, 90,255, +160,111, 90,255,158,109, 88,255,156,109, 87,255,154,106, 86,255,151,105, 85,255,149,103, 83,255,147,102, 82,255,143, 99, 80,255, +141, 97, 78,255,138, 95, 76,255,135, 92, 74,255,131, 90, 72,255,128, 88, 70,255,124, 85, 68,255,120, 83, 66,255,116, 80, 64,255, +112, 77, 61,255,107, 73, 58,255,103, 70, 55,255, 97, 66, 52,255, 92, 62, 50,255, 86, 58, 46,255, 80, 54, 42,255, 74, 49, 38,255, + 67, 44, 34,255, 60, 39, 30,255, 54, 34, 26,255, 48, 30, 23,255, 44, 27, 20,255, 44, 27, 20,255, 52, 33, 25,255, 37, 27, 23,255, + 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,132,106, 98,255,199,146,132,255,196,145,129,255,195,144,127,255,195,143,125,255,194,141,122,255,193,140,120,255, +193,138,117,255,192,137,116,255,192,136,114,255,190,134,111,255,190,133,109,255,189,132,108,255,188,131,106,255,187,130,106,255, +186,130,105,255,185,129,104,255,184,129,104,255,183,128,103,255,182,127,104,255,182,127,103,255,181,126,102,255,180,125,102,255, +179,125,101,255,179,124,101,255,177,123,100,255,177,123,100,255,176,122, 99,255,175,122, 98,255,174,121, 98,255,173,121, 97,255, +172,119, 96,255,171,119, 96,255,169,117, 95,255,169,117, 95,255,168,116, 94,255,166,115, 93,255,164,114, 92,255,163,113, 91,255, +161,112, 90,255,160,111, 89,255,158,110, 89,255,155,108, 87,255,154,106, 86,255,151,105, 85,255,148,102, 82,255,146,101, 81,255, +143, 99, 80,255,139, 96, 77,255,136, 94, 76,255,133, 92, 74,255,129, 89, 71,255,126, 87, 70,255,122, 84, 67,255,118, 81, 65,255, +113, 77, 62,255,109, 74, 59,255,104, 71, 56,255, 98, 67, 54,255, 94, 63, 50,255, 89, 59, 47,255, 82, 55, 43,255, 75, 50, 39,255, + 69, 46, 35,255, 62, 41, 31,255, 55, 36, 27,255, 49, 31, 23,255, 44, 28, 20,255, 43, 27, 19,255, 49, 31, 23,255, 44, 31, 25,255, + 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,132,106, 99,255,199,147,132,255,196,145,130,255,196,144,128,255,196,143,126,255,195,141,123,255,194,140,121,255, +194,139,120,255,193,138,117,255,192,137,116,255,192,136,113,255,191,134,111,255,190,133,109,255,189,132,108,255,188,132,107,255, +187,131,106,255,187,131,106,255,186,130,105,255,185,129,104,255,184,129,104,255,183,128,104,255,183,128,104,255,182,127,103,255, +181,126,102,255,180,125,102,255,180,125,101,255,178,124,101,255,178,124,100,255,177,123, 99,255,176,122, 99,255,175,122, 99,255, +174,121, 98,255,173,120, 97,255,172,120, 97,255,170,118, 96,255,169,118, 95,255,168,117, 94,255,167,116, 94,255,165,115, 93,255, +163,114, 92,255,162,112, 90,255,160,110, 89,255,158,110, 89,255,155,107, 87,255,153,106, 85,255,151,104, 84,255,148,102, 82,255, +144,100, 80,255,142, 98, 79,255,138, 95, 77,255,135, 93, 75,255,132, 91, 73,255,128, 88, 71,255,123, 85, 68,255,120, 82, 65,255, +116, 79, 63,255,111, 75, 60,255,106, 72, 57,255,101, 68, 54,255, 96, 64, 51,255, 90, 60, 48,255, 84, 56, 44,255, 78, 51, 40,255, + 71, 47, 36,255, 64, 42, 32,255, 57, 37, 28,255, 50, 32, 24,255, 45, 28, 21,255, 42, 26, 19,255, 48, 30, 23,255, 48, 33, 26,255, + 2, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,133,107, 99,255,199,147,134,255,197,146,131,255,196,144,129,255,195,144,127,255,195,142,125,255,195,141,123,255, +194,140,121,255,193,139,119,255,193,137,117,255,192,136,115,255,191,135,113,255,191,134,111,255,190,133,109,255,189,132,108,255, +188,132,107,255,187,131,106,255,186,130,105,255,186,130,105,255,185,129,104,255,184,129,104,255,183,128,103,255,183,127,103,255, +182,127,103,255,182,126,103,255,181,126,102,255,180,125,101,255,179,125,101,255,179,124,100,255,178,124,100,255,177,123,100,255, +176,122, 99,255,174,122, 98,255,174,120, 98,255,172,120, 97,255,171,119, 96,255,170,118, 96,255,168,117, 95,255,167,117, 93,255, +166,115, 93,255,164,114, 92,255,162,112, 90,255,160,111, 90,255,158,109, 88,255,155,108, 87,255,153,106, 85,255,150,104, 84,255, +147,102, 82,255,144,100, 80,255,140, 97, 78,255,137, 95, 76,255,133, 92, 74,255,129, 89, 72,255,125, 87, 70,255,122, 84, 67,255, +118, 81, 64,255,113, 77, 62,255,108, 74, 59,255,103, 70, 56,255, 98, 66, 52,255, 92, 62, 50,255, 86, 58, 46,255, 79, 53, 42,255, + 73, 48, 38,255, 66, 43, 33,255, 59, 39, 30,255, 51, 33, 25,255, 45, 28, 21,255, 41, 26, 19,255, 45, 29, 22,255, 56, 38, 30,255, + 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,133,107,100,255,199,148,134,255,197,146,132,255,196,145,130,255,196,144,128,255,195,143,126,255,196,142,124,255, +195,141,122,255,193,139,120,255,193,139,118,255,193,137,116,255,191,136,115,255,192,135,113,255,190,134,111,255,190,133,109,255, +189,132,108,255,188,131,106,255,187,131,106,255,187,131,106,255,186,130,105,255,186,130,105,255,185,129,104,255,184,129,104,255, +184,128,103,255,183,127,103,255,182,126,103,255,182,126,102,255,181,126,102,255,180,125,101,255,179,125,101,255,179,124,101,255, +177,123,100,255,177,123, 99,255,175,122, 98,255,174,121, 98,255,173,121, 98,255,171,119, 97,255,171,119, 96,255,169,117, 95,255, +167,116, 94,255,166,115, 93,255,164,114, 92,255,161,112, 90,255,160,111, 89,255,157,109, 88,255,154,107, 86,255,152,105, 85,255, +149,103, 83,255,145,101, 81,255,143, 99, 80,255,139, 96, 77,255,135, 93, 75,255,132, 91, 73,255,128, 88, 71,255,124, 85, 68,255, +120, 82, 66,255,115, 79, 63,255,110, 75, 60,255,106, 71, 57,255,100, 68, 54,255, 95, 64, 50,255, 88, 59, 47,255, 82, 55, 43,255, + 74, 50, 39,255, 68, 45, 35,255, 60, 40, 30,255, 53, 35, 26,255, 46, 30, 22,255, 43, 27, 20,255, 44, 27, 20,255, 55, 36, 27,255, + 10, 8, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,133,107,101,255,200,149,136,255,197,147,132,255,197,146,131,255,197,145,129,255,196,144,128,255,196,142,126,255, +195,142,124,255,194,140,122,255,194,140,120,255,193,139,118,255,193,137,117,255,192,136,115,255,192,136,113,255,191,134,111,255, +190,134,109,255,190,133,108,255,189,132,107,255,188,132,107,255,188,132,107,255,187,131,106,255,187,131,106,255,187,130,106,255, +185,129,105,255,185,129,105,255,184,128,104,255,183,128,104,255,183,128,104,255,182,127,103,255,181,126,102,255,181,126,102,255, +180,125,101,255,179,124,101,255,178,124,101,255,177,123,100,255,175,122, 99,255,174,121, 98,255,173,120, 98,255,171,119, 96,255, +170,118, 96,255,168,116, 94,255,166,115, 93,255,164,114, 92,255,162,112, 90,255,160,111, 89,255,157,109, 88,255,154,107, 86,255, +151,104, 84,255,148,103, 83,255,145,100, 80,255,141, 97, 78,255,138, 95, 77,255,134, 92, 74,255,130, 89, 72,255,126, 87, 70,255, +122, 83, 67,255,118, 80, 64,255,113, 77, 61,255,107, 73, 58,255,102, 69, 55,255, 96, 65, 51,255, 91, 61, 48,255, 85, 57, 44,255, + 77, 51, 40,255, 70, 47, 36,255, 63, 41, 31,255, 55, 36, 27,255, 48, 30, 23,255, 43, 27, 20,255, 42, 27, 20,255, 50, 32, 23,255, + 34, 26, 23,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,133,107,100,255,200,149,136,255,198,148,134,255,197,146,132,255,197,146,130,255,197,144,129,255,196,144,127,255, +196,142,125,255,195,141,124,255,194,140,122,255,194,140,120,255,193,139,119,255,193,138,117,255,192,137,116,255,191,136,114,255, +191,135,112,255,190,134,111,255,190,134,109,255,190,133,109,255,189,132,108,255,189,132,107,255,188,131,107,255,188,131,106,255, +187,130,106,255,187,130,106,255,186,130,105,255,185,129,105,255,185,129,104,255,184,128,104,255,183,128,104,255,182,127,103,255, +182,127,103,255,181,126,102,255,180,125,101,255,179,125,101,255,178,123,100,255,176,123, 99,255,175,122, 98,255,173,120, 97,255, +172,119, 97,255,170,118, 96,255,168,116, 94,255,166,115, 93,255,164,114, 92,255,162,113, 90,255,159,110, 89,255,156,109, 88,255, +153,107, 86,255,151,104, 84,255,147,102, 82,255,144, 99, 80,255,139, 97, 78,255,137, 94, 75,255,133, 91, 72,255,128, 88, 71,255, +124, 85, 68,255,119, 81, 66,255,115, 79, 63,255,110, 75, 60,255,104, 71, 56,255, 99, 67, 53,255, 93, 63, 50,255, 86, 59, 46,255, + 80, 53, 42,255, 73, 49, 38,255, 65, 43, 34,255, 57, 37, 28,255, 49, 32, 24,255, 43, 27, 20,255, 42, 26, 19,255, 48, 30, 22,255, + 47, 33, 27,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,133,108,101,255,200,150,137,255,198,148,135,255,197,147,133,255,197,147,132,255,197,145,130,255,197,144,129,255, +196,144,127,255,196,142,125,255,195,141,124,255,194,140,122,255,194,140,121,255,193,139,120,255,193,138,118,255,192,137,117,255, +193,137,116,255,191,136,114,255,191,135,113,255,191,135,112,255,190,133,110,255,190,133,110,255,190,133,109,255,189,132,108,255, +189,131,107,255,188,131,106,255,188,131,106,255,187,130,105,255,187,130,105,255,186,130,105,255,185,129,105,255,184,128,104,255, +184,128,104,255,183,128,103,255,182,126,103,255,181,126,102,255,180,125,101,255,178,124,100,255,177,123,100,255,176,123, 99,255, +174,120, 98,255,172,120, 97,255,170,118, 96,255,168,117, 94,255,166,115, 93,255,164,114, 92,255,161,112, 90,255,159,110, 89,255, +156,108, 87,255,152,106, 85,255,150,104, 84,255,146,101, 81,255,142, 98, 79,255,138, 96, 77,255,134, 93, 75,255,130, 89, 72,255, +126, 87, 70,255,122, 84, 67,255,117, 80, 64,255,113, 76, 61,255,107, 73, 58,255,102, 69, 55,255, 96, 65, 51,255, 89, 60, 47,255, + 82, 56, 43,255, 75, 50, 39,255, 68, 45, 35,255, 59, 39, 30,255, 52, 33, 25,255, 45, 28, 21,255, 41, 25, 18,255, 45, 28, 21,255, + 60, 42, 33,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,133,108,102,255,201,150,138,255,198,149,135,255,198,148,134,255,198,147,133,255,197,146,131,255,196,145,129,255, +197,145,128,255,195,144,127,255,196,142,125,255,195,142,124,255,195,141,123,255,194,140,121,255,194,140,121,255,194,140,120,255, +193,139,118,255,193,138,117,255,193,138,116,255,192,137,115,255,192,136,114,255,192,136,113,255,192,135,113,255,191,135,111,255, +190,134,110,255,190,133,109,255,190,133,108,255,189,132,107,255,189,132,107,255,188,131,107,255,187,131,106,255,187,131,106,255, +186,130,105,255,185,129,105,255,184,129,104,255,183,128,104,255,182,127,103,255,181,126,102,255,179,125,101,255,177,123,100,255, +176,123, 99,255,175,121, 99,255,172,120, 97,255,171,119, 96,255,168,118, 94,255,166,115, 93,255,164,114, 92,255,161,112, 90,255, +158,110, 89,255,155,108, 87,255,152,105, 85,255,149,103, 83,255,145,100, 81,255,141, 97, 78,255,137, 94, 76,255,133, 92, 74,255, +129, 89, 71,255,125, 85, 68,255,120, 82, 66,255,115, 78, 63,255,110, 75, 59,255,104, 70, 56,255, 98, 66, 52,255, 92, 62, 49,255, + 85, 57, 45,255, 78, 52, 41,255, 71, 46, 36,255, 63, 41, 31,255, 54, 35, 27,255, 46, 29, 22,255, 41, 26, 19,255, 44, 27, 20,255, + 53, 33, 25,255, 16, 13, 12,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,134,108,102,255,201,151,139,255,199,149,137,255,198,148,135,255,197,148,133,255,197,147,132,255,197,146,131,255, +197,145,129,255,195,144,128,255,195,144,128,255,196,143,126,255,195,143,126,255,195,142,124,255,195,141,123,255,194,141,122,255, +194,140,121,255,194,140,121,255,194,139,120,255,193,139,119,255,193,139,118,255,193,138,117,255,193,138,117,255,192,138,116,255, +192,137,115,255,191,136,114,255,191,136,113,255,191,135,111,255,191,134,110,255,190,134,109,255,189,133,108,255,189,132,108,255, +189,132,107,255,187,131,106,255,186,130,105,255,186,129,105,255,184,128,104,255,183,127,103,255,181,127,103,255,180,126,102,255, +179,124,100,255,177,123,100,255,174,121, 99,255,173,120, 97,255,171,119, 96,255,168,117, 94,255,166,115, 93,255,163,114, 92,255, +160,112, 90,255,158,109, 88,255,155,107, 86,255,151,105, 84,255,147,102, 82,255,144, 99, 79,255,140, 96, 78,255,135, 93, 75,255, +132, 90, 72,255,127, 87, 70,255,122, 84, 67,255,118, 80, 64,255,113, 77, 61,255,107, 72, 58,255,101, 69, 54,255, 95, 64, 51,255, + 89, 59, 47,255, 81, 54, 43,255, 73, 48, 38,255, 65, 43, 33,255, 56, 37, 28,255, 49, 31, 23,255, 42, 26, 20,255, 41, 26, 19,255, + 50, 31, 23,255, 32, 23, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,134,108,102,255,202,151,139,255,199,149,137,255,199,149,136,255,199,149,135,255,197,147,133,255,198,147,132,255, +197,147,130,255,196,145,130,255,196,144,129,255,195,144,127,255,195,144,127,255,196,143,127,255,196,143,126,255,195,142,125,255, +195,142,125,255,195,141,124,255,194,141,123,255,194,141,123,255,194,140,122,255,194,140,121,255,195,140,121,255,193,139,120,255, +193,139,119,255,192,139,119,255,192,138,118,255,192,138,117,255,193,137,116,255,191,136,114,255,192,136,113,255,191,135,112,255, +190,134,110,255,189,133,108,255,189,132,106,255,188,131,106,255,187,130,105,255,186,129,105,255,184,128,104,255,182,127,103,255, +181,126,102,255,179,124,101,255,177,124,100,255,175,122, 98,255,173,120, 97,255,171,119, 96,255,168,117, 94,255,166,115, 93,255, +163,113, 92,255,160,111, 90,255,157,109, 88,255,153,106, 86,255,149,103, 83,255,146,101, 82,255,142, 98, 79,255,138, 95, 76,255, +134, 92, 74,255,129, 89, 72,255,125, 86, 69,255,120, 82, 65,255,115, 78, 63,255,110, 75, 59,255,103, 70, 56,255, 97, 66, 52,255, + 91, 62, 48,255, 84, 56, 44,255, 76, 51, 40,255, 68, 45, 35,255, 59, 39, 29,255, 50, 32, 24,255, 43, 27, 20,255, 40, 25, 19,255, + 47, 29, 22,255, 43, 30, 24,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,134,108,103,255,202,152,140,255,200,150,138,255,200,150,137,255,199,149,136,255,198,148,135,255,198,147,133,255, +198,147,132,255,197,146,132,255,197,146,131,255,197,146,130,255,196,145,130,255,196,145,129,255,196,145,128,255,196,145,128,255, +197,144,128,255,197,144,127,255,196,144,127,255,196,143,126,255,196,143,126,255,196,143,125,255,196,143,125,255,195,142,124,255, +195,142,124,255,195,141,124,255,195,141,123,255,194,141,122,255,194,140,121,255,194,139,120,255,193,139,118,255,193,137,117,255, +192,137,115,255,191,136,113,255,191,134,111,255,190,133,109,255,189,132,107,255,187,131,106,255,186,130,106,255,185,129,105,255, +183,128,104,255,182,127,103,255,180,125,101,255,178,124,101,255,175,122, 99,255,173,120, 98,255,171,119, 97,255,168,117, 94,255, +166,115, 93,255,163,113, 91,255,160,111, 89,255,156,108, 87,255,153,106, 86,255,149,103, 83,255,145,100, 81,255,141, 97, 78,255, +136, 94, 76,255,132, 91, 73,255,128, 87, 71,255,123, 84, 68,255,118, 80, 64,255,113, 77, 61,255,107, 72, 57,255,100, 68, 54,255, + 94, 63, 50,255, 87, 59, 46,255, 79, 54, 42,255, 71, 47, 37,255, 61, 40, 31,255, 53, 34, 26,255, 45, 28, 21,255, 40, 25, 18,255, + 44, 28, 21,255, 47, 31, 25,255, 5, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,134,109,103,255,202,152,141,255,200,151,139,255,200,150,138,255,200,150,137,255,199,148,136,255,198,148,134,255, +198,148,134,255,198,147,133,255,197,147,133,255,197,146,132,255,197,146,132,255,197,146,132,255,197,146,131,255,197,146,131,255, +197,146,131,255,196,146,131,255,196,146,131,255,196,146,131,255,196,146,129,255,196,145,129,255,196,145,130,255,196,145,128,255, +196,145,128,255,196,145,128,255,196,144,127,255,196,144,127,255,195,143,126,255,195,143,125,255,195,142,124,255,195,141,122,255, +194,140,121,255,193,139,119,255,193,138,117,255,192,136,115,255,191,135,112,255,190,133,109,255,189,132,107,255,187,130,106,255, +186,129,105,255,184,129,104,255,182,127,102,255,180,126,102,255,178,124,101,255,176,122,100,255,173,120, 97,255,171,119, 96,255, +168,117, 94,255,166,115, 93,255,163,113, 91,255,159,110, 89,255,156,108, 87,255,152,105, 85,255,148,102, 83,255,144, 99, 80,255, +139, 96, 77,255,135, 93, 75,255,130, 89, 72,255,126, 86, 69,255,121, 82, 66,255,115, 79, 63,255,110, 74, 60,255,104, 70, 56,255, + 97, 66, 52,255, 90, 61, 47,255, 83, 56, 44,255, 74, 50, 38,255, 65, 43, 33,255, 55, 36, 28,255, 47, 30, 22,255, 41, 25, 19,255, + 42, 27, 20,255, 49, 32, 25,255, 15, 11, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,134,109,103,255,202,152,141,255,201,151,139,255,200,151,138,255,199,150,138,255,199,150,136,255,200,149,136,255, +199,148,135,255,198,149,135,255,198,148,134,255,198,147,134,255,198,147,134,255,198,147,133,255,198,147,133,255,198,147,133,255, +198,148,133,255,198,148,133,255,198,148,134,255,198,148,134,255,198,148,133,255,199,148,133,255,198,147,133,255,197,147,133,255, +197,147,132,255,197,148,132,255,197,146,132,255,197,146,131,255,198,147,131,255,196,145,129,255,196,145,129,255,197,144,128,255, +195,143,126,255,195,142,125,255,195,141,123,255,193,139,120,255,193,138,117,255,192,137,115,255,191,135,112,255,190,133,108,255, +189,132,107,255,187,130,105,255,185,129,105,255,183,128,104,255,181,126,102,255,178,124,101,255,175,122, 99,255,173,120, 97,255, +171,119, 96,255,167,116, 94,255,165,115, 93,255,161,112, 91,255,158,109, 88,255,154,107, 86,255,150,104, 84,255,146,101, 81,255, +142, 98, 79,255,138, 95, 76,255,133, 92, 73,255,128, 88, 71,255,124, 85, 68,255,119, 81, 65,255,113, 77, 61,255,106, 73, 58,255, +100, 68, 54,255, 93, 63, 50,255, 86, 58, 46,255, 78, 52, 41,255, 68, 45, 35,255, 59, 38, 29,255, 50, 31, 24,255, 42, 26, 19,255, + 40, 25, 18,255, 49, 32, 23,255, 21, 14, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,134,109,103,255,202,153,141,255,200,151,140,255,200,151,139,255,199,151,139,255,200,150,138,255,199,150,137,255, +200,149,136,255,200,149,136,255,200,149,136,255,199,149,136,255,199,149,136,255,199,149,136,255,199,149,137,255,199,149,137,255, +200,150,137,255,200,150,137,255,200,150,137,255,200,150,137,255,200,150,138,255,200,150,137,255,200,150,137,255,200,150,137,255, +200,150,137,255,200,150,137,255,200,150,136,255,199,149,136,255,199,149,136,255,199,148,135,255,199,148,134,255,198,147,133,255, +198,146,131,255,197,145,129,255,196,144,128,255,196,143,126,255,195,141,123,255,194,140,120,255,193,138,118,255,191,136,114,255, +191,134,111,255,189,133,108,255,188,131,106,255,185,129,105,255,183,128,104,255,181,126,102,255,178,124,101,255,176,123,100,255, +174,121, 98,255,170,119, 96,255,167,116, 94,255,164,114, 92,255,161,112, 91,255,157,109, 88,255,154,106, 86,255,149,103, 83,255, +145,100, 81,255,141, 97, 78,255,137, 94, 76,255,131, 91, 73,255,127, 87, 70,255,122, 83, 67,255,116, 79, 63,255,110, 75, 60,255, +103, 71, 56,255, 97, 66, 52,255, 89, 61, 48,255, 81, 54, 43,255, 72, 47, 37,255, 62, 41, 32,255, 53, 34, 25,255, 44, 27, 20,255, + 39, 24, 17,255, 45, 28, 21,255, 39, 29, 24,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,134,109,103,255,202,153,142,255,200,152,140,255,201,151,140,255,200,150,139,255,199,150,138,255,200,150,138,255, +200,150,138,255,200,149,137,255,200,150,137,255,199,150,137,255,199,150,137,255,200,150,138,255,200,150,139,255,200,151,139,255, +200,152,140,255,200,152,140,255,201,152,141,255,201,152,140,255,201,152,141,255,201,152,142,255,201,153,142,255,201,153,142,255, +201,153,142,255,201,153,142,255,201,153,141,255,201,152,141,255,201,152,140,255,201,152,140,255,201,151,139,255,200,150,138,255, +199,150,137,255,199,148,135,255,198,148,133,255,198,146,132,255,197,145,129,255,196,143,126,255,195,142,124,255,194,140,120,255, +192,138,116,255,192,135,112,255,190,133,108,255,188,131,107,255,186,130,105,255,183,128,103,255,182,126,102,255,178,125,101,255, +176,123,100,255,174,120, 97,255,170,119, 96,255,167,116, 94,255,164,114, 92,255,161,111, 90,255,157,108, 88,255,152,106, 85,255, +148,103, 83,255,144, 99, 80,255,139, 96, 77,255,135, 92, 74,255,130, 89, 72,255,124, 85, 69,255,119, 81, 65,255,113, 77, 62,255, +107, 73, 58,255,100, 68, 54,255, 93, 63, 50,255, 84, 57, 45,255, 76, 50, 40,255, 66, 43, 34,255, 56, 36, 28,255, 46, 29, 22,255, + 40, 25, 17,255, 42, 26, 19,255, 48, 33, 26,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,134,109,104,255,202,153,142,255,201,153,140,255,201,152,140,255,200,152,140,255,200,151,139,255,200,150,138,255, +199,150,138,255,199,151,139,255,199,151,139,255,200,151,138,255,201,151,140,255,201,152,140,255,201,152,141,255,200,153,142,255, +201,153,143,255,202,154,143,255,202,154,144,255,202,155,144,255,202,155,145,255,203,154,145,255,203,155,146,255,203,156,146,255, +203,156,146,255,203,156,146,255,203,156,146,255,203,156,146,255,203,155,145,255,203,155,145,255,202,154,144,255,202,154,143,255, +202,152,142,255,201,152,141,255,201,151,139,255,199,149,137,255,199,148,134,255,198,147,132,255,197,145,129,255,196,143,126,255, +195,141,123,255,193,139,119,255,192,136,114,255,191,134,110,255,188,132,107,255,187,130,106,255,185,129,105,255,181,126,102,255, +179,125,101,255,175,123, 99,255,173,120, 97,255,170,118, 96,255,166,115, 93,255,163,114, 92,255,159,110, 89,255,155,108, 87,255, +151,105, 85,255,147,101, 82,255,143, 98, 79,255,138, 95, 76,255,133, 91, 73,255,128, 87, 70,255,123, 84, 67,255,116, 80, 64,255, +111, 76, 60,255,104, 70, 56,255, 96, 66, 52,255, 89, 60, 48,255, 80, 53, 42,255, 70, 46, 36,255, 60, 39, 30,255, 50, 32, 24,255, + 41, 26, 19,255, 40, 24, 18,255, 53, 35, 27,255, 10, 8, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,134,109,103,255,202,153,142,255,201,151,140,255,200,151,140,255,201,151,140,255,201,152,140,255,200,151,139,255, +200,151,139,255,200,152,140,255,200,152,140,255,201,152,140,255,200,152,140,255,201,153,141,255,202,153,142,255,202,154,143,255, +202,154,145,255,203,155,145,255,203,155,146,255,203,156,147,255,203,156,147,255,204,157,148,255,204,157,149,255,204,157,149,255, +204,158,150,255,204,158,150,255,205,158,150,255,205,158,150,255,204,158,150,255,204,157,149,255,204,157,149,255,204,156,148,255, +204,156,146,255,203,155,145,255,202,154,144,255,202,153,143,255,201,152,140,255,200,150,138,255,199,148,136,255,198,147,132,255, +197,145,129,255,196,143,125,255,194,140,120,255,193,138,116,255,191,135,111,255,189,132,107,255,187,130,106,255,184,128,104,255, +181,126,102,255,179,125,101,255,176,122, 99,255,173,120, 97,255,169,118, 95,255,166,115, 94,255,163,113, 92,255,158,110, 89,255, +155,107, 86,255,151,104, 84,255,146,101, 81,255,141, 97, 78,255,136, 94, 75,255,131, 90, 72,255,126, 87, 69,255,120, 83, 66,255, +114, 79, 62,255,107, 73, 59,255,100, 69, 54,255, 93, 63, 49,255, 84, 57, 44,255, 74, 50, 39,255, 64, 42, 32,255, 53, 34, 26,255, + 44, 27, 20,255, 39, 24, 18,255, 45, 28, 20,255, 41, 32, 27,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,134,109,103,255,202,153,142,255,201,152,140,255,201,151,140,255,200,152,140,255,200,151,139,255,200,152,140,255, +201,152,140,255,201,151,140,255,201,151,140,255,200,153,140,255,201,152,141,255,201,153,143,255,201,154,144,255,202,155,144,255, +202,155,146,255,203,156,147,255,203,156,148,255,204,158,150,255,204,158,151,255,204,158,151,255,205,159,152,255,205,160,152,255, +205,160,153,255,205,160,154,255,206,161,154,255,206,161,154,255,206,161,154,255,206,161,154,255,206,160,153,255,206,160,152,255, +205,160,151,255,205,158,150,255,204,158,150,255,204,156,147,255,203,155,146,255,202,154,144,255,201,152,141,255,200,151,138,255, +199,149,134,255,198,146,132,255,196,144,127,255,195,141,122,255,193,138,118,255,191,135,112,255,189,132,108,255,187,130,106,255, +184,128,104,255,182,126,102,255,179,124,101,255,175,122, 99,255,173,120, 97,255,169,117, 95,255,166,115, 93,255,162,113, 91,255, +158,109, 88,255,154,106, 86,255,149,103, 83,255,144,100, 80,255,139, 97, 77,255,134, 93, 75,255,129, 90, 71,255,124, 85, 68,255, +118, 81, 64,255,111, 76, 61,255,104, 71, 56,255, 97, 66, 52,255, 89, 60, 48,255, 79, 53, 41,255, 69, 46, 36,255, 58, 37, 29,255, + 47, 29, 22,255, 39, 25, 18,255, 42, 26, 19,255, 52, 35, 27,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,134,109,103,255,202,153,141,255,200,151,140,255,199,152,139,255,199,152,140,255,200,150,140,255,199,150,140,255, +199,151,140,255,201,151,140,255,201,151,140,255,200,152,141,255,201,153,143,255,202,154,143,255,202,154,146,255,203,156,146,255, +203,156,147,255,204,157,149,255,205,158,150,255,204,158,151,255,206,160,153,255,206,160,154,255,205,161,154,255,207,162,156,255, +206,162,156,255,207,163,157,255,208,163,157,255,208,163,158,255,208,163,158,255,208,163,158,255,208,163,157,255,207,163,157,255, +207,162,156,255,207,162,155,255,207,161,154,255,206,160,152,255,205,159,151,255,205,158,149,255,203,156,146,255,203,154,145,255, +202,153,141,255,200,150,137,255,199,147,134,255,197,145,129,255,195,142,125,255,194,139,119,255,192,136,114,255,190,133,109,255, +187,131,106,255,185,129,105,255,182,127,102,255,178,124,101,255,176,122, 99,255,172,120, 97,255,168,117, 95,255,165,114, 92,255, +161,112, 91,255,157,109, 88,255,153,105, 85,255,148,103, 83,255,143, 99, 80,255,138, 95, 76,255,133, 92, 74,255,127, 88, 70,255, +122, 84, 66,255,116, 79, 63,255,108, 74, 59,255,102, 69, 55,255, 93, 63, 50,255, 84, 56, 44,255, 74, 49, 38,255, 63, 41, 32,255, + 51, 33, 25,255, 41, 26, 18,255, 39, 24, 18,255, 50, 32, 24,255, 12, 9, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,134,108,102,255,202,152,140,255,200,151,139,255,199,151,139,255,200,151,139,255,200,151,139,255,200,151,139,255, +200,151,139,255,200,152,140,255,200,152,140,255,200,153,142,255,201,153,143,255,202,154,144,255,203,154,146,255,203,156,147,255, +203,156,148,255,203,158,149,255,205,159,151,255,205,160,153,255,205,161,154,255,207,162,155,255,207,162,157,255,208,163,158,255, +208,164,159,255,208,164,160,255,208,164,160,255,209,165,161,255,209,165,161,255,209,165,161,255,209,165,162,255,209,165,161,255, +209,165,161,255,209,165,160,255,208,164,159,255,208,163,158,255,207,162,156,255,206,161,154,255,206,159,152,255,205,158,150,255, +203,156,147,255,202,154,143,255,201,151,140,255,199,150,136,255,198,146,131,255,196,143,126,255,194,140,121,255,192,137,115,255, +191,133,110,255,188,131,106,255,185,129,104,255,181,127,103,255,178,124,101,255,175,122, 99,255,171,120, 97,255,168,117, 95,255, +165,115, 92,255,160,112, 90,255,156,108, 87,255,152,105, 84,255,146,102, 82,255,142, 98, 79,255,137, 94, 76,255,131, 91, 73,255, +125, 87, 69,255,120, 82, 66,255,113, 78, 62,255,106, 73, 58,255, 98, 67, 53,255, 89, 60, 48,255, 79, 53, 42,255, 68, 45, 35,255, + 57, 36, 28,255, 45, 29, 21,255, 39, 24, 17,255, 45, 28, 21,255, 32, 22, 18,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,133,108,102,255,201,152,139,255,200,150,138,255,199,150,138,255,200,150,138,255,200,150,138,255,200,150,138,255, +200,150,139,255,200,151,139,255,201,151,139,255,201,152,141,255,201,153,142,255,201,153,143,255,203,154,145,255,202,156,147,255, +203,157,149,255,204,158,150,255,205,159,152,255,205,160,154,255,206,161,155,255,207,162,157,255,207,163,158,255,208,164,160,255, +209,165,161,255,209,166,162,255,209,166,163,255,210,167,164,255,210,167,164,255,210,167,165,255,210,168,165,255,210,168,165,255, +210,168,165,255,210,167,164,255,210,167,164,255,209,167,163,255,209,165,161,255,208,164,160,255,208,163,158,255,207,161,155,255, +205,160,153,255,205,158,150,255,203,155,145,255,202,154,142,255,201,151,138,255,198,147,133,255,197,145,128,255,195,141,123,255, +193,138,116,255,191,134,110,255,188,131,106,255,185,129,104,255,182,127,103,255,178,124,100,255,174,122, 98,255,171,120, 97,255, +168,116, 94,255,164,113, 92,255,160,111, 90,255,155,108, 87,255,151,104, 85,255,145,101, 81,255,141, 97, 78,255,135, 93, 75,255, +130, 89, 71,255,124, 85, 68,255,117, 80, 64,255,110, 75, 60,255,102, 70, 56,255, 94, 63, 50,255, 85, 57, 45,255, 73, 49, 38,255, + 62, 40, 31,255, 50, 32, 24,255, 40, 25, 18,255, 41, 26, 19,255, 43, 29, 22,255, 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,133,107,101,255,201,150,138,255,199,149,136,255,199,149,136,255,199,149,136,255,199,149,136,255,199,149,136,255, +199,149,137,255,199,150,138,255,199,150,138,255,199,151,139,255,200,152,141,255,201,153,142,255,201,154,144,255,203,156,146,255, +204,157,148,255,203,157,150,255,205,159,152,255,205,160,154,255,207,162,156,255,207,163,158,255,207,164,159,255,209,165,161,255, +209,166,163,255,209,167,164,255,211,168,165,255,210,169,166,255,211,169,167,255,212,170,168,255,212,170,168,255,212,171,168,255, +212,170,169,255,212,170,168,255,212,170,167,255,212,170,167,255,211,169,165,255,211,168,164,255,209,166,163,255,209,165,161,255, +208,163,158,255,207,161,155,255,205,160,152,255,204,157,148,255,202,154,145,255,201,152,139,255,200,149,135,255,197,146,130,255, +195,143,124,255,193,138,118,255,191,135,111,255,188,131,107,255,186,130,105,255,182,127,103,255,178,124,100,255,175,121, 98,255, +171,119, 96,255,167,116, 94,255,163,113, 91,255,159,110, 89,255,155,107, 86,255,149,103, 83,255,145,100, 81,255,139, 96, 77,255, +134, 92, 74,255,128, 88, 71,255,121, 84, 67,255,115, 79, 63,255,108, 73, 58,255,100, 67, 54,255, 89, 61, 48,255, 79, 53, 42,255, + 68, 44, 34,255, 56, 36, 27,255, 43, 27, 20,255, 38, 23, 17,255, 46, 29, 22,255, 12, 9, 7,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,132,107, 99,255,199,149,134,255,197,147,133,255,198,147,133,255,198,147,133,255,198,148,133,255,198,148,134,255, +198,148,135,255,198,148,135,255,199,149,136,255,199,150,138,255,199,151,139,255,200,152,140,255,201,153,142,255,202,154,144,255, +203,156,146,255,204,157,149,255,205,159,151,255,205,160,153,255,206,161,155,255,207,162,158,255,208,164,160,255,209,166,162,255, +210,167,163,255,210,168,165,255,211,169,166,255,211,169,167,255,211,170,169,255,212,171,169,255,212,171,170,255,213,172,171,255, +213,172,171,255,213,172,172,255,213,172,171,255,213,172,170,255,212,171,169,255,212,170,169,255,212,170,167,255,211,168,165,255, +210,167,163,255,209,165,161,255,208,163,158,255,206,161,155,255,205,159,151,255,204,156,147,255,201,153,142,255,200,150,137,255, +198,146,132,255,196,143,126,255,194,139,119,255,191,135,112,255,189,131,107,255,186,130,105,255,182,127,103,255,178,124,100,255, +174,122, 99,255,171,119, 96,255,167,116, 94,255,163,113, 91,255,159,110, 89,255,154,106, 86,255,149,103, 83,255,144, 99, 80,255, +138, 95, 77,255,132, 92, 73,255,126, 87, 70,255,120, 82, 66,255,113, 77, 61,255,104, 71, 57,255, 96, 65, 51,255, 85, 57, 45,255, + 74, 49, 38,255, 61, 40, 31,255, 49, 31, 23,255, 39, 24, 17,255, 45, 29, 22,255, 24, 17, 14,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 61,255,132,105, 97,255,198,146,131,255,197,145,129,255,197,145,129,255,197,145,129,255,197,145,129,255,197,146,130,255, +197,146,130,255,197,146,132,255,197,147,133,255,198,148,134,255,199,149,136,255,199,150,137,255,200,151,139,255,201,152,142,255, +202,154,144,255,203,156,146,255,203,157,149,255,204,159,151,255,206,160,153,255,206,162,156,255,207,164,158,255,208,165,161,255, +209,166,163,255,210,168,165,255,211,169,167,255,212,170,168,255,212,171,169,255,213,172,171,255,213,173,172,255,213,173,173,255, +214,173,173,255,214,174,174,255,214,174,174,255,214,174,174,255,214,174,173,255,213,173,173,255,213,172,172,255,213,172,170,255, +212,170,168,255,211,169,166,255,210,167,163,255,209,165,161,255,208,163,157,255,206,160,152,255,204,158,148,255,203,154,144,255, +201,151,139,255,199,148,133,255,197,144,127,255,195,140,121,255,192,136,114,255,189,132,108,255,186,130,105,255,183,127,103,255, +178,124,101,255,175,122, 98,255,171,119, 96,255,168,116, 94,255,163,113, 91,255,158,110, 89,255,153,106, 86,255,148,103, 82,255, +143, 98, 80,255,137, 94, 76,255,131, 90, 72,255,125, 85, 68,255,118, 81, 64,255,109, 75, 59,255,101, 69, 55,255, 91, 61, 49,255, + 80, 54, 42,255, 68, 45, 35,255, 55, 35, 27,255, 43, 26, 19,255, 40, 25, 18,255, 42, 30, 24,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,131,103, 94,255,196,143,126,255,195,142,124,255,194,141,124,255,194,142,124,255,195,142,124,255,195,142,125,255, +195,142,125,255,195,142,126,255,196,143,127,255,196,144,129,255,197,145,130,255,197,147,132,255,198,148,134,255,199,150,137,255, +200,151,139,255,200,152,142,255,202,155,145,255,203,156,147,255,204,157,150,255,205,160,153,255,206,161,156,255,207,163,158,255, +208,165,160,255,209,166,163,255,210,168,165,255,211,169,167,255,211,170,169,255,213,172,172,255,214,173,173,255,213,173,174,255, +215,175,175,255,214,176,176,255,215,176,176,255,216,176,177,255,216,176,177,255,215,176,176,255,215,175,175,255,214,174,174,255, +214,174,172,255,213,172,171,255,212,171,169,255,211,169,166,255,210,166,163,255,208,165,159,255,207,162,155,255,205,159,151,255, +203,156,146,255,201,152,141,255,199,148,135,255,197,145,129,255,195,141,123,255,192,137,115,255,190,133,109,255,187,130,106,255, +183,127,103,255,179,124,101,255,175,122, 98,255,171,119, 96,255,167,116, 94,255,162,112, 91,255,157,109, 88,255,153,106, 85,255, +147,102, 82,255,142, 98, 79,255,135, 93, 75,255,130, 89, 71,255,123, 84, 67,255,116, 79, 63,255,106, 73, 58,255, 97, 66, 52,255, + 86, 58, 46,255, 75, 50, 38,255, 62, 40, 31,255, 48, 30, 23,255, 39, 24, 17,255, 54, 37, 30,255, 3, 2, 2,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,129,101, 91,255,193,137,118,255,192,137,117,255,192,137,117,255,192,137,116,255,192,137,117,255,192,137,117,255, +192,138,117,255,192,138,118,255,193,138,119,255,193,139,120,255,194,140,121,255,194,141,124,255,195,142,125,255,196,144,128,255, +196,146,130,255,197,148,133,255,199,149,136,255,200,151,140,255,201,154,143,255,203,156,146,255,204,158,150,255,205,159,153,255, +206,162,156,255,207,164,159,255,209,166,162,255,210,167,165,255,211,169,167,255,212,171,169,255,213,173,171,255,213,174,174,255, +214,175,175,255,214,176,176,255,215,176,177,255,215,177,178,255,216,177,179,255,216,177,179,255,216,177,178,255,216,177,177,255, +215,176,176,255,215,175,175,255,214,174,173,255,213,172,171,255,212,170,168,255,211,169,165,255,209,166,162,255,208,163,158,255, +206,160,153,255,204,157,148,255,202,153,143,255,200,150,138,255,197,146,131,255,196,142,125,255,193,138,117,255,190,134,110,255, +187,131,106,255,183,128,104,255,180,125,101,255,176,122, 98,255,172,119, 96,255,167,116, 94,255,162,113, 91,255,157,109, 88,255, +152,105, 85,255,147,101, 82,255,140, 97, 78,255,134, 93, 74,255,128, 88, 71,255,120, 83, 66,255,113, 77, 62,255,103, 70, 56,255, + 94, 63, 50,255, 82, 55, 43,255, 69, 45, 35,255, 54, 35, 27,255, 42, 26, 19,255, 46, 28, 21,255, 21, 16, 14,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,127, 98, 86,255,188,132,108,255,187,131,108,255,187,131,108,255,187,131,108,255,187,131,108,255,187,131,108,255, +187,132,108,255,188,132,108,255,189,132,109,255,189,133,109,255,189,133,110,255,189,134,111,255,191,135,112,255,191,135,115,255, +192,138,118,255,192,139,121,255,194,142,124,255,195,144,127,255,196,146,132,255,199,149,136,255,200,151,141,255,201,154,144,255, +202,156,148,255,205,159,152,255,206,162,155,255,207,164,159,255,209,167,163,255,210,168,166,255,211,170,169,255,213,172,172,255, +214,174,173,255,214,175,175,255,215,176,177,255,216,177,179,255,216,178,179,255,217,178,180,255,217,178,180,255,216,178,180,255, +216,178,180,255,216,177,179,255,215,176,177,255,215,175,175,255,214,174,173,255,213,172,170,255,212,170,168,255,211,167,164,255, +209,165,160,255,207,162,155,255,205,159,150,255,203,155,145,255,201,152,139,255,199,148,133,255,196,143,127,255,194,139,119,255, +191,134,111,255,188,131,106,255,183,128,104,255,179,125,101,255,175,122, 98,255,171,120, 97,255,167,116, 94,255,162,113, 90,255, +157,109, 88,255,152,105, 85,255,146,101, 81,255,140, 96, 77,255,134, 92, 73,255,126, 86, 69,255,118, 81, 65,255,110, 75, 60,255, + 99, 67, 53,255, 89, 60, 47,255, 76, 50, 39,255, 61, 40, 30,255, 47, 30, 22,255, 42, 26, 19,255, 42, 29, 24,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,123, 95, 83,255,181,126,102,255,180,126,102,255,179,125,101,255,179,125,101,255,179,125,101,255,179,125,101,255, +179,125,101,255,179,125,101,255,179,124,101,255,179,124,101,255,180,126,102,255,180,125,101,255,180,125,102,255,181,126,102,255, +183,127,103,255,184,128,104,255,185,129,106,255,186,131,109,255,189,134,113,255,191,137,117,255,193,140,122,255,196,144,128,255, +198,148,134,255,200,151,139,255,202,154,144,255,204,157,149,255,205,160,154,255,207,163,158,255,209,166,162,255,211,169,166,255, +212,170,169,255,213,173,172,255,214,175,175,255,215,175,176,255,216,177,178,255,217,178,180,255,216,178,182,255,217,179,182,255, +218,180,182,255,217,179,182,255,217,179,180,255,217,178,179,255,216,176,177,255,215,175,175,255,214,173,173,255,212,171,170,255, +211,169,166,255,210,167,162,255,208,163,158,255,206,160,153,255,204,156,147,255,201,153,141,255,199,149,135,255,197,145,129,255, +194,140,121,255,191,136,114,255,189,132,107,255,185,129,104,255,181,125,102,255,176,123, 99,255,172,120, 97,255,167,116, 94,255, +162,112, 90,255,157,108, 88,255,152,105, 84,255,145,100, 81,255,139, 96, 77,255,132, 90, 73,255,124, 85, 68,255,116, 79, 63,255, +107, 72, 57,255, 96, 64, 52,255, 84, 56, 44,255, 69, 45, 35,255, 53, 35, 26,255, 42, 26, 19,255, 53, 35, 28,255, 4, 4, 4,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 61, 61, 61,255, 80, 65, 59,255,103, 74, 60,255,108, 75, 62,255,113, 79, 65,255,121, 85, 70,255,121, 85, 70,255,121, 84, 70,255, +121, 84, 70,255,120, 85, 70,255,115, 82, 67,255,113, 80, 65,255,107, 75, 62,255,105, 74, 61,255, 98, 69, 57,255, 97, 69, 56,255, + 94, 66, 54,255, 95, 67, 56,255, 91, 64, 53,255, 92, 65, 53,255, 98, 69, 57,255,100, 70, 57,255,110, 78, 64,255,120, 85, 71,255, +138, 98, 83,255,152,109, 94,255,168,123,107,255,188,138,122,255,197,146,132,255,201,152,140,255,204,157,148,255,206,161,155,255, +207,164,159,255,210,168,165,255,212,171,169,255,213,173,173,255,214,175,176,255,216,177,178,255,216,178,180,255,217,179,181,255, +218,180,182,255,218,180,183,255,218,180,182,255,218,180,182,255,217,179,181,255,216,178,179,255,215,177,177,255,215,174,175,255, +214,172,172,255,213,170,168,255,210,168,165,255,209,165,161,255,207,161,155,255,205,158,150,255,202,154,144,255,200,151,138,255, +198,146,131,255,195,142,123,255,193,137,116,255,189,133,108,255,186,129,105,255,181,127,102,255,176,123, 99,255,173,120, 97,255, +168,116, 94,255,162,112, 91,255,157,108, 88,255,151,104, 84,255,145,100, 80,255,137, 94, 76,255,130, 89, 72,255,122, 84, 67,255, +113, 77, 61,255,103, 70, 56,255, 91, 62, 49,255, 77, 51, 40,255, 61, 40, 31,255, 46, 29, 22,255, 45, 28, 21,255, 17, 13, 11,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 29, 29, 29,255, 1, 1, 1,255, 3, 2, 2,255, 4, 3, 3,255, 6, 5, 4,255, 6, 5, 4,255, 6, 4, 4,255, + 6, 4, 4,255, 6, 5, 4,255, 5, 4, 3,255, 4, 3, 3,255, 3, 2, 2,255, 2, 2, 2,255, 1, 1, 1,255, 0, 1, 1,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 2, 1, 1,255, 4, 3, 2,255, + 8, 6, 5,255, 11, 8, 6,255, 15, 11, 9,255, 21, 15, 13,255, 40, 29, 26,255, 82, 61, 53,255,130, 97, 85,255,185,138,122,255, +200,150,137,255,204,156,147,255,207,162,157,255,208,165,162,255,211,170,168,255,213,173,172,255,214,175,176,255,215,177,179,255, +217,179,181,255,218,180,182,255,218,181,183,255,218,181,183,255,217,180,183,255,217,180,182,255,217,179,181,255,216,178,179,255, +216,176,177,255,214,174,174,255,213,172,171,255,211,170,167,255,210,167,163,255,208,164,158,255,206,160,153,255,203,156,146,255, +201,152,140,255,199,147,133,255,196,143,126,255,193,138,117,255,190,133,110,255,186,130,105,255,182,127,103,255,177,123,100,255, +172,121, 97,255,168,116, 94,255,162,112, 91,255,157,108, 87,255,150,104, 83,255,143, 99, 80,255,136, 94, 75,255,128, 88, 71,255, +119, 82, 65,255,110, 75, 60,255, 98, 67, 53,255, 86, 57, 45,255, 70, 46, 36,255, 52, 34, 26,255, 43, 27, 20,255, 29, 20, 16,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 16, 12, 11,255, 83, 62, 54,255,147,110, 99,255,180,136,126,255,196,152,144,255,207,163,158,255,210,168,165,255,213,172,171,255, +213,174,174,255,215,176,179,255,217,179,181,255,217,180,183,255,219,180,183,255,219,181,184,255,218,181,183,255,218,180,183,255, +217,179,181,255,217,177,179,255,215,176,176,255,214,174,173,255,213,171,169,255,211,168,165,255,209,165,161,255,207,162,155,255, +204,157,149,255,202,154,143,255,200,149,136,255,197,144,129,255,194,140,120,255,191,134,111,255,187,131,106,255,182,127,103,255, +178,124,101,255,173,120, 98,255,168,116, 94,255,162,112, 91,255,156,108, 87,255,150,103, 83,255,142, 98, 79,255,135, 93, 75,255, +126, 87, 69,255,117, 80, 64,255,106, 72, 57,255, 93, 64, 50,255, 78, 53, 41,255, 60, 40, 30,255, 46, 29, 22,255, 37, 24, 19,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 5, 4, 3,255, 55, 41, 36,255,102, 78, 72,255,158,122,115,255,199,155,148,255, +210,166,162,255,213,171,170,255,213,173,174,255,216,177,179,255,217,179,182,255,218,180,183,255,218,181,184,255,219,181,183,255, +218,180,183,255,217,180,182,255,217,178,181,255,216,177,178,255,215,175,176,255,213,173,172,255,212,170,168,255,210,167,163,255, +208,163,158,255,205,159,152,255,203,155,146,255,201,151,138,255,198,146,131,255,195,141,123,255,192,136,114,255,188,131,107,255, +183,128,104,255,178,124,100,255,173,120, 98,255,168,116, 94,255,162,112, 91,255,156,108, 87,255,149,103, 83,255,141, 97, 79,255, +133, 91, 73,255,123, 85, 68,255,113, 78, 62,255,101, 69, 54,255, 87, 58, 46,255, 68, 45, 35,255, 51, 32, 24,255, 41, 28, 22,255, + 7, 7, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 9, 7, 6,255, 25, 19, 18,255, + 99, 76, 70,255,183,141,132,255,209,164,158,255,211,170,168,255,213,172,172,255,216,177,179,255,217,179,181,255,218,180,183,255, +218,181,184,255,218,181,183,255,218,180,183,255,217,180,182,255,217,178,180,255,216,176,177,255,214,174,174,255,213,172,171,255, +211,169,166,255,209,166,161,255,207,162,155,255,204,157,148,255,201,152,141,255,199,147,134,255,196,143,125,255,193,137,115,255, +189,132,108,255,184,129,104,255,179,125,101,255,174,120, 98,255,168,116, 95,255,161,112, 90,255,155,107, 86,255,147,102, 82,255, +139, 96, 77,255,131, 90, 72,255,121, 83, 66,255,108, 74, 59,255, 94, 63, 50,255, 76, 51, 40,255, 57, 37, 28,255, 42, 27, 20,255, + 9, 8, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 42, 31, 28,255,145,112,105,255,188,147,142,255,207,165,162,255,214,173,172,255,215,176,177,255, +216,178,180,255,217,180,183,255,218,180,183,255,219,181,184,255,218,181,183,255,217,180,182,255,217,178,180,255,216,176,176,255, +214,173,173,255,212,171,169,255,210,167,164,255,208,164,158,255,206,159,152,255,203,154,144,255,200,150,137,255,197,144,128,255, +194,139,118,255,190,133,109,255,185,129,104,255,180,126,101,255,174,121, 98,255,168,116, 94,255,161,112, 90,255,154,107, 86,255, +146,102, 81,255,138, 95, 76,255,128, 88, 70,255,116, 80, 63,255,102, 69, 55,255, 84, 57, 45,255, 64, 41, 32,255, 49, 34, 28,255, + 13, 12, 12,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 25, 19, 17,255, 78, 60, 57,255,146,115,110,255,198,157,152,255, +214,172,171,255,215,176,177,255,215,177,179,255,218,180,183,255,218,181,183,255,219,181,184,255,218,180,183,255,217,179,181,255, +216,177,179,255,215,175,176,255,213,173,171,255,211,169,167,255,209,165,161,255,207,161,155,255,204,157,148,255,202,152,140,255, +198,146,131,255,194,141,121,255,191,135,111,255,185,130,105,255,180,125,101,255,174,121, 98,255,168,116, 94,255,161,112, 91,255, +154,106, 85,255,144,101, 81,255,134, 93, 74,255,123, 84, 67,255,109, 74, 59,255, 92, 62, 49,255, 71, 46, 36,255, 48, 33, 27,255, + 11, 10, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 6, 4, 4,255, 25, 20, 18,255, +111, 86, 81,255,200,156,149,255,212,170,167,255,214,175,175,255,216,177,179,255,217,179,182,255,218,180,184,255,218,180,183,255, +218,180,182,255,217,179,180,255,216,176,178,255,214,174,174,255,212,171,170,255,210,168,164,255,208,163,157,255,206,158,151,255, +202,154,143,255,199,148,134,255,196,142,124,255,191,136,113,255,187,130,106,255,181,126,101,255,174,121, 99,255,167,116, 94,255, +160,111, 89,255,151,105, 84,255,142, 98, 79,255,129, 89, 71,255,116, 80, 64,255, 99, 66, 53,255, 76, 51, 39,255, 46, 30, 23,255, + 5, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 89, 68, 64,255,163,127,121,255,196,157,154,255,212,171,170,255,216,177,177,255,216,178,180,255, +217,180,182,255,218,180,183,255,218,180,182,255,216,178,179,255,215,176,176,255,214,173,171,255,211,169,167,255,208,165,161,255, +207,161,154,255,203,156,146,255,200,150,137,255,197,144,128,255,192,136,116,255,187,131,106,255,181,126,102,255,174,121, 97,255, +167,115, 93,255,158,110, 88,255,149,102, 83,255,137, 95, 77,255,123, 84, 67,255,105, 71, 57,255, 81, 54, 42,255, 40, 25, 19,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 46, 36, 33,255, 99, 77, 74,255,177,140,135,255,212,169,166,255, +215,175,175,255,217,178,180,255,217,179,181,255,217,179,181,255,217,178,180,255,216,177,177,255,214,174,174,255,212,170,169,255, +209,166,163,255,207,162,156,255,205,157,149,255,201,152,139,255,197,145,129,255,192,138,117,255,187,131,106,255,181,125,102,255, +173,120, 98,255,165,114, 92,255,155,108, 87,255,144,100, 80,255,129, 88, 71,255,109, 74, 59,255, 82, 55, 43,255, 22, 15, 13,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 0, 0,255, 5, 4, 4,255, 35, 27, 25,255, +140,110,105,255,207,164,160,255,213,172,172,255,214,175,176,255,216,177,179,255,216,177,180,255,216,176,178,255,215,175,175,255, +212,171,171,255,210,168,165,255,208,164,159,255,205,158,151,255,201,152,141,255,197,146,131,255,192,138,116,255,186,131,106,255, +180,125,101,255,170,118, 95,255,160,111, 90,255,149,103, 83,255,132, 91, 74,255,111, 75, 60,255, 73, 51, 42,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 22, 18, 17,255, 95, 74, 69,255,165,131,126,255,192,154,151,255,212,171,170,255,215,175,175,255,214,175,176,255, +213,173,172,255,212,171,169,255,210,168,164,255,208,164,158,255,204,158,149,255,200,151,140,255,196,144,128,255,190,135,113,255, +184,128,104,255,175,122, 99,255,165,114, 92,255,151,105, 85,255,134, 92, 74,255, 97, 67, 54,255, 12, 9, 8,255, 0, 0, 0,255, + 0, 0, 0,255, 22, 35, 45,255, 13, 20, 26,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 36, 27, 25,255, 78, 62, 59,255,140,110,106,255,200,158,153,255, +212,169,166,255,213,171,169,255,210,169,166,255,208,164,160,255,206,161,154,255,202,155,145,255,198,148,135,255,193,139,119,255, +186,130,105,255,176,123,100,255,166,115, 93,255,150,104, 83,255,100, 71, 57,255, 19, 14, 11,255, 0, 0, 0,255, 0, 0, 0,255, + 32, 51, 65,255,110,174,223,255, 73,115,148,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 2, 1, 1,255, 5, 4, 4,255, + 72, 56, 52,255,142,111,104,255,192,148,138,255,203,156,147,255,203,155,146,255,200,151,139,255,196,143,127,255,191,135,114,255, +182,126,102,255,170,118, 96,255,127, 88, 72,255, 47, 33, 27,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 23, 36, 46,255, +110,173,221,255,118,186,238,255,115,180,231,255, 25, 40, 51,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 12, 10, 8,255, 52, 39, 34,255, 65, 47, 39,255, 69, 49, 40,255, 67, 47, 39,255, + 47, 33, 27,255, 7, 5, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 21, 34, 43,255,110,174,222,255, +117,185,237,255,118,185,237,255,117,185,237,255, 93,147,189,255, 1, 1, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 46, 59,255,109,171,219,255,118,186,237,255, +118,185,237,255,118,186,238,255,118,185,237,255,118,185,238,255, 62, 98,126,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 21, 33, 42,255,108,171,217,255,117,186,238,255,118,185,237,255, +118,186,238,255,118,186,238,255,118,185,237,255,118,186,238,255,116,181,233,255, 25, 38, 49,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 17, 26, 34,255, 81,127,163,255,117,184,234,255,117,185,238,255, +118,185,237,255,118,186,238,255,118,186,238,255,118,186,238,255,118,186,238,255, 87,137,176,255, 3, 5, 7,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 2,255, 31, 49, 63,255, 99,156,199,255, +118,185,237,255,118,185,237,255,118,186,238,255,118,186,238,255,117,186,238,255,118,186,238,255, 42, 65, 84,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 3, 4, 6,255, + 69,109,140,255,118,184,237,255,118,186,237,255,118,185,238,255,118,186,238,255,118,185,238,255,115,182,232,255, 3, 5, 6,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 46, 60,255, 93,145,187,255,118,186,237,255,118,186,238,255,118,185,237,255,117,185,237,255, 84,132,169,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 5, 7, 9,255, 46, 74, 94,255,118,184,237,255,117,186,237,255,118,185,237,255,118,185,236,255, + 43, 68, 87,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 5, 9, 11,255, 88,138,177,255,117,186,237,255,117,185,238,255, + 98,154,196,255, 10, 16, 20,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 47, 75, 96,255,100,158,202,255, +117,185,238,255, 61, 96,123,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 12, 19, 24,255, + 64,102,130,255,117,185,238,255, 25, 40, 51,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 27, 43, 55,255, 94,148,190,255, 1, 1, 2,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 1, 1, 2,255, 14, 22, 28,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, + 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 73, 77, 0, 0,156, 1, 0, 0,240,168, 97, 7, 31, 0, 0, 0, 1, 0, 0, 0, 72, 76, 98, 7,152, 5, 97, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 73, 77, 46,105, 46,105,110,102,108, 97,116,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46, +105,110,102,108, 97,116,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,170, 97, 7, 0, 0, 0, 0,237, 71, 42, 0, + 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,240,170, 97, 7, 19, 0, 0, 0, + 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,120,171, 97, 7, +224,187, 97, 7, 68, 65, 84, 65, 0, 16, 0, 0,120,171, 97, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0, +224,187, 97, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 61, 60, 60,255, 61, 61, 60,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 62, 62, 62,255, 61, 61, 61,255, 94, 94, 95,255,124,125,127,255,123,125,126,255,123,125,126,255, +123,124,126,255,123,124,126,255,123,124,126,255,123,124,125,255,123,124,125,255,122,124,125,255,122,124,125,255,122,123,125,255, +122,123,124,255,122,123,124,255,122,123,124,255,121,123,124,255,121,122,124,255,121,122,124,255,121,122,123,255,121,122,123,255, +121,122,123,255,120,121,122,255,120,121,122,255,120,121,122,255,120,121,122,255,120,121,122,255,119,120,122,255,119,120,121,255, +119,120,121,255,119,120,121,255,119,120,121,255,118,119,120,255,118,119,120,255,118,119,120,255,118,119,120,255,117,118,119,255, +117,118,119,255,117,118,119,255,116,118,119,255,117,118,119,255,117,117,118,255,116,117,118,255,115,117,118,255,116,117,117,255, +115,116,117,255,115,116,117,255,115,115,117,255,114,116,116,255,114,115,116,255,114,115,115,255,114,114,116,255,113,114,115,255, +113,114,114,255,113,114,115,255,113,113,114,255,112,113,114,255,112,113,113,255,112,112,113,255,111,112,113,255,111,112,112,255, +111,111,112,255,111,111,112,255,110,111,111,255,110,110,111,255,110,110,111,255,109,109,110,255,109,109,110,255,109,109,110,255, +108,108,109,255,108,108,108,255,107,107,108,255,107,107,108,255,106,107,107,255,106,106,106,255,105,105,106,255,104,104,105,255, +104,104,104,255,103,104,104,255,103,103,103,255,102,102,103,255,101,101,102,255,101,101,101,255,100,100,100,255,100, 99, 99,255, + 99, 99, 99,255, 99, 98, 98,255, 98, 97, 97,255, 97, 97, 97,255, 96, 96, 95,255, 96, 95, 95,255, 94, 94, 94,255, 94, 93, 93,255, + 93, 92, 92,255, 77, 77, 77,255, 61, 61, 61,255, 60, 60, 60,255,125,126,128,255,184,187,189,255,182,184,187,255,182,184,187,255, +182,184,187,255,182,184,187,255,181,183,186,255,181,183,186,255,181,183,186,255,180,183,185,255,180,183,185,255,180,182,184,255, +179,182,184,255,179,182,183,255,179,181,183,255,178,181,183,255,177,180,182,255,177,180,182,255,177,179,182,255,176,179,181,255, +176,179,181,255,176,178,180,255,175,177,179,255,175,177,179,255,175,177,179,255,174,176,179,255,174,176,178,255,173,176,178,255, +173,175,177,255,173,175,177,255,173,175,177,255,172,174,176,255,172,174,176,255,171,173,175,255,171,173,175,255,170,172,174,255, +170,172,174,255,169,171,173,255,169,171,173,255,168,170,172,255,168,170,172,255,168,170,171,255,167,169,170,255,167,169,170,255, +166,168,170,255,166,167,169,255,165,167,169,255,165,166,168,255,164,166,167,255,164,165,167,255,163,165,166,255,163,164,166,255, +162,164,165,255,162,163,164,255,161,162,164,255,160,162,163,255,160,161,162,255,159,160,162,255,159,160,161,255,158,159,161,255, +157,159,160,255,157,158,159,255,156,157,159,255,156,157,158,255,155,156,157,255,154,155,156,255,153,154,155,255,153,154,155,255, +152,153,154,255,151,152,153,255,151,151,152,255,149,150,151,255,149,149,150,255,148,147,149,255,146,147,148,255,145,146,147,255, +144,144,145,255,143,143,144,255,142,142,143,255,141,141,141,255,140,140,140,255,139,138,139,255,137,137,137,255,136,136,136,255, +135,135,135,255,133,133,133,255,132,131,131,255,131,130,130,255,129,128,128,255,128,127,126,255,127,124,125,255,124,123,122,255, +123,121,120,255, 93, 92, 91,255, 61, 61, 61,255, 60, 60, 60,255,124,126,127,255,184,186,189,255,182,185,188,255,182,185,187,255, +182,184,187,255,181,184,187,255,181,184,186,255,180,184,185,255,181,183,186,255,180,183,185,255,180,182,185,255,180,182,185,255, +179,182,184,255,179,181,184,255,179,181,183,255,178,181,183,255,178,180,183,255,178,180,182,255,177,179,182,255,177,179,181,255, +176,179,181,255,175,178,180,255,176,178,180,255,175,177,180,255,175,177,179,255,175,177,178,255,174,176,178,255,174,176,177,255, +173,175,177,255,173,175,177,255,173,175,177,255,172,174,176,255,172,174,176,255,171,173,175,255,170,172,174,255,170,172,174,255, +169,171,173,255,169,171,173,255,169,171,173,255,169,171,173,255,168,170,171,255,168,170,171,255,167,169,171,255,167,169,170,255, +166,168,170,255,165,168,169,255,165,167,169,255,165,166,168,255,165,165,168,255,164,165,167,255,163,164,166,255,162,165,165,255, +162,163,165,255,162,163,165,255,161,163,164,255,160,162,163,255,160,161,163,255,159,160,162,255,159,160,161,255,159,160,161,255, +157,159,160,255,157,158,159,255,157,158,159,255,156,156,158,255,155,156,157,255,154,155,157,255,153,154,155,255,153,154,155,255, +152,153,154,255,151,152,153,255,150,151,152,255,150,150,152,255,148,149,150,255,147,148,149,255,147,147,148,255,145,145,146,255, +144,145,145,255,144,144,145,255,142,142,143,255,141,141,142,255,139,139,140,255,138,138,138,255,137,137,137,255,136,136,136,255, +135,134,134,255,133,133,133,255,132,131,131,255,131,130,130,255,130,129,128,255,128,127,126,255,126,125,124,255,125,123,123,255, +123,122,121,255, 93, 92, 91,255, 61, 61, 61,255, 60, 60, 60,255,125,126,127,255,184,187,189,255,182,185,188,255,183,185,187,255, +182,185,187,255,182,185,187,255,182,184,187,255,181,183,186,255,181,184,186,255,181,183,186,255,180,183,185,255,180,182,185,255, +180,182,185,255,180,181,184,255,179,182,184,255,179,181,183,255,178,180,183,255,178,180,182,255,178,180,182,255,177,179,181,255, +176,179,181,255,176,179,181,255,176,178,180,255,176,178,180,255,175,177,180,255,174,176,179,255,174,177,179,255,174,176,178,255, +173,176,178,255,173,175,177,255,173,175,177,255,172,174,176,255,172,174,176,255,172,174,176,255,171,173,175,255,171,173,175,255, +170,172,174,255,170,172,174,255,169,171,173,255,169,171,173,255,168,170,172,255,168,170,172,255,168,170,171,255,167,169,170,255, +167,169,170,255,166,168,169,255,165,167,169,255,165,167,169,255,164,166,167,255,164,166,167,255,164,165,167,255,163,164,166,255, +162,164,165,255,162,163,165,255,162,163,165,255,161,162,164,255,161,162,163,255,160,161,163,255,159,160,162,255,159,160,161,255, +158,159,160,255,157,158,160,255,156,157,159,255,156,157,158,255,156,156,158,255,155,156,157,255,154,155,156,255,153,154,155,255, +152,152,154,255,151,152,153,255,151,151,152,255,149,151,152,255,149,149,150,255,148,148,149,255,146,147,148,255,146,146,147,255, +145,145,146,255,143,144,145,255,143,143,144,255,141,142,142,255,140,140,140,255,139,139,139,255,138,138,138,255,137,136,136,255, +135,135,135,255,134,133,133,255,132,132,132,255,131,130,130,255,130,129,128,255,128,127,127,255,127,126,125,255,125,124,123,255, +124,122,121,255, 93, 92, 92,255, 61, 61, 61,255, 60, 60, 60,255,125,126,128,255,185,187,191,255,183,186,188,255,183,185,188,255, +183,185,188,255,183,185,187,255,183,184,187,255,182,184,187,255,182,184,186,255,181,184,186,255,181,184,186,255,180,183,185,255, +181,183,186,255,179,182,184,255,179,182,184,255,180,182,184,255,178,181,183,255,179,180,183,255,179,180,183,255,177,180,182,255, +177,179,181,255,177,180,181,255,177,178,181,255,177,179,180,255,176,178,181,255,175,177,179,255,175,177,180,255,174,176,179,255, +174,177,179,255,173,176,178,255,174,175,177,255,173,175,177,255,172,174,176,255,172,174,176,255,171,173,175,255,172,174,176,255, +171,173,175,255,171,173,175,255,170,172,174,255,170,172,174,255,169,171,172,255,168,170,172,255,168,170,171,255,167,169,171,255, +168,169,170,255,166,169,170,255,166,167,169,255,166,168,169,255,165,166,168,255,164,167,168,255,165,166,167,255,163,165,166,255, +163,164,166,255,162,164,165,255,161,164,164,255,161,163,165,255,161,162,164,255,160,161,162,255,159,161,162,255,159,160,162,255, +159,159,160,255,158,159,161,255,157,158,160,255,156,157,158,255,155,157,158,255,155,156,157,255,154,155,156,255,153,154,156,255, +153,154,155,255,151,152,153,255,151,152,153,255,150,151,152,255,149,150,151,255,148,149,150,255,147,147,148,255,146,147,148,255, +145,146,147,255,144,145,146,255,143,143,144,255,142,142,143,255,140,140,141,255,139,139,140,255,139,138,139,255,136,136,136,255, +135,135,135,255,135,134,134,255,133,132,132,255,132,131,131,255,131,130,129,255,129,128,127,255,127,126,126,255,126,125,124,255, +125,123,122,255, 93, 93, 91,255, 61, 61, 61,255, 60, 60, 60,255,125,127,128,255,186,188,191,255,184,187,189,255,184,187,189,255, +184,186,189,255,183,186,188,255,183,186,188,255,183,185,188,255,182,185,188,255,182,185,187,255,181,184,187,255,182,184,187,255, +181,184,186,255,181,183,186,255,181,183,186,255,180,183,185,255,180,182,185,255,179,181,184,255,179,181,184,255,179,181,183,255, +178,181,183,255,178,180,182,255,177,180,182,255,176,179,182,255,177,179,181,255,176,178,180,255,176,178,180,255,175,177,180,255, +174,176,179,255,174,177,179,255,173,176,178,255,174,176,178,255,173,175,177,255,173,175,177,255,172,174,176,255,172,174,176,255, +172,174,176,255,171,173,175,255,171,173,175,255,170,172,174,255,170,172,173,255,169,171,173,255,169,171,173,255,168,170,172,255, +168,170,172,255,168,169,171,255,167,169,170,255,167,168,170,255,166,168,169,255,165,167,169,255,165,167,168,255,164,165,168,255, +164,165,166,255,163,165,166,255,163,164,165,255,162,164,164,255,162,163,164,255,160,162,164,255,160,162,163,255,160,161,162,255, +159,160,161,255,159,160,161,255,158,159,160,255,157,158,159,255,156,157,159,255,156,157,158,255,155,156,157,255,154,155,156,255, +153,154,156,255,152,153,154,255,151,152,153,255,151,152,153,255,150,150,151,255,149,150,151,255,148,149,150,255,147,147,148,255, +146,146,147,255,144,145,145,255,143,143,144,255,142,143,143,255,142,142,142,255,140,140,140,255,139,138,139,255,138,137,138,255, +136,136,136,255,135,135,135,255,133,133,133,255,132,131,131,255,131,130,130,255,129,128,128,255,128,127,126,255,126,125,124,255, +125,123,122,255, 94, 93, 92,255, 61, 61, 61,255, 60, 60, 60,255,126,127,129,255,186,189,192,255,184,187,190,255,184,187,190,255, +184,186,189,255,183,186,189,255,184,186,189,255,183,186,189,255,183,186,188,255,182,185,187,255,182,184,187,255,181,185,187,255, +181,184,187,255,181,183,186,255,180,184,186,255,180,183,185,255,180,182,185,255,179,182,184,255,180,181,184,255,179,181,183,255, +178,181,183,255,178,180,183,255,177,180,182,255,177,179,182,255,177,179,181,255,176,178,181,255,176,178,180,255,176,178,180,255, +175,177,179,255,175,177,179,255,174,177,179,255,173,177,179,255,173,176,178,255,174,176,178,255,173,175,177,255,173,175,177,255, +172,174,176,255,171,173,175,255,171,173,174,255,171,173,174,255,170,172,173,255,170,172,173,255,170,170,172,255,169,170,172,255, +168,170,172,255,168,169,172,255,167,169,170,255,167,169,170,255,167,168,169,255,165,167,169,255,165,166,169,255,164,166,167,255, +164,165,167,255,163,165,166,255,163,164,166,255,162,163,165,255,162,163,165,255,161,162,164,255,160,162,163,255,160,162,163,255, +159,160,162,255,159,160,161,255,158,160,161,255,157,158,160,255,157,158,159,255,156,157,158,255,155,156,157,255,155,155,157,255, +154,155,156,255,153,153,155,255,152,153,154,255,151,152,153,255,150,151,152,255,149,150,151,255,149,149,150,255,147,148,149,255, +146,147,147,255,145,145,146,255,144,144,145,255,143,143,144,255,141,142,142,255,140,141,141,255,139,139,140,255,138,137,138,255, +137,136,137,255,135,135,135,255,134,133,133,255,133,132,132,255,131,131,130,255,129,129,128,255,128,127,126,255,127,125,125,255, +125,124,123,255, 94, 93, 92,255, 61, 61, 61,255, 60, 60, 60,255,126,127,129,255,187,190,192,255,185,188,190,255,185,187,190,255, +184,187,190,255,184,187,189,255,185,186,189,255,184,186,189,255,183,186,188,255,184,185,188,255,182,185,188,255,182,184,187,255, +183,184,188,255,181,184,186,255,181,183,186,255,182,183,187,255,180,183,185,255,180,182,185,255,179,182,184,255,179,182,184,255, +179,181,183,255,178,182,183,255,178,180,183,255,177,180,182,255,178,179,183,255,176,179,181,255,177,178,182,255,177,179,181,255, +175,177,180,255,176,178,179,255,175,178,180,255,174,176,178,255,174,177,179,255,173,176,178,255,173,176,177,255,172,175,177,255, +173,174,177,255,172,174,175,255,171,174,176,255,171,173,175,255,170,173,174,255,171,172,174,255,170,171,173,255,170,171,173,255, +169,170,172,255,169,170,172,255,168,169,171,255,167,169,170,255,166,168,170,255,166,167,169,255,165,168,169,255,165,166,168,255, +164,166,167,255,165,165,168,255,163,165,166,255,163,164,165,255,163,163,166,255,161,163,164,255,161,162,163,255,160,162,164,255, +160,161,162,255,159,160,162,255,159,160,161,255,158,159,160,255,157,158,159,255,157,158,159,255,155,156,158,255,155,156,157,255, +154,155,156,255,153,154,155,255,152,153,154,255,152,153,154,255,151,151,152,255,150,150,151,255,149,150,151,255,147,148,149,255, +147,147,148,255,145,146,146,255,144,145,146,255,144,144,145,255,142,142,143,255,141,141,141,255,140,140,140,255,138,138,138,255, +137,137,137,255,136,135,136,255,134,133,134,255,133,132,132,255,132,131,131,255,130,129,128,255,129,128,127,255,127,126,125,255, +126,125,124,255, 94, 93, 93,255, 61, 61, 61,255, 60, 60, 60,255,127,128,129,255,187,190,193,255,186,189,192,255,186,188,191,255, +186,188,190,255,185,188,191,255,185,187,190,255,185,187,190,255,184,187,189,255,184,187,189,255,184,186,189,255,183,186,188,255, +183,186,188,255,183,185,188,255,182,185,187,255,181,184,187,255,182,184,187,255,181,183,186,255,181,183,185,255,181,182,185,255, +180,182,185,255,179,182,184,255,179,182,184,255,178,181,183,255,177,181,182,255,177,180,182,255,177,179,182,255,177,179,182,255, +176,178,181,255,176,178,181,255,176,177,180,255,175,177,180,255,175,177,179,255,174,177,179,255,173,176,178,255,173,176,178,255, +172,175,177,255,172,174,176,255,172,174,176,255,171,174,176,255,171,173,175,255,171,173,175,255,170,172,174,255,169,171,174,255, +169,171,173,255,168,170,172,255,168,170,172,255,168,169,171,255,168,168,170,255,167,168,170,255,166,168,170,255,166,168,169,255, +165,167,168,255,164,166,168,255,165,165,167,255,163,165,166,255,162,165,165,255,163,164,166,255,162,163,164,255,161,162,163,255, +160,162,163,255,160,161,163,255,159,161,162,255,158,159,161,255,158,159,160,255,157,158,160,255,156,157,159,255,155,156,158,255, +155,156,157,255,153,154,156,255,153,154,155,255,152,153,154,255,151,152,153,255,150,151,152,255,150,150,151,255,148,149,149,255, +147,148,149,255,147,146,148,255,145,145,146,255,144,144,145,255,142,142,143,255,141,141,142,255,140,140,141,255,139,139,140,255, +137,137,137,255,136,136,136,255,135,134,134,255,133,133,133,255,132,131,131,255,131,130,129,255,129,128,127,255,128,126,126,255, +126,125,124,255, 94, 93, 93,255, 61, 61, 61,255, 60, 60, 60,255,126,128,130,255,188,191,193,255,187,189,192,255,186,189,192,255, +185,188,191,255,185,188,191,255,185,188,191,255,185,187,190,255,184,187,190,255,185,187,190,255,184,186,189,255,183,186,189,255, +184,186,189,255,183,185,188,255,182,185,188,255,182,184,187,255,182,184,187,255,181,184,186,255,181,183,186,255,181,183,186,255, +180,183,185,255,180,182,185,255,180,182,185,255,179,181,184,255,178,181,183,255,178,180,183,255,177,180,182,255,178,180,182,255, +177,179,181,255,176,178,181,255,176,178,180,255,175,177,180,255,175,177,180,255,175,176,179,255,174,177,179,255,174,176,178,255, +173,176,178,255,173,175,177,255,172,174,176,255,172,174,176,255,171,173,175,255,171,173,175,255,170,172,174,255,170,172,174,255, +170,172,173,255,169,171,172,255,168,170,172,255,168,170,172,255,167,169,171,255,167,169,170,255,167,168,170,255,167,167,170,255, +166,167,169,255,165,167,168,255,164,165,168,255,164,165,167,255,163,165,166,255,162,164,165,255,162,163,165,255,162,163,164,255, +161,162,163,255,160,161,163,255,160,161,162,255,159,160,161,255,158,159,160,255,158,159,160,255,157,158,159,255,156,157,158,255, +155,156,157,255,154,155,156,255,153,154,155,255,153,153,155,255,151,152,153,255,151,151,153,255,149,151,152,255,149,149,150,255, +148,148,149,255,146,147,148,255,145,146,147,255,144,145,145,255,143,143,143,255,142,142,142,255,141,141,141,255,139,139,139,255, +138,138,138,255,137,136,136,255,135,135,135,255,134,133,133,255,133,132,131,255,131,130,129,255,129,128,128,255,128,127,126,255, +127,125,124,255, 94, 94, 93,255, 61, 61, 61,255, 60, 60, 60,255,127,129,130,255,189,191,194,255,186,189,193,255,186,189,193,255, +186,189,192,255,186,189,191,255,185,188,191,255,186,188,192,255,185,188,190,255,184,187,190,255,185,187,190,255,184,187,189,255, +183,186,189,255,183,186,188,255,183,185,189,255,182,185,188,255,183,185,188,255,182,184,187,255,182,184,187,255,180,184,185,255, +180,184,185,255,181,183,186,255,179,183,184,255,180,182,185,255,179,181,184,255,179,181,184,255,178,180,183,255,177,180,182,255, +178,179,182,255,177,179,181,255,176,178,182,255,176,178,180,255,175,177,180,255,176,178,180,255,174,176,178,255,175,177,179,255, +174,176,178,255,174,176,178,255,173,175,177,255,172,174,176,255,172,174,176,255,171,173,175,255,171,173,175,255,170,172,174,255, +171,173,174,255,169,172,173,255,170,171,172,255,169,171,173,255,168,169,171,255,167,170,171,255,168,169,171,255,166,168,169,255, +167,168,169,255,166,168,169,255,164,166,167,255,165,166,167,255,164,166,167,255,163,164,165,255,162,164,166,255,163,164,165,255, +161,162,163,255,160,162,164,255,161,162,163,255,159,160,161,255,158,159,161,255,158,159,161,255,157,158,159,255,156,157,159,255, +156,157,158,255,154,155,156,255,154,154,156,255,154,154,156,255,152,153,154,255,152,152,153,255,151,151,152,255,149,150,151,255, +149,149,150,255,147,148,149,255,146,146,147,255,145,145,146,255,143,143,144,255,142,142,143,255,141,141,142,255,139,139,139,255, +138,138,138,255,137,137,137,255,135,135,135,255,134,134,134,255,133,133,132,255,131,130,130,255,130,129,128,255,128,127,126,255, +127,126,125,255, 95, 94, 93,255, 61, 61, 61,255, 60, 60, 60,255,127,129,130,255,189,192,195,255,188,191,193,255,188,190,193,255, +187,189,193,255,186,189,193,255,187,189,192,255,186,189,191,255,186,189,192,255,186,188,191,255,185,187,190,255,185,188,190,255, +185,187,190,255,185,186,190,255,184,186,189,255,183,186,189,255,182,185,188,255,183,185,188,255,182,185,187,255,182,184,187,255, +181,183,186,255,181,184,186,255,181,183,186,255,180,183,185,255,180,182,185,255,179,181,184,255,179,181,184,255,178,181,183,255, +177,180,183,255,178,180,182,255,177,180,181,255,176,179,181,255,176,178,180,255,176,178,180,255,175,177,179,255,175,177,179,255, +175,177,179,255,174,176,178,255,174,176,178,255,173,175,177,255,172,174,176,255,172,174,176,255,171,173,176,255,171,173,175,255, +171,173,175,255,171,172,174,255,170,171,173,255,170,171,173,255,169,171,173,255,169,170,171,255,168,170,171,255,168,169,171,255, +166,168,170,255,167,167,169,255,165,167,168,255,165,166,168,255,165,166,167,255,163,165,166,255,163,165,166,255,163,164,166,255, +162,163,164,255,161,162,164,255,161,161,164,255,160,161,162,255,159,160,161,255,158,160,161,255,157,158,160,255,157,158,159,255, +156,157,159,255,155,156,157,255,154,155,156,255,154,155,156,255,153,153,154,255,152,152,154,255,151,152,153,255,150,150,151,255, +149,149,150,255,148,147,148,255,146,146,147,255,145,145,146,255,144,145,145,255,143,143,143,255,142,142,142,255,140,140,141,255, +139,138,139,255,138,137,137,255,136,136,136,255,135,134,134,255,133,133,132,255,132,131,130,255,130,129,129,255,129,127,127,255, +128,126,125,255, 95, 94, 94,255, 61, 61, 61,255, 60, 60, 60,255,128,129,131,255,190,192,195,255,188,191,193,255,187,190,193,255, +187,190,193,255,187,190,192,255,187,190,192,255,187,190,192,255,186,189,191,255,186,189,191,255,185,188,191,255,185,188,191,255, +185,188,190,255,184,187,190,255,184,187,190,255,184,186,189,255,183,186,188,255,182,185,188,255,182,185,188,255,182,184,187,255, +181,184,186,255,181,184,186,255,180,184,185,255,181,183,186,255,180,183,185,255,179,182,184,255,179,181,184,255,179,181,184,255, +178,180,182,255,178,180,182,255,177,180,182,255,177,180,181,255,176,179,181,255,177,179,181,255,176,178,180,255,176,177,179,255, +175,177,179,255,174,176,178,255,174,176,178,255,174,176,178,255,173,175,177,255,173,174,177,255,172,174,175,255,171,173,175,255, +171,173,175,255,171,173,175,255,170,172,174,255,169,172,173,255,170,171,172,255,168,170,172,255,168,170,172,255,167,170,171,255, +167,168,170,255,166,168,170,255,166,167,169,255,165,167,168,255,165,166,168,255,164,165,167,255,163,165,166,255,163,165,165,255, +162,163,165,255,161,163,164,255,161,162,164,255,160,161,162,255,159,161,162,255,159,160,161,255,158,159,160,255,157,158,159,255, +157,158,159,255,155,156,157,255,155,156,157,255,153,155,155,255,153,153,155,255,152,153,154,255,151,152,153,255,150,150,151,255, +149,149,150,255,147,148,149,255,147,147,148,255,146,146,147,255,144,144,145,255,143,144,144,255,142,142,143,255,141,141,141,255, +140,139,139,255,138,138,138,255,136,136,136,255,135,134,134,255,134,133,133,255,132,131,130,255,130,129,129,255,129,128,127,255, +128,126,126,255, 95, 94, 94,255, 61, 61, 61,255, 60, 60, 60,255,127,129,131,255,190,193,196,255,188,191,194,255,188,192,195,255, +189,191,194,255,187,191,193,255,188,191,194,255,187,190,193,255,186,190,192,255,186,190,193,255,187,189,192,255,185,189,192,255, +185,189,191,255,185,188,190,255,184,188,191,255,185,187,190,255,183,187,189,255,183,187,188,255,184,186,189,255,182,185,187,255, +183,184,188,255,182,185,187,255,181,183,186,255,180,184,185,255,181,183,186,255,180,183,184,255,179,182,185,255,180,181,184,255, +178,181,184,255,179,181,183,255,178,181,183,255,178,179,181,255,177,180,182,255,176,179,181,255,176,179,181,255,175,178,180,255, +176,177,179,255,175,177,179,255,174,176,178,255,175,177,179,255,173,175,177,255,174,175,177,255,173,174,176,255,172,174,176,255, +172,174,176,255,171,173,175,255,171,173,174,255,170,172,173,255,170,172,173,255,169,171,172,255,168,171,172,255,168,169,171,255, +167,169,170,255,167,168,170,255,167,168,169,255,166,167,168,255,166,166,168,255,164,166,167,255,164,165,166,255,164,165,166,255, +162,164,165,255,162,163,164,255,162,163,164,255,160,161,163,255,159,161,162,255,160,161,162,255,158,159,161,255,158,159,160,255, +157,158,159,255,155,156,158,255,155,156,157,255,155,155,157,255,153,154,155,255,153,153,154,255,152,152,153,255,150,151,152,255, +150,150,151,255,149,149,150,255,147,147,148,255,146,147,147,255,145,145,146,255,144,144,145,255,143,143,143,255,141,141,141,255, +140,140,140,255,139,139,139,255,137,136,136,255,136,135,135,255,134,134,133,255,132,131,131,255,131,130,129,255,129,128,128,255, +128,127,126,255, 95, 95, 94,255, 61, 61, 61,255, 60, 60, 60,255,128,130,131,255,191,194,197,255,189,192,195,255,189,192,195,255, +188,192,195,255,188,191,194,255,188,191,194,255,188,191,194,255,188,190,193,255,187,189,192,255,186,190,193,255,187,189,192,255, +186,189,192,255,185,189,191,255,186,188,191,255,185,188,191,255,185,187,190,255,184,187,190,255,183,187,189,255,184,186,189,255, +183,185,188,255,183,185,188,255,182,184,187,255,181,184,186,255,181,184,186,255,180,183,185,255,180,183,185,255,179,182,185,255, +179,181,184,255,179,182,184,255,179,181,183,255,178,181,183,255,178,180,182,255,177,180,182,255,176,179,181,255,176,179,181,255, +175,178,180,255,175,177,180,255,175,177,179,255,175,177,179,255,174,176,178,255,174,176,178,255,173,175,177,255,172,174,177,255, +172,174,176,255,172,174,176,255,171,173,175,255,171,172,174,255,170,171,173,255,170,171,173,255,169,171,172,255,168,171,171,255, +168,170,171,255,168,169,171,255,166,168,169,255,166,168,169,255,166,167,169,255,165,166,168,255,164,166,167,255,164,165,167,255, +163,164,165,255,163,163,165,255,162,163,165,255,161,162,163,255,160,161,163,255,160,161,162,255,159,160,161,255,158,159,160,255, +157,158,160,255,156,157,158,255,156,157,158,255,155,156,157,255,154,154,156,255,153,154,155,255,152,153,154,255,151,151,152,255, +150,150,151,255,148,150,150,255,148,148,148,255,147,147,148,255,145,146,146,255,144,144,145,255,143,143,144,255,142,141,142,255, +140,140,140,255,139,139,139,255,137,138,137,255,136,136,135,255,135,134,134,255,133,132,131,255,131,130,129,255,130,128,128,255, +129,127,126,255, 95, 95, 94,255, 61, 61, 61,255, 60, 60, 60,255,128,130,132,255,191,194,197,255,189,193,196,255,189,192,195,255, +189,192,195,255,188,191,194,255,189,192,195,255,188,191,194,255,187,190,193,255,188,190,193,255,187,190,192,255,186,189,192,255, +187,189,192,255,186,188,191,255,185,188,191,255,186,188,191,255,185,187,190,255,184,187,190,255,184,187,190,255,183,187,189,255, +183,186,188,255,183,186,188,255,182,185,187,255,182,184,187,255,182,184,187,255,181,183,186,255,180,183,185,255,180,183,185,255, +180,182,184,255,179,181,184,255,179,181,183,255,178,180,183,255,178,180,182,255,178,179,182,255,177,180,181,255,177,179,181,255, +176,179,181,255,176,178,180,255,175,177,180,255,174,176,178,255,174,176,178,255,174,176,178,255,173,175,178,255,173,175,176,255, +172,175,177,255,172,173,175,255,171,173,175,255,171,173,175,255,170,172,174,255,170,171,173,255,170,171,173,255,169,170,172,255, +168,170,171,255,168,170,171,255,167,168,170,255,166,168,169,255,166,168,169,255,165,166,168,255,164,166,167,255,164,166,167,255, +163,164,166,255,163,164,165,255,163,164,165,255,161,162,164,255,161,162,163,255,160,161,162,255,159,160,161,255,158,159,161,255, +158,159,160,255,156,157,159,255,156,157,158,255,155,156,157,255,154,155,156,255,153,154,155,255,153,153,154,255,151,152,153,255, +150,151,152,255,149,150,151,255,148,148,149,255,147,148,148,255,146,147,147,255,145,145,146,255,144,144,144,255,142,142,142,255, +141,141,141,255,140,139,139,255,138,137,137,255,137,136,136,255,135,134,134,255,133,132,132,255,131,130,130,255,130,129,128,255, +129,128,127,255, 96, 95, 94,255, 61, 61, 61,255, 60, 60, 60,255,129,130,132,255,192,195,198,255,191,192,195,255,190,193,196,255, +189,193,196,255,190,192,195,255,189,191,194,255,188,191,195,255,188,191,194,255,187,190,193,255,188,190,194,255,187,190,193,255, +186,189,192,255,187,190,193,255,186,189,191,255,185,188,191,255,186,188,191,255,185,187,190,255,184,188,190,255,184,186,190,255, +183,187,189,255,184,186,188,255,183,186,188,255,182,185,187,255,182,184,187,255,182,184,187,255,181,183,186,255,180,183,185,255, +181,183,185,255,180,182,184,255,179,181,185,255,179,181,183,255,178,180,184,255,179,181,183,255,177,179,182,255,178,180,181,255, +177,179,182,255,177,179,180,255,176,178,180,255,176,178,180,255,175,177,179,255,174,176,179,255,175,177,178,255,173,175,177,255, +173,175,176,255,172,175,177,255,172,173,175,255,171,174,175,255,171,173,174,255,170,172,173,255,170,171,174,255,169,171,172,255, +168,170,172,255,169,170,172,255,167,169,170,255,167,168,170,255,167,168,170,255,165,167,168,255,165,166,168,255,164,166,168,255, +164,165,166,255,163,164,166,255,162,163,166,255,162,163,164,255,161,162,164,255,161,162,163,255,159,160,162,255,159,160,161,255, +158,159,161,255,156,157,159,255,156,157,159,255,156,157,158,255,154,155,156,255,154,155,156,255,153,154,155,255,151,152,153,255, +151,151,152,255,150,150,151,255,148,149,150,255,148,148,149,255,146,146,147,255,145,145,146,255,144,144,144,255,142,142,142,255, +141,141,141,255,140,140,140,255,138,138,138,255,137,136,136,255,136,135,134,255,133,132,132,255,132,131,130,255,130,129,129,255, +129,128,127,255, 96, 95, 95,255, 61, 61, 61,255, 60, 60, 60,255,129,130,132,255,192,195,198,255,190,194,197,255,191,194,197,255, +190,193,196,255,189,192,195,255,190,192,196,255,189,192,195,255,189,192,195,255,189,191,194,255,189,190,193,255,188,190,194,255, +188,190,193,255,188,190,193,255,187,189,192,255,186,189,192,255,185,188,192,255,186,188,191,255,185,188,191,255,184,187,190,255, +184,187,190,255,184,187,189,255,184,186,188,255,183,186,188,255,183,185,188,255,182,184,187,255,182,184,187,255,181,184,186,255, +180,184,185,255,180,183,185,255,179,182,184,255,180,182,184,255,179,181,184,255,178,181,183,255,178,180,182,255,177,180,182,255, +178,180,181,255,176,179,181,255,177,179,181,255,176,178,180,255,176,178,179,255,175,177,179,255,175,177,178,255,174,176,178,255, +173,175,177,255,172,174,177,255,172,174,176,255,172,174,175,255,171,174,175,255,171,172,174,255,171,172,174,255,170,171,174,255, +169,171,172,255,169,171,172,255,168,169,172,255,167,169,170,255,167,169,170,255,166,168,169,255,165,167,168,255,165,166,168,255, +164,165,167,255,164,165,166,255,163,164,166,255,162,163,165,255,162,163,164,255,161,162,163,255,160,161,162,255,159,160,162,255, +158,159,161,255,157,158,159,255,157,158,159,255,156,157,158,255,155,155,157,255,154,155,156,255,153,154,155,255,152,152,153,255, +151,151,152,255,151,151,152,255,149,150,150,255,148,148,149,255,146,147,147,255,145,145,146,255,144,144,145,255,144,143,144,255, +141,141,141,255,141,140,140,255,139,138,138,255,137,137,136,255,136,135,135,255,134,133,132,255,132,131,131,255,131,130,129,255, +130,128,127,255, 96, 95, 95,255, 61, 61, 61,255, 60, 60, 60,255,129,131,132,255,193,195,199,255,191,194,197,255,190,193,196,255, +191,194,197,255,190,193,196,255,190,193,196,255,190,193,196,255,189,192,195,255,189,192,195,255,188,191,194,255,188,191,194,255, +188,191,193,255,187,191,194,255,187,190,193,255,187,189,192,255,186,189,191,255,186,189,192,255,185,188,191,255,185,187,190,255, +184,187,190,255,184,187,190,255,183,187,189,255,184,186,188,255,183,186,188,255,183,185,187,255,182,184,187,255,182,184,187,255, +181,183,186,255,181,183,186,255,180,183,185,255,179,183,184,255,179,182,184,255,179,182,184,255,178,181,183,255,178,180,182,255, +178,179,182,255,177,180,181,255,176,179,181,255,176,179,181,255,175,177,180,255,175,177,179,255,174,176,178,255,174,176,178,255, +174,176,178,255,173,175,176,255,173,175,176,255,172,174,176,255,171,173,176,255,171,173,175,255,171,172,174,255,171,172,173,255, +169,171,173,255,169,170,172,255,169,170,171,255,168,169,171,255,167,169,170,255,166,168,169,255,166,167,169,255,166,167,168,255, +164,165,167,255,164,165,167,255,164,165,166,255,162,163,165,255,162,163,164,255,161,162,164,255,160,161,163,255,160,161,162,255, +159,160,161,255,157,158,160,255,157,158,159,255,156,157,159,255,155,156,157,255,154,155,156,255,154,154,155,255,152,153,154,255, +151,152,153,255,151,151,152,255,149,150,151,255,148,149,149,255,147,148,147,255,146,146,146,255,145,145,145,255,143,143,143,255, +142,142,142,255,141,141,141,255,139,139,138,255,138,137,137,255,137,136,135,255,134,133,132,255,132,132,131,255,131,130,129,255, +130,129,128,255, 96, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,129,131,132,255,193,196,199,255,192,195,198,255,192,195,198,255, +191,194,197,255,190,193,197,255,191,194,197,255,190,193,196,255,189,192,195,255,190,193,196,255,189,192,195,255,188,191,195,255, +189,192,195,255,188,191,194,255,187,191,194,255,188,190,193,255,187,189,193,255,187,190,191,255,187,189,192,255,185,188,191,255, +186,187,190,255,185,188,191,255,184,186,189,255,183,187,190,255,184,186,189,255,182,186,188,255,183,185,187,255,182,184,188,255, +181,184,186,255,182,183,186,255,181,184,185,255,181,182,185,255,180,183,185,255,180,182,184,255,179,181,184,255,179,180,183,255, +178,181,182,255,178,179,182,255,177,180,182,255,176,179,181,255,176,178,181,255,175,177,180,255,176,178,180,255,174,176,178,255, +175,177,179,255,174,176,178,255,174,175,176,255,173,175,177,255,173,174,176,255,171,174,175,255,172,173,175,255,170,172,174,255, +170,171,173,255,170,171,173,255,168,171,171,255,169,170,172,255,168,170,171,255,166,168,169,255,167,168,170,255,166,168,169,255, +164,166,167,255,164,166,167,255,163,165,167,255,163,164,165,255,162,163,165,255,162,163,165,255,160,161,163,255,160,161,163,255, +160,161,162,255,158,159,160,255,158,159,160,255,157,158,159,255,155,156,157,255,155,156,157,255,154,155,156,255,152,153,154,255, +152,153,154,255,151,152,153,255,150,150,151,255,149,149,150,255,147,147,149,255,146,146,147,255,145,145,145,255,143,143,143,255, +142,142,142,255,141,141,141,255,139,139,139,255,138,138,137,255,137,136,135,255,134,133,133,255,133,132,131,255,132,130,129,255, +130,129,128,255, 96, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,130,131,133,255,193,196,200,255,192,195,198,255,192,194,198,255, +192,195,198,255,191,194,197,255,190,193,197,255,191,194,197,255,190,193,196,255,189,192,196,255,190,193,196,255,189,192,195,255, +188,191,194,255,189,192,195,255,188,191,194,255,187,191,194,255,188,190,193,255,187,189,193,255,187,190,192,255,186,189,191,255, +185,188,191,255,186,188,191,255,185,187,191,255,184,187,190,255,184,187,190,255,184,186,188,255,183,185,188,255,183,185,188,255, +182,184,187,255,181,184,187,255,182,183,186,255,181,183,185,255,181,182,185,255,180,182,185,255,180,181,184,255,179,181,184,255, +179,180,183,255,178,180,182,255,178,180,182,255,177,179,181,255,177,179,181,255,176,178,180,255,176,178,180,255,175,177,179,255, +175,177,179,255,174,176,178,255,173,175,178,255,173,175,177,255,172,175,177,255,172,174,175,255,171,174,175,255,171,172,175,255, +170,172,173,255,170,172,173,255,170,170,172,255,168,170,171,255,168,170,171,255,167,169,170,255,166,168,169,255,166,168,169,255, +165,167,168,255,165,166,168,255,164,165,167,255,163,164,166,255,163,164,165,255,162,163,165,255,161,162,163,255,160,161,163,255, +160,161,162,255,158,159,161,255,158,159,160,255,156,157,160,255,156,157,158,255,155,156,157,255,155,155,155,255,153,153,155,255, +152,153,154,255,152,151,153,255,150,150,151,255,149,149,150,255,148,148,148,255,147,147,147,255,145,145,146,255,145,144,145,255, +143,142,143,255,142,141,141,255,140,139,139,255,139,138,137,255,137,136,136,255,135,134,133,255,133,132,131,255,132,131,130,255, +131,129,128,255, 96, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,130,131,133,255,194,197,200,255,193,195,199,255,192,195,198,255, +191,194,197,255,192,195,198,255,191,194,197,255,190,193,197,255,190,193,196,255,190,193,197,255,189,192,196,255,189,192,195,255, +189,192,195,255,188,191,194,255,188,191,194,255,188,191,194,255,187,190,193,255,187,190,193,255,187,189,192,255,186,190,192,255, +186,189,191,255,185,189,191,255,186,188,191,255,185,187,190,255,185,187,189,255,183,187,189,255,183,186,188,255,183,186,188,255, +183,185,187,255,182,184,187,255,181,184,187,255,181,183,186,255,180,183,185,255,180,182,185,255,179,182,184,255,180,181,184,255, +179,181,184,255,178,180,182,255,178,180,182,255,178,180,181,255,176,179,181,255,177,179,181,255,175,177,181,255,175,177,180,255, +175,177,179,255,175,177,179,255,174,176,178,255,174,175,177,255,173,174,176,255,172,174,176,255,172,173,176,255,171,173,174,255, +170,172,174,255,170,171,174,255,169,171,173,255,169,170,172,255,169,170,172,255,167,169,170,255,167,168,170,255,167,168,170,255, +166,167,168,255,165,166,168,255,164,166,167,255,163,164,166,255,162,164,165,255,163,164,165,255,161,162,164,255,160,162,163,255, +160,161,162,255,158,159,161,255,158,159,160,255,157,158,160,255,156,157,158,255,155,156,157,255,155,154,156,255,154,154,155,255, +153,153,154,255,152,152,152,255,150,151,152,255,150,150,151,255,149,149,149,255,147,147,147,255,146,146,146,255,144,144,144,255, +143,143,143,255,142,142,142,255,140,140,139,255,139,138,138,255,138,137,136,255,135,135,134,255,134,133,132,255,132,131,130,255, +131,130,129,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,130,132,133,255,194,197,201,255,193,196,198,255,192,195,198,255, +193,196,199,255,191,194,197,255,192,195,198,255,192,195,197,255,191,194,197,255,190,193,196,255,191,194,196,255,189,192,196,255, +190,193,195,255,190,193,196,255,189,191,194,255,188,191,194,255,189,192,195,255,187,191,194,255,188,190,193,255,188,189,192,255, +187,190,192,255,186,189,192,255,185,189,191,255,185,188,191,255,185,188,190,255,184,186,190,255,184,187,189,255,184,186,189,255, +182,186,188,255,183,185,188,255,182,184,187,255,182,184,187,255,181,183,186,255,180,184,185,255,180,182,185,255,179,182,184,255, +180,181,184,255,178,181,183,255,179,181,182,255,178,180,183,255,178,180,181,255,177,179,181,255,177,179,180,255,175,177,180,255, +176,178,180,255,175,177,179,255,174,176,178,255,173,176,178,255,173,176,177,255,172,175,176,255,173,174,175,255,171,173,176,255, +171,173,175,255,170,172,174,255,170,172,173,255,169,171,173,255,169,171,172,255,168,169,171,255,168,169,171,255,167,169,170,255, +166,167,168,255,166,167,169,255,165,166,168,255,164,165,167,255,163,164,166,255,163,163,166,255,161,163,164,255,161,162,164,255, +160,161,163,255,159,160,161,255,159,160,161,255,158,159,160,255,157,157,158,255,156,157,158,255,155,156,157,255,154,155,156,255, +153,154,155,255,152,153,154,255,151,151,152,255,150,150,151,255,148,148,149,255,147,147,148,255,146,146,147,255,145,144,144,255, +143,143,143,255,142,142,142,255,140,140,139,255,139,139,138,255,138,137,136,255,136,135,134,255,134,133,132,255,133,131,130,255, +131,130,129,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,130,132,133,255,195,198,201,255,193,196,199,255,193,196,199,255, +192,195,199,255,193,196,199,255,192,195,198,255,191,194,197,255,192,195,198,255,191,194,197,255,190,193,196,255,191,194,197,255, +190,193,196,255,189,192,195,255,190,192,195,255,189,192,195,255,188,192,195,255,188,191,194,255,188,191,194,255,188,190,193,255, +187,189,192,255,187,189,192,255,186,188,192,255,185,188,191,255,185,188,191,255,185,187,190,255,184,186,189,255,184,187,189,255, +184,186,188,255,183,186,188,255,183,185,188,255,182,185,187,255,182,184,186,255,181,183,185,255,180,183,185,255,180,182,185,255, +179,181,185,255,179,181,184,255,179,181,183,255,179,181,183,255,178,180,182,255,178,180,182,255,176,178,181,255,176,178,180,255, +175,177,180,255,175,177,179,255,174,176,178,255,174,176,178,255,173,176,178,255,173,175,176,255,173,175,176,255,172,173,175,255, +171,173,175,255,171,173,175,255,170,171,173,255,169,172,173,255,169,171,173,255,168,170,171,255,167,170,170,255,167,169,170,255, +166,167,169,255,165,167,168,255,165,167,168,255,164,165,167,255,163,165,166,255,163,164,166,255,162,163,164,255,161,163,164,255, +161,162,163,255,159,160,162,255,159,160,161,255,158,159,161,255,157,158,159,255,156,157,158,255,155,155,156,255,154,155,156,255, +154,154,155,255,153,153,154,255,151,151,152,255,150,150,151,255,148,149,149,255,148,148,148,255,147,147,147,255,146,145,146,255, +144,144,143,255,143,142,142,255,141,140,140,255,139,139,139,255,138,137,137,255,136,135,134,255,134,133,132,255,133,132,131,255, +132,130,129,255, 97, 96, 96,255, 61, 61, 61,255, 60, 60, 60,255,131,132,134,255,195,198,201,255,193,196,200,255,194,197,199,255, +193,196,200,255,192,195,199,255,193,196,198,255,192,195,198,255,191,194,197,255,192,195,197,255,191,194,197,255,190,193,196,255, +191,194,197,255,190,193,196,255,189,192,195,255,190,192,195,255,189,191,194,255,188,192,194,255,188,191,194,255,187,191,194,255, +188,190,193,255,187,190,193,255,187,189,192,255,186,188,191,255,186,188,191,255,185,187,190,255,184,187,190,255,184,187,190,255, +183,186,189,255,183,185,189,255,183,185,188,255,183,184,187,255,182,184,187,255,182,184,186,255,181,183,185,255,180,183,185,255, +180,182,184,255,179,182,184,255,179,181,184,255,179,180,182,255,178,181,182,255,178,180,182,255,177,179,182,255,176,178,181,255, +176,178,180,255,175,177,179,255,175,177,179,255,175,176,178,255,174,175,177,255,173,175,177,255,172,174,177,255,172,174,175,255, +171,173,175,255,171,173,175,255,170,172,174,255,170,171,174,255,170,171,173,255,168,170,171,255,168,169,171,255,168,169,171,255, +166,168,169,255,166,167,169,255,166,167,169,255,164,165,167,255,164,165,166,255,163,165,166,255,162,163,165,255,161,163,164,255, +161,162,163,255,160,161,162,255,159,160,162,255,159,159,161,255,157,158,159,255,156,157,158,255,156,156,157,255,155,155,156,255, +154,154,155,255,153,152,153,255,151,152,152,255,150,151,151,255,149,150,149,255,148,148,148,255,147,147,147,255,145,145,145,255, +144,144,144,255,143,143,142,255,141,141,140,255,140,139,139,255,139,138,137,255,136,135,135,255,134,133,133,255,133,132,131,255, +132,131,129,255, 97, 96, 96,255, 61, 61, 61,255, 60, 60, 60,255,131,132,134,255,196,199,202,255,194,197,201,255,193,196,200,255, +193,196,199,255,193,196,200,255,192,195,199,255,192,195,199,255,192,195,199,255,191,194,199,255,191,194,198,255,191,194,197,255, +191,194,197,255,190,193,196,255,190,193,196,255,190,192,195,255,189,193,196,255,189,191,194,255,188,192,195,255,189,191,194,255, +187,190,194,255,188,191,193,255,187,189,192,255,187,189,192,255,186,188,192,255,186,188,191,255,185,187,191,255,184,188,190,255, +184,187,189,255,183,186,188,255,184,185,189,255,183,185,188,255,183,184,188,255,182,185,187,255,182,183,186,255,181,184,185,255, +181,183,186,255,180,182,184,255,180,181,184,255,179,182,184,255,179,180,183,255,178,180,183,255,178,180,182,255,177,179,181,255, +176,178,180,255,177,179,181,255,175,177,179,255,174,176,178,255,174,177,179,255,173,175,177,255,173,175,176,255,173,174,177,255, +172,173,175,255,172,173,175,255,170,172,174,255,171,171,173,255,170,172,173,255,168,170,171,255,168,169,171,255,168,169,171,255, +166,168,169,255,166,167,169,255,166,167,169,255,164,166,167,255,164,166,166,255,164,165,167,255,162,164,165,255,162,163,165,255, +161,162,164,255,160,161,163,255,160,161,162,255,159,160,161,255,157,158,160,255,157,157,159,255,156,157,158,255,155,155,156,255, +154,155,156,255,153,154,155,255,152,152,153,255,151,151,152,255,149,149,151,255,148,148,149,255,147,147,147,255,145,145,145,255, +144,144,144,255,143,143,143,255,141,141,140,255,140,139,139,255,139,138,137,255,137,136,135,255,135,134,133,255,133,132,131,255, +132,131,129,255, 97, 96, 96,255, 61, 61, 61,255, 60, 60, 60,255,131,132,134,255,196,199,202,255,195,198,200,255,194,197,201,255, +193,196,200,255,194,197,199,255,193,196,200,255,192,195,200,255,193,196,199,255,192,195,198,255,191,194,199,255,191,194,198,255, +192,195,198,255,191,194,197,255,190,193,196,255,191,193,196,255,190,192,195,255,189,192,195,255,189,192,195,255,189,192,195,255, +188,191,194,255,188,191,193,255,188,190,193,255,187,190,192,255,186,189,192,255,186,189,192,255,185,188,191,255,185,187,191,255, +185,187,190,255,184,186,189,255,183,186,189,255,183,185,188,255,183,185,188,255,183,184,188,255,182,184,186,255,182,183,186,255, +181,184,185,255,181,182,185,255,180,182,185,255,180,181,183,255,178,181,184,255,179,181,183,255,177,179,182,255,178,180,181,255, +177,179,181,255,177,179,181,255,176,177,179,255,175,177,179,255,174,176,178,255,174,175,177,255,174,176,177,255,172,174,177,255, +172,173,175,255,172,173,175,255,170,173,175,255,170,171,173,255,169,171,172,255,169,170,172,255,168,169,171,255,167,169,170,255, +167,168,170,255,166,167,169,255,165,167,168,255,164,166,167,255,164,166,167,255,164,165,166,255,163,164,166,255,162,163,165,255, +162,163,164,255,161,162,163,255,160,161,162,255,159,160,161,255,158,159,160,255,157,158,159,255,157,157,159,255,155,156,157,255, +154,155,156,255,153,154,155,255,152,152,153,255,151,151,152,255,149,149,150,255,148,148,149,255,147,147,147,255,146,145,146,255, +145,144,144,255,143,143,143,255,141,141,141,255,140,140,139,255,139,138,137,255,137,136,135,255,135,134,133,255,133,132,131,255, +132,131,130,255, 97, 96, 96,255, 61, 61, 61,255, 60, 60, 60,255,131,133,134,255,197,200,203,255,194,197,201,255,195,198,200,255, +194,197,201,255,193,196,200,255,194,197,200,255,193,196,199,255,192,195,200,255,192,195,199,255,192,195,198,255,192,195,198,255, +191,194,197,255,192,195,198,255,191,194,197,255,190,194,197,255,191,192,195,255,190,192,195,255,189,192,195,255,188,191,194,255, +189,191,194,255,188,191,194,255,188,191,194,255,187,190,193,255,187,189,192,255,187,188,191,255,186,188,191,255,185,188,191,255, +184,187,191,255,184,187,190,255,184,187,189,255,184,186,189,255,183,185,188,255,182,185,187,255,182,184,187,255,181,184,186,255, +182,183,186,255,180,183,185,255,181,182,185,255,180,182,184,255,179,181,183,255,178,181,183,255,178,180,183,255,177,179,182,255, +177,179,181,255,177,179,181,255,176,177,179,255,175,177,179,255,174,176,178,255,174,175,177,255,173,175,177,255,173,175,176,255, +172,173,175,255,171,173,175,255,171,172,174,255,169,171,173,255,169,171,172,255,168,170,171,255,167,169,170,255,167,168,170,255, +166,167,169,255,165,167,168,255,165,166,168,255,164,166,167,255,164,165,166,255,163,165,165,255,163,164,165,255,162,163,165,255, +162,163,164,255,161,162,163,255,160,161,163,255,160,160,162,255,158,159,160,255,157,158,159,255,157,158,159,255,155,156,157,255, +155,155,156,255,154,154,155,255,152,152,153,255,151,151,152,255,149,150,150,255,149,149,149,255,148,148,148,255,146,146,146,255, +145,145,145,255,144,143,143,255,142,141,141,255,141,140,139,255,139,138,138,255,137,136,135,255,135,134,133,255,134,132,131,255, +132,131,130,255, 97, 97, 96,255, 61, 61, 61,255, 60, 60, 60,255,131,133,134,255,197,200,203,255,195,198,202,255,194,197,201,255, +194,197,201,255,194,197,200,255,193,196,201,255,193,196,200,255,194,197,199,255,193,196,200,255,192,195,199,255,193,196,199,255, +192,195,198,255,191,194,197,255,192,195,198,255,191,194,197,255,190,194,197,255,190,193,196,255,189,192,195,255,190,193,196,255, +188,191,194,255,189,191,194,255,188,190,193,255,188,191,194,255,187,190,193,255,186,189,192,255,186,188,191,255,185,189,191,255, +186,188,190,255,185,188,190,255,185,187,190,255,184,187,189,255,184,186,189,255,183,186,188,255,183,185,188,255,182,185,187,255, +181,184,187,255,181,184,185,255,181,183,185,255,180,182,184,255,180,182,184,255,179,181,184,255,179,181,183,255,177,179,182,255, +178,180,182,255,177,179,181,255,176,178,180,255,175,177,179,255,174,176,178,255,173,175,177,255,172,174,176,255,171,173,175,255, +171,172,174,255,170,171,173,255,169,170,172,255,168,170,171,255,167,168,170,255,166,168,169,255,166,167,169,255,165,166,168,255, +164,166,167,255,164,165,167,255,164,164,166,255,163,164,165,255,162,164,165,255,162,163,165,255,162,163,164,255,161,162,164,255, +161,162,164,255,160,161,163,255,160,161,162,255,160,161,162,255,158,159,160,255,158,159,160,255,157,158,159,255,156,156,157,255, +155,155,156,255,154,154,155,255,152,153,153,255,151,152,152,255,151,150,150,255,149,149,149,255,148,148,148,255,146,146,146,255, +145,145,145,255,144,143,143,255,142,141,141,255,141,140,139,255,139,138,138,255,137,136,135,255,135,134,133,255,134,133,131,255, +133,131,130,255, 97, 96, 96,255, 61, 61, 61,255, 60, 60, 60,255,131,133,135,255,197,200,203,255,196,199,201,255,195,198,202,255, +194,197,202,255,195,198,201,255,194,197,200,255,194,197,201,255,193,196,200,255,194,197,199,255,193,196,200,255,192,195,199,255, +193,196,199,255,192,195,198,255,191,194,197,255,192,195,198,255,191,193,197,255,191,194,197,255,190,193,196,255,189,192,195,255, +189,192,195,255,188,192,195,255,189,191,194,255,188,190,193,255,188,190,193,255,187,189,192,255,186,189,192,255,186,188,192,255, +185,188,191,255,185,187,191,255,184,188,190,255,184,186,189,255,183,186,189,255,184,185,189,255,182,185,187,255,183,184,188,255, +182,184,187,255,182,183,186,255,181,183,186,255,181,182,185,255,180,182,184,255,179,182,184,255,179,181,183,255,178,180,182,255, +177,179,182,255,177,179,181,255,175,177,179,255,174,176,178,255,173,175,177,255,173,174,176,255,171,173,175,255,170,172,174,255, +169,171,172,255,168,169,171,255,167,168,170,255,166,167,169,255,164,166,167,255,164,165,166,255,163,164,165,255,162,163,165,255, +162,163,164,255,161,162,164,255,161,162,163,255,161,162,163,255,161,162,163,255,161,162,163,255,161,162,163,255,161,162,163,255, +160,161,163,255,159,160,162,255,160,161,162,255,159,160,161,255,158,159,160,255,157,159,160,255,157,158,159,255,156,156,158,255, +155,156,156,255,153,155,155,255,153,153,154,255,152,152,152,255,150,150,150,255,149,149,149,255,148,148,148,255,146,146,146,255, +145,145,145,255,144,144,143,255,142,142,141,255,141,140,140,255,140,139,138,255,137,136,135,255,135,134,133,255,134,133,131,255, +133,131,130,255, 97, 96, 96,255, 61, 61, 61,255, 60, 60, 60,255,132,133,135,255,198,201,204,255,195,198,202,255,196,199,202,255, +195,198,201,255,194,197,202,255,194,197,201,255,195,198,200,255,194,197,201,255,193,196,200,255,194,197,199,255,193,196,200,255, +192,195,199,255,193,196,199,255,192,195,198,255,191,194,197,255,192,194,198,255,190,193,196,255,191,193,197,255,190,192,196,255, +189,193,195,255,189,192,195,255,189,192,195,255,188,191,194,255,187,191,194,255,188,190,193,255,187,189,192,255,187,189,192,255, +186,188,192,255,185,188,191,255,185,187,191,255,184,187,190,255,184,186,189,255,183,186,189,255,183,185,188,255,182,185,187,255, +182,185,187,255,181,184,186,255,181,183,186,255,181,182,186,255,180,183,184,255,180,182,184,255,179,181,184,255,178,180,182,255, +177,179,181,255,176,178,180,255,174,176,178,255,173,175,177,255,172,174,176,255,171,172,173,255,169,170,172,255,167,169,171,255, +166,167,169,255,164,165,167,255,163,164,165,255,161,163,164,255,160,161,162,255,159,160,161,255,158,159,160,255,157,158,159,255, +156,158,159,255,156,157,159,255,156,157,158,255,156,157,158,255,157,157,159,255,157,158,159,255,157,158,159,255,158,159,160,255, +159,159,161,255,159,160,161,255,159,160,161,255,159,160,161,255,158,159,160,255,158,159,160,255,157,158,159,255,156,157,158,255, +155,156,157,255,154,155,156,255,153,153,154,255,152,152,153,255,150,150,150,255,149,149,149,255,148,148,148,255,146,146,146,255, +145,145,145,255,144,144,143,255,142,142,141,255,141,141,140,255,140,139,138,255,137,136,135,255,136,135,134,255,134,133,131,255, +132,131,129,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,132,133,135,255,198,201,204,255,196,199,202,255,195,198,203,255, +195,198,202,255,196,199,201,255,195,198,202,255,194,197,201,255,195,198,200,255,194,197,201,255,193,196,200,255,194,197,199,255, +193,196,200,255,192,195,198,255,193,195,199,255,192,194,198,255,191,195,197,255,191,194,197,255,190,193,196,255,190,194,196,255, +190,193,196,255,190,193,196,255,189,191,194,255,189,191,194,255,188,190,193,255,187,191,193,255,187,190,193,255,186,190,193,255, +186,189,191,255,185,189,191,255,186,188,190,255,184,187,190,255,185,187,190,255,184,187,189,255,184,186,189,255,183,186,188,255, +182,185,187,255,182,184,187,255,182,183,187,255,181,184,186,255,180,182,185,255,179,182,184,255,178,181,183,255,177,179,181,255, +176,178,180,255,174,176,178,255,173,175,177,255,171,173,175,255,169,171,173,255,167,169,170,255,165,166,168,255,163,165,166,255, +161,162,164,255,159,160,161,255,157,158,159,255,155,156,157,255,154,155,156,255,152,153,154,255,151,152,153,255,150,151,152,255, +150,150,151,255,149,150,151,255,150,150,151,255,150,151,152,255,151,152,153,255,152,152,153,255,153,153,154,255,153,154,155,255, +155,156,157,255,156,156,158,255,157,158,159,255,157,158,159,255,157,158,159,255,157,158,159,255,157,158,159,255,156,157,158,255, +156,156,157,255,155,155,156,255,153,153,154,255,152,152,153,255,150,150,152,255,149,149,150,255,148,148,148,255,147,146,146,255, +146,145,145,255,145,144,144,255,143,142,141,255,141,141,140,255,140,139,138,255,137,136,135,255,136,135,134,255,134,133,131,255, +132,131,129,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,132,134,135,255,198,201,205,255,197,200,203,255,196,199,202,255, +196,199,203,255,195,198,202,255,196,199,201,255,195,198,202,255,194,197,201,255,195,198,200,255,194,197,201,255,193,196,200,255, +194,197,200,255,193,196,199,255,192,195,198,255,193,195,199,255,191,194,198,255,192,194,198,255,191,194,197,255,190,194,196,255, +190,193,196,255,190,193,196,255,190,192,195,255,188,191,194,255,189,191,194,255,188,190,193,255,188,190,193,255,187,190,193,255, +186,189,192,255,186,188,191,255,186,189,191,255,185,187,190,255,184,187,190,255,185,186,190,255,184,186,189,255,184,186,188,255, +183,186,188,255,182,185,187,255,182,184,187,255,182,184,186,255,180,182,185,255,179,181,183,255,177,180,182,255,176,178,180,255, +174,176,178,255,172,174,176,255,169,171,173,255,167,169,171,255,165,167,167,255,162,163,165,255,159,161,162,255,156,157,159,255, +154,155,156,255,151,152,153,255,149,150,151,255,147,147,148,255,145,145,146,255,143,143,144,255,142,142,143,255,141,141,142,255, +141,140,142,255,140,140,141,255,140,140,142,255,141,141,142,255,142,142,143,255,144,144,145,255,146,146,146,255,147,148,149,255, +150,150,151,255,152,152,153,255,153,154,155,255,154,155,156,255,156,156,157,255,156,157,158,255,156,157,158,255,155,156,157,255, +156,156,157,255,155,155,156,255,153,153,154,255,152,152,153,255,150,151,151,255,150,150,150,255,149,148,148,255,148,146,146,255, +146,145,145,255,145,144,144,255,143,142,142,255,142,141,140,255,140,139,138,255,137,136,135,255,136,135,134,255,134,132,131,255, +132,131,129,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,132,134,135,255,198,202,205,255,197,199,204,255,197,199,203,255, +197,200,202,255,196,199,203,255,195,198,202,255,196,199,201,255,195,198,202,255,194,197,201,255,195,198,200,255,194,197,200,255, +193,196,199,255,194,197,200,255,193,195,199,255,192,196,198,255,192,195,198,255,191,194,197,255,192,195,198,255,190,193,196,255, +191,193,197,255,190,192,196,255,189,193,195,255,189,192,195,255,188,191,194,255,188,191,194,255,187,190,193,255,188,190,193,255, +186,189,192,255,187,189,192,255,186,188,191,255,185,188,191,255,185,187,190,255,184,187,190,255,185,186,189,255,184,186,189,255, +184,186,189,255,183,185,188,255,182,185,187,255,181,184,186,255,179,182,184,255,178,180,182,255,176,178,180,255,174,175,178,255, +171,173,175,255,168,170,172,255,165,167,169,255,162,163,165,255,158,159,161,255,155,156,158,255,152,153,154,255,148,149,150,255, +145,146,147,255,142,143,143,255,139,139,140,255,137,137,137,255,135,135,135,255,132,132,133,255,131,130,130,255,130,129,129,255, +129,129,129,255,129,129,129,255,129,129,129,255,130,129,129,255,131,130,131,255,133,133,133,255,136,135,135,255,139,138,139,255, +141,141,142,255,145,145,146,255,148,148,148,255,151,151,152,255,152,153,154,255,155,154,155,255,155,156,157,255,156,156,157,255, +155,156,156,255,155,155,156,255,153,154,154,255,152,153,153,255,151,151,151,255,150,150,150,255,149,149,149,255,147,147,147,255, +146,145,145,255,145,144,144,255,143,142,142,255,142,141,140,255,140,139,138,255,137,136,135,255,136,135,134,255,134,132,131,255, +132,131,129,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,132,134,135,255,199,202,205,255,197,201,203,255,196,200,204,255, +197,199,203,255,197,200,202,255,196,199,203,255,196,198,202,255,196,199,201,255,195,198,202,255,195,198,201,255,195,197,201,255, +194,197,200,255,194,196,199,255,193,196,200,255,193,195,199,255,193,195,198,255,192,195,198,255,191,194,197,255,192,195,198,255, +191,193,197,255,191,193,197,255,190,192,195,255,190,192,195,255,189,191,194,255,189,191,194,255,188,191,194,255,187,191,194,255, +187,190,193,255,187,190,193,255,186,189,192,255,186,189,192,255,186,189,191,255,186,188,191,255,185,188,190,255,185,187,190,255, +184,187,189,255,183,185,188,255,182,184,187,255,180,182,185,255,178,181,183,255,175,178,180,255,173,175,177,255,170,172,174,255, +166,168,170,255,163,165,166,255,159,160,162,255,154,156,157,255,151,152,153,255,147,148,149,255,143,143,144,255,139,140,140,255, +136,136,136,255,133,133,133,255,130,129,129,255,127,126,126,255,124,123,123,255,122,121,121,255,120,118,118,255,118,117,116,255, +117,115,114,255,116,115,114,255,116,114,114,255,116,115,114,255,117,116,116,255,119,119,118,255,123,122,122,255,126,126,126,255, +131,130,130,255,136,135,135,255,140,140,140,255,144,144,145,255,148,148,148,255,151,151,151,255,153,153,154,255,154,154,155,255, +154,154,155,255,153,154,154,255,154,154,154,255,153,153,153,255,151,151,151,255,150,150,150,255,149,149,149,255,147,147,147,255, +146,146,145,255,145,144,144,255,143,142,142,255,142,141,140,255,140,139,138,255,137,136,135,255,136,135,134,255,134,133,131,255, +132,131,129,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,132,134,136,255,199,202,206,255,197,200,203,255,197,201,204,255, +196,200,204,255,196,199,203,255,197,200,202,255,195,199,203,255,196,198,202,255,196,199,201,255,194,197,202,255,195,198,200,255, +195,197,201,255,193,196,200,255,194,197,199,255,193,196,200,255,192,195,198,255,192,195,199,255,192,195,198,255,192,194,197,255, +191,194,197,255,190,194,196,255,191,193,196,255,190,193,196,255,190,192,195,255,188,191,194,255,189,191,194,255,188,191,194,255, +187,191,194,255,187,190,193,255,187,189,192,255,186,189,192,255,186,189,192,255,186,189,192,255,185,188,191,255,185,188,190,255, +184,187,190,255,183,185,188,255,181,183,186,255,179,181,183,255,176,178,180,255,172,174,176,255,169,171,173,255,164,166,168,255, +160,162,164,255,156,157,158,255,151,152,153,255,147,147,148,255,142,143,143,255,138,138,139,255,134,134,135,255,132,130,131,255, +128,128,127,255,125,124,124,255,122,121,120,255,119,118,117,255,116,114,114,255,114,112,111,255,111,110,108,255,109,107,106,255, +107,105,104,255,106,104,102,255,104,102,100,255,104,102,100,255,104,102,100,255,105,103,102,255,108,105,104,255,112,109,109,255, +116,115,115,255,123,121,121,255,129,128,128,255,136,135,135,255,141,141,141,255,146,146,146,255,149,150,150,255,152,152,153,255, +153,154,154,255,153,155,155,255,154,154,154,255,153,153,153,255,151,151,151,255,150,150,150,255,149,149,149,255,147,147,147,255, +146,146,145,255,145,144,144,255,143,142,142,255,142,141,140,255,140,139,138,255,138,137,135,255,136,135,134,255,134,132,131,255, +132,131,128,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,133,134,136,255,199,202,206,255,198,201,204,255,198,200,203,255, +197,201,204,255,196,199,203,255,197,200,202,255,196,200,202,255,195,198,202,255,196,199,201,255,195,198,202,255,194,197,201,255, +195,198,200,255,194,197,201,255,193,196,200,255,194,197,199,255,193,195,199,255,192,196,198,255,193,196,199,255,191,194,197,255, +192,195,198,255,191,194,197,255,191,193,196,255,190,192,195,255,189,193,196,255,189,191,195,255,189,192,194,255,188,191,194,255, +188,190,193,255,188,190,193,255,187,190,193,255,187,190,193,255,187,190,193,255,187,189,192,255,186,189,191,255,185,188,191,255, +184,187,189,255,181,184,186,255,179,181,184,255,175,178,180,255,171,173,176,255,167,169,171,255,162,164,166,255,158,159,161,255, +152,153,156,255,148,149,150,255,144,144,145,255,140,140,140,255,136,136,136,255,132,132,132,255,129,128,129,255,126,126,125,255, +124,123,123,255,121,120,119,255,118,117,116,255,116,115,114,255,113,112,111,255,110,109,108,255,109,106,105,255,106,103,102,255, +103,101, 99,255,101, 98, 96,255, 98, 95, 93,255, 97, 93, 91,255, 95, 91, 89,255, 95, 90, 87,255, 94, 91, 88,255, 96, 93, 90,255, +101, 97, 96,255,107,104,103,255,115,113,112,255,123,122,121,255,132,131,131,255,139,138,138,255,145,145,145,255,149,149,149,255, +151,152,152,255,154,154,154,255,154,154,154,255,153,153,153,255,151,151,151,255,150,150,150,255,149,149,149,255,147,147,147,255, +146,146,146,255,145,145,144,255,143,142,142,255,142,141,140,255,140,139,138,255,138,136,135,255,136,135,133,255,134,132,130,255, +132,130,128,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,133,134,136,255,200,203,206,255,198,201,205,255,197,200,204,255, +198,200,203,255,197,200,204,255,197,200,203,255,196,199,202,255,196,199,203,255,196,199,202,255,195,198,201,255,195,198,202,255, +195,198,201,255,194,197,201,255,194,197,201,255,194,197,200,255,193,197,200,255,193,196,199,255,192,196,199,255,193,195,199,255, +191,194,197,255,192,195,198,255,191,193,197,255,191,193,196,255,190,192,196,255,189,193,195,255,190,192,195,255,189,192,195,255, +189,192,195,255,189,192,195,255,189,191,194,255,189,191,194,255,188,191,194,255,188,191,194,255,186,189,192,255,185,188,190,255, +182,185,187,255,179,181,184,255,175,177,179,255,171,173,175,255,165,167,169,255,161,162,164,255,155,156,158,255,150,151,153,255, +146,147,148,255,142,143,143,255,139,139,139,255,136,136,136,255,132,132,132,255,131,130,130,255,128,127,127,255,126,124,125,255, +123,122,122,255,121,120,119,255,119,118,117,255,117,115,114,255,114,112,111,255,112,110,109,255,109,107,106,255,106,104,102,255, +104,101, 99,255,101, 98, 96,255, 98, 95, 92,255, 95, 92, 89,255, 92, 89, 85,255, 90, 85, 82,255, 88, 84, 78,255, 87, 82, 77,255, + 87, 83, 77,255, 92, 87, 82,255, 99, 95, 91,255,108,106,103,255,119,117,116,255,129,129,128,255,138,138,137,255,145,145,145,255, +148,149,149,255,152,152,152,255,152,152,152,255,152,152,153,255,151,151,151,255,150,150,150,255,149,149,149,255,148,147,147,255, +146,146,146,255,145,145,144,255,143,143,142,255,142,141,140,255,140,139,138,255,138,136,135,255,136,134,133,255,134,132,130,255, +132,130,127,255, 97, 96, 94,255, 61, 61, 61,255, 60, 60, 60,255,133,134,136,255,200,203,206,255,198,201,204,255,198,201,205,255, +197,200,204,255,198,201,203,255,197,200,204,255,197,199,203,255,197,200,202,255,196,199,203,255,196,198,202,255,196,199,201,255, +195,198,202,255,195,198,200,255,195,198,201,255,194,197,200,255,194,197,199,255,193,196,200,255,193,196,199,255,192,196,198,255, +192,195,198,255,191,194,197,255,191,194,197,255,190,193,196,255,191,193,197,255,190,192,196,255,189,193,195,255,189,192,195,255, +189,192,195,255,189,192,195,255,189,192,195,255,189,192,195,255,189,192,195,255,188,191,194,255,186,189,192,255,183,186,189,255, +179,182,184,255,175,177,179,255,170,172,174,255,165,167,168,255,160,160,163,255,154,155,157,255,149,150,152,255,146,146,147,255, +143,142,144,255,140,140,140,255,138,138,138,255,135,135,135,255,133,133,133,255,131,131,131,255,129,129,129,255,128,127,127,255, +125,125,124,255,123,123,122,255,122,120,119,255,119,118,117,255,117,115,115,255,114,112,112,255,112,110,109,255,109,107,106,255, +106,104,103,255,103,101,100,255,101, 98, 96,255, 97, 94, 92,255, 94, 91, 87,255, 91, 87, 83,255, 87, 83, 79,255, 85, 79, 72,255, + 82, 76, 68,255, 81, 75, 67,255, 84, 78, 71,255, 91, 87, 81,255,103,100, 97,255,117,115,113,255,129,127,126,255,139,138,138,255, +145,145,145,255,149,149,149,255,151,151,151,255,152,152,153,255,151,151,151,255,151,150,150,255,150,149,149,255,148,147,147,255, +147,146,146,255,145,145,144,255,143,143,142,255,141,141,140,255,140,139,137,255,138,136,135,255,135,134,132,255,133,131,129,255, +131,129,126,255, 96, 95, 94,255, 61, 61, 61,255, 60, 60, 60,255,133,134,136,255,200,203,207,255,199,202,204,255,199,202,205,255, +198,201,205,255,197,200,204,255,198,201,203,255,197,200,204,255,196,199,203,255,197,200,202,255,195,199,203,255,196,198,201,255, +196,199,202,255,194,197,201,255,195,198,200,255,195,198,201,255,193,196,199,255,194,197,200,255,194,196,200,255,192,196,198,255, +193,196,199,255,192,195,198,255,192,195,198,255,191,194,197,255,190,193,196,255,191,193,196,255,190,193,196,255,190,193,196,255, +190,193,196,255,190,193,196,255,190,193,196,255,190,193,196,255,189,192,195,255,187,190,193,255,184,187,190,255,180,183,185,255, +175,177,179,255,170,172,174,255,164,166,168,255,158,160,161,255,154,155,156,255,150,150,152,255,147,148,148,255,144,145,146,255, +142,143,143,255,140,140,140,255,138,138,139,255,137,137,137,255,135,135,135,255,134,133,134,255,132,132,132,255,130,129,129,255, +128,128,128,255,126,126,125,255,124,124,123,255,123,121,121,255,120,119,119,255,118,116,116,255,115,113,113,255,113,111,110,255, +110,108,107,255,107,105,104,255,104,102,100,255,101, 99, 97,255, 98, 95, 92,255, 95, 91, 88,255, 91, 87, 82,255, 87, 82, 77,255, + 83, 77, 70,255, 79, 73, 64,255, 77, 71, 60,255, 78, 72, 63,255, 86, 80, 73,255,101, 97, 93,255,117,115,113,255,131,129,128,255, +141,140,140,255,148,147,147,255,150,150,150,255,151,151,151,255,152,151,151,255,151,150,151,255,150,149,149,255,148,147,147,255, +147,146,146,255,146,145,144,255,143,142,141,255,141,140,139,255,140,138,137,255,137,136,134,255,135,134,132,255,132,131,128,255, +131,129,126,255, 96, 95, 93,255, 61, 61, 61,255, 60, 60, 60,255,133,135,136,255,200,203,207,255,198,201,205,255,199,202,205,255, +198,202,204,255,197,200,205,255,198,201,204,255,197,201,203,255,197,200,204,255,196,199,203,255,197,200,202,255,196,199,202,255, +195,198,202,255,196,199,201,255,195,198,201,255,194,198,201,255,195,197,201,255,193,196,199,255,194,197,200,255,193,195,199,255, +193,196,199,255,192,195,198,255,191,194,197,255,192,194,197,255,192,194,197,255,191,194,197,255,191,194,197,255,191,194,197,255, +192,195,198,255,192,195,198,255,192,195,198,255,190,193,196,255,188,191,194,255,185,188,191,255,181,184,186,255,175,177,180,255, +170,171,173,255,163,165,167,255,158,159,161,255,154,155,156,255,151,152,153,255,148,149,150,255,147,147,148,255,145,145,146,255, +143,143,144,255,142,143,143,255,141,141,141,255,139,139,140,255,138,138,138,255,136,136,136,255,134,134,135,255,133,132,133,255, +131,131,131,255,129,129,129,255,127,127,126,255,126,125,124,255,124,123,122,255,121,120,120,255,119,117,117,255,116,115,114,255, +114,112,112,255,111,109,108,255,108,106,105,255,105,103,101,255,102, 99, 97,255, 98, 95, 92,255, 95, 91, 87,255, 90, 86, 81,255, + 86, 81, 75,255, 81, 75, 68,255, 77, 71, 62,255, 74, 68, 58,255, 75, 68, 58,255, 84, 77, 69,255,102, 97, 93,255,120,118,116,255, +134,133,132,255,144,143,142,255,148,148,148,255,151,150,151,255,152,152,152,255,151,151,150,255,150,149,149,255,148,147,147,255, +147,146,146,255,146,145,144,255,143,142,141,255,141,140,139,255,139,138,136,255,137,135,133,255,135,133,130,255,132,130,127,255, +130,127,124,255, 96, 94, 92,255, 61, 61, 61,255, 60, 60, 60,255,133,135,136,255,201,204,207,255,199,202,206,255,198,201,205,255, +199,202,205,255,198,201,205,255,197,200,204,255,198,200,203,255,197,200,204,255,197,200,203,255,196,199,203,255,196,199,203,255, +196,199,202,255,195,198,202,255,195,198,202,255,195,198,201,255,194,198,200,255,194,197,200,255,193,196,199,255,194,196,200,255, +192,195,198,255,193,196,199,255,192,195,198,255,192,194,197,255,191,194,197,255,192,195,198,255,192,195,198,255,192,195,199,255, +193,196,199,255,193,196,199,255,192,195,198,255,190,193,196,255,187,189,193,255,182,184,187,255,176,178,180,255,170,171,174,255, +163,165,167,255,159,160,162,255,155,156,158,255,152,154,155,255,150,151,153,255,149,150,151,255,148,149,150,255,147,147,148,255, +146,146,147,255,145,145,146,255,143,143,144,255,142,142,143,255,141,141,142,255,139,139,140,255,138,138,138,255,136,136,137,255, +134,134,135,255,133,132,132,255,131,130,130,255,129,128,129,255,127,126,126,255,125,124,124,255,122,121,121,255,120,119,119,255, +117,116,116,255,114,113,112,255,112,110,109,255,109,107,106,255,106,104,102,255,102, 99, 97,255, 99, 95, 93,255, 95, 91, 87,255, + 90, 86, 81,255, 86, 80, 75,255, 81, 75, 66,255, 76, 70, 60,255, 73, 66, 57,255, 73, 66, 57,255, 84, 78, 70,255,106,103,100,255, +126,125,123,255,139,138,137,255,147,146,145,255,150,149,149,255,151,151,151,255,151,151,150,255,150,149,149,255,148,147,147,255, +147,146,145,255,145,144,143,255,143,142,140,255,141,140,138,255,139,137,135,255,137,135,133,255,134,132,129,255,131,129,126,255, +129,126,123,255, 95, 93, 91,255, 61, 61, 61,255, 60, 60, 60,255,133,135,136,255,201,204,207,255,200,203,205,255,199,202,206,255, +198,201,205,255,198,201,204,255,199,202,205,255,198,201,205,255,198,201,203,255,197,201,204,255,196,200,203,255,197,200,203,255, +196,199,203,255,195,198,201,255,196,199,202,255,195,198,201,255,195,198,201,255,195,198,201,255,194,197,200,255,194,197,200,255, +193,196,199,255,192,195,198,255,193,195,198,255,192,195,198,255,192,195,198,255,193,195,199,255,194,196,199,255,193,196,200,255, +193,196,200,255,194,197,200,255,192,195,198,255,188,191,194,255,184,186,189,255,177,179,182,255,171,172,174,255,164,166,167,255, +160,161,162,255,157,158,159,255,155,155,157,255,154,154,156,255,152,153,154,255,151,152,153,255,150,151,152,255,149,150,151,255, +148,149,150,255,147,147,148,255,146,146,147,255,145,145,146,255,143,144,144,255,142,142,143,255,141,141,142,255,139,139,139,255, +137,138,138,255,136,136,136,255,134,134,134,255,132,131,132,255,130,130,130,255,128,127,127,255,126,126,126,255,124,123,123,255, +121,120,120,255,118,117,117,255,116,114,114,255,113,111,110,255,109,108,107,255,106,104,103,255,103,101, 99,255, 99, 96, 93,255, + 95, 91, 88,255, 90, 86, 81,255, 85, 80, 74,255, 80, 74, 66,255, 76, 69, 59,255, 72, 65, 57,255, 72, 66, 58,255, 90, 84, 77,255, +116,114,111,255,134,133,131,255,144,143,143,255,149,148,148,255,151,151,150,255,151,150,150,255,150,149,149,255,148,147,146,255, +147,146,145,255,145,144,143,255,142,141,140,255,141,140,138,255,139,137,135,255,136,134,132,255,134,132,129,255,131,128,125,255, +128,125,121,255, 95, 93, 90,255, 61, 61, 61,255, 60, 60, 60,255,133,135,137,255,201,204,207,255,200,202,205,255,199,203,206,255, +198,202,205,255,199,202,205,255,199,202,204,255,198,201,205,255,198,201,204,255,197,201,203,255,196,199,204,255,197,200,202,255, +197,200,202,255,196,199,203,255,195,198,201,255,196,199,202,255,194,197,200,255,195,198,201,255,194,197,200,255,193,197,199,255, +194,196,200,255,193,196,199,255,193,195,199,255,193,196,199,255,193,196,199,255,194,197,200,255,194,197,201,255,195,198,201,255, +195,198,201,255,194,197,200,255,191,194,196,255,185,188,190,255,179,181,183,255,172,174,175,255,166,167,169,255,161,162,164,255, +159,160,161,255,156,157,160,255,155,156,158,255,155,156,158,255,155,156,157,255,154,155,156,255,153,154,155,255,152,153,154,255, +151,152,154,255,150,151,152,255,149,150,151,255,148,148,150,255,146,147,148,255,145,146,147,255,143,144,145,255,142,142,143,255, +141,141,141,255,139,139,140,255,137,137,138,255,135,135,136,255,133,133,133,255,131,131,131,255,129,128,128,255,127,126,127,255, +124,124,124,255,122,121,121,255,120,118,118,255,116,115,115,255,113,111,111,255,111,109,108,255,107,105,103,255,103,100, 98,255, + 99, 96, 93,255, 94, 90, 87,255, 90, 85, 81,255, 85, 79, 72,255, 79, 72, 63,255, 74, 67, 58,255, 71, 64, 58,255, 76, 70, 63,255, +104,100, 96,255,128,126,125,255,141,140,139,255,147,146,146,255,149,149,148,255,150,149,149,255,149,149,148,255,148,147,146,255, +146,145,144,255,145,144,142,255,142,141,140,255,140,139,137,255,138,137,134,255,135,134,131,255,134,131,128,255,130,128,124,255, +127,124,120,255, 94, 92, 89,255, 61, 61, 61,255, 60, 60, 60,255,134,135,137,255,201,204,208,255,200,203,206,255,200,203,205,255, +199,202,206,255,198,201,205,255,199,202,205,255,198,201,204,255,197,200,204,255,198,201,204,255,197,200,204,255,196,199,203,255, +196,200,202,255,197,198,203,255,195,199,201,255,196,199,202,255,195,197,201,255,194,198,200,255,195,197,201,255,193,197,199,255, +194,197,200,255,194,196,200,255,194,196,200,255,194,197,200,255,194,197,200,255,195,198,201,255,196,199,202,255,196,199,202,255, +195,198,201,255,193,196,198,255,187,191,193,255,181,183,185,255,173,175,177,255,168,169,170,255,163,164,165,255,161,161,163,255, +160,161,162,255,159,160,161,255,158,159,161,255,158,159,160,255,157,158,160,255,156,157,159,255,156,157,158,255,155,156,158,255, +154,155,156,255,153,154,155,255,152,153,154,255,151,152,153,255,150,150,151,255,148,149,150,255,147,147,148,255,145,146,147,255, +144,144,145,255,142,143,143,255,141,141,141,255,138,139,139,255,136,136,137,255,135,134,135,255,133,132,133,255,130,130,130,255, +128,127,127,255,126,124,124,255,123,122,122,255,120,119,118,255,116,115,115,255,114,112,112,255,110,109,108,255,107,104,103,255, +103,100, 97,255, 99, 95, 92,255, 94, 90, 86,255, 89, 84, 79,255, 83, 78, 70,255, 78, 71, 62,255, 74, 66, 58,255, 71, 65, 59,255, + 91, 86, 80,255,121,119,116,255,138,137,136,255,146,145,145,255,150,149,149,255,150,149,149,255,149,148,148,255,147,146,146,255, +146,145,144,255,144,143,142,255,142,141,139,255,140,138,136,255,137,136,133,255,135,133,131,255,133,130,126,255,127,126,123,255, +124,120,115,255, 74, 72, 69,255, 61, 61, 61,255, 60, 60, 60,255,134,135,137,255,202,205,208,255,199,202,206,255,200,203,205,255, +200,203,206,255,199,202,206,255,198,201,205,255,199,202,204,255,197,200,205,255,198,201,204,255,198,201,203,255,196,199,204,255, +197,200,203,255,197,199,202,255,196,198,202,255,195,199,201,255,195,197,201,255,194,198,200,255,195,198,201,255,194,196,200,255, +193,197,199,255,193,196,199,255,194,197,200,255,195,198,201,255,195,198,201,255,197,200,203,255,196,200,204,255,197,200,204,255, +195,197,201,255,190,192,195,255,183,185,188,255,176,178,180,255,169,170,172,255,165,166,167,255,162,163,165,255,162,163,164,255, +162,163,164,255,160,161,163,255,160,161,163,255,161,161,163,255,159,161,162,255,160,160,162,255,158,159,161,255,158,159,160,255, +157,158,160,255,155,156,158,255,155,156,157,255,154,155,156,255,152,153,154,255,151,152,153,255,150,151,152,255,148,149,150,255, +147,147,148,255,145,146,147,255,143,143,144,255,141,142,143,255,140,140,140,255,137,137,138,255,136,136,135,255,133,133,134,255, +131,130,131,255,129,129,128,255,126,125,126,255,123,122,122,255,120,119,119,255,117,116,116,255,114,112,112,255,110,108,107,255, +107,104,103,255,103,100, 98,255, 98, 94, 92,255, 93, 89, 85,255, 87, 83, 77,255, 82, 76, 67,255, 77, 70, 60,255, 71, 65, 58,255, + 82, 76, 69,255,115,112,108,255,135,134,133,255,145,144,143,255,149,148,148,255,150,149,149,255,149,148,147,255,147,146,145,255, +146,145,144,255,144,143,141,255,141,140,138,255,140,138,136,255,137,135,133,255,134,132,129,255,130,127,125,255,128,125,120,255, + 93, 89, 84,255, 24, 24, 25,255, 62, 62, 62,255, 60, 60, 60,255,134,135,137,255,202,205,208,255,200,203,207,255,199,202,206,255, +200,203,205,255,199,202,206,255,199,202,205,255,198,201,205,255,198,201,205,255,198,201,204,255,197,200,203,255,197,200,204,255, +197,200,203,255,196,199,202,255,196,199,202,255,196,198,202,255,196,199,202,255,195,198,201,255,194,197,200,255,194,198,200,255, +194,197,200,255,194,197,200,255,195,198,201,255,195,198,201,255,197,200,203,255,198,201,204,255,198,201,204,255,197,200,203,255, +193,195,198,255,186,189,191,255,178,180,182,255,171,173,173,255,166,167,169,255,165,166,167,255,164,165,166,255,164,165,167,255, +164,165,166,255,164,165,166,255,163,164,166,255,163,164,166,255,163,164,166,255,162,164,165,255,161,162,164,255,161,162,163,255, +160,161,162,255,158,160,161,255,158,159,161,255,156,157,160,255,155,156,158,255,154,155,157,255,152,153,155,255,151,152,153,255, +150,150,152,255,148,148,150,255,146,147,147,255,144,145,145,255,142,143,144,255,140,141,141,255,138,138,139,255,136,136,137,255, +134,134,134,255,131,131,131,255,129,129,129,255,127,126,126,255,123,122,123,255,121,120,119,255,117,116,116,255,114,112,111,255, +110,108,107,255,106,104,102,255,102, 99, 96,255, 97, 93, 90,255, 93, 88, 83,255, 87, 81, 75,255, 81, 74, 64,255, 75, 67, 58,255, + 77, 71, 66,255,107,104,100,255,134,132,130,255,144,143,142,255,149,148,147,255,150,149,148,255,149,148,147,255,147,146,145,255, +145,144,143,255,143,142,141,255,141,139,138,255,139,137,134,255,137,134,132,255,133,130,127,255,131,128,123,255,112,107,102,255, + 5, 5, 4,255, 29, 29, 29,255, 61, 61, 61,255, 60, 60, 60,255,134,135,137,255,202,205,208,255,200,203,207,255,199,203,206,255, +200,202,206,255,200,203,205,255,199,202,206,255,198,201,205,255,199,202,205,255,198,201,204,255,197,200,204,255,198,201,204,255, +197,200,203,255,196,199,203,255,197,199,203,255,196,199,202,255,196,199,202,255,195,198,201,255,194,197,200,255,195,198,201,255, +195,198,201,255,194,197,200,255,195,198,201,255,197,200,203,255,198,201,204,255,198,202,205,255,198,201,205,255,196,199,202,255, +190,192,195,255,182,183,185,255,174,175,176,255,169,170,171,255,167,168,168,255,166,167,169,255,166,167,169,255,166,167,169,255, +166,168,169,255,166,168,169,255,166,167,169,255,166,167,169,255,165,167,169,255,165,166,168,255,164,166,167,255,164,165,167,255, +162,164,166,255,161,163,165,255,161,162,164,255,159,160,162,255,158,159,161,255,156,157,159,255,155,156,158,255,154,155,156,255, +152,153,154,255,150,151,153,255,149,150,151,255,147,148,149,255,145,146,147,255,144,144,145,255,141,141,142,255,139,139,140,255, +137,136,138,255,134,134,135,255,132,132,132,255,130,129,130,255,127,126,126,255,124,123,123,255,120,119,119,255,117,116,115,255, +114,112,111,255,110,108,106,255,106,103,101,255,101, 98, 95,255, 97, 93, 89,255, 91, 86, 81,255, 85, 79, 71,255, 78, 71, 61,255, + 78, 71, 65,255,107,103, 97,255,132,131,128,255,144,143,142,255,149,148,146,255,149,148,147,255,149,148,147,255,148,147,145,255, +145,144,142,255,143,141,139,255,141,139,137,255,138,136,134,255,135,133,130,255,132,129,125,255,123,119,115,255, 26, 25, 24,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,137,255,202,205,208,255,200,204,206,255,199,203,207,255, +199,202,206,255,200,203,205,255,199,202,206,255,198,201,205,255,198,201,204,255,199,202,205,255,198,201,204,255,197,201,204,255, +198,200,204,255,197,199,203,255,197,200,203,255,196,199,202,255,195,199,201,255,196,198,202,255,195,197,201,255,194,197,200,255, +194,197,200,255,195,198,201,255,197,200,203,255,198,201,204,255,198,202,205,255,200,203,206,255,198,201,204,255,193,196,199,255, +186,188,190,255,177,178,180,255,171,172,173,255,168,169,170,255,167,168,171,255,168,169,170,255,169,170,172,255,169,170,172,255, +169,171,172,255,169,171,172,255,169,171,172,255,168,170,172,255,168,170,171,255,168,169,170,255,167,169,171,255,165,167,169,255, +165,167,169,255,164,166,168,255,162,164,166,255,162,163,165,255,161,162,164,255,159,160,162,255,158,159,161,255,156,157,159,255, +155,156,158,255,153,154,156,255,151,152,153,255,150,151,152,255,148,149,150,255,146,146,147,255,144,145,146,255,142,142,143,255, +139,140,140,255,137,138,138,255,135,135,135,255,132,132,132,255,130,129,130,255,127,126,126,255,123,123,122,255,120,119,119,255, +117,116,115,255,113,112,111,255,109,107,105,255,105,102, 99,255,100, 96, 93,255, 95, 91, 87,255, 89, 84, 77,255, 82, 76, 66,255, + 73, 66, 57,255,102, 98, 92,255,133,131,129,255,144,143,142,255,149,148,147,255,149,148,147,255,148,147,146,255,146,145,144,255, +144,143,142,255,142,140,138,255,139,137,135,255,137,135,131,255,134,131,128,255,128,126,121,255, 59, 58, 55,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,137,255,202,205,209,255,201,204,206,255,200,203,206,255, +199,202,207,255,199,202,205,255,200,203,205,255,199,202,206,255,199,202,205,255,199,202,205,255,198,201,204,255,198,200,203,255, +198,201,204,255,197,200,203,255,196,200,202,255,197,199,203,255,195,198,201,255,196,199,202,255,196,198,202,255,195,198,201,255, +196,198,202,255,196,199,202,255,197,200,203,255,199,202,205,255,200,203,207,255,200,203,206,255,198,201,204,255,191,193,196,255, +181,183,185,255,174,175,176,255,170,171,172,255,170,171,172,255,170,171,172,255,170,171,173,255,170,172,173,255,171,172,174,255, +171,172,174,255,171,173,175,255,171,173,174,255,170,172,174,255,170,172,174,255,169,171,174,255,169,171,173,255,168,170,172,255, +167,169,171,255,166,168,170,255,165,167,169,255,164,166,168,255,163,164,166,255,162,163,165,255,160,162,164,255,159,160,162,255, +157,159,160,255,156,157,159,255,154,155,156,255,152,153,154,255,150,151,153,255,148,149,150,255,146,147,148,255,145,145,146,255, +142,142,143,255,139,140,140,255,137,138,138,255,135,135,135,255,132,132,132,255,129,129,130,255,127,126,126,255,123,122,122,255, +119,119,118,255,116,115,114,255,112,110,109,255,108,106,104,255,104,101, 97,255, 99, 94, 92,255, 93, 89, 83,255, 86, 80, 73,255, + 78, 71, 61,255, 88, 82, 76,255,135,133,131,255,144,143,142,255,149,147,147,255,149,148,147,255,148,147,146,255,145,144,143,255, +144,142,140,255,142,140,137,255,138,136,133,255,134,132,129,255,134,131,126,255, 85, 83, 79,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,202,205,209,255,201,204,206,255,200,203,207,255, +199,202,207,255,200,203,206,255,200,203,205,255,199,202,205,255,198,201,205,255,199,202,204,255,197,200,205,255,198,201,204,255, +198,201,204,255,196,199,202,255,197,200,203,255,197,200,203,255,196,199,202,255,195,198,201,255,195,199,201,255,196,199,202,255, +196,198,202,255,196,199,203,255,198,201,204,255,200,203,206,255,200,204,207,255,200,203,206,255,196,199,202,255,187,189,191,255, +178,178,180,255,172,173,174,255,171,172,173,255,171,172,174,255,172,173,174,255,173,174,176,255,173,175,177,255,173,175,177,255, +174,176,177,255,174,175,177,255,174,175,177,255,173,175,177,255,173,175,177,255,172,174,176,255,171,173,175,255,171,173,175,255, +169,171,173,255,168,170,173,255,168,170,172,255,166,168,170,255,165,167,169,255,164,166,168,255,162,164,166,255,161,163,164,255, +160,161,163,255,158,159,161,255,156,158,159,255,154,155,157,255,152,153,155,255,151,152,153,255,149,149,150,255,146,147,148,255, +145,145,146,255,142,142,143,255,139,140,140,255,138,138,138,255,135,135,135,255,132,131,132,255,129,128,128,255,126,125,125,255, +122,121,121,255,119,117,117,255,115,113,113,255,111,109,107,255,107,105,102,255,102, 98, 96,255, 97, 93, 88,255, 90, 85, 79,255, + 83, 76, 66,255, 80, 73, 65,255,137,135,133,255,146,145,144,255,149,148,147,255,148,148,146,255,147,146,144,255,146,144,142,255, +143,141,139,255,140,138,136,255,137,134,131,255,136,132,128,255, 95, 91, 88,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,202,205,209,255,200,204,206,255,200,203,207,255, +201,204,207,255,199,202,206,255,200,203,205,255,200,203,206,255,198,201,205,255,198,201,204,255,199,202,205,255,197,200,204,255, +197,200,203,255,198,201,204,255,196,199,202,255,197,200,203,255,196,199,202,255,195,198,201,255,196,199,202,255,195,198,201,255, +196,199,202,255,197,200,203,255,199,202,205,255,201,204,207,255,202,205,208,255,200,203,206,255,193,195,198,255,183,184,186,255, +175,175,176,255,172,173,174,255,173,174,174,255,174,175,176,255,175,176,177,255,175,176,179,255,176,178,179,255,176,178,180,255, +176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,175,177,179,255,174,177,179,255,174,176,178,255,173,175,177,255, +172,174,176,255,171,173,175,255,170,172,174,255,169,171,173,255,168,170,172,255,166,168,170,255,165,166,169,255,163,165,167,255, +161,163,165,255,160,162,163,255,158,159,161,255,157,158,159,255,155,156,157,255,152,153,155,255,151,152,153,255,149,150,151,255, +146,147,148,255,145,145,146,255,142,143,143,255,139,140,140,255,137,137,138,255,134,134,135,255,131,131,131,255,129,128,128,255, +125,125,124,255,122,121,121,255,118,116,116,255,114,112,111,255,110,108,106,255,105,102,100,255,100, 96, 93,255, 94, 90, 84,255, + 87, 81, 73,255, 77, 70, 60,255,133,131,130,255,148,147,146,255,148,148,146,255,148,147,146,255,146,145,143,255,144,142,140,255, +142,140,137,255,138,135,132,255,136,133,129,255,106,102, 99,255, 9, 8, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,205,209,255,200,203,206,255,201,204,207,255, +201,204,207,255,199,202,206,255,200,203,205,255,199,203,206,255,199,201,205,255,198,202,204,255,199,202,205,255,198,200,204,255, +197,201,203,255,198,201,204,255,197,199,203,255,196,200,202,255,196,199,202,255,195,198,201,255,195,199,202,255,195,199,202,255, +197,200,203,255,197,200,203,255,200,203,206,255,201,204,208,255,202,205,209,255,199,202,205,255,190,193,194,255,179,180,181,255, +174,175,175,255,174,174,175,255,175,176,177,255,175,177,178,255,177,178,180,255,177,179,181,255,178,180,182,255,178,180,182,255, +178,180,182,255,178,180,182,255,178,180,182,255,177,180,182,255,177,179,181,255,176,178,181,255,176,178,180,255,175,177,180,255, +174,176,179,255,173,175,177,255,172,174,176,255,171,173,175,255,169,171,173,255,168,170,172,255,166,168,171,255,165,167,169,255, +164,165,167,255,162,163,165,255,160,162,163,255,159,160,162,255,157,158,160,255,155,156,157,255,153,154,155,255,151,152,153,255, +149,150,151,255,147,147,148,255,144,145,146,255,142,142,143,255,139,139,140,255,137,137,138,255,134,134,134,255,131,131,131,255, +128,126,127,255,125,124,124,255,121,119,119,255,117,115,115,255,113,110,109,255,108,106,102,255,104,100, 96,255, 98, 93, 89,255, + 90, 85, 78,255, 83, 75, 65,255,126,122,119,255,149,148,147,255,149,147,147,255,147,146,144,255,146,144,142,255,143,141,139,255, +139,137,134,255,138,136,132,255,119,116,112,255, 27, 25, 24,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,206,209,255,200,203,206,255,201,204,207,255, +201,204,207,255,200,202,206,255,199,203,205,255,200,203,206,255,199,202,205,255,198,201,204,255,198,202,205,255,198,201,204,255, +197,200,203,255,197,201,203,255,197,199,203,255,196,200,202,255,196,199,202,255,196,198,201,255,196,199,202,255,196,198,201,255, +197,200,203,255,198,201,204,255,200,203,207,255,202,205,208,255,203,206,209,255,198,200,203,255,187,188,190,255,177,178,178,255, +174,175,175,255,176,176,177,255,177,178,180,255,178,179,181,255,179,180,182,255,180,182,184,255,180,182,184,255,180,183,185,255, +181,183,185,255,180,183,185,255,180,183,185,255,180,182,184,255,179,182,184,255,178,181,183,255,178,180,182,255,177,179,182,255, +176,178,180,255,175,177,179,255,174,176,179,255,173,174,177,255,171,174,176,255,170,172,174,255,168,170,172,255,167,169,171,255, +166,168,169,255,164,165,167,255,162,164,166,255,161,162,164,255,159,160,162,255,157,158,160,255,155,156,157,255,153,154,155,255, +151,152,153,255,148,149,150,255,146,147,148,255,144,145,146,255,141,142,143,255,138,139,140,255,136,136,137,255,133,133,133,255, +130,129,129,255,127,126,126,255,123,122,122,255,119,117,116,255,115,113,112,255,111,109,106,255,105,102, 99,255,100, 96, 92,255, + 94, 89, 83,255, 86, 79, 70,255,117,114,109,255,150,149,149,255,148,147,146,255,146,145,143,255,144,142,140,255,141,139,136,255, +140,137,134,255,122,119,115,255, 16, 16, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,206,209,255,201,203,206,255,200,203,206,255, +200,204,207,255,200,202,206,255,199,203,205,255,199,203,205,255,199,202,205,255,198,201,204,255,199,202,205,255,198,201,204,255, +197,200,203,255,198,201,204,255,197,199,203,255,196,200,202,255,197,199,202,255,197,198,201,255,197,198,201,255,196,200,203,255, +197,200,203,255,198,201,205,255,201,204,207,255,203,206,209,255,203,205,208,255,197,199,201,255,184,186,186,255,176,176,176,255, +176,177,178,255,177,179,180,255,179,180,182,255,180,182,184,255,181,183,185,255,182,184,186,255,183,185,187,255,183,185,187,255, +183,185,188,255,183,185,188,255,183,185,187,255,182,185,187,255,182,184,186,255,181,183,186,255,180,183,185,255,179,181,184,255, +178,181,183,255,177,180,182,255,176,178,180,255,175,177,179,255,174,176,178,255,172,174,176,255,171,173,175,255,170,172,173,255, +168,169,171,255,166,168,169,255,165,166,168,255,163,164,166,255,161,162,164,255,158,160,161,255,157,158,160,255,155,156,157,255, +152,153,154,255,151,152,153,255,148,149,150,255,146,146,147,255,144,144,145,255,141,141,142,255,138,138,139,255,136,135,136,255, +132,132,132,255,129,128,128,255,125,124,124,255,121,120,120,255,117,116,115,255,113,110,109,255,108,105,102,255,103, 99, 95,255, + 97, 92, 86,255, 89, 83, 75,255,112,109,102,255,151,150,148,255,147,146,144,255,145,144,141,255,142,140,137,255,140,137,134,255, +122,119,115,255, 17, 16, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,206,209,255,202,204,207,255,201,203,206,255, +200,204,207,255,201,202,207,255,200,203,206,255,199,203,205,255,199,202,205,255,198,201,204,255,199,202,205,255,198,201,204,255, +197,200,203,255,198,201,203,255,197,199,203,255,196,200,202,255,197,199,202,255,197,198,201,255,197,198,201,255,196,200,203,255, +197,200,203,255,199,202,205,255,201,204,208,255,203,206,209,255,203,205,208,255,195,197,200,255,181,182,183,255,176,177,177,255, +178,179,179,255,180,181,182,255,181,183,184,255,183,185,186,255,184,186,188,255,184,186,188,255,185,187,189,255,185,187,189,255, +185,187,190,255,185,187,190,255,185,187,189,255,184,186,189,255,184,186,188,255,182,185,188,255,182,184,187,255,181,184,186,255, +180,182,185,255,179,181,184,255,178,180,182,255,176,179,181,255,175,177,180,255,174,176,178,255,172,174,177,255,171,173,175,255, +170,172,174,255,168,170,172,255,166,168,169,255,165,166,167,255,162,164,166,255,161,162,164,255,159,160,161,255,157,158,159,255, +155,156,157,255,153,153,155,255,150,151,152,255,148,149,150,255,145,146,147,255,143,143,144,255,140,140,141,255,137,137,138,255, +134,134,134,255,131,130,130,255,128,127,126,255,124,123,122,255,119,118,116,255,115,113,111,255,111,108,106,255,105,102, 98,255, + 99, 94, 90,255, 91, 86, 79,255,112,108,101,255,151,149,147,255,146,145,143,255,143,141,138,255,143,140,137,255,123,120,117,255, + 26, 26, 25,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,206,209,255,202,204,207,255,201,203,206,255, +200,204,207,255,201,203,207,255,200,202,206,255,199,203,205,255,199,202,205,255,199,202,205,255,198,201,204,255,198,201,204,255, +197,200,203,255,198,201,204,255,197,199,203,255,196,200,202,255,197,199,202,255,197,199,202,255,197,198,201,255,197,200,203,255, +197,200,203,255,199,202,205,255,202,204,208,255,203,206,209,255,203,205,209,255,194,195,197,255,180,180,180,255,177,178,178,255, +179,181,181,255,182,183,184,255,183,185,187,255,184,186,188,255,186,188,190,255,186,188,191,255,186,189,191,255,187,189,192,255, +187,189,192,255,186,189,192,255,186,189,192,255,186,188,191,255,185,188,191,255,185,187,190,255,184,186,189,255,183,185,188,255, +182,184,187,255,181,183,186,255,180,182,185,255,178,181,183,255,177,179,181,255,176,178,180,255,174,176,179,255,173,175,177,255, +171,173,175,255,170,172,174,255,168,170,172,255,166,168,170,255,164,166,168,255,163,164,166,255,161,162,163,255,159,160,161,255, +157,158,159,255,154,155,156,255,152,152,154,255,150,151,152,255,147,148,149,255,144,145,146,255,142,142,143,255,139,139,140,255, +136,136,135,255,133,132,132,255,129,128,128,255,126,124,124,255,121,120,119,255,117,115,114,255,113,110,108,255,108,104,101,255, +101, 97, 93,255, 94, 89, 82,255,112,108,101,255,149,147,146,255,145,142,140,255,144,141,138,255,114,111,107,255, 16, 16, 15,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,206,209,255,202,204,206,255,201,203,207,255, +200,204,206,255,201,203,206,255,200,202,205,255,199,203,206,255,200,203,206,255,199,202,205,255,198,201,204,255,198,201,204,255, +197,200,203,255,197,201,204,255,197,199,202,255,196,200,203,255,197,200,203,255,197,199,202,255,197,198,201,255,197,200,203,255, +197,200,203,255,199,202,205,255,202,204,208,255,203,206,209,255,203,206,209,255,194,195,197,255,179,179,179,255,178,179,179,255, +182,182,183,255,184,185,187,255,185,186,188,255,187,189,191,255,188,190,192,255,189,191,193,255,189,191,194,255,189,191,194,255, +189,192,195,255,189,191,194,255,188,191,194,255,188,191,194,255,187,190,193,255,186,189,192,255,186,189,191,255,184,187,190,255, +183,186,189,255,183,185,188,255,181,183,186,255,180,183,185,255,179,181,184,255,177,179,182,255,176,178,181,255,175,177,179,255, +173,175,177,255,171,173,175,255,170,172,173,255,168,170,171,255,166,168,170,255,164,166,167,255,162,164,165,255,160,162,163,255, +158,159,160,255,156,157,159,255,154,155,156,255,151,152,153,255,149,150,151,255,147,147,148,255,144,144,145,255,141,141,142,255, +138,138,138,255,135,134,134,255,131,131,130,255,128,127,126,255,124,123,121,255,119,117,116,255,115,113,110,255,110,106,103,255, +104,100, 95,255, 96, 91, 86,255,114,109,103,255,148,146,143,255,143,141,137,255,109,107,104,255, 8, 8, 8,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,206,209,255,201,203,206,255,201,204,207,255, +200,204,207,255,201,203,206,255,200,202,205,255,199,203,205,255,200,202,205,255,199,201,204,255,198,202,205,255,199,201,204,255, +198,200,203,255,197,201,204,255,198,199,202,255,197,200,202,255,197,200,203,255,197,199,202,255,197,198,201,255,196,200,203,255, +197,200,203,255,199,202,205,255,201,204,207,255,203,206,209,255,204,206,209,255,195,196,197,255,179,179,178,255,180,180,181,255, +183,184,185,255,185,187,188,255,187,189,191,255,189,191,193,255,190,191,194,255,190,192,195,255,190,193,196,255,191,193,196,255, +190,193,196,255,190,193,196,255,190,193,196,255,189,192,195,255,189,191,194,255,188,191,194,255,187,190,193,255,186,189,192,255, +185,188,191,255,184,187,189,255,183,186,189,255,182,184,187,255,180,183,185,255,180,182,184,255,177,180,182,255,176,178,181,255, +175,177,179,255,173,175,177,255,171,173,175,255,169,171,173,255,168,169,171,255,166,168,169,255,164,165,167,255,162,163,165,255, +160,161,163,255,158,159,160,255,155,156,158,255,153,154,156,255,151,151,153,255,148,149,150,255,146,146,146,255,143,143,143,255, +139,139,140,255,136,136,136,255,133,132,132,255,129,128,128,255,125,124,123,255,121,119,117,255,116,114,112,255,112,109,105,255, +105,102, 97,255, 98, 93, 87,255,117,112,106,255,144,141,138,255, 88, 87, 84,255, 3, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,206,208,255,201,203,206,255,201,204,206,255, +200,203,207,255,201,203,205,255,200,202,206,255,199,203,206,255,200,202,205,255,199,201,204,255,198,202,205,255,199,201,204,255, +198,200,203,255,197,201,204,255,198,199,202,255,197,199,203,255,197,200,202,255,197,199,201,255,197,198,201,255,196,199,202,255, +197,200,203,255,198,201,204,255,201,203,206,255,203,206,209,255,204,207,209,255,197,199,199,255,179,180,178,255,182,182,182,255, +185,186,187,255,187,189,190,255,189,191,193,255,190,192,194,255,191,194,196,255,192,194,197,255,192,194,197,255,192,195,198,255, +192,195,198,255,192,195,198,255,192,194,197,255,191,194,197,255,190,193,196,255,190,193,195,255,189,191,194,255,188,191,194,255, +187,190,193,255,185,188,191,255,185,187,190,255,184,186,189,255,182,184,187,255,181,183,186,255,180,182,185,255,177,180,182,255, +176,178,181,255,175,177,179,255,172,174,176,255,171,173,175,255,170,171,173,255,167,169,171,255,165,167,168,255,163,165,167,255, +162,163,164,255,159,160,162,255,157,158,160,255,155,156,157,255,152,153,154,255,150,151,152,255,147,148,149,255,144,145,145,255, +141,141,142,255,138,138,138,255,135,134,134,255,131,130,130,255,126,126,124,255,122,121,120,255,118,116,114,255,113,111,108,255, +107,104,100,255, 98, 93, 87,255,120,115,109,255, 55, 55, 53,255, 2, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,205,208,255,202,204,207,255,201,204,207,255, +200,204,206,255,201,202,206,255,200,203,205,255,200,203,206,255,200,202,204,255,199,201,204,255,198,202,205,255,199,201,204,255, +198,200,204,255,197,201,202,255,198,199,203,255,197,200,203,255,197,198,201,255,197,198,202,255,197,199,202,255,196,198,201,255, +197,199,202,255,198,200,203,255,199,203,206,255,202,205,207,255,204,207,209,255,200,200,203,255,181,181,180,255,183,183,183,255, +186,188,189,255,189,191,192,255,190,192,194,255,192,194,197,255,193,195,198,255,194,196,198,255,194,197,200,255,194,197,200,255, +194,197,200,255,194,197,200,255,193,196,199,255,193,196,199,255,192,195,198,255,191,194,197,255,191,194,197,255,189,192,195,255, +188,191,194,255,188,190,193,255,186,189,191,255,185,187,190,255,184,187,189,255,182,184,187,255,181,183,186,255,180,182,184,255, +177,180,182,255,176,178,180,255,175,177,179,255,173,175,177,255,171,173,175,255,169,170,172,255,167,169,170,255,165,166,168,255, +162,164,165,255,161,162,164,255,159,160,161,255,156,157,158,255,154,155,156,255,151,152,153,255,148,149,150,255,146,146,147,255, +143,143,143,255,139,139,139,255,136,135,135,255,132,131,131,255,129,127,126,255,124,123,121,255,120,118,115,255,114,112,109,255, +109,105,101,255,100, 95, 89,255, 32, 30, 27,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,205,208,255,201,204,206,255,200,203,206,255, +201,204,205,255,201,202,206,255,200,203,206,255,200,203,205,255,200,201,204,255,199,202,205,255,198,202,204,255,199,200,203,255, +198,201,204,255,197,201,203,255,198,199,202,255,197,200,203,255,196,199,201,255,197,198,202,255,197,199,202,255,197,198,201,255, +196,199,202,255,197,200,203,255,199,201,204,255,201,203,206,255,203,206,208,255,202,204,206,255,184,185,183,255,183,184,183,255, +188,189,191,255,191,192,194,255,192,194,196,255,193,195,198,255,194,196,200,255,195,198,200,255,195,198,201,255,195,198,201,255, +195,198,201,255,195,198,201,255,194,197,201,255,194,197,200,255,194,196,200,255,192,196,199,255,192,195,198,255,191,194,197,255, +190,193,196,255,189,192,194,255,188,191,194,255,186,189,192,255,185,188,190,255,184,187,189,255,182,184,187,255,181,183,185,255, +180,182,184,255,177,179,181,255,176,178,180,255,174,176,178,255,172,174,176,255,171,172,174,255,169,170,172,255,166,168,169,255, +165,166,167,255,162,164,165,255,160,161,162,255,158,159,160,255,155,156,157,255,153,153,154,255,151,151,151,255,147,147,148,255, +144,144,144,255,141,140,140,255,137,137,136,255,133,133,132,255,130,128,127,255,126,124,123,255,121,119,117,255,116,114,111,255, +110,106,102,255,102, 96, 90,255, 1, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,137,255,202,205,208,255,200,204,206,255,201,204,205,255, +200,203,205,255,200,202,205,255,199,202,205,255,199,203,204,255,200,201,205,255,199,202,204,255,198,202,203,255,199,200,204,255, +198,200,203,255,197,201,203,255,198,199,203,255,197,200,202,255,197,199,201,255,196,198,202,255,196,198,202,255,196,199,202,255, +196,198,202,255,197,199,202,255,198,200,203,255,200,202,205,255,201,204,207,255,203,205,207,255,191,191,191,255,184,185,185,255, +189,190,191,255,192,193,195,255,193,195,198,255,195,197,199,255,196,198,201,255,196,198,201,255,196,199,202,255,196,199,202,255, +196,199,202,255,196,199,202,255,196,199,202,255,195,198,201,255,194,197,201,255,194,197,200,255,193,196,199,255,192,195,198,255, +191,194,197,255,189,192,196,255,189,192,195,255,188,191,194,255,186,189,192,255,185,188,191,255,184,186,189,255,182,184,187,255, +180,183,185,255,179,181,184,255,177,179,181,255,176,178,180,255,174,176,178,255,172,173,175,255,170,171,173,255,168,170,171,255, +166,167,169,255,163,164,166,255,162,163,164,255,159,160,161,255,156,157,158,255,154,155,156,255,151,152,153,255,148,148,149,255, +146,146,146,255,143,142,142,255,139,139,138,255,135,134,134,255,132,130,129,255,127,126,124,255,122,121,119,255,117,114,112,255, +111,108,103,255, 87, 82, 77,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,136,255,202,205,207,255,201,203,206,255,200,202,205,255, +201,202,205,255,199,203,204,255,200,202,205,255,200,201,205,255,199,202,204,255,198,202,203,255,198,201,204,255,199,200,203,255, +198,201,203,255,197,199,203,255,197,200,202,255,196,199,201,255,197,198,202,255,196,198,201,255,195,198,200,255,196,197,200,255, +195,198,200,255,196,198,201,255,196,199,201,255,198,201,203,255,200,202,205,255,202,204,207,255,197,198,199,255,186,186,185,255, +190,191,192,255,193,195,196,255,195,197,198,255,196,198,201,255,197,199,202,255,198,201,203,255,198,201,204,255,198,201,204,255, +198,201,204,255,198,201,204,255,197,200,204,255,197,200,203,255,196,199,202,255,195,198,202,255,195,198,201,255,193,196,199,255, +192,195,199,255,192,195,198,255,190,193,196,255,189,192,195,255,188,191,194,255,186,189,192,255,185,187,190,255,183,186,189,255, +181,184,187,255,180,182,185,255,179,181,183,255,177,179,181,255,175,177,179,255,173,175,177,255,171,173,175,255,169,171,172,255, +166,168,169,255,165,166,168,255,163,164,165,255,160,161,162,255,158,159,160,255,155,156,157,255,152,153,154,255,150,150,151,255, +147,147,147,255,143,143,143,255,140,139,139,255,136,135,135,255,133,131,130,255,128,127,125,255,124,122,119,255,117,115,112,255, +112,108,103,255, 51, 49, 45,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,136,255,202,204,206,255,201,202,205,255,201,203,205,255, +200,203,204,255,199,202,205,255,200,202,204,255,199,201,204,255,199,202,203,255,198,201,204,255,199,200,203,255,198,201,202,255, +197,200,203,255,198,200,202,255,197,200,202,255,197,199,202,255,196,199,201,255,196,198,200,255,195,197,201,255,196,198,201,255, +196,198,200,255,195,197,200,255,196,198,201,255,196,199,201,255,198,200,202,255,200,202,205,255,202,204,206,255,189,189,189,255, +190,191,192,255,194,195,197,255,196,198,200,255,197,199,202,255,198,201,203,255,199,201,204,255,199,202,205,255,199,202,205,255, +199,202,205,255,199,202,205,255,198,201,205,255,198,201,204,255,197,200,204,255,196,199,203,255,195,199,202,255,195,198,201,255, +193,196,200,255,192,195,199,255,191,194,198,255,190,193,196,255,189,192,195,255,188,191,194,255,186,189,191,255,184,187,190,255, +183,186,188,255,181,184,186,255,180,182,184,255,178,180,182,255,176,178,180,255,174,176,178,255,172,174,176,255,170,172,173,255, +168,170,171,255,166,167,169,255,163,165,166,255,162,163,164,255,159,160,161,255,156,157,158,255,154,153,155,255,151,151,151,255, +148,148,148,255,145,144,144,255,141,140,140,255,137,136,135,255,133,132,131,255,129,127,126,255,124,122,120,255,118,116,113,255, +109,105, 99,255, 8, 8, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,136,255,202,204,206,255,200,203,205,255,200,202,205,255, +199,202,204,255,199,201,204,255,200,202,204,255,200,202,204,255,199,201,203,255,198,201,203,255,199,200,202,255,197,200,203,255, +198,199,202,255,197,199,201,255,197,200,202,255,196,199,201,255,196,199,200,255,195,198,201,255,195,197,200,255,196,198,200,255, +195,197,200,255,195,197,200,255,195,198,200,255,195,198,200,255,196,198,200,255,198,200,202,255,200,202,204,255,196,197,198,255, +190,191,191,255,195,196,197,255,196,198,200,255,198,201,203,255,199,201,204,255,199,202,205,255,200,202,206,255,200,203,206,255, +200,203,206,255,199,202,206,255,199,202,205,255,199,202,205,255,198,201,204,255,197,200,204,255,196,199,203,255,196,199,202,255, +195,198,201,255,193,196,199,255,192,195,199,255,191,195,197,255,190,192,195,255,189,191,194,255,187,190,193,255,185,188,191,255, +184,187,189,255,183,185,188,255,180,183,185,255,179,182,184,255,178,180,182,255,175,177,179,255,173,176,177,255,172,173,175,255, +169,171,172,255,167,168,170,255,165,166,168,255,162,163,165,255,160,161,162,255,158,158,159,255,155,155,156,255,151,152,152,255, +149,149,149,255,146,146,145,255,142,141,141,255,138,137,136,255,134,133,131,255,130,128,126,255,125,123,120,255,119,116,112,255, + 84, 81, 76,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,135,255,201,203,204,255,199,201,203,255,200,201,203,255, +200,202,203,255,199,201,203,255,199,201,203,255,198,200,202,255,199,201,202,255,198,201,203,255,197,200,202,255,198,199,202,255, +198,200,201,255,197,199,202,255,196,199,201,255,197,198,200,255,196,198,201,255,195,197,200,255,196,198,199,255,194,197,199,255, +195,196,198,255,194,196,198,255,194,196,198,255,194,196,198,255,195,197,199,255,195,197,199,255,197,199,201,255,199,201,202,255, +191,191,191,255,194,196,197,255,197,199,201,255,199,201,204,255,200,202,205,255,200,203,206,255,201,204,207,255,201,204,207,255, +201,204,208,255,201,204,207,255,200,204,207,255,200,203,207,255,199,202,206,255,199,202,205,255,198,201,204,255,197,200,203,255, +196,199,202,255,195,198,201,255,193,196,199,255,192,195,198,255,191,194,197,255,189,192,195,255,188,191,194,255,187,189,192,255, +185,187,190,255,183,186,188,255,182,184,187,255,180,182,184,255,178,180,182,255,177,179,181,255,174,176,178,255,172,174,176,255, +170,171,173,255,168,169,171,255,166,167,169,255,163,164,166,255,161,162,163,255,158,159,160,255,155,156,157,255,153,153,153,255, +149,149,149,255,146,146,146,255,143,142,141,255,139,138,137,255,135,133,132,255,130,128,127,255,125,123,120,255,118,115,110,255, + 40, 38, 37,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,134,255,200,202,203,255,199,201,203,255,199,201,203,255, +199,201,203,255,198,200,203,255,198,201,202,255,199,201,202,255,198,200,202,255,198,200,202,255,197,199,201,255,198,200,202,255, +197,199,201,255,196,198,201,255,197,199,200,255,196,198,200,255,195,197,200,255,196,198,199,255,195,197,199,255,194,196,198,255, +195,196,198,255,194,196,198,255,193,195,198,255,193,196,198,255,194,195,198,255,194,196,198,255,194,196,198,255,195,197,199,255, +194,195,196,255,194,195,195,255,197,199,201,255,199,202,204,255,200,203,205,255,201,204,206,255,202,204,207,255,201,205,208,255, +201,204,208,255,201,204,208,255,201,204,207,255,201,204,207,255,200,203,206,255,199,202,206,255,199,202,205,255,198,201,204,255, +197,200,203,255,196,199,202,255,194,197,201,255,193,196,199,255,192,195,198,255,191,194,197,255,189,192,195,255,188,190,193,255, +186,189,192,255,184,187,189,255,183,185,187,255,181,183,186,255,179,181,184,255,177,179,181,255,175,177,179,255,173,175,176,255, +171,173,174,255,169,170,172,255,166,168,169,255,164,165,167,255,162,162,164,255,159,160,161,255,156,157,157,255,153,154,154,255, +150,150,150,255,147,146,146,255,143,143,142,255,139,138,137,255,135,134,132,255,130,128,126,255,125,122,119,255,102,100, 94,255, + 10, 9, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,135,255,201,202,203,255,197,198,200,255,199,200,202,255, +199,200,202,255,199,200,202,255,199,200,202,255,198,200,202,255,198,200,202,255,197,200,202,255,198,200,202,255,197,199,201,255, +196,199,201,255,196,199,201,255,196,198,200,255,195,197,199,255,196,198,200,255,195,197,199,255,194,196,198,255,195,197,199,255, +194,196,197,255,193,195,197,255,194,195,197,255,193,195,197,255,193,195,197,255,193,195,197,255,193,195,197,255,193,195,197,255, +194,194,196,255,193,194,194,255,197,198,200,255,200,202,204,255,201,203,206,255,201,204,207,255,202,205,208,255,202,205,209,255, +202,205,208,255,202,205,208,255,202,205,208,255,201,204,208,255,200,204,207,255,200,203,207,255,199,202,205,255,198,201,205,255, +198,201,204,255,196,199,202,255,195,198,201,255,194,197,200,255,192,195,199,255,191,194,197,255,190,193,196,255,188,191,194,255, +187,189,192,255,186,188,191,255,183,186,188,255,182,184,187,255,180,182,184,255,178,180,182,255,177,178,180,255,174,176,178,255, +172,173,175,255,169,171,172,255,168,169,170,255,165,166,167,255,162,163,164,255,160,161,162,255,157,157,158,255,154,154,155,255, +151,151,151,255,147,147,147,255,144,143,142,255,140,139,138,255,135,133,132,255,129,127,126,255,124,121,118,255, 58, 55, 52,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 45, 46, 46,255, 92, 93, 93,255,172,173,173,255,188,190,190,255, +198,200,200,255,198,200,201,255,196,198,199,255,196,197,199,255,197,199,200,255,197,199,200,255,196,198,200,255,196,198,200,255, +196,198,200,255,196,197,199,255,195,197,199,255,196,197,199,255,195,197,198,255,194,196,198,255,195,196,198,255,194,195,197,255, +193,195,197,255,194,195,197,255,193,194,196,255,192,194,196,255,192,193,195,255,191,193,195,255,191,193,195,255,191,193,194,255, +191,193,194,255,192,193,194,255,197,197,198,255,200,202,203,255,201,203,206,255,202,204,207,255,203,206,209,255,203,206,209,255, +203,206,210,255,203,206,209,255,203,206,209,255,202,206,209,255,201,205,208,255,201,204,208,255,200,204,207,255,199,202,205,255, +198,201,205,255,197,201,204,255,196,199,202,255,195,198,201,255,194,197,200,255,192,195,198,255,191,194,197,255,190,192,195,255, +188,190,193,255,186,189,191,255,184,187,189,255,182,185,187,255,181,183,185,255,179,181,183,255,177,179,181,255,175,177,178,255, +172,174,175,255,171,172,173,255,168,169,171,255,165,166,168,255,163,164,165,255,161,161,162,255,158,158,159,255,154,155,155,255, +152,151,151,255,148,147,147,255,144,143,142,255,140,139,138,255,133,132,130,255,130,128,124,255,105,101, 97,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 28, 28, 28,255, 0, 0, 0,255, 5, 5, 5,255, 49, 50, 50,255, +113,114,113,255,171,173,172,255,198,199,199,255,198,200,200,255,195,197,198,255,195,197,198,255,196,198,199,255,196,198,199,255, +196,198,199,255,196,197,199,255,195,197,198,255,195,197,198,255,195,197,198,255,195,196,198,255,194,196,197,255,193,196,197,255, +194,195,197,255,193,195,196,255,192,194,196,255,192,193,196,255,192,194,195,255,192,193,194,255,191,193,194,255,191,192,193,255, +190,192,193,255,189,190,192,255,192,193,194,255,199,201,201,255,201,203,205,255,202,204,207,255,203,206,209,255,204,206,209,255, +204,207,210,255,203,206,210,255,203,206,210,255,203,205,208,255,202,205,208,255,202,205,208,255,201,203,207,255,200,203,206,255, +199,202,205,255,198,201,204,255,197,200,203,255,195,198,202,255,195,198,201,255,193,196,199,255,192,194,197,255,190,192,195,255, +188,191,194,255,187,189,192,255,185,187,190,255,183,185,188,255,181,183,186,255,179,181,184,255,178,179,182,255,176,177,179,255, +173,175,176,255,171,172,173,255,168,169,171,255,166,167,168,255,163,165,166,255,161,161,162,255,158,158,159,255,155,155,155,255, +152,152,151,255,148,147,147,255,144,143,142,255,140,138,137,255,135,133,131,255,124,121,118,255, 19, 19, 18,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 2, 2, 2,255, 6, 6, 6,255, 41, 41, 41,255,124,124,124,255,194,194,194,255,197,198,198,255,195,197,197,255,195,196,197,255, +195,197,198,255,195,197,198,255,195,196,197,255,195,196,197,255,194,196,197,255,194,195,197,255,194,195,197,255,194,195,196,255, +192,194,196,255,193,194,196,255,192,194,195,255,192,193,195,255,191,193,194,255,191,192,194,255,191,192,193,255,190,191,193,255, +190,191,192,255,189,190,191,255,187,189,190,255,194,195,195,255,200,202,204,255,201,204,206,255,203,206,208,255,204,206,209,255, +204,207,210,255,204,207,210,255,204,207,210,255,203,206,209,255,202,205,208,255,202,205,208,255,201,204,208,255,200,203,206,255, +199,202,206,255,199,202,205,255,197,200,203,255,196,199,202,255,194,197,200,255,193,196,199,255,192,195,198,255,190,193,196,255, +189,192,194,255,188,190,193,255,185,188,190,255,184,186,189,255,182,184,187,255,180,182,184,255,178,180,182,255,176,178,179,255, +174,175,177,255,171,172,174,255,170,171,172,255,166,167,168,255,164,164,165,255,162,162,163,255,158,159,159,255,155,156,156,255, +152,152,151,255,149,148,147,255,144,142,141,255,138,137,134,255,132,129,126,255, 51, 50, 48,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 51, 51, 51,255,117,117,117,255,161,162,162,255, +175,175,175,255,189,189,190,255,195,196,196,255,194,195,196,255,194,195,196,255,193,194,195,255,191,193,193,255,192,193,194,255, +192,193,194,255,192,193,194,255,191,192,193,255,191,192,193,255,190,191,192,255,190,191,192,255,189,191,192,255,189,190,191,255, +188,189,190,255,188,189,190,255,187,188,189,255,187,189,189,255,196,198,198,255,201,203,205,255,203,204,207,255,203,206,208,255, +204,207,209,255,204,206,210,255,204,207,209,255,204,207,210,255,203,205,209,255,202,205,209,255,202,205,208,255,201,203,207,255, +200,203,206,255,198,201,205,255,197,200,204,255,197,200,203,255,196,199,202,255,194,197,200,255,193,195,198,255,192,193,196,255, +189,192,195,255,188,190,193,255,186,188,191,255,185,187,189,255,183,185,187,255,181,182,184,255,179,180,182,255,177,178,180,255, +174,175,177,255,172,173,175,255,170,171,172,255,167,168,168,255,165,165,165,255,162,162,163,255,158,159,159,255,155,155,155,255, +152,151,151,255,148,148,146,255,142,141,139,255,138,136,133,255, 89, 87, 84,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 2, 2, 2,255, + 29, 29, 29,255, 54, 54, 54,255, 89, 89, 89,255,130,130,130,255,161,162,162,255,191,191,191,255,194,195,195,255,193,194,194,255, +193,194,195,255,192,193,193,255,190,191,192,255,189,190,191,255,190,191,191,255,189,190,191,255,189,190,190,255,189,189,190,255, +188,189,189,255,187,188,188,255,187,188,188,255,186,187,187,255,187,188,188,255,197,198,198,255,202,204,205,255,203,205,207,255, +204,206,208,255,203,207,209,255,204,207,210,255,203,207,210,255,203,205,208,255,203,206,209,255,202,205,208,255,201,204,207,255, +200,203,206,255,199,202,206,255,198,201,204,255,197,200,203,255,195,198,201,255,194,197,200,255,193,196,199,255,191,194,197,255, +190,193,195,255,188,191,193,255,186,189,191,255,185,187,189,255,183,185,187,255,181,182,184,255,179,181,183,255,177,178,180,255, +175,176,177,255,173,174,175,255,170,171,172,255,167,168,169,255,164,165,165,255,162,162,162,255,158,158,158,255,155,155,154,255, +151,151,150,255,146,145,144,255,144,142,139,255, 96, 93, 90,255, 6, 5, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 2, 2, 2,255, 3, 3, 3,255, 7, 7, 7,255, 39, 39, 39,255, 87, 87, 87,255, +121,122,121,255,164,164,164,255,187,188,187,255,190,191,190,255,189,190,189,255,189,189,189,255,188,189,189,255,188,188,188,255, +187,188,188,255,187,187,187,255,186,187,187,255,186,186,186,255,185,185,186,255,184,185,184,255,195,196,197,255,202,204,205,255, +202,205,207,255,204,206,209,255,203,206,209,255,204,206,209,255,203,205,209,255,203,206,208,255,202,205,207,255,201,204,207,255, +200,203,206,255,200,203,206,255,198,201,204,255,197,200,203,255,195,198,201,255,194,197,200,255,193,196,199,255,191,194,197,255, +190,193,195,255,189,191,193,255,187,189,191,255,185,187,189,255,184,185,187,255,181,182,184,255,179,181,183,255,177,178,180,255, +175,176,177,255,173,174,175,255,170,171,171,255,167,168,169,255,164,165,165,255,162,162,162,255,158,158,158,255,154,154,153,255, +149,148,147,255,146,144,142,255,101, 98, 96,255, 4, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 4, 4, 4,255, 32, 32, 31,255, 54, 54, 53,255, 67, 67, 67,255, 77, 77, 77,255, + 84, 84, 83,255, 94, 94, 93,255,105,105,104,255,106,105,104,255,105,105,104,255,105,105,104,255,103,103,102,255,127,128,128,255, +192,194,195,255,204,206,207,255,202,204,207,255,201,205,207,255,202,206,208,255,202,205,207,255,202,204,207,255,201,203,206,255, +200,203,206,255,200,201,204,255,198,201,204,255,197,200,203,255,196,198,202,255,194,197,200,255,194,196,199,255,191,194,196,255, +190,193,195,255,189,191,193,255,187,189,191,255,185,187,190,255,183,185,187,255,181,183,185,255,179,181,182,255,177,178,180,255, +175,176,177,255,173,173,174,255,170,171,171,255,167,168,168,255,164,164,164,255,161,161,161,255,156,156,155,255,154,153,152,255, +145,143,141,255, 89, 87, 85,255, 2, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 47, 47, 47,255,158,159,160,255,204,205,207,255,202,204,206,255,202,204,207,255,202,204,207,255,201,204,206,255,200,203,206,255, +200,202,205,255,199,202,204,255,198,200,203,255,197,199,202,255,196,199,201,255,194,197,199,255,193,196,198,255,191,194,197,255, +190,192,195,255,189,191,193,255,187,189,191,255,185,187,189,255,183,185,186,255,181,183,184,255,180,181,182,255,177,178,179,255, +174,175,176,255,172,173,173,255,169,170,170,255,167,167,166,255,163,163,163,255,158,158,158,255,157,156,155,255,143,142,139,255, + 46, 45, 44,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 3, 3, 3,255, 86, 87, 87,255,198,200,201,255,202,203,204,255,200,202,204,255,201,203,205,255,200,202,205,255, +200,202,204,255,199,201,204,255,197,200,202,255,197,199,201,255,195,197,200,255,194,196,198,255,193,195,197,255,191,193,195,255, +190,192,194,255,189,190,192,255,186,188,190,255,185,186,188,255,183,185,186,255,181,182,183,255,179,180,181,255,176,177,178,255, +174,174,175,255,172,172,172,255,169,169,168,255,164,164,164,255,161,160,159,255,159,158,155,255,110,108,107,255, 10, 10, 10,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 13, 13, 13,255,106,107,107,255,171,172,173,255,198,199,201,255,200,202,204,255, +199,201,203,255,197,199,202,255,197,199,201,255,196,197,200,255,195,197,199,255,194,195,198,255,193,195,197,255,191,193,194,255, +190,191,193,255,188,189,191,255,186,188,189,255,184,185,186,255,183,184,184,255,180,181,182,255,178,178,179,255,176,176,176,255, +173,173,173,255,171,171,171,255,168,167,166,255,156,155,154,255,124,122,120,255, 44, 43, 42,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 19, 20, 20,255, 56, 56, 56,255,117,118,119,255, +187,188,189,255,199,200,201,255,197,199,200,255,196,198,199,255,193,194,196,255,192,195,196,255,191,193,195,255,190,191,193,255, +189,189,191,255,187,188,189,255,185,186,187,255,183,184,185,255,181,182,182,255,179,179,180,255,177,177,178,255,175,175,175,255, +172,172,171,255,150,149,147,255, 88, 87, 86,255, 33, 33, 32,255, 4, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 37, 37, 37,255,106,107,106,255,158,159,159,255,190,191,191,255,190,190,191,255,189,190,190,255,187,188,188,255, +186,187,187,255,184,185,185,255,182,182,182,255,180,181,181,255,179,179,178,255,176,176,175,255,147,147,146,255, 90, 89, 89,255, + 22, 22, 21,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 18, 18, 17,255, 46, 46, 45,255, 54, 53, 53,255, + 62, 62, 62,255, 62, 62, 61,255, 55, 55, 55,255, 45, 44, 44,255, 21, 21, 20,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0, 72, 76, 98, 7, 31, 0, 0, 0, 1, 0, 0, 0, +160,239, 98, 7,240,168, 97, 7, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, 46,108, 97,121,101,114, 46,112,110,103, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92,115, 99,117,108, +112,116, 45,105, 99,111,110,115, 92, 46,105, 46,108, 97,121,101,114, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 78, 98, 7, 0, 0, 0, 0, 8, 72, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, + 32, 0, 0, 0, 72, 78, 98, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0,208, 78, 98, 7, 56, 95, 98, 7, 68, 65, 84, 65, 0, 16, 0, 0,208, 78, 98, 7, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0, 56, 95, 98, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 61, 61, 61,255, 61, 61, 62,255, 61, 61, 62,255, + 61, 61, 61,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 62, 62, 62,255, 61, 61, 61,255, 94, 94, 95,255, +124,125,126,255,123,124,126,255,123,124,126,255,123,124,125,255,121,122,123,255, 98, 98, 97,255, 66, 63, 60,255, 66, 62, 60,255, + 73, 71, 69,255,109,109,110,255,117,118,119,255,118,119,120,255,118,119,120,255,119,120,121,255,119,120,121,255,119,120,121,255, +119,120,121,255,119,120,121,255,119,120,121,255,119,120,121,255,119,120,121,255,119,120,121,255,119,120,121,255,119,120,121,255, +119,120,121,255,119,120,121,255,119,120,121,255,119,121,122,255,121,122,123,255,125,127,128,255,125,126,126,255,126,127,126,255, +123,124,126,255,115,116,117,255,114,114,115,255,113,114,114,255,113,114,114,255,113,114,114,255,113,114,114,255,113,114,114,255, +113,113,114,255,113,113,114,255,113,113,114,255,112,113,114,255,112,113,114,255,112,113,113,255,112,113,113,255,112,112,113,255, +112,112,113,255,111,112,113,255,111,112,113,255,111,112,112,255,111,111,112,255,110,111,112,255,110,111,111,255,110,110,111,255, +110,110,111,255,109,110,110,255,109,109,110,255,109,109,110,255,108,109,110,255,108,109,109,255,108,108,109,255,108,108,109,255, +107,108,108,255,107,108,108,255,107,107,108,255,107,107,108,255,107,107,108,255,107,107,107,255,106,107,107,255,106,106,107,255, +101,101,101,255, 86, 85, 83,255, 98, 98, 98,255, 99, 98, 98,255, 98, 98, 98,255, 98, 98, 98,255, 98, 98, 98,255, 97, 97, 97,255, + 97, 97, 97,255, 97, 96, 96,255, 96, 96, 96,255, 96, 95, 95,255, 95, 94, 94,255, 94, 94, 94,255, 93, 93, 93,255, 93, 92, 92,255, + 92, 92, 91,255, 91, 90, 90,255, 91, 90, 89,255, 90, 89, 88,255, 76, 75, 75,255, 61, 61, 61,255, 60, 60, 60,255,124,125,126,255, +183,184,188,255,182,185,187,255,182,184,187,255,182,184,187,255,179,182,184,255,157,158,159,255, 81, 75, 71,255, 70, 63, 58,255, + 71, 64, 59,255,133,133,133,255,168,169,171,255,171,173,175,255,172,174,176,255,172,174,176,255,172,174,176,255,172,174,176,255, +172,174,176,255,172,174,176,255,172,174,176,255,172,174,177,255,172,174,177,255,173,175,177,255,173,175,177,255,173,175,177,255, +173,175,177,255,173,176,178,255,173,176,178,255,174,176,178,255,175,177,179,255,180,182,185,255,188,191,193,255,187,187,185,255, +185,187,189,255,171,173,174,255,163,165,167,255,162,163,165,255,161,163,164,255,161,163,164,255,161,163,164,255,161,163,164,255, +161,163,164,255,161,162,164,255,161,162,164,255,161,162,164,255,160,162,163,255,160,162,163,255,160,161,162,255,159,160,162,255, +159,160,162,255,159,160,162,255,158,159,161,255,158,159,160,255,157,159,160,255,157,158,159,255,156,157,159,255,156,157,158,255, +155,156,157,255,154,155,157,255,154,155,156,255,153,154,155,255,153,154,155,255,152,153,154,255,152,153,154,255,151,152,153,255, +151,151,152,255,150,151,152,255,150,151,152,255,149,150,151,255,149,150,151,255,149,150,151,255,148,149,150,255,148,149,150,255, +145,146,146,255,115,113,112,255,123,121,121,255,133,133,133,255,133,133,133,255,133,133,133,255,132,131,131,255,132,131,131,255, +131,130,130,255,130,129,129,255,129,128,128,255,129,128,128,255,127,126,126,255,126,125,125,255,125,123,122,255,123,122,121,255, +122,120,119,255,120,118,117,255,118,116,115,255,117,115,113,255, 89, 88, 88,255, 61, 61, 61,255, 60, 60, 60,255,123,125,126,255, +182,185,187,255,181,183,186,255,180,184,185,255,180,184,185,255,180,182,185,255,175,177,179,255,117,115,114,255, 68, 61, 56,255, + 69, 61, 56,255, 92, 88, 84,255,158,160,162,255,170,172,173,255,172,174,175,255,171,173,176,255,172,174,176,255,172,174,175,255, +171,173,176,255,171,173,176,255,172,174,177,255,172,174,177,255,173,175,176,255,172,174,176,255,173,175,177,255,173,175,177,255, +173,176,178,255,172,176,178,255,172,175,177,255,173,175,177,255,174,176,178,255,176,178,180,255,184,187,190,255,187,188,188,255, +184,184,184,255,179,182,185,255,165,167,169,255,162,163,165,255,162,162,165,255,162,163,165,255,162,163,165,255,161,163,164,255, +161,162,164,255,160,163,163,255,160,162,163,255,161,162,164,255,161,161,162,255,160,162,163,255,159,161,162,255,160,161,162,255, +159,160,161,255,159,159,162,255,158,160,160,255,158,159,160,255,157,159,159,255,156,157,160,255,156,157,158,255,156,157,158,255, +155,156,157,255,154,155,157,255,153,154,156,255,153,154,155,255,153,153,155,255,152,152,154,255,152,153,154,255,151,152,153,255, +150,152,153,255,150,151,152,255,149,150,151,255,150,149,152,255,149,150,150,255,148,149,151,255,149,148,151,255,148,149,150,255, +147,148,149,255,138,138,138,255,109,108,106,255,130,129,129,255,133,132,132,255,133,131,132,255,132,132,132,255,132,130,130,255, +131,130,130,255,130,129,129,255,130,129,129,255,128,127,127,255,127,126,126,255,125,124,124,255,124,123,123,255,123,122,121,255, +122,120,119,255,120,119,117,255,118,117,115,255,117,115,114,255, 90, 88, 87,255, 61, 61, 61,255, 60, 60, 60,255,124,125,126,255, +183,184,188,255,181,184,186,255,181,184,186,255,181,183,186,255,181,183,186,255,179,181,184,255,158,159,160,255, 80, 75, 71,255, + 69, 62, 57,255, 70, 64, 58,255,131,130,130,255,167,169,171,255,171,173,176,255,172,174,175,255,172,174,175,255,171,173,176,255, +172,174,176,255,172,174,177,255,173,175,176,255,173,175,176,255,172,174,176,255,173,175,177,255,173,175,177,255,173,176,178,255, +172,175,177,255,173,176,178,255,173,176,178,255,174,175,177,255,173,176,178,255,174,177,180,255,180,182,184,255,186,188,190,255, +189,189,187,255,182,184,185,255,171,173,175,255,163,165,166,255,161,163,164,255,162,162,165,255,161,162,164,255,162,162,165,255, +161,163,164,255,161,162,164,255,160,163,163,255,160,162,164,255,160,161,163,255,160,162,162,255,160,161,163,255,160,160,163,255, +159,161,162,255,158,160,162,255,159,159,160,255,158,160,161,255,158,159,160,255,157,158,159,255,156,157,159,255,156,157,158,255, +155,156,157,255,154,155,157,255,154,155,156,255,153,154,155,255,153,154,155,255,152,153,155,255,151,152,153,255,152,153,154,255, +151,152,153,255,150,151,152,255,150,151,152,255,149,150,152,255,149,149,150,255,149,149,151,255,148,148,151,255,148,149,149,255, +148,148,150,255,145,146,147,255,123,121,121,255,120,118,117,255,132,131,131,255,133,132,132,255,132,132,132,255,132,130,130,255, +131,130,130,255,131,130,130,255,129,128,128,255,128,127,127,255,127,126,126,255,126,125,124,255,125,124,123,255,124,123,122,255, +122,120,119,255,121,119,118,255,119,117,116,255,118,116,114,255, 90, 89, 88,255, 61, 61, 61,255, 60, 60, 60,255,124,125,126,255, +183,186,188,255,182,183,186,255,182,183,186,255,182,184,186,255,182,184,187,255,181,183,186,255,174,176,178,255,120,118,118,255, + 69, 62, 57,255, 70, 63, 58,255, 94, 90, 86,255,158,159,161,255,170,172,174,255,172,174,176,255,171,173,176,255,172,174,177,255, +172,174,177,255,173,175,177,255,172,174,176,255,173,175,177,255,173,175,177,255,173,176,178,255,172,176,178,255,172,175,177,255, +173,176,178,255,173,176,178,255,174,176,178,255,173,175,177,255,173,176,178,255,174,176,178,255,176,178,181,255,185,188,191,255, +185,185,185,255,188,188,187,255,178,180,182,255,166,168,169,255,162,164,166,255,161,163,164,255,162,163,165,255,161,163,164,255, +162,162,165,255,162,162,165,255,161,162,164,255,161,163,163,255,160,162,164,255,161,161,163,255,161,161,162,255,159,161,163,255, +159,160,163,255,159,161,162,255,159,160,161,255,159,159,160,255,158,160,161,255,158,158,160,255,157,158,159,255,156,157,159,255, +156,157,158,255,155,156,157,255,154,155,157,255,154,155,156,255,153,154,155,255,152,153,155,255,152,153,154,255,151,153,153,255, +152,152,153,255,150,152,153,255,151,151,152,255,150,151,151,255,150,150,151,255,149,149,150,255,148,149,151,255,149,148,149,255, +148,149,150,255,147,148,149,255,138,138,138,255,112,110,109,255,129,128,128,255,132,132,132,255,133,132,132,255,131,131,131,255, +132,130,130,255,131,130,130,255,129,128,128,255,129,128,128,255,128,127,126,255,127,125,125,255,126,124,124,255,124,123,122,255, +122,121,120,255,121,120,118,255,120,118,117,255,118,117,115,255, 90, 89, 88,255, 61, 61, 61,255, 60, 60, 60,255,124,125,127,255, +183,186,188,255,181,185,188,255,182,185,188,255,182,185,188,255,182,185,187,255,181,184,186,255,179,182,184,255,153,154,155,255, + 82, 76, 72,255, 70, 63, 58,255, 75, 69, 64,255,134,134,133,255,167,169,171,255,172,174,176,255,172,174,177,255,172,174,176,255, +173,174,176,255,173,175,177,255,173,176,178,255,172,176,178,255,172,175,177,255,173,176,178,255,173,176,178,255,174,176,178,255, +173,176,178,255,174,175,177,255,174,175,177,255,174,176,178,255,174,176,178,255,173,176,178,255,175,178,180,255,180,182,185,255, +187,188,191,255,188,188,187,255,185,187,188,255,171,173,175,255,163,165,167,255,162,163,165,255,161,163,164,255,162,164,165,255, +162,164,165,255,162,163,165,255,161,163,165,255,162,162,164,255,161,162,163,255,161,162,164,255,160,161,163,255,161,162,163,255, +160,161,162,255,160,161,163,255,159,161,161,255,158,160,161,255,159,160,161,255,158,159,160,255,158,159,160,255,157,158,159,255, +156,157,158,255,156,157,158,255,155,156,157,255,154,155,156,255,154,155,156,255,153,154,155,255,152,153,154,255,152,153,154,255, +152,153,154,255,151,152,153,255,151,151,152,255,150,150,151,255,150,150,152,255,149,149,151,255,148,149,151,255,148,149,150,255, +149,148,149,255,148,149,150,255,146,146,147,255,122,121,120,255,116,115,113,255,132,131,131,255,132,132,132,255,132,131,131,255, +132,130,130,255,131,130,130,255,130,129,128,255,129,128,128,255,128,127,127,255,127,126,125,255,126,125,124,255,125,124,123,255, +123,121,120,255,122,120,119,255,120,118,117,255,119,117,115,255, 91, 90, 88,255, 61, 61, 61,255, 60, 60, 60,255,124,125,127,255, +183,186,189,255,182,185,187,255,181,184,188,255,181,184,187,255,182,184,187,255,182,185,187,255,181,183,186,255,173,175,177,255, +112,110,108,255, 71, 64, 59,255, 69, 62, 57,255,100, 97, 94,255,160,162,163,255,171,173,175,255,172,174,176,255,173,174,176,255, +173,175,177,255,173,175,177,255,172,175,177,255,173,176,178,255,173,176,178,255,174,176,178,255,174,176,178,255,173,176,178,255, +174,175,177,255,174,176,178,255,174,176,178,255,174,177,179,255,174,177,179,255,173,177,179,255,175,177,179,255,176,179,181,255, +186,189,191,255,186,187,188,255,187,187,187,255,181,183,186,255,166,168,169,255,163,164,166,255,162,163,165,255,161,164,164,255, +161,163,164,255,161,164,164,255,162,163,165,255,161,163,164,255,162,162,163,255,161,162,164,255,161,162,164,255,161,162,164,255, +160,162,163,255,159,161,163,255,160,160,161,255,159,160,162,255,158,159,161,255,159,160,160,255,158,159,160,255,157,159,160,255, +157,157,159,255,156,157,158,255,156,157,158,255,155,155,157,255,154,155,156,255,154,155,156,255,153,154,155,255,152,153,154,255, +152,152,154,255,151,152,153,255,151,152,153,255,150,151,152,255,149,150,151,255,150,150,152,255,149,149,151,255,148,149,150,255, +148,148,149,255,149,149,150,255,147,148,149,255,142,142,143,255,109,106,104,255,124,122,122,255,132,131,132,255,131,132,132,255, +132,130,130,255,131,130,130,255,131,130,129,255,129,128,128,255,129,128,127,255,127,126,125,255,126,125,124,255,125,124,123,255, +123,122,121,255,122,120,119,255,120,119,117,255,119,117,116,255, 91, 90, 89,255, 61, 61, 61,255, 60, 60, 60,255,124,126,127,255, +184,186,189,255,182,184,187,255,182,185,188,255,182,185,188,255,182,185,188,255,183,185,188,255,182,185,188,255,180,182,185,255, +153,154,155,255, 76, 70, 65,255, 70, 63, 58,255, 73, 66, 60,255,138,139,139,255,168,171,173,255,172,174,176,255,173,175,177,255, +172,176,178,255,172,176,178,255,173,176,178,255,173,176,178,255,174,176,178,255,173,176,178,255,174,175,177,255,174,175,177,255, +174,176,178,255,174,176,178,255,174,177,179,255,173,176,178,255,173,177,179,255,174,177,179,255,174,177,179,255,175,178,180,255, +179,182,184,255,188,191,194,255,187,188,185,255,184,186,188,255,174,176,177,255,164,166,167,255,163,164,166,255,162,164,165,255, +162,164,166,255,162,164,164,255,161,164,165,255,161,163,165,255,162,163,164,255,162,162,163,255,161,163,163,255,161,161,164,255, +161,161,164,255,160,162,163,255,160,161,162,255,160,160,161,255,159,160,162,255,159,160,161,255,159,160,160,255,158,159,160,255, +156,157,160,255,157,158,159,255,156,157,158,255,155,155,157,255,154,156,156,255,154,155,156,255,154,154,156,255,153,153,155,255, +152,153,154,255,152,152,153,255,152,151,152,255,151,152,153,255,150,151,152,255,149,150,152,255,150,150,151,255,148,150,151,255, +149,149,150,255,149,148,149,255,148,148,149,255,147,147,148,255,134,133,132,255,108,105,103,255,129,129,128,255,132,131,131,255, +132,130,130,255,132,131,131,255,130,129,129,255,129,128,128,255,129,128,128,255,127,126,125,255,126,125,124,255,126,124,123,255, +124,122,121,255,123,121,120,255,121,120,118,255,120,118,117,255, 91, 90, 89,255, 61, 61, 61,255, 60, 60, 60,255,124,126,128,255, +184,187,190,255,183,186,188,255,183,186,188,255,182,185,187,255,182,185,187,255,182,186,188,255,183,185,188,255,181,184,187,255, +175,178,180,255,113,110,108,255, 68, 61, 56,255, 67, 61, 56,255, 96, 92, 89,255,161,162,164,255,171,173,175,255,173,175,177,255, +173,176,178,255,174,176,178,255,173,176,178,255,174,176,178,255,174,175,177,255,174,175,177,255,174,176,178,255,174,177,179,255, +174,176,178,255,173,177,179,255,173,177,179,255,174,177,179,255,175,177,179,255,175,177,179,255,174,177,179,255,175,177,179,255, +177,179,181,255,184,187,189,255,188,189,189,255,186,187,185,255,182,184,187,255,168,169,172,255,163,165,166,255,162,164,165,255, +163,163,165,255,162,164,166,255,163,164,164,255,162,164,165,255,162,163,164,255,162,162,165,255,161,162,164,255,160,163,163,255, +160,162,164,255,161,162,163,255,160,161,163,255,159,161,162,255,160,161,162,255,159,160,161,255,159,160,161,255,158,160,161,255, +158,158,160,255,157,158,159,255,157,158,159,255,155,156,158,255,155,156,157,255,155,156,157,255,154,154,156,255,153,154,155,255, +153,154,155,255,152,152,154,255,152,152,153,255,151,151,152,255,151,151,152,255,150,150,151,255,150,151,152,255,149,149,150,255, +148,150,151,255,149,149,150,255,148,149,150,255,147,148,149,255,144,144,145,255,117,116,115,255,119,117,116,255,131,130,130,255, +132,131,131,255,132,131,130,255,130,129,129,255,130,129,129,255,129,128,128,255,129,127,126,255,127,126,125,255,126,124,124,255, +124,123,121,255,123,121,120,255,122,120,119,255,120,118,117,255, 91, 90, 89,255, 61, 61, 61,255, 60, 60, 60,255,125,126,127,255, +184,186,190,255,183,185,189,255,184,185,189,255,183,186,188,255,183,186,188,255,183,185,188,255,182,186,189,255,183,185,188,255, +181,183,185,255,158,159,161,255, 81, 76, 71,255, 69, 62, 57,255, 70, 64, 59,255,131,131,131,255,168,170,172,255,173,175,177,255, +174,176,178,255,173,176,178,255,174,175,177,255,174,175,177,255,174,176,178,255,174,176,178,255,174,177,179,255,174,176,178,255, +173,177,179,255,174,177,179,255,174,177,179,255,175,177,179,255,174,177,179,255,175,176,178,255,175,177,179,255,174,178,180,255, +176,178,180,255,179,182,184,255,186,189,191,255,190,190,188,255,183,185,186,255,175,177,179,255,165,166,168,255,163,164,166,255, +162,164,165,255,163,163,166,255,163,164,165,255,162,163,164,255,162,164,165,255,161,163,164,255,162,162,165,255,161,163,164,255, +161,163,163,255,160,162,163,255,161,161,162,255,160,161,162,255,160,161,163,255,159,161,162,255,158,160,161,255,158,160,161,255, +157,158,160,255,157,158,159,255,157,158,159,255,155,156,158,255,155,156,157,255,155,156,157,255,154,155,156,255,153,154,155,255, +153,154,154,255,152,153,154,255,151,152,153,255,151,152,153,255,150,151,152,255,150,151,152,255,149,151,152,255,149,149,150,255, +148,150,151,255,148,149,150,255,148,148,149,255,148,148,149,255,147,147,148,255,135,135,135,255,109,106,104,255,127,127,127,255, +132,131,131,255,132,131,130,255,131,130,129,255,130,129,128,255,130,129,128,255,128,127,126,255,127,126,125,255,126,125,124,255, +124,123,122,255,123,122,120,255,122,120,119,255,121,119,117,255, 91, 90, 89,255, 61, 61, 61,255, 60, 60, 60,255,125,126,128,255, +185,188,190,255,184,186,189,255,183,186,188,255,184,185,189,255,184,185,189,255,184,186,189,255,184,186,188,255,182,186,189,255, +182,185,188,255,175,178,180,255,120,118,117,255, 69, 63, 57,255, 69, 63, 58,255, 94, 90, 86,255,158,160,161,255,171,173,175,255, +174,176,178,255,173,175,177,255,174,176,178,255,174,177,179,255,174,176,178,255,174,177,179,255,173,176,178,255,173,177,179,255, +175,177,179,255,174,177,179,255,175,177,179,255,174,176,178,255,175,176,178,255,175,177,179,255,175,177,179,255,174,178,179,255, +175,177,179,255,177,179,182,255,185,188,191,255,185,186,187,255,191,191,189,255,182,184,186,255,169,170,172,255,164,165,167,255, +163,165,166,255,162,164,165,255,163,164,166,255,162,164,165,255,161,163,164,255,162,163,165,255,161,164,164,255,162,162,165,255, +162,163,164,255,161,163,163,255,161,162,163,255,161,161,163,255,160,162,162,255,160,160,162,255,159,160,161,255,158,159,161,255, +158,159,161,255,157,158,160,255,157,159,160,255,156,157,158,255,155,156,158,255,155,156,158,255,154,155,156,255,153,154,156,255, +153,154,156,255,153,154,154,255,152,153,154,255,152,153,154,255,150,151,152,255,151,151,153,255,150,150,152,255,149,150,151,255, +148,149,150,255,149,149,150,255,148,148,149,255,147,149,150,255,148,147,149,255,144,146,146,255,119,118,116,255,111,109,107,255, +130,129,129,255,131,130,130,255,131,130,130,255,130,129,129,255,129,128,128,255,128,127,126,255,127,126,125,255,126,125,124,255, +124,123,122,255,123,122,121,255,122,120,119,255,121,119,118,255, 92, 91, 89,255, 61, 61, 61,255, 60, 60, 60,255,125,126,128,255, +185,188,191,255,183,186,189,255,183,187,189,255,183,187,188,255,184,186,189,255,184,186,189,255,183,186,189,255,184,187,189,255, +183,186,188,255,181,183,186,255,156,157,159,255, 84, 79, 75,255, 70, 64, 59,255, 73, 68, 63,255,132,131,131,255,168,170,172,255, +173,175,177,255,174,176,178,255,174,177,179,255,173,176,178,255,173,177,179,255,174,177,179,255,174,177,179,255,175,177,179,255, +174,176,178,255,175,176,178,255,175,177,179,255,175,177,179,255,175,178,180,255,175,178,180,255,174,177,180,255,175,177,180,255, +175,177,179,255,176,178,180,255,179,181,184,255,189,192,195,255,187,187,185,255,187,189,188,255,176,178,180,255,165,167,169,255, +163,165,166,255,163,164,166,255,162,163,165,255,163,163,166,255,163,163,166,255,162,164,165,255,162,163,165,255,161,164,165,255, +161,163,164,255,162,163,164,255,160,162,164,255,161,161,164,255,160,161,163,255,159,162,162,255,160,161,162,255,159,160,162,255, +158,159,161,255,158,159,160,255,157,159,159,255,156,157,160,255,156,157,158,255,155,156,158,255,154,155,157,255,154,155,156,255, +154,155,156,255,152,153,155,255,153,153,155,255,152,153,154,255,151,152,153,255,150,151,153,255,151,150,152,255,150,150,151,255, +149,149,150,255,148,150,151,255,148,149,150,255,148,148,150,255,147,149,148,255,147,147,148,255,142,142,142,255,104,101, 99,255, +120,119,117,255,131,129,129,255,131,130,130,255,130,129,129,255,129,128,128,255,128,127,126,255,127,126,125,255,126,125,124,255, +124,123,122,255,124,122,121,255,123,121,119,255,121,120,118,255, 92, 90, 89,255, 61, 61, 61,255, 60, 60, 60,255,125,126,128,255, +185,187,191,255,184,186,190,255,184,186,189,255,184,187,189,255,183,187,189,255,183,187,190,255,184,187,190,255,183,187,189,255, +184,186,189,255,182,185,188,255,175,178,181,255,118,116,115,255, 69, 63, 58,255, 68, 62, 57,255, 94, 90, 86,255,159,161,162,255, +172,174,176,255,173,176,178,255,173,177,179,255,174,177,179,255,174,177,179,255,175,177,179,255,175,177,179,255,174,176,178,255, +175,176,178,255,175,177,179,255,175,177,179,255,175,178,180,255,175,177,179,255,174,177,180,255,175,176,180,255,175,177,180,255, +176,178,180,255,176,178,179,255,177,179,181,255,183,186,188,255,189,192,193,255,188,187,186,255,184,186,189,255,170,172,173,255, +164,166,167,255,162,165,165,255,163,164,166,255,163,164,166,255,162,163,165,255,163,163,166,255,162,164,165,255,162,164,164,255, +161,163,165,255,162,162,164,255,160,163,163,255,161,162,164,255,161,162,164,255,160,162,162,255,159,161,162,255,160,161,162,255, +159,160,161,255,158,159,160,255,158,159,160,255,157,158,159,255,156,157,159,255,156,157,158,255,155,156,157,255,155,155,156,255, +154,155,156,255,153,154,155,255,152,153,154,255,152,152,154,255,151,152,153,255,151,151,152,255,150,151,152,255,150,150,151,255, +150,150,151,255,149,150,151,255,148,149,150,255,148,148,149,255,147,148,149,255,148,148,148,255,146,146,147,255,132,131,131,255, +105,101, 99,255,127,125,124,255,130,130,129,255,129,129,128,255,130,129,128,255,128,127,126,255,128,126,126,255,126,125,124,255, +125,123,122,255,124,122,121,255,123,121,119,255,122,120,118,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,125,127,129,255, +186,189,191,255,185,188,189,255,185,187,189,255,185,186,189,255,185,187,190,255,184,186,189,255,183,186,190,255,183,186,190,255, +183,186,190,255,184,187,189,255,181,184,187,255,161,162,164,255, 81, 76, 71,255, 69, 62, 57,255, 68, 62, 57,255,130,129,129,255, +169,171,172,255,173,175,177,255,174,177,179,255,175,177,179,255,175,177,179,255,174,177,179,255,175,176,178,255,175,177,179,255, +175,177,179,255,175,178,180,255,175,178,180,255,174,176,180,255,174,176,180,255,175,177,180,255,175,177,180,255,176,178,180,255, +175,177,180,255,175,177,179,255,176,178,180,255,178,181,183,255,187,189,192,255,190,190,190,255,185,186,186,255,180,183,185,255, +166,168,170,255,164,165,167,255,162,165,165,255,163,165,166,255,163,164,166,255,162,164,166,255,163,163,165,255,163,164,165,255, +162,163,164,255,161,162,165,255,161,163,164,255,160,163,163,255,161,163,164,255,161,161,162,255,160,161,163,255,159,160,163,255, +159,161,161,255,158,160,161,255,159,160,161,255,157,158,159,255,157,158,159,255,156,157,159,255,156,157,157,255,155,156,157,255, +154,155,156,255,154,154,156,255,153,153,155,255,153,154,155,255,151,152,153,255,152,151,153,255,151,152,152,255,150,151,152,255, +149,151,152,255,150,150,151,255,148,150,150,255,149,149,149,255,149,148,150,255,147,148,148,255,147,148,148,255,143,143,143,255, +116,114,113,255,113,111,109,255,129,128,128,255,130,129,129,255,130,129,128,255,128,127,126,255,127,126,125,255,127,126,125,255, +125,123,122,255,124,122,121,255,123,121,120,255,122,120,118,255, 91, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,126,127,129,255, +186,189,192,255,185,188,191,255,185,188,191,255,185,187,190,255,184,187,190,255,185,187,189,255,185,188,189,255,185,188,190,255, +184,187,189,255,184,186,190,255,184,186,188,255,179,181,184,255,128,127,127,255, 68, 61, 56,255, 68, 62, 57,255, 84, 79, 74,255, +155,156,158,255,172,173,176,255,174,177,179,255,175,176,178,255,175,176,178,255,175,177,179,255,175,177,179,255,175,178,180,255, +174,177,180,255,174,177,180,255,175,177,180,255,175,177,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255, +176,178,180,255,175,177,179,255,176,178,180,255,177,179,181,255,182,184,187,255,188,190,191,255,190,190,188,255,184,185,187,255, +173,175,177,255,165,166,168,255,163,165,166,255,163,164,166,255,162,165,165,255,162,164,165,255,163,163,166,255,162,163,165,255, +163,164,164,255,162,164,164,255,162,163,164,255,161,162,163,255,161,163,163,255,160,161,164,255,161,162,163,255,160,161,162,255, +159,160,163,255,159,161,162,255,159,160,161,255,157,159,160,255,157,158,159,255,157,158,159,255,156,157,158,255,155,156,158,255, +155,156,157,255,154,155,156,255,153,154,155,255,153,154,155,255,152,152,154,255,152,152,153,255,151,152,152,255,151,151,152,255, +150,150,151,255,150,151,152,255,149,149,150,255,149,149,150,255,148,148,149,255,148,148,148,255,147,148,149,255,146,146,147,255, +136,135,135,255,103,100, 97,255,122,120,119,255,129,128,128,255,129,128,128,255,128,127,126,255,127,126,125,255,127,125,124,255, +125,124,123,255,124,122,121,255,123,121,120,255,122,120,118,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,126,127,128,255, +186,189,192,255,184,187,190,255,184,187,190,255,184,188,191,255,184,188,190,255,185,188,190,255,185,187,189,255,184,187,189,255, +185,188,189,255,185,187,189,255,184,186,190,255,182,185,188,255,166,168,170,255, 91, 87, 84,255, 68, 62, 57,255, 70, 64, 58,255, +117,115,114,255,167,169,171,255,173,175,177,255,175,177,179,255,174,177,179,255,175,178,180,255,175,178,180,255,175,177,179,255, +174,176,180,255,175,177,180,255,175,177,180,255,176,178,180,255,175,177,180,255,176,178,180,255,176,178,180,255,176,178,180,255, +176,178,180,255,176,177,179,255,175,178,180,255,176,178,180,255,179,180,183,255,187,189,193,255,186,187,187,255,189,190,189,255, +180,183,185,255,168,169,171,255,164,166,167,255,163,164,166,255,163,165,166,255,163,164,166,255,162,163,165,255,163,164,166,255, +163,164,165,255,162,163,165,255,162,164,164,255,162,163,164,255,162,162,163,255,161,162,164,255,160,161,163,255,160,162,163,255, +160,161,162,255,159,161,161,255,159,160,162,255,158,160,160,255,157,159,160,255,157,158,160,255,156,157,159,255,156,156,158,255, +155,156,157,255,154,155,157,255,154,154,156,255,153,154,154,255,152,153,154,255,151,153,153,255,151,151,153,255,150,151,152,255, +150,151,152,255,149,151,152,255,149,149,150,255,148,149,150,255,149,149,150,255,147,148,148,255,147,148,148,255,147,147,148,255, +144,145,145,255,124,122,121,255, 99, 95, 92,255,126,125,124,255,129,128,127,255,128,128,126,255,127,126,125,255,127,125,124,255, +125,124,122,255,124,122,121,255,123,121,120,255,122,120,119,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,126,127,129,255, +187,190,192,255,186,189,191,255,186,188,191,255,186,187,190,255,185,187,190,255,184,188,190,255,185,187,191,255,184,187,191,255, +185,188,190,255,185,187,190,255,185,188,190,255,184,186,189,255,179,182,184,255,135,135,134,255, 73, 67, 62,255, 70, 64, 59,255, + 83, 78, 74,255,150,150,151,255,172,173,175,255,174,177,179,255,175,177,179,255,174,177,180,255,175,176,180,255,174,176,180,255, +176,178,180,255,175,177,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255, +176,177,179,255,176,178,180,255,176,177,179,255,175,178,180,255,177,179,181,255,181,183,186,255,189,192,196,255,187,187,186,255, +187,189,190,255,174,176,178,255,166,166,168,255,164,165,167,255,163,164,166,255,164,165,166,255,163,165,166,255,163,164,166,255, +162,164,165,255,163,163,166,255,161,163,164,255,162,164,165,255,161,163,164,255,162,163,163,255,161,162,164,255,161,161,163,255, +159,161,163,255,159,160,162,255,160,161,162,255,158,159,160,255,158,159,161,255,158,159,160,255,156,157,159,255,156,157,159,255, +156,156,158,255,154,156,156,255,154,155,156,255,154,154,156,255,152,154,154,255,152,153,154,255,151,153,154,255,151,151,152,255, +151,151,152,255,150,150,151,255,149,150,151,255,148,149,150,255,149,149,150,255,147,147,148,255,147,147,149,255,147,147,147,255, +146,146,147,255,142,142,143,255,110,108,106,255,108,105,103,255,127,126,125,255,128,126,126,255,127,126,125,255,127,125,124,255, +125,123,122,255,124,123,121,255,123,122,120,255,122,120,119,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,126,127,129,255, +187,190,193,255,186,189,192,255,186,189,192,255,186,188,191,255,186,188,191,255,186,187,190,255,185,188,191,255,185,188,190,255, +184,187,191,255,184,187,191,255,185,188,191,255,185,187,190,255,183,185,188,255,167,170,171,255, 96, 92, 89,255, 69, 63, 58,255, + 69, 63, 58,255,114,112,111,255,166,168,170,255,173,175,177,255,174,177,179,255,175,177,179,255,175,177,180,255,176,178,180,255, +175,177,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,177,179,255,176,177,179,255, +176,178,180,255,176,178,180,255,176,179,181,255,175,179,181,255,177,179,181,255,178,180,182,255,185,188,191,255,189,190,192,255, +187,188,187,255,184,186,189,255,169,171,173,255,164,166,167,255,163,164,166,255,163,165,165,255,163,164,165,255,162,165,166,255, +163,164,166,255,162,164,166,255,163,164,164,255,162,164,164,255,162,163,165,255,162,163,163,255,161,162,164,255,161,162,163,255, +161,161,162,255,160,161,162,255,160,161,161,255,158,159,162,255,159,160,161,255,158,159,160,255,157,158,159,255,157,158,159,255, +156,157,158,255,155,156,157,255,154,155,156,255,154,155,156,255,153,154,155,255,153,153,154,255,152,153,154,255,151,151,153,255, +151,151,152,255,149,151,152,255,150,150,151,255,149,149,150,255,149,149,150,255,147,148,149,255,148,147,149,255,146,147,147,255, +146,147,147,255,145,146,146,255,136,135,135,255,101, 97, 94,255,117,115,114,255,127,126,125,255,127,126,125,255,127,125,124,255, +125,125,122,255,124,123,121,255,123,122,120,255,122,120,119,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,126,128,129,255, +187,190,193,255,185,188,192,255,185,188,191,255,185,189,192,255,185,188,191,255,186,188,191,255,186,189,190,255,185,188,191,255, +185,188,191,255,185,187,191,255,185,187,190,255,185,187,191,255,184,187,190,255,181,183,185,255,143,142,143,255, 71, 65, 60,255, + 69, 63, 58,255, 76, 70, 66,255,146,146,147,255,171,173,176,255,174,176,179,255,176,178,180,255,176,178,179,255,175,177,180,255, +176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255, +176,178,181,255,176,179,181,255,176,178,180,255,175,178,181,255,176,178,180,255,177,179,181,255,180,182,184,255,188,191,194,255, +189,190,189,255,185,187,187,255,179,182,185,255,167,168,170,255,164,165,166,255,163,164,166,255,163,165,166,255,163,164,165,255, +162,165,166,255,163,164,166,255,162,164,165,255,163,164,164,255,162,163,165,255,161,162,164,255,161,162,163,255,161,162,164,255, +161,162,163,255,160,161,162,255,159,161,162,255,159,160,161,255,159,159,161,255,158,159,161,255,157,158,159,255,157,158,159,255, +156,157,158,255,155,156,157,255,155,155,157,255,153,155,155,255,153,154,155,255,153,153,155,255,153,152,153,255,151,152,153,255, +151,152,153,255,150,151,152,255,149,149,150,255,149,150,151,255,149,149,150,255,147,148,149,255,148,148,149,255,146,146,147,255, +146,147,147,255,146,147,147,255,143,143,143,255,122,120,119,255, 98, 94, 91,255,123,122,121,255,127,125,124,255,127,125,124,255, +125,125,122,255,124,123,121,255,123,121,120,255,122,121,119,255, 93, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,126,128,130,255, +188,191,193,255,187,190,192,255,187,189,192,255,187,188,192,255,186,188,191,255,185,189,192,255,185,189,192,255,186,189,190,255, +186,188,191,255,186,189,190,255,186,189,190,255,185,189,191,255,186,188,191,255,184,186,189,255,174,177,178,255,104,101, 99,255, + 67, 61, 56,255, 67, 61, 56,255, 98, 95, 92,255,164,165,167,255,173,175,177,255,175,177,179,255,176,178,180,255,176,178,180,255, +176,178,180,255,176,178,180,255,176,178,180,255,176,177,179,255,176,178,180,255,176,177,179,255,176,179,181,255,176,178,180,255, +176,179,181,255,175,177,181,255,175,177,181,255,176,178,181,255,177,179,181,255,176,178,180,255,177,180,182,255,183,186,188,255, +187,189,191,255,193,191,190,255,183,185,187,255,172,174,176,255,165,167,168,255,163,165,166,255,163,164,167,255,164,165,165,255, +163,165,166,255,162,164,166,255,163,163,166,255,163,163,165,255,163,163,164,255,161,163,165,255,161,162,164,255,162,163,163,255, +160,161,164,255,161,161,163,255,160,162,163,255,159,160,161,255,158,160,161,255,159,160,160,255,157,158,160,255,157,158,160,255, +157,158,159,255,155,156,158,255,155,156,157,255,155,155,157,255,153,154,155,255,153,153,155,255,153,154,155,255,151,152,153,255, +152,152,153,255,151,151,152,255,149,150,151,255,150,150,151,255,149,149,150,255,148,148,149,255,148,147,149,255,147,148,147,255, +147,146,148,255,146,146,147,255,145,145,146,255,140,139,140,255,103,101, 98,255,102, 99, 95,255,124,122,121,255,126,124,123,255, +125,123,122,255,124,123,121,255,123,122,120,255,122,121,119,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,127,128,130,255, +188,191,194,255,186,189,193,255,187,190,193,255,187,189,192,255,187,189,192,255,186,188,191,255,186,189,191,255,185,189,192,255, +185,189,191,255,186,189,191,255,186,189,191,255,186,188,191,255,185,189,192,255,185,188,191,255,182,185,188,255,154,156,157,255, + 78, 73, 68,255, 69, 63, 58,255, 71, 65, 60,255,132,131,131,255,170,172,174,255,174,176,178,255,176,178,180,255,175,177,179,255, +176,178,180,255,176,177,179,255,176,177,179,255,176,178,180,255,176,178,180,255,176,179,181,255,176,178,180,255,175,178,181,255, +175,177,181,255,176,178,181,255,176,178,181,255,177,179,181,255,177,179,181,255,177,178,180,255,176,179,181,255,179,181,183,255, +187,191,193,255,188,189,188,255,189,190,189,255,180,182,185,255,168,170,171,255,164,165,167,255,163,165,166,255,164,165,165,255, +163,164,165,255,162,165,166,255,163,164,165,255,163,164,166,255,163,163,165,255,162,163,164,255,161,163,165,255,162,162,164,255, +160,162,164,255,161,161,163,255,160,162,163,255,160,161,162,255,159,161,161,255,159,160,161,255,157,158,160,255,157,158,160,255, +157,158,159,255,156,157,158,255,155,156,157,255,155,155,157,255,154,154,156,255,153,154,155,255,153,154,155,255,152,152,153,255, +151,152,153,255,151,152,153,255,150,150,151,255,150,150,151,255,149,150,149,255,148,148,149,255,147,148,148,255,148,147,147,255, +146,146,147,255,146,146,147,255,145,145,146,255,144,144,144,255,134,133,133,255, 94, 90, 87,255,108,104,102,255,125,123,121,255, +124,123,122,255,124,122,121,255,123,122,120,255,122,121,119,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,127,128,130,255, +188,191,194,255,187,190,193,255,186,189,192,255,187,190,193,255,186,189,192,255,187,189,192,255,187,188,191,255,186,189,192,255, +186,189,192,255,185,189,192,255,186,189,192,255,186,189,192,255,186,188,191,255,186,189,192,255,184,187,190,255,176,179,181,255, +120,118,117,255, 70, 64, 59,255, 69, 63, 58,255, 91, 86, 83,255,157,157,159,255,173,175,177,255,175,177,179,255,176,178,180,255, +176,177,179,255,176,178,180,255,176,178,180,255,176,179,181,255,176,179,181,255,176,178,180,255,175,178,181,255,176,178,181,255, +176,178,181,255,177,179,181,255,177,179,181,255,176,178,181,255,176,179,181,255,176,179,181,255,176,178,180,255,177,179,181,255, +182,184,186,255,190,193,196,255,186,188,186,255,187,188,190,255,175,177,179,255,165,167,168,255,164,165,167,255,164,165,166,255, +163,165,166,255,162,164,165,255,163,165,166,255,163,165,166,255,162,164,165,255,162,163,165,255,161,163,165,255,162,162,164,255, +161,162,164,255,160,161,164,255,160,161,163,255,159,161,162,255,160,160,162,255,159,160,162,255,158,159,160,255,157,158,160,255, +157,158,159,255,156,157,158,255,155,156,158,255,155,156,156,255,154,155,156,255,154,154,156,255,153,154,155,255,152,153,154,255, +151,152,153,255,150,152,153,255,150,150,151,255,150,150,151,255,149,150,150,255,148,148,149,255,148,148,149,255,147,147,147,255, +146,146,147,255,145,146,147,255,145,145,145,255,145,145,145,255,142,142,142,255,125,123,123,255, 89, 85, 81,255,115,113,109,255, +124,122,121,255,124,122,121,255,123,122,120,255,122,120,118,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,127,129,130,255, +189,192,195,255,188,189,192,255,187,190,192,255,186,190,192,255,186,189,192,255,187,190,193,255,187,190,193,255,186,188,191,255, +187,189,191,255,186,189,191,255,186,189,192,255,186,189,192,255,185,188,192,255,185,189,192,255,186,188,191,255,183,186,188,255, +160,161,163,255, 85, 81, 77,255, 69, 63, 58,255, 70, 64, 59,255,124,123,122,255,168,170,171,255,175,177,179,255,176,178,180,255, +176,178,180,255,176,179,181,255,176,178,180,255,175,178,181,255,175,177,181,255,176,178,181,255,176,178,181,255,177,179,181,255, +176,178,181,255,177,179,181,255,176,179,181,255,177,179,181,255,176,179,181,255,177,179,181,255,176,179,181,255,177,179,181,255, +178,180,182,255,185,187,190,255,190,192,194,255,188,189,187,255,185,188,191,255,170,171,173,255,165,166,167,255,163,165,166,255, +164,164,167,255,164,165,167,255,163,165,165,255,163,164,165,255,162,163,166,255,162,164,164,255,161,164,164,255,161,163,165,255, +161,163,164,255,160,162,164,255,160,161,163,255,160,161,163,255,159,160,162,255,160,161,162,255,158,159,160,255,158,159,160,255, +158,159,159,255,156,157,159,255,156,157,158,255,155,156,158,255,155,155,156,255,154,155,156,255,153,154,155,255,153,153,154,255, +152,152,153,255,152,151,152,255,150,151,152,255,150,151,152,255,149,150,151,255,149,148,149,255,148,148,149,255,146,148,147,255, +146,147,147,255,145,147,146,255,145,145,145,255,144,144,144,255,144,144,144,255,139,139,139,255,107,105,103,255, 90, 86, 82,255, +118,116,114,255,123,121,119,255,123,121,119,255,122,120,118,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,127,128,130,255, +189,192,195,255,187,191,193,255,188,191,193,255,187,190,193,255,187,190,193,255,186,189,192,255,186,189,192,255,186,190,192,255, +186,190,192,255,187,190,191,255,187,190,191,255,186,189,192,255,186,189,192,255,186,189,191,255,185,189,192,255,185,188,190,255, +180,182,185,255,129,128,127,255, 69, 63, 58,255, 68, 62, 57,255, 80, 76, 71,255,150,151,152,255,173,174,177,255,175,177,179,255, +175,178,181,255,176,178,180,255,175,177,181,255,175,177,181,255,176,178,181,255,176,178,181,255,177,179,181,255,177,178,181,255, +177,179,181,255,176,179,181,255,176,179,181,255,176,179,181,255,177,179,181,255,176,179,181,255,177,179,181,255,176,178,180,255, +177,179,181,255,179,182,184,255,188,191,193,255,190,191,190,255,187,188,187,255,180,182,184,255,167,168,170,255,164,165,167,255, +163,165,166,255,163,164,166,255,164,165,166,255,163,164,166,255,162,164,166,255,163,163,164,255,162,164,165,255,162,163,165,255, +161,163,164,255,161,163,163,255,160,162,164,255,161,162,162,255,160,161,162,255,160,161,161,255,159,160,161,255,159,160,161,255, +158,159,160,255,157,158,159,255,156,157,159,255,156,157,158,255,155,156,157,255,154,155,156,255,154,154,155,255,153,153,154,255, +152,153,154,255,152,152,153,255,150,151,152,255,150,151,151,255,150,149,151,255,148,149,149,255,147,148,148,255,147,147,147,255, +147,147,147,255,146,146,146,255,145,145,145,255,144,144,145,255,145,144,145,255,143,142,143,255,135,133,133,255, 91, 88, 85,255, + 90, 86, 82,255,118,116,114,255,122,120,117,255,122,120,118,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,127,129,131,255, +189,192,195,255,187,191,194,255,187,190,194,255,188,191,194,255,187,191,194,255,187,190,193,255,187,189,192,255,187,190,193,255, +186,190,193,255,186,190,192,255,186,189,192,255,187,190,191,255,187,190,191,255,186,189,192,255,186,189,191,255,185,188,192,255, +185,187,189,255,171,173,174,255, 97, 94, 90,255, 67, 60, 55,255, 68, 62, 56,255,102, 98, 96,255,165,167,169,255,174,176,178,255, +176,178,180,255,175,178,181,255,176,178,180,255,176,178,181,255,177,179,181,255,177,179,181,255,177,179,181,255,176,179,181,255, +176,179,181,255,176,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,178,180,255, +176,179,181,255,178,180,182,255,182,184,188,255,188,190,192,255,191,191,190,255,185,186,188,255,173,175,177,255,165,167,168,255, +163,165,166,255,164,164,166,255,163,164,166,255,162,165,166,255,163,164,166,255,162,163,165,255,163,164,164,255,162,163,165,255, +161,162,164,255,161,163,163,255,161,162,164,255,161,162,162,255,160,161,163,255,159,160,162,255,159,160,161,255,159,160,161,255, +158,159,160,255,157,158,159,255,156,157,159,255,156,157,158,255,155,156,157,255,154,155,156,255,154,155,156,255,153,153,154,255, +152,153,154,255,152,151,152,255,151,151,152,255,150,150,151,255,150,150,151,255,148,149,149,255,148,149,149,255,148,147,147,255, +146,146,147,255,146,146,147,255,145,145,145,255,144,144,145,255,145,144,145,255,143,143,143,255,142,141,141,255,128,126,125,255, + 81, 77, 74,255, 94, 89, 85,255,118,116,113,255,120,118,116,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,127,129,131,255, +190,193,196,255,189,190,193,255,188,190,193,255,188,190,193,255,187,190,193,255,188,191,194,255,188,190,193,255,188,190,193,255, +188,189,192,255,187,190,193,255,186,190,193,255,186,190,193,255,187,190,192,255,187,190,192,255,186,189,191,255,187,190,191,255, +185,188,191,255,183,185,188,255,150,151,152,255, 75, 69, 65,255, 69, 63, 58,255, 71, 66, 61,255,134,133,133,255,170,172,174,255, +175,177,180,255,176,178,180,255,177,179,181,255,177,179,181,255,177,179,181,255,176,179,181,255,176,179,181,255,176,179,181,255, +177,179,181,255,176,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255, +177,179,181,255,176,178,180,255,179,181,183,255,188,190,193,255,187,188,189,255,191,191,190,255,181,184,186,255,169,170,172,255, +165,166,167,255,163,164,167,255,164,165,165,255,163,165,166,255,163,164,166,255,162,163,166,255,163,164,165,255,163,164,164,255, +161,162,165,255,161,162,164,255,162,163,164,255,160,161,163,255,161,162,162,255,160,161,163,255,159,160,161,255,159,160,162,255, +158,159,161,255,158,159,159,255,157,158,159,255,156,157,159,255,156,156,158,255,155,156,157,255,154,155,156,255,153,154,155,255, +153,153,154,255,152,153,154,255,151,152,153,255,150,151,152,255,150,150,151,255,149,149,150,255,148,148,149,255,147,147,149,255, +146,147,147,255,146,146,147,255,145,145,145,255,144,144,145,255,144,144,144,255,143,143,143,255,142,142,142,255,140,139,138,255, +118,116,114,255, 76, 71, 67,255, 98, 95, 90,255,117,115,112,255, 91, 90, 89,255, 61, 61, 61,255, 60, 60, 60,255,128,129,131,255, +190,193,196,255,189,191,194,255,189,191,194,255,189,190,193,255,188,190,194,255,187,190,193,255,188,191,194,255,188,190,193,255, +187,190,193,255,188,189,192,255,187,190,193,255,187,190,192,255,186,190,193,255,187,190,192,255,187,190,192,255,187,190,192,255, +186,190,192,255,185,188,190,255,176,179,181,255,115,113,111,255, 70, 64, 59,255, 69, 63, 58,255, 91, 87, 83,255,156,158,158,255, +173,175,177,255,176,178,180,255,176,178,180,255,177,179,181,255,176,179,181,255,176,179,181,255,177,179,181,255,177,179,181,255, +176,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255, +177,179,181,255,176,178,180,255,177,179,181,255,180,182,184,255,189,192,196,255,188,189,189,255,187,188,190,255,178,179,181,255, +166,168,169,255,164,165,167,255,164,164,165,255,164,164,166,255,164,165,166,255,162,163,165,255,163,164,166,255,163,164,165,255, +162,163,164,255,161,162,164,255,162,163,163,255,160,161,163,255,161,162,162,255,160,161,163,255,160,161,162,255,159,160,162,255, +159,160,161,255,157,158,160,255,157,158,160,255,157,158,159,255,156,157,158,255,155,156,157,255,155,154,156,255,153,154,155,255, +153,153,154,255,151,153,154,255,151,152,153,255,151,151,152,255,150,149,151,255,149,149,150,255,148,148,149,255,147,147,148,255, +146,147,147,255,147,147,147,255,145,145,145,255,144,144,144,255,144,144,144,255,143,142,142,255,143,142,142,255,142,141,141,255, +136,136,135,255,104,102, 99,255, 72, 66, 62,255, 96, 92, 88,255, 88, 87, 85,255, 61, 61, 61,255, 60, 60, 60,255,128,130,131,255, +190,194,197,255,188,191,194,255,189,192,195,255,188,191,194,255,189,191,193,255,188,191,193,255,187,190,193,255,188,191,194,255, +188,190,193,255,187,190,193,255,188,189,192,255,187,189,192,255,187,190,193,255,186,190,193,255,186,190,193,255,186,189,193,255, +187,190,192,255,186,189,192,255,184,186,189,255,160,161,162,255, 84, 80, 75,255, 69, 63, 58,255, 69, 63, 58,255,120,119,118,255, +168,170,172,255,175,177,179,255,176,178,180,255,176,178,181,255,176,179,181,255,176,179,181,255,176,179,181,255,177,179,181,255, +177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255, +177,179,181,255,177,179,181,255,176,178,180,255,178,180,182,255,182,184,188,255,190,192,195,255,191,191,189,255,185,186,189,255, +172,174,176,255,165,167,168,255,163,164,166,255,164,165,165,255,164,165,166,255,162,163,166,255,163,164,166,255,162,163,165,255, +162,163,165,255,161,162,164,255,162,163,164,255,161,162,163,255,160,161,162,255,160,161,162,255,159,160,162,255,159,160,161,255, +159,160,161,255,157,158,160,255,157,158,159,255,157,158,159,255,156,157,158,255,155,156,157,255,155,155,157,255,154,154,155,255, +153,154,155,255,152,153,154,255,151,151,152,255,151,151,152,255,150,150,150,255,149,149,150,255,148,149,149,255,147,147,148,255, +147,147,147,255,146,146,147,255,145,145,145,255,144,144,144,255,144,144,144,255,143,142,142,255,142,142,142,255,142,141,141,255, +140,139,139,255,132,131,130,255, 93, 89, 86,255, 68, 63, 59,255, 72, 69, 67,255, 61, 61, 61,255, 60, 60, 60,255,128,130,131,255, +191,194,197,255,189,192,195,255,188,191,194,255,188,191,194,255,188,191,195,255,189,192,195,255,189,192,195,255,188,191,194,255, +187,190,193,255,188,190,193,255,188,191,194,255,188,190,193,255,187,189,192,255,188,189,192,255,187,190,193,255,187,190,192,255, +187,189,193,255,187,190,192,255,186,189,192,255,181,183,186,255,129,128,128,255, 69, 63, 58,255, 69, 63, 58,255, 75, 70, 65,255, +146,146,147,255,172,174,176,255,175,177,180,255,176,178,181,255,177,179,180,255,177,179,181,255,177,179,181,255,177,179,181,255, +177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255, +177,179,181,255,177,179,181,255,177,179,180,255,176,178,181,255,178,180,182,255,185,188,191,255,189,191,191,255,189,189,188,255, +182,184,187,255,168,170,172,255,165,166,167,255,163,164,166,255,163,165,165,255,163,164,166,255,162,163,165,255,163,164,166,255, +162,163,164,255,161,162,164,255,161,162,165,255,161,162,163,255,160,161,163,255,161,162,162,255,159,160,162,255,160,161,161,255, +159,160,162,255,158,159,160,255,158,159,160,255,157,158,160,255,156,157,158,255,156,157,158,255,155,156,157,255,154,155,156,255, +153,154,155,255,153,153,154,255,151,152,152,255,151,151,152,255,150,151,152,255,149,149,150,255,149,149,150,255,147,147,148,255, +147,147,148,255,146,146,147,255,145,145,145,255,144,144,144,255,145,144,144,255,143,143,142,255,142,143,141,255,142,142,141,255, +140,140,139,255,139,138,137,255,128,128,126,255, 84, 80, 76,255, 63, 60, 58,255, 61, 61, 62,255, 60, 60, 60,255,128,130,131,255, +191,194,197,255,190,193,195,255,189,192,195,255,188,191,194,255,188,191,194,255,189,192,195,255,188,191,194,255,188,191,194,255, +188,191,194,255,187,190,193,255,188,191,194,255,188,191,194,255,188,190,193,255,187,190,193,255,188,189,192,255,188,190,193,255, +187,190,192,255,187,189,193,255,186,190,192,255,185,188,190,255,173,175,177,255,100, 97, 94,255, 67, 61, 55,255, 67, 61, 56,255, + 94, 91, 87,255,161,162,164,255,174,176,178,255,176,178,180,255,177,179,181,255,176,178,180,255,177,179,181,255,177,179,181,255, +177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255, +177,179,181,255,177,179,181,255,177,179,181,255,176,178,180,255,177,179,181,255,180,182,185,255,188,191,194,255,190,190,190,255, +188,189,190,255,176,178,180,255,166,167,169,255,164,165,167,255,164,164,166,255,164,165,166,255,162,163,166,255,163,164,166,255, +163,164,164,255,162,163,165,255,161,162,165,255,161,162,163,255,161,162,163,255,161,162,162,255,160,161,163,255,159,160,162,255, +160,161,162,255,158,159,160,255,157,158,160,255,157,158,160,255,157,158,158,255,156,157,158,255,155,155,156,255,155,155,156,255, +154,154,155,255,152,153,154,255,151,152,153,255,151,152,153,255,151,151,152,255,149,149,150,255,149,149,150,255,147,147,148,255, +147,147,148,255,147,147,147,255,145,145,145,255,145,145,145,255,144,144,144,255,143,143,142,255,142,142,141,255,141,141,141,255, +140,140,139,255,139,139,138,255,137,136,135,255,122,120,118,255, 76, 74, 72,255, 61, 61, 61,255, 60, 60, 60,255,129,130,132,255, +191,194,198,255,190,193,196,255,190,193,195,255,189,192,195,255,189,192,195,255,188,191,194,255,189,192,195,255,189,192,195,255, +188,191,194,255,188,191,194,255,187,190,193,255,188,191,194,255,188,191,194,255,188,190,193,255,188,190,193,255,187,189,192,255, +188,189,192,255,188,190,193,255,187,190,193,255,186,189,192,255,183,186,188,255,155,156,157,255, 80, 75, 70,255, 69, 63, 58,255, + 71, 65, 60,255,121,120,118,255,168,170,172,255,175,177,179,255,176,178,180,255,177,179,181,255,177,179,181,255,177,179,181,255, +177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255, +177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,176,178,180,255,177,179,181,255,183,185,187,255,190,193,195,255, +188,189,188,255,187,188,191,255,171,173,174,255,164,166,167,255,164,165,166,255,163,164,166,255,162,163,166,255,163,164,166,255, +163,164,165,255,162,163,164,255,161,162,165,255,162,163,163,255,161,162,163,255,160,161,163,255,160,161,163,255,159,160,162,255, +159,160,162,255,158,159,160,255,158,159,161,255,158,159,160,255,156,157,158,255,156,157,158,255,156,156,157,255,154,155,156,255, +154,155,156,255,153,154,155,255,152,152,153,255,152,152,153,255,151,151,152,255,149,150,150,255,149,149,150,255,147,148,148,255, +147,148,147,255,147,147,147,255,145,145,145,255,145,145,145,255,144,144,144,255,142,142,142,255,142,142,141,255,141,141,140,255, +140,140,139,255,139,139,138,255,139,138,137,255,135,134,134,255, 95, 95, 94,255, 61, 61, 61,255, 60, 60, 60,255,129,130,132,255, +192,195,198,255,190,193,197,255,190,193,196,255,189,192,195,255,190,193,196,255,189,192,195,255,189,191,194,255,189,192,195,255, +188,192,195,255,188,191,194,255,188,191,194,255,188,191,194,255,187,190,194,255,188,191,194,255,188,190,193,255,188,191,194,255, +188,190,193,255,188,190,193,255,188,190,193,255,187,190,193,255,186,189,192,255,179,181,183,255,123,122,121,255, 71, 65, 60,255, + 69, 63, 58,255, 82, 76, 72,255,148,149,149,255,172,174,176,255,176,178,180,255,177,179,180,255,176,178,181,255,177,179,181,255, +177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255, +177,179,181,255,177,179,181,255,177,179,181,255,177,178,180,255,177,178,180,255,176,178,180,255,178,180,182,255,185,188,191,255, +190,191,192,255,188,189,188,255,183,185,187,255,168,170,171,255,164,165,167,255,163,164,165,255,162,163,166,255,163,164,166,255, +163,164,165,255,162,163,164,255,162,163,164,255,161,163,163,255,160,162,164,255,161,162,163,255,160,161,163,255,159,160,163,255, +159,160,162,255,159,160,161,255,158,159,160,255,157,159,160,255,157,157,159,255,157,157,159,255,156,157,158,255,154,155,156,255, +154,155,156,255,154,154,155,255,152,152,153,255,152,152,153,255,151,151,152,255,149,150,150,255,149,150,150,255,149,148,148,255, +147,147,147,255,147,147,147,255,145,145,145,255,144,144,144,255,144,144,144,255,142,142,142,255,142,141,141,255,141,141,140,255, +140,139,138,255,139,139,138,255,139,138,137,255,137,136,136,255,100, 99, 98,255, 61, 61, 61,255, 60, 60, 60,255,129,130,132,255, +192,195,198,255,191,194,196,255,190,193,197,255,189,192,196,255,189,192,195,255,190,193,196,255,190,192,195,255,189,191,194,255, +189,192,195,255,188,192,195,255,189,192,195,255,189,192,195,255,188,191,194,255,187,190,194,255,187,191,194,255,188,190,193,255, +188,191,194,255,188,191,194,255,187,191,194,255,188,190,193,255,187,189,192,255,185,187,190,255,167,168,170,255, 92, 89, 85,255, + 69, 62, 57,255, 68, 62, 56,255,101, 98, 95,255,164,165,166,255,174,176,178,255,176,178,180,255,177,179,180,255,176,178,181,255, +177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255, +177,178,180,255,177,179,181,255,177,178,180,255,176,178,180,255,177,177,179,255,177,178,180,255,177,179,181,255,179,181,183,255, +187,190,192,255,191,192,191,255,186,188,188,255,177,179,181,255,166,167,169,255,163,164,166,255,163,164,165,255,162,163,166,255, +163,164,164,255,162,163,165,255,162,163,165,255,161,162,163,255,160,163,164,255,161,162,163,255,160,161,162,255,159,160,163,255, +160,161,162,255,158,159,161,255,158,159,160,255,157,159,161,255,157,158,159,255,157,158,159,255,156,157,158,255,155,155,156,255, +155,155,156,255,154,154,155,255,152,153,154,255,152,152,153,255,150,152,151,255,150,150,151,255,149,150,150,255,148,148,148,255, +147,147,147,255,147,147,147,255,145,145,145,255,145,144,144,255,144,144,144,255,143,142,142,255,142,141,141,255,142,141,140,255, +140,139,138,255,139,138,137,255,138,137,137,255,138,136,136,255,100, 99, 99,255, 61, 61, 61,255, 60, 60, 60,255,129,131,132,255, +193,196,199,255,191,194,197,255,190,193,196,255,190,193,197,255,190,193,196,255,189,192,195,255,189,193,196,255,190,192,195,255, +190,191,194,255,189,191,194,255,188,192,195,255,189,191,195,255,189,192,193,255,188,191,194,255,188,190,194,255,188,191,194,255, +188,191,194,255,188,191,194,255,188,191,194,255,188,191,194,255,187,190,193,255,186,189,192,255,183,185,188,255,147,148,148,255, + 71, 65, 61,255, 69, 63, 58,255, 68, 62, 57,255,123,123,120,255,170,172,174,255,175,177,179,255,176,178,181,255,177,179,180,255, +176,178,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,178,180,255, +177,179,181,255,177,178,180,255,176,178,180,255,177,177,179,255,176,178,180,255,176,177,179,255,177,177,179,255,177,179,181,255, +181,183,185,255,189,191,193,255,190,191,189,255,184,186,187,255,172,174,175,255,164,166,167,255,163,164,166,255,162,163,165,255, +163,164,165,255,162,163,164,255,161,162,165,255,161,163,163,255,161,163,163,255,160,162,164,255,160,161,162,255,159,160,162,255, +160,161,162,255,158,159,161,255,159,159,161,255,159,158,161,255,157,158,159,255,157,158,159,255,155,157,157,255,156,156,157,255, +155,155,156,255,154,155,156,255,152,153,154,255,152,153,153,255,151,152,152,255,150,150,151,255,149,149,150,255,148,148,148,255, +147,147,147,255,147,147,147,255,145,145,145,255,145,144,144,255,144,143,143,255,143,142,142,255,142,141,141,255,141,140,140,255, +140,139,138,255,139,138,137,255,138,137,136,255,138,136,135,255,100, 99, 99,255, 61, 61, 61,255, 60, 60, 60,255,129,131,132,255, +193,196,199,255,192,195,198,255,191,194,197,255,190,193,196,255,191,194,197,255,191,194,197,255,190,193,196,255,189,192,195,255, +190,193,196,255,189,192,195,255,189,191,194,255,189,192,194,255,188,192,195,255,188,191,194,255,189,190,193,255,188,191,194,255, +188,191,194,255,187,191,194,255,188,191,194,255,187,190,193,255,188,191,193,255,188,189,192,255,186,188,191,255,179,182,184,255, +120,118,118,255, 68, 61, 56,255, 69, 63, 58,255, 77, 71, 67,255,145,146,146,255,172,174,176,255,176,177,179,255,176,178,181,255, +177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,178,180,255,177,179,181,255,177,179,181,255,177,178,180,255, +176,178,180,255,177,177,179,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,177,179,255, +177,179,181,255,184,186,188,255,188,190,191,255,191,191,190,255,181,184,185,255,168,169,171,255,164,165,167,255,162,164,165,255, +162,163,165,255,161,164,164,255,162,163,165,255,162,163,164,255,161,163,163,255,160,162,164,255,161,162,162,255,160,161,162,255, +159,160,162,255,159,160,161,255,159,160,161,255,158,159,160,255,157,158,159,255,157,158,159,255,157,157,159,255,155,156,157,255, +154,156,157,255,154,155,156,255,153,153,154,255,153,153,154,255,152,152,153,255,150,150,151,255,149,149,150,255,148,148,150,255, +147,147,148,255,147,147,147,255,145,145,145,255,145,144,144,255,144,144,143,255,143,142,142,255,142,141,141,255,141,140,140,255, +139,138,138,255,139,138,137,255,138,137,136,255,137,136,135,255,100, 99, 99,255, 61, 61, 61,255, 60, 60, 60,255,129,131,132,255, +193,196,199,255,192,195,198,255,192,195,198,255,191,194,197,255,190,193,196,255,190,193,196,255,191,194,197,255,190,193,196,255, +189,192,195,255,190,193,196,255,190,192,195,255,189,191,194,255,188,191,194,255,189,191,194,255,188,191,194,255,189,190,193,255, +188,191,194,255,188,191,194,255,188,191,193,255,188,191,194,255,188,191,194,255,188,190,193,255,187,189,192,255,185,188,190,255, +167,168,170,255, 93, 89, 86,255, 69, 63, 58,255, 69, 63, 58,255, 98, 95, 92,255,161,161,163,255,174,176,177,255,176,178,180,255, +176,179,181,255,177,178,180,255,177,179,181,255,177,179,181,255,177,179,181,255,177,178,180,255,177,178,180,255,177,177,179,255, +177,177,179,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,175,178,180,255,175,178,180,255,175,177,179,255, +176,177,179,255,178,179,181,255,186,188,191,255,189,190,190,255,187,189,189,255,179,181,183,255,165,167,168,255,163,164,166,255, +162,164,165,255,161,163,164,255,162,163,164,255,162,163,164,255,161,163,163,255,160,162,164,255,161,161,163,255,160,161,163,255, +159,160,162,255,159,160,161,255,159,160,160,255,158,159,161,255,158,158,159,255,157,157,159,255,157,157,159,255,155,156,157,255, +155,156,157,255,155,155,156,255,153,153,154,255,153,153,154,255,152,151,153,255,150,150,151,255,150,150,150,255,149,149,150,255, +148,148,148,255,147,147,147,255,145,145,145,255,145,145,144,255,144,144,143,255,142,142,141,255,142,141,141,255,141,140,140,255, +139,138,138,255,138,137,136,255,138,137,136,255,137,136,135,255,100, 99, 99,255, 61, 61, 61,255, 60, 60, 60,255,130,131,133,255, +194,197,200,255,191,194,199,255,192,195,198,255,192,195,198,255,191,194,197,255,190,193,196,255,190,193,196,255,191,194,197,255, +190,193,196,255,189,192,195,255,190,192,195,255,190,192,195,255,188,191,194,255,189,192,195,255,189,192,195,255,188,191,194,255, +189,190,193,255,189,190,193,255,187,191,194,255,188,191,194,255,188,190,193,255,188,191,194,255,188,190,193,255,187,189,192,255, +182,184,187,255,145,145,145,255, 74, 69, 65,255, 69, 63, 58,255, 69, 63, 58,255,123,121,120,255,169,170,171,255,175,177,179,255, +176,178,180,255,176,179,181,255,177,178,180,255,177,179,181,255,177,178,180,255,177,177,179,255,176,177,179,255,176,178,180,255, +175,178,180,255,176,178,180,255,176,178,180,255,175,178,180,255,175,178,180,255,176,178,180,255,176,177,179,255,175,178,180,255, +176,178,180,255,175,177,179,255,179,180,182,255,187,189,191,255,191,192,190,255,185,186,187,255,174,176,178,255,164,166,167,255, +162,163,165,255,162,163,164,255,161,162,164,255,162,162,164,255,162,163,163,255,161,162,163,255,161,162,163,255,160,161,163,255, +159,160,162,255,159,160,161,255,158,160,160,255,158,159,161,255,157,159,159,255,157,158,159,255,157,158,159,255,155,156,157,255, +156,156,157,255,155,155,156,255,153,153,154,255,153,154,154,255,152,152,153,255,150,151,151,255,150,150,150,255,149,149,149,255, +148,148,148,255,147,147,147,255,145,145,145,255,145,145,144,255,144,144,143,255,142,142,141,255,141,141,140,255,141,140,140,255, +139,138,137,255,138,137,136,255,137,136,135,255,137,136,134,255,100, 99, 98,255, 61, 61, 61,255, 60, 60, 60,255,130,131,133,255, +194,197,200,255,192,195,199,255,192,195,199,255,191,194,198,255,192,195,198,255,191,194,197,255,190,193,196,255,190,194,197,255, +191,193,196,255,190,192,195,255,189,193,196,255,189,192,195,255,190,193,196,255,189,192,195,255,188,191,194,255,189,192,195,255, +189,192,195,255,189,191,194,255,187,191,194,255,187,191,194,255,188,191,194,255,188,190,193,255,187,191,194,255,188,190,193,255, +186,189,192,255,178,181,183,255,115,113,111,255, 69, 62, 57,255, 69, 63, 58,255, 73, 68, 64,255,142,142,142,255,172,173,175,255, +175,177,179,255,176,178,180,255,177,178,180,255,176,177,179,255,177,177,179,255,176,178,180,255,176,178,180,255,176,178,180,255, +176,178,180,255,175,178,180,255,175,178,180,255,176,178,180,255,176,177,179,255,176,178,180,255,176,177,179,255,176,176,178,255, +176,177,178,255,175,177,178,255,176,178,180,255,181,183,185,255,186,188,190,255,191,191,189,255,182,184,186,255,169,171,172,255, +164,165,165,255,162,163,165,255,161,163,165,255,162,163,164,255,161,162,163,255,160,161,164,255,161,162,163,255,160,161,163,255, +160,161,162,255,160,160,162,255,159,159,161,255,159,160,161,255,157,158,159,255,157,158,159,255,157,156,157,255,156,156,157,255, +155,156,157,255,155,155,156,255,153,154,154,255,153,153,154,255,151,153,153,255,151,151,151,255,150,150,150,255,148,148,148,255, +148,148,148,255,147,147,147,255,145,145,145,255,145,144,144,255,144,144,143,255,142,142,141,255,141,141,140,255,141,140,139,255, +139,138,137,255,138,137,136,255,137,136,135,255,136,135,134,255, 99, 99, 98,255, 61, 61, 61,255, 60, 60, 60,255,130,131,133,255, +194,197,200,255,193,196,198,255,192,195,199,255,191,194,199,255,192,195,197,255,192,195,198,255,191,194,197,255,190,193,196,255, +190,194,197,255,191,193,196,255,190,192,195,255,190,193,196,255,189,192,195,255,189,192,195,255,189,192,195,255,188,192,195,255, +189,192,195,255,189,191,194,255,188,191,194,255,188,191,194,255,187,191,194,255,188,191,194,255,188,190,193,255,188,191,194,255, +187,189,192,255,185,188,190,255,169,170,172,255, 94, 90, 87,255, 67, 60, 55,255, 68, 62, 57,255, 88, 83, 80,255,154,155,156,255, +173,175,177,255,176,177,179,255,176,177,179,255,177,177,179,255,176,178,180,255,175,178,180,255,176,178,180,255,176,178,180,255, +176,178,180,255,175,178,180,255,176,178,180,255,176,177,179,255,176,178,180,255,176,177,179,255,175,177,179,255,176,177,179,255, +175,176,178,255,175,176,179,255,175,177,179,255,176,178,180,255,182,185,188,255,188,189,191,255,187,188,187,255,180,182,184,255, +167,168,169,255,163,164,165,255,162,163,164,255,162,163,164,255,161,162,163,255,161,162,164,255,161,162,162,255,160,161,162,255, +159,160,163,255,160,160,161,255,159,160,161,255,159,160,161,255,157,158,159,255,157,158,159,255,156,157,158,255,156,156,157,255, +155,156,157,255,155,156,156,255,153,154,155,255,153,153,154,255,152,153,152,255,151,151,151,255,150,150,150,255,148,148,148,255, +148,148,148,255,147,147,147,255,145,145,145,255,145,144,144,255,144,144,143,255,143,142,141,255,142,141,140,255,141,140,139,255, +139,138,137,255,138,137,136,255,137,136,134,255,136,135,133,255, 99, 99, 98,255, 61, 61, 61,255, 60, 60, 60,255,130,132,133,255, +194,197,201,255,193,196,199,255,193,196,198,255,192,195,199,255,191,194,197,255,191,194,197,255,192,195,198,255,191,194,197,255, +190,193,196,255,190,194,197,255,191,193,196,255,190,192,195,255,189,193,196,255,190,193,196,255,190,192,195,255,189,192,195,255, +188,192,195,255,188,192,195,255,189,190,193,255,189,191,194,255,188,191,194,255,188,191,194,255,188,191,194,255,187,191,194,255, +188,190,193,255,187,189,192,255,183,185,188,255,152,152,154,255, 79, 73, 69,255, 69, 63, 58,255, 70, 64, 59,255,109,106,104,255, +164,166,167,255,175,176,178,255,176,178,180,255,176,177,179,255,176,178,180,255,177,178,180,255,176,178,180,255,175,178,180,255, +175,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,177,179,255,176,176,178,255,176,177,178,255,175,177,178,255, +174,177,179,255,174,177,178,255,174,176,178,255,175,176,179,255,176,178,180,255,183,185,187,255,190,191,191,255,184,186,186,255, +176,178,180,255,165,166,167,255,162,163,165,255,162,163,164,255,162,163,163,255,161,162,164,255,160,161,162,255,159,160,163,255, +159,160,162,255,159,160,161,255,159,160,161,255,158,159,160,255,157,158,159,255,158,158,158,255,157,157,159,255,155,157,157,255, +155,156,157,255,154,155,156,255,154,154,155,255,153,153,154,255,153,153,153,255,151,151,152,255,150,150,151,255,148,148,149,255, +148,148,148,255,148,147,147,255,146,145,145,255,145,144,144,255,144,143,143,255,143,142,141,255,142,141,140,255,141,140,139,255, +139,138,137,255,137,136,135,255,137,136,134,255,136,135,133,255, 99, 98, 98,255, 61, 61, 61,255, 60, 60, 60,255,130,132,133,255, +195,198,201,255,193,196,200,255,193,196,199,255,192,195,199,255,193,196,199,255,192,195,198,255,191,194,197,255,192,195,198,255, +191,194,197,255,190,193,196,255,191,194,197,255,190,193,196,255,189,193,195,255,190,192,195,255,190,193,196,255,189,192,195,255, +188,191,194,255,189,191,194,255,189,192,195,255,189,191,194,255,188,191,194,255,187,191,194,255,188,191,194,255,188,191,194,255, +188,191,193,255,187,190,193,255,186,189,192,255,179,181,184,255,125,123,122,255, 71, 66, 61,255, 69, 63, 58,255, 72, 66, 61,255, +131,129,129,255,169,171,173,255,175,177,178,255,175,178,180,255,176,177,179,255,175,178,180,255,175,178,180,255,176,177,179,255, +176,178,180,255,176,178,180,255,175,177,179,255,176,176,178,255,176,176,178,255,175,177,178,255,174,176,179,255,175,176,178,255, +175,177,178,255,175,177,177,255,175,176,177,255,174,176,178,255,175,176,178,255,177,179,181,255,183,186,189,255,189,190,189,255, +183,186,187,255,172,173,175,255,163,164,166,255,162,163,164,255,161,162,163,255,160,161,164,255,160,161,163,255,160,161,163,255, +159,160,162,255,159,160,161,255,158,160,160,255,159,159,161,255,157,159,159,255,157,158,159,255,157,158,159,255,155,156,157,255, +155,156,157,255,155,155,156,255,154,154,155,255,153,153,154,255,151,152,152,255,151,151,152,255,150,150,151,255,150,149,149,255, +148,148,148,255,148,147,147,255,146,145,145,255,145,144,144,255,144,143,143,255,142,141,141,255,142,141,140,255,141,140,139,255, +139,138,137,255,137,136,135,255,136,135,134,255,135,134,133,255, 99, 98, 97,255, 61, 61, 61,255, 60, 60, 60,255,130,132,134,255, +195,198,201,255,194,197,200,255,193,196,200,255,192,195,200,255,193,196,199,255,193,196,198,255,192,195,198,255,191,194,197,255, +192,194,198,255,191,193,197,255,190,194,196,255,191,194,197,255,190,192,196,255,189,193,195,255,189,192,195,255,190,193,196,255, +189,192,195,255,188,191,194,255,189,192,195,255,189,191,194,255,188,191,194,255,188,191,194,255,187,191,194,255,188,191,194,255, +187,190,193,255,188,191,193,255,187,190,192,255,185,188,191,255,171,172,174,255,100, 97, 94,255, 67, 61, 56,255, 68, 62, 57,255, + 79, 73, 68,255,144,145,145,255,172,174,175,255,175,177,179,255,176,178,180,255,175,177,179,255,176,178,180,255,176,178,180,255, +176,177,179,255,176,177,179,255,176,177,178,255,175,177,179,255,175,177,178,255,174,176,179,255,175,177,178,255,175,177,177,255, +175,176,177,255,174,176,177,255,175,175,178,255,174,175,177,255,174,175,177,255,174,176,178,255,178,180,182,255,186,187,190,255, +186,187,186,255,182,183,185,255,168,170,171,255,163,164,165,255,161,162,164,255,160,161,164,255,161,162,162,255,160,161,162,255, +160,161,162,255,159,160,161,255,158,160,160,255,159,159,161,255,157,159,159,255,157,158,159,255,157,157,158,255,155,156,157,255, +156,156,157,255,155,155,156,255,153,153,154,255,153,153,154,255,151,153,153,255,151,151,152,255,151,151,151,255,149,150,149,255, +148,148,148,255,148,147,147,255,146,145,145,255,145,144,144,255,144,143,143,255,142,141,141,255,141,140,140,255,141,140,139,255, +139,138,137,255,137,136,135,255,136,135,134,255,135,134,132,255, 99, 98, 97,255, 61, 61, 61,255, 60, 60, 60,255,130,132,134,255, +195,198,202,255,193,196,199,255,194,197,200,255,194,197,199,255,192,195,200,255,193,196,199,255,193,196,198,255,192,195,198,255, +191,194,197,255,192,194,198,255,190,193,196,255,191,194,197,255,191,193,197,255,190,192,196,255,189,193,195,255,190,193,196,255, +189,192,195,255,190,191,194,255,188,192,195,255,188,192,195,255,189,191,194,255,189,191,194,255,188,191,194,255,187,191,194,255, +188,191,194,255,187,191,194,255,188,190,193,255,186,189,192,255,184,186,189,255,160,161,162,255, 81, 76, 72,255, 68, 62, 57,255, + 69, 63, 58,255, 89, 85, 80,255,156,156,158,255,172,174,175,255,175,177,179,255,176,178,180,255,175,178,180,255,176,177,179,255, +175,176,178,255,176,176,178,255,175,177,179,255,174,177,178,255,174,176,179,255,175,176,177,255,175,177,178,255,175,177,178,255, +174,175,177,255,175,175,178,255,174,176,177,255,174,176,177,255,173,176,176,255,174,176,178,255,175,176,178,255,179,180,181,255, +187,189,192,255,186,186,186,255,180,182,183,255,165,167,168,255,161,162,164,255,160,161,163,255,160,161,162,255,159,160,161,255, +160,161,162,255,159,159,161,255,158,160,160,255,159,160,161,255,157,158,159,255,156,158,159,255,157,157,158,255,156,156,157,255, +155,156,156,255,155,155,156,255,153,154,154,255,152,154,154,255,152,153,153,255,151,151,151,255,151,151,151,255,149,149,149,255, +148,148,148,255,148,147,147,255,146,145,145,255,145,145,144,255,144,143,143,255,142,141,141,255,141,140,139,255,140,139,138,255, +138,137,136,255,138,136,135,255,136,135,133,255,135,133,131,255, 99, 98, 97,255, 61, 61, 61,255, 60, 60, 60,255,131,132,134,255, +195,198,202,255,193,196,200,255,193,196,200,255,193,196,199,255,193,196,200,255,193,196,199,255,192,195,198,255,193,195,199,255, +192,194,198,255,191,194,197,255,191,194,197,255,191,193,197,255,190,193,196,255,190,193,196,255,190,193,196,255,190,193,196,255, +190,192,195,255,190,192,195,255,188,191,194,255,189,191,194,255,189,192,195,255,189,191,194,255,188,190,193,255,187,191,194,255, +188,191,194,255,188,191,194,255,187,190,193,255,188,189,192,255,186,189,192,255,182,184,187,255,141,141,141,255, 74, 68, 63,255, + 69, 63, 58,255, 70, 64, 59,255,109,106,104,255,163,164,165,255,174,175,177,255,175,177,179,255,176,176,178,255,176,176,178,255, +175,177,179,255,174,177,178,255,174,177,178,255,175,177,178,255,175,176,177,255,175,176,178,255,174,176,177,255,175,175,178,255, +174,176,177,255,174,176,177,255,174,176,177,255,173,175,176,255,174,174,177,255,173,174,176,255,173,174,176,255,174,175,177,255, +179,180,182,255,186,188,189,255,185,186,186,255,176,177,179,255,165,166,167,255,161,162,163,255,160,161,162,255,159,160,161,255, +159,159,161,255,159,160,161,255,159,160,161,255,158,159,160,255,157,158,159,255,157,158,158,255,157,157,158,255,156,156,157,255, +155,155,156,255,154,155,155,255,153,154,154,255,153,153,153,255,153,153,153,255,151,151,151,255,151,151,151,255,149,149,149,255, +148,148,148,255,147,147,147,255,147,147,145,255,145,145,144,255,144,143,143,255,142,141,141,255,141,140,139,255,140,139,138,255, +138,137,136,255,137,136,134,255,135,134,133,255,135,133,131,255, 99, 98, 96,255, 61, 61, 61,255, 60, 60, 60,255,131,132,134,255, +196,199,202,255,194,197,201,255,194,197,201,255,193,196,200,255,194,197,199,255,193,196,199,255,192,195,198,255,193,195,198,255, +192,195,199,255,191,194,198,255,192,194,197,255,191,194,197,255,191,193,197,255,191,194,197,255,190,193,196,255,189,192,195,255, +190,193,196,255,190,193,196,255,189,192,195,255,188,191,194,255,189,191,194,255,189,192,195,255,188,191,194,255,188,190,193,255, +187,191,194,255,188,191,194,255,188,190,193,255,188,190,193,255,188,189,192,255,186,188,191,255,176,178,180,255,117,115,114,255, + 70, 63, 59,255, 69, 63, 58,255, 71, 65, 60,255,125,123,123,255,168,170,171,255,173,176,178,255,175,177,179,255,175,176,178,255, +175,176,179,255,174,176,179,255,175,176,178,255,175,177,177,255,175,177,177,255,175,176,178,255,175,175,178,255,174,175,177,255, +173,176,176,255,173,175,176,255,174,175,177,255,174,174,177,255,173,174,176,255,172,175,175,255,172,174,175,255,173,174,176,255, +174,175,177,255,180,182,184,255,185,187,187,255,184,185,185,255,173,174,176,255,163,164,165,255,160,161,163,255,159,160,162,255, +160,159,162,255,159,160,161,255,158,159,160,255,158,159,160,255,158,158,159,255,157,158,158,255,157,157,158,255,155,156,156,255, +155,156,156,255,153,154,154,255,154,154,154,255,153,153,153,255,153,153,153,255,151,151,151,255,150,150,150,255,149,149,149,255, +148,148,148,255,147,147,147,255,146,146,145,255,145,145,144,255,144,144,143,255,142,142,141,255,141,140,139,255,140,139,138,255, +138,137,135,255,137,135,134,255,135,134,132,255,134,132,130,255, 98, 97, 96,255, 61, 61, 61,255, 60, 60, 60,255,131,132,134,255, +196,199,202,255,195,198,201,255,195,198,200,255,194,197,201,255,194,197,199,255,194,197,200,255,194,197,199,255,192,195,199,255, +193,196,198,255,193,196,199,255,191,194,197,255,192,195,198,255,191,194,197,255,191,194,197,255,191,193,197,255,190,192,196,255, +189,193,195,255,189,192,195,255,190,192,195,255,189,191,194,255,188,192,195,255,188,191,194,255,189,190,193,255,188,190,193,255, +188,191,194,255,187,190,193,255,188,190,193,255,187,190,193,255,188,189,192,255,187,190,193,255,184,187,190,255,168,170,172,255, + 94, 89, 86,255, 68, 62, 57,255, 69, 63, 58,255, 72, 67, 61,255,137,137,137,255,170,171,172,255,173,175,177,255,175,177,179,255, +174,177,178,255,175,176,178,255,175,177,177,255,175,176,178,255,174,176,177,255,174,175,177,255,173,175,176,255,173,176,176,255, +174,175,177,255,173,174,176,255,173,174,176,255,172,174,175,255,173,175,176,255,172,173,175,255,173,174,176,255,173,173,176,255, +173,174,176,255,173,175,176,255,181,182,184,255,184,186,186,255,182,184,184,255,169,170,172,255,162,162,164,255,160,160,162,255, +160,161,162,255,158,159,160,255,158,159,160,255,157,159,160,255,158,157,158,255,157,158,158,255,157,157,158,255,155,156,156,255, +154,156,156,255,155,155,155,255,153,153,154,255,153,153,153,255,152,152,152,255,151,151,151,255,150,150,150,255,149,149,149,255, +148,148,148,255,147,147,147,255,145,145,145,255,145,144,143,255,144,144,143,255,142,141,140,255,141,140,139,255,140,139,138,255, +138,137,135,255,137,135,134,255,135,133,132,255,134,132,130,255, 98, 97, 96,255, 61, 61, 61,255, 60, 60, 60,255,131,132,134,255, +196,199,203,255,195,198,201,255,194,197,200,255,195,198,201,255,194,196,200,255,193,197,200,255,193,197,199,255,193,196,200,255, +192,195,199,255,192,196,199,255,192,194,198,255,192,194,198,255,192,195,198,255,191,194,197,255,190,194,196,255,190,194,196,255, +190,193,196,255,189,192,195,255,189,192,195,255,190,192,195,255,189,191,194,255,189,192,195,255,189,191,194,255,189,191,194,255, +188,191,194,255,187,191,194,255,188,191,194,255,188,189,192,255,188,190,193,255,187,190,193,255,186,189,192,255,184,186,189,255, +157,158,160,255, 81, 77, 72,255, 68, 62, 57,255, 69, 63, 58,255, 83, 78, 74,255,147,147,147,255,170,172,174,255,174,175,177,255, +174,176,178,255,175,176,178,255,175,176,178,255,175,175,178,255,174,176,177,255,173,176,176,255,174,175,177,255,174,174,177,255, +173,174,176,255,173,174,176,255,172,175,175,255,173,174,176,255,173,174,176,255,173,174,176,255,172,174,175,255,171,173,174,255, +171,173,174,255,172,173,174,255,173,174,175,255,181,182,184,255,184,185,185,255,181,182,184,255,168,169,170,255,161,162,163,255, +158,159,160,255,159,159,160,255,158,158,160,255,157,157,159,255,157,158,158,255,156,158,157,255,155,157,156,255,155,156,156,255, +154,155,156,255,155,155,155,255,153,153,153,255,153,153,153,255,152,152,152,255,151,151,151,255,150,150,150,255,149,148,148,255, +148,148,148,255,148,147,147,255,147,145,144,255,145,144,143,255,144,143,142,255,142,141,140,255,141,140,139,255,140,138,137,255, +138,137,135,255,136,135,133,255,135,133,131,255,133,131,129,255, 98, 97, 95,255, 61, 61, 61,255, 60, 60, 60,255,131,133,134,255, +196,199,203,255,195,198,201,255,195,198,201,255,194,198,200,255,194,197,201,255,194,196,200,255,193,196,199,255,193,196,200,255, +193,196,200,255,192,196,199,255,193,195,199,255,192,194,198,255,191,194,198,255,191,194,197,255,191,193,197,255,191,194,197,255, +190,193,196,255,190,193,196,255,190,193,196,255,190,192,195,255,189,191,195,255,188,191,194,255,189,192,195,255,189,191,194,255, +188,191,194,255,188,191,194,255,187,191,194,255,188,190,193,255,187,189,192,255,188,189,192,255,187,190,193,255,186,189,192,255, +181,183,186,255,142,142,142,255, 75, 70, 65,255, 69, 63, 58,255, 69, 63, 58,255, 95, 91, 87,255,156,156,157,255,172,173,175,255, +174,175,177,255,175,176,178,255,174,175,177,255,174,175,177,255,173,176,176,255,174,175,177,255,174,175,177,255,174,175,177,255, +173,174,176,255,172,175,175,255,173,174,176,255,173,173,176,255,172,173,175,255,172,174,175,255,171,173,174,255,171,173,174,255, +172,172,173,255,171,172,173,255,171,172,174,255,173,174,176,255,179,181,183,255,184,185,185,255,179,180,181,255,166,167,168,255, +160,160,161,255,158,159,160,255,158,159,159,255,158,158,159,255,157,158,158,255,157,157,158,255,155,157,156,255,155,155,156,255, +155,155,156,255,154,154,155,255,153,153,153,255,153,153,153,255,152,152,152,255,150,150,150,255,150,150,150,255,149,148,148,255, +148,147,147,255,148,147,146,255,146,145,144,255,145,144,143,255,144,143,142,255,142,141,140,255,141,140,138,255,140,138,137,255, +138,136,134,255,136,135,133,255,134,132,130,255,133,131,128,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,131,133,134,255, +196,199,203,255,194,197,202,255,195,198,201,255,195,198,200,255,195,198,201,255,194,197,200,255,193,196,201,255,193,196,199,255, +194,197,200,255,193,196,199,255,193,196,199,255,192,195,199,255,192,194,198,255,192,195,198,255,191,194,197,255,190,193,196,255, +190,194,197,255,191,193,196,255,189,193,196,255,190,192,196,255,189,191,196,255,189,191,194,255,188,191,194,255,188,192,195,255, +189,190,193,255,189,191,194,255,188,191,194,255,188,190,193,255,188,189,192,255,188,190,193,255,187,190,193,255,187,189,192,255, +185,188,190,255,177,178,181,255,121,118,117,255, 71, 65, 60,255, 69, 63, 58,255, 67, 61, 56,255,105,101, 99,255,160,162,163,255, +172,173,175,255,173,174,176,255,173,176,176,255,174,176,177,255,173,175,176,255,174,174,177,255,173,175,176,255,172,175,175,255, +173,175,176,255,173,174,176,255,172,174,175,255,172,174,175,255,171,173,174,255,172,173,174,255,171,172,173,255,172,173,174,255, +170,171,174,255,171,172,173,255,171,172,172,255,171,172,173,255,172,173,175,255,179,181,183,255,182,183,184,255,176,177,179,255, +164,165,166,255,159,160,160,255,158,158,159,255,157,158,158,255,157,158,158,255,157,157,157,255,157,157,158,255,155,155,156,255, +155,155,156,255,154,154,155,255,153,153,154,255,152,152,153,255,151,152,152,255,151,150,150,255,151,150,150,255,149,148,148,255, +148,147,147,255,148,147,146,255,146,145,144,255,145,144,143,255,144,143,141,255,142,141,139,255,140,139,138,255,139,138,136,255, +137,135,134,255,136,134,132,255,134,132,129,255,132,130,127,255, 97, 96, 94,255, 61, 61, 61,255, 60, 60, 60,255,131,133,134,255, +197,200,203,255,195,198,202,255,194,197,201,255,194,197,201,255,194,197,200,255,195,198,201,255,194,197,200,255,193,196,200,255, +193,197,199,255,194,196,200,255,192,195,199,255,193,196,199,255,193,194,199,255,192,195,198,255,192,195,198,255,191,194,197,255, +190,194,196,255,191,193,196,255,189,192,195,255,189,193,196,255,190,193,196,255,190,191,195,255,189,192,194,255,188,192,195,255, +189,190,193,255,188,191,194,255,187,191,194,255,188,190,193,255,188,190,193,255,188,189,192,255,187,189,193,255,187,190,192,255, +187,189,192,255,185,187,190,255,172,174,175,255,103, 99, 97,255, 67, 61, 56,255, 69, 63, 58,255, 68, 62, 56,255,112,110,108,255, +162,163,165,255,172,173,175,255,173,175,176,255,174,175,177,255,174,174,177,255,173,175,176,255,172,175,175,255,172,174,175,255, +173,173,176,255,172,173,175,255,171,174,174,255,171,173,174,255,172,173,174,255,172,172,173,255,171,172,174,255,170,171,174,255, +171,172,173,255,170,171,172,255,170,171,172,255,170,171,172,255,170,171,172,255,171,172,173,255,178,180,181,255,181,182,183,255, +175,176,177,255,163,163,165,255,159,159,160,255,157,158,159,255,156,157,158,255,156,156,157,255,155,155,156,255,155,155,156,255, +154,154,155,255,154,154,155,255,152,152,153,255,152,152,153,255,152,152,152,255,151,150,150,255,150,149,149,255,149,148,148,255, +148,147,147,255,147,146,146,255,145,144,143,255,145,144,143,255,144,143,141,255,141,140,139,255,140,139,137,255,139,137,136,255, +137,135,133,255,135,133,131,255,133,132,129,255,132,129,126,255, 96, 95, 93,255, 61, 61, 61,255, 60, 60, 60,255,131,133,134,255, +197,200,203,255,195,198,201,255,195,198,202,255,194,197,202,255,195,198,201,255,194,197,200,255,195,198,201,255,194,197,200,255, +193,196,200,255,194,197,199,255,193,196,200,255,192,195,199,255,192,195,198,255,192,194,198,255,191,195,197,255,192,195,198,255, +191,193,197,255,190,194,197,255,190,192,196,255,190,193,195,255,189,193,195,255,190,191,195,255,189,192,194,255,188,192,195,255, +188,191,194,255,189,190,193,255,188,191,194,255,187,191,194,255,188,190,193,255,188,189,192,255,187,190,192,255,186,189,193,255, +187,190,192,255,186,188,191,255,184,186,189,255,164,165,167,255, 94, 90, 86,255, 67, 61, 56,255, 69, 63, 58,255, 73, 67, 62,255, +122,120,119,255,165,166,168,255,171,173,175,255,173,174,176,255,173,175,176,255,172,174,175,255,172,174,175,255,173,173,176,255, +172,173,175,255,172,174,175,255,172,174,175,255,172,173,174,255,171,172,173,255,171,172,174,255,170,171,173,255,170,171,173,255, +171,172,172,255,170,171,172,255,170,171,172,255,169,170,171,255,169,170,171,255,169,170,171,255,170,171,172,255,177,178,179,255, +179,181,181,255,173,175,176,255,162,163,164,255,158,158,159,255,156,157,158,255,156,156,157,255,156,156,157,255,154,154,155,255, +154,154,155,255,154,154,154,255,153,153,153,255,153,153,153,255,152,152,152,255,150,150,150,255,150,149,149,255,148,147,147,255, +148,147,146,255,147,146,145,255,145,144,143,255,144,143,142,255,142,141,140,255,142,140,139,255,140,138,137,255,138,137,135,255, +136,135,133,255,135,133,130,255,133,130,127,255,131,128,124,255, 96, 94, 92,255, 61, 61, 61,255, 60, 60, 60,255,131,133,134,255, +197,200,203,255,196,199,202,255,195,198,202,255,196,199,202,255,194,197,201,255,195,198,200,255,195,198,200,255,194,197,201,255, +193,196,200,255,193,196,199,255,194,197,200,255,193,196,199,255,193,195,199,255,192,195,198,255,191,194,197,255,192,194,198,255, +191,193,197,255,190,193,196,255,191,193,197,255,191,192,196,255,190,192,195,255,189,192,195,255,190,191,194,255,189,192,195,255, +189,191,194,255,189,190,193,255,188,191,194,255,187,191,193,255,188,190,192,255,188,189,193,255,187,190,193,255,186,190,192,255, +186,189,191,255,187,189,192,255,186,188,191,255,182,184,187,255,154,154,156,255, 83, 78, 74,255, 69, 63, 58,255, 69, 63, 58,255, + 73, 67, 62,255,132,130,130,255,166,167,168,255,172,173,174,255,172,173,175,255,173,173,176,255,173,174,176,255,171,174,174,255, +171,174,175,255,172,173,174,255,172,172,173,255,171,172,174,255,170,171,174,255,171,172,173,255,170,171,172,255,171,172,173,255, +169,170,171,255,169,170,171,255,168,169,170,255,168,169,170,255,167,168,169,255,167,168,169,255,168,168,169,255,169,169,170,255, +176,177,178,255,178,179,180,255,172,173,174,255,160,161,162,255,157,157,158,255,156,156,157,255,155,155,156,255,154,154,155,255, +153,153,154,255,154,154,154,255,153,153,153,255,152,152,152,255,151,151,150,255,150,150,149,255,150,149,149,255,148,147,147,255, +147,146,146,255,147,146,145,255,145,144,143,255,144,143,141,255,142,141,140,255,140,139,138,255,139,138,136,255,138,136,134,255, +135,134,131,255,134,132,129,255,131,128,126,255,128,126,122,255, 95, 93, 90,255, 61, 61, 61,255, 60, 60, 60,255,131,133,135,255, +197,200,203,255,196,199,202,255,196,199,202,255,196,199,202,255,194,197,201,255,194,197,201,255,195,198,200,255,195,198,201,255, +194,197,200,255,193,196,199,255,194,197,200,255,194,196,200,255,192,196,198,255,193,196,199,255,192,195,198,255,192,195,198,255, +192,194,197,255,191,193,196,255,190,193,196,255,191,193,196,255,190,192,195,255,190,192,195,255,190,191,194,255,189,192,195,255, +188,191,194,255,188,191,194,255,189,190,193,255,188,190,193,255,187,191,192,255,188,190,193,255,187,190,192,255,187,189,192,255, +186,190,191,255,187,188,192,255,186,189,191,255,185,188,190,255,180,182,185,255,139,138,138,255, 75, 70, 65,255, 69, 63, 58,255, + 68, 62, 57,255, 76, 70, 64,255,132,131,131,255,166,167,168,255,171,172,174,255,172,173,175,255,172,173,175,255,172,173,174,255, +172,173,174,255,171,172,173,255,171,172,174,255,170,171,173,255,170,171,173,255,171,172,172,255,170,171,172,255,169,170,171,255, +169,170,171,255,168,169,170,255,168,169,170,255,167,168,169,255,168,168,169,255,167,167,168,255,167,167,168,255,167,167,168,255, +167,168,169,255,173,174,174,255,178,179,180,255,171,172,173,255,160,160,161,255,156,156,157,255,155,154,156,255,153,154,154,255, +154,154,154,255,153,153,153,255,152,152,152,255,152,152,152,255,150,150,150,255,150,149,149,255,149,148,148,255,148,147,146,255, +147,146,145,255,146,145,144,255,144,143,142,255,143,142,141,255,142,141,139,255,140,139,137,255,139,137,135,255,137,135,133,255, +135,133,130,255,133,131,128,255,130,127,124,255,119,116,110,255, 57, 55, 54,255, 61, 61, 61,255, 60, 60, 60,255,131,133,135,255, +197,200,203,255,196,199,201,255,196,199,202,255,196,199,202,255,195,198,202,255,195,198,202,255,194,197,201,255,194,198,200,255, +195,197,201,255,194,196,200,255,193,197,199,255,194,197,200,255,193,195,199,255,192,196,198,255,192,195,198,255,191,194,197,255, +192,194,197,255,192,194,197,255,190,194,197,255,191,193,196,255,190,193,196,255,190,192,195,255,189,192,195,255,190,191,194,255, +188,192,195,255,189,191,194,255,189,190,193,255,188,190,193,255,187,191,193,255,187,190,192,255,187,190,192,255,186,190,192,255, +187,189,191,255,186,188,191,255,187,188,192,255,186,189,191,255,185,187,190,255,178,180,182,255,130,130,129,255, 69, 63, 58,255, + 69, 63, 58,255, 69, 63, 58,255, 80, 74, 70,255,135,135,134,255,166,167,168,255,171,172,173,255,171,173,174,255,172,173,173,255, +171,172,173,255,171,172,173,255,170,171,174,255,171,172,173,255,171,172,173,255,170,171,172,255,169,170,171,255,169,170,171,255, +168,169,170,255,168,169,170,255,167,168,169,255,168,168,169,255,167,167,168,255,167,166,168,255,166,166,167,255,166,167,167,255, +165,166,166,255,166,166,167,255,170,170,171,255,175,176,177,255,171,172,174,255,159,159,160,255,155,156,156,255,153,154,154,255, +154,154,154,255,152,152,152,255,152,152,152,255,151,151,151,255,151,150,150,255,149,148,148,255,149,148,147,255,147,146,146,255, +146,145,144,255,146,145,143,255,144,143,141,255,142,141,140,255,141,140,138,255,140,138,136,255,138,136,134,255,136,134,132,255, +135,132,128,255,131,128,125,255,131,127,122,255, 41, 39, 37,255, 27, 27, 27,255, 62, 62, 62,255, 60, 60, 60,255,131,133,135,255, +197,200,204,255,196,199,202,255,196,199,201,255,196,199,201,255,195,198,202,255,196,199,202,255,195,198,201,255,195,197,200,255, +195,198,201,255,195,198,201,255,193,196,199,255,193,196,199,255,193,197,199,255,193,195,199,255,192,195,198,255,193,196,199,255, +191,194,197,255,192,195,198,255,191,193,196,255,190,194,197,255,191,193,196,255,190,193,196,255,189,192,195,255,190,191,194,255, +188,192,195,255,189,191,194,255,189,190,193,255,187,191,194,255,188,190,193,255,188,189,192,255,186,190,193,255,186,190,193,255, +187,189,192,255,186,189,191,255,187,189,192,255,187,189,192,255,185,188,190,255,184,187,189,255,176,178,180,255,120,119,117,255, + 70, 64, 59,255, 69, 63, 58,255, 69, 63, 57,255, 81, 75, 71,255,140,140,140,255,166,167,168,255,170,171,172,255,170,171,173,255, +170,171,173,255,171,172,174,255,171,172,172,255,170,171,172,255,169,170,171,255,169,170,171,255,168,169,170,255,169,170,171,255, +167,168,169,255,168,168,169,255,168,167,169,255,166,167,167,255,166,166,167,255,166,167,167,255,165,166,166,255,164,165,165,255, +164,165,165,255,163,164,164,255,164,164,165,255,166,166,167,255,172,173,174,255,171,172,173,255,158,159,160,255,155,155,155,255, +153,153,153,255,153,153,153,255,151,151,151,255,151,151,150,255,149,149,148,255,149,148,148,255,148,147,147,255,147,146,145,255, +146,145,144,255,145,144,143,255,143,142,140,255,142,141,139,255,141,139,137,255,138,137,135,255,137,135,133,255,136,133,131,255, +133,130,127,255,131,128,123,255, 66, 64, 62,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,131,133,135,255, +197,200,204,255,196,199,203,255,196,199,202,255,196,199,201,255,196,199,202,255,196,199,202,255,194,197,200,255,195,198,201,255, +195,198,201,255,194,197,200,255,194,197,200,255,193,196,199,255,194,196,200,255,193,196,199,255,193,195,199,255,193,195,198,255, +192,194,198,255,191,195,198,255,192,194,197,255,190,193,196,255,190,193,196,255,191,192,195,255,189,193,196,255,190,192,195,255, +188,191,194,255,189,191,194,255,189,190,193,255,188,191,194,255,187,190,193,255,187,190,192,255,188,190,193,255,187,189,192,255, +186,188,191,255,187,189,192,255,186,189,191,255,185,188,190,255,186,188,191,255,185,187,191,255,183,186,188,255,170,171,173,255, +109,106,103,255, 69, 63, 58,255, 70, 64, 59,255, 67, 61, 56,255, 81, 75, 71,255,136,135,135,255,165,166,167,255,169,170,172,255, +170,171,173,255,170,171,173,255,170,171,172,255,169,170,171,255,169,170,171,255,168,169,170,255,168,169,170,255,167,168,169,255, +168,168,169,255,167,167,168,255,167,167,168,255,166,166,167,255,165,166,166,255,165,166,166,255,164,165,165,255,164,165,165,255, +163,164,164,255,162,163,163,255,162,163,163,255,162,163,162,255,163,162,163,255,169,169,169,255,171,171,173,255,160,160,161,255, +154,154,154,255,153,153,153,255,151,151,151,255,150,150,149,255,150,148,149,255,148,147,147,255,148,147,146,255,146,145,144,255, +146,145,144,255,144,143,141,255,142,141,140,255,141,140,138,255,139,138,136,255,138,136,134,255,136,134,131,255,133,130,127,255, +131,128,124,255, 95, 93, 89,255, 4, 4, 4,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 60, 60, 60,255,132,133,135,255, +197,200,204,255,196,199,203,255,196,199,202,255,196,199,201,255,196,199,202,255,196,199,202,255,195,198,201,255,194,197,200,255, +195,198,201,255,195,198,201,255,194,197,200,255,193,196,199,255,194,197,200,255,194,196,200,255,193,195,199,255,193,195,199,255, +192,195,198,255,191,194,197,255,191,194,197,255,191,193,196,255,190,194,197,255,190,192,195,255,189,192,195,255,190,193,196,255, +189,191,194,255,188,191,194,255,188,191,194,255,188,190,194,255,187,191,193,255,188,190,192,255,187,190,192,255,187,189,192,255, +186,189,191,255,187,189,192,255,186,189,191,255,185,189,190,255,185,188,190,255,186,188,191,255,184,187,190,255,182,184,186,255, +167,168,169,255,102, 98, 96,255, 66, 60, 54,255, 70, 64, 59,255, 69, 63, 58,255, 81, 76, 71,255,136,134,134,255,164,166,166,255, +168,169,170,255,170,171,172,255,170,171,172,255,169,170,171,255,169,170,171,255,168,169,170,255,167,168,169,255,168,168,169,255, +168,167,168,255,167,167,168,255,166,166,167,255,165,166,166,255,165,166,166,255,164,165,165,255,164,165,165,255,163,164,164,255, +163,163,163,255,162,163,163,255,162,162,162,255,161,161,161,255,160,160,160,255,160,160,159,255,162,162,161,255,172,173,173,255, +161,162,163,255,153,153,153,255,151,151,150,255,150,149,149,255,149,148,148,255,148,147,146,255,147,146,145,255,147,146,144,255, +144,143,142,255,143,142,140,255,142,141,139,255,140,139,137,255,139,137,135,255,137,135,133,255,135,132,129,255,131,129,125,255, +124,120,115,255, 14, 14, 13,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,132,134,135,255, +198,201,204,255,195,198,202,255,195,198,203,255,196,199,202,255,196,199,202,255,196,199,202,255,195,199,201,255,195,198,201,255, +194,197,200,255,195,198,201,255,195,197,201,255,194,196,200,255,194,196,200,255,194,197,200,255,193,196,199,255,193,196,199,255, +193,195,198,255,192,194,197,255,191,194,197,255,192,193,196,255,191,194,197,255,191,192,195,255,190,193,196,255,189,193,196,255, +189,191,194,255,188,192,195,255,189,191,194,255,188,190,193,255,187,191,194,255,188,190,193,255,187,189,193,255,186,190,192,255, +187,189,191,255,186,188,191,255,185,189,190,255,186,188,191,255,186,187,191,255,186,187,190,255,185,188,190,255,184,186,188,255, +182,184,186,255,165,167,168,255, 96, 93, 89,255, 69, 63, 58,255, 69, 63, 58,255, 69, 62, 57,255, 78, 73, 68,255,133,132,132,255, +162,163,164,255,167,168,169,255,168,169,170,255,168,169,170,255,167,168,169,255,168,168,169,255,168,167,168,255,167,167,168,255, +166,166,167,255,166,167,167,255,165,167,166,255,164,165,165,255,164,165,165,255,163,164,164,255,162,163,163,255,163,163,163,255, +162,162,162,255,161,161,161,255,161,161,161,255,159,160,159,255,158,158,158,255,157,157,157,255,157,156,156,255,157,156,155,255, +170,170,171,255,162,162,162,255,153,153,153,255,150,149,149,255,149,148,148,255,147,146,145,255,146,145,145,255,145,144,142,255, +144,143,141,255,143,141,140,255,141,139,138,255,140,138,136,255,138,136,133,255,134,132,129,255,134,131,127,255,130,126,121,255, + 23, 22, 21,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,132,134,135,255, +199,202,205,255,196,199,202,255,196,198,202,255,195,199,202,255,196,199,202,255,196,199,202,255,196,199,202,255,195,197,201,255, +195,198,201,255,194,198,200,255,195,198,201,255,194,197,200,255,194,196,200,255,193,197,200,255,194,196,199,255,194,195,198,255, +192,196,199,255,193,195,198,255,191,195,198,255,192,194,197,255,191,194,197,255,191,193,196,255,190,192,195,255,190,193,195,255, +189,192,195,255,188,192,195,255,189,191,194,255,188,191,194,255,187,190,193,255,188,190,193,255,187,190,193,255,187,189,192,255, +186,189,192,255,186,189,191,255,185,188,190,255,186,187,190,255,185,188,190,255,186,188,189,255,185,187,189,255,185,187,189,255, +184,186,188,255,181,183,185,255,159,160,161,255, 93, 89, 86,255, 68, 62, 57,255, 70, 64, 59,255, 68, 62, 57,255, 76, 71, 65,255, +124,122,121,255,160,160,161,255,166,167,168,255,167,168,169,255,168,168,169,255,168,167,168,255,167,167,168,255,166,166,167,255, +165,167,166,255,165,166,166,255,164,165,165,255,164,165,165,255,163,164,164,255,163,163,163,255,163,163,163,255,162,162,162,255, +161,161,161,255,160,160,160,255,159,159,158,255,158,158,158,255,157,157,156,255,157,156,155,255,155,154,154,255,154,153,152,255, +152,151,149,255,163,162,162,255,165,165,165,255,156,155,156,255,149,148,148,255,147,146,145,255,146,145,143,255,144,143,142,255, +143,142,140,255,141,140,138,255,140,138,137,255,138,137,134,255,136,134,131,255,134,132,127,255,129,126,121,255, 46, 44, 42,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255, +199,201,204,255,198,201,204,255,196,199,202,255,196,198,202,255,196,199,202,255,196,199,202,255,196,199,202,255,196,197,202,255, +195,198,201,255,194,198,200,255,195,198,201,255,194,197,200,255,193,196,199,255,194,197,199,255,194,196,200,255,193,196,199,255, +192,196,198,255,193,195,198,255,192,194,197,255,191,195,198,255,191,194,197,255,190,194,197,255,191,193,196,255,190,192,195,255, +189,192,194,255,189,191,195,255,188,191,194,255,188,190,194,255,188,190,193,255,187,189,192,255,188,190,193,255,187,189,192,255, +186,188,191,255,186,189,191,255,186,188,191,255,185,187,191,255,186,188,190,255,185,187,189,255,184,186,189,255,185,187,189,255, +184,186,189,255,183,186,188,255,180,182,184,255,157,158,159,255, 89, 86, 81,255, 67, 60, 55,255, 70, 64, 59,255, 69, 63, 58,255, + 74, 69, 64,255,116,114,112,255,158,157,158,255,165,166,166,255,167,167,168,255,167,167,168,255,166,166,167,255,166,167,167,255, +165,166,166,255,164,165,165,255,164,165,165,255,163,164,164,255,163,163,163,255,163,163,163,255,162,162,162,255,161,161,161,255, +160,160,160,255,159,159,159,255,158,158,157,255,157,157,156,255,156,155,154,255,155,154,153,255,153,153,152,255,152,151,150,255, +150,149,148,255,149,147,144,255,150,148,146,255,164,164,162,255,166,166,166,255,150,149,149,255,145,144,143,255,143,142,141,255, +142,141,139,255,140,139,137,255,139,137,135,255,137,135,132,255,134,131,128,255,132,129,125,255, 64, 63, 60,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255, +202,205,208,255,198,200,203,255,198,201,204,255,196,199,202,255,195,199,201,255,196,199,202,255,196,198,202,255,195,198,201,255, +194,197,200,255,195,198,201,255,194,198,200,255,195,197,201,255,194,196,200,255,193,196,199,255,194,197,200,255,193,195,199,255, +192,196,198,255,193,196,199,255,193,194,197,255,192,195,198,255,192,194,197,255,191,194,197,255,191,193,196,255,190,192,195,255, +190,192,195,255,190,191,194,255,189,192,194,255,189,190,194,255,188,191,193,255,187,190,192,255,187,190,192,255,187,189,192,255, +186,189,191,255,186,188,191,255,186,188,191,255,185,187,190,255,186,188,189,255,185,187,189,255,184,186,190,255,185,187,188,255, +185,187,189,255,184,186,188,255,183,185,187,255,180,182,184,255,158,158,160,255, 90, 86, 82,255, 69, 63, 58,255, 69, 63, 59,255, + 69, 63, 58,255, 69, 62, 57,255,106,103,100,255,150,150,150,255,162,163,164,255,164,165,166,255,165,167,166,255,165,166,166,255, +164,165,165,255,163,164,164,255,163,164,164,255,163,163,163,255,162,162,162,255,161,161,161,255,161,161,161,255,160,160,160,255, +158,158,159,255,157,157,157,255,157,157,156,255,155,155,154,255,155,154,153,255,153,152,151,255,151,150,149,255,150,149,147,255, +149,147,144,255,146,144,141,255,142,140,135,255,105, 99, 93,255, 97, 93, 89,255,101,101,101,255,143,142,142,255,142,141,139,255, +144,141,140,255,141,140,137,255,139,137,134,255,136,133,130,255,129,126,123,255, 66, 65, 62,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255, +203,206,209,255,201,204,206,255,198,200,203,255,197,200,203,255,195,198,201,255,196,199,202,255,196,199,202,255,195,198,201,255, +194,197,200,255,195,198,201,255,195,198,201,255,194,197,201,255,195,197,200,255,193,197,199,255,194,197,200,255,193,195,198,255, +192,196,199,255,193,196,199,255,192,194,197,255,192,195,198,255,191,194,197,255,192,194,197,255,190,193,196,255,190,192,195,255, +190,192,195,255,189,191,194,255,188,192,195,255,189,190,193,255,188,191,193,255,187,190,192,255,187,189,192,255,186,190,191,255, +186,189,191,255,186,188,191,255,185,187,191,255,185,187,190,255,185,187,190,255,184,186,190,255,185,187,189,255,184,186,188,255, +184,186,188,255,184,186,187,255,183,185,187,255,182,184,186,255,179,181,183,255,155,155,156,255, 93, 88, 85,255, 68, 62, 56,255, + 70, 64, 59,255, 69, 63, 58,255, 68, 62, 57,255, 93, 89, 85,255,138,137,136,255,159,160,161,255,163,164,165,255,164,165,165,255, +163,164,164,255,163,164,164,255,163,163,163,255,162,162,162,255,161,162,162,255,160,160,160,255,159,159,159,255,159,158,158,255, +157,157,157,255,157,156,156,255,156,155,154,255,154,154,153,255,153,152,151,255,151,150,149,255,150,148,146,255,148,146,143,255, +147,144,141,255,141,138,134,255, 96, 91, 85,255, 70, 63, 56,255, 63, 58, 52,255, 0, 0, 0,255, 10, 10, 10,255, 49, 49, 48,255, + 79, 78, 77,255, 87, 85, 85,255, 82, 81, 79,255, 63, 62, 61,255, 22, 22, 21,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255, +203,206,208,255,202,204,207,255,200,202,205,255,198,200,204,255,197,200,203,255,195,198,201,255,196,198,202,255,196,197,202,255, +195,198,201,255,194,198,200,255,195,197,201,255,195,198,201,255,195,197,199,255,194,197,200,255,193,197,200,255,194,195,198,255, +193,196,199,255,192,196,199,255,192,194,197,255,191,195,198,255,192,194,197,255,191,194,197,255,190,193,196,255,190,192,195,255, +190,192,195,255,189,191,194,255,188,192,195,255,188,190,193,255,188,191,193,255,187,190,192,255,187,189,192,255,186,190,191,255, +187,189,192,255,186,188,191,255,185,187,190,255,186,188,190,255,185,187,190,255,184,186,189,255,184,186,188,255,184,186,188,255, +184,186,187,255,183,185,187,255,182,184,188,255,183,185,187,255,181,183,185,255,179,180,182,255,158,158,159,255, 95, 91, 87,255, + 67, 60, 55,255, 70, 64, 59,255, 69, 63, 58,255, 69, 63, 58,255, 79, 73, 68,255,122,120,118,255,154,154,155,255,161,161,162,255, +162,162,163,255,163,163,163,255,162,162,162,255,161,161,161,255,160,160,160,255,159,159,159,255,158,158,158,255,157,157,156,255, +157,156,155,255,156,154,154,255,154,153,152,255,153,152,150,255,151,150,149,255,149,148,146,255,148,145,142,255,146,144,140,255, +134,130,126,255, 83, 77, 70,255, 71, 64, 57,255, 72, 65, 58,255, 48, 45, 41,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255, +203,205,208,255,200,204,206,255,201,204,207,255,198,201,203,255,198,200,203,255,196,199,202,255,195,199,201,255,195,198,201,255, +194,197,200,255,195,198,201,255,195,198,201,255,195,197,200,255,195,197,200,255,194,197,200,255,193,197,200,255,193,195,198,255, +193,196,199,255,192,196,199,255,192,195,198,255,191,195,198,255,192,194,197,255,191,193,196,255,191,193,196,255,191,192,195,255, +190,192,195,255,190,191,194,255,189,192,195,255,188,190,193,255,188,191,192,255,187,190,192,255,187,190,192,255,186,189,191,255, +187,188,192,255,185,189,190,255,185,188,190,255,186,188,189,255,184,186,190,255,184,186,189,255,185,187,189,255,183,185,187,255, +184,185,188,255,183,184,187,255,182,185,186,255,182,184,186,255,182,184,186,255,181,183,185,255,179,180,182,255,162,163,163,255, + 99, 96, 92,255, 70, 64, 59,255, 69, 63, 58,255, 70, 64, 59,255, 69, 63, 58,255, 70, 64, 57,255,102, 99, 94,255,141,139,139,255, +156,156,156,255,160,160,160,255,160,160,160,255,160,160,160,255,159,159,159,255,158,158,158,255,157,157,156,255,156,156,155,255, +155,154,153,255,153,153,152,255,152,151,150,255,150,149,147,255,149,148,145,255,147,145,142,255,145,142,138,255,129,126,120,255, + 78, 72, 65,255, 71, 64, 57,255, 72, 65, 58,255, 71, 63, 56,255, 40, 39, 37,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,137,255, +203,205,208,255,200,204,207,255,200,204,206,255,201,203,206,255,199,201,204,255,198,200,203,255,196,199,202,255,195,198,201,255, +194,197,200,255,195,198,201,255,195,197,201,255,194,197,200,255,195,196,200,255,193,197,200,255,194,197,200,255,193,196,199,255, +192,195,198,255,193,195,198,255,192,196,199,255,192,194,197,255,191,195,198,255,192,193,196,255,191,194,196,255,190,193,195,255, +190,192,195,255,189,191,194,255,190,192,195,255,188,190,193,255,188,191,193,255,188,190,193,255,187,190,192,255,186,189,191,255, +187,188,192,255,185,188,190,255,186,188,190,255,185,187,189,255,184,186,189,255,185,187,189,255,184,186,188,255,183,185,187,255, +184,185,187,255,183,184,186,255,182,184,186,255,182,184,186,255,181,184,186,255,182,183,185,255,181,183,184,255,179,180,181,255, +162,163,164,255,108,105,101,255, 69, 63, 58,255, 69, 63, 58,255, 70, 64, 59,255, 69, 63, 58,255, 68, 61, 56,255, 83, 77, 73,255, +114,111,108,255,144,143,142,255,156,156,155,255,158,158,157,255,158,157,157,255,157,157,156,255,156,155,155,255,155,154,153,255, +153,153,152,255,152,151,149,255,150,149,148,255,149,147,144,255,146,145,142,255,147,144,140,255,131,127,122,255, 77, 71, 64,255, + 69, 62, 56,255, 71, 65, 58,255, 71, 64, 57,255, 74, 67, 60,255, 10, 10, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,137,255, +202,205,208,255,200,203,206,255,201,204,206,255,200,203,205,255,201,202,205,255,199,202,205,255,199,202,204,255,195,198,201,255, +195,197,200,255,194,197,201,255,195,197,200,255,195,196,201,255,194,197,200,255,193,197,200,255,194,196,199,255,193,197,200,255, +192,195,198,255,193,195,198,255,193,196,199,255,193,194,197,255,192,195,198,255,192,193,196,255,191,193,196,255,190,194,195,255, +190,192,195,255,189,192,194,255,190,192,195,255,188,190,193,255,189,191,194,255,188,190,193,255,187,190,191,255,187,189,191,255, +187,188,192,255,185,188,190,255,186,188,189,255,185,187,190,255,184,186,189,255,185,187,189,255,184,186,188,255,183,185,187,255, +184,184,186,255,183,184,186,255,182,184,186,255,181,184,186,255,181,183,185,255,181,182,184,255,181,183,184,255,180,181,183,255, +179,180,180,255,167,168,169,255,120,119,117,255, 71, 65, 59,255, 69, 63, 58,255, 70, 63, 58,255, 69, 62, 57,255, 69, 62, 57,255, + 71, 64, 59,255, 84, 79, 72,255,116,114,111,255,143,141,141,255,152,151,150,255,154,154,153,255,153,152,151,255,153,152,151,255, +151,150,149,255,150,149,147,255,148,146,144,255,147,145,141,255,144,141,137,255,120,117,112,255, 77, 70, 64,255, 70, 63, 57,255, + 71, 64, 58,255, 70, 64, 57,255, 71, 65, 57,255, 67, 62, 57,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,137,255, +202,205,207,255,200,203,206,255,201,203,206,255,200,202,205,255,200,203,205,255,200,203,205,255,197,200,202,255,197,200,203,255, +195,198,201,255,194,198,201,255,195,196,201,255,194,197,200,255,194,197,200,255,194,196,199,255,194,197,200,255,194,195,198,255, +193,196,199,255,192,196,199,255,193,194,197,255,192,195,198,255,191,195,198,255,192,193,196,255,191,194,196,255,190,193,195,255, +190,193,195,255,189,192,194,255,190,192,195,255,188,190,193,255,189,191,193,255,188,190,193,255,188,190,191,255,187,189,192,255, +186,188,191,255,186,188,190,255,185,187,189,255,185,187,190,255,185,187,189,255,184,186,188,255,183,186,188,255,184,184,186,255, +183,185,187,255,183,185,187,255,181,183,185,255,182,183,185,255,182,182,185,255,180,183,183,255,180,182,183,255,179,182,183,255, +179,181,182,255,178,179,181,255,171,172,173,255,130,129,128,255, 80, 74, 69,255, 69, 63, 58,255, 69, 63, 57,255, 70, 62, 58,255, + 69, 62, 57,255, 69, 62, 57,255, 68, 61, 55,255, 81, 76, 70,255,106,103, 99,255,126,123,120,255,136,135,132,255,141,139,137,255, +142,140,138,255,141,139,136,255,136,134,130,255,126,122,118,255,100, 97, 91,255, 73, 66, 59,255, 70, 63, 57,255, 71, 64, 58,255, + 71, 64, 58,255, 71, 64, 58,255, 71, 64, 58,255, 44, 42, 39,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,136,255, +202,204,207,255,201,202,206,255,200,202,205,255,199,203,204,255,199,202,204,255,199,202,205,255,200,202,205,255,197,200,202,255, +197,199,202,255,195,197,200,255,194,196,200,255,194,197,200,255,193,197,199,255,194,197,200,255,194,196,199,255,194,195,198,255, +193,195,198,255,192,196,199,255,193,194,197,255,192,194,197,255,191,195,198,255,191,193,196,255,191,194,196,255,190,193,195,255, +190,193,195,255,189,192,194,255,190,192,195,255,188,190,193,255,189,191,192,255,188,190,193,255,188,190,191,255,187,189,192,255, +186,188,191,255,186,188,190,255,185,187,190,255,184,186,189,255,185,187,188,255,184,186,188,255,183,185,187,255,183,184,186,255, +183,185,186,255,182,184,186,255,181,183,185,255,182,183,185,255,181,183,184,255,180,182,183,255,180,182,183,255,180,181,182,255, +180,180,182,255,179,180,182,255,177,179,180,255,173,174,175,255,144,143,143,255, 93, 88, 85,255, 68, 61, 55,255, 69, 62, 57,255, + 70, 63, 58,255, 70, 63, 58,255, 69, 62, 57,255, 69, 61, 56,255, 68, 61, 56,255, 73, 67, 61,255, 81, 75, 69,255, 87, 82, 76,255, + 91, 86, 80,255, 89, 84, 78,255, 83, 77, 71,255, 75, 68, 61,255, 68, 62, 56,255, 70, 63, 57,255, 70, 64, 58,255, 71, 64, 58,255, + 71, 64, 58,255, 71, 64, 58,255, 70, 63, 57,255, 19, 18, 17,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,136,255, +202,204,207,255,200,203,205,255,199,203,205,255,199,202,205,255,199,202,205,255,200,201,204,255,199,201,204,255,199,201,204,255, +197,199,202,255,197,199,202,255,195,197,200,255,193,196,199,255,194,197,200,255,194,197,200,255,194,196,199,255,193,196,199,255, +192,196,199,255,192,195,198,255,192,194,197,255,191,195,198,255,191,194,197,255,191,193,196,255,190,194,195,255,191,193,196,255, +190,193,195,255,189,192,194,255,190,192,195,255,188,190,193,255,189,191,192,255,188,190,193,255,188,190,191,255,187,189,192,255, +187,189,191,255,185,188,190,255,185,187,189,255,184,186,188,255,184,186,188,255,183,186,188,255,183,185,187,255,183,184,186,255, +183,185,185,255,182,184,185,255,182,183,185,255,181,183,184,255,181,182,184,255,179,182,182,255,179,181,183,255,180,180,183,255, +179,180,181,255,179,179,182,255,177,180,180,255,177,178,180,255,174,175,176,255,158,159,159,255,112,109,107,255, 71, 65, 59,255, + 69, 62, 57,255, 70, 63, 58,255, 70, 63, 58,255, 69, 62, 57,255, 69, 62, 57,255, 69, 62, 57,255, 69, 63, 57,255, 69, 63, 57,255, + 70, 63, 57,255, 69, 63, 57,255, 69, 63, 57,255, 69, 63, 57,255, 69, 63, 57,255, 69, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, + 71, 64, 58,255, 70, 63, 57,255, 60, 55, 50,255, 1, 1, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,136,255, +202,204,206,255,199,202,204,255,200,201,204,255,200,202,203,255,200,201,203,255,199,201,203,255,199,201,203,255,198,200,203,255, +199,201,203,255,197,199,201,255,196,199,202,255,194,197,200,255,193,196,199,255,194,196,199,255,194,195,198,255,193,196,199,255, +192,195,198,255,192,195,198,255,192,194,198,255,191,195,197,255,191,194,197,255,191,193,196,255,190,194,195,255,191,193,196,255, +190,193,195,255,189,192,194,255,190,192,194,255,188,190,193,255,189,191,192,255,188,190,193,255,188,190,191,255,187,189,191,255, +186,188,190,255,186,188,190,255,185,187,189,255,184,186,189,255,184,186,188,255,183,186,188,255,183,185,187,255,182,184,186,255, +182,184,185,255,181,184,185,255,181,182,184,255,181,182,184,255,180,181,183,255,179,181,182,255,180,181,182,255,179,180,181,255, +178,179,181,255,178,179,180,255,178,178,180,255,177,178,179,255,176,177,178,255,174,175,176,255,168,168,169,255,132,131,130,255, + 86, 80, 75,255, 70, 63, 58,255, 69, 62, 57,255, 69, 62, 58,255, 70, 63, 58,255, 70, 63, 58,255, 70, 63, 58,255, 70, 63, 58,255, + 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 69, 64, 58,255, 71, 64, 58,255, + 70, 63, 57,255, 72, 65, 59,255, 24, 23, 22,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,135,255, +201,203,205,255,200,202,203,255,200,202,204,255,199,201,204,255,199,201,203,255,199,200,203,255,198,201,203,255,198,200,202,255, +197,200,202,255,198,200,202,255,197,199,201,255,195,198,201,255,194,197,200,255,193,195,198,255,193,196,199,255,192,196,198,255, +193,195,198,255,193,194,198,255,192,195,197,255,191,194,196,255,192,194,197,255,191,194,196,255,190,193,195,255,191,193,196,255, +189,193,194,255,189,192,194,255,190,192,194,255,188,190,193,255,189,191,192,255,188,190,192,255,188,190,191,255,187,189,191,255, +186,188,191,255,186,188,189,255,185,187,189,255,184,187,188,255,184,186,187,255,183,185,187,255,182,185,187,255,183,184,185,255, +182,184,185,255,182,183,185,255,181,182,184,255,181,181,184,255,179,182,182,255,180,181,182,255,179,180,181,255,178,179,181,255, +178,179,180,255,178,179,180,255,177,178,179,255,176,177,178,255,176,177,178,255,176,176,177,255,174,175,176,255,171,172,173,255, +155,154,154,255,116,113,110,255, 80, 74, 69,255, 67, 60, 54,255, 69, 62, 57,255, 69, 62, 57,255, 70, 62, 58,255, 70, 63, 58,255, + 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 69, 64, 58,255, 70, 63, 57,255, + 75, 68, 62,255, 41, 38, 35,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,135,255, +200,202,204,255,199,201,203,255,199,201,203,255,198,201,203,255,199,201,203,255,198,200,202,255,197,200,202,255,197,200,202,255, +198,200,202,255,198,200,202,255,196,198,200,255,196,198,200,255,195,198,200,255,194,197,199,255,193,195,198,255,193,195,197,255, +193,195,198,255,192,194,197,255,191,195,196,255,191,194,196,255,192,193,197,255,190,194,195,255,190,193,195,255,191,193,196,255, +189,192,194,255,190,192,194,255,189,191,193,255,188,190,193,255,189,191,192,255,188,190,192,255,188,190,192,255,187,189,191,255, +186,188,190,255,186,188,190,255,185,187,189,255,184,186,188,255,184,186,187,255,183,185,186,255,182,185,187,255,182,183,185,255, +182,184,185,255,181,183,184,255,181,182,184,255,180,182,183,255,180,181,183,255,179,181,182,255,178,180,181,255,179,180,181,255, +177,178,179,255,177,178,179,255,176,177,179,255,176,176,177,255,176,176,177,255,175,175,176,255,174,175,175,255,174,174,175,255, +171,172,173,255,166,166,167,255,149,148,148,255,109,107,103,255, 76, 69, 63,255, 69, 62, 56,255, 69, 62, 57,255, 69, 63, 57,255, + 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 69, 64, 58,255, 69, 63, 57,255, 73, 66, 60,255, + 52, 49, 46,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,134,135,255, +200,201,203,255,197,199,200,255,197,198,200,255,198,199,201,255,197,199,201,255,197,199,201,255,198,199,201,255,197,199,201,255, +197,198,200,255,196,198,200,255,196,198,200,255,196,198,200,255,196,198,199,255,195,197,199,255,193,196,198,255,192,195,197,255, +192,194,197,255,191,195,196,255,191,194,196,255,192,193,197,255,191,193,196,255,191,193,196,255,191,192,195,255,190,192,195,255, +190,192,194,255,190,192,193,255,189,191,194,255,189,191,193,255,188,190,192,255,188,190,192,255,188,189,191,255,187,188,190,255, +186,188,190,255,186,188,189,255,185,187,188,255,185,186,188,255,184,185,187,255,183,185,186,255,183,184,185,255,182,183,185,255, +181,183,184,255,181,183,184,255,181,181,182,255,180,181,182,255,179,180,181,255,178,180,181,255,178,179,180,255,177,178,179,255, +177,178,179,255,176,177,178,255,176,176,177,255,175,175,176,255,174,175,176,255,174,174,175,255,173,174,174,255,173,173,173,255, +172,172,173,255,171,171,172,255,170,170,170,255,165,165,165,255,147,146,145,255,114,110,106,255, 88, 83, 78,255, 76, 71, 65,255, + 72, 66, 60,255, 70, 63, 57,255, 69, 63, 57,255, 69, 63, 56,255, 70, 64, 58,255, 76, 70, 64,255, 73, 69, 62,255, 49, 48, 45,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 71, 71, 71,255, +143,144,144,255,196,198,198,255,199,201,201,255,197,200,200,255,196,197,199,255,197,198,200,255,197,198,199,255,196,198,199,255, +196,198,200,255,196,198,199,255,196,198,199,255,196,197,199,255,195,197,199,255,195,196,198,255,194,196,198,255,194,196,199,255, +192,194,197,255,191,194,196,255,192,193,197,255,191,193,196,255,191,193,196,255,191,192,195,255,190,192,194,255,190,192,195,255, +190,192,194,255,189,191,193,255,189,191,193,255,189,191,192,255,188,190,192,255,188,190,192,255,187,188,190,255,187,189,190,255, +186,188,190,255,186,187,189,255,185,187,188,255,184,186,188,255,183,185,187,255,183,185,186,255,182,184,185,255,181,183,184,255, +181,183,184,255,181,182,183,255,180,181,182,255,180,181,182,255,178,179,180,255,178,179,180,255,178,179,179,255,177,178,179,255, +176,177,178,255,176,177,177,255,175,176,177,255,174,175,176,255,174,174,175,255,173,174,174,255,173,173,174,255,172,172,172,255, +171,171,172,255,170,170,170,255,170,170,170,255,169,169,169,255,168,168,167,255,164,164,163,255,154,153,153,255,139,138,135,255, +125,122,118,255,113,110,106,255,107,103, 99,255,110,106,102,255,115,111,107,255, 61, 60, 57,255, 21, 21, 20,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 29, 29, 29,255, + 0, 0, 0,255, 17, 17, 17,255, 97, 98, 98,255,186,187,187,255,197,199,199,255,196,198,198,255,196,197,198,255,196,197,198,255, +196,197,198,255,195,197,198,255,195,197,198,255,195,197,198,255,195,196,198,255,195,196,198,255,194,195,197,255,193,195,196,255, +193,196,198,255,192,194,197,255,191,193,196,255,190,192,196,255,190,192,195,255,191,193,194,255,190,192,195,255,189,191,194,255, +190,192,194,255,189,191,193,255,188,191,192,255,188,189,192,255,188,190,192,255,187,189,191,255,186,189,190,255,187,188,190,255, +186,188,189,255,185,186,189,255,185,186,188,255,184,186,187,255,184,184,187,255,183,184,186,255,182,184,185,255,182,182,184,255, +181,182,183,255,181,182,183,255,179,181,181,255,180,181,181,255,179,180,181,255,177,178,179,255,177,178,179,255,177,177,178,255, +176,177,177,255,175,176,177,255,174,175,176,255,173,175,175,255,173,174,174,255,172,172,172,255,171,172,172,255,172,172,172,255, +170,170,170,255,170,169,169,255,169,169,169,255,168,167,166,255,167,166,165,255,165,165,164,255,164,163,162,255,163,161,160,255, +159,158,157,255,158,157,155,255,157,156,153,255,103,102, 99,255, 9, 9, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 15, 15, 15,255, 92, 93, 92,255,147,147,147,255,166,167,167,255, +184,185,186,255,195,196,197,255,195,196,196,255,194,195,196,255,194,195,196,255,192,193,194,255,193,194,195,255,192,194,195,255, +192,193,194,255,192,194,197,255,192,194,196,255,190,192,195,255,191,193,194,255,190,192,194,255,189,191,193,255,189,191,194,255, +189,191,193,255,188,190,192,255,188,190,192,255,187,190,191,255,188,189,191,255,187,189,190,255,187,188,189,255,186,187,189,255, +186,187,189,255,184,187,188,255,184,186,187,255,184,184,187,255,183,185,186,255,183,184,185,255,182,182,184,255,181,182,183,255, +181,182,183,255,179,180,181,255,179,180,181,255,179,180,180,255,177,178,179,255,177,178,179,255,176,177,178,255,175,177,177,255, +175,175,176,255,175,175,176,255,174,174,174,255,173,173,173,255,172,173,173,255,171,172,172,255,171,171,171,255,170,170,170,255, +169,169,169,255,168,168,168,255,167,166,166,255,166,165,164,255,165,165,163,255,163,162,160,255,163,161,159,255,161,160,157,255, +148,146,144,255,110,110,107,255, 28, 27, 27,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 18, 18, 18,255, + 43, 43, 43,255, 68, 68, 68,255,112,113,113,255,146,147,146,255,183,184,185,255,195,195,196,255,193,194,194,255,192,193,194,255, +193,194,194,255,191,192,192,255,190,191,193,255,191,193,196,255,190,192,194,255,189,191,193,255,189,191,193,255,189,191,193,255, +188,191,193,255,188,190,192,255,187,190,192,255,188,189,191,255,187,189,190,255,187,188,190,255,186,187,189,255,186,187,189,255, +186,187,188,255,184,186,187,255,184,186,187,255,184,185,186,255,183,184,185,255,182,184,185,255,182,183,184,255,181,182,183,255, +180,181,182,255,180,181,181,255,179,180,180,255,178,179,180,255,177,178,179,255,177,177,178,255,176,177,177,255,176,176,177,255, +174,175,175,255,174,174,174,255,173,173,174,255,172,172,173,255,171,171,171,255,171,171,170,255,170,170,170,255,169,169,168,255, +168,168,167,255,167,166,165,255,165,164,164,255,163,162,160,255,162,161,159,255,163,161,159,255,157,155,153,255, 89, 88, 86,255, + 32, 31, 31,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 1,255, 17, 17, 17,255, 63, 64, 63,255,102,102,101,255, +131,131,131,255,169,170,169,255,189,189,188,255,189,191,191,255,192,194,196,255,189,191,193,255,187,189,191,255,188,191,193,255, +188,189,191,255,187,190,191,255,188,189,190,255,186,189,190,255,186,188,189,255,187,187,190,255,185,187,188,255,186,187,188,255, +185,186,187,255,184,186,187,255,183,185,186,255,184,185,186,255,182,183,184,255,182,183,184,255,182,183,184,255,180,181,182,255, +180,181,182,255,179,180,181,255,179,179,180,255,178,179,179,255,177,178,178,255,176,176,177,255,176,176,177,255,175,175,176,255, +174,174,174,255,173,173,173,255,172,172,172,255,171,171,171,255,171,171,170,255,169,169,168,255,168,168,167,255,168,167,166,255, +166,165,164,255,165,164,162,255,163,162,159,255,162,161,158,255,158,157,154,255, 89, 89, 86,255, 7, 6, 6,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 3, 3, 2,255, 31, 32, 32,255,135,136,138,255,186,188,189,255,189,191,192,255, +186,188,189,255,187,188,190,255,187,189,190,255,187,188,189,255,186,187,189,255,186,187,189,255,185,186,188,255,185,186,187,255, +184,186,187,255,183,185,186,255,183,184,185,255,182,184,185,255,182,183,184,255,181,182,183,255,181,182,182,255,180,181,181,255, +179,180,181,255,179,179,179,255,178,178,179,255,177,178,178,255,176,176,177,255,175,176,176,255,175,175,175,255,174,174,174,255, +173,173,173,255,172,172,171,255,171,171,170,255,170,170,170,255,169,169,168,255,168,168,167,255,166,165,163,255,166,164,163,255, +165,164,162,255,160,159,156,255,133,132,129,255, 86, 84, 82,255, 14, 13, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 1,255, 58, 59, 59,255,162,164,166,255, +191,192,194,255,186,187,188,255,185,187,188,255,186,187,189,255,186,187,188,255,185,187,188,255,184,186,187,255,184,186,187,255, +184,185,186,255,183,184,185,255,183,184,185,255,182,183,184,255,181,182,183,255,181,181,182,255,180,181,181,255,179,180,181,255, +179,179,180,255,178,179,179,255,177,178,178,255,177,177,177,255,176,176,176,255,174,174,175,255,174,174,173,255,173,173,172,255, +172,172,172,255,171,171,170,255,170,170,169,255,168,168,167,255,167,166,164,255,167,165,163,255,168,166,164,255,157,155,153,255, +102,101,100,255, 44, 43, 42,255, 11, 11, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 86, 87, 88,255,184,186,187,255,186,188,189,255,185,186,187,255,183,185,186,255,184,184,185,255,183,185,186,255,183,184,185,255, +182,184,185,255,182,183,184,255,181,182,183,255,182,182,183,255,180,181,181,255,180,181,181,255,179,180,181,255,179,178,179,255, +178,179,179,255,178,178,178,255,176,176,176,255,176,176,176,255,175,175,174,255,173,173,173,255,173,173,172,255,170,170,169,255, +169,169,168,255,170,169,168,255,168,167,166,255,166,165,164,255,166,164,162,255,151,149,147,255, 71, 70, 68,255, 6, 6, 6,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 16, 16, 16,255,109,111,111,255,162,163,164,255,184,186,187,255,184,185,186,255,182,183,184,255,182,183,184,255, +182,182,183,255,181,182,183,255,181,181,182,255,180,181,181,255,179,180,180,255,178,179,180,255,178,178,179,255,177,178,178,255, +176,177,177,255,176,176,176,255,175,175,175,255,174,174,173,255,173,173,172,255,172,172,171,255,172,172,170,255,171,171,169,255, +170,169,167,255,157,156,153,255,130,129,128,255, 92, 91, 90,255, 35, 35, 34,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 23, 23, 23,255, 67, 67, 67,255,155,156,156,255,186,187,188,255,183,184,184,255, +181,181,182,255,180,181,181,255,180,180,180,255,179,180,180,255,179,179,179,255,178,178,178,255,177,177,177,255,176,176,176,255, +176,175,175,255,175,175,174,255,173,173,172,255,173,173,172,255,173,173,172,255,173,172,170,255,162,161,159,255,117,116,114,255, + 60, 60, 59,255, 28, 28, 27,255, 8, 8, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 25, 25, 25,255,113,113,113,255, +173,173,173,255,176,176,176,255,177,177,177,255,176,176,176,255,176,176,176,255,176,176,176,255,176,175,175,255,174,175,173,255, +174,174,173,255,171,171,169,255,170,169,167,255,164,162,161,255,111,110,107,255, 46, 46, 45,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 31, 31, 31,255, 65, 66, 65,255,100,100,100,255,114,114,114,255,117,117,116,255,115,116,115,255,115,114,113,255, +102,102,101,255, 75, 75, 74,255, 39, 39, 38,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, + 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0, +160,239, 98, 7, 31, 0, 0, 0, 1, 0, 0, 0,248,146, 99, 7, 72, 76, 98, 7, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, + 46,110,117,100,103,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46,110,117,100,103,101, 46,112,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,241, 98, 7, 0, 0, 0, 0, 20, 72, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,160,241, 98, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, + 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 40,242, 98, 7,144, 2, 99, 7, 68, 65, 84, 65, + 0, 16, 0, 0, 40,242, 98, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0,144, 2, 99, 7, 0, 0, 0, 0, + 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, + 61, 62, 62,255, 61, 61, 62,255, 61, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 61, 62,255, 61, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 61, 61, 61,255, 61, 61, 62,255, 61, 62, 62,255, 62, 62, 62,255, 61, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 62,255, + 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, 61, 61, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 62, 62,255, 61, 61, 62,255, + 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 61, 61, 61,255, 61, 61, 61,255, 78, 68, 63,255, 87, 69, 61,255, 77, 61, 55,255, 71, 57, 51,255, 69, 55, 49,255, 70, 56, 51,255, + 76, 61, 54,255, 87, 69, 61,255, 99, 78, 68,255,108, 84, 73,255,113, 88, 77,255,116, 90, 78,255,119, 92, 80,255,121, 93, 81,255, +122, 94, 82,255,124, 95, 83,255,125, 96, 84,255,127, 97, 84,255,128, 98, 85,255,128, 99, 85,255,129, 99, 86,255,129,100, 86,255, +129,100, 86,255,129, 99, 86,255,128, 99, 85,255,128, 98, 85,255,128, 98, 85,255,127, 97, 84,255,125, 96, 84,255,123, 95, 82,255, +119, 91, 79,255,110, 86, 74,255, 98, 77, 67,255, 82, 65, 58,255, 71, 57, 51,255, 73, 59, 52,255, 84, 66, 59,255, 97, 76, 67,255, +108, 84, 74,255,116, 90, 78,255,121, 93, 81,255,123, 95, 83,255,124, 95, 83,255,124, 95, 83,255,123, 95, 82,255,122, 94, 82,255, +115, 89, 78,255,102, 80, 70,255, 86, 67, 60,255, 66, 54, 48,255, 57, 47, 43,255, 99, 77, 67,255,113, 88, 77,255,113, 88, 76,255, +112, 86, 75,255,110, 85, 74,255,111, 86, 75,255,103, 79, 70,255, 91, 72, 63,255, 93, 73, 64,255, 90, 71, 63,255, 87, 69, 61,255, + 84, 66, 58,255, 80, 64, 57,255, 78, 62, 55,255, 77, 62, 55,255, 78, 63, 55,255, 81, 64, 57,255, 85, 68, 60,255, 91, 72, 63,255, + 94, 73, 65,255, 96, 75, 66,255,100, 78, 69,255,107, 83, 73,255,114, 88, 77,255,114, 88, 77,255,102, 79, 70,255, 76, 61, 54,255, + 52, 44, 40,255, 46, 39, 36,255, 48, 41, 37,255, 60, 49, 45,255, 86, 68, 60,255, 83, 66, 58,255, 71, 57, 51,255, 84, 66, 59,255, + 82, 65, 58,255, 74, 60, 53,255, 66, 54, 48,255, 63, 51, 46,255, 64, 52, 47,255, 53, 45, 41,255, 50, 42, 39,255, 55, 51, 50,255, + 62, 62, 62,255, 60, 61, 61,255,111, 86, 74,255,141, 97, 77,255,116, 80, 63,255, 94, 63, 50,255, 78, 52, 40,255, 70, 46, 36,255, + 73, 48, 37,255, 85, 57, 45,255,108, 74, 58,255,135, 92, 74,255,154,107, 86,255,167,116, 94,255,174,121, 98,255,179,125,101,255, +183,127,103,255,187,130,105,255,191,133,107,255,193,135,110,255,195,137,114,255,195,139,117,255,197,141,120,255,196,141,120,255, +196,141,120,255,196,140,119,255,195,139,117,255,195,137,115,255,194,136,112,255,192,134,109,255,190,132,107,255,185,130,104,255, +180,125,101,255,165,114, 93,255,143, 99, 80,255,113, 78, 61,255, 85, 57, 45,255, 80, 53, 41,255, 96, 65, 51,255,123, 84, 67,255, +148,103, 82,255,166,115, 92,255,177,123,100,255,182,127,103,255,184,128,104,255,184,129,104,255,184,128,104,255,181,126,102,255, +168,117, 95,255,143, 99, 80,255,110, 75, 60,255, 72, 48, 37,255, 52, 33, 24,255,132, 90, 72,255,164,114, 91,255,164,114, 92,255, +161,111, 89,255,158,110, 88,255,161,111, 90,255,140, 96, 77,255,126, 87, 69,255,129, 88, 71,255,123, 85, 68,255,116, 79, 63,255, +108, 74, 59,255,103, 70, 55,255, 98, 66, 52,255, 96, 64, 50,255, 97, 66, 52,255,100, 67, 54,255,103, 70, 55,255, 98, 66, 52,255, + 90, 61, 47,255, 87, 58, 45,255, 88, 59, 46,255, 98, 66, 53,255,119, 81, 65,255,148,103, 82,255,170,118, 95,255,164,114, 92,255, +118, 81, 64,255, 56, 36, 27,255, 32, 19, 13,255, 36, 22, 16,255, 70, 46, 35,255,112, 77, 61,255, 93, 63, 49,255, 92, 63, 49,255, +106, 72, 57,255, 87, 59, 46,255, 82, 55, 43,255, 70, 47, 36,255, 65, 43, 33,255, 56, 35, 27,255, 40, 24, 18,255, 50, 42, 39,255, + 62, 62, 62,255, 60, 60, 61,255,132,105, 96,255,189,135,114,255,168,117, 96,255,141, 98, 78,255,112, 77, 61,255, 87, 58, 46,255, + 69, 46, 36,255, 64, 43, 33,255, 72, 48, 37,255, 91, 62, 49,255,120, 82, 65,255,145,100, 81,255,163,113, 92,255,175,122, 99,255, +182,127,103,255,188,131,107,255,193,135,110,255,195,139,118,255,197,143,124,255,198,145,128,255,199,146,131,255,200,147,131,255, +200,147,132,255,199,147,131,255,198,146,129,255,197,143,126,255,197,142,122,255,195,140,118,255,193,137,114,255,191,133,110,255, +186,130,106,255,176,122, 99,255,157,109, 88,255,130, 90, 72,255,100, 67, 53,255, 79, 53, 42,255, 86, 57, 45,255,110, 75, 60,255, +139, 96, 77,255,161,111, 90,255,174,122, 99,255,182,127,103,255,186,130,105,255,186,130,105,255,185,129,105,255,183,127,103,255, +172,119, 96,255,146,101, 81,255,114, 78, 63,255, 75, 50, 39,255, 50, 32, 24,255,126, 87, 69,255,164,114, 93,255,166,115, 93,255, +162,113, 91,255,161,111, 90,255,164,113, 92,255,140, 97, 78,255,134, 92, 74,255,136, 94, 75,255,131, 90, 72,255,123, 84, 67,255, +114, 78, 62,255,105, 72, 57,255, 98, 67, 53,255, 91, 62, 48,255, 91, 61, 48,255, 96, 65, 51,255, 89, 60, 47,255, 81, 55, 43,255, + 75, 51, 39,255, 71, 47, 37,255, 68, 45, 34,255, 65, 42, 33,255, 65, 43, 33,255, 76, 51, 40,255,108, 74, 58,255,157,108, 87,255, +186,130,106,255,161,112, 92,255, 85, 57, 44,255, 38, 22, 16,255, 32, 19, 13,255, 68, 44, 34,255,109, 75, 59,255, 90, 61, 48,255, +100, 69, 55,255,100, 69, 54,255, 75, 50, 39,255, 82, 55, 43,255, 73, 49, 38,255, 62, 40, 31,255, 45, 29, 21,255, 50, 43, 39,255, + 62, 62, 62,255, 60, 60, 60,255,142,121,120,255,215,172,170,255,207,159,150,255,195,143,128,255,174,123,103,255,146,100, 80,255, +113, 77, 61,255, 84, 56, 44,255, 66, 44, 34,255, 64, 42, 33,255, 76, 51, 39,255, 99, 68, 53,255,128, 88, 70,255,153,106, 85,255, +171,119, 96,255,182,127,103,255,190,133,108,255,195,138,116,255,197,143,125,255,199,147,131,255,201,150,135,255,201,151,137,255, +202,151,138,255,202,151,138,255,201,150,137,255,201,149,135,255,200,148,132,255,198,146,129,255,197,143,126,255,195,140,119,255, +192,136,113,255,186,130,104,255,171,119, 96,255,148,103, 83,255,117, 81, 64,255, 88, 60, 47,255, 80, 54, 42,255, 98, 66, 53,255, +127, 88, 70,255,154,107, 86,255,172,120, 97,255,183,128,103,255,187,130,106,255,188,131,106,255,188,131,106,255,186,129,105,255, +175,122, 98,255,150,104, 84,255,119, 81, 65,255, 78, 52, 40,255, 48, 31, 23,255,119, 82, 65,255,166,115, 94,255,169,117, 95,255, +164,114, 92,255,165,114, 92,255,167,115, 93,255,144,100, 80,255,141, 98, 79,255,142, 99, 79,255,137, 95, 76,255,128, 88, 71,255, +117, 80, 64,255,104, 71, 56,255, 87, 59, 46,255, 84, 56, 44,255, 99, 68, 53,255, 96, 65, 52,255, 90, 60, 47,255, 84, 57, 45,255, + 81, 55, 43,255, 81, 54, 42,255, 81, 54, 43,255, 77, 52, 40,255, 70, 46, 36,255, 62, 40, 31,255, 59, 38, 29,255, 75, 49, 38,255, +125, 86, 69,255,183,130,109,255,185,134,115,255,119, 82, 66,255, 44, 27, 20,255, 34, 21, 15,255, 72, 47, 37,255,106, 73, 58,255, + 91, 62, 49,255,109, 74, 59,255, 92, 61, 48,255, 66, 44, 34,255, 83, 56, 44,255, 72, 48, 37,255, 51, 33, 24,255, 51, 43, 39,255, + 62, 62, 62,255, 60, 60, 60,255,144,124,126,255,221,183,186,255,219,180,183,255,216,176,176,255,211,168,164,255,200,152,139,255, +181,128,108,255,151,103, 83,255,115, 78, 62,255, 83, 55, 43,255, 66, 44, 34,255, 65, 43, 33,255, 80, 53, 42,255,106, 72, 58,255, +135, 93, 75,255,160,111, 89,255,176,123,100,255,188,131,107,255,194,138,116,255,198,144,127,255,200,149,134,255,202,152,139,255, +203,153,142,255,204,154,143,255,203,154,142,255,203,153,142,255,202,152,141,255,202,150,137,255,200,149,134,255,199,147,130,255, +197,143,125,255,192,136,113,255,183,127,103,255,164,113, 92,255,135, 93, 75,255,104, 71, 56,255, 84, 56, 44,255, 87, 59, 46,255, +114, 78, 62,255,145,100, 81,255,168,117, 94,255,181,127,102,255,188,131,106,255,190,132,107,255,190,132,107,255,188,131,106,255, +178,125,101,255,155,107, 86,255,123, 84, 68,255, 83, 56, 44,255, 47, 31, 23,255,110, 75, 59,255,166,116, 93,255,171,119, 96,255, +165,115, 93,255,167,116, 94,255,168,117, 95,255,148,103, 83,255,147,102, 82,255,147,102, 82,255,141, 98, 79,255,131, 90, 73,255, +118, 80, 64,255, 97, 66, 52,255, 75, 51, 40,255,100, 69, 54,255,106, 72, 57,255, 99, 67, 53,255, 92, 62, 50,255, 88, 59, 47,255, + 86, 59, 46,255, 91, 62, 49,255,100, 68, 54,255,105, 71, 57,255,100, 68, 54,255, 86, 58, 46,255, 68, 45, 35,255, 57, 37, 28,255, + 58, 38, 29,255,104, 71, 56,255,176,124,104,255,195,142,125,255,136, 94, 77,255, 43, 27, 20,255, 37, 23, 16,255, 82, 55, 43,255, +105, 71, 57,255, 99, 67, 53,255,114, 78, 62,255, 78, 53, 40,255, 67, 44, 34,255, 85, 57, 45,255, 63, 41, 32,255, 53, 44, 41,255, + 62, 62, 62,255, 60, 60, 60,255,143,122,124,255,220,183,186,255,220,183,188,255,221,184,188,255,220,183,186,255,218,179,182,255, +214,173,171,255,204,156,146,255,185,133,115,255,154,107, 87,255,115, 79, 62,255, 84, 56, 44,255, 67, 44, 34,255, 68, 45, 34,255, + 86, 58, 46,255,115, 79, 63,255,144, 99, 80,255,167,116, 94,255,182,126,102,255,191,135,112,255,197,143,124,255,201,149,134,255, +202,152,140,255,203,155,144,255,204,156,146,255,205,156,146,255,204,156,145,255,204,154,144,255,203,153,142,255,202,152,138,255, +200,149,135,255,197,144,125,255,192,136,112,255,178,124,100,255,154,107, 86,255,124, 85, 68,255, 93, 63, 50,255, 83, 56, 44,255, +101, 68, 54,255,132, 91, 73,255,161,112, 90,255,179,125,101,255,188,132,107,255,192,134,109,255,192,134,109,255,191,133,108,255, +183,127,103,255,160,111, 89,255,129, 89, 71,255, 90, 61, 47,255, 49, 31, 23,255, 99, 67, 53,255,164,114, 92,255,172,120, 97,255, +167,116, 94,255,169,117, 95,255,171,119, 96,255,154,106, 86,255,152,105, 85,255,151,104, 84,255,145,100, 80,255,133, 92, 74,255, +115, 79, 63,255, 82, 55, 43,255, 82, 55, 44,255,114, 78, 62,255,110, 75, 60,255,101, 68, 54,255, 93, 63, 50,255, 87, 59, 47,255, + 87, 58, 45,255, 94, 64, 50,255,107, 72, 58,255,120, 82, 65,255,125, 86, 69,255,118, 80, 64,255,100, 68, 54,255, 77, 50, 40,255, + 56, 37, 28,255, 52, 33, 25,255, 98, 66, 51,255,170,121,101,255,197,143,124,255,135, 94, 76,255, 45, 28, 20,255, 42, 26, 18,255, + 92, 62, 49,255, 98, 67, 53,255,112, 77, 61,255,109, 74, 59,255, 65, 42, 33,255, 74, 50, 39,255, 78, 52, 41,255, 59, 48, 44,255, + 62, 62, 62,255, 60, 60, 60,255,136,111,106,255,212,169,164,255,217,177,179,255,220,182,185,255,220,183,188,255,221,184,188,255, +220,183,187,255,218,181,184,255,215,174,173,255,206,160,151,255,188,137,120,255,156,108, 88,255,118, 80, 63,255, 86, 58, 46,255, + 69, 45, 35,255, 71, 47, 37,255, 93, 63, 49,255,124, 85, 68,255,153,106, 85,255,174,121, 98,255,187,131,107,255,194,140,118,255, +199,147,131,255,202,152,140,255,204,156,145,255,205,157,148,255,205,158,149,255,205,158,149,255,205,157,148,255,204,156,146,255, +204,155,143,255,201,151,137,255,197,144,126,255,189,133,109,255,170,118, 96,255,144, 99, 80,255,111, 76, 61,255, 86, 58, 46,255, + 90, 61, 48,255,118, 81, 64,255,151,105, 84,255,175,121, 99,255,188,131,106,255,194,136,112,255,194,137,113,255,193,136,111,255, +187,129,105,255,166,115, 93,255,136, 94, 75,255, 96, 65, 52,255, 52, 33, 25,255, 87, 58, 46,255,161,112, 90,255,174,121, 98,255, +168,117, 94,255,171,118, 96,255,173,121, 97,255,158,109, 88,255,156,108, 87,255,155,107, 87,255,148,102, 83,255,134, 93, 75,255, +109, 74, 59,255, 67, 44, 34,255,101, 68, 55,255,122, 84, 67,255,114, 78, 62,255,102, 70, 55,255, 91, 61, 48,255, 81, 55, 43,255, + 83, 56, 44,255, 91, 60, 48,255, 99, 67, 53,255,110, 75, 59,255,122, 84, 67,255,129, 89, 72,255,125, 85, 69,255,109, 74, 59,255, + 82, 55, 43,255, 55, 36, 27,255, 52, 33, 25,255,100, 68, 54,255,173,122,102,255,192,138,118,255,121, 84, 67,255, 41, 25, 19,255, + 52, 32, 25,255, 95, 64, 51,255, 99, 67, 53,255,121, 83, 66,255, 91, 61, 48,255, 60, 39, 30,255, 76, 50, 39,255, 65, 53, 48,255, + 61, 62, 62,255, 60, 61, 61,255,120, 92, 81,255,187,132,110,255,200,148,134,255,210,166,160,255,216,176,176,255,219,182,184,255, +220,183,187,255,221,184,188,255,220,183,187,255,219,181,184,255,216,176,176,255,207,161,154,255,189,137,119,255,156,108, 88,255, +116, 79, 62,255, 84, 57, 44,255, 70, 46, 36,255, 77, 51, 40,255,104, 70, 57,255,137, 94, 76,255,163,114, 92,255,181,126,102,255, +192,135,112,255,197,144,126,255,201,151,139,255,204,156,145,255,206,159,149,255,206,159,152,255,206,160,152,255,206,159,151,255, +206,158,150,255,204,157,145,255,201,151,138,255,197,142,124,255,184,129,105,255,162,113, 91,255,131, 91, 72,255, 99, 67, 53,255, + 86, 57, 45,255,103, 70, 55,255,137, 95, 76,255,168,116, 94,255,186,129,105,255,194,137,113,255,196,140,118,255,194,138,116,255, +190,132,107,255,171,119, 96,255,142, 98, 79,255,104, 71, 56,255, 58, 37, 28,255, 75, 50, 39,255,155,107, 86,255,175,121, 99,255, +169,117, 95,255,172,120, 96,255,176,122, 99,255,162,113, 91,255,159,110, 89,255,158,109, 88,255,150,104, 84,255,134, 92, 75,255, + 98, 66, 53,255, 62, 41, 30,255,119, 81, 66,255,128, 88, 71,255,117, 80, 64,255,102, 70, 55,255, 84, 57, 45,255, 75, 50, 39,255, + 81, 54, 42,255, 85, 58, 45,255, 88, 59, 47,255, 93, 63, 50,255,103, 70, 56,255,117, 80, 64,255,127, 87, 69,255,127, 87, 70,255, +114, 77, 62,255, 83, 55, 44,255, 52, 34, 26,255, 56, 36, 27,255,113, 77, 61,255,178,124,102,255,184,130,109,255, 92, 62, 49,255, + 37, 23, 17,255, 66, 44, 33,255, 94, 64, 50,255,107, 72, 58,255,117, 80, 64,255, 68, 45, 34,255, 64, 42, 32,255, 68, 55, 49,255, + 61, 62, 62,255, 61, 61, 61,255,100, 78, 69,255,148,102, 82,255,165,113, 91,255,182,128,105,255,196,145,130,255,207,161,154,255, +214,173,172,255,218,181,182,255,220,183,186,255,221,184,188,255,221,183,188,255,219,182,185,255,216,176,176,255,207,160,150,255, +186,134,116,255,150,105, 85,255,113, 77, 61,255, 81, 54, 43,255, 71, 48, 37,255, 87, 59, 46,255,120, 81, 65,255,151,105, 84,255, +174,121, 98,255,188,132,108,255,196,141,122,255,201,150,136,255,204,156,146,255,206,160,152,255,208,162,154,255,208,162,155,255, +208,161,155,255,207,160,153,255,205,157,147,255,201,151,138,255,194,138,118,255,178,124,100,255,152,105, 85,255,118, 81, 65,255, + 89, 60, 48,255, 91, 61, 49,255,121, 83, 67,255,157,109, 88,255,182,126,102,255,194,136,113,255,196,142,122,255,197,142,122,255, +193,136,112,255,177,123,100,255,148,103, 83,255,112, 76, 61,255, 64, 42, 32,255, 66, 43, 33,255,146,100, 81,255,174,121, 98,255, +171,119, 96,255,173,120, 97,255,178,124,100,255,166,115, 93,255,161,112, 91,255,160,110, 89,255,152,105, 85,255,133, 91, 74,255, + 85, 57, 44,255, 70, 48, 38,255,132, 90, 72,255,133, 92, 74,255,120, 83, 66,255,100, 68, 54,255, 75, 49, 39,255, 74, 49, 38,255, + 81, 54, 42,255, 82, 55, 43,255, 82, 55, 43,255, 82, 56, 44,255, 88, 59, 47,255, 98, 66, 52,255,111, 76, 61,255,123, 85, 67,255, +127, 87, 70,255,114, 78, 62,255, 78, 53, 41,255, 50, 32, 24,255, 65, 42, 33,255,128, 87, 70,255,184,130,106,255,168,117, 95,255, + 64, 42, 32,255, 41, 26, 19,255, 83, 56, 44,255, 95, 65, 51,255,120, 82, 66,255, 97, 66, 51,255, 59, 38, 29,255, 65, 53, 47,255, + 61, 62, 62,255, 61, 61, 62,255, 86, 68, 61,255,116, 79, 64,255,129, 89, 71,255,144,100, 79,255,160,111, 89,255,177,124,103,255, +194,141,123,255,206,159,148,255,213,171,171,255,218,179,181,255,220,182,186,255,220,184,187,255,220,183,188,255,219,181,184,255, +215,174,173,255,204,157,147,255,181,130,111,255,145, 99, 80,255,103, 70, 55,255, 78, 52, 40,255, 78, 52, 41,255,103, 70, 56,255, +138, 95, 76,255,165,115, 93,255,183,128,104,255,193,138,116,255,200,148,133,255,204,155,146,255,207,161,153,255,208,163,156,255, +209,164,158,255,209,164,157,255,207,161,155,255,205,158,148,255,200,149,135,255,191,135,112,255,171,119, 97,255,141, 97, 78,255, +104, 72, 56,255, 86, 58, 45,255,105, 71, 56,255,143, 99, 80,255,174,122, 98,255,191,135,111,255,198,143,124,255,198,145,126,255, +196,140,119,255,182,128,104,255,156,108, 87,255,120, 82, 66,255, 73, 48, 38,255, 59, 38, 30,255,135, 93, 74,255,173,120, 98,255, +171,119, 96,255,172,120, 97,255,179,125,101,255,169,117, 95,255,164,115, 93,255,162,112, 91,255,153,106, 85,255,131, 90, 72,255, + 73, 49, 38,255, 83, 58, 47,255,139, 96, 77,255,137, 95, 76,255,123, 84, 67,255, 94, 64, 50,255, 69, 46, 35,255, 78, 52, 41,255, + 83, 55, 43,255, 81, 54, 42,255, 79, 53, 41,255, 78, 52, 41,255, 79, 53, 41,255, 84, 56, 44,255, 93, 63, 50,255,107, 74, 59,255, +122, 84, 67,255,128, 88, 70,255,110, 76, 60,255, 71, 47, 37,255, 49, 31, 23,255, 78, 52, 41,255,146,101, 81,255,187,131,106,255, +140, 97, 78,255, 47, 30, 22,255, 54, 34, 26,255, 90, 60, 48,255,106, 72, 58,255,120, 82, 66,255, 73, 48, 37,255, 60, 50, 44,255, + 62, 62, 62,255, 61, 61, 62,255, 81, 65, 57,255,102, 68, 54,255,106, 73, 58,255,115, 79, 63,255,127, 87, 70,255,141, 97, 79,255, +158,108, 88,255,175,122, 99,255,192,137,118,255,204,157,146,255,213,171,168,255,218,178,180,255,219,182,185,255,220,184,187,255, +220,183,186,255,219,180,183,255,213,171,170,255,200,151,138,255,171,120, 99,255,131, 90, 72,255, 93, 63, 49,255, 75, 50, 38,255, + 90, 61, 48,255,124, 85, 68,255,156,108, 87,255,179,124,101,255,191,135,113,255,199,147,132,255,204,156,146,255,208,162,154,255, +209,164,159,255,209,166,161,255,210,165,160,255,208,163,156,255,205,157,148,255,199,146,130,255,187,130,107,255,162,112, 91,255, +127, 87, 70,255, 93, 63, 50,255, 93, 62, 49,255,125, 86, 69,255,164,114, 91,255,188,131,108,255,198,144,124,255,199,146,130,255, +198,144,126,255,188,132,108,255,164,113, 91,255,128, 88, 70,255, 82, 55, 43,255, 57, 37, 28,255,121, 83, 66,255,170,118, 96,255, +172,120, 97,255,173,121, 97,255,181,126,102,255,173,120, 97,255,166,116, 94,255,163,113, 92,255,154,106, 86,255,127, 87, 70,255, + 64, 41, 32,255, 95, 66, 53,255,146,101, 81,255,142, 98, 79,255,124, 85, 68,255, 86, 59, 46,255, 72, 47, 37,255, 85, 57, 45,255, + 86, 58, 46,255, 84, 56, 44,255, 80, 53, 42,255, 76, 51, 40,255, 75, 50, 39,255, 75, 50, 40,255, 81, 54, 42,255, 92, 62, 49,255, +107, 73, 58,255,123, 84, 68,255,126, 86, 69,255,101, 69, 54,255, 60, 39, 30,255, 52, 33, 26,255, 98, 67, 53,255,165,115, 93,255, +180,126,102,255,100, 67, 54,255, 41, 25, 18,255, 69, 46, 35,255, 93, 63, 49,255,119, 82, 65,255, 99, 67, 53,255, 61, 50, 45,255, + 61, 62, 62,255, 61, 61, 62,255, 81, 64, 57,255, 98, 66, 52,255, 98, 66, 52,255,100, 68, 54,255,106, 73, 57,255,115, 78, 63,255, +126, 87, 69,255,141, 97, 78,255,156,108, 86,255,174,121, 97,255,191,137,119,255,204,156,145,255,213,170,166,255,217,177,179,255, +219,182,185,255,220,183,187,255,220,183,186,255,218,178,181,255,211,166,159,255,190,139,122,255,155,108, 88,255,111, 76, 60,255, + 81, 55, 43,255, 84, 56, 44,255,113, 77, 62,255,148,102, 82,255,173,120, 97,255,189,132,110,255,198,146,129,255,204,157,146,255, +209,163,156,255,210,166,162,255,211,167,163,255,210,166,161,255,209,163,157,255,205,156,147,255,196,144,125,255,181,126,102,255, +150,105, 83,255,111, 76, 60,255, 89, 60, 48,255,107, 73, 58,255,149,103, 82,255,181,126,103,255,197,142,122,255,201,149,133,255, +200,147,131,255,193,137,115,255,171,118, 96,255,138, 95, 76,255, 93, 62, 50,255, 58, 38, 29,255,109, 75, 59,255,165,115, 92,255, +173,120, 97,255,172,120, 97,255,182,127,102,255,175,122, 99,255,169,118, 95,255,165,115, 92,255,154,107, 86,255,124, 85, 68,255, + 58, 38, 29,255,104, 71, 57,255,150,104, 83,255,145,100, 81,255,124, 85, 68,255, 80, 54, 42,255, 78, 52, 41,255, 91, 61, 48,255, + 90, 61, 48,255, 86, 58, 45,255, 82, 55, 43,255, 77, 51, 40,255, 72, 48, 37,255, 72, 48, 37,255, 74, 49, 38,255, 79, 53, 42,255, + 92, 62, 49,255,109, 74, 60,255,125, 86, 69,255,121, 83, 66,255, 87, 58, 46,255, 53, 34, 26,255, 63, 42, 32,255,124, 85, 68,255, +178,124,100,255,158,110, 88,255, 60, 39, 30,255, 47, 29, 22,255, 80, 54, 41,255,103, 70, 56,255,116, 79, 63,255, 72, 58, 52,255, + 61, 62, 62,255, 61, 61, 62,255, 83, 66, 58,255,101, 69, 55,255, 99, 67, 53,255, 97, 65, 52,255, 97, 66, 52,255,101, 68, 54,255, +107, 72, 58,255,116, 78, 63,255,126, 86, 69,255,140, 97, 77,255,156,108, 87,255,173,121, 99,255,190,137,118,255,205,155,144,255, +213,171,168,255,217,178,180,255,219,182,186,255,220,183,187,255,219,182,185,255,216,175,174,255,204,157,146,255,177,125,105,255, +135, 92, 73,255, 94, 63, 51,255, 79, 53, 41,255,101, 69, 54,255,137, 94, 75,255,167,115, 93,255,186,130,106,255,198,145,127,255, +204,157,146,255,209,164,159,255,211,168,164,255,211,169,165,255,211,167,163,255,209,163,157,255,203,155,144,255,194,140,120,255, +172,120, 96,255,137, 94, 76,255, 98, 67, 53,255, 94, 64, 50,255,129, 88, 71,255,170,118, 95,255,193,138,117,255,201,150,134,255, +201,150,136,255,196,142,123,255,178,124,100,255,147,102, 82,255,104, 71, 56,255, 63, 41, 31,255, 97, 66, 52,255,159,110, 89,255, +172,120, 97,255,172,119, 97,255,182,127,103,255,178,124,101,255,171,119, 96,255,166,115, 93,255,154,107, 86,255,120, 82, 65,255, + 56, 36, 27,255,111, 75, 60,255,153,106, 85,255,148,102, 82,255,123, 84, 67,255, 77, 51, 40,255, 86, 58, 45,255, 96, 65, 52,255, + 94, 64, 50,255, 90, 61, 48,255, 85, 57, 44,255, 78, 52, 41,255, 73, 49, 38,255, 70, 46, 36,255, 69, 45, 35,255, 72, 48, 37,255, + 80, 53, 42,255, 95, 65, 51,255,114, 78, 63,255,126, 87, 70,255,113, 76, 61,255, 72, 48, 38,255, 52, 33, 25,255, 82, 55, 43,255, +150,104, 83,255,182,127,103,255,117, 80, 64,255, 41, 26, 19,255, 62, 40, 31,255, 86, 58, 46,255,113, 78, 61,255, 84, 66, 59,255, + 61, 61, 62,255, 61, 61, 62,255, 88, 69, 61,255,108, 74, 59,255,104, 71, 56,255,101, 69, 54,255, 99, 67, 53,255, 97, 66, 52,255, + 99, 67, 53,255,102, 69, 55,255,108, 74, 58,255,116, 80, 63,255,127, 87, 69,255,141, 97, 78,255,156,108, 88,255,174,122, 99,255, +192,138,119,255,205,158,149,255,214,172,171,255,217,179,181,255,219,182,185,255,219,182,186,255,219,180,183,255,212,169,166,255, +193,142,124,255,156,108, 87,255,108, 73, 58,255, 80, 54, 42,255, 93, 63, 49,255,128, 88, 69,255,161,111, 90,255,183,128,103,255, +197,144,126,255,205,157,148,255,210,166,161,255,212,169,166,255,212,169,166,255,211,168,164,255,209,163,156,255,202,152,140,255, +190,134,113,255,161,112, 91,255,120, 82, 65,255, 91, 62, 49,255,108, 74, 59,255,153,105, 85,255,187,132,109,255,200,148,134,255, +202,153,140,255,200,147,131,255,185,130,106,255,156,108, 87,255,114, 78, 62,255, 70, 46, 36,255, 88, 59, 46,255,150,103, 83,255, +172,120, 97,255,171,119, 96,255,182,127,103,255,180,126,102,255,173,120, 98,255,168,116, 94,255,154,107, 86,255,117, 79, 64,255, + 54, 34, 26,255,116, 80, 64,255,155,108, 87,255,150,104, 84,255,120, 82, 66,255, 76, 51, 39,255, 94, 63, 50,255,102, 69, 55,255, + 99, 66, 53,255, 94, 64, 50,255, 87, 60, 47,255, 81, 55, 43,255, 75, 50, 39,255, 70, 47, 36,255, 67, 44, 34,255, 67, 44, 34,255, + 71, 47, 36,255, 82, 55, 43,255,101, 69, 54,255,120, 83, 66,255,125, 86, 69,255, 99, 67, 54,255, 59, 39, 30,255, 57, 37, 28,255, +109, 74, 58,255,171,119, 96,255,172,119, 96,255, 72, 48, 36,255, 46, 30, 22,255, 74, 49, 38,255, 98, 67, 53,255, 88, 69, 62,255, + 61, 61, 62,255, 61, 61, 61,255, 95, 75, 66,255,123, 84, 67,255,116, 79, 63,255,111, 75, 60,255,106, 72, 58,255,103, 69, 55,255, +100, 68, 54,255,100, 67, 53,255,100, 68, 54,255,104, 71, 56,255,109, 75, 59,255,117, 80, 64,255,129, 88, 71,255,142, 98, 79,255, +159,110, 88,255,177,124,101,255,194,142,125,255,207,161,153,255,215,174,173,255,219,180,183,255,219,182,186,255,220,183,186,255, +216,176,177,255,205,156,146,255,175,124,105,255,126, 86, 68,255, 87, 59, 46,255, 86, 57, 46,255,117, 80, 64,255,153,106, 85,255, +179,125,101,255,196,142,124,255,206,158,149,255,211,167,162,255,213,171,168,255,213,171,168,255,211,168,164,255,208,162,155,255, +200,149,134,255,183,128,105,255,146,101, 81,255,103, 70, 56,255, 94, 64, 50,255,132, 91, 72,255,176,122, 99,255,199,145,129,255, +204,154,143,255,203,152,139,255,193,137,115,255,165,115, 92,255,126, 87, 69,255, 79, 53, 41,255, 81, 54, 43,255,139, 97, 77,255, +169,117, 95,255,171,119, 96,255,181,126,102,255,183,127,103,255,175,122, 98,255,168,117, 95,255,155,108, 86,255,114, 77, 62,255, + 53, 34, 26,255,120, 82, 65,255,157,109, 88,255,151,104, 84,255,119, 81, 64,255, 77, 51, 40,255,102, 69, 55,255,108, 74, 58,255, +103, 70, 56,255, 98, 66, 52,255, 91, 62, 49,255, 84, 57, 45,255, 78, 52, 40,255, 72, 48, 37,255, 67, 44, 35,255, 64, 42, 32,255, + 65, 43, 33,255, 72, 48, 37,255, 87, 58, 46,255,108, 74, 59,255,126, 87, 69,255,119, 82, 66,255, 82, 55, 43,255, 52, 33, 25,255, + 72, 48, 37,255,140, 97, 78,255,183,128,103,255,137, 95, 76,255, 47, 30, 23,255, 60, 40, 31,255, 83, 56, 43,255, 84, 67, 59,255, + 61, 61, 62,255, 60, 61, 61,255,109, 84, 73,255,144,100, 80,255,134, 93, 74,255,127, 87, 70,255,120, 83, 66,255,114, 78, 62,255, +109, 74, 59,255,105, 72, 57,255,102, 70, 55,255,102, 69, 55,255,103, 70, 55,255,106, 72, 58,255,112, 76, 61,255,119, 82, 66,255, +131, 90, 72,255,145,100, 80,255,162,112, 90,255,180,127,105,255,198,147,130,255,210,166,161,255,216,177,178,255,219,182,185,255, +220,183,186,255,218,181,183,255,212,168,164,255,191,141,126,255,149,102, 83,255, 97, 66, 52,255, 80, 54, 42,255,106, 72, 57,255, +145,100, 81,255,176,123,100,255,196,143,125,255,206,160,152,255,212,169,166,255,214,172,170,255,213,171,169,255,211,168,164,255, +207,160,153,255,197,144,126,255,172,119, 96,255,127, 87, 70,255, 93, 63, 49,255,110, 75, 59,255,158,109, 87,255,193,138,118,255, +204,154,143,255,204,155,144,255,197,144,127,255,175,121, 98,255,137, 95, 76,255, 90, 61, 48,255, 78, 52, 41,255,129, 89, 71,255, +166,115, 93,255,170,118, 96,255,181,125,102,255,184,128,104,255,177,123,100,255,170,118, 95,255,155,108, 87,255,111, 76, 60,255, + 53, 34, 25,255,121, 83, 66,255,158,110, 89,255,152,105, 85,255,116, 80, 63,255, 80, 53, 41,255,110, 75, 59,255,114, 78, 62,255, +108, 74, 59,255,102, 69, 55,255, 95, 65, 51,255, 88, 60, 47,255, 82, 55, 43,255, 75, 50, 39,255, 69, 46, 35,255, 64, 42, 32,255, + 62, 41, 31,255, 64, 42, 33,255, 75, 50, 39,255, 95, 64, 51,255,118, 81, 64,255,128, 88, 70,255,107, 73, 58,255, 65, 42, 33,255, + 54, 34, 26,255,102, 69, 55,255,169,118, 95,255,177,123,100,255, 86, 57, 45,255, 48, 30, 22,255, 72, 47, 37,255, 75, 61, 54,255, + 61, 62, 62,255, 60, 61, 61,255,129,102, 91,255,179,125,103,255,162,112, 90,255,150,104, 83,255,140, 97, 78,255,132, 91, 73,255, +125, 86, 69,255,118, 81, 65,255,113, 77, 61,255,108, 73, 58,255,105, 72, 57,255,104, 70, 56,255,105, 71, 57,255,107, 73, 58,255, +113, 78, 62,255,122, 84, 67,255,133, 92, 73,255,148,103, 83,255,166,115, 92,255,186,132,110,255,203,154,143,255,213,171,169,255, +218,180,182,255,220,182,186,255,220,182,186,255,216,176,175,255,203,155,145,255,168,118, 98,255,113, 77, 61,255, 81, 54, 43,255, + 98, 67, 53,255,139, 96, 77,255,173,121, 98,255,197,144,127,255,208,162,157,255,213,171,169,255,215,174,172,255,213,172,170,255, +211,168,163,255,205,158,149,255,191,137,117,255,156,108, 86,255,109, 74, 59,255, 96, 64, 51,255,135, 93, 75,255,183,128,105,255, +202,152,139,255,205,157,148,255,201,150,136,255,184,130,106,255,149,102, 82,255,102, 70, 55,255, 78, 52, 41,255,119, 82, 65,255, +160,110, 89,255,169,117, 94,255,178,125,101,255,185,129,104,255,179,125,101,255,171,119, 97,255,155,108, 87,255,109, 74, 59,255, + 52, 33, 25,255,121, 83, 67,255,160,110, 89,255,152,105, 85,255,113, 77, 61,255, 83, 56, 44,255,118, 80, 64,255,121, 83, 66,255, +113, 77, 61,255,105, 72, 57,255, 99, 68, 53,255, 93, 63, 50,255, 86, 58, 46,255, 80, 53, 42,255, 73, 49, 38,255, 67, 44, 34,255, + 62, 41, 31,255, 61, 40, 30,255, 67, 44, 34,255, 82, 55, 43,255,106, 72, 57,255,126, 87, 70,255,125, 86, 69,255, 88, 59, 46,255, + 53, 34, 26,255, 70, 46, 35,255,140, 97, 78,255,184,128,104,255,138, 96, 77,255, 53, 33, 26,255, 59, 38, 28,255, 69, 55, 50,255, + 61, 62, 62,255, 60, 60, 60,255,143,122,123,255,211,166,160,255,195,144,128,255,181,128,106,255,168,117, 94,255,157,108, 87,255, +147,101, 82,255,138, 95, 77,255,130, 90, 72,255,123, 84, 67,255,117, 79, 64,255,112, 76, 61,255,108, 74, 59,255,107, 73, 58,255, +107, 73, 58,255,110, 75, 60,255,116, 79, 63,255,124, 86, 69,255,137, 94, 76,255,152,105, 84,255,172,119, 97,255,193,141,124,255, +208,162,154,255,216,176,176,255,219,181,185,255,220,183,187,255,219,180,182,255,211,166,160,255,184,133,116,255,131, 90, 72,255, + 84, 56, 44,255, 90, 61, 49,255,130, 89, 71,255,170,118, 95,255,197,145,129,255,209,165,160,255,214,174,173,255,216,175,174,255, +214,172,171,255,211,167,163,255,203,153,141,255,180,127,105,255,135, 93, 75,255, 95, 65, 51,255,113, 77, 61,255,165,114, 92,255, +199,146,129,255,206,159,149,255,204,156,144,255,192,137,117,255,160,111, 90,255,114, 78, 63,255, 82, 54, 43,255,111, 75, 60,255, +153,106, 85,255,166,115, 94,255,176,123,100,255,186,130,105,255,181,126,102,255,173,120, 97,255,156,108, 87,255,108, 74, 59,255, + 52, 33, 25,255,121, 82, 66,255,160,112, 89,255,152,106, 86,255,111, 76, 60,255, 88, 59, 46,255,126, 87, 68,255,127, 87, 70,255, +116, 80, 64,255,109, 74, 59,255,102, 69, 55,255, 97, 66, 52,255, 91, 62, 49,255, 86, 58, 46,255, 79, 52, 41,255, 71, 47, 37,255, + 64, 42, 32,255, 60, 39, 30,255, 61, 40, 31,255, 71, 47, 36,255, 92, 63, 50,255,118, 81, 65,255,132, 91, 73,255,113, 77, 61,255, + 68, 45, 34,255, 52, 33, 26,255,103, 71, 56,255,173,120, 97,255,178,124,101,255, 80, 54, 42,255, 49, 31, 24,255, 63, 51, 46,255, + 61, 62, 62,255, 60, 60, 60,255,144,126,128,255,222,185,189,255,217,177,178,255,209,163,156,255,197,146,131,255,186,132,110,255, +176,122, 98,255,165,114, 92,255,154,107, 86,255,145,100, 81,255,136, 94, 76,255,128, 88, 71,255,120, 83, 66,255,114, 78, 63,255, +111, 75, 60,255,109, 74, 59,255,109, 75, 59,255,112, 77, 61,255,118, 81, 65,255,129, 88, 71,255,141, 97, 78,255,158,109, 88,255, +180,127,105,255,200,150,135,255,213,170,167,255,218,180,182,255,220,183,186,255,219,182,185,255,215,173,173,255,196,147,134,255, +147,101, 82,255, 92, 62, 48,255, 86, 58, 45,255,124, 85, 68,255,167,116, 95,255,199,148,133,255,212,169,166,255,216,176,176,255, +216,175,175,255,214,172,171,255,210,165,159,255,198,146,129,255,164,114, 92,255,113, 77, 62,255, 98, 67, 52,255,141, 97, 77,255, +189,135,114,255,206,157,148,255,206,158,150,255,198,146,129,255,171,119, 97,255,128, 87, 70,255, 88, 59, 46,255,104, 71, 56,255, +146,100, 81,255,164,114, 92,255,174,121, 98,255,186,129,105,255,183,127,103,255,174,122, 98,255,157,108, 88,255,108, 74, 59,255, + 51, 33, 25,255,119, 81, 65,255,160,111, 90,255,153,107, 85,255,109, 74, 59,255, 92, 62, 49,255,133, 91, 73,255,134, 92, 74,255, +122, 83, 67,255,111, 76, 61,255,104, 71, 57,255,101, 68, 54,255, 97, 66, 52,255, 93, 62, 50,255, 86, 58, 46,255, 77, 51, 41,255, + 68, 45, 34,255, 61, 40, 31,255, 59, 38, 29,255, 63, 42, 32,255, 79, 53, 41,255,105, 72, 57,255,130, 90, 72,255,131, 90, 72,255, + 92, 62, 49,255, 53, 34, 26,255, 69, 46, 36,255,146,101, 81,255,189,132,108,255,136, 94, 76,255, 49, 32, 24,255, 57, 47, 43,255, + 62, 62, 62,255, 60, 60, 60,255,143,124,124,255,222,184,188,255,221,185,188,255,219,182,185,255,215,175,175,255,209,163,156,255, +200,150,136,255,193,138,117,255,182,128,105,255,172,120, 96,255,161,111, 90,255,150,105, 84,255,142, 98, 78,255,132, 91, 74,255, +124, 86, 68,255,118, 81, 64,255,113, 78, 62,255,111, 76, 61,255,111, 76, 60,255,114, 78, 62,255,122, 84, 67,255,131, 90, 73,255, +145,100, 80,255,166,114, 93,255,190,137,117,255,207,161,155,255,216,176,178,255,219,182,185,255,220,183,186,255,217,178,181,255, +204,156,145,255,162,112, 92,255, 99, 67, 53,255, 85, 57, 45,255,120, 83, 66,255,166,115, 94,255,200,151,138,255,215,173,172,255, +217,178,179,255,216,176,176,255,213,171,169,255,207,161,154,255,188,134,114,255,141, 97, 77,255, 97, 66, 52,255,116, 80, 63,255, +171,120, 98,255,203,153,141,255,208,161,153,255,203,153,140,255,183,128,106,255,141, 97, 79,255, 97, 66, 52,255,100, 68, 54,255, +138, 95, 76,255,160,111, 90,255,170,119, 96,255,185,129,105,255,184,129,105,255,176,122, 99,255,158,109, 88,255,108, 73, 59,255, + 51, 33, 25,255,117, 80, 64,255,161,112, 90,255,152,106, 85,255,107, 73, 57,255, 96, 66, 52,255,140, 97, 78,255,139, 96, 78,255, +125, 86, 69,255,112, 77, 61,255,106, 72, 58,255,105, 72, 57,255,104, 71, 56,255,101, 69, 54,255, 95, 64, 51,255, 86, 58, 46,255, + 75, 50, 39,255, 65, 43, 33,255, 59, 39, 30,255, 59, 39, 30,255, 69, 46, 35,255, 92, 62, 50,255,122, 84, 67,255,137, 95, 76,255, +117, 80, 65,255, 68, 44, 35,255, 51, 33, 25,255,109, 74, 59,255,180,126,103,255,180,126,102,255, 76, 51, 40,255, 54, 46, 42,255, + 62, 62, 62,255, 60, 60, 60,255,141,120,119,255,218,178,179,255,219,181,184,255,220,183,187,255,219,183,186,255,217,179,181,255, +214,173,172,255,210,165,160,255,204,156,146,255,198,145,129,255,188,135,114,255,178,125,102,255,168,117, 94,255,157,109, 88,255, +147,102, 81,255,137, 94, 76,255,128, 87, 70,255,120, 82, 66,255,115, 78, 63,255,113, 77, 61,255,113, 78, 62,255,118, 81, 65,255, +125, 86, 68,255,135, 93, 75,255,152,105, 84,255,177,124,103,255,199,150,138,255,213,171,170,255,219,181,184,255,220,183,187,255, +219,181,184,255,208,162,154,255,168,119,100,255,101, 68, 54,255, 83, 56, 44,255,118, 80, 63,255,166,115, 93,255,202,154,143,255, +216,177,177,255,218,178,181,255,216,176,176,255,213,170,168,255,203,155,143,255,171,119, 97,255,114, 78, 62,255,100, 68, 53,255, +146,101, 81,255,196,144,127,255,208,161,154,255,206,159,149,255,192,137,117,255,155,107, 87,255,108, 73, 59,255, 98, 66, 53,255, +130, 89, 71,255,156,108, 87,255,168,116, 94,255,184,128,104,255,186,130,105,255,177,123,100,255,159,110, 89,255,108, 74, 59,255, + 50, 32, 24,255,115, 78, 63,255,161,111, 90,255,153,106, 85,255,105, 71, 56,255,101, 69, 54,255,147,101, 82,255,146,100, 81,255, +128, 88, 71,255,112, 77, 62,255,106, 72, 57,255,108, 73, 59,255,110, 75, 61,255,110, 75, 60,255,106, 72, 57,255, 97, 66, 52,255, + 85, 58, 45,255, 72, 48, 37,255, 62, 40, 31,255, 59, 38, 29,255, 63, 42, 32,255, 79, 53, 42,255,110, 75, 59,255,136, 94, 75,255, +134, 93, 75,255, 92, 62, 49,255, 51, 32, 24,255, 74, 49, 39,255,158,110, 89,255,192,136,113,255,131, 91, 72,255, 55, 47, 44,255, + 62, 62, 62,255, 60, 60, 60,255,142,121,121,255,216,176,176,255,216,177,177,255,217,179,180,255,219,181,183,255,219,182,184,255, +218,180,183,255,217,178,179,255,214,174,174,255,212,169,166,255,208,162,155,255,202,153,142,255,195,143,125,255,186,131,109,255, +175,121, 97,255,163,113, 90,255,151,104, 84,255,140, 97, 78,255,130, 89, 71,255,121, 83, 66,255,116, 79, 63,255,114, 78, 62,255, +115, 79, 63,255,121, 83, 66,255,128, 89, 70,255,139, 96, 77,255,163,113, 92,255,191,140,122,255,211,166,161,255,218,179,181,255, +220,184,187,255,219,181,184,255,210,166,160,255,171,122,102,255,106, 71, 56,255, 83, 56, 44,255,118, 81, 64,255,168,118, 98,255, +207,161,153,255,218,180,182,255,217,179,180,255,216,175,176,255,211,167,163,255,194,142,126,255,143, 99, 79,255, 98, 66, 52,255, +120, 83, 66,255,180,128,107,255,207,160,152,255,207,161,154,255,200,147,131,255,169,117, 95,255,121, 83, 66,255,100, 67, 53,255, +124, 85, 68,255,151,105, 85,255,164,114, 92,255,180,126,102,255,186,130,105,255,179,125,101,255,160,111, 90,255,109, 75, 59,255, + 51, 32, 25,255,112, 76, 61,255,161,112, 90,255,153,106, 86,255,103, 70, 55,255,105, 72, 57,255,153,106, 86,255,152,105, 84,255, +132, 91, 72,255,111, 75, 60,255,103, 70, 56,255,110, 74, 60,255,116, 80, 64,255,118, 81, 65,255,117, 80, 64,255,110, 75, 60,255, + 98, 66, 53,255, 83, 55, 43,255, 68, 45, 34,255, 60, 39, 30,255, 60, 39, 30,255, 70, 46, 35,255, 95, 64, 51,255,128, 88, 70,255, +143, 98, 79,255,117, 80, 64,255, 63, 41, 32,255, 54, 35, 26,255,126, 86, 69,255,189,134,113,255,172,121, 98,255, 76, 61, 54,255, + 61, 61, 62,255, 60, 60, 60,255,140,121,122,255,219,181,184,255,218,180,183,255,218,180,181,255,218,180,181,255,218,180,182,255, +218,180,183,255,217,180,182,255,218,179,181,255,217,177,179,255,216,176,176,255,214,173,172,255,211,168,165,255,206,161,154,255, +201,150,136,255,192,137,117,255,180,126,103,255,167,116, 93,255,154,107, 86,255,142, 98, 79,255,131, 90, 73,255,122, 84, 68,255, +118, 81, 65,255,116, 79, 63,255,118, 81, 65,255,123, 84, 68,255,130, 90, 71,255,151,104, 83,255,181,128,108,255,206,159,152,255, +217,178,178,255,220,183,186,255,219,182,186,255,212,168,164,255,172,123,104,255,102, 68, 54,255, 85, 57, 45,255,121, 82, 65,255, +175,124,104,255,212,169,166,255,219,181,183,255,217,179,179,255,215,174,173,255,207,161,152,255,174,122,102,255,115, 79, 63,255, +102, 70, 55,255,156,108, 86,255,202,152,141,255,209,163,157,255,205,156,146,255,182,127,104,255,135, 93, 74,255,103, 70, 56,255, +120, 81, 65,255,146,101, 82,255,160,112, 90,255,178,123,100,255,187,130,106,255,181,126,102,255,163,112, 91,255,111, 75, 60,255, + 51, 32, 24,255,109, 74, 59,255,161,111, 90,255,152,106, 84,255,102, 69, 55,255,108, 75, 59,255,158,110, 89,255,157,109, 88,255, +134, 93, 74,255,107, 73, 58,255, 98, 66, 52,255,109, 74, 59,255,120, 82, 66,255,126, 86, 69,255,127, 87, 70,255,123, 85, 68,255, +113, 77, 61,255, 97, 66, 52,255, 78, 52, 41,255, 64, 42, 32,255, 60, 39, 30,255, 63, 42, 33,255, 83, 55, 44,255,117, 80, 64,255, +143, 99, 80,255,136, 95, 75,255, 85, 57, 45,255, 48, 31, 23,255, 92, 62, 48,255,175,123,101,255,190,137,117,255,106, 82, 72,255, + 60, 61, 61,255, 60, 60, 60,255,137,116,115,255,206,165,163,255,207,168,165,255,213,174,173,255,217,178,180,255,218,180,183,255, +218,180,183,255,218,180,182,255,217,179,181,255,218,179,181,255,218,179,181,255,217,178,180,255,217,178,179,255,216,176,176,255, +214,173,172,255,210,166,162,255,204,156,146,255,195,143,126,255,184,130,108,255,170,118, 95,255,155,107, 87,255,141, 98, 79,255, +131, 90, 72,255,123, 84, 67,255,118, 81, 64,255,117, 80, 64,255,120, 82, 66,255,123, 85, 68,255,140, 96, 77,255,173,122,100,255, +203,155,143,255,217,177,178,255,220,183,186,255,219,182,185,255,210,166,161,255,165,117, 99,255, 96, 65, 51,255, 86, 58, 45,255, +124, 85, 67,255,182,132,113,255,215,174,173,255,218,180,182,255,217,177,178,255,213,171,169,255,199,147,132,255,144, 99, 80,255, + 99, 67, 53,255,129, 88, 70,255,190,137,118,255,209,163,157,255,208,162,154,255,193,139,119,255,151,104, 83,255,111, 76, 60,255, +116, 80, 64,255,141, 98, 78,255,157,109, 88,255,174,121, 97,255,187,130,105,255,182,127,103,255,164,114, 92,255,113, 77, 62,255, + 50, 32, 24,255,105, 71, 56,255,161,111, 90,255,152,105, 85,255,100, 68, 54,255,113, 77, 61,255,164,114, 92,255,162,112, 91,255, +137, 94, 76,255,101, 69, 54,255, 91, 62, 49,255,109, 74, 59,255,122, 84, 67,255,131, 89, 72,255,135, 93, 75,255,135, 93, 74,255, +127, 88, 70,255,112, 77, 61,255, 92, 62, 49,255, 72, 48, 37,255, 62, 41, 31,255, 61, 40, 30,255, 72, 48, 37,255,103, 70, 55,255, +137, 95, 76,255,147,102, 82,255,112, 76, 61,255, 56, 36, 28,255, 64, 41, 32,255,152,105, 85,255,196,142,123,255,124, 97, 86,255, + 60, 61, 61,255, 60, 60, 60,255,144,126,128,255,222,185,189,255,218,180,183,255,214,174,174,255,211,170,169,255,212,172,171,255, +215,176,177,255,217,179,181,255,218,180,182,255,218,179,182,255,217,179,182,255,218,179,181,255,218,179,181,255,218,179,181,255, +217,179,182,255,217,178,180,255,215,176,176,255,212,170,168,255,206,160,153,255,198,147,132,255,186,131,109,255,171,118, 95,255, +155,107, 87,255,141, 97, 78,255,131, 89, 72,255,123, 84, 67,255,118, 81, 65,255,119, 81, 65,255,119, 82, 65,255,131, 90, 73,255, +166,116, 94,255,201,151,137,255,217,177,178,255,220,183,186,255,219,181,184,255,208,164,157,255,158,111, 91,255, 93, 62, 49,255, + 88, 59, 46,255,133, 91, 72,255,192,141,126,255,217,178,179,255,217,178,179,255,215,175,175,255,210,165,159,255,178,125,105,255, +113, 78, 61,255,107, 73, 57,255,167,117, 95,255,207,159,150,255,209,164,158,255,201,151,137,255,166,115, 92,255,121, 83, 66,255, +115, 79, 63,255,136, 94, 76,255,153,106, 85,255,170,118, 96,255,185,129,105,255,184,128,103,255,166,116, 94,255,115, 79, 63,255, + 50, 33, 24,255,101, 69, 55,255,160,111, 90,255,151,104, 85,255, 98, 67, 53,255,115, 79, 63,255,169,117, 95,255,167,116, 94,255, +139, 95, 77,255, 92, 62, 50,255, 85, 57, 45,255,109, 74, 59,255,122, 83, 67,255,130, 90, 72,255,137, 94, 76,255,142, 98, 79,255, +140, 96, 77,255,128, 88, 71,255,108, 74, 60,255, 85, 57, 44,255, 68, 45, 34,255, 62, 40, 31,255, 66, 43, 33,255, 88, 59, 47,255, +127, 87, 70,255,151,104, 84,255,134, 93, 75,255, 77, 51, 39,255, 48, 31, 23,255,121, 82, 65,255,192,137,117,255,132,105, 96,255, + 60, 61, 61,255, 60, 61, 61,255,124, 99, 92,255,204,160,154,255,217,178,179,255,220,184,188,255,220,183,188,255,218,180,183,255, +215,177,178,255,216,177,179,255,217,178,180,255,217,180,182,255,218,180,183,255,218,181,183,255,218,181,183,255,218,181,183,255, +218,181,183,255,219,181,184,255,219,181,184,255,218,180,183,255,216,177,178,255,213,173,170,255,208,162,155,255,199,146,131,255, +185,130,107,255,168,117, 95,255,152,106, 85,255,139, 96, 77,255,129, 88, 71,255,121, 83, 66,255,119, 81, 65,255,116, 80, 64,255, +127, 87, 70,255,162,113, 92,255,200,151,139,255,217,177,178,255,220,183,187,255,219,181,183,255,206,159,150,255,147,102, 82,255, + 85, 57, 45,255, 93, 63, 50,255,144, 99, 81,255,202,156,147,255,217,177,179,255,215,175,175,255,215,173,172,255,201,151,139,255, +144, 99, 79,255,100, 68, 54,255,138, 95, 77,255,199,147,132,255,209,164,159,255,206,159,150,255,180,127,106,255,133, 92, 74,255, +117, 80, 64,255,132, 91, 73,255,150,103, 84,255,166,115, 93,255,184,127,104,255,185,128,104,255,169,118, 95,255,118, 81, 65,255, + 52, 33, 25,255, 97, 65, 52,255,159,110, 89,255,150,104, 84,255, 97, 66, 52,255,119, 81, 65,255,173,121, 98,255,172,120, 96,255, +140, 97, 77,255, 82, 54, 42,255, 82, 55, 43,255,109, 74, 60,255,121, 83, 66,255,128, 88, 70,255,135, 94, 75,255,143, 99, 80,255, +147,102, 82,255,142, 98, 79,255,126, 86, 69,255,101, 68, 54,255, 77, 52, 40,255, 66, 44, 34,255, 62, 41, 32,255, 76, 51, 40,255, +113, 77, 61,255,148,102, 82,255,150,104, 84,255,103, 71, 56,255, 49, 31, 24,255, 86, 57, 45,255,180,126,104,255,134,107,100,255, + 60, 60, 61,255, 61, 61, 62,255, 82, 64, 57,255,120, 81, 64,255,160,115, 99,255,196,151,141,255,216,175,173,255,221,184,187,255, +221,184,189,255,220,183,187,255,219,182,186,255,219,182,185,255,219,181,185,255,219,181,185,255,219,182,185,255,219,181,184,255, +218,181,184,255,218,181,184,255,219,181,184,255,219,181,184,255,219,181,185,255,218,181,183,255,217,178,179,255,213,172,171,255, +207,161,153,255,196,144,128,255,182,128,106,255,165,114, 92,255,149,103, 83,255,135, 94, 75,255,125, 85, 69,255,119, 81, 65,255, +113, 77, 61,255,124, 84, 68,255,162,113, 92,255,202,155,144,255,218,180,181,255,220,183,186,255,218,180,181,255,198,150,139,255, +130, 89, 72,255, 83, 55, 44,255,100, 67, 53,255,160,113, 95,255,210,167,163,255,216,175,175,255,214,173,171,255,211,167,163,255, +176,126,107,255,109, 74, 59,255,114, 78, 62,255,180,129,111,255,208,162,155,255,208,162,156,255,193,140,123,255,148,102, 82,255, +121, 83, 66,255,130, 89, 72,255,146,102, 81,255,162,112, 91,255,181,126,102,255,185,129,105,255,171,119, 96,255,122, 84, 67,255, + 52, 33, 25,255, 93, 63, 49,255,158,110, 89,255,150,104, 84,255, 95, 64, 51,255,122, 83, 66,255,177,123,100,255,177,123,100,255, +141, 97, 79,255, 71, 48, 37,255, 82, 55, 43,255,110, 75, 60,255,119, 82, 65,255,123, 84, 68,255,131, 90, 73,255,141, 98, 79,255, +149,103, 83,255,151,104, 84,255,141, 97, 78,255,119, 81, 65,255, 91, 61, 48,255, 72, 48, 37,255, 63, 41, 32,255, 68, 45, 34,255, + 98, 66, 52,255,140, 96, 77,255,158,109, 88,255,129, 89, 71,255, 63, 41, 32,255, 57, 37, 28,255,157,109, 89,255,133,105, 97,255, + 60, 61, 61,255, 61, 61, 61,255,101, 78, 68,255,120, 82, 64,255,106, 72, 57,255,117, 80, 65,255,154,109, 91,255,195,146,133,255, +215,173,170,255,219,182,184,255,220,184,188,255,221,184,189,255,220,184,188,255,220,183,188,255,219,183,187,255,219,183,186,255, +219,182,186,255,219,182,186,255,218,181,184,255,218,182,184,255,218,182,185,255,218,182,185,255,219,181,185,255,218,180,183,255, +217,177,178,255,212,170,167,255,205,157,148,255,193,140,122,255,177,123, 99,255,159,110, 89,255,142, 99, 79,255,128, 88, 71,255, +118, 81, 65,255,111, 76, 60,255,123, 84, 67,255,165,115, 94,255,206,160,151,255,218,181,183,255,220,182,185,255,216,176,175,255, +188,139,124,255,115, 78, 62,255, 81, 54, 42,255,113, 76, 61,255,180,131,113,255,214,174,172,255,212,171,168,255,213,171,169,255, +199,150,137,255,134, 92, 75,255,101, 69, 54,255,154,107, 88,255,205,157,147,255,209,163,158,255,201,151,138,255,164,115, 93,255, +129, 89, 71,255,129, 88, 71,255,143, 99, 80,255,157,110, 89,255,177,123,100,255,185,130,105,255,173,121, 98,255,126, 86, 69,255, + 54, 34, 26,255, 89, 60, 47,255,158,109, 88,255,150,104, 84,255, 94, 64, 50,255,124, 85, 68,255,181,126,102,255,181,126,103,255, +141, 98, 78,255, 63, 42, 32,255, 85, 56, 44,255,112, 76, 61,255,117, 80, 64,255,120, 81, 65,255,125, 86, 69,255,136, 94, 76,255, +148,103, 82,255,156,108, 87,255,152,104, 85,255,135, 93, 75,255,107, 73, 58,255, 82, 55, 43,255, 67, 44, 34,255, 64, 42, 33,255, + 84, 56, 44,255,127, 87, 70,255,158,110, 88,255,148,103, 82,255, 85, 57, 45,255, 45, 28, 21,255,123, 85, 68,255,130,101, 90,255, + 60, 61, 61,255, 60, 60, 60,255,140,117,116,255,199,151,140,255,168,121,103,255,137, 94, 77,255,115, 79, 63,255,123, 83, 66,255, +158,110, 91,255,193,145,131,255,210,167,163,255,217,177,178,255,219,181,184,255,220,183,186,255,221,183,187,255,220,183,188,255, +219,184,188,255,219,183,187,255,220,183,186,255,220,182,185,255,220,182,185,255,219,182,184,255,219,181,185,255,220,182,185,255, +219,182,185,255,218,179,182,255,215,175,175,255,210,166,161,255,201,151,138,255,186,132,110,255,167,116, 94,255,149,103, 83,255, +131, 90, 73,255,117, 80, 64,255,108, 74, 59,255,124, 85, 68,255,173,122,101,255,210,166,162,255,218,181,183,255,219,180,183,255, +214,171,167,255,171,122,102,255, 96, 64, 51,255, 86, 58, 46,255,131, 90, 72,255,200,152,140,255,211,169,167,255,210,167,164,255, +210,165,159,255,166,118,100,255,105, 72, 57,255,127, 87, 69,255,195,145,133,255,210,164,159,255,207,159,150,255,178,126,105,255, +138, 95, 76,255,130, 89, 72,255,141, 98, 78,255,154,107, 86,255,173,120, 97,255,185,129,104,255,175,122, 98,255,130, 90, 72,255, + 55, 36, 27,255, 85, 57, 44,255,157,109, 88,255,149,103, 83,255, 92, 62, 49,255,126, 87, 69,255,184,129,104,255,185,128,104,255, +141, 97, 78,255, 58, 38, 28,255, 88, 59, 47,255,113, 77, 61,255,116, 79, 63,255,115, 79, 63,255,119, 81, 65,255,130, 89, 72,255, +144,100, 80,255,155,107, 87,255,158,110, 89,255,149,102, 83,255,125, 85, 69,255, 95, 65, 51,255, 74, 49, 38,255, 63, 42, 31,255, + 73, 49, 38,255,111, 76, 60,255,155,107, 86,255,161,112, 90,255,112, 76, 61,255, 48, 31, 23,255, 87, 58, 46,255,120, 93, 82,255, + 60, 61, 61,255, 60, 60, 60,255,144,124,126,255,224,186,190,255,221,183,186,255,211,168,164,255,189,144,133,255,159,114, 98,255, +133, 91, 72,255,131, 89, 69,255,155,108, 89,255,185,136,121,255,206,160,151,255,215,173,172,255,218,179,181,255,219,181,185,255, +219,183,186,255,220,183,186,255,220,183,187,255,220,183,186,255,220,182,186,255,218,181,184,255,219,182,184,255,219,182,185,255, +219,182,185,255,219,181,185,255,218,181,183,255,217,178,179,255,213,171,169,255,206,159,150,255,193,140,121,255,175,122, 99,255, +154,106, 86,255,134, 92, 74,255,116, 79, 63,255,108, 73, 59,255,131, 90, 72,255,184,134,117,255,215,173,172,255,218,181,182,255, +218,179,181,255,207,161,153,255,148,102, 83,255, 87, 58, 46,255, 97, 66, 52,255,160,114, 96,255,209,166,160,255,207,161,155,255, +211,167,163,255,193,143,128,255,123, 84, 67,255,109, 74, 59,255,177,127,109,255,210,163,158,255,209,164,157,255,192,139,119,255, +151,104, 84,255,134, 92, 74,255,140, 96, 77,255,152,105, 85,255,169,117, 96,255,184,128,104,255,177,123, 99,255,136, 93, 75,255, + 57, 37, 28,255, 82, 54, 43,255,156,108, 87,255,149,103, 83,255, 90, 61, 48,255,129, 89, 71,255,188,131,106,255,188,131,107,255, +140, 96, 77,255, 56, 36, 27,255, 93, 63, 50,255,115, 78, 62,255,115, 78, 63,255,111, 77, 61,255,113, 77, 62,255,122, 83, 67,255, +138, 96, 77,255,154,106, 86,255,161,112, 91,255,158,109, 88,255,141, 97, 78,255,112, 76, 61,255, 85, 57, 45,255, 67, 44, 34,255, + 66, 44, 34,255, 95, 64, 51,255,145,100, 81,255,169,117, 94,255,138, 95, 77,255, 62, 41, 32,255, 63, 41, 31,255,105, 82, 71,255, + 61, 61, 61,255, 60, 61, 61,255,114, 91, 82,255,187,139,126,255,209,164,158,255,221,182,185,255,221,184,188,255,217,178,180,255, +206,163,159,255,181,133,118,255,149,104, 83,255,136, 93, 73,255,153,106, 87,255,182,130,111,255,203,155,143,255,213,170,167,255, +216,176,176,255,218,179,181,255,219,181,183,255,219,182,185,255,219,182,185,255,218,182,185,255,218,181,183,255,218,181,184,255, +218,181,184,255,219,182,184,255,219,182,184,255,218,180,183,255,217,178,180,255,214,174,172,255,208,163,157,255,197,147,131,255, +180,126,102,255,157,109, 88,255,135, 93, 75,255,114, 78, 62,255,109, 75, 59,255,145,100, 79,255,199,151,138,255,217,177,178,255, +218,179,180,255,216,176,176,255,193,145,133,255,119, 81, 64,255, 86, 57, 45,255,122, 83, 66,255,194,147,135,255,207,162,156,255, +207,161,153,255,207,159,149,255,151,104, 84,255,103, 70, 55,255,151,105, 85,255,206,160,152,255,210,164,160,255,201,151,137,255, +166,114, 92,255,139, 95, 77,255,140, 96, 78,255,150,103, 83,255,165,114, 93,255,182,127,102,255,178,124,100,255,140, 97, 78,255, + 60, 39, 30,255, 78, 52, 41,255,156,108, 87,255,148,102, 82,255, 88, 59, 47,255,132, 91, 72,255,190,134,111,255,190,134,110,255, +139, 95, 77,255, 57, 38, 30,255, 98, 66, 52,255,117, 80, 64,255,115, 79, 64,255,109, 74, 59,255,108, 73, 59,255,115, 79, 63,255, +131, 90, 73,255,149,103, 83,255,161,112, 91,255,163,113, 91,255,153,106, 86,255,129, 88, 71,255, 98, 67, 53,255, 73, 48, 38,255, + 64, 42, 32,255, 80, 53, 42,255,130, 89, 72,255,169,118, 96,255,160,111, 90,255, 85, 57, 45,255, 53, 33, 26,255, 85, 68, 60,255, + 61, 61, 62,255, 61, 62, 62,255, 63, 51, 46,255, 71, 46, 35,255, 95, 63, 49,255,137, 96, 81,255,186,143,134,255,210,170,169,255, +219,182,185,255,221,185,189,255,215,175,174,255,193,146,134,255,161,115, 96,255,146,101, 82,255,158,109, 87,255,182,130,109,255, +202,153,141,255,211,167,163,255,215,174,174,255,216,177,178,255,218,180,181,255,218,180,183,255,218,180,183,255,218,180,183,255, +218,180,182,255,218,180,182,255,218,180,183,255,219,181,183,255,218,180,182,255,217,178,180,255,215,175,174,255,210,165,161,255, +199,149,135,255,183,128,105,255,159,111, 89,255,134, 91, 74,255,112, 76, 61,255,117, 80, 64,255,168,118, 97,255,210,165,159,255, +217,178,178,255,217,177,178,255,211,167,163,255,162,115, 97,255, 94, 64, 50,255, 98, 67, 53,255,161,114, 94,255,208,164,159,255, +202,154,143,255,209,164,158,255,179,127,108,255,112, 76, 60,255,128, 87, 69,255,197,148,133,255,210,166,160,255,207,160,150,255, +179,125,103,255,147,101, 81,255,141, 97, 78,255,148,102, 83,255,162,112, 91,255,179,124,100,255,179,125,102,255,145, 99, 80,255, + 62, 40, 32,255, 75, 49, 38,255,155,107, 86,255,147,102, 82,255, 86, 58, 46,255,135, 93, 74,255,192,137,116,255,192,137,115,255, +138, 96, 77,255, 62, 43, 35,255,103, 70, 56,255,119, 82, 65,255,115, 79, 64,255,108, 73, 58,255,103, 71, 56,255,109, 74, 59,255, +123, 85, 67,255,143, 99, 79,255,159,110, 89,255,166,116, 93,255,161,112, 91,255,143, 99, 80,255,113, 77, 62,255, 83, 56, 44,255, + 66, 43, 33,255, 69, 45, 36,255,113, 76, 61,255,165,115, 93,255,174,121, 98,255,116, 79, 63,255, 51, 33, 24,255, 69, 56, 51,255, + 61, 62, 62,255, 61, 62, 62,255, 63, 52, 47,255, 59, 39, 29,255, 53, 34, 26,255, 51, 32, 23,255, 65, 41, 30,255,103, 70, 58,255, +152,112,100,255,198,155,148,255,221,182,183,255,223,187,192,255,218,179,180,255,202,158,151,255,178,130,116,255,160,111, 89,255, +163,112, 89,255,183,131,111,255,201,152,139,255,210,166,161,255,214,173,172,255,216,176,177,255,217,178,179,255,217,178,180,255, +218,179,181,255,218,179,181,255,217,179,180,255,218,180,182,255,218,180,181,255,218,179,181,255,217,178,179,255,215,174,174,255, +209,165,161,255,201,150,136,255,182,128,106,255,157,109, 88,255,129, 88, 71,255,110, 75, 59,255,135, 92, 74,255,193,142,127,255, +215,174,173,255,216,175,175,255,214,173,173,255,197,147,134,255,127, 88, 70,255, 91, 62, 49,255,126, 86, 67,255,201,152,141,255, +201,153,142,255,206,159,151,255,197,147,133,255,131, 89, 71,255,112, 77, 60,255,180,129,110,255,210,165,159,255,209,163,158,255, +192,138,119,255,157,109, 87,255,144, 99, 80,255,148,102, 82,255,159,110, 89,255,176,122, 99,255,180,125,101,255,149,103, 83,255, + 66, 43, 33,255, 72, 48, 37,255,154,107, 86,255,146,100, 81,255, 85, 56, 44,255,138, 95, 76,255,194,140,120,255,194,139,119,255, +138, 98, 80,255, 69, 51, 44,255,108, 73, 58,255,122, 83, 66,255,116, 79, 64,255,106, 73, 58,255,101, 69, 54,255,103, 70, 56,255, +116, 79, 63,255,136, 94, 75,255,155,107, 87,255,165,115, 93,255,167,116, 93,255,155,107, 87,255,129, 89, 71,255, 96, 65, 51,255, + 71, 47, 36,255, 63, 41, 32,255, 93, 62, 49,255,155,108, 87,255,182,127,103,255,147,101, 82,255, 62, 41, 31,255, 63, 54, 51,255, + 61, 62, 62,255, 61, 62, 62,255, 70, 56, 51,255, 72, 47, 37,255, 64, 42, 32,255, 57, 37, 29,255, 53, 34, 26,255, 49, 31, 23,255, + 53, 34, 25,255, 77, 52, 40,255,133, 95, 80,255,196,150,140,255,218,178,181,255,221,185,190,255,219,182,185,255,211,169,166,255, +188,139,125,255,164,113, 92,255,167,117, 94,255,189,135,115,255,204,156,144,255,211,167,162,255,213,172,170,255,215,175,175,255, +217,176,177,255,217,177,178,255,217,178,179,255,217,178,179,255,217,178,179,255,218,179,180,255,217,178,179,255,216,177,177,255, +214,173,171,255,209,164,159,255,199,147,133,255,179,125,102,255,151,104, 84,255,121, 83, 67,255,116, 79, 63,255,166,117, 97,255, +209,164,158,255,215,174,172,255,215,173,172,255,211,166,161,255,166,117, 96,255, 99, 67, 53,255,107, 73, 58,255,179,127,108,255, +205,157,147,255,201,151,139,255,205,158,148,255,153,106, 86,255,107, 73, 58,255,158,110, 90,255,208,161,152,255,210,165,160,255, +201,150,137,255,168,116, 93,255,147,102, 82,255,147,102, 83,255,157,109, 88,255,172,120, 96,255,179,124,101,255,153,106, 86,255, + 69, 46, 36,255, 70, 47, 37,255,153,107, 85,255,145,100, 81,255, 81, 54, 43,255,142, 98, 79,255,196,143,125,255,196,141,121,255, +140,102, 85,255, 76, 58, 51,255,113, 77, 61,255,124, 85, 69,255,118, 81, 65,255,107, 73, 58,255, 99, 67, 53,255, 99, 68, 54,255, +110, 74, 59,255,128, 88, 71,255,148,103, 83,255,163,114, 92,255,169,118, 95,255,162,114, 91,255,143, 99, 80,255,111, 76, 61,255, + 79, 53, 41,255, 62, 41, 31,255, 75, 50, 38,255,139, 96, 77,255,185,129,104,255,170,119, 96,255, 87, 58, 46,255, 62, 54, 51,255, + 61, 62, 62,255, 61, 61, 62,255, 86, 68, 60,255,100, 68, 54,255, 86, 58, 45,255, 74, 50, 39,255, 64, 42, 32,255, 57, 37, 28,255, + 52, 33, 25,255, 47, 29, 22,255, 46, 29, 21,255, 70, 45, 34,255,132, 92, 75,255,187,144,134,255,213,174,174,255,221,184,188,255, +222,185,189,255,211,168,165,255,186,135,119,255,169,118, 97,255,179,124,101,255,195,143,125,255,205,158,149,255,211,167,163,255, +213,171,169,255,215,173,172,255,215,175,175,255,215,176,176,255,216,176,177,255,216,177,177,255,216,177,178,255,216,177,177,255, +215,175,174,255,212,170,168,255,207,161,154,255,196,142,124,255,172,120, 97,255,140, 97, 77,255,115, 79, 63,255,140, 97, 78,255, +198,149,136,255,213,171,167,255,213,171,169,255,213,171,168,255,191,140,123,255,115, 78, 62,255,100, 68, 54,255,153,105, 84,255, +203,154,141,255,197,145,128,255,207,160,153,255,173,124,105,255,113, 77, 61,255,138, 95, 76,255,202,152,139,255,210,165,159,255, +205,158,149,255,180,126,104,255,154,107, 86,255,149,103, 83,255,155,108, 87,255,169,118, 95,255,178,124,100,255,156,108, 88,255, + 74, 49, 38,255, 69, 46, 35,255,152,105, 85,255,144, 99, 79,255, 79, 53, 41,255,146,101, 82,255,198,145,130,255,196,143,125,255, +141,104, 89,255, 83, 63, 55,255,118, 80, 63,255,127, 88, 70,255,119, 82, 65,255,107, 73, 58,255, 98, 66, 53,255, 96, 65, 51,255, +103, 71, 56,255,120, 82, 66,255,142, 98, 79,255,159,111, 90,255,169,117, 95,255,168,117, 95,255,154,107, 86,255,127, 87, 70,255, + 91, 62, 49,255, 65, 43, 33,255, 61, 40, 31,255,119, 80, 65,255,182,128,104,255,186,130,107,255,118, 82, 65,255, 63, 55, 52,255, + 61, 62, 62,255, 60, 61, 61,255,110, 85, 75,255,149,103, 83,255,136, 94, 75,255,117, 80, 64,255, 96, 65, 52,255, 78, 51, 40,255, + 65, 43, 33,255, 58, 37, 29,255, 51, 33, 25,255, 45, 28, 21,255, 45, 28, 20,255, 68, 44, 33,255,120, 85, 71,255,180,136,126,255, +215,173,169,255,223,186,192,255,221,184,187,255,209,166,161,255,186,137,121,255,174,120, 96,255,185,130,108,255,200,148,133,255, +207,160,153,255,211,167,163,255,213,170,168,255,214,172,171,255,215,174,173,255,215,174,174,255,215,175,175,255,216,175,175,255, +215,175,174,255,214,173,171,255,210,167,163,255,204,156,146,255,189,134,113,255,160,111, 89,255,125, 86, 69,255,126, 87, 69,255, +182,132,114,255,211,167,162,255,212,169,167,255,212,170,167,255,205,157,148,255,142, 97, 77,255,100, 68, 54,255,135, 92, 74,255, +194,143,127,255,195,142,123,255,205,157,148,255,189,139,124,255,124, 85, 68,255,124, 85, 68,255,191,141,125,255,209,164,157,255, +208,162,155,255,189,136,117,255,162,112, 91,255,151,105, 85,255,155,108, 87,255,167,116, 94,255,176,123, 99,255,160,111, 89,255, + 78, 52, 41,255, 68, 46, 36,255,152,106, 85,255,142, 98, 78,255, 77, 51, 40,255,150,105, 86,255,199,148,133,255,197,144,127,255, +143,109, 95,255, 87, 66, 57,255,123, 84, 67,255,130, 90, 72,255,121, 83, 66,255,107, 73, 59,255, 97, 66, 52,255, 94, 64, 50,255, + 99, 68, 54,255,113, 78, 62,255,133, 92, 74,255,154,106, 86,255,167,116, 94,255,170,119, 95,255,163,113, 92,255,141, 97, 78,255, +105, 71, 57,255, 72, 47, 37,255, 55, 35, 27,255, 95, 64, 50,255,175,123,101,255,195,140,120,255,149,103, 83,255, 68, 57, 53,255, + 61, 62, 62,255, 60, 61, 61,255,123, 94, 82,255,181,126,102,255,178,124,101,255,170,118, 96,255,152,105, 85,255,126, 86, 69,255, + 99, 67, 53,255, 78, 52, 41,255, 66, 43, 33,255, 57, 37, 29,255, 51, 33, 25,255, 46, 29, 21,255, 45, 28, 21,255, 62, 40, 30,255, +118, 81, 66,255,185,139,125,255,217,177,179,255,221,185,190,255,219,182,185,255,206,163,157,255,182,129,108,255,179,125,101,255, +194,139,119,255,203,154,142,255,208,162,156,255,211,167,163,255,212,171,168,255,214,172,170,255,214,173,171,255,215,174,172,255, +215,173,173,255,213,172,171,255,212,169,167,255,208,162,156,255,199,147,133,255,177,123,100,255,141, 98, 78,255,122, 83, 67,255, +167,117, 97,255,207,162,155,255,212,168,164,255,212,168,164,255,210,165,159,255,166,116, 97,255,104, 71, 56,255,124, 85, 68,255, +182,131,111,255,196,141,122,255,202,151,139,255,198,150,137,255,138, 95, 77,255,117, 80, 64,255,177,128,110,255,208,162,155,255, +209,163,157,255,197,145,129,255,171,119, 96,255,155,108, 87,255,156,108, 87,255,164,114, 93,255,174,121, 98,255,162,112, 91,255, + 82, 55, 43,255, 68, 46, 37,255,151,105, 84,255,140, 96, 77,255, 74, 49, 38,255,155,109, 91,255,201,151,136,255,197,144,129,255, +141,108, 95,255, 87, 64, 53,255,128, 87, 70,255,132, 91, 73,255,123, 85, 68,255,108, 74, 59,255, 97, 67, 52,255, 94, 64, 51,255, + 96, 65, 52,255,107, 73, 59,255,125, 86, 69,255,147,102, 82,255,162,113, 91,255,171,119, 97,255,168,117, 95,255,153,105, 86,255, +120, 83, 66,255, 81, 54, 43,255, 54, 35, 27,255, 75, 49, 39,255,166,117, 96,255,198,148,133,255,171,120, 99,255, 80, 63, 55,255, + 61, 61, 62,255, 60, 61, 61,255,125, 96, 83,255,187,131,106,255,191,133,108,255,193,136,112,255,191,135,112,255,180,126,104,255, +155,108, 87,255,124, 86, 68,255, 98, 66, 52,255, 79, 53, 41,255, 67, 44, 34,255, 58, 38, 29,255, 51, 33, 25,255, 44, 28, 20,255, + 40, 25, 18,255, 64, 41, 31,255,132, 92, 76,255,195,151,143,255,218,178,180,255,221,186,191,255,216,177,179,255,195,147,134,255, +182,128,105,255,189,133,109,255,199,147,132,255,205,158,149,255,209,164,158,255,211,167,163,255,212,170,167,255,213,171,169,255, +213,172,170,255,213,171,169,255,212,170,167,255,209,166,161,255,204,156,146,255,190,135,115,255,157,109, 88,255,126, 86, 69,255, +153,106, 85,255,202,154,144,255,211,167,162,255,210,166,162,255,211,166,162,255,184,134,118,255,114, 78, 62,255,116, 79, 64,255, +172,122,102,255,196,142,124,255,198,145,128,255,204,155,145,255,154,107, 88,255,115, 79, 63,255,164,117, 98,255,207,159,150,255, +209,163,157,255,202,152,140,255,178,125,102,255,161,112, 90,255,157,109, 88,255,163,114, 92,255,172,120, 97,255,163,113, 91,255, + 87, 58, 45,255, 70, 48, 40,255,152,104, 84,255,137, 95, 76,255, 72, 48, 37,255,161,114, 96,255,202,152,140,255,197,145,129,255, +139,109, 97,255, 91, 63, 51,255,133, 91, 74,255,135, 93, 75,255,124, 86, 69,255,109, 74, 60,255, 98, 67, 53,255, 94, 63, 50,255, + 94, 64, 51,255,102, 70, 55,255,119, 81, 65,255,140, 96, 78,255,158,109, 88,255,169,117, 95,255,172,120, 97,255,162,114, 91,255, +136, 94, 75,255, 94, 64, 50,255, 58, 37, 29,255, 61, 40, 30,255,156,109, 90,255,201,153,141,255,188,136,118,255, 98, 76, 65,255, + 61, 61, 61,255, 60, 61, 61,255,122, 94, 82,255,183,128,103,255,188,131,107,255,193,137,115,255,197,143,125,255,198,145,128,255, +195,141,122,255,181,127,106,255,154,105, 85,255,121, 83, 66,255, 96, 65, 51,255, 79, 53, 41,255, 68, 45, 35,255, 59, 38, 29,255, + 50, 32, 24,255, 41, 25, 19,255, 42, 26, 19,255, 78, 52, 40,255,152,110, 96,255,207,161,154,255,221,184,188,255,221,185,190,255, +209,168,165,255,192,141,124,255,186,130,105,255,195,141,122,255,203,153,141,255,207,160,153,255,210,165,160,255,211,168,164,255, +212,169,166,255,213,170,167,255,212,169,166,255,211,167,163,255,206,160,153,255,198,145,128,255,172,120, 97,255,134, 93, 75,255, +145, 99, 79,255,197,146,131,255,210,166,161,255,210,165,160,255,210,166,161,255,196,148,136,255,128, 88, 70,255,112, 76, 61,255, +160,112, 93,255,197,143,127,255,194,139,119,255,205,157,146,255,170,120,101,255,117, 80, 64,255,152,106, 87,255,203,155,145,255, +209,164,157,255,205,157,148,255,187,131,110,255,166,115, 94,255,159,111, 90,255,163,114, 92,255,170,118, 96,255,164,114, 91,255, + 92, 63, 50,255, 74, 55, 48,255,152,105, 84,255,133, 92, 73,255, 71, 47, 36,255,168,120,102,255,203,154,142,255,196,145,130,255, +136,109, 99,255, 99, 67, 54,255,137, 94, 76,255,137, 95, 76,255,127, 86, 69,255,111, 76, 60,255,100, 68, 53,255, 95, 64, 51,255, + 93, 63, 50,255, 98, 67, 53,255,112, 76, 61,255,132, 90, 73,255,151,104, 84,255,166,116, 93,255,174,121, 98,255,170,119, 96,255, +149,103, 83,255,108, 74, 59,255, 64, 42, 32,255, 55, 35, 27,255,150,104, 86,255,202,155,144,255,197,147,134,255,112, 86, 75,255, + 60, 61, 61,255, 60, 61, 61,255,120, 93, 81,255,176,123,100,255,182,127,102,255,189,132,107,255,193,138,117,255,197,144,127,255, +200,148,134,255,200,150,136,255,194,143,125,255,176,124,101,255,147,101, 81,255,117, 80, 64,255, 95, 64, 51,255, 81, 54, 43,255, + 68, 45, 35,255, 58, 36, 28,255, 48, 31, 23,255, 41, 25, 18,255, 46, 29, 21,255,100, 68, 55,255,179,132,118,255,216,176,176,255, +221,184,188,255,219,182,185,255,204,158,149,255,188,133,108,255,193,138,117,255,201,151,137,255,206,159,150,255,209,163,157,255, +211,166,161,255,211,168,164,255,211,168,164,255,211,167,163,255,208,163,156,255,202,151,139,255,183,128,106,255,145,100, 81,255, +141, 96, 77,255,191,139,122,255,210,165,159,255,210,164,159,255,210,165,159,255,204,156,147,255,146,101, 83,255,111, 75, 60,255, +150,104, 85,255,195,143,127,255,193,137,114,255,205,156,146,255,181,129,110,255,122, 83, 67,255,142, 98, 79,255,200,151,138,255, +209,163,157,255,208,161,153,255,194,139,119,255,172,120, 97,255,163,113, 91,255,164,114, 92,255,169,118, 96,255,164,114, 92,255, + 94, 63, 50,255, 80, 63, 57,255,153,105, 84,255,129, 88, 71,255, 70, 46, 35,255,175,127,109,255,204,155,145,255,194,143,128,255, +132,108, 98,255,107, 74, 59,255,140, 97, 78,255,140, 96, 77,255,128, 88, 71,255,112, 77, 61,255,101, 69, 54,255, 95, 65, 52,255, + 93, 63, 49,255, 96, 65, 51,255,106, 72, 57,255,124, 86, 68,255,143, 99, 79,255,161,111, 91,255,174,121, 98,255,175,122, 99,255, +161,112, 90,255,123, 85, 68,255, 71, 47, 36,255, 55, 36, 29,255,146,103, 85,255,203,156,146,255,202,154,144,255,120, 93, 82,255, + 60, 61, 61,255, 60, 61, 61,255,119, 92, 80,255,173,120, 96,255,175,121, 99,255,182,127,103,255,189,132,108,255,193,138,116,255, +197,144,127,255,201,149,136,255,203,153,142,255,202,151,138,255,191,138,118,255,168,117, 95,255,139, 96, 77,255,115, 78, 63,255, + 95, 64, 51,255, 80, 53, 41,255, 67, 44, 34,255, 55, 36, 27,255, 44, 27, 20,255, 35, 21, 16,255, 63, 41, 30,255,143,101, 85,255, +204,159,153,255,219,181,184,255,221,185,191,255,213,173,171,255,197,144,127,255,194,139,118,255,200,148,134,255,205,157,147,255, +208,162,154,255,209,164,159,255,210,166,161,255,210,165,160,255,208,163,158,255,204,156,145,255,191,137,116,255,157,109, 87,255, +142, 97, 78,255,187,134,114,255,208,162,155,255,209,164,157,255,209,163,157,255,207,161,152,255,164,116, 97,255,113, 78, 62,255, +143, 98, 79,255,192,141,124,255,192,135,112,255,204,154,142,255,190,138,120,255,131, 90, 72,255,135, 92, 74,255,194,145,131,255, +209,163,156,255,208,162,156,255,198,145,128,255,178,124,100,255,167,116, 94,255,165,114, 93,255,169,118, 95,255,163,114, 92,255, + 98, 67, 54,255, 87, 71, 66,255,153,106, 84,255,122, 84, 67,255, 72, 47, 37,255,182,133,117,255,205,157,147,255,192,142,127,255, +122, 98, 89,255,117, 80, 65,255,144,100, 80,255,142, 98, 78,255,129, 89, 71,255,113, 77, 61,255,102, 70, 55,255, 97, 66, 52,255, + 93, 64, 49,255, 94, 64, 50,255,101, 68, 54,255,117, 80, 64,255,135, 93, 75,255,155,108, 86,255,172,120, 97,255,180,125,101,255, +171,119, 96,255,138, 95, 77,255, 82, 54, 42,255, 62, 45, 38,255,153,110, 92,255,203,156,147,255,204,157,148,255,125, 97, 86,255, + 60, 61, 61,255, 60, 61, 61,255,120, 93, 81,255,171,119, 96,255,169,118, 95,255,176,122, 99,255,184,128,104,255,190,132,108,255, +193,137,115,255,197,142,123,255,199,147,131,255,202,152,141,255,204,155,145,255,199,149,134,255,184,131,110,255,159,110, 89,255, +134, 92, 74,255,110, 75, 60,255, 91, 62, 49,255, 78, 52, 41,255, 64, 42, 32,255, 49, 32, 24,255, 38, 23, 17,255, 44, 27, 19,255, +104, 71, 56,255,183,135,121,255,216,174,173,255,221,185,190,255,218,180,183,255,205,159,150,255,196,142,123,255,199,147,132,255, +204,156,145,255,207,161,152,255,209,164,157,255,209,164,158,255,208,163,157,255,205,158,149,255,196,142,124,255,166,115, 92,255, +146,101, 81,255,184,131,110,255,208,161,153,255,208,162,156,255,208,162,156,255,208,163,155,255,179,129,111,255,120, 83, 66,255, +138, 95, 76,255,189,137,120,255,192,136,114,255,201,151,137,255,196,145,128,255,139, 96, 77,255,129, 89, 70,255,189,139,122,255, +208,162,155,255,208,163,157,255,201,150,138,255,185,129,104,255,171,119, 96,255,167,116, 94,255,169,118, 95,255,163,113, 92,255, + 99, 68, 54,255, 95, 81, 76,255,155,106, 84,255,116, 79, 63,255, 75, 49, 39,255,190,140,124,255,205,158,149,255,189,139,125,255, +115, 92, 81,255,126, 87, 70,255,146,101, 82,255,143, 99, 80,255,130, 90, 72,255,114, 78, 62,255,104, 71, 56,255, 99, 67, 53,255, + 94, 65, 51,255, 93, 63, 50,255, 97, 66, 52,255,110, 76, 60,255,127, 87, 70,255,148,102, 82,255,170,118, 96,255,182,127,103,255, +179,124,101,255,151,105, 84,255, 93, 62, 49,255, 72, 56, 49,255,161,117, 99,255,203,156,147,255,204,158,149,255,126, 99, 88,255, + 60, 61, 61,255, 60, 61, 61,255,124, 95, 83,255,173,121, 97,255,167,116, 93,255,169,118, 95,255,177,123,100,255,186,130,105,255, +191,135,109,255,192,137,113,255,195,139,120,255,197,143,126,255,201,150,137,255,204,156,146,255,203,155,145,255,196,142,124,255, +177,124,100,255,149,103, 83,255,126, 86, 69,255,105, 72, 57,255, 88, 60, 47,255, 72, 47, 37,255, 56, 37, 28,255, 43, 27, 20,255, + 39, 24, 17,255, 76, 51, 39,255,159,112, 93,255,210,166,161,255,220,182,186,255,220,184,188,255,212,170,168,255,199,149,134,255, +200,149,135,255,204,155,145,255,206,159,152,255,207,162,155,255,207,161,154,255,205,158,150,255,198,146,130,255,173,120, 97,255, +153,105, 85,255,186,132,111,255,206,159,150,255,208,162,154,255,207,161,154,255,209,163,155,255,193,141,125,255,131, 90, 72,255, +134, 93, 74,255,184,133,115,255,193,137,116,255,200,147,130,255,200,149,134,255,146,101, 81,255,126, 86, 69,255,184,133,115,255, +207,161,154,255,209,164,157,255,203,155,144,255,189,133,110,255,175,122, 98,255,169,118, 95,255,169,117, 95,255,163,114, 92,255, + 98, 66, 52,255,107, 94, 88,255,156,106, 84,255,107, 73, 58,255, 81, 54, 43,255,197,146,132,255,206,159,149,255,186,137,121,255, +112, 89, 79,255,132, 92, 74,255,149,103, 83,255,144, 99, 80,255,131, 90, 72,255,115, 78, 63,255,106, 72, 57,255,100, 68, 54,255, + 96, 65, 52,255, 93, 63, 50,255, 95, 64, 51,255,104, 71, 56,255,117, 80, 64,255,140, 96, 77,255,167,116, 94,255,184,128,104,255, +186,130,105,255,163,113, 91,255,105, 70, 55,255, 84, 68, 61,255,167,118,100,255,203,155,145,255,202,154,144,255,124, 96, 85,255, + 60, 61, 61,255, 60, 61, 61,255,129, 99, 87,255,179,125,101,255,168,117, 94,255,167,116, 93,255,172,119, 96,255,181,126,102,255, +188,132,107,255,192,135,111,255,193,137,115,255,193,137,114,255,194,138,117,255,197,144,127,255,202,153,142,255,205,158,149,255, +201,150,137,255,187,133,111,255,164,114, 91,255,141, 97, 78,255,119, 82, 65,255, 98, 67, 53,255, 80, 53, 42,255, 64, 42, 32,255, + 49, 31, 23,255, 38, 24, 17,255, 62, 40, 30,255,135, 94, 76,255,201,155,146,255,218,179,180,255,221,184,189,255,215,176,176,255, +205,157,148,255,202,152,140,255,204,156,146,255,205,159,149,255,206,160,152,255,205,158,150,255,199,147,132,255,177,124,100,255, +162,112, 90,255,189,135,114,255,206,159,149,255,207,160,152,255,207,160,152,255,207,160,153,255,200,148,134,255,142, 98, 79,255, +135, 92, 74,255,182,131,112,255,195,140,119,255,198,144,126,255,202,152,139,255,153,106, 85,255,125, 85, 68,255,180,129,108,255, +207,160,153,255,209,163,157,255,204,157,148,255,193,139,118,255,179,125,101,255,172,120, 96,255,170,118, 95,255,163,113, 91,255, +100, 68, 54,255,112, 97, 91,255,157,108, 85,255, 97, 66, 52,255, 91, 63, 51,255,202,152,139,255,206,158,151,255,179,132,115,255, +108, 85, 75,255,140, 96, 78,255,151,104, 84,255,145,100, 81,255,131, 90, 72,255,116, 79, 64,255,107, 73, 58,255,103, 70, 56,255, + 98, 66, 52,255, 93, 63, 50,255, 92, 63, 49,255, 99, 67, 53,255,108, 73, 58,255,132, 91, 73,255,163,113, 91,255,186,130,107,255, +191,135,113,255,172,120, 97,255,116, 79, 62,255, 80, 63, 55,255,172,121,100,255,200,152,141,255,196,145,129,255,119, 91, 79,255, + 60, 61, 61,255, 60, 60, 61,255,133,106, 98,255,189,133,109,255,173,120, 97,255,165,115, 93,255,166,116, 93,255,174,121, 99,255, +184,129,104,255,192,135,111,255,194,138,116,255,193,138,116,255,192,135,112,255,192,134,109,255,193,138,115,255,199,147,131,255, +205,157,147,255,204,155,144,255,194,141,123,255,176,122, 99,255,153,106, 85,255,130, 89, 72,255,107, 73, 58,255, 89, 60, 47,255, + 71, 47, 37,255, 54, 35, 26,255, 42, 27, 19,255, 53, 35, 26,255,122, 84, 68,255,193,145,133,255,216,175,174,255,220,183,187,255, +218,180,183,255,211,168,163,255,205,157,148,255,205,157,147,255,205,158,150,255,204,157,148,255,199,148,133,255,180,126,102,255, +172,119, 96,255,193,140,122,255,205,157,148,255,206,159,150,255,206,159,149,255,206,159,151,255,202,151,138,255,150,104, 84,255, +138, 95, 75,255,181,129,109,255,196,141,121,255,196,142,122,255,203,153,141,255,158,109, 88,255,124, 84, 67,255,176,124,104,255, +207,159,151,255,209,163,156,255,205,159,150,255,196,143,125,255,183,128,103,255,175,122, 99,255,171,119, 96,255,162,112, 90,255, + 99, 69, 56,255,120,103, 97,255,158,108, 86,255, 85, 58, 45,255,107, 74, 61,255,206,157,145,255,206,158,150,255,169,124,107,255, +108, 83, 73,255,146,101, 81,255,152,105, 85,255,144, 99, 81,255,130, 89, 72,255,116, 80, 64,255,109, 74, 59,255,105, 71, 57,255, +100, 67, 53,255, 94, 63, 50,255, 91, 62, 49,255, 94, 64, 50,255, 99, 67, 53,255,122, 84, 67,255,161,112, 90,255,188,133,110,255, +195,142,124,255,180,126,104,255,126, 85, 68,255, 91, 72, 65,255,173,120, 98,255,195,142,123,255,183,129,106,255,107, 82, 72,255, + 60, 61, 61,255, 60, 60, 60,255,137,113,109,255,199,145,129,255,181,126,102,255,168,117, 94,255,163,114, 91,255,168,117, 94,255, +178,124,100,255,189,132,107,255,194,137,116,255,196,140,121,255,194,139,117,255,192,135,110,255,188,131,107,255,188,131,107,255, +193,139,118,255,203,154,143,255,205,157,148,255,199,147,132,255,184,130,106,255,162,112, 91,255,139, 96, 77,255,117, 80, 64,255, + 98, 66, 53,255, 76, 51, 39,255, 59, 38, 29,255, 48, 30, 22,255, 53, 34, 25,255,117, 80, 63,255,187,137,121,255,213,170,167,255, +219,181,184,255,220,183,186,255,215,175,175,255,209,165,160,255,207,161,154,255,205,158,149,255,198,148,133,255,185,129,104,255, +184,128,104,255,198,146,129,255,204,156,145,255,206,158,147,255,206,157,147,255,206,157,148,255,204,153,140,255,159,110, 89,255, +141, 97, 79,255,181,128,108,255,197,142,122,255,196,140,119,255,203,153,140,255,162,112, 91,255,124, 85, 68,255,173,122,100,255, +205,158,149,255,209,163,156,255,207,159,152,255,198,146,130,255,187,131,107,255,178,124,100,255,172,120, 97,255,162,112, 90,255, + 97, 67, 54,255,124,105, 97,255,157,108, 86,255, 74, 49, 38,255,127, 90, 75,255,209,161,151,255,205,158,147,255,153,110, 93,255, +114, 87, 76,255,150,103, 84,255,153,106, 85,255,143, 99, 80,255,129, 89, 71,255,116, 80, 63,255,110, 76, 60,255,108, 73, 59,255, +101, 68, 54,255, 94, 63, 50,255, 90, 60, 48,255, 90, 60, 48,255, 91, 62, 49,255,114, 77, 62,255,159,111, 88,255,190,137,117,255, +198,148,135,255,186,132,111,255,132, 90, 72,255, 95, 75, 67,255,166,115, 92,255,182,126,103,255,163,113, 92,255, 92, 75, 68,255, + 61, 61, 61,255, 60, 60, 60,255,140,118,117,255,207,160,152,255,192,138,117,255,175,122, 98,255,165,114, 92,255,163,114, 92,255, +171,119, 96,255,182,127,103,255,192,136,113,255,197,142,124,255,197,143,125,255,194,139,118,255,191,133,109,255,185,129,105,255, +181,126,101,255,186,131,108,255,199,147,133,255,205,157,148,255,202,152,139,255,190,136,115,255,170,118, 96,255,148,102, 82,255, +126, 87, 69,255,102, 70, 55,255, 81, 54, 42,255, 63, 41, 32,255, 51, 32, 24,255, 55, 35, 27,255,113, 76, 60,255,180,130,112,255, +209,164,157,255,217,178,179,255,219,182,185,255,217,179,181,255,213,172,171,255,208,165,159,255,201,153,140,255,194,139,120,255, +195,141,122,255,201,150,137,255,204,155,144,255,204,155,144,255,203,154,143,255,204,155,145,255,204,154,141,255,167,115, 94,255, +145,100, 81,255,181,129,107,255,196,142,123,255,195,139,117,255,203,152,139,255,164,114, 93,255,124, 85, 67,255,171,120, 99,255, +205,157,147,255,208,162,156,255,206,160,152,255,199,149,134,255,190,134,111,255,180,126,102,255,173,120, 97,255,160,111, 90,255, +101, 74, 63,255,130,106, 95,255,154,105, 84,255, 64, 42, 32,255,151,108, 93,255,209,162,155,255,203,154,142,255,136, 98, 83,255, +123, 92, 79,255,154,107, 86,255,153,106, 86,255,142, 98, 79,255,127, 88, 71,255,116, 79, 63,255,112, 76, 61,255,109, 75, 59,255, +103, 70, 56,255, 95, 65, 51,255, 90, 60, 48,255, 86, 58, 45,255, 83, 56, 44,255,107, 72, 58,255,159,110, 88,255,195,143,127,255, +202,155,144,255,191,138,118,255,134, 92, 73,255, 95, 75, 67,255,150,103, 82,255,148,104, 83,255, 98, 70, 58,255, 40, 38, 38,255, + 61, 62, 62,255, 60, 60, 60,255,141,120,120,255,213,171,168,255,202,153,141,255,186,131,108,255,170,119, 96,255,163,114, 92,255, +165,115, 93,255,175,121, 98,255,187,131,107,255,196,141,121,255,199,146,130,255,198,145,128,255,195,139,118,255,190,132,108,255, +183,128,104,255,177,123, 99,255,177,123,100,255,192,139,120,255,204,155,144,255,204,155,144,255,195,142,123,255,177,123,100,255, +156,108, 87,255,131, 90, 73,255,106, 72, 57,255, 84, 56, 44,255, 68, 45, 35,255, 54, 35, 26,255, 59, 38, 30,255,110, 75, 59,255, +177,125,105,255,206,158,148,255,214,173,171,255,216,177,179,255,216,177,177,255,212,170,168,255,206,161,154,255,201,152,140,255, +200,149,136,255,202,152,139,255,203,153,142,255,203,153,140,255,202,152,139,255,203,153,140,255,203,152,138,255,168,117, 96,255, +150,104, 83,255,182,129,108,255,197,142,124,255,195,139,116,255,203,150,137,255,164,114, 94,255,123, 85, 67,255,171,120, 99,255, +204,156,145,255,208,162,154,255,206,160,151,255,201,150,137,255,192,136,114,255,183,128,104,255,175,121, 99,255,159,110, 88,255, +104, 79, 69,255,137,109, 96,255,148,101, 81,255, 60, 40, 32,255,174,127,110,255,210,164,157,255,199,148,132,255,117, 88, 76,255, +131, 94, 78,255,156,108, 87,255,153,105, 86,255,140, 96, 78,255,125, 85, 69,255,116, 80, 64,255,114, 78, 63,255,112, 76, 61,255, +104, 71, 57,255, 96, 65, 52,255, 90, 61, 47,255, 82, 55, 44,255, 75, 51, 39,255,101, 69, 54,255,165,115, 94,255,200,151,139,255, +205,159,151,255,193,142,124,255,131, 89, 70,255, 89, 72, 66,255, 65, 45, 37,255, 26, 19, 16,255, 2, 2, 1,255, 28, 28, 29,255, + 62, 62, 62,255, 60, 60, 60,255,141,121,121,255,217,176,176,255,210,166,161,255,198,145,129,255,181,126,103,255,167,116, 94,255, +163,113, 91,255,167,116, 94,255,179,124,101,255,192,136,113,255,198,145,129,255,200,150,136,255,198,146,130,255,195,140,119,255, +189,132,108,255,182,127,103,255,170,118, 96,255,167,116, 94,255,184,131,110,255,202,153,140,255,205,158,149,255,198,146,130,255, +183,128,105,255,161,111, 90,255,135, 93, 74,255,110, 74, 60,255, 89, 59, 47,255, 71, 47, 37,255, 58, 38, 29,255, 63, 42, 31,255, +111, 75, 60,255,173,121, 99,255,201,150,136,255,210,164,160,255,212,170,167,255,211,168,164,255,207,162,155,255,204,156,146,255, +202,153,140,255,201,152,140,255,202,151,138,255,201,150,136,255,201,149,133,255,202,150,137,255,200,149,134,255,166,115, 93,255, +156,108, 88,255,187,133,112,255,197,142,123,255,194,138,115,255,202,150,134,255,163,113, 92,255,123, 83, 67,255,172,121, 99,255, +203,155,144,255,207,162,154,255,206,160,151,255,201,151,138,255,194,139,118,255,186,129,104,255,175,123, 99,255,157,108, 86,255, +104, 83, 74,255,141,106, 91,255,139, 94, 75,255, 66, 46, 38,255,193,143,128,255,209,164,158,255,190,137,119,255,115, 95, 86,255, +140, 97, 78,255,159,110, 89,255,151,105, 84,255,137, 95, 76,255,123, 84, 67,255,116, 80, 64,255,117, 80, 64,255,114, 78, 63,255, +106, 73, 57,255, 97, 66, 52,255, 89, 59, 47,255, 79, 52, 41,255, 68, 45, 35,255, 98, 67, 53,255,179,127,107,255,204,158,150,255, +206,162,156,255,193,141,126,255,123, 84, 68,255, 36, 33, 32,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,139,117,115,255,217,177,177,255,215,174,173,255,207,161,154,255,193,139,118,255,176,122, 99,255, +165,114, 92,255,163,113, 91,255,170,119, 96,255,184,129,104,255,196,142,122,255,201,151,139,255,202,152,140,255,199,147,131,255, +195,140,119,255,189,132,107,255,180,125,102,255,166,116, 94,255,159,110, 88,255,173,121, 99,255,198,148,134,255,206,159,151,255, +200,150,136,255,187,133,111,255,165,114, 93,255,139, 96, 77,255,114, 78, 62,255, 93, 63, 50,255, 74, 49, 39,255, 61, 40, 31,255, + 67, 45, 34,255,111, 76, 60,255,166,115, 93,255,194,141,123,255,204,155,143,255,205,158,149,255,204,157,147,255,203,154,142,255, +202,151,138,255,201,150,135,255,200,148,132,255,199,146,128,255,199,145,127,255,200,147,131,255,198,146,129,255,166,115, 93,255, +162,112, 91,255,191,138,118,255,196,141,120,255,194,137,114,255,201,148,132,255,160,111, 90,255,123, 84, 67,255,174,122,101,255, +203,155,143,255,207,160,153,255,206,159,151,255,201,151,139,255,194,140,121,255,187,130,106,255,177,124,100,255,152,104, 83,255, +107, 90, 83,255,149,105, 87,255,124, 84, 67,255, 88, 68, 58,255,204,154,143,255,209,163,156,255,172,122,102,255,108, 90, 84,255, +151,104, 83,255,159,110, 89,255,148,103, 83,255,133, 92, 73,255,120, 82, 65,255,118, 80, 64,255,119, 81, 65,255,116, 80, 64,255, +108, 74, 59,255, 98, 67, 53,255, 88, 59, 46,255, 74, 50, 38,255, 58, 38, 29,255,113, 78, 62,255,192,139,121,255,207,163,158,255, +208,163,159,255,191,139,123,255,112, 81, 68,255, 0, 1, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 61, 61,255,126, 99, 89,255,211,167,163,255,217,177,179,255,214,172,171,255,204,156,146,255,189,133,111,255, +172,120, 96,255,163,113, 91,255,164,114, 92,255,174,121, 98,255,189,133,110,255,200,148,134,255,204,155,145,255,203,154,142,255, +199,148,132,255,194,138,117,255,187,130,105,255,177,124,100,255,164,114, 92,255,150,104, 84,255,161,111, 91,255,193,142,126,255, +206,160,153,255,203,154,143,255,192,138,118,255,170,118, 95,255,143, 99, 79,255,118, 81, 65,255, 97, 66, 52,255, 79, 53, 41,255, + 66, 44, 34,255, 74, 49, 38,255,112, 77, 61,255,157,108, 87,255,187,131,109,255,196,142,122,255,198,146,130,255,199,147,131,255, +199,146,129,255,198,144,126,255,197,143,123,255,196,140,119,255,196,140,118,255,198,144,126,255,197,143,125,255,167,115, 93,255, +167,116, 93,255,194,141,123,255,195,139,117,255,194,136,112,255,199,145,128,255,156,108, 87,255,122, 84, 67,255,177,125,104,255, +203,154,142,255,206,160,151,255,205,158,149,255,201,151,139,255,195,141,122,255,188,131,107,255,177,124,100,255,146, 99, 79,255, +110, 97, 92,255,160,109, 87,255,108, 72, 57,255,114, 84, 72,255,210,162,154,255,208,159,150,255,149,109, 92,255,116, 92, 81,255, +160,111, 89,255,158,110, 89,255,144,100, 80,255,128, 88, 71,255,118, 81, 64,255,119, 82, 66,255,122, 84, 67,255,119, 82, 65,255, +111, 75, 60,255, 99, 67, 53,255, 87, 59, 46,255, 70, 47, 36,255, 55, 36, 28,255,140, 97, 77,255,199,148,133,255,209,167,163,255, +207,163,158,255,183,132,113,255,100, 76, 66,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 61, 61, 61,255,100, 77, 68,255,184,133,114,255,215,174,172,255,218,178,179,255,212,170,168,255,201,150,137,255, +184,128,105,255,168,117, 95,255,162,112, 90,255,165,115, 94,255,179,125,101,255,194,140,120,255,203,155,144,255,206,159,151,255, +204,155,145,255,199,146,131,255,193,137,114,255,185,129,105,255,173,121, 98,255,159,110, 89,255,142, 99, 79,255,147,101, 81,255, +185,134,115,255,206,159,151,255,205,158,149,255,196,143,125,255,175,121, 99,255,147,102, 82,255,123, 85, 68,255,103, 70, 56,255, + 85, 57, 45,255, 73, 48, 38,255, 80, 53, 41,255,108, 74, 58,255,147,101, 82,255,174,121, 98,255,186,130,106,255,191,134,111,255, +192,136,113,255,192,135,111,255,191,134,109,255,191,134,109,255,192,135,110,255,197,141,120,255,190,135,114,255,166,116, 94,255, +174,121, 98,255,197,144,126,255,193,136,114,255,193,135,111,255,198,143,123,255,149,104, 83,255,125, 85, 67,255,180,128,107,255, +203,153,142,255,206,158,150,255,204,156,147,255,201,151,138,255,195,141,123,255,188,132,107,255,176,122, 99,255,137, 92, 73,255, +111, 93, 87,255,168,115, 92,255, 95, 68, 56,255,147,109, 95,255,211,166,160,255,203,153,140,255,123, 95, 83,255,131, 93, 77,255, +165,114, 92,255,156,108, 87,255,139, 96, 77,255,123, 85, 67,255,116, 79, 63,255,122, 84, 67,255,126, 87, 69,255,122, 84, 67,255, +112, 77, 61,255,100, 68, 54,255, 86, 58, 45,255, 64, 43, 33,255, 65, 43, 34,255,160,111, 90,255,203,155,144,255,210,167,164,255, +205,158,151,255,166,116, 96,255, 75, 61, 55,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 61, 61, 62,255, 82, 66, 58,255,138, 94, 75,255,195,145,131,255,217,177,177,255,217,178,179,255,211,167,163,255, +197,145,128,255,179,125,101,255,165,115, 93,255,161,112, 90,255,168,117, 95,255,185,129,106,255,200,148,133,255,207,161,154,255, +207,162,155,255,204,156,145,255,199,146,130,255,192,135,112,255,182,127,103,255,170,118, 96,255,155,107, 87,255,135, 93, 75,255, +134, 92, 73,255,170,122,103,255,203,155,145,255,208,162,155,255,199,148,133,255,179,126,104,255,152,105, 85,255,129, 89, 71,255, +110, 75, 60,255, 92, 62, 49,255, 81, 54, 42,255, 84, 57, 44,255,105, 72, 57,255,136, 94, 75,255,158,109, 88,255,171,119, 96,255, +177,123, 99,255,180,125,102,255,182,127,103,255,184,129,105,255,189,133,107,255,194,137,115,255,182,128,104,255,170,118, 95,255, +182,128,105,255,197,143,125,255,190,133,108,255,191,135,110,255,194,140,119,255,142, 98, 78,255,127, 88, 70,255,185,132,110,255, +202,153,141,255,204,157,148,255,204,156,145,255,200,150,136,255,195,141,122,255,188,132,108,255,174,121, 98,255,126, 88, 72,255, +126,100, 89,255,168,115, 93,255, 89, 65, 55,255,174,129,117,255,210,165,160,255,191,140,125,255,109, 90, 83,255,151,103, 82,255, +166,115, 93,255,152,106, 85,255,133, 92, 73,255,117, 80, 64,255,117, 80, 64,255,126, 87, 69,255,130, 90, 72,255,124, 85, 69,255, +114, 78, 62,255,101, 68, 55,255, 85, 57, 45,255, 60, 39, 30,255, 82, 56, 45,255,176,124,102,255,206,159,151,255,208,164,160,255, +196,147,133,255,145,100, 81,255, 47, 37, 33,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 61, 62, 62,255, 76, 60, 54,255,105, 71, 56,255,152,105, 86,255,203,156,146,255,218,179,180,255,216,177,178,255, +209,163,157,255,194,139,119,255,175,122, 98,255,163,113, 92,255,162,113, 91,255,172,120, 97,255,190,136,114,255,204,157,147,255, +210,166,161,255,209,164,158,255,204,156,145,255,198,145,128,255,190,134,109,255,179,125,101,255,168,116, 94,255,152,105, 85,255, +131, 90, 73,255,122, 84, 66,255,151,106, 87,255,198,147,133,255,209,164,158,255,202,154,142,255,185,131,109,255,158,109, 87,255, +134, 93, 74,255,118, 81, 64,255, 99, 67, 53,255, 89, 60, 47,255, 94, 63, 49,255,107, 73, 58,255,126, 86, 69,255,144, 99, 80,255, +157,109, 87,255,165,114, 93,255,172,120, 96,255,177,123,100,255,186,130,105,255,192,135,110,255,180,125,102,255,174,122, 99,255, +188,133,111,255,195,139,119,255,187,130,106,255,190,133,110,255,189,134,112,255,131, 90, 72,255,135, 93, 74,255,189,135,115,255, +202,152,140,255,203,155,145,255,202,153,142,255,198,148,134,255,194,140,120,255,186,130,106,255,169,117, 95,255,116, 84, 72,255, +141,102, 86,255,159,110, 88,255, 92, 68, 57,255,192,148,137,255,210,164,158,255,170,124,109,255,113, 89, 79,255,166,115, 92,255, +164,114, 92,255,146,102, 82,255,125, 86, 69,255,113, 77, 62,255,119, 82, 66,255,132, 91, 73,255,135, 93, 74,255,128, 87, 70,255, +115, 79, 63,255,101, 69, 55,255, 84, 56, 44,255, 59, 41, 33,255,103, 72, 59,255,185,131,109,255,204,157,148,255,202,155,145,255, +183,129,109,255,114, 80, 66,255, 17, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 61, 61, 62,255, 80, 64, 57,255, 94, 64, 50,255,116, 79, 63,255,168,119, 98,255,210,166,162,255,219,180,181,255, +215,175,175,255,206,159,151,255,190,135,113,255,172,120, 97,255,162,113, 91,255,164,113, 91,255,177,123, 99,255,197,143,126,255, +208,164,158,255,212,169,166,255,210,165,159,255,204,155,144,255,197,142,123,255,188,132,107,255,176,122, 99,255,164,114, 92,255, +149,103, 83,255,128, 88, 71,255,112, 77, 61,255,132, 91, 73,255,186,136,120,255,208,163,156,255,205,158,149,255,189,135,115,255, +163,114, 91,255,145,100, 81,255,127, 88, 70,255,108, 74, 59,255,103, 70, 56,255,105, 71, 57,255,112, 78, 62,255,128, 87, 70,255, +142, 98, 79,255,153,107, 86,255,164,115, 92,255,176,122, 99,255,188,131,106,255,189,132,109,255,178,125,100,255,180,125,102,255, +192,137,115,255,191,135,112,255,184,128,104,255,189,133,109,255,180,126,104,255,121, 82, 67,255,147,101, 81,255,192,138,118,255, +201,151,138,255,202,153,142,255,201,151,138,255,198,146,130,255,192,137,116,255,183,128,104,255,161,112, 89,255,106, 80, 69,255, +160,113, 92,255,144, 99, 80,255,105, 77, 66,255,203,158,152,255,207,160,152,255,149,112, 99,255,135, 97, 80,255,173,120, 96,255, +161,111, 90,255,137, 95, 77,255,116, 79, 63,255,111, 75, 60,255,125, 86, 69,255,138, 95, 77,255,138, 96, 77,255,130, 90, 72,255, +117, 80, 64,255,102, 69, 55,255, 81, 54, 42,255, 60, 42, 34,255,124, 87, 71,255,184,130,107,255,196,144,129,255,191,137,116,255, +159,111, 89,255, 71, 50, 42,255, 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 61, 61, 61,255,102, 80, 70,255,107, 72, 58,255,100, 67, 53,255,127, 87, 69,255,180,129,111,255,214,171,169,255, +219,181,183,255,215,174,174,255,203,156,145,255,186,131,109,255,169,118, 95,255,161,111, 90,255,165,115, 93,255,183,128,104,255, +202,152,140,255,212,169,167,255,213,171,169,255,210,165,160,255,203,154,142,255,195,140,120,255,185,128,104,255,173,120, 97,255, +161,112, 90,255,147,102, 82,255,126, 87, 69,255,108, 74, 59,255,118, 80, 63,255,166,120,102,255,204,157,147,255,208,162,155,255, +193,141,123,255,175,122, 99,255,160,110, 89,255,143, 99, 79,255,130, 90, 71,255,123, 84, 67,255,122, 83, 66,255,130, 90, 71,255, +141, 97, 78,255,154,107, 86,255,168,116, 94,255,182,128,103,255,191,134,110,255,185,129,105,255,182,127,103,255,188,132,108,255, +193,138,116,255,183,128,104,255,181,126,102,255,186,131,108,255,166,116, 94,255,113, 78, 62,255,162,112, 90,255,194,140,120,255, +200,149,136,255,201,150,138,255,199,148,134,255,196,143,125,255,191,134,112,255,179,124,101,255,146,101, 82,255,101, 72, 60,255, +172,120, 98,255,122, 84, 68,255,131,100, 91,255,208,164,158,255,199,152,142,255,128, 97, 83,255,157,109, 89,255,173,120, 97,255, +155,108, 87,255,127, 87, 70,255,107, 73, 58,255,113, 77, 61,255,134, 92, 74,255,145,100, 81,255,142, 99, 80,255,132, 91, 73,255, +119, 82, 65,255,102, 69, 55,255, 78, 52, 41,255, 67, 51, 43,255,132, 91, 74,255,170,119, 96,255,170,119, 98,255,138, 97, 79,255, + 75, 52, 43,255, 7, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 61,255,133,109,106,255,151,106, 87,255,106, 71, 57,255,107, 72, 58,255,138, 95, 76,255,188,138,121,255, +216,176,176,255,218,181,183,255,214,172,171,255,201,151,137,255,182,128,104,255,166,116, 93,255,160,111, 89,255,168,117, 94,255, +188,134,113,255,208,162,155,255,216,175,174,255,214,173,172,255,210,165,159,255,202,153,140,255,193,138,116,255,182,127,103,255, +170,118, 96,255,158,110, 88,255,145,100, 80,255,127, 87, 70,255,110, 75, 60,255,104, 71, 56,255,142, 99, 81,255,193,144,130,255, +209,165,159,255,201,151,139,255,189,135,115,255,172,119, 96,255,161,111, 89,255,156,108, 87,255,153,105, 85,255,154,107, 86,255, +160,111, 90,255,171,118, 96,255,183,128,104,255,190,133,110,255,191,134,109,255,186,130,106,255,187,131,106,255,193,138,115,255, +184,129,105,255,176,123,100,255,175,122, 99,255,186,130,106,255,147,102, 82,255,122, 83, 67,255,175,122, 99,255,195,141,122,255, +199,147,133,255,199,148,133,255,196,145,128,255,194,139,118,255,186,130,106,255,172,119, 96,255,126, 87, 70,255,116, 83, 68,255, +175,121, 98,255, 97, 68, 56,255,161,126,117,255,210,166,161,255,186,139,125,255,125, 93, 79,255,172,120, 97,255,170,118, 95,255, +146,101, 81,255,114, 78, 62,255,100, 68, 54,255,120, 83, 66,255,143, 99, 80,255,151,104, 84,255,146,101, 82,255,135, 93, 75,255, +121, 83, 66,255,102, 70, 56,255, 73, 48, 37,255, 72, 55, 48,255,105, 75, 62,255, 42, 30, 26,255, 25, 18, 15,255, 12, 9, 7,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,131,110,108,255,201,155,147,255,143, 98, 80,255,108, 74, 59,255,112, 77, 62,255,148,101, 82,255, +196,148,135,255,218,179,180,255,219,181,183,255,213,170,168,255,198,147,132,255,179,125,101,255,163,113, 92,255,160,111, 90,255, +171,119, 96,255,194,142,125,255,212,170,167,255,217,178,179,255,215,174,174,255,210,164,159,255,202,150,137,255,192,136,112,255, +179,125,101,255,168,117, 94,255,155,108, 87,255,143, 98, 79,255,127, 87, 70,255,112, 77, 61,255, 98, 66, 52,255,119, 81, 63,255, +172,125,107,255,207,162,155,255,207,162,155,255,199,149,135,255,188,133,112,255,183,129,105,255,182,127,105,255,184,128,104,255, +187,131,106,255,189,134,111,255,192,137,115,255,192,137,115,255,191,134,110,255,190,133,108,255,192,135,112,255,185,129,106,255, +172,120, 97,255,171,119, 96,255,172,120, 97,255,182,128,104,255,127, 88, 70,255,143, 98, 79,255,184,128,104,255,195,141,120,255, +196,144,128,255,196,144,126,255,194,140,121,255,190,134,110,255,180,126,102,255,158,110, 88,255, 98, 68, 54,255,145,102, 83,255, +162,112, 90,255, 84, 63, 54,255,191,148,139,255,210,164,158,255,161,117,100,255,135, 99, 83,255,179,125,101,255,164,114, 92,255, +131, 91, 72,255, 99, 67, 53,255,101, 68, 54,255,133, 91, 74,255,153,106, 85,255,156,109, 88,255,150,104, 84,255,139, 96, 77,255, +123, 85, 68,255,103, 69, 55,255, 67, 44, 34,255, 75, 61, 56,255, 41, 34, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,140,120,120,255,202,161,159,255,193,148,138,255,138, 95, 77,255,110, 75, 59,255,120, 82, 65,255, +158,109, 89,255,202,156,146,255,220,182,185,255,219,181,184,255,211,169,165,255,196,143,127,255,175,122, 99,255,162,112, 91,255, +160,111, 89,255,175,122, 98,255,200,150,135,255,216,176,175,255,218,180,181,255,215,174,174,255,209,164,158,255,201,149,134,255, +190,133,110,255,177,123,100,255,165,115, 92,255,153,106, 86,255,142, 98, 78,255,127, 87, 70,255,114, 78, 62,255, 99, 67, 53,255, + 99, 67, 52,255,136, 95, 79,255,185,138,125,255,205,157,147,255,207,159,151,255,203,154,143,255,200,149,136,255,198,145,129,255, +198,145,129,255,197,145,129,255,196,143,125,255,194,140,120,255,194,137,115,255,190,134,111,255,179,125,102,255,165,115, 92,255, +164,114, 92,255,162,112, 90,255,182,127,103,255,164,114, 92,255,125, 86, 69,255,163,113, 91,255,188,131,107,255,193,139,118,255, +195,140,121,255,193,139,119,255,191,135,111,255,185,129,104,255,172,119, 97,255,134, 92, 74,255, 93, 63, 51,255,174,121, 98,255, +131, 89, 71,255,105, 83, 76,255,209,163,156,255,204,155,145,255,128, 94, 79,255,160,113, 94,255,180,125,101,255,154,107, 86,255, +113, 77, 62,255, 86, 59, 46,255,112, 76, 61,255,146,101, 82,255,159,111, 89,255,160,111, 90,255,153,106, 86,255,143,100, 80,255, +127, 87, 70,255,102, 69, 54,255, 68, 50, 43,255, 50, 35, 28,255, 11, 8, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,142,121,121,255,217,178,179,255,197,157,153,255,188,142,130,255,132, 91, 73,255,113, 77, 62,255, +125, 86, 68,255,164,115, 94,255,206,161,153,255,220,183,187,255,219,181,183,255,210,166,162,255,193,139,121,255,171,119, 96,255, +160,110, 90,255,161,112, 90,255,180,126,103,255,205,158,149,255,218,181,182,255,218,180,183,255,215,174,174,255,209,163,158,255, +199,148,133,255,188,132,109,255,175,122, 99,255,163,113, 91,255,151,105, 85,255,140, 96, 78,255,127, 87, 71,255,115, 79, 63,255, +102, 69, 55,255, 92, 62, 49,255,101, 69, 55,255,139, 96, 79,255,172,124,105,255,199,149,135,255,204,154,142,255,202,153,140,255, +201,150,137,255,199,147,132,255,196,141,122,255,191,135,113,255,182,127,104,255,168,117, 95,255,156,108, 87,255,157,109, 87,255, +153,106, 86,255,169,118, 95,255,183,128,103,255,140, 96, 77,255,142, 97, 79,255,176,122, 99,255,189,132,107,255,192,136,113,255, +192,136,114,255,190,133,109,255,186,130,105,255,177,124,101,255,158,109, 88,255,105, 72, 57,255,137, 95, 76,255,177,123,100,255, + 93, 66, 53,255,156,120,109,255,214,168,163,255,181,131,114,255,119, 94, 83,255,182,125,102,255,176,122, 99,255,139, 96, 76,255, + 90, 61, 48,255, 87, 58, 46,255,131, 90, 72,255,155,108, 87,255,163,113, 91,255,163,113, 91,255,158,109, 88,255,148,103, 82,255, +131, 91, 73,255, 97, 65, 51,255, 64, 51, 45,255, 41, 26, 20,255, 4, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,142,120,120,255,217,176,176,255,214,176,178,255,202,162,159,255,182,133,117,255,130, 90, 71,255, +115, 79, 63,255,130, 89, 72,255,171,120,100,255,210,167,162,255,220,183,187,255,219,181,183,255,209,164,158,255,190,136,115,255, +169,117, 95,255,158,109, 88,255,161,112, 91,255,182,130,108,255,209,165,161,255,219,182,185,255,218,180,183,255,215,175,175,255, +209,163,157,255,199,147,131,255,187,132,107,255,174,121, 98,255,162,113, 91,255,150,104, 84,255,138, 96, 77,255,128, 87, 70,255, +116, 79, 63,255,105, 71, 56,255, 93, 63, 50,255, 88, 59, 46,255, 95, 64, 51,255,116, 78, 62,255,149,104, 84,255,164,114, 92,255, +167,117, 95,255,170,119, 97,255,167,116, 93,255,154,106, 85,255,142, 97, 79,255,140, 96, 77,255,143, 99, 80,255,142, 98, 80,255, +155,108, 88,255,183,127,103,255,161,111, 90,255,132, 91, 73,255,163,114, 91,255,181,126,102,255,187,131,106,255,189,132,107,255, +188,131,107,255,186,129,104,255,179,125,101,255,167,117, 94,255,138, 95, 77,255,120, 82, 66,255,171,120, 96,255,159,110, 88,255, + 86, 66, 58,255,198,151,140,255,210,162,154,255,137,102, 88,255,145,104, 87,255,190,133,108,255,166,116, 94,255,116, 79, 63,255, + 73, 48, 38,255,107, 73, 58,255,144,100, 80,255,158,109, 88,255,163,113, 91,255,167,115, 93,255,166,115, 93,255,156,108, 87,255, +137, 94, 76,255, 88, 61, 50,255, 52, 34, 27,255, 23, 16, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,143,124,125,255,217,177,177,255,215,175,175,255,209,171,171,255,202,162,159,255,180,132,117,255, +130, 89, 70,255,117, 80, 64,255,134, 92, 73,255,176,126,107,255,213,170,169,255,221,185,190,255,219,181,183,255,208,162,156,255, +187,134,113,255,166,115, 93,255,156,108, 87,255,163,113, 90,255,186,134,115,255,212,171,168,255,220,183,187,255,218,180,183,255, +216,176,177,255,209,164,158,255,199,147,131,255,187,132,108,255,174,121, 97,255,162,112, 90,255,149,104, 84,255,139, 96, 77,255, +129, 88, 71,255,117, 80, 65,255,108, 73, 59,255, 99, 67, 53,255, 92, 63, 49,255, 90, 61, 48,255, 91, 61, 48,255,100, 67, 54,255, +107, 73, 58,255,109, 75, 59,255,113, 77, 62,255,118, 81, 65,255,123, 85, 67,255,128, 88, 71,255,133, 92, 75,255,151,105, 86,255, +178,124,100,255,170,119, 96,255,138, 95, 77,255,152,105, 85,255,175,121, 98,255,183,127,103,255,186,130,105,255,186,130,105,255, +184,128,104,255,180,125,102,255,172,120, 97,255,156,108, 87,255,133, 92, 74,255,154,106, 86,255,179,124,101,255,127, 88, 71,255, +126, 96, 86,255,212,165,158,255,190,142,129,255,117, 90, 79,255,183,128,104,255,187,132,108,255,151,104, 84,255, 86, 58, 46,255, + 83, 58, 47,255,128, 88, 71,255,144, 99, 80,255,153,106, 86,255,169,117, 95,255,180,125,101,255,178,124,100,255,167,116, 94,255, +135, 93, 75,255, 76, 55, 46,255, 43, 29, 22,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,143,124,125,255,221,183,186,255,214,175,174,255,216,176,176,255,209,171,173,255,193,154,150,255, +175,127,111,255,128, 88, 70,255,118, 81, 65,255,136, 94, 75,255,178,127,108,255,214,173,171,255,221,185,190,255,219,181,184,255, +207,162,155,255,185,131,110,255,163,113, 91,255,154,107, 87,255,163,113, 91,255,189,137,118,255,214,174,173,255,219,181,185,255, +218,181,183,255,217,178,178,255,210,165,160,255,200,149,134,255,188,133,110,255,174,122, 98,255,164,114, 92,255,154,106, 86,255, +143, 99, 79,255,132, 91, 74,255,123, 84, 67,255,114, 78, 62,255,108, 73, 59,255,102, 69, 55,255, 99, 67, 54,255, 98, 66, 53,255, + 99, 67, 53,255,103, 70, 56,255,108, 74, 59,255,113, 77, 62,255,120, 82, 65,255,134, 91, 73,255,155,108, 87,255,177,123,100,255, +175,121, 98,255,148,102, 82,255,150,104, 84,255,169,117, 95,255,178,125,101,255,182,127,103,255,184,128,104,255,182,127,103,255, +180,125,102,255,174,121, 98,255,165,114, 92,255,149,104, 83,255,150,103, 83,255,173,120, 98,255,170,118, 95,255,104, 76, 63,255, +174,133,120,255,209,164,158,255,153,115,103,255,147,106, 87,255,195,140,120,255,180,126,104,255,123, 83, 66,255, 79, 60, 53,255, +115, 81, 66,255,130, 90, 72,255,139, 96, 77,255,163,113, 92,255,186,131,108,255,193,139,120,255,190,135,113,255,173,120, 98,255, +123, 85, 70,255, 61, 44, 37,255, 7, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,142,122,123,255,220,183,186,255,219,182,185,255,214,173,172,255,217,178,178,255,206,169,170,255, +200,160,156,255,169,120,102,255,127, 87, 70,255,119, 82, 65,255,137, 95, 76,255,180,130,111,255,214,174,173,255,221,185,189,255, +219,181,184,255,206,160,152,255,183,129,107,255,161,112, 91,255,153,107, 86,255,163,112, 90,255,190,139,121,255,215,175,175,255, +218,180,182,255,218,180,183,255,218,178,180,255,211,168,164,255,202,151,138,255,191,135,113,255,179,125,101,255,167,116, 94,255, +157,109, 88,255,147,102, 82,255,138, 95, 77,255,131, 90, 72,255,123, 85, 68,255,118, 81, 65,255,114, 78, 62,255,112, 76, 61,255, +113, 77, 61,255,115, 79, 63,255,120, 83, 66,255,132, 91, 73,255,147,102, 81,255,163,113, 91,255,177,124,100,255,176,122, 99,255, +155,108, 87,255,152,106, 86,255,168,117, 94,255,175,121, 99,255,180,125,101,255,180,126,102,255,181,126,102,255,179,125,101,255, +176,122, 99,255,169,118, 95,255,160,111, 89,255,155,107, 87,255,167,116, 94,255,177,124,101,255,148,103, 83,255,112, 84, 73,255, +200,156,149,255,198,152,142,255,131, 97, 83,255,183,132,112,255,196,142,124,255,165,114, 92,255, 91, 66, 54,255,110, 81, 69,255, +126, 86, 69,255,124, 85, 69,255,141, 98, 79,255,177,124,101,255,195,144,128,255,199,150,140,255,194,140,124,255,164,113, 91,255, + 92, 65, 53,255, 14, 10, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,143,124,126,255,219,181,184,255,220,183,187,255,218,181,184,255,214,173,173,255,216,176,177,255, +203,168,169,255,196,157,153,255,171,124,106,255,127, 86, 68,255,119, 82, 66,255,137, 95, 75,255,179,130,113,255,215,174,173,255, +221,186,191,255,219,182,185,255,207,160,152,255,182,129,107,255,160,110, 89,255,152,105, 85,255,162,112, 90,255,190,140,123,255, +215,176,176,255,218,180,182,255,218,180,182,255,218,181,183,255,213,171,169,255,205,156,146,255,195,141,122,255,184,129,105,255, +174,121, 98,255,166,116, 93,255,158,110, 89,255,151,105, 84,255,145,100, 81,255,141, 98, 78,255,139, 96, 77,255,138, 96, 77,255, +140, 97, 78,255,144,100, 80,255,153,106, 86,255,162,113, 91,255,173,121, 98,255,180,125,102,255,174,121, 98,255,160,111, 89,255, +158,110, 89,255,168,116, 94,255,173,121, 98,255,178,124,100,255,179,125,101,255,179,125,101,255,179,124,101,255,176,123, 99,255, +172,120, 97,255,167,116, 94,255,163,113, 91,255,167,116, 94,255,175,122, 99,255,171,119, 96,255,116, 81, 66,255,148,115,106,255, +209,164,157,255,169,124,109,255,144,106, 90,255,197,147,133,255,190,136,116,255,137, 95, 77,255,103, 74, 62,255,127, 87, 69,255, +120, 82, 65,255,118, 81, 65,255,152,105, 85,255,185,130,108,255,198,146,130,255,197,146,130,255,178,127,106,255,109, 77, 64,255, + 23, 18, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,144,125,127,255,221,184,187,255,219,182,186,255,220,184,188,255,218,181,184,255,215,175,175,255, +216,177,178,255,204,169,171,255,190,152,148,255,168,121,103,255,126, 86, 69,255,119, 81, 65,255,136, 93, 75,255,177,126,106,255, +213,172,171,255,220,184,189,255,219,182,186,255,207,162,155,255,182,128,107,255,159,111, 89,255,150,104, 84,255,160,111, 89,255, +188,136,117,255,214,173,172,255,215,177,178,255,216,178,180,255,220,183,186,255,215,175,175,255,208,162,156,255,200,149,134,255, +193,138,118,255,185,129,105,255,177,124,100,255,173,120, 97,255,170,118, 96,255,167,116, 93,255,165,115, 93,255,165,115, 93,255, +169,117, 95,255,175,121, 99,255,179,125,101,255,183,128,104,255,183,128,103,255,173,121, 98,255,165,115, 93,255,165,115, 93,255, +169,118, 95,255,173,121, 98,255,176,122, 99,255,178,124,100,255,178,124,100,255,178,124,101,255,176,122, 99,255,174,121, 98,255, +171,118, 96,255,168,117, 94,255,169,118, 95,255,173,120, 98,255,175,122, 99,255,148,102, 81,255, 97, 75, 65,255,193,149,139,255, +204,154,143,255,128, 96, 82,255,182,135,120,255,201,151,138,255,178,125,102,255,117, 83, 68,255,126, 87, 70,255,123, 85, 68,255, +108, 74, 59,255,123, 84, 68,255,146,102, 82,255,115, 82, 68,255, 84, 62, 53,255, 67, 49, 42,255, 28, 20, 17,255, 6, 4, 4,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 60, 60, 60,255,137,118,118,255,220,183,186,255,219,183,187,255,219,183,187,255,220,183,188,255,219,181,185,255, +216,177,177,255,218,179,180,255,206,171,173,255,197,158,155,255,166,119,101,255,126, 86, 69,255,117, 80, 64,255,132, 91, 73,255, +173,123,104,255,211,169,167,255,220,183,186,255,219,182,186,255,208,163,156,255,182,128,107,255,159,110, 89,255,150,104, 84,255, +158,110, 88,255,185,134,115,255,213,171,170,255,214,175,175,255,215,177,178,255,220,184,187,255,217,178,180,255,211,168,165,255, +205,158,150,255,200,148,133,255,195,140,122,255,193,137,116,255,189,133,110,255,187,132,109,255,188,132,109,255,189,133,110,255, +190,133,110,255,189,133,109,255,188,131,107,255,183,128,103,255,175,122, 99,255,171,119, 96,255,171,118, 96,255,172,120, 97,255, +174,121, 98,255,175,121, 98,255,176,123, 99,255,177,123,100,255,177,123, 99,255,176,122, 99,255,174,121, 98,255,173,120, 97,255, +171,119, 97,255,171,119, 97,255,173,121, 97,255,174,121, 98,255,164,113, 92,255,108, 76, 62,255,143,112,101,255,213,164,157,255, +162,120,105,255,147,110, 96,255,205,156,146,255,198,145,129,255,158,110, 88,255,118, 84, 69,255,128, 88, 71,255,111, 76, 61,255, +105, 71, 57,255,101, 71, 57,255, 19, 14, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 61, 61, 61,255, 58, 52, 50,255,170,136,134,255,223,185,189,255,220,184,188,255,219,183,187,255,219,183,187,255, +219,183,186,255,217,179,180,255,217,178,179,255,208,172,175,255,194,157,153,255,172,125,109,255,128, 87, 69,255,116, 79, 63,255, +129, 88, 70,255,166,118, 98,255,207,162,156,255,220,183,187,255,219,182,187,255,211,167,163,255,185,133,114,255,160,111, 89,255, +149,103, 83,255,156,107, 86,255,180,129,109,255,208,164,159,255,215,176,177,255,213,173,173,255,219,182,185,255,219,182,185,255, +214,173,171,255,208,164,159,255,203,156,147,255,200,151,138,255,198,146,131,255,197,145,129,255,196,143,125,255,194,140,120,255, +192,136,114,255,188,132,108,255,183,128,104,255,178,124,101,255,176,122, 99,255,174,121, 98,255,174,121, 98,255,174,121, 98,255, +175,122, 99,255,175,122, 99,255,176,122, 99,255,176,122, 99,255,175,122, 99,255,174,121, 98,255,173,120, 98,255,172,120, 97,255, +172,120, 96,255,173,120, 97,255,173,121, 98,255,169,118, 95,255,135, 93, 75,255,109, 83, 73,255,199,152,141,255,195,148,138,255, +140,105, 91,255,199,151,139,255,205,158,149,255,187,133,111,255,131, 92, 76,255,127, 89, 72,255,117, 79, 63,255, 98, 67, 53,255, + 62, 43, 35,255, 7, 6, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 28, 29, 29,255, 4, 3, 2,255,147,119,117,255,222,184,187,255,220,183,188,255,219,183,187,255, +219,182,186,255,219,183,186,255,218,180,183,255,217,178,179,255,215,177,180,255,193,157,155,255,174,128,112,255,129, 89, 71,255, +114, 78, 63,255,123, 84, 68,255,155,107, 88,255,200,153,143,255,218,180,182,255,218,181,184,255,213,172,170,255,189,137,118,255, +162,112, 90,255,150,103, 84,255,154,106, 86,255,173,122,101,255,203,156,146,255,215,177,178,255,210,168,166,255,216,178,180,255, +220,183,186,255,215,176,176,255,209,165,162,255,204,158,149,255,200,150,138,255,197,145,129,255,194,140,121,255,190,134,112,255, +187,131,107,255,183,128,104,255,180,125,101,255,177,123,100,255,176,122, 99,255,174,122, 98,255,174,121, 97,255,174,121, 97,255, +174,121, 98,255,174,121, 98,255,174,121, 98,255,174,121, 98,255,173,121, 98,255,173,120, 98,255,172,120, 97,255,172,119, 97,255, +173,120, 97,255,173,121, 98,255,171,118, 96,255,151,105, 85,255,105, 77, 64,255,168,127,114,255,208,161,154,255,162,120,105,255, +185,140,127,255,209,165,159,255,200,149,135,255,162,112, 91,255,121, 88, 74,255,122, 84, 66,255, 97, 67, 53,255, 31, 22, 18,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255,124,101,100,255,214,177,180,255,220,184,188,255, +218,181,185,255,218,181,184,255,219,182,186,255,219,181,184,255,217,178,179,255,215,178,180,255,201,165,165,255,179,132,118,255, +135, 93, 75,255,115, 78, 63,255,119, 81, 65,255,145,100, 80,255,190,144,131,255,214,174,174,255,218,180,183,255,215,175,176,255, +195,145,130,255,168,117, 94,255,152,104, 84,255,150,104, 84,255,167,116, 94,255,195,147,134,255,213,173,172,255,209,168,166,255, +213,173,173,255,217,180,182,255,215,176,177,255,208,166,161,255,203,155,145,255,197,146,130,255,193,138,117,255,189,132,107,255, +184,128,104,255,181,126,102,255,178,124,100,255,176,122, 99,255,174,121, 98,255,173,120, 97,255,173,120, 97,255,172,120, 97,255, +172,119, 97,255,172,119, 97,255,172,119, 97,255,172,119, 97,255,172,119, 97,255,171,119, 96,255,172,120, 97,255,173,120, 98,255, +172,120, 97,255,171,119, 96,255,157,109, 87,255,115, 80, 64,255,129, 97, 84,255,204,157,148,255,192,145,133,255,167,126,112,255, +209,165,160,255,206,159,152,255,183,130,111,255,129, 92, 76,255,123, 85, 69,255, 80, 55, 45,255, 6, 4, 4,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 72, 58, 57,255,195,158,159,255, +221,183,186,255,219,182,185,255,218,180,183,255,218,180,183,255,219,181,184,255,218,180,182,255,215,177,179,255,206,170,170,255, +184,141,131,255,145,101, 82,255,116, 79, 63,255,114, 78, 62,255,134, 91, 73,255,174,127,110,255,208,165,160,255,216,177,179,255, +216,176,177,255,202,156,146,255,175,123,102,255,154,106, 86,255,150,104, 83,255,160,111, 89,255,184,133,114,255,207,161,155,255, +211,170,169,255,208,166,163,255,212,172,170,255,215,176,176,255,210,167,163,255,202,155,144,255,196,143,126,255,190,134,111,255, +185,129,104,255,181,126,102,255,178,124,100,255,175,122, 99,255,173,121, 98,255,172,120, 97,255,172,119, 97,255,171,119, 96,255, +171,119, 96,255,171,119, 96,255,171,119, 96,255,171,119, 97,255,172,119, 97,255,173,120, 97,255,173,120, 98,255,173,121, 97,255, +170,118, 96,255,157,108, 88,255,117, 83, 68,255,113, 83, 71,255,192,145,132,255,203,154,143,255,166,124,110,255,205,162,157,255, +210,165,160,255,194,143,127,255,150,105, 85,255,114, 81, 66,255, 49, 34, 27,255, 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 16, 13, 12,255, +141,114,112,255,216,177,179,255,217,179,182,255,216,179,181,255,216,178,180,255,217,179,181,255,218,180,182,255,216,177,178,255, +210,172,174,255,192,151,145,255,158,111, 92,255,120, 82, 65,255,112, 76, 61,255,123, 84, 68,255,155,108, 89,255,199,153,144,255, +211,171,172,255,214,174,175,255,209,166,162,255,185,133,112,255,161,111, 89,255,151,105, 83,255,154,107, 87,255,172,120, 99,255, +197,146,132,255,211,170,168,255,207,165,162,255,205,162,156,255,211,169,167,255,210,168,165,255,205,159,151,255,198,147,133,255, +192,137,116,255,186,130,106,255,182,127,103,255,179,125,101,255,176,122, 99,255,175,122, 99,255,174,121, 98,255,173,121, 98,255, +173,120, 97,255,173,120, 98,255,173,120, 98,255,174,121, 98,255,175,121, 98,255,174,121, 98,255,173,121, 97,255,169,117, 94,255, +153,106, 85,255,117, 82, 66,255,123, 89, 74,255,190,139,123,255,205,155,144,255,168,125,111,255,205,163,158,255,210,165,161,255, +200,150,137,255,157,110, 89,255, 97, 72, 61,255, 12, 9, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 58, 45, 43,255,167,134,133,255,208,170,171,255,217,178,179,255,216,176,177,255,214,174,175,255,216,177,179,255, +216,177,178,255,213,176,177,255,199,160,159,255,172,126,111,255,132, 92, 73,255,112, 77, 61,255,115, 79, 63,255,137, 94, 74,255, +180,132,116,255,203,161,156,255,209,170,170,255,211,170,170,255,195,147,132,255,171,121, 99,255,154,106, 86,255,151,105, 84,255, +162,111, 89,255,181,128,108,255,201,154,144,255,208,165,160,255,204,159,152,255,204,159,152,255,206,162,155,255,205,160,153,255, +201,154,143,255,197,146,131,255,193,139,119,255,189,133,111,255,186,130,106,255,183,128,104,255,181,126,103,255,180,126,102,255, +180,125,102,255,179,125,101,255,179,124,101,255,178,124,101,255,176,123, 99,255,171,119, 96,255,160,111, 90,255,141, 97, 78,255, +121, 84, 68,255,136, 96, 79,255,188,135,116,255,200,150,135,255,181,134,119,255,192,149,140,255,207,160,152,255,198,150,138,255, +137, 97, 82,255, 48, 36, 31,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 1, 1, 1,255, 53, 42, 41,255,119, 96, 94,255,200,161,159,255,216,176,175,255,214,173,172,255, +210,170,168,255,213,172,172,255,215,175,176,255,207,168,167,255,184,142,133,255,152,107, 90,255,119, 81, 63,255,110, 75, 60,255, +122, 83, 65,255,152,107, 89,255,186,139,127,255,204,161,157,255,204,164,162,255,204,160,154,255,187,136,119,255,163,113, 91,255, +153,106, 85,255,154,107, 85,255,165,115, 93,255,183,131,111,255,197,147,134,255,204,157,148,255,203,156,148,255,200,152,142,255, +198,148,135,255,196,146,132,255,196,145,129,255,195,142,125,255,193,139,119,255,191,135,113,255,189,132,108,255,186,130,105,255, +183,128,104,255,180,126,101,255,175,122, 99,255,167,117, 94,255,157,109, 88,255,145,101, 81,255,137, 95, 77,255,141, 98, 79,255, +164,114, 92,255,188,131,108,255,197,142,122,255,179,131,114,255,182,131,113,255,201,150,135,255,196,146,132,255, 89, 65, 55,255, + 6, 5, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 1,255, 8, 7, 6,255, 73, 58, 55,255,168,133,130,255, +212,169,165,255,208,165,160,255,206,161,155,255,207,165,161,255,211,170,168,255,197,157,154,255,172,126,112,255,134, 92, 74,255, +113, 77, 62,255,112, 76, 61,255,126, 87, 69,255,159,111, 93,255,191,145,134,255,189,149,144,255,198,159,155,255,202,155,145,255, +178,125,105,255,160,110, 89,255,152,105, 85,255,153,106, 85,255,162,112, 91,255,175,123,100,255,189,136,116,255,196,146,131,255, +199,149,136,255,196,144,129,255,191,136,116,255,186,131,107,255,182,127,103,255,178,124,100,255,174,121, 98,255,171,119, 96,255, +167,116, 94,255,162,113, 91,255,157,109, 88,255,155,108, 87,255,155,109, 88,255,162,112, 91,255,169,118, 95,255,177,122, 99,255, +183,127,103,255,187,132,108,255,168,121,102,255,178,126,102,255,193,138,116,255,187,137,119,255, 53, 39, 33,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 19, 14, 13,255,100, 77, 73,255,147,114,107,255,169,130,121,255,181,137,127,255,196,153,144,255,200,157,150,255,187,144,132,255, +158,114, 97,255,129, 89, 72,255,112, 76, 60,255,111, 76, 61,255,128, 88, 69,255,162,116, 97,255,178,134,121,255,186,147,140,255, +199,158,152,255,192,145,131,255,177,126,106,255,161,112, 90,255,152,105, 84,255,149,103, 83,255,153,106, 85,255,161,111, 89,255, +170,118, 95,255,178,125,103,255,182,129,107,255,184,130,108,255,184,129,106,255,183,127,104,255,181,126,102,255,179,124,100,255, +176,123, 99,255,175,122, 98,255,173,121, 97,255,173,120, 97,255,172,119, 96,255,171,119, 96,255,173,120, 97,255,175,122, 99,255, +172,121, 99,255,160,114, 94,255,174,121, 98,255,184,130,106,255,143,103, 87,255, 22, 16, 13,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 16, 13, 11,255, 35, 26, 24,255, 55, 41, 37,255, 76, 57, 51,255,113, 86, 79,255, +139,107, 97,255,161,123,110,255,160,118,102,255,132, 90, 72,255,111, 75, 59,255,109, 75, 59,255,122, 83, 66,255,144,100, 83,255, +162,118,102,255,183,139,127,255,192,151,140,255,192,149,138,255,184,135,117,255,170,118, 97,255,156,107, 85,255,149,102, 81,255, +146,101, 81,255,147,102, 82,255,149,103, 83,255,152,105, 85,255,155,108, 87,255,157,109, 88,255,159,110, 89,255,159,111, 89,255, +159,110, 89,255,159,111, 89,255,160,110, 89,255,164,113, 91,255,168,117, 94,255,169,121,100,255,158,114, 96,255,149,105, 85,255, +156,109, 88,255,176,122, 99,255,160,112, 93,255, 67, 48, 41,255, 8, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 1, 0, 0,255, 1, 1, 1,255, 1, 1, 1,255, 91, 71, 65,255,151,110, 95,255,134, 92, 74,255,114, 78, 63,255,108, 73, 59,255, +110, 75, 60,255,120, 82, 65,255,137, 94, 76,255,156,111, 92,255,173,131,115,255,185,143,131,255,190,144,129,255,185,134,116,255, +173,121, 99,255,164,114, 92,255,158,110, 88,255,154,107, 86,255,152,105, 85,255,153,106, 85,255,155,107, 86,255,157,108, 87,255, +161,111, 90,255,166,115, 94,255,167,120,100,255,158,118,101,255,140,104, 89,255,133, 95, 77,255,145,100, 80,255,164,114, 92,255, +171,122,100,255, 73, 54, 47,255, 4, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 61, 49, 45,255, 97, 70, 59,255,118, 84, 70,255, +117, 82, 67,255,121, 84, 69,255,111, 76, 60,255,106, 72, 56,255,108, 72, 57,255,112, 75, 58,255,119, 82, 65,255,128, 94, 79,255, +139,104, 91,255,148,112, 98,255,152,112, 96,255,154,115, 99,255,152,112, 94,255,148,109, 92,255,146,108, 92,255,141,105, 90,255, +133, 99, 85,255,126, 93, 79,255,124, 88, 72,255,131, 90, 72,255,134, 93, 76,255,131, 92, 75,255,115, 83, 70,255, 56, 43, 37,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 12, 10, 10,255, + 30, 22, 19,255, 49, 36, 31,255, 76, 57, 49,255,100, 73, 63,255,117, 85, 72,255,128, 92, 77,255,128, 91, 76,255,124, 85, 70,255, +118, 81, 65,255,114, 77, 61,255,113, 76, 60,255,114, 78, 62,255,117, 81, 65,255,122, 85, 69,255,128, 90, 75,255,125, 90, 74,255, +111, 80, 67,255,101, 73, 63,255, 71, 52, 45,255, 47, 34, 28,255, 32, 24, 21,255, 13, 10, 10,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 2, 2, 2,255, 13, 11, 11,255, + 25, 21, 20,255, 36, 31, 29,255, 36, 30, 28,255, 28, 24, 22,255, 23, 19, 18,255, 8, 7, 7,255, 1, 1, 1,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, + 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, + 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0,248,146, 99, 7, 31, 0, 0, 0, 1, 0, 0, 0, 80, 54,100, 7,160,239, 98, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, 46,112,105,110, 99,104, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, + 92, 46,105, 46,112,105,110, 99,104, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,148, 99, 7, 0, 0, 0, 0, +255, 81, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,248,148, 99, 7, + 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, +128,149, 99, 7,232,165, 99, 7, 68, 65, 84, 65, 0, 16, 0, 0,128,149, 99, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, + 60, 61, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 62, 62, 61,255, 60, 61, 61,255, +165,140,114,255,169,145,118,255,171,146,119,255,172,147,119,255,172,148,121,255,174,150,122,255,175,151,123,255,175,151,123,255, +175,151,123,255,173,149,122,255,172,147,120,255,170,145,118,255,168,143,116,255,165,141,115,255,163,138,113,255,161,136,111,255, +159,133,109,255,156,130,107,255,153,127,104,255,150,124,102,255,147,120, 99,255,143,115, 96,255,138,111, 92,255,133,105, 87,255, +128, 99, 83,255,123, 95, 79,255,118, 89, 75,255,113, 83, 71,255,107, 78, 66,255, 99, 72, 62,255, 61, 61, 62,255, 60, 61, 61,255, +164,139,113,255,169,145,118,255,170,146,119,255,171,147,119,255,171,148,120,255,173,148,121,255,175,150,122,255,175,151,123,255, +175,152,123,255,176,151,123,255,174,150,122,255,172,148,120,255,170,146,119,255,168,144,117,255,166,141,115,255,164,139,113,255, +160,136,110,255,158,133,109,255,155,130,106,255,153,127,104,255,149,122,101,255,145,119, 98,255,141,114, 94,255,135,108, 89,255, +130,102, 85,255,126, 97, 81,255,121, 92, 77,255,115, 86, 73,255,109, 80, 68,255,102, 74, 64,255, 61, 61, 61,255, 60, 61, 61,255, +163,138,113,255,169,144,118,255,170,146,119,255,171,146,118,255,172,148,119,255,173,149,121,255,173,149,121,255,176,152,123,255, +177,153,124,255,177,153,124,255,176,152,123,255,175,151,123,255,173,149,121,255,171,146,119,255,168,144,117,255,166,141,115,255, +164,139,113,255,161,136,111,255,158,133,108,255,155,129,106,255,152,126,103,255,149,122,100,255,145,117, 97,255,138,111, 92,255, +133,105, 87,255,128,100, 83,255,123, 94, 79,255,117, 88, 75,255,111, 82, 70,255,104, 75, 65,255, 61, 61, 61,255, 60, 61, 61,255, +161,136,111,255,169,145,118,255,170,146,119,255,170,147,119,255,172,147,120,255,172,149,120,255,173,150,122,255,175,151,123,255, +176,152,124,255,177,154,125,255,178,154,124,255,177,153,125,255,175,152,123,255,173,149,121,255,171,147,119,255,169,144,118,255, +166,142,115,255,164,139,113,255,161,136,110,255,158,132,108,255,155,129,105,255,151,125,102,255,146,121, 99,255,141,114, 94,255, +136,108, 90,255,130,102, 85,255,125, 97, 81,255,119, 90, 76,255,113, 84, 72,255,107, 78, 67,255, 61, 61, 61,255, 60, 61, 61,255, +159,133,109,255,169,144,117,255,169,146,119,255,170,147,119,255,171,148,120,255,172,148,120,255,174,150,122,255,174,151,122,255, +176,152,124,255,177,153,124,255,178,154,124,255,178,154,125,255,177,154,125,255,176,152,123,255,174,150,122,255,171,147,120,255, +169,144,118,255,166,141,116,255,163,138,112,255,160,135,110,255,156,131,107,255,153,128,104,255,149,124,101,255,143,116, 96,255, +138,111, 92,255,133,105, 88,255,127, 99, 83,255,122, 93, 78,255,116, 86, 74,255,108, 79, 68,255, 61, 61, 61,255, 61, 61, 61,255, +151,125,103,255,169,144,117,255,170,145,118,255,171,146,119,255,171,147,120,255,172,148,120,255,174,150,122,255,174,152,122,255, +176,152,123,255,176,152,125,255,178,154,125,255,177,155,126,255,178,155,126,255,177,153,124,255,176,152,123,255,173,149,121,255, +170,147,120,255,168,144,117,255,165,141,115,255,162,138,112,255,159,134,109,255,155,130,106,255,151,126,103,255,145,119, 98,255, +140,114, 94,255,135,108, 89,255,129,102, 84,255,124, 95, 80,255,118, 89, 75,255,110, 81, 69,255, 61, 61, 61,255, 61, 61, 61,255, +131,103, 86,255,167,142,116,255,169,145,118,255,170,146,118,255,172,147,120,255,173,148,121,255,174,150,122,255,174,152,122,255, +175,151,123,255,177,153,125,255,176,154,125,255,176,154,125,255,176,153,124,255,176,152,125,255,176,152,124,255,173,150,122,255, +173,149,121,255,169,145,118,255,167,143,116,255,164,140,114,255,161,137,111,255,157,132,108,255,153,128,105,255,147,121,100,255, +142,116, 95,255,137,110, 91,255,131,104, 86,255,125, 97, 81,255,119, 90, 76,255,112, 83, 70,255, 61, 61, 61,255, 60, 60, 60,255, +164,139,114,255,148,121, 99,255,168,144,117,255,170,145,118,255,172,148,120,255,173,149,121,255,175,151,123,255,175,152,123,255, +175,151,124,255,177,153,124,255,177,153,125,255,177,154,125,255,177,152,124,255,176,152,124,255,175,151,122,255,174,149,121,255, +172,148,121,255,170,146,119,255,167,144,117,255,165,140,114,255,162,137,112,255,159,134,109,255,156,131,107,255,150,125,102,255, +145,119, 98,255,140,113, 93,255,134,107, 88,255,128,100, 83,255,121, 93, 78,255,114, 85, 72,255, 61, 61, 61,255, 59, 60, 60,255, +231,224,212,255,182,165,145,255,165,141,115,255,169,145,118,255,172,148,120,255,173,149,121,255,175,150,123,255,176,151,123,255, +175,152,124,255,177,153,124,255,177,152,123,255,175,153,123,255,176,152,124,255,174,151,122,255,173,151,123,255,172,148,122,255, +171,147,119,255,169,145,118,255,166,142,116,255,164,139,114,255,161,137,111,255,159,134,109,255,156,131,107,255,151,126,103,255, +147,121,100,255,142,115, 95,255,136,109, 90,255,129,101, 85,255,123, 94, 79,255,116, 87, 73,255, 61, 61, 61,255, 59, 60, 60,255, +230,222,208,255,230,223,209,255,222,215,203,255,170,146,118,255,171,147,120,255,173,149,121,255,175,151,123,255,176,152,123,255, +176,152,124,255,176,153,124,255,176,153,124,255,176,153,124,255,175,151,123,255,175,151,123,255,174,149,121,255,171,147,120,255, +171,147,118,255,168,144,117,255,165,141,115,255,162,138,112,255,160,135,110,255,157,133,108,255,155,130,106,255,152,126,104,255, +148,122,100,255,143,117, 96,255,137,110, 91,255,131,103, 86,255,124, 96, 80,255,117, 88, 74,255, 61, 61, 61,255, 59, 60, 60,255, +229,220,206,255,229,220,206,255,229,221,207,255,229,221,207,255,156,133,109,255,173,149,121,255,174,150,122,255,175,152,123,255, +176,152,124,255,176,153,124,255,176,153,124,255,176,151,123,255,175,152,123,255,173,151,123,255,173,150,122,255,172,148,119,255, +170,146,119,255,167,143,116,255,164,140,114,255,161,137,112,255,159,134,109,255,156,131,107,255,154,129,105,255,151,125,103,255, +148,122,101,255,144,118, 97,255,139,112, 92,255,132,105, 87,255,125, 97, 81,255,118, 89, 75,255, 61, 61, 61,255, 59, 60, 60,255, +228,220,205,255,228,220,205,255,228,220,205,255,226,218,203,255,226,218,202,255,219,211,196,255,174,150,121,255,175,151,123,255, +176,151,124,255,176,152,123,255,176,152,122,255,174,152,123,255,174,150,123,255,174,149,121,255,173,149,120,255,170,146,119,255, +168,144,118,255,166,142,115,255,163,139,113,255,161,136,111,255,158,133,108,255,155,130,106,255,152,127,104,255,150,124,102,255, +147,121,100,255,144,118, 97,255,140,113, 93,255,133,106, 88,255,126, 97, 82,255,118, 89, 75,255, 61, 61, 61,255, 59, 60, 60,255, +227,219,205,255,228,219,204,255,226,219,203,255,227,217,203,255,226,217,201,255,224,215,199,255,225,216,199,255,168,144,116,255, +173,149,121,255,175,151,123,255,175,150,123,255,175,151,123,255,173,150,121,255,172,148,120,255,171,147,119,255,169,145,118,255, +167,143,118,255,165,141,115,255,162,138,112,255,160,135,110,255,157,132,108,255,154,129,106,255,151,126,103,255,147,122,101,255, +146,120, 99,255,144,117, 97,255,140,113, 94,255,134,107, 88,255,126, 98, 82,255,118, 89, 75,255, 61, 61, 61,255, 59, 60, 60,255, +228,220,205,255,228,219,204,255,227,218,204,255,226,218,201,255,226,217,201,255,225,216,198,255,224,214,197,255,223,213,196,255, +222,214,199,255,171,146,119,255,173,149,120,255,172,148,120,255,173,149,121,255,172,148,120,255,171,147,119,255,169,144,117,255, +167,143,116,255,165,140,114,255,162,137,112,255,159,134,110,255,156,131,107,255,153,128,105,255,150,125,103,255,147,121, 99,255, +145,119, 97,255,143,116, 96,255,139,112, 93,255,134,107, 89,255,126, 98, 82,255,117, 88, 75,255, 61, 61, 61,255, 59, 60, 60,255, +228,220,205,255,227,219,204,255,227,218,202,255,225,218,202,255,225,216,200,255,223,214,197,255,223,213,196,255,223,213,195,255, +223,213,195,255,222,212,195,255,210,200,185,255,168,143,117,255,171,147,119,255,171,147,120,255,170,146,119,255,168,144,117,255, +165,141,116,255,163,139,113,255,160,136,112,255,158,133,109,255,155,130,107,255,152,127,104,255,149,124,101,255,146,120, 99,255, +143,117, 96,255,141,115, 94,255,138,111, 92,255,134,106, 88,255,126, 97, 82,255,115, 86, 74,255, 61, 61, 61,255, 59, 60, 60,255, +228,219,204,255,227,219,204,255,226,217,202,255,226,217,201,255,224,215,199,255,224,215,198,255,222,214,197,255,222,212,194,255, +222,212,193,255,221,211,191,255,220,210,191,255,221,211,192,255,206,198,182,255,162,137,111,255,167,143,116,255,165,141,115,255, +164,140,114,255,162,137,112,255,158,134,109,255,156,132,108,255,153,128,105,255,151,126,103,255,148,122,101,255,145,119, 98,255, +143,116, 96,255,140,113, 93,255,137,110, 91,255,133,105, 87,255,124, 96, 80,255,112, 83, 71,255, 61, 61, 61,255, 59, 60, 60,255, +227,219,204,255,227,219,203,255,226,218,201,255,226,217,201,255,225,216,198,255,223,214,197,255,223,213,195,255,222,212,193,255, +221,210,191,255,220,209,191,255,220,209,189,255,219,208,187,255,218,207,187,255,218,207,188,255,212,202,185,255,147,120,100,255, +157,132,108,255,156,132,108,255,155,130,106,255,154,129,106,255,151,126,103,255,149,123,101,255,147,121,100,255,143,118, 96,255, +142,115, 95,255,139,112, 92,255,135,108, 89,255,131,103, 86,255,122, 93, 79,255,107, 78, 67,255, 61, 61, 62,255, 59, 60, 60,255, +226,218,203,255,227,217,203,255,226,218,202,255,224,216,200,255,224,215,198,255,223,213,196,255,221,211,193,255,221,211,191,255, +219,208,189,255,218,207,187,255,217,206,185,255,217,205,184,255,216,204,183,255,215,203,181,255,215,203,181,255,215,203,180,255, +215,204,184,255,142,115, 95,255,146,120, 99,255,148,122,100,255,148,122,100,255,146,120, 98,255,145,119, 98,255,143,116, 95,255, +141,114, 94,255,137,110, 92,255,134,106, 88,255,128,100, 84,255,118, 89, 75,255, 44, 32, 29,255, 62, 62, 62,255, 59, 60, 60,255, +227,219,204,255,226,218,202,255,226,216,200,255,224,215,200,255,223,214,197,255,223,213,196,255,221,211,193,255,220,209,190,255, +219,208,187,255,217,205,184,255,216,204,183,255,215,202,179,255,214,201,178,255,213,200,177,255,212,199,175,255,212,198,173,255, +211,197,172,255,210,196,170,255,199,184,160,255,139,112, 92,255,143,115, 96,255,143,117, 96,255,144,117, 96,255,143,116, 96,255, +139,113, 93,255,136,109, 90,255,132,104, 86,255,125, 96, 81,255,108, 79, 68,255, 0, 0, 0,255, 62, 62, 62,255, 59, 60, 60,255, +227,220,206,255,227,219,203,255,226,216,200,255,224,215,198,255,222,213,196,255,222,212,194,255,221,210,192,255,218,207,188,255, +217,205,184,255,216,204,182,255,214,201,178,255,213,199,175,255,212,198,174,255,211,197,171,255,210,196,170,255,209,194,167,255, +208,193,167,255,208,193,166,255,208,192,165,255,216,205,185,255,136,109, 90,255,140,113, 93,255,142,116, 95,255,142,115, 95,255, +138,111, 91,255,134,107, 88,255,129,101, 84,255,118, 89, 75,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 59, 60, 60,255, +228,221,207,255,226,219,205,255,226,218,201,255,224,215,199,255,222,213,196,255,221,211,192,255,220,209,190,255,217,206,186,255, +216,204,183,255,214,201,179,255,213,199,175,255,211,197,172,255,209,195,169,255,208,193,167,255,208,192,165,255,208,191,164,255, +207,191,163,255,206,190,163,255,207,191,163,255,206,189,161,255,207,194,171,255,135,108, 89,255,140,113, 93,255,139,112, 93,255, +136,108, 90,255,131,104, 86,255,125, 96, 81,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 59, 60, 60,255, +228,221,207,255,226,219,205,255,225,217,202,255,225,215,199,255,222,213,196,255,221,211,192,255,219,208,189,255,217,205,184,255, +215,202,180,255,213,200,177,255,211,197,173,255,210,195,168,255,208,192,166,255,207,191,164,255,206,190,162,255,207,189,161,255, +207,189,161,255,207,189,161,255,207,190,162,255,206,191,163,255,207,192,164,255,129,100, 84,255,139,111, 92,255,136,109, 90,255, +133,105, 87,255,127, 99, 83,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 59, 60, 60,255, +227,221,207,255,226,219,205,255,225,217,202,255,224,215,199,255,223,214,196,255,220,211,192,255,219,208,189,255,217,205,184,255, +215,202,179,255,213,199,175,255,210,196,170,255,208,192,165,255,206,190,161,255,205,188,159,255,205,188,159,255,205,188,159,255, +206,188,159,255,206,189,159,255,205,188,160,255,206,190,162,255,205,187,157,255,118, 88, 75,255,134,107, 88,255,133,106, 87,255, +117, 93, 77,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 59, 60, 60,255, +227,219,205,255,226,218,203,255,225,216,201,255,223,215,198,255,221,212,195,255,220,210,192,255,218,207,188,255,216,204,182,255, +214,201,178,255,212,198,173,255,209,194,168,255,207,191,163,255,205,187,158,255,204,186,156,255,203,186,155,255,204,186,155,255, +203,186,155,255,203,186,155,255,203,185,155,255,202,184,153,255,224,215,200,255,102, 74, 63,255,130,102, 85,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 60, 60, 60,255, +224,216,200,255,224,216,200,255,223,214,198,255,222,213,196,255,221,211,193,255,219,209,190,255,217,206,186,255,215,202,180,255, +213,199,175,255,210,196,170,255,208,192,165,255,205,188,159,255,203,185,154,255,202,183,152,255,201,182,151,255,201,182,150,255, +199,180,149,255,197,177,146,255,198,179,147,255,214,202,180,255,186,165,135,255, 29, 22, 19,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 61, 61, 61,255, +156,147,132,255,219,208,189,255,219,209,191,255,219,209,189,255,218,207,188,255,217,206,186,255,216,203,182,255,213,199,176,255, +210,196,171,255,208,192,165,255,205,189,159,255,202,184,153,255,199,180,148,255,197,177,144,255,195,175,142,255,191,171,139,255, +190,169,137,255,192,172,139,255,192,171,140,255, 46, 40, 32,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, + 0, 0, 0,255, 0, 0, 0,255, 4, 4, 3,255, 88, 83, 73,255,215,201,176,255,212,199,174,255,210,195,171,255,208,193,166,255, +206,189,162,255,203,185,156,255,200,181,150,255,197,176,144,255,192,172,139,255,187,166,134,255,183,161,131,255,119,103, 84,255, + 19, 17, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 4, 4, 3,255, 12, 11, 9,255, 6, 5, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 68, 65, 84, 65, + 0,144, 0, 0,232,165, 99, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 62,255, 61, 61, 62,255, 62, 62, 61,255, 61, 61, 61,255, 88, 81, 75,255,115,102, 89,255,116,103, 89,255, +117,104, 90,255,117,105, 91,255,118,105, 91,255,118,105, 91,255,118,106, 92,255,118,106, 92,255,119,106, 92,255,119,106, 92,255, +119,106, 92,255,119,107, 92,255,119,107, 92,255,120,107, 93,255,120,107, 93,255,120,107, 93,255,120,107, 93,255,120,107, 93,255, +120,107, 93,255,120,107, 93,255,120,108, 93,255,120,108, 93,255,120,108, 93,255,120,107, 93,255,120,107, 93,255,120,107, 93,255, +119,107, 92,255,119,107, 92,255,119,106, 92,255,119,106, 92,255,119,105, 92,255,118,105, 91,255,118,105, 91,255,118,104, 91,255, +117,104, 91,255,117,104, 90,255,117,104, 89,255,116,103, 90,255,115,102, 89,255,115,102, 89,255,115,102, 89,255,114,101, 88,255, +114,101, 88,255,114,101, 88,255,113,100, 87,255,113,100, 87,255,113,100, 87,255,112, 99, 86,255,112, 98, 86,255,111, 98, 85,255, +111, 97, 85,255,110, 97, 85,255,110, 97, 84,255,110, 96, 84,255,109, 96, 84,255,108, 95, 83,255,108, 94, 83,255,108, 94, 83,255, +107, 93, 82,255,107, 93, 82,255,106, 92, 81,255,105, 92, 80,255,105, 91, 80,255,104, 90, 79,255,104, 90, 79,255,103, 89, 79,255, +102, 88, 78,255,101, 87, 77,255,101, 87, 76,255,100, 86, 76,255, 99, 84, 76,255, 98, 84, 75,255, 97, 83, 74,255, 97, 82, 73,255, + 96, 82, 73,255, 95, 81, 72,255, 94, 80, 71,255, 93, 79, 71,255, 93, 78, 70,255, 92, 77, 70,255, 91, 76, 68,255, 90, 75, 68,255, + 90, 74, 67,255, 88, 73, 66,255, 88, 72, 66,255, 86, 71, 65,255, 85, 70, 64,255, 84, 69, 63,255, 83, 68, 63,255, 82, 67, 62,255, + 80, 66, 62,255, 79, 66, 60,255, 70, 63, 61,255, 61, 61, 62,255, 60, 61, 61,255,113,100, 87,255,165,139,113,255,167,142,115,255, +168,144,117,255,169,144,117,255,171,146,118,255,172,146,119,255,171,147,119,255,171,147,120,255,172,147,120,255,172,148,120,255, +173,148,120,255,173,148,121,255,173,148,121,255,174,149,121,255,174,150,122,255,175,150,122,255,174,150,122,255,174,150,122,255, +174,150,122,255,175,151,123,255,175,151,123,255,175,151,123,255,175,151,123,255,175,151,123,255,175,151,123,255,175,151,122,255, +174,150,122,255,174,150,122,255,173,149,121,255,173,149,121,255,172,148,121,255,172,147,120,255,171,147,119,255,170,146,119,255, +170,145,118,255,169,144,118,255,168,144,117,255,168,143,116,255,167,142,116,255,166,141,115,255,166,140,115,255,165,140,114,255, +164,139,113,255,164,138,113,255,162,137,112,255,162,136,111,255,162,136,111,255,160,135,110,255,159,134,109,255,159,133,109,255, +158,132,108,255,157,131,107,255,156,130,107,255,155,130,106,255,155,128,105,255,153,127,104,255,152,126,103,255,152,125,103,255, +150,124,102,255,150,123,101,255,149,121,100,255,147,120, 99,255,146,120, 98,255,145,118, 97,255,144,117, 96,255,143,116, 95,255, +141,114, 94,255,140,113, 93,255,139,111, 91,255,137,109, 90,255,135,107, 89,255,134,105, 87,255,132,104, 86,255,131,103, 86,255, +130,101, 84,255,128, 99, 83,255,126, 98, 82,255,125, 95, 80,255,123, 94, 79,255,122, 93, 78,255,120, 90, 76,255,118, 89, 75,255, +116, 86, 73,255,114, 85, 72,255,112, 83, 71,255,110, 80, 68,255,108, 79, 67,255,106, 77, 66,255,104, 74, 64,255,101, 73, 63,255, + 99, 72, 62,255, 97, 69, 60,255, 78, 65, 60,255, 61, 61, 62,255, 60, 61, 61,255,113, 99, 87,255,163,138,113,255,165,140,114,255, +167,142,116,255,168,143,116,255,169,145,118,255,169,146,119,255,170,145,118,255,171,146,119,255,170,147,120,255,171,146,120,255, +172,147,119,255,171,148,119,255,172,147,121,255,172,148,121,255,172,148,120,255,172,148,120,255,174,150,122,255,173,149,121,255, +174,150,122,255,175,151,123,255,175,151,123,255,175,151,123,255,175,151,123,255,175,151,123,255,174,150,122,255,175,151,123,255, +175,151,123,255,174,150,122,255,174,149,122,255,173,149,122,255,173,149,121,255,172,147,120,255,172,147,120,255,170,147,119,255, +170,146,119,255,170,145,118,255,169,144,117,255,168,144,117,255,168,143,116,255,167,142,116,255,166,141,115,255,165,141,115,255, +164,140,114,255,164,139,113,255,163,138,113,255,162,137,112,255,162,136,111,255,161,136,111,255,159,134,110,255,159,134,109,255, +159,133,109,255,157,131,108,255,156,131,107,255,156,130,107,255,155,129,105,255,154,128,105,255,153,127,104,255,152,126,103,255, +151,125,103,255,150,124,102,255,149,122,100,255,148,121,100,255,147,120, 99,255,145,119, 98,255,144,118, 97,255,143,115, 96,255, +142,114, 94,255,141,113, 94,255,138,111, 92,255,137,109, 90,255,136,108, 90,255,134,106, 88,255,133,105, 87,255,132,104, 86,255, +130,101, 84,255,128, 99, 83,255,127, 98, 82,255,125, 96, 80,255,123, 95, 79,255,122, 93, 78,255,120, 91, 76,255,118, 89, 75,255, +116, 87, 74,255,115, 85, 72,255,113, 83, 71,255,111, 81, 69,255,109, 80, 68,255,107, 78, 66,255,104, 75, 64,255,102, 73, 63,255, + 99, 72, 62,255, 97, 70, 60,255, 79, 66, 60,255, 61, 61, 62,255, 60, 61, 61,255,112, 99, 86,255,163,137,112,255,164,139,113,255, +166,142,116,255,168,143,116,255,169,145,118,255,169,145,118,255,170,146,119,255,171,146,119,255,170,146,119,255,171,146,119,255, +171,147,120,255,172,147,119,255,171,148,120,255,172,147,121,255,173,148,120,255,173,149,121,255,174,150,122,255,173,149,121,255, +174,150,122,255,175,151,123,255,174,150,122,255,175,151,123,255,175,151,123,255,174,150,123,255,174,150,123,255,175,151,123,255, +175,151,122,255,174,150,123,255,174,150,122,255,174,150,122,255,173,150,122,255,172,149,121,255,172,148,121,255,172,147,120,255, +171,146,119,255,170,146,119,255,170,145,118,255,169,144,117,255,168,144,117,255,167,143,116,255,167,142,116,255,166,141,115,255, +165,140,114,255,164,140,114,255,164,139,113,255,163,138,112,255,162,137,112,255,161,136,111,255,161,135,110,255,160,135,110,255, +159,134,109,255,158,133,108,255,157,131,107,255,156,131,107,255,156,130,106,255,154,129,105,255,153,127,104,255,153,127,104,255, +152,126,103,255,151,125,102,255,149,124,101,255,148,122,100,255,147,121, 99,255,146,119, 98,255,145,118, 97,255,144,117, 96,255, +142,116, 96,255,141,114, 94,255,139,112, 93,255,138,110, 92,255,136,109, 90,255,135,108, 89,255,133,106, 88,255,132,104, 87,255, +130,102, 85,255,128,100, 84,255,127, 99, 83,255,126, 97, 81,255,124, 95, 80,255,122, 94, 78,255,121, 92, 77,255,119, 90, 76,255, +117, 88, 74,255,115, 87, 73,255,113, 84, 71,255,112, 82, 70,255,109, 80, 69,255,107, 78, 67,255,105, 76, 65,255,102, 74, 64,255, +100, 72, 62,255, 98, 70, 61,255, 79, 66, 61,255, 61, 61, 62,255, 60, 61, 61,255,112, 98, 86,255,162,136,112,255,164,139,113,255, +166,142,115,255,167,143,116,255,169,145,118,255,170,145,118,255,170,146,119,255,170,145,118,255,171,146,118,255,170,147,118,255, +171,146,120,255,172,147,119,255,171,148,119,255,172,147,120,255,172,148,121,255,173,149,121,255,173,149,121,255,174,150,122,255, +173,149,121,255,174,150,122,255,175,151,123,255,175,151,123,255,174,150,123,255,175,151,123,255,175,151,123,255,176,152,123,255, +176,152,122,255,175,151,122,255,174,150,122,255,174,150,122,255,174,149,121,255,174,149,121,255,173,149,121,255,172,148,120,255, +172,147,120,255,171,147,120,255,170,146,119,255,170,145,118,255,169,144,117,255,168,144,117,255,167,143,116,255,167,142,116,255, +166,141,115,255,165,140,114,255,164,140,114,255,164,139,113,255,163,138,112,255,162,137,112,255,161,136,111,255,161,135,110,255, +160,134,110,255,159,134,109,255,158,133,108,255,157,131,107,255,156,131,107,255,156,130,106,255,154,128,105,255,153,127,104,255, +153,127,104,255,151,125,103,255,151,125,102,255,150,124,101,255,148,122,100,255,147,121, 99,255,146,120, 98,255,145,118, 97,255, +144,117, 96,255,143,116, 95,255,140,113, 93,255,139,112, 92,255,138,110, 91,255,136,108, 90,255,135,107, 89,255,133,105, 87,255, +131,103, 85,255,130,102, 85,255,128, 99, 83,255,127, 98, 82,255,125, 97, 81,255,123, 94, 79,255,121, 93, 77,255,120, 91, 77,255, +118, 89, 75,255,117, 87, 74,255,114, 85, 72,255,112, 83, 70,255,110, 81, 69,255,108, 79, 68,255,106, 77, 65,255,103, 75, 65,255, +101, 73, 63,255, 98, 71, 61,255, 80, 66, 61,255, 61, 61, 62,255, 60, 61, 61,255,111, 98, 85,255,161,136,110,255,164,139,113,255, +166,142,115,255,168,143,116,255,169,145,118,255,170,145,118,255,170,145,118,255,170,146,119,255,171,145,119,255,171,145,119,255, +171,147,119,255,171,147,120,255,171,147,120,255,171,148,120,255,172,147,121,255,172,149,120,255,173,148,121,255,174,149,122,255, +174,149,121,255,175,150,122,255,174,150,122,255,174,150,123,255,175,151,123,255,175,151,123,255,176,151,122,255,176,152,123,255, +175,152,123,255,175,152,124,255,176,152,124,255,176,151,123,255,174,151,123,255,175,151,123,255,174,150,122,255,173,149,121,255, +173,148,121,255,172,148,120,255,172,147,120,255,171,146,119,255,170,146,119,255,170,145,118,255,169,144,117,255,168,144,117,255, +167,142,116,255,166,141,115,255,166,141,115,255,165,140,114,255,164,139,113,255,164,139,113,255,162,137,112,255,162,136,111,255, +160,136,110,255,160,134,110,255,159,134,109,255,158,133,109,255,157,132,108,255,157,131,107,255,155,130,106,255,154,128,105,255, +154,128,105,255,153,127,104,255,151,125,103,255,151,124,102,255,149,122,101,255,148,122,100,255,147,121, 99,255,145,119, 98,255, +144,118, 97,255,143,116, 96,255,141,114, 94,255,140,112, 93,255,138,111, 92,255,136,109, 90,255,135,108, 89,255,134,106, 88,255, +132,104, 86,255,130,102, 85,255,129,101, 84,255,127, 99, 83,255,126, 97, 81,255,124, 96, 79,255,122, 93, 78,255,121, 92, 77,255, +119, 90, 76,255,117, 88, 74,255,115, 86, 73,255,113, 84, 71,255,111, 82, 70,255,109, 80, 68,255,107, 78, 66,255,105, 76, 65,255, +102, 74, 64,255,100, 72, 62,255, 80, 66, 61,255, 61, 61, 61,255, 60, 61, 61,255,111, 97, 85,255,161,135,111,255,164,139,113,255, +166,141,115,255,168,143,116,255,169,144,118,255,170,144,117,255,170,145,118,255,170,146,119,255,171,146,119,255,171,145,119,255, +170,147,119,255,170,146,120,255,171,146,119,255,171,147,120,255,172,147,121,255,172,149,120,255,173,148,121,255,173,149,121,255, +174,149,121,255,174,150,122,255,175,151,123,255,175,151,123,255,175,151,123,255,176,152,122,255,176,152,123,255,175,152,123,255, +176,153,124,255,176,152,124,255,176,152,123,255,176,152,124,255,175,151,123,255,175,151,123,255,174,150,122,255,174,150,122,255, +174,150,122,255,173,148,121,255,172,148,120,255,172,147,120,255,171,146,119,255,170,146,119,255,169,145,118,255,169,145,118,255, +168,144,117,255,167,142,116,255,166,142,115,255,166,141,115,255,165,140,114,255,164,139,113,255,163,138,113,255,162,137,112,255, +161,136,111,255,161,136,111,255,160,134,110,255,159,133,109,255,158,132,108,255,157,132,108,255,156,131,107,255,155,130,106,255, +154,128,105,255,153,127,104,255,153,127,104,255,151,125,103,255,150,124,102,255,149,123,101,255,148,121,100,255,147,120, 99,255, +146,118, 97,255,144,117, 97,255,143,116, 95,255,140,113, 93,255,139,112, 92,255,138,111, 91,255,136,109, 90,255,134,107, 89,255, +133,105, 87,255,131,103, 86,255,130,102, 84,255,128,100, 83,255,127, 98, 82,255,124, 96, 80,255,123, 95, 79,255,121, 92, 78,255, +120, 91, 76,255,118, 88, 75,255,116, 86, 73,255,114, 84, 72,255,111, 82, 70,255,109, 80, 69,255,107, 78, 67,255,105, 76, 65,255, +103, 74, 64,255,100, 72, 62,255, 81, 67, 61,255, 61, 61, 62,255, 60, 61, 61,255,111, 97, 85,255,160,135,109,255,164,138,113,255, +166,141,115,255,167,142,116,255,169,144,118,255,169,144,117,255,169,145,118,255,171,145,118,255,171,146,119,255,171,145,119,255, +170,146,118,255,171,147,119,255,171,147,120,255,171,147,120,255,171,147,119,255,173,149,121,255,172,148,120,255,173,149,121,255, +173,149,121,255,174,150,122,255,175,151,123,255,174,150,123,255,175,151,123,255,176,152,122,255,175,151,124,255,176,152,124,255, +177,153,123,255,176,152,124,255,176,152,124,255,176,152,123,255,176,152,124,255,175,151,123,255,175,151,124,255,174,151,122,255, +175,150,123,255,173,149,121,255,173,149,121,255,172,148,120,255,171,147,120,255,171,147,119,255,170,146,119,255,169,144,117,255, +169,144,117,255,168,143,117,255,167,142,116,255,166,142,115,255,166,141,115,255,164,139,114,255,164,139,113,255,164,139,113,255, +162,137,112,255,161,136,111,255,161,136,111,255,159,134,109,255,159,133,109,255,159,133,108,255,157,131,107,255,156,130,107,255, +155,130,106,255,154,128,105,255,153,127,104,255,153,127,104,255,151,125,102,255,150,124,101,255,149,123,101,255,147,121, 99,255, +146,120, 98,255,145,119, 98,255,144,117, 96,255,142,115, 94,255,140,113, 93,255,138,111, 92,255,137,110, 91,255,136,107, 89,255, +134,106, 88,255,132,104, 87,255,130,102, 85,255,129,101, 84,255,127, 99, 82,255,125, 97, 81,255,124, 95, 80,255,122, 94, 79,255, +120, 91, 76,255,118, 89, 75,255,117, 88, 74,255,114, 85, 72,255,113, 83, 71,255,111, 81, 69,255,108, 79, 67,255,106, 77, 66,255, +104, 75, 65,255,101, 73, 63,255, 81, 67, 62,255, 61, 61, 61,255, 60, 61, 61,255,110, 97, 85,255,160,133,109,255,163,138,113,255, +166,141,115,255,168,143,116,255,169,144,118,255,169,145,117,255,169,145,118,255,170,146,119,255,171,146,119,255,171,146,119,255, +171,146,118,255,170,147,119,255,171,147,120,255,172,148,119,255,172,148,120,255,171,147,121,255,173,149,121,255,172,148,120,255, +174,150,122,255,173,149,121,255,174,150,122,255,174,150,122,255,175,151,122,255,176,152,123,255,175,151,123,255,176,152,124,255, +177,153,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,153,123,255,177,153,123,255,176,152,123,255,175,152,123,255, +175,152,123,255,175,151,123,255,174,150,122,255,173,149,121,255,173,149,121,255,172,148,120,255,171,147,120,255,171,146,119,255, +170,146,118,255,169,144,118,255,168,144,117,255,167,143,116,255,167,142,116,255,166,141,115,255,165,140,114,255,164,139,114,255, +164,139,113,255,163,137,112,255,162,137,112,255,161,136,111,255,160,135,110,255,159,134,110,255,158,133,108,255,157,131,108,255, +156,130,107,255,155,129,106,255,154,128,105,255,153,127,104,255,152,126,103,255,151,124,102,255,150,124,102,255,149,122,100,255, +147,121, 99,255,146,120, 98,255,145,117, 97,255,143,116, 96,255,141,114, 94,255,140,113, 93,255,138,111, 92,255,136,109, 90,255, +134,107, 88,255,133,105, 87,255,132,104, 87,255,130,102, 84,255,128,100, 83,255,127, 98, 82,255,124, 96, 80,255,123, 94, 79,255, +121, 92, 77,255,119, 90, 76,255,117, 88, 75,255,115, 86, 73,255,113, 84, 71,255,111, 82, 70,255,109, 80, 68,255,107, 78, 66,255, +104, 75, 65,255,103, 74, 64,255, 82, 67, 62,255, 61, 61, 61,255, 60, 61, 61,255,110, 96, 84,255,159,133,108,255,163,137,112,255, +166,141,115,255,167,143,116,255,169,145,118,255,170,144,118,255,170,144,118,255,170,146,119,255,171,146,119,255,171,145,119,255, +171,146,119,255,170,146,119,255,171,147,120,255,172,148,119,255,171,147,120,255,172,148,120,255,173,148,121,255,172,148,120,255, +174,149,122,255,173,149,121,255,174,150,122,255,174,150,123,255,175,151,122,255,175,151,123,255,175,151,124,255,176,152,124,255, +177,153,124,255,177,153,124,255,177,153,123,255,177,152,123,255,176,152,124,255,176,152,124,255,177,153,123,255,176,152,124,255, +176,152,123,255,175,152,123,255,174,151,122,255,174,150,122,255,173,149,121,255,173,148,121,255,172,148,120,255,171,147,119,255, +170,146,119,255,170,145,119,255,169,144,117,255,168,144,117,255,167,143,116,255,166,142,115,255,166,141,115,255,165,140,114,255, +164,139,113,255,163,138,113,255,163,137,112,255,161,136,111,255,161,136,111,255,160,135,110,255,159,133,109,255,158,133,108,255, +157,131,107,255,156,130,106,255,155,129,106,255,154,128,105,255,153,127,104,255,152,126,103,255,151,124,102,255,149,123,101,255, +148,122,100,255,147,120, 99,255,145,119, 97,255,144,117, 96,255,142,115, 95,255,140,113, 93,255,139,112, 93,255,137,110, 91,255, +136,108, 89,255,134,107, 89,255,132,104, 87,255,131,103, 85,255,128,100, 83,255,127, 99, 82,255,125, 97, 81,255,124, 95, 80,255, +121, 93, 78,255,120, 91, 77,255,118, 89, 75,255,116, 87, 73,255,114, 85, 72,255,112, 83, 70,255,110, 80, 68,255,108, 78, 67,255, +105, 76, 65,255,103, 74, 64,255, 82, 67, 62,255, 61, 61, 61,255, 60, 61, 61,255,109, 95, 84,255,158,132,108,255,162,136,112,255, +166,141,115,255,167,143,116,255,169,145,118,255,170,144,119,255,169,145,119,255,171,146,119,255,171,146,119,255,171,145,118,255, +171,147,120,255,170,147,120,255,171,146,119,255,171,147,120,255,172,148,121,255,173,147,121,255,173,148,121,255,172,149,120,255, +174,149,122,255,173,150,122,255,173,149,121,255,175,151,123,255,174,150,122,255,175,151,123,255,175,151,124,255,176,152,124,255, +177,153,124,255,177,153,123,255,177,152,124,255,176,153,124,255,178,153,124,255,178,154,124,255,177,153,125,255,176,152,124,255, +177,153,124,255,176,152,123,255,175,151,123,255,174,152,122,255,175,151,123,255,173,149,121,255,173,149,121,255,172,148,120,255, +171,147,120,255,171,147,119,255,169,145,118,255,169,144,117,255,169,144,118,255,167,142,116,255,166,142,115,255,166,142,116,255, +165,140,114,255,164,139,113,255,164,139,113,255,162,137,112,255,161,136,111,255,161,136,110,255,159,134,110,255,159,133,109,255, +158,133,109,255,156,131,107,255,155,130,106,255,155,130,106,255,153,128,104,255,152,127,104,255,152,126,103,255,150,124,101,255, +149,123,101,255,148,122,100,255,146,119, 98,255,144,118, 97,255,143,116, 96,255,141,114, 94,255,140,113, 93,255,138,111, 91,255, +136,109, 90,255,135,107, 89,255,133,105, 87,255,131,104, 86,255,130,102, 85,255,127, 99, 83,255,126, 98, 82,255,124, 96, 80,255, +122, 93, 78,255,121, 92, 77,255,119, 90, 76,255,117, 87, 74,255,115, 86, 73,255,113, 83, 71,255,110, 81, 69,255,108, 79, 68,255, +106, 77, 66,255,104, 74, 64,255, 82, 68, 62,255, 61, 61, 61,255, 60, 61, 61,255,108, 95, 83,255,157,131,107,255,161,136,111,255, +166,141,115,255,167,142,116,255,169,145,118,255,170,145,118,255,169,146,119,255,170,146,119,255,170,146,119,255,170,145,118,255, +170,147,119,255,171,147,120,255,171,146,119,255,172,147,120,255,173,148,121,255,173,147,121,255,172,149,120,255,173,148,121,255, +173,149,121,255,173,150,122,255,174,149,121,255,175,151,123,255,174,150,122,255,175,151,123,255,175,151,124,255,175,151,124,255, +176,152,124,255,177,152,123,255,176,153,124,255,177,154,125,255,177,153,124,255,177,153,125,255,178,154,124,255,177,154,125,255, +177,153,125,255,177,153,125,255,176,152,124,255,176,152,124,255,175,152,123,255,175,151,123,255,174,150,122,255,173,149,121,255, +172,148,120,255,172,148,120,255,171,147,119,255,170,146,119,255,169,145,118,255,169,144,118,255,167,143,116,255,167,142,116,255, +166,142,115,255,165,140,114,255,164,140,114,255,164,139,113,255,162,137,112,255,161,136,111,255,161,136,110,255,159,134,110,255, +159,133,109,255,158,132,108,255,156,131,107,255,156,130,106,255,155,129,105,255,153,127,104,255,152,126,104,255,151,125,102,255, +150,124,101,255,149,122,101,255,146,121, 99,255,145,119, 97,255,144,117, 96,255,142,116, 95,255,141,114, 94,255,139,112, 93,255, +137,110, 91,255,136,108, 90,255,134,107, 89,255,132,104, 86,255,130,102, 85,255,129,101, 84,255,127, 98, 82,255,125, 97, 81,255, +123, 95, 79,255,121, 93, 78,255,119, 90, 76,255,118, 89, 75,255,116, 86, 73,255,113, 84, 72,255,111, 82, 70,255,109, 80, 68,255, +107, 78, 67,255,105, 75, 65,255, 83, 68, 63,255, 61, 61, 61,255, 60, 61, 61,255,107, 93, 82,255,156,129,107,255,161,135,110,255, +165,140,114,255,167,143,116,255,169,145,118,255,170,145,118,255,170,145,119,255,169,146,119,255,170,146,119,255,170,145,119,255, +170,147,119,255,171,147,119,255,172,146,120,255,172,148,120,255,172,147,121,255,173,148,121,255,172,148,120,255,173,149,121,255, +173,150,122,255,174,150,122,255,174,149,121,255,174,151,123,255,174,150,123,255,175,151,122,255,176,152,124,255,175,151,124,255, +176,152,124,255,177,152,123,255,176,153,124,255,177,153,124,255,178,154,125,255,178,154,125,255,178,154,125,255,178,153,125,255, +178,154,125,255,177,153,125,255,177,153,125,255,176,152,124,255,176,152,124,255,175,151,123,255,174,151,122,255,174,150,122,255, +173,149,121,255,173,149,121,255,171,147,120,255,171,146,119,255,170,146,119,255,169,145,118,255,168,144,117,255,168,143,116,255, +166,142,116,255,166,141,115,255,165,140,114,255,164,139,113,255,163,138,113,255,162,137,112,255,161,136,111,255,161,136,111,255, +159,134,110,255,158,133,108,255,157,132,108,255,156,130,107,255,155,130,106,255,154,129,105,255,153,127,104,255,151,126,103,255, +151,125,102,255,149,123,101,255,148,122,100,255,146,120, 99,255,144,118, 97,255,143,116, 96,255,142,115, 95,255,140,113, 93,255, +138,111, 92,255,137,109, 91,255,135,107, 89,255,133,106, 87,255,132,104, 86,255,129,101, 84,255,128,100, 83,255,125, 98, 82,255, +124, 95, 80,255,122, 93, 79,255,120, 92, 77,255,118, 89, 75,255,116, 87, 74,255,114, 85, 72,255,112, 83, 70,255,109, 80, 68,255, +107, 78, 67,255,105, 76, 65,255, 83, 69, 63,255, 61, 61, 61,255, 60, 61, 61,255,106, 92, 80,255,153,128,104,255,160,134,110,255, +164,139,114,255,167,143,116,255,169,145,118,255,170,144,119,255,170,145,119,255,170,146,119,255,171,146,119,255,171,145,119,255, +170,147,119,255,171,146,120,255,172,147,120,255,171,147,119,255,172,148,120,255,173,149,121,255,172,148,120,255,173,149,121,255, +173,150,122,255,174,149,121,255,175,150,122,255,175,151,123,255,175,151,123,255,174,150,122,255,176,152,124,255,175,151,124,255, +176,152,124,255,177,153,124,255,176,152,123,255,177,153,124,255,178,154,125,255,178,154,125,255,178,154,125,255,178,154,125,255, +177,153,125,255,178,154,125,255,178,154,124,255,177,153,125,255,176,152,124,255,176,152,123,255,176,152,124,255,175,151,123,255, +174,150,122,255,174,150,122,255,172,149,121,255,171,147,120,255,171,147,120,255,170,145,118,255,169,145,118,255,169,145,118,255, +167,143,116,255,166,142,115,255,166,141,115,255,165,140,114,255,164,139,113,255,163,138,113,255,162,137,111,255,161,136,111,255, +160,135,111,255,159,134,109,255,158,133,108,255,157,132,108,255,156,130,106,255,155,129,106,255,154,128,105,255,152,126,103,255, +151,125,103,255,150,124,102,255,148,122,100,255,147,120, 99,255,146,119, 98,255,144,117, 96,255,142,116, 96,255,141,114, 94,255, +139,112, 92,255,137,110, 91,255,136,109, 90,255,134,106, 88,255,132,104, 87,255,130,102, 85,255,128,100, 84,255,127, 98, 82,255, +124, 96, 80,255,123, 95, 79,255,121, 92, 78,255,119, 90, 76,255,117, 88, 74,255,115, 86, 73,255,112, 83, 70,255,110, 81, 69,255, +108, 79, 67,255,106, 77, 66,255, 83, 69, 64,255, 61, 61, 61,255, 60, 61, 61,255,104, 90, 80,255,151,124,102,255,159,133,109,255, +164,139,113,255,167,142,116,255,169,144,117,255,170,145,118,255,170,145,118,255,169,146,119,255,170,146,119,255,171,147,118,255, +170,147,119,255,171,146,120,255,171,147,120,255,171,148,120,255,172,147,120,255,173,148,121,255,172,148,120,255,173,149,121,255, +173,149,121,255,174,150,122,255,175,151,123,255,175,150,123,255,175,151,123,255,174,151,122,255,176,151,124,255,175,151,124,255, +176,152,124,255,176,153,123,255,176,152,124,255,177,153,124,255,177,154,125,255,178,154,125,255,178,154,124,255,178,154,125,255, +178,154,125,255,178,154,125,255,178,154,125,255,177,154,124,255,177,154,125,255,176,152,124,255,176,152,124,255,176,152,123,255, +174,151,123,255,174,151,122,255,174,150,122,255,173,148,121,255,172,148,120,255,171,147,120,255,170,146,119,255,169,145,118,255, +169,144,118,255,167,143,116,255,167,142,116,255,166,141,116,255,165,140,114,255,164,139,114,255,163,138,112,255,162,137,112,255, +161,136,111,255,160,135,110,255,159,133,109,255,158,132,108,255,156,131,107,255,156,130,106,255,155,129,106,255,153,128,104,255, +152,126,103,255,151,125,102,255,149,124,101,255,148,122,100,255,146,120, 99,255,145,119, 97,255,143,116, 96,255,141,115, 95,255, +139,112, 93,255,138,111, 92,255,137,110, 91,255,134,107, 88,255,133,105, 88,255,131,104, 86,255,129,101, 84,255,127, 99, 83,255, +125, 97, 81,255,124, 95, 79,255,122, 93, 78,255,120, 91, 76,255,118, 89, 75,255,116, 86, 74,255,113, 84, 71,255,111, 82, 69,255, +108, 79, 68,255,107, 78, 66,255, 84, 69, 64,255, 61, 61, 61,255, 61, 61, 61,255,102, 88, 78,255,148,121,100,255,157,132,107,255, +163,138,113,255,167,142,116,255,169,144,117,255,170,144,117,255,169,145,118,255,169,146,119,255,170,146,119,255,171,147,118,255, +171,146,119,255,170,146,120,255,171,147,119,255,172,148,120,255,171,147,121,255,173,148,121,255,172,148,120,255,173,149,121,255, +173,149,121,255,174,150,122,255,175,151,123,255,175,151,123,255,175,151,123,255,174,152,122,255,176,152,124,255,175,151,124,255, +176,152,124,255,177,153,123,255,176,152,124,255,177,153,125,255,178,154,125,255,178,154,125,255,178,153,124,255,178,154,126,255, +178,155,126,255,178,155,126,255,178,155,125,255,177,154,125,255,176,153,124,255,177,153,124,255,177,153,124,255,176,152,124,255, +175,151,123,255,175,151,123,255,173,150,121,255,173,149,121,255,172,149,121,255,172,148,120,255,171,147,119,255,170,145,119,255, +169,145,118,255,168,144,117,255,167,143,116,255,166,142,115,255,166,141,115,255,165,140,114,255,163,139,113,255,163,138,112,255, +162,137,112,255,161,136,111,255,160,135,110,255,158,133,109,255,157,132,108,255,156,131,107,255,155,130,106,255,154,128,105,255, +153,127,104,255,151,126,103,255,150,124,102,255,148,122,100,255,147,121, 99,255,145,119, 98,255,144,118, 97,255,142,115, 95,255, +140,114, 94,255,139,112, 93,255,137,110, 91,255,135,108, 89,255,134,106, 88,255,132,104, 86,255,130,102, 85,255,128,100, 83,255, +126, 98, 81,255,124, 95, 80,255,123, 94, 79,255,120, 91, 77,255,118, 90, 76,255,117, 88, 74,255,114, 85, 72,255,112, 83, 70,255, +109, 80, 68,255,107, 78, 67,255, 84, 69, 63,255, 61, 61, 61,255, 61, 61, 61,255, 99, 84, 75,255,144,117, 97,255,155,128,105,255, +162,137,112,255,166,142,115,255,169,144,118,255,169,144,117,255,170,145,118,255,169,146,119,255,170,146,118,255,171,145,119,255, +170,146,119,255,171,146,120,255,172,147,119,255,172,148,121,255,171,147,121,255,173,149,121,255,172,148,120,255,173,149,121,255, +173,149,121,255,174,150,122,255,175,151,123,255,175,151,123,255,175,152,123,255,174,152,122,255,176,152,124,255,176,151,124,255, +175,152,123,255,177,153,125,255,177,152,124,255,176,153,125,255,178,154,125,255,178,154,125,255,178,153,124,255,178,155,126,255, +178,155,126,255,178,154,125,255,178,155,126,255,177,154,125,255,178,155,126,255,176,153,124,255,177,154,125,255,177,153,124,255, +175,152,123,255,176,152,124,255,175,151,123,255,174,150,122,255,173,149,122,255,173,149,120,255,172,148,120,255,171,147,120,255, +170,145,118,255,169,145,118,255,168,144,117,255,167,142,117,255,166,142,116,255,166,141,115,255,164,139,114,255,163,138,113,255, +163,138,113,255,161,136,111,255,160,135,111,255,160,134,110,255,158,132,108,255,157,132,108,255,156,131,107,255,154,129,105,255, +153,128,105,255,152,127,104,255,150,125,102,255,149,123,101,255,148,122,100,255,146,120, 98,255,145,118, 97,255,143,117, 96,255, +141,115, 94,255,140,113, 93,255,139,112, 92,255,136,109, 90,255,135,107, 89,255,132,105, 87,255,131,103, 85,255,129,101, 84,255, +126, 98, 82,255,125, 97, 80,255,123, 95, 79,255,121, 92, 77,255,119, 90, 76,255,117, 88, 75,255,114, 85, 72,255,113, 84, 71,255, +110, 81, 69,255,108, 78, 67,255, 85, 70, 64,255, 61, 61, 61,255, 61, 61, 61,255, 96, 81, 73,255,139,111, 92,255,151,125,103,255, +161,136,110,255,166,141,115,255,169,144,117,255,169,145,118,255,169,144,117,255,170,145,118,255,171,146,119,255,171,146,119,255, +171,146,119,255,172,147,120,255,171,146,119,255,171,147,120,255,172,147,120,255,173,149,121,255,172,148,120,255,173,149,121,255, +173,149,121,255,174,150,122,255,175,151,123,255,175,151,123,255,175,152,123,255,174,152,122,255,176,152,124,255,175,151,124,255, +176,152,123,255,177,152,125,255,177,153,125,255,176,152,125,255,178,154,125,255,178,154,125,255,178,154,125,255,178,154,125,255, +178,154,125,255,177,155,126,255,178,155,126,255,178,154,125,255,178,155,126,255,176,153,124,255,177,154,125,255,177,153,124,255, +176,153,124,255,175,152,124,255,176,152,123,255,174,151,123,255,174,150,122,255,173,149,121,255,172,148,121,255,172,147,120,255, +170,147,120,255,170,146,119,255,169,145,118,255,168,144,117,255,167,143,116,255,167,142,116,255,165,141,115,255,164,140,114,255, +164,139,113,255,162,138,112,255,161,136,111,255,160,135,110,255,159,134,109,255,157,132,108,255,156,131,107,255,155,130,106,255, +154,128,105,255,153,127,104,255,151,126,103,255,150,124,101,255,149,123,101,255,146,120, 99,255,145,119, 98,255,144,117, 97,255, +142,116, 95,255,140,114, 94,255,138,111, 92,255,137,110, 90,255,135,108, 89,255,134,106, 87,255,131,103, 86,255,129,102, 84,255, +127, 99, 83,255,125, 97, 81,255,124, 95, 80,255,122, 93, 78,255,120, 91, 76,255,118, 89, 75,255,115, 86, 73,255,113, 84, 71,255, +110, 81, 69,255,108, 79, 67,255, 85, 70, 64,255, 61, 61, 61,255, 61, 61, 61,255, 93, 79, 70,255,133,105, 87,255,148,121, 99,255, +158,133,109,255,164,139,114,255,168,144,117,255,169,144,118,255,170,145,118,255,170,145,118,255,170,146,119,255,170,146,119,255, +171,146,119,255,171,147,119,255,172,146,120,255,172,147,120,255,172,147,120,255,172,149,121,255,172,148,120,255,173,149,121,255, +173,149,121,255,174,150,122,255,175,151,123,255,175,151,123,255,175,152,123,255,174,152,122,255,176,152,124,255,175,151,124,255, +176,152,123,255,177,153,125,255,177,153,125,255,176,152,125,255,178,154,125,255,177,154,125,255,178,154,125,255,177,153,124,255, +177,154,125,255,178,155,126,255,178,155,126,255,178,155,126,255,178,154,125,255,176,153,124,255,177,153,124,255,176,154,125,255, +176,152,124,255,175,153,124,255,176,152,122,255,174,151,123,255,174,150,122,255,174,149,121,255,173,149,121,255,172,148,121,255, +171,147,119,255,170,146,119,255,170,145,119,255,168,144,117,255,168,143,117,255,167,143,116,255,166,141,115,255,165,141,114,255, +164,140,114,255,163,138,113,255,162,138,112,255,161,136,111,255,159,135,110,255,158,134,109,255,157,132,108,255,156,130,107,255, +155,129,106,255,153,128,105,255,152,126,103,255,151,125,102,255,149,123,101,255,148,122,100,255,146,120, 99,255,144,118, 97,255, +143,116, 96,255,142,115, 95,255,139,112, 92,255,138,111, 91,255,136,109, 90,255,134,106, 88,255,132,105, 87,255,130,103, 85,255, +128,100, 83,255,126, 98, 82,255,124, 96, 80,255,122, 93, 78,255,121, 92, 77,255,118, 89, 76,255,116, 87, 73,255,113, 84, 71,255, +111, 82, 70,255,109, 79, 68,255, 85, 70, 64,255, 61, 61, 61,255, 61, 61, 61,255, 91, 75, 68,255,124, 96, 80,255,141,114, 93,255, +155,129,106,255,163,138,113,255,168,143,116,255,168,144,118,255,169,144,117,255,170,146,119,255,169,145,119,255,169,145,119,255, +171,147,118,255,170,146,119,255,171,148,120,255,172,147,120,255,173,148,121,255,173,148,121,255,172,148,120,255,173,149,121,255, +173,149,121,255,174,150,122,255,175,151,123,255,175,151,123,255,175,152,123,255,174,152,122,255,176,152,124,255,176,151,124,255, +175,152,123,255,177,153,125,255,177,153,125,255,177,152,125,255,177,154,125,255,178,154,125,255,177,154,125,255,176,154,125,255, +176,154,125,255,177,153,124,255,177,154,125,255,178,155,126,255,178,154,125,255,176,154,125,255,177,154,125,255,177,153,125,255, +175,152,123,255,176,153,123,255,176,152,124,255,174,152,122,255,174,151,122,255,174,151,123,255,173,149,121,255,173,149,121,255, +172,148,120,255,171,147,120,255,170,146,119,255,169,145,118,255,168,144,117,255,168,143,116,255,166,142,116,255,166,141,115,255, +165,140,114,255,163,139,113,255,163,138,113,255,162,137,112,255,160,135,110,255,159,134,110,255,158,133,109,255,156,131,107,255, +155,130,106,255,154,129,106,255,152,127,104,255,151,126,103,255,150,124,102,255,148,122,100,255,147,121, 99,255,145,119, 98,255, +143,117, 96,255,142,116, 95,255,140,114, 94,255,138,111, 92,255,137,109, 91,255,135,107, 89,255,133,105, 87,255,131,103, 86,255, +128,100, 84,255,127, 99, 82,255,125, 97, 81,255,122, 94, 79,255,121, 92, 77,255,119, 90, 76,255,116, 87, 74,255,114, 85, 72,255, +112, 83, 70,255,110, 80, 68,255, 85, 70, 65,255, 61, 61, 61,255, 61, 61, 61,255, 88, 73, 67,255,117, 88, 74,255,131,103, 86,255, +149,123,101,255,161,136,111,255,167,142,116,255,168,144,117,255,168,144,117,255,169,145,118,255,170,145,118,255,169,145,118,255, +170,146,118,255,170,146,119,255,171,147,119,255,172,147,120,255,173,148,121,255,172,149,120,255,173,148,121,255,173,149,121,255, +174,150,122,255,174,150,122,255,175,151,123,255,175,151,123,255,175,152,123,255,174,152,122,255,176,152,124,255,176,152,124,255, +175,151,123,255,177,153,125,255,177,153,125,255,177,153,125,255,176,153,125,255,176,154,124,255,176,154,125,255,177,154,125,255, +177,154,125,255,176,154,125,255,177,153,124,255,177,153,124,255,176,153,124,255,177,153,125,255,177,154,125,255,176,152,125,255, +177,153,124,255,176,152,123,255,176,152,124,255,174,152,122,255,174,151,123,255,173,150,122,255,173,149,121,255,172,149,121,255, +173,149,121,255,171,147,119,255,171,147,119,255,169,145,118,255,169,145,118,255,168,144,117,255,167,143,116,255,166,142,116,255, +165,141,115,255,164,140,114,255,164,139,113,255,163,138,113,255,161,137,111,255,160,135,110,255,159,134,109,255,157,132,108,255, +156,131,107,255,155,130,106,255,153,128,105,255,152,126,104,255,151,125,103,255,149,123,101,255,147,121,100,255,146,120, 99,255, +144,118, 97,255,142,116, 95,255,141,114, 94,255,139,112, 93,255,137,110, 91,255,136,108, 90,255,133,106, 88,255,131,104, 86,255, +129,101, 85,255,127, 99, 83,255,125, 97, 81,255,123, 95, 79,255,122, 93, 78,255,119, 90, 76,255,117, 88, 74,255,115, 86, 72,255, +112, 83, 70,255,110, 81, 69,255, 85, 70, 65,255, 61, 61, 61,255, 61, 61, 61,255, 90, 75, 68,255,114, 85, 72,255,121, 92, 77,255, +141,114, 94,255,157,131,108,255,165,140,115,255,168,143,117,255,169,145,117,255,169,144,117,255,170,145,117,255,170,145,118,255, +169,146,118,255,170,146,119,255,171,147,119,255,172,147,120,255,173,148,121,255,172,149,120,255,173,148,121,255,174,149,122,255, +174,150,122,255,175,151,123,255,174,150,122,255,175,151,123,255,175,152,123,255,174,152,122,255,176,152,124,255,176,152,124,255, +175,151,123,255,177,153,125,255,177,153,124,255,177,153,124,255,177,153,124,255,177,154,125,255,177,154,125,255,177,154,125,255, +177,154,125,255,177,154,125,255,176,154,125,255,176,154,125,255,176,154,125,255,177,154,125,255,176,153,124,255,177,153,125,255, +176,153,124,255,175,152,124,255,176,151,123,255,174,151,122,255,175,151,123,255,173,149,121,255,173,150,122,255,173,149,122,255, +172,148,120,255,172,148,120,255,171,147,119,255,169,145,118,255,169,145,118,255,169,145,118,255,167,143,116,255,167,143,116,255, +166,142,115,255,165,140,114,255,164,139,113,255,163,139,113,255,161,137,111,255,161,136,111,255,159,134,110,255,158,133,109,255, +157,132,108,255,155,130,107,255,154,129,105,255,153,127,104,255,151,126,103,255,149,124,101,255,148,122,100,255,147,121, 98,255, +145,119, 97,255,143,117, 96,255,141,114, 94,255,140,113, 93,255,138,111, 92,255,136,108, 90,255,134,107, 88,255,132,105, 87,255, +130,102, 85,255,129,101, 84,255,126, 98, 82,255,124, 95, 80,255,122, 93, 78,255,120, 91, 77,255,117, 88, 75,255,115, 86, 73,255, +113, 84, 71,255,111, 81, 69,255, 86, 71, 65,255, 61, 61, 61,255, 61, 61, 61,255,105, 92, 80,255,121, 92, 78,255,114, 85, 72,255, +129,101, 84,255,151,124,102,255,163,138,113,255,168,143,116,255,169,143,117,255,169,145,117,255,170,144,117,255,170,145,118,255, +170,145,118,255,170,146,119,255,171,147,120,255,172,147,120,255,173,148,121,255,172,149,120,255,173,149,121,255,174,150,122,255, +174,150,122,255,175,151,123,255,175,150,123,255,175,152,123,255,175,152,123,255,174,152,122,255,176,152,124,255,176,151,124,255, +175,151,124,255,177,153,123,255,177,153,123,255,177,153,124,255,177,153,124,255,177,154,125,255,177,153,124,255,177,154,125,255, +177,154,125,255,177,154,125,255,177,154,125,255,177,153,125,255,177,154,125,255,177,153,125,255,177,152,125,255,175,152,123,255, +176,152,124,255,176,151,124,255,175,152,123,255,174,151,123,255,174,151,123,255,174,149,121,255,173,149,121,255,173,149,122,255, +171,147,120,255,172,148,120,255,171,147,120,255,169,145,118,255,170,145,118,255,169,145,117,255,167,143,117,255,166,142,116,255, +167,142,116,255,165,140,114,255,164,140,113,255,164,139,114,255,162,137,112,255,161,136,111,255,160,135,111,255,158,134,109,255, +157,133,108,255,156,131,108,255,154,129,106,255,153,128,105,255,152,127,104,255,150,124,102,255,149,123,101,255,148,122,100,255, +145,119, 98,255,144,118, 97,255,142,116, 96,255,140,114, 93,255,138,111, 92,255,136,110, 90,255,135,108, 89,255,133,105, 87,255, +130,102, 85,255,129,101, 84,255,127, 99, 82,255,124, 96, 80,255,122, 94, 79,255,120, 92, 77,255,118, 89, 75,255,116, 87, 73,255, +113, 84, 71,255,111, 81, 69,255, 86, 71, 65,255, 61, 61, 61,255, 60, 60, 60,255,134,124,111,255,161,137,113,255,117, 88, 74,255, +115, 86, 73,255,138,111, 91,255,159,133,109,255,166,141,115,255,168,143,117,255,169,144,118,255,169,144,118,255,170,144,117,255, +170,145,118,255,170,147,119,255,171,148,120,255,172,147,120,255,173,147,121,255,172,149,120,255,173,149,121,255,174,150,122,255, +174,150,122,255,175,151,123,255,175,150,123,255,175,152,123,255,174,152,122,255,175,152,123,255,176,152,124,255,176,151,124,255, +175,152,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,154,125,255,177,154,125,255, +177,154,125,255,177,154,125,255,177,153,125,255,177,154,124,255,176,153,125,255,176,152,124,255,176,152,124,255,175,153,123,255, +175,152,124,255,176,151,123,255,174,152,123,255,174,150,123,255,174,150,122,255,173,150,122,255,173,149,122,255,172,148,121,255, +171,147,120,255,171,147,120,255,171,147,119,255,169,145,118,255,169,145,118,255,168,144,117,255,167,143,117,255,166,142,116,255, +166,142,116,255,165,140,114,255,164,140,114,255,163,139,113,255,162,137,112,255,161,137,112,255,160,136,111,255,159,134,109,255, +157,133,108,255,157,132,108,255,155,130,106,255,154,129,105,255,152,127,104,255,151,125,103,255,149,124,101,255,148,122,100,255, +146,120, 98,255,145,119, 97,255,143,117, 95,255,141,114, 94,255,139,113, 92,255,137,110, 91,255,135,108, 89,255,133,106, 88,255, +131,103, 87,255,129,101, 84,255,127, 99, 83,255,125, 97, 80,255,123, 94, 79,255,121, 92, 77,255,118, 89, 75,255,116, 87, 74,255, +114, 85, 72,255,112, 82, 70,255, 86, 71, 65,255, 61, 61, 61,255, 60, 60, 60,255,145,141,134,255,215,203,183,255,164,139,114,255, +115, 86, 72,255,120, 92, 77,255,148,121, 99,255,164,139,113,255,167,143,116,255,168,144,117,255,169,144,118,255,170,145,118,255, +170,145,118,255,170,146,119,255,171,147,120,255,172,148,120,255,173,147,121,255,172,149,120,255,173,149,121,255,174,150,122,255, +173,149,121,255,175,151,123,255,175,150,123,255,175,152,123,255,174,152,122,255,175,152,123,255,175,152,123,255,176,152,124,255, +175,151,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,152,123,255,177,153,124,255,177,153,125,255,177,154,125,255, +177,154,125,255,177,154,125,255,177,154,125,255,177,153,125,255,177,152,124,255,176,153,124,255,175,153,123,255,176,152,124,255, +176,151,124,255,175,152,123,255,175,151,122,255,174,150,122,255,173,150,122,255,174,149,121,255,172,149,122,255,172,148,121,255, +172,148,121,255,171,147,119,255,170,146,119,255,170,146,119,255,169,144,117,255,168,144,118,255,167,144,117,255,166,142,116,255, +166,142,116,255,165,140,114,255,164,140,114,255,163,139,113,255,162,137,112,255,161,136,112,255,161,136,111,255,159,134,109,255, +158,133,109,255,157,132,108,255,156,131,107,255,154,129,106,255,153,128,104,255,151,126,103,255,150,125,102,255,149,123,100,255, +147,121, 99,255,145,119, 98,255,143,117, 96,255,142,115, 95,255,140,113, 93,255,137,110, 92,255,136,109, 90,255,134,107, 88,255, +132,104, 86,255,130,102, 85,255,128,100, 83,255,125, 97, 81,255,124, 95, 79,255,121, 93, 78,255,119, 90, 76,255,117, 88, 74,255, +114, 85, 72,255,112, 83, 70,255, 87, 72, 65,255, 61, 61, 61,255, 59, 60, 60,255,150,147,141,255,227,220,208,255,214,204,186,255, +165,142,118,255,115, 87, 74,255,127, 99, 82,255,156,129,106,255,166,141,114,255,167,143,117,255,168,144,117,255,168,145,118,255, +170,145,118,255,170,146,119,255,171,146,120,255,172,148,120,255,173,148,121,255,172,148,120,255,173,149,121,255,173,149,121,255, +175,151,123,255,174,150,122,255,175,150,123,255,174,152,123,255,174,152,122,255,175,152,123,255,176,152,124,255,176,152,124,255, +175,151,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,152,123,255,177,153,124,255,177,153,125,255, +177,153,125,255,177,153,125,255,176,153,124,255,175,152,123,255,175,153,123,255,176,153,124,255,175,153,123,255,176,152,124,255, +175,152,123,255,174,152,122,255,175,151,123,255,173,150,122,255,174,149,121,255,172,149,122,255,173,148,121,255,172,148,121,255, +171,147,119,255,170,146,120,255,170,146,119,255,169,144,117,255,168,145,118,255,168,144,118,255,166,142,116,255,167,142,115,255, +166,141,116,255,164,140,114,255,164,139,114,255,163,138,113,255,162,137,112,255,161,137,112,255,161,136,111,255,159,134,109,255, +159,134,109,255,158,133,108,255,156,131,107,255,155,130,106,255,154,129,105,255,152,126,103,255,150,125,103,255,149,124,102,255, +147,121,100,255,145,120, 98,255,144,118, 97,255,142,116, 95,255,140,114, 94,255,139,112, 92,255,137,109, 90,255,135,107, 89,255, +132,105, 87,255,131,103, 85,255,128,100, 84,255,126, 98, 81,255,124, 96, 80,255,122, 93, 78,255,119, 90, 76,255,117, 88, 75,255, +115, 86, 73,255,113, 83, 70,255, 87, 72, 66,255, 61, 61, 61,255, 59, 60, 60,255,149,146,139,255,233,227,214,255,229,224,211,255, +216,208,191,255,171,150,128,255,120, 91, 75,255,133,106, 88,255,161,136,111,255,167,142,116,255,167,143,116,255,168,144,117,255, +169,145,118,255,170,146,119,255,170,146,119,255,172,148,120,255,172,148,121,255,172,148,120,255,173,149,121,255,173,149,121,255, +175,151,123,255,175,150,123,255,175,151,123,255,174,151,123,255,175,152,122,255,176,152,123,255,176,152,124,255,176,151,124,255, +175,152,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,152,123,255,176,153,124,255,176,152,124,255, +176,152,124,255,176,152,124,255,175,152,123,255,176,153,124,255,176,153,124,255,175,153,123,255,176,152,124,255,175,151,123,255, +174,152,122,255,175,151,123,255,174,151,123,255,173,149,121,255,173,150,122,255,172,149,121,255,172,148,121,255,171,147,120,255, +172,148,119,255,170,146,119,255,169,145,118,255,170,144,117,255,168,144,118,255,167,143,117,255,166,142,116,255,166,141,116,255, +165,141,115,255,164,140,114,255,163,139,113,255,163,138,113,255,161,137,112,255,161,136,111,255,160,136,111,255,159,134,109,255, +158,133,109,255,158,133,108,255,156,131,107,255,155,130,106,255,154,129,105,255,152,127,104,255,151,125,103,255,149,124,102,255, +148,122,100,255,146,120, 99,255,145,119, 98,255,143,116, 96,255,141,114, 94,255,139,112, 92,255,137,110, 91,255,135,108, 89,255, +133,105, 87,255,131,103, 86,255,129,101, 84,255,126, 98, 82,255,124, 96, 80,255,122, 94, 79,255,120, 91, 76,255,118, 89, 75,255, +115, 86, 73,255,113, 83, 71,255, 87, 72, 66,255, 61, 61, 61,255, 59, 60, 60,255,149,145,138,255,231,224,210,255,231,224,212,255, +231,225,213,255,221,214,200,255,182,165,145,255,123, 94, 78,255,142,116, 95,255,165,141,115,255,167,142,116,255,167,144,116,255, +169,145,118,255,170,145,118,255,170,146,119,255,172,148,120,255,172,148,120,255,172,149,120,255,173,149,121,255,173,150,121,255, +175,151,123,255,175,150,123,255,175,151,123,255,174,152,122,255,175,152,123,255,176,151,123,255,176,152,124,255,176,151,124,255, +175,152,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,153,124,255,176,153,124,255,177,152,123,255,176,153,123,255, +175,153,123,255,175,153,123,255,176,153,124,255,176,153,124,255,176,152,124,255,176,152,124,255,175,152,123,255,174,151,122,255, +175,151,123,255,174,151,122,255,173,151,123,255,173,149,121,255,173,150,121,255,172,148,122,255,172,148,120,255,172,148,120,255, +171,147,119,255,170,146,119,255,170,145,118,255,169,145,118,255,168,144,117,255,167,143,117,255,166,142,116,255,166,141,115,255, +165,141,115,255,164,139,114,255,163,138,113,255,163,138,113,255,161,137,111,255,161,136,111,255,160,135,111,255,159,134,109,255, +158,133,109,255,157,133,108,255,156,131,107,255,155,130,106,255,154,129,106,255,152,127,104,255,151,126,103,255,150,125,102,255, +148,123,100,255,147,121,100,255,145,118, 98,255,143,117, 96,255,142,115, 95,255,139,112, 93,255,138,111, 91,255,136,109, 90,255, +133,106, 87,255,132,104, 86,255,129,101, 85,255,127, 99, 82,255,125, 96, 81,255,123, 94, 79,255,120, 91, 77,255,118, 90, 75,255, +116, 87, 73,255,114, 84, 71,255, 87, 72, 66,255, 61, 61, 61,255, 59, 60, 60,255,149,145,137,255,231,224,210,255,230,223,210,255, +230,224,211,255,232,226,214,255,227,221,209,255,192,178,159,255,125, 99, 83,255,146,119, 98,255,166,141,115,255,167,142,116,255, +168,144,117,255,169,145,118,255,170,146,119,255,171,148,119,255,172,147,120,255,172,149,120,255,173,149,121,255,173,149,121,255, +175,151,123,255,175,150,123,255,175,151,123,255,175,151,122,255,175,151,123,255,176,152,124,255,176,152,124,255,175,151,124,255, +176,152,124,255,177,153,124,255,177,153,124,255,176,153,124,255,177,153,124,255,177,153,124,255,176,153,124,255,176,153,124,255, +176,153,124,255,176,153,124,255,176,153,124,255,176,152,124,255,175,153,123,255,175,151,123,255,174,152,122,255,175,151,123,255, +175,151,122,255,174,151,123,255,174,149,121,255,173,150,122,255,172,149,122,255,173,148,120,255,171,147,121,255,172,148,120,255, +170,146,119,255,169,145,118,255,170,145,118,255,168,144,117,255,167,143,117,255,167,143,116,255,166,141,115,255,165,141,114,255, +164,140,114,255,163,139,113,255,162,138,112,255,162,137,112,255,161,136,111,255,160,135,110,255,160,135,110,255,158,133,109,255, +158,133,108,255,157,132,108,255,155,130,107,255,155,130,106,255,154,129,106,255,153,127,104,255,151,126,103,255,150,125,102,255, +148,123,101,255,147,121,100,255,146,120, 99,255,144,118, 97,255,142,116, 95,255,141,114, 93,255,138,111, 92,255,136,109, 90,255, +134,107, 88,255,132,105, 87,255,130,102, 85,255,127, 99, 82,255,125, 97, 81,255,123, 94, 79,255,120, 92, 77,255,119, 90, 76,255, +116, 87, 74,255,114, 84, 71,255, 87, 72, 66,255, 61, 61, 61,255, 59, 60, 60,255,148,145,137,255,231,223,209,255,229,222,209,255, +229,223,209,255,230,223,209,255,231,225,212,255,232,226,214,255,206,196,181,255,148,127,110,255,146,119, 97,255,168,143,116,255, +168,143,117,255,169,144,117,255,169,145,118,255,171,147,120,255,172,147,120,255,172,149,120,255,173,149,121,255,173,149,121,255, +175,151,123,255,175,151,123,255,175,150,123,255,175,150,123,255,176,152,123,255,175,151,124,255,176,152,124,255,175,151,124,255, +176,152,124,255,176,152,124,255,176,153,124,255,177,153,124,255,176,153,124,255,176,153,124,255,175,153,124,255,176,153,124,255, +176,153,124,255,176,153,124,255,176,152,124,255,175,153,123,255,176,152,124,255,175,151,123,255,174,151,122,255,174,152,123,255, +174,151,123,255,173,150,122,255,174,150,122,255,172,150,122,255,173,149,121,255,172,148,120,255,171,147,120,255,171,147,120,255, +170,146,118,255,169,145,118,255,170,144,117,255,168,145,117,255,167,143,116,255,166,142,116,255,166,141,115,255,165,140,114,255, +164,140,114,255,163,138,113,255,162,138,112,255,162,137,112,255,160,135,110,255,160,135,110,255,159,134,110,255,158,133,109,255, +157,132,108,255,156,132,108,255,155,130,107,255,155,130,106,255,154,129,106,255,153,127,104,255,152,126,104,255,151,125,103,255, +149,123,101,255,147,122,100,255,145,120, 99,255,144,118, 97,255,143,116, 96,255,140,114, 93,255,139,112, 92,255,137,109, 91,255, +134,107, 89,255,133,105, 87,255,130,102, 85,255,128,100, 83,255,126, 98, 81,255,123, 95, 79,255,121, 92, 78,255,119, 90, 76,255, +117, 87, 74,255,115, 85, 72,255, 88, 72, 66,255, 61, 61, 61,255, 59, 60, 60,255,148,145,137,255,230,223,209,255,230,222,208,255, +230,222,208,255,229,222,208,255,230,223,209,255,230,223,210,255,231,225,212,255,222,215,203,255,167,150,135,255,143,117, 95,255, +170,146,118,255,168,143,117,255,169,145,118,255,171,147,120,255,172,147,120,255,173,149,120,255,173,149,121,255,173,149,121,255, +175,151,123,255,175,151,123,255,175,151,123,255,174,150,123,255,176,152,124,255,176,152,123,255,176,152,124,255,175,151,124,255, +176,152,124,255,177,153,124,255,177,153,124,255,176,153,124,255,175,153,124,255,175,153,124,255,176,153,124,255,176,153,124,255, +176,153,124,255,176,153,124,255,175,153,123,255,176,152,124,255,175,151,123,255,174,152,122,255,174,152,123,255,175,151,123,255, +174,151,123,255,173,150,122,255,174,149,121,255,172,149,122,255,173,149,121,255,171,147,120,255,172,148,120,255,171,147,119,255, +171,147,118,255,169,145,118,255,169,145,117,255,168,144,117,255,167,143,117,255,167,142,116,255,165,141,115,255,164,140,114,255, +164,139,114,255,162,138,112,255,162,137,112,255,161,136,111,255,160,135,110,255,160,135,110,255,159,134,109,255,157,133,108,255, +156,132,107,255,155,131,108,255,155,130,106,255,155,130,106,255,154,129,106,255,152,127,104,255,152,126,104,255,151,125,103,255, +149,123,101,255,148,122,100,255,146,121, 99,255,145,119, 97,255,143,117, 96,255,141,114, 94,255,139,113, 93,255,137,110, 91,255, +135,107, 89,255,133,106, 88,255,131,103, 86,255,128,100, 83,255,127, 98, 82,255,124, 96, 80,255,121, 93, 78,255,120, 91, 76,255, +117, 88, 74,255,115, 85, 72,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,145,137,255,230,223,209,255,228,221,207,255, +228,222,207,255,229,221,208,255,229,222,208,255,229,222,208,255,229,222,209,255,231,224,211,255,233,228,215,255,188,176,163,255, +149,126,105,255,166,142,116,255,170,145,118,255,170,146,119,255,171,147,119,255,171,147,121,255,173,149,121,255,173,149,121,255, +175,151,123,255,174,151,123,255,174,150,123,255,175,151,123,255,176,152,124,255,176,152,124,255,176,152,124,255,176,151,124,255, +175,152,124,255,176,153,124,255,175,153,124,255,175,153,124,255,176,153,124,255,176,153,124,255,176,153,124,255,176,153,124,255, +176,152,124,255,176,153,123,255,175,152,124,255,175,151,123,255,174,152,122,255,174,152,123,255,175,151,123,255,173,151,123,255, +174,150,122,255,174,149,121,255,172,149,122,255,173,149,121,255,172,148,120,255,171,147,120,255,171,147,119,255,171,147,119,255, +169,145,118,255,169,145,118,255,169,145,117,255,167,143,117,255,166,142,116,255,166,142,116,255,165,140,114,255,164,140,114,255, +163,139,113,255,162,137,112,255,161,136,112,255,161,136,111,255,159,135,110,255,159,134,109,255,158,133,109,255,157,132,107,255, +156,131,107,255,155,130,107,255,154,129,106,255,154,129,106,255,153,128,104,255,152,127,104,255,152,126,103,255,151,125,102,255, +149,123,101,255,148,122,100,255,147,121, 99,255,145,119, 97,255,144,117, 97,255,141,116, 94,255,140,113, 93,255,138,111, 91,255, +136,108, 90,255,134,106, 88,255,131,103, 86,255,129,101, 84,255,127, 99, 82,255,124, 96, 80,255,122, 93, 78,255,120, 91, 77,255, +117, 88, 75,255,115, 85, 72,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,137,255,230,222,208,255,229,221,207,255, +229,221,207,255,228,222,207,255,228,221,207,255,228,221,207,255,229,221,208,255,229,222,208,255,230,223,209,255,233,227,213,255, +212,205,191,255,171,153,135,255,160,134,109,255,172,147,119,255,171,147,119,255,172,148,121,255,173,149,121,255,174,149,121,255, +174,151,123,255,175,151,123,255,175,151,123,255,174,150,123,255,176,152,124,255,176,152,124,255,176,152,124,255,176,151,124,255, +176,152,124,255,175,153,124,255,176,153,124,255,176,153,124,255,176,153,124,255,176,153,124,255,176,153,124,255,176,152,124,255, +176,153,123,255,175,152,124,255,175,151,123,255,174,152,122,255,175,151,123,255,175,151,123,255,174,151,123,255,174,150,122,255, +173,150,122,255,174,149,121,255,173,150,121,255,173,149,121,255,172,148,121,255,172,148,119,255,171,147,119,255,170,146,119,255, +169,145,118,255,169,144,117,255,168,144,118,255,167,144,116,255,166,142,116,255,166,141,115,255,164,140,114,255,164,140,114,255, +163,138,113,255,161,137,112,255,161,136,111,255,160,136,111,255,159,134,109,255,158,133,109,255,158,133,108,255,156,132,107,255, +156,131,107,255,155,130,107,255,154,129,105,255,153,128,105,255,153,128,105,255,151,126,103,255,151,126,103,255,150,125,101,255, +149,123,101,255,148,122,100,255,147,121,100,255,145,119, 98,255,144,117, 96,255,142,115, 95,255,140,114, 93,255,138,111, 92,255, +136,109, 90,255,134,107, 88,255,132,104, 86,255,129,101, 84,255,127, 99, 82,255,125, 96, 81,255,122, 94, 79,255,120, 91, 77,255, +118, 88, 75,255,115, 85, 72,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,137,255,230,222,207,255,229,220,206,255, +229,220,207,255,229,221,206,255,229,220,206,255,228,221,207,255,229,222,207,255,229,221,207,255,229,221,207,255,229,221,207,255, +229,221,207,255,227,221,208,255,194,184,170,255,156,133,109,255,171,146,119,255,171,148,120,255,173,149,121,255,173,149,121,255, +173,151,123,255,174,150,122,255,175,151,123,255,175,151,123,255,176,152,124,255,175,152,123,255,176,152,124,255,176,151,124,255, +176,152,124,255,176,153,124,255,176,152,124,255,176,153,124,255,176,153,124,255,176,153,124,255,176,153,124,255,176,153,123,255, +176,152,124,255,176,151,123,255,175,152,122,255,174,152,123,255,175,152,123,255,175,151,123,255,174,150,122,255,173,151,123,255, +174,150,122,255,173,149,121,255,173,150,122,255,173,148,121,255,172,148,121,255,172,148,119,255,171,147,119,255,170,146,118,255, +170,146,119,255,169,144,117,255,168,144,118,255,167,143,116,255,167,142,116,255,166,141,115,255,164,140,114,255,163,139,113,255, +163,138,112,255,161,137,112,255,161,136,111,255,160,135,111,255,159,134,109,255,158,133,109,255,157,133,108,255,156,131,107,255, +155,130,107,255,155,130,106,255,154,129,105,255,153,128,105,255,152,127,104,255,152,126,103,255,151,125,103,255,150,125,102,255, +148,123,101,255,148,122,101,255,147,121,100,255,145,119, 98,255,144,118, 97,255,142,115, 95,255,140,114, 94,255,139,112, 92,255, +136,109, 90,255,135,108, 89,255,132,105, 87,255,130,102, 85,255,128,100, 83,255,125, 97, 81,255,122, 94, 79,255,121, 92, 77,255, +118, 89, 75,255,115, 86, 73,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,230,222,207,255,229,221,206,255, +229,221,206,255,229,221,207,255,229,221,206,255,228,220,206,255,227,220,205,255,228,221,206,255,228,220,206,255,227,219,205,255, +227,219,205,255,227,220,205,255,230,223,209,255,215,208,195,255,169,151,130,255,170,145,119,255,171,147,120,255,173,149,121,255, +174,149,121,255,174,151,122,255,175,150,123,255,174,151,122,255,175,151,123,255,176,152,123,255,176,152,124,255,176,152,124,255, +176,151,124,255,176,152,124,255,176,152,124,255,176,152,124,255,176,151,123,255,176,151,124,255,176,151,123,255,175,152,123,255, +176,151,123,255,175,152,122,255,174,151,123,255,175,152,123,255,175,151,123,255,174,150,122,255,173,151,123,255,174,149,121,255, +173,150,122,255,173,150,122,255,172,148,121,255,172,148,120,255,171,147,120,255,172,148,119,255,170,146,119,255,170,146,119,255, +169,144,117,255,168,144,118,255,168,144,117,255,166,142,116,255,166,142,115,255,165,141,115,255,164,140,114,255,163,139,113,255, +162,138,113,255,161,136,111,255,160,136,111,255,160,135,111,255,158,133,109,255,158,133,108,255,157,132,107,255,155,130,107,255, +155,130,106,255,154,129,106,255,153,128,105,255,152,127,104,255,151,127,103,255,151,125,102,255,150,125,102,255,150,123,102,255, +148,123,101,255,148,122,100,255,147,121, 99,255,145,119, 98,255,144,118, 97,255,142,117, 95,255,141,114, 94,255,139,113, 93,255, +137,110, 91,255,135,108, 89,255,133,105, 87,255,130,102, 85,255,128,100, 83,255,125, 97, 81,255,123, 94, 79,255,121, 92, 77,255, +118, 89, 75,255,116, 86, 73,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,230,222,207,255,229,221,206,255, +228,220,206,255,229,221,206,255,228,220,206,255,228,220,205,255,227,221,206,255,227,220,205,255,227,220,205,255,228,220,205,255, +227,219,204,255,226,219,204,255,227,219,203,255,229,221,206,255,224,217,203,255,194,181,165,255,166,145,122,255,170,146,117,255, +173,149,121,255,174,150,122,255,174,151,122,255,175,150,123,255,175,151,122,255,175,151,123,255,176,152,124,255,175,151,123,255, +176,152,124,255,176,151,124,255,176,151,124,255,176,151,124,255,176,152,124,255,176,152,123,255,176,152,122,255,176,151,122,255, +175,152,122,255,174,152,123,255,175,152,123,255,174,151,123,255,175,150,123,255,173,151,123,255,174,150,122,255,173,150,122,255, +173,150,122,255,172,149,121,255,173,149,120,255,172,148,120,255,172,148,120,255,171,147,120,255,170,146,118,255,169,145,118,255, +169,144,117,255,168,144,118,255,167,143,117,255,166,142,116,255,166,141,116,255,165,141,115,255,165,139,115,255,163,138,113,255, +162,138,113,255,161,136,111,255,160,135,110,255,160,135,110,255,158,133,109,255,157,132,108,255,156,132,108,255,155,130,106,255, +154,129,106,255,154,129,106,255,152,127,104,255,152,127,103,255,152,126,102,255,150,125,103,255,150,124,102,255,149,124,101,255, +148,122,100,255,148,122,100,255,147,121, 98,255,145,119, 98,255,144,118, 97,255,142,116, 95,255,141,115, 94,255,140,113, 93,255, +137,110, 91,255,135,108, 89,255,133,106, 88,255,130,102, 85,255,128,100, 83,255,126, 97, 81,255,123, 94, 79,255,121, 92, 77,255, +118, 89, 75,255,116, 86, 73,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,230,222,207,255,228,220,205,255, +229,221,205,255,228,220,205,255,228,220,205,255,227,219,206,255,228,220,205,255,228,220,205,255,227,219,204,255,227,219,204,255, +226,218,203,255,227,219,203,255,226,218,203,255,226,218,202,255,226,218,202,255,227,219,204,255,219,211,196,255,172,155,136,255, +167,143,116,255,174,150,121,255,174,150,122,255,174,151,122,255,175,150,123,255,175,151,123,255,175,151,123,255,176,152,124,255, +176,151,124,255,176,152,124,255,176,152,124,255,176,152,123,255,176,152,123,255,176,152,122,255,176,152,122,255,175,152,123,255, +174,152,123,255,174,152,123,255,175,152,123,255,175,151,123,255,174,150,123,255,173,151,123,255,173,150,122,255,174,149,121,255, +172,149,121,255,172,148,120,255,173,149,120,255,171,147,120,255,172,148,120,255,170,146,119,255,169,146,119,255,170,145,118,255, +168,144,118,255,168,144,118,255,167,143,117,255,166,142,115,255,165,141,115,255,165,141,115,255,163,139,113,255,163,138,113,255, +162,138,112,255,161,136,111,255,160,135,111,255,160,135,110,255,158,133,108,255,157,132,108,255,156,131,108,255,155,130,106,255, +154,129,106,255,154,129,105,255,152,127,104,255,152,126,103,255,151,126,102,255,149,124,102,255,150,124,102,255,149,123,101,255, +148,122,100,255,147,121,100,255,147,121, 99,255,145,119, 98,255,144,118, 97,255,142,116, 96,255,141,115, 94,255,140,113, 93,255, +137,110, 91,255,136,108, 90,255,133,106, 88,255,131,103, 85,255,129,100, 83,255,126, 97, 82,255,123, 94, 79,255,121, 92, 77,255, +118, 89, 75,255,116, 86, 72,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,230,222,207,255,229,221,205,255, +228,220,205,255,227,219,206,255,228,220,206,255,228,219,205,255,228,220,205,255,227,219,204,255,226,218,203,255,227,219,204,255, +227,218,202,255,226,218,202,255,227,218,201,255,225,217,201,255,226,217,201,255,225,216,200,255,226,218,202,255,231,224,210,255, +194,183,168,255,168,147,124,255,170,146,119,255,174,150,121,255,174,151,122,255,174,151,122,255,175,151,123,255,174,151,122,255, +175,151,123,255,175,151,123,255,176,152,123,255,175,152,123,255,175,151,122,255,175,151,123,255,175,152,123,255,175,152,123,255, +174,151,123,255,175,151,123,255,175,151,123,255,174,150,122,255,174,151,123,255,173,150,122,255,174,149,121,255,172,150,122,255, +173,149,121,255,173,149,120,255,171,147,121,255,172,148,120,255,171,147,120,255,170,146,118,255,169,145,118,255,169,144,117,255, +168,144,118,255,167,143,117,255,167,143,116,255,166,141,115,255,165,141,115,255,164,140,114,255,163,138,113,255,162,138,113,255, +162,137,112,255,160,135,110,255,160,135,110,255,159,134,110,255,157,132,108,255,156,132,107,255,156,131,107,255,154,129,106,255, +154,129,106,255,152,128,105,255,152,127,103,255,151,126,103,255,150,124,102,255,149,124,101,255,149,123,101,255,148,122,101,255, +147,121,100,255,147,121, 99,255,145,119, 98,255,145,119, 98,255,144,118, 97,255,142,116, 97,255,141,115, 95,255,140,113, 93,255, +137,110, 91,255,136,109, 90,255,134,106, 88,255,131,103, 86,255,129,100, 84,255,126, 98, 82,255,123, 94, 79,255,121, 92, 77,255, +118, 89, 75,255,116, 86, 72,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,230,222,207,255,228,220,205,255, +227,219,205,255,228,220,206,255,228,220,205,255,228,220,204,255,227,219,205,255,227,218,203,255,226,219,204,255,227,218,203,255, +226,218,203,255,227,217,202,255,226,217,201,255,225,217,201,255,226,216,200,255,225,216,200,255,225,216,200,255,225,216,200,255, +228,219,204,255,217,209,195,255,189,175,156,255,162,139,115,255,172,147,118,255,174,150,122,255,174,150,122,255,174,151,122,255, +175,151,123,255,174,150,122,255,175,151,123,255,175,151,122,255,174,150,123,255,174,150,123,255,174,151,123,255,174,151,123,255, +175,151,123,255,175,150,123,255,175,150,122,255,174,151,123,255,173,150,122,255,174,149,121,255,173,150,122,255,173,149,121,255, +173,148,120,255,172,148,121,255,172,148,120,255,172,148,119,255,171,147,119,255,169,145,118,255,170,145,118,255,169,145,117,255, +167,143,117,255,167,143,117,255,167,143,116,255,165,141,116,255,165,140,114,255,164,140,114,255,162,138,112,255,162,138,112,255, +162,137,112,255,160,135,110,255,159,134,110,255,158,134,109,255,157,132,108,255,156,132,108,255,156,131,107,255,154,129,105,255, +154,129,105,255,153,128,105,255,152,126,103,255,151,125,103,255,150,125,102,255,149,123,101,255,148,123,101,255,147,121,100,255, +147,121, 99,255,146,120, 99,255,146,120, 99,255,145,119, 98,255,144,118, 97,255,142,116, 96,255,141,115, 95,255,140,113, 94,255, +138,111, 91,255,136,109, 90,255,134,107, 88,255,131,103, 86,255,129,101, 84,255,126, 98, 82,255,123, 95, 79,255,121, 92, 77,255, +118, 89, 75,255,116, 86, 72,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,230,222,207,255,227,219,205,255, +228,220,206,255,228,220,206,255,228,219,204,255,228,220,205,255,228,219,204,255,226,219,203,255,226,219,204,255,227,219,203,255, +227,217,203,255,226,217,202,255,225,217,201,255,226,217,201,255,225,216,200,255,226,217,201,255,224,215,199,255,224,215,200,255, +224,215,199,255,225,216,199,255,225,217,202,255,218,209,194,255,170,151,132,255,168,144,116,255,173,149,121,255,174,150,122,255, +173,149,121,255,175,151,123,255,175,151,123,255,175,151,123,255,175,151,123,255,174,150,122,255,175,150,123,255,174,150,122,255, +175,150,123,255,175,151,123,255,174,151,123,255,173,151,122,255,173,150,121,255,174,150,122,255,173,149,121,255,172,148,120,255, +173,149,121,255,172,148,120,255,171,147,119,255,171,147,120,255,170,146,119,255,169,145,118,255,169,144,117,255,169,145,117,255, +167,143,118,255,167,142,116,255,167,143,116,255,165,141,115,255,164,140,114,255,164,140,114,255,162,138,112,255,162,137,112,255, +162,137,112,255,160,135,110,255,159,134,110,255,158,134,109,255,157,132,108,255,156,131,107,255,155,130,106,255,154,129,106,255, +153,128,105,255,153,127,104,255,151,126,103,255,150,125,102,255,150,124,102,255,148,122,100,255,147,122,101,255,148,122,100,255, +146,120, 99,255,146,120, 99,255,146,120, 98,255,144,118, 97,255,144,117, 97,255,142,117, 95,255,141,115, 95,255,140,113, 94,255, +138,111, 91,255,136,109, 90,255,134,107, 88,255,131,103, 86,255,129,101, 84,255,126, 98, 82,255,124, 95, 80,255,121, 92, 78,255, +118, 89, 75,255,116, 85, 72,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,229,221,206,255,228,220,205,255, +228,220,205,255,228,220,204,255,228,220,205,255,227,219,204,255,228,218,203,255,226,219,204,255,227,219,203,255,227,218,203,255, +227,217,202,255,226,218,201,255,225,218,202,255,225,216,200,255,226,217,201,255,224,215,199,255,225,216,199,255,225,216,198,255, +224,215,199,255,224,215,198,255,224,215,198,255,225,217,200,255,228,221,206,255,190,178,163,255,170,148,125,255,169,144,118,255, +173,148,121,255,173,149,121,255,173,149,121,255,173,149,121,255,174,150,122,255,174,150,122,255,174,150,122,255,174,150,122,255, +174,150,122,255,173,150,121,255,173,149,121,255,174,149,121,255,174,150,121,255,173,149,121,255,172,149,121,255,173,149,120,255, +172,148,120,255,171,147,120,255,172,148,120,255,170,146,119,255,170,146,118,255,169,146,119,255,169,144,117,255,168,144,118,255, +167,143,116,255,166,142,115,255,166,142,116,255,165,140,114,255,164,140,114,255,164,139,114,255,162,138,112,255,162,137,112,255, +161,136,112,255,160,135,110,255,159,134,109,255,158,133,109,255,157,132,108,255,156,131,107,255,155,130,106,255,153,129,105,255, +153,128,105,255,152,127,104,255,150,125,102,255,150,124,102,255,148,124,102,255,148,122,100,255,148,122,100,255,146,120,100,255, +146,120, 98,255,145,119, 98,255,144,118, 98,255,144,118, 97,255,143,117, 96,255,143,115, 96,255,141,115, 94,255,140,113, 94,255, +138,111, 92,255,136,109, 90,255,134,107, 89,255,131,104, 86,255,129,101, 84,255,126, 98, 82,255,124, 95, 79,255,121, 92, 77,255, +118, 88, 75,255,115, 85, 72,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,229,221,206,255,228,220,206,255, +228,220,205,255,228,220,204,255,228,219,204,255,228,219,204,255,227,218,203,255,226,219,204,255,227,219,203,255,227,217,202,255, +227,218,202,255,226,217,201,255,225,218,202,255,226,216,200,255,225,216,200,255,224,215,199,255,225,216,199,255,224,215,198,255, +223,214,198,255,223,214,197,255,223,214,197,255,223,214,197,255,224,215,198,255,228,220,203,255,218,209,194,255,191,178,161,255, +161,139,117,255,168,143,115,255,172,149,121,255,173,149,121,255,173,150,122,255,173,150,122,255,173,150,122,255,174,150,121,255, +173,149,121,255,173,149,121,255,173,149,121,255,173,149,122,255,173,149,122,255,173,149,121,255,173,148,120,255,172,149,121,255, +171,147,120,255,172,148,119,255,171,147,120,255,170,146,118,255,169,146,119,255,170,145,118,255,168,145,117,255,168,144,117,255, +167,143,116,255,167,143,115,255,166,142,115,255,164,140,114,255,164,140,114,255,164,139,114,255,162,137,112,255,162,137,112,255, +161,136,111,255,159,135,110,255,158,134,109,255,158,133,109,255,156,132,107,255,155,131,106,255,155,130,106,255,153,128,105,255, +153,128,104,255,152,127,103,255,150,125,102,255,150,124,102,255,149,123,102,255,148,122,100,255,147,121,100,255,147,121, 99,255, +145,119, 98,255,145,119, 98,255,144,118, 97,255,143,117, 96,255,143,117, 96,255,142,116, 95,255,141,114, 94,255,140,113, 93,255, +138,111, 92,255,136,109, 90,255,134,107, 89,255,132,104, 86,255,129,101, 84,255,126, 98, 82,255,123, 95, 79,255,121, 92, 77,255, +117, 88, 75,255,115, 85, 72,255, 88, 73, 66,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,229,221,206,255,228,220,205,255, +228,220,204,255,228,219,204,255,228,219,204,255,228,218,203,255,227,219,204,255,227,218,204,255,227,219,203,255,227,218,203,255, +226,218,201,255,225,218,202,255,225,217,201,255,226,217,201,255,225,216,200,255,225,216,199,255,225,216,198,255,224,215,198,255, +224,215,197,255,224,214,197,255,224,215,198,255,223,214,197,255,224,213,196,255,223,213,196,255,224,215,198,255,225,216,200,255, +222,214,199,255,176,161,145,255,160,136,111,255,171,146,119,255,172,148,120,255,173,149,121,255,173,149,120,255,173,149,121,255, +173,149,120,255,172,148,120,255,173,149,121,255,173,149,121,255,173,149,121,255,173,149,120,255,173,149,121,255,172,148,120,255, +172,148,119,255,171,147,120,255,171,147,119,255,169,145,119,255,170,145,118,255,169,144,117,255,168,144,118,255,167,143,117,255, +167,143,116,255,166,142,115,255,165,141,115,255,165,140,114,255,164,139,113,255,164,139,114,255,162,137,112,255,161,137,111,255, +161,136,111,255,159,134,110,255,158,134,109,255,157,133,108,255,156,131,107,255,155,131,107,255,155,130,106,255,153,128,105,255, +152,127,104,255,152,126,103,255,150,125,103,255,150,124,102,255,149,123,101,255,147,121,100,255,147,121, 99,255,147,121, 99,255, +145,119, 97,255,145,119, 97,255,144,118, 96,255,143,117, 96,255,143,116, 96,255,141,115, 94,255,141,114, 94,255,139,112, 93,255, +138,111, 92,255,136,109, 90,255,134,107, 89,255,131,104, 86,255,130,101, 84,255,126, 98, 82,255,123, 94, 79,255,121, 92, 78,255, +117, 88, 75,255,115, 85, 72,255, 87, 72, 66,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,229,221,207,255,228,220,204,255, +228,219,205,255,228,220,205,255,228,218,204,255,227,219,203,255,227,219,204,255,227,219,203,255,227,218,202,255,226,217,203,255, +226,217,201,255,225,218,202,255,226,217,201,255,226,217,201,255,225,216,200,255,225,216,199,255,224,215,198,255,224,215,198,255, +224,215,198,255,224,214,197,255,224,214,197,255,223,213,196,255,223,214,197,255,222,214,197,255,222,213,196,255,223,213,196,255, +223,215,198,255,228,220,204,255,208,199,184,255,171,154,134,255,166,142,119,255,167,142,115,255,171,147,119,255,172,148,120,255, +172,148,120,255,172,148,120,255,172,148,120,255,171,147,120,255,171,147,121,255,172,148,120,255,172,148,120,255,171,147,119,255, +171,147,119,255,171,147,119,255,169,145,118,255,170,145,118,255,169,145,118,255,168,144,117,255,168,144,117,255,168,144,116,255, +166,142,116,255,166,142,116,255,165,141,115,255,164,140,114,255,164,139,113,255,163,138,113,255,161,137,111,255,161,136,111,255, +160,135,111,255,158,134,109,255,158,133,109,255,157,133,108,255,156,131,107,255,155,130,107,255,154,129,106,255,153,128,104,255, +152,127,103,255,151,126,103,255,150,125,102,255,149,124,101,255,149,123,101,255,147,121, 99,255,147,121, 99,255,145,119, 98,255, +144,118, 97,255,144,118, 97,255,144,117, 96,255,142,116, 95,255,142,115, 95,255,141,115, 94,255,140,113, 93,255,139,112, 93,255, +137,110, 91,255,136,109, 90,255,134,107, 89,255,131,104, 86,255,130,102, 85,255,127, 98, 82,255,123, 94, 79,255,120, 91, 77,255, +117, 88, 74,255,114, 84, 71,255, 87, 72, 66,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,229,221,206,255,228,219,205,255, +228,220,205,255,228,219,204,255,228,218,203,255,227,219,204,255,226,219,203,255,227,219,203,255,227,218,202,255,227,217,203,255, +226,218,201,255,225,217,201,255,226,217,201,255,225,216,200,255,225,216,200,255,225,216,198,255,224,215,198,255,223,214,197,255, +224,215,198,255,224,214,197,255,223,213,196,255,224,214,196,255,222,214,197,255,223,213,196,255,222,212,195,255,222,212,195,255, +223,213,195,255,223,214,196,255,224,216,199,255,223,216,200,255,204,194,178,255,175,158,140,255,155,131,106,255,169,144,117,255, +171,147,120,255,171,147,120,255,172,147,120,255,172,147,120,255,172,148,120,255,171,147,120,255,171,147,120,255,172,148,119,255, +171,147,119,255,170,146,118,255,170,146,119,255,169,145,118,255,169,144,117,255,169,145,118,255,167,143,116,255,167,143,117,255, +166,142,115,255,165,141,115,255,165,141,115,255,165,139,113,255,163,139,113,255,163,138,113,255,161,137,111,255,160,136,111,255, +159,135,110,255,158,134,109,255,158,133,109,255,157,132,108,255,156,131,107,255,155,130,107,255,154,129,106,255,152,127,104,255, +152,127,104,255,151,126,103,255,150,124,102,255,149,123,101,255,148,123,100,255,147,121,100,255,146,120, 99,255,146,120, 97,255, +144,118, 97,255,144,118, 97,255,143,116, 95,255,142,116, 95,255,142,115, 95,255,140,114, 93,255,139,113, 93,255,139,112, 92,255, +137,111, 91,255,136,108, 90,255,134,107, 88,255,131,104, 86,255,129,101, 84,255,126, 97, 82,255,123, 94, 79,255,120, 91, 77,255, +116, 87, 74,255,113, 84, 71,255, 86, 71, 65,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,229,221,206,255,228,220,205,255, +228,219,204,255,228,218,203,255,227,219,204,255,226,219,204,255,226,219,204,255,227,218,202,255,227,217,203,255,227,217,202,255, +225,218,202,255,226,217,201,255,226,216,200,255,225,216,200,255,224,215,200,255,224,215,198,255,223,214,197,255,223,214,197,255, +224,214,197,255,223,213,196,255,224,213,196,255,222,213,197,255,222,214,196,255,223,213,195,255,222,212,195,255,223,213,194,255, +223,213,195,255,222,212,194,255,223,213,195,255,222,212,195,255,224,214,197,255,225,216,201,255,210,200,185,255,159,141,123,255, +159,134,109,255,168,143,117,255,170,146,119,255,170,146,119,255,171,147,119,255,171,146,118,255,171,147,119,255,171,147,120,255, +170,146,118,255,169,145,118,255,170,146,119,255,168,144,117,255,169,145,118,255,168,144,117,255,167,143,117,255,167,143,116,255, +165,141,116,255,165,141,115,255,165,140,114,255,163,139,113,255,162,138,112,255,162,138,112,255,160,136,112,255,160,136,111,255, +159,135,110,255,158,133,109,255,157,133,108,255,156,131,107,255,155,130,107,255,154,129,106,255,154,129,105,255,152,127,104,255, +151,126,103,255,151,126,103,255,149,124,101,255,149,123,101,255,148,122,101,255,146,121, 99,255,146,120, 99,255,146,119, 98,255, +144,117, 96,255,143,117, 96,255,143,117, 96,255,141,115, 94,255,141,115, 94,255,140,113, 93,255,139,113, 92,255,138,111, 92,255, +137,109, 91,255,136,108, 90,255,134,106, 88,255,131,103, 86,255,129,101, 84,255,126, 97, 82,255,122, 94, 79,255,119, 90, 77,255, +115, 86, 74,255,111, 82, 70,255, 86, 71, 65,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,229,221,206,255,228,219,204,255, +227,218,203,255,228,219,204,255,227,219,204,255,226,219,204,255,227,219,203,255,227,218,202,255,226,217,203,255,227,218,202,255, +225,217,201,255,226,217,201,255,226,217,201,255,225,216,200,255,224,215,199,255,224,215,198,255,223,214,197,255,224,215,198,255, +224,213,197,255,223,214,196,255,223,213,197,255,223,214,195,255,223,213,195,255,222,212,195,255,223,213,194,255,222,212,194,255, +221,211,193,255,221,211,193,255,221,212,193,255,221,212,194,255,221,212,194,255,222,212,194,255,224,215,197,255,226,218,202,255, +193,183,168,255,164,145,126,255,159,136,112,255,163,139,112,255,169,145,118,255,169,145,118,255,169,145,118,255,169,145,118,255, +169,145,118,255,170,145,118,255,169,144,117,255,168,145,118,255,168,144,117,255,168,144,116,255,167,143,116,255,166,142,116,255, +166,141,115,255,164,140,114,255,164,140,113,255,163,138,113,255,162,138,112,255,162,137,112,255,160,136,111,255,159,135,110,255, +159,134,110,255,158,133,109,255,156,132,108,255,156,131,107,255,155,130,107,255,154,129,106,255,153,128,105,255,152,126,103,255, +151,126,103,255,150,125,103,255,149,124,101,255,148,123,100,255,148,122,100,255,146,120, 99,255,146,120, 98,255,144,119, 98,255, +144,117, 96,255,143,117, 96,255,142,115, 95,255,141,115, 94,255,141,114, 93,255,139,113, 93,255,139,112, 92,255,138,111, 92,255, +136,109, 90,255,135,108, 89,255,134,106, 88,255,131,103, 86,255,129,101, 84,255,126, 97, 81,255,122, 93, 79,255,118, 89, 76,255, +115, 86, 73,255,111, 82, 70,255, 85, 70, 64,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,229,220,205,255,228,218,203,255, +228,219,204,255,227,219,204,255,226,219,203,255,227,219,204,255,227,218,203,255,227,218,203,255,227,217,202,255,226,218,202,255, +225,217,201,255,226,216,200,255,226,217,201,255,224,215,199,255,224,215,199,255,225,216,199,255,223,214,197,255,224,215,198,255, +224,213,196,255,223,213,197,255,222,214,196,255,223,213,195,255,222,212,196,255,223,213,195,255,222,212,194,255,221,211,194,255, +221,211,193,255,222,212,193,255,221,211,193,255,221,211,193,255,221,211,193,255,221,211,193,255,221,211,193,255,222,212,194,255, +224,215,197,255,219,211,194,255,200,188,173,255,167,149,132,255,147,121, 99,255,163,138,111,255,168,144,117,255,168,143,117,255, +168,144,117,255,168,144,117,255,168,144,118,255,168,144,117,255,168,144,117,255,167,143,117,255,166,142,116,255,166,142,116,255, +165,140,114,255,164,140,114,255,164,139,114,255,163,139,113,255,162,137,112,255,161,137,112,255,160,136,111,255,159,134,110,255, +158,134,109,255,157,132,108,255,156,131,107,255,156,131,107,255,155,130,106,255,154,128,105,255,153,127,104,255,151,127,104,255, +151,126,103,255,150,124,102,255,148,123,101,255,148,122,101,255,147,122,100,255,146,120, 99,255,145,119, 98,255,145,119, 98,255, +143,117, 96,255,143,116, 96,255,141,116, 94,255,141,114, 94,255,140,114, 94,255,140,113, 92,255,138,111, 92,255,137,110, 91,255, +137,110, 90,255,134,107, 89,255,133,105, 88,255,131,103, 86,255,128,100, 84,255,125, 96, 81,255,121, 92, 78,255,117, 88, 75,255, +113, 84, 72,255,110, 80, 68,255, 84, 69, 64,255, 61, 61, 61,255, 59, 60, 60,255,148,143,135,255,229,220,205,255,228,219,204,255, +228,219,204,255,227,219,204,255,227,219,204,255,227,219,203,255,227,219,202,255,226,217,202,255,227,218,201,255,226,218,202,255, +226,217,201,255,226,216,200,255,225,216,200,255,224,215,199,255,225,216,199,255,223,214,197,255,224,215,198,255,224,214,197,255, +223,214,197,255,222,214,197,255,223,213,196,255,222,213,196,255,223,213,195,255,222,212,194,255,222,212,194,255,222,212,193,255, +222,212,193,255,220,210,191,255,220,210,191,255,221,211,191,255,221,211,191,255,221,211,191,255,220,210,191,255,220,210,191,255, +221,211,192,255,221,211,192,255,222,212,194,255,224,214,197,255,206,198,182,255,155,135,119,255,148,122,100,255,162,137,111,255, +165,141,115,255,166,142,115,255,167,143,116,255,166,142,116,255,167,143,115,255,165,141,115,255,166,142,116,255,165,141,115,255, +164,140,114,255,163,139,113,255,163,139,113,255,162,137,112,255,161,137,111,255,160,135,111,255,158,134,109,255,159,134,110,255, +157,132,108,255,156,132,108,255,155,131,107,255,155,130,107,255,153,128,105,255,153,127,104,255,152,127,104,255,151,126,103,255, +150,125,103,255,150,124,102,255,148,122,101,255,148,122,100,255,147,121,100,255,146,120, 98,255,145,119, 98,255,145,118, 98,255, +143,116, 96,255,143,116, 96,255,142,115, 95,255,140,114, 94,255,140,113, 93,255,138,111, 92,255,138,111, 91,255,137,110, 91,255, +135,108, 90,255,134,107, 89,255,133,105, 87,255,130,102, 85,255,128,100, 83,255,124, 96, 80,255,121, 92, 77,255,117, 88, 75,255, +112, 83, 71,255,108, 79, 67,255, 84, 69, 63,255, 61, 61, 61,255, 59, 60, 60,255,148,143,135,255,229,220,205,255,227,219,204,255, +227,219,204,255,226,219,203,255,227,219,203,255,227,219,203,255,227,219,202,255,227,217,202,255,226,217,201,255,226,218,202,255, +225,216,200,255,226,217,201,255,224,215,199,255,225,216,199,255,225,216,199,255,223,214,197,255,223,215,197,255,224,214,197,255, +222,213,196,255,223,213,196,255,223,212,196,255,223,213,195,255,222,212,194,255,222,212,194,255,221,211,193,255,222,212,192,255, +221,211,192,255,221,210,191,255,221,210,191,255,221,210,191,255,220,210,191,255,220,210,191,255,219,210,191,255,219,209,190,255, +219,209,190,255,219,209,190,255,220,210,191,255,220,210,191,255,222,212,193,255,224,216,197,255,196,184,169,255,160,140,124,255, +150,126,105,255,153,127,103,255,161,136,111,255,164,140,114,255,165,140,115,255,164,140,114,255,164,139,114,255,164,139,114,255, +163,139,113,255,162,138,112,255,161,138,111,255,161,137,111,255,159,135,110,255,158,135,109,255,159,134,110,255,157,133,108,255, +156,131,107,255,155,131,107,255,155,130,106,255,154,129,106,255,154,128,105,255,152,127,104,255,152,126,103,255,150,125,103,255, +150,124,102,255,148,123,101,255,147,122,100,255,148,122, 99,255,147,121, 99,255,145,119, 98,255,145,118, 98,255,143,118, 96,255, +143,116, 96,255,142,116, 96,255,142,115, 95,255,140,114, 94,255,139,113, 93,255,138,111, 91,255,137,110, 91,255,136,109, 90,255, +135,108, 89,255,134,106, 88,255,132,104, 87,255,130,101, 85,255,127, 99, 83,255,124, 95, 80,255,120, 91, 77,255,116, 87, 73,255, +112, 82, 70,255,106, 78, 66,255, 82, 68, 63,255, 61, 61, 61,255, 59, 60, 60,255,148,143,135,255,229,220,205,255,227,219,204,255, +226,219,203,255,227,219,204,255,227,219,203,255,227,218,202,255,227,219,202,255,226,217,202,255,226,218,202,255,225,217,201,255, +226,217,201,255,225,216,200,255,225,216,200,255,225,216,198,255,224,215,198,255,223,214,197,255,224,214,197,255,223,214,196,255, +222,214,197,255,223,212,195,255,222,212,195,255,223,213,194,255,222,212,194,255,221,211,194,255,222,212,192,255,221,211,192,255, +221,211,192,255,221,209,190,255,220,209,190,255,220,209,190,255,220,209,191,255,219,209,190,255,219,209,190,255,220,209,190,255, +219,208,189,255,219,208,189,255,219,208,189,255,219,208,189,255,219,208,189,255,219,209,189,255,221,211,192,255,218,209,191,255, +202,191,174,255,172,155,138,255,141,115, 96,255,145,118, 96,255,158,133,109,255,160,136,111,255,162,137,112,255,162,137,112,255, +161,136,112,255,161,136,112,255,161,136,111,255,159,135,110,255,159,134,110,255,159,134,110,255,158,133,109,255,155,131,107,255, +155,130,107,255,155,131,106,255,154,129,106,255,153,128,105,255,151,126,103,255,151,126,103,255,151,126,103,255,150,125,102,255, +148,123,101,255,147,122,101,255,148,121,100,255,147,121,100,255,146,120, 99,255,145,119, 98,255,144,118, 97,255,144,118, 97,255, +143,116, 96,255,142,116, 96,255,141,115, 95,255,140,113, 93,255,139,112, 92,255,137,110, 91,255,137,110, 91,255,136,109, 90,255, +134,107, 88,255,133,105, 87,255,131,103, 86,255,129,101, 84,255,126, 98, 82,255,122, 94, 79,255,118, 89, 76,255,114, 85, 72,255, +110, 81, 68,255,104, 76, 64,255, 81, 67, 62,255, 61, 61, 61,255, 59, 60, 60,255,148,143,135,255,228,220,205,255,227,219,204,255, +227,219,204,255,227,219,203,255,227,219,203,255,226,219,202,255,227,218,203,255,226,218,201,255,225,218,202,255,226,217,201,255, +226,217,201,255,225,216,200,255,224,215,200,255,225,216,198,255,224,215,198,255,224,215,197,255,223,214,197,255,222,214,197,255, +222,212,195,255,223,213,195,255,223,213,195,255,221,211,193,255,222,212,194,255,222,212,193,255,220,210,192,255,220,211,191,255, +221,210,191,255,219,210,190,255,219,210,190,255,220,209,191,255,220,209,189,255,219,208,190,255,220,209,189,255,218,207,188,255, +218,207,188,255,219,208,187,255,218,207,187,255,218,207,187,255,218,207,187,255,218,207,187,255,218,207,187,255,218,207,188,255, +219,208,189,255,221,211,191,255,212,202,185,255,169,152,134,255,141,114, 95,255,147,120,100,255,154,128,105,255,156,132,107,255, +157,132,108,255,159,134,110,255,158,133,109,255,156,132,108,255,157,132,108,255,157,133,108,255,155,130,106,255,154,129,105,255, +154,129,106,255,154,129,106,255,153,128,105,255,151,126,103,255,151,126,103,255,150,126,102,255,151,125,103,255,149,123,101,255, +147,122,100,255,147,121,100,255,147,121,100,255,146,120, 99,255,146,120, 99,255,144,118, 97,255,143,118, 96,255,144,117, 97,255, +142,116, 95,255,142,115, 95,255,141,114, 94,255,139,113, 93,255,139,112, 92,255,137,110, 91,255,136,109, 90,255,135,108, 89,255, +133,106, 88,255,132,105, 87,255,131,103, 86,255,128,100, 83,255,125, 97, 82,255,122, 93, 79,255,117, 89, 75,255,114, 84, 71,255, +107, 78, 67,255, 99, 72, 63,255, 73, 62, 57,255, 61, 61, 62,255, 59, 60, 60,255,147,143,135,255,228,220,205,255,227,219,203,255, +227,219,203,255,227,218,202,255,227,218,203,255,227,218,203,255,226,217,202,255,225,217,201,255,226,218,202,255,225,217,201,255, +225,217,201,255,224,216,200,255,225,215,200,255,224,215,198,255,224,215,198,255,224,214,197,255,223,214,196,255,222,213,196,255, +223,213,195,255,222,213,194,255,222,212,194,255,222,212,194,255,221,211,193,255,221,211,192,255,221,211,191,255,220,210,191,255, +220,210,190,255,220,209,189,255,219,209,189,255,220,209,189,255,219,208,189,255,219,208,188,255,218,207,187,255,219,208,187,255, +218,207,187,255,218,207,186,255,217,206,186,255,217,206,185,255,217,206,185,255,217,206,185,255,218,206,185,255,217,206,185,255, +217,206,186,255,217,206,185,255,218,207,187,255,221,210,191,255,207,196,178,255,173,155,136,255,150,126,107,255,143,116, 95,255, +149,122,100,255,153,128,104,255,154,129,105,255,154,129,106,255,155,130,107,255,154,129,106,255,153,128,105,255,153,128,105,255, +153,128,105,255,153,128,105,255,151,125,103,255,150,125,102,255,150,125,102,255,150,124,102,255,149,123,101,255,147,122,100,255, +147,121,100,255,146,120,100,255,146,120, 99,255,146,120, 98,255,144,118, 97,255,144,118, 97,255,144,117, 97,255,143,117, 96,255, +142,116, 95,255,141,115, 95,255,141,113, 93,255,139,112, 93,255,138,111, 92,255,137,110, 91,255,136,109, 90,255,135,107, 89,255, +133,105, 87,255,131,103, 86,255,130,102, 85,255,127, 99, 83,255,124, 96, 81,255,121, 92, 78,255,117, 88, 74,255,112, 82, 70,255, +104, 76, 66,255, 81, 60, 52,255, 34, 33, 32,255, 62, 62, 62,255, 59, 60, 60,255,147,143,135,255,228,220,205,255,227,219,203,255, +227,219,202,255,227,219,203,255,226,218,202,255,227,217,203,255,226,218,202,255,226,218,202,255,226,217,202,255,226,217,201,255, +225,217,201,255,224,216,200,255,225,215,199,255,224,215,198,255,223,214,197,255,224,215,198,255,223,213,196,255,222,213,196,255, +223,213,194,255,222,212,194,255,221,212,194,255,222,212,194,255,221,211,192,255,220,210,191,255,221,211,192,255,220,210,191,255, +220,209,189,255,219,208,189,255,220,209,189,255,219,208,189,255,218,207,188,255,219,208,187,255,219,208,187,255,218,207,186,255, +218,206,185,255,218,206,185,255,218,206,185,255,217,205,184,255,218,206,185,255,217,205,184,255,217,205,184,255,217,205,183,255, +216,204,183,255,216,205,183,255,217,205,183,255,217,205,183,255,217,206,185,255,217,206,186,255,209,197,177,255,187,171,152,255, +150,125,104,255,138,111, 90,255,145,119, 98,255,148,122,101,255,151,125,103,255,151,125,103,255,150,125,103,255,151,126,103,255, +151,126,103,255,150,125,102,255,149,123,101,255,149,123,101,255,150,124,102,255,149,123,101,255,148,122,101,255,147,121,100,255, +147,121, 99,255,147,121, 99,255,146,120, 98,255,145,119, 98,255,145,119, 98,255,144,117, 96,255,143,117, 96,255,142,117, 95,255, +142,116, 95,255,141,114, 95,255,141,114, 94,255,139,112, 92,255,138,111, 92,255,136,109, 90,255,136,108, 90,255,134,106, 88,255, +132,104, 87,255,131,103, 85,255,129,101, 84,255,127, 98, 82,255,123, 95, 80,255,120, 91, 76,255,115, 86, 72,255,109, 80, 68,255, + 99, 72, 62,255, 15, 11, 9,255, 28, 28, 28,255, 62, 62, 62,255, 59, 60, 60,255,148,144,136,255,228,220,205,255,226,218,203,255, +227,219,202,255,227,218,202,255,227,217,203,255,226,218,202,255,225,217,201,255,226,218,202,255,226,217,202,255,225,216,201,255, +224,216,200,255,225,215,200,255,225,216,199,255,224,215,198,255,223,215,198,255,223,213,196,255,223,213,196,255,222,212,195,255, +222,212,194,255,221,211,193,255,222,212,194,255,220,210,192,255,221,211,192,255,221,211,191,255,220,210,191,255,219,209,190,255, +219,208,189,255,220,209,189,255,219,208,188,255,218,207,187,255,218,207,186,255,218,207,186,255,217,206,185,255,217,206,185,255, +218,205,184,255,217,205,184,255,216,204,183,255,216,204,183,255,216,204,183,255,216,204,182,255,215,203,181,255,215,203,181,255, +215,202,180,255,215,203,181,255,215,203,181,255,215,202,180,255,215,203,180,255,215,203,180,255,215,203,181,255,216,204,183,255, +215,204,184,255,183,166,144,255,148,122,102,255,142,115, 95,255,144,118, 97,255,145,120, 98,255,146,120, 99,255,148,122,100,255, +148,123,101,255,148,122,100,255,147,121,100,255,147,122,100,255,148,122,100,255,148,122,100,255,147,121, 99,255,146,120, 98,255, +145,119, 98,255,146,120, 99,255,145,119, 98,255,145,119, 98,255,144,118, 97,255,144,117, 96,255,143,116, 95,255,142,117, 96,255, +142,115, 95,255,141,114, 94,255,139,112, 92,255,138,111, 92,255,137,110, 92,255,136,109, 90,255,135,107, 89,255,134,106, 88,255, +131,104, 86,255,130,103, 85,255,128,100, 84,255,125, 97, 81,255,122, 93, 79,255,118, 89, 75,255,113, 84, 71,255,105, 76, 66,255, + 44, 32, 29,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 59, 60, 60,255,148,144,136,255,229,221,206,255,226,219,204,255, +227,219,203,255,227,217,202,255,227,218,203,255,226,217,202,255,225,218,201,255,226,217,202,255,226,216,201,255,224,217,201,255, +225,216,200,255,225,215,200,255,224,215,199,255,224,215,198,255,223,215,198,255,223,213,196,255,222,213,195,255,223,213,195,255, +221,212,194,255,222,212,193,255,221,211,193,255,220,210,192,255,221,211,191,255,220,210,191,255,219,209,190,255,219,208,189,255, +219,208,187,255,218,207,189,255,218,207,187,255,218,207,186,255,217,206,185,255,217,206,185,255,218,206,185,255,217,205,184,255, +216,204,183,255,216,204,183,255,215,203,182,255,215,203,181,255,215,203,181,255,215,203,181,255,215,202,180,255,215,202,179,255, +215,202,179,255,215,202,179,255,214,202,179,255,214,201,178,255,214,201,178,255,214,201,178,255,214,201,178,255,214,201,178,255, +214,201,178,255,216,204,182,255,208,196,174,255,179,161,139,255,152,127,105,255,141,114, 93,255,142,115, 95,255,143,117, 97,255, +145,119, 98,255,146,119, 98,255,146,120, 98,255,146,120, 99,255,147,121, 99,255,146,120, 99,255,145,119, 98,255,145,119, 98,255, +146,120, 98,255,145,119, 99,255,145,119, 98,255,144,118, 97,255,144,118, 97,255,143,117, 96,255,143,117, 95,255,143,116, 96,255, +141,115, 94,255,140,114, 94,255,140,113, 93,255,138,111, 92,255,137,110, 91,255,135,108, 89,255,134,107, 89,255,133,105, 87,255, +131,103, 86,255,130,101, 84,255,128,100, 83,255,125, 96, 81,255,121, 92, 78,255,116, 86, 74,255,108, 80, 68,255, 75, 54, 48,255, + 3, 2, 2,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,136,255,229,221,206,255,226,219,204,255, +227,218,203,255,227,218,203,255,226,217,202,255,226,218,202,255,225,217,201,255,225,216,201,255,226,217,201,255,225,216,200,255, +225,215,199,255,225,216,199,255,225,216,199,255,224,215,198,255,223,214,198,255,224,213,196,255,222,213,195,255,222,212,195,255, +221,213,195,255,221,211,193,255,221,211,193,255,221,211,191,255,220,210,191,255,219,210,191,255,220,209,190,255,219,208,188,255, +218,207,188,255,218,207,188,255,218,207,186,255,217,206,185,255,218,206,185,255,218,206,185,255,217,205,184,255,216,204,183,255, +216,204,182,255,215,203,181,255,216,203,181,255,216,203,181,255,215,202,180,255,215,202,179,255,214,201,178,255,214,201,178,255, +214,201,178,255,214,201,177,255,214,201,177,255,213,200,177,255,213,200,176,255,213,200,176,255,213,200,175,255,213,200,175,255, +213,200,175,255,213,199,175,255,212,199,175,255,213,199,175,255,207,193,171,255,175,155,131,255,144,118, 95,255,139,112, 93,255, +141,114, 94,255,142,115, 95,255,143,117, 96,255,144,117, 97,255,144,118, 97,255,145,119, 98,255,145,119, 98,255,145,119, 98,255, +145,119, 98,255,146,120, 99,255,144,119, 97,255,144,118, 97,255,144,117, 97,255,143,116, 95,255,143,117, 95,255,142,116, 96,255, +141,114, 94,255,140,113, 93,255,139,112, 93,255,138,111, 91,255,137,110, 91,255,136,108, 89,255,133,106, 88,255,132,105, 87,255, +130,102, 86,255,128,100, 84,255,126, 98, 82,255,124, 95, 80,255,119, 90, 76,255,112, 83, 71,255,103, 75, 65,255, 16, 11, 10,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,136,255,229,221,207,255,227,219,204,255, +226,218,204,255,227,218,203,255,226,218,202,255,225,218,201,255,226,217,202,255,226,216,200,255,225,217,201,255,224,216,200,255, +224,215,200,255,225,216,199,255,224,215,198,255,223,214,197,255,224,215,197,255,222,213,197,255,223,213,196,255,222,213,195,255, +222,211,193,255,221,211,193,255,220,210,192,255,220,210,191,255,219,209,190,255,220,209,190,255,218,207,188,255,219,208,187,255, +219,208,187,255,218,206,186,255,217,206,185,255,217,205,184,255,217,205,184,255,216,204,183,255,216,204,183,255,215,203,181,255, +215,202,180,255,215,202,179,255,214,201,179,255,214,201,178,255,214,201,178,255,213,200,177,255,213,200,177,255,213,200,177,255, +212,199,176,255,212,199,175,255,212,199,175,255,212,198,174,255,212,198,174,255,212,198,173,255,212,198,173,255,211,197,173,255, +211,197,172,255,211,197,172,255,211,197,172,255,210,196,170,255,210,195,170,255,216,204,182,255,199,184,160,255,158,134,110,255, +141,115, 95,255,139,112, 92,255,140,113, 93,255,141,114, 94,255,143,115, 96,255,143,117, 96,255,143,117, 96,255,143,117, 96,255, +144,118, 97,255,144,118, 97,255,144,117, 96,255,143,117, 97,255,143,116, 96,255,143,117, 96,255,143,116, 96,255,142,115, 94,255, +140,114, 94,255,139,113, 93,255,138,111, 92,255,137,110, 91,255,136,109, 90,255,134,107, 89,255,133,106, 88,255,132,104, 86,255, +129,101, 84,255,128,100, 83,255,125, 96, 81,255,121, 92, 77,255,116, 86, 73,255,108, 79, 68,255, 32, 24, 21,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,137,255,229,222,207,255,227,219,205,255, +227,219,204,255,226,218,204,255,226,218,202,255,225,217,202,255,226,217,202,255,225,216,200,255,224,217,201,255,225,216,200,255, +225,216,199,255,224,215,199,255,223,214,197,255,224,215,198,255,223,214,197,255,223,213,196,255,223,212,195,255,222,213,195,255, +222,211,193,255,221,210,192,255,221,211,192,255,219,209,190,255,220,209,190,255,219,208,189,255,218,207,188,255,219,208,188,255, +218,207,186,255,217,206,185,255,217,205,184,255,217,205,184,255,216,204,183,255,216,204,182,255,216,203,181,255,215,202,180,255, +214,201,179,255,214,201,178,255,214,201,178,255,213,200,177,255,213,200,177,255,213,199,176,255,213,200,176,255,212,199,175,255, +212,199,174,255,212,198,174,255,212,198,173,255,212,198,173,255,211,197,172,255,211,197,172,255,211,196,171,255,211,196,171,255, +210,196,170,255,210,196,170,255,211,196,170,255,210,195,170,255,209,195,169,255,208,192,165,255,212,199,174,255,210,196,173,255, +175,155,130,255,144,118, 97,255,138,111, 92,255,138,111, 92,255,140,113, 93,255,141,114, 94,255,142,115, 95,255,142,116, 96,255, +143,117, 96,255,145,118, 96,255,144,117, 96,255,143,116, 96,255,143,117, 95,255,142,116, 96,255,142,115, 95,255,141,115, 95,255, +140,113, 93,255,139,112, 93,255,137,111, 92,255,136,109, 90,255,135,108, 89,255,134,106, 88,255,133,104, 87,255,131,103, 85,255, +128,101, 84,255,127, 98, 82,255,123, 95, 80,255,119, 90, 75,255,110, 81, 70,255, 53, 38, 33,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,137,255,229,222,208,255,228,220,205,255, +227,219,205,255,226,219,204,255,226,218,203,255,226,218,202,255,225,216,201,255,225,217,201,255,224,216,200,255,225,216,200,255, +224,215,198,255,224,215,198,255,223,214,198,255,223,214,197,255,223,214,197,255,223,212,196,255,222,213,195,255,222,212,194,255, +222,211,194,255,221,210,192,255,221,211,192,255,219,209,190,255,219,208,189,255,218,207,189,255,219,208,187,255,218,207,186,255, +218,206,185,255,217,205,184,255,216,204,184,255,217,205,183,255,216,204,182,255,216,203,181,255,215,202,180,255,214,201,178,255, +214,201,178,255,213,200,177,255,214,200,177,255,213,200,176,255,213,200,176,255,213,199,175,255,213,199,175,255,212,198,174,255, +212,198,172,255,211,197,172,255,211,197,172,255,211,197,171,255,211,196,170,255,211,196,170,255,210,195,169,255,210,195,169,255, +210,195,169,255,210,195,169,255,210,195,169,255,209,194,168,255,209,194,168,255,209,194,167,255,207,191,164,255,208,193,167,255, +215,203,181,255,190,171,146,255,148,122,100,255,137,110, 91,255,137,110, 91,255,139,112, 92,255,141,114, 94,255,141,115, 95,255, +142,116, 96,255,144,117, 96,255,143,116, 96,255,143,117, 95,255,142,116, 95,255,142,115, 95,255,142,115, 95,255,141,114, 94,255, +139,112, 93,255,138,111, 92,255,138,110, 91,255,136,108, 90,255,134,107, 89,255,133,106, 88,255,131,104, 86,255,130,102, 85,255, +128,100, 83,255,125, 97, 81,255,121, 92, 78,255,115, 86, 73,255, 70, 51, 44,255, 2, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,229,222,208,255,227,220,206,255, +228,220,205,255,227,219,204,255,227,219,203,255,226,218,203,255,225,218,202,255,226,216,200,255,225,216,200,255,225,216,200,255, +224,215,198,255,223,214,198,255,223,214,197,255,222,213,196,255,223,213,196,255,222,212,194,255,222,212,194,255,221,211,193,255, +222,211,192,255,221,210,192,255,220,210,191,255,219,208,189,255,219,208,189,255,218,207,188,255,218,207,187,255,217,206,185,255, +217,205,184,255,216,204,183,255,217,205,183,255,216,204,182,255,215,202,180,255,215,202,179,255,214,201,178,255,213,200,177,255, +214,200,177,255,213,199,175,255,212,198,175,255,212,198,174,255,212,198,174,255,212,198,173,255,211,197,173,255,211,197,171,255, +210,196,170,255,210,196,170,255,210,196,170,255,210,195,169,255,209,194,169,255,209,194,167,255,208,193,167,255,208,193,167,255, +208,193,167,255,208,193,167,255,208,193,166,255,208,193,166,255,209,193,166,255,209,193,166,255,208,192,165,255,206,189,161,255, +207,190,163,255,216,205,185,255,191,172,147,255,148,122,100,255,136,109, 90,255,137,109, 91,255,138,111, 92,255,140,113, 93,255, +142,116, 95,255,142,117, 96,255,142,116, 95,255,142,115, 95,255,141,115, 95,255,142,114, 94,255,142,115, 95,255,140,114, 94,255, +139,112, 92,255,138,111, 91,255,136,110, 91,255,135,108, 89,255,134,107, 88,255,132,104, 86,255,130,103, 85,255,129,101, 84,255, +126, 98, 82,255,123, 95, 80,255,118, 89, 75,255, 93, 68, 58,255, 6, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,230,222,208,255,227,220,206,255, +228,220,206,255,227,220,205,255,226,219,204,255,226,218,203,255,225,218,202,255,226,216,201,255,225,217,201,255,225,216,200,255, +223,215,198,255,224,215,198,255,222,213,196,255,223,214,196,255,222,213,195,255,223,213,195,255,221,211,193,255,222,212,193,255, +221,211,192,255,220,210,191,255,219,209,190,255,220,208,189,255,218,207,188,255,219,208,187,255,217,206,186,255,218,206,185,255, +217,205,184,255,217,205,183,255,216,204,181,255,216,203,180,255,214,201,179,255,214,201,178,255,213,201,178,255,213,200,177,255, +213,199,175,255,213,199,175,255,213,199,174,255,212,198,174,255,212,198,173,255,211,197,171,255,210,196,170,255,210,196,170,255, +210,195,170,255,210,195,169,255,209,194,169,255,209,194,168,255,208,194,167,255,208,193,166,255,208,193,166,255,208,193,166,255, +208,192,165,255,208,192,165,255,208,192,165,255,208,192,165,255,208,192,165,255,208,192,165,255,207,192,164,255,207,191,164,255, +205,188,159,255,207,190,163,255,217,205,183,255,185,165,139,255,144,117, 96,255,135,108, 89,255,136,109, 91,255,138,111, 92,255, +141,114, 94,255,142,116, 95,255,141,115, 95,255,142,115, 95,255,142,114, 94,255,141,115, 94,255,141,114, 94,255,140,113, 93,255, +138,111, 92,255,137,110, 91,255,136,109, 90,255,134,107, 89,255,133,105, 87,255,131,103, 87,255,130,102, 85,255,128,100, 83,255, +125, 97, 81,255,121, 92, 77,255, 95, 71, 60,255, 5, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,138,255,230,223,209,255,227,220,206,255, +228,220,206,255,228,220,205,255,226,219,204,255,226,218,203,255,226,218,202,255,226,217,201,255,225,217,201,255,225,216,200,255, +224,215,198,255,223,215,198,255,223,214,197,255,222,214,195,255,223,213,195,255,222,212,194,255,222,212,193,255,221,211,192,255, +221,211,192,255,220,209,190,255,220,209,190,255,219,208,189,255,219,208,188,255,218,207,187,255,217,206,185,255,217,205,184,255, +217,205,183,255,216,203,181,255,216,203,181,255,215,202,179,255,214,201,178,255,213,201,178,255,214,200,177,255,213,199,175,255, +213,199,174,255,212,198,174,255,212,198,173,255,211,197,172,255,211,197,171,255,210,196,170,255,210,195,170,255,210,195,169,255, +209,194,169,255,209,194,168,255,208,194,167,255,208,193,166,255,208,193,166,255,208,193,166,255,207,192,165,255,207,192,165,255, +207,191,165,255,208,192,164,255,208,192,164,255,208,192,164,255,208,192,164,255,208,192,164,255,207,191,164,255,208,192,164,255, +207,191,163,255,205,188,159,255,209,194,168,255,217,206,187,255,172,149,123,255,138,111, 91,255,135,108, 90,255,137,110, 91,255, +139,112, 93,255,141,115, 95,255,142,115, 95,255,141,115, 95,255,141,115, 95,255,141,114, 94,255,140,113, 94,255,139,112, 93,255, +137,111, 91,255,136,109, 91,255,135,108, 89,255,133,106, 88,255,132,104, 87,255,131,103, 86,255,129,101, 84,255,127, 99, 82,255, +122, 94, 79,255,100, 75, 64,255, 15, 11, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,138,255,230,223,209,255,228,221,207,255, +227,220,207,255,228,221,206,255,226,219,205,255,227,219,204,255,226,218,203,255,226,218,201,255,225,217,201,255,224,216,200,255, +224,215,199,255,223,215,198,255,224,214,197,255,222,213,196,255,223,213,195,255,221,211,193,255,221,211,192,255,221,211,192,255, +219,209,190,255,220,209,190,255,219,208,189,255,219,208,188,255,218,207,187,255,217,206,186,255,218,205,184,255,217,205,184,255, +216,204,183,255,216,203,181,255,215,202,180,255,214,201,179,255,213,200,177,255,213,200,177,255,213,199,175,255,213,198,174,255, +212,198,173,255,211,197,172,255,211,197,171,255,210,196,170,255,209,195,169,255,210,194,169,255,209,194,168,255,208,193,167,255, +209,193,166,255,208,193,166,255,208,192,165,255,207,192,165,255,208,192,165,255,208,191,164,255,208,191,164,255,207,191,163,255, +207,191,163,255,206,191,163,255,206,190,163,255,206,190,163,255,206,190,163,255,206,190,163,255,207,191,163,255,207,191,164,255, +207,191,163,255,206,189,161,255,203,186,156,255,214,202,180,255,207,194,171,255,151,126,103,255,134,107, 88,255,135,108, 89,255, +137,110, 91,255,140,113, 94,255,140,113, 93,255,140,113, 93,255,140,113, 93,255,139,113, 93,255,139,112, 93,255,138,111, 91,255, +137,110, 91,255,136,108, 90,255,133,106, 88,255,132,105, 87,255,131,104, 86,255,129,102, 84,255,127,100, 84,255,125, 96, 81,255, +106, 81, 69,255, 18, 13, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,138,255,230,223,209,255,228,221,207,255, +228,221,207,255,228,221,206,255,226,219,205,255,227,219,204,255,226,218,203,255,226,218,202,255,225,217,201,255,224,217,200,255, +224,215,199,255,223,214,198,255,224,215,198,255,222,213,196,255,222,212,195,255,221,211,193,255,221,211,192,255,221,211,192,255, +219,209,190,255,219,208,189,255,219,208,189,255,218,207,187,255,218,207,186,255,218,206,185,255,217,205,184,255,216,204,182,255, +215,203,181,255,216,202,180,255,214,201,178,255,213,201,178,255,214,200,177,255,213,199,175,255,213,199,174,255,212,198,173,255, +211,197,172,255,210,197,171,255,210,196,170,255,210,195,169,255,210,194,169,255,209,194,168,255,208,193,167,255,209,193,166,255, +208,192,166,255,208,192,165,255,207,192,165,255,208,192,164,255,208,192,164,255,208,191,163,255,207,191,163,255,207,191,163,255, +206,190,162,255,207,191,162,255,207,190,162,255,207,191,162,255,207,191,162,255,207,191,162,255,206,190,162,255,206,190,163,255, +206,190,163,255,206,190,162,255,205,187,158,255,205,188,160,255,218,208,189,255,177,157,132,255,135,108, 90,255,133,106, 87,255, +136,109, 90,255,140,113, 93,255,140,114, 94,255,140,113, 93,255,139,112, 93,255,139,112, 92,255,137,111, 92,255,136,109, 90,255, +135,108, 90,255,134,107, 88,255,132,106, 88,255,132,104, 86,255,130,103, 86,255,129,102, 85,255,127, 99, 83,255,102, 78, 65,255, + 18, 13, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,138,255,230,223,210,255,229,222,207,255, +228,221,207,255,228,221,206,255,226,219,205,255,227,219,204,255,225,217,202,255,226,218,202,255,225,217,201,255,224,217,201,255, +224,215,199,255,223,214,199,255,224,215,198,255,222,213,196,255,222,212,195,255,222,212,193,255,221,211,192,255,220,210,191,255, +219,209,190,255,219,208,189,255,218,207,188,255,218,207,187,255,217,206,185,255,218,206,185,255,216,204,183,255,215,204,182,255, +216,203,181,255,215,202,179,255,214,201,178,255,213,200,177,255,213,199,175,255,213,199,174,255,212,198,173,255,211,197,172,255, +210,197,171,255,211,196,170,255,209,195,169,255,210,194,168,255,209,194,167,255,208,193,166,255,209,193,166,255,208,192,165,255, +207,192,165,255,207,192,164,255,208,192,164,255,208,191,163,255,207,191,163,255,207,191,163,255,206,191,163,255,206,191,163,255, +207,191,163,255,207,190,162,255,207,191,163,255,207,191,163,255,207,191,163,255,207,191,163,255,207,191,163,255,207,190,162,255, +207,191,162,255,207,191,163,255,206,190,161,255,203,185,155,255,213,200,176,255,201,186,163,255,141,115, 95,255,131,103, 86,255, +135,107, 89,255,138,112, 92,255,139,112, 93,255,139,112, 93,255,138,112, 92,255,137,110, 91,255,136,109, 91,255,136,109, 90,255, +134,107, 89,255,134,106, 88,255,133,105, 87,255,131,103, 86,255,129,102, 85,255,127,100, 83,255, 97, 74, 63,255, 12, 9, 8,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,139,255,230,224,210,255,228,221,207,255, +227,221,207,255,228,221,206,255,226,219,205,255,226,219,204,255,227,219,204,255,225,217,202,255,225,217,202,255,224,217,201,255, +225,215,199,255,224,215,199,255,224,215,198,255,222,213,196,255,222,212,195,255,221,211,193,255,221,211,192,255,220,210,191,255, +220,209,190,255,219,208,189,255,218,208,188,255,218,207,186,255,218,206,185,255,217,205,184,255,216,204,182,255,215,203,181,255, +215,202,180,255,214,201,178,255,213,200,177,255,213,200,177,255,212,198,174,255,212,198,174,255,211,197,173,255,210,196,171,255, +210,195,170,255,210,195,168,255,209,194,168,255,209,193,167,255,208,192,166,255,208,192,165,255,207,191,165,255,207,191,164,255, +207,191,163,255,207,191,163,255,206,190,162,255,206,190,162,255,206,189,161,255,207,189,161,255,207,189,161,255,207,189,161,255, +207,189,161,255,207,189,161,255,207,189,161,255,207,189,161,255,207,189,161,255,207,189,161,255,207,190,162,255,207,190,162,255, +207,190,162,255,206,191,163,255,207,190,162,255,205,187,157,255,207,192,164,255,215,203,182,255,151,126,105,255,129,100, 84,255, +133,106, 88,255,138,111, 92,255,139,111, 92,255,138,111, 92,255,137,110, 91,255,136,109, 90,255,136,109, 90,255,135,107, 89,255, +134,106, 88,255,133,105, 87,255,131,104, 87,255,130,103, 86,255,127, 99, 83,255,101, 77, 66,255, 5, 4, 3,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,138,255,230,223,210,255,228,222,207,255, +227,221,207,255,228,221,206,255,226,219,205,255,227,219,205,255,226,219,204,255,225,217,202,255,225,217,202,255,224,217,201,255, +224,216,200,255,223,215,199,255,224,215,198,255,222,213,196,255,222,213,196,255,221,211,194,255,221,211,192,255,220,210,191,255, +220,209,190,255,219,208,189,255,219,208,188,255,218,206,186,255,217,206,185,255,217,205,184,255,216,204,182,255,216,203,181,255, +215,202,179,255,214,201,178,255,214,200,177,255,213,199,175,255,212,198,174,255,211,197,172,255,211,196,171,255,210,195,170,255, +210,195,168,255,209,194,167,255,208,193,167,255,208,192,165,255,208,192,164,255,207,191,164,255,207,191,163,255,207,191,162,255, +207,190,162,255,207,190,162,255,206,190,161,255,206,190,161,255,206,190,161,255,206,189,161,255,206,189,160,255,206,189,161,255, +206,189,161,255,206,189,160,255,206,189,161,255,207,190,161,255,207,190,162,255,206,189,162,255,207,189,161,255,207,189,161,255, +207,190,162,255,207,191,163,255,207,190,162,255,206,188,160,255,205,187,159,255,220,209,189,255,164,141,118,255,126, 97, 82,255, +132,104, 87,255,136,109, 90,255,138,111, 92,255,137,110, 91,255,137,109, 91,255,136,108, 90,255,135,107, 89,255,134,107, 88,255, +133,105, 87,255,132,105, 87,255,130,104, 86,255,127,100, 83,255, 72, 56, 47,255, 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,138,255,230,223,210,255,228,221,207,255, +227,220,207,255,228,221,206,255,226,219,205,255,227,219,205,255,226,219,204,255,226,217,202,255,225,217,201,255,224,217,201,255, +224,216,200,255,224,215,199,255,223,215,198,255,223,213,196,255,222,213,195,255,221,211,194,255,220,211,192,255,220,210,191,255, +220,209,190,255,219,208,189,255,218,208,188,255,219,206,186,255,217,206,185,255,217,205,184,255,215,203,182,255,216,203,181,255, +215,202,179,255,213,200,177,255,213,200,176,255,213,199,175,255,211,197,173,255,211,197,172,255,210,196,171,255,210,195,169,255, +209,194,168,255,209,193,166,255,208,192,165,255,207,191,164,255,207,191,163,255,207,191,162,255,206,190,162,255,206,190,161,255, +206,190,161,255,206,190,161,255,205,189,160,255,205,189,160,255,205,189,160,255,205,188,160,255,205,188,160,255,205,188,160,255, +205,188,160,255,205,188,160,255,206,189,160,255,206,189,161,255,206,189,161,255,207,190,161,255,207,190,162,255,207,190,162,255, +206,189,161,255,207,190,162,255,207,190,162,255,206,190,161,255,205,187,158,255,220,209,189,255,176,156,132,255,122, 93, 78,255, +130,102, 85,255,134,107, 88,255,136,108, 90,255,135,108, 90,255,135,108, 89,255,135,108, 89,255,134,107, 88,255,134,106, 87,255, +132,105, 87,255,131,104, 87,255,130,102, 85,255, 52, 41, 35,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,138,255,230,223,210,255,227,221,207,255, +228,220,206,255,227,220,206,255,226,219,205,255,227,219,204,255,226,219,204,255,225,217,202,255,225,217,201,255,224,217,201,255, +224,215,199,255,224,215,199,255,223,213,197,255,223,214,196,255,222,213,195,255,221,211,193,255,220,211,192,255,221,211,192,255, +219,209,190,255,219,208,189,255,219,207,188,255,217,207,186,255,217,206,185,255,217,205,184,255,216,204,182,255,215,203,181,255, +215,202,179,255,213,200,177,255,213,200,176,255,213,199,175,255,211,197,173,255,211,197,171,255,210,196,170,255,209,194,168,255, +209,193,167,255,208,192,165,255,207,191,163,255,206,190,163,255,206,190,161,255,205,189,161,255,205,189,160,255,205,188,159,255, +205,188,159,255,205,188,159,255,205,188,159,255,205,188,159,255,205,188,159,255,205,188,159,255,205,188,159,255,205,188,159,255, +206,188,159,255,206,188,159,255,206,188,159,255,206,189,159,255,205,188,160,255,205,188,160,255,205,188,160,255,206,189,161,255, +206,189,161,255,206,190,162,255,206,190,162,255,206,189,161,255,205,187,157,255,220,209,189,255,184,166,142,255,118, 88, 75,255, +130,101, 84,255,133,105, 87,255,134,107, 88,255,134,107, 88,255,134,107, 89,255,134,106, 88,255,133,106, 87,255,131,105, 87,255, +132,105, 87,255,117, 93, 77,255, 27, 21, 18,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,138,255,229,223,209,255,228,221,207,255, +228,221,207,255,227,220,206,255,227,219,205,255,226,219,204,255,226,218,203,255,225,217,202,255,224,217,202,255,225,217,201,255, +224,215,199,255,224,215,198,255,223,213,196,255,223,213,196,255,222,213,195,255,222,211,193,255,220,210,192,255,221,210,192,255, +219,210,191,255,219,208,188,255,219,207,187,255,217,206,186,255,217,205,185,255,216,205,183,255,217,205,182,255,215,203,181,255, +215,202,179,255,213,200,177,255,213,200,176,255,213,199,174,255,211,197,173,255,211,197,171,255,210,195,170,255,209,194,168,255, +209,193,166,255,208,192,165,255,206,190,163,255,206,190,161,255,205,189,160,255,205,189,160,255,205,188,159,255,204,188,159,255, +204,188,159,255,204,188,159,255,204,188,159,255,204,188,159,255,204,188,158,255,204,188,159,255,204,188,159,255,204,188,159,255, +205,188,159,255,205,187,159,255,205,187,158,255,205,188,159,255,205,188,159,255,205,188,159,255,206,189,160,255,206,189,160,255, +205,188,160,255,205,189,161,255,206,189,161,255,205,188,159,255,204,188,158,255,222,212,193,255,186,167,143,255,113, 84, 71,255, +127, 99, 83,255,132,105, 87,255,134,106, 88,255,134,107, 88,255,134,106, 88,255,132,106, 87,255,133,106, 88,255,134,107, 89,255, + 85, 67, 55,255, 12, 9, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,229,223,209,255,228,220,206,255, +227,220,206,255,226,219,206,255,227,219,204,255,226,219,204,255,225,218,203,255,225,218,202,255,224,217,201,255,225,216,201,255, +223,215,199,255,224,214,198,255,223,214,197,255,222,213,196,255,222,212,195,255,221,211,193,255,221,210,192,255,220,210,191,255, +219,209,189,255,218,208,188,255,219,208,188,255,217,206,186,255,217,205,184,255,217,205,183,255,216,203,181,255,215,202,180,255, +215,202,179,255,213,200,177,255,213,200,176,255,212,199,174,255,212,197,172,255,211,196,171,255,210,195,169,255,208,193,167,255, +208,193,165,255,208,192,164,255,206,190,162,255,206,189,161,255,206,189,160,255,204,187,158,255,204,188,159,255,204,187,158,255, +205,187,158,255,205,187,158,255,205,187,158,255,205,187,158,255,205,187,158,255,205,187,158,255,205,187,158,255,205,187,158,255, +205,187,158,255,205,187,158,255,205,188,158,255,205,188,158,255,204,188,158,255,205,188,159,255,205,188,159,255,204,187,159,255, +205,188,160,255,206,189,160,255,205,188,159,255,204,187,157,255,207,190,163,255,225,217,200,255,180,161,136,255,108, 79, 67,255, +125, 96, 81,255,130,103, 86,255,133,105, 88,255,133,106, 88,255,133,106, 87,255,133,106, 88,255,129,103, 85,255, 42, 33, 28,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,137,255,229,222,208,255,227,220,206,255, +226,219,205,255,226,219,204,255,225,218,203,255,225,218,203,255,226,218,203,255,225,217,201,255,225,216,201,255,223,216,199,255, +224,215,198,255,223,215,198,255,223,213,196,255,222,213,195,255,222,212,194,255,220,211,193,255,220,210,192,255,220,210,191,255, +219,208,189,255,218,208,188,255,218,207,188,255,217,206,185,255,216,205,184,255,216,204,183,255,215,203,181,255,214,202,180,255, +214,201,179,255,213,200,177,255,213,199,175,255,212,198,174,255,211,197,172,255,210,196,170,255,210,195,169,255,208,193,167,255, +208,192,165,255,206,191,163,255,207,189,161,255,206,189,160,255,205,187,159,255,204,187,158,255,204,186,157,255,204,187,156,255, +203,186,156,255,203,186,156,255,203,186,156,255,203,186,156,255,203,186,156,255,203,186,156,255,203,186,156,255,203,186,156,255, +203,186,156,255,203,187,156,255,203,186,157,255,203,186,157,255,204,186,157,255,204,187,157,255,204,187,157,255,204,187,158,255, +204,187,158,255,204,187,157,255,203,186,155,255,203,186,156,255,215,203,180,255,226,218,201,255,169,147,123,255,103, 75, 64,255, +123, 95, 79,255,129,101, 85,255,129,103, 86,255,132,104, 87,255,130,104, 86,255, 99, 79, 65,255, 14, 11, 9,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,147,144,137,255,228,221,206,255,227,219,205,255, +226,219,204,255,225,219,204,255,226,218,203,255,226,218,203,255,225,217,202,255,225,216,201,255,224,216,200,255,224,216,199,255, +223,215,198,255,223,214,197,255,223,213,196,255,221,212,195,255,221,212,194,255,220,210,193,255,220,210,192,255,220,210,191,255, +219,208,190,255,218,207,188,255,218,207,186,255,218,205,186,255,217,205,184,255,216,204,182,255,215,203,181,255,215,202,179,255, +214,201,178,255,213,200,177,255,213,199,175,255,212,198,173,255,211,197,172,255,210,195,170,255,209,194,168,255,208,193,166,255, +207,191,164,255,207,191,163,255,206,189,161,255,205,188,159,255,205,187,158,255,204,186,157,255,203,186,156,255,204,186,156,255, +203,185,155,255,203,186,155,255,203,186,155,255,204,186,155,255,204,186,155,255,204,186,155,255,203,186,155,255,203,186,155,255, +203,186,155,255,203,186,155,255,203,186,156,255,203,186,155,255,203,186,155,255,203,186,155,255,203,185,155,255,203,185,155,255, +202,185,154,255,202,184,153,255,203,185,155,255,211,198,173,255,224,215,200,255,218,207,185,255,151,127,105,255,102, 74, 63,255, +120, 92, 77,255,126, 98, 82,255,130,102, 85,255,111, 88, 74,255, 42, 34, 28,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,147,143,136,255,227,220,206,255,226,219,203,255, +226,218,204,255,226,218,203,255,224,217,202,255,225,216,202,255,225,217,201,255,223,215,199,255,224,216,200,255,224,215,199,255, +222,214,197,255,222,213,196,255,223,212,196,255,221,212,194,255,221,212,193,255,221,210,192,255,219,209,190,255,220,209,190,255, +218,208,189,255,218,207,187,255,218,207,186,255,216,205,184,255,216,204,183,255,215,203,182,255,215,202,180,255,214,201,179,255, +214,201,177,255,212,199,175,255,212,198,174,255,212,197,173,255,210,195,170,255,210,195,169,255,209,194,167,255,208,192,165,255, +207,191,163,255,207,190,162,255,205,188,159,255,205,188,158,255,204,187,157,255,204,186,155,255,203,186,154,255,203,185,155,255, +203,185,154,255,202,185,154,255,202,185,154,255,203,185,154,255,203,185,154,255,203,185,154,255,203,185,154,255,203,185,154,255, +203,185,154,255,203,185,154,255,203,185,154,255,202,185,154,255,201,184,153,255,202,184,152,255,201,182,151,255,201,182,150,255, +200,181,150,255,203,185,154,255,211,197,173,255,221,211,193,255,221,212,194,255,199,182,155,255,134,108, 89,255,105, 77, 66,255, +118, 90, 75,255,126, 98, 83,255, 66, 53, 44,255, 4, 3, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,147,143,135,255,227,219,204,255,225,217,202,255, +225,217,202,255,224,217,201,255,224,216,201,255,224,216,201,255,223,216,200,255,223,215,199,255,223,215,198,255,222,214,197,255, +222,213,196,255,222,213,195,255,221,212,194,255,221,211,193,255,220,211,193,255,219,210,192,255,219,209,190,255,219,208,189,255, +218,207,187,255,217,206,186,255,217,206,186,255,216,204,183,255,216,204,182,255,215,203,181,255,214,202,179,255,213,201,178,255, +213,200,176,255,212,199,175,255,211,198,173,255,211,196,171,255,209,195,169,255,209,194,168,255,208,192,166,255,207,191,164,255, +206,190,162,255,206,189,160,255,205,187,159,255,204,187,157,255,203,185,155,255,202,185,154,255,202,185,154,255,202,184,153,255, +202,184,153,255,202,184,152,255,202,184,152,255,202,184,152,255,201,183,152,255,201,183,152,255,201,183,152,255,201,183,152,255, +201,183,152,255,201,183,151,255,201,182,151,255,200,182,150,255,200,181,148,255,199,180,148,255,199,180,147,255,199,180,148,255, +203,185,155,255,211,196,171,255,217,207,186,255,219,208,188,255,207,192,166,255,173,151,124,255,124, 96, 80,255,109, 80, 68,255, + 82, 63, 53,255, 13, 11, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,146,142,134,255,225,217,201,255,224,216,200,255, +224,216,201,255,224,216,200,255,224,216,200,255,223,215,199,255,223,215,198,255,223,214,198,255,223,214,197,255,223,213,196,255, +222,213,196,255,222,212,194,255,221,212,194,255,221,211,193,255,220,210,192,255,220,210,191,255,219,209,190,255,218,207,188,255, +217,206,186,255,217,206,186,255,217,205,184,255,216,204,183,255,215,203,181,255,215,202,180,255,214,201,178,255,213,200,176,255, +213,199,175,255,212,198,174,255,211,196,171,255,210,196,170,255,209,195,169,255,208,193,166,255,208,192,165,255,207,191,162,255, +206,189,160,255,205,188,159,255,204,187,157,255,203,186,155,255,203,185,154,255,202,184,153,255,202,183,152,255,202,183,152,255, +201,183,151,255,201,183,151,255,201,182,151,255,201,182,150,255,201,182,150,255,201,182,150,255,200,181,149,255,200,181,149,255, +199,180,149,255,199,179,147,255,198,179,146,255,197,177,146,255,197,177,144,255,196,177,144,255,198,179,147,255,203,185,156,255, +209,195,169,255,214,202,180,255,215,202,179,255,207,190,162,255,186,165,135,255,153,128,105,255, 99, 77, 64,255, 29, 22, 19,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,145,140,131,255,224,215,198,255,223,215,198,255, +223,215,198,255,223,215,198,255,223,214,198,255,223,213,198,255,222,214,197,255,222,213,195,255,222,212,196,255,222,213,195,255, +221,211,193,255,220,211,193,255,221,211,192,255,220,209,191,255,220,210,191,255,219,209,189,255,218,207,188,255,217,207,187,255, +217,206,185,255,216,205,184,255,216,204,183,255,216,203,181,255,215,202,180,255,214,201,179,255,213,200,177,255,212,199,176,255, +212,198,174,255,211,196,172,255,210,196,171,255,210,195,169,255,208,193,167,255,208,192,165,255,207,191,164,255,206,189,161,255, +205,188,159,255,205,187,157,255,203,185,155,255,203,185,154,255,202,184,153,255,202,182,151,255,201,182,151,255,201,182,150,255, +200,181,150,255,199,180,149,255,200,181,149,255,199,180,148,255,198,180,148,255,199,180,147,255,197,178,146,255,198,178,145,255, +197,176,144,255,196,176,143,255,196,175,143,255,194,175,141,255,195,175,142,255,198,178,145,255,203,185,154,255,208,191,164,255, +210,196,171,255,209,194,168,255,200,183,152,255,185,164,133,255,159,136,111,255, 68, 56, 46,255, 2, 2, 2,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,138,132,123,255,221,211,192,255,221,211,193,255, +221,211,194,255,220,211,193,255,221,212,194,255,221,212,195,255,221,212,195,255,221,211,194,255,220,211,193,255,220,211,193,255, +220,210,192,255,220,210,191,255,219,209,191,255,219,209,190,255,219,208,188,255,218,207,188,255,217,206,187,255,217,206,185,255, +216,205,184,255,216,204,183,255,216,203,182,255,215,202,180,255,214,201,179,255,213,200,177,255,212,199,176,255,212,199,174,255, +211,197,172,255,210,196,171,255,209,194,169,255,209,193,167,255,208,192,166,255,207,191,164,255,206,190,161,255,205,188,159,255, +204,187,158,255,203,185,155,255,202,184,154,255,202,184,152,255,201,182,151,255,200,181,150,255,199,180,148,255,199,180,148,255, +198,179,147,255,198,179,146,255,197,178,146,255,197,177,144,255,196,176,144,255,196,176,143,255,195,174,142,255,194,173,141,255, +193,172,141,255,193,172,140,255,193,172,140,255,194,174,141,255,197,176,144,255,200,182,149,255,203,185,155,255,204,187,157,255, +200,182,151,255,188,167,137,255,150,132,107,255, 92, 78, 64,255, 13, 11, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 51, 50, 48,255, 76, 72, 64,255,156,147,132,255, +212,202,182,255,221,210,190,255,219,208,189,255,218,208,188,255,219,209,190,255,219,209,191,255,219,209,191,255,219,209,190,255, +219,209,189,255,219,208,189,255,219,208,188,255,218,207,188,255,218,207,186,255,218,206,186,255,217,206,186,255,217,205,184,255, +216,204,183,255,216,203,182,255,215,202,180,255,214,201,179,255,213,201,177,255,213,199,176,255,212,199,174,255,211,197,172,255, +210,196,171,255,210,195,169,255,209,193,167,255,208,192,165,255,207,191,164,255,206,189,162,255,205,189,159,255,205,187,157,255, +203,185,156,255,202,184,153,255,201,183,152,255,200,182,150,255,199,180,148,255,198,179,147,255,197,179,146,255,197,177,144,255, +196,176,143,255,196,176,143,255,195,175,142,255,193,173,141,255,193,172,140,255,191,171,139,255,190,170,138,255,190,169,137,255, +190,169,137,255,190,169,137,255,191,170,138,255,192,172,139,255,196,175,142,255,196,176,143,255,192,171,140,255,172,152,124,255, +104, 91, 74,255, 46, 40, 32,255, 13, 11, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 28, 26, 23,255,122,115,102,255,210,197,177,255,216,204,183,255,215,203,183,255,217,206,186,255,218,205,185,255,217,205,185,255, +216,205,184,255,216,205,186,255,216,205,184,255,216,206,184,255,216,205,184,255,216,204,182,255,215,203,182,255,216,204,182,255, +214,202,180,255,215,201,179,255,214,201,179,255,213,199,176,255,212,198,175,255,212,198,174,255,210,196,172,255,210,195,170,255, +209,194,169,255,208,193,166,255,208,192,165,255,207,191,163,255,205,189,160,255,204,188,158,255,205,187,157,255,203,185,154,255, +202,184,152,255,201,183,151,255,199,181,148,255,198,179,147,255,198,178,146,255,196,177,144,255,195,176,143,255,195,175,142,255, +193,173,140,255,192,172,139,255,190,170,138,255,189,169,137,255,189,168,136,255,187,166,134,255,185,164,133,255,187,164,133,255, +185,164,133,255,186,164,133,255,185,163,132,255,183,161,131,255,153,136,110,255, 89, 78, 63,255, 24, 21, 17,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 36, 34, 30,255,107,101, 89,255,160,150,134,255,185,174,156,255,213,199,177,255, +216,203,181,255,216,204,181,255,216,203,181,255,214,201,178,255,214,202,179,255,214,201,178,255,214,201,178,255,214,201,178,255, +213,200,176,255,213,199,176,255,212,199,175,255,212,198,173,255,211,196,172,255,210,196,171,255,209,195,169,255,209,193,167,255, +207,192,165,255,207,191,163,255,207,189,161,255,205,188,160,255,204,187,157,255,203,185,155,255,202,184,153,255,201,183,151,255, +200,181,149,255,199,180,147,255,198,178,145,255,196,177,144,255,195,175,143,255,194,173,140,255,192,172,139,255,192,170,138,255, +190,169,137,255,188,168,136,255,186,165,134,255,184,163,132,255,184,163,132,255,183,161,131,255,181,159,129,255,173,152,123,255, +152,133,107,255,125,109, 88,255, 78, 68, 55,255, 26, 22, 18,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 4, 4, 3,255, 25, 24, 21,255, 52, 48, 43,255, + 88, 83, 73,255,149,139,122,255,197,183,161,255,215,201,176,255,213,199,175,255,213,199,176,255,212,199,174,255,211,197,172,255, +211,196,172,255,210,195,171,255,210,195,170,255,209,194,169,255,209,193,167,255,208,193,166,255,208,191,165,255,207,191,163,255, +206,189,162,255,205,188,160,255,205,187,157,255,203,185,156,255,202,184,153,255,201,182,151,255,200,181,150,255,199,180,147,255, +198,179,146,255,197,176,144,255,196,175,143,255,194,173,140,255,192,172,139,255,190,170,138,255,189,168,137,255,187,166,134,255, +187,166,133,255,186,164,133,255,183,161,131,255,181,159,129,255,167,146,119,255,119,103, 84,255, 76, 65, 54,255, 38, 32, 26,255, + 19, 17, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 17, 15, 13,255, 80, 74, 64,255,122,114, 97,255,172,158,136,255,200,185,159,255, +203,187,161,255,204,188,161,255,204,189,162,255,205,188,161,255,206,189,161,255,205,189,160,255,205,187,159,255,204,187,158,255, +204,185,157,255,203,185,154,255,202,183,153,255,201,182,152,255,200,181,149,255,199,179,147,255,198,177,145,255,196,176,143,255, +195,175,142,255,193,173,140,255,192,171,139,255,189,168,136,255,186,165,134,255,183,162,131,255,181,159,129,255,178,157,127,255, +163,142,116,255,116,101, 82,255, 75, 66, 54,255, 20, 17, 14,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 20, 19, 15,255, 53, 48, 40,255, 69, 62, 52,255, 87, 79, 66,255,118,107, 89,255,128,115, 96,255,133,121,100,255,138,124,103,255, +144,130,107,255,150,135,111,255,152,136,112,255,155,139,114,255,152,137,112,255,146,130,107,255,141,127,103,255,137,122,100,255, +129,115, 93,255,123,109, 89,255,116,103, 83,255, 95, 84, 68,255, 71, 62, 51,255, 54, 47, 38,255, 32, 28, 23,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 0,255, + 4, 4, 3,255, 9, 8, 7,255, 10, 9, 7,255, 12, 11, 9,255, 12, 10, 9,255, 8, 7, 6,255, 6, 5, 4,255, 4, 3, 3,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0, 80, 54,100, 7, 31, 0, 0, 0, + 1, 0, 0, 0,168,217,100, 7,248,146, 99, 7, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, 46,115, 99,114, 97,112,101, 46, +112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92, +115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46,115, 99,114, 97,112,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80, 56,100, 7, 0, 0, 0, 0, 61, 72, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 32, 0, 0, 0, 80, 56,100, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, + 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,216, 56,100, 7, 64, 73,100, 7, 68, 65, 84, 65, 0, 16, 0, 0,216, 56,100, 7, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0, 64, 73,100, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, + 61, 61, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 62, 62, 61,255, 61, 61, 61,255, + 97, 91, 83,255,131,120,102,255,131,119,102,255,130,119,102,255,130,119,101,255,130,119,101,255,130,119,101,255,130,119,101,255, +130,119,102,255,130,119,102,255,131,119,102,255,131,119,102,255,131,119,102,255,130,119,102,255,130,119,102,255,131,119,102,255, +131,118,102,255,130,118,102,255,130,119,102,255,130,119,101,255,129,118,101,255,129,118,101,255,129,117,101,255,129,117,101,255, +128,117,100,255,128,116,100,255,127,116, 99,255,127,115, 99,255,126,114, 98,255,126,114, 98,255,125,113, 97,255,125,113, 97,255, +124,112, 97,255,124,112, 96,255,123,111, 96,255,123,111, 95,255,123,110, 95,255,122,110, 95,255,121,109, 94,255,121,109, 94,255, +121,108, 94,255,120,108, 93,255,120,107, 93,255,119,107, 92,255,119,106, 92,255,119,106, 92,255,118,106, 91,255,118,105, 91,255, +118,105, 91,255,117,104, 91,255,117,104, 90,255,116,103, 89,255,116,103, 89,255,116,103, 89,255,115,102, 89,255,114,101, 88,255, +114,101, 87,255,113,100, 87,255,113,100, 87,255,112, 99, 86,255,112, 98, 86,255,111, 98, 85,255,111, 98, 85,255,110, 97, 85,255, +110, 96, 84,255,109, 96, 84,255,109, 95, 83,255,108, 94, 82,255,107, 93, 82,255,106, 92, 81,255,105, 92, 81,255,105, 91, 80,255, +105, 91, 80,255,104, 90, 79,255,103, 89, 79,255,102, 88, 78,255,101, 87, 77,255,100, 87, 77,255, 99, 85, 76,255, 99, 85, 75,255, + 98, 84, 74,255, 97, 83, 74,255, 96, 81, 73,255, 95, 80, 72,255, 93, 78, 70,255, 91, 76, 69,255, 89, 73, 67,255, 86, 71, 64,255, + 82, 68, 63,255, 79, 66, 61,255, 78, 65, 60,255, 77, 65, 60,255, 78, 65, 60,255, 71, 64, 61,255, 61, 61, 62,255, 60, 60, 61,255, +132,120,103,255,197,175,142,255,196,174,141,255,195,173,140,255,195,173,140,255,195,173,140,255,195,173,141,255,195,174,141,255, +196,174,141,255,196,174,141,255,196,174,142,255,196,174,142,255,196,175,142,255,197,175,142,255,197,175,142,255,197,175,142,255, +196,175,142,255,196,175,142,255,196,174,141,255,196,174,141,255,195,173,141,255,195,173,140,255,194,172,140,255,194,172,139,255, +193,170,138,255,192,170,138,255,191,169,136,255,190,167,136,255,189,166,135,255,188,165,134,255,187,164,133,255,185,163,132,255, +185,162,131,255,183,160,130,255,183,160,130,255,182,159,128,255,181,157,128,255,180,157,127,255,179,156,126,255,178,154,125,255, +177,153,125,255,176,153,124,255,175,151,123,255,175,151,123,255,174,149,121,255,173,149,121,255,172,148,120,255,172,147,120,255, +171,146,119,255,170,145,118,255,169,144,118,255,168,144,117,255,167,143,116,255,167,141,115,255,166,141,115,255,165,140,114,255, +163,138,113,255,163,138,112,255,162,137,111,255,160,135,110,255,159,134,110,255,159,132,108,255,158,132,108,255,157,132,108,255, +157,130,106,255,154,129,105,255,154,128,105,255,152,125,103,255,150,124,102,255,149,122,100,255,148,120, 99,255,146,119, 98,255, +145,118, 98,255,144,117, 96,255,141,114, 95,255,140,113, 92,255,139,111, 91,255,137,109, 91,255,135,108, 88,255,133,106, 87,255, +132,104, 87,255,130,102, 85,255,128, 99, 83,255,125, 97, 81,255,122, 94, 79,255,119, 90, 76,255,114, 84, 71,255,108, 78, 67,255, +102, 73, 63,255, 96, 70, 60,255, 94, 68, 59,255, 94, 68, 59,255, 97, 70, 60,255, 81, 66, 61,255, 61, 61, 62,255, 60, 60, 61,255, +132,120,103,255,197,176,142,255,196,175,142,255,196,175,142,255,196,175,142,255,196,175,142,255,197,175,142,255,197,175,142,255, +197,175,142,255,197,176,142,255,198,176,143,255,198,176,143,255,198,177,143,255,198,177,144,255,198,177,144,255,198,177,144,255, +198,177,144,255,198,177,144,255,198,177,143,255,198,176,143,255,197,176,143,255,197,175,142,255,196,174,142,255,195,174,141,255, +195,173,140,255,194,172,140,255,193,170,138,255,192,169,137,255,191,169,137,255,189,166,135,255,188,166,134,255,187,164,133,255, +185,163,132,255,185,162,131,255,183,160,130,255,182,159,129,255,182,158,129,255,180,157,127,255,180,156,127,255,179,155,126,255, +178,154,125,255,177,153,124,255,176,152,124,255,175,151,123,255,174,150,122,255,173,149,121,255,172,148,120,255,172,148,120,255, +171,147,120,255,170,145,118,255,169,145,117,255,169,144,118,255,167,143,116,255,167,142,116,255,166,141,115,255,165,140,114,255, +164,139,114,255,163,138,113,255,162,137,112,255,161,136,111,255,160,135,110,255,159,134,110,255,159,133,109,255,158,132,108,255, +157,131,107,255,155,129,106,255,153,128,104,255,152,126,103,255,151,125,102,255,149,122,100,255,147,121, 99,255,145,119, 97,255, +143,116, 96,255,142,115, 95,255,139,112, 93,255,138,111, 92,255,137,110, 91,255,135,109, 89,255,134,107, 88,255,132,105, 87,255, +130,103, 85,255,129,102, 85,255,127, 99, 83,255,124, 96, 80,255,121, 92, 78,255,117, 88, 75,255,113, 83, 71,255,107, 78, 67,255, +100, 73, 63,255, 96, 70, 60,255, 96, 70, 60,255, 97, 70, 60,255,100, 72, 62,255, 82, 67, 62,255, 61, 61, 61,255, 60, 60, 61,255, +132,121,104,255,198,177,143,255,197,176,143,255,197,176,143,255,197,176,143,255,198,176,143,255,198,177,143,255,198,177,144,255, +199,178,144,255,199,178,145,255,199,178,145,255,199,179,145,255,200,179,145,255,200,179,146,255,200,179,146,255,200,179,146,255, +200,179,146,255,200,179,146,255,200,179,146,255,200,179,146,255,199,178,145,255,199,178,145,255,198,177,144,255,198,176,143,255, +197,176,143,255,196,174,141,255,195,173,140,255,194,172,140,255,192,170,138,255,192,169,137,255,190,168,136,255,189,166,135,255, +188,165,133,255,186,163,132,255,185,162,132,255,183,160,131,255,183,160,129,255,182,158,128,255,180,158,127,255,180,156,127,255, +179,155,126,255,178,154,125,255,177,153,125,255,176,152,124,255,175,151,123,255,174,150,122,255,173,149,121,255,172,148,121,255, +172,147,120,255,171,147,119,255,170,145,118,255,170,145,118,255,168,144,117,255,167,143,116,255,166,142,115,255,165,141,115,255, +165,140,114,255,164,139,113,255,163,138,113,255,162,137,112,255,160,135,110,255,160,135,110,255,160,134,110,255,159,133,109,255, +157,132,108,255,156,130,107,255,155,129,106,255,153,127,104,255,151,125,103,255,149,123,101,255,147,120, 98,255,144,117, 96,255, +142,115, 95,255,140,113, 93,255,139,112, 92,255,137,110, 91,255,136,109, 90,255,135,108, 89,255,133,106, 88,255,132,104, 87,255, +131,103, 85,255,129,101, 84,255,126, 98, 82,255,123, 95, 80,255,120, 92, 77,255,116, 87, 74,255,111, 82, 70,255,106, 77, 66,255, +100, 73, 63,255, 97, 70, 61,255, 97, 71, 61,255,100, 72, 62,255,103, 74, 64,255, 84, 68, 63,255, 61, 61, 61,255, 60, 60, 60,255, +133,122,104,255,200,178,144,255,198,177,143,255,198,177,144,255,199,177,144,255,199,178,145,255,199,178,145,255,199,179,145,255, +200,179,146,255,200,179,146,255,200,179,146,255,200,180,146,255,201,180,147,255,201,180,147,255,201,180,147,255,201,180,147,255, +201,180,147,255,201,181,148,255,201,181,148,255,201,181,148,255,201,180,148,255,200,180,147,255,200,179,146,255,199,179,146,255, +199,178,145,255,198,177,144,255,197,176,143,255,197,174,142,255,195,173,140,255,194,172,140,255,192,171,139,255,191,168,136,255, +190,167,136,255,188,165,134,255,186,164,133,255,185,163,132,255,183,161,131,255,183,160,129,255,182,159,129,255,180,157,128,255, +179,156,127,255,179,155,126,255,177,154,125,255,177,153,124,255,176,152,124,255,174,151,122,255,174,150,122,255,173,149,121,255, +173,148,120,255,172,147,120,255,171,147,119,255,169,145,119,255,169,145,118,255,168,144,117,255,167,142,116,255,166,142,115,255, +166,141,115,255,164,140,114,255,164,139,113,255,163,138,112,255,161,136,111,255,161,136,111,255,161,136,110,255,160,134,110,255, +159,133,109,255,158,132,108,255,156,130,106,255,154,128,105,255,151,124,102,255,147,121, 99,255,145,117, 97,255,142,116, 95,255, +140,113, 93,255,139,112, 92,255,138,111, 92,255,136,109, 90,255,136,108, 90,255,134,107, 89,255,133,106, 88,255,132,104, 87,255, +130,102, 86,255,128,101, 83,255,126, 98, 82,255,122, 94, 79,255,120, 91, 77,255,115, 85, 72,255,109, 79, 68,255,104, 76, 65,255, +100, 73, 63,255, 98, 71, 61,255, 99, 72, 62,255,103, 74, 64,255,106, 77, 66,255, 85, 70, 64,255, 61, 61, 61,255, 60, 60, 60,255, +133,122,105,255,201,180,147,255,200,179,146,255,200,179,146,255,201,180,146,255,201,180,146,255,201,180,147,255,201,181,148,255, +202,181,148,255,202,181,148,255,202,182,148,255,202,182,149,255,202,182,149,255,203,182,149,255,203,183,150,255,203,183,150,255, +203,183,150,255,203,183,150,255,203,182,150,255,203,182,150,255,203,182,150,255,202,182,149,255,202,182,149,255,201,181,148,255, +201,180,147,255,200,180,146,255,199,178,145,255,198,177,144,255,197,176,143,255,196,174,141,255,194,172,140,255,193,171,139,255, +191,169,137,255,190,168,136,255,189,166,135,255,187,164,133,255,186,163,132,255,184,161,131,255,183,160,130,255,182,159,129,255, +180,157,128,255,180,156,127,255,179,156,126,255,178,154,125,255,177,153,125,255,176,152,124,255,175,151,123,255,174,150,122,255, +173,149,122,255,172,148,121,255,172,148,120,255,171,147,119,255,170,146,119,255,169,145,118,255,168,144,117,255,167,142,116,255, +167,142,116,255,165,141,115,255,165,140,114,255,164,139,113,255,163,138,113,255,163,138,112,255,162,137,112,255,161,136,110,255, +159,134,110,255,158,132,109,255,156,130,107,255,153,127,104,255,148,123,101,255,146,119, 98,255,143,116, 96,255,140,113, 94,255, +139,112, 93,255,138,111, 91,255,136,109, 90,255,135,108, 90,255,135,108, 89,255,134,107, 89,255,132,105, 87,255,132,104, 87,255, +129,102, 84,255,128,100, 83,255,125, 97, 81,255,122, 93, 78,255,118, 89, 75,255,113, 83, 71,255,108, 78, 67,255,103, 74, 64,255, +100, 73, 63,255,100, 73, 63,255,102, 74, 64,255,107, 78, 66,255,109, 79, 68,255, 86, 71, 65,255, 61, 61, 61,255, 60, 60, 60,255, +134,123,106,255,202,181,148,255,201,181,147,255,201,181,148,255,202,181,148,255,202,181,148,255,202,181,148,255,202,182,149,255, +202,182,149,255,202,182,149,255,203,183,150,255,203,183,150,255,203,183,150,255,203,183,151,255,203,183,151,255,203,183,151,255, +203,183,151,255,203,183,151,255,203,184,151,255,203,183,151,255,203,183,151,255,203,183,151,255,203,183,151,255,202,182,150,255, +202,182,149,255,202,182,149,255,201,180,147,255,200,179,146,255,199,179,145,255,198,176,143,255,196,175,142,255,195,173,141,255, +194,172,139,255,192,170,138,255,190,168,136,255,188,166,134,255,187,164,133,255,186,163,132,255,184,161,131,255,183,160,130,255, +182,159,129,255,181,157,128,255,180,156,127,255,179,155,126,255,178,154,125,255,177,153,124,255,176,152,123,255,175,151,123,255, +174,150,122,255,173,149,121,255,172,148,121,255,171,147,120,255,171,147,119,255,170,146,119,255,169,145,118,255,168,144,117,255, +167,142,116,255,166,142,115,255,166,141,115,255,165,140,114,255,165,140,114,255,164,139,114,255,163,138,113,255,161,136,111,255, +160,134,110,255,157,131,108,255,155,129,106,255,151,125,103,255,147,121, 99,255,143,117, 96,255,141,115, 94,255,140,113, 93,255, +138,111, 92,255,138,111, 92,255,137,110, 91,255,135,108, 89,255,135,108, 89,255,134,107, 89,255,132,105, 87,255,131,104, 86,255, +129,102, 84,255,128,100, 83,255,125, 97, 81,255,122, 93, 78,255,117, 87, 74,255,111, 82, 70,255,106, 77, 66,255,102, 74, 64,255, +101, 73, 63,255,102, 74, 64,255,106, 77, 66,255,109, 80, 68,255,111, 82, 69,255, 87, 72, 66,255, 61, 61, 61,255, 60, 60, 60,255, +135,124,107,255,204,182,149,255,202,182,149,255,202,182,149,255,203,182,149,255,203,182,150,255,204,182,150,255,203,183,150,255, +203,183,151,255,203,183,151,255,204,183,151,255,204,184,151,255,204,184,152,255,203,184,152,255,203,184,152,255,204,184,152,255, +204,184,152,255,204,184,152,255,204,184,152,255,204,184,152,255,204,184,152,255,204,184,152,255,204,184,152,255,203,183,151,255, +203,183,151,255,202,182,150,255,202,182,150,255,202,182,149,255,201,180,147,255,200,179,146,255,199,178,145,255,197,176,142,255, +196,174,141,255,194,173,140,255,192,170,138,255,190,168,136,255,188,167,134,255,187,164,133,255,186,163,132,255,185,161,131,255, +183,160,130,255,182,159,129,255,181,158,128,255,180,156,127,255,179,155,126,255,177,154,125,255,176,153,124,255,176,152,123,255, +174,150,122,255,174,150,122,255,174,150,121,255,172,148,120,255,171,147,120,255,170,147,119,255,170,145,118,255,169,145,118,255, +168,144,117,255,166,142,116,255,166,142,116,255,166,141,115,255,166,141,115,255,165,140,114,255,164,139,113,255,161,135,111,255, +159,133,109,255,156,130,106,255,152,126,103,255,149,123,101,255,145,119, 98,255,142,116, 95,255,140,114, 94,255,139,113, 93,255, +138,111, 92,255,137,110, 91,255,137,110, 91,255,135,108, 89,255,135,108, 89,255,134,107, 89,255,132,105, 87,255,132,104, 87,255, +129,102, 84,255,128,100, 83,255,124, 96, 81,255,120, 92, 77,255,116, 86, 73,255,110, 81, 68,255,104, 76, 65,255,102, 74, 63,255, +102, 74, 64,255,105, 77, 66,255,109, 80, 68,255,112, 82, 70,255,114, 84, 71,255, 88, 73, 66,255, 61, 61, 61,255, 60, 60, 60,255, +135,125,107,255,205,185,152,255,204,184,151,255,204,184,151,255,203,184,151,255,204,184,151,255,204,184,151,255,204,184,152,255, +204,184,152,255,204,184,152,255,204,185,153,255,204,185,153,255,204,185,153,255,205,185,153,255,205,185,153,255,205,186,154,255, +204,186,154,255,204,186,154,255,204,186,154,255,204,186,154,255,204,186,154,255,204,186,154,255,204,186,154,255,205,185,154,255, +205,185,153,255,204,185,152,255,203,184,151,255,203,183,150,255,202,182,149,255,201,180,147,255,200,180,147,255,199,178,145,255, +197,176,143,255,196,174,141,255,194,172,140,255,192,170,138,255,191,168,137,255,189,167,135,255,187,165,134,255,186,163,132,255, +184,162,131,255,183,160,130,255,182,159,129,255,181,157,128,255,180,156,127,255,179,155,126,255,177,154,125,255,177,153,124,255, +176,152,124,255,174,151,123,255,174,150,122,255,174,150,122,255,172,148,120,255,171,147,120,255,170,147,120,255,170,145,118,255, +169,145,118,255,168,144,117,255,168,143,117,255,167,143,116,255,166,141,115,255,165,140,114,255,163,137,112,255,160,134,110,255, +156,130,107,255,152,126,103,255,149,123,101,255,146,120, 98,255,143,117, 96,255,142,115, 95,255,140,114, 94,255,139,112, 93,255, +138,111, 92,255,138,111, 92,255,137,110, 91,255,136,109, 90,255,135,108, 89,255,134,106, 88,255,133,106, 88,255,132,104, 87,255, +131,102, 86,255,128, 99, 83,255,124, 95, 80,255,120, 91, 76,255,114, 85, 72,255,108, 79, 68,255,104, 76, 65,255,103, 75, 63,255, +104, 76, 65,255,109, 80, 68,255,113, 83, 71,255,115, 85, 73,255,115, 86, 73,255, 89, 74, 67,255, 61, 61, 61,255, 60, 60, 60,255, +136,125,109,255,206,186,153,255,204,185,152,255,204,185,152,255,204,185,153,255,204,184,152,255,204,185,152,255,205,185,152,255, +204,185,153,255,205,185,153,255,205,185,154,255,205,186,154,255,205,186,154,255,205,186,153,255,204,186,154,255,204,185,154,255, +204,185,154,255,205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255, +205,186,155,255,205,186,155,255,204,185,154,255,204,184,153,255,203,184,152,255,203,183,150,255,201,181,148,255,201,180,147,255, +199,178,145,255,198,176,143,255,196,174,142,255,194,172,140,255,192,170,138,255,191,168,137,255,189,167,135,255,187,164,133,255, +186,163,132,255,184,162,131,255,183,160,130,255,182,159,129,255,180,157,128,255,179,156,127,255,179,155,126,255,177,154,125,255, +176,153,124,255,175,152,123,255,175,151,123,255,174,150,122,255,173,149,121,255,172,148,120,255,171,147,119,255,170,146,119,255, +170,146,119,255,169,145,118,255,168,144,117,255,168,143,117,255,166,141,115,255,164,138,113,255,161,135,110,255,156,131,107,255, +152,126,104,255,150,122,100,255,146,120, 99,255,144,117, 97,255,143,116, 96,255,141,115, 94,255,140,113, 93,255,139,111, 93,255, +138,111, 92,255,137,110, 91,255,137,110, 91,255,136,109, 90,255,135,108, 90,255,134,107, 89,255,134,106, 88,255,133,105, 87,255, +130,102, 85,255,128,100, 83,255,124, 95, 80,255,119, 90, 75,255,112, 84, 71,255,107, 78, 67,255,104, 75, 65,255,105, 76, 65,255, +107, 79, 67,255,113, 84, 71,255,116, 87, 73,255,117, 88, 74,255,118, 88, 74,255, 90, 75, 67,255, 61, 61, 61,255, 60, 60, 60,255, +136,126,110,255,207,187,155,255,205,185,153,255,204,185,153,255,204,185,153,255,205,185,153,255,205,185,153,255,204,184,153,255, +205,186,154,255,204,186,154,255,205,186,153,255,205,185,153,255,205,186,153,255,204,186,154,255,205,186,154,255,206,187,155,255, +205,186,155,255,206,187,155,255,206,187,156,255,206,187,156,255,206,186,155,255,206,186,155,255,206,186,155,255,206,186,155,255, +206,186,155,255,205,186,155,255,205,186,155,255,206,186,155,255,204,185,154,255,204,184,152,255,203,183,151,255,202,182,149,255, +201,180,147,255,200,179,146,255,198,177,143,255,196,174,142,255,195,173,140,255,192,170,138,255,191,168,137,255,189,167,135,255, +187,164,133,255,185,163,132,255,184,162,131,255,183,160,130,255,182,159,129,255,180,157,127,255,179,156,126,255,179,155,126,255, +177,153,125,255,176,153,124,255,176,152,124,255,174,150,122,255,174,150,122,255,173,149,122,255,172,148,120,255,171,147,119,255, +171,147,119,255,169,145,118,255,169,144,117,255,167,142,116,255,164,139,113,255,161,136,111,255,157,131,107,255,153,127,104,255, +149,123,102,255,147,121, 99,255,145,118, 97,255,143,117, 96,255,142,116, 95,255,141,114, 94,255,140,113, 94,255,139,113, 93,255, +139,111, 93,255,138,111, 92,255,137,110, 92,255,137,110, 91,255,136,109, 90,255,135,108, 89,255,135,107, 89,255,133,105, 88,255, +130,102, 85,255,128, 99, 83,255,123, 95, 80,255,117, 88, 74,255,111, 82, 70,255,107, 78, 67,255,105, 76, 65,255,107, 78, 67,255, +112, 83, 71,255,117, 88, 74,255,119, 90, 76,255,119, 90, 77,255,119, 90, 75,255, 91, 75, 68,255, 61, 61, 61,255, 60, 60, 60,255, +136,127,111,255,207,188,156,255,206,187,155,255,206,186,155,255,206,186,155,255,204,185,154,255,205,186,154,255,204,186,154,255, +205,185,153,255,205,186,153,255,205,186,153,255,204,186,154,255,205,185,155,255,206,186,155,255,206,187,156,255,205,186,156,255, +206,187,156,255,206,187,156,255,206,186,155,255,206,187,156,255,206,187,157,255,206,188,157,255,205,188,157,255,206,188,157,255, +206,188,157,255,206,188,157,255,206,188,157,255,206,188,157,255,206,187,156,255,205,186,156,255,205,185,153,255,204,184,152,255, +202,182,150,255,201,181,148,255,200,179,146,255,198,177,143,255,196,174,142,255,194,172,140,255,192,170,138,255,191,168,137,255, +189,166,135,255,187,164,133,255,185,162,132,255,184,161,131,255,182,159,129,255,182,159,129,255,181,157,127,255,179,156,127,255, +179,155,126,255,177,154,125,255,176,153,124,255,176,152,123,255,174,151,123,255,174,150,122,255,172,149,122,255,172,148,120,255, +171,147,120,255,169,145,118,255,168,143,117,255,166,140,114,255,161,136,112,255,157,132,108,255,154,128,105,255,151,125,102,255, +148,122,100,255,146,120, 99,255,144,118, 97,255,143,117, 96,255,142,116, 95,255,141,114, 94,255,140,113, 93,255,140,113, 93,255, +139,112, 92,255,139,112, 92,255,139,112, 92,255,138,111, 91,255,138,111, 92,255,137,110, 91,255,135,108, 89,255,134,106, 88,255, +132,103, 85,255,127, 98, 82,255,122, 93, 78,255,116, 87, 73,255,110, 81, 70,255,107, 79, 68,255,108, 79, 68,255,112, 83, 71,255, +117, 88, 74,255,120, 91, 76,255,122, 93, 78,255,122, 93, 78,255,120, 91, 77,255, 91, 76, 69,255, 61, 61, 61,255, 60, 60, 60,255, +137,127,111,255,207,188,157,255,205,186,156,255,205,186,155,255,206,187,154,255,205,186,154,255,205,186,155,255,205,186,155,255, +204,185,153,255,205,186,154,255,205,186,154,255,205,185,155,255,205,186,155,255,206,187,156,255,206,186,155,255,206,187,156,255, +206,187,156,255,206,186,155,255,206,187,156,255,206,188,157,255,206,188,156,255,205,188,156,255,206,187,157,255,206,187,157,255, +207,187,157,255,207,188,158,255,206,188,157,255,206,188,157,255,206,187,157,255,206,187,157,255,205,187,156,255,205,186,155,255, +204,185,152,255,202,182,150,255,201,181,148,255,200,179,146,255,198,177,143,255,196,174,142,255,194,172,140,255,192,170,138,255, +191,168,137,255,188,166,134,255,186,164,133,255,185,162,131,255,183,161,131,255,182,159,129,255,181,158,128,255,180,157,128,255, +179,156,127,255,178,155,126,255,177,153,125,255,176,152,124,255,175,152,123,255,174,150,122,255,173,149,121,255,172,148,120,255, +170,146,119,255,168,144,117,255,166,141,115,255,162,137,112,255,159,133,109,255,155,129,106,255,152,126,103,255,150,124,102,255, +147,121, 99,255,145,119, 98,255,144,118, 97,255,143,117, 96,255,141,116, 95,255,141,114, 94,255,140,114, 94,255,140,113, 93,255, +139,112, 93,255,139,112, 93,255,139,112, 92,255,139,111, 92,255,138,111, 92,255,137,111, 91,255,137,109, 90,255,134,106, 88,255, +131,102, 86,255,126, 97, 82,255,120, 91, 77,255,115, 86, 72,255,111, 82, 70,255,110, 81, 69,255,113, 84, 71,255,117, 88, 75,255, +121, 92, 78,255,123, 94, 79,255,124, 95, 80,255,122, 94, 79,255,121, 92, 77,255, 91, 76, 69,255, 61, 61, 61,255, 60, 60, 60,255, +137,128,111,255,208,189,158,255,207,188,156,255,206,187,156,255,205,186,155,255,206,186,155,255,206,186,154,255,206,187,155,255, +205,185,154,255,204,186,155,255,205,186,155,255,205,186,155,255,206,187,156,255,205,187,156,255,206,187,156,255,206,187,156,255, +206,187,156,255,206,186,155,255,206,187,156,255,206,187,156,255,205,188,157,255,206,187,156,255,207,189,158,255,207,188,158,255, +207,188,157,255,207,189,158,255,208,188,159,255,207,188,158,255,208,188,158,255,207,188,158,255,206,189,158,255,206,187,156,255, +205,186,155,255,204,185,153,255,202,183,151,255,201,181,148,255,200,179,146,255,198,177,143,255,196,174,142,255,195,173,140,255, +192,170,138,255,190,168,136,255,188,166,134,255,186,163,132,255,185,162,131,255,184,161,130,255,182,159,129,255,181,158,128,255, +179,156,126,255,178,155,126,255,178,154,125,255,176,153,124,255,175,152,123,255,175,151,123,255,173,149,121,255,171,147,120,255, +169,144,117,255,166,141,114,255,163,137,112,255,159,133,109,255,156,130,106,255,152,126,103,255,150,124,102,255,148,121,100,255, +146,120, 98,255,145,119, 98,255,143,117, 96,255,143,117, 96,255,143,117, 96,255,141,115, 94,255,142,114, 94,255,141,115, 95,255, +140,113, 93,255,141,114, 93,255,140,113, 94,255,140,113, 92,255,139,112, 93,255,138,111, 92,255,137,110, 91,255,134,107, 88,255, +130,101, 84,255,125, 97, 80,255,119, 90, 76,255,114, 85, 72,255,112, 83, 71,255,114, 85, 72,255,118, 89, 75,255,122, 94, 78,255, +125, 96, 80,255,127, 98, 82,255,126, 97, 81,255,124, 96, 80,255,122, 93, 78,255, 92, 76, 69,255, 61, 61, 61,255, 60, 60, 60,255, +137,128,112,255,208,190,159,255,206,188,157,255,206,187,156,255,206,187,156,255,206,187,155,255,206,187,154,255,205,186,154,255, +205,186,155,255,204,185,154,255,204,185,154,255,205,186,155,255,206,187,156,255,206,187,156,255,206,187,156,255,206,187,156,255, +206,186,155,255,206,187,156,255,206,188,157,255,205,188,157,255,206,187,156,255,207,188,157,255,207,188,157,255,206,189,158,255, +207,188,158,255,208,189,159,255,207,189,159,255,208,190,160,255,207,190,160,255,208,190,160,255,208,190,159,255,207,189,159,255, +206,187,157,255,205,186,155,255,204,185,153,255,203,183,151,255,201,181,148,255,200,179,146,255,198,177,143,255,196,174,141,255, +194,172,139,255,192,170,137,255,189,167,135,255,187,165,133,255,185,162,132,255,184,161,131,255,182,160,129,255,181,158,129,255, +181,157,128,255,179,156,126,255,178,155,126,255,177,153,124,255,176,152,124,255,175,151,123,255,172,148,120,255,169,145,118,255, +166,141,115,255,162,137,112,255,159,134,109,255,156,130,106,255,152,127,104,255,150,124,102,255,148,122,100,255,146,120, 99,255, +145,119, 98,255,145,118, 98,255,143,117, 96,255,143,117, 97,255,143,116, 96,255,142,116, 95,255,142,116, 95,255,142,116, 95,255, +142,115, 95,255,142,115, 95,255,141,114, 95,255,141,114, 94,255,140,113, 93,255,139,112, 92,255,137,109, 90,255,133,105, 87,255, +128,100, 83,255,122, 94, 79,255,117, 88, 75,255,115, 86, 73,255,116, 87, 73,255,119, 90, 76,255,123, 95, 80,255,127, 99, 82,255, +128,100, 83,255,128,100, 84,255,127, 98, 82,255,125, 96, 81,255,123, 94, 79,255, 92, 77, 69,255, 61, 61, 61,255, 60, 60, 60,255, +137,128,112,255,209,190,159,255,206,188,157,255,207,188,157,255,206,187,156,255,206,187,155,255,206,187,154,255,206,187,155,255, +205,186,155,255,204,185,155,255,205,186,155,255,205,186,155,255,206,187,156,255,206,187,156,255,206,187,156,255,206,187,156,255, +206,187,156,255,206,187,156,255,205,188,157,255,206,188,157,255,207,187,156,255,206,188,157,255,206,189,158,255,207,188,158,255, +207,189,159,255,207,190,160,255,208,190,160,255,208,189,160,255,208,189,161,255,207,189,160,255,207,189,161,255,207,189,160,255, +207,189,159,255,206,188,158,255,206,187,155,255,204,185,153,255,203,183,151,255,201,181,148,255,200,179,146,255,197,176,143,255, +195,174,141,255,193,171,139,255,190,168,136,255,188,166,135,255,186,164,132,255,184,161,132,255,183,160,130,255,182,159,129,255, +180,158,128,255,179,156,126,255,178,155,126,255,177,153,125,255,175,151,122,255,173,149,121,255,170,146,119,255,167,142,116,255, +163,138,113,255,159,134,109,255,155,130,106,255,153,127,104,255,150,124,102,255,148,122,100,255,147,121,100,255,146,120, 98,255, +145,118, 97,255,145,117, 98,255,143,117, 96,255,143,118, 96,255,143,117, 97,255,143,116, 96,255,143,116, 96,255,143,116, 96,255, +143,116, 96,255,143,116, 96,255,143,116, 96,255,143,116, 95,255,141,114, 94,255,140,112, 93,255,136,108, 90,255,132,104, 86,255, +125, 97, 81,255,120, 92, 77,255,117, 88, 74,255,117, 88, 75,255,121, 92, 77,255,126, 98, 81,255,129,101, 85,255,131,103, 86,255, +131,103, 86,255,130,102, 85,255,128,100, 84,255,127, 98, 82,255,123, 95, 79,255, 92, 77, 70,255, 61, 61, 61,255, 60, 60, 60,255, +138,129,113,255,209,191,160,255,206,188,158,255,207,188,157,255,206,187,156,255,206,187,155,255,205,186,154,255,206,187,155,255, +204,185,155,255,205,186,155,255,205,186,155,255,205,186,155,255,206,187,156,255,206,187,156,255,206,187,156,255,206,187,156,255, +205,186,155,255,205,187,156,255,206,188,157,255,206,187,156,255,207,188,157,255,207,189,158,255,206,188,158,255,207,188,159,255, +208,189,159,255,208,190,159,255,208,190,160,255,208,189,161,255,207,190,161,255,208,191,162,255,209,191,162,255,208,190,161,255, +207,189,161,255,208,190,160,255,206,188,158,255,206,187,156,255,205,186,154,255,203,183,151,255,201,181,148,255,199,178,145,255, +197,176,143,255,194,173,140,255,192,170,138,255,189,167,135,255,187,164,133,255,186,163,132,255,183,160,130,255,182,159,129,255, +180,157,127,255,179,156,126,255,177,153,125,255,174,150,122,255,173,149,121,255,170,145,118,255,166,141,115,255,163,138,112,255, +159,133,109,255,155,130,106,255,153,126,104,255,150,124,102,255,148,122,100,255,147,121, 99,255,147,120, 99,255,145,119, 98,255, +145,118, 97,255,145,119, 98,255,144,118, 96,255,145,117, 97,255,145,118, 97,255,145,118, 97,255,145,118, 97,255,145,117, 96,255, +145,119, 98,255,145,119, 98,255,145,118, 98,255,144,117, 96,255,142,115, 95,255,140,112, 93,255,134,107, 89,255,128,100, 84,255, +122, 94, 78,255,119, 90, 76,255,119, 90, 76,255,123, 94, 79,255,128,100, 83,255,133,105, 87,255,134,107, 89,255,135,107, 89,255, +134,106, 88,255,132,104, 86,255,130,102, 85,255,127, 98, 83,255,124, 95, 80,255, 93, 77, 70,255, 61, 61, 61,255, 60, 60, 60,255, +138,129,113,255,209,191,160,255,207,188,159,255,207,188,157,255,206,187,156,255,206,187,155,255,206,187,155,255,205,186,154,255, +204,185,155,255,205,186,155,255,205,186,155,255,204,186,155,255,205,186,155,255,205,186,155,255,206,187,156,255,206,187,156,255, +205,186,155,255,206,187,156,255,206,187,156,255,207,188,156,255,207,187,157,255,207,188,157,255,206,188,159,255,207,189,159,255, +208,189,160,255,208,190,160,255,208,190,160,255,207,189,160,255,208,191,161,255,209,190,162,255,208,191,162,255,209,190,161,255, +209,191,162,255,208,190,161,255,207,189,160,255,207,189,159,255,206,187,156,255,205,186,154,255,203,183,151,255,201,180,148,255, +199,178,145,255,196,175,142,255,193,172,139,255,190,168,136,255,187,165,133,255,186,163,132,255,183,160,130,255,182,159,129,255, +180,157,127,255,178,154,126,255,176,151,123,255,172,147,120,255,169,144,117,255,165,140,114,255,161,136,111,255,157,132,108,255, +155,129,106,255,153,126,104,255,151,125,102,255,149,123,101,255,148,122,100,255,147,121, 99,255,146,120, 99,255,146,120, 99,255, +146,120, 98,255,145,119, 98,255,145,119, 98,255,145,119, 98,255,145,119, 98,255,146,119, 98,255,146,119, 98,255,146,120, 98,255, +146,120, 99,255,147,120, 99,255,147,120, 99,255,145,119, 97,255,143,116, 95,255,138,111, 92,255,132,104, 87,255,125, 96, 81,255, +120, 91, 77,255,120, 91, 76,255,124, 95, 80,255,130,102, 85,255,136,108, 89,255,137,110, 92,255,138,110, 91,255,137,110, 91,255, +135,108, 89,255,133,106, 88,255,131,103, 85,255,127, 99, 83,255,125, 96, 80,255, 92, 77, 70,255, 61, 61, 61,255, 60, 60, 60,255, +138,129,114,255,209,191,161,255,207,189,159,255,206,188,157,255,206,187,155,255,206,187,156,255,206,187,155,255,205,186,155,255, +205,186,155,255,205,186,155,255,205,186,155,255,205,185,154,255,204,185,154,255,205,187,156,255,206,186,155,255,206,187,156,255, +206,187,156,255,205,186,155,255,206,187,156,255,207,188,157,255,207,187,157,255,207,188,157,255,206,188,159,255,207,188,159,255, +207,189,159,255,208,190,160,255,208,190,160,255,207,189,160,255,209,191,162,255,208,191,162,255,209,190,161,255,209,191,162,255, +208,191,162,255,209,191,162,255,208,190,162,255,208,190,161,255,207,189,159,255,206,188,157,255,205,186,154,255,203,183,151,255, +201,180,147,255,198,177,144,255,194,173,140,255,191,169,137,255,187,165,134,255,185,163,132,255,182,160,130,255,181,158,128,255, +178,154,125,255,175,151,123,255,172,147,120,255,168,143,116,255,164,138,113,255,159,133,109,255,156,130,107,255,153,128,105,255, +152,126,103,255,150,125,102,255,149,123,101,255,148,122,100,255,147,121,100,255,147,121, 99,255,147,121,100,255,147,121, 99,255, +147,121, 99,255,147,120, 99,255,146,120, 99,255,147,121, 99,255,147,121, 99,255,148,121, 99,255,148,122,100,255,148,122,100,255, +148,122,100,255,148,122,100,255,147,120, 99,255,146,119, 98,255,142,115, 95,255,136,109, 89,255,128,100, 83,255,122, 93, 79,255, +121, 92, 77,255,125, 96, 81,255,132,104, 86,255,138,111, 92,255,141,114, 94,255,142,115, 94,255,140,113, 93,255,139,111, 92,255, +137,109, 91,255,134,107, 88,255,132,104, 87,255,128,100, 84,255,124, 96, 80,255, 92, 77, 70,255, 61, 61, 61,255, 60, 60, 60,255, +138,129,114,255,210,192,163,255,207,189,159,255,207,188,157,255,206,187,157,255,206,187,155,255,206,187,156,255,205,186,155,255, +205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,204,186,155,255,205,185,154,255,206,187,156,255,205,186,155,255, +206,187,155,255,205,186,156,255,206,187,157,255,206,187,157,255,207,188,158,255,207,187,157,255,207,189,159,255,206,188,158,255, +207,189,159,255,207,190,159,255,208,190,160,255,207,189,160,255,209,191,162,255,209,190,161,255,209,191,162,255,209,191,163,255, +208,191,164,255,209,192,164,255,209,192,163,255,209,191,163,255,208,191,162,255,207,189,159,255,206,187,158,255,205,186,154,255, +202,183,151,255,200,179,146,255,196,175,142,255,192,170,138,255,188,166,134,255,185,161,132,255,181,158,128,255,178,154,125,255, +174,150,122,255,170,146,119,255,166,141,115,255,162,137,112,255,158,133,109,255,155,130,106,255,152,127,104,255,151,125,102,255, +150,124,102,255,148,123,100,255,149,122,100,255,148,122,101,255,147,122,100,255,148,122,100,255,148,121,100,255,148,122,101,255, +148,122,101,255,149,123,101,255,149,123,101,255,149,123,101,255,150,123,101,255,150,124,102,255,150,124,102,255,151,125,102,255, +150,124,102,255,149,123,101,255,149,122,100,255,145,119, 98,255,139,113, 93,255,131,103, 86,255,124, 95, 80,255,121, 92, 77,255, +125, 96, 81,255,133,105, 88,255,140,114, 94,255,145,118, 97,255,145,118, 98,255,144,117, 96,255,142,115, 94,255,140,113, 93,255, +138,110, 91,255,135,107, 89,255,132,104, 87,255,128,100, 84,255,124, 96, 80,255, 92, 77, 70,255, 61, 61, 61,255, 60, 60, 60,255, +138,129,115,255,210,192,163,255,208,190,159,255,207,189,158,255,206,188,157,255,205,187,156,255,206,187,156,255,205,186,155,255, +205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,204,185,154,255,205,186,155,255,206,187,156,255, +206,187,155,255,205,186,156,255,206,187,157,255,207,188,157,255,206,187,158,255,207,187,157,255,207,188,158,255,206,189,158,255, +207,188,159,255,208,190,160,255,208,189,160,255,208,190,161,255,208,190,161,255,209,191,162,255,209,191,162,255,208,191,164,255, +209,192,164,255,210,193,165,255,210,193,165,255,209,192,164,255,209,192,164,255,209,191,162,255,208,190,161,255,207,188,159,255, +205,186,155,255,202,182,150,255,199,178,145,255,194,172,139,255,189,166,135,255,184,161,130,255,179,155,126,255,174,149,122,255, +169,145,117,255,165,140,114,255,161,136,111,255,157,132,108,255,155,129,106,255,152,127,104,255,151,125,103,255,150,124,102,255, +149,123,101,255,149,122,101,255,148,122,101,255,148,122,101,255,148,122,101,255,149,123,100,255,149,123,101,255,149,123,101,255, +150,124,102,255,151,125,102,255,151,125,103,255,152,125,103,255,152,126,103,255,152,126,103,255,153,127,104,255,153,127,104,255, +152,126,103,255,150,124,102,255,147,121, 99,255,142,116, 96,255,134,107, 89,255,126, 98, 82,255,122, 93, 78,255,125, 97, 81,255, +134,107, 88,255,142,116, 95,255,147,120, 99,255,148,121,100,255,147,121, 98,255,145,119, 97,255,143,116, 96,255,141,114, 94,255, +138,110, 91,255,135,107, 89,255,132,104, 87,255,128, 99, 83,255,124, 95, 80,255, 92, 76, 69,255, 61, 61, 61,255, 60, 60, 60,255, +138,130,115,255,211,193,164,255,208,190,161,255,207,189,159,255,207,188,157,255,205,187,156,255,206,187,156,255,205,186,155,255, +205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,206,186,155,255, +206,187,155,255,206,187,156,255,205,186,156,255,206,187,157,255,207,188,157,255,207,188,158,255,207,188,158,255,207,189,159,255, +206,188,158,255,208,189,160,255,207,190,160,255,208,190,160,255,208,190,161,255,209,191,161,255,208,191,162,255,208,192,164,255, +209,192,164,255,210,193,165,255,209,193,165,255,210,193,165,255,209,193,165,255,209,193,165,255,209,192,164,255,209,191,163,255, +208,190,161,255,206,187,156,255,202,182,150,255,196,175,142,255,190,167,136,255,183,160,129,255,177,153,124,255,170,146,119,255, +165,140,114,255,161,136,110,255,158,132,107,255,155,129,106,255,152,126,103,255,150,125,102,255,150,124,102,255,149,123,101,255, +149,123,100,255,149,123,101,255,147,121,101,255,148,122,101,255,149,123,100,255,149,123,101,255,149,123,101,255,150,124,102,255, +152,126,103,255,153,127,104,255,154,128,105,255,154,129,106,255,155,129,106,255,156,130,106,255,156,130,107,255,155,129,105,255, +154,128,104,255,150,124,102,255,145,119, 97,255,137,110, 91,255,128,100, 84,255,123, 95, 79,255,126, 98, 82,255,135,108, 90,255, +144,118, 97,255,149,123,101,255,150,124,101,255,149,123,101,255,148,121,100,255,146,119, 98,255,143,116, 96,255,141,113, 94,255, +138,110, 91,255,135,107, 89,255,131,104, 86,255,127, 99, 83,255,123, 93, 78,255, 90, 75, 68,255, 61, 61, 61,255, 60, 60, 60,255, +139,130,116,255,211,194,165,255,208,190,161,255,207,189,159,255,207,188,158,255,205,187,156,255,206,187,156,255,205,186,155,255, +205,186,154,255,205,186,155,255,205,186,155,255,205,186,154,255,205,186,155,255,205,186,155,255,204,185,154,255,205,186,155,255, +205,187,155,255,206,187,155,255,206,187,156,255,206,187,157,255,207,188,157,255,206,187,158,255,207,188,158,255,207,189,159,255, +207,189,159,255,207,189,159,255,208,190,160,255,208,189,160,255,207,190,161,255,208,191,162,255,209,190,162,255,208,192,164,255, +209,192,164,255,210,192,164,255,209,194,166,255,209,193,165,255,210,194,167,255,211,194,167,255,211,195,168,255,211,195,168,255, +210,194,166,255,209,192,163,255,206,187,157,255,200,180,148,255,193,171,139,255,185,162,131,255,177,153,124,255,170,145,118,255, +163,138,113,255,159,133,109,255,155,129,106,255,152,126,103,255,151,125,102,255,150,124,102,255,148,122,100,255,149,123,100,255, +148,122,100,255,147,121,101,255,148,122,100,255,148,122,100,255,150,124,102,255,150,124,102,255,151,125,103,255,152,127,104,255, +154,128,105,255,155,129,105,255,157,131,107,255,158,132,108,255,159,133,109,255,159,133,109,255,158,133,109,255,157,131,108,255, +154,128,105,255,148,122,100,255,139,112, 93,255,130,102, 86,255,125, 96, 81,255,127, 99, 83,255,137,109, 90,255,147,121, 99,255, +152,127,104,255,152,126,104,255,152,125,103,255,149,123,101,255,148,121,100,255,145,118, 97,255,142,115, 95,255,140,113, 93,255, +138,110, 91,255,134,107, 88,255,131,103, 86,255,126, 98, 82,255,121, 92, 78,255, 89, 74, 67,255, 61, 61, 61,255, 60, 60, 60,255, +139,131,116,255,211,194,166,255,209,191,162,255,208,190,160,255,207,188,158,255,205,187,156,255,206,186,155,255,205,186,155,255, +205,185,155,255,205,186,154,255,205,186,154,255,205,186,155,255,205,185,154,255,205,186,155,255,204,186,154,255,205,185,155,255, +206,187,156,255,205,186,155,255,206,187,155,255,206,187,157,255,206,187,156,255,207,188,157,255,207,187,157,255,207,188,158,255, +207,189,159,255,207,189,159,255,208,189,160,255,207,190,159,255,207,190,161,255,208,190,161,255,209,190,162,255,208,192,164,255, +209,192,164,255,210,192,164,255,210,194,166,255,210,193,166,255,210,194,167,255,211,195,169,255,212,196,170,255,213,197,172,255, +213,198,173,255,213,197,172,255,211,195,167,255,207,189,159,255,200,179,146,255,191,169,137,255,182,158,129,255,173,149,121,255, +167,142,115,255,159,135,110,255,155,130,106,255,152,127,104,255,150,124,102,255,149,123,101,255,148,122,100,255,148,122,100,255, +147,121,100,255,148,122,100,255,149,123,101,255,149,123,101,255,150,124,102,255,151,125,103,255,153,127,104,255,154,128,105,255, +155,129,106,255,157,131,107,255,159,133,109,255,160,135,110,255,161,136,111,255,161,136,111,255,160,135,109,255,157,132,107,255, +151,126,103,255,142,115, 95,255,131,104, 86,255,126, 98, 82,255,129,101, 84,255,138,112, 92,255,150,124,101,255,156,130,106,255, +156,130,106,255,154,128,104,255,152,125,103,255,149,122,100,255,146,120, 99,255,145,118, 97,255,142,115, 94,255,140,113, 93,255, +137,110, 91,255,134,106, 88,255,130,102, 85,255,126, 97, 81,255,119, 90, 75,255, 88, 73, 66,255, 61, 61, 61,255, 60, 60, 60,255, +140,131,118,255,212,196,168,255,209,192,164,255,208,190,161,255,207,189,158,255,206,187,157,255,206,187,156,255,205,186,155,255, +205,186,155,255,205,185,154,255,205,185,153,255,205,185,154,255,205,186,155,255,205,185,155,255,205,186,155,255,204,185,154,255, +205,186,155,255,206,187,156,255,206,187,155,255,205,186,157,255,206,187,156,255,207,188,157,255,207,187,157,255,207,188,158,255, +207,189,159,255,207,188,159,255,207,189,159,255,208,190,160,255,207,190,160,255,208,191,161,255,208,190,162,255,208,191,163,255, +209,192,164,255,210,192,164,255,210,194,166,255,211,194,166,255,211,195,168,255,212,196,171,255,213,197,172,255,214,199,175,255, +216,201,178,255,216,202,180,255,217,202,180,255,215,199,174,255,209,191,162,255,201,179,147,255,190,168,136,255,180,157,127,255, +171,147,119,255,164,139,114,255,159,134,109,255,155,129,106,255,151,126,104,255,149,124,102,255,149,123,101,255,149,123,101,255, +148,122,100,255,149,123,101,255,150,124,102,255,151,125,102,255,151,125,103,255,153,127,104,255,154,128,105,255,155,129,106,255, +157,132,108,255,159,133,109,255,160,135,110,255,162,137,112,255,162,137,112,255,162,137,111,255,160,135,110,255,153,128,106,255, +144,118, 97,255,133,106, 88,255,127, 98, 82,255,130,102, 85,255,141,115, 95,255,153,128,105,255,158,133,108,255,159,133,109,255, +157,131,107,255,154,128,105,255,150,125,102,255,148,122,100,255,146,119, 98,255,144,117, 96,255,141,114, 94,255,140,112, 93,255, +137,109, 91,255,133,106, 88,255,129,101, 84,255,124, 95, 80,255,116, 87, 73,255, 86, 71, 64,255, 61, 61, 61,255, 60, 60, 60,255, +140,132,118,255,213,197,169,255,210,193,165,255,208,191,161,255,208,190,160,255,206,187,157,255,206,187,156,255,205,186,155,255, +205,186,154,255,205,185,153,255,205,184,154,255,205,184,153,255,205,185,153,255,205,186,154,255,205,186,155,255,205,186,155,255, +205,186,155,255,206,187,156,255,205,186,155,255,205,186,157,255,206,187,157,255,207,188,158,255,207,188,158,255,207,187,157,255, +207,188,158,255,206,188,158,255,207,189,159,255,208,190,160,255,208,190,160,255,207,191,161,255,208,191,161,255,209,191,163,255, +208,191,163,255,209,192,164,255,209,194,165,255,210,193,166,255,211,195,168,255,212,197,171,255,213,199,174,255,214,201,176,255, +217,203,182,255,219,207,186,255,221,209,189,255,220,209,188,255,217,203,180,255,211,195,167,255,203,183,150,255,192,170,138,255, +181,158,128,255,173,149,121,255,166,141,115,255,160,135,110,255,156,130,107,255,153,127,104,255,151,126,103,255,151,125,103,255, +151,125,103,255,151,125,102,255,151,125,103,255,152,126,103,255,154,128,105,255,155,129,106,255,157,131,106,255,158,132,108,255, +159,134,109,255,161,136,111,255,163,137,112,255,163,138,113,255,163,138,112,255,161,136,111,255,154,130,106,255,145,119, 98,255, +135,107, 89,255,128,100, 83,255,131,104, 86,255,144,117, 97,255,156,132,107,255,162,137,112,255,161,136,111,255,159,133,109,255, +155,129,106,255,153,126,104,255,150,123,101,255,147,120, 99,255,145,119, 97,255,143,116, 96,255,141,114, 94,255,139,112, 92,255, +137,109, 90,255,133,105, 87,255,129,100, 83,255,122, 93, 78,255,113, 83, 70,255, 84, 69, 63,255, 61, 61, 61,255, 60, 60, 60,255, +141,132,119,255,214,198,171,255,211,195,167,255,210,192,163,255,208,190,160,255,207,188,158,255,206,187,156,255,205,186,155,255, +204,185,154,255,205,185,153,255,205,184,154,255,205,184,154,255,205,185,154,255,205,186,153,255,205,186,155,255,205,186,154,255, +205,186,155,255,205,186,156,255,206,187,156,255,206,187,157,255,205,186,156,255,206,187,157,255,207,188,158,255,207,187,157,255, +207,188,158,255,206,189,159,255,207,188,158,255,207,189,159,255,208,190,160,255,207,190,161,255,208,190,161,255,209,191,163,255, +208,191,163,255,209,192,164,255,209,193,165,255,210,193,166,255,210,194,167,255,212,196,170,255,213,198,173,255,215,201,176,255, +218,204,182,255,221,208,189,255,224,212,195,255,225,215,198,255,224,214,196,255,222,209,188,255,216,200,175,255,207,188,157,255, +196,174,142,255,185,162,131,255,176,152,124,255,169,144,118,255,163,138,113,255,159,133,109,255,156,131,107,255,154,128,105,255, +153,128,104,255,153,127,104,255,154,128,105,255,155,129,105,255,157,130,106,255,158,132,108,255,159,134,109,255,161,135,111,255, +162,137,112,255,163,138,113,255,164,139,113,255,163,139,113,255,161,136,111,255,155,130,106,255,145,118, 98,255,134,107, 89,255, +129,101, 84,255,134,106, 88,255,147,122,100,255,160,135,110,255,165,140,114,255,164,139,114,255,161,135,110,255,157,132,108,255, +154,128,105,255,151,125,102,255,149,122,100,255,146,120, 98,255,145,118, 97,255,142,115, 95,255,140,113, 93,255,139,112, 92,255, +136,109, 90,255,132,104, 87,255,127, 99, 82,255,120, 91, 76,255,108, 79, 67,255, 80, 67, 61,255, 61, 61, 61,255, 60, 60, 60,255, +141,133,121,255,215,200,173,255,212,196,170,255,210,193,165,255,208,191,162,255,207,189,159,255,206,187,157,255,206,187,156,255, +204,185,154,255,205,185,154,255,205,184,153,255,205,185,154,255,205,185,154,255,205,186,153,255,205,186,154,255,205,186,155,255, +204,185,155,255,205,186,156,255,206,187,156,255,206,187,157,255,205,186,156,255,206,187,157,255,207,188,158,255,207,187,157,255, +207,188,158,255,207,189,159,255,206,188,158,255,207,189,159,255,208,189,160,255,208,189,160,255,207,189,161,255,209,191,162,255, +208,191,163,255,209,191,163,255,210,193,165,255,210,193,165,255,210,194,167,255,212,196,169,255,213,197,171,255,214,199,175,255, +217,204,181,255,220,208,188,255,224,213,195,255,227,218,202,255,228,220,205,255,227,219,203,255,225,214,195,255,219,206,184,255, +211,194,167,255,201,181,148,255,190,168,136,255,181,158,127,255,173,149,121,255,167,142,116,255,162,137,112,255,160,134,110,255, +158,133,108,255,157,132,108,255,157,132,108,255,158,133,109,255,159,134,109,255,161,136,110,255,163,138,113,255,164,139,114,255, +166,140,115,255,165,141,115,255,165,140,114,255,161,137,112,255,154,129,106,255,143,117, 96,255,133,105, 87,255,130,102, 85,255, +137,110, 91,255,151,126,103,255,163,139,113,255,166,143,116,255,166,141,115,255,163,138,113,255,159,134,109,255,155,130,106,255, +153,127,104,255,150,124,101,255,148,121,100,255,146,119, 98,255,144,117, 96,255,142,115, 95,255,140,113, 93,255,139,111, 92,255, +135,108, 89,255,131,103, 85,255,125, 96, 81,255,116, 87, 73,255,102, 74, 64,255, 76, 64, 60,255, 61, 61, 62,255, 60, 60, 60,255, +142,134,122,255,216,201,176,255,212,197,171,255,211,195,167,255,210,192,164,255,208,190,161,255,207,188,158,255,206,187,156,255, +205,186,155,255,204,185,154,255,204,184,153,255,205,185,154,255,205,186,154,255,205,186,154,255,205,185,153,255,205,186,154,255, +204,185,155,255,205,186,156,255,206,187,155,255,206,187,157,255,205,186,156,255,206,187,157,255,207,188,158,255,207,187,157,255, +207,188,158,255,207,189,159,255,206,188,158,255,207,189,159,255,208,190,159,255,208,190,160,255,208,189,160,255,208,190,162,255, +208,190,162,255,208,191,163,255,208,192,164,255,209,193,165,255,209,193,166,255,211,195,168,255,212,197,170,255,213,199,174,255, +216,202,179,255,219,207,186,255,222,212,194,255,226,218,202,255,229,222,208,255,230,223,210,255,229,221,206,255,226,217,201,255, +222,212,191,255,216,202,178,255,207,189,158,255,197,175,143,255,187,165,134,255,178,156,126,255,172,149,120,255,168,143,116,255, +165,140,114,255,163,138,112,255,163,138,112,255,163,138,113,255,164,139,113,255,165,141,114,255,168,143,116,255,168,144,117,255, +169,144,118,255,167,143,117,255,163,139,114,255,155,129,107,255,142,116, 95,255,132,104, 86,255,129,102, 85,255,140,114, 93,255, +155,131,107,255,166,142,116,255,169,145,118,255,167,142,116,255,163,138,113,255,160,135,110,255,157,131,108,255,153,127,105,255, +150,124,102,255,149,123,101,255,147,121, 99,255,145,118, 97,255,144,117, 96,255,143,116, 95,255,140,113, 94,255,139,111, 92,255, +135,107, 89,255,130,102, 85,255,122, 94, 79,255,111, 82, 70,255, 95, 70, 60,255, 74, 64, 59,255, 61, 61, 62,255, 60, 60, 60,255, +142,135,123,255,218,202,179,255,214,199,174,255,212,196,170,255,211,194,166,255,209,191,162,255,207,189,159,255,206,188,157,255, +205,186,155,255,204,185,154,255,205,184,153,255,204,185,153,255,204,185,153,255,205,185,154,255,205,186,154,255,204,185,154,255, +205,186,155,255,204,185,155,255,205,186,156,255,206,187,157,255,205,186,156,255,206,187,157,255,207,188,158,255,206,187,157,255, +206,188,158,255,207,189,159,255,206,188,158,255,207,189,159,255,207,190,159,255,207,190,160,255,208,190,160,255,207,190,161,255, +207,190,162,255,208,191,162,255,209,192,163,255,208,192,164,255,209,192,165,255,210,194,167,255,212,196,169,255,213,198,173,255, +215,201,177,255,218,205,182,255,221,210,190,255,225,215,198,255,228,221,206,255,231,225,212,255,231,224,211,255,229,222,208,255, +227,219,203,255,225,215,198,255,221,209,189,255,214,198,173,255,206,187,155,255,196,174,142,255,187,164,133,255,179,157,127,255, +175,151,123,255,172,148,120,255,170,146,118,255,170,145,118,255,170,146,118,255,171,147,119,255,172,148,120,255,173,148,121,255, +171,147,120,255,166,142,115,255,156,131,107,255,142,116, 95,255,130,103, 86,255,130,102, 85,255,143,117, 97,255,160,136,110,255, +169,146,118,255,171,146,119,255,168,143,117,255,164,139,114,255,160,135,110,255,158,132,107,255,154,129,105,255,152,126,103,255, +150,123,101,255,148,122,100,255,147,120, 99,255,145,118, 97,255,144,117, 96,255,143,116, 96,255,141,114, 94,255,138,111, 92,255, +134,107, 88,255,128,100, 84,255,119, 90, 76,255,104, 76, 65,255, 89, 68, 58,255, 79, 66, 61,255, 61, 61, 62,255, 60, 60, 60,255, +143,136,124,255,218,205,182,255,215,201,177,255,213,198,172,255,211,196,168,255,210,193,164,255,208,190,161,255,207,188,157,255, +205,187,156,255,204,185,154,255,205,184,154,255,203,184,153,255,203,184,152,255,204,184,153,255,204,185,153,255,205,186,153,255, +205,186,155,255,204,185,155,255,205,186,156,255,206,186,157,255,205,187,156,255,206,187,157,255,206,188,158,255,206,187,157,255, +206,188,158,255,207,189,159,255,207,188,158,255,206,189,159,255,206,190,159,255,207,190,160,255,208,189,161,255,208,190,161,255, +207,191,161,255,208,191,162,255,208,192,162,255,208,191,163,255,209,192,164,255,210,193,166,255,211,195,168,255,212,197,171,255, +214,199,175,255,216,203,179,255,220,207,186,255,223,212,194,255,227,218,202,255,230,223,209,255,232,226,213,255,231,225,212,255, +229,222,208,255,227,219,204,255,226,218,202,255,225,215,198,255,221,209,189,255,214,199,174,255,206,187,155,255,197,175,142,255, +189,166,134,255,183,160,130,255,180,157,127,255,178,154,126,255,177,153,125,255,177,153,124,255,176,152,124,255,174,151,123,255, +168,145,118,255,158,133,109,255,142,116, 96,255,130,103, 85,255,131,104, 87,255,146,120, 99,255,163,138,113,255,170,147,119,255, +171,146,119,255,168,143,117,255,164,139,114,255,160,135,110,255,158,132,107,255,155,129,106,255,152,126,104,255,151,125,102,255, +150,124,102,255,148,121,100,255,147,120, 99,255,145,119, 97,255,144,118, 97,255,144,117, 96,255,141,114, 94,255,138,111, 92,255, +134,106, 88,255,126, 98, 81,255,113, 84, 72,255, 94, 70, 61,255, 95, 71, 61,255, 86, 71, 65,255, 61, 61, 61,255, 60, 60, 60,255, +143,137,126,255,219,206,184,255,216,203,179,255,215,200,176,255,213,197,171,255,211,194,167,255,209,192,163,255,208,189,159,255, +206,187,156,255,205,186,154,255,204,185,153,255,203,184,152,255,204,184,152,255,204,184,152,255,203,184,152,255,204,185,153,255, +205,186,153,255,204,185,155,255,205,186,155,255,206,187,157,255,206,187,157,255,206,188,158,255,206,187,157,255,206,188,158,255, +207,189,159,255,207,189,159,255,207,189,159,255,207,188,160,255,206,188,159,255,207,189,160,255,208,190,161,255,208,190,161,255, +208,191,162,255,207,190,161,255,209,192,163,255,209,192,163,255,208,191,164,255,210,193,166,255,210,194,167,255,211,195,169,255, +213,198,173,255,215,200,177,255,217,204,182,255,220,209,189,255,224,214,196,255,227,219,204,255,231,224,211,255,232,226,214,255, +231,225,212,255,228,221,208,255,226,218,204,255,227,219,205,255,228,220,206,255,227,217,202,255,222,211,192,255,215,200,175,255, +207,188,159,255,199,179,147,255,194,171,140,255,189,167,135,255,185,162,132,255,182,159,129,255,177,155,125,255,170,147,120,255, +158,133,110,255,142,116, 95,255,131,104, 86,255,135,107, 89,255,150,124,101,255,163,139,114,255,169,145,118,255,169,145,118,255, +167,142,116,255,164,139,113,255,160,135,110,255,157,131,108,255,155,129,106,255,153,127,104,255,151,125,103,255,150,124,102,255, +148,122,100,255,148,121,100,255,147,120, 99,255,146,119, 98,255,145,118, 97,255,144,117, 96,255,141,114, 94,255,138,110, 91,255, +131,104, 86,255,122, 93, 78,255,105, 77, 66,255, 94, 70, 60,255,109, 80, 69,255, 91, 76, 69,255, 61, 61, 61,255, 60, 60, 60,255, +144,138,127,255,221,208,186,255,218,205,182,255,216,203,179,255,214,199,175,255,213,197,170,255,210,193,165,255,208,190,161,255, +206,188,157,255,205,185,154,255,203,185,153,255,204,184,152,255,203,183,151,255,204,183,151,255,204,184,152,255,203,184,152,255, +204,185,153,255,205,186,154,255,204,185,155,255,206,187,156,255,206,187,157,255,206,188,158,255,206,188,158,255,207,188,158,255, +206,189,159,255,207,189,159,255,207,189,160,255,207,189,159,255,207,189,160,255,207,189,160,255,208,190,161,255,208,190,161,255, +208,191,162,255,207,190,161,255,209,192,163,255,209,192,163,255,208,191,163,255,210,193,166,255,210,194,167,255,211,195,169,255, +213,197,172,255,214,199,175,255,216,202,179,255,219,206,185,255,222,210,191,255,224,215,198,255,228,220,206,255,231,225,212,255, +232,226,214,255,231,224,212,255,227,220,206,255,225,217,203,255,226,219,205,255,229,222,209,255,230,223,210,255,228,220,206,255, +223,213,194,255,217,202,179,255,209,192,164,255,201,181,150,255,193,172,139,255,184,162,131,255,172,150,121,255,157,133,108,255, +141,115, 95,255,134,107, 89,255,141,114, 94,255,154,130,106,255,164,140,114,255,168,143,117,255,167,143,116,255,165,140,114,255, +162,137,111,255,159,134,109,255,156,131,107,255,155,129,105,255,153,127,104,255,152,125,103,255,151,124,102,255,149,123,101,255, +148,123,100,255,147,121, 99,255,147,121, 99,255,147,119, 99,255,145,118, 97,255,144,117, 96,255,141,114, 94,255,136,109, 90,255, +128, 99, 83,255,114, 85, 73,255, 97, 71, 61,255,107, 78, 67,255,120, 92, 77,255, 94, 80, 72,255, 61, 61, 61,255, 60, 60, 60,255, +144,138,128,255,222,210,189,255,219,206,185,255,218,204,182,255,216,202,179,255,213,198,172,255,211,195,167,255,209,192,162,255, +207,188,158,255,205,185,154,255,204,184,152,255,203,183,151,255,203,183,151,255,203,183,151,255,203,183,151,255,203,183,151,255, +203,185,153,255,204,185,153,255,204,185,154,255,206,187,156,255,205,187,157,255,206,188,157,255,206,188,158,255,207,189,159,255, +207,188,158,255,207,189,159,255,207,189,160,255,207,189,160,255,207,189,160,255,208,190,160,255,207,189,161,255,208,190,161,255, +208,191,162,255,207,190,161,255,209,192,163,255,209,191,163,255,208,191,163,255,210,193,166,255,210,194,167,255,211,195,168,255, +212,197,171,255,213,199,174,255,215,201,177,255,217,203,182,255,220,208,187,255,222,212,193,255,226,216,200,255,228,221,207,255, +231,225,212,255,232,226,214,255,231,225,212,255,227,220,207,255,225,218,203,255,226,218,203,255,228,221,208,255,230,224,212,255, +231,224,212,255,227,218,203,255,219,207,188,255,208,193,166,255,195,175,143,255,178,156,127,255,159,135,111,255,142,116, 96,255, +139,112, 93,255,150,124,102,255,162,138,112,255,167,143,116,255,167,142,116,255,165,140,114,255,163,137,112,255,160,134,110,255, +158,132,108,255,156,130,106,255,155,129,105,255,153,127,104,255,152,125,103,255,151,125,103,255,150,124,102,255,149,123,101,255, +148,122,100,255,148,122, 99,255,147,121, 99,255,146,119, 98,255,145,119, 98,255,143,116, 96,255,139,112, 92,255,132,105, 87,255, +121, 92, 77,255,103, 75, 65,255,102, 75, 65,255,120, 91, 77,255,129,101, 83,255, 97, 83, 74,255, 61, 61, 61,255, 60, 60, 60,255, +145,138,128,255,222,210,190,255,220,208,187,255,218,206,183,255,217,203,180,255,214,199,175,255,211,195,169,255,209,192,162,255, +206,188,157,255,204,184,152,255,202,182,150,255,201,181,149,255,201,180,148,255,201,181,148,255,201,181,149,255,202,182,150,255, +203,183,151,255,204,184,153,255,205,185,154,255,204,185,155,255,206,187,156,255,205,187,157,255,206,188,158,255,207,189,158,255, +207,189,159,255,207,188,159,255,207,189,159,255,207,188,159,255,207,189,160,255,207,190,160,255,207,190,161,255,208,190,161,255, +207,190,161,255,208,191,162,255,209,191,162,255,209,192,163,255,208,192,164,255,210,193,166,255,210,194,167,255,211,195,168,255, +212,196,170,255,213,198,173,255,214,200,175,255,216,203,179,255,219,205,185,255,220,209,190,255,223,213,194,255,226,217,201,255, +229,221,207,255,231,225,212,255,232,227,215,255,231,225,212,255,228,221,208,255,226,218,204,255,225,217,202,255,225,218,204,255, +226,219,206,255,225,218,202,255,218,207,187,255,205,188,161,255,186,165,134,255,163,139,113,255,147,122,100,255,148,123,100,255, +161,136,111,255,171,147,120,255,172,148,120,255,168,144,117,255,164,139,113,255,161,136,111,255,159,133,109,255,156,131,107,255, +155,129,106,255,154,128,105,255,153,127,104,255,152,126,103,255,151,125,103,255,151,123,101,255,149,124,102,255,149,123,101,255, +148,123,100,255,149,122,100,255,148,121,100,255,147,121, 99,255,146,119, 98,255,142,115, 95,255,136,108, 91,255,126, 98, 82,255, +109, 80, 69,255,100, 73, 63,255,120, 92, 77,255,131,103, 86,255,135,107, 89,255, 99, 85, 76,255, 61, 61, 61,255, 60, 60, 60,255, +144,138,128,255,222,210,189,255,220,208,186,255,219,206,184,255,217,203,180,255,215,199,175,255,211,195,168,255,208,190,161,255, +205,186,155,255,202,182,150,255,200,180,147,255,199,178,145,255,199,178,145,255,200,179,145,255,200,179,146,255,201,181,148,255, +202,182,149,255,203,183,151,255,204,184,153,255,205,186,154,255,205,186,155,255,206,187,157,255,206,188,157,255,207,188,158,255, +206,188,158,255,207,189,158,255,207,189,159,255,207,188,159,255,206,190,160,255,206,189,161,255,206,190,160,255,208,189,162,255, +207,190,161,255,208,191,162,255,208,191,163,255,208,191,163,255,209,192,164,255,210,193,166,255,210,194,167,255,210,194,168,255, +212,196,170,255,213,198,173,255,214,199,175,255,216,202,178,255,217,204,182,255,219,207,186,255,222,210,192,255,224,214,196,255, +226,218,202,255,229,222,208,255,231,225,212,255,232,227,215,255,231,225,213,255,229,223,210,255,226,220,205,255,224,216,201,255, +221,212,195,255,216,205,185,255,207,191,164,255,191,170,138,255,172,150,122,255,162,139,113,255,164,141,114,255,173,150,122,255, +177,155,126,255,176,153,124,255,171,148,119,255,167,142,115,255,162,137,111,255,158,133,109,255,156,131,107,255,155,129,106,255, +154,128,105,255,153,127,104,255,152,126,103,255,151,125,102,255,151,124,103,255,150,124,102,255,150,123,101,255,149,123,101,255, +149,123,101,255,149,123,101,255,149,122,100,255,147,121,100,255,145,118, 97,255,141,113, 93,255,130,103, 85,255,114, 86, 73,255, +102, 74, 64,255,120, 92, 77,255,135,107, 89,255,139,112, 92,255,139,111, 92,255,100, 86, 77,255, 61, 61, 61,255, 60, 60, 60,255, +144,137,126,255,220,208,186,255,219,205,184,255,217,203,180,255,216,201,176,255,212,197,171,255,209,192,164,255,206,186,156,255, +202,182,149,255,199,178,145,255,196,175,142,255,195,173,140,255,194,173,141,255,196,174,141,255,197,176,143,255,198,178,145,255, +201,180,147,255,202,181,149,255,203,183,152,255,204,185,154,255,205,186,155,255,205,187,156,255,205,188,157,255,206,188,158,255, +207,187,157,255,206,189,159,255,207,189,159,255,207,188,160,255,207,190,159,255,207,190,160,255,206,190,160,255,208,189,162,255, +207,190,161,255,208,191,162,255,208,191,163,255,208,191,163,255,209,192,164,255,209,193,166,255,210,194,167,255,211,195,168,255, +212,196,170,255,213,197,172,255,213,199,174,255,215,201,177,255,217,203,181,255,219,206,184,255,220,209,189,255,222,212,193,255, +225,215,198,255,227,218,203,255,229,222,208,255,231,225,212,255,232,226,214,255,231,227,215,255,230,224,212,255,227,221,207,255, +223,215,200,255,217,207,187,255,208,192,166,255,198,178,147,255,190,170,138,255,186,165,134,255,186,164,133,255,184,162,131,255, +180,156,127,255,174,149,122,255,169,144,117,255,164,139,113,255,160,134,110,255,157,132,108,255,156,130,106,255,155,129,106,255, +154,128,104,255,153,127,104,255,152,127,103,255,152,125,103,255,151,125,102,255,151,124,102,255,150,124,102,255,150,124,102,255, +150,124,101,255,150,124,101,255,150,123,101,255,147,121, 99,255,143,117, 96,255,135,108, 89,255,120, 91, 77,255,104, 76, 66,255, +121, 93, 78,255,138,111, 92,255,144,117, 96,255,144,117, 95,255,142,114, 94,255,101, 87, 77,255, 61, 61, 61,255, 60, 60, 60,255, +142,135,123,255,217,203,178,255,214,200,175,255,213,197,171,255,212,194,167,255,209,190,161,255,205,186,154,255,201,181,147,255, +197,175,142,255,192,170,138,255,189,167,135,255,188,166,134,255,189,166,135,255,190,168,137,255,193,171,139,255,195,174,141,255, +198,177,144,255,200,180,147,255,202,182,149,255,203,183,152,255,204,185,154,255,204,186,155,255,205,186,156,255,205,187,157,255, +205,187,157,255,206,188,158,255,207,189,158,255,206,188,159,255,207,189,160,255,207,190,160,255,207,189,160,255,207,189,161,255, +208,190,162,255,207,190,162,255,209,191,163,255,208,191,163,255,209,192,164,255,209,193,166,255,210,194,167,255,210,194,168,255, +212,196,170,255,212,197,172,255,213,198,174,255,215,201,177,255,216,203,180,255,217,204,182,255,219,207,186,255,221,209,191,255, +223,213,195,255,225,216,199,255,227,219,204,255,229,222,208,255,231,225,212,255,232,226,214,255,232,226,214,255,230,225,213,255, +229,222,209,255,225,217,203,255,220,210,191,255,213,201,177,255,207,190,162,255,199,179,147,255,191,170,136,255,183,161,130,255, +176,153,124,255,170,147,119,255,166,141,115,255,162,136,111,255,159,134,109,255,157,131,107,255,156,130,106,255,155,129,105,255, +154,128,105,255,154,128,105,255,153,127,104,255,153,127,104,255,153,126,104,255,152,126,104,255,153,126,104,255,152,126,103,255, +152,126,103,255,151,125,102,255,150,124,102,255,146,120, 99,255,139,113, 93,255,125, 97, 81,255,107, 80, 68,255,120, 92, 78,255, +142,115, 95,255,148,123,101,255,148,121,100,255,145,118, 98,255,143,115, 95,255,102, 87, 78,255, 61, 61, 61,255, 60, 60, 60,255, +140,131,116,255,211,193,165,255,209,190,160,255,207,187,156,255,204,184,152,255,202,181,148,255,197,176,143,255,193,172,139,255, +189,166,134,255,184,162,131,255,181,158,128,255,180,156,127,255,180,157,128,255,183,161,130,255,187,164,134,255,191,169,137,255, +195,173,141,255,198,177,144,255,201,180,147,255,202,183,151,255,203,184,153,255,204,186,155,255,204,187,156,255,205,186,156,255, +206,187,157,255,205,188,158,255,206,188,158,255,207,188,159,255,206,188,159,255,207,189,159,255,207,190,160,255,207,190,161,255, +208,189,162,255,207,190,161,255,209,191,163,255,208,191,163,255,209,192,164,255,210,194,166,255,210,194,167,255,210,194,168,255, +212,196,170,255,212,197,172,255,213,198,174,255,215,201,177,255,216,202,179,255,218,204,182,255,219,206,185,255,220,209,189,255, +222,211,192,255,224,214,196,255,226,217,200,255,227,219,204,255,229,222,208,255,231,224,211,255,231,225,213,255,231,225,213,255, +230,225,212,255,229,222,208,255,225,216,201,255,219,207,187,255,210,195,168,255,200,180,149,255,190,168,136,255,181,158,128,255, +174,150,122,255,168,144,117,255,164,139,113,255,161,135,111,255,158,133,109,255,156,130,107,255,155,129,106,255,154,128,105,255, +154,128,105,255,154,128,105,255,154,128,105,255,154,128,105,255,154,128,105,255,155,129,105,255,155,129,105,255,154,129,105,255, +154,128,105,255,153,126,104,255,150,124,102,255,144,118, 97,255,130,102, 85,255,108, 82, 71,255,120, 92, 78,255,146,120, 98,255, +153,128,105,255,153,127,104,255,150,123,101,255,146,120, 99,255,143,116, 95,255,102, 88, 78,255, 61, 61, 61,255, 60, 60, 60,255, +136,125,108,255,204,182,149,255,200,179,146,255,198,176,143,255,195,173,140,255,192,170,138,255,188,166,134,255,184,161,131,255, +180,157,127,255,175,151,123,255,172,148,120,255,170,146,119,255,171,146,119,255,174,150,122,255,179,155,126,255,185,162,132,255, +190,168,136,255,195,174,141,255,198,178,145,255,201,181,148,255,202,182,150,255,203,184,153,255,205,186,155,255,204,187,156,255, +205,187,156,255,205,187,157,255,206,188,158,255,205,187,157,255,207,189,159,255,206,189,159,255,207,190,159,255,207,190,161,255, +208,189,161,255,207,190,162,255,209,191,163,255,208,191,163,255,209,192,164,255,210,194,167,255,211,194,167,255,210,194,168,255, +212,196,170,255,212,197,172,255,213,198,174,255,215,200,177,255,215,202,179,255,217,203,181,255,218,206,184,255,220,208,188,255, +222,211,191,255,223,212,194,255,224,215,198,255,227,218,202,255,228,220,205,255,229,222,209,255,231,224,211,255,230,225,212,255, +231,224,211,255,229,222,208,255,226,216,201,255,220,207,187,255,211,195,168,255,200,180,147,255,190,168,135,255,180,157,127,255, +173,150,121,255,168,144,117,255,164,139,113,255,160,135,110,255,158,133,109,255,157,131,107,255,156,130,106,255,155,129,106,255, +155,129,105,255,155,129,105,255,155,129,106,255,156,130,106,255,156,130,106,255,156,130,107,255,157,131,107,255,157,131,107,255, +155,129,106,255,154,128,105,255,149,123,100,255,137,109, 91,255,115, 87, 74,255,123, 96, 81,255,149,123,101,255,157,132,108,255, +157,131,107,255,154,128,105,255,150,124,102,255,147,120, 99,255,144,116, 96,255,102, 88, 78,255, 61, 61, 61,255, 60, 60, 61,255, +131,119,102,255,194,172,139,255,190,168,136,255,188,165,134,255,186,163,132,255,183,160,130,255,180,157,127,255,177,153,125,255, +172,148,121,255,168,144,116,255,164,139,113,255,161,136,110,255,160,135,110,255,163,138,113,255,169,145,118,255,176,152,124,255, +184,161,130,255,190,168,137,255,195,174,141,255,198,178,145,255,201,181,148,255,202,182,151,255,203,184,152,255,204,185,154,255, +204,186,155,255,205,187,156,255,205,187,157,255,206,187,157,255,206,188,158,255,206,188,158,255,207,189,159,255,206,190,160,255, +207,189,161,255,207,190,162,255,208,191,163,255,208,192,164,255,209,192,164,255,210,194,166,255,210,194,168,255,210,194,168,255, +212,196,170,255,212,197,172,255,213,198,173,255,214,200,176,255,215,202,179,255,217,203,181,255,218,205,184,255,219,207,187,255, +220,209,189,255,222,212,193,255,223,214,196,255,225,216,199,255,227,218,203,255,229,221,207,255,230,223,210,255,230,225,212,255, +231,224,211,255,230,223,209,255,228,219,204,255,222,211,193,255,215,200,176,255,205,187,155,255,194,173,140,255,185,162,131,255, +177,153,124,255,171,146,119,255,165,141,114,255,162,137,112,255,159,134,110,255,157,132,108,255,157,131,107,255,157,131,107,255, +157,131,107,255,157,131,107,255,157,131,108,255,158,132,108,255,159,133,109,255,159,133,109,255,159,134,110,255,158,133,109,255, +157,132,108,255,152,127,104,255,140,114, 94,255,120, 93, 79,255,125,100, 85,255,152,127,104,255,160,135,110,255,160,134,109,255, +157,131,108,255,153,127,104,255,151,124,102,255,147,120, 99,255,144,116, 96,255,102, 88, 78,255, 61, 61, 61,255, 60, 60, 61,255, +126,114, 98,255,186,162,132,255,182,159,129,255,180,157,127,255,178,154,126,255,176,153,125,255,174,151,122,255,171,147,120,255, +167,142,116,255,161,136,111,255,157,131,106,255,152,126,103,255,150,123,102,255,151,126,103,255,158,132,108,255,165,141,115,255, +175,151,123,255,184,162,131,255,191,169,137,255,195,174,141,255,198,178,145,255,201,180,148,255,202,182,149,255,203,183,152,255, +204,185,154,255,205,186,155,255,205,186,155,255,205,187,156,255,206,187,157,255,206,188,158,255,206,188,158,255,206,189,159,255, +207,190,160,255,208,189,161,255,208,191,163,255,209,192,164,255,209,192,164,255,210,194,166,255,210,194,167,255,210,195,168,255, +212,196,170,255,212,197,172,255,214,198,173,255,214,200,175,255,215,201,178,255,216,202,180,255,217,205,183,255,219,206,186,255, +220,209,189,255,221,210,192,255,223,212,195,255,225,215,198,255,226,218,201,255,228,220,205,255,230,223,209,255,231,225,212,255, +232,225,213,255,231,225,212,255,230,223,209,255,228,219,203,255,222,210,191,255,214,199,173,255,204,184,152,255,193,171,138,255, +183,160,130,255,175,151,123,255,169,145,118,255,165,140,114,255,162,136,112,255,159,134,110,255,159,133,109,255,159,133,109,255, +158,133,109,255,159,133,109,255,160,134,110,255,160,135,110,255,161,136,111,255,162,137,112,255,162,136,111,255,160,135,110,255, +156,131,107,255,143,118, 96,255,124, 98, 84,255,133,107, 90,255,156,130,107,255,162,138,112,255,162,137,112,255,159,133,109,255, +155,131,106,255,153,127,104,255,150,123,102,255,146,120, 99,255,144,116, 96,255,102, 88, 78,255, 61, 61, 61,255, 60, 60, 61,255, +123,111, 95,255,179,156,126,255,176,153,124,255,175,151,123,255,174,150,122,255,173,148,121,255,170,147,119,255,168,143,117,255, +163,138,113,255,157,131,107,255,150,124,102,255,145,118, 98,255,142,115, 94,255,142,115, 95,255,147,121, 99,255,155,129,106,255, +165,141,115,255,176,152,124,255,185,163,132,255,192,170,138,255,195,174,141,255,198,177,145,255,200,180,147,255,202,182,149,255, +202,183,151,255,204,185,153,255,204,185,154,255,205,186,155,255,205,186,156,255,206,187,157,255,205,187,157,255,207,189,159,255, +206,189,160,255,207,189,160,255,207,191,162,255,208,191,163,255,208,192,164,255,210,193,166,255,210,194,167,255,211,194,168,255, +211,196,170,255,212,197,172,255,213,198,173,255,214,200,175,255,214,201,177,255,215,203,180,255,217,204,182,255,218,206,185,255, +220,208,188,255,221,209,190,255,222,211,193,255,224,214,197,255,225,216,200,255,227,219,204,255,229,222,208,255,230,224,211,255, +231,225,213,255,232,226,214,255,231,225,213,255,230,223,210,255,228,219,204,255,222,212,192,255,214,200,173,255,205,185,153,255, +193,171,139,255,183,160,130,255,176,152,123,255,170,146,119,255,166,141,116,255,163,139,112,255,162,137,112,255,160,135,110,255, +160,135,110,255,161,136,111,255,162,136,111,255,163,138,112,255,164,138,113,255,164,139,113,255,163,138,112,255,158,134,109,255, +147,122,100,255,128,102, 86,255,139,115, 95,255,160,136,111,255,165,140,114,255,163,138,113,255,160,135,110,255,158,132,108,255, +155,128,105,255,152,126,103,255,149,123,101,255,146,120, 99,255,143,115, 95,255,102, 88, 77,255, 61, 61, 61,255, 60, 60, 61,255, +121,108, 94,255,175,152,124,255,173,150,122,255,173,148,121,255,171,147,120,255,171,147,119,255,169,144,118,255,165,140,114,255, +161,135,110,255,153,127,104,255,146,119, 98,255,139,112, 92,255,135,107, 89,255,134,106, 87,255,138,110, 91,255,145,119, 98,255, +156,130,107,255,167,143,116,255,178,155,126,255,187,164,134,255,192,170,138,255,195,174,141,255,198,177,145,255,200,180,147,255, +201,181,149,255,202,182,150,255,203,184,152,255,204,185,153,255,204,185,154,255,205,186,156,255,206,187,157,255,206,188,158,255, +206,188,159,255,207,189,160,255,208,190,161,255,208,191,162,255,208,191,164,255,209,192,165,255,209,193,166,255,210,194,167,255, +211,195,169,255,212,197,171,255,212,197,173,255,214,199,175,255,214,200,177,255,216,201,178,255,216,203,181,255,217,205,183,255, +218,206,185,255,220,209,188,255,221,210,192,255,222,212,194,255,224,215,198,255,226,217,201,255,227,220,205,255,230,223,209,255, +231,225,213,255,232,227,215,255,232,226,214,255,231,225,212,255,229,223,210,255,228,220,204,255,224,213,194,255,217,202,177,255, +207,188,157,255,196,174,142,255,186,163,132,255,178,155,126,255,173,149,121,255,168,144,117,255,166,141,115,255,164,140,113,255, +164,139,113,255,164,139,114,255,165,140,114,255,166,141,115,255,166,141,115,255,165,140,114,255,160,136,111,255,148,122,100,255, +131,105, 89,255,144,120,100,255,165,141,115,255,168,144,117,255,165,140,115,255,162,136,112,255,159,133,109,255,156,130,106,255, +154,128,105,255,151,124,102,255,149,122,101,255,146,119, 98,255,142,115, 95,255,101, 87, 77,255, 61, 61, 61,255, 60, 60, 61,255, +120,107, 93,255,174,150,121,255,172,149,121,255,172,147,119,255,171,146,119,255,170,146,118,255,168,143,117,255,165,140,114,255, +159,134,109,255,151,125,103,255,142,115, 95,255,135,108, 89,255,129,101, 84,255,127, 98, 83,255,130,102, 85,255,137,110, 91,255, +147,120, 99,255,159,134,109,255,171,147,119,255,181,158,129,255,188,166,134,255,193,171,138,255,195,174,141,255,198,177,144,255, +200,179,146,255,201,181,148,255,202,182,150,255,203,184,152,255,204,184,153,255,204,185,154,255,205,186,156,255,206,187,157,255, +206,188,158,255,206,188,159,255,207,190,161,255,207,190,161,255,208,192,163,255,209,192,164,255,210,193,165,255,210,194,167,255, +211,195,169,255,211,196,170,255,213,198,172,255,213,198,174,255,214,200,175,255,215,201,178,255,216,202,180,255,217,204,182,255, +217,206,185,255,219,207,187,255,220,209,189,255,222,211,192,255,223,213,195,255,225,215,199,255,227,218,203,255,228,221,207,255, +230,223,211,255,232,226,214,255,232,227,215,255,231,225,213,255,230,224,211,255,229,222,208,255,228,220,205,255,225,215,197,255, +219,206,184,255,211,193,164,255,200,179,146,255,190,168,136,255,183,159,129,255,177,152,124,255,172,148,120,255,170,146,118,255, +169,144,117,255,168,144,117,255,168,143,117,255,169,144,117,255,167,143,117,255,162,138,112,255,147,122,100,255,135,110, 92,255, +154,130,107,255,170,147,119,255,171,147,119,255,168,143,117,255,164,139,113,255,161,135,110,255,158,132,108,255,155,129,106,255, +153,127,104,255,151,124,102,255,149,122,100,255,146,118, 97,255,142,114, 94,255,101, 86, 77,255, 61, 61, 61,255, 60, 60, 61,255, +120,107, 93,255,174,149,121,255,173,149,120,255,172,148,121,255,171,147,120,255,170,146,119,255,168,145,117,255,165,140,114,255, +159,134,109,255,151,124,103,255,141,114, 95,255,133,105, 87,255,126, 97, 81,255,122, 93, 79,255,124, 96, 79,255,130,102, 85,255, +140,113, 93,255,150,124,102,255,163,138,113,255,175,152,124,255,184,161,131,255,189,167,136,255,193,171,139,255,195,174,141,255, +197,177,144,255,200,179,146,255,201,181,148,255,201,181,149,255,203,183,151,255,204,184,153,255,204,185,154,255,205,187,156,255, +206,188,157,255,205,187,158,255,207,189,160,255,208,190,161,255,207,190,162,255,209,192,163,255,208,192,164,255,209,193,165,255, +210,194,168,255,211,195,170,255,211,196,171,255,213,198,173,255,213,199,174,255,214,200,176,255,215,202,178,255,216,203,181,255, +218,205,183,255,219,206,185,255,219,208,188,255,221,210,191,255,222,212,193,255,223,214,197,255,225,217,201,255,227,219,205,255, +229,222,209,255,231,225,212,255,232,226,214,255,232,227,215,255,230,224,212,255,229,221,208,255,228,220,207,255,228,220,206,255, +227,218,202,255,222,211,192,255,215,200,175,255,205,187,156,255,196,175,142,255,188,166,134,255,182,159,129,255,178,155,125,255, +175,152,123,255,174,150,122,255,173,149,121,255,170,146,118,255,163,139,113,255,147,121,100,255,137,113, 95,255,163,139,114,255, +173,150,122,255,174,150,122,255,170,145,118,255,166,141,115,255,163,137,113,255,160,134,110,255,157,131,107,255,155,129,106,255, +153,127,104,255,151,124,102,255,148,122,100,255,144,118, 97,255,140,113, 93,255, 99, 85, 75,255, 61, 61, 61,255, 60, 60, 61,255, +120,107, 93,255,175,151,123,255,174,150,122,255,173,150,122,255,173,149,121,255,172,148,120,255,170,146,119,255,166,141,115,255, +160,135,111,255,152,125,103,255,141,114, 94,255,131,103, 86,255,124, 95, 79,255,119, 90, 76,255,120, 91, 77,255,126, 97, 81,255, +133,105, 87,255,144,118, 97,255,157,131,108,255,169,145,118,255,180,156,127,255,186,163,132,255,190,168,136,255,193,172,139,255, +196,174,141,255,197,176,143,255,199,178,145,255,200,180,148,255,201,181,149,255,203,183,151,255,203,184,153,255,204,185,154,255, +205,187,156,255,205,187,157,255,206,188,158,255,206,189,160,255,207,190,161,255,208,191,163,255,208,192,164,255,209,192,165,255, +210,194,167,255,210,195,168,255,211,195,170,255,212,198,172,255,213,198,174,255,213,199,175,255,215,200,177,255,216,202,180,255, +216,203,181,255,218,205,184,255,218,207,186,255,219,208,189,255,221,210,191,255,222,212,194,255,224,215,198,255,226,217,201,255, +227,220,205,255,229,222,209,255,231,225,212,255,231,225,214,255,230,225,213,255,229,222,209,255,227,219,205,255,227,219,205,255, +228,220,206,255,228,221,207,255,227,217,201,255,221,209,188,255,213,197,170,255,204,186,155,255,196,176,143,255,190,167,136,255, +184,162,131,255,180,158,128,255,175,152,123,255,164,139,114,255,146,121,100,255,146,122,102,255,170,147,120,255,177,154,125,255, +175,151,123,255,171,147,119,255,168,143,117,255,165,139,114,255,162,137,111,255,159,134,109,255,157,131,107,255,155,129,106,255, +153,127,104,255,151,125,102,255,148,121,100,255,144,117, 96,255,137,110, 91,255, 96, 81, 73,255, 61, 61, 61,255, 60, 60, 61,255, +121,108, 93,255,177,154,125,255,176,153,124,255,176,152,124,255,175,151,124,255,175,150,123,255,173,149,121,255,169,145,118,255, +163,138,113,255,154,128,105,255,142,115, 95,255,132,104, 86,255,123, 94, 79,255,118, 89, 75,255,118, 88, 75,255,122, 93, 78,255, +129,101, 84,255,140,113, 93,255,151,126,103,255,163,139,114,255,175,151,123,255,182,159,129,255,186,164,133,255,190,168,136,255, +193,171,139,255,195,173,141,255,197,176,143,255,199,178,145,255,200,179,147,255,201,181,149,255,203,183,151,255,203,184,152,255, +204,185,154,255,205,187,156,255,206,188,158,255,206,189,159,255,207,189,160,255,208,190,162,255,208,191,163,255,209,193,165,255, +210,193,166,255,210,194,168,255,211,196,169,255,212,197,171,255,212,197,172,255,214,199,174,255,214,200,176,255,214,201,178,255, +216,203,180,255,217,204,182,255,218,206,184,255,219,207,186,255,220,209,189,255,221,211,192,255,222,212,195,255,224,215,198,255, +226,218,202,255,227,220,206,255,229,222,209,255,231,225,212,255,231,226,213,255,230,223,211,255,227,220,206,255,225,217,202,255, +225,217,202,255,227,219,206,255,230,222,210,255,230,222,210,255,227,218,202,255,221,209,189,255,213,199,175,255,206,187,158,255, +196,176,143,255,185,164,132,255,167,144,117,255,147,122,102,255,162,139,114,255,178,155,126,255,179,156,127,255,175,152,123,255, +172,147,120,255,168,144,117,255,166,141,115,255,164,139,113,255,161,136,111,255,159,134,109,255,157,131,107,255,156,130,106,255, +154,128,105,255,151,125,103,255,148,122,100,255,143,116, 95,255,131,103, 85,255, 90, 76, 69,255, 61, 61, 61,255, 60, 60, 61,255, +122,110, 95,255,180,156,127,255,179,156,127,255,180,156,127,255,180,156,127,255,178,155,126,255,177,154,125,255,174,149,121,255, +167,143,116,255,157,131,107,255,145,118, 97,255,133,106, 88,255,124, 96, 80,255,119, 90, 76,255,117, 88, 75,255,120, 92, 77,255, +128,100, 84,255,137,110, 91,255,148,122,100,255,160,134,110,255,170,146,119,255,178,154,126,255,184,161,130,255,187,165,133,255, +190,168,136,255,193,171,139,255,195,173,141,255,196,175,142,255,199,178,145,255,200,179,146,255,201,181,148,255,203,183,151,255, +203,184,153,255,204,185,154,255,205,187,157,255,205,188,158,255,206,188,159,255,207,190,161,255,207,190,162,255,208,191,163,255, +209,193,165,255,209,193,167,255,210,194,168,255,211,196,170,255,212,197,171,255,212,197,173,255,214,199,175,255,213,200,176,255, +215,201,179,255,216,203,181,255,216,204,182,255,218,206,185,255,218,207,186,255,220,209,189,255,221,211,192,255,222,212,195,255, +224,215,199,255,226,218,202,255,227,220,206,255,228,222,209,255,230,224,211,255,230,224,212,255,229,222,209,255,226,219,204,255, +223,215,199,255,223,214,198,255,225,217,202,255,228,221,208,255,230,224,212,255,230,223,210,255,225,216,199,255,215,203,181,255, +200,182,151,255,173,150,123,255,155,132,110,255,176,153,124,255,183,160,130,255,181,158,128,255,176,152,123,255,172,148,120,255, +169,144,117,255,167,142,116,255,164,139,114,255,162,137,112,255,161,136,111,255,160,134,110,255,158,132,108,255,157,131,107,255, +155,129,106,255,152,126,103,255,148,121, 99,255,138,111, 91,255,123, 95, 80,255,105, 92, 82,255, 61, 61, 61,255, 60, 60, 61,255, +125,113, 97,255,185,162,131,255,184,162,131,255,185,162,131,255,185,162,131,255,184,161,131,255,183,159,130,255,179,156,126,255, +173,148,120,255,162,137,111,255,149,123,100,255,137,109, 90,255,127, 99, 83,255,120, 92, 77,255,118, 89, 75,255,122, 93, 78,255, +128,100, 84,255,138,111, 91,255,147,121,100,255,157,132,108,255,166,143,116,255,174,150,122,255,180,156,127,255,183,161,131,255, +187,165,133,255,190,168,136,255,192,170,138,255,194,173,140,255,196,175,142,255,198,177,144,255,200,180,147,255,201,181,148,255, +202,183,150,255,203,184,153,255,204,185,154,255,205,187,157,255,205,188,158,255,206,189,159,255,207,190,161,255,207,190,162,255, +208,192,164,255,209,193,166,255,210,194,167,255,211,195,169,255,211,196,170,255,212,197,172,255,213,198,173,255,213,199,175,255, +214,200,177,255,215,202,179,255,216,203,181,255,216,204,182,255,218,206,184,255,218,207,186,255,219,208,189,255,221,210,192,255, +222,212,195,255,224,215,198,255,225,217,202,255,227,219,205,255,228,221,208,255,229,223,209,255,228,223,209,255,227,220,206,255, +224,215,200,255,220,211,193,255,219,208,189,255,218,207,188,255,218,208,190,255,218,209,190,255,212,200,180,255,195,178,153,255, +177,156,128,255,172,149,122,255,184,162,131,255,184,162,131,255,180,157,127,255,176,152,123,255,172,148,121,255,169,144,118,255, +167,142,116,255,165,140,115,255,164,139,113,255,162,137,112,255,161,136,111,255,161,135,110,255,160,134,110,255,158,132,109,255, +156,130,106,255,152,126,103,255,144,118, 97,255,127, 99, 83,255,146,120,100,255,110, 96, 84,255, 60, 61, 61,255, 60, 60, 61,255, +128,116,100,255,191,169,136,255,191,169,137,255,192,170,138,255,193,170,138,255,192,170,137,255,190,168,136,255,187,164,133,255, +180,156,127,255,169,145,118,255,155,130,106,255,141,115, 94,255,131,103, 86,255,125, 96, 81,255,122, 93, 79,255,125, 97, 81,255, +131,104, 86,255,141,114, 94,255,149,123,101,255,157,132,108,255,164,139,113,255,170,146,119,255,175,152,123,255,180,156,127,255, +183,161,130,255,187,164,133,255,189,167,135,255,192,170,138,255,194,172,140,255,196,175,142,255,198,177,144,255,199,179,146,255, +200,181,148,255,202,183,151,255,203,184,152,255,204,185,155,255,205,187,156,255,206,188,158,255,206,188,159,255,207,190,161,255, +208,191,162,255,208,192,164,255,210,194,166,255,210,194,168,255,211,195,169,255,212,196,171,255,212,197,172,255,213,198,173,255, +213,199,175,255,214,200,177,255,215,202,179,255,216,203,180,255,217,204,182,255,218,205,184,255,218,207,186,255,219,208,188,255, +221,211,192,255,222,212,194,255,223,214,198,255,225,216,201,255,226,218,203,255,227,220,205,255,227,220,206,255,226,219,205,255, +224,216,201,255,220,210,192,255,214,203,181,255,207,191,165,255,198,180,149,255,191,172,143,255,187,167,137,255,187,167,135,255, +189,169,137,255,190,169,136,255,186,163,133,255,181,157,128,255,176,152,124,255,172,148,121,255,169,145,118,255,167,143,116,255, +166,142,115,255,165,140,114,255,164,139,113,255,163,138,112,255,163,137,112,255,162,136,111,255,161,135,111,255,160,134,110,255, +156,130,107,255,151,125,102,255,134,107, 89,255,145,118, 98,255,157,131,106,255,109, 95, 83,255, 60, 61, 61,255, 60, 60, 61,255, +132,121,104,255,200,178,144,255,200,178,145,255,201,181,147,255,202,181,148,255,202,182,149,255,200,180,147,255,196,175,142,255, +190,167,135,255,179,156,126,255,164,140,113,255,150,124,101,255,138,111, 91,255,131,104, 86,255,130,101, 85,255,132,105, 87,255, +140,113, 93,255,148,122,100,255,154,128,105,255,158,133,109,255,163,138,113,255,167,142,116,255,171,147,120,255,175,151,123,255, +179,155,126,255,182,160,130,255,185,163,132,255,188,167,135,255,191,170,138,255,193,172,139,255,195,175,142,255,198,177,144,255, +199,179,146,255,200,181,148,255,202,183,150,255,203,184,152,255,203,185,154,255,205,186,156,255,205,188,158,255,206,189,159,255, +207,190,161,255,207,191,163,255,208,192,164,255,209,193,166,255,210,194,168,255,210,195,169,255,212,196,171,255,211,197,172,255, +212,198,173,255,214,200,175,255,213,200,176,255,214,201,178,255,216,202,180,255,215,203,181,255,217,205,183,255,218,206,185,255, +218,207,188,255,220,210,191,255,221,211,193,255,222,213,196,255,224,215,199,255,224,216,200,255,225,217,202,255,225,217,202,255, +225,217,202,255,223,214,198,255,220,211,193,255,218,206,187,255,215,203,181,255,213,200,177,255,211,197,172,255,207,189,162,255, +200,180,147,255,192,169,138,255,184,162,131,255,178,155,125,255,175,150,122,255,171,147,120,255,169,144,117,255,167,143,116,255, +165,140,115,255,164,140,115,255,165,140,114,255,165,140,114,255,164,139,114,255,164,139,113,255,162,137,112,255,160,135,110,255, +156,130,106,255,142,115, 95,255,139,112, 93,255,156,131,108,255,155,129,105,255,108, 95, 83,255, 60, 61, 61,255, 60, 60, 60,255, +137,127,111,255,210,190,160,255,210,192,163,255,211,195,166,255,212,196,169,255,213,196,170,255,211,195,169,255,208,191,163,255, +201,182,151,255,191,169,138,255,177,154,124,255,160,137,112,255,147,122,100,255,141,114, 94,255,142,115, 95,255,147,121, 99,255, +153,127,104,255,157,132,107,255,159,135,110,255,160,135,110,255,161,136,111,255,163,137,112,255,165,141,115,255,168,144,118,255, +172,149,121,255,176,153,124,255,180,158,128,255,184,162,131,255,188,166,134,255,191,169,137,255,194,172,139,255,195,175,142,255, +198,176,143,255,199,179,146,255,200,181,148,255,202,182,150,255,203,184,152,255,203,185,154,255,205,186,156,255,205,188,158,255, +206,188,159,255,207,190,161,255,207,191,163,255,208,193,164,255,209,193,166,255,210,194,168,255,210,195,169,255,211,196,170,255, +211,197,172,255,212,198,173,255,213,199,175,255,213,200,176,255,214,201,177,255,215,202,179,255,215,203,180,255,216,204,182,255, +217,206,184,255,218,207,187,255,219,208,189,255,221,210,192,255,221,212,194,255,223,213,196,255,224,215,198,255,224,216,200,255, +226,218,203,255,227,219,205,255,227,220,206,255,227,221,206,255,227,220,205,255,225,216,200,255,220,208,188,255,211,196,170,255, +203,182,151,255,193,171,138,255,185,163,132,255,179,156,126,255,175,150,123,255,172,147,120,255,169,144,117,255,167,143,116,255, +166,142,116,255,166,141,115,255,166,141,115,255,166,141,115,255,166,141,115,255,165,140,114,255,164,139,113,255,160,135,111,255, +145,120, 98,255,138,113, 93,255,159,134,110,255,156,130,107,255,153,127,104,255,107, 94, 82,255, 60, 61, 61,255, 60, 60, 60,255, +142,135,122,255,219,206,183,255,220,207,186,255,222,210,190,255,222,211,192,255,222,211,193,255,221,210,191,255,218,206,185,255, +211,196,170,255,201,182,150,255,186,165,134,255,172,149,121,255,160,136,110,255,157,133,108,255,161,138,112,255,167,144,117,255, +169,146,119,255,168,144,117,255,165,141,115,255,161,136,111,255,158,133,109,255,157,132,108,255,159,133,109,255,162,136,112,255, +166,141,115,255,170,146,119,255,175,152,123,255,179,156,127,255,184,161,131,255,187,165,134,255,190,169,137,255,193,171,139,255, +195,174,142,255,198,177,144,255,199,179,146,255,200,180,148,255,202,182,150,255,203,183,152,255,203,185,154,255,205,187,156,255, +205,187,157,255,206,188,159,255,207,190,161,255,208,191,163,255,208,193,164,255,209,193,166,255,210,194,167,255,210,195,168,255, +211,196,170,255,211,196,171,255,212,198,173,255,213,198,174,255,213,199,175,255,214,200,177,255,214,201,177,255,215,202,179,255, +216,203,181,255,216,204,182,255,217,205,185,255,219,208,187,255,219,208,190,255,220,211,192,255,222,213,195,255,224,215,199,255, +225,217,202,255,226,219,205,255,228,222,208,255,230,224,211,255,230,225,213,255,229,223,209,255,226,216,200,255,219,206,184,255, +210,193,165,255,200,180,148,255,191,169,137,255,184,161,130,255,179,154,126,255,175,151,122,255,171,147,119,255,169,145,117,255, +168,143,117,255,167,143,116,255,167,142,116,255,167,142,116,255,167,143,116,255,167,142,116,255,163,139,113,255,151,125,103,255, +141,116, 96,255,158,132,108,255,157,131,108,255,154,128,105,255,151,125,103,255,106, 92, 81,255, 60, 61, 61,255, 60, 60, 60,255, +146,141,132,255,227,218,201,255,227,218,202,255,227,219,204,255,226,218,203,255,224,216,199,255,220,211,192,255,215,203,181,255, +207,192,165,255,197,178,147,255,185,164,133,255,177,155,126,255,176,154,125,255,181,159,130,255,187,165,134,255,188,166,135,255, +183,161,131,255,176,152,124,255,168,143,117,255,161,136,111,255,156,130,106,255,152,125,103,255,151,126,103,255,154,128,105,255, +157,132,108,255,162,138,112,255,168,144,117,255,173,150,122,255,179,156,127,255,183,161,130,255,187,165,134,255,190,169,137,255, +192,171,139,255,195,174,141,255,197,177,144,255,199,179,146,255,200,180,148,255,202,182,150,255,202,184,152,255,203,184,153,255, +204,186,155,255,205,187,158,255,205,188,159,255,207,190,161,255,207,190,162,255,208,191,163,255,208,193,165,255,209,193,166,255, +209,194,167,255,210,195,169,255,211,196,170,255,211,196,171,255,212,197,173,255,212,198,174,255,212,199,174,255,213,200,176,255, +213,200,177,255,215,201,178,255,215,203,181,255,216,204,183,255,218,207,186,255,219,208,188,255,220,210,192,255,222,213,195,255, +223,215,199,255,225,218,202,255,227,220,206,255,229,222,209,255,230,224,212,255,232,226,214,255,231,225,213,255,228,220,205,255, +221,209,189,255,213,197,169,255,203,182,150,255,193,171,138,255,186,163,132,255,180,157,127,255,176,152,124,255,172,148,120,255, +171,146,119,255,170,145,119,255,170,145,118,255,169,145,118,255,168,144,117,255,165,142,115,255,156,130,107,255,143,118, 99,255, +158,133,109,255,157,131,107,255,155,130,106,255,152,126,103,255,148,122,100,255,103, 89, 79,255, 61, 61, 61,255, 59, 60, 60,255, +147,142,134,255,225,216,200,255,222,212,195,255,219,208,189,255,215,203,182,255,211,197,171,255,205,188,160,255,199,179,149,255, +193,173,140,255,190,170,138,255,191,170,139,255,195,176,146,255,202,184,155,255,206,190,161,255,205,188,159,255,200,179,147,255, +189,167,135,255,179,154,126,255,168,143,117,255,159,133,108,255,151,125,103,255,146,120, 98,255,144,118, 97,255,146,119, 98,255, +149,124,101,255,154,129,105,255,160,135,111,255,167,143,116,255,173,149,121,255,178,155,126,255,183,160,130,255,187,165,133,255, +190,169,137,255,192,171,139,255,195,174,141,255,197,176,143,255,198,179,145,255,200,180,147,255,201,182,149,255,202,183,152,255, +202,184,153,255,204,185,155,255,205,187,157,255,205,188,159,255,206,189,160,255,207,190,162,255,207,191,163,255,208,192,164,255, +209,193,166,255,209,194,167,255,210,194,169,255,210,195,169,255,211,196,170,255,211,197,172,255,211,197,172,255,212,198,173,255, +212,198,173,255,213,199,175,255,214,200,177,255,215,201,178,255,215,203,181,255,217,205,184,255,218,207,186,255,219,209,190,255, +221,211,193,255,223,214,197,255,224,216,201,255,226,218,204,255,227,220,206,255,228,222,209,255,230,224,211,255,231,226,213,255, +230,223,210,255,225,215,198,255,218,204,181,255,208,189,160,255,198,177,145,255,190,168,136,255,184,161,130,255,179,156,126,255, +175,152,123,255,174,150,122,255,173,148,121,255,171,146,119,255,167,143,116,255,155,130,106,255,147,121,100,255,157,133,109,255, +158,133,108,255,156,130,107,255,153,127,104,255,148,123,101,255,141,115, 95,255, 95, 81, 73,255, 61, 61, 61,255, 60, 60, 60,255, +141,133,122,255,212,197,171,255,207,191,163,255,204,187,157,255,202,184,153,255,201,182,152,255,202,183,152,255,203,185,155,255, +205,190,163,255,210,196,171,255,215,201,179,255,217,205,184,255,217,205,183,255,215,200,177,255,208,191,162,255,199,178,146,255, +188,166,134,255,177,153,124,255,165,141,115,255,156,131,106,255,147,121, 99,255,140,114, 93,255,138,110, 91,255,137,111, 91,255, +141,114, 94,255,146,120, 98,255,152,127,104,255,160,135,110,255,166,142,116,255,172,149,121,255,178,155,126,255,183,160,130,255, +187,165,134,255,191,169,137,255,193,171,139,255,195,174,141,255,197,177,144,255,198,178,145,255,199,179,148,255,201,181,149,255, +202,182,150,255,202,183,153,255,204,185,154,255,204,186,156,255,205,188,158,255,206,188,159,255,206,189,160,255,207,190,162,255, +207,191,163,255,208,192,164,255,208,192,166,255,209,193,166,255,209,194,167,255,210,195,168,255,210,195,169,255,211,196,169,255, +211,196,171,255,211,197,171,255,211,197,173,255,213,199,174,255,213,200,176,255,215,201,179,255,215,203,180,255,216,205,183,255, +218,207,186,255,219,209,190,255,221,212,193,255,222,214,196,255,223,215,200,255,224,217,201,255,224,217,202,255,226,219,204,255, +229,222,209,255,231,225,212,255,230,222,207,255,223,212,194,255,215,200,175,255,206,188,157,255,198,176,144,255,190,168,136,255, +185,162,131,255,181,157,127,255,177,153,125,255,171,148,120,255,155,131,107,255,151,126,104,255,161,135,110,255,159,134,110,255, +158,132,108,255,154,129,105,255,150,125,103,255,145,118, 97,255,115, 90, 75,255, 38, 36, 35,255, 61, 61, 62,255, 60, 60, 60,255, +139,131,118,255,211,196,169,255,209,195,169,255,212,197,172,255,213,200,177,255,216,204,182,255,218,207,187,255,220,209,191,255, +221,211,193,255,222,211,192,255,220,208,189,255,217,204,182,255,214,199,173,255,209,191,161,255,202,182,149,255,193,172,139,255, +184,161,130,255,174,150,122,255,164,138,112,255,153,127,103,255,143,116, 96,255,135,107, 89,255,131,102, 85,255,130,102, 84,255, +133,105, 87,255,137,110, 91,255,144,117, 97,255,152,126,103,255,160,135,110,255,166,142,116,255,172,149,121,255,178,156,126,255, +183,161,131,255,187,165,134,255,191,169,137,255,193,172,139,255,195,174,141,255,197,177,144,255,198,178,145,255,199,179,147,255, +200,181,149,255,201,182,150,255,202,183,152,255,203,185,154,255,203,185,155,255,204,186,156,255,205,187,158,255,205,188,159,255, +206,189,160,255,207,190,162,255,207,190,162,255,207,191,163,255,208,192,164,255,208,192,165,255,208,193,166,255,208,193,166,255, +209,194,167,255,209,194,167,255,210,195,169,255,210,195,169,255,210,196,170,255,211,197,172,255,212,198,174,255,213,199,176,255, +214,202,179,255,215,204,181,255,217,205,185,255,219,208,188,255,219,210,191,255,220,211,193,255,221,211,194,255,220,211,194,255, +221,212,195,255,225,217,202,255,229,223,209,255,231,225,212,255,228,221,206,255,223,212,193,255,215,200,177,255,207,189,160,255, +199,178,146,255,190,168,136,255,180,157,127,255,161,138,112,255,153,128,106,255,163,137,112,255,161,135,110,255,159,134,110,255, +157,132,108,255,152,127,105,255,148,121,100,255,127,102, 85,255, 15, 12, 10,255, 28, 28, 28,255, 61, 61, 61,255, 60, 60, 60,255, +145,140,131,255,223,213,195,255,222,212,195,255,222,212,195,255,222,212,194,255,222,212,193,255,221,210,191,255,219,207,187,255, +218,204,182,255,215,200,175,255,212,196,168,255,209,190,160,255,204,184,152,255,200,179,145,255,194,172,140,255,187,165,134,255, +179,156,126,255,171,147,119,255,161,135,111,255,150,124,101,255,140,113, 93,255,131,103, 85,255,124, 96, 80,255,123, 94, 79,255, +125, 96, 81,255,129,101, 84,255,135,108, 89,255,143,117, 96,255,152,127,104,255,160,135,110,255,167,143,116,255,174,151,122,255, +179,156,127,255,184,162,131,255,188,166,135,255,191,170,137,255,193,172,139,255,195,174,141,255,196,176,143,255,198,178,145,255, +199,179,146,255,200,180,148,255,200,181,150,255,201,183,151,255,202,183,152,255,203,185,154,255,203,185,155,255,204,186,156,255, +205,188,157,255,205,188,158,255,205,188,159,255,206,189,160,255,206,190,161,255,206,190,162,255,207,191,162,255,207,191,162,255, +207,191,163,255,207,192,163,255,208,192,163,255,208,192,164,255,208,192,164,255,208,192,166,255,209,194,167,255,209,194,168,255, +210,196,170,255,211,197,173,255,213,200,176,255,214,202,180,255,215,203,182,255,216,204,184,255,217,206,186,255,217,205,186,255, +215,203,182,255,214,201,180,255,216,205,186,255,222,213,197,255,228,222,208,255,230,224,212,255,227,220,206,255,221,211,192,255, +211,196,171,255,194,174,142,255,170,148,120,255,161,137,113,255,166,141,115,255,163,138,113,255,162,137,111,255,160,135,110,255, +157,131,108,255,151,126,103,255,131,105, 87,255, 24, 19, 16,255, 0, 0, 0,255, 30, 29, 29,255, 62, 62, 62,255, 60, 60, 60,255, +147,142,133,255,225,214,197,255,221,210,191,255,219,207,186,255,217,204,181,255,215,201,176,255,213,198,171,255,210,193,165,255, +208,189,158,255,205,185,153,255,202,181,149,255,199,178,144,255,195,174,141,255,192,170,137,255,187,165,133,255,182,159,129,255, +177,153,124,255,169,144,118,255,159,133,109,255,147,121, 99,255,137,109, 90,255,127, 99, 82,255,120, 90, 77,255,117, 87, 74,255, +118, 89, 75,255,122, 93, 79,255,128, 99, 82,255,135,108, 89,255,145,118, 97,255,154,128,105,255,161,136,111,255,168,145,118,255, +175,152,123,255,180,157,128,255,185,163,132,255,188,167,135,255,191,170,138,255,193,172,139,255,194,173,141,255,196,176,143,255, +197,177,144,255,198,178,146,255,199,180,147,255,200,181,148,255,200,181,150,255,202,183,151,255,202,183,151,255,203,184,153,255, +204,185,154,255,204,186,155,255,204,187,156,255,204,187,156,255,204,187,157,255,204,188,157,255,205,188,158,255,205,188,158,255, +206,188,158,255,206,188,158,255,205,188,158,255,205,187,158,255,205,187,158,255,205,188,158,255,205,188,159,255,206,189,161,255, +207,190,162,255,208,192,164,255,208,193,167,255,210,195,169,255,210,196,172,255,211,198,174,255,212,199,175,255,212,198,174,255, +209,195,170,255,205,188,160,255,200,183,155,255,201,186,161,255,204,190,166,255,211,198,178,255,214,203,184,255,211,197,176,255, +195,176,148,255,179,157,128,255,173,149,121,255,170,146,119,255,167,143,116,255,165,140,114,255,163,138,112,255,161,135,110,255, +154,129,106,255,142,115, 95,255, 37, 30, 25,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +143,136,125,255,218,204,180,255,214,199,174,255,212,195,167,255,209,191,161,255,206,188,156,255,204,184,152,255,202,181,147,255, +198,177,144,255,197,174,141,255,195,173,140,255,192,170,138,255,190,167,136,255,186,164,133,255,183,160,130,255,180,156,127,255, +174,150,122,255,167,143,117,255,158,132,109,255,146,120, 98,255,135,107, 89,255,124, 96, 80,255,116, 87, 73,255,111, 81, 69,255, +111, 82, 70,255,115, 86, 73,255,120, 92, 77,255,127, 99, 83,255,137,110, 91,255,146,121, 99,255,156,131,107,255,164,140,114,255, +171,148,120,255,178,155,126,255,182,160,129,255,185,164,132,255,188,167,135,255,191,170,138,255,193,171,139,255,193,173,140,255, +196,175,142,255,196,176,143,255,197,177,144,255,198,179,146,255,199,180,147,255,199,180,148,255,200,181,148,255,201,182,150,255, +201,182,151,255,202,183,151,255,202,184,153,255,202,184,153,255,203,185,153,255,203,184,153,255,203,184,153,255,202,185,154,255, +203,185,154,255,203,184,154,255,202,184,153,255,202,183,152,255,202,183,152,255,202,183,152,255,202,184,152,255,202,184,153,255, +203,186,155,255,204,186,157,255,204,187,158,255,206,188,160,255,206,190,161,255,207,192,164,255,209,194,168,255,210,196,171,255, +212,198,175,255,213,200,178,255,215,203,180,255,216,205,183,255,218,208,188,255,218,206,185,255,213,197,173,255,204,185,154,255, +194,173,141,255,187,164,132,255,180,157,127,255,175,151,123,255,171,147,119,255,168,145,117,255,164,139,114,255,159,134,110,255, +145,119, 98,255, 40, 31, 26,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +139,131,116,255,212,193,164,255,207,188,157,255,204,184,152,255,202,181,147,255,199,177,144,255,197,175,142,255,194,172,140,255, +193,170,138,255,191,168,137,255,189,167,135,255,188,165,134,255,186,163,132,255,184,161,130,255,182,158,128,255,178,155,126,255, +174,150,122,255,167,143,117,255,158,133,109,255,146,119, 98,255,134,107, 88,255,123, 94, 79,255,113, 83, 71,255,107, 77, 66,255, +106, 77, 66,255,109, 80, 68,255,114, 85, 72,255,121, 92, 77,255,129,102, 85,255,140,114, 94,255,151,125,103,255,159,135,110,255, +168,144,117,255,174,151,123,255,179,157,127,255,182,160,130,255,185,164,132,255,188,166,135,255,190,169,137,255,192,170,139,255, +193,172,140,255,194,174,141,255,195,175,142,255,197,177,144,255,197,177,144,255,198,177,146,255,198,179,146,255,198,179,146,255, +199,180,147,255,200,181,148,255,200,181,149,255,201,182,150,255,200,182,149,255,201,182,149,255,201,182,150,255,201,181,149,255, +201,181,149,255,199,180,147,255,200,180,147,255,199,179,147,255,198,179,146,255,199,179,146,255,199,179,146,255,199,180,148,255, +200,180,148,255,200,182,149,255,200,182,150,255,201,183,152,255,202,184,153,255,204,187,157,255,207,190,162,255,210,196,170,255, +214,202,179,255,219,208,189,255,222,214,197,255,225,218,204,255,228,222,208,255,229,221,208,255,225,215,200,255,218,205,184,255, +209,192,164,255,199,179,146,255,190,168,136,255,182,160,129,255,178,154,125,255,173,149,121,255,166,142,116,255,143,120, 98,255, + 41, 33, 28,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +137,126,109,255,206,186,153,255,202,182,148,255,199,178,144,255,196,175,141,255,195,172,140,255,192,170,138,255,191,168,137,255, +190,167,136,255,188,165,134,255,187,165,134,255,186,163,132,255,185,162,131,255,184,161,129,255,181,158,128,255,178,155,126,255, +174,150,122,255,168,143,117,255,159,134,110,255,147,120, 99,255,134,107, 88,255,122, 94, 78,255,111, 81, 69,255,104, 74, 64,255, +101, 73, 63,255,104, 75, 65,255,109, 80, 68,255,116, 87, 74,255,124, 96, 81,255,135,108, 90,255,147,121,100,255,157,133,109,255, +166,142,116,255,172,149,120,255,176,153,124,255,180,157,128,255,182,161,130,255,184,162,132,255,187,165,133,255,189,168,136,255, +190,169,137,255,192,172,138,255,194,173,141,255,194,174,141,255,195,175,142,255,196,176,143,255,196,176,143,255,196,177,144,255, +197,177,144,255,197,177,145,255,198,178,146,255,198,179,146,255,199,179,146,255,198,179,146,255,198,178,145,255,198,178,145,255, +197,177,144,255,197,177,144,255,196,176,143,255,196,176,143,255,196,175,143,255,196,175,143,255,195,175,142,255,196,175,143,255, +196,176,143,255,196,176,143,255,196,176,143,255,197,177,144,255,198,178,145,255,200,180,148,255,202,184,153,255,206,190,162,255, +211,197,173,255,216,204,183,255,220,210,192,255,223,214,198,255,226,219,205,255,230,224,211,255,230,225,212,255,229,221,207,255, +223,212,194,255,214,199,175,255,203,184,154,255,194,172,140,255,184,162,131,255,175,153,124,255,157,133,109,255, 42, 34, 29,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +135,124,107,255,203,182,147,255,199,178,144,255,197,175,142,255,195,172,140,255,192,170,138,255,191,169,136,255,190,168,136,255, +188,166,134,255,187,165,133,255,187,164,133,255,186,163,132,255,185,162,131,255,184,161,131,255,182,159,129,255,179,156,126,255, +177,153,124,255,170,146,119,255,161,136,111,255,148,122,100,255,135,107, 89,255,122, 94, 78,255,110, 81, 69,255,102, 73, 63,255, + 98, 70, 61,255, 99, 71, 62,255,105, 76, 65,255,112, 83, 70,255,121, 92, 77,255,133,106, 88,255,147,121, 99,255,158,133,109,255, +165,142,115,255,171,147,120,255,174,151,122,255,176,154,124,255,178,156,126,255,180,158,128,255,183,161,130,255,185,164,133,255, +187,166,134,255,189,168,136,255,191,170,138,255,192,171,139,255,193,173,140,255,193,173,140,255,194,174,141,255,194,174,141,255, +194,174,141,255,195,175,142,255,195,175,142,255,196,176,143,255,196,175,143,255,195,175,142,255,195,175,142,255,194,174,141,255, +194,174,141,255,193,173,140,255,193,173,140,255,192,172,139,255,192,172,139,255,192,171,139,255,192,171,139,255,192,171,139,255, +191,171,138,255,191,170,138,255,191,170,138,255,191,170,138,255,192,172,139,255,193,173,141,255,196,176,144,255,200,182,149,255, +205,187,159,255,208,193,168,255,212,198,176,255,214,203,183,255,218,208,190,255,223,215,199,255,228,221,207,255,230,224,212,255, +230,224,210,255,225,215,200,255,217,204,183,255,205,188,159,255,189,168,137,255,152,130,106,255, 19, 16, 13,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +134,123,106,255,201,180,146,255,198,177,144,255,197,175,141,255,195,173,140,255,193,171,138,255,191,169,137,255,190,168,136,255, +189,167,135,255,188,166,134,255,188,166,134,255,187,164,133,255,187,164,133,255,185,162,132,255,184,161,131,255,182,159,129,255, +179,155,126,255,174,149,122,255,164,140,114,255,153,126,103,255,138,110, 91,255,124, 95, 80,255,111, 81, 69,255,101, 73, 63,255, + 96, 69, 61,255, 97, 71, 61,255,102, 75, 64,255,111, 82, 70,255,123, 94, 78,255,138,110, 91,255,153,127,104,255,162,138,113,255, +168,144,118,255,169,146,119,255,170,147,120,255,171,148,120,255,173,150,121,255,176,153,124,255,178,156,126,255,181,159,129,255, +183,163,131,255,186,165,134,255,188,167,135,255,190,169,137,255,190,169,137,255,192,170,139,255,191,171,138,255,191,171,138,255, +193,172,140,255,193,171,139,255,193,171,140,255,192,172,139,255,192,172,139,255,192,172,140,255,192,171,139,255,192,171,138,255, +191,170,138,255,190,169,137,255,190,169,137,255,190,169,137,255,189,168,137,255,188,167,136,255,188,167,136,255,187,166,135,255, +186,165,134,255,185,165,134,255,185,164,133,255,185,164,133,255,185,164,133,255,186,165,134,255,187,165,134,255,186,165,133,255, +182,161,131,255,178,157,128,255,176,156,131,255,175,155,130,255,178,159,135,255,186,169,147,255,196,181,161,255,208,197,179,255, +218,209,193,255,225,216,199,255,208,198,178,255,160,147,125,255, 87, 77, 63,255, 8, 7, 6,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +134,124,106,255,202,181,147,255,200,178,145,255,199,177,144,255,197,175,142,255,195,173,140,255,194,172,139,255,193,171,138,255, +192,170,138,255,191,168,136,255,190,168,136,255,190,167,136,255,190,167,136,255,189,166,135,255,188,166,134,255,186,164,132,255, +183,160,129,255,178,154,125,255,170,146,118,255,157,132,107,255,142,115, 95,255,128, 99, 82,255,114, 84, 72,255,103, 74, 64,255, + 97, 70, 61,255, 98, 71, 62,255,103, 75, 65,255,115, 86, 73,255,133,104, 86,255,153,129,105,255,167,143,116,255,171,148,120,255, +169,146,119,255,167,143,116,255,165,141,115,255,164,140,115,255,165,141,115,255,168,144,118,255,171,149,120,255,175,153,124,255, +180,157,128,255,182,161,131,255,185,164,133,255,186,165,134,255,188,167,135,255,189,168,136,255,189,168,136,255,189,168,136,255, +190,168,137,255,189,168,137,255,189,168,136,255,190,169,137,255,189,168,137,255,189,168,136,255,189,167,136,255,188,167,136,255, +188,167,135,255,187,166,135,255,186,165,134,255,186,164,133,255,186,164,133,255,185,164,132,255,184,162,132,255,183,161,131,255, +182,161,130,255,181,159,129,255,180,158,128,255,180,158,127,255,178,156,127,255,177,155,126,255,175,153,124,255,172,150,121,255, +169,146,118,255,167,143,117,255,164,141,115,255,163,140,114,255,161,138,112,255,160,136,111,255,158,134,110,255,152,127,106,255, +145,120,100,255,129,107, 92,255, 32, 28, 25,255, 8, 8, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +136,125,108,255,205,184,151,255,203,182,149,255,201,181,147,255,200,179,145,255,199,178,144,255,198,176,142,255,196,175,142,255, +196,174,141,255,195,173,140,255,194,172,140,255,194,172,140,255,194,173,140,255,194,172,139,255,193,171,139,255,192,169,138,255, +189,167,134,255,184,161,130,255,177,152,123,255,164,140,114,255,149,122,100,255,133,105, 87,255,119, 90, 76,255,107, 77, 66,255, +100, 72, 63,255,100, 73, 62,255,112, 83, 71,255,136,109, 90,255,166,143,117,255,181,160,130,255,182,160,129,255,176,153,124,255, +170,146,118,255,162,138,112,255,158,133,108,255,155,131,107,255,156,131,107,255,158,133,109,255,162,138,113,255,168,145,118,255, +173,151,122,255,178,155,127,255,181,160,129,255,183,161,130,255,183,163,132,255,185,163,132,255,185,164,133,255,186,165,134,255, +186,165,134,255,186,165,134,255,186,165,134,255,186,165,134,255,186,165,134,255,186,164,133,255,185,164,133,255,185,164,132,255, +184,163,132,255,184,162,132,255,184,162,131,255,183,161,130,255,182,161,130,255,181,159,129,255,180,158,128,255,180,157,128,255, +179,156,127,255,177,155,126,255,177,154,125,255,175,154,125,255,174,152,123,255,173,151,122,255,172,149,121,255,169,146,119,255, +168,145,118,255,166,143,117,255,165,141,115,255,163,140,114,255,162,138,113,255,158,133,110,255,153,129,105,255,141,116, 96,255, +101, 80, 67,255, 7, 5, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +138,129,112,255,209,191,159,255,207,188,157,255,206,187,155,255,206,186,153,255,204,184,152,255,204,183,150,255,203,182,148,255, +202,181,148,255,202,180,147,255,202,180,147,255,201,180,147,255,202,181,147,255,202,181,148,255,202,181,147,255,200,180,146,255, +198,177,143,255,193,171,139,255,186,163,132,255,174,150,122,255,158,133,108,255,141,114, 94,255,126, 98, 81,255,112, 83, 70,255, +101, 72, 62,255,131,107, 91,255,167,147,123,255,193,175,148,255,203,186,156,255,199,179,147,255,188,166,134,255,177,153,125,255, +166,142,115,255,156,131,107,255,149,123,101,255,145,118, 97,255,145,118, 97,255,146,120, 99,255,151,126,102,255,158,134,109,255, +165,142,116,255,172,148,121,255,176,153,124,255,178,156,126,255,180,158,128,255,181,159,129,255,182,160,130,255,182,161,130,255, +183,161,131,255,183,161,130,255,183,161,131,255,183,161,131,255,183,161,130,255,182,160,131,255,182,160,130,255,181,159,129,255, +181,159,129,255,180,158,128,255,180,158,128,255,179,157,129,255,179,157,127,255,178,156,127,255,178,155,126,255,176,154,125,255, +176,154,125,255,175,153,124,255,174,152,123,255,173,151,122,255,173,150,121,255,171,148,121,255,170,147,119,255,168,145,118,255, +166,143,117,255,165,141,115,255,164,140,114,255,162,139,113,255,158,134,110,255,154,129,106,255,135,111, 92,255, 57, 46, 38,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +141,133,120,255,216,200,174,255,214,198,172,255,213,197,170,255,213,196,169,255,212,195,167,255,211,193,165,255,210,192,163,255, +210,192,163,255,210,192,163,255,210,192,162,255,210,192,162,255,210,193,163,255,211,194,166,255,212,194,167,255,211,194,167,255, +209,192,163,255,206,188,157,255,200,180,147,255,189,166,135,255,172,148,120,255,153,128,105,255,135,108, 88,255,124, 96, 80,255, +178,162,142,255,213,199,177,255,216,204,183,255,214,200,176,255,209,191,163,255,199,178,145,255,186,164,132,255,173,149,121,255, +161,136,111,255,149,123,101,255,140,113, 93,255,134,106, 88,255,132,104, 87,255,134,107, 89,255,139,112, 92,255,146,120, 99,255, +155,130,107,255,163,139,113,255,169,146,118,255,172,150,122,255,175,153,124,255,177,155,126,255,178,156,127,255,179,157,128,255, +180,158,128,255,179,157,128,255,179,157,128,255,179,157,128,255,179,157,127,255,179,156,127,255,178,156,127,255,178,156,126,255, +178,155,126,255,178,155,126,255,177,155,126,255,177,155,125,255,177,154,125,255,176,154,125,255,175,153,124,255,174,153,124,255, +174,152,123,255,174,151,123,255,172,149,122,255,171,149,121,255,170,147,120,255,168,145,118,255,167,144,118,255,166,143,117,255, +164,141,115,255,163,140,114,255,162,138,112,255,158,133,110,255,154,128,105,255,117, 96, 78,255, 12, 10, 8,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +145,140,130,255,224,212,193,255,222,211,191,255,222,210,190,255,221,209,189,255,221,209,188,255,220,207,186,255,219,207,186,255, +219,206,185,255,219,207,186,255,219,207,186,255,220,208,187,255,221,209,188,255,221,210,191,255,222,212,192,255,223,212,194,255, +223,212,192,255,220,208,188,255,215,200,177,255,203,186,156,255,186,165,134,255,167,144,119,255,162,141,122,255,209,196,178,255, +222,210,190,255,216,203,180,255,213,197,171,255,208,190,160,255,201,181,148,255,193,170,138,255,181,158,129,255,169,145,118,255, +156,131,107,255,144,117, 96,255,132,104, 86,255,125, 96, 80,255,122, 94, 78,255,123, 95, 79,255,127, 98, 82,255,134,107, 88,255, +144,117, 96,255,153,129,105,255,161,137,111,255,166,143,117,255,171,148,120,255,173,151,122,255,174,152,123,255,175,153,125,255, +176,153,124,255,175,153,124,255,175,153,124,255,175,153,124,255,175,152,124,255,174,152,123,255,174,152,123,255,174,151,123,255, +174,152,123,255,174,152,123,255,174,152,123,255,174,151,123,255,174,151,123,255,174,151,123,255,173,150,122,255,173,150,122,255, +172,150,122,255,171,149,121,255,171,148,120,255,170,146,119,255,168,145,118,255,167,144,117,255,166,143,116,255,164,141,114,255, +162,138,114,255,161,137,112,255,158,133,109,255,138,115, 94,255, 66, 54, 45,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255, +149,145,138,255,232,224,211,255,230,223,210,255,229,223,209,255,230,223,208,255,229,223,208,255,229,222,208,255,229,221,207,255, +229,221,207,255,228,220,206,255,228,221,206,255,227,220,204,255,227,218,203,255,225,216,200,255,223,214,197,255,221,211,193,255, +218,209,191,255,217,205,186,255,212,199,178,255,208,193,169,255,204,188,163,255,206,192,169,255,218,204,181,255,214,198,172,255, +209,192,163,255,206,188,157,255,203,183,150,255,199,178,145,255,193,171,139,255,187,163,133,255,178,154,125,255,166,140,115,255, +151,126,103,255,139,111, 91,255,126, 97, 81,255,117, 88, 74,255,113, 83, 72,255,113, 84, 71,255,116, 88, 74,255,123, 94, 80,255, +133,105, 87,255,143,117, 96,255,153,128,104,255,161,136,111,255,165,142,115,255,169,145,118,255,170,147,120,255,170,147,120,255, +170,148,120,255,170,148,120,255,170,147,119,255,170,147,119,255,169,146,119,255,169,146,119,255,170,146,119,255,170,147,120,255, +171,148,120,255,171,148,121,255,172,149,122,255,173,150,122,255,172,150,122,255,172,149,121,255,172,149,121,255,171,148,121,255, +171,148,120,255,169,146,119,255,168,145,119,255,167,144,117,255,166,143,116,255,165,142,115,255,164,140,114,255,161,137,113,255, +160,135,111,255,149,125,103,255, 88, 74, 61,255, 23, 19, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +143,138,127,255,219,209,190,255,218,208,189,255,218,207,188,255,217,207,188,255,217,206,188,255,217,207,188,255,217,206,187,255, +217,206,187,255,216,205,186,255,216,205,185,255,216,204,186,255,217,205,186,255,219,208,190,255,220,209,192,255,222,211,194,255, +222,210,192,255,220,208,187,255,216,202,179,255,212,198,171,255,211,194,166,255,209,190,161,255,206,187,154,255,203,183,150,255, +201,181,147,255,199,177,144,255,196,174,141,255,192,171,138,255,188,165,134,255,182,159,129,255,175,151,122,255,163,138,112,255, +148,121,100,255,133,105, 88,255,120, 92, 77,255,111, 81, 69,255,104, 76, 65,255,104, 75, 65,255,108, 79, 67,255,114, 85, 72,255, +124, 96, 80,255,135,108, 89,255,146,120, 99,255,156,132,107,255,161,137,112,255,164,140,114,255,164,141,114,255,164,140,114,255, +164,140,114,255,164,140,114,255,164,140,114,255,164,140,114,255,164,141,114,255,164,141,114,255,165,142,116,255,167,143,117,255, +168,145,118,255,170,147,120,255,171,148,120,255,171,148,121,255,171,148,121,255,171,148,121,255,170,147,120,255,169,146,119,255, +169,146,119,255,168,145,118,255,166,143,117,255,165,142,116,255,164,141,115,255,161,137,113,255,160,136,111,255,157,133,109,255, +124,103, 84,255, 24, 20, 16,255, 2, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +144,140,131,255,222,213,196,255,221,212,195,255,221,212,195,255,222,212,195,255,223,214,197,255,224,215,199,255,224,216,200,255, +226,217,201,255,226,217,201,255,225,215,199,255,224,214,195,255,222,211,192,255,220,208,188,255,218,206,183,255,216,202,177,255, +214,198,172,255,211,194,166,255,208,189,159,255,205,185,153,255,203,182,149,255,201,180,146,255,199,178,145,255,198,176,143,255, +196,174,141,255,194,172,139,255,191,169,137,255,189,166,134,255,185,162,132,255,180,157,127,255,172,149,121,255,162,136,111,255, +146,119, 98,255,130,102, 85,255,117, 87, 74,255,106, 77, 66,255, 98, 71, 61,255, 96, 70, 61,255,100, 73, 63,255,108, 79, 67,255, +119, 90, 76,255,131,103, 86,255,145,118, 97,255,154,129,105,255,157,132,108,255,157,133,108,255,156,131,108,255,155,130,107,255, +154,129,106,255,154,129,106,255,155,129,106,255,156,131,107,255,157,132,108,255,159,135,110,255,162,138,113,255,165,142,116,255, +167,144,117,255,169,146,119,255,170,147,119,255,170,147,119,255,169,146,119,255,169,146,119,255,168,145,118,255,167,144,117,255, +167,144,117,255,165,142,116,255,163,140,115,255,162,138,114,255,161,137,112,255,156,132,107,255,126,106, 87,255, 53, 44, 36,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255, +149,145,137,255,230,223,209,255,228,221,207,255,228,221,206,255,227,219,204,255,226,217,201,255,225,215,198,255,223,213,195,255, +222,211,191,255,220,208,188,255,218,206,182,255,216,202,178,255,214,198,173,255,212,195,168,255,210,193,164,255,208,190,159,255, +206,187,155,255,204,184,151,255,202,182,148,255,199,179,145,255,198,176,143,255,196,175,142,255,195,173,140,255,194,172,140,255, +192,170,138,255,191,169,137,255,189,167,135,255,187,165,134,255,184,161,131,255,179,155,127,255,172,148,121,255,161,136,110,255, +145,118, 98,255,128,101, 84,255,114, 85, 72,255,103, 74, 64,255, 93, 68, 59,255, 90, 67, 58,255, 93, 69, 60,255,103, 75, 65,255, +118, 89, 76,255,137,110, 91,255,148,123,100,255,151,126,103,255,150,125,102,255,148,122,100,255,146,120, 98,255,144,118, 97,255, +143,117, 96,255,143,117, 97,255,145,119, 98,255,147,121, 99,255,151,126,104,255,158,133,109,255,162,139,113,255,166,142,116,255, +168,145,118,255,169,146,119,255,169,146,118,255,168,145,118,255,168,145,118,255,167,144,117,255,166,143,116,255,165,142,116,255, +164,141,115,255,161,138,113,255,162,138,113,255,158,134,109,255,113, 95, 79,255, 48, 41, 33,255, 6, 5, 4,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +146,141,131,255,225,214,195,255,223,213,193,255,223,212,192,255,222,211,191,255,221,208,188,255,219,207,185,255,218,204,181,255, +216,201,177,255,214,199,174,255,213,196,169,255,211,193,165,255,208,190,160,255,207,188,156,255,205,185,153,255,203,183,150,255, +202,181,148,255,200,179,145,255,198,177,143,255,197,175,142,255,196,174,141,255,195,173,140,255,193,171,139,255,192,171,138,255, +192,170,138,255,190,168,136,255,189,167,135,255,187,165,134,255,184,161,131,255,179,156,127,255,172,148,120,255,162,137,111,255, +146,119, 98,255,128,100, 84,255,113, 83, 71,255,100, 72, 63,255, 90, 67, 58,255, 86, 66, 57,255, 89, 67, 58,255,105, 77, 65,255, +134,106, 88,255,151,125,103,255,153,127,105,255,146,121, 99,255,141,114, 94,255,137,110, 91,255,134,106, 88,255,132,104, 87,255, +131,104, 86,255,132,104, 86,255,135,107, 89,255,142,116, 95,255,152,128,105,255,161,137,111,255,166,143,116,255,168,144,118,255, +168,145,118,255,167,144,118,255,168,145,118,255,167,144,117,255,166,143,116,255,165,142,116,255,164,141,115,255,161,138,113,255, +161,137,112,255,160,136,111,255,130,110, 90,255, 30, 25, 21,255, 2, 2, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +144,137,126,255,221,208,186,255,220,206,185,255,219,205,184,255,218,204,181,255,218,203,180,255,216,201,176,255,214,199,172,255, +213,196,169,255,211,193,165,255,209,192,162,255,208,189,158,255,206,187,154,255,204,184,151,255,203,182,148,255,201,180,146,255, +199,178,144,255,198,176,143,255,196,175,141,255,195,173,140,255,194,172,139,255,194,172,140,255,194,172,140,255,193,171,139,255, +192,170,138,255,191,169,137,255,190,168,136,255,188,165,134,255,186,163,132,255,181,158,128,255,174,150,122,255,163,138,113,255, +148,121, 99,255,129,101, 84,255,113, 83, 71,255, 99, 72, 62,255, 89, 67, 58,255, 84, 65, 56,255,100, 77, 66,255,140,115, 95,255, +163,140,114,255,162,138,112,255,152,127,104,255,141,114, 94,255,131,103, 86,255,125, 97, 81,255,122, 94, 78,255,120, 92, 77,255, +119, 90, 76,255,120, 92, 77,255,135,108, 90,255,153,129,105,255,163,140,114,255,167,144,117,255,168,145,118,255,167,145,117,255, +167,144,118,255,167,144,117,255,166,143,116,255,165,142,115,255,164,141,115,255,164,140,114,255,160,136,111,255,142,121, 99,255, +106, 89, 73,255, 36, 30, 24,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +143,137,126,255,220,207,185,255,218,205,182,255,217,204,180,255,216,202,178,255,216,201,176,255,215,199,174,255,213,197,170,255, +212,195,167,255,210,193,164,255,208,190,160,255,207,188,156,255,206,186,153,255,204,183,150,255,203,182,148,255,201,180,146,255, +199,178,144,255,198,177,143,255,196,175,141,255,196,174,141,255,196,174,141,255,196,174,141,255,196,174,141,255,195,173,140,255, +194,172,140,255,194,172,139,255,192,170,138,255,191,169,137,255,188,166,134,255,185,162,131,255,177,154,125,255,167,143,116,255, +151,125,103,255,132,103, 86,255,114, 85, 72,255,100, 73, 63,255, 88, 66, 57,255,100, 79, 68,255,171,149,124,255,186,166,134,255, +178,156,126,255,164,140,114,255,148,123,101,255,134,107, 88,255,122, 94, 79,255,115, 86, 73,255,112, 83, 70,255,108, 79, 68,255, +107, 79, 67,255,150,127,105,255,166,143,116,255,170,148,120,255,171,148,121,255,170,146,120,255,168,145,118,255,168,144,117,255, +167,143,117,255,165,141,116,255,165,141,116,255,165,141,115,255,161,137,112,255,121,103, 84,255, 58, 50, 40,255, 23, 19, 16,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +145,138,128,255,222,210,190,255,220,207,186,255,219,206,184,255,219,204,182,255,217,202,179,255,216,201,177,255,215,200,174,255, +213,198,171,255,212,195,167,255,211,194,165,255,209,191,161,255,208,189,157,255,205,186,154,255,204,184,151,255,203,182,149,255, +201,180,146,255,200,179,145,255,199,178,144,255,198,176,143,255,198,176,143,255,198,176,143,255,198,176,143,255,198,176,143,255, +198,176,144,255,197,175,142,255,197,175,142,255,196,174,141,255,193,171,138,255,189,167,135,255,183,160,129,255,172,149,120,255, +157,131,107,255,137,109, 89,255,117, 88, 74,255,101, 73, 63,255, 98, 76, 66,255,203,188,164,255,208,190,162,255,196,175,142,255, +180,158,127,255,163,137,112,255,145,119, 97,255,129,101, 84,255,114, 85, 73,255,106, 77, 66,255,100, 73, 63,255, 97, 72, 62,255, +169,147,120,255,181,159,129,255,177,155,126,255,174,152,123,255,172,150,122,255,170,147,120,255,168,145,118,255,166,143,117,255, +166,142,116,255,164,141,115,255,152,129,106,255, 89, 76, 62,255, 14, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255, +147,142,133,255,226,216,198,255,223,213,195,255,223,211,192,255,221,210,189,255,220,208,186,255,219,206,184,255,218,205,182,255, +217,203,179,255,216,201,176,255,214,199,173,255,213,197,169,255,211,195,166,255,210,192,162,255,208,190,159,255,207,188,155,255, +206,186,153,255,204,184,151,255,203,183,150,255,202,181,148,255,202,181,148,255,202,182,148,255,203,183,150,255,204,183,151,255, +204,183,151,255,203,183,150,255,203,182,149,255,202,181,147,255,200,179,145,255,196,175,142,255,190,168,135,255,179,156,127,255, +164,139,113,255,143,116, 96,255,121, 93, 77,255,110, 83, 71,255,199,184,164,255,215,199,173,255,206,187,157,255,195,174,141,255, +180,158,128,255,162,137,112,255,143,116, 96,255,124, 96, 81,255,109, 80, 68,255, 97, 71, 62,255, 90, 69, 59,255,156,136,111,255, +185,164,133,255,181,158,129,255,179,156,127,255,176,153,125,255,173,150,122,255,170,146,119,255,151,130,106,255,132,114, 92,255, + 98, 83, 69,255, 44, 37, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255, +149,146,139,255,231,223,210,255,229,220,207,255,228,219,204,255,226,218,202,255,225,216,199,255,225,214,196,255,223,213,194,255, +222,211,192,255,221,210,189,255,220,207,186,255,218,206,183,255,217,203,180,255,216,201,176,255,214,199,172,255,212,196,168,255, +211,194,165,255,210,193,164,255,209,191,161,255,208,190,159,255,208,189,158,255,208,190,160,255,210,192,163,255,211,193,165,255, +211,194,165,255,211,194,165,255,210,193,164,255,210,193,163,255,209,191,161,255,206,188,157,255,201,181,148,255,190,168,136,255, +174,151,122,255,151,126,102,255,131,104, 87,255,187,169,147,255,213,197,170,255,208,191,162,255,204,184,152,255,196,175,141,255, +183,160,129,255,164,138,113,255,142,115, 95,255,122, 94, 79,255,106, 77, 66,255, 92, 69, 59,255,116, 97, 81,255,186,164,133,255, +183,161,131,255,181,159,129,255,168,146,119,255,130,112, 91,255, 90, 78, 64,255, 50, 43, 35,255, 25, 21, 18,255, 7, 6, 5,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255, +148,145,138,255,232,226,212,255,230,225,212,255,232,226,213,255,232,225,213,255,230,224,211,255,230,223,209,255,230,222,208,255, +229,221,206,255,228,220,204,255,227,218,202,255,226,216,199,255,225,214,197,255,224,213,194,255,222,210,191,255,221,208,187,255, +220,207,185,255,218,204,182,255,217,203,180,255,217,202,178,255,215,202,177,255,216,202,178,255,218,204,182,255,219,206,185,255, +220,207,187,255,221,209,188,255,221,209,189,255,221,209,188,255,219,208,188,255,218,205,183,255,213,198,173,255,202,183,154,255, +181,159,129,255,162,140,117,255,204,188,163,255,212,196,168,255,210,193,163,255,207,189,159,255,204,184,152,255,197,176,143,255, +186,163,133,255,168,144,116,255,144,117, 97,255,123, 95, 79,255,105, 76, 65,255, 90, 69, 59,255,143,126,103,255,108, 95, 77,255, + 78, 68, 55,255, 22, 19, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, +116,113,107,255,207,200,187,255,227,220,205,255,226,219,204,255,226,219,205,255,227,220,206,255,228,221,208,255,228,221,207,255, +228,221,208,255,228,221,208,255,229,222,209,255,229,223,209,255,229,222,209,255,229,222,209,255,229,222,207,255,229,221,207,255, +228,220,205,255,227,219,204,255,227,218,202,255,226,217,201,255,225,216,198,255,224,215,198,255,224,215,198,255,224,215,199,255, +224,215,199,255,224,216,200,255,224,216,200,255,224,215,199,255,222,213,196,255,219,208,189,255,213,200,177,255,204,188,162,255, +203,187,161,255,215,200,174,255,213,197,170,255,211,194,166,255,210,192,163,255,208,191,161,255,206,187,155,255,201,180,147,255, +191,169,137,255,174,150,122,255,149,123,101,255,126, 97, 81,255,103, 76, 65,255, 31, 24, 21,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, + 31, 31, 31,255, 34, 33, 31,255,103,100, 94,255,212,206,193,255,232,226,213,255,233,226,214,255,229,223,211,255,228,222,210,255, +229,222,210,255,229,222,209,255,228,221,208,255,227,221,207,255,227,220,206,255,226,219,205,255,226,218,204,255,225,218,204,255, +225,217,202,255,225,216,201,255,224,215,201,255,223,214,199,255,222,213,197,255,220,211,194,255,220,210,193,255,222,212,195,255, +223,213,198,255,224,215,198,255,223,214,197,255,223,213,195,255,221,211,191,255,220,208,188,255,219,206,185,255,219,205,183,255, +217,204,180,255,215,201,176,255,215,199,174,255,214,198,172,255,212,197,171,255,212,196,169,255,210,193,165,255,206,188,158,255, +199,178,146,255,183,160,130,255,157,132,108,255,129,101, 84,255, 55, 41, 35,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 53, 51, 47,255,152,147,138,255,222,216,203,255,227,221,210,255, +230,224,212,255,231,225,213,255,232,225,213,255,230,226,214,255,231,225,213,255,231,225,213,255,231,225,212,255,230,223,211,255, +230,224,211,255,230,223,210,255,230,223,210,255,230,223,209,255,229,222,208,255,229,222,208,255,229,221,207,255,228,220,206,255, +228,220,205,255,227,218,204,255,227,218,202,255,226,216,200,255,226,216,199,255,224,214,196,255,223,213,194,255,222,211,192,255, +221,209,189,255,220,208,187,255,220,207,186,255,219,206,185,255,219,206,184,255,218,205,183,255,217,204,182,255,214,199,176,255, +207,190,163,255,193,172,140,255,165,141,115,255, 86, 70, 59,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 53, 52, 48,255, + 94, 91, 85,255,143,139,130,255,165,161,151,255,191,184,173,255,206,200,186,255,222,216,203,255,229,222,209,255,231,224,210,255, +230,224,210,255,230,224,210,255,230,224,210,255,230,224,211,255,231,224,210,255,231,224,211,255,231,224,210,255,230,224,210,255, +230,224,209,255,230,223,209,255,231,223,209,255,230,222,208,255,230,222,208,255,230,222,207,255,229,221,206,255,229,221,205,255, +228,220,204,255,227,218,202,255,226,217,201,255,225,216,199,255,225,216,198,255,223,213,195,255,216,205,187,255,200,189,169,255, +172,159,138,255,126,114, 93,255, 45, 39, 32,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 7, 6, 5,255, 21, 20, 18,255, 29, 28, 26,255, 43, 41, 38,255, 54, 52, 48,255, 72, 69, 64,255, + 90, 86, 80,255,115,109,101,255,129,124,114,255,144,139,127,255,151,145,133,255,157,150,139,255,159,152,140,255,165,158,147,255, +168,162,150,255,168,162,150,255,169,163,150,255,169,162,150,255,169,163,150,255,169,162,150,255,169,163,150,255,158,151,139,255, +155,148,137,255,148,141,131,255,134,128,117,255,118,112,102,255, 89, 85, 76,255, 60, 57, 52,255, 44, 42, 37,255, 31, 29, 26,255, + 17, 15, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, + 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, + 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0, +156, 1, 0, 0,168,217,100, 7, 31, 0, 0, 0, 1, 0, 0, 0, 0,125,101, 7, 80, 54,100, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 73, 77, 46,105, 46,115,109,111,111,116,104, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46,115,109,111,111, +116,104, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,219,100, 7, 0, 0, 0, 0, 82, 72, 42, 0, 0, 0, 0, 4, + 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,168,219,100, 7, 19, 0, 0, 0, 1, 0, 0, 0, + 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 48,220,100, 7,152,236,100, 7, + 68, 65, 84, 65, 0, 16, 0, 0, 48,220,100, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0,152,236,100, 7, + 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 60,255, 60, 60, 60,255, 59, 60, 60,255, 59, 60, 60,255, 59, 60, 60,255, 59, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 61,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 61, 61,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 62, 62,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 61, 61,255, 61, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 60, 61, 61,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 60,255, 60, 60, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 60, 61,255, 60, 60, 60,255, 60, 60, 61,255, 60, 60, 61,255, 61, 61, 61,255, + 61, 62, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 61,255, 61, 61, 62,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 62,255, 61, 62, 62,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 61, 62,255, 61, 61, 62,255, + 61, 61, 61,255, 62, 62, 62,255, 61, 61, 61,255, 94, 88, 80,255,125,113, 98,255,125,113, 97,255,124,112, 97,255,124,112, 97,255, +124,112, 96,255,124,112, 96,255,124,111, 96,255,123,111, 96,255,123,111, 96,255,123,111, 95,255,123,110, 95,255,122,110, 95,255, +122,110, 95,255,122,109, 94,255,121,109, 94,255,121,109, 94,255,121,109, 94,255,122,109, 95,255,124,112, 96,255,130,118,102,255, +137,128,112,255,141,133,121,255,148,145,138,255,149,146,139,255,149,146,139,255,148,145,138,255,144,140,132,255,143,139,131,255, +140,134,124,255,132,124,112,255,126,119,110,255,132,124,112,255,135,127,113,255,119,107, 92,255,142,136,126,255,144,138,128,255, +105, 92, 80,255, 68, 59, 56,255, 60, 55, 53,255, 62, 56, 53,255, 72, 64, 59,255, 70, 66, 60,255, 64, 60, 56,255, 74, 68, 63,255, + 76, 71, 66,255, 67, 64, 59,255, 62, 56, 53,255, 66, 58, 55,255, 80, 68, 63,255, 99, 88, 78,255,112,100, 88,255,113,100, 88,255, + 86, 74, 67,255, 70, 64, 60,255, 97, 82, 73,255,103, 89, 78,255,111, 97, 85,255,134,124,109,255,146,142,133,255,142,136,126,255, +119,108, 93,255,127,116,100,255,137,128,112,255,130,119,103,255, 94, 80, 72,255, 83, 68, 63,255, 93, 78, 70,255, 97, 83, 74,255, + 98, 84, 74,255,107, 93, 82,255,115,102, 89,255,126,114, 99,255,134,124,108,255,129,118,101,255,124,112, 96,255, 86, 75, 68,255, + 69, 60, 56,255, 81, 66, 61,255, 78, 64, 60,255, 79, 66, 60,255, 85, 71, 64,255, 81, 67, 62,255, 84, 71, 65,255,103, 89, 79,255, + 98, 83, 73,255, 73, 62, 59,255, 61, 55, 52,255, 67, 62, 60,255, 64, 58, 54,255, 70, 60, 57,255, 73, 62, 57,255, 74, 62, 58,255, + 74, 67, 63,255, 61, 61, 61,255, 60, 60, 61,255,126,114, 98,255,186,163,132,255,185,162,131,255,184,161,131,255,184,161,130,255, +183,160,130,255,183,160,129,255,182,159,129,255,182,158,129,255,181,158,128,255,181,158,128,255,181,157,128,255,180,157,127,255, +180,156,127,255,179,155,126,255,178,154,125,255,178,154,125,255,178,154,125,255,179,155,126,255,183,159,128,255,190,168,136,255, +208,189,158,255,220,207,186,255,229,223,209,255,233,227,214,255,232,227,214,255,232,226,214,255,229,222,208,255,230,223,209,255, +230,222,208,255,222,210,190,255,218,208,192,255,222,213,197,255,219,209,192,255,191,170,140,255,213,199,177,255,230,224,210,255, +188,170,145,255,123, 97, 80,255, 91, 68, 59,255, 76, 60, 53,255, 81, 73, 65,255, 83, 77, 70,255, 70, 65, 57,255, 68, 61, 53,255, + 73, 67, 58,255, 66, 60, 53,255, 62, 53, 47,255, 71, 59, 51,255,117, 91, 76,255,176,152,123,255,205,188,160,255,192,172,146,255, +137,110, 89,255,110,101, 96,255,114, 87, 72,255,138,111, 91,255,144,117, 96,255,189,168,139,255,216,201,178,255,205,189,161,255, +172,148,120,255,183,159,130,255,199,178,145,255,191,170,138,255,132,105, 86,255, 86, 61, 54,255,102, 76, 64,255,115, 87, 73,255, +113, 88, 74,255,111, 91, 77,255,120,100, 84,255,158,133,110,255,194,172,140,255,185,162,131,255,164,140,114,255,112, 85, 72,255, + 72, 56, 49,255, 65, 52, 47,255, 75, 56, 50,255, 94, 70, 61,255, 85, 66, 56,255, 78, 60, 52,255,112, 84, 71,255,136,108, 89,255, +147,120, 99,255,122, 97, 81,255, 85, 70, 60,255, 80, 71, 65,255, 75, 68, 64,255, 74, 59, 53,255, 85, 61, 52,255, 75, 57, 50,255, + 74, 65, 60,255, 61, 61, 62,255, 60, 60, 61,255,126,114, 98,255,187,164,132,255,185,163,132,255,185,162,131,255,185,162,131,255, +184,161,131,255,183,160,130,255,183,160,130,255,182,159,129,255,182,159,129,255,182,159,129,255,181,158,128,255,181,158,128,255, +181,157,128,255,179,156,127,255,179,156,126,255,179,155,126,255,178,155,126,255,178,155,125,255,181,157,128,255,186,162,132,255, +200,179,146,255,217,203,179,255,228,219,204,255,231,225,212,255,231,225,213,255,229,222,208,255,224,214,196,255,220,209,188,255, +215,201,176,255,208,190,161,255,215,200,176,255,228,219,204,255,229,222,209,255,210,195,170,255,214,202,180,255,230,223,211,255, +201,185,160,255,172,150,121,255,166,142,115,255,112, 93, 82,255,102, 90, 83,255,111, 94, 87,255,106, 86, 75,255, 91, 71, 61,255, + 99, 76, 66,255, 99, 75, 65,255, 79, 65, 56,255, 71, 61, 53,255,103, 79, 67,255,169,145,118,255,209,193,167,255,184,164,135,255, +134,105, 88,255, 87, 71, 62,255, 97, 73, 63,255,115, 90, 75,255,116, 88, 74,255,151,125,102,255,177,153,124,255,172,147,119,255, +161,136,110,255,177,154,124,255,187,165,133,255,180,156,127,255,139,113, 93,255, 78, 60, 53,255, 72, 58, 51,255, 80, 65, 56,255, +101, 82, 70,255,115, 95, 82,255,106, 88, 75,255, 94, 74, 63,255,162,137,111,255,171,146,119,255,144,118, 97,255,140,114, 94,255, +137,111, 91,255, 92, 72, 62,255, 66, 52, 46,255, 83, 63, 55,255, 97, 75, 64,255, 85, 75, 69,255,106, 80, 67,255,126, 97, 81,255, +163,138,112,255,169,144,117,255,164,138,112,255,155,130,106,255,146,121,100,255,126,107, 92,255, 94, 81, 75,255, 73, 63, 56,255, + 69, 65, 59,255, 61, 61, 62,255, 60, 60, 61,255,126,114, 98,255,188,164,133,255,186,163,132,255,185,163,132,255,185,162,131,255, +184,161,131,255,184,161,131,255,184,161,130,255,183,160,130,255,183,159,129,255,182,159,129,255,182,158,128,255,181,158,128,255, +181,158,128,255,180,157,127,255,180,156,127,255,179,156,126,255,179,155,126,255,179,155,126,255,180,157,128,255,183,160,130,255, +192,170,138,255,208,190,160,255,221,209,187,255,227,218,202,255,228,219,204,255,225,216,198,255,217,203,178,255,206,188,157,255, +195,174,142,255,197,175,142,255,204,184,152,255,212,197,171,255,219,207,186,255,211,197,172,255,215,203,181,255,227,219,204,255, +185,165,139,255,144,121,101,255,125,110, 96,255, 98, 87, 81,255, 99, 87, 81,255,110, 91, 80,255,121, 94, 79,255,113, 83, 70,255, +124, 95, 79,255,144,117, 96,255,109, 87, 73,255, 71, 62, 53,255, 82, 65, 55,255,151,125,103,255,185,163,133,255,161,137,112,255, +130,102, 85,255,110, 83, 70,255, 97, 74, 64,255, 94, 75, 64,255, 72, 56, 49,255,116, 90, 76,255,149,123,101,255,145,118, 97,255, +147,121, 99,255,175,151,122,255,187,165,133,255,187,165,133,255,169,145,118,255,126,105, 87,255, 78, 64, 55,255, 68, 57, 50,255, + 90, 72, 61,255,137,111, 92,255,155,130,105,255,121, 94, 79,255,166,141,115,255,157,132,108,255,148,123,101,255,189,169,142,255, +200,182,154,255,169,145,119,255,119, 94, 78,255, 90, 70, 60,255,104, 82, 69,255,100, 80, 68,255, 91, 72, 63,255,107, 82, 70,255, +141,115, 95,255,149,125,103,255,144,122,101,255,136,115, 96,255,131,110, 92,255,127,107, 91,255,110, 88, 75,255, 79, 64, 55,255, + 77, 70, 66,255, 61, 61, 61,255, 60, 60, 61,255,127,115, 99,255,188,165,134,255,187,164,133,255,186,164,132,255,186,163,132,255, +185,162,132,255,185,162,131,255,185,162,131,255,184,161,130,255,184,161,130,255,183,160,130,255,183,159,129,255,182,159,129,255, +181,158,128,255,181,158,128,255,181,157,128,255,180,156,127,255,179,156,127,255,179,155,126,255,180,157,127,255,181,158,128,255, +186,163,132,255,197,176,143,255,210,192,163,255,219,206,184,255,223,212,194,255,222,210,191,255,211,195,167,255,196,175,141,255, +189,167,135,255,195,173,141,255,199,178,144,255,200,180,147,255,203,183,152,255,193,173,141,255,200,184,157,255,216,204,182,255, +162,140,117,255,106, 91, 83,255,102, 90, 83,255,114, 96, 87,255,116, 97, 86,255, 96, 77, 66,255, 85, 63, 55,255, 83, 64, 56,255, + 99, 74, 63,255,158,133,108,255,133,107, 89,255, 81, 63, 55,255, 79, 62, 54,255,129,102, 85,255,159,134,110,255,135,108, 89,255, +128,100, 83,255,125, 97, 81,255,121, 94, 79,255,124, 98, 82,255, 69, 55, 48,255, 86, 66, 57,255,137,109, 91,255,131,104, 85,255, +126, 98, 82,255,166,142,115,255,198,177,146,255,213,198,172,255,213,199,174,255,209,192,167,255,170,148,123,255,106, 83, 70,255, + 89, 67, 57,255,120, 92, 77,255,123, 96, 80,255,134,108, 89,255,174,150,122,255,117, 90, 76,255,166,142,117,255,212,197,173,255, +215,202,180,255,189,168,139,255,179,157,128,255,181,161,133,255,166,142,116,255,154,129,106,255,137,113, 94,255,114, 92, 78,255, + 94, 79, 70,255, 93, 82, 74,255, 98, 85, 78,255, 95, 82, 74,255, 93, 82, 72,255, 98, 85, 77,255, 90, 78, 69,255, 84, 71, 63,255, + 90, 83, 77,255, 61, 61, 61,255, 60, 60, 61,255,128,116,100,255,190,167,135,255,188,166,134,255,188,165,134,255,187,165,134,255, +187,164,133,255,186,164,133,255,186,163,132,255,185,163,132,255,185,162,132,255,185,162,131,255,184,161,131,255,184,160,130,255, +183,160,130,255,183,159,129,255,182,159,129,255,182,158,129,255,181,157,128,255,181,157,128,255,180,157,127,255,181,158,128,255, +183,160,129,255,189,166,135,255,199,178,145,255,210,192,163,255,218,205,182,255,221,210,190,255,212,196,169,255,195,172,140,255, +191,169,137,255,198,177,143,255,199,177,144,255,196,174,141,255,194,172,139,255,180,158,127,255,192,173,145,255,209,193,166,255, +160,137,114,255,143,120,103,255,158,135,113,255,163,139,117,255,168,144,119,255,134,108, 89,255, 84, 62, 54,255, 68, 58, 50,255, + 81, 70, 62,255,140,115, 95,255,142,115, 95,255,112, 85, 72,255,104, 77, 67,255,139,113, 94,255,154,128,104,255,128,100, 83,255, +129,101, 83,255,135,109, 90,255,123, 98, 81,255,123, 98, 82,255, 89, 70, 60,255, 63, 50, 45,255,115, 89, 75,255,135,107, 89,255, +118, 89, 75,255,148,122,100,255,194,172,142,255,219,205,183,255,226,217,200,255,228,219,204,255,222,210,189,255,188,166,139,255, +135,109, 89,255,132,104, 86,255,113, 86, 73,255,137,112, 93,255,170,146,118,255,101, 77, 67,255,165,141,115,255,199,180,151,255, +192,173,144,255,181,160,131,255,214,200,178,255,218,204,181,255,203,183,151,255,190,167,136,255,179,156,128,255,172,148,123,255, +163,140,118,255,148,127,107,255,139,123,107,255,139,120,105,255,136,114,100,255,128,106, 92,255,116, 91, 76,255,119,103, 95,255, +122,110, 95,255, 60, 60, 61,255, 60, 60, 61,255,128,116,100,255,190,168,136,255,189,167,135,255,189,166,135,255,188,166,134,255, +188,165,134,255,187,165,133,255,187,164,133,255,186,164,132,255,186,163,132,255,186,163,132,255,185,162,131,255,184,161,131,255, +184,161,130,255,183,160,130,255,183,160,130,255,182,159,129,255,182,159,129,255,181,158,128,255,181,157,128,255,180,157,127,255, +181,158,128,255,184,161,130,255,190,167,135,255,199,178,145,255,211,194,166,255,221,209,188,255,218,206,185,255,201,181,150,255, +201,181,148,255,206,187,156,255,202,182,150,255,195,174,141,255,191,169,137,255,181,158,128,255,194,173,142,255,197,176,144,255, +175,151,122,255,185,163,133,255,208,190,160,255,206,189,161,255,205,187,157,255,166,142,116,255, 92, 70, 60,255, 72, 60, 52,255, + 74, 64, 56,255,100, 77, 65,255,125, 96, 80,255,129,101, 84,255,129,101, 84,255,164,140,114,255,159,134,109,255,148,122,100,255, +174,150,122,255,191,170,139,255,175,152,123,255,167,144,117,255,149,125,102,255, 83, 65, 57,255,104, 80, 67,255,143,116, 96,255, +125, 97, 81,255,122, 93, 78,255,163,138,113,255,206,188,160,255,224,214,196,255,229,223,208,255,230,223,210,255,219,209,188,255, +180,157,128,255,156,131,107,255,120, 93, 78,255,120, 93, 78,255,135,109, 90,255, 94, 76, 68,255,144,117, 96,255,155,129,105,255, +148,122,100,255,193,173,143,255,214,200,174,255,216,201,177,255,217,203,179,255,218,206,184,255,220,208,187,255,222,211,193,255, +225,216,198,255,227,218,201,255,227,217,200,255,219,208,189,255,201,187,167,255,174,157,136,255,130,110, 92,255,126,110, 96,255, +137,127,110,255, 60, 60, 60,255, 60, 60, 61,255,129,117,100,255,192,169,137,255,190,168,136,255,190,167,135,255,189,167,135,255, +189,166,135,255,188,166,134,255,188,165,134,255,187,164,133,255,187,164,133,255,186,164,132,255,186,163,132,255,185,163,132,255, +185,162,131,255,184,161,131,255,185,162,130,255,183,160,130,255,183,160,129,255,182,159,129,255,181,158,128,255,181,158,128,255, +181,157,128,255,183,159,129,255,184,162,131,255,189,168,136,255,200,180,147,255,214,199,174,255,224,215,198,255,214,201,179,255, +210,194,168,255,220,208,187,255,211,195,170,255,197,176,144,255,189,167,136,255,189,168,135,255,198,178,145,255,202,183,150,255, +190,169,139,255,204,187,162,255,224,215,198,255,223,214,196,255,226,218,202,255,215,203,182,255,138,113, 93,255, 80, 64, 55,255, + 77, 62, 54,255,106, 79, 67,255,121, 92, 77,255,124, 96, 80,255,112, 83, 70,255,132,105, 88,255,118, 91, 76,255,108, 83, 70,255, +156,131,107,255,174,151,124,255,188,165,134,255,197,176,143,255,176,152,124,255, 94, 75, 65,255,110, 82, 70,255,142,115, 94,255, +133,106, 88,255,111, 82, 69,255,135,108, 89,255,185,163,134,255,218,204,182,255,227,218,202,255,228,221,208,255,223,213,196,255, +201,183,155,255,173,149,121,255,136,109, 90,255,120, 92, 77,255,117, 91, 77,255, 93, 78, 71,255,138,109, 90,255,127,100, 83,255, +116, 89, 75,255,174,150,122,255,208,191,162,255,222,212,194,255,223,213,196,255,223,214,198,255,227,220,206,255,230,224,212,255, +231,226,214,255,232,227,215,255,232,227,215,255,232,226,213,255,230,224,209,255,226,217,201,255,214,201,177,255,171,149,124,255, +130,119,104,255, 60, 60, 61,255, 60, 60, 61,255,129,118,101,255,193,171,138,255,192,170,137,255,191,169,137,255,191,169,137,255, +190,168,136,255,190,167,136,255,189,167,135,255,189,166,135,255,189,166,135,255,188,165,134,255,187,164,134,255,187,164,133,255, +186,163,133,255,186,163,132,255,185,162,132,255,185,162,131,255,184,161,131,255,184,160,130,255,183,160,130,255,183,159,129,255, +182,159,129,255,181,158,129,255,183,160,129,255,184,161,131,255,190,168,136,255,202,182,151,255,217,204,181,255,226,218,203,255, +211,200,181,255,220,212,197,255,221,211,193,255,204,187,158,255,197,177,145,255,208,192,166,255,218,206,184,255,219,207,185,255, +199,179,149,255,217,206,189,255,223,214,198,255,224,215,200,255,227,220,206,255,220,211,193,255,143,118, 97,255, 83, 65, 56,255, + 82, 63, 55,255,116, 87, 73,255,134,107, 89,255,150,125,102,255,139,112, 93,255,161,136,111,255,149,125,103,255, 82, 68, 58,255, + 78, 63, 55,255,117, 92, 76,255,164,139,113,255,181,158,128,255,161,136,111,255, 89, 70, 60,255,102, 78, 66,255,144,117, 96,255, +141,114, 94,255,112, 83, 70,255,107, 80, 68,255,141,114, 94,255,183,161,132,255,202,183,156,255,211,196,173,255,219,206,187,255, +212,198,173,255,191,171,140,255,179,156,126,255,174,150,122,255,159,134,110,255, 87, 73, 65,255,115, 88, 73,255,127, 99, 82,255, + 93, 68, 59,255,137,110, 91,255,180,158,131,255,203,185,158,255,224,216,200,255,231,226,214,255,232,227,215,255,232,227,215,255, +232,227,215,255,232,227,215,255,232,227,215,255,231,225,213,255,227,220,207,255,220,210,194,255,192,177,158,255,173,151,124,255, +122,111, 95,255, 60, 60, 61,255, 60, 60, 61,255,130,118,101,255,194,172,139,255,192,170,138,255,192,170,138,255,192,169,137,255, +191,169,137,255,191,169,136,255,190,168,136,255,190,167,135,255,189,167,135,255,189,166,135,255,188,166,134,255,188,165,134,255, +187,164,133,255,187,164,133,255,186,163,132,255,186,163,132,255,185,162,131,255,184,161,131,255,184,161,130,255,183,160,130,255, +183,160,130,255,182,159,129,255,181,158,128,255,182,160,130,255,185,162,131,255,191,169,137,255,202,183,152,255,216,202,179,255, +226,217,202,255,213,204,188,255,211,199,179,255,208,192,165,255,209,194,168,255,222,214,196,255,230,223,210,255,223,212,194,255, +204,186,156,255,226,217,202,255,225,217,201,255,221,210,192,255,214,202,180,255,208,192,167,255,142,117, 97,255,100, 75, 64,255, +102, 77, 65,255,107, 78, 67,255,122, 94, 79,255,164,139,113,255,151,126,103,255,161,136,111,255,171,148,122,255,153,130,107,255, + 98, 76, 65,255,113, 85, 71,255,175,151,123,255,192,172,143,255,172,149,121,255,101, 80, 68,255, 92, 69, 59,255,144,117, 96,255, +145,119, 97,255,116, 88, 74,255,100, 71, 62,255,104, 76, 65,255,139,112, 92,255,164,139,112,255,173,148,121,255,196,176,145,255, +204,186,156,255,196,176,143,255,193,172,139,255,184,161,130,255,169,145,118,255, 91, 71, 61,255,103, 78, 66,255,147,121, 98,255, +126, 98, 82,255,104, 77, 65,255,135,108, 89,255,195,176,148,255,228,221,206,255,232,226,213,255,232,226,214,255,232,227,216,255, +232,227,215,255,227,220,206,255,217,206,188,255,209,197,176,255,206,191,168,255,194,176,149,255,146,123,105,255,149,123,101,255, +110, 96, 84,255, 60, 61, 61,255, 60, 60, 61,255,131,119,102,255,196,173,140,255,193,171,139,255,194,172,139,255,193,171,138,255, +192,170,138,255,192,170,137,255,191,169,138,255,190,168,136,255,190,169,137,255,190,167,136,255,189,167,135,255,189,166,135,255, +188,165,134,255,188,165,134,255,187,165,133,255,186,164,132,255,186,163,132,255,185,162,133,255,185,162,131,255,184,161,130,255, +184,161,131,255,183,160,129,255,182,159,130,255,182,159,129,255,183,160,130,255,184,162,131,255,190,168,136,255,197,176,144,255, +211,195,168,255,225,216,199,255,228,221,208,255,224,216,200,255,224,215,200,255,228,222,209,255,231,225,213,255,223,214,198,255, +213,198,173,255,226,217,202,255,224,214,197,255,225,217,200,255,214,202,179,255,201,184,156,255,131,104, 86,255,126, 99, 82,255, +162,138,113,255,158,134,109,255,116, 88, 74,255,109, 84, 71,255,122, 95, 80,255,117, 96, 83,255,109, 91, 80,255,111, 88, 73,255, +105, 76, 66,255,101, 74, 63,255,175,153,127,255,220,208,186,255,198,179,152,255,117, 92, 76,255, 93, 68, 58,255,146,120, 98,255, +154,128,105,255,126, 98, 81,255,126, 97, 81,255,122, 93, 78,255,136,107, 89,255,165,141,115,255,163,139,113,255,164,139,114,255, +182,158,129,255,191,170,137,255,190,168,136,255,166,142,115,255,150,123,101,255, 99, 75, 63,255,106, 81, 69,255,152,126,103,255, +155,130,105,255,105, 82, 71,255,123, 97, 81,255,176,153,125,255,216,202,180,255,228,220,206,255,230,224,212,255,224,216,200,255, +209,196,176,255,209,195,173,255,217,207,188,255,217,206,187,255,193,177,153,255,147,125,107,255,126, 98, 82,255,136,108, 89,255, +100, 86, 76,255, 61, 61, 61,255, 60, 60, 61,255,131,120,103,255,197,175,142,255,195,173,140,255,195,173,140,255,194,172,140,255, +194,172,139,255,193,171,139,255,193,171,138,255,192,170,138,255,192,170,138,255,191,169,137,255,191,169,136,255,190,168,136,255, +190,168,136,255,189,167,135,255,189,166,135,255,188,165,134,255,187,165,133,255,187,164,133,255,187,164,133,255,186,163,132,255, +185,162,132,255,185,162,131,255,183,160,130,255,183,160,130,255,183,160,129,255,183,160,130,255,184,161,131,255,187,164,133,255, +194,172,139,255,206,188,158,255,220,208,187,255,228,220,205,255,230,225,211,255,231,225,213,255,231,224,211,255,224,216,199,255, +216,203,180,255,219,207,186,255,224,213,196,255,222,213,195,255,211,197,171,255,178,157,130,255,110, 81, 68,255,140,114, 93,255, +200,182,151,255,212,198,173,255,176,156,133,255, 99, 86, 77,255, 80, 71, 64,255,102, 86, 75,255,131,108, 90,255,132,109, 93,255, +134,108, 89,255,121, 95, 78,255,171,150,127,255,223,213,196,255,204,189,163,255,150,124,101,255,109, 82, 70,255,130,104, 86,255, +125,101, 86,255, 80, 64, 56,255,111, 85, 72,255,116, 91, 75,255,113, 88, 74,255,145,119, 97,255,145,119, 97,255,126, 99, 83,255, +153,128,104,255,184,161,131,255,195,174,141,255,177,153,124,255,148,122,100,255, 98, 77, 66,255,101, 78, 67,255,150,124,101,255, +166,141,115,255,116, 96, 83,255, 95, 72, 63,255,138,112, 92,255,172,148,120,255,188,168,141,255,180,162,139,255,198,182,156,255, +215,204,184,255,211,199,179,255,193,176,152,255,154,134,111,255,106, 83, 72,255,116, 87, 73,255,129,101, 84,255,120, 91, 76,255, + 87, 72, 66,255, 61, 61, 61,255, 60, 60, 61,255,132,121,103,255,197,176,142,255,196,174,141,255,196,174,141,255,195,173,140,255, +194,173,140,255,194,172,139,255,194,172,139,255,193,171,139,255,193,171,138,255,192,170,138,255,192,170,138,255,191,169,137,255, +191,168,136,255,190,168,136,255,189,167,135,255,189,167,135,255,189,166,135,255,188,165,134,255,188,165,134,255,187,164,133,255, +186,163,132,255,185,162,131,255,185,162,131,255,184,161,131,255,183,160,130,255,183,160,130,255,183,160,130,255,183,160,130,255, +186,163,132,255,193,172,139,255,205,185,154,255,215,200,176,255,222,211,191,255,226,217,201,255,229,221,206,255,227,219,204,255, +219,206,186,255,218,205,184,255,228,221,207,255,218,207,187,255,203,185,155,255,152,128,104,255,108, 79, 68,255,136,110, 90,255, +200,181,153,255,225,218,202,255,226,218,202,255,199,190,175,255,187,178,162,255,153,132,111,255,124, 97, 81,255,143,117, 96,255, +171,148,121,255,150,125,103,255,200,184,161,255,225,217,202,255,205,188,161,255,194,174,143,255,180,158,130,255,171,147,120,255, +152,128,108,255, 94, 81, 72,255, 71, 59, 52,255, 82, 72, 63,255, 77, 69, 62,255, 90, 77, 70,255, 90, 72, 61,255, 91, 66, 57,255, +120, 92, 77,255,172,148,119,255,195,173,141,255,192,170,138,255,178,154,125,255,114, 91, 77,255, 98, 75, 64,255,140,112, 92,255, +152,125,103,255,100, 81, 69,255, 63, 50, 45,255, 78, 61, 53,255,134,108, 89,255,180,157,128,255,154,133,113,255,171,149,125,255, +160,138,116,255,172,150,122,255,137,112, 93,255, 89, 70, 60,255, 92, 68, 58,255,125, 97, 80,255,127, 99, 82,255,104, 76, 65,255, + 83, 69, 63,255, 61, 61, 61,255, 60, 60, 61,255,132,121,104,255,199,178,143,255,197,175,143,255,196,175,142,255,197,174,141,255, +195,175,142,255,195,174,141,255,195,173,140,255,195,173,140,255,194,172,139,255,194,172,139,255,193,171,139,255,193,171,138,255, +192,170,138,255,192,169,137,255,192,170,137,255,190,168,136,255,190,167,136,255,189,167,135,255,189,166,135,255,188,166,134,255, +188,165,134,255,186,163,132,255,186,163,133,255,186,163,132,255,184,161,131,255,184,161,130,255,183,160,131,255,183,160,130,255, +184,161,131,255,188,165,134,255,196,174,142,255,206,187,156,255,215,200,174,255,220,208,188,255,226,216,200,255,229,222,208,255, +226,218,202,255,220,210,192,255,222,213,196,255,208,193,168,255,187,166,135,255,151,127,104,255,145,120, 99,255,167,143,117,255, +173,150,122,255,208,193,167,255,222,214,196,255,224,216,201,255,222,212,195,255,195,178,151,255,118, 92, 77,255,114, 90, 75,255, +167,144,117,255,177,154,126,255,215,203,180,255,220,210,191,255,208,193,166,255,209,193,167,255,209,192,164,255,187,164,133,255, +160,137,114,255,125,104, 92,255, 75, 67, 61,255, 74, 67, 59,255, 83, 76, 69,255, 81, 74, 65,255, 70, 63, 57,255, 68, 55, 50,255, + 90, 67, 58,255,144,118, 97,255,168,144,117,255,175,151,123,255,171,146,119,255, 94, 73, 63,255, 96, 69, 60,255,122, 94, 78,255, +141,114, 94,255,112, 89, 75,255, 75, 59, 52,255, 85, 67, 58,255, 95, 76, 66,255,168,143,117,255,116, 91, 77,255,106, 80, 68,255, +124, 95, 80,255,149,124,101,255,120, 92, 78,255, 85, 65, 56,255, 93, 70, 60,255,126, 97, 81,255,124, 96, 80,255,103, 75, 64,255, + 86, 71, 65,255, 61, 61, 61,255, 60, 60, 60,255,133,122,104,255,200,178,145,255,198,177,144,255,198,176,143,255,197,176,143,255, +197,176,143,255,197,176,142,255,197,175,142,255,197,175,142,255,196,174,141,255,196,174,141,255,195,174,141,255,194,173,140,255, +194,172,140,255,194,172,139,255,193,171,139,255,193,171,138,255,192,170,138,255,191,169,137,255,191,168,137,255,189,167,135,255, +189,166,135,255,188,166,134,255,187,164,133,255,186,164,133,255,186,163,132,255,185,162,131,255,185,162,131,255,184,161,131,255, +184,161,130,255,186,163,132,255,191,168,136,255,200,178,145,255,208,191,162,255,216,201,178,255,222,211,191,255,227,219,204,255, +230,225,212,255,227,221,208,255,215,203,182,255,199,182,153,255,190,171,141,255,183,162,132,255,187,166,135,255,203,185,156,255, +182,160,130,255,188,167,135,255,210,196,171,255,227,221,207,255,227,219,206,255,211,197,173,255,144,119, 98,255, 96, 73, 63,255, +157,133,109,255,194,173,141,255,206,189,159,255,207,190,161,255,206,187,157,255,207,189,160,255,213,196,170,255,200,182,151,255, +182,159,131,255,175,153,127,255,162,142,121,255,135,115, 97,255,122,103, 87,255,125,102, 86,255,100, 78, 67,255, 75, 66, 62,255, + 86, 69, 59,255,147,121, 99,255,164,139,114,255,163,138,112,255,146,119, 97,255, 82, 62, 54,255, 87, 63, 55,255,110, 83, 71,255, +142,115, 94,255,147,121, 99,255,116, 99, 91,255,134,106, 87,255,111, 91, 80,255,115, 92, 78,255,109, 85, 71,255,102, 81, 72,255, +133,106, 87,255,152,126,104,255,133,106, 87,255, 93, 71, 60,255, 95, 69, 60,255,116, 87, 73,255,111, 83, 70,255,101, 73, 63,255, + 91, 76, 69,255, 61, 61, 61,255, 60, 60, 60,255,134,123,105,255,201,179,146,255,199,178,144,255,199,178,145,255,199,178,144,255, +198,177,144,255,198,177,144,255,198,177,143,255,198,177,143,255,198,177,143,255,198,176,143,255,197,176,143,255,197,175,142,255, +196,175,142,255,196,174,142,255,195,173,141,255,195,173,140,255,194,172,140,255,193,171,139,255,193,170,138,255,192,170,138,255, +191,168,136,255,190,168,136,255,188,166,135,255,188,165,134,255,187,164,133,255,187,164,133,255,185,163,132,255,185,162,131,255, +184,161,131,255,185,163,132,255,188,165,134,255,194,172,139,255,202,182,150,255,210,193,165,255,217,203,180,255,222,211,193,255, +227,218,203,255,229,221,208,255,225,217,202,255,218,207,188,255,214,201,178,255,208,193,166,255,198,178,146,255,198,178,147,255, +187,166,135,255,173,150,122,255,201,182,154,255,209,193,166,255,210,194,167,255,190,170,143,255,155,130,106,255,115, 87, 73,255, +151,126,103,255,193,172,140,255,202,182,150,255,204,185,154,255,206,189,159,255,204,184,152,255,210,193,165,255,223,211,193,255, +216,202,181,255,215,202,179,255,219,206,185,255,214,200,176,255,200,181,154,255,185,162,133,255,156,130,105,255, 98, 80, 72,255, +118,102, 93,255,166,140,114,255,170,145,118,255,168,143,116,255,144,117, 96,255, 92, 68, 59,255,110, 84, 72,255,155,131,107,255, +182,161,135,255,194,175,146,255,138,118,102,255,116, 88, 74,255,119, 96, 80,255, 83, 70, 63,255, 88, 69, 60,255,104, 84, 75,255, +133,105, 87,255,127,100, 83,255,108, 82, 69,255, 89, 66, 58,255, 93, 67, 58,255, 98, 71, 62,255,102, 74, 63,255, 90, 65, 57,255, + 91, 76, 69,255, 61, 61, 61,255, 60, 60, 60,255,134,123,106,255,203,182,147,255,200,179,147,255,201,180,147,255,201,180,147,255, +201,180,146,255,201,180,145,255,201,180,146,255,199,178,146,255,200,179,146,255,200,179,146,255,200,179,144,255,199,178,145,255, +199,178,145,255,198,176,143,255,198,177,143,255,197,176,143,255,196,174,141,255,196,174,141,255,194,173,140,255,193,172,139,255, +193,171,139,255,192,169,137,255,190,168,137,255,190,168,136,255,188,166,134,255,188,165,134,255,187,164,133,255,186,163,133,255, +185,162,132,255,185,162,131,255,187,164,133,255,190,168,136,255,196,175,142,255,204,184,151,255,210,194,166,255,216,202,178,255, +220,209,190,255,223,213,196,255,223,213,195,255,220,209,189,255,218,205,184,255,216,202,180,255,201,182,153,255,183,161,130,255, +174,151,122,255,132,105, 87,255,128,102, 85,255,173,150,123,255,202,184,157,255,150,125,104,255,174,152,124,255,157,132,108,255, +153,127,104,255,186,163,131,255,194,172,140,255,202,181,149,255,209,192,163,255,204,185,155,255,188,165,133,255,209,194,169,255, +220,208,187,255,207,190,162,255,208,191,163,255,214,199,175,255,218,205,183,255,214,198,173,255,191,169,139,255,130,106, 90,255, +146,125,106,255,166,142,115,255,160,135,110,255,180,157,127,255,171,146,118,255,107, 81, 69,255,145,120, 98,255,191,171,139,255, +208,192,164,255,206,189,160,255,142,116, 96,255,137,110, 91,255,171,146,119,255,144,119, 97,255, 81, 64, 56,255,115, 92, 80,255, +141,114, 93,255,123, 94, 79,255, 84, 63, 55,255, 74, 58, 50,255, 98, 70, 61,255,101, 72, 63,255,116, 86, 74,255,103, 76, 65,255, + 83, 69, 63,255, 61, 61, 61,255, 60, 60, 60,255,135,124,107,255,203,183,149,255,202,181,148,255,202,181,148,255,202,181,148,255, +202,181,148,255,202,181,148,255,202,181,148,255,202,181,148,255,201,180,147,255,201,180,147,255,201,180,147,255,201,180,146,255, +200,179,146,255,200,179,145,255,199,178,145,255,199,177,144,255,198,177,144,255,197,176,143,255,197,175,142,255,196,174,141,255, +194,172,140,255,193,171,139,255,193,171,138,255,191,169,137,255,190,168,136,255,189,167,136,255,188,166,134,255,188,165,134,255, +186,163,132,255,186,163,132,255,187,164,133,255,188,165,134,255,192,169,138,255,197,176,143,255,203,183,152,255,209,192,165,255, +214,200,175,255,217,204,182,255,218,205,184,255,218,205,184,255,218,205,184,255,215,201,177,255,197,176,146,255,160,134,110,255, +140,114, 94,255,121, 97, 83,255, 87, 67, 58,255,147,124,105,255,192,175,150,255,158,133,109,255,199,178,146,255,160,136,111,255, +146,120, 98,255,176,152,124,255,187,165,134,255,199,179,145,255,210,192,164,255,214,199,174,255,202,183,154,255,201,182,151,255, +201,181,151,255,183,160,130,255,183,160,130,255,188,166,135,255,192,171,141,255,192,171,142,255,185,162,132,255,124,103, 88,255, +144,119, 97,255,161,136,111,255,156,130,106,255,179,155,126,255,174,151,124,255,131,105, 88,255,157,132,107,255,175,151,122,255, +189,166,134,255,195,174,141,255,167,143,117,255,158,132,108,255,179,157,127,255,177,154,124,255,112, 87, 74,255,131,105, 87,255, +152,127,104,255,136,108, 90,255,104, 79, 67,255, 73, 63, 57,255,108, 81, 69,255,115, 86, 72,255,130,102, 84,255,129,101, 84,255, + 85, 71, 64,255, 61, 61, 61,255, 60, 60, 60,255,135,125,108,255,205,185,152,255,203,183,150,255,203,183,150,255,203,183,150,255, +203,183,150,255,203,183,150,255,203,183,150,255,203,183,150,255,203,183,150,255,203,182,149,255,202,182,149,255,202,182,149,255, +202,182,149,255,202,181,148,255,201,181,148,255,201,180,147,255,200,179,146,255,199,178,145,255,199,178,145,255,198,177,143,255, +197,175,142,255,196,175,141,255,195,174,141,255,194,172,139,255,192,170,138,255,191,169,137,255,190,167,136,255,189,167,135,255, +188,165,134,255,187,164,133,255,186,163,132,255,186,164,133,255,188,166,135,255,191,169,137,255,196,174,141,255,200,179,147,255, +205,187,156,255,209,192,163,255,212,195,169,255,213,198,173,255,215,200,175,255,209,192,162,255,184,162,131,255,150,125,104,255, +127,101, 86,255,124,102, 87,255,107, 85, 75,255,139,114, 95,255,186,164,133,255,176,153,124,255,203,184,152,255,173,150,123,255, +144,118, 96,255,162,137,112,255,177,153,124,255,194,173,140,255,207,187,157,255,214,199,172,255,202,183,153,255,187,166,134,255, +180,157,128,255,175,151,123,255,178,155,125,255,179,156,127,255,178,154,125,255,167,143,115,255,146,119, 98,255, 94, 83, 77,255, + 81, 64, 55,255,143,120,100,255,199,183,159,255,195,178,152,255,150,126,104,255,178,156,126,255,165,140,114,255,167,143,116,255, +181,159,129,255,197,177,144,255,196,176,143,255,189,167,135,255,185,163,132,255,183,160,130,255,109, 90, 78,255,120, 93, 77,255, +125, 98, 82,255,112, 86, 73,255,113, 86, 72,255, 98, 79, 69,255,101, 79, 71,255, 98, 71, 60,255,128,101, 84,255,151,126,103,255, +104, 90, 79,255, 60, 61, 61,255, 60, 60, 60,255,136,126,109,255,206,187,153,255,205,185,153,255,205,185,153,255,205,185,153,255, +205,185,153,255,205,185,153,255,205,185,153,255,204,185,152,255,203,185,152,255,204,184,152,255,204,184,152,255,204,184,151,255, +204,184,151,255,204,183,151,255,203,183,150,255,203,183,150,255,202,182,148,255,201,181,147,255,201,181,147,255,200,179,146,255, +199,178,145,255,198,177,144,255,197,176,143,255,196,174,142,255,194,172,140,255,193,171,139,255,192,170,138,255,190,168,136,255, +189,167,135,255,188,166,135,255,187,164,133,255,186,163,132,255,186,164,133,255,188,166,135,255,190,168,136,255,193,172,139,255, +197,175,143,255,201,181,148,255,204,185,154,255,208,190,161,255,210,194,165,255,203,182,150,255,181,158,129,255,162,139,115,255, +149,125,103,255,141,115, 95,255,102, 76, 66,255,136,110, 91,255,168,143,116,255,163,137,112,255,183,161,132,255,185,163,133,255, +163,139,114,255,160,135,110,255,163,137,112,255,175,152,122,255,177,154,124,255,183,161,132,255,195,173,141,255,170,146,120,255, +159,135,113,255,171,147,121,255,189,167,136,255,203,183,152,255,206,188,159,255,189,168,139,255,134,109, 90,255, 88, 79, 73,255, + 61, 50, 46,255,140,127,113,255,225,218,204,255,191,176,156,255,155,131,106,255,197,176,144,255,180,157,128,255,140,112, 93,255, +143,116, 96,255,163,139,113,255,158,134,110,255,173,151,122,255,195,175,143,255,162,141,117,255, 89, 69, 61,255,119, 91, 76,255, +125, 98, 81,255,108, 83, 70,255, 95, 73, 62,255,113, 86, 72,255,111, 92, 82,255, 85, 72, 68,255,115, 89, 76,255,126, 99, 81,255, + 98, 84, 74,255, 61, 61, 61,255, 60, 60, 60,255,136,127,110,255,207,188,156,255,206,187,155,255,206,187,155,255,206,186,154,255, +206,186,154,255,206,186,154,255,206,186,154,255,205,185,154,255,205,186,154,255,205,185,153,255,205,185,153,255,204,185,153,255, +205,185,153,255,204,184,152,255,204,184,152,255,204,184,151,255,203,183,150,255,203,182,149,255,203,182,149,255,201,181,148,255, +200,180,146,255,200,179,146,255,199,178,145,255,198,177,143,255,197,175,142,255,195,173,141,255,193,172,139,255,192,170,138,255, +191,169,137,255,190,167,136,255,188,166,135,255,188,165,134,255,187,164,133,255,187,165,133,255,188,165,134,255,189,167,135,255, +192,170,137,255,194,173,140,255,199,178,145,255,205,186,155,255,209,192,162,255,203,184,151,255,193,171,138,255,191,169,138,255, +183,160,131,255,109, 84, 71,255, 92, 68, 58,255,125, 97, 81,255,130,103, 85,255,123, 96, 80,255,119, 92, 77,255,136,109, 90,255, +153,127,104,255,147,121, 99,255,143,116, 96,255,141,115, 96,255,137,111, 93,255,128,101, 84,255,185,162,133,255,193,173,142,255, +175,152,124,255,176,153,125,255,192,171,139,255,212,195,167,255,223,213,195,255,211,197,174,255,140,114, 94,255, 90, 70, 60,255, + 68, 53, 48,255, 98, 85, 76,255,183,165,142,255,181,159,129,255,172,148,120,255,182,159,129,255,187,165,134,255,174,151,125,255, +157,133,110,255,123, 95, 79,255, 87, 63, 55,255,106, 84, 70,255,122, 98, 81,255, 95, 72, 62,255, 65, 51, 46,255, 91, 70, 60,255, +129,103, 85,255,145,118, 97,255,127,102, 84,255,108, 80, 67,255,120, 98, 87,255,109, 87, 74,255, 89, 68, 61,255, 87, 64, 56,255, + 73, 62, 58,255, 61, 61, 62,255, 60, 60, 60,255,137,128,112,255,208,189,159,255,207,188,158,255,206,188,157,255,206,187,157,255, +206,187,156,255,206,187,156,255,206,187,156,255,205,186,155,255,205,186,155,255,205,186,155,255,205,186,154,255,205,186,154,255, +204,185,154,255,205,185,154,255,204,185,153,255,204,185,153,255,204,184,152,255,204,184,152,255,203,183,151,255,203,183,150,255, +203,182,149,255,201,181,148,255,201,180,147,255,199,178,145,255,198,177,144,255,197,175,143,255,196,174,141,255,194,173,140,255, +193,171,139,255,191,169,137,255,190,168,136,255,189,166,135,255,188,165,134,255,187,164,133,255,187,164,134,255,188,166,134,255, +189,167,135,255,192,169,138,255,197,175,142,255,204,185,154,255,212,196,170,255,212,196,170,255,211,195,167,255,218,204,182,255, +189,170,144,255, 99, 73, 62,255, 92, 66, 58,255,124, 96, 81,255,131,104, 86,255,115, 88, 74,255, 93, 69, 60,255,104, 77, 66,255, +139,111, 92,255,130,104, 86,255,109, 86, 72,255,110, 87, 74,255,134,108, 89,255,139,111, 92,255,156,131,107,255,201,183,152,255, +206,187,156,255,201,181,150,255,198,176,144,255,200,180,147,255,208,190,162,255,182,161,135,255,125, 98, 81,255,157,132,108,255, +114, 90, 76,255, 66, 55, 50,255, 92, 75, 66,255,173,149,121,255,186,164,133,255,176,153,124,255,161,137,111,255,201,185,160,255, +216,203,181,255,182,160,135,255,117, 92, 77,255, 84, 61, 53,255, 85, 63, 55,255, 78, 58, 51,255, 81, 62, 54,255, 62, 51, 45,255, + 78, 63, 55,255,125,101, 83,255,179,156,126,255,161,135,110,255,113, 91, 77,255,164,140,115,255,125,103, 87,255, 67, 57, 52,255, + 61, 55, 53,255, 61, 62, 62,255, 60, 60, 60,255,138,129,113,255,210,191,161,255,207,190,160,255,208,190,160,255,208,190,159,255, +207,188,158,255,206,189,158,255,207,188,157,255,207,188,157,255,207,188,157,255,207,188,157,255,205,186,156,255,206,187,156,255, +206,187,156,255,206,186,154,255,206,186,155,255,205,186,154,255,205,186,154,255,204,186,154,255,205,185,153,255,203,183,152,255, +204,184,151,255,203,182,150,255,202,182,149,255,201,181,148,255,201,180,147,255,199,178,145,255,198,176,143,255,196,174,141,255, +194,173,140,255,193,171,139,255,191,169,137,255,190,168,136,255,189,167,135,255,189,166,135,255,188,165,134,255,188,165,134,255, +189,167,135,255,191,168,137,255,195,173,140,255,204,184,153,255,215,200,175,255,222,210,190,255,224,215,198,255,230,223,210,255, +205,191,167,255,129,102, 84,255,121, 93, 78,255,147,120, 98,255,152,126,103,255,138,111, 91,255, 97, 73, 62,255,103, 76, 65,255, +157,131,107,255,174,152,126,255,125,107, 93,255,101, 80, 71,255,155,130,107,255,177,155,127,255,119, 94, 78,255,139,115, 96,255, +178,155,128,255,200,181,150,255,210,193,164,255,209,193,164,255,204,186,155,255,163,139,114,255,113, 90, 77,255,198,179,151,255, +175,153,126,255, 95, 75, 64,255, 76, 70, 65,255,169,148,124,255,189,169,139,255,174,152,124,255,172,148,121,255,207,190,163,255, +219,207,188,255,222,213,195,255,201,183,157,255,133,105, 87,255,121, 92, 77,255,111, 85, 72,255,127, 99, 82,255, 94, 72, 62,255, + 67, 54, 48,255, 64, 52, 47,255,139,117, 96,255,192,169,138,255,169,145,118,255,128,105, 87,255,151,125,102,255,132,108, 90,255, + 79, 70, 65,255, 61, 61, 61,255, 60, 60, 60,255,138,129,114,255,211,193,163,255,209,191,162,255,209,191,161,255,209,191,161,255, +208,190,160,255,208,189,159,255,208,189,159,255,207,189,158,255,207,189,158,255,207,188,157,255,207,187,157,255,207,188,157,255, +206,187,156,255,205,186,156,255,205,187,155,255,206,187,155,255,205,186,154,255,205,186,154,255,204,185,154,255,205,185,154,255, +204,185,153,255,204,184,152,255,203,184,151,255,203,182,150,255,202,182,149,255,200,180,147,255,199,179,146,255,198,177,143,255, +196,175,142,255,195,173,140,255,193,171,139,255,192,170,137,255,191,168,137,255,190,167,136,255,189,166,135,255,188,166,134,255, +189,167,135,255,191,169,137,255,194,172,139,255,202,181,149,255,213,197,171,255,223,212,194,255,229,222,208,255,231,226,213,255, +216,204,183,255,180,158,129,255,175,152,124,255,184,162,132,255,183,160,130,255,169,145,118,255,124, 96, 80,255, 98, 71, 62,255, +150,125,102,255,218,206,184,255,215,203,183,255,177,159,136,255,206,191,166,255,180,159,131,255,132,108, 91,255,113, 90, 77,255, +133,110, 95,255,158,134,112,255,181,160,131,255,205,188,161,255,220,208,188,255,185,167,142,255,140,116, 97,255,215,204,187,255, +224,214,197,255,182,162,139,255, 92, 80, 72,255,123,101, 85,255,110, 87, 72,255,113, 92, 81,255,188,167,138,255,214,202,178,255, +218,207,186,255,227,219,204,255,222,209,187,255,156,132,109,255,101, 77, 65,255,153,127,104,255,157,132,107,255,132,104, 86,255, + 87, 67, 57,255, 69, 55, 48,255, 75, 60, 54,255,140,117, 97,255,185,162,132,255,164,139,114,255, 91, 74, 66,255,169,146,119,255, +127,116,101,255, 60, 60, 61,255, 60, 60, 60,255,139,130,115,255,212,194,164,255,209,192,163,255,209,192,163,255,209,192,162,255, +209,191,161,255,208,190,161,255,208,190,160,255,207,189,159,255,207,189,159,255,208,188,158,255,207,188,158,255,206,188,157,255, +207,187,156,255,206,187,156,255,205,186,156,255,205,186,155,255,206,187,155,255,206,187,155,255,205,186,155,255,205,185,154,255, +205,185,154,255,204,185,153,255,204,185,153,255,203,183,152,255,202,182,150,255,202,182,149,255,201,181,147,255,199,179,146,255, +198,177,144,255,196,175,142,255,195,173,141,255,194,172,139,255,192,170,137,255,191,169,137,255,190,168,136,255,189,167,135,255, +189,167,135,255,191,169,137,255,193,172,138,255,198,177,145,255,208,190,161,255,218,205,184,255,225,216,200,255,227,220,206,255, +219,209,191,255,211,197,173,255,213,199,176,255,215,202,178,255,217,202,180,255,204,187,160,255,155,130,106,255,114, 85, 73,255, +129,102, 84,255,186,165,137,255,193,173,143,255,195,175,146,255,210,193,164,255,191,169,137,255,166,142,117,255,136,110, 93,255, +134,109, 94,255,137,114, 99,255,140,117,100,255,144,121,101,255,136,117,101,255,156,139,125,255,201,184,160,255,213,198,175,255, +216,203,183,255,202,185,160,255,146,123,101,255,109, 91, 81,255,104, 81, 68,255,103, 91, 85,255,184,161,132,255,215,202,177,255, +223,213,195,255,225,216,199,255,219,208,189,255,198,182,158,255,128,103, 86,255,160,136,110,255,188,166,135,255,172,148,119,255, +137,111, 91,255, 85, 64, 56,255, 68, 52, 47,255, 67, 54, 48,255, 91, 73, 63,255,115, 92, 76,255, 91, 69, 59,255,137,124,111,255, +146,140,128,255, 60, 60, 60,255, 60, 60, 60,255,139,131,116,255,212,195,167,255,211,193,165,255,210,193,164,255,210,192,164,255, +210,192,163,255,209,192,162,255,208,191,162,255,209,191,161,255,208,190,160,255,207,190,160,255,208,189,159,255,207,189,158,255, +207,189,158,255,207,187,157,255,207,188,157,255,207,188,157,255,206,187,156,255,206,187,156,255,206,187,156,255,206,187,155,255, +205,187,154,255,205,186,154,255,204,186,154,255,205,185,153,255,204,184,151,255,203,183,150,255,202,182,149,255,200,180,147,255, +199,179,146,255,198,177,144,255,196,174,142,255,195,173,141,255,193,171,139,255,192,170,138,255,191,169,137,255,191,168,137,255, +191,168,137,255,191,169,137,255,192,170,138,255,195,174,141,255,202,182,150,255,210,193,165,255,216,202,180,255,220,208,188,255, +218,207,187,255,219,207,188,255,223,214,196,255,226,217,201,255,225,216,199,255,212,198,172,255,177,155,125,255,138,111, 92,255, +118, 88, 75,255,131,105, 85,255,122, 97, 81,255,116, 92, 76,255,170,146,119,255,201,181,147,255,200,179,148,255,182,159,131,255, +164,140,116,255,157,134,112,255,147,123,105,255,127,104, 89,255, 80, 64, 56,255, 95, 85, 79,255,160,137,112,255,173,149,121,255, +156,132,108,255,124, 99, 83,255,159,135,111,255, 99, 79, 68,255,114, 89, 76,255,101, 83, 75,255,169,143,117,255,189,167,136,255, +177,155,127,255,166,144,120,255,195,179,157,255,217,205,187,255,206,192,169,255,189,169,141,255,221,210,191,255,221,209,187,255, +208,191,166,255,166,143,118,255,110, 82, 70,255, 93, 69, 60,255, 68, 54, 48,255, 64, 54, 48,255, 74, 59, 52,255, 83, 63, 55,255, +120,110, 97,255, 60, 60, 61,255, 60, 60, 60,255,139,131,117,255,213,196,168,255,211,194,167,255,211,193,165,255,211,193,165,255, +210,193,164,255,209,192,164,255,209,192,163,255,209,191,162,255,209,191,161,255,208,190,160,255,207,190,159,255,208,189,159,255, +206,188,159,255,206,188,158,255,206,187,157,255,207,187,157,255,207,188,157,255,206,187,156,255,206,187,156,255,206,187,156,255, +206,186,155,255,206,187,154,255,205,186,154,255,205,186,154,255,205,185,153,255,203,184,151,255,203,183,150,255,202,182,149,255, +201,181,148,255,200,179,146,255,198,177,144,255,196,175,142,255,195,173,141,255,194,172,139,255,192,170,138,255,192,170,138,255, +191,169,137,255,191,169,137,255,192,170,137,255,193,171,139,255,196,175,142,255,201,180,148,255,205,186,156,255,208,191,162,255, +211,196,169,255,216,202,180,255,222,212,193,255,226,217,201,255,224,215,198,255,216,204,182,255,193,173,143,255,145,119, 98,255, +111, 82, 70,255,114, 89, 77,255, 99, 81, 71,255, 69, 58, 50,255,106, 85, 72,255,205,189,163,255,219,206,184,255,218,204,182,255, +204,186,157,255,192,171,139,255,183,161,131,255,174,151,124,255,144,121, 99,255, 78, 63, 55,255,121,103, 87,255,181,158,129,255, +171,148,123,255,134,116,103,255,180,165,148,255,136,117,102,255,145,121,101,255,133,111, 96,255,183,161,130,255,186,163,133,255, +151,126,102,255, 99, 76, 64,255, 80, 64, 55,255,132,113, 98,255,172,151,129,255,155,130,108,255,172,152,130,255,198,182,162,255, +210,197,176,255,191,171,144,255,160,135,109,255,149,122,101,255,128,102, 85,255, 95, 74, 63,255, 73, 56, 48,255,113, 93, 81,255, + 99, 87, 79,255, 61, 61, 61,255, 60, 60, 60,255,140,132,118,255,214,197,169,255,211,195,168,255,211,194,167,255,210,194,166,255, +210,193,165,255,210,193,165,255,209,192,163,255,210,191,162,255,209,191,162,255,209,190,161,255,208,190,160,255,207,189,160,255, +207,189,159,255,207,188,158,255,207,188,158,255,207,188,158,255,207,187,156,255,206,187,156,255,205,186,155,255,206,187,156,255, +206,187,156,255,205,186,155,255,206,187,155,255,205,186,154,255,204,185,154,255,205,185,154,255,204,184,152,255,203,183,150,255, +202,182,149,255,201,181,148,255,199,178,145,255,198,177,144,255,196,174,142,255,195,173,141,255,194,172,139,255,192,170,138,255, +192,170,138,255,192,170,137,255,192,170,137,255,192,170,138,255,193,171,139,255,195,174,141,255,198,177,144,255,199,179,146,255, +203,182,150,255,207,189,160,255,213,199,174,255,219,207,187,255,223,213,195,255,222,211,192,255,202,184,154,255,158,133,108,255, +121, 94, 79,255,136,111, 93,255,129,107, 93,255, 77, 62, 54,255, 89, 74, 65,255,203,187,165,255,219,206,186,255,219,207,186,255, +218,205,183,255,211,195,169,255,204,184,152,255,204,184,152,255,206,188,158,255,152,131,109,255,124,110, 99,255,202,190,173,255, +213,202,183,255,207,195,176,255,195,180,160,255,198,182,161,255,181,162,140,255,152,127,105,255,194,173,141,255,197,176,142,255, +184,161,131,255,156,131,108,255,104, 84, 70,255, 64, 52, 47,255, 92, 73, 62,255,122, 95, 79,255,114, 88, 74,255,122, 96, 80,255, +136,110, 91,255,130,103, 86,255,122, 94, 78,255,158,132,107,255,182,158,127,255,167,145,120,255,171,151,130,255,170,147,119,255, + 94, 82, 74,255, 61, 61, 61,255, 60, 60, 60,255,140,132,118,255,214,198,171,255,213,196,169,255,212,196,169,255,212,195,168,255, +211,194,166,255,210,193,165,255,211,194,165,255,209,192,164,255,209,192,163,255,208,192,162,255,208,190,161,255,207,189,161,255, +207,189,160,255,207,189,159,255,208,188,159,255,206,189,157,255,207,188,157,255,206,187,156,255,207,188,157,255,205,186,156,255, +206,186,156,255,206,187,155,255,206,187,156,255,205,186,156,255,205,186,155,255,204,186,155,255,205,185,154,255,204,184,153,255, +203,183,151,255,202,182,150,255,200,180,147,255,199,178,145,255,198,177,144,255,196,174,142,255,195,173,141,255,195,173,140,255, +193,171,139,255,193,171,139,255,192,170,138,255,192,170,138,255,192,170,138,255,193,171,139,255,193,172,139,255,195,173,141,255, +195,174,141,255,200,179,146,255,203,184,154,255,210,193,167,255,218,205,183,255,222,210,190,255,210,193,164,255,184,162,132,255, +150,124,102,255,169,145,118,255,174,153,127,255,122, 99, 85,255,105, 87, 79,255,188,166,136,255,201,181,147,255,207,188,158,255, +212,197,170,255,214,199,174,255,212,196,171,255,211,195,167,255,210,192,163,255,200,181,153,255,120,102, 90,255, 88, 65, 55,255, +162,138,111,255,190,169,139,255,174,150,121,255,166,142,115,255,144,119, 97,255,149,123,100,255,189,166,135,255,183,159,130,255, +179,155,126,255,184,161,130,255,177,154,125,255,130,107, 90,255, 75, 60, 53,255,125,103, 86,255,157,133,111,255,139,114, 95,255, +131,105, 88,255,128,102, 84,255,103, 78, 67,255,176,159,142,255,220,210,194,255,226,219,203,255,219,205,183,255,197,176,147,255, +112, 99, 86,255, 60, 61, 61,255, 60, 60, 60,255,141,132,119,255,214,199,172,255,212,197,171,255,212,196,169,255,211,196,169,255, +211,195,167,255,211,194,166,255,211,194,165,255,210,193,165,255,210,192,164,255,209,192,163,255,208,191,162,255,208,190,161,255, +207,189,161,255,207,189,159,255,208,189,159,255,207,189,158,255,206,188,157,255,207,188,157,255,206,188,157,255,206,187,157,255, +205,187,157,255,206,188,156,255,206,187,156,255,206,187,156,255,206,187,156,255,205,186,155,255,204,186,155,255,204,184,153,255, +203,184,152,255,203,183,151,255,201,181,149,255,201,180,147,255,199,178,145,255,198,177,144,255,196,175,142,255,195,174,141,255, +195,173,140,255,194,172,140,255,193,171,139,255,193,171,139,255,193,171,139,255,192,170,138,255,193,171,139,255,193,171,139,255, +193,171,139,255,195,173,140,255,197,176,143,255,202,182,151,255,212,197,171,255,220,208,188,255,218,205,182,255,210,194,166,255, +186,164,135,255,189,167,137,255,212,198,176,255,154,132,114,255,149,125,104,255,217,203,180,255,213,199,174,255,215,200,176,255, +219,206,186,255,222,210,192,255,221,211,193,255,226,216,200,255,225,214,195,255,175,158,136,255, 91, 77, 66,255, 60, 50, 45,255, + 94, 74, 63,255,154,127,104,255,156,130,106,255,146,120, 98,255,130,103, 85,255,131,103, 86,255,187,164,134,255,194,173,141,255, +183,160,130,255,175,151,122,255,202,184,156,255,219,207,188,255,174,158,140,255,165,149,134,255,203,189,168,255,214,202,181,255, +206,192,173,255,199,184,164,255,196,182,166,255,231,225,213,255,234,228,216,255,235,229,216,255,228,220,203,255,189,171,148,255, +113,101, 88,255, 60, 61, 61,255, 60, 60, 60,255,141,133,120,255,215,200,173,255,213,197,172,255,212,197,171,255,212,196,169,255, +212,195,168,255,211,195,168,255,210,193,166,255,211,193,165,255,210,193,165,255,210,193,163,255,209,191,162,255,208,191,162,255, +208,190,160,255,208,190,160,255,207,189,159,255,208,188,158,255,206,188,158,255,207,188,157,255,207,187,156,255,206,187,156,255, +205,187,157,255,206,187,157,255,206,188,157,255,206,187,156,255,206,187,156,255,205,186,155,255,205,186,155,255,204,184,153,255, +204,185,153,255,203,184,152,255,202,182,150,255,201,181,148,255,200,179,146,255,199,178,145,255,198,177,144,255,196,175,142,255, +195,174,141,255,195,173,141,255,194,173,140,255,194,172,140,255,193,172,139,255,193,171,139,255,192,170,138,255,192,170,138,255, +192,170,138,255,193,172,139,255,195,174,141,255,200,179,146,255,210,192,164,255,220,208,187,255,224,213,196,255,225,215,199,255, +215,201,178,255,188,167,135,255,157,133,110,255,130,103, 85,255,189,170,141,255,225,215,198,255,229,222,208,255,228,221,208,255, +227,221,207,255,225,217,203,255,220,209,192,255,196,187,173,255,121,110, 98,255,107, 84, 71,255, 87, 70, 60,255, 63, 52, 47,255, + 69, 57, 51,255,139,114, 95,255,160,135,110,255,146,120, 98,255,132,105, 86,255,135,108, 88,255,180,158,131,255,222,211,191,255, +219,206,187,255,200,182,157,255,169,146,120,255,218,206,185,255,198,186,170,255,126,100, 85,255,156,131,108,255,207,192,166,255, +226,219,205,255,229,222,209,255,227,220,206,255,221,212,195,255,207,196,180,255,160,143,130,255,118,105, 95,255,122, 98, 85,255, +112, 99, 86,255, 60, 61, 61,255, 60, 60, 60,255,141,133,120,255,215,200,175,255,214,198,172,255,213,198,171,255,212,197,171,255, +213,196,169,255,212,196,169,255,212,195,168,255,211,194,166,255,211,194,166,255,210,193,165,255,209,192,163,255,209,192,163,255, +208,191,162,255,209,191,161,255,208,190,160,255,208,190,160,255,207,189,159,255,207,189,158,255,206,188,158,255,207,187,157,255, +206,188,156,255,206,188,157,255,206,188,157,255,206,187,156,255,206,187,156,255,206,187,156,255,205,186,155,255,205,185,154,255, +204,184,153,255,204,184,152,255,202,182,150,255,202,182,149,255,201,181,148,255,199,179,146,255,199,178,145,255,198,177,144,255, +197,176,143,255,196,175,142,255,196,174,142,255,195,174,141,255,194,173,140,255,194,173,140,255,194,172,139,255,194,172,139,255, +194,172,139,255,194,173,140,255,196,175,142,255,200,180,147,255,208,191,163,255,218,206,186,255,227,218,203,255,231,224,212,255, +225,218,201,255,188,167,138,255,137,110, 91,255,143,117, 96,255,187,165,135,255,210,194,167,255,218,205,183,255,223,212,194,255, +226,218,201,255,227,220,205,255,201,186,163,255,102, 81, 69,255, 67, 52, 46,255,106, 83, 70,255,113, 88, 74,255, 84, 66, 57,255, + 70, 58, 53,255,142,121,103,255,158,133,109,255,144,118, 96,255,122, 94, 78,255,150,125,102,255,142,116, 95,255,197,183,163,255, +228,221,207,255,230,223,210,255,182,163,141,255,142,117, 99,255,100, 75, 62,255, 71, 54, 48,255,102, 79, 67,255,172,149,124,255, +218,205,185,255,226,218,203,255,228,219,204,255,223,212,193,255,173,152,126,255,108, 85, 74,255,101, 76, 64,255, 90, 70, 61,255, +104, 90, 79,255, 61, 61, 61,255, 60, 60, 60,255,141,133,120,255,216,201,176,255,214,198,173,255,213,198,172,255,213,198,172,255, +212,196,170,255,212,196,169,255,211,196,169,255,211,194,167,255,210,194,166,255,211,193,165,255,210,192,164,255,210,192,163,255, +209,192,163,255,208,191,162,255,208,190,161,255,207,189,160,255,208,190,159,255,207,189,159,255,207,189,158,255,207,187,157,255, +206,188,157,255,205,188,156,255,206,188,157,255,206,187,156,255,206,187,155,255,206,187,156,255,205,186,155,255,204,185,154,255, +205,185,153,255,204,185,153,255,203,183,151,255,202,182,150,255,201,181,149,255,200,180,147,255,199,178,145,255,199,178,145,255, +198,177,144,255,197,176,143,255,197,176,143,255,196,175,142,255,196,174,141,255,195,173,141,255,194,173,140,255,194,173,140,255, +194,173,141,255,195,174,141,255,197,176,143,255,201,181,149,255,208,191,163,255,218,205,183,255,226,217,201,255,226,218,204,255, +214,201,178,255,188,167,136,255,171,149,121,255,172,149,121,255,179,155,126,255,187,165,134,255,196,175,144,255,204,184,152,255, +206,187,156,255,205,187,157,255,180,158,129,255,121, 94, 79,255, 87, 64, 56,255,113, 88, 73,255,141,114, 93,255,129,102, 84,255, +100, 77, 65,255,118, 96, 82,255,129,102, 85,255,116, 90, 76,255, 91, 68, 59,255,148,123,101,255,143,117, 96,255,164,142,119,255, +218,207,189,255,208,198,185,255,200,186,167,255,152,126,103,255,118, 92, 77,255, 73, 58, 51,255, 59, 48, 44,255,143,123,105,255, +218,205,183,255,227,218,203,255,227,218,202,255,223,212,192,255,203,185,158,255,142,121,104,255,146,123,105,255, 98, 82, 72,255, + 94, 81, 74,255, 61, 61, 61,255, 60, 60, 60,255,142,134,121,255,217,202,176,255,214,199,174,255,214,199,173,255,214,198,172,255, +213,197,171,255,212,196,170,255,211,195,168,255,211,195,168,255,211,195,167,255,210,193,166,255,211,193,165,255,210,193,164,255, +210,191,163,255,208,192,162,255,209,191,162,255,207,189,160,255,208,190,160,255,207,189,159,255,206,188,158,255,206,188,158,255, +207,187,158,255,205,188,156,255,206,188,157,255,206,187,156,255,206,187,155,255,205,186,155,255,206,187,156,255,204,185,154,255, +205,186,154,255,204,185,153,255,203,183,151,255,202,182,150,255,202,182,150,255,201,180,148,255,200,180,147,255,199,179,146,255, +199,178,145,255,198,177,144,255,198,177,144,255,197,176,143,255,196,175,142,255,195,174,141,255,195,174,141,255,195,173,140,255, +195,173,141,255,196,175,142,255,198,177,144,255,201,181,148,255,206,188,158,255,212,197,172,255,217,204,183,255,215,203,181,255, +208,193,166,255,202,184,153,255,199,179,148,255,189,167,135,255,177,153,124,255,171,147,119,255,177,154,125,255,189,166,135,255, +194,172,139,255,190,168,136,255,173,150,122,255,142,116, 95,255,110, 81, 69,255,134,107, 87,255,185,165,137,255,187,169,146,255, +159,140,125,255, 90, 71, 62,255,136,110, 90,255,111, 86, 72,255, 73, 58, 51,255, 77, 61, 53,255,109, 85, 71,255,158,133,108,255, +134,112, 98,255,139,112, 93,255,183,162,136,255,208,193,169,255,189,169,142,255,144,119, 98,255, 81, 64, 54,255, 90, 76, 65,255, +203,188,166,255,225,216,201,255,225,218,204,255,225,218,203,255,213,202,182,255,160,138,115,255, 96, 74, 64,255, 90, 70, 60,255, + 77, 70, 66,255, 61, 61, 61,255, 60, 60, 60,255,141,134,122,255,217,202,178,255,215,200,176,255,214,200,174,255,215,199,174,255, +214,198,172,255,213,198,171,255,213,197,170,255,212,196,169,255,212,195,168,255,212,195,168,255,210,194,166,255,211,193,165,255, +210,193,164,255,209,191,163,255,209,191,162,255,209,191,162,255,207,189,160,255,208,190,160,255,206,188,158,255,207,188,158,255, +206,187,158,255,207,188,157,255,205,188,157,255,206,187,156,255,206,186,155,255,206,187,156,255,205,186,155,255,205,186,155,255, +205,186,154,255,204,185,153,255,204,184,152,255,203,183,151,255,202,182,150,255,202,181,149,255,201,181,148,255,200,180,147,255, +200,179,146,255,199,178,145,255,199,178,145,255,198,177,144,255,197,176,143,255,197,175,143,255,196,175,142,255,196,175,142,255, +196,175,141,255,196,175,142,255,198,177,144,255,199,179,146,255,202,183,151,255,205,187,157,255,207,190,161,255,207,190,162,255, +207,191,163,255,210,195,168,255,208,190,161,255,193,172,139,255,176,152,124,255,164,140,114,255,163,138,113,255,176,152,124,255, +193,171,139,255,197,176,145,255,188,167,137,255,169,145,118,255,135,108, 90,255,184,166,142,255,228,221,206,255,226,216,200,255, +197,180,155,255, 95, 79, 69,255,154,131,108,255,178,156,129,255,121, 99, 83,255, 66, 54, 48,255, 60, 48, 44,255,114, 93, 80,255, +109, 84, 72,255,143,116, 96,255,178,156,129,255,215,204,184,255,223,214,197,255,222,212,194,255,201,187,165,255,136,118,103,255, +130,110, 93,255,180,159,130,255,189,170,142,255,181,160,131,255,173,150,121,255,178,153,124,255,133,108, 89,255,100, 74, 64,255, + 81, 68, 62,255, 61, 61, 61,255, 60, 60, 60,255,142,135,122,255,217,203,179,255,215,201,176,255,215,200,176,255,214,199,174,255, +214,199,173,255,214,198,172,255,212,198,171,255,213,196,170,255,212,195,169,255,212,195,168,255,211,194,167,255,211,194,166,255, +209,192,164,255,210,192,164,255,209,192,163,255,208,190,161,255,208,190,161,255,208,190,160,255,207,189,159,255,206,188,158,255, +207,188,158,255,206,188,158,255,205,188,156,255,206,187,156,255,205,187,156,255,206,186,155,255,205,186,155,255,205,186,155,255, +205,186,154,255,204,185,153,255,203,184,152,255,203,183,151,255,203,183,151,255,201,181,149,255,201,181,148,255,201,181,148,255, +200,180,147,255,200,179,146,255,199,179,146,255,198,178,145,255,198,177,144,255,197,176,143,255,196,175,142,255,196,175,142,255, +196,175,142,255,196,175,143,255,197,176,143,255,197,176,144,255,199,179,146,255,200,180,148,255,201,182,150,255,203,185,154,255, +209,193,164,255,215,200,177,255,213,196,170,255,199,178,146,255,181,159,129,255,165,141,115,255,157,131,108,255,163,138,113,255, +195,175,145,255,220,207,185,255,211,196,171,255,167,145,120,255,164,141,114,255,214,201,177,255,228,222,208,255,223,214,198,255, +218,207,189,255,170,154,135,255,133,108, 91,255,195,176,151,255,213,197,175,255,150,130,110,255, 67, 54, 47,255, 90, 78, 73,255, +125, 97, 81,255,148,122,100,255,161,136,111,255,175,152,124,255,193,174,147,255,205,189,165,255,217,205,183,255,225,214,195,255, +188,172,152,255,152,130,110,255,176,153,123,255,185,161,131,255,179,155,126,255,175,151,123,255,172,147,120,255,142,117, 96,255, + 87, 74, 67,255, 61, 61, 61,255, 60, 60, 60,255,142,135,122,255,217,203,179,255,216,201,177,255,215,201,176,255,214,200,175,255, +215,200,174,255,214,199,174,255,213,198,172,255,213,197,171,255,212,196,170,255,211,196,169,255,212,194,167,255,211,195,167,255, +210,193,165,255,209,192,164,255,210,191,163,255,208,191,162,255,208,190,161,255,207,189,160,255,207,189,159,255,206,188,158,255, +206,188,158,255,206,188,157,255,205,188,156,255,206,187,156,255,206,187,156,255,205,186,155,255,204,185,154,255,205,186,155,255, +204,186,154,255,205,186,154,255,203,184,152,255,203,183,151,255,203,183,151,255,201,181,149,255,202,181,149,255,201,181,148,255, +201,179,147,255,200,180,147,255,199,179,147,255,198,178,145,255,199,178,145,255,198,177,144,255,196,176,143,255,197,176,142,255, +196,175,143,255,195,174,141,255,196,175,142,255,196,175,142,255,197,176,143,255,197,177,144,255,200,180,147,255,203,184,152,255, +211,195,169,255,219,208,186,255,219,207,185,255,210,193,164,255,195,173,141,255,177,153,125,255,160,135,110,255,150,124,101,255, +160,135,110,255,168,146,121,255,129,106, 91,255,126, 99, 82,255,165,142,115,255,211,196,171,255,224,215,198,255,229,223,210,255, +229,223,209,255,224,215,198,255,179,157,132,255,123, 96, 81,255,181,163,141,255,222,211,192,255,168,148,127,255, 80, 64, 58,255, +146,121,102,255,160,135,110,255,170,146,118,255,174,150,122,255,174,150,122,255,176,152,124,255,180,158,129,255,187,165,135,255, +193,171,140,255,145,125,106,255,182,160,129,255,198,177,145,255,200,179,147,255,197,176,145,255,191,170,139,255,191,168,137,255, +127,116,101,255, 60, 60, 61,255, 60, 60, 60,255,141,134,122,255,217,203,178,255,216,201,176,255,215,200,176,255,214,200,175,255, +215,200,175,255,214,199,174,255,214,198,174,255,214,198,172,255,213,197,171,255,213,196,170,255,211,195,168,255,211,195,167,255, +211,194,166,255,210,193,165,255,210,193,164,255,208,191,162,255,209,190,161,255,208,190,161,255,208,189,159,255,208,189,159,255, +207,188,158,255,206,188,157,255,205,188,156,255,206,187,156,255,206,187,156,255,205,186,155,255,204,185,154,255,205,186,154,255, +205,186,154,255,205,185,153,255,203,184,152,255,203,183,151,255,203,183,151,255,201,181,149,255,201,181,149,255,201,181,149,255, +201,180,147,255,200,180,147,255,200,179,145,255,199,178,145,255,199,178,145,255,198,177,144,255,197,176,143,255,197,176,143,255, +196,175,141,255,196,175,141,255,195,174,141,255,194,173,141,255,194,173,141,255,196,175,142,255,198,178,145,255,202,184,153,255, +212,197,171,255,222,211,192,255,226,216,200,255,222,210,191,255,212,196,169,255,197,176,145,255,176,152,124,255,145,118, 97,255, +117, 89, 74,255,104, 81, 71,255,117, 90, 77,255,137,110, 90,255,170,147,119,255,208,192,164,255,217,206,184,255,225,216,200,255, +228,222,209,255,225,217,203,255,221,211,192,255,181,163,141,255,125,101, 84,255,188,168,143,255,217,205,185,255,156,137,118,255, +153,132,113,255,171,147,119,255,178,155,125,255,191,170,138,255,196,175,145,255,190,169,139,255,183,160,131,255,179,156,125,255, +176,152,123,255,154,129,105,255,155,137,115,255,213,200,176,255,215,202,180,255,214,201,178,255,214,201,176,255,216,202,180,255, +139,131,121,255, 60, 60, 60,255, 60, 60, 60,255,142,134,122,255,217,202,177,255,215,200,175,255,214,200,175,255,215,200,174,255, +214,199,174,255,215,200,175,255,215,199,174,255,214,198,173,255,213,197,171,255,212,197,170,255,212,196,169,255,212,195,168,255, +210,195,166,255,210,193,165,255,209,193,164,255,209,191,162,255,208,191,162,255,208,191,161,255,208,189,159,255,208,189,159,255, +207,188,158,255,206,188,157,255,205,188,156,255,206,187,156,255,205,186,156,255,205,186,155,255,204,185,154,255,205,186,154,255, +204,186,153,255,205,185,153,255,203,184,152,255,203,183,151,255,203,183,151,255,201,181,149,255,201,181,149,255,200,181,149,255, +201,180,147,255,200,180,147,255,200,179,146,255,199,178,145,255,198,177,144,255,199,178,145,255,197,176,143,255,197,176,143,255, +196,175,142,255,195,174,141,255,194,173,140,255,194,172,140,255,194,173,140,255,195,173,140,255,197,177,144,255,202,183,151,255, +211,196,170,255,222,212,193,255,229,222,208,255,229,222,209,255,225,216,200,255,219,207,186,255,211,195,171,255,175,153,126,255, +115, 88, 74,255,117, 91, 78,255,135,107, 89,255,140,114, 94,255,160,136,110,255,197,178,147,255,214,200,175,255,215,201,176,255, +213,200,175,255,221,210,191,255,218,208,190,255,208,198,181,255,198,185,168,255,153,131,111,255,116, 99, 90,255,109, 95, 86,255, +138,111, 91,255,169,144,117,255,182,159,129,255,200,180,149,255,220,208,186,255,223,212,194,255,218,204,182,255,209,193,168,255, +199,180,151,255,188,166,136,255,155,132,108,255,176,160,138,255,205,187,158,255,204,187,157,255,184,167,145,255,172,152,130,255, +103, 91, 82,255, 60, 61, 61,255, 60, 60, 60,255,142,134,121,255,216,201,176,255,215,199,174,255,215,198,173,255,214,199,174,255, +215,200,174,255,215,199,174,255,214,200,175,255,215,198,173,255,214,199,173,255,213,197,172,255,212,196,170,255,212,196,169,255, +211,195,167,255,210,194,166,255,210,193,165,255,209,192,163,255,208,191,162,255,208,191,161,255,208,189,159,255,208,189,159,255, +207,188,158,255,206,187,157,255,205,188,156,255,205,187,156,255,205,186,155,255,204,185,154,255,205,186,155,255,205,186,153,255, +205,186,153,255,204,185,154,255,204,184,152,255,203,183,151,255,203,183,151,255,201,181,149,255,201,181,149,255,200,181,148,255, +201,179,146,255,200,180,147,255,199,179,146,255,199,178,145,255,199,177,144,255,198,178,145,255,197,176,143,255,196,175,143,255, +196,175,142,255,194,173,140,255,194,172,139,255,193,172,140,255,193,172,140,255,193,172,139,255,195,175,142,255,199,180,147,255, +208,191,164,255,218,207,186,255,228,220,206,255,231,225,213,255,230,224,212,255,221,212,195,255,213,203,185,255,194,181,165,255, +132,105, 89,255,133,105, 87,255,136,109, 89,255,124, 95, 79,255,135,108, 89,255,169,146,119,255,196,176,145,255,195,174,143,255, +175,152,123,255,172,149,122,255,170,147,123,255,193,173,144,255,195,175,145,255,141,115, 94,255, 85, 63, 54,255, 77, 68, 64,255, + 76, 57, 51,255,121, 95, 79,255,172,148,120,255,193,171,139,255,214,200,176,255,229,221,207,255,230,224,211,255,226,218,204,255, +224,215,200,255,224,215,201,255,218,206,187,255,184,166,141,255,188,167,135,255,175,153,124,255,155,133,114,255,122, 95, 82,255, + 85, 69, 64,255, 61, 61, 61,255, 60, 60, 60,255,141,133,120,255,215,199,174,255,213,198,173,255,214,198,173,255,214,199,173,255, +214,199,174,255,215,199,174,255,214,200,174,255,215,199,174,255,214,198,173,255,214,198,172,255,213,197,171,255,212,196,169,255, +212,195,168,255,211,194,166,255,210,193,165,255,209,192,163,255,208,191,162,255,208,191,161,255,207,189,159,255,208,189,159,255, +207,188,158,255,206,188,157,255,205,187,156,255,206,187,156,255,204,185,154,255,205,186,154,255,205,185,154,255,205,186,154,255, +205,185,154,255,204,185,153,255,203,184,152,255,203,184,152,255,203,183,151,255,201,181,149,255,201,180,148,255,201,180,147,255, +200,180,146,255,199,179,146,255,200,178,146,255,199,178,145,255,198,178,145,255,198,176,143,255,197,176,143,255,196,175,142,255, +195,174,142,255,193,173,140,255,193,171,139,255,192,170,138,255,191,170,138,255,192,171,138,255,193,172,139,255,197,176,142,255, +203,184,154,255,213,198,174,255,223,213,195,255,228,222,208,255,228,222,208,255,220,210,190,255,196,178,146,255,155,129,103,255, +134,107, 88,255,145,119, 98,255,145,118, 96,255,116, 88, 74,255,115, 85, 72,255,148,122,100,255,168,144,117,255,167,142,116,255, +140,112, 93,255,105, 78, 66,255,112, 85, 72,255,186,164,133,255,200,180,148,255,176,151,123,255,124, 98, 82,255, 83, 67, 60,255, + 70, 61, 57,255, 67, 52, 47,255,147,123,102,255,198,177,146,255,207,189,160,255,216,203,181,255,225,216,199,255,225,216,200,255, +192,176,155,255,180,160,133,255,173,149,122,255,165,142,115,255,145,122,102,255,129,103, 87,255,102, 76, 65,255,102, 74, 63,255, + 83, 69, 63,255, 61, 61, 61,255, 60, 60, 60,255,140,131,117,255,212,195,168,255,211,194,167,255,212,196,169,255,213,197,171,255, +213,198,173,255,214,199,174,255,215,199,175,255,214,199,174,255,215,199,174,255,213,199,173,255,213,198,172,255,213,197,171,255, +211,195,168,255,211,194,167,255,210,193,166,255,209,192,163,255,208,191,162,255,208,191,161,255,208,189,159,255,207,189,159,255, +207,188,158,255,206,187,156,255,206,187,156,255,205,186,155,255,204,185,155,255,204,185,154,255,205,186,154,255,205,185,154,255, +204,185,153,255,204,184,153,255,203,184,152,255,202,183,151,255,203,183,151,255,201,181,149,255,200,181,148,255,201,180,147,255, +199,179,146,255,200,179,146,255,199,179,146,255,198,178,145,255,198,177,144,255,198,177,144,255,196,175,143,255,196,175,142,255, +194,173,141,255,193,172,140,255,193,171,139,255,191,170,138,255,191,169,137,255,191,170,137,255,191,170,138,255,193,172,139,255, +196,176,143,255,204,186,155,255,213,199,174,255,219,208,189,255,220,210,191,255,214,201,178,255,202,184,155,255,185,164,134,255, +175,153,124,255,181,159,130,255,179,157,128,255,146,120, 98,255,125, 97, 81,255,150,123,101,255,173,149,120,255,177,153,124,255, +152,126,102,255, 99, 74, 63,255, 84, 64, 56,255,177,153,125,255,211,194,165,255,207,188,158,255,177,154,125,255,115, 90, 75,255, + 76, 67, 62,255, 63, 51, 47,255,140,121,102,255,202,184,154,255,207,191,163,255,214,201,177,255,205,191,168,255,157,141,125,255, +132,108, 90,255,149,123,100,255,128,100, 84,255,112, 85, 72,255,104, 76, 65,255,109, 80, 68,255, 87, 63, 55,255, 91, 68, 59,255, + 92, 77, 69,255, 61, 61, 61,255, 60, 60, 60,255,138,129,113,255,208,190,158,255,207,189,157,255,208,190,160,255,209,192,164,255, +212,195,168,255,213,198,172,255,214,198,173,255,214,200,175,255,215,200,175,255,214,199,174,255,213,198,172,255,213,197,171,255, +212,196,169,255,211,194,167,255,211,194,166,255,209,192,163,255,208,191,162,255,208,190,161,255,207,189,159,255,206,188,158,255, +207,187,158,255,205,187,156,255,206,186,155,255,205,185,155,255,204,185,153,255,205,186,154,255,204,185,153,255,204,184,153,255, +203,184,152,255,203,185,153,255,203,183,151,255,202,183,151,255,203,183,151,255,201,181,149,255,200,181,148,255,200,180,147,255, +199,179,146,255,200,178,145,255,199,179,146,255,198,177,144,255,198,177,144,255,197,176,144,255,196,175,142,255,195,174,142,255, +195,174,141,255,193,172,140,255,193,171,139,255,191,169,137,255,190,170,138,255,191,169,137,255,191,169,137,255,190,169,137,255, +192,170,138,255,195,174,142,255,200,181,149,255,205,189,160,255,208,192,165,255,207,191,164,255,205,188,158,255,202,184,154,255, +201,183,152,255,203,185,155,255,201,183,152,255,183,161,131,255,167,143,116,255,180,157,128,255,205,187,159,255,216,202,180,255, +205,188,163,255,149,124,103,255, 90, 67, 58,255,137,111, 91,255,182,160,131,255,198,177,145,255,193,171,138,255,157,131,107,255, + 81, 66, 59,255, 63, 49, 44,255,142,126,107,255,193,172,141,255,192,171,139,255,184,163,133,255,148,123,101,255,116, 95, 82,255, +111, 87, 75,255,143,117, 96,255,117, 89, 75,255, 97, 76, 66,255,128,100, 84,255,148,121,100,255,127, 99, 82,255, 79, 61, 53,255, + 94, 80, 72,255, 61, 61, 61,255, 60, 60, 60,255,133,123,106,255,200,179,146,255,200,179,147,255,203,182,150,255,206,187,155,255, +208,191,162,255,211,195,168,255,213,198,172,255,215,200,176,255,215,200,176,255,214,200,175,255,214,199,174,255,214,198,172,255, +213,197,170,255,211,195,168,255,211,194,166,255,209,192,165,255,209,191,162,255,208,190,161,255,208,190,159,255,206,188,158,255, +206,188,157,255,206,186,155,255,205,186,155,255,205,186,154,255,204,185,154,255,204,185,153,255,203,185,153,255,204,184,152,255, +204,184,152,255,203,184,152,255,202,184,152,255,203,184,152,255,203,183,151,255,201,182,149,255,201,181,148,255,200,180,147,255, +200,179,146,255,199,178,145,255,199,178,145,255,197,177,144,255,197,176,143,255,197,176,143,255,196,175,142,255,195,174,142,255, +195,174,141,255,193,172,139,255,193,171,139,255,191,170,138,255,190,170,138,255,190,169,137,255,189,167,135,255,189,167,135,255, +189,168,136,255,191,169,137,255,193,171,139,255,195,174,141,255,196,176,144,255,198,177,144,255,199,179,146,255,201,181,150,255, +202,183,151,255,203,184,153,255,200,181,149,255,194,173,140,255,190,169,136,255,198,179,147,255,214,200,177,255,221,211,193,255, +218,207,187,255,193,174,145,255,143,117, 96,255,128,101, 83,255,144,118, 97,255,162,137,112,255,171,147,120,255,160,133,109,255, + 93, 71, 61,255, 57, 44, 41,255,136,121,104,255,190,168,136,255,192,172,140,255,159,136,111,255,138,112, 92,255,108, 87, 77,255, + 90, 71, 63,255,146,119, 98,255,148,122,100,255,113, 89, 78,255,144,117, 96,255,184,162,131,255,191,170,139,255,154,130,108,255, +113,105, 96,255, 60, 60, 61,255, 60, 60, 61,255,125,114, 98,255,187,165,133,255,190,168,136,255,195,174,141,255,201,180,147,255, +205,186,155,255,209,191,163,255,213,197,171,255,215,200,175,255,215,201,177,255,214,200,176,255,215,199,174,255,214,198,173,255, +212,196,170,255,212,195,169,255,211,194,167,255,209,192,165,255,209,191,162,255,208,190,161,255,207,189,159,255,206,188,157,255, +206,187,156,255,205,186,155,255,205,185,154,255,204,185,153,255,203,184,153,255,204,184,152,255,204,184,152,255,204,184,152,255, +203,184,152,255,203,184,152,255,203,184,152,255,202,183,151,255,203,183,150,255,201,182,149,255,201,181,148,255,200,180,147,255, +199,179,146,255,199,179,146,255,199,178,145,255,197,177,144,255,197,177,144,255,196,176,142,255,196,175,142,255,195,174,142,255, +195,174,141,255,193,172,139,255,193,172,139,255,191,170,139,255,191,170,137,255,190,169,137,255,190,168,136,255,189,168,136,255, +189,167,135,255,189,168,136,255,190,168,137,255,191,169,137,255,191,170,138,255,192,171,138,255,193,172,139,255,195,174,141,255, +196,175,143,255,197,176,143,255,195,174,142,255,192,171,139,255,192,171,138,255,195,175,142,255,203,185,154,255,210,195,169,255, +212,198,173,255,206,189,159,255,190,168,137,255,168,143,116,255,154,128,104,255,151,125,103,255,154,128,105,255,151,125,103,255, +119, 93, 77,255, 62, 48, 43,255,133,118,101,255,200,181,152,255,205,187,159,255,180,157,127,255,144,117, 95,255,110, 85, 73,255, + 77, 64, 58,255,103, 76, 65,255,113, 88, 75,255,103, 76, 66,255,110, 83, 70,255,166,143,118,255,179,160,135,255,157,133,111,255, +109, 96, 84,255, 60, 61, 61,255, 60, 60, 61,255,118,106, 92,255,174,150,122,255,180,156,127,255,187,164,133,255,195,173,140,255, +201,181,148,255,207,188,159,255,211,195,168,255,215,200,176,255,216,202,178,255,216,201,177,255,214,200,175,255,214,199,174,255, +213,198,172,255,212,195,169,255,211,194,167,255,209,192,163,255,208,191,162,255,208,190,160,255,206,188,158,255,206,187,157,255, +206,187,156,255,204,185,154,255,204,184,153,255,203,185,153,255,204,183,151,255,203,184,152,255,202,183,151,255,203,183,151,255, +203,183,151,255,203,183,151,255,202,183,151,255,203,183,150,255,202,183,149,255,202,181,149,255,201,181,149,255,201,180,148,255, +199,179,146,255,199,179,146,255,199,178,145,255,197,177,144,255,197,177,144,255,196,176,143,255,196,175,143,255,195,174,142,255, +194,173,141,255,194,173,140,255,193,172,140,255,192,171,138,255,191,170,138,255,192,170,137,255,190,169,137,255,191,168,136,255, +190,168,136,255,189,168,136,255,189,168,136,255,190,168,136,255,191,169,137,255,192,170,138,255,191,170,138,255,193,172,140,255, +194,173,140,255,194,173,140,255,192,171,139,255,191,170,138,255,191,170,138,255,195,174,141,255,201,182,149,255,208,191,163,255, +212,196,172,255,213,198,172,255,209,192,164,255,203,183,153,255,192,171,140,255,181,158,128,255,173,149,121,255,166,141,115,255, +150,124,101,255,100, 76, 63,255,134,119,102,255,219,208,188,255,224,214,197,255,216,203,181,255,199,181,155,255,164,141,116,255, +136,116,100,255,116, 89, 75,255, 91, 70, 63,255,123, 98, 82,255,110, 85, 73,255,147,124,104,255,153,128,104,255,154,128,105,255, +107, 94, 82,255, 60, 61, 61,255, 60, 61, 61,255,114,101, 88,255,166,141,115,255,170,146,119,255,179,155,126,255,188,165,135,255, +197,176,143,255,205,186,155,255,210,194,167,255,215,200,176,255,216,202,179,255,216,202,178,255,215,200,177,255,215,200,175,255, +214,198,173,255,212,196,170,255,211,194,166,255,209,193,163,255,208,191,161,255,208,189,159,255,206,187,157,255,205,187,155,255, +205,185,154,255,204,184,153,255,203,184,152,255,203,183,151,255,202,183,151,255,202,182,150,255,202,182,150,255,201,181,149,255, +201,182,150,255,202,182,150,255,202,182,149,255,202,182,149,255,202,182,149,255,201,182,149,255,201,181,148,255,201,180,148,255, +199,179,146,255,199,179,146,255,199,178,145,255,197,177,144,255,197,176,143,255,197,176,144,255,196,175,142,255,196,175,142,255, +194,174,142,255,194,173,140,255,194,173,140,255,193,172,140,255,192,171,139,255,192,171,139,255,192,170,138,255,191,170,138,255, +191,170,138,255,191,169,137,255,191,169,137,255,191,170,138,255,191,170,138,255,191,170,138,255,192,171,138,255,193,172,139,255, +193,172,140,255,193,172,140,255,193,172,139,255,193,172,139,255,194,173,140,255,198,177,145,255,202,184,153,255,209,194,168,255, +216,204,182,255,222,211,193,255,225,216,200,255,226,217,201,255,224,214,196,255,221,209,189,255,217,204,181,255,212,198,174,255, +204,188,162,255,170,148,124,255,139,114, 96,255,159,139,118,255,175,156,137,255,177,160,144,255,158,141,127,255,148,129,113,255, +178,155,127,255,171,146,119,255,119, 94, 78,255,135,116, 98,255,133,113, 99,255,127,103, 87,255,162,137,112,255,168,142,116,255, +119,106, 92,255, 60, 60, 61,255, 60, 61, 61,255,112, 99, 86,255,161,136,111,255,164,139,113,255,171,146,119,255,181,158,128,255, +191,170,138,255,202,183,151,255,210,194,167,255,215,201,177,255,217,203,180,255,216,203,180,255,216,202,178,255,215,201,176,255, +213,199,172,255,212,196,170,255,211,194,166,255,209,192,164,255,208,190,160,255,207,188,158,255,206,187,156,255,205,185,153,255, +204,184,152,255,203,184,152,255,203,183,151,255,202,182,150,255,202,182,150,255,202,181,149,255,202,181,149,255,201,181,149,255, +201,181,149,255,201,181,148,255,201,181,148,255,202,182,149,255,201,181,148,255,201,181,148,255,200,180,148,255,201,181,148,255, +200,180,147,255,199,179,146,255,199,178,145,255,197,177,144,255,198,177,144,255,196,177,144,255,196,176,143,255,195,175,142,255, +195,175,142,255,194,173,140,255,194,173,140,255,194,173,139,255,193,172,139,255,192,171,139,255,192,171,138,255,191,170,138,255, +191,170,138,255,191,170,138,255,191,170,138,255,191,170,138,255,192,171,139,255,192,171,138,255,192,171,139,255,193,171,140,255, +193,172,139,255,194,173,140,255,194,173,139,255,194,172,140,255,194,174,141,255,197,177,144,255,202,183,152,255,207,192,165,255, +214,202,179,255,219,209,191,255,223,215,198,255,225,217,201,255,225,216,202,255,226,219,204,255,227,220,204,255,225,217,199,255, +196,180,155,255,145,120,100,255, 95, 72, 62,255, 81, 62, 53,255, 83, 64, 54,255,100, 76, 63,255, 76, 59, 50,255, 64, 51, 45,255, +102, 81, 69,255,158,132,108,255,159,134,109,255,125,102, 89,255,113, 89, 77,255,135,115, 99,255,192,173,145,255,209,195,171,255, +139,132,120,255, 60, 60, 60,255, 60, 61, 61,255,114,101, 88,255,159,133,108,255,158,132,108,255,163,138,113,255,174,149,121,255, +184,162,131,255,197,176,143,255,209,192,162,255,216,202,179,255,218,205,182,255,218,205,183,255,216,203,180,255,216,201,177,255, +215,199,174,255,212,197,170,255,211,194,165,255,209,191,162,255,207,189,159,255,206,187,156,255,205,185,154,255,203,184,152,255, +203,183,151,255,202,182,149,255,201,181,149,255,201,180,148,255,201,181,148,255,200,180,147,255,200,181,147,255,200,179,147,255, +200,179,148,255,200,179,147,255,200,181,148,255,200,180,147,255,200,180,148,255,201,181,147,255,201,181,148,255,201,181,148,255, +199,179,147,255,200,179,146,255,199,179,146,255,197,177,144,255,197,178,145,255,198,177,144,255,196,176,143,255,196,176,143,255, +196,175,142,255,194,174,141,255,195,174,140,255,194,173,141,255,194,173,140,255,193,172,139,255,193,172,139,255,193,172,138,255, +193,172,139,255,193,172,139,255,193,172,139,255,193,172,139,255,193,172,139,255,192,171,140,255,192,171,140,255,193,173,139,255, +192,172,140,255,192,173,140,255,192,171,139,255,192,172,139,255,193,172,139,255,194,174,141,255,196,176,144,255,201,182,151,255, +205,189,161,255,210,195,169,255,211,197,173,255,211,197,173,255,208,193,168,255,202,188,165,255,196,184,166,255,184,166,146,255, +169,146,119,255,189,167,137,255,133,110, 91,255, 83, 67, 58,255, 78, 64, 57,255, 96, 75, 65,255, 95, 74, 63,255, 68, 55, 49,255, + 60, 49, 44,255, 93, 73, 63,255,154,128,105,255,155,131,109,255,140,116, 99,255,142,117, 98,255,186,165,137,255,212,199,178,255, +144,139,130,255, 60, 60, 60,255, 60, 61, 61,255,115,102, 88,255,159,133,108,255,157,131,107,255,161,136,111,255,169,146,118,255, +180,158,128,255,194,173,140,255,206,189,160,255,217,203,180,255,219,207,186,255,219,206,184,255,218,204,181,255,216,202,178,255, +215,200,174,255,212,196,169,255,211,193,165,255,208,191,161,255,207,188,157,255,206,186,154,255,204,184,152,255,203,183,150,255, +201,181,148,255,201,180,148,255,201,180,147,255,200,180,147,255,200,179,146,255,199,179,146,255,199,179,146,255,199,179,146,255, +199,178,146,255,199,179,146,255,199,179,146,255,200,179,147,255,200,179,147,255,200,180,147,255,200,180,148,255,199,179,147,255, +200,180,146,255,200,180,147,255,199,179,146,255,198,178,145,255,197,177,144,255,198,177,144,255,197,176,143,255,197,176,143,255, +195,176,143,255,195,174,141,255,195,174,142,255,195,174,141,255,194,173,141,255,193,173,141,255,194,173,140,255,193,172,140,255, +193,172,140,255,193,172,140,255,193,172,140,255,192,172,140,255,192,172,140,255,193,172,139,255,193,172,140,255,192,172,140,255, +192,172,139,255,192,171,139,255,191,171,138,255,191,171,138,255,190,170,137,255,190,169,137,255,189,168,136,255,191,170,138,255, +194,173,141,255,195,175,143,255,193,173,142,255,181,159,129,255,162,138,114,255,122, 94, 78,255,115, 85, 70,255,147,121, 98,255, +145,118, 97,255,194,176,152,255,219,205,183,255,166,148,127,255,111, 89, 75,255,109, 90, 81,255,153,128,106,255,129,108, 91,255, + 81, 66, 55,255, 60, 48, 44,255, 91, 72, 62,255,116, 97, 83,255,109, 85, 76,255,121, 94, 78,255,148,122, 99,255,202,182,151,255, +143,136,125,255, 60, 60, 60,255, 60, 60, 60,255,129,119,106,255,175,151,124,255,170,147,119,255,172,149,121,255,176,154,124,255, +186,165,133,255,200,180,149,255,211,195,170,255,219,207,188,255,221,209,190,255,220,207,186,255,218,205,182,255,217,202,179,255, +215,200,174,255,212,196,168,255,210,193,164,255,208,190,159,255,205,186,155,255,204,184,152,255,203,182,149,255,201,180,148,255, +200,180,147,255,200,179,146,255,199,178,145,255,199,178,144,255,198,177,144,255,198,177,144,255,199,178,145,255,199,178,145,255, +199,178,145,255,199,178,145,255,199,178,145,255,199,179,146,255,199,179,146,255,200,180,147,255,199,179,147,255,199,179,146,255, +200,180,147,255,200,180,147,255,199,179,146,255,198,178,145,255,197,177,144,255,197,178,145,255,197,176,143,255,196,176,143,255, +196,176,143,255,195,175,142,255,195,175,142,255,194,174,142,255,194,174,141,255,194,173,140,255,193,173,141,255,193,172,140,255, +194,172,140,255,194,173,140,255,193,173,139,255,193,173,139,255,193,172,140,255,192,172,140,255,193,172,140,255,192,171,139,255, +192,171,139,255,192,171,139,255,191,170,138,255,189,168,136,255,188,166,135,255,186,165,134,255,184,163,132,255,182,161,130,255, +182,160,129,255,180,158,127,255,173,151,122,255,162,138,112,255,163,139,113,255,150,124,102,255,152,127,104,255,181,159,130,255, +168,144,117,255,158,134,110,255,217,203,181,255,227,218,202,255,194,177,154,255,158,135,112,255,204,189,163,255,217,205,187,255, +191,175,154,255,129,108, 90,255, 70, 57, 52,255, 62, 52, 49,255, 88, 72, 65,255, 94, 68, 58,255, 86, 68, 58,255,160,137,113,255, +133,124,111,255, 60, 60, 60,255, 60, 60, 60,255,140,133,121,255,204,186,158,255,200,182,152,255,199,180,149,255,192,172,139,255, +197,177,146,255,209,194,167,255,218,207,187,255,225,215,199,255,223,213,195,255,221,209,188,255,219,206,184,255,217,203,179,255, +215,199,174,255,212,195,168,255,209,191,162,255,206,187,157,255,205,185,152,255,203,182,149,255,200,179,146,255,199,178,145,255, +198,177,144,255,197,176,143,255,197,176,143,255,197,175,142,255,196,175,142,255,196,175,142,255,196,175,142,255,197,176,143,255, +197,176,143,255,197,176,143,255,197,178,145,255,198,177,144,255,199,178,145,255,197,177,144,255,199,179,146,255,199,179,146,255, +199,179,146,255,198,178,146,255,198,178,145,255,199,179,146,255,198,178,145,255,197,178,145,255,197,176,143,255,196,177,144,255, +196,176,143,255,196,176,143,255,195,175,142,255,196,175,142,255,194,175,142,255,195,175,142,255,195,173,141,255,194,174,141,255, +194,174,140,255,193,172,141,255,194,172,141,255,194,173,140,255,192,173,140,255,193,172,139,255,193,171,140,255,192,171,139,255, +191,170,138,255,191,170,138,255,189,168,136,255,188,167,136,255,187,165,134,255,184,163,132,255,181,159,129,255,178,156,126,255, +174,152,123,255,170,147,119,255,163,139,113,255,158,133,109,255,159,135,110,255,156,132,108,255,165,142,116,255,201,184,156,255, +205,190,164,255,182,160,131,255,203,184,153,255,177,155,128,255,182,161,130,255,187,167,135,255,209,193,167,255,228,220,206,255, +231,225,212,255,217,205,186,255,132,112, 93,255, 93, 72, 62,255, 98, 86, 80,255,128,101, 84,255, 80, 62, 54,255, 76, 61, 53,255, + 91, 76, 68,255, 61, 61, 61,255, 60, 60, 61,255,127,116,101,255,175,152,123,255,179,157,129,255,194,175,145,255,201,182,151,255, +215,203,181,255,222,212,194,255,223,214,198,255,228,220,205,255,227,218,203,255,223,212,194,255,220,207,186,255,217,203,179,255, +214,198,172,255,210,193,165,255,208,190,159,255,205,186,153,255,203,182,149,255,200,179,146,255,199,178,144,255,197,175,142,255, +196,175,142,255,196,174,141,255,195,173,141,255,195,173,141,255,195,173,141,255,195,174,141,255,195,174,141,255,195,174,141,255, +196,175,142,255,196,175,142,255,197,176,143,255,197,176,144,255,197,177,144,255,198,178,145,255,198,178,145,255,198,178,145,255, +198,178,145,255,199,179,145,255,199,179,146,255,199,179,146,255,198,178,145,255,197,177,144,255,197,177,144,255,197,176,143,255, +196,176,143,255,196,176,143,255,195,176,143,255,196,175,143,255,196,174,142,255,195,175,142,255,195,174,142,255,195,173,141,255, +194,174,141,255,193,173,141,255,194,173,140,255,193,172,140,255,193,172,140,255,193,172,140,255,192,171,139,255,191,170,138,255, +191,170,138,255,190,169,137,255,188,167,135,255,187,166,135,255,185,164,133,255,183,161,131,255,180,158,128,255,176,154,125,255, +173,149,122,255,167,144,117,255,163,140,113,255,160,137,111,255,160,136,111,255,160,136,111,255,164,140,114,255,183,162,132,255, +209,195,169,255,215,202,178,255,202,185,156,255,151,126,103,255,193,173,141,255,203,184,153,255,200,180,148,255,215,201,179,255, +223,215,200,255,222,213,199,255,186,169,149,255,163,142,121,255,159,135,114,255,164,139,112,255,132,104, 86,255,103, 87, 78,255, +106, 96, 87,255, 61, 61, 61,255, 60, 61, 61,255,111, 98, 85,255,147,121, 99,255,147,121, 99,255,168,145,118,255,200,182,153,255, +223,212,194,255,227,219,204,255,224,215,198,255,228,219,205,255,229,220,205,255,227,217,201,255,222,210,191,255,217,203,180,255, +213,197,170,255,209,192,162,255,206,187,155,255,203,183,150,255,200,179,146,255,198,177,143,255,196,174,141,255,195,173,140,255, +193,172,139,255,193,170,138,255,192,170,138,255,192,170,138,255,192,170,138,255,193,171,139,255,193,172,140,255,194,172,140,255, +194,173,140,255,195,174,141,255,196,175,142,255,196,175,143,255,197,176,143,255,198,177,144,255,197,177,144,255,198,178,145,255, +198,178,145,255,199,179,146,255,199,179,146,255,199,179,146,255,198,178,145,255,197,177,144,255,197,177,144,255,197,177,144,255, +196,177,144,255,196,176,143,255,196,175,143,255,196,175,143,255,196,174,143,255,195,174,142,255,194,175,142,255,195,174,142,255, +194,173,141,255,194,173,140,255,193,173,140,255,194,172,140,255,193,172,139,255,192,171,139,255,192,171,139,255,191,170,138,255, +190,170,137,255,190,169,137,255,188,166,135,255,187,165,134,255,184,163,132,255,182,160,130,255,179,157,127,255,177,154,125,255, +174,151,123,255,170,147,119,255,168,144,117,255,166,143,116,255,167,144,116,255,166,143,116,255,166,143,117,255,173,150,122,255, +190,168,137,255,199,180,149,255,192,172,140,255,182,161,130,255,198,179,148,255,209,193,167,255,200,183,153,255,184,163,135,255, +195,177,149,255,184,163,136,255,123,104, 91,255,121, 95, 80,255,160,141,122,255,202,184,156,255,188,167,140,255,149,125,105,255, +131,120,105,255, 60, 60, 61,255, 61, 61, 61,255,103, 89, 79,255,141,114, 94,255,159,135,110,255,161,137,111,255,163,138,112,255, +182,160,130,255,214,198,176,255,225,215,199,255,227,219,204,255,229,221,206,255,227,218,203,255,222,211,191,255,217,203,179,255, +211,194,166,255,207,189,158,255,204,184,151,255,200,179,146,255,198,176,143,255,195,173,140,255,192,170,138,255,191,169,137,255, +190,168,136,255,189,167,135,255,189,167,135,255,189,167,135,255,189,167,135,255,190,168,136,255,191,169,137,255,191,170,137,255, +192,171,139,255,193,172,139,255,194,173,141,255,195,174,141,255,195,175,142,255,196,176,143,255,197,176,143,255,198,177,144,255, +198,178,145,255,199,179,146,255,198,178,145,255,199,179,146,255,198,178,145,255,199,179,146,255,198,178,145,255,198,177,145,255, +197,176,144,255,197,176,144,255,196,176,143,255,195,175,142,255,196,176,142,255,195,176,143,255,196,174,142,255,194,174,141,255, +195,174,142,255,194,174,141,255,193,174,140,255,193,173,140,255,193,172,140,255,192,171,139,255,192,171,139,255,190,170,137,255, +190,169,137,255,189,168,136,255,187,166,134,255,186,164,133,255,184,163,132,255,182,160,130,255,180,157,128,255,177,155,126,255, +174,152,123,255,172,149,122,255,172,149,121,255,172,148,121,255,172,149,121,255,173,150,122,255,173,150,122,255,175,153,124,255, +179,157,127,255,183,162,131,255,184,162,131,255,183,161,130,255,193,172,140,255,203,184,154,255,186,166,135,255,170,148,120,255, +201,181,151,255,188,167,136,255,146,122,101,255,148,122,100,255,134,113,100,255,168,146,123,255,168,145,121,255,102, 79, 69,255, + 69, 65, 61,255, 61, 61, 61,255, 60, 60, 60,255,129,122,111,255,213,202,186,255,215,205,184,255,188,168,142,255,165,140,114,255, +163,138,111,255,193,174,146,255,224,215,198,255,228,221,207,255,228,220,205,255,224,213,195,255,219,207,185,255,214,199,172,255, +210,191,162,255,205,185,153,255,201,180,146,255,197,175,142,255,194,172,140,255,192,169,137,255,189,166,135,255,188,165,133,255, +186,164,133,255,186,163,132,255,186,163,132,255,186,163,133,255,187,164,133,255,187,165,134,255,188,166,134,255,189,167,136,255, +190,169,137,255,192,170,138,255,193,172,139,255,194,173,140,255,194,174,141,255,196,175,142,255,196,176,143,255,197,177,144,255, +198,178,145,255,198,178,145,255,199,179,146,255,198,178,146,255,199,179,146,255,199,179,146,255,198,178,145,255,198,178,145,255, +197,177,144,255,196,176,143,255,197,177,144,255,195,175,142,255,196,176,143,255,196,176,143,255,195,174,142,255,194,175,141,255, +195,174,141,255,194,173,140,255,194,173,140,255,193,172,139,255,192,172,140,255,192,171,139,255,192,171,139,255,190,169,137,255, +190,169,137,255,188,167,135,255,187,166,134,255,186,164,133,255,184,163,132,255,182,160,130,255,180,158,128,255,178,156,127,255, +176,154,125,255,175,153,124,255,174,152,124,255,175,153,124,255,176,153,124,255,176,154,125,255,178,155,126,255,180,157,127,255, +181,160,129,255,183,160,130,255,182,160,130,255,181,159,129,255,184,163,132,255,190,170,138,255,189,168,137,255,191,171,141,255, +195,176,148,255,171,148,122,255,166,144,119,255,162,139,115,255,149,124,103,255,153,135,112,255,128,115, 96,255, 84, 71, 59,255, + 21, 22, 23,255, 62, 62, 62,255, 60, 60, 60,255,139,134,123,255,197,181,159,255,202,187,164,255,212,200,179,255,200,184,159,255, +190,172,147,255,205,191,167,255,228,221,207,255,231,224,211,255,225,214,196,255,219,206,184,255,216,201,176,255,210,193,164,255, +206,187,155,255,202,181,147,255,197,176,142,255,193,171,139,255,190,168,135,255,187,165,133,255,185,162,131,255,183,160,130,255, +182,159,129,255,182,159,129,255,182,159,129,255,182,160,130,255,183,160,130,255,184,162,131,255,186,163,133,255,187,164,133,255, +188,166,135,255,190,168,137,255,192,170,138,255,193,172,140,255,194,173,141,255,196,175,142,255,196,176,143,255,197,177,144,255, +198,178,145,255,198,178,145,255,198,178,146,255,199,179,146,255,199,179,146,255,198,179,146,255,198,178,145,255,197,177,144,255, +198,178,145,255,196,176,143,255,197,177,144,255,196,175,142,255,195,176,143,255,195,176,143,255,195,174,141,255,195,175,141,255, +194,174,141,255,194,174,141,255,193,173,140,255,193,173,140,255,192,171,139,255,192,171,139,255,191,170,138,255,190,169,137,255, +189,168,136,255,188,167,135,255,187,165,134,255,185,164,133,255,184,163,132,255,182,161,130,255,181,159,129,255,179,157,127,255, +178,156,126,255,178,155,126,255,177,155,125,255,177,155,125,255,178,156,126,255,179,157,127,255,180,158,129,255,182,161,130,255, +184,162,131,255,184,163,132,255,182,161,130,255,179,157,128,255,177,155,125,255,175,153,124,255,170,147,119,255,161,137,113,255, +152,128,105,255,137,112, 94,255,122, 94, 80,255,124, 95, 80,255, 99, 80, 66,255, 15, 13, 11,255, 2, 2, 2,255, 0, 0, 0,255, + 29, 29, 29,255, 61, 61, 61,255, 60, 60, 60,255,138,130,116,255,176,158,135,255,170,145,118,255,163,139,112,255,166,142,115,255, +197,179,150,255,225,216,199,255,228,220,205,255,228,219,204,255,225,216,199,255,221,209,190,255,215,200,175,255,207,189,158,255, +201,181,147,255,197,175,142,255,192,170,138,255,189,166,135,255,185,162,131,255,183,160,129,255,180,157,127,255,179,156,126,255, +178,154,125,255,177,154,125,255,178,154,126,255,179,155,126,255,179,156,127,255,181,158,129,255,183,160,130,255,184,163,131,255, +186,164,133,255,188,167,135,255,191,170,138,255,192,171,139,255,193,173,140,255,195,175,142,255,196,175,143,255,196,176,143,255, +198,178,145,255,197,177,144,255,199,178,145,255,198,178,146,255,199,179,146,255,198,179,146,255,197,178,145,255,197,178,145,255, +198,178,145,255,197,177,144,255,197,176,143,255,197,177,144,255,197,176,143,255,196,176,143,255,196,176,143,255,195,174,142,255, +194,175,141,255,194,173,141,255,193,174,140,255,193,173,140,255,192,171,139,255,191,170,138,255,191,170,138,255,189,168,136,255, +189,168,136,255,188,167,135,255,186,165,133,255,185,164,133,255,184,163,132,255,182,161,130,255,181,159,129,255,180,158,128,255, +179,157,127,255,179,157,127,255,179,157,127,255,180,158,128,255,180,158,128,255,181,159,129,255,182,161,130,255,182,161,130,255, +183,162,131,255,183,162,131,255,181,159,129,255,177,155,125,255,172,150,121,255,166,142,115,255,155,131,107,255,143,118, 97,255, +125, 97, 81,255,113, 83, 71,255,119, 89, 75,255, 89, 68, 57,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 60, 60, 61,255,129,118,102,255,192,173,146,255,183,162,136,255,151,125,101,255,161,137,111,255, +205,190,164,255,228,221,206,255,228,219,204,255,226,217,202,255,227,220,206,255,226,217,202,255,217,204,182,255,205,185,153,255, +197,176,142,255,192,169,137,255,187,164,134,255,184,161,130,255,180,157,127,255,178,154,125,255,176,152,123,255,174,150,122,255, +173,149,121,255,173,149,121,255,173,149,122,255,174,151,123,255,176,152,124,255,177,155,125,255,179,157,127,255,182,160,129,255, +184,163,132,255,187,166,134,255,190,168,137,255,191,170,138,255,193,172,140,255,195,175,142,255,196,176,143,255,197,177,144,255, +198,178,145,255,198,178,145,255,198,178,146,255,197,179,146,255,198,179,146,255,198,179,146,255,198,179,146,255,198,179,146,255, +198,178,145,255,198,178,145,255,197,177,144,255,196,177,144,255,197,177,144,255,196,176,143,255,195,175,142,255,195,175,142,255, +195,175,142,255,193,173,140,255,193,173,140,255,193,173,140,255,192,171,139,255,191,170,138,255,191,170,138,255,189,168,136,255, +188,167,135,255,188,167,135,255,186,165,133,255,185,164,133,255,184,163,132,255,182,161,130,255,182,160,130,255,181,159,129,255, +180,158,128,255,180,158,128,255,180,158,128,255,180,158,128,255,180,158,128,255,182,160,130,255,182,160,130,255,182,161,130,255, +182,161,130,255,181,159,129,255,178,156,126,255,174,151,123,255,166,143,116,255,157,132,108,255,144,119, 98,255,129,101, 85,255, +118, 89, 75,255,118, 90, 76,255, 82, 62, 53,255, 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 60, 60, 61,255,119,107, 92,255,183,161,131,255,202,189,168,255,194,179,159,255,203,187,162,255, +223,214,197,255,231,226,213,255,226,218,203,255,217,206,185,255,222,213,196,255,219,207,188,255,212,196,171,255,197,177,144,255, +191,170,137,255,186,163,132,255,181,158,128,255,177,154,125,255,175,151,123,255,172,148,121,255,170,145,118,255,169,144,117,255, +168,143,116,255,167,143,116,255,168,144,117,255,170,146,119,255,171,148,120,255,174,151,123,255,176,154,125,255,179,157,128,255, +183,161,131,255,186,164,133,255,189,168,136,255,192,171,139,255,193,173,140,255,195,175,142,255,196,176,143,255,197,177,144,255, +198,178,145,255,198,178,145,255,198,178,146,255,198,179,146,255,198,179,146,255,199,178,146,255,198,178,145,255,198,178,145,255, +198,178,145,255,197,177,144,255,197,177,144,255,197,177,144,255,196,176,143,255,196,176,143,255,195,175,142,255,194,174,141,255, +194,174,141,255,193,173,140,255,193,173,140,255,193,173,140,255,191,171,138,255,191,170,138,255,190,169,137,255,189,168,136,255, +188,167,135,255,188,167,135,255,186,165,133,255,185,164,133,255,184,163,132,255,182,161,130,255,182,161,130,255,181,160,129,255, +180,158,128,255,181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,180,158,128,255, +179,157,127,255,177,155,126,255,174,151,122,255,168,144,117,255,159,135,110,255,148,122,100,255,133,107, 89,255,124, 96, 80,255, +122, 93, 79,255, 85, 64, 53,255, 2, 2, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 60, 61, 61,255,113,100, 87,255,164,138,113,255,183,160,131,255,213,198,175,255,223,213,196,255, +228,221,207,255,231,225,213,255,226,218,203,255,220,210,190,255,223,213,195,255,216,203,180,255,201,181,150,255,187,164,133,255, +186,164,132,255,181,157,128,255,175,152,123,255,172,147,120,255,168,144,117,255,166,141,115,255,164,139,113,255,162,137,112,255, +162,137,111,255,162,137,111,255,163,139,112,255,165,141,115,255,167,143,117,255,170,147,120,255,175,152,123,255,178,156,126,255, +182,160,130,255,186,164,133,255,189,168,136,255,192,171,139,255,193,173,140,255,196,175,142,255,197,177,144,255,197,177,145,255, +198,179,146,255,199,178,146,255,198,179,146,255,198,178,146,255,199,179,145,255,198,178,146,255,197,177,145,255,198,178,144,255, +197,177,145,255,196,176,143,255,197,177,144,255,197,177,144,255,196,176,143,255,195,175,142,255,195,175,142,255,194,174,141,255, +194,174,141,255,193,173,140,255,193,173,140,255,193,172,140,255,191,171,138,255,191,170,138,255,190,169,137,255,189,168,136,255, +188,167,135,255,187,166,134,255,186,164,133,255,185,163,133,255,184,163,132,255,183,161,131,255,182,161,130,255,181,160,129,255, +181,159,129,255,180,158,128,255,180,158,128,255,179,158,128,255,179,157,128,255,179,157,127,255,178,156,127,255,176,154,126,255, +175,152,124,255,171,148,120,255,166,142,116,255,159,135,111,255,150,125,102,255,138,112, 93,255,129,102, 85,255,124, 96, 80,255, + 86, 64, 54,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 60, 61, 61,255,110, 96, 84,255,154,127,104,255,155,130,106,255,167,142,114,255,184,162,133,255, +212,197,173,255,228,221,207,255,227,219,205,255,221,212,194,255,227,220,205,255,226,217,203,255,199,180,152,255,178,154,124,255, +181,159,128,255,175,152,124,255,170,145,119,255,165,141,114,255,162,137,112,255,160,134,110,255,157,132,108,255,156,130,106,255, +155,130,106,255,155,130,106,255,157,132,108,255,160,136,110,255,163,139,113,255,167,143,117,255,172,149,121,255,176,154,125,255, +181,160,130,255,186,165,134,255,190,169,137,255,193,172,140,255,195,175,142,255,196,176,144,255,198,178,145,255,198,178,146,255, +199,178,146,255,198,178,146,255,199,179,147,255,199,179,146,255,198,178,145,255,197,177,146,255,198,178,144,255,197,177,144,255, +196,176,144,255,197,177,144,255,197,177,144,255,196,176,143,255,195,175,142,255,196,176,143,255,194,174,141,255,195,175,142,255, +194,174,141,255,193,173,140,255,192,172,139,255,192,172,139,255,191,171,138,255,190,170,137,255,190,169,137,255,189,168,136,255, +188,167,135,255,187,165,134,255,185,164,133,255,184,164,133,255,184,163,132,255,183,161,131,255,182,160,130,255,182,160,130,255, +181,159,129,255,180,158,128,255,179,157,127,255,178,156,127,255,177,155,126,255,176,153,125,255,174,152,123,255,172,149,121,255, +168,145,119,255,164,140,114,255,158,134,109,255,150,125,102,255,141,115, 95,255,132,106, 88,255,128,100, 83,255, 83, 63, 54,255, + 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 60, 61, 61,255,112, 98, 86,255,153,127,104,255,149,123,100,255,152,126,103,255,157,132,107,255, +179,157,129,255,216,202,181,255,223,214,196,255,215,202,180,255,220,209,189,255,224,213,196,255,208,194,174,255,175,153,126,255, +180,156,127,255,174,151,123,255,166,142,116,255,161,135,111,255,156,130,107,255,153,127,105,255,150,123,101,255,148,121,100,255, +148,121, 99,255,148,122, 99,255,150,124,102,255,154,128,105,255,158,134,109,255,163,140,114,255,170,147,119,255,176,154,124,255, +182,161,130,255,188,167,135,255,192,172,139,255,195,175,142,255,197,177,144,255,198,178,146,255,199,180,147,255,199,180,147,255, +198,179,146,255,198,179,146,255,198,178,147,255,198,178,145,255,197,177,146,255,198,178,145,255,197,177,145,255,196,176,144,255, +197,177,144,255,196,176,143,255,196,176,143,255,195,175,142,255,196,176,143,255,195,175,142,255,194,174,141,255,194,174,141,255, +194,174,141,255,193,173,140,255,192,173,139,255,192,172,139,255,191,170,138,255,190,169,137,255,190,169,137,255,188,167,135,255, +188,166,135,255,186,165,134,255,185,164,133,255,185,163,133,255,184,162,132,255,183,161,130,255,182,160,130,255,181,159,129,255, +179,157,127,255,178,156,127,255,177,155,126,255,176,153,125,255,174,151,123,255,172,149,121,255,170,146,118,255,166,143,116,255, +161,138,112,255,156,131,107,255,149,124,102,255,142,116, 95,255,134,108, 90,255,130,102, 85,255, 88, 68, 57,255, 1, 1, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 60, 60, 61,255,125,114, 99,255,171,146,120,255,154,128,105,255,147,121, 99,255,148,122,100,255, +165,142,115,255,207,193,169,255,220,209,189,255,205,187,158,255,201,180,148,255,213,196,170,255,216,204,183,255,182,161,134,255, +178,155,126,255,176,153,125,255,166,142,116,255,157,131,108,255,151,125,103,255,147,121, 99,255,142,116, 96,255,140,112, 93,255, +138,111, 92,255,139,112, 93,255,142,116, 95,255,147,121, 99,255,154,129,105,255,161,137,112,255,169,146,119,255,177,155,125,255, +184,164,132,255,191,170,138,255,196,176,143,255,199,179,147,255,200,181,149,255,201,182,149,255,201,182,150,255,200,181,149,255, +200,180,148,255,199,180,147,255,198,179,146,255,197,178,145,255,197,177,145,255,196,176,144,255,196,176,143,255,196,176,143,255, +195,175,142,255,196,176,143,255,196,176,143,255,196,176,143,255,196,176,143,255,195,175,142,255,195,175,142,255,194,174,141,255, +193,173,140,255,193,173,140,255,192,172,139,255,192,171,139,255,191,170,138,255,190,169,137,255,190,169,137,255,188,167,135,255, +187,166,134,255,186,165,134,255,185,163,133,255,184,162,132,255,183,161,130,255,182,160,129,255,181,159,128,255,179,157,127,255, +178,156,126,255,177,154,126,255,174,152,123,255,173,150,122,255,171,148,119,255,168,144,117,255,164,140,114,255,159,136,111,255, +155,130,106,255,149,124,101,255,141,116, 95,255,136,109, 90,255,130,102, 85,255, 84, 65, 55,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,142,135,125,255,195,175,144,255,162,135,110,255,146,120, 99,255,140,114, 94,255, +167,145,120,255,212,199,176,255,190,170,142,255,175,151,122,255,184,161,130,255,204,185,155,255,220,209,189,255,190,171,147,255, +179,156,127,255,181,158,129,255,171,147,119,255,157,132,107,255,148,122,100,255,142,115, 95,255,135,108, 89,255,131,103, 86,255, +130,102, 85,255,130,103, 85,255,135,108, 89,255,141,115, 95,255,150,125,102,255,160,136,111,255,171,148,120,255,181,159,129,255, +190,169,137,255,197,177,145,255,202,183,152,255,203,185,155,255,204,186,156,255,203,185,155,255,203,184,153,255,201,182,151,255, +200,181,149,255,199,180,147,255,198,178,146,255,197,177,145,255,196,176,143,255,196,176,143,255,196,176,143,255,195,175,142,255, +196,176,143,255,196,176,143,255,195,175,142,255,195,175,142,255,195,175,142,255,194,174,141,255,195,174,142,255,194,174,141,255, +193,173,140,255,194,172,141,255,193,171,140,255,192,171,139,255,191,171,139,255,190,169,137,255,189,168,136,255,187,166,135,255, +186,165,134,255,186,164,133,255,184,163,132,255,183,162,131,255,182,160,130,255,181,159,129,255,180,157,127,255,178,155,126,255, +176,153,125,255,174,151,123,255,172,149,121,255,170,146,119,255,167,143,116,255,163,139,113,255,158,134,110,255,153,128,106,255, +148,123,101,255,141,116, 95,255,135,110, 91,255,129,101, 84,255, 64, 50, 42,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,123,108,255,199,183,157,255,174,151,122,255,139,115, 97,255,151,127,106,255, +204,187,160,255,181,160,135,255,155,133,111,255,160,135,110,255,175,151,122,255,201,182,151,255,222,211,191,255,197,181,160,255, +181,158,129,255,189,166,135,255,184,161,130,255,165,141,114,255,149,124,101,255,138,111, 92,255,128,100, 83,255,123, 94, 79,255, +121, 93, 78,255,122, 94, 79,255,128,100, 83,255,138,110, 91,255,150,125,102,255,164,140,115,255,177,155,126,255,189,168,136,255, +197,178,145,255,203,186,155,255,206,190,162,255,208,192,164,255,207,191,163,255,205,188,160,255,204,186,156,255,203,184,153,255, +200,181,149,255,199,179,147,255,198,178,145,255,196,176,143,255,196,176,143,255,196,176,143,255,195,175,142,255,195,175,142,255, +195,175,142,255,195,175,142,255,195,175,142,255,194,174,141,255,194,174,141,255,195,174,142,255,195,175,142,255,194,173,141,255, +194,173,141,255,193,172,140,255,192,172,139,255,192,171,139,255,190,169,138,255,189,168,136,255,188,167,135,255,187,166,134,255, +186,165,133,255,185,163,132,255,183,161,131,255,182,160,130,255,180,159,129,255,179,156,127,255,177,155,126,255,175,153,124,255, +173,150,122,255,171,148,120,255,168,145,118,255,165,141,115,255,161,138,112,255,157,132,108,255,153,128,105,255,147,122,100,255, +142,116, 95,255,136,110, 91,255,129,102, 85,255, 39, 30, 25,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 60, 60, 61,255,120,109, 95,255,186,167,143,255,193,176,152,255,158,135,112,255,202,187,164,255, +189,169,142,255,156,135,114,255,152,127,106,255,158,133,108,255,166,142,115,255,198,178,150,255,223,213,194,255,202,187,166,255, +184,162,131,255,198,176,143,255,201,180,147,255,183,161,130,255,159,133,109,255,139,112, 92,255,124, 95, 79,255,116, 87, 74,255, +114, 85, 72,255,116, 87, 74,255,124, 96, 81,255,138,111, 92,255,157,133,109,255,176,153,124,255,191,170,138,255,200,180,148,255, +204,187,157,255,209,193,166,255,210,195,170,255,211,196,170,255,209,194,167,255,207,190,163,255,204,187,157,255,203,184,153,255, +200,181,149,255,198,178,145,255,196,176,143,255,195,175,142,255,194,174,141,255,194,174,141,255,194,174,141,255,194,174,141,255, +195,174,142,255,194,175,141,255,195,174,142,255,195,175,142,255,195,175,142,255,194,174,142,255,194,173,141,255,194,173,140,255, +193,173,140,255,192,172,139,255,191,171,138,255,191,170,138,255,189,169,136,255,189,168,136,255,188,167,135,255,186,165,133,255, +185,163,133,255,183,161,132,255,182,160,130,255,180,159,129,255,178,156,127,255,177,155,126,255,175,152,124,255,172,150,122,255, +171,148,120,255,167,144,117,255,164,140,115,255,160,137,111,255,157,132,108,255,152,127,104,255,147,121,100,255,141,116, 95,255, +136,110, 91,255,119, 94, 78,255, 30, 23, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,125,116,104,255,200,182,156,255,179,160,137,255,200,188,173,255,218,210,193,255, +195,179,155,255,181,164,142,255,168,144,116,255,160,136,112,255,177,158,136,255,212,198,175,255,226,217,201,255,201,184,160,255, +190,168,136,255,205,186,154,255,212,196,168,255,203,185,153,255,175,151,123,255,144,117, 96,255,121, 93, 78,255,111, 82, 70,255, +109, 80, 68,255,114, 86, 73,255,126, 99, 82,255,144,118, 97,255,170,147,120,255,192,171,140,255,202,184,154,255,205,188,158,255, +207,191,163,255,211,197,172,255,212,198,175,255,211,197,172,255,209,195,168,255,207,190,162,255,204,187,156,255,201,182,151,255, +199,179,147,255,196,177,143,255,195,175,142,255,194,174,141,255,194,173,141,255,193,173,140,255,194,173,140,255,193,173,140,255, +194,173,141,255,195,174,142,255,194,175,141,255,194,175,141,255,195,175,142,255,194,174,142,255,194,173,141,255,193,173,140,255, +193,173,140,255,192,172,139,255,192,171,138,255,191,170,138,255,189,168,136,255,188,167,136,255,187,165,134,255,185,164,133,255, +183,162,131,255,182,160,130,255,180,159,129,255,178,157,127,255,177,155,125,255,174,152,123,255,172,149,121,255,170,147,119,255, +167,143,117,255,164,140,114,255,160,136,111,255,156,131,107,255,152,127,104,255,147,122, 99,255,140,116, 95,255,138,110, 92,255, +103, 81, 68,255, 23, 18, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 60, 60, 61,255,125,113,100,255,188,168,140,255,198,179,149,255,219,207,187,255,230,225,212,255, +221,213,198,255,211,202,184,255,187,169,146,255,155,131,111,255,182,160,132,255,199,180,151,255,206,188,159,255,189,167,138,255, +193,172,139,255,212,196,168,255,219,205,182,255,217,204,182,255,197,178,149,255,155,131,107,255,126, 98, 82,255,109, 80, 69,255, +108, 79, 68,255,114, 85, 72,255,124, 96, 80,255,145,120, 98,255,172,148,121,255,192,172,140,255,202,184,153,255,203,184,152,255, +201,182,149,255,206,190,161,255,212,198,174,255,211,196,171,255,208,192,165,255,205,188,158,255,202,183,152,255,199,179,147,255, +196,176,143,255,194,175,141,255,194,173,141,255,193,172,140,255,192,172,139,255,192,172,139,255,193,172,140,255,193,172,140,255, +193,173,140,255,195,175,142,255,195,174,142,255,195,174,142,255,195,174,142,255,195,174,142,255,194,174,142,255,194,173,141,255, +194,173,141,255,192,171,139,255,191,171,138,255,190,170,138,255,188,167,135,255,187,166,134,255,186,164,133,255,183,162,131,255, +182,160,130,255,180,159,129,255,178,156,127,255,177,154,125,255,174,152,123,255,171,149,121,255,169,146,119,255,166,142,116,255, +163,139,113,255,159,135,111,255,155,131,107,255,151,126,103,255,146,121, 99,255,140,115, 95,255,135,109, 90,255, 84, 66, 56,255, + 5, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 60, 60, 61,255,118,105, 91,255,174,150,122,255,179,155,126,255,184,162,132,255,212,200,180,255, +229,223,209,255,221,212,194,255,155,135,117,255,148,126,106,255,166,141,115,255,179,156,126,255,181,158,128,255,175,152,126,255, +194,172,140,255,214,199,173,255,218,205,184,255,223,213,194,255,210,195,171,255,166,142,116,255,124, 96, 80,255,105, 76, 66,255, +105, 76, 66,255,112, 83, 70,255,124, 95, 80,255,144,117, 96,255,163,139,113,255,180,158,128,255,192,170,138,255,194,171,139,255, +188,167,135,255,192,171,139,255,203,185,154,255,206,190,161,255,205,187,156,255,201,183,151,255,198,178,146,255,195,175,142,255, +194,173,141,255,192,171,139,255,191,170,138,255,191,170,138,255,191,170,138,255,191,170,138,255,193,172,140,255,193,173,140,255, +194,174,141,255,195,175,142,255,196,175,143,255,196,176,143,255,196,176,143,255,196,175,143,255,194,174,141,255,194,174,141,255, +193,173,140,255,192,171,139,255,191,170,138,255,190,169,137,255,188,167,135,255,186,165,134,255,184,163,133,255,183,161,131,255, +180,159,129,255,178,156,126,255,177,154,125,255,174,151,123,255,171,148,120,255,168,145,119,255,166,142,116,255,162,138,113,255, +159,135,110,255,155,130,107,255,151,126,103,255,145,121, 99,255,142,115, 95,255,128,104, 86,255, 68, 54, 45,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 60, 60, 61,255,126,114, 98,255,183,159,129,255,166,142,116,255,176,156,132,255,211,199,179,255, +224,217,204,255,228,220,205,255,145,125,111,255,158,133,110,255,163,137,112,255,178,154,126,255,169,145,120,255,168,146,122,255, +192,170,139,255,211,193,165,255,211,195,169,255,208,192,165,255,183,162,135,255,137,111, 91,255,107, 78, 68,255,100, 73, 63,255, +104, 76, 65,255,116, 87, 74,255,131,103, 86,255,147,121,100,255,163,139,113,255,178,155,126,255,190,168,136,255,187,165,134,255, +178,155,126,255,176,153,124,255,186,165,133,255,194,174,142,255,195,176,143,255,195,175,143,255,194,173,141,255,191,170,138,255, +190,168,137,255,189,167,136,255,188,167,135,255,188,167,136,255,189,168,136,255,191,170,138,255,193,172,140,255,194,174,141,255, +195,175,142,255,196,176,144,255,197,177,144,255,197,177,144,255,197,177,144,255,196,176,143,255,195,175,142,255,195,174,142,255, +194,173,141,255,192,171,139,255,191,170,138,255,189,168,136,255,188,166,135,255,185,164,133,255,183,161,131,255,181,159,129,255, +178,156,127,255,176,154,125,255,173,151,123,255,171,148,120,255,168,145,118,255,165,141,115,255,161,137,113,255,158,133,109,255, +154,130,106,255,150,125,102,255,144,119, 98,255,141,115, 95,255,110, 89, 74,255, 34, 27, 23,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,140,135,126,255,194,176,151,255,202,186,164,255,204,187,158,255,210,194,169,255, +206,188,161,255,211,201,184,255,151,129,111,255,165,140,114,255,170,145,118,255,182,159,129,255,165,141,117,255,170,146,121,255, +191,170,139,255,206,187,155,255,200,180,147,255,181,159,129,255,146,119, 98,255,113, 85, 71,255,100, 73, 62,255,101, 73, 63,255, +113, 84, 71,255,128, 99, 83,255,140,113, 93,255,152,127,103,255,166,143,115,255,186,164,133,255,200,180,148,255,193,171,140,255, +175,151,123,255,165,141,114,255,171,147,119,255,181,159,128,255,186,165,134,255,189,168,136,255,188,166,135,255,186,165,133,255, +185,163,133,255,184,163,132,255,184,163,132,255,186,165,134,255,189,168,136,255,191,171,138,255,194,174,141,255,195,175,142,255, +196,177,144,255,198,179,146,255,198,179,146,255,198,179,146,255,198,178,146,255,198,178,145,255,196,176,143,255,196,175,143,255, +194,174,141,255,192,172,139,255,191,170,138,255,189,167,136,255,186,165,133,255,184,162,132,255,181,159,129,255,178,156,126,255, +176,153,125,255,173,150,122,255,170,147,119,255,167,143,117,255,164,140,114,255,160,136,111,255,157,133,109,255,153,129,105,255, +148,124,101,255,144,120, 98,255,141,114, 95,255, 87, 70, 59,255, 6, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,136,131,123,255,178,156,132,255,198,177,146,255,194,173,141,255,184,161,131,255, +199,179,149,255,196,182,164,255,175,153,126,255,170,146,119,255,190,169,139,255,194,175,146,255,166,142,117,255,176,152,123,255, +194,174,146,255,206,188,157,255,193,171,139,255,161,136,111,255,123, 96, 80,255,105, 76, 65,255,101, 74, 64,255,113, 84, 72,255, +130,102, 85,255,139,113, 93,255,147,121, 99,255,153,128,104,255,166,143,116,255,197,178,150,255,218,206,186,255,209,195,170,255, +182,160,131,255,157,133,109,255,157,134,109,255,179,158,129,255,192,172,140,255,190,169,137,255,184,163,132,255,179,157,128,255, +177,155,126,255,176,154,125,255,179,157,128,255,183,161,131,255,186,164,134,255,189,168,136,255,191,171,139,255,193,173,140,255, +196,175,143,255,198,178,146,255,200,181,149,255,201,182,150,255,201,182,150,255,200,181,149,255,199,179,147,255,197,177,144,255, +195,175,142,255,192,172,139,255,190,169,138,255,188,166,135,255,184,163,132,255,181,159,129,255,178,156,126,255,174,152,124,255, +172,149,121,255,169,146,118,255,165,142,115,255,163,138,113,255,159,135,110,255,156,131,107,255,151,127,105,255,149,124,101,255, +144,118, 97,255,125,101, 84,255, 49, 40, 34,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 61, 60, 59,255,169,155,136,255,190,168,137,255,182,164,138,255,192,173,145,255, +203,187,162,255,195,181,161,255,193,173,144,255,179,158,132,255,202,185,158,255,197,183,163,255,174,153,125,255,185,163,131,255, +196,177,148,255,214,200,176,255,188,167,136,255,147,122, 99,255,115, 85, 72,255,109, 81, 69,255,126, 98, 81,255,147,121, 99,255, +151,125,103,255,149,124,101,255,145,118, 96,255,165,146,128,255,200,187,167,255,215,203,183,255,221,212,196,255,219,210,193,255, +204,190,167,255,191,176,156,255,200,186,167,255,216,205,185,255,211,196,171,255,192,171,139,255,178,156,127,255,171,148,120,255, +169,147,119,255,171,149,121,255,175,152,124,255,176,154,125,255,176,153,124,255,176,153,124,255,178,156,126,255,183,160,130,255, +190,169,137,255,197,177,145,255,201,183,151,255,204,186,156,255,204,186,156,255,203,184,154,255,201,182,150,255,198,179,146,255, +195,175,142,255,192,172,139,255,189,167,136,255,185,163,133,255,182,159,129,255,177,155,126,255,174,151,123,255,170,147,120,255, +167,143,117,255,163,139,114,255,161,137,111,255,157,133,109,255,155,130,107,255,150,126,104,255,149,123,102,255,142,117, 96,255, + 77, 63, 52,255, 15, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 28, 28, 28,255, 15, 14, 12,255,214,204,186,255,209,196,175,255,210,196,173,255, +208,196,179,255,187,167,139,255,195,174,145,255,194,173,142,255,174,151,122,255,194,178,154,255,193,172,140,255,200,179,147,255, +201,181,149,255,212,201,181,255,188,169,141,255,149,125,103,255,159,137,116,255,194,178,154,255,206,192,169,255,196,178,150,255, +172,150,122,255,151,127,104,255,175,161,145,255,221,214,199,255,230,223,210,255,230,223,210,255,226,217,202,255,221,210,190,255, +215,201,178,255,218,205,184,255,228,219,204,255,228,221,208,255,216,203,181,255,188,167,136,255,166,143,116,255,162,138,112,255, +167,144,117,255,169,146,119,255,169,146,119,255,165,142,115,255,161,137,111,255,156,132,108,255,157,133,108,255,168,146,118,255, +185,164,133,255,198,179,146,255,204,186,155,255,206,189,160,255,205,189,161,255,205,187,158,255,202,183,152,255,198,179,147,255, +194,175,142,255,190,169,137,255,185,164,133,255,181,159,129,255,176,154,125,255,172,149,121,255,167,145,118,255,163,140,114,255, +161,137,112,255,158,134,109,255,155,131,107,255,153,129,105,255,150,126,103,255,148,123,101,255,119, 98, 81,255, 21, 18, 15,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 52, 50, 47,255,160,153,138,255,204,190,166,255, +199,183,158,255,177,156,130,255,191,170,137,255,155,132,108,255,170,152,136,255,219,209,190,255,190,170,142,255,214,200,178,255, +213,198,174,255,217,203,180,255,218,207,188,255,204,187,160,255,181,159,128,255,194,175,144,255,217,205,184,255,204,188,164,255, +177,156,127,255,201,188,166,255,228,220,204,255,214,205,189,255,219,211,195,255,230,223,210,255,226,217,201,255,214,199,174,255, +201,181,148,255,197,176,144,255,211,195,167,255,222,212,193,255,214,199,175,255,179,157,127,255,153,128,105,255,161,137,111,255, +166,142,115,255,162,138,112,255,159,134,110,255,152,127,104,255,143,117, 95,255,135,108, 89,255,141,116, 96,255,174,153,125,255, +196,176,145,255,204,187,156,255,207,191,162,255,208,192,164,255,207,191,162,255,205,188,159,255,202,183,153,255,198,178,145,255, +192,171,139,255,186,165,134,255,180,158,128,255,175,153,124,255,169,146,119,255,164,141,114,255,160,136,111,255,158,133,109,255, +155,130,107,255,153,128,105,255,152,127,104,255,148,123,101,255,125,104, 85,255, 65, 53, 44,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 2, 2, 2,255, 54, 50, 44,255, +198,184,163,255,191,170,142,255,173,151,124,255,176,162,148,255,203,190,172,255,210,194,167,255,187,168,140,255,204,190,168,255, +226,219,204,255,228,220,204,255,223,213,195,255,198,180,149,255,177,154,125,255,176,154,126,255,182,162,134,255,172,150,122,255, +192,172,142,255,216,203,180,255,218,206,186,255,223,215,198,255,223,217,203,255,221,212,198,255,214,201,179,255,206,188,157,255, +192,170,138,255,184,160,130,255,194,171,140,255,210,193,166,255,206,189,159,255,167,144,117,255,153,128,105,255,162,138,112,255, +159,133,109,255,153,127,104,255,149,123,101,255,139,112, 92,255,125, 97, 81,255,112, 84, 72,255,165,143,119,255,211,197,174,255, +212,198,174,255,208,193,167,255,209,193,167,255,210,195,168,255,208,192,165,255,205,188,159,255,201,182,151,255,195,174,142,255, +187,166,134,255,179,157,128,255,173,150,121,255,166,142,116,255,160,135,111,255,156,131,107,255,153,128,105,255,152,127,105,255, +153,128,105,255,154,129,105,255,124,104, 85,255, 53, 44, 36,255, 11, 9, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, +128,115, 96,255,196,178,153,255,181,161,136,255,217,202,176,255,217,205,187,255,208,196,175,255,220,210,193,255,216,205,188,255, +215,205,189,255,212,203,188,255,220,211,195,255,193,175,148,255,163,141,115,255,168,146,118,255,161,137,112,255,150,125,102,255, +171,149,121,255,208,192,164,255,212,199,175,255,218,207,187,255,229,223,211,255,228,222,209,255,202,188,164,255,201,181,147,255, +189,167,135,255,177,154,125,255,180,157,128,255,194,173,141,255,190,169,138,255,162,137,112,255,165,140,114,255,162,138,112,255, +153,128,104,255,147,120, 99,255,141,114, 94,255,128, 99, 83,255,107, 79, 68,255,100, 78, 68,255,171,147,121,255,204,187,158,255, +206,189,161,255,208,192,165,255,213,198,175,255,213,198,175,255,209,195,169,255,205,188,159,255,199,180,147,255,191,169,138,255, +180,159,128,255,171,148,120,255,161,138,112,255,154,129,105,255,148,124,101,255,148,124,102,255,153,128,105,255,154,129,106,255, +125,106, 87,255, 37, 31, 26,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 75, 68, 59,255,199,180,153,255,204,184,151,255,212,194,167,255,207,189,160,255,191,179,161,255,217,205,186,255,196,178,151,255, +195,178,151,255,151,126,103,255,137,112, 94,255,166,145,123,255,196,179,153,255,177,155,126,255,150,125,103,255,137,110, 91,255, +159,134,110,255,199,179,147,255,195,176,144,255,201,183,155,255,222,212,195,255,217,206,185,255,194,176,145,255,194,173,141,255, +189,166,134,255,174,149,122,255,171,147,120,255,177,153,124,255,166,143,116,255,164,140,115,255,176,152,124,255,164,140,114,255, +150,124,102,255,142,116, 95,255,137,109, 90,255,120, 91, 77,255, 88, 68, 60,255,113, 89, 75,255,171,148,120,255,180,159,129,255, +196,178,151,255,218,207,188,255,223,214,198,255,220,209,189,255,212,198,174,255,205,187,157,255,195,176,143,255,183,161,131,255, +170,147,120,255,158,133,109,255,149,123,101,255,140,117, 95,255,131,110, 91,255,117, 99, 81,255, 79, 67, 55,255, 27, 23, 19,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 36, 32, 27,255,203,185,157,255,198,181,153,255,203,191,173,255,163,149,128,255, 43, 39, 34,255,176,168,155,255,191,171,142,255, +196,175,144,255,203,185,156,255,202,183,152,255,197,176,143,255,213,199,176,255,185,164,135,255,152,127,104,255,132,104, 86,255, +170,145,118,255,191,170,137,255,169,145,118,255,170,147,119,255,203,185,156,255,190,171,142,255,176,154,126,255,190,170,140,255, +190,168,135,255,172,149,120,255,166,141,115,255,161,135,111,255,147,121,100,255,174,151,123,255,186,164,133,255,170,145,118,255, +152,126,103,255,142,116, 95,255,136,108, 89,255,113, 85, 71,255, 96, 79, 71,255,170,150,129,255,186,167,139,255,197,181,156,255, +222,212,193,255,228,219,205,255,228,220,206,255,223,213,196,255,213,199,175,255,201,183,151,255,186,165,133,255,172,149,121,255, +150,125,103,255, 93, 78, 65,255, 49, 41, 35,255, 33, 28, 23,255, 20, 17, 14,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 9, 8, 8,255, 84, 80, 72,255, 9, 9, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 3, 3, 3,255,150,135,111,255, +208,191,163,255,219,208,187,255,212,196,169,255,206,187,157,255,216,202,180,255,195,176,147,255,164,140,114,255,148,123,101,255, +193,173,143,255,188,166,134,255,151,126,103,255,170,147,120,255,194,174,143,255,183,166,144,255,196,178,152,255,178,157,130,255, +193,171,138,255,173,149,122,255,161,136,110,255,145,119, 97,255,140,112, 93,255,191,171,140,255,203,184,153,255,180,156,127,255, +157,131,107,255,146,120, 99,255,139,112, 92,255,114, 87, 73,255,169,154,136,255,225,217,202,255,221,211,192,255,220,209,190,255, +223,212,193,255,221,210,190,255,222,210,191,255,219,208,189,255,210,195,169,255,191,171,140,255,170,147,120,255,136,112, 93,255, + 28, 23, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,109,102, 90,255, +170,161,145,255,116,111,103,255,198,190,174,255,211,200,182,255,199,185,163,255,201,184,155,255,199,181,154,255,135,121,103,255, +123,117,105,255,173,157,133,255, 96, 81, 66,255, 8, 6, 6,255, 53, 51, 48,255,197,189,171,255,199,182,157,255,188,168,139,255, +194,173,140,255,176,153,124,255,157,132,108,255,131,103, 86,255,131,103, 85,255,201,185,159,255,223,213,194,255,197,177,148,255, +169,145,117,255,156,132,108,255,156,131,108,255,130,105, 87,255,157,135,111,255,212,200,178,255,214,205,190,255,222,214,200,255, +226,216,199,255,221,209,189,255,215,201,178,255,212,196,172,255,203,185,155,255,176,153,125,255,147,122,100,255, 33, 27, 23,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 9, 9, 9,255, + 12, 11, 9,255, 0, 0, 0,255, 90, 85, 76,255,211,199,177,255,197,177,145,255,203,186,157,255,101, 90, 74,255, 8, 6, 5,255, + 0, 0, 0,255, 27, 25, 22,255, 4, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 24, 22, 19,255,110,105, 97,255,212,199,178,255, +200,180,148,255,182,159,128,255,153,127,104,255,117, 89, 75,255,113, 85, 72,255,152,127,106,255,193,179,161,255,219,207,188,255, +195,177,150,255,209,197,180,255,204,188,162,255,152,128,106,255,170,149,126,255,214,201,178,255,184,163,135,255,141,123,105,255, + 94, 91, 85,255,213,205,190,255,222,209,188,255,208,191,161,255,180,159,129,255,150,135,117,255,108, 94, 78,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 60, 55,255, 91, 85, 73,255, 12, 11, 10,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 10, 9, 8,255, +161,149,125,255,192,169,139,255,147,123,100,255,105, 78, 67,255,103, 75, 64,255, 78, 57, 49,255, 7, 7, 6,255,187,178,163,255, +186,167,138,255,217,206,187,255,173,153,132,255,143,118, 97,255,110, 96, 82,255,177,171,161,255,198,180,153,255, 84, 69, 58,255, + 0, 0, 0,255, 1, 1, 1,255, 77, 74, 69,255,103, 95, 83,255, 26, 23, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 99, 93, 81,255,202,184,155,255,146,120, 98,255,103, 76, 65,255, 79, 59, 50,255, 5, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, + 67, 64, 60,255,143,138,128,255,159,139,116,255,116, 94, 79,255, 7, 4, 3,255, 0, 0, 0,255, 77, 72, 64,255, 17, 15, 13,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 22, 21, 19,255,199,187,169,255,154,130,106,255, 68, 51, 44,255, 6, 5, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 3, 3, 3,255, 27, 24, 21,255, 24, 21, 17,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 11, 11, 10,255, 28, 26, 23,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, + 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0, 0,125,101, 7, 31, 0, 0, 0, 1, 0, 0, 0, 88, 32,102, 7, +168,217,100, 7, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, 46,115,110, 97,107,101, 95,104,111,111,107, 46,112,110,103, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, + 99,111,110,115, 92, 46,105, 46,115,110, 97,107,101, 95,104,111,111,107, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,101, 7, + 0, 0, 0, 0, 98, 72, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0, + 0,127,101, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0,136,127,101, 7,240,143,101, 7, 68, 65, 84, 65, 0, 16, 0, 0,136,127,101, 7, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 0,144, 0, 0,240,143,101, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 60, 60, 60,255, + 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, + 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, + 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 62, 61, 61,255, 61, 61, 61,255,100, 87, 84,255,136,111,105,255, +136,110,104,255,135,110,104,255,135,110,104,255,135,110,103,255,135,109,103,255,135,109,102,255,135,109,102,255,134,108,102,255, +134,108,101,255,134,107,100,255,133,107, 99,255,133,107, 99,255,133,106, 98,255,133,105, 97,255,132,105, 96,255,132,104, 95,255, +132,104, 94,255,131,103, 93,255,131,102, 92,255,131,102, 91,255,130,101, 90,255,129,100, 89,255,129, 99, 88,255,129, 99, 86,255, +128, 99, 86,255,128, 98, 85,255,127, 98, 85,255,127, 97, 85,255,126, 97, 84,255,126, 97, 84,255,125, 96, 84,255,124, 96, 83,255, +124, 95, 83,255,123, 95, 82,255,122, 94, 82,255,122, 94, 82,255,121, 93, 81,255,121, 93, 81,255,120, 93, 81,255,119, 92, 80,255, +119, 92, 80,255,118, 91, 79,255,117, 91, 79,255,116, 90, 79,255,116, 90, 78,255,116, 89, 78,255,115, 88, 78,255,114, 88, 77,255, +114, 88, 77,255,113, 87, 76,255,112, 87, 76,255,111, 86, 75,255,110, 86, 75,255,110, 85, 74,255,108, 84, 73,255,108, 84, 73,255, +107, 83, 73,255,106, 82, 72,255,106, 82, 72,255,105, 82, 71,255,104, 81, 71,255,103, 80, 70,255,102, 79, 70,255,101, 79, 69,255, +100, 78, 69,255, 99, 78, 68,255, 98, 77, 68,255, 98, 76, 67,255, 97, 76, 66,255, 96, 75, 66,255, 95, 74, 65,255, 94, 74, 65,255, + 93, 73, 65,255, 92, 72, 64,255, 91, 72, 63,255, 90, 71, 62,255, 89, 70, 62,255, 88, 69, 61,255, 87, 69, 60,255, 86, 68, 60,255, + 85, 67, 59,255, 83, 66, 58,255, 82, 65, 58,255, 80, 64, 57,255, 80, 64, 56,255, 78, 62, 55,255, 77, 61, 54,255, 75, 60, 54,255, + 74, 59, 53,255, 72, 58, 52,255, 71, 57, 51,255, 65, 59, 55,255, 61, 62, 62,255, 60, 60, 60,255,136,111,106,255,207,158,148,255, +206,157,147,255,206,157,146,255,206,156,146,255,205,156,145,255,205,155,144,255,205,154,143,255,204,154,143,255,204,153,141,255, +203,152,140,255,202,152,139,255,202,151,137,255,202,150,136,255,201,149,134,255,200,148,132,255,199,147,131,255,199,146,129,255, +198,144,127,255,197,143,125,255,197,142,123,255,196,140,121,255,195,139,119,255,194,138,117,255,194,137,114,255,193,136,111,255, +192,134,110,255,192,133,108,255,190,133,108,255,189,131,107,255,188,131,106,255,187,130,106,255,186,129,105,255,185,128,104,255, +183,128,104,255,182,127,102,255,180,126,102,255,179,125,101,255,179,124,100,255,177,123,100,255,176,123,100,255,175,121, 98,255, +173,121, 98,255,173,119, 96,255,171,119, 96,255,170,118, 96,255,168,117, 94,255,167,116, 94,255,165,115, 93,255,164,114, 92,255, +163,113, 91,255,161,112, 91,255,160,111, 89,255,158,110, 89,255,157,109, 88,255,156,108, 87,255,154,107, 86,255,152,106, 85,255, +151,104, 84,255,149,103, 83,255,148,102, 82,255,146,100, 81,255,144,100, 80,255,143, 98, 79,255,141, 97, 78,255,139, 96, 78,255, +138, 94, 76,255,135, 93, 75,255,134, 93, 74,255,133, 90, 72,255,130, 89, 72,255,129, 89, 71,255,127, 87, 70,255,125, 86, 69,255, +124, 85, 68,255,122, 83, 66,255,120, 82, 65,255,118, 81, 64,255,116, 79, 63,255,113, 78, 62,255,112, 76, 60,255,109, 74, 59,255, +106, 72, 58,255,105, 70, 56,255,102, 69, 55,255, 99, 67, 53,255, 97, 65, 51,255, 94, 63, 50,255, 91, 62, 49,255, 88, 59, 46,255, + 86, 57, 45,255, 83, 56, 44,255, 79, 53, 41,255, 70, 56, 50,255, 61, 62, 62,255, 60, 60, 60,255,136,111,107,255,207,159,150,255, +206,158,149,255,205,157,148,255,205,157,148,255,205,157,147,255,205,156,145,255,204,156,145,255,204,155,145,255,203,154,143,255, +203,153,142,255,202,152,141,255,202,152,139,255,202,151,138,255,201,150,136,255,200,149,134,255,200,148,133,255,199,146,131,255, +198,145,129,255,198,145,127,255,196,143,126,255,196,142,123,255,196,141,122,255,195,139,119,255,194,138,117,255,193,137,115,255, +192,136,113,255,192,134,110,255,191,133,109,255,189,132,107,255,188,131,107,255,187,131,106,255,186,130,105,255,185,129,105,255, +184,128,104,255,182,127,103,255,182,127,103,255,181,125,102,255,179,125,101,255,178,124,101,255,176,123,100,255,175,122, 99,255, +174,121, 98,255,173,120, 97,255,172,119, 97,255,171,119, 96,255,169,117, 95,255,168,117, 94,255,166,116, 94,255,164,114, 92,255, +163,113, 92,255,162,113, 91,255,160,111, 90,255,159,110, 89,255,158,109, 88,255,156,108, 87,255,155,107, 87,255,153,106, 85,255, +151,104, 84,255,149,104, 83,255,148,103, 82,255,146,101, 82,255,145,100, 81,255,143, 99, 80,255,141, 98, 79,255,140, 97, 78,255, +138, 96, 77,255,136, 94, 76,255,135, 93, 75,255,133, 91, 73,255,132, 90, 72,255,129, 89, 72,255,127, 87, 70,255,126, 86, 69,255, +124, 86, 69,255,122, 84, 67,255,120, 83, 66,255,119, 81, 64,255,116, 79, 63,255,114, 78, 62,255,112, 77, 61,255,110, 75, 59,255, +107, 73, 58,255,105, 71, 56,255,102, 69, 55,255,100, 68, 54,255, 97, 66, 52,255, 95, 64, 50,255, 91, 62, 49,255, 89, 60, 47,255, + 86, 58, 46,255, 83, 56, 44,255, 79, 53, 41,255, 70, 56, 51,255, 61, 62, 62,255, 60, 60, 60,255,137,113,108,255,207,160,152,255, +206,159,151,255,206,159,150,255,206,158,150,255,205,158,149,255,205,157,148,255,205,157,147,255,204,156,146,255,204,155,145,255, +204,155,144,255,203,154,143,255,203,153,142,255,202,153,141,255,201,152,139,255,201,150,137,255,200,149,136,255,200,148,134,255, +199,147,132,255,198,146,129,255,197,145,128,255,197,143,126,255,196,143,124,255,196,142,123,255,195,140,121,255,194,139,118,255, +193,138,116,255,192,136,113,255,191,135,111,255,191,134,109,255,189,132,107,255,189,131,106,255,188,131,106,255,186,130,106,255, +185,129,105,255,185,129,104,255,183,128,103,255,182,127,102,255,180,125,102,255,179,125,101,255,178,124,100,255,176,123, 99,255, +175,122, 99,255,174,121, 98,255,173,120, 97,255,172,119, 96,255,170,118, 96,255,169,117, 95,255,168,116, 94,255,167,116, 93,255, +165,114, 93,255,163,113, 91,255,162,112, 91,255,160,111, 90,255,159,110, 89,255,157,109, 88,255,155,108, 87,255,154,107, 86,255, +153,106, 85,255,150,104, 84,255,149,103, 83,255,148,102, 82,255,146,101, 81,255,144,100, 80,255,143, 99, 79,255,141, 97, 79,255, +139, 96, 77,255,137, 95, 76,255,136, 94, 75,255,134, 92, 74,255,132, 91, 73,255,131, 90, 72,255,129, 89, 71,255,127, 87, 70,255, +125, 86, 68,255,123, 85, 68,255,121, 83, 66,255,119, 82, 65,255,117, 80, 64,255,115, 79, 63,255,113, 77, 62,255,110, 76, 60,255, +108, 73, 59,255,105, 72, 57,255,103, 70, 55,255,101, 68, 54,255, 98, 66, 52,255, 95, 64, 51,255, 93, 62, 49,255, 90, 60, 47,255, + 87, 58, 46,255, 84, 56, 44,255, 80, 54, 42,255, 70, 56, 50,255, 61, 62, 62,255, 60, 60, 60,255,137,113,109,255,209,161,154,255, +207,160,153,255,207,160,153,255,206,159,151,255,206,159,151,255,206,159,151,255,205,158,149,255,205,158,149,255,205,157,148,255, +204,156,146,255,203,155,145,255,203,155,144,255,203,154,143,255,202,153,142,255,202,152,140,255,201,151,138,255,200,150,137,255, +200,149,135,255,199,147,133,255,198,146,131,255,198,145,129,255,197,144,127,255,196,143,125,255,196,142,124,255,195,140,121,255, +194,139,119,255,193,138,117,255,192,136,115,255,191,135,112,255,191,134,110,255,190,132,108,255,189,132,107,255,188,131,106,255, +186,130,105,255,185,129,105,255,184,128,104,255,183,127,103,255,182,126,102,255,180,125,102,255,179,124,101,255,178,124,100,255, +176,122, 99,255,175,122, 98,255,174,121, 98,255,172,120, 97,255,171,119, 96,255,170,118, 96,255,168,117, 94,255,167,116, 94,255, +166,115, 93,255,164,114, 92,255,163,113, 91,255,162,112, 91,255,159,111, 89,255,158,110, 89,255,157,109, 88,255,155,107, 87,255, +154,107, 86,255,153,106, 85,255,150,104, 84,255,149,103, 83,255,147,102, 82,255,145,100, 81,255,144, 99, 80,255,142, 98, 79,255, +140, 97, 78,255,139, 96, 77,255,137, 95, 76,255,135, 93, 75,255,134, 92, 74,255,132, 91, 73,255,130, 89, 72,255,128, 88, 71,255, +126, 87, 69,255,124, 85, 68,255,122, 84, 67,255,120, 82, 65,255,118, 81, 64,255,116, 79, 63,255,113, 77, 61,255,112, 76, 60,255, +109, 74, 59,255,106, 72, 57,255,104, 71, 56,255,101, 69, 55,255, 98, 66, 53,255, 96, 65, 51,255, 93, 63, 50,255, 90, 61, 48,255, + 87, 59, 46,255, 84, 57, 44,255, 80, 54, 42,255, 70, 57, 51,255, 61, 62, 62,255, 60, 60, 60,255,138,114,111,255,209,164,157,255, +208,162,155,255,208,162,155,255,208,161,154,255,207,161,154,255,207,160,153,255,207,160,152,255,206,160,151,255,206,159,150,255, +206,158,149,255,205,157,148,255,205,156,146,255,204,156,145,255,203,154,144,255,203,154,142,255,202,153,141,255,201,151,138,255, +201,150,137,255,200,149,136,255,199,148,134,255,199,147,132,255,199,146,130,255,197,145,129,255,197,144,126,255,196,143,124,255, +195,141,122,255,194,140,119,255,193,138,118,255,193,137,115,255,192,136,112,255,191,135,110,255,190,133,108,255,189,132,107,255, +188,131,106,255,186,130,106,255,185,129,105,255,184,128,104,255,183,127,103,255,182,127,103,255,180,125,102,255,179,125,101,255, +178,124,100,255,176,123, 99,255,175,122, 99,255,174,121, 98,255,172,120, 97,255,171,119, 96,255,170,118, 96,255,168,117, 95,255, +167,116, 94,255,166,116, 94,255,164,114, 92,255,163,113, 92,255,162,112, 90,255,160,110, 89,255,158,110, 89,255,157,108, 87,255, +155,107, 87,255,153,106, 86,255,152,105, 85,255,150,104, 84,255,148,103, 83,255,147,102, 81,255,145,100, 81,255,143, 99, 80,255, +142, 97, 78,255,140, 96, 78,255,138, 95, 77,255,137, 93, 75,255,134, 93, 75,255,133, 92, 74,255,131, 90, 72,255,129, 89, 71,255, +128, 88, 71,255,125, 86, 68,255,123, 84, 68,255,121, 83, 67,255,119, 81, 65,255,117, 80, 64,255,115, 79, 63,255,112, 76, 61,255, +109, 75, 60,255,107, 73, 58,255,105, 71, 56,255,102, 69, 55,255, 99, 67, 53,255, 96, 65, 52,255, 94, 63, 50,255, 90, 61, 48,255, + 88, 59, 47,255, 84, 57, 45,255, 81, 54, 42,255, 70, 57, 51,255, 61, 62, 62,255, 60, 60, 60,255,138,115,112,255,210,165,159,255, +208,163,158,255,209,163,157,255,208,163,156,255,208,162,156,255,207,162,155,255,207,161,154,255,207,161,154,255,206,160,152,255, +206,159,151,255,205,159,150,255,205,157,148,255,204,157,148,255,204,156,146,255,203,155,145,255,203,154,143,255,202,153,141,255, +201,151,140,255,201,151,138,255,200,150,136,255,200,149,135,255,199,148,133,255,198,147,131,255,198,145,129,255,197,144,127,255, +196,143,125,255,195,141,123,255,194,140,120,255,194,139,118,255,193,137,115,255,192,136,113,255,191,134,111,255,190,133,108,255, +189,132,107,255,188,131,106,255,186,130,106,255,185,129,105,255,183,129,104,255,183,127,103,255,182,127,103,255,180,126,102,255, +179,125,101,255,178,124,100,255,176,123,100,255,175,122, 99,255,174,121, 98,255,172,120, 97,255,171,119, 96,255,170,118, 96,255, +168,117, 95,255,167,116, 93,255,166,115, 93,255,164,114, 92,255,162,113, 91,255,161,112, 90,255,159,110, 89,255,157,109, 88,255, +156,108, 87,255,154,107, 86,255,153,106, 85,255,151,105, 84,255,149,104, 84,255,148,102, 82,255,146,101, 82,255,144,100, 80,255, +143, 99, 79,255,141, 97, 78,255,139, 96, 77,255,137, 95, 76,255,135, 94, 75,255,134, 93, 74,255,132, 91, 73,255,131, 90, 72,255, +129, 89, 70,255,127, 87, 70,255,124, 86, 69,255,122, 84, 66,255,120, 82, 66,255,118, 80, 64,255,115, 78, 62,255,113, 77, 61,255, +111, 76, 60,255,108, 73, 58,255,105, 71, 57,255,103, 70, 55,255,100, 68, 53,255, 97, 66, 52,255, 94, 64, 51,255, 91, 61, 49,255, + 88, 59, 47,255, 85, 57, 45,255, 81, 54, 43,255, 70, 57, 51,255, 61, 62, 62,255, 60, 60, 60,255,138,115,113,255,211,166,161,255, +209,164,159,255,209,164,159,255,209,164,158,255,208,163,157,255,208,164,157,255,208,162,156,255,207,162,155,255,208,161,154,255, +206,160,153,255,206,160,152,255,206,159,151,255,205,158,149,255,205,157,148,255,204,157,147,255,203,155,145,255,203,154,144,255, +203,153,142,255,201,152,140,255,202,151,139,255,201,151,137,255,200,149,135,255,199,148,134,255,199,147,132,255,197,145,129,255, +197,144,128,255,196,143,126,255,195,142,123,255,195,140,120,255,194,139,119,255,193,137,116,255,192,136,113,255,191,135,111,255, +190,133,108,255,189,132,107,255,188,131,106,255,186,130,105,255,186,129,105,255,185,129,104,255,183,127,103,255,182,127,103,255, +180,125,101,255,179,125,101,255,178,124,100,255,176,122,100,255,175,122, 98,255,174,121, 98,255,172,120, 97,255,171,119, 96,255, +170,118, 96,255,168,116, 94,255,166,115, 93,255,165,115, 93,255,163,113, 91,255,162,112, 91,255,161,112, 90,255,159,110, 89,255, +157,109, 88,255,156,108, 87,255,153,106, 86,255,152,105, 85,255,151,105, 84,255,149,103, 83,255,147,102, 82,255,146,101, 81,255, +144, 99, 80,255,142, 98, 79,255,140, 97, 78,255,138, 95, 77,255,137, 94, 76,255,135, 93, 75,255,133, 92, 73,255,131, 91, 73,255, +130, 89, 71,255,127, 87, 70,255,125, 86, 69,255,122, 84, 67,255,121, 83, 66,255,118, 81, 65,255,116, 79, 63,255,114, 78, 62,255, +111, 76, 61,255,108, 74, 58,255,106, 72, 57,255,104, 71, 56,255,100, 68, 54,255, 98, 67, 53,255, 95, 65, 51,255, 91, 62, 49,255, + 89, 60, 47,255, 85, 57, 45,255, 81, 55, 43,255, 71, 57, 51,255, 61, 62, 62,255, 60, 60, 60,255,139,116,114,255,212,168,163,255, +210,166,162,255,210,166,161,255,210,166,161,255,210,165,160,255,209,164,159,255,209,164,159,255,209,164,158,255,208,163,156,255, +208,162,156,255,207,162,155,255,207,160,153,255,207,160,152,255,206,159,150,255,205,158,149,255,205,157,148,255,204,155,146,255, +203,155,144,255,203,154,143,255,202,153,141,255,202,152,139,255,201,151,138,255,200,149,136,255,199,148,134,255,198,147,132,255, +198,145,130,255,197,145,128,255,197,144,126,255,196,142,124,255,195,141,121,255,194,139,119,255,193,137,116,255,192,136,113,255, +191,135,112,255,190,133,108,255,189,132,108,255,188,131,106,255,187,130,106,255,186,130,105,255,185,129,104,255,183,128,104,255, +182,127,103,255,180,125,102,255,179,125,101,255,178,124,100,255,176,123, 99,255,175,122, 99,255,174,121, 98,255,172,120, 97,255, +171,119, 96,255,170,118, 96,255,168,116, 94,255,166,115, 93,255,165,114, 93,255,163,113, 91,255,162,112, 91,255,160,111, 90,255, +158,110, 89,255,157,109, 88,255,155,108, 87,255,153,106, 86,255,152,105, 85,255,149,104, 84,255,148,103, 83,255,147,102, 82,255, +144,100, 81,255,143, 99, 80,255,142, 98, 79,255,139, 97, 77,255,138, 95, 76,255,136, 94, 76,255,134, 92, 74,255,132, 91, 73,255, +130, 90, 72,255,128, 88, 70,255,126, 87, 69,255,124, 85, 68,255,121, 83, 66,255,119, 81, 65,255,117, 80, 63,255,114, 78, 62,255, +112, 76, 61,255,110, 75, 60,255,107, 73, 58,255,104, 71, 56,255,101, 69, 54,255, 99, 67, 53,255, 95, 65, 51,255, 92, 62, 49,255, + 89, 60, 47,255, 85, 58, 45,255, 81, 55, 43,255, 71, 57, 51,255, 61, 62, 62,255, 60, 60, 60,255,139,117,115,255,212,168,165,255, +211,167,164,255,211,167,163,255,210,167,162,255,210,166,162,255,210,166,161,255,209,165,160,255,209,165,160,255,209,164,158,255, +208,163,157,255,208,162,156,255,207,161,155,255,206,161,154,255,206,160,152,255,206,159,151,255,205,158,150,255,204,157,148,255, +204,156,146,255,203,155,145,255,203,154,143,255,202,153,141,255,201,152,141,255,201,151,138,255,200,149,136,255,199,148,135,255, +198,147,132,255,198,146,130,255,197,145,129,255,197,144,127,255,196,142,124,255,194,141,121,255,194,139,119,255,193,137,117,255, +192,136,114,255,191,135,111,255,190,133,108,255,189,132,107,255,188,131,106,255,187,130,106,255,186,129,105,255,185,129,104,255, +183,128,103,255,182,126,102,255,181,125,102,255,179,124,101,255,177,124,100,255,176,122, 99,255,174,121, 99,255,173,120, 97,255, +172,120, 97,255,170,118, 96,255,169,117, 95,255,167,116, 94,255,166,115, 93,255,164,114, 92,255,162,113, 91,255,161,111, 90,255, +160,111, 89,255,158,109, 88,255,156,108, 87,255,155,107, 86,255,153,106, 85,255,151,105, 84,255,150,103, 83,255,148,102, 82,255, +146,101, 81,255,145,100, 81,255,143, 99, 80,255,141, 97, 78,255,139, 95, 77,255,137, 94, 76,255,135, 93, 75,255,134, 92, 74,255, +131, 90, 72,255,129, 89, 71,255,127, 87, 70,255,124, 86, 69,255,123, 84, 67,255,120, 83, 66,255,117, 80, 64,255,116, 79, 63,255, +113, 77, 61,255,110, 75, 59,255,108, 73, 58,255,105, 72, 57,255,102, 69, 55,255, 99, 68, 53,255, 96, 65, 52,255, 92, 62, 49,255, + 89, 60, 47,255, 85, 58, 46,255, 81, 54, 43,255, 70, 57, 51,255, 61, 62, 62,255, 60, 60, 60,255,140,118,116,255,213,169,166,255, +211,168,165,255,211,168,165,255,211,169,164,255,211,167,163,255,210,167,163,255,210,166,162,255,210,166,161,255,209,165,161,255, +209,165,159,255,208,163,158,255,208,163,157,255,207,162,155,255,208,161,155,255,207,161,153,255,206,159,151,255,205,158,150,255, +205,158,149,255,204,156,147,255,203,155,145,255,203,155,144,255,202,153,142,255,201,152,141,255,201,151,139,255,200,149,137,255, +199,148,135,255,199,148,133,255,198,146,131,255,197,145,129,255,197,144,127,255,195,142,124,255,194,141,122,255,194,139,120,255, +193,138,117,255,192,136,113,255,192,135,112,255,190,133,109,255,189,132,107,255,188,132,107,255,186,130,105,255,185,129,105,255, +184,128,104,255,183,127,103,255,181,127,103,255,179,125,101,255,178,124,100,255,177,123,100,255,175,122, 98,255,174,121, 98,255, +173,120, 98,255,171,119, 96,255,170,118, 95,255,169,117, 95,255,167,116, 93,255,165,115, 93,255,164,114, 92,255,162,112, 90,255, +160,111, 90,255,159,110, 89,255,157,109, 88,255,156,108, 87,255,154,107, 86,255,152,105, 85,255,151,104, 84,255,149,103, 83,255, +147,102, 82,255,145,101, 81,255,144,100, 80,255,142, 98, 79,255,140, 97, 78,255,139, 96, 77,255,136, 94, 75,255,134, 93, 74,255, +133, 91, 73,255,130, 89, 71,255,128, 88, 70,255,125, 86, 68,255,123, 84, 68,255,121, 83, 66,255,118, 81, 64,255,116, 79, 63,255, +113, 78, 62,255,111, 75, 60,255,109, 74, 59,255,105, 72, 57,255,102, 69, 55,255,100, 68, 54,255, 96, 65, 52,255, 92, 62, 49,255, + 89, 60, 48,255, 85, 58, 45,255, 81, 55, 43,255, 70, 57, 51,255, 61, 62, 62,255, 60, 60, 60,255,140,118,117,255,214,171,169,255, +212,170,167,255,212,170,167,255,212,169,166,255,212,169,166,255,212,168,165,255,211,168,164,255,210,167,163,255,210,167,162,255, +210,166,161,255,209,165,160,255,209,164,159,255,209,164,158,255,208,163,156,255,208,162,155,255,207,161,154,255,206,160,153,255, +206,159,151,255,205,158,149,255,205,157,148,255,204,156,146,255,203,155,145,255,202,153,142,255,202,152,141,255,201,151,139,255, +201,150,137,255,200,149,136,255,199,148,133,255,198,146,131,255,197,145,129,255,196,144,127,255,196,142,125,255,195,141,122,255, +194,140,119,255,193,138,117,255,192,136,114,255,191,135,112,255,190,133,109,255,189,132,107,255,188,131,106,255,186,130,105,255, +185,129,105,255,184,128,104,255,182,127,103,255,181,126,103,255,179,125,101,255,178,124,101,255,177,123,100,255,175,122, 99,255, +174,121, 98,255,172,120, 97,255,170,119, 96,255,169,118, 95,255,168,117, 94,255,166,115, 93,255,165,115, 93,255,163,113, 91,255, +161,112, 90,255,160,111, 90,255,158,109, 88,255,156,108, 87,255,155,107, 87,255,154,106, 86,255,152,105, 85,255,150,104, 84,255, +148,103, 83,255,146,101, 82,255,145,100, 81,255,142, 99, 79,255,141, 97, 78,255,139, 96, 78,255,137, 94, 76,255,135, 93, 75,255, +133, 92, 74,255,131, 90, 72,255,128, 88, 71,255,127, 87, 70,255,124, 85, 68,255,121, 83, 67,255,120, 81, 66,255,117, 80, 64,255, +114, 78, 62,255,112, 77, 60,255,109, 74, 59,255,106, 72, 57,255,103, 70, 55,255,100, 68, 54,255, 96, 66, 52,255, 92, 63, 49,255, + 89, 60, 48,255, 85, 57, 45,255, 81, 54, 43,255, 70, 57, 51,255, 61, 62, 62,255, 60, 60, 60,255,140,119,117,255,214,172,170,255, +213,171,169,255,212,170,168,255,212,170,168,255,212,170,167,255,212,170,166,255,212,169,166,255,211,168,165,255,211,168,164,255, +210,167,163,255,210,166,162,255,209,166,160,255,209,164,159,255,208,164,158,255,208,163,157,255,207,162,155,255,207,161,154,255, +206,160,152,255,205,159,151,255,205,159,150,255,205,157,148,255,204,156,147,255,203,155,145,255,202,153,143,255,201,152,141,255, +201,152,139,255,201,150,137,255,199,149,136,255,199,148,134,255,198,146,131,255,197,145,130,255,196,144,127,255,196,142,124,255, +195,141,121,255,194,140,120,255,193,137,117,255,192,136,114,255,191,135,111,255,190,133,109,255,189,131,107,255,188,130,106,255, +186,130,105,255,185,129,105,255,183,128,104,255,182,127,103,255,181,126,102,255,179,125,102,255,178,124,100,255,177,123,100,255, +175,122, 98,255,173,120, 97,255,172,119, 96,255,170,118, 96,255,169,117, 95,255,167,116, 94,255,165,115, 93,255,164,114, 92,255, +163,113, 91,255,160,111, 90,255,159,110, 89,255,158,109, 88,255,156,108, 87,255,154,107, 86,255,153,106, 85,255,151,105, 85,255, +149,103, 83,255,148,102, 82,255,146,101, 81,255,144, 99, 80,255,142, 98, 79,255,140, 97, 78,255,138, 95, 76,255,136, 94, 75,255, +134, 92, 74,255,132, 91, 73,255,130, 89, 72,255,127, 87, 71,255,125, 86, 69,255,122, 84, 68,255,120, 82, 65,255,117, 81, 64,255, +115, 79, 63,255,112, 76, 60,255,110, 75, 59,255,106, 73, 58,255,103, 70, 56,255,100, 68, 54,255, 97, 66, 52,255, 93, 63, 49,255, + 89, 59, 48,255, 84, 57, 45,255, 81, 54, 42,255, 70, 57, 51,255, 61, 62, 62,255, 60, 60, 60,255,141,119,119,255,215,173,172,255, +213,172,170,255,213,171,170,255,214,171,169,255,212,171,169,255,212,171,168,255,213,170,168,255,211,169,166,255,211,168,166,255, +212,169,165,255,210,167,163,255,211,167,162,255,210,166,160,255,210,164,160,255,209,165,159,255,208,163,157,255,207,162,156,255, +207,161,155,255,206,160,153,255,205,159,152,255,206,159,150,255,204,157,148,255,204,156,147,255,203,155,145,255,202,153,143,255, +201,153,142,255,202,152,140,255,200,150,138,255,199,149,135,255,199,148,134,255,197,146,131,255,198,145,130,255,197,144,127,255, +195,142,124,255,195,141,123,255,194,140,119,255,192,137,116,255,192,136,114,255,191,135,111,255,189,132,108,255,189,132,107,255, +188,131,107,255,186,130,105,255,185,129,105,255,184,128,104,255,182,127,103,255,181,126,102,255,179,124,101,255,178,124,100,255, +176,123,100,255,174,121, 98,255,173,120, 97,255,171,119, 97,255,169,117, 95,255,168,117, 94,255,167,116, 94,255,165,114, 92,255, +164,113, 91,255,162,113, 91,255,160,111, 89,255,159,110, 89,255,157,109, 88,255,155,107, 86,255,154,106, 86,255,152,106, 85,255, +150,104, 83,255,148,103, 83,255,147,102, 82,255,145,100, 80,255,143, 99, 80,255,142, 98, 79,255,139, 95, 77,255,137, 95, 76,255, +135, 93, 75,255,132, 91, 73,255,130, 90, 72,255,128, 89, 71,255,125, 86, 69,255,123, 85, 68,255,120, 82, 66,255,118, 81, 65,255, +115, 79, 63,255,112, 76, 61,255,110, 75, 60,255,106, 73, 58,255,103, 70, 56,255,100, 69, 54,255, 96, 66, 52,255, 93, 63, 49,255, + 89, 60, 48,255, 84, 57, 45,255, 80, 54, 42,255, 70, 56, 50,255, 61, 62, 62,255, 60, 60, 60,255,141,120,119,255,216,175,174,255, +215,173,172,255,214,173,172,255,213,173,171,255,214,172,171,255,214,172,170,255,213,171,169,255,213,171,168,255,213,170,167,255, +212,170,166,255,211,169,166,255,211,168,164,255,211,167,163,255,210,166,162,255,210,165,161,255,209,165,159,255,208,163,158,255, +208,162,156,255,207,161,155,255,207,161,153,255,206,160,152,255,205,159,151,255,205,157,149,255,204,156,147,255,203,155,145,255, +203,154,144,255,202,153,141,255,201,152,140,255,200,150,138,255,200,149,135,255,199,148,134,255,198,146,131,255,198,145,129,255, +196,144,127,255,196,142,124,255,195,141,121,255,194,139,119,255,192,137,116,255,192,136,113,255,191,134,111,255,190,133,108,255, +189,132,107,255,188,131,106,255,186,130,105,255,185,129,105,255,183,127,103,255,182,127,103,255,181,126,101,255,178,124,101,255, +177,123,100,255,176,122, 99,255,174,121, 98,255,172,120, 97,255,171,118, 96,255,169,117, 95,255,167,116, 94,255,166,115, 93,255, +164,114, 92,255,163,113, 92,255,161,112, 90,255,160,111, 90,255,158,110, 89,255,156,108, 87,255,154,107, 86,255,153,106, 86,255, +151,104, 84,255,149,103, 83,255,148,102, 82,255,145,101, 81,255,144, 99, 80,255,142, 98, 79,255,139, 97, 78,255,138, 95, 77,255, +136, 94, 76,255,133, 92, 74,255,130, 90, 73,255,129, 88, 71,255,126, 87, 69,255,123, 85, 68,255,121, 84, 66,255,119, 81, 65,255, +116, 79, 64,255,113, 77, 62,255,110, 75, 60,255,107, 73, 58,255,104, 71, 56,255,101, 69, 54,255, 97, 66, 52,255, 92, 63, 50,255, + 89, 60, 47,255, 84, 57, 45,255, 80, 54, 42,255, 69, 56, 50,255, 61, 62, 62,255, 60, 60, 60,255,141,120,120,255,217,175,175,255, +215,174,174,255,214,174,173,255,214,173,172,255,214,173,172,255,214,173,172,255,213,172,170,255,213,171,170,255,213,171,169,255, +213,170,168,255,212,170,167,255,211,169,165,255,211,168,164,255,210,167,163,255,210,166,162,255,209,165,161,255,209,165,160,255, +208,163,158,255,207,162,156,255,207,161,155,255,206,161,153,255,206,160,152,255,205,159,151,255,204,157,149,255,203,156,147,255, +203,156,146,255,203,154,143,255,202,153,142,255,201,152,140,255,200,150,137,255,199,149,136,255,199,148,134,255,198,146,131,255, +197,145,129,255,196,144,127,255,195,142,124,255,194,140,121,255,193,139,119,255,192,137,116,255,192,136,113,255,190,134,110,255, +190,133,107,255,188,131,106,255,187,131,106,255,185,130,104,255,184,128,104,255,182,127,103,255,181,126,102,255,180,125,101,255, +178,124,100,255,176,122, 99,255,175,122, 99,255,173,120, 98,255,171,119, 96,255,170,118, 96,255,168,117, 95,255,167,116, 94,255, +166,115, 93,255,164,114, 92,255,162,112, 91,255,161,112, 90,255,159,110, 89,255,157,109, 88,255,156,108, 87,255,154,106, 86,255, +152,105, 85,255,150,104, 84,255,148,103, 83,255,147,102, 82,255,145,101, 81,255,143, 99, 80,255,141, 97, 78,255,139, 96, 77,255, +136, 94, 75,255,134, 92, 74,255,132, 91, 73,255,129, 89, 72,255,127, 87, 70,255,124, 86, 69,255,121, 83, 67,255,119, 82, 66,255, +116, 80, 64,255,113, 77, 62,255,111, 76, 60,255,107, 73, 59,255,104, 71, 56,255,101, 69, 55,255, 97, 66, 52,255, 92, 63, 50,255, + 88, 60, 47,255, 84, 56, 44,255, 79, 53, 42,255, 69, 56, 51,255, 61, 62, 62,255, 60, 60, 60,255,142,121,121,255,217,176,176,255, +216,176,175,255,216,175,175,255,215,175,174,255,215,173,174,255,215,174,173,255,215,173,173,255,213,173,171,255,214,172,170,255, +213,171,170,255,213,171,168,255,213,170,168,255,212,170,167,255,211,168,165,255,210,167,164,255,210,167,163,255,209,165,161,255, +209,165,160,255,208,163,158,255,207,162,157,255,208,162,156,255,206,161,153,255,206,160,152,255,206,159,151,255,204,157,149,255, +203,156,147,255,204,156,146,255,202,154,143,255,202,153,142,255,201,152,140,255,200,150,137,255,200,149,136,255,199,148,133,255, +198,146,131,255,197,145,128,255,196,143,126,255,195,141,124,255,194,140,121,255,194,139,118,255,192,137,115,255,192,135,112,255, +191,134,110,255,189,132,107,255,188,131,107,255,187,130,106,255,185,129,104,255,184,128,104,255,181,127,103,255,181,126,102,255, +179,125,101,255,177,123,100,255,176,122, 99,255,175,122, 99,255,172,120, 97,255,171,119, 96,255,170,118, 96,255,167,116, 94,255, +166,115, 93,255,165,115, 93,255,163,113, 91,255,161,112, 91,255,160,111, 90,255,158,109, 88,255,156,108, 88,255,155,107, 87,255, +153,105, 85,255,151,105, 84,255,150,104, 84,255,147,102, 82,255,145,101, 81,255,144,100, 80,255,141, 98, 79,255,139, 96, 78,255, +137, 95, 77,255,135, 93, 74,255,132, 91, 73,255,131, 90, 72,255,128, 88, 70,255,125, 86, 69,255,122, 84, 67,255,120, 82, 66,255, +117, 80, 64,255,114, 78, 62,255,111, 76, 60,255,108, 74, 59,255,104, 71, 56,255,100, 69, 55,255, 97, 66, 52,255, 92, 63, 50,255, + 88, 60, 47,255, 83, 56, 44,255, 79, 53, 42,255, 69, 56, 50,255, 61, 62, 62,255, 60, 60, 60,255,142,121,122,255,218,178,178,255, +216,176,177,255,216,176,176,255,216,176,176,255,215,175,175,255,215,175,174,255,215,174,174,255,214,174,173,255,214,173,172,255, +214,172,171,255,213,172,170,255,213,171,169,255,213,170,168,255,212,169,167,255,211,168,165,255,211,168,164,255,210,167,162,255, +210,166,161,255,209,165,160,255,208,163,158,255,208,163,157,255,207,162,156,255,207,161,154,255,206,160,152,255,205,159,151,255, +205,158,149,255,204,157,147,255,204,156,146,255,202,154,143,255,202,153,141,255,201,151,140,255,200,150,138,255,200,149,135,255, +199,148,133,255,198,146,131,255,197,144,128,255,196,143,126,255,195,141,123,255,194,140,120,255,193,138,118,255,192,136,115,255, +191,135,111,255,190,133,109,255,189,132,107,255,188,131,106,255,185,129,105,255,184,129,104,255,183,128,104,255,182,126,102,255, +180,126,102,255,178,125,100,255,176,123,100,255,175,122, 99,255,173,121, 98,255,171,119, 97,255,170,119, 96,255,169,117, 95,255, +167,116, 94,255,165,115, 93,255,164,114, 92,255,162,112, 91,255,160,111, 90,255,159,110, 89,255,157,109, 88,255,156,108, 87,255, +154,107, 86,255,152,105, 85,255,150,104, 84,255,148,103, 83,255,147,101, 82,255,145,100, 81,255,142, 98, 79,255,140, 97, 78,255, +138, 96, 77,255,135, 93, 75,255,133, 92, 74,255,130, 90, 73,255,128, 88, 71,255,125, 86, 69,255,123, 84, 67,255,120, 82, 66,255, +117, 80, 65,255,114, 78, 62,255,111, 76, 60,255,108, 74, 59,255,104, 71, 56,255,100, 69, 55,255, 97, 66, 52,255, 92, 62, 49,255, + 87, 59, 47,255, 83, 56, 44,255, 78, 52, 41,255, 68, 55, 50,255, 61, 62, 62,255, 60, 60, 60,255,142,122,123,255,218,178,179,255, +216,177,178,255,217,177,178,255,216,177,177,255,216,176,176,255,215,175,176,255,216,175,175,255,215,174,174,255,214,174,174,255, +214,173,172,255,213,172,171,255,213,172,170,255,212,171,169,255,212,170,168,255,212,169,167,255,212,168,165,255,211,168,165,255, +210,167,163,255,209,166,162,255,209,165,160,255,209,163,158,255,208,163,157,255,207,162,156,255,207,161,154,255,205,160,153,255, +205,159,151,255,205,158,149,255,203,156,147,255,203,155,145,255,202,153,143,255,201,152,141,255,201,151,139,255,200,150,137,255, +199,149,135,255,198,147,133,255,197,145,130,255,196,144,128,255,196,143,125,255,194,141,122,255,194,140,120,255,193,138,117,255, +192,136,114,255,190,134,111,255,190,133,108,255,188,131,107,255,187,130,105,255,186,130,105,255,183,128,104,255,182,127,103,255, +181,126,102,255,179,124,101,255,178,124,100,255,176,123, 99,255,174,121, 98,255,173,120, 97,255,171,119, 97,255,169,118, 95,255, +168,117, 94,255,167,115, 93,255,164,114, 92,255,163,113, 91,255,161,112, 90,255,159,110, 89,255,158,109, 88,255,156,108, 87,255, +154,107, 86,255,153,106, 86,255,151,105, 85,255,149,103, 83,255,147,102, 82,255,145,100, 81,255,143, 98, 79,255,141, 97, 78,255, +139, 96, 76,255,136, 94, 75,255,133, 92, 74,255,131, 91, 73,255,129, 89, 71,255,126, 87, 70,255,123, 84, 67,255,121, 83, 66,255, +117, 81, 65,255,114, 78, 62,255,111, 76, 61,255,108, 74, 59,255,104, 71, 56,255,101, 69, 54,255, 96, 65, 52,255, 92, 62, 49,255, + 87, 59, 47,255, 81, 55, 43,255, 77, 51, 40,255, 68, 55, 49,255, 61, 62, 62,255, 60, 60, 60,255,143,122,123,255,219,180,181,255, +218,177,180,255,217,178,180,255,217,178,179,255,217,177,177,255,216,177,177,255,216,176,177,255,216,176,176,255,215,175,175,255, +214,175,174,255,214,173,172,255,213,173,172,255,214,173,171,255,212,171,169,255,213,171,168,255,212,170,167,255,212,169,166,255, +211,168,165,255,210,167,164,255,209,166,162,255,209,165,160,255,209,165,159,255,208,163,157,255,208,162,156,255,206,160,154,255, +205,159,152,255,206,159,151,255,204,157,148,255,204,156,147,255,203,155,145,255,202,153,143,255,202,153,141,255,201,152,139,255, +199,149,137,255,199,148,134,255,198,147,132,255,197,145,130,255,196,144,127,255,196,143,125,255,194,140,121,255,194,139,119,255, +193,138,116,255,191,135,113,255,190,134,109,255,189,132,107,255,187,131,106,255,186,130,106,255,185,129,104,255,183,127,103,255, +181,127,103,255,179,125,101,255,178,124,101,255,177,123,100,255,175,122, 98,255,174,121, 98,255,172,120, 97,255,170,118, 95,255, +169,117, 95,255,167,116, 94,255,165,114, 92,255,164,114, 92,255,162,112, 91,255,160,111, 89,255,158,110, 89,255,157,109, 88,255, +155,107, 87,255,153,106, 86,255,152,105, 85,255,150,103, 83,255,148,102, 82,255,146,101, 81,255,143, 99, 79,255,141, 97, 78,255, +139, 96, 78,255,137, 94, 75,255,134, 93, 74,255,132, 91, 73,255,129, 89, 71,255,127, 87, 70,255,123, 85, 68,255,121, 83, 66,255, +118, 81, 65,255,114, 78, 62,255,111, 76, 61,255,108, 74, 59,255,104, 71, 56,255,100, 68, 54,255, 95, 65, 51,255, 91, 61, 48,255, + 86, 58, 46,255, 81, 54, 43,255, 76, 51, 40,255, 67, 55, 49,255, 61, 62, 62,255, 60, 60, 60,255,143,123,124,255,219,180,182,255, +217,179,181,255,217,179,180,255,218,179,180,255,217,178,179,255,217,177,178,255,217,177,178,255,216,176,177,255,216,176,176,255, +215,175,175,255,215,174,174,255,214,174,173,255,214,173,172,255,213,172,171,255,213,171,169,255,213,171,168,255,212,170,167,255, +212,169,166,255,211,168,165,255,210,167,164,255,210,166,162,255,210,165,160,255,208,165,159,255,208,163,157,255,207,162,156,255, +206,160,154,255,205,160,152,255,205,159,151,255,204,157,149,255,204,156,147,255,202,155,145,255,202,153,143,255,202,152,140,255, +200,151,139,255,199,149,136,255,199,148,134,255,197,146,131,255,197,145,129,255,196,143,126,255,195,142,123,255,194,140,121,255, +193,138,118,255,192,137,114,255,191,134,112,255,190,133,108,255,188,131,107,255,187,130,106,255,186,130,105,255,184,128,104,255, +182,127,103,255,181,126,102,255,179,125,101,255,178,124,100,255,176,122,100,255,174,121, 98,255,173,120, 97,255,171,119, 96,255, +169,118, 95,255,168,117, 94,255,166,115, 93,255,164,114, 92,255,163,113, 92,255,161,112, 90,255,159,111, 89,255,158,110, 89,255, +156,108, 87,255,154,107, 86,255,152,106, 85,255,150,104, 84,255,148,102, 83,255,146,101, 82,255,144, 99, 80,255,141, 98, 79,255, +140, 96, 78,255,137, 94, 76,255,134, 93, 75,255,132, 91, 73,255,129, 89, 71,255,127, 87, 70,255,125, 85, 68,255,122, 83, 67,255, +118, 81, 65,255,115, 78, 62,255,111, 77, 61,255,107, 73, 59,255,104, 71, 56,255,100, 68, 54,255, 95, 64, 51,255, 90, 61, 48,255, + 85, 57, 45,255, 80, 54, 42,255, 75, 49, 38,255, 66, 53, 48,255, 61, 62, 62,255, 60, 60, 60,255,143,123,125,255,220,181,183,255, +218,180,182,255,218,179,181,255,217,179,181,255,218,178,180,255,217,178,180,255,216,178,179,255,217,177,178,255,216,177,178,255, +215,176,176,255,215,175,175,255,215,174,173,255,215,173,173,255,214,173,172,255,213,172,171,255,212,171,169,255,212,170,168,255, +212,170,167,255,212,169,166,255,211,168,165,255,210,167,164,255,209,166,161,255,209,165,161,255,208,165,159,255,207,163,157,255, +207,162,156,255,206,161,154,255,205,160,152,255,205,159,150,255,204,157,148,255,203,155,146,255,202,155,144,255,202,153,142,255, +201,152,140,255,200,151,138,255,199,149,135,255,198,147,134,255,197,146,131,255,197,144,127,255,195,143,126,255,195,141,123,255, +194,139,119,255,192,138,116,255,191,136,113,255,191,133,110,255,189,132,107,255,188,131,106,255,186,129,106,255,185,129,104,255, +183,128,103,255,181,126,102,255,180,125,101,255,179,124,101,255,176,123, 99,255,175,122, 98,255,174,121, 98,255,171,119, 96,255, +170,118, 95,255,168,117, 95,255,167,115, 93,255,165,115, 93,255,164,114, 92,255,162,112, 91,255,160,111, 90,255,158,110, 89,255, +156,108, 87,255,154,107, 86,255,153,106, 85,255,150,104, 84,255,149,103, 83,255,146,101, 82,255,144, 99, 80,255,142, 98, 79,255, +140, 97, 78,255,138, 95, 76,255,135, 93, 75,255,133, 92, 74,255,130, 89, 72,255,127, 88, 70,255,124, 85, 68,255,121, 83, 67,255, +118, 81, 65,255,115, 78, 62,255,111, 76, 61,255,107, 73, 59,255,103, 70, 56,255, 99, 67, 54,255, 94, 63, 50,255, 89, 61, 47,255, + 84, 56, 44,255, 79, 52, 41,255, 72, 48, 37,255, 65, 53, 47,255, 61, 62, 62,255, 60, 60, 60,255,143,124,125,255,220,182,185,255, +218,181,183,255,218,180,183,255,219,180,183,255,217,180,182,255,218,179,181,255,218,179,180,255,216,177,179,255,216,178,179,255, +217,177,178,255,215,176,176,255,216,175,175,255,215,175,174,255,215,174,173,255,214,173,172,255,214,173,171,255,212,171,169,255, +213,171,169,255,212,170,168,255,211,169,166,255,211,168,165,255,210,167,164,255,210,166,162,255,209,165,161,255,208,163,158,255, +207,162,157,255,206,162,155,255,206,160,153,255,206,159,152,255,205,158,150,255,203,156,148,255,203,156,146,255,203,155,144,255, +201,153,142,255,201,151,139,255,200,150,138,255,199,148,135,255,198,147,132,255,197,146,130,255,196,144,127,255,195,142,124,255, +194,141,121,255,193,138,118,255,192,137,115,255,191,135,112,255,190,132,108,255,188,132,107,255,187,131,105,255,185,129,105,255, +184,128,104,255,182,127,103,255,180,126,102,255,179,125,101,255,177,123,100,255,176,122, 99,255,174,121, 98,255,172,119, 97,255, +171,118, 96,255,169,118, 95,255,167,116, 94,255,166,115, 93,255,164,115, 93,255,162,113, 91,255,161,112, 90,255,159,110, 89,255, +157,108, 88,255,155,107, 87,255,153,106, 86,255,151,104, 84,255,149,103, 83,255,147,102, 82,255,145,100, 80,255,143, 98, 79,255, +141, 97, 78,255,138, 95, 76,255,135, 93, 75,255,133, 92, 74,255,130, 90, 72,255,127, 88, 70,255,124, 85, 68,255,121, 83, 67,255, +118, 81, 64,255,114, 78, 62,255,110, 76, 61,255,107, 73, 58,255,102, 70, 55,255, 98, 67, 53,255, 93, 63, 50,255, 88, 59, 47,255, + 83, 55, 44,255, 77, 51, 40,255, 71, 47, 36,255, 63, 52, 47,255, 61, 62, 62,255, 60, 60, 60,255,144,124,126,255,221,183,186,255, +219,181,184,255,219,181,184,255,218,181,183,255,219,180,183,255,218,180,182,255,217,179,181,255,217,178,180,255,217,178,180,255, +216,178,179,255,216,177,178,255,216,176,176,255,216,175,175,255,214,175,174,255,215,174,173,255,214,173,172,255,213,172,171,255, +213,171,169,255,213,170,169,255,212,169,168,255,211,169,166,255,210,168,164,255,210,167,163,255,210,166,162,255,208,165,160,255, +208,164,159,255,207,162,156,255,206,161,155,255,206,161,153,255,205,159,151,255,204,158,150,255,204,156,147,255,203,155,145,255, +202,154,144,255,201,152,141,255,200,151,139,255,199,149,136,255,198,148,134,255,198,146,131,255,197,145,128,255,196,143,126,255, +195,141,123,255,193,140,120,255,193,137,117,255,192,136,113,255,190,134,109,255,189,132,107,255,188,130,106,255,186,130,105,255, +184,129,104,255,182,128,104,255,181,126,102,255,179,125,101,255,178,124,101,255,176,122, 99,255,175,122, 98,255,173,120, 97,255, +171,120, 97,255,170,118, 96,255,168,117, 94,255,166,116, 94,255,165,115, 93,255,163,113, 91,255,161,112, 90,255,160,111, 89,255, +157,109, 88,255,156,108, 87,255,154,107, 86,255,152,105, 84,255,150,103, 83,255,148,102, 82,255,145,100, 80,255,143, 99, 79,255, +141, 97, 78,255,138, 95, 76,255,136, 93, 75,255,133, 92, 74,255,131, 90, 72,255,127, 88, 70,255,125, 85, 68,255,121, 83, 67,255, +118, 81, 64,255,114, 78, 62,255,110, 75, 60,255,106, 72, 58,255,102, 69, 55,255, 96, 65, 52,255, 92, 62, 49,255, 87, 58, 46,255, + 81, 54, 42,255, 75, 50, 39,255, 68, 44, 34,255, 62, 51, 46,255, 61, 62, 62,255, 60, 60, 60,255,144,124,126,255,221,183,187,255, +220,182,185,255,219,182,185,255,218,181,184,255,218,181,183,255,219,180,183,255,218,180,182,255,217,179,181,255,217,179,180,255, +216,178,179,255,216,177,179,255,216,177,178,255,215,176,176,255,215,175,175,255,214,175,174,255,215,173,173,255,214,173,172,255, +213,172,171,255,212,171,169,255,212,170,169,255,211,170,167,255,211,168,165,255,211,167,164,255,210,167,162,255,209,165,161,255, +208,164,160,255,208,164,158,255,207,162,156,255,206,161,155,255,206,160,153,255,204,158,150,255,204,157,148,255,204,156,146,255, +202,155,145,255,202,153,142,255,201,152,140,255,200,150,138,255,199,149,135,255,197,147,132,255,197,146,130,255,196,144,127,255, +194,142,124,255,194,140,122,255,193,138,118,255,191,136,114,255,191,135,111,255,190,133,108,255,188,131,107,255,186,130,105,255, +185,129,105,255,183,127,103,255,182,126,102,255,180,126,102,255,178,124,100,255,177,123, 99,255,176,122, 99,255,174,121, 98,255, +172,120, 97,255,171,119, 96,255,169,117, 95,255,167,116, 94,255,166,115, 93,255,163,113, 91,255,162,112, 91,255,160,111, 90,255, +158,109, 88,255,156,108, 87,255,154,107, 86,255,152,105, 84,255,150,103, 83,255,148,102, 82,255,145,100, 80,255,143, 99, 79,255, +141, 97, 78,255,139, 95, 76,255,136, 94, 75,255,134, 92, 74,255,131, 90, 72,255,128, 88, 70,255,124, 85, 68,255,121, 83, 67,255, +117, 80, 64,255,113, 78, 62,255,109, 75, 60,255,105, 71, 57,255,100, 68, 54,255, 95, 64, 51,255, 91, 60, 48,255, 85, 58, 45,255, + 79, 53, 41,255, 72, 48, 37,255, 64, 43, 33,255, 60, 50, 45,255, 62, 62, 62,255, 60, 60, 60,255,144,125,126,255,221,185,188,255, +220,182,186,255,219,183,186,255,220,182,185,255,219,181,185,255,218,182,184,255,218,181,184,255,218,180,182,255,217,180,181,255, +218,179,181,255,217,178,180,255,216,178,179,255,217,177,178,255,215,176,176,255,216,175,176,255,214,175,175,255,214,174,173,255, +214,173,172,255,213,172,171,255,213,171,170,255,212,170,168,255,211,169,167,255,210,168,165,255,211,168,164,255,209,166,163,255, +208,165,161,255,209,164,159,255,207,163,157,255,207,162,156,255,206,161,154,255,205,159,151,255,205,158,150,255,204,157,148,255, +203,155,146,255,202,154,143,255,202,153,142,255,200,151,139,255,199,149,136,255,199,148,134,255,197,146,131,255,197,145,128,255, +196,143,126,255,195,141,123,255,194,139,119,255,193,138,116,255,191,135,112,255,190,133,109,255,188,131,107,255,187,130,106,255, +185,129,105,255,184,129,104,255,182,127,103,255,181,126,102,255,179,124,101,255,178,124,100,255,176,123,100,255,174,121, 98,255, +173,120, 97,255,171,119, 97,255,169,117, 95,255,168,116, 94,255,166,115, 93,255,164,114, 92,255,162,113, 91,255,161,111, 90,255, +158,109, 88,255,156,108, 87,255,155,107, 86,255,152,105, 84,255,150,104, 84,255,148,102, 82,255,146,100, 80,255,143, 99, 79,255, +142, 98, 78,255,139, 95, 76,255,136, 94, 75,255,134, 92, 74,255,130, 90, 72,255,127, 88, 70,255,123, 85, 68,255,121, 83, 67,255, +117, 80, 64,255,112, 77, 62,255,109, 74, 60,255,104, 71, 57,255, 99, 67, 53,255, 95, 64, 51,255, 89, 60, 47,255, 84, 55, 44,255, + 77, 51, 40,255, 69, 46, 35,255, 61, 39, 30,255, 57, 48, 44,255, 62, 62, 62,255, 60, 60, 60,255,144,125,127,255,222,184,188,255, +220,183,187,255,220,183,187,255,219,183,186,255,220,182,185,255,219,181,185,255,218,182,184,255,219,181,183,255,218,180,182,255, +217,180,181,255,218,178,180,255,217,178,180,255,217,178,179,255,216,177,178,255,216,176,176,255,215,176,176,255,214,175,175,255, +214,174,173,255,214,172,171,255,213,172,170,255,213,171,169,255,212,170,168,255,211,169,166,255,211,168,165,255,210,167,163,255, +209,166,162,255,209,165,160,255,208,163,158,255,207,162,156,255,207,161,155,255,206,160,153,255,205,158,151,255,204,157,149,255, +203,156,147,255,202,154,145,255,201,153,142,255,201,152,141,255,200,150,138,255,199,149,135,255,198,147,132,255,197,145,130,255, +196,144,127,255,195,142,123,255,194,139,121,255,192,138,117,255,191,136,114,255,190,134,110,255,189,131,107,255,188,131,106,255, +186,130,105,255,184,128,105,255,183,127,103,255,181,126,102,255,180,125,101,255,178,124,101,255,177,123,100,255,175,122, 98,255, +173,121, 98,255,172,120, 97,255,170,118, 95,255,168,117, 94,255,166,116, 94,255,164,114, 92,255,163,113, 91,255,161,112, 90,255, +159,110, 88,255,157,108, 87,255,155,108, 87,255,153,106, 85,255,150,105, 84,255,149,103, 83,255,146,101, 82,255,143, 99, 80,255, +142, 98, 79,255,139, 95, 76,255,136, 94, 75,255,133, 92, 74,255,130, 90, 72,255,127, 88, 70,255,123, 85, 69,255,120, 83, 66,255, +116, 80, 64,255,112, 77, 61,255,108, 74, 59,255,103, 70, 56,255, 98, 67, 53,255, 93, 62, 49,255, 87, 59, 47,255, 81, 55, 43,255, + 74, 49, 39,255, 65, 43, 34,255, 53, 35, 27,255, 42, 39, 37,255, 62, 62, 62,255, 60, 60, 60,255,144,125,127,255,222,185,189,255, +221,183,187,255,220,184,187,255,219,183,187,255,220,182,186,255,220,182,185,255,219,181,185,255,218,181,184,255,219,180,183,255, +218,180,182,255,217,179,181,255,217,179,180,255,216,178,179,255,217,177,178,255,216,176,177,255,216,175,176,255,215,175,175,255, +215,174,174,255,213,173,172,255,213,172,171,255,212,171,170,255,212,170,168,255,211,170,167,255,211,169,166,255,210,167,164,255, +209,166,163,255,209,166,162,255,208,164,159,255,207,163,158,255,207,162,156,255,206,161,154,255,205,160,152,255,205,158,150,255, +203,156,148,255,203,155,146,255,202,154,144,255,201,152,141,255,200,151,139,255,199,149,137,255,198,148,134,255,197,146,131,255, +197,144,128,255,195,142,125,255,194,141,122,255,193,138,118,255,192,137,115,255,191,135,111,255,190,132,108,255,188,131,106,255, +187,130,105,255,185,128,104,255,184,128,103,255,182,127,103,255,180,125,102,255,179,125,101,255,178,124,100,255,175,122, 99,255, +174,121, 98,255,172,120, 97,255,170,118, 95,255,168,117, 95,255,167,116, 94,255,165,114, 92,255,163,113, 91,255,161,112, 90,255, +159,110, 89,255,157,109, 88,255,155,108, 87,255,153,106, 85,255,151,105, 85,255,149,103, 84,255,146,101, 82,255,144, 99, 80,255, +142, 98, 79,255,139, 96, 77,255,135, 94, 75,255,133, 92, 74,255,130, 90, 72,255,126, 87, 70,255,124, 84, 68,255,119, 82, 66,255, +116, 79, 63,255,111, 76, 61,255,106, 73, 58,255,102, 69, 55,255, 97, 65, 52,255, 91, 61, 48,255, 86, 57, 45,255, 78, 52, 41,255, + 70, 46, 36,255, 60, 39, 29,255, 32, 23, 20,255, 28, 28, 28,255, 62, 62, 62,255, 60, 60, 60,255,144,125,128,255,222,186,190,255, +221,184,188,255,220,183,188,255,221,183,188,255,220,183,187,255,219,182,186,255,219,183,186,255,219,182,185,255,218,181,184,255, +219,181,184,255,218,180,182,255,217,180,181,255,218,179,181,255,216,178,179,255,216,177,178,255,215,177,177,255,216,175,176,255, +215,175,175,255,215,174,173,255,213,173,172,255,213,172,171,255,212,172,170,255,212,170,168,255,211,169,167,255,211,168,164,255, +210,167,163,255,210,166,162,255,208,164,160,255,208,163,158,255,207,163,157,255,207,161,154,255,206,160,153,255,205,159,151,255, +204,157,149,255,203,156,147,255,203,155,144,255,201,153,142,255,201,151,139,255,200,150,137,255,198,148,135,255,198,147,132,255, +197,145,129,255,196,143,126,255,195,141,123,255,194,140,120,255,192,137,117,255,191,135,113,255,190,134,110,255,188,131,107,255, +187,130,106,255,186,130,106,255,184,128,104,255,183,128,104,255,181,126,102,255,179,125,101,255,178,124,100,255,175,122, 99,255, +174,121, 98,255,172,120, 97,255,170,118, 95,255,169,117, 95,255,167,116, 94,255,165,114, 92,255,163,113, 91,255,162,113, 91,255, +159,111, 89,255,157,109, 89,255,156,108, 88,255,153,106, 86,255,151,105, 85,255,149,103, 84,255,146,101, 82,255,144, 99, 80,255, +142, 98, 79,255,139, 96, 77,255,135, 93, 75,255,133, 92, 74,255,130, 89, 72,255,126, 87, 70,255,122, 84, 67,255,119, 82, 65,255, +115, 78, 63,255,110, 75, 60,255,106, 72, 58,255,100, 68, 54,255, 95, 64, 51,255, 90, 60, 48,255, 83, 56, 43,255, 74, 50, 39,255, + 65, 42, 33,255, 51, 36, 29,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 60, 60, 60,255,144,125,128,255,222,186,190,255, +221,185,189,255,221,184,189,255,220,183,188,255,220,184,187,255,219,183,187,255,220,182,187,255,220,182,185,255,219,182,185,255, +219,181,184,255,218,180,183,255,218,180,182,255,218,179,181,255,217,178,180,255,217,177,179,255,216,176,178,255,216,176,177,255, +215,175,175,255,214,175,174,255,214,173,173,255,214,173,172,255,213,171,170,255,212,171,169,255,212,170,167,255,210,168,166,255, +211,168,164,255,210,167,163,255,209,165,161,255,208,164,160,255,208,163,157,255,207,162,156,255,206,160,154,255,205,159,152,255, +204,158,150,255,203,156,148,255,202,155,145,255,202,153,143,255,201,152,141,255,200,150,138,255,198,149,135,255,198,147,133,255, +198,146,130,255,196,144,127,255,195,142,124,255,194,139,121,255,192,138,117,255,191,136,114,255,191,134,110,255,189,132,107,255, +188,131,106,255,187,130,105,255,184,129,104,255,183,128,104,255,181,126,102,255,180,125,101,255,178,124,101,255,176,122, 99,255, +174,121, 98,255,173,120, 97,255,170,118, 95,255,169,117, 95,255,167,116, 94,255,165,115, 93,255,164,114, 92,255,162,113, 91,255, +160,111, 89,255,157,110, 89,255,156,108, 88,255,153,106, 86,255,151,105, 85,255,149,104, 84,255,146,101, 82,255,144,100, 81,255, +142, 98, 79,255,139, 96, 77,255,135, 93, 75,255,132, 91, 73,255,129, 89, 71,255,125, 87, 70,255,122, 84, 67,255,118, 81, 65,255, +114, 78, 63,255,109, 75, 60,255,104, 71, 57,255, 99, 67, 53,255, 93, 63, 50,255, 87, 59, 46,255, 80, 53, 42,255, 70, 47, 36,255, + 57, 37, 28,255, 11, 8, 7,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 60, 60, 60,255,144,126,128,255,222,186,191,255, +221,185,190,255,221,185,189,255,221,184,189,255,220,183,188,255,220,183,187,255,219,182,186,255,219,183,186,255,220,182,185,255, +219,182,185,255,219,180,183,255,218,180,183,255,217,180,182,255,217,178,180,255,216,178,179,255,217,177,178,255,215,176,177,255, +215,176,177,255,214,174,174,255,215,174,173,255,214,173,172,255,213,172,170,255,212,171,170,255,212,170,169,255,211,168,166,255, +210,168,165,255,210,167,164,255,209,166,162,255,208,165,160,255,208,164,159,255,207,162,156,255,206,161,155,255,206,160,153,255, +204,158,150,255,203,157,148,255,203,156,146,255,202,154,143,255,201,152,141,255,199,151,139,255,199,149,136,255,198,148,133,255, +198,146,131,255,196,144,128,255,195,142,124,255,193,140,122,255,193,138,118,255,192,137,115,255,190,134,111,255,190,133,108,255, +188,132,107,255,186,130,105,255,185,129,104,255,183,128,104,255,181,126,102,255,180,125,101,255,178,124,101,255,176,122, 99,255, +175,121, 98,255,173,120, 97,255,171,119, 96,255,169,118, 95,255,168,117, 95,255,165,115, 93,255,164,114, 92,255,162,113, 91,255, +160,111, 89,255,158,110, 89,255,156,109, 88,255,154,106, 86,255,151,105, 85,255,149,104, 84,255,146,101, 82,255,143, 99, 80,255, +142, 98, 79,255,138, 95, 76,255,135, 93, 75,255,132, 91, 73,255,129, 89, 71,255,124, 86, 69,255,122, 84, 66,255,118, 81, 64,255, +114, 78, 62,255,108, 74, 59,255,103, 69, 56,255, 97, 66, 52,255, 91, 61, 48,255, 84, 57, 45,255, 75, 49, 39,255, 64, 41, 32,255, + 28, 19, 16,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,126,128,255,222,187,191,255, +221,185,189,255,221,184,190,255,221,184,189,255,220,184,188,255,221,183,187,255,220,184,188,255,220,183,186,255,220,183,186,255, +219,182,185,255,218,181,184,255,219,181,183,255,218,179,182,255,218,179,181,255,217,179,180,255,216,177,180,255,216,177,178,255, +216,176,177,255,214,176,176,255,215,174,174,255,214,174,173,255,213,172,171,255,212,171,170,255,212,171,169,255,212,170,167,255, +211,168,165,255,211,168,164,255,209,166,162,255,208,165,161,255,208,164,159,255,207,162,157,255,207,161,155,255,206,160,153,255, +204,158,150,255,204,157,149,255,203,156,147,255,202,154,144,255,201,153,141,255,201,151,139,255,199,149,137,255,198,148,134,255, +196,146,131,255,196,144,128,255,195,143,125,255,195,141,122,255,193,139,119,255,192,137,115,255,192,135,112,255,190,133,109,255, +189,132,107,255,186,130,105,255,185,129,104,255,184,128,104,255,181,126,102,255,180,125,101,255,178,124,100,255,177,123,100,255, +175,122, 99,255,173,121, 98,255,171,119, 96,255,170,118, 96,255,168,117, 95,255,165,115, 93,255,164,114, 92,255,162,113, 91,255, +160,111, 89,255,158,110, 88,255,156,109, 88,255,154,106, 86,255,151,105, 85,255,150,104, 84,255,146,101, 82,255,143, 99, 80,255, +141, 98, 79,255,138, 95, 76,255,135, 93, 74,255,131, 91, 73,255,128, 88, 71,255,124, 85, 69,255,120, 82, 66,255,116, 80, 64,255, +112, 76, 61,255,107, 73, 58,255,102, 69, 55,255, 96, 64, 51,255, 89, 60, 47,255, 80, 54, 42,255, 70, 46, 35,255, 47, 32, 25,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,126,128,255,222,187,191,255, +221,185,190,255,221,184,189,255,221,185,190,255,221,185,188,255,221,184,188,255,220,183,188,255,219,183,187,255,219,182,186,255, +220,182,186,255,218,181,184,255,219,181,184,255,218,180,183,255,217,179,181,255,218,179,181,255,216,178,179,255,216,177,178,255, +216,176,177,255,215,175,176,255,215,174,175,255,214,174,173,255,213,172,172,255,212,172,171,255,212,171,169,255,212,170,168,255, +211,169,166,255,211,168,165,255,209,166,163,255,209,165,161,255,208,164,159,255,207,163,157,255,206,162,155,255,206,161,154,255, +204,159,151,255,204,157,149,255,203,156,147,255,202,154,144,255,201,153,142,255,201,152,140,255,199,149,137,255,198,148,134,255, +197,146,131,255,196,144,128,255,196,143,125,255,195,141,123,255,193,139,119,255,192,137,116,255,191,136,113,255,190,133,109,255, +189,132,107,255,186,130,105,255,185,129,104,255,184,128,104,255,182,127,103,255,181,126,102,255,179,125,101,255,177,123,100,255, +175,122, 99,255,174,121, 98,255,171,119, 96,255,170,118, 95,255,168,117, 95,255,166,115, 93,255,164,114, 92,255,162,113, 91,255, +160,111, 89,255,158,109, 88,255,156,108, 87,255,154,106, 86,255,151,105, 85,255,149,103, 83,255,147,101, 81,255,144, 99, 80,255, +141, 97, 79,255,137, 95, 76,255,134, 92, 74,255,130, 90, 72,255,127, 87, 70,255,123, 85, 68,255,119, 82, 65,255,115, 79, 63,255, +110, 76, 60,255,106, 72, 57,255,100, 68, 54,255, 93, 63, 50,255, 86, 57, 45,255, 75, 49, 39,255, 53, 36, 29,255, 2, 2, 2,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,125,128,255,222,186,191,255, +221,184,190,255,221,185,189,255,221,185,190,255,221,185,188,255,220,184,189,255,221,183,188,255,219,184,187,255,220,183,187,255, +220,183,186,255,218,181,185,255,219,181,184,255,218,181,183,255,218,179,181,255,218,179,181,255,216,179,180,255,216,177,179,255, +215,177,178,255,215,175,176,255,214,174,175,255,214,174,174,255,213,173,172,255,213,172,171,255,212,171,170,255,211,170,168,255, +211,169,167,255,211,168,165,255,209,166,163,255,209,165,162,255,208,164,160,255,207,163,157,255,207,162,156,255,206,161,154,255, +205,159,151,255,204,157,149,255,203,156,147,255,201,154,145,255,202,153,141,255,201,152,139,255,199,149,137,255,198,148,134,255, +197,147,132,255,197,144,129,255,196,143,125,255,195,141,123,255,193,139,119,255,192,137,116,255,191,135,114,255,190,134,109,255, +189,132,107,255,187,130,105,255,185,129,104,255,184,129,105,255,182,127,103,255,181,126,102,255,179,125,101,255,177,123,100,255, +176,122, 99,255,174,121, 98,255,171,119, 96,255,170,118, 95,255,168,117, 95,255,165,115, 93,255,164,114, 92,255,162,112, 91,255, +159,110, 89,255,157,109, 88,255,156,108, 87,255,153,106, 85,255,151,105, 84,255,149,103, 83,255,146,101, 81,255,143, 99, 79,255, +140, 97, 78,255,137, 94, 76,255,133, 91, 74,255,130, 90, 72,255,126, 87, 70,255,122, 84, 67,255,119, 81, 65,255,114, 78, 63,255, +110, 75, 59,255,104, 70, 57,255, 98, 67, 52,255, 91, 61, 49,255, 80, 53, 41,255, 61, 41, 33,255, 10, 7, 6,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,125,128,255,222,186,191,255, +221,184,190,255,221,185,189,255,221,185,188,255,220,185,189,255,221,184,189,255,220,183,188,255,219,183,187,255,220,183,187,255, +220,183,186,255,218,181,185,255,219,181,184,255,217,181,182,255,218,180,182,255,218,180,182,255,216,178,180,255,217,177,179,255, +216,177,178,255,216,175,176,255,215,175,176,255,215,175,175,255,213,173,173,255,213,172,171,255,212,171,170,255,212,170,169,255, +211,169,167,255,211,168,166,255,209,167,163,255,209,165,162,255,208,164,160,255,208,163,158,255,207,162,155,255,206,161,154,255, +205,159,151,255,204,157,149,255,203,156,147,255,202,154,145,255,201,153,142,255,201,152,139,255,199,149,136,255,198,148,134,255, +197,146,131,255,196,144,129,255,196,142,125,255,195,141,121,255,193,139,119,255,192,137,116,255,191,135,112,255,190,134,109,255, +189,132,107,255,186,130,105,255,186,130,105,255,184,129,104,255,182,127,103,255,181,126,102,255,179,125,101,255,177,123, 99,255, +176,122, 99,255,174,121, 98,255,171,119, 97,255,170,118, 95,255,168,117, 94,255,165,115, 92,255,163,113, 92,255,162,112, 91,255, +159,110, 89,255,157,109, 88,255,156,108, 87,255,153,106, 85,255,151,104, 84,255,148,102, 82,255,145,101, 81,255,142, 98, 79,255, +139, 96, 77,255,135, 94, 75,255,132, 91, 73,255,128, 88, 71,255,125, 86, 69,255,121, 84, 67,255,117, 80, 64,255,112, 77, 62,255, +108, 73, 58,255,102, 69, 55,255, 95, 65, 51,255, 86, 57, 45,255, 68, 45, 37,255, 18, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,125,127,255,222,185,190,255, +221,185,189,255,221,185,189,255,220,185,188,255,221,184,189,255,220,184,188,255,219,183,188,255,220,183,187,255,220,182,187,255, +220,183,186,255,218,181,185,255,219,181,184,255,218,180,183,255,217,180,183,255,218,180,182,255,216,178,180,255,217,177,179,255, +216,177,178,255,216,176,177,255,215,176,176,255,215,175,175,255,213,173,173,255,213,172,171,255,212,171,170,255,212,170,169,255, +211,170,167,255,211,169,166,255,209,167,163,255,209,166,162,255,208,165,160,255,208,163,158,255,207,162,155,255,206,161,154,255, +205,159,152,255,204,157,150,255,203,156,147,255,202,154,144,255,201,152,141,255,200,151,139,255,199,149,136,255,198,148,133,255, +197,146,131,255,196,144,128,255,195,142,125,255,194,141,122,255,193,138,119,255,192,137,115,255,192,134,113,255,190,133,109,255, +188,131,107,255,186,131,105,255,185,129,105,255,184,128,104,255,182,128,103,255,181,126,102,255,179,125,101,255,177,123,100,255, +176,123, 99,255,174,121, 98,255,172,119, 97,255,170,118, 95,255,167,116, 94,255,165,114, 92,255,163,113, 91,255,161,112, 90,255, +159,110, 89,255,156,108, 88,255,154,107, 86,255,152,105, 85,255,150,103, 83,255,146,101, 82,255,144,100, 80,255,140, 97, 78,255, +137, 95, 76,255,134, 93, 75,255,131, 90, 73,255,128, 88, 71,255,125, 86, 69,255,121, 83, 66,255,116, 79, 63,255,111, 76, 61,255, +106, 72, 57,255, 98, 67, 53,255, 88, 58, 46,255, 78, 55, 46,255, 23, 18, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,125,127,255,221,185,189,255, +220,184,188,255,220,184,189,255,221,184,189,255,221,184,189,255,220,183,188,255,219,183,187,255,220,183,187,255,219,182,187,255, +220,183,186,255,218,181,184,255,218,182,185,255,219,181,184,255,217,180,182,255,218,180,182,255,216,178,180,255,216,177,179,255, +215,177,178,255,216,176,177,255,215,175,176,255,215,175,175,255,213,173,173,255,213,172,172,255,212,171,170,255,212,170,169,255, +211,170,167,255,211,169,166,255,209,167,163,255,209,166,162,255,208,164,160,255,207,162,158,255,207,162,155,255,206,161,153,255, +205,159,151,255,204,157,148,255,203,156,147,255,202,154,144,255,201,152,141,255,200,151,139,255,199,148,136,255,198,147,133,255, +197,146,130,255,195,143,127,255,194,142,124,255,194,140,122,255,192,138,118,255,192,136,115,255,191,134,112,255,189,132,108,255, +188,131,107,255,186,130,105,255,185,129,105,255,184,128,104,255,181,126,102,255,180,126,102,255,179,125,101,255,177,123,100,255, +175,122, 99,255,173,121, 98,255,171,119, 96,255,169,117, 95,255,166,116, 94,255,164,114, 92,255,162,112, 91,255,160,111, 90,255, +157,109, 88,255,155,108, 87,255,153,106, 86,255,151,104, 84,255,148,102, 82,255,144,100, 81,255,141, 97, 78,255,138, 95, 77,255, +136, 94, 75,255,132, 91, 73,255,129, 89, 71,255,127, 87, 70,255,123, 84, 67,255,119, 81, 65,255,114, 78, 62,255,108, 74, 59,255, +101, 68, 55,255, 91, 62, 49,255, 82, 59, 50,255, 28, 23, 21,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,143,124,126,255,221,183,187,255, +219,183,187,255,219,183,187,255,219,184,187,255,219,184,187,255,219,184,187,255,220,183,187,255,220,182,186,255,219,183,186,255, +218,181,186,255,219,181,185,255,219,181,184,255,217,181,183,255,218,179,182,255,217,179,181,255,217,178,181,255,216,177,179,255, +215,177,178,255,215,176,177,255,215,175,176,255,215,175,175,255,213,173,173,255,213,172,172,255,212,172,171,255,212,170,168,255, +211,169,167,255,211,168,166,255,209,166,163,255,209,165,162,255,208,164,160,255,207,162,157,255,206,161,156,255,205,160,153,255, +204,158,150,255,204,157,148,255,203,155,145,255,201,153,143,255,201,152,140,255,200,150,138,255,198,148,135,255,198,147,132,255, +197,145,129,255,195,143,127,255,194,142,123,255,193,140,120,255,192,137,117,255,191,136,113,255,189,134,110,255,189,132,108,255, +188,131,106,255,186,129,105,255,185,128,104,255,184,128,104,255,181,126,102,255,180,125,101,255,178,124,100,255,176,123, 99,255, +174,121, 98,255,172,119, 97,255,170,118, 96,255,167,116, 94,255,166,114, 92,255,163,113, 91,255,160,111, 90,255,158,109, 88,255, +156,108, 87,255,154,107, 86,255,151,104, 84,255,148,103, 83,255,145,100, 81,255,142, 98, 79,255,139, 96, 78,255,136, 94, 76,255, +133, 92, 74,255,131, 90, 72,255,128, 88, 71,255,124, 85, 68,255,120, 82, 65,255,115, 79, 63,255,110, 75, 60,255,104, 70, 56,255, + 94, 63, 50,255, 82, 60, 50,255, 28, 24, 22,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,143,124,126,255,220,183,186,255, +219,182,186,255,219,182,186,255,220,183,187,255,220,183,187,255,220,183,187,255,220,183,187,255,220,183,186,255,219,182,186,255, +218,182,185,255,219,181,184,255,219,180,184,255,218,181,182,255,218,179,182,255,217,179,181,255,217,179,180,255,216,177,179,255, +215,177,178,255,215,176,177,255,214,175,176,255,215,175,174,255,213,173,173,255,213,172,172,255,213,172,171,255,211,170,168,255, +211,169,167,255,211,168,165,255,209,166,163,255,208,165,161,255,208,164,160,255,206,162,157,255,206,161,155,255,205,160,152,255, +204,158,150,255,203,156,147,255,202,155,145,255,201,153,142,255,201,151,140,255,200,150,137,255,198,148,134,255,197,146,132,255, +197,145,128,255,195,143,125,255,194,140,122,255,192,139,119,255,192,137,115,255,191,135,112,255,190,133,109,255,188,132,107,255, +186,130,106,255,185,129,104,255,184,128,104,255,182,127,103,255,181,126,102,255,178,125,101,255,177,123,100,255,175,122, 98,255, +173,120, 97,255,171,118, 96,255,168,117, 95,255,166,115, 93,255,164,114, 92,255,162,112, 90,255,159,111, 89,255,156,108, 88,255, +154,107, 87,255,151,105, 84,255,149,102, 82,255,146,101, 81,255,142, 98, 79,255,140, 96, 77,255,137, 94, 76,255,134, 92, 74,255, +131, 90, 73,255,129, 89, 71,255,125, 86, 69,255,121, 82, 66,255,116, 79, 63,255,110, 76, 60,255,105, 71, 56,255, 97, 66, 52,255, + 80, 60, 50,255, 24, 21, 20,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,143,123,124,255,219,182,184,255, +219,182,185,255,219,181,185,255,219,182,186,255,219,183,186,255,218,183,185,255,219,182,186,255,219,182,186,255,219,182,185,255, +219,182,185,255,218,180,184,255,218,181,183,255,218,180,183,255,217,179,182,255,216,179,181,255,217,178,179,255,216,177,179,255, +215,177,178,255,216,175,176,255,214,175,175,255,214,174,174,255,214,173,172,255,213,172,172,255,213,172,170,255,211,170,168,255, +211,169,167,255,211,168,165,255,209,166,163,255,208,165,161,255,208,164,159,255,206,162,156,255,206,161,155,255,205,159,152,255, +204,157,149,255,203,155,146,255,202,154,144,255,200,152,141,255,200,150,138,255,199,149,136,255,197,147,133,255,197,145,130,255, +196,144,127,255,195,141,124,255,194,140,120,255,193,138,117,255,191,136,114,255,190,133,110,255,189,132,107,255,187,130,106,255, +186,129,105,255,184,129,105,255,182,127,103,255,181,126,102,255,179,125,101,255,177,123,100,255,175,122, 99,255,173,120, 97,255, +171,119, 96,255,169,118, 95,255,166,115, 93,255,164,114, 92,255,162,112, 91,255,159,110, 89,255,157,109, 88,255,154,107, 86,255, +151,104, 84,255,149,103, 83,255,145,101, 81,255,142, 98, 79,255,139, 96, 77,255,137, 95, 76,255,134, 92, 74,255,131, 90, 73,255, +129, 89, 71,255,125, 86, 69,255,121, 83, 66,255,116, 80, 64,255,110, 76, 60,255,105, 72, 57,255, 98, 66, 52,255, 79, 58, 50,255, + 12, 11, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,142,122,124,255,219,180,183,255, +217,180,183,255,218,181,184,255,219,181,184,255,218,181,185,255,219,181,185,255,219,181,185,255,218,182,185,255,219,181,184,255, +217,180,183,255,217,180,183,255,218,180,182,255,217,179,181,255,216,178,181,255,217,178,180,255,216,178,179,255,216,177,178,255, +216,176,178,255,214,176,176,255,214,175,175,255,214,174,174,255,214,172,172,255,213,172,171,255,212,171,170,255,211,170,168,255, +211,169,166,255,210,168,165,255,209,166,162,255,208,165,161,255,208,163,159,255,206,162,156,255,206,160,153,255,205,159,151,255, +203,157,148,255,202,155,145,255,202,153,142,255,200,152,140,255,199,150,137,255,198,148,134,255,197,146,131,255,196,145,128,255, +195,142,125,255,194,141,122,255,193,139,118,255,191,136,115,255,190,134,111,255,189,132,108,255,187,130,106,255,186,130,105,255, +185,129,104,255,182,127,103,255,181,126,102,255,179,125,101,255,177,123,100,255,176,122, 99,255,173,120, 98,255,171,119, 96,255, +169,118, 95,255,167,116, 93,255,164,114, 92,255,162,113, 91,255,159,110, 89,255,157,109, 88,255,154,107, 87,255,151,104, 84,255, +148,103, 83,255,145,100, 80,255,142, 98, 79,255,140, 96, 77,255,137, 94, 76,255,134, 92, 74,255,131, 91, 73,255,129, 89, 71,255, +125, 86, 69,255,120, 83, 66,255,115, 79, 64,255,111, 76, 60,255,106, 72, 57,255, 97, 66, 53,255, 70, 52, 45,255, 4, 4, 4,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,141,121,122,255,217,179,180,255, +217,179,181,255,217,179,182,255,218,181,183,255,218,180,184,255,219,181,184,255,219,182,184,255,219,182,184,255,218,181,184,255, +218,181,183,255,218,180,182,255,217,180,182,255,216,178,181,255,217,178,180,255,216,178,179,255,215,177,179,255,216,176,178,255, +215,176,176,255,214,175,175,255,214,174,174,255,213,174,173,255,214,172,172,255,213,172,170,255,212,171,169,255,212,169,167,255, +210,168,166,255,210,167,164,255,209,166,162,255,208,164,160,255,207,163,158,255,206,161,155,255,205,160,153,255,205,158,150,255, +203,156,147,255,202,154,144,255,201,153,141,255,200,151,138,255,199,149,136,255,198,147,133,255,197,145,129,255,196,143,127,255, +195,142,123,255,193,139,120,255,192,137,116,255,191,135,112,255,190,132,109,255,187,131,106,255,186,130,105,255,185,129,104,255, +183,127,103,255,181,126,102,255,179,125,101,255,177,124,100,255,176,123, 99,255,173,121, 97,255,171,119, 96,255,169,118, 95,255, +166,115, 93,255,164,114, 92,255,161,112, 91,255,159,110, 89,255,157,108, 87,255,153,106, 86,255,151,104, 84,255,148,103, 82,255, +144,100, 80,255,142, 98, 78,255,138, 96, 77,255,136, 94, 76,255,134, 92, 74,255,131, 91, 73,255,129, 89, 71,255,125, 86, 68,255, +120, 82, 66,255,115, 79, 63,255,111, 76, 60,255,107, 72, 57,255, 96, 67, 55,255, 43, 32, 28,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,140,120,120,255,216,176,177,255, +216,178,179,255,217,179,181,255,217,179,182,255,218,181,184,255,219,182,184,255,219,181,185,255,218,181,184,255,219,182,184,255, +218,181,183,255,218,179,182,255,217,179,181,255,216,179,181,255,216,177,179,255,215,177,179,255,216,177,178,255,215,175,176,255, +214,176,176,255,214,175,174,255,213,174,174,255,214,173,173,255,212,172,171,255,212,171,170,255,212,170,168,255,210,168,166,255, +210,168,165,255,210,167,164,255,208,165,161,255,208,164,160,255,207,163,157,255,205,160,154,255,205,159,152,255,204,158,149,255, +202,155,147,255,202,154,143,255,201,152,140,255,199,150,137,255,199,148,134,255,198,147,131,255,196,144,128,255,195,142,124,255, +194,141,121,255,192,138,118,255,191,135,114,255,190,133,110,255,188,131,106,255,186,130,106,255,185,129,105,255,183,127,103,255, +181,126,102,255,179,125,101,255,177,123,100,255,175,122, 99,255,173,120, 97,255,171,119, 96,255,169,118, 95,255,166,115, 93,255, +164,113, 92,255,161,112, 91,255,158,109, 88,255,156,108, 87,255,152,106, 85,255,149,103, 83,255,147,102, 82,255,144, 99, 80,255, +141, 97, 78,255,138, 95, 77,255,137, 94, 76,255,134, 92, 74,255,131, 91, 73,255,129, 89, 71,255,125, 85, 68,255,120, 82, 65,255, +115, 79, 63,255,111, 76, 60,255,106, 72, 56,255, 95, 68, 56,255, 25, 20, 18,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,139,117,117,255,214,172,172,255, +214,174,175,255,216,177,179,255,217,179,182,255,218,181,184,255,219,182,185,255,219,182,186,255,219,183,187,255,219,182,186,255, +219,181,184,255,218,180,183,255,217,179,181,255,216,178,180,255,216,177,179,255,215,177,178,255,216,175,176,255,214,175,176,255, +214,174,174,255,213,173,174,255,213,173,173,255,213,172,171,255,212,171,170,255,211,170,169,255,211,169,168,255,210,168,166,255, +210,167,164,255,209,166,162,255,208,164,160,255,207,163,158,255,207,162,156,255,205,160,154,255,204,158,150,255,203,156,147,255, +202,155,145,255,201,153,142,255,200,151,138,255,199,149,136,255,198,147,132,255,196,145,129,255,195,143,126,255,194,141,122,255, +192,138,118,255,191,136,114,255,190,134,110,255,188,131,107,255,187,130,106,255,185,129,105,255,183,127,103,255,181,126,102,255, +179,124,101,255,177,123,100,255,175,122, 99,255,173,120, 98,255,171,119, 96,255,168,117, 95,255,165,115, 93,255,163,113, 92,255, +160,111, 90,255,157,109, 88,255,154,106, 86,255,151,104, 85,255,148,102, 82,255,145,101, 81,255,143, 98, 79,255,140, 97, 78,255, +138, 96, 77,255,136, 94, 76,255,134, 92, 74,255,132, 91, 73,255,129, 88, 71,255,126, 86, 68,255,121, 82, 66,255,115, 79, 64,255, +111, 76, 60,255,104, 71, 57,255, 76, 55, 46,255, 7, 6, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,138,115,113,255,210,167,165,255, +212,171,170,255,214,174,175,255,216,178,180,255,218,180,184,255,219,182,186,255,220,183,187,255,220,184,188,255,220,184,188,255, +219,183,187,255,218,182,185,255,218,181,183,255,217,179,181,255,216,178,180,255,215,177,178,255,215,175,176,255,214,175,175,255, +214,174,174,255,213,173,173,255,213,172,171,255,212,171,170,255,212,171,169,255,211,169,167,255,211,169,166,255,210,168,165,255, +209,166,163,255,209,165,161,255,207,164,160,255,207,162,157,255,206,161,154,255,205,160,153,255,204,158,150,255,203,155,146,255, +202,154,143,255,200,152,140,255,199,150,137,255,198,148,134,255,197,146,130,255,196,144,126,255,195,141,123,255,193,139,119,255, +192,136,115,255,190,134,111,255,188,132,107,255,187,130,106,255,185,129,105,255,183,127,103,255,180,126,102,255,179,125,101,255, +177,123, 99,255,174,121, 98,255,172,119, 97,255,170,117, 95,255,167,116, 94,255,165,114, 93,255,162,112, 91,255,159,109, 88,255, +155,108, 87,255,152,105, 85,255,149,103, 83,255,147,101, 82,255,144, 99, 80,255,141, 98, 79,255,139, 96, 77,255,137, 94, 76,255, +136, 93, 75,255,134, 92, 74,255,132, 91, 73,255,130, 89, 72,255,127, 86, 69,255,122, 83, 66,255,116, 80, 64,255,110, 75, 60,255, +102, 72, 59,255, 44, 33, 28,255, 3, 3, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 61, 61,255,124,100, 94,255,202,157,149,255, +206,164,159,255,211,169,167,255,213,174,175,255,216,178,181,255,219,182,185,255,219,183,187,255,221,185,190,255,221,184,190,255, +221,185,189,255,219,183,187,255,219,182,185,255,218,181,183,255,216,178,181,255,216,177,179,255,215,175,176,255,214,175,175,255, +214,174,174,255,212,172,171,255,212,171,170,255,211,171,169,255,211,169,167,255,210,168,166,255,210,168,165,255,209,166,163,255, +208,165,162,255,208,164,160,255,207,162,157,255,206,161,156,255,206,160,154,255,204,158,150,255,203,157,148,255,203,155,145,255, +200,152,142,255,200,150,138,255,199,149,135,255,197,146,132,255,196,144,128,255,195,142,124,255,193,139,120,255,192,136,116,255, +191,135,112,255,188,132,107,255,186,130,105,255,185,129,105,255,182,127,103,255,180,126,102,255,178,124,101,255,176,122, 99,255, +173,121, 98,255,170,118, 96,255,169,117, 95,255,166,115, 93,255,162,112, 91,255,160,111, 90,255,156,108, 88,255,153,106, 85,255, +150,104, 84,255,147,102, 83,255,145,100, 81,255,143, 98, 79,255,141, 97, 79,255,138, 95, 76,255,136, 94, 76,255,136, 93, 75,255, +134, 92, 74,255,133, 92, 74,255,132, 91, 73,255,129, 88, 71,255,123, 84, 67,255,117, 80, 64,255,109, 75, 60,255, 91, 65, 55,255, + 13, 11, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 23, 25, 25,255, 70, 51, 45,255, +166,126,117,255,202,157,150,255,210,167,165,255,212,171,171,255,216,177,179,255,219,181,184,255,220,183,187,255,220,184,189,255, +221,185,189,255,220,183,188,255,219,183,186,255,219,181,184,255,217,179,182,255,216,178,179,255,216,177,178,255,215,175,175,255, +214,174,174,255,212,172,172,255,212,171,170,255,211,170,169,255,210,169,166,255,210,168,165,255,209,167,163,255,208,166,162,255, +208,165,160,255,207,163,158,255,206,162,156,255,206,160,154,255,205,158,151,255,203,157,149,255,203,156,146,255,201,153,142,255, +200,152,140,255,199,149,136,255,197,147,133,255,196,145,129,255,195,142,125,255,193,140,121,255,192,137,116,255,190,134,111,255, +188,132,107,255,186,130,105,255,184,128,104,255,182,127,103,255,179,124,101,255,176,123, 99,255,175,122, 99,255,172,119, 96,255, +169,117, 95,255,166,116, 94,255,163,113, 92,255,161,111, 90,255,157,110, 88,255,154,107, 86,255,151,105, 84,255,148,103, 83,255, +146,101, 81,255,144, 99, 80,255,142, 98, 79,255,140, 97, 78,255,138, 95, 77,255,137, 94, 76,255,136, 93, 75,255,135, 93, 75,255, +134, 92, 74,255,133, 92, 74,255,130, 90, 72,255,124, 86, 68,255,117, 80, 64,255,104, 72, 58,255, 63, 47, 39,255, 4, 4, 4,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 61, 61,255, 29, 29, 29,255, 0, 0, 0,255, + 14, 10, 9,255, 82, 62, 56,255,183,139,130,255,208,162,155,255,210,167,165,255,214,175,175,255,218,179,180,255,219,182,185,255, +220,183,186,255,219,182,185,255,219,181,184,255,218,179,182,255,217,178,180,255,216,177,178,255,215,176,176,255,214,175,174,255, +214,173,172,255,213,172,170,255,212,171,169,255,211,169,167,255,210,168,165,255,209,167,163,255,209,166,161,255,208,165,160,255, +207,163,158,255,207,162,157,255,206,161,154,255,205,159,152,255,204,158,150,255,203,156,147,255,201,154,144,255,200,152,140,255, +200,150,138,255,198,147,134,255,196,145,130,255,195,143,126,255,193,140,121,255,191,137,116,255,190,134,111,255,188,131,107,255, +186,129,105,255,183,128,103,255,181,126,102,255,178,123,100,255,175,122, 99,255,172,120, 98,255,170,117, 95,255,167,116, 94,255, +165,114, 92,255,161,111, 90,255,158,110, 89,255,155,107, 87,255,152,105, 84,255,149,103, 83,255,146,101, 81,255,144,100, 80,255, +143, 98, 79,255,141, 97, 78,255,140, 96, 78,255,138, 95, 76,255,137, 94, 75,255,137, 94, 75,255,137, 95, 76,255,137, 94, 76,255, +135, 93, 75,255,131, 91, 73,255,126, 87, 69,255,115, 79, 63,255, 79, 57, 48,255, 23, 18, 15,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 5, 5, 4,255,122, 93, 86,255,200,151,140,255,207,162,155,255,212,170,167,255,215,174,174,255, +216,177,178,255,216,177,178,255,217,177,178,255,215,175,176,255,214,174,174,255,214,173,173,255,213,172,171,255,212,171,170,255, +212,170,169,255,211,169,167,255,210,168,166,255,210,168,164,255,209,166,162,255,208,165,161,255,207,165,160,255,207,163,157,255, +206,162,156,255,206,161,154,255,204,159,151,255,204,158,150,255,203,156,147,255,201,154,144,255,200,152,140,255,200,150,138,255, +198,147,134,255,196,144,129,255,195,143,125,255,193,139,121,255,191,136,115,255,190,133,110,255,187,130,106,255,184,128,104,255, +182,127,103,255,179,124,100,255,176,122, 99,255,172,120, 97,255,170,118, 96,255,166,116, 94,255,163,113, 91,255,161,112, 90,255, +158,110, 88,255,154,107, 86,255,152,105, 85,255,148,103, 83,255,146,101, 81,255,144,100, 80,255,143, 99, 80,255,141, 97, 78,255, +140, 97, 77,255,140, 97, 77,255,138, 95, 77,255,139, 96, 77,255,140, 97, 77,255,141, 97, 78,255,139, 96, 77,255,137, 95, 77,255, +133, 92, 74,255,125, 85, 69,255,111, 78, 64,255, 40, 31, 28,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,101, 72, 60,255,194,141,125,255,202,154,143,255,208,163,157,255, +211,167,164,255,212,169,166,255,211,169,166,255,211,168,165,255,210,167,164,255,209,166,163,255,209,166,161,255,208,165,160,255, +208,165,160,255,208,164,159,255,207,164,159,255,208,163,158,255,207,162,157,255,207,162,156,255,206,161,155,255,206,161,153,255, +205,159,152,255,204,158,151,255,203,157,148,255,202,155,146,255,201,153,143,255,200,151,140,255,198,149,136,255,197,147,132,255, +196,144,127,255,194,141,123,255,192,138,118,255,190,135,111,255,188,132,107,255,185,129,104,255,183,127,103,255,179,125,101,255, +176,123, 99,255,173,121, 97,255,169,118, 95,255,167,115, 93,255,163,114, 91,255,160,111, 90,255,156,109, 87,255,152,106, 86,255, +150,104, 84,255,148,102, 82,255,145,100, 80,255,144, 99, 80,255,143, 98, 79,255,143, 98, 79,255,142, 98, 79,255,142, 98, 79,255, +141, 98, 79,255,141, 98, 79,255,142, 99, 79,255,143, 99, 80,255,144, 99, 80,255,141, 98, 79,255,139, 96, 77,255,129, 89, 72,255, +101, 70, 57,255, 55, 39, 32,255, 0, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 1,255,168,118, 96,255,192,136,116,255,200,148,133,255, +204,154,145,255,205,157,148,255,205,157,148,255,204,157,147,255,204,156,146,255,203,156,146,255,203,155,144,255,202,154,145,255, +202,154,145,255,202,155,145,255,203,155,146,255,203,156,147,255,203,156,147,255,203,156,147,255,202,156,146,255,203,155,146,255, +202,155,145,255,201,154,144,255,200,153,141,255,200,151,140,255,199,149,136,255,197,147,133,255,196,145,128,255,194,141,124,255, +192,139,119,255,191,136,112,255,189,132,108,255,186,129,105,255,183,127,103,255,179,125,101,255,176,122, 99,255,172,120, 97,255, +168,118, 95,255,165,115, 93,255,162,113, 91,255,158,109, 89,255,154,107, 87,255,151,104, 84,255,148,102, 83,255,146,101, 81,255, +145,100, 81,255,144,100, 80,255,144, 99, 80,255,145,100, 80,255,145,100, 81,255,145,100, 81,255,146,101, 81,255,145,101, 81,255, +145,101, 81,255,145,101, 81,255,145,101, 81,255,144,100, 80,255,142, 98, 78,255,134, 92, 74,255,104, 73, 59,255, 39, 27, 22,255, + 10, 7, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 92, 65, 54,255,181,126,102,255,191,134,111,255, +196,141,121,255,197,144,127,255,197,144,126,255,196,142,124,255,195,142,123,255,194,140,121,255,194,140,121,255,193,140,121,255, +193,140,121,255,194,140,122,255,194,142,124,255,196,144,126,255,196,145,129,255,197,145,130,255,197,146,131,255,197,146,132,255, +197,146,131,255,197,145,131,255,196,145,129,255,195,144,127,255,195,141,124,255,193,140,120,255,192,137,117,255,190,135,113,255, +189,132,108,255,186,130,105,255,182,128,103,255,180,125,101,255,175,122, 99,255,171,119, 96,255,169,117, 95,255,164,114, 93,255, +160,111, 90,255,156,109, 88,255,153,106, 86,255,150,103, 83,255,147,102, 82,255,146,102, 81,255,146,101, 82,255,146,101, 82,255, +147,101, 82,255,148,102, 82,255,148,102, 83,255,148,103, 83,255,149,103, 83,255,148,103, 83,255,148,103, 83,255,145,101, 81,255, +147,102, 82,255,145,101, 81,255,142, 99, 79,255,135, 93, 74,255,111, 78, 64,255, 40, 29, 25,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 56, 42, 35,255,170,118, 95,255,182,126,102,255, +188,131,106,255,189,132,108,255,188,131,107,255,187,130,105,255,185,128,104,255,183,127,103,255,182,126,102,255,181,126,102,255, +181,126,102,255,181,126,102,255,183,127,103,255,183,128,104,255,185,130,106,255,186,131,108,255,187,132,108,255,187,132,109,255, +188,133,110,255,188,133,110,255,188,133,110,255,188,133,110,255,188,132,108,255,187,131,107,255,186,129,105,255,184,128,104,255, +182,127,103,255,178,125,101,255,175,122, 99,255,172,119, 96,255,168,117, 94,255,164,114, 92,255,161,112, 90,255,157,109, 88,255, +154,107, 86,255,151,104, 84,255,149,103, 83,255,148,103, 83,255,149,103, 83,255,148,103, 83,255,150,103, 83,255,150,104, 84,255, +151,104, 84,255,151,104, 84,255,151,105, 84,255,151,104, 84,255,149,104, 84,255,147,103, 83,255,147,102, 82,255,145,101, 80,255, +139, 97, 78,255,119, 83, 67,255, 84, 59, 49,255, 36, 27, 23,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 31, 24, 22,255,162,113, 90,255,174,121, 98,255, +179,124,100,255,180,125,101,255,178,124,100,255,175,121, 98,255,172,119, 96,255,169,118, 95,255,167,116, 94,255,166,116, 93,255, +166,115, 93,255,166,115, 92,255,166,115, 93,255,166,116, 94,255,168,116, 94,255,169,117, 95,255,169,118, 95,255,169,118, 95,255, +171,119, 96,255,173,120, 97,255,175,122, 99,255,177,124,100,255,178,124,100,255,179,124,100,255,178,123,100,255,177,123, 99,255, +175,121, 98,255,172,120, 97,255,169,117, 95,255,166,115, 93,255,162,113, 91,255,160,111, 90,255,157,109, 88,255,155,108, 87,255, +154,106, 86,255,153,106, 86,255,153,106, 86,255,152,106, 86,255,153,106, 86,255,154,106, 86,255,154,106, 86,255,154,106, 86,255, +154,107, 86,255,153,106, 85,255,151,105, 84,255,148,103, 83,255,147,102, 82,255,144,100, 79,255,134, 94, 75,255, 91, 65, 54,255, + 41, 29, 25,255, 15, 11, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 26, 22, 20,255,158,109, 88,255,169,118, 95,255, +172,120, 97,255,172,119, 97,255,169,117, 95,255,164,114, 92,255,160,111, 89,255,157,109, 87,255,155,107, 86,255,152,106, 85,255, +151,104, 83,255,149,103, 83,255,148,102, 82,255,146,100, 82,255,145,100, 80,255,142, 98, 79,255,143, 98, 79,255,145,101, 82,255, +152,105, 85,255,159,110, 89,255,165,115, 93,255,169,117, 95,255,170,119, 96,255,172,120, 97,255,173,120, 97,255,173,120, 97,255, +171,119, 96,255,169,118, 95,255,167,116, 94,255,164,114, 92,255,161,112, 90,255,160,112, 90,255,159,110, 89,255,158,110, 89,255, +158,110, 89,255,158,109, 89,255,157,109, 89,255,156,109, 89,255,157,109, 88,255,156,108, 88,255,154,107, 86,255,154,106, 86,255, +151,105, 85,255,146,102, 81,255,140, 97, 79,255,135, 96, 77,255, 95, 69, 58,255, 44, 33, 29,255, 0, 1, 1,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 26, 21, 19,255,157,108, 87,255,166,115, 93,255, +167,117, 95,255,166,115, 92,255,161,112, 90,255,156,107, 87,255,150,103, 83,255,145,100, 81,255,141, 96, 78,255,137, 94, 76,255, +134, 92, 74,255,130, 89, 71,255,125, 86, 69,255,119, 81, 65,255,111, 77, 63,255, 88, 64, 53,255, 74, 56, 50,255, 99, 79, 72,255, +115, 85, 72,255,130, 93, 77,255,153,108, 89,255,163,115, 94,255,168,118, 96,255,170,119, 96,255,172,119, 96,255,172,120, 97,255, +171,118, 96,255,169,118, 95,255,167,116, 94,255,166,115, 93,255,164,114, 92,255,163,113, 91,255,162,112, 90,255,161,112, 90,255, +160,111, 89,255,159,110, 89,255,158,110, 89,255,157,109, 89,255,150,106, 86,255,137, 96, 78,255,125, 88, 72,255,105, 73, 60,255, + 85, 61, 50,255, 55, 40, 34,255, 29, 23, 20,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 34, 26, 23,255,157,108, 87,255,163,113, 92,255, +164,114, 92,255,160,111, 89,255,154,107, 86,255,148,101, 82,255,140, 97, 77,255,134, 92, 74,255,129, 88, 71,255,123, 84, 67,255, +117, 80, 64,255,110, 74, 59,255, 99, 67, 53,255, 85, 58, 47,255, 38, 30, 26,255, 5, 5, 4,255, 0, 0, 0,255, 2, 2, 2,255, + 10, 8, 7,255, 15, 11, 9,255, 22, 16, 14,255, 30, 23, 19,255, 42, 30, 26,255, 60, 42, 35,255, 85, 60, 49,255,101, 73, 59,255, +108, 76, 62,255,112, 80, 66,255,121, 87, 72,255,120, 86, 71,255,119, 86, 71,255,114, 81, 68,255,108, 77, 65,255,101, 73, 61,255, + 93, 67, 56,255, 77, 57, 48,255, 53, 39, 33,255, 34, 25, 21,255, 25, 18, 15,255, 17, 12, 10,255, 13, 9, 8,255, 4, 3, 3,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 49, 37, 33,255,155,107, 86,255,162,112, 91,255, +161,111, 90,255,156,108, 87,255,149,103, 83,255,141, 97, 78,255,132, 91, 73,255,124, 85, 68,255,116, 80, 64,255,109, 74, 59,255, +100, 68, 53,255, 88, 60, 47,255, 75, 51, 40,255, 27, 21, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 58, 43, 36,255,157,108, 87,255,161,112, 90,255, +159,110, 89,255,152,106, 85,255,144, 99, 80,255,135, 92, 75,255,124, 86, 69,255,116, 79, 63,255,106, 72, 57,255, 96, 65, 51,255, + 84, 56, 44,255, 70, 46, 36,255, 46, 35, 29,255, 2, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 45, 38,255,158,109, 88,255,161,112, 90,255, +157,109, 88,255,149,103, 84,255,140, 96, 78,255,129, 89, 71,255,119, 81, 64,255,108, 73, 58,255, 97, 65, 51,255, 85, 57, 45,255, + 71, 46, 36,255, 55, 35, 27,255, 16, 14, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 69, 50, 42,255,159,110, 88,255,160,112, 90,255, +156,109, 88,255,147,102, 82,255,136, 95, 76,255,125, 85, 68,255,113, 77, 62,255,101, 68, 54,255, 89, 60, 47,255, 75, 49, 38,255, + 59, 39, 29,255, 45, 31, 26,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 70, 50, 43,255,159,110, 89,255,160,111, 90,255, +155,108, 87,255,146,101, 81,255,134, 92, 74,255,122, 84, 67,255,109, 74, 58,255, 95, 64, 50,255, 80, 53, 42,255, 65, 43, 33,255, + 53, 34, 26,255, 18, 14, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 67, 49, 41,255,160,111, 89,255,161,111, 90,255, +155,108, 87,255,144,100, 80,255,132, 91, 73,255,119, 82, 66,255,104, 71, 56,255, 89, 61, 47,255, 74, 49, 38,255, 57, 37, 28,255, + 50, 33, 26,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 1, 1,255, 4, 5, 5,255, + 9, 9, 10,255, 7, 8, 8,255, 3, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 61, 45, 38,255,162,112, 90,255,162,112, 91,255, +155,108, 87,255,144, 99, 80,255,131, 90, 73,255,117, 80, 63,255,101, 69, 55,255, 84, 57, 45,255, 67, 44, 34,255, 52, 34, 25,255, + 41, 27, 22,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 1, 1,255, 4, 3, 3,255, + 8, 7, 6,255, 30, 27, 25,255, 49, 42, 39,255, 50, 40, 35,255, 62, 48, 41,255, 68, 51, 44,255, 66, 48, 42,255, 63, 45, 37,255, + 62, 43, 35,255, 61, 43, 35,255, 62, 45, 38,255, 64, 48, 41,255, 64, 49, 41,255, 58, 44, 37,255, 44, 35, 32,255, 40, 34, 33,255, + 15, 12, 11,255, 6, 4, 4,255, 4, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 51, 38, 34,255,163,112, 90,255,164,113, 92,255, +156,108, 87,255,144, 99, 80,255,130, 89, 72,255,115, 79, 63,255, 98, 66, 53,255, 80, 54, 42,255, 61, 40, 31,255, 48, 31, 22,255, + 35, 26, 23,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 4, 3, 3,255, 23, 17, 14,255, 38, 27, 21,255, 55, 38, 31,255, + 67, 47, 39,255, 67, 44, 34,255, 68, 43, 32,255, 72, 47, 37,255, 74, 48, 38,255, 76, 50, 39,255, 77, 51, 40,255, 79, 53, 41,255, + 81, 54, 42,255, 83, 55, 43,255, 84, 56, 43,255, 83, 56, 43,255, 83, 55, 43,255, 81, 54, 42,255, 77, 51, 39,255, 71, 45, 34,255, + 69, 47, 38,255, 62, 43, 35,255, 52, 38, 32,255, 33, 25, 22,255, 20, 17, 16,255, 3, 4, 5,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 23, 21,255,165,114, 92,255,165,114, 93,255, +158,110, 89,255,145,100, 81,255,130, 89, 72,255,114, 78, 62,255, 96, 65, 52,255, 77, 51, 40,255, 57, 37, 28,255, 49, 32, 24,255, + 31, 26, 24,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 11, 9, 9,255, 40, 30, 25,255, 62, 42, 33,255, 67, 44, 35,255, 73, 49, 38,255, 76, 51, 40,255, + 80, 53, 41,255, 81, 55, 43,255, 84, 56, 44,255, 86, 57, 45,255, 88, 60, 47,255, 92, 62, 49,255, 97, 66, 52,255,102, 69, 55,255, +107, 73, 58,255,111, 76, 61,255,116, 79, 62,255,117, 81, 65,255,118, 81, 65,255,118, 81, 65,255,116, 80, 63,255,112, 77, 61,255, +107, 72, 57,255, 99, 67, 52,255, 89, 60, 47,255, 81, 54, 43,255, 67, 45, 34,255, 58, 43, 37,255, 28, 22, 19,255, 5, 5, 5,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 8, 7, 7,255,167,116, 94,255,167,117, 94,255, +160,111, 89,255,147,102, 82,255,131, 90, 72,255,114, 78, 62,255, 95, 64, 51,255, 74, 49, 39,255, 52, 34, 25,255, 51, 35, 29,255, + 27, 23, 22,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 1,255, + 9, 7, 6,255, 43, 33, 30,255, 68, 47, 39,255, 72, 48, 36,255, 76, 51, 40,255, 80, 54, 43,255, 83, 56, 44,255, 85, 58, 46,255, + 87, 59, 47,255, 90, 61, 48,255, 95, 64, 50,255,101, 69, 54,255,109, 73, 59,255,117, 80, 64,255,126, 87, 69,255,134, 93, 74,255, +143, 98, 79,255,150,104, 83,255,156,108, 86,255,161,111, 90,255,165,114, 92,255,166,115, 93,255,167,116, 94,255,164,114, 93,255, +161,112, 91,255,152,105, 86,255,141, 97, 78,255,127, 87, 69,255,112, 77, 61,255, 96, 65, 51,255, 80, 54, 41,255, 62, 44, 35,255, + 33, 27, 24,255, 5, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,165,117, 96,255,171,119, 97,255, +163,113, 91,255,149,104, 83,255,133, 92, 74,255,116, 79, 63,255, 95, 64, 51,255, 72, 48, 38,255, 49, 32, 24,255, 48, 33, 26,255, + 27, 23, 21,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 8, 7, 7,255, 40, 30, 27,255, + 67, 47, 40,255, 74, 50, 39,255, 78, 52, 40,255, 81, 55, 43,255, 85, 57, 45,255, 87, 58, 46,255, 89, 60, 48,255, 92, 62, 50,255, + 98, 66, 53,255,105, 71, 56,255,114, 79, 62,255,125, 86, 69,255,135, 93, 74,255,145,100, 81,255,154,106, 85,255,159,110, 89,255, +158,112, 92,255,142,100, 83,255,133, 95, 78,255,126, 89, 75,255,123, 88, 74,255,117, 83, 69,255,128, 93, 78,255,142,103, 89,255, +153,112, 99,255,174,130,116,255,193,144,129,255,192,142,127,255,180,130,114,255,159,111, 93,255,132, 91, 72,255,109, 74, 58,255, + 86, 58, 45,255, 65, 45, 37,255, 33, 24, 20,255, 2, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,143,101, 83,255,176,123, 99,255, +167,117, 94,255,153,106, 86,255,137, 95, 76,255,118, 80, 64,255, 97, 65, 52,255, 73, 49, 38,255, 48, 31, 23,255, 41, 26, 19,255, + 38, 32, 28,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 24, 23,255, 67, 49, 45,255, 73, 50, 40,255, + 78, 52, 41,255, 82, 55, 43,255, 84, 57, 45,255, 87, 58, 46,255, 89, 60, 48,255, 92, 62, 49,255, 97, 66, 52,255,104, 71, 56,255, +114, 78, 61,255,124, 85, 68,255,133, 92, 74,255,143, 98, 79,255,147,101, 82,255,133, 95, 78,255, 86, 64, 55,255, 34, 26, 23,255, + 9, 6, 5,255, 7, 5, 4,255, 6, 4, 4,255, 4, 3, 3,255, 4, 3, 3,255, 3, 2, 2,255, 4, 3, 3,255, 5, 4, 4,255, + 7, 5, 5,255, 9, 7, 7,255, 17, 13, 12,255, 57, 46, 43,255,129,102, 97,255,199,156,150,255,203,156,147,255,182,132,115,255, +147,102, 81,255,116, 79, 62,255, 90, 61, 48,255, 64, 44, 37,255, 17, 15, 14,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,110, 78, 64,255,180,126,101,255, +172,120, 96,255,158,110, 89,255,142, 97, 79,255,123, 84, 67,255,101, 69, 54,255, 77, 51, 40,255, 51, 33, 25,255, 36, 21, 15,255, + 43, 32, 26,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 12, 9, 9,255, 52, 40, 38,255, 71, 51, 45,255, 75, 50, 40,255, 79, 53, 41,255, + 83, 56, 44,255, 86, 58, 45,255, 88, 60, 46,255, 91, 61, 49,255, 95, 64, 51,255,102, 70, 55,255,110, 75, 60,255,119, 82, 65,255, +127, 87, 70,255,131, 90, 73,255,119, 82, 66,255, 77, 54, 44,255, 24, 19, 17,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 53, 43, 43,255,146,119,117,255, +189,149,145,255,187,139,125,255,153,108, 90,255,115, 78, 61,255, 83, 57, 44,255, 41, 30, 25,255, 6, 5, 4,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 64, 46, 38,255,185,129,104,255, +178,124,100,255,165,115, 92,255,148,102, 82,255,129, 89, 71,255,107, 73, 59,255, 83, 57, 44,255, 57, 37, 28,255, 36, 21, 16,255, + 40, 25, 18,255, 19, 15, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 3, 3, 3,255, 36, 27, 27,255, 64, 48, 44,255, 72, 50, 42,255, 76, 50, 40,255, 80, 54, 42,255, 84, 56, 44,255, + 86, 59, 46,255, 90, 60, 48,255, 94, 63, 50,255, 99, 67, 53,255,106, 72, 57,255,114, 78, 62,255,120, 82, 65,255,123, 85, 68,255, + 98, 68, 56,255, 45, 32, 26,255, 9, 7, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 31, 25, 25,255, 90, 73, 73,255,172,137,132,255,193,147,137,255,150,105, 87,255,103, 69, 53,255, 67, 46, 38,255, 20, 16, 14,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 32, 23, 19,255,179,126,102,255, +185,129,104,255,173,120, 97,255,156,109, 87,255,137, 94, 76,255,117, 80, 64,255, 95, 64, 50,255, 69, 46, 36,255, 44, 27, 20,255, + 31, 18, 12,255, 40, 28, 22,255, 22, 20, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 16, 13, 12,255, 59, 44, 42,255, 68, 49, 43,255, 72, 48, 39,255, 76, 51, 39,255, 81, 54, 42,255, 84, 57, 45,255, 87, 58, 47,255, + 91, 61, 48,255, 95, 65, 51,255,101, 69, 55,255,109, 74, 59,255,115, 79, 63,255,117, 80, 64,255,113, 79, 63,255, 46, 34, 29,255, + 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 3, 2, 2,255, 69, 57, 56,255,193,155,153,255,184,137,123,255,127, 87, 68,255, 87, 60, 47,255, + 32, 24, 21,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 11, 8, 6,255,151,106, 87,255, +192,135,112,255,181,126,103,255,165,114, 93,255,148,102, 82,255,128, 88, 70,255,106, 72, 57,255, 84, 57, 44,255, 60, 40, 30,255, + 39, 24, 18,255, 31, 18, 12,255, 33, 21, 16,255, 15, 11, 9,255, 5, 4, 4,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 4, 4, 3,255, 14, 11, 10,255, 49, 37, 34,255, + 66, 47, 42,255, 67, 46, 39,255, 72, 48, 36,255, 76, 51, 39,255, 81, 54, 42,255, 85, 57, 45,255, 88, 60, 47,255, 93, 63, 50,255, + 98, 66, 52,255,104, 71, 56,255,110, 76, 60,255,114, 78, 62,255,109, 74, 60,255, 73, 52, 42,255, 7, 7, 6,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 3, 2, 2,255,119, 98, 99,255,185,145,139,255,158,115, 99,255, +106, 71, 57,255, 51, 37, 31,255, 4, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 94, 68, 57,255, +197,143,126,255,191,135,112,255,176,122, 99,255,159,110, 89,255,140, 97, 78,255,122, 83, 67,255,102, 69, 55,255, 81, 54, 43,255, + 60, 39, 30,255, 43, 27, 20,255, 35, 21, 14,255, 33, 21, 15,255, 32, 20, 17,255, 30, 23, 20,255, 19, 16, 14,255, 14, 13, 12,255, + 15, 15, 16,255, 16, 17, 17,255, 19, 19, 19,255, 19, 15, 14,255, 36, 28, 24,255, 49, 34, 28,255, 61, 43, 36,255, 64, 43, 35,255, + 66, 43, 34,255, 71, 47, 37,255, 77, 52, 40,255, 82, 55, 43,255, 86, 58, 45,255, 91, 61, 48,255, 95, 65, 51,255,101, 68, 55,255, +107, 73, 58,255,111, 76, 61,255,111, 76, 60,255, 95, 65, 53,255, 30, 22, 18,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 34, 29, 30,255,122, 99, 97,255, +185,144,136,255,129, 90, 73,255, 70, 47, 37,255, 10, 8, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 21, 15, 12,255, +198,147,133,255,198,146,131,255,189,133,109,255,171,119, 96,255,155,107, 87,255,137, 95, 76,255,120, 82, 66,255,102, 70, 55,255, + 85, 58, 45,255, 68, 44, 35,255, 53, 34, 26,255, 43, 27, 20,255, 39, 24, 17,255, 39, 25, 18,255, 40, 24, 18,255, 42, 26, 19,255, + 44, 29, 21,255, 49, 35, 28,255, 49, 32, 25,255, 52, 33, 26,255, 55, 36, 28,255, 58, 38, 29,255, 61, 40, 30,255, 67, 44, 34,255, + 73, 48, 38,255, 79, 53, 41,255, 84, 56, 44,255, 89, 60, 47,255, 93, 63, 51,255, 99, 67, 53,255,104, 71, 57,255,110, 75, 60,255, +112, 77, 61,255,107, 73, 58,255, 70, 50, 41,255, 4, 3, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 40, 33, 33,255,191,154,153,255,155,114,100,255, 88, 60, 48,255, 11, 10, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, +109, 81, 74,255,208,160,151,255,198,145,128,255,186,130,107,255,169,118, 95,255,153,107, 86,255,138, 95, 77,255,123, 85, 68,255, +108, 73, 58,255, 94, 63, 51,255, 81, 54, 43,255, 69, 45, 35,255, 60, 39, 30,255, 53, 34, 25,255, 49, 31, 24,255, 48, 31, 23,255, + 48, 31, 23,255, 50, 31, 23,255, 52, 33, 25,255, 55, 36, 27,255, 59, 39, 29,255, 65, 43, 32,255, 71, 47, 37,255, 77, 52, 40,255, + 83, 56, 43,255, 88, 59, 47,255, 93, 63, 50,255, 98, 66, 53,255,103, 70, 56,255,108, 74, 59,255,112, 77, 61,255,112, 76, 61,255, + 99, 68, 55,255, 49, 36, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255,115, 94, 95,255,157,121,111,255,111, 80, 69,255, 13, 9, 8,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 5, 3, 3,255,178,138,132,255,209,163,156,255,198,145,129,255,185,129,105,255,170,118, 95,255,155,107, 87,255,141, 98, 79,255, +130, 89, 72,255,117, 81, 65,255,106, 73, 58,255, 97, 66, 52,255, 89, 60, 47,255, 81, 54, 43,255, 75, 50, 39,255, 71, 47, 36,255, + 68, 45, 35,255, 68, 44, 35,255, 69, 45, 35,255, 71, 48, 37,255, 76, 50, 39,255, 80, 53, 42,255, 85, 57, 45,255, 90, 61, 48,255, + 95, 64, 51,255, 99, 67, 54,255,103, 70, 56,255,109, 74, 59,255,113, 77, 62,255,115, 79, 63,255,111, 76, 60,255, 83, 57, 46,255, + 23, 17, 14,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 35, 29, 30,255, 92, 73, 69,255, 89, 69, 63,255, 5, 4, 4,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 50, 39, 38,255,206,165,162,255,208,163,157,255,199,147,131,255,186,130,107,255,172,120, 97,255,160,111, 90,255, +149,103, 83,255,139, 96, 77,255,130, 89, 72,255,122, 83, 67,255,115, 78, 63,255,108, 74, 59,255,102, 69, 55,255, 98, 66, 52,255, + 94, 64, 50,255, 92, 62, 49,255, 92, 62, 49,255, 94, 63, 50,255, 95, 64, 51,255, 98, 67, 53,255,101, 69, 55,255,105, 71, 56,255, +108, 74, 59,255,112, 76, 60,255,115, 79, 63,255,118, 82, 65,255,118, 81, 64,255,111, 75, 60,255, 72, 51, 42,255, 6, 5, 4,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255,106, 85, 84,255,216,176,176,255,209,166,161,255,200,149,135,255,189,134,111,255,178,123,100,255, +167,116, 93,255,157,109, 88,255,149,103, 83,255,143, 99, 79,255,136, 94, 75,255,131, 90, 72,255,126, 87, 69,255,122, 83, 67,255, +118, 81, 65,255,116, 79, 64,255,115, 79, 63,255,115, 79, 63,255,115, 79, 63,255,116, 80, 63,255,117, 81, 64,255,120, 82, 65,255, +122, 84, 67,255,124, 85, 69,255,124, 85, 68,255,120, 82, 66,255,102, 71, 56,255, 45, 33, 27,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,106, 86, 86,255,220,181,183,255,212,171,169,255,204,157,147,255,195,141,123,255, +185,129,105,255,176,122, 98,255,167,117, 94,255,160,111, 90,255,156,107, 87,255,150,104, 84,255,146,101, 81,255,142, 98, 79,255, +138, 95, 77,255,135, 93, 75,255,134, 92, 74,255,133, 92, 73,255,132, 91, 73,255,133, 91, 73,255,133, 91, 73,255,134, 92, 74,255, +133, 92, 73,255,130, 90, 72,255,123, 84, 68,255, 80, 56, 46,255, 16, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 86, 71, 71,255,215,179,182,255,217,177,179,255,210,165,161,255, +200,151,139,255,194,139,120,255,186,131,107,255,179,125,101,255,173,120, 97,255,168,117, 95,255,164,114, 92,255,159,110, 89,255, +156,108, 87,255,153,106, 86,255,151,104, 84,255,149,104, 84,255,149,103, 83,255,145,101, 81,255,145,100, 81,255,141, 98, 79,255, +134, 92, 75,255,117, 81, 65,255, 36, 26, 22,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 49, 40, 41,255,162,135,138,255,211,175,177,255, +215,175,174,255,209,165,159,255,202,153,143,255,197,145,128,255,192,137,116,255,187,131,109,255,182,127,103,255,178,124,100,255, +173,121, 97,255,169,118, 95,255,166,115, 93,255,162,113, 91,255,158,110, 89,255,155,107, 87,255,145,101, 81,255,118, 82, 66,255, + 71, 50, 41,255, 8, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 5, 4, 4,255, 51, 42, 43,255, +137,113,113,255,208,168,167,255,214,171,168,255,210,165,159,255,204,157,148,255,199,149,136,255,194,141,125,255,191,135,113,255, +185,129,105,255,180,125,102,255,175,122, 98,255,168,116, 94,255,157,109, 89,255,110, 78, 64,255, 50, 36, 30,255, 14, 10, 8,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 1, 1, 0,255, 50, 40, 38,255,115, 90, 86,255,166,129,121,255,191,144,131,255,189,139,122,255,185,131,110,255, +178,125,103,255,159,114, 94,255,108, 77, 64,255, 65, 48, 40,255, 8, 7, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0, 88, 32,102, 7, + 31, 0, 0, 0, 1, 0, 0, 0,176,195,102, 7, 0,125,101, 7, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, 46,116,104,117, +109, 98, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103, +115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46,116,104,117,109, 98, 46,112,110,103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88, 34,102, 7, 0, 0, 0, 0,112, 72, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0, 88, 34,102, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, + 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,224, 34,102, 7, 72, 51,102, 7, 68, 65, 84, 65, 0, 16, 0, 0, +224, 34,102, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0, 72, 51,102, 7, 0, 0, 0, 0, 1, 0, 0, 0, + 62, 62, 62,255, 61, 61, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, + 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 62, 61, 61,255, + 61, 61, 61,255, 98, 84, 80,255,133,106, 97,255,133,105, 97,255,132,104, 96,255,132,105, 95,255,132,104, 94,255,132,104, 94,255, +131,103, 93,255,131,103, 92,255,131,102, 92,255,131,102, 91,255,130,101, 90,255,130,101, 89,255,129,100, 88,255,129,100, 88,255, +129, 99, 86,255,128, 99, 86,255,128, 98, 85,255,128, 98, 85,255,127, 97, 85,255,127, 97, 85,255,126, 97, 84,255,126, 97, 84,255, +125, 96, 84,255,125, 96, 83,255,124, 96, 83,255,124, 95, 83,255,123, 95, 82,255,123, 95, 82,255,122, 94, 82,255,122, 94, 82,255, +121, 94, 81,255,121, 93, 81,255,120, 93, 81,255,120, 93, 80,255,120, 92, 80,255,119, 92, 80,255,119, 92, 80,255,118, 91, 79,255, +118, 91, 79,255,117, 91, 79,255,117, 90, 79,255,116, 90, 78,255,116, 89, 78,255,115, 89, 78,255,114, 88, 77,255,114, 88, 77,255, +114, 88, 77,255,113, 87, 76,255,113, 87, 76,255,112, 86, 76,255,111, 86, 76,255,111, 86, 75,255,110, 86, 75,255,109, 85, 74,255, +109, 84, 74,255,108, 84, 74,255,108, 84, 73,255,107, 83, 73,255,106, 83, 72,255,106, 82, 72,255,105, 82, 72,255,104, 81, 71,255, +103, 81, 71,255,103, 80, 70,255,102, 79, 69,255,101, 79, 69,255,100, 78, 68,255,100, 78, 68,255, 98, 77, 68,255, 98, 76, 67,255, + 97, 76, 66,255, 96, 75, 66,255, 95, 74, 65,255, 94, 73, 65,255, 92, 73, 64,255, 91, 72, 63,255, 90, 71, 63,255, 89, 70, 62,255, + 88, 69, 61,255, 86, 68, 60,255, 85, 67, 60,255, 84, 66, 59,255, 82, 65, 58,255, 81, 64, 57,255, 79, 63, 56,255, 77, 62, 55,255, + 76, 61, 55,255, 75, 60, 53,255, 73, 59, 53,255, 72, 58, 52,255, 70, 57, 51,255, 68, 55, 49,255, 64, 58, 55,255, 61, 62, 62,255, + 60, 60, 61,255,134,106, 99,255,202,149,132,255,200,148,132,255,200,146,130,255,200,146,129,255,198,145,128,255,198,144,126,255, +197,144,125,255,197,143,123,255,196,142,122,255,197,141,121,255,195,140,119,255,195,138,117,255,194,138,116,255,194,137,114,255, +193,135,112,255,192,135,110,255,191,134,108,255,191,133,108,255,189,132,107,255,189,132,107,255,188,131,106,255,187,130,106,255, +186,130,105,255,186,129,105,255,184,128,104,255,183,128,103,255,183,127,103,255,181,126,102,255,180,125,102,255,180,125,101,255, +178,124,101,255,177,123,100,255,176,123,100,255,175,122, 98,255,175,121, 98,255,173,121, 98,255,173,120, 97,255,172,119, 97,255, +171,119, 96,255,170,118, 96,255,170,117, 95,255,168,117, 94,255,168,116, 94,255,167,115, 93,255,165,115, 93,255,164,114, 92,255, +164,113, 91,255,162,112, 91,255,161,112, 90,255,160,111, 90,255,159,110, 89,255,158,109, 88,255,156,108, 88,255,155,108, 87,255, +154,106, 86,255,153,106, 86,255,152,105, 84,255,151,104, 84,255,149,103, 83,255,148,102, 82,255,147,101, 82,255,145,100, 81,255, +144, 99, 79,255,142, 98, 79,255,140, 97, 78,255,139, 96, 77,255,138, 94, 76,255,135, 93, 75,255,134, 91, 73,255,132, 91, 73,255, +130, 90, 72,255,128, 88, 70,255,126, 87, 69,255,124, 85, 68,255,122, 83, 66,255,120, 82, 65,255,118, 81, 63,255,115, 78, 62,255, +113, 77, 61,255,110, 75, 59,255,107, 73, 58,255,104, 71, 56,255,102, 69, 54,255, 99, 67, 53,255, 96, 65, 52,255, 94, 63, 49,255, + 91, 61, 48,255, 87, 59, 47,255, 84, 57, 44,255, 82, 54, 42,255, 78, 52, 41,255, 74, 50, 39,255, 67, 55, 49,255, 61, 62, 62,255, + 60, 60, 61,255,134,107,100,255,201,149,135,255,200,149,133,255,199,147,132,255,199,147,131,255,198,146,130,255,198,145,128,255, +198,145,127,255,197,143,126,255,196,142,124,255,196,142,123,255,195,140,121,255,195,139,119,255,195,139,118,255,193,137,116,255, +193,136,114,255,192,135,112,255,192,134,111,255,191,133,108,255,190,133,108,255,189,132,107,255,188,131,107,255,187,131,106,255, +186,129,105,255,186,130,105,255,185,129,104,255,183,128,104,255,183,128,103,255,182,127,102,255,181,126,102,255,180,125,102,255, +179,124,101,255,178,124,101,255,177,123,100,255,175,122, 99,255,175,122, 99,255,174,121, 98,255,173,120, 97,255,172,120, 97,255, +171,119, 97,255,170,119, 96,255,169,118, 96,255,169,117, 95,255,167,117, 94,255,166,116, 94,255,166,115, 93,255,164,114, 92,255, +163,114, 92,255,163,113, 91,255,161,112, 91,255,160,111, 90,255,159,111, 90,255,158,109, 88,255,157,109, 87,255,156,108, 88,255, +154,107, 86,255,153,106, 86,255,152,106, 85,255,150,104, 84,255,149,103, 83,255,147,102, 82,255,146,101, 82,255,145,101, 81,255, +143,100, 80,255,142, 98, 79,255,141, 97, 78,255,139, 96, 77,255,137, 95, 76,255,136, 94, 76,255,134, 92, 74,255,132, 91, 73,255, +131, 90, 72,255,128, 88, 71,255,126, 87, 70,255,125, 86, 69,255,122, 84, 67,255,120, 83, 66,255,118, 81, 65,255,116, 79, 63,255, +113, 77, 62,255,111, 76, 61,255,108, 73, 58,255,105, 72, 57,255,102, 69, 55,255,100, 68, 53,255, 96, 66, 52,255, 93, 63, 50,255, + 91, 62, 49,255, 88, 59, 47,255, 85, 57, 45,255, 82, 55, 43,255, 78, 52, 41,255, 75, 50, 39,255, 68, 55, 49,255, 61, 62, 62,255, + 60, 60, 61,255,134,108,101,255,202,151,137,255,200,149,135,255,200,149,135,255,200,148,134,255,199,148,132,255,198,146,131,255, +198,146,130,255,198,145,128,255,197,144,127,255,197,144,126,255,196,142,124,255,195,141,122,255,195,140,121,255,194,139,119,255, +194,138,117,255,193,137,115,255,192,136,113,255,192,135,111,255,191,134,109,255,190,133,108,255,189,132,107,255,188,131,106,255, +187,131,106,255,187,130,106,255,185,129,105,255,185,129,104,255,184,128,104,255,183,127,103,255,181,126,102,255,181,126,102,255, +180,125,101,255,178,124,101,255,178,124,101,255,177,123, 99,255,176,122, 99,255,175,122, 98,255,174,121, 98,255,173,121, 98,255, +172,120, 97,255,171,119, 96,255,170,119, 96,255,169,118, 95,255,168,117, 94,255,167,116, 94,255,166,115, 94,255,165,115, 93,255, +164,114, 92,255,163,113, 91,255,162,112, 91,255,161,112, 90,255,160,111, 89,255,159,110, 89,255,158,109, 88,255,156,109, 87,255, +155,108, 87,255,154,106, 86,255,152,105, 85,255,152,105, 84,255,150,104, 84,255,149,103, 83,255,147,102, 82,255,146,101, 82,255, +144,100, 80,255,143, 99, 80,255,142, 98, 79,255,140, 97, 78,255,138, 96, 77,255,137, 94, 76,255,135, 93, 75,255,133, 92, 74,255, +131, 91, 73,255,130, 89, 71,255,128, 88, 70,255,125, 86, 69,255,123, 85, 68,255,121, 83, 67,255,119, 82, 65,255,116, 80, 64,255, +114, 78, 62,255,111, 76, 60,255,109, 74, 59,255,106, 72, 57,255,103, 70, 55,255,100, 68, 54,255, 97, 66, 52,255, 94, 64, 50,255, + 92, 62, 49,255, 89, 60, 47,255, 85, 57, 45,255, 82, 56, 44,255, 79, 53, 41,255, 76, 50, 39,255, 68, 55, 50,255, 61, 62, 62,255, + 60, 60, 61,255,134,109,102,255,203,152,140,255,201,150,138,255,201,150,137,255,200,150,136,255,200,148,134,255,199,148,134,255, +199,147,132,255,198,147,131,255,198,146,129,255,197,144,128,255,197,144,126,255,196,143,125,255,195,141,123,255,195,141,122,255, +194,140,120,255,193,138,117,255,193,137,116,255,192,137,114,255,191,135,111,255,191,134,110,255,190,133,108,255,189,132,107,255, +188,131,106,255,187,131,106,255,186,130,105,255,185,129,105,255,185,129,104,255,184,128,104,255,183,127,103,255,182,126,102,255, +181,126,102,255,180,125,101,255,179,124,101,255,178,124,100,255,177,123, 99,255,176,123, 99,255,175,121, 98,255,174,121, 98,255, +173,121, 98,255,172,120, 97,255,171,119, 96,255,170,118, 95,255,169,117, 95,255,168,117, 95,255,167,116, 93,255,166,115, 93,255, +165,114, 92,255,164,114, 92,255,163,113, 91,255,162,112, 90,255,161,111, 90,255,160,111, 89,255,158,110, 89,255,157,108, 87,255, +156,108, 88,255,155,107, 87,255,153,106, 85,255,152,105, 85,255,151,105, 84,255,149,103, 83,255,148,102, 82,255,147,102, 82,255, +145,100, 80,255,144, 99, 80,255,143, 99, 79,255,140, 97, 78,255,139, 96, 77,255,138, 95, 76,255,136, 93, 75,255,134, 93, 74,255, +132, 91, 73,255,130, 89, 71,255,128, 88, 70,255,127, 87, 70,255,124, 85, 68,255,122, 84, 67,255,119, 81, 66,255,117, 80, 64,255, +114, 79, 63,255,112, 76, 61,255,109, 75, 60,255,106, 73, 58,255,103, 70, 55,255,101, 69, 54,255, 98, 66, 53,255, 95, 64, 51,255, + 92, 62, 49,255, 89, 60, 48,255, 86, 58, 45,255, 83, 56, 44,255, 79, 54, 42,255, 76, 51, 40,255, 68, 55, 49,255, 61, 62, 62,255, + 60, 60, 61,255,135,109,103,255,204,154,142,255,202,153,141,255,202,152,139,255,202,151,138,255,201,150,137,255,201,150,136,255, +200,149,134,255,199,148,133,255,199,147,131,255,198,146,130,255,198,145,129,255,197,144,127,255,197,143,126,255,196,142,124,255, +196,141,122,255,195,140,120,255,194,139,119,255,194,138,117,255,193,137,115,255,192,135,112,255,191,134,110,255,191,134,109,255, +189,132,107,255,188,132,107,255,187,130,107,255,186,130,106,255,185,129,105,255,184,128,104,255,184,128,104,255,183,127,103,255, +181,126,102,255,181,126,102,255,180,125,102,255,178,124,101,255,178,124,100,255,177,123, 99,255,176,123, 99,255,175,122, 99,255, +174,121, 98,255,173,120, 97,255,172,120, 97,255,172,119, 97,255,170,118, 96,255,169,117, 95,255,168,116, 95,255,167,116, 94,255, +166,115, 93,255,165,114, 92,255,164,114, 92,255,162,113, 91,255,161,113, 90,255,160,111, 90,255,159,110, 89,255,158,110, 89,255, +157,109, 88,255,156,108, 87,255,154,107, 87,255,153,106, 85,255,152,105, 85,255,151,104, 84,255,149,103, 83,255,148,102, 83,255, +146,101, 81,255,145,100, 80,255,143, 99, 80,255,141, 97, 78,255,140, 96, 78,255,138, 95, 77,255,136, 94, 75,255,134, 93, 74,255, +133, 92, 74,255,131, 90, 72,255,129, 89, 71,255,127, 88, 71,255,124, 86, 69,255,122, 84, 67,255,120, 83, 66,255,118, 80, 64,255, +115, 79, 63,255,113, 78, 61,255,110, 75, 60,255,107, 73, 58,255,104, 71, 56,255,102, 69, 55,255, 98, 67, 53,255, 96, 65, 51,255, + 93, 63, 50,255, 90, 61, 48,255, 86, 58, 46,255, 84, 56, 44,255, 80, 54, 42,255, 77, 51, 40,255, 69, 55, 50,255, 61, 62, 62,255, + 60, 60, 60,255,135,110,104,255,204,156,144,255,203,154,143,255,202,153,142,255,202,152,141,255,201,152,139,255,201,151,138,255, +201,150,137,255,200,149,135,255,200,148,134,255,199,147,133,255,198,146,131,255,198,146,129,255,197,145,128,255,196,144,126,255, +196,143,125,255,195,142,123,255,195,141,121,255,194,139,119,255,193,138,117,255,193,137,115,255,192,135,112,255,191,134,110,255, +191,133,109,255,189,132,107,255,188,131,106,255,188,131,106,255,186,130,106,255,185,129,105,255,185,129,104,255,183,128,104,255, +182,127,103,255,182,127,103,255,180,126,102,255,179,125,101,255,179,125,101,255,177,124,100,255,176,124, 99,255,175,123, 99,255, +175,122, 99,255,174,121, 98,255,173,120, 97,255,171,119, 96,255,171,119, 96,255,170,118, 96,255,168,117, 95,255,168,116, 94,255, +166,116, 94,255,165,115, 93,255,165,114, 92,255,163,113, 92,255,162,112, 91,255,161,112, 90,255,160,111, 90,255,159,110, 89,255, +158,109, 88,255,156,109, 88,255,155,107, 86,255,154,107, 86,255,152,106, 85,255,151,104, 84,255,150,104, 83,255,149,103, 83,255, +147,102, 82,255,146,101, 81,255,144,100, 80,255,142, 98, 79,255,141, 97, 78,255,139, 96, 77,255,137, 94, 76,255,136, 93, 75,255, +134, 92, 74,255,132, 91, 72,255,130, 90, 72,255,128, 87, 71,255,126, 86, 69,255,123, 85, 68,255,121, 83, 67,255,118, 81, 65,255, +116, 80, 64,255,113, 77, 62,255,111, 76, 61,255,108, 73, 59,255,105, 72, 57,255,102, 69, 55,255, 99, 67, 54,255, 96, 65, 51,255, + 94, 63, 50,255, 90, 61, 48,255, 87, 59, 46,255, 84, 57, 45,255, 81, 54, 42,255, 77, 52, 40,255, 69, 56, 50,255, 61, 62, 62,255, + 60, 60, 60,255,136,111,106,255,206,157,147,255,203,155,145,255,203,154,144,255,202,153,143,255,202,153,141,255,201,152,140,255, +201,152,138,255,200,150,137,255,201,149,136,255,199,148,135,255,199,148,133,255,198,147,132,255,198,146,130,255,197,145,129,255, +197,144,127,255,196,143,125,255,195,142,124,255,195,141,122,255,194,139,119,255,193,138,117,255,193,137,115,255,191,135,113,255, +192,135,111,255,191,133,109,255,189,132,107,255,188,131,106,255,188,131,107,255,186,130,105,255,185,129,105,255,185,129,105,255, +183,128,103,255,182,127,104,255,182,127,103,255,180,125,101,255,180,126,102,255,179,125,101,255,177,123,100,255,177,123,100,255, +175,122, 99,255,174,121, 99,255,174,121, 98,255,172,119, 97,255,171,120, 96,255,171,119, 96,255,169,117, 96,255,168,117, 94,255, +168,116, 94,255,166,115, 93,255,165,114, 92,255,165,114, 93,255,163,113, 91,255,162,112, 90,255,161,112, 91,255,159,110, 89,255, +158,110, 88,255,157,109, 88,255,156,108, 87,255,155,107, 86,255,153,106, 86,255,151,105, 84,255,150,104, 84,255,149,103, 83,255, +148,102, 82,255,146,101, 81,255,145,100, 81,255,143, 99, 79,255,142, 98, 79,255,140, 97, 78,255,138, 95, 76,255,136, 94, 75,255, +134, 93, 75,255,133, 91, 73,255,130, 90, 72,255,129, 89, 71,255,126, 87, 69,255,124, 85, 68,255,122, 84, 66,255,119, 82, 65,255, +117, 80, 64,255,114, 78, 62,255,112, 76, 61,255,109, 74, 59,255,105, 72, 57,255,103, 70, 56,255,100, 68, 54,255, 97, 65, 52,255, + 94, 64, 50,255, 91, 61, 49,255, 87, 59, 46,255, 85, 57, 45,255, 81, 55, 43,255, 78, 52, 40,255, 69, 56, 50,255, 61, 62, 62,255, + 60, 60, 60,255,136,112,107,255,206,158,149,255,204,157,147,255,204,156,145,255,204,156,145,255,203,155,144,255,203,153,142,255, +202,153,141,255,202,151,140,255,201,151,138,255,201,151,137,255,200,149,136,255,199,148,134,255,199,148,133,255,198,146,131,255, +198,145,129,255,198,145,128,255,196,143,126,255,196,142,124,255,195,141,122,255,194,139,120,255,194,138,118,255,193,137,115,255, +192,136,113,255,191,135,111,255,190,133,109,255,190,132,108,255,189,132,107,255,188,131,106,255,187,130,106,255,186,130,105,255, +185,129,104,255,184,128,104,255,183,128,104,255,182,127,102,255,181,126,102,255,180,125,102,255,179,124,101,255,178,124,100,255, +177,123,100,255,176,122, 99,255,175,122, 99,255,174,121, 98,255,172,120, 97,255,172,120, 97,255,171,119, 96,255,169,118, 95,255, +169,117, 95,255,168,117, 94,255,166,115, 93,255,165,115, 93,255,164,114, 93,255,162,113, 91,255,162,112, 91,255,160,112, 91,255, +159,110, 89,255,158,109, 88,255,157,108, 87,255,155,108, 87,255,154,107, 86,255,153,106, 85,255,151,105, 85,255,150,104, 84,255, +149,102, 82,255,147,102, 82,255,146,101, 81,255,144, 99, 80,255,142, 98, 79,255,141, 97, 78,255,138, 95, 77,255,137, 94, 76,255, +136, 93, 75,255,133, 92, 73,255,131, 90, 72,255,129, 89, 72,255,127, 87, 70,255,124, 86, 69,255,122, 83, 68,255,120, 82, 65,255, +117, 80, 64,255,114, 78, 62,255,112, 76, 61,255,109, 75, 60,255,106, 72, 58,255,104, 71, 56,255,100, 68, 54,255, 98, 66, 52,255, + 95, 64, 51,255, 91, 62, 49,255, 88, 59, 47,255, 85, 57, 45,255, 81, 55, 43,255, 78, 52, 41,255, 69, 56, 50,255, 61, 62, 62,255, + 60, 60, 60,255,136,112,108,255,206,159,151,255,205,157,149,255,205,157,148,255,204,156,147,255,204,156,146,255,203,155,144,255, +203,154,143,255,202,153,142,255,202,152,140,255,202,152,139,255,201,151,137,255,200,149,136,255,199,148,135,255,199,148,133,255, +198,146,131,255,197,145,130,255,197,145,128,255,196,143,126,255,195,142,124,255,195,141,122,255,194,139,119,255,193,138,118,255, +193,137,115,255,192,136,113,255,191,134,112,255,190,133,109,255,190,132,108,255,188,131,106,255,188,131,106,255,187,130,106,255, +186,129,105,255,185,129,104,255,184,128,104,255,183,127,103,255,182,127,102,255,181,126,102,255,179,125,101,255,179,124,101,255, +177,124,100,255,176,123, 99,255,175,122, 99,255,174,121, 98,255,173,120, 97,255,172,120, 97,255,171,120, 97,255,170,118, 96,255, +169,118, 95,255,168,117, 95,255,167,116, 94,255,166,115, 93,255,165,115, 92,255,164,114, 92,255,162,112, 91,255,161,111, 90,255, +160,111, 90,255,159,110, 89,255,157,109, 88,255,156,108, 87,255,155,107, 87,255,153,106, 85,255,152,106, 85,255,151,104, 84,255, +149,103, 83,255,148,102, 82,255,146,101, 82,255,144,100, 80,255,143, 99, 79,255,141, 98, 79,255,139, 96, 77,255,138, 95, 76,255, +136, 94, 75,255,134, 92, 74,255,132, 91, 73,255,130, 89, 72,255,128, 88, 70,255,125, 86, 69,255,123, 84, 68,255,121, 83, 66,255, +118, 81, 65,255,115, 78, 63,255,113, 77, 61,255,110, 75, 60,255,107, 73, 58,255,104, 71, 56,255,101, 69, 55,255, 98, 66, 52,255, + 95, 64, 51,255, 92, 62, 49,255, 88, 60, 47,255, 85, 58, 45,255, 82, 55, 43,255, 79, 53, 41,255, 69, 56, 50,255, 61, 62, 62,255, + 60, 60, 60,255,137,113,109,255,208,160,152,255,205,158,151,255,206,159,150,255,205,158,149,255,205,156,147,255,204,156,146,255, +203,154,145,255,203,154,143,255,203,154,142,255,202,153,141,255,202,152,140,255,201,151,138,255,200,149,136,255,200,149,135,255, +199,148,134,255,198,146,131,255,197,145,130,255,198,145,129,255,196,143,126,255,195,142,124,255,195,142,122,255,194,139,120,255, +193,138,118,255,192,137,116,255,192,136,113,255,191,134,110,255,190,133,109,255,189,132,107,255,188,131,106,255,188,131,106,255, +186,130,106,255,186,129,105,255,185,129,105,255,183,128,103,255,183,127,103,255,182,127,102,255,180,125,102,255,179,125,101,255, +178,125,100,255,177,123,100,255,176,123, 99,255,175,122, 98,255,174,121, 98,255,173,120, 98,255,172,119, 96,255,171,119, 96,255, +170,118, 96,255,168,117, 94,255,168,116, 94,255,167,116, 94,255,165,114, 92,255,164,114, 92,255,163,113, 92,255,161,112, 90,255, +160,111, 90,255,160,111, 90,255,158,109, 88,255,157,109, 88,255,156,108, 87,255,154,106, 86,255,153,106, 85,255,152,105, 85,255, +149,103, 83,255,148,102, 82,255,147,102, 82,255,145,100, 81,255,143, 99, 80,255,142, 98, 79,255,140, 96, 77,255,138, 95, 77,255, +137, 95, 76,255,134, 93, 74,255,133, 91, 73,255,131, 90, 72,255,128, 88, 71,255,125, 86, 69,255,123, 85, 68,255,121, 83, 66,255, +118, 81, 65,255,115, 79, 63,255,114, 78, 62,255,111, 76, 60,255,107, 73, 58,255,105, 72, 57,255,102, 69, 55,255, 98, 67, 53,255, + 96, 65, 51,255, 92, 63, 50,255, 89, 60, 47,255, 86, 58, 46,255, 82, 55, 43,255, 79, 53, 41,255, 69, 56, 51,255, 61, 62, 62,255, + 60, 60, 60,255,137,114,110,255,208,162,155,255,206,160,153,255,206,160,151,255,206,159,151,255,205,158,150,255,205,157,148,255, +204,156,147,255,203,156,146,255,203,155,144,255,203,154,143,255,202,153,141,255,202,152,140,255,201,151,138,255,201,150,137,255, +200,149,135,255,199,148,134,255,198,146,132,255,198,146,130,255,198,145,129,255,196,143,126,255,196,142,124,255,195,141,122,255, +194,139,120,255,193,138,118,255,192,137,116,255,192,135,113,255,191,134,110,255,190,133,109,255,189,132,107,255,188,132,107,255, +187,130,106,255,186,130,106,255,185,129,105,255,184,128,104,255,183,128,104,255,182,127,103,255,181,126,102,255,180,126,102,255, +179,125,101,255,178,124,100,255,177,123,100,255,176,123, 99,255,175,121, 99,255,174,121, 98,255,173,120, 98,255,171,119, 96,255, +170,119, 96,255,170,118, 96,255,168,117, 94,255,167,116, 94,255,166,116, 94,255,165,114, 92,255,164,114, 92,255,163,113, 92,255, +161,112, 90,255,160,111, 90,255,159,110, 90,255,157,109, 88,255,156,108, 87,255,155,107, 86,255,153,106, 86,255,152,106, 85,255, +151,104, 84,255,149,103, 83,255,148,102, 83,255,146,101, 81,255,144,100, 80,255,143, 99, 80,255,141, 97, 78,255,139, 96, 78,255, +137, 95, 77,255,135, 93, 75,255,133, 92, 74,255,131, 90, 73,255,128, 88, 71,255,126, 87, 70,255,124, 85, 68,255,122, 83, 66,255, +119, 81, 65,255,117, 79, 63,255,114, 78, 62,255,111, 76, 61,255,108, 74, 59,255,105, 72, 57,255,102, 70, 55,255, 99, 67, 53,255, + 96, 65, 51,255, 93, 63, 50,255, 89, 60, 47,255, 86, 58, 45,255, 82, 55, 44,255, 79, 53, 41,255, 69, 56, 51,255, 61, 62, 62,255, + 60, 60, 60,255,137,114,111,255,209,163,156,255,207,161,155,255,206,161,154,255,206,160,152,255,205,159,151,255,205,158,150,255, +205,157,148,255,204,157,148,255,204,156,146,255,203,155,145,255,202,154,144,255,202,153,142,255,201,152,141,255,201,151,139,255, +201,150,137,255,200,149,136,255,199,148,134,255,199,147,132,255,198,146,130,255,197,145,129,255,196,143,127,255,195,142,125,255, +195,141,122,255,194,139,120,255,193,138,118,255,192,137,115,255,192,135,113,255,191,134,111,255,190,133,109,255,189,132,107,255, +188,131,106,255,187,131,106,255,186,130,105,255,185,129,104,255,184,128,104,255,183,128,104,255,182,127,103,255,181,126,102,255, +180,125,102,255,179,124,101,255,178,124,100,255,177,123, 99,255,175,122, 99,255,174,121, 98,255,173,120, 97,255,172,120, 97,255, +172,119, 96,255,170,118, 95,255,169,117, 95,255,168,117, 94,255,167,116, 93,255,166,115, 93,255,164,114, 92,255,163,113, 91,255, +162,112, 91,255,161,112, 90,255,159,110, 89,255,158,110, 89,255,157,109, 88,255,155,108, 87,255,154,107, 86,255,153,106, 85,255, +151,104, 84,255,150,104, 83,255,148,103, 83,255,147,101, 82,255,145,100, 81,255,143, 99, 80,255,142, 98, 78,255,140, 97, 78,255, +138, 95, 77,255,136, 94, 75,255,134, 92, 74,255,131, 91, 73,255,129, 89, 71,255,127, 87, 70,255,124, 86, 69,255,122, 84, 67,255, +120, 82, 65,255,117, 80, 64,255,114, 78, 62,255,112, 77, 61,255,109, 74, 59,255,106, 72, 57,255,103, 70, 56,255, 99, 67, 53,255, + 96, 65, 52,255, 93, 63, 50,255, 89, 60, 48,255, 86, 58, 46,255, 83, 56, 44,255, 80, 53, 41,255, 69, 56, 51,255, 61, 62, 62,255, + 60, 60, 60,255,138,115,111,255,209,163,157,255,207,163,156,255,208,162,155,255,207,162,154,255,207,160,152,255,206,159,152,255, +205,158,151,255,205,158,149,255,204,157,148,255,205,157,147,255,203,155,145,255,202,154,144,255,202,153,143,255,201,152,141,255, +201,151,139,255,201,150,137,255,200,149,136,255,199,148,134,255,199,146,132,255,198,146,130,255,197,145,128,255,196,143,126,255, +195,142,124,255,195,141,122,255,194,139,119,255,193,138,118,255,193,137,116,255,191,135,113,255,191,134,110,255,191,133,109,255, +189,131,107,255,188,131,107,255,188,131,106,255,186,129,105,255,185,129,105,255,184,129,104,255,183,127,103,255,182,127,102,255, +181,126,103,255,179,125,101,255,179,125,100,255,178,124,101,255,176,122, 99,255,176,122, 98,255,175,121, 98,255,173,120, 97,255, +172,119, 96,255,171,119, 96,255,170,118, 95,255,169,118, 95,255,167,116, 94,255,166,115, 93,255,165,115, 92,255,164,113, 92,255, +163,113, 91,255,162,112, 91,255,160,111, 89,255,159,110, 89,255,158,110, 89,255,156,108, 87,255,155,107, 86,255,154,106, 86,255, +152,105, 84,255,150,104, 84,255,149,103, 83,255,147,101, 82,255,146,101, 81,255,144,100, 81,255,142, 98, 79,255,140, 97, 78,255, +139, 96, 77,255,136, 94, 75,255,134, 92, 74,255,132, 91, 73,255,130, 89, 71,255,127, 88, 70,255,126, 86, 69,255,123, 84, 67,255, +120, 82, 66,255,117, 80, 64,255,115, 78, 63,255,112, 77, 61,255,109, 74, 59,255,106, 73, 58,255,103, 70, 56,255, 99, 68, 53,255, + 97, 66, 52,255, 93, 63, 50,255, 90, 60, 48,255, 86, 59, 46,255, 83, 56, 44,255, 80, 53, 42,255, 70, 56, 50,255, 61, 62, 62,255, + 60, 60, 60,255,138,115,113,255,210,165,160,255,209,164,158,255,208,163,157,255,208,162,155,255,207,161,155,255,207,160,153,255, +206,160,152,255,206,159,151,255,205,158,149,255,204,158,149,255,204,157,147,255,203,155,145,255,202,155,144,255,202,154,143,255, +202,152,141,255,201,151,139,255,201,150,137,255,200,149,136,255,199,148,134,255,198,147,132,255,198,146,130,255,197,145,128,255, +196,143,126,255,196,142,124,255,195,141,122,255,194,139,120,255,193,138,117,255,192,137,115,255,191,135,112,255,191,134,110,255, +190,133,109,255,189,132,107,255,188,132,107,255,187,131,106,255,186,130,105,255,185,129,105,255,184,128,104,255,182,127,103,255, +182,127,102,255,181,126,102,255,179,125,101,255,179,125,100,255,178,124,100,255,176,123, 99,255,175,122, 98,255,173,121, 98,255, +173,120, 97,255,171,119, 96,255,170,118, 96,255,169,118, 96,255,168,117, 94,255,167,116, 94,255,166,116, 93,255,165,114, 92,255, +163,113, 91,255,162,113, 91,255,161,112, 90,255,159,110, 89,255,158,110, 89,255,157,109, 88,255,155,108, 87,255,154,107, 86,255, +153,105, 85,255,151,105, 84,255,150,104, 84,255,148,102, 82,255,146,101, 81,255,145,100, 81,255,142, 99, 80,255,141, 97, 79,255, +139, 96, 78,255,137, 94, 76,255,135, 93, 75,255,133, 92, 74,255,130, 89, 72,255,128, 88, 71,255,125, 87, 69,255,123, 84, 67,255, +120, 83, 66,255,118, 81, 64,255,115, 79, 63,255,113, 77, 62,255,110, 75, 59,255,106, 73, 58,255,103, 71, 56,255,100, 68, 53,255, + 97, 66, 52,255, 93, 63, 50,255, 90, 61, 48,255, 87, 59, 46,255, 83, 56, 44,255, 80, 53, 42,255, 70, 56, 50,255, 61, 62, 62,255, + 60, 60, 60,255,138,116,113,255,210,166,161,255,209,164,159,255,208,164,158,255,208,163,157,255,207,162,156,255,207,162,155,255, +206,160,153,255,206,160,152,255,206,160,151,255,205,158,150,255,204,157,149,255,204,157,147,255,203,155,145,255,202,154,144,255, +202,154,143,255,201,152,141,255,201,151,140,255,200,151,138,255,199,149,136,255,199,148,134,255,198,147,132,255,197,146,130,255, +197,144,128,255,196,143,126,255,195,142,124,255,195,141,121,255,194,139,119,255,193,138,117,255,192,137,115,255,191,135,113,255, +190,134,110,255,190,133,108,255,188,131,106,255,188,131,107,255,187,130,106,255,185,130,104,255,185,129,104,255,184,128,104,255, +183,127,103,255,181,126,102,255,181,126,102,255,179,124,101,255,178,124,100,255,176,123,100,255,175,123, 99,255,175,121, 98,255, +174,121, 98,255,172,119, 97,255,171,119, 96,255,170,118, 96,255,169,117, 95,255,168,116, 94,255,167,116, 94,255,165,115, 93,255, +164,114, 92,255,163,113, 92,255,161,112, 90,255,160,111, 90,255,159,110, 89,255,157,109, 88,255,156,108, 87,255,155,107, 87,255, +153,106, 85,255,152,105, 84,255,150,104, 84,255,148,103, 83,255,147,102, 82,255,145,100, 81,255,143, 99, 80,255,141, 98, 79,255, +140, 97, 78,255,138, 95, 76,255,135, 93, 75,255,133, 92, 74,255,131, 90, 72,255,129, 88, 71,255,126, 86, 70,255,124, 85, 68,255, +121, 83, 67,255,119, 82, 64,255,116, 79, 63,255,113, 77, 62,255,110, 75, 60,255,107, 74, 58,255,104, 71, 56,255,100, 68, 54,255, + 97, 66, 52,255, 93, 63, 50,255, 90, 61, 48,255, 87, 59, 46,255, 83, 56, 44,255, 80, 54, 42,255, 70, 56, 50,255, 61, 62, 62,255, + 60, 60, 60,255,139,116,114,255,212,167,163,255,209,165,160,255,210,164,160,255,209,165,159,255,208,163,157,255,207,163,157,255, +208,162,156,255,206,160,154,255,207,161,153,255,206,160,152,255,205,158,150,255,204,158,149,255,205,157,148,255,203,155,146,255, +202,155,144,255,202,154,142,255,201,152,141,255,201,152,139,255,200,150,137,255,199,149,136,255,199,148,134,255,198,147,131,255, +197,146,130,255,197,144,128,255,196,143,125,255,195,142,123,255,195,140,121,255,193,138,119,255,193,138,117,255,192,136,114,255, +191,134,112,255,191,134,109,255,190,133,108,255,188,131,106,255,188,131,106,255,187,130,106,255,185,130,104,255,184,129,104,255, +184,128,104,255,182,126,102,255,181,126,102,255,180,126,102,255,178,124,100,255,178,124,100,255,177,123,100,255,175,121, 98,255, +174,122, 99,255,172,120, 97,255,171,119, 96,255,171,119, 97,255,169,117, 95,255,168,117, 94,255,168,117, 95,255,166,115, 93,255, +165,114, 92,255,164,114, 91,255,162,112, 91,255,161,112, 90,255,160,111, 90,255,158,109, 88,255,157,109, 88,255,155,108, 87,255, +153,106, 85,255,152,106, 85,255,151,105, 85,255,149,103, 83,255,147,102, 82,255,146,101, 81,255,144,100, 80,255,142, 98, 79,255, +141, 97, 78,255,138, 95, 76,255,136, 94, 75,255,134, 92, 74,255,131, 90, 72,255,129, 89, 71,255,127, 88, 70,255,124, 85, 68,255, +121, 83, 67,255,118, 81, 65,255,116, 79, 63,255,113, 77, 62,255,110, 75, 60,255,107, 73, 58,255,104, 71, 56,255,100, 68, 54,255, + 97, 66, 52,255, 94, 64, 51,255, 90, 61, 48,255, 87, 59, 46,255, 83, 56, 44,255, 80, 54, 42,255, 70, 57, 50,255, 61, 62, 62,255, + 60, 60, 60,255,139,117,115,255,212,169,164,255,210,167,163,255,210,165,161,255,210,165,160,255,209,165,159,255,208,163,158,255, +208,163,157,255,207,162,156,255,207,161,154,255,207,161,153,255,206,160,152,255,206,159,150,255,205,158,149,255,204,157,148,255, +204,156,146,255,203,155,144,255,202,154,142,255,202,152,141,255,201,152,139,255,200,150,137,255,200,149,135,255,198,148,134,255, +198,146,132,255,197,145,129,255,196,144,128,255,196,143,125,255,195,141,123,255,194,140,121,255,194,139,118,255,193,137,116,255, +192,136,114,255,191,135,111,255,190,134,109,255,189,132,107,255,188,132,107,255,187,131,106,255,186,130,105,255,185,129,105,255, +184,129,104,255,183,127,103,255,182,127,103,255,181,126,102,255,180,125,101,255,178,124,101,255,178,124,100,255,176,122, 99,255, +175,122, 98,255,174,121, 98,255,172,120, 97,255,172,119, 97,255,170,119, 96,255,169,117, 95,255,168,117, 95,255,166,115, 93,255, +165,115, 93,255,164,114, 92,255,163,113, 91,255,161,112, 91,255,160,111, 90,255,159,110, 89,255,157,109, 88,255,156,108, 87,255, +154,106, 86,255,153,106, 85,255,151,105, 85,255,150,103, 83,255,148,102, 82,255,147,101, 82,255,145,100, 80,255,143, 99, 80,255, +141, 97, 79,255,138, 95, 77,255,136, 94, 75,255,135, 93, 74,255,132, 91, 73,255,130, 89, 71,255,128, 88, 69,255,125, 85, 68,255, +122, 84, 67,255,120, 81, 65,255,117, 80, 64,255,114, 78, 62,255,110, 75, 60,255,107, 74, 59,255,104, 71, 56,255,100, 68, 54,255, + 97, 66, 52,255, 94, 64, 51,255, 90, 61, 48,255, 87, 59, 46,255, 84, 56, 44,255, 80, 54, 42,255, 70, 56, 50,255, 61, 62, 62,255, + 60, 60, 60,255,139,117,115,255,213,169,165,255,210,167,163,255,210,167,163,255,209,166,161,255,210,166,161,255,209,165,160,255, +209,163,158,255,208,163,157,255,207,162,156,255,206,162,154,255,206,161,153,255,206,160,152,255,206,158,150,255,205,158,149,255, +204,156,148,255,204,155,146,255,203,155,144,255,202,154,143,255,202,152,141,255,201,152,139,255,200,150,137,255,199,148,135,255, +198,147,133,255,198,146,131,255,197,145,129,255,196,144,127,255,196,142,125,255,195,141,123,255,194,140,120,255,193,138,118,255, +192,137,116,255,192,136,114,255,191,134,111,255,190,133,109,255,189,132,107,255,188,131,107,255,187,130,106,255,186,130,105,255, +185,128,105,255,184,128,104,255,182,127,103,255,182,127,103,255,180,125,101,255,179,125,101,255,178,124,101,255,177,123, 99,255, +176,122, 99,255,174,121, 99,255,173,120, 97,255,172,120, 97,255,171,118, 97,255,170,118, 95,255,169,117, 95,255,167,116, 93,255, +166,115, 93,255,165,115, 93,255,163,113, 91,255,162,112, 91,255,161,111, 90,255,159,110, 89,255,158,110, 88,255,156,108, 88,255, +155,107, 86,255,154,106, 86,255,152,105, 85,255,150,104, 83,255,149,103, 83,255,147,102, 82,255,145,100, 81,255,143, 99, 80,255, +141, 98, 79,255,139, 96, 77,255,137, 94, 76,255,135, 93, 75,255,132, 91, 73,255,130, 89, 72,255,128, 88, 70,255,125, 86, 69,255, +122, 84, 67,255,119, 81, 65,255,117, 80, 64,255,114, 78, 62,255,110, 75, 60,255,108, 74, 59,255,104, 71, 56,255,100, 68, 54,255, + 97, 66, 53,255, 94, 63, 50,255, 90, 61, 48,255, 87, 59, 46,255, 83, 56, 44,255, 79, 53, 42,255, 69, 56, 50,255, 61, 62, 62,255, + 60, 60, 60,255,139,118,116,255,213,170,167,255,211,169,165,255,210,168,164,255,211,167,163,255,209,165,161,255,210,166,161,255, +209,165,160,255,209,163,158,255,208,163,157,255,208,162,156,255,206,162,154,255,207,161,153,255,206,160,152,255,205,159,151,255, +205,158,149,255,204,157,148,255,204,155,146,255,203,155,144,255,202,154,142,255,202,152,140,255,201,151,139,255,199,149,136,255, +199,148,135,255,199,148,133,255,197,146,131,255,197,145,129,255,196,144,127,255,195,142,124,255,195,141,122,255,194,140,120,255, +193,138,117,255,192,137,116,255,192,135,113,255,190,134,110,255,190,133,108,255,189,132,107,255,187,131,106,255,186,130,106,255, +186,130,105,255,184,128,104,255,183,128,104,255,182,127,103,255,181,126,102,255,180,126,102,255,179,125,101,255,177,123,100,255, +176,122,100,255,176,123, 99,255,174,121, 98,255,173,120, 98,255,171,119, 96,255,170,118, 96,255,169,118, 96,255,167,116, 94,255, +167,116, 93,255,166,115, 93,255,164,114, 92,255,162,113, 91,255,162,112, 91,255,160,111, 89,255,159,110, 89,255,157,109, 88,255, +155,108, 87,255,154,107, 86,255,153,106, 85,255,150,104, 84,255,149,103, 83,255,148,102, 83,255,145,100, 81,255,143, 99, 80,255, +142, 98, 79,255,139, 96, 77,255,137, 95, 76,255,135, 93, 75,255,133, 91, 73,255,130, 90, 72,255,128, 88, 71,255,126, 86, 69,255, +122, 84, 67,255,119, 82, 65,255,117, 80, 64,255,114, 78, 62,255,110, 75, 60,255,107, 74, 59,255,104, 71, 56,255,100, 68, 54,255, + 97, 66, 52,255, 94, 63, 50,255, 90, 61, 48,255, 86, 58, 46,255, 83, 56, 44,255, 79, 53, 41,255, 69, 56, 51,255, 61, 62, 62,255, + 60, 60, 60,255,140,118,117,255,214,171,169,255,212,169,167,255,212,169,165,255,211,168,164,255,210,167,163,255,210,166,162,255, +210,166,161,255,209,165,160,255,209,164,158,255,208,163,157,255,208,162,156,255,207,162,155,255,207,161,153,255,206,160,151,255, +205,159,150,255,205,158,149,255,204,156,148,255,204,156,145,255,202,154,144,255,202,153,142,255,201,152,140,255,201,151,138,255, +200,149,136,255,199,148,134,255,199,147,132,255,197,145,130,255,197,144,128,255,196,143,126,255,195,142,124,255,195,140,122,255, +193,139,120,255,193,138,117,255,192,136,114,255,191,135,112,255,190,133,109,255,190,132,108,255,188,131,107,255,187,131,106,255, +186,130,106,255,185,129,105,255,184,128,104,255,183,128,104,255,182,127,103,255,180,126,102,255,180,125,102,255,178,124,100,255, +177,123,100,255,176,122,100,255,174,122, 98,255,173,121, 98,255,172,119, 97,255,171,119, 97,255,170,118, 96,255,168,117, 94,255, +167,116, 94,255,166,116, 94,255,165,114, 92,255,163,113, 91,255,162,113, 91,255,161,111, 90,255,159,110, 89,255,158,109, 88,255, +156,108, 87,255,154,107, 87,255,153,106, 86,255,152,104, 84,255,150,104, 84,255,148,103, 83,255,146,101, 81,255,144,100, 80,255, +142, 98, 79,255,140, 96, 77,255,137, 95, 76,255,136, 94, 74,255,133, 91, 73,255,130, 90, 72,255,129, 89, 71,255,126, 86, 69,255, +123, 85, 68,255,121, 82, 65,255,118, 80, 64,255,114, 78, 63,255,111, 76, 60,255,107, 74, 59,255,104, 71, 56,255,100, 68, 54,255, + 96, 66, 52,255, 93, 63, 50,255, 90, 61, 48,255, 86, 58, 46,255, 83, 55, 43,255, 79, 52, 41,255, 69, 56, 50,255, 61, 62, 62,255, + 60, 60, 60,255,140,119,118,255,214,171,169,255,213,170,168,255,212,169,167,255,212,169,166,255,211,168,165,255,210,167,164,255, +210,167,162,255,209,166,161,255,209,165,160,255,209,164,159,255,208,163,157,255,207,162,156,255,207,161,155,255,206,160,153,255, +205,160,152,255,205,158,150,255,204,158,149,255,204,156,147,255,203,155,145,255,202,154,144,255,202,152,142,255,200,151,140,255, +200,151,138,255,200,150,136,255,198,148,134,255,198,147,132,255,197,145,130,255,196,144,128,255,196,143,125,255,195,141,123,255, +194,140,121,255,193,139,119,255,193,137,116,255,191,136,114,255,191,135,111,255,190,133,109,255,189,132,107,255,188,131,106,255, +187,131,105,255,186,129,105,255,185,129,104,255,183,127,103,255,182,127,103,255,181,126,102,255,179,126,102,255,179,124,101,255, +178,124,100,255,177,123, 99,255,176,122, 99,255,175,122, 98,255,173,120, 97,255,172,119, 96,255,171,119, 96,255,169,117, 95,255, +168,116, 94,255,167,116, 94,255,165,115, 92,255,164,114, 92,255,163,113, 92,255,161,112, 90,255,160,111, 89,255,158,110, 89,255, +157,109, 88,255,155,108, 87,255,154,106, 86,255,152,105, 84,255,150,104, 84,255,148,103, 83,255,147,101, 81,255,144,100, 80,255, +143, 99, 79,255,140, 97, 78,255,138, 95, 77,255,136, 94, 75,255,133, 92, 74,255,131, 90, 72,255,129, 89, 71,255,126, 86, 69,255, +123, 85, 68,255,120, 82, 66,255,118, 81, 64,255,114, 78, 63,255,111, 76, 60,255,107, 74, 58,255,103, 71, 56,255, 99, 68, 54,255, + 96, 65, 52,255, 92, 63, 50,255, 88, 60, 47,255, 85, 58, 45,255, 82, 55, 43,255, 77, 52, 40,255, 68, 55, 50,255, 61, 62, 62,255, + 60, 60, 60,255,141,119,118,255,214,173,171,255,212,171,169,255,213,170,168,255,212,170,167,255,212,169,166,255,211,168,165,255, +210,167,164,255,210,167,163,255,210,166,161,255,209,165,160,255,209,164,159,255,208,163,157,255,207,162,156,255,207,161,155,255, +206,160,153,255,205,160,152,255,205,158,150,255,204,157,148,255,203,156,147,255,203,155,145,255,203,154,143,255,201,152,142,255, +201,152,140,255,200,150,138,255,199,148,135,255,199,148,133,255,198,147,131,255,197,145,129,255,196,143,127,255,196,143,125,255, +195,141,122,255,194,140,121,255,194,139,118,255,192,137,115,255,191,135,113,255,191,134,111,255,190,132,108,255,189,132,107,255, +188,131,107,255,186,130,105,255,186,130,105,255,185,129,105,255,183,127,103,255,182,127,103,255,181,126,102,255,180,125,102,255, +179,125,101,255,177,123,100,255,176,123,100,255,175,122, 99,255,174,120, 97,255,172,120, 97,255,171,119, 97,255,169,118, 95,255, +168,117, 94,255,167,117, 94,255,165,115, 93,255,165,115, 93,255,164,114, 92,255,162,112, 90,255,161,112, 90,255,159,111, 90,255, +157,109, 88,255,156,108, 87,255,155,107, 86,255,152,105, 84,255,151,105, 84,255,149,103, 83,255,147,101, 82,255,145,100, 81,255, +143, 99, 80,255,140, 97, 78,255,138, 95, 77,255,136, 94, 76,255,134, 92, 74,255,131, 90, 72,255,129, 89, 71,255,126, 86, 69,255, +123, 85, 68,255,120, 82, 66,255,117, 80, 64,255,114, 78, 63,255,111, 76, 60,255,107, 73, 58,255,103, 70, 56,255, 99, 67, 53,255, + 95, 65, 51,255, 91, 62, 49,255, 88, 59, 47,255, 85, 58, 45,255, 81, 55, 43,255, 77, 51, 40,255, 67, 55, 49,255, 61, 62, 62,255, + 60, 60, 60,255,141,119,119,255,215,174,172,255,213,172,170,255,212,171,169,255,213,171,168,255,212,170,167,255,212,169,166,255, +211,168,165,255,210,167,164,255,210,167,163,255,210,166,161,255,209,165,160,255,209,164,159,255,208,163,157,255,207,162,156,255, +207,161,154,255,206,160,153,255,205,159,152,255,205,158,150,255,204,157,148,255,204,156,147,255,203,155,144,255,202,154,143,255, +201,152,141,255,201,151,139,255,200,150,137,255,199,148,135,255,198,147,133,255,197,146,131,255,197,144,128,255,196,143,126,255, +195,142,125,255,194,140,122,255,194,139,120,255,193,138,118,255,192,136,115,255,191,135,112,255,190,134,109,255,189,132,107,255, +189,132,107,255,187,130,106,255,186,130,106,255,185,129,105,255,184,128,103,255,183,127,103,255,182,127,103,255,180,125,101,255, +179,125,101,255,178,123,101,255,177,123,100,255,176,122, 99,255,175,121, 98,255,173,120, 97,255,172,120, 97,255,170,118, 95,255, +169,118, 95,255,168,117, 94,255,166,115, 93,255,165,114, 92,255,164,114, 92,255,162,112, 91,255,161,111, 90,255,160,111, 90,255, +158,109, 88,255,156,108, 87,255,155,107, 87,255,153,106, 85,255,151,105, 85,255,150,104, 84,255,147,102, 82,255,145,100, 81,255, +143, 99, 80,255,141, 97, 78,255,138, 96, 77,255,137, 94, 76,255,134, 92, 74,255,131, 90, 73,255,129, 89, 71,255,126, 87, 69,255, +122, 84, 68,255,119, 82, 65,255,117, 80, 64,255,114, 78, 62,255,109, 75, 60,255,106, 73, 58,255,102, 70, 56,255, 98, 67, 53,255, + 94, 64, 50,255, 91, 61, 48,255, 87, 59, 46,255, 85, 57, 45,255, 81, 54, 43,255, 75, 50, 38,255, 67, 54, 49,255, 61, 62, 62,255, + 60, 60, 60,255,141,120,119,255,216,174,173,255,213,172,171,255,213,172,170,255,212,171,169,255,213,170,168,255,212,170,167,255, +212,169,166,255,211,168,165,255,210,167,164,255,210,166,162,255,209,166,161,255,209,165,160,255,209,164,158,255,207,163,157,255, +207,162,156,255,207,161,154,255,206,160,153,255,205,159,151,255,205,158,149,255,204,157,148,255,203,156,146,255,202,154,144,255, +201,153,142,255,201,152,141,255,200,151,138,255,199,150,136,255,199,148,135,255,198,147,132,255,197,146,130,255,196,145,128,255, +195,143,126,255,195,142,124,255,194,140,122,255,193,139,119,255,192,137,116,255,192,136,113,255,190,134,111,255,190,133,108,255, +189,132,107,255,187,131,106,255,187,130,106,255,186,130,105,255,184,128,104,255,183,128,103,255,182,127,103,255,181,126,102,255, +180,125,102,255,179,124,100,255,177,123,100,255,176,123, 99,255,174,121, 99,255,174,121, 98,255,172,120, 97,255,170,118, 95,255, +169,117, 95,255,168,117, 95,255,167,115, 93,255,166,115, 93,255,164,114, 92,255,162,113, 91,255,161,112, 91,255,160,111, 90,255, +158,109, 88,255,156,108, 87,255,155,107, 87,255,153,106, 85,255,151,105, 85,255,150,104, 84,255,148,102, 82,255,145,101, 81,255, +144, 99, 80,255,141, 97, 78,255,139, 96, 77,255,137, 95, 76,255,134, 92, 74,255,131, 91, 73,255,129, 89, 71,255,126, 86, 69,255, +122, 84, 67,255,120, 81, 65,255,116, 80, 63,255,113, 77, 61,255,109, 74, 59,255,106, 72, 58,255,101, 69, 55,255, 96, 65, 52,255, + 93, 63, 50,255, 90, 61, 48,255, 86, 58, 46,255, 83, 56, 44,255, 79, 52, 41,255, 73, 48, 38,255, 66, 54, 48,255, 61, 62, 62,255, + 60, 60, 60,255,141,120,120,255,216,175,174,255,214,173,172,255,214,173,171,255,213,172,170,255,212,171,169,255,213,171,168,255, +212,170,167,255,212,169,166,255,211,168,165,255,211,168,164,255,210,166,162,255,209,166,161,255,208,165,161,255,208,164,158,255, +208,163,157,255,206,162,156,255,206,161,154,255,206,160,152,255,205,158,151,255,204,157,149,255,204,156,147,255,203,155,145,255, +202,154,143,255,202,153,142,255,200,151,139,255,200,150,138,255,199,149,136,255,198,147,133,255,198,146,132,255,197,145,129,255, +196,143,127,255,195,142,125,255,195,141,123,255,194,139,120,255,193,138,118,255,192,137,115,255,191,135,112,255,191,133,109,255, +190,132,107,255,188,131,106,255,187,131,106,255,187,130,105,255,185,129,105,255,184,128,104,255,183,127,103,255,181,127,103,255, +180,126,102,255,179,124,100,255,178,124,100,255,177,123,100,255,175,121, 98,255,174,121, 98,255,173,120, 97,255,171,119, 96,255, +170,118, 96,255,169,117, 95,255,167,116, 93,255,166,115, 93,255,165,115, 93,255,163,113, 91,255,162,112, 90,255,160,112, 90,255, +158,110, 89,255,157,109, 88,255,155,108, 87,255,153,106, 85,255,151,105, 85,255,150,104, 84,255,148,102, 82,255,145,101, 81,255, +144, 99, 80,255,141, 97, 78,255,139, 96, 77,255,137, 95, 76,255,134, 92, 74,255,131, 90, 73,255,128, 88, 71,255,125, 86, 69,255, +122, 84, 67,255,118, 81, 65,255,115, 79, 63,255,112, 77, 61,255,108, 73, 59,255,104, 71, 57,255,100, 68, 54,255, 96, 65, 51,255, + 92, 63, 49,255, 88, 60, 48,255, 85, 57, 45,255, 81, 54, 42,255, 76, 50, 40,255, 72, 47, 37,255, 65, 53, 48,255, 61, 62, 62,255, + 60, 60, 60,255,142,120,121,255,216,176,175,255,214,174,173,255,214,173,172,255,214,173,171,255,213,172,170,255,212,171,169,255, +212,170,168,255,211,169,167,255,212,169,166,255,210,168,165,255,210,167,164,255,210,166,162,255,209,166,161,255,208,164,160,255, +208,163,158,255,207,163,157,255,206,161,155,255,206,160,153,255,206,159,152,255,205,158,150,255,204,157,148,255,204,156,146,255, +202,155,145,255,202,154,143,255,201,152,141,255,200,152,139,255,200,150,137,255,199,148,135,255,198,147,132,255,198,146,130,255, +196,144,129,255,196,144,126,255,195,142,124,255,194,140,122,255,194,139,119,255,193,138,116,255,191,136,113,255,190,134,111,255, +190,133,108,255,188,132,107,255,188,131,106,255,187,130,106,255,185,129,105,255,184,129,104,255,183,128,104,255,182,127,103,255, +181,126,102,255,180,124,101,255,178,124,100,255,177,123,100,255,175,122, 98,255,174,121, 98,255,173,121, 98,255,171,119, 96,255, +171,119, 96,255,169,118, 95,255,167,116, 94,255,166,116, 94,255,165,115, 93,255,163,113, 91,255,162,113, 90,255,161,112, 90,255, +159,110, 89,255,157,109, 88,255,155,108, 87,255,153,106, 85,255,152,105, 85,255,150,104, 84,255,147,102, 82,255,145,101, 81,255, +143, 99, 80,255,141, 97, 78,255,138, 96, 77,255,136, 94, 75,255,134, 92, 74,255,131, 90, 72,255,127, 87, 71,255,124, 86, 68,255, +121, 84, 67,255,118, 81, 64,255,114, 79, 63,255,111, 76, 61,255,107, 73, 58,255,103, 70, 56,255, 99, 67, 54,255, 94, 64, 51,255, + 91, 61, 48,255, 87, 59, 46,255, 83, 56, 44,255, 79, 53, 41,255, 74, 50, 38,255, 70, 45, 36,255, 64, 52, 47,255, 61, 62, 62,255, + 60, 60, 60,255,142,121,121,255,217,176,176,255,214,174,174,255,215,174,173,255,214,173,172,255,213,172,171,255,213,172,170,255, +212,171,169,255,212,170,168,255,211,169,167,255,211,168,166,255,210,168,165,255,210,167,164,255,209,166,162,255,209,165,161,255, +208,164,160,255,207,163,157,255,207,162,156,255,207,161,155,255,205,160,153,255,205,159,152,255,205,158,149,255,203,156,147,255, +203,155,146,255,203,154,144,255,201,153,142,255,200,152,140,255,200,151,138,255,199,149,136,255,198,148,134,255,197,147,132,255, +197,145,130,255,196,144,127,255,196,143,126,255,194,141,123,255,193,140,120,255,193,138,118,255,191,136,115,255,191,135,112,255, +190,134,109,255,189,132,107,255,188,131,107,255,186,131,106,255,185,129,105,255,185,129,105,255,184,127,104,255,182,127,103,255, +181,126,102,255,179,125,102,255,179,124,101,255,178,124,100,255,176,122, 99,255,175,122, 98,255,174,121, 98,255,172,120, 97,255, +171,119, 96,255,170,118, 95,255,168,116, 94,255,167,116, 94,255,165,115, 93,255,163,113, 91,255,162,112, 91,255,161,112, 90,255, +159,110, 89,255,157,109, 88,255,156,108, 87,255,153,106, 85,255,152,105, 84,255,150,104, 84,255,147,102, 82,255,145,100, 80,255, +143, 99, 80,255,141, 97, 78,255,138, 95, 76,255,136, 94, 75,255,133, 91, 73,255,129, 89, 72,255,127, 88, 70,255,124, 85, 68,255, +121, 83, 66,255,118, 81, 65,255,114, 78, 62,255,110, 75, 60,255,106, 72, 57,255,102, 69, 55,255, 97, 66, 52,255, 93, 62, 50,255, + 89, 60, 47,255, 85, 57, 45,255, 81, 54, 42,255, 76, 52, 40,255, 72, 48, 38,255, 67, 44, 34,255, 63, 51, 46,255, 61, 62, 62,255, + 60, 60, 60,255,142,121,121,255,217,177,178,255,215,175,175,255,214,175,174,255,214,174,174,255,214,173,172,255,213,173,171,255, +214,172,171,255,212,171,169,255,212,170,168,255,212,170,167,255,211,168,165,255,210,167,164,255,211,168,164,255,209,166,162,255, +208,165,160,255,209,164,159,255,207,163,157,255,207,162,156,255,207,161,154,255,205,159,153,255,205,158,150,255,205,158,149,255, +203,156,147,255,202,155,145,255,202,153,143,255,201,152,141,255,201,152,139,255,199,150,137,255,199,148,135,255,198,147,133,255, +197,146,131,255,196,145,129,255,196,143,126,255,195,141,124,255,194,140,122,255,194,139,119,255,192,137,116,255,192,136,113,255, +191,135,111,255,189,133,108,255,189,132,107,255,188,131,106,255,186,130,106,255,185,129,105,255,183,129,103,255,183,127,103,255, +181,127,103,255,180,125,101,255,179,125,101,255,178,124,100,255,177,124, 99,255,175,122, 99,255,174,121, 98,255,173,120, 97,255, +171,119, 96,255,170,118, 96,255,168,116, 94,255,167,116, 94,255,166,115, 93,255,164,113, 92,255,162,113, 91,255,161,112, 91,255, +159,110, 89,255,157,109, 88,255,156,108, 87,255,153,106, 85,255,151,105, 84,255,150,104, 84,255,147,101, 81,255,145,100, 80,255, +143, 99, 79,255,140, 97, 77,255,138, 95, 76,255,134, 93, 74,255,131, 91, 73,255,128, 89, 71,255,125, 86, 69,255,122, 84, 67,255, +119, 82, 66,255,116, 79, 63,255,112, 77, 62,255,108, 74, 59,255,104, 70, 56,255, 99, 68, 54,255, 94, 64, 50,255, 90, 61, 48,255, + 88, 59, 47,255, 84, 56, 44,255, 80, 53, 42,255, 75, 50, 39,255, 71, 47, 37,255, 64, 43, 32,255, 60, 50, 45,255, 62, 62, 62,255, + 60, 60, 60,255,142,122,122,255,217,178,178,255,215,177,176,255,215,175,175,255,214,175,174,255,215,173,173,255,214,173,172,255, +214,172,171,255,212,171,170,255,213,171,169,255,211,170,168,255,211,169,166,255,211,168,165,255,211,167,164,255,210,166,163,255, +209,165,161,255,208,165,160,255,208,163,158,255,207,162,156,255,206,162,155,255,206,160,154,255,205,159,152,255,204,157,149,255, +204,157,148,255,203,156,146,255,202,154,144,255,202,153,142,255,201,152,140,255,200,150,138,255,199,149,136,255,199,148,134,255, +197,146,132,255,197,145,129,255,196,144,127,255,195,142,125,255,195,141,122,255,194,139,120,255,192,138,118,255,192,136,115,255, +191,135,112,255,189,133,110,255,189,132,107,255,187,130,106,255,187,130,105,255,186,129,105,255,184,128,104,255,183,128,103,255, +182,127,103,255,180,125,101,255,180,125,101,255,178,124,101,255,178,123,100,255,176,122, 99,255,175,121, 98,255,173,120, 97,255, +172,120, 97,255,170,118, 96,255,168,117, 94,255,167,116, 94,255,166,115, 93,255,164,114, 92,255,163,113, 91,255,161,112, 91,255, +159,110, 89,255,157,109, 88,255,156,108, 87,255,153,106, 85,255,152,105, 84,255,150,104, 84,255,147,102, 82,255,144,100, 81,255, +142, 99, 80,255,140, 96, 78,255,136, 94, 76,255,133, 92, 74,255,130, 90, 72,255,127, 88, 70,255,124, 85, 68,255,121, 83, 67,255, +118, 81, 64,255,115, 78, 63,255,111, 75, 60,255,106, 72, 58,255,101, 69, 55,255, 96, 65, 51,255, 92, 62, 49,255, 89, 60, 47,255, + 86, 58, 46,255, 83, 55, 44,255, 79, 52, 41,255, 74, 49, 38,255, 68, 44, 35,255, 59, 40, 30,255, 46, 41, 39,255, 62, 62, 62,255, + 60, 60, 60,255,142,122,123,255,218,178,180,255,216,176,177,255,215,176,176,255,215,175,175,255,214,174,174,255,214,173,173,255, +213,173,172,255,213,172,171,255,212,171,170,255,212,170,169,255,211,169,167,255,211,169,167,255,210,168,164,255,210,167,163,255, +209,166,162,255,208,164,160,255,208,163,159,255,208,163,158,255,206,161,156,255,207,161,154,255,206,160,153,255,204,158,150,255, +204,157,149,255,204,156,147,255,202,154,145,255,201,153,143,255,201,153,142,255,200,151,139,255,200,150,137,255,199,149,136,255, +197,147,133,255,198,146,130,255,197,145,129,255,195,142,125,255,195,141,123,255,194,140,121,255,193,138,119,255,192,137,116,255, +191,136,112,255,190,134,110,255,189,132,108,255,188,131,107,255,187,130,106,255,186,130,105,255,185,129,105,255,184,128,104,255, +182,127,103,255,181,125,102,255,180,125,101,255,179,124,101,255,177,123,100,255,176,123, 99,255,175,122, 99,255,173,120, 97,255, +172,120, 97,255,171,119, 96,255,169,117, 94,255,168,117, 94,255,166,116, 94,255,164,114, 92,255,163,113, 91,255,161,112, 90,255, +159,110, 89,255,157,109, 88,255,156,108, 87,255,153,106, 85,255,151,105, 85,255,150,104, 84,255,147,101, 82,255,144,100, 81,255, +142, 98, 79,255,138, 95, 76,255,135, 93, 75,255,132, 91, 73,255,129, 88, 71,255,125, 86, 69,255,123, 84, 68,255,120, 82, 66,255, +117, 79, 64,255,113, 77, 62,255,108, 73, 58,255,103, 70, 55,255, 99, 67, 53,255, 94, 63, 50,255, 90, 61, 48,255, 88, 60, 47,255, + 85, 58, 45,255, 82, 54, 42,255, 76, 50, 40,255, 70, 47, 36,255, 64, 42, 32,255, 33, 23, 18,255, 28, 28, 28,255, 62, 62, 62,255, + 60, 60, 60,255,142,122,123,255,218,179,180,255,216,177,178,255,215,177,177,255,216,176,177,255,215,175,175,255,214,174,174,255, +215,174,174,255,213,173,171,255,213,172,170,255,212,172,170,255,212,170,168,255,212,170,167,255,210,169,166,255,210,167,164,255, +210,167,163,255,209,166,162,255,209,164,160,255,208,164,158,255,208,163,157,255,207,161,155,255,206,161,153,255,206,159,152,255, +204,158,149,255,204,157,148,255,203,155,146,255,202,154,145,255,202,153,142,255,200,151,140,255,199,150,138,255,200,149,136,255, +198,147,134,255,198,146,132,255,197,145,129,255,195,143,126,255,195,142,125,255,194,141,122,255,193,139,120,255,192,138,117,255, +192,136,114,255,191,134,111,255,190,133,108,255,189,132,107,255,188,131,106,255,186,130,105,255,186,130,104,255,184,128,104,255, +183,127,103,255,182,127,102,255,180,126,102,255,180,125,102,255,179,124,100,255,177,123, 99,255,176,123, 99,255,174,121, 99,255, +172,120, 97,255,171,119, 96,255,169,118, 95,255,168,117, 95,255,167,116, 94,255,164,114, 92,255,163,113, 91,255,161,112, 90,255, +159,110, 88,255,157,109, 88,255,155,108, 87,255,153,106, 86,255,151,105, 85,255,149,103, 83,255,146,101, 82,255,143, 99, 80,255, +139, 97, 78,255,137, 95, 76,255,133, 92, 74,255,130, 89, 72,255,127, 87, 70,255,124, 85, 68,255,121, 83, 66,255,118, 81, 65,255, +114, 78, 63,255,110, 74, 59,255,105, 71, 57,255,100, 68, 54,255, 95, 64, 50,255, 91, 62, 48,255, 90, 61, 48,255, 87, 58, 46,255, + 84, 57, 44,255, 79, 53, 41,255, 72, 49, 37,255, 66, 43, 33,255, 45, 31, 25,255, 0, 0, 0,255, 29, 29, 29,255, 61, 61, 61,255, + 60, 60, 60,255,142,122,123,255,218,180,181,255,217,178,179,255,216,177,178,255,216,176,177,255,215,175,176,255,215,175,175,255, +215,174,173,255,214,173,173,255,213,172,171,255,212,171,171,255,212,171,169,255,212,170,167,255,211,169,167,255,210,168,165,255, +210,167,163,255,210,166,162,255,209,165,160,255,208,164,159,255,207,163,157,255,207,162,156,255,206,161,154,255,205,159,152,255, +205,158,151,255,204,157,149,255,204,156,147,255,203,155,145,255,202,153,143,255,200,152,141,255,200,151,139,255,200,150,137,255, +199,148,135,255,198,147,133,255,197,145,130,255,196,144,128,255,195,142,125,255,194,141,123,255,193,140,120,255,193,138,118,255, +192,137,115,255,191,135,112,255,190,133,109,255,190,132,108,255,188,131,106,255,187,130,106,255,185,130,105,255,184,128,104,255, +183,128,104,255,183,127,103,255,181,126,102,255,180,126,102,255,178,125,100,255,177,123, 99,255,176,123,100,255,174,121, 98,255, +173,120, 97,255,171,119, 96,255,170,118, 96,255,168,117, 95,255,167,116, 94,255,164,114, 92,255,163,113, 91,255,161,112, 90,255, +159,110, 88,255,157,109, 88,255,155,107, 87,255,153,106, 86,255,150,104, 84,255,148,103, 83,255,145,100, 81,255,142, 98, 79,255, +138, 96, 77,255,135, 93, 74,255,131, 90, 72,255,128, 88, 71,255,125, 85, 69,255,121, 83, 66,255,118, 81, 65,255,116, 80, 63,255, +111, 76, 60,255,106, 72, 57,255,102, 69, 55,255, 97, 65, 52,255, 92, 63, 49,255, 91, 61, 48,255, 90, 60, 48,255, 87, 58, 46,255, + 82, 54, 42,255, 75, 50, 39,255, 68, 46, 35,255, 53, 36, 29,255, 6, 5, 4,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, + 60, 60, 60,255,143,123,124,255,219,180,182,255,216,178,179,255,217,177,179,255,216,177,177,255,216,175,176,255,216,176,176,255, +215,175,174,255,214,173,173,255,213,173,172,255,213,172,170,255,212,171,169,255,212,170,168,255,212,170,166,255,211,168,165,255, +210,168,164,255,209,166,162,255,209,165,161,255,209,165,160,255,207,163,158,255,207,162,157,255,207,162,155,255,205,160,153,255, +205,159,151,255,204,158,150,255,203,156,148,255,203,155,145,255,202,154,144,255,201,152,142,255,200,152,140,255,200,151,138,255, +199,149,136,255,198,148,133,255,197,146,131,255,196,144,129,255,195,143,126,255,195,142,124,255,194,140,122,255,193,139,118,255, +192,138,116,255,191,135,113,255,190,134,111,255,190,133,108,255,188,131,106,255,187,130,106,255,186,129,106,255,185,129,104,255, +183,128,103,255,182,128,104,255,181,126,102,255,180,126,102,255,178,124,100,255,177,123,100,255,176,123,100,255,174,121, 98,255, +173,120, 97,255,171,119, 96,255,170,118, 96,255,169,117, 95,255,167,116, 94,255,164,114, 92,255,163,113, 91,255,161,112, 90,255, +158,110, 89,255,157,109, 88,255,155,107, 87,255,152,105, 85,255,150,104, 84,255,147,102, 82,255,144, 99, 80,255,140, 97, 77,255, +136, 94, 76,255,132, 91, 73,255,129, 89, 71,255,125, 86, 69,255,122, 83, 67,255,119, 81, 65,255,116, 80, 64,255,112, 77, 61,255, +107, 73, 58,255,103, 70, 56,255, 99, 67, 53,255, 94, 63, 50,255, 91, 63, 48,255, 90, 61, 48,255, 89, 59, 47,255, 84, 56, 44,255, + 78, 52, 41,255, 72, 48, 36,255, 62, 41, 32,255, 9, 6, 6,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,143,123,124,255,219,181,183,255,217,178,180,255,216,178,179,255,217,177,179,255,215,176,177,255,216,175,176,255, +215,175,175,255,214,174,173,255,214,173,173,255,214,173,172,255,213,171,170,255,212,171,169,255,211,170,168,255,211,169,166,255, +211,168,165,255,210,167,164,255,209,166,162,255,209,165,161,255,208,164,159,255,207,163,157,255,207,162,156,255,206,161,154,255, +205,159,152,255,205,158,150,255,204,157,149,255,203,156,147,255,203,155,145,255,202,153,142,255,201,152,141,255,200,151,139,255, +199,149,136,255,198,148,134,255,198,147,132,255,197,145,129,255,196,144,128,255,196,143,125,255,194,140,122,255,193,139,119,255, +192,138,117,255,191,135,114,255,191,134,111,255,190,133,109,255,188,131,107,255,187,131,106,255,187,131,106,255,185,129,104,255, +184,129,104,255,182,127,103,255,181,126,102,255,181,126,102,255,178,124,100,255,177,123,100,255,176,123,100,255,174,121, 98,255, +173,120, 97,255,172,120, 97,255,170,118, 95,255,169,117, 95,255,167,116, 94,255,164,114, 92,255,163,113, 91,255,161,112, 90,255, +158,110, 89,255,156,108, 88,255,154,107, 87,255,151,104, 84,255,148,103, 83,255,145,101, 82,255,141, 98, 79,255,137, 94, 76,255, +133, 91, 73,255,129, 89, 71,255,125, 86, 69,255,122, 84, 67,255,120, 82, 65,255,117, 80, 64,255,113, 77, 61,255,108, 73, 59,255, +104, 71, 57,255,100, 67, 53,255, 94, 63, 50,255, 92, 62, 49,255, 91, 61, 49,255, 90, 61, 48,255, 85, 58, 45,255, 80, 54, 42,255, + 75, 50, 38,255, 66, 44, 34,255, 18, 14, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,143,123,124,255,219,181,183,255,217,179,181,255,217,178,179,255,217,178,178,255,216,176,178,255,216,176,176,255, +214,176,176,255,215,174,174,255,214,174,173,255,213,172,172,255,213,172,171,255,212,171,169,255,211,171,168,255,211,169,167,255, +211,168,165,255,211,168,164,255,209,166,163,255,209,166,161,255,209,164,160,255,208,163,158,255,207,162,156,255,207,162,154,255, +206,160,153,255,205,159,151,255,204,157,149,255,203,156,147,255,203,155,145,255,202,153,143,255,201,153,142,255,200,151,139,255, +199,150,137,255,199,148,134,255,198,147,133,255,197,145,130,255,196,144,128,255,196,143,126,255,194,141,123,255,193,139,120,255, +193,138,117,255,191,136,114,255,191,135,112,255,190,133,109,255,189,132,107,255,187,131,106,255,187,131,106,255,185,129,104,255, +184,129,104,255,182,127,103,255,181,126,102,255,181,126,102,255,178,124,100,255,178,123,101,255,177,123,100,255,174,121, 98,255, +173,120, 97,255,172,120, 97,255,170,118, 95,255,168,117, 95,255,166,116, 94,255,164,114, 92,255,162,112, 90,255,160,111, 90,255, +158,110, 89,255,155,108, 87,255,152,106, 86,255,150,104, 84,255,147,102, 82,255,143, 99, 80,255,139, 96, 77,255,134, 92, 74,255, +130, 90, 72,255,126, 87, 69,255,122, 84, 67,255,119, 81, 65,255,117, 80, 64,255,113, 77, 62,255,109, 74, 59,255,105, 72, 57,255, +101, 68, 54,255, 95, 64, 51,255, 93, 62, 49,255, 92, 62, 49,255, 91, 61, 48,255, 87, 59, 46,255, 81, 55, 43,255, 77, 52, 40,255, + 68, 46, 36,255, 22, 16, 14,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,143,123,125,255,219,181,184,255,218,179,181,255,217,178,180,255,216,178,179,255,216,176,178,255,215,177,177,255, +215,176,177,255,214,174,175,255,215,175,174,255,214,173,173,255,213,172,171,255,212,171,170,255,212,170,169,255,211,169,167,255, +211,169,166,255,210,167,164,255,209,167,163,255,209,166,162,255,209,165,160,255,208,164,159,255,207,163,157,255,207,161,155,255, +206,160,154,255,205,159,152,255,204,158,149,255,203,157,148,255,203,156,146,255,202,154,144,255,201,153,142,255,201,152,140,255, +199,150,138,255,199,149,135,255,198,148,133,255,197,146,131,255,196,144,128,255,196,143,127,255,194,141,124,255,194,140,120,255, +193,139,118,255,192,137,116,255,191,135,113,255,191,134,110,255,189,132,107,255,188,131,106,255,187,131,106,255,185,129,104,255, +185,129,105,255,183,127,103,255,182,127,103,255,181,126,102,255,179,124,100,255,177,123,101,255,177,123,100,255,174,121, 98,255, +173,120, 97,255,172,120, 97,255,170,118, 95,255,168,117, 95,255,166,115, 93,255,163,113, 91,255,162,112, 90,255,160,111, 90,255, +157,109, 88,255,154,106, 87,255,151,105, 85,255,148,102, 83,255,144,100, 81,255,140, 97, 78,255,135, 93, 74,255,130, 90, 71,255, +126, 87, 70,255,123, 84, 67,255,119, 81, 65,255,117, 80, 64,255,113, 77, 62,255,109, 74, 59,255,106, 72, 58,255,101, 69, 55,255, + 96, 65, 51,255, 92, 63, 50,255, 93, 63, 50,255, 91, 62, 49,255, 88, 59, 47,255, 84, 56, 44,255, 80, 53, 41,255, 72, 48, 38,255, + 29, 20, 17,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,143,123,125,255,220,182,184,255,217,179,181,255,218,179,181,255,217,178,180,255,216,177,178,255,216,177,178,255, +216,176,177,255,214,175,175,255,215,175,175,255,214,174,174,255,213,172,172,255,212,172,171,255,213,172,169,255,211,170,168,255, +211,169,166,255,211,169,166,255,210,167,164,255,209,166,162,255,209,165,160,255,208,164,159,255,207,163,157,255,207,162,155,255, +206,161,154,255,206,160,152,255,204,158,151,255,204,157,149,255,203,156,147,255,202,154,144,255,201,153,143,255,200,152,141,255, +200,150,138,255,199,149,136,255,198,148,134,255,197,146,131,255,196,145,129,255,196,144,127,255,195,142,124,255,194,140,121,255, +194,139,119,255,192,137,116,255,192,135,113,255,191,134,111,255,189,132,108,255,188,132,106,255,187,131,106,255,185,129,104,255, +185,129,105,255,183,128,104,255,182,127,103,255,181,126,102,255,179,125,101,255,178,124,101,255,177,123,100,255,175,121, 98,255, +173,120, 97,255,172,119, 96,255,169,117, 95,255,167,116, 94,255,165,115, 93,255,163,113, 91,255,161,112, 90,255,159,111, 89,255, +156,108, 87,255,153,106, 86,255,149,103, 84,255,145,101, 81,255,141, 97, 78,255,136, 94, 75,255,131, 89, 72,255,126, 87, 70,255, +123, 84, 67,255,119, 82, 66,255,117, 80, 64,255,113, 77, 62,255,109, 74, 59,255,106, 72, 57,255,102, 69, 54,255, 96, 65, 51,255, + 93, 64, 50,255, 94, 64, 51,255, 93, 63, 50,255, 89, 60, 48,255, 85, 57, 45,255, 81, 54, 42,255, 75, 50, 39,255, 43, 32, 27,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,143,123,125,255,220,182,185,255,217,180,182,255,218,179,181,255,217,179,180,255,217,177,179,255,216,177,178,255, +216,177,177,255,215,175,176,255,215,175,175,255,213,174,174,255,213,173,172,255,213,173,171,255,213,172,170,255,211,170,169,255, +211,169,167,255,210,168,165,255,210,167,164,255,209,166,163,255,208,165,161,255,208,164,159,255,207,163,158,255,206,163,156,255, +206,161,155,255,206,160,153,255,204,158,151,255,204,157,149,255,203,156,147,255,202,154,145,255,201,153,143,255,201,153,141,255, +200,151,139,255,199,149,136,255,199,148,134,255,197,146,132,255,196,145,129,255,195,144,127,255,195,142,125,255,195,141,122,255, +194,139,119,255,192,138,117,255,192,136,113,255,191,134,111,255,189,133,108,255,188,131,106,255,186,131,106,255,186,130,105,255, +185,129,104,255,183,129,105,255,182,127,103,255,181,126,102,255,179,126,102,255,178,124,100,255,177,123,100,255,175,121, 98,255, +173,120, 97,255,171,119, 96,255,169,117, 95,255,166,115, 93,255,164,114, 92,255,162,113, 91,255,160,111, 89,255,157,109, 88,255, +154,107, 87,255,150,104, 84,255,147,101, 82,255,142, 98, 79,255,136, 94, 75,255,131, 90, 73,255,126, 87, 70,255,123, 84, 67,255, +120, 82, 65,255,116, 80, 64,255,113, 77, 62,255,109, 75, 59,255,105, 72, 57,255,101, 68, 54,255, 97, 66, 52,255, 94, 64, 50,255, + 94, 64, 51,255, 93, 64, 50,255, 90, 61, 48,255, 87, 59, 46,255, 83, 56, 44,255, 76, 52, 41,255, 40, 29, 24,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,143,124,125,255,220,182,185,255,217,180,182,255,218,179,181,255,217,178,181,255,217,178,179,255,216,177,179,255, +215,176,178,255,216,176,176,255,215,175,175,255,214,173,174,255,213,173,172,255,214,173,172,255,213,172,171,255,212,170,169,255, +212,170,168,255,210,168,166,255,210,167,164,255,209,167,163,255,209,165,161,255,208,164,160,255,207,163,158,255,207,162,156,255, +206,161,155,255,206,161,153,255,204,159,151,255,204,157,150,255,204,157,148,255,202,155,145,255,201,154,143,255,202,153,142,255, +200,151,139,255,199,150,137,255,199,149,135,255,197,146,132,255,196,145,130,255,196,144,128,255,196,142,125,255,195,141,122,255, +194,140,120,255,192,138,117,255,192,136,114,255,191,135,111,255,189,133,108,255,189,132,107,255,187,130,105,255,186,130,105,255, +186,130,104,255,184,128,104,255,183,127,103,255,182,127,103,255,180,125,101,255,178,124,100,255,177,123,100,255,174,121, 98,255, +173,120, 97,255,170,118, 96,255,167,116, 94,255,166,115, 93,255,163,113, 91,255,160,111, 89,255,158,110, 89,255,155,107, 87,255, +152,105, 85,255,147,102, 82,255,142, 98, 79,255,137, 94, 76,255,132, 90, 73,255,126, 87, 70,255,122, 84, 67,255,119, 81, 65,255, +116, 80, 64,255,112, 76, 61,255,108, 73, 58,255,105, 71, 57,255,101, 68, 54,255, 97, 66, 52,255, 95, 65, 51,255, 95, 65, 50,255, + 94, 64, 51,255, 91, 62, 49,255, 88, 60, 47,255, 85, 57, 45,255, 78, 53, 41,255, 47, 34, 28,255, 1, 1, 1,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,143,124,125,255,220,182,185,255,217,180,182,255,218,180,182,255,217,179,181,255,216,178,180,255,217,178,179,255, +216,177,178,255,216,176,177,255,215,175,176,255,215,175,175,255,213,173,173,255,214,173,172,255,213,172,171,255,213,170,169,255, +212,170,168,255,210,169,166,255,210,167,165,255,209,167,164,255,209,166,162,255,208,164,160,255,208,164,159,255,207,162,157,255, +206,161,155,255,205,161,154,255,206,159,152,255,204,158,150,255,204,157,148,255,202,155,146,255,202,154,144,255,202,153,142,255, +200,151,140,255,200,150,138,255,199,149,136,255,197,147,133,255,197,146,130,255,196,145,128,255,195,143,126,255,195,141,124,255, +194,140,121,255,193,138,117,255,192,136,114,255,191,135,112,255,190,133,109,255,189,132,107,255,188,132,107,255,186,130,105,255, +186,130,105,255,184,128,104,255,183,128,104,255,182,127,103,255,180,125,101,255,178,124,100,255,177,123,100,255,174,121, 98,255, +172,120, 96,255,169,118, 95,255,166,115, 93,255,164,114, 92,255,161,113, 91,255,159,110, 88,255,156,108, 88,255,153,106, 86,255, +148,103, 83,255,143, 99, 80,255,137, 94, 76,255,131, 90, 72,255,126, 87, 70,255,122, 83, 67,255,118, 82, 64,255,115, 79, 63,255, +112, 76, 61,255,108, 73, 58,255,104, 71, 56,255,100, 68, 54,255, 97, 66, 53,255, 95, 65, 52,255, 96, 65, 52,255, 94, 64, 51,255, + 92, 63, 49,255, 89, 60, 47,255, 86, 58, 46,255, 79, 54, 42,255, 51, 37, 32,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,143,124,125,255,220,182,185,255,217,180,182,255,217,180,182,255,218,180,182,255,216,178,180,255,217,177,179,255, +216,177,178,255,215,176,177,255,215,176,176,255,215,175,175,255,213,173,173,255,214,173,172,255,213,172,171,255,213,170,169,255, +212,170,169,255,210,170,166,255,210,168,165,255,209,167,164,255,209,166,162,255,208,165,160,255,208,164,159,255,207,162,157,255, +206,161,155,255,206,161,154,255,205,159,152,255,204,158,150,255,204,157,149,255,202,155,147,255,202,155,145,255,202,153,143,255, +201,152,140,255,200,151,138,255,199,149,136,255,198,148,134,255,197,147,132,255,197,145,129,255,196,144,127,255,195,142,124,255, +194,140,121,255,193,139,119,255,192,137,116,255,192,136,113,255,190,134,111,255,190,133,108,255,188,131,106,255,187,131,106,255, +186,130,105,255,185,129,105,255,184,128,104,255,182,127,103,255,180,125,101,255,178,124,101,255,176,122, 99,255,173,120, 97,255, +171,118, 96,255,167,116, 94,255,165,115, 93,255,162,112, 90,255,159,111, 89,255,157,109, 88,255,153,106, 86,255,149,104, 84,255, +144, 99, 80,255,137, 94, 76,255,131, 90, 73,255,125, 86, 69,255,121, 83, 67,255,118, 82, 64,255,115, 79, 63,255,111, 75, 60,255, +107, 73, 58,255,103, 70, 56,255,100, 68, 54,255, 97, 66, 52,255, 96, 65, 52,255, 96, 65, 52,255, 95, 64, 51,255, 93, 63, 50,255, + 91, 62, 49,255, 87, 59, 46,255, 80, 55, 44,255, 35, 26, 22,255, 0, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,143,124,125,255,220,182,185,255,217,181,182,255,218,180,183,255,218,180,182,255,216,178,180,255,217,177,179,255, +216,178,179,255,216,176,177,255,215,176,176,255,215,175,175,255,213,173,173,255,214,173,172,255,213,172,171,255,213,170,169,255, +212,171,169,255,211,169,166,255,210,168,165,255,210,168,164,255,209,166,162,255,208,165,161,255,208,164,160,255,207,162,158,255, +206,161,156,255,206,161,154,255,206,159,152,255,205,159,151,255,204,158,150,255,203,156,147,255,202,155,146,255,202,154,144,255, +201,152,141,255,200,151,139,255,200,150,137,255,198,148,135,255,197,147,132,255,197,146,131,255,196,144,128,255,196,143,125,255, +195,141,123,255,193,139,120,255,193,138,117,255,192,136,115,255,191,135,112,255,190,134,109,255,189,132,107,255,188,131,106,255, +187,131,106,255,185,129,104,255,184,128,104,255,182,127,103,255,180,125,101,255,178,124,100,255,175,122, 99,255,172,119, 96,255, +169,117, 95,255,165,115, 93,255,162,113, 91,255,160,111, 89,255,157,109, 88,255,153,106, 85,255,150,104, 84,255,145,100, 80,255, +137, 95, 76,255,131, 90, 73,255,125, 86, 69,255,121, 83, 66,255,118, 81, 64,255,114, 78, 62,255,110, 75, 60,255,107, 72, 57,255, +103, 70, 56,255,100, 68, 53,255, 97, 66, 52,255, 96, 65, 51,255, 96, 65, 52,255, 95, 64, 51,255, 93, 63, 50,255, 92, 62, 49,255, + 88, 59, 46,255, 84, 58, 46,255, 41, 32, 28,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,143,124,125,255,220,182,185,255,217,180,183,255,218,180,182,255,217,179,181,255,216,178,180,255,216,177,179,255, +215,178,179,255,216,176,177,255,215,176,176,255,214,175,176,255,214,174,174,255,214,173,172,255,212,171,170,255,213,171,170,255, +212,170,169,255,210,169,168,255,211,168,165,255,210,167,164,255,210,166,162,255,209,165,161,255,208,164,160,255,208,163,158,255, +207,162,156,255,206,161,154,255,205,160,153,255,205,159,151,255,205,158,150,255,203,156,148,255,202,155,146,255,203,154,144,255, +201,153,143,255,201,152,140,255,200,151,138,255,199,149,136,255,198,148,134,255,197,146,131,255,196,145,129,255,196,143,127,255, +196,142,125,255,195,141,122,255,194,139,120,255,193,138,117,255,192,136,114,255,191,134,112,255,190,133,109,255,188,132,107,255, +187,131,106,255,185,129,104,255,184,128,104,255,182,127,103,255,180,125,101,255,177,123,100,255,174,121, 98,255,170,118, 95,255, +167,116, 94,255,163,114, 92,255,161,112, 90,255,158,109, 88,255,154,107, 85,255,150,104, 84,255,145,100, 80,255,138, 95, 76,255, +131, 90, 72,255,125, 86, 69,255,121, 83, 66,255,117, 80, 64,255,113, 78, 62,255,110, 75, 59,255,106, 72, 57,255,102, 70, 55,255, +100, 68, 53,255, 97, 66, 52,255, 96, 65, 51,255, 96, 65, 52,255, 95, 64, 51,255, 94, 63, 50,255, 92, 62, 49,255, 88, 60, 47,255, + 81, 58, 46,255, 28, 23, 20,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,143,124,126,255,220,182,185,255,217,180,183,255,218,180,182,255,217,179,181,255,217,178,180,255,216,177,179,255, +215,177,179,255,215,176,177,255,215,176,176,255,214,175,175,255,214,174,174,255,213,173,172,255,213,172,171,255,212,171,170,255, +212,170,169,255,211,169,167,255,210,168,166,255,210,167,165,255,210,166,162,255,209,165,161,255,208,164,160,255,207,163,158,255, +207,162,157,255,207,162,155,255,205,160,153,255,205,160,152,255,205,159,151,255,203,157,149,255,203,156,147,255,203,155,145,255, +202,153,143,255,201,152,141,255,200,151,139,255,199,150,137,255,198,149,135,255,198,147,133,255,197,146,131,255,196,145,129,255, +195,143,127,255,195,142,124,255,194,141,122,255,194,139,119,255,192,137,116,255,192,136,113,255,191,133,110,255,189,132,107,255, +187,131,106,255,186,130,105,255,184,128,104,255,182,127,103,255,179,125,101,255,175,122, 99,255,171,119, 96,255,167,116, 94,255, +164,114, 92,255,161,112, 90,255,158,109, 88,255,154,107, 86,255,150,104, 84,255,145,100, 80,255,137, 95, 76,255,130, 89, 72,255, +125, 86, 69,255,120, 83, 66,255,116, 80, 63,255,113, 77, 62,255,109, 74, 59,255,105, 71, 56,255,102, 69, 55,255, 99, 67, 53,255, + 98, 66, 53,255, 96, 65, 51,255, 96, 65, 52,255, 96, 65, 51,255, 94, 64, 50,255, 92, 62, 49,255, 89, 60, 47,255, 78, 57, 46,255, + 22, 17, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,143,123,125,255,219,182,184,255,218,179,182,255,217,179,182,255,216,178,181,255,217,178,179,255,216,178,179,255, +215,177,178,255,215,175,176,255,214,176,176,255,215,175,175,255,213,173,173,255,214,173,172,255,213,173,172,255,212,171,170,255, +211,170,169,255,211,169,167,255,210,168,166,255,211,168,165,255,209,166,163,255,208,165,162,255,209,165,161,255,207,163,158,255, +208,163,158,255,207,162,157,255,206,161,154,255,205,160,153,255,205,160,152,255,204,158,150,255,203,156,148,255,202,156,147,255, +203,154,144,255,202,153,143,255,201,152,141,255,200,151,139,255,199,150,137,255,199,149,136,255,198,147,134,255,197,146,131,255, +197,145,129,255,195,143,127,255,195,142,124,255,194,140,121,255,192,138,118,255,192,136,115,255,191,135,111,255,189,132,108,255, +188,131,107,255,186,130,105,255,184,128,103,255,180,126,102,255,177,123,100,255,173,120, 97,255,168,117, 95,255,164,114, 92,255, +161,112, 90,255,157,109, 88,255,154,107, 86,255,150,104, 84,255,144, 99, 80,255,137, 95, 76,255,130, 90, 72,255,124, 85, 68,255, +120, 82, 65,255,115, 78, 63,255,112, 77, 61,255,108, 74, 59,255,104, 71, 56,255,101, 69, 55,255, 98, 67, 53,255, 98, 67, 53,255, + 97, 66, 52,255, 96, 65, 52,255, 96, 65, 51,255, 95, 64, 51,255, 92, 62, 49,255, 89, 60, 47,255, 77, 55, 45,255, 13, 12, 12,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,143,123,125,255,219,181,184,255,217,179,182,255,217,179,181,255,216,178,180,255,217,177,179,255,216,177,179,255, +216,177,178,255,215,175,176,255,214,175,175,255,215,175,175,255,213,173,173,255,214,173,173,255,213,172,172,255,212,171,170,255, +212,171,169,255,211,169,167,255,211,169,166,255,211,168,165,255,210,167,164,255,209,166,162,255,208,165,161,255,209,164,160,255, +207,163,158,255,207,163,157,255,206,162,156,255,206,161,154,255,205,160,153,255,204,159,151,255,204,158,150,255,203,156,148,255, +203,156,147,255,203,154,145,255,202,153,143,255,201,153,141,255,201,151,140,255,200,150,138,255,199,149,137,255,198,148,134,255, +198,147,132,255,197,145,129,255,195,143,126,255,194,141,123,255,193,139,119,255,192,137,116,255,191,134,112,255,189,133,108,255, +188,131,107,255,186,129,105,255,182,128,103,255,179,125,101,255,174,121, 98,255,169,118, 95,255,164,114, 92,255,160,112, 90,255, +157,109, 88,255,154,106, 86,255,150,103, 83,255,144,100, 80,255,137, 94, 76,255,129, 89, 71,255,124, 85, 68,255,119, 81, 65,255, +115, 78, 62,255,111, 76, 60,255,107, 73, 58,255,103, 70, 56,255,101, 68, 54,255, 98, 66, 53,255, 97, 66, 52,255, 97, 66, 52,255, + 96, 65, 52,255, 95, 64, 51,255, 94, 64, 50,255, 92, 62, 49,255, 88, 60, 48,255, 67, 49, 42,255, 2, 2, 2,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,143,123,124,255,219,181,183,255,217,179,181,255,216,178,180,255,217,177,180,255,216,177,178,255,216,177,178,255, +216,176,177,255,214,176,176,255,215,175,175,255,214,174,174,255,213,174,173,255,214,173,172,255,213,171,172,255,212,171,170,255, +212,171,169,255,212,169,167,255,211,169,167,255,210,168,166,255,211,167,164,255,209,167,164,255,209,166,162,255,208,165,161,255, +208,164,160,255,207,163,158,255,207,162,157,255,206,162,156,255,206,161,154,255,205,160,153,255,205,159,152,255,204,158,150,255, +204,157,149,255,203,156,147,255,203,155,146,255,202,155,145,255,201,154,143,255,201,152,141,255,200,151,139,255,200,150,137,255, +198,148,134,255,197,146,131,255,196,144,128,255,195,142,124,255,193,140,120,255,192,138,116,255,190,135,113,255,189,133,109,255, +188,131,106,255,185,129,105,255,181,126,102,255,176,122, 99,255,170,118, 96,255,165,115, 92,255,160,111, 90,255,156,109, 88,255, +153,106, 85,255,148,102, 83,255,143, 99, 79,255,136, 94, 75,255,129, 88, 71,255,123, 84, 68,255,118, 81, 64,255,114, 78, 62,255, +110, 75, 60,255,106, 72, 57,255,103, 70, 55,255,100, 69, 54,255, 98, 67, 53,255, 98, 67, 53,255, 97, 66, 52,255, 96, 65, 52,255, + 96, 65, 51,255, 94, 64, 50,255, 92, 62, 49,255, 90, 62, 49,255, 50, 39, 33,255, 3, 3, 2,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,143,123,124,255,218,180,182,255,217,178,180,255,217,177,180,255,216,178,179,255,215,176,178,255,216,176,177,255, +215,175,176,255,215,175,175,255,214,175,175,255,213,174,174,255,214,173,172,255,214,173,172,255,213,172,171,255,212,171,170,255, +211,171,169,255,212,170,168,255,211,169,167,255,210,168,167,255,210,168,165,255,209,167,164,255,210,167,164,255,209,166,162,255, +208,165,161,255,209,165,160,255,207,163,158,255,208,163,158,255,207,162,157,255,206,161,155,255,205,161,154,255,206,160,153,255, +205,159,152,255,205,158,151,255,204,157,149,255,203,156,147,255,203,155,146,255,202,154,144,255,201,152,142,255,200,151,139,255, +199,149,136,255,198,147,133,255,197,145,129,255,196,143,126,255,194,140,122,255,193,138,118,255,192,136,113,255,190,133,108,255, +187,130,106,255,183,127,103,255,177,123,100,255,171,119, 96,255,165,114, 92,255,160,111, 90,255,156,108, 88,255,152,105, 85,255, +147,102, 83,255,141, 98, 79,255,135, 93, 75,255,128, 88, 71,255,122, 84, 67,255,117, 80, 64,255,113, 77, 62,255,110, 75, 60,255, +105, 72, 57,255,102, 69, 55,255,100, 68, 54,255, 98, 66, 52,255, 98, 67, 53,255, 97, 66, 52,255, 96, 66, 52,255, 95, 65, 51,255, + 94, 63, 50,255, 92, 62, 49,255, 89, 61, 49,255, 31, 25, 22,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,142,122,123,255,218,179,181,255,216,177,179,255,216,177,178,255,215,176,177,255,215,176,177,255,214,175,176,255, +215,175,175,255,214,174,174,255,213,174,174,255,214,173,173,255,213,172,172,255,213,173,172,255,212,172,170,255,213,172,170,255, +212,171,170,255,211,171,169,255,212,170,167,255,211,169,167,255,210,168,166,255,211,169,166,255,210,168,165,255,210,168,164,255, +210,167,164,255,209,166,162,255,209,165,161,255,209,164,160,255,208,164,159,255,208,163,158,255,207,163,157,255,207,162,156,255, +206,161,155,255,206,161,153,255,205,159,152,255,205,158,150,255,204,157,149,255,203,155,146,255,202,154,144,255,201,152,141,255, +200,150,137,255,198,148,134,255,197,145,130,255,196,143,126,255,194,141,122,255,193,138,117,255,192,135,112,255,189,131,107,255, +185,129,105,255,179,124,101,255,172,119, 96,255,165,114, 92,255,160,111, 90,255,155,108, 87,255,152,105, 85,255,146,101, 82,255, +140, 97, 78,255,134, 92, 74,255,127, 88, 70,255,122, 83, 67,255,117, 80, 64,255,113, 77, 62,255,109, 73, 59,255,105, 71, 56,255, +101, 69, 55,255, 99, 68, 54,255, 98, 67, 52,255, 97, 67, 53,255, 97, 66, 52,255, 96, 65, 52,255, 95, 65, 51,255, 94, 64, 50,255, + 92, 62, 49,255, 76, 53, 43,255, 24, 18, 16,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,142,121,122,255,217,178,178,255,215,176,177,255,215,176,176,255,214,175,175,255,214,175,175,255,214,174,174,255, +214,174,174,255,214,174,173,255,213,173,172,255,213,172,172,255,213,172,172,255,212,172,172,255,213,172,171,255,212,171,170,255, +213,171,170,255,212,171,169,255,212,171,169,255,211,170,168,255,211,170,168,255,211,169,168,255,211,170,168,255,211,169,167,255, +211,169,167,255,210,168,165,255,210,167,165,255,210,167,163,255,209,167,163,255,209,166,162,255,209,165,160,255,208,164,159,255, +207,164,158,255,207,163,156,255,206,161,155,255,205,160,153,255,205,159,151,255,204,157,148,255,202,155,146,255,201,153,142,255, +200,151,138,255,199,148,135,255,197,146,131,255,195,144,127,255,194,141,121,255,192,138,116,255,191,134,110,255,187,130,105,255, +180,126,102,255,172,120, 97,255,165,114, 92,255,159,110, 89,255,155,107, 87,255,150,104, 84,255,145,100, 81,255,140, 97, 77,255, +133, 91, 73,255,127, 87, 70,255,120, 83, 66,255,116, 79, 63,255,112, 76, 61,255,107, 73, 58,255,104, 70, 56,255,101, 69, 55,255, +100, 68, 54,255, 98, 67, 53,255, 98, 66, 53,255, 97, 66, 52,255, 96, 65, 52,255, 95, 64, 51,255, 94, 64, 50,255, 91, 61, 48,255, + 57, 40, 33,255, 9, 7, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,141,121,121,255,216,175,176,255,213,174,174,255,213,173,174,255,213,173,173,255,213,173,173,255,214,174,172,255, +213,173,172,255,212,172,171,255,212,172,171,255,213,172,171,255,213,171,170,255,213,172,171,255,213,171,171,255,212,172,172,255, +213,173,172,255,213,172,171,255,213,172,171,255,213,172,171,255,213,172,171,255,213,172,170,255,213,172,170,255,213,172,170,255, +213,171,170,255,213,171,169,255,212,171,168,255,212,170,167,255,211,169,166,255,211,168,166,255,210,167,164,255,210,167,163,255, +209,165,161,255,208,164,159,255,208,163,157,255,206,161,155,255,205,159,152,255,205,158,150,255,203,156,147,255,202,153,143,255, +201,152,140,255,199,149,136,255,198,146,131,255,197,144,127,255,194,140,121,255,192,137,115,255,188,131,107,255,182,127,103,255, +172,120, 98,255,164,114, 92,255,158,109, 89,255,154,107, 86,255,149,104, 83,255,144,100, 80,255,138, 95, 77,255,132, 90, 73,255, +125, 86, 69,255,120, 82, 66,255,115, 79, 63,255,111, 75, 60,255,107, 73, 58,255,103, 70, 56,255,101, 69, 54,255,100, 68, 54,255, + 97, 66, 52,255, 97, 66, 53,255, 96, 65, 52,255, 96, 65, 52,255, 95, 64, 51,255, 94, 64, 50,255, 88, 59, 47,255, 42, 30, 25,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,140,119,119,255,213,174,173,255,212,172,172,255,212,172,172,255,212,172,171,255,212,172,171,255,212,172,171,255, +212,172,171,255,212,171,171,255,213,171,170,255,213,171,170,255,212,172,171,255,213,172,171,255,212,172,171,255,213,172,172,255, +213,173,173,255,214,173,173,255,214,173,173,255,213,173,173,255,214,173,173,255,214,173,173,255,214,174,173,255,214,174,173,255, +214,173,173,255,214,173,172,255,213,172,171,255,213,172,171,255,212,171,170,255,212,170,168,255,211,169,167,255,211,168,166,255, +210,167,164,255,209,165,161,255,208,164,159,255,207,162,157,255,206,161,154,255,205,159,151,255,204,157,148,255,202,154,144,255, +201,152,140,255,199,149,136,255,198,146,131,255,196,143,125,255,194,139,119,255,190,134,110,255,184,128,104,255,173,121, 98,255, +164,114, 92,255,158,109, 89,255,153,106, 86,255,149,103, 83,255,143, 99, 79,255,137, 94, 76,255,131, 90, 72,255,125, 86, 68,255, +119, 82, 65,255,114, 78, 62,255,110, 75, 60,255,106, 72, 57,255,103, 70, 55,255,100, 68, 54,255, 99, 68, 54,255, 97, 67, 52,255, + 97, 66, 53,255, 96, 65, 52,255, 96, 65, 52,255, 95, 64, 51,255, 93, 63, 49,255, 75, 51, 41,255, 28, 20, 18,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,139,118,117,255,213,171,169,255,212,170,169,255,212,170,169,255,212,170,169,255,212,171,169,255,212,171,169,255, +211,171,169,255,212,171,170,255,212,171,170,255,212,171,170,255,213,172,171,255,212,172,172,255,213,173,172,255,214,173,173,255, +213,174,174,255,214,174,174,255,214,175,175,255,214,175,175,255,214,175,176,255,215,175,176,255,215,176,177,255,215,176,177,255, +215,176,176,255,215,175,176,255,215,175,175,255,214,174,173,255,213,173,173,255,213,172,171,255,213,171,170,255,212,169,167,255, +211,168,166,255,210,167,163,255,209,165,161,255,207,163,158,255,207,161,155,255,206,160,152,255,204,157,149,255,203,154,145,255, +201,152,140,255,199,149,136,255,198,146,131,255,195,141,124,255,192,136,114,255,185,129,104,255,174,121, 98,255,164,114, 92,255, +157,109, 88,255,153,106, 85,255,148,102, 82,255,141, 97, 79,255,136, 93, 75,255,129, 89, 72,255,124, 85, 68,255,118, 81, 65,255, +113, 77, 62,255,109, 74, 60,255,105, 71, 57,255,102, 69, 55,255,100, 68, 54,255, 99, 67, 53,255, 98, 67, 53,255, 97, 66, 53,255, + 96, 65, 52,255, 96, 65, 52,255, 95, 65, 51,255, 93, 63, 50,255, 58, 41, 34,255, 8, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,138,116,114,255,211,168,165,255,210,168,164,255,210,168,165,255,210,168,165,255,210,168,165,255,210,169,167,255, +211,169,167,255,211,170,168,255,211,170,169,255,212,171,170,255,213,172,172,255,212,172,172,255,213,173,174,255,214,175,175,255, +215,175,176,255,215,176,177,255,216,177,177,255,216,177,178,255,217,178,179,255,217,178,180,255,217,178,180,255,217,178,180,255, +217,178,180,255,217,178,179,255,216,177,179,255,216,176,177,255,215,175,175,255,214,173,174,255,214,172,172,255,213,171,170,255, +211,169,167,255,211,168,165,255,210,166,162,255,208,164,159,255,207,162,155,255,206,160,152,255,204,157,148,255,203,155,145,255, +201,152,140,255,199,149,135,255,196,145,128,255,193,138,118,255,186,130,106,255,174,121, 98,255,163,113, 92,255,157,108, 87,255, +151,105, 85,255,146,101, 81,255,140, 97, 78,255,134, 92, 74,255,129, 88, 71,255,123, 84, 67,255,117, 80, 64,255,113, 77, 61,255, +108, 73, 58,255,105, 71, 57,255,101, 69, 54,255,100, 68, 54,255, 99, 67, 53,255, 97, 67, 52,255, 97, 66, 53,255, 97, 65, 52,255, + 95, 65, 52,255, 95, 64, 51,255, 92, 62, 49,255, 40, 29, 25,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,137,114,112,255,209,164,160,255,208,164,160,255,208,165,160,255,208,165,161,255,209,167,162,255,209,167,163,255, +210,168,164,255,210,168,166,255,211,170,168,255,211,170,169,255,212,172,171,255,213,173,172,255,213,173,174,255,214,175,175,255, +215,176,177,255,216,177,178,255,216,178,179,255,217,179,181,255,217,179,181,255,218,180,183,255,218,180,183,255,218,180,183,255, +218,180,183,255,218,180,182,255,218,179,181,255,217,177,180,255,216,176,178,255,215,175,176,255,214,173,173,255,213,172,171,255, +212,170,169,255,211,169,165,255,210,167,163,255,208,165,159,255,207,162,156,255,206,160,153,255,204,157,148,255,203,154,145,255, +201,151,139,255,198,147,132,255,195,141,123,255,187,131,108,255,174,121, 98,255,163,113, 92,255,156,108, 87,255,150,104, 84,255, +145,100, 81,255,139, 96, 77,255,133, 92, 73,255,128, 88, 70,255,122, 84, 67,255,116, 79, 64,255,112, 76, 61,255,107, 72, 58,255, +103, 70, 56,255,101, 69, 55,255,100, 68, 54,255, 98, 67, 53,255, 97, 66, 53,255, 97, 66, 52,255, 96, 65, 51,255, 96, 65, 52,255, + 95, 65, 51,255, 74, 51, 42,255, 16, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 60, 60,255,136,112,108,255,206,160,154,255,206,161,154,255,206,161,155,255,206,161,156,255,206,162,158,255,207,164,159,255, +208,165,161,255,209,166,163,255,209,168,165,255,211,169,167,255,212,170,170,255,212,172,172,255,213,174,175,255,215,176,177,255, +215,177,179,255,217,178,180,255,217,179,181,255,218,180,184,255,218,181,185,255,219,182,185,255,219,182,186,255,219,182,186,255, +219,182,186,255,219,182,184,255,218,180,183,255,218,179,181,255,217,177,179,255,215,176,177,255,215,174,174,255,214,173,172,255, +212,171,169,255,211,169,166,255,210,167,163,255,208,164,160,255,207,162,156,255,206,160,153,255,204,157,148,255,202,154,144,255, +200,150,137,255,196,144,127,255,189,133,111,255,175,122, 99,255,163,113, 91,255,155,108, 87,255,150,104, 83,255,143, 99, 80,255, +138, 95, 77,255,132, 90, 73,255,126, 86, 69,255,121, 83, 67,255,115, 79, 63,255,110, 75, 60,255,106, 72, 57,255,103, 70, 56,255, +100, 68, 54,255, 99, 68, 54,255, 98, 67, 53,255, 97, 66, 53,255, 97, 65, 52,255, 96, 66, 51,255, 96, 65, 51,255, 94, 65, 51,255, + 43, 31, 26,255, 4, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 60, 61, 61,255,122, 99, 93,255,192,144,134,255,201,154,145,255,203,156,148,255,204,157,150,255,204,158,151,255,205,160,153,255, +205,161,156,255,207,163,159,255,208,165,161,255,209,167,164,255,211,169,167,255,212,171,170,255,213,173,173,255,215,175,176,255, +216,178,179,255,217,180,182,255,218,181,183,255,219,182,185,255,220,183,187,255,220,184,188,255,221,184,189,255,221,184,189,255, +220,184,187,255,219,183,186,255,219,182,185,255,218,180,183,255,217,179,180,255,216,177,177,255,215,175,175,255,214,173,172,255, +212,171,169,255,211,169,167,255,210,167,163,255,208,164,160,255,207,162,156,255,206,160,152,255,204,157,148,255,201,153,141,255, +197,147,131,255,190,135,113,255,176,123, 99,255,163,113, 91,255,154,107, 86,255,148,102, 83,255,142, 98, 79,255,137, 94, 75,255, +131, 90, 72,255,126, 86, 69,255,120, 82, 66,255,114, 78, 63,255,110, 74, 60,255,105, 71, 57,255,102, 70, 56,255,100, 68, 54,255, + 99, 67, 53,255, 98, 66, 52,255, 97, 66, 52,255, 96, 65, 52,255, 97, 66, 51,255, 95, 64, 52,255, 83, 59, 47,255, 16, 12, 11,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 26, 27, 28,255, 35, 26, 23,255,108, 80, 72,255,163,122,110,255,199,149,136,255,201,152,142,255,202,155,145,255, +202,155,147,255,204,158,151,255,205,161,155,255,207,163,158,255,209,166,163,255,211,169,166,255,212,172,171,255,214,175,175,255, +216,177,179,255,217,180,182,255,219,182,185,255,219,183,187,255,220,184,188,255,221,185,189,255,220,185,190,255,220,185,190,255, +221,184,188,255,220,184,187,255,219,183,185,255,219,181,183,255,218,179,181,255,216,177,178,255,215,175,175,255,214,173,172,255, +212,171,169,255,212,169,166,255,210,167,162,255,208,165,159,255,207,162,156,255,205,158,151,255,203,155,145,255,199,149,135,255, +191,137,116,255,178,124,100,255,163,113, 91,255,154,107, 86,255,147,102, 82,255,141, 97, 78,255,135, 93, 75,255,130, 89, 71,255, +125, 85, 68,255,119, 81, 65,255,113, 78, 62,255,108, 74, 59,255,104, 72, 56,255,102, 69, 55,255,100, 68, 54,255, 98, 67, 53,255, + 97, 66, 52,255, 97, 66, 52,255, 96, 65, 51,255, 96, 66, 51,255, 93, 64, 52,255, 57, 40, 33,255, 7, 6, 5,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 61,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 13, 10, 9,255, 44, 33, 29,255,125, 93, 81,255,189,139,124,255, +199,149,134,255,200,152,140,255,201,153,143,255,204,158,150,255,206,160,154,255,208,164,160,255,210,168,166,255,212,172,172,255, +215,176,177,255,217,179,181,255,218,181,185,255,219,183,187,255,221,185,189,255,220,185,190,255,221,185,190,255,221,185,189,255, +221,184,187,255,220,183,186,255,219,182,185,255,218,180,183,255,218,179,180,255,216,176,177,255,215,175,175,255,214,173,172,255, +212,170,168,255,211,169,165,255,210,167,162,255,208,163,158,255,207,161,154,255,204,157,149,255,201,152,140,255,193,140,120,255, +178,124,101,255,163,113, 91,255,153,106, 86,255,146,101, 81,255,140, 96, 78,255,134, 92, 74,255,129, 88, 71,255,123, 84, 68,255, +118, 80, 65,255,112, 76, 61,255,107, 73, 58,255,104, 70, 56,255,101, 69, 55,255, 99, 68, 54,255, 98, 67, 53,255, 97, 67, 53,255, + 97, 66, 52,255, 96, 66, 52,255, 96, 65, 52,255, 85, 60, 48,255, 22, 16, 13,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 70, 50, 43,255,148,108, 94,255,183,135,120,255,194,144,131,255,200,151,141,255,203,157,149,255,206,162,156,255,208,166,163,255, +212,172,172,255,215,176,178,255,217,179,182,255,218,182,185,255,219,183,187,255,221,183,188,255,220,183,187,255,220,183,186,255, +219,183,186,255,219,182,184,255,218,180,183,255,218,179,181,255,217,178,179,255,216,176,176,255,215,174,174,255,214,172,171,255, +212,170,168,255,211,167,164,255,210,166,161,255,208,163,157,255,205,160,152,255,203,154,144,255,195,143,125,255,180,126,102,255, +163,113, 91,255,153,106, 85,255,145,100, 81,255,139, 96, 77,255,133, 92, 73,255,127, 88, 70,255,123, 84, 67,255,116, 80, 64,255, +111, 76, 61,255,107, 72, 57,255,103, 70, 56,255,100, 69, 55,255, 99, 67, 53,255, 98, 66, 52,255, 97, 66, 52,255, 96, 65, 51,255, + 96, 66, 52,255, 94, 63, 51,255, 68, 49, 41,255, 5, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 22, 16, 14,255, 73, 53, 46,255,107, 79, 69,255,153,113,101,255,193,145,132,255,203,154,144,255, +207,162,156,255,210,169,166,255,214,175,175,255,216,178,179,255,217,179,182,255,218,180,183,255,219,180,182,255,219,180,182,255, +218,180,181,255,218,180,181,255,218,179,180,255,217,178,179,255,216,176,177,255,215,175,175,255,214,173,172,255,213,171,169,255, +212,169,166,255,210,167,163,255,209,164,158,255,207,161,154,255,204,156,147,255,197,145,129,255,181,127,104,255,163,113, 91,255, +151,105, 85,255,144, 99, 80,255,138, 95, 76,255,132, 91, 73,255,127, 87, 69,255,122, 83, 67,255,115, 79, 63,255,110, 75, 60,255, +105, 72, 57,255,102, 69, 55,255,100, 69, 54,255, 98, 67, 53,255, 97, 66, 52,255, 97, 66, 52,255, 96, 65, 52,255, 96, 65, 52,255, + 85, 59, 49,255, 36, 26, 22,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 10, 7, 6,255, 24, 18, 16,255, 61, 46, 41,255, +146,111,101,255,194,149,139,255,207,162,157,255,210,168,167,255,213,173,172,255,214,175,174,255,215,174,174,255,215,175,176,255, +216,176,177,255,217,177,177,255,217,177,178,255,216,176,176,255,216,175,175,255,215,174,173,255,213,172,170,255,212,170,167,255, +211,167,164,255,209,166,160,255,208,162,156,255,205,159,150,255,199,148,134,255,183,128,106,255,163,113, 91,255,152,104, 84,255, +143, 99, 79,255,137, 94, 76,255,131, 90, 72,255,126, 86, 69,255,120, 82, 66,255,115, 78, 63,255,109, 74, 59,255,104, 71, 56,255, +101, 69, 55,255,100, 68, 54,255, 98, 67, 53,255, 98, 66, 53,255, 97, 66, 52,255, 96, 65, 52,255, 97, 65, 52,255, 64, 47, 39,255, + 7, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 6, 6, 6,255, 93, 72, 66,255,189,146,139,255,207,162,156,255,208,165,161,255,211,167,165,255,212,170,168,255, +214,172,171,255,215,174,173,255,215,174,174,255,215,174,174,255,214,173,172,255,213,172,170,255,212,170,167,255,212,168,165,255, +210,166,162,255,209,163,158,255,207,161,153,255,200,151,139,255,185,131,109,255,163,113, 92,255,150,104, 84,255,142, 98, 79,255, +136, 93, 75,255,130, 89, 71,255,124, 86, 69,255,119, 81, 65,255,113, 77, 62,255,108, 73, 58,255,104, 70, 56,255,101, 69, 55,255, +100, 68, 54,255, 98, 66, 52,255, 97, 66, 52,255, 96, 65, 52,255, 95, 65, 52,255, 88, 61, 49,255, 36, 28, 24,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 43, 32, 28,255,191,141,126,255,202,154,144,255,206,160,152,255,209,165,160,255, +211,169,165,255,213,171,168,255,214,172,169,255,214,172,170,255,213,171,168,255,212,169,167,255,211,168,164,255,210,166,161,255, +209,164,159,255,207,162,155,255,202,154,143,255,187,133,113,255,165,114, 92,255,150,104, 84,255,142, 98, 79,255,135, 93, 75,255, +129, 89, 71,255,124, 85, 68,255,118, 81, 64,255,112, 76, 61,255,107, 72, 58,255,103, 70, 55,255,100, 68, 54,255, 99, 68, 54,255, + 97, 66, 53,255, 97, 66, 52,255, 96, 65, 51,255, 94, 65, 52,255, 62, 43, 35,255, 16, 12, 11,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 84, 59, 49,255,196,142,122,255,200,151,138,255,206,159,152,255, +209,164,159,255,211,167,163,255,212,169,165,255,212,170,166,255,212,168,164,255,211,166,162,255,209,165,159,255,209,164,158,255, +208,163,157,255,204,157,148,255,189,135,116,255,166,115, 93,255,150,104, 83,255,141, 97, 78,255,134, 92, 74,255,128, 88, 71,255, +123, 84, 67,255,116, 79, 63,255,111, 75, 60,255,105, 72, 57,255,102, 69, 55,255,100, 68, 54,255, 99, 67, 53,255, 97, 66, 52,255, + 97, 66, 52,255, 96, 65, 51,255, 92, 63, 50,255, 31, 23, 19,255, 2, 2, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 2, 2, 1,255,171,120, 98,255,197,143,125,255,203,154,143,255, +207,160,153,255,209,164,158,255,210,166,161,255,210,166,160,255,209,164,159,255,208,163,157,255,208,163,156,255,209,163,158,255, +205,160,152,255,193,141,123,255,167,116, 94,255,149,104, 83,255,140, 97, 77,255,133, 92, 73,255,128, 87, 70,255,122, 83, 67,255, +115, 78, 63,255,109, 74, 59,255,105, 71, 57,255,101, 69, 55,255,100, 68, 54,255, 98, 67, 53,255, 97, 66, 52,255, 96, 65, 51,255, + 94, 63, 51,255, 77, 54, 45,255, 11, 9, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 1,255,100, 70, 58,255,192,136,113,255,201,149,135,255, +205,156,146,255,207,161,152,255,208,161,154,255,208,161,154,255,207,160,152,255,208,161,154,255,209,164,159,255,208,163,157,255, +196,145,130,255,171,119, 96,255,150,104, 84,255,139, 97, 77,255,132, 91, 73,255,126, 87, 70,255,120, 82, 66,255,114, 78, 62,255, +108, 73, 58,255,103, 70, 56,255,101, 69, 54,255, 99, 67, 53,255, 98, 67, 53,255, 97, 66, 52,255, 96, 65, 51,255, 88, 61, 49,255, + 39, 28, 23,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 64, 45, 37,255,185,129,106,255,198,145,127,255, +202,152,140,255,205,156,146,255,206,157,147,255,206,158,147,255,207,160,152,255,209,165,159,255,209,166,161,255,200,151,139,255, +174,121, 99,255,151,105, 84,255,139, 96, 77,255,131, 90, 72,255,125, 86, 69,255,119, 81, 65,255,112, 76, 61,255,107, 73, 58,255, +103, 70, 56,255,100, 68, 54,255, 99, 67, 53,255, 98, 67, 53,255, 96, 65, 52,255, 95, 65, 51,255, 75, 53, 44,255, 7, 6, 5,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 32, 23, 19,255,168,118, 95,255,194,139,118,255, +200,148,132,255,202,151,139,255,203,154,142,255,206,158,147,255,209,164,158,255,211,167,164,255,205,158,149,255,179,126,105,255, +154,106, 86,255,139, 96, 78,255,131, 90, 72,255,124, 86, 68,255,117, 80, 64,255,111, 75, 60,255,105, 71, 57,255,102, 69, 55,255, +100, 68, 54,255, 98, 67, 53,255, 97, 66, 52,255, 96, 65, 51,255, 87, 60, 47,255, 42, 30, 25,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 13, 20, 26,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 13, 10, 9,255,152,107, 86,255,190,134,111,255, +198,144,126,255,200,148,134,255,203,153,142,255,208,162,154,255,212,169,166,255,209,165,160,255,186,134,116,255,157,109, 88,255, +140, 97, 78,255,130, 90, 72,255,123, 85, 68,255,116, 79, 64,255,109, 74, 59,255,104, 71, 56,255,101, 69, 55,255, 99, 68, 54,255, + 98, 67, 53,255, 97, 66, 52,255, 95, 64, 51,255, 64, 44, 36,255, 17, 13, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 12, 20, 25,255,102,160,205,255, 52, 82,105,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,129, 91, 74,255,188,131,106,255, +196,140,119,255,200,148,133,255,206,158,148,255,211,167,163,255,213,172,170,255,195,144,129,255,163,113, 90,255,142, 98, 79,255, +130, 90, 72,255,122, 84, 67,255,115, 78, 62,255,108, 73, 58,255,103, 70, 56,255,101, 69, 55,255, 99, 67, 54,255, 98, 67, 53,255, + 96, 66, 52,255, 93, 63, 50,255, 34, 24, 20,255, 2, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 85,133,171,255,118,186,238,255,115,182,232,255, 34, 53, 68,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 67, 48, 39,255,183,128,104,255, +194,137,115,255,202,151,138,255,210,164,158,255,215,173,172,255,202,154,144,255,171,118, 96,255,145,100, 81,255,131, 90, 72,255, +122, 83, 67,255,114, 77, 62,255,107, 72, 57,255,102, 70, 55,255,101, 69, 54,255, 99, 67, 53,255, 98, 66, 52,255, 94, 64, 51,255, + 72, 49, 40,255, 13, 9, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 64,101,129,255,118,186,238,255,118,185,237,255,118,186,238,255,102,161,206,255, 14, 22, 28,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 19, 14, 12,255,178,124,101,255, +193,137,117,255,205,157,147,255,214,172,172,255,209,165,161,255,179,127,107,255,150,104, 84,255,133, 91, 73,255,121, 83, 67,255, +113, 77, 61,255,106, 72, 57,255,102, 69, 55,255,101, 69, 54,255, 99, 67, 53,255, 98, 67, 52,255, 85, 58, 47,255, 33, 23, 18,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 52, 82,105,255,118,186,238,255,118,185,237,255,118,186,238,255,118,185,237,255,118,186,238,255, 88,139,178,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,145,102, 83,255, +196,142,123,255,210,167,163,255,216,177,177,255,190,140,124,255,156,109, 87,255,135, 94, 75,255,121, 83, 67,255,112, 76, 61,255, +106, 72, 57,255,102, 69, 55,255,101, 69, 55,255, 99, 67, 53,255, 97, 66, 53,255, 55, 39, 33,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 27, 42, 54,255, +113,178,228,255,118,186,238,255,118,185,237,255,118,186,238,255,118,185,237,255,118,186,238,255,118,186,238,255, 78,123,158,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 87, 63, 52,255, +199,147,132,255,216,177,179,255,203,157,149,255,165,115, 92,255,139, 96, 77,255,122, 84, 67,255,111, 76, 61,255,106, 72, 57,255, +102, 70, 55,255,101, 69, 55,255, 95, 65, 52,255, 71, 50, 40,255, 17, 13, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 11, 17, 21,255,105,166,212,255, +118,186,238,255,118,186,238,255,118,186,238,255,118,186,238,255,118,185,237,255,118,186,238,255,118,186,238,255,117,184,235,255, + 35, 55, 71,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 25, 18, 16,255, +201,154,143,255,215,175,175,255,179,127,107,255,144, 99, 79,255,124, 85, 68,255,112, 77, 61,255,107, 73, 58,255,104, 70, 56,255, +101, 69, 55,255, 65, 45, 37,255, 24, 17, 14,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 4, 7, 8,255, 97,152,195,255,118,186,238,255, +118,185,237,255,118,186,238,255,118,186,238,255,118,185,237,255,118,186,238,255,118,186,238,255, 81,128,164,255, 32, 50, 64,255, + 7, 12, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 7, 5, 5,255, +187,149,145,255,201,153,143,255,155,107, 85,255,127, 87, 70,255,115, 78, 62,255,109, 74, 59,255,105, 72, 57,255, 71, 50, 42,255, + 8, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 2,255, 79,124,159,255,118,185,237,255,118,186,238,255, +118,186,238,255,118,185,237,255,118,186,238,255,118,186,238,255, 93,146,187,255, 21, 33, 42,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 0, 0,255, + 80, 63, 62,255,164,118,101,255,136, 95, 77,255,112, 78, 64,255, 90, 62, 51,255, 60, 43, 36,255, 14, 11, 10,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 50, 79,101,255,118,186,238,255,118,186,238,255,118,186,238,255, +118,186,238,255,111,174,223,255, 82,130,166,255, 28, 44, 57,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 3, 2, 2,255, 26, 19, 16,255, 32, 23, 20,255, 21, 16, 14,255, 5, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 36, 57, 73,255,118,185,237,255,118,186,238,255,118,186,238,255,118,186,238,255, + 66,104,133,255, 23, 36, 46,255, 0, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 19, 31, 39,255,116,182,233,255,118,185,237,255,118,186,238,255, 74,116,148,255, 8, 12, 16,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 9, 15, 19,255,100,158,202,255,104,163,209,255, 70,111,142,255, 14, 23, 29,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 75,118,151,255, 52, 82,105,255, 15, 24, 31,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 12, 18, 23,255, 2, 3, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, + 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, + 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 73, 77, 0, 0,156, 1, 0, 0,176,195,102, 7, 31, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88, 32,102, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 73, 77, 46,105, 46,116,119,105,115,116, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46, +116,119,105,115,116, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,197,102, 7, 0, 0, 0, 0,216, 72, 42, 0, + 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,176,197,102, 7, 19, 0, 0, 0, + 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 56,198,102, 7, +160,214,102, 7, 68, 65, 84, 65, 0, 16, 0, 0, 56,198,102, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0, +160,214,102, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, + 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, + 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, + 61, 62, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, + 61, 61, 62,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, + 61, 62, 62,255, 61, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 61, 62, 62,255, 61, 62, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, + 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 61, 61, 61,255, 61, 61, 61,255, 85, 81, 76,255,107, 99, 90,255,106, 98, 89,255,106, 98, 89,255, +105, 97, 88,255,105, 97, 88,255,105, 97, 87,255,105, 97, 87,255,105, 97, 87,255,104, 96, 87,255,104, 96, 87,255,103, 96, 86,255, +103, 96, 86,255,103, 96, 86,255,103, 96, 86,255,103, 96, 86,255,103, 96, 86,255,103, 96, 86,255,103, 95, 85,255,103, 95, 85,255, +102, 95, 85,255,102, 95, 84,255,102, 95, 85,255,102, 94, 84,255, 98, 90, 79,255, 91, 83, 71,255, 83, 75, 66,255, 77, 71, 63,255, + 73, 68, 62,255, 71, 66, 60,255, 70, 64, 59,255, 68, 64, 58,255, 68, 63, 58,255, 67, 62, 57,255, 66, 61, 56,255, 66, 60, 54,255, + 65, 60, 53,255, 67, 61, 52,255, 70, 65, 55,255, 75, 68, 57,255, 77, 71, 59,255, 77, 70, 59,255, 74, 67, 57,255, 70, 64, 55,255, + 69, 63, 55,255, 67, 61, 55,255, 66, 61, 54,255, 65, 60, 54,255, 65, 60, 54,255, 64, 60, 53,255, 63, 59, 54,255, 63, 58, 53,255, + 62, 58, 53,255, 62, 57, 52,255, 61, 57, 52,255, 60, 56, 51,255, 60, 56, 51,255, 60, 55, 50,255, 59, 54, 50,255, 58, 53, 49,255, + 57, 53, 48,255, 56, 52, 48,255, 55, 51, 47,255, 54, 50, 46,255, 53, 49, 45,255, 52, 48, 44,255, 51, 47, 42,255, 49, 46, 42,255, + 48, 45, 40,255, 47, 43, 39,255, 46, 43, 39,255, 46, 43, 38,255, 46, 43, 38,255, 48, 44, 39,255, 52, 48, 42,255, 59, 53, 46,255, + 64, 58, 50,255, 68, 62, 53,255, 69, 62, 54,255, 68, 62, 53,255, 68, 61, 53,255, 67, 61, 52,255, 67, 61, 52,255, 66, 60, 52,255, + 65, 59, 51,255, 65, 59, 50,255, 64, 58, 49,255, 63, 58, 50,255, 63, 57, 49,255, 62, 57, 48,255, 61, 55, 48,255, 60, 55, 47,255, + 59, 54, 47,255, 60, 57, 54,255, 62, 62, 62,255, 60, 61, 61,255,108,100, 91,255,151,136,117,255,149,134,116,255,149,133,115,255, +147,132,114,255,147,132,114,255,147,132,114,255,146,131,113,255,146,131,113,255,145,131,112,255,145,130,112,255,144,130,111,255, +144,130,111,255,144,130,111,255,145,130,111,255,145,130,111,255,145,130,111,255,145,130,111,255,144,129,111,255,144,129,111,255, +144,129,110,255,143,128,109,255,136,120,100,255,120,105, 84,255,104, 91, 72,255, 92, 81, 66,255, 85, 75, 63,255, 81, 71, 60,255, + 78, 69, 59,255, 76, 67, 57,255, 75, 66, 56,255, 73, 64, 54,255, 72, 63, 53,255, 72, 62, 50,255, 72, 61, 47,255, 75, 63, 46,255, + 83, 70, 51,255, 91, 78, 57,255, 97, 83, 61,255, 95, 82, 60,255, 90, 77, 56,255, 84, 71, 52,255, 80, 68, 51,255, 77, 66, 51,255, + 76, 65, 50,255, 74, 63, 50,255, 73, 63, 50,255, 72, 62, 49,255, 71, 61, 49,255, 71, 61, 49,255, 70, 60, 48,255, 69, 59, 47,255, + 68, 58, 47,255, 67, 58, 46,255, 65, 57, 45,255, 64, 55, 44,255, 64, 55, 43,255, 62, 53, 42,255, 61, 52, 41,255, 59, 51, 40,255, + 57, 49, 39,255, 56, 47, 37,255, 54, 46, 35,255, 51, 43, 33,255, 49, 42, 31,255, 47, 39, 29,255, 44, 37, 27,255, 41, 35, 25,255, + 39, 32, 22,255, 35, 29, 19,255, 33, 27, 17,255, 32, 26, 16,255, 31, 25, 16,255, 31, 25, 16,255, 31, 25, 16,255, 36, 28, 18,255, + 46, 38, 25,255, 60, 50, 34,255, 70, 59, 41,255, 75, 63, 45,255, 74, 62, 44,255, 73, 61, 43,255, 72, 60, 43,255, 71, 59, 42,255, + 69, 57, 41,255, 68, 57, 40,255, 66, 55, 39,255, 65, 54, 38,255, 64, 53, 38,255, 62, 52, 36,255, 61, 50, 35,255, 60, 49, 34,255, + 58, 47, 33,255, 59, 54, 46,255, 62, 62, 62,255, 60, 61, 61,255,108,100, 91,255,151,136,118,255,149,134,116,255,149,134,116,255, +148,133,115,255,148,133,115,255,148,133,115,255,148,133,115,255,147,132,114,255,146,131,113,255,146,132,113,255,146,132,113,255, +147,132,113,255,147,132,114,255,147,132,114,255,147,132,114,255,147,132,114,255,147,132,114,255,147,132,113,255,144,129,109,255, +133,119, 99,255,115,101, 82,255, 97, 85, 68,255, 88, 77, 65,255, 83, 74, 63,255, 81, 71, 61,255, 79, 70, 61,255, 78, 69, 60,255, + 78, 68, 58,255, 77, 67, 57,255, 76, 67, 56,255, 76, 66, 54,255, 78, 67, 52,255, 83, 70, 53,255, 93, 80, 59,255,105, 90, 68,255, +110, 96, 73,255,107, 92, 68,255,100, 85, 63,255, 92, 79, 58,255, 87, 74, 56,255, 85, 73, 55,255, 84, 72, 55,255, 82, 71, 55,255, + 82, 71, 55,255, 81, 70, 54,255, 81, 70, 54,255, 80, 69, 54,255, 80, 69, 53,255, 79, 69, 53,255, 79, 68, 53,255, 78, 67, 53,255, + 78, 67, 52,255, 78, 66, 52,255, 78, 65, 50,255, 76, 65, 50,255, 75, 64, 49,255, 74, 63, 49,255, 72, 62, 47,255, 71, 61, 46,255, + 70, 59, 44,255, 68, 57, 43,255, 65, 56, 41,255, 63, 53, 40,255, 60, 51, 37,255, 58, 49, 35,255, 54, 45, 33,255, 51, 42, 30,255, + 47, 39, 28,255, 44, 35, 25,255, 40, 33, 22,255, 36, 30, 19,255, 33, 27, 18,255, 31, 26, 17,255, 31, 24, 15,255, 30, 24, 15,255, + 30, 24, 15,255, 35, 27, 18,255, 49, 40, 27,255, 63, 53, 37,255, 72, 60, 43,255, 73, 61, 43,255, 72, 60, 43,255, 70, 59, 42,255, + 69, 57, 41,255, 68, 57, 40,255, 66, 55, 38,255, 65, 54, 39,255, 64, 53, 38,255, 64, 52, 36,255, 62, 51, 36,255, 60, 49, 35,255, + 58, 47, 33,255, 59, 54, 46,255, 62, 62, 62,255, 60, 61, 61,255,108,100, 91,255,152,137,119,255,150,135,117,255,150,135,118,255, +150,135,117,255,150,135,117,255,150,135,117,255,149,134,116,255,148,133,115,255,149,134,116,255,150,135,117,255,150,135,117,255, +150,135,117,255,151,136,118,255,151,136,118,255,151,136,118,255,151,136,119,255,147,132,113,255,131,117, 97,255,112, 99, 81,255, + 96, 84, 70,255, 88, 77, 66,255, 84, 75, 64,255, 83, 74, 64,255, 82, 73, 63,255, 81, 72, 62,255, 81, 71, 61,255, 81, 71, 60,255, + 81, 71, 59,255, 81, 71, 56,255, 86, 74, 57,255, 96, 83, 62,255,104, 90, 68,255,115,100, 78,255,124,110, 89,255,125,110, 89,255, +115,100, 77,255,106, 91, 67,255,100, 85, 63,255, 96, 83, 62,255, 94, 81, 62,255, 93, 80, 61,255, 92, 79, 60,255, 92, 79, 60,255, + 92, 79, 60,255, 92, 80, 60,255, 93, 79, 60,255, 94, 80, 60,255, 94, 80, 61,255, 94, 81, 60,255, 95, 82, 61,255, 95, 82, 61,255, + 96, 83, 61,255, 96, 83, 61,255, 96, 83, 61,255, 96, 82, 61,255, 96, 82, 61,255, 95, 81, 60,255, 94, 81, 59,255, 93, 79, 58,255, + 91, 78, 56,255, 89, 76, 55,255, 86, 74, 53,255, 83, 71, 51,255, 80, 68, 49,255, 77, 65, 47,255, 73, 62, 44,255, 70, 58, 42,255, + 66, 55, 39,255, 61, 51, 36,255, 57, 47, 33,255, 52, 42, 29,255, 47, 38, 26,255, 41, 33, 22,255, 36, 28, 18,255, 31, 25, 16,255, + 30, 24, 15,255, 30, 24, 15,255, 32, 26, 16,255, 42, 34, 22,255, 59, 48, 33,255, 70, 58, 41,255, 72, 60, 43,255, 70, 60, 43,255, + 69, 57, 41,255, 68, 57, 40,255, 66, 55, 38,255, 65, 54, 39,255, 64, 53, 38,255, 63, 52, 36,255, 62, 51, 36,255, 60, 50, 35,255, + 58, 48, 33,255, 59, 54, 46,255, 62, 62, 62,255, 60, 61, 61,255,109,101, 92,255,153,138,120,255,152,137,119,255,152,137,119,255, +152,137,119,255,152,137,119,255,151,136,118,255,151,136,118,255,152,137,119,255,152,137,120,255,153,138,120,255,153,138,121,255, +154,139,121,255,154,139,122,255,155,140,123,255,152,137,120,255,135,120,101,255,109, 96, 78,255, 96, 84, 71,255, 89, 79, 68,255, + 86, 77, 67,255, 85, 76, 66,255, 85, 75, 65,255, 85, 75, 65,255, 85, 75, 64,255, 86, 75, 63,255, 87, 76, 63,255, 89, 76, 61,255, + 94, 81, 62,255,108, 94, 73,255,115,100, 79,255,114,100, 78,255,129,114, 94,255,139,124,106,255,135,120,101,255,123,108, 86,255, +111, 96, 72,255,106, 92, 68,255,104, 90, 67,255,103, 89, 66,255,103, 89, 67,255,105, 91, 68,255,107, 93, 71,255,110, 96, 73,255, +112, 98, 76,255,115,101, 78,255,117,104, 80,255,120,105, 83,255,123,108, 86,255,125,110, 89,255,128,113, 92,255,129,114, 93,255, +131,116, 95,255,132,117, 97,255,132,117, 98,255,133,118, 98,255,132,118, 98,255,132,117, 98,255,131,116, 95,255,129,115, 93,255, +127,112, 92,255,124,110, 89,255,122,108, 86,255,119,104, 83,255,115,100, 78,255,111, 96, 74,255,106, 92, 69,255,100, 86, 64,255, + 94, 80, 58,255, 87, 74, 54,255, 80, 68, 49,255, 75, 62, 44,255, 68, 57, 40,255, 62, 51, 36,255, 55, 45, 31,255, 46, 37, 25,255, + 37, 29, 19,255, 31, 25, 16,255, 32, 26, 17,255, 32, 26, 17,255, 38, 31, 20,255, 58, 47, 33,255, 68, 57, 40,255, 71, 59, 42,255, + 69, 58, 41,255, 68, 57, 40,255, 66, 55, 38,255, 65, 54, 39,255, 64, 53, 38,255, 62, 52, 36,255, 61, 51, 36,255, 60, 50, 35,255, + 58, 48, 33,255, 59, 54, 47,255, 62, 62, 62,255, 60, 61, 61,255,110,102, 93,255,155,140,122,255,154,139,122,255,154,139,122,255, +154,139,122,255,154,139,121,255,154,139,121,255,154,139,122,255,155,140,122,255,156,141,124,255,156,141,124,255,157,142,125,255, +157,142,126,255,155,140,123,255,142,128,109,255,116,102, 84,255, 97, 85, 71,255, 91, 81, 70,255, 89, 79, 69,255, 89, 79, 68,255, + 88, 79, 68,255, 89, 79, 67,255, 90, 79, 67,255, 91, 79, 67,255, 93, 80, 66,255, 95, 83, 66,255,103, 90, 71,255,115,101, 79,255, +123,108, 87,255,117,103, 81,255,124,110, 89,255,144,130,112,255,148,133,116,255,138,124,105,255,129,114, 93,255,121,106, 84,255, +119,104, 81,255,121,107, 84,255,125,110, 89,255,129,114, 93,255,133,118, 98,255,137,122,102,255,140,126,106,255,144,129,110,255, +148,133,114,255,152,137,119,255,155,139,122,255,158,143,126,255,160,145,129,255,162,148,131,255,164,149,133,255,166,151,135,255, +167,152,136,255,167,152,137,255,168,153,138,255,168,153,138,255,168,153,137,255,168,153,137,255,167,152,137,255,166,151,136,255, +164,149,133,255,161,147,130,255,158,143,127,255,154,139,123,255,150,135,118,255,144,129,112,255,139,124,105,255,132,118, 98,255, +125,111, 90,255,118,103, 80,255,110, 96, 73,255,103, 88, 65,255, 95, 81, 59,255, 87, 74, 53,255, 76, 65, 46,255, 66, 55, 39,255, + 55, 45, 31,255, 42, 34, 22,255, 34, 28, 18,255, 34, 28, 18,255, 33, 27, 18,255, 40, 32, 21,255, 59, 48, 34,255, 67, 56, 40,255, + 69, 57, 41,255, 67, 56, 40,255, 65, 54, 38,255, 64, 53, 38,255, 64, 53, 37,255, 62, 52, 36,255, 61, 51, 35,255, 60, 50, 35,255, + 58, 48, 33,255, 59, 54, 47,255, 62, 62, 62,255, 60, 61, 61,255,111,103, 94,255,157,142,125,255,156,141,124,255,156,141,124,255, +156,141,124,255,157,142,124,255,157,142,125,255,158,143,126,255,159,143,127,255,160,145,128,255,160,145,129,255,161,146,129,255, +149,134,116,255,123,109, 91,255,102, 91, 75,255, 94, 83, 71,255, 92, 82, 70,255, 91, 81, 70,255, 92, 81, 70,255, 93, 82, 70,255, + 94, 82, 70,255, 96, 84, 70,255, 98, 85, 69,255,101, 87, 69,255,115,100, 81,255,129,114, 95,255,123,109, 88,255,115,101, 80,255, +123,110, 89,255,144,130,112,255,154,139,123,255,151,136,119,255,144,129,112,255,142,127,108,255,142,127,109,255,145,130,112,255, +149,134,116,255,153,138,121,255,156,142,124,255,160,146,129,255,164,149,134,255,168,153,138,255,171,156,141,255,174,159,144,255, +176,161,147,255,178,163,149,255,180,165,151,255,181,167,152,255,183,167,154,255,184,168,154,255,184,169,155,255,185,170,156,255, +185,170,156,255,186,171,157,255,186,170,157,255,185,170,157,255,185,170,156,255,184,169,155,255,183,168,154,255,182,167,152,255, +180,165,151,255,179,163,149,255,177,161,147,255,174,159,144,255,171,156,141,255,167,152,137,255,162,148,132,255,158,143,127,255, +151,136,120,255,143,128,110,255,133,118, 99,255,122,107, 86,255,112, 97, 74,255,103, 89, 65,255, 96, 82, 59,255, 86, 73, 53,255, + 75, 63, 45,255, 61, 51, 35,255, 47, 38, 26,255, 37, 30, 20,255, 34, 29, 18,255, 34, 28, 18,255, 44, 35, 24,255, 59, 49, 34,255, + 66, 55, 39,255, 67, 56, 39,255, 65, 54, 39,255, 64, 53, 38,255, 64, 53, 37,255, 62, 52, 36,255, 61, 51, 35,255, 60, 50, 35,255, + 58, 48, 33,255, 59, 54, 47,255, 62, 62, 62,255, 60, 60, 61,255,112,104, 95,255,159,144,127,255,158,143,126,255,158,143,126,255, +159,144,127,255,159,144,128,255,161,146,129,255,162,147,130,255,162,147,131,255,163,148,132,255,161,146,129,255,137,123,104,255, +109, 96, 79,255, 98, 87, 74,255, 94, 84, 72,255, 94, 83, 72,255, 94, 84, 72,255, 96, 85, 72,255, 97, 86, 72,255, 99, 87, 72,255, +102, 89, 72,255,105, 91, 72,255,117,102, 81,255,140,125,106,255,136,122,104,255,109, 95, 74,255,116,102, 81,255,144,130,112,255, +159,144,128,255,159,144,128,255,156,141,125,255,157,142,126,255,159,144,128,255,163,148,132,255,166,151,136,255,169,154,139,255, +172,157,142,255,175,160,145,255,177,162,147,255,180,164,150,255,181,166,151,255,183,168,154,255,184,169,155,255,185,170,156,255, +187,172,158,255,188,172,159,255,189,173,160,255,190,174,161,255,190,175,161,255,191,175,163,255,191,176,162,255,192,177,163,255, +193,177,163,255,192,177,164,255,194,178,164,255,193,178,165,255,193,178,165,255,194,178,165,255,194,178,165,255,193,178,165,255, +193,178,165,255,191,176,163,255,190,174,161,255,187,172,158,255,184,169,155,255,179,164,150,255,174,158,144,255,167,153,137,255, +161,147,131,255,157,142,126,255,151,136,119,255,141,126,109,255,128,113, 93,255,113, 98, 75,255,103, 88, 65,255, 94, 80, 59,255, + 82, 70, 51,255, 70, 58, 42,255, 58, 47, 33,255, 45, 36, 24,255, 36, 29, 19,255, 34, 28, 18,255, 35, 29, 19,255, 49, 39, 27,255, + 61, 50, 36,255, 65, 54, 38,255, 64, 54, 38,255, 63, 52, 36,255, 63, 53, 37,255, 62, 51, 36,255, 61, 51, 35,255, 61, 50, 35,255, + 58, 48, 33,255, 59, 54, 46,255, 62, 62, 62,255, 60, 60, 61,255,113,105, 96,255,161,146,129,255,161,146,129,255,162,147,130,255, +163,147,131,255,164,149,133,255,165,150,133,255,165,150,134,255,166,150,134,255,155,140,122,255,124,110, 92,255,102, 90, 74,255, + 98, 87, 74,255, 97, 86, 74,255, 97, 86, 74,255, 98, 87, 74,255,100, 88, 74,255,102, 90, 74,255,105, 92, 75,255,110, 96, 76,255, +122,107, 87,255,141,126,107,255,146,131,114,255,120,106, 87,255,109, 95, 73,255,134,120,101,255,160,145,129,255,167,152,136,255, +167,151,136,255,168,153,137,255,171,155,141,255,173,158,143,255,175,160,145,255,177,162,148,255,179,164,150,255,181,166,152,255, +182,167,153,255,184,169,155,255,185,170,156,255,187,171,157,255,187,172,158,255,187,173,159,255,188,172,159,255,188,173,159,255, +188,173,159,255,187,171,158,255,187,172,158,255,187,172,158,255,186,171,158,255,186,171,157,255,186,171,157,255,186,171,158,255, +187,171,158,255,187,172,158,255,188,172,159,255,188,173,160,255,189,174,160,255,190,175,162,255,191,176,163,255,193,177,164,255, +194,179,165,255,195,180,167,255,196,180,168,255,196,181,168,255,196,180,168,255,195,180,167,255,193,177,164,255,188,173,160,255, +182,166,152,255,172,157,143,255,162,148,132,255,152,138,121,255,143,128,110,255,130,115, 95,255,113, 98, 75,255,100, 85, 63,255, + 89, 75, 55,255, 77, 65, 46,255, 63, 53, 37,255, 50, 41, 28,255, 40, 32, 22,255, 34, 28, 18,255, 34, 27, 18,255, 36, 30, 20,255, + 51, 42, 29,255, 62, 51, 36,255, 63, 52, 36,255, 62, 51, 36,255, 61, 51, 35,255, 61, 50, 35,255, 61, 50, 35,255, 60, 50, 35,255, + 58, 48, 33,255, 59, 54, 46,255, 62, 62, 62,255, 60, 60, 61,255,114,106, 97,255,163,148,132,255,164,149,132,255,165,150,134,255, +166,151,135,255,167,152,137,255,169,154,138,255,167,152,136,255,145,130,112,255,114,101, 84,255,101, 90, 76,255, 99, 88, 75,255, + 99, 88, 75,255,101, 89, 76,255,102, 90, 76,255,105, 93, 77,255,108, 95, 77,255,112, 98, 78,255,124,109, 89,255,147,132,114,255, +151,136,119,255,124,110, 90,255,109, 94, 72,255,128,113, 93,255,154,140,124,255,169,154,139,255,173,158,143,255,174,159,145,255, +176,161,146,255,178,163,149,255,180,164,150,255,181,166,152,255,183,168,154,255,184,169,155,255,185,170,156,255,186,171,157,255, +186,170,157,255,185,170,156,255,185,170,156,255,184,169,155,255,184,169,155,255,184,169,155,255,183,168,155,255,184,169,155,255, +184,169,155,255,184,169,155,255,184,168,155,255,183,169,154,255,182,167,154,255,182,167,153,255,181,166,152,255,180,165,151,255, +180,164,151,255,180,165,151,255,181,166,152,255,182,167,154,255,184,169,155,255,186,171,157,255,186,171,158,255,187,172,160,255, +188,173,159,255,188,173,160,255,189,173,160,255,190,175,161,255,192,177,164,255,195,180,167,255,197,182,169,255,199,183,171,255, +198,182,170,255,195,179,166,255,188,173,159,255,178,164,149,255,165,150,134,255,147,133,115,255,128,113, 93,255,109, 94, 71,255, + 97, 83, 60,255, 85, 72, 53,255, 70, 59, 41,255, 56, 46, 32,255, 45, 36, 23,255, 36, 29, 19,255, 34, 27, 18,255, 35, 28, 18,255, + 40, 32, 22,255, 54, 45, 31,255, 61, 51, 35,255, 60, 50, 35,255, 60, 49, 34,255, 60, 50, 35,255, 60, 50, 35,255, 60, 49, 34,255, + 58, 48, 33,255, 59, 54, 46,255, 62, 62, 62,255, 60, 60, 61,255,115,108, 99,255,167,152,136,255,168,153,137,255,168,153,137,255, +168,153,138,255,170,155,139,255,165,150,134,255,134,120,101,255,108, 96, 79,255,103, 91, 77,255,102, 90, 77,255,103, 91, 77,255, +105, 93, 77,255,107, 94, 78,255,110, 97, 79,255,114,100, 79,255,123,108, 87,255,143,129,110,255,164,149,133,255,140,127,108,255, +105, 91, 69,255,116,102, 81,255,149,134,117,255,166,151,136,255,173,158,143,255,177,161,147,255,179,163,149,255,180,165,151,255, +182,167,152,255,183,168,154,255,183,168,154,255,185,169,156,255,185,170,156,255,185,170,156,255,183,168,154,255,183,168,154,255, +183,168,154,255,182,167,153,255,181,166,152,255,181,165,151,255,179,164,150,255,175,160,145,255,170,155,139,255,163,148,132,255, +155,140,123,255,146,132,114,255,139,124,105,255,132,117, 98,255,126,111, 91,255,122,107, 85,255,118,104, 82,255,116,101, 80,255, +114,100, 78,255,115, 99, 78,255,115,101, 79,255,116,102, 80,255,120,106, 85,255,125,110, 90,255,132,118, 98,255,143,128,109,255, +154,140,122,255,167,152,136,255,178,163,149,255,186,171,157,255,189,174,160,255,189,174,160,255,189,173,160,255,190,175,162,255, +194,179,166,255,198,183,170,255,201,186,173,255,199,184,170,255,191,175,163,255,181,165,151,255,166,151,137,255,143,129,111,255, +115,100, 78,255, 95, 81, 59,255, 83, 69, 50,255, 67, 56, 39,255, 51, 42, 28,255, 40, 32, 21,255, 33, 27, 18,255, 34, 28, 19,255, + 35, 29, 19,255, 45, 37, 24,255, 56, 46, 32,255, 60, 49, 34,255, 59, 49, 33,255, 59, 48, 34,255, 59, 48, 34,255, 59, 49, 34,255, + 57, 47, 33,255, 59, 54, 46,255, 62, 62, 62,255, 60, 60, 61,255,117,110,101,255,171,155,139,255,170,155,139,255,170,155,139,255, +170,155,139,255,161,146,129,255,129,115, 97,255,108, 95, 79,255,104, 92, 78,255,104, 93, 78,255,106, 93, 79,255,109, 96, 79,255, +111, 98, 80,255,116,101, 82,255,123,109, 87,255,140,125,105,255,161,146,129,255,158,143,127,255,119,106, 86,255,104, 90, 67,255, +131,116, 97,255,160,144,129,255,171,156,141,255,176,161,146,255,179,164,149,255,180,165,151,255,182,166,152,255,183,168,154,255, +183,168,154,255,183,168,154,255,183,168,154,255,183,168,154,255,182,167,153,255,181,166,152,255,180,165,151,255,177,162,147,255, +172,157,142,255,165,150,134,255,155,140,123,255,144,129,110,255,133,118, 98,255,123,108, 86,255,115,100, 77,255,108, 94, 71,255, +103, 90, 66,255,101, 86, 63,255, 98, 84, 62,255, 97, 83, 60,255, 96, 82, 59,255, 94, 81, 59,255, 93, 79, 58,255, 92, 78, 56,255, + 91, 77, 56,255, 89, 76, 55,255, 89, 75, 55,255, 87, 74, 54,255, 87, 74, 53,255, 86, 74, 53,255, 86, 73, 53,255, 87, 73, 52,255, + 88, 74, 53,255, 91, 79, 56,255, 98, 85, 63,255,110, 97, 76,255,128,114, 94,255,148,133,116,255,167,152,136,255,181,166,151,255, +188,173,160,255,192,177,164,255,195,179,166,255,198,182,169,255,202,187,174,255,201,186,174,255,195,179,166,255,179,164,150,255, +159,144,128,255,132,117, 98,255,103, 88, 67,255, 82, 69, 50,255, 66, 55, 39,255, 50, 40, 28,255, 38, 30, 19,255, 32, 26, 17,255, + 34, 28, 18,255, 36, 29, 19,255, 49, 39, 27,255, 58, 48, 33,255, 58, 48, 33,255, 56, 46, 32,255, 56, 46, 32,255, 57, 47, 32,255, + 57, 47, 32,255, 59, 54, 46,255, 62, 62, 62,255, 60, 60, 61,255,119,111,103,255,171,155,140,255,169,154,138,255,170,155,140,255, +157,142,125,255,124,110, 91,255,109, 96, 80,255,107, 95, 79,255,107, 95, 80,255,109, 96, 81,255,112, 99, 81,255,116,102, 82,255, +122,108, 86,255,135,120,101,255,158,143,126,255,170,155,141,255,138,124,105,255,107, 93, 71,255,115,102, 80,255,144,130,113,255, +165,150,135,255,173,158,143,255,177,162,148,255,180,164,150,255,180,165,151,255,182,167,153,255,181,167,153,255,182,167,153,255, +182,167,153,255,182,167,153,255,181,166,152,255,179,164,150,255,173,158,144,255,164,150,134,255,153,138,122,255,141,126,108,255, +130,115, 94,255,120,106, 82,255,114, 99, 75,255,109, 95, 71,255,107, 92, 68,255,105, 90, 66,255,103, 89, 65,255,102, 87, 64,255, +101, 86, 63,255, 99, 85, 63,255, 99, 85, 61,255, 98, 83, 60,255, 97, 83, 60,255, 96, 82, 59,255, 95, 81, 59,255, 94, 80, 57,255, + 93, 79, 57,255, 91, 78, 56,255, 90, 77, 55,255, 89, 75, 54,255, 87, 74, 53,255, 85, 72, 52,255, 84, 71, 51,255, 82, 70, 51,255, + 81, 68, 49,255, 79, 67, 48,255, 78, 66, 48,255, 78, 66, 47,255, 78, 66, 47,255, 81, 69, 49,255, 89, 75, 55,255,102, 88, 69,255, +122,107, 88,255,147,132,115,255,175,160,145,255,196,180,168,255,201,186,173,255,199,184,171,255,199,184,171,255,202,187,174,255, +199,183,171,255,180,165,150,255,147,132,114,255,112, 97, 76,255, 87, 73, 53,255, 67, 56, 39,255, 50, 41, 27,255, 37, 30, 19,255, + 33, 27, 17,255, 34, 28, 18,255, 38, 31, 21,255, 53, 43, 29,255, 59, 48, 34,255, 56, 45, 31,255, 55, 45, 31,255, 55, 45, 31,255, + 56, 46, 32,255, 59, 53, 46,255, 62, 62, 62,255, 60, 60, 61,255,117,109,101,255,168,153,137,255,168,153,138,255,156,141,124,255, +122,108, 89,255,110, 98, 81,255,109, 96, 80,255,110, 97, 81,255,112, 99, 82,255,116,102, 83,255,121,106, 85,255,131,116, 95,255, +148,133,115,255,171,156,141,255,168,153,138,255,120,106, 85,255,104, 90, 67,255,125,111, 91,255,154,139,123,255,168,153,138,255, +174,159,144,255,177,162,148,255,180,164,150,255,180,165,151,255,180,165,151,255,182,166,152,255,181,165,151,255,181,166,152,255, +179,163,149,255,174,159,144,255,164,149,133,255,152,137,120,255,140,125,106,255,129,114, 93,255,122,107, 84,255,116,101, 78,255, +114, 99, 75,255,112, 97, 73,255,112, 97, 73,255,112, 97, 73,255,112, 97, 74,255,114, 99, 76,255,116,101, 78,255,120,105, 82,255, +124,109, 87,255,128,113, 93,255,133,118, 97,255,136,122,103,255,140,126,106,255,143,128,110,255,145,130,112,255,145,130,112,255, +143,128,110,255,141,126,108,255,138,123,104,255,132,118, 98,255,126,112, 91,255,119,105, 84,255,112, 98, 76,255,105, 91, 69,255, + 97, 84, 62,255, 92, 79, 58,255, 87, 74, 54,255, 83, 70, 51,255, 79, 67, 48,255, 77, 65, 47,255, 74, 62, 45,255, 73, 61, 44,255, + 74, 62, 45,255, 79, 67, 48,255, 89, 76, 55,255,112, 99, 77,255,153,138,122,255,191,176,162,255,203,187,175,255,200,184,172,255, +199,184,171,255,205,189,177,255,202,187,175,255,173,159,144,255,126,111, 91,255, 91, 78, 57,255, 71, 59, 41,255, 51, 42, 28,255, + 37, 30, 19,255, 33, 27, 17,255, 36, 30, 20,255, 42, 33, 22,255, 56, 46, 32,255, 56, 46, 32,255, 54, 44, 30,255, 53, 43, 31,255, + 54, 44, 30,255, 58, 53, 45,255, 62, 62, 62,255, 60, 60, 61,255,116,108, 99,255,167,152,136,255,156,141,124,255,125,111, 92,255, +112, 99, 82,255,111, 98, 82,255,112, 99, 82,255,116,101, 83,255,120,105, 85,255,128,113, 92,255,140,125,106,255,161,146,129,255, +178,162,148,255,156,141,125,255,111, 96, 75,255,108, 94, 71,255,134,120,101,255,158,143,127,255,168,153,138,255,174,159,144,255, +177,162,148,255,179,164,149,255,180,165,150,255,181,165,151,255,181,165,151,255,179,164,150,255,176,161,146,255,168,153,138,255, +157,143,126,255,146,131,113,255,136,121,100,255,129,114, 93,255,125,110, 88,255,124,109, 87,255,124,109, 88,255,127,112, 91,255, +131,116, 95,255,136,122,101,255,143,128,109,255,149,135,116,255,155,140,123,255,160,146,130,255,163,149,133,255,167,152,138,255, +170,156,142,255,172,159,144,255,174,161,147,255,175,162,149,255,178,164,151,255,179,166,153,255,180,167,153,255,180,167,155,255, +181,167,155,255,182,168,156,255,182,168,156,255,183,169,156,255,182,167,154,255,181,167,153,255,177,162,148,255,171,156,142,255, +164,149,133,255,152,138,120,255,141,125,107,255,126,111, 91,255,112, 97, 77,255, 99, 85, 65,255, 88, 75, 54,255, 80, 68, 48,255, + 76, 64, 46,255, 72, 60, 43,255, 70, 59, 42,255, 71, 59, 42,255, 75, 63, 44,255, 94, 81, 61,255,134,121,103,255,175,160,145,255, +198,183,170,255,203,187,176,255,203,188,175,255,208,193,181,255,200,184,172,255,158,143,127,255,107, 93, 73,255, 73, 60, 42,255, + 51, 42, 28,255, 38, 30, 19,255, 33, 27, 18,255, 35, 30, 19,255, 47, 38, 26,255, 57, 47, 33,255, 54, 45, 31,255, 52, 42, 29,255, + 52, 43, 29,255, 57, 52, 45,255, 62, 62, 62,255, 60, 60, 61,255,115,107, 99,255,158,143,125,255,128,113, 94,255,114,101, 82,255, +113,100, 83,255,115,102, 83,255,118,104, 84,255,124,109, 89,255,133,119, 99,255,149,134,116,255,172,156,141,255,180,165,150,255, +140,125,107,255,105, 91, 69,255,114,100, 78,255,141,127,108,255,158,144,128,255,168,153,138,255,173,158,144,255,176,161,147,255, +179,164,149,255,180,165,151,255,180,165,151,255,179,164,150,255,174,159,144,255,165,150,134,255,154,139,122,255,144,130,111,255, +137,123,103,255,134,120,100,255,134,119, 99,255,136,121,102,255,140,125,106,255,148,134,116,255,159,143,126,255,167,152,136,255, +169,155,140,255,165,151,137,255,157,144,130,255,152,139,124,255,154,140,125,255,158,144,129,255,162,148,133,255,168,153,139,255, +172,158,144,255,175,160,146,255,177,163,149,255,178,164,150,255,180,165,152,255,180,166,152,255,181,167,152,255,181,166,152,255, +182,167,153,255,182,167,154,255,183,168,154,255,184,168,155,255,184,169,156,255,184,170,156,255,185,170,157,255,184,170,156,255, +183,169,155,255,183,168,155,255,183,168,154,255,182,167,153,255,179,164,151,255,172,157,142,255,157,142,126,255,134,120,101,255, +109, 95, 74,255, 90, 76, 55,255, 79, 67, 47,255, 74, 62, 44,255, 70, 59, 41,255, 68, 57, 40,255, 72, 60, 41,255, 86, 73, 54,255, +119,105, 86,255,168,152,137,255,204,189,176,255,206,191,179,255,205,189,177,255,207,192,179,255,191,175,162,255,136,122,104,255, + 79, 66, 47,255, 51, 42, 28,255, 36, 29, 19,255, 34, 28, 18,255, 37, 31, 20,255, 51, 42, 29,255, 56, 46, 32,255, 52, 42, 29,255, + 51, 42, 28,255, 57, 51, 45,255, 62, 62, 62,255, 60, 61, 61,255,110,102, 94,255,134,119, 99,255,117,103, 84,255,115,102, 83,255, +117,103, 84,255,121,106, 86,255,128,113, 93,255,140,125,106,255,157,142,124,255,178,163,148,255,180,165,151,255,132,118, 98,255, +104, 89, 66,255,120,105, 84,255,144,130,113,255,158,144,128,255,168,153,138,255,173,158,144,255,176,161,147,255,179,164,150,255, +180,165,151,255,179,164,150,255,175,160,145,255,166,150,135,255,155,140,123,255,147,133,114,255,142,128,109,255,142,127,108,255, +145,130,111,255,150,134,117,255,158,143,126,255,167,152,136,255,176,160,146,255,171,157,143,255,153,141,127,255,139,125,109,255, +143,131,115,255,153,139,123,255,168,153,138,255,178,163,149,255,182,167,153,255,183,168,154,255,182,167,153,255,179,164,150,255, +175,160,146,255,172,157,142,255,170,155,140,255,167,152,137,255,165,150,134,255,164,149,133,255,162,147,131,255,162,147,131,255, +162,147,131,255,163,148,132,255,164,149,134,255,167,152,137,255,170,155,140,255,175,159,146,255,180,164,150,255,185,169,155,255, +190,174,161,255,192,176,163,255,193,178,165,255,191,176,162,255,188,173,160,255,188,172,159,255,191,175,162,255,194,179,167,255, +191,176,162,255,170,155,141,255,137,122,104,255,106, 91, 71,255, 86, 73, 54,255, 76, 64, 46,255, 70, 59, 42,255, 67, 56, 39,255, + 69, 58, 41,255, 82, 69, 50,255,123,108, 89,255,185,169,156,255,208,192,180,255,206,190,178,255,208,193,180,255,209,193,181,255, +165,151,135,255, 92, 79, 60,255, 53, 43, 30,255, 36, 29, 19,255, 35, 29, 19,255, 40, 33, 22,255, 55, 45, 31,255, 53, 43, 30,255, + 49, 40, 27,255, 56, 51, 44,255, 62, 62, 62,255, 61, 61, 61,255, 99, 91, 81,255,122,107, 87,255,118,104, 85,255,119,105, 85,255, +124,109, 88,255,133,118, 98,255,145,130,112,255,163,148,132,255,183,167,153,255,175,160,146,255,126,112, 92,255,103, 89, 66,255, +122,107, 87,255,144,130,113,255,158,144,128,255,167,153,138,255,173,158,144,255,177,162,147,255,179,164,150,255,180,164,150,255, +176,161,147,255,169,154,138,255,159,144,128,255,152,137,120,255,149,134,116,255,151,135,118,255,156,141,124,255,165,150,135,255, +172,156,142,255,168,153,139,255,159,145,130,255,150,137,122,255,141,128,111,255,149,135,120,255,163,148,133,255,177,163,148,255, +183,168,154,255,182,167,153,255,178,163,148,255,173,157,142,255,167,152,137,255,163,148,131,255,159,144,127,255,155,140,124,255, +152,137,121,255,150,135,117,255,148,133,115,255,146,131,113,255,144,129,111,255,142,128,109,255,141,126,108,255,139,124,106,255, +138,123,105,255,137,123,104,255,136,122,104,255,137,122,103,255,137,123,104,255,138,124,105,255,140,125,107,255,144,129,112,255, +149,135,117,255,157,142,126,255,166,151,136,255,176,161,146,255,186,170,156,255,192,177,164,255,195,180,167,255,196,181,168,255, +197,182,169,255,200,184,172,255,200,185,173,255,188,173,160,255,160,145,128,255,124,110, 91,255, 95, 81, 61,255, 77, 65, 46,255, + 69, 57, 40,255, 65, 54, 39,255, 68, 56, 39,255, 89, 76, 57,255,148,133,117,255,199,183,170,255,211,195,184,255,209,193,181,255, +214,198,186,255,185,170,156,255,112, 98, 80,255, 56, 45, 30,255, 35, 29, 19,255, 36, 30, 20,255, 47, 39, 27,255, 54, 44, 31,255, + 50, 41, 28,255, 55, 50, 44,255, 62, 62, 62,255, 61, 61, 61,255, 94, 86, 75,255,121,107, 86,255,121,107, 86,255,127,112, 91,255, +137,122,102,255,150,135,117,255,168,153,136,255,187,172,158,255,175,160,145,255,123,108, 88,255,105, 91, 68,255,123,109, 89,255, +144,129,113,255,158,143,127,255,167,152,138,255,173,158,144,255,178,163,148,255,180,165,151,255,179,164,149,255,173,157,143,255, +164,149,133,255,157,142,125,255,156,141,124,255,158,143,127,255,166,151,135,255,178,162,147,255,180,165,152,255,154,140,125,255, +132,118,101,255,141,127,111,255,158,144,129,255,173,158,143,255,181,166,152,255,182,167,152,255,177,162,148,255,172,157,142,255, +167,152,137,255,162,147,132,255,159,144,127,255,156,141,124,255,154,139,122,255,152,137,120,255,151,136,119,255,149,134,117,255, +149,134,117,255,148,133,115,255,147,132,115,255,147,132,115,255,146,131,113,255,144,130,112,255,144,129,111,255,142,127,110,255, +141,126,108,255,139,125,106,255,137,122,104,255,135,120,102,255,133,118, 99,255,131,116, 97,255,129,114, 95,255,127,113, 93,255, +126,112, 91,255,127,112, 91,255,128,114, 93,255,133,117, 99,255,139,125,106,255,150,136,119,255,164,149,133,255,180,165,150,255, +194,178,165,255,201,186,174,255,204,188,176,255,203,188,175,255,203,187,175,255,197,182,169,255,174,159,144,255,133,119,100,255, + 94, 81, 60,255, 75, 64, 45,255, 67, 55, 39,255, 63, 53, 37,255, 72, 60, 42,255,109, 95, 77,255,179,163,149,255,216,200,188,255, +212,197,185,255,214,198,186,255,203,187,175,255,134,120,103,255, 57, 47, 32,255, 35, 28, 19,255, 39, 33, 23,255, 53, 43, 29,255, + 52, 42, 29,255, 55, 50, 44,255, 62, 62, 62,255, 61, 61, 61,255, 93, 85, 74,255,124,109, 88,255,129,114, 94,255,140,125,106,255, +153,138,121,255,171,156,140,255,190,174,160,255,177,161,147,255,123,108, 88,255,105, 91, 68,255,123,108, 88,255,143,128,111,255, +157,143,127,255,168,153,138,255,174,159,144,255,179,163,149,255,180,165,151,255,178,162,148,255,171,156,140,255,164,149,133,255, +161,146,130,255,164,149,133,255,172,157,141,255,180,165,151,255,178,163,149,255,147,134,119,255,120,108, 90,255,142,129,112,255, +175,160,146,255,186,170,157,255,184,169,155,255,178,162,148,255,172,157,142,255,167,152,137,255,164,149,133,255,161,146,130,255, +159,144,128,255,158,143,126,255,157,142,126,255,157,142,126,255,158,143,126,255,158,143,126,255,158,143,127,255,159,144,128,255, +161,146,130,255,162,147,131,255,164,149,133,255,164,149,134,255,164,150,134,255,165,150,136,255,165,150,135,255,164,149,133,255, +164,149,133,255,162,147,132,255,159,144,128,255,156,142,125,255,153,138,121,255,148,134,117,255,144,130,112,255,140,125,106,255, +135,120,102,255,130,116, 96,255,126,111, 91,255,122,108, 87,255,121,106, 85,255,121,106, 85,255,124,110, 89,255,132,117, 98,255, +145,131,113,255,166,151,135,255,187,172,158,255,202,186,174,255,207,191,179,255,206,190,178,255,207,192,180,255,204,188,176,255, +173,159,144,255,124,108, 89,255, 88, 75, 55,255, 72, 60, 42,255, 65, 54, 38,255, 64, 53, 37,255, 82, 70, 51,255,157,142,125,255, +212,196,185,255,214,198,186,255,214,198,187,255,214,199,186,255,146,132,115,255, 59, 48, 34,255, 35, 29, 20,255, 46, 39, 27,255, + 53, 43, 30,255, 55, 50, 44,255, 62, 62, 62,255, 61, 61, 61,255, 95, 88, 77,255,133,118, 98,255,143,128,110,255,156,141,124,255, +173,158,142,255,191,175,161,255,178,163,148,255,124,110, 89,255,104, 90, 66,255,121,107, 86,255,140,127,108,255,156,141,125,255, +167,152,137,255,174,159,144,255,179,164,150,255,180,165,151,255,177,162,146,255,171,155,140,255,167,152,136,255,169,154,139,255, +178,162,147,255,182,167,152,255,165,151,136,255,139,124,108,255,124,111, 92,255,147,132,116,255,179,164,150,255,188,173,158,255, +183,167,153,255,176,161,146,255,170,155,140,255,167,152,136,255,164,149,134,255,163,148,132,255,163,148,131,255,163,148,132,255, +164,149,133,255,165,150,134,255,168,153,137,255,170,155,140,255,173,158,143,255,175,160,146,255,178,163,149,255,179,164,150,255, +180,165,152,255,182,167,152,255,182,167,153,255,183,168,154,255,183,168,155,255,184,169,155,255,184,169,155,255,185,170,156,255, +185,170,156,255,185,170,156,255,185,170,156,255,185,169,156,255,183,168,155,255,181,166,152,255,178,163,149,255,174,159,144,255, +167,153,137,255,160,146,130,255,152,137,121,255,143,129,111,255,135,120,101,255,127,112, 92,255,121,106, 85,255,117,102, 80,255, +117,102, 80,255,122,107, 86,255,135,120,101,255,156,142,125,255,182,167,152,255,201,186,173,255,209,194,182,255,211,195,183,255, +213,197,185,255,201,185,173,255,159,144,128,255,110, 95, 75,255, 79, 67, 47,255, 66, 55, 39,255, 61, 51, 36,255, 72, 60, 41,255, +135,121,103,255,205,189,177,255,217,201,189,255,217,201,189,255,218,202,190,255,152,137,121,255, 60, 50, 34,255, 40, 34, 25,255, + 52, 44, 31,255, 57, 51, 44,255, 62, 62, 62,255, 61, 61, 61,255,101, 94, 83,255,146,131,113,255,158,143,126,255,175,159,144,255, +192,176,163,255,184,168,154,255,128,114, 94,255,107, 92, 68,255,118,104, 83,255,137,123,105,255,155,140,124,255,166,152,137,255, +174,160,145,255,181,165,151,255,181,166,151,255,178,162,148,255,172,157,142,255,173,158,143,255,179,164,149,255,187,171,158,255, +168,153,139,255,122,109, 91,255,125,112, 95,255,159,144,128,255,182,167,153,255,187,172,158,255,181,166,152,255,176,161,146,255, +172,156,141,255,169,154,139,255,168,152,137,255,166,151,137,255,168,152,137,255,169,154,139,255,172,157,141,255,175,160,145,255, +179,163,149,255,181,166,152,255,182,167,153,255,181,166,152,255,180,165,151,255,178,163,149,255,176,161,147,255,175,161,146,255, +175,160,145,255,174,160,145,255,175,160,145,255,174,159,145,255,175,160,146,255,176,161,147,255,177,162,148,255,178,163,149,255, +179,164,151,255,181,166,153,255,183,168,154,255,185,170,157,255,187,172,158,255,189,173,160,255,191,175,162,255,192,176,163,255, +191,176,163,255,190,175,161,255,187,171,158,255,180,165,152,255,172,157,142,255,160,145,130,255,148,133,116,255,135,120,101,255, +123,109, 88,255,116,102, 79,255,114, 99, 75,255,116,102, 80,255,129,115, 96,255,154,139,123,255,184,169,156,255,207,191,179,255, +214,198,186,255,214,199,187,255,212,196,185,255,189,174,159,255,134,119,101,255, 87, 74, 54,255, 68, 57, 40,255, 62, 51, 36,255, + 69, 58, 41,255,119,105, 86,255,205,188,176,255,220,204,193,255,217,201,189,255,217,201,189,255,147,133,117,255, 52, 42, 30,255, + 41, 35, 25,255, 58, 52, 45,255, 62, 62, 62,255, 60, 61, 61,255,108,100, 90,255,160,144,127,255,174,159,143,255,192,177,163,255, +190,174,161,255,137,123,104,255,106, 92, 68,255,115,101, 78,255,134,119,101,255,153,138,122,255,166,151,135,255,175,160,145,255, +181,166,152,255,183,167,153,255,179,163,149,255,176,161,146,255,179,164,149,255,185,169,155,255,179,164,150,255,139,126,109,255, +107, 94, 76,255,151,137,122,255,186,170,157,255,189,174,160,255,183,167,153,255,178,163,148,255,174,158,143,255,173,157,142,255, +172,157,141,255,172,157,141,255,174,158,143,255,177,161,146,255,179,163,149,255,182,166,153,255,184,169,155,255,182,167,153,255, +178,163,149,255,174,159,145,255,169,154,140,255,167,152,137,255,164,150,134,255,164,149,134,255,164,149,134,255,165,150,135,255, +165,151,136,255,166,151,137,255,168,154,139,255,170,155,140,255,172,157,142,255,173,158,143,255,174,159,145,255,176,161,147,255, +177,162,148,255,178,163,150,255,181,166,152,255,182,167,153,255,184,168,155,255,186,171,158,255,188,173,159,255,190,175,161,255, +193,177,164,255,195,180,167,255,197,181,169,255,197,182,169,255,196,180,167,255,192,176,163,255,185,169,156,255,172,157,143,255, +158,143,127,255,141,126,108,255,125,110, 90,255,115,101, 77,255,110, 96, 72,255,115,100, 77,255,131,117, 98,255,162,148,133,255, +197,181,168,255,214,198,187,255,217,201,189,255,218,202,190,255,207,191,179,255,154,139,122,255, 97, 83, 63,255, 71, 60, 42,255, + 62, 51, 36,255, 66, 55, 38,255,113, 99, 80,255,204,188,176,255,220,204,192,255,218,202,190,255,218,202,190,255,127,113, 96,255, + 43, 35, 23,255, 52, 48, 43,255, 62, 62, 62,255, 60, 60, 61,255,114,106, 98,255,175,160,144,255,191,176,162,255,193,178,164,255, +148,133,116,255,110, 96, 72,255,112, 98, 75,255,130,115, 96,255,149,134,118,255,163,149,134,255,174,160,145,255,182,166,152,255, +183,168,154,255,181,166,151,255,181,166,151,255,185,170,156,255,183,169,155,255,150,135,120,255,114,101, 83,255,129,115, 97,255, +177,162,148,255,191,176,162,255,187,171,157,255,181,166,151,255,177,162,147,255,175,160,145,255,175,160,145,255,176,161,146,255, +179,163,149,255,181,166,152,255,184,169,154,255,184,169,155,255,181,166,152,255,174,159,146,255,167,153,138,255,162,147,132,255, +158,144,128,255,157,143,127,255,157,143,127,255,159,145,129,255,161,147,131,255,164,149,134,255,167,152,137,255,169,154,139,255, +171,156,141,255,173,158,143,255,174,159,145,255,176,161,147,255,178,162,149,255,179,164,150,255,180,165,151,255,181,166,152,255, +183,168,154,255,184,169,156,255,185,170,157,255,186,171,159,255,188,173,160,255,189,174,160,255,190,175,162,255,192,176,163,255, +193,179,165,255,195,179,167,255,197,182,169,255,199,183,171,255,201,185,173,255,202,186,174,255,202,186,173,255,199,183,170,255, +191,176,163,255,179,164,150,255,162,148,132,255,142,128,110,255,124,109, 88,255,112, 97, 74,255,109, 94, 70,255,118,103, 81,255, +144,130,111,255,182,167,153,255,211,195,183,255,219,203,192,255,220,204,192,255,213,197,186,255,168,153,137,255,105, 91, 71,255, + 71, 60, 42,255, 62, 51, 36,255, 67, 56, 39,255,123,109, 90,255,209,193,181,255,221,205,194,255,221,205,193,255,215,199,187,255, +107, 95, 78,255, 49, 45, 39,255, 62, 62, 62,255, 60, 60, 60,255,122,114,106,255,191,175,160,255,197,182,169,255,162,147,131,255, +117,103, 82,255,110, 96, 73,255,125,110, 90,255,145,131,114,255,161,146,131,255,174,159,144,255,181,166,152,255,185,169,155,255, +184,168,154,255,185,170,155,255,188,173,159,255,172,157,143,255,116,103, 84,255,112, 98, 80,255,163,148,133,255,189,174,160,255, +190,174,160,255,184,169,154,255,181,166,151,255,179,164,149,255,179,164,149,255,180,165,149,255,182,167,153,255,185,170,156,255, +187,172,158,255,183,168,154,255,175,160,146,255,165,151,135,255,157,143,127,255,153,139,123,255,153,138,122,255,155,140,124,255, +157,143,127,255,161,146,130,255,164,149,134,255,167,153,138,255,170,155,140,255,172,157,143,255,174,159,145,255,177,162,147,255, +178,163,148,255,179,164,150,255,180,165,151,255,181,166,152,255,182,167,153,255,182,167,153,255,182,167,153,255,183,168,155,255, +184,169,155,255,185,170,156,255,187,171,158,255,188,172,159,255,189,174,160,255,191,175,163,255,192,177,164,255,194,178,166,255, +196,181,168,255,197,182,169,255,199,183,171,255,200,184,172,255,202,186,174,255,203,187,175,255,205,189,177,255,206,190,178,255, +206,190,178,255,203,187,175,255,195,180,166,255,181,166,152,255,162,147,131,255,138,124,105,255,118,103, 81,255,108, 93, 69,255, +111, 96, 72,255,130,115, 95,255,168,154,139,255,207,191,179,255,221,205,193,255,222,206,194,255,217,201,189,255,179,164,150,255, +108, 95, 75,255, 72, 60, 42,255, 61, 50, 35,255, 70, 59, 41,255,138,124,106,255,221,205,194,255,222,206,194,255,223,207,196,255, +203,187,175,255, 87, 81, 72,255, 61, 61, 61,255, 60, 60, 60,255,129,121,114,255,201,185,172,255,179,163,149,255,129,115, 95,255, +111, 96, 73,255,118,103, 82,255,140,126,108,255,158,143,128,255,172,157,142,255,181,166,152,255,186,171,157,255,187,171,157,255, +188,172,158,255,186,171,157,255,155,142,126,255,101, 88, 70,255,124,111, 93,255,181,166,152,255,193,177,164,255,189,173,160,255, +184,169,155,255,183,167,153,255,182,167,152,255,182,167,153,255,185,170,156,255,187,172,158,255,187,172,158,255,181,166,152,255, +170,155,140,255,159,145,129,255,151,137,120,255,149,135,118,255,151,137,120,255,154,140,124,255,159,144,129,255,163,148,133,255, +167,152,138,255,171,156,141,255,173,158,143,255,176,161,146,255,177,162,148,255,178,163,149,255,179,164,150,255,179,164,150,255, +178,163,149,255,178,163,149,255,176,161,147,255,175,160,145,255,173,158,144,255,173,158,143,255,171,156,142,255,171,157,141,255, +172,157,142,255,172,157,142,255,173,158,144,255,175,160,146,255,177,162,148,255,180,165,151,255,184,169,155,255,187,172,159,255, +191,176,163,255,195,179,166,255,198,182,170,255,200,185,172,255,202,188,174,255,204,189,176,255,206,191,178,255,207,191,179,255, +209,193,181,255,210,194,182,255,209,193,181,255,204,188,176,255,194,179,166,255,176,161,147,255,152,137,121,255,127,112, 91,255, +109, 95, 71,255,107, 92, 69,255,121,106, 85,255,160,145,130,255,204,188,176,255,222,206,194,255,224,208,196,255,219,203,191,255, +179,163,149,255,105, 91, 71,255, 69, 58, 41,255, 58, 48, 34,255, 77, 65, 46,255,165,150,134,255,225,209,198,255,221,205,193,255, +225,209,197,255,141,133,127,255, 60, 60, 60,255, 60, 60, 60,255,135,126,120,255,192,176,163,255,146,131,114,255,114,100, 77,255, +114, 99, 77,255,133,119,100,255,153,138,122,255,169,154,139,255,180,165,151,255,187,172,158,255,188,173,159,255,190,175,161,255, +182,166,152,255,137,123,107,255, 97, 84, 65,255,139,125,108,255,189,174,161,255,194,179,165,255,189,174,160,255,186,170,156,255, +185,170,155,255,186,170,156,255,187,172,158,255,189,174,160,255,188,173,159,255,180,165,151,255,167,153,138,255,154,140,125,255, +148,134,116,255,147,133,116,255,150,136,119,255,155,140,124,255,160,145,130,255,165,150,135,255,169,154,139,255,173,158,143,255, +176,161,146,255,177,163,148,255,178,163,149,255,179,163,149,255,178,163,148,255,176,161,146,255,173,158,144,255,171,156,141,255, +168,153,137,255,164,149,134,255,161,146,130,255,158,143,127,255,154,139,124,255,152,137,120,255,150,135,118,255,148,133,116,255, +147,132,114,255,147,132,114,255,147,132,115,255,148,133,116,255,151,136,119,255,154,139,123,255,159,144,128,255,164,150,135,255, +171,156,141,255,178,163,148,255,184,170,156,255,192,177,163,255,197,182,169,255,203,187,175,255,206,190,178,255,208,192,180,255, +210,194,182,255,211,195,183,255,212,196,184,255,213,197,185,255,211,195,183,255,203,187,175,255,187,172,159,255,163,149,134,255, +135,120,101,255,112, 98, 75,255,105, 90, 66,255,116,101, 79,255,154,139,123,255,202,186,174,255,223,207,195,255,225,209,197,255, +219,203,192,255,171,156,141,255, 98, 85, 64,255, 64, 54, 37,255, 58, 48, 33,255, 96, 83, 64,255,196,180,167,255,226,210,198,255, +223,206,195,255,147,139,133,255, 59, 60, 60,255, 60, 60, 60,255,131,124,117,255,166,151,136,255,124,110, 88,255,111, 97, 74,255, +127,112, 92,255,147,132,115,255,165,150,135,255,179,164,149,255,187,172,158,255,191,175,161,255,192,176,162,255,179,163,149,255, +120,107, 89,255, 90, 78, 59,255,153,138,122,255,191,176,163,255,194,179,165,255,190,175,161,255,188,172,158,255,188,172,158,255, +189,173,160,255,191,175,162,255,190,175,161,255,183,168,154,255,167,152,137,255,152,137,120,255,145,130,113,255,145,130,113,255, +150,135,118,255,155,140,124,255,160,146,130,255,166,152,136,255,171,156,141,255,174,159,145,255,177,162,148,255,178,163,149,255, +179,164,149,255,178,163,148,255,176,160,146,255,172,157,142,255,169,154,139,255,165,150,134,255,160,146,129,255,156,141,124,255, +150,136,119,255,146,131,114,255,141,127,108,255,137,122,104,255,133,118, 99,255,129,115, 95,255,126,112, 90,255,123,108, 87,255, +121,106, 84,255,119,104, 82,255,118,104, 82,255,118,103, 81,255,118,104, 82,255,120,106, 84,255,124,109, 88,255,129,114, 94,255, +136,121,103,255,144,130,113,255,155,140,123,255,165,151,136,255,177,162,148,255,188,173,159,255,197,181,169,255,204,189,176,255, +209,193,181,255,211,196,184,255,213,198,186,255,215,199,187,255,215,199,188,255,215,199,187,255,210,194,182,255,195,180,167,255, +171,157,142,255,142,128,109,255,115,100, 78,255,104, 89, 65,255,112, 98, 76,255,153,138,122,255,205,190,177,255,225,209,198,255, +226,210,199,255,217,201,190,255,160,145,129,255, 87, 74, 54,255, 60, 49, 34,255, 63, 52, 37,255,137,123,105,255,222,205,194,255, +227,211,199,255,144,136,130,255, 60, 60, 60,255, 60, 60, 61,255,120,112,105,255,141,126,107,255,114, 99, 78,255,119,103, 82,255, +139,124,106,255,158,144,129,255,175,160,146,255,186,171,157,255,191,176,162,255,191,177,163,255,176,161,146,255,117,104, 86,255, + 89, 77, 59,255,160,146,131,255,196,180,167,255,195,179,166,255,192,176,162,255,190,175,161,255,190,175,161,255,192,176,162,255, +192,177,163,255,188,173,159,255,174,159,144,255,154,139,123,255,142,128,110,255,142,128,110,255,147,132,115,255,154,139,123,255, +159,145,129,255,166,151,136,255,171,156,141,255,176,161,146,255,178,163,149,255,180,165,151,255,179,164,149,255,178,163,148,255, +174,159,144,255,171,156,140,255,166,151,135,255,161,146,130,255,156,141,125,255,151,136,119,255,145,131,112,255,140,125,107,255, +135,120,101,255,130,115, 95,255,125,111, 89,255,120,105, 83,255,116,101, 78,255,112, 97, 73,255,110, 95, 70,255,107, 92, 68,255, +105, 90, 66,255,104, 89, 66,255,102, 88, 64,255,101, 87, 64,255,100, 86, 63,255,100, 86, 63,255,101, 86, 63,255,101, 87, 64,255, +103, 90, 66,255,108, 93, 71,255,115,100, 78,255,126,111, 91,255,140,125,107,255,155,141,124,255,171,156,142,255,186,172,158,255, +199,183,170,255,208,192,180,255,213,197,185,255,215,199,188,255,217,201,190,255,218,202,191,255,218,202,191,255,214,198,186,255, +201,185,172,255,176,161,147,255,145,130,113,255,114,100, 78,255,103, 88, 65,255,112, 98, 76,255,159,145,128,255,212,196,184,255, +227,211,200,255,228,212,200,255,210,194,181,255,136,121,103,255, 74, 62, 45,255, 55, 45, 31,255, 83, 71, 54,255,192,176,162,255, +231,214,203,255,146,138,132,255, 59, 60, 60,255, 60, 61, 61,255,107, 99, 90,255,124,110, 89,255,113, 98, 75,255,130,115, 96,255, +151,136,120,255,170,155,140,255,183,168,154,255,192,176,163,255,193,177,163,255,174,159,144,255,112, 97, 79,255, 87, 74, 56,255, +155,140,125,255,195,180,167,255,197,182,167,255,194,178,165,255,193,177,163,255,193,178,164,255,194,179,165,255,193,177,164,255, +182,167,153,255,160,146,130,255,142,129,111,255,138,124,106,255,143,129,111,255,150,136,119,255,157,143,127,255,164,150,134,255, +171,156,141,255,176,161,146,255,179,164,150,255,180,165,151,255,180,165,150,255,178,163,148,255,175,160,145,255,170,155,140,255, +166,151,136,255,161,146,130,255,156,141,124,255,150,135,118,255,145,130,112,255,139,124,106,255,134,119, 99,255,129,114, 93,255, +124,109, 87,255,119,104, 81,255,114, 99, 75,255,110, 95, 71,255,108, 93, 69,255,105, 91, 67,255,103, 89, 66,255,101, 87, 64,255, + 99, 86, 63,255, 97, 84, 62,255, 95, 82, 60,255, 94, 80, 59,255, 93, 79, 58,255, 91, 78, 57,255, 90, 76, 56,255, 90, 76, 56,255, + 90, 76, 55,255, 91, 77, 56,255, 92, 79, 57,255, 96, 82, 60,255,102, 88, 65,255,113, 99, 77,255,129,115, 94,255,150,135,118,255, +171,156,141,255,190,174,161,255,204,189,176,255,213,197,185,255,218,202,190,255,220,204,192,255,221,205,193,255,222,206,194,255, +218,202,189,255,204,188,175,255,177,162,148,255,144,129,112,255,113, 98, 77,255,101, 87, 63,255,115,100, 79,255,169,155,139,255, +219,203,191,255,228,212,201,255,227,211,200,255,192,176,162,255,107, 93, 73,255, 62, 51, 36,255, 56, 45, 31,255,137,123,106,255, +228,211,200,255,149,140,135,255, 59, 60, 60,255, 61, 61, 61,255, 97, 90, 80,255,115,100, 78,255,122,107, 87,255,142,127,109,255, +163,149,132,255,178,163,148,255,189,174,160,255,193,177,164,255,178,163,148,255,114,101, 83,255, 76, 64, 46,255,149,135,119,255, +195,180,166,255,198,183,169,255,196,181,167,255,195,179,166,255,195,179,166,255,196,180,167,255,192,176,163,255,176,161,148,255, +149,135,118,255,135,121,103,255,137,123,105,255,145,131,114,255,154,139,122,255,162,147,131,255,169,154,138,255,175,160,145,255, +179,164,150,255,181,166,152,255,182,166,152,255,179,165,150,255,176,161,147,255,172,157,142,255,168,153,138,255,163,148,132,255, +158,143,126,255,153,138,120,255,147,132,114,255,142,127,108,255,136,121,102,255,131,116, 96,255,126,111, 90,255,121,106, 84,255, +117,102, 79,255,112, 97, 73,255,109, 94, 69,255,107, 92, 68,255,105, 91, 67,255,103, 88, 65,255,101, 86, 64,255, 99, 85, 63,255, + 97, 83, 61,255, 95, 81, 59,255, 92, 79, 58,255, 90, 77, 56,255, 89, 75, 55,255, 87, 74, 54,255, 85, 72, 52,255, 83, 71, 51,255, + 82, 69, 51,255, 81, 69, 50,255, 81, 68, 49,255, 82, 70, 50,255, 84, 71, 52,255, 88, 75, 55,255, 95, 81, 60,255,107, 93, 71,255, +128,113, 93,255,155,140,123,255,180,164,151,255,200,185,172,255,213,197,185,255,220,204,192,255,222,206,194,255,223,207,196,255, +224,207,196,255,220,204,192,255,204,188,176,255,175,160,146,255,140,125,108,255,109, 95, 72,255,100, 86, 62,255,122,107, 87,255, +186,171,157,255,226,210,198,255,229,213,202,255,224,208,196,255,160,145,128,255, 80, 67, 47,255, 53, 43, 29,255, 78, 66, 48,255, +206,191,177,255,151,143,137,255, 59, 60, 60,255, 61, 61, 61,255, 91, 83, 72,255,116,102, 79,255,132,117, 98,255,153,138,122,255, +172,157,142,255,185,170,157,255,193,177,164,255,183,167,153,255,127,113, 95,255, 74, 63, 45,255,134,119,103,255,196,179,166,255, +200,184,171,255,199,183,170,255,197,182,168,255,197,182,168,255,197,181,168,255,191,175,162,255,170,155,140,255,142,127,109,255, +131,117, 97,255,138,124,106,255,147,133,117,255,157,142,126,255,164,151,135,255,172,157,143,255,178,163,148,255,182,167,153,255, +183,168,154,255,182,167,153,255,180,165,151,255,176,160,146,255,172,156,141,255,166,151,135,255,161,146,130,255,156,142,125,255, +151,136,118,255,146,131,113,255,141,126,108,255,136,121,101,255,132,117, 96,255,127,112, 91,255,122,107, 85,255,118,103, 80,255, +114, 99, 75,255,110, 95, 70,255,109, 94, 69,255,107, 92, 68,255,104, 90, 66,255,102, 88, 65,255,101, 87, 64,255, 98, 84, 62,255, + 97, 83, 61,255, 94, 81, 59,255, 92, 79, 58,255, 90, 77, 56,255, 89, 75, 55,255, 86, 73, 53,255, 84, 71, 52,255, 82, 70, 50,255, + 80, 67, 48,255, 78, 66, 47,255, 76, 64, 46,255, 75, 63, 45,255, 74, 62, 45,255, 75, 63, 45,255, 77, 66, 48,255, 83, 71, 51,255, + 93, 79, 58,255,110, 96, 74,255,139,125,107,255,171,156,142,255,197,182,169,255,213,197,185,255,221,205,193,255,225,209,197,255, +225,209,198,255,226,210,198,255,221,205,193,255,201,186,173,255,170,155,139,255,131,116, 97,255,103, 89, 67,255,101, 87, 64,255, +141,126,108,255,208,192,181,255,230,214,202,255,231,215,204,255,210,195,183,255,117,103, 84,255, 61, 50, 34,255, 52, 41, 26,255, +155,140,124,255,151,142,137,255, 60, 60, 60,255, 61, 61, 61,255, 89, 81, 69,255,123,109, 88,255,141,127,109,255,163,149,133,255, +179,164,150,255,191,175,162,255,186,171,157,255,139,124,106,255, 76, 65, 46,255,110, 97, 80,255,188,173,159,255,202,186,173,255, +200,185,171,255,199,184,170,255,199,184,170,255,198,183,169,255,191,175,162,255,166,150,135,255,136,121,104,255,129,115, 95,255, +139,124,106,255,149,135,118,255,158,143,128,255,167,153,138,255,175,160,146,255,181,166,152,255,183,168,154,255,184,169,155,255, +183,168,154,255,180,165,150,255,176,161,146,255,172,156,141,255,167,152,136,255,162,147,130,255,157,142,125,255,152,137,120,255, +148,133,115,255,143,128,109,255,139,124,104,255,135,120,100,255,130,115, 95,255,126,112, 90,255,123,108, 85,255,118,103, 81,255, +114, 99, 76,255,111, 96, 71,255,109, 95, 69,255,107, 93, 68,255,105, 91, 67,255,104, 89, 66,255,102, 87, 64,255, 99, 85, 63,255, + 98, 84, 62,255, 96, 82, 60,255, 94, 80, 59,255, 92, 79, 58,255, 90, 76, 56,255, 87, 74, 54,255, 85, 72, 52,255, 83, 70, 51,255, + 81, 68, 49,255, 78, 66, 47,255, 76, 64, 46,255, 73, 61, 44,255, 71, 60, 42,255, 69, 57, 41,255, 69, 58, 41,255, 70, 59, 42,255, + 75, 63, 45,255, 84, 71, 51,255,100, 86, 64,255,129,114, 95,255,166,151,135,255,196,180,168,255,215,198,187,255,223,207,195,255, +227,210,199,255,227,211,200,255,228,212,200,255,220,204,192,255,195,179,166,255,158,143,127,255,118,104, 82,255, 98, 84, 62,255, +108, 94, 72,255,172,158,142,255,225,209,197,255,231,215,204,255,231,214,204,255,175,160,145,255, 79, 66, 48,255, 49, 40, 27,255, +100, 87, 70,255,142,133,127,255, 60, 60, 60,255, 61, 61, 61,255, 92, 85, 74,255,131,116, 97,255,151,137,120,255,172,157,142,255, +185,169,156,255,189,174,160,255,155,140,124,255, 84, 72, 54,255, 85, 73, 57,255,169,154,140,255,202,186,173,255,202,186,173,255, +201,185,172,255,201,185,172,255,200,184,171,255,191,176,163,255,166,151,136,255,132,117, 98,255,127,112, 93,255,138,124,106,255, +150,135,118,255,160,145,129,255,169,154,139,255,177,162,148,255,182,167,153,255,185,170,156,255,186,170,157,255,184,169,155,255, +181,166,151,255,177,162,147,255,173,158,143,255,168,153,138,255,164,149,133,255,159,144,127,255,155,140,123,255,151,136,118,255, +147,132,114,255,143,128,110,255,139,124,105,255,136,121,101,255,132,117, 97,255,128,114, 93,255,125,110, 88,255,121,107, 84,255, +119,104, 81,255,115,100, 76,255,112, 97, 72,255,109, 95, 70,255,108, 93, 69,255,107, 92, 68,255,105, 90, 67,255,102, 88, 65,255, +101, 87, 64,255, 99, 85, 62,255, 97, 83, 61,255, 95, 81, 60,255, 93, 79, 58,255, 90, 77, 56,255, 88, 75, 55,255, 86, 73, 53,255, + 83, 70, 51,255, 80, 67, 49,255, 78, 65, 47,255, 75, 63, 45,255, 71, 59, 43,255, 69, 57, 41,255, 66, 55, 39,255, 65, 54, 38,255, + 65, 54, 38,255, 68, 57, 41,255, 77, 65, 46,255, 94, 80, 59,255,123,109, 88,255,165,150,135,255,199,183,170,255,217,201,189,255, +225,209,197,255,228,212,200,255,230,213,201,255,228,212,201,255,216,200,188,255,182,167,153,255,141,126,108,255,105, 91, 67,255, + 96, 82, 60,255,131,118, 98,255,207,191,179,255,232,215,204,255,232,216,205,255,216,199,188,255,116,103, 85,255, 55, 45, 31,255, + 67, 57, 42,255,119,111,103,255, 60, 60, 61,255, 61, 61, 61,255, 95, 87, 77,255,139,124,106,255,160,146,130,255,178,163,148,255, +187,172,158,255,173,157,143,255,105, 92, 74,255, 66, 55, 39,255,133,119,102,255,199,183,170,255,204,189,176,255,203,187,174,255, +203,187,174,255,201,186,173,255,194,178,165,255,167,153,137,255,130,116, 97,255,123,108, 88,255,136,121,104,255,149,134,118,255, +160,145,129,255,170,155,140,255,178,163,149,255,185,169,155,255,187,172,158,255,188,172,159,255,186,171,157,255,184,168,154,255, +180,165,150,255,176,160,146,255,172,156,141,255,167,152,136,255,163,148,131,255,159,144,127,255,155,140,123,255,152,137,119,255, +148,133,115,255,145,130,112,255,142,127,108,255,138,123,104,255,135,120,100,255,132,117, 97,255,129,114, 93,255,126,111, 90,255, +123,108, 86,255,120,105, 83,255,117,102, 79,255,114, 99, 74,255,111, 96, 71,255,109, 94, 70,255,107, 92, 68,255,106, 91, 68,255, +104, 90, 66,255,102, 88, 65,255,100, 86, 64,255, 98, 84, 62,255, 96, 82, 60,255, 94, 81, 59,255, 91, 78, 57,255, 89, 75, 55,255, + 87, 74, 54,255, 84, 71, 51,255, 80, 68, 49,255, 77, 65, 46,255, 74, 62, 44,255, 70, 59, 42,255, 67, 55, 39,255, 63, 53, 37,255, + 61, 51, 35,255, 61, 51, 35,255, 64, 53, 37,255, 73, 61, 43,255, 91, 77, 56,255,126,111, 92,255,170,156,141,255,204,188,175,255, +221,205,193,255,227,211,200,255,230,214,202,255,231,214,203,255,228,211,200,255,206,191,178,255,165,150,135,255,120,106, 84,255, + 96, 82, 59,255,104, 89, 67,255,175,160,145,255,228,212,202,255,232,215,204,255,230,214,203,255,163,148,132,255, 68, 56, 40,255, + 54, 45, 32,255, 93, 86, 76,255, 61, 61, 61,255, 61, 61, 61,255, 98, 90, 80,255,147,132,115,255,168,153,138,255,182,166,152,255, +183,167,154,255,134,120,103,255, 69, 58, 41,255, 93, 81, 63,255,184,169,155,255,206,190,177,255,205,189,177,255,205,189,176,255, +204,188,175,255,197,182,169,255,173,159,144,255,132,118, 99,255,119,105, 84,255,133,118,100,255,147,133,116,255,159,144,128,255, +170,155,140,255,178,163,149,255,186,170,157,255,188,173,160,255,189,174,160,255,188,173,159,255,186,171,156,255,183,167,153,255, +179,164,149,255,175,160,145,255,171,156,141,255,167,153,136,255,164,149,133,255,161,146,129,255,157,142,126,255,154,139,122,255, +151,136,118,255,148,133,115,255,145,130,112,255,142,128,109,255,139,124,105,255,136,121,102,255,134,119, 99,255,131,116, 95,255, +128,114, 92,255,125,110, 89,255,122,107, 85,255,119,104, 81,255,116,101, 77,255,113, 98, 74,255,110, 95, 71,255,109, 94, 69,255, +107, 92, 68,255,105, 90, 67,255,104, 89, 66,255,101, 87, 64,255,100, 86, 63,255, 97, 83, 61,255, 95, 81, 60,255, 93, 80, 58,255, + 91, 77, 56,255, 88, 75, 54,255, 85, 71, 52,255, 81, 69, 49,255, 78, 66, 47,255, 73, 62, 44,255, 69, 58, 41,255, 66, 54, 38,255, + 62, 51, 36,255, 59, 48, 34,255, 58, 48, 33,255, 60, 50, 35,255, 71, 59, 42,255, 92, 79, 58,255,134,120,100,255,181,166,152,255, +211,195,183,255,225,208,197,255,230,213,202,255,231,215,204,255,231,215,204,255,223,206,195,255,187,172,158,255,141,126,108,255, +102, 88, 65,255, 93, 79, 57,255,138,124,105,255,218,202,190,255,232,215,204,255,232,216,205,255,203,186,173,255, 90, 77, 59,255, + 50, 42, 29,255, 74, 67, 59,255, 61, 61, 62,255, 61, 61, 61,255,101, 93, 84,255,154,140,124,255,173,158,144,255,182,167,153,255, +161,146,131,255, 90, 78, 59,255, 69, 59, 42,255,148,133,117,255,203,188,176,255,207,191,179,255,206,190,178,255,205,190,177,255, +201,186,173,255,183,168,154,255,140,125,108,255,115,101, 79,255,127,113, 93,255,143,130,112,255,157,142,127,255,168,153,138,255, +180,164,150,255,186,171,157,255,189,174,160,255,191,175,162,255,191,175,162,255,188,173,159,255,186,171,157,255,183,168,153,255, +179,164,149,255,176,160,146,255,173,158,142,255,170,155,139,255,167,152,136,255,164,149,132,255,161,146,129,255,158,143,126,255, +155,140,123,255,153,138,120,255,150,135,117,255,147,132,114,255,145,130,111,255,142,127,108,255,139,124,104,255,135,120,101,255, +133,118, 98,255,130,115, 95,255,127,112, 91,255,124,109, 87,255,120,106, 83,255,117,102, 79,255,114, 99, 75,255,111, 96, 72,255, +109, 94, 69,255,107, 93, 68,255,105, 91, 67,255,104, 90, 66,255,103, 89, 65,255,100, 86, 64,255, 99, 85, 63,255, 97, 83, 61,255, + 94, 81, 59,255, 92, 78, 57,255, 90, 76, 55,255, 86, 73, 53,255, 83, 70, 50,255, 79, 66, 47,255, 73, 62, 44,255, 69, 58, 41,255, + 65, 54, 38,255, 60, 50, 34,255, 56, 46, 32,255, 56, 46, 32,255, 59, 48, 34,255, 71, 60, 43,255, 98, 85, 63,255,150,136,118,255, +195,179,166,255,219,202,191,255,228,211,200,255,231,215,204,255,232,216,205,255,230,213,203,255,209,193,181,255,160,145,130,255, +113, 99, 77,255, 91, 77, 56,255,112, 97, 76,255,198,183,170,255,232,216,205,255,232,215,204,255,225,209,198,255,123,108, 90,255, + 51, 42, 30,255, 63, 58, 51,255, 61, 62, 62,255, 60, 61, 61,255,104, 97, 88,255,161,146,131,255,176,161,146,255,175,160,146,255, +122,108, 89,255, 65, 54, 38,255, 93, 81, 64,255,185,170,156,255,208,192,180,255,209,193,180,255,208,192,179,255,206,190,177,255, +192,176,163,255,155,140,124,255,113, 99, 77,255,119,105, 84,255,138,124,106,255,153,139,122,255,166,151,136,255,177,162,148,255, +186,171,157,255,191,175,162,255,193,177,164,255,193,177,164,255,192,176,162,255,190,173,160,255,187,171,157,255,184,168,154,255, +181,166,151,255,178,163,148,255,175,160,146,255,173,158,143,255,170,155,139,255,168,152,137,255,165,150,134,255,162,147,131,255, +160,145,128,255,157,142,125,255,155,140,122,255,153,138,120,255,150,135,117,255,147,132,114,255,144,130,111,255,141,126,107,255, +137,123,103,255,134,119,100,255,131,116, 96,255,128,113, 92,255,124,109, 88,255,121,106, 84,255,118,103, 80,255,115,100, 76,255, +111, 96, 72,255,109, 94, 70,255,108, 93, 69,255,106, 91, 67,255,104, 90, 66,255,103, 89, 65,255,101, 87, 64,255, 99, 85, 63,255, + 98, 84, 62,255, 96, 82, 60,255, 94, 79, 58,255, 91, 78, 57,255, 87, 74, 54,255, 84, 71, 52,255, 79, 67, 48,255, 73, 62, 44,255, + 69, 57, 40,255, 62, 52, 36,255, 58, 47, 32,255, 54, 44, 30,255, 53, 43, 30,255, 59, 48, 33,255, 76, 64, 45,255,115,101, 80,255, +172,157,141,255,208,193,180,255,225,208,197,255,231,215,203,255,233,216,205,255,232,215,204,255,224,207,196,255,180,165,151,255, +127,113, 93,255, 94, 80, 59,255, 97, 84, 62,255,176,161,146,255,230,215,203,255,232,215,204,255,233,217,206,255,161,146,130,255, + 57, 47, 32,255, 60, 57, 51,255, 62, 62, 62,255, 60, 61, 61,255,107,100, 91,255,166,152,136,255,173,158,144,255,156,141,125,255, + 87, 74, 55,255, 61, 51, 36,255,132,117,100,255,201,186,173,255,210,194,182,255,209,193,181,255,209,193,180,255,202,186,173,255, +171,156,141,255,122,108, 87,255,110, 95, 72,255,129,115, 95,255,148,134,116,255,162,147,132,255,174,160,145,255,185,169,156,255, +192,176,163,255,194,178,165,255,196,180,167,255,195,179,166,255,193,177,163,255,191,175,161,255,189,173,159,255,186,171,157,255, +184,169,154,255,182,167,152,255,180,165,150,255,177,162,147,255,174,159,144,255,172,157,142,255,170,155,139,255,168,153,137,255, +165,150,134,255,163,148,132,255,160,145,129,255,158,143,125,255,155,140,123,255,153,138,120,255,150,135,116,255,147,132,113,255, +143,128,109,255,139,125,106,255,136,121,101,255,132,117, 98,255,129,114, 93,255,125,110, 89,255,121,106, 84,255,118,102, 80,255, +114, 99, 76,255,111, 96, 72,255,109, 94, 69,255,107, 93, 68,255,105, 91, 67,255,104, 89, 66,255,103, 89, 65,255,101, 87, 64,255, +100, 86, 63,255, 98, 85, 62,255, 97, 83, 61,255, 95, 81, 60,255, 92, 79, 57,255, 89, 76, 56,255, 85, 72, 52,255, 80, 68, 49,255, + 74, 62, 45,255, 68, 56, 39,255, 61, 50, 35,255, 56, 45, 31,255, 52, 42, 29,255, 52, 43, 30,255, 61, 51, 35,255, 88, 75, 55,255, +143,128,110,255,193,178,165,255,219,203,192,255,229,213,201,255,233,216,205,255,233,216,205,255,229,213,202,255,201,187,173,255, +141,127,109,255, 98, 85, 63,255, 91, 77, 56,255,156,141,124,255,228,212,200,255,231,214,203,255,234,217,206,255,195,179,166,255, + 69, 58, 41,255, 61, 58, 54,255, 61, 62, 62,255, 60, 61, 61,255,110,103, 94,255,168,154,139,255,168,153,138,255,127,113, 94,255, + 66, 56, 41,255, 77, 65, 49,255,165,150,134,255,209,193,180,255,212,196,183,255,211,195,182,255,208,192,180,255,191,176,162,255, +142,127,109,255,106, 92, 68,255,118,103, 82,255,139,125,107,255,157,142,126,255,170,155,140,255,182,167,153,255,190,175,161,255, +195,179,166,255,197,181,168,255,197,181,168,255,196,181,167,255,195,179,166,255,193,177,164,255,192,176,162,255,190,175,161,255, +188,172,158,255,186,170,156,255,184,168,154,255,182,166,152,255,180,165,150,255,177,162,147,255,176,161,146,255,174,159,143,255, +171,156,140,255,169,154,139,255,167,152,136,255,164,149,133,255,162,147,129,255,159,144,127,255,155,140,123,255,152,137,119,255, +148,134,116,255,145,130,111,255,141,126,107,255,137,122,102,255,132,118, 98,255,129,114, 93,255,124,110, 88,255,120,106, 84,255, +116,101, 79,255,113, 98, 74,255,110, 95, 70,255,108, 93, 69,255,107, 92, 68,255,104, 90, 66,255,103, 89, 65,255,102, 88, 65,255, +101, 86, 63,255,100, 86, 63,255, 99, 85, 63,255, 97, 84, 61,255, 96, 82, 60,255, 94, 80, 59,255, 91, 77, 56,255, 86, 73, 53,255, + 80, 68, 49,255, 73, 61, 43,255, 66, 55, 39,255, 59, 49, 34,255, 52, 43, 30,255, 50, 41, 28,255, 54, 44, 30,255, 70, 58, 41,255, +113,100, 79,255,175,159,145,255,212,196,183,255,227,210,199,255,232,216,204,255,233,217,205,255,231,215,204,255,216,200,188,255, +158,143,127,255,104, 91, 68,255, 87, 74, 54,255,141,126,108,255,224,207,196,255,231,215,203,255,232,215,204,255,218,201,190,255, + 88, 76, 59,255, 65, 63, 58,255, 61, 61, 62,255, 60, 60, 61,255,113,105, 97,255,167,152,137,255,159,144,128,255, 99, 86, 66,255, + 57, 47, 33,255, 96, 83, 65,255,188,172,158,255,211,196,183,255,213,196,184,255,211,195,183,255,204,189,176,255,173,157,143,255, +117,103, 81,255,107, 92, 68,255,127,113, 92,255,148,133,116,255,164,150,134,255,177,162,148,255,188,173,159,255,194,180,166,255, +198,183,170,255,200,184,171,255,199,184,170,255,199,183,170,255,197,182,168,255,196,180,167,255,195,179,166,255,193,178,165,255, +192,176,162,255,190,175,161,255,189,174,159,255,186,171,157,255,185,170,155,255,184,169,154,255,182,166,152,255,180,165,151,255, +179,163,148,255,177,162,147,255,174,159,144,255,172,156,141,255,169,153,138,255,166,151,134,255,162,147,130,255,159,144,127,255, +155,140,123,255,151,136,119,255,147,132,114,255,143,128,109,255,137,123,104,255,133,118, 98,255,128,114, 93,255,124,109, 88,255, +119,105, 83,255,115,100, 77,255,110, 96, 72,255,108, 93, 69,255,107, 92, 68,255,104, 90, 66,255,103, 89, 65,255,102, 87, 64,255, +100, 86, 63,255,100, 85, 63,255, 99, 85, 63,255, 99, 85, 63,255, 98, 84, 62,255, 97, 83, 61,255, 95, 81, 60,255, 91, 78, 57,255, + 86, 73, 53,255, 80, 68, 48,255, 72, 60, 43,255, 64, 53, 37,255, 56, 46, 32,255, 50, 41, 28,255, 49, 40, 27,255, 58, 48, 33,255, + 89, 76, 56,255,151,137,120,255,202,186,173,255,222,206,195,255,230,213,202,255,233,216,205,255,232,216,204,255,222,206,195,255, +175,159,145,255,111, 96, 75,255, 86, 73, 53,255,131,117, 98,255,221,205,193,255,231,215,204,255,229,213,201,255,229,212,201,255, +111, 98, 80,255, 74, 71, 67,255, 61, 61, 61,255, 60, 60, 61,255,113,106, 98,255,164,150,134,255,143,128,111,255, 77, 65, 47,255, + 59, 49, 34,255,120,106, 88,255,202,186,174,255,213,197,185,255,213,197,185,255,211,195,183,255,197,182,169,255,150,135,117,255, +104, 90, 68,255,112, 98, 75,255,135,121,102,255,155,141,124,255,171,156,141,255,184,169,155,255,193,178,164,255,198,183,170,255, +201,185,172,255,202,186,173,255,202,186,173,255,201,186,172,255,200,185,171,255,199,184,170,255,198,183,169,255,197,182,168,255, +196,180,167,255,195,179,165,255,194,178,165,255,193,177,163,255,192,176,162,255,191,175,161,255,189,174,160,255,188,173,159,255, +187,171,157,255,185,170,155,255,183,168,153,255,181,166,151,255,178,163,148,255,175,160,145,255,171,156,140,255,167,152,136,255, +163,148,132,255,159,144,127,255,154,139,122,255,149,135,117,255,144,129,111,255,139,125,105,255,134,119, 99,255,129,114, 93,255, +123,108, 87,255,118,103, 80,255,112, 98, 74,255,109, 94, 70,255,107, 92, 68,255,104, 90, 66,255,103, 88, 65,255,101, 87, 64,255, +100, 86, 63,255, 98, 84, 62,255, 98, 84, 62,255, 98, 84, 62,255, 98, 85, 62,255, 98, 84, 62,255, 98, 84, 62,255, 96, 82, 60,255, + 92, 78, 58,255, 86, 73, 52,255, 78, 66, 47,255, 69, 58, 41,255, 60, 50, 35,255, 52, 43, 29,255, 47, 38, 26,255, 51, 42, 29,255, + 73, 61, 43,255,128,112, 93,255,189,174,160,255,218,202,190,255,228,212,201,255,232,216,204,255,232,216,204,255,225,209,198,255, +187,172,158,255,117,102, 81,255, 87, 74, 54,255,126,112, 93,255,220,204,193,255,231,215,204,255,227,210,199,255,233,217,206,255, +131,118,102,255, 81, 78, 74,255, 61, 61, 61,255, 60, 60, 61,255,113,106, 98,255,160,146,130,255,121,107, 87,255, 64, 52, 37,255, + 66, 55, 38,255,142,128,111,255,209,193,181,255,214,198,186,255,214,198,186,255,209,193,181,255,187,172,159,255,126,112, 92,255, +101, 87, 63,255,118,104, 83,255,143,128,110,255,161,147,131,255,176,161,146,255,188,173,160,255,197,181,168,255,201,186,173,255, +203,187,174,255,204,188,175,255,204,188,175,255,204,188,175,255,203,188,175,255,203,187,174,255,202,187,173,255,201,185,172,255, +200,185,171,255,200,184,171,255,199,183,170,255,199,183,170,255,198,183,169,255,198,182,169,255,198,182,169,255,197,181,168,255, +196,180,166,255,194,179,165,255,193,177,164,255,191,175,161,255,189,173,159,255,186,170,156,255,182,167,152,255,178,163,148,255, +174,159,144,255,169,154,138,255,164,149,133,255,158,143,127,255,153,138,121,255,147,132,114,255,141,126,108,255,135,120,101,255, +128,114, 93,255,122,108, 86,255,116,101, 79,255,111, 96, 71,255,107, 93, 68,255,104, 90, 66,255,103, 88, 65,255,100, 86, 63,255, + 98, 84, 62,255, 97, 83, 61,255, 96, 83, 61,255, 97, 83, 61,255, 97, 83, 61,255, 99, 85, 62,255, 99, 85, 62,255,100, 86, 63,255, + 98, 84, 62,255, 92, 78, 57,255, 85, 71, 52,255, 76, 64, 46,255, 65, 54, 39,255, 56, 46, 32,255, 49, 40, 28,255, 47, 39, 27,255, + 62, 52, 36,255,107, 93, 72,255,175,160,145,255,212,197,185,255,227,210,199,255,231,215,203,255,231,215,204,255,226,210,198,255, +195,179,167,255,122,108, 87,255, 86, 74, 53,255,126,112, 93,255,221,206,193,255,231,214,203,255,225,209,197,255,234,218,207,255, +147,134,118,255, 94, 90, 85,255, 61, 61, 61,255, 60, 61, 61,255,112,104, 96,255,155,140,124,255,102, 88, 67,255, 57, 47, 33,255, + 73, 61, 43,255,161,145,129,255,213,196,184,255,216,200,188,255,215,199,186,255,207,191,178,255,174,159,145,255,109, 95, 73,255, +101, 88, 64,255,124,109, 89,255,149,134,117,255,167,153,137,255,182,167,153,255,193,177,164,255,200,184,171,255,203,187,174,255, +206,190,177,255,207,191,178,255,207,191,178,255,207,191,178,255,207,191,178,255,206,190,178,255,206,190,177,255,205,190,177,255, +205,189,177,255,205,189,177,255,205,189,176,255,205,189,176,255,205,189,176,255,205,189,176,255,205,189,176,255,205,189,176,255, +204,189,176,255,204,188,175,255,203,187,174,255,202,186,173,255,201,185,172,255,198,183,169,255,196,180,167,255,193,177,163,255, +188,172,159,255,184,168,154,255,179,163,148,255,172,157,142,255,165,150,135,255,159,144,127,255,151,136,119,255,144,129,112,255, +137,122,103,255,129,115, 94,255,122,107, 86,255,114, 99, 76,255,109, 94, 70,255,106, 90, 67,255,103, 88, 65,255,100, 86, 63,255, + 97, 83, 61,255, 96, 82, 60,255, 94, 80, 59,255, 94, 80, 59,255, 95, 81, 60,255, 98, 84, 61,255,100, 86, 64,255,101, 87, 64,255, +102, 87, 64,255, 98, 84, 62,255, 90, 78, 56,255, 83, 70, 51,255, 72, 60, 43,255, 60, 50, 35,255, 51, 42, 29,255, 46, 39, 26,255, + 54, 45, 31,255, 92, 79, 58,255,161,146,130,255,207,191,178,255,224,208,196,255,230,214,202,255,231,214,203,255,226,209,198,255, +198,182,169,255,127,112, 92,255, 86, 73, 53,255,131,117, 99,255,224,208,196,255,230,213,202,255,224,208,196,255,234,217,206,255, +160,145,130,255,116,110,105,255, 60, 60, 60,255, 60, 61, 61,255,111,103, 95,255,145,131,113,255, 88, 75, 54,255, 54, 45, 31,255, + 80, 67, 49,255,174,158,143,255,215,199,187,255,216,200,188,255,215,199,187,255,203,187,174,255,161,145,130,255,101, 87, 64,255, +104, 90, 67,255,129,115, 95,255,154,138,122,255,171,156,141,255,186,171,157,255,196,181,167,255,202,186,174,255,205,190,177,255, +208,192,179,255,209,193,180,255,210,194,181,255,210,194,181,255,210,194,182,255,210,194,181,255,210,194,181,255,210,194,181,255, +210,194,181,255,210,194,181,255,210,194,181,255,210,194,182,255,210,194,182,255,211,195,182,255,211,195,182,255,212,195,183,255, +212,196,184,255,212,196,184,255,212,196,184,255,212,196,183,255,211,195,183,255,210,194,182,255,210,194,181,255,208,192,180,255, +205,189,176,255,201,185,173,255,197,181,168,255,190,175,161,255,183,168,153,255,175,160,145,255,166,151,136,255,157,142,125,255, +148,133,116,255,139,125,106,255,130,116, 96,255,121,107, 85,255,113, 98, 74,255,107, 92, 68,255,103, 89, 65,255, 99, 85, 63,255, + 97, 83, 61,255, 94, 81, 59,255, 93, 79, 58,255, 92, 79, 57,255, 93, 79, 58,255, 95, 81, 60,255, 99, 85, 62,255,102, 88, 65,255, +104, 90, 66,255,104, 89, 66,255, 98, 84, 62,255, 89, 76, 55,255, 78, 66, 48,255, 66, 55, 39,255, 54, 45, 31,255, 47, 39, 26,255, + 50, 41, 28,255, 83, 70, 51,255,149,134,116,255,201,185,172,255,221,205,193,255,229,213,201,255,230,213,202,255,224,208,196,255, +196,181,168,255,126,112, 92,255, 85, 72, 52,255,143,128,110,255,227,211,199,255,228,212,200,255,223,207,195,255,234,218,206,255, +163,149,134,255,134,127,123,255, 60, 60, 60,255, 60, 61, 61,255,109,101, 93,255,135,120,101,255, 78, 66, 48,255, 53, 43, 30,255, + 87, 74, 54,255,180,165,151,255,216,200,189,255,218,202,190,255,215,199,186,255,201,184,172,255,146,131,114,255, 97, 82, 60,255, +105, 91, 68,255,133,119,100,255,157,142,126,255,175,160,145,255,189,174,160,255,198,182,170,255,204,188,176,255,208,192,179,255, +209,193,181,255,210,194,182,255,212,196,184,255,213,197,184,255,212,196,184,255,214,198,184,255,213,197,185,255,213,197,185,255, +213,197,185,255,214,197,185,255,214,198,185,255,214,198,187,255,215,199,186,255,215,199,187,255,216,200,188,255,217,201,189,255, +216,200,188,255,216,200,188,255,216,200,188,255,217,201,189,255,217,201,189,255,217,201,189,255,217,201,189,255,216,200,188,255, +216,200,188,255,214,198,186,255,213,197,185,255,209,193,180,255,204,188,175,255,196,180,167,255,187,171,157,255,176,161,146,255, +164,149,133,255,153,138,121,255,143,128,110,255,132,117, 97,255,121,106, 84,255,111, 96, 73,255,105, 91, 67,255,100, 86, 63,255, + 96, 82, 60,255, 93, 79, 58,255, 91, 78, 57,255, 89, 76, 55,255, 89, 76, 55,255, 92, 78, 57,255, 96, 83, 60,255,102, 88, 65,255, +107, 92, 68,255,109, 95, 72,255,105, 91, 68,255, 97, 83, 61,255, 85, 72, 53,255, 71, 60, 42,255, 58, 48, 34,255, 49, 40, 28,255, + 48, 40, 28,255, 76, 64, 46,255,140,125,106,255,196,180,167,255,219,203,191,255,227,211,199,255,228,212,200,255,220,204,192,255, +192,176,163,255,121,107, 87,255, 85, 73, 53,255,161,146,130,255,231,214,203,255,227,211,199,255,222,206,194,255,233,217,206,255, +162,148,135,255,147,139,134,255, 60, 60, 60,255, 60, 61, 61,255,107, 99, 90,255,125,110, 90,255, 73, 61, 43,255, 53, 44, 30,255, + 89, 76, 57,255,184,168,154,255,217,201,189,255,218,202,190,255,215,199,186,255,198,183,170,255,135,120,101,255, 94, 80, 58,255, +106, 92, 69,255,136,121,103,255,158,144,128,255,177,162,148,255,191,175,162,255,200,184,171,255,206,190,177,255,209,194,181,255, +211,195,183,255,213,197,185,255,214,198,185,255,214,198,186,255,215,199,187,255,216,200,187,255,216,200,188,255,216,200,188,255, +216,200,188,255,217,201,189,255,217,201,189,255,217,201,189,255,217,201,189,255,217,201,189,255,217,201,189,255,217,201,189,255, +217,201,189,255,217,201,189,255,218,201,189,255,218,202,190,255,218,201,190,255,218,201,190,255,219,203,191,255,219,203,191,255, +219,203,191,255,219,203,191,255,219,203,191,255,218,202,190,255,216,200,188,255,213,197,185,255,208,192,180,255,199,184,171,255, +188,172,158,255,173,158,143,255,159,144,128,255,145,130,112,255,132,117, 98,255,120,105, 83,255,108, 94, 69,255,103, 88, 64,255, + 96, 82, 60,255, 91, 78, 57,255, 89, 76, 55,255, 87, 74, 54,255, 86, 74, 54,255, 88, 75, 55,255, 94, 80, 59,255,101, 87, 63,255, +109, 94, 70,255,117,102, 81,255,117,102, 80,255,106, 92, 69,255, 93, 80, 58,255, 77, 65, 47,255, 62, 52, 36,255, 51, 42, 29,255, + 48, 39, 28,255, 72, 61, 43,255,134,119,100,255,191,176,163,255,216,200,188,255,225,209,198,255,227,210,199,255,216,200,188,255, +183,168,154,255,112, 99, 78,255, 91, 78, 58,255,184,168,154,255,231,215,204,255,225,208,197,255,222,205,193,255,233,216,205,255, +166,154,142,255,153,144,139,255, 59, 60, 60,255, 61, 61, 61,255,104, 97, 87,255,118,104, 83,255, 69, 58, 41,255, 53, 43, 30,255, + 90, 77, 57,255,183,168,153,255,217,202,190,255,219,202,190,255,215,199,187,255,196,181,168,255,134,120,100,255, 91, 78, 56,255, +107, 92, 70,255,136,120,103,255,160,145,130,255,178,163,148,255,192,177,163,255,201,185,172,255,206,190,178,255,210,194,182,255, +213,197,185,255,214,198,186,255,215,199,187,255,216,200,188,255,216,200,188,255,217,201,189,255,217,201,189,255,217,201,189,255, +217,201,189,255,218,202,190,255,218,202,190,255,218,202,190,255,217,201,189,255,217,201,189,255,216,200,188,255,216,200,188,255, +216,200,188,255,216,200,188,255,217,201,189,255,217,201,189,255,218,202,190,255,218,202,190,255,219,202,191,255,219,203,191,255, +219,203,191,255,220,203,192,255,220,204,192,255,220,204,192,255,219,203,191,255,219,203,191,255,217,201,189,255,214,198,186,255, +209,193,181,255,199,183,170,255,184,168,154,255,164,149,134,255,147,132,114,255,132,117, 97,255,117,102, 80,255,105, 91, 67,255, + 98, 84, 62,255, 91, 78, 57,255, 86, 73, 53,255, 84, 71, 52,255, 83, 70, 51,255, 84, 71, 52,255, 90, 76, 56,255, 99, 85, 62,255, +109, 94, 71,255,123,108, 88,255,128,114, 94,255,120,106, 85,255,103, 88, 65,255, 84, 72, 52,255, 66, 55, 39,255, 53, 43, 30,255, + 48, 40, 29,255, 70, 59, 42,255,132,117, 98,255,189,173,160,255,213,197,185,255,223,207,195,255,223,207,195,255,209,194,181,255, +170,154,139,255,101, 88, 67,255,107, 94, 73,255,206,190,178,255,231,215,203,255,223,207,195,255,222,206,194,255,229,212,200,255, +180,167,155,255,153,144,138,255, 59, 60, 60,255, 61, 61, 61,255,102, 94, 85,255,114, 99, 77,255, 67, 56, 40,255, 53, 43, 30,255, + 87, 74, 54,255,179,162,148,255,218,202,190,255,220,204,192,255,216,200,188,255,196,180,167,255,137,123,104,255, 91, 77, 55,255, +105, 91, 69,255,134,120,101,255,159,144,128,255,179,164,149,255,192,177,163,255,202,185,173,255,207,191,178,255,212,196,183,255, +213,197,185,255,215,199,187,255,217,201,189,255,218,200,188,255,218,201,189,255,218,202,190,255,219,202,191,255,219,203,191,255, +219,202,190,255,218,201,189,255,218,202,190,255,216,200,188,255,217,200,188,255,216,199,187,255,216,200,188,255,216,200,188,255, +216,200,188,255,216,199,187,255,217,200,188,255,216,200,188,255,216,200,188,255,217,201,189,255,217,201,189,255,217,201,189,255, +217,201,189,255,218,202,190,255,218,202,190,255,218,202,190,255,219,202,191,255,220,202,192,255,219,203,191,255,218,202,190,255, +217,201,189,255,213,197,185,255,206,190,177,255,192,177,163,255,171,156,140,255,147,132,115,255,128,113, 93,255,112, 97, 73,255, +101, 87, 64,255, 93, 79, 58,255, 85, 72, 52,255, 80, 68, 49,255, 79, 67, 48,255, 80, 68, 49,255, 86, 74, 53,255, 97, 83, 60,255, +110, 95, 72,255,128,113, 93,255,137,122,104,255,134,119,101,255,117,102, 81,255, 93, 80, 58,255, 71, 60, 43,255, 55, 45, 32,255, + 48, 41, 29,255, 71, 59, 42,255,133,119, 99,255,187,172,158,255,212,196,184,255,221,204,193,255,219,202,191,255,200,184,172,255, +150,136,119,255, 94, 79, 58,255,140,125,107,255,222,206,194,255,230,213,202,255,222,206,194,255,225,209,197,255,209,193,180,255, +211,196,185,255,150,141,135,255, 59, 60, 60,255, 61, 61, 61,255, 99, 92, 82,255,112, 96, 74,255, 68, 57, 40,255, 52, 43, 30,255, + 82, 69, 50,255,168,153,138,255,217,201,189,255,221,204,193,255,216,200,188,255,199,184,171,255,139,124,107,255, 92, 79, 57,255, +101, 88, 65,255,132,117, 98,255,157,143,126,255,178,162,148,255,192,176,163,255,201,185,173,255,207,191,179,255,212,196,183,255, +214,198,186,255,216,200,188,255,217,201,189,255,217,202,190,255,218,202,190,255,219,203,191,255,219,202,190,255,218,202,190,255, +217,201,189,255,217,201,189,255,216,200,188,255,216,199,187,255,216,200,188,255,216,200,188,255,215,199,187,255,215,199,187,255, +215,199,187,255,215,199,187,255,215,199,187,255,215,199,187,255,215,199,187,255,215,199,187,255,215,199,187,255,216,200,188,255, +216,200,188,255,216,200,188,255,217,200,188,255,217,201,189,255,217,201,189,255,218,201,189,255,218,202,190,255,218,202,190,255, +218,202,190,255,217,202,189,255,215,199,187,255,208,193,180,255,196,180,167,255,174,159,143,255,146,131,113,255,121,107, 85,255, +105, 90, 67,255, 94, 80, 59,255, 85, 72, 52,255, 77, 65, 47,255, 75, 63, 46,255, 76, 64, 45,255, 83, 70, 51,255, 94, 81, 59,255, +110, 97, 73,255,132,118, 99,255,145,130,113,255,146,131,114,255,132,117, 97,255,102, 89, 66,255, 78, 66, 47,255, 57, 47, 33,255, + 49, 40, 30,255, 74, 62, 45,255,136,122,103,255,186,171,158,255,209,193,181,255,217,201,188,255,212,196,184,255,187,172,158,255, +128,114, 95,255,100, 86, 64,255,176,162,147,255,228,211,200,255,227,211,199,255,223,206,195,255,230,213,202,255,191,177,165,255, +236,219,208,255,149,140,134,255, 59, 60, 60,255, 61, 61, 61,255, 98, 90, 80,255,110, 95, 73,255, 70, 58, 41,255, 51, 42, 29,255, + 76, 64, 45,255,154,140,123,255,214,198,186,255,221,205,192,255,218,202,190,255,204,188,176,255,148,133,116,255, 92, 79, 56,255, + 99, 84, 62,255,125,111, 91,255,153,139,123,255,175,160,146,255,190,174,161,255,200,184,171,255,207,191,178,255,212,196,183,255, +213,197,185,255,216,200,188,255,218,201,189,255,217,202,190,255,218,202,190,255,218,202,190,255,218,202,190,255,218,201,189,255, +217,200,188,255,217,201,189,255,216,200,188,255,215,199,187,255,215,199,187,255,215,199,187,255,215,198,187,255,214,199,187,255, +215,199,186,255,215,199,186,255,214,198,186,255,214,198,186,255,214,198,186,255,214,198,186,255,214,198,186,255,214,198,186,255, +214,198,186,255,214,198,186,255,215,199,186,255,215,199,187,255,215,199,187,255,215,199,187,255,216,200,188,255,216,200,188,255, +217,201,189,255,217,201,189,255,217,201,189,255,215,199,187,255,209,193,181,255,197,181,168,255,174,159,144,255,140,125,107,255, +112, 97, 74,255, 97, 83, 60,255, 85, 73, 53,255, 75, 63, 46,255, 70, 59, 42,255, 72, 60, 43,255, 80, 68, 48,255, 94, 80, 58,255, +113, 99, 76,255,137,123,105,255,153,138,122,255,156,141,124,255,144,130,112,255,114, 99, 77,255, 83, 70, 51,255, 58, 48, 34,255, + 49, 41, 29,255, 80, 68, 49,255,142,128,109,255,186,170,157,255,206,190,178,255,212,196,183,255,202,187,174,255,166,152,137,255, +108, 94, 72,255,127,113, 93,255,204,188,176,255,230,213,202,255,226,210,198,255,225,208,197,255,220,203,192,255,214,199,187,255, +238,221,210,255,154,144,138,255, 59, 60, 60,255, 61, 61, 61,255, 95, 88, 78,255,109, 95, 73,255, 72, 61, 44,255, 52, 42, 29,255, + 69, 57, 41,255,136,122,103,255,208,192,180,255,221,204,192,255,220,203,192,255,207,191,179,255,166,151,135,255, 98, 84, 63,255, + 94, 80, 58,255,119,105, 84,255,148,133,116,255,171,156,141,255,188,173,159,255,199,183,170,255,205,189,177,255,210,194,182,255, +213,197,185,255,215,199,187,255,217,201,189,255,218,201,189,255,217,201,189,255,217,201,189,255,218,201,189,255,217,200,188,255, +216,200,188,255,215,199,187,255,215,199,187,255,215,199,187,255,215,199,187,255,214,198,187,255,214,198,185,255,214,198,185,255, +213,197,185,255,213,197,185,255,213,197,185,255,212,196,184,255,212,196,184,255,212,196,183,255,211,195,183,255,211,195,183,255, +211,195,183,255,212,196,184,255,212,196,184,255,212,196,184,255,212,196,184,255,213,197,185,255,214,198,185,255,214,198,186,255, +215,199,187,255,216,200,188,255,216,200,188,255,217,201,189,255,215,199,187,255,208,192,180,255,194,179,165,255,167,152,136,255, +128,113, 93,255,101, 87, 64,255, 86, 73, 53,255, 74, 62, 44,255, 66, 55, 40,255, 68, 57, 40,255, 78, 65, 47,255, 94, 81, 59,255, +118,103, 81,255,144,129,112,255,160,145,129,255,165,150,135,255,155,140,124,255,123,109, 89,255, 88, 75, 54,255, 60, 50, 35,255, + 51, 43, 31,255, 89, 76, 56,255,149,134,117,255,186,170,157,255,202,186,174,255,204,188,175,255,187,171,158,255,139,125,106,255, +106, 92, 69,255,160,146,130,255,220,204,192,255,230,213,202,255,227,211,199,255,229,212,201,255,210,196,184,255,224,208,197,255, +192,179,167,255, 68, 64, 62,255, 61, 61, 61,255, 61, 61, 61,255, 94, 86, 76,255,110, 96, 73,255, 78, 65, 47,255, 52, 43, 30,255, + 62, 51, 36,255,116,102, 82,255,197,182,169,255,221,204,193,255,220,204,192,255,213,197,185,255,178,163,149,255,113,100, 79,255, + 91, 77, 56,255,108, 94, 70,255,140,125,108,255,165,150,135,255,184,168,154,255,196,179,167,255,203,187,174,255,208,192,180,255, +212,196,184,255,214,198,186,255,215,199,187,255,216,200,188,255,216,200,188,255,216,200,188,255,216,200,188,255,216,200,188,255, +215,199,187,255,216,200,188,255,215,199,187,255,214,198,186,255,214,198,186,255,214,198,186,255,213,197,185,255,213,197,185,255, +212,196,185,255,212,196,184,255,211,195,183,255,211,195,183,255,211,195,183,255,211,195,182,255,211,195,182,255,211,195,182,255, +211,195,182,255,211,195,182,255,211,195,182,255,211,195,182,255,211,195,183,255,211,195,183,255,212,196,184,255,212,196,184,255, +213,197,185,255,214,198,186,255,215,199,187,255,216,200,188,255,216,200,188,255,214,198,185,255,206,190,177,255,188,173,160,255, +153,138,121,255,110, 96, 73,255, 88, 75, 54,255, 72, 60, 43,255, 62, 52, 36,255, 63, 53, 37,255, 77, 65, 47,255, 97, 83, 61,255, +124,109, 89,255,151,136,120,255,167,152,137,255,173,158,144,255,165,150,134,255,132,117, 98,255, 91, 78, 57,255, 60, 50, 36,255, + 55, 46, 33,255,100, 86, 65,255,156,140,125,255,185,169,156,255,197,182,168,255,192,176,163,255,163,148,133,255,115,100, 78,255, +128,113, 93,255,190,175,161,255,227,210,199,255,230,214,202,255,233,217,205,255,218,203,191,255,180,165,152,255,130,117,103,255, + 29, 24, 15,255, 23, 24, 25,255, 62, 62, 62,255, 61, 61, 61,255, 92, 85, 74,255,110, 96, 73,255, 83, 71, 51,255, 55, 45, 31,255, + 57, 46, 32,255, 96, 83, 63,255,178,163,148,255,218,201,189,255,222,205,194,255,216,200,188,255,194,179,166,255,131,117, 98,255, + 91, 78, 57,255,101, 87, 64,255,128,113, 93,255,156,141,125,255,177,162,147,255,192,177,163,255,201,185,172,255,206,190,178,255, +210,194,182,255,213,197,185,255,215,199,186,255,215,199,187,255,216,200,188,255,216,200,188,255,216,200,188,255,215,199,187,255, +216,200,187,255,215,199,187,255,214,198,187,255,215,199,187,255,215,199,187,255,214,198,186,255,213,197,185,255,212,196,185,255, +213,197,184,255,212,196,183,255,212,196,183,255,211,195,183,255,211,195,182,255,210,194,182,255,210,194,182,255,210,194,182,255, +209,194,181,255,209,194,181,255,209,194,181,255,209,194,181,255,209,194,181,255,209,193,181,255,209,193,181,255,210,194,182,255, +210,194,182,255,212,196,184,255,213,197,185,255,215,199,187,255,216,200,188,255,215,199,187,255,211,195,183,255,199,183,171,255, +174,159,145,255,128,114, 94,255, 91, 78, 57,255, 70, 59, 42,255, 58, 48, 34,255, 60, 49, 35,255, 80, 68, 49,255,103, 89, 67,255, +133,119,100,255,159,144,128,255,174,159,145,255,180,165,151,255,172,157,143,255,138,124,105,255, 93, 80, 59,255, 59, 49, 35,255, + 63, 52, 37,255,114, 99, 78,255,160,145,130,255,183,168,154,255,189,174,160,255,174,159,145,255,134,120,101,255,120,105, 83,255, +155,141,124,255,208,192,181,255,229,213,201,255,235,218,207,255,212,196,185,255,150,135,120,255,100, 88, 69,255, 59, 49, 34,255, + 0, 0, 0,255, 29, 29, 29,255, 61, 61, 61,255, 61, 61, 61,255, 91, 83, 72,255,111, 96, 72,255, 89, 77, 56,255, 60, 49, 35,255, + 52, 44, 30,255, 78, 67, 49,255,150,135,117,255,211,195,183,255,222,206,194,255,219,203,191,255,205,189,176,255,159,146,129,255, + 99, 86, 64,255, 94, 80, 58,255,115,100, 79,255,144,131,113,255,168,153,138,255,185,170,156,255,196,181,167,255,204,189,176,255, +209,193,180,255,211,195,183,255,213,197,185,255,214,198,186,255,214,198,186,255,215,199,187,255,215,199,187,255,216,200,188,255, +214,198,186,255,215,198,187,255,216,199,187,255,214,199,187,255,214,198,186,255,213,197,185,255,213,197,185,255,212,196,184,255, +211,195,183,255,211,195,182,255,210,194,183,255,210,194,182,255,209,193,181,255,209,193,180,255,208,192,180,255,208,192,179,255, +208,192,179,255,207,191,178,255,207,191,178,255,207,191,178,255,207,191,178,255,207,191,178,255,207,191,178,255,207,191,179,255, +208,192,180,255,209,193,181,255,211,195,183,255,213,197,185,255,215,198,186,255,216,199,187,255,214,198,186,255,207,191,178,255, +188,173,159,255,148,133,116,255, 97, 83, 61,255, 70, 59, 41,255, 54, 44, 31,255, 62, 51, 35,255, 87, 73, 54,255,113, 98, 77,255, +143,129,112,255,166,151,137,255,182,167,153,255,187,172,158,255,177,162,148,255,141,126,107,255, 92, 79, 58,255, 58, 48, 34,255, + 75, 63, 45,255,126,112, 92,255,163,148,132,255,179,164,150,255,177,162,146,255,151,136,120,255,125,110, 90,255,135,121,103,255, +178,162,149,255,219,203,191,255,228,211,200,255,195,181,168,255,128,114, 96,255, 94, 80, 60,255, 74, 62, 45,255, 13, 11, 8,255, + 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 61, 61, 61,255, 90, 82, 71,255,111, 96, 72,255, 94, 81, 60,255, 66, 55, 39,255, + 52, 43, 29,255, 65, 54, 38,255,119,105, 86,255,194,179,165,255,220,204,192,255,222,205,193,255,214,198,186,255,185,170,155,255, +125,110, 90,255, 92, 79, 58,255,103, 89, 65,255,129,115, 95,255,156,141,125,255,177,161,147,255,191,176,162,255,199,184,171,255, +205,190,177,255,209,193,181,255,211,195,183,255,212,196,185,255,214,198,185,255,214,198,186,255,214,198,186,255,214,198,186,255, +215,199,187,255,215,199,187,255,214,199,186,255,215,199,186,255,214,198,185,255,214,198,186,255,212,196,184,255,212,196,184,255, +212,196,183,255,211,195,182,255,209,193,181,255,209,193,181,255,208,192,180,255,208,192,179,255,207,191,178,255,207,191,178,255, +206,190,178,255,206,190,178,255,205,189,177,255,205,189,177,255,205,189,177,255,205,189,177,255,205,189,177,255,206,190,177,255, +206,190,178,255,207,191,179,255,209,193,181,255,211,195,183,255,214,198,186,255,215,199,187,255,215,199,187,255,210,194,182,255, +196,181,167,255,164,149,134,255,107, 93, 72,255, 68, 57, 41,255, 51, 42, 29,255, 68, 58, 40,255, 97, 83, 61,255,125,111, 90,255, +154,139,123,255,175,160,146,255,189,173,160,255,192,177,164,255,179,164,150,255,139,125,106,255, 87, 74, 54,255, 58, 48, 33,255, + 90, 77, 56,255,136,122,103,255,163,148,133,255,172,157,142,255,159,144,129,255,133,118,100,255,129,115, 95,255,150,135,119,255, +197,181,168,255,209,194,182,255,160,146,130,255,107, 93, 71,255, 97, 83, 60,255, 84, 71, 52,255, 39, 33, 24,255, 1, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 90, 82, 71,255,110, 96, 72,255, 99, 85, 62,255, 74, 63, 45,255, + 54, 44, 31,255, 57, 47, 33,255, 90, 77, 57,255,163,149,132,255,213,198,186,255,222,205,194,255,218,202,190,255,203,188,174,255, +158,143,127,255,104, 90, 68,255, 95, 81, 59,255,114, 99, 77,255,143,128,110,255,164,150,134,255,182,166,153,255,194,178,165,255, +201,185,172,255,205,189,177,255,209,193,180,255,211,195,183,255,213,197,185,255,214,198,186,255,214,198,186,255,215,199,187,255, +214,198,186,255,214,198,186,255,214,199,186,255,214,198,186,255,214,198,185,255,213,197,185,255,212,196,184,255,211,195,183,255, +211,195,182,255,210,194,181,255,209,193,181,255,208,192,180,255,207,192,179,255,207,191,178,255,206,190,177,255,206,190,177,255, +204,189,176,255,204,188,176,255,204,188,175,255,203,187,174,255,203,187,174,255,202,187,174,255,202,187,174,255,203,187,174,255, +203,187,174,255,205,189,177,255,207,191,178,255,210,194,181,255,212,196,184,255,215,199,186,255,215,199,187,255,212,196,184,255, +202,186,173,255,174,159,145,255,118,103, 82,255, 67, 56, 39,255, 53, 44, 32,255, 80, 68, 49,255,108, 94, 71,255,138,124,105,255, +164,150,134,255,184,169,155,255,196,180,167,255,196,181,168,255,179,164,149,255,133,118, 99,255, 79, 67, 48,255, 62, 52, 37,255, +106, 93, 71,255,143,128,111,255,161,146,130,255,161,146,130,255,140,125,108,255,128,114, 94,255,135,121,102,255,164,150,134,255, +176,162,148,255,121,107, 88,255,104, 89, 66,255,101, 86, 64,255, 90, 77, 56,255, 63, 53, 39,255, 1, 1, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 91, 83, 72,255,111, 96, 72,255,102, 88, 64,255, 84, 71, 52,255, + 59, 49, 34,255, 53, 44, 30,255, 71, 59, 41,255,123,109, 89,255,193,177,164,255,219,203,192,255,221,205,193,255,213,197,185,255, +190,175,161,255,135,120,100,255, 98, 84, 61,255,100, 85, 63,255,121,106, 85,255,149,134,117,255,169,154,138,255,183,168,154,255, +194,178,165,255,201,186,173,255,206,190,177,255,209,193,180,255,211,195,182,255,211,195,183,255,213,197,185,255,213,197,185,255, +214,198,186,255,214,198,186,255,214,198,185,255,213,197,185,255,213,197,184,255,212,196,183,255,211,195,183,255,210,194,182,255, +209,193,181,255,209,193,180,255,208,192,179,255,206,190,178,255,206,190,177,255,205,189,176,255,204,188,175,255,203,187,174,255, +202,186,173,255,201,186,173,255,201,185,172,255,200,184,171,255,199,184,170,255,199,183,170,255,199,183,170,255,199,183,170,255, +200,185,172,255,202,186,173,255,204,188,175,255,208,192,179,255,211,195,183,255,214,198,186,255,215,199,187,255,213,197,185,255, +205,189,176,255,180,164,149,255,127,113, 92,255, 65, 55, 39,255, 62, 53, 38,255, 94, 81, 59,255,121,107, 86,255,151,136,120,255, +175,160,146,255,193,178,164,255,201,185,172,255,197,182,169,255,174,159,145,255,119,106, 85,255, 68, 57, 41,255, 79, 67, 49,255, +121,106, 85,255,146,132,114,255,157,142,126,255,146,131,114,255,129,115, 96,255,128,114, 94,255,139,125,107,255,146,131,115,255, + 99, 86, 65,255,103, 88, 64,255,103, 88, 65,255, 93, 80, 58,255, 76, 64, 47,255, 4, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 92, 85, 74,255,112, 98, 74,255,104, 89, 65,255, 92, 78, 57,255, + 69, 57, 41,255, 53, 44, 30,255, 60, 49, 34,255, 90, 77, 55,255,155,140,123,255,207,192,179,255,221,204,193,255,219,203,191,255, +208,192,179,255,178,163,148,255,126,112, 91,255, 99, 85, 63,255,104, 90, 67,255,128,113, 93,255,153,139,122,255,171,156,142,255, +185,169,156,255,194,178,165,255,200,185,172,255,205,189,176,255,207,191,179,255,209,194,181,255,211,195,183,255,212,196,184,255, +213,197,185,255,213,197,185,255,213,197,184,255,213,196,184,255,212,196,183,255,211,195,182,255,210,194,182,255,209,193,181,255, +208,192,180,255,207,191,178,255,206,190,177,255,205,189,177,255,204,188,175,255,203,187,174,255,202,186,173,255,201,185,172,255, +200,184,171,255,200,184,171,255,198,182,169,255,197,182,168,255,197,181,168,255,196,180,167,255,195,179,166,255,195,179,166,255, +196,180,167,255,198,182,169,255,201,185,172,255,205,190,177,255,210,194,181,255,213,197,185,255,215,199,186,255,214,198,186,255, +207,191,178,255,183,167,153,255,129,114, 94,255, 66, 55, 39,255, 77, 65, 48,255,106, 92, 69,255,136,122,103,255,163,148,133,255, +185,170,157,255,200,185,172,255,204,188,176,255,195,180,167,255,162,147,132,255,101, 87, 67,255, 65, 54, 39,255,100, 86, 64,255, +129,115, 95,255,147,132,116,255,147,132,116,255,132,118, 99,255,124,110, 90,255,123,109, 88,255,117,103, 83,255, 96, 83, 62,255, +103, 88, 65,255,104, 89, 66,255, 96, 82, 60,255, 80, 67, 48,255, 16, 14, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 93, 86, 75,255,116,101, 78,255,105, 91, 67,255, 97, 83, 61,255, + 80, 67, 49,255, 59, 49, 34,255, 55, 45, 31,255, 70, 59, 42,255,112, 98, 77,255,178,163,149,255,214,198,186,255,220,204,192,255, +215,199,187,255,201,186,173,255,169,154,139,255,124,109, 89,255,103, 88, 65,255,109, 95, 71,255,130,116, 95,255,153,138,122,255, +171,156,141,255,184,169,154,255,193,178,164,255,198,182,169,255,203,188,175,255,206,190,177,255,208,192,179,255,209,193,181,255, +210,194,181,255,211,195,182,255,211,195,182,255,211,195,182,255,210,194,181,255,210,194,181,255,209,193,180,255,207,191,178,255, +206,190,178,255,205,190,176,255,204,188,175,255,203,187,174,255,202,186,173,255,201,185,172,255,200,184,171,255,198,182,169,255, +197,182,168,255,197,181,168,255,196,180,167,255,194,178,165,255,193,177,164,255,192,176,163,255,190,175,161,255,190,175,161,255, +191,175,162,255,194,178,165,255,197,182,168,255,203,188,174,255,209,193,180,255,213,197,185,255,215,198,186,255,214,198,185,255, +207,191,179,255,183,168,154,255,127,112, 93,255, 64, 54, 38,255, 94, 80, 59,255,121,107, 85,255,150,135,118,255,175,160,145,255, +195,180,167,255,205,189,177,255,204,189,176,255,187,172,158,255,141,126,109,255, 78, 66, 48,255, 83, 71, 51,255,114, 99, 78,255, +135,121,102,255,144,129,112,255,135,120,101,255,123,108, 88,255,114,101, 78,255,103, 89, 66,255, 97, 83, 61,255,103, 89, 66,255, +104, 90, 66,255, 98, 84, 62,255, 86, 73, 53,255, 28, 24, 18,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 93, 85, 74,255,117,102, 80,255,107, 93, 69,255,100, 86, 63,255, + 89, 75, 55,255, 69, 58, 42,255, 55, 45, 32,255, 59, 49, 34,255, 83, 70, 50,255,134,120,101,255,192,176,163,255,216,200,188,255, +220,204,192,255,213,197,185,255,199,183,170,255,167,152,137,255,125,110, 90,255,108, 93, 69,255,114, 99, 76,255,132,118, 98,255, +152,137,120,255,166,151,136,255,179,164,149,255,189,174,159,255,195,179,166,255,198,183,170,255,203,187,174,255,205,189,176,255, +206,190,178,255,207,191,178,255,207,191,178,255,207,191,179,255,207,191,179,255,207,191,178,255,206,190,178,255,206,190,177,255, +205,189,175,255,204,188,175,255,203,188,175,255,202,187,174,255,201,185,172,255,200,185,171,255,200,184,171,255,198,182,169,255, +197,181,168,255,195,179,166,255,194,178,165,255,192,177,163,255,190,174,161,255,189,173,160,255,186,171,157,255,185,170,156,255, +186,170,156,255,188,172,159,255,193,178,164,255,201,185,172,255,208,192,179,255,213,197,184,255,214,198,186,255,213,197,185,255, +206,191,178,255,182,166,152,255,115,101, 80,255, 81, 71, 56,255,108, 94, 71,255,136,122,103,255,163,149,133,255,187,171,158,255, +202,186,174,255,207,191,179,255,200,184,171,255,170,155,141,255,108, 95, 74,255, 72, 61, 43,255,103, 88, 66,255,124,109, 88,255, +137,123,104,255,134,119,101,255,122,107, 87,255,111, 97, 74,255, 99, 85, 62,255, 96, 82, 60,255,103, 89, 65,255,104, 90, 66,255, + 99, 85, 63,255, 88, 75, 54,255, 42, 36, 26,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 88, 81, 69,255,115,100, 77,255,109, 94, 71,255,103, 89, 65,255, + 94, 81, 59,255, 80, 68, 49,255, 63, 52, 37,255, 56, 46, 32,255, 65, 54, 38,255, 94, 81, 59,255,149,134,117,255,197,182,169,255, +217,200,188,255,219,203,191,255,211,195,183,255,197,182,169,255,173,158,143,255,141,127,109,255,123,109, 87,255,123,108, 86,255, +134,119, 99,255,148,134,116,255,163,148,132,255,173,158,143,255,183,167,152,255,190,175,160,255,194,179,165,255,198,182,168,255, +200,185,171,255,202,186,173,255,203,187,174,255,204,189,175,255,205,189,176,255,205,189,176,255,204,188,176,255,204,188,176,255, +204,188,175,255,204,188,175,255,203,187,174,255,202,186,173,255,201,186,173,255,200,185,171,255,199,184,170,255,198,183,169,255, +197,181,168,255,196,179,167,255,194,178,164,255,191,176,163,255,189,173,159,255,186,171,157,255,184,168,154,255,181,166,152,255, +180,164,150,255,182,167,152,255,189,173,159,255,199,183,170,255,207,191,179,255,213,197,184,255,213,197,185,255,213,197,185,255, +206,190,177,255,176,161,146,255,100, 87, 69,255, 97, 85, 65,255,123,109, 88,255,151,136,120,255,176,162,147,255,196,181,168,255, +206,190,178,255,204,188,176,255,185,170,157,255,134,120,101,255, 79, 66, 47,255, 90, 77, 56,255,115,101, 79,255,129,114, 95,255, +133,118, 99,255,121,106, 85,255,108, 95, 72,255, 96, 82, 60,255, 96, 82, 60,255,103, 89, 65,255,104, 90, 67,255,100, 86, 63,255, + 88, 75, 55,255, 38, 33, 23,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 82, 75, 63,255,107, 92, 68,255,108, 94, 69,255,105, 90, 67,255, + 99, 85, 63,255, 89, 76, 55,255, 74, 62, 45,255, 60, 50, 35,255, 59, 48, 34,255, 72, 61, 43,255,102, 88, 67,255,157,142,125,255, +199,183,170,255,216,200,188,255,218,202,190,255,211,195,183,255,198,182,170,255,180,165,151,255,158,144,127,255,140,126,108,255, +136,122,103,255,142,127,109,255,151,136,119,255,161,146,130,255,172,156,141,255,179,164,149,255,185,170,156,255,190,175,161,255, +194,178,165,255,197,181,168,255,200,184,171,255,202,187,173,255,204,188,176,255,205,189,176,255,205,189,177,255,205,189,177,255, +205,189,176,255,205,189,176,255,204,188,175,255,203,188,175,255,203,187,174,255,202,186,173,255,200,185,171,255,199,184,170,255, +198,182,169,255,195,180,166,255,194,179,165,255,192,176,162,255,189,173,159,255,185,171,157,255,182,167,152,255,178,163,149,255, +175,160,145,255,175,160,146,255,184,169,155,255,197,181,168,255,207,191,179,255,213,197,184,255,213,197,185,255,211,195,183,255, +203,187,174,255,164,148,132,255, 92, 80, 62,255,113, 99, 76,255,141,126,108,255,166,151,137,255,189,173,160,255,202,186,174,255, +206,190,177,255,192,177,164,255,151,136,119,255, 92, 78, 58,255, 84, 72, 51,255,110, 96, 74,255,122,108, 87,255,130,115, 96,255, +120,105, 85,255,107, 93, 69,255, 94, 81, 59,255, 96, 83, 60,255,103, 89, 65,255,104, 90, 67,255,100, 86, 64,255, 91, 78, 56,255, + 40, 34, 25,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 62,255, 74, 68, 57,255, 97, 83, 60,255,103, 89, 66,255,104, 90, 66,255, +101, 87, 64,255, 94, 81, 59,255, 84, 70, 51,255, 70, 58, 42,255, 60, 50, 34,255, 62, 51, 36,255, 77, 66, 47,255,108, 94, 72,255, +160,145,128,255,198,182,169,255,213,197,185,255,216,200,188,255,212,196,184,255,201,185,172,255,189,174,160,255,177,162,146,255, +163,148,133,255,157,142,126,255,158,143,126,255,162,147,131,255,169,153,137,255,175,160,145,255,182,167,152,255,189,173,159,255, +193,178,164,255,198,182,169,255,201,185,172,255,204,188,175,255,205,189,176,255,207,191,178,255,207,191,179,255,208,192,179,255, +208,192,179,255,208,192,179,255,206,191,178,255,206,190,178,255,206,190,177,255,204,188,175,255,203,187,174,255,202,186,173,255, +200,184,171,255,198,183,169,255,196,180,167,255,193,178,164,255,190,174,161,255,186,171,156,255,181,166,151,255,175,160,145,255, +171,156,142,255,171,156,141,255,180,165,151,255,196,180,167,255,208,192,179,255,212,196,184,255,212,196,184,255,210,194,181,255, +198,182,169,255,142,128,111,255,100, 88, 68,255,131,117, 97,255,158,143,127,255,180,165,151,255,196,181,167,255,203,187,174,255, +194,179,166,255,160,145,129,255,104, 91, 70,255, 89, 76, 55,255,107, 93, 71,255,120,106, 84,255,126,112, 92,255,120,105, 84,255, +106, 91, 68,255, 93, 80, 58,255, 95, 81, 60,255,103, 89, 65,255,104, 90, 66,255,100, 86, 64,255, 90, 76, 57,255, 35, 30, 22,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 62, 62,255, 66, 59, 51,255, 82, 69, 50,255, 95, 81, 60,255,101, 87, 63,255, +100, 86, 64,255, 97, 83, 61,255, 90, 77, 56,255, 80, 67, 49,255, 68, 57, 41,255, 62, 51, 35,255, 65, 54, 38,255, 80, 68, 49,255, +111, 97, 75,255,158,143,126,255,193,178,164,255,210,194,182,255,214,198,186,255,212,196,184,255,206,190,177,255,198,182,169,255, +188,173,159,255,181,165,151,255,176,161,147,255,176,161,146,255,178,163,148,255,182,166,152,255,187,171,157,255,192,176,163,255, +196,180,166,255,200,184,171,255,203,187,174,255,205,189,176,255,206,190,178,255,208,192,179,255,209,193,181,255,209,193,181,255, +210,194,181,255,210,194,181,255,210,194,181,255,209,193,181,255,208,192,179,255,207,191,178,255,206,190,177,255,204,188,176,255, +203,187,174,255,201,185,172,255,198,182,169,255,195,180,166,255,192,176,162,255,186,171,157,255,180,165,150,255,172,157,142,255, +167,152,136,255,167,152,137,255,179,164,150,255,197,181,168,255,209,193,180,255,211,195,183,255,211,195,182,255,208,192,179,255, +189,174,160,255,121,108, 89,255,122,108, 88,255,150,135,119,255,173,158,144,255,190,175,161,255,197,182,169,255,191,176,163,255, +158,144,128,255,111, 97, 75,255, 98, 84, 61,255,110, 95, 73,255,120,106, 86,255,124,110, 89,255,118,104, 82,255,104, 89, 67,255, + 92, 79, 57,255, 96, 82, 60,255,104, 89, 66,255,104, 90, 67,255,100, 86, 64,255, 85, 73, 53,255, 26, 22, 16,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 59, 54, 46,255, 65, 54, 38,255, 81, 69, 49,255, 92, 78, 57,255, + 97, 84, 61,255, 97, 84, 62,255, 94, 81, 59,255, 87, 74, 53,255, 77, 65, 47,255, 68, 57, 40,255, 63, 52, 37,255, 68, 56, 40,255, + 83, 69, 50,255,108, 94, 71,255,151,136,119,255,185,170,156,255,205,189,177,255,213,197,184,255,213,197,185,255,209,193,181,255, +205,189,176,255,199,183,170,255,195,179,166,255,193,178,164,255,193,178,164,255,194,178,165,255,197,181,168,255,199,184,170,255, +202,186,173,255,204,188,175,255,206,190,178,255,208,192,179,255,210,194,181,255,211,195,183,255,212,196,183,255,213,197,184,255, +213,197,184,255,213,197,184,255,212,196,184,255,212,196,183,255,211,195,182,255,210,194,182,255,208,192,180,255,207,191,178,255, +205,189,177,255,202,186,173,255,200,184,171,255,196,181,167,255,192,176,163,255,186,172,157,255,179,163,149,255,169,154,139,255, +162,147,132,255,164,150,134,255,180,165,151,255,200,184,171,255,209,193,180,255,211,195,182,255,209,193,180,255,205,188,176,255, +172,157,142,255,116,103, 84,255,144,129,113,255,168,153,138,255,184,169,155,255,191,175,162,255,183,168,154,255,150,135,118,255, +111, 97, 75,255,113, 98, 76,255,121,106, 86,255,124,110, 90,255,124,109, 89,255,117,103, 81,255,103, 89, 66,255, 90, 77, 56,255, + 97, 83, 61,255,103, 89, 65,255,103, 89, 66,255,100, 86, 63,255, 85, 73, 54,255, 15, 13, 9,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 56, 51, 44,255, 54, 44, 30,255, 65, 54, 38,255, 79, 66, 47,255, + 89, 75, 55,255, 94, 80, 58,255, 94, 81, 59,255, 91, 77, 56,255, 85, 72, 52,255, 76, 65, 46,255, 69, 58, 40,255, 66, 55, 39,255, + 69, 58, 41,255, 82, 70, 50,255,105, 91, 68,255,143,128,109,255,175,160,146,255,197,181,168,255,208,192,179,255,211,195,183,255, +210,194,182,255,208,192,180,255,207,191,178,255,203,188,175,255,202,186,173,255,202,186,173,255,203,187,174,255,204,188,175,255, +205,190,177,255,208,192,179,255,210,194,181,255,211,195,183,255,212,196,184,255,214,198,186,255,215,199,186,255,215,199,187,255, +216,200,187,255,216,199,187,255,215,199,187,255,214,198,186,255,214,198,186,255,212,196,184,255,211,195,182,255,210,194,181,255, +208,192,178,255,205,189,176,255,202,186,173,255,198,182,169,255,193,177,164,255,186,171,157,255,175,160,146,255,164,149,133,255, +156,141,125,255,163,148,133,255,186,171,156,255,203,188,174,255,208,192,180,255,208,192,180,255,207,191,178,255,197,182,169,255, +139,125,107,255,133,120,102,255,163,148,132,255,178,163,149,255,182,167,154,255,170,155,141,255,143,128,111,255,121,107, 86,255, +129,114, 96,255,135,121,102,255,131,117, 98,255,126,112, 92,255,117,103, 82,255,102, 88, 65,255, 89, 76, 56,255, 97, 83, 61,255, +104, 89, 66,255,103, 89, 65,255, 98, 84, 62,255, 69, 60, 43,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 56, 51, 44,255, 49, 40, 27,255, 54, 44, 30,255, 64, 53, 37,255, + 76, 64, 46,255, 85, 73, 52,255, 90, 77, 56,255, 91, 77, 56,255, 88, 75, 55,255, 83, 71, 51,255, 77, 65, 46,255, 70, 59, 42,255, + 68, 57, 40,255, 71, 60, 43,255, 82, 70, 49,255,100, 86, 64,255,129,115, 94,255,162,148,132,255,185,170,156,255,199,183,170,255, +207,191,178,255,209,193,181,255,210,194,182,255,209,193,181,255,209,193,180,255,209,192,180,255,208,192,180,255,209,193,181,255, +210,194,182,255,211,195,183,255,212,196,184,255,213,197,185,255,214,198,186,255,215,199,187,255,216,200,188,255,216,200,188,255, +217,200,188,255,216,200,188,255,216,200,187,255,215,199,187,255,214,198,186,255,214,198,185,255,212,196,184,255,210,194,182,255, +209,193,180,255,206,190,177,255,203,187,174,255,199,183,170,255,193,178,164,255,185,170,156,255,172,157,142,255,157,142,126,255, +151,136,120,255,167,153,138,255,193,177,164,255,205,190,177,255,207,191,178,255,206,190,177,255,204,189,176,255,172,157,143,255, +125,113, 95,255,160,146,130,255,173,158,144,255,172,157,143,255,158,143,127,255,140,126,108,255,137,122,104,255,144,131,113,255, +146,131,114,255,137,124,105,255,130,116, 97,255,118,103, 82,255,100, 86, 64,255, 90, 77, 56,255, 99, 85, 63,255,104, 89, 66,255, +103, 88, 65,255, 96, 82, 61,255, 48, 41, 30,255, 2, 2, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 62, 62,255, 65, 59, 50,255, 55, 45, 31,255, 49, 40, 27,255, 53, 44, 30,255, + 62, 52, 36,255, 72, 60, 44,255, 81, 68, 50,255, 86, 73, 54,255, 88, 75, 55,255, 85, 72, 53,255, 82, 69, 49,255, 77, 65, 46,255, + 72, 61, 43,255, 70, 59, 42,255, 73, 61, 43,255, 82, 69, 49,255, 94, 81, 60,255,117,102, 80,255,148,132,114,255,171,156,141,255, +187,172,158,255,198,182,169,255,204,188,176,255,207,191,179,255,209,193,181,255,210,194,182,255,211,195,182,255,210,194,183,255, +212,196,183,255,212,196,184,255,213,197,185,255,215,199,187,255,215,199,187,255,216,200,188,255,217,201,188,255,217,201,189,255, +216,201,189,255,217,201,189,255,217,201,189,255,216,200,188,255,215,199,186,255,214,198,186,255,213,197,185,255,211,195,183,255, +209,193,181,255,207,191,178,255,204,188,175,255,199,183,170,255,193,178,164,255,183,168,153,255,166,151,136,255,148,134,117,255, +150,135,118,255,178,163,148,255,200,184,171,255,205,189,176,255,204,189,175,255,204,188,175,255,194,178,165,255,137,124,108,255, +159,144,129,255,168,153,139,255,163,148,133,255,150,136,120,255,147,132,115,255,153,139,123,255,158,143,127,255,154,140,124,255, +143,129,112,255,134,119,101,255,119,105, 84,255, 99, 85, 62,255, 89, 77, 56,255,100, 86, 63,255,103, 89, 66,255,102, 87, 64,255, + 88, 76, 55,255, 18, 15, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255,101, 93, 84,255, 83, 71, 53,255, 55, 44, 30,255, 50, 41, 28,255, + 53, 43, 29,255, 60, 49, 34,255, 69, 58, 41,255, 76, 64, 46,255, 82, 69, 50,255, 84, 71, 51,255, 84, 71, 52,255, 81, 68, 49,255, + 77, 65, 47,255, 74, 62, 44,255, 73, 61, 44,255, 74, 63, 44,255, 81, 68, 49,255, 91, 78, 56,255,106, 91, 69,255,131,116, 96,255, +155,140,123,255,172,158,142,255,186,170,156,255,194,179,166,255,201,185,172,255,204,188,175,255,207,191,178,255,208,192,180,255, +210,194,181,255,211,195,182,255,212,196,184,255,213,197,185,255,214,198,186,255,215,199,187,255,216,200,187,255,216,200,188,255, +216,200,188,255,216,200,188,255,216,200,188,255,215,199,187,255,214,198,186,255,214,198,185,255,212,196,183,255,211,195,182,255, +209,193,180,255,206,190,177,255,202,187,174,255,199,183,170,255,192,176,162,255,178,164,149,255,156,141,125,255,139,125,107,255, +157,143,127,255,190,175,162,255,202,186,173,255,202,187,173,255,201,186,172,255,200,184,171,255,165,150,135,255,155,140,125,255, +164,149,134,255,158,143,128,255,153,139,123,255,158,143,127,255,165,150,135,255,166,151,136,255,161,146,130,255,149,134,118,255, +137,123,104,255,121,106, 85,255, 98, 84, 62,255, 91, 78, 57,255,101, 87, 64,255,103, 89, 66,255, 98, 84, 62,255, 70, 60, 44,255, + 7, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,145,136,131,255,169,154,138,255, 84, 71, 53,255, 55, 45, 31,255, + 50, 41, 28,255, 52, 42, 29,255, 58, 48, 33,255, 65, 54, 39,255, 72, 60, 43,255, 77, 65, 47,255, 80, 68, 50,255, 81, 68, 50,255, + 80, 68, 48,255, 78, 65, 47,255, 75, 64, 46,255, 75, 63, 45,255, 76, 64, 46,255, 81, 68, 49,255, 88, 75, 54,255, 99, 84, 62,255, +115,100, 78,255,136,121,102,255,155,140,124,255,170,155,140,255,181,166,151,255,189,174,160,255,195,180,167,255,200,184,171,255, +203,187,175,255,206,190,177,255,207,191,179,255,209,193,181,255,211,195,182,255,212,196,183,255,212,196,184,255,214,198,185,255, +214,198,185,255,214,198,185,255,214,198,186,255,214,198,185,255,212,196,184,255,212,196,183,255,211,195,182,255,209,193,180,255, +207,191,178,255,204,188,175,255,201,186,173,255,197,182,168,255,189,174,160,255,171,156,141,255,141,126,109,255,138,123,105,255, +176,161,146,255,198,182,169,255,200,185,171,255,198,182,169,255,200,184,170,255,186,171,157,255,150,136,121,255,160,145,129,255, +159,145,129,255,162,147,132,255,169,154,139,255,172,157,143,255,171,156,141,255,164,149,134,255,152,138,122,255,140,125,107,255, +119,105, 84,255, 97, 83, 62,255, 95, 82, 60,255,102, 88, 65,255,103, 88, 65,255, 87, 75, 55,255, 34, 29, 21,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,149,140,135,255,229,212,201,255,176,162,146,255, 89, 77, 58,255, + 59, 48, 33,255, 52, 42, 29,255, 52, 42, 29,255, 56, 46, 32,255, 61, 51, 36,255, 68, 56, 40,255, 73, 61, 44,255, 77, 65, 46,255, + 78, 67, 47,255, 79, 66, 48,255, 77, 65, 47,255, 77, 64, 46,255, 76, 65, 46,255, 78, 66, 47,255, 81, 68, 49,255, 87, 74, 54,255, + 94, 80, 59,255,103, 90, 67,255,119,104, 82,255,138,123,104,255,153,138,121,255,165,150,134,255,175,160,144,255,183,168,154,255, +189,174,159,255,194,178,165,255,198,182,169,255,202,186,173,255,204,188,175,255,205,190,177,255,207,191,178,255,209,193,180,255, +209,193,180,255,209,193,180,255,209,193,180,255,209,193,180,255,208,192,180,255,207,191,178,255,207,191,178,255,205,189,176,255, +203,187,174,255,202,186,173,255,199,183,170,255,195,179,166,255,183,168,154,255,155,140,124,255,128,113, 93,255,157,142,126,255, +193,178,165,255,198,182,168,255,195,180,166,255,196,180,167,255,194,179,165,255,148,134,119,255,162,147,132,255,166,151,136,255, +171,156,142,255,176,161,147,255,177,162,148,255,173,158,144,255,166,151,136,255,154,140,124,255,140,125,108,255,117,102, 81,255, + 94, 81, 61,255, 97, 83, 62,255,102, 88, 65,255,101, 87, 64,255, 64, 55, 41,255, 6, 5, 4,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,119,111,103,255,216,200,187,255,228,212,201,255,182,166,152,255, +101, 87, 69,255, 63, 52, 36,255, 54, 44, 30,255, 52, 42, 29,255, 54, 44, 31,255, 59, 49, 34,255, 64, 53, 37,255, 69, 57, 41,255, + 72, 61, 43,255, 75, 63, 46,255, 76, 64, 46,255, 77, 65, 46,255, 77, 65, 47,255, 78, 65, 47,255, 79, 67, 48,255, 81, 69, 50,255, + 86, 73, 53,255, 92, 79, 57,255, 98, 85, 62,255,108, 93, 69,255,122,107, 85,255,137,122,102,255,149,134,116,255,159,144,127,255, +168,153,136,255,175,160,145,255,181,166,152,255,187,171,157,255,191,175,162,255,195,179,165,255,197,181,168,255,199,183,170,255, +200,184,171,255,202,186,173,255,202,187,173,255,202,187,173,255,202,186,173,255,202,186,172,255,200,184,171,255,200,184,170,255, +199,183,170,255,198,182,169,255,196,181,167,255,191,175,161,255,171,156,140,255,132,117, 97,255,139,124,107,255,186,171,157,255, +196,181,167,255,192,176,162,255,191,175,161,255,193,178,164,255,161,148,133,255,168,153,139,255,174,159,144,255,177,162,148,255, +179,164,150,255,178,163,149,255,175,160,145,255,168,153,138,255,155,140,124,255,137,122,105,255,113, 99, 77,255, 95, 81, 61,255, +100, 86, 63,255,102, 88, 65,255, 83, 71, 53,255, 29, 25, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 62,255, 74, 68, 57,255,133,119,100,255,207,191,178,255,230,213,203,255, +197,181,168,255,124,110, 92,255, 70, 58, 41,255, 57, 47, 32,255, 53, 43, 30,255, 54, 44, 30,255, 57, 47, 32,255, 61, 50, 35,255, + 64, 54, 38,255, 68, 57, 41,255, 71, 60, 43,255, 73, 61, 44,255, 76, 64, 45,255, 76, 64, 46,255, 78, 66, 47,255, 79, 67, 48,255, + 82, 69, 50,255, 85, 72, 52,255, 90, 77, 56,255, 96, 82, 60,255,102, 88, 65,255,111, 96, 73,255,121,106, 84,255,133,118, 97,255, +143,128,109,255,152,137,120,255,159,144,128,255,167,151,135,255,173,157,142,255,178,162,147,255,182,166,152,255,185,170,155,255, +188,173,158,255,190,174,160,255,191,176,161,255,192,177,162,255,193,177,163,255,193,177,163,255,193,177,163,255,193,178,164,255, +193,177,163,255,194,178,164,255,193,177,163,255,182,166,152,255,142,127,109,255,125,111, 90,255,176,161,146,255,194,177,164,255, +189,173,159,255,186,171,156,255,191,176,162,255,173,159,144,255,172,158,143,255,180,164,150,255,181,166,152,255,180,165,151,255, +178,163,149,255,175,160,146,255,167,152,137,255,153,139,122,255,131,116, 97,255,106, 92, 71,255, 98, 84, 61,255,103, 89, 66,255, + 95, 82, 61,255, 39, 34, 25,255, 5, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 62,255, 68, 61, 53,255, 78, 65, 47,255,117,102, 82,255,194,179,165,255, +227,210,200,255,212,196,184,255,149,134,117,255, 84, 71, 52,255, 63, 52, 36,255, 56, 46, 32,255, 54, 44, 30,255, 55, 45, 31,255, + 59, 48, 34,255, 62, 52, 36,255, 65, 54, 38,255, 68, 57, 40,255, 71, 59, 42,255, 72, 61, 43,255, 74, 62, 44,255, 77, 65, 47,255, + 79, 66, 48,255, 81, 69, 50,255, 84, 72, 52,255, 88, 75, 54,255, 93, 80, 58,255, 98, 85, 62,255,104, 90, 66,255,110, 95, 72,255, +118,103, 80,255,128,113, 92,255,137,122,102,255,145,130,111,255,152,137,119,255,158,143,126,255,164,149,132,255,168,153,137,255, +172,157,141,255,175,160,145,255,177,162,147,255,179,164,149,255,180,165,150,255,183,166,152,255,184,168,154,255,185,169,154,255, +188,172,158,255,191,175,161,255,186,171,157,255,153,138,122,255,115,101, 79,255,167,152,137,255,190,175,161,255,184,169,154,255, +181,166,151,255,188,172,158,255,173,158,144,255,173,158,144,255,183,168,154,255,181,166,152,255,180,165,151,255,178,163,149,255, +174,159,145,255,165,150,135,255,148,133,117,255,121,107, 87,255,100, 87, 66,255,102, 87, 64,255,102, 88, 65,255, 58, 49, 37,255, + 5, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255,103, 96, 87,255, 95, 83, 64,255, 74, 62, 44,255,104, 90, 69,255, +173,158,143,255,221,205,193,255,224,208,197,255,178,163,148,255,112, 98, 79,255, 74, 63, 45,255, 61, 50, 35,255, 57, 47, 32,255, + 56, 46, 32,255, 58, 47, 33,255, 60, 49, 34,255, 63, 52, 36,255, 65, 54, 38,255, 68, 56, 40,255, 70, 58, 42,255, 72, 60, 43,255, + 74, 62, 45,255, 77, 65, 46,255, 80, 68, 48,255, 82, 70, 50,255, 86, 73, 53,255, 90, 77, 56,255, 95, 81, 60,255,100, 86, 63,255, +105, 90, 67,255,110, 95, 71,255,117,102, 78,255,124,109, 87,255,131,116, 95,255,137,122,104,255,144,129,111,255,150,135,117,255, +155,140,123,255,159,143,126,255,162,147,130,255,165,150,134,255,168,152,137,255,171,156,140,255,174,159,143,255,178,163,147,255, +185,169,155,255,186,171,157,255,160,145,130,255,122,108, 87,255,163,149,133,255,188,173,159,255,179,163,149,255,175,160,144,255, +181,165,151,255,176,161,147,255,173,159,145,255,186,170,156,255,183,168,154,255,180,165,151,255,178,163,149,255,173,157,143,255, +160,145,129,255,136,122,104,255,111, 98, 76,255,100, 86, 64,255, 97, 83, 61,255, 72, 63, 46,255, 16, 14, 11,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,143,135,130,255,187,173,160,255,115,102, 84,255, 75, 63, 43,255, + 89, 76, 56,255,140,125,107,255,203,187,174,255,227,211,199,255,207,191,178,255,154,139,122,255, 97, 84, 64,255, 70, 58, 40,255, + 63, 52, 36,255, 59, 49, 34,255, 59, 48, 34,255, 59, 49, 34,255, 61, 50, 35,255, 63, 52, 37,255, 65, 55, 39,255, 68, 56, 40,255, + 70, 58, 42,255, 72, 61, 43,255, 75, 63, 45,255, 77, 65, 47,255, 80, 68, 49,255, 84, 71, 52,255, 88, 75, 55,255, 93, 79, 59,255, + 97, 83, 62,255,101, 87, 66,255,105, 91, 69,255,109, 95, 72,255,114,100, 77,255,120,105, 82,255,126,111, 89,255,133,118, 97,255, +138,123,104,255,143,129,110,255,148,133,115,255,152,137,120,255,157,142,125,255,162,147,130,255,168,153,137,255,177,162,147,255, +186,170,156,255,159,144,128,255,127,112, 93,255,166,151,136,255,181,165,151,255,171,156,140,255,170,154,138,255,178,162,147,255, +174,159,146,255,181,166,153,255,185,170,156,255,183,168,154,255,181,166,151,255,177,162,147,255,168,153,138,255,146,132,115,255, +119,105, 86,255,106, 92, 69,255,100, 87, 64,255, 61, 53, 39,255, 21, 18, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,136,130,255,223,207,195,255,208,193,181,255,142,129,112,255, + 84, 72, 52,255, 80, 68, 49,255,108, 95, 74,255,173,158,143,255,218,202,191,255,223,207,195,255,197,181,168,255,139,125,107,255, + 91, 78, 58,255, 73, 61, 43,255, 66, 54, 39,255, 62, 52, 36,255, 61, 50, 35,255, 62, 52, 36,255, 63, 52, 37,255, 65, 54, 38,255, + 66, 56, 39,255, 69, 57, 41,255, 71, 60, 43,255, 73, 62, 44,255, 76, 64, 46,255, 80, 68, 49,255, 83, 71, 53,255, 87, 74, 55,255, + 91, 78, 58,255, 95, 81, 62,255, 98, 85, 64,255,102, 89, 68,255,106, 92, 71,255,110, 96, 73,255,113, 99, 76,255,118,103, 81,255, +124,109, 87,255,131,116, 95,255,136,121,103,255,143,128,109,255,150,135,117,255,159,144,128,255,172,157,141,255,181,166,151,255, +151,136,119,255,129,115, 96,255,174,159,144,255,172,157,141,255,163,148,132,255,164,149,132,255,174,159,143,255,171,157,144,255, +186,171,157,255,185,170,156,255,182,167,153,255,178,163,150,255,171,157,142,255,155,140,124,255,127,113, 94,255,107, 93, 71,255, +105, 91, 67,255, 68, 59, 43,255, 7, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,141,133,127,255,219,202,190,255,220,204,192,255,217,201,190,255, +178,164,150,255,113,100, 82,255, 81, 68, 49,255, 85, 72, 51,255,130,115, 97,255,186,170,156,255,219,203,191,255,221,204,194,255, +189,173,159,255,139,125,106,255,101, 88, 68,255, 79, 67, 49,255, 70, 58, 41,255, 66, 55, 39,255, 66, 55, 38,255, 65, 54, 38,255, + 66, 55, 39,255, 68, 56, 40,255, 69, 58, 41,255, 71, 60, 43,255, 74, 62, 45,255, 77, 65, 47,255, 80, 68, 50,255, 83, 71, 53,255, + 86, 74, 55,255, 90, 77, 59,255, 93, 80, 61,255, 97, 84, 64,255,101, 88, 67,255,105, 91, 69,255,108, 94, 72,255,112, 97, 75,255, +116,101, 77,255,122,107, 85,255,132,117, 96,255,142,127,108,255,156,141,125,255,173,157,142,255,170,155,140,255,148,134,118,255, +147,133,116,255,173,158,143,255,161,146,129,255,154,139,121,255,159,144,128,255,171,156,141,255,178,163,150,255,189,174,161,255, +185,170,156,255,181,166,152,255,171,156,142,255,155,140,125,255,132,118, 99,255,111, 97, 75,255, 90, 78, 57,255, 61, 53, 39,255, + 13, 12, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 60, 58, 56,255,128,119,111,255,198,183,171,255,216,200,188,255, +218,202,190,255,204,189,178,255,162,149,134,255,104, 91, 72,255, 77, 64, 44,255, 93, 80, 60,255,131,116, 97,255,182,166,151,255, +218,202,191,255,219,203,191,255,196,181,168,255,159,145,129,255,119,105, 85,255, 90, 77, 56,255, 78, 65, 45,255, 73, 61, 43,255, + 71, 60, 42,255, 71, 59, 43,255, 72, 60, 43,255, 73, 61, 44,255, 74, 62, 45,255, 76, 65, 47,255, 79, 67, 49,255, 82, 70, 52,255, + 85, 73, 55,255, 88, 75, 57,255, 91, 79, 60,255, 95, 82, 63,255, 98, 85, 66,255,102, 88, 68,255,105, 91, 70,255,109, 95, 73,255, +115,101, 78,255,127,112, 91,255,145,130,112,255,166,150,135,255,172,157,142,255,152,138,122,255,155,140,125,255,161,146,131,255, +156,141,124,255,145,130,112,255,146,131,113,255,160,145,129,255,174,160,146,255,186,171,158,255,188,172,159,255,182,167,153,255, +171,156,141,255,151,136,120,255,128,114, 94,255,111, 98, 77,255, 74, 64, 49,255, 33, 29, 22,255, 10, 8, 6,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 1, 1, 1,255, 60, 55, 51,255, +156,144,134,255,210,194,182,255,210,194,183,255,201,187,176,255,154,141,127,255, 97, 84, 64,255, 83, 70, 51,255, 90, 77, 56,255, +121,106, 86,255,172,157,142,255,209,193,181,255,219,203,191,255,212,196,184,255,188,172,159,255,152,138,120,255,120,106, 84,255, + 99, 86, 64,255, 89, 76, 55,255, 85, 72, 52,255, 82, 70, 50,255, 82, 69, 50,255, 82, 70, 51,255, 83, 71, 52,255, 85, 73, 53,255, + 88, 75, 56,255, 91, 78, 57,255, 93, 80, 60,255, 97, 84, 63,255,101, 87, 66,255,105, 91, 69,255,113, 99, 76,255,126,111, 90,255, +144,129,110,255,165,150,134,255,175,160,145,255,157,143,128,255,150,136,120,255,163,148,132,255,149,134,115,255,135,120,100,255, +135,120,101,255,147,133,114,255,167,152,137,255,181,167,154,255,187,172,158,255,180,165,151,255,167,152,136,255,144,130,114,255, +122,108, 88,255,105, 92, 72,255, 57, 50, 38,255, 7, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 12, 11, 10,255, 85, 79, 73,255,133,124,114,255,169,157,148,255,182,170,159,255,156,142,125,255,115,102, 85,255, + 90, 77, 57,255, 84, 71, 49,255,106, 92, 71,255,144,129,112,255,178,162,146,255,200,184,172,255,212,196,185,255,210,195,183,255, +196,180,167,255,175,159,144,255,155,140,123,255,140,125,107,255,129,114, 95,255,122,107, 87,255,118,103, 83,255,117,102, 81,255, +117,103, 82,255,120,106, 85,255,125,110, 90,255,132,117, 97,255,142,126,107,255,152,136,119,255,163,148,132,255,173,158,144,255, +175,161,146,255,163,149,135,255,151,137,121,255,148,134,116,255,137,122,102,255,124,109, 87,255,125,110, 89,255,141,126,107,255, +159,145,130,255,176,163,149,255,179,164,151,255,167,153,137,255,151,136,120,255,124,111, 94,255, 92, 82, 66,255, 64, 55, 44,255, + 27, 24, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 15, 14, 13,255, 35, 32, 30,255, 65, 60, 57,255,105, 98, 90,255, +140,129,118,255,140,127,111,255,110, 97, 77,255, 88, 75, 53,255, 89, 75, 55,255,104, 90, 69,255,124,110, 91,255,148,133,115,255, +171,156,141,255,190,175,161,255,200,185,172,255,203,188,175,255,201,185,172,255,197,181,168,255,192,177,163,255,188,173,160,255, +186,171,157,255,185,170,156,255,184,170,156,255,183,168,155,255,180,166,153,255,176,161,147,255,164,150,135,255,150,135,117,255, +135,121,101,255,124,110, 88,255,116,101, 80,255,112, 98, 75,255,121,106, 85,255,145,131,112,255,161,148,133,255,164,150,135,255, +159,145,128,255,144,131,113,255,109, 97, 83,255, 66, 59, 50,255, 32, 29, 23,255, 17, 15, 12,255, 3, 3, 2,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 1, 0,255, 33, 30, 29,255, 78, 71, 64,255,118,107, 91,255,102, 89, 69,255, 88, 75, 54,255, 86, 74, 54,255, + 88, 76, 55,255, 93, 79, 58,255,101, 88, 66,255,112, 98, 78,255,124,110, 90,255,133,119, 98,255,139,124,105,255,141,127,108,255, +141,126,108,255,139,124,105,255,132,117, 98,255,125,110, 90,255,115,101, 80,255,109, 94, 73,255,105, 90, 69,255,104, 90, 68,255, +106, 92, 70,255,113, 99, 76,255,130,117, 97,255,150,136,121,255,158,146,131,255,136,123,111,255, 86, 78, 68,255, 64, 58, 49,255, + 21, 18, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 18, 17, 17,255, 49, 45, 41,255, 68, 62, 53,255, + 79, 71, 59,255, 82, 72, 59,255, 89, 78, 61,255, 90, 78, 61,255, 95, 82, 63,255, 97, 84, 64,255, 98, 85, 65,255,100, 86, 66,255, +101, 88, 68,255,100, 87, 67,255,100, 87, 67,255, 96, 83, 65,255, 94, 83, 66,255, 94, 83, 68,255, 88, 78, 63,255, 88, 79, 67,255, + 67, 61, 54,255, 51, 47, 43,255, 42, 39, 37,255, 13, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 8, 8, 8,255, 17, 16, 15,255, 19, 17, 15,255, 22, 20, 18,255, 24, 22, 19,255, 25, 23, 19,255, 27, 24, 20,255, + 27, 25, 21,255, 25, 22, 19,255, 23, 21, 18,255, 19, 18, 15,255, 17, 16, 14,255, 14, 13, 12,255, 5, 5, 5,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, + 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, + 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 67, 65, 0, 0,104, 0, 0, 0, 8,103,103, 7, 29, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, + 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63, +205,204,204, 61, 0, 0,200, 66, 0, 0, 12, 66,161, 14,234, 64, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0,108, 1, 0, 0,216,103,103, 7, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,247,255,239, 65, 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,168,105,103, 7, + 2, 0, 0, 0, 46, 26,128, 63, 25, 4,240, 65, 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 11, 3, 0, 1, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,111, 18,131, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,160,107,103, 7, 68, 65, 84, 65, 16, 1, 0, 0,168,105,103, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,243, 4, 53,191, +242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63, 32,107,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 32,107,103, 7, 81, 1, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +160,107,103, 7, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0,120, 1, 0, 0, 40,108,103, 7,132, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114, 99, 80, 61,114, 99, 80, 61,114, 99, 80, 61, 0, 0, 0, 0,199, 54, 36, 60,199, 54, 36, 60,199, 54, 36, 60, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0,128, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,160, 64, 0, 0,200, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 0, 0,128, 63,205,204, 76, 61, 0, 0, 5, 0, 0, 0, 0, 0, 10,215,163, 59, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,110,103, 7, 68, 65, 84, 65, 32, 0, 0, 0, + 8,110,103, 7, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0,144,110,103, 7,121, 0, 0, 0, 1, 0, 0, 0, +208,114,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, + 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,103,103, 7, 0, 0, 0, 0, + 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, + 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,222,149, 47, 63, 53, 70, 58, 63,222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, + 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,149, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, + 78,255,170, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,125,103,133, 51,176,219,194,178, 0, 0, 0, 0,190, 32, 66, 51, 1, 0,128, 63, +168,200,153, 51, 0, 0, 0, 0, 32,206, 18,179,126,126,149, 50, 1, 0,128, 63, 0, 0, 0, 0,241,251,133, 52,172,182, 27,180, +174,236,252, 51, 0, 0,128, 63, 0, 0,128, 63,157,190,215, 49,167,170, 4, 52, 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, + 33, 69, 15, 51, 0, 0, 0,128, 73,254, 67, 51,243, 97,106, 49, 0, 0,128, 63, 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, + 0, 0,128, 53, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63, +187,225, 16, 63, 0, 0,128, 63,205,204,204, 62,237, 54, 32, 63, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, -208, 4, 0, 0, 40,189, 89, 3, 0, 0, 0, 0,121, 0, 0, 0, 1, 0, 0, 0,200,195, 89, 3, 0, 0, 0, 0, 8,184, 89, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112,104,101,114,101, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +220, 3, 0, 0,208,114,103, 7,121, 0, 0, 0, 1, 0, 0, 0, 8,120,103, 7,144,110,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 66, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 8,114, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8,197,104, 7, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 40, 54, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,129, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,194, 89, 3, 0, 0, 0, 0,152,194, 89, 3, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, -222,149, 47, 63, 52, 70, 58, 63,179, 56, 49,188, 0, 0, 0,128, 86,126,162,190,227,251,159, 62, 56, 53,101, 63, 0, 0, 0,128, - 7,165, 39, 63,149, 84, 28,191, 50,247,227, 62, 0, 0, 0,128,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, 79, 66, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63, -205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, - 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 56,102, 3,128, 22,252, 2, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,222,149, 47, 63, 52, 70, 58, 63, +179, 56, 49,188, 0, 0, 0,128, 86,126,162,190,227,251,159, 62, 56, 53,101, 63, 0, 0, 0,128, 7,165, 39, 63,149, 84, 28,191, + 50,247,227, 62, 0, 0, 0,128,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, 79, 66, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, + 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,194, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,181,126, 4, - 0, 0, 0, 0,184,189,126, 4, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16,119,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 80, 3,100, 3,216, 81,252, 2, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,216, 56,102, 3, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,128, 22,252, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +144, 0, 0, 0, 16,119,103, 7,124, 0, 0, 0, 1, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0, 72,194, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,152,194, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,152, 0, 0, 0,232,194, 89, 3, 0, 0, 0, 0,124, 0, 0, 0, 1, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,205,204, 76, 62, 10,215,163, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, + 79, 66, 0, 0,220, 3, 0, 0, 8,120,103, 7,121, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,114,103, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,205,204, 76, 62, 10,215,163, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 79, 66, 0, 0,208, 4, 0, 0,200,195, 89, 3, 0, 0, 0, 0, -121, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,189, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,103,103, 7, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,229,123, 38, 63, 87, 43, 98, 61,229,229,238, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54,236,148,190, + 25,134,116, 63,236, 13, 98,189, 0, 0, 0, 0,221,102, 69,191, 57,174, 76,190, 34,194, 26, 63, 0, 0, 0, 0, 37,255, 16, 63, +241,161, 95, 62,164,111, 75, 63, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 35,233,134, 49,251,110, 17,179, 0, 0, 0, 0, 49,158,141, 50, 1, 0,128, 63,126,214,237, 50, 0, 0, 0, 0,155,248, 28,178, +199,139, 96,177,254,255,127, 63, 0, 0, 0, 0, 80,136,159,178,192, 4,158,178,209,114,143,179, 0, 0,128, 63, 53,236,148,190, +222,102, 69,191, 37,255, 16, 63, 0, 0, 0,128, 24,134,116, 63, 57,174, 76,190,240,161, 95, 62, 0, 0, 0,128,235, 13, 98,189, + 34,194, 26, 63,166,111, 75, 63, 0, 0, 0,128,208, 19, 13, 63,234, 65,102,190, 10, 10,231,192, 0, 0,128, 63, 1, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 68, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62, +229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232,176, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, - 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, - 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229,123, 38, 63, - 87, 43, 98, 61,229,229,238, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0,160, 2, 0, 0, 72,124,103, 7, 44, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, 0, 0, 8, 0, + 1, 0, 50, 0,205,204, 76, 62, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, + 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, 0, 0,128, 63, + 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 4, 0, 67, 0, 64, 3, 67, 0, 64, 3, + 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54,236,148,190, 25,134,116, 63,236, 13, 98,189, - 0, 0, 0, 0,221,102, 69,191, 57,174, 76,190, 34,194, 26, 63, 0, 0, 0, 0, 37,255, 16, 63,241,161, 95, 62,164,111, 75, 63, - 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 1, 0,128, 50, 0, 0, 0,179, - 0, 0, 0, 0, 1, 0,128, 50, 1, 0,128, 63, 1, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 1, 0, 0, 39, 1, 0, 0, 52, 1, 0,128, 39, 0, 0,128, 63, 53,236,148,190,222,102, 69,191, 37,255, 16, 63, - 0, 0, 0,128, 24,134,116, 63, 57,174, 76,190,240,161, 95, 62, 0, 0, 0,128,235, 13, 98,189, 34,194, 26, 63,166,111, 75, 63, - 0, 0, 0,128,208, 19, 13, 63,234, 65,102,190, 10, 10,231,192, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, - 5, 0, 1, 0, 0, 0, 68, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, - 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0, -143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61, + 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 80,127,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0, 32, 3, 0, 0, -232,200, 89, 3, 0, 0, 0, 0, 44, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, - 0, 0, 8, 0, 1, 0, 50, 0,205,204, 76, 62, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,160, 63, - 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, - 0, 0,128, 63, 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 4, 0, 67, 0, 64, 3, - 67, 0, 64, 3, 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63, -205,204,204, 61, 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 88,204, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184,205, 89, 3, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111,148, 26, 63,111,148, 26, 63,111,148, 26, 63,205,204, 76, 61,205,204,204, 61, -102,102,166, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 88,204, 89, 3, 0, 0, 0, 0, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,110, 90, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, +192,128,103, 7, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,111,148, 26, 63,111,148, 26, 63,111,148, 26, 63,205,204, 76, 61,205,204,204, 61,102,102,166, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 80,127,103, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24, 34,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 40, 0, 0, 0, -184,205, 89, 3, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 40,206, 89, 3, 0, 0, 0, 0,120,222, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, - 40,206, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0,120,222, 89, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,192,128,103, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, + 96, 0, 0, 0, 1, 0, 1, 0, 49, 0, 49, 0, 72,129,103, 7,176,145,103, 7, 68, 65, 84, 65, 0, 16, 0, 0, 72,129,103, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3509,6 +24901,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0,176,145,103, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4533,21 +25926,146 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0,112, 1, 0, 0,200,110, 90, 3, 0, 0, 0, 0, 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0, + 48, 1, 0, 0, 24, 34,104, 7, 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 64, - 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 5, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,112, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,112, 90, 3, 0, 0, 0, 0, - 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -248,112, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0,248,112, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 7, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 35,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,176, 35,104, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, + 96, 0, 0, 0, 0, 0, 1, 0, 14, 0, 13, 0, 56, 36,104, 7,160, 52,104, 7, 68, 65, 84, 65, 0, 16, 0, 0, 56, 36,104, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, @@ -4676,25 +26194,1173 @@ char datatoc_startup_blend[]= { 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0,176, 1, 0, 0, 72,129, 90, 3, 0, 0, 0, 0, 54, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0, 0, 0,255, 68, 65, 84, 65, 0,144, 0, 0,160, 52,104, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0, + 40, 1, 0, 0, 8,197,104, 7, 54, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 7,101, 3, +224,205,104, 7,192,206,104, 7, 0, 0, 0, 0, 80,200,104, 7, 48,203,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,198,104, 7, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,120,201,104, 7, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 40,204,104, 7, 2, 0, 0, 0, 5, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, + 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 30, 0, 6, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, +224, 7,101, 3, 0, 0, 0, 0, 1, 0, 0, 0, 72,124,103, 7, 68, 65, 84, 65, 84, 1, 0, 0,152,198,104, 7, 88, 1, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,131, 90, 3, 0, 0, 0, 0, -152,138, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,133, 90, 3, 0, 0, 0, 0, - 8,136, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,131, 90, 3, 0, 0, 0, 0, - 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88,134, 90, 3, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232,136, 90, 3, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 30, 0, 6, 0, 1, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0, 72,131, 90, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0,232,200, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0,152,131, 90, 3, 0, 0, 0, 0, - 88, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 72,133, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80,200,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4702,18 +27368,17 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, 72,133, 90, 3, 0, 0, 0, 0, - 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, 1, 0, 0, 0, - 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191,230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191,253,255,127,191, - 0, 0,128,191, 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, - 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, 1, 0, 0, 0, -245,255,127, 63, 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191,250,255,127,191, - 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73, -230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0, 88,134, 90, 3, 0, 0, 0, 0, 88, 1, 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, + 80,200,104, 7, 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, + 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191,230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191, +253,255,127,191, 0, 0,128,191, 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, + 26,182,230, 73, 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, + 1, 0, 0, 0,245,255,127, 63, 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191, +250,255,127,191, 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, + 26,182,230, 73,230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0,120,201,104, 7, 88, 1, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,136, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,203,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4721,34 +27386,40 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0, 48,203,104, 7, + 57, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, + 0, 0, 35, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65, 84, 1, 0, 0, + 40,204,104, 7, 88, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0, 8,136, 90, 3, 0, 0, 0, 0, 57, 0, 0, 0, 12, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, - 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65,104, 1, 0, 0,232,136, 90, 3, 0, 0, 0, 0, - 88, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152,138, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,205,104, 7, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,206,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,120, 0, 0, 0,152,138, 90, 3, 0, 0, 0, 0, - 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, - 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, - 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, - 66, 82, 0, 0,168, 1, 0, 0, 88,139, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,144, 90, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, - 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,142, 90, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,120, 0, 0, 0,224,205,104, 7, 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, + 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, 68, 65, 84, 65, 8, 1, 0, 0,192,206,104, 7, 67, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 48,208,104, 7, 87, 1, 0, 0, 1, 0, 0, 0,224,213,104, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,208,211,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -4756,46 +27427,34 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 1, 0, 0, - 68, 65, 84, 65, 16, 1, 0, 0,192,139, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,124,208,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,142, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,144, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,208,211,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, + 46,189,194, 61, 72,213,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0, 56,144, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72,213,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,144, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, -184,148, 90, 3, 0, 0, 0, 0, 88,139, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 66,108,117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, -168,146, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 1, 4, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,145, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,224,213,104, 7, 87, 1, 0, 0, 1, 0, 0, 0, 32,218,104, 7, + 48,208,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,111, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 16,216,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -4803,24 +27462,11 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,146, 90, 3, 0, 0, 0, 0, - 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,148, 90, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,148, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,148, 90, 3, 0, 0, 0, 0, - 87, 1, 0, 0, 1, 0, 0, 0,184,152, 90, 3, 0, 0, 0, 0,184,144, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, 97,121, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 0,168,150, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 56,120, 94, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 44,214,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -4829,45 +27475,33 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 8, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,149, 90, 3, 0, 0, 0, 0, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 16,216,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186,136,217,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136,217,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 32,218,104, 7, 87, 1, 0, 0, 1, 0, 0, 0, 96,222,104, 7, +224,213,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 80,220,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, -168,150, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, - 56,152, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,152, 90, 3, 0, 0, 0, 0, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, -184,152, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,156, 90, 3, 0, 0, 0, 0,184,148, 90, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,154, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 3, 0, 68, 65, 84, 65, 16, 1, 0, 0, - 32,153, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,108,218,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -4876,71 +27510,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 64, 1, 0, 0,168,154, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, - 14,215,126,191, 46,189,194, 61, 56,156, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 80,220,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, + 46,189,194, 61,200,221,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, - 56,156, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, - 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0,168, 1, 0, 0,184,156, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,160, 90, 3, 0, 0, 0, 0, -184,152, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, - 0, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,158, 90, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 6, 0, 0, - 68, 65, 84, 65, 16, 1, 0, 0, 32,157, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,158, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,160, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0, 56,160, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200,221,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,160, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, -184,164, 90, 3, 0, 0, 0, 0,184,156, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, -168,162, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 1, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,161, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 96,222,104, 7, 87, 1, 0, 0, 1, 0, 0, 0,160,226,104, 7, + 32,218,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, 97,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,144,224,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -4948,24 +27532,11 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,162, 90, 3, 0, 0, 0, 0, - 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,164, 90, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,164, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,164, 90, 3, 0, 0, 0, 0, - 87, 1, 0, 0, 1, 0, 0, 0,184,168, 90, 3, 0, 0, 0, 0,184,160, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,108, 97,116,116,101,110, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 0,168,166, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,224,212, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,172,222,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -4974,45 +27545,33 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 7, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,165, 90, 3, 0, 0, 0, 0, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,144,224,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186, 8,226,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8,226,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,160,226,104, 7, 87, 1, 0, 0, 1, 0, 0, 0,224,230,104, 7, + 96,222,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,208,228,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, -168,166, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, - 56,168, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,168, 90, 3, 0, 0, 0, 0, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, -184,168, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,172, 90, 3, 0, 0, 0, 0,184,164, 90, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, 97, 98, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,170, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 5, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, - 32,169, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,236,226,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -5021,71 +27580,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 64, 1, 0, 0,168,170, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, - 14,215,126,191, 46,189,194, 61, 56,172, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,208,228,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, + 46,189,194, 61, 72,230,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, - 56,172, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, - 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0,168, 1, 0, 0,184,172, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,176, 90, 3, 0, 0, 0, 0, -184,168, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 73,110,102,108, 97,116, -101, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,174, 90, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 4, 0, 0, 0, - 68, 65, 84, 65, 16, 1, 0, 0, 32,173, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,174, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,176, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0, 56,176, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72,230,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,176, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, -184,180, 90, 3, 0, 0, 0, 0,184,172, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, -168,178, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 6, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,177, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,224,230,104, 7, 87, 1, 0, 0, 1, 0, 0, 0, 32,235,104, 7, +160,226,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,114,101, 97,115,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 16,233,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -5093,24 +27602,11 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,178, 90, 3, 0, 0, 0, 0, - 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,180, 90, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,180, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,180, 90, 3, 0, 0, 0, 0, - 87, 1, 0, 0, 1, 0, 0, 0,184,184, 90, 3, 0, 0, 0, 0,184,176, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105,103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 0,168,182, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 56,120, 94, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 44,231,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -5119,45 +27615,33 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 5, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,181, 90, 3, 0, 0, 0, 0, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 16,233,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,228, 97,175,190, 50,131,112, 63,218,243,127,191, + 10,183,157,188,136,234,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136,234,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215, 35, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 32,235,104, 7, 87, 1, 0, 0, 1, 0, 0, 0, 96,239,104, 7, +224,230,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, 0, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 80,237,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, -168,182, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, - 56,184, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,184, 90, 3, 0, 0, 0, 0, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, -184,184, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,188, 90, 3, 0, 0, 0, 0,184,180, 90, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,186, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, - 32,185, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,108,235,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -5166,71 +27650,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 64, 1, 0, 0,168,186, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, - 14,215,126,191, 46,189,194, 61, 56,188, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 80,237,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, + 46,189,194, 61,200,238,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, - 56,188, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, - 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0,168, 1, 0, 0,184,188, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,192, 90, 3, 0, 0, 0, 0, -184,184, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117,108,116,105,112, -108,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,190, 90, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 3, 0, 0, - 68, 65, 84, 65, 16, 1, 0, 0, 32,189, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,190, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,192, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0, 56,192, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200,238,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,192, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, -184,196, 90, 3, 0, 0, 0, 0,184,188, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 80,105,110, 99,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, -168,194, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 3, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,193, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 96,239,104, 7, 87, 1, 0, 0, 1, 0, 0, 0,160,243,104, 7, + 32,235,104, 7, 88,186, 79, 3, 0, 0, 0, 0, 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,144,241,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -5238,24 +27672,11 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,194, 90, 3, 0, 0, 0, 0, - 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,196, 90, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,196, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,196, 90, 3, 0, 0, 0, 0, - 87, 1, 0, 0, 1, 0, 0, 0,184,200, 90, 3, 0, 0, 0, 0,184,192, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 0,168,198, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,172,239,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -5264,45 +27685,33 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 2, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,197, 90, 3, 0, 0, 0, 0, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,144,241,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186, 8,243,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8,243,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,160,243,104, 7, 87, 1, 0, 0, 1, 0, 0, 0,224,247,104, 7, + 96,239,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,105,108,108, 47, 68,101,101,112,101,110, 0, 48, 48, 49, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,208,245,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, -168,198, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, - 56,200, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,200, 90, 3, 0, 0, 0, 0, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, -184,200, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,204, 90, 3, 0, 0, 0, 0,184,196, 90, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, 0, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,202, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 2, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, - 32,201, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,232,190, 95, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,236,243,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -5311,24 +27720,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 64, 1, 0, 0,168,202, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, - 14,215,126,191, 46,189,194, 61, 56,204, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,208,245,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186, 72,247,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, - 56,204, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, - 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0,168, 1, 0, 0,184,204, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,208, 90, 3, 0, 0, 0, 0, -184,200, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, - 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,206, 90, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72,247,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,224,247,104, 7, 87, 1, 0, 0, 1, 0, 0, 0, 32,252,104, 7, +160,243,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,108, 97,116,116,101,110, 47, 67,111,110,116,114, 97,115,116, 0, 48, + 48, 49, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 16,250,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -5336,46 +27742,174 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 1, 0, - 68, 65, 84, 65, 16, 1, 0, 0, 32,205, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 64, 98, 96, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 44,248,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,206, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,208, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 16,250,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186,136,251,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136,251,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 32,252,104, 7, 87, 1, 0, 0, 1, 0, 0, 0, 96, 0,105, 7, +224,247,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, 97, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 80,254,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,152, 5, 97, 7, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,108,252,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0, 56,208, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0, 80,254,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186,200,255,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200,255,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 96, 0,105, 7, 87, 1, 0, 0, 1, 0, 0, 0,160, 4,105, 7, + 32,252,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 73,110,102,108, 97,116,101, 47, 68,101,102,108, 97,116,101, 0, 48, 48, + 49, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,144, 2,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,240,168, 97, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, + 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0,172, 0,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,144, 2,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186, 8, 4,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8, 4,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,160, 4,105, 7, 87, 1, 0, 0, 1, 0, 0, 0,224, 8,105, 7, + 96, 0,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,208, 6,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 72, 76, 98, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,236, 4,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,208, 6,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186, 72, 8,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72, 8,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,224, 8,105, 7, 87, 1, 0, 0, 1, 0, 0, 0, 32, 13,105, 7, +160, 4,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105,103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 16, 11,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 44, 9,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0, 16, 11,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, + 46,189,194, 61,136, 12,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136, 12,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,208, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184,204, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 83,117, 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, -168,210, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 1, 2, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,209, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 32, 13,105, 7, 87, 1, 0, 0, 1, 0, 0, 0, 96, 17,105, 7, +224, 8,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 80, 15,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -5383,761 +27917,892 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,210, 90, 3, 0, 0, 0, 0, - 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,212, 90, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,212, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 85, 83, 69, 82, 8, 13, 0, 0, 96,119,163, 2, 0, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 33, 8, 17, 1, 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85,115,101,114,115, 47,116,111,110, - 47, 68,101,115,107,116,111,112, 47, 0, 45,112,111,119,101,114,112, 99, 47, 98,105,110, 47, 98,108,101,110,100,101,114, 46, 97, -112,112, 47, 67,111,110,116,101,110,116,115, 47, 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 2, 0, 94, 1, - 8, 0, 0, 0, 3, 0, 0, 0, 56, 52, 39, 1, 0, 0, 0, 0, 2, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0, 68,172, 0, 0, - 36, 0, 0, 0, 2, 0, 0, 0,128, 0, 0, 0, 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0, 8,226, 90, 3, 0, 0, 0, 0, - 8,226, 90, 3, 0, 0, 0, 0,120,107, 94, 3, 0, 0, 0, 0,120,107, 94, 3, 0, 0, 0, 0,152,219, 94, 3, 0, 0, 0, 0, -152,219, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 2, 0, 25, 0, 1, 0, 20, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0, -205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 30, 90,100,191,154,153,153, 62,102,102,102, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31,250,254, 62, 9, 0, 0, 63, -156,153, 25, 63, 0, 0, 0, 0,205,204, 76, 62,205,204, 76, 62,205,204, 76, 62, 0, 0,128, 63, 44,135, 22, 63, 32,133,235, 62, -184,243,125, 62, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,195, 73, 76, 63, 42,135, 86, 63, 0, 0,128, 63, 0, 0, 0, 0, - 1, 43,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 16, 47, 93, 62, 58,180,200,190, 24, 47, 93,190, 0, 0, 0, 0, - 14, 0, 0, 0, 25, 0, 15, 0,120, 0, 60, 0, 3, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0,144, 31, 15, 0, 6, 0, 25, 0, - 8, 0, 10, 0,200, 0, 0, 0,100, 0,100, 0, 0, 0, 0, 0, 2, 0, 1, 0, 10, 0, 50, 0,200, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 29, 0, 0, 8,226, 90, 3, 0, 0, 0, 0, -191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,101,102, 97,117,108,116, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255, -100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255, -100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255, -153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, - 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 70, 70, 70,255, - 70, 70, 70,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255, -100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255, -153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255, -153,153,153,255,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, - 70, 70, 70,255,255,255,255,255,255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 63, 63, 63,255, - 86,128,194,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 25, 25, 25,230, - 45, 45, 45,230,100,100,100,255,160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, - 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, 25, 25, 25,255,128,128,128,255, -100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50,180, 80, 80, 80,180, -100,100,100,180,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255,190,190,190,255, -100,100,100,180, 68, 68, 68,255, 0, 0, 0,255,255,255,255,255, 0, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, - 86,128,194,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,115,190, 76,255, 90,166, 51,255, -240,235,100,255,215,211, 75,255,180, 0,255,255,153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, - 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255,204, 0,153,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, -200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, -240,255, 64,255,240,144,160,255,255,255,255,255, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 76, 76,255, 0, 0, 0, 0, -250,250,250,255, 15, 15, 15,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100,255,140, 25,255,250,250,250,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,130,130,130,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, - 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, -128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, -128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,250,250,250,255,250,250,250,255,250,250,250,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, - 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, -144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255, -124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, - 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, -200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, -240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, - 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255, -128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, -128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, - 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, -144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255, -124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, - 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,109, 88,129,255, - 78,152, 62,255, 46,143,143,255,169, 84,124,255,126,126, 80,255,162, 95,111,255,109,145,131,255,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0,255,255,255, 10,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, -200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, -240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255,110,110,110,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,132,132,132,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255, 94, 94, 94,255,172,172,172,255, 17, 27, 60,100, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,195,195,195,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, - 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, -128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, -128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255, 64, 64, 64,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, - 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, -144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,100, 0, 0,255, - 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, - 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, -200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, -240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,255,255,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, - 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, -128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, -128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,155,155,155,160,100,100,100,255,108,105,111,255, -104,106,117,255,105,117,110,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, - 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, -144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, - 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, -200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, -240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,128,255,255,255,255,255,255, 0,170, 0,255, -220, 96, 96,255,220, 96, 96,255, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255, -247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255, -131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255, -240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255, -111,182,171,255, 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0,244,201, 12,255,238,194, 54,255, -243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0,111, 47,106,255,152, 69,190,255, -211, 48,214,255, 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0,141,141,141,255,176,176,176,255, -222,222,222,255, 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, - 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 68, 78, 65, 49,112,224, 0, 0,200,207,143, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69, -179, 11, 0, 0, 42,110,101,120,116, 0, 42,112,114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, 0, 42,108, 97, -115,116, 0,120, 0,121, 0,122, 0,119, 0,120,109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, 97,120, 0, 42, -112,111,105,110,116,101,114, 0,103,114,111,117,112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0,115,117, 98,116, -121,112,101, 0,102,108, 97,103, 0,110, 97,109,101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0,100, 97,116, 97, 0,108,101,110, - 0,116,111,116, 97,108,108,101,110, 0, 42,110,101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 50, 52, 93, 0,117, -115, 0,105, 99,111,110, 95,105,100, 0, 42,112,114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, 98,108,111, 99, -107, 0, 42,102,105,108,101,100, 97,116, 97, 0,110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,108,101,112, 97,116,104, 91, 50, - 52, 48, 93, 0,116,111,116, 0,112, 97,100, 0, 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, 93, 0, 99,104, - 97,110,103,101,100, 91, 50, 93, 0,112, 97,100, 48, 0,112, 97,100, 49, 0, 42,114,101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, - 98,108,111, 99,107,116,121,112,101, 0, 97,100,114, 99,111,100,101, 0,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, - 42, 98,101,122,116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, 99,116, 0,118, 97,114,116,121,112,101, 0,116,111,116,118, -101,114,116, 0,105,112,111, 0,101,120,116,114, 97,112, 0,114,116, 0, 98,105,116,109, 97,115,107, 0,115,108,105,100,101, 95, -109,105,110, 0,115,108,105,100,101, 95,109, 97,120, 0, 99,117,114,118, 97,108, 0, 42,100,114,105,118,101,114, 0, 99,117,114, -118,101, 0, 99,117,114, 0,115,104,111,119,107,101,121, 0,109,117,116,101,105,112,111, 0,112,111,115, 0,114,101,108, 97,116, -105,118,101, 0,116,111,116,101,108,101,109, 0,112, 97,100, 50, 0, 42,119,101,105,103,104,116,115, 0,118,103,114,111,117,112, - 91, 51, 50, 93, 0,115,108,105,100,101,114,109,105,110, 0,115,108,105,100,101,114,109, 97,120, 0, 42, 97,100,116, 0, 42,114, -101,102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, 0,101,108,101,109,115,105,122,101, 0, 98,108,111, 99,107, - 0, 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101,121, 0,115,108,117,114,112,104, 0, 42,108,105,110,101, 0, - 42,102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101,110,111, 0,115,116, 97,114,116, 0,101,110,100, 0,102,108, - 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, 0,112, 97,100, 91, 52, 93, 0, 42,110, 97,109,101, 0,110,108,105,110,101,115, - 0,108,105,110,101,115, 0, 42, 99,117,114,108, 0, 42,115,101,108,108, 0, 99,117,114, 99, 0,115,101,108, 99, 0,109, 97,114, -107,101,114,115, 0, 42,117,110,100,111, 95, 98,117,102, 0,117,110,100,111, 95,112,111,115, 0,117,110,100,111, 95,108,101,110, - 0, 42, 99,111,109,112,105,108,101,100, 0,109,116,105,109,101, 0,115,105,122,101, 0,115,101,101,107, 0,112, 97,115,115,101, -112, 97,114,116, 97,108,112,104, 97, 0, 99,108,105,112,115,116, 97, 0, 99,108,105,112,101,110,100, 0,108,101,110,115, 0,111, -114,116,104,111, 95,115, 99, 97,108,101, 0,100,114, 97,119,115,105,122,101, 0,115,104,105,102,116,120, 0,115,104,105,102,116, -121, 0, 89, 70, 95,100,111,102,100,105,115,116, 0, 42,100,111,102, 95,111, 98, 0,102,114, 97,109,101,110,114, 0,102,114, 97, -109,101,115, 0,111,102,102,115,101,116, 0,115,102,114, 97, 0,102,105,101, 95,105,109, 97, 0, 99,121, 99,108, 0,111,107, 0, -109,117,108,116,105, 95,105,110,100,101,120, 0,108, 97,121,101,114, 0,112, 97,115,115, 0,109,101,110,117,110,114, 0, 42,115, - 99,101,110,101, 0,105, 98,117,102,115, 0, 42,103,112,117,116,101,120,116,117,114,101, 0, 42, 97,110,105,109, 0, 42,114,114, - 0, 42,114,101,110,100,101,114,115, 91, 56, 93, 0,114,101,110,100,101,114, 95,115,108,111,116, 0,108, 97,115,116, 95,114,101, -110,100,101,114, 95,115,108,111,116, 0,115,111,117,114, 99,101, 0,108, 97,115,116,102,114, 97,109,101, 0,116,112, 97,103,101, -102,108, 97,103, 0,116,111,116, 98,105,110,100, 0,120,114,101,112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119,101, -110,100, 0, 98,105,110,100, 99,111,100,101, 0, 42,114,101,112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108,101, - 0, 42,112,114,101,118,105,101,119, 0,108, 97,115,116,117,112,100, 97,116,101, 0,108, 97,115,116,117,115,101,100, 0, 97,110, -105,109,115,112,101,101,100, 0,103,101,110, 95,120, 0,103,101,110, 95,121, 0,103,101,110, 95,116,121,112,101, 0, 97,115,112, -120, 0, 97,115,112,121, 0,116,101,120, 99,111, 0,109, 97,112,116,111, 0,109, 97,112,116,111,110,101,103, 0, 98,108,101,110, -100,116,121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116,101,120, 0,117,118,110, 97,109,101, 91, 51, 50, 93, 0,112,114, -111,106,120, 0,112,114,111,106,121, 0,112,114,111,106,122, 0,109, 97,112,112,105,110,103, 0,111,102,115, 91, 51, 93, 0,115, -105,122,101, 91, 51, 93, 0,114,111,116, 0,116,101,120,102,108, 97,103, 0, 99,111,108,111,114,109,111,100,101,108, 0,112,109, - 97,112,116,111, 0,112,109, 97,112,116,111,110,101,103, 0,110,111,114,109, 97,112,115,112, 97, 99,101, 0,119,104,105, 99,104, - 95,111,117,116,112,117,116, 0, 98,114,117,115,104, 95,109, 97,112, 95,109,111,100,101, 0,112, 97,100, 91, 55, 93, 0,114, 0, -103, 0, 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111,108,102, 97, 99, 0,118, 97,114,102, 97, 99, 0,110,111,114,102, - 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, 0, 99,111,108,115,112,101, 99,102, 97, 99, 0,109,105, -114,114,102, 97, 99, 0, 97,108,112,104, 97,102, 97, 99, 0,100,105,102,102,102, 97, 99, 0,115,112,101, 99,102, 97, 99, 0,101, -109,105,116,102, 97, 99, 0,104, 97,114,100,102, 97, 99, 0,114, 97,121,109,105,114,114,102, 97, 99, 0,116,114, 97,110,115,108, -102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99,111,108,101,109,105,116,102, 97, 99, 0, 99,111,108,114,101,102,108,102, 97, 99, - 0, 99,111,108,116,114, 97,110,115,102, 97, 99, 0,100,101,110,115,102, 97, 99, 0,115, 99, 97,116,116,101,114,102, 97, 99, 0, -114,101,102,108,102, 97, 99, 0,116,105,109,101,102, 97, 99, 0,108,101,110,103,116,104,102, 97, 99, 0, 99,108,117,109,112,102, - 97, 99, 0,107,105,110,107,102, 97, 99, 0,114,111,117,103,104,102, 97, 99, 0,112, 97,100,101,110,115,102, 97, 99, 0,108,105, -102,101,102, 97, 99, 0,115,105,122,101,102, 97, 99, 0,105,118,101,108,102, 97, 99, 0,112,118,101,108,102, 97, 99, 0,115,104, - 97,100,111,119,102, 97, 99, 0,122,101,110,117,112,102, 97, 99, 0,122,101,110,100,111,119,110,102, 97, 99, 0, 98,108,101,110, -100,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0, 42,104, 97,110,100,108,101, 0, 42,112,110, 97,109,101, 0, 42,115, -116,110, 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97,114,115, 0, 42,118, 97,114,115,116,114, 0, 42,114,101,115,117, -108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, 93, 0, 40, 42,100,111,105,116, 41, 40, 41, 0, 40, 42,105,110, -115,116, 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, 42, 99, 97,108,108, 98, 97, 99,107, 41, 40, 41, 0,118,101,114, -115,105,111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42,105,109, 97, 0, 42, 99,117, 98,101, 91, 54, 93, 0,105,109, 97, -116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, 93, 91, 51, 93, 0,115,116,121,112,101, 0,118,105,101,119,115, - 99, 97,108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101,114,101,115, 0,100,101,112,116,104, 0,114,101, 99, 97,108, 99, - 0,108, 97,115,116,115,105,122,101, 0,102, 97,108,108,111,102,102, 95,116,121,112,101, 0,102, 97,108,108,111,102,102, 95,115, -111,102,116,110,101,115,115, 0,114, 97,100,105,117,115, 0, 99,111,108,111,114, 95,115,111,117,114, 99,101, 0,116,111,116,112, -111,105,110,116,115, 0,112,100,112, 97,100, 0,112,115,121,115, 0,112,115,121,115, 95, 99, 97, 99,104,101, 95,115,112, 97, 99, -101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0, 42,112,111,105,110,116, 95,116,114,101,101, 0, 42,112,111, -105,110,116, 95,100, 97,116, 97, 0,110,111,105,115,101, 95,115,105,122,101, 0,110,111,105,115,101, 95,100,101,112,116,104, 0, -110,111,105,115,101, 95,105,110,102,108,117,101,110, 99,101, 0,110,111,105,115,101, 95, 98, 97,115,105,115, 0,112,100,112, 97, -100, 51, 91, 51, 93, 0,110,111,105,115,101, 95,102, 97, 99, 0,115,112,101,101,100, 95,115, 99, 97,108,101, 0, 42, 99,111, 98, - 97, 0,114,101,115,111,108, 91, 51, 93, 0,105,110,116,101,114,112, 95,116,121,112,101, 0,102,105,108,101, 95,102,111,114,109, - 97,116, 0,101,120,116,101,110,100, 0,115,109,111,107,101,100, 95,116,121,112,101, 0,105,110,116, 95,109,117,108,116,105,112, -108,105,101,114, 0,115,116,105,108,108, 95,102,114, 97,109,101, 0,115,111,117,114, 99,101, 95,112, 97,116,104, 91, 50, 52, 48, - 93, 0, 42,100, 97,116, 97,115,101,116, 0, 99, 97, 99,104,101,100,102,114, 97,109,101, 0,110,111,105,115,101,115,105,122,101, - 0,116,117,114, 98,117,108, 0, 98,114,105,103,104,116, 0, 99,111,110,116,114, 97,115,116, 0,115, 97,116,117,114, 97,116,105, -111,110, 0,114,102, 97, 99, 0,103,102, 97, 99, 0, 98,102, 97, 99, 0,102,105,108,116,101,114,115,105,122,101, 0,109,103, 95, - 72, 0,109,103, 95,108, 97, 99,117,110, 97,114,105,116,121, 0,109,103, 95,111, 99,116, 97,118,101,115, 0,109,103, 95,111,102, -102,115,101,116, 0,109,103, 95,103, 97,105,110, 0,100,105,115,116, 95, 97,109,111,117,110,116, 0,110,115, 95,111,117,116,115, - 99, 97,108,101, 0,118,110, 95,119, 49, 0,118,110, 95,119, 50, 0,118,110, 95,119, 51, 0,118,110, 95,119, 52, 0,118,110, 95, -109,101,120,112, 0,118,110, 95,100,105,115,116,109, 0,118,110, 95, 99,111,108,116,121,112,101, 0,110,111,105,115,101,100,101, -112,116,104, 0,110,111,105,115,101,116,121,112,101, 0,110,111,105,115,101, 98, 97,115,105,115, 0,110,111,105,115,101, 98, 97, -115,105,115, 50, 0,105,109, 97,102,108, 97,103, 0, 99,114,111,112,120,109,105,110, 0, 99,114,111,112,121,109,105,110, 0, 99, -114,111,112,120,109, 97,120, 0, 99,114,111,112,121,109, 97,120, 0,116,101,120,102,105,108,116,101,114, 0, 97,102,109, 97,120, - 0,120,114,101,112,101, 97,116, 0,121,114,101,112,101, 97,116, 0, 99,104,101, 99,107,101,114,100,105,115,116, 0,110, 97, 98, -108, 97, 0,105,117,115,101,114, 0, 42,110,111,100,101,116,114,101,101, 0, 42,112,108,117,103,105,110, 0, 42,101,110,118, 0, - 42,112,100, 0, 42,118,100, 0,117,115,101, 95,110,111,100,101,115, 0,108,111, 99, 91, 51, 93, 0,114,111,116, 91, 51, 93, 0, -109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105,110, 91, 51, 93, 0,109, 97,120, 91, 51, 93, 0,109,111,100,101, 0,116,111,116, -101,120, 0,115,104,100,119,114, 0,115,104,100,119,103, 0,115,104,100,119, 98, 0,115,104,100,119,112, 97,100, 0,101,110,101, -114,103,121, 0,100,105,115,116, 0,115,112,111,116,115,105,122,101, 0,115,112,111,116, 98,108,101,110,100, 0,104, 97,105,110, -116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, 42, 99,117,114,102, 97,108,108,111,102,102, 0,115,104, 97,100,115,112,111,116, -115,105,122,101, 0, 98,105, 97,115, 0,115,111,102,116, 0, 99,111,109,112,114,101,115,115,116,104,114,101,115,104, 0,112, 97, -100, 53, 91, 51, 93, 0, 98,117,102,115,105,122,101, 0,115, 97,109,112, 0, 98,117,102,102,101,114,115, 0,102,105,108,116,101, -114,116,121,112,101, 0, 98,117,102,102,108, 97,103, 0, 98,117,102,116,121,112,101, 0,114, 97,121, 95,115, 97,109,112, 0,114, - 97,121, 95,115, 97,109,112,121, 0,114, 97,121, 95,115, 97,109,112,122, 0,114, 97,121, 95,115, 97,109,112, 95,116,121,112,101, - 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, 97,114,101, 97, 95,115,105,122,101, 0, 97,114,101, 97, 95,115,105,122,101,121, - 0, 97,114,101, 97, 95,115,105,122,101,122, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0,114, 97,121, 95,115, 97,109, -112, 95,109,101,116,104,111,100, 0,116,101,120, 97, 99,116, 0,115,104, 97,100,104, 97,108,111,115,116,101,112, 0,115,117,110, - 95,101,102,102,101, 99,116, 95,116,121,112,101, 0,115,107,121, 98,108,101,110,100,116,121,112,101, 0,104,111,114,105,122,111, -110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,112,114,101, 97,100, 0,115,117,110, 95, 98,114,105,103,104,116,110,101, -115,115, 0,115,117,110, 95,115,105,122,101, 0, 98, 97, 99,107,115, 99, 97,116,116,101,114,101,100, 95,108,105,103,104,116, 0, -115,117,110, 95,105,110,116,101,110,115,105,116,121, 0, 97,116,109, 95,116,117,114, 98,105,100,105,116,121, 0, 97,116,109, 95, -105,110,115, 99, 97,116,116,101,114,105,110,103, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,101,120,116,105,110, 99,116,105, -111,110, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,100,105,115,116, 97,110, 99,101, 95,102, 97, 99,116,111,114, 0,115,107, -121, 98,108,101,110,100,102, 97, 99, 0,115,107,121, 95,101,120,112,111,115,117,114,101, 0,115,107,121, 95, 99,111,108,111,114, -115,112, 97, 99,101, 0,112, 97,100, 52, 91, 54, 93, 0, 42,109,116,101,120, 91, 49, 56, 93, 0,112,114, 95,116,101,120,116,117, -114,101, 0,112, 97,100, 54, 91, 54, 93, 0,100,101,110,115,105,116,121, 0,101,109,105,115,115,105,111,110, 0,115, 99, 97,116, -116,101,114,105,110,103, 0,114,101,102,108,101, 99,116,105,111,110, 0,101,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, - 93, 0,116,114, 97,110,115,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,114,101,102,108,101, 99,116,105,111,110, - 95, 99,111,108, 91, 51, 93, 0,100,101,110,115,105,116,121, 95,115, 99, 97,108,101, 0,100,101,112,116,104, 95, 99,117,116,111, -102,102, 0, 97,115,121,109,109,101,116,114,121, 0,115,116,101,112,115,105,122,101, 95,116,121,112,101, 0,115,104, 97,100,101, -102,108, 97,103, 0,115,104, 97,100,101, 95,116,121,112,101, 0,112,114,101, 99, 97, 99,104,101, 95,114,101,115,111,108,117,116, -105,111,110, 0,115,116,101,112,115,105,122,101, 0,109,115, 95,100,105,102,102, 0,109,115, 95,105,110,116,101,110,115,105,116, -121, 0,109,115, 95,115,112,114,101, 97,100, 0,109, 97,116,101,114,105, 97,108, 95,116,121,112,101, 0,115,112,101, 99,114, 0, -115,112,101, 99,103, 0,115,112,101, 99, 98, 0,109,105,114,114, 0,109,105,114,103, 0,109,105,114, 98, 0, 97,109, 98,114, 0, - 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, 98, 0,101,109,105,116, 0, 97,110,103, 0,115,112,101, 99,116,114, 97, 0,114, - 97,121, 95,109,105,114,114,111,114, 0, 97,108,112,104, 97, 0,114,101,102, 0,115,112,101, 99, 0,122,111,102,102,115, 0, 97, -100,100, 0,116,114, 97,110,115,108,117, 99,101,110, 99,121, 0,118,111,108, 0,102,114,101,115,110,101,108, 95,109,105,114, 0, -102,114,101,115,110,101,108, 95,109,105,114, 95,105, 0,102,114,101,115,110,101,108, 95,116,114, 97, 0,102,114,101,115,110,101, -108, 95,116,114, 97, 95,105, 0,102,105,108,116,101,114, 0,116,120, 95,108,105,109,105,116, 0,116,120, 95,102, 97,108,108,111, -102,102, 0,114, 97,121, 95,100,101,112,116,104, 0,114, 97,121, 95,100,101,112,116,104, 95,116,114, 97, 0,104, 97,114, 0,115, -101,101,100, 49, 0,115,101,101,100, 50, 0,103,108,111,115,115, 95,109,105,114, 0,103,108,111,115,115, 95,116,114, 97, 0,115, - 97,109,112, 95,103,108,111,115,115, 95,109,105,114, 0,115, 97,109,112, 95,103,108,111,115,115, 95,116,114, 97, 0, 97,100, 97, -112,116, 95,116,104,114,101,115,104, 95,109,105,114, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,116,114, 97, 0, 97, -110,105,115,111, 95,103,108,111,115,115, 95,109,105,114, 0,100,105,115,116, 95,109,105,114, 0,102, 97,100,101,116,111, 95,109, -105,114, 0,115,104, 97,100,101, 95,102,108, 97,103, 0,109,111,100,101, 95,108, 0,102,108, 97,114,101, 99, 0,115,116, 97,114, - 99, 0,108,105,110,101, 99, 0,114,105,110,103, 99, 0,104, 97,115,105,122,101, 0,102,108, 97,114,101,115,105,122,101, 0,115, -117, 98,115,105,122,101, 0,102,108, 97,114,101, 98,111,111,115,116, 0,115,116,114, 97,110,100, 95,115,116, 97, 0,115,116,114, - 97,110,100, 95,101,110,100, 0,115,116,114, 97,110,100, 95,101, 97,115,101, 0,115,116,114, 97,110,100, 95,115,117,114,102,110, -111,114, 0,115,116,114, 97,110,100, 95,109,105,110, 0,115,116,114, 97,110,100, 95,119,105,100,116,104,102, 97,100,101, 0,115, -116,114, 97,110,100, 95,117,118,110, 97,109,101, 91, 51, 50, 93, 0,115, 98,105, 97,115, 0,108, 98,105, 97,115, 0,115,104, 97, -100, 95, 97,108,112,104, 97, 0,115,101,112,116,101,120, 0,114,103, 98,115,101,108, 0,112,114, 95,116,121,112,101, 0,112,114, - 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109,112, 0,109,108, 95,102,108, 97,103, 0,100,105,102,102, 95,115,104, 97,100,101, -114, 0,115,112,101, 99, 95,115,104, 97,100,101,114, 0,114,111,117,103,104,110,101,115,115, 0,114,101,102,114, 97, 99, 0,112, - 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0,100, 97,114,107,110,101,115,115, 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42, -114, 97,109,112, 95,115,112,101, 99, 0,114, 97,109,112,105,110, 95, 99,111,108, 0,114, 97,109,112,105,110, 95,115,112,101, 99, - 0,114, 97,109,112, 98,108,101,110,100, 95, 99,111,108, 0,114, 97,109,112, 98,108,101,110,100, 95,115,112,101, 99, 0,114, 97, -109,112, 95,115,104,111,119, 0,112, 97,100, 51, 0,114, 97,109,112,102, 97, 99, 95, 99,111,108, 0,114, 97,109,112,102, 97, 99, - 95,115,112,101, 99, 0, 42,103,114,111,117,112, 0,102,114,105, 99,116,105,111,110, 0,102,104, 0,114,101,102,108,101, 99,116, - 0,102,104,100,105,115,116, 0,120,121,102,114,105, 99,116, 0,100,121,110, 97,109,111,100,101, 0,115,115,115, 95,114, 97,100, -105,117,115, 91, 51, 93, 0,115,115,115, 95, 99,111,108, 91, 51, 93, 0,115,115,115, 95,101,114,114,111,114, 0,115,115,115, 95, -115, 99, 97,108,101, 0,115,115,115, 95,105,111,114, 0,115,115,115, 95, 99,111,108,102, 97, 99, 0,115,115,115, 95,116,101,120, -102, 97, 99, 0,115,115,115, 95,102,114,111,110,116, 0,115,115,115, 95, 98, 97, 99,107, 0,115,115,115, 95,102,108, 97,103, 0, -115,115,115, 95,112,114,101,115,101,116, 0,109, 97,112,116,111, 95,116,101,120,116,117,114,101,100, 0,112, 97,100, 52, 0,103, -112,117,109, 97,116,101,114,105, 97,108, 0,110, 97,109,101, 91, 50, 53, 54, 93, 0, 42, 98, 98, 0,105, 49, 0,106, 49, 0,107, - 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115,101,108, 99,111,108, 49, 0,115,101,108, 99,111,108, 50, 0,113,117, 97,116, 91, - 52, 93, 0,101,120,112,120, 0,101,120,112,121, 0,101,120,112,122, 0,114, 97,100, 0,114, 97,100, 50, 0,115, 0, 42,109, 97, -116, 0, 42,105,109, 97,116, 0,101,108,101,109,115, 0,100,105,115,112, 0, 42,101,100,105,116,101,108,101,109,115, 0, 42, 42, -109, 97,116, 0,102,108, 97,103, 50, 0,116,111,116, 99,111,108, 0,119,105,114,101,115,105,122,101, 0,114,101,110,100,101,114, -115,105,122,101, 0,116,104,114,101,115,104, 0, 42,108, 97,115,116,101,108,101,109, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, - 97,108,102, 97, 0,119,101,105,103,104,116, 0,104, 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104,105,100,101, 0, -118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110,114, 0,112,110,116,115,117, 0,112,110,116,115,118, 0,114,101,115,111,108,117, - 0,114,101,115,111,108,118, 0,111,114,100,101,114,117, 0,111,114,100,101,114,118, 0,102,108, 97,103,117, 0,102,108, 97,103, -118, 0, 42,107,110,111,116,115,117, 0, 42,107,110,111,116,115,118, 0,116,105,108,116, 95,105,110,116,101,114,112, 0,114, 97, -100,105,117,115, 95,105,110,116,101,114,112, 0, 99,104, 97,114,105,100,120, 0,107,101,114,110, 0,104, 0,110,117,114, 98, 0, - 42,101,100,105,116,110,117,114, 98, 0, 42, 98,101,118,111, 98,106, 0, 42,116, 97,112,101,114,111, 98,106, 0, 42,116,101,120, -116,111,110, 99,117,114,118,101, 0, 42,112, 97,116,104, 0, 42,107,101,121, 0, 98,101,118, 0,100,114, 97,119,102,108, 97,103, - 0,116,119,105,115,116, 95,109,111,100,101, 0,112, 97,100, 91, 50, 93, 0,116,119,105,115,116, 95,115,109,111,111,116,104, 0, -112, 97,116,104,108,101,110, 0, 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0,101,120,116, 50, - 0,114,101,115,111,108,117, 95,114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117, 0, 42,108, 97, -115,116,115,101,108, 0,115,112, 97, 99,101,109,111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101,100,105,115,116, - 0,115,104,101, 97,114, 0,102,115,105,122,101, 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, 0,117,108,104, -101,105,103,104,116, 0,120,111,102, 0,121,111,102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, 0, 42,115,101, -108, 98,111,120,101,115, 0, 42,101,100,105,116,102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, 42,118,102,111, -110,116, 0, 42,118,102,111,110,116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0,115,101,112, 99, -104, 97,114, 0, 99,116,105,109,101, 0,116,111,116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0,115,101,108,115, -116, 97,114,116, 0,115,101,108,101,110,100, 0, 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, 0,101,102,102, -101, 99,116, 0, 42,109,102, 97, 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109,118,101,114,116, - 0, 42,109,101,100,103,101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107,121, 0, 42,116, -101,120, 99,111,109,101,115,104, 0, 42,109,115,101,108,101, 99,116, 0, 42,101,100,105,116, 95,109,101,115,104, 0,118,100, 97, -116, 97, 0,101,100, 97,116, 97, 0,102,100, 97,116, 97, 0,116,111,116,101,100,103,101, 0,116,111,116,102, 97, 99,101, 0,116, -111,116,115,101,108,101, 99,116, 0, 97, 99,116, 95,102, 97, 99,101, 0,101,100,105,116,102,108, 97,103, 0, 99,117, 98,101,109, - 97,112,115,105,122,101, 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98,100,105,118,114, - 0,115,117, 98,115,117,114,102,116,121,112,101, 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,103,101, 0,117,118, 91, 52, - 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, 97,112, 0,118, - 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,119,101,105,103,104,116, - 0,100,101,102, 95,110,114, 0, 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0,110,111, 91, 51, - 93, 0,117,118, 91, 50, 93, 0, 99,111, 91, 50, 93, 0,105,110,100,101,120, 0,102, 0,105, 0,115, 91, 50, 53, 54, 93, 0,116, -111,116,100,105,115,112, 0, 40, 42,100,105,115,112,115, 41, 40, 41, 0,118, 91, 52, 93, 0,109,105,100, 0,118, 91, 50, 93, 0, - 42,102, 97, 99,101,115, 0, 42, 99,111,108,102, 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,118,101,114,116,115, 0,108, -101,118,101,108,115, 0,108,101,118,101,108, 95, 99,111,117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101,119,108,118,108, - 0,101,100,103,101,108,118,108, 0,112,105,110,108,118,108, 0,114,101,110,100,101,114,108,118,108, 0,117,115,101, 95, 99,111, -108, 0, 42,101,100,103,101, 95,102,108, 97,103,115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, 42,118,101,114, -116, 95,109, 97,112, 0, 42,101,100,103,101, 95,109, 97,112, 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42,111,108,100, 95, -101,100,103,101,115, 0,115,116, 97, 99,107,105,110,100,101,120, 0, 42,101,114,114,111,114, 0,109,111,100,105,102,105,101,114, - 0,115,117, 98,100,105,118, 84,121,112,101, 0,114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, 67, 97, 99,104, -101, 0, 42,109, 67, 97, 99,104,101, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,101,110,103,116,104, 0, -114, 97,110,100,111,109,105,122,101, 0,115,101,101,100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116, 97,114,116, 95, 99, 97, -112, 0, 42,101,110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, 95,111, 98, 0, -111,102,102,115,101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115,116, 0,102,105, -116, 95,116,121,112,101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105,115, 0,116,111, -108,101,114, 97,110, 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103,108,101, 0,118, - 97,108,117,101, 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, 0,101, 95,102, -108, 97,103,115, 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, 91, 51, 50, 93, - 0, 42,100,111,109, 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,116,105,109,101, 0, 42,116,101,120,116,117, -114,101, 0,115,116,114,101,110,103,116,104, 0,100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118,101,108, 0,116, -101,120,109, 97,112,112,105,110,103, 0, 42,109, 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101,114, 95,110, 97, -109,101, 91, 51, 50, 93, 0,117,118,108, 97,121,101,114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,116,111,114,115, 91, 49, - 48, 93, 0, 42,105,109, 97,103,101, 0,110,117,109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112,101, 99,116,120, - 0, 97,115,112,101, 99,116,121, 0,115, 99, 97,108,101,120, 0,115, 99, 97,108,101,121, 0,112,101,114, 99,101,110,116, 0,102, - 97, 99,101, 67,111,117,110,116, 0,102, 97, 99, 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99,101,110,116,101, -114, 0,115,116, 97,114,116,120, 0,115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111,119, 0,115,112, -101,101,100, 0,100, 97,109,112, 0,102, 97,108,108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105,102,101,116,105, -109,101, 0,100,101,102,111,114,109,102,108, 97,103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, 0,115,117, 98, -116, 97,114,103,101,116, 91, 51, 50, 93, 0,112, 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116, 91, - 51, 93, 0, 42,105,110,100,101,120, 97,114, 0,116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, 99,108,111,116, -104, 79, 98,106,101, 99,116, 0, 42,115,105,109, 95,112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114,109,115, 0, 42, -112,111,105,110,116, 95, 99, 97, 99,104,101, 0,112,116, 99, 97, 99,104,101,115, 0, 42,120, 0, 42,120,110,101,119, 0, 42,120, -111,108,100, 0, 42, 99,117,114,114,101,110,116, 95,120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, 0, 42, 99,117, -114,114,101,110,116, 95,118, 0, 42,109,102, 97, 99,101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109,102, 97, 99,101, -115, 0, 42, 98,118,104,116,114,101,101, 0, 42,118, 0, 42,100,109, 0, 99,102,114, 97, 0,111,112,101,114, 97,116,105,111,110, - 0,118,101,114,116,101,120, 0,116,111,116,105,110,102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,122,101, 0, 42, 98, -105,110,100,105,110,102,108,117,101,110, 99,101,115, 0, 42, 98,105,110,100,111,102,102,115,101,116,115, 0, 42, 98,105,110,100, - 99, 97,103,101, 99,111,115, 0,116,111,116, 99, 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,100, 0, 42,100,121, -110,105,110,102,108,117,101,110, 99,101,115, 0, 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0,100,121,110,103, -114,105,100,115,105,122,101, 0,100,121,110, 99,101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108,108,119,105,100, -116,104, 0, 98,105,110,100,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42, 98,105,110,100,119,101,105,103,104,116,115, 0, 42, 98, -105,110,100, 99,111,115, 0, 40, 42, 98,105,110,100,102,117,110, 99, 41, 40, 41, 0, 42,112,115,121,115, 0,116,111,116,100,109, -118,101,114,116, 0,116,111,116,100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,111,115,105,116,105,111, -110, 0,114, 97,110,100,111,109, 95,112,111,115,105,116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103,114,111,117,112, - 0,112,114,111,116,101, 99,116, 0,108,118,108, 0,115, 99,117,108,112,116,108,118,108, 0,116,111,116,108,118,108, 0,115,105, -109,112,108,101, 0, 42,102,115,115, 0, 42,116, 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, 0,118,103,114, -111,117,112, 95,110, 97,109,101, 91, 51, 50, 93, 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, 84,121,112,101, - 0,115,104,114,105,110,107, 79,112,116,115, 0,112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, 76,101,118,101, -108,115, 0, 42,111,114,105,103,105,110, 0,102, 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111,114,105,103,105, -110, 79,112,116,115, 0,111,102,102,115,101,116, 95,102, 97, 99, 0, 99,114,101, 97,115,101, 95,105,110,110,101,114, 0, 99,114, -101, 97,115,101, 95,111,117,116,101,114, 0, 99,114,101, 97,115,101, 95,114,105,109, 0, 42,111, 98, 95, 97,120,105,115, 0,115, -116,101,112,115, 0,114,101,110,100,101,114, 95,115,116,101,112,115, 0,105,116,101,114, 0,115, 99,114,101,119, 95,111,102,115, - 0, 97,110,103,108,101, 0,112,110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111,112,110,116,115, -119, 0,116,121,112,101,117, 0,116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, 0,100,117, 0, -100,118, 0,100,119, 0, 42,100,101,102, 0, 42,108, 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, 97,116, 91, 52, - 93, 91, 52, 93, 0, 42,101,100,105,116,108, 97,116,116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99,117,108,112,116, - 0,112, 97,114,116,121,112,101, 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115,117, 98,115,116, -114, 91, 51, 50, 93, 0, 42,116,114, 97, 99,107, 0, 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103,114,111,117,112, - 0, 42,112,114,111,120,121, 95,102,114,111,109, 0, 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, 98, 0, 42,112, -111,115,101, 0, 42,103,112,100, 0, 97,118,115, 0, 42,109,112, 97,116,104, 0, 99,111,110,115,116,114, 97,105,110,116, 67,104, - 97,110,110,101,108,115, 0,100,101,102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115, 0,114,101,115,116,111,114,101, - 95,109,111,100,101, 0, 42,109, 97,116, 98,105,116,115, 0, 97, 99,116, 99,111,108, 0,100,108,111, 99, 91, 51, 93, 0,111,114, -105,103, 91, 51, 93, 0,100,115,105,122,101, 91, 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116, 91, 52, 93, 0, -114,111,116, 65,120,105,115, 91, 51, 93, 0,100,114,111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110,103,108,101, 0, -100,114,111,116, 65,110,103,108,101, 0,111, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105,110,118, 91, 52, - 93, 91, 52, 93, 0,108, 97,121, 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,112,114,111,116,101, - 99,116,102,108, 97,103, 0,116,114, 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102,108, 97,103, 0, -105,112,111,102,108, 97,103, 0,105,112,111,119,105,110, 0,115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105,115,102,108, 97, -103, 0, 98,111,117,110,100,116,121,112,101, 0,100,117,112,111,110, 0,100,117,112,111,102,102, 0,100,117,112,115,116, 97, 0, -100,117,112,101,110,100, 0,115,102, 0,109, 97,115,115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116,105, 97, 0,102, -111,114,109,102, 97, 99,116,111,114, 0,114,100, 97,109,112,105,110,103, 0,109, 97,114,103,105,110, 0,109, 97,120, 95,118,101, -108, 0,109,105,110, 95,118,101,108, 0,109, 95, 99,111,110,116, 97, 99,116, 80,114,111, 99,101,115,115,105,110,103, 84,104,114, -101,115,104,111,108,100, 0,114,111,116,109,111,100,101, 0,100,116, 0,100,116,120, 0,101,109,112,116,121, 95,100,114, 97,119, -116,121,112,101, 0,112, 97,100, 49, 91, 51, 93, 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0,100,117,112,102, - 97, 99,101,115, 99, 97, 0,112,114,111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108,101,114,115, 0, - 97, 99,116,117, 97,116,111,114,115, 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, 97,109,101,102, -108, 97,103, 0,103, 97,109,101,102,108, 97,103, 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97,103, 0, 97,110, -105,115,111,116,114,111,112,105, 99, 70,114,105, 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97,105,110,116,115, - 0,110,108, 97,115,116,114,105,112,115, 0,104,111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115,116,101,109, 0, - 42,115,111,102,116, 0, 42,100,117,112, 95,103,114,111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97,103, 0,114,101, -115,116,114,105, 99,116,102,108, 97,103, 0,115,104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, 0,114,101, 99, - 97,108, 99,111, 0, 98,111,100,121, 95,116,121,112,101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, - 0, 42,100,101,114,105,118,101,100, 68,101,102,111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97,108, 0,108, 97, -115,116, 68, 97,116, 97, 77, 97,115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0,103,112,117,108, - 97,109,112, 0,112, 99, 95,105,100,115, 0, 42,100,117,112,108,105,108,105,115,116, 0, 99,117,114,105,110,100,101,120, 0, 97, - 99,116,105,118,101, 0,111,114,105,103,108, 97,121, 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116,101,100, 0,111, -109, 97,116, 91, 52, 93, 91, 52, 93, 0,111,114, 99,111, 91, 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111,114, 99,101,102, -105,101,108,100, 0,115,104, 97,112,101, 0,116,101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110,107, 95, 97,120, -105,115, 0,122,100,105,114, 0,102, 95,115,116,114,101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95,102,108,111,119, - 0,102, 95,115,105,122,101, 0,102, 95,112,111,119,101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100,105,115,116, 0, -102, 95,112,111,119,101,114, 95,114, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,100, 0,112,100,101,102, 95,100, 97,109, -112, 0,112,100,101,102, 95,114,100, 97,109,112, 0,112,100,101,102, 95,112,101,114,109, 0,112,100,101,102, 95,102,114,105, 99, -116, 0,112,100,101,102, 95,114,102,114,105, 99,116, 0,112,100,101,102, 95,115,116,105, 99,107,110,101,115,115, 0, 97, 98,115, -111,114,112,116,105,111,110, 0,112,100,101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105,102,116, 0,112, -100,101,102, 95,115, 98,111,102,116, 0, 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111,119, 0,107,105, -110,107, 95,102,114,101,113, 0,107,105,110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0,102,114,101,101, - 95,101,110,100, 0,116,101,120, 95,110, 97, 98,108, 97, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0,119,101,105,103, -104,116, 91, 49, 51, 93, 0,103,108,111, 98, 97,108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93, 0,102,114, 97,109, -101, 0,116,111,116,112,111,105,110,116, 0,100, 97,116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,120, 95, 97,114,114, - 97,121, 0, 42,100, 97,116, 97, 91, 56, 93, 0, 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, 0,115,105,109,102,114, 97,109, -101, 0,115,116, 97,114,116,102,114, 97,109,101, 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, 97,109,101, 0, -108, 97,115,116, 95,101,120, 97, 99,116, 0,110, 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,109,101, 91, 54, 52, - 93, 0,105,110,102,111, 91, 54, 52, 93, 0,112, 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97, 99,104,101, 0, 42, -101,100,105,116, 0, 40, 42,102,114,101,101, 95,101,100,105,116, 41, 40, 41, 0,108,105,110, 83,116,105,102,102, 0, 97,110,103, - 83,116,105,102,102, 0,118,111,108,117,109,101, 0,118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,116,101,114, 97,116, -105,111,110,115, 0,100,105,116,101,114, 97,116,105,111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,115, 0,107, 83, 82, - 72, 82, 95, 67, 76, 0,107, 83, 75, 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82, 95, 83, 80, 76, 84, - 95, 67, 76, 0,107, 83, 75, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 86, 67, 70, - 0,107, 68, 80, 0,107, 68, 71, 0,107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77, 84, 0,107, 67, 72, - 82, 0,107, 75, 72, 82, 0,107, 83, 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,108, 97,103,115, 0, -110,117,109, 99,108,117,115,116,101,114,105,116,101,114, 97,116,105,111,110,115, 0,119,101,108,100,105,110,103, 0,116,111,116, -115,112,114,105,110,103, 0, 42, 98,112,111,105,110,116, 0, 42, 98,115,112,114,105,110,103, 0,109,115,103, 95,108,111, 99,107, - 0,109,115,103, 95,118, 97,108,117,101, 0,110,111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71, 95, 77, 97,115,115, - 91, 51, 50, 93, 0,103,114, 97,118, 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, 0,112,104,121, -115,105, 99,115, 95,115,112,101,101,100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114,105, 99,116, 0, -109,105,110,103,111, 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116,103,114,111,117, -112, 0,110, 97,109,101,100, 86, 71, 95, 83,111,102,116,103,111, 97,108, 91, 51, 50, 93, 0,102,117,122,122,121,110,101,115,115, - 0,105,110,115,112,114,105,110,103, 0,105,110,102,114,105, 99,116, 0,110, 97,109,101,100, 86, 71, 95, 83,112,114,105,110,103, - 95, 75, 91, 51, 50, 93, 0,101,102,114, 97, 0,105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115,111,108,118,101, -114,102,108, 97,103,115, 0, 42, 42,107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, 99,111,110,100, -115,112,114,105,110,103, 0, 99,111,108, 98, 97,108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108,115,116,105,102, -102, 0,115, 98, 99, 95,109,111,100,101, 0, 97,101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, 0,109, 97,120, -108,111,111,112,115, 0, 99,104,111,107,101, 0,115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, 99, 0,115,112, -114,105,110,103,112,114,101,108,111, 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116,105,102,102, 0, -105,110,112,117,115,104, 0, 42,112,111,105,110,116, 99, 97, 99,104,101, 0, 42,101,102,102,101, 99,116,111,114, 95,119,101,105, -103,104,116,115, 0,108, 99,111,109, 91, 51, 93, 0,108,114,111,116, 91, 51, 93, 91, 51, 93, 0,108,115, 99, 97,108,101, 91, 51, - 93, 91, 51, 93, 0,112, 97,100, 52, 91, 52, 93, 0, 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,101,100,111, -112,116,105,111,110,115, 0,114,101,115,111,108,117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119,114,101,115,120, -121,122, 0,114,101, 97,108,115,105,122,101, 0,103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114,101,110,100,101, -114, 68,105,115,112,108, 97,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0,118,105,115, 99, -111,115,105,116,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0,103,114, 97,118, -120, 0,103,114, 97,118,121, 0,103,114, 97,118,122, 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, 69,110,100, 0, - 98, 97,107,101, 83,116, 97,114,116, 0, 98, 97,107,101, 69,110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82,101,102,105,110, -101, 0,105,110,105, 86,101,108,120, 0,105,110,105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111,114,103, 77,101, -115,104, 0, 42,109,101,115,104, 83,117,114,102, 97, 99,101, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102,100, 97,116, 97, - 80, 97,116,104, 91, 50, 52, 48, 93, 0, 98, 98, 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, 51, 93, 0,116, -121,112,101, 70,108, 97,103,115, 0,100,111,109, 97,105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117,109,101, 73,110, -105,116, 84,121,112,101, 0,112, 97,114,116, 83,108,105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116,101, 84,114, 97, - 99,101,114,115, 0,103,101,110,101,114, 97,116,101, 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, 99,101, 83,109, -111,111,116,104,105,110,103, 0,115,117,114,102, 97, 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, 99,108,101, 73, -110,102, 83,105,122,101, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70,105,101,108,100, - 83,105,122,101, 0, 42,109,101,115,104, 83,117,114,102, 78,111,114,109, 97,108,115, 0, 99,112,115, 84,105,109,101, 83,116, 97, -114,116, 0, 99,112,115, 84,105,109,101, 69,110,100, 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116,114, 97, 99,116, -102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97,100,105,117,115, - 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99,105,116,121,102, -111,114, 99,101, 82, 97,100,105,117,115, 0,108, 97,115,116,103,111,111,100,102,114, 97,109,101, 0,109,105,115,116,121,112,101, - 0,104,111,114,114, 0,104,111,114,103, 0,104,111,114, 98, 0,104,111,114,107, 0,122,101,110,114, 0,122,101,110,103, 0,122, -101,110, 98, 0,122,101,110,107, 0, 97,109, 98,107, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101, -120,112, 0,114, 97,110,103,101, 0,108,105,110,102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97, - 99,116,105,118,105,116,121, 66,111,120, 82, 97,100,105,117,115, 0,115,107,121,116,121,112,101, 0,111, 99, 99,108,117,115,105, -111,110, 82,101,115, 0,112,104,121,115,105, 99,115, 69,110,103,105,110,101, 0,116,105, 99,114, 97,116,101, 0,109, 97,120,108, -111,103,105, 99,115,116,101,112, 0,112,104,121,115,117, 98,115,116,101,112, 0,109, 97,120,112,104,121,115,116,101,112, 0,109, -105,115,105, 0,109,105,115,116,115,116, 97, 0,109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0,115,116, 97,114, -114, 0,115,116, 97,114,103, 0,115,116, 97,114, 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, 0,115,116, 97, -114,109,105,110,100,105,115,116, 0,115,116, 97,114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105,115,101, 0,100, -111,102,115,116, 97, 0,100,111,102,101,110,100, 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97,111,100,105,115, -116, 0, 97,111,100,105,115,116,102, 97, 99, 0, 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, 97,111,109,111, -100,101, 0, 97,111,115, 97,109,112, 0, 97,111,109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97,100, 97,112,116, - 95,116,104,114,101,115,104, 0, 97,111, 95, 97,100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97,111, 95, 97,112, -112,114,111,120, 95,101,114,114,111,114, 0, 97,111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116,105,111,110, 0, - 97,111, 95,105,110,100,105,114,101, 99,116, 95,101,110,101,114,103,121, 0, 97,111, 95,101,110,118, 95,101,110,101,114,103,121, - 0, 97,111, 95,112, 97,100, 50, 0, 97,111, 95,105,110,100,105,114,101, 99,116, 95, 98,111,117,110, 99,101,115, 0, 97,111, 95, -112, 97,100, 0, 97,111, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, 95,109,101,116, -104,111,100, 0, 97,111, 95, 97,112,112,114,111,120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101,114,101, 0, 42, - 97,111,116, 97, 98,108,101,115, 0,112, 97,100, 91, 51, 93, 0,115,101,108, 99,111,108, 0,115,120, 0,115,121, 0, 42,108,112, - 70,111,114,109, 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, 98, 70,111,114,109, 97,116, 0, 99, 98, 80, 97,114,109,115, - 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108,101,114, 0,100,119, 75,101,121, 70,114, 97,109,101, 69,118, -101,114,121, 0,100,119, 81,117, 97,108,105,116,121, 0,100,119, 66,121,116,101,115, 80,101,114, 83,101, 99,111,110,100, 0,100, -119, 70,108, 97,103,115, 0,100,119, 73,110,116,101,114,108,101, 97,118,101, 69,118,101,114,121, 0, 97,118,105, 99,111,100,101, - 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114,109,115, 0, 42,112, 97,100, 0, 99,100, 83,105,122,101, 0, -113,116, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 99,111,100,101, 99, 84,121,112,101, 0, 99,111,100,101, 99, - 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0, 99,111,100,101, 99, 0, 99,111,100,101, 99, 70,108, 97,103,115, 0, - 99,111,108,111,114, 68,101,112,116,104, 0, 99,111,100,101, 99, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0, -109,105,110, 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 84,101,109,112,111,114, 97,108, 81,117, 97, -108,105,116,121, 0,107,101,121, 70,114, 97,109,101, 82, 97,116,101, 0, 98,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 99, -111,100,101, 99, 84,121,112,101, 0, 97,117,100,105,111, 83, 97,109,112,108,101, 82, 97,116,101, 0, 97,117,100,105,111, 66,105, -116, 68,101,112,116,104, 0, 97,117,100,105,111, 67,104, 97,110,110,101,108,115, 0, 97,117,100,105,111, 67,111,100,101, 99, 70, -108, 97,103,115, 0, 97,117,100,105,111, 66,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 95, 99,111,100,101, 99, 0,118,105, -100,101,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, -109,105,120,114, 97,116,101, 0, 97,117,100,105,111, 95,118,111,108,117,109,101, 0,103,111,112, 95,115,105,122,101, 0,114, 99, - 95,109,105,110, 95,114, 97,116,101, 0,114, 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102,102,101,114, 95, -115,105,122,101, 0,109,117,120, 95,112, 97, 99,107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116,101, 0,109,105, -120,114, 97,116,101, 0,109, 97,105,110, 0,115,112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,111,112,112,108,101, -114, 95,102, 97, 99,116,111,114, 0,100,105,115,116, 97,110, 99,101, 95,109,111,100,101,108, 0, 42,109, 97,116, 95,111,118,101, -114,114,105,100,101, 0, 42,108,105,103,104,116, 95,111,118,101,114,114,105,100,101, 0,108, 97,121, 95,122,109, 97,115,107, 0, -108, 97,121,102,108, 97,103, 0,112, 97,115,115,102,108, 97,103, 0,112, 97,115,115, 95,120,111,114, 0, 42, 97,118,105, 99,111, -100,101, 99,100, 97,116, 97, 0, 42,113,116, 99,111,100,101, 99,100, 97,116, 97, 0,113,116, 99,111,100,101, 99,115,101,116,116, -105,110,103,115, 0,102,102, 99,111,100,101, 99,100, 97,116, 97, 0,115,117, 98,102,114, 97,109,101, 0,112,115,102,114, 97, 0, -112,101,102,114, 97, 0,105,109, 97,103,101,115, 0,102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97,100,115, 0,102,114, - 97,109,101,108,101,110, 0, 98,108,117,114,102, 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101,100,103,101, 66, - 0,102,117,108,108,115, 99,114,101,101,110, 0,120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113,112,108, 97,121, - 0, 97,116,116,114,105, 98, 0,114,116, 50, 0,102,114, 97,109,101, 95,115,116,101,112, 0,115,116,101,114,101,111,109,111,100, -101, 0,100,105,109,101,110,115,105,111,110,115,112,114,101,115,101,116, 0,109, 97,120,105,109,115,105,122,101, 0,120,115, 99, -104, 0,121,115, 99,104, 0,120,112, 97,114,116,115, 0,121,112, 97,114,116,115, 0,119,105,110,112,111,115, 0,112,108, 97,110, -101,115, 0,105,109,116,121,112,101, 0,115,117, 98,105,109,116,121,112,101, 0,113,117, 97,108,105,116,121, 0,100,105,115,112, -108, 97,121,109,111,100,101, 0,114,112, 97,100, 49, 0,114,112, 97,100, 50, 0,115, 99,101,109,111,100,101, 0,114, 97,121,116, -114, 97, 99,101, 95,111,112,116,105,111,110,115, 0,114, 97,121,116,114, 97, 99,101, 95,115,116,114,117, 99,116,117,114,101, 0, -114,101,110,100,101,114,101,114, 0,111, 99,114,101,115, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, 0,102,114,115, - 95,115,101, 99, 0,101,100,103,101,105,110,116, 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100,105,115,112,114, -101, 99,116, 0,108, 97,121,101,114,115, 0, 97, 99,116,108, 97,121, 0,109, 98,108,117,114, 95,115, 97,109,112,108,101,115, 0, -120, 97,115,112, 0,121, 97,115,112, 0,102,114,115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, 0, 99,111,108, -111,114, 95,109,103,116, 95,102,108, 97,103, 0,112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117,101, 0,112,111, -115,116,115, 97,116, 0,100,105,116,104,101,114, 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95,111,115, 97, 0, - 98, 97,107,101, 95,102,105,108,116,101,114, 0, 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102,108, 97,103, 0, - 98, 97,107,101, 95,110,111,114,109, 97,108, 95,115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95,115,112,108,105, -116, 0, 98, 97,107,101, 95,109, 97,120,100,105,115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, 0, 98, 97,107, -101, 95,112, 97,100, 0, 98, 97, 99,107, 98,117,102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0,115,116, 97,109, -112, 0,115,116, 97,109,112, 95,102,111,110,116, 95,105,100, 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, 49, 54, 48, 93, - 0,102,103, 95,115,116, 97,109,112, 91, 52, 93, 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, 0,115,101,113, 95,112,114,101, -118, 95,116,121,112,101, 0,115,101,113, 95,114,101,110,100, 95,116,121,112,101, 0,115,101,113, 95,102,108, 97,103, 0,112, 97, -100, 53, 91, 53, 93, 0,115,105,109,112,108,105,102,121, 95,102,108, 97,103, 0,115,105,109,112,108,105,102,121, 95,115,117, 98, -115,117,114,102, 0,115,105,109,112,108,105,102,121, 95,115,104, 97,100,111,119,115, 97,109,112,108,101,115, 0,115,105,109,112, -108,105,102,121, 95,112, 97,114,116,105, 99,108,101,115, 0,115,105,109,112,108,105,102,121, 95, 97,111,115,115,115, 0, 99,105, -110,101,111,110,119,104,105,116,101, 0, 99,105,110,101,111,110, 98,108, 97, 99,107, 0, 99,105,110,101,111,110,103, 97,109,109, - 97, 0,106,112, 50, 95,112,114,101,115,101,116, 0,106,112, 50, 95,100,101,112,116,104, 0,114,112, 97,100, 51, 0,100,111,109, -101,114,101,115, 0,100,111,109,101,109,111,100,101, 0,100,111,109,101, 97,110,103,108,101, 0,100,111,109,101,116,105,108,116, - 0,100,111,109,101,114,101,115, 98,117,102, 0, 42,100,111,109,101,116,101,120,116, 0,101,110,103,105,110,101, 91, 51, 50, 93, - 0,112, 97,114,116,105, 99,108,101, 95,112,101,114, 99, 0,115,117, 98,115,117,114,102, 95,109, 97,120, 0,115,104, 97,100, 98, -117,102,115, 97,109,112,108,101, 95,109, 97,120, 0, 97,111, 95,101,114,114,111,114, 0,116,105,108,116, 0,114,101,115, 98,117, -102, 0, 42,119, 97,114,112,116,101,120,116, 0, 99,111,108, 91, 51, 93, 0,109, 97,116,109,111,100,101, 0,102,114, 97,109,105, -110,103, 0,114,116, 49, 0,100,111,109,101, 0,115,116,101,114,101,111,102,108, 97,103, 0,101,121,101,115,101,112, 97,114, 97, -116,105,111,110, 0, 42, 99, 97,109,101,114, 97, 0, 42, 42, 98,114,117,115,104,101,115, 0, 97, 99,116,105,118,101, 95, 98,114, -117,115,104, 95,105,110,100,101,120, 0, 98,114,117,115,104, 95, 99,111,117,110,116, 0, 42,112, 97,105,110,116, 95, 99,117,114, -115,111,114, 0,112, 97,105,110,116, 95, 99,117,114,115,111,114, 95, 99,111,108, 91, 52, 93, 0,112, 97,105,110,116, 0,115,101, - 97,109, 95, 98,108,101,101,100, 0,110,111,114,109, 97,108, 95, 97,110,103,108,101, 0,115, 99,114,101,101,110, 95,103,114, 97, - 98, 95,115,105,122,101, 91, 50, 93, 0, 42,112, 97,105,110,116, 99,117,114,115,111,114, 0,105,110,118,101,114,116, 0,116,111, -116,114,101,107,101,121, 0,116,111,116, 97,100,100,107,101,121, 0, 98,114,117,115,104,116,121,112,101, 0, 98,114,117,115,104, - 91, 55, 93, 0,101,109,105,116,116,101,114,100,105,115,116, 0,115,101,108,101, 99,116,109,111,100,101, 0,101,100,105,116,116, -121,112,101, 0,100,114, 97,119, 95,115,116,101,112, 0,102, 97,100,101, 95,102,114, 97,109,101,115, 0,110, 97,109,101, 91, 51, - 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, 93, 0,112,105,118,111,116, 91, 51, 93, 0,116, 97, 98,108,101,116, 95,115,105,122, -101, 0,116, 97, 98,108,101,116, 95,115,116,114,101,110,103,116,104, 0, 42,118,112, 97,105,110,116, 95,112,114,101,118, 0, 42, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,108, 13,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0, 80, 15,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, + 46,189,194, 61,200, 16,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200, 16,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 96, 17,105, 7, 87, 1, 0, 0, 1, 0, 0, 0,160, 21,105, 7, + 32, 13,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117,108,116,105,112,108,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,144, 19,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,172, 17,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,144, 19,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, + 46,189,194, 61, 8, 21,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8, 21,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,160, 21,105, 7, 87, 1, 0, 0, 1, 0, 0, 0,224, 25,105, 7, + 96, 17,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 78,117,100,103,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,208, 23,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,160,239, 98, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,236, 21,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,208, 23,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186, 72, 25,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72, 25,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,224, 25,105, 7, 87, 1, 0, 0, 1, 0, 0, 0, 32, 30,105, 7, +160, 21,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,105,110, 99,104, 47, 77, 97,103,110,105,102,121, 0, 48, 48, 49, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 16, 28,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,248,146, 99, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, + 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0, 44, 26,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0, 16, 28,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186,136, 29,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136, 29,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 32, 30,105, 7, 87, 1, 0, 0, 1, 0, 0, 0, 96, 34,105, 7, +224, 25,105, 7, 72,208, 93, 3, 0, 0, 0, 0, 66, 82, 80,111,108,105,115,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 80, 32,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 64, 98, 96, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 9, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,108, 30,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0, 80, 32,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186,200, 33,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200, 33,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 96, 34,105, 7, 87, 1, 0, 0, 1, 0, 0, 0,160, 38,105, 7, + 32, 30,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83, 99,114, 97,112,101, 47, 80,101, 97,107,115, 0, 48, 48, 49, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,144, 36,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 80, 54,100, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,172, 34,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,144, 36,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186, 8, 38,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8, 38,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,160, 38,105, 7, 87, 1, 0, 0, 1, 0, 0, 0,224, 42,105, 7, + 96, 34,105, 7, 32,205,112, 3, 0, 0, 0, 0, 66, 82, 83, 99,117,108,112,116, 32, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,208, 40,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,144, 27, 95, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,236, 38,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,208, 40,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186, 72, 42,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72, 42,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,224, 42,105, 7, 87, 1, 0, 0, 1, 0, 0, 0, 32, 47,105, 7, +160, 38,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 16, 45,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 44, 43,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0, 16, 45,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, + 46,189,194, 61,136, 46,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136, 46,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 32, 47,105, 7, 87, 1, 0, 0, 1, 0, 0, 0, 96, 51,105, 7, +224, 42,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 80, 49,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,168,217,100, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 5, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,108, 47,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0, 80, 49,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186,200, 50,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200, 50,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 96, 51,105, 7, 87, 1, 0, 0, 1, 0, 0, 0,160, 55,105, 7, + 32, 47,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,110, 97,107,101, 32, 72,111,111,107, 0, 48, 48, 49, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,144, 53,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0,125,101, 7, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,172, 51,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,144, 53,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186, 8, 55,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8, 55,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,160, 55,105, 7, 87, 1, 0, 0, 1, 0, 0, 0,224, 59,105, 7, + 96, 51,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,208, 57,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,236, 55,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,208, 57,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, + 46,189,194, 61, 72, 59,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72, 59,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,224, 59,105, 7, 87, 1, 0, 0, 1, 0, 0, 0, 32, 64,105, 7, +160, 55,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,117, 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 16, 62,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 44, 60,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0, 16, 62,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, + 46,189,194, 61,136, 63,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136, 63,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 32, 64,105, 7, 87, 1, 0, 0, 1, 0, 0, 0, 96, 68,105, 7, +224, 59,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,104,117,109, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 80, 66,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 88, 32,102, 7, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, + 0, 0, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,108, 64,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0, 80, 66,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186,200, 67,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200, 67,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 96, 68,105, 7, 87, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 32, 64,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,119,105,115,116, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,144, 70,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,176,195,102, 7, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,172, 68,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,144, 70,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186, 8, 72,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8, 72,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 78, 65, 49,208,226, 0, 0, 32,240, 90, 3, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, + 78, 65, 77, 69,206, 11, 0, 0, 42,110,101,120,116, 0, 42,112,114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, + 0, 42,108, 97,115,116, 0,120, 0,121, 0,122, 0,119, 0,120,109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, + 97,120, 0, 42,112,111,105,110,116,101,114, 0,103,114,111,117,112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0, +115,117, 98,116,121,112,101, 0,102,108, 97,103, 0,110, 97,109,101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0,100, 97,116, 97, + 0,108,101,110, 0,116,111,116, 97,108,108,101,110, 0, 42,110,101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 50, + 52, 93, 0,117,115, 0,105, 99,111,110, 95,105,100, 0, 42,112,114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, + 98,108,111, 99,107, 0, 42,102,105,108,101,100, 97,116, 97, 0,110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,108,101,112, 97, +116,104, 91, 50, 52, 48, 93, 0,116,111,116, 0,112, 97,100, 0, 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, + 93, 0, 99,104, 97,110,103,101,100, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 95,116,105,109,101,115,116, 97,109,112, 91, 50, + 93, 0, 42,114,101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, 98,108,111, 99,107,116,121,112,101, 0, 97,100,114, 99,111,100,101, + 0,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, 42, 98,101,122,116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, + 99,116, 0,118, 97,114,116,121,112,101, 0,116,111,116,118,101,114,116, 0,105,112,111, 0,101,120,116,114, 97,112, 0,114,116, + 0, 98,105,116,109, 97,115,107, 0,115,108,105,100,101, 95,109,105,110, 0,115,108,105,100,101, 95,109, 97,120, 0, 99,117,114, +118, 97,108, 0, 42,100,114,105,118,101,114, 0, 99,117,114,118,101, 0, 99,117,114, 0,115,104,111,119,107,101,121, 0,109,117, +116,101,105,112,111, 0,112,111,115, 0,114,101,108, 97,116,105,118,101, 0,116,111,116,101,108,101,109, 0,112, 97,100, 50, 0, + 42,119,101,105,103,104,116,115, 0,118,103,114,111,117,112, 91, 51, 50, 93, 0,115,108,105,100,101,114,109,105,110, 0,115,108, +105,100,101,114,109, 97,120, 0, 42, 97,100,116, 0, 42,114,101,102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, + 0,101,108,101,109,115,105,122,101, 0, 98,108,111, 99,107, 0, 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101, +121, 0,115,108,117,114,112,104, 0, 42,108,105,110,101, 0, 42,102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101, +110,111, 0,115,116, 97,114,116, 0,101,110,100, 0,112, 97,100, 49, 0,102,108, 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, + 0,112, 97,100, 91, 52, 93, 0, 42,110, 97,109,101, 0,110,108,105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108, + 0, 42,115,101,108,108, 0, 99,117,114, 99, 0,115,101,108, 99, 0,109, 97,114,107,101,114,115, 0, 42,117,110,100,111, 95, 98, +117,102, 0,117,110,100,111, 95,112,111,115, 0,117,110,100,111, 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,109, +116,105,109,101, 0,115,105,122,101, 0,115,101,101,107, 0,112, 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0, 99,108, +105,112,115,116, 97, 0, 99,108,105,112,101,110,100, 0,108,101,110,115, 0,111,114,116,104,111, 95,115, 99, 97,108,101, 0,100, +114, 97,119,115,105,122,101, 0,115,104,105,102,116,120, 0,115,104,105,102,116,121, 0, 89, 70, 95,100,111,102,100,105,115,116, + 0, 42,100,111,102, 95,111, 98, 0,102,114, 97,109,101,110,114, 0,102,114, 97,109,101,115, 0,111,102,102,115,101,116, 0,115, +102,114, 97, 0,102,105,101, 95,105,109, 97, 0, 99,121, 99,108, 0,111,107, 0,109,117,108,116,105, 95,105,110,100,101,120, 0, +108, 97,121,101,114, 0,112, 97,115,115, 0,109,101,110,117,110,114, 0, 42,115, 99,101,110,101, 0,105, 98,117,102,115, 0, 42, +103,112,117,116,101,120,116,117,114,101, 0, 42, 97,110,105,109, 0, 42,114,114, 0, 42,114,101,110,100,101,114,115, 91, 56, 93, + 0,114,101,110,100,101,114, 95,115,108,111,116, 0,108, 97,115,116, 95,114,101,110,100,101,114, 95,115,108,111,116, 0,115,111, +117,114, 99,101, 0,108, 97,115,116,102,114, 97,109,101, 0,116,112, 97,103,101,102,108, 97,103, 0,116,111,116, 98,105,110,100, + 0,120,114,101,112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119,101,110,100, 0, 98,105,110,100, 99,111,100,101, 0, + 42,114,101,112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108,101, 0, 42,112,114,101,118,105,101,119, 0,108, 97, +115,116,117,112,100, 97,116,101, 0,108, 97,115,116,117,115,101,100, 0, 97,110,105,109,115,112,101,101,100, 0,103,101,110, 95, +120, 0,103,101,110, 95,121, 0,103,101,110, 95,116,121,112,101, 0, 97,115,112,120, 0, 97,115,112,121, 0,116,101,120, 99,111, + 0,109, 97,112,116,111, 0,109, 97,112,116,111,110,101,103, 0, 98,108,101,110,100,116,121,112,101, 0, 42,111, 98,106,101, 99, +116, 0, 42,116,101,120, 0,117,118,110, 97,109,101, 91, 51, 50, 93, 0,112,114,111,106,120, 0,112,114,111,106,121, 0,112,114, +111,106,122, 0,109, 97,112,112,105,110,103, 0,111,102,115, 91, 51, 93, 0,115,105,122,101, 91, 51, 93, 0,114,111,116, 0,116, +101,120,102,108, 97,103, 0, 99,111,108,111,114,109,111,100,101,108, 0,112,109, 97,112,116,111, 0,112,109, 97,112,116,111,110, +101,103, 0,110,111,114,109, 97,112,115,112, 97, 99,101, 0,119,104,105, 99,104, 95,111,117,116,112,117,116, 0, 98,114,117,115, +104, 95,109, 97,112, 95,109,111,100,101, 0,112, 97,100, 91, 55, 93, 0,114, 0,103, 0, 98, 0,107, 0,100,101,102, 95,118, 97, +114, 0, 99,111,108,102, 97, 99, 0,118, 97,114,102, 97, 99, 0,110,111,114,102, 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, + 97,114,112,102, 97, 99, 0, 99,111,108,115,112,101, 99,102, 97, 99, 0,109,105,114,114,102, 97, 99, 0, 97,108,112,104, 97,102, + 97, 99, 0,100,105,102,102,102, 97, 99, 0,115,112,101, 99,102, 97, 99, 0,101,109,105,116,102, 97, 99, 0,104, 97,114,100,102, + 97, 99, 0,114, 97,121,109,105,114,114,102, 97, 99, 0,116,114, 97,110,115,108,102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99, +111,108,101,109,105,116,102, 97, 99, 0, 99,111,108,114,101,102,108,102, 97, 99, 0, 99,111,108,116,114, 97,110,115,102, 97, 99, + 0,100,101,110,115,102, 97, 99, 0,115, 99, 97,116,116,101,114,102, 97, 99, 0,114,101,102,108,102, 97, 99, 0,116,105,109,101, +102, 97, 99, 0,108,101,110,103,116,104,102, 97, 99, 0, 99,108,117,109,112,102, 97, 99, 0,107,105,110,107,102, 97, 99, 0,114, +111,117,103,104,102, 97, 99, 0,112, 97,100,101,110,115,102, 97, 99, 0,108,105,102,101,102, 97, 99, 0,115,105,122,101,102, 97, + 99, 0,105,118,101,108,102, 97, 99, 0,112,118,101,108,102, 97, 99, 0,115,104, 97,100,111,119,102, 97, 99, 0,122,101,110,117, +112,102, 97, 99, 0,122,101,110,100,111,119,110,102, 97, 99, 0, 98,108,101,110,100,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, + 48, 93, 0, 42,104, 97,110,100,108,101, 0, 42,112,110, 97,109,101, 0, 42,115,116,110, 97,109,101,115, 0,115,116,121,112,101, +115, 0,118, 97,114,115, 0, 42,118, 97,114,115,116,114, 0, 42,114,101,115,117,108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, + 97, 91, 51, 50, 93, 0, 40, 42,100,111,105,116, 41, 40, 41, 0, 40, 42,105,110,115,116, 97,110, 99,101, 95,105,110,105,116, 41, + 40, 41, 0, 40, 42, 99, 97,108,108, 98, 97, 99,107, 41, 40, 41, 0,118,101,114,115,105,111,110, 0, 97, 0,105,112,111,116,121, +112,101, 0, 42,105,109, 97, 0, 42, 99,117, 98,101, 91, 54, 93, 0,105,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, + 97,116, 91, 51, 93, 91, 51, 93, 0,115,116,121,112,101, 0,118,105,101,119,115, 99, 97,108,101, 0,110,111,116,108, 97,121, 0, + 99,117, 98,101,114,101,115, 0,100,101,112,116,104, 0,114,101, 99, 97,108, 99, 0,108, 97,115,116,115,105,122,101, 0,102, 97, +108,108,111,102,102, 95,116,121,112,101, 0,102, 97,108,108,111,102,102, 95,115,111,102,116,110,101,115,115, 0,114, 97,100,105, +117,115, 0, 99,111,108,111,114, 95,115,111,117,114, 99,101, 0,116,111,116,112,111,105,110,116,115, 0,112,100,112, 97,100, 0, +112,115,121,115, 0,112,115,121,115, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115, +112, 97, 99,101, 0, 42,112,111,105,110,116, 95,116,114,101,101, 0, 42,112,111,105,110,116, 95,100, 97,116, 97, 0,110,111,105, +115,101, 95,115,105,122,101, 0,110,111,105,115,101, 95,100,101,112,116,104, 0,110,111,105,115,101, 95,105,110,102,108,117,101, +110, 99,101, 0,110,111,105,115,101, 95, 98, 97,115,105,115, 0,112,100,112, 97,100, 51, 91, 51, 93, 0,110,111,105,115,101, 95, +102, 97, 99, 0,115,112,101,101,100, 95,115, 99, 97,108,101, 0, 42, 99,111, 98, 97, 0,114,101,115,111,108, 91, 51, 93, 0,105, +110,116,101,114,112, 95,116,121,112,101, 0,102,105,108,101, 95,102,111,114,109, 97,116, 0,101,120,116,101,110,100, 0,115,109, +111,107,101,100, 95,116,121,112,101, 0,105,110,116, 95,109,117,108,116,105,112,108,105,101,114, 0,115,116,105,108,108, 95,102, +114, 97,109,101, 0,115,111,117,114, 99,101, 95,112, 97,116,104, 91, 50, 52, 48, 93, 0, 42,100, 97,116, 97,115,101,116, 0, 99, + 97, 99,104,101,100,102,114, 97,109,101, 0,110,111,105,115,101,115,105,122,101, 0,116,117,114, 98,117,108, 0, 98,114,105,103, +104,116, 0, 99,111,110,116,114, 97,115,116, 0,115, 97,116,117,114, 97,116,105,111,110, 0,114,102, 97, 99, 0,103,102, 97, 99, + 0, 98,102, 97, 99, 0,102,105,108,116,101,114,115,105,122,101, 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, 97,114, +105,116,121, 0,109,103, 95,111, 99,116, 97,118,101,115, 0,109,103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97,105,110, + 0,100,105,115,116, 95, 97,109,111,117,110,116, 0,110,115, 95,111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, 0,118, +110, 95,119, 50, 0,118,110, 95,119, 51, 0,118,110, 95,119, 52, 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105,115,116, +109, 0,118,110, 95, 99,111,108,116,121,112,101, 0,110,111,105,115,101,100,101,112,116,104, 0,110,111,105,115,101,116,121,112, +101, 0,110,111,105,115,101, 98, 97,115,105,115, 0,110,111,105,115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, 97,103, + 0, 99,114,111,112,120,109,105,110, 0, 99,114,111,112,121,109,105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114,111,112, +121,109, 97,120, 0,116,101,120,102,105,108,116,101,114, 0, 97,102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101, +112,101, 97,116, 0, 99,104,101, 99,107,101,114,100,105,115,116, 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42,110,111, +100,101,116,114,101,101, 0, 42,112,108,117,103,105,110, 0, 42,101,110,118, 0, 42,112,100, 0, 42,118,100, 0,117,115,101, 95, +110,111,100,101,115, 0,108,111, 99, 91, 51, 93, 0,114,111,116, 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105, +110, 91, 51, 93, 0,109, 97,120, 91, 51, 93, 0,109,111,100,101, 0,116,111,116,101,120, 0,115,104,100,119,114, 0,115,104,100, +119,103, 0,115,104,100,119, 98, 0,115,104,100,119,112, 97,100, 0,101,110,101,114,103,121, 0,100,105,115,116, 0,115,112,111, +116,115,105,122,101, 0,115,112,111,116, 98,108,101,110,100, 0,104, 97,105,110,116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, + 42, 99,117,114,102, 97,108,108,111,102,102, 0,115,104, 97,100,115,112,111,116,115,105,122,101, 0, 98,105, 97,115, 0,115,111, +102,116, 0, 99,111,109,112,114,101,115,115,116,104,114,101,115,104, 0,112, 97,100, 53, 91, 51, 93, 0, 98,117,102,115,105,122, +101, 0,115, 97,109,112, 0, 98,117,102,102,101,114,115, 0,102,105,108,116,101,114,116,121,112,101, 0, 98,117,102,102,108, 97, +103, 0, 98,117,102,116,121,112,101, 0,114, 97,121, 95,115, 97,109,112, 0,114, 97,121, 95,115, 97,109,112,121, 0,114, 97,121, + 95,115, 97,109,112,122, 0,114, 97,121, 95,115, 97,109,112, 95,116,121,112,101, 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, + 97,114,101, 97, 95,115,105,122,101, 0, 97,114,101, 97, 95,115,105,122,101,121, 0, 97,114,101, 97, 95,115,105,122,101,122, 0, + 97,100, 97,112,116, 95,116,104,114,101,115,104, 0,114, 97,121, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0,116,101,120, + 97, 99,116, 0,115,104, 97,100,104, 97,108,111,115,116,101,112, 0,115,117,110, 95,101,102,102,101, 99,116, 95,116,121,112,101, + 0,115,107,121, 98,108,101,110,100,116,121,112,101, 0,104,111,114,105,122,111,110, 95, 98,114,105,103,104,116,110,101,115,115, + 0,115,112,114,101, 97,100, 0,115,117,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,117,110, 95,115,105,122,101, 0, + 98, 97, 99,107,115, 99, 97,116,116,101,114,101,100, 95,108,105,103,104,116, 0,115,117,110, 95,105,110,116,101,110,115,105,116, +121, 0, 97,116,109, 95,116,117,114, 98,105,100,105,116,121, 0, 97,116,109, 95,105,110,115, 99, 97,116,116,101,114,105,110,103, + 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,101,120,116,105,110, 99,116,105,111,110, 95,102, 97, 99,116,111,114, 0, 97,116, +109, 95,100,105,115,116, 97,110, 99,101, 95,102, 97, 99,116,111,114, 0,115,107,121, 98,108,101,110,100,102, 97, 99, 0,115,107, +121, 95,101,120,112,111,115,117,114,101, 0,115,107,121, 95, 99,111,108,111,114,115,112, 97, 99,101, 0,112, 97,100, 52, 91, 54, + 93, 0, 42,109,116,101,120, 91, 49, 56, 93, 0,112,114, 95,116,101,120,116,117,114,101, 0,112, 97,100, 54, 91, 54, 93, 0,100, +101,110,115,105,116,121, 0,101,109,105,115,115,105,111,110, 0,115, 99, 97,116,116,101,114,105,110,103, 0,114,101,102,108,101, + 99,116,105,111,110, 0,101,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,116,114, 97,110,115,109,105,115,115,105, +111,110, 95, 99,111,108, 91, 51, 93, 0,114,101,102,108,101, 99,116,105,111,110, 95, 99,111,108, 91, 51, 93, 0,100,101,110,115, +105,116,121, 95,115, 99, 97,108,101, 0,100,101,112,116,104, 95, 99,117,116,111,102,102, 0, 97,115,121,109,109,101,116,114,121, + 0,115,116,101,112,115,105,122,101, 95,116,121,112,101, 0,115,104, 97,100,101,102,108, 97,103, 0,115,104, 97,100,101, 95,116, +121,112,101, 0,112,114,101, 99, 97, 99,104,101, 95,114,101,115,111,108,117,116,105,111,110, 0,115,116,101,112,115,105,122,101, + 0,109,115, 95,100,105,102,102, 0,109,115, 95,105,110,116,101,110,115,105,116,121, 0,109,115, 95,115,112,114,101, 97,100, 0, +109, 97,116,101,114,105, 97,108, 95,116,121,112,101, 0,115,112,101, 99,114, 0,115,112,101, 99,103, 0,115,112,101, 99, 98, 0, +109,105,114,114, 0,109,105,114,103, 0,109,105,114, 98, 0, 97,109, 98,114, 0, 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, + 98, 0,101,109,105,116, 0, 97,110,103, 0,115,112,101, 99,116,114, 97, 0,114, 97,121, 95,109,105,114,114,111,114, 0, 97,108, +112,104, 97, 0,114,101,102, 0,115,112,101, 99, 0,122,111,102,102,115, 0, 97,100,100, 0,116,114, 97,110,115,108,117, 99,101, +110, 99,121, 0,118,111,108, 0,102,114,101,115,110,101,108, 95,109,105,114, 0,102,114,101,115,110,101,108, 95,109,105,114, 95, +105, 0,102,114,101,115,110,101,108, 95,116,114, 97, 0,102,114,101,115,110,101,108, 95,116,114, 97, 95,105, 0,102,105,108,116, +101,114, 0,116,120, 95,108,105,109,105,116, 0,116,120, 95,102, 97,108,108,111,102,102, 0,114, 97,121, 95,100,101,112,116,104, + 0,114, 97,121, 95,100,101,112,116,104, 95,116,114, 97, 0,104, 97,114, 0,115,101,101,100, 49, 0,115,101,101,100, 50, 0,103, +108,111,115,115, 95,109,105,114, 0,103,108,111,115,115, 95,116,114, 97, 0,115, 97,109,112, 95,103,108,111,115,115, 95,109,105, +114, 0,115, 97,109,112, 95,103,108,111,115,115, 95,116,114, 97, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,109,105, +114, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,116,114, 97, 0, 97,110,105,115,111, 95,103,108,111,115,115, 95,109, +105,114, 0,100,105,115,116, 95,109,105,114, 0,102, 97,100,101,116,111, 95,109,105,114, 0,115,104, 97,100,101, 95,102,108, 97, +103, 0,109,111,100,101, 95,108, 0,102,108, 97,114,101, 99, 0,115,116, 97,114, 99, 0,108,105,110,101, 99, 0,114,105,110,103, + 99, 0,104, 97,115,105,122,101, 0,102,108, 97,114,101,115,105,122,101, 0,115,117, 98,115,105,122,101, 0,102,108, 97,114,101, + 98,111,111,115,116, 0,115,116,114, 97,110,100, 95,115,116, 97, 0,115,116,114, 97,110,100, 95,101,110,100, 0,115,116,114, 97, +110,100, 95,101, 97,115,101, 0,115,116,114, 97,110,100, 95,115,117,114,102,110,111,114, 0,115,116,114, 97,110,100, 95,109,105, +110, 0,115,116,114, 97,110,100, 95,119,105,100,116,104,102, 97,100,101, 0,115,116,114, 97,110,100, 95,117,118,110, 97,109,101, + 91, 51, 50, 93, 0,115, 98,105, 97,115, 0,108, 98,105, 97,115, 0,115,104, 97,100, 95, 97,108,112,104, 97, 0,115,101,112,116, +101,120, 0,114,103, 98,115,101,108, 0,112,114, 95,116,121,112,101, 0,112,114, 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109, +112, 0,109,108, 95,102,108, 97,103, 0,100,105,102,102, 95,115,104, 97,100,101,114, 0,115,112,101, 99, 95,115,104, 97,100,101, +114, 0,114,111,117,103,104,110,101,115,115, 0,114,101,102,114, 97, 99, 0,112, 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0, +100, 97,114,107,110,101,115,115, 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42,114, 97,109,112, 95,115,112,101, 99, 0,114, 97, +109,112,105,110, 95, 99,111,108, 0,114, 97,109,112,105,110, 95,115,112,101, 99, 0,114, 97,109,112, 98,108,101,110,100, 95, 99, +111,108, 0,114, 97,109,112, 98,108,101,110,100, 95,115,112,101, 99, 0,114, 97,109,112, 95,115,104,111,119, 0,112, 97,100, 51, + 0,114, 97,109,112,102, 97, 99, 95, 99,111,108, 0,114, 97,109,112,102, 97, 99, 95,115,112,101, 99, 0, 42,103,114,111,117,112, + 0,102,114,105, 99,116,105,111,110, 0,102,104, 0,114,101,102,108,101, 99,116, 0,102,104,100,105,115,116, 0,120,121,102,114, +105, 99,116, 0,100,121,110, 97,109,111,100,101, 0,115,115,115, 95,114, 97,100,105,117,115, 91, 51, 93, 0,115,115,115, 95, 99, +111,108, 91, 51, 93, 0,115,115,115, 95,101,114,114,111,114, 0,115,115,115, 95,115, 99, 97,108,101, 0,115,115,115, 95,105,111, +114, 0,115,115,115, 95, 99,111,108,102, 97, 99, 0,115,115,115, 95,116,101,120,102, 97, 99, 0,115,115,115, 95,102,114,111,110, +116, 0,115,115,115, 95, 98, 97, 99,107, 0,115,115,115, 95,102,108, 97,103, 0,115,115,115, 95,112,114,101,115,101,116, 0,109, + 97,112,116,111, 95,116,101,120,116,117,114,101,100, 0,112, 97,100, 52, 0,103,112,117,109, 97,116,101,114,105, 97,108, 0,110, + 97,109,101, 91, 50, 53, 54, 93, 0, 42, 98, 98, 0,105, 49, 0,106, 49, 0,107, 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115, +101,108, 99,111,108, 49, 0,115,101,108, 99,111,108, 50, 0,113,117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,101,120,112,121, + 0,101,120,112,122, 0,114, 97,100, 0,114, 97,100, 50, 0,115, 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,101,108,101,109, +115, 0,100,105,115,112, 0, 42,101,100,105,116,101,108,101,109,115, 0, 42, 42,109, 97,116, 0,102,108, 97,103, 50, 0,116,111, +116, 99,111,108, 0,119,105,114,101,115,105,122,101, 0,114,101,110,100,101,114,115,105,122,101, 0,116,104,114,101,115,104, 0, + 42,108, 97,115,116,101,108,101,109, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,104,116, 0, +104, 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104,105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110, +114, 0,112,110,116,115,117, 0,112,110,116,115,118, 0,114,101,115,111,108,117, 0,114,101,115,111,108,118, 0,111,114,100,101, +114,117, 0,111,114,100,101,114,118, 0,102,108, 97,103,117, 0,102,108, 97,103,118, 0, 42,107,110,111,116,115,117, 0, 42,107, +110,111,116,115,118, 0,116,105,108,116, 95,105,110,116,101,114,112, 0,114, 97,100,105,117,115, 95,105,110,116,101,114,112, 0, + 99,104, 97,114,105,100,120, 0,107,101,114,110, 0,104, 0,110,117,114, 98, 0, 42,101,100,105,116,110,117,114, 98, 0, 42, 98, +101,118,111, 98,106, 0, 42,116, 97,112,101,114,111, 98,106, 0, 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,112, 97, +116,104, 0, 42,107,101,121, 0, 98,101,118, 0,100,114, 97,119,102,108, 97,103, 0,116,119,105,115,116, 95,109,111,100,101, 0, +112, 97,100, 91, 50, 93, 0,116,119,105,115,116, 95,115,109,111,111,116,104, 0,115,109, 97,108,108, 99, 97,112,115, 95,115, 99, + 97,108,101, 0,112, 97,116,104,108,101,110, 0, 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0, +101,120,116, 50, 0,114,101,115,111,108,117, 95,114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117, + 0, 42,108, 97,115,116,115,101,108, 0,115,112, 97, 99,101,109,111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101, +100,105,115,116, 0,115,104,101, 97,114, 0,102,115,105,122,101, 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, + 0,117,108,104,101,105,103,104,116, 0,120,111,102, 0,121,111,102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, + 0, 42,115,101,108, 98,111,120,101,115, 0, 42,101,100,105,116,102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, + 42,118,102,111,110,116, 0, 42,118,102,111,110,116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0, +115,101,112, 99,104, 97,114, 0, 99,116,105,109,101, 0,116,111,116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0, +115,101,108,115,116, 97,114,116, 0,115,101,108,101,110,100, 0, 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, + 0,101,102,102,101, 99,116, 0, 42,109,102, 97, 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109, +118,101,114,116, 0, 42,109,101,100,103,101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107, +121, 0, 42,116,101,120, 99,111,109,101,115,104, 0, 42,109,115,101,108,101, 99,116, 0, 42,101,100,105,116, 95,109,101,115,104, + 0,118,100, 97,116, 97, 0,101,100, 97,116, 97, 0,102,100, 97,116, 97, 0,116,111,116,101,100,103,101, 0,116,111,116,102, 97, + 99,101, 0,116,111,116,115,101,108,101, 99,116, 0, 97, 99,116, 95,102, 97, 99,101, 0,101,100,105,116,102,108, 97,103, 0, 99, +117, 98,101,109, 97,112,115,105,122,101, 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98, +100,105,118,114, 0,115,117, 98,115,117,114,102,116,121,112,101, 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,103,101, 0, +117,118, 91, 52, 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, + 97,112, 0,118, 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,119,101, +105,103,104,116, 0,100,101,102, 95,110,114, 0, 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0, +110,111, 91, 51, 93, 0,117,118, 91, 50, 93, 0, 99,111, 91, 50, 93, 0,105,110,100,101,120, 0,102, 0,105, 0,115, 91, 50, 53, + 54, 93, 0,116,111,116,100,105,115,112, 0, 40, 42,100,105,115,112,115, 41, 40, 41, 0,118, 91, 52, 93, 0,109,105,100, 0,118, + 91, 50, 93, 0, 42,102, 97, 99,101,115, 0, 42, 99,111,108,102, 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,118,101,114, +116,115, 0,108,101,118,101,108,115, 0,108,101,118,101,108, 95, 99,111,117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101, +119,108,118,108, 0,101,100,103,101,108,118,108, 0,112,105,110,108,118,108, 0,114,101,110,100,101,114,108,118,108, 0,117,115, +101, 95, 99,111,108, 0, 42,101,100,103,101, 95,102,108, 97,103,115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, + 42,118,101,114,116, 95,109, 97,112, 0, 42,101,100,103,101, 95,109, 97,112, 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42, +111,108,100, 95,101,100,103,101,115, 0,115,116, 97, 99,107,105,110,100,101,120, 0, 42,101,114,114,111,114, 0,109,111,100,105, +102,105,101,114, 0,115,117, 98,100,105,118, 84,121,112,101, 0,114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, + 67, 97, 99,104,101, 0, 42,109, 67, 97, 99,104,101, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,101,110, +103,116,104, 0,114, 97,110,100,111,109,105,122,101, 0,115,101,101,100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116, 97,114, +116, 95, 99, 97,112, 0, 42,101,110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, + 95,111, 98, 0,111,102,102,115,101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115, +116, 0,102,105,116, 95,116,121,112,101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105, +115, 0,116,111,108,101,114, 97,110, 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103, +108,101, 0,118, 97,108,117,101, 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, + 0,101, 95,102,108, 97,103,115, 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, + 91, 51, 50, 93, 0, 42,100,111,109, 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,116,105,109,101, 0, 42,116, +101,120,116,117,114,101, 0,115,116,114,101,110,103,116,104, 0,100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118, +101,108, 0,116,101,120,109, 97,112,112,105,110,103, 0, 42,109, 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101, +114, 95,110, 97,109,101, 91, 51, 50, 93, 0,117,118,108, 97,121,101,114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,116,111, +114,115, 91, 49, 48, 93, 0, 42,105,109, 97,103,101, 0,110,117,109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112, +101, 99,116,120, 0, 97,115,112,101, 99,116,121, 0,115, 99, 97,108,101,120, 0,115, 99, 97,108,101,121, 0,112,101,114, 99,101, +110,116, 0,102, 97, 99,101, 67,111,117,110,116, 0,102, 97, 99, 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99, +101,110,116,101,114, 0,115,116, 97,114,116,120, 0,115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111, +119, 0,115,112,101,101,100, 0,100, 97,109,112, 0,102, 97,108,108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105, +102,101,116,105,109,101, 0,100,101,102,111,114,109,102,108, 97,103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, + 0,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112, 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99, +101,110,116, 91, 51, 93, 0, 42,105,110,100,101,120, 97,114, 0,116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, + 99,108,111,116,104, 79, 98,106,101, 99,116, 0, 42,115,105,109, 95,112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114, +109,115, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 0,112,116, 99, 97, 99,104,101,115, 0, 42,120, 0, 42,120,110,101, +119, 0, 42,120,111,108,100, 0, 42, 99,117,114,114,101,110,116, 95,120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, + 0, 42, 99,117,114,114,101,110,116, 95,118, 0, 42,109,102, 97, 99,101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109, +102, 97, 99,101,115, 0, 42, 98,118,104,116,114,101,101, 0, 42,118, 0, 42,100,109, 0, 99,102,114, 97, 0,111,112,101,114, 97, +116,105,111,110, 0,118,101,114,116,101,120, 0,116,111,116,105,110,102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,122, +101, 0, 42, 98,105,110,100,105,110,102,108,117,101,110, 99,101,115, 0, 42, 98,105,110,100,111,102,102,115,101,116,115, 0, 42, + 98,105,110,100, 99, 97,103,101, 99,111,115, 0,116,111,116, 99, 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,100, + 0, 42,100,121,110,105,110,102,108,117,101,110, 99,101,115, 0, 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0, +100,121,110,103,114,105,100,115,105,122,101, 0,100,121,110, 99,101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108, +108,119,105,100,116,104, 0, 98,105,110,100,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42, 98,105,110,100,119,101,105,103,104,116, +115, 0, 42, 98,105,110,100, 99,111,115, 0, 40, 42, 98,105,110,100,102,117,110, 99, 41, 40, 41, 0, 42,112,115,121,115, 0,116, +111,116,100,109,118,101,114,116, 0,116,111,116,100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,111,115, +105,116,105,111,110, 0,114, 97,110,100,111,109, 95,112,111,115,105,116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103, +114,111,117,112, 0,112,114,111,116,101, 99,116, 0,108,118,108, 0,115, 99,117,108,112,116,108,118,108, 0,116,111,116,108,118, +108, 0,115,105,109,112,108,101, 0, 42,102,115,115, 0, 42,116, 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, + 0,118,103,114,111,117,112, 95,110, 97,109,101, 91, 51, 50, 93, 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, + 84,121,112,101, 0,115,104,114,105,110,107, 79,112,116,115, 0,112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, + 76,101,118,101,108,115, 0, 42,111,114,105,103,105,110, 0,102, 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111, +114,105,103,105,110, 79,112,116,115, 0,111,102,102,115,101,116, 95,102, 97, 99, 0, 99,114,101, 97,115,101, 95,105,110,110,101, +114, 0, 99,114,101, 97,115,101, 95,111,117,116,101,114, 0, 99,114,101, 97,115,101, 95,114,105,109, 0, 42,111, 98, 95, 97,120, +105,115, 0,115,116,101,112,115, 0,114,101,110,100,101,114, 95,115,116,101,112,115, 0,105,116,101,114, 0,115, 99,114,101,119, + 95,111,102,115, 0, 97,110,103,108,101, 0,112,110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111, +112,110,116,115,119, 0,116,121,112,101,117, 0,116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, + 0,100,117, 0,100,118, 0,100,119, 0, 42,100,101,102, 0, 42,108, 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, + 97,116, 91, 52, 93, 91, 52, 93, 0, 42,101,100,105,116,108, 97,116,116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99, +117,108,112,116, 0,112, 97,114,116,121,112,101, 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115, +117, 98,115,116,114, 91, 51, 50, 93, 0, 42,116,114, 97, 99,107, 0, 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103, +114,111,117,112, 0, 42,112,114,111,120,121, 95,102,114,111,109, 0, 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, + 98, 0, 42,112,111,115,101, 0, 42,103,112,100, 0, 97,118,115, 0, 42,109,112, 97,116,104, 0, 99,111,110,115,116,114, 97,105, +110,116, 67,104, 97,110,110,101,108,115, 0,100,101,102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115, 0,114,101,115, +116,111,114,101, 95,109,111,100,101, 0, 42,109, 97,116, 98,105,116,115, 0, 97, 99,116, 99,111,108, 0,100,108,111, 99, 91, 51, + 93, 0,111,114,105,103, 91, 51, 93, 0,100,115,105,122,101, 91, 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116, + 91, 52, 93, 0,114,111,116, 65,120,105,115, 91, 51, 93, 0,100,114,111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110, +103,108,101, 0,100,114,111,116, 65,110,103,108,101, 0,111, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105, +110,118, 91, 52, 93, 91, 52, 93, 0,108, 97,121, 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,112, +114,111,116,101, 99,116,102,108, 97,103, 0,116,114, 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102, +108, 97,103, 0,105,112,111,102,108, 97,103, 0,105,112,111,119,105,110, 0,115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105, +115,102,108, 97,103, 0, 98,111,117,110,100,116,121,112,101, 0,100,117,112,111,110, 0,100,117,112,111,102,102, 0,100,117,112, +115,116, 97, 0,100,117,112,101,110,100, 0,115,102, 0,109, 97,115,115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116, +105, 97, 0,102,111,114,109,102, 97, 99,116,111,114, 0,114,100, 97,109,112,105,110,103, 0,109, 97,114,103,105,110, 0,109, 97, +120, 95,118,101,108, 0,109,105,110, 95,118,101,108, 0,109, 95, 99,111,110,116, 97, 99,116, 80,114,111, 99,101,115,115,105,110, +103, 84,104,114,101,115,104,111,108,100, 0,114,111,116,109,111,100,101, 0,100,116, 0,100,116,120, 0,101,109,112,116,121, 95, +100,114, 97,119,116,121,112,101, 0,112, 97,100, 49, 91, 51, 93, 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0, +100,117,112,102, 97, 99,101,115, 99, 97, 0,112,114,111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108, +101,114,115, 0, 97, 99,116,117, 97,116,111,114,115, 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, + 97,109,101,102,108, 97,103, 0,103, 97,109,101,102,108, 97,103, 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97, +103, 0, 97,110,105,115,111,116,114,111,112,105, 99, 70,114,105, 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97, +105,110,116,115, 0,110,108, 97,115,116,114,105,112,115, 0,104,111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115, +116,101,109, 0, 42,115,111,102,116, 0, 42,100,117,112, 95,103,114,111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97, +103, 0,114,101,115,116,114,105, 99,116,102,108, 97,103, 0,115,104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, + 0,114,101, 99, 97,108, 99,111, 0, 98,111,100,121, 95,116,121,112,101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116, +105,110,103,115, 0, 42,100,101,114,105,118,101,100, 68,101,102,111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97, +108, 0,108, 97,115,116, 68, 97,116, 97, 77, 97,115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0, +103,112,117,108, 97,109,112, 0,112, 99, 95,105,100,115, 0, 42,100,117,112,108,105,108,105,115,116, 0, 99,117,114,105,110,100, +101,120, 0, 97, 99,116,105,118,101, 0,111,114,105,103,108, 97,121, 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116, +101,100, 0,111,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111,114, 99,111, 91, 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111, +114, 99,101,102,105,101,108,100, 0,115,104, 97,112,101, 0,116,101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110, +107, 95, 97,120,105,115, 0,122,100,105,114, 0,102, 95,115,116,114,101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95, +102,108,111,119, 0,102, 95,115,105,122,101, 0,102, 95,112,111,119,101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100, +105,115,116, 0,102, 95,112,111,119,101,114, 95,114, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,100, 0,112,100,101,102, + 95,100, 97,109,112, 0,112,100,101,102, 95,114,100, 97,109,112, 0,112,100,101,102, 95,112,101,114,109, 0,112,100,101,102, 95, +102,114,105, 99,116, 0,112,100,101,102, 95,114,102,114,105, 99,116, 0,112,100,101,102, 95,115,116,105, 99,107,110,101,115,115, + 0, 97, 98,115,111,114,112,116,105,111,110, 0,112,100,101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105, +102,116, 0,112,100,101,102, 95,115, 98,111,102,116, 0, 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111, +119, 0,107,105,110,107, 95,102,114,101,113, 0,107,105,110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0, +102,114,101,101, 95,101,110,100, 0,116,101,120, 95,110, 97, 98,108, 97, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0, +119,101,105,103,104,116, 91, 49, 51, 93, 0,103,108,111, 98, 97,108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93, 0, +102,114, 97,109,101, 0,116,111,116,112,111,105,110,116, 0,100, 97,116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,120, + 95, 97,114,114, 97,121, 0, 42,100, 97,116, 97, 91, 56, 93, 0, 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, 0,115,105,109, +102,114, 97,109,101, 0,115,116, 97,114,116,102,114, 97,109,101, 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, + 97,109,101, 0,108, 97,115,116, 95,101,120, 97, 99,116, 0,110, 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,109, +101, 91, 54, 52, 93, 0,105,110,102,111, 91, 54, 52, 93, 0,112, 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97, 99, +104,101, 0, 42,101,100,105,116, 0, 40, 42,102,114,101,101, 95,101,100,105,116, 41, 40, 41, 0,108,105,110, 83,116,105,102,102, + 0, 97,110,103, 83,116,105,102,102, 0,118,111,108,117,109,101, 0,118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,116, +101,114, 97,116,105,111,110,115, 0,100,105,116,101,114, 97,116,105,111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,115, + 0,107, 83, 82, 72, 82, 95, 67, 76, 0,107, 83, 75, 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82, 95, + 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 75, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76, 0, +107, 86, 67, 70, 0,107, 68, 80, 0,107, 68, 71, 0,107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77, 84, + 0,107, 67, 72, 82, 0,107, 75, 72, 82, 0,107, 83, 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,108, + 97,103,115, 0,110,117,109, 99,108,117,115,116,101,114,105,116,101,114, 97,116,105,111,110,115, 0,119,101,108,100,105,110,103, + 0,116,111,116,115,112,114,105,110,103, 0, 42, 98,112,111,105,110,116, 0, 42, 98,115,112,114,105,110,103, 0,109,115,103, 95, +108,111, 99,107, 0,109,115,103, 95,118, 97,108,117,101, 0,110,111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71, 95, + 77, 97,115,115, 91, 51, 50, 93, 0,103,114, 97,118, 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, + 0,112,104,121,115,105, 99,115, 95,115,112,101,101,100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114, +105, 99,116, 0,109,105,110,103,111, 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116, +103,114,111,117,112, 0,110, 97,109,101,100, 86, 71, 95, 83,111,102,116,103,111, 97,108, 91, 51, 50, 93, 0,102,117,122,122,121, +110,101,115,115, 0,105,110,115,112,114,105,110,103, 0,105,110,102,114,105, 99,116, 0,110, 97,109,101,100, 86, 71, 95, 83,112, +114,105,110,103, 95, 75, 91, 51, 50, 93, 0,101,102,114, 97, 0,105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115, +111,108,118,101,114,102,108, 97,103,115, 0, 42, 42,107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, + 99,111,110,100,115,112,114,105,110,103, 0, 99,111,108, 98, 97,108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108, +115,116,105,102,102, 0,115, 98, 99, 95,109,111,100,101, 0, 97,101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, + 0,109, 97,120,108,111,111,112,115, 0, 99,104,111,107,101, 0,115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, + 99, 0,115,112,114,105,110,103,112,114,101,108,111, 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116, +105,102,102, 0,105,110,112,117,115,104, 0, 42,112,111,105,110,116, 99, 97, 99,104,101, 0, 42,101,102,102,101, 99,116,111,114, + 95,119,101,105,103,104,116,115, 0,108, 99,111,109, 91, 51, 93, 0,108,114,111,116, 91, 51, 93, 91, 51, 93, 0,108,115, 99, 97, +108,101, 91, 51, 93, 91, 51, 93, 0,112, 97,100, 52, 91, 52, 93, 0, 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, + 99,101,100,111,112,116,105,111,110,115, 0,114,101,115,111,108,117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119, +114,101,115,120,121,122, 0,114,101, 97,108,115,105,122,101, 0,103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114, +101,110,100,101,114, 68,105,115,112,108, 97,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0, +118,105,115, 99,111,115,105,116,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0, +103,114, 97,118,120, 0,103,114, 97,118,121, 0,103,114, 97,118,122, 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, + 69,110,100, 0, 98, 97,107,101, 83,116, 97,114,116, 0, 98, 97,107,101, 69,110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82, +101,102,105,110,101, 0,105,110,105, 86,101,108,120, 0,105,110,105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111, +114,103, 77,101,115,104, 0, 42,109,101,115,104, 83,117,114,102, 97, 99,101, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102, +100, 97,116, 97, 80, 97,116,104, 91, 50, 52, 48, 93, 0, 98, 98, 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, + 51, 93, 0,116,121,112,101, 70,108, 97,103,115, 0,100,111,109, 97,105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117, +109,101, 73,110,105,116, 84,121,112,101, 0,112, 97,114,116, 83,108,105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116, +101, 84,114, 97, 99,101,114,115, 0,103,101,110,101,114, 97,116,101, 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, + 99,101, 83,109,111,111,116,104,105,110,103, 0,115,117,114,102, 97, 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, + 99,108,101, 73,110,102, 83,105,122,101, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70, +105,101,108,100, 83,105,122,101, 0, 42,109,101,115,104, 83,117,114,102, 78,111,114,109, 97,108,115, 0, 99,112,115, 84,105,109, +101, 83,116, 97,114,116, 0, 99,112,115, 84,105,109,101, 69,110,100, 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116, +114, 97, 99,116,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97, +100,105,117,115, 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99, +105,116,121,102,111,114, 99,101, 82, 97,100,105,117,115, 0,108, 97,115,116,103,111,111,100,102,114, 97,109,101, 0,109,105,115, +116,121,112,101, 0,104,111,114,114, 0,104,111,114,103, 0,104,111,114, 98, 0,104,111,114,107, 0,122,101,110,114, 0,122,101, +110,103, 0,122,101,110, 98, 0,122,101,110,107, 0, 97,109, 98,107, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117, +114,101, 0,101,120,112, 0,114, 97,110,103,101, 0,108,105,110,102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105, +116,121, 0, 97, 99,116,105,118,105,116,121, 66,111,120, 82, 97,100,105,117,115, 0,115,107,121,116,121,112,101, 0,111, 99, 99, +108,117,115,105,111,110, 82,101,115, 0,112,104,121,115,105, 99,115, 69,110,103,105,110,101, 0,116,105, 99,114, 97,116,101, 0, +109, 97,120,108,111,103,105, 99,115,116,101,112, 0,112,104,121,115,117, 98,115,116,101,112, 0,109, 97,120,112,104,121,115,116, +101,112, 0,109,105,115,105, 0,109,105,115,116,115,116, 97, 0,109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0, +115,116, 97,114,114, 0,115,116, 97,114,103, 0,115,116, 97,114, 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, + 0,115,116, 97,114,109,105,110,100,105,115,116, 0,115,116, 97,114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105, +115,101, 0,100,111,102,115,116, 97, 0,100,111,102,101,110,100, 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97, +111,100,105,115,116, 0, 97,111,100,105,115,116,102, 97, 99, 0, 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, + 97,111,109,111,100,101, 0, 97,111,115, 97,109,112, 0, 97,111,109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97, +100, 97,112,116, 95,116,104,114,101,115,104, 0, 97,111, 95, 97,100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97, +111, 95, 97,112,112,114,111,120, 95,101,114,114,111,114, 0, 97,111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116, +105,111,110, 0, 97,111, 95,105,110,100,105,114,101, 99,116, 95,101,110,101,114,103,121, 0, 97,111, 95,101,110,118, 95,101,110, +101,114,103,121, 0, 97,111, 95,112, 97,100, 50, 0, 97,111, 95,105,110,100,105,114,101, 99,116, 95, 98,111,117,110, 99,101,115, + 0, 97,111, 95,112, 97,100, 0, 97,111, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, + 95,109,101,116,104,111,100, 0, 97,111, 95, 97,112,112,114,111,120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101, +114,101, 0, 42, 97,111,116, 97, 98,108,101,115, 0,112, 97,100, 91, 51, 93, 0,115,101,108, 99,111,108, 0,115,120, 0,115,121, + 0, 42,108,112, 70,111,114,109, 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, 98, 70,111,114,109, 97,116, 0, 99, 98, 80, + 97,114,109,115, 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108,101,114, 0,100,119, 75,101,121, 70,114, 97, +109,101, 69,118,101,114,121, 0,100,119, 81,117, 97,108,105,116,121, 0,100,119, 66,121,116,101,115, 80,101,114, 83,101, 99,111, +110,100, 0,100,119, 70,108, 97,103,115, 0,100,119, 73,110,116,101,114,108,101, 97,118,101, 69,118,101,114,121, 0, 97,118,105, + 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114,109,115, 0, 42,112, 97,100, 0, 99,100, 83, +105,122,101, 0,113,116, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 99,111,100,101, 99, 84,121,112,101, 0, 99, +111,100,101, 99, 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0, 99,111,100,101, 99, 0, 99,111,100,101, 99, 70,108, + 97,103,115, 0, 99,111,108,111,114, 68,101,112,116,104, 0, 99,111,100,101, 99, 84,101,109,112,111,114, 97,108, 81,117, 97,108, +105,116,121, 0,109,105,110, 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 84,101,109,112,111,114, 97, +108, 81,117, 97,108,105,116,121, 0,107,101,121, 70,114, 97,109,101, 82, 97,116,101, 0, 98,105,116, 82, 97,116,101, 0, 97,117, +100,105,111, 99,111,100,101, 99, 84,121,112,101, 0, 97,117,100,105,111, 83, 97,109,112,108,101, 82, 97,116,101, 0, 97,117,100, +105,111, 66,105,116, 68,101,112,116,104, 0, 97,117,100,105,111, 67,104, 97,110,110,101,108,115, 0, 97,117,100,105,111, 67,111, +100,101, 99, 70,108, 97,103,115, 0, 97,117,100,105,111, 66,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 95, 99,111,100,101, + 99, 0,118,105,100,101,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, 98,105,116,114, 97,116,101, 0, 97,117, +100,105,111, 95,109,105,120,114, 97,116,101, 0, 97,117,100,105,111, 95,118,111,108,117,109,101, 0,103,111,112, 95,115,105,122, +101, 0,114, 99, 95,109,105,110, 95,114, 97,116,101, 0,114, 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102, +102,101,114, 95,115,105,122,101, 0,109,117,120, 95,112, 97, 99,107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116, +101, 0,109,105,120,114, 97,116,101, 0,109, 97,105,110, 0,115,112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,111, +112,112,108,101,114, 95,102, 97, 99,116,111,114, 0,100,105,115,116, 97,110, 99,101, 95,109,111,100,101,108, 0, 42,109, 97,116, + 95,111,118,101,114,114,105,100,101, 0, 42,108,105,103,104,116, 95,111,118,101,114,114,105,100,101, 0,108, 97,121, 95,122,109, + 97,115,107, 0,108, 97,121,102,108, 97,103, 0,112, 97,115,115,102,108, 97,103, 0,112, 97,115,115, 95,120,111,114, 0, 42, 97, +118,105, 99,111,100,101, 99,100, 97,116, 97, 0, 42,113,116, 99,111,100,101, 99,100, 97,116, 97, 0,113,116, 99,111,100,101, 99, +115,101,116,116,105,110,103,115, 0,102,102, 99,111,100,101, 99,100, 97,116, 97, 0,115,117, 98,102,114, 97,109,101, 0,112,115, +102,114, 97, 0,112,101,102,114, 97, 0,105,109, 97,103,101,115, 0,102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97,100, +115, 0,102,114, 97,109,101,108,101,110, 0, 98,108,117,114,102, 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101, +100,103,101, 66, 0,102,117,108,108,115, 99,114,101,101,110, 0,120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113, +112,108, 97,121, 0, 97,116,116,114,105, 98, 0,114,116, 50, 0,102,114, 97,109,101, 95,115,116,101,112, 0,115,116,101,114,101, +111,109,111,100,101, 0,100,105,109,101,110,115,105,111,110,115,112,114,101,115,101,116, 0,109, 97,120,105,109,115,105,122,101, + 0,120,115, 99,104, 0,121,115, 99,104, 0,120,112, 97,114,116,115, 0,121,112, 97,114,116,115, 0,119,105,110,112,111,115, 0, +112,108, 97,110,101,115, 0,105,109,116,121,112,101, 0,115,117, 98,105,109,116,121,112,101, 0,113,117, 97,108,105,116,121, 0, +100,105,115,112,108, 97,121,109,111,100,101, 0,114,112, 97,100, 49, 0,114,112, 97,100, 50, 0,115, 99,101,109,111,100,101, 0, +114, 97,121,116,114, 97, 99,101, 95,111,112,116,105,111,110,115, 0,114, 97,121,116,114, 97, 99,101, 95,115,116,114,117, 99,116, +117,114,101, 0,114,101,110,100,101,114,101,114, 0,111, 99,114,101,115, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, + 0,102,114,115, 95,115,101, 99, 0,101,100,103,101,105,110,116, 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100, +105,115,112,114,101, 99,116, 0,108, 97,121,101,114,115, 0, 97, 99,116,108, 97,121, 0,109, 98,108,117,114, 95,115, 97,109,112, +108,101,115, 0,120, 97,115,112, 0,121, 97,115,112, 0,102,114,115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, + 0, 99,111,108,111,114, 95,109,103,116, 95,102,108, 97,103, 0,112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117, +101, 0,112,111,115,116,115, 97,116, 0,100,105,116,104,101,114, 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95, +111,115, 97, 0, 98, 97,107,101, 95,102,105,108,116,101,114, 0, 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102, +108, 97,103, 0, 98, 97,107,101, 95,110,111,114,109, 97,108, 95,115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95, +115,112,108,105,116, 0, 98, 97,107,101, 95,109, 97,120,100,105,115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, + 0, 98, 97,107,101, 95,112, 97,100, 0, 98, 97, 99,107, 98,117,102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0, +115,116, 97,109,112, 0,115,116, 97,109,112, 95,102,111,110,116, 95,105,100, 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, + 49, 54, 48, 93, 0,102,103, 95,115,116, 97,109,112, 91, 52, 93, 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, 0,115,101,113, + 95,112,114,101,118, 95,116,121,112,101, 0,115,101,113, 95,114,101,110,100, 95,116,121,112,101, 0,115,101,113, 95,102,108, 97, +103, 0,112, 97,100, 53, 91, 53, 93, 0,115,105,109,112,108,105,102,121, 95,102,108, 97,103, 0,115,105,109,112,108,105,102,121, + 95,115,117, 98,115,117,114,102, 0,115,105,109,112,108,105,102,121, 95,115,104, 97,100,111,119,115, 97,109,112,108,101,115, 0, +115,105,109,112,108,105,102,121, 95,112, 97,114,116,105, 99,108,101,115, 0,115,105,109,112,108,105,102,121, 95, 97,111,115,115, +115, 0, 99,105,110,101,111,110,119,104,105,116,101, 0, 99,105,110,101,111,110, 98,108, 97, 99,107, 0, 99,105,110,101,111,110, +103, 97,109,109, 97, 0,106,112, 50, 95,112,114,101,115,101,116, 0,106,112, 50, 95,100,101,112,116,104, 0,114,112, 97,100, 51, + 0,100,111,109,101,114,101,115, 0,100,111,109,101,109,111,100,101, 0,100,111,109,101, 97,110,103,108,101, 0,100,111,109,101, +116,105,108,116, 0,100,111,109,101,114,101,115, 98,117,102, 0, 42,100,111,109,101,116,101,120,116, 0,101,110,103,105,110,101, + 91, 51, 50, 93, 0,112, 97,114,116,105, 99,108,101, 95,112,101,114, 99, 0,115,117, 98,115,117,114,102, 95,109, 97,120, 0,115, +104, 97,100, 98,117,102,115, 97,109,112,108,101, 95,109, 97,120, 0, 97,111, 95,101,114,114,111,114, 0,116,105,108,116, 0,114, +101,115, 98,117,102, 0, 42,119, 97,114,112,116,101,120,116, 0, 99,111,108, 91, 51, 93, 0,109, 97,116,109,111,100,101, 0,102, +114, 97,109,105,110,103, 0,114,116, 49, 0,100,111,109,101, 0,115,116,101,114,101,111,102,108, 97,103, 0,101,121,101,115,101, +112, 97,114, 97,116,105,111,110, 0, 42, 99, 97,109,101,114, 97, 0, 42, 42, 98,114,117,115,104,101,115, 0, 97, 99,116,105,118, +101, 95, 98,114,117,115,104, 95,105,110,100,101,120, 0, 98,114,117,115,104, 95, 99,111,117,110,116, 0, 42,112, 97,105,110,116, + 95, 99,117,114,115,111,114, 0,112, 97,105,110,116, 95, 99,117,114,115,111,114, 95, 99,111,108, 91, 52, 93, 0,112, 97,105,110, +116, 0,115,101, 97,109, 95, 98,108,101,101,100, 0,110,111,114,109, 97,108, 95, 97,110,103,108,101, 0,115, 99,114,101,101,110, + 95,103,114, 97, 98, 95,115,105,122,101, 91, 50, 93, 0, 42,112, 97,105,110,116, 99,117,114,115,111,114, 0,105,110,118,101,114, +116, 0,116,111,116,114,101,107,101,121, 0,116,111,116, 97,100,100,107,101,121, 0, 98,114,117,115,104,116,121,112,101, 0, 98, +114,117,115,104, 91, 55, 93, 0,101,109,105,116,116,101,114,100,105,115,116, 0,115,101,108,101, 99,116,109,111,100,101, 0,101, +100,105,116,116,121,112,101, 0,100,114, 97,119, 95,115,116,101,112, 0,102, 97,100,101, 95,102,114, 97,109,101,115, 0,110, 97, +109,101, 91, 51, 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, 93, 0,114, 97,100,105, 97,108, 95,115,121,109,109, 91, 51, 93, 0, +108, 97,115,116, 95,120, 0,108, 97,115,116, 95,121, 0,108, 97,115,116, 95, 97,110,103,108,101, 0,100,114, 97,119, 95, 97,110, + 99,104,111,114,101,100, 0, 97,110, 99,104,111,114,101,100, 95,115,105,122,101, 0, 97,110, 99,104,111,114,101,100, 95,108,111, + 99, 97,116,105,111,110, 91, 51, 93, 0, 97,110, 99,104,111,114,101,100, 95,105,110,105,116,105, 97,108, 95,109,111,117,115,101, + 91, 50, 93, 0,100,114, 97,119, 95,112,114,101,115,115,117,114,101, 0,112,114,101,115,115,117,114,101, 95,118, 97,108,117,101, + 0,115,112,101, 99,105, 97,108, 95,114,111,116, 97,116,105,111,110, 0, 42,118,112, 97,105,110,116, 95,112,114,101,118, 0, 42, 119,112, 97,105,110,116, 95,112,114,101,118, 0, 42,118,112, 97,105,110,116, 0, 42,119,112, 97,105,110,116, 0,118,103,114,111, 117,112, 95,119,101,105,103,104,116, 0, 99,111,114,110,101,114,116,121,112,101, 0,101,100,105,116, 98,117,116,102,108, 97,103, 0,106,111,105,110,116,114,105,108,105,109,105,116, 0,100,101,103,114, 0,116,117,114,110, 0,101,120,116,114, 95,111,102,102, @@ -6330,1208 +28995,1222 @@ char datatoc_startup_blend[]= { 115, 0,117,110,100,111,109,101,109,111,114,121, 0,103,112, 95,109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103,112, 95,101,117, 99,108,105,100,101, 97,110,100,105,115,116, 0,103,112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101,116,116, 105,110,103,115, 0,116, 98, 95,108,101,102,116,109,111,117,115,101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, 0, -108,105,103,104,116, 91, 51, 93, 0,116,119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108, 97,103, 0,116,119, 95,104, - 97,110,100,108,101,115,105,122,101, 0,116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101,111,117,116, 0,116,101,120, - 99,111,108,108,101, 99,116,114, 97,116,101, 0,119,109,100,114, 97,119,109,101,116,104,111,100, 0,119,109,112, 97,100, 0,109, -101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101,102,101,116, 99,104,102,114, 97,109,101,115, 0,102,114, 97,109, -101,115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95,114,111,116, 95, 97,110,103,108,101, 0,111, 98, 99,101,110,116, -101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114,118,105, 98,114,105,103,104,116, 0,114,101, 99,101,110,116, 95, -102,105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101,119,116,120, 0,103,108,114,101,115,108,105,109,105,116, 0,110, -100,111,102, 95,112, 97,110, 0,110,100,111,102, 95,114,111,116, 97,116,101, 0, 99,117,114,115,115,105,122,101, 0, 99,111,108, -111,114, 95,112,105, 99,107,101,114, 95,116,121,112,101, 0,105,112,111, 95,110,101,119, 0,107,101,121,104, 97,110,100,108,101, -115, 95,110,101,119, 0,115, 99,114, 99, 97,115,116,102,112,115, 0,115, 99,114, 99, 97,115,116,119, 97,105,116, 0,112,114,111, -112,119,105,100,116,104, 0,118,101,114,115,101,109, 97,115,116,101,114, 91, 49, 54, 48, 93, 0,118,101,114,115,101,117,115,101, -114, 91, 49, 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108,105,112, 0, 99,111, 98, 97, 95,119,101,105,103,104,116, 0,118, -101,114,116, 98, 97,115,101, 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,115,101, 0, 42,110,101,119,115, 99, -101,110,101, 0,102,117,108,108, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0,100,111, 95,114,101,102,114,101,115, -104, 0,100,111, 95,100,114, 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, 97,119, 95,112, 97,105,110,116, 99, -117,114,115,111,114, 0,100,111, 95,100,114, 97,119, 95,100,114, 97,103, 0,115,119, 97,112, 0,109, 97,105,110,119,105,110, 0, -115,117, 98,119,105,110, 97, 99,116,105,118,101, 0, 42, 97,110,105,109,116,105,109,101,114, 0, 42, 99,111,110,116,101,120,116, - 0,104, 97,110,100,108,101,114, 91, 56, 93, 0, 42,110,101,119,118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42,116, -121,112,101, 0,112, 97,110,101,108,110, 97,109,101, 91, 54, 52, 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, - 97,119,110, 97,109,101, 91, 54, 52, 93, 0,111,102,115,120, 0,111,102,115,121, 0,115,105,122,101,120, 0,115,105,122,101,121, - 0,108, 97, 98,101,108,111,102,115, 0,114,117,110,116,105,109,101, 95,102,108, 97,103, 0, 99,111,110,116,114,111,108, 0,115, -110, 97,112, 0,115,111,114,116,111,114,100,101,114, 0, 42,112, 97,110,101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101,100, - 97,116, 97, 0,108,105,115,116, 95,115, 99,114,111,108,108, 0,108,105,115,116, 95,115,105,122,101, 0,108,105,115,116, 95,108, - 97,115,116, 95,108,101,110, 0,108,105,115,116, 95,103,114,105,112, 95,115,105,122,101, 0,108,105,115,116, 95,115,101, 97,114, - 99,104, 91, 54, 52, 93, 0, 42,118, 51, 0, 42,118, 52, 0, 42,102,117,108,108, 0, 98,117,116,115,112, 97, 99,101,116,121,112, -101, 0,104,101, 97,100,101,114,116,121,112,101, 0,115,112, 97, 99,101,100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, 0, - 97, 99,116,105,111,110,122,111,110,101,115, 0,119,105,110,114, 99,116, 0,100,114, 97,119,114, 99,116, 0,115,119,105,110,105, -100, 0,114,101,103,105,111,110,116,121,112,101, 0, 97,108,105,103,110,109,101,110,116, 0,100,111, 95,100,114, 97,119, 95,111, -118,101,114,108, 97,121, 0,117,105, 98,108,111, 99,107,115, 0,112, 97,110,101,108,115, 0, 42,104,101, 97,100,101,114,115,116, -114, 0, 42,114,101,103,105,111,110,100, 97,116, 97, 0,115,117, 98,118,115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115, -105,111,110, 0,112, 97,100,115, 0,109,105,110,118,101,114,115,105,111,110, 0,109,105,110,115,117, 98,118,101,114,115,105,111, -110, 0, 42, 99,117,114,115, 99,114,101,101,110, 0, 42, 99,117,114,115, 99,101,110,101, 0,102,105,108,101,102,108, 97,103,115, - 0,103,108,111, 98, 97,108,102, 0,102,105,108,101,110, 97,109,101, 91, 50, 52, 48, 93, 0,110, 97,109,101, 91, 56, 48, 93, 0, - 42,105, 98,117,102, 0, 42,105, 98,117,102, 95, 99,111,109,112, 0, 42,115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0, -110,114, 0, 98,111,116,116,111,109, 0,114,105,103,104,116, 0,120,111,102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, - 93, 0,103, 97,109,109, 97, 91, 51, 93, 0,103, 97,105,110, 91, 51, 93, 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110,101, - 0,115,116, 97,114,116,115,116,105,108,108, 0,101,110,100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0, -111,114,120, 0,111,114,121, 0, 42, 99,114,111,112, 0, 42,116,114, 97,110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, - 98, 97,108, 97,110, 99,101, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95, -115,116, 97,114,116,115,116,105,108,108, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,101,110,100,115,116,105,108,108, 0, - 42,105, 98,117,102, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42,105, 98,117,102, 95,101,110,100,115,116,105,108,108, 0, - 42,105,110,115,116, 97,110, 99,101, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, - 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111, -102,115, 0,109, 97, 99,104,105,110,101, 0,115,116, 97,114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,109,117,108, - 0,104, 97,110,100,115,105,122,101, 0, 97,110,105,109, 95,112,114,101,115,101,101,107, 0, 42,115,116,114,105,112, 0, 42,115, - 99,101,110,101, 95, 99, 97,109,101,114, 97, 0,101,102,102,101, 99,116, 95,102, 97,100,101,114, 0,115,112,101,101,100, 95,102, - 97,100,101,114, 0, 42,115,101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42, -115,111,117,110,100, 0, 42,115, 99,101,110,101, 95,115,111,117,110,100, 0,108,101,118,101,108, 0,112, 97,110, 0,115, 99,101, -110,101,110,114, 0,109,117,108,116,105, 99, 97,109, 95,115,111,117,114, 99,101, 0,115,116,114,111, 98,101, 0, 42,101,102,102, -101, 99,116,100, 97,116, 97, 0, 97,110,105,109, 95,115,116, 97,114,116,111,102,115, 0, 97,110,105,109, 95,101,110,100,111,102, -115, 0, 98,108,101,110,100, 95,109,111,100,101, 0, 98,108,101,110,100, 95,111,112, 97, 99,105,116,121, 0, 42,111,108,100, 98, - 97,115,101,112, 0, 42,112, 97,114,115,101,113, 0, 42,115,101,113, 98, 97,115,101,112, 0,109,101,116, 97,115,116, 97, 99,107, - 0, 42, 97, 99,116, 95,115,101,113, 0, 97, 99,116, 95,105,109, 97,103,101,100,105,114, 91, 50, 53, 54, 93, 0, 97, 99,116, 95, -115,111,117,110,100,100,105,114, 91, 50, 53, 54, 93, 0,111,118,101,114, 95,111,102,115, 0,111,118,101,114, 95, 99,102,114, 97, - 0,111,118,101,114, 95,102,108, 97,103, 0,111,118,101,114, 95, 98,111,114,100,101,114, 0,101,100,103,101, 87,105,100,116,104, - 0,102,111,114,119, 97,114,100, 0,119,105,112,101,116,121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109,112, 0,102, - 66,111,111,115,116, 0,100, 68,105,115,116, 0,100, 81,117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0, 83, 99, 97, -108,101,120, 73,110,105, 0, 83, 99, 97,108,101,121, 73,110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, 83, 99, 97,108,101, -121, 70,105,110, 0,120, 73,110,105, 0,120, 70,105,110, 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111,116, 73,110,105, 0, -114,111,116, 70,105,110, 0,105,110,116,101,114,112,111,108, 97,116,105,111,110, 0,117,110,105,102,111,114,109, 95,115, 99, 97, -108,101, 0, 42,102,114, 97,109,101, 77, 97,112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115,116, 86, 97,108, -105,100, 70,114, 97,109,101, 0, 98,117,116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,116,111,116,112, - 97,114,116, 0,110,111,114,109,102, 97, 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,120,102, 97, 99, - 0,114, 97,110,100,108,105,102,101, 0,102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,109, 97,120,108, -101,110, 0,100,101,102,118,101, 99, 91, 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, 0, 99,104,105, -108,100, 91, 52, 93, 0,109, 97,116, 91, 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,115,116, 97,116, -105, 99,115,116,101,112, 0,111,109, 97,116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101,120, 0,102,108, 97, -103, 50,110,101,103, 0,118,101,114,116,103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, 91, 51, 50, 93, - 0,118,103,114,111,117,112,110, 97,109,101, 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102, 97, 99, 0,117, -115,101,100, 0,117,115,101,100,101,108,101,109, 0, 42,112,111,105,110, 0,114,101,115,101,116,100,105,115,116, 0,108, 97,115, -116,118, 97,108, 0, 42,109, 97, 0,107,101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,101,116, 78, 97, -109,101, 91, 51, 50, 93, 0,116,111,103,103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91, 51, 50, 93, 0, -109, 97,120,118, 97,108,117,101, 91, 51, 50, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,105,111,110, 0,109, 97,116,101, -114,105, 97,108, 78, 97,109,101, 91, 51, 50, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,114,111,112,110, 97,109,101, 91, - 51, 50, 93, 0,109, 97,116,110, 97,109,101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111,115,101, 99,104, 97, -110,110,101,108, 91, 51, 50, 93, 0, 99,111,110,115,116,114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114,111,109, 79, 98,106, -101, 99,116, 0,115,117, 98,106,101, 99,116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116,121,112,101, 0,112, -117,108,115,101, 0,102,114,101,113, 0,116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,116, 97,112, 0,106, -111,121,105,110,100,101,120, 0, 97,120,105,115, 95,115,105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, - 0,104, 97,116, 0,104, 97,116,102, 0,112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0, 42,109,121, -110,101,119, 0,105,110,112,117,116,115, 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,108,105,110,107,115, 0,118, 97, -108,111, 0,115,116, 97,116,101, 95,109, 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111,112, 91, 51, 50, 93, - 0, 98,108,101,110,100,105,110, 0,112,114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,115,101,116, 0,115,116,114,105, -100,101, 97,120,105,115, 0,115,116,114,105,100,101,108,101,110,103,116,104, 0,115,110,100,110,114, 0,112, 97,100, 51, 91, 50, - 93, 0,112,105,116, 99,104, 0,115,111,117,110,100, 51, 68, 0,112, 97,100, 54, 91, 49, 93, 0, 42,109,101, 0,108,105,110, 86, -101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108,102, -108, 97,103, 0,100,121,110, 95,111,112,101,114, 97,116,105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,102,111, -114, 99,101,114,111,116, 91, 51, 93, 0,108,105,110,101, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103,117, -108, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 42,114,101,102,101,114,101,110, 99,101, 0,109,105,110, 0,109, 97, -120, 0,114,111,116,100, 97,109,112, 0,109,105,110,108,111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, 51, 93, 0,109,105, -110,114,111,116, 91, 51, 93, 0,109, 97,120,114,111,116, 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51, 50, 93, 0, 98,117, -116,115,116, 97, 0, 98,117,116,101,110,100, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, 97,114,103, - 95, 49, 0,105,110,116, 95, 97,114,103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97,116, 95, 97, -114,103, 95, 50, 0,116,111, 80,114,111,112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, 99,116, 0, 98,111, -100,121, 84,121,112,101, 0,102,105,108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97,109,101, 91, - 54, 52, 93, 0,105,110,116, 95, 97,114,103, 0,102,108,111, 97,116, 95, 97,114,103, 0, 42,115,117, 98,116, 97,114,103,101,116, - 0,103,111, 0, 97, 99, 99,101,108,108,101,114, 97,116,105,111,110, 0,109, 97,120,115,112,101,101,100, 0,109, 97,120,114,111, -116,115,112,101,101,100, 0,109, 97,120,116,105,108,116,115,112,101,101,100, 0,116,105,108,116,100, 97,109,112, 0,115,112,101, -101,100,100, 97,109,112, 0,109,105,110, 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101,102,101,114,101,110, - 99,101, 95,100,105,115,116, 97,110, 99,101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,101, 0,114,111,108,108,111,102,102, - 95,102, 97, 99,116,111,114, 0, 99,111,110,101, 95,105,110,110,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117, -116,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42,110,101,119,112, 97, - 99,107,101,100,102,105,108,101, 0, 97,116,116,101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, - 97, 99,104,101, 0, 42,112,108, 97,121, 98, 97, 99,107, 95,104, 97,110,100,108,101, 0, 42, 97,114,101, 97, 0, 42,108, 97,109, -112,114,101,110, 0,103,111, 98,106,101, 99,116, 0,100,117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 42,112,114,111,112, 0, - 99,104,105,108,100, 98, 97,115,101, 0,114,111,108,108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98, -111,110,101, 95,109, 97,116, 91, 51, 93, 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97, -105,108, 91, 51, 93, 0, 97,114,109, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0,122,119,105,100,116, -104, 0,101, 97,115,101, 49, 0,101, 97,115,101, 50, 0,114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95,116, 97,105,108, 0, - 98,111,110,101, 98, 97,115,101, 0, 99,104, 97,105,110, 98, 97,115,101, 0, 42,101,100, 98,111, 0, 42, 97, 99,116, 95, 98,111, -110,101, 0, 42, 97, 99,116, 95,101,100, 98,111,110,101, 0, 42,115,107,101,116, 99,104, 0,108, 97,121,101,114, 95,112,114,111, -116,101, 99,116,101,100, 0,103,104,111,115,116,101,112, 0,103,104,111,115,116,115,105,122,101, 0,103,104,111,115,116,116,121, -112,101, 0,112, 97,116,104,115,105,122,101, 0,103,104,111,115,116,115,102, 0,103,104,111,115,116,101,102, 0,112, 97,116,104, -115,102, 0,112, 97,116,104,101,102, 0,112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,111,105,110,116,115, 0, -115,116, 97,114,116, 95,102,114, 97,109,101, 0,101,110,100, 95,102,114, 97,109,101, 0,103,104,111,115,116, 95,115,102, 0,103, -104,111,115,116, 95,101,102, 0,103,104,111,115,116, 95, 98, 99, 0,103,104,111,115,116, 95, 97, 99, 0,103,104,111,115,116, 95, -116,121,112,101, 0,103,104,111,115,116, 95,115,116,101,112, 0,103,104,111,115,116, 95,102,108, 97,103, 0,112, 97,116,104, 95, -116,121,112,101, 0,112, 97,116,104, 95,115,116,101,112, 0,112, 97,116,104, 95,118,105,101,119,102,108, 97,103, 0,112, 97,116, -104, 95, 98, 97,107,101,102,108, 97,103, 0,112, 97,116,104, 95,115,102, 0,112, 97,116,104, 95,101,102, 0,112, 97,116,104, 95, - 98, 99, 0,112, 97,116,104, 95, 97, 99, 0, 99,111,110,115,116,102,108, 97,103, 0,105,107,102,108, 97,103, 0,115,101,108,101, - 99,116,102,108, 97,103, 0, 97,103,114,112, 95,105,110,100,101,120, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105, -107,116,114,101,101, 0, 42, 98, 95, 98,111,110,101, 95,109, 97,116,115, 0, 42,100,117, 97,108, 95,113,117, 97,116, 0, 42, 98, - 95, 98,111,110,101, 95,100,117, 97,108, 95,113,117, 97,116,115, 0,101,117,108, 91, 51, 93, 0, 99,104, 97,110, 95,109, 97,116, - 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, - 51, 93, 0,112,111,115,101, 95,116, 97,105,108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105,109,105, -116,109, 97,120, 91, 51, 93, 0,115,116,105,102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, 0,105, -107,114,111,116,119,101,105,103,104,116, 0,105,107,108,105,110,119,101,105,103,104,116, 0, 42, 99,117,115,116,111,109, 0, 42, - 99,117,115,116,111,109, 95,116,120, 0, 99,104, 97,110, 98, 97,115,101, 0, 42, 99,104, 97,110,104, 97,115,104, 0,112,114,111, -120,121, 95,108, 97,121,101,114, 0,115,116,114,105,100,101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, - 95,111,102,102,115,101,116, 91, 51, 93, 0, 97,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,103,114,111,117,112, 0, -105,107,115,111,108,118,101,114, 0, 42,105,107,100, 97,116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,112,114,111,120,121, 95, - 97, 99,116, 95, 98,111,110,101, 91, 51, 50, 93, 0,110,117,109,105,116,101,114, 0,110,117,109,115,116,101,112, 0,109,105,110, -115,116,101,112, 0,109, 97,120,115,116,101,112, 0,115,111,108,118,101,114, 0,102,101,101,100, 98, 97, 99,107, 0,109, 97,120, -118,101,108, 0,100, 97,109,112,109, 97,120, 0,100, 97,109,112,101,112,115, 0, 99,104, 97,110,110,101,108,115, 0, 99,117,115, -116,111,109, 67,111,108, 0, 99,115, 0, 99,117,114,118,101,115, 0,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,109, - 97,114,107,101,114, 0, 42,115,111,117,114, 99,101, 0, 42,102,105,108,116,101,114, 95,103,114,112, 0,102,105,108,116,101,114, -102,108, 97,103, 0, 97,100,115, 0,116,105,109,101,115,108,105,100,101, 0, 42,103,114,112, 0,116,101,109,112, 0,110, 97,109, -101, 91, 51, 48, 93, 0,111,119,110,115,112, 97, 99,101, 0,116, 97,114,115,112, 97, 99,101, 0,101,110,102,111,114, 99,101, 0, -104,101, 97,100,116, 97,105,108, 0,108,105,110, 95,101,114,114,111,114, 0,114,111,116, 95,101,114,114,111,114, 0, 42,116, 97, -114, 0,109, 97,116,114,105,120, 91, 52, 93, 91, 52, 93, 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100,101,114, 0,116, 97, -114,110,117,109, 0,116, 97,114,103,101,116,115, 0,105,116,101,114, 97,116,105,111,110,115, 0,114,111,111,116, 98,111,110,101, - 0,109, 97,120, 95,114,111,111,116, 98,111,110,101, 0, 42,112,111,108,101,116, 97,114, 0,112,111,108,101,115,117, 98,116, 97, -114,103,101,116, 91, 51, 50, 93, 0,112,111,108,101, 97,110,103,108,101, 0,111,114,105,101,110,116,119,101,105,103,104,116, 0, -103,114, 97, 98,116, 97,114,103,101,116, 91, 51, 93, 0,110,117,109,112,111,105,110,116,115, 0, 99,104, 97,105,110,108,101,110, - 0,120,122, 83, 99, 97,108,101, 77,111,100,101, 0,114,101,115,101,114,118,101,100, 49, 0,114,101,115,101,114,118,101,100, 50, - 0,109,105,110,109, 97,120,102,108, 97,103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99,107,102, -108, 97,103, 0,102,111,108,108,111,119,102,108, 97,103, 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103, -108,101,110,103,116,104, 0, 98,117,108,103,101, 0,112,105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120, 88, 0, - 97,120, 89, 0, 97,120, 90, 0,109,105,110, 76,105,109,105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54, 93, 0, -101,120,116,114, 97, 70,122, 0,105,110,118,109, 97,116, 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109, 97,112, - 91, 51, 93, 0,101,120,112,111, 0,102,114,111,109, 95,109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91, 51, 93, - 0,116,111, 95,109,105,110, 91, 51, 93, 0,116,111, 95,109, 97,120, 91, 51, 93, 0,114,111,116, 65,120,105,115, 0,122,109,105, -110, 0,122,109, 97,120, 0,112, 97,100, 91, 57, 93, 0, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, - 95, 97,120,105,115, 0,115,116,114,105,100,101, 95, 97,120,105,115, 0, 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114, -116, 0, 97, 99,116,101,110,100, 0, 97, 99,116,111,102,102,115, 0,115,116,114,105,100,101,108,101,110, 0,115, 99, 97,108,101, - 0, 98,108,101,110,100,111,117,116, 0,115,116,114,105,100,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,111,102,102,115, - 95, 98,111,110,101, 91, 51, 50, 93, 0,104, 97,115,105,110,112,117,116, 0,104, 97,115,111,117,116,112,117,116, 0,100, 97,116, - 97,116,121,112,101, 0,115,111, 99,107,101,116,116,121,112,101, 0, 42,110,101,119, 95,115,111, 99,107, 0,110,115, 0,108,105, -109,105,116, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 0,105,110,116,101,114,110, 0,115,116, 97, 99,107, 95,105,110,100, -101,120, 95,101,120,116, 0,108,111, 99,120, 0,108,111, 99,121, 0,111,119,110, 95,105,110,100,101,120, 0,116,111, 95,105,110, -100,101,120, 0, 42,116,111,115,111, 99,107, 0, 42,108,105,110,107, 0, 42,110,101,119, 95,110,111,100,101, 0,108, 97,115,116, -121, 0,111,117,116,112,117,116,115, 0, 42,115,116,111,114, 97,103,101, 0,109,105,110,105,119,105,100,116,104, 0, 99,117,115, -116,111,109, 49, 0, 99,117,115,116,111,109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117,115,116,111,109, 52, 0,110,101,101, -100, 95,101,120,101, 99, 0,101,120,101, 99, 0, 42,116,104,114,101, 97,100,100, 97,116, 97, 0,116,111,116,114, 0, 98,117,116, -114, 0,112,114,118,114, 0, 42, 98,108,111, 99,107, 0, 42,116,121,112,101,105,110,102,111, 0, 42,102,114,111,109,110,111,100, -101, 0, 42,116,111,110,111,100,101, 0, 42,102,114,111,109,115,111, 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0, - 42,115,116, 97, 99,107, 0, 42,116,104,114,101, 97,100,115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, 97, 99,107,115,105, -122,101, 0, 99,117,114, 95,105,110,100,101,120, 0, 97,108,108,116,121,112,101,115, 0, 42,111,119,110,116,121,112,101, 0,112, - 97,100, 50, 91, 50, 93, 0, 40, 42,112,114,111,103,114,101,115,115, 41, 40, 41, 0, 40, 42,115,116, 97,116,115, 95,100,114, 97, -119, 41, 40, 41, 0, 40, 42,116,101,115,116, 95, 98,114,101, 97,107, 41, 40, 41, 0, 42,116, 98,104, 0, 42,112,114,104, 0, 42, -115,100,104, 0, 99,121, 99,108,105, 99, 0,109,111,118,105,101, 0,115, 97,109,112,108,101,115, 0,109,105,110,115,112,101,101, -100, 0,112,101,114, 99,101,110,116,120, 0,112,101,114, 99,101,110,116,121, 0, 98,111,107,101,104, 0,103, 97,109,109, 97, 0, - 99,117,114,118,101,100, 0,105,109, 97,103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109, 97,103,101, 95,105,110, 95,104, -101,105,103,104,116, 0, 99,101,110,116,101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,115,112,105,110, 0,119,114, 97, -112, 0,115,105,103,109, 97, 95, 99,111,108,111,114, 0,115,105,103,109, 97, 95,115,112, 97, 99,101, 0,104,117,101, 0,115, 97, -116, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116,114,101,110,103,116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, 91, - 52, 93, 0, 97,108,103,111,114,105,116,104,109, 0, 99,104, 97,110,110,101,108, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, - 0, 99,111,108,110, 97,109,101, 91, 51, 50, 93, 0, 98,107,116,121,112,101, 0,114,111,116, 97,116,105,111,110, 0,103, 97,109, - 99,111, 0,110,111, 95,122, 98,117,102, 0,102,115,116,111,112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, - 0, 42,100,105, 99,116, 0, 42,110,111,100,101, 0, 97,110,103,108,101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105, -120, 0,116,104,114,101,115,104,111,108,100, 0,102, 97,100,101, 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105, -116, 0,115,108,111,112,101, 91, 51, 93, 0,112,111,119,101,114, 91, 51, 93, 0,108,105,102,116, 95,108,103,103, 91, 51, 93, 0, -108,105,109, 99,104, 97,110, 0,117,110,115,112,105,108,108, 0,108,105,109,115, 99, 97,108,101, 0,117,115,112,105,108,108,114, - 0,117,115,112,105,108,108,103, 0,117,115,112,105,108,108, 98, 0,115,104,111,114,116,121, 0,109,105,110,116, 97, 98,108,101, - 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95,105,110, 91, 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, 42, - 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42,112,114,101,109,117,108,116, 97, 98,108,101, 0,112,114,101,115,101,116, - 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, 0,119,104,105,116,101, - 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, 93, 0,120, 95,114,101,115,111,108,117,116, -105,111,110, 0,100, 97,116, 97, 95,114, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,103, 91, 50, 53, 54, 93, 0,100, 97,116, 97, - 95, 98, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,108,117,109, 97, 91, 50, 53, 54, 93, 0,115, 97,109,112,108,101, 95,102,117, -108,108, 0,115, 97,109,112,108,101, 95,108,105,110,101,115, 0, 97, 99, 99,117,114, 97, 99,121, 0,119, 97,118,101,102,114,109, - 95,109,111,100,101, 0,119, 97,118,101,102,114,109, 95, 97,108,112,104, 97, 0,119, 97,118,101,102,114,109, 95,121,102, 97, 99, - 0,119, 97,118,101,102,114,109, 95,104,101,105,103,104,116, 0,118,101, 99,115, 99,111,112,101, 95, 97,108,112,104, 97, 0,118, -101, 99,115, 99,111,112,101, 95,104,101,105,103,104,116, 0,109,105,110,109, 97,120, 91, 51, 93, 91, 50, 93, 0,104,105,115,116, - 0, 42,119, 97,118,101,102,111,114,109, 95, 49, 0, 42,119, 97,118,101,102,111,114,109, 95, 50, 0, 42,119, 97,118,101,102,111, -114,109, 95, 51, 0, 42,118,101, 99,115, 99,111,112,101, 0,119, 97,118,101,102,111,114,109, 95,116,111,116, 0,111,102,102,115, -101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,109,116,101,120, 0,106,105,116,116,101,114, 0,115,109,111,111,116,104, 95,115, -116,114,111,107,101, 95,114, 97,100,105,117,115, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,102, 97, 99,116,111, -114, 0,114, 97,116,101, 0,114,103, 98, 91, 51, 93, 0,115, 99,117,108,112,116, 95,116,111,111,108, 0,118,101,114,116,101,120, -112, 97,105,110,116, 95,116,111,111,108, 0,105,109, 97,103,101,112, 97,105,110,116, 95,116,111,111,108, 0, 97, 99,116,105,118, -101, 95,114,110,100, 0, 97, 99,116,105,118,101, 95, 99,108,111,110,101, 0, 97, 99,116,105,118,101, 95,109, 97,115,107, 0, 42, -108, 97,121,101,114,115, 0,116,111,116,108, 97,121,101,114, 0,109, 97,120,108, 97,121,101,114, 0,116,111,116,115,105,122,101, - 0, 42,112,111,111,108, 0, 42,101,120,116,101,114,110, 97,108, 0,118,101,108, 91, 51, 93, 0,114,111,116, 91, 52, 93, 0, 97, -118,101, 91, 51, 93, 0, 42,103,114,111,117,110,100, 0,119, 97,110,100,101,114, 91, 51, 93, 0,110,117,109, 0,112, 97,114,101, -110,116, 0,112, 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0,102,111,102,102,115,101,116, 0,114,116, 91, - 50, 93, 0,112,114,101,118, 95,115,116, 97,116,101, 0, 42,104, 97,105,114, 0, 42, 98,111,105,100, 0,100,105,101,116,105,109, -101, 0,110,117,109, 95,100,109, 99, 97, 99,104,101, 0,104, 97,105,114, 95,105,110,100,101,120, 0, 97,108,105,118,101, 0,115, -112,114,105,110,103, 95,107, 0,114,101,115,116, 95,108,101,110,103,116,104, 0,118,105,115, 99,111,115,105,116,121, 95,111,109, -101,103, 97, 0,118,105,115, 99,111,115,105,116,121, 95, 98,101,116, 97, 0,115,116,105,102,102,110,101,115,115, 95,107, 0,115, -116,105,102,102,110,101,115,115, 95,107,110,101, 97,114, 0,114,101,115,116, 95,100,101,110,115,105,116,121, 0, 98,117,111,121, - 97,110, 99,121, 0, 42, 98,111,105,100,115, 0, 42,102,108,117,105,100, 0,100,105,115,116,114, 0,112,104,121,115,116,121,112, -101, 0, 97,118,101,109,111,100,101, 0,114,101, 97, 99,116,101,118,101,110,116, 0,100,114, 97,119, 0,100,114, 97,119, 95, 97, -115, 0,100,114, 97,119, 95,115,105,122,101, 0, 99,104,105,108,100,116,121,112,101, 0,114,101,110, 95, 97,115, 0,115,117, 98, -102,114, 97,109,101,115, 0,114,101,110, 95,115,116,101,112, 0,104, 97,105,114, 95,115,116,101,112, 0,107,101,121,115, 95,115, -116,101,112, 0, 97,100, 97,112,116, 95, 97,110,103,108,101, 0, 97,100, 97,112,116, 95,112,105,120, 0,114,111,116,102,114,111, -109, 0,105,110,116,101,103,114, 97,116,111,114, 0, 98, 98, 95, 97,108,105,103,110, 0, 98, 98, 95,117,118, 95,115,112,108,105, -116, 0, 98, 98, 95, 97,110,105,109, 0, 98, 98, 95,115,112,108,105,116, 95,111,102,102,115,101,116, 0, 98, 98, 95,116,105,108, -116, 0, 98, 98, 95,114, 97,110,100, 95,116,105,108,116, 0, 98, 98, 95,111,102,102,115,101,116, 91, 50, 93, 0,115,105,109,112, -108,105,102,121, 95,114,101,102,115,105,122,101, 0,115,105,109,112,108,105,102,121, 95,114, 97,116,101, 0,115,105,109,112,108, -105,102,121, 95,116,114, 97,110,115,105,116,105,111,110, 0,115,105,109,112,108,105,102,121, 95,118,105,101,119,112,111,114,116, - 0,116,105,109,101,116,119,101, 97,107, 0,106,105,116,102, 97, 99, 0,101,102,102, 95,104, 97,105,114, 0,103,114,105,100, 95, -114,101,115, 0,112, 97,114,116,102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116, 97,110,112,104, 97,115,101, 0,114,101, 97, 99, -116,102, 97, 99, 0,111, 98, 95,118,101,108, 91, 51, 93, 0, 97,118,101,102, 97, 99, 0,112,104, 97,115,101,102, 97, 99, 0,114, - 97,110,100,114,111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,115,105,122,101, 0, -114,101, 97, 99,116,115,104, 97,112,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97,103,102, 97, 99, 0, 98,114,111,119,110,102, - 97, 99, 0,100, 97,109,112,102, 97, 99, 0,114, 97,110,100,108,101,110,103,116,104, 0, 99,104,105,108,100, 95,110, 98,114, 0, -114,101,110, 95, 99,104,105,108,100, 95,110, 98,114, 0,112, 97,114,101,110,116,115, 0, 99,104,105,108,100,115,105,122,101, 0, - 99,104,105,108,100,114, 97,110,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,100, 0, 99,104,105,108,100,102,108, 97,116, - 0, 99,108,117,109,112,112,111,119, 0,114,111,117,103,104, 49, 0,114,111,117,103,104, 49, 95,115,105,122,101, 0,114,111,117, -103,104, 50, 0,114,111,117,103,104, 50, 95,115,105,122,101, 0,114,111,117,103,104, 50, 95,116,104,114,101,115, 0,114,111,117, -103,104, 95,101,110,100, 0,114,111,117,103,104, 95,101,110,100, 95,115,104, 97,112,101, 0, 99,108,101,110,103,116,104, 0, 99, -108,101,110,103,116,104, 95,116,104,114,101,115, 0, 98,114, 97,110, 99,104, 95,116,104,114,101,115, 0,100,114, 97,119, 95,108, -105,110,101, 91, 50, 93, 0,112, 97,116,104, 95,115,116, 97,114,116, 0,112, 97,116,104, 95,101,110,100, 0,116,114, 97,105,108, - 95, 99,111,117,110,116, 0,107,101,121,101,100, 95,108,111,111,112,115, 0,100,117,112,108,105,119,101,105,103,104,116,115, 0, - 42,101,102,102, 95,103,114,111,117,112, 0, 42,100,117,112, 95,111, 98, 0, 42, 98, 98, 95,111, 98, 0, 42,112,100, 50, 0, 42, -112, 97,114,116, 0, 42,112, 97,114,116,105, 99,108,101,115, 0, 42, 42,112, 97,116,104, 99, 97, 99,104,101, 0, 42, 42, 99,104, -105,108,100, 99, 97, 99,104,101, 0,112, 97,116,104, 99, 97, 99,104,101, 98,117,102,115, 0, 99,104,105,108,100, 99, 97, 99,104, -101, 98,117,102,115, 0, 42, 99,108,109,100, 0, 42,104, 97,105,114, 95,105,110, 95,100,109, 0, 42,104, 97,105,114, 95,111,117, -116, 95,100,109, 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42,108, 97,116,116,105, 99,101, 0,116,114,101,101, 95,102,114, - 97,109,101, 0,116,111,116, 99,104,105,108,100, 0,116,111,116, 99, 97, 99,104,101,100, 0,116,111,116, 99,104,105,108,100, 99, - 97, 99,104,101, 0,116, 97,114,103,101,116, 95,112,115,121,115, 0,116,111,116,107,101,121,101,100, 0, 98, 97,107,101,115,112, - 97, 99,101, 0, 98, 98, 95,117,118,110, 97,109,101, 91, 51, 93, 91, 51, 50, 93, 0,118,103,114,111,117,112, 91, 49, 50, 93, 0, -118,103, 95,110,101,103, 0,114,116, 51, 0, 42,114,101,110,100,101,114,100, 97,116, 97, 0, 42,101,102,102,101, 99,116,111,114, -115, 0, 42,116,114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97,110,100, 0, 67,100,105,115, 0, 67,118,105, 0,115,116,114, -117, 99,116,117,114, 97,108, 0, 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98,101,110,100, 0,109, 97,120, 95,115,116,114, -117, 99,116, 0,109, 97,120, 95,115,104,101, 97,114, 0, 97,118,103, 95,115,112,114,105,110,103, 95,108,101,110, 0,116,105,109, -101,115, 99, 97,108,101, 0,101,102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108,101, 0,101,102,102, 95,119,105,110,100, 95, -115, 99, 97,108,101, 0,115,105,109, 95,116,105,109,101, 95,111,108,100, 0,118,101,108,111, 99,105,116,121, 95,115,109,111,111, -116,104, 0, 99,111,108,108,105,100,101,114, 95,102,114,105, 99,116,105,111,110, 0,115,116,101,112,115, 80,101,114, 70,114, 97, -109,101, 0,112,114,101,114,111,108,108, 0,109, 97,120,115,112,114,105,110,103,108,101,110, 0,115,111,108,118,101,114, 95,116, -121,112,101, 0,118,103,114,111,117,112, 95, 98,101,110,100, 0,118,103,114,111,117,112, 95,109, 97,115,115, 0,118,103,114,111, -117,112, 95,115,116,114,117, 99,116, 0,115,104, 97,112,101,107,101,121, 95,114,101,115,116, 0,112,114,101,115,101,116,115, 0, -114,101,115,101,116, 0, 42, 99,111,108,108,105,115,105,111,110, 95,108,105,115,116, 0,101,112,115,105,108,111,110, 0,115,101, -108,102, 95,102,114,105, 99,116,105,111,110, 0,115,101,108,102,101,112,115,105,108,111,110, 0,115,101,108,102, 95,108,111,111, -112, 95, 99,111,117,110,116, 0,108,111,111,112, 95, 99,111,117,110,116, 0,112,114,101,115,115,117,114,101, 0,116,104,105, 99, -107,110,101,115,115, 0,115,116,114,111,107,101,115, 0,102,114, 97,109,101,110,117,109, 0, 42, 97, 99,116,102,114, 97,109,101, - 0,103,115,116,101,112, 0,105,110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102,101,114, 95,115,105,122,101, 0,115, 98, -117,102,102,101,114, 95,115,102,108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, 42,116,121,112,101,115,116,114, 0, 42,109, -101,115,115, 97,103,101, 0,108,105,115,116, 0,112,114,105,110,116,108,101,118,101,108, 0,115,116,111,114,101,108,101,118,101, -108, 0, 42,114,101,112,111,114,116,116,105,109,101,114, 0,103,114,101,121,115, 99, 97,108,101, 0,119,105,100,116,104,102, 97, - 99, 0, 42,119,105,110,100,114, 97,119, 97, 98,108,101, 0, 42,119,105,110, 97, 99,116,105,118,101, 0,119,105,110,100,111,119, -115, 0,105,110,105,116,105, 97,108,105,122,101,100, 0,102,105,108,101, 95,115, 97,118,101,100, 0,111,112, 95,117,110,100,111, - 95,100,101,112,116,104, 0,111,112,101,114, 97,116,111,114,115, 0,113,117,101,117,101, 0,114,101,112,111,114,116,115, 0,106, -111, 98,115, 0,112, 97,105,110,116, 99,117,114,115,111,114,115, 0,100,114, 97,103,115, 0,107,101,121, 99,111,110,102,105,103, -115, 0, 42,100,101,102, 97,117,108,116, 99,111,110,102, 0,116,105,109,101,114,115, 0, 42, 97,117,116,111,115, 97,118,101,116, -105,109,101,114, 0, 42,103,104,111,115,116,119,105,110, 0,103,114, 97, 98, 99,117,114,115,111,114, 0, 42,110,101,119,115, 99, -114,101,101,110, 0,115, 99,114,101,101,110,110, 97,109,101, 91, 51, 50, 93, 0,112,111,115,120, 0,112,111,115,121, 0,119,105, -110,100,111,119,115,116, 97,116,101, 0,109,111,110,105,116,111,114, 0,108, 97,115,116, 99,117,114,115,111,114, 0, 97,100,100, -109,111,117,115,101,109,111,118,101, 0, 42,101,118,101,110,116,115,116, 97,116,101, 0, 42, 99,117,114,115,119,105,110, 0, 42, -116,119,101, 97,107, 0,100,114, 97,119,109,101,116,104,111,100, 0,100,114, 97,119,102, 97,105,108, 0, 42,100,114, 97,119,100, - 97,116, 97, 0,109,111,100, 97,108,104, 97,110,100,108,101,114,115, 0,115,117, 98,119,105,110,100,111,119,115, 0,103,101,115, -116,117,114,101, 0,105,100,110, 97,109,101, 91, 54, 52, 93, 0,112,114,111,112,118, 97,108,117,101, 0,115,104,105,102,116, 0, - 99,116,114,108, 0, 97,108,116, 0,111,115,107,101,121, 0,107,101,121,109,111,100,105,102,105,101,114, 0,109, 97,112,116,121, -112,101, 0, 42,112,116,114, 0,105,116,101,109,115, 0,115,112, 97, 99,101,105,100, 0,114,101,103,105,111,110,105,100, 0,107, -109,105, 95,105,100, 0, 40, 42,112,111,108,108, 41, 40, 41, 0, 42,109,111,100, 97,108, 95,105,116,101,109,115, 0, 98, 97,115, -101,110, 97,109,101, 91, 54, 52, 93, 0, 97, 99,116,107,101,121,109, 97,112, 0, 42, 99,117,115,116,111,109,100, 97,116, 97, 0, - 42,112,121, 95,105,110,115,116, 97,110, 99,101, 0, 42,114,101,112,111,114,116,115, 0,109, 97, 99,114,111, 0, 42,111,112,109, - 0, 42,101,100, 97,116, 97, 0,105,110,102,108,117,101,110, 99,101, 0, 42, 99,111,101,102,102,105, 99,105,101,110,116,115, 0, - 97,114,114, 97,121,115,105,122,101, 0,112,111,108,121, 95,111,114,100,101,114, 0, 97,109,112,108,105,116,117,100,101, 0,112, -104, 97,115,101, 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, 97,115,101, 95,111,102,102,115,101,116, 0,118, 97,108, -117,101, 95,111,102,102,115,101,116, 0,109,105,100,118, 97,108, 0, 98,101,102,111,114,101, 95,109,111,100,101, 0, 97,102,116, -101,114, 95,109,111,100,101, 0, 98,101,102,111,114,101, 95, 99,121, 99,108,101,115, 0, 97,102,116,101,114, 95, 99,121, 99,108, -101,115, 0,114,101, 99,116, 0,112,104, 97,115,101, 0,109,111,100,105,102,105, 99, 97,116,105,111,110, 0,115,116,101,112, 95, -115,105,122,101, 0, 42,114,110, 97, 95,112, 97,116,104, 0,112, 99,104, 97,110, 95,110, 97,109,101, 91, 51, 50, 93, 0,116,114, - 97,110,115, 67,104, 97,110, 0,105,100,116,121,112,101, 0,116, 97,114,103,101,116,115, 91, 56, 93, 0,110,117,109, 95,116, 97, -114,103,101,116,115, 0,118, 97,114,105, 97, 98,108,101,115, 0,101,120,112,114,101,115,115,105,111,110, 91, 50, 53, 54, 93, 0, - 42,101,120,112,114, 95, 99,111,109,112, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, 0, 97,114,114, 97,121, 95,105,110,100, -101,120, 0, 99,111,108,111,114, 95,109,111,100,101, 0, 99,111,108,111,114, 91, 51, 93, 0,102,114,111,109, 91, 49, 50, 56, 93, - 0,116,111, 91, 49, 50, 56, 93, 0,109, 97,112,112,105,110,103,115, 0,115,116,114,105,112,115, 0, 42,114,101,109, 97,112, 0, -102, 99,117,114,118,101,115, 0,115,116,114,105,112, 95,116,105,109,101, 0, 98,108,101,110,100,109,111,100,101, 0,101,120,116, -101,110,100,109,111,100,101, 0,103,114,111,117,112, 91, 54, 52, 93, 0,103,114,111,117,112,109,111,100,101, 0,107,101,121,105, -110,103,102,108, 97,103, 0,112, 97,116,104,115, 0,116,121,112,101,105,110,102,111, 91, 54, 52, 93, 0, 97, 99,116,105,118,101, - 95,112, 97,116,104, 0, 42,116,109,112, 97, 99,116, 0,110,108, 97, 95,116,114, 97, 99,107,115, 0, 42, 97, 99,116,115,116,114, -105,112, 0,100,114,105,118,101,114,115, 0,111,118,101,114,114,105,100,101,115, 0, 97, 99,116, 95, 98,108,101,110,100,109,111, -100,101, 0, 97, 99,116, 95,101,120,116,101,110,100,109,111,100,101, 0, 97, 99,116, 95,105,110,102,108,117,101,110, 99,101, 0, -114,117,108,101, 0,111,112,116,105,111,110,115, 0,102,101, 97,114, 95,102, 97, 99,116,111,114, 0,115,105,103,110, 97,108, 95, -105,100, 0,108,111,111,107, 95, 97,104,101, 97,100, 0,111,108,111, 99, 91, 51, 93, 0,113,117,101,117,101, 95,115,105,122,101, - 0,119, 97,110,100,101,114, 0,102,108,101,101, 95,100,105,115,116, 97,110, 99,101, 0,104,101, 97,108,116,104, 0,115,116, 97, -116,101, 95,105,100, 0,114,117,108,101,115, 0, 99,111,110,100,105,116,105,111,110,115, 0, 97, 99,116,105,111,110,115, 0,114, -117,108,101,115,101,116, 95,116,121,112,101, 0,114,117,108,101, 95,102,117,122,122,105,110,101,115,115, 0,108, 97,115,116, 95, -115,116, 97,116,101, 95,105,100, 0,108, 97,110,100,105,110,103, 95,115,109,111,111,116,104,110,101,115,115, 0, 98, 97,110,107, -105,110,103, 0, 97,103,103,114,101,115,115,105,111,110, 0, 97,105,114, 95,109,105,110, 95,115,112,101,101,100, 0, 97,105,114, - 95,109, 97,120, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, 99, 0, 97,105,114, 95,109, 97,120, 95, 97, -118,101, 0, 97,105,114, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,106,117,109,112, 95, -115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95, 97, 99, - 99, 0,108, 97,110,100, 95,109, 97,120, 95, 97,118,101, 0,108, 97,110,100, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, - 99,101, 0,108, 97,110,100, 95,115,116,105, 99,107, 95,102,111,114, 99,101, 0,115,116, 97,116,101,115, 0, 42,115,109,100, 0, - 42,102,108,117,105,100, 95,103,114,111,117,112, 0, 42, 99,111,108,108, 95,103,114,111,117,112, 0, 42,119,116, 0, 42,116,101, -120, 95,119,116, 0, 42,116,101,120, 95,115,104, 97,100,111,119, 0, 42,115,104, 97,100,111,119, 0,112, 48, 91, 51, 93, 0,112, - 49, 91, 51, 93, 0,100,120, 0,111,109,101,103, 97, 0,116,101,109,112, 65,109, 98, 0, 98,101,116, 97, 0,114,101,115, 91, 51, - 93, 0, 97,109,112,108,105,102,121, 0,109, 97,120,114,101,115, 0,118,105,101,119,115,101,116,116,105,110,103,115, 0,110,111, -105,115,101, 0,100,105,115,115, 95,112,101,114, 99,101,110,116, 0,100,105,115,115, 95,115,112,101,101,100, 0,114,101,115, 95, -119,116, 91, 51, 93, 0,100,120, 95,119,116, 0,118, 51,100,110,117,109, 0, 99, 97, 99,104,101, 95, 99,111,109,112, 0, 99, 97, - 99,104,101, 95,104,105,103,104, 95, 99,111,109,112, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 91, 50, 93, 0,112,116, - 99, 97, 99,104,101,115, 91, 50, 93, 0,118,101,108,111, 99,105,116,121, 91, 51, 93, 0,118,103,114,112, 95,104,101, 97,116, 95, -115, 99, 97,108,101, 91, 50, 93, 0,118,103,114,111,117,112, 95,102,108,111,119, 0,118,103,114,111,117,112, 95,100,101,110,115, -105,116,121, 0,118,103,114,111,117,112, 95,104,101, 97,116, 0, 42,112,111,105,110,116,115, 95,111,108,100, 0, 42,118,101,108, - 0,109, 97,116, 95,111,108,100, 91, 52, 93, 91, 52, 93, 0, 0, 84, 89, 80, 69,212, 1, 0, 0, 99,104, 97,114, 0,117, 99,104, - 97,114, 0,115,104,111,114,116, 0,117,115,104,111,114,116, 0,105,110,116, 0,108,111,110,103, 0,117,108,111,110,103, 0,102, -108,111, 97,116, 0,100,111,117, 98,108,101, 0,118,111,105,100, 0, 76,105,110,107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76, -105,115,116, 66, 97,115,101, 0,118,101, 99, 50,115, 0,118,101, 99, 50,102, 0,118,101, 99, 50,105, 0,118,101, 99, 50,100, 0, -118,101, 99, 51,105, 0,118,101, 99, 51,102, 0,118,101, 99, 51,100, 0,118,101, 99, 52,105, 0,118,101, 99, 52,102, 0,118,101, - 99, 52,100, 0,114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, 80,114,111,112,101,114,116,121, 68, 97,116, 97, 0, 73, 68, 80, -114,111,112,101,114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70,105,108,101, 68, 97,116, 97, 0, 80,114,101,118, -105,101,119, 73,109, 97,103,101, 0, 73,112,111, 68,114,105,118,101,114, 0, 79, 98,106,101, 99,116, 0, 73,112,111, 67,117,114, -118,101, 0, 66, 80,111,105,110,116, 0, 66,101,122, 84,114,105,112,108,101, 0, 73,112,111, 0, 75,101,121, 66,108,111, 99,107, - 0, 75,101,121, 0, 65,110,105,109, 68, 97,116, 97, 0, 84,101,120,116, 76,105,110,101, 0, 84,101,120,116, 77, 97,114,107,101, -114, 0, 84,101,120,116, 0, 80, 97, 99,107,101,100, 70,105,108,101, 0, 67, 97,109,101,114, 97, 0, 73,109, 97,103,101, 85,115, -101,114, 0, 83, 99,101,110,101, 0, 73,109, 97,103,101, 0, 71, 80, 85, 84,101,120,116,117,114,101, 0, 97,110,105,109, 0, 82, -101,110,100,101,114, 82,101,115,117,108,116, 0, 77, 84,101,120, 0, 84,101,120, 0, 80,108,117,103,105,110, 84,101,120, 0, 67, - 66, 68, 97,116, 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, 69,110,118, 77, 97,112, 0, 73,109, 66,117,102, 0, 80,111,105, -110,116, 68,101,110,115,105,116,121, 0, 86,111,120,101,108, 68, 97,116, 97, 0, 98, 78,111,100,101, 84,114,101,101, 0, 84,101, -120, 77, 97,112,112,105,110,103, 0, 76, 97,109,112, 0, 67,117,114,118,101, 77, 97,112,112,105,110,103, 0, 87, 97,118,101, 0, - 86,111,108,117,109,101, 83,101,116,116,105,110,103,115, 0, 77, 97,116,101,114,105, 97,108, 0, 71,114,111,117,112, 0, 86, 70, -111,110,116, 0, 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108,101,109, 0, 66,111,117,110,100, 66,111,120, 0, - 77,101,116, 97, 66, 97,108,108, 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110,102,111, 0, 84,101,120,116, 66,111,120, 0, 67, -117,114,118,101, 0, 80, 97,116,104, 0, 83,101,108, 66,111,120, 0, 69,100,105,116, 70,111,110,116, 0, 77,101,115,104, 0, 77, - 70, 97, 99,101, 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86,101,114,116, 0, 77, 69,100,103,101, 0, 77, 68, -101,102,111,114,109, 86,101,114,116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99,107,121, 0, 77, 83,101,108,101, 99,116, 0, 69, -100,105,116, 77,101,115,104, 0, 67,117,115,116,111,109, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 0, 80, 97,114,116, -105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 0, 77, 68,101,102,111,114,109, 87,101,105,103,104,116, 0, 77, 84,101,120, - 80,111,108,121, 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111,111,112, 67,111,108, 0, 77, 70,108,111, 97,116, 80,114,111,112, -101,114,116,121, 0, 77, 73,110,116, 80,114,111,112,101,114,116,121, 0, 77, 83,116,114,105,110,103, 80,114,111,112,101,114,116, -121, 0, 79,114,105,103, 83,112, 97, 99,101, 70, 97, 99,101, 0, 77, 68,105,115,112,115, 0, 77,117,108,116,105,114,101,115, 67, -111,108, 0, 77,117,108,116,105,114,101,115, 67,111,108, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 70, 97, 99,101, 0, - 77,117,108,116,105,114,101,115, 69,100,103,101, 0, 77,117,108,116,105,114,101,115, 76,101,118,101,108, 0, 77,111,100,105,102, -105,101,114, 68, 97,116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116, -105, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,114,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, - 97, 0, 66,117,105,108,100, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 97,115,107, 77,111,100,105,102,105,101,114, - 68, 97,116, 97, 0, 65,114,114, 97,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,105,114,114,111,114, 77,111,100, -105,102,105,101,114, 68, 97,116, 97, 0, 69,100,103,101, 83,112,108,105,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, - 66,101,118,101,108, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 77,101,115,104, 77,111,100,105,102,105,101,114, 68, - 97,116, 97, 0, 83,109,111,107,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 68,111,109, 97,105, -110, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 70,108,111,119, 83,101,116,116,105,110,103,115, 0, 83,109,111,107, -101, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 68,105,115,112,108, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97, -116, 97, 0, 85, 86, 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101, 99,105,109, 97,116, -101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, - 0, 67, 97,115,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87, 97,118,101, 77,111,100,105,102,105,101,114, 68, 97, -116, 97, 0, 65,114,109, 97,116,117,114,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 72,111,111,107, 77,111,100,105, -102,105,101,114, 68, 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108, -111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 0, 67,108,111,116,104, 83,105,109, 83,101, -116,116,105,110,103,115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 80,111,105,110,116, 67, 97, - 99,104,101, 0, 67,111,108,108,105,115,105,111,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 86, 72, 84,114,101, -101, 0, 83,117,114,102, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101,114,105,118,101,100, 77,101,115, -104, 0, 66, 86, 72, 84,114,101,101, 70,114,111,109, 77,101,115,104, 0, 66,111,111,108,101, 97,110, 77,111,100,105,102,105,101, -114, 68, 97,116, 97, 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101, 0, 77, 68,101,102, 67,101,108,108, 0, 77,101,115, -104, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116, -101,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 0, 80, 97, -114,116,105, 99,108,101, 73,110,115,116, 97,110, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,120,112,108,111, -100,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 77,111,100,105,102,105,101,114, 68, - 97,116, 97, 0, 70,108,117,105,100,115,105,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105, -109, 83,101,116,116,105,110,103,115, 0, 83,104,114,105,110,107,119,114, 97,112, 77,111,100,105,102,105,101,114, 68, 97,116, 97, - 0, 83,105,109,112,108,101, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,104, 97,112,101, 75, -101,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,108,105,100,105,102,121, 77,111,100,105,102,105,101,114, 68, - 97,116, 97, 0, 83, 99,114,101,119, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 0, 98, 68, -101,102,111,114,109, 71,114,111,117,112, 0, 83, 99,117,108,112,116, 83,101,115,115,105,111,110, 0, 98, 65, 99,116,105,111,110, - 0, 98, 80,111,115,101, 0, 98, 71, 80,100, 97,116, 97, 0, 98, 65,110,105,109, 86,105,122, 83,101,116,116,105,110,103,115, 0, - 98, 77,111,116,105,111,110, 80, 97,116,104, 0, 66,117,108,108,101,116, 83,111,102,116, 66,111,100,121, 0, 80, 97,114,116, 68, -101,102,108,101, 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 79, 98, 72,111,111,107, 0, 68,117,112,108,105, 79, 98,106,101, - 99,116, 0, 82, 78, 71, 0, 69,102,102,101, 99,116,111,114, 87,101,105,103,104,116,115, 0, 80, 84, 67, 97, 99,104,101, 77,101, -109, 0, 80, 84, 67, 97, 99,104,101, 69,100,105,116, 0, 83, 66, 86,101,114,116,101,120, 0, 66,111,100,121, 80,111,105,110,116, - 0, 66,111,100,121, 83,112,114,105,110,103, 0, 83, 66, 83, 99,114, 97,116, 99,104, 0, 87,111,114,108,100, 0, 66, 97,115,101, - 0, 65,118,105, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 68, 97,116, 97, - 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 83,101,116,116,105,110,103,115, 0, 70, 70, 77,112,101,103, 67,111, -100,101, 99, 68, 97,116, 97, 0, 65,117,100,105,111, 68, 97,116, 97, 0, 83, 99,101,110,101, 82,101,110,100,101,114, 76, 97,121, -101,114, 0, 82,101,110,100,101,114, 68, 97,116, 97, 0, 82,101,110,100,101,114, 80,114,111,102,105,108,101, 0, 71, 97,109,101, - 68,111,109,101, 0, 71, 97,109,101, 70,114, 97,109,105,110,103, 0, 71, 97,109,101, 68, 97,116, 97, 0, 84,105,109,101, 77, 97, -114,107,101,114, 0, 80, 97,105,110,116, 0, 66,114,117,115,104, 0, 73,109, 97,103,101, 80, 97,105,110,116, 83,101,116,116,105, -110,103,115, 0, 80, 97,114,116,105, 99,108,101, 66,114,117,115,104, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 69,100, -105,116, 83,101,116,116,105,110,103,115, 0, 84,114, 97,110,115,102,111,114,109, 79,114,105,101,110,116, 97,116,105,111,110, 0, - 83, 99,117,108,112,116, 0, 86, 80, 97,105,110,116, 0, 84,111,111,108, 83,101,116,116,105,110,103,115, 0, 98, 83,116, 97,116, -115, 0, 85,110,105,116, 83,101,116,116,105,110,103,115, 0, 80,104,121,115,105, 99,115, 83,101,116,116,105,110,103,115, 0, 69, -100,105,116,105,110,103, 0, 83, 99,101,110,101, 83,116, 97,116,115, 0, 68, 97,103, 70,111,114,101,115,116, 0, 66, 71,112,105, - 99, 0, 82,101,103,105,111,110, 86,105,101,119, 51, 68, 0, 82,101,110,100,101,114, 73,110,102,111, 0, 82,101,116,111,112,111, - 86,105,101,119, 68, 97,116, 97, 0, 86,105,101,119, 68,101,112,116,104,115, 0, 83,109,111,111,116,104, 86,105,101,119, 83,116, -111,114,101, 0,119,109, 84,105,109,101,114, 0, 86,105,101,119, 51, 68, 0, 83,112, 97, 99,101, 76,105,110,107, 0, 86,105,101, -119, 50, 68, 0, 83,112, 97, 99,101, 73,110,102,111, 0, 98, 83, 99,114,101,101,110, 0, 83,112, 97, 99,101, 73,112,111, 0, 98, - 68,111,112,101, 83,104,101,101,116, 0, 83,112, 97, 99,101, 66,117,116,115, 0, 83,112, 97, 99,101, 83,101,113, 0, 70,105,108, -101, 83,101,108,101, 99,116, 80, 97,114, 97,109,115, 0, 83,112, 97, 99,101, 70,105,108,101, 0, 70,105,108,101, 76,105,115,116, - 0,119,109, 79,112,101,114, 97,116,111,114, 0, 70,105,108,101, 76, 97,121,111,117,116, 0, 83,112, 97, 99,101, 79,111,112,115, - 0, 84,114,101,101, 83,116,111,114,101, 0, 84,114,101,101, 83,116,111,114,101, 69,108,101,109, 0, 83,112, 97, 99,101, 73,109, - 97,103,101, 0, 83, 99,111,112,101,115, 0, 72,105,115,116,111,103,114, 97,109, 0, 83,112, 97, 99,101, 78,108, 97, 0, 83,112, - 97, 99,101, 84,101,120,116, 0, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, - 84,105,109,101, 67, 97, 99,104,101, 0, 83,112, 97, 99,101, 84,105,109,101, 0, 83,112, 97, 99,101, 78,111,100,101, 0, 83,112, - 97, 99,101, 76,111,103,105, 99, 0, 83,112, 97, 99,101, 73,109, 97, 83,101,108, 0, 67,111,110,115,111,108,101, 76,105,110,101, - 0, 83,112, 97, 99,101, 67,111,110,115,111,108,101, 0, 83,112, 97, 99,101, 85,115,101,114, 80,114,101,102, 0,117,105, 70,111, -110,116, 0,117,105, 70,111,110,116, 83,116,121,108,101, 0,117,105, 83,116,121,108,101, 0,117,105, 87,105,100,103,101,116, 67, -111,108,111,114,115, 0,117,105, 87,105,100,103,101,116, 83,116, 97,116,101, 67,111,108,111,114,115, 0, 84,104,101,109,101, 85, - 73, 0, 84,104,101,109,101, 83,112, 97, 99,101, 0, 84,104,101,109,101, 87,105,114,101, 67,111,108,111,114, 0, 98, 84,104,101, -109,101, 0, 98, 65,100,100,111,110, 0, 83,111,108,105,100, 76,105,103,104,116, 0, 85,115,101,114, 68,101,102, 0, 83, 99,114, - 86,101,114,116, 0, 83, 99,114, 69,100,103,101, 0, 80, 97,110,101,108, 0, 80, 97,110,101,108, 84,121,112,101, 0,117,105, 76, - 97,121,111,117,116, 0, 83, 99,114, 65,114,101, 97, 0, 83,112, 97, 99,101, 84,121,112,101, 0, 65, 82,101,103,105,111,110, 0, - 65, 82,101,103,105,111,110, 84,121,112,101, 0, 70,105,108,101, 71,108,111, 98, 97,108, 0, 83,116,114,105,112, 69,108,101,109, - 0, 84, 83,116,114,105,112, 69,108,101,109, 0, 83,116,114,105,112, 67,114,111,112, 0, 83,116,114,105,112, 84,114, 97,110,115, -102,111,114,109, 0, 83,116,114,105,112, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 83,116,114,105,112, 80,114,111,120, -121, 0, 83,116,114,105,112, 0, 80,108,117,103,105,110, 83,101,113, 0, 83,101,113,117,101,110, 99,101, 0, 98, 83,111,117,110, -100, 0, 77,101,116, 97, 83,116, 97, 99,107, 0, 87,105,112,101, 86, 97,114,115, 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, - 97,110,115,102,111,114,109, 86, 97,114,115, 0, 83,111,108,105,100, 67,111,108,111,114, 86, 97,114,115, 0, 83,112,101,101,100, - 67,111,110,116,114,111,108, 86, 97,114,115, 0, 69,102,102,101, 99,116, 0, 66,117,105,108,100, 69,102,102, 0, 80, 97,114,116, - 69,102,102, 0, 80, 97,114,116,105, 99,108,101, 0, 87, 97,118,101, 69,102,102, 0, 98, 80,114,111,112,101,114,116,121, 0, 98, - 78,101, 97,114, 83,101,110,115,111,114, 0, 98, 77,111,117,115,101, 83,101,110,115,111,114, 0, 98, 84,111,117, 99,104, 83,101, -110,115,111,114, 0, 98, 75,101,121, 98,111, 97,114,100, 83,101,110,115,111,114, 0, 98, 80,114,111,112,101,114,116,121, 83,101, -110,115,111,114, 0, 98, 65, 99,116,117, 97,116,111,114, 83,101,110,115,111,114, 0, 98, 68,101,108, 97,121, 83,101,110,115,111, -114, 0, 98, 67,111,108,108,105,115,105,111,110, 83,101,110,115,111,114, 0, 98, 82, 97,100, 97,114, 83,101,110,115,111,114, 0, - 98, 82, 97,110,100,111,109, 83,101,110,115,111,114, 0, 98, 82, 97,121, 83,101,110,115,111,114, 0, 98, 65,114,109, 97,116,117, -114,101, 83,101,110,115,111,114, 0, 98, 77,101,115,115, 97,103,101, 83,101,110,115,111,114, 0, 98, 83,101,110,115,111,114, 0, - 98, 67,111,110,116,114,111,108,108,101,114, 0, 98, 74,111,121,115,116,105, 99,107, 83,101,110,115,111,114, 0, 98, 69,120,112, -114,101,115,115,105,111,110, 67,111,110,116, 0, 98, 80,121,116,104,111,110, 67,111,110,116, 0, 98, 65, 99,116,117, 97,116,111, -114, 0, 98, 65,100,100, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 65, 99,116,105,111,110, 65, 99,116,117, - 97,116,111,114, 0, 98, 83,111,117,110,100, 65, 99,116,117, 97,116,111,114, 0, 83,111,117,110,100, 51, 68, 0, 98, 69,100,105, -116, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83, 99,101,110,101, 65, 99,116,117, 97,116,111,114, 0, 98, - 80,114,111,112,101,114,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, - 0, 98, 73,112,111, 65, 99,116,117, 97,116,111,114, 0, 98, 67, 97,109,101,114, 97, 65, 99,116,117, 97,116,111,114, 0, 98, 67, -111,110,115,116,114, 97,105,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 71,114,111,117,112, 65, 99,116,117, 97,116,111,114, - 0, 98, 82, 97,110,100,111,109, 65, 99,116,117, 97,116,111,114, 0, 98, 77,101,115,115, 97,103,101, 65, 99,116,117, 97,116,111, -114, 0, 98, 71, 97,109,101, 65, 99,116,117, 97,116,111,114, 0, 98, 86,105,115,105, 98,105,108,105,116,121, 65, 99,116,117, 97, -116,111,114, 0, 98, 84,119,111, 68, 70,105,108,116,101,114, 65, 99,116,117, 97,116,111,114, 0, 98, 80, 97,114,101,110,116, 65, - 99,116,117, 97,116,111,114, 0, 98, 83,116, 97,116,101, 65, 99,116,117, 97,116,111,114, 0, 98, 65,114,109, 97,116,117,114,101, - 65, 99,116,117, 97,116,111,114, 0, 70,114,101,101, 67, 97,109,101,114, 97, 0, 83,112, 97, 99,101, 83,111,117,110,100, 0, 71, -114,111,117,112, 79, 98,106,101, 99,116, 0, 66,111,110,101, 0, 98, 65,114,109, 97,116,117,114,101, 0, 98, 77,111,116,105,111, -110, 80, 97,116,104, 86,101,114,116, 0, 98, 80,111,115,101, 67,104, 97,110,110,101,108, 0, 71, 72, 97,115,104, 0, 98, 73, 75, - 80, 97,114, 97,109, 0, 98, 73,116, 97,115, 99, 0, 98, 65, 99,116,105,111,110, 71,114,111,117,112, 0, 83,112, 97, 99,101, 65, - 99,116,105,111,110, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, - 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 84, - 97,114,103,101,116, 0, 98, 80,121,116,104,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 75,105,110,101,109, 97,116, -105, 99, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,112,108,105,110,101, 73, 75, 67,111,110,115,116,114, 97,105,110,116, - 0, 98, 84,114, 97, 99,107, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,101, 76,105,107,101, 67, -111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, - 98, 83,105,122,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83, 97,109,101, 86,111,108,117,109,101, 67, -111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, - 77,105,110, 77, 97,120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 67,111,110,115,116,114, 97,105, -110,116, 0, 98, 76,111, 99,107, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68, 97,109,112, 84,114, 97, - 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111,110,115,116,114, 97,105, -110,116, 0, 98, 83,116,114,101,116, 99,104, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,105,103,105,100, 66,111, -100,121, 74,111,105,110,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, 67,111,110,115,116,114, - 97,105,110,116, 0, 98, 67,104,105,108,100, 79,102, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115,102,111, -114,109, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 80,105,118,111,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76, -111, 99, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 76,105,109,105,116, 67,111,110,115,116, -114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68,105,115,116, - 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,104,114,105,110,107,119,114, 97,112, 67,111,110,115,116, -114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 77,111,100,105,102,105,101,114, 0, 98, 65, 99,116,105,111,110, 83,116,114, -105,112, 0, 98, 78,111,100,101, 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 0, 98, 78,111,100,101, 76, -105,110,107, 0, 98, 78,111,100,101, 0, 98, 78,111,100,101, 80,114,101,118,105,101,119, 0,117,105, 66,108,111, 99,107, 0, 98, - 78,111,100,101, 84,121,112,101, 0, 78,111,100,101, 73,109, 97,103,101, 65,110,105,109, 0, 78,111,100,101, 66,108,117,114, 68, - 97,116, 97, 0, 78,111,100,101, 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 66,105,108, 97,116,101,114, 97,108, 66, -108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 72,117,101, 83, 97,116, 0, 78,111,100,101, 73,109, 97,103,101, 70,105,108,101, - 0, 78,111,100,101, 67,104,114,111,109, 97, 0, 78,111,100,101, 84,119,111, 88, 89,115, 0, 78,111,100,101, 84,119,111, 70,108, -111, 97,116,115, 0, 78,111,100,101, 71,101,111,109,101,116,114,121, 0, 78,111,100,101, 86,101,114,116,101,120, 67,111,108, 0, - 78,111,100,101, 68,101,102,111, 99,117,115, 0, 78,111,100,101, 83, 99,114,105,112,116, 68,105, 99,116, 0, 78,111,100,101, 71, -108, 97,114,101, 0, 78,111,100,101, 84,111,110,101,109, 97,112, 0, 78,111,100,101, 76,101,110,115, 68,105,115,116, 0, 78,111, -100,101, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 78,111,100,101, 67,111,108,111,114,115,112,105,108,108, 0, 84,101, -120, 78,111,100,101, 79,117,116,112,117,116, 0, 67,117,114,118,101, 77, 97,112, 80,111,105,110,116, 0, 67,117,114,118,101, 77, - 97,112, 0, 66,114,117,115,104, 67,108,111,110,101, 0, 67,117,115,116,111,109, 68, 97,116, 97, 76, 97,121,101,114, 0, 67,117, -115,116,111,109, 68, 97,116, 97, 69,120,116,101,114,110, 97,108, 0, 72, 97,105,114, 75,101,121, 0, 80, 97,114,116,105, 99,108, -101, 75,101,121, 0, 66,111,105,100, 80, 97,114,116,105, 99,108,101, 0, 66,111,105,100, 68, 97,116, 97, 0, 67,104,105,108,100, - 80, 97,114,116,105, 99,108,101, 0, 80, 97,114,116,105, 99,108,101, 84, 97,114,103,101,116, 0, 80, 97,114,116,105, 99,108,101, - 68,117,112,108,105, 87,101,105,103,104,116, 0, 80, 97,114,116,105, 99,108,101, 68, 97,116, 97, 0, 83, 80, 72, 70,108,117,105, -100, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 83,101,116,116,105,110,103,115, 0, 66,111,105,100, 83, -101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 75, 68, 84,114,101,101, 0, - 80, 97,114,116,105, 99,108,101, 68,114, 97,119, 68, 97,116, 97, 0, 76,105,110,107, 78,111,100,101, 0, 98, 71, 80, 68,115,112, -111,105,110,116, 0, 98, 71, 80, 68,115,116,114,111,107,101, 0, 98, 71, 80, 68,102,114, 97,109,101, 0, 98, 71, 80, 68,108, 97, -121,101,114, 0, 82,101,112,111,114,116, 0, 82,101,112,111,114,116, 76,105,115,116, 0, 82,101,112,111,114,116, 84,105,109,101, -114, 73,110,102,111, 0,119,109, 87,105,110,100,111,119, 77, 97,110, 97,103,101,114, 0,119,109, 87,105,110,100,111,119, 0,119, -109, 75,101,121, 67,111,110,102,105,103, 0,119,109, 69,118,101,110,116, 0,119,109, 83,117, 98, 87,105,110,100,111,119, 0,119, -109, 71,101,115,116,117,114,101, 0,119,109, 75,101,121, 77, 97,112, 73,116,101,109, 0, 80,111,105,110,116,101,114, 82, 78, 65, - 0,119,109, 75,101,121, 77, 97,112, 0,119,109, 79,112,101,114, 97,116,111,114, 84,121,112,101, 0, 70, 77,111,100,105,102,105, -101,114, 0, 70, 77,111,100, 95, 71,101,110,101,114, 97,116,111,114, 0, 70, 77,111,100, 95, 70,117,110, 99,116,105,111,110, 71, -101,110,101,114, 97,116,111,114, 0, 70, 67, 77, 95, 69,110,118,101,108,111,112,101, 68, 97,116, 97, 0, 70, 77,111,100, 95, 69, -110,118,101,108,111,112,101, 0, 70, 77,111,100, 95, 67,121, 99,108,101,115, 0, 70, 77,111,100, 95, 80,121,116,104,111,110, 0, - 70, 77,111,100, 95, 76,105,109,105,116,115, 0, 70, 77,111,100, 95, 78,111,105,115,101, 0, 70, 77,111,100, 95, 83,116,101,112, -112,101,100, 0, 68,114,105,118,101,114, 84, 97,114,103,101,116, 0, 68,114,105,118,101,114, 86, 97,114, 0, 67,104, 97,110,110, -101,108, 68,114,105,118,101,114, 0, 70, 80,111,105,110,116, 0, 70, 67,117,114,118,101, 0, 65,110,105,109, 77, 97,112, 80, 97, -105,114, 0, 65,110,105,109, 77, 97,112,112,101,114, 0, 78,108, 97, 83,116,114,105,112, 0, 78,108, 97, 84,114, 97, 99,107, 0, - 75, 83, 95, 80, 97,116,104, 0, 75,101,121,105,110,103, 83,101,116, 0, 65,110,105,109, 79,118,101,114,114,105,100,101, 0, 73, -100, 65,100,116, 84,101,109,112,108, 97,116,101, 0, 66,111,105,100, 82,117,108,101, 0, 66,111,105,100, 82,117,108,101, 71,111, - 97,108, 65,118,111,105,100, 0, 66,111,105,100, 82,117,108,101, 65,118,111,105,100, 67,111,108,108,105,115,105,111,110, 0, 66, -111,105,100, 82,117,108,101, 70,111,108,108,111,119, 76,101, 97,100,101,114, 0, 66,111,105,100, 82,117,108,101, 65,118,101,114, - 97,103,101, 83,112,101,101,100, 0, 66,111,105,100, 82,117,108,101, 70,105,103,104,116, 0, 66,111,105,100, 83,116, 97,116,101, - 0, 70, 76, 85, 73, 68, 95, 51, 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 0, 0, 0, 84, 76, 69, 78, 1, 0, 1, 0, - 2, 0, 2, 0, 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 0, 0, 16, 0, 24, 0, 16, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, - 12, 0, 24, 0, 16, 0, 16, 0, 32, 0, 16, 0, 16, 0, 32, 0, 96, 0, 72, 0, 72, 2, 0, 0, 40, 0,144, 0,208, 4,112, 0, - 36, 0, 56, 0,112, 0,128, 0,168, 0, 96, 0, 40, 0, 48, 0,176, 0, 16, 0,136, 0, 40, 0, 8, 6,240, 1, 0, 0, 0, 0, - 0, 0, 16, 1,112, 1,120, 1, 24, 0, 8, 3,200, 0, 0, 0, 88, 0, 40, 1,240, 0,136, 0,216, 1, 64, 1, 80, 0, 88, 0, - 32, 3,104, 0, 88, 1, 0, 0,128, 0,104, 0,208, 0, 80, 0, 8, 0, 16, 0,216, 1, 0, 0, 0, 0, 0, 0,176, 1, 20, 0, - 48, 0, 64, 0, 24, 0, 12, 0, 16, 0, 4, 0, 8, 0, 8, 0, 0, 0, 40, 0,128, 0, 48, 0, 8, 0, 16, 0, 8, 0, 8, 0, - 4, 0, 4, 0, 0, 1, 32, 0, 16, 0, 16, 0, 64, 0, 24, 0, 12, 0, 64, 0, 80, 0,104, 0,120, 0,128, 0, 96, 0,128, 0, -160, 0, 96, 0, 88, 0,136, 0, 88, 0,112, 0, 0, 1, 56, 0,192, 0,184, 0,232, 0, 88, 0,120, 0,136, 0,224, 0,136, 0, -248, 0, 80, 0,136, 0, 0, 0,152, 0, 40, 0, 8, 2,160, 0, 0, 0,120, 0, 0, 0, 0, 0, 96, 0, 8, 0, 8, 0, 48, 1, -112, 0,240, 1,104, 0, 96, 0, 88, 0, 96, 0,200, 1,144, 0,136, 0, 80, 0,136, 0,112, 0, 8, 1, 48, 0, 0, 0,144, 0, -176, 0,104, 0, 48, 0, 24, 0,120, 0,152, 0,120, 1,224, 0,192, 0, 0, 0, 72, 0,168, 0, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0,232, 1, 40, 0,184, 0,152, 0, 64, 0, 64, 0, 24, 0, 88, 0, 0, 4, 64, 0, 24, 0, 16, 0,104, 0, 96, 0, 32, 0, -168, 1, 56, 0, 16, 0,168, 0, 88, 0, 56, 0, 64, 0,184, 1, 32, 0, 8, 0, 24, 0, 80, 2, 0, 0, 0, 0, 88, 0,104, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 1, 56, 0,144, 0, 72, 0,208, 0,240, 0, 40, 0,248, 0,240, 0,200, 1,104, 0, - 0, 0,168, 0, 0, 0, 32, 1, 16, 0, 16, 0, 72, 33,128, 16, 24, 16,216, 0,144, 2,120, 2, 64, 0, 48, 0,216, 0, 32, 1, - 72, 0,200, 2, 40, 0,144, 1,104, 0, 24, 1, 32, 0,232, 0, 32, 0, 32, 0,112, 2,104, 1, 16, 0, 56, 29, 80, 0, 56, 0, - 8, 13, 32, 0, 40, 0, 88, 1, 0, 0, 0, 0,160, 0, 0, 0, 40, 1, 0, 0, 24, 1, 80, 0, 48, 0, 16, 0, 8, 0, 44, 0, - 0, 1, 32, 1,200, 1, 24, 1,136, 1, 32, 0, 12, 0, 24, 0, 52, 0, 16, 0, 24, 0, 24, 0, 32, 0, 72, 1, 0, 0, 64, 0, - 64, 0, 48, 0, 8, 0, 48, 0, 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 72, 0, 72, 0, 96, 0,104, 0, - 60, 0,128, 0, 80, 0, 80, 0, 16, 0, 96, 0, 72, 0, 32, 0, 88, 0, 24, 0, 80, 0,112, 0, 84, 0, 32, 0, 96, 0, 56, 0, - 56, 0,112, 0,140, 0, 4, 0, 24, 0, 16, 0, 8, 0, 88, 0, 40, 0,216, 0, 40, 0, 40, 1,200, 0, 16, 0, 16, 2, 0, 0, - 4, 0, 40, 0,120, 0, 0, 1, 88, 0, 56, 0, 88, 0,128, 0, 80, 0,120, 0, 24, 0, 56, 0, 48, 0, 48, 0, 48, 0, 8, 0, - 40, 0, 72, 0, 72, 0, 48, 0, 48, 0, 24, 0, 56, 0,104, 0, 16, 0,112, 0, 96, 0, 56, 0, 28, 0, 28, 0, 28, 0, 56, 0, - 24, 0, 72, 0,168, 0, 40, 0,144, 0, 56, 0,232, 0, 0, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, - 44, 0, 8, 0, 8, 0, 64, 0, 32, 0, 24, 0, 16, 0, 24, 0, 32, 0, 8, 0, 84, 0, 20, 0, 32, 0, 12, 0, 56, 0, 24, 0, - 72, 0,240, 0, 24, 0, 56, 0, 56, 0, 20, 0, 64, 0, 40, 0, 32, 0,192, 0, 36, 0, 16, 2,104, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 32, 0, 40, 0,192, 0, 40, 0, 40, 0, 20, 0, 24, 1,224, 0,168, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, -120, 0, 0, 0,104, 0, 24, 0, 24, 0, 16, 0, 24, 0, 8, 0, 16, 0, 24, 0, 20, 0, 20, 0, 56, 0, 24, 2, 40, 1, 16, 0, -104, 0, 0, 1, 40, 0,200, 0,104, 0,112, 0,168, 0, 32, 0, 80, 0, 56, 0, 80, 0, 64, 0,104, 0, 72, 0, 64, 0,128, 0, - 0, 0, 0, 0, 83, 84, 82, 67,153, 1, 0, 0, 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0, - 11, 0, 1, 0, 9, 0, 2, 0, 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4, 0, 13, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0, - 14, 0, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0, 15, 0, 2, 0, 4, 0, 5, 0, 4, 0, 6, 0, 16, 0, 2, 0, 8, 0, 5, 0, - 8, 0, 6, 0, 17, 0, 3, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 18, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0, - 7, 0, 7, 0, 19, 0, 3, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 20, 0, 4, 0, 4, 0, 5, 0, 4, 0, 6, 0, - 4, 0, 7, 0, 4, 0, 8, 0, 21, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 8, 0, 22, 0, 4, 0, - 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 8, 0, 8, 0, 23, 0, 4, 0, 4, 0, 9, 0, 4, 0, 10, 0, 4, 0, 11, 0, - 4, 0, 12, 0, 24, 0, 4, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 25, 0, 4, 0, 9, 0, 13, 0, - 12, 0, 14, 0, 4, 0, 15, 0, 4, 0, 16, 0, 26, 0, 10, 0, 26, 0, 0, 0, 26, 0, 1, 0, 0, 0, 17, 0, 0, 0, 18, 0, - 2, 0, 19, 0, 0, 0, 20, 0, 4, 0, 21, 0, 25, 0, 22, 0, 4, 0, 23, 0, 4, 0, 24, 0, 27, 0, 9, 0, 9, 0, 0, 0, - 9, 0, 1, 0, 27, 0, 25, 0, 28, 0, 26, 0, 0, 0, 27, 0, 2, 0, 28, 0, 2, 0, 19, 0, 4, 0, 29, 0, 26, 0, 30, 0, - 28, 0, 8, 0, 27, 0, 31, 0, 27, 0, 32, 0, 29, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 4, 0, 36, 0, 4, 0, 37, 0, - 28, 0, 38, 0, 30, 0, 6, 0, 4, 0, 39, 0, 4, 0, 40, 0, 2, 0, 41, 0, 2, 0, 42, 0, 2, 0, 43, 0, 4, 0, 44, 0, - 31, 0, 6, 0, 32, 0, 45, 0, 2, 0, 46, 0, 2, 0, 47, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 48, 0, 33, 0, 21, 0, - 33, 0, 0, 0, 33, 0, 1, 0, 34, 0, 49, 0, 35, 0, 50, 0, 24, 0, 51, 0, 24, 0, 52, 0, 2, 0, 46, 0, 2, 0, 47, 0, - 2, 0, 53, 0, 2, 0, 54, 0, 2, 0, 55, 0, 2, 0, 56, 0, 2, 0, 19, 0, 2, 0, 57, 0, 7, 0, 11, 0, 7, 0, 12, 0, - 4, 0, 58, 0, 7, 0, 59, 0, 7, 0, 60, 0, 7, 0, 61, 0, 31, 0, 62, 0, 36, 0, 7, 0, 27, 0, 31, 0, 12, 0, 63, 0, - 24, 0, 64, 0, 2, 0, 46, 0, 2, 0, 65, 0, 2, 0, 66, 0, 2, 0, 37, 0, 37, 0, 16, 0, 37, 0, 0, 0, 37, 0, 1, 0, - 7, 0, 67, 0, 7, 0, 61, 0, 2, 0, 17, 0, 2, 0, 47, 0, 2, 0, 68, 0, 2, 0, 19, 0, 4, 0, 69, 0, 4, 0, 70, 0, - 9, 0, 2, 0, 7, 0, 71, 0, 0, 0, 20, 0, 0, 0, 72, 0, 7, 0, 73, 0, 7, 0, 74, 0, 38, 0, 13, 0, 27, 0, 31, 0, - 39, 0, 75, 0, 37, 0, 76, 0, 0, 0, 77, 0, 4, 0, 78, 0, 7, 0, 61, 0, 12, 0, 79, 0, 36, 0, 80, 0, 27, 0, 81, 0, - 2, 0, 17, 0, 2, 0, 82, 0, 2, 0, 83, 0, 2, 0, 19, 0, 40, 0, 6, 0, 40, 0, 0, 0, 40, 0, 1, 0, 0, 0, 84, 0, - 0, 0, 85, 0, 4, 0, 23, 0, 4, 0, 86, 0, 41, 0, 10, 0, 41, 0, 0, 0, 41, 0, 1, 0, 4, 0, 87, 0, 4, 0, 88, 0, - 4, 0, 89, 0, 4, 0, 43, 0, 4, 0, 14, 0, 4, 0, 90, 0, 0, 0, 91, 0, 0, 0, 92, 0, 42, 0, 15, 0, 27, 0, 31, 0, - 0, 0, 93, 0, 4, 0, 90, 0, 4, 0, 94, 0, 12, 0, 95, 0, 40, 0, 96, 0, 40, 0, 97, 0, 4, 0, 98, 0, 4, 0, 99, 0, - 12, 0,100, 0, 0, 0,101, 0, 4, 0,102, 0, 4, 0,103, 0, 9, 0,104, 0, 8, 0,105, 0, 43, 0, 3, 0, 4, 0,106, 0, - 4, 0,107, 0, 9, 0, 2, 0, 44, 0, 15, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,108, 0, - 7, 0,109, 0, 7, 0,110, 0, 7, 0,111, 0, 7, 0,112, 0, 7, 0,113, 0, 7, 0,114, 0, 7, 0,115, 0, 7, 0,116, 0, - 36, 0, 80, 0, 32, 0,117, 0, 45, 0, 13, 0, 4, 0,118, 0, 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, 2, 0,122, 0, - 2, 0,123, 0, 2, 0, 19, 0, 2, 0,124, 0, 2, 0,125, 0, 2, 0,126, 0, 2, 0,127, 0, 2, 0,128, 0, 46, 0,129, 0, - 47, 0, 32, 0, 27, 0, 31, 0, 0, 0, 34, 0, 12, 0,130, 0, 48, 0,131, 0, 49, 0,132, 0, 50, 0,133, 0, 50, 0,134, 0, - 2, 0,135, 0, 2, 0,136, 0, 2, 0,124, 0, 2, 0, 19, 0, 2, 0,137, 0, 2, 0, 17, 0, 4, 0,138, 0, 2, 0,139, 0, - 2, 0,140, 0, 2, 0,141, 0, 2, 0,142, 0, 2, 0,143, 0, 2, 0,144, 0, 4, 0,145, 0, 4, 0,146, 0, 43, 0,147, 0, - 30, 0,148, 0, 7, 0,149, 0, 4, 0,150, 0, 2, 0,151, 0, 2, 0,152, 0, 2, 0,153, 0, 2, 0,154, 0, 7, 0,155, 0, - 7, 0,156, 0, 51, 0, 63, 0, 2, 0,157, 0, 2, 0,158, 0, 2, 0,159, 0, 2, 0,160, 0, 32, 0,161, 0, 52, 0,162, 0, - 0, 0,163, 0, 0, 0,164, 0, 0, 0,165, 0, 0, 0,166, 0, 0, 0,167, 0, 7, 0,168, 0, 7, 0,169, 0, 7, 0,170, 0, - 2, 0,171, 0, 2, 0,172, 0, 2, 0,173, 0, 2, 0,174, 0, 2, 0,175, 0, 2, 0,176, 0, 0, 0,177, 0, 0, 0,178, 0, - 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0, 57, 0, 7, 0,184, 0, 7, 0,185, 0, - 7, 0,186, 0, 7, 0,187, 0, 7, 0,188, 0, 7, 0,189, 0, 7, 0,190, 0, 7, 0,191, 0, 7, 0,192, 0, 7, 0,193, 0, - 7, 0,194, 0, 7, 0,195, 0, 7, 0,196, 0, 7, 0,197, 0, 7, 0,198, 0, 7, 0,199, 0, 7, 0,200, 0, 7, 0,201, 0, - 7, 0,202, 0, 7, 0,203, 0, 7, 0,204, 0, 7, 0,205, 0, 7, 0,206, 0, 7, 0,207, 0, 7, 0,208, 0, 7, 0,209, 0, - 7, 0,210, 0, 7, 0,211, 0, 7, 0,212, 0, 7, 0,213, 0, 7, 0,214, 0, 7, 0,215, 0, 7, 0,216, 0, 7, 0,217, 0, - 7, 0,218, 0, 53, 0, 15, 0, 0, 0,219, 0, 9, 0,220, 0, 0, 0,221, 0, 0, 0,222, 0, 4, 0,223, 0, 4, 0,224, 0, - 9, 0,225, 0, 7, 0,226, 0, 7, 0,227, 0, 7, 0,228, 0, 4, 0,229, 0, 9, 0,230, 0, 9, 0,231, 0, 4, 0,232, 0, - 4, 0, 37, 0, 54, 0, 6, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,233, 0, 7, 0, 67, 0, 4, 0, 64, 0, - 55, 0, 5, 0, 2, 0, 19, 0, 2, 0, 36, 0, 2, 0, 64, 0, 2, 0,234, 0, 54, 0,228, 0, 56, 0, 17, 0, 32, 0,161, 0, - 47, 0,235, 0, 57, 0,236, 0, 7, 0,237, 0, 7, 0,238, 0, 2, 0, 17, 0, 2, 0,239, 0, 7, 0,109, 0, 7, 0,110, 0, - 7, 0,240, 0, 4, 0,241, 0, 2, 0,242, 0, 2, 0,243, 0, 4, 0,124, 0, 4, 0,138, 0, 2, 0,244, 0, 2, 0,245, 0, - 58, 0, 22, 0, 2, 0, 19, 0, 2, 0,246, 0, 7, 0,247, 0, 7, 0,248, 0, 2, 0,137, 0, 2, 0,249, 0, 4, 0,250, 0, - 4, 0,251, 0, 32, 0,161, 0, 4, 0,252, 0, 2, 0,253, 0, 2, 0,254, 0, 9, 0,255, 0, 7, 0, 0, 1, 7, 0, 1, 1, - 2, 0, 2, 1, 2, 0, 3, 1, 2, 0, 4, 1, 2, 0, 5, 1, 7, 0, 6, 1, 7, 0, 7, 1, 55, 0, 8, 1, 59, 0, 13, 0, - 4, 0, 9, 1, 4, 0, 10, 1, 2, 0, 11, 1, 2, 0, 19, 0, 2, 0, 12, 1, 2, 0, 13, 1, 32, 0,161, 0, 7, 0, 14, 1, - 4, 0, 15, 1, 0, 0, 16, 1, 7, 0, 17, 1, 4, 0, 18, 1, 4, 0,124, 0, 52, 0, 63, 0, 27, 0, 31, 0, 39, 0, 75, 0, - 7, 0, 19, 1, 7, 0, 20, 1, 7, 0, 21, 1, 7, 0, 22, 1, 7, 0, 23, 1, 7, 0, 24, 1, 7, 0, 25, 1, 7, 0, 26, 1, - 7, 0, 27, 1, 7, 0, 70, 0, 7, 0, 28, 1, 7, 0, 29, 1, 7, 0, 30, 1, 7, 0, 31, 1, 7, 0, 32, 1, 7, 0, 33, 1, - 7, 0, 34, 1, 7, 0, 35, 1, 7, 0, 36, 1, 7, 0, 37, 1, 7, 0, 38, 1, 7, 0, 39, 1, 2, 0, 40, 1, 2, 0, 41, 1, - 2, 0, 42, 1, 2, 0, 43, 1, 2, 0, 44, 1, 2, 0, 45, 1, 2, 0, 46, 1, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,239, 0, - 7, 0, 47, 1, 7, 0, 48, 1, 7, 0, 49, 1, 7, 0, 50, 1, 4, 0, 51, 1, 4, 0, 52, 1, 2, 0, 53, 1, 2, 0, 54, 1, - 2, 0, 12, 1, 2, 0,122, 0, 4, 0, 23, 0, 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, 7, 0, 55, 1, 7, 0, 56, 1, - 7, 0, 43, 0, 45, 0, 57, 1, 60, 0, 58, 1, 36, 0, 80, 0, 47, 0,235, 0, 53, 0, 59, 1, 55, 0, 8, 1, 56, 0, 60, 1, - 30, 0,148, 0, 58, 0, 61, 1, 59, 0, 62, 1, 0, 0, 63, 1, 0, 0,178, 0, 61, 0, 8, 0, 7, 0, 64, 1, 7, 0, 65, 1, - 7, 0,169, 0, 4, 0, 19, 0, 7, 0, 66, 1, 7, 0, 67, 1, 7, 0, 68, 1, 32, 0, 45, 0, 62, 0, 72, 0, 27, 0, 31, 0, - 39, 0, 75, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 69, 1, 2, 0,172, 0, 2, 0, 70, 1, 7, 0,179, 0, 7, 0,180, 0, - 7, 0,181, 0, 7, 0,182, 0, 7, 0, 71, 1, 7, 0, 72, 1, 7, 0, 73, 1, 7, 0, 74, 1, 7, 0, 75, 1, 7, 0, 76, 1, - 7, 0, 77, 1, 7, 0, 78, 1, 7, 0, 79, 1, 7, 0, 80, 1, 7, 0, 81, 1, 63, 0, 82, 1, 2, 0,246, 0, 2, 0, 70, 0, - 7, 0,109, 0, 7, 0,110, 0, 7, 0, 83, 1, 7, 0, 84, 1, 7, 0, 85, 1, 7, 0, 86, 1, 7, 0, 87, 1, 2, 0, 88, 1, - 2, 0, 89, 1, 2, 0, 90, 1, 2, 0, 91, 1, 0, 0, 92, 1, 0, 0, 93, 1, 2, 0, 94, 1, 2, 0, 95, 1, 2, 0, 96, 1, - 2, 0, 97, 1, 2, 0, 98, 1, 7, 0, 99, 1, 7, 0,100, 1, 7, 0,101, 1, 7, 0,102, 1, 2, 0,103, 1, 2, 0, 43, 0, - 2, 0,104, 1, 2, 0,105, 1, 2, 0,106, 1, 2, 0,107, 1, 7, 0,108, 1, 7, 0,109, 1, 7, 0,110, 1, 7, 0,111, 1, - 7, 0,112, 1, 7, 0,113, 1, 7, 0,114, 1, 7, 0,115, 1, 7, 0,116, 1, 7, 0,117, 1, 7, 0,118, 1, 7, 0,119, 1, - 2, 0,120, 1, 0, 0,121, 1, 36, 0, 80, 0, 51, 0,122, 1, 2, 0,123, 1, 0, 0,124, 1, 30, 0,148, 0, 64, 0, 2, 0, - 27, 0, 31, 0, 36, 0, 80, 0, 65, 0, 18, 0, 7, 0,125, 1, 7, 0,126, 1, 7, 0,127, 1, 7, 0,128, 1, 7, 0,129, 1, - 7, 0,130, 1, 7, 0,131, 1, 7, 0,132, 1, 7, 0,133, 1, 7, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 2, 0,137, 1, - 2, 0,138, 1, 7, 0,139, 1, 7, 0,140, 1, 7, 0,141, 1, 7, 0,142, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0, - 2, 0,143, 1, 2, 0, 19, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,144, 1, 7, 0,145, 1, 7, 0,146, 1, - 7, 0,147, 1, 7, 0,148, 1, 7, 0,149, 1, 7, 0,150, 1, 7, 0,151, 1, 7, 0,152, 1, 7, 0,153, 1, 7, 0,154, 1, - 7, 0,155, 1, 7, 0,156, 1, 7, 0,157, 1, 7, 0,158, 1, 7, 0,159, 1, 7, 0,160, 1, 7, 0,161, 1, 7, 0,162, 1, - 7, 0,163, 1, 65, 0,164, 1, 7, 0,165, 1, 7, 0,166, 1, 7, 0,167, 1, 7, 0,168, 1, 7, 0,169, 1, 7, 0,170, 1, - 7, 0,171, 1, 2, 0,172, 1, 2, 0,173, 1, 2, 0,174, 1, 0, 0,175, 1, 0, 0,176, 1, 7, 0,177, 1, 7, 0,178, 1, - 2, 0,179, 1, 2, 0,180, 1, 7, 0,181, 1, 7, 0,182, 1, 7, 0,183, 1, 7, 0,184, 1, 2, 0,185, 1, 2, 0,186, 1, - 4, 0, 69, 1, 4, 0,187, 1, 2, 0,188, 1, 2, 0,189, 1, 2, 0,190, 1, 2, 0,191, 1, 7, 0,192, 1, 7, 0,193, 1, - 7, 0,194, 1, 7, 0,195, 1, 7, 0,196, 1, 7, 0,197, 1, 7, 0,198, 1, 7, 0,199, 1, 7, 0,200, 1, 7, 0,201, 1, - 0, 0,202, 1, 7, 0,203, 1, 7, 0,204, 1, 7, 0,205, 1, 4, 0,206, 1, 0, 0,207, 1, 0, 0,104, 1, 0, 0,208, 1, - 0, 0, 63, 1, 2, 0,209, 1, 2, 0,210, 1, 2, 0,123, 1, 2, 0,211, 1, 2, 0,212, 1, 2, 0,213, 1, 7, 0,214, 1, - 7, 0,215, 1, 7, 0,216, 1, 7, 0,217, 1, 7, 0,218, 1, 2, 0,157, 0, 2, 0,158, 0, 55, 0,219, 1, 55, 0,220, 1, - 0, 0,221, 1, 0, 0,222, 1, 0, 0,223, 1, 0, 0,224, 1, 2, 0,225, 1, 2, 0,226, 1, 7, 0,227, 1, 7, 0,228, 1, - 51, 0,122, 1, 60, 0, 58, 1, 36, 0, 80, 0, 67, 0,229, 1, 30, 0,148, 0, 7, 0,230, 1, 7, 0,231, 1, 7, 0,232, 1, - 7, 0,233, 1, 7, 0,234, 1, 2, 0,235, 1, 2, 0, 70, 0, 7, 0,236, 1, 7, 0,237, 1, 7, 0,238, 1, 7, 0,239, 1, - 7, 0,240, 1, 7, 0,241, 1, 7, 0,242, 1, 7, 0,243, 1, 7, 0,244, 1, 2, 0,245, 1, 2, 0,246, 1, 4, 0,247, 1, - 4, 0,248, 1, 12, 0,249, 1, 68, 0, 4, 0, 27, 0, 31, 0, 0, 0,250, 1, 69, 0, 2, 0, 43, 0,147, 0, 70, 0, 26, 0, - 70, 0, 0, 0, 70, 0, 1, 0, 71, 0,251, 1, 4, 0,252, 1, 4, 0,253, 1, 4, 0,254, 1, 4, 0,255, 1, 4, 0, 0, 2, - 4, 0, 1, 2, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 2, 2, 2, 0, 3, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, - 7, 0, 4, 2, 7, 0, 5, 2, 7, 0, 6, 2, 7, 0, 7, 2, 7, 0, 8, 2, 7, 0, 9, 2, 7, 0, 10, 2, 7, 0, 23, 0, - 7, 0, 11, 2, 7, 0, 12, 2, 72, 0, 20, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0,251, 1, 12, 0, 13, 2, 12, 0, 14, 2, - 12, 0, 15, 2, 36, 0, 80, 0, 66, 0, 16, 2, 0, 0, 19, 0, 0, 0, 17, 2, 2, 0, 18, 2, 2, 0,171, 0, 2, 0, 37, 0, - 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 7, 0, 19, 2, 7, 0, 20, 2, 7, 0, 21, 2, 70, 0, 22, 2, 35, 0, 11, 0, - 7, 0, 23, 2, 7, 0, 24, 2, 7, 0, 25, 2, 7, 0,248, 0, 2, 0, 55, 0, 0, 0, 26, 2, 0, 0, 27, 2, 0, 0, 28, 2, - 0, 0, 29, 2, 0, 0, 30, 2, 0, 0, 31, 2, 34, 0, 7, 0, 7, 0, 32, 2, 7, 0, 24, 2, 7, 0, 25, 2, 2, 0, 28, 2, - 2, 0, 31, 2, 7, 0,248, 0, 7, 0, 37, 0, 73, 0, 21, 0, 73, 0, 0, 0, 73, 0, 1, 0, 2, 0, 17, 0, 2, 0, 33, 2, - 2, 0, 31, 2, 2, 0, 19, 0, 2, 0, 34, 2, 2, 0, 35, 2, 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 38, 2, 2, 0, 39, 2, - 2, 0, 40, 2, 2, 0, 41, 2, 7, 0, 42, 2, 7, 0, 43, 2, 34, 0, 49, 0, 35, 0, 50, 0, 2, 0, 44, 2, 2, 0, 45, 2, - 4, 0, 46, 2, 74, 0, 5, 0, 2, 0, 47, 2, 2, 0, 33, 2, 0, 0, 19, 0, 0, 0, 37, 0, 2, 0, 70, 0, 75, 0, 4, 0, - 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 8, 0, 7, 0, 48, 2, 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0,251, 1, - 12, 0, 49, 2, 12, 0, 14, 2, 12, 0, 50, 2, 32, 0, 51, 2, 32, 0, 52, 2, 32, 0, 53, 2, 36, 0, 80, 0, 77, 0, 54, 2, - 38, 0, 55, 2, 66, 0, 16, 2, 12, 0, 56, 2, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 2, 0,171, 0, 2, 0, 43, 0, - 2, 0, 57, 2, 2, 0, 58, 2, 2, 0, 59, 2, 7, 0, 60, 2, 7, 0, 70, 0, 2, 0, 61, 2, 2, 0, 18, 2, 2, 0, 19, 0, - 2, 0, 62, 2, 7, 0, 63, 2, 7, 0, 64, 2, 7, 0, 65, 2, 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 66, 2, 2, 0, 67, 2, - 4, 0, 68, 2, 9, 0, 69, 2, 2, 0, 23, 0, 2, 0, 95, 0, 2, 0, 67, 0, 2, 0, 70, 2, 7, 0, 71, 2, 7, 0, 72, 2, - 7, 0, 73, 2, 7, 0, 74, 2, 7, 0, 75, 2, 7, 0, 76, 2, 7, 0, 77, 2, 7, 0, 78, 2, 7, 0, 79, 2, 7, 0, 80, 2, - 0, 0, 81, 2, 78, 0, 82, 2, 79, 0, 83, 2, 0, 0, 84, 2, 68, 0, 85, 2, 68, 0, 86, 2, 68, 0, 87, 2, 68, 0, 88, 2, - 4, 0, 89, 2, 7, 0, 90, 2, 4, 0, 91, 2, 4, 0, 92, 2, 75, 0, 93, 2, 4, 0, 94, 2, 4, 0, 95, 2, 74, 0, 96, 2, - 74, 0, 97, 2, 80, 0, 41, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0,251, 1, 12, 0, 98, 2, 36, 0, 80, 0, 38, 0, 55, 2, - 66, 0, 16, 2, 81, 0, 99, 2, 82, 0,100, 2, 83, 0,101, 2, 84, 0,102, 2, 85, 0,103, 2, 86, 0,104, 2, 87, 0,105, 2, - 88, 0,106, 2, 80, 0,107, 2, 89, 0,108, 2, 90, 0,109, 2, 91, 0,110, 2, 91, 0,111, 2, 91, 0,112, 2, 4, 0, 54, 0, - 4, 0,113, 2, 4, 0,114, 2, 4, 0,115, 2, 4, 0,116, 2, 2, 0,171, 0, 2, 0,117, 2, 7, 0, 64, 1, 7, 0,169, 0, - 7, 0, 65, 1, 7, 0,118, 2, 4, 0, 57, 2, 2, 0,119, 2, 2, 0, 19, 0, 2, 0,120, 2, 2, 0,121, 2, 2, 0, 18, 2, - 2, 0,122, 2, 92, 0,123, 2, 93, 0,124, 2, 83, 0, 8, 0, 9, 0,125, 2, 7, 0,126, 2, 4, 0,127, 2, 0, 0, 19, 0, - 0, 0,128, 2, 2, 0, 69, 1, 2, 0,129, 2, 2, 0,130, 2, 81, 0, 7, 0, 4, 0,131, 2, 4, 0,132, 2, 4, 0,133, 2, - 4, 0,134, 2, 2, 0, 33, 2, 0, 0,135, 2, 0, 0, 19, 0, 85, 0, 5, 0, 4, 0,131, 2, 4, 0,132, 2, 0, 0,136, 2, - 0, 0,137, 2, 2, 0, 19, 0, 94, 0, 2, 0, 4, 0,138, 2, 7, 0, 25, 2, 86, 0, 3, 0, 94, 0,139, 2, 4, 0,140, 2, - 4, 0, 19, 0, 84, 0, 6, 0, 7, 0,141, 2, 2, 0,142, 2, 2, 0, 33, 2, 0, 0, 19, 0, 0, 0,137, 2, 0, 0, 59, 2, - 87, 0, 4, 0, 0, 0,233, 0, 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 95, 0, 6, 0, 47, 0,125, 2, 0, 0, 19, 0, - 0, 0,128, 2, 2, 0, 69, 1, 2, 0,129, 2, 2, 0,130, 2, 96, 0, 1, 0, 7, 0,143, 2, 97, 0, 5, 0, 0, 0,233, 0, - 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 4, 0, 37, 0, 88, 0, 1, 0, 7, 0,144, 2, 89, 0, 2, 0, 4, 0,145, 2, - 4, 0, 17, 0, 82, 0, 7, 0, 7, 0,126, 2, 47, 0,125, 2, 0, 0, 19, 0, 0, 0,128, 2, 2, 0, 69, 1, 2, 0,129, 2, - 2, 0,130, 2, 98, 0, 1, 0, 7, 0,146, 2, 99, 0, 1, 0, 4, 0,147, 2,100, 0, 1, 0, 0, 0,148, 2,101, 0, 1, 0, - 7, 0,126, 2,102, 0, 3, 0, 4, 0,149, 2, 0, 0, 92, 0, 7, 0,150, 2,103, 0, 4, 0, 7, 0,233, 0, 7, 0,179, 0, - 7, 0,180, 0, 7, 0,181, 0,104, 0, 1, 0,103, 0,127, 2,105, 0, 5, 0, 4, 0,151, 2, 4, 0,152, 2, 0, 0, 19, 0, - 0, 0, 33, 2, 0, 0, 59, 2,106, 0, 2, 0, 4, 0,153, 2, 4, 0,152, 2,107, 0, 10, 0,107, 0, 0, 0,107, 0, 1, 0, -105, 0,154, 2,104, 0,155, 2,106, 0,156, 2, 4, 0, 54, 0, 4, 0,114, 2, 4, 0,113, 2, 4, 0, 37, 0, 84, 0,157, 2, - 92, 0, 14, 0, 12, 0,158, 2, 84, 0,157, 2, 0, 0,159, 2, 0, 0,160, 2, 0, 0,161, 2, 0, 0,162, 2, 0, 0,163, 2, - 0, 0,164, 2, 0, 0,165, 2, 0, 0, 19, 0, 91, 0,110, 2, 91, 0,112, 2, 2, 0,166, 2, 0, 0,167, 2, 93, 0, 8, 0, - 4, 0,168, 2, 4, 0,169, 2, 81, 0,170, 2, 85, 0,171, 2, 4, 0,114, 2, 4, 0,113, 2, 4, 0, 54, 0, 4, 0, 37, 0, -108, 0, 9, 0,108, 0, 0, 0,108, 0, 1, 0, 4, 0, 17, 0, 4, 0, 69, 1, 4, 0,172, 2, 4, 0, 37, 0, 0, 0, 20, 0, - 46, 0,129, 0, 0, 0,173, 2,109, 0, 7, 0,108, 0,174, 2, 2, 0,175, 2, 2, 0,158, 2, 2, 0,176, 2, 2, 0, 90, 0, - 9, 0,177, 2, 9, 0,178, 2,110, 0, 3, 0,108, 0,174, 2, 32, 0,161, 0, 0, 0, 20, 0,111, 0, 5, 0,108, 0,174, 2, - 32, 0,161, 0, 0, 0, 20, 0, 2, 0,179, 2, 0, 0,180, 2,112, 0, 5, 0,108, 0,174, 2, 7, 0, 88, 0, 7, 0,181, 2, - 4, 0,182, 2, 4, 0,183, 2,113, 0, 5, 0,108, 0,174, 2, 32, 0,184, 2, 0, 0, 72, 0, 4, 0, 69, 1, 4, 0, 19, 0, -114, 0, 13, 0,108, 0,174, 2, 32, 0,185, 2, 32, 0,186, 2, 32, 0,187, 2, 32, 0,188, 2, 7, 0,189, 2, 7, 0,190, 2, - 7, 0,181, 2, 7, 0,191, 2, 4, 0,192, 2, 4, 0,193, 2, 4, 0, 90, 0, 4, 0,194, 2,115, 0, 5, 0,108, 0,174, 2, - 2, 0,195, 2, 2, 0, 19, 0, 7, 0,196, 2, 32, 0,197, 2,116, 0, 3, 0,108, 0,174, 2, 7, 0,198, 2, 4, 0, 90, 0, -117, 0, 10, 0,108, 0,174, 2, 7, 0,199, 2, 4, 0,200, 2, 4, 0, 37, 0, 2, 0, 90, 0, 2, 0,201, 2, 2, 0,202, 2, - 2, 0,203, 2, 7, 0,204, 2, 0, 0,205, 2,118, 0, 3, 0,108, 0,174, 2, 7, 0, 37, 0, 4, 0, 17, 0,119, 0, 6, 0, -108, 0,174, 2,120, 0,206, 2,121, 0,207, 2,122, 0,208, 2, 7, 0,209, 2, 4, 0, 17, 0,123, 0, 11, 0,108, 0,174, 2, - 52, 0,210, 2, 7, 0,211, 2, 4, 0,212, 2, 0, 0,205, 2, 7, 0,213, 2, 4, 0,214, 2, 32, 0,215, 2, 0, 0,216, 2, - 4, 0,217, 2, 4, 0, 37, 0,124, 0, 12, 0,108, 0,174, 2, 32, 0,218, 2, 47, 0,219, 2, 4, 0, 90, 0, 4, 0,220, 2, - 7, 0,221, 2, 7, 0,222, 2, 7, 0,223, 2, 7, 0,224, 2, 0, 0,216, 2, 4, 0,217, 2, 4, 0, 37, 0,125, 0, 3, 0, -108, 0,174, 2, 7, 0,225, 2, 4, 0,226, 2,126, 0, 5, 0,108, 0,174, 2, 7, 0,227, 2, 0, 0,205, 2, 2, 0, 19, 0, - 2, 0,228, 2,127, 0, 8, 0,108, 0,174, 2, 32, 0,161, 0, 7, 0,227, 2, 7, 0,248, 0, 7, 0,106, 0, 0, 0,205, 2, - 2, 0, 19, 0, 2, 0, 17, 0,128, 0, 21, 0,108, 0,174, 2, 32, 0,229, 2, 0, 0,205, 2, 52, 0,210, 2, 32, 0,215, 2, - 2, 0, 19, 0, 2, 0, 37, 0, 7, 0,230, 2, 7, 0,231, 2, 7, 0,232, 2, 7, 0, 63, 2, 7, 0,233, 2, 7, 0,234, 2, - 7, 0,235, 2, 7, 0,236, 2, 4, 0,214, 2, 4, 0,217, 2, 0, 0,216, 2, 7, 0,237, 2, 7, 0,238, 2, 7, 0, 43, 0, -129, 0, 7, 0,108, 0,174, 2, 2, 0,239, 2, 2, 0,240, 2, 4, 0, 70, 0, 32, 0,161, 0, 7, 0,241, 2, 0, 0,205, 2, -130, 0, 10, 0,108, 0,174, 2, 32, 0,161, 0, 0, 0,242, 2, 7, 0,243, 2, 7, 0,244, 2, 7, 0,236, 2, 4, 0,245, 2, - 4, 0,246, 2, 7, 0,247, 2, 0, 0, 20, 0,131, 0, 1, 0,108, 0,174, 2,132, 0, 7, 0,108, 0,174, 2, 46, 0,129, 0, -133, 0,248, 2,134, 0,249, 2,135, 0,250, 2,136, 0,251, 2, 12, 0,252, 2,137, 0, 13, 0,108, 0,174, 2, 84, 0,253, 2, - 84, 0,254, 2, 84, 0,255, 2, 84, 0, 0, 3, 84, 0, 1, 3, 84, 0, 2, 3, 81, 0, 3, 3, 4, 0, 4, 3, 4, 0, 5, 3, - 7, 0,209, 2, 7, 0, 37, 0,138, 0, 6, 3,139, 0, 7, 0,108, 0,174, 2, 84, 0,253, 2, 84, 0, 7, 3,140, 0, 8, 3, -141, 0, 6, 3, 4, 0, 9, 3, 4, 0, 4, 3,142, 0, 4, 0,108, 0,174, 2, 32, 0,161, 0, 4, 0, 10, 3, 4, 0, 37, 0, -143, 0, 2, 0, 4, 0, 11, 3, 7, 0, 25, 2,144, 0, 2, 0, 4, 0,120, 0, 4, 0, 12, 3,145, 0, 24, 0,108, 0,174, 2, - 32, 0,161, 0, 0, 0,205, 2, 2, 0, 13, 3, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 37, 0,143, 0, 14, 3, 4, 0, 15, 3, - 7, 0, 16, 3, 4, 0, 54, 0, 4, 0, 17, 3,144, 0, 18, 3,143, 0, 19, 3, 4, 0, 20, 3, 4, 0, 21, 3, 4, 0, 22, 3, - 4, 0, 12, 3, 7, 0, 23, 3, 7, 0, 24, 3, 7, 0, 25, 3, 7, 0, 26, 3, 7, 0, 27, 3, 9, 0, 28, 3,146, 0, 8, 0, -108, 0,174, 2,147, 0, 29, 3,140, 0, 8, 3, 4, 0, 30, 3, 4, 0, 31, 3, 4, 0, 32, 3, 2, 0, 19, 0, 2, 0, 57, 0, -148, 0, 8, 0,108, 0,174, 2, 32, 0, 45, 0, 2, 0,252, 0, 2, 0, 19, 0, 2, 0,195, 2, 2, 0, 57, 0, 7, 0, 33, 3, - 7, 0, 34, 3,149, 0, 5, 0,108, 0,174, 2, 4, 0, 35, 3, 2, 0, 19, 0, 2, 0, 36, 3, 7, 0, 37, 3,150, 0, 8, 0, -108, 0,174, 2, 0, 0, 38, 3, 0, 0, 39, 3, 0, 0,164, 2, 0, 0, 40, 3, 0, 0, 41, 3, 0, 0, 90, 0, 0, 0, 59, 2, -151, 0, 3, 0,108, 0,174, 2,152, 0, 42, 3,136, 0,251, 2,153, 0, 10, 0,108, 0,174, 2, 32, 0, 43, 3, 32, 0, 44, 3, - 0, 0, 45, 3, 7, 0, 46, 3, 2, 0, 47, 3, 2, 0, 48, 3, 0, 0, 49, 3, 0, 0, 50, 3, 0, 0,180, 2,154, 0, 9, 0, -108, 0,174, 2, 32, 0, 51, 3, 0, 0, 45, 3, 7, 0, 52, 3, 7, 0, 53, 3, 0, 0, 69, 1, 0, 0,195, 2, 0, 0, 54, 3, - 0, 0, 37, 0,155, 0, 1, 0,108, 0,174, 2,156, 0, 8, 0,108, 0,174, 2, 0, 0,205, 2, 7, 0,120, 0, 7, 0, 55, 3, - 7, 0, 56, 3, 7, 0, 57, 3, 7, 0, 58, 3, 4, 0, 19, 0,157, 0, 9, 0,108, 0,174, 2, 32, 0, 59, 3, 4, 0, 60, 3, - 4, 0, 61, 3, 4, 0, 62, 3, 7, 0, 63, 3, 7, 0, 64, 3, 2, 0,195, 2, 2, 0, 19, 0,158, 0, 28, 0, 27, 0, 31, 0, - 2, 0, 34, 2, 2, 0, 35, 2, 2, 0, 65, 3, 2, 0, 19, 0, 2, 0, 66, 3, 2, 0, 67, 3, 2, 0, 68, 3, 2, 0, 70, 0, - 0, 0, 69, 3, 0, 0, 70, 3, 0, 0, 71, 3, 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 72, 3, 7, 0, 73, 3, 7, 0, 74, 3, - 7, 0, 75, 3, 7, 0, 76, 3, 7, 0, 77, 3, 34, 0, 78, 3, 36, 0, 80, 0, 38, 0, 55, 2, 86, 0,104, 2, 0, 0, 72, 0, - 7, 0, 79, 3, 7, 0, 80, 3,158, 0, 81, 3,159, 0, 3, 0,159, 0, 0, 0,159, 0, 1, 0, 0, 0, 20, 0, 71, 0, 3, 0, - 7, 0, 82, 3, 4, 0, 19, 0, 4, 0, 37, 0, 32, 0,126, 0, 27, 0, 31, 0, 39, 0, 75, 0,160, 0, 83, 3, 2, 0, 17, 0, - 2, 0, 84, 3, 4, 0, 85, 3, 4, 0, 86, 3, 4, 0, 87, 3, 0, 0, 88, 3, 32, 0, 38, 0, 32, 0, 89, 3, 32, 0, 90, 3, - 32, 0, 91, 3, 32, 0, 92, 3, 36, 0, 80, 0, 77, 0, 54, 2, 71, 0,251, 1,161, 0, 93, 3,161, 0, 94, 3,162, 0, 95, 3, - 9, 0, 2, 0,163, 0, 96, 3,164, 0, 97, 3,165, 0, 98, 3, 12, 0, 99, 3, 12, 0, 98, 2, 12, 0, 14, 2, 12, 0,100, 3, - 12, 0,101, 3, 4, 0, 69, 1, 4, 0,102, 3, 66, 0, 16, 2, 0, 0,103, 3, 4, 0, 18, 2, 4, 0,104, 3, 7, 0, 64, 1, - 7, 0,105, 3, 7, 0,106, 3, 7, 0,169, 0, 7, 0,107, 3, 7, 0, 65, 1, 7, 0,108, 3, 7, 0, 4, 2, 7, 0,109, 3, - 7, 0,110, 3, 7, 0,111, 3, 7, 0,112, 3, 7, 0,113, 3, 7, 0,114, 3, 7, 0,243, 2, 7, 0,115, 3, 7, 0,237, 0, - 4, 0,116, 3, 2, 0, 19, 0, 2, 0,117, 3, 2, 0,118, 3, 2, 0,119, 3, 2, 0,120, 3, 2, 0,121, 3, 2, 0,122, 3, - 2, 0,123, 3, 2, 0,124, 3, 2, 0,125, 3, 2, 0,126, 3, 2, 0,127, 3, 4, 0,128, 3, 4, 0,129, 3, 4, 0,130, 3, - 4, 0,131, 3, 7, 0,132, 3, 7, 0, 90, 2, 7, 0,133, 3, 7, 0,134, 3, 7, 0,135, 3, 7, 0,136, 3, 7, 0,137, 3, - 7, 0,212, 0, 7, 0,138, 3, 7, 0,139, 3, 7, 0,140, 3, 7, 0,141, 3, 2, 0,142, 3, 0, 0,143, 3, 0, 0,144, 3, - 0, 0,145, 3, 0, 0,146, 3, 7, 0,147, 3, 7, 0,148, 3, 12, 0,149, 3, 12, 0,150, 3, 12, 0,151, 3, 12, 0,152, 3, - 7, 0,153, 3, 2, 0,145, 2, 2, 0,154, 3, 7, 0,127, 2, 4, 0,155, 3, 4, 0,156, 3,166, 0,157, 3, 2, 0,158, 3, - 2, 0,244, 0, 7, 0,159, 3, 12, 0,160, 3, 12, 0,161, 3, 12, 0,162, 3, 12, 0,163, 3,167, 0, 61, 1,168, 0,164, 3, - 67, 0,165, 3, 2, 0,166, 3, 2, 0,167, 3, 2, 0,168, 3, 2, 0,169, 3, 7, 0,119, 2, 2, 0,170, 3, 2, 0,171, 3, -152, 0,172, 3,140, 0,173, 3,140, 0,174, 3, 4, 0,175, 3, 4, 0,176, 3, 4, 0,177, 3, 4, 0, 70, 0, 12, 0,178, 3, - 12, 0,179, 3, 12, 0,180, 3,169, 0, 14, 0,169, 0, 0, 0,169, 0, 1, 0, 32, 0, 38, 0, 7, 0,243, 2, 7, 0, 66, 1, - 7, 0,244, 2, 7, 0,236, 2, 0, 0, 20, 0, 4, 0,245, 2, 4, 0,246, 2, 4, 0,181, 3, 2, 0, 17, 0, 2, 0,182, 3, - 7, 0,247, 2,170, 0, 12, 0,170, 0, 0, 0,170, 0, 1, 0, 32, 0, 45, 0, 4, 0,183, 3, 4, 0,145, 2, 4, 0,184, 3, - 4, 0, 17, 0, 4, 0,185, 3, 7, 0, 66, 1, 7, 0,186, 3, 7, 0,187, 3, 7, 0,143, 2,167, 0, 40, 0, 4, 0, 19, 0, - 2, 0,188, 3, 2, 0,189, 3, 2, 0,236, 2, 2, 0,190, 3, 2, 0,191, 3, 2, 0,192, 3, 2, 0,193, 3, 2, 0,194, 3, - 7, 0,195, 3, 7, 0,196, 3, 7, 0,197, 3, 7, 0,198, 3, 7, 0,199, 3, 7, 0,200, 3, 7, 0,201, 3, 7, 0,202, 3, - 7, 0,203, 3, 7, 0,204, 3, 7, 0,205, 3, 7, 0,206, 3, 7, 0,207, 3, 7, 0,208, 3, 7, 0,209, 3, 7, 0,210, 3, - 7, 0,211, 3, 7, 0,212, 3, 7, 0,213, 3, 7, 0,214, 3, 7, 0,215, 3, 7, 0,216, 3, 7, 0,217, 3, 7, 0,218, 3, - 7, 0,219, 3, 7, 0,220, 3, 7, 0,221, 3, 52, 0,162, 0,171, 0,222, 3, 7, 0,223, 3, 4, 0,183, 2,172, 0, 5, 0, - 67, 0,229, 1, 7, 0,224, 3, 7, 0,225, 3, 2, 0, 19, 0, 2, 0,226, 3,173, 0, 9, 0,173, 0, 0, 0,173, 0, 1, 0, - 4, 0,227, 3, 4, 0,228, 3, 4, 0,229, 3, 4, 0, 19, 0, 4, 0,230, 3, 9, 0,231, 3, 9, 0,232, 3,136, 0, 19, 0, -136, 0, 0, 0,136, 0, 1, 0, 4, 0, 19, 0, 4, 0,233, 3, 4, 0,234, 3, 4, 0,235, 3, 4, 0,236, 3, 4, 0,237, 3, - 4, 0,238, 3, 4, 0,228, 3, 4, 0,145, 2, 4, 0, 57, 0, 0, 0,239, 3, 0, 0,240, 3, 0, 0,241, 3, 0, 0,242, 3, - 12, 0,243, 3,174, 0,244, 3, 9, 0,245, 3,175, 0, 1, 0, 7, 0, 32, 2,166, 0, 30, 0, 4, 0, 19, 0, 7, 0,246, 3, - 7, 0,247, 3, 7, 0,248, 3, 4, 0,249, 3, 4, 0,250, 3, 4, 0,251, 3, 4, 0,252, 3, 7, 0,253, 3, 7, 0,254, 3, - 7, 0,255, 3, 7, 0, 0, 4, 7, 0, 1, 4, 7, 0, 2, 4, 7, 0, 3, 4, 7, 0, 4, 4, 7, 0, 5, 4, 7, 0, 6, 4, - 7, 0, 7, 4, 7, 0, 8, 4, 7, 0, 9, 4, 7, 0, 10, 4, 7, 0, 11, 4, 7, 0, 12, 4, 7, 0, 13, 4, 7, 0, 14, 4, - 4, 0, 15, 4, 4, 0, 16, 4, 7, 0, 17, 4, 7, 0,138, 3,168, 0, 54, 0, 4, 0,228, 3, 4, 0, 18, 4,176, 0, 19, 4, -177, 0, 20, 4, 0, 0, 37, 0, 0, 0, 21, 4, 2, 0, 22, 4, 7, 0, 23, 4, 0, 0, 24, 4, 7, 0, 25, 4, 7, 0, 26, 4, - 7, 0, 27, 4, 7, 0, 28, 4, 7, 0, 29, 4, 7, 0, 30, 4, 7, 0, 31, 4, 7, 0, 32, 4, 7, 0, 33, 4, 2, 0, 34, 4, - 0, 0, 35, 4, 2, 0, 36, 4, 7, 0, 37, 4, 7, 0, 38, 4, 0, 0, 39, 4, 4, 0,121, 0, 4, 0, 40, 4, 4, 0, 41, 4, - 2, 0, 42, 4, 2, 0, 43, 4,175, 0, 44, 4, 4, 0, 45, 4, 4, 0, 82, 0, 7, 0, 46, 4, 7, 0, 47, 4, 7, 0, 48, 4, - 7, 0, 49, 4, 2, 0, 50, 4, 2, 0, 51, 4, 2, 0, 52, 4, 2, 0, 53, 4, 2, 0, 54, 4, 2, 0, 55, 4, 2, 0, 56, 4, - 2, 0, 57, 4,178, 0, 58, 4, 7, 0, 59, 4, 7, 0, 60, 4,136, 0, 61, 4, 12, 0,252, 2,172, 0, 62, 4, 7, 0, 63, 4, - 7, 0, 64, 4, 7, 0, 65, 4, 0, 0, 66, 4,152, 0, 51, 0,151, 0, 67, 4, 2, 0, 17, 0, 2, 0, 68, 4, 2, 0, 69, 4, - 2, 0, 70, 4, 7, 0, 71, 4, 2, 0, 72, 4, 2, 0, 73, 4, 7, 0, 74, 4, 2, 0, 75, 4, 2, 0, 76, 4, 7, 0, 77, 4, - 7, 0, 78, 4, 7, 0, 79, 4, 7, 0, 80, 4, 7, 0, 81, 4, 4, 0, 82, 4, 4, 0, 83, 4, 7, 0, 84, 4, 4, 0, 85, 4, - 7, 0, 86, 4, 7, 0, 87, 4, 7, 0, 88, 4, 80, 0, 89, 4, 80, 0, 90, 4, 80, 0, 91, 4, 0, 0, 92, 4, 7, 0, 93, 4, - 7, 0, 94, 4, 36, 0, 80, 0, 2, 0, 95, 4, 0, 0, 96, 4, 0, 0, 97, 4, 7, 0, 98, 4, 4, 0, 99, 4, 7, 0,100, 4, - 7, 0,101, 4, 4, 0,102, 4, 4, 0, 19, 0, 7, 0,103, 4, 7, 0,104, 4, 7, 0,105, 4, 84, 0,106, 4, 7, 0,107, 4, - 7, 0,108, 4, 7, 0,109, 4, 7, 0,110, 4, 7, 0,111, 4, 7, 0,112, 4, 7, 0,113, 4, 4, 0,114, 4,179, 0, 78, 0, - 27, 0, 31, 0, 39, 0, 75, 0, 2, 0,172, 0, 2, 0, 70, 1, 2, 0,104, 1, 2, 0,115, 4, 7, 0,116, 4, 7, 0,117, 4, - 7, 0,118, 4, 7, 0,119, 4, 7, 0,120, 4, 7, 0,121, 4, 7, 0,122, 4, 7, 0,123, 4, 7, 0,150, 1, 7, 0,152, 1, - 7, 0,151, 1, 7, 0,124, 4, 4, 0,125, 4, 7, 0,126, 4, 7, 0,127, 4, 7, 0,128, 4, 7, 0,129, 4, 7, 0,130, 4, - 7, 0,131, 4, 7, 0,132, 4, 2, 0,133, 4, 2, 0, 69, 1, 2, 0,134, 4, 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4, - 2, 0,138, 4, 2, 0,139, 4, 7, 0,140, 4, 7, 0,141, 4, 7, 0,142, 4, 7, 0,143, 4, 7, 0,144, 4, 7, 0,145, 4, - 7, 0,146, 4, 7, 0,147, 4, 7, 0,148, 4, 7, 0,149, 4, 7, 0,150, 4, 7, 0,151, 4, 2, 0,152, 4, 2, 0,153, 4, - 2, 0,154, 4, 2, 0,155, 4, 7, 0,156, 4, 7, 0,157, 4, 7, 0,158, 4, 7, 0,159, 4, 2, 0,160, 4, 2, 0,161, 4, - 2, 0,162, 4, 2, 0,163, 4, 7, 0,164, 4, 7, 0,165, 4, 7, 0,166, 4, 7, 0,167, 4, 7, 0,168, 4, 7, 0,169, 4, - 7, 0,170, 4, 2, 0,171, 4, 2, 0,172, 4, 2, 0,173, 4, 2, 0,174, 4, 2, 0,175, 4, 2, 0, 19, 0, 7, 0,176, 4, - 7, 0,177, 4, 36, 0, 80, 0, 51, 0,122, 1, 2, 0,123, 1, 2, 0,178, 4, 30, 0,148, 0,180, 0, 8, 0,180, 0, 0, 0, -180, 0, 1, 0, 4, 0,116, 3, 4, 0,179, 4, 4, 0, 19, 0, 2, 0,180, 4, 2, 0,181, 4, 32, 0,161, 0,181, 0, 13, 0, - 9, 0,182, 4, 9, 0,183, 4, 4, 0,184, 4, 4, 0,185, 4, 4, 0,186, 4, 4, 0,187, 4, 4, 0,188, 4, 4, 0,189, 4, - 4, 0,190, 4, 4, 0,191, 4, 4, 0,192, 4, 4, 0, 37, 0, 0, 0,193, 4,182, 0, 5, 0, 9, 0,194, 4, 9, 0,195, 4, - 4, 0,196, 4, 4, 0, 70, 0, 0, 0,197, 4,183, 0, 17, 0, 4, 0,198, 4, 4, 0,199, 4, 4, 0,200, 4, 4, 0,201, 4, - 4, 0,202, 4, 4, 0,203, 4, 4, 0,204, 4, 4, 0,205, 4, 4, 0,206, 4, 4, 0,207, 4, 4, 0,208, 4, 4, 0,209, 4, - 2, 0,210, 4, 2, 0,211, 4, 4, 0,212, 4, 4, 0,213, 4, 4, 0, 43, 0,184, 0, 15, 0, 4, 0, 17, 0, 4, 0,200, 4, - 4, 0,214, 4, 4, 0,215, 4, 4, 0,216, 4, 4, 0,217, 4, 7, 0,218, 4, 4, 0,219, 4, 4, 0, 90, 0, 4, 0,220, 4, - 4, 0,221, 4, 4, 0,222, 4, 4, 0,223, 4, 4, 0,224, 4, 26, 0, 30, 0,185, 0, 7, 0, 4, 0,225, 4, 7, 0,226, 4, - 7, 0,227, 4, 7, 0,228, 4, 4, 0,229, 4, 2, 0, 19, 0, 2, 0, 37, 0,186, 0, 11, 0,186, 0, 0, 0,186, 0, 1, 0, - 0, 0, 20, 0, 66, 0,230, 4, 67, 0,231, 4, 4, 0,116, 3, 4, 0,232, 4, 4, 0,233, 4, 4, 0, 37, 0, 4, 0,234, 4, - 4, 0,235, 4,187, 0,111, 0,181, 0,236, 4,182, 0,237, 4,183, 0,238, 4,184, 0,239, 4, 4, 0, 9, 3, 4, 0,121, 0, - 4, 0, 40, 4, 7, 0,240, 4, 4, 0,241, 4, 4, 0,242, 4, 4, 0,243, 4, 4, 0,244, 4, 2, 0, 19, 0, 2, 0,245, 4, - 7, 0,246, 4, 7, 0,247, 4, 7, 0,248, 4, 7, 0,249, 4, 7, 0,250, 4, 2, 0,251, 4, 2, 0,252, 4, 2, 0,253, 4, - 2, 0,254, 4, 2, 0,243, 0, 2, 0,255, 4, 2, 0, 0, 5, 2, 0, 1, 5, 2, 0, 2, 5, 2, 0, 3, 5, 2, 0, 91, 1, - 2, 0,106, 0, 2, 0, 4, 5, 2, 0, 5, 5, 2, 0, 6, 5, 2, 0, 7, 5, 2, 0, 8, 5, 2, 0, 9, 5, 2, 0, 10, 5, - 2, 0, 11, 5, 2, 0, 12, 5, 2, 0, 92, 1, 2, 0, 13, 5, 2, 0, 14, 5, 2, 0, 15, 5, 2, 0, 16, 5, 4, 0, 17, 5, - 4, 0, 69, 1, 4, 0, 18, 5, 2, 0, 19, 5, 2, 0, 20, 5, 2, 0, 21, 5, 2, 0,248, 1, 2, 0, 22, 5, 2, 0, 23, 5, - 2, 0, 24, 5, 2, 0, 25, 5, 24, 0, 26, 5, 24, 0, 27, 5, 23, 0, 28, 5, 12, 0, 29, 5, 2, 0, 30, 5, 2, 0, 31, 5, - 7, 0, 32, 5, 7, 0, 33, 5, 7, 0, 34, 5, 7, 0, 35, 5, 4, 0, 36, 5, 7, 0, 37, 5, 7, 0, 38, 5, 7, 0, 39, 5, - 7, 0, 40, 5, 2, 0, 41, 5, 2, 0, 42, 5, 2, 0, 43, 5, 2, 0, 44, 5, 2, 0, 45, 5, 2, 0, 46, 5, 7, 0, 47, 5, - 7, 0, 48, 5, 7, 0, 49, 5, 0, 0, 50, 5, 0, 0, 51, 5, 4, 0, 52, 5, 2, 0, 53, 5, 2, 0,226, 1, 0, 0, 54, 5, - 7, 0, 55, 5, 7, 0, 56, 5, 0, 0, 57, 5, 0, 0, 58, 5, 0, 0, 59, 5, 0, 0, 60, 5, 4, 0, 61, 5, 2, 0, 62, 5, - 2, 0, 63, 5, 7, 0, 64, 5, 7, 0, 65, 5, 2, 0, 66, 5, 2, 0, 67, 5, 7, 0, 68, 5, 2, 0, 69, 5, 2, 0, 70, 5, - 4, 0, 71, 5, 2, 0, 72, 5, 2, 0, 73, 5, 2, 0, 74, 5, 2, 0, 75, 5, 7, 0, 76, 5, 7, 0, 70, 0, 42, 0, 77, 5, - 0, 0, 78, 5,188, 0, 9, 0,188, 0, 0, 0,188, 0, 1, 0, 0, 0, 20, 0, 2, 0, 79, 5, 2, 0, 80, 5, 2, 0, 81, 5, - 2, 0, 43, 0, 7, 0, 82, 5, 7, 0, 70, 0,189, 0, 7, 0, 2, 0,200, 2, 2, 0, 69, 1, 2, 0, 64, 3, 2, 0, 83, 5, - 7, 0, 84, 5, 7, 0, 70, 0, 42, 0, 85, 5,190, 0, 5, 0, 7, 0, 86, 5, 0, 0, 17, 0, 0, 0, 43, 0, 0, 0, 70, 0, - 0, 0,226, 1,191, 0, 28, 0, 7, 0,131, 4, 7, 0,132, 4, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0, 87, 5, 2, 0,178, 4, - 2, 0,134, 4, 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4, 2, 0,138, 4, 2, 0,139, 4,190, 0, 88, 5, 2, 0,251, 4, - 2, 0,252, 4, 2, 0,253, 4, 2, 0,254, 4, 2, 0,243, 0, 2, 0,255, 4, 2, 0, 89, 5, 2, 0, 0, 5,189, 0, 90, 5, - 2, 0, 91, 5, 2, 0, 2, 5, 2, 0, 5, 5, 2, 0, 6, 5, 7, 0, 92, 5, 7, 0, 43, 0,192, 0, 6, 0,192, 0, 0, 0, -192, 0, 1, 0, 4, 0,227, 3, 0, 0,239, 3, 4, 0, 19, 0, 32, 0, 93, 5,193, 0, 6, 0,194, 0, 94, 5, 4, 0, 95, 5, - 4, 0, 96, 5, 9, 0, 97, 5, 0, 0, 98, 5, 4, 0, 90, 0,195, 0, 8, 0,193, 0, 99, 5, 2, 0, 19, 0, 2, 0, 37, 0, - 2, 0,100, 5, 2, 0,101, 5, 2, 0,102, 5, 4, 0, 43, 0, 9, 0,103, 5,196, 0, 6, 0, 2, 0,106, 0, 2, 0,233, 3, - 2, 0,104, 5, 2, 0,194, 2, 4, 0, 19, 0, 7, 0,211, 2,197, 0, 14, 0, 2, 0, 19, 0, 2, 0,105, 5, 2, 0,106, 5, - 2, 0,107, 5,196, 0,108, 5, 9, 0,103, 5, 7, 0,109, 5, 7, 0, 57, 0, 4, 0,110, 5, 4, 0,111, 5, 4, 0,112, 5, - 4, 0,113, 5, 46, 0,129, 0, 32, 0,161, 0,198, 0, 4, 0,198, 0, 0, 0,198, 0, 1, 0, 0, 0,114, 5, 7, 0,115, 5, -199, 0, 6, 0,193, 0, 99, 5, 7, 0,116, 5, 4, 0, 90, 0, 0, 0,117, 5, 0, 0,118, 5, 0, 0,180, 2,200, 0, 7, 0, -193, 0, 99, 5, 2, 0, 19, 0, 2, 0, 37, 0, 4, 0, 36, 0, 4, 0,119, 5, 86, 0,120, 5, 9, 0,103, 5,201, 0, 74, 0, -200, 0,121, 5,200, 0,122, 5,199, 0, 83, 3, 7, 0,123, 5, 2, 0,124, 5, 2, 0,125, 5, 7, 0,126, 5, 7, 0,127, 5, - 2, 0,233, 3, 2, 0,128, 5, 7, 0,129, 5, 7, 0,130, 5, 7, 0,131, 5, 2, 0,132, 5, 2, 0,110, 5, 2, 0,133, 5, - 2, 0,134, 5, 2, 0,135, 5, 2, 0,136, 5, 7, 0,137, 5, 7, 0,138, 5, 7, 0,139, 5, 2, 0,140, 5, 2, 0,141, 5, - 2, 0,142, 5, 2, 0,143, 5, 2, 0,144, 5, 2, 0,145, 5, 2, 0,146, 5,195, 0,147, 5,197, 0,148, 5, 7, 0,149, 5, - 7, 0,150, 5, 7, 0,151, 5, 2, 0,152, 5, 2, 0,153, 5, 0, 0,154, 5, 0, 0,155, 5, 0, 0,156, 5, 0, 0,157, 5, - 0, 0,158, 5, 0, 0,159, 5, 2, 0,160, 5, 7, 0,161, 5, 7, 0,162, 5, 7, 0,163, 5, 7, 0,164, 5, 7, 0,165, 5, - 7, 0,166, 5, 7, 0,167, 5, 7, 0,168, 5, 7, 0,169, 5, 7, 0,170, 5, 2, 0,171, 5, 0, 0,172, 5, 0, 0,173, 5, - 0, 0,174, 5, 0, 0,175, 5, 32, 0,176, 5, 0, 0,177, 5, 0, 0,178, 5, 0, 0,179, 5, 0, 0,180, 5, 0, 0,181, 5, - 0, 0,182, 5, 0, 0,183, 5, 0, 0,184, 5, 2, 0,185, 5, 2, 0,186, 5, 2, 0,187, 5, 2, 0,188, 5, 2, 0,189, 5, - 4, 0,190, 5, 4, 0,191, 5,202, 0, 8, 0, 4, 0,192, 5, 4, 0,193, 5, 4, 0,194, 5, 4, 0,195, 5, 4, 0,196, 5, - 4, 0,197, 5, 4, 0, 54, 0, 4, 0,114, 2,203, 0, 3, 0, 7, 0,198, 5, 2, 0,199, 5, 2, 0, 19, 0,204, 0, 4, 0, - 7, 0,200, 5, 4, 0, 19, 0, 4, 0,201, 5, 4, 0, 57, 0, 46, 0, 42, 0, 27, 0, 31, 0, 39, 0, 75, 0, 32, 0, 93, 5, -179, 0,202, 5, 46, 0,203, 5, 47, 0,235, 0, 12, 0,204, 5,180, 0,205, 5, 32, 0,206, 5, 7, 0,207, 5, 7, 0,208, 5, - 7, 0,209, 5, 7, 0,210, 5, 4, 0,116, 3, 4, 0,211, 5, 4, 0, 43, 0, 2, 0, 19, 0, 2, 0, 63, 1, 60, 0, 58, 1, -205, 0,212, 5,201, 0,213, 5,206, 0,214, 5,187, 0,179, 0,185, 0,215, 5, 12, 0,100, 0, 12, 0,216, 5, 9, 0,217, 5, - 9, 0,218, 5, 9, 0,219, 5,207, 0,220, 5, 2, 0,221, 5, 2, 0,222, 5, 2, 0,244, 0, 2, 0,223, 5, 4, 0,224, 5, - 4, 0,225, 5, 12, 0,226, 5,190, 0, 88, 5,191, 0,227, 5,203, 0,228, 5,163, 0, 96, 3,204, 0,229, 5,208, 0, 11, 0, -208, 0, 0, 0,208, 0, 1, 0, 47, 0,235, 0, 45, 0, 57, 1, 7, 0, 78, 2, 7, 0, 79, 2, 7, 0,106, 0, 7, 0,230, 5, - 2, 0,231, 5, 2, 0, 19, 0, 7, 0, 70, 0,209, 0, 39, 0, 7, 0,232, 5, 7, 0,233, 5, 7, 0,234, 5, 7, 0,235, 5, - 7, 0,236, 5, 7, 0,237, 5, 7, 0,238, 5, 7, 0,239, 5, 7, 0,240, 5, 7, 0, 76, 1, 7, 0,241, 5, 7, 0,242, 5, - 7, 0,243, 5, 7, 0,244, 5, 7, 0,168, 0, 2, 0,245, 5, 2, 0,246, 5, 2, 0,247, 5, 2, 0, 37, 0, 2, 0,248, 5, - 2, 0,249, 5, 2, 0,250, 5, 2, 0,231, 5, 7, 0,251, 5, 7, 0,252, 5, 71, 0,253, 5,163, 0, 96, 3,209, 0,254, 5, -210, 0,255, 5,211, 0, 0, 6,212, 0, 1, 6,213, 0, 2, 6,214, 0, 3, 6, 7, 0, 4, 6, 2, 0, 5, 6, 2, 0, 6, 6, - 7, 0, 7, 6, 7, 0, 8, 6, 7, 0, 9, 6,215, 0, 55, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, - 7, 0, 12, 6, 2, 0, 13, 6, 7, 0,240, 5, 7, 0, 76, 1, 7, 0, 43, 0, 4, 0, 14, 6, 2, 0,250, 5, 2, 0,231, 5, - 32, 0, 93, 5, 32, 0, 15, 6, 12, 0, 16, 6,208, 0, 17, 6,215, 0,254, 5, 0, 0, 18, 6, 4, 0,116, 3, 4, 0,211, 5, - 2, 0, 19, 6, 2, 0, 70, 0, 2, 0, 20, 6, 2, 0, 21, 6, 2, 0,226, 1, 2, 0, 19, 0, 2, 0, 17, 2, 2, 0, 22, 6, - 7, 0,111, 0, 7, 0, 23, 6, 7, 0, 7, 6, 7, 0, 9, 6, 7, 0, 24, 6, 7, 0, 25, 6, 7, 0,168, 0, 7, 0,207, 5, - 2, 0, 26, 6, 2, 0,248, 1, 2, 0, 27, 6, 2, 0, 28, 6, 2, 0, 29, 6, 2, 0, 30, 6, 2, 0, 31, 6, 2, 0, 32, 6, - 2, 0, 33, 6, 2, 0,247, 5, 4, 0, 34, 6, 12, 0, 35, 6, 2, 0, 36, 6, 2, 0,128, 2, 2, 0, 37, 6, 0, 0, 38, 6, - 0, 0, 39, 6, 9, 0, 40, 6,163, 0, 96, 3,217, 0, 24, 0, 24, 0, 36, 0, 24, 0, 64, 0, 23, 0, 41, 6, 23, 0, 42, 6, - 23, 0, 43, 6, 7, 0, 44, 6, 7, 0, 45, 6, 7, 0, 46, 6, 7, 0, 47, 6, 2, 0, 48, 6, 2, 0, 49, 6, 2, 0, 50, 6, - 2, 0, 51, 6, 2, 0, 52, 6, 2, 0, 19, 0, 2, 0, 53, 6, 2, 0, 54, 6, 2, 0, 55, 6, 2, 0, 56, 6, 2, 0, 57, 6, - 2, 0, 21, 6, 7, 0, 58, 6, 4, 0, 59, 6, 4, 0, 60, 6,216, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, - 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6,218, 0, 8, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, - 7, 0, 12, 6, 2, 0, 13, 6,219, 0, 61, 6, 46, 0,129, 0,220, 0, 14, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, - 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6,217, 0, 62, 6,221, 0, 63, 6, 12, 0, 64, 6, 2, 0, 69, 1, 2, 0, 65, 6, - 4, 0, 19, 0, 7, 0, 66, 6, 4, 0, 21, 6,222, 0, 20, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, - 7, 0, 12, 6, 2, 0, 13, 6,210, 0,255, 5,217, 0, 62, 6, 2, 0, 67, 6, 2, 0, 68, 6, 2, 0, 69, 6, 2, 0, 70, 6, - 2, 0, 53, 6, 2, 0, 71, 6, 0, 0, 19, 0, 0, 0,178, 4, 9, 0, 54, 2, 4, 0, 72, 6, 4, 0, 73, 6, 27, 0, 74, 6, -223, 0, 18, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6,217, 0, 62, 6, - 7, 0, 78, 2, 7, 0, 79, 2, 2, 0, 67, 6, 2, 0, 75, 6, 2, 0, 76, 6, 2, 0, 77, 6, 4, 0, 19, 0, 7, 0, 78, 6, - 4, 0,231, 5, 4, 0, 37, 0,163, 0, 96, 3,224, 0, 15, 0, 0, 0, 79, 6, 0, 0, 80, 6, 0, 0, 81, 6, 0, 0, 82, 6, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 83, 6, 2, 0, 84, 6, 2, 0,169, 1, 2, 0, 85, 6, 4, 0, 86, 6, 4, 0, 87, 6, - 2, 0, 88, 6, 2, 0, 37, 0, 0, 0, 89, 6,225, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, - 4, 0, 90, 6,224, 0, 91, 6,226, 0, 92, 6, 12, 0, 93, 6, 12, 0, 94, 6,227, 0, 95, 6,214, 0, 96, 6,228, 0, 97, 6, - 2, 0, 98, 6, 2, 0, 99, 6, 2, 0,100, 6, 2, 0, 70, 0,229, 0, 17, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, - 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6,217, 0, 62, 6, 12, 0,101, 6,230, 0,102, 6, 0, 0,103, 6,231, 0,104, 6, - 4, 0,105, 6, 4, 0,106, 6, 2, 0, 19, 0, 2, 0,107, 6, 2, 0,108, 6, 2, 0, 37, 0,232, 0, 32, 0,216, 0, 0, 0, -216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6, 47, 0,219, 2, 45, 0, 57, 1, 63, 0,109, 6, - 2, 0,128, 0, 2, 0,110, 6, 2, 0, 70, 0, 2, 0,111, 6, 4, 0, 19, 0, 2, 0,112, 6, 2, 0,113, 6, 2, 0,114, 6, - 2, 0,226, 1, 0, 0,115, 6, 0, 0,116, 6, 0, 0,117, 6, 0, 0, 21, 6, 7, 0,118, 6, 7, 0, 78, 2, 7, 0, 79, 2, - 7, 0, 78, 6, 7, 0,248, 1, 7, 0,119, 6, 7, 0,120, 6,163, 0, 96, 3,233, 0,121, 6,234, 0,122, 6,235, 0, 11, 0, -216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6, 2, 0, 65, 6, 2, 0, 19, 0, - 4, 0, 37, 0,221, 0, 63, 6,217, 0, 62, 6,236, 0, 27, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, - 7, 0, 12, 6, 2, 0, 13, 6, 42, 0,123, 6, 4, 0,124, 6, 4, 0,125, 6, 2, 0, 90, 0, 2, 0,128, 0, 2, 0,126, 6, - 0, 0,127, 6, 0, 0,128, 6, 4, 0,129, 6, 4, 0,130, 6, 4, 0,131, 6, 4, 0,132, 6, 2, 0,133, 6, 2, 0,134, 6, - 7, 0,135, 6, 23, 0,136, 6, 23, 0,137, 6, 4, 0,138, 6, 4, 0,139, 6, 0, 0,140, 6, 0, 0,141, 6,237, 0, 10, 0, - 27, 0, 31, 0, 9, 0,142, 6, 9, 0,143, 6, 9, 0,144, 6, 9, 0,145, 6, 9, 0,146, 6, 4, 0, 90, 0, 4, 0,147, 6, - 0, 0,148, 6, 0, 0,149, 6,238, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, -237, 0,150, 6, 2, 0, 90, 0, 2, 0,128, 0, 4, 0, 43, 0, 9, 0,151, 6,239, 0, 9, 0,239, 0, 0, 0,239, 0, 1, 0, - 4, 0, 17, 0, 4, 0, 19, 0, 7, 0,152, 6, 4, 0, 23, 0, 4, 0,235, 3, 4, 0,236, 3, 4, 0,124, 0,240, 0, 11, 0, -216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6,217, 0, 62, 6, 12, 0,153, 6, 4, 0,154, 6, - 4, 0, 37, 0, 4, 0, 19, 0, 4, 0,155, 6,241, 0, 25, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, - 7, 0, 12, 6, 2, 0, 13, 6,217, 0, 62, 6, 27, 0,156, 6, 27, 0, 81, 0, 2, 0, 19, 0, 2, 0,128, 0, 7, 0,157, 6, - 9, 0,158, 6, 7, 0, 78, 2, 7, 0, 79, 2, 7, 0, 78, 6, 7, 0, 9, 6, 7, 0,159, 6, 7, 0,160, 6, 60, 0, 58, 1, - 60, 0,161, 6, 4, 0,162, 6, 2, 0,163, 6, 2, 0, 37, 0,163, 0, 96, 3,242, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, - 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6, 2, 0, 19, 0, 2, 0,125, 3, 4, 0, 37, 0,163, 0, 96, 3, -243, 0, 42, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6,217, 0, 62, 6, -226, 0, 92, 6, 0, 0, 79, 6, 0, 0, 80, 6, 0, 0, 81, 6, 2, 0, 17, 0, 2, 0,164, 6, 2, 0, 19, 0, 2, 0, 83, 6, - 9, 0,158, 6, 4, 0, 86, 6, 4, 0,165, 6, 4, 0,166, 6, 4, 0, 87, 6, 23, 0,167, 6, 23, 0,168, 6, 7, 0,169, 6, - 7, 0,170, 6, 7, 0,171, 6, 7, 0,157, 6, 2, 0,172, 6, 2, 0,234, 0, 2, 0,169, 1, 2, 0, 85, 6, 2, 0, 37, 0, - 2, 0, 43, 0, 2, 0,173, 6, 2, 0,174, 6, 9, 0,175, 6, 9, 0,176, 6, 9, 0,177, 6, 9, 0,178, 6, 9, 0,179, 6, - 2, 0,180, 6, 0, 0,181, 6, 57, 0,182, 6,244, 0, 7, 0,244, 0, 0, 0,244, 0, 1, 0, 4, 0,183, 6, 4, 0, 23, 0, - 0, 0, 84, 0, 4, 0,184, 6, 4, 0, 17, 0,245, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, - 7, 0, 12, 6, 2, 0, 13, 6, 4, 0, 17, 0, 4, 0,185, 6, 4, 0, 19, 0, 4, 0,126, 6, 12, 0,186, 6, 12, 0,187, 6, - 0, 0,188, 6, 0, 0,189, 6, 4, 0,190, 6, 4, 0,191, 6,246, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, - 4, 0, 11, 6, 4, 0, 37, 0, 0, 0,192, 6,247, 0, 7, 0,247, 0, 0, 0,247, 0, 1, 0, 0, 0,193, 6, 2, 0,194, 6, - 2, 0,195, 6, 2, 0,196, 6, 2, 0, 37, 0,248, 0, 12, 0, 2, 0,195, 6, 2, 0,197, 6, 2, 0,198, 6, 0, 0,180, 2, - 2, 0,199, 6, 2, 0,200, 6, 2, 0,201, 6, 2, 0,202, 6, 2, 0,203, 6, 2, 0, 53, 6, 7, 0,204, 6, 7, 0,205, 6, -249, 0, 18, 0,249, 0, 0, 0,249, 0, 1, 0, 0, 0,239, 3,248, 0,206, 6,248, 0,207, 6,248, 0,208, 6,248, 0,209, 6, - 7, 0,210, 6, 2, 0,211, 6, 2, 0,212, 6, 2, 0,213, 6, 2, 0,214, 6, 2, 0,215, 6, 2, 0,216, 6, 2, 0,217, 6, - 2, 0,218, 6, 2, 0,219, 6, 2, 0,220, 6,250, 0, 10, 0, 0, 0,221, 6, 0, 0,222, 6, 0, 0,223, 6, 0, 0,224, 6, - 0, 0,225, 6, 0, 0,226, 6, 2, 0,227, 6, 2, 0,228, 6, 2, 0,229, 6, 2, 0,230, 6,251, 0, 8, 0, 0, 0,231, 6, - 0, 0,232, 6, 0, 0,233, 6, 0, 0,234, 6, 0, 0,235, 6, 0, 0,236, 6, 7, 0,230, 5, 7, 0, 37, 0,252, 0, 18, 0, -250, 0,237, 6,250, 0,238, 6,250, 0,239, 6,250, 0,240, 6,250, 0,241, 6,250, 0,242, 6,250, 0,243, 6,250, 0,244, 6, -250, 0,245, 6,250, 0,246, 6,250, 0,247, 6,250, 0,248, 6,250, 0,249, 6,250, 0,250, 6,250, 0,251, 6,250, 0,252, 6, -251, 0,253, 6, 0, 0,254, 6,253, 0, 92, 0, 0, 0,255, 6, 0, 0, 0, 7, 0, 0,225, 6, 0, 0, 1, 7, 0, 0, 2, 7, - 0, 0, 3, 7, 0, 0, 4, 7, 0, 0, 5, 7, 0, 0, 6, 7, 0, 0, 7, 7, 0, 0, 8, 7, 0, 0, 9, 7, 0, 0, 10, 7, - 0, 0, 11, 7, 0, 0, 12, 7, 0, 0, 13, 7, 0, 0, 14, 7, 0, 0, 15, 7, 0, 0, 16, 7, 0, 0, 17, 7, 0, 0, 18, 7, - 0, 0, 19, 7, 0, 0, 20, 7, 0, 0, 21, 7, 0, 0, 22, 7, 0, 0, 23, 7, 0, 0, 24, 7, 0, 0, 25, 7, 0, 0, 26, 7, - 0, 0, 27, 7, 0, 0, 28, 7, 0, 0, 29, 7, 0, 0, 30, 7, 0, 0, 31, 7, 0, 0, 32, 7, 0, 0, 33, 7, 0, 0, 34, 7, - 0, 0, 35, 7, 0, 0, 36, 7, 0, 0, 37, 7, 0, 0, 38, 7, 0, 0, 39, 7, 0, 0, 40, 7, 0, 0, 41, 7, 0, 0, 42, 7, - 0, 0, 43, 7, 0, 0, 44, 7, 0, 0, 45, 7, 0, 0, 46, 7, 0, 0, 47, 7, 0, 0, 48, 7, 0, 0, 49, 7, 0, 0, 50, 7, - 0, 0, 51, 7, 0, 0, 52, 7, 0, 0, 53, 7, 0, 0, 54, 7, 0, 0, 55, 7, 0, 0, 56, 7, 0, 0, 57, 7, 0, 0, 58, 7, - 0, 0, 59, 7, 0, 0, 60, 7, 0, 0, 61, 7, 0, 0, 62, 7, 0, 0, 63, 7, 0, 0, 64, 7, 0, 0, 65, 7, 0, 0, 66, 7, - 0, 0, 67, 7, 0, 0, 68, 7, 0, 0, 69, 7, 0, 0, 70, 7, 0, 0, 71, 7, 0, 0, 72, 7, 0, 0, 73, 7, 0, 0, 74, 7, - 0, 0, 75, 7, 0, 0, 76, 7, 0, 0, 77, 7, 0, 0, 78, 7, 0, 0, 79, 7, 0, 0, 80, 7, 0, 0, 81, 7, 0, 0, 82, 7, - 0, 0, 83, 7, 0, 0, 84, 7, 0, 0, 85, 7, 0, 0, 86, 7, 0, 0, 87, 7, 0, 0, 88, 7, 0, 0, 89, 7,254, 0, 5, 0, - 0, 0, 90, 7, 0, 0, 23, 7, 0, 0, 25, 7, 2, 0, 19, 0, 2, 0, 37, 0,255, 0, 25, 0,255, 0, 0, 0,255, 0, 1, 0, - 0, 0, 20, 0,252, 0, 91, 7,253, 0, 92, 7,253, 0, 93, 7,253, 0, 94, 7,253, 0, 95, 7,253, 0, 96, 7,253, 0, 97, 7, -253, 0, 98, 7,253, 0, 99, 7,253, 0,100, 7,253, 0,101, 7,253, 0,102, 7,253, 0,103, 7,253, 0,104, 7,253, 0,105, 7, -253, 0,106, 7,253, 0,107, 7,253, 0,108, 7,253, 0,109, 7,254, 0,110, 7, 4, 0,111, 7, 4, 0, 37, 0, 0, 1, 3, 0, - 0, 1, 0, 0, 0, 1, 1, 0, 0, 0,112, 7, 1, 1, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,127, 2, 7, 0,113, 7, - 7, 0, 32, 2, 2, 1, 84, 0, 4, 0, 19, 0, 4, 0,114, 7, 4, 0,115, 7, 0, 0,116, 7, 0, 0,117, 7, 0, 0,118, 7, - 0, 0,119, 7, 0, 0,120, 7, 0, 0,121, 7, 0, 0,122, 7, 0, 0,123, 7, 0, 0,124, 7, 0, 0,125, 7, 4, 0,126, 7, - 2, 0,127, 7, 2, 0,128, 7, 2, 0,129, 7, 2, 0,130, 7, 4, 0,131, 7, 4, 0,132, 7, 4, 0,133, 7, 4, 0,134, 7, - 2, 0,135, 7, 2, 0,136, 7, 4, 0,137, 7, 4, 0,138, 7, 4, 0,139, 7, 4, 0,140, 7, 4, 0,141, 7, 4, 0,186, 6, - 4, 0,142, 7, 2, 0,143, 7, 2, 0,144, 7, 2, 0,145, 7, 2, 0,146, 7, 12, 0,147, 7, 12, 0,148, 7, 12, 0,149, 7, - 12, 0,150, 7, 12, 0,151, 7, 0, 0,152, 7, 2, 0,153, 7, 2, 0,154, 7, 2, 0,155, 7, 2, 0,156, 7, 2, 0,157, 7, - 2, 0,158, 7, 2, 0,159, 7, 2, 0,160, 7, 1, 1,161, 7, 2, 0,162, 7, 2, 0,163, 7, 2, 0,164, 7, 2, 0,165, 7, - 2, 0,166, 7, 2, 0,167, 7, 2, 0,168, 7, 2, 0,169, 7, 4, 0,170, 7, 4, 0,171, 7, 2, 0,172, 7, 2, 0,173, 7, - 2, 0,174, 7, 2, 0,175, 7, 2, 0,176, 7, 2, 0,177, 7, 2, 0,178, 7, 2, 0,179, 7, 2, 0,180, 7, 2, 0,181, 7, - 2, 0,182, 7, 2, 0,183, 7, 2, 0,184, 7, 2, 0,185, 7, 2, 0,186, 7, 2, 0,187, 7, 2, 0,188, 7, 2, 0,178, 4, - 0, 0,189, 7, 0, 0,190, 7, 7, 0,191, 7, 2, 0,152, 5, 2, 0,153, 5, 55, 0,192, 7,219, 0, 21, 0, 27, 0, 31, 0, - 12, 0,193, 7, 12, 0,194, 7, 12, 0,195, 7, 12, 0, 10, 6, 46, 0,129, 0, 46, 0,196, 7, 2, 0,197, 7, 2, 0,198, 7, - 2, 0,199, 7, 2, 0,200, 7, 2, 0,201, 7, 2, 0,202, 7, 2, 0,203, 7, 2, 0,204, 7, 2, 0,205, 7, 2, 0,206, 7, - 4, 0, 70, 0,214, 0,207, 7, 9, 0,208, 7, 2, 0,209, 7, 3, 1, 5, 0, 3, 1, 0, 0, 3, 1, 1, 0, 3, 1,210, 7, - 13, 0,211, 7, 4, 0, 19, 0, 4, 1, 7, 0, 4, 1, 0, 0, 4, 1, 1, 0, 3, 1,212, 7, 3, 1,213, 7, 2, 0, 27, 5, - 2, 0, 19, 0, 4, 0, 37, 0, 5, 1, 25, 0, 5, 1, 0, 0, 5, 1, 1, 0, 6, 1,214, 7, 7, 1, 97, 6, 0, 0,215, 7, - 0, 0,216, 7, 0, 0,217, 7, 2, 0,218, 7, 2, 0,219, 7, 2, 0,220, 7, 2, 0,221, 7, 2, 0,222, 7, 2, 0, 37, 0, - 2, 0, 19, 0, 2, 0,223, 7, 2, 0,224, 7, 2, 0,225, 7, 4, 0,226, 7, 5, 1,227, 7, 9, 0,228, 7, 4, 0,229, 7, - 4, 0,230, 7, 4, 0,231, 7, 4, 0,232, 7, 0, 0,233, 7, 8, 1, 22, 0, 8, 1, 0, 0, 8, 1, 1, 0, 3, 1,212, 7, - 3, 1,213, 7, 3, 1,234, 7, 3, 1,235, 7,219, 0,236, 7, 23, 0, 52, 0, 0, 0, 11, 6, 0, 0,237, 7, 2, 0, 54, 6, - 2, 0, 55, 6, 2, 0,238, 7, 2, 0, 37, 0, 2, 0,200, 7, 2, 0,184, 6, 2, 0, 19, 0, 9, 1,214, 7, 12, 0,239, 7, - 12, 0, 10, 6, 12, 0,240, 7, 12, 0,241, 7, 10, 1, 24, 0, 10, 1, 0, 0, 10, 1, 1, 0,217, 0, 62, 6, 23, 0,242, 7, - 23, 0,243, 7, 2, 0, 54, 6, 2, 0, 55, 6, 2, 0,244, 7, 2, 0,245, 7, 2, 0,246, 7, 2, 0, 19, 0, 7, 0, 74, 2, - 2, 0,220, 7, 2, 0,221, 7, 2, 0,199, 7, 2, 0,247, 7, 2, 0,204, 7, 2, 0,178, 4, 11, 1,214, 7, 12, 0,248, 7, - 12, 0,249, 7, 12, 0,240, 7, 0, 0,250, 7, 9, 0,251, 7, 12, 1, 12, 0, 0, 0,252, 7, 2, 0,253, 7, 2, 0,254, 7, - 2, 0,255, 7, 2, 0, 0, 8, 2, 0, 14, 5, 2, 0, 9, 5,219, 0, 1, 8, 46, 0, 2, 8, 4, 0, 3, 8, 4, 0, 4, 8, - 0, 0, 5, 8, 13, 1, 1, 0, 0, 0, 6, 8, 14, 1, 8, 0, 57, 0, 7, 8, 57, 0, 8, 8, 14, 1, 9, 8, 14, 1, 10, 8, - 14, 1, 11, 8, 2, 0,124, 0, 2, 0, 19, 0, 4, 0, 12, 8, 15, 1, 4, 0, 4, 0,124, 6, 4, 0, 13, 8, 4, 0,129, 6, - 4, 0, 14, 8, 16, 1, 2, 0, 4, 0, 15, 8, 4, 0, 16, 8, 17, 1, 5, 0, 7, 0, 17, 8, 7, 0, 18, 8, 7, 0, 19, 8, - 4, 0, 19, 0, 4, 0, 37, 0, 18, 1, 6, 0, 0, 0, 20, 8, 0, 0, 81, 6, 49, 0,132, 0, 2, 0,106, 0, 2, 0, 13, 5, - 4, 0, 37, 0, 19, 1, 21, 0, 19, 1, 0, 0, 19, 1, 1, 0, 4, 0, 57, 0, 4, 0, 23, 0, 4, 0, 28, 0, 4, 0, 21, 8, - 4, 0, 22, 8, 4, 0, 23, 8, 13, 1, 24, 8, 0, 0, 20, 8, 4, 0, 25, 8, 4, 0, 26, 8, 18, 1, 90, 3, 15, 1, 27, 8, - 16, 1, 28, 8, 17, 1, 29, 8, 14, 1, 30, 8, 14, 1, 31, 8, 14, 1, 32, 8, 57, 0, 33, 8, 57, 0, 34, 8, 20, 1, 12, 0, - 0, 0,250, 1, 9, 0,220, 0, 0, 0,221, 0, 4, 0,224, 0, 4, 0,232, 0, 9, 0,225, 0, 7, 0,227, 0, 7, 0,228, 0, - 9, 0, 35, 8, 9, 0, 36, 8, 9, 0,229, 0, 9, 0,231, 0, 21, 1, 46, 0, 21, 1, 0, 0, 21, 1, 1, 0, 9, 0, 37, 8, - 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 19, 0, 4, 0, 17, 0, 4, 0, 23, 0, 4, 0, 88, 0, 4, 0, 38, 8, 4, 0, 39, 8, - 4, 0, 22, 8, 4, 0, 23, 8, 4, 0, 40, 8, 4, 0,243, 0, 4, 0, 41, 8, 4, 0, 42, 8, 7, 0, 43, 8, 7, 0, 44, 8, - 4, 0,121, 0, 4, 0, 45, 8, 19, 1, 46, 8, 36, 0, 80, 0, 46, 0,129, 0, 32, 0, 47, 8, 49, 0,132, 0, 7, 0, 48, 8, - 7, 0, 49, 8, 20, 1, 59, 1, 21, 1, 50, 8, 21, 1, 51, 8, 21, 1, 52, 8, 12, 0, 53, 8, 22, 1, 54, 8, 9, 0, 55, 8, - 7, 0,248, 3, 7, 0, 56, 8, 7, 0, 57, 8, 4, 0, 58, 8, 4, 0, 59, 8, 7, 0, 60, 8, 9, 0, 61, 8, 4, 0, 62, 8, - 4, 0, 63, 8, 4, 0, 64, 8, 7, 0, 65, 8, 23, 1, 4, 0, 23, 1, 0, 0, 23, 1, 1, 0, 12, 0, 66, 8, 21, 1, 67, 8, -205, 0, 11, 0, 12, 0, 68, 8, 12, 0, 53, 8, 12, 0, 69, 8, 21, 1, 70, 8, 0, 0, 71, 8, 0, 0, 72, 8, 4, 0, 73, 8, - 4, 0, 74, 8, 4, 0, 75, 8, 4, 0, 37, 0, 24, 0, 76, 8, 24, 1, 4, 0, 7, 0, 77, 8, 7, 0, 64, 3, 2, 0, 78, 8, - 2, 0, 79, 8, 25, 1, 6, 0, 7, 0, 80, 8, 7, 0, 81, 8, 7, 0, 82, 8, 7, 0, 83, 8, 4, 0, 84, 8, 4, 0, 85, 8, - 26, 1, 13, 0, 7, 0, 86, 8, 7, 0, 87, 8, 7, 0, 88, 8, 7, 0, 89, 8, 7, 0, 90, 8, 7, 0, 91, 8, 7, 0, 92, 8, - 7, 0, 93, 8, 7, 0, 94, 8, 7, 0, 95, 8, 4, 0,225, 2, 4, 0, 96, 8, 4, 0, 97, 8, 27, 1, 2, 0, 7, 0, 86, 5, - 7, 0, 37, 0, 28, 1, 5, 0, 7, 0, 98, 8, 7, 0, 99, 8, 4, 0, 90, 0, 4, 0,181, 2, 4, 0,100, 8, 29, 1, 6, 0, - 29, 1, 0, 0, 29, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,101, 8, 2, 0, 57, 0, 30, 1, 8, 0, 30, 1, 0, 0, - 30, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,101, 8, 2, 0, 57, 0, 7, 0, 23, 0, 7, 0,121, 0, 31, 1, 45, 0, - 31, 1, 0, 0, 31, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,101, 8, 2, 0,239, 0, 2, 0, 34, 4, 2, 0,102, 8, - 7, 0,103, 8, 7, 0, 89, 0, 7, 0,238, 2, 4, 0,104, 8, 4, 0, 82, 0, 4, 0,183, 2, 7, 0,105, 8, 7, 0,106, 8, - 7, 0,107, 8, 7, 0,108, 8, 7, 0,109, 8, 7, 0,110, 8, 7, 0,235, 2, 7, 0, 56, 1, 7, 0,111, 8, 7, 0,112, 8, - 7, 0, 37, 0, 7, 0,113, 8, 7, 0,114, 8, 7, 0,115, 8, 2, 0,116, 8, 2, 0,117, 8, 2, 0,118, 8, 2, 0,119, 8, - 2, 0,120, 8, 2, 0,121, 8, 2, 0,122, 8, 2, 0,123, 8, 2, 0, 17, 2, 2, 0,124, 8, 2, 0, 14, 2, 2, 0,125, 8, - 0, 0,126, 8, 0, 0,127, 8, 7, 0,237, 0, 32, 1,128, 8, 67, 0,229, 1, 33, 1, 16, 0, 33, 1, 0, 0, 33, 1, 1, 0, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,101, 8, 2, 0,239, 0, 7, 0,230, 2, 7, 0,231, 2, 7, 0,232, 2, 7, 0, 63, 2, - 7, 0,233, 2, 7, 0,234, 2, 7, 0,129, 8, 7, 0,235, 2, 7, 0,237, 2, 7, 0,238, 2,231, 0, 5, 0, 2, 0, 17, 0, - 2, 0, 12, 8, 2, 0, 19, 0, 2, 0,130, 8, 27, 0,156, 6,230, 0, 3, 0, 4, 0, 69, 0, 4, 0,131, 8,231, 0, 2, 0, - 34, 1, 7, 0, 34, 1, 0, 0, 34, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, 9, 0,132, 8, - 35, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0,133, 8, 4, 0,134, 8, 4, 0, 37, 0, 36, 1, 4, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 2, 0, 43, 0, 2, 0, 70, 0, 37, 1, 4, 0, 0, 0, 20, 0, 66, 0,135, 8, 7, 0, 76, 1, 7, 0, 37, 0, - 38, 1, 6, 0, 2, 0,136, 8, 2, 0,137, 8, 2, 0, 17, 0, 2, 0,138, 8, 0, 0,139, 8, 0, 0,140, 8, 39, 1, 5, 0, - 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0,141, 8, 0, 0,142, 8, 40, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, - 0, 0, 20, 0, 41, 1, 4, 0, 2, 0,143, 8, 2, 0,144, 8, 2, 0, 19, 0, 2, 0, 37, 0, 42, 1, 6, 0, 0, 0, 20, 0, - 0, 0,145, 8, 2, 0,146, 8, 2, 0,235, 2, 2, 0, 69, 1, 2, 0, 70, 0, 43, 1, 5, 0, 0, 0, 20, 0, 7, 0, 64, 3, - 7, 0,128, 4, 2, 0, 19, 0, 2, 0,195, 2, 44, 1, 3, 0, 0, 0, 20, 0, 4, 0,183, 2, 4, 0,143, 8, 45, 1, 7, 0, - 0, 0, 20, 0, 7, 0,128, 4, 0, 0,147, 8, 0, 0,148, 8, 2, 0, 69, 1, 2, 0, 43, 0, 4, 0,149, 8, 46, 1, 4, 0, - 0, 0,150, 8, 0, 0,151, 8, 4, 0, 17, 0, 7, 0,199, 2, 47, 1, 3, 0, 32, 0,152, 8, 0, 0,153, 8, 0, 0,154, 8, - 48, 1, 18, 0, 48, 1, 0, 0, 48, 1, 1, 0, 2, 0, 17, 0, 2, 0,155, 8, 2, 0, 19, 0, 2, 0,156, 8, 2, 0,157, 8, - 2, 0,158, 8, 2, 0, 43, 0, 2, 0, 70, 0, 0, 0, 20, 0, 9, 0, 2, 0, 49, 1,159, 8, 32, 0, 45, 0, 2, 0,104, 5, - 2, 0, 56, 8, 2, 0,160, 8, 2, 0, 37, 0, 50, 1, 11, 0, 0, 0, 20, 0, 0, 0, 17, 0, 0, 0,161, 8, 2, 0, 19, 0, - 2, 0,195, 2, 2, 0,162, 8, 4, 0,163, 8, 4, 0,164, 8, 4, 0,165, 8, 4, 0,166, 8, 4, 0,167, 8, 51, 1, 1, 0, - 0, 0,168, 8, 52, 1, 4, 0, 42, 0,123, 6, 0, 0,112, 7, 4, 0, 69, 1, 4, 0, 19, 0, 49, 1, 18, 0, 49, 1, 0, 0, - 49, 1, 1, 0, 49, 1,169, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,170, 8, 2, 0,158, 8, 2, 0,155, 8, 2, 0,171, 8, - 2, 0, 70, 0, 2, 0,226, 1, 0, 0, 20, 0, 9, 0, 2, 0, 53, 1,159, 8, 48, 1,172, 8, 2, 0, 15, 0, 2, 0,173, 8, - 4, 0,174, 8, 54, 1, 3, 0, 4, 0,209, 2, 4, 0, 37, 0, 32, 0, 45, 0, 55, 1, 12, 0,161, 0,175, 8, 2, 0, 17, 0, - 2, 0, 19, 0, 4, 0,103, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,176, 8, 2, 0,177, 8, 2, 0,178, 8, 2, 0,179, 8, - 2, 0,180, 8, 7, 0,181, 8, 56, 1, 13, 0, 2, 0, 19, 0, 2, 0,182, 8, 4, 0, 43, 0, 4, 0, 70, 0, 2, 0,183, 8, - 7, 0,248, 3, 7, 0,184, 8, 22, 1, 54, 8, 57, 1,185, 8, 2, 0, 17, 0, 2, 0,248, 1, 2, 0,224, 5, 2, 0,186, 8, - 58, 1, 11, 0, 4, 0,209, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 45, 0, 80, 0,187, 8, 0, 0, 20, 0, 7, 0,188, 8, - 7, 0,189, 8, 7, 0,133, 3, 2, 0,190, 8, 2, 0,191, 8, 59, 1, 5, 0, 2, 0, 17, 0, 2, 0, 43, 0, 4, 0, 37, 0, - 46, 0,129, 0, 32, 0, 93, 5, 60, 1, 5, 0, 4, 0, 37, 0, 4, 0, 17, 0, 0, 0, 20, 0, 0, 0,141, 8, 32, 0, 45, 0, - 61, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,155, 8, 2, 0,134, 3, 7, 0,192, 8, 7, 0,193, 8, 7, 0,178, 4, - 7, 0,146, 3, 7, 0,105, 3, 7, 0,108, 3, 7, 0,194, 8, 7, 0,195, 8, 32, 0,196, 8, 62, 1, 10, 0, 2, 0, 19, 0, - 2, 0, 17, 0, 4, 0,103, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,176, 8, 2, 0, 43, 0, 2, 0, 70, 0, 2, 0,226, 1, - 2, 0,248, 1, 63, 1, 8, 0, 32, 0, 45, 0, 7, 0,232, 2, 7, 0,197, 8, 7, 0,198, 8, 7, 0, 37, 0, 2, 0, 43, 0, - 2, 0,195, 2, 7, 0, 70, 0, 64, 1, 12, 0, 2, 0, 17, 0, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0,235, 2, 2, 0,209, 2, - 2, 0,199, 8, 4, 0, 37, 0, 7, 0,200, 8, 7, 0,201, 8, 7, 0,202, 8, 7, 0,203, 8, 0, 0,204, 8, 65, 1, 9, 0, - 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,103, 8, 4, 0, 89, 0, 0, 0, 20, 0, 2, 0,178, 4, 2, 0, 64, 0, 2, 0,205, 8, - 2, 0,206, 8, 66, 1, 7, 0, 4, 0,183, 2, 4, 0,207, 8, 4, 0,208, 8, 4, 0,209, 8, 7, 0,210, 8, 7, 0,211, 8, - 0, 0,147, 8, 67, 1, 7, 0, 0, 0,212, 8, 32, 0,213, 8, 0, 0,153, 8, 2, 0,214, 8, 2, 0, 43, 0, 4, 0, 70, 0, - 0, 0,154, 8, 68, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,103, 8, 4, 0, 89, 0, 0, 0,215, 8, 0, 0,216, 8, - 69, 1, 1, 0, 4, 0, 19, 0, 70, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,217, 8, 7, 0,218, 8, - 42, 0,123, 6, 71, 1, 4, 0, 0, 0, 59, 2, 2, 0, 19, 0, 4, 0, 17, 0, 32, 0, 45, 0, 72, 1, 2, 0, 4, 0, 17, 0, - 4, 0, 43, 6, 73, 1, 6, 0, 0, 0,150, 8, 0, 0,151, 8, 4, 0, 17, 0, 7, 0, 25, 2, 32, 0, 43, 3, 32, 0,219, 8, - 53, 1, 10, 0, 53, 1, 0, 0, 53, 1, 1, 0, 53, 1,169, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,155, 8, 2, 0,220, 8, - 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 45, 0, 74, 1, 10, 0, 7, 0,133, 3, 7, 0,221, 8, 7, 0,222, 8, 7, 0,223, 8, - 7, 0,224, 8, 4, 0, 19, 0, 7, 0,199, 8, 7, 0,225, 8, 7, 0,226, 8, 7, 0, 37, 0, 57, 1, 8, 0, 7, 0,227, 8, - 7, 0,228, 8, 7, 0,229, 8, 7, 0,230, 8, 7, 0,231, 8, 7, 0,232, 8, 7, 0,233, 8, 7, 0,234, 8, 22, 1, 16, 0, - 27, 0, 31, 0, 0, 0, 34, 0, 43, 0,147, 0, 9, 0,220, 0, 43, 0,235, 8, 36, 0, 80, 0, 7, 0,248, 3, 7, 0,236, 8, - 7, 0,184, 8, 7, 0,227, 8, 7, 0,228, 8, 7, 0,237, 8, 4, 0, 90, 0, 4, 0, 37, 0, 9, 0,238, 8, 9, 0,239, 8, - 75, 1, 15, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 8, 1,240, 8,217, 0, 62, 6, - 22, 1, 54, 8, 2, 0, 69, 1, 2, 0,182, 8, 2, 0, 78, 2, 2, 0, 79, 2, 2, 0, 19, 0, 2, 0,113, 6, 4, 0, 70, 0, - 76, 1, 6, 0, 76, 1, 0, 0, 76, 1, 1, 0, 32, 0, 45, 0, 9, 0,241, 8, 4, 0,244, 0, 4, 0, 37, 0, 67, 0, 4, 0, - 27, 0, 31, 0, 12, 0,242, 8, 4, 0,126, 0, 7, 0,243, 8, 77, 1, 27, 0, 77, 1, 0, 0, 77, 1, 1, 0, 26, 0,244, 8, - 77, 1, 38, 0, 12, 0,245, 8, 0, 0, 20, 0, 7, 0,246, 8, 7, 0,247, 8, 7, 0,248, 8, 7, 0,249, 8, 4, 0, 19, 0, - 7, 0,250, 8, 7, 0,251, 8, 7, 0,252, 8, 7, 0, 76, 1, 7, 0, 25, 2, 7, 0,253, 8, 7, 0,181, 2, 7, 0,254, 8, - 7, 0,255, 8, 7, 0, 0, 9, 7, 0, 1, 9, 7, 0, 2, 9, 7, 0,169, 0, 4, 0,126, 0, 2, 0,133, 5, 2, 0,178, 4, - 78, 1, 25, 0, 27, 0, 31, 0, 39, 0, 75, 0, 12, 0, 3, 9, 12, 0, 4, 9, 12, 0, 5, 9, 77, 1, 6, 9, 9, 0, 7, 9, - 9, 0, 8, 9, 4, 0, 19, 0, 4, 0, 19, 6, 2, 0,239, 2, 2, 0, 72, 6, 4, 0, 37, 0, 4, 0,126, 0, 4, 0, 9, 9, - 2, 0, 10, 9, 2, 0, 11, 9, 2, 0, 12, 9, 2, 0, 13, 9, 4, 0, 14, 9, 4, 0, 15, 9, 4, 0, 16, 9, 4, 0, 17, 9, - 4, 0, 18, 9, 4, 0, 19, 9, 79, 1, 2, 0, 7, 0,141, 2, 4, 0, 19, 0,165, 0, 5, 0, 79, 1, 20, 9, 4, 0,181, 2, - 4, 0, 21, 9, 4, 0, 22, 9, 4, 0, 19, 0,164, 0, 16, 0, 4, 0, 23, 9, 4, 0, 24, 9, 4, 0, 25, 9, 4, 0, 26, 9, - 2, 0, 27, 9, 2, 0, 28, 9, 2, 0, 29, 9, 2, 0,244, 0, 2, 0, 30, 9, 2, 0, 31, 9, 2, 0, 32, 9, 2, 0, 33, 9, - 4, 0, 34, 9, 4, 0, 35, 9, 4, 0, 36, 9, 4, 0, 37, 9, 80, 1, 44, 0, 80, 1, 0, 0, 80, 1, 1, 0, 26, 0,244, 8, - 12, 0,160, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0, 38, 9, 2, 0, 39, 9, 2, 0, 40, 9, 2, 0,119, 3, 2, 0, 41, 9, - 4, 0, 61, 2, 4, 0, 16, 9, 4, 0, 17, 9, 77, 1, 42, 9, 80, 1, 38, 0, 80, 1, 43, 9, 12, 0, 44, 9, 9, 0, 45, 9, - 9, 0, 46, 9, 9, 0, 47, 9, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 48, 9, 7, 0, 4, 2, 7, 0,110, 3, 7, 0,112, 3, - 2, 0,142, 3, 2, 0, 37, 0, 7, 0, 49, 9, 7, 0, 50, 9, 7, 0,115, 3, 7, 0, 51, 9, 7, 0, 52, 9, 7, 0, 53, 9, - 7, 0, 54, 9, 7, 0, 55, 9, 7, 0, 56, 9, 7, 0, 57, 9, 7, 0, 58, 9, 7, 0, 54, 2,165, 0, 98, 3, 32, 0, 59, 9, - 80, 1, 60, 9,162, 0, 14, 0, 12, 0, 61, 9, 81, 1, 62, 9, 2, 0, 19, 0, 2, 0, 63, 9, 7, 0, 90, 2, 7, 0, 64, 9, - 7, 0, 65, 9, 12, 0, 66, 9, 4, 0, 67, 9, 4, 0, 68, 9, 9, 0, 69, 9, 9, 0, 70, 9,164, 0, 97, 3, 0, 0, 71, 9, - 82, 1, 1, 0, 4, 0, 68, 9, 83, 1, 12, 0, 4, 0, 68, 9, 7, 0,167, 8, 2, 0, 72, 9, 2, 0, 73, 9, 7, 0, 74, 9, - 7, 0, 75, 9, 2, 0, 76, 9, 2, 0, 19, 0, 7, 0, 77, 9, 7, 0, 78, 9, 7, 0, 79, 9, 7, 0, 80, 9, 84, 1, 7, 0, - 84, 1, 0, 0, 84, 1, 1, 0, 12, 0, 81, 9, 4, 0, 19, 0, 4, 0, 82, 9, 0, 0,239, 3,254, 0, 83, 9,161, 0, 7, 0, - 27, 0, 31, 0, 12, 0, 84, 9, 12, 0, 61, 9, 12, 0, 85, 9, 12, 0,100, 0, 4, 0, 19, 0, 4, 0, 86, 9,221, 0, 5, 0, - 27, 0, 87, 9, 12, 0, 61, 9, 67, 0, 88, 9, 4, 0, 89, 9, 4, 0, 19, 0, 85, 1, 13, 0,216, 0, 0, 0,216, 0, 1, 0, - 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6,217, 0, 62, 6,161, 0, 93, 3,221, 0, 90, 9, 0, 0, 69, 1, - 0, 0, 65, 6, 2, 0, 19, 0, 7, 0, 91, 9, 86, 1, 8, 0, 86, 1, 0, 0, 86, 1, 1, 0, 84, 1, 92, 9, 36, 0, 80, 0, - 12, 0, 99, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0, 93, 9, 87, 1, 5, 0, 87, 1, 0, 0, 87, 1, 1, 0, 36, 0, 80, 0, - 2, 0, 19, 0, 0, 0, 94, 9, 88, 1, 14, 0, 88, 1, 0, 0, 88, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, - 0, 0, 95, 9, 0, 0, 96, 9, 0, 0, 94, 9, 7, 0, 97, 9, 7, 0, 98, 9, 4, 0, 37, 0, 36, 0, 80, 0, 7, 0, 99, 9, - 7, 0,100, 9, 89, 1, 9, 0, 89, 1, 0, 0, 89, 1, 1, 0, 32, 0,101, 9, 0, 0,242, 2, 7, 0,102, 9, 2, 0,103, 9, - 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,104, 9, 90, 1, 7, 0, 42, 0,123, 6, 26, 0,244, 8, 4, 0, 19, 0, 4, 0,105, 9, - 12, 0,106, 9, 32, 0,101, 9, 0, 0,242, 2, 91, 1, 15, 0, 32, 0,101, 9, 2, 0,107, 9, 2, 0, 19, 0, 2, 0,108, 9, - 2, 0,109, 9, 0, 0,242, 2, 32, 0,110, 9, 0, 0,111, 9, 7, 0,112, 9, 7, 0, 25, 2, 7, 0,113, 9, 7, 0,114, 9, - 2, 0, 17, 0, 2, 0, 69, 1, 7, 0, 76, 1, 92, 1, 6, 0, 32, 0,101, 9, 7, 0, 20, 9, 2, 0,115, 9, 2, 0,116, 9, - 2, 0, 19, 0, 2, 0,117, 9, 93, 1, 6, 0, 32, 0,101, 9, 4, 0,118, 9, 4, 0,119, 9, 4, 0, 90, 0, 4, 0, 37, 0, - 0, 0,242, 2, 94, 1, 4, 0, 32, 0,101, 9, 4, 0, 19, 0, 4, 0,118, 9, 0, 0,242, 2, 95, 1, 4, 0, 32, 0,101, 9, - 4, 0, 19, 0, 4, 0,118, 9, 0, 0,242, 2, 96, 1, 4, 0, 32, 0,101, 9, 4, 0, 19, 0, 4, 0,118, 9, 0, 0,242, 2, - 97, 1, 2, 0, 4, 0, 19, 0, 7, 0,248, 3, 98, 1, 2, 0, 32, 0,101, 9, 0, 0,242, 2, 99, 1, 10, 0, 32, 0,101, 9, - 4, 0,120, 9, 7, 0,120, 0, 4, 0, 19, 0, 2, 0,116, 6, 2, 0,121, 9, 2, 0, 43, 0, 2, 0, 70, 0, 7, 0,122, 9, - 0, 0,242, 2,100, 1, 10, 0, 32, 0,101, 9, 2, 0, 17, 0, 2, 0, 42, 4, 4, 0, 88, 0, 4, 0, 89, 0, 7, 0,197, 8, - 7, 0,198, 8, 4, 0, 37, 0,161, 0,175, 8, 0, 0,242, 2,101, 1, 4, 0, 32, 0,101, 9, 4, 0,120, 3, 4, 0,123, 9, - 0, 0,242, 2,102, 1, 4, 0, 32, 0,101, 9, 4, 0,120, 3, 4, 0, 37, 0, 0, 0,242, 2,103, 1, 6, 0, 32, 0,101, 9, - 7, 0,120, 0, 7, 0, 55, 3, 4, 0,124, 9, 2, 0,120, 3, 2, 0,121, 3,104, 1, 6, 0, 32, 0,101, 9, 4, 0,125, 9, - 4, 0,126, 9, 7, 0,127, 9, 7, 0,128, 9, 0, 0,242, 2,105, 1, 16, 0, 32, 0,101, 9, 32, 0, 43, 9, 4, 0, 17, 0, - 7, 0,129, 9, 7, 0,130, 9, 7, 0,131, 9, 7, 0,132, 9, 7, 0,133, 9, 7, 0,134, 9, 7, 0,135, 9, 7, 0,136, 9, - 7, 0,137, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0, 70, 0,106, 1, 3, 0, 32, 0,101, 9, 4, 0, 19, 0, - 4, 0, 17, 2,107, 1, 5, 0, 32, 0,101, 9, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,138, 9, 0, 0,242, 2,108, 1, 10, 0, - 32, 0,101, 9, 0, 0,242, 2, 2, 0,139, 9, 2, 0,140, 9, 0, 0,141, 9, 0, 0,142, 9, 7, 0,143, 9, 7, 0,144, 9, - 7, 0,145, 9, 7, 0,146, 9,109, 1, 5, 0, 32, 0,101, 9, 0, 0,242, 2, 7, 0,189, 2, 2, 0,147, 9, 2, 0, 19, 0, -110, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,148, 9, 7, 0,149, 9, 2, 0, 19, 0, - 2, 0, 17, 2,111, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,148, 9, 7, 0,149, 9, - 2, 0, 19, 0, 2, 0, 17, 2,112, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,148, 9, - 7, 0,149, 9, 2, 0, 19, 0, 2, 0, 17, 2,113, 1, 7, 0, 32, 0,101, 9, 0, 0,242, 2, 7, 0, 76, 1, 7, 0, 85, 1, - 2, 0, 19, 0, 2, 0, 69, 1, 4, 0, 37, 0,114, 1, 5, 0, 32, 0, 43, 3, 7, 0, 76, 1, 2, 0, 47, 3, 0, 0, 49, 3, - 0, 0,150, 9,115, 1, 10, 0,115, 1, 0, 0,115, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0,151, 9, 7, 0, 19, 1, - 7, 0, 20, 1, 2, 0, 81, 9, 2, 0,152, 9, 32, 0, 45, 0,116, 1, 22, 0,116, 1, 0, 0,116, 1, 1, 0, 2, 0, 19, 0, - 2, 0, 69, 1, 2, 0,153, 9, 2, 0,154, 9, 36, 0, 80, 0,161, 0,175, 8, 32, 0,161, 0, 7, 0, 88, 0, 7, 0, 89, 0, - 7, 0,155, 9, 7, 0,156, 9, 7, 0,157, 9, 7, 0,158, 9, 7, 0,228, 2, 7, 0,159, 9, 7, 0,177, 8, 7, 0,160, 9, - 0, 0,161, 9, 0, 0,162, 9, 12, 0,101, 3,117, 1, 8, 0, 7, 0, 32, 2, 7, 0,197, 8, 7, 0,198, 8, 9, 0, 2, 0, - 2, 0,163, 9, 2, 0,164, 9, 2, 0,165, 9, 2, 0,166, 9,118, 1, 18, 0,118, 1, 0, 0,118, 1, 1, 0,118, 1,167, 9, - 0, 0, 20, 0,117, 1,168, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,169, 9, 2, 0,170, 9, 2, 0,171, 9, 2, 0,172, 9, - 4, 0, 43, 0, 7, 0,173, 9, 7, 0,174, 9, 4, 0,175, 9, 4, 0,176, 9,118, 1,177, 9,119, 1,178, 9,120, 1, 33, 0, -120, 1, 0, 0,120, 1, 1, 0,120, 1,179, 9, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 21, 8, 2, 0, 56, 8, - 2, 0,180, 9, 2, 0,128, 0, 2, 0,170, 9, 2, 0, 12, 8, 12, 0,170, 8, 12, 0,181, 9, 27, 0,156, 6, 9, 0,182, 9, - 7, 0,173, 9, 7, 0,174, 9, 7, 0, 63, 2, 7, 0,183, 9, 2, 0,184, 9, 2, 0,185, 9, 7, 0,186, 9, 7, 0,187, 9, - 2, 0,188, 9, 2, 0,189, 9, 9, 0,190, 9, 24, 0,191, 9, 24, 0,192, 9, 24, 0,193, 9,121, 1,148, 0,122, 1,194, 9, -123, 1,195, 9,119, 1, 8, 0,119, 1, 0, 0,119, 1, 1, 0,120, 1,196, 9,120, 1,197, 9,118, 1,198, 9,118, 1,177, 9, - 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 22, 0, 27, 0, 31, 0, 39, 0, 75, 0,163, 0, 96, 3, 12, 0,199, 9, 12, 0,200, 9, -117, 1,201, 9, 12, 0,202, 9, 4, 0, 17, 0, 4, 0,203, 9, 4, 0,204, 9, 4, 0,205, 9, 4, 0, 19, 0, 4, 0, 37, 0, - 12, 0,206, 9,123, 1,207, 9, 4, 0,208, 9, 9, 0,209, 9, 9, 0,210, 9, 4, 0,211, 9, 9, 0,212, 9, 9, 0,213, 9, - 9, 0,214, 9,124, 1, 6, 0, 4, 0,119, 0, 4, 0,121, 0, 4, 0, 12, 8, 0, 0,215, 9, 0, 0,216, 9, 2, 0, 37, 0, -125, 1, 16, 0, 2, 0,220, 7, 2, 0,221, 7, 2, 0,217, 9, 2, 0,222, 8, 2, 0,218, 9, 2, 0, 68, 0, 7, 0,227, 2, - 7, 0,219, 9, 7, 0,220, 9, 2, 0, 91, 1, 0, 0,221, 9, 0, 0,222, 9, 2, 0,223, 9, 2, 0, 37, 0, 4, 0,224, 9, - 4, 0,225, 9,126, 1, 9, 0, 7, 0,226, 9, 7, 0,227, 9, 7, 0,237, 8, 7, 0, 64, 3, 7, 0,228, 9, 7, 0, 78, 6, - 2, 0, 62, 3, 0, 0,229, 9, 0, 0, 37, 0,127, 1, 4, 0, 7, 0,230, 9, 7, 0,231, 9, 2, 0, 62, 3, 2, 0, 37, 0, -128, 1, 3, 0, 7, 0,232, 9, 7, 0,233, 9, 7, 0, 15, 0,129, 1, 7, 0, 0, 0,250, 1, 2, 0, 11, 5, 2, 0, 12, 5, - 2, 0, 13, 5, 2, 0,200, 4, 4, 0,121, 0, 4, 0, 40, 4,130, 1, 9, 0, 7, 0,234, 9, 7, 0,235, 9, 7, 0,236, 9, - 7, 0, 74, 2, 7, 0,237, 9, 7, 0,238, 9, 7, 0,239, 9, 2, 0,240, 9, 2, 0,241, 9,131, 1, 4, 0, 2, 0,242, 9, - 2, 0,243, 9, 2, 0,244, 9, 2, 0,245, 9,132, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,133, 1, 2, 0, 0, 0,163, 0, - 0, 0,246, 9,134, 1, 1, 0, 0, 0, 20, 0,135, 1, 10, 0, 0, 0,247, 9, 0, 0,248, 9, 0, 0, 71, 6, 0, 0,249, 9, - 2, 0,217, 9, 2, 0,250, 9, 7, 0,251, 9, 7, 0,252, 9, 7, 0,253, 9, 7, 0,159, 9,136, 1, 2, 0, 9, 0,254, 9, - 9, 0,255, 9,137, 1, 11, 0, 0, 0, 13, 5, 0, 0, 17, 0, 0, 0, 62, 3, 0, 0, 64, 3, 0, 0, 0, 10, 0, 0,106, 0, - 0, 0, 59, 2, 7, 0, 1, 10, 7, 0, 2, 10, 7, 0, 3, 10, 7, 0, 4, 10,138, 1, 8, 0, 7, 0,136, 8, 7, 0,120, 0, - 7, 0,222, 9, 7, 0,146, 2, 7, 0, 5, 10, 7, 0,233, 0, 7, 0, 6, 10, 4, 0, 17, 0,139, 1, 4, 0, 2, 0, 7, 10, - 2, 0, 8, 10, 2, 0, 9, 10, 2, 0, 37, 0,140, 1, 7, 0, 7, 0, 10, 10, 7, 0,189, 2, 7, 0, 11, 10, 7, 0, 17, 8, - 7, 0, 18, 8, 7, 0, 19, 8, 7, 0, 12, 10,141, 1, 6, 0, 2, 0, 13, 10, 2, 0, 14, 10, 7, 0, 15, 10, 7, 0, 16, 10, - 7, 0, 17, 10, 7, 0, 18, 10,142, 1, 1, 0, 0, 0, 20, 0,143, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 19, 0, - 2, 0, 19, 10,144, 1, 10, 0, 2, 0,228, 3, 2, 0, 19, 0, 7, 0,128, 4, 7, 0, 20, 10, 7, 0, 21, 10, 7, 0, 22, 10, - 7, 0, 23, 10,143, 1, 24, 10,143, 1, 25, 10,143, 1, 26, 10, 63, 0, 11, 0, 4, 0, 19, 0, 4, 0, 64, 0, 4, 0, 27, 10, - 4, 0, 37, 0, 24, 0, 28, 10, 24, 0, 29, 10,144, 1, 30, 10, 7, 0, 31, 10, 7, 0, 32, 10, 7, 0, 33, 10, 7, 0, 34, 10, -234, 0, 10, 0, 4, 0, 81, 9, 4, 0, 35, 10, 7, 0, 36, 10, 7, 0, 37, 10, 7, 0, 38, 10, 7, 0, 39, 10, 7, 0, 10, 0, - 7, 0, 12, 0, 4, 0, 69, 1, 4, 0,232, 2,233, 0, 18, 0, 4, 0,124, 0, 4, 0, 40, 10, 4, 0, 41, 10, 7, 0, 42, 10, - 4, 0, 43, 10, 7, 0, 44, 10, 7, 0, 45, 10, 4, 0, 46, 10, 7, 0, 47, 10, 4, 0, 48, 10, 7, 0, 49, 10,234, 0, 50, 10, - 7, 0, 51, 10, 7, 0, 52, 10, 7, 0, 53, 10, 7, 0, 54, 10, 4, 0, 55, 10, 4, 0, 37, 0,145, 1, 4, 0, 47, 0,219, 2, - 7, 0, 56, 10, 7, 0,158, 1, 7, 0, 37, 0,194, 0, 18, 0, 27, 0, 31, 0,145, 1, 57, 10, 63, 0, 24, 10, 51, 0, 58, 10, - 2, 0, 19, 0, 2, 0,230, 5, 4, 0,106, 0, 7, 0, 59, 10, 7, 0, 71, 2, 4, 0, 60, 10, 7, 0, 61, 10, 7, 0, 62, 10, - 7, 0, 63, 10, 7, 0,158, 1, 0, 0, 64, 10, 0, 0, 65, 10, 0, 0, 66, 10, 0, 0, 70, 0,146, 1, 10, 0, 4, 0, 17, 0, - 4, 0,120, 0, 4, 0, 19, 0, 4, 0,182, 3, 4, 0, 67, 10, 4, 0, 68, 10, 4, 0, 69, 10, 0, 0, 92, 0, 0, 0, 20, 0, - 9, 0, 2, 0,147, 1, 1, 0, 0, 0, 5, 8, 91, 0, 7, 0,146, 1, 70, 10, 4, 0, 71, 10, 4, 0, 72, 10, 4, 0, 73, 10, - 4, 0, 37, 0, 9, 0, 74, 10,147, 1, 75, 10,148, 1, 5, 0, 7, 0,141, 2, 7, 0,209, 2, 7, 0, 25, 2, 2, 0,117, 2, - 2, 0, 37, 0,149, 1, 5, 0, 7, 0,141, 2, 7, 0, 76, 10, 7, 0, 77, 10, 7, 0, 78, 10, 7, 0,209, 2,150, 1, 5, 0, - 32, 0, 79, 10,151, 1, 22, 0, 7, 0,200, 5, 7, 0, 80, 10, 7, 0, 57, 0,152, 1, 7, 0, 4, 0, 81, 10, 4, 0, 82, 10, - 4, 0, 83, 10, 7, 0, 84, 10, 7, 0, 85, 10, 7, 0, 86, 10, 7, 0, 57, 0,153, 1, 8, 0,153, 1, 0, 0,153, 1, 1, 0, - 32, 0, 45, 0, 4, 0,252, 0, 2, 0, 19, 0, 2, 0, 69, 1, 7, 0,209, 2, 7, 0,144, 8,154, 1, 6, 0,154, 1, 0, 0, -154, 1, 1, 0, 32, 0, 45, 0, 2, 0,194, 2, 2, 0, 19, 0, 2, 0, 87, 10,155, 1, 17, 0,149, 1,176, 3,149, 1, 88, 10, -148, 1, 89, 10,149, 1,128, 8,150, 1, 90, 10, 4, 0, 82, 0, 7, 0,209, 2, 7, 0,238, 2, 7, 0, 91, 10, 4, 0, 81, 10, - 4, 0, 92, 10, 7, 0, 85, 10, 7, 0, 86, 10, 7, 0,106, 0, 4, 0, 93, 10, 2, 0, 19, 0, 2, 0, 94, 10,156, 1, 9, 0, - 7, 0, 95, 10, 7, 0,248, 0, 7, 0, 96, 10, 7, 0, 97, 10, 7, 0, 98, 10, 7, 0, 99, 10, 7, 0,100, 10, 7, 0,101, 10, - 7, 0,102, 10,157, 1,111, 0, 27, 0, 31, 0, 39, 0, 75, 0,158, 1,103, 10,156, 1,104, 10,172, 0, 62, 4, 4, 0, 19, 0, - 2, 0, 17, 0, 2, 0,139, 9, 2, 0,105, 10, 2, 0,106, 10, 2, 0,142, 3, 2, 0,107, 10, 2, 0,108, 10, 2, 0,109, 10, - 2, 0,110, 10, 2, 0,111, 10, 2, 0,112, 10, 2, 0,113, 10, 2, 0,114, 10, 2, 0,112, 5, 2, 0,115, 10, 2, 0,116, 10, - 2, 0,117, 10, 2, 0,118, 10, 2, 0,119, 10, 2, 0, 14, 2, 2, 0,121, 8, 2, 0, 96, 8, 2, 0,120, 10, 2, 0,121, 10, - 2, 0,192, 3, 2, 0,193, 3, 2, 0,122, 10, 2, 0,123, 10, 2, 0,124, 10, 2, 0,125, 10, 7, 0,126, 10, 7, 0,127, 10, - 7, 0,128, 10, 2, 0, 61, 5, 2, 0,129, 10, 7, 0,130, 10, 7, 0,131, 10, 7, 0,132, 10, 7, 0,103, 8, 7, 0, 89, 0, - 7, 0,238, 2, 7, 0,109, 8, 7, 0,133, 10, 7, 0,134, 10, 7, 0,135, 10, 4, 0,104, 8, 4, 0,102, 8, 4, 0,136, 10, - 7, 0,105, 8, 7, 0,106, 8, 7, 0,107, 8, 7, 0,137, 10, 7, 0,138, 10, 7, 0,139, 10, 7, 0,140, 10, 7, 0,141, 10, - 7, 0, 57, 0, 7, 0,142, 10, 7, 0,143, 10, 7, 0,144, 10, 7, 0,145, 10, 7, 0,133, 3, 7, 0,106, 0, 7, 0,146, 10, - 7, 0,147, 10, 7, 0,148, 10, 7, 0,149, 10, 7, 0,150, 10, 7, 0,151, 10, 7, 0,152, 10, 4, 0,153, 10, 4, 0,154, 10, - 7, 0,155, 10, 7, 0,156, 10, 7, 0,157, 10, 7, 0,158, 10, 7, 0,159, 10, 7, 0,207, 0, 7, 0,160, 10, 7, 0,219, 3, - 7, 0,217, 3, 7, 0,218, 3, 7, 0,161, 10, 7, 0,162, 10, 7, 0,163, 10, 7, 0,164, 10, 7, 0,165, 10, 7, 0,166, 10, - 7, 0,167, 10, 7, 0,168, 10, 7, 0,169, 10, 7, 0,170, 10, 7, 0,171, 10, 7, 0,172, 10, 7, 0,173, 10, 4, 0,174, 10, - 4, 0,175, 10, 67, 0,165, 3, 12, 0,176, 10, 67, 0,177, 10, 32, 0,178, 10, 32, 0,179, 10, 36, 0, 80, 0,167, 0, 61, 1, -167, 0,180, 10,147, 0, 44, 0,147, 0, 0, 0,147, 0, 1, 0,157, 1,181, 10,155, 1,182, 10,152, 1, 43, 9,174, 0,244, 3, - 9, 0,245, 3,159, 1,183, 10,159, 1,184, 10, 12, 0,185, 10, 12, 0,186, 10,132, 0,187, 10,140, 0,188, 10,140, 0,189, 10, - 32, 0,190, 10, 32, 0,191, 10, 32, 0, 38, 0, 12, 0,106, 9, 0, 0, 20, 0, 7, 0,237, 0, 7, 0, 9, 3, 7, 0,192, 10, - 4, 0,183, 2, 4, 0, 57, 0, 4, 0, 19, 0, 4, 0,104, 8, 4, 0,193, 10, 4, 0,194, 10, 4, 0,195, 10, 2, 0,244, 0, - 2, 0,196, 10, 2, 0,197, 10, 2, 0,198, 10, 0, 0,199, 10, 2, 0,200, 10, 2, 0,201, 10, 2, 0,202, 10, 9, 0,203, 10, -136, 0, 61, 4, 12, 0,252, 2, 12, 0,204, 10,160, 1,205, 10,161, 1,206, 10, 7, 0,207, 10,134, 0, 37, 0,162, 1,238, 8, - 7, 0, 31, 4, 7, 0,208, 10, 7, 0,209, 10, 7, 0,200, 5, 7, 0,143, 3, 7, 0,133, 3, 7, 0,210, 10, 7, 0, 73, 2, - 7, 0,211, 10, 7, 0,212, 10, 7, 0,213, 10, 7, 0,214, 10, 7, 0,215, 10, 7, 0,216, 10, 7, 0, 32, 4, 7, 0,217, 10, - 7, 0,218, 10, 7, 0,219, 10, 7, 0, 33, 4, 7, 0, 29, 4, 7, 0, 30, 4, 7, 0,220, 10, 7, 0,221, 10, 4, 0,222, 10, - 4, 0, 90, 0, 4, 0,223, 10, 4, 0,224, 10, 2, 0,225, 10, 2, 0,226, 10, 2, 0,227, 10, 2, 0,228, 10, 2, 0,229, 10, - 2, 0,230, 10, 2, 0,231, 10, 2, 0,178, 4,172, 0, 62, 4,135, 0, 9, 0,162, 1,232, 10, 7, 0,233, 10, 7, 0,234, 10, - 7, 0,230, 1, 7, 0,235, 10, 4, 0, 90, 0, 2, 0,236, 10, 2, 0,237, 10, 67, 0,229, 1,163, 1, 4, 0, 7, 0, 5, 0, - 7, 0, 6, 0, 7, 0, 7, 0, 7, 0,238, 10,164, 1, 6, 0,164, 1, 0, 0,164, 1, 1, 0,163, 1, 20, 9, 4, 0,250, 0, - 2, 0,239, 10, 2, 0, 19, 0,165, 1, 5, 0,165, 1, 0, 0,165, 1, 1, 0, 12, 0,240, 10, 4, 0,241, 10, 4, 0, 19, 0, -166, 1, 9, 0,166, 1, 0, 0,166, 1, 1, 0, 12, 0,119, 0,165, 1,242, 10, 4, 0, 19, 0, 2, 0,239, 10, 2, 0,243, 10, - 7, 0, 91, 0, 0, 0,244, 10,163, 0, 6, 0, 27, 0, 31, 0, 12, 0, 29, 5, 4, 0, 19, 0, 2, 0,245, 10, 2, 0,246, 10, - 9, 0,247, 10,167, 1, 7, 0,167, 1, 0, 0,167, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, 0, 0,248, 10, - 0, 0,249, 10,168, 1, 6, 0, 12, 0,250, 10, 4, 0,251, 10, 4, 0,252, 10, 4, 0, 19, 0, 4, 0, 37, 0,214, 0,253, 10, -169, 1, 3, 0, 7, 0, 86, 5, 7, 0,254, 10, 7, 0,255, 10,170, 1, 17, 0, 27, 0, 31, 0,171, 1, 0, 11,171, 1, 1, 11, - 12, 0, 2, 11, 4, 0, 3, 11, 2, 0, 4, 11, 2, 0, 5, 11, 12, 0, 6, 11, 12, 0, 7, 11,168, 1, 8, 11, 12, 0, 9, 11, - 12, 0, 10, 11, 12, 0, 11, 11, 12, 0, 12, 11,172, 1, 13, 11, 12, 0, 14, 11,214, 0, 15, 11,171, 1, 31, 0,171, 1, 0, 0, -171, 1, 1, 0, 9, 0, 16, 11, 4, 0,198, 7, 2, 0, 17, 11, 2, 0, 37, 0,219, 0, 61, 6,219, 0, 18, 11, 0, 0, 19, 11, - 2, 0, 20, 11, 2, 0, 21, 11, 2, 0,220, 7, 2, 0,221, 7, 2, 0, 22, 11, 2, 0, 23, 11, 2, 0,182, 3, 2, 0,184, 6, - 2, 0, 24, 11, 2, 0, 25, 11, 2, 0,208, 9,173, 1, 26, 11,174, 1, 27, 11,175, 1, 28, 11, 4, 0, 29, 11, 4, 0, 30, 11, - 9, 0, 31, 11, 12, 0, 7, 11, 12, 0,240, 7, 12, 0, 32, 11, 12, 0, 33, 11, 12, 0, 34, 11,176, 1, 17, 0,176, 1, 0, 0, -176, 1, 1, 0, 0, 0, 35, 11, 26, 0, 30, 0, 2, 0, 36, 11, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0, 37, 11, 2, 0, 38, 11, - 2, 0, 39, 11, 2, 0, 40, 11, 2, 0, 41, 11, 2, 0, 19, 0, 2, 0, 42, 11, 2, 0, 31, 0, 2, 0, 37, 0,177, 1, 43, 11, -178, 1, 10, 0,178, 1, 0, 0,178, 1, 1, 0, 12, 0, 44, 11, 0, 0, 35, 11, 2, 0, 45, 11, 2, 0, 46, 11, 2, 0, 19, 0, - 2, 0, 47, 11, 4, 0, 48, 11, 9, 0, 49, 11,172, 1, 7, 0,172, 1, 0, 0,172, 1, 1, 0, 0, 0, 35, 11, 0, 0, 50, 11, - 12, 0,150, 7, 4, 0, 51, 11, 4, 0, 19, 0,227, 0, 14, 0,227, 0, 0, 0,227, 0, 1, 0, 0, 0, 35, 11, 26, 0, 30, 0, -179, 1,214, 7, 9, 0, 52, 11, 9, 0, 53, 11,177, 1, 43, 11,168, 1, 54, 11, 12, 0, 55, 11,227, 0, 56, 11, 7, 1, 97, 6, - 2, 0, 19, 0, 2, 0,178, 4,180, 1, 8, 0,180, 1, 0, 0,180, 1, 1, 0, 9, 0, 2, 0, 9, 0, 57, 11, 0, 0,239, 3, - 2, 0, 17, 0, 2, 0, 19, 0, 7, 0, 58, 11,181, 1, 5, 0, 7, 0, 59, 11, 4, 0, 60, 11, 4, 0, 61, 11, 4, 0, 69, 1, - 4, 0, 19, 0,182, 1, 6, 0, 7, 0, 62, 11, 7, 0, 63, 11, 7, 0, 64, 11, 7, 0, 65, 11, 4, 0, 17, 0, 4, 0, 19, 0, -183, 1, 5, 0, 7, 0,197, 8, 7, 0,198, 8, 7, 0,209, 2, 2, 0, 28, 2, 2, 0, 29, 2,184, 1, 5, 0,183, 1, 2, 0, - 4, 0, 54, 0, 7, 0, 66, 11, 7, 0,197, 8, 7, 0,198, 8,185, 1, 4, 0, 2, 0, 67, 11, 2, 0, 68, 11, 2, 0, 69, 11, - 2, 0, 70, 11,186, 1, 2, 0, 42, 0,150, 6, 26, 0,244, 8,187, 1, 3, 0, 24, 0, 71, 11, 4, 0, 19, 0, 4, 0, 37, 0, -188, 1, 6, 0, 7, 0,106, 0, 7, 0,211, 2, 7, 0, 72, 11, 7, 0, 37, 0, 2, 0,243, 0, 2, 0, 73, 11,189, 1, 5, 0, - 7, 0, 74, 11, 7, 0,120, 0, 7, 0, 21, 9, 7, 0, 22, 9, 4, 0, 19, 0,190, 1, 6, 0, 27, 0,156, 6, 0, 0, 75, 11, - 0, 0, 76, 11, 2, 0, 77, 11, 2, 0, 19, 0, 4, 0, 78, 11,191, 1, 7, 0,191, 1, 0, 0,191, 1, 1, 0, 0, 0,239, 3, -190, 1, 79, 11, 2, 0, 80, 11, 2, 0, 17, 0, 7, 0, 61, 0,192, 1, 7, 0, 12, 0, 81, 11, 0, 0, 82, 11, 9, 0, 83, 11, - 7, 0, 61, 0, 7, 0, 58, 11, 4, 0, 17, 0, 4, 0, 19, 0,193, 1, 3, 0, 7, 0, 84, 11, 4, 0, 19, 0, 4, 0, 37, 0, -194, 1, 15, 0,194, 1, 0, 0,194, 1, 1, 0, 84, 1, 92, 9,192, 1, 62, 0, 12, 0,101, 3, 35, 0, 50, 0,193, 1, 85, 11, - 4, 0, 54, 0, 7, 0, 61, 0, 2, 0, 19, 0, 2, 0, 12, 1, 4, 0, 86, 11, 0, 0, 75, 11, 4, 0, 87, 11, 7, 0, 88, 11, -195, 1, 2, 0, 0, 0, 89, 11, 0, 0, 90, 11,196, 1, 4, 0,196, 1, 0, 0,196, 1, 1, 0,161, 0, 43, 3, 12, 0, 91, 11, -197, 1, 24, 0,197, 1, 0, 0,197, 1, 1, 0, 12, 0, 92, 11,161, 0,175, 8,196, 1, 93, 11, 12, 0, 94, 11, 12, 0,101, 3, - 0, 0,239, 3, 7, 0, 58, 11, 7, 0, 95, 11, 7, 0, 88, 0, 7, 0, 89, 0, 7, 0,155, 9, 7, 0,156, 9, 7, 0,228, 2, - 7, 0,159, 9, 7, 0,177, 8, 7, 0,160, 9, 2, 0, 96, 11, 2, 0, 97, 11, 2, 0, 43, 0, 2, 0, 17, 0, 4, 0, 19, 0, - 4, 0, 70, 0,198, 1, 6, 0,198, 1, 0, 0,198, 1, 1, 0, 12, 0, 92, 11, 4, 0, 19, 0, 4, 0,145, 2, 0, 0,239, 3, -199, 1, 11, 0,199, 1, 0, 0,199, 1, 1, 0, 27, 0,156, 6, 0, 0, 98, 11, 4, 0, 78, 11, 2, 0, 99, 11, 2, 0, 37, 0, - 0, 0, 75, 11, 4, 0, 86, 11, 2, 0, 19, 0, 2, 0,100, 11,200, 1, 8, 0,200, 1, 0, 0,200, 1, 1, 0, 12, 0,101, 11, - 0, 0,239, 3, 0, 0,102, 11, 2, 0, 19, 0, 2, 0,100, 11, 4, 0,103, 11,201, 1, 5, 0,201, 1, 0, 0,201, 1, 1, 0, - 0, 0, 75, 11, 4, 0, 86, 11, 7, 0,199, 2, 39, 0, 12, 0,161, 0, 93, 3,161, 0,104, 11,196, 1, 93, 11, 12, 0,105, 11, -197, 1,106, 11, 12, 0,107, 11, 12, 0,108, 11, 4, 0, 19, 0, 4, 0,244, 0, 2, 0,109, 11, 2, 0,110, 11, 7, 0,111, 11, -202, 1, 2, 0, 27, 0, 31, 0, 39, 0, 75, 0,203, 1, 5, 0,203, 1, 0, 0,203, 1, 1, 0, 4, 0, 17, 0, 4, 0, 19, 0, - 0, 0, 20, 0,204, 1, 6, 0,203, 1,112, 11, 32, 0, 45, 0, 4, 0,113, 11, 7, 0,114, 11, 4, 0,115, 11, 4, 0, 81, 9, -205, 1, 3, 0,203, 1,112, 11, 4, 0,113, 11, 7, 0,116, 11,206, 1, 8, 0,203, 1,112, 11, 32, 0, 45, 0, 7, 0, 64, 1, - 7, 0,117, 11, 7, 0, 9, 3, 7, 0,237, 8, 4, 0,113, 11, 4, 0,118, 11,207, 1, 5, 0,203, 1,112, 11, 7, 0,119, 11, - 7, 0, 56, 8, 7, 0,234, 2, 7, 0, 57, 0,208, 1, 3, 0,203, 1,112, 11, 7, 0,237, 8, 7, 0,120, 11,151, 1, 4, 0, - 7, 0,121, 11, 7, 0,148, 10, 2, 0,122, 11, 2, 0, 69, 1,209, 1, 14, 0,209, 1, 0, 0,209, 1, 1, 0, 12, 0,123, 11, - 12, 0,124, 11, 12, 0,125, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0,126, 11, 7, 0,127, 11, 4, 0,115, 11, - 4, 0, 81, 9, 7, 0,248, 3, 7, 0,236, 2,158, 1, 23, 0, 4, 0,113, 11, 4, 0,128, 11, 7, 0,129, 11, 7, 0, 57, 0, - 7, 0,130, 11, 7, 0,232, 2, 7, 0,121, 11, 7, 0,131, 11, 7, 0,211, 2, 7, 0, 42, 10, 7, 0,128, 4, 7, 0,132, 11, - 7, 0,133, 11, 7, 0,134, 11, 7, 0,135, 11, 7, 0,136, 11, 7, 0,137, 11, 7, 0,138, 11, 7, 0,139, 11, 7, 0,140, 11, - 7, 0,141, 11, 7, 0,142, 11, 12, 0,143, 11,120, 0, 36, 0,119, 0,144, 11,210, 1,104, 10, 67, 0,145, 11, 67, 0,177, 10, - 67, 0,146, 11,211, 1,147, 11, 48, 0,162, 0, 48, 0,148, 11, 48, 0,149, 11, 7, 0,150, 11, 7, 0,151, 11, 7, 0,152, 11, - 7, 0,153, 11, 7, 0,154, 11, 7, 0, 93, 9, 7, 0,155, 11, 7, 0,158, 1, 7, 0,156, 11, 4, 0,157, 11, 4, 0,158, 11, - 4, 0,159, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0,160, 11, 2, 0,161, 11, 2, 0,162, 11, 4, 0,163, 11, 7, 0,211, 2, - 4, 0,164, 11, 7, 0,165, 11, 4, 0,166, 11, 4, 0,167, 11, 4, 0,168, 11,136, 0,169, 11, 12, 0,170, 11,172, 0, 62, 4, -121, 0, 11, 0,119, 0,144, 11,147, 0, 29, 3, 7, 0,125, 1, 7, 0, 93, 9, 7, 0,171, 11, 7, 0,172, 11, 2, 0,173, 11, - 2, 0,174, 11, 2, 0,175, 11, 2, 0, 17, 0, 4, 0, 37, 0,122, 0, 13, 0,119, 0,144, 11,138, 0, 6, 3,140, 0, 8, 3, - 7, 0, 20, 9, 7, 0,176, 11, 7, 0,177, 11, 7, 0, 66, 1, 7, 0,178, 11, 4, 0,115, 9, 4, 0, 4, 3, 2, 0, 17, 0, - 2, 0, 37, 0, 4, 0, 70, 0, 69, 78, 68, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +108,105,103,104,116, 91, 51, 93, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,115,101,116,116,105,110,103,115, 0,116, +119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108, 97,103, 0,116,119, 95,104, 97,110,100,108,101,115,105,122,101, 0, +116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101,111,117,116, 0,116,101,120, 99,111,108,108,101, 99,116,114, 97,116, +101, 0,119,109,100,114, 97,119,109,101,116,104,111,100, 0,109,101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101, +102,101,116, 99,104,102,114, 97,109,101,115, 0,102,114, 97,109,101,115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95, +114,111,116, 95, 97,110,103,108,101, 0,111, 98, 99,101,110,116,101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114, +118,105, 98,114,105,103,104,116, 0,114,101, 99,101,110,116, 95,102,105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101, +119,116,120, 0,103,108,114,101,115,108,105,109,105,116, 0,110,100,111,102, 95,112, 97,110, 0,110,100,111,102, 95,114,111,116, + 97,116,101, 0, 99,117,114,115,115,105,122,101, 0, 99,111,108,111,114, 95,112,105, 99,107,101,114, 95,116,121,112,101, 0,105, +112,111, 95,110,101,119, 0,107,101,121,104, 97,110,100,108,101,115, 95,110,101,119, 0,115, 99,114, 99, 97,115,116,102,112,115, + 0,115, 99,114, 99, 97,115,116,119, 97,105,116, 0,112,114,111,112,119,105,100,116,104, 0,118,101,114,115,101,109, 97,115,116, +101,114, 91, 49, 54, 48, 93, 0,118,101,114,115,101,117,115,101,114, 91, 49, 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108, +105,112, 0, 99,111, 98, 97, 95,119,101,105,103,104,116, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102, +105,101,100, 95,115,105,122,101, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,117,110, +112,114,111,106,101, 99,116,101,100, 95,114, 97,100,105,117,115, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110, +105,102,105,101,100, 95, 97,108,112,104, 97, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,111,118,101,114,108, 97,121, + 95, 99,111,108, 91, 51, 93, 0,118,101,114,116, 98, 97,115,101, 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97, +115,101, 0, 42,110,101,119,115, 99,101,110,101, 0,102,117,108,108, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0, +100,111, 95,114,101,102,114,101,115,104, 0,100,111, 95,100,114, 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, + 97,119, 95,112, 97,105,110,116, 99,117,114,115,111,114, 0,100,111, 95,100,114, 97,119, 95,100,114, 97,103, 0,115,119, 97,112, + 0,109, 97,105,110,119,105,110, 0,115,117, 98,119,105,110, 97, 99,116,105,118,101, 0, 97,110,105,109,109,111,100,101, 0, 42, + 97,110,105,109,116,105,109,101,114, 0, 42, 99,111,110,116,101,120,116, 0,104, 97,110,100,108,101,114, 91, 56, 93, 0, 42,110, +101,119,118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42,116,121,112,101, 0,112, 97,110,101,108,110, 97,109,101, 91, + 54, 52, 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, 97,119,110, 97,109,101, 91, 54, 52, 93, 0,111,102,115, +120, 0,111,102,115,121, 0,115,105,122,101,120, 0,115,105,122,101,121, 0,108, 97, 98,101,108,111,102,115, 0,114,117,110,116, +105,109,101, 95,102,108, 97,103, 0, 99,111,110,116,114,111,108, 0,115,110, 97,112, 0,115,111,114,116,111,114,100,101,114, 0, + 42,112, 97,110,101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101,100, 97,116, 97, 0,108,105,115,116, 95,115, 99,114,111,108, +108, 0,108,105,115,116, 95,115,105,122,101, 0,108,105,115,116, 95,108, 97,115,116, 95,108,101,110, 0,108,105,115,116, 95,103, +114,105,112, 95,115,105,122,101, 0,108,105,115,116, 95,115,101, 97,114, 99,104, 91, 54, 52, 93, 0, 42,118, 51, 0, 42,118, 52, + 0, 42,102,117,108,108, 0, 98,117,116,115,112, 97, 99,101,116,121,112,101, 0,104,101, 97,100,101,114,116,121,112,101, 0,115, +112, 97, 99,101,100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, 0, 97, 99,116,105,111,110,122,111,110,101,115, 0,119,105, +110,114, 99,116, 0,100,114, 97,119,114, 99,116, 0,115,119,105,110,105,100, 0,114,101,103,105,111,110,116,121,112,101, 0, 97, +108,105,103,110,109,101,110,116, 0,100,111, 95,100,114, 97,119, 95,111,118,101,114,108, 97,121, 0,117,105, 98,108,111, 99,107, +115, 0,112, 97,110,101,108,115, 0, 42,104,101, 97,100,101,114,115,116,114, 0, 42,114,101,103,105,111,110,100, 97,116, 97, 0, +115,117, 98,118,115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115,105,111,110, 0,112, 97,100,115, 0,109,105,110,118,101, +114,115,105,111,110, 0,109,105,110,115,117, 98,118,101,114,115,105,111,110, 0, 42, 99,117,114,115, 99,114,101,101,110, 0, 42, + 99,117,114,115, 99,101,110,101, 0,102,105,108,101,102,108, 97,103,115, 0,103,108,111, 98, 97,108,102, 0,102,105,108,101,110, + 97,109,101, 91, 50, 52, 48, 93, 0,110, 97,109,101, 91, 56, 48, 93, 0, 42,105, 98,117,102, 0, 42,105, 98,117,102, 95, 99,111, +109,112, 0, 42,115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0,110,114, 0, 98,111,116,116,111,109, 0,114,105,103,104, +116, 0,120,111,102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93, 0,103, 97,109,109, 97, 91, 51, 93, 0,103, 97,105, +110, 91, 51, 93, 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110,101, 0,115,116, 97,114,116,115,116,105,108,108, 0,101,110, +100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0,111,114,120, 0,111,114,121, 0, 42, 99,114,111,112, 0, + 42,116,114, 97,110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, 98, 97,108, 97,110, 99,101, 0, 42,116,115,116,114,105, +112,100, 97,116, 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42,116,115, +116,114,105,112,100, 97,116, 97, 95,101,110,100,115,116,105,108,108, 0, 42,105, 98,117,102, 95,115,116, 97,114,116,115,116,105, +108,108, 0, 42,105, 98,117,102, 95,101,110,100,115,116,105,108,108, 0, 42,105,110,115,116, 97,110, 99,101, 95,112,114,105,118, + 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, + 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111,102,115, 0,109, 97, 99,104,105,110,101, 0,115,116, 97, +114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,115, 97,116, 0,109,117,108, 0,104, 97,110,100,115,105,122,101, 0, + 97,110,105,109, 95,112,114,101,115,101,101,107, 0, 42,115,116,114,105,112, 0, 42,115, 99,101,110,101, 95, 99, 97,109,101,114, + 97, 0,101,102,102,101, 99,116, 95,102, 97,100,101,114, 0,115,112,101,101,100, 95,102, 97,100,101,114, 0, 42,115,101,113, 49, + 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42,115,111,117,110,100, 0, 42,115, 99,101, +110,101, 95,115,111,117,110,100, 0,108,101,118,101,108, 0,112, 97,110, 0,115, 99,101,110,101,110,114, 0,109,117,108,116,105, + 99, 97,109, 95,115,111,117,114, 99,101, 0,115,116,114,111, 98,101, 0, 42,101,102,102,101, 99,116,100, 97,116, 97, 0, 97,110, +105,109, 95,115,116, 97,114,116,111,102,115, 0, 97,110,105,109, 95,101,110,100,111,102,115, 0, 98,108,101,110,100, 95,109,111, +100,101, 0, 98,108,101,110,100, 95,111,112, 97, 99,105,116,121, 0, 42,111,108,100, 98, 97,115,101,112, 0, 42,112, 97,114,115, +101,113, 0, 42,115,101,113, 98, 97,115,101,112, 0,109,101,116, 97,115,116, 97, 99,107, 0, 42, 97, 99,116, 95,115,101,113, 0, + 97, 99,116, 95,105,109, 97,103,101,100,105,114, 91, 50, 53, 54, 93, 0, 97, 99,116, 95,115,111,117,110,100,100,105,114, 91, 50, + 53, 54, 93, 0,111,118,101,114, 95,111,102,115, 0,111,118,101,114, 95, 99,102,114, 97, 0,111,118,101,114, 95,102,108, 97,103, + 0,111,118,101,114, 95, 98,111,114,100,101,114, 0,101,100,103,101, 87,105,100,116,104, 0,102,111,114,119, 97,114,100, 0,119, +105,112,101,116,121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109,112, 0,102, 66,111,111,115,116, 0,100, 68,105,115, +116, 0,100, 81,117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0, 83, 99, 97,108,101,120, 73,110,105, 0, 83, 99, 97, +108,101,121, 73,110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, 83, 99, 97,108,101,121, 70,105,110, 0,120, 73,110,105, 0, +120, 70,105,110, 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111,116, 73,110,105, 0,114,111,116, 70,105,110, 0,105,110,116, +101,114,112,111,108, 97,116,105,111,110, 0,117,110,105,102,111,114,109, 95,115, 99, 97,108,101, 0, 42,102,114, 97,109,101, 77, + 97,112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115,116, 86, 97,108,105,100, 70,114, 97,109,101, 0, 98,117, +116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,116,111,116,112, 97,114,116, 0,110,111,114,109,102, 97, + 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,120,102, 97, 99, 0,114, 97,110,100,108,105,102,101, 0, +102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,109, 97,120,108,101,110, 0,100,101,102,118,101, 99, 91, + 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, 0, 99,104,105,108,100, 91, 52, 93, 0,109, 97,116, 91, + 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,115,116, 97,116,105, 99,115,116,101,112, 0,111,109, 97, +116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101,120, 0,102,108, 97,103, 50,110,101,103, 0,118,101,114,116, +103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, 91, 51, 50, 93, 0,118,103,114,111,117,112,110, 97,109, +101, 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102, 97, 99, 0,117,115,101,100, 0,117,115,101,100,101,108, +101,109, 0, 42,112,111,105,110, 0,114,101,115,101,116,100,105,115,116, 0,108, 97,115,116,118, 97,108, 0, 42,109, 97, 0,107, +101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,101,116, 78, 97,109,101, 91, 51, 50, 93, 0,116,111,103, +103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91, 51, 50, 93, 0,109, 97,120,118, 97,108,117,101, 91, 51, + 50, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,105,111,110, 0,109, 97,116,101,114,105, 97,108, 78, 97,109,101, 91, 51, + 50, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,114,111,112,110, 97,109,101, 91, 51, 50, 93, 0,109, 97,116,110, 97,109, +101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111,115,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0, 99, +111,110,115,116,114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114,111,109, 79, 98,106,101, 99,116, 0,115,117, 98,106,101, 99, +116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116,121,112,101, 0,112,117,108,115,101, 0,102,114,101,113, 0, +116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,116, 97,112, 0,106,111,121,105,110,100,101,120, 0, 97,120, +105,115, 95,115,105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, 0,104, 97,116, 0,104, 97,116,102, 0, +112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0, 42,109,121,110,101,119, 0,105,110,112,117,116,115, + 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,108,105,110,107,115, 0,118, 97,108,111, 0,115,116, 97,116,101, 95,109, + 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111,112, 91, 51, 50, 93, 0, 98,108,101,110,100,105,110, 0,112, +114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,115,101,116, 0,115,116,114,105,100,101, 97,120,105,115, 0,115,116,114, +105,100,101,108,101,110,103,116,104, 0,115,110,100,110,114, 0,112, 97,100, 51, 91, 50, 93, 0,112,105,116, 99,104, 0,115,111, +117,110,100, 51, 68, 0,112, 97,100, 54, 91, 49, 93, 0, 42,109,101, 0,108,105,110, 86,101,108,111, 99,105,116,121, 91, 51, 93, + 0, 97,110,103, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108,102,108, 97,103, 0,100,121,110, 95,111,112, +101,114, 97,116,105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,102,111,114, 99,101,114,111,116, 91, 51, 93, 0, +108,105,110,101, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103,117,108, 97,114,118,101,108,111, 99,105,116, +121, 91, 51, 93, 0, 42,114,101,102,101,114,101,110, 99,101, 0,109,105,110, 0,109, 97,120, 0,114,111,116,100, 97,109,112, 0, +109,105,110,108,111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, 51, 93, 0,109,105,110,114,111,116, 91, 51, 93, 0,109, 97, +120,114,111,116, 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51, 50, 93, 0, 98,117,116,115,116, 97, 0, 98,117,116,101,110, +100, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, 97,114,103, 95, 49, 0,105,110,116, 95, 97,114,103, + 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97,116, 95, 97,114,103, 95, 50, 0,116,111, 80,114,111, +112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, 99,116, 0, 98,111,100,121, 84,121,112,101, 0,102,105,108, +101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97,109,101, 91, 54, 52, 93, 0,105,110,116, 95, 97,114, +103, 0,102,108,111, 97,116, 95, 97,114,103, 0, 42,115,117, 98,116, 97,114,103,101,116, 0,103,111, 0, 97, 99, 99,101,108,108, +101,114, 97,116,105,111,110, 0,109, 97,120,115,112,101,101,100, 0,109, 97,120,114,111,116,115,112,101,101,100, 0,109, 97,120, +116,105,108,116,115,112,101,101,100, 0,116,105,108,116,100, 97,109,112, 0,115,112,101,101,100,100, 97,109,112, 0,109,105,110, + 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101,102,101,114,101,110, 99,101, 95,100,105,115,116, 97,110, 99, +101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,101, 0,114,111,108,108,111,102,102, 95,102, 97, 99,116,111,114, 0, 99,111, +110,101, 95,105,110,110,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95, 97,110,103,108,101, 0, + 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42,110,101,119,112, 97, 99,107,101,100,102,105,108,101, 0, 97, +116,116,101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, 97, 99,104,101, 0, 42,112,108, 97,121, + 98, 97, 99,107, 95,104, 97,110,100,108,101, 0, 42, 97,114,101, 97, 0, 42,108, 97,109,112,114,101,110, 0,103,111, 98,106,101, + 99,116, 0,100,117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 42,112,114,111,112, 0, 99,104,105,108,100, 98, 97,115,101, 0, +114,111,108,108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98,111,110,101, 95,109, 97,116, 91, 51, 93, + 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97,105,108, 91, 51, 93, 0, 97,114,109, 95, +109, 97,116, 91, 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0,122,119,105,100,116,104, 0,101, 97,115,101, 49, 0,101, 97, +115,101, 50, 0,114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95,116, 97,105,108, 0, 98,111,110,101, 98, 97,115,101, 0, 99, +104, 97,105,110, 98, 97,115,101, 0, 42,101,100, 98,111, 0, 42, 97, 99,116, 95, 98,111,110,101, 0, 42, 97, 99,116, 95,101,100, + 98,111,110,101, 0, 42,115,107,101,116, 99,104, 0,108, 97,121,101,114, 95,112,114,111,116,101, 99,116,101,100, 0,103,104,111, +115,116,101,112, 0,103,104,111,115,116,115,105,122,101, 0,103,104,111,115,116,116,121,112,101, 0,112, 97,116,104,115,105,122, +101, 0,103,104,111,115,116,115,102, 0,103,104,111,115,116,101,102, 0,112, 97,116,104,115,102, 0,112, 97,116,104,101,102, 0, +112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,111,105,110,116,115, 0,115,116, 97,114,116, 95,102,114, 97,109, +101, 0,101,110,100, 95,102,114, 97,109,101, 0,103,104,111,115,116, 95,115,102, 0,103,104,111,115,116, 95,101,102, 0,103,104, +111,115,116, 95, 98, 99, 0,103,104,111,115,116, 95, 97, 99, 0,103,104,111,115,116, 95,116,121,112,101, 0,103,104,111,115,116, + 95,115,116,101,112, 0,103,104,111,115,116, 95,102,108, 97,103, 0,112, 97,116,104, 95,116,121,112,101, 0,112, 97,116,104, 95, +115,116,101,112, 0,112, 97,116,104, 95,118,105,101,119,102,108, 97,103, 0,112, 97,116,104, 95, 98, 97,107,101,102,108, 97,103, + 0,112, 97,116,104, 95,115,102, 0,112, 97,116,104, 95,101,102, 0,112, 97,116,104, 95, 98, 99, 0,112, 97,116,104, 95, 97, 99, + 0, 99,111,110,115,116,102,108, 97,103, 0,105,107,102,108, 97,103, 0,115,101,108,101, 99,116,102,108, 97,103, 0, 97,103,114, +112, 95,105,110,100,101,120, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105,107,116,114,101,101, 0, 42, 98, 95, 98, +111,110,101, 95,109, 97,116,115, 0, 42,100,117, 97,108, 95,113,117, 97,116, 0, 42, 98, 95, 98,111,110,101, 95,100,117, 97,108, + 95,113,117, 97,116,115, 0,101,117,108, 91, 51, 93, 0, 99,104, 97,110, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115, +101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, 51, 93, 0,112,111,115,101, 95,116, 97, +105,108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105,109,105,116,109, 97,120, 91, 51, 93, 0,115,116, +105,102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, 0,105,107,114,111,116,119,101,105,103,104,116, + 0,105,107,108,105,110,119,101,105,103,104,116, 0, 42, 99,117,115,116,111,109, 0, 42, 99,117,115,116,111,109, 95,116,120, 0, + 99,104, 97,110, 98, 97,115,101, 0, 42, 99,104, 97,110,104, 97,115,104, 0,112,114,111,120,121, 95,108, 97,121,101,114, 0,115, +116,114,105,100,101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, 95,111,102,102,115,101,116, 91, 51, 93, + 0, 97,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,103,114,111,117,112, 0,105,107,115,111,108,118,101,114, 0, 42, +105,107,100, 97,116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,112,114,111,120,121, 95, 97, 99,116, 95, 98,111,110,101, 91, 51, + 50, 93, 0,110,117,109,105,116,101,114, 0,110,117,109,115,116,101,112, 0,109,105,110,115,116,101,112, 0,109, 97,120,115,116, +101,112, 0,115,111,108,118,101,114, 0,102,101,101,100, 98, 97, 99,107, 0,109, 97,120,118,101,108, 0,100, 97,109,112,109, 97, +120, 0,100, 97,109,112,101,112,115, 0, 99,104, 97,110,110,101,108,115, 0, 99,117,115,116,111,109, 67,111,108, 0, 99,115, 0, + 99,117,114,118,101,115, 0,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,109, 97,114,107,101,114, 0, 42,115,111,117, +114, 99,101, 0, 42,102,105,108,116,101,114, 95,103,114,112, 0,102,105,108,116,101,114,102,108, 97,103, 0, 97,100,115, 0,116, +105,109,101,115,108,105,100,101, 0, 42,103,114,112, 0,116,101,109,112, 0,110, 97,109,101, 91, 51, 48, 93, 0,111,119,110,115, +112, 97, 99,101, 0,116, 97,114,115,112, 97, 99,101, 0,101,110,102,111,114, 99,101, 0,104,101, 97,100,116, 97,105,108, 0,108, +105,110, 95,101,114,114,111,114, 0,114,111,116, 95,101,114,114,111,114, 0, 42,116, 97,114, 0,109, 97,116,114,105,120, 91, 52, + 93, 91, 52, 93, 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100,101,114, 0,116, 97,114,110,117,109, 0,116, 97,114,103,101, +116,115, 0,105,116,101,114, 97,116,105,111,110,115, 0,114,111,111,116, 98,111,110,101, 0,109, 97,120, 95,114,111,111,116, 98, +111,110,101, 0, 42,112,111,108,101,116, 97,114, 0,112,111,108,101,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112, +111,108,101, 97,110,103,108,101, 0,111,114,105,101,110,116,119,101,105,103,104,116, 0,103,114, 97, 98,116, 97,114,103,101,116, + 91, 51, 93, 0,110,117,109,112,111,105,110,116,115, 0, 99,104, 97,105,110,108,101,110, 0,120,122, 83, 99, 97,108,101, 77,111, +100,101, 0,114,101,115,101,114,118,101,100, 49, 0,114,101,115,101,114,118,101,100, 50, 0,109,105,110,109, 97,120,102,108, 97, +103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99,107,102,108, 97,103, 0,102,111,108,108,111,119, +102,108, 97,103, 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103,108,101,110,103,116,104, 0, 98,117,108, +103,101, 0,112,105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120, 88, 0, 97,120, 89, 0, 97,120, 90, 0,109,105, +110, 76,105,109,105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54, 93, 0,101,120,116,114, 97, 70,122, 0,105,110, +118,109, 97,116, 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109, 97,112, 91, 51, 93, 0,101,120,112,111, 0,102, +114,111,109, 95,109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91, 51, 93, 0,116,111, 95,109,105,110, 91, 51, 93, + 0,116,111, 95,109, 97,120, 91, 51, 93, 0,114,111,116, 65,120,105,115, 0,122,109,105,110, 0,122,109, 97,120, 0,112, 97,100, + 91, 57, 93, 0, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, 95, 97,120,105,115, 0,115,116,114,105, +100,101, 95, 97,120,105,115, 0, 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114,116, 0, 97, 99,116,101,110,100, 0, 97, + 99,116,111,102,102,115, 0,115,116,114,105,100,101,108,101,110, 0,115, 99, 97,108,101, 0, 98,108,101,110,100,111,117,116, 0, +115,116,114,105,100,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,111,102,102,115, 95, 98,111,110,101, 91, 51, 50, 93, 0, +104, 97,115,105,110,112,117,116, 0,104, 97,115,111,117,116,112,117,116, 0,100, 97,116, 97,116,121,112,101, 0,115,111, 99,107, +101,116,116,121,112,101, 0, 42,110,101,119, 95,115,111, 99,107, 0,110,115, 0,108,105,109,105,116, 0,115,116, 97, 99,107, 95, +105,110,100,101,120, 0,105,110,116,101,114,110, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 95,101,120,116, 0,108,111, 99, +120, 0,108,111, 99,121, 0,111,119,110, 95,105,110,100,101,120, 0,116,111, 95,105,110,100,101,120, 0, 42,116,111,115,111, 99, +107, 0, 42,108,105,110,107, 0, 42,110,101,119, 95,110,111,100,101, 0,108, 97,115,116,121, 0,111,117,116,112,117,116,115, 0, + 42,115,116,111,114, 97,103,101, 0,109,105,110,105,119,105,100,116,104, 0, 99,117,115,116,111,109, 49, 0, 99,117,115,116,111, +109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117,115,116,111,109, 52, 0,110,101,101,100, 95,101,120,101, 99, 0,101,120,101, + 99, 0, 42,116,104,114,101, 97,100,100, 97,116, 97, 0,116,111,116,114, 0, 98,117,116,114, 0,112,114,118,114, 0, 42, 98,108, +111, 99,107, 0, 42,116,121,112,101,105,110,102,111, 0, 42,102,114,111,109,110,111,100,101, 0, 42,116,111,110,111,100,101, 0, + 42,102,114,111,109,115,111, 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0, 42,115,116, 97, 99,107, 0, 42,116,104, +114,101, 97,100,115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, 97, 99,107,115,105,122,101, 0, 99,117,114, 95,105,110,100, +101,120, 0, 97,108,108,116,121,112,101,115, 0, 42,111,119,110,116,121,112,101, 0,112, 97,100, 50, 91, 50, 93, 0, 40, 42,112, +114,111,103,114,101,115,115, 41, 40, 41, 0, 40, 42,115,116, 97,116,115, 95,100,114, 97,119, 41, 40, 41, 0, 40, 42,116,101,115, +116, 95, 98,114,101, 97,107, 41, 40, 41, 0, 42,116, 98,104, 0, 42,112,114,104, 0, 42,115,100,104, 0, 99,121, 99,108,105, 99, + 0,109,111,118,105,101, 0,115, 97,109,112,108,101,115, 0,109,105,110,115,112,101,101,100, 0,112,101,114, 99,101,110,116,120, + 0,112,101,114, 99,101,110,116,121, 0, 98,111,107,101,104, 0,103, 97,109,109, 97, 0, 99,117,114,118,101,100, 0,105,109, 97, +103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109, 97,103,101, 95,105,110, 95,104,101,105,103,104,116, 0, 99,101,110,116, +101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,115,112,105,110, 0,119,114, 97,112, 0,115,105,103,109, 97, 95, 99,111, +108,111,114, 0,115,105,103,109, 97, 95,115,112, 97, 99,101, 0,104,117,101, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116, +114,101,110,103,116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, 91, 52, 93, 0, 97,108,103,111,114,105,116,104,109, 0, 99, +104, 97,110,110,101,108, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, 0, 99,111,108,110, 97,109,101, 91, 51, 50, 93, 0, 98, +107,116,121,112,101, 0,114,111,116, 97,116,105,111,110, 0,103, 97,109, 99,111, 0,110,111, 95,122, 98,117,102, 0,102,115,116, +111,112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, 0, 42,100,105, 99,116, 0, 42,110,111,100,101, 0, 97, +110,103,108,101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105,120, 0,116,104,114,101,115,104,111,108,100, 0,102, 97, +100,101, 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105,116, 0,115,108,111,112,101, 91, 51, 93, 0,112,111,119, +101,114, 91, 51, 93, 0,108,105,102,116, 95,108,103,103, 91, 51, 93, 0,108,105,109, 99,104, 97,110, 0,117,110,115,112,105,108, +108, 0,108,105,109,115, 99, 97,108,101, 0,117,115,112,105,108,108,114, 0,117,115,112,105,108,108,103, 0,117,115,112,105,108, +108, 98, 0,115,104,111,114,116,121, 0,109,105,110,116, 97, 98,108,101, 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95, +105,110, 91, 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, 42, 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42, +112,114,101,109,117,108,116, 97, 98,108,101, 0,112,114,101,115,101,116, 0, 99,104, 97,110,103,101,100, 95,116,105,109,101,115, +116, 97,109,112, 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, 0,119, +104,105,116,101, 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, 93, 0,120, 95,114,101,115, +111,108,117,116,105,111,110, 0,100, 97,116, 97, 95,114, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,103, 91, 50, 53, 54, 93, 0, +100, 97,116, 97, 95, 98, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,108,117,109, 97, 91, 50, 53, 54, 93, 0,115, 97,109,112,108, +101, 95,102,117,108,108, 0,115, 97,109,112,108,101, 95,108,105,110,101,115, 0, 97, 99, 99,117,114, 97, 99,121, 0,119, 97,118, +101,102,114,109, 95,109,111,100,101, 0,119, 97,118,101,102,114,109, 95, 97,108,112,104, 97, 0,119, 97,118,101,102,114,109, 95, +121,102, 97, 99, 0,119, 97,118,101,102,114,109, 95,104,101,105,103,104,116, 0,118,101, 99,115, 99,111,112,101, 95, 97,108,112, +104, 97, 0,118,101, 99,115, 99,111,112,101, 95,104,101,105,103,104,116, 0,109,105,110,109, 97,120, 91, 51, 93, 91, 50, 93, 0, +104,105,115,116, 0, 42,119, 97,118,101,102,111,114,109, 95, 49, 0, 42,119, 97,118,101,102,111,114,109, 95, 50, 0, 42,119, 97, +118,101,102,111,114,109, 95, 51, 0, 42,118,101, 99,115, 99,111,112,101, 0,119, 97,118,101,102,111,114,109, 95,116,111,116, 0, +111,102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,109,116,101,120, 0, 42,105,109, 97,103,101, 95,105, 99,111,110, + 0,110,111,114,109, 97,108, 95,119,101,105,103,104,116, 0,106,105,116,116,101,114, 0,115,109,111,111,116,104, 95,115,116,114, +111,107,101, 95,114, 97,100,105,117,115, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,102, 97, 99,116,111,114, 0, +114, 97,116,101, 0,114,103, 98, 91, 51, 93, 0,115, 99,117,108,112,116, 95,112,108, 97,110,101, 0,112,108, 97,110,101, 95,111, +102,102,115,101,116, 0,115, 99,117,108,112,116, 95,116,111,111,108, 0,118,101,114,116,101,120,112, 97,105,110,116, 95,116,111, +111,108, 0,105,109, 97,103,101,112, 97,105,110,116, 95,116,111,111,108, 0, 97,117,116,111,115,109,111,111,116,104, 95,102, 97, + 99,116,111,114, 0, 99,114,101, 97,115,101, 95,112,105,110, 99,104, 95,102, 97, 99,116,111,114, 0,112,108, 97,110,101, 95,116, +114,105,109, 0,116,101,120,116,117,114,101, 95,115, 97,109,112,108,101, 95, 98,105, 97,115, 0,116,101,120,116,117,114,101, 95, +111,118,101,114,108, 97,121, 95, 97,108,112,104, 97, 0,117,110,112,114,111,106,101, 99,116,101,100, 95,114, 97,100,105,117,115, + 0, 97,100,100, 95, 99,111,108, 91, 51, 93, 0,115,117, 98, 95, 99,111,108, 91, 51, 93, 0, 97, 99,116,105,118,101, 95,114,110, +100, 0, 97, 99,116,105,118,101, 95, 99,108,111,110,101, 0, 97, 99,116,105,118,101, 95,109, 97,115,107, 0, 42,108, 97,121,101, +114,115, 0,116,111,116,108, 97,121,101,114, 0,109, 97,120,108, 97,121,101,114, 0,116,111,116,115,105,122,101, 0, 42,112,111, +111,108, 0, 42,101,120,116,101,114,110, 97,108, 0,118,101,108, 91, 51, 93, 0,114,111,116, 91, 52, 93, 0, 97,118,101, 91, 51, + 93, 0, 42,103,114,111,117,110,100, 0,119, 97,110,100,101,114, 91, 51, 93, 0,110,117,109, 0,112, 97,114,101,110,116, 0,112, + 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0,102,111,102,102,115,101,116, 0,114,116, 91, 50, 93, 0,112, +114,101,118, 95,115,116, 97,116,101, 0, 42,104, 97,105,114, 0, 42, 98,111,105,100, 0,100,105,101,116,105,109,101, 0,110,117, +109, 95,100,109, 99, 97, 99,104,101, 0,104, 97,105,114, 95,105,110,100,101,120, 0, 97,108,105,118,101, 0,115,112,114,105,110, +103, 95,107, 0,114,101,115,116, 95,108,101,110,103,116,104, 0,118,105,115, 99,111,115,105,116,121, 95,111,109,101,103, 97, 0, +118,105,115, 99,111,115,105,116,121, 95, 98,101,116, 97, 0,115,116,105,102,102,110,101,115,115, 95,107, 0,115,116,105,102,102, +110,101,115,115, 95,107,110,101, 97,114, 0,114,101,115,116, 95,100,101,110,115,105,116,121, 0, 98,117,111,121, 97,110, 99,121, + 0, 42, 98,111,105,100,115, 0, 42,102,108,117,105,100, 0,100,105,115,116,114, 0,112,104,121,115,116,121,112,101, 0, 97,118, +101,109,111,100,101, 0,114,101, 97, 99,116,101,118,101,110,116, 0,100,114, 97,119, 0,100,114, 97,119, 95, 97,115, 0,100,114, + 97,119, 95,115,105,122,101, 0, 99,104,105,108,100,116,121,112,101, 0,114,101,110, 95, 97,115, 0,115,117, 98,102,114, 97,109, +101,115, 0,114,101,110, 95,115,116,101,112, 0,104, 97,105,114, 95,115,116,101,112, 0,107,101,121,115, 95,115,116,101,112, 0, + 97,100, 97,112,116, 95, 97,110,103,108,101, 0, 97,100, 97,112,116, 95,112,105,120, 0,114,111,116,102,114,111,109, 0,105,110, +116,101,103,114, 97,116,111,114, 0, 98, 98, 95, 97,108,105,103,110, 0, 98, 98, 95,117,118, 95,115,112,108,105,116, 0, 98, 98, + 95, 97,110,105,109, 0, 98, 98, 95,115,112,108,105,116, 95,111,102,102,115,101,116, 0, 98, 98, 95,116,105,108,116, 0, 98, 98, + 95,114, 97,110,100, 95,116,105,108,116, 0, 98, 98, 95,111,102,102,115,101,116, 91, 50, 93, 0,115,105,109,112,108,105,102,121, + 95,114,101,102,115,105,122,101, 0,115,105,109,112,108,105,102,121, 95,114, 97,116,101, 0,115,105,109,112,108,105,102,121, 95, +116,114, 97,110,115,105,116,105,111,110, 0,115,105,109,112,108,105,102,121, 95,118,105,101,119,112,111,114,116, 0,116,105,109, +101,116,119,101, 97,107, 0,106,105,116,102, 97, 99, 0,101,102,102, 95,104, 97,105,114, 0,103,114,105,100, 95,114,101,115, 0, +112, 97,114,116,102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116, 97,110,112,104, 97,115,101, 0,114,101, 97, 99,116,102, 97, 99, + 0,111, 98, 95,118,101,108, 91, 51, 93, 0, 97,118,101,102, 97, 99, 0,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,114, +111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,115,105,122,101, 0,114,101, 97, 99, +116,115,104, 97,112,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97,103,102, 97, 99, 0, 98,114,111,119,110,102, 97, 99, 0,100, + 97,109,112,102, 97, 99, 0,114, 97,110,100,108,101,110,103,116,104, 0, 99,104,105,108,100, 95,110, 98,114, 0,114,101,110, 95, + 99,104,105,108,100, 95,110, 98,114, 0,112, 97,114,101,110,116,115, 0, 99,104,105,108,100,115,105,122,101, 0, 99,104,105,108, +100,114, 97,110,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,100, 0, 99,104,105,108,100,102,108, 97,116, 0, 99,108,117, +109,112,112,111,119, 0,114,111,117,103,104, 49, 0,114,111,117,103,104, 49, 95,115,105,122,101, 0,114,111,117,103,104, 50, 0, +114,111,117,103,104, 50, 95,115,105,122,101, 0,114,111,117,103,104, 50, 95,116,104,114,101,115, 0,114,111,117,103,104, 95,101, +110,100, 0,114,111,117,103,104, 95,101,110,100, 95,115,104, 97,112,101, 0, 99,108,101,110,103,116,104, 0, 99,108,101,110,103, +116,104, 95,116,104,114,101,115, 0, 98,114, 97,110, 99,104, 95,116,104,114,101,115, 0,100,114, 97,119, 95,108,105,110,101, 91, + 50, 93, 0,112, 97,116,104, 95,115,116, 97,114,116, 0,112, 97,116,104, 95,101,110,100, 0,116,114, 97,105,108, 95, 99,111,117, +110,116, 0,107,101,121,101,100, 95,108,111,111,112,115, 0,100,117,112,108,105,119,101,105,103,104,116,115, 0, 42,101,102,102, + 95,103,114,111,117,112, 0, 42,100,117,112, 95,111, 98, 0, 42, 98, 98, 95,111, 98, 0, 42,112,100, 50, 0, 42,112, 97,114,116, + 0, 42,112, 97,114,116,105, 99,108,101,115, 0, 42, 42,112, 97,116,104, 99, 97, 99,104,101, 0, 42, 42, 99,104,105,108,100, 99, + 97, 99,104,101, 0,112, 97,116,104, 99, 97, 99,104,101, 98,117,102,115, 0, 99,104,105,108,100, 99, 97, 99,104,101, 98,117,102, +115, 0, 42, 99,108,109,100, 0, 42,104, 97,105,114, 95,105,110, 95,100,109, 0, 42,104, 97,105,114, 95,111,117,116, 95,100,109, + 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42,108, 97,116,116,105, 99,101, 0,116,114,101,101, 95,102,114, 97,109,101, 0, +116,111,116, 99,104,105,108,100, 0,116,111,116, 99, 97, 99,104,101,100, 0,116,111,116, 99,104,105,108,100, 99, 97, 99,104,101, + 0,116, 97,114,103,101,116, 95,112,115,121,115, 0,116,111,116,107,101,121,101,100, 0, 98, 97,107,101,115,112, 97, 99,101, 0, + 98, 98, 95,117,118,110, 97,109,101, 91, 51, 93, 91, 51, 50, 93, 0,118,103,114,111,117,112, 91, 49, 50, 93, 0,118,103, 95,110, +101,103, 0,114,116, 51, 0, 42,114,101,110,100,101,114,100, 97,116, 97, 0, 42,101,102,102,101, 99,116,111,114,115, 0, 42,116, +114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97,110,100, 0, 67,100,105,115, 0, 67,118,105, 0,115,116,114,117, 99,116,117, +114, 97,108, 0, 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98,101,110,100, 0,109, 97,120, 95,115,116,114,117, 99,116, 0, +109, 97,120, 95,115,104,101, 97,114, 0, 97,118,103, 95,115,112,114,105,110,103, 95,108,101,110, 0,116,105,109,101,115, 99, 97, +108,101, 0,101,102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108,101, 0,101,102,102, 95,119,105,110,100, 95,115, 99, 97,108, +101, 0,115,105,109, 95,116,105,109,101, 95,111,108,100, 0,118,101,108,111, 99,105,116,121, 95,115,109,111,111,116,104, 0, 99, +111,108,108,105,100,101,114, 95,102,114,105, 99,116,105,111,110, 0,115,116,101,112,115, 80,101,114, 70,114, 97,109,101, 0,112, +114,101,114,111,108,108, 0,109, 97,120,115,112,114,105,110,103,108,101,110, 0,115,111,108,118,101,114, 95,116,121,112,101, 0, +118,103,114,111,117,112, 95, 98,101,110,100, 0,118,103,114,111,117,112, 95,109, 97,115,115, 0,118,103,114,111,117,112, 95,115, +116,114,117, 99,116, 0,115,104, 97,112,101,107,101,121, 95,114,101,115,116, 0,112,114,101,115,101,116,115, 0,114,101,115,101, +116, 0, 42, 99,111,108,108,105,115,105,111,110, 95,108,105,115,116, 0,101,112,115,105,108,111,110, 0,115,101,108,102, 95,102, +114,105, 99,116,105,111,110, 0,115,101,108,102,101,112,115,105,108,111,110, 0,115,101,108,102, 95,108,111,111,112, 95, 99,111, +117,110,116, 0,108,111,111,112, 95, 99,111,117,110,116, 0,112,114,101,115,115,117,114,101, 0,116,104,105, 99,107,110,101,115, +115, 0,115,116,114,111,107,101,115, 0,102,114, 97,109,101,110,117,109, 0, 42, 97, 99,116,102,114, 97,109,101, 0,103,115,116, +101,112, 0,105,110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102,101,114, 95,115,105,122,101, 0,115, 98,117,102,102,101, +114, 95,115,102,108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, 42,116,121,112,101,115,116,114, 0, 42,109,101,115,115, 97, +103,101, 0,108,105,115,116, 0,112,114,105,110,116,108,101,118,101,108, 0,115,116,111,114,101,108,101,118,101,108, 0, 42,114, +101,112,111,114,116,116,105,109,101,114, 0,103,114,101,121,115, 99, 97,108,101, 0,119,105,100,116,104,102, 97, 99, 0, 42,119, +105,110,100,114, 97,119, 97, 98,108,101, 0, 42,119,105,110, 97, 99,116,105,118,101, 0,119,105,110,100,111,119,115, 0,105,110, +105,116,105, 97,108,105,122,101,100, 0,102,105,108,101, 95,115, 97,118,101,100, 0,111,112, 95,117,110,100,111, 95,100,101,112, +116,104, 0,111,112,101,114, 97,116,111,114,115, 0,113,117,101,117,101, 0,114,101,112,111,114,116,115, 0,106,111, 98,115, 0, +112, 97,105,110,116, 99,117,114,115,111,114,115, 0,100,114, 97,103,115, 0,107,101,121, 99,111,110,102,105,103,115, 0, 42,100, +101,102, 97,117,108,116, 99,111,110,102, 0,116,105,109,101,114,115, 0, 42, 97,117,116,111,115, 97,118,101,116,105,109,101,114, + 0, 42,103,104,111,115,116,119,105,110, 0,103,114, 97, 98, 99,117,114,115,111,114, 0, 42,110,101,119,115, 99,114,101,101,110, + 0,115, 99,114,101,101,110,110, 97,109,101, 91, 51, 50, 93, 0,112,111,115,120, 0,112,111,115,121, 0,119,105,110,100,111,119, +115,116, 97,116,101, 0,109,111,110,105,116,111,114, 0,108, 97,115,116, 99,117,114,115,111,114, 0, 97,100,100,109,111,117,115, +101,109,111,118,101, 0, 42,101,118,101,110,116,115,116, 97,116,101, 0, 42, 99,117,114,115,119,105,110, 0, 42,116,119,101, 97, +107, 0,100,114, 97,119,109,101,116,104,111,100, 0,100,114, 97,119,102, 97,105,108, 0, 42,100,114, 97,119,100, 97,116, 97, 0, +109,111,100, 97,108,104, 97,110,100,108,101,114,115, 0,115,117, 98,119,105,110,100,111,119,115, 0,103,101,115,116,117,114,101, + 0,105,100,110, 97,109,101, 91, 54, 52, 93, 0,112,114,111,112,118, 97,108,117,101, 0,115,104,105,102,116, 0, 99,116,114,108, + 0, 97,108,116, 0,111,115,107,101,121, 0,107,101,121,109,111,100,105,102,105,101,114, 0,109, 97,112,116,121,112,101, 0, 42, +112,116,114, 0,105,116,101,109,115, 0,115,112, 97, 99,101,105,100, 0,114,101,103,105,111,110,105,100, 0,107,109,105, 95,105, +100, 0, 40, 42,112,111,108,108, 41, 40, 41, 0, 42,109,111,100, 97,108, 95,105,116,101,109,115, 0, 98, 97,115,101,110, 97,109, +101, 91, 54, 52, 93, 0, 97, 99,116,107,101,121,109, 97,112, 0, 42, 99,117,115,116,111,109,100, 97,116, 97, 0, 42,112,121, 95, +105,110,115,116, 97,110, 99,101, 0, 42,114,101,112,111,114,116,115, 0,109, 97, 99,114,111, 0, 42,111,112,109, 0, 42,101,100, + 97,116, 97, 0,105,110,102,108,117,101,110, 99,101, 0, 42, 99,111,101,102,102,105, 99,105,101,110,116,115, 0, 97,114,114, 97, +121,115,105,122,101, 0,112,111,108,121, 95,111,114,100,101,114, 0, 97,109,112,108,105,116,117,100,101, 0,112,104, 97,115,101, + 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, 97,115,101, 95,111,102,102,115,101,116, 0,118, 97,108,117,101, 95,111, +102,102,115,101,116, 0,109,105,100,118, 97,108, 0, 98,101,102,111,114,101, 95,109,111,100,101, 0, 97,102,116,101,114, 95,109, +111,100,101, 0, 98,101,102,111,114,101, 95, 99,121, 99,108,101,115, 0, 97,102,116,101,114, 95, 99,121, 99,108,101,115, 0,114, +101, 99,116, 0,112,104, 97,115,101, 0,109,111,100,105,102,105, 99, 97,116,105,111,110, 0,115,116,101,112, 95,115,105,122,101, + 0, 42,114,110, 97, 95,112, 97,116,104, 0,112, 99,104, 97,110, 95,110, 97,109,101, 91, 51, 50, 93, 0,116,114, 97,110,115, 67, +104, 97,110, 0,105,100,116,121,112,101, 0,116, 97,114,103,101,116,115, 91, 56, 93, 0,110,117,109, 95,116, 97,114,103,101,116, +115, 0,118, 97,114,105, 97, 98,108,101,115, 0,101,120,112,114,101,115,115,105,111,110, 91, 50, 53, 54, 93, 0, 42,101,120,112, +114, 95, 99,111,109,112, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, 0, 97,114,114, 97,121, 95,105,110,100,101,120, 0, 99, +111,108,111,114, 95,109,111,100,101, 0, 99,111,108,111,114, 91, 51, 93, 0,102,114,111,109, 91, 49, 50, 56, 93, 0,116,111, 91, + 49, 50, 56, 93, 0,109, 97,112,112,105,110,103,115, 0,115,116,114,105,112,115, 0, 42,114,101,109, 97,112, 0,102, 99,117,114, +118,101,115, 0,115,116,114,105,112, 95,116,105,109,101, 0, 98,108,101,110,100,109,111,100,101, 0,101,120,116,101,110,100,109, +111,100,101, 0,103,114,111,117,112, 91, 54, 52, 93, 0,103,114,111,117,112,109,111,100,101, 0,107,101,121,105,110,103,102,108, + 97,103, 0,112, 97,116,104,115, 0,116,121,112,101,105,110,102,111, 91, 54, 52, 93, 0, 97, 99,116,105,118,101, 95,112, 97,116, +104, 0, 42,116,109,112, 97, 99,116, 0,110,108, 97, 95,116,114, 97, 99,107,115, 0, 42, 97, 99,116,115,116,114,105,112, 0,100, +114,105,118,101,114,115, 0,111,118,101,114,114,105,100,101,115, 0, 97, 99,116, 95, 98,108,101,110,100,109,111,100,101, 0, 97, + 99,116, 95,101,120,116,101,110,100,109,111,100,101, 0, 97, 99,116, 95,105,110,102,108,117,101,110, 99,101, 0,114,117,108,101, + 0,111,112,116,105,111,110,115, 0,102,101, 97,114, 95,102, 97, 99,116,111,114, 0,115,105,103,110, 97,108, 95,105,100, 0,108, +111,111,107, 95, 97,104,101, 97,100, 0,111,108,111, 99, 91, 51, 93, 0,113,117,101,117,101, 95,115,105,122,101, 0,119, 97,110, +100,101,114, 0,102,108,101,101, 95,100,105,115,116, 97,110, 99,101, 0,104,101, 97,108,116,104, 0,115,116, 97,116,101, 95,105, +100, 0,114,117,108,101,115, 0, 99,111,110,100,105,116,105,111,110,115, 0, 97, 99,116,105,111,110,115, 0,114,117,108,101,115, +101,116, 95,116,121,112,101, 0,114,117,108,101, 95,102,117,122,122,105,110,101,115,115, 0,108, 97,115,116, 95,115,116, 97,116, +101, 95,105,100, 0,108, 97,110,100,105,110,103, 95,115,109,111,111,116,104,110,101,115,115, 0, 98, 97,110,107,105,110,103, 0, + 97,103,103,114,101,115,115,105,111,110, 0, 97,105,114, 95,109,105,110, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, + 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, 99, 0, 97,105,114, 95,109, 97,120, 95, 97,118,101, 0, 97, +105,114, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,106,117,109,112, 95,115,112,101,101, +100, 0,108, 97,110,100, 95,109, 97,120, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95, 97, 99, 99, 0,108, 97, +110,100, 95,109, 97,120, 95, 97,118,101, 0,108, 97,110,100, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, + 97,110,100, 95,115,116,105, 99,107, 95,102,111,114, 99,101, 0,115,116, 97,116,101,115, 0, 42,115,109,100, 0, 42,102,108,117, +105,100, 95,103,114,111,117,112, 0, 42, 99,111,108,108, 95,103,114,111,117,112, 0, 42,119,116, 0, 42,116,101,120, 95,119,116, + 0, 42,116,101,120, 95,115,104, 97,100,111,119, 0, 42,115,104, 97,100,111,119, 0,112, 48, 91, 51, 93, 0,112, 49, 91, 51, 93, + 0,100,120, 0,111,109,101,103, 97, 0,116,101,109,112, 65,109, 98, 0, 98,101,116, 97, 0,114,101,115, 91, 51, 93, 0, 97,109, +112,108,105,102,121, 0,109, 97,120,114,101,115, 0,118,105,101,119,115,101,116,116,105,110,103,115, 0,110,111,105,115,101, 0, +100,105,115,115, 95,112,101,114, 99,101,110,116, 0,100,105,115,115, 95,115,112,101,101,100, 0,114,101,115, 95,119,116, 91, 51, + 93, 0,100,120, 95,119,116, 0,118, 51,100,110,117,109, 0, 99, 97, 99,104,101, 95, 99,111,109,112, 0, 99, 97, 99,104,101, 95, +104,105,103,104, 95, 99,111,109,112, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 91, 50, 93, 0,112,116, 99, 97, 99,104, +101,115, 91, 50, 93, 0,118,101,108,111, 99,105,116,121, 91, 51, 93, 0,118,103,114,112, 95,104,101, 97,116, 95,115, 99, 97,108, +101, 91, 50, 93, 0,118,103,114,111,117,112, 95,102,108,111,119, 0,118,103,114,111,117,112, 95,100,101,110,115,105,116,121, 0, +118,103,114,111,117,112, 95,104,101, 97,116, 0, 42,112,111,105,110,116,115, 95,111,108,100, 0, 42,118,101,108, 0,109, 97,116, + 95,111,108,100, 91, 52, 93, 91, 52, 93, 0, 0, 84, 89, 80, 69,212, 1, 0, 0, 99,104, 97,114, 0,117, 99,104, 97,114, 0,115, +104,111,114,116, 0,117,115,104,111,114,116, 0,105,110,116, 0,108,111,110,103, 0,117,108,111,110,103, 0,102,108,111, 97,116, + 0,100,111,117, 98,108,101, 0,118,111,105,100, 0, 76,105,110,107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76,105,115,116, 66, + 97,115,101, 0,118,101, 99, 50,115, 0,118,101, 99, 50,102, 0,118,101, 99, 50,105, 0,118,101, 99, 50,100, 0,118,101, 99, 51, +105, 0,118,101, 99, 51,102, 0,118,101, 99, 51,100, 0,118,101, 99, 52,105, 0,118,101, 99, 52,102, 0,118,101, 99, 52,100, 0, +114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, 80,114,111,112,101,114,116,121, 68, 97,116, 97, 0, 73, 68, 80,114,111,112,101, +114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70,105,108,101, 68, 97,116, 97, 0, 80,114,101,118,105,101,119, 73, +109, 97,103,101, 0, 73,112,111, 68,114,105,118,101,114, 0, 79, 98,106,101, 99,116, 0, 73,112,111, 67,117,114,118,101, 0, 66, + 80,111,105,110,116, 0, 66,101,122, 84,114,105,112,108,101, 0, 73,112,111, 0, 75,101,121, 66,108,111, 99,107, 0, 75,101,121, + 0, 65,110,105,109, 68, 97,116, 97, 0, 84,101,120,116, 76,105,110,101, 0, 84,101,120,116, 77, 97,114,107,101,114, 0, 84,101, +120,116, 0, 80, 97, 99,107,101,100, 70,105,108,101, 0, 67, 97,109,101,114, 97, 0, 73,109, 97,103,101, 85,115,101,114, 0, 83, + 99,101,110,101, 0, 73,109, 97,103,101, 0, 71, 80, 85, 84,101,120,116,117,114,101, 0, 97,110,105,109, 0, 82,101,110,100,101, +114, 82,101,115,117,108,116, 0, 77, 84,101,120, 0, 84,101,120, 0, 80,108,117,103,105,110, 84,101,120, 0, 67, 66, 68, 97,116, + 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, 69,110,118, 77, 97,112, 0, 73,109, 66,117,102, 0, 80,111,105,110,116, 68,101, +110,115,105,116,121, 0, 86,111,120,101,108, 68, 97,116, 97, 0, 98, 78,111,100,101, 84,114,101,101, 0, 84,101,120, 77, 97,112, +112,105,110,103, 0, 76, 97,109,112, 0, 67,117,114,118,101, 77, 97,112,112,105,110,103, 0, 87, 97,118,101, 0, 86,111,108,117, +109,101, 83,101,116,116,105,110,103,115, 0, 77, 97,116,101,114,105, 97,108, 0, 71,114,111,117,112, 0, 86, 70,111,110,116, 0, + 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108,101,109, 0, 66,111,117,110,100, 66,111,120, 0, 77,101,116, 97, + 66, 97,108,108, 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110,102,111, 0, 84,101,120,116, 66,111,120, 0, 67,117,114,118,101, + 0, 80, 97,116,104, 0, 83,101,108, 66,111,120, 0, 69,100,105,116, 70,111,110,116, 0, 77,101,115,104, 0, 77, 70, 97, 99,101, + 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86,101,114,116, 0, 77, 69,100,103,101, 0, 77, 68,101,102,111,114, +109, 86,101,114,116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99,107,121, 0, 77, 83,101,108,101, 99,116, 0, 69,100,105,116, 77, +101,115,104, 0, 67,117,115,116,111,109, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 0, 80, 97,114,116,105, 97,108, 86, +105,115,105, 98,105,108,105,116,121, 0, 77, 68,101,102,111,114,109, 87,101,105,103,104,116, 0, 77, 84,101,120, 80,111,108,121, + 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111,111,112, 67,111,108, 0, 77, 70,108,111, 97,116, 80,114,111,112,101,114,116,121, + 0, 77, 73,110,116, 80,114,111,112,101,114,116,121, 0, 77, 83,116,114,105,110,103, 80,114,111,112,101,114,116,121, 0, 79,114, +105,103, 83,112, 97, 99,101, 70, 97, 99,101, 0, 77, 68,105,115,112,115, 0, 77,117,108,116,105,114,101,115, 67,111,108, 0, 77, +117,108,116,105,114,101,115, 67,111,108, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 70, 97, 99,101, 0, 77,117,108,116, +105,114,101,115, 69,100,103,101, 0, 77,117,108,116,105,114,101,115, 76,101,118,101,108, 0, 77,111,100,105,102,105,101,114, 68, + 97,116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 77, +111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,114,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,117, +105,108,100, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 97,115,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, + 0, 65,114,114, 97,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,105,114,114,111,114, 77,111,100,105,102,105,101, +114, 68, 97,116, 97, 0, 69,100,103,101, 83,112,108,105,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,101,118,101, +108, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 77,101,115,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, + 83,109,111,107,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 68,111,109, 97,105,110, 83,101,116, +116,105,110,103,115, 0, 83,109,111,107,101, 70,108,111,119, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 67,111,108, +108, 83,101,116,116,105,110,103,115, 0, 68,105,115,112,108, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 85, + 86, 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101, 99,105,109, 97,116,101, 77,111,100, +105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67, 97,115, +116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87, 97,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65, +114,109, 97,116,117,114,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 72,111,111,107, 77,111,100,105,102,105,101,114, + 68, 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 77, +111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 0, 67,108,111,116,104, 83,105,109, 83,101,116,116,105,110, +103,115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 80,111,105,110,116, 67, 97, 99,104,101, 0, + 67,111,108,108,105,115,105,111,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 86, 72, 84,114,101,101, 0, 83,117, +114,102, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101,114,105,118,101,100, 77,101,115,104, 0, 66, 86, + 72, 84,114,101,101, 70,114,111,109, 77,101,115,104, 0, 66,111,111,108,101, 97,110, 77,111,100,105,102,105,101,114, 68, 97,116, + 97, 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101, 0, 77, 68,101,102, 67,101,108,108, 0, 77,101,115,104, 68,101,102, +111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 77,111, +100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 0, 80, 97,114,116,105, 99, +108,101, 73,110,115,116, 97,110, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,120,112,108,111,100,101, 77,111, +100,105,102,105,101,114, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, + 70,108,117,105,100,115,105,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 83,101,116, +116,105,110,103,115, 0, 83,104,114,105,110,107,119,114, 97,112, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,105,109, +112,108,101, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,104, 97,112,101, 75,101,121, 77,111, +100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,108,105,100,105,102,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, + 83, 99,114,101,119, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 0, 98, 68,101,102,111,114, +109, 71,114,111,117,112, 0, 83, 99,117,108,112,116, 83,101,115,115,105,111,110, 0, 98, 65, 99,116,105,111,110, 0, 98, 80,111, +115,101, 0, 98, 71, 80,100, 97,116, 97, 0, 98, 65,110,105,109, 86,105,122, 83,101,116,116,105,110,103,115, 0, 98, 77,111,116, +105,111,110, 80, 97,116,104, 0, 66,117,108,108,101,116, 83,111,102,116, 66,111,100,121, 0, 80, 97,114,116, 68,101,102,108,101, + 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 79, 98, 72,111,111,107, 0, 68,117,112,108,105, 79, 98,106,101, 99,116, 0, 82, + 78, 71, 0, 69,102,102,101, 99,116,111,114, 87,101,105,103,104,116,115, 0, 80, 84, 67, 97, 99,104,101, 77,101,109, 0, 80, 84, + 67, 97, 99,104,101, 69,100,105,116, 0, 83, 66, 86,101,114,116,101,120, 0, 66,111,100,121, 80,111,105,110,116, 0, 66,111,100, +121, 83,112,114,105,110,103, 0, 83, 66, 83, 99,114, 97,116, 99,104, 0, 87,111,114,108,100, 0, 66, 97,115,101, 0, 65,118,105, + 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, + 99,107,116,105,109,101, 67,111,100,101, 99, 83,101,116,116,105,110,103,115, 0, 70, 70, 77,112,101,103, 67,111,100,101, 99, 68, + 97,116, 97, 0, 65,117,100,105,111, 68, 97,116, 97, 0, 83, 99,101,110,101, 82,101,110,100,101,114, 76, 97,121,101,114, 0, 82, +101,110,100,101,114, 68, 97,116, 97, 0, 82,101,110,100,101,114, 80,114,111,102,105,108,101, 0, 71, 97,109,101, 68,111,109,101, + 0, 71, 97,109,101, 70,114, 97,109,105,110,103, 0, 71, 97,109,101, 68, 97,116, 97, 0, 84,105,109,101, 77, 97,114,107,101,114, + 0, 80, 97,105,110,116, 0, 66,114,117,115,104, 0, 73,109, 97,103,101, 80, 97,105,110,116, 83,101,116,116,105,110,103,115, 0, + 80, 97,114,116,105, 99,108,101, 66,114,117,115,104, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 69,100,105,116, 83,101, +116,116,105,110,103,115, 0, 84,114, 97,110,115,102,111,114,109, 79,114,105,101,110,116, 97,116,105,111,110, 0, 83, 99,117,108, +112,116, 0, 86, 80, 97,105,110,116, 0, 84,111,111,108, 83,101,116,116,105,110,103,115, 0, 98, 83,116, 97,116,115, 0, 85,110, +105,116, 83,101,116,116,105,110,103,115, 0, 80,104,121,115,105, 99,115, 83,101,116,116,105,110,103,115, 0, 69,100,105,116,105, +110,103, 0, 83, 99,101,110,101, 83,116, 97,116,115, 0, 68, 97,103, 70,111,114,101,115,116, 0, 66, 71,112,105, 99, 0, 82,101, +103,105,111,110, 86,105,101,119, 51, 68, 0, 82,101,110,100,101,114, 73,110,102,111, 0, 82,101,116,111,112,111, 86,105,101,119, + 68, 97,116, 97, 0, 86,105,101,119, 68,101,112,116,104,115, 0, 83,109,111,111,116,104, 86,105,101,119, 83,116,111,114,101, 0, +119,109, 84,105,109,101,114, 0, 86,105,101,119, 51, 68, 0, 83,112, 97, 99,101, 76,105,110,107, 0, 86,105,101,119, 50, 68, 0, + 83,112, 97, 99,101, 73,110,102,111, 0, 98, 83, 99,114,101,101,110, 0, 83,112, 97, 99,101, 73,112,111, 0, 98, 68,111,112,101, + 83,104,101,101,116, 0, 83,112, 97, 99,101, 66,117,116,115, 0, 83,112, 97, 99,101, 83,101,113, 0, 70,105,108,101, 83,101,108, +101, 99,116, 80, 97,114, 97,109,115, 0, 83,112, 97, 99,101, 70,105,108,101, 0, 70,105,108,101, 76,105,115,116, 0,119,109, 79, +112,101,114, 97,116,111,114, 0, 70,105,108,101, 76, 97,121,111,117,116, 0, 83,112, 97, 99,101, 79,111,112,115, 0, 84,114,101, +101, 83,116,111,114,101, 0, 84,114,101,101, 83,116,111,114,101, 69,108,101,109, 0, 83,112, 97, 99,101, 73,109, 97,103,101, 0, + 83, 99,111,112,101,115, 0, 72,105,115,116,111,103,114, 97,109, 0, 83,112, 97, 99,101, 78,108, 97, 0, 83,112, 97, 99,101, 84, +101,120,116, 0, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 84,105,109,101, + 67, 97, 99,104,101, 0, 83,112, 97, 99,101, 84,105,109,101, 0, 83,112, 97, 99,101, 78,111,100,101, 0, 83,112, 97, 99,101, 76, +111,103,105, 99, 0, 83,112, 97, 99,101, 73,109, 97, 83,101,108, 0, 67,111,110,115,111,108,101, 76,105,110,101, 0, 83,112, 97, + 99,101, 67,111,110,115,111,108,101, 0, 83,112, 97, 99,101, 85,115,101,114, 80,114,101,102, 0,117,105, 70,111,110,116, 0,117, +105, 70,111,110,116, 83,116,121,108,101, 0,117,105, 83,116,121,108,101, 0,117,105, 87,105,100,103,101,116, 67,111,108,111,114, +115, 0,117,105, 87,105,100,103,101,116, 83,116, 97,116,101, 67,111,108,111,114,115, 0, 84,104,101,109,101, 85, 73, 0, 84,104, +101,109,101, 83,112, 97, 99,101, 0, 84,104,101,109,101, 87,105,114,101, 67,111,108,111,114, 0, 98, 84,104,101,109,101, 0, 98, + 65,100,100,111,110, 0, 83,111,108,105,100, 76,105,103,104,116, 0, 85,115,101,114, 68,101,102, 0, 83, 99,114, 86,101,114,116, + 0, 83, 99,114, 69,100,103,101, 0, 80, 97,110,101,108, 0, 80, 97,110,101,108, 84,121,112,101, 0,117,105, 76, 97,121,111,117, +116, 0, 83, 99,114, 65,114,101, 97, 0, 83,112, 97, 99,101, 84,121,112,101, 0, 65, 82,101,103,105,111,110, 0, 65, 82,101,103, +105,111,110, 84,121,112,101, 0, 70,105,108,101, 71,108,111, 98, 97,108, 0, 83,116,114,105,112, 69,108,101,109, 0, 84, 83,116, +114,105,112, 69,108,101,109, 0, 83,116,114,105,112, 67,114,111,112, 0, 83,116,114,105,112, 84,114, 97,110,115,102,111,114,109, + 0, 83,116,114,105,112, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 83,116,114,105,112, 80,114,111,120,121, 0, 83,116, +114,105,112, 0, 80,108,117,103,105,110, 83,101,113, 0, 83,101,113,117,101,110, 99,101, 0, 98, 83,111,117,110,100, 0, 77,101, +116, 97, 83,116, 97, 99,107, 0, 87,105,112,101, 86, 97,114,115, 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, 97,110,115,102, +111,114,109, 86, 97,114,115, 0, 83,111,108,105,100, 67,111,108,111,114, 86, 97,114,115, 0, 83,112,101,101,100, 67,111,110,116, +114,111,108, 86, 97,114,115, 0, 69,102,102,101, 99,116, 0, 66,117,105,108,100, 69,102,102, 0, 80, 97,114,116, 69,102,102, 0, + 80, 97,114,116,105, 99,108,101, 0, 87, 97,118,101, 69,102,102, 0, 98, 80,114,111,112,101,114,116,121, 0, 98, 78,101, 97,114, + 83,101,110,115,111,114, 0, 98, 77,111,117,115,101, 83,101,110,115,111,114, 0, 98, 84,111,117, 99,104, 83,101,110,115,111,114, + 0, 98, 75,101,121, 98,111, 97,114,100, 83,101,110,115,111,114, 0, 98, 80,114,111,112,101,114,116,121, 83,101,110,115,111,114, + 0, 98, 65, 99,116,117, 97,116,111,114, 83,101,110,115,111,114, 0, 98, 68,101,108, 97,121, 83,101,110,115,111,114, 0, 98, 67, +111,108,108,105,115,105,111,110, 83,101,110,115,111,114, 0, 98, 82, 97,100, 97,114, 83,101,110,115,111,114, 0, 98, 82, 97,110, +100,111,109, 83,101,110,115,111,114, 0, 98, 82, 97,121, 83,101,110,115,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 83,101, +110,115,111,114, 0, 98, 77,101,115,115, 97,103,101, 83,101,110,115,111,114, 0, 98, 83,101,110,115,111,114, 0, 98, 67,111,110, +116,114,111,108,108,101,114, 0, 98, 74,111,121,115,116,105, 99,107, 83,101,110,115,111,114, 0, 98, 69,120,112,114,101,115,115, +105,111,110, 67,111,110,116, 0, 98, 80,121,116,104,111,110, 67,111,110,116, 0, 98, 65, 99,116,117, 97,116,111,114, 0, 98, 65, +100,100, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 65, 99,116,105,111,110, 65, 99,116,117, 97,116,111,114, + 0, 98, 83,111,117,110,100, 65, 99,116,117, 97,116,111,114, 0, 83,111,117,110,100, 51, 68, 0, 98, 69,100,105,116, 79, 98,106, +101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83, 99,101,110,101, 65, 99,116,117, 97,116,111,114, 0, 98, 80,114,111,112, +101,114,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 73,112, +111, 65, 99,116,117, 97,116,111,114, 0, 98, 67, 97,109,101,114, 97, 65, 99,116,117, 97,116,111,114, 0, 98, 67,111,110,115,116, +114, 97,105,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 71,114,111,117,112, 65, 99,116,117, 97,116,111,114, 0, 98, 82, 97, +110,100,111,109, 65, 99,116,117, 97,116,111,114, 0, 98, 77,101,115,115, 97,103,101, 65, 99,116,117, 97,116,111,114, 0, 98, 71, + 97,109,101, 65, 99,116,117, 97,116,111,114, 0, 98, 86,105,115,105, 98,105,108,105,116,121, 65, 99,116,117, 97,116,111,114, 0, + 98, 84,119,111, 68, 70,105,108,116,101,114, 65, 99,116,117, 97,116,111,114, 0, 98, 80, 97,114,101,110,116, 65, 99,116,117, 97, +116,111,114, 0, 98, 83,116, 97,116,101, 65, 99,116,117, 97,116,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 65, 99,116,117, + 97,116,111,114, 0, 70,114,101,101, 67, 97,109,101,114, 97, 0, 83,112, 97, 99,101, 83,111,117,110,100, 0, 71,114,111,117,112, + 79, 98,106,101, 99,116, 0, 66,111,110,101, 0, 98, 65,114,109, 97,116,117,114,101, 0, 98, 77,111,116,105,111,110, 80, 97,116, +104, 86,101,114,116, 0, 98, 80,111,115,101, 67,104, 97,110,110,101,108, 0, 71, 72, 97,115,104, 0, 98, 73, 75, 80, 97,114, 97, +109, 0, 98, 73,116, 97,115, 99, 0, 98, 65, 99,116,105,111,110, 71,114,111,117,112, 0, 83,112, 97, 99,101, 65, 99,116,105,111, +110, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 67,104, 97,110, +110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 84, 97,114,103,101, +116, 0, 98, 80,121,116,104,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 75,105,110,101,109, 97,116,105, 99, 67,111, +110,115,116,114, 97,105,110,116, 0, 98, 83,112,108,105,110,101, 73, 75, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, + 97, 99,107, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,101, 76,105,107,101, 67,111,110,115,116, +114, 97,105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122, +101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83, 97,109,101, 86,111,108,117,109,101, 67,111,110,115,116, +114, 97,105,110,116, 0, 98, 84,114, 97,110,115, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 77,105,110, 77, + 97,120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, + 76,111, 99,107, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68, 97,109,112, 84,114, 97, 99,107, 67,111, +110,115,116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111,110,115,116,114, 97,105,110,116, 0, 98, + 83,116,114,101,116, 99,104, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,105,103,105,100, 66,111,100,121, 74,111, +105,110,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, 67,111,110,115,116,114, 97,105,110,116, + 0, 98, 67,104,105,108,100, 79,102, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115,102,111,114,109, 67,111, +110,115,116,114, 97,105,110,116, 0, 98, 80,105,118,111,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 76,105, +109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110, +116, 0, 98, 83,105,122,101, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68,105,115,116, 76,105,109,105, +116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,104,114,105,110,107,119,114, 97,112, 67,111,110,115,116,114, 97,105,110, +116, 0, 98, 65, 99,116,105,111,110, 77,111,100,105,102,105,101,114, 0, 98, 65, 99,116,105,111,110, 83,116,114,105,112, 0, 98, + 78,111,100,101, 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 0, 98, 78,111,100,101, 76,105,110,107, 0, + 98, 78,111,100,101, 0, 98, 78,111,100,101, 80,114,101,118,105,101,119, 0,117,105, 66,108,111, 99,107, 0, 98, 78,111,100,101, + 84,121,112,101, 0, 78,111,100,101, 73,109, 97,103,101, 65,110,105,109, 0, 78,111,100,101, 66,108,117,114, 68, 97,116, 97, 0, + 78,111,100,101, 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 66,105,108, 97,116,101,114, 97,108, 66,108,117,114, 68, + 97,116, 97, 0, 78,111,100,101, 72,117,101, 83, 97,116, 0, 78,111,100,101, 73,109, 97,103,101, 70,105,108,101, 0, 78,111,100, +101, 67,104,114,111,109, 97, 0, 78,111,100,101, 84,119,111, 88, 89,115, 0, 78,111,100,101, 84,119,111, 70,108,111, 97,116,115, + 0, 78,111,100,101, 71,101,111,109,101,116,114,121, 0, 78,111,100,101, 86,101,114,116,101,120, 67,111,108, 0, 78,111,100,101, + 68,101,102,111, 99,117,115, 0, 78,111,100,101, 83, 99,114,105,112,116, 68,105, 99,116, 0, 78,111,100,101, 71,108, 97,114,101, + 0, 78,111,100,101, 84,111,110,101,109, 97,112, 0, 78,111,100,101, 76,101,110,115, 68,105,115,116, 0, 78,111,100,101, 67,111, +108,111,114, 66, 97,108, 97,110, 99,101, 0, 78,111,100,101, 67,111,108,111,114,115,112,105,108,108, 0, 84,101,120, 78,111,100, +101, 79,117,116,112,117,116, 0, 67,117,114,118,101, 77, 97,112, 80,111,105,110,116, 0, 67,117,114,118,101, 77, 97,112, 0, 66, +114,117,115,104, 67,108,111,110,101, 0, 67,117,115,116,111,109, 68, 97,116, 97, 76, 97,121,101,114, 0, 67,117,115,116,111,109, + 68, 97,116, 97, 69,120,116,101,114,110, 97,108, 0, 72, 97,105,114, 75,101,121, 0, 80, 97,114,116,105, 99,108,101, 75,101,121, + 0, 66,111,105,100, 80, 97,114,116,105, 99,108,101, 0, 66,111,105,100, 68, 97,116, 97, 0, 67,104,105,108,100, 80, 97,114,116, +105, 99,108,101, 0, 80, 97,114,116,105, 99,108,101, 84, 97,114,103,101,116, 0, 80, 97,114,116,105, 99,108,101, 68,117,112,108, +105, 87,101,105,103,104,116, 0, 80, 97,114,116,105, 99,108,101, 68, 97,116, 97, 0, 83, 80, 72, 70,108,117,105,100, 83,101,116, +116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 83,101,116,116,105,110,103,115, 0, 66,111,105,100, 83,101,116,116,105, +110,103,115, 0, 80, 97,114,116,105, 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 75, 68, 84,114,101,101, 0, 80, 97,114,116, +105, 99,108,101, 68,114, 97,119, 68, 97,116, 97, 0, 76,105,110,107, 78,111,100,101, 0, 98, 71, 80, 68,115,112,111,105,110,116, + 0, 98, 71, 80, 68,115,116,114,111,107,101, 0, 98, 71, 80, 68,102,114, 97,109,101, 0, 98, 71, 80, 68,108, 97,121,101,114, 0, + 82,101,112,111,114,116, 0, 82,101,112,111,114,116, 76,105,115,116, 0, 82,101,112,111,114,116, 84,105,109,101,114, 73,110,102, +111, 0,119,109, 87,105,110,100,111,119, 77, 97,110, 97,103,101,114, 0,119,109, 87,105,110,100,111,119, 0,119,109, 75,101,121, + 67,111,110,102,105,103, 0,119,109, 69,118,101,110,116, 0,119,109, 83,117, 98, 87,105,110,100,111,119, 0,119,109, 71,101,115, +116,117,114,101, 0,119,109, 75,101,121, 77, 97,112, 73,116,101,109, 0, 80,111,105,110,116,101,114, 82, 78, 65, 0,119,109, 75, +101,121, 77, 97,112, 0,119,109, 79,112,101,114, 97,116,111,114, 84,121,112,101, 0, 70, 77,111,100,105,102,105,101,114, 0, 70, + 77,111,100, 95, 71,101,110,101,114, 97,116,111,114, 0, 70, 77,111,100, 95, 70,117,110, 99,116,105,111,110, 71,101,110,101,114, + 97,116,111,114, 0, 70, 67, 77, 95, 69,110,118,101,108,111,112,101, 68, 97,116, 97, 0, 70, 77,111,100, 95, 69,110,118,101,108, +111,112,101, 0, 70, 77,111,100, 95, 67,121, 99,108,101,115, 0, 70, 77,111,100, 95, 80,121,116,104,111,110, 0, 70, 77,111,100, + 95, 76,105,109,105,116,115, 0, 70, 77,111,100, 95, 78,111,105,115,101, 0, 70, 77,111,100, 95, 83,116,101,112,112,101,100, 0, + 68,114,105,118,101,114, 84, 97,114,103,101,116, 0, 68,114,105,118,101,114, 86, 97,114, 0, 67,104, 97,110,110,101,108, 68,114, +105,118,101,114, 0, 70, 80,111,105,110,116, 0, 70, 67,117,114,118,101, 0, 65,110,105,109, 77, 97,112, 80, 97,105,114, 0, 65, +110,105,109, 77, 97,112,112,101,114, 0, 78,108, 97, 83,116,114,105,112, 0, 78,108, 97, 84,114, 97, 99,107, 0, 75, 83, 95, 80, + 97,116,104, 0, 75,101,121,105,110,103, 83,101,116, 0, 65,110,105,109, 79,118,101,114,114,105,100,101, 0, 73,100, 65,100,116, + 84,101,109,112,108, 97,116,101, 0, 66,111,105,100, 82,117,108,101, 0, 66,111,105,100, 82,117,108,101, 71,111, 97,108, 65,118, +111,105,100, 0, 66,111,105,100, 82,117,108,101, 65,118,111,105,100, 67,111,108,108,105,115,105,111,110, 0, 66,111,105,100, 82, +117,108,101, 70,111,108,108,111,119, 76,101, 97,100,101,114, 0, 66,111,105,100, 82,117,108,101, 65,118,101,114, 97,103,101, 83, +112,101,101,100, 0, 66,111,105,100, 82,117,108,101, 70,105,103,104,116, 0, 66,111,105,100, 83,116, 97,116,101, 0, 70, 76, 85, + 73, 68, 95, 51, 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 0, 0, 0, 84, 76, 69, 78, 1, 0, 1, 0, 2, 0, 2, 0, + 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 0, 0, 8, 0, 12, 0, 8, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, 12, 0, 24, 0, + 16, 0, 16, 0, 32, 0, 16, 0, 16, 0, 20, 0, 76, 0, 52, 0, 40, 2, 0, 0, 32, 0,140, 0,220, 3, 92, 0, 36, 0, 56, 0, + 84, 0,112, 0,124, 0, 56, 0, 24, 0, 40, 0,120, 0, 12, 0,104, 0, 36, 0,120, 5,156, 1, 0, 0, 0, 0, 0, 0, 8, 1, + 48, 1, 84, 1, 24, 0, 8, 3,168, 0, 0, 0, 72, 0, 32, 1,152, 0,132, 0,108, 1, 16, 1, 56, 0, 88, 0,160, 2, 76, 0, + 60, 1, 0, 0,108, 0,104, 0,148, 0, 56, 0, 8, 0, 16, 0, 92, 1, 0, 0, 0, 0, 0, 0, 40, 1, 20, 0, 44, 0, 60, 0, + 24, 0, 12, 0, 12, 0, 4, 0, 8, 0, 8, 0, 0, 0, 28, 0, 84, 0, 32, 0, 8, 0, 12, 0, 8, 0, 8, 0, 4, 0, 4, 0, + 0, 1, 32, 0, 12, 0, 16, 0, 64, 0, 24, 0, 12, 0, 40, 0, 64, 0, 80, 0,100, 0,108, 0, 80, 0,108, 0,128, 0, 76, 0, + 72, 0,120, 0, 72, 0, 84, 0,188, 0, 48, 0,168, 0,160, 0,172, 0, 72, 0,104, 0,116, 0,196, 0,112, 0,224, 0, 64, 0, + 92, 0, 0, 0,144, 0, 32, 0,240, 1,112, 0, 0, 0, 88, 0, 0, 0, 0, 0, 76, 0, 8, 0, 8, 0,244, 0, 88, 0,124, 1, + 84, 0, 76, 0, 72, 0, 72, 0,176, 1,120, 0,116, 0, 64, 0,120, 0, 92, 0,220, 0, 40, 0, 0, 0, 92, 0,148, 0, 72, 0, + 48, 0, 20, 0,120, 0,144, 0, 88, 1,208, 0,180, 0, 0, 0, 68, 0, 92, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,120, 1, + 28, 0,176, 0,144, 0, 64, 0, 60, 0, 24, 0, 72, 0,232, 3, 56, 0, 20, 0, 16, 0,100, 0, 84, 0, 24, 0,200, 1, 44, 0, + 16, 0,156, 0, 80, 0, 96, 0, 44, 0,144, 1, 32, 0, 8, 0, 24, 0, 56, 2, 0, 0, 0, 0, 72, 0, 72, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,248, 0, 40, 0,140, 0, 48, 0,140, 0,208, 0, 24, 0,216, 0,216, 0,200, 1, 60, 0, 0, 0,120, 0, + 0, 0,252, 0, 12, 0, 12, 0, 24, 33,112, 16, 24, 16,192, 0,124, 2, 80, 2, 40, 0, 36, 0,188, 0,244, 0, 52, 0,140, 2, + 28, 0,112, 1, 88, 0, 16, 1, 32, 0,224, 0, 32, 0, 32, 0,112, 2,104, 1, 16, 0, 48, 29, 72, 0, 56, 0,248, 12, 20, 0, + 24, 0, 64, 1, 0, 0, 0, 0, 96, 0, 0, 0,248, 0, 0, 0, 16, 1, 80, 0, 28, 0, 16, 0, 8, 0, 44, 0,252, 0,240, 0, +168, 1,216, 0, 92, 1, 16, 0, 12, 0, 24, 0, 52, 0, 16, 0, 20, 0, 16, 0, 24, 0, 56, 1, 0, 0, 56, 0, 52, 0, 48, 0, + 8, 0, 44, 0, 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 72, 0, 68, 0, 76, 0, 80, 0, 60, 0,128, 0, + 76, 0, 60, 0, 12, 0, 92, 0, 68, 0, 32, 0, 80, 0, 16, 0, 76, 0,108, 0, 84, 0, 28, 0, 96, 0, 56, 0, 56, 0,108, 0, +140, 0, 4, 0, 20, 0, 12, 0, 8, 0, 80, 0, 40, 0,188, 0, 24, 0, 16, 1,144, 0, 16, 0,204, 1, 0, 0, 4, 0, 40, 0, +104, 0,216, 0, 64, 0, 44, 0, 72, 0,116, 0, 60, 0,112, 0, 16, 0, 52, 0, 44, 0, 44, 0, 44, 0, 8, 0, 36, 0, 68, 0, + 64, 0, 44, 0, 44, 0, 20, 0, 52, 0, 96, 0, 12, 0,108, 0, 92, 0, 52, 0, 28, 0, 28, 0, 28, 0, 52, 0, 20, 0, 60, 0, +140, 0, 36, 0,120, 0, 32, 0,180, 0, 0, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, 44, 0, 8, 0, + 8, 0, 64, 0, 32, 0, 24, 0, 8, 0, 24, 0, 32, 0, 8, 0, 84, 0, 20, 0, 32, 0, 12, 0, 44, 0, 20, 0, 68, 0,240, 0, + 24, 0, 56, 0, 52, 0, 20, 0, 64, 0, 28, 0, 20, 0,180, 0, 36, 0,200, 1, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, + 20, 0, 24, 0,172, 0, 24, 0, 28, 0, 20, 0,168, 0,148, 0,152, 0, 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 96, 0, 0, 0, + 88, 0, 20, 0, 24, 0, 16, 0, 20, 0, 8, 0, 8, 0, 24, 0, 20, 0, 20, 0, 48, 0,208, 1, 28, 1, 16, 0, 68, 0, 0, 1, + 20, 0,160, 0, 88, 0, 96, 0,152, 0, 20, 0, 56, 0, 48, 0, 68, 0, 56, 0, 92, 0, 64, 0, 56, 0, 96, 0, 0, 0, 0, 0, + 83, 84, 82, 67,153, 1, 0, 0, 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0, 11, 0, 1, 0, + 9, 0, 2, 0, 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4, 0, 13, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0, 14, 0, 2, 0, + 7, 0, 5, 0, 7, 0, 6, 0, 15, 0, 2, 0, 4, 0, 5, 0, 4, 0, 6, 0, 16, 0, 2, 0, 8, 0, 5, 0, 8, 0, 6, 0, + 17, 0, 3, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 18, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, + 19, 0, 3, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 20, 0, 4, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, + 4, 0, 8, 0, 21, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 8, 0, 22, 0, 4, 0, 8, 0, 5, 0, + 8, 0, 6, 0, 8, 0, 7, 0, 8, 0, 8, 0, 23, 0, 4, 0, 4, 0, 9, 0, 4, 0, 10, 0, 4, 0, 11, 0, 4, 0, 12, 0, + 24, 0, 4, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 25, 0, 4, 0, 9, 0, 13, 0, 12, 0, 14, 0, + 4, 0, 15, 0, 4, 0, 16, 0, 26, 0, 10, 0, 26, 0, 0, 0, 26, 0, 1, 0, 0, 0, 17, 0, 0, 0, 18, 0, 2, 0, 19, 0, + 0, 0, 20, 0, 4, 0, 21, 0, 25, 0, 22, 0, 4, 0, 23, 0, 4, 0, 24, 0, 27, 0, 9, 0, 9, 0, 0, 0, 9, 0, 1, 0, + 27, 0, 25, 0, 28, 0, 26, 0, 0, 0, 27, 0, 2, 0, 28, 0, 2, 0, 19, 0, 4, 0, 29, 0, 26, 0, 30, 0, 28, 0, 8, 0, + 27, 0, 31, 0, 27, 0, 32, 0, 29, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 4, 0, 36, 0, 4, 0, 37, 0, 28, 0, 38, 0, + 30, 0, 5, 0, 4, 0, 39, 0, 4, 0, 40, 0, 2, 0, 41, 0, 2, 0, 42, 0, 4, 0, 43, 0, 31, 0, 6, 0, 32, 0, 44, 0, + 2, 0, 45, 0, 2, 0, 46, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 47, 0, 33, 0, 21, 0, 33, 0, 0, 0, 33, 0, 1, 0, + 34, 0, 48, 0, 35, 0, 49, 0, 24, 0, 50, 0, 24, 0, 51, 0, 2, 0, 45, 0, 2, 0, 46, 0, 2, 0, 52, 0, 2, 0, 53, 0, + 2, 0, 54, 0, 2, 0, 55, 0, 2, 0, 19, 0, 2, 0, 56, 0, 7, 0, 11, 0, 7, 0, 12, 0, 4, 0, 57, 0, 7, 0, 58, 0, + 7, 0, 59, 0, 7, 0, 60, 0, 31, 0, 61, 0, 36, 0, 7, 0, 27, 0, 31, 0, 12, 0, 62, 0, 24, 0, 63, 0, 2, 0, 45, 0, + 2, 0, 64, 0, 2, 0, 65, 0, 2, 0, 37, 0, 37, 0, 16, 0, 37, 0, 0, 0, 37, 0, 1, 0, 7, 0, 66, 0, 7, 0, 60, 0, + 2, 0, 17, 0, 2, 0, 46, 0, 2, 0, 67, 0, 2, 0, 19, 0, 4, 0, 68, 0, 4, 0, 69, 0, 9, 0, 2, 0, 7, 0, 70, 0, + 0, 0, 20, 0, 0, 0, 71, 0, 7, 0, 72, 0, 7, 0, 73, 0, 38, 0, 13, 0, 27, 0, 31, 0, 39, 0, 74, 0, 37, 0, 75, 0, + 0, 0, 76, 0, 4, 0, 77, 0, 7, 0, 60, 0, 12, 0, 78, 0, 36, 0, 79, 0, 27, 0, 80, 0, 2, 0, 17, 0, 2, 0, 81, 0, + 2, 0, 82, 0, 2, 0, 19, 0, 40, 0, 6, 0, 40, 0, 0, 0, 40, 0, 1, 0, 0, 0, 83, 0, 0, 0, 84, 0, 4, 0, 23, 0, + 4, 0, 85, 0, 41, 0, 10, 0, 41, 0, 0, 0, 41, 0, 1, 0, 4, 0, 86, 0, 4, 0, 87, 0, 4, 0, 88, 0, 4, 0, 89, 0, + 4, 0, 14, 0, 4, 0, 90, 0, 0, 0, 91, 0, 0, 0, 92, 0, 42, 0, 15, 0, 27, 0, 31, 0, 0, 0, 93, 0, 4, 0, 90, 0, + 4, 0, 94, 0, 12, 0, 95, 0, 40, 0, 96, 0, 40, 0, 97, 0, 4, 0, 98, 0, 4, 0, 99, 0, 12, 0,100, 0, 0, 0,101, 0, + 4, 0,102, 0, 4, 0,103, 0, 9, 0,104, 0, 8, 0,105, 0, 43, 0, 3, 0, 4, 0,106, 0, 4, 0,107, 0, 9, 0, 2, 0, + 44, 0, 15, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,108, 0, 7, 0,109, 0, 7, 0,110, 0, + 7, 0,111, 0, 7, 0,112, 0, 7, 0,113, 0, 7, 0,114, 0, 7, 0,115, 0, 7, 0,116, 0, 36, 0, 79, 0, 32, 0,117, 0, + 45, 0, 13, 0, 4, 0,118, 0, 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, 2, 0,122, 0, 2, 0,123, 0, 2, 0, 19, 0, + 2, 0,124, 0, 2, 0,125, 0, 2, 0,126, 0, 2, 0,127, 0, 2, 0,128, 0, 46, 0,129, 0, 47, 0, 32, 0, 27, 0, 31, 0, + 0, 0, 34, 0, 12, 0,130, 0, 48, 0,131, 0, 49, 0,132, 0, 50, 0,133, 0, 50, 0,134, 0, 2, 0,135, 0, 2, 0,136, 0, + 2, 0,124, 0, 2, 0, 19, 0, 2, 0,137, 0, 2, 0, 17, 0, 4, 0,138, 0, 2, 0,139, 0, 2, 0,140, 0, 2, 0,141, 0, + 2, 0,142, 0, 2, 0,143, 0, 2, 0,144, 0, 4, 0,145, 0, 4, 0,146, 0, 43, 0,147, 0, 30, 0,148, 0, 7, 0,149, 0, + 4, 0,150, 0, 2, 0,151, 0, 2, 0,152, 0, 2, 0,153, 0, 2, 0,154, 0, 7, 0,155, 0, 7, 0,156, 0, 51, 0, 63, 0, + 2, 0,157, 0, 2, 0,158, 0, 2, 0,159, 0, 2, 0,160, 0, 32, 0,161, 0, 52, 0,162, 0, 0, 0,163, 0, 0, 0,164, 0, + 0, 0,165, 0, 0, 0,166, 0, 0, 0,167, 0, 7, 0,168, 0, 7, 0,169, 0, 7, 0,170, 0, 2, 0,171, 0, 2, 0,172, 0, + 2, 0,173, 0, 2, 0,174, 0, 2, 0,175, 0, 2, 0,176, 0, 0, 0,177, 0, 0, 0,178, 0, 7, 0,179, 0, 7, 0,180, 0, + 7, 0,181, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0, 56, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0,186, 0, 7, 0,187, 0, + 7, 0,188, 0, 7, 0,189, 0, 7, 0,190, 0, 7, 0,191, 0, 7, 0,192, 0, 7, 0,193, 0, 7, 0,194, 0, 7, 0,195, 0, + 7, 0,196, 0, 7, 0,197, 0, 7, 0,198, 0, 7, 0,199, 0, 7, 0,200, 0, 7, 0,201, 0, 7, 0,202, 0, 7, 0,203, 0, + 7, 0,204, 0, 7, 0,205, 0, 7, 0,206, 0, 7, 0,207, 0, 7, 0,208, 0, 7, 0,209, 0, 7, 0,210, 0, 7, 0,211, 0, + 7, 0,212, 0, 7, 0,213, 0, 7, 0,214, 0, 7, 0,215, 0, 7, 0,216, 0, 7, 0,217, 0, 7, 0,218, 0, 53, 0, 15, 0, + 0, 0,219, 0, 9, 0,220, 0, 0, 0,221, 0, 0, 0,222, 0, 4, 0,223, 0, 4, 0,224, 0, 9, 0,225, 0, 7, 0,226, 0, + 7, 0,227, 0, 7, 0,228, 0, 4, 0,229, 0, 9, 0,230, 0, 9, 0,231, 0, 4, 0,232, 0, 4, 0, 37, 0, 54, 0, 6, 0, + 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,233, 0, 7, 0, 66, 0, 4, 0, 63, 0, 55, 0, 5, 0, 2, 0, 19, 0, + 2, 0, 36, 0, 2, 0, 63, 0, 2, 0,234, 0, 54, 0,228, 0, 56, 0, 17, 0, 32, 0,161, 0, 47, 0,235, 0, 57, 0,236, 0, + 7, 0,237, 0, 7, 0,238, 0, 2, 0, 17, 0, 2, 0,239, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0,240, 0, 4, 0,241, 0, + 2, 0,242, 0, 2, 0,243, 0, 4, 0,124, 0, 4, 0,138, 0, 2, 0,244, 0, 2, 0,245, 0, 58, 0, 22, 0, 2, 0, 19, 0, + 2, 0,246, 0, 7, 0,247, 0, 7, 0,248, 0, 2, 0,137, 0, 2, 0,249, 0, 4, 0,250, 0, 4, 0,251, 0, 32, 0,161, 0, + 4, 0,252, 0, 2, 0,253, 0, 2, 0,254, 0, 9, 0,255, 0, 7, 0, 0, 1, 7, 0, 1, 1, 2, 0, 2, 1, 2, 0, 3, 1, + 2, 0, 4, 1, 2, 0, 5, 1, 7, 0, 6, 1, 7, 0, 7, 1, 55, 0, 8, 1, 59, 0, 13, 0, 4, 0, 9, 1, 4, 0, 10, 1, + 2, 0, 11, 1, 2, 0, 19, 0, 2, 0, 12, 1, 2, 0, 13, 1, 32, 0,161, 0, 7, 0, 14, 1, 4, 0, 15, 1, 0, 0, 16, 1, + 7, 0, 17, 1, 4, 0, 18, 1, 4, 0,124, 0, 52, 0, 63, 0, 27, 0, 31, 0, 39, 0, 74, 0, 7, 0, 19, 1, 7, 0, 20, 1, + 7, 0, 21, 1, 7, 0, 22, 1, 7, 0, 23, 1, 7, 0, 24, 1, 7, 0, 25, 1, 7, 0, 26, 1, 7, 0, 27, 1, 7, 0, 69, 0, + 7, 0, 28, 1, 7, 0, 29, 1, 7, 0, 30, 1, 7, 0, 31, 1, 7, 0, 32, 1, 7, 0, 33, 1, 7, 0, 34, 1, 7, 0, 35, 1, + 7, 0, 36, 1, 7, 0, 37, 1, 7, 0, 38, 1, 7, 0, 39, 1, 2, 0, 40, 1, 2, 0, 41, 1, 2, 0, 42, 1, 2, 0, 43, 1, + 2, 0, 44, 1, 2, 0, 45, 1, 2, 0, 46, 1, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,239, 0, 7, 0, 47, 1, 7, 0, 48, 1, + 7, 0, 49, 1, 7, 0, 50, 1, 4, 0, 51, 1, 4, 0, 52, 1, 2, 0, 53, 1, 2, 0, 54, 1, 2, 0, 12, 1, 2, 0,122, 0, + 4, 0, 23, 0, 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, 7, 0, 55, 1, 7, 0, 56, 1, 7, 0, 89, 0, 45, 0, 57, 1, + 60, 0, 58, 1, 36, 0, 79, 0, 47, 0,235, 0, 53, 0, 59, 1, 55, 0, 8, 1, 56, 0, 60, 1, 30, 0,148, 0, 58, 0, 61, 1, + 59, 0, 62, 1, 0, 0, 63, 1, 0, 0,178, 0, 61, 0, 8, 0, 7, 0, 64, 1, 7, 0, 65, 1, 7, 0,169, 0, 4, 0, 19, 0, + 7, 0, 66, 1, 7, 0, 67, 1, 7, 0, 68, 1, 32, 0, 44, 0, 62, 0, 72, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 4, 0, 69, 1, 2, 0,172, 0, 2, 0, 70, 1, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,182, 0, + 7, 0, 71, 1, 7, 0, 72, 1, 7, 0, 73, 1, 7, 0, 74, 1, 7, 0, 75, 1, 7, 0, 76, 1, 7, 0, 77, 1, 7, 0, 78, 1, + 7, 0, 79, 1, 7, 0, 80, 1, 7, 0, 81, 1, 63, 0, 82, 1, 2, 0,246, 0, 2, 0, 69, 0, 7, 0,109, 0, 7, 0,110, 0, + 7, 0, 83, 1, 7, 0, 84, 1, 7, 0, 85, 1, 7, 0, 86, 1, 7, 0, 87, 1, 2, 0, 88, 1, 2, 0, 89, 1, 2, 0, 90, 1, + 2, 0, 91, 1, 0, 0, 92, 1, 0, 0, 93, 1, 2, 0, 94, 1, 2, 0, 95, 1, 2, 0, 96, 1, 2, 0, 97, 1, 2, 0, 98, 1, + 7, 0, 99, 1, 7, 0,100, 1, 7, 0,101, 1, 7, 0,102, 1, 2, 0,103, 1, 2, 0, 89, 0, 2, 0,104, 1, 2, 0,105, 1, + 2, 0,106, 1, 2, 0,107, 1, 7, 0,108, 1, 7, 0,109, 1, 7, 0,110, 1, 7, 0,111, 1, 7, 0,112, 1, 7, 0,113, 1, + 7, 0,114, 1, 7, 0,115, 1, 7, 0,116, 1, 7, 0,117, 1, 7, 0,118, 1, 7, 0,119, 1, 2, 0,120, 1, 0, 0,121, 1, + 36, 0, 79, 0, 51, 0,122, 1, 2, 0,123, 1, 0, 0,124, 1, 30, 0,148, 0, 64, 0, 2, 0, 27, 0, 31, 0, 36, 0, 79, 0, + 65, 0, 18, 0, 7, 0,125, 1, 7, 0,126, 1, 7, 0,127, 1, 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, 7, 0,131, 1, + 7, 0,132, 1, 7, 0,133, 1, 7, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 2, 0,137, 1, 2, 0,138, 1, 7, 0,139, 1, + 7, 0,140, 1, 7, 0,141, 1, 7, 0,142, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0,143, 1, 2, 0, 19, 0, + 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,144, 1, 7, 0,145, 1, 7, 0,146, 1, 7, 0,147, 1, 7, 0,148, 1, + 7, 0,149, 1, 7, 0,150, 1, 7, 0,151, 1, 7, 0,152, 1, 7, 0,153, 1, 7, 0,154, 1, 7, 0,155, 1, 7, 0,156, 1, + 7, 0,157, 1, 7, 0,158, 1, 7, 0,159, 1, 7, 0,160, 1, 7, 0,161, 1, 7, 0,162, 1, 7, 0,163, 1, 65, 0,164, 1, + 7, 0,165, 1, 7, 0,166, 1, 7, 0,167, 1, 7, 0,168, 1, 7, 0,169, 1, 7, 0,170, 1, 7, 0,171, 1, 2, 0,172, 1, + 2, 0,173, 1, 2, 0,174, 1, 0, 0,175, 1, 0, 0,176, 1, 7, 0,177, 1, 7, 0,178, 1, 2, 0,179, 1, 2, 0,180, 1, + 7, 0,181, 1, 7, 0,182, 1, 7, 0,183, 1, 7, 0,184, 1, 2, 0,185, 1, 2, 0,186, 1, 4, 0, 69, 1, 4, 0,187, 1, + 2, 0,188, 1, 2, 0,189, 1, 2, 0,190, 1, 2, 0,191, 1, 7, 0,192, 1, 7, 0,193, 1, 7, 0,194, 1, 7, 0,195, 1, + 7, 0,196, 1, 7, 0,197, 1, 7, 0,198, 1, 7, 0,199, 1, 7, 0,200, 1, 7, 0,201, 1, 0, 0,202, 1, 7, 0,203, 1, + 7, 0,204, 1, 7, 0,205, 1, 4, 0,206, 1, 0, 0,207, 1, 0, 0,104, 1, 0, 0,208, 1, 0, 0, 63, 1, 2, 0,209, 1, + 2, 0,210, 1, 2, 0,123, 1, 2, 0,211, 1, 2, 0,212, 1, 2, 0,213, 1, 7, 0,214, 1, 7, 0,215, 1, 7, 0,216, 1, + 7, 0,217, 1, 7, 0,218, 1, 2, 0,157, 0, 2, 0,158, 0, 55, 0,219, 1, 55, 0,220, 1, 0, 0,221, 1, 0, 0,222, 1, + 0, 0,223, 1, 0, 0,224, 1, 2, 0,225, 1, 2, 0,226, 1, 7, 0,227, 1, 7, 0,228, 1, 51, 0,122, 1, 60, 0, 58, 1, + 36, 0, 79, 0, 67, 0,229, 1, 30, 0,148, 0, 7, 0,230, 1, 7, 0,231, 1, 7, 0,232, 1, 7, 0,233, 1, 7, 0,234, 1, + 2, 0,235, 1, 2, 0, 69, 0, 7, 0,236, 1, 7, 0,237, 1, 7, 0,238, 1, 7, 0,239, 1, 7, 0,240, 1, 7, 0,241, 1, + 7, 0,242, 1, 7, 0,243, 1, 7, 0,244, 1, 2, 0,245, 1, 2, 0,246, 1, 4, 0,247, 1, 4, 0,248, 1, 12, 0,249, 1, + 68, 0, 4, 0, 27, 0, 31, 0, 0, 0,250, 1, 69, 0, 2, 0, 43, 0,147, 0, 70, 0, 26, 0, 70, 0, 0, 0, 70, 0, 1, 0, + 71, 0,251, 1, 4, 0,252, 1, 4, 0,253, 1, 4, 0,254, 1, 4, 0,255, 1, 4, 0, 0, 2, 4, 0, 1, 2, 2, 0, 17, 0, + 2, 0, 19, 0, 2, 0, 2, 2, 2, 0, 3, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 4, 2, 7, 0, 5, 2, + 7, 0, 6, 2, 7, 0, 7, 2, 7, 0, 8, 2, 7, 0, 9, 2, 7, 0, 10, 2, 7, 0, 23, 0, 7, 0, 11, 2, 7, 0, 12, 2, + 72, 0, 20, 0, 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 13, 2, 12, 0, 14, 2, 12, 0, 15, 2, 36, 0, 79, 0, + 66, 0, 16, 2, 0, 0, 19, 0, 0, 0, 17, 2, 2, 0, 18, 2, 2, 0,171, 0, 2, 0, 37, 0, 7, 0, 64, 1, 7, 0,169, 0, + 7, 0, 65, 1, 7, 0, 19, 2, 7, 0, 20, 2, 7, 0, 21, 2, 70, 0, 22, 2, 35, 0, 11, 0, 7, 0, 23, 2, 7, 0, 24, 2, + 7, 0, 25, 2, 7, 0,248, 0, 2, 0, 54, 0, 0, 0, 26, 2, 0, 0, 27, 2, 0, 0, 28, 2, 0, 0, 29, 2, 0, 0, 30, 2, + 0, 0, 31, 2, 34, 0, 7, 0, 7, 0, 32, 2, 7, 0, 24, 2, 7, 0, 25, 2, 2, 0, 28, 2, 2, 0, 31, 2, 7, 0,248, 0, + 7, 0, 37, 0, 73, 0, 21, 0, 73, 0, 0, 0, 73, 0, 1, 0, 2, 0, 17, 0, 2, 0, 33, 2, 2, 0, 31, 2, 2, 0, 19, 0, + 2, 0, 34, 2, 2, 0, 35, 2, 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 38, 2, 2, 0, 39, 2, 2, 0, 40, 2, 2, 0, 41, 2, + 7, 0, 42, 2, 7, 0, 43, 2, 34, 0, 48, 0, 35, 0, 49, 0, 2, 0, 44, 2, 2, 0, 45, 2, 4, 0, 46, 2, 74, 0, 5, 0, + 2, 0, 47, 2, 2, 0, 33, 2, 0, 0, 19, 0, 0, 0, 37, 0, 2, 0, 69, 0, 75, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, + 7, 0, 8, 0, 7, 0, 48, 2, 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 49, 2, 12, 0, 14, 2, + 12, 0, 50, 2, 32, 0, 51, 2, 32, 0, 52, 2, 32, 0, 53, 2, 36, 0, 79, 0, 77, 0, 54, 2, 38, 0, 55, 2, 66, 0, 16, 2, + 12, 0, 56, 2, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 2, 0,171, 0, 2, 0, 89, 0, 2, 0, 57, 2, 2, 0, 58, 2, + 2, 0, 59, 2, 7, 0, 60, 2, 7, 0, 61, 2, 2, 0, 62, 2, 2, 0, 18, 2, 2, 0, 19, 0, 2, 0, 63, 2, 7, 0, 64, 2, + 7, 0, 65, 2, 7, 0, 66, 2, 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 67, 2, 2, 0, 68, 2, 4, 0, 69, 2, 9, 0, 70, 2, + 2, 0, 23, 0, 2, 0, 95, 0, 2, 0, 66, 0, 2, 0, 71, 2, 7, 0, 72, 2, 7, 0, 73, 2, 7, 0, 74, 2, 7, 0, 75, 2, + 7, 0, 76, 2, 7, 0, 77, 2, 7, 0, 78, 2, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0, 81, 2, 0, 0, 82, 2, 78, 0, 83, 2, + 79, 0, 84, 2, 0, 0, 85, 2, 68, 0, 86, 2, 68, 0, 87, 2, 68, 0, 88, 2, 68, 0, 89, 2, 4, 0, 90, 2, 7, 0, 91, 2, + 4, 0, 92, 2, 4, 0, 93, 2, 75, 0, 94, 2, 4, 0, 95, 2, 4, 0, 96, 2, 74, 0, 97, 2, 74, 0, 98, 2, 80, 0, 41, 0, + 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 99, 2, 36, 0, 79, 0, 38, 0, 55, 2, 66, 0, 16, 2, 81, 0,100, 2, + 82, 0,101, 2, 83, 0,102, 2, 84, 0,103, 2, 85, 0,104, 2, 86, 0,105, 2, 87, 0,106, 2, 88, 0,107, 2, 80, 0,108, 2, + 89, 0,109, 2, 90, 0,110, 2, 91, 0,111, 2, 91, 0,112, 2, 91, 0,113, 2, 4, 0, 53, 0, 4, 0,114, 2, 4, 0,115, 2, + 4, 0,116, 2, 4, 0,117, 2, 2, 0,171, 0, 2, 0,118, 2, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 7, 0,119, 2, + 4, 0, 57, 2, 2, 0,120, 2, 2, 0, 19, 0, 2, 0,121, 2, 2, 0,122, 2, 2, 0, 18, 2, 2, 0,123, 2, 92, 0,124, 2, + 93, 0,125, 2, 83, 0, 8, 0, 9, 0,126, 2, 7, 0,127, 2, 4, 0,128, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, + 2, 0,130, 2, 2, 0,131, 2, 81, 0, 7, 0, 4, 0,132, 2, 4, 0,133, 2, 4, 0,134, 2, 4, 0,135, 2, 2, 0, 33, 2, + 0, 0,136, 2, 0, 0, 19, 0, 85, 0, 5, 0, 4, 0,132, 2, 4, 0,133, 2, 0, 0,137, 2, 0, 0,138, 2, 2, 0, 19, 0, + 94, 0, 2, 0, 4, 0,139, 2, 7, 0, 25, 2, 86, 0, 3, 0, 94, 0,140, 2, 4, 0,141, 2, 4, 0, 19, 0, 84, 0, 6, 0, + 7, 0,142, 2, 2, 0,143, 2, 2, 0, 33, 2, 0, 0, 19, 0, 0, 0,138, 2, 0, 0, 59, 2, 87, 0, 4, 0, 0, 0,233, 0, + 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 95, 0, 6, 0, 47, 0,126, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, + 2, 0,130, 2, 2, 0,131, 2, 96, 0, 1, 0, 7, 0,144, 2, 97, 0, 5, 0, 0, 0,233, 0, 0, 0,179, 0, 0, 0,180, 0, + 0, 0,181, 0, 4, 0, 37, 0, 88, 0, 1, 0, 7, 0,145, 2, 89, 0, 2, 0, 4, 0,146, 2, 4, 0, 17, 0, 82, 0, 7, 0, + 7, 0,127, 2, 47, 0,126, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, 2, 0,130, 2, 2, 0,131, 2, 98, 0, 1, 0, + 7, 0,147, 2, 99, 0, 1, 0, 4, 0,148, 2,100, 0, 1, 0, 0, 0,149, 2,101, 0, 1, 0, 7, 0,127, 2,102, 0, 3, 0, + 4, 0,150, 2, 0, 0, 92, 0, 7, 0,151, 2,103, 0, 4, 0, 7, 0,233, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, +104, 0, 1, 0,103, 0,128, 2,105, 0, 5, 0, 4, 0,152, 2, 4, 0,153, 2, 0, 0, 19, 0, 0, 0, 33, 2, 0, 0, 59, 2, +106, 0, 2, 0, 4, 0,154, 2, 4, 0,153, 2,107, 0, 10, 0,107, 0, 0, 0,107, 0, 1, 0,105, 0,155, 2,104, 0,156, 2, +106, 0,157, 2, 4, 0, 53, 0, 4, 0,115, 2, 4, 0,114, 2, 4, 0, 37, 0, 84, 0,158, 2, 92, 0, 14, 0, 12, 0,159, 2, + 84, 0,158, 2, 0, 0,160, 2, 0, 0,161, 2, 0, 0,162, 2, 0, 0,163, 2, 0, 0,164, 2, 0, 0,165, 2, 0, 0,166, 2, + 0, 0, 19, 0, 91, 0,111, 2, 91, 0,113, 2, 2, 0,167, 2, 0, 0,168, 2, 93, 0, 8, 0, 4, 0,169, 2, 4, 0,170, 2, + 81, 0,171, 2, 85, 0,172, 2, 4, 0,115, 2, 4, 0,114, 2, 4, 0, 53, 0, 4, 0, 37, 0,108, 0, 9, 0,108, 0, 0, 0, +108, 0, 1, 0, 4, 0, 17, 0, 4, 0, 69, 1, 4, 0,173, 2, 4, 0, 37, 0, 0, 0, 20, 0, 46, 0,129, 0, 0, 0,174, 2, +109, 0, 7, 0,108, 0,175, 2, 2, 0,176, 2, 2, 0,159, 2, 2, 0,177, 2, 2, 0, 90, 0, 9, 0,178, 2, 9, 0,179, 2, +110, 0, 3, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0, 20, 0,111, 0, 5, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0, 20, 0, + 2, 0,180, 2, 0, 0,181, 2,112, 0, 5, 0,108, 0,175, 2, 7, 0, 87, 0, 7, 0,182, 2, 4, 0,183, 2, 4, 0,184, 2, +113, 0, 5, 0,108, 0,175, 2, 32, 0,185, 2, 0, 0, 71, 0, 4, 0, 69, 1, 4, 0, 19, 0,114, 0, 13, 0,108, 0,175, 2, + 32, 0,186, 2, 32, 0,187, 2, 32, 0,188, 2, 32, 0,189, 2, 7, 0,190, 2, 7, 0,191, 2, 7, 0,182, 2, 7, 0,192, 2, + 4, 0,193, 2, 4, 0,194, 2, 4, 0, 90, 0, 4, 0,195, 2,115, 0, 5, 0,108, 0,175, 2, 2, 0,196, 2, 2, 0, 19, 0, + 7, 0,197, 2, 32, 0,198, 2,116, 0, 3, 0,108, 0,175, 2, 7, 0,199, 2, 4, 0, 90, 0,117, 0, 10, 0,108, 0,175, 2, + 7, 0,200, 2, 4, 0,201, 2, 4, 0, 37, 0, 2, 0, 90, 0, 2, 0,202, 2, 2, 0,203, 2, 2, 0,204, 2, 7, 0,205, 2, + 0, 0,206, 2,118, 0, 3, 0,108, 0,175, 2, 7, 0, 37, 0, 4, 0, 17, 0,119, 0, 6, 0,108, 0,175, 2,120, 0,207, 2, +121, 0,208, 2,122, 0,209, 2, 7, 0,210, 2, 4, 0, 17, 0,123, 0, 11, 0,108, 0,175, 2, 52, 0,211, 2, 7, 0,212, 2, + 4, 0,213, 2, 0, 0,206, 2, 7, 0,214, 2, 4, 0,215, 2, 32, 0,216, 2, 0, 0,217, 2, 4, 0,218, 2, 4, 0, 37, 0, +124, 0, 12, 0,108, 0,175, 2, 32, 0,219, 2, 47, 0,220, 2, 4, 0, 90, 0, 4, 0,221, 2, 7, 0,222, 2, 7, 0,223, 2, + 7, 0,224, 2, 7, 0,225, 2, 0, 0,217, 2, 4, 0,218, 2, 4, 0, 37, 0,125, 0, 3, 0,108, 0,175, 2, 7, 0,226, 2, + 4, 0,227, 2,126, 0, 5, 0,108, 0,175, 2, 7, 0,228, 2, 0, 0,206, 2, 2, 0, 19, 0, 2, 0,229, 2,127, 0, 8, 0, +108, 0,175, 2, 32, 0,161, 0, 7, 0,228, 2, 7, 0,248, 0, 7, 0,106, 0, 0, 0,206, 2, 2, 0, 19, 0, 2, 0, 17, 0, +128, 0, 21, 0,108, 0,175, 2, 32, 0,230, 2, 0, 0,206, 2, 52, 0,211, 2, 32, 0,216, 2, 2, 0, 19, 0, 2, 0, 37, 0, + 7, 0,231, 2, 7, 0,232, 2, 7, 0,233, 2, 7, 0, 64, 2, 7, 0,234, 2, 7, 0,235, 2, 7, 0,236, 2, 7, 0,237, 2, + 4, 0,215, 2, 4, 0,218, 2, 0, 0,217, 2, 7, 0,238, 2, 7, 0,239, 2, 7, 0, 89, 0,129, 0, 7, 0,108, 0,175, 2, + 2, 0,240, 2, 2, 0,241, 2, 4, 0, 69, 0, 32, 0,161, 0, 7, 0,242, 2, 0, 0,206, 2,130, 0, 10, 0,108, 0,175, 2, + 32, 0,161, 0, 0, 0,243, 2, 7, 0,244, 2, 7, 0,245, 2, 7, 0,237, 2, 4, 0,246, 2, 4, 0,247, 2, 7, 0,248, 2, + 0, 0, 20, 0,131, 0, 1, 0,108, 0,175, 2,132, 0, 7, 0,108, 0,175, 2, 46, 0,129, 0,133, 0,249, 2,134, 0,250, 2, +135, 0,251, 2,136, 0,252, 2, 12, 0,253, 2,137, 0, 13, 0,108, 0,175, 2, 84, 0,254, 2, 84, 0,255, 2, 84, 0, 0, 3, + 84, 0, 1, 3, 84, 0, 2, 3, 84, 0, 3, 3, 81, 0, 4, 3, 4, 0, 5, 3, 4, 0, 6, 3, 7, 0,210, 2, 7, 0, 37, 0, +138, 0, 7, 3,139, 0, 7, 0,108, 0,175, 2, 84, 0,254, 2, 84, 0, 8, 3,140, 0, 9, 3,141, 0, 7, 3, 4, 0, 10, 3, + 4, 0, 5, 3,142, 0, 4, 0,108, 0,175, 2, 32, 0,161, 0, 4, 0, 11, 3, 4, 0, 37, 0,143, 0, 2, 0, 4, 0, 12, 3, + 7, 0, 25, 2,144, 0, 2, 0, 4, 0,120, 0, 4, 0, 13, 3,145, 0, 24, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0,206, 2, + 2, 0, 14, 3, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 37, 0,143, 0, 15, 3, 4, 0, 16, 3, 7, 0, 17, 3, 4, 0, 53, 0, + 4, 0, 18, 3,144, 0, 19, 3,143, 0, 20, 3, 4, 0, 21, 3, 4, 0, 22, 3, 4, 0, 23, 3, 4, 0, 13, 3, 7, 0, 24, 3, + 7, 0, 25, 3, 7, 0, 26, 3, 7, 0, 27, 3, 7, 0, 28, 3, 9, 0, 29, 3,146, 0, 8, 0,108, 0,175, 2,147, 0, 30, 3, +140, 0, 9, 3, 4, 0, 31, 3, 4, 0, 32, 3, 4, 0, 33, 3, 2, 0, 19, 0, 2, 0, 56, 0,148, 0, 8, 0,108, 0,175, 2, + 32, 0, 44, 0, 2, 0,252, 0, 2, 0, 19, 0, 2, 0,196, 2, 2, 0, 56, 0, 7, 0, 34, 3, 7, 0, 35, 3,149, 0, 5, 0, +108, 0,175, 2, 4, 0, 36, 3, 2, 0, 19, 0, 2, 0, 37, 3, 7, 0, 38, 3,150, 0, 8, 0,108, 0,175, 2, 0, 0, 39, 3, + 0, 0, 40, 3, 0, 0,165, 2, 0, 0, 41, 3, 0, 0, 42, 3, 0, 0, 90, 0, 0, 0, 59, 2,151, 0, 3, 0,108, 0,175, 2, +152, 0, 43, 3,136, 0,252, 2,153, 0, 10, 0,108, 0,175, 2, 32, 0, 44, 3, 32, 0, 45, 3, 0, 0, 46, 3, 7, 0, 47, 3, + 2, 0, 48, 3, 2, 0, 49, 3, 0, 0, 50, 3, 0, 0, 51, 3, 0, 0,181, 2,154, 0, 9, 0,108, 0,175, 2, 32, 0, 52, 3, + 0, 0, 46, 3, 7, 0, 53, 3, 7, 0, 54, 3, 0, 0, 69, 1, 0, 0,196, 2, 0, 0, 55, 3, 0, 0, 37, 0,155, 0, 1, 0, +108, 0,175, 2,156, 0, 8, 0,108, 0,175, 2, 0, 0,206, 2, 7, 0,120, 0, 7, 0, 56, 3, 7, 0, 57, 3, 7, 0, 58, 3, + 7, 0, 59, 3, 4, 0, 19, 0,157, 0, 9, 0,108, 0,175, 2, 32, 0, 60, 3, 4, 0, 61, 3, 4, 0, 62, 3, 4, 0, 63, 3, + 7, 0, 64, 3, 7, 0, 65, 3, 2, 0,196, 2, 2, 0, 19, 0,158, 0, 28, 0, 27, 0, 31, 0, 2, 0, 34, 2, 2, 0, 35, 2, + 2, 0, 66, 3, 2, 0, 19, 0, 2, 0, 67, 3, 2, 0, 68, 3, 2, 0, 69, 3, 2, 0, 69, 0, 0, 0, 70, 3, 0, 0, 71, 3, + 0, 0, 72, 3, 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 73, 3, 7, 0, 74, 3, 7, 0, 75, 3, 7, 0, 76, 3, 7, 0, 77, 3, + 7, 0, 78, 3, 34, 0, 79, 3, 36, 0, 79, 0, 38, 0, 55, 2, 86, 0,105, 2, 0, 0, 71, 0, 7, 0, 80, 3, 7, 0, 81, 3, +158, 0, 82, 3,159, 0, 3, 0,159, 0, 0, 0,159, 0, 1, 0, 0, 0, 20, 0, 71, 0, 3, 0, 7, 0, 83, 3, 4, 0, 19, 0, + 4, 0, 37, 0, 32, 0,126, 0, 27, 0, 31, 0, 39, 0, 74, 0,160, 0, 84, 3, 2, 0, 17, 0, 2, 0, 85, 3, 4, 0, 86, 3, + 4, 0, 87, 3, 4, 0, 88, 3, 0, 0, 89, 3, 32, 0, 38, 0, 32, 0, 90, 3, 32, 0, 91, 3, 32, 0, 92, 3, 32, 0, 93, 3, + 36, 0, 79, 0, 77, 0, 54, 2, 71, 0,251, 1,161, 0, 94, 3,161, 0, 95, 3,162, 0, 96, 3, 9, 0, 2, 0,163, 0, 97, 3, +164, 0, 98, 3,165, 0, 99, 3, 12, 0,100, 3, 12, 0, 99, 2, 12, 0, 14, 2, 12, 0,101, 3, 12, 0,102, 3, 4, 0, 69, 1, + 4, 0,103, 3, 66, 0, 16, 2, 0, 0,104, 3, 4, 0, 18, 2, 4, 0,105, 3, 7, 0, 64, 1, 7, 0,106, 3, 7, 0,107, 3, + 7, 0,169, 0, 7, 0,108, 3, 7, 0, 65, 1, 7, 0,109, 3, 7, 0, 4, 2, 7, 0,110, 3, 7, 0,111, 3, 7, 0,112, 3, + 7, 0,113, 3, 7, 0,114, 3, 7, 0,115, 3, 7, 0,244, 2, 7, 0,116, 3, 7, 0,237, 0, 4, 0,117, 3, 2, 0, 19, 0, + 2, 0,118, 3, 2, 0,119, 3, 2, 0,120, 3, 2, 0,121, 3, 2, 0,122, 3, 2, 0,123, 3, 2, 0,124, 3, 2, 0,125, 3, + 2, 0,126, 3, 2, 0,127, 3, 2, 0,128, 3, 4, 0,129, 3, 4, 0,130, 3, 4, 0,131, 3, 4, 0,132, 3, 7, 0,133, 3, + 7, 0, 91, 2, 7, 0,134, 3, 7, 0,135, 3, 7, 0,136, 3, 7, 0,137, 3, 7, 0,138, 3, 7, 0,212, 0, 7, 0,139, 3, + 7, 0,140, 3, 7, 0,141, 3, 7, 0,142, 3, 2, 0,143, 3, 0, 0,144, 3, 0, 0,145, 3, 0, 0,146, 3, 0, 0,147, 3, + 7, 0,148, 3, 7, 0,149, 3, 12, 0,150, 3, 12, 0,151, 3, 12, 0,152, 3, 12, 0,153, 3, 7, 0,154, 3, 2, 0,146, 2, + 2, 0,155, 3, 7, 0,128, 2, 4, 0,156, 3, 4, 0,157, 3,166, 0,158, 3, 2, 0,159, 3, 2, 0,244, 0, 7, 0,160, 3, + 12, 0,161, 3, 12, 0,162, 3, 12, 0,163, 3, 12, 0,164, 3,167, 0, 61, 1,168, 0,165, 3, 67, 0,166, 3, 2, 0,167, 3, + 2, 0,168, 3, 2, 0,169, 3, 2, 0,170, 3, 7, 0,120, 2, 2, 0,171, 3, 2, 0,172, 3,152, 0,173, 3,140, 0,174, 3, +140, 0,175, 3, 4, 0,176, 3, 4, 0,177, 3, 4, 0,178, 3, 4, 0, 69, 0, 12, 0,179, 3, 12, 0,180, 3, 12, 0,181, 3, +169, 0, 14, 0,169, 0, 0, 0,169, 0, 1, 0, 32, 0, 38, 0, 7, 0,244, 2, 7, 0, 66, 1, 7, 0,245, 2, 7, 0,237, 2, + 0, 0, 20, 0, 4, 0,246, 2, 4, 0,247, 2, 4, 0,182, 3, 2, 0, 17, 0, 2, 0,183, 3, 7, 0,248, 2,170, 0, 12, 0, +170, 0, 0, 0,170, 0, 1, 0, 32, 0, 44, 0, 4, 0,184, 3, 4, 0,146, 2, 4, 0,185, 3, 4, 0, 17, 0, 4, 0,186, 3, + 7, 0, 66, 1, 7, 0,187, 3, 7, 0,188, 3, 7, 0,144, 2,167, 0, 40, 0, 4, 0, 19, 0, 2, 0,189, 3, 2, 0,190, 3, + 2, 0,237, 2, 2, 0,191, 3, 2, 0,192, 3, 2, 0,193, 3, 2, 0,194, 3, 2, 0,195, 3, 7, 0,196, 3, 7, 0,197, 3, + 7, 0,198, 3, 7, 0,199, 3, 7, 0,200, 3, 7, 0,201, 3, 7, 0,202, 3, 7, 0,203, 3, 7, 0,204, 3, 7, 0,205, 3, + 7, 0,206, 3, 7, 0,207, 3, 7, 0,208, 3, 7, 0,209, 3, 7, 0,210, 3, 7, 0,211, 3, 7, 0,212, 3, 7, 0,213, 3, + 7, 0,214, 3, 7, 0,215, 3, 7, 0,216, 3, 7, 0,217, 3, 7, 0,218, 3, 7, 0,219, 3, 7, 0,220, 3, 7, 0,221, 3, + 7, 0,222, 3, 52, 0,162, 0,171, 0,223, 3, 7, 0,224, 3, 4, 0,184, 2,172, 0, 5, 0, 67, 0,229, 1, 7, 0,225, 3, + 7, 0,226, 3, 2, 0, 19, 0, 2, 0,227, 3,173, 0, 9, 0,173, 0, 0, 0,173, 0, 1, 0, 4, 0,228, 3, 4, 0,229, 3, + 4, 0,230, 3, 4, 0, 19, 0, 4, 0,231, 3, 9, 0,232, 3, 9, 0,233, 3,136, 0, 19, 0,136, 0, 0, 0,136, 0, 1, 0, + 4, 0, 19, 0, 4, 0,234, 3, 4, 0,235, 3, 4, 0,236, 3, 4, 0,237, 3, 4, 0,238, 3, 4, 0,239, 3, 4, 0,229, 3, + 4, 0,146, 2, 4, 0, 56, 0, 0, 0,240, 3, 0, 0,241, 3, 0, 0,242, 3, 0, 0,243, 3, 12, 0,244, 3,174, 0,245, 3, + 9, 0,246, 3,175, 0, 1, 0, 7, 0, 32, 2,166, 0, 30, 0, 4, 0, 19, 0, 7, 0,247, 3, 7, 0,248, 3, 7, 0,249, 3, + 4, 0,250, 3, 4, 0,251, 3, 4, 0,252, 3, 4, 0,253, 3, 7, 0,254, 3, 7, 0,255, 3, 7, 0, 0, 4, 7, 0, 1, 4, + 7, 0, 2, 4, 7, 0, 3, 4, 7, 0, 4, 4, 7, 0, 5, 4, 7, 0, 6, 4, 7, 0, 7, 4, 7, 0, 8, 4, 7, 0, 9, 4, + 7, 0, 10, 4, 7, 0, 11, 4, 7, 0, 12, 4, 7, 0, 13, 4, 7, 0, 14, 4, 7, 0, 15, 4, 4, 0, 16, 4, 4, 0, 17, 4, + 7, 0, 18, 4, 7, 0,139, 3,168, 0, 54, 0, 4, 0,229, 3, 4, 0, 19, 4,176, 0, 20, 4,177, 0, 21, 4, 0, 0, 37, 0, + 0, 0, 22, 4, 2, 0, 23, 4, 7, 0, 24, 4, 0, 0, 25, 4, 7, 0, 26, 4, 7, 0, 27, 4, 7, 0, 28, 4, 7, 0, 29, 4, + 7, 0, 30, 4, 7, 0, 31, 4, 7, 0, 32, 4, 7, 0, 33, 4, 7, 0, 34, 4, 2, 0, 35, 4, 0, 0, 36, 4, 2, 0, 37, 4, + 7, 0, 38, 4, 7, 0, 39, 4, 0, 0, 40, 4, 4, 0,121, 0, 4, 0, 41, 4, 4, 0, 42, 4, 2, 0, 43, 4, 2, 0, 44, 4, +175, 0, 45, 4, 4, 0, 46, 4, 4, 0, 81, 0, 7, 0, 47, 4, 7, 0, 48, 4, 7, 0, 49, 4, 7, 0, 50, 4, 2, 0, 51, 4, + 2, 0, 52, 4, 2, 0, 53, 4, 2, 0, 54, 4, 2, 0, 55, 4, 2, 0, 56, 4, 2, 0, 57, 4, 2, 0, 58, 4,178, 0, 59, 4, + 7, 0, 60, 4, 7, 0, 61, 4,136, 0, 62, 4, 12, 0,253, 2,172, 0, 63, 4, 7, 0, 64, 4, 7, 0, 65, 4, 7, 0, 66, 4, + 0, 0, 67, 4,152, 0, 51, 0,151, 0, 68, 4, 2, 0, 17, 0, 2, 0, 69, 4, 2, 0, 70, 4, 2, 0, 71, 4, 7, 0, 72, 4, + 2, 0, 73, 4, 2, 0, 74, 4, 7, 0, 75, 4, 2, 0, 76, 4, 2, 0, 77, 4, 7, 0, 78, 4, 7, 0, 79, 4, 7, 0, 80, 4, + 7, 0, 81, 4, 7, 0, 82, 4, 4, 0, 83, 4, 4, 0, 84, 4, 7, 0, 85, 4, 4, 0, 86, 4, 7, 0, 87, 4, 7, 0, 88, 4, + 7, 0, 89, 4, 80, 0, 90, 4, 80, 0, 91, 4, 80, 0, 92, 4, 0, 0, 93, 4, 7, 0, 94, 4, 7, 0, 95, 4, 36, 0, 79, 0, + 2, 0, 96, 4, 0, 0, 97, 4, 0, 0, 98, 4, 7, 0, 99, 4, 4, 0,100, 4, 7, 0,101, 4, 7, 0,102, 4, 4, 0,103, 4, + 4, 0, 19, 0, 7, 0,104, 4, 7, 0,105, 4, 7, 0,106, 4, 84, 0,107, 4, 7, 0,108, 4, 7, 0,109, 4, 7, 0,110, 4, + 7, 0,111, 4, 7, 0,112, 4, 7, 0,113, 4, 7, 0,114, 4, 4, 0,115, 4,179, 0, 78, 0, 27, 0, 31, 0, 39, 0, 74, 0, + 2, 0,172, 0, 2, 0, 70, 1, 2, 0,104, 1, 2, 0,116, 4, 7, 0,117, 4, 7, 0,118, 4, 7, 0,119, 4, 7, 0,120, 4, + 7, 0,121, 4, 7, 0,122, 4, 7, 0,123, 4, 7, 0,124, 4, 7, 0,150, 1, 7, 0,152, 1, 7, 0,151, 1, 7, 0,125, 4, + 4, 0,126, 4, 7, 0,127, 4, 7, 0,128, 4, 7, 0,129, 4, 7, 0,130, 4, 7, 0,131, 4, 7, 0,132, 4, 7, 0,133, 4, + 2, 0,134, 4, 2, 0, 69, 1, 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4, 2, 0,138, 4, 2, 0,139, 4, 2, 0,140, 4, + 7, 0,141, 4, 7, 0,142, 4, 7, 0,143, 4, 7, 0,144, 4, 7, 0,145, 4, 7, 0,146, 4, 7, 0,147, 4, 7, 0,148, 4, + 7, 0,149, 4, 7, 0,150, 4, 7, 0,151, 4, 7, 0,152, 4, 2, 0,153, 4, 2, 0,154, 4, 2, 0,155, 4, 2, 0,156, 4, + 7, 0,157, 4, 7, 0,158, 4, 7, 0,159, 4, 7, 0,160, 4, 2, 0,161, 4, 2, 0,162, 4, 2, 0,163, 4, 2, 0,164, 4, + 7, 0,165, 4, 7, 0,166, 4, 7, 0,167, 4, 7, 0,168, 4, 7, 0,169, 4, 7, 0,170, 4, 7, 0,171, 4, 2, 0,172, 4, + 2, 0,173, 4, 2, 0,174, 4, 2, 0,175, 4, 2, 0,176, 4, 2, 0, 19, 0, 7, 0,177, 4, 7, 0,178, 4, 36, 0, 79, 0, + 51, 0,122, 1, 2, 0,123, 1, 2, 0,179, 4, 30, 0,148, 0,180, 0, 8, 0,180, 0, 0, 0,180, 0, 1, 0, 4, 0,117, 3, + 4, 0,180, 4, 4, 0, 19, 0, 2, 0,181, 4, 2, 0,182, 4, 32, 0,161, 0,181, 0, 13, 0, 9, 0,183, 4, 9, 0,184, 4, + 4, 0,185, 4, 4, 0,186, 4, 4, 0,187, 4, 4, 0,188, 4, 4, 0,189, 4, 4, 0,190, 4, 4, 0,191, 4, 4, 0,192, 4, + 4, 0,193, 4, 4, 0, 37, 0, 0, 0,194, 4,182, 0, 5, 0, 9, 0,195, 4, 9, 0,196, 4, 4, 0,197, 4, 4, 0, 69, 0, + 0, 0,198, 4,183, 0, 17, 0, 4, 0,199, 4, 4, 0,200, 4, 4, 0,201, 4, 4, 0,202, 4, 4, 0,203, 4, 4, 0,204, 4, + 4, 0,205, 4, 4, 0,206, 4, 4, 0,207, 4, 4, 0,208, 4, 4, 0,209, 4, 4, 0,210, 4, 2, 0,211, 4, 2, 0,212, 4, + 4, 0,213, 4, 4, 0,214, 4, 4, 0, 89, 0,184, 0, 15, 0, 4, 0, 17, 0, 4, 0,201, 4, 4, 0,215, 4, 4, 0,216, 4, + 4, 0,217, 4, 4, 0,218, 4, 7, 0,219, 4, 4, 0,220, 4, 4, 0, 90, 0, 4, 0,221, 4, 4, 0,222, 4, 4, 0,223, 4, + 4, 0,224, 4, 4, 0,225, 4, 26, 0, 30, 0,185, 0, 7, 0, 4, 0,226, 4, 7, 0,227, 4, 7, 0,228, 4, 7, 0,229, 4, + 4, 0,230, 4, 2, 0, 19, 0, 2, 0, 37, 0,186, 0, 11, 0,186, 0, 0, 0,186, 0, 1, 0, 0, 0, 20, 0, 66, 0,231, 4, + 67, 0,232, 4, 4, 0,117, 3, 4, 0,233, 4, 4, 0,234, 4, 4, 0, 37, 0, 4, 0,235, 4, 4, 0,236, 4,187, 0,111, 0, +181, 0,237, 4,182, 0,238, 4,183, 0,239, 4,184, 0,240, 4, 4, 0, 10, 3, 4, 0,121, 0, 4, 0, 41, 4, 7, 0,241, 4, + 4, 0,242, 4, 4, 0,243, 4, 4, 0,244, 4, 4, 0,245, 4, 2, 0, 19, 0, 2, 0,246, 4, 7, 0,247, 4, 7, 0,248, 4, + 7, 0,249, 4, 7, 0,250, 4, 7, 0,251, 4, 2, 0,252, 4, 2, 0,253, 4, 2, 0,254, 4, 2, 0,255, 4, 2, 0,243, 0, + 2, 0, 0, 5, 2, 0, 1, 5, 2, 0, 2, 5, 2, 0, 3, 5, 2, 0, 4, 5, 2, 0, 91, 1, 2, 0,106, 0, 2, 0, 5, 5, + 2, 0, 6, 5, 2, 0, 7, 5, 2, 0, 8, 5, 2, 0, 9, 5, 2, 0, 10, 5, 2, 0, 11, 5, 2, 0, 12, 5, 2, 0, 13, 5, + 2, 0, 92, 1, 2, 0, 14, 5, 2, 0, 15, 5, 2, 0, 16, 5, 2, 0, 17, 5, 4, 0, 18, 5, 4, 0, 69, 1, 4, 0, 19, 5, + 2, 0, 20, 5, 2, 0, 21, 5, 2, 0, 22, 5, 2, 0,248, 1, 2, 0, 23, 5, 2, 0, 24, 5, 2, 0, 25, 5, 2, 0, 26, 5, + 24, 0, 27, 5, 24, 0, 28, 5, 23, 0, 29, 5, 12, 0, 30, 5, 2, 0, 31, 5, 2, 0, 32, 5, 7, 0, 33, 5, 7, 0, 34, 5, + 7, 0, 35, 5, 7, 0, 36, 5, 4, 0, 37, 5, 7, 0, 38, 5, 7, 0, 39, 5, 7, 0, 40, 5, 7, 0, 41, 5, 2, 0, 42, 5, + 2, 0, 43, 5, 2, 0, 44, 5, 2, 0, 45, 5, 2, 0, 46, 5, 2, 0, 47, 5, 7, 0, 48, 5, 7, 0, 49, 5, 7, 0, 50, 5, + 0, 0, 51, 5, 0, 0, 52, 5, 4, 0, 53, 5, 2, 0, 54, 5, 2, 0,226, 1, 0, 0, 55, 5, 7, 0, 56, 5, 7, 0, 57, 5, + 0, 0, 58, 5, 0, 0, 59, 5, 0, 0, 60, 5, 0, 0, 61, 5, 4, 0, 62, 5, 2, 0, 63, 5, 2, 0, 64, 5, 7, 0, 65, 5, + 7, 0, 66, 5, 2, 0, 67, 5, 2, 0, 68, 5, 7, 0, 69, 5, 2, 0, 70, 5, 2, 0, 71, 5, 4, 0, 72, 5, 2, 0, 73, 5, + 2, 0, 74, 5, 2, 0, 75, 5, 2, 0, 76, 5, 7, 0, 77, 5, 7, 0, 69, 0, 42, 0, 78, 5, 0, 0, 79, 5,188, 0, 9, 0, +188, 0, 0, 0,188, 0, 1, 0, 0, 0, 20, 0, 2, 0, 80, 5, 2, 0, 81, 5, 2, 0, 82, 5, 2, 0, 89, 0, 7, 0, 83, 5, + 7, 0, 69, 0,189, 0, 7, 0, 2, 0,201, 2, 2, 0, 69, 1, 2, 0, 65, 3, 2, 0, 84, 5, 7, 0, 85, 5, 7, 0, 69, 0, + 42, 0, 86, 5,190, 0, 5, 0, 7, 0, 87, 5, 0, 0, 17, 0, 0, 0, 89, 0, 0, 0, 69, 0, 0, 0,226, 1,191, 0, 28, 0, + 7, 0,132, 4, 7, 0,133, 4, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0, 88, 5, 2, 0,179, 4, 2, 0,135, 4, 2, 0,136, 4, + 2, 0,137, 4, 2, 0,138, 4, 2, 0,139, 4, 2, 0,140, 4,190, 0, 89, 5, 2, 0,252, 4, 2, 0,253, 4, 2, 0,254, 4, + 2, 0,255, 4, 2, 0,243, 0, 2, 0, 0, 5, 2, 0, 90, 5, 2, 0, 1, 5,189, 0, 91, 5, 2, 0, 92, 5, 2, 0, 3, 5, + 2, 0, 6, 5, 2, 0, 7, 5, 7, 0, 93, 5, 7, 0, 89, 0,192, 0, 6, 0,192, 0, 0, 0,192, 0, 1, 0, 4, 0,228, 3, + 0, 0,240, 3, 4, 0, 19, 0, 32, 0, 94, 5,193, 0, 6, 0,194, 0, 95, 5, 4, 0, 96, 5, 4, 0, 97, 5, 9, 0, 98, 5, + 0, 0, 99, 5, 4, 0, 90, 0,195, 0, 8, 0,193, 0,100, 5, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0,101, 5, 2, 0,102, 5, + 2, 0,103, 5, 4, 0, 89, 0, 9, 0,104, 5,196, 0, 6, 0, 2, 0,106, 0, 2, 0,234, 3, 2, 0,105, 5, 2, 0,195, 2, + 4, 0, 19, 0, 7, 0,212, 2,197, 0, 14, 0, 2, 0, 19, 0, 2, 0,106, 5, 2, 0,107, 5, 2, 0,108, 5,196, 0,109, 5, + 9, 0,104, 5, 7, 0,110, 5, 7, 0, 56, 0, 4, 0,111, 5, 4, 0,112, 5, 4, 0,113, 5, 4, 0,114, 5, 46, 0,129, 0, + 32, 0,161, 0,198, 0, 4, 0,198, 0, 0, 0,198, 0, 1, 0, 0, 0,115, 5, 7, 0,116, 5,199, 0, 14, 0,193, 0,100, 5, + 4, 0, 90, 0, 4, 0,117, 5, 7, 0,118, 5, 7, 0,119, 5, 7, 0,120, 5, 4, 0,121, 5, 4, 0,122, 5, 7, 0,123, 5, + 7, 0,124, 5, 4, 0,125, 5, 7, 0,126, 5, 7, 0,127, 5, 4, 0, 37, 0,200, 0, 7, 0,193, 0,100, 5, 2, 0, 19, 0, + 2, 0, 37, 0, 4, 0, 36, 0, 4, 0,128, 5, 86, 0,129, 5, 9, 0,104, 5,201, 0, 74, 0,200, 0,130, 5,200, 0,131, 5, +199, 0, 84, 3, 7, 0,132, 5, 2, 0,133, 5, 2, 0,134, 5, 7, 0,135, 5, 7, 0,136, 5, 2, 0,234, 3, 2, 0,137, 5, + 7, 0,138, 5, 7, 0,139, 5, 7, 0,140, 5, 2, 0,141, 5, 2, 0,111, 5, 2, 0,142, 5, 2, 0,143, 5, 2, 0,144, 5, + 2, 0,145, 5, 7, 0,146, 5, 7, 0,147, 5, 7, 0,148, 5, 2, 0,149, 5, 2, 0,150, 5, 2, 0,151, 5, 2, 0,152, 5, + 2, 0,153, 5, 2, 0,154, 5, 2, 0,155, 5,195, 0,156, 5,197, 0,157, 5, 7, 0,158, 5, 7, 0,159, 5, 7, 0,160, 5, + 2, 0,161, 5, 2, 0,162, 5, 0, 0,163, 5, 0, 0,164, 5, 0, 0,165, 5, 0, 0,166, 5, 0, 0,167, 5, 0, 0,168, 5, + 2, 0,169, 5, 7, 0,170, 5, 7, 0,171, 5, 7, 0,172, 5, 7, 0,173, 5, 7, 0,174, 5, 7, 0,175, 5, 7, 0,176, 5, + 7, 0,177, 5, 7, 0,178, 5, 7, 0,179, 5, 2, 0,180, 5, 0, 0,181, 5, 0, 0,182, 5, 0, 0,183, 5, 0, 0,184, 5, + 32, 0,185, 5, 0, 0,186, 5, 0, 0,187, 5, 0, 0,188, 5, 0, 0,189, 5, 0, 0,190, 5, 0, 0,191, 5, 0, 0,192, 5, + 0, 0,193, 5, 2, 0,194, 5, 2, 0,195, 5, 2, 0,196, 5, 2, 0,197, 5, 2, 0,198, 5, 4, 0,199, 5, 4, 0,200, 5, +202, 0, 8, 0, 4, 0,201, 5, 4, 0,202, 5, 4, 0,203, 5, 4, 0,204, 5, 4, 0,205, 5, 4, 0,206, 5, 4, 0, 53, 0, + 4, 0,115, 2,203, 0, 3, 0, 7, 0,207, 5, 2, 0,208, 5, 2, 0, 19, 0,204, 0, 4, 0, 7, 0,209, 5, 4, 0, 19, 0, + 4, 0,210, 5, 4, 0, 56, 0, 46, 0, 42, 0, 27, 0, 31, 0, 39, 0, 74, 0, 32, 0, 94, 5,179, 0,211, 5, 46, 0,212, 5, + 47, 0,235, 0, 12, 0,213, 5,180, 0,214, 5, 32, 0,215, 5, 7, 0,216, 5, 7, 0,217, 5, 7, 0,218, 5, 7, 0,219, 5, + 4, 0,117, 3, 4, 0,220, 5, 4, 0, 89, 0, 2, 0, 19, 0, 2, 0, 63, 1, 60, 0, 58, 1,205, 0,221, 5,201, 0,222, 5, +206, 0,223, 5,187, 0,179, 0,185, 0,224, 5, 12, 0,100, 0, 12, 0,225, 5, 9, 0,226, 5, 9, 0,227, 5, 9, 0,228, 5, +207, 0,229, 5, 2, 0,230, 5, 2, 0,231, 5, 2, 0,244, 0, 2, 0,232, 5, 4, 0,233, 5, 4, 0,234, 5, 12, 0,235, 5, +190, 0, 89, 5,191, 0,236, 5,203, 0,237, 5,163, 0, 97, 3,204, 0,238, 5,208, 0, 11, 0,208, 0, 0, 0,208, 0, 1, 0, + 47, 0,235, 0, 45, 0, 57, 1, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0,106, 0, 7, 0,239, 5, 2, 0,240, 5, 2, 0, 19, 0, + 7, 0, 69, 0,209, 0, 39, 0, 7, 0,241, 5, 7, 0,242, 5, 7, 0,243, 5, 7, 0,244, 5, 7, 0,245, 5, 7, 0,246, 5, + 7, 0,247, 5, 7, 0,248, 5, 7, 0,249, 5, 7, 0, 76, 1, 7, 0,250, 5, 7, 0,251, 5, 7, 0,252, 5, 7, 0,253, 5, + 7, 0,168, 0, 2, 0,254, 5, 2, 0,255, 5, 2, 0, 0, 6, 2, 0, 37, 0, 2, 0, 1, 6, 2, 0, 2, 6, 2, 0, 3, 6, + 2, 0,240, 5, 7, 0, 4, 6, 7, 0, 5, 6, 71, 0, 6, 6,163, 0, 97, 3,209, 0, 7, 6,210, 0, 8, 6,211, 0, 9, 6, +212, 0, 10, 6,213, 0, 11, 6,214, 0, 12, 6, 7, 0, 13, 6, 2, 0, 14, 6, 2, 0, 15, 6, 7, 0, 16, 6, 7, 0, 17, 6, + 7, 0, 18, 6,215, 0, 55, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, + 7, 0,249, 5, 7, 0, 76, 1, 7, 0, 89, 0, 4, 0, 23, 6, 2, 0, 3, 6, 2, 0,240, 5, 32, 0, 94, 5, 32, 0, 24, 6, + 12, 0, 25, 6,208, 0, 26, 6,215, 0, 7, 6, 0, 0, 27, 6, 4, 0,117, 3, 4, 0,220, 5, 2, 0, 28, 6, 2, 0, 69, 0, + 2, 0, 29, 6, 2, 0, 30, 6, 2, 0,226, 1, 2, 0, 19, 0, 2, 0, 17, 2, 2, 0, 31, 6, 7, 0,111, 0, 7, 0, 32, 6, + 7, 0, 16, 6, 7, 0, 18, 6, 7, 0, 33, 6, 7, 0, 34, 6, 7, 0,168, 0, 7, 0,216, 5, 2, 0, 35, 6, 2, 0,248, 1, + 2, 0, 36, 6, 2, 0, 37, 6, 2, 0, 38, 6, 2, 0, 39, 6, 2, 0, 40, 6, 2, 0, 41, 6, 2, 0, 42, 6, 2, 0, 0, 6, + 4, 0, 43, 6, 12, 0, 44, 6, 2, 0, 45, 6, 2, 0,129, 2, 2, 0, 46, 6, 0, 0, 47, 6, 0, 0, 48, 6, 9, 0, 49, 6, +163, 0, 97, 3,217, 0, 24, 0, 24, 0, 36, 0, 24, 0, 63, 0, 23, 0, 50, 6, 23, 0, 51, 6, 23, 0, 52, 6, 7, 0, 53, 6, + 7, 0, 54, 6, 7, 0, 55, 6, 7, 0, 56, 6, 2, 0, 57, 6, 2, 0, 58, 6, 2, 0, 59, 6, 2, 0, 60, 6, 2, 0, 61, 6, + 2, 0, 19, 0, 2, 0, 62, 6, 2, 0, 63, 6, 2, 0, 64, 6, 2, 0, 65, 6, 2, 0, 66, 6, 2, 0, 30, 6, 7, 0, 67, 6, + 4, 0, 68, 6, 4, 0, 69, 6,216, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, + 2, 0, 22, 6,218, 0, 8, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, +219, 0, 70, 6, 46, 0,129, 0,220, 0, 14, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, + 2, 0, 22, 6,217, 0, 71, 6,221, 0, 72, 6, 12, 0, 73, 6, 2, 0, 69, 1, 2, 0, 74, 6, 4, 0, 19, 0, 7, 0, 75, 6, + 4, 0, 30, 6,222, 0, 20, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, +210, 0, 8, 6,217, 0, 71, 6, 2, 0, 76, 6, 2, 0, 77, 6, 2, 0, 78, 6, 2, 0, 79, 6, 2, 0, 62, 6, 2, 0, 80, 6, + 0, 0, 19, 0, 0, 0,179, 4, 9, 0, 54, 2, 4, 0, 81, 6, 4, 0, 82, 6, 27, 0, 83, 6,223, 0, 18, 0,216, 0, 0, 0, +216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6, 7, 0, 79, 2, 7, 0, 80, 2, + 2, 0, 76, 6, 2, 0, 84, 6, 2, 0, 85, 6, 2, 0, 86, 6, 4, 0, 19, 0, 7, 0, 87, 6, 4, 0,240, 5, 4, 0, 37, 0, +163, 0, 97, 3,224, 0, 15, 0, 0, 0, 88, 6, 0, 0, 89, 6, 0, 0, 90, 6, 0, 0, 91, 6, 2, 0, 17, 0, 2, 0, 19, 0, + 2, 0, 92, 6, 2, 0, 93, 6, 2, 0,169, 1, 2, 0, 94, 6, 4, 0, 95, 6, 4, 0, 96, 6, 2, 0, 97, 6, 2, 0, 37, 0, + 0, 0, 98, 6,225, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 4, 0, 99, 6,224, 0,100, 6, +226, 0,101, 6, 12, 0,102, 6, 12, 0,103, 6,227, 0,104, 6,214, 0,105, 6,228, 0,106, 6, 2, 0,107, 6, 2, 0,108, 6, + 2, 0,109, 6, 2, 0, 69, 0,229, 0, 17, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, + 2, 0, 22, 6,217, 0, 71, 6, 12, 0,110, 6,230, 0,111, 6, 0, 0,112, 6,231, 0,113, 6, 4, 0,114, 6, 4, 0,115, 6, + 2, 0, 19, 0, 2, 0,116, 6, 2, 0,117, 6, 2, 0, 37, 0,232, 0, 32, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, + 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 47, 0,220, 2, 45, 0, 57, 1, 63, 0,118, 6, 2, 0,128, 0, 2, 0,119, 6, + 2, 0, 69, 0, 2, 0,120, 6, 4, 0, 19, 0, 2, 0,121, 6, 2, 0,122, 6, 2, 0,123, 6, 2, 0,226, 1, 0, 0,124, 6, + 0, 0,125, 6, 0, 0,126, 6, 0, 0, 30, 6, 7, 0,127, 6, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0, 87, 6, 7, 0,248, 1, + 7, 0,128, 6, 7, 0,129, 6,163, 0, 97, 3,233, 0,130, 6,234, 0,131, 6,235, 0, 11, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 2, 0, 74, 6, 2, 0, 19, 0, 4, 0, 37, 0,221, 0, 72, 6, +217, 0, 71, 6,236, 0, 27, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, + 42, 0,132, 6, 4, 0,133, 6, 4, 0,134, 6, 2, 0, 90, 0, 2, 0,128, 0, 2, 0,135, 6, 0, 0,136, 6, 0, 0,137, 6, + 4, 0,138, 6, 4, 0,139, 6, 4, 0,140, 6, 4, 0,141, 6, 2, 0,142, 6, 2, 0,143, 6, 7, 0,144, 6, 23, 0,145, 6, + 23, 0,146, 6, 4, 0,147, 6, 4, 0,148, 6, 0, 0,149, 6, 0, 0,150, 6,237, 0, 10, 0, 27, 0, 31, 0, 9, 0,151, 6, + 9, 0,152, 6, 9, 0,153, 6, 9, 0,154, 6, 9, 0,155, 6, 4, 0, 90, 0, 4, 0,156, 6, 0, 0,157, 6, 0, 0,158, 6, +238, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6,237, 0,159, 6, 2, 0, 90, 0, + 2, 0,128, 0, 4, 0, 89, 0, 9, 0,160, 6,239, 0, 9, 0,239, 0, 0, 0,239, 0, 1, 0, 4, 0, 17, 0, 4, 0, 19, 0, + 7, 0,161, 6, 4, 0, 23, 0, 4, 0,236, 3, 4, 0,237, 3, 4, 0,124, 0,240, 0, 11, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6,217, 0, 71, 6, 12, 0,162, 6, 4, 0,163, 6, 4, 0, 37, 0, 4, 0, 19, 0, + 4, 0,164, 6,241, 0, 25, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, +217, 0, 71, 6, 27, 0,165, 6, 27, 0, 80, 0, 2, 0, 19, 0, 2, 0,128, 0, 7, 0,166, 6, 9, 0,167, 6, 7, 0, 79, 2, + 7, 0, 80, 2, 7, 0, 87, 6, 7, 0, 18, 6, 7, 0,168, 6, 7, 0,169, 6, 60, 0, 58, 1, 60, 0,170, 6, 4, 0,171, 6, + 2, 0,172, 6, 2, 0, 37, 0,163, 0, 97, 3,242, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, + 7, 0, 21, 6, 2, 0, 22, 6, 2, 0, 19, 0, 2, 0,126, 3, 4, 0, 37, 0,163, 0, 97, 3,243, 0, 42, 0,216, 0, 0, 0, +216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6,226, 0,101, 6, 0, 0, 88, 6, + 0, 0, 89, 6, 0, 0, 90, 6, 2, 0, 17, 0, 2, 0,173, 6, 2, 0, 19, 0, 2, 0, 92, 6, 9, 0,167, 6, 4, 0, 95, 6, + 4, 0,174, 6, 4, 0,175, 6, 4, 0, 96, 6, 23, 0,176, 6, 23, 0,177, 6, 7, 0,178, 6, 7, 0,179, 6, 7, 0,180, 6, + 7, 0,166, 6, 2, 0,181, 6, 2, 0,234, 0, 2, 0,169, 1, 2, 0, 94, 6, 2, 0, 37, 0, 2, 0, 89, 0, 2, 0,182, 6, + 2, 0,183, 6, 9, 0,184, 6, 9, 0,185, 6, 9, 0,186, 6, 9, 0,187, 6, 9, 0,188, 6, 2, 0,189, 6, 0, 0,190, 6, + 57, 0,191, 6,244, 0, 7, 0,244, 0, 0, 0,244, 0, 1, 0, 4, 0,192, 6, 4, 0, 23, 0, 0, 0, 83, 0, 4, 0,193, 6, + 4, 0, 17, 0,245, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, + 4, 0, 17, 0, 4, 0,194, 6, 4, 0, 19, 0, 4, 0,135, 6, 12, 0,195, 6, 12, 0,196, 6, 0, 0,197, 6, 0, 0,198, 6, + 4, 0,199, 6, 4, 0,200, 6,246, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 4, 0, 37, 0, + 0, 0,201, 6,247, 0, 7, 0,247, 0, 0, 0,247, 0, 1, 0, 0, 0,202, 6, 2, 0,203, 6, 2, 0,204, 6, 2, 0,205, 6, + 2, 0, 37, 0,248, 0, 12, 0, 2, 0,204, 6, 2, 0,206, 6, 2, 0,207, 6, 0, 0,181, 2, 2, 0,208, 6, 2, 0,209, 6, + 2, 0,210, 6, 2, 0,211, 6, 2, 0,212, 6, 2, 0, 62, 6, 7, 0,213, 6, 7, 0,214, 6,249, 0, 18, 0,249, 0, 0, 0, +249, 0, 1, 0, 0, 0,240, 3,248, 0,215, 6,248, 0,216, 6,248, 0,217, 6,248, 0,218, 6, 7, 0,219, 6, 2, 0,220, 6, + 2, 0,221, 6, 2, 0,222, 6, 2, 0,223, 6, 2, 0,224, 6, 2, 0,225, 6, 2, 0,226, 6, 2, 0,227, 6, 2, 0,228, 6, + 2, 0,229, 6,250, 0, 10, 0, 0, 0,230, 6, 0, 0,231, 6, 0, 0,232, 6, 0, 0,233, 6, 0, 0,234, 6, 0, 0,235, 6, + 2, 0,236, 6, 2, 0,237, 6, 2, 0,238, 6, 2, 0,239, 6,251, 0, 8, 0, 0, 0,240, 6, 0, 0,241, 6, 0, 0,242, 6, + 0, 0,243, 6, 0, 0,244, 6, 0, 0,245, 6, 7, 0,239, 5, 7, 0, 37, 0,252, 0, 18, 0,250, 0,246, 6,250, 0,247, 6, +250, 0,248, 6,250, 0,249, 6,250, 0,250, 6,250, 0,251, 6,250, 0,252, 6,250, 0,253, 6,250, 0,254, 6,250, 0,255, 6, +250, 0, 0, 7,250, 0, 1, 7,250, 0, 2, 7,250, 0, 3, 7,250, 0, 4, 7,250, 0, 5, 7,251, 0, 6, 7, 0, 0, 7, 7, +253, 0, 92, 0, 0, 0, 8, 7, 0, 0, 9, 7, 0, 0,234, 6, 0, 0, 10, 7, 0, 0, 11, 7, 0, 0, 12, 7, 0, 0, 13, 7, + 0, 0, 14, 7, 0, 0, 15, 7, 0, 0, 16, 7, 0, 0, 17, 7, 0, 0, 18, 7, 0, 0, 19, 7, 0, 0, 20, 7, 0, 0, 21, 7, + 0, 0, 22, 7, 0, 0, 23, 7, 0, 0, 24, 7, 0, 0, 25, 7, 0, 0, 26, 7, 0, 0, 27, 7, 0, 0, 28, 7, 0, 0, 29, 7, + 0, 0, 30, 7, 0, 0, 31, 7, 0, 0, 32, 7, 0, 0, 33, 7, 0, 0, 34, 7, 0, 0, 35, 7, 0, 0, 36, 7, 0, 0, 37, 7, + 0, 0, 38, 7, 0, 0, 39, 7, 0, 0, 40, 7, 0, 0, 41, 7, 0, 0, 42, 7, 0, 0, 43, 7, 0, 0, 44, 7, 0, 0, 45, 7, + 0, 0, 46, 7, 0, 0, 47, 7, 0, 0, 48, 7, 0, 0, 49, 7, 0, 0, 50, 7, 0, 0, 51, 7, 0, 0, 52, 7, 0, 0, 53, 7, + 0, 0, 54, 7, 0, 0, 55, 7, 0, 0, 56, 7, 0, 0, 57, 7, 0, 0, 58, 7, 0, 0, 59, 7, 0, 0, 60, 7, 0, 0, 61, 7, + 0, 0, 62, 7, 0, 0, 63, 7, 0, 0, 64, 7, 0, 0, 65, 7, 0, 0, 66, 7, 0, 0, 67, 7, 0, 0, 68, 7, 0, 0, 69, 7, + 0, 0, 70, 7, 0, 0, 71, 7, 0, 0, 72, 7, 0, 0, 73, 7, 0, 0, 74, 7, 0, 0, 75, 7, 0, 0, 76, 7, 0, 0, 77, 7, + 0, 0, 78, 7, 0, 0, 79, 7, 0, 0, 80, 7, 0, 0, 81, 7, 0, 0, 82, 7, 0, 0, 83, 7, 0, 0, 84, 7, 0, 0, 85, 7, + 0, 0, 86, 7, 0, 0, 87, 7, 0, 0, 88, 7, 0, 0, 89, 7, 0, 0, 90, 7, 0, 0, 91, 7, 0, 0, 92, 7, 0, 0, 93, 7, + 0, 0, 94, 7, 0, 0, 95, 7, 0, 0, 96, 7, 0, 0, 97, 7, 0, 0, 98, 7,254, 0, 5, 0, 0, 0, 99, 7, 0, 0, 32, 7, + 0, 0, 34, 7, 2, 0, 19, 0, 2, 0, 37, 0,255, 0, 25, 0,255, 0, 0, 0,255, 0, 1, 0, 0, 0, 20, 0,252, 0,100, 7, +253, 0,101, 7,253, 0,102, 7,253, 0,103, 7,253, 0,104, 7,253, 0,105, 7,253, 0,106, 7,253, 0,107, 7,253, 0,108, 7, +253, 0,109, 7,253, 0,110, 7,253, 0,111, 7,253, 0,112, 7,253, 0,113, 7,253, 0,114, 7,253, 0,115, 7,253, 0,116, 7, +253, 0,117, 7,253, 0,118, 7,254, 0,119, 7, 4, 0,120, 7, 4, 0, 37, 0, 0, 1, 3, 0, 0, 1, 0, 0, 0, 1, 1, 0, + 0, 0,121, 7, 1, 1, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,128, 2, 7, 0,122, 7, 7, 0, 32, 2, 2, 1, 88, 0, + 4, 0, 19, 0, 4, 0,123, 7, 4, 0,124, 7, 0, 0,125, 7, 0, 0,126, 7, 0, 0,127, 7, 0, 0,128, 7, 0, 0,129, 7, + 0, 0,130, 7, 0, 0,131, 7, 0, 0,132, 7, 0, 0,133, 7, 0, 0,134, 7, 4, 0,135, 7, 2, 0,136, 7, 2, 0,137, 7, + 2, 0,138, 7, 2, 0,139, 7, 4, 0,140, 7, 4, 0,141, 7, 4, 0,142, 7, 4, 0,143, 7, 2, 0,144, 7, 2, 0,145, 7, + 4, 0,146, 7, 4, 0,147, 7, 4, 0,148, 7, 4, 0,149, 7, 4, 0,150, 7, 4, 0,195, 6, 4, 0,151, 7, 2, 0,152, 7, + 2, 0,153, 7, 2, 0,154, 7, 2, 0,155, 7, 12, 0,156, 7, 12, 0,157, 7, 12, 0,158, 7, 12, 0,159, 7, 12, 0,160, 7, + 0, 0,161, 7, 2, 0,162, 7, 2, 0,163, 7, 2, 0,164, 7, 2, 0,165, 7, 2, 0,166, 7, 2, 0,167, 7, 2, 0,168, 7, + 2, 0,169, 7, 1, 1,170, 7, 2, 0,171, 7, 2, 0,172, 7, 2, 0,173, 7, 2, 0,174, 7, 2, 0,175, 7, 2, 0,176, 7, + 2, 0,177, 7, 2, 0,178, 7, 4, 0,179, 7, 4, 0,180, 7, 2, 0,181, 7, 2, 0,182, 7, 2, 0,183, 7, 2, 0,184, 7, + 2, 0,185, 7, 2, 0,186, 7, 2, 0,187, 7, 2, 0,188, 7, 2, 0,189, 7, 2, 0,190, 7, 2, 0,191, 7, 2, 0,192, 7, + 2, 0,193, 7, 2, 0,194, 7, 2, 0,195, 7, 2, 0,196, 7, 2, 0,197, 7, 2, 0,179, 4, 0, 0,198, 7, 0, 0,199, 7, + 7, 0,200, 7, 2, 0,161, 5, 2, 0,162, 5, 55, 0,201, 7, 4, 0,202, 7, 7, 0,203, 7, 7, 0,204, 7, 7, 0,205, 7, +219, 0, 21, 0, 27, 0, 31, 0, 12, 0,206, 7, 12, 0,207, 7, 12, 0,208, 7, 12, 0, 19, 6, 46, 0,129, 0, 46, 0,209, 7, + 2, 0,210, 7, 2, 0,211, 7, 2, 0,212, 7, 2, 0,213, 7, 2, 0,214, 7, 2, 0,215, 7, 2, 0,216, 7, 2, 0,217, 7, + 2, 0,218, 7, 2, 0,219, 7, 4, 0,220, 7,214, 0,221, 7, 9, 0,222, 7, 2, 0,223, 7, 3, 1, 5, 0, 3, 1, 0, 0, + 3, 1, 1, 0, 3, 1,224, 7, 13, 0,225, 7, 4, 0, 19, 0, 4, 1, 7, 0, 4, 1, 0, 0, 4, 1, 1, 0, 3, 1,226, 7, + 3, 1,227, 7, 2, 0, 28, 5, 2, 0, 19, 0, 4, 0, 37, 0, 5, 1, 25, 0, 5, 1, 0, 0, 5, 1, 1, 0, 6, 1,228, 7, + 7, 1,106, 6, 0, 0,229, 7, 0, 0,230, 7, 0, 0,231, 7, 2, 0,232, 7, 2, 0,233, 7, 2, 0,234, 7, 2, 0,235, 7, + 2, 0,236, 7, 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,237, 7, 2, 0,238, 7, 2, 0,239, 7, 4, 0,240, 7, 5, 1,241, 7, + 9, 0,242, 7, 4, 0,243, 7, 4, 0,244, 7, 4, 0,245, 7, 4, 0,246, 7, 0, 0,247, 7, 8, 1, 22, 0, 8, 1, 0, 0, + 8, 1, 1, 0, 3, 1,226, 7, 3, 1,227, 7, 3, 1,248, 7, 3, 1,249, 7,219, 0,250, 7, 23, 0, 51, 0, 0, 0, 20, 6, + 0, 0,251, 7, 2, 0, 63, 6, 2, 0, 64, 6, 2, 0,252, 7, 2, 0, 37, 0, 2, 0,213, 7, 2, 0,193, 6, 2, 0, 19, 0, + 9, 1,228, 7, 12, 0,253, 7, 12, 0, 19, 6, 12, 0,254, 7, 12, 0,255, 7, 10, 1, 24, 0, 10, 1, 0, 0, 10, 1, 1, 0, +217, 0, 71, 6, 23, 0, 0, 8, 23, 0, 1, 8, 2, 0, 63, 6, 2, 0, 64, 6, 2, 0, 2, 8, 2, 0, 3, 8, 2, 0, 4, 8, + 2, 0, 19, 0, 7, 0, 75, 2, 2, 0,234, 7, 2, 0,235, 7, 2, 0,212, 7, 2, 0, 5, 8, 2, 0,217, 7, 2, 0,179, 4, + 11, 1,228, 7, 12, 0, 6, 8, 12, 0, 7, 8, 12, 0,254, 7, 0, 0, 8, 8, 9, 0, 9, 8, 12, 1, 12, 0, 0, 0, 10, 8, + 2, 0, 11, 8, 2, 0, 12, 8, 2, 0, 13, 8, 2, 0, 14, 8, 2, 0, 15, 5, 2, 0, 10, 5,219, 0, 15, 8, 46, 0, 16, 8, + 4, 0, 17, 8, 4, 0, 18, 8, 0, 0, 19, 8, 13, 1, 1, 0, 0, 0, 20, 8, 14, 1, 8, 0, 57, 0, 21, 8, 57, 0, 22, 8, + 14, 1, 23, 8, 14, 1, 24, 8, 14, 1, 25, 8, 2, 0,124, 0, 2, 0, 19, 0, 4, 0, 26, 8, 15, 1, 4, 0, 4, 0,133, 6, + 4, 0, 27, 8, 4, 0,138, 6, 4, 0, 28, 8, 16, 1, 2, 0, 4, 0, 29, 8, 4, 0, 30, 8, 17, 1, 5, 0, 7, 0, 31, 8, + 7, 0, 32, 8, 7, 0, 33, 8, 4, 0, 19, 0, 4, 0, 37, 0, 18, 1, 6, 0, 0, 0, 34, 8, 0, 0, 90, 6, 49, 0,132, 0, + 2, 0,106, 0, 2, 0, 14, 5, 4, 0, 37, 0, 19, 1, 21, 0, 19, 1, 0, 0, 19, 1, 1, 0, 4, 0, 56, 0, 4, 0, 23, 0, + 4, 0, 28, 0, 4, 0, 35, 8, 4, 0, 36, 8, 4, 0, 37, 8, 13, 1, 38, 8, 0, 0, 34, 8, 4, 0, 39, 8, 4, 0, 40, 8, + 18, 1, 91, 3, 15, 1, 41, 8, 16, 1, 42, 8, 17, 1, 43, 8, 14, 1, 44, 8, 14, 1, 45, 8, 14, 1, 46, 8, 57, 0, 47, 8, + 57, 0, 48, 8, 20, 1, 12, 0, 0, 0,250, 1, 9, 0,220, 0, 0, 0,221, 0, 4, 0,224, 0, 4, 0,232, 0, 9, 0,225, 0, + 7, 0,227, 0, 7, 0,228, 0, 9, 0, 49, 8, 9, 0, 50, 8, 9, 0,229, 0, 9, 0,231, 0, 21, 1, 48, 0, 21, 1, 0, 0, + 21, 1, 1, 0, 9, 0, 51, 8, 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 19, 0, 4, 0, 17, 0, 4, 0, 23, 0, 4, 0, 87, 0, + 4, 0, 52, 8, 4, 0, 53, 8, 4, 0, 36, 8, 4, 0, 37, 8, 4, 0, 54, 8, 4, 0,243, 0, 4, 0, 55, 8, 4, 0, 56, 8, + 7, 0, 57, 8, 7, 0, 37, 0, 7, 0, 58, 8, 7, 0, 59, 8, 4, 0,121, 0, 4, 0, 60, 8, 19, 1, 61, 8, 36, 0, 79, 0, + 46, 0,129, 0, 32, 0, 62, 8, 49, 0,132, 0, 7, 0, 63, 8, 7, 0, 64, 8, 20, 1, 59, 1, 21, 1, 65, 8, 21, 1, 66, 8, + 21, 1, 67, 8, 12, 0, 68, 8, 22, 1, 69, 8, 9, 0, 70, 8, 7, 0,249, 3, 7, 0, 71, 8, 7, 0, 72, 8, 4, 0, 73, 8, + 4, 0, 74, 8, 7, 0, 75, 8, 9, 0, 76, 8, 4, 0, 77, 8, 4, 0, 78, 8, 4, 0, 79, 8, 7, 0, 80, 8, 23, 1, 4, 0, + 23, 1, 0, 0, 23, 1, 1, 0, 12, 0, 81, 8, 21, 1, 82, 8,205, 0, 11, 0, 12, 0, 83, 8, 12, 0, 68, 8, 12, 0, 84, 8, + 21, 1, 85, 8, 0, 0, 86, 8, 0, 0, 87, 8, 4, 0, 88, 8, 4, 0, 89, 8, 4, 0, 90, 8, 4, 0, 37, 0, 24, 0, 91, 8, + 24, 1, 4, 0, 7, 0, 92, 8, 7, 0, 65, 3, 2, 0, 93, 8, 2, 0, 94, 8, 25, 1, 6, 0, 7, 0, 95, 8, 7, 0, 96, 8, + 7, 0, 97, 8, 7, 0, 98, 8, 4, 0, 99, 8, 4, 0,100, 8, 26, 1, 13, 0, 7, 0,101, 8, 7, 0,102, 8, 7, 0,103, 8, + 7, 0,104, 8, 7, 0,105, 8, 7, 0,106, 8, 7, 0,107, 8, 7, 0,108, 8, 7, 0,109, 8, 7, 0,110, 8, 4, 0,226, 2, + 4, 0,111, 8, 4, 0,112, 8, 27, 1, 2, 0, 7, 0, 87, 5, 7, 0, 37, 0, 28, 1, 5, 0, 7, 0,113, 8, 7, 0,114, 8, + 4, 0, 90, 0, 4, 0,182, 2, 4, 0,115, 8, 29, 1, 6, 0, 29, 1, 0, 0, 29, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, + 2, 0,116, 8, 2, 0, 56, 0, 30, 1, 8, 0, 30, 1, 0, 0, 30, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,116, 8, + 2, 0, 56, 0, 7, 0, 23, 0, 7, 0,121, 0, 31, 1, 45, 0, 31, 1, 0, 0, 31, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, + 2, 0,116, 8, 2, 0,239, 0, 2, 0, 35, 4, 2, 0,117, 8, 7, 0,118, 8, 7, 0, 88, 0, 7, 0,239, 2, 4, 0,119, 8, + 4, 0, 81, 0, 4, 0,184, 2, 7, 0,120, 8, 7, 0,121, 8, 7, 0,122, 8, 7, 0,123, 8, 7, 0,124, 8, 7, 0,125, 8, + 7, 0,236, 2, 7, 0, 56, 1, 7, 0,126, 8, 7, 0,127, 8, 7, 0, 37, 0, 7, 0,128, 8, 7, 0,129, 8, 7, 0,130, 8, + 2, 0,131, 8, 2, 0,132, 8, 2, 0,133, 8, 2, 0,134, 8, 2, 0,135, 8, 2, 0,136, 8, 2, 0,137, 8, 2, 0,138, 8, + 2, 0, 17, 2, 2, 0,139, 8, 2, 0, 14, 2, 2, 0,140, 8, 0, 0,141, 8, 0, 0,142, 8, 7, 0,237, 0, 32, 1,143, 8, + 67, 0,229, 1, 33, 1, 16, 0, 33, 1, 0, 0, 33, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,116, 8, 2, 0,239, 0, + 7, 0,231, 2, 7, 0,232, 2, 7, 0,233, 2, 7, 0, 64, 2, 7, 0,234, 2, 7, 0,235, 2, 7, 0,144, 8, 7, 0,236, 2, + 7, 0,238, 2, 7, 0,239, 2,231, 0, 5, 0, 2, 0, 17, 0, 2, 0, 26, 8, 2, 0, 19, 0, 2, 0,145, 8, 27, 0,165, 6, +230, 0, 3, 0, 4, 0, 68, 0, 4, 0,146, 8,231, 0, 2, 0, 34, 1, 7, 0, 34, 1, 0, 0, 34, 1, 1, 0, 0, 0, 20, 0, + 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, 9, 0,147, 8, 35, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0,148, 8, + 4, 0,149, 8, 4, 0, 37, 0, 36, 1, 4, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 89, 0, 2, 0, 69, 0, 37, 1, 4, 0, + 0, 0, 20, 0, 66, 0,150, 8, 7, 0, 76, 1, 7, 0, 37, 0, 38, 1, 6, 0, 2, 0,151, 8, 2, 0,152, 8, 2, 0, 17, 0, + 2, 0,153, 8, 0, 0,154, 8, 0, 0,155, 8, 39, 1, 5, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0,156, 8, + 0, 0,157, 8, 40, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 41, 1, 4, 0, 2, 0,158, 8, 2, 0,159, 8, + 2, 0, 19, 0, 2, 0, 37, 0, 42, 1, 6, 0, 0, 0, 20, 0, 0, 0,160, 8, 2, 0,161, 8, 2, 0,236, 2, 2, 0, 69, 1, + 2, 0, 69, 0, 43, 1, 5, 0, 0, 0, 20, 0, 7, 0, 65, 3, 7, 0,129, 4, 2, 0, 19, 0, 2, 0,196, 2, 44, 1, 3, 0, + 0, 0, 20, 0, 4, 0,184, 2, 4, 0,158, 8, 45, 1, 7, 0, 0, 0, 20, 0, 7, 0,129, 4, 0, 0,162, 8, 0, 0,163, 8, + 2, 0, 69, 1, 2, 0, 89, 0, 4, 0,164, 8, 46, 1, 4, 0, 0, 0,165, 8, 0, 0,166, 8, 4, 0, 17, 0, 7, 0,200, 2, + 47, 1, 3, 0, 32, 0,167, 8, 0, 0,168, 8, 0, 0,169, 8, 48, 1, 18, 0, 48, 1, 0, 0, 48, 1, 1, 0, 2, 0, 17, 0, + 2, 0,170, 8, 2, 0, 19, 0, 2, 0,171, 8, 2, 0,172, 8, 2, 0,173, 8, 2, 0, 89, 0, 2, 0, 69, 0, 0, 0, 20, 0, + 9, 0, 2, 0, 49, 1,174, 8, 32, 0, 44, 0, 2, 0,105, 5, 2, 0, 71, 8, 2, 0,175, 8, 2, 0, 37, 0, 50, 1, 11, 0, + 0, 0, 20, 0, 0, 0, 17, 0, 0, 0,176, 8, 2, 0, 19, 0, 2, 0,196, 2, 2, 0,177, 8, 4, 0,178, 8, 4, 0,179, 8, + 4, 0,180, 8, 4, 0,181, 8, 4, 0,182, 8, 51, 1, 1, 0, 0, 0,183, 8, 52, 1, 4, 0, 42, 0,132, 6, 0, 0,121, 7, + 4, 0, 69, 1, 4, 0, 19, 0, 49, 1, 18, 0, 49, 1, 0, 0, 49, 1, 1, 0, 49, 1,184, 8, 2, 0, 17, 0, 2, 0, 19, 0, + 2, 0,185, 8, 2, 0,173, 8, 2, 0,170, 8, 2, 0,186, 8, 2, 0, 69, 0, 2, 0,226, 1, 0, 0, 20, 0, 9, 0, 2, 0, + 53, 1,174, 8, 48, 1,187, 8, 2, 0, 15, 0, 2, 0,188, 8, 4, 0,189, 8, 54, 1, 3, 0, 4, 0,210, 2, 4, 0, 37, 0, + 32, 0, 44, 0, 55, 1, 12, 0,161, 0,190, 8, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,118, 8, 4, 0, 88, 0, 0, 0, 20, 0, + 0, 0,191, 8, 2, 0,192, 8, 2, 0,193, 8, 2, 0,194, 8, 2, 0,195, 8, 7, 0,196, 8, 56, 1, 13, 0, 2, 0, 19, 0, + 2, 0,197, 8, 4, 0, 89, 0, 4, 0, 69, 0, 2, 0,198, 8, 7, 0,249, 3, 7, 0,199, 8, 22, 1, 69, 8, 57, 1,200, 8, + 2, 0, 17, 0, 2, 0,248, 1, 2, 0,233, 5, 2, 0,201, 8, 58, 1, 11, 0, 4, 0,210, 2, 2, 0, 17, 0, 2, 0, 19, 0, + 32, 0, 44, 0, 80, 0,202, 8, 0, 0, 20, 0, 7, 0,203, 8, 7, 0,204, 8, 7, 0,134, 3, 2, 0,205, 8, 2, 0,206, 8, + 59, 1, 5, 0, 2, 0, 17, 0, 2, 0, 89, 0, 4, 0, 37, 0, 46, 0,129, 0, 32, 0, 94, 5, 60, 1, 5, 0, 4, 0, 37, 0, + 4, 0, 17, 0, 0, 0, 20, 0, 0, 0,156, 8, 32, 0, 44, 0, 61, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,170, 8, + 2, 0,135, 3, 7, 0,207, 8, 7, 0,208, 8, 7, 0,179, 4, 7, 0,147, 3, 7, 0,106, 3, 7, 0,109, 3, 7, 0,209, 8, + 7, 0,210, 8, 32, 0,211, 8, 62, 1, 10, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,118, 8, 4, 0, 88, 0, 0, 0, 20, 0, + 0, 0,191, 8, 2, 0, 89, 0, 2, 0, 69, 0, 2, 0,226, 1, 2, 0,248, 1, 63, 1, 8, 0, 32, 0, 44, 0, 7, 0,233, 2, + 7, 0,212, 8, 7, 0,213, 8, 7, 0, 37, 0, 2, 0, 89, 0, 2, 0,196, 2, 7, 0, 69, 0, 64, 1, 12, 0, 2, 0, 17, 0, + 2, 0, 69, 1, 2, 0, 19, 0, 2, 0,236, 2, 2, 0,210, 2, 2, 0,214, 8, 4, 0, 37, 0, 7, 0,215, 8, 7, 0,216, 8, + 7, 0,217, 8, 7, 0,218, 8, 0, 0,219, 8, 65, 1, 9, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,118, 8, 4, 0, 88, 0, + 0, 0, 20, 0, 2, 0,179, 4, 2, 0, 63, 0, 2, 0,220, 8, 2, 0,221, 8, 66, 1, 7, 0, 4, 0,184, 2, 4, 0,222, 8, + 4, 0,223, 8, 4, 0,224, 8, 7, 0,225, 8, 7, 0,226, 8, 0, 0,162, 8, 67, 1, 7, 0, 0, 0,227, 8, 32, 0,228, 8, + 0, 0,168, 8, 2, 0,229, 8, 2, 0, 89, 0, 4, 0, 69, 0, 0, 0,169, 8, 68, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, + 4, 0,118, 8, 4, 0, 88, 0, 0, 0,230, 8, 0, 0,231, 8, 69, 1, 1, 0, 4, 0, 19, 0, 70, 1, 6, 0, 0, 0, 92, 0, + 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,232, 8, 7, 0,233, 8, 42, 0,132, 6, 71, 1, 4, 0, 0, 0, 59, 2, 2, 0, 19, 0, + 4, 0, 17, 0, 32, 0, 44, 0, 72, 1, 2, 0, 4, 0, 17, 0, 4, 0, 52, 6, 73, 1, 6, 0, 0, 0,165, 8, 0, 0,166, 8, + 4, 0, 17, 0, 7, 0, 25, 2, 32, 0, 44, 3, 32, 0,234, 8, 53, 1, 10, 0, 53, 1, 0, 0, 53, 1, 1, 0, 53, 1,184, 8, + 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,170, 8, 2, 0,235, 8, 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 44, 0, 74, 1, 10, 0, + 7, 0,134, 3, 7, 0,236, 8, 7, 0,237, 8, 7, 0,238, 8, 7, 0,239, 8, 4, 0, 19, 0, 7, 0,214, 8, 7, 0,240, 8, + 7, 0,241, 8, 7, 0, 37, 0, 57, 1, 8, 0, 7, 0,242, 8, 7, 0,243, 8, 7, 0,244, 8, 7, 0,245, 8, 7, 0,246, 8, + 7, 0,247, 8, 7, 0,248, 8, 7, 0,249, 8, 22, 1, 16, 0, 27, 0, 31, 0, 0, 0, 34, 0, 43, 0,147, 0, 9, 0,220, 0, + 43, 0,250, 8, 36, 0, 79, 0, 7, 0,249, 3, 7, 0,251, 8, 7, 0,199, 8, 7, 0,242, 8, 7, 0,243, 8, 7, 0,252, 8, + 4, 0, 90, 0, 4, 0, 37, 0, 9, 0,253, 8, 9, 0,254, 8, 75, 1, 15, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, + 4, 0, 20, 6, 7, 0, 21, 6, 8, 1,255, 8,217, 0, 71, 6, 22, 1, 69, 8, 2, 0, 69, 1, 2, 0,197, 8, 2, 0, 79, 2, + 2, 0, 80, 2, 2, 0, 19, 0, 2, 0,122, 6, 4, 0, 69, 0, 76, 1, 6, 0, 76, 1, 0, 0, 76, 1, 1, 0, 32, 0, 44, 0, + 9, 0, 0, 9, 4, 0,244, 0, 4, 0, 37, 0, 67, 0, 4, 0, 27, 0, 31, 0, 12, 0, 1, 9, 4, 0,126, 0, 7, 0, 2, 9, + 77, 1, 27, 0, 77, 1, 0, 0, 77, 1, 1, 0, 26, 0, 3, 9, 77, 1, 38, 0, 12, 0, 4, 9, 0, 0, 20, 0, 7, 0, 5, 9, + 7, 0, 6, 9, 7, 0, 7, 9, 7, 0, 8, 9, 4, 0, 19, 0, 7, 0, 9, 9, 7, 0, 10, 9, 7, 0, 11, 9, 7, 0, 76, 1, + 7, 0, 25, 2, 7, 0, 12, 9, 7, 0,182, 2, 7, 0, 13, 9, 7, 0, 14, 9, 7, 0, 15, 9, 7, 0, 16, 9, 7, 0, 17, 9, + 7, 0,169, 0, 4, 0,126, 0, 2, 0,142, 5, 2, 0,179, 4, 78, 1, 25, 0, 27, 0, 31, 0, 39, 0, 74, 0, 12, 0, 18, 9, + 12, 0, 19, 9, 12, 0, 20, 9, 77, 1, 21, 9, 9, 0, 22, 9, 9, 0, 23, 9, 4, 0, 19, 0, 4, 0, 28, 6, 2, 0,240, 2, + 2, 0, 81, 6, 4, 0, 37, 0, 4, 0,126, 0, 4, 0, 24, 9, 2, 0, 25, 9, 2, 0, 26, 9, 2, 0, 27, 9, 2, 0, 28, 9, + 4, 0, 29, 9, 4, 0, 30, 9, 4, 0, 31, 9, 4, 0, 32, 9, 4, 0, 33, 9, 4, 0, 34, 9, 79, 1, 2, 0, 7, 0,142, 2, + 4, 0, 19, 0,165, 0, 5, 0, 79, 1, 35, 9, 4, 0,182, 2, 4, 0, 36, 9, 4, 0, 37, 9, 4, 0, 19, 0,164, 0, 16, 0, + 4, 0, 38, 9, 4, 0, 39, 9, 4, 0, 40, 9, 4, 0, 41, 9, 2, 0, 42, 9, 2, 0, 43, 9, 2, 0, 44, 9, 2, 0,244, 0, + 2, 0, 45, 9, 2, 0, 46, 9, 2, 0, 47, 9, 2, 0, 48, 9, 4, 0, 49, 9, 4, 0, 50, 9, 4, 0, 51, 9, 4, 0, 52, 9, + 80, 1, 44, 0, 80, 1, 0, 0, 80, 1, 1, 0, 26, 0, 3, 9, 12, 0,161, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0, 53, 9, + 2, 0, 54, 9, 2, 0, 55, 9, 2, 0,120, 3, 2, 0, 56, 9, 4, 0, 62, 2, 4, 0, 31, 9, 4, 0, 32, 9, 77, 1, 57, 9, + 80, 1, 38, 0, 80, 1, 58, 9, 12, 0, 59, 9, 9, 0, 60, 9, 9, 0, 61, 9, 9, 0, 62, 9, 7, 0, 64, 1, 7, 0,169, 0, + 7, 0, 63, 9, 7, 0, 4, 2, 7, 0,111, 3, 7, 0,113, 3, 2, 0,143, 3, 2, 0, 37, 0, 7, 0, 64, 9, 7, 0, 65, 9, + 7, 0,116, 3, 7, 0, 66, 9, 7, 0, 67, 9, 7, 0, 68, 9, 7, 0, 69, 9, 7, 0, 70, 9, 7, 0, 71, 9, 7, 0, 72, 9, + 7, 0, 73, 9, 7, 0, 54, 2,165, 0, 99, 3, 32, 0, 74, 9, 80, 1, 75, 9,162, 0, 14, 0, 12, 0, 76, 9, 81, 1, 77, 9, + 2, 0, 19, 0, 2, 0, 78, 9, 7, 0, 91, 2, 7, 0, 79, 9, 7, 0, 80, 9, 12, 0, 81, 9, 4, 0, 82, 9, 4, 0, 83, 9, + 9, 0, 84, 9, 9, 0, 85, 9,164, 0, 98, 3, 0, 0, 86, 9, 82, 1, 1, 0, 4, 0, 83, 9, 83, 1, 12, 0, 4, 0, 83, 9, + 7, 0,182, 8, 2, 0, 87, 9, 2, 0, 88, 9, 7, 0, 89, 9, 7, 0, 90, 9, 2, 0, 91, 9, 2, 0, 19, 0, 7, 0, 92, 9, + 7, 0, 93, 9, 7, 0, 94, 9, 7, 0, 95, 9, 84, 1, 7, 0, 84, 1, 0, 0, 84, 1, 1, 0, 12, 0, 96, 9, 4, 0, 19, 0, + 4, 0, 97, 9, 0, 0,240, 3,254, 0, 98, 9,161, 0, 7, 0, 27, 0, 31, 0, 12, 0, 99, 9, 12, 0, 76, 9, 12, 0,100, 9, + 12, 0,100, 0, 4, 0, 19, 0, 4, 0,101, 9,221, 0, 5, 0, 27, 0,102, 9, 12, 0, 76, 9, 67, 0,103, 9, 4, 0,104, 9, + 4, 0, 19, 0, 85, 1, 13, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, +217, 0, 71, 6,161, 0, 94, 3,221, 0,105, 9, 0, 0, 69, 1, 0, 0, 74, 6, 2, 0, 19, 0, 7, 0,106, 9, 86, 1, 8, 0, + 86, 1, 0, 0, 86, 1, 1, 0, 84, 1,107, 9, 36, 0, 79, 0, 12, 0,100, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0,108, 9, + 87, 1, 5, 0, 87, 1, 0, 0, 87, 1, 1, 0, 36, 0, 79, 0, 2, 0, 19, 0, 0, 0,109, 9, 88, 1, 14, 0, 88, 1, 0, 0, + 88, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0,110, 9, 0, 0,111, 9, 0, 0,109, 9, 7, 0,112, 9, + 7, 0,113, 9, 4, 0, 37, 0, 36, 0, 79, 0, 7, 0,114, 9, 7, 0,115, 9, 89, 1, 9, 0, 89, 1, 0, 0, 89, 1, 1, 0, + 32, 0,116, 9, 0, 0,243, 2, 7, 0,117, 9, 2, 0,118, 9, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,119, 9, 90, 1, 7, 0, + 42, 0,132, 6, 26, 0, 3, 9, 4, 0, 19, 0, 4, 0,120, 9, 12, 0,121, 9, 32, 0,116, 9, 0, 0,243, 2, 91, 1, 15, 0, + 32, 0,116, 9, 2, 0,122, 9, 2, 0, 19, 0, 2, 0,123, 9, 2, 0,124, 9, 0, 0,243, 2, 32, 0,125, 9, 0, 0,126, 9, + 7, 0,127, 9, 7, 0, 25, 2, 7, 0,128, 9, 7, 0,129, 9, 2, 0, 17, 0, 2, 0, 69, 1, 7, 0, 76, 1, 92, 1, 6, 0, + 32, 0,116, 9, 7, 0, 35, 9, 2, 0,130, 9, 2, 0,131, 9, 2, 0, 19, 0, 2, 0,132, 9, 93, 1, 6, 0, 32, 0,116, 9, + 4, 0,133, 9, 4, 0,134, 9, 4, 0, 90, 0, 4, 0, 37, 0, 0, 0,243, 2, 94, 1, 4, 0, 32, 0,116, 9, 4, 0, 19, 0, + 4, 0,133, 9, 0, 0,243, 2, 95, 1, 4, 0, 32, 0,116, 9, 4, 0, 19, 0, 4, 0,133, 9, 0, 0,243, 2, 96, 1, 4, 0, + 32, 0,116, 9, 4, 0, 19, 0, 4, 0,133, 9, 0, 0,243, 2, 97, 1, 2, 0, 4, 0, 19, 0, 7, 0,249, 3, 98, 1, 2, 0, + 32, 0,116, 9, 0, 0,243, 2, 99, 1, 10, 0, 32, 0,116, 9, 4, 0,135, 9, 7, 0,120, 0, 4, 0, 19, 0, 2, 0,125, 6, + 2, 0,136, 9, 2, 0, 89, 0, 2, 0, 69, 0, 7, 0,137, 9, 0, 0,243, 2,100, 1, 10, 0, 32, 0,116, 9, 2, 0, 17, 0, + 2, 0, 43, 4, 4, 0, 87, 0, 4, 0, 88, 0, 7, 0,212, 8, 7, 0,213, 8, 4, 0, 37, 0,161, 0,190, 8, 0, 0,243, 2, +101, 1, 4, 0, 32, 0,116, 9, 4, 0,121, 3, 4, 0,138, 9, 0, 0,243, 2,102, 1, 4, 0, 32, 0,116, 9, 4, 0,121, 3, + 4, 0, 37, 0, 0, 0,243, 2,103, 1, 6, 0, 32, 0,116, 9, 7, 0,120, 0, 7, 0, 56, 3, 4, 0,139, 9, 2, 0,121, 3, + 2, 0,122, 3,104, 1, 6, 0, 32, 0,116, 9, 4, 0,140, 9, 4, 0,141, 9, 7, 0,142, 9, 7, 0,143, 9, 0, 0,243, 2, +105, 1, 16, 0, 32, 0,116, 9, 32, 0, 58, 9, 4, 0, 17, 0, 7, 0,144, 9, 7, 0,145, 9, 7, 0,146, 9, 7, 0,147, 9, + 7, 0,148, 9, 7, 0,149, 9, 7, 0,150, 9, 7, 0,151, 9, 7, 0,152, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 89, 0, + 2, 0, 69, 0,106, 1, 3, 0, 32, 0,116, 9, 4, 0, 19, 0, 4, 0, 17, 2,107, 1, 5, 0, 32, 0,116, 9, 4, 0, 19, 0, + 4, 0, 37, 0, 7, 0,153, 9, 0, 0,243, 2,108, 1, 10, 0, 32, 0,116, 9, 0, 0,243, 2, 2, 0,154, 9, 2, 0,155, 9, + 0, 0,156, 9, 0, 0,157, 9, 7, 0,158, 9, 7, 0,159, 9, 7, 0,160, 9, 7, 0,161, 9,109, 1, 5, 0, 32, 0,116, 9, + 0, 0,243, 2, 7, 0,190, 2, 2, 0,162, 9, 2, 0, 19, 0,110, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, + 7, 0, 12, 0, 7, 0,163, 9, 7, 0,164, 9, 2, 0, 19, 0, 2, 0, 17, 2,111, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, + 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,163, 9, 7, 0,164, 9, 2, 0, 19, 0, 2, 0, 17, 2,112, 1, 8, 0, 7, 0, 9, 0, + 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,163, 9, 7, 0,164, 9, 2, 0, 19, 0, 2, 0, 17, 2,113, 1, 7, 0, + 32, 0,116, 9, 0, 0,243, 2, 7, 0, 76, 1, 7, 0, 85, 1, 2, 0, 19, 0, 2, 0, 69, 1, 4, 0, 37, 0,114, 1, 5, 0, + 32, 0, 44, 3, 7, 0, 76, 1, 2, 0, 48, 3, 0, 0, 50, 3, 0, 0,165, 9,115, 1, 10, 0,115, 1, 0, 0,115, 1, 1, 0, + 2, 0, 17, 0, 2, 0, 19, 0, 0, 0,166, 9, 7, 0, 19, 1, 7, 0, 20, 1, 2, 0, 96, 9, 2, 0,167, 9, 32, 0, 44, 0, +116, 1, 22, 0,116, 1, 0, 0,116, 1, 1, 0, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0,168, 9, 2, 0,169, 9, 36, 0, 79, 0, +161, 0,190, 8, 32, 0,161, 0, 7, 0, 87, 0, 7, 0, 88, 0, 7, 0,170, 9, 7, 0,171, 9, 7, 0,172, 9, 7, 0,173, 9, + 7, 0,229, 2, 7, 0,174, 9, 7, 0,192, 8, 7, 0,175, 9, 0, 0,176, 9, 0, 0,177, 9, 12, 0,102, 3,117, 1, 8, 0, + 7, 0, 32, 2, 7, 0,212, 8, 7, 0,213, 8, 9, 0, 2, 0, 2, 0,178, 9, 2, 0,179, 9, 2, 0,180, 9, 2, 0,181, 9, +118, 1, 18, 0,118, 1, 0, 0,118, 1, 1, 0,118, 1,182, 9, 0, 0, 20, 0,117, 1,183, 9, 2, 0, 17, 0, 2, 0, 19, 0, + 2, 0,184, 9, 2, 0,185, 9, 2, 0,186, 9, 2, 0,187, 9, 4, 0, 89, 0, 7, 0,188, 9, 7, 0,189, 9, 4, 0,190, 9, + 4, 0,191, 9,118, 1,192, 9,119, 1,193, 9,120, 1, 33, 0,120, 1, 0, 0,120, 1, 1, 0,120, 1,194, 9, 0, 0, 20, 0, + 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 35, 8, 2, 0, 71, 8, 2, 0,195, 9, 2, 0,128, 0, 2, 0,185, 9, 2, 0, 26, 8, + 12, 0,185, 8, 12, 0,196, 9, 27, 0,165, 6, 9, 0,197, 9, 7, 0,188, 9, 7, 0,189, 9, 7, 0, 64, 2, 7, 0,198, 9, + 2, 0,199, 9, 2, 0,200, 9, 7, 0,201, 9, 7, 0,202, 9, 2, 0,203, 9, 2, 0,204, 9, 9, 0,205, 9, 24, 0,206, 9, + 24, 0,207, 9, 24, 0,208, 9,121, 1,148, 0,122, 1,209, 9,123, 1,210, 9,119, 1, 8, 0,119, 1, 0, 0,119, 1, 1, 0, +120, 1,211, 9,120, 1,212, 9,118, 1,213, 9,118, 1,192, 9, 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 22, 0, 27, 0, 31, 0, + 39, 0, 74, 0,163, 0, 97, 3, 12, 0,214, 9, 12, 0,215, 9,117, 1,216, 9, 12, 0,217, 9, 4, 0, 17, 0, 4, 0,218, 9, + 4, 0,219, 9, 4, 0,220, 9, 4, 0, 19, 0, 4, 0, 37, 0, 12, 0,221, 9,123, 1,222, 9, 4, 0,223, 9, 9, 0,224, 9, + 9, 0,225, 9, 4, 0,226, 9, 9, 0,227, 9, 9, 0,228, 9, 9, 0,229, 9,124, 1, 6, 0, 4, 0,119, 0, 4, 0,121, 0, + 4, 0, 26, 8, 0, 0,230, 9, 0, 0,231, 9, 2, 0, 37, 0,125, 1, 16, 0, 2, 0,234, 7, 2, 0,235, 7, 2, 0,232, 9, + 2, 0,237, 8, 2, 0,233, 9, 2, 0, 67, 0, 7, 0,228, 2, 7, 0,234, 9, 7, 0,235, 9, 2, 0, 91, 1, 0, 0,236, 9, + 0, 0,237, 9, 2, 0,238, 9, 2, 0, 37, 0, 4, 0,239, 9, 4, 0,240, 9,126, 1, 9, 0, 7, 0,241, 9, 7, 0,242, 9, + 7, 0,252, 8, 7, 0, 65, 3, 7, 0,243, 9, 7, 0, 87, 6, 2, 0, 63, 3, 0, 0,244, 9, 0, 0, 37, 0,127, 1, 4, 0, + 7, 0,245, 9, 7, 0,246, 9, 2, 0, 63, 3, 2, 0, 37, 0,128, 1, 3, 0, 7, 0,247, 9, 7, 0, 57, 8, 7, 0, 15, 0, +129, 1, 7, 0, 0, 0,250, 1, 2, 0, 12, 5, 2, 0, 13, 5, 2, 0, 14, 5, 2, 0,201, 4, 4, 0,121, 0, 4, 0, 41, 4, +130, 1, 9, 0, 7, 0,248, 9, 7, 0,249, 9, 7, 0,250, 9, 7, 0, 75, 2, 7, 0,251, 9, 7, 0,252, 9, 7, 0,253, 9, + 2, 0,254, 9, 2, 0,255, 9,131, 1, 4, 0, 2, 0, 0, 10, 2, 0, 1, 10, 2, 0, 2, 10, 2, 0, 3, 10,132, 1, 2, 0, + 7, 0, 5, 0, 7, 0, 6, 0,133, 1, 2, 0, 0, 0,163, 0, 0, 0, 4, 10,134, 1, 1, 0, 0, 0, 20, 0,135, 1, 10, 0, + 0, 0, 5, 10, 0, 0, 6, 10, 0, 0, 80, 6, 0, 0, 7, 10, 2, 0,232, 9, 2, 0, 8, 10, 7, 0, 9, 10, 7, 0, 10, 10, + 7, 0, 11, 10, 7, 0,174, 9,136, 1, 2, 0, 9, 0, 12, 10, 9, 0, 13, 10,137, 1, 11, 0, 0, 0, 14, 5, 0, 0, 17, 0, + 0, 0, 63, 3, 0, 0, 65, 3, 0, 0, 14, 10, 0, 0,106, 0, 0, 0, 59, 2, 7, 0, 15, 10, 7, 0, 16, 10, 7, 0, 17, 10, + 7, 0, 18, 10,138, 1, 8, 0, 7, 0,151, 8, 7, 0,120, 0, 7, 0,237, 9, 7, 0,147, 2, 7, 0, 19, 10, 7, 0,233, 0, + 7, 0, 20, 10, 4, 0, 17, 0,139, 1, 4, 0, 2, 0, 21, 10, 2, 0, 22, 10, 2, 0, 23, 10, 2, 0, 37, 0,140, 1, 7, 0, + 7, 0, 24, 10, 7, 0,190, 2, 7, 0, 25, 10, 7, 0, 31, 8, 7, 0, 32, 8, 7, 0, 33, 8, 7, 0, 26, 10,141, 1, 6, 0, + 2, 0, 27, 10, 2, 0, 28, 10, 7, 0, 29, 10, 7, 0, 30, 10, 7, 0, 31, 10, 7, 0, 32, 10,142, 1, 1, 0, 0, 0, 20, 0, +143, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 19, 0, 2, 0, 33, 10,144, 1, 10, 0, 2, 0,229, 3, 2, 0, 19, 0, + 7, 0,129, 4, 7, 0, 34, 10, 7, 0, 35, 10, 7, 0, 36, 10, 7, 0, 37, 10,143, 1, 38, 10,143, 1, 39, 10,143, 1, 40, 10, + 63, 0, 11, 0, 4, 0, 19, 0, 4, 0, 63, 0, 4, 0, 41, 10, 4, 0, 42, 10, 24, 0, 43, 10, 24, 0, 44, 10,144, 1, 45, 10, + 7, 0, 46, 10, 7, 0, 47, 10, 7, 0, 48, 10, 7, 0, 49, 10,234, 0, 10, 0, 4, 0, 96, 9, 4, 0, 50, 10, 7, 0, 51, 10, + 7, 0, 52, 10, 7, 0, 53, 10, 7, 0, 54, 10, 7, 0, 10, 0, 7, 0, 12, 0, 4, 0, 69, 1, 4, 0,233, 2,233, 0, 18, 0, + 4, 0,124, 0, 4, 0, 55, 10, 4, 0, 56, 10, 7, 0, 57, 10, 4, 0, 58, 10, 7, 0, 59, 10, 7, 0, 60, 10, 4, 0, 61, 10, + 7, 0, 62, 10, 4, 0, 63, 10, 7, 0, 64, 10,234, 0, 65, 10, 7, 0, 66, 10, 7, 0, 67, 10, 7, 0, 68, 10, 7, 0, 69, 10, + 4, 0, 70, 10, 4, 0, 37, 0,145, 1, 4, 0, 47, 0,220, 2, 7, 0, 71, 10, 7, 0,158, 1, 7, 0, 37, 0,194, 0, 31, 0, + 27, 0, 31, 0,145, 1, 72, 10, 63, 0, 38, 10, 51, 0, 73, 10, 47, 0, 74, 10, 7, 0, 75, 10, 2, 0,239, 5, 2, 0, 37, 0, + 4, 0,106, 0, 4, 0, 19, 0, 7, 0, 76, 10, 4, 0, 72, 2, 4, 0, 77, 10, 7, 0, 78, 10, 7, 0, 79, 10, 7, 0, 80, 10, + 7, 0,158, 1, 4, 0, 81, 10, 7, 0, 82, 10, 0, 0, 83, 10, 0, 0, 84, 10, 0, 0, 85, 10, 0, 0,226, 1, 7, 0, 86, 10, + 7, 0, 87, 10, 7, 0, 88, 10, 7, 0, 89, 10, 4, 0, 90, 10, 7, 0, 91, 10, 7, 0, 92, 10, 7, 0, 93, 10,146, 1, 10, 0, + 4, 0, 17, 0, 4, 0,120, 0, 4, 0, 19, 0, 4, 0,183, 3, 4, 0, 94, 10, 4, 0, 95, 10, 4, 0, 96, 10, 0, 0, 92, 0, + 0, 0, 20, 0, 9, 0, 2, 0,147, 1, 1, 0, 0, 0, 19, 8, 91, 0, 7, 0,146, 1, 97, 10, 4, 0, 98, 10, 4, 0, 99, 10, + 4, 0,100, 10, 4, 0, 37, 0, 9, 0,101, 10,147, 1,102, 10,148, 1, 5, 0, 7, 0,142, 2, 7, 0,210, 2, 7, 0, 25, 2, + 2, 0,118, 2, 2, 0, 37, 0,149, 1, 5, 0, 7, 0,142, 2, 7, 0,103, 10, 7, 0,104, 10, 7, 0,105, 10, 7, 0,210, 2, +150, 1, 5, 0, 32, 0,106, 10,151, 1, 22, 0, 7, 0,209, 5, 7, 0,107, 10, 7, 0, 56, 0,152, 1, 7, 0, 4, 0,108, 10, + 4, 0,109, 10, 4, 0,110, 10, 7, 0,111, 10, 7, 0,112, 10, 7, 0,113, 10, 7, 0, 56, 0,153, 1, 8, 0,153, 1, 0, 0, +153, 1, 1, 0, 32, 0, 44, 0, 4, 0,252, 0, 2, 0, 19, 0, 2, 0, 69, 1, 7, 0,210, 2, 7, 0,159, 8,154, 1, 6, 0, +154, 1, 0, 0,154, 1, 1, 0, 32, 0, 44, 0, 2, 0,195, 2, 2, 0, 19, 0, 2, 0,114, 10,155, 1, 17, 0,149, 1,177, 3, +149, 1,115, 10,148, 1,116, 10,149, 1,143, 8,150, 1,117, 10, 4, 0, 81, 0, 7, 0,210, 2, 7, 0,239, 2, 7, 0,118, 10, + 4, 0,108, 10, 4, 0,119, 10, 7, 0,112, 10, 7, 0,113, 10, 7, 0,106, 0, 4, 0,120, 10, 2, 0, 19, 0, 2, 0,121, 10, +156, 1, 9, 0, 7, 0,122, 10, 7, 0,248, 0, 7, 0,123, 10, 7, 0,124, 10, 7, 0,125, 10, 7, 0,126, 10, 7, 0,127, 10, + 7, 0,128, 10, 7, 0,129, 10,157, 1,111, 0, 27, 0, 31, 0, 39, 0, 74, 0,158, 1,130, 10,156, 1,131, 10,172, 0, 63, 4, + 4, 0, 19, 0, 2, 0, 17, 0, 2, 0,154, 9, 2, 0,132, 10, 2, 0,133, 10, 2, 0,143, 3, 2, 0,134, 10, 2, 0,135, 10, + 2, 0,136, 10, 2, 0,137, 10, 2, 0,138, 10, 2, 0,139, 10, 2, 0,140, 10, 2, 0,141, 10, 2, 0,113, 5, 2, 0,142, 10, + 2, 0,143, 10, 2, 0,144, 10, 2, 0,145, 10, 2, 0,146, 10, 2, 0, 14, 2, 2, 0,136, 8, 2, 0,111, 8, 2, 0,147, 10, + 2, 0,148, 10, 2, 0,193, 3, 2, 0,194, 3, 2, 0,149, 10, 2, 0,150, 10, 2, 0,151, 10, 2, 0,152, 10, 7, 0,153, 10, + 7, 0,154, 10, 7, 0,155, 10, 2, 0, 62, 5, 2, 0,156, 10, 7, 0,157, 10, 7, 0,158, 10, 7, 0,159, 10, 7, 0,118, 8, + 7, 0, 88, 0, 7, 0,239, 2, 7, 0,124, 8, 7, 0,160, 10, 7, 0,161, 10, 7, 0,162, 10, 4, 0,119, 8, 4, 0,117, 8, + 4, 0,163, 10, 7, 0,120, 8, 7, 0,121, 8, 7, 0,122, 8, 7, 0,164, 10, 7, 0,165, 10, 7, 0,166, 10, 7, 0,167, 10, + 7, 0,168, 10, 7, 0, 56, 0, 7, 0,169, 10, 7, 0,170, 10, 7, 0,171, 10, 7, 0,172, 10, 7, 0,134, 3, 7, 0,106, 0, + 7, 0,173, 10, 7, 0,174, 10, 7, 0,175, 10, 7, 0,176, 10, 7, 0,177, 10, 7, 0,178, 10, 7, 0,179, 10, 4, 0,180, 10, + 4, 0,181, 10, 7, 0,182, 10, 7, 0,183, 10, 7, 0,184, 10, 7, 0,185, 10, 7, 0,186, 10, 7, 0,207, 0, 7, 0,187, 10, + 7, 0,220, 3, 7, 0,218, 3, 7, 0,219, 3, 7, 0,188, 10, 7, 0,189, 10, 7, 0,190, 10, 7, 0,191, 10, 7, 0,192, 10, + 7, 0,193, 10, 7, 0,194, 10, 7, 0,195, 10, 7, 0,196, 10, 7, 0,197, 10, 7, 0,198, 10, 7, 0,199, 10, 7, 0,200, 10, + 4, 0,201, 10, 4, 0,202, 10, 67, 0,166, 3, 12, 0,203, 10, 67, 0,204, 10, 32, 0,205, 10, 32, 0,206, 10, 36, 0, 79, 0, +167, 0, 61, 1,167, 0,207, 10,147, 0, 44, 0,147, 0, 0, 0,147, 0, 1, 0,157, 1,208, 10,155, 1,209, 10,152, 1, 58, 9, +174, 0,245, 3, 9, 0,246, 3,159, 1,210, 10,159, 1,211, 10, 12, 0,212, 10, 12, 0,213, 10,132, 0,214, 10,140, 0,215, 10, +140, 0,216, 10, 32, 0,217, 10, 32, 0,218, 10, 32, 0, 38, 0, 12, 0,121, 9, 0, 0, 20, 0, 7, 0,237, 0, 7, 0, 10, 3, + 7, 0,219, 10, 4, 0,184, 2, 4, 0, 56, 0, 4, 0, 19, 0, 4, 0,119, 8, 4, 0,220, 10, 4, 0,221, 10, 4, 0,222, 10, + 2, 0,244, 0, 2, 0,223, 10, 2, 0,224, 10, 2, 0,225, 10, 0, 0,226, 10, 2, 0,227, 10, 2, 0,228, 10, 2, 0,229, 10, + 9, 0,230, 10,136, 0, 62, 4, 12, 0,253, 2, 12, 0,231, 10,160, 1,232, 10,161, 1,233, 10, 7, 0,234, 10,134, 0, 37, 0, +162, 1,253, 8, 7, 0, 32, 4, 7, 0,235, 10, 7, 0,236, 10, 7, 0,209, 5, 7, 0,144, 3, 7, 0,134, 3, 7, 0,237, 10, + 7, 0, 74, 2, 7, 0,238, 10, 7, 0,239, 10, 7, 0,240, 10, 7, 0,241, 10, 7, 0,242, 10, 7, 0,243, 10, 7, 0, 33, 4, + 7, 0,244, 10, 7, 0,245, 10, 7, 0,246, 10, 7, 0, 34, 4, 7, 0, 30, 4, 7, 0, 31, 4, 7, 0,247, 10, 7, 0,248, 10, + 4, 0,249, 10, 4, 0, 90, 0, 4, 0,250, 10, 4, 0,251, 10, 2, 0,252, 10, 2, 0,253, 10, 2, 0,254, 10, 2, 0,255, 10, + 2, 0, 0, 11, 2, 0, 1, 11, 2, 0, 2, 11, 2, 0,179, 4,172, 0, 63, 4,135, 0, 9, 0,162, 1, 3, 11, 7, 0, 4, 11, + 7, 0, 5, 11, 7, 0,230, 1, 7, 0, 6, 11, 4, 0, 90, 0, 2, 0, 7, 11, 2, 0, 8, 11, 67, 0,229, 1,163, 1, 4, 0, + 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 9, 11,164, 1, 6, 0,164, 1, 0, 0,164, 1, 1, 0,163, 1, 35, 9, + 4, 0,250, 0, 2, 0, 10, 11, 2, 0, 19, 0,165, 1, 5, 0,165, 1, 0, 0,165, 1, 1, 0, 12, 0, 11, 11, 4, 0, 12, 11, + 4, 0, 19, 0,166, 1, 9, 0,166, 1, 0, 0,166, 1, 1, 0, 12, 0,119, 0,165, 1, 13, 11, 4, 0, 19, 0, 2, 0, 10, 11, + 2, 0, 14, 11, 7, 0, 91, 0, 0, 0, 15, 11,163, 0, 6, 0, 27, 0, 31, 0, 12, 0, 30, 5, 4, 0, 19, 0, 2, 0, 16, 11, + 2, 0, 17, 11, 9, 0, 18, 11,167, 1, 7, 0,167, 1, 0, 0,167, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, + 0, 0, 19, 11, 0, 0, 20, 11,168, 1, 6, 0, 12, 0, 21, 11, 4, 0, 22, 11, 4, 0, 23, 11, 4, 0, 19, 0, 4, 0, 37, 0, +214, 0, 24, 11,169, 1, 3, 0, 7, 0, 87, 5, 7, 0, 25, 11, 7, 0, 26, 11,170, 1, 17, 0, 27, 0, 31, 0,171, 1, 27, 11, +171, 1, 28, 11, 12, 0, 29, 11, 4, 0, 30, 11, 2, 0, 31, 11, 2, 0, 32, 11, 12, 0, 33, 11, 12, 0, 34, 11,168, 1, 35, 11, + 12, 0, 36, 11, 12, 0, 37, 11, 12, 0, 38, 11, 12, 0, 39, 11,172, 1, 40, 11, 12, 0, 41, 11,214, 0, 42, 11,171, 1, 31, 0, +171, 1, 0, 0,171, 1, 1, 0, 9, 0, 43, 11, 4, 0,211, 7, 2, 0, 44, 11, 2, 0, 37, 0,219, 0, 70, 6,219, 0, 45, 11, + 0, 0, 46, 11, 2, 0, 47, 11, 2, 0, 48, 11, 2, 0,234, 7, 2, 0,235, 7, 2, 0, 49, 11, 2, 0, 50, 11, 2, 0,183, 3, + 2, 0,193, 6, 2, 0, 51, 11, 2, 0, 52, 11, 2, 0,223, 9,173, 1, 53, 11,174, 1, 54, 11,175, 1, 55, 11, 4, 0, 56, 11, + 4, 0, 57, 11, 9, 0, 58, 11, 12, 0, 34, 11, 12, 0,254, 7, 12, 0, 59, 11, 12, 0, 60, 11, 12, 0, 61, 11,176, 1, 17, 0, +176, 1, 0, 0,176, 1, 1, 0, 0, 0, 62, 11, 26, 0, 30, 0, 2, 0, 63, 11, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0, 64, 11, + 2, 0, 65, 11, 2, 0, 66, 11, 2, 0, 67, 11, 2, 0, 68, 11, 2, 0, 19, 0, 2, 0, 69, 11, 2, 0, 31, 0, 2, 0, 37, 0, +177, 1, 70, 11,178, 1, 10, 0,178, 1, 0, 0,178, 1, 1, 0, 12, 0, 71, 11, 0, 0, 62, 11, 2, 0, 72, 11, 2, 0, 73, 11, + 2, 0, 19, 0, 2, 0, 74, 11, 4, 0, 75, 11, 9, 0, 76, 11,172, 1, 7, 0,172, 1, 0, 0,172, 1, 1, 0, 0, 0, 62, 11, + 0, 0, 77, 11, 12, 0,159, 7, 4, 0, 78, 11, 4, 0, 19, 0,227, 0, 14, 0,227, 0, 0, 0,227, 0, 1, 0, 0, 0, 62, 11, + 26, 0, 30, 0,179, 1,228, 7, 9, 0, 79, 11, 9, 0, 80, 11,177, 1, 70, 11,168, 1, 81, 11, 12, 0, 82, 11,227, 0, 83, 11, + 7, 1,106, 6, 2, 0, 19, 0, 2, 0,179, 4,180, 1, 8, 0,180, 1, 0, 0,180, 1, 1, 0, 9, 0, 2, 0, 9, 0, 84, 11, + 0, 0,240, 3, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0, 85, 11,181, 1, 5, 0, 7, 0, 86, 11, 4, 0, 87, 11, 4, 0, 88, 11, + 4, 0, 69, 1, 4, 0, 19, 0,182, 1, 6, 0, 7, 0, 89, 11, 7, 0, 90, 11, 7, 0, 91, 11, 7, 0, 92, 11, 4, 0, 17, 0, + 4, 0, 19, 0,183, 1, 5, 0, 7, 0,212, 8, 7, 0,213, 8, 7, 0,210, 2, 2, 0, 28, 2, 2, 0, 29, 2,184, 1, 5, 0, +183, 1, 2, 0, 4, 0, 53, 0, 7, 0, 93, 11, 7, 0,212, 8, 7, 0,213, 8,185, 1, 4, 0, 2, 0, 94, 11, 2, 0, 95, 11, + 2, 0, 96, 11, 2, 0, 97, 11,186, 1, 2, 0, 42, 0,159, 6, 26, 0, 3, 9,187, 1, 3, 0, 24, 0, 98, 11, 4, 0, 19, 0, + 4, 0, 37, 0,188, 1, 6, 0, 7, 0,106, 0, 7, 0,212, 2, 7, 0, 99, 11, 7, 0, 37, 0, 2, 0,243, 0, 2, 0,100, 11, +189, 1, 5, 0, 7, 0,101, 11, 7, 0,120, 0, 7, 0, 36, 9, 7, 0, 37, 9, 4, 0, 19, 0,190, 1, 6, 0, 27, 0,165, 6, + 0, 0,102, 11, 0, 0,103, 11, 2, 0,104, 11, 2, 0, 19, 0, 4, 0,105, 11,191, 1, 7, 0,191, 1, 0, 0,191, 1, 1, 0, + 0, 0,240, 3,190, 1,106, 11, 2, 0,107, 11, 2, 0, 17, 0, 7, 0, 60, 0,192, 1, 7, 0, 12, 0,108, 11, 0, 0,109, 11, + 9, 0,110, 11, 7, 0, 60, 0, 7, 0, 85, 11, 4, 0, 17, 0, 4, 0, 19, 0,193, 1, 3, 0, 7, 0,111, 11, 4, 0, 19, 0, + 4, 0, 37, 0,194, 1, 15, 0,194, 1, 0, 0,194, 1, 1, 0, 84, 1,107, 9,192, 1, 61, 0, 12, 0,102, 3, 35, 0, 49, 0, +193, 1,112, 11, 4, 0, 53, 0, 7, 0, 60, 0, 2, 0, 19, 0, 2, 0, 12, 1, 4, 0,113, 11, 0, 0,102, 11, 4, 0,114, 11, + 7, 0,115, 11,195, 1, 2, 0, 0, 0,116, 11, 0, 0,117, 11,196, 1, 4, 0,196, 1, 0, 0,196, 1, 1, 0,161, 0, 44, 3, + 12, 0,118, 11,197, 1, 24, 0,197, 1, 0, 0,197, 1, 1, 0, 12, 0,119, 11,161, 0,190, 8,196, 1,120, 11, 12, 0,121, 11, + 12, 0,102, 3, 0, 0,240, 3, 7, 0, 85, 11, 7, 0,122, 11, 7, 0, 87, 0, 7, 0, 88, 0, 7, 0,170, 9, 7, 0,171, 9, + 7, 0,229, 2, 7, 0,174, 9, 7, 0,192, 8, 7, 0,175, 9, 2, 0,123, 11, 2, 0,124, 11, 2, 0, 89, 0, 2, 0, 17, 0, + 4, 0, 19, 0, 4, 0, 69, 0,198, 1, 6, 0,198, 1, 0, 0,198, 1, 1, 0, 12, 0,119, 11, 4, 0, 19, 0, 4, 0,146, 2, + 0, 0,240, 3,199, 1, 11, 0,199, 1, 0, 0,199, 1, 1, 0, 27, 0,165, 6, 0, 0,125, 11, 4, 0,105, 11, 2, 0,126, 11, + 2, 0, 37, 0, 0, 0,102, 11, 4, 0,113, 11, 2, 0, 19, 0, 2, 0,127, 11,200, 1, 8, 0,200, 1, 0, 0,200, 1, 1, 0, + 12, 0,128, 11, 0, 0,240, 3, 0, 0,129, 11, 2, 0, 19, 0, 2, 0,127, 11, 4, 0,130, 11,201, 1, 5, 0,201, 1, 0, 0, +201, 1, 1, 0, 0, 0,102, 11, 4, 0,113, 11, 7, 0,200, 2, 39, 0, 12, 0,161, 0, 94, 3,161, 0,131, 11,196, 1,120, 11, + 12, 0,132, 11,197, 1,133, 11, 12, 0,134, 11, 12, 0,135, 11, 4, 0, 19, 0, 4, 0,244, 0, 2, 0,136, 11, 2, 0,137, 11, + 7, 0,138, 11,202, 1, 2, 0, 27, 0, 31, 0, 39, 0, 74, 0,203, 1, 5, 0,203, 1, 0, 0,203, 1, 1, 0, 4, 0, 17, 0, + 4, 0, 19, 0, 0, 0, 20, 0,204, 1, 6, 0,203, 1,139, 11, 32, 0, 44, 0, 4, 0,140, 11, 7, 0,141, 11, 4, 0,142, 11, + 4, 0, 96, 9,205, 1, 3, 0,203, 1,139, 11, 4, 0,140, 11, 7, 0,143, 11,206, 1, 8, 0,203, 1,139, 11, 32, 0, 44, 0, + 7, 0, 64, 1, 7, 0,144, 11, 7, 0, 10, 3, 7, 0,252, 8, 4, 0,140, 11, 4, 0,145, 11,207, 1, 5, 0,203, 1,139, 11, + 7, 0,146, 11, 7, 0, 71, 8, 7, 0,235, 2, 7, 0, 56, 0,208, 1, 3, 0,203, 1,139, 11, 7, 0,252, 8, 7, 0,147, 11, +151, 1, 4, 0, 7, 0,148, 11, 7, 0,175, 10, 2, 0,149, 11, 2, 0, 69, 1,209, 1, 14, 0,209, 1, 0, 0,209, 1, 1, 0, + 12, 0,150, 11, 12, 0,151, 11, 12, 0,152, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0,153, 11, 7, 0,154, 11, + 4, 0,142, 11, 4, 0, 96, 9, 7, 0,249, 3, 7, 0,237, 2,158, 1, 23, 0, 4, 0,140, 11, 4, 0,155, 11, 7, 0,156, 11, + 7, 0, 56, 0, 7, 0,157, 11, 7, 0,233, 2, 7, 0,148, 11, 7, 0,158, 11, 7, 0,212, 2, 7, 0, 57, 10, 7, 0,129, 4, + 7, 0,159, 11, 7, 0,160, 11, 7, 0,161, 11, 7, 0,162, 11, 7, 0,163, 11, 7, 0,164, 11, 7, 0,165, 11, 7, 0,166, 11, + 7, 0,167, 11, 7, 0,168, 11, 7, 0,169, 11, 12, 0,170, 11,120, 0, 36, 0,119, 0,171, 11,210, 1,131, 10, 67, 0,172, 11, + 67, 0,204, 10, 67, 0,173, 11,211, 1,174, 11, 48, 0,162, 0, 48, 0,175, 11, 48, 0,176, 11, 7, 0,177, 11, 7, 0,178, 11, + 7, 0,179, 11, 7, 0,180, 11, 7, 0,181, 11, 7, 0,108, 9, 7, 0,182, 11, 7, 0,158, 1, 7, 0,183, 11, 4, 0,184, 11, + 4, 0,185, 11, 4, 0,186, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0,187, 11, 2, 0,188, 11, 2, 0,189, 11, 4, 0,190, 11, + 7, 0,212, 2, 4, 0,191, 11, 7, 0,192, 11, 4, 0,193, 11, 4, 0,194, 11, 4, 0,195, 11,136, 0,196, 11, 12, 0,197, 11, +172, 0, 63, 4,121, 0, 11, 0,119, 0,171, 11,147, 0, 30, 3, 7, 0,125, 1, 7, 0,108, 9, 7, 0,198, 11, 7, 0,199, 11, + 2, 0,200, 11, 2, 0,201, 11, 2, 0,202, 11, 2, 0, 17, 0, 4, 0, 37, 0,122, 0, 13, 0,119, 0,171, 11,138, 0, 7, 3, +140, 0, 9, 3, 7, 0, 35, 9, 7, 0,203, 11, 7, 0,204, 11, 7, 0, 66, 1, 7, 0,205, 11, 4, 0,130, 9, 4, 0, 5, 3, + 2, 0, 17, 0, 2, 0, 37, 0, 4, 0, 69, 0, 69, 78, 68, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; From 7b1aeea029b1052fa01b99f4e3f5a2e87eccd615 Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Mon, 19 Jul 2010 07:26:41 +0000 Subject: [PATCH 542/674] * spelling error, "substract" --- release/scripts/ui/space_view3d_toolbar.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index 515fa236fc0..fa1a4dec317 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -1111,10 +1111,10 @@ class VIEW3D_PT_tools_brush_appearance(PaintPanel): col = layout.column(); if context.sculpt_object and context.tool_settings.sculpt: - #if brush.sculpt_tool in ('DRAW', 'INFLATE', 'CLAY', 'CLAY_TUBES', 'PINCH', 'CREASE', 'BLOB', 'FLATTEN'): - if brush.sculpt_tool in ('DRAW', 'INFLATE', 'CLAY', 'PINCH', 'CREASE', 'BLOB', 'FLATTEN'): + #if brush.sculpt_tool in ('DRAW', 'INFLATE', 'CLAY', 'CLAY_TUBES', 'PINCH', 'CREASE', 'BLOB', 'FLATTEN', 'FILL', 'SCRAPE'): + if brush.sculpt_tool in ('DRAW', 'INFLATE', 'CLAY', 'PINCH', 'CREASE', 'BLOB', 'FLATTEN', 'FILL', 'SCRAPE'): col.prop(brush, "add_col", text="Add Color") - col.prop(brush, "sub_col", text="Substract Color") + col.prop(brush, "sub_col", text="Subtract Color") else: col.prop(brush, "add_col", text="Color") From acf3c4bb02c329f628f1314b0515db39cfdeebbf Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Mon, 19 Jul 2010 07:29:52 +0000 Subject: [PATCH 543/674] * decrementing image_icon ref count from wrong place --- source/blender/blenkernel/intern/brush.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index c423d426e32..c47f5a3ddba 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -131,7 +131,9 @@ Brush *copy_brush(Brush *brush) brushn= copy_libblock(brush); if(brush->mtex.tex) id_us_plus((ID*)brush->mtex.tex); - + + if(brush->image_icon) id_us_plus((ID*)brush->image_icon); + brushn->curve= curvemapping_copy(brush->curve); /* enable fake user by default */ From c28c33d19d544fdc69e82e5b6d941431516c588c Mon Sep 17 00:00:00 2001 From: Nathan Letwory <nathan@letworyinteractive.com> Date: Mon, 19 Jul 2010 08:55:06 +0000 Subject: [PATCH 544/674] Fix for #22861 Won't compile for MinGW sicne r30349 --- source/blender/blenlib/intern/storage.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c index 4fb5ca77989..e8eb2070929 100644 --- a/source/blender/blenlib/intern/storage.c +++ b/source/blender/blenlib/intern/storage.c @@ -437,7 +437,7 @@ int BLI_filepathsize(const char *path) int BLI_exist(char *name) { -#ifdef WIN32 +#if defined(WIN32) && !defined(FREE_WINDOWS) struct _stat64i32 st; /* in Windows stat doesn't recognize dir ending on a slash To not break code where the ending slash is expected we From 266438b5e0224de4653ba2a795a069781e926007 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin <sergey.vfx@gmail.com> Date: Mon, 19 Jul 2010 09:02:27 +0000 Subject: [PATCH 545/674] - Use correct paths for mstoolkit and crossmingw tools in sconscript - Use _stat64i32 instead of _stat in BLI_exist Needed for correct compilation by mingw, no sense for msvc (_stat is equivalent to _stat64i32 in Visual C++ 2005, and later i suppose) - Added library msvcr90 for mingw to solve linking error to _stat64i32 --- SConstruct | 9 ++++++--- build_files/scons/config/linuxcross-config.py | 2 +- build_files/scons/config/win32-mingw-config.py | 2 +- source/blender/blenlib/intern/storage.c | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/SConstruct b/SConstruct index b11df1b4c67..21d25f97777 100644 --- a/SConstruct +++ b/SConstruct @@ -46,8 +46,11 @@ import glob import re from tempfile import mkdtemp +# store path to tools +toolpath=os.path.join(".", "build_files", "scons", "tools") + # needed for importing tools -sys.path.append(os.path.join(".", "build_files", "scons", "tools")) +sys.path.append(toolpath) import Blender import btools @@ -121,7 +124,7 @@ if toolset: print "Using " + toolset if toolset=='mstoolkit': env = BlenderEnvironment(ENV = os.environ) - env.Tool('mstoolkit', ['tools']) + env.Tool('mstoolkit', [toolpath]) else: env = BlenderEnvironment(tools=[toolset], ENV = os.environ) # xxx commented out, as was supressing warnings under mingw.. @@ -170,7 +173,7 @@ else: if crossbuild and env['PLATFORM'] != 'win32': print B.bc.HEADER+"Preparing for crossbuild"+B.bc.ENDC - env.Tool('crossmingw', ['tools']) + env.Tool('crossmingw', [toolpath]) # todo: determine proper libs/includes etc. # Needed for gui programs, console programs should do without it diff --git a/build_files/scons/config/linuxcross-config.py b/build_files/scons/config/linuxcross-config.py index 1650201f8c6..6ec429ef2f8 100644 --- a/build_files/scons/config/linuxcross-config.py +++ b/build_files/scons/config/linuxcross-config.py @@ -182,7 +182,7 @@ C_WARN = [ '-Wall' , '-Wno-char-subscripts', '-Wdeclaration-after-statement' ] CC_WARN = [ '-Wall' ] -LLIBS = [ '-ldxguid', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz', '-lstdc++', '-luuid', '-lole32'] #'-lutil', '-lc', '-lm', '-ldl', '-lpthread' ] +LLIBS = [ '-ldxguid', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz', '-lstdc++', '-luuid', '-lole32', '-lmsvcr90'] #'-lutil', '-lc', '-lm', '-ldl', '-lpthread' ] BF_DEBUG = False BF_DEBUG_CCFLAGS = ['-g'] diff --git a/build_files/scons/config/win32-mingw-config.py b/build_files/scons/config/win32-mingw-config.py index f8b67781172..b9e6ba358a1 100644 --- a/build_files/scons/config/win32-mingw-config.py +++ b/build_files/scons/config/win32-mingw-config.py @@ -173,7 +173,7 @@ C_WARN = [ '-Wno-char-subscripts', '-Wdeclaration-after-statement' ] CC_WARN = [ '-Wall' ] -LLIBS = ['-lshell32', '-lshfolder', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz', '-lstdc++','-lole32','-luuid'] +LLIBS = ['-lshell32', '-lshfolder', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz', '-lstdc++','-lole32','-luuid', '-lmsvcr90'] BF_DEBUG = False BF_DEBUG_CCFLAGS= ['-g'] diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c index e8eb2070929..5bf6acf3847 100644 --- a/source/blender/blenlib/intern/storage.c +++ b/source/blender/blenlib/intern/storage.c @@ -447,7 +447,7 @@ int BLI_exist(char *name) BLI_strncpy(tmp, name, FILE_MAXDIR+FILE_MAXFILE); len = strlen(tmp); if (len > 3 && ( tmp[len-1]=='\\' || tmp[len-1]=='/') ) tmp[len-1] = '\0'; - res = _stat(tmp, &st); + res = _stat64i32(tmp, &st); if (res == -1) return(0); #else struct stat st; From 38860522bfc61d3245110822e2003cc9cda61328 Mon Sep 17 00:00:00 2001 From: Nathan Letwory <nathan@letworyinteractive.com> Date: Mon, 19 Jul 2010 09:04:22 +0000 Subject: [PATCH 546/674] Set FREE_WINDOWS when compiling with MinGW --- source/blender/blenlib/SConscript | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/blender/blenlib/SConscript b/source/blender/blenlib/SConscript index 78aecf9936b..37dc8bbe012 100644 --- a/source/blender/blenlib/SConscript +++ b/source/blender/blenlib/SConscript @@ -7,7 +7,7 @@ cflags='' incs = '. ../makesdna ../blenkernel #/intern/guardedalloc #/intern/ghost ../editors/include ../gpu' incs += ' ' + env['BF_FREETYPE_INC'] incs += ' ' + env['BF_ZLIB_INC'] -defs = '' +defs = [] if env['OURPLATFORM'] == 'linux2': cflags='-pthread' @@ -16,6 +16,9 @@ if env['OURPLATFORM'] == 'linux2': if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): incs += ' ' + env['BF_PTHREADS_INC'] +if env['OURPLATFORM'] == 'win32-mingw': + defs.append('FREE_WINDOWS') + if env['OURPLATFORM'] == 'linuxcross': if env['WITH_BF_OPENMP']: incs += ' ' + env['BF_OPENMP_INC'] @@ -24,4 +27,4 @@ if env['OURPLATFORM'] == 'darwin': if env['WITH_BF_OPENMP']: env.Append(CFLAGS=['-DPARALLEL=1']) -env.BlenderLib ( 'bf_blenlib', sources, Split(incs), Split(defs), libtype=['core','player'], priority = [363,170], compileflags =cflags ) +env.BlenderLib ( 'bf_blenlib', sources, Split(incs), defs, libtype=['core','player'], priority = [363,170], compileflags =cflags ) From 1f8f55b3cd268eb2124ace50b455586a329c2b89 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin <sergey.vfx@gmail.com> Date: Mon, 19 Jul 2010 09:19:54 +0000 Subject: [PATCH 547/674] - Reverted "Set FREE_WINDOWS when compiling with MinGW" - Reverted own changes made to _stat function BLI_exists - Use __MINGW32__ instead of FREE_WINDOWS in BLI_exists - Removed recently added lib dependencies for mingw --- build_files/scons/config/linuxcross-config.py | 2 +- build_files/scons/config/win32-mingw-config.py | 2 +- source/blender/blenlib/SConscript | 7 ++----- source/blender/blenlib/intern/storage.c | 4 ++-- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/build_files/scons/config/linuxcross-config.py b/build_files/scons/config/linuxcross-config.py index 6ec429ef2f8..1650201f8c6 100644 --- a/build_files/scons/config/linuxcross-config.py +++ b/build_files/scons/config/linuxcross-config.py @@ -182,7 +182,7 @@ C_WARN = [ '-Wall' , '-Wno-char-subscripts', '-Wdeclaration-after-statement' ] CC_WARN = [ '-Wall' ] -LLIBS = [ '-ldxguid', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz', '-lstdc++', '-luuid', '-lole32', '-lmsvcr90'] #'-lutil', '-lc', '-lm', '-ldl', '-lpthread' ] +LLIBS = [ '-ldxguid', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz', '-lstdc++', '-luuid', '-lole32'] #'-lutil', '-lc', '-lm', '-ldl', '-lpthread' ] BF_DEBUG = False BF_DEBUG_CCFLAGS = ['-g'] diff --git a/build_files/scons/config/win32-mingw-config.py b/build_files/scons/config/win32-mingw-config.py index b9e6ba358a1..f8b67781172 100644 --- a/build_files/scons/config/win32-mingw-config.py +++ b/build_files/scons/config/win32-mingw-config.py @@ -173,7 +173,7 @@ C_WARN = [ '-Wno-char-subscripts', '-Wdeclaration-after-statement' ] CC_WARN = [ '-Wall' ] -LLIBS = ['-lshell32', '-lshfolder', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz', '-lstdc++','-lole32','-luuid', '-lmsvcr90'] +LLIBS = ['-lshell32', '-lshfolder', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz', '-lstdc++','-lole32','-luuid'] BF_DEBUG = False BF_DEBUG_CCFLAGS= ['-g'] diff --git a/source/blender/blenlib/SConscript b/source/blender/blenlib/SConscript index 37dc8bbe012..78aecf9936b 100644 --- a/source/blender/blenlib/SConscript +++ b/source/blender/blenlib/SConscript @@ -7,7 +7,7 @@ cflags='' incs = '. ../makesdna ../blenkernel #/intern/guardedalloc #/intern/ghost ../editors/include ../gpu' incs += ' ' + env['BF_FREETYPE_INC'] incs += ' ' + env['BF_ZLIB_INC'] -defs = [] +defs = '' if env['OURPLATFORM'] == 'linux2': cflags='-pthread' @@ -16,9 +16,6 @@ if env['OURPLATFORM'] == 'linux2': if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): incs += ' ' + env['BF_PTHREADS_INC'] -if env['OURPLATFORM'] == 'win32-mingw': - defs.append('FREE_WINDOWS') - if env['OURPLATFORM'] == 'linuxcross': if env['WITH_BF_OPENMP']: incs += ' ' + env['BF_OPENMP_INC'] @@ -27,4 +24,4 @@ if env['OURPLATFORM'] == 'darwin': if env['WITH_BF_OPENMP']: env.Append(CFLAGS=['-DPARALLEL=1']) -env.BlenderLib ( 'bf_blenlib', sources, Split(incs), defs, libtype=['core','player'], priority = [363,170], compileflags =cflags ) +env.BlenderLib ( 'bf_blenlib', sources, Split(incs), Split(defs), libtype=['core','player'], priority = [363,170], compileflags =cflags ) diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c index 5bf6acf3847..b7e2aeb84c8 100644 --- a/source/blender/blenlib/intern/storage.c +++ b/source/blender/blenlib/intern/storage.c @@ -437,7 +437,7 @@ int BLI_filepathsize(const char *path) int BLI_exist(char *name) { -#if defined(WIN32) && !defined(FREE_WINDOWS) +#if defined(WIN32) && !defined(__MINGW32__) struct _stat64i32 st; /* in Windows stat doesn't recognize dir ending on a slash To not break code where the ending slash is expected we @@ -447,7 +447,7 @@ int BLI_exist(char *name) BLI_strncpy(tmp, name, FILE_MAXDIR+FILE_MAXFILE); len = strlen(tmp); if (len > 3 && ( tmp[len-1]=='\\' || tmp[len-1]=='/') ) tmp[len-1] = '\0'; - res = _stat64i32(tmp, &st); + res = _stat(tmp, &st); if (res == -1) return(0); #else struct stat st; From f054ecd37a9f1d45faba6325b8c2cf952bbabbc4 Mon Sep 17 00:00:00 2001 From: Nathan Letwory <nathan@letworyinteractive.com> Date: Mon, 19 Jul 2010 10:15:49 +0000 Subject: [PATCH 548/674] libjack.dll not needed anymore --- SConstruct | 3 --- 1 file changed, 3 deletions(-) diff --git a/SConstruct b/SConstruct index 21d25f97777..acdf6182504 100644 --- a/SConstruct +++ b/SConstruct @@ -630,9 +630,6 @@ if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'win64-vc', 'linuxcross'): '${BF_FFMPEG_LIBPATH}/avdevice-52.dll', '${BF_FFMPEG_LIBPATH}/avutil-50.dll', '${BF_FFMPEG_LIBPATH}/swscale-0.dll'] - - if env['WITH_BF_JACK']: - dllsources += ['${LCGDIR}/jack/lib/libjack.dll'] windlls = env.Install(dir=env['BF_INSTALLDIR'], source = dllsources) allinstall += windlls From 51087061767db1329ebe2c45b8640c50cff69dd7 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Mon, 19 Jul 2010 10:45:15 +0000 Subject: [PATCH 549/674] Fix startup.blend, this was made from a regular blend file, not the one saved when saving user preferences. I've left out the brush icons. It's really not acceptable to have these as image datablocks. Having these packed would also mean increasing the size of every .blend file by 650 KB. They should be loaded from the datafiles directory. --- .../blender/editors/datafiles/startup.blend.c | 33133 +++------------- 1 file changed, 6534 insertions(+), 26599 deletions(-) diff --git a/source/blender/editors/datafiles/startup.blend.c b/source/blender/editors/datafiles/startup.blend.c index 219549fe91d..34c6a6154fd 100644 --- a/source/blender/editors/datafiles/startup.blend.c +++ b/source/blender/editors/datafiles/startup.blend.c @@ -1,2440 +1,492 @@ /* DataToC output of file <startup_blend> */ -int datatoc_startup_blend_size= 966716; +int datatoc_startup_blend_size= 324620; char datatoc_startup_blend[]= { - 66, 76, 69, 78, 68, 69, 82, 95,118, 50, 53, 50, 82, 69, 78, 68, 32, 0, 0, 0,248,227,141, 2, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 83, 84, 8, 0, 1, 0,176,239, 89, 3, 0, 0, 0, 0, 1, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 45, 45, 45, 63, 35, 35, 40, 64, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,100,102,122,255, 78, 80, 95,191, 35, 35, 40, 64, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 45, 45, 45, 63, -109,109,109,191,142,142,142,255,142,142,142,255,100,102,122,255,100,102,122,255,100,102,122,255, 56, 57, 67,127, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, - 56, 57, 67,127, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 45, 45, 45, 63,109,109,109,191,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255, 78, 80, 95,191, 35, 35, 40, 64, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255, 78, 80, 95,191, 35, 35, 40, 64, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 45, 45, 45, 63,109,109,109,191,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 78, 80, 95,191, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 56, 57, 67,127, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 45, 45, 45, 63,109,109,109,191, -142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255, 35, 35, 40, 64, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0,109,109,109,191,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,132,132,137,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255, 78, 80, 95,191, 35, 35, 40, 64, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 45, 45, 45, 63,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 78, 80, 95,191, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 45, 45, 45, 63,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,121,122,132,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,145,145,149,255,138,139,151,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,145,145,149,255, -152,152,163,255,156,156,170,255,156,156,170,255,156,156,170,255,142,142,158,255,114,115,134,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,145,145,149,255,152,152,163,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,142,142,158,255,128,129,146,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 45, 45, 45, 63,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,142,142,142,255,142,142,142,255,145,145,149,255,152,152,163,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,128,129,146,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255, -142,142,142,255,145,145,149,255,152,152,163,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,142,142,158,255,114,115,134,255,100,102,122,255,100,102,122,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,142,142,142,255,145,145,149,255, -152,152,163,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,128,129,146,255,100,102,122,255, -100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 57, 58, 68,128, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,142,142,142,255,142,142,142,255,145,145,149,255,152,152,163,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -128,129,146,255,114,115,134,255,100,102,122,255,100,102,122,255,100,102,122,255,100,102,122,255, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 77, 77, 77,127,142,142,142,255,145,145,149,255,152,152,163,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,142,142,158,255,114,115,134,255,100,102,122,255,100,102,122,255, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 80, 80, 84,127,152,152,163,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, 93, 94,107,192, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 49, 49, 52, 64, 85, 85, 92,128,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255, 85, 85, 92,128, 49, 49, 53, 64, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 49, 49, 52, 64, 85, 85, 92,128,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -121,121,131,192, 49, 49, 53, 64, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 49, 49, 52, 64, 85, 85, 92,128,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, 85, 85, 92,128, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 49, 49, 52, 64, 85, 85, 92,128,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -156,156,170,255,156,156,170,255,156,156,170,255, 85, 85, 92,128, 49, 49, 53, 64, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 49, 49, 52, 64, 85, 85, 92,128, -156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255,156,156,170,255, -121,121,131,192, 85, 85, 92,128, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 49, 49, 52, 64, 85, 85, 92,128,156,156,170,255,156,156,170,255,156,156,170,255, 85, 85, 92,128, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 49, 49, 53, 64, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 0, 0, 0,255, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, - 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 13, 13, 13, 0, 0, 0, 0,255, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, - 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 0, 0, 0,255, 13, 13, 13, 0, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, 6, 6, 6, 96, - 71, 76, 79, 66, 16, 1, 0, 0, 24,227,141, 2,201, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 53, 5, 0, 0, 0,250, 0, 0, 0, - 1, 0, 0, 1, 24, 81, 92, 7,208,195, 93, 7, 0, 16, 0, 0,128, 32, 4, 0, 67, 58, 92, 68,111, 99,117,109,101,110,116,115, - 32, 97,110,100, 32, 83,101,116,116,105,110,103,115, 92, 80,104,111,101,110,105,120, 92, 77,121, 32, 68,111, 99,117,109,101,110, -116,115, 92, 68,111,119,110,108,111, 97,100,115, 92,115,116, 97,114,116,117,112, 46, 98,108,101,110,100, 0,204,204,204,204,204, -204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,204,204,204, 87, 77, 0, 0,168, 0, 0, 0,160,168,129, 3,111, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 87,105,110, 77, 97,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,169,129, 3,176,169,129, 3,176,169,129, 3,176,169,129, 3, 3, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240,238, 81, 3,240,238, 81, 3,240,238, 81, 3, 48,154, 76, 3, 48,154, 76, 3, 48,154, 76, 3, - 68, 65, 84, 65,148, 0, 0, 0,176,169,129, 3,112, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188, 81, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 24, 81, 92, 7, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,136, 6,202, 3, 0, 0, 0, 0, 1, 0,238, 3, - 0, 0, 1, 0, 0, 0, 0, 0, 16,190, 81, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 32, 9,100, 3, -144,162, 89, 3, 32,120, 0, 3,232,154, 76, 3,152,155, 76, 3, 72,156, 76, 3, 72,156, 76, 3,248,156, 76, 3,200,200, 76, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,168,170,129, 3,195, 0, 0, 0, 1, 0, 0, 0,136,248,129, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,223,101, 3,160,178,129, 3, 24,179,129, 3, 24,193,129, 3, -152,193,129, 3, 88,239,129, 3, 0, 0, 0, 0, 0, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 53, 50, + 82, 69, 78, 68, 32, 0, 0, 0,240, 70,109,192,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, + 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 76, 79, 66, 24, 1, 0, 0, +240, 69,109,192,255,127, 0, 0,201, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 53, 5, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1, +120, 12, 66, 4, 0, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 16, 0, 0,128, 32, 4, 0, 47,104,111,109,101, 47, 98,114, +101, 99,104,116, 47, 46, 98,108,101,110,100,101,114, 47, 50, 46, 53, 50, 47, 99,111,110,102,105,103, 47,115,116, 97,114,116,117, +112, 46, 98,108,101,110,100, 0, 57,158,233, 0, 0, 0, 0, 0, 40, 0, 0, 0, 48, 0, 0, 0, 48, 71,109,192, 32, 0, 0, 0, +240, 70,109,192,255,127, 0, 0, 8, 33, 58, 4, 0, 0, 0, 0,160, 70,109,192,255,127, 0, 0,152,242,130, 4, 0, 0, 0, 0, +208, 70,109,192,255,127, 0, 0,129,160,233, 0, 0, 0, 0, 0,252, 0, 0, 0, 0, 0, 0, 0,240, 70,109,192,255,127, 0, 0, + 32, 0, 0, 0, 82, 69, 78, 68, 8, 33, 58, 4, 0, 0, 0, 0, 82, 69, 78, 68, 32, 0, 0, 0,240, 70,109,192,255,127, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0,184,113, 68, 4, 0, 0, 0, 0, 32, 71,109,192,255,127, 0, 0, 63,167,233, 0, 0, 0, 0, 0, +152,135, 10, 3, 0, 0, 0, 0, 8, 33, 58, 4, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 0, 0, 24, 1, 0, 0,184,113, 68, 4, 0, 0, 0, 0,111, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208,223,101, 3,196, 0, 0, 0, 1, 0, 0, 0,136,191,113, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,191,113, 3,196, 0, 0, 0, - 1, 0, 0, 0,152,171,129, 3,208,223,101, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -152,171,129, 3,196, 0, 0, 0, 1, 0, 0, 0, 16,172,129, 3,136,191,113, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 16,172,129, 3,196, 0, 0, 0, 1, 0, 0, 0,136,172,129, 3,152,171,129, 3, 0, 0, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,172,129, 3,196, 0, 0, 0, 1, 0, 0, 0, 0,173,129, 3, - 16,172,129, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0,173,129, 3,196, 0, 0, 0, - 1, 0, 0, 0,120,173,129, 3,136,172,129, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -120,173,129, 3,196, 0, 0, 0, 1, 0, 0, 0,240,173,129, 3, 0,173,129, 3, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,240,173,129, 3,196, 0, 0, 0, 1, 0, 0, 0,104,174,129, 3,120,173,129, 3, 0, 0, 0, 0, - 32, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,174,129, 3,196, 0, 0, 0, 1, 0, 0, 0,224,174,129, 3, -240,173,129, 3, 0, 0, 0, 0, 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224,174,129, 3,196, 0, 0, 0, - 1, 0, 0, 0, 88,175,129, 3,104,174,129, 3, 0, 0, 0, 0,254, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 88,175,129, 3,196, 0, 0, 0, 1, 0, 0, 0,208,175,129, 3,224,174,129, 3, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,208,175,129, 3,196, 0, 0, 0, 1, 0, 0, 0, 72,176,129, 3, 88,175,129, 3, 0, 0, 0, 0, - 32, 4, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,176,129, 3,196, 0, 0, 0, 1, 0, 0, 0,192,176,129, 3, -208,175,129, 3, 0, 0, 0, 0,192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192,176,129, 3,196, 0, 0, 0, - 1, 0, 0, 0, 56,177,129, 3, 72,176,129, 3, 0, 0, 0, 0,192, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 56,177,129, 3,196, 0, 0, 0, 1, 0, 0, 0,176,177,129, 3,192,176,129, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,176,177,129, 3,196, 0, 0, 0, 1, 0, 0, 0, 40,178,129, 3, 56,177,129, 3, 0, 0, 0, 0, -192, 1, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,178,129, 3,196, 0, 0, 0, 1, 0, 0, 0,160,178,129, 3, -176,177,129, 3, 0, 0, 0, 0, 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,178,129, 3,196, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 40,178,129, 3, 0, 0, 0, 0,254, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 24,179,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,179,129, 3, 0, 0, 0, 0,136,191,113, 3,152,171,129, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,179,129, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,180,129, 3, 24,179,129, 3, -136,191,113, 3,136,172,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,180,129, 3,197, 0, 0, 0, - 1, 0, 0, 0,152,180,129, 3,152,179,129, 3,152,171,129, 3, 0,173,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,152,180,129, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,181,129, 3, 24,180,129, 3,136,172,129, 3, 0,173,129, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,181,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,181,129, 3, -152,180,129, 3,208,223,101, 3,120,173,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,181,129, 3, -197, 0, 0, 0, 1, 0, 0, 0, 24,182,129, 3, 24,181,129, 3, 16,172,129, 3,120,173,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 24,182,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,182,129, 3,152,181,129, 3, 0,173,129, 3, -240,173,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,182,129, 3,197, 0, 0, 0, 1, 0, 0, 0, - 24,183,129, 3, 24,182,129, 3,120,173,129, 3,104,174,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 24,183,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,183,129, 3,152,182,129, 3, 16,172,129, 3,224,174,129, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,183,129, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,184,129, 3, 24,183,129, 3, -104,174,129, 3,224,174,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,184,129, 3,197, 0, 0, 0, - 1, 0, 0, 0,152,184,129, 3,152,183,129, 3,208,223,101, 3, 88,175,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,152,184,129, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,185,129, 3, 24,184,129, 3,240,173,129, 3,208,175,129, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,185,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,185,129, 3, -152,184,129, 3,120,173,129, 3,208,175,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,185,129, 3, -197, 0, 0, 0, 1, 0, 0, 0, 24,186,129, 3, 24,185,129, 3, 88,175,129, 3,208,175,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 24,186,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,186,129, 3,152,185,129, 3, 88,175,129, 3, - 72,176,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,186,129, 3,197, 0, 0, 0, 1, 0, 0, 0, - 24,187,129, 3, 24,186,129, 3,208,175,129, 3, 72,176,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 24,187,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,187,129, 3,152,186,129, 3,136,172,129, 3,192,176,129, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,187,129, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,188,129, 3, 24,187,129, 3, -240,173,129, 3,192,176,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,188,129, 3,197, 0, 0, 0, - 1, 0, 0, 0,152,188,129, 3,152,187,129, 3, 72,176,129, 3,192,176,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,152,188,129, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,189,129, 3, 24,188,129, 3, 88,175,129, 3, 56,177,129, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,189,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,189,129, 3, -152,188,129, 3, 72,176,129, 3,176,177,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,189,129, 3, -197, 0, 0, 0, 1, 0, 0, 0, 24,190,129, 3, 24,189,129, 3, 56,177,129, 3,176,177,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 24,190,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,190,129, 3,152,189,129, 3,104,174,129, 3, - 40,178,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,190,129, 3,197, 0, 0, 0, 1, 0, 0, 0, - 24,191,129, 3, 24,190,129, 3,240,173,129, 3, 40,178,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 24,191,129, 3,197, 0, 0, 0, 1, 0, 0, 0,152,191,129, 3,152,190,129, 3, 0,173,129, 3,160,178,129, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,191,129, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,192,129, 3, 24,191,129, 3, -224,174,129, 3,160,178,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,192,129, 3,197, 0, 0, 0, - 1, 0, 0, 0,152,192,129, 3,152,191,129, 3, 40,178,129, 3,160,178,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,152,192,129, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,193,129, 3, 24,192,129, 3,136,172,129, 3, 56,177,129, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,193,129, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -152,192,129, 3,192,176,129, 3,176,177,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,152,193,129, 3, -199, 0, 0, 0, 1, 0, 0, 0, 32,197,129, 3, 0, 0, 0, 0,136,172,129, 3,136,191,113, 3,152,171,129, 3, 0,173,129, 3, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 0, 0,240,247,129, 3,240,247,129, 3, 96,194,129, 3,192,195,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,194,129, 3,200, 0, 0, 0, 1, 0, 0, 0,192,195,129, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 87, 77, 87,105,110, 77, 97,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 24,115, 68, 4, 0, 0, 0, 0, 24,115, 68, 4, 0, 0, 0, 0, 24,115, 68, 4, 0, 0, 0, 0, + 24,115, 68, 4, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,195,129, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,194,129, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0, 32,197,129, 3,199, 0, 0, 0, 1, 0, 0, 0,232,201,129, 3,152,193,129, 3,120,173,129, 3, -104,174,129, 3,224,174,129, 3, 16,172,129, 3, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 51, 1, 0, 0, - 4, 4,222, 0, 52, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,200,129, 3,168,200,129, 3,232,197,129, 3, - 72,199,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232,197,129, 3, -200, 0, 0, 0, 1, 0, 0, 0, 72,199,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 55, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, - 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,222, 0, 31, 0,222, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0, -254, 4, 0, 0, 21, 1, 0, 0, 51, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 31, 0, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8,233, 9, 3, 0, 0, 0, 0, 8,233, 9, 3, 0, 0, 0, 0, 8,233, 9, 3, 0, 0, 0, 0, + 24, 48, 5, 88,159,127, 0, 0, 24, 48, 5, 88,159,127, 0, 0, 24, 48, 5, 88,159,127, 0, 0, 68, 65, 84, 65,224, 0, 0, 0, + 24,115, 68, 4, 0, 0, 0, 0,112, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,106,255, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120, 12, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 30, 0,118, 7, 97, 4, 0, 0, 0, 0, 1, 0,238, 3, 0, 0, 1, 0, 0, 0, 0, 0,136,216, 18, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 56,205, 5, 88,159,127, 0, 0, + 88, 63, 41, 4, 0, 0, 0, 0, 88, 63, 41, 4, 0, 0, 0, 0,200, 48, 5, 88,159,127, 0, 0,152, 49, 5, 88,159,127, 0, 0, +104, 50, 5, 88,159,127, 0, 0,104, 50, 5, 88,159,127, 0, 0, 56, 51, 5, 88,159,127, 0, 0, 88, 98, 5, 88,159,127, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 72,116, 68, 4, 0, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 40,225, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 65, 59, 4, 0, 0, 0, 0, 8,120, 68, 4, 0, 0, 0, 0, +120,120, 68, 4, 0, 0, 0, 0, 88,226, 35, 4, 0, 0, 0, 0,200,226, 35, 4, 0, 0, 0, 0,152,215, 57, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 72,199,129, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232,197,129, 3, 0, 0, 0, 0, - 0, 0, 94, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 77, 67, 1,128,138,195, 0, 0, 0, 0,205, 0, 0, 0, -222, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,222, 0, 21, 1,205, 0, 21, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 24, 65, 59, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,248,108, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248,108, 57, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 72, 39, 58, 4, 0, 0, 0, 0, 24, 65, 59, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72, 39, 58, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +232,143, 57, 4, 0, 0, 0, 0,248,108, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,232,143, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,232, 64, 38, 4, 0, 0, 0, 0, + 72, 39, 58, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +232, 64, 38, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,248, 11, 68, 4, 0, 0, 0, 0,232,143, 57, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248, 11, 68, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 88, 25, 67, 4, 0, 0, 0, 0,232, 64, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88, 25, 67, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 56, 77, 68, 4, 0, 0, 0, 0,248, 11, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 56, 77, 68, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8, 68, 62, 4, 0, 0, 0, 0, + 88, 25, 67, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 8, 68, 62, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8,115, 36, 4, 0, 0, 0, 0, 56, 77, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8,115, 36, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 72,241, 61, 4, 0, 0, 0, 0, 8, 68, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,241, 61, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +104,117, 68, 4, 0, 0, 0, 0, 8,115, 36, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,104,117, 68, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,216,117, 68, 4, 0, 0, 0, 0, + 72,241, 61, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +216,117, 68, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72,118, 68, 4, 0, 0, 0, 0,104,117, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,118, 68, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,184,118, 68, 4, 0, 0, 0, 0,216,117, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,118, 68, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 40,119, 68, 4, 0, 0, 0, 0, 72,118, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 40,119, 68, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,119, 68, 4, 0, 0, 0, 0, +184,118, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +152,119, 68, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8,120, 68, 4, 0, 0, 0, 0, 40,119, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8,120, 68, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,119, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,120, 68, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +232,120, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,108, 57, 4, 0, 0, 0, 0, 72, 39, 58, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,120, 68, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 88,121, 68, 4, 0, 0, 0, 0,120,120, 68, 4, 0, 0, 0, 0,232, 64, 38, 4, 0, 0, 0, 0,248,108, 57, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,121, 68, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +200,121, 68, 4, 0, 0, 0, 0,232,120, 68, 4, 0, 0, 0, 0, 72, 39, 58, 4, 0, 0, 0, 0,248, 11, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,121, 68, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 8,205, 62, 4, 0, 0, 0, 0, 88,121, 68, 4, 0, 0, 0, 0,232, 64, 38, 4, 0, 0, 0, 0,248, 11, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,205, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +184, 35, 57, 4, 0, 0, 0, 0,200,121, 68, 4, 0, 0, 0, 0, 24, 65, 59, 4, 0, 0, 0, 0, 88, 25, 67, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184, 35, 57, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +200, 22, 56, 4, 0, 0, 0, 0, 8,205, 62, 4, 0, 0, 0, 0,232,143, 57, 4, 0, 0, 0, 0, 88, 25, 67, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200, 22, 56, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 72, 65, 66, 4, 0, 0, 0, 0,184, 35, 57, 4, 0, 0, 0, 0,248, 11, 68, 4, 0, 0, 0, 0, 56, 77, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72, 65, 66, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +184, 65, 66, 4, 0, 0, 0, 0,200, 22, 56, 4, 0, 0, 0, 0, 8, 68, 62, 4, 0, 0, 0, 0, 88, 25, 67, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184, 65, 66, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +216, 28, 8, 5, 0, 0, 0, 0, 72, 65, 66, 4, 0, 0, 0, 0, 8,115, 36, 4, 0, 0, 0, 0,232,143, 57, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216, 28, 8, 5, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 72, 29, 8, 5, 0, 0, 0, 0,184, 65, 66, 4, 0, 0, 0, 0, 8,115, 36, 4, 0, 0, 0, 0, 8, 68, 62, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72, 29, 8, 5, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +104, 66, 36, 4, 0, 0, 0, 0,216, 28, 8, 5, 0, 0, 0, 0, 24, 65, 59, 4, 0, 0, 0, 0, 72,241, 61, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104, 66, 36, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +216, 66, 36, 4, 0, 0, 0, 0, 72, 29, 8, 5, 0, 0, 0, 0, 56, 77, 68, 4, 0, 0, 0, 0,104,117, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216, 66, 36, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +200,138, 10, 3, 0, 0, 0, 0,104, 66, 36, 4, 0, 0, 0, 0, 88, 25, 67, 4, 0, 0, 0, 0,104,117, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,138, 10, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 56,139, 10, 3, 0, 0, 0, 0,216, 66, 36, 4, 0, 0, 0, 0, 72,241, 61, 4, 0, 0, 0, 0,104,117, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,139, 10, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +168,220, 35, 4, 0, 0, 0, 0,200,138, 10, 3, 0, 0, 0, 0, 72,241, 61, 4, 0, 0, 0, 0,216,117, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,220, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 24,221, 35, 4, 0, 0, 0, 0, 56,139, 10, 3, 0, 0, 0, 0,104,117, 68, 4, 0, 0, 0, 0,216,117, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,221, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +136,221, 35, 4, 0, 0, 0, 0,168,220, 35, 4, 0, 0, 0, 0,232, 64, 38, 4, 0, 0, 0, 0, 72,118, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,221, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +248,221, 35, 4, 0, 0, 0, 0, 24,221, 35, 4, 0, 0, 0, 0, 56, 77, 68, 4, 0, 0, 0, 0, 72,118, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,221, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +104,222, 35, 4, 0, 0, 0, 0,136,221, 35, 4, 0, 0, 0, 0,216,117, 68, 4, 0, 0, 0, 0, 72,118, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,222, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +216,222, 35, 4, 0, 0, 0, 0,248,221, 35, 4, 0, 0, 0, 0, 72,241, 61, 4, 0, 0, 0, 0,184,118, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,222, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 72,223, 35, 4, 0, 0, 0, 0,104,222, 35, 4, 0, 0, 0, 0,216,117, 68, 4, 0, 0, 0, 0, 40,119, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,223, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +184,223, 35, 4, 0, 0, 0, 0,216,222, 35, 4, 0, 0, 0, 0,184,118, 68, 4, 0, 0, 0, 0, 40,119, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,223, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 40,224, 35, 4, 0, 0, 0, 0, 72,223, 35, 4, 0, 0, 0, 0, 8, 68, 62, 4, 0, 0, 0, 0,152,119, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,224, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +152,224, 35, 4, 0, 0, 0, 0,184,223, 35, 4, 0, 0, 0, 0, 56, 77, 68, 4, 0, 0, 0, 0,152,119, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,224, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 8,225, 35, 4, 0, 0, 0, 0, 40,224, 35, 4, 0, 0, 0, 0,248, 11, 68, 4, 0, 0, 0, 0, 8,120, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,225, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +120,225, 35, 4, 0, 0, 0, 0,152,224, 35, 4, 0, 0, 0, 0, 8,115, 36, 4, 0, 0, 0, 0, 8,120, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,225, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +232,225, 35, 4, 0, 0, 0, 0, 8,225, 35, 4, 0, 0, 0, 0,152,119, 68, 4, 0, 0, 0, 0, 8,120, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,225, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 88,226, 35, 4, 0, 0, 0, 0,120,225, 35, 4, 0, 0, 0, 0,232, 64, 38, 4, 0, 0, 0, 0,184,118, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,226, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,232,225, 35, 4, 0, 0, 0, 0, 72,118, 68, 4, 0, 0, 0, 0, 40,119, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,200,226, 35, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, + 72, 27, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 64, 38, 4, 0, 0, 0, 0,248,108, 57, 4, 0, 0, 0, 0, + 72, 39, 58, 4, 0, 0, 0, 0,248, 11, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, +188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152,224, 57, 4, 0, 0, 0, 0,152,224, 57, 4, 0, 0, 0, 0,184,227, 35, 4, 0, 0, 0, 0,216, 25, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,168,200,129, 3,165, 0, 0, 0, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,184,227, 35, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216, 25, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, + 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, +188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,216, 25, 68, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +184,227, 35, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, + 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, + 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0, 72, 27, 68, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 88, 32, 68, 4, 0, 0, 0, 0, +200,226, 35, 4, 0, 0, 0, 0, 88, 25, 67, 4, 0, 0, 0, 0, 8, 68, 62, 4, 0, 0, 0, 0, 8,115, 36, 4, 0, 0, 0, 0, +232,143, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 51, 1, 0, 0, + 4, 4,222, 0, 52, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 31, 68, 4, 0, 0, 0, 0, + 24, 31, 68, 4, 0, 0, 0, 0, 56, 28, 68, 4, 0, 0, 0, 0,168, 29, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 56, 28, 68, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,168, 29, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,248, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, 31, 0,222, 0, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 51, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +168, 29, 68, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 28, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 94, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 77, 67, 1,128,138,195, 0, 0, 0, 0, +205, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,222, 0, 21, 1,205, 0, 21, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 24, 31, 68, 4, 0, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -232,201,129, 3,199, 0, 0, 0, 1, 0, 0, 0,144,206,129, 3, 32,197,129, 3,208,223,101, 3, 88,175,129, 3,208,175,129, 3, -120,173,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 15, 15, 32, 4, 84, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,205,129, 3,112,205,129, 3,176,202,129, 3, 16,204,129, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,202,129, 3,200, 0, 0, 0, 1, 0, 0, 0, - 16,204,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,132, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 88, 32, 68, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, + 72, 37, 68, 4, 0, 0, 0, 0, 72, 27, 68, 4, 0, 0, 0, 0, 24, 65, 59, 4, 0, 0, 0, 0, 72,241, 61, 4, 0, 0, 0, 0, +104,117, 68, 4, 0, 0, 0, 0, 88, 25, 67, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, + 0, 0, 0, 0, 83, 0, 0, 0, 15, 15, 32, 4, 84, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 40, 36, 68, 4, 0, 0, 0, 0, 40, 36, 68, 4, 0, 0, 0, 0, 72, 33, 68, 4, 0, 0, 0, 0,184, 34, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 72, 33, 68, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,184, 34, 68, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,132, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 32, 4, - 26, 0, 32, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, + 26, 0, 32, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 16,204,129, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,202,129, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, - 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 18, 0, 0, 0, - 57, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, - 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 4, 0, 0, 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0,112,205,129, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,184, 34, 68, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 33, 68, 4, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, + 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 18, 0, 0, 0, 57, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, + 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 32, 4, + 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, + 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 58, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,216, 0, 0, 0, 40, 36, 68, 4, 0, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,144,206,129, 3, -199, 0, 0, 0, 1, 0, 0, 0,120,212,129, 3,232,201,129, 3,104,174,129, 3, 40,178,129, 3,160,178,129, 3,224,174,129, 3, - 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 47, 2, 0, 0, 3, 3,222, 0,251, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24,210,129, 3, 24,210,129, 3, 88,207,129, 3,184,208,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,207,129, 3,200, 0, 0, 0, 1, 0, 0, 0,184,208,129, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 94, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, 26, 0,222, 0, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 22, 2, 0, 0, 47, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,208,129, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88,207,129, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 72, 37, 68, 4, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0,248, 47, 10, 3, 0, 0, 0, 0, 88, 32, 68, 4, 0, 0, 0, 0, 8, 68, 62, 4, 0, 0, 0, 0, +152,119, 68, 4, 0, 0, 0, 0, 8,120, 68, 4, 0, 0, 0, 0, 8,115, 36, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 47, 2, 0, 0, 3, 3,222, 0,251, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,104, 45, 10, 3, 0, 0, 0, 0,104, 45, 10, 3, 0, 0, 0, 0,136, 42, 10, 3, 0, 0, 0, 0, +248, 43, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136, 42, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +248, 43, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,222, 0, 26, 0,222, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 33, 4, 0, 0,254, 4, 0, 0, 22, 2, 0, 0, 47, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +222, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248, 43, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,136, 42, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0,100, 66, 0, 0,131, 67, 0, 0, 79,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, - 0, 0, 0, 4, 6, 0,222, 0,225, 0,205, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0, -254, 4, 0, 0, 53, 1, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,225, 0, + 0, 0, 0, 4, 6, 0,222, 0,225, 0,205, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +222, 0,225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,252, 0, 0, 0, 24,210,129, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,104, 45, 10, 3, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,161,100, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 58, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,240,161,100, 3,223, 0, 0, 0, - 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,120,211,129, 3, 68, 65, 84, 65,156, 0, 0, 0,120,211,129, 3,222, 0, 0, 0, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,208,195, 93, 7, 19, 0, 0, 0, 1, 0, 1, 0,208,195, 93, 7, 20, 0, 0, 0, - 1, 0, 1, 0,208,195, 93, 7, 21, 0, 1, 0, 1, 0, 1, 0,208,195, 93, 7, 0, 0, 0, 0, 1, 0, 1, 0, 40,108,103, 7, - 0, 0, 0, 0, 1, 0, 1, 0,208,114,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, 8,197,104, 7, 0, 0, 0, 0, 1, 0, 1, 0, - 72,124,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, 24, 34,104, 7, 0, 0, 0, 0, 1, 0, 1, 0, 8,120,103, 7, 0, 0, 0, 0, - 1, 0, 1, 0,216,103,103, 7, 0, 0, 0, 0, 1, 0, 1, 0,144,110,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, 8,103,103, 7, - 68, 65, 84, 65, 96, 0, 0, 0,120,212,129, 3,199, 0, 0, 0, 1, 0, 0, 0, 48,225,129, 3,144,206,129, 3, 72,176,129, 3, -192,176,129, 3,240,173,129, 3,208,175,129, 3, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,186, 2, 0, 0, - 1, 1, 95, 2,102, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,223,129, 3,208,223,129, 3, 64,213,129, 3, -192,218,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,213,129, 3, -200, 0, 0, 0, 1, 0, 0, 0,160,214,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 68, 65, 84, 65, 16, 0, 0, 0, 24, 58, 9, 3, 0, 0, 0, 0,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, +216, 46, 10, 3, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,216, 46, 10, 3, 0, 0, 0, 0,222, 0, 0, 0, 13, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, + 20, 0, 0, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,200,230,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,136,238,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 88, 66,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,168,249,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,136,159,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,136,244,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,168,226,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,104,233,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,216,225,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,248, 47, 10, 3, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0, 72, 61, 10, 3, 0, 0, 0, 0, 72, 37, 68, 4, 0, 0, 0, 0,216,117, 68, 4, 0, 0, 0, 0, + 72,118, 68, 4, 0, 0, 0, 0, 56, 77, 68, 4, 0, 0, 0, 0,104,117, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,186, 2, 0, 0, 1, 1, 95, 2,102, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,200, 59, 10, 3, 0, 0, 0, 0,200, 59, 10, 3, 0, 0, 0, 0,232, 48, 10, 3, 0, 0, 0, 0, +168, 54, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232, 48, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 88, 50, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 23, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 95, 2, 26, 0, 95, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, - 31, 4, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 12, 4, 10, 0, 95, 2, 26, 0, 95, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 95, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,160,214,129, 3,200, 0, 0, 0, 1, 0, 0, 0, 0,216,129, 3, 64,213,129, 3, 0, 0, 0, 0, - 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0, -160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0,193, 1, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 76, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0,216,129, 3,200, 0, 0, 0, 1, 0, 0, 0, - 96,217,129, 3,160,214,129, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, - 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, -120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88, 50, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +200, 51, 10, 3, 0, 0, 0, 0,232, 48, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +193, 1, 0, 0,193, 1, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 76, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 96,217,129, 3,200, 0, 0, 0, 1, 0, 0, 0,192,218,129, 3, 0,216,129, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, -147, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, -147, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,148, 3,163, 0,130, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200, 51, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 56, 53, 10, 3, 0, 0, 0, 0, 88, 50, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, + 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56, 53, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +168, 54, 10, 3, 0, 0, 0, 0,200, 51, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,180, 0,148, 3,163, 0,130, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,218,129, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,217,129, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168, 54, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 53, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 76, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 95, 2, 76, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,220,129, 3, 68, 65, 84, 65, 72, 3, 0, 0, 32,220,129, 3,159, 0, 0, 0, - 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,134,144, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, - 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, - 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, - 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, - 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, - 0, 0,128, 63,178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, - 35, 44,185, 62,145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65, -214,211,111, 65, 99,240,191, 62,110,116, 85, 63, 80,185, 70,188, 0, 0, 82,180,206, 44,182,190,198,158, 47, 62, 36,239, 74, 63, - 0, 0, 8,179, 67,108,117,194,183,204,216, 65,104,156, 5,194,212,247,159,192,235, 62,114, 66, 59,254,213,193,157,225, 3, 66, - 55, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, - 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, - 0, 0,128, 63,178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, - 35, 44,185, 62,145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65, -214,211,111, 65,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, - 0, 0, 0, 0,234,108, 69, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 56, 10, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 24, 56, 10, 3, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, + 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,134,144, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, + 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, +185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, +178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62, +145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, + 99,240,191, 62,110,116, 85, 63, 80,185, 70,188, 0, 0, 82,180,206, 44,182,190,198,158, 47, 62, 36,239, 74, 63, 0, 0, 8,179, + 67,108,117,194,183,204,216, 65,104,156, 5,194,212,247,159,192,235, 62,114, 66, 59,254,213,193,157,225, 3, 66, 55, 8,160, 64, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, +178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62, +145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, +255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, +234,108, 69, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 32, 33, 12, 66, - 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,223,129, 3,160, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0,144,110,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, - 48,225,129, 3,199, 0, 0, 0, 1, 0, 0, 0, 48,233,129, 3,120,212,129, 3, 88,175,129, 3, 56,177,129, 3,176,177,129, 3, - 72,176,129, 3, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,255, 0, 0, 0, 2, 2,192, 1,171, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,231,129, 3,120,231,129, 3,248,225,129, 3, 24,230,129, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,225,129, 3,200, 0, 0, 0, 1, 0, 0, 0, - 88,227,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, - 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, - 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 88,227,129, 3,200, 0, 0, 0, 1, 0, 0, 0,184,228,129, 3,248,225,129, 3, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,254,194, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, - 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0,145, 0,200, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 32, 33, 12, 66, 85,152,137, 66, +116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,200, 59, 10, 3, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104,233,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, + 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 72, 61, 10, 3, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0, 8,209, 57, 4, 0, 0, 0, 0,248, 47, 10, 3, 0, 0, 0, 0, 72,241, 61, 4, 0, 0, 0, 0, +184,118, 68, 4, 0, 0, 0, 0, 40,119, 68, 4, 0, 0, 0, 0,216,117, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,255, 0, 0, 0, 2, 2,192, 1,171, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,200,207, 57, 4, 0, 0, 0, 0,200,207, 57, 4, 0, 0, 0, 0, 56, 62, 10, 3, 0, 0, 0, 0, +136, 66, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56, 62, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +168, 63, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168, 63, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 24, 65, 10, 3, 0, 0, 0, 0, 56, 62, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,254,194, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, + 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, + 0, 0, 0, 4, 6, 0,217, 0,145, 0,200, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0,145, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,228,129, 3,200, 0, 0, 0, 1, 0, 0, 0, 24,230,129, 3, 88,227,129, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24, 65, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +136, 66, 10, 3, 0, 0, 0, 0,168, 63, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, +191, 1, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24,230,129, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,184,228,129, 3, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, - 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 18, 0, 0, 0, -230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0,111, 18,131, 58, -111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, - 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0,191, 1, 0, 0, -111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -208, 0, 0, 0,120,231,129, 3,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136, 66, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 24, 65, 10, 3, 0, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, + 18, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, +111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +217, 0, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,200,207, 57, 4, 0, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,176,232,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,176,232,129, 3, 24, 1, 0, 0, 1, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 48,233,129, 3,199, 0, 0, 0, 1, 0, 0, 0, - 88,239,129, 3, 48,225,129, 3, 56,177,129, 3,136,172,129, 3,192,176,129, 3,176,177,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, -191, 1, 0, 0, 1, 1, 0, 0,186, 2, 0, 0, 12, 12,192, 1,186, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24,238,129, 3, 24,238,129, 3,248,233,129, 3,184,236,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,248,233,129, 3,200, 0, 0, 0, 1, 0, 0, 0, 88,235,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0,192, 98, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 38, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56, 38, 68, 4, 0, 0, 0, 0, + 24, 1, 0, 0, 1, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 8,209, 57, 4, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0,152,215, 57, 4, 0, 0, 0, 0, 72, 61, 10, 3, 0, 0, 0, 0,184,118, 68, 4, 0, 0, 0, 0, +232, 64, 38, 4, 0, 0, 0, 0, 72,118, 68, 4, 0, 0, 0, 0, 40,119, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0,186, 2, 0, 0, 12, 12,192, 1,186, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 72,214, 57, 4, 0, 0, 0, 0, 72,214, 57, 4, 0, 0, 0, 0,248,209, 57, 4, 0, 0, 0, 0, +216,212, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,209, 57, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +104,211, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 98, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,235,129, 3,200, 0, 0, 0, 1, 0, 0, 0, -184,236,129, 3,248,233,129, 3, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, - 0, 0,199,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,200, 0, -160, 1,200, 0,142, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 27, 1, 0, 0, -186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,160, 1, 0, 0, 2, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104,211, 57, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +216,212, 57, 4, 0, 0, 0, 0,248,209, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,199,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, + 0, 0, 2, 4, 6, 0,200, 0,160, 1,200, 0,142, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,199, 0, 0, 0, 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +200, 0,160, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -184,236,129, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88,235,129, 3, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194, - 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0,199,195, 0, 0, 0, 0,231, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, -159, 1, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0, -159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0, - 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216,212, 57, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,104,211, 57, 4, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194, 0, 0, 0, 0, + 0, 0, 32,193, 0, 0,104, 68, 0, 0,199,195, 0, 0, 0, 0,231, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, + 0, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 2, 4, 4, 0,248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0,191, 1, 0, 0, 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 24,238,129, 3, 25, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 72,214, 57, 4, 0, 0, 0, 0, 25, 1, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 88,239,129, 3,199, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 48,233,129, 3, 40,178,129, 3,240,173,129, 3, 0,173,129, 3,160,178,129, 3, 0, 0, 0, 0, - 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 1, 1,222, 0,138, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,144,246,129, 3,144,246,129, 3, 32,240,129, 3,128,241,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,240,129, 3,200, 0, 0, 0, 1, 0, 0, 0,128,241,129, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 2, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,152,215, 57, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8,209, 57, 4, 0, 0, 0, 0,152,119, 68, 4, 0, 0, 0, 0, 56, 77, 68, 4, 0, 0, 0, 0,248, 11, 68, 4, 0, 0, 0, 0, + 8,120, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, + 1, 1,222, 0,138, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,223, 57, 4, 0, 0, 0, 0, + 24,223, 57, 4, 0, 0, 0, 0,136,216, 57, 4, 0, 0, 0, 0,248,217, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +136,216, 57, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,248,217, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 64, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,132, 1, 24, 0,132, 1, 24, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0, 49, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0, 49, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,241,129, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 32,240,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +248,217, 57, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,216, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, - 49, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,242,129, 3, 68, 65, 84, 65, - 72, 3, 0, 0,224,242,129, 3,159, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,219, 57, 4, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, +104,219, 57, 4, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,109,100, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, @@ -2459,208 +511,263 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 7, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -144,246,129, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,144,110,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 7, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, + 24,223, 57, 4, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0,104,233,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, - 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,136,248,129, 3,195, 0, 0, 0, 1, 0, 0, 0, 24, 81, 92, 7,168,170,129, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,249,129, 3,144,255,129, 3,136, 0, 92, 7, 8, 11, 92, 7,136, 11, 92, 7, - 24, 42, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120,249,129, 3,196, 0, 0, 0, 1, 0, 0, 0,240,249,129, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,249,129, 3,196, 0, 0, 0, 1, 0, 0, 0, -104,250,129, 3,120,249,129, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,250,129, 3, -196, 0, 0, 0, 1, 0, 0, 0,224,250,129, 3,240,249,129, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,224,250,129, 3,196, 0, 0, 0, 1, 0, 0, 0, 88,251,129, 3,104,250,129, 3, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 88,251,129, 3,196, 0, 0, 0, 1, 0, 0, 0,208,251,129, 3,224,250,129, 3, - 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208,251,129, 3,196, 0, 0, 0, 1, 0, 0, 0, - 72,252,129, 3, 88,251,129, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,252,129, 3, -196, 0, 0, 0, 1, 0, 0, 0,192,252,129, 3,208,251,129, 3, 0, 0, 0, 0, 20, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,192,252,129, 3,196, 0, 0, 0, 1, 0, 0, 0, 56,253,129, 3, 72,252,129, 3, 0, 0, 0, 0,254, 4, 64, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 56,253,129, 3,196, 0, 0, 0, 1, 0, 0, 0,176,253,129, 3,192,252,129, 3, - 0, 0, 0, 0, 20, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,253,129, 3,196, 0, 0, 0, 1, 0, 0, 0, - 40,254,129, 3, 56,253,129, 3, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,254,129, 3, -196, 0, 0, 0, 1, 0, 0, 0,160,254,129, 3,176,253,129, 3, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,160,254,129, 3,196, 0, 0, 0, 1, 0, 0, 0, 24,255,129, 3, 40,254,129, 3, 0, 0, 0, 0, 0, 2, 20, 1, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24,255,129, 3,196, 0, 0, 0, 1, 0, 0, 0,144,255,129, 3,160,254,129, 3, - 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144,255,129, 3,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 24,255,129, 3, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 0, 92, 7, -197, 0, 0, 0, 1, 0, 0, 0, 8, 1, 92, 7, 0, 0, 0, 0,240,249,129, 3,104,250,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 8, 1, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,136, 1, 92, 7,136, 0, 92, 7,240,249,129, 3, - 88,251,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 1, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, - 8, 2, 92, 7, 8, 1, 92, 7,104,250,129, 3,208,251,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 8, 2, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,136, 2, 92, 7,136, 1, 92, 7, 88,251,129, 3,208,251,129, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 2, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 8, 3, 92, 7, 8, 2, 92, 7, -224,250,129, 3,192,252,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 3, 92, 7,197, 0, 0, 0, - 1, 0, 0, 0,136, 3, 92, 7,136, 2, 92, 7, 72,252,129, 3,192,252,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,136, 3, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 8, 4, 92, 7, 8, 3, 92, 7,208,251,129, 3, 56,253,129, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 4, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,136, 4, 92, 7, -136, 3, 92, 7, 88,251,129, 3, 56,253,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 4, 92, 7, -197, 0, 0, 0, 1, 0, 0, 0, 8, 5, 92, 7, 8, 4, 92, 7, 72,252,129, 3, 56,253,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 8, 5, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,136, 5, 92, 7,136, 4, 92, 7,208,251,129, 3, -192,252,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 5, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, - 8, 6, 92, 7, 8, 5, 92, 7, 88,251,129, 3,176,253,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 8, 6, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,136, 6, 92, 7,136, 5, 92, 7, 56,253,129, 3, 40,254,129, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 6, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 8, 7, 92, 7, 8, 6, 92, 7, -176,253,129, 3, 40,254,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 7, 92, 7,197, 0, 0, 0, - 1, 0, 0, 0,136, 7, 92, 7,136, 6, 92, 7,176,253,129, 3,160,254,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,136, 7, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 8, 8, 92, 7, 8, 7, 92, 7, 40,254,129, 3,160,254,129, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 8, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,136, 8, 92, 7, -136, 7, 92, 7,120,249,129, 3, 24,255,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 8, 92, 7, -197, 0, 0, 0, 1, 0, 0, 0, 8, 9, 92, 7, 8, 8, 92, 7, 24,255,129, 3,144,255,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 8, 9, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,136, 9, 92, 7,136, 8, 92, 7,224,250,129, 3, -144,255,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 9, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, - 8, 10, 92, 7, 8, 9, 92, 7, 72,252,129, 3,144,255,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 8, 10, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,136, 10, 92, 7,136, 9, 92, 7,160,254,129, 3, 24,255,129, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 10, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 8, 11, 92, 7, 8, 10, 92, 7, - 40,254,129, 3,144,255,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 11, 92, 7,197, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,136, 10, 92, 7,120,249,129, 3,176,253,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,136, 11, 92, 7,199, 0, 0, 0, 1, 0, 0, 0, 16, 15, 92, 7, 0, 0, 0, 0, 88,251,129, 3,240,249,129, 3, -104,250,129, 3,208,251,129, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, - 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,128, 80, 92, 7,128, 80, 92, 7, 80, 12, 92, 7,176, 13, 92, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 12, 92, 7,200, 0, 0, 0, - 1, 0, 0, 0,176, 13, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, - 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, -188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,176, 13, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80, 12, 92, 7, 0, 0, 0, 0, 0,240,109, 69, + 83, 78, 0, 0,208, 0, 0, 0, 40,225, 57, 4, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,120, 12, 66, 4, 0, 0, 0, 0, + 72,116, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,109,112,111,115, +105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 67, 10, 3, 0, 0, 0, 0,136,231, 57, 4, 0, 0, 0, 0,248,231, 57, 4, 0, 0, 0, 0,152, 39, 62, 4, 0, 0, 0, 0, + 8, 40, 62, 4, 0, 0, 0, 0,168, 6, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248, 67, 10, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 72,226, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 72,226, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,184,226, 57, 4, 0, 0, 0, 0, +248, 67, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +184,226, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 40,227, 57, 4, 0, 0, 0, 0, 72,226, 57, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 40,227, 57, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,152,227, 57, 4, 0, 0, 0, 0,184,226, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,152,227, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 8,228, 57, 4, 0, 0, 0, 0, 40,227, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 8,228, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,120,228, 57, 4, 0, 0, 0, 0, +152,227, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +120,228, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,232,228, 57, 4, 0, 0, 0, 0, 8,228, 57, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232,228, 57, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 88,229, 57, 4, 0, 0, 0, 0,120,228, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88,229, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +200,229, 57, 4, 0, 0, 0, 0,232,228, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,200,229, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 56,230, 57, 4, 0, 0, 0, 0, + 88,229, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 56,230, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,168,230, 57, 4, 0, 0, 0, 0,200,229, 57, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168,230, 57, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 24,231, 57, 4, 0, 0, 0, 0, 56,230, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24,231, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +136,231, 57, 4, 0, 0, 0, 0,168,230, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,136,231, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24,231, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +248,231, 57, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104,232, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72,226, 57, 4, 0, 0, 0, 0,184,226, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +104,232, 57, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,232, 57, 4, 0, 0, 0, 0,248,231, 57, 4, 0, 0, 0, 0, + 72,226, 57, 4, 0, 0, 0, 0,152,227, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +216,232, 57, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,233, 57, 4, 0, 0, 0, 0,104,232, 57, 4, 0, 0, 0, 0, +184,226, 57, 4, 0, 0, 0, 0, 8,228, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 72,233, 57, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,233, 57, 4, 0, 0, 0, 0,216,232, 57, 4, 0, 0, 0, 0, +152,227, 57, 4, 0, 0, 0, 0, 8,228, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +184,233, 57, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40,234, 57, 4, 0, 0, 0, 0, 72,233, 57, 4, 0, 0, 0, 0, + 40,227, 57, 4, 0, 0, 0, 0,232,228, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 40,234, 57, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152,234, 57, 4, 0, 0, 0, 0,184,233, 57, 4, 0, 0, 0, 0, +120,228, 57, 4, 0, 0, 0, 0,232,228, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +152,234, 57, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40,229, 35, 4, 0, 0, 0, 0, 40,234, 57, 4, 0, 0, 0, 0, + 8,228, 57, 4, 0, 0, 0, 0, 88,229, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 40,229, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,232, 33, 62, 4, 0, 0, 0, 0,152,234, 57, 4, 0, 0, 0, 0, +152,227, 57, 4, 0, 0, 0, 0, 88,229, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +232, 33, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88, 34, 62, 4, 0, 0, 0, 0, 40,229, 35, 4, 0, 0, 0, 0, +120,228, 57, 4, 0, 0, 0, 0, 88,229, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 88, 34, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200, 34, 62, 4, 0, 0, 0, 0,232, 33, 62, 4, 0, 0, 0, 0, + 8,228, 57, 4, 0, 0, 0, 0,232,228, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +200, 34, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56, 35, 62, 4, 0, 0, 0, 0, 88, 34, 62, 4, 0, 0, 0, 0, +152,227, 57, 4, 0, 0, 0, 0,200,229, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 56, 35, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168, 35, 62, 4, 0, 0, 0, 0,200, 34, 62, 4, 0, 0, 0, 0, + 88,229, 57, 4, 0, 0, 0, 0, 56,230, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +168, 35, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24, 36, 62, 4, 0, 0, 0, 0, 56, 35, 62, 4, 0, 0, 0, 0, +200,229, 57, 4, 0, 0, 0, 0, 56,230, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 24, 36, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136, 36, 62, 4, 0, 0, 0, 0,168, 35, 62, 4, 0, 0, 0, 0, +200,229, 57, 4, 0, 0, 0, 0,168,230, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +136, 36, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248, 36, 62, 4, 0, 0, 0, 0, 24, 36, 62, 4, 0, 0, 0, 0, + 56,230, 57, 4, 0, 0, 0, 0,168,230, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +248, 36, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104, 37, 62, 4, 0, 0, 0, 0,136, 36, 62, 4, 0, 0, 0, 0, +248, 67, 10, 3, 0, 0, 0, 0, 24,231, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +104, 37, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216, 37, 62, 4, 0, 0, 0, 0,248, 36, 62, 4, 0, 0, 0, 0, + 24,231, 57, 4, 0, 0, 0, 0,136,231, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +216, 37, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72, 38, 62, 4, 0, 0, 0, 0,104, 37, 62, 4, 0, 0, 0, 0, + 40,227, 57, 4, 0, 0, 0, 0,136,231, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 72, 38, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184, 38, 62, 4, 0, 0, 0, 0,216, 37, 62, 4, 0, 0, 0, 0, +120,228, 57, 4, 0, 0, 0, 0,136,231, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +184, 38, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40, 39, 62, 4, 0, 0, 0, 0, 72, 38, 62, 4, 0, 0, 0, 0, +168,230, 57, 4, 0, 0, 0, 0, 24,231, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 40, 39, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152, 39, 62, 4, 0, 0, 0, 0,184, 38, 62, 4, 0, 0, 0, 0, + 56,230, 57, 4, 0, 0, 0, 0,136,231, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +152, 39, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 39, 62, 4, 0, 0, 0, 0, +248, 67, 10, 3, 0, 0, 0, 0,200,229, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 8, 40, 62, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,216, 43, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152,227, 57, 4, 0, 0, 0, 0, 72,226, 57, 4, 0, 0, 0, 0,184,226, 57, 4, 0, 0, 0, 0, 8,228, 57, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 11, 66, 4, 0, 0, 0, 0,232, 11, 66, 4, 0, 0, 0, 0, +248, 40, 62, 4, 0, 0, 0, 0,104, 42, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248, 40, 62, 4, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,104, 42, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 42, 62, 4, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 40, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16, 15, 92, 7,199, 0, 0, 0, 1, 0, 0, 0,184, 19, 92, 7, -136, 11, 92, 7,144,255,129, 3, 72,252,129, 3,192,252,129, 3,224,250,129, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,234, 0, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,152, 18, 92, 7, -152, 18, 92, 7,216, 15, 92, 7, 56, 17, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,216, 15, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 56, 17, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,116, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0,128,190, 67, 0,192, 25, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,216, 43, 62, 4, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0,200, 48, 62, 4, 0, 0, 0, 0, 8, 40, 62, 4, 0, 0, 0, 0,136,231, 57, 4, 0, 0, 0, 0, +120,228, 57, 4, 0, 0, 0, 0,232,228, 57, 4, 0, 0, 0, 0, 40,227, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,234, 0, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0,168, 47, 62, 4, 0, 0, 0, 0,168, 47, 62, 4, 0, 0, 0, 0,200, 44, 62, 4, 0, 0, 0, 0, + 56, 46, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200, 44, 62, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 56, 46, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,116, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0,128,190, 67, 0,192, 25, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,234, 0, 26, 0,234, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +234, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56, 46, 62, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,200, 44, 62, 4, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, + 50, 51, 74,193,154,209,131, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, + 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, + 4, 0, 0, 4, 8, 0,234, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +234, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,168, 47, 62, 4, 0, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +200, 48, 62, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,216, 53, 62, 4, 0, 0, 0, 0,216, 43, 62, 4, 0, 0, 0, 0, +120,228, 57, 4, 0, 0, 0, 0, 88,229, 57, 4, 0, 0, 0, 0, 8,228, 57, 4, 0, 0, 0, 0,232,228, 57, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,186, 2, 0, 0, 4, 4,234, 0,122, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 52, 62, 4, 0, 0, 0, 0,152, 52, 62, 4, 0, 0, 0, 0, +184, 49, 62, 4, 0, 0, 0, 0, 40, 51, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,184, 49, 62, 4, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 40, 51, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 26, 0,234, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,234, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56, 17, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -216, 15, 92, 7, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, 0, 0, 0, 0, - 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, - 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,234, 0, 38, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0,152, 18, 92, 7, -176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0,156, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 40, 51, 62, 4, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 49, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105, 67, + 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 88, 67, 0,192, 22,196, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, + 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, + 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0, 91, 2,217, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,155, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,184, 19, 92, 7,199, 0, 0, 0, 1, 0, 0, 0,128, 24, 92, 7, 16, 15, 92, 7, - 72,252,129, 3, 56,253,129, 3,208,251,129, 3,192,252,129, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, -186, 2, 0, 0, 4, 4,234, 0,122, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 23, 92, 7, 64, 23, 92, 7, -128, 20, 92, 7,224, 21, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -128, 20, 92, 7,200, 0, 0, 0, 1, 0, 0, 0,224, 21, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, - 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 4, 0, 0,254, 4, 0, 0,156, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224, 21, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 20, 92, 7, - 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 88, 67, 0,192, 22,196, 0, 0, 0, 0, -217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0, 91, 2,217, 0, 91, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,155, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 64, 23, 92, 7,165, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152, 52, 62, 4, 0, 0, 0, 0, +165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,128, 24, 92, 7,199, 0, 0, 0, 1, 0, 0, 0, 56, 37, 92, 7,184, 19, 92, 7, 24,255,129, 3,160,254,129, 3, - 40,254,129, 3,144,255,129, 3, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 1, 1, 19, 2, - 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 35, 92, 7,216, 35, 92, 7, 72, 25, 92, 7,200, 30, 92, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72, 25, 92, 7,200, 0, 0, 0, - 1, 0, 0, 0,168, 26, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0,192, 4, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, - 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0, 19, 2, 26, 0, 19, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,168, 26, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 8, 28, 92, 7, 72, 25, 92, 7, 0, 0, 0, 0, 0, 0, 15, 67, - 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0,250, 0, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,216, 53, 62, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104, 1, 66, 4, 0, 0, 0, 0, +200, 48, 62, 4, 0, 0, 0, 0, 24,231, 57, 4, 0, 0, 0, 0,168,230, 57, 4, 0, 0, 0, 0, 56,230, 57, 4, 0, 0, 0, 0, +136,231, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, + 1, 1, 19, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,255, 65, 4, 0, 0, 0, 0, +232,255, 65, 4, 0, 0, 0, 0,200, 54, 62, 4, 0, 0, 0, 0,136, 60, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +200, 54, 62, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56, 56, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 4, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8, 28, 92, 7,200, 0, 0, 0, 1, 0, 0, 0,104, 29, 92, 7, -168, 26, 92, 7, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, - 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, + 0, 0, 0, 0, 18, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 19, 2, 26, 0, 19, 2, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 56, 56, 62, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,168, 57, 62, 4, 0, 0, 0, 0,200, 54, 62, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,250, 0, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +168, 57, 62, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 24, 59, 62, 4, 0, 0, 0, 0, 56, 56, 62, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104, 29, 92, 7, -200, 0, 0, 0, 1, 0, 0, 0,200, 30, 92, 7, 8, 28, 92, 7, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,184,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,180, 0,130, 1,163, 0,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, - 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,200, 30, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104, 29, 92, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 24, 59, 62, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,136, 60, 62, 4, 0, 0, 0, 0,168, 57, 62, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,184,195, 0, 0, 0, 0, +163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,130, 1,163, 0,112, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +136, 60, 62, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 59, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 19, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 40, 32, 92, 7, 68, 65, 84, 65, 72, 3, 0, 0, 40, 32, 92, 7,159, 0, 0, 0, 1, 0, 0, 0, - 37,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249,173,116, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0, -221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0, -191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, -223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0, - 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, - 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, - 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, - 80, 25,195, 62,218,249,206, 62, 0,237,196,187, 0, 0, 96,179,234, 2,170,189,191, 98,167, 61, 1,208,111, 62, 0, 0,224, 49, -254,120, 21,194,182, 5, 2, 66, 70,136,213,193,239,214,159,192, 5, 39, 19, 66, 15,174,255,193,217,101,210, 65,219, 40,160, 64, -221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0, -191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, - 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, - 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, -223, 34, 9, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,252, 65, 4, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, + 56,252, 65, 4, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 37,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,249,173,116, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, + 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, + 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, + 87,126,162,190,228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0, +110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191, +170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190, +222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, 80, 25,195, 62,218,249,206, 62, 0,237,196,187, 0, 0, 96,179, +234, 2,170,189,191, 98,167, 61, 1,208,111, 62, 0, 0,224, 49,254,120, 21,194,182, 5, 2, 66, 70,136,213,193,239,214,159,192, + 5, 39, 19, 66, 15,174,255,193,217,101,210, 65,219, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, + 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, + 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191, +170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190, +222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190, +214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,223, 34, 9, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2668,80 +775,97 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216, 35, 92, 7,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 7, 0,144,110,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 56, 37, 92, 7, -199, 0, 0, 0, 1, 0, 0, 0, 24, 42, 92, 7,128, 24, 92, 7,176,253,129, 3, 88,251,129, 3, 56,253,129, 3, 40,254,129, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 16, 16, 20, 4,166, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,192, 40, 92, 7,192, 40, 92, 7, 0, 38, 92, 7, 96, 39, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0, 38, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 96, 39, 92, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, + 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, +232,255, 65, 4, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0,104,233,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,104, 1, 66, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,168, 6, 66, 4, 0, 0, 0, 0, +216, 53, 62, 4, 0, 0, 0, 0,200,229, 57, 4, 0, 0, 0, 0,152,227, 57, 4, 0, 0, 0, 0, 88,229, 57, 4, 0, 0, 0, 0, + 56,230, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, + 16, 16, 20, 4,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 5, 66, 4, 0, 0, 0, 0, + 56, 5, 66, 4, 0, 0, 0, 0, 88, 2, 66, 4, 0, 0, 0, 0,200, 3, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 88, 2, 66, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,200, 3, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96, 39, 92, 7, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 38, 92, 7, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, -110,142,241,195, 55,199,120, 68,240, 80,128,193,136, 2, 4, 68, 3, 4, 0, 0, 20, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, - 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,236, 81,184, 61, 10,215, 19, 64, 10, 0, 0, 0, 0, 0, 3, 0, - 0, 0, 0, 4, 0, 0, 20, 4,140, 1, 3, 4,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,140, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +200, 3, 66, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 2, 66, 4, 0, 0, 0, 0, + 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,110,142,241,195, 55,199,120, 68,240, 80,128,193,136, 2, 4, 68, + 3, 4, 0, 0, 20, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 2, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, +236, 81,184, 61, 10,215, 19, 64, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 20, 4,140, 1, 3, 4,122, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,244, 0, 0, 0,192, 40, 92, 7,177, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, + 56, 5, 66, 4, 0, 0, 0, 0,177, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 6, 61,181, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 24, 42, 92, 7,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 56, 37, 92, 7,120,249,129, 3,176,253,129, 3,160,254,129, 3, 24,255,129, 3, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, - 0, 0, 0, 0, 19, 1, 0, 0, 6, 6, 0, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 92, 7, - 0, 47, 92, 7,224, 42, 92, 7,160, 45, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,224, 42, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 64, 44, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 2, 26, 0, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 61,181, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64, 44, 92, 7,200, 0, 0, 0, 1, 0, 0, 0,160, 45, 92, 7, -224, 42, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,168, 6, 66, 4, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 1, 66, 4, 0, 0, 0, 0,248, 67, 10, 3, 0, 0, 0, 0, +200,229, 57, 4, 0, 0, 0, 0,168,230, 57, 4, 0, 0, 0, 0, 24,231, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 6, 6, 0, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,232, 32,127, 4, 0, 0, 0, 0,232, 32,127, 4, 0, 0, 0, 0,152, 7, 66, 4, 0, 0, 0, 0, +120, 10, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152, 7, 66, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 8, 9, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0, 0, 2, 26, 0, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8, 9, 66, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +120, 10, 66, 4, 0, 0, 0, 0,152, 7, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160, 45, 92, 7, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 44, 92, 7, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120, 10, 66, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0,191, 0, 0,192, 63, 0, 0, 64, 60, 0, 0,125, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 1, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,250, 0, + 0, 0, 0, 0,255, 1, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 33, 0, 0, 0, 47, 92, 7,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 33, 0, 0,232, 32,127, 4, 0, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0, -100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, + 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2870,8 +994,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3000,242 +1124,286 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, 24, 81, 92, 7,195, 0, 0, 0, 1, 0, 0, 0, - 48,100, 92, 7,136,248,129, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 82, 92, 7, 48, 87, 92, 7,168, 87, 92, 7, - 40, 96, 92, 7,168, 96, 92, 7,128,182, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,105,101,170, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8, 82, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, -128, 82, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128, 82, 92, 7, -196, 0, 0, 0, 1, 0, 0, 0,248, 82, 92, 7, 8, 82, 92, 7, 0, 0, 0, 0, 0, 0,202, 3, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,248, 82, 92, 7,196, 0, 0, 0, 1, 0, 0, 0,112, 83, 92, 7,128, 82, 92, 7, 0, 0, 0, 0,136, 6,202, 3, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,112, 83, 92, 7,196, 0, 0, 0, 1, 0, 0, 0,232, 83, 92, 7,248, 82, 92, 7, - 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232, 83, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, - 96, 84, 92, 7,112, 83, 92, 7, 0, 0, 0, 0, 0, 0,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96, 84, 92, 7, -196, 0, 0, 0, 1, 0, 0, 0,216, 84, 92, 7,232, 83, 92, 7, 0, 0, 0, 0,136, 6,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,216, 84, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, 80, 85, 92, 7, 96, 84, 92, 7, 0, 0, 0, 0,112, 5, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 80, 85, 92, 7,196, 0, 0, 0, 1, 0, 0, 0,200, 85, 92, 7,216, 84, 92, 7, - 0, 0, 0, 0,112, 5,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200, 85, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, - 64, 86, 92, 7, 80, 85, 92, 7, 0, 0, 0, 0,112, 5, 0, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64, 86, 92, 7, -196, 0, 0, 0, 1, 0, 0, 0,184, 86, 92, 7,200, 85, 92, 7, 0, 0, 0, 0,136, 6, 0, 3, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,184, 86, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, 48, 87, 92, 7, 64, 86, 92, 7, 0, 0, 0, 0, 0, 0, 84, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 48, 87, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,184, 86, 92, 7, - 0, 0, 0, 0,112, 5, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 87, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, - 40, 88, 92, 7, 0, 0, 0, 0,128, 82, 92, 7,248, 82, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 40, 88, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 88, 92, 7,168, 87, 92, 7,128, 82, 92, 7,232, 83, 92, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 88, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 40, 89, 92, 7, 40, 88, 92, 7, -248, 82, 92, 7, 96, 84, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 89, 92, 7,197, 0, 0, 0, - 1, 0, 0, 0,168, 89, 92, 7,168, 88, 92, 7,232, 83, 92, 7, 96, 84, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,168, 89, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 40, 90, 92, 7, 40, 89, 92, 7, 8, 82, 92, 7,216, 84, 92, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 90, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 90, 92, 7, -168, 89, 92, 7,112, 83, 92, 7,216, 84, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 90, 92, 7, -197, 0, 0, 0, 1, 0, 0, 0, 40, 91, 92, 7, 40, 90, 92, 7,232, 83, 92, 7, 80, 85, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 40, 91, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 91, 92, 7,168, 90, 92, 7, 96, 84, 92, 7, - 80, 85, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 91, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, - 40, 92, 92, 7, 40, 91, 92, 7,216, 84, 92, 7,200, 85, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 40, 92, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 92, 92, 7,168, 91, 92, 7, 80, 85, 92, 7,200, 85, 92, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 92, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 40, 93, 92, 7, 40, 92, 92, 7, - 96, 84, 92, 7, 64, 86, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 93, 92, 7,197, 0, 0, 0, - 1, 0, 0, 0,168, 93, 92, 7,168, 92, 92, 7,112, 83, 92, 7, 64, 86, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,168, 93, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 40, 94, 92, 7, 40, 93, 92, 7,200, 85, 92, 7, 64, 86, 92, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 94, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 94, 92, 7, -168, 93, 92, 7, 8, 82, 92, 7,184, 86, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 94, 92, 7, -197, 0, 0, 0, 1, 0, 0, 0, 40, 95, 92, 7, 40, 94, 92, 7,232, 83, 92, 7,184, 86, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 40, 95, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 95, 92, 7,168, 94, 92, 7, 80, 85, 92, 7, - 48, 87, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 95, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, - 40, 96, 92, 7, 40, 95, 92, 7,216, 84, 92, 7, 48, 87, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 40, 96, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,168, 95, 92, 7,184, 86, 92, 7, 48, 87, 92, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,168, 96, 92, 7,199, 0, 0, 0, 1, 0, 0, 0, 80,106, 92, 7, 0, 0, 0, 0, -232, 83, 92, 7,128, 82, 92, 7,248, 82, 92, 7, 96, 84, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,176, 3, 0, 0, -202, 3, 0, 0, 7, 7,137, 6, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 8, 0, 24,187,238, 2,224,222, 92, 7,224,222, 92, 7, -112, 97, 92, 7,208, 98, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0,120,157, 76, 3,152,158, 76, 3, 68, 65, 84, 65,248, 0, 0, 0, -112, 97, 92, 7,200, 0, 0, 0, 1, 0, 0, 0,208, 98, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,147, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,136, 6, 0, 0,176, 3, 0, 0,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -137, 6, 26, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200,188,238, 2, 56,254,255, 2, 56,254,255, 2, 0, 0, 0, 0, 0, 0, 0, 0,168,159, 76, 3,184,161, 76, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208, 98, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,112, 97, 92, 7, - 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, -112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 3, 0, 0,202, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,188,238, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 80,106, 92, 7,199, 0, 0, 0, - 1, 0, 0, 0,224,171, 92, 7,168, 96, 92, 7,216, 84, 92, 7,200, 85, 92, 7, 64, 86, 92, 7,112, 83, 92, 7, 0, 0, 0, 0, -113, 5, 0, 0,136, 6, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 4, 4, 24, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, - 80,183,238, 2,128,164, 92, 7, 64,171, 92, 7, 24,107, 92, 7,120,108, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0,104,162, 76, 3, -136,163, 76, 3, 68, 65, 84, 65,248, 0, 0, 0, 24,107, 92, 7,200, 0, 0, 0, 1, 0, 0, 0,120,108, 92, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,160, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,140, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 1, 31, 0, 24, 1, 31, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,113, 5, 0, 0,136, 6, 0, 0,225, 2, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 1, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,186,238, 2, 88,211,255, 2, 88,211,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, -152,164, 76, 3,168,166, 76, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,108, 92, 7,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 24,107, 92, 7, 0, 0, 0, 0, 0, 0,140, 67, 0,128, 86,196, 0, 0, 0, 0, 0, 0, 0, 0, - 1,128,131, 67, 1, 64, 56,196, 0, 0, 0, 0, 7, 1, 0, 0, 24, 1, 0, 0, 0, 0, 0, 0,224, 2, 0, 0, 0, 0, 0, 0, - 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0,224, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, - 6, 0, 24, 1,225, 2, 7, 1,225, 2, 0, 0,168, 73, 67, 3, 1, 0, 0, 0, 0, 0, 0, 0,113, 5, 0, 0,136, 6, 0, 0, - 0, 0, 0, 0,224, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 1,225, 2, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,184,238, 2,112,194, 7, 3, - 56,253, 7, 3,216,109, 92, 7,216,162, 92, 7,216,167, 76, 3,232,169, 76, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,216,109, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,128,111, 92, 7, 0, 0, 0, 0, 0,185,238, 2, 0, 0, 0, 0, - 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,220,255, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,128,111, 92, 7,198, 0, 0, 0, - 1, 0, 0, 0, 40,113, 92, 7,216,109, 92, 7,120,138,253, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, -110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, -110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 7, 1, 61, 0, 0, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 40,113, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,208,114, 92, 7,128,111, 92, 7, -144,140,253, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 23, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -208,114, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,120,116, 92, 7, 40,113, 92, 7,168,142,253, 2, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101, -110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254, - 7, 1,203, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,120,116, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, - 32,118, 92, 7,208,114, 92, 7,192,144,253, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108, -105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108, -105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254, 7, 1, 58, 0, 20, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0, 32,118, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,200,119, 92, 7,120,116, 92, 7,216,146,253, 2, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 70,117,108,108, 32, 83, 97,109,112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 34,254, 7, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,200,119, 92, 7, -198, 0, 0, 0, 1, 0, 0, 0,112,121, 92, 7, 32,118, 92, 7,240,148,253, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,120, 12, 66, 4, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +184,228,127, 4, 0, 0, 0, 0, 40,225, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,152, 13, 66, 4, 0, 0, 0, 0,104, 18, 66, 4, 0, 0, 0, 0,216, 18, 66, 4, 0, 0, 0, 0, + 72, 26, 66, 4, 0, 0, 0, 0,184, 26, 66, 4, 0, 0, 0, 0,136,137,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,190,177, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,152, 13, 66, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 8, 14, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8, 14, 66, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +120, 14, 66, 4, 0, 0, 0, 0,152, 13, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 4, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,120, 14, 66, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,232, 14, 66, 4, 0, 0, 0, 0, + 8, 14, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 97, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +232, 14, 66, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 88, 15, 66, 4, 0, 0, 0, 0,120, 14, 66, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88, 15, 66, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,200, 15, 66, 4, 0, 0, 0, 0,232, 14, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 70, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200, 15, 66, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 56, 16, 66, 4, 0, 0, 0, 0, 88, 15, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 70, 4, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 56, 16, 66, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,168, 16, 66, 4, 0, 0, 0, 0, +200, 15, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +168, 16, 66, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24, 17, 66, 4, 0, 0, 0, 0, 56, 16, 66, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 70, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24, 17, 66, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,136, 17, 66, 4, 0, 0, 0, 0,168, 16, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 6,124, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136, 17, 66, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +248, 17, 66, 4, 0, 0, 0, 0, 24, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7,124, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,248, 17, 66, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,104, 18, 66, 4, 0, 0, 0, 0, +136, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +104, 18, 66, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 17, 66, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 92, 0, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216, 18, 66, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 72, 19, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 14, 66, 4, 0, 0, 0, 0, +120, 14, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72, 19, 66, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,184, 19, 66, 4, 0, 0, 0, 0,216, 18, 66, 4, 0, 0, 0, 0, 8, 14, 66, 4, 0, 0, 0, 0, + 88, 15, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184, 19, 66, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 40, 20, 66, 4, 0, 0, 0, 0, 72, 19, 66, 4, 0, 0, 0, 0,120, 14, 66, 4, 0, 0, 0, 0, +200, 15, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40, 20, 66, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,152, 20, 66, 4, 0, 0, 0, 0,184, 19, 66, 4, 0, 0, 0, 0, 88, 15, 66, 4, 0, 0, 0, 0, +200, 15, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152, 20, 66, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 8, 21, 66, 4, 0, 0, 0, 0, 40, 20, 66, 4, 0, 0, 0, 0,152, 13, 66, 4, 0, 0, 0, 0, + 56, 16, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8, 21, 66, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,120, 21, 66, 4, 0, 0, 0, 0,152, 20, 66, 4, 0, 0, 0, 0,232, 14, 66, 4, 0, 0, 0, 0, + 56, 16, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120, 21, 66, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,232, 21, 66, 4, 0, 0, 0, 0, 8, 21, 66, 4, 0, 0, 0, 0, 88, 15, 66, 4, 0, 0, 0, 0, +168, 16, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232, 21, 66, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 88, 22, 66, 4, 0, 0, 0, 0,120, 21, 66, 4, 0, 0, 0, 0,200, 15, 66, 4, 0, 0, 0, 0, +168, 16, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88, 22, 66, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,200, 22, 66, 4, 0, 0, 0, 0,232, 21, 66, 4, 0, 0, 0, 0, 56, 16, 66, 4, 0, 0, 0, 0, + 24, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200, 22, 66, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 56, 23, 66, 4, 0, 0, 0, 0, 88, 22, 66, 4, 0, 0, 0, 0,168, 16, 66, 4, 0, 0, 0, 0, + 24, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56, 23, 66, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,168, 23, 66, 4, 0, 0, 0, 0,200, 22, 66, 4, 0, 0, 0, 0,200, 15, 66, 4, 0, 0, 0, 0, +136, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168, 23, 66, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 24, 24, 66, 4, 0, 0, 0, 0, 56, 23, 66, 4, 0, 0, 0, 0,232, 14, 66, 4, 0, 0, 0, 0, +136, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24, 24, 66, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,136, 24, 66, 4, 0, 0, 0, 0,168, 23, 66, 4, 0, 0, 0, 0, 24, 17, 66, 4, 0, 0, 0, 0, +136, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136, 24, 66, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,248, 24, 66, 4, 0, 0, 0, 0, 24, 24, 66, 4, 0, 0, 0, 0,152, 13, 66, 4, 0, 0, 0, 0, +248, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248, 24, 66, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,104, 25, 66, 4, 0, 0, 0, 0,136, 24, 66, 4, 0, 0, 0, 0, 88, 15, 66, 4, 0, 0, 0, 0, +248, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104, 25, 66, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,216, 25, 66, 4, 0, 0, 0, 0,248, 24, 66, 4, 0, 0, 0, 0,168, 16, 66, 4, 0, 0, 0, 0, +104, 18, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216, 25, 66, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 72, 26, 66, 4, 0, 0, 0, 0,104, 25, 66, 4, 0, 0, 0, 0, 56, 16, 66, 4, 0, 0, 0, 0, +104, 18, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72, 26, 66, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 25, 66, 4, 0, 0, 0, 0,248, 17, 66, 4, 0, 0, 0, 0, +104, 18, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184, 26, 66, 4, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0,136, 30, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 15, 66, 4, 0, 0, 0, 0, + 8, 14, 66, 4, 0, 0, 0, 0,120, 14, 66, 4, 0, 0, 0, 0,200, 15, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,118, 7, 0, 0, 71, 4, 0, 0, 97, 4, 0, 0, 7, 7,119, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 8, 0, +152,130,240, 2, 0, 0, 0, 0, 40,228,127, 4, 0, 0, 0, 0, 40,228,127, 4, 0, 0, 0, 0,168, 27, 66, 4, 0, 0, 0, 0, + 24, 29, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 51, 5, 88,159,127, 0, 0, +168, 52, 5, 88,159,127, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168, 27, 66, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 24, 29, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,148, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0,224,238, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,119, 7, 26, 0,119, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,118, 7, 0, 0, 71, 4, 0, 0, 96, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +119, 7, 26, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +168,132,240, 2, 0, 0, 0, 0,248,233, 9, 3, 0, 0, 0, 0,248,233, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,152, 53, 5, 88,159,127, 0, 0, 8, 56, 5, 88,159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24, 29, 66, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,168, 27, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 97, 4, 0, 0, 97, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +184,131,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,136, 30, 66, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, + 40,126,127, 4, 0, 0, 0, 0,184, 26, 66, 4, 0, 0, 0, 0, 56, 16, 66, 4, 0, 0, 0, 0, 24, 17, 66, 4, 0, 0, 0, 0, +136, 17, 66, 4, 0, 0, 0, 0,232, 14, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, + 0, 0, 0, 0,123, 3, 0, 0, 4, 4, 70, 1,124, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 56,126,240, 2, 0, 0, 0, 0, +120,118,127, 4, 0, 0, 0, 0,120,125,127, 4, 0, 0, 0, 0,120, 31, 66, 4, 0, 0, 0, 0,232, 32, 66, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 56, 5, 88,159,127, 0, 0,216, 57, 5, 88,159,127, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,120, 31, 66, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,232, 32, 66, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,163, 67, + 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, + 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 70, 1, + 31, 0, 70, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, + 93, 3, 0, 0,123, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 31, 0, 3, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,129,240, 2, 0, 0, 0, 0, +152,246, 9, 3, 0, 0, 0, 0,152,246, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +200, 58, 5, 88,159,127, 0, 0, 56, 61, 5, 88,159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,232, 32, 66, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +120, 31, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,163, 67, 0, 64, 87,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,154, 67, + 0, 64, 87,196, 0, 0, 0, 0, 53, 1, 0, 0, 70, 1, 0, 0, 0, 0, 0, 0, 92, 3, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 52, 1, 0, 0, 0, 0, 0, 0, 92, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 70, 1, + 93, 3, 53, 1, 93, 3, 0, 0, 88,239, 57, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, + 0, 0, 0, 0, 92, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 93, 3, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,127,240, 2, 0, 0, 0, 0, + 88, 82, 53, 4, 0, 0, 0, 0,104,210, 9, 3, 0, 0, 0, 0, 88, 34, 66, 4, 0, 0, 0, 0,216,116,127, 4, 0, 0, 0, 0, +120, 62, 5, 88,159,127, 0, 0,232, 64, 5, 88,159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 88, 34, 66, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,120, 66,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 72,128,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, + 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, + 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255, 53, 1, 36, 0, + 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120, 66,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0, 24, 68,127, 4, 0, 0, 0, 0, 88, 34, 66, 4, 0, 0, 0, 0,200,240, 69, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 53, 1, 61, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 22, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 24, 68,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,184, 69,127, 4, 0, 0, 0, 0, +120, 66,127, 4, 0, 0, 0, 0, 56,246, 69, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 53, 1, 0, 0, + 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184, 69,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0, 88, 71,127, 4, 0, 0, 0, 0, 24, 68,127, 4, 0, 0, 0, 0,152,248, 69, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254, 53, 1,203, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 88, 71,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,248, 72,127, 4, 0, 0, 0, 0, +184, 69,127, 4, 0, 0, 0, 0, 8,254, 69, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, + 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254, 53, 1, 58, 0, + 20, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248, 72,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0,152, 74,127, 4, 0, 0, 0, 0, 88, 71,127, 4, 0, 0, 0, 0,104, 0, 70, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 70,117,108,108, 32, 83, 97,109,112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254, 53, 1, 0, 0, 20, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,152, 74,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 56, 76,127, 4, 0, 0, 0, 0, +248, 72,127, 4, 0, 0, 0, 0,200,199, 55, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,253, 7, 1,102, 0, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,253, 53, 1,102, 0, + 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,112,121, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 24,123, 92, 7, -200,119, 92, 7, 8,151,253, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56, 76,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0,216, 77,127, 4, 0, 0, 0, 0,152, 74,127, 4, 0, 0, 0, 0,232, 12, 70, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,253, 7, 1,130, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 24,123, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,192,124, 92, 7,112,121, 92, 7, 56,155,253, 2, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,242,252, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,253, 53, 1,130, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,192,124, 92, 7,198, 0, 0, 0, - 1, 0, 0, 0,104,126, 92, 7, 24,123, 92, 7, 80,157,253, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111, -115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111, -115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115, -105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218,252, 7, 1, 0, 0, 0, 0, 0, 0, - 4, 0, 6, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,216, 77,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,120, 79,127, 4, 0, 0, 0, 0, + 56, 76,127, 4, 0, 0, 0, 0, 24,156, 55, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97, +110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,252, 53, 1, 0, 0, + 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,104,126, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 16,128, 92, 7,192,124, 92, 7, -104,159,253, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120, 79,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0, 24, 81,127, 4, 0, 0, 0, 0,216, 77,127, 4, 0, 0, 0, 0,200, 27, 70, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,252, 7, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218,252, 53, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 16,128, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,184,129, 92, 7,104,126, 92, 7,128,161,253, 2, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,252, - 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 24, 81,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,184, 82,127, 4, 0, 0, 0, 0, +120, 79,127, 4, 0, 0, 0, 0, 40, 30, 70, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,252, 53, 1, 0, 0, + 20, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,184,129, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, - 96,131, 92, 7, 16,128, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101, -120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101, -120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184, 82,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0, 88, 84,127, 4, 0, 0, 0, 0, 24, 81,127, 4, 0, 0, 0, 0, 40,214, 55, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,252, 53, 1, 0, 0, 0, 0, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41,255, 7, 1,179, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 88, 84,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,248, 85,127, 4, 0, 0, 0, 0, +184, 82,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95, 99,111,110,116,101,120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95, 99,111,110,116,101,120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0, 96,131, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 8,133, 92, 7,184,129, 92, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41,255, 7, 1,179, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248, 85,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0,152, 87,127, 4, 0, 0, 0, 0, 88, 84,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 77, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,102,254, 7, 1,171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102,254, 7, 1,171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 8,133, 92, 7, -198, 0, 0, 0, 1, 0, 0, 0,176,134, 92, 7, 96,131, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,152, 87,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 56, 89,127, 4, 0, 0, 0, 0, +248, 85,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3245,82 +1413,89 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,176,134, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 88,136, 92, 7, - 8,133, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114, -111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114, -111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,117,115,116,111,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56, 89,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0,216, 90,127, 4, 0, 0, 0, 0,152, 87,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114,111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,253, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114,111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 88,136, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 0,138, 92, 7,176,134, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67,117,115,116,111,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 87,254, 7, 1,186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,253, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 0,138, 92, 7,198, 0, 0, 0, - 1, 0, 0, 0,168,139, 92, 7, 88,136, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105, -109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105, -109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,253, 7, 1, 36, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,216, 90,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,120, 92,127, 4, 0, 0, 0, 0, + 56, 89,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,101,118,105,101,119, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,254, 7, 1,186, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,168,139, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 80,141, 92, 7, 0,138, 92, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 32, 83, 97,109,112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120, 92,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0, 24, 94,127, 4, 0, 0, 0, 0,216, 90,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,252, 7, 1,212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,253, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 80,141, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,248,142, 92, 7,168,139, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103, -101, 32, 77, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, - 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 24, 94,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,184, 95,127, 4, 0, 0, 0, 0, +120, 92,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 32, 83, 97, +109,112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,252, 7, 1,212, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,248,142, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, -160,144, 92, 7, 80,141, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,108,111,114, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,108,111,114, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184, 95,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0, 88, 97,127, 4, 0, 0, 0, 0, 24, 94,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,254, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 32, 77, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,160,144, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 72,146, 92, 7,248,142, 92, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 88, 97,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,248, 98,127, 4, 0, 0, 0, 0, +184, 95,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95, 99,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95, 99,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 67,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,161,253, 7, 1,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,254, 7, 1, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 72,146, 92, 7, -198, 0, 0, 0, 1, 0, 0, 0,240,147, 92, 7,160,144, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248, 98,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0,152,100,127, 4, 0, 0, 0, 0, 88, 97,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161,253, 7, 1,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,152,100,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 56,102,127, 4, 0, 0, 0, 0, +248, 98,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,119,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,119,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3330,82 +1505,89 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,240,147, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,152,149, 92, 7, - 72,146, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56,102,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0,216,103,127, 4, 0, 0, 0, 0,152,100,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,152,149, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 64,151, 92, 7,240,147, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,123,253, 7, 1,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 64,151, 92, 7,198, 0, 0, 0, - 1, 0, 0, 0,232,152, 92, 7,152,149, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112, -111,105,110,116,100,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112, -111,105,110,116,100,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,105,110,116, 32, 68,101,110,115,105,116, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,253, 7, 1,179, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,216,103,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,120,105,127, 4, 0, 0, 0, 0, + 56,102,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,111,114,111,110,111,105, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123,253, 7, 1,196, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,232,152, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,144,154, 92, 7, 64,151, 92, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95, -116,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95, -116,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120,105,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0, 24,107,127, 4, 0, 0, 0, 0,216,103,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,253, 7, 1,102, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,111,105,110,116, 32, 68,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,253, 7, 1,179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -144,154, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 56,156, 92, 7,232,152, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77,117,115,103, -114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139,253, - 7, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 24,107,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,184,108,127, 4, 0, 0, 0, 0, +120,105,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95,116,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95,116,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,117,114, 98,117,108,101,110, + 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,253, 7, 1,102, 0, + 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 56,156, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, -224,157, 92, 7,144,154, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,114, 98,108, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,114, 98,108, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184,108,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0, 88,110,127, 4, 0, 0, 0, 0, 24,107,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,253, 7, 1,183, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 77,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139,253, 7, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,224,157, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,136,159, 92, 7, 56,156, 92, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 88,110,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,248,111,127, 4, 0, 0, 0, 0, +184,108,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,109, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,109, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 77, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,253, 7, 1,183, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,136,159, 92, 7, -198, 0, 0, 0, 1, 0, 0, 0, 48,161, 92, 7,224,157, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248,111,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0,152,113,127, 4, 0, 0, 0, 0, 88,110,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,152,113,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 56,115,127, 4, 0, 0, 0, 0, +248,111,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,100,105,115,116,111,114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,100,105,115,116,111,114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3415,261 +1597,302 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 48,161, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,216,162, 92, 7, -136,159, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56,115,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0,216,116,127, 4, 0, 0, 0, 0,152,113,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,254, 7, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,216,162, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,161, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,183,253, 7, 1,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,254, 7, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,128,164, 92, 7,165, 0, 0, 0, - 1, 0, 0, 0, 64,171, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,216,116,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 56,115,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,117, 99, 99,105, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,183,253, 7, 1,136, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,118,127, 4, 0, 0, 0, 0, +165, 0, 0, 0, 1, 0, 0, 0,120,125,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 96, 95, 67, 3,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,192,165, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 32,167, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,167, 92, 7,200, 0, 0, 0, 1, 0, 0, 0,128,168, 92, 7, -192,165, 92, 7, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, - 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0,149, 3,223, 0, -149, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,168, 92, 7, -200, 0, 0, 0, 1, 0, 0, 0,224,169, 92, 7, 32,167, 92, 7, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, - 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, - 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,153, 5, 60, 0,153, 5, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0, -136, 6, 0, 0, 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, - 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,224,169, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128,168, 92, 7, 0, 0, 0, 0, - 0,128,175, 68, 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0,136, 5, 0, 0, -153, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -135, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 2, 2, 0, 0, 2, 0, 3, 3, 2, 0, 0, 4, 6, 0,153, 5, 89, 3,136, 5, 89, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0, 64,171, 92, 7,168, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,128,164, 92, 7,192,165, 92, 7,224,169, 92, 7, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,224,171, 92, 7,199, 0, 0, 0, 1, 0, 0, 0,136,176, 92, 7, 80,106, 92, 7, 8, 82, 92, 7,184, 86, 92, 7, - 48, 87, 92, 7,216, 84, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 15, 15,112, 5, - 84, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,146,238, 2,104,175, 92, 7,104,175, 92, 7,168,172, 92, 7, 8,174, 92, 7, - 0, 0, 0, 0, 0, 0, 0, 0,152,170, 76, 3,184,171, 76, 3, 68, 65, 84, 65,248, 0, 0, 0,168,172, 92, 7,200, 0, 0, 0, - 1, 0, 0, 0, 8,174, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,137, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0,174, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, - 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,112, 5, 26, 0,112, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 5, 26, 0, 5, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,148,238, 2,216,241, 6, 3, -216,241, 6, 3, 0, 0, 0, 0, 0, 0, 0, 0,200,172, 76, 3,216,174, 76, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 8,174, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,168,172, 92, 7, 0, 0, 64,192, 0, 0,126, 67, - 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, - 18, 0, 0, 0, 57, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, - 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,112, 5, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,112, 5, 58, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,144,147,238, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,176, 76, 3,200,178, 76, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0,104,175, 92, 7,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -136,176, 92, 7,199, 0, 0, 0, 1, 0, 0, 0,128,182, 92, 7,224,171, 92, 7,200, 85, 92, 7, 80, 85, 92, 7, 96, 84, 92, 7, - 64, 86, 92, 7, 0, 0, 0, 0,113, 5, 0, 0,136, 6, 0, 0, 1, 3, 0, 0,174, 3, 0, 0, 3, 3, 24, 1,174, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48,144,238, 2, 16,180, 92, 7, 16,180, 92, 7, 80,177, 92, 7,176,178, 92, 7, 0, 0, 0, 0, - 0, 0, 0, 0,120,179, 76, 3,152,180, 76, 3, 68, 65, 84, 65,248, 0, 0, 0, 80,177, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, -176,178, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,140, 67, + 2, 0, 1, 0, 0, 0, 0, 0,248, 59, 38, 4, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,184,119,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 40,121,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, - 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 1, - 26, 0, 24, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,113, 5, 0, 0,136, 6, 0, 0,149, 3, 0, 0, -174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 1, 26, 0, 7, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,145,238, 2,128,155,255, 2,128,155,255, 2, - 0, 0, 0, 0, 0, 0, 0, 0,168,181, 76, 3,184,183, 76, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -176,178, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80,177, 92, 7, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0, 2,195, 0, 0, 0, 0, 7, 1, 0, 0, 24, 1, 0, 0, 18, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 18, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, - 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 24, 1,148, 0, 7, 1,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, 5, 0, 0,136, 6, 0, 0, 1, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 1,148, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32,145,238, 2, 48, 37,255, 2, 48, 37,255, 2, 0, 0, 0, 0, 0, 0, 0, 0,232,184, 76, 3, 72,186, 76, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0, 16,180, 92, 7,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, + 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, + 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, +149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 40,121,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,152,122,127, 4, 0, 0, 0, 0, +184,119,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, + 0, 64,101,196, 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0, +149, 3,223, 0,149, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, + 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,152,122,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 8,124,127, 4, 0, 0, 0, 0, + 40,121,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, + 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, + 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,153, 5, + 60, 0,153, 5, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, + 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, 0, 0, 4, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 8,124,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152,122,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,175, 68, 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, + 0, 64, 86,196, 0, 0, 0, 0,136, 5, 0, 0,153, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 2, 0, 3, 3, 2, 0, 0, 4, 6, 0,153, 5, + 89, 3,136, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, + 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,104, 0, 0, 0,120,125,127, 4, 0, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +120,118,127, 4, 0, 0, 0, 0,184,119,127, 4, 0, 0, 0, 0, 8,124,127, 4, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0, 40,126,127, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 24,131,127, 4, 0, 0, 0, 0, +136, 30, 66, 4, 0, 0, 0, 0,152, 13, 66, 4, 0, 0, 0, 0,248, 17, 66, 4, 0, 0, 0, 0,104, 18, 66, 4, 0, 0, 0, 0, + 56, 16, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, + 15, 15, 48, 6, 92, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 84,240, 2, 0, 0, 0, 0,248,129,127, 4, 0, 0, 0, 0, +248,129,127, 4, 0, 0, 0, 0, 24,127,127, 4, 0, 0, 0, 0,136,128,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,184, 65, 5, 88,159,127, 0, 0,184, 66, 5, 88,159,127, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 24,127,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,136,128,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,160,137, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 5, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 86,240, 2, 0, 0, 0, 0, 72,161, 62, 4, 0, 0, 0, 0, + 72,161, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 67, 5, 88,159,127, 0, 0, + 24, 70, 5, 88,159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +136,128,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,127,127, 4, 0, 0, 0, 0, + 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 47, 6, 0, 0, 18, 0, 0, 0, 65, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, +205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 48, 6, 66, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 26, 0, 0, 0, 91, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 66, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 85,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 71, 5, 88,159,127, 0, 0, +152, 74, 5, 88,159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, +248,129,127, 4, 0, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 61, 0, 3, 24, 61, 0, 3, 80,126,252, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 80,126,252, 2, -223, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,112,181, 92, 7, 68, 65, 84, 65,168, 0, 0, 0,112,181, 92, 7, -222, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,208,195, 93, 7, 19, 0, 0, 0, 1, 0, 1, 0,208,195, 93, 7, - 20, 0, 0, 0, 1, 0, 1, 0,208,195, 93, 7, 21, 0, 1, 0, 1, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 1, 0, 1, 0, - 40,108,103, 7, 0, 0, 0, 0, 1, 0, 1, 0,208,114,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, 8,197,104, 7, 0, 0, 0, 0, - 1, 0, 1, 0, 72,124,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, 24, 34,104, 7, 0, 0, 0, 0, 1, 0, 1, 0, 8,120,103, 7, - 0, 0, 0, 0, 1, 0, 1, 0,216,103,103, 7, 0, 0, 0, 0, 1, 0, 1, 0,144,110,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, - 8,103,103, 7, 21, 0, 0, 0, 1, 0, 1, 0,208,195, 93, 7, 68, 65, 84, 65, 96, 0, 0, 0,128,182, 92, 7,199, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,136,176, 92, 7,184, 86, 92, 7,232, 83, 92, 7, 80, 85, 92, 7, 48, 87, 92, 7, 0, 0, 0, 0, - 0, 0, 0, 0,111, 5, 0, 0, 85, 0, 0, 0,174, 3, 0, 0, 1, 1,112, 5, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, - 16,149,238, 2, 96,215, 92, 7, 64,222, 92, 7, 72,183, 92, 7, 80,210, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0,248,186, 76, 3, -200,189, 76, 3, 68, 65, 84, 65,248, 0, 0, 0, 72,183, 92, 7,200, 0, 0, 0, 1, 0, 0, 0,168,184, 92, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,174, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,111, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,112, 5, 26, 0,112, 5, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 5, 26, 0, 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,158,238, 2, 64,114,255, 2, 64,114,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, -216,190, 76, 3,152,193, 76, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,184, 92, 7,200, 0, 0, 0, - 1, 0, 0, 0,232,205, 92, 7, 72,183, 92, 7, 0, 0, 0, 0, 0, 0, 72, 67, 0,128, 31,196, 0, 0, 0, 0, 0, 0, 0, 0, -252,255, 55, 67,252,191, 31,196, 0, 0, 0, 0,184, 0, 0, 0,201, 0, 0, 0, 0, 0, 0, 0,126, 2, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,183, 0, 0, 0, 0, 0, 0, 0,126, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, - 6, 0,201, 0,127, 2,184, 0,127, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0, 0, 0, - 48, 1, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 0,127, 2, 10, 0, 5, 0, - 3, 0, 0, 0, 0, 0, 0, 0,201, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,155,238, 2,120,234, 89, 3, -120,234, 89, 3, 8,186, 92, 7, 64,204, 92, 7,200,194, 76, 3,216,196, 76, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 8,186, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,176,187, 92, 7, 0, 0, 0, 0,200,193, 68, 3, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 42,254,183, 0,190, 1, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 24,131,127, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, +136,137,127, 4, 0, 0, 0, 0, 40,126,127, 4, 0, 0, 0, 0, 24, 17, 66, 4, 0, 0, 0, 0,168, 16, 66, 4, 0, 0, 0, 0, +200, 15, 66, 4, 0, 0, 0, 0,136, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, +125, 3, 0, 0, 69, 4, 0, 0, 3, 3, 70, 1,201, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 81,240, 2, 0, 0, 0, 0, +232,134,127, 4, 0, 0, 0, 0,232,134,127, 4, 0, 0, 0, 0, 8,132,127, 4, 0, 0, 0, 0,120,133,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 75, 5, 88,159,127, 0, 0,104, 76, 5, 88,159,127, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 8,132,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,120,133,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,163, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, + 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 70, 1, + 26, 0, 70, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, + 44, 4, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 26, 0, 7, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 83,240, 2, 0, 0, 0, 0, +184,102, 38, 4, 0, 0, 0, 0,184,102, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 77, 5, 88,159,127, 0, 0,200, 79, 5, 88,159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,120,133,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8,132,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,154, 67, + 0, 0, 29,195, 0, 0, 0, 0, 53, 1, 0, 0, 70, 1, 0, 0, 18, 0, 0, 0,174, 0, 0, 0, 0, 0, 0, 0, 52, 1, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 52, 1, 0, 0, 18, 0, 0, 0,174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 70, 1, +175, 0, 53, 1,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, +125, 3, 0, 0, 43, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1,175, 0, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 82,240, 2, 0, 0, 0, 0, +184, 16, 60, 4, 0, 0, 0, 0,184, 16, 60, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 81, 5, 88,159,127, 0, 0,168, 82, 5, 88,159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 1, 0, 0,232,134,127, 4, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,176,187, 92, 7,198, 0, 0, 0, - 1, 0, 0, 0, 88,189, 92, 7, 8,186, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117,254,183, 0,115, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 88,189, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 0,191, 92, 7,176,187, 92, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +200, 66, 53, 4, 0, 0, 0, 0,200, 66, 53, 4, 0, 0, 0, 0, 88, 86, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, + 88, 86, 62, 4, 0, 0, 0, 0,223, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 88,136,127, 4, 0, 0, 0, 0, + 68, 65, 84, 65,224, 0, 0, 0, 88,136,127, 4, 0, 0, 0, 0,222, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, +120,209,128, 4, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, +120,209,128, 4, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +200,230,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,136,238,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 88, 66,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,168,249,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +136,159,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,136,244,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +168,226,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,104,233,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +216,225,128, 4, 0, 0, 0, 0, 21, 0, 0, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +136,137,127, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,131,127, 4, 0, 0, 0, 0, +248, 17, 66, 4, 0, 0, 0, 0, 88, 15, 66, 4, 0, 0, 0, 0,168, 16, 66, 4, 0, 0, 0, 0,104, 18, 66, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0, 69, 4, 0, 0, 1, 1, 48, 6,233, 3, 1, 0, + 0, 0, 0, 0, 0, 0, 8, 0,200, 87,240, 2, 0, 0, 0, 0,120,170,127, 4, 0, 0, 0, 0,120,227,127, 4, 0, 0, 0, 0, +120,138,127, 4, 0, 0, 0, 0, 88,165,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +120, 83, 5, 88,159,127, 0, 0,248, 85, 5, 88,159,127, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120,138,127, 4, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,232,139,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 40, 98,240, 2, 0, 0, 0, 0,168,171, 21, 3, 0, 0, 0, 0,168,171, 21, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 86, 5, 88,159,127, 0, 0, 40, 90, 5, 88,159,127, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232,139,127, 4, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,216,160,127, 4, 0, 0, 0, 0,120,138,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 67, + 0, 0, 38,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 0, 38,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 0, 0, 0, 0,151, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0,151, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,152, 2,143, 0,152, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,174, 1, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160, 0,152, 2, 10, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0,160, 0, 50, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,232, 94,240, 2, 0, 0, 0, 0,120, 96, 42, 4, 0, 0, 0, 0,120, 96, 42, 4, 0, 0, 0, 0, + 88,141,127, 4, 0, 0, 0, 0, 56,159,127, 4, 0, 0, 0, 0,104, 91, 5, 88,159,127, 0, 0,216, 93, 5, 88,159,127, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 88,141,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0,248,142,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 64, 74, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111, +100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111, +100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,254,143, 0,190, 1, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 11, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,248,142,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,152,144,127, 4, 0, 0, 0, 0, + 88,141,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,114,117,115,104, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117,254,143, 0,115, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,152,144,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0, 56,146,127, 4, 0, 0, 0, 0,248,142,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101, 120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101, 120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,252,183, 0,213, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,252,143, 0,213, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 0,191, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,168,192, 92, 7, 88,189, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,114,111, -107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130,253, -183, 0,195, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,168,192, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, - 80,194, 92, 7, 0,191, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, - 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, - 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,253,183, 0,231, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0, 80,194, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,248,195, 92, 7,168,192, 92, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, - 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, - 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 65,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,210,252,183, 0, 19, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,248,195, 92, 7, -198, 0, 0, 0, 1, 0, 0, 0,160,197, 92, 7, 80,194, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 56,146,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,216,147,127, 4, 0, 0, 0, 0, +152,144,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 0, 0, 0, 0, + 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,169,253,183, 0, 36, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130,253,143, 0,195, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,160,197, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 72,199, 92, 7, -248,195, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109, -109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109, -109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,216,147,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0,120,149,127, 4, 0, 0, 0, 0, 56,146,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 99,117, +114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 99,117, +114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142,253,183, 0,135, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 72,199, 92, 7,198, 0, 0, 0, 1, 0, 0, 0,240,200, 92, 7,160,197, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,173,253,183, 0, 80, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,240,200, 92, 7,198, 0, 0, 0, - 1, 0, 0, 0,152,202, 92, 7, 72,199, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,101,105,103,104,116, 32, 84,111,111,108,115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108,255,183, 0,124, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,253,143, 0,231, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,152,202, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 64,204, 92, 7,240,200, 92, 7, + 68, 65, 84, 65, 88, 1, 0, 0,120,149,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 24,151,127, 4, 0, 0, 0, 0, +216,147,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101, 97,114, 97,110, + 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252,252,143, 0,233, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 24,151,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0,184,152,127, 4, 0, 0, 0, 0,120,149,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111, +111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111, +111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,169,253,143, 0, 36, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,184,152,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 88,154,127, 4, 0, 0, 0, 0, + 24,151,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,115, 99,117,108,112,116, 95,115,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,115, 99,117,108,112,116, 95,115,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,121,109,109,101,116,114,121, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142,253,143, 0,135, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 88,154,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0,248,155,127, 4, 0, 0, 0, 0,184,152,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,173,253,143, 0, 80, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,248,155,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,152,157,127, 4, 0, 0, 0, 0, + 88,154,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,101,105,103,104,116, 32, 84, +111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108,255,183, 0,124, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,152,157,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0, 56,159,127, 4, 0, 0, 0, 0,248,155,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97, 105,110,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97, @@ -3679,71 +1902,78 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39,253,183, 0,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 64,204, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152,202, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,111,106, -101, 99,116, 32, 80, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157,252, -183, 0, 9, 1, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 56,159,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152,157,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,111,106,101, 99,116, 32, + 80, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157,252,183, 0, 9, 1, + 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232,205, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, -240,208, 92, 7,168,184, 92, 7, 0, 0, 0, 0, 0, 0, 74, 67, 0, 0, 66,195, 0, 0, 0, 0, 0, 0, 0, 0,203,205, 57, 67, - 97,228, 66,195, 0, 0, 0, 0,184, 0, 0, 0,201, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,183, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,201, 0, -193, 0,184, 0,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0, 0, 0,111, 0, 0, 0, - 47, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 0,193, 0, 11, 0, 6, 0, 34, 0, 0, 0, - 0, 0, 0, 0, 0, 0,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,156,238, 2,144,157,255, 2,144,157,255, 2, - 72,207, 92, 7, 72,207, 92, 7, 8,198, 76, 3, 24,200, 76, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 72,207, 92, 7,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,157,238, 2, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,101,114, - 97,116,111,114, 0, 97,105,110,116, 32, 84,111,103,103,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,255, -185, 0, 16, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216,160,127, 4, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,232,163,127, 4, 0, 0, 0, 0,232,139,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 67, + 0, 0,157,195, 0, 0, 0, 0, 0, 0, 0, 0,227,102, 16, 67, 66, 6,157,195, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 0, 0, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 55, 1,143, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,119, 0, 0, 0,173, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 55, 1, 11, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,216, 95,240, 2, 0, 0, 0, 0, 72,168, 9, 3, 0, 0, 0, 0, 72,168, 9, 3, 0, 0, 0, 0, + 72,162,127, 4, 0, 0, 0, 0, 72,162,127, 4, 0, 0, 0, 0, 24, 95, 5, 88,159,127, 0, 0,136, 97, 5, 88,159,127, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 72,162,127, 4, 0, 0, 0, 0, +198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 96,240, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79,112,101,114, 97,116,111,114, 0, 97,105,110,116, 32, 84,111,103,103,108,101, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,255,144, 0, 16, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,208, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, - 80,210, 92, 7,232,205, 92, 7, 0, 0, 0, 0, 0, 0, 52, 67, 0,192,115,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,232,163,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 88,165,127, 4, 0, 0, 0, 0, +216,160,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 67, 0,192,115,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,115,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, -207, 3,163, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0,111, 5, 0, 0,111, 0, 0, 0, -174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,150,238, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 80,210, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240,208, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +207, 3,163, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 47, 6, 0, 0, +119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 89,240, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 88,165,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +232,163,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 0, 0, 47, 6, 0, 0, +119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 5,207, 3, 12, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 88,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0,111, 5, 0, 0,111, 0, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, 4, 64, 3, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,150,238, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,215, 76, 3, 32,215, 76, 3, 0, 0, 0, 0, -176,211, 92, 7, 68, 65, 84, 65, 72, 3, 0, 0,176,211, 92, 7,159, 0, 0, 0, 1, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157,104,200, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +200,115, 5, 88,159,127, 0, 0,248,114, 5, 88,159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,166,127, 4, 0, 0, 0, 0, + 68, 65, 84, 65,104, 3, 0, 0,200,166,127, 4, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,120,204, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,218,205, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190, 184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,210,111,193, 0, 0,128, 63, 68,239,209, 62, 70,119,105, 63, 192, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,144, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, - 42, 61,228, 62, 0, 0, 0, 0,164, 95, 68, 65,141,120,173,192,225,208,213, 64, 0, 0,128, 63,177,157,229, 62,126, 6, 33,191, -222,160, 81,191,184,158, 81,191,115, 90,127, 63, 72, 59,155, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188,236, 95,179, 63, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,220,161,108, 65,158,210,111, 65,130,240,191, 62,105,116, 85, 63, - 64,183, 70,188, 0, 0, 2,180,196, 95,131,190, 91, 75,253, 61, 97, 88, 18, 63, 0, 0,168, 51,230,117,117,194, 59,213,216, 65, -167,161, 5,194,236,254,159,192,240, 49,114, 66,196,242,213,193,140,218, 3, 66,145, 0,160, 64, 68,239,209, 62, 51,177,205,190, + 42, 61,228, 62, 0, 0, 0, 0,164, 95, 68, 65,141,120,173,192,225,208,213, 64, 0, 0,128, 63,177,157,229, 62, 64, 74, 36,191, +222,160, 81,191,184,158, 81,191,115, 90,127, 63,248, 96,158, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188,235, 2,183, 63, +129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,221,161,108, 65,158,210,111, 65,100,240,191, 62,112,116, 85, 63, + 80,185, 70,188, 0, 0, 86,180, 33,195,128,190, 64, 66,248, 61,255,111, 15, 63, 0, 0,150, 52, 88,118,117,194,159,213,216, 65, +229,161, 5,194, 54,255,159,192, 99, 50,114, 66, 41,243,213,193,202,218, 3, 66,219, 0,160, 64, 68,239,209, 62, 51,177,205,190, 184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,210,111,193, 0, 0,128, 63,177,157,229, 62,126, 6, 33,191, -222,160, 81,191,184,158, 81,191,115, 90,127, 63, 72, 59,155, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188,236, 95,179, 63, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,220,161,108, 65,158,210,111, 65,103,236,220, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,103,236,220, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103,236,220, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190, -237,203,148,190, 3,236,234,190,158,210,111, 65,222,212, 92, 65, 0, 0, 0, 0, 0, 0, 0, 0,242, 60,201, 58, 0, 0, 0, 0, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,210,111,193, 0, 0,128, 63,177,157,229, 62, 64, 74, 36,191, +222,160, 81,191,184,158, 81,191,115, 90,127, 63,248, 96,158, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188,235, 2,183, 63, +129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,221,161,108, 65,158,210,111, 65,112,198,184, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,198,184, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112,198,184, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190, +237,203,148,190, 3,236,234,190,158,210,111, 65,222,212, 92, 65, 0, 0, 0, 0, 0, 0, 0, 0,142, 79,168, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3752,749 +1982,143 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 30, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 96,215, 92, 7,160, 0, 0, 0, 1, 0, 0, 0, 64,222, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,144,110,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 8, 24, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, - 0, 64,156, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,216, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, - 32,218, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, - 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, - 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0, -174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 32,218, 92, 7,200, 0, 0, 0, 1, 0, 0, 0,128,219, 92, 7,192,216, 92, 7, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0, -148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0, -148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0,149, 3,223, 0,149, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,219, 92, 7,200, 0, 0, 0, 1, 0, 0, 0,224,220, 92, 7, 32,218, 92, 7, - 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,153, 5, 60, 0,153, 5, 60, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,220, 92, 7,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,128,219, 92, 7, 0, 0, 0, 0, 0,128,175, 68, 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0,136, 5, 0, 0,153, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, -135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 2, 0, 3, 3, 2, 0, 0, 4, - 6, 0,153, 5, 89, 3,136, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, - 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 60, 0, 0, 0, 64,222, 92, 7,168, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,215, 92, 7,192,216, 92, 7,224,220, 92, 7, - 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, 48,100, 92, 7,195, 0, 0, 0, 1, 0, 0, 0, -208, 18, 93, 7, 24, 81, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97,109,101, 32, 76,111,103,105, 99, 0, 46, 48, 48, - 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,223, 92, 7,104,224, 92, 7,224,224, 92, 7, -224,234, 92, 7, 96,235, 92, 7, 80, 12, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120,223, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, - 32,101, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32,101, 92, 7, -196, 0, 0, 0, 1, 0, 0, 0,152,101, 92, 7,120,223, 92, 7, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,152,101, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, 16,102, 92, 7, 32,101, 92, 7, 0, 0, 0, 0,254, 4,214, 2, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 16,102, 92, 7,196, 0, 0, 0, 1, 0, 0, 0,136,102, 92, 7,152,101, 92, 7, - 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,102, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, - 0,103, 92, 7, 16,102, 92, 7, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0,103, 92, 7, -196, 0, 0, 0, 1, 0, 0, 0,120,103, 92, 7,136,102, 92, 7, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,120,103, 92, 7,196, 0, 0, 0, 1, 0, 0, 0,240,103, 92, 7, 0,103, 92, 7, 0, 0, 0, 0, 0, 0, 20, 1, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,103, 92, 7,196, 0, 0, 0, 1, 0, 0, 0,104,104, 92, 7,120,103, 92, 7, - 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,104, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, -224,104, 92, 7,240,103, 92, 7, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224,104, 92, 7, -196, 0, 0, 0, 1, 0, 0, 0, 88,105, 92, 7,104,104, 92, 7, 0, 0, 0, 0,254, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 88,105, 92, 7,196, 0, 0, 0, 1, 0, 0, 0,208,105, 92, 7,224,104, 92, 7, 0, 0, 0, 0,124, 3, 20, 1, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208,105, 92, 7,196, 0, 0, 0, 1, 0, 0, 0,240,223, 92, 7, 88,105, 92, 7, - 0, 0, 0, 0,124, 3,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,223, 92, 7,196, 0, 0, 0, 1, 0, 0, 0, -104,224, 92, 7,208,105, 92, 7, 0, 0, 0, 0,212, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,224, 92, 7, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240,223, 92, 7, 0, 0, 0, 0,212, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,224,224, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 96,225, 92, 7, 0, 0, 0, 0, 32,101, 92, 7,152,101, 92, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,225, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,224,225, 92, 7, -224,224, 92, 7, 32,101, 92, 7,136,102, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,225, 92, 7, -197, 0, 0, 0, 1, 0, 0, 0, 96,226, 92, 7, 96,225, 92, 7,152,101, 92, 7, 0,103, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 96,226, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,224,226, 92, 7,224,225, 92, 7,136,102, 92, 7, - 0,103, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,226, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, - 96,227, 92, 7, 96,226, 92, 7,136,102, 92, 7,120,103, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 96,227, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,224,227, 92, 7,224,226, 92, 7,120,103, 92, 7,240,103, 92, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,227, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 96,228, 92, 7, 96,227, 92, 7, - 16,102, 92, 7,104,104, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,228, 92, 7,197, 0, 0, 0, - 1, 0, 0, 0,224,228, 92, 7,224,227, 92, 7,240,103, 92, 7,104,104, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,224,228, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 96,229, 92, 7, 96,228, 92, 7,120,103, 92, 7,120,223, 92, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,229, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,224,229, 92, 7, -224,228, 92, 7,104,104, 92, 7,120,223, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,229, 92, 7, -197, 0, 0, 0, 1, 0, 0, 0, 96,230, 92, 7, 96,229, 92, 7, 0,103, 92, 7,224,104, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 96,230, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,224,230, 92, 7,224,229, 92, 7, 16,102, 92, 7, -224,104, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,230, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, - 96,231, 92, 7, 96,230, 92, 7,240,103, 92, 7,224,104, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 96,231, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,224,231, 92, 7,224,230, 92, 7, 88,105, 92, 7,208,105, 92, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,231, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 96,232, 92, 7, 96,231, 92, 7, - 0,103, 92, 7,208,105, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,232, 92, 7,197, 0, 0, 0, - 1, 0, 0, 0,224,232, 92, 7,224,231, 92, 7,224,104, 92, 7, 88,105, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,224,232, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, 96,233, 92, 7, 96,232, 92, 7,120,103, 92, 7,240,223, 92, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,233, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,224,233, 92, 7, -224,232, 92, 7, 88,105, 92, 7,240,223, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,233, 92, 7, -197, 0, 0, 0, 1, 0, 0, 0, 96,234, 92, 7, 96,233, 92, 7,136,102, 92, 7,104,224, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 96,234, 92, 7,197, 0, 0, 0, 1, 0, 0, 0,224,234, 92, 7,224,233, 92, 7,208,105, 92, 7, -104,224, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,234, 92, 7,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 96,234, 92, 7,240,223, 92, 7,104,224, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, - 96,235, 92, 7,199, 0, 0, 0, 1, 0, 0, 0,232,238, 92, 7, 0, 0, 0, 0,136,102, 92, 7, 32,101, 92, 7,152,101, 92, 7, - 0,103, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 56, 18, 93, 7, 56, 18, 93, 7, 40,236, 92, 7,136,237, 92, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40,236, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, -136,237, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, - 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, - 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, -213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -136,237, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,236, 92, 7, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,232,238, 92, 7,199, 0, 0, 0, 1, 0, 0, 0,176,243, 92, 7, 96,235, 92, 7, -104,104, 92, 7,240,103, 92, 7,224,104, 92, 7, 16,102, 92, 7, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 19, 1, 0, 0, 4, 4,234, 0, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,242, 92, 7,112,242, 92, 7, -176,239, 92, 7, 16,241, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -176,239, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 16,241, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, - 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 4, 0, 0,254, 4, 0, 0,245, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,241, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,239, 92, 7, - 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 88, 67,254,255,116,195, 0, 0, 0, 0, -217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0,245, 0,217, 0,245, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,112,242, 92, 7,165, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,176,243, 92, 7,199, 0, 0, 0, 1, 0, 0, 0, 48,249, 92, 7,232,238, 92, 7,120,223, 92, 7,120,103, 92, 7, -240,103, 92, 7,104,104, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 17, 17, 20, 4, - 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,248, 92, 7,152,248, 92, 7,120,244, 92, 7, 56,247, 92, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,244, 92, 7,200, 0, 0, 0, - 1, 0, 0, 0,216,245, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, - 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,216,245, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 56,247, 92, 7,120,244, 92, 7, 0, 0, 0, 0, 0, 0, 92, 67, - 0, 0,122,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,122,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, - 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, - 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,250, 0,203, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,220, 0,250, 0, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,247, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -216,245, 92, 7, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67, 4, 0, 39,195, 0,224,180, 68, 1, 0,224,194, - 0, 0,176, 67, 39, 3, 0, 0, 56, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, - 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 56, 3,250, 0, 39, 3, -232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 3,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 52, 0, 0, 0,152,248, 92, 7, -178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0, 48,249, 92, 7,199, 0, 0, 0, 1, 0, 0, 0,152,255, 92, 7,176,243, 92, 7, 88,105, 92, 7,208,105, 92, 7, - 0,103, 92, 7,224,104, 92, 7, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 9, 9,130, 1, -166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,252, 92, 7,184,252, 92, 7,248,249, 92, 7, 88,251, 92, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,249, 92, 7,200, 0, 0, 0, - 1, 0, 0, 0, 88,251, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0,193, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,181, 67, - 0, 0,200, 65, 0,128,181, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,130, 1, 26, 0,130, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, - 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 88,251, 92, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248,249, 92, 7, 0, 0, 0, 0, 0,128,181, 67, - 0, 0, 0, 0, 0,128,218, 67, 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0,126, 86, 5, 68, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, - 0, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, - 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,130, 1,140, 1,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0,184,252, 92, 7,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -152,255, 92, 7,199, 0, 0, 0, 1, 0, 0, 0, 80, 12, 93, 7, 48,249, 92, 7,240,223, 92, 7,104,224, 92, 7,208,105, 92, 7, - 88,105, 92, 7, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 1, 1,167, 2,166, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 10, 93, 7,240, 10, 93, 7, 96, 0, 93, 7,224, 5, 93, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96, 0, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, -192, 1, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 56, 0,192, 41, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, - 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,167, 2, - 26, 0,167, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, - 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -192, 1, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 32, 3, 93, 7, 96, 0, 93, 7, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, - 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, - 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0,213, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0,140, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 3, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,128, 4, 93, 7,192, 1, 93, 7, - 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0, 47, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 4, 93, 7,200, 0, 0, 0, - 1, 0, 0, 0,224, 5, 93, 7, 32, 3, 93, 7, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 35, 67, 0,128, 23,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, -162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, - 6, 0,180, 0,112, 2,163, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123, 3, 0, 0,123, 3, 0, 0, - 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,224, 5, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 4, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,167, 2,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 64, 7, 93, 7, 68, 65, 84, 65, 72, 3, 0, 0, 64, 7, 93, 7,159, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 30, 33, 12, 66, 84,152,137, 66,113, 27,126, 66, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 1, 0, 0,120,170,127, 4, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0,216,174,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,149, 53,207, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126,177,113, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 6, 63,156, 61, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104,233,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 24, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 64,156, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,171,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +104,173,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 48, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,224,197, 68, 0, 0,200, 65, 0,224,197, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104,173,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,248,171,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,241, 67, 0,128, 90,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0,224,195, 68, 0, 64,111,196, 0, 0, 0, 0, 31, 6, 0, 0, 48, 6, 0, 0, 18, 0, 0, 0,206, 3, 0, 0, + 0, 0, 0, 0, 30, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 30, 6, 0, 0, 18, 0, 0, 0,206, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, + 0, 0, 0, 4, 6, 0, 48, 6,207, 3, 31, 6,189, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 6,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, - 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240, 10, 93, 7,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, -144,110,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 80, 12, 93, 7,199, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,152,255, 92, 7,120,103, 92, 7,136,102, 92, 7,104,224, 92, 7,240,223, 92, 7, 0, 0, 0, 0, - 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 3, 3,212, 0,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,216, 15, 93, 7,216, 15, 93, 7, 24, 13, 93, 7,120, 14, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24, 13, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,120, 14, 93, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 83, 67, 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,212, 0, 26, 0,212, 0, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120, 14, 93, 7,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 24, 13, 93, 7, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 80, 66, - 0, 0,119, 67, 0, 0,189,195, 0, 0, 0, 0,195, 0, 0, 0,212, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, -194, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, - 6, 0,212, 0,140, 1,195, 0,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, - 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0,140, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -252, 0, 0, 0,216, 15, 93, 7,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,216,174,127, 4, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, + 40,188,127, 4, 0, 0, 0, 0,120,170,127, 4, 0, 0, 0, 0,248,171,127, 4, 0, 0, 0, 0,104,173,127, 4, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 30,252, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,240, 30,252, 2,223, 0, 0, 0, 1, 0, 0, 0, - 13, 0, 0, 0, 13, 0, 0, 0, 56, 17, 93, 7, 68, 65, 84, 65,156, 0, 0, 0, 56, 17, 93, 7,222, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0,208,195, 93, 7, 19, 0, 0, 0, 1, 0, 1, 0,208,195, 93, 7, 20, 0, 0, 0, 1, 0, 1, 0, -208,195, 93, 7, 21, 0, 1, 0, 1, 0, 1, 0,208,195, 93, 7, 0, 0, 0, 0, 1, 0, 1, 0, 40,108,103, 7, 0, 0, 0, 0, - 1, 0, 1, 0,208,114,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, 8,197,104, 7, 0, 0, 0, 0, 1, 0, 1, 0, 72,124,103, 7, - 0, 0, 0, 0, 1, 0, 1, 0, 24, 34,104, 7, 0, 0, 0, 0, 1, 0, 1, 0, 8,120,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, -216,103,103, 7, 0, 0, 0, 0, 1, 0, 1, 0,144,110,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, 8,103,103, 7, 83, 78, 0, 0, -140, 0, 0, 0,208, 18, 93, 7,195, 0, 0, 0, 1, 0, 0, 0,248, 82, 93, 7, 48,100, 92, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 82, 83, 99,114,105,112,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,192, 19, 93, 7, 80, 26, 93, 7,200, 26, 93, 7,200, 37, 93, 7, 72, 38, 93, 7,248, 75, 93, 7, 0, 0, 0, 0, - 0, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,192, 19, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, 56, 20, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 56, 20, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,176, 20, 93, 7,192, 19, 93, 7, - 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176, 20, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, - 40, 21, 93, 7, 56, 20, 93, 7, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40, 21, 93, 7, -196, 0, 0, 0, 1, 0, 0, 0,160, 21, 93, 7,176, 20, 93, 7, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,160, 21, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, 24, 22, 93, 7, 40, 21, 93, 7, 0, 0, 0, 0, 0, 0,187, 2, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24, 22, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,144, 22, 93, 7,160, 21, 93, 7, - 0, 0, 0, 0,254, 4,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144, 22, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, - 8, 23, 93, 7, 24, 22, 93, 7, 0, 0, 0, 0,244, 3,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8, 23, 93, 7, -196, 0, 0, 0, 1, 0, 0, 0,128, 23, 93, 7,144, 22, 93, 7, 0, 0, 0, 0,244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,128, 23, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,248, 23, 93, 7, 8, 23, 93, 7, 0, 0, 0, 0, 0, 0, 28, 1, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248, 23, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,112, 24, 93, 7,128, 23, 93, 7, - 0, 0, 0, 0,244, 3, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,112, 24, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, -232, 24, 93, 7,248, 23, 93, 7, 0, 0, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232, 24, 93, 7, -196, 0, 0, 0, 1, 0, 0, 0, 96, 25, 93, 7,112, 24, 93, 7, 0, 0, 0, 0,248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 96, 25, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,216, 25, 93, 7,232, 24, 93, 7, 0, 0, 0, 0,244, 3, 12, 2, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216, 25, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, 80, 26, 93, 7, 96, 25, 93, 7, - 0, 0, 0, 0,254, 4, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 80, 26, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,216, 25, 93, 7, 0, 0, 0, 0,248, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 26, 93, 7, -197, 0, 0, 0, 1, 0, 0, 0, 72, 27, 93, 7, 0, 0, 0, 0, 56, 20, 93, 7,176, 20, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 72, 27, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,200, 27, 93, 7,200, 26, 93, 7, 56, 20, 93, 7, -160, 21, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 27, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, - 72, 28, 93, 7, 72, 27, 93, 7,176, 20, 93, 7, 24, 22, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 72, 28, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,200, 28, 93, 7,200, 27, 93, 7,160, 21, 93, 7, 24, 22, 93, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 28, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 72, 29, 93, 7, 72, 28, 93, 7, - 24, 22, 93, 7,144, 22, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 29, 93, 7,197, 0, 0, 0, - 1, 0, 0, 0,200, 29, 93, 7,200, 28, 93, 7, 40, 21, 93, 7, 8, 23, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,200, 29, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 72, 30, 93, 7, 72, 29, 93, 7,192, 19, 93, 7,128, 23, 93, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 30, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,200, 30, 93, 7, -200, 29, 93, 7,160, 21, 93, 7,128, 23, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 30, 93, 7, -197, 0, 0, 0, 1, 0, 0, 0, 72, 31, 93, 7, 72, 30, 93, 7,144, 22, 93, 7,248, 23, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 72, 31, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,200, 31, 93, 7,200, 30, 93, 7, 8, 23, 93, 7, -248, 23, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 31, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, - 72, 32, 93, 7, 72, 31, 93, 7,192, 19, 93, 7,112, 24, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 72, 32, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,200, 32, 93, 7,200, 31, 93, 7, 8, 23, 93, 7,112, 24, 93, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 32, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 72, 33, 93, 7, 72, 32, 93, 7, -128, 23, 93, 7,232, 24, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 33, 93, 7,197, 0, 0, 0, - 1, 0, 0, 0,200, 33, 93, 7,200, 32, 93, 7,248, 23, 93, 7,232, 24, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,200, 33, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 72, 34, 93, 7, 72, 33, 93, 7,112, 24, 93, 7,232, 24, 93, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 34, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,200, 34, 93, 7, -200, 33, 93, 7, 8, 23, 93, 7, 96, 25, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 34, 93, 7, -197, 0, 0, 0, 1, 0, 0, 0, 72, 35, 93, 7, 72, 34, 93, 7,144, 22, 93, 7, 96, 25, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 72, 35, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,200, 35, 93, 7,200, 34, 93, 7, 24, 22, 93, 7, -216, 25, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 35, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, - 72, 36, 93, 7, 72, 35, 93, 7, 40, 21, 93, 7,216, 25, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 72, 36, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,200, 36, 93, 7,200, 35, 93, 7, 96, 25, 93, 7,216, 25, 93, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 36, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 72, 37, 93, 7, 72, 36, 93, 7, -160, 21, 93, 7, 80, 26, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 37, 93, 7,197, 0, 0, 0, - 1, 0, 0, 0,200, 37, 93, 7,200, 36, 93, 7,144, 22, 93, 7, 80, 26, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,200, 37, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72, 37, 93, 7,232, 24, 93, 7, 80, 26, 93, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 72, 38, 93, 7,199, 0, 0, 0, 1, 0, 0, 0,208, 41, 93, 7, - 0, 0, 0, 0,160, 21, 93, 7, 56, 20, 93, 7,176, 20, 93, 7, 24, 22, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, -188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 96, 82, 93, 7, - 96, 82, 93, 7, 16, 39, 93, 7,112, 40, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 16, 39, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,112, 40, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112, 40, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 16, 39, 93, 7, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, - 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,208, 41, 93, 7, -199, 0, 0, 0, 1, 0, 0, 0,152, 46, 93, 7, 72, 38, 93, 7, 8, 23, 93, 7, 96, 25, 93, 7,216, 25, 93, 7, 40, 21, 93, 7, - 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 4, 4, 10, 1, 12, 2, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 45, 93, 7, 88, 45, 93, 7,152, 42, 93, 7,248, 43, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152, 42, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,248, 43, 93, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, - 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, 31, 0, 10, 1, - 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0,237, 1, 0, 0, 11, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248, 43, 93, 7, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152, 42, 93, 7, 0, 0, 0, 0, 0,128,132, 67, 0, 64, 80,196, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,120, 67,255,127,246,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, - 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0, 10, 1,237, 1,249, 0,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,237, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,216, 0, 0, 0, 88, 45, 93, 7,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,152, 46, 93, 7,199, 0, 0, 0, 1, 0, 0, 0, -248, 51, 93, 7,208, 41, 93, 7,112, 24, 93, 7,232, 24, 93, 7,248, 23, 93, 7, 8, 23, 93, 7, 0, 0, 0, 0,249, 1, 0, 0, -243, 3, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,251, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 50, 93, 7, 32, 50, 93, 7, 96, 47, 93, 7,192, 48, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 96, 47, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,192, 48, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192, 48, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 96, 47, 93, 7, 0, 0, 0, 0, 0, 0,253, 67, 0, 0, 0, 0, 0, 0, 48, 65, 0, 0, 0, 0, 0, 0,245, 67, - 0, 0, 0, 0, 0, 0,129, 67,234, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,251, 1, - 2, 1,234, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 26, 0, 0, 0, - 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0, - 32, 50, 93, 7,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,248, 51, 93, 7,199, 0, 0, 0, 1, 0, 0, 0,176, 64, 93, 7,152, 46, 93, 7,232, 24, 93, 7, 80, 26, 93, 7, -144, 22, 93, 7,248, 23, 93, 7, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 1, 1,251, 1, -158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 63, 93, 7, 80, 63, 93, 7,192, 52, 93, 7, 64, 58, 93, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192, 52, 93, 7,200, 0, 0, 0, - 1, 0, 0, 0, 32, 54, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, - 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, - 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 32, 54, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,128, 55, 93, 7,192, 52, 93, 7, 0, 0, 0, 0, 0, 0, 15, 67, - 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,249, 1, 0, 0,249, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0,132, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 55, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,224, 56, 93, 7, - 32, 54, 93, 7, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, - 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0, 55, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224, 56, 93, 7, -200, 0, 0, 0, 1, 0, 0, 0, 64, 58, 93, 7,128, 55, 93, 7, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243, 3, 0, 0, -243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 64, 58, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224, 56, 93, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,251, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160, 59, 93, 7, 68, 65, 84, 65, 72, 3, 0, 0,160, 59, 93, 7,159, 0, 0, 0, 1, 0, 0, 0, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,240,182, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, - 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, -185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, -178,157,229, 62,242,252, 18,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62, -145,180,109,188,225,188,163, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, -217,236,191, 62, 54,117, 85, 63, 0,247, 70,188, 0,192, 32,182, 15,232,143,190,210,186, 10, 62, 44, 83, 32, 63, 0,192, 24, 54, -215,104, 25,196,133,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,158, 87,135,195,205,209,166, 67,151,254, 71, 66, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, -178,157,229, 62,242,252, 18,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62, -145,180,109,188,225,188,163, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, -138, 93,108, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 63, 93, 7,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 7, 0,144,110,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,176, 64, 93, 7, -199, 0, 0, 0, 1, 0, 0, 0, 16, 70, 93, 7,248, 51, 93, 7,192, 19, 93, 7,128, 23, 93, 7,232, 24, 93, 7,112, 24, 93, 7, - 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,248, 1, 28, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 68, 93, 7, 56, 68, 93, 7,120, 65, 93, 7,216, 66, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120, 65, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,216, 66, 93, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216, 66, 93, 7, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120, 65, 93, 7, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0, 65, 67, - 0, 0, 0, 0, 0,128,243, 67, 0, 0, 0, 0, 0, 0,129, 67,231, 1, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, - 2, 0, 0, 4, 10, 0,248, 1, 2, 1,231, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -247, 1, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 2, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,112, 1, 0, 0, 56, 68, 93, 7,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,121,116,104, -111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16, 70, 93, 7,199, 0, 0, 0, 1, 0, 0, 0,248, 75, 93, 7,176, 64, 93, 7, - 96, 25, 93, 7,144, 22, 93, 7, 24, 22, 93, 7,216, 25, 93, 7, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0, -186, 2, 0, 0, 3, 3, 10, 1,174, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 73, 93, 7,152, 73, 93, 7, -216, 70, 93, 7, 56, 72, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -216, 70, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 56, 72, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,128,149, 67, 0, 0,200, 65, 0,128,149, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, 26, 0, 10, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0, 38, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56, 72, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216, 70, 93, 7, - 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 67, 0, 0, 2,195, 0, 0, 0, 0, -249, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 10, 1,148, 0,249, 0,130, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 39, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,152, 73, 93, 7,169, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,114,100, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 68, 65, 84, 65, 12, 0, 0, 0, 80,114,100, 3,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,248, 74, 93, 7, - 68, 65, 84, 65,156, 0, 0, 0,248, 74, 93, 7,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,208,195, 93, 7, - 19, 0, 0, 0, 1, 0, 1, 0,208,195, 93, 7, 20, 0, 0, 0, 1, 0, 1, 0,208,195, 93, 7, 21, 0, 1, 0, 1, 0, 1, 0, -208,195, 93, 7, 0, 0, 0, 0, 1, 0, 1, 0, 40,108,103, 7, 0, 0, 0, 0, 1, 0, 1, 0,208,114,103, 7, 0, 0, 0, 0, - 1, 0, 1, 0, 8,197,104, 7, 0, 0, 0, 0, 1, 0, 1, 0, 72,124,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, 24, 34,104, 7, - 0, 0, 0, 0, 1, 0, 1, 0, 8,120,103, 7, 0, 0, 0, 0, 1, 0, 1, 0,216,103,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, -144,110,103, 7, 0, 0, 0, 0, 1, 0, 1, 0, 8,103,103, 7, 68, 65, 84, 65, 96, 0, 0, 0,248, 75, 93, 7,199, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 16, 70, 93, 7,128, 23, 93, 7,160, 21, 93, 7, 80, 26, 93, 7,232, 24, 93, 7, 0, 0, 0, 0, - 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 9, 9,248, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128, 79, 93, 7,128, 79, 93, 7,192, 76, 93, 7, 32, 78, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192, 76, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 32, 78, 93, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64, 73, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 78, 93, 7,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,192, 76, 93, 7, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,236,140, 21, 68, - 20, 51,102, 68,120, 83, 49, 67, 68,214,212, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, - 10, 0,248, 1,132, 1,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, - 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1,132, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -124, 2, 0, 0,128, 79, 93, 7,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205,204,204, 61,231, 1, 0, 0,243, 1, 0, 0,122, 1, 0, 0,124, 1, 0, 0,231, 1, 0, 0,243, 1, 0, 0, 4, 0, 0, 0, -124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,248, 82, 93, 7,195, 0, 0, 0, 1, 0, 0, 0, -104,148, 93, 7,208, 18, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 83, 93, 7, 48, 87, 93, 7,168, 87, 93, 7, -168, 92, 93, 7, 40, 93, 93, 7, 24,135, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232, 83, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, - 96, 84, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96, 84, 93, 7, -196, 0, 0, 0, 1, 0, 0, 0,216, 84, 93, 7,232, 83, 93, 7, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,216, 84, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, 80, 85, 93, 7, 96, 84, 93, 7, 0, 0, 0, 0,254, 4,214, 2, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 80, 85, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,200, 85, 93, 7,216, 84, 93, 7, - 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200, 85, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, - 64, 86, 93, 7, 80, 85, 93, 7, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64, 86, 93, 7, -196, 0, 0, 0, 1, 0, 0, 0,184, 86, 93, 7,200, 85, 93, 7, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,184, 86, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, 48, 87, 93, 7, 64, 86, 93, 7, 0, 0, 0, 0,132, 2,187, 2, - 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 48, 87, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,184, 86, 93, 7, - 0, 0, 0, 0,132, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 87, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, - 40, 88, 93, 7, 0, 0, 0, 0, 96, 84, 93, 7,216, 84, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 40, 88, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 88, 93, 7,168, 87, 93, 7, 96, 84, 93, 7,200, 85, 93, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 88, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 40, 89, 93, 7, 40, 88, 93, 7, -216, 84, 93, 7, 64, 86, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 89, 93, 7,197, 0, 0, 0, - 1, 0, 0, 0,168, 89, 93, 7,168, 88, 93, 7,200, 85, 93, 7, 64, 86, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,168, 89, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 40, 90, 93, 7, 40, 89, 93, 7,200, 85, 93, 7,184, 86, 93, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 90, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 90, 93, 7, -168, 89, 93, 7,232, 83, 93, 7, 48, 87, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 90, 93, 7, -197, 0, 0, 0, 1, 0, 0, 0, 40, 91, 93, 7, 40, 90, 93, 7,232, 83, 93, 7,200, 85, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 40, 91, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 91, 93, 7,168, 90, 93, 7,184, 86, 93, 7, - 48, 87, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 91, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, - 40, 92, 93, 7, 40, 91, 93, 7, 64, 86, 93, 7,184, 86, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 40, 92, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,168, 92, 93, 7,168, 91, 93, 7, 80, 85, 93, 7, 48, 87, 93, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 92, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 92, 93, 7, - 80, 85, 93, 7, 64, 86, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 40, 93, 93, 7,199, 0, 0, 0, - 1, 0, 0, 0,176, 96, 93, 7, 0, 0, 0, 0,200, 85, 93, 7, 96, 84, 93, 7,216, 84, 93, 7, 64, 86, 93, 7, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0,208,147, 93, 7,208,147, 93, 7,240, 93, 93, 7, 80, 95, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240, 93, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 80, 95, 93, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 95, 93, 7,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,240, 93, 93, 7, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, - 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,176, 96, 93, 7,199, 0, 0, 0, 1, 0, 0, 0, 24,135, 93, 7, 40, 93, 93, 7,232, 83, 93, 7,200, 85, 93, 7, -184, 86, 93, 7, 48, 87, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 6, 6,132, 2, -187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,101, 93, 7,152,101, 93, 7,120, 97, 93, 7, 56,100, 93, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120, 97, 93, 7,200, 0, 0, 0, - 1, 0, 0, 0,216, 98, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 33, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, - 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,132, 2, 26, 0,132, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 2, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,216, 98, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 56,100, 93, 7,120, 97, 93, 7, 0, 0, 0, 0, 0, 0, 91, 67, - 0, 0, 40,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 74, 67,254, 63, 40,196, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, - 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, - 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,161, 2,203, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,220, 0,161, 2, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,100, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -216, 98, 93, 7, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67,102,102, 38,190,205,204,148, 63, 51, 51, 13,191, -154,153,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168, 1, 0, 0, 0, 0, 0, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0,131, 2, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0,152,101, 93, 7, -170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 80, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 1, 0, 0, 0, + 68, 65, 84, 65, 16, 0, 0, 0,136, 80, 9, 3, 0, 0, 0, 0,223, 0, 0, 0, 1, 0, 0, 0, 93, 0, 0, 0, 93, 0, 0, 0, + 72,176,127, 4, 0, 0, 0, 0, 68, 65, 84, 65,208, 5, 0, 0, 72,176,127, 4, 0, 0, 0, 0,222, 0, 0, 0, 93, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, + 20, 0, 0, 0, 1, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 21, 0, 0, 0, 1, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0,200,230,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,136,238,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 88, 66,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,168,249,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0,136,159,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,136,244,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0,168,226,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,104,233,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0,216,225,128, 4, 0, 0, 0, 0, 30, 0,255,255, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 6, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 8, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 10, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 11, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 12, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 14, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 16, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 18, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 20, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 22, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 24, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 26, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 28, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 7, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 9, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 11, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 13, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 15, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 17, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 19, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 23, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 25, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 27, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 29, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 31, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 33, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104,182,127, 4, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,216,183,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,197, 68, 0, 0,200, 65, 0,224,197, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216,183,127, 4, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 72,185,127, 4, 0, 0, 0, 0,104,182,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 72,185,127, 4, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,184,186,127, 4, 0, 0, 0, 0,216,183,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,184,186,127, 4, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,185,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 38,192, 0, 0,102, 64, 0,192,179,191, 0,224, 25, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 0, 0, + 0, 0, 0, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 33, 0, 0, 40,188,127, 4, 0, 0, 0, 0, +170, 0, 0, 0, 1, 0, 0, 0,120,227,127, 4, 0, 0, 0, 0,216,174,127, 4, 0, 0, 0, 0,104,182,127, 4, 0, 0, 0, 0, +184,186,127, 4, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4755,19968 +2379,1821 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0, 24,135, 93, 7,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176, 96, 93, 7, 48, 87, 93, 7, -184, 86, 93, 7, 64, 86, 93, 7, 80, 85, 93, 7, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, - 1, 1,122, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,146, 93, 7,112,146, 93, 7,224,135, 93, 7, - 96,141, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,135, 93, 7, -200, 0, 0, 0, 1, 0, 0, 0, 64,137, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,128, 30, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,122, 2, 26, 0,122, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 2, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,184,221,127, 4, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 40,223,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 64,137, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,160,138, 93, 7,224,135, 93, 7, 0, 0, 0, 0, - 0, 0, 32, 67, 0, 64, 10,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 10,196, 0, 0, 0, 0,143, 0, 0, 0, -160, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 41, 2,143, 0, 41, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0,146, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 41, 2, 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160,138, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, - 0,140, 93, 7, 64,137, 93, 7, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,242,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, - 91, 90,242,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, -120, 0,143, 0,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0, 26, 0, 0, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 0, 0, 6, 0, 34, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 40,223,127, 4, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,152,224,127, 4, 0, 0, 0, 0,184,221,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 67, + 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, + 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, + 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0,149, 3,223, 0,149, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,224,127, 4, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 8,226,127, 4, 0, 0, 0, 0, 40,223,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,179, 68, + 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, + 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,153, 5, 60, 0,153, 5, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8,226,127, 4, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,224,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,175, 68, + 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0,136, 5, 0, 0,153, 5, 0, 0, + 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, + 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 2, 2, 0, 0, 2, 0, 3, 3, 2, 0, 0, 4, 6, 0,153, 5, 89, 3,136, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,104, 0, 0, 0,120,227,127, 4, 0, 0, 0, 0, +168, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,188,127, 4, 0, 0, 0, 0,184,221,127, 4, 0, 0, 0, 0, + 8,226,127, 4, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,184,228,127, 4, 0, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,200, 30,128, 4, 0, 0, 0, 0,120, 12, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97,109,101, 32, 76,111,103,105, 99, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,229,127, 4, 0, 0, 0, 0,136,235,127, 4, 0, 0, 0, 0, +248,235,127, 4, 0, 0, 0, 0,184,244,127, 4, 0, 0, 0, 0, 40,245,127, 4, 0, 0, 0, 0,216, 23,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +216,229,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72,230,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,230,127, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,184,230,127, 4, 0, 0, 0, 0,216,229,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,230,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 40,231,127, 4, 0, 0, 0, 0, 72,230,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 40,231,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,231,127, 4, 0, 0, 0, 0, +184,230,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +152,231,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8,232,127, 4, 0, 0, 0, 0, 40,231,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8,232,127, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,120,232,127, 4, 0, 0, 0, 0,152,231,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,120,232,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +232,232,127, 4, 0, 0, 0, 0, 8,232,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,232,232,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 88,233,127, 4, 0, 0, 0, 0, +120,232,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 88,233,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,200,233,127, 4, 0, 0, 0, 0,232,232,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200,233,127, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 56,234,127, 4, 0, 0, 0, 0, 88,233,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,234,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +168,234,127, 4, 0, 0, 0, 0,200,233,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 3, 20, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,168,234,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24,235,127, 4, 0, 0, 0, 0, + 56,234,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 3,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 24,235,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136,235,127, 4, 0, 0, 0, 0,168,234,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,212, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136,235,127, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,235,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +212, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,235,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +104,236,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,230,127, 4, 0, 0, 0, 0,184,230,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,236,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +216,236,127, 4, 0, 0, 0, 0,248,235,127, 4, 0, 0, 0, 0, 72,230,127, 4, 0, 0, 0, 0,152,231,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,236,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 72,237,127, 4, 0, 0, 0, 0,104,236,127, 4, 0, 0, 0, 0,184,230,127, 4, 0, 0, 0, 0, 8,232,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,237,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +184,237,127, 4, 0, 0, 0, 0,216,236,127, 4, 0, 0, 0, 0,152,231,127, 4, 0, 0, 0, 0, 8,232,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,237,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 40,238,127, 4, 0, 0, 0, 0, 72,237,127, 4, 0, 0, 0, 0,152,231,127, 4, 0, 0, 0, 0,120,232,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,238,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +152,238,127, 4, 0, 0, 0, 0,184,237,127, 4, 0, 0, 0, 0,120,232,127, 4, 0, 0, 0, 0,232,232,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,238,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 8,239,127, 4, 0, 0, 0, 0, 40,238,127, 4, 0, 0, 0, 0, 40,231,127, 4, 0, 0, 0, 0, 88,233,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,239,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +120,239,127, 4, 0, 0, 0, 0,152,238,127, 4, 0, 0, 0, 0,232,232,127, 4, 0, 0, 0, 0, 88,233,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,239,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +232,239,127, 4, 0, 0, 0, 0, 8,239,127, 4, 0, 0, 0, 0,216,229,127, 4, 0, 0, 0, 0,120,232,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,239,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 88,240,127, 4, 0, 0, 0, 0,120,239,127, 4, 0, 0, 0, 0,216,229,127, 4, 0, 0, 0, 0, 88,233,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,240,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +200,240,127, 4, 0, 0, 0, 0,232,239,127, 4, 0, 0, 0, 0, 8,232,127, 4, 0, 0, 0, 0,200,233,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,240,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 56,241,127, 4, 0, 0, 0, 0, 88,240,127, 4, 0, 0, 0, 0, 40,231,127, 4, 0, 0, 0, 0,200,233,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,241,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +168,241,127, 4, 0, 0, 0, 0,200,240,127, 4, 0, 0, 0, 0,232,232,127, 4, 0, 0, 0, 0,200,233,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,241,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 24,242,127, 4, 0, 0, 0, 0, 56,241,127, 4, 0, 0, 0, 0, 56,234,127, 4, 0, 0, 0, 0,168,234,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,242,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +136,242,127, 4, 0, 0, 0, 0,168,241,127, 4, 0, 0, 0, 0, 8,232,127, 4, 0, 0, 0, 0,168,234,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,242,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +248,242,127, 4, 0, 0, 0, 0, 24,242,127, 4, 0, 0, 0, 0,200,233,127, 4, 0, 0, 0, 0, 56,234,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,242,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +104,243,127, 4, 0, 0, 0, 0,136,242,127, 4, 0, 0, 0, 0,120,232,127, 4, 0, 0, 0, 0, 24,235,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,243,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +216,243,127, 4, 0, 0, 0, 0,248,242,127, 4, 0, 0, 0, 0, 56,234,127, 4, 0, 0, 0, 0, 24,235,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,243,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 72,244,127, 4, 0, 0, 0, 0,104,243,127, 4, 0, 0, 0, 0,152,231,127, 4, 0, 0, 0, 0,136,235,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,244,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +184,244,127, 4, 0, 0, 0, 0,216,243,127, 4, 0, 0, 0, 0,168,234,127, 4, 0, 0, 0, 0,136,235,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,244,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 72,244,127, 4, 0, 0, 0, 0, 24,235,127, 4, 0, 0, 0, 0,136,235,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 40,245,127, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, +248,248,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,231,127, 4, 0, 0, 0, 0, 72,230,127, 4, 0, 0, 0, 0, +184,230,127, 4, 0, 0, 0, 0, 8,232,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, +188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 56, 30,128, 4, 0, 0, 0, 0, 56, 30,128, 4, 0, 0, 0, 0, 24,246,127, 4, 0, 0, 0, 0,136,247,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 24,246,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,136,247,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, + 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, +188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,136,247,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24,246,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, + 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, + 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,248,248,127, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8,254,127, 4, 0, 0, 0, 0, + 40,245,127, 4, 0, 0, 0, 0, 88,233,127, 4, 0, 0, 0, 0,232,232,127, 4, 0, 0, 0, 0,200,233,127, 4, 0, 0, 0, 0, + 40,231,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, + 4, 4,234, 0, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,252,127, 4, 0, 0, 0, 0, +200,252,127, 4, 0, 0, 0, 0,232,249,127, 4, 0, 0, 0, 0, 88,251,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +232,249,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 88,251,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0,245, 0, 0, 0, 19, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 88,251,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,249,127, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 88, 67,254,255,116,195, 0, 0, 0, 0, +217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0,245, 0,217, 0,245, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 0,140, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 96,141, 93, 7,160,138, 93, 7, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,126,196, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,255,191,126,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, - 12, 4, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, - 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, 13, 4,163, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,141, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,140, 93, 7, +200,252,127, 4, 0, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 3, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,142, 93, 7, 68, 65, 84, 65, 72, 3, 0, 0,192,142, 93, 7,159, 0, 0, 0, - 1, 0, 0, 0,193,198,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, - 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, - 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, - 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,160, 84, 89,188, 0, 0, 0, 0, 52,177,205,190,142, 74, 70, 62,166, 33,101, 63, - 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,188,173, 54, 64,136, 95,161,191,147,231,198, 63, - 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191,130, 71,181, 63,140,225, 88, 62, 26, 63,185, 62, - 35, 44,185, 62, 49,192,168,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,101, 98, 82, 64, - 0, 25, 95, 64,101, 47,135, 62,134, 86, 22, 63, 32,243, 11,188, 0, 0,160,179,195, 15,188,190,132, 75, 53, 62,216,125, 81, 63, - 0, 0,192,179,115, 77,100,193, 17,173,201, 64,181,148,248,192,202,247,159,192,233, 74, 87, 65,247, 46,190,192, 88,106,234, 64, - 44, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, - 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, - 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191,130, 71,181, 63,140,225, 88, 62, 26, 63,185, 62, - 35, 44,185, 62, 49,192,168,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,101, 98, 82, 64, - 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 8,254,127, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, +216, 3,128, 4, 0, 0, 0, 0,248,248,127, 4, 0, 0, 0, 0,216,229,127, 4, 0, 0, 0, 0,120,232,127, 4, 0, 0, 0, 0, +232,232,127, 4, 0, 0, 0, 0, 88,233,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, + 0, 0, 0, 0, 19, 1, 0, 0, 17, 17, 20, 4, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 3,128, 4, 0, 0, 0, 0, 72, 3,128, 4, 0, 0, 0, 0,248,254,127, 4, 0, 0, 0, 0,216, 1,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 0, 25, 95, 64, 0, 25, 95, 64, 0, 0, 0, 0, - 0, 0, 0, 0,116, 16, 50, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,248,254,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,104, 0,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, + 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, + 26, 0, 20, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,104, 0,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216, 1,128, 4, 0, 0, 0, 0, +248,254,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,122,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, + 0, 0,122,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0, +250, 0,203, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, + 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,250, 0, 0, 0, 4, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,216, 1,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +104, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67, 4, 0, 39,195, 0,224,180, 68, + 1, 0,224,194, 0, 0,176, 67, 39, 3, 0, 0, 56, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,250, 70, 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 56, 3, +250, 0, 39, 3,232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, 19, 4, 0, 0, + 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 3,250, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 72, 0, 0, 0, 72, 3,128, 4, 0, 0, 0, 0,178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,216, 3,128, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,136, 10,128, 4, 0, 0, 0, 0, + 8,254,127, 4, 0, 0, 0, 0, 56,234,127, 4, 0, 0, 0, 0,168,234,127, 4, 0, 0, 0, 0, 8,232,127, 4, 0, 0, 0, 0, +200,233,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, + 9, 9,130, 1,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 7,128, 4, 0, 0, 0, 0, +168, 7,128, 4, 0, 0, 0, 0,200, 4,128, 4, 0, 0, 0, 0, 56, 6,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +200, 4,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56, 6,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,209, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,193, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,181, 67, 0, 0,200, 65, 0,128,181, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,130, 1, 26, 0,130, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 56, 6,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 4,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0,126, 86, 5, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,130, 1,140, 1,130, 1,140, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0, +168, 7,128, 4, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,136, 10,128, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,216, 23,128, 4, 0, 0, 0, 0, +216, 3,128, 4, 0, 0, 0, 0, 24,235,127, 4, 0, 0, 0, 0,136,235,127, 4, 0, 0, 0, 0,168,234,127, 4, 0, 0, 0, 0, + 56,234,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, + 1, 1,167, 2,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 22,128, 4, 0, 0, 0, 0, + 88, 22,128, 4, 0, 0, 0, 0,120, 11,128, 4, 0, 0, 0, 0, 56, 17,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +120, 11,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,232, 12,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 56, 0,192, 41, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,166, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,167, 2, 26, 0,167, 2, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +232, 12,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 88, 14,128, 4, 0, 0, 0, 0,120, 11,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,213, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,140, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 88, 14,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,200, 15,128, 4, 0, 0, 0, 0,232, 12,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0, 47, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +200, 15,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56, 17,128, 4, 0, 0, 0, 0, 88, 14,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 23,196, 0, 0, 0, 0, +163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,112, 2,163, 0, 94, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123, 3, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 56, 17,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 15,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 18,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, +168, 18,128, 4, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,126,177,113, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 6, 63,156, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, + 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, + 88, 22,128, 4, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0,104,233,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,216, 23,128, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +136, 10,128, 4, 0, 0, 0, 0,120,232,127, 4, 0, 0, 0, 0,152,231,127, 4, 0, 0, 0, 0,136,235,127, 4, 0, 0, 0, 0, + 24,235,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, + 3, 3,212, 0,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 27,128, 4, 0, 0, 0, 0, +168, 27,128, 4, 0, 0, 0, 0,200, 24,128, 4, 0, 0, 0, 0, 56, 26,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +200, 24,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56, 26,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 83, 67, 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,212, 0, 26, 0,212, 0, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 56, 26,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 24,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 80, 66, 0, 0,119, 67, 0, 0,189,195, 0, 0, 0, 0, +195, 0, 0, 0,212, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,194, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,212, 0,140, 1,195, 0,122, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, +168, 27,128, 4, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,184,239, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,184,239, 9, 3, 0, 0, 0, 0, +223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 24, 29,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, + 24, 29,128, 4, 0, 0, 0, 0,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, + 19, 0, 0, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, + 21, 0, 1, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,230,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,136,238,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 88, 66,130, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,168,249,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,136,159,129, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,136,244,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,168,226,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,104,233,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,216,225,128, 4, 0, 0, 0, 0, + 83, 78, 0, 0,208, 0, 0, 0,200, 30,128, 4, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,184, 95,128, 4, 0, 0, 0, 0, +184,228,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116, +105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +232, 31,128, 4, 0, 0, 0, 0, 8, 38,128, 4, 0, 0, 0, 0,120, 38,128, 4, 0, 0, 0, 0, 24, 48,128, 4, 0, 0, 0, 0, +136, 48,128, 4, 0, 0, 0, 0,120, 88,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232, 31,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 88, 32,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 88, 32,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,200, 32,128, 4, 0, 0, 0, 0, +232, 31,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +200, 32,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 56, 33,128, 4, 0, 0, 0, 0, 88, 32,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56, 33,128, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,168, 33,128, 4, 0, 0, 0, 0,200, 32,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168, 33,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 24, 34,128, 4, 0, 0, 0, 0, 56, 33,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 24, 34,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136, 34,128, 4, 0, 0, 0, 0, +168, 33,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +136, 34,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,248, 34,128, 4, 0, 0, 0, 0, 24, 34,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,244, 3,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248, 34,128, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,104, 35,128, 4, 0, 0, 0, 0,136, 34,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 35,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +216, 35,128, 4, 0, 0, 0, 0,248, 34,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,216, 35,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72, 36,128, 4, 0, 0, 0, 0, +104, 35,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244, 3, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 72, 36,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,184, 36,128, 4, 0, 0, 0, 0,216, 35,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184, 36,128, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 40, 37,128, 4, 0, 0, 0, 0, 72, 36,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 40, 37,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +152, 37,128, 4, 0, 0, 0, 0,184, 36,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244, 3, 12, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,152, 37,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8, 38,128, 4, 0, 0, 0, 0, + 40, 37,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 8, 38,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 37,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,248, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120, 38,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,232, 38,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 32,128, 4, 0, 0, 0, 0, +200, 32,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232, 38,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 88, 39,128, 4, 0, 0, 0, 0,120, 38,128, 4, 0, 0, 0, 0, 88, 32,128, 4, 0, 0, 0, 0, +168, 33,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88, 39,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,200, 39,128, 4, 0, 0, 0, 0,232, 38,128, 4, 0, 0, 0, 0,200, 32,128, 4, 0, 0, 0, 0, + 24, 34,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200, 39,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 56, 40,128, 4, 0, 0, 0, 0, 88, 39,128, 4, 0, 0, 0, 0,168, 33,128, 4, 0, 0, 0, 0, + 24, 34,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56, 40,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,168, 40,128, 4, 0, 0, 0, 0,200, 39,128, 4, 0, 0, 0, 0, 24, 34,128, 4, 0, 0, 0, 0, +136, 34,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168, 40,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 24, 41,128, 4, 0, 0, 0, 0, 56, 40,128, 4, 0, 0, 0, 0, 56, 33,128, 4, 0, 0, 0, 0, +248, 34,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24, 41,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,136, 41,128, 4, 0, 0, 0, 0,168, 40,128, 4, 0, 0, 0, 0,232, 31,128, 4, 0, 0, 0, 0, +104, 35,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136, 41,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,248, 41,128, 4, 0, 0, 0, 0, 24, 41,128, 4, 0, 0, 0, 0,168, 33,128, 4, 0, 0, 0, 0, +104, 35,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248, 41,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,104, 42,128, 4, 0, 0, 0, 0,136, 41,128, 4, 0, 0, 0, 0,136, 34,128, 4, 0, 0, 0, 0, +216, 35,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104, 42,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,216, 42,128, 4, 0, 0, 0, 0,248, 41,128, 4, 0, 0, 0, 0,248, 34,128, 4, 0, 0, 0, 0, +216, 35,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216, 42,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 72, 43,128, 4, 0, 0, 0, 0,104, 42,128, 4, 0, 0, 0, 0,232, 31,128, 4, 0, 0, 0, 0, + 72, 36,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72, 43,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,184, 43,128, 4, 0, 0, 0, 0,216, 42,128, 4, 0, 0, 0, 0,248, 34,128, 4, 0, 0, 0, 0, + 72, 36,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184, 43,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 40, 44,128, 4, 0, 0, 0, 0, 72, 43,128, 4, 0, 0, 0, 0,104, 35,128, 4, 0, 0, 0, 0, +184, 36,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40, 44,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,152, 44,128, 4, 0, 0, 0, 0,184, 43,128, 4, 0, 0, 0, 0,216, 35,128, 4, 0, 0, 0, 0, +184, 36,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152, 44,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 8, 45,128, 4, 0, 0, 0, 0, 40, 44,128, 4, 0, 0, 0, 0, 72, 36,128, 4, 0, 0, 0, 0, +184, 36,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8, 45,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,120, 45,128, 4, 0, 0, 0, 0,152, 44,128, 4, 0, 0, 0, 0,248, 34,128, 4, 0, 0, 0, 0, + 40, 37,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120, 45,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,232, 45,128, 4, 0, 0, 0, 0, 8, 45,128, 4, 0, 0, 0, 0,136, 34,128, 4, 0, 0, 0, 0, + 40, 37,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232, 45,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 88, 46,128, 4, 0, 0, 0, 0,120, 45,128, 4, 0, 0, 0, 0, 24, 34,128, 4, 0, 0, 0, 0, +152, 37,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88, 46,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,200, 46,128, 4, 0, 0, 0, 0,232, 45,128, 4, 0, 0, 0, 0, 56, 33,128, 4, 0, 0, 0, 0, +152, 37,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200, 46,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 56, 47,128, 4, 0, 0, 0, 0, 88, 46,128, 4, 0, 0, 0, 0, 40, 37,128, 4, 0, 0, 0, 0, +152, 37,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56, 47,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,168, 47,128, 4, 0, 0, 0, 0,200, 46,128, 4, 0, 0, 0, 0,168, 33,128, 4, 0, 0, 0, 0, + 8, 38,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168, 47,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 24, 48,128, 4, 0, 0, 0, 0, 56, 47,128, 4, 0, 0, 0, 0,136, 34,128, 4, 0, 0, 0, 0, + 8, 38,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24, 48,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 47,128, 4, 0, 0, 0, 0,184, 36,128, 4, 0, 0, 0, 0, + 8, 38,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,136, 48,128, 4, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0, 88, 52,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 33,128, 4, 0, 0, 0, 0, + 88, 32,128, 4, 0, 0, 0, 0,200, 32,128, 4, 0, 0, 0, 0, 24, 34,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 40, 95,128, 4, 0, 0, 0, 0, 40, 95,128, 4, 0, 0, 0, 0,120, 49,128, 4, 0, 0, 0, 0, +232, 50,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120, 49,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +232, 50,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232, 50,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,120, 49,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 88, 52,128, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, +104, 57,128, 4, 0, 0, 0, 0,136, 48,128, 4, 0, 0, 0, 0,248, 34,128, 4, 0, 0, 0, 0, 40, 37,128, 4, 0, 0, 0, 0, +152, 37,128, 4, 0, 0, 0, 0, 56, 33,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 11, 2, 0, 0, 4, 4, 10, 1, 12, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 40, 56,128, 4, 0, 0, 0, 0, 40, 56,128, 4, 0, 0, 0, 0, 72, 53,128, 4, 0, 0, 0, 0,184, 54,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 72, 53,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,184, 54,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, + 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, + 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, + 31, 0, 10, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, +237, 1, 0, 0, 11, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,184, 54,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 53,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,132, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255,120, 67, +255,127,246,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 10, 1, +237, 1,249, 0,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,237, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 40, 56,128, 4, 0, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,146, 93, 7,160, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0,144,110,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,104, 57,128, 4, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0, 24, 63,128, 4, 0, 0, 0, 0, 88, 52,128, 4, 0, 0, 0, 0, 72, 36,128, 4, 0, 0, 0, 0, +184, 36,128, 4, 0, 0, 0, 0,216, 35,128, 4, 0, 0, 0, 0,248, 34,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,251, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 61,128, 4, 0, 0, 0, 0, 56, 61,128, 4, 0, 0, 0, 0, 88, 58,128, 4, 0, 0, 0, 0, +200, 59,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88, 58,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +200, 59,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200, 59,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88, 58,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 67, 0, 0, 0, 0, 0, 0, 48, 65, + 0, 0, 0, 0, 0, 0,245, 67, 0, 0, 0, 0, 0, 0,129, 67,234, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, + 2, 0, 0, 4, 10, 0,251, 1, 2, 1,234, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +249, 1, 0, 0,243, 3, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +251, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 1, 0, 0, 56, 61,128, 4, 0, 0, 0, 0,181, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 24, 63,128, 4, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0,104, 76,128, 4, 0, 0, 0, 0,104, 57,128, 4, 0, 0, 0, 0,184, 36,128, 4, 0, 0, 0, 0, + 8, 38,128, 4, 0, 0, 0, 0,136, 34,128, 4, 0, 0, 0, 0,216, 35,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 1, 1,251, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,232, 74,128, 4, 0, 0, 0, 0,232, 74,128, 4, 0, 0, 0, 0, 8, 64,128, 4, 0, 0, 0, 0, +200, 69,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8, 64,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +120, 65,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120, 65,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +232, 66,128, 4, 0, 0, 0, 0, 8, 64,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +249, 1, 0, 0,249, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0,132, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232, 66,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 88, 68,128, 4, 0, 0, 0, 0,120, 65,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, + 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88, 68,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +200, 69,128, 4, 0, 0, 0, 0,232, 66,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +243, 3, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200, 69,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88, 68,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +251, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 56, 71,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 56, 71,128, 4, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, + 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,240,182, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, + 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, +185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, +178,157,229, 62,242,252, 18,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62, +145,180,109,188,225,188,163, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, +217,236,191, 62, 54,117, 85, 63, 0,247, 70,188, 0,192, 32,182, 15,232,143,190,210,186, 10, 62, 44, 83, 32, 63, 0,192, 24, 54, +215,104, 25,196,133,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,158, 87,135,195,205,209,166, 67,151,254, 71, 66, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, +178,157,229, 62,242,252, 18,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62, +145,180,109,188,225,188,163, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, +138, 93,108, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,232, 74,128, 4, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104,233,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, + 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,104, 76,128, 4, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0, 24, 82,128, 4, 0, 0, 0, 0, 24, 63,128, 4, 0, 0, 0, 0,232, 31,128, 4, 0, 0, 0, 0, +104, 35,128, 4, 0, 0, 0, 0,184, 36,128, 4, 0, 0, 0, 0, 72, 36,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,248, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 80,128, 4, 0, 0, 0, 0, 56, 80,128, 4, 0, 0, 0, 0, 88, 77,128, 4, 0, 0, 0, 0, +200, 78,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88, 77,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +200, 78,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200, 78,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88, 77,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0, 65, 67, + 0, 0, 0, 0, 0,128,243, 67, 0, 0, 0, 0, 0, 0,129, 67,231, 1, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, + 2, 0, 0, 4, 10, 0,248, 1, 2, 1,231, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,247, 1, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 1, 0, 0, 56, 80,128, 4, 0, 0, 0, 0,181, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112,121,116,104,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 24, 82,128, 4, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0,120, 88,128, 4, 0, 0, 0, 0,104, 76,128, 4, 0, 0, 0, 0, 40, 37,128, 4, 0, 0, 0, 0, +136, 34,128, 4, 0, 0, 0, 0, 24, 34,128, 4, 0, 0, 0, 0,152, 37,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0,186, 2, 0, 0, 3, 3, 10, 1,174, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,232, 85,128, 4, 0, 0, 0, 0,232, 85,128, 4, 0, 0, 0, 0, 8, 83,128, 4, 0, 0, 0, 0, +120, 84,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8, 83,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +120, 84,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,149, 67, 0, 0,200, 65, 0,128,149, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0, 10, 1, 26, 0, 10, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0, 38, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120, 84,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 83,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,121, 67, 0, 0, 2,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, + 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, + 0, 0, 0, 4, 6, 0, 10, 1,148, 0,249, 0,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +245, 3, 0, 0,254, 4, 0, 0, 39, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 1,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,232, 85,128, 4, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 71, 36, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 68, 65, 84, 65, 16, 0, 0, 0, 88, 71, 36, 4, 0, 0, 0, 0,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, + 88, 87,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 88, 87,128, 4, 0, 0, 0, 0,222, 0, 0, 0, 13, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, + 20, 0, 0, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,200,230,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,136,238,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 88, 66,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,168,249,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,136,159,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,136,244,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,168,226,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,104,233,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,216,225,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,120, 88,128, 4, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 82,128, 4, 0, 0, 0, 0,104, 35,128, 4, 0, 0, 0, 0, +168, 33,128, 4, 0, 0, 0, 0, 8, 38,128, 4, 0, 0, 0, 0,184, 36,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 9, 9,248, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 72, 92,128, 4, 0, 0, 0, 0, 72, 92,128, 4, 0, 0, 0, 0,104, 89,128, 4, 0, 0, 0, 0, +216, 90,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 89,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +216, 90,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 73, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216, 90,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,104, 89,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68, +236,140, 21, 68, 20, 51,102, 68,120, 83, 49, 67, 68,214,212, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, + 0, 0, 0, 4, 10, 0,248, 1,132, 1,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,247, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0, 72, 92,128, 4, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,205,204,204, 61,231, 1, 0, 0,243, 1, 0, 0,122, 1, 0, 0,124, 1, 0, 0,231, 1, 0, 0,243, 1, 0, 0, + 4, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,184, 95,128, 4, 0, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,168,161,128, 4, 0, 0, 0, 0,200, 30,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 96,128, 4, 0, 0, 0, 0,232, 99,128, 4, 0, 0, 0, 0, + 88,100,128, 4, 0, 0, 0, 0,184,104,128, 4, 0, 0, 0, 0, 40,105,128, 4, 0, 0, 0, 0,200,147,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +216, 96,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72, 97,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72, 97,128, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,184, 97,128, 4, 0, 0, 0, 0,216, 96,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184, 97,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 40, 98,128, 4, 0, 0, 0, 0, 72, 97,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 40, 98,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152, 98,128, 4, 0, 0, 0, 0, +184, 97,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +152, 98,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8, 99,128, 4, 0, 0, 0, 0, 40, 98,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8, 99,128, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,120, 99,128, 4, 0, 0, 0, 0,152, 98,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,120, 99,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +232, 99,128, 4, 0, 0, 0, 0, 8, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 2,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,232, 99,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +120, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 88,100,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200,100,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 97,128, 4, 0, 0, 0, 0,184, 97,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +200,100,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56,101,128, 4, 0, 0, 0, 0, 88,100,128, 4, 0, 0, 0, 0, + 72, 97,128, 4, 0, 0, 0, 0,152, 98,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 56,101,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168,101,128, 4, 0, 0, 0, 0,200,100,128, 4, 0, 0, 0, 0, +184, 97,128, 4, 0, 0, 0, 0, 8, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +168,101,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24,102,128, 4, 0, 0, 0, 0, 56,101,128, 4, 0, 0, 0, 0, +152, 98,128, 4, 0, 0, 0, 0, 8, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 24,102,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136,102,128, 4, 0, 0, 0, 0,168,101,128, 4, 0, 0, 0, 0, +152, 98,128, 4, 0, 0, 0, 0,120, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +136,102,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248,102,128, 4, 0, 0, 0, 0, 24,102,128, 4, 0, 0, 0, 0, +216, 96,128, 4, 0, 0, 0, 0,232, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +248,102,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104,103,128, 4, 0, 0, 0, 0,136,102,128, 4, 0, 0, 0, 0, +216, 96,128, 4, 0, 0, 0, 0,152, 98,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +104,103,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,103,128, 4, 0, 0, 0, 0,248,102,128, 4, 0, 0, 0, 0, +120, 99,128, 4, 0, 0, 0, 0,232, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +216,103,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,104,128, 4, 0, 0, 0, 0,104,103,128, 4, 0, 0, 0, 0, + 8, 99,128, 4, 0, 0, 0, 0,120, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 72,104,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,104,128, 4, 0, 0, 0, 0,216,103,128, 4, 0, 0, 0, 0, + 40, 98,128, 4, 0, 0, 0, 0,232, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +184,104,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,104,128, 4, 0, 0, 0, 0, + 40, 98,128, 4, 0, 0, 0, 0, 8, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 40,105,128, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,248,108,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152, 98,128, 4, 0, 0, 0, 0, 72, 97,128, 4, 0, 0, 0, 0,184, 97,128, 4, 0, 0, 0, 0, 8, 99,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,161,128, 4, 0, 0, 0, 0, 24,161,128, 4, 0, 0, 0, 0, + 24,106,128, 4, 0, 0, 0, 0,136,107,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24,106,128, 4, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,136,107,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,107,128, 4, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,106,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, + 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, + 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, + 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,248,108,128, 4, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0,200,147,128, 4, 0, 0, 0, 0, 40,105,128, 4, 0, 0, 0, 0,216, 96,128, 4, 0, 0, 0, 0, +152, 98,128, 4, 0, 0, 0, 0,120, 99,128, 4, 0, 0, 0, 0,232, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 6, 6,132, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56,114,128, 4, 0, 0, 0, 0, 56,114,128, 4, 0, 0, 0, 0,232,109,128, 4, 0, 0, 0, 0, +200,112,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232,109,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 88,111,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 33, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,132, 2, 26, 0,132, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +132, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88,111,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +200,112,128, 4, 0, 0, 0, 0,232,109,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 67, 0, 0, 40,196, 0, 0, 0, 0, + 0, 0, 0, 0,254,255, 74, 67,254, 63, 40,196, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, + 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,220, 0,161, 2,203, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +220, 0,161, 2, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200,112,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88,111,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, +102,102, 38,190,205,204,148, 63, 51, 51, 13,191,154,153,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1, 0, 0, 0, 0, 0, 0,161, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +220, 0, 0, 0,131, 2, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +168, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 33, 0, 0, 56,114,128, 4, 0, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, + 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,200,147,128, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,248,108,128, 4, 0, 0, 0, 0,232, 99,128, 4, 0, 0, 0, 0,120, 99,128, 4, 0, 0, 0, 0, + 8, 99,128, 4, 0, 0, 0, 0, 40, 98,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0,186, 2, 0, 0, 1, 1,122, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152,159,128, 4, 0, 0, 0, 0,152,159,128, 4, 0, 0, 0, 0,184,148,128, 4, 0, 0, 0, 0,120,154,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,184,148,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 40,150,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 30, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,122, 2, + 26, 0,122, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 2, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 40,150,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,152,151,128, 4, 0, 0, 0, 0, +184,148,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 67, 0, 64, 10,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 64, 10,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, + 41, 2,143, 0, 41, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0, +146, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 41, 2, 0, 0, 5, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,152,151,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 8,153,128, 4, 0, 0, 0, 0, + 40,150,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,242,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, + 91, 90,242,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, +120, 0,143, 0,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0, + 26, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 0, 0, 6, 0, + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 8,153,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,120,154,128, 4, 0, 0, 0, 0, +152,151,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, +255,191,126,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, + 13, 4,163, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0, + 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,120,154,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8,153,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 3, 0, 0,254, 4, 0, 0, + 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218, 1,161, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,155,128, 4, 0, 0, 0, 0, + 68, 65, 84, 65,104, 3, 0, 0,232,155,128, 4, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,193,198,198, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190, +184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63, +160, 84, 89,188, 0, 0, 0, 0, 52,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, + 43, 61,228, 62, 0, 0, 0, 0,188,173, 54, 64,136, 95,161,191,147,231,198, 63, 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, + 48,180, 81,191,184,158, 81,191,130, 71,181, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188,206,156,122, 63, +138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,101, 98, 82, 64, 0, 25, 95, 64,101, 47,135, 62,134, 86, 22, 63, + 32,243, 11,188, 0, 0,160,179,195, 15,188,190,132, 75, 53, 62,216,125, 81, 63, 0, 0,192,179,115, 77,100,193, 17,173,201, 64, +181,148,248,192,202,247,159,192,233, 74, 87, 65,247, 46,190,192, 88,106,234, 64, 44, 8,160, 64, 68,239,209, 62, 51,177,205,190, +184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, + 48,180, 81,191,184,158, 81,191,130, 71,181, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188,206,156,122, 63, +138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,101, 98, 82, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190, +237,203,148,190, 3,236,234,190, 0, 25, 95, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0,116, 16, 50, 59, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 1, 0, 0,152,159,128, 4, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104,233,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, -104,148, 93, 7,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248, 82, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105, -100,101,111, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88,149, 93, 7,128,154, 93, 7,248,154, 93, 7,120,163, 93, 7,248,163, 93, 7,176,187, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, -208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 88,149, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,208,149, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,208,149, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, 72,150, 93, 7, 88,149, 93, 7, 0, 0, 0, 0, - 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,150, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,192,150, 93, 7, -208,149, 93, 7, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192,150, 93, 7,196, 0, 0, 0, - 1, 0, 0, 0, 56,151, 93, 7, 72,150, 93, 7, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 56,151, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,176,151, 93, 7,192,150, 93, 7, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,176,151, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, 40,152, 93, 7, 56,151, 93, 7, 0, 0, 0, 0, -254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,152, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,160,152, 93, 7, -176,151, 93, 7, 0, 0, 0, 0,254, 4, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,152, 93, 7,196, 0, 0, 0, - 1, 0, 0, 0, 24,153, 93, 7, 40,152, 93, 7, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 24,153, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,144,153, 93, 7,160,152, 93, 7, 0, 0, 0, 0, 52, 2,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,144,153, 93, 7,196, 0, 0, 0, 1, 0, 0, 0, 8,154, 93, 7, 24,153, 93, 7, 0, 0, 0, 0, - 0, 0, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8,154, 93, 7,196, 0, 0, 0, 1, 0, 0, 0,128,154, 93, 7, -144,153, 93, 7, 0, 0, 0, 0, 52, 2, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128,154, 93, 7,196, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 8,154, 93, 7, 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -248,154, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,120,155, 93, 7, 0, 0, 0, 0,208,149, 93, 7, 72,150, 93, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,155, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,248,155, 93, 7,248,154, 93, 7, -208,149, 93, 7, 56,151, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,155, 93, 7,197, 0, 0, 0, - 1, 0, 0, 0,120,156, 93, 7,120,155, 93, 7, 72,150, 93, 7,176,151, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,120,156, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,248,156, 93, 7,248,155, 93, 7, 56,151, 93, 7,176,151, 93, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,156, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,120,157, 93, 7, -120,156, 93, 7,176,151, 93, 7, 40,152, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,157, 93, 7, -197, 0, 0, 0, 1, 0, 0, 0,248,157, 93, 7,248,156, 93, 7, 88,149, 93, 7,160,152, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,248,157, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,120,158, 93, 7,120,157, 93, 7, 56,151, 93, 7, - 24,153, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,158, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, -248,158, 93, 7,248,157, 93, 7,160,152, 93, 7,144,153, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -248,158, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,120,159, 93, 7,120,158, 93, 7,144,153, 93, 7, 8,154, 93, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,159, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,248,159, 93, 7,248,158, 93, 7, - 24,153, 93, 7, 8,154, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,159, 93, 7,197, 0, 0, 0, - 1, 0, 0, 0,120,160, 93, 7,120,159, 93, 7, 40,152, 93, 7,128,154, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,120,160, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,248,160, 93, 7,248,159, 93, 7,192,150, 93, 7,128,154, 93, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,160, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,120,161, 93, 7, -120,160, 93, 7,160,152, 93, 7,128,154, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,161, 93, 7, -197, 0, 0, 0, 1, 0, 0, 0,248,161, 93, 7,248,160, 93, 7, 88,149, 93, 7,192,150, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,248,161, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,120,162, 93, 7,120,161, 93, 7,176,151, 93, 7, - 24,153, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,162, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, -248,162, 93, 7,248,161, 93, 7, 40,152, 93, 7, 8,154, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -248,162, 93, 7,197, 0, 0, 0, 1, 0, 0, 0,120,163, 93, 7,120,162, 93, 7, 56,151, 93, 7,144,153, 93, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,163, 93, 7,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248,162, 93, 7, - 40,152, 93, 7,144,153, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,248,163, 93, 7,199, 0, 0, 0, - 1, 0, 0, 0,128,167, 93, 7, 0, 0, 0, 0, 56,151, 93, 7,208,149, 93, 7, 72,150, 93, 7,176,151, 93, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,168,161,128, 4, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,184, 95,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 82, 86,105,100,101,111, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,200,162,128, 4, 0, 0, 0, 0,152,167,128, 4, 0, 0, 0, 0, 8,168,128, 4, 0, 0, 0, 0, +120,175,128, 4, 0, 0, 0, 0,232,175,128, 4, 0, 0, 0, 0,248,200,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200,162,128, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 56,163,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,163,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +168,163,128, 4, 0, 0, 0, 0,200,162,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,168,163,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24,164,128, 4, 0, 0, 0, 0, + 56,163,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 24,164,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136,164,128, 4, 0, 0, 0, 0,168,163,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136,164,128, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,248,164,128, 4, 0, 0, 0, 0, 24,164,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248,164,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +104,165,128, 4, 0, 0, 0, 0,136,164,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,104,165,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,216,165,128, 4, 0, 0, 0, 0, +248,164,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +216,165,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72,166,128, 4, 0, 0, 0, 0,104,165,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,166,128, 4, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,184,166,128, 4, 0, 0, 0, 0,216,165,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 52, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,166,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 40,167,128, 4, 0, 0, 0, 0, 72,166,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 40,167,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,167,128, 4, 0, 0, 0, 0, +184,166,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +152,167,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,167,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,168,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,120,168,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,163,128, 4, 0, 0, 0, 0, +168,163,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,168,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,232,168,128, 4, 0, 0, 0, 0, 8,168,128, 4, 0, 0, 0, 0, 56,163,128, 4, 0, 0, 0, 0, +136,164,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,168,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 88,169,128, 4, 0, 0, 0, 0,120,168,128, 4, 0, 0, 0, 0,168,163,128, 4, 0, 0, 0, 0, +248,164,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,169,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,200,169,128, 4, 0, 0, 0, 0,232,168,128, 4, 0, 0, 0, 0,136,164,128, 4, 0, 0, 0, 0, +248,164,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,169,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 56,170,128, 4, 0, 0, 0, 0, 88,169,128, 4, 0, 0, 0, 0,248,164,128, 4, 0, 0, 0, 0, +104,165,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,170,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,168,170,128, 4, 0, 0, 0, 0,200,169,128, 4, 0, 0, 0, 0,200,162,128, 4, 0, 0, 0, 0, +216,165,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,170,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 24,171,128, 4, 0, 0, 0, 0, 56,170,128, 4, 0, 0, 0, 0,136,164,128, 4, 0, 0, 0, 0, + 72,166,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,171,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,136,171,128, 4, 0, 0, 0, 0,168,170,128, 4, 0, 0, 0, 0,216,165,128, 4, 0, 0, 0, 0, +184,166,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,171,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,248,171,128, 4, 0, 0, 0, 0, 24,171,128, 4, 0, 0, 0, 0,184,166,128, 4, 0, 0, 0, 0, + 40,167,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,171,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,104,172,128, 4, 0, 0, 0, 0,136,171,128, 4, 0, 0, 0, 0, 72,166,128, 4, 0, 0, 0, 0, + 40,167,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,172,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,216,172,128, 4, 0, 0, 0, 0,248,171,128, 4, 0, 0, 0, 0,104,165,128, 4, 0, 0, 0, 0, +152,167,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,172,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 72,173,128, 4, 0, 0, 0, 0,104,172,128, 4, 0, 0, 0, 0, 24,164,128, 4, 0, 0, 0, 0, +152,167,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,173,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,184,173,128, 4, 0, 0, 0, 0,216,172,128, 4, 0, 0, 0, 0,216,165,128, 4, 0, 0, 0, 0, +152,167,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,173,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 40,174,128, 4, 0, 0, 0, 0, 72,173,128, 4, 0, 0, 0, 0,200,162,128, 4, 0, 0, 0, 0, + 24,164,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,174,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,152,174,128, 4, 0, 0, 0, 0,184,173,128, 4, 0, 0, 0, 0,248,164,128, 4, 0, 0, 0, 0, + 72,166,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,174,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 8,175,128, 4, 0, 0, 0, 0, 40,174,128, 4, 0, 0, 0, 0,104,165,128, 4, 0, 0, 0, 0, + 40,167,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,175,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,120,175,128, 4, 0, 0, 0, 0,152,174,128, 4, 0, 0, 0, 0,136,164,128, 4, 0, 0, 0, 0, +184,166,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,175,128, 4, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,175,128, 4, 0, 0, 0, 0,104,165,128, 4, 0, 0, 0, 0, +184,166,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,232,175,128, 4, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0,184,179,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,164,128, 4, 0, 0, 0, 0, + 56,163,128, 4, 0, 0, 0, 0,168,163,128, 4, 0, 0, 0, 0,248,164,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 56,195, 93, 7, 56,195, 93, 7,192,164, 93, 7, 32,166, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,164, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 32,166, 93, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0,232,208,128, 4, 0, 0, 0, 0,232,208,128, 4, 0, 0, 0, 0,216,176,128, 4, 0, 0, 0, 0, + 72,178,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216,176,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 72,178,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,166, 93, 7,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,192,164, 93, 7, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, - 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,128,167, 93, 7,199, 0, 0, 0, 1, 0, 0, 0, 40,172, 93, 7,248,163, 93, 7, 88,149, 93, 7,160,152, 93, 7, -128,154, 93, 7,192,150, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,255, 4, - 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,171, 93, 7, 8,171, 93, 7, 72,168, 93, 7,168,169, 93, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,168, 93, 7,200, 0, 0, 0, - 1, 0, 0, 0,168,169, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, - 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 72,178,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,216,176,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184,179,128, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, +168,184,128, 4, 0, 0, 0, 0,232,175,128, 4, 0, 0, 0, 0,200,162,128, 4, 0, 0, 0, 0,216,165,128, 4, 0, 0, 0, 0, +152,167,128, 4, 0, 0, 0, 0, 24,164,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,255, 4, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +136,183,128, 4, 0, 0, 0, 0,136,183,128, 4, 0, 0, 0, 0,168,180,128, 4, 0, 0, 0, 0, 24,182,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,168,180,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 24,182,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, + 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, + 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,168,169, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72,168, 93, 7, 0, 0, 64,192, 0, 0,126, 67, - 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, - 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, - 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 8,171, 93, 7,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 24,182,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +168,180,128, 4, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, + 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, + 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,255, 4, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,216, 0, 0, 0,136,183,128, 4, 0, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, - 40,172, 93, 7,199, 0, 0, 0, 1, 0, 0, 0,176,179, 93, 7,128,167, 93, 7,160,152, 93, 7,144,153, 93, 7, 40,152, 93, 7, -128,154, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 83, 1, 0, 0, 8, 8,255, 4, 19, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,178, 93, 7,112,178, 93, 7,240,172, 93, 7, 16,177, 93, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,172, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, - 80,174, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 96,191, 68, 0, 0,200, 65, - 0, 96,191, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, - 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, - 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 80,174, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,176,175, 93, 7,240,172, 93, 7, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,121,195, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,121,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0, -248, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, -248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,249, 0,203, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,168,184,128, 4, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0,152,192,128, 4, 0, 0, 0, 0,184,179,128, 4, 0, 0, 0, 0,216,165,128, 4, 0, 0, 0, 0, +184,166,128, 4, 0, 0, 0, 0,104,165,128, 4, 0, 0, 0, 0,152,167,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 83, 1, 0, 0, 8, 8,255, 4, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88,191,128, 4, 0, 0, 0, 0, 88,191,128, 4, 0, 0, 0, 0,152,185,128, 4, 0, 0, 0, 0, +232,189,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,185,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 8,187,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 96,191, 68, 0, 0,200, 65, 0, 96,191, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8,187,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +120,188,128, 4, 0, 0, 0, 0,152,185,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,121,195, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,121,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, + 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,220, 0,249, 0,203, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4, 0, 0,254, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0,249, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,175, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 16,177, 93, 7, 80,174, 93, 7, - 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70, -172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 83, 1, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120,188,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +232,189,128, 4, 0, 0, 0, 0, 8,187,128, 4, 0, 0, 0, 0, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, + 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,177, 93, 7,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,176,175, 93, 7, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, - 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, - 34, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 0, 0, 32, 65, - 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, - 8, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, - 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4,249, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 34, 4, 0, 0, 83, 1, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232,189,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,120,188,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, + 18, 0, 0, 0, 34, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, + 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 8, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 34, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 88,191,128, 4, 0, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -216, 0, 0, 0,112,178, 93, 7,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,176,179, 93, 7,199, 0, 0, 0, 1, 0, 0, 0,176,187, 93, 7, - 40,172, 93, 7,144,153, 93, 7, 56,151, 93, 7, 24,153, 93, 7, 8,154, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, - 85, 1, 0, 0,186, 2, 0, 0, 2, 2, 52, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,185, 93, 7, -248,185, 93, 7,120,180, 93, 7,152,184, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,120,180, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,216,181, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 13, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 52, 2, 26, 0, 52, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 52, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,181, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 56,183, 93, 7, -120,180, 93, 7, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,157,195, - 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0, 76, 1,200, 0, - 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,111, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 76, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,183, 93, 7, -200, 0, 0, 0, 1, 0, 0, 0,152,184, 93, 7,216,181, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,152,192,128, 4, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0,248,200,128, 4, 0, 0, 0, 0,168,184,128, 4, 0, 0, 0, 0,184,166,128, 4, 0, 0, 0, 0, +136,164,128, 4, 0, 0, 0, 0, 72,166,128, 4, 0, 0, 0, 0, 40,167,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, 2, 2, 52, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 72,199,128, 4, 0, 0, 0, 0, 72,199,128, 4, 0, 0, 0, 0,136,193,128, 4, 0, 0, 0, 0, +216,197,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,193,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +248,194,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 13, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0, 52, 2, 26, 0, 52, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 52, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,194,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +104,196,128, 4, 0, 0, 0, 0,136,193,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,157,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, + 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, + 0, 0, 0, 4, 6, 0,217, 0, 76, 1,200, 0, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,216, 0, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +217, 0, 76, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, - 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,152,184, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,183, 93, 7, 0, 0, 16,193, - 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, - 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, - 90, 1, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, - 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,248,185, 93, 7,164, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104,196,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +216,197,128, 4, 0, 0, 0, 0,248,194,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,187, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,187, 93, 7, 24, 1, 0, 0, - 1, 0, 0, 0,208,195, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,176,187, 93, 7,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,179, 93, 7, 8,154, 93, 7, 24,153, 93, 7, -176,151, 93, 7, 40,152, 93, 7, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, 8, 8,202, 2, -102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,193, 93, 7,248,193, 93, 7,120,188, 93, 7,152,192, 93, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,188, 93, 7,200, 0, 0, 0, - 1, 0, 0, 0,216,189, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 15, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0,128, 50, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 64, 50, 68, - 0, 0,200, 65, 0, 64, 50, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,202, 2, 26, 0,202, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, - 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,216,189, 93, 7,200, 0, 0, 0, 1, 0, 0, 0, 56,191, 93, 7,120,188, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 51, 2, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216,197,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,104,196,128, 4, 0, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, + 18, 0, 0, 0, 90, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, +111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +217, 0, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 72,199,128, 4, 0, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,136,200,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,200,128, 4, 0, 0, 0, 0, + 24, 1, 0, 0, 1, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,248,200,128, 4, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,192,128, 4, 0, 0, 0, 0, 40,167,128, 4, 0, 0, 0, 0, + 72,166,128, 4, 0, 0, 0, 0,248,164,128, 4, 0, 0, 0, 0,104,165,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, 8, 8,202, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,168,207,128, 4, 0, 0, 0, 0,168,207,128, 4, 0, 0, 0, 0,232,201,128, 4, 0, 0, 0, 0, + 56,206,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232,201,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 88,203,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 15, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0,128, 50, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 64, 50, 68, 0, 0,200, 65, 0, 64, 50, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,202, 2, 26, 0,202, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +202, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,191, 93, 7,200, 0, 0, 0, 1, 0, 0, 0,152,192, 93, 7, -216,189, 93, 7, 0, 0,112,195, 0, 0,112, 67, 0, 0, 7,195, 0, 0, 7, 67,105, 42,145,196,105, 42,145, 68, 0, 0, 7,196, - 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, - 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 4, 0, 0,202, 2, 76, 1,202, 2, - 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 76, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,192, 93, 7, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,191, 93, 7, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88,203,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +200,204,128, 4, 0, 0, 0, 0,232,201,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200,204,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 56,206,128, 4, 0, 0, 0, 0, 88,203,128, 4, 0, 0, 0, 0, 0, 0,112,195, 0, 0,112, 67, 0, 0, 7,195, 0, 0, 7, 67, +105, 42,145,196,105, 42,145, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 75, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 4, 0, 0,202, 2, 76, 1,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 2, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +202, 2, 76, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56,206,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,200,204,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,216, 0, 0, 0,248,193, 93, 7,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,168,207,128, 4, 0, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 0, 0,120, 5, 0, 0,208,195, 93, 7,157, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99,101,110,101, 0,116, 97,103,101, 0, 97,105,110, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,201, 93, 7, 0, 0, 0, 0,144,110,103, 7, 40,108,103, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 48,204, 93, 7, 48,205, 93, 7, 48,204, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 0, 0, 8, 6, 0, 0,120,209,128, 4, 0, 0, 0, 0, +157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99,101,110,101, 0,116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,200,215,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,233,128, 4, 0, 0, 0, 0, +200,230,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,217,128, 4, 0, 0, 0, 0, +184,218,128, 4, 0, 0, 0, 0,216,217,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -176,205, 93, 7,160, 35, 81, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 40,219,128, 4, 0, 0, 0, 0,104, 7, 9, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 50, 0,141, 0,128, 7, - 56, 4, 8, 0, 8, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, 90, 0, 1, 0, 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,176,211, 93, 7,176,211, 93, 7, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 1, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +100, 0, 0, 0,100, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 50, 0,141, 0,128, 7, 56, 4, 8, 0, + 8, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, 90, 0, 1, 0, 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 56,225,128, 4, 0, 0, 0, 0, 56,225,128, 4, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 1, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,116,109,112, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 5, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 5, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 6, 0, 16, 0, 0, 0,128, 63, 0, 0,128, 63,173, 2, 95, 0,154,153,217, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0, -180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, 68, 69, 82, 95, 82, 69, 78, 68, 69, 82, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63,102,166,171, 67, 0, 0,128, 63, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,212, 93, 7, 0, 0, 0, 0, - 0, 0, 0, 0,120,140,100, 3, 1, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 32, 0, 32, 0, 1, 0, 0, 0, - 0, 0, 0, 0,128, 0, 5, 0, 60, 0, 5, 0, 1, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4,205,204,204, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0, -176,201, 93, 7, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63, +205,204, 76, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 0, 16, 0, 0, 0,128, 63, 0, 0,128, 63,173, 2, 95, 0,154,153,217, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, 68, 69, 82, 95, + 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63, +102,166,171, 67, 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 34, 60, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,104, 68, 10, 3, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96,202, 93, 7, 96,202, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0, - 96,202, 93, 7, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,110,101,116,119,111,114,107, 95, -114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16,203, 93, 7, 16,203, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0, - 16,203, 93, 7, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,101,114,118,101,114, 95, 97, -100,100,114,101,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,203, 93, 7, +205,204, 28, 65, 0, 0, 0, 0, 32, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 5, 0, 60, 0, 5, 0, 1, 0, 5, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4, +205,204,204, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +195,245, 28,193, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,200,215,128, 4, 0, 0, 0, 0, + 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,120,216,128, 4, 0, 0, 0, 0,120,216,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,120,216,128, 4, 0, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,110,101,116,119,111,114,107, 95,114,101,110,100, +101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 40,217,128, 4, 0, 0, 0, 0, 40,217,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 96, 0, 0, 0, 40,217,128, 4, 0, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,101,114,118,101,114, 95, 97,100,100,114,101,115,115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,237, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, -192,203, 93, 7, 0, 0, 0, 0, 1, 0, 0, 0, 91,100,101,102, 97,117,108,116, 93, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0, - 48,204, 93, 7,133, 0, 0, 0, 1, 0, 0, 0,176,204, 93, 7, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, -119, 0,118, 0,208,114,103, 7, 68, 65, 84, 65, 28, 0, 0, 0,176,204, 93, 7,133, 0, 0, 0, 1, 0, 0, 0, 48,205, 93, 7, - 48,204, 93, 7, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0,224, 46,170, 2, 8,120,103, 7, 68, 65, 84, 65, 28, 0, 0, 0, - 48,205, 93, 7,133, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,204, 93, 7, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, -224, 46,241, 1,144,110,103, 7, 68, 65, 84, 65,144, 1, 0, 0,176,205, 93, 7,153, 0, 0, 0, 1, 0, 0, 0,168,207, 93, 7, -184,208, 93, 7,200,209, 93, 7, 0, 0,128, 63, 1, 0, 1, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63, -111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, 32, 0, 32, 0, 32, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,211, 93, 7, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, - 5, 0,255,255, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,200, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8,237, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 91,100,101,102, 97,117,108,116, 93, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,216,217,128, 4, 0, 0, 0, 0,133, 0, 0, 0, 1, 0, 0, 0, 72,218,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,200, 2,231, 1,136,238,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 72,218,128, 4, 0, 0, 0, 0,133, 0, 0, 0, 1, 0, 0, 0,184,218,128, 4, 0, 0, 0, 0,216,217,128, 4, + 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0,152, 3, 37, 3,136,244,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,184,218,128, 4, 0, 0, 0, 0,133, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,218,128, 4, + 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,157, 0, 72, 2,104,233,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, +184, 1, 0, 0, 40,219,128, 4, 0, 0, 0, 0,153, 0, 0, 0, 1, 0, 0, 0, 40,221,128, 4, 0, 0, 0, 0, 56,222,128, 4, + 0, 0, 0, 0, 72,223,128, 4, 0, 0, 0, 0, 0, 0,128, 63, 1, 0, 1, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, + 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, 32, 0, 32, 0, 32, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,200,224,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 2, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 10,215, 35, 60, -205,204,204, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 0,205,204,204, 61,205,204,204, 61,102,102,166, 63, 0, 0,192, 63, - 0, 0,240, 65, 72,225,122, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, + 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 10,215, 35, 60,205,204,204, 61, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 0,205,204,204, 61,205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, + 72,225,122, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 44, 0, 0, 0,168,207, 93, 7,152, 0, 0, 0, 1, 0, 0, 0, - 56,208, 93, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0, 56,208, 93, 7, 0, 0, 0, 0, 1, 0, 0, 0, - 32, 13,105, 7, 48,208,104, 7,224, 59,105, 7, 96, 17,105, 7, 32,218,104, 7,224, 8,105, 7, 32,235,104, 7, 68, 65, 84, 65, - 44, 0, 0, 0,184,208, 93, 7,152, 0, 0, 0, 1, 0, 0, 0, 72,209, 93, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, -200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 28, 0, 0, 0, 72,209, 93, 7, 0, 0, 0, 0, 1, 0, 0, 0, 32, 13,105, 7, 48,208,104, 7,224, 59,105, 7, 96, 17,105, 7, - 32,218,104, 7,224, 8,105, 7, 32,235,104, 7, 68, 65, 84, 65, 96, 0, 0, 0,200,209, 93, 7,151, 0, 0, 0, 1, 0, 0, 0, -144,210, 93, 7, 5, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,255,100,100,128, 1, 0, 0, 0,129, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0,140,182,110, 66,132,188, 29, 65,150,123, 87, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 68, 0, 0, 0,144,210, 93, 7, 0, 0, 0, 0, 1, 0, 0, 0,224,213,104, 7, 96,222,104, 7,224,230,104, 7, -160,243,104, 7,224,247,104, 7,160, 38,105, 7, 32, 47,105, 7, 96, 51,105, 7, 32, 64,105, 7, 32,252,104, 7, 96, 0,105, 7, -160, 4,105, 7,160, 21,105, 7,224, 25,105, 7, 32, 30,105, 7, 96, 34,105, 7, 96, 68,105, 7, 68, 65, 84, 65, 16, 0, 0, 0, - 56,211, 93, 7, 0, 0, 0, 0, 1, 0, 0, 0, 96,239,104, 7,160, 55,105, 7,160,226,104, 7,224, 42,105, 7, 68, 65, 84, 65, - 72, 0, 0, 0,176,211, 93, 7,139, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 76, 97, -121,101,114, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 73, 77, 0, 0,156, 1, 0, 0, -224,212, 93, 7, 31, 0, 0, 0, 1, 0, 0, 0, 56,120, 94, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, - 46, 99,108, 97,121, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46, 99,108, 97,121, 46,112,110,103, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,214, 93, 7, 0, 0, 0, 0,176, 71, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,224,214, 93, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, - 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,104,215, 93, 7,208,231, 93, 7, 68, 65, 84, 65, - 0, 16, 0, 0,104,215, 93, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0,208,231, 93, 7, 0, 0, 0, 0, - 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 61, 60, 60,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 62, 62, 62,255, 61, 61, 61,255, 84, 84, 84,255,103,104,104,255,103,103,103,255,102,102,103,255,101,101,102,255,101,101,101,255, -101,101,101,255,100,100,100,255,100,100,100,255,100,100,100,255,100,100,100,255,100,100,100,255,100,100,100,255,100,100,100,255, -100,100,101,255,100,101,101,255,101,101,101,255,101,101,101,255,101,101,102,255,101,101,101,255,101,101,101,255,101,101,101,255, -101,101,101,255,100,100,100,255, 99, 99,100,255, 99, 99, 99,255, 99, 99, 99,255, 99, 99, 99,255, 99, 99, 99,255, 99, 99, 99,255, - 99, 98, 99,255, 98, 98, 99,255, 98, 98, 99,255, 98, 98, 99,255, 99, 99, 99,255, 99, 99,100,255,100,100,101,255,101,101,101,255, -101,101,102,255,102,102,103,255,103,103,103,255,103,104,104,255,104,105,105,255,105,105,106,255,106,106,107,255,106,106,107,255, -106,106,107,255,106,106,107,255,105,106,106,255,104,105,105,255,101,102,102,255, 97, 97, 97,255, 91, 90, 90,255, 84, 83, 82,255, - 80, 78, 76,255, 78, 75, 73,255, 76, 73, 71,255, 76, 73, 69,255, 75, 72, 69,255, 74, 71, 68,255, 73, 70, 66,255, 71, 68, 64,255, - 70, 66, 62,255, 71, 68, 64,255, 82, 80, 79,255, 98, 98, 98,255,108,108,109,255,114,114,115,255,116,116,118,255,114,115,115,255, -112,112,113,255,110,110,111,255,109,110,110,255,108,108,109,255,107,107,108,255,106,106,107,255,105,105,106,255,104,104,105,255, -103,103,104,255,102,102,103,255,101,101,101,255,100, 99, 99,255, 98, 98, 98,255, 96, 96, 96,255, 94, 93, 93,255, 91, 91, 91,255, - 89, 89, 88,255, 87, 86, 85,255, 84, 83, 82,255, 81, 80, 78,255, 79, 77, 76,255, 77, 74, 72,255, 74, 72, 68,255, 67, 65, 63,255, - 61, 61, 61,255, 60, 60, 60,255,105,105,105,255,145,145,146,255,143,143,144,255,141,142,142,255,140,141,142,255,140,140,141,255, -139,139,140,255,138,138,139,255,138,138,139,255,138,138,139,255,138,138,139,255,138,138,139,255,138,138,139,255,138,138,139,255, -138,138,139,255,138,138,139,255,138,138,138,255,138,138,139,255,138,138,138,255,137,137,138,255,137,137,137,255,136,136,136,255, -136,136,136,255,136,136,136,255,136,136,136,255,136,136,136,255,136,136,136,255,135,135,136,255,135,135,135,255,134,134,134,255, -133,133,133,255,133,132,133,255,132,132,133,255,132,132,133,255,133,133,133,255,134,134,134,255,135,135,135,255,137,137,137,255, -138,138,139,255,139,139,140,255,141,141,142,255,142,142,143,255,143,144,145,255,145,145,146,255,145,145,146,255,145,145,146,255, -144,144,145,255,141,142,143,255,138,138,139,255,131,130,131,255,121,120,119,255,110,108,106,255,102, 99, 95,255, 97, 93, 88,255, - 95, 90, 85,255, 93, 89, 83,255, 93, 88, 84,255, 93, 89, 84,255, 93, 88, 84,255, 91, 87, 83,255, 90, 84, 79,255, 86, 80, 75,255, - 82, 76, 69,255, 78, 72, 63,255, 79, 73, 64,255, 98, 96, 92,255,131,131,132,255,152,153,154,255,161,162,164,255,160,161,163,255, -156,157,158,255,155,156,157,255,153,154,155,255,152,153,154,255,150,151,152,255,149,150,151,255,147,147,148,255,145,145,146,255, -143,143,144,255,141,141,142,255,139,139,140,255,136,136,137,255,134,133,134,255,130,130,130,255,126,126,125,255,122,121,121,255, -117,116,115,255,113,111,109,255,107,105,103,255,102, 99, 96,255, 97, 94, 90,255, 92, 88, 84,255, 86, 81, 75,255, 72, 70, 65,255, - 61, 61, 61,255, 60, 60, 60,255,105,105,106,255,146,146,147,255,143,145,146,255,142,143,144,255,142,142,143,255,141,141,142,255, -140,140,141,255,140,140,141,255,139,140,140,255,139,140,140,255,139,140,140,255,139,140,140,255,139,139,140,255,139,139,140,255, -139,139,139,255,139,139,139,255,138,138,139,255,138,138,138,255,137,137,137,255,137,137,137,255,137,137,137,255,137,137,137,255, -137,137,137,255,137,137,137,255,137,137,137,255,137,136,137,255,136,136,136,255,135,135,135,255,134,134,134,255,133,132,133,255, -131,131,131,255,130,130,130,255,129,128,129,255,129,128,129,255,129,129,129,255,129,129,129,255,131,131,131,255,132,132,132,255, -133,133,134,255,135,135,136,255,136,136,137,255,137,137,138,255,138,139,138,255,138,138,139,255,138,137,138,255,136,136,136,255, -132,131,131,255,126,126,126,255,119,118,116,255,110,109,107,255,104,101, 99,255,101, 97, 94,255,100, 96, 93,255,100, 97, 93,255, -101, 97, 94,255,101, 98, 95,255,102, 98, 96,255,100, 98, 95,255, 99, 96, 93,255, 98, 95, 92,255, 96, 92, 88,255, 92, 88, 84,255, - 89, 84, 80,255, 85, 79, 73,255, 78, 73, 64,255, 74, 66, 58,255, 91, 86, 81,255,125,124,124,255,147,147,149,255,152,153,155,255, -152,152,153,255,151,152,153,255,151,152,153,255,151,152,153,255,151,151,152,255,149,150,151,255,147,148,149,255,146,147,148,255, -143,144,145,255,142,142,143,255,140,140,141,255,137,137,138,255,134,134,135,255,132,131,132,255,128,128,128,255,124,124,123,255, -120,119,119,255,116,114,114,255,111,108,107,255,105,103,101,255, 99, 96, 93,255, 94, 90, 85,255, 87, 82, 76,255, 73, 70, 65,255, - 61, 61, 61,255, 60, 60, 60,255,106,106,107,255,147,147,149,255,145,145,147,255,144,145,146,255,142,143,144,255,142,142,143,255, -141,142,142,255,141,141,142,255,141,141,142,255,141,141,142,255,141,141,142,255,141,140,142,255,140,141,141,255,140,140,141,255, -139,140,140,255,139,139,140,255,138,139,139,255,138,138,139,255,138,138,138,255,138,138,139,255,138,138,139,255,139,139,139,255, -138,138,139,255,138,138,139,255,138,138,138,255,137,137,137,255,136,136,136,255,134,134,134,255,133,132,133,255,130,130,131,255, -128,128,128,255,126,126,126,255,125,124,124,255,123,122,122,255,123,122,123,255,123,123,122,255,124,123,123,255,126,125,125,255, -127,126,126,255,128,128,128,255,129,129,129,255,129,129,129,255,129,129,129,255,128,127,128,255,126,125,124,255,122,121,120,255, -117,116,115,255,112,111,109,255,109,106,104,255,106,104,101,255,106,103,100,255,107,104,102,255,108,105,103,255,109,106,105,255, -110,107,106,255,110,107,106,255,108,107,105,255,107,105,104,255,106,103,102,255,103,100, 98,255,100, 97, 94,255, 96, 94, 90,255, - 94, 90, 86,255, 90, 86, 82,255, 86, 81, 75,255, 79, 72, 64,255, 73, 67, 57,255, 91, 86, 82,255,126,124,124,255,141,142,143,255, -145,145,146,255,147,147,148,255,148,149,150,255,150,150,152,255,150,151,152,255,149,150,151,255,148,149,151,255,147,148,149,255, -145,145,146,255,143,143,144,255,141,141,142,255,139,139,139,255,136,136,137,255,133,134,133,255,130,130,130,255,127,126,126,255, -123,122,122,255,119,118,118,255,115,113,112,255,109,108,106,255,104,101, 99,255, 98, 94, 91,255, 91, 86, 81,255, 74, 71, 67,255, - 61, 61, 61,255, 60, 60, 60,255,106,107,107,255,147,148,149,255,146,146,147,255,144,145,146,255,144,144,145,255,142,143,143,255, -142,142,143,255,141,142,142,255,140,142,141,255,141,142,142,255,141,142,142,255,140,141,142,255,140,142,142,255,141,140,142,255, -140,140,141,255,140,140,141,255,139,139,140,255,139,140,140,255,139,139,140,255,140,140,140,255,140,140,140,255,140,140,140,255, -139,139,140,255,138,139,140,255,138,138,138,255,137,136,137,255,135,134,135,255,133,132,132,255,130,129,130,255,128,127,127,255, -125,124,124,255,122,121,122,255,120,119,119,255,118,117,116,255,117,116,115,255,116,114,115,255,116,114,114,255,116,115,114,255, -117,116,116,255,117,116,116,255,117,117,117,255,118,117,116,255,117,115,115,255,115,113,112,255,114,112,111,255,111,109,108,255, -110,108,105,255,110,107,106,255,110,108,106,255,111,109,107,255,113,110,109,255,115,113,112,255,116,115,114,255,118,116,116,255, -117,116,115,255,117,115,115,255,115,113,112,255,113,112,110,255,111,109,107,255,108,106,104,255,105,102,100,255,101, 98, 96,255, - 97, 94, 92,255, 94, 91, 88,255, 91, 87, 83,255, 86, 81, 75,255, 78, 72, 62,255, 73, 66, 57,255, 94, 90, 85,255,125,124,124,255, -135,135,136,255,140,140,141,255,144,144,145,255,147,147,148,255,149,150,151,255,150,150,152,255,149,150,151,255,148,148,150,255, -146,147,148,255,144,145,146,255,142,142,143,255,140,140,141,255,138,138,139,255,135,135,136,255,133,133,132,255,130,129,129,255, -126,126,126,255,122,122,121,255,119,118,117,255,115,113,112,255,109,107,106,255,103,100, 98,255, 96, 92, 89,255, 76, 74, 71,255, - 61, 61, 61,255, 60, 60, 60,255,106,107,107,255,148,148,149,255,146,146,147,255,145,145,146,255,144,144,145,255,142,143,143,255, -142,142,143,255,141,142,142,255,140,142,141,255,141,141,142,255,140,141,141,255,142,142,143,255,141,141,143,255,141,142,142,255, -141,142,142,255,141,141,142,255,141,142,142,255,141,142,142,255,142,142,143,255,142,142,143,255,141,142,142,255,141,141,142,255, -139,140,140,255,138,139,139,255,137,138,138,255,135,135,135,255,132,132,132,255,129,129,129,255,128,127,127,255,124,123,123,255, -121,120,120,255,118,117,116,255,116,114,114,255,113,111,111,255,110,109,108,255,110,108,107,255,108,107,106,255,108,107,106,255, -108,106,105,255,108,106,104,255,107,105,103,255,107,105,103,255,107,105,103,255,107,105,103,255,108,105,104,255,110,108,106,255, -113,111,109,255,114,112,111,255,116,115,114,255,119,118,117,255,121,120,120,255,123,122,121,255,124,123,122,255,123,123,122,255, -123,122,122,255,122,121,121,255,121,120,119,255,119,117,116,255,116,114,113,255,112,111,109,255,109,107,106,255,105,103,101,255, -101, 99, 96,255, 98, 95, 92,255, 94, 91, 88,255, 91, 87, 83,255, 84, 78, 72,255, 74, 68, 59,255, 72, 67, 58,255, 99, 96, 92,255, -121,120,119,255,130,130,131,255,137,137,138,255,143,142,144,255,146,147,148,255,148,149,150,255,149,149,150,255,149,150,151,255, -147,148,149,255,145,146,147,255,143,144,145,255,141,141,142,255,139,139,140,255,137,137,138,255,134,134,135,255,131,132,132,255, -129,129,129,255,126,125,125,255,122,121,121,255,119,118,117,255,115,113,112,255,109,107,106,255,103,100, 97,255, 79, 78, 76,255, - 61, 61, 61,255, 60, 60, 60,255,106,107,107,255,147,148,149,255,146,146,147,255,144,144,145,255,143,144,144,255,142,143,143,255, -141,142,142,255,141,141,142,255,141,141,142,255,141,141,142,255,140,140,141,255,141,142,142,255,141,141,143,255,142,142,143,255, -142,142,143,255,142,143,143,255,142,142,143,255,142,143,143,255,141,143,144,255,142,143,143,255,141,141,142,255,140,140,141,255, -139,139,139,255,137,137,137,255,135,135,135,255,133,132,132,255,130,129,129,255,128,127,127,255,124,124,123,255,121,120,120,255, -119,117,117,255,115,114,114,255,113,111,110,255,110,108,108,255,108,105,104,255,106,103,102,255,104,101, 99,255,103,101, 99,255, -102,100, 98,255,102, 99, 97,255,102, 99, 97,255,103,100, 98,255,104,101, 99,255,106,104,103,255,110,108,106,255,114,112,111,255, -118,116,116,255,121,120,119,255,123,123,122,255,126,125,125,255,128,127,127,255,129,128,128,255,130,129,130,255,130,129,129,255, -129,128,128,255,127,127,127,255,126,125,125,255,125,124,123,255,122,120,120,255,117,116,115,255,113,112,111,255,110,108,106,255, -106,103,101,255,102, 99, 97,255, 98, 95, 92,255, 95, 91, 88,255, 90, 86, 81,255, 82, 76, 68,255, 73, 66, 57,255, 77, 71, 64,255, -102, 98, 96,255,119,118,116,255,129,129,128,255,137,136,137,255,142,143,144,255,146,146,147,255,148,149,150,255,149,149,151,255, -148,148,149,255,146,148,149,255,145,145,146,255,142,143,144,255,140,141,142,255,138,138,139,255,136,136,137,255,134,134,134,255, -132,131,131,255,128,128,128,255,125,125,124,255,122,121,121,255,119,118,117,255,115,113,112,255,109,107,105,255, 83, 82, 81,255, - 61, 61, 61,255, 60, 60, 60,255,106,106,107,255,147,147,148,255,144,145,146,255,143,144,144,255,142,143,144,255,140,141,141,255, -141,141,142,255,140,140,141,255,140,140,141,255,139,140,140,255,141,141,142,255,141,141,142,255,142,142,143,255,141,141,142,255, -142,143,144,255,143,143,144,255,143,143,144,255,141,143,144,255,142,143,143,255,142,142,142,255,140,141,141,255,139,139,140,255, -137,137,138,255,135,135,136,255,133,133,133,255,130,130,130,255,129,128,127,255,126,125,124,255,122,121,121,255,120,119,118,255, -117,115,115,255,114,112,111,255,112,109,109,255,109,108,106,255,107,105,104,255,105,103,101,255,104,102, 99,255,103,100, 99,255, -102, 99, 98,255,102,100, 98,255,104,100, 98,255,105,102,100,255,107,104,103,255,110,108,107,255,115,113,113,255,120,119,118,255, -124,123,123,255,128,127,127,255,131,130,130,255,133,133,132,255,134,134,135,255,135,135,135,255,135,135,135,255,135,135,135,255, -134,134,134,255,133,133,133,255,131,131,131,255,129,129,129,255,126,126,126,255,123,122,122,255,119,118,117,255,114,113,112,255, -110,109,107,255,106,104,102,255,102, 99, 97,255, 99, 96, 93,255, 95, 90, 87,255, 88, 84, 79,255, 79, 73, 64,255, 72, 65, 57,255, - 82, 77, 70,255,104,101, 99,255,119,117,117,255,129,128,129,255,137,137,138,255,143,143,144,255,145,146,147,255,148,148,150,255, -148,149,150,255,147,148,149,255,145,146,147,255,144,144,145,255,142,142,143,255,139,139,140,255,138,138,138,255,136,135,136,255, -133,133,133,255,131,131,131,255,128,128,128,255,126,125,125,255,122,121,121,255,119,117,117,255,114,112,111,255, 86, 85, 84,255, - 61, 61, 61,255, 60, 60, 60,255,106,106,107,255,146,147,148,255,144,144,145,255,143,143,144,255,141,141,142,255,140,140,141,255, -139,139,140,255,139,139,140,255,138,138,139,255,139,139,140,255,139,139,140,255,140,140,141,255,141,141,142,255,141,142,142,255, -141,142,143,255,142,142,143,255,141,142,143,255,141,142,142,255,141,141,142,255,140,140,141,255,139,139,140,255,137,137,138,255, -136,136,136,255,134,133,133,255,132,131,132,255,129,129,129,255,127,126,126,255,125,124,123,255,122,121,120,255,120,117,117,255, -116,115,114,255,113,112,111,255,111,110,109,255,109,108,106,255,108,106,104,255,106,104,103,255,105,103,102,255,105,102,101,255, -105,102,101,255,105,103,101,255,107,105,103,255,109,106,105,255,111,109,108,255,116,114,113,255,120,119,119,255,125,124,125,255, -131,130,130,255,134,134,134,255,137,137,137,255,138,138,139,255,139,140,140,255,140,141,141,255,141,141,142,255,140,141,141,255, -140,140,141,255,138,138,139,255,137,136,137,255,134,134,134,255,132,131,131,255,128,128,127,255,124,123,123,255,120,119,118,255, -115,113,112,255,111,109,108,255,106,104,102,255,102,100, 97,255, 99, 96, 93,255, 95, 90, 87,255, 87, 81, 76,255, 76, 70, 60,255, - 72, 66, 57,255, 87, 83, 76,255,106,104,102,255,120,119,119,255,130,130,130,255,137,138,138,255,142,143,143,255,145,146,147,255, -147,147,148,255,147,148,149,255,147,146,148,255,145,145,146,255,143,143,144,255,141,141,142,255,139,139,139,255,136,136,137,255, -134,134,135,255,132,132,132,255,130,129,129,255,128,127,127,255,125,124,124,255,122,121,121,255,118,117,116,255, 89, 88, 87,255, - 61, 61, 61,255, 60, 60, 60,255,106,106,106,255,146,146,147,255,144,144,145,255,142,142,143,255,140,141,141,255,139,139,140,255, -138,138,138,255,138,138,138,255,137,138,138,255,138,138,138,255,138,138,139,255,139,139,139,255,140,140,141,255,140,140,141,255, -141,141,142,255,141,141,142,255,141,141,141,255,140,140,141,255,139,140,140,255,138,138,138,255,137,137,137,255,135,135,136,255, -134,134,134,255,132,132,132,255,131,130,130,255,129,128,128,255,126,126,125,255,124,124,123,255,122,121,120,255,119,118,117,255, -117,115,114,255,115,113,112,255,113,111,110,255,111,109,108,255,110,108,107,255,109,107,105,255,108,106,105,255,109,106,105,255, -109,106,105,255,109,107,105,255,110,109,108,255,113,111,110,255,116,115,114,255,121,119,119,255,126,125,125,255,131,130,131,255, -135,135,136,255,139,139,140,255,142,142,143,255,143,144,145,255,145,145,146,255,145,146,147,255,145,146,147,255,145,146,147,255, -144,144,145,255,143,143,144,255,141,142,142,255,139,139,140,255,137,136,137,255,134,134,134,255,130,128,129,255,125,124,124,255, -121,119,119,255,115,114,113,255,111,109,108,255,107,105,103,255,103,100, 98,255, 99, 96, 93,255, 93, 89, 86,255, 84, 78, 71,255, - 74, 68, 58,255, 76, 69, 60,255, 92, 88, 83,255,108,107,106,255,122,121,121,255,131,131,131,255,138,138,138,255,142,142,143,255, -145,145,146,255,146,147,148,255,147,147,148,255,145,146,147,255,144,145,146,255,142,142,143,255,139,139,140,255,138,138,138,255, -135,135,135,255,133,133,133,255,132,131,131,255,129,129,129,255,126,126,126,255,124,123,123,255,121,120,120,255, 91, 89, 89,255, - 61, 61, 61,255, 60, 60, 60,255,106,106,106,255,145,146,147,255,143,143,144,255,141,142,143,255,140,140,141,255,138,138,139,255, -137,137,138,255,137,137,137,255,136,136,137,255,135,136,137,255,137,137,137,255,137,137,137,255,138,138,138,255,139,139,139,255, -139,139,140,255,139,139,140,255,139,139,140,255,138,138,139,255,137,137,138,255,137,137,136,255,135,135,135,255,134,134,134,255, -133,132,133,255,131,131,131,255,130,130,130,255,128,128,127,255,127,126,126,255,125,124,124,255,123,122,121,255,120,119,118,255, -118,117,116,255,116,114,114,255,114,113,112,255,114,112,111,255,111,109,109,255,111,109,108,255,111,109,108,255,110,109,108,255, -111,109,108,255,112,110,109,255,114,112,112,255,117,115,115,255,120,119,118,255,124,125,124,255,130,130,130,255,135,135,135,255, -140,140,141,255,144,144,145,255,146,147,148,255,148,149,151,255,149,150,151,255,149,150,152,255,150,150,152,255,149,150,151,255, -148,149,150,255,147,148,149,255,145,146,147,255,143,144,145,255,140,141,142,255,138,138,139,255,134,134,135,255,130,130,130,255, -125,125,125,255,121,120,120,255,116,114,114,255,111,110,109,255,108,106,104,255,104,101, 99,255, 99, 96, 93,255, 92, 87, 83,255, - 81, 75, 67,255, 74, 67, 58,255, 79, 74, 66,255, 97, 93, 90,255,112,110,109,255,124,122,122,255,132,132,132,255,138,138,138,255, -141,142,143,255,144,144,145,255,146,146,147,255,145,146,147,255,145,145,146,255,142,142,143,255,140,141,141,255,138,138,139,255, -136,135,136,255,134,134,135,255,132,132,132,255,130,129,129,255,128,127,127,255,126,125,125,255,124,122,121,255, 92, 91, 91,255, - 61, 61, 61,255, 60, 60, 60,255,106,106,107,255,146,146,147,255,143,143,144,255,142,142,142,255,140,140,141,255,138,138,138,255, -136,136,137,255,135,134,135,255,134,134,134,255,134,134,134,255,135,134,135,255,135,135,135,255,136,136,136,255,136,136,137,255, -137,137,137,255,137,137,137,255,136,136,137,255,136,136,137,255,136,136,136,255,135,135,135,255,134,134,134,255,134,134,134,255, -132,132,133,255,131,131,131,255,130,130,130,255,129,129,129,255,127,126,126,255,125,125,124,255,124,123,123,255,122,121,120,255, -120,118,118,255,118,117,116,255,116,114,114,255,115,113,112,255,114,112,112,255,114,112,111,255,113,111,110,255,113,111,110,255, -114,112,111,255,115,113,113,255,117,116,115,255,120,119,118,255,124,123,123,255,128,128,128,255,134,133,133,255,138,138,139,255, -143,144,145,255,147,148,149,255,152,152,154,255,153,154,156,255,154,155,157,255,154,155,157,255,154,155,157,255,154,155,156,255, -152,154,155,255,151,152,154,255,150,151,152,255,147,148,149,255,145,146,147,255,142,142,143,255,138,139,139,255,135,135,135,255, -131,130,131,255,126,126,126,255,121,120,120,255,116,115,114,255,112,110,109,255,109,106,105,255,104,102,100,255, 99, 95, 92,255, - 89, 85, 79,255, 79, 72, 63,255, 75, 68, 58,255, 84, 79, 73,255,100, 98, 95,255,114,113,112,255,125,124,123,255,132,132,132,255, -136,136,137,255,140,141,142,255,143,144,145,255,144,144,145,255,144,145,146,255,142,144,145,255,141,141,142,255,138,138,139,255, -136,136,136,255,134,134,135,255,132,132,132,255,130,130,130,255,129,128,128,255,127,126,126,255,125,124,123,255, 93, 92, 92,255, - 61, 61, 61,255, 60, 60, 60,255,106,107,107,255,147,147,148,255,144,144,145,255,142,142,143,255,140,140,141,255,138,138,138,255, -136,136,136,255,135,134,135,255,133,133,133,255,133,132,133,255,133,132,133,255,133,133,133,255,134,134,134,255,135,134,135,255, -135,135,135,255,136,136,136,255,136,136,136,255,135,135,136,255,135,135,135,255,134,134,135,255,134,134,134,255,134,134,134,255, -133,132,133,255,132,132,132,255,131,131,131,255,130,130,130,255,129,128,128,255,126,126,125,255,125,124,124,255,123,122,122,255, -121,120,119,255,119,118,118,255,118,117,115,255,116,115,114,255,116,114,114,255,115,113,113,255,115,113,113,255,115,114,113,255, -116,114,114,255,118,116,116,255,119,118,117,255,123,122,122,255,127,126,126,255,131,131,131,255,136,136,136,255,141,142,143,255, -146,147,148,255,151,152,153,255,155,157,157,255,157,159,160,255,158,160,162,255,158,160,162,255,158,160,162,255,158,159,161,255, -157,158,160,255,155,157,159,255,154,155,157,255,152,153,154,255,150,150,152,255,147,147,148,255,143,144,145,255,139,140,141,255, -135,136,136,255,131,131,131,255,126,126,126,255,122,121,120,255,116,115,115,255,113,111,111,255,109,108,106,255,105,102,100,255, - 97, 94, 91,255, 87, 81, 75,255, 77, 70, 61,255, 78, 71, 62,255, 89, 84, 80,255,104,101, 99,255,116,114,113,255,125,124,125,255, -131,131,132,255,136,136,137,255,140,140,141,255,142,142,143,255,143,143,144,255,143,143,144,255,141,141,142,255,139,139,139,255, -136,136,136,255,134,134,135,255,133,132,133,255,130,130,130,255,129,128,128,255,128,127,127,255,126,125,124,255, 93, 93, 92,255, - 61, 61, 61,255, 60, 60, 60,255,107,107,108,255,149,149,151,255,145,146,147,255,143,143,144,255,141,142,142,255,139,139,140,255, -137,136,137,255,135,135,135,255,133,133,133,255,132,132,132,255,133,131,133,255,132,132,132,255,132,132,132,255,134,133,134,255, -134,134,134,255,135,135,134,255,135,135,136,255,134,134,135,255,134,134,136,255,134,134,136,255,134,134,135,255,135,135,134,255, -133,133,134,255,133,132,133,255,132,132,132,255,131,130,131,255,130,129,130,255,129,128,128,255,126,125,125,255,125,124,123,255, -123,122,121,255,121,119,119,255,119,118,118,255,118,117,116,255,117,115,115,255,116,115,114,255,115,114,114,255,117,115,115,255, -117,116,115,255,119,117,117,255,121,120,120,255,124,123,124,255,128,128,128,255,132,132,133,255,138,138,139,255,143,143,144,255, -149,150,151,255,154,156,157,255,158,160,161,255,161,162,164,255,163,164,166,255,162,164,166,255,163,164,166,255,162,165,166,255, -161,163,164,255,160,162,163,255,159,160,162,255,156,157,159,255,154,155,156,255,151,152,153,255,147,148,149,255,144,145,145,255, -140,140,141,255,136,136,136,255,131,131,131,255,126,126,126,255,121,120,120,255,117,115,115,255,113,112,110,255,110,108,106,255, -104,101, 99,255, 96, 92, 87,255, 84, 79, 71,255, 78, 70, 61,255, 80, 75, 66,255, 93, 89, 85,255,107,103,102,255,116,115,115,255, -125,124,124,255,131,130,130,255,136,136,136,255,139,139,139,255,141,141,142,255,142,143,144,255,141,141,142,255,139,139,139,255, -136,136,136,255,134,134,134,255,132,132,132,255,130,129,129,255,129,128,128,255,128,127,127,255,126,125,125,255, 94, 93, 93,255, - 61, 61, 61,255, 60, 60, 60,255,108,109,110,255,151,151,153,255,148,149,150,255,146,146,147,255,143,143,144,255,141,141,142,255, -138,139,139,255,136,136,136,255,134,134,134,255,133,133,133,255,132,132,132,255,132,132,132,255,132,133,132,255,132,132,132,255, -134,134,134,255,134,134,134,255,135,135,136,255,135,135,136,255,135,135,135,255,136,136,136,255,135,135,136,255,135,135,136,255, -134,134,135,255,134,134,134,255,134,133,134,255,132,132,132,255,131,130,131,255,129,129,129,255,128,127,127,255,126,125,125,255, -124,123,123,255,122,121,121,255,120,119,119,255,119,118,118,255,119,117,117,255,118,116,116,255,118,116,116,255,118,116,116,255, -119,117,117,255,121,120,120,255,123,122,122,255,126,126,125,255,130,129,130,255,134,133,134,255,138,139,139,255,145,144,145,255, -150,152,152,255,157,158,159,255,161,163,164,255,165,166,168,255,167,168,170,255,168,170,172,255,168,169,171,255,167,169,171,255, -166,168,170,255,164,166,168,255,163,164,166,255,161,162,164,255,158,159,161,255,155,156,157,255,151,152,153,255,148,149,150,255, -144,144,145,255,140,140,141,255,135,135,136,255,131,130,130,255,126,125,125,255,121,120,119,255,117,115,114,255,113,111,110,255, -109,107,105,255,103,100, 98,255, 94, 89, 85,255, 83, 78, 70,255, 79, 73, 64,255, 84, 79, 73,255, 96, 92, 89,255,108,105,104,255, -117,116,115,255,124,124,124,255,130,130,130,255,135,134,136,255,138,138,138,255,140,140,141,255,140,140,141,255,138,138,139,255, -135,135,136,255,133,133,133,255,131,131,132,255,129,129,129,255,128,127,127,255,127,126,126,255,126,125,125,255, 94, 94, 93,255, - 61, 61, 61,255, 60, 60, 60,255,110,111,112,255,154,155,157,255,150,152,153,255,149,149,150,255,146,147,148,255,143,144,145,255, -141,141,142,255,138,138,139,255,136,136,136,255,134,134,134,255,133,133,133,255,133,132,133,255,133,133,133,255,133,133,133,255, -133,133,134,255,134,134,134,255,135,135,136,255,135,135,135,255,136,136,136,255,135,135,137,255,136,136,137,255,136,136,136,255, -135,135,135,255,134,134,135,255,134,134,134,255,133,132,133,255,132,132,132,255,130,131,131,255,129,128,128,255,127,126,126,255, -125,124,124,255,124,123,123,255,122,121,121,255,120,119,119,255,119,118,118,255,119,117,117,255,119,118,118,255,120,118,117,255, -120,119,118,255,121,120,120,255,124,123,123,255,127,126,126,255,130,130,131,255,134,134,134,255,139,139,140,255,144,145,146,255, -152,153,154,255,159,160,161,255,163,165,167,255,167,169,171,255,170,172,174,255,172,174,176,255,172,174,176,255,172,174,176,255, -170,172,174,255,169,171,173,255,167,169,171,255,165,166,168,255,162,163,165,255,159,160,162,255,156,157,158,255,152,153,154,255, -148,148,150,255,143,144,145,255,139,140,141,255,134,134,135,255,130,129,129,255,124,123,123,255,119,118,117,255,115,114,113,255, -113,111,109,255,109,107,104,255,102, 99, 96,255, 92, 88, 83,255, 83, 78, 70,255, 82, 76, 68,255, 88, 84, 79,255, 99, 96, 93,255, -109,107,106,255,117,116,115,255,124,124,123,255,130,129,130,255,134,134,135,255,137,137,138,255,139,138,139,255,138,138,139,255, -135,135,136,255,133,132,132,255,130,130,130,255,129,128,128,255,127,126,126,255,127,126,125,255,126,125,124,255, 94, 94, 93,255, - 61, 61, 61,255, 60, 60, 60,255,111,113,113,255,158,159,161,255,154,155,157,255,152,154,154,255,150,151,152,255,147,147,149,255, -144,144,145,255,142,142,142,255,139,139,139,255,137,136,137,255,135,135,136,255,135,135,134,255,135,135,135,255,134,134,135,255, -134,134,134,255,135,135,135,255,135,135,135,255,136,136,135,255,135,135,136,255,136,136,137,255,136,136,137,255,135,135,136,255, -135,135,136,255,134,134,135,255,135,135,135,255,133,133,133,255,132,132,132,255,131,131,131,255,129,129,129,255,128,128,128,255, -127,126,126,255,124,124,124,255,123,122,122,255,122,121,121,255,120,119,119,255,119,118,118,255,120,119,118,255,120,119,118,255, -121,120,119,255,122,121,121,255,125,124,124,255,128,128,128,255,131,130,130,255,134,134,134,255,139,139,140,255,145,146,147,255, -152,153,154,255,159,160,162,255,165,167,168,255,169,171,173,255,173,175,177,255,175,177,179,255,175,178,180,255,176,178,180,255, -174,178,180,255,173,176,178,255,172,174,176,255,169,171,173,255,166,168,170,255,163,164,166,255,159,161,162,255,156,157,158,255, -151,152,153,255,147,148,149,255,143,143,144,255,138,138,139,255,133,133,133,255,128,127,127,255,122,121,121,255,118,116,116,255, -114,113,112,255,112,110,109,255,108,105,103,255,101, 98, 95,255, 92, 87, 83,255, 86, 80, 73,255, 85, 80, 74,255, 92, 87, 83,255, -102, 98, 96,255,111,109,108,255,118,117,116,255,125,124,123,255,130,129,129,255,134,134,135,255,137,136,137,255,137,137,138,255, -134,134,134,255,132,131,131,255,129,129,129,255,127,126,126,255,125,124,124,255,125,124,124,255,126,125,124,255, 94, 94, 93,255, - 61, 61, 61,255, 60, 60, 60,255,113,114,115,255,161,162,164,255,158,159,161,255,155,156,159,255,153,154,156,255,150,151,152,255, -147,148,149,255,144,144,145,255,142,142,143,255,139,139,140,255,137,137,138,255,136,136,136,255,135,135,135,255,135,135,135,255, -134,134,135,255,134,134,135,255,135,135,136,255,135,135,136,255,136,136,135,255,136,136,136,255,136,136,136,255,136,136,136,255, -135,135,136,255,134,134,135,255,134,134,135,255,133,133,133,255,133,132,132,255,132,131,132,255,130,129,129,255,128,128,128,255, -127,126,126,255,125,125,125,255,124,123,123,255,122,121,121,255,121,120,120,255,121,119,119,255,121,120,119,255,121,120,120,255, -122,121,121,255,123,122,122,255,125,125,125,255,128,128,128,255,131,130,130,255,134,134,134,255,139,139,140,255,145,146,147,255, -152,153,154,255,159,160,162,255,165,165,168,255,170,171,173,255,173,175,177,255,176,178,181,255,177,179,182,255,178,180,183,255, -178,180,182,255,177,179,182,255,176,178,180,255,173,175,177,255,170,172,174,255,167,168,170,255,163,164,166,255,159,160,162,255, -155,156,157,255,151,152,153,255,146,146,147,255,141,141,142,255,136,135,136,255,131,130,131,255,126,125,124,255,120,119,118,255, -116,114,113,255,114,112,110,255,111,109,107,255,107,105,103,255,101, 97, 95,255, 93, 88, 84,255, 89, 84, 78,255, 89, 85, 80,255, - 96, 92, 89,255,105,102,100,255,112,110,109,255,120,118,118,255,125,124,125,255,131,130,130,255,134,134,134,255,135,135,136,255, -134,134,134,255,131,130,130,255,128,127,127,255,126,125,124,255,124,123,122,255,124,123,122,255,125,124,123,255, 94, 93, 92,255, - 61, 61, 61,255, 60, 60, 60,255,115,116,117,255,164,166,168,255,161,163,164,255,159,160,162,255,156,157,159,255,153,154,156,255, -150,151,153,255,147,148,149,255,144,144,145,255,142,142,143,255,139,139,140,255,138,138,138,255,137,137,136,255,135,135,136,255, -135,135,135,255,134,134,135,255,135,135,136,255,135,135,136,255,135,135,135,255,135,135,136,255,135,135,136,255,135,135,135,255, -134,134,135,255,134,134,134,255,134,134,134,255,133,132,133,255,132,132,132,255,131,131,131,255,130,129,129,255,128,128,128,255, -128,127,127,255,126,125,125,255,125,124,124,255,123,122,122,255,122,121,121,255,121,120,120,255,122,121,120,255,121,120,121,255, -122,121,121,255,123,122,122,255,126,125,125,255,128,128,128,255,131,130,130,255,134,134,134,255,139,139,140,255,145,145,146,255, -152,152,154,255,158,159,161,255,164,166,167,255,169,171,173,255,173,175,177,255,176,178,181,255,178,181,183,255,179,182,184,255, -180,182,185,255,180,183,185,255,179,181,183,255,177,179,181,255,174,176,178,255,170,172,174,255,167,168,170,255,162,164,165,255, -157,159,161,255,153,154,155,255,148,149,150,255,143,143,144,255,138,138,139,255,134,133,133,255,128,127,127,255,123,121,121,255, -118,117,116,255,114,113,111,255,113,111,109,255,111,108,107,255,107,104,102,255,101, 97, 95,255, 94, 90, 87,255, 92, 87, 83,255, - 94, 90, 87,255,100, 97, 94,255,107,105,104,255,114,113,112,255,121,119,119,255,127,126,126,255,130,131,131,255,134,134,134,255, -133,133,133,255,130,129,129,255,126,125,125,255,124,122,122,255,122,121,120,255,123,121,120,255,124,122,121,255, 93, 93, 92,255, - 61, 61, 61,255, 60, 60, 60,255,116,117,118,255,167,169,171,255,163,165,167,255,162,164,165,255,159,161,163,255,156,157,159,255, -153,154,156,255,150,151,152,255,147,147,149,255,143,144,145,255,142,142,143,255,139,139,140,255,138,138,138,255,137,137,138,255, -136,136,137,255,136,136,136,255,134,134,136,255,135,135,135,255,135,135,136,255,135,134,134,255,134,135,134,255,135,134,134,255, -133,133,134,255,134,133,133,255,133,132,134,255,132,132,132,255,131,131,131,255,131,130,130,255,129,129,129,255,128,128,128,255, -128,127,127,255,126,125,125,255,125,124,124,255,124,123,123,255,122,121,121,255,122,122,120,255,122,121,121,255,122,121,121,255, -123,122,122,255,123,123,122,255,126,125,125,255,128,128,128,255,130,130,130,255,134,134,133,255,139,139,140,255,144,145,146,255, -151,151,152,255,157,158,159,255,163,164,166,255,168,169,171,255,172,174,176,255,176,178,180,255,178,180,183,255,180,182,185,255, -182,184,186,255,182,185,187,255,181,184,186,255,179,182,184,255,177,180,182,255,174,176,178,255,170,172,174,255,166,167,169,255, -161,162,163,255,156,157,158,255,150,152,153,255,146,146,147,255,141,141,142,255,136,135,136,255,131,130,130,255,126,124,124,255, -120,119,118,255,116,115,114,255,113,111,110,255,112,110,108,255,111,109,108,255,108,105,103,255,102, 99, 96,255, 97, 93, 90,255, - 96, 92, 88,255, 98, 95, 92,255,105,102, 99,255,110,109,108,255,117,115,115,255,123,122,122,255,128,127,127,255,131,131,131,255, -131,130,131,255,128,127,127,255,124,123,123,255,121,120,119,255,120,119,118,255,121,119,118,255,123,121,120,255, 93, 92, 91,255, - 61, 61, 61,255, 60, 60, 60,255,118,119,120,255,169,171,173,255,166,168,170,255,164,166,168,255,162,163,165,255,159,161,163,255, -156,157,159,255,153,154,155,255,149,150,152,255,146,146,147,255,143,143,144,255,141,141,142,255,139,139,140,255,138,138,139,255, -137,137,138,255,136,136,136,255,135,135,135,255,134,134,135,255,134,134,134,255,134,133,134,255,134,133,134,255,133,133,133,255, -134,133,133,255,133,132,133,255,133,132,133,255,132,131,131,255,131,131,131,255,130,130,130,255,129,128,128,255,128,128,128,255, -128,127,127,255,126,125,125,255,125,125,125,255,125,124,124,255,123,122,122,255,123,122,122,255,123,122,122,255,122,121,121,255, -123,122,122,255,124,123,123,255,126,125,125,255,128,127,127,255,130,129,129,255,134,134,134,255,139,139,139,255,144,144,145,255, -150,150,152,255,155,156,158,255,161,162,164,255,165,167,168,255,170,172,173,255,173,175,177,255,177,179,181,255,179,181,183,255, -181,183,186,255,181,185,187,255,183,185,188,255,182,184,187,255,180,183,185,255,177,180,182,255,173,175,177,255,169,171,173,255, -164,165,167,255,159,160,161,255,153,154,155,255,148,149,150,255,143,143,144,255,138,138,138,255,133,133,133,255,128,127,127,255, -123,122,121,255,119,116,116,255,115,113,112,255,113,111,110,255,112,110,109,255,112,109,108,255,108,106,104,255,103,101, 98,255, -100, 97, 94,255, 99, 96, 93,255,103,100, 97,255,109,106,104,255,114,112,111,255,119,118,117,255,124,123,123,255,128,127,128,255, -130,129,130,255,127,126,126,255,122,121,121,255,120,118,117,255,119,117,116,255,120,119,117,255,123,121,119,255, 92, 91, 90,255, - 61, 61, 61,255, 60, 60, 60,255,119,120,121,255,172,174,176,255,169,171,173,255,167,169,171,255,164,166,168,255,162,163,165,255, -158,160,161,255,155,156,158,255,151,152,154,255,148,149,150,255,145,146,147,255,143,143,144,255,141,141,142,255,139,139,140,255, -138,138,139,255,136,137,137,255,136,136,136,255,135,135,135,255,135,134,135,255,134,133,134,255,133,134,134,255,134,133,133,255, -133,132,133,255,132,132,132,255,132,132,132,255,131,131,131,255,131,130,130,255,130,130,130,255,129,128,128,255,128,128,128,255, -128,127,127,255,126,125,126,255,126,125,125,255,125,124,124,255,124,123,123,255,124,123,123,255,123,122,122,255,123,122,122,255, -123,123,122,255,124,123,124,255,126,125,124,255,128,127,127,255,130,129,129,255,134,133,134,255,138,138,138,255,143,144,144,255, -148,149,150,255,154,155,156,255,158,159,160,255,163,164,166,255,167,168,170,255,171,173,174,255,174,176,178,255,176,178,181,255, -179,181,184,255,181,184,186,255,182,185,187,255,183,185,188,255,182,184,187,255,180,182,184,255,177,179,181,255,172,174,176,255, -167,169,170,255,161,162,164,255,155,156,157,255,150,151,152,255,144,145,146,255,139,140,140,255,135,135,135,255,131,129,130,255, -126,125,125,255,120,119,119,255,117,115,114,255,114,112,110,255,112,110,108,255,113,111,109,255,112,110,109,255,109,107,105,255, -106,103,100,255,103,100, 98,255,103,101, 98,255,107,105,103,255,112,110,109,255,116,115,114,255,121,120,120,255,125,124,124,255, -127,127,127,255,126,124,124,255,121,120,119,255,118,116,115,255,118,116,114,255,120,118,116,255,122,120,118,255, 92, 91, 90,255, - 61, 61, 61,255, 60, 60, 60,255,120,121,122,255,174,177,179,255,171,173,175,255,170,172,174,255,167,169,171,255,164,165,167,255, -161,162,164,255,157,159,160,255,154,155,156,255,150,151,153,255,148,148,149,255,145,145,146,255,142,143,144,255,141,142,142,255, -139,139,140,255,138,138,139,255,138,138,138,255,136,136,137,255,136,136,136,255,135,135,136,255,134,134,135,255,134,134,134,255, -134,133,134,255,133,133,133,255,133,132,132,255,131,131,131,255,131,130,130,255,130,130,130,255,129,128,128,255,129,128,128,255, -128,127,128,255,126,126,126,255,127,126,126,255,126,125,125,255,125,124,124,255,125,124,124,255,124,123,123,255,123,122,123,255, -123,122,122,255,124,123,122,255,126,125,125,255,128,127,127,255,131,130,130,255,134,133,134,255,137,137,138,255,142,142,143,255, -146,147,148,255,151,152,153,255,155,156,157,255,160,161,162,255,163,165,166,255,167,169,170,255,171,173,175,255,174,177,179,255, -177,178,181,255,179,181,184,255,181,184,186,255,182,184,187,255,183,185,188,255,182,184,186,255,179,181,183,255,175,177,179,255, -169,171,174,255,163,165,166,255,158,159,160,255,152,152,153,255,147,147,148,255,141,141,142,255,137,137,137,255,132,132,132,255, -128,127,127,255,123,122,122,255,119,117,117,255,115,113,112,255,113,111,110,255,113,111,110,255,114,112,111,255,114,112,111,255, -111,109,107,255,107,105,103,255,107,104,102,255,107,105,103,255,111,109,107,255,115,113,112,255,119,118,117,255,123,122,122,255, -125,124,124,255,123,122,122,255,119,117,116,255,116,114,112,255,117,114,112,255,120,118,116,255,122,120,118,255, 91, 90, 89,255, - 61, 61, 61,255, 60, 60, 60,255,122,123,124,255,177,179,181,255,174,176,178,255,171,174,176,255,169,171,174,255,166,168,170,255, -163,165,167,255,160,161,163,255,156,158,159,255,153,154,155,255,150,150,152,255,147,148,149,255,145,146,146,255,143,144,144,255, -142,142,143,255,141,141,142,255,139,139,140,255,138,139,139,255,138,138,138,255,137,137,138,255,136,136,137,255,135,135,136,255, -135,134,135,255,134,134,134,255,133,133,133,255,132,132,132,255,131,131,131,255,131,130,130,255,130,130,130,255,129,128,129,255, -128,128,128,255,128,127,127,255,127,127,127,255,126,126,126,255,125,124,124,255,125,124,124,255,125,124,123,255,123,122,122,255, -123,122,122,255,124,123,122,255,126,125,124,255,128,127,127,255,131,130,130,255,133,133,133,255,137,137,137,255,141,141,142,255, -145,146,147,255,149,150,151,255,153,154,156,255,157,158,160,255,161,162,163,255,164,166,167,255,168,169,171,255,171,173,175,255, -173,175,177,255,176,178,180,255,178,180,183,255,181,183,186,255,181,184,186,255,182,184,187,255,181,183,186,255,177,180,182,255, -172,174,176,255,166,167,169,255,159,161,162,255,154,155,156,255,148,148,150,255,143,143,144,255,138,138,139,255,133,133,133,255, -129,129,129,255,125,124,124,255,120,120,119,255,117,115,114,255,114,112,111,255,113,111,110,255,114,112,111,255,116,114,113,255, -115,113,112,255,113,110,110,255,110,108,107,255,109,107,106,255,111,109,107,255,114,112,111,255,116,115,115,255,120,119,119,255, -123,122,122,255,122,120,119,255,116,114,114,255,115,113,111,255,117,114,112,255,120,118,116,255,121,119,117,255, 90, 89, 88,255, - 61, 61, 61,255, 60, 60, 60,255,123,124,125,255,179,181,183,255,176,179,181,255,174,176,178,255,171,173,176,255,169,171,173,255, -166,168,169,255,162,164,166,255,159,160,162,255,156,157,159,255,153,154,155,255,150,151,152,255,148,148,150,255,146,147,148,255, -145,146,146,255,143,144,145,255,143,143,144,255,141,141,142,255,140,141,141,255,140,140,141,255,139,139,140,255,138,138,138,255, -137,137,138,255,137,137,136,255,135,135,136,255,135,134,135,255,134,134,134,255,132,132,132,255,131,131,131,255,130,130,130,255, -129,129,129,255,128,128,128,255,128,127,127,255,127,126,126,255,126,125,125,255,125,124,124,255,124,123,123,255,124,123,122,255, -123,122,121,255,124,123,122,255,126,125,124,255,128,127,127,255,130,129,129,255,133,132,132,255,136,136,137,255,140,140,140,255, -143,144,145,255,147,148,149,255,151,152,153,255,155,156,157,255,158,159,160,255,161,162,164,255,164,165,167,255,167,169,171,255, -170,172,173,255,173,175,177,255,176,178,180,255,178,180,182,255,180,182,185,255,181,183,186,255,181,183,186,255,179,181,183,255, -175,177,179,255,168,170,172,255,162,163,164,255,155,156,157,255,149,150,151,255,144,145,146,255,140,140,141,255,136,135,135,255, -131,131,131,255,127,126,126,255,123,122,121,255,119,117,117,255,116,114,113,255,114,112,111,255,114,112,111,255,116,114,113,255, -116,115,114,255,116,114,113,255,114,112,111,255,112,111,109,255,112,110,109,255,114,111,110,255,116,114,113,255,118,117,116,255, -121,119,119,255,119,118,117,255,114,112,111,255,115,113,110,255,117,115,112,255,120,118,116,255,121,118,116,255, 89, 88, 86,255, - 61, 61, 61,255, 60, 60, 60,255,124,125,127,255,181,184,186,255,178,180,183,255,176,179,181,255,174,176,179,255,171,173,176,255, -169,171,173,255,166,167,169,255,162,164,166,255,160,161,163,255,157,158,160,255,154,155,157,255,152,153,155,255,151,152,153,255, -149,149,151,255,148,148,150,255,147,147,149,255,146,146,147,255,144,145,146,255,143,144,145,255,142,142,143,255,142,142,143,255, -141,141,142,255,139,139,140,255,138,138,139,255,137,137,138,255,136,136,136,255,135,135,135,255,134,134,134,255,132,132,132,255, -131,131,131,255,129,129,129,255,129,128,128,255,128,127,127,255,126,125,125,255,125,124,124,255,124,123,123,255,123,122,121,255, -124,123,121,255,123,122,122,255,125,124,124,255,128,127,127,255,130,129,129,255,132,132,132,255,135,135,135,255,138,138,138,255, -141,141,142,255,145,145,146,255,148,149,150,255,151,152,153,255,155,156,157,255,158,159,160,255,161,162,164,255,164,165,167,255, -166,168,170,255,170,171,173,255,172,175,177,255,174,176,179,255,177,179,182,255,180,182,184,255,180,182,186,255,180,182,185,255, -176,178,180,255,171,173,175,255,163,165,166,255,156,157,159,255,151,152,153,255,145,146,147,255,141,141,142,255,137,137,137,255, -133,132,133,255,129,128,128,255,125,124,124,255,121,120,119,255,118,116,115,255,115,113,112,255,114,112,111,255,115,113,112,255, -118,116,115,255,118,116,116,255,118,116,115,255,115,114,113,255,115,113,112,255,115,114,113,255,116,114,113,255,117,116,115,255, -118,117,116,255,116,114,113,255,113,109,108,255,116,113,110,255,117,114,112,255,120,118,115,255,119,117,115,255, 89, 86, 85,255, - 61, 61, 61,255, 60, 60, 60,255,125,126,128,255,184,186,189,255,181,183,186,255,179,181,183,255,177,179,182,255,174,176,179,255, -171,174,176,255,169,171,173,255,166,168,170,255,164,166,168,255,161,163,165,255,159,161,163,255,157,159,160,255,155,157,158,255, -154,155,157,255,153,154,156,255,152,152,154,255,150,152,153,255,150,151,152,255,148,149,150,255,147,148,149,255,145,147,148,255, -145,145,146,255,143,144,145,255,142,142,143,255,140,141,142,255,139,139,140,255,138,138,138,255,135,135,136,255,134,134,135,255, -132,132,133,255,131,131,131,255,129,129,130,255,128,128,128,255,127,126,126,255,125,124,123,255,124,123,122,255,122,121,120,255, -123,122,121,255,124,123,121,255,125,124,123,255,127,126,126,255,129,128,128,255,132,131,131,255,134,134,134,255,137,137,138,255, -140,140,141,255,143,144,145,255,146,147,148,255,149,150,151,255,152,153,154,255,155,157,158,255,158,159,161,255,161,162,164,255, -163,165,167,255,166,168,170,255,169,171,173,255,172,174,176,255,174,176,178,255,177,179,181,255,179,182,184,255,180,182,185,255, -177,179,182,255,172,174,176,255,165,167,168,255,159,160,161,255,152,153,154,255,147,147,149,255,142,142,143,255,137,138,138,255, -134,133,134,255,130,129,129,255,126,126,125,255,122,121,121,255,119,118,117,255,116,115,113,255,115,113,112,255,115,113,112,255, -116,114,114,255,118,117,116,255,119,118,117,255,119,117,116,255,118,116,115,255,117,115,114,255,117,115,115,255,117,116,115,255, -117,116,115,255,114,111,109,255,112,109,106,255,115,112,109,255,116,114,111,255,119,117,115,255,118,116,113,255, 87, 85, 83,255, - 61, 61, 61,255, 60, 60, 60,255,126,127,129,255,185,188,191,255,183,185,188,255,181,184,186,255,179,181,183,255,177,179,182,255, -175,177,179,255,172,175,177,255,171,173,175,255,168,170,172,255,167,169,171,255,164,166,168,255,163,164,166,255,162,163,164,255, -159,161,163,255,158,160,161,255,157,159,160,255,156,157,158,255,154,156,157,255,153,155,156,255,151,153,154,255,150,151,153,255, -149,150,151,255,147,148,149,255,146,146,148,255,144,145,146,255,142,143,143,255,140,140,141,255,138,138,139,255,136,136,137,255, -134,134,135,255,133,132,133,255,131,130,130,255,129,129,129,255,127,126,125,255,124,123,123,255,123,122,122,255,122,121,120,255, -122,121,121,255,123,122,121,255,125,124,123,255,126,126,125,255,128,128,128,255,131,130,130,255,133,133,133,255,136,136,137,255, -139,139,139,255,142,142,143,255,145,146,147,255,147,148,149,255,151,151,153,255,153,154,155,255,156,157,158,255,158,159,160,255, -160,162,163,255,163,165,167,255,166,167,169,255,168,170,172,255,172,174,176,255,175,176,178,255,177,179,181,255,178,181,183,255, -177,180,182,255,174,176,178,255,167,168,170,255,159,161,162,255,153,153,155,255,148,148,149,255,143,143,144,255,139,139,140,255, -135,135,135,255,131,131,131,255,127,127,127,255,124,122,122,255,120,119,118,255,118,117,116,255,116,115,114,255,115,113,112,255, -116,114,113,255,118,116,116,255,120,119,118,255,120,119,118,255,120,119,118,255,119,118,117,255,119,118,117,255,118,117,116,255, -116,115,113,255,111,109,106,255,113,110,106,255,115,112,109,255,115,112,109,255,119,117,113,255,116,113,111,255, 86, 84, 81,255, - 61, 61, 61,255, 60, 60, 60,255,127,129,130,255,188,190,193,255,184,188,190,255,183,186,188,255,182,184,186,255,179,182,184,255, -178,180,182,255,176,178,181,255,175,177,179,255,173,175,177,255,171,174,176,255,170,172,175,255,168,170,173,255,167,169,171,255, -166,168,169,255,164,165,168,255,163,164,166,255,162,163,165,255,160,161,163,255,158,160,162,255,157,158,160,255,155,156,158,255, -153,155,156,255,152,153,154,255,149,150,151,255,148,149,150,255,146,146,147,255,143,144,145,255,141,142,143,255,139,139,140,255, -136,136,137,255,133,133,134,255,132,132,132,255,130,129,129,255,127,126,126,255,124,123,123,255,123,122,122,255,122,121,122,255, -122,121,121,255,122,121,121,255,124,123,123,255,126,125,125,255,127,126,126,255,130,130,130,255,133,132,132,255,135,134,135,255, -138,138,138,255,141,141,142,255,143,143,144,255,146,147,147,255,149,150,151,255,151,152,153,255,154,155,156,255,156,157,158,255, -158,159,160,255,160,162,163,255,164,165,167,255,165,167,169,255,169,171,173,255,172,174,176,255,175,177,179,255,177,179,182,255, -177,180,182,255,174,176,178,255,168,170,172,255,160,161,163,255,154,155,156,255,148,149,150,255,144,144,145,255,139,139,140,255, -136,136,136,255,133,132,132,255,129,128,128,255,125,124,124,255,122,121,120,255,119,118,117,255,117,116,115,255,117,115,114,255, -116,114,114,255,117,116,115,255,119,117,117,255,121,119,119,255,121,120,120,255,122,121,121,255,121,120,119,255,120,119,118,255, -116,115,114,255,111,108,105,255,113,111,108,255,114,111,108,255,114,112,109,255,117,114,112,255,115,112,108,255, 84, 82, 79,255, - 61, 61, 61,255, 60, 60, 60,255,128,129,131,255,189,192,195,255,187,190,192,255,185,188,191,255,184,187,190,255,182,185,187,255, -181,184,186,255,180,182,185,255,179,181,184,255,178,180,182,255,177,179,182,255,175,178,180,255,174,177,179,255,173,175,177,255, -171,173,176,255,170,172,174,255,168,170,172,255,167,169,171,255,165,167,169,255,163,165,167,255,161,163,165,255,159,161,163,255, -157,159,160,255,156,157,158,255,153,154,156,255,151,152,153,255,149,150,151,255,146,147,148,255,143,144,145,255,140,141,142,255, -138,138,138,255,136,135,136,255,133,132,132,255,130,129,129,255,128,127,127,255,125,124,124,255,124,123,122,255,123,122,121,255, -123,122,121,255,123,122,121,255,124,123,123,255,126,125,125,255,127,126,126,255,130,129,129,255,132,132,132,255,134,134,134,255, -137,137,138,255,140,140,141,255,142,144,144,255,145,146,147,255,147,148,149,255,150,151,152,255,152,153,155,255,155,155,157,255, -156,158,159,255,159,160,161,255,161,163,164,255,164,165,167,255,166,168,170,255,169,171,173,255,173,175,177,255,175,177,180,255, -176,179,181,255,174,175,177,255,168,170,172,255,160,162,163,255,154,155,157,255,149,149,150,255,144,144,145,255,140,140,141,255, -137,136,137,255,133,133,133,255,130,129,129,255,126,125,125,255,123,122,122,255,120,119,118,255,118,117,116,255,117,116,115,255, -117,115,114,255,117,115,115,255,118,117,116,255,120,119,119,255,122,120,120,255,123,122,122,255,123,122,121,255,122,121,120,255, -117,114,112,255,113,111,107,255,115,112,109,255,114,111,108,255,113,110,107,255,116,113,111,255,112,109,105,255, 83, 80, 77,255, - 61, 61, 61,255, 60, 60, 60,255,129,131,132,255,191,194,198,255,189,192,195,255,188,191,194,255,186,189,192,255,185,188,191,255, -185,186,189,255,183,186,188,255,183,185,188,255,182,184,187,255,181,184,186,255,180,183,185,255,179,181,184,255,178,180,183,255, -176,180,182,255,175,178,180,255,174,176,179,255,172,175,176,255,170,172,174,255,169,171,173,255,166,168,170,255,164,166,168,255, -162,164,165,255,160,161,163,255,157,158,160,255,155,156,157,255,152,153,154,255,149,150,151,255,146,147,148,255,143,144,145,255, -140,140,141,255,137,137,137,255,134,133,134,255,132,131,131,255,129,128,128,255,126,125,125,255,124,123,123,255,124,123,122,255, -123,122,122,255,123,122,122,255,124,123,123,255,126,125,125,255,127,126,126,255,130,129,129,255,132,132,132,255,134,133,134,255, -137,137,137,255,140,140,140,255,143,143,144,255,145,145,146,255,147,147,149,255,149,150,151,255,151,152,153,255,153,154,155,255, -155,157,158,255,157,158,159,255,159,160,162,255,162,164,165,255,165,166,168,255,167,169,171,255,170,172,174,255,174,176,178,255, -175,178,180,255,173,175,177,255,168,170,172,255,160,162,163,255,155,155,157,255,149,150,151,255,145,145,146,255,141,141,142,255, -137,137,138,255,134,134,134,255,131,130,130,255,127,127,127,255,124,123,123,255,122,120,120,255,119,118,118,255,118,116,116,255, -117,116,115,255,118,116,115,255,118,117,116,255,120,119,118,255,122,120,120,255,123,122,122,255,124,123,123,255,122,122,120,255, -117,114,112,255,117,115,112,255,117,115,112,255,113,111,108,255,112,109,106,255,114,111,108,255,106,102, 98,255, 66, 65, 62,255, - 61, 61, 61,255, 60, 60, 60,255,130,131,133,255,193,196,199,255,192,194,197,255,190,192,195,255,189,192,195,255,188,191,194,255, -187,190,193,255,187,190,192,255,186,189,192,255,185,188,191,255,185,188,190,255,184,187,190,255,183,186,188,255,182,185,188,255, -182,184,187,255,180,182,185,255,179,181,184,255,178,180,182,255,176,178,181,255,174,176,178,255,172,174,176,255,170,172,174,255, -167,169,170,255,164,166,167,255,161,163,165,255,159,160,161,255,156,157,158,255,152,153,154,255,150,150,151,255,146,146,147,255, -142,142,143,255,139,139,139,255,136,136,136,255,133,132,132,255,130,129,129,255,128,127,127,255,126,125,125,255,125,124,123,255, -124,123,123,255,125,124,124,255,125,124,124,255,126,125,125,255,127,127,127,255,130,129,129,255,132,132,132,255,135,134,134,255, -137,137,137,255,139,140,140,255,141,143,142,255,144,145,146,255,147,147,148,255,149,150,151,255,150,151,152,255,152,153,154,255, -153,155,156,255,156,157,158,255,158,159,160,255,160,161,163,255,163,164,166,255,165,167,169,255,169,171,173,255,172,174,176,255, -173,175,177,255,173,175,177,255,167,169,171,255,160,162,164,255,155,156,157,255,149,150,151,255,145,145,146,255,141,141,142,255, -137,137,138,255,135,134,135,255,131,131,131,255,128,127,127,255,125,124,124,255,122,121,121,255,120,119,118,255,119,118,118,255, -119,118,117,255,118,118,117,255,120,118,118,255,120,119,119,255,122,120,120,255,124,122,121,255,125,123,122,255,122,120,117,255, -120,118,115,255,121,118,116,255,119,116,115,255,113,111,108,255,111,108,104,255,112,109,106,255,100, 96, 91,255, 50, 49, 47,255, - 61, 61, 61,255, 60, 60, 60,255,131,132,134,255,195,198,201,255,193,196,199,255,192,195,198,255,192,194,198,255,190,194,196,255, -190,193,196,255,190,193,196,255,190,192,195,255,189,192,195,255,189,191,194,255,187,190,193,255,187,189,192,255,186,189,192,255, -185,188,191,255,184,188,189,255,183,186,188,255,182,185,187,255,180,183,185,255,179,181,184,255,177,178,181,255,174,177,179,255, -172,174,175,255,168,170,172,255,165,167,169,255,163,164,165,255,159,161,162,255,156,157,158,255,153,153,155,255,149,150,151,255, -145,145,147,255,142,142,143,255,139,138,139,255,135,135,135,255,132,132,132,255,130,129,129,255,128,127,127,255,127,126,125,255, -126,125,125,255,126,125,125,255,126,125,125,255,127,127,126,255,128,127,127,255,130,129,130,255,132,132,132,255,134,135,134,255, -137,137,137,255,140,140,141,255,141,143,143,255,144,145,145,255,146,147,148,255,148,149,150,255,150,151,152,255,151,152,153,255, -153,154,155,255,155,156,157,255,157,158,159,255,159,160,162,255,161,163,165,255,164,166,167,255,167,169,171,255,170,172,174,255, -172,174,176,255,171,173,175,255,166,168,169,255,160,161,163,255,154,155,156,255,149,150,151,255,145,146,147,255,141,141,142,255, -138,138,138,255,135,135,135,255,132,131,131,255,129,128,128,255,126,125,125,255,123,122,122,255,122,120,120,255,120,119,118,255, -119,118,117,255,119,118,117,255,120,119,118,255,121,120,119,255,122,121,120,255,123,122,120,255,123,121,119,255,120,118,116,255, -122,120,118,255,124,122,120,255,121,119,117,255,114,111,109,255,109,106,103,255,109,106,102,255, 93, 88, 80,255, 28, 28, 28,255, - 62, 62, 62,255, 60, 60, 60,255,132,133,135,255,197,200,204,255,195,198,201,255,194,197,201,255,193,196,199,255,193,196,199,255, -193,196,199,255,192,195,198,255,192,194,198,255,191,194,197,255,190,193,196,255,190,193,196,255,190,193,196,255,189,192,195,255, -189,192,195,255,188,191,193,255,187,189,192,255,186,189,192,255,184,186,189,255,182,185,187,255,180,183,185,255,178,181,183,255, -175,177,180,255,172,174,176,255,170,171,173,255,166,168,169,255,163,165,166,255,160,161,162,255,156,157,159,255,153,154,155,255, -149,150,150,255,145,145,146,255,141,141,142,255,138,138,138,255,135,135,135,255,133,132,132,255,131,130,130,255,129,128,128,255, -128,127,127,255,128,127,127,255,127,127,126,255,128,127,127,255,129,128,128,255,131,130,131,255,133,133,133,255,135,134,135,255, -137,137,138,255,140,140,141,255,142,143,144,255,144,145,146,255,146,147,148,255,148,149,150,255,150,150,152,255,151,152,153,255, -153,154,155,255,154,155,156,255,156,157,158,255,158,160,161,255,159,161,162,255,162,164,166,255,165,167,169,255,168,170,172,255, -171,173,175,255,168,170,172,255,165,166,168,255,159,160,162,255,154,155,156,255,149,150,151,255,145,146,147,255,142,142,143,255, -138,138,139,255,136,135,136,255,132,132,132,255,129,129,129,255,126,125,125,255,124,123,123,255,122,121,120,255,120,120,118,255, -119,118,118,255,120,118,118,255,120,119,118,255,121,119,118,255,121,120,119,255,122,120,118,255,119,117,114,255,120,118,115,255, -124,122,120,255,126,124,122,255,123,121,120,255,116,113,110,255,108,105,102,255,107,103, 98,255, 59, 55, 50,255, 25, 25, 26,255, - 62, 62, 62,255, 60, 60, 60,255,132,134,136,255,199,202,205,255,197,200,204,255,196,199,203,255,196,199,202,255,195,199,202,255, -195,198,201,255,194,197,200,255,194,197,200,255,193,196,199,255,193,196,199,255,193,196,199,255,192,195,198,255,192,195,198,255, -191,194,197,255,190,193,197,255,190,193,196,255,189,191,194,255,187,190,193,255,186,188,191,255,183,186,189,255,181,183,185,255, -179,181,183,255,175,177,180,255,172,174,176,255,170,171,173,255,167,168,170,255,163,164,166,255,160,161,163,255,156,157,158,255, -152,153,154,255,148,149,150,255,144,144,145,255,141,141,141,255,139,138,139,255,136,135,135,255,133,133,133,255,132,132,132,255, -131,130,130,255,131,130,130,255,130,129,129,255,130,130,130,255,131,131,131,255,132,131,131,255,134,133,134,255,136,136,137,255, -138,138,138,255,140,140,141,255,143,143,144,255,144,145,146,255,146,147,148,255,149,149,151,255,149,150,151,255,151,152,153,255, -153,154,155,255,154,155,156,255,155,156,158,255,157,158,160,255,159,160,162,255,162,163,165,255,165,166,168,255,166,168,170,255, -168,170,173,255,167,169,171,255,163,164,166,255,158,159,160,255,153,154,155,255,149,150,151,255,146,146,147,255,142,142,143,255, -138,138,139,255,136,135,136,255,133,132,132,255,130,129,129,255,127,127,126,255,124,123,123,255,123,121,121,255,122,120,120,255, -120,118,118,255,119,118,117,255,119,117,116,255,120,118,116,255,119,117,115,255,118,116,114,255,117,114,111,255,120,117,115,255, -124,122,120,255,127,126,124,255,125,123,122,255,116,114,111,255,108,104,101,255,104, 99, 93,255, 13, 12, 10,255, 28, 28, 28,255, - 62, 62, 62,255, 60, 60, 60,255,134,135,137,255,200,203,207,255,199,202,205,255,198,201,205,255,197,201,204,255,197,200,203,255, -196,199,203,255,196,199,202,255,195,198,202,255,194,197,201,255,194,197,200,255,194,197,200,255,193,196,200,255,193,196,199,255, -193,196,199,255,192,195,198,255,191,194,197,255,191,193,196,255,189,191,195,255,187,190,193,255,186,188,191,255,183,186,188,255, -180,183,185,255,178,180,182,255,175,177,179,255,172,174,176,255,170,171,173,255,167,168,170,255,163,164,166,255,159,160,162,255, -156,156,158,255,152,152,153,255,148,149,149,255,144,144,145,255,142,142,143,255,139,139,140,255,137,137,137,255,135,135,135,255, -133,134,134,255,133,132,132,255,132,131,131,255,133,132,132,255,133,133,133,255,133,133,133,255,134,135,135,255,137,137,137,255, -139,139,140,255,141,141,142,255,143,144,145,255,144,146,147,255,147,148,149,255,149,149,151,255,150,151,152,255,151,152,153,255, -153,154,155,255,153,155,156,255,155,156,157,255,157,158,159,255,158,160,161,255,161,162,163,255,163,165,166,255,165,167,169,255, -166,168,170,255,165,166,169,255,161,163,165,255,156,157,158,255,152,153,154,255,149,149,151,255,146,146,147,255,142,142,143,255, -139,139,140,255,136,136,136,255,133,133,133,255,130,130,130,255,128,127,127,255,125,124,124,255,123,122,122,255,122,119,119,255, -120,119,118,255,119,117,116,255,118,117,115,255,118,116,114,255,117,114,111,255,115,113,110,255,116,114,110,255,120,117,114,255, -125,123,121,255,128,127,125,255,126,125,123,255,117,115,112,255,107,103, 99,255, 79, 75, 69,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,202,205,209,255,200,203,206,255,200,203,206,255,199,202,205,255,198,201,205,255, -198,201,204,255,197,200,203,255,196,199,203,255,196,199,202,255,195,198,201,255,195,198,201,255,194,197,201,255,194,197,200,255, -194,197,200,255,193,196,200,255,192,195,198,255,192,194,198,255,190,193,196,255,188,191,194,255,187,190,193,255,185,187,190,255, -182,185,187,255,181,182,184,255,178,180,182,255,175,177,178,255,172,174,175,255,169,171,173,255,166,168,170,255,163,164,166,255, -159,160,161,255,155,156,157,255,152,152,153,255,148,149,149,255,146,146,147,255,143,143,144,255,140,140,141,255,139,139,139,255, -138,137,137,255,136,136,136,255,135,135,135,255,135,135,135,255,134,134,134,255,136,136,136,255,137,137,137,255,138,138,139,255, -140,140,141,255,142,143,144,255,144,144,145,255,146,147,148,255,147,148,149,255,149,150,151,255,150,151,152,255,151,152,153,255, -153,154,155,255,153,154,156,255,155,156,157,255,156,157,159,255,158,159,161,255,159,161,163,255,162,163,165,255,163,165,167,255, -164,166,168,255,162,164,166,255,159,160,162,255,156,157,158,255,151,152,153,255,148,149,150,255,146,146,147,255,143,143,144,255, -139,139,140,255,137,137,137,255,134,133,134,255,131,130,130,255,128,128,128,255,125,125,124,255,123,122,122,255,122,120,120,255, -120,119,118,255,119,117,116,255,117,115,114,255,115,113,111,255,114,111,108,255,114,111,108,255,115,112,110,255,119,116,114,255, -124,123,121,255,129,127,126,255,128,126,125,255,117,114,112,255,105,100, 95,255, 21, 20, 18,255, 0, 0, 0,255, 29, 29, 29,255, - 62, 62, 62,255, 60, 60, 60,255,135,136,138,255,203,206,210,255,202,205,208,255,201,204,207,255,201,204,207,255,200,203,206,255, -199,202,205,255,198,201,205,255,198,201,204,255,197,200,203,255,197,200,203,255,196,199,203,255,196,199,202,255,196,199,202,255, -195,198,201,255,194,197,201,255,194,197,200,255,192,195,198,255,191,194,197,255,190,192,196,255,188,190,193,255,186,188,191,255, -184,186,189,255,181,184,186,255,179,181,183,255,177,179,181,255,174,176,178,255,172,173,175,255,169,170,172,255,166,167,169,255, -162,164,165,255,159,160,161,255,155,156,157,255,152,153,154,255,150,150,151,255,147,147,148,255,145,145,146,255,143,143,144,255, -142,142,142,255,140,140,140,255,139,139,139,255,139,139,139,255,138,138,139,255,139,138,139,255,140,140,140,255,141,141,141,255, -142,143,144,255,144,145,146,255,146,146,147,255,147,148,149,255,148,149,150,255,150,151,152,255,151,152,153,255,152,153,154,255, -153,154,155,255,153,155,156,255,154,155,157,255,156,157,159,255,157,158,160,255,159,160,162,255,160,161,163,255,161,163,165,255, -162,163,165,255,160,162,163,255,157,159,160,255,155,155,157,255,151,152,153,255,148,149,150,255,146,146,147,255,143,143,144,255, -139,140,140,255,137,137,138,255,134,134,134,255,131,131,131,255,129,128,128,255,126,125,125,255,123,122,122,255,122,121,120,255, -120,118,117,255,118,116,115,255,115,113,111,255,113,110,108,255,111,108,105,255,111,109,105,255,114,111,108,255,118,116,114,255, -124,123,121,255,129,128,126,255,129,127,126,255,117,114,112,255, 75, 72, 68,255, 4, 3, 3,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,135,137,138,255,204,207,210,255,202,205,209,255,202,205,208,255,201,205,208,255,201,204,207,255, -200,203,207,255,199,202,206,255,198,201,205,255,198,201,204,255,197,200,204,255,196,199,203,255,196,199,202,255,195,198,202,255, -195,198,201,255,195,198,201,255,193,196,200,255,193,196,199,255,192,195,198,255,190,193,196,255,188,191,194,255,187,189,192,255, -185,187,190,255,182,184,187,255,180,182,185,255,178,180,182,255,176,178,180,255,174,176,177,255,171,172,174,255,169,170,172,255, -165,167,168,255,162,163,165,255,159,160,161,255,155,157,158,255,154,154,155,255,151,152,153,255,150,150,151,255,149,148,150,255, -147,148,148,255,146,146,147,255,145,145,146,255,144,144,145,255,144,144,145,255,144,144,144,255,144,144,145,255,145,145,146,255, -145,146,147,255,146,147,148,255,149,149,150,255,150,150,151,255,150,151,152,255,152,152,154,255,152,153,154,255,153,154,155,255, -153,154,156,255,154,155,156,255,154,155,157,255,156,157,158,255,156,158,159,255,158,159,161,255,158,160,161,255,159,161,163,255, -159,161,163,255,158,160,161,255,156,157,158,255,153,154,155,255,151,152,153,255,148,149,150,255,146,146,147,255,143,143,144,255, -140,141,141,255,138,138,138,255,134,135,134,255,132,132,132,255,130,129,129,255,127,126,126,255,124,123,123,255,122,121,119,255, -120,118,117,255,117,115,114,255,114,112,110,255,111,109,106,255,110,107,103,255,111,107,104,255,113,111,108,255,118,116,113,255, -124,122,121,255,129,128,127,255,128,126,125,255,115,112,109,255, 44, 42, 39,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,135,137,138,255,205,208,211,255,203,206,209,255,203,206,210,255,202,205,209,255,202,205,208,255, -201,204,207,255,200,203,207,255,199,202,205,255,198,201,205,255,197,200,204,255,197,200,203,255,196,200,204,255,196,199,203,255, -195,198,202,255,195,198,202,255,194,197,200,255,193,196,199,255,192,195,198,255,190,193,196,255,189,192,195,255,188,190,193,255, -185,187,190,255,184,186,188,255,182,184,186,255,179,181,183,255,178,180,182,255,176,178,179,255,174,175,177,255,171,172,174,255, -169,170,171,255,165,167,168,255,162,163,165,255,160,160,163,255,158,159,160,255,156,157,158,255,155,155,156,255,154,155,156,255, -154,154,155,255,154,154,155,255,153,154,155,255,152,153,153,255,152,152,153,255,151,151,152,255,150,151,152,255,150,151,152,255, -150,151,152,255,151,152,153,255,151,152,153,255,153,153,155,255,153,154,155,255,154,155,156,255,154,155,156,255,154,155,156,255, -154,155,156,255,154,156,157,255,154,155,158,255,155,156,158,255,156,157,158,255,156,157,159,255,157,158,160,255,158,159,161,255, -158,160,162,255,156,157,159,255,155,156,157,255,153,154,155,255,150,151,152,255,148,149,150,255,146,147,148,255,144,144,145,255, -141,141,142,255,139,139,139,255,136,135,136,255,133,132,132,255,131,130,130,255,128,127,127,255,124,123,123,255,122,121,120,255, -119,118,117,255,116,114,113,255,113,111,108,255,110,106,103,255,108,104,101,255,110,106,103,255,113,110,107,255,117,114,112,255, -123,122,120,255,129,128,126,255,127,126,124,255,108,105,102,255, 16, 15, 13,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,135,137,138,255,205,208,211,255,203,206,210,255,204,207,209,255,204,207,210,255,203,206,209,255, -202,205,208,255,201,204,208,255,200,203,207,255,199,202,206,255,199,202,205,255,198,201,204,255,197,200,204,255,196,200,203,255, -196,199,202,255,196,199,202,255,194,197,200,255,193,196,199,255,193,195,198,255,192,193,196,255,189,192,195,255,188,191,194,255, -186,189,192,255,184,187,189,255,182,184,187,255,181,183,185,255,179,181,183,255,177,179,181,255,175,177,179,255,173,175,176,255, -171,172,174,255,169,170,171,255,166,167,168,255,163,165,165,255,162,163,164,255,161,162,163,255,161,162,163,255,161,162,163,255, -162,163,164,255,162,163,164,255,162,163,164,255,162,163,164,255,161,162,164,255,160,161,162,255,159,160,161,255,158,159,160,255, -158,158,160,255,157,158,159,255,157,158,159,255,156,157,158,255,156,157,159,255,156,157,159,255,156,158,159,255,156,157,159,255, -156,157,158,255,155,156,158,255,155,156,157,255,154,155,156,255,154,155,157,255,154,156,157,255,156,158,160,255,158,159,161,255, -157,158,160,255,156,157,158,255,154,156,157,255,153,153,155,255,150,151,152,255,149,149,150,255,147,147,148,255,144,144,145,255, -142,142,143,255,139,139,140,255,136,136,137,255,134,134,134,255,131,130,130,255,128,127,127,255,125,124,124,255,122,121,120,255, -119,117,115,255,115,113,111,255,112,109,106,255,108,104,102,255,107,103, 99,255,108,105,101,255,111,108,106,255,116,114,111,255, -123,121,119,255,128,127,126,255,126,124,122,255, 95, 93, 88,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,135,136,138,255,205,208,210,255,204,207,209,255,204,206,210,255,203,206,209,255,203,206,209,255, -203,206,209,255,202,205,208,255,201,204,207,255,200,203,206,255,199,202,205,255,198,201,205,255,198,201,204,255,197,201,204,255, -196,199,202,255,196,199,202,255,194,197,200,255,193,196,199,255,193,195,199,255,191,194,197,255,190,193,196,255,189,191,194,255, -187,189,192,255,186,187,190,255,183,186,188,255,181,183,185,255,179,181,183,255,178,180,182,255,176,177,179,255,175,177,178,255, -174,175,176,255,171,172,173,255,169,169,170,255,167,167,168,255,166,166,167,255,166,166,167,255,166,167,167,255,168,168,169,255, -169,170,170,255,171,171,172,255,171,172,173,255,171,172,173,255,170,172,173,255,169,171,172,255,168,169,171,255,166,168,169,255, -165,166,168,255,164,166,167,255,162,164,166,255,162,163,164,255,161,162,163,255,160,161,162,255,159,160,162,255,158,159,161,255, -157,158,159,255,156,157,158,255,155,156,157,255,153,155,156,255,154,155,157,255,155,157,158,255,157,158,160,255,158,159,161,255, -157,158,160,255,156,157,158,255,154,155,156,255,153,153,155,255,151,152,153,255,149,150,151,255,147,148,149,255,145,145,146,255, -143,143,144,255,140,140,141,255,138,137,138,255,135,134,135,255,132,131,131,255,129,128,128,255,125,124,123,255,122,121,120,255, -119,116,115,255,115,113,110,255,111,108,105,255,107,104,100,255,106,102, 99,255,107,104,100,255,110,107,104,255,115,112,110,255, -121,119,117,255,127,125,124,255,123,121,118,255, 59, 57, 53,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,135,136,137,255,205,207,209,255,204,206,209,255,203,207,209,255,204,207,210,255,204,207,209,255, -204,207,210,255,203,206,209,255,201,204,208,255,201,204,207,255,200,203,206,255,199,202,205,255,199,202,205,255,197,200,203,255, -197,200,203,255,196,199,202,255,194,197,200,255,194,196,200,255,193,196,199,255,191,194,197,255,190,193,196,255,190,192,195,255, -187,190,193,255,186,188,191,255,184,186,188,255,181,183,185,255,180,182,183,255,178,179,181,255,175,177,178,255,174,175,176,255, -173,173,174,255,170,171,172,255,169,169,169,255,168,168,168,255,168,168,168,255,169,169,169,255,171,171,172,255,173,174,175,255, -174,175,176,255,175,176,177,255,176,177,179,255,176,178,179,255,176,177,179,255,176,177,179,255,175,177,178,255,173,175,177,255, -172,174,176,255,171,172,174,255,169,170,172,255,168,169,171,255,166,168,169,255,164,165,167,255,163,164,166,255,161,162,164,255, -158,160,161,255,157,158,160,255,156,157,159,255,155,157,158,255,158,159,161,255,159,160,162,255,159,160,162,255,159,160,162,255, -158,159,160,255,156,157,158,255,154,156,157,255,153,154,155,255,151,152,153,255,149,150,151,255,148,149,150,255,146,146,147,255, -143,144,145,255,142,142,142,255,139,139,139,255,136,135,136,255,133,133,133,255,130,129,129,255,125,125,125,255,123,121,120,255, -119,117,115,255,115,112,110,255,109,106,104,255,107,103,100,255,105,101, 98,255,106,103, 99,255,109,106,103,255,113,110,107,255, -120,118,116,255,125,124,122,255,118,116,113,255, 22, 20, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,134,135,136,255,203,205,207,255,202,205,207,255,203,205,208,255,204,206,208,255,204,206,209,255, -204,207,210,255,203,206,209,255,202,205,208,255,202,205,208,255,201,204,207,255,200,203,206,255,199,202,205,255,199,202,205,255, -197,200,203,255,196,199,202,255,196,198,202,255,194,197,200,255,193,196,199,255,191,194,197,255,191,193,196,255,190,192,195,255, -188,190,193,255,186,189,191,255,184,186,188,255,181,183,185,255,178,180,181,255,175,176,178,255,173,174,175,255,170,171,171,255, -169,169,169,255,169,168,168,255,169,169,169,255,170,170,170,255,172,173,173,255,174,175,175,255,175,176,177,255,177,178,179,255, -178,180,181,255,179,180,182,255,180,182,184,255,180,182,183,255,180,182,184,255,180,182,184,255,180,182,184,255,179,181,183,255, -177,179,182,255,176,178,180,255,175,177,179,255,174,176,177,255,172,174,175,255,170,172,173,255,168,170,172,255,167,169,170,255, -164,166,169,255,163,165,167,255,163,165,167,255,163,165,167,255,163,165,167,255,163,165,167,255,162,163,165,255,160,162,163,255, -159,160,161,255,157,158,160,255,155,156,158,255,154,155,156,255,152,152,154,255,150,151,152,255,149,149,150,255,146,147,148,255, -145,145,146,255,142,143,143,255,140,140,140,255,137,137,137,255,134,134,134,255,131,130,130,255,127,126,125,255,123,122,120,255, -119,116,115,255,114,111,109,255,109,106,103,255,106,103, 99,255,104,101, 97,255,105,101, 98,255,107,104,101,255,112,109,106,255, -117,116,114,255,123,121,120,255,110,107,103,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,134,135,136,255,202,204,206,255,202,203,205,255,202,204,206,255,203,205,207,255,203,206,208,255, -204,206,209,255,204,206,209,255,202,205,209,255,202,205,208,255,201,204,207,255,200,203,206,255,200,202,206,255,199,202,205,255, -197,200,203,255,197,200,203,255,195,199,201,255,194,197,200,255,193,196,199,255,192,194,197,255,191,194,196,255,190,192,195,255, -188,190,193,255,186,188,190,255,183,184,187,255,179,181,182,255,175,176,177,255,172,172,172,255,167,167,167,255,166,165,165,255, -166,166,165,255,169,168,168,255,171,171,171,255,173,174,174,255,175,176,176,255,177,178,179,255,179,180,181,255,180,181,182,255, -181,183,184,255,183,184,186,255,184,186,187,255,185,186,188,255,184,186,189,255,184,187,189,255,184,187,189,255,184,186,189,255, -183,186,188,255,182,185,187,255,182,184,186,255,181,183,185,255,180,182,184,255,179,182,184,255,178,180,183,255,178,180,182,255, -176,178,181,255,175,177,180,255,173,176,178,255,172,174,176,255,170,172,174,255,168,170,171,255,165,167,168,255,163,164,166,255, -160,162,163,255,158,160,161,255,157,158,159,255,154,155,156,255,153,154,155,255,151,152,153,255,149,150,151,255,148,148,149,255, -146,146,147,255,144,144,145,255,142,141,142,255,139,138,138,255,135,135,135,255,132,131,131,255,128,127,126,255,123,121,121,255, -118,116,115,255,114,111,109,255,109,106,103,255,106,102, 99,255,104,100, 96,255,104,101, 97,255,106,103, 99,255,111,108,105,255, -116,114,112,255,120,118,116,255, 84, 82, 78,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,134,135,136,255,203,204,206,255,201,203,205,255,202,202,205,255,202,203,204,255,202,204,206,255, -203,205,207,255,203,206,207,255,202,206,208,255,203,205,207,255,202,205,208,255,201,203,206,255,200,203,206,255,199,202,205,255, -198,201,204,255,197,199,203,255,195,198,201,255,194,197,200,255,194,196,199,255,192,194,197,255,191,193,196,255,190,192,195,255, -187,189,191,255,184,186,188,255,180,182,184,255,176,176,178,255,171,171,171,255,166,166,165,255,164,164,163,255,165,165,164,255, -167,167,167,255,170,171,171,255,172,173,174,255,174,174,175,255,176,177,178,255,178,179,180,255,180,181,182,255,182,183,185,255, -184,185,187,255,184,186,188,255,187,188,190,255,187,189,191,255,188,190,192,255,189,191,194,255,189,191,193,255,188,191,193,255, -188,191,193,255,189,190,193,255,187,190,193,255,187,189,192,255,187,189,192,255,186,189,192,255,186,189,192,255,186,189,192,255, -185,188,191,255,184,187,190,255,182,184,187,255,179,181,184,255,176,178,180,255,173,175,176,255,169,171,173,255,166,167,169,255, -163,165,166,255,160,162,163,255,158,159,160,255,157,157,159,255,154,155,156,255,152,153,154,255,151,152,153,255,149,149,150,255, -147,147,148,255,145,146,147,255,143,143,144,255,140,140,140,255,137,137,137,255,133,133,132,255,129,128,127,255,124,123,122,255, -118,116,115,255,113,111,108,255,109,105,102,255,106,102, 99,255,104,100, 96,255,104,100, 96,255,105,101, 98,255,109,105,102,255, -115,112,110,255,117,115,112,255, 64, 60, 58,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,134,135,137,255,203,205,206,255,201,203,205,255,201,203,204,255,200,202,204,255,201,203,204,255, -201,203,205,255,202,204,206,255,203,205,207,255,203,205,207,255,202,205,207,255,201,204,206,255,200,203,206,255,200,202,205,255, -198,201,204,255,197,200,203,255,196,198,201,255,194,197,200,255,194,196,199,255,192,194,197,255,191,193,196,255,188,191,192,255, -186,187,189,255,182,183,184,255,176,177,178,255,171,172,172,255,167,166,166,255,165,165,164,255,166,167,166,255,168,169,169,255, -170,171,171,255,171,172,173,255,172,173,174,255,173,174,175,255,174,175,176,255,176,177,178,255,179,180,181,255,181,182,184,255, -183,185,186,255,185,187,189,255,188,189,191,255,188,190,193,255,190,192,195,255,191,193,196,255,192,194,197,255,192,194,197,255, -192,194,197,255,192,194,197,255,192,194,197,255,192,194,197,255,191,194,197,255,191,194,197,255,191,194,197,255,191,193,197,255, -190,193,196,255,189,192,195,255,187,190,193,255,185,187,190,255,181,184,187,255,177,179,182,255,173,175,177,255,170,172,174,255, -167,169,170,255,164,165,166,255,161,162,163,255,158,159,160,255,155,156,158,255,153,154,156,255,152,153,154,255,150,151,151,255, -148,149,150,255,147,147,148,255,144,144,145,255,142,142,142,255,138,138,138,255,134,134,134,255,130,129,128,255,125,123,122,255, -119,117,115,255,113,111,109,255,109,106,103,255,106,102, 99,255,104,100, 96,255,103, 99, 95,255,104,101, 97,255,108,104,101,255, -113,110,107,255,114,111,108,255, 45, 44, 42,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,205,209,255,202,204,207,255,202,204,206,255,201,203,205,255,201,203,204,255, -201,202,204,255,201,203,204,255,202,203,205,255,202,204,206,255,202,204,206,255,201,203,206,255,201,203,206,255,200,203,205,255, -198,201,204,255,198,200,203,255,197,198,201,255,195,197,200,255,193,196,198,255,192,194,196,255,189,191,194,255,187,188,190,255, -182,183,185,255,178,178,179,255,172,173,173,255,168,168,168,255,167,167,167,255,168,168,169,255,170,171,171,255,172,172,173,255, -173,174,175,255,173,174,175,255,173,174,175,255,173,174,175,255,173,175,176,255,174,176,177,255,177,178,179,255,179,180,182,255, -182,184,185,255,185,187,189,255,188,190,192,255,190,192,195,255,191,193,196,255,192,194,197,255,193,196,198,255,194,196,199,255, -194,197,200,255,194,197,200,255,194,197,200,255,194,197,200,255,193,196,199,255,193,196,199,255,193,196,199,255,193,196,199,255, -193,196,199,255,193,195,198,255,191,194,197,255,189,191,194,255,186,188,191,255,182,185,187,255,178,180,183,255,174,176,178,255, -170,172,174,255,166,168,169,255,163,165,166,255,160,162,163,255,157,158,160,255,155,156,158,255,153,154,155,255,152,152,153,255, -150,151,152,255,148,148,149,255,146,146,147,255,143,143,144,255,139,139,140,255,136,135,135,255,131,130,130,255,125,124,123,255, -120,118,116,255,114,112,110,255,109,106,104,255,106,103, 99,255,104,100, 96,255,102, 98, 94,255,104,100, 96,255,107,104,100,255, -112,109,106,255,110,107,103,255, 24, 23, 22,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,204,206,209,255,202,205,208,255,203,206,208,255,203,205,208,255,202,204,206,255, -202,204,205,255,201,203,204,255,200,202,203,255,201,202,204,255,201,203,204,255,201,203,206,255,201,203,205,255,200,202,205,255, -198,201,203,255,198,200,203,255,196,198,201,255,195,197,200,255,193,196,198,255,191,193,195,255,188,189,191,255,184,185,187,255, -179,179,180,255,174,174,175,255,170,170,170,255,170,170,170,255,171,171,171,255,172,173,174,255,174,175,176,255,175,176,177,255, -176,177,178,255,174,175,176,255,173,174,176,255,173,174,175,255,174,175,175,255,173,174,176,255,175,176,177,255,178,179,180,255, -181,182,184,255,184,186,188,255,187,189,192,255,190,192,195,255,191,194,196,255,193,196,198,255,194,196,199,255,195,197,200,255, -196,198,201,255,196,199,202,255,196,199,202,255,196,198,202,255,195,197,201,255,195,198,201,255,195,198,201,255,195,198,201,255, -195,198,201,255,195,198,201,255,194,197,200,255,191,194,198,255,190,192,195,255,186,189,191,255,182,185,187,255,178,180,183,255, -174,176,178,255,170,172,174,255,167,168,169,255,163,164,166,255,160,161,163,255,157,158,159,255,156,156,158,255,153,154,155,255, -151,152,153,255,150,150,151,255,148,148,149,255,145,145,145,255,142,142,142,255,137,137,137,255,132,131,131,255,127,126,125,255, -121,119,117,255,115,113,110,255,110,107,105,255,107,103,100,255,104,100, 97,255,102, 99, 94,255,103,100, 96,255,106,103,100,255, -111,108,105,255,107,103,100,255, 18, 18, 17,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,206,209,255,203,205,209,255,202,206,209,255,202,206,209,255,203,206,208,255, -203,205,208,255,203,204,206,255,202,203,205,255,200,203,204,255,200,202,203,255,200,202,204,255,201,203,205,255,199,201,204,255, -199,201,203,255,198,200,203,255,197,200,201,255,195,197,200,255,193,195,197,255,190,192,194,255,186,188,190,255,182,183,183,255, -176,177,177,255,172,173,173,255,171,172,172,255,172,173,173,255,174,175,176,255,176,177,178,255,177,178,180,255,177,178,180,255, -177,178,179,255,176,177,178,255,174,175,177,255,174,175,176,255,173,174,175,255,173,174,175,255,174,175,177,255,177,178,179,255, -179,181,183,255,183,185,187,255,187,189,191,255,190,192,195,255,191,194,198,255,193,196,199,255,194,197,200,255,196,198,201,255, -196,199,202,255,197,199,202,255,197,200,203,255,197,199,203,255,196,199,202,255,196,199,202,255,196,199,202,255,196,199,202,255, -196,199,202,255,196,199,202,255,195,198,202,255,194,197,200,255,192,195,198,255,190,193,195,255,186,189,191,255,182,185,187,255, -178,180,182,255,174,176,178,255,170,171,173,255,167,168,169,255,163,164,166,255,160,161,162,255,157,158,159,255,155,156,157,255, -153,154,155,255,151,152,153,255,149,149,150,255,147,147,147,255,143,143,143,255,139,139,139,255,134,133,133,255,128,127,126,255, -122,120,118,255,117,115,112,255,112,109,106,255,108,105,102,255,105,101, 98,255,104,100, 95,255,103,100, 95,255,106,102, 99,255, -110,107,103,255, 99, 95, 91,255, 13, 12, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,134,135,137,255,203,206,209,255,202,205,208,255,203,206,209,255,202,206,208,255,203,205,209,255, -204,206,209,255,203,206,208,255,203,205,208,255,202,204,206,255,201,203,205,255,201,202,204,255,200,202,204,255,200,202,204,255, -199,201,203,255,199,201,203,255,197,200,202,255,196,198,201,255,194,196,198,255,190,192,193,255,185,187,188,255,180,181,182,255, -176,176,177,255,174,174,175,255,174,175,175,255,175,176,178,255,177,178,180,255,179,181,182,255,179,181,183,255,179,180,182,255, -178,179,181,255,177,178,180,255,175,177,178,255,174,175,177,255,173,174,175,255,173,174,175,255,174,175,176,255,175,176,178,255, -178,180,181,255,183,184,186,255,186,189,191,255,189,192,194,255,191,194,197,255,193,196,199,255,195,197,200,255,196,198,201,255, -197,200,203,255,197,199,203,255,197,200,203,255,197,200,203,255,197,200,203,255,196,199,202,255,196,199,202,255,196,199,202,255, -197,199,203,255,197,200,203,255,197,199,203,255,196,199,202,255,195,198,201,255,192,195,198,255,190,192,195,255,186,188,191,255, -182,184,186,255,177,179,182,255,173,175,177,255,169,171,172,255,165,167,168,255,163,164,165,255,160,161,162,255,157,158,159,255, -155,156,157,255,153,154,155,255,151,151,152,255,148,148,149,255,144,145,145,255,141,140,141,255,136,135,135,255,130,129,128,255, -125,123,121,255,119,117,115,255,114,111,108,255,109,107,104,255,106,103, 99,255,103,100, 96,255,104,100, 96,255,106,102, 99,255, -109,106,103,255, 88, 84, 81,255, 8, 8, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,133,135,137,255,202,205,208,255,201,204,207,255,201,204,208,255,202,205,208,255,202,205,209,255, -203,206,210,255,204,206,210,255,204,207,209,255,204,206,209,255,203,206,208,255,202,204,206,255,202,204,205,255,202,203,205,255, -201,203,205,255,200,202,204,255,199,201,203,255,197,199,201,255,195,196,199,255,190,192,194,255,186,188,189,255,181,183,184,255, -177,178,179,255,177,177,178,255,176,177,179,255,179,180,181,255,180,182,183,255,181,183,184,255,181,183,185,255,180,182,184,255, -180,181,183,255,177,179,181,255,176,178,179,255,175,176,178,255,173,174,175,255,172,173,174,255,171,172,173,255,174,175,176,255, -177,179,181,255,181,183,185,255,185,187,190,255,189,191,194,255,191,193,196,255,193,196,199,255,195,197,200,255,196,200,203,255, -197,199,203,255,198,200,204,255,198,200,204,255,197,200,203,255,198,201,204,255,198,201,204,255,198,201,204,255,198,201,204,255, -198,201,203,255,198,201,204,255,198,201,204,255,197,200,203,255,196,199,202,255,195,198,201,255,192,195,198,255,189,192,195,255, -185,187,190,255,181,183,186,255,177,179,180,255,172,174,176,255,169,170,172,255,166,166,168,255,162,164,165,255,160,161,162,255, -157,158,159,255,155,156,157,255,153,153,154,255,150,150,151,255,147,147,148,255,143,143,142,255,138,137,136,255,133,132,131,255, -127,125,124,255,121,119,117,255,117,114,112,255,111,108,105,255,107,104,101,255,104,101, 97,255,104,100, 96,255,107,103,100,255, -109,105,101,255, 67, 64, 61,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,132,134,136,255,199,203,206,255,199,202,205,255,199,203,206,255,201,204,207,255,201,204,208,255, -202,205,208,255,203,205,209,255,203,206,209,255,204,207,210,255,204,207,210,255,203,206,209,255,203,205,208,255,202,204,206,255, -202,204,206,255,201,203,205,255,200,202,205,255,199,201,203,255,197,198,201,255,193,195,197,255,188,190,191,255,183,185,186,255, -180,182,182,255,179,181,182,255,180,181,182,255,181,182,184,255,182,184,186,255,183,184,187,255,182,184,186,255,182,183,185,255, -180,182,184,255,179,180,182,255,176,178,180,255,175,176,178,255,172,174,175,255,171,172,173,255,170,171,173,255,173,174,175,255, -176,178,180,255,180,182,184,255,184,186,189,255,188,190,192,255,190,193,195,255,193,196,199,255,195,197,200,255,196,199,202,255, -198,200,204,255,197,201,203,255,198,201,204,255,198,201,204,255,198,201,204,255,198,201,204,255,198,201,204,255,198,201,204,255, -198,200,204,255,198,201,204,255,198,201,205,255,198,201,204,255,197,200,204,255,196,199,202,255,195,197,201,255,191,194,197,255, -188,191,193,255,184,186,189,255,180,182,184,255,176,178,179,255,172,173,175,255,168,170,171,255,166,166,168,255,162,164,165,255, -160,161,162,255,157,158,159,255,155,156,157,255,152,153,153,255,149,149,149,255,145,145,145,255,141,140,139,255,135,134,133,255, -130,128,127,255,124,122,120,255,119,116,114,255,114,111,109,255,109,106,103,255,106,103, 99,255,106,101, 98,255,108,104,100,255, -108,104,101,255, 39, 37, 35,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,131,132,134,255,196,199,202,255,196,199,202,255,197,200,203,255,197,201,204,255,198,202,205,255, -200,203,207,255,201,204,208,255,202,205,208,255,203,206,209,255,204,207,210,255,204,207,210,255,204,206,209,255,203,206,208,255, -203,205,208,255,203,205,207,255,202,204,207,255,201,203,205,255,199,201,203,255,195,197,200,255,191,193,194,255,186,189,189,255, -184,185,187,255,183,184,186,255,183,184,186,255,183,185,187,255,184,186,188,255,184,186,188,255,183,185,187,255,182,184,187,255, -181,183,185,255,179,181,183,255,176,178,180,255,174,176,177,255,172,173,174,255,170,171,172,255,170,171,172,255,172,173,174,255, -176,177,178,255,180,180,182,255,184,185,188,255,187,189,192,255,190,192,195,255,192,195,198,255,194,197,200,255,197,198,201,255, -197,200,203,255,198,201,204,255,198,201,204,255,198,201,204,255,198,201,204,255,198,201,204,255,198,201,204,255,198,201,204,255, -197,200,203,255,199,201,205,255,199,202,204,255,199,202,205,255,198,201,204,255,197,200,204,255,196,199,202,255,193,196,199,255, -190,193,196,255,187,189,192,255,182,184,187,255,178,180,182,255,174,176,178,255,171,172,174,255,168,169,171,255,165,166,167,255, -162,163,165,255,160,161,162,255,157,158,159,255,155,155,156,255,151,151,152,255,147,147,147,255,143,142,142,255,138,137,136,255, -133,131,130,255,127,125,124,255,122,120,118,255,116,113,111,255,112,109,106,255,108,105,101,255,107,104,100,255,110,107,103,255, -101, 98, 93,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,129,131,133,255,193,196,199,255,192,195,198,255,193,196,199,255,194,197,200,255,196,199,202,255, -197,200,203,255,198,201,204,255,200,203,206,255,201,204,207,255,201,205,208,255,203,206,209,255,203,206,209,255,204,207,210,255, -204,207,210,255,204,207,209,255,204,206,209,255,202,205,207,255,200,203,205,255,198,200,203,255,193,196,199,255,189,191,194,255, -187,189,191,255,185,188,190,255,185,187,190,255,186,188,190,255,186,188,190,255,185,187,190,255,184,186,188,255,183,185,187,255, -182,184,186,255,179,181,183,255,176,179,180,255,174,175,177,255,171,172,173,255,169,170,171,255,169,170,171,255,171,172,174,255, -175,176,178,255,178,180,182,255,182,184,186,255,186,188,190,255,189,191,194,255,192,194,197,255,194,197,200,255,195,198,201,255, -197,199,203,255,198,200,204,255,198,201,204,255,198,200,203,255,198,201,204,255,198,201,204,255,198,201,204,255,197,200,203,255, -199,202,205,255,198,201,204,255,199,202,205,255,198,201,205,255,199,202,205,255,198,201,204,255,196,199,202,255,195,198,201,255, -192,194,197,255,188,190,193,255,185,187,189,255,181,183,185,255,177,179,181,255,174,176,177,255,171,172,173,255,168,169,170,255, -165,167,168,255,163,164,165,255,160,161,161,255,157,157,158,255,154,154,155,255,150,150,150,255,146,145,145,255,141,140,139,255, -135,134,133,255,130,129,127,255,125,124,122,255,119,117,115,255,115,112,109,255,111,108,104,255,110,107,103,255,113,109,105,255, - 34, 33, 31,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,128,129,131,255,190,193,196,255,190,192,195,255,190,193,195,255,190,193,196,255,191,194,197,255, -193,196,199,255,194,197,200,255,195,199,202,255,197,200,204,255,199,202,205,255,200,203,207,255,201,204,208,255,203,206,209,255, -203,206,209,255,203,206,210,255,204,207,210,255,203,206,209,255,202,205,208,255,200,202,205,255,196,199,202,255,193,195,198,255, -190,192,194,255,188,190,193,255,187,189,192,255,187,189,192,255,186,188,191,255,186,188,191,255,184,186,189,255,183,185,188,255, -181,183,186,255,179,181,183,255,176,178,179,255,172,174,175,255,170,171,173,255,167,168,169,255,168,169,170,255,171,172,173,255, -174,175,177,255,178,179,181,255,181,183,185,255,185,187,189,255,188,190,193,255,191,193,196,255,193,195,198,255,195,197,200,255, -196,199,202,255,197,199,203,255,197,200,203,255,198,201,204,255,198,200,203,255,198,201,204,255,198,201,204,255,197,200,203,255, -199,202,205,255,198,201,204,255,199,202,205,255,199,202,205,255,199,202,205,255,198,201,204,255,197,199,203,255,196,198,201,255, -193,195,198,255,190,193,195,255,186,188,192,255,183,185,187,255,179,181,183,255,176,178,180,255,174,175,176,255,171,172,173,255, -168,169,170,255,165,165,166,255,163,164,165,255,160,160,161,255,156,156,158,255,152,152,153,255,148,148,148,255,143,143,143,255, -139,137,136,255,134,132,131,255,128,127,125,255,123,121,118,255,117,114,112,255,113,110,106,255,113,110,106,255, 76, 73, 70,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,127,128,130,255,188,191,194,255,187,190,193,255,187,190,193,255,188,190,193,255,188,191,193,255, -190,192,195,255,190,193,196,255,192,194,198,255,194,197,200,255,195,198,202,255,197,200,204,255,199,202,205,255,200,203,207,255, -201,204,208,255,203,206,209,255,203,206,210,255,203,206,210,255,203,206,209,255,201,204,207,255,199,201,204,255,195,198,201,255, -192,195,198,255,190,192,195,255,188,191,193,255,187,190,193,255,187,189,192,255,186,189,191,255,184,187,189,255,183,185,188,255, -181,183,185,255,178,180,182,255,175,176,178,255,171,173,174,255,168,169,170,255,166,167,168,255,167,168,169,255,170,171,172,255, -173,174,176,255,176,178,180,255,181,182,183,255,184,186,188,255,187,189,192,255,189,192,194,255,192,195,198,255,194,197,200,255, -195,198,201,255,197,199,202,255,198,199,202,255,198,200,203,255,197,201,204,255,198,201,204,255,198,201,204,255,197,200,203,255, -198,201,204,255,199,202,205,255,199,201,204,255,198,202,205,255,199,202,205,255,198,201,204,255,197,199,202,255,196,198,201,255, -194,196,199,255,191,193,196,255,188,190,192,255,185,187,189,255,182,184,186,255,179,180,181,255,175,177,178,255,173,175,176,255, -171,172,173,255,168,169,170,255,165,166,167,255,163,163,164,255,159,159,160,255,155,156,156,255,152,151,151,255,147,147,146,255, -142,142,141,255,137,136,134,255,131,130,128,255,126,123,122,255,120,117,114,255,116,113,110,255,103,100, 97,255, 16, 15, 14,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,126,128,129,255,188,190,193,255,186,189,192,255,185,188,191,255,185,188,191,255,186,188,191,255, -186,189,192,255,187,190,193,255,189,192,195,255,190,193,196,255,192,195,198,255,194,197,200,255,196,199,202,255,197,200,203,255, -199,202,206,255,200,203,207,255,201,204,208,255,202,205,208,255,202,205,208,255,201,204,207,255,199,202,206,255,196,199,202,255, -193,196,199,255,191,194,197,255,190,192,195,255,188,190,193,255,187,190,192,255,186,188,191,255,184,187,189,255,182,184,187,255, -180,182,184,255,177,179,181,255,174,175,177,255,170,172,173,255,167,168,169,255,165,166,167,255,166,167,168,255,169,170,171,255, -173,174,175,255,176,177,179,255,179,181,183,255,183,185,187,255,185,188,190,255,188,191,193,255,191,194,196,255,193,195,198,255, -195,198,200,255,196,198,201,255,196,199,202,255,197,199,202,255,198,200,203,255,198,200,203,255,198,201,204,255,198,201,204,255, -198,200,203,255,198,201,204,255,198,201,204,255,198,201,204,255,198,200,203,255,197,201,203,255,196,198,201,255,195,198,200,255, -193,196,198,255,191,193,195,255,188,190,192,255,186,188,190,255,183,185,186,255,181,182,184,255,178,179,181,255,175,177,178,255, -174,175,176,255,171,172,173,255,168,169,170,255,166,166,167,255,162,163,164,255,159,159,160,255,155,155,155,255,151,150,150,255, -146,146,145,255,140,140,139,255,135,133,132,255,128,127,125,255,123,121,118,255,118,115,111,255, 48, 46, 44,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,127,129,130,255,188,192,194,255,187,190,193,255,186,189,192,255,186,188,191,255,185,188,191,255, -185,188,191,255,186,188,191,255,186,189,192,255,188,190,193,255,189,192,194,255,191,194,197,255,193,196,199,255,195,198,201,255, -196,199,202,255,198,201,204,255,199,203,206,255,200,203,207,255,200,204,207,255,200,203,206,255,199,202,205,255,197,200,203,255, -194,197,200,255,192,195,198,255,190,193,196,255,188,191,194,255,187,190,193,255,186,188,191,255,184,186,189,255,182,184,186,255, -178,180,183,255,176,177,178,255,172,173,175,255,168,169,171,255,166,167,168,255,165,165,166,255,166,167,168,255,169,170,171,255, -172,173,174,255,175,176,178,255,179,180,182,255,181,183,185,255,185,186,189,255,187,190,192,255,189,192,194,255,192,194,197,255, -193,196,199,255,195,198,201,255,196,198,201,255,197,200,203,255,197,199,202,255,197,199,202,255,198,201,204,255,198,201,204,255, -197,201,204,255,197,201,203,255,197,200,203,255,198,200,203,255,197,200,202,255,196,199,202,255,195,198,201,255,194,196,198,255, -192,194,196,255,190,193,194,255,188,190,192,255,186,188,190,255,184,185,187,255,182,183,185,255,180,181,182,255,178,179,180,255, -176,177,178,255,174,175,176,255,171,172,173,255,168,169,170,255,166,167,167,255,163,163,164,255,159,159,160,255,155,155,155,255, -150,150,149,255,145,144,142,255,138,136,135,255,131,129,127,255,128,124,121,255, 67, 65, 63,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,128,129,131,255,190,193,195,255,188,191,194,255,188,191,193,255,187,189,192,255,186,189,192,255, -186,188,191,255,185,188,191,255,185,188,191,255,186,189,192,255,188,191,193,255,189,192,195,255,191,194,197,255,193,196,199,255, -194,197,200,255,196,199,202,255,197,200,204,255,198,201,205,255,199,202,206,255,199,202,206,255,198,201,204,255,197,200,203,255, -194,197,200,255,193,196,199,255,191,193,197,255,188,191,194,255,187,190,193,255,185,188,191,255,183,185,187,255,181,183,185,255, -177,179,181,255,174,175,177,255,170,171,173,255,166,167,169,255,165,166,167,255,165,165,166,255,165,166,167,255,168,169,170,255, -171,172,174,255,174,176,177,255,177,179,180,255,180,182,184,255,183,185,187,255,185,187,190,255,188,190,193,255,191,193,196,255, -192,195,197,255,194,196,199,255,195,198,201,255,196,199,202,255,197,200,203,255,198,200,203,255,198,200,203,255,198,200,203,255, -198,200,203,255,197,199,202,255,197,199,202,255,196,199,201,255,195,197,200,255,195,197,199,255,194,196,198,255,192,194,196,255, -191,193,194,255,190,191,193,255,188,189,191,255,186,188,189,255,184,186,187,255,183,184,185,255,181,182,183,255,180,181,182,255, -178,179,180,255,176,177,178,255,174,175,176,255,172,173,173,255,169,170,170,255,166,167,167,255,163,163,163,255,159,159,159,255, -155,154,154,255,149,148,148,255,142,141,139,255,136,133,131,255, 73, 71, 68,255, 2, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,129,130,132,255,192,195,198,255,190,193,196,255,190,193,195,255,189,192,195,255,189,191,193,255, -187,190,193,255,187,190,193,255,187,190,193,255,187,190,193,255,187,190,193,255,189,191,194,255,190,193,196,255,191,194,197,255, -193,196,199,255,194,197,200,255,195,198,202,255,197,200,203,255,197,200,203,255,197,200,203,255,196,200,203,255,196,199,202,255, -194,197,200,255,193,196,199,255,191,194,197,255,188,191,194,255,187,190,193,255,185,187,190,255,182,184,187,255,179,181,183,255, -176,178,180,255,172,174,176,255,168,170,171,255,165,166,167,255,163,164,165,255,164,164,165,255,164,165,166,255,168,169,170,255, -171,172,173,255,173,174,176,255,176,178,179,255,179,181,183,255,181,183,185,255,184,186,189,255,186,189,191,255,189,191,194,255, -191,193,196,255,193,195,198,255,194,196,199,255,195,198,201,255,196,198,201,255,196,199,201,255,196,198,201,255,196,198,201,255, -195,198,200,255,195,197,200,255,194,196,198,255,194,195,198,255,193,195,197,255,191,193,195,255,191,192,194,255,190,192,193,255, -189,190,192,255,188,189,191,255,187,188,189,255,186,186,187,255,185,186,187,255,183,184,186,255,183,184,184,255,181,182,182,255, -180,181,181,255,179,179,180,255,176,178,178,255,175,176,176,255,173,173,174,255,170,170,171,255,167,167,167,255,163,163,163,255, -158,157,156,255,153,152,151,255,143,142,140,255, 90, 89, 87,255, 2, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,129,131,132,255,193,196,199,255,191,194,197,255,191,193,196,255,190,193,196,255,190,192,195,255, -189,192,195,255,188,191,194,255,188,191,194,255,188,191,194,255,188,191,194,255,189,192,195,255,189,192,195,255,190,193,196,255, -192,195,198,255,193,196,199,255,194,197,200,255,195,198,201,255,196,199,202,255,196,199,202,255,196,199,202,255,195,198,201,255, -193,196,200,255,192,195,198,255,190,193,196,255,188,191,194,255,186,188,192,255,184,186,188,255,181,183,186,255,178,180,182,255, -175,176,177,255,171,172,173,255,166,167,169,255,164,164,165,255,163,163,165,255,163,164,165,255,164,165,166,255,167,168,169,255, -169,170,172,255,172,173,175,255,175,176,178,255,177,179,181,255,180,182,184,255,183,185,187,255,184,187,189,255,187,189,192,255, -189,191,194,255,191,194,196,255,193,195,198,255,194,197,199,255,194,197,200,255,195,197,200,255,195,197,200,255,194,196,198,255, -193,195,197,255,192,194,196,255,191,192,194,255,189,191,192,255,189,190,191,255,188,189,191,255,188,189,189,255,187,188,189,255, -187,188,188,255,186,187,187,255,186,186,187,255,185,185,186,255,184,185,185,255,184,184,184,255,183,184,184,255,182,182,183,255, -181,182,182,255,180,181,181,255,179,180,180,255,177,178,178,255,175,176,176,255,173,173,173,255,170,170,169,255,164,164,164,255, -162,161,160,255,142,141,139,255, 65, 63, 62,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,129,131,133,255,194,196,200,255,191,194,197,255,191,194,197,255,191,194,197,255,190,193,196,255, -190,193,196,255,190,192,195,255,189,192,195,255,189,192,195,255,189,192,195,255,189,192,195,255,190,192,195,255,190,193,196,255, -192,194,198,255,192,195,198,255,193,196,200,255,194,197,200,255,194,198,201,255,195,198,201,255,195,198,201,255,194,197,200,255, -193,196,200,255,192,194,198,255,190,193,196,255,188,190,193,255,186,189,191,255,183,185,188,255,180,182,184,255,176,178,180,255, -172,174,176,255,168,170,171,255,166,166,167,255,163,164,165,255,162,163,164,255,163,163,164,255,164,164,165,255,166,167,168,255, -169,170,171,255,171,172,174,255,173,175,176,255,176,178,180,255,179,181,183,255,181,183,185,255,183,185,187,255,185,187,190,255, -187,189,191,255,189,191,194,255,190,192,195,255,191,193,196,255,192,194,196,255,192,194,196,255,192,193,196,255,190,192,194,255, -189,191,192,255,188,189,190,255,186,187,188,255,185,186,187,255,185,185,186,255,184,185,185,255,184,185,185,255,184,185,185,255, -184,184,184,255,184,184,184,255,184,184,184,255,184,184,184,255,184,184,184,255,184,184,184,255,183,184,183,255,183,183,183,255, -183,183,182,255,181,182,182,255,180,180,180,255,179,178,178,255,177,177,177,255,173,173,172,255,171,171,169,255,167,166,164,255, -111,109,108,255, 21, 21, 20,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,130,131,133,255,194,197,200,255,193,195,199,255,193,195,199,255,192,194,198,255,192,195,198,255, -191,194,197,255,191,194,197,255,190,193,196,255,190,192,195,255,189,192,195,255,189,192,195,255,190,193,196,255,190,194,197,255, -191,194,197,255,191,194,197,255,192,195,198,255,193,196,199,255,193,196,199,255,193,196,200,255,193,196,199,255,193,196,199,255, -192,195,198,255,191,194,197,255,190,192,195,255,187,190,193,255,186,187,191,255,182,185,187,255,179,181,183,255,175,177,179,255, -171,173,174,255,167,168,170,255,164,165,166,255,162,164,165,255,161,162,163,255,162,163,164,255,163,164,165,255,166,167,168,255, -168,169,171,255,171,172,173,255,173,174,176,255,176,177,179,255,177,179,181,255,180,181,183,255,181,183,186,255,183,185,187,255, -184,186,190,255,186,188,190,255,187,189,191,255,187,189,191,255,188,189,191,255,187,189,191,255,186,188,189,255,185,187,188,255, -184,185,186,255,182,183,184,255,181,182,182,255,181,181,181,255,181,181,181,255,181,181,180,255,181,181,180,255,181,181,181,255, -182,182,181,255,182,182,181,255,182,182,182,255,182,182,182,255,182,183,182,255,183,184,182,255,183,183,182,255,182,181,181,255, -183,183,181,255,182,182,181,255,180,180,179,255,178,178,177,255,170,170,169,255,160,159,156,255,117,116,115,255, 33, 32, 31,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,130,131,133,255,194,197,200,255,193,196,199,255,193,195,199,255,193,194,199,255,192,194,198,255, -192,195,198,255,192,194,198,255,191,193,197,255,191,193,196,255,190,193,196,255,190,192,195,255,190,192,195,255,191,193,196,255, -191,194,197,255,191,194,197,255,192,195,198,255,192,195,198,255,192,195,199,255,193,196,199,255,192,195,199,255,192,195,198,255, -191,194,197,255,190,193,196,255,189,191,194,255,187,189,192,255,185,187,189,255,181,184,186,255,178,180,182,255,175,176,178,255, -170,172,173,255,166,167,168,255,163,164,165,255,162,163,164,255,161,162,163,255,162,163,164,255,163,164,165,255,166,167,168,255, -168,169,170,255,170,171,172,255,173,174,175,255,174,176,177,255,176,178,180,255,178,180,181,255,180,182,183,255,181,182,184,255, -182,184,186,255,183,184,186,255,183,184,186,255,182,184,185,255,182,183,184,255,181,183,184,255,181,182,182,255,180,181,182,255, -179,180,180,255,178,178,178,255,177,178,178,255,177,177,177,255,177,177,177,255,178,178,178,255,179,179,179,255,179,179,179,255, -180,180,180,255,181,181,180,255,181,181,181,255,182,182,181,255,182,182,182,255,182,182,182,255,183,182,182,255,183,183,181,255, -175,174,173,255,148,148,147,255,125,124,124,255, 93, 93, 91,255, 55, 55, 54,255, 20, 20, 19,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,129,131,132,255,193,196,199,255,192,195,198,255,192,195,198,255,192,194,198,255,192,195,198,255, -191,194,197,255,192,195,198,255,191,193,197,255,190,194,197,255,191,194,197,255,189,192,195,255,190,193,196,255,191,192,195,255, -190,194,197,255,191,194,196,255,191,194,198,255,192,195,198,255,192,195,198,255,192,195,198,255,192,195,198,255,192,195,198,255, -191,194,197,255,190,192,196,255,188,191,194,255,186,188,191,255,184,186,189,255,181,182,185,255,177,179,181,255,173,174,176,255, -169,170,172,255,166,167,168,255,163,164,165,255,162,163,164,255,162,163,164,255,162,163,164,255,163,164,165,255,166,167,168,255, -168,169,170,255,169,170,172,255,172,173,174,255,173,175,176,255,176,177,179,255,177,178,180,255,178,179,181,255,179,181,182,255, -180,181,182,255,179,180,182,255,179,180,181,255,178,179,180,255,177,177,178,255,176,177,178,255,176,177,177,255,176,176,176,255, -176,176,176,255,175,175,175,255,175,175,175,255,175,175,175,255,175,175,175,255,176,176,176,255,177,177,177,255,177,177,177,255, -178,178,178,255,178,178,178,255,178,178,179,255,179,179,178,255,177,177,175,255,170,170,168,255,162,161,159,255,151,149,148,255, - 51, 50, 50,255, 9, 9, 9,255, 6, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,129,131,132,255,192,195,199,255,191,194,197,255,191,194,197,255,191,194,197,255,191,194,197,255, -191,194,197,255,190,193,196,255,191,194,197,255,191,193,196,255,190,193,196,255,189,192,195,255,189,193,196,255,189,192,195,255, -190,193,196,255,190,193,196,255,191,194,196,255,190,193,197,255,191,194,197,255,191,194,197,255,191,194,197,255,191,194,197,255, -190,193,196,255,189,192,195,255,188,191,194,255,185,188,191,255,183,185,187,255,180,182,184,255,176,178,180,255,172,174,175,255, -169,170,171,255,165,166,167,255,163,164,165,255,162,163,164,255,162,163,164,255,163,164,165,255,164,165,166,255,166,166,167,255, -168,169,170,255,170,171,172,255,171,172,174,255,173,174,176,255,174,175,177,255,176,177,177,255,176,177,179,255,177,178,179,255, -177,178,179,255,176,177,178,255,175,176,177,255,174,175,176,255,173,173,174,255,173,173,173,255,172,173,173,255,172,173,173,255, -172,173,173,255,172,172,172,255,173,173,173,255,173,173,173,255,174,174,174,255,174,174,174,255,174,174,174,255,173,173,173,255, -172,172,172,255,169,167,166,255,161,160,157,255,152,151,148,255,147,146,144,255,148,147,146,255,143,141,139,255, 58, 57, 55,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,129,130,131,255,192,195,198,255,191,194,197,255,191,194,197,255,191,194,197,255,190,194,197,255, -190,194,197,255,190,194,197,255,190,193,196,255,190,193,196,255,189,192,195,255,190,193,196,255,190,193,196,255,190,193,196,255, -189,192,195,255,189,192,195,255,190,193,196,255,190,193,197,255,190,193,196,255,190,193,196,255,190,194,197,255,190,193,196,255, -189,192,195,255,188,191,194,255,187,189,192,255,185,187,190,255,182,184,187,255,178,181,183,255,175,176,179,255,171,173,174,255, -168,169,170,255,165,166,167,255,164,165,166,255,163,164,165,255,162,163,164,255,163,164,165,255,165,166,166,255,166,167,168,255, -168,169,170,255,169,170,171,255,171,172,173,255,172,173,174,255,173,174,176,255,174,175,176,255,175,176,177,255,175,176,177,255, -174,175,176,255,173,174,175,255,172,173,173,255,171,172,172,255,170,171,170,255,170,170,170,255,170,170,170,255,171,171,171,255, -171,171,171,255,171,172,172,255,171,172,172,255,171,171,171,255,171,171,171,255,170,170,170,255,168,168,167,255,160,159,157,255, -146,144,140,255,140,137,134,255,141,139,137,255,146,145,143,255,148,147,145,255,141,139,137,255, 49, 47, 46,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,128,130,131,255,191,194,197,255,190,193,196,255,190,193,196,255,190,193,196,255,190,193,196,255, -190,193,196,255,191,193,196,255,189,193,196,255,189,192,195,255,189,193,196,255,190,193,196,255,190,193,196,255,190,193,196,255, -190,193,196,255,190,193,195,255,189,192,196,255,190,193,197,255,191,194,196,255,191,194,197,255,190,193,196,255,190,193,196,255, -188,192,195,255,187,190,193,255,186,188,191,255,183,186,188,255,181,183,185,255,178,180,181,255,174,176,177,255,171,172,174,255, -168,169,170,255,165,166,167,255,164,165,166,255,163,164,165,255,163,164,165,255,164,165,166,255,165,166,166,255,167,167,168,255, -168,168,169,255,169,170,170,255,171,171,172,255,172,172,173,255,173,174,175,255,173,174,175,255,174,174,175,255,174,174,175,255, -173,173,174,255,172,172,173,255,171,172,172,255,170,170,170,255,169,169,169,255,169,169,169,255,169,169,169,255,170,169,169,255, -170,170,170,255,169,169,169,255,169,169,169,255,168,167,167,255,166,165,164,255,162,160,159,255,148,146,143,255,131,127,122,255, -134,130,127,255,139,137,134,255,143,141,140,255,145,144,141,255,139,137,135,255, 38, 38, 37,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,127,129,131,255,190,193,196,255,190,193,194,255,190,193,195,255,190,193,196,255,189,193,196,255, -189,193,196,255,189,193,196,255,189,193,196,255,189,193,196,255,189,192,195,255,190,193,196,255,190,193,196,255,190,193,196,255, -190,193,195,255,189,192,195,255,189,193,195,255,190,193,196,255,190,193,196,255,190,192,195,255,189,193,196,255,189,192,195,255, -188,190,193,255,187,189,192,255,185,188,190,255,182,185,187,255,180,182,184,255,177,179,180,255,174,175,176,255,170,171,173,255, -168,169,170,255,166,166,167,255,164,165,166,255,163,164,165,255,163,165,166,255,164,165,165,255,165,166,166,255,167,167,168,255, -168,168,169,255,169,169,170,255,170,171,171,255,171,171,172,255,171,172,173,255,173,173,173,255,172,173,174,255,172,173,173,255, -173,172,173,255,172,172,172,255,172,172,172,255,172,172,172,255,172,172,172,255,172,172,172,255,172,172,172,255,171,171,171,255, -170,170,170,255,168,168,167,255,165,165,165,255,162,162,161,255,156,154,153,255,143,140,136,255,127,123,117,255,131,128,123,255, -135,133,131,255,138,137,135,255,144,142,140,255,135,133,131,255, 31, 30, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,128,129,131,255,190,193,196,255,190,193,195,255,189,193,195,255,189,192,195,255,189,192,195,255, -190,192,195,255,189,192,195,255,190,192,195,255,190,192,195,255,189,193,196,255,189,192,195,255,189,192,195,255,189,192,195,255, -189,192,196,255,190,193,196,255,190,192,195,255,190,192,195,255,190,192,195,255,189,193,196,255,189,192,195,255,188,191,194,255, -187,190,193,255,185,188,191,255,184,186,188,255,182,184,186,255,179,180,182,255,175,176,179,255,173,174,175,255,170,171,172,255, -168,168,169,255,166,167,167,255,165,166,166,255,164,165,165,255,164,165,166,255,164,165,166,255,165,165,166,255,166,166,167,255, -167,167,168,255,168,168,169,255,169,169,169,255,169,170,169,255,171,170,170,255,173,173,173,255,175,175,175,255,177,177,176,255, -177,177,176,255,176,176,175,255,176,176,176,255,177,177,176,255,176,177,177,255,176,176,176,255,175,175,175,255,173,173,173,255, -170,170,170,255,166,166,165,255,161,160,160,255,154,153,151,255,142,140,137,255,131,127,121,255,129,126,121,255,134,131,128,255, -137,135,132,255,140,139,136,255,125,123,121,255, 28, 28, 27,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,129,130,131,255,191,194,197,255,190,192,195,255,190,192,195,255,190,193,196,255,190,193,196,255, -190,193,196,255,190,193,196,255,190,193,196,255,190,193,196,255,190,194,196,255,190,193,196,255,190,193,196,255,190,193,196,255, -190,193,196,255,190,194,197,255,190,192,195,255,189,192,196,255,189,193,196,255,190,192,195,255,188,191,194,255,188,190,193,255, -186,189,191,255,184,187,189,255,182,184,187,255,180,181,183,255,177,179,180,255,174,175,177,255,171,172,173,255,168,170,171,255, -168,168,169,255,165,166,166,255,165,166,166,255,165,165,166,255,165,165,165,255,165,165,165,255,165,165,164,255,165,164,164,255, -166,165,164,255,169,168,167,255,174,173,172,255,181,182,181,255,184,185,185,255,188,189,189,255,190,191,191,255,192,193,194,255, -193,194,193,255,191,192,192,255,190,191,191,255,188,188,189,255,186,187,187,255,183,184,184,255,180,180,181,255,175,176,176,255, -170,170,170,255,164,164,163,255,156,155,154,255,146,144,142,255,135,133,128,255,130,127,122,255,133,131,127,255,135,132,130,255, -139,137,135,255,125,122,119,255, 14, 14, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,129,131,132,255,193,196,199,255,192,195,198,255,191,194,197,255,192,195,198,255,192,194,198,255, -192,194,198,255,192,195,198,255,191,194,198,255,191,194,198,255,191,194,198,255,191,194,197,255,191,194,197,255,191,194,197,255, -190,193,196,255,191,194,196,255,190,192,197,255,189,193,195,255,189,192,195,255,188,191,194,255,188,190,193,255,186,188,192,255, -185,187,190,255,183,185,187,255,181,183,184,255,178,180,182,255,175,176,178,255,173,174,175,255,170,171,172,255,168,169,170,255, -167,167,168,255,165,165,166,255,164,164,165,255,163,163,163,255,162,162,161,255,161,161,160,255,164,162,162,255,169,169,167,255, -176,176,176,255,180,180,181,255,182,183,183,255,183,184,185,255,186,187,188,255,188,189,191,255,191,193,194,255,194,195,196,255, -195,196,198,255,196,198,198,255,196,197,198,255,195,197,197,255,193,194,195,255,190,191,192,255,185,186,186,255,178,178,179,255, -171,171,170,255,161,161,160,255,153,151,149,255,142,140,137,255,135,132,127,255,134,132,128,255,136,133,131,255,138,136,134,255, -120,118,114,255, 10, 10, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,130,132,134,255,195,198,201,255,194,197,200,255,193,196,199,255,193,196,199,255,193,196,199,255, -193,196,199,255,192,195,199,255,192,195,199,255,192,195,198,255,192,195,198,255,192,195,198,255,191,194,197,255,192,195,198,255, -191,193,197,255,190,194,197,255,190,192,196,255,189,192,195,255,189,191,194,255,188,190,193,255,186,189,192,255,185,187,190,255, -183,186,188,255,181,183,186,255,179,181,182,255,177,178,179,255,174,174,175,255,171,172,173,255,169,170,171,255,167,168,168,255, -166,166,166,255,164,164,164,255,161,161,161,255,159,157,155,255,163,163,161,255,170,169,169,255,176,176,176,255,178,179,179,255, -179,180,181,255,180,181,182,255,182,183,184,255,184,185,186,255,186,188,189,255,189,190,192,255,191,193,195,255,194,195,197,255, -195,197,199,255,196,198,200,255,197,199,200,255,197,198,200,255,196,198,199,255,193,195,195,255,187,188,189,255,179,180,180,255, -170,170,169,255,160,160,158,255,150,149,147,255,142,140,136,255,138,135,132,255,137,135,132,255,138,136,133,255, 98, 97, 94,255, - 13, 13, 12,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,132,134,135,255,198,201,204,255,196,199,202,255,195,198,202,255,195,198,201,255,194,197,201,255, -195,198,200,255,194,197,200,255,193,196,199,255,194,197,199,255,193,196,199,255,192,196,198,255,193,195,199,255,192,194,197,255, -191,194,197,255,190,194,197,255,191,192,195,255,189,191,194,255,188,191,194,255,187,190,191,255,185,188,190,255,184,186,188,255, -181,183,185,255,179,181,183,255,177,178,179,255,174,175,176,255,172,173,174,255,170,170,171,255,167,167,168,255,165,165,165,255, -163,162,161,255,159,158,157,255,158,156,154,255,170,170,170,255,175,175,176,255,176,177,178,255,177,178,179,255,179,180,181,255, -180,181,182,255,181,183,184,255,183,185,186,255,185,187,188,255,187,188,190,255,189,191,193,255,191,193,195,255,193,194,197,255, -194,196,199,255,195,197,200,255,196,198,201,255,196,198,199,255,195,196,198,255,192,193,194,255,187,187,188,255,178,178,178,255, -169,169,168,255,159,158,157,255,149,148,145,255,142,140,138,255,140,138,135,255,141,139,136,255,110,107,104,255, 2, 2, 1,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,134,135,137,255,200,203,207,255,198,202,205,255,198,201,204,255,197,200,203,255,197,200,203,255, -196,199,202,255,195,198,202,255,195,198,201,255,195,197,201,255,194,197,200,255,193,196,199,255,193,196,199,255,192,195,199,255, -191,194,197,255,191,193,196,255,189,192,195,255,188,191,194,255,187,190,193,255,185,188,190,255,184,186,188,255,182,184,185,255, -180,181,183,255,177,178,180,255,174,175,177,255,172,173,174,255,170,170,171,255,167,167,167,255,164,164,164,255,160,159,158,255, -158,157,155,255,163,163,161,255,174,174,174,255,175,176,176,255,176,177,178,255,178,179,180,255,180,181,181,255,180,182,182,255, -181,183,184,255,183,185,186,255,184,186,188,255,186,188,189,255,188,190,192,255,189,191,194,255,191,193,195,255,192,195,196,255, -193,195,198,255,194,196,198,255,194,196,199,255,194,196,198,255,192,194,196,255,188,191,192,255,183,184,185,255,176,176,176,255, -166,166,165,255,156,155,153,255,146,146,144,255,145,143,140,255,140,138,136,255, 82, 80, 78,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,135,136,138,255,202,206,209,255,201,204,207,255,200,203,206,255,199,202,205,255,198,201,204,255, -197,200,204,255,196,199,203,255,196,199,202,255,195,198,201,255,195,197,201,255,193,196,200,255,193,196,199,255,193,195,198,255, -191,194,197,255,190,193,196,255,189,191,194,255,188,190,193,255,186,188,191,255,184,186,188,255,182,184,185,255,180,182,183,255, -178,179,180,255,175,176,177,255,172,174,174,255,170,170,171,255,167,167,167,255,163,164,163,255,157,156,154,255,159,159,157,255, -169,168,168,255,174,174,175,255,175,176,177,255,177,178,178,255,178,179,180,255,179,181,182,255,180,182,183,255,181,183,184,255, -183,184,186,255,184,185,187,255,185,187,189,255,186,188,190,255,188,190,192,255,189,191,194,255,190,192,195,255,192,194,197,255, -192,195,197,255,193,195,197,255,192,194,197,255,191,194,196,255,189,190,193,255,184,186,187,255,179,179,180,255,171,171,171,255, -161,161,160,255,152,151,151,255,148,147,145,255,141,139,137,255, 56, 55, 53,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,135,136,138,255,204,207,210,255,202,205,208,255,201,204,208,255,201,204,207,255,199,202,205,255, -199,202,205,255,198,201,204,255,196,199,202,255,196,199,202,255,195,198,201,255,194,196,200,255,193,196,199,255,192,195,198,255, -190,193,196,255,190,192,195,255,188,190,192,255,186,188,191,255,185,186,188,255,182,184,186,255,181,182,184,255,178,179,181,255, -175,176,177,255,173,174,174,255,170,170,170,255,166,166,166,255,162,161,160,255,154,153,150,255,160,161,159,255,169,169,170,255, -172,172,173,255,175,176,176,255,176,177,178,255,177,178,180,255,179,180,182,255,180,182,183,255,181,182,184,255,183,184,186,255, -184,185,187,255,184,186,188,255,186,188,190,255,187,189,191,255,188,190,192,255,189,191,194,255,189,192,194,255,191,193,196,255, -191,194,196,255,191,193,196,255,191,193,195,255,189,190,193,255,186,186,189,255,180,182,182,255,174,175,175,255,166,166,166,255, -157,157,156,255,151,150,148,255,135,133,131,255, 27, 26, 26,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,134,135,136,255,204,207,210,255,202,205,208,255,201,204,207,255,201,204,208,255,200,203,206,255, -199,202,205,255,198,201,205,255,197,200,203,255,196,199,202,255,195,198,201,255,194,196,200,255,193,196,199,255,191,194,196,255, -190,192,195,255,189,191,193,255,187,189,191,255,185,187,189,255,183,185,187,255,181,182,184,255,178,180,181,255,175,176,178,255, -173,174,174,255,170,170,170,255,166,166,165,255,159,158,156,255,154,153,151,255,160,160,159,255,167,167,168,255,170,170,171,255, -173,174,175,255,175,176,177,255,177,178,179,255,178,180,181,255,180,181,182,255,181,182,184,255,181,183,185,255,183,185,186,255, -184,186,188,255,186,188,189,255,186,188,191,255,187,189,192,255,188,190,192,255,189,191,194,255,189,192,194,255,189,192,194,255, -190,192,195,255,189,191,194,255,188,190,192,255,185,187,189,255,182,184,185,255,176,177,178,255,169,169,170,255,163,162,162,255, -153,153,151,255,103,102,101,255, 12, 12, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 61, 61, 61,255, 53, 53, 53,255,121,121,123,255,200,203,205,255,204,206,209,255,201,204,207,255,201,203,206,255, -200,203,206,255,199,202,205,255,197,200,203,255,196,199,202,255,195,198,201,255,193,196,199,255,192,195,197,255,190,193,196,255, -189,191,194,255,187,189,192,255,185,188,189,255,183,185,186,255,181,183,184,255,179,180,181,255,176,177,178,255,173,173,174,255, -169,170,170,255,164,164,163,255,155,154,151,255,152,150,148,255,157,157,156,255,164,164,164,255,167,168,169,255,171,172,173,255, -173,174,175,255,176,177,178,255,177,178,180,255,178,180,181,255,180,181,183,255,181,183,184,255,182,184,186,255,184,185,187,255, -184,186,189,255,185,187,189,255,187,189,191,255,187,189,192,255,189,191,192,255,188,190,193,255,189,191,194,255,189,191,194,255, -189,191,193,255,188,190,192,255,185,187,189,255,182,183,186,255,178,179,180,255,172,173,174,255,167,166,166,255,148,147,146,255, - 52, 51, 50,255, 3, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 61, 61, 61,255, 30, 30, 30,255, 0, 0, 0,255, 19, 19, 19,255,152,154,154,255,200,202,204,255,200,203,205,255, -200,203,205,255,199,202,205,255,197,200,203,255,197,199,202,255,195,198,200,255,193,196,198,255,192,194,196,255,191,193,195,255, -188,190,192,255,186,188,190,255,184,185,187,255,182,183,184,255,179,180,181,255,176,177,177,255,173,173,174,255,169,169,169,255, -163,162,161,255,153,150,148,255,149,148,145,255,156,155,154,255,161,161,162,255,166,167,167,255,170,170,171,255,172,173,174,255, -174,175,176,255,176,178,179,255,178,179,180,255,179,180,182,255,180,182,184,255,182,183,185,255,182,184,186,255,184,186,188,255, -184,186,189,255,185,187,189,255,187,189,191,255,188,190,191,255,187,189,192,255,189,191,192,255,189,191,192,255,187,189,192,255, -187,189,191,255,185,187,189,255,182,184,185,255,178,180,181,255,174,174,174,255,165,165,165,255,112,111,110,255, 10, 10, 9,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 48, 48, 48,255,134,136,136,255, -179,180,182,255,200,201,204,255,198,201,203,255,196,198,200,255,194,196,198,255,193,195,198,255,191,193,195,255,189,191,193,255, -187,189,190,255,185,186,188,255,183,184,185,255,179,180,181,255,177,177,178,255,173,173,173,255,168,168,167,255,160,158,156,255, -150,148,145,255,150,148,146,255,156,156,155,255,162,162,162,255,166,166,167,255,170,170,171,255,172,173,174,255,174,175,176,255, -176,177,178,255,177,178,180,255,179,180,181,255,180,182,183,255,181,183,184,255,182,183,185,255,183,184,186,255,184,186,188,255, -184,186,188,255,185,187,189,255,186,188,191,255,187,189,191,255,187,189,191,255,188,189,192,255,187,189,191,255,185,187,189,255, -184,186,187,255,182,184,184,255,178,179,179,255,154,154,154,255,112,111,111,255, 35, 34, 33,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 26, 26, 27,255, 66, 66, 66,255,147,148,149,255,197,199,200,255,196,198,200,255,195,196,198,255,191,193,194,255,188,189,191,255, -186,188,189,255,183,185,186,255,180,180,181,255,178,178,178,255,174,174,174,255,167,167,165,255,160,158,155,255,159,157,154,255, -161,160,158,255,165,164,164,255,168,168,167,255,170,171,171,255,171,172,172,255,175,175,176,255,176,177,178,255,178,179,179,255, -179,180,181,255,180,181,182,255,180,182,184,255,182,183,185,255,182,183,185,255,183,185,186,255,183,185,187,255,184,186,188,255, -185,187,189,255,186,188,190,255,186,188,190,255,186,188,190,255,185,186,188,255,187,189,190,255,185,187,188,255,183,184,185,255, -171,172,172,255,121,121,121,255, 56, 56, 56,255, 21, 21, 21,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 13, 13, 13,255, 85, 85, 85,255,151,152,152,255,184,185,186,255,184,185,186,255, -181,182,182,255,178,179,178,255,175,175,175,255,162,162,161,255,100,100, 98,255, 72, 71, 70,255, 82, 81, 81,255, 93, 93, 92,255, -103,103,103,255,119,120,119,255,148,149,148,255,172,172,172,255,177,178,178,255,177,178,178,255,178,179,179,255,180,181,182,255, -181,182,183,255,181,183,184,255,182,183,184,255,182,184,185,255,183,185,186,255,182,184,185,255,182,184,186,255,183,184,186,255, -183,184,186,255,183,184,186,255,182,183,184,255,179,180,180,255,177,178,178,255,137,137,137,255, 90, 90, 90,255, 33, 33, 32,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 12, 12, 11,255, - 19, 19, 19,255, 21, 21, 20,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 10, 10, 10,255, 41, 41, 41,255, 54, 55, 54,255, - 65, 66, 66,255, 74, 75, 75,255, 95, 95, 95,255,103,103,103,255,111,112,112,255,106,107,107,255,101,101,102,255, 88, 88, 88,255, - 75, 75, 75,255, 61, 61, 61,255, 43, 43, 43,255, 17, 17, 17,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, - 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0, 56,120, 94, 7, 31, 0, 0, 0, 1, 0, 0, 0,144, 27, 95, 7,224,212, 93, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, 46, 99,114,101, 97,115,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, - 92, 46,105, 46, 99,114,101, 97,115,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,122, 94, 7, 0, 0, 0, 0, -131, 71, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0, 56,122, 94, 7, - 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -192,122, 94, 7, 40,139, 94, 7, 68, 65, 84, 65, 0, 16, 0, 0,192,122, 94, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 0, 0, 0, 40,221,128, 4, 0, 0, 0, 0,152, 0, 0, 0, + 1, 0, 0, 0,184,221,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, + 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 56, 0, 0, 0,184,221,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 72,139,130, 4, + 0, 0, 0, 0,136, 77,130, 4, 0, 0, 0, 0,184,186,130, 4, 0, 0, 0, 0,152,143,130, 4, 0, 0, 0, 0,136, 87,130, 4, + 0, 0, 0, 0,248,134,130, 4, 0, 0, 0, 0,200,104,130, 4, 0, 0, 0, 0, 68, 65, 84, 65, 64, 0, 0, 0, 56,222,128, 4, + 0, 0, 0, 0,152, 0, 0, 0, 1, 0, 0, 0,200,222,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 0, 0, 0,200,222,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 72,139,130, 4, 0, 0, 0, 0,136, 77,130, 4, 0, 0, 0, 0,184,186,130, 4, 0, 0, 0, 0,152,143,130, 4, + 0, 0, 0, 0,136, 87,130, 4, 0, 0, 0, 0,248,134,130, 4, 0, 0, 0, 0,200,104,130, 4, 0, 0, 0, 0, 68, 65, 84, 65, +104, 0, 0, 0, 72,223,128, 4, 0, 0, 0, 0,151, 0, 0, 0, 1, 0, 0, 0,248,223,128, 4, 0, 0, 0, 0, 5, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,100,100,128, 1, 0, 0, 0,129, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 82, 43, 8, 67,228,223,255, 63,209, 94,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 0,144, 0, 0, 40,139, 94, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 61, 60, 60,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 62, 62, 62,255, 61, 61, 61,255, 93, 94, 95,255,123,125,126,255,123,124,125,255, -123,125,126,255,123,125,126,255,123,125,126,255,124,125,126,255,124,125,127,255,124,126,127,255,125,126,128,255,125,126,127,255, -125,126,128,255,125,127,128,255,126,127,129,255,126,127,129,255,126,127,129,255,126,127,129,255,126,128,129,255,126,128,129,255, -126,128,129,255,126,128,129,255,126,128,129,255,126,127,129,255,126,127,129,255,126,127,129,255,126,127,129,255,126,127,128,255, -125,127,128,255,125,127,128,255,125,126,128,255,125,126,127,255,125,126,127,255,124,126,127,255,124,125,127,255,124,125,127,255, -124,125,126,255,123,125,126,255,123,125,126,255,123,124,126,255,123,124,125,255,122,124,125,255,122,123,124,255,122,123,124,255, -122,123,124,255,121,122,123,255,121,122,123,255,120,121,122,255,119,121,122,255,119,120,121,255,118,119,120,255,118,119,120,255, -118,119,119,255,117,118,118,255,116,117,118,255,115,116,117,255,115,115,116,255,114,115,116,255,113,114,115,255,112,113,114,255, -111,112,113,255,111,111,112,255,110,111,111,255,109,110,110,255,109,109,110,255,107,108,108,255,107,107,108,255,106,106,107,255, -105,105,106,255,105,105,105,255,103,104,104,255,103,103,103,255,102,102,103,255,101,101,101,255,101,100,101,255,100, 99,100,255, - 99, 99, 99,255, 99, 98, 98,255, 97, 97, 97,255, 97, 97, 97,255, 96, 96, 96,255, 95, 95, 95,255, 94, 94, 94,255, 94, 93, 93,255, - 93, 93, 93,255, 92, 92, 91,255, 92, 91, 91,255, 91, 90, 89,255, 90, 89, 89,255, 89, 88, 88,255, 88, 87, 86,255, 88, 86, 85,255, - 87, 86, 84,255, 86, 84, 83,255, 74, 73, 72,255, 61, 61, 61,255, 60, 60, 60,255,123,125,126,255,182,185,187,255,182,184,187,255, -182,185,187,255,181,185,186,255,182,185,188,255,183,185,188,255,183,186,189,255,185,187,190,255,185,187,189,255,184,188,190,255, -185,188,191,255,186,188,192,255,187,189,192,255,187,189,193,255,187,190,192,255,187,190,193,255,188,190,193,255,188,191,193,255, -188,191,193,255,188,191,193,255,189,190,193,255,187,190,193,255,187,190,194,255,187,190,193,255,187,190,193,255,186,189,192,255, -186,189,192,255,186,189,192,255,186,188,191,255,185,188,191,255,184,187,190,255,184,187,190,255,184,186,189,255,184,186,189,255, -183,186,188,255,183,185,188,255,182,185,187,255,182,184,187,255,181,183,186,255,180,183,185,255,180,182,185,255,179,181,183,255, -178,181,183,255,178,180,182,255,177,179,181,255,176,178,180,255,175,177,180,255,174,176,178,255,173,175,177,255,173,175,176,255, -171,173,174,255,170,172,173,255,169,171,171,255,167,169,170,255,166,167,169,255,164,165,167,255,163,164,166,255,162,163,164,255, -159,160,162,255,158,159,161,255,157,158,159,255,155,156,157,255,154,155,156,255,151,153,154,255,150,151,152,255,149,149,151,255, -147,148,148,255,145,146,147,255,144,145,146,255,142,143,143,255,141,141,142,255,140,140,140,255,137,137,138,255,136,136,137,255, -135,135,135,255,133,133,133,255,132,131,132,255,131,130,130,255,129,128,128,255,128,127,127,255,127,126,126,255,125,124,124,255, -124,123,122,255,123,120,121,255,120,119,118,255,119,117,117,255,117,115,114,255,116,114,112,255,115,112,111,255,112,110,108,255, -110,108,106,255,109,106,104,255, 85, 84, 82,255, 61, 61, 61,255, 60, 60, 60,255,123,124,125,255,182,183,187,255,181,184,185,255, -180,184,185,255,181,183,186,255,182,184,187,255,182,185,187,255,182,185,188,255,184,186,189,255,183,186,189,255,185,187,189,255, -185,188,190,255,186,188,191,255,186,188,192,255,187,189,192,255,187,190,193,255,188,191,194,255,188,191,194,255,188,191,194,255, -188,191,194,255,188,191,194,255,188,191,194,255,188,191,194,255,188,191,194,255,188,190,193,255,187,190,193,255,187,190,193,255, -187,190,192,255,187,189,192,255,186,189,192,255,186,189,192,255,185,188,191,255,185,187,190,255,184,187,190,255,184,187,189,255, -184,186,189,255,184,186,189,255,183,185,188,255,182,185,187,255,182,184,187,255,181,183,186,255,180,183,185,255,180,182,185,255, -179,181,183,255,178,181,183,255,177,180,182,255,176,178,180,255,176,178,180,255,175,177,179,255,173,175,177,255,172,174,176,255, -172,173,175,255,170,172,174,255,169,171,173,255,168,170,172,255,166,168,169,255,165,166,168,255,164,165,167,255,162,163,165,255, -161,162,163,255,159,161,161,255,157,158,159,255,156,157,158,255,155,155,157,255,153,153,155,255,151,152,153,255,150,150,151,255, -148,148,149,255,146,147,148,255,144,144,145,255,143,143,144,255,142,142,143,255,139,140,140,255,138,138,139,255,137,137,137,255, -135,135,135,255,134,133,134,255,132,132,132,255,131,130,130,255,129,129,129,255,128,128,128,255,126,126,125,255,125,124,124,255, -124,123,123,255,122,121,121,255,121,119,119,255,119,118,117,255,118,116,115,255,116,114,113,255,114,112,111,255,113,111,109,255, -111,108,106,255,110,107,105,255, 85, 84, 83,255, 61, 61, 61,255, 60, 60, 60,255,123,124,126,255,182,183,187,255,181,184,186,255, -180,183,185,255,181,183,186,255,182,185,187,255,183,185,188,255,182,185,189,255,184,186,188,255,184,186,189,255,184,188,190,255, -185,188,191,255,186,188,191,255,187,189,192,255,187,190,193,255,187,190,193,255,188,190,193,255,188,191,194,255,189,191,194,255, -189,192,195,255,189,192,195,255,189,192,195,255,189,192,195,255,189,192,194,255,188,191,194,255,188,191,194,255,188,190,193,255, -188,191,194,255,187,190,193,255,187,190,193,255,187,190,192,255,186,189,192,255,186,189,191,255,185,188,191,255,185,187,190,255, -184,187,190,255,184,187,190,255,184,186,189,255,183,186,188,255,182,185,188,255,182,185,187,255,181,184,186,255,181,183,186,255, -180,182,185,255,179,182,184,255,179,181,183,255,178,180,182,255,177,179,181,255,176,178,180,255,175,177,179,255,174,176,178,255, -173,175,177,255,172,174,176,255,170,172,174,255,169,171,173,255,168,170,172,255,166,168,169,255,165,167,168,255,164,165,166,255, -162,163,164,255,160,162,163,255,159,160,161,255,157,158,159,255,156,157,158,255,154,155,156,255,152,153,154,255,151,152,153,255, -149,149,150,255,147,148,149,255,146,146,147,255,144,145,146,255,142,142,143,255,141,141,142,255,140,139,140,255,137,137,138,255, -136,136,136,255,134,134,134,255,133,133,133,255,132,131,131,255,130,129,129,255,129,128,128,255,128,127,127,255,126,125,125,255, -125,123,123,255,123,121,121,255,121,120,119,255,120,118,117,255,118,117,115,255,117,115,113,255,115,113,111,255,113,111,109,255, -112,109,107,255,110,108,105,255, 86, 84, 83,255, 61, 61, 61,255, 60, 60, 60,255,123,124,126,255,182,184,187,255,181,183,186,255, -180,183,185,255,181,183,186,255,181,185,186,255,182,184,187,255,183,185,188,255,183,186,189,255,184,186,189,255,184,187,190,255, -186,188,191,255,186,189,191,255,186,189,192,255,188,190,193,255,188,191,194,255,188,191,194,255,189,193,195,255,189,192,195,255, -190,192,196,255,190,193,196,255,190,194,197,255,190,192,195,255,189,192,195,255,189,192,195,255,189,192,195,255,189,192,195,255, -188,191,194,255,188,191,194,255,188,191,194,255,188,190,193,255,187,190,193,255,187,190,193,255,186,189,191,255,185,188,191,255, -185,188,191,255,185,188,190,255,185,187,190,255,184,187,190,255,184,186,189,255,183,186,189,255,183,185,188,255,182,184,187,255, -181,184,186,255,181,183,186,255,180,182,184,255,179,181,184,255,178,180,183,255,177,179,181,255,176,179,181,255,175,178,180,255, -174,176,178,255,173,175,177,255,172,174,176,255,170,172,174,255,169,171,173,255,168,170,172,255,166,168,169,255,165,167,168,255, -164,165,167,255,161,163,164,255,160,161,163,255,159,160,161,255,157,158,159,255,155,156,158,255,154,155,156,255,152,153,154,255, -150,151,152,255,148,149,151,255,147,147,148,255,145,145,147,255,143,143,145,255,142,142,143,255,140,141,141,255,138,138,139,255, -137,137,138,255,136,135,136,255,133,133,133,255,132,132,132,255,131,131,131,255,129,128,128,255,128,127,127,255,127,126,125,255, -124,123,123,255,123,122,122,255,122,121,120,255,120,119,118,255,119,117,116,255,117,116,114,255,115,113,112,255,114,112,110,255, -112,110,108,255,111,108,106,255, 86, 85, 83,255, 61, 61, 61,255, 60, 60, 60,255,123,124,126,255,181,184,186,255,180,183,185,255, -181,183,185,255,180,184,185,255,182,184,186,255,181,184,186,255,182,185,187,255,183,186,188,255,184,186,189,255,184,187,190,255, -186,188,191,255,186,189,192,255,188,189,192,255,188,191,194,255,189,192,195,255,190,192,195,255,190,193,196,255,191,193,197,255, -191,194,197,255,191,194,197,255,191,194,197,255,191,194,197,255,191,194,197,255,191,194,197,255,190,193,196,255,190,193,196,255, -190,193,196,255,189,192,195,255,189,192,195,255,189,192,195,255,189,192,195,255,188,191,194,255,188,190,193,255,187,190,193,255, -187,189,192,255,187,189,192,255,186,189,192,255,186,189,191,255,185,188,191,255,185,187,190,255,184,187,190,255,184,186,189,255, -183,185,188,255,182,185,187,255,181,184,186,255,180,183,185,255,180,182,184,255,179,181,184,255,177,180,182,255,177,179,181,255, -176,178,180,255,174,176,179,255,173,175,177,255,172,174,176,255,170,172,174,255,169,171,173,255,168,170,172,255,166,168,170,255, -165,166,168,255,164,165,167,255,161,163,164,255,160,161,163,255,158,160,161,255,156,158,159,255,155,156,157,255,153,154,155,255, -151,152,153,255,150,151,152,255,148,148,150,255,146,147,148,255,145,145,146,255,143,143,144,255,141,141,142,255,140,140,141,255, -138,138,138,255,136,136,137,255,135,135,135,255,133,133,133,255,132,131,131,255,131,130,130,255,129,128,128,255,127,126,126,255, -125,124,124,255,124,123,122,255,123,121,121,255,121,119,119,255,119,118,117,255,118,116,115,255,116,114,113,255,114,112,111,255, -113,111,109,255,111,109,107,255, 86, 85, 84,255, 61, 61, 61,255, 60, 60, 60,255,123,124,125,255,180,183,186,255,180,182,184,255, -180,183,185,255,181,183,186,255,181,183,186,255,181,184,186,255,182,184,187,255,183,185,188,255,183,186,188,255,185,187,189,255, -185,188,191,255,186,189,192,255,187,189,192,255,188,191,194,255,189,192,195,255,190,192,195,255,191,193,197,255,191,194,197,255, -192,195,198,255,192,195,198,255,192,195,198,255,192,195,198,255,192,195,198,255,192,195,198,255,191,194,198,255,191,194,197,255, -191,194,197,255,190,193,196,255,190,193,196,255,190,193,196,255,189,192,195,255,189,192,195,255,189,191,194,255,188,191,194,255, -187,190,193,255,187,190,193,255,187,190,192,255,186,189,192,255,186,189,192,255,186,188,191,255,185,188,190,255,185,187,190,255, -184,187,189,255,183,185,188,255,182,185,188,255,182,184,187,255,181,183,186,255,180,182,185,255,179,182,184,255,178,180,182,255, -177,179,181,255,176,178,181,255,175,177,179,255,174,176,178,255,173,175,176,255,171,173,174,255,170,172,173,255,168,170,172,255, -166,168,169,255,165,166,168,255,163,165,166,255,161,162,164,255,160,161,163,255,158,159,161,255,156,157,159,255,155,156,157,255, -152,153,155,255,151,152,153,255,150,150,151,255,147,148,149,255,146,146,147,255,144,145,145,255,143,142,144,255,141,141,142,255, -139,139,140,255,137,137,138,255,136,136,136,255,134,134,134,255,132,132,132,255,131,130,130,255,130,129,129,255,128,127,127,255, -126,125,125,255,124,123,123,255,123,122,122,255,121,120,119,255,120,118,117,255,118,116,115,255,117,115,113,255,115,113,111,255, -113,111,109,255,112,109,107,255, 87, 85, 84,255, 61, 61, 61,255, 60, 60, 60,255,123,124,125,255,181,183,185,255,180,182,185,255, -180,181,185,255,180,182,185,255,181,183,185,255,180,183,186,255,181,184,186,255,182,185,187,255,183,185,188,255,184,187,188,255, -185,187,190,255,186,189,191,255,188,189,192,255,189,191,194,255,189,192,195,255,191,193,196,255,192,194,198,255,191,194,197,255, -192,195,198,255,193,196,199,255,193,196,199,255,193,196,199,255,193,196,199,255,193,196,199,255,192,195,199,255,192,195,198,255, -192,195,198,255,191,194,197,255,191,194,197,255,190,193,196,255,190,193,196,255,190,193,196,255,189,192,195,255,189,191,194,255, -188,192,195,255,188,191,193,255,187,190,193,255,187,190,194,255,187,190,193,255,186,189,192,255,187,189,192,255,185,188,191,255, -185,187,190,255,184,187,190,255,183,186,188,255,183,185,188,255,182,185,187,255,181,183,186,255,180,183,185,255,180,182,184,255, -178,180,182,255,177,179,181,255,177,179,181,255,175,177,179,255,174,176,178,255,173,175,176,255,171,172,174,255,169,171,173,255, -168,170,172,255,166,168,169,255,165,166,168,255,164,165,166,255,161,162,164,255,159,161,162,255,158,159,161,255,156,157,158,255, -154,155,156,255,153,154,155,255,150,151,152,255,149,149,150,255,147,148,149,255,145,145,146,255,143,144,144,255,142,142,143,255, -140,140,141,255,138,138,139,255,136,136,137,255,135,135,135,255,134,133,133,255,131,131,131,255,130,129,129,255,129,128,128,255, -127,126,125,255,125,124,124,255,124,123,122,255,122,120,119,255,121,119,118,255,119,117,116,255,117,115,114,255,116,114,112,255, -114,112,110,255,113,110,108,255, 87, 86, 84,255, 61, 61, 61,255, 60, 60, 60,255,123,124,125,255,180,182,185,255,179,181,183,255, -178,181,183,255,179,181,183,255,179,181,184,255,180,182,184,255,180,182,185,255,181,183,185,255,182,184,187,255,183,185,188,255, -184,187,190,255,185,188,191,255,186,189,192,255,188,191,194,255,189,192,195,255,191,194,197,255,192,195,198,255,192,195,198,255, -193,196,199,255,194,197,200,255,194,197,200,255,195,197,201,255,195,198,201,255,195,198,201,255,194,197,200,255,194,197,200,255, -193,196,199,255,193,196,199,255,192,195,198,255,192,195,198,255,191,194,197,255,191,194,197,255,191,194,197,255,190,193,196,255, -189,192,195,255,189,192,195,255,189,192,195,255,188,191,194,255,188,191,194,255,188,190,193,255,187,190,193,255,187,190,192,255, -186,189,192,255,186,188,191,255,185,188,191,255,184,187,189,255,183,186,189,255,183,185,188,255,182,184,186,255,181,183,185,255, -180,183,185,255,178,181,183,255,178,180,182,255,177,179,181,255,175,177,179,255,174,176,178,255,173,175,177,255,171,172,174,255, -170,171,173,255,168,170,171,255,166,168,169,255,165,166,167,255,163,164,166,255,161,162,163,255,159,160,162,255,157,159,159,255, -155,157,158,255,154,155,156,255,151,152,153,255,150,151,152,255,148,149,150,255,147,146,147,255,145,144,146,255,143,143,144,255, -141,141,142,255,139,139,139,255,138,138,138,255,136,136,136,255,134,134,134,255,133,132,132,255,131,130,130,255,130,129,129,255, -128,127,127,255,126,125,125,255,124,123,123,255,123,122,121,255,121,120,119,255,119,118,117,255,118,116,115,255,116,114,113,255, -114,112,111,255,113,111,109,255, 87, 86, 85,255, 61, 61, 61,255, 60, 60, 60,255,122,123,125,255,180,182,184,255,178,181,183,255, -178,181,182,255,178,180,183,255,178,181,183,255,179,181,183,255,179,182,184,255,180,182,184,255,180,183,185,255,182,184,187,255, -183,185,188,255,185,187,189,255,186,188,191,255,187,190,192,255,189,191,195,255,191,193,196,255,192,194,197,255,193,195,199,255, -194,197,200,255,194,197,200,255,195,198,201,255,195,198,201,255,195,198,202,255,195,198,202,255,195,198,201,255,195,198,201,255, -194,197,200,255,194,197,200,255,193,196,199,255,193,195,199,255,192,195,198,255,192,194,198,255,191,194,197,255,191,193,197,255, -190,193,196,255,190,193,196,255,189,192,195,255,189,192,195,255,189,192,195,255,188,191,194,255,188,191,194,255,188,190,193,255, -187,190,193,255,186,189,192,255,186,188,191,255,185,188,191,255,184,187,190,255,184,186,189,255,183,185,188,255,182,184,187,255, -181,183,186,255,180,182,185,255,179,181,183,255,178,180,182,255,177,179,181,255,175,177,179,255,174,176,178,255,173,175,177,255, -170,172,174,255,169,171,173,255,168,170,171,255,166,167,169,255,164,166,167,255,163,164,165,255,161,162,163,255,159,160,162,255, -157,158,159,255,155,156,157,255,153,154,155,255,151,152,153,255,149,150,151,255,148,148,149,255,146,146,147,255,144,144,145,255, -142,142,143,255,141,141,141,255,138,138,139,255,137,137,137,255,136,135,135,255,133,133,133,255,132,131,131,255,130,129,129,255, -129,128,128,255,127,126,126,255,125,124,124,255,123,122,121,255,122,120,119,255,120,118,117,255,118,117,115,255,117,115,113,255, -115,113,111,255,114,111,109,255, 88, 86, 85,255, 61, 61, 61,255, 60, 60, 60,255,122,123,124,255,179,181,183,255,178,180,182,255, -178,180,182,255,178,180,182,255,178,180,182,255,178,180,181,255,178,180,183,255,179,181,183,255,179,181,184,255,181,183,185,255, -182,184,186,255,183,185,188,255,185,187,190,255,186,189,191,255,188,190,193,255,190,193,196,255,191,194,197,255,193,195,199,255, -194,197,200,255,195,198,201,255,195,199,201,255,197,199,203,255,196,200,202,255,196,199,202,255,196,199,202,255,195,198,203,255, -196,199,202,255,194,197,201,255,194,197,200,255,193,197,199,255,193,195,199,255,192,196,198,255,192,195,198,255,192,194,198,255, -191,194,197,255,190,193,196,255,190,193,196,255,189,192,195,255,189,192,195,255,190,193,196,255,189,192,195,255,188,191,194,255, -188,191,194,255,188,190,193,255,187,189,192,255,186,189,192,255,186,189,191,255,184,187,190,255,184,186,189,255,183,186,189,255, -182,184,187,255,181,184,186,255,180,183,185,255,179,181,183,255,178,180,182,255,177,179,181,255,175,177,179,255,174,176,178,255, -173,174,176,255,170,172,174,255,169,170,172,255,168,169,171,255,165,167,168,255,164,165,166,255,163,164,165,255,160,161,162,255, -158,159,160,255,157,158,159,255,154,155,156,255,152,153,154,255,151,151,153,255,148,149,150,255,147,147,148,255,145,146,146,255, -143,143,144,255,141,141,142,255,139,139,140,255,138,137,138,255,136,136,136,255,134,134,134,255,133,132,132,255,131,130,130,255, -129,128,128,255,128,127,126,255,126,125,124,255,124,123,122,255,122,121,120,255,121,119,118,255,119,117,116,255,117,115,114,255, -116,114,112,255,115,112,110,255, 88, 87, 85,255, 61, 61, 61,255, 60, 60, 60,255,122,123,124,255,178,180,182,255,176,178,180,255, -176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,177,179,181,255,178,180,182,255,178,180,183,255, -179,181,184,255,181,183,186,255,182,185,187,255,184,187,189,255,187,189,191,255,188,191,194,255,191,193,196,255,192,195,198,255, -194,197,200,255,195,198,201,255,196,199,202,255,196,200,202,255,197,200,203,255,198,200,204,255,198,201,204,255,197,200,203,255, -197,200,203,255,196,199,203,255,195,198,202,255,195,198,201,255,194,197,200,255,194,196,200,255,193,196,199,255,193,196,199,255, -192,195,198,255,192,195,198,255,191,194,197,255,191,194,197,255,191,193,197,255,190,193,196,255,190,193,196,255,190,193,196,255, -189,192,195,255,189,192,195,255,188,191,194,255,188,190,193,255,187,190,192,255,186,189,192,255,186,188,191,255,185,187,190,255, -184,186,189,255,182,185,187,255,182,184,186,255,181,183,185,255,179,181,183,255,178,180,182,255,177,179,181,255,175,177,179,255, -174,176,178,255,172,174,176,255,171,172,174,255,169,170,172,255,168,169,171,255,165,167,168,255,163,165,166,255,162,163,165,255, -160,161,162,255,158,159,160,255,156,156,158,255,154,154,156,255,152,152,154,255,149,151,151,255,148,148,149,255,146,147,148,255, -144,144,145,255,142,142,143,255,141,141,141,255,138,138,139,255,137,137,137,255,136,135,135,255,133,133,133,255,132,131,131,255, -130,129,129,255,128,127,127,255,127,126,125,255,125,124,123,255,123,122,121,255,122,120,119,255,120,118,117,255,118,116,114,255, -116,114,112,255,115,112,110,255, 88, 87, 86,255, 61, 61, 61,255, 60, 60, 60,255,121,122,124,255,177,179,182,255,176,178,180,255, -175,177,179,255,175,177,179,255,175,177,179,255,174,176,178,255,175,176,178,255,175,176,178,255,176,177,179,255,176,178,180,255, -178,180,182,255,179,181,183,255,180,182,184,255,182,184,187,255,185,187,189,255,186,189,191,255,189,191,194,255,191,193,196,255, -193,196,199,255,195,197,201,255,196,199,202,255,197,200,203,255,197,201,204,255,198,201,204,255,198,201,204,255,198,201,204,255, -198,201,204,255,197,200,203,255,197,200,203,255,195,198,202,255,195,198,201,255,194,197,201,255,194,197,200,255,193,196,199,255, -193,196,199,255,192,195,199,255,192,195,198,255,191,194,197,255,191,194,197,255,190,193,196,255,190,193,196,255,190,193,196,255, -190,192,196,255,190,192,195,255,189,192,195,255,188,191,194,255,188,190,193,255,187,190,193,255,186,189,192,255,185,188,191,255, -185,187,190,255,184,186,189,255,183,185,187,255,182,184,187,255,181,183,185,255,179,181,183,255,178,180,182,255,177,179,181,255, -175,177,179,255,174,176,178,255,172,174,176,255,170,172,173,255,169,170,172,255,167,168,170,255,165,166,167,255,163,164,166,255, -161,162,164,255,159,160,161,255,157,158,159,255,155,156,157,255,153,153,155,255,151,152,153,255,149,150,151,255,147,147,148,255, -146,146,147,255,144,144,145,255,141,141,142,255,140,140,140,255,138,137,138,255,135,135,135,255,135,134,134,255,132,132,132,255, -131,130,130,255,130,129,128,255,128,127,126,255,126,124,124,255,124,123,122,255,122,120,119,255,120,118,117,255,118,116,115,255, -117,114,113,255,115,113,111,255, 88, 87, 86,255, 61, 61, 61,255, 60, 60, 60,255,121,122,123,255,177,179,181,255,174,176,178,255, -174,176,178,255,174,176,178,255,173,174,176,255,172,175,177,255,173,175,177,255,172,174,177,255,173,175,176,255,174,176,178,255, -175,177,178,255,176,177,179,255,178,180,182,255,179,181,183,255,181,184,186,255,184,186,189,255,186,189,191,255,189,192,194,255, -192,195,198,255,194,197,200,255,196,198,201,255,198,200,203,255,198,201,204,255,199,202,205,255,199,201,205,255,199,201,206,255, -198,201,206,255,198,201,204,255,198,201,204,255,198,201,204,255,196,199,202,255,195,198,201,255,195,198,201,255,195,197,201,255, -194,196,200,255,194,197,200,255,192,195,198,255,193,195,199,255,192,194,198,255,191,195,197,255,191,194,197,255,192,193,198,255, -190,193,196,255,191,194,197,255,190,193,196,255,190,193,196,255,189,192,195,255,188,190,193,255,187,190,193,255,187,190,193,255, -185,188,191,255,185,187,190,255,184,187,189,255,183,185,188,255,182,184,187,255,181,183,186,255,179,181,184,255,178,180,182,255, -177,179,181,255,175,177,179,255,173,175,177,255,172,174,176,255,170,171,173,255,168,170,171,255,167,168,170,255,164,165,167,255, -162,163,165,255,160,162,163,255,158,159,161,255,156,157,158,255,154,155,156,255,152,153,154,255,150,151,152,255,149,149,150,255, -146,147,147,255,144,144,145,255,143,143,144,255,140,140,141,255,139,138,139,255,136,136,136,255,135,135,135,255,134,133,133,255, -131,131,130,255,130,129,129,255,129,128,127,255,126,125,124,255,125,124,123,255,123,122,120,255,121,119,118,255,119,117,116,255, -117,115,113,255,116,114,112,255, 89, 87, 86,255, 61, 61, 61,255, 60, 60, 60,255,121,122,123,255,176,178,180,255,174,176,178,255, -173,175,177,255,172,174,176,255,172,173,175,255,171,173,175,255,171,173,174,255,171,172,174,255,171,173,174,255,171,173,175,255, -172,173,175,255,172,174,176,255,173,176,177,255,176,177,179,255,178,180,182,255,181,183,185,255,183,185,188,255,186,188,191,255, -189,192,194,255,192,195,198,255,195,198,201,255,196,199,202,255,198,201,204,255,199,201,204,255,200,203,206,255,200,203,205,255, -200,203,206,255,200,203,206,255,199,202,205,255,198,201,205,255,198,201,204,255,197,199,203,255,196,199,202,255,195,198,202,255, -195,198,201,255,195,197,201,255,194,197,200,255,193,196,199,255,193,196,199,255,192,195,198,255,192,195,198,255,191,195,197,255, -192,194,198,255,191,194,197,255,191,194,197,255,190,193,196,255,190,193,196,255,189,192,195,255,189,192,195,255,188,191,193,255, -187,190,193,255,186,188,191,255,185,188,190,255,184,187,189,255,184,185,189,255,182,184,186,255,181,183,186,255,179,181,183,255, -178,180,182,255,177,179,181,255,174,176,178,255,173,175,177,255,172,174,175,255,169,171,173,255,168,169,171,255,166,168,169,255, -164,165,167,255,161,163,164,255,159,160,162,255,157,158,160,255,156,156,158,255,153,154,155,255,151,152,153,255,150,150,151,255, -147,147,148,255,145,146,147,255,144,144,145,255,141,141,142,255,139,139,140,255,138,138,138,255,135,135,135,255,134,134,134,255, -132,132,131,255,131,130,130,255,129,128,127,255,127,126,125,255,125,124,123,255,124,122,121,255,122,120,119,255,120,118,117,255, -118,116,114,255,116,114,112,255, 89, 88, 86,255, 61, 61, 61,255, 60, 60, 60,255,120,121,122,255,176,178,180,255,173,175,177,255, -172,174,176,255,171,173,175,255,171,172,174,255,170,171,173,255,169,171,172,255,169,170,172,255,168,170,171,255,168,170,171,255, -168,170,171,255,169,170,172,255,169,171,173,255,171,173,174,255,173,175,177,255,176,177,179,255,179,181,182,255,182,184,186,255, -185,187,190,255,189,191,194,255,192,195,197,255,195,197,200,255,197,200,202,255,199,201,204,255,200,203,205,255,200,203,206,255, -201,203,206,255,201,203,207,255,200,203,206,255,199,202,206,255,199,202,205,255,198,201,204,255,197,200,203,255,196,199,202,255, -196,198,202,255,195,198,201,255,194,197,200,255,194,197,200,255,194,196,200,255,193,196,199,255,192,195,198,255,192,195,198,255, -192,195,198,255,192,195,198,255,191,194,197,255,191,194,197,255,191,194,197,255,190,193,196,255,189,192,195,255,189,191,194,255, -188,191,194,255,187,190,193,255,186,189,192,255,185,188,191,255,184,187,190,255,183,185,188,255,182,184,187,255,181,183,185,255, -179,181,183,255,178,180,182,255,176,178,180,255,174,176,178,255,173,174,176,255,171,173,174,255,169,170,172,255,167,169,170,255, -165,166,168,255,163,164,166,255,161,162,164,255,159,160,161,255,156,157,159,255,155,156,157,255,153,153,155,255,151,151,152,255, -149,149,150,255,147,147,148,255,144,145,145,255,143,142,143,255,141,141,141,255,138,138,138,255,137,137,137,255,135,134,135,255, -133,132,132,255,132,131,131,255,130,128,128,255,127,126,126,255,126,125,124,255,124,123,122,255,122,120,119,255,120,119,117,255, -118,116,115,255,117,115,113,255, 89, 88, 87,255, 61, 61, 61,255, 60, 60, 60,255,120,121,122,255,175,177,179,255,172,174,176,255, -171,173,175,255,171,172,174,255,169,171,172,255,169,170,172,255,168,170,171,255,167,168,170,255,167,168,170,255,166,167,169,255, -165,167,168,255,165,167,168,255,165,167,168,255,167,168,170,255,168,169,171,255,169,171,172,255,172,174,175,255,175,177,180,255, -180,182,184,255,184,186,188,255,188,190,192,255,192,195,197,255,195,197,200,255,197,200,202,255,199,202,204,255,200,203,205,255, -201,203,205,255,201,204,207,255,201,203,207,255,201,204,207,255,200,202,206,255,199,202,206,255,199,202,205,255,197,200,203,255, -197,200,203,255,196,199,202,255,196,199,202,255,195,198,201,255,195,198,201,255,194,197,200,255,194,196,200,255,193,196,199,255, -193,196,199,255,193,196,199,255,193,196,199,255,192,195,198,255,191,194,197,255,191,194,197,255,190,193,196,255,190,193,196,255, -189,191,194,255,188,191,194,255,188,190,193,255,186,189,191,255,185,188,191,255,185,187,190,255,183,185,188,255,182,184,187,255, -181,183,185,255,179,181,183,255,178,180,182,255,176,178,180,255,174,176,178,255,172,174,175,255,171,172,174,255,168,170,171,255, -166,168,169,255,165,166,167,255,162,163,165,255,160,161,162,255,158,159,161,255,156,157,158,255,154,154,155,255,152,153,154,255, -150,150,151,255,148,148,149,255,146,146,147,255,144,144,144,255,142,142,142,255,139,139,139,255,137,137,137,255,136,135,135,255, -133,133,133,255,132,131,131,255,131,130,129,255,128,127,126,255,127,126,125,255,125,123,122,255,123,121,120,255,121,119,118,255, -119,117,116,255,118,116,114,255, 89, 88, 87,255, 61, 61, 61,255, 60, 60, 60,255,120,121,122,255,175,177,179,255,172,174,176,255, -171,173,175,255,170,171,173,255,168,170,172,255,167,169,171,255,166,168,169,255,165,167,168,255,164,166,167,255,164,165,167,255, -163,164,166,255,163,164,166,255,162,164,165,255,162,163,165,255,163,164,166,255,164,165,167,255,165,166,168,255,168,169,171,255, -170,172,174,255,175,176,178,255,180,182,184,255,186,187,190,255,190,193,195,255,194,197,199,255,197,200,202,255,199,202,204,255, -200,202,205,255,201,203,206,255,201,204,206,255,202,203,207,255,202,204,207,255,200,203,206,255,200,202,206,255,199,202,205,255, -198,200,204,255,197,200,203,255,196,199,202,255,196,199,202,255,195,198,201,255,195,198,201,255,194,197,200,255,194,197,200,255, -194,196,200,255,194,196,200,255,193,196,199,255,193,195,199,255,193,196,199,255,192,195,198,255,191,194,197,255,191,194,197,255, -190,193,196,255,189,192,195,255,189,191,194,255,188,190,193,255,186,189,192,255,185,188,191,255,184,187,190,255,183,185,188,255, -182,184,186,255,180,183,185,255,179,181,183,255,177,179,181,255,176,178,180,255,174,175,177,255,172,173,175,255,170,172,174,255, -168,170,171,255,165,167,168,255,164,165,166,255,162,163,164,255,159,160,162,255,156,157,159,255,155,156,157,255,153,154,155,255, -150,151,152,255,148,149,149,255,147,147,148,255,144,144,145,255,142,142,142,255,141,141,141,255,138,138,138,255,137,136,136,255, -135,134,134,255,133,132,132,255,131,130,130,255,129,128,127,255,127,126,125,255,125,124,123,255,124,122,121,255,122,120,118,255, -120,118,116,255,118,116,114,255, 90, 89, 88,255, 61, 61, 61,255, 60, 60, 60,255,120,121,122,255,175,177,179,255,172,174,176,255, -171,172,174,255,170,171,173,255,168,170,171,255,167,168,170,255,166,167,168,255,164,166,167,255,163,164,166,255,162,163,165,255, -161,162,164,255,160,161,162,255,159,160,162,255,159,160,161,255,158,159,161,255,159,160,161,255,159,160,161,255,160,161,162,255, -162,163,165,255,164,166,167,255,168,169,171,255,173,175,176,255,180,181,184,255,187,189,192,255,193,195,198,255,197,200,202,255, -199,201,204,255,200,202,205,255,201,203,205,255,201,204,206,255,202,204,206,255,201,204,207,255,201,203,207,255,200,203,206,255, -199,202,205,255,198,201,204,255,197,200,203,255,197,200,203,255,196,199,202,255,196,198,202,255,195,198,201,255,194,197,200,255, -194,197,200,255,193,196,199,255,193,197,199,255,193,196,199,255,193,196,199,255,192,195,198,255,192,195,198,255,191,194,197,255, -191,194,197,255,190,193,196,255,189,192,196,255,188,191,194,255,188,190,193,255,186,189,192,255,185,188,190,255,184,187,189,255, -183,185,188,255,181,184,186,255,180,182,185,255,178,180,183,255,177,179,181,255,175,177,179,255,173,175,176,255,171,173,175,255, -169,171,173,255,167,168,170,255,165,167,168,255,163,164,166,255,160,161,163,255,159,160,161,255,156,157,158,255,154,155,156,255, -152,153,154,255,150,150,151,255,147,148,148,255,146,146,147,255,144,144,144,255,141,141,141,255,140,139,140,255,138,137,137,255, -135,135,135,255,133,133,132,255,132,131,130,255,130,129,128,255,128,126,126,255,126,125,124,255,124,122,121,255,122,120,119,255, -121,119,117,255,119,117,114,255, 90, 89, 88,255, 61, 61, 61,255, 60, 60, 60,255,120,121,122,255,175,177,179,255,172,174,176,255, -171,172,174,255,170,171,173,255,167,169,171,255,166,168,169,255,165,167,168,255,163,164,166,255,162,164,165,255,161,162,163,255, -159,160,162,255,158,159,161,255,157,158,159,255,156,157,158,255,155,156,157,255,154,155,156,255,154,154,156,255,153,154,155,255, -153,154,156,255,155,156,156,255,157,158,159,255,159,160,161,255,162,164,166,255,169,171,173,255,179,182,184,255,189,192,194,255, -197,199,201,255,200,202,204,255,200,202,204,255,201,203,205,255,202,204,207,255,201,205,207,255,202,205,206,255,201,203,207,255, -200,203,206,255,200,203,206,255,198,201,204,255,198,201,204,255,197,200,203,255,197,200,203,255,196,199,202,255,196,199,202,255, -195,197,201,255,194,198,200,255,195,197,201,255,193,197,199,255,194,197,200,255,194,197,200,255,193,195,199,255,193,196,199,255, -192,195,198,255,191,194,197,255,191,193,197,255,190,193,195,255,189,191,194,255,188,190,193,255,186,189,192,255,185,188,191,255, -184,187,189,255,182,185,187,255,181,183,186,255,180,182,184,255,177,179,182,255,176,178,180,255,174,176,178,255,172,174,175,255, -170,172,173,255,169,170,172,255,166,167,169,255,164,165,167,255,162,163,165,255,160,161,162,255,157,158,160,255,156,156,158,255, -153,154,155,255,151,151,152,255,149,150,150,255,147,147,147,255,144,144,145,255,143,142,143,255,140,140,140,255,138,138,138,255, -136,135,135,255,135,134,134,255,132,131,131,255,130,129,128,255,129,127,127,255,127,125,124,255,124,123,121,255,123,121,120,255, -121,119,117,255,120,118,115,255, 90, 89, 88,255, 61, 61, 61,255, 60, 60, 60,255,120,121,122,255,175,177,179,255,172,174,176,255, -171,173,174,255,170,171,173,255,167,169,171,255,166,168,169,255,165,167,168,255,163,165,166,255,162,163,165,255,161,162,162,255, -158,160,161,255,157,158,160,255,155,156,158,255,155,155,157,255,153,154,155,255,152,153,154,255,151,152,152,255,150,151,152,255, -149,149,150,255,148,149,150,255,148,149,150,255,148,149,150,255,150,150,151,255,151,152,154,255,155,157,158,255,164,165,168,255, -178,180,182,255,193,195,198,255,200,202,204,255,202,203,206,255,201,203,206,255,202,204,207,255,203,205,207,255,202,205,208,255, -201,204,207,255,201,204,207,255,200,203,206,255,198,201,205,255,198,201,204,255,197,200,203,255,197,200,203,255,197,200,203,255, -196,199,202,255,195,198,201,255,195,198,201,255,195,197,201,255,194,197,200,255,194,196,200,255,193,197,199,255,193,196,199,255, -192,196,198,255,192,195,198,255,191,194,197,255,191,193,196,255,190,193,196,255,189,191,194,255,188,190,193,255,186,189,192,255, -185,188,190,255,184,186,189,255,182,184,187,255,181,183,185,255,179,182,184,255,177,179,181,255,176,177,179,255,174,176,177,255, -172,173,175,255,170,171,173,255,167,169,170,255,165,167,168,255,163,164,166,255,161,162,163,255,159,160,161,255,156,157,158,255, -155,155,156,255,152,153,154,255,150,150,151,255,147,147,148,255,145,146,147,255,144,144,143,255,141,141,141,255,139,138,138,255, -137,136,136,255,135,135,134,255,133,132,131,255,131,130,129,255,129,128,127,255,127,126,125,255,125,124,122,255,123,121,120,255, -121,120,118,255,120,118,116,255, 91, 90, 89,255, 61, 61, 61,255, 60, 60, 60,255,121,122,123,255,175,177,179,255,172,174,176,255, -171,173,175,255,170,171,173,255,168,169,171,255,166,168,170,255,165,167,168,255,163,165,166,255,162,163,165,255,161,162,162,255, -159,160,161,255,157,158,159,255,156,157,157,255,154,155,156,255,152,153,154,255,151,151,153,255,149,149,151,255,147,148,149,255, -146,147,148,255,144,145,146,255,143,144,145,255,143,143,144,255,141,142,142,255,142,142,143,255,142,142,143,255,143,144,144,255, -148,148,149,255,158,160,161,255,182,184,186,255,201,204,206,255,202,204,206,255,202,204,206,255,203,205,207,255,202,204,208,255, -202,204,208,255,202,204,207,255,201,204,206,255,200,203,206,255,199,202,205,255,198,201,204,255,197,200,204,255,197,200,203,255, -196,199,202,255,196,199,202,255,195,198,201,255,195,198,201,255,194,197,200,255,195,197,201,255,194,197,200,255,194,196,200,255, -193,196,199,255,193,195,199,255,192,195,198,255,191,194,197,255,191,193,196,255,189,192,195,255,188,191,194,255,187,190,193,255, -187,188,191,255,185,187,190,255,184,186,188,255,183,184,186,255,180,182,185,255,179,181,183,255,177,178,180,255,175,177,179,255, -173,175,176,255,171,172,174,255,169,170,172,255,167,168,170,255,164,165,167,255,162,164,165,255,160,161,163,255,158,159,160,255, -156,157,158,255,153,154,155,255,151,151,152,255,149,149,150,255,146,147,147,255,144,144,144,255,142,142,142,255,140,140,140,255, -138,137,137,255,136,135,135,255,134,133,133,255,131,130,130,255,130,129,128,255,128,127,126,255,126,124,123,255,124,123,120,255, -122,120,119,255,121,119,116,255, 91, 90, 89,255, 61, 61, 61,255, 60, 60, 60,255,121,122,123,255,176,178,180,255,173,175,177,255, -171,173,175,255,170,172,174,255,168,170,172,255,167,168,170,255,166,167,169,255,163,165,166,255,162,164,165,255,161,162,164,255, -159,160,161,255,157,158,160,255,156,157,159,255,154,155,156,255,153,153,155,255,151,152,153,255,149,150,151,255,147,148,149,255, -145,146,147,255,144,145,146,255,142,143,144,255,140,140,141,255,139,139,140,255,138,138,138,255,136,136,137,255,135,135,136,255, -135,135,136,255,136,136,137,255,141,141,142,255,167,168,170,255,199,201,204,255,202,205,207,255,203,205,206,255,203,205,208,255, -202,206,208,255,203,205,207,255,201,205,207,255,201,204,207,255,200,203,206,255,199,202,205,255,199,201,205,255,198,200,204,255, -198,201,204,255,197,200,203,255,197,200,203,255,195,199,201,255,196,198,202,255,195,198,201,255,194,198,200,255,195,197,201,255, -194,197,200,255,194,196,200,255,193,196,199,255,192,195,198,255,191,194,197,255,191,193,196,255,189,192,195,255,188,191,194,255, -187,190,193,255,185,188,191,255,184,187,190,255,183,186,188,255,181,183,186,255,180,182,184,255,178,180,182,255,176,178,180,255, -174,176,177,255,172,174,176,255,170,171,173,255,168,169,171,255,166,167,169,255,163,165,166,255,161,162,163,255,159,160,162,255, -157,157,159,255,155,155,156,255,153,153,154,255,150,150,151,255,147,147,148,255,146,146,146,255,143,143,143,255,141,141,140,255, -139,138,138,255,137,136,136,255,135,134,133,255,132,131,130,255,130,129,129,255,129,127,126,255,126,125,123,255,124,123,122,255, -123,121,119,255,121,119,117,255, 92, 91, 89,255, 61, 61, 61,255, 60, 60, 60,255,121,122,123,255,177,179,181,255,174,176,178,255, -172,174,176,255,171,173,175,255,169,171,173,255,168,169,171,255,166,168,170,255,165,166,168,255,163,164,166,255,162,163,165,255, -159,162,163,255,158,159,161,255,157,158,159,255,155,156,158,255,153,154,156,255,152,153,154,255,150,151,152,255,148,149,150,255, -147,147,148,255,145,145,146,255,143,143,144,255,141,141,142,255,139,139,140,255,137,137,137,255,134,134,135,255,134,133,134,255, -132,132,132,255,131,130,131,255,130,130,130,255,132,132,131,255,151,152,154,255,190,193,195,255,203,205,208,255,202,205,207,255, -203,205,208,255,202,206,207,255,202,205,208,255,202,205,208,255,201,204,207,255,201,203,206,255,199,202,205,255,199,201,205,255, -198,201,204,255,198,201,204,255,197,200,203,255,197,200,203,255,196,199,202,255,196,199,202,255,195,198,201,255,194,197,200,255, -195,198,201,255,194,197,200,255,194,196,200,255,193,195,199,255,192,195,198,255,191,194,197,255,190,193,196,255,189,192,195,255, -188,191,194,255,187,190,193,255,185,188,190,255,184,186,189,255,183,185,187,255,181,183,185,255,179,181,183,255,177,179,181,255, -175,177,179,255,173,175,176,255,171,173,175,255,169,171,172,255,167,168,170,255,165,167,167,255,163,164,165,255,160,161,163,255, -158,159,160,255,156,157,158,255,153,154,155,255,151,151,152,255,149,149,150,255,146,146,147,255,144,143,144,255,141,141,142,255, -140,139,139,255,138,137,137,255,135,134,134,255,133,132,132,255,131,130,129,255,129,128,127,255,127,126,124,255,125,123,122,255, -123,121,119,255,122,119,118,255, 92, 90, 89,255, 61, 61, 61,255, 60, 60, 60,255,121,123,124,255,177,179,181,255,175,177,179,255, -174,176,178,255,172,174,176,255,170,172,174,255,169,171,173,255,167,169,171,255,166,168,169,255,165,166,168,255,162,164,166,255, -162,163,164,255,160,161,163,255,158,159,161,255,157,158,159,255,155,156,158,255,154,155,156,255,152,153,154,255,150,151,152,255, -149,150,151,255,147,148,149,255,145,146,147,255,143,143,144,255,141,141,142,255,138,138,139,255,136,136,137,255,133,133,134,255, -131,131,131,255,129,128,129,255,128,127,128,255,127,126,126,255,128,127,127,255,142,143,143,255,188,190,192,255,205,206,208,255, -202,205,207,255,202,206,208,255,203,205,207,255,202,205,207,255,202,204,208,255,201,204,207,255,201,203,206,255,199,202,205,255, -199,202,205,255,198,201,204,255,197,201,203,255,197,200,203,255,197,200,203,255,196,199,202,255,195,198,201,255,195,198,201,255, -194,197,200,255,194,197,200,255,194,197,200,255,194,196,200,255,193,195,199,255,192,195,198,255,191,194,197,255,190,193,196,255, -189,191,194,255,188,190,193,255,187,189,192,255,185,187,190,255,183,186,188,255,182,184,186,255,180,182,184,255,178,180,182,255, -176,178,180,255,174,176,177,255,172,174,176,255,170,171,173,255,168,169,171,255,166,167,168,255,164,165,166,255,161,162,164,255, -159,160,162,255,157,157,159,255,154,155,156,255,153,153,154,255,150,150,151,255,147,147,148,255,145,145,145,255,143,142,142,255, -140,140,139,255,139,138,138,255,136,135,135,255,134,133,132,255,131,130,130,255,130,129,128,255,128,126,125,255,125,124,122,255, -124,122,120,255,123,121,119,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,122,123,124,255,178,180,183,255,175,178,180,255, -175,177,179,255,173,175,177,255,171,173,175,255,170,172,174,255,169,171,173,255,167,169,171,255,166,168,169,255,165,167,168,255, -163,165,166,255,162,163,165,255,161,162,164,255,159,160,162,255,158,159,160,255,157,158,159,255,155,156,157,255,153,154,155,255, -152,153,154,255,150,151,152,255,148,149,150,255,147,147,148,255,144,145,146,255,142,142,143,255,140,140,141,255,137,137,137,255, -133,133,133,255,130,130,130,255,128,128,128,255,126,125,125,255,124,124,123,255,123,122,122,255,134,134,133,255,183,186,189,255, -203,205,207,255,203,205,207,255,203,206,208,255,203,205,209,255,202,206,208,255,202,205,208,255,202,204,207,255,201,204,207,255, -200,203,206,255,199,202,205,255,199,201,205,255,197,201,204,255,198,201,204,255,197,200,203,255,196,199,202,255,195,198,201,255, -196,199,202,255,194,197,200,255,195,198,201,255,194,197,200,255,193,196,199,255,193,196,199,255,192,195,198,255,191,194,197,255, -190,193,196,255,188,191,194,255,187,190,193,255,186,189,191,255,184,186,189,255,183,185,188,255,181,183,186,255,179,181,183,255, -177,179,182,255,176,178,179,255,173,175,177,255,171,172,174,255,169,171,172,255,166,168,169,255,164,166,167,255,163,164,165,255, -160,161,163,255,158,158,160,255,156,157,158,255,153,154,155,255,150,151,151,255,149,149,150,255,146,146,147,255,143,143,143,255, -141,141,141,255,139,139,138,255,137,136,135,255,134,133,132,255,133,132,131,255,130,129,128,255,128,127,125,255,127,125,124,255, -124,122,121,255,123,121,119,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,122,123,124,255,179,181,183,255,176,178,181,255, -175,177,180,255,174,176,178,255,173,175,177,255,172,174,175,255,171,173,174,255,170,172,173,255,168,170,172,255,167,168,170,255, -166,167,169,255,165,166,168,255,163,164,166,255,162,163,165,255,161,162,163,255,159,160,162,255,158,160,160,255,157,158,159,255, -155,157,158,255,153,155,156,255,152,153,155,255,151,152,153,255,149,150,151,255,147,148,149,255,144,145,146,255,141,142,143,255, -139,139,139,255,135,135,135,255,131,131,131,255,128,127,127,255,125,124,124,255,122,121,121,255,120,119,119,255,131,130,131,255, -178,180,182,255,203,205,207,255,203,205,207,255,203,206,208,255,202,205,209,255,202,205,208,255,202,205,208,255,202,204,207,255, -201,203,206,255,200,203,206,255,199,202,205,255,198,201,204,255,198,201,204,255,198,201,204,255,197,200,203,255,196,199,202,255, -196,199,202,255,195,198,201,255,195,198,201,255,195,198,201,255,193,196,199,255,193,196,199,255,192,195,198,255,191,194,197,255, -191,193,196,255,189,192,195,255,188,191,193,255,187,189,192,255,185,188,190,255,184,186,188,255,182,184,187,255,180,182,185,255, -178,180,182,255,176,178,180,255,175,176,178,255,172,174,176,255,170,171,173,255,168,169,171,255,166,167,168,255,163,164,166,255, -161,162,163,255,159,160,161,255,157,158,159,255,154,155,156,255,152,152,153,255,149,150,150,255,147,147,147,255,145,145,145,255, -142,142,142,255,140,140,139,255,138,137,137,255,136,135,134,255,133,132,131,255,131,130,129,255,129,128,126,255,127,126,124,255, -125,123,121,255,123,121,119,255, 93, 92, 90,255, 61, 61, 61,255, 60, 60, 60,255,122,123,125,255,179,181,184,255,177,179,181,255, -176,178,181,255,175,177,179,255,174,176,178,255,173,175,177,255,172,174,176,255,171,173,175,255,171,172,174,255,169,171,173,255, -168,170,172,255,167,168,170,255,166,167,169,255,165,167,168,255,163,165,166,255,163,164,166,255,162,163,165,255,160,162,163,255, -159,161,162,255,158,160,161,255,156,158,159,255,155,156,158,255,153,154,155,255,151,152,153,255,150,150,152,255,147,147,148,255, -143,144,145,255,140,140,141,255,136,136,137,255,132,132,132,255,128,128,128,255,124,123,123,255,121,120,120,255,120,118,118,255, -127,127,126,255,179,181,183,255,205,207,209,255,203,206,207,255,203,205,208,255,202,206,209,255,202,205,208,255,202,204,207,255, -201,204,207,255,201,203,206,255,199,202,205,255,199,202,205,255,199,201,205,255,197,200,204,255,198,201,203,255,197,200,203,255, -197,200,203,255,196,199,202,255,195,198,201,255,194,197,200,255,194,197,200,255,193,196,200,255,193,195,198,255,192,195,198,255, -191,194,197,255,190,193,196,255,189,191,194,255,188,190,193,255,186,188,191,255,185,187,190,255,183,186,188,255,181,183,186,255, -179,181,183,255,177,179,181,255,175,177,179,255,173,175,176,255,171,172,174,255,169,170,172,255,167,168,169,255,164,165,167,255, -162,163,165,255,160,161,162,255,157,158,159,255,156,156,157,255,153,153,154,255,150,150,151,255,148,148,148,255,146,146,146,255, -143,143,142,255,140,141,140,255,138,138,137,255,136,135,134,255,134,133,132,255,132,131,130,255,129,128,127,255,128,126,125,255, -125,124,122,255,124,122,120,255, 93, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,123,124,125,255,180,182,185,255,178,180,182,255, -177,179,181,255,176,178,180,255,175,177,179,255,174,176,178,255,174,176,178,255,172,174,176,255,172,174,176,255,171,173,175,255, -170,172,173,255,170,171,173,255,169,170,172,255,168,169,171,255,167,168,170,255,166,168,169,255,165,166,168,255,164,165,167,255, -163,165,166,255,162,163,165,255,160,162,163,255,159,161,162,255,158,159,160,255,156,157,158,255,154,155,156,255,151,152,153,255, -149,149,150,255,146,147,148,255,143,143,144,255,139,139,139,255,134,134,134,255,130,129,129,255,125,124,124,255,121,120,120,255, -118,117,116,255,123,123,123,255,181,183,185,255,203,206,208,255,203,206,208,255,203,206,209,255,202,205,209,255,203,206,209,255, -202,205,207,255,202,204,207,255,201,204,207,255,200,203,206,255,200,202,206,255,199,202,205,255,197,200,204,255,198,201,204,255, -197,200,203,255,197,200,203,255,196,199,202,255,195,198,201,255,194,197,200,255,194,197,200,255,193,196,199,255,193,195,198,255, -192,195,198,255,191,193,196,255,190,192,195,255,188,191,194,255,186,189,192,255,185,188,190,255,184,186,189,255,181,184,186,255, -180,182,185,255,179,181,183,255,176,178,180,255,174,175,177,255,172,174,175,255,170,171,173,255,167,168,170,255,165,166,168,255, -163,164,165,255,160,161,163,255,159,159,161,255,156,157,158,255,153,154,154,255,151,152,152,255,149,149,150,255,146,146,146,255, -144,144,144,255,142,141,141,255,139,138,138,255,136,135,135,255,135,134,133,255,133,131,130,255,130,128,127,255,128,127,125,255, -126,124,122,255,124,122,120,255, 93, 92, 91,255, 61, 61, 61,255, 60, 60, 60,255,123,124,126,255,180,183,185,255,178,181,183,255, -177,179,182,255,177,179,181,255,176,178,180,255,175,177,179,255,174,176,178,255,173,175,177,255,172,174,176,255,172,174,176,255, -171,173,175,255,170,172,174,255,170,172,173,255,169,171,173,255,169,170,172,255,168,170,172,255,168,169,171,255,167,168,170,255, -166,167,170,255,165,166,168,255,164,165,167,255,162,165,165,255,161,162,164,255,160,161,162,255,157,159,160,255,155,156,157,255, -152,153,155,255,150,151,152,255,147,148,149,255,143,144,145,255,140,140,140,255,136,135,136,255,131,130,131,255,126,125,125,255, -121,120,120,255,118,116,116,255,128,127,127,255,184,186,188,255,203,206,208,255,204,205,209,255,203,205,208,255,202,205,209,255, -202,205,208,255,202,205,208,255,202,205,208,255,201,204,207,255,200,203,206,255,200,202,205,255,199,201,205,255,198,201,204,255, -198,201,203,255,197,200,203,255,197,199,203,255,196,198,202,255,195,198,201,255,194,197,200,255,193,197,199,255,193,196,199,255, -192,195,198,255,191,194,197,255,190,193,196,255,189,192,195,255,188,190,193,255,186,189,191,255,185,187,189,255,183,185,188,255, -181,183,185,255,179,181,183,255,177,179,181,255,175,177,179,255,173,175,176,255,170,172,173,255,168,170,171,255,166,167,169,255, -164,165,166,255,162,163,164,255,160,160,162,255,157,158,159,255,155,155,156,255,152,152,153,255,150,150,150,255,148,148,148,255, -146,145,144,255,142,142,142,255,140,140,139,255,138,137,136,255,135,134,133,255,133,132,130,255,131,129,128,255,128,127,125,255, -126,125,123,255,124,123,121,255, 93, 92, 91,255, 61, 61, 61,255, 60, 60, 60,255,123,125,126,255,181,184,186,255,179,181,183,255, -178,181,183,255,177,179,181,255,176,179,181,255,176,178,180,255,174,176,178,255,174,176,178,255,173,175,177,255,172,174,176,255, -172,174,176,255,171,173,175,255,171,172,174,255,170,172,174,255,170,171,173,255,169,170,172,255,169,170,172,255,168,170,171,255, -167,169,170,255,167,168,170,255,166,168,169,255,165,166,168,255,164,165,167,255,162,163,166,255,161,162,163,255,158,160,161,255, -156,157,159,255,154,155,156,255,151,152,153,255,147,148,149,255,145,144,145,255,140,140,141,255,136,136,136,255,132,131,131,255, -126,125,125,255,121,119,119,255,117,116,115,255,133,132,132,255,195,198,201,255,204,206,208,255,204,206,209,255,203,205,208,255, -202,206,209,255,202,205,208,255,201,204,207,255,202,204,207,255,201,203,206,255,199,202,206,255,200,202,205,255,199,201,205,255, -197,200,204,255,198,201,203,255,197,200,203,255,196,199,202,255,195,198,201,255,195,198,201,255,194,196,200,255,193,196,199,255, -193,196,199,255,191,194,197,255,190,193,196,255,190,192,195,255,188,190,193,255,187,189,192,255,186,188,190,255,183,185,188,255, -182,184,186,255,180,182,185,255,178,180,182,255,176,177,179,255,173,175,177,255,172,173,175,255,169,170,172,255,167,168,170,255, -165,166,167,255,163,164,165,255,160,161,162,255,158,159,160,255,156,156,157,255,153,153,154,255,151,151,151,255,148,148,148,255, -145,145,145,255,144,143,143,255,141,140,140,255,138,137,137,255,136,135,134,255,133,132,131,255,131,130,128,255,128,128,126,255, -127,125,123,255,125,123,121,255, 93, 92, 91,255, 61, 61, 61,255, 60, 60, 60,255,123,125,126,255,182,184,186,255,179,182,184,255, -179,181,183,255,178,181,183,255,177,179,182,255,177,179,181,255,176,178,180,255,175,177,179,255,174,176,178,255,174,176,178,255, -173,175,177,255,172,174,176,255,171,174,176,255,171,173,175,255,171,172,174,255,170,172,174,255,170,171,173,255,170,171,173,255, -169,171,172,255,168,170,171,255,167,169,170,255,167,168,170,255,165,167,168,255,164,166,167,255,163,164,166,255,161,162,163,255, -159,160,161,255,157,158,159,255,154,155,156,255,151,152,153,255,148,149,150,255,144,146,146,255,141,141,142,255,136,136,136,255, -131,131,131,255,126,125,125,255,120,119,119,255,115,113,112,255,143,143,143,255,202,204,206,255,204,206,209,255,203,207,208,255, -203,206,209,255,202,205,208,255,203,206,209,255,202,204,208,255,201,204,207,255,201,204,206,255,200,203,206,255,200,202,206,255, -199,202,204,255,198,201,204,255,198,201,204,255,196,199,202,255,196,199,202,255,196,198,202,255,194,197,200,255,194,197,200,255, -193,196,199,255,192,195,198,255,191,194,197,255,190,193,196,255,188,191,194,255,187,190,193,255,186,188,191,255,184,186,189,255, -182,184,187,255,181,183,185,255,178,180,182,255,177,178,180,255,175,177,178,255,172,174,175,255,170,171,173,255,168,169,171,255, -165,166,168,255,163,164,165,255,161,162,163,255,159,159,160,255,156,156,157,255,154,154,155,255,151,151,152,255,149,149,149,255, -146,146,146,255,144,144,143,255,142,141,140,255,139,138,137,255,137,136,135,255,134,133,132,255,131,130,129,255,130,128,126,255, -127,125,123,255,125,123,121,255, 93, 92, 91,255, 61, 61, 61,255, 60, 60, 60,255,123,125,126,255,182,184,186,255,179,182,184,255, -179,181,184,255,179,181,183,255,177,179,182,255,177,179,181,255,176,178,181,255,175,177,180,255,175,177,179,255,174,176,178,255, -173,175,177,255,173,175,177,255,172,174,175,255,171,173,175,255,171,173,174,255,170,172,174,255,170,171,173,255,170,172,173,255, -169,171,173,255,168,170,172,255,168,169,171,255,167,168,170,255,166,168,169,255,165,167,168,255,164,165,167,255,163,164,165,255, -161,162,164,255,159,160,161,255,157,158,160,255,154,155,157,255,152,152,154,255,149,149,150,255,146,146,147,255,141,141,142,255, -136,137,136,255,131,131,131,255,125,124,124,255,120,118,118,255,115,113,113,255,156,157,158,255,203,205,208,255,204,207,209,255, -204,206,210,255,203,206,209,255,203,206,208,255,202,205,208,255,202,205,208,255,201,204,207,255,200,203,206,255,200,203,206,255, -199,201,205,255,198,201,204,255,198,201,204,255,197,200,203,255,197,199,203,255,196,199,202,255,195,198,201,255,194,197,200,255, -193,196,199,255,192,195,198,255,191,194,197,255,191,193,196,255,189,192,194,255,188,190,193,255,186,189,191,255,185,187,190,255, -183,185,187,255,181,183,186,255,179,181,183,255,178,179,181,255,175,177,179,255,174,175,177,255,171,172,174,255,169,170,171,255, -166,167,169,255,164,165,166,255,162,163,164,255,160,160,161,255,157,158,158,255,154,155,155,255,152,152,153,255,150,150,150,255, -147,147,147,255,145,144,144,255,142,142,141,255,140,139,138,255,137,136,136,255,135,134,132,255,132,131,130,255,129,128,127,255, -128,126,124,255,126,123,121,255, 94, 92, 91,255, 61, 61, 61,255, 60, 60, 60,255,124,125,126,255,182,184,187,255,179,182,184,255, -179,181,183,255,179,181,183,255,177,179,182,255,177,180,181,255,177,179,181,255,175,177,180,255,175,177,179,255,175,177,179,255, -173,175,177,255,174,176,177,255,173,175,176,255,172,174,175,255,171,173,175,255,171,173,175,255,170,172,174,255,170,171,173,255, -170,171,172,255,169,170,172,255,168,170,172,255,167,169,170,255,167,168,170,255,166,167,169,255,165,166,168,255,164,165,167,255, -163,164,165,255,161,162,163,255,159,160,161,255,157,158,159,255,155,155,157,255,152,152,154,255,149,149,150,255,145,146,146,255, -140,141,141,255,136,136,136,255,131,130,130,255,124,122,122,255,118,116,115,255,120,119,118,255,178,179,180,255,204,206,208,255, -203,207,209,255,204,207,210,255,202,205,208,255,203,206,209,255,203,205,209,255,202,205,208,255,201,204,207,255,200,203,206,255, -199,202,205,255,198,201,205,255,198,201,204,255,197,200,203,255,196,199,202,255,196,199,202,255,195,198,201,255,194,197,200,255, -194,197,200,255,192,195,198,255,192,194,197,255,191,193,196,255,189,192,195,255,188,190,193,255,187,189,192,255,185,187,190,255, -183,186,188,255,182,184,186,255,180,182,184,255,178,180,181,255,176,178,180,255,174,175,177,255,172,173,175,255,169,171,173,255, -167,168,170,255,165,166,167,255,162,163,164,255,161,161,162,255,158,158,159,255,155,156,156,255,153,154,154,255,151,151,151,255, -148,147,147,255,146,145,145,255,143,143,142,255,140,139,139,255,138,137,136,255,135,134,133,255,133,132,130,255,130,129,127,255, -128,126,124,255,126,124,122,255, 94, 93, 91,255, 61, 61, 61,255, 60, 60, 60,255,124,125,126,255,182,185,187,255,180,182,184,255, -179,182,184,255,179,181,183,255,178,180,182,255,177,180,182,255,177,179,181,255,175,177,180,255,175,177,179,255,174,176,178,255, -174,176,178,255,174,176,177,255,173,175,177,255,172,174,176,255,172,174,176,255,171,172,174,255,171,173,175,255,171,172,174,255, -170,171,174,255,169,171,172,255,169,171,172,255,167,169,172,255,167,168,170,255,167,168,170,255,165,167,168,255,165,166,167,255, -164,165,166,255,162,163,165,255,160,162,163,255,159,160,161,255,157,158,159,255,155,155,157,255,151,152,153,255,148,148,149,255, -144,145,146,255,139,140,141,255,135,134,134,255,129,129,129,255,122,121,121,255,116,114,113,255,131,130,130,255,197,198,201,255, -204,206,209,255,203,207,209,255,204,207,210,255,203,205,208,255,203,206,209,255,202,204,208,255,201,204,207,255,201,204,206,255, -200,203,207,255,199,202,205,255,199,202,205,255,197,200,204,255,197,200,203,255,197,200,203,255,196,198,202,255,195,198,201,255, -194,197,200,255,192,195,198,255,192,194,197,255,191,194,197,255,189,192,195,255,188,191,193,255,187,189,192,255,185,187,190,255, -184,186,188,255,182,184,187,255,180,182,184,255,179,180,182,255,177,179,181,255,174,176,178,255,172,173,175,255,171,172,173,255, -168,169,171,255,165,166,168,255,163,164,165,255,161,162,162,255,158,159,160,255,157,156,158,255,154,154,154,255,151,151,151,255, -149,149,149,255,147,146,146,255,144,143,142,255,142,141,139,255,139,138,137,255,136,135,134,255,133,132,130,255,131,129,128,255, -128,126,124,255,127,124,122,255, 94, 93, 91,255, 61, 61, 61,255, 60, 60, 60,255,124,125,127,255,183,185,187,255,180,182,185,255, -180,182,184,255,179,181,184,255,178,180,182,255,177,180,182,255,177,179,181,255,176,178,180,255,175,177,179,255,175,177,179,255, -174,176,178,255,174,176,178,255,172,174,177,255,173,175,176,255,172,174,175,255,172,173,175,255,171,172,174,255,170,172,174,255, -171,171,173,255,169,171,172,255,169,171,172,255,168,169,171,255,167,169,170,255,167,169,170,255,166,167,169,255,165,167,168,255, -164,166,167,255,163,164,166,255,162,163,165,255,160,161,163,255,159,160,161,255,157,158,159,255,154,155,156,255,151,152,153,255, -148,148,149,255,144,144,145,255,139,139,139,255,134,133,133,255,127,126,126,255,120,119,118,255,114,111,110,255,149,149,149,255, -205,207,210,255,204,207,209,255,203,207,210,255,203,206,209,255,202,205,208,255,203,205,209,255,201,205,207,255,201,204,207,255, -201,204,206,255,199,202,206,255,199,202,205,255,198,201,204,255,197,200,203,255,197,200,203,255,196,198,202,255,195,198,201,255, -195,197,200,255,193,196,199,255,192,195,198,255,191,194,197,255,189,192,195,255,189,191,194,255,188,190,193,255,185,188,190,255, -184,186,189,255,183,185,187,255,181,183,185,255,179,181,183,255,177,179,181,255,175,177,178,255,173,174,176,255,171,172,174,255, -169,170,172,255,166,167,168,255,164,165,166,255,162,162,163,255,159,160,161,255,157,157,158,255,154,154,155,255,152,152,152,255, -149,149,149,255,147,147,146,255,144,144,144,255,142,141,140,255,139,138,137,255,137,135,134,255,134,132,131,255,131,130,128,255, -129,127,125,255,127,125,122,255, 94, 93, 92,255, 61, 61, 61,255, 60, 60, 60,255,124,125,126,255,183,185,188,255,180,183,185,255, -180,182,184,255,179,181,184,255,178,180,183,255,178,180,182,255,177,179,180,255,176,178,181,255,176,178,180,255,175,177,179,255, -174,176,178,255,173,175,178,255,173,175,177,255,172,174,176,255,173,174,175,255,171,173,175,255,172,172,174,255,171,173,175,255, -170,171,173,255,169,172,173,255,169,171,173,255,169,169,171,255,168,170,171,255,167,169,170,255,166,168,169,255,165,167,168,255, -165,166,168,255,163,165,166,255,163,164,165,255,162,163,164,255,160,161,162,255,158,159,160,255,156,157,159,255,154,154,156,255, -150,151,152,255,147,148,149,255,143,142,143,255,138,138,138,255,132,132,132,255,126,124,123,255,118,117,115,255,116,114,113,255, -172,173,174,255,205,208,210,255,204,207,210,255,204,207,210,255,203,206,209,255,202,205,208,255,202,204,208,255,202,205,208,255, -200,203,206,255,200,203,206,255,199,202,206,255,198,201,204,255,197,200,204,255,197,200,203,255,196,199,202,255,195,198,201,255, -195,197,200,255,193,196,199,255,192,195,198,255,191,194,197,255,189,192,195,255,189,191,194,255,188,190,193,255,186,188,191,255, -184,186,189,255,183,185,187,255,181,183,185,255,179,181,183,255,178,180,182,255,176,177,179,255,174,175,177,255,172,173,174,255, -169,170,172,255,167,168,169,255,164,165,166,255,163,163,165,255,160,160,161,255,157,157,158,255,155,155,156,255,152,152,152,255, -149,149,149,255,148,148,147,255,145,144,144,255,142,141,140,255,140,139,138,255,137,136,134,255,134,133,131,255,132,130,129,255, -129,127,125,255,127,125,122,255, 94, 93, 92,255, 61, 61, 61,255, 60, 60, 60,255,124,126,127,255,183,186,188,255,181,183,186,255, -181,183,185,255,180,182,184,255,179,181,183,255,178,180,183,255,178,180,182,255,176,178,180,255,176,178,180,255,175,177,179,255, -175,177,179,255,174,176,178,255,174,176,176,255,173,175,176,255,173,174,176,255,171,173,175,255,172,173,175,255,171,172,175,255, -170,173,173,255,169,171,173,255,170,171,173,255,168,171,171,255,168,169,171,255,168,169,171,255,166,168,169,255,166,167,169,255, -165,166,168,255,164,165,167,255,163,164,166,255,162,163,165,255,161,162,163,255,159,160,162,255,158,159,160,255,155,156,157,255, -153,153,154,255,149,150,151,255,145,146,147,255,141,141,142,255,136,136,136,255,130,129,129,255,123,122,121,255,116,114,113,255, -129,128,127,255,194,196,198,255,204,206,208,255,203,207,210,255,204,206,209,255,202,205,208,255,202,205,209,255,202,205,208,255, -202,204,208,255,200,203,206,255,200,203,206,255,199,201,205,255,198,201,204,255,198,201,204,255,196,199,202,255,196,199,202,255, -195,198,201,255,194,196,199,255,192,195,198,255,191,194,197,255,189,192,195,255,188,191,193,255,187,190,192,255,186,188,191,255, -184,187,189,255,183,185,188,255,181,183,185,255,180,181,183,255,178,180,182,255,176,177,179,255,174,175,177,255,173,174,175,255, -170,171,173,255,167,168,169,255,166,166,167,255,163,164,165,255,161,161,162,255,159,159,160,255,156,156,157,255,153,153,154,255, -151,150,150,255,148,148,147,255,145,145,144,255,143,142,141,255,141,140,138,255,137,136,135,255,135,133,132,255,132,131,129,255, -130,128,125,255,127,125,123,255, 94, 93, 91,255, 61, 61, 61,255, 60, 60, 60,255,125,126,127,255,183,186,188,255,181,184,186,255, -180,183,185,255,180,182,185,255,179,181,184,255,178,180,183,255,178,179,181,255,177,179,181,255,176,178,180,255,176,178,180,255, -175,177,179,255,174,176,178,255,174,176,177,255,173,175,176,255,172,174,176,255,172,174,176,255,171,173,175,255,171,172,175,255, -170,172,173,255,169,171,173,255,170,171,173,255,168,170,171,255,169,170,172,255,168,170,171,255,166,168,169,255,166,167,169,255, -165,167,168,255,164,165,167,255,164,165,166,255,163,164,165,255,161,162,164,255,160,161,163,255,158,159,161,255,157,158,159,255, -154,155,157,255,152,152,153,255,148,149,150,255,144,144,145,255,140,140,140,255,134,133,133,255,128,127,126,255,120,118,117,255, -115,113,111,255,158,158,159,255,204,206,209,255,203,207,209,255,204,207,210,255,203,205,208,255,202,206,209,255,202,205,208,255, -201,205,207,255,201,204,207,255,200,203,206,255,200,202,205,255,198,201,204,255,198,201,204,255,196,199,202,255,196,199,202,255, -195,198,201,255,194,196,199,255,193,195,198,255,191,194,197,255,189,192,195,255,188,191,193,255,187,190,192,255,186,188,191,255, -185,187,189,255,183,185,188,255,181,183,185,255,180,182,184,255,178,180,182,255,177,178,180,255,175,176,178,255,173,174,175,255, -171,172,173,255,168,169,170,255,165,167,168,255,163,164,165,255,161,162,163,255,159,159,160,255,156,158,157,255,154,155,155,255, -152,151,151,255,149,148,148,255,147,146,145,255,143,143,142,255,141,140,138,255,138,137,135,255,135,134,132,255,133,131,129,255, -130,128,125,255,128,125,123,255, 95, 93, 91,255, 61, 61, 61,255, 60, 60, 60,255,125,126,128,255,184,187,189,255,182,184,187,255, -181,183,186,255,180,183,185,255,179,181,184,255,179,181,183,255,178,180,182,255,177,179,181,255,177,179,181,255,175,177,179,255, -175,177,179,255,175,177,179,255,173,175,177,255,174,175,177,255,173,175,177,255,172,173,175,255,171,174,175,255,172,173,175,255, -170,172,173,255,169,171,173,255,170,171,173,255,168,171,171,255,168,170,171,255,167,170,170,255,167,168,170,255,166,168,169,255, -166,168,169,255,164,166,167,255,164,165,167,255,163,164,166,255,162,163,164,255,161,162,163,255,160,161,162,255,158,159,160,255, -156,157,158,255,154,155,156,255,151,151,152,255,147,148,148,255,143,143,144,255,137,137,138,255,132,131,131,255,125,123,122,255, -116,115,113,255,118,116,115,255,189,191,193,255,205,207,210,255,203,207,210,255,203,206,209,255,202,205,208,255,203,206,209,255, -201,204,207,255,201,204,207,255,201,204,207,255,199,202,205,255,199,201,205,255,198,201,204,255,196,199,202,255,196,199,202,255, -196,198,201,255,194,196,200,255,193,196,199,255,192,194,197,255,190,192,195,255,188,191,193,255,187,190,192,255,185,188,190,255, -185,187,189,255,183,185,188,255,181,183,185,255,180,182,184,255,179,181,182,255,177,178,180,255,175,176,178,255,174,175,176,255, -171,172,173,255,169,170,171,255,166,167,168,255,164,165,166,255,162,162,163,255,159,159,160,255,157,158,158,255,155,155,155,255, -152,152,152,255,150,149,149,255,147,146,145,255,144,143,142,255,141,140,139,255,139,137,136,255,135,134,132,255,133,131,129,255, -130,128,125,255,128,125,122,255, 95, 93, 91,255, 61, 61, 61,255, 60, 60, 60,255,125,127,128,255,184,187,190,255,182,185,187,255, -182,184,187,255,181,183,186,255,180,182,185,255,180,182,184,255,179,181,183,255,177,180,182,255,177,179,181,255,177,179,181,255, -175,177,180,255,175,177,179,255,175,177,179,255,173,175,177,255,173,175,177,255,172,175,177,255,171,173,175,255,172,173,175,255, -170,172,174,255,170,171,173,255,169,171,172,255,170,170,173,255,168,170,171,255,167,170,170,255,167,168,170,255,166,168,169,255, -166,168,169,255,165,166,168,255,164,165,167,255,164,165,166,255,163,164,165,255,161,162,164,255,160,161,163,255,159,160,161,255, -157,158,159,255,155,156,157,255,152,153,154,255,149,149,150,255,145,146,146,255,141,141,141,255,136,135,135,255,130,129,129,255, -122,120,119,255,113,110,109,255,138,137,137,255,203,205,208,255,204,207,209,255,204,206,210,255,203,206,209,255,202,206,208,255, -203,204,209,255,201,204,207,255,201,204,207,255,200,202,206,255,199,202,205,255,198,201,204,255,197,199,203,255,196,199,202,255, -196,198,201,255,194,196,200,255,193,196,199,255,192,195,198,255,190,192,195,255,189,191,194,255,187,190,192,255,185,188,190,255, -184,186,189,255,183,185,188,255,181,183,185,255,180,182,184,255,179,181,182,255,177,178,180,255,175,176,178,255,174,175,176,255, -171,172,173,255,169,170,171,255,168,168,169,255,165,166,166,255,163,163,164,255,161,161,162,255,158,159,159,255,155,156,156,255, -153,153,153,255,150,149,149,255,147,146,145,255,145,144,143,255,142,141,139,255,139,137,136,255,136,134,132,255,133,131,129,255, -130,128,125,255,128,125,122,255, 94, 92, 91,255, 61, 61, 61,255, 60, 60, 60,255,125,126,128,255,185,188,190,255,182,185,188,255, -182,185,187,255,181,184,186,255,180,183,185,255,180,182,184,255,178,181,183,255,178,180,182,255,177,179,182,255,177,179,181,255, -176,178,180,255,175,177,180,255,175,177,179,255,173,175,177,255,174,175,177,255,172,174,176,255,172,174,175,255,172,174,175,255, -170,172,175,255,170,171,173,255,169,172,173,255,169,170,172,255,168,170,171,255,168,170,171,255,167,168,170,255,166,169,169,255, -166,168,169,255,165,166,168,255,165,166,168,255,164,165,167,255,163,164,165,255,162,163,165,255,161,162,163,255,159,160,161,255, -158,159,160,255,156,157,158,255,154,155,156,255,151,152,152,255,147,148,149,255,143,144,144,255,139,138,139,255,133,133,133,255, -126,125,125,255,118,117,115,255,114,111,110,255,168,170,171,255,205,207,210,255,203,207,209,255,203,206,209,255,203,205,208,255, -202,205,208,255,201,205,207,255,201,204,207,255,201,203,207,255,199,202,205,255,199,201,205,255,197,200,203,255,196,199,202,255, -196,198,201,255,194,196,200,255,193,196,199,255,192,194,197,255,190,192,195,255,189,191,194,255,187,190,192,255,185,188,190,255, -184,186,188,255,183,185,187,255,181,183,185,255,180,182,184,255,179,181,182,255,177,179,180,255,176,177,178,255,174,175,177,255, -172,173,174,255,170,171,172,255,168,169,169,255,166,166,167,255,163,164,165,255,161,161,162,255,158,159,159,255,156,156,156,255, -153,153,153,255,151,150,150,255,148,147,146,255,145,144,143,255,142,141,139,255,139,138,136,255,136,134,132,255,133,131,129,255, -130,128,125,255,128,125,121,255, 94, 92, 90,255, 61, 61, 61,255, 60, 60, 60,255,125,127,129,255,186,188,191,255,183,185,188,255, -183,185,188,255,182,185,187,255,181,183,185,255,180,183,185,255,180,182,184,255,178,181,183,255,178,180,183,255,177,180,182,255, -176,178,180,255,176,178,180,255,174,176,178,255,174,176,178,255,174,176,178,255,172,174,176,255,173,174,175,255,172,174,176,255, -171,172,174,255,170,172,173,255,169,172,173,255,169,170,172,255,168,170,171,255,168,169,171,255,167,169,170,255,166,168,169,255, -166,168,169,255,165,167,168,255,164,166,167,255,164,166,167,255,163,164,166,255,162,163,165,255,162,163,164,255,160,161,162,255, -158,159,161,255,157,158,160,255,155,156,157,255,152,153,154,255,150,150,151,255,146,147,147,255,142,141,142,255,137,136,136,255, -130,129,129,255,123,122,120,255,115,113,112,255,129,128,127,255,194,196,198,255,204,207,209,255,204,207,209,255,203,206,208,255, -203,205,209,255,202,204,208,255,202,204,207,255,200,203,206,255,199,202,205,255,199,202,205,255,197,200,203,255,196,199,202,255, -196,198,201,255,194,197,200,255,193,195,198,255,192,194,197,255,190,192,195,255,189,191,193,255,187,189,192,255,185,187,189,255, -184,186,188,255,183,185,187,255,181,183,185,255,180,182,184,255,179,181,182,255,178,179,180,255,176,177,178,255,174,175,177,255, -172,173,174,255,170,171,172,255,168,169,170,255,166,166,167,255,163,164,165,255,161,161,162,255,159,159,160,255,157,157,157,255, -154,154,153,255,152,151,150,255,149,148,147,255,145,144,143,255,143,141,140,255,140,138,136,255,136,134,132,255,134,131,129,255, -131,128,125,255,128,125,120,255, 94, 92, 90,255, 61, 61, 61,255, 60, 60, 60,255,126,127,128,255,186,189,192,255,184,187,189,255, -183,186,188,255,183,185,187,255,182,184,186,255,181,183,185,255,180,182,185,255,179,181,184,255,178,180,183,255,178,179,182,255, -177,179,181,255,176,178,181,255,176,178,180,255,175,177,179,255,174,176,178,255,174,175,177,255,173,175,176,255,172,174,176,255, -171,173,174,255,170,172,174,255,170,172,174,255,169,170,172,255,169,170,172,255,169,170,172,255,167,169,170,255,167,168,170,255, -167,168,170,255,165,167,168,255,165,167,168,255,165,166,168,255,163,165,166,255,163,164,165,255,162,163,164,255,160,161,163,255, -159,160,162,255,158,159,160,255,156,157,158,255,154,155,156,255,151,152,153,255,148,148,149,255,144,144,145,255,139,139,139,255, -134,133,133,255,127,126,125,255,119,119,117,255,114,112,110,255,161,162,163,255,204,206,209,255,204,206,208,255,204,206,209,255, -202,205,209,255,202,205,208,255,202,205,208,255,200,203,206,255,200,203,206,255,199,202,205,255,197,200,203,255,196,199,202,255, -196,198,201,255,194,197,199,255,193,195,198,255,191,194,197,255,190,192,195,255,188,190,193,255,187,189,191,255,185,187,189,255, -184,186,188,255,183,185,187,255,181,183,185,255,180,182,184,255,179,181,182,255,178,179,180,255,176,177,178,255,175,176,177,255, -173,174,175,255,171,171,172,255,169,170,171,255,167,167,168,255,164,165,165,255,162,162,163,255,159,159,160,255,157,157,157,255, -154,154,153,255,152,151,151,255,149,148,147,255,146,145,143,255,143,142,140,255,140,138,136,255,137,135,132,255,134,132,129,255, -131,128,125,255,128,124,120,255, 95, 92, 90,255, 61, 61, 61,255, 60, 60, 60,255,126,127,129,255,186,189,192,255,184,187,190,255, -184,186,189,255,182,185,188,255,182,184,187,255,181,184,186,255,181,183,185,255,180,182,184,255,179,181,184,255,178,180,182,255, -177,179,181,255,177,179,181,255,175,177,180,255,175,177,179,255,174,176,178,255,173,176,178,255,173,175,177,255,173,174,176,255, -171,173,175,255,171,172,174,255,170,172,174,255,169,171,173,255,169,170,172,255,169,170,172,255,167,169,170,255,167,168,170,255, -167,168,170,255,166,167,168,255,165,166,168,255,165,166,168,255,163,165,166,255,163,164,166,255,162,163,165,255,161,162,163,255, -160,161,162,255,158,159,160,255,156,157,159,255,155,156,157,255,152,153,154,255,149,150,151,255,145,146,146,255,142,142,142,255, -137,137,136,255,131,130,129,255,124,123,121,255,116,114,112,255,120,119,117,255,188,191,192,255,205,207,210,255,204,206,209,255, -202,206,209,255,202,205,208,255,202,205,208,255,201,203,206,255,200,203,206,255,199,202,205,255,197,200,203,255,197,199,202,255, -196,198,201,255,194,196,199,255,193,195,198,255,191,194,196,255,189,192,194,255,188,190,193,255,187,189,191,255,185,187,189,255, -184,186,188,255,183,185,186,255,181,183,185,255,180,182,183,255,179,181,182,255,178,179,180,255,176,178,179,255,175,176,177,255, -173,173,175,255,171,171,172,255,168,170,171,255,167,167,168,255,164,165,165,255,163,163,163,255,160,160,160,255,157,157,157,255, -155,154,154,255,152,151,151,255,150,149,147,255,146,145,144,255,143,142,140,255,140,138,136,255,137,135,132,255,135,132,129,255, -130,127,124,255,126,122,117,255, 69, 68, 66,255, 61, 61, 61,255, 60, 60, 60,255,127,128,130,255,187,190,193,255,185,187,190,255, -185,187,190,255,184,186,189,255,182,185,187,255,182,184,187,255,181,184,186,255,180,182,185,255,180,182,184,255,179,181,183,255, -178,180,182,255,177,179,182,255,176,178,181,255,175,177,179,255,175,177,179,255,173,175,177,255,173,175,177,255,173,175,176,255, -171,173,175,255,171,173,174,255,170,173,175,255,170,171,173,255,169,171,172,255,169,171,172,255,167,169,170,255,167,169,170,255, -166,169,170,255,166,167,168,255,165,166,169,255,165,166,168,255,163,166,166,255,164,165,167,255,163,164,166,255,161,162,164,255, -160,161,163,255,159,160,161,255,157,158,159,255,156,156,158,255,154,155,156,255,151,152,153,255,147,148,149,255,144,144,144,255, -139,139,139,255,134,133,133,255,128,127,127,255,121,119,118,255,113,111,109,255,139,138,138,255,202,204,207,255,204,206,208,255, -203,206,209,255,202,205,208,255,202,205,208,255,201,203,206,255,200,203,206,255,199,202,205,255,197,200,203,255,197,199,202,255, -196,198,201,255,194,196,199,255,192,195,197,255,191,194,196,255,189,191,194,255,188,190,192,255,187,189,191,255,185,187,189,255, -184,186,188,255,183,185,186,255,181,183,185,255,180,181,183,255,180,181,183,255,178,179,180,255,176,177,179,255,175,176,177,255, -173,174,175,255,171,172,173,255,170,170,171,255,167,168,168,255,165,165,166,255,162,162,162,255,160,160,160,255,157,157,157,255, -154,154,154,255,153,152,151,255,150,149,147,255,146,145,144,255,144,142,140,255,140,138,135,255,137,135,131,255,133,130,127,255, -131,128,123,255, 77, 75, 71,255, 25, 25, 25,255, 62, 62, 62,255, 60, 60, 60,255,127,128,130,255,188,191,194,255,186,188,191,255, -185,187,190,255,184,187,190,255,183,185,188,255,182,185,187,255,182,184,186,255,181,183,185,255,180,182,184,255,179,182,184,255, -178,180,183,255,178,180,182,255,176,178,181,255,176,178,180,255,175,177,179,255,175,177,179,255,174,175,177,255,173,175,177,255, -173,175,176,255,172,173,175,255,171,173,175,255,170,171,173,255,169,171,173,255,169,171,173,255,169,170,171,255,168,169,171,255, -167,169,170,255,166,167,169,255,166,167,168,255,165,167,168,255,164,165,167,255,164,165,167,255,163,164,166,255,162,163,164,255, -161,162,163,255,159,160,162,255,158,159,160,255,156,157,158,255,155,155,156,255,152,152,153,255,149,149,150,255,145,146,146,255, -141,141,141,255,137,136,136,255,132,131,130,255,125,124,123,255,118,116,114,255,115,112,110,255,165,167,168,255,203,206,208,255, -203,206,208,255,202,205,208,255,202,205,208,255,201,203,206,255,200,203,206,255,199,202,205,255,198,200,203,255,197,199,202,255, -196,198,201,255,193,196,199,255,192,195,197,255,191,193,195,255,189,191,193,255,188,190,192,255,186,188,190,255,185,187,189,255, -184,186,187,255,183,184,186,255,181,183,184,255,180,181,183,255,180,181,182,255,177,179,180,255,176,177,178,255,175,176,177,255, -173,174,175,255,171,172,173,255,170,170,171,255,167,168,168,255,165,165,166,255,162,163,164,255,161,161,160,255,158,157,157,255, -154,154,153,255,152,151,150,255,149,148,147,255,146,145,143,255,144,142,139,255,140,138,135,255,137,135,131,255,134,131,126,255, - 89, 86, 82,255, 0, 0, 0,255, 29, 29, 29,255, 61, 61, 61,255, 60, 60, 60,255,127,129,130,255,188,191,194,255,186,189,192,255, -185,188,191,255,185,187,190,255,184,186,189,255,183,185,188,255,182,185,187,255,181,183,186,255,181,183,185,255,179,181,184,255, -179,181,183,255,178,180,183,255,177,179,181,255,176,178,180,255,176,178,180,255,175,177,179,255,174,176,178,255,174,176,177,255, -172,174,176,255,172,174,175,255,171,173,175,255,170,172,174,255,170,171,173,255,169,171,173,255,168,170,171,255,167,169,170,255, -167,169,170,255,166,167,169,255,166,167,169,255,165,166,168,255,164,166,167,255,164,165,167,255,163,165,166,255,162,163,164,255, -161,162,164,255,160,161,163,255,158,159,161,255,157,158,159,255,155,156,157,255,154,154,155,255,150,150,151,255,147,147,148,255, -143,143,143,255,139,138,138,255,135,134,133,255,129,127,127,255,122,120,119,255,117,114,112,255,126,125,124,255,187,189,191,255, -203,205,207,255,203,205,208,255,202,205,208,255,201,203,206,255,200,203,205,255,200,202,205,255,198,200,203,255,197,199,202,255, -195,198,200,255,193,196,198,255,192,194,197,255,191,193,195,255,189,191,193,255,187,189,191,255,186,188,190,255,185,187,188,255, -184,185,187,255,183,184,186,255,181,183,184,255,180,181,183,255,179,181,182,255,177,178,180,255,176,177,178,255,175,176,177,255, -173,173,174,255,171,171,172,255,170,170,171,255,167,167,168,255,165,165,165,255,162,162,163,255,160,160,160,255,157,157,156,255, -154,154,153,255,152,150,150,255,149,147,146,255,146,144,142,255,144,141,138,255,139,137,134,255,138,135,131,255, 91, 89, 85,255, - 5, 5, 5,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 60, 60, 60,255,128,129,131,255,189,192,195,255,187,189,192,255, -186,189,192,255,186,188,191,255,184,187,189,255,184,186,189,255,183,186,188,255,182,184,186,255,181,184,186,255,181,183,185,255, -179,181,183,255,179,181,183,255,178,180,183,255,177,179,181,255,177,179,181,255,175,177,179,255,174,176,178,255,174,176,178,255, -173,175,176,255,172,174,176,255,172,174,176,255,170,172,174,255,171,172,174,255,170,172,173,255,168,170,171,255,168,170,171,255, -168,169,171,255,166,168,169,255,166,167,169,255,166,167,169,255,164,166,167,255,164,166,167,255,164,165,166,255,162,164,165,255, -162,163,164,255,161,162,163,255,159,160,161,255,157,158,159,255,156,157,158,255,154,154,156,255,151,152,152,255,149,149,150,255, -145,145,145,255,141,141,141,255,137,137,137,255,132,131,130,255,126,125,124,255,120,118,116,255,114,112,110,255,141,142,142,255, -199,201,203,255,203,205,207,255,203,205,207,255,201,203,206,255,200,203,205,255,200,202,205,255,198,200,203,255,197,199,202,255, -195,198,200,255,193,195,198,255,192,194,196,255,190,192,194,255,188,190,192,255,187,189,190,255,186,188,189,255,184,186,188,255, -184,185,187,255,183,184,186,255,181,182,184,255,180,181,182,255,179,180,181,255,177,178,179,255,176,177,178,255,175,176,177,255, -173,173,174,255,171,171,172,255,170,170,170,255,167,167,168,255,165,165,165,255,162,162,161,255,160,159,159,255,157,156,155,255, -154,153,152,255,151,150,148,255,148,147,144,255,144,142,140,255,143,141,137,255,142,139,134,255, 96, 94, 90,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,128,129,131,255,190,193,196,255,188,190,193,255, -187,189,192,255,186,189,192,255,185,188,191,255,184,187,189,255,184,186,189,255,182,185,187,255,182,184,187,255,181,184,186,255, -180,182,185,255,179,182,184,255,179,181,183,255,177,179,182,255,177,179,181,255,177,178,180,255,175,177,179,255,175,176,178,255, -173,175,178,255,173,175,176,255,172,174,176,255,172,173,175,255,170,172,174,255,170,172,173,255,169,171,172,255,168,170,171,255, -168,169,171,255,167,168,170,255,167,168,170,255,166,167,169,255,165,166,168,255,164,166,167,255,163,165,167,255,163,164,165,255, -162,163,165,255,161,162,164,255,159,160,162,255,158,159,160,255,157,157,159,255,154,156,156,255,152,153,154,255,150,150,151,255, -146,146,147,255,143,143,143,255,139,139,138,255,135,134,134,255,130,129,128,255,125,123,122,255,118,116,115,255,114,112,111,255, -156,156,156,255,201,202,205,255,202,204,207,255,201,203,205,255,200,202,205,255,199,202,204,255,198,200,202,255,197,199,201,255, -195,197,199,255,193,195,197,255,191,193,196,255,190,192,193,255,188,190,192,255,187,188,190,255,186,187,189,255,184,186,187,255, -183,185,186,255,183,184,185,255,181,182,183,255,180,181,182,255,179,180,181,255,177,178,179,255,176,176,177,255,174,175,176,255, -172,173,174,255,171,171,172,255,168,169,169,255,167,167,166,255,164,164,164,255,161,161,161,255,159,158,157,255,156,156,155,255, -153,152,151,255,151,149,147,255,147,145,143,255,146,143,140,255,138,135,131,255, 75, 74, 71,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,128,130,131,255,190,193,196,255,188,191,194,255, -188,190,193,255,187,189,192,255,186,188,191,255,185,188,190,255,184,187,189,255,183,185,188,255,182,185,187,255,182,183,186,255, -181,183,185,255,180,182,184,255,179,181,183,255,178,180,182,255,177,179,182,255,176,178,180,255,176,178,180,255,175,177,179,255, -174,175,177,255,173,175,177,255,173,174,176,255,171,173,175,255,171,172,174,255,170,172,173,255,169,171,172,255,169,170,172,255, -168,170,171,255,168,169,171,255,167,168,170,255,166,167,169,255,165,166,168,255,164,166,167,255,164,166,167,255,163,164,166,255, -162,164,165,255,162,163,164,255,160,161,163,255,159,159,161,255,157,158,159,255,155,156,157,255,153,154,155,255,151,151,152,255, -148,148,148,255,144,144,144,255,141,140,140,255,137,136,136,255,133,132,131,255,128,127,126,255,122,121,119,255,117,115,113,255, -119,117,115,255,163,164,165,255,201,203,205,255,201,203,205,255,200,202,204,255,199,201,203,255,197,200,202,255,196,198,200,255, -195,197,199,255,193,195,197,255,191,193,195,255,189,191,193,255,188,189,191,255,187,188,190,255,186,187,188,255,184,186,187,255, -183,184,185,255,182,184,185,255,181,182,183,255,180,181,182,255,178,179,180,255,176,177,178,255,175,176,177,255,174,175,175,255, -172,172,173,255,170,170,171,255,169,169,168,255,166,166,165,255,163,163,163,255,161,160,159,255,158,157,156,255,155,155,153,255, -153,151,150,255,149,147,145,255,149,147,143,255,135,133,129,255, 40, 38, 37,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,129,130,132,255,191,194,197,255,189,192,195,255, -188,191,194,255,188,190,193,255,186,189,192,255,186,189,191,255,185,187,190,255,184,186,189,255,183,186,188,255,182,185,187,255, -181,183,186,255,181,183,185,255,180,182,185,255,179,181,183,255,178,180,182,255,178,180,182,255,176,178,180,255,176,178,180,255, -174,177,178,255,173,175,177,255,173,175,177,255,172,173,175,255,172,173,175,255,171,173,174,255,170,171,173,255,169,170,172,255, -169,171,172,255,167,169,170,255,167,169,170,255,167,168,170,255,165,167,168,255,165,166,168,255,165,166,167,255,163,164,166,255, -163,164,165,255,162,163,165,255,160,161,163,255,159,160,161,255,158,159,160,255,155,156,157,255,154,154,155,255,152,152,153,255, -149,149,150,255,146,146,146,255,143,142,143,255,139,139,138,255,135,135,134,255,131,130,130,255,126,125,124,255,121,119,118,255, -117,115,112,255,122,120,119,255,172,173,174,255,200,202,203,255,200,202,204,255,199,201,203,255,197,199,201,255,196,198,200,255, -195,196,198,255,192,194,196,255,191,193,194,255,189,191,192,255,187,189,190,255,186,188,189,255,186,187,188,255,184,185,186,255, -183,184,185,255,182,183,184,255,180,181,182,255,179,180,181,255,178,179,180,255,176,177,177,255,175,175,175,255,173,173,173,255, -171,172,172,255,169,169,169,255,167,166,166,255,165,164,164,255,162,161,160,255,159,158,157,255,156,154,153,255,153,151,149,255, -151,149,146,255,150,147,143,255,102, 99, 96,255, 3, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,129,130,132,255,192,195,198,255,190,193,196,255, -189,192,195,255,188,191,194,255,187,190,193,255,186,189,192,255,186,188,191,255,185,187,190,255,184,186,189,255,183,185,188,255, -182,184,187,255,181,183,186,255,180,183,185,255,179,182,184,255,179,181,183,255,177,179,182,255,177,179,181,255,176,178,180,255, -175,178,179,255,174,176,178,255,174,176,177,255,173,174,177,255,172,174,175,255,171,173,175,255,170,172,173,255,170,171,173,255, -169,171,172,255,168,169,171,255,168,169,171,255,167,168,170,255,166,167,169,255,165,167,168,255,165,166,168,255,163,165,166,255, -163,164,166,255,163,164,165,255,161,162,164,255,160,161,162,255,158,159,160,255,156,157,158,255,155,155,156,255,153,153,154,255, -150,150,151,255,147,147,148,255,144,143,144,255,140,140,140,255,137,136,136,255,133,132,132,255,129,128,127,255,125,123,122,255, -120,119,116,255,116,113,111,255,122,120,119,255,168,169,169,255,197,199,201,255,199,200,202,255,197,199,200,255,195,197,199,255, -194,196,197,255,192,194,196,255,191,192,193,255,189,191,192,255,187,189,190,255,186,188,189,255,186,187,188,255,184,185,186,255, -183,184,185,255,182,183,183,255,180,181,181,255,179,180,180,255,177,178,178,255,175,176,176,255,174,174,174,255,172,172,172,255, -170,170,170,255,168,168,168,255,166,165,164,255,163,162,161,255,160,159,158,255,158,157,155,255,156,153,151,255,152,150,147,255, -119,116,114,255, 51, 50, 49,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,130,131,133,255,193,195,199,255,190,193,196,255, -190,192,195,255,189,191,194,255,188,190,193,255,187,190,193,255,186,189,192,255,185,188,190,255,185,187,190,255,183,185,188,255, -182,185,187,255,182,184,187,255,180,183,185,255,180,182,184,255,179,181,184,255,178,180,182,255,177,179,182,255,177,179,181,255, -176,177,179,255,175,177,179,255,174,176,178,255,173,175,176,255,172,174,176,255,172,173,175,255,171,172,174,255,170,172,173,255, -170,171,173,255,169,170,172,255,168,169,171,255,167,169,170,255,166,167,169,255,166,167,169,255,165,166,168,255,164,165,166,255, -163,164,166,255,163,164,165,255,161,162,164,255,160,161,162,255,159,160,161,255,157,157,159,255,155,155,156,255,154,154,155,255, -151,151,152,255,148,148,149,255,145,145,145,255,142,141,142,255,139,138,138,255,135,135,134,255,132,131,131,255,129,127,127,255, -124,123,121,255,119,117,116,255,115,113,112,255,121,119,117,255,156,155,156,255,194,196,197,255,197,199,199,255,195,197,198,255, -194,195,197,255,192,193,195,255,190,192,193,255,189,191,192,255,188,189,190,255,187,188,189,255,186,187,188,255,184,185,186,255, -183,184,185,255,181,182,183,255,179,180,181,255,178,178,180,255,176,177,177,255,175,174,175,255,173,172,173,255,171,171,170,255, -168,168,168,255,166,165,164,255,164,163,161,255,160,158,157,255,158,156,154,255,157,155,153,255,139,137,134,255, 51, 50, 49,255, - 10, 10, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,130,131,133,255,193,196,199,255,191,194,197,255, -191,193,196,255,190,192,196,255,188,191,194,255,188,191,194,255,187,190,193,255,186,188,191,255,185,188,191,255,185,187,190,255, -183,185,188,255,183,185,188,255,182,184,187,255,181,183,185,255,180,182,184,255,179,181,184,255,178,180,182,255,177,179,181,255, -176,179,181,255,176,177,179,255,175,177,178,255,174,176,178,255,173,175,177,255,173,174,176,255,171,173,175,255,171,172,174,255, -170,172,174,255,169,171,172,255,169,170,172,255,168,169,171,255,167,168,170,255,166,168,169,255,166,167,168,255,164,166,167,255, -164,165,167,255,163,164,166,255,162,163,164,255,161,162,163,255,159,160,161,255,157,158,159,255,156,156,157,255,154,155,156,255, -152,152,153,255,149,149,150,255,147,147,147,255,144,144,144,255,141,140,140,255,138,137,137,255,135,134,133,255,131,130,130,255, -128,127,126,255,123,122,120,255,118,117,115,255,115,113,111,255,115,114,112,255,142,140,140,255,185,186,187,255,195,196,197,255, -194,195,196,255,192,193,194,255,190,192,193,255,190,191,192,255,188,189,190,255,187,188,189,255,186,187,188,255,184,185,186,255, -182,183,184,255,181,182,182,255,179,179,180,255,177,177,177,255,175,175,175,255,173,173,173,255,171,171,170,255,168,168,167,255, -165,164,163,255,164,163,161,255,161,159,157,255,157,155,153,255,148,146,142,255, 66, 64, 63,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,130,131,133,255,194,197,200,255,192,195,198,255, -191,194,197,255,190,193,196,255,189,192,195,255,188,191,194,255,188,190,193,255,187,189,192,255,186,188,191,255,185,188,190,255, -184,187,189,255,183,185,188,255,183,185,187,255,181,184,186,255,181,183,185,255,180,182,184,255,179,181,183,255,178,180,182,255, -177,179,181,255,176,178,180,255,176,177,179,255,174,176,178,255,173,175,177,255,173,175,176,255,172,174,175,255,171,173,175,255, -171,172,174,255,169,172,172,255,169,170,172,255,168,170,171,255,167,168,170,255,166,168,169,255,166,167,168,255,165,166,167,255, -164,165,167,255,163,164,166,255,162,163,164,255,161,162,163,255,160,161,162,255,158,159,160,255,156,157,158,255,155,155,156,255, -152,153,153,255,150,151,151,255,148,148,148,255,145,145,145,255,142,142,142,255,139,139,138,255,136,135,135,255,133,132,132,255, -130,129,128,255,126,125,125,255,123,121,120,255,118,117,115,255,116,114,111,255,112,110,109,255,124,122,121,255,158,158,158,255, -186,187,188,255,195,195,196,255,192,193,193,255,190,191,192,255,189,190,190,255,187,188,189,255,186,187,188,255,185,186,186,255, -183,183,184,255,181,181,181,255,178,179,179,255,176,176,176,255,173,173,173,255,171,171,170,255,167,167,165,255,166,165,164,255, -165,163,161,255,155,153,151,255,114,113,110,255, 62, 61, 59,255, 3, 3, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,131,132,134,255,195,198,201,255,192,195,198,255, -192,195,198,255,191,194,197,255,190,193,196,255,189,192,195,255,188,191,194,255,187,190,193,255,187,189,192,255,185,188,191,255, -184,187,190,255,184,186,189,255,183,185,187,255,182,184,187,255,181,184,186,255,180,182,184,255,179,181,184,255,179,181,183,255, -177,179,181,255,177,178,180,255,176,178,180,255,175,177,179,255,174,176,178,255,174,175,177,255,172,174,176,255,171,173,175,255, -171,172,174,255,170,171,173,255,169,171,172,255,169,170,172,255,167,168,170,255,167,168,170,255,166,168,169,255,165,166,168,255, -164,165,167,255,164,165,166,255,162,163,165,255,162,163,164,255,160,161,163,255,159,159,161,255,157,158,159,255,155,156,157,255, -153,154,155,255,151,151,152,255,148,148,149,255,146,146,147,255,144,143,143,255,141,140,140,255,138,138,137,255,136,135,134,255, -133,132,131,255,129,128,128,255,127,126,125,255,123,122,120,255,120,117,116,255,116,113,112,255,113,111,109,255,115,112,110,255, -127,126,124,255,160,161,160,255,191,192,192,255,193,194,194,255,190,191,191,255,189,190,190,255,188,188,189,255,185,186,186,255, -183,183,183,255,180,180,180,255,177,177,176,255,174,174,173,255,169,169,168,255,168,167,165,255,168,166,164,255,153,151,148,255, - 80, 80, 78,255, 26, 25, 25,255, 5, 5, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,131,132,134,255,196,199,202,255,193,196,199,255, -193,196,199,255,192,195,198,255,191,193,196,255,190,193,196,255,190,192,195,255,188,191,194,255,187,190,193,255,187,189,192,255, -186,188,191,255,185,187,190,255,184,186,189,255,183,185,188,255,182,184,187,255,181,184,186,255,180,182,184,255,180,182,184,255, -178,180,182,255,178,179,181,255,177,179,181,255,176,177,179,255,175,177,178,255,174,176,178,255,173,175,177,255,172,174,176,255, -172,173,175,255,171,172,174,255,170,171,173,255,169,171,173,255,168,169,171,255,167,169,170,255,167,168,170,255,165,166,168,255, -165,166,168,255,164,165,167,255,163,164,165,255,162,163,164,255,161,162,164,255,159,160,161,255,157,158,159,255,156,157,158,255, -153,154,155,255,151,152,153,255,150,150,151,255,147,147,148,255,145,144,145,255,143,142,142,255,140,139,139,255,137,136,136,255, -135,134,134,255,132,131,131,255,129,128,127,255,127,126,125,255,124,122,121,255,120,119,117,255,117,115,113,255,114,112,109,255, -111,109,106,255,112,109,107,255,129,128,126,255,170,169,169,255,189,189,188,255,190,191,190,255,188,189,189,255,186,186,186,255, -184,184,184,255,179,180,179,255,175,175,174,255,168,167,165,255,159,159,156,255,131,130,128,255, 47, 47, 46,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,131,133,134,255,196,199,202,255,194,197,200,255, -193,196,199,255,193,196,199,255,192,194,197,255,191,193,196,255,190,193,196,255,189,192,195,255,188,191,194,255,187,190,193,255, -186,189,192,255,185,188,190,255,185,187,190,255,184,186,189,255,183,185,188,255,181,184,186,255,181,183,185,255,180,182,184,255, -179,181,183,255,178,180,182,255,178,179,181,255,176,178,180,255,176,177,179,255,175,177,178,255,174,176,177,255,173,175,177,255, -172,174,175,255,171,173,174,255,170,172,174,255,170,171,173,255,169,170,172,255,168,169,171,255,167,168,170,255,166,167,169,255, -165,166,168,255,164,166,167,255,163,164,165,255,162,163,165,255,161,162,164,255,160,161,162,255,158,159,160,255,156,157,158,255, -154,155,156,255,152,153,154,255,150,151,151,255,148,148,149,255,145,146,147,255,144,143,143,255,141,141,141,255,139,139,139,255, -137,136,135,255,134,134,133,255,132,131,130,255,129,128,127,255,127,126,124,255,124,123,121,255,121,119,118,255,118,115,114,255, -114,112,109,255,112,109,106,255,108,105,103,255,109,106,102,255,129,126,123,255,155,154,151,255,161,160,157,255,153,150,146,255, -139,137,134,255,107,107,106,255, 94, 94, 92,255, 59, 59, 58,255, 18, 18, 17,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,132,133,135,255,197,200,203,255,195,197,201,255, -194,197,200,255,193,196,199,255,192,195,198,255,191,194,197,255,190,193,196,255,190,192,195,255,189,192,195,255,188,190,193,255, -187,190,192,255,186,189,192,255,185,187,190,255,184,186,189,255,184,186,188,255,182,184,187,255,181,184,186,255,181,183,185,255, -180,182,184,255,179,181,183,255,178,180,182,255,177,179,181,255,176,178,180,255,176,177,179,255,174,176,178,255,174,175,177,255, -173,175,176,255,172,173,175,255,171,173,174,255,170,172,174,255,169,171,172,255,168,170,171,255,168,169,171,255,166,167,169,255, -165,167,168,255,165,166,167,255,163,165,166,255,163,164,165,255,162,163,164,255,160,161,163,255,159,160,161,255,157,158,159,255, -155,156,157,255,153,154,155,255,151,151,152,255,149,150,150,255,147,148,148,255,145,145,145,255,143,143,143,255,141,141,141,255, -138,138,138,255,136,135,135,255,134,133,133,255,132,131,130,255,129,128,127,255,127,126,124,255,125,123,122,255,122,120,118,255, -118,116,113,255,115,113,110,255,112,109,106,255,108,105,101,255,104,100, 95,255,101, 96, 90,255, 96, 90, 82,255, 91, 84, 73,255, - 43, 40, 35,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,132,133,135,255,198,200,204,255,195,198,201,255, -195,198,201,255,194,197,200,255,193,196,199,255,192,195,198,255,192,195,198,255,190,193,196,255,190,193,196,255,189,192,195,255, -188,190,193,255,187,189,192,255,187,189,192,255,185,187,190,255,185,187,189,255,183,186,188,255,182,184,187,255,182,184,186,255, -181,183,185,255,180,182,184,255,179,181,183,255,178,180,182,255,177,179,181,255,177,178,180,255,175,177,179,255,175,176,178,255, -174,176,177,255,173,175,176,255,172,173,175,255,171,172,174,255,170,171,173,255,169,171,172,255,169,170,172,255,167,168,170,255, -166,168,169,255,165,167,168,255,164,165,167,255,163,164,166,255,162,163,165,255,161,162,163,255,159,160,161,255,158,159,160,255, -156,156,157,255,154,154,155,255,153,153,154,255,150,151,151,255,149,149,149,255,147,147,147,255,144,144,144,255,142,142,142,255, -141,140,140,255,138,138,137,255,136,135,134,255,134,133,133,255,132,131,130,255,130,128,127,255,127,126,125,255,125,123,122,255, -121,120,118,255,118,115,114,255,114,112,109,255,110,108,104,255,105,101, 96,255, 99, 94, 88,255, 93, 87, 79,255, 88, 81, 71,255, - 25, 23, 20,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,132,133,135,255,198,201,204,255,196,199,202,255, -195,198,201,255,195,198,201,255,194,196,200,255,193,196,199,255,192,195,198,255,191,194,197,255,190,193,196,255,190,193,196,255, -189,191,194,255,188,190,193,255,187,190,192,255,186,188,191,255,185,187,190,255,184,186,189,255,183,186,188,255,182,184,187,255, -181,183,185,255,180,182,185,255,180,182,184,255,179,181,183,255,178,180,182,255,177,179,181,255,176,178,180,255,175,177,178,255, -175,176,178,255,173,175,177,255,173,174,176,255,172,173,175,255,171,172,174,255,169,171,172,255,169,170,172,255,168,169,171,255, -167,168,169,255,166,167,169,255,165,166,167,255,163,164,166,255,163,164,165,255,162,163,164,255,160,161,162,255,159,160,161,255, -157,157,158,255,155,155,156,255,153,154,155,255,152,151,153,255,149,149,151,255,148,148,148,255,146,145,145,255,144,143,143,255, -142,142,141,255,140,139,139,255,137,137,137,255,136,135,134,255,134,133,132,255,131,130,130,255,129,128,127,255,127,126,124,255, -124,123,121,255,121,119,117,255,118,115,113,255,114,110,106,255,108,104, 98,255,101, 96, 90,255, 97, 91, 83,255, 86, 80, 71,255, - 4, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,132,134,135,255,199,202,205,255,196,199,202,255, -196,199,202,255,195,198,201,255,194,197,200,255,194,196,200,255,192,195,198,255,192,195,198,255,191,194,197,255,190,193,196,255, -190,192,195,255,189,191,194,255,187,190,193,255,187,189,192,255,186,188,191,255,185,187,190,255,184,186,189,255,183,185,188,255, -182,184,186,255,181,183,186,255,180,182,185,255,179,181,183,255,178,180,183,255,178,180,182,255,177,179,181,255,176,178,180,255, -176,177,179,255,174,176,178,255,173,175,177,255,172,174,175,255,171,173,174,255,170,172,174,255,169,171,172,255,168,169,171,255, -167,169,170,255,167,168,169,255,165,166,168,255,164,165,167,255,163,164,166,255,162,163,164,255,161,162,163,255,159,160,161,255, -158,158,160,255,156,156,157,255,154,154,155,255,152,153,153,255,151,151,152,255,148,148,149,255,147,147,147,255,145,145,145,255, -143,143,143,255,142,142,141,255,140,139,138,255,137,136,136,255,135,134,133,255,134,132,131,255,131,129,128,255,128,128,125,255, -127,125,123,255,123,121,119,255,120,117,115,255,116,112,108,255,110,105,101,255,104, 98, 93,255,101, 94, 86,255, 56, 52, 46,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,132,134,136,255,199,202,205,255,197,200,203,255, -197,200,203,255,196,199,202,255,195,198,201,255,195,197,200,255,194,197,200,255,193,195,198,255,192,195,198,255,192,194,197,255, -191,193,196,255,189,192,195,255,189,191,194,255,188,190,193,255,187,189,192,255,186,188,191,255,185,187,190,255,184,186,189,255, -184,186,188,255,182,184,187,255,182,184,186,255,181,183,185,255,180,182,184,255,179,181,183,255,178,179,181,255,177,179,181,255, -177,178,180,255,175,177,179,255,175,176,178,255,174,175,177,255,173,174,175,255,171,173,175,255,171,172,174,255,169,170,172,255, -168,170,171,255,167,169,170,255,166,167,169,255,165,166,167,255,164,165,166,255,162,163,164,255,161,162,164,255,160,161,163,255, -158,159,160,255,157,157,159,255,155,156,157,255,153,154,154,255,151,152,152,255,150,150,151,255,148,148,148,255,146,146,146,255, -145,145,144,255,142,142,142,255,140,140,139,255,138,138,137,255,137,136,135,255,134,133,132,255,133,131,129,255,130,129,127,255, -128,126,124,255,124,122,120,255,121,119,116,255,116,114,111,255,111,107,103,255,106,101, 95,255,102, 96, 88,255, 5, 5, 4,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,136,255,199,202,205,255,198,200,204,255, -197,200,203,255,197,200,203,255,195,198,201,255,195,198,201,255,195,197,200,255,193,196,199,255,193,195,198,255,192,195,198,255, -191,193,196,255,190,193,196,255,190,192,195,255,189,191,194,255,187,190,193,255,187,189,192,255,186,188,191,255,185,187,190,255, -184,186,189,255,183,186,188,255,182,184,187,255,181,183,186,255,181,183,185,255,180,182,184,255,179,181,183,255,178,179,181,255, -177,179,181,255,176,178,180,255,175,177,178,255,175,176,178,255,173,175,176,255,172,174,175,255,171,173,175,255,170,171,173,255, -169,171,171,255,168,169,171,255,167,168,170,255,165,166,169,255,165,166,167,255,163,164,165,255,162,163,164,255,161,162,163,255, -160,160,162,255,158,158,160,255,156,157,158,255,154,155,155,255,152,153,153,255,150,151,151,255,149,149,149,255,147,147,148,255, -145,145,145,255,144,143,143,255,142,141,141,255,139,139,138,255,137,136,136,255,135,134,134,255,133,132,131,255,131,129,128,255, -128,126,125,255,126,124,121,255,122,119,117,255,118,114,111,255,112,108,104,255,109,104, 97,255, 57, 54, 49,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,136,255,200,203,206,255,197,200,203,255, -198,200,204,255,197,199,203,255,196,199,202,255,196,198,201,255,195,197,201,255,194,196,200,255,193,196,199,255,193,195,198,255, -191,194,197,255,191,193,196,255,190,192,195,255,189,192,195,255,188,191,194,255,187,190,192,255,187,189,192,255,186,188,191,255, -185,187,190,255,184,186,189,255,183,185,188,255,182,184,186,255,181,184,186,255,181,183,185,255,180,182,184,255,179,181,183,255, -178,180,182,255,177,179,181,255,176,178,180,255,175,177,179,255,174,176,177,255,173,175,177,255,172,173,175,255,171,172,174,255, -170,171,173,255,169,171,171,255,167,168,170,255,166,168,169,255,164,166,167,255,164,165,166,255,163,164,165,255,161,162,164,255, -160,161,162,255,158,159,160,255,156,157,158,255,155,155,156,255,153,153,154,255,151,151,151,255,150,150,150,255,148,148,148,255, -146,146,146,255,144,144,144,255,142,142,141,255,140,139,139,255,139,138,137,255,136,135,134,255,133,132,131,255,132,130,128,255, -129,127,125,255,126,124,121,255,123,120,117,255,118,114,111,255,113,109,105,255,100, 95, 90,255, 10, 9, 8,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,136,255,200,203,206,255,198,201,204,255, -198,201,204,255,198,200,204,255,196,199,202,255,196,199,202,255,196,198,201,255,195,197,201,255,194,197,200,255,194,196,199,255, -193,195,198,255,192,195,198,255,191,194,197,255,190,192,195,255,189,192,195,255,189,191,194,255,188,190,193,255,187,189,192,255, -186,189,191,255,185,187,189,255,184,186,189,255,184,186,188,255,182,185,187,255,182,184,186,255,181,183,185,255,180,182,184,255, -179,181,183,255,178,180,182,255,177,179,181,255,177,178,180,255,176,177,179,255,174,176,178,255,173,175,177,255,172,174,175,255, -170,172,173,255,170,171,173,255,168,169,171,255,167,169,170,255,166,168,169,255,164,165,167,255,163,164,166,255,162,163,165,255, -161,161,163,255,159,160,161,255,158,158,159,255,155,156,157,255,154,154,155,255,152,152,153,255,150,150,150,255,148,148,148,255, -147,146,146,255,145,144,144,255,143,143,142,255,141,140,139,255,139,138,137,255,137,136,134,255,134,133,131,255,132,130,129,255, -129,127,125,255,126,124,121,255,123,121,117,255,118,114,110,255,114,109,103,255, 56, 53, 50,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,135,136,255,200,203,206,255,199,202,205,255, -198,201,204,255,198,200,204,255,197,199,202,255,197,199,202,255,195,199,202,255,195,197,200,255,194,197,200,255,193,197,200,255, -193,196,199,255,193,195,198,255,192,195,198,255,191,193,196,255,190,192,195,255,189,191,194,255,189,191,194,255,188,190,193,255, -187,189,192,255,186,189,191,255,185,187,190,255,184,187,189,255,184,186,188,255,183,185,187,255,182,184,186,255,181,183,186,255, -180,182,184,255,179,181,183,255,179,180,183,255,177,179,181,255,176,178,180,255,176,177,179,255,174,175,177,255,173,174,176,255, -171,174,174,255,171,172,174,255,170,171,173,255,168,169,171,255,167,168,169,255,166,167,168,255,164,165,167,255,163,164,165,255, -162,163,164,255,159,161,162,255,158,159,160,255,157,156,158,255,155,154,156,255,152,152,154,255,150,150,151,255,148,148,149,255, -148,146,146,255,145,145,145,255,144,143,142,255,141,140,139,255,139,139,138,255,137,136,134,255,134,133,131,255,132,131,129,255, -129,127,125,255,126,124,121,255,123,119,116,255,118,114,110,255,102, 98, 91,255, 9, 8, 8,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,135,136,255,201,203,206,255,198,202,205,255, -199,201,204,255,198,201,203,255,198,200,203,255,197,200,203,255,196,199,202,255,195,198,201,255,195,197,201,255,194,197,199,255, -194,196,200,255,193,196,199,255,192,195,198,255,192,194,197,255,191,193,196,255,190,192,195,255,189,192,194,255,189,191,194,255, -187,190,192,255,187,189,192,255,186,189,191,255,185,187,190,255,185,187,189,255,184,186,189,255,183,185,187,255,182,184,186,255, -181,183,186,255,180,182,184,255,179,181,183,255,179,181,183,255,177,179,181,255,176,178,180,255,175,177,179,255,174,175,177,255, -173,174,176,255,171,174,174,255,170,171,173,255,169,170,172,255,168,169,170,255,166,168,169,255,165,166,168,255,164,165,167,255, -162,163,164,255,161,161,162,255,159,159,160,255,157,158,158,255,155,156,156,255,153,153,153,255,151,152,152,255,150,149,149,255, -147,147,146,255,146,145,145,255,144,143,142,255,141,140,139,255,140,139,138,255,137,136,135,255,134,133,131,255,132,130,128,255, -129,127,124,255,126,123,120,255,122,119,115,255,119,115,110,255, 33, 31, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,135,136,255,201,204,206,255,199,201,205,255, -198,201,204,255,198,201,204,255,197,200,203,255,197,200,203,255,196,200,203,255,196,199,201,255,196,198,201,255,195,197,201,255, -195,197,200,255,194,197,200,255,194,196,198,255,192,195,198,255,192,194,197,255,191,194,196,255,190,193,195,255,190,192,195,255, -189,191,194,255,188,190,193,255,187,190,192,255,187,189,192,255,186,188,190,255,185,187,190,255,184,186,189,255,183,185,187,255, -182,184,187,255,182,184,186,255,180,182,184,255,180,182,184,255,179,181,182,255,177,179,181,255,176,178,180,255,175,177,179,255, -174,175,177,255,173,175,176,255,172,172,175,255,170,171,173,255,169,170,172,255,167,168,170,255,166,167,168,255,165,166,167,255, -163,164,165,255,161,162,163,255,160,160,161,255,158,158,159,255,156,156,156,255,154,155,155,255,152,152,152,255,150,150,150,255, -147,147,147,255,146,145,145,255,144,143,143,255,141,140,139,255,140,139,137,255,137,136,134,255,134,132,130,255,132,130,127,255, -129,126,124,255,125,123,119,255,122,118,113,255, 73, 70, 66,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,135,136,255,201,204,206,255,199,201,204,255, -199,202,205,255,199,201,204,255,198,201,204,255,198,200,203,255,197,199,203,255,196,199,202,255,196,199,202,255,196,198,201,255, -195,198,200,255,195,197,200,255,194,197,199,255,193,196,198,255,192,195,198,255,191,194,197,255,191,193,196,255,190,193,195,255, -189,192,194,255,189,191,194,255,188,190,193,255,187,189,192,255,187,189,191,255,186,188,190,255,185,187,189,255,184,186,189,255, -183,185,188,255,182,184,187,255,182,184,186,255,181,182,185,255,180,182,184,255,179,181,182,255,177,179,181,255,176,178,180,255, -176,177,179,255,174,175,177,255,173,174,176,255,171,173,175,255,170,171,172,255,169,170,171,255,167,168,169,255,165,167,168,255, -164,165,166,255,162,163,164,255,161,161,162,255,158,159,160,255,157,157,158,255,154,154,155,255,152,152,152,255,150,150,150,255, -147,147,147,255,146,146,145,255,144,143,142,255,141,140,139,255,140,138,137,255,136,135,133,255,134,132,130,255,131,129,127,255, -128,125,123,255,125,122,117,255, 99, 96, 90,255, 7, 7, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,135,136,255,201,204,206,255,200,201,205,255, -199,202,204,255,198,201,203,255,198,201,204,255,197,200,203,255,198,199,202,255,196,199,202,255,197,198,202,255,195,199,200,255, -195,197,201,255,194,198,201,255,195,197,200,255,193,196,199,255,193,195,198,255,192,194,197,255,191,194,196,255,192,194,197,255, -190,193,195,255,190,192,195,255,189,192,194,255,188,190,193,255,188,190,192,255,187,189,192,255,186,188,191,255,185,188,190,255, -185,187,189,255,184,186,188,255,182,184,187,255,182,184,186,255,180,182,184,255,180,182,184,255,179,181,183,255,177,179,181,255, -176,178,180,255,176,177,179,255,173,175,177,255,173,174,176,255,171,173,174,255,170,171,172,255,168,169,171,255,166,167,169,255, -164,165,166,255,163,164,165,255,160,161,162,255,159,160,161,255,157,157,158,255,155,155,156,255,153,153,153,255,151,150,150,255, -149,148,148,255,147,146,145,255,144,144,143,255,141,140,139,255,139,138,137,255,136,135,133,255,134,132,129,255,131,128,126,255, -127,124,121,255,121,117,111,255, 33, 31, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,135,136,255,201,203,206,255,199,202,205,255, -199,201,204,255,198,202,203,255,199,200,204,255,198,201,203,255,197,200,202,255,197,200,202,255,196,199,201,255,197,198,202,255, -195,198,201,255,195,198,201,255,194,197,200,255,194,197,200,255,194,196,199,255,194,196,199,255,193,195,198,255,192,195,197,255, -192,194,197,255,191,193,196,255,190,193,195,255,190,192,195,255,189,191,193,255,188,190,193,255,188,190,192,255,186,189,191,255, -186,188,190,255,185,187,189,255,184,186,188,255,183,185,188,255,182,184,186,255,181,183,185,255,180,182,184,255,179,181,183,255, -177,179,181,255,177,178,180,255,175,177,178,255,174,175,177,255,172,174,175,255,170,172,174,255,169,170,171,255,168,169,170,255, -165,166,167,255,164,164,166,255,162,163,164,255,160,160,161,255,158,158,159,255,156,157,156,255,153,154,154,255,152,151,151,255, -149,148,148,255,147,146,145,255,145,144,142,255,141,140,139,255,139,138,136,255,136,135,133,255,132,131,128,255,130,127,125,255, -125,122,117,255, 60, 58, 54,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,136,255,201,203,205,255,199,202,204,255, -199,202,203,255,198,201,204,255,198,200,203,255,198,201,203,255,197,200,203,255,197,200,202,255,196,199,201,255,197,198,202,255, -196,198,201,255,196,198,201,255,195,198,199,255,194,197,200,255,194,197,199,255,193,196,198,255,193,195,198,255,192,195,198,255, -192,194,197,255,191,194,196,255,191,193,196,255,190,193,195,255,190,192,195,255,189,191,194,255,188,190,193,255,188,190,192,255, -187,189,191,255,186,188,191,255,185,187,190,255,184,186,189,255,183,185,187,255,182,184,186,255,181,183,185,255,180,182,184,255, -179,181,183,255,177,179,181,255,176,178,180,255,175,177,178,255,173,174,176,255,172,173,174,255,170,171,173,255,168,169,170,255, -166,167,168,255,164,166,167,255,162,163,164,255,161,161,162,255,159,159,160,255,157,157,157,255,155,155,155,255,152,152,152,255, -149,149,148,255,147,146,146,255,145,144,142,255,141,140,139,255,139,138,135,255,136,134,132,255,132,130,127,255,130,127,122,255, - 70, 68, 65,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,135,255,201,203,205,255,199,201,204,255, -198,200,204,255,198,201,203,255,198,201,202,255,197,200,203,255,198,199,202,255,198,200,202,255,197,200,201,255,196,199,202,255, -196,199,200,255,195,198,201,255,196,197,200,255,195,197,199,255,194,196,200,255,194,196,198,255,193,195,199,255,194,195,198,255, -192,195,198,255,193,194,197,255,192,194,196,255,191,193,196,255,190,193,195,255,191,193,195,255,189,191,194,255,189,191,193,255, -189,191,193,255,187,189,192,255,187,189,191,255,186,188,190,255,184,186,189,255,184,186,188,255,183,185,187,255,181,183,185,255, -180,182,184,255,179,181,182,255,177,179,181,255,176,178,179,255,175,176,178,255,173,174,175,255,171,172,174,255,170,171,172,255, -167,168,169,255,166,166,167,255,163,164,165,255,162,162,163,255,159,160,160,255,156,157,157,255,156,156,156,255,153,153,152,255, -150,149,149,255,148,147,146,255,145,144,143,255,142,141,139,255,139,137,135,255,136,134,131,255,132,130,126,255, 87, 84, 81,255, - 4, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,135,255,200,202,204,255,198,200,203,255, -199,201,202,255,199,201,203,255,197,200,202,255,198,200,202,255,197,199,202,255,197,199,202,255,197,199,202,255,196,199,200,255, -196,199,201,255,196,198,201,255,195,197,200,255,195,198,199,255,194,197,200,255,195,197,199,255,194,196,198,255,193,196,199,255, -194,195,197,255,193,195,198,255,193,195,197,255,193,195,196,255,192,194,196,255,191,193,196,255,191,193,195,255,190,192,194,255, -189,191,194,255,189,191,193,255,188,190,192,255,187,189,191,255,186,188,190,255,185,187,189,255,184,186,188,255,183,185,187,255, -181,183,185,255,180,182,184,255,179,181,181,255,177,179,180,255,176,177,178,255,173,174,177,255,172,173,175,255,171,172,173,255, -168,169,170,255,166,167,167,255,164,165,166,255,162,163,164,255,160,160,161,255,158,159,159,255,156,156,156,255,153,153,153,255, -151,150,150,255,149,148,146,255,145,145,143,255,142,139,138,255,138,136,134,255,137,134,131,255,108,105,101,255, 9, 9, 8,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,135,255,200,202,204,255,199,201,202,255, -198,200,202,255,198,200,202,255,197,200,202,255,198,200,201,255,198,200,202,255,197,199,201,255,196,198,201,255,196,198,201,255, -196,198,201,255,196,198,200,255,195,197,199,255,195,198,200,255,195,197,199,255,195,196,198,255,194,197,199,255,194,197,199,255, -194,195,197,255,194,196,198,255,193,195,198,255,192,194,197,255,192,194,196,255,192,194,196,255,191,193,195,255,191,193,195,255, -190,192,195,255,190,192,194,255,189,191,194,255,188,190,192,255,187,189,191,255,187,189,191,255,185,187,189,255,184,186,188,255, -183,185,187,255,181,183,185,255,180,182,183,255,179,180,181,255,176,177,179,255,175,176,178,255,174,175,176,255,171,172,173,255, -170,170,171,255,168,168,169,255,165,166,166,255,163,164,165,255,161,161,162,255,159,159,160,255,157,157,157,255,155,154,154,255, -152,151,150,255,149,148,147,255,146,145,143,255,142,140,138,255,140,137,134,255, 98, 95, 92,255, 12, 11, 11,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,133,134,255,200,201,203,255,198,200,202,255, -197,200,202,255,197,200,201,255,198,200,201,255,198,199,201,255,198,199,201,255,196,198,201,255,196,199,201,255,197,199,201,255, -195,197,199,255,195,197,200,255,195,197,199,255,195,197,199,255,194,196,198,255,194,197,199,255,195,197,199,255,194,196,199,255, -194,195,198,255,193,195,197,255,194,196,197,255,193,195,197,255,192,194,196,255,192,194,197,255,192,194,196,255,191,193,195,255, -191,194,196,255,191,192,194,255,190,192,194,255,190,192,194,255,188,190,192,255,188,189,192,255,187,189,191,255,185,187,189,255, -184,186,188,255,183,185,186,255,181,182,184,255,179,181,183,255,179,180,181,255,176,177,179,255,174,175,176,255,173,174,175,255, -170,171,172,255,168,169,170,255,167,167,168,255,164,165,165,255,162,162,162,255,159,159,159,255,157,157,157,255,155,154,154,255, -152,151,150,255,149,148,146,255,145,143,141,255,142,140,137,255, 96, 94, 91,255, 4, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,105,105,105,255,168,168,169,255,192,194,194,255, -199,200,201,255,198,199,201,255,197,198,199,255,195,197,199,255,196,198,200,255,196,198,199,255,196,198,199,255,195,197,199,255, -196,198,199,255,196,198,199,255,195,197,199,255,194,196,198,255,195,197,199,255,194,197,199,255,195,197,198,255,194,196,197,255, -193,196,197,255,194,195,198,255,194,196,198,255,194,195,198,255,193,194,197,255,192,195,196,255,193,195,197,255,192,194,196,255, -192,194,196,255,192,194,196,255,191,193,195,255,190,192,194,255,189,191,193,255,189,190,193,255,188,189,191,255,186,188,190,255, -185,187,189,255,184,186,187,255,182,184,185,255,181,182,184,255,179,180,182,255,177,178,179,255,175,176,178,255,174,175,176,255, -171,172,173,255,170,171,171,255,168,168,169,255,165,166,166,255,163,163,163,255,161,161,161,255,158,158,158,255,155,154,153,255, -152,151,150,255,150,148,146,255,139,137,134,255, 80, 78, 76,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 28, 28, 28,255, 19, 20, 20,255, 49, 50, 50,255, -104,105,105,255,172,173,173,255,195,196,197,255,198,199,200,255,197,198,199,255,195,196,197,255,196,197,199,255,196,197,198,255, -195,197,198,255,195,197,198,255,195,197,198,255,195,197,198,255,195,196,198,255,195,196,198,255,194,196,198,255,194,196,198,255, -194,196,198,255,194,196,198,255,193,195,197,255,194,195,197,255,193,194,196,255,193,195,197,255,192,195,197,255,193,195,197,255, -192,194,196,255,191,194,196,255,191,193,195,255,191,193,195,255,190,192,193,255,189,191,193,255,188,190,192,255,187,188,190,255, -186,187,189,255,184,186,188,255,183,184,186,255,182,183,184,255,180,181,183,255,179,180,180,255,177,178,179,255,175,176,177,255, -173,174,174,255,171,171,172,255,168,168,169,255,166,167,167,255,164,164,163,255,161,160,160,255,157,157,156,255,154,153,152,255, -154,152,150,255,120,119,117,255, 35, 35, 34,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 12, 12, 12,255, 94, 94, 94,255,160,161,161,255,195,196,196,255,193,194,195,255,193,194,195,255, -195,196,196,255,195,195,196,255,194,195,196,255,193,195,196,255,193,194,195,255,193,195,196,255,193,195,196,255,193,194,196,255, -193,194,196,255,193,194,196,255,194,194,196,255,192,194,196,255,192,194,196,255,192,194,196,255,193,194,196,255,192,193,195,255, -193,193,195,255,191,194,195,255,192,193,195,255,191,193,195,255,190,191,193,255,189,191,192,255,189,191,192,255,187,189,190,255, -186,188,189,255,186,187,188,255,184,185,186,255,182,184,185,255,181,182,183,255,179,180,181,255,177,178,179,255,176,177,177,255, -174,174,175,255,172,172,172,255,170,170,170,255,166,166,166,255,164,164,163,255,161,160,159,255,158,156,155,255,153,152,149,255, - 71, 69, 67,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 11, 11, 11,255, 61, 62, 62,255,102,102,102,255, -141,141,141,255,159,159,159,255,175,176,177,255,190,190,191,255,194,195,196,255,193,195,196,255,193,195,196,255,193,195,196,255, -192,194,195,255,191,192,194,255,192,193,195,255,192,193,195,255,192,193,195,255,192,193,195,255,192,193,195,255,192,193,195,255, -192,193,195,255,191,193,194,255,191,193,194,255,190,192,193,255,190,191,192,255,189,190,192,255,188,190,191,255,187,188,190,255, -186,188,189,255,186,187,187,255,184,185,186,255,183,184,185,255,182,182,183,255,180,180,181,255,178,179,179,255,177,177,177,255, -173,173,174,255,173,173,172,255,171,171,170,255,168,168,166,255,159,158,156,255,130,129,127,255, 85, 84, 82,255, 9, 9, 9,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 16, 16, 16,255, 28, 28, 28,255, 44, 44, 44,255, 66, 66, 66,255,109,110,110,255,137,138,138,255,161,161,161,255, -185,185,186,255,194,195,195,255,193,194,194,255,192,193,193,255,192,192,194,255,193,194,194,255,193,194,194,255,193,194,194,255, -191,192,193,255,190,192,193,255,190,191,192,255,189,190,190,255,189,190,191,255,188,189,190,255,188,189,189,255,187,188,189,255, -186,187,187,255,185,186,186,255,183,183,184,255,182,183,184,255,181,182,182,255,181,181,181,255,179,179,179,255,177,177,176,255, -176,176,175,255,165,165,163,255,127,127,125,255, 76, 75, 75,255, 34, 34, 33,255, 11, 11, 11,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 6, 6, 6,255, 34, 34, 34,255, 70, 70, 70,255, 91, 91, 91,255,102,102,102,255,120,120,120,255,140,140,140,255, -160,161,160,255,173,173,173,255,180,180,179,255,184,184,184,255,183,184,184,255,183,183,183,255,183,183,183,255,182,183,182,255, -181,181,181,255,180,181,180,255,179,179,178,255,173,173,172,255,164,164,163,255,130,129,128,255,102,102,100,255, 77, 77, 76,255, - 22, 22, 21,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0,144, 27, 95, 7, 31, 0, 0, 0, - 1, 0, 0, 0,232,190, 95, 7, 56,120, 94, 7, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, 46,100,114, 97,119, 46,112,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92, -115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46,100,114, 97,119, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, +136, 0, 0, 0,248,223,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 56, 83,130, 4, 0, 0, 0, 0,216, 91,130, 4, + 0, 0, 0, 0,120,100,130, 4, 0, 0, 0, 0,104,113,130, 4, 0, 0, 0, 0,184,117,130, 4, 0, 0, 0, 0, 40,165,130, 4, + 0, 0, 0, 0,200,173,130, 4, 0, 0, 0, 0, 24,178,130, 4, 0, 0, 0, 0, 8,191,130, 4, 0, 0, 0, 0, 8,122,130, 4, + 0, 0, 0, 0, 88,126,130, 4, 0, 0, 0, 0,168,130,130, 4, 0, 0, 0, 0,232,147,130, 4, 0, 0, 0, 0, 56,152,130, 4, + 0, 0, 0, 0,136,156,130, 4, 0, 0, 0, 0,216,160,130, 4, 0, 0, 0, 0, 88,195,130, 4, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,200,224,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 24,109,130, 4, 0, 0, 0, 0,104,182,130, 4, + 0, 0, 0, 0, 40, 96,130, 4, 0, 0, 0, 0,120,169,130, 4, 0, 0, 0, 0, 68, 65, 84, 65, 88, 0, 0, 0, 56,225,128, 4, + 0, 0, 0, 0,139, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100, +101,114, 76, 97,121,101,114, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 67, 65, 0, 0,136, 0, 0, 0,216,225,128, 4, 0, 0, 0, 0, 29, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97, +109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63,205,204,204, 61, 0, 0,200, 66, 0, 0, 12, 66, +161, 14,234, 64, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 76, 65, 0, 0,216, 1, 0, 0,168,226,128, 4, 0, 0, 0, 0, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 76, 97, +109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,247,255,239, 65, + 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,200,228,128, 4, 0, 0, 0, 0, 2, 0, 0, 0, + 46, 26,128, 63, 25, 4,240, 65, 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 11, 3, 0, 1, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,111, 18,131, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,230,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,200,228,128, 4, + 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, + 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63,104,140, 36, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,144, 29, 95, 7, 0, 0, 0, 0,245, 77, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 32, 0, 0, 0,144, 29, 95, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, - 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 24, 30, 95, 7,128, 46, 95, 7, 68, 65, 84, 65, 0, 16, 0, 0, 24, 30, 95, 7, - 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 62, 62, 62,255, 60, 60, 60,255,168,169,171,255,167,169,171,255,166,168,170,255,165,167,169,255,164,166,168,255, -163,165,167,255,162,164,165,255,161,162,164,255,159,161,163,255,158,159,161,255,156,158,159,255,155,156,157,255,153,154,155,255, -151,152,154,255,148,148,150,255,136,136,137,255,116,115,114,255,114,112,110,255,119,117,116,255,127,126,126,255,133,132,133,255, -137,137,137,255,137,137,138,255,133,133,133,255,125,122,121,255,113,108,103,255,116,114,113,255,111,109,108,255,106,103,101,255, - 99, 96, 92,255, 61, 61, 61,255, 60, 60, 60,255,170,172,174,255,170,172,174,255,169,171,173,255,168,170,172,255,167,169,171,255, -166,168,170,255,165,167,169,255,163,165,167,255,162,164,165,255,161,162,164,255,159,161,162,255,157,159,160,255,154,155,157,255, -142,142,143,255,121,120,120,255,111,109,107,255,115,113,111,255,123,122,122,255,131,130,131,255,137,137,137,255,141,141,142,255, -142,143,143,255,140,140,140,255,131,130,128,255,121,118,115,255,119,116,115,255,119,118,117,255,114,112,111,255,109,106,104,255, -102, 99, 96,255, 61, 61, 61,255, 60, 60, 60,255,173,175,177,255,172,174,176,255,171,173,176,255,170,172,174,255,169,171,174,255, -169,170,173,255,167,169,171,255,166,168,170,255,165,166,168,255,163,165,167,255,158,160,162,255,143,144,144,255,121,119,119,255, -109,107,104,255,112,110,109,255,121,119,118,255,130,129,129,255,137,137,138,255,143,143,144,255,146,147,148,255,147,148,149,255, -145,145,146,255,140,139,139,255,128,125,122,255,124,122,119,255,126,125,125,255,122,121,120,255,117,115,114,255,112,110,108,255, -105,102, 99,255, 61, 61, 61,255, 60, 60, 60,255,176,178,180,255,175,177,180,255,174,176,179,255,173,175,178,255,172,174,176,255, -171,173,175,255,170,172,174,255,169,171,173,255,167,169,171,255,156,157,159,255,128,126,126,255,117,115,113,255,116,114,114,255, -123,122,121,255,130,129,129,255,139,139,139,255,144,145,146,255,149,150,151,255,151,152,153,255,152,153,154,255,150,150,151,255, -144,144,143,255,136,134,132,255,129,127,124,255,133,132,133,255,129,129,129,255,124,123,123,255,120,118,117,255,114,112,111,255, -108,105,103,255, 61, 61, 61,255, 60, 60, 60,255,178,181,183,255,177,180,182,255,176,179,181,255,175,178,180,255,174,177,179,255, -174,176,178,255,172,174,177,255,170,172,175,255,153,153,155,255,130,129,128,255,126,125,124,255,130,129,129,255,136,136,136,255, -143,143,144,255,149,150,151,255,152,153,156,255,156,157,158,255,157,158,160,255,156,157,159,255,154,154,156,255,148,148,147,255, -141,139,137,255,134,133,129,255,139,139,139,255,136,136,136,255,132,132,132,255,127,126,126,255,122,120,120,255,116,115,113,255, -110,107,105,255, 61, 61, 61,255, 60, 60, 60,255,181,183,185,255,180,182,185,255,179,181,184,255,178,181,183,255,177,179,182,255, -176,178,181,255,175,177,179,255,159,160,161,255,138,137,137,255,138,138,138,255,144,144,144,255,150,150,151,255,155,156,157,255, -158,160,162,255,161,163,164,255,162,164,166,255,163,164,166,255,161,163,163,255,158,159,160,255,152,151,150,255,145,143,141,255, -141,140,137,255,144,144,145,255,141,141,142,255,138,138,138,255,134,134,134,255,130,129,129,255,124,123,122,255,119,117,116,255, -112,110,108,255, 61, 61, 61,255, 60, 60, 60,255,183,186,188,255,182,185,187,255,181,184,186,255,180,183,185,255,179,182,184,255, -178,181,183,255,177,179,181,255,147,147,147,255,147,147,148,255,155,155,157,255,160,162,163,255,164,165,167,255,166,168,170,255, -167,169,171,255,168,170,172,255,168,169,171,255,164,165,167,255,161,161,162,255,153,152,152,255,147,146,143,255,150,149,149,255, -150,151,153,255,147,148,149,255,143,144,145,255,140,140,141,255,137,137,137,255,132,131,131,255,127,126,125,255,121,119,118,255, -114,112,110,255, 61, 61, 61,255, 60, 60, 60,255,185,188,191,255,185,187,190,255,184,186,189,255,183,185,188,255,182,184,187,255, -181,184,187,255,166,167,168,255,159,159,160,255,167,168,170,255,171,173,175,255,173,175,177,255,172,174,176,255,172,173,176,255, -171,172,174,255,168,168,169,255,164,164,164,255,160,159,158,255,156,155,154,255,159,160,160,255,156,157,159,255,155,155,157,255, -152,153,154,255,149,150,151,255,146,146,147,255,143,143,144,255,139,139,139,255,135,135,135,255,130,129,129,255,124,122,121,255, -117,115,113,255, 61, 61, 61,255, 60, 60, 60,255,187,190,193,255,186,189,192,255,186,188,191,255,185,187,190,255,184,186,189,255, -184,187,189,255,167,168,169,255,171,173,174,255,176,178,180,255,176,178,181,255,174,176,178,255,171,172,174,255,166,167,168,255, -162,163,163,255,160,159,158,255,161,161,160,255,164,165,165,255,166,167,169,255,161,162,163,255,159,160,161,255,156,157,159,255, -154,155,156,255,152,152,154,255,148,148,149,255,145,145,146,255,141,141,141,255,137,136,137,255,132,131,130,255,125,124,123,255, -119,117,114,255, 61, 61, 61,255, 60, 60, 60,255,189,192,195,255,188,191,194,255,188,190,193,255,187,189,192,255,186,188,191,255, -188,191,194,255,175,176,176,255,180,182,185,255,181,185,187,255,178,180,183,255,169,171,173,255,160,161,162,255,148,147,145,255, -150,149,147,255,171,172,173,255,169,171,173,255,167,169,170,255,164,166,167,255,163,164,165,255,161,162,163,255,158,159,161,255, -156,157,158,255,153,154,155,255,150,150,151,255,146,147,148,255,142,142,143,255,138,138,138,255,133,132,132,255,127,125,124,255, -120,118,116,255, 61, 61, 61,255, 60, 60, 60,255,191,194,197,255,190,193,196,255,189,193,196,255,188,191,194,255,187,190,193,255, -193,196,199,255,182,183,184,255,189,192,195,255,186,189,192,255,176,178,180,255,163,164,165,255,144,144,143,255,117,114,112,255, -124,123,123,255,160,162,163,255,169,171,173,255,168,170,172,255,166,168,169,255,164,166,167,255,162,163,165,255,160,161,162,255, -157,158,160,255,155,156,157,255,151,152,153,255,148,148,149,255,144,144,144,255,139,139,139,255,135,134,133,255,128,127,126,255, -121,119,117,255, 61, 61, 61,255, 60, 60, 60,255,192,195,198,255,192,195,199,255,191,194,197,255,191,193,196,255,190,192,195,255, -193,196,199,255,190,191,192,255,194,197,200,255,188,191,194,255,175,177,179,255,156,157,158,255,133,132,132,255,107,105,103,255, -100, 97, 95,255,111,109,108,255,129,128,129,255,149,150,151,255,165,166,167,255,165,168,168,255,164,165,166,255,161,162,164,255, -159,160,161,255,156,157,158,255,152,153,154,255,149,150,150,255,145,145,145,255,141,141,140,255,135,135,134,255,129,128,127,255, -122,120,118,255, 61, 61, 61,255, 60, 60, 60,255,194,197,200,255,194,197,199,255,192,195,199,255,192,194,198,255,191,194,196,255, -191,194,197,255,197,200,201,255,199,202,205,255,194,198,201,255,180,182,184,255,161,162,163,255,141,142,142,255,121,120,120,255, -110,108,107,255,105,103,101,255,105,103,101,255,106,104,103,255,118,117,116,255,141,142,143,255,162,163,164,255,162,164,165,255, -160,161,163,255,157,158,160,255,154,154,155,255,150,151,152,255,146,146,147,255,142,142,141,255,136,135,135,255,130,129,127,255, -122,120,118,255, 61, 61, 61,255, 60, 60, 60,255,195,199,202,255,195,198,201,255,194,197,201,255,193,196,199,255,192,195,198,255, -191,194,197,255,199,202,205,255,201,203,205,255,201,204,208,255,190,193,196,255,175,177,179,255,160,161,162,255,144,145,146,255, -131,131,132,255,121,120,120,255,113,111,110,255,107,105,104,255,101, 98, 96,255,102, 99, 97,255,118,117,116,255,150,151,152,255, -161,163,164,255,158,159,161,255,155,155,156,255,151,152,152,255,147,147,147,255,143,143,142,255,137,136,135,255,130,129,127,255, -122,120,117,255, 61, 61, 61,255, 60, 60, 60,255,196,200,204,255,197,199,203,255,196,199,201,255,195,198,200,255,194,197,200,255, -192,195,199,255,191,194,198,255,201,203,205,255,203,206,208,255,200,203,207,255,190,193,196,255,177,179,181,255,165,167,168,255, -154,156,157,255,143,143,144,255,133,133,134,255,123,122,122,255,112,110,110,255,102, 99, 97,255, 97, 93, 90,255,104,101, 98,255, -141,141,142,255,160,161,162,255,156,156,157,255,152,153,153,255,148,148,148,255,143,143,142,255,137,136,135,255,130,129,127,255, -122,119,116,255, 61, 61, 61,255, 60, 60, 60,255,199,202,204,255,198,201,203,255,196,200,203,255,195,198,201,255,195,198,200,255, -194,197,199,255,193,196,199,255,193,196,200,255,202,204,206,255,202,204,206,255,201,204,207,255,194,196,200,255,184,186,189,255, -174,176,178,255,166,167,169,255,156,157,158,255,145,145,146,255,133,132,133,255,118,117,117,255,105,102,100,255, 94, 90, 87,255, - 99, 96, 92,255,144,144,144,255,156,157,158,255,153,153,154,255,148,148,148,255,144,143,143,255,137,136,135,255,130,128,126,255, -120,117,113,255, 61, 61, 61,255, 60, 60, 60,255,200,202,205,255,198,202,205,255,198,200,203,255,196,199,203,255,195,198,201,255, -195,198,200,255,194,196,200,255,192,195,198,255,190,193,196,255,199,202,204,255,198,199,199,255,200,202,204,255,197,200,203,255, -191,194,197,255,184,186,188,255,176,178,179,255,167,168,170,255,155,156,157,255,141,141,141,255,124,123,123,255,106,104,102,255, - 93, 89, 84,255,103,100, 95,255,157,158,158,255,154,154,154,255,149,149,149,255,144,143,143,255,137,136,135,255,129,127,124,255, -106,102, 97,255, 62, 62, 62,255, 60, 60, 60,255,201,204,207,255,199,202,206,255,198,201,205,255,197,200,203,255,197,200,202,255, -196,199,201,255,195,198,201,255,192,196,198,255,191,194,197,255,189,193,195,255,189,192,195,255,196,198,201,255,194,196,196,255, -196,198,198,255,196,198,200,255,191,194,197,255,185,187,189,255,175,177,179,255,161,163,165,255,146,146,147,255,126,125,124,255, -105,102, 98,255, 91, 86, 79,255,152,151,152,255,154,154,155,255,150,149,149,255,144,143,142,255,136,134,132,255,126,123,119,255, - 0, 0, 0,255, 62, 62, 62,255, 60, 60, 60,255,201,205,207,255,201,203,206,255,200,203,206,255,197,200,204,255,194,197,200,255, -193,196,199,255,194,197,200,255,194,197,200,255,192,195,198,255,191,194,197,255,189,191,194,255,188,190,193,255,186,188,191,255, -187,189,192,255,196,198,200,255,197,198,198,255,197,199,201,255,192,194,197,255,181,183,185,255,166,167,169,255,147,147,148,255, -122,120,118,255, 96, 91, 86,255,151,150,150,255,154,154,154,255,149,148,148,255,142,141,140,255,134,132,129,255, 34, 32, 31,255, - 0, 0, 0,255, 62, 62, 62,255, 60, 60, 60,255,202,205,209,255,202,205,209,255,196,198,201,255,183,186,188,255,174,176,179,255, -167,169,171,255,166,168,170,255,179,181,183,255,190,192,195,255,192,194,197,255,190,193,196,255,189,190,194,255,187,188,192,255, -185,187,190,255,182,185,187,255,186,189,191,255,201,202,204,255,200,201,203,255,196,198,201,255,185,187,189,255,166,167,169,255, -141,140,139,255,105,101, 97,255,156,157,157,255,154,154,153,255,148,147,146,255,140,139,137,255,129,126,121,255, 0, 0, 0,255, - 0, 0, 0,255, 62, 62, 62,255, 60, 60, 60,255,202,206,208,255,203,206,210,255,193,195,198,255,182,184,186,255,171,173,176,255, -161,163,164,255,153,154,155,255,149,150,151,255,153,155,156,255,163,164,165,255,172,174,176,255,181,183,186,255,185,187,189,255, -184,187,189,255,183,185,187,255,181,183,185,255,190,193,195,255,202,206,208,255,204,206,208,255,198,201,204,255,181,183,185,255, -155,155,156,255,113,110,106,255,157,157,157,255,153,152,152,255,146,145,143,255,137,134,130,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 62, 62, 62,255, 60, 60, 60,255,204,206,209,255,202,205,208,255,197,199,200,255,184,186,189,255,176,178,180,255, -166,168,170,255,156,158,159,255,146,146,147,255,144,144,145,255,143,144,145,255,146,147,148,255,148,149,150,255,152,152,154,255, -155,157,158,255,158,159,161,255,159,160,162,255,176,177,179,255,194,197,200,255,201,204,207,255,201,204,208,255,189,192,194,255, -161,162,163,255,120,117,114,255,156,156,155,255,150,149,147,255,141,139,136,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 62, 62, 62,255, 60, 60, 60,255,204,206,209,255,203,206,209,255,202,205,207,255,194,195,197,255,188,190,193,255, -178,180,182,255,168,169,171,255,156,157,158,255,150,151,152,255,147,148,149,255,146,146,147,255,144,144,145,255,144,144,145,255, -143,143,144,255,143,143,144,255,145,145,146,255,162,165,166,255,180,182,184,255,193,196,199,255,197,200,203,255,187,189,192,255, -157,158,157,255,162,162,162,255,153,152,151,255,144,142,139,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 62, 62, 62,255, 60, 60, 60,255,203,205,207,255,203,204,208,255,201,205,207,255,201,203,206,255,201,203,205,255, -199,202,205,255,191,194,197,255,178,181,183,255,172,174,176,255,166,168,169,255,161,163,164,255,158,159,160,255,155,156,157,255, -152,153,155,255,151,152,153,255,152,153,154,255,163,164,166,255,179,181,183,255,188,190,193,255,186,189,192,255,169,170,171,255, -161,161,160,255,155,154,152,255, 4, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, 42, 43, 43,255,202,204,205,255,201,203,205,255,201,202,205,255,200,202,204,255, -198,200,203,255,197,200,201,255,195,198,201,255,190,192,195,255,184,186,189,255,180,182,184,255,175,177,180,255,172,174,175,255, -168,170,172,255,167,168,170,255,166,168,170,255,171,173,176,255,181,183,186,255,183,185,188,255,172,172,173,255,161,160,159,255, -151,149,146,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, 0, 0, 0,255, 0, 0, 0,255, 32, 32, 32,255,201,204,204,255,198,200,202,255, -198,200,202,255,196,199,201,255,195,197,199,255,193,195,197,255,193,194,196,255,193,194,196,255,190,192,195,255,188,190,192,255, -185,187,190,255,182,184,186,255,181,182,184,255,181,182,185,255,179,181,182,255,167,167,165,255,115,114,112,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 36, 36, 36,255,177,178,179,255,194,196,196,255,192,193,194,255,190,192,193,255,188,190,191,255,186,187,188,255,184,185,185,255, -181,182,182,255,177,178,177,255,176,176,175,255,104,103,101,255, 10, 9, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 68, 65, 84, 65, 0,144, 0, 0,128, 46, 95, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, - 61, 61, 61,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 62, 62, 62,255, 61, 61, 61,255, - 90, 90, 91,255,117,117,118,255,115,117,118,255,115,117,118,255,115,117,118,255,115,116,118,255,116,116,117,255,115,116,117,255, -115,116,117,255,115,116,117,255,114,115,117,255,114,115,116,255,114,115,116,255,114,115,116,255,114,115,116,255,114,115,115,255, -113,114,115,255,113,115,115,255,113,114,115,255,113,114,115,255,113,114,114,255,112,113,114,255,112,113,114,255,112,113,114,255, -112,113,114,255,112,112,113,255,112,112,113,255,111,112,113,255,111,112,113,255,111,111,112,255,110,111,112,255,110,111,112,255, -110,111,111,255,110,110,111,255,110,110,111,255,109,110,111,255,109,109,110,255,109,109,110,255,108,109,109,255,108,109,109,255, -108,108,109,255,107,108,108,255,107,108,108,255,107,108,108,255,107,107,108,255,106,107,107,255,106,106,107,255,105,106,106,255, -105,105,105,255,104,104,104,255,102,102,103,255, 99, 99, 99,255, 95, 95, 95,255, 92, 91, 91,255, 90, 89, 89,255, 89, 88, 87,255, - 89, 88, 87,255, 90, 89, 87,255, 90, 89, 89,255, 91, 90, 90,255, 93, 92, 92,255, 94, 93, 93,255, 95, 94, 94,255, 96, 96, 95,255, - 97, 97, 97,255, 98, 98, 98,255, 98, 98, 98,255, 99, 99, 99,255, 99, 99, 99,255,100, 99,100,255, 99, 99,100,255, 99, 99, 99,255, - 99, 99, 99,255, 99, 98, 99,255, 98, 97, 97,255, 97, 96, 96,255, 95, 94, 93,255, 93, 92, 91,255, 91, 90, 88,255, 89, 87, 85,255, - 87, 84, 81,255, 84, 82, 78,255, 86, 84, 83,255, 87, 86, 86,255, 88, 87, 86,255, 86, 86, 85,255, 86, 84, 84,255, 84, 83, 82,255, - 83, 82, 81,255, 83, 81, 79,255, 82, 80, 78,255, 80, 78, 76,255, 79, 76, 74,255, 70, 69, 67,255, 61, 61, 61,255, 60, 60, 60,255, -116,117,119,255,168,170,172,255,167,169,171,255,167,169,170,255,167,169,171,255,167,168,170,255,166,168,170,255,166,168,170,255, -166,168,170,255,166,167,169,255,165,167,169,255,165,166,168,255,165,166,168,255,164,166,168,255,164,166,167,255,164,165,167,255, -163,165,167,255,163,164,166,255,163,164,166,255,162,164,165,255,162,163,165,255,161,163,165,255,161,163,164,255,161,162,164,255, -160,161,163,255,160,161,163,255,159,161,162,255,159,160,162,255,158,160,162,255,158,159,161,255,157,159,160,255,157,158,160,255, -156,158,159,255,156,157,159,255,155,157,158,255,155,156,158,255,154,155,157,255,154,155,156,255,153,154,156,255,152,153,155,255, -152,153,154,255,151,152,153,255,150,151,153,255,150,151,152,255,150,150,152,255,149,150,151,255,148,149,150,255,146,147,148,255, -143,144,144,255,139,139,139,255,134,134,134,255,127,126,126,255,121,120,119,255,117,115,113,255,115,113,111,255,115,112,111,255, -116,114,111,255,117,115,114,255,120,118,116,255,122,120,120,255,124,123,123,255,127,126,126,255,128,127,127,255,131,130,130,255, -132,132,132,255,134,134,134,255,135,135,135,255,136,136,136,255,137,137,137,255,137,137,137,255,136,136,137,255,136,135,136,255, -135,135,135,255,133,134,134,255,132,131,130,255,129,128,127,255,126,124,123,255,122,120,118,255,118,115,112,255,114,110,105,255, -111,106,100,255,108,105,100,255,112,110,109,255,114,112,111,255,112,111,110,255,111,108,107,255,109,107,105,255,107,105,103,255, -105,102,100,255,104,100, 97,255,101, 97, 94,255, 98, 95, 91,255, 96, 91, 87,255, 78, 76, 73,255, 61, 61, 61,255, 60, 60, 60,255, -117,118,119,255,169,171,173,255,168,169,171,255,168,169,171,255,167,169,171,255,167,169,171,255,167,169,171,255,167,168,170,255, -166,168,170,255,166,168,170,255,166,167,169,255,165,167,169,255,165,167,169,255,165,167,168,255,164,166,168,255,164,166,168,255, -164,165,167,255,163,165,167,255,163,165,167,255,163,164,166,255,162,164,165,255,162,164,165,255,161,163,165,255,161,162,164,255, -161,162,164,255,160,161,163,255,160,161,163,255,159,161,163,255,159,160,162,255,158,160,161,255,158,159,161,255,157,158,160,255, -157,158,160,255,156,158,159,255,156,157,159,255,155,157,158,255,155,156,157,255,154,155,157,255,153,154,156,255,153,154,155,255, -152,153,155,255,152,153,154,255,151,152,154,255,150,151,152,255,149,150,151,255,148,148,150,255,146,146,147,255,143,143,144,255, -136,136,137,255,128,128,128,255,121,120,120,255,116,115,114,255,114,112,111,255,114,111,110,255,114,112,110,255,115,113,111,255, -117,115,114,255,119,117,116,255,122,121,120,255,124,124,123,255,127,126,126,255,130,129,129,255,132,131,131,255,133,132,133,255, -134,134,134,255,136,136,136,255,137,137,137,255,137,137,138,255,138,138,139,255,137,137,138,255,137,137,137,255,136,136,137,255, -134,134,135,255,133,133,133,255,131,129,130,255,128,127,125,255,125,122,121,255,121,118,115,255,117,113,109,255,113,108,103,255, -111,107,102,255,113,110,108,255,116,114,113,255,115,113,113,255,113,111,111,255,111,109,108,255,110,108,106,255,108,106,104,255, -106,103,101,255,103,100, 98,255,101, 98, 95,255, 99, 96, 92,255, 97, 93, 88,255, 79, 77, 74,255, 61, 61, 61,255, 60, 60, 60,255, -117,118,119,255,170,171,173,255,168,170,172,255,168,170,172,255,168,170,172,255,167,169,171,255,168,169,171,255,167,169,171,255, -167,169,171,255,167,168,170,255,166,168,170,255,166,167,169,255,166,168,170,255,165,167,169,255,165,167,169,255,164,166,168,255, -164,166,168,255,164,166,168,255,164,165,167,255,163,165,167,255,163,164,166,255,163,164,166,255,162,164,165,255,162,163,165,255, -161,163,165,255,160,162,164,255,160,162,164,255,160,162,163,255,159,161,163,255,159,160,162,255,158,160,162,255,158,159,161,255, -158,159,161,255,157,159,160,255,156,158,160,255,156,157,159,255,155,157,158,255,155,156,158,255,154,155,157,255,153,155,156,255, -153,154,155,255,152,153,155,255,152,153,154,255,151,151,153,255,149,149,151,255,145,145,146,255,139,139,139,255,132,131,131,255, -124,124,123,255,119,117,116,255,114,112,110,255,113,110,108,255,112,110,108,255,114,111,110,255,116,114,112,255,118,116,115,255, -121,119,118,255,123,122,122,255,126,125,125,255,128,128,127,255,130,130,130,255,133,132,132,255,134,134,134,255,136,136,136,255, -137,137,137,255,138,139,138,255,139,139,140,255,139,139,140,255,139,139,140,255,138,138,139,255,138,137,138,255,137,137,137,255, -135,135,135,255,133,132,131,255,130,129,128,255,127,125,124,255,124,122,119,255,120,117,114,255,117,112,107,255,114,109,104,255, -115,112,109,255,116,115,114,255,118,116,116,255,116,114,113,255,114,112,111,255,112,110,109,255,111,109,107,255,109,106,105,255, -106,104,103,255,105,102,100,255,103,100, 96,255,100, 98, 94,255, 98, 94, 90,255, 79, 77, 75,255, 61, 61, 61,255, 60, 60, 60,255, -118,119,120,255,170,172,174,255,169,171,173,255,169,171,173,255,169,170,172,255,168,170,172,255,168,170,172,255,168,170,172,255, -167,169,171,255,167,169,171,255,167,168,170,255,167,168,170,255,166,168,170,255,166,168,170,255,165,167,169,255,165,167,169,255, -165,167,169,255,165,166,168,255,164,166,168,255,164,165,167,255,163,165,167,255,163,165,167,255,163,164,166,255,162,164,166,255, -162,163,165,255,161,163,165,255,161,163,165,255,161,162,164,255,160,161,163,255,160,161,163,255,159,161,163,255,159,160,162,255, -158,160,162,255,158,159,161,255,157,158,160,255,157,158,160,255,156,157,159,255,155,157,158,255,155,156,158,255,154,155,157,255, -153,154,156,255,152,153,154,255,150,151,152,255,146,146,147,255,142,143,143,255,136,136,137,255,128,127,127,255,120,118,117,255, -114,112,110,255,112,110,108,255,111,109,107,255,112,110,108,255,114,112,110,255,116,115,113,255,119,117,116,255,122,121,120,255, -125,124,124,255,127,126,126,255,130,129,129,255,132,132,132,255,133,133,133,255,136,135,136,255,137,137,138,255,138,138,139,255, -139,140,140,255,140,140,141,255,140,140,141,255,140,140,141,255,140,140,141,255,139,139,140,255,138,138,139,255,137,137,137,255, -135,134,134,255,132,130,130,255,130,128,127,255,126,124,122,255,123,120,117,255,119,116,111,255,116,111,106,255,115,113,109,255, -119,117,116,255,118,117,116,255,118,117,117,255,116,115,114,255,115,114,113,255,113,112,111,255,111,109,108,255,110,108,106,255, -108,105,103,255,106,103,101,255,104,101, 97,255,102, 98, 95,255, 99, 95, 91,255, 80, 78, 75,255, 61, 61, 61,255, 60, 60, 60,255, -118,119,120,255,171,174,176,255,170,172,174,255,170,172,174,255,170,172,174,255,170,172,174,255,170,171,173,255,169,171,173,255, -169,171,173,255,168,170,172,255,168,170,172,255,168,170,172,255,168,170,172,255,167,169,171,255,167,169,171,255,167,169,171,255, -166,168,170,255,166,168,170,255,166,167,169,255,165,167,169,255,165,167,169,255,165,166,168,255,164,166,167,255,163,165,167,255, -163,165,167,255,163,164,166,255,162,164,166,255,162,164,165,255,161,163,165,255,161,162,164,255,161,162,164,255,160,161,163,255, -160,161,163,255,159,161,162,255,158,160,162,255,158,159,161,255,157,159,160,255,156,157,159,255,155,157,158,255,154,155,157,255, -153,153,155,255,149,150,151,255,142,142,143,255,133,133,133,255,126,126,126,255,121,120,120,255,116,115,114,255,113,110,108,255, -111,109,107,255,112,109,107,255,113,111,109,255,115,113,111,255,117,115,114,255,120,119,118,255,123,122,122,255,127,126,126,255, -129,128,128,255,131,130,131,255,133,133,134,255,136,136,136,255,137,137,137,255,139,139,140,255,140,141,141,255,141,141,142,255, -142,142,143,255,142,142,143,255,142,143,143,255,142,142,143,255,141,141,142,255,140,140,140,255,139,138,139,255,137,136,135,255, -134,133,133,255,131,130,128,255,128,126,124,255,125,122,119,255,121,118,115,255,119,114,109,255,117,114,109,255,119,116,115,255, -122,121,121,255,120,119,118,255,119,118,117,255,118,116,116,255,116,114,113,255,114,112,111,255,113,111,110,255,111,109,107,255, -109,106,104,255,107,105,102,255,105,102, 99,255,102, 99, 96,255,100, 97, 93,255, 80, 79, 76,255, 61, 61, 61,255, 60, 60, 60,255, -119,120,121,255,172,174,176,255,171,173,175,255,171,173,175,255,171,173,175,255,170,172,174,255,170,172,174,255,170,172,174,255, -169,171,173,255,169,171,173,255,169,171,173,255,168,170,172,255,168,170,172,255,168,169,172,255,167,169,171,255,167,169,171,255, -167,169,171,255,166,168,170,255,166,168,170,255,166,168,170,255,165,167,169,255,165,167,169,255,164,166,168,255,164,166,168,255, -164,166,168,255,163,165,167,255,163,165,167,255,163,164,166,255,162,163,165,255,162,163,165,255,161,163,165,255,160,162,164,255, -160,162,164,255,160,161,163,255,159,160,163,255,158,160,162,255,158,159,161,255,155,156,158,255,152,153,154,255,147,147,148,255, -143,143,143,255,137,137,138,255,129,129,129,255,121,119,119,255,114,113,110,255,111,109,106,255,110,108,105,255,111,108,106,255, -112,110,108,255,114,112,110,255,117,114,113,255,119,118,117,255,122,121,120,255,125,124,123,255,127,127,127,255,131,130,130,255, -133,133,133,255,135,135,135,255,137,137,138,255,139,139,140,255,141,141,141,255,142,142,143,255,143,143,144,255,143,144,145,255, -144,144,145,255,143,144,145,255,143,143,144,255,142,143,144,255,142,142,143,255,140,140,140,255,138,138,138,255,136,135,134,255, -133,132,131,255,130,128,127,255,127,125,122,255,124,120,116,255,121,117,112,255,118,115,110,255,122,119,117,255,122,121,120,255, -123,122,122,255,121,120,120,255,120,119,118,255,118,117,117,255,117,115,114,255,115,113,112,255,114,112,110,255,112,109,108,255, -109,107,105,255,108,106,104,255,106,103,100,255,104,101, 98,255,101, 97, 94,255, 81, 79, 77,255, 61, 61, 61,255, 60, 60, 60,255, -119,120,121,255,173,175,177,255,171,173,176,255,171,173,176,255,171,173,175,255,171,173,175,255,171,173,175,255,170,172,174,255, -170,172,174,255,171,173,175,255,169,171,173,255,169,171,173,255,169,171,174,255,168,170,172,255,168,170,172,255,169,170,173,255, -167,169,171,255,167,169,171,255,168,170,172,255,166,168,170,255,166,168,171,255,166,167,170,255,165,167,169,255,166,167,169,255, -165,166,168,255,164,166,168,255,163,165,167,255,163,165,167,255,163,164,166,255,162,164,166,255,162,164,166,255,161,163,165,255, -160,162,165,255,160,162,163,255,158,160,161,255,157,158,160,255,155,156,157,255,150,151,152,255,142,143,144,255,133,133,133,255, -125,125,124,255,120,118,118,255,116,114,113,255,113,111,109,255,111,109,106,255,110,107,105,255,111,109,107,255,113,111,109,255, -115,113,111,255,118,116,115,255,121,120,119,255,124,123,123,255,127,126,126,255,130,129,129,255,132,131,132,255,135,135,135,255, -137,138,138,255,139,139,140,255,141,141,142,255,142,143,144,255,143,144,145,255,145,145,146,255,145,145,146,255,145,145,146,255, -146,145,146,255,145,146,146,255,144,144,145,255,143,143,144,255,142,142,143,255,140,140,140,255,138,137,136,255,135,134,133,255, -132,131,129,255,129,127,125,255,126,123,120,255,123,120,115,255,121,118,113,255,120,118,116,255,126,124,124,255,125,125,124,255, -124,123,123,255,122,121,121,255,121,120,120,255,119,118,117,255,117,116,115,255,116,115,114,255,114,112,111,255,112,110,109,255, -111,109,107,255,108,106,104,255,107,104,102,255,104,102, 98,255,103, 98, 95,255, 82, 80, 77,255, 61, 61, 61,255, 60, 60, 60,255, -120,121,122,255,174,176,178,255,173,175,177,255,173,175,177,255,173,175,177,255,172,174,176,255,172,174,176,255,172,174,176,255, -171,173,176,255,171,173,175,255,171,173,175,255,170,172,174,255,170,172,174,255,170,172,174,255,169,171,174,255,169,171,173,255, -169,171,173,255,169,170,173,255,168,170,172,255,168,170,172,255,167,169,171,255,167,169,171,255,167,169,171,255,166,168,170,255, -166,168,170,255,165,167,169,255,165,166,168,255,165,166,168,255,164,166,168,255,163,165,167,255,163,165,167,255,162,163,165,255, -161,163,165,255,158,160,162,255,155,156,158,255,149,150,151,255,143,144,144,255,137,137,137,255,129,129,128,255,121,119,119,255, -114,112,111,255,110,108,106,255,109,107,104,255,110,107,104,255,111,109,106,255,112,110,109,255,115,113,112,255,118,116,115,255, -121,119,118,255,123,122,121,255,127,126,126,255,130,129,129,255,132,132,132,255,135,134,135,255,137,137,138,255,139,139,140,255, -141,142,142,255,143,143,144,255,144,145,146,255,145,146,147,255,146,147,148,255,147,148,149,255,147,148,149,255,147,148,149,255, -146,147,148,255,146,146,148,255,145,145,146,255,143,143,144,255,142,141,141,255,140,139,139,255,137,136,134,255,134,132,131,255, -131,129,127,255,128,125,122,255,125,121,117,255,123,120,116,255,124,122,119,255,126,124,123,255,127,127,127,255,126,125,125,255, -125,125,124,255,123,122,122,255,122,121,120,255,120,119,119,255,118,117,116,255,117,115,114,255,115,114,113,255,113,111,110,255, -112,110,108,255,110,107,106,255,108,105,103,255,105,102, 99,255,103,100, 97,255, 82, 80, 78,255, 61, 61, 61,255, 60, 60, 60,255, -120,121,122,255,175,177,179,255,174,176,178,255,173,175,178,255,173,175,177,255,173,175,177,255,172,174,177,255,172,174,177,255, -172,174,176,255,172,174,176,255,171,174,176,255,171,173,175,255,171,173,175,255,170,173,175,255,170,172,174,255,170,172,174,255, -169,171,173,255,169,171,173,255,169,171,173,255,168,170,172,255,168,170,172,255,168,170,172,255,167,169,171,255,167,169,171,255, -166,168,170,255,166,168,170,255,166,168,170,255,165,167,169,255,164,166,168,255,164,166,168,255,163,165,167,255,161,163,165,255, -158,160,162,255,153,154,156,255,145,146,147,255,135,135,135,255,127,126,125,255,121,119,119,255,116,115,114,255,114,112,110,255, -112,110,108,255,112,109,106,255,112,109,108,255,113,111,109,255,115,113,111,255,118,116,114,255,121,119,118,255,124,123,122,255, -127,126,125,255,129,128,128,255,131,131,131,255,135,134,135,255,138,138,138,255,140,140,140,255,141,142,142,255,143,143,144,255, -145,145,146,255,146,147,148,255,148,148,149,255,148,149,150,255,149,149,150,255,149,149,150,255,148,149,150,255,148,149,150,255, -147,148,149,255,147,147,148,255,145,145,146,255,144,143,143,255,141,140,140,255,138,137,137,255,136,134,133,255,132,130,129,255, -130,127,124,255,127,124,120,255,125,122,117,255,127,124,121,255,129,127,127,255,130,129,129,255,129,128,128,255,127,127,127,255, -126,125,125,255,124,123,123,255,122,121,121,255,121,120,120,255,119,118,117,255,118,116,115,255,116,114,113,255,114,112,111,255, -112,110,109,255,110,108,107,255,109,106,104,255,107,104,101,255,104,101, 98,255, 82, 81, 79,255, 61, 61, 61,255, 60, 60, 60,255, -120,122,123,255,175,178,181,255,174,176,178,255,175,176,178,255,174,176,178,255,173,176,178,255,173,175,178,255,173,175,177,255, -173,176,177,255,172,175,178,255,172,174,177,255,173,174,176,255,172,174,177,255,171,173,175,255,171,174,175,255,170,173,175,255, -170,172,174,255,171,173,175,255,170,172,174,255,169,171,173,255,170,172,174,255,169,171,173,255,168,170,172,255,167,169,171,255, -167,169,171,255,167,169,171,255,166,168,170,255,166,168,170,255,165,167,169,255,164,166,168,255,161,163,165,255,156,157,159,255, -148,149,150,255,141,141,142,255,133,132,132,255,124,123,122,255,118,116,115,255,114,112,111,255,113,111,109,255,113,110,108,255, -114,112,110,255,115,113,112,255,116,115,113,255,119,117,116,255,121,120,118,255,123,122,122,255,127,126,126,255,130,129,129,255, -132,132,132,255,135,135,135,255,137,137,138,255,139,139,140,255,142,142,143,255,144,145,146,255,145,146,147,255,147,147,148,255, -147,148,149,255,149,150,151,255,150,151,152,255,150,151,152,255,150,151,152,255,151,151,152,255,150,151,152,255,149,149,150,255, -148,149,150,255,147,147,148,255,145,145,145,255,142,142,142,255,140,140,138,255,137,136,135,255,134,132,130,255,132,129,126,255, -130,127,123,255,127,124,119,255,127,125,122,255,130,129,128,255,132,131,131,255,131,130,131,255,130,129,129,255,128,128,128,255, -126,126,126,255,125,125,125,255,124,123,123,255,122,120,120,255,120,119,119,255,119,117,117,255,117,115,114,255,115,113,112,255, -114,112,110,255,111,109,107,255,110,107,105,255,107,105,102,255,105,101, 98,255, 83, 81, 80,255, 61, 61, 61,255, 60, 60, 60,255, -121,122,123,255,177,179,181,255,176,178,180,255,175,178,180,255,175,178,180,255,175,177,180,255,175,177,179,255,175,177,179,255, -174,176,179,255,174,176,178,255,173,176,178,255,173,175,178,255,173,175,177,255,173,175,177,255,172,174,176,255,172,174,176,255, -172,174,176,255,171,173,175,255,171,173,175,255,170,172,175,255,170,172,174,255,170,172,174,255,169,171,173,255,169,171,173,255, -169,171,173,255,168,170,172,255,167,169,171,255,167,169,171,255,165,166,168,255,162,163,165,255,156,157,159,255,146,146,147,255, -135,135,135,255,128,126,126,255,122,121,120,255,119,117,115,255,117,115,113,255,116,114,112,255,115,113,112,255,116,114,114,255, -118,116,115,255,120,119,118,255,123,122,121,255,126,125,125,255,128,127,127,255,130,129,129,255,133,133,133,255,136,136,136,255, -139,139,139,255,141,141,142,255,142,142,143,255,144,145,146,255,146,146,147,255,148,149,150,255,149,150,151,255,150,151,152,255, -151,152,153,255,151,152,153,255,151,152,153,255,152,153,154,255,152,153,154,255,151,152,153,255,151,151,152,255,150,150,151,255, -148,149,149,255,146,147,147,255,144,144,143,255,142,141,140,255,139,137,136,255,136,134,132,255,133,131,128,255,132,129,125,255, -129,126,122,255,129,127,124,255,131,131,129,255,134,134,134,255,133,132,133,255,132,132,132,255,130,131,131,255,129,129,129,255, -128,127,127,255,126,125,125,255,124,123,123,255,123,122,122,255,121,119,119,255,120,118,117,255,118,116,116,255,116,114,113,255, -114,112,111,255,112,110,109,255,110,108,106,255,108,105,103,255,106,103,100,255, 83, 82, 80,255, 61, 61, 61,255, 60, 60, 60,255, -121,123,124,255,177,180,182,255,176,178,181,255,176,178,181,255,176,178,180,255,175,178,180,255,175,177,180,255,175,177,180,255, -174,177,179,255,174,176,179,255,174,176,178,255,174,176,178,255,173,175,178,255,173,175,177,255,172,175,177,255,172,175,177,255, -172,174,176,255,171,174,176,255,171,173,175,255,171,173,175,255,171,173,175,255,170,172,174,255,169,171,174,255,169,171,174,255, -169,171,173,255,168,170,172,255,168,170,172,255,165,167,169,255,161,162,163,255,153,154,156,255,145,145,146,255,135,135,135,255, -127,126,125,255,122,120,120,255,119,118,117,255,119,117,116,255,119,117,116,255,119,117,116,255,120,119,118,255,123,121,121,255, -125,124,124,255,127,127,127,255,130,130,129,255,133,132,132,255,135,134,135,255,137,137,137,255,139,139,139,255,141,141,142,255, -143,144,145,255,146,147,148,255,147,148,149,255,149,149,150,255,150,151,152,255,151,152,153,255,152,153,155,255,153,154,155,255, -153,155,156,255,154,155,156,255,154,155,156,255,153,154,155,255,153,153,155,255,152,153,154,255,151,152,153,255,150,150,151,255, -148,148,148,255,145,145,145,255,144,142,142,255,140,139,138,255,137,135,134,255,135,132,130,255,133,130,126,255,132,128,125,255, -131,129,126,255,133,132,132,255,136,135,136,255,135,135,135,255,134,133,134,255,132,132,132,255,132,131,131,255,130,130,130,255, -128,128,128,255,127,126,126,255,125,124,124,255,123,123,122,255,122,121,121,255,120,120,119,255,118,117,116,255,117,115,114,255, -115,113,112,255,113,111,109,255,111,109,107,255,109,106,104,255,107,104,100,255, 84, 82, 80,255, 61, 61, 61,255, 60, 60, 60,255, -122,123,124,255,178,180,184,255,177,179,181,255,176,179,181,255,176,180,181,255,177,178,181,255,176,179,180,255,175,178,180,255, -175,177,181,255,176,177,180,255,175,178,179,255,174,176,179,255,175,177,178,255,174,176,178,255,173,175,178,255,174,176,177,255, -172,174,177,255,172,174,176,255,173,175,176,255,171,173,176,255,172,174,175,255,171,173,175,255,170,172,175,255,171,173,174,255, -170,172,174,255,168,170,173,255,166,168,170,255,161,163,164,255,153,152,154,255,142,142,143,255,134,134,134,255,129,128,127,255, -125,123,122,255,123,122,121,255,122,121,120,255,122,121,120,255,123,122,121,255,125,124,124,255,128,127,127,255,129,129,129,255, -132,132,132,255,134,134,134,255,136,136,137,255,139,139,140,255,142,142,143,255,143,143,144,255,145,145,146,255,146,147,148,255, -148,149,150,255,150,151,152,255,151,152,154,255,153,154,155,255,153,155,156,255,154,155,156,255,155,156,158,255,156,157,157,255, -155,156,157,255,155,156,157,255,155,156,157,255,155,156,157,255,153,154,155,255,153,153,154,255,152,152,152,255,149,149,149,255, -146,146,145,255,145,144,143,255,142,141,139,255,139,137,135,255,136,134,131,255,134,131,128,255,133,130,127,255,132,130,128,255, -135,134,134,255,137,137,137,255,137,137,138,255,136,136,136,255,135,135,135,255,133,134,133,255,132,132,132,255,131,131,131,255, -129,128,128,255,128,127,127,255,127,126,126,255,124,123,123,255,123,122,121,255,121,120,120,255,119,118,117,255,117,116,115,255, -116,114,113,255,113,111,110,255,112,110,108,255,109,107,105,255,108,105,101,255, 84, 83, 81,255, 61, 61, 61,255, 60, 60, 60,255, -122,124,124,255,179,182,184,255,178,181,183,255,178,180,183,255,178,180,183,255,177,180,182,255,177,179,182,255,177,179,182,255, -176,179,181,255,176,179,181,255,176,178,181,255,175,178,180,255,175,177,180,255,175,177,180,255,174,177,179,255,174,176,179,255, -174,176,178,255,174,176,178,255,173,175,178,255,173,175,177,255,172,174,177,255,172,174,176,255,172,174,176,255,171,173,175,255, -170,172,175,255,167,169,171,255,162,163,165,255,153,153,155,255,142,143,144,255,135,134,134,255,130,129,128,255,127,126,125,255, -127,126,125,255,126,125,124,255,127,126,125,255,129,128,127,255,130,129,129,255,132,132,132,255,134,134,134,255,136,136,136,255, -139,139,139,255,141,141,142,255,143,143,144,255,145,145,146,255,147,148,149,255,149,150,151,255,150,151,152,255,151,153,153,255, -152,153,156,255,154,155,157,255,155,156,158,255,156,157,158,255,157,158,159,255,157,158,160,255,157,158,160,255,157,158,160,255, -157,158,159,255,156,157,159,255,156,157,158,255,155,156,157,255,154,154,156,255,152,153,153,255,150,150,150,255,148,148,147,255, -146,145,144,255,143,142,140,255,141,139,137,255,138,136,133,255,136,134,129,255,134,133,129,255,135,133,131,255,137,137,136,255, -138,139,139,255,139,139,139,255,138,138,139,255,137,136,138,255,136,136,136,255,135,134,135,255,133,133,133,255,132,132,132,255, -131,130,130,255,129,129,129,255,127,126,126,255,125,125,124,255,124,123,122,255,122,120,120,255,120,119,118,255,118,116,116,255, -116,115,113,255,114,112,111,255,112,110,109,255,110,107,105,255,108,105,103,255, 84, 83, 81,255, 61, 61, 61,255, 60, 60, 60,255, -123,124,125,255,180,182,185,255,179,181,183,255,178,181,183,255,178,181,183,255,178,180,183,255,177,180,182,255,177,180,182,255, -177,179,182,255,177,179,181,255,176,178,181,255,176,178,181,255,176,178,180,255,175,178,180,255,175,178,180,255,175,177,179,255, -174,177,179,255,174,177,179,255,174,176,178,255,173,175,178,255,173,175,177,255,173,175,177,255,172,174,176,255,171,173,176,255, -169,171,173,255,163,164,166,255,154,155,156,255,144,144,144,255,137,136,136,255,132,131,130,255,131,130,129,255,130,129,128,255, -131,130,129,255,132,131,131,255,133,133,132,255,135,134,135,255,137,137,137,255,139,139,139,255,141,141,141,255,143,143,144,255, -145,145,146,255,147,148,149,255,148,149,150,255,150,151,152,255,152,153,154,255,154,155,156,255,155,156,158,255,155,157,158,255, -157,158,160,255,158,159,161,255,158,160,161,255,158,160,161,255,159,160,162,255,159,160,162,255,159,160,162,255,159,160,161,255, -158,159,160,255,157,158,159,255,156,157,159,255,156,156,157,255,154,154,155,255,152,152,152,255,149,148,148,255,146,145,145,255, -144,143,142,255,142,140,139,255,139,137,134,255,137,135,132,255,136,134,131,255,137,136,134,255,139,138,138,255,141,141,142,255, -140,141,141,255,140,140,140,255,139,139,139,255,137,137,138,255,137,137,137,255,135,135,135,255,134,134,134,255,133,133,133,255, -131,131,131,255,130,129,129,255,128,128,127,255,126,125,125,255,125,123,123,255,123,122,121,255,121,119,119,255,119,118,116,255, -117,116,114,255,115,113,111,255,113,111,109,255,111,109,107,255,109,106,103,255, 85, 84, 82,255, 61, 61, 61,255, 60, 60, 60,255, -123,124,125,255,181,184,186,255,180,182,185,255,180,181,185,255,180,182,184,255,178,181,184,255,179,180,184,255,179,181,184,255, -177,181,182,255,178,180,183,255,178,180,183,255,177,180,181,255,176,180,182,255,177,179,182,255,176,179,180,255,175,178,181,255, -176,178,180,255,175,178,179,255,174,177,180,255,175,177,178,255,174,177,179,255,174,176,178,255,172,174,177,255,170,172,174,255, -165,167,169,255,157,157,158,255,146,146,147,255,138,138,138,255,135,134,134,255,133,132,132,255,134,132,132,255,134,134,134,255, -136,135,135,255,137,137,137,255,139,139,140,255,142,142,142,255,143,143,144,255,145,146,146,255,147,148,149,255,148,149,150,255, -151,152,153,255,152,153,155,255,154,155,157,255,155,156,158,255,156,157,159,255,158,159,161,255,159,160,162,255,159,161,162,255, -161,162,164,255,161,162,164,255,161,163,164,255,161,163,164,255,161,163,164,255,161,163,164,255,160,161,162,255,159,160,162,255, -159,160,162,255,158,159,160,255,157,158,159,255,155,156,156,255,153,153,153,255,151,149,149,255,148,147,146,255,145,144,143,255, -144,141,139,255,141,139,136,255,139,136,134,255,138,136,134,255,139,138,136,255,141,141,140,255,143,143,143,255,142,143,144,255, -141,141,142,255,140,141,141,255,140,140,140,255,138,138,139,255,137,137,138,255,137,137,137,255,135,135,135,255,134,133,134,255, -132,131,131,255,131,130,130,255,129,128,128,255,127,126,126,255,126,125,124,255,123,122,122,255,121,120,119,255,120,118,117,255, -118,116,115,255,115,113,112,255,114,112,110,255,112,109,107,255,110,107,104,255, 85, 84, 82,255, 61, 61, 61,255, 60, 60, 60,255, -123,125,126,255,182,184,187,255,181,183,185,255,180,183,185,255,180,182,185,255,180,182,185,255,180,182,184,255,179,182,184,255, -179,181,184,255,179,181,184,255,178,181,183,255,178,181,183,255,178,180,183,255,178,180,182,255,177,179,182,255,177,179,182,255, -177,179,181,255,176,178,181,255,176,178,180,255,176,178,180,255,175,177,179,255,174,176,179,255,172,174,177,255,167,170,172,255, -159,160,161,255,149,149,149,255,141,141,141,255,138,137,137,255,136,136,135,255,136,136,135,255,138,138,138,255,139,139,140,255, -142,142,142,255,144,144,144,255,146,146,147,255,148,148,150,255,150,150,151,255,151,153,154,255,153,154,155,255,155,156,157,255, -155,157,158,255,157,158,160,255,158,160,162,255,159,161,163,255,160,161,163,255,161,163,164,255,161,163,165,255,162,164,165,255, -162,164,166,255,163,164,166,255,163,164,166,255,163,164,166,255,163,164,165,255,162,163,165,255,161,163,163,255,160,161,163,255, -160,160,162,255,158,159,160,255,156,156,157,255,154,154,154,255,152,151,150,255,149,148,147,255,146,145,144,255,145,143,141,255, -142,140,138,255,141,139,136,255,141,140,137,255,142,142,141,255,144,143,143,255,144,144,145,255,144,144,145,255,143,143,144,255, -142,142,143,255,141,141,142,255,140,140,141,255,139,139,139,255,138,138,138,255,137,137,138,255,135,136,136,255,134,134,134,255, -133,133,133,255,131,131,131,255,130,129,129,255,128,127,127,255,126,125,125,255,124,123,122,255,122,121,121,255,120,119,118,255, -119,117,116,255,116,114,113,255,114,112,111,255,112,110,108,255,111,108,106,255, 86, 84, 83,255, 61, 61, 61,255, 60, 60, 60,255, -124,125,126,255,182,185,187,255,181,183,186,255,181,183,186,255,180,183,185,255,180,183,185,255,180,183,185,255,180,182,185,255, -179,182,184,255,179,182,184,255,179,181,184,255,179,181,183,255,178,181,183,255,178,180,182,255,177,180,182,255,177,180,182,255, -177,179,181,255,176,179,181,255,176,178,181,255,176,178,180,255,175,177,180,255,174,176,178,255,170,172,174,255,162,163,165,255, -151,152,153,255,144,144,144,255,141,140,140,255,140,139,139,255,140,140,140,255,141,141,141,255,143,143,144,255,145,145,146,255, -148,148,149,255,150,151,152,255,152,152,153,255,153,154,156,255,155,156,158,255,157,158,160,255,158,159,161,255,159,160,162,255, -160,161,163,255,161,162,164,255,162,164,166,255,163,165,166,255,164,165,167,255,164,166,167,255,164,166,168,255,164,166,168,255, -165,166,168,255,165,166,168,255,164,166,167,255,164,165,166,255,163,164,166,255,163,164,165,255,161,162,164,255,160,161,162,255, -159,159,160,255,157,158,158,255,155,155,155,255,152,152,152,255,150,149,148,255,147,146,144,255,145,144,141,255,144,142,139,255, -142,141,138,255,144,143,142,255,145,145,144,255,146,146,146,255,146,147,148,255,145,146,147,255,145,145,146,255,144,144,145,255, -143,143,144,255,142,142,143,255,141,141,142,255,140,140,141,255,139,139,139,255,137,137,138,255,136,136,137,255,136,135,136,255, -133,133,133,255,132,132,132,255,131,130,130,255,129,128,128,255,127,126,126,255,125,124,124,255,123,122,121,255,122,120,119,255, -120,118,117,255,117,115,114,255,115,113,111,255,113,111,109,255,111,109,106,255, 86, 85, 83,255, 61, 61, 61,255, 60, 60, 60,255, -124,125,127,255,184,186,189,255,181,185,186,255,182,185,187,255,182,184,187,255,182,184,187,255,181,184,186,255,181,184,186,255, -181,182,186,255,180,183,185,255,180,183,185,255,180,182,185,255,179,181,184,255,179,182,184,255,179,180,184,255,179,181,183,255, -178,181,183,255,178,179,182,255,178,180,182,255,177,179,182,255,176,178,180,255,173,176,178,255,166,167,169,255,155,156,156,255, -147,147,147,255,143,143,143,255,143,142,142,255,143,142,142,255,144,144,145,255,147,147,148,255,148,149,150,255,151,152,153,255, -154,154,156,255,156,156,158,255,157,158,160,255,158,159,161,255,160,161,163,255,161,162,164,255,162,164,165,255,163,165,167,255, -164,166,168,255,164,166,168,255,165,167,169,255,166,168,169,255,166,168,170,255,167,168,170,255,167,168,170,255,167,169,170,255, -167,168,170,255,166,168,169,255,166,167,169,255,164,165,167,255,163,165,166,255,163,164,165,255,161,162,163,255,160,160,161,255, -158,159,159,255,156,155,155,255,153,152,152,255,151,150,148,255,148,146,145,255,146,144,142,255,146,144,142,255,145,143,142,255, -145,143,142,255,148,148,148,255,150,150,151,255,148,148,150,255,147,148,149,255,146,147,148,255,146,146,147,255,145,145,147,255, -143,144,145,255,143,143,144,255,142,142,143,255,140,141,141,255,140,140,140,255,139,139,139,255,137,137,137,255,136,136,136,255, -135,134,135,255,133,132,133,255,131,131,131,255,129,128,128,255,128,127,127,255,126,125,125,255,123,122,122,255,122,121,120,255, -120,118,117,255,117,116,114,255,116,114,113,255,114,111,110,255,112,110,107,255, 86, 85, 84,255, 61, 61, 61,255, 60, 60, 60,255, -125,126,127,255,184,187,189,255,183,186,188,255,183,185,188,255,183,185,188,255,182,185,187,255,182,185,187,255,182,184,187,255, -181,184,186,255,181,184,186,255,181,183,186,255,180,183,185,255,180,182,185,255,180,182,185,255,179,182,184,255,179,181,184,255, -179,181,184,255,178,181,183,255,178,180,183,255,178,180,183,255,177,179,181,255,170,172,174,255,160,161,163,255,151,151,152,255, -147,147,147,255,145,145,145,255,145,146,145,255,147,147,148,255,149,149,150,255,152,152,153,255,155,155,157,255,156,157,159,255, -158,160,161,255,160,162,163,255,161,163,165,255,162,164,166,255,164,165,167,255,165,166,168,255,165,167,169,255,166,168,170,255, -167,169,170,255,167,169,171,255,167,169,171,255,168,170,171,255,168,170,171,255,168,170,172,255,168,170,171,255,168,170,171,255, -168,169,171,255,167,168,169,255,166,167,169,255,164,165,167,255,163,164,165,255,162,162,163,255,161,161,162,255,158,159,159,255, -156,156,156,255,153,152,152,255,151,150,149,255,149,148,146,255,147,146,143,255,146,145,143,255,148,148,146,255,150,149,149,255, -148,148,149,255,150,151,152,255,150,151,153,255,149,149,151,255,148,149,150,255,147,148,149,255,146,147,148,255,145,146,147,255, -144,145,146,255,143,144,145,255,143,143,144,255,141,142,142,255,140,140,141,255,139,139,140,255,138,138,138,255,137,137,137,255, -135,135,136,255,134,133,133,255,132,131,131,255,130,129,129,255,129,128,128,255,127,126,125,255,124,123,123,255,123,122,121,255, -121,119,118,255,119,117,116,255,117,115,113,255,114,112,110,255,113,110,108,255, 87, 86, 84,255, 61, 61, 61,255, 60, 60, 60,255, -125,126,128,255,185,188,190,255,183,186,188,255,183,186,188,255,183,186,188,255,182,185,188,255,182,185,188,255,182,185,187,255, -182,184,187,255,182,184,187,255,181,183,186,255,181,183,186,255,180,183,185,255,180,182,185,255,180,182,185,255,179,182,184,255, -179,181,184,255,179,181,184,255,178,181,183,255,177,179,183,255,175,177,179,255,166,167,169,255,156,156,157,255,151,151,151,255, -148,148,149,255,148,148,149,255,149,149,150,255,152,152,154,255,155,156,157,255,157,158,160,255,159,161,162,255,162,163,165,255, -163,164,166,255,165,166,168,255,165,167,169,255,166,168,170,255,167,169,171,255,167,169,172,255,168,170,172,255,168,170,172,255, -169,171,173,255,169,171,173,255,169,171,173,255,169,171,173,255,169,171,173,255,169,170,172,255,169,171,172,255,168,170,171,255, -168,169,171,255,166,167,169,255,165,166,167,255,164,165,166,255,162,163,164,255,161,161,162,255,160,159,159,255,157,156,156,255, -154,153,152,255,152,150,149,255,150,148,147,255,149,148,146,255,149,148,147,255,149,149,148,255,152,152,152,255,153,153,155,255, -152,153,153,255,151,152,153,255,150,151,152,255,149,150,151,255,149,149,150,255,148,148,149,255,147,148,149,255,146,147,148,255, -145,145,146,255,144,145,145,255,143,143,144,255,142,142,143,255,141,141,142,255,139,139,140,255,138,138,139,255,137,137,138,255, -135,135,135,255,134,134,134,255,133,132,132,255,131,130,130,255,130,129,129,255,128,127,126,255,126,124,124,255,123,123,121,255, -122,120,119,255,119,118,116,255,118,115,114,255,115,113,111,255,113,111,109,255, 87, 86, 85,255, 61, 61, 61,255, 60, 60, 60,255, -125,127,129,255,186,189,191,255,185,186,190,255,184,187,190,255,184,187,190,255,184,186,188,255,184,185,189,255,183,186,189,255, -183,186,187,255,183,185,188,255,182,185,188,255,182,184,186,255,181,184,187,255,181,184,187,255,181,183,185,255,181,183,186,255, -180,183,185,255,180,182,185,255,179,182,184,255,177,179,181,255,172,173,175,255,162,163,163,255,154,155,156,255,152,152,152,255, -152,152,152,255,152,152,153,255,154,155,156,255,157,157,159,255,160,161,162,255,162,164,165,255,164,166,167,255,165,167,169,255, -167,168,170,255,168,170,172,255,169,171,173,255,169,171,173,255,170,172,174,255,171,173,175,255,171,173,175,255,171,173,175,255, -171,173,175,255,171,173,175,255,171,173,175,255,171,172,173,255,171,171,174,255,170,171,173,255,168,170,171,255,168,169,171,255, -166,167,168,255,165,166,167,255,164,165,166,255,162,163,163,255,162,162,162,255,160,159,159,255,157,156,156,255,155,155,154,255, -153,152,151,255,151,150,149,255,151,150,149,255,151,150,150,255,153,153,153,255,154,154,155,255,154,155,157,255,154,154,155,255, -153,154,155,255,152,153,154,255,151,151,152,255,150,151,152,255,150,150,152,255,148,149,150,255,148,148,149,255,147,148,149,255, -146,146,147,255,145,145,146,255,144,144,145,255,142,143,144,255,142,142,143,255,141,141,142,255,139,139,140,255,138,138,138,255, -137,137,137,255,135,135,135,255,133,133,133,255,131,130,130,255,130,129,129,255,128,127,127,255,126,125,124,255,125,123,123,255, -122,121,120,255,120,118,117,255,118,116,115,255,116,114,112,255,114,112,110,255, 87, 86, 85,255, 61, 61, 61,255, 60, 60, 60,255, -126,127,129,255,186,189,192,255,185,187,191,255,185,188,190,255,185,187,190,255,184,187,190,255,184,187,189,255,184,186,189,255, -184,186,189,255,183,186,188,255,183,185,188,255,182,185,187,255,182,185,187,255,182,185,187,255,181,184,186,255,181,184,186,255, -181,183,186,255,181,183,186,255,180,182,186,255,176,178,181,255,169,170,172,255,160,160,161,255,156,156,156,255,154,154,155,255, -155,155,156,255,156,157,158,255,159,160,161,255,162,163,165,255,164,166,167,255,166,168,169,255,168,170,172,255,169,171,173,255, -170,172,174,255,171,173,175,255,171,173,175,255,171,173,175,255,172,174,176,255,172,174,176,255,172,174,176,255,172,174,176,255, -172,174,175,255,172,173,175,255,171,173,175,255,170,172,174,255,170,171,172,255,169,170,172,255,168,169,170,255,166,167,168,255, -165,166,167,255,164,165,165,255,162,163,163,255,161,162,161,255,159,159,158,255,157,156,156,255,155,155,154,255,154,154,152,255, -154,153,152,255,154,153,152,255,155,155,154,255,155,155,156,255,156,157,158,255,156,158,159,255,155,156,157,255,154,155,156,255, -153,154,155,255,153,153,155,255,151,152,153,255,151,152,153,255,150,151,152,255,149,150,151,255,148,149,150,255,147,148,149,255, -146,147,148,255,145,146,147,255,145,145,146,255,143,144,144,255,142,142,143,255,141,142,142,255,140,140,140,255,138,138,138,255, -137,137,137,255,136,135,135,255,134,133,133,255,132,132,132,255,131,130,130,255,129,128,127,255,127,126,125,255,125,124,123,255, -123,121,120,255,121,119,118,255,119,117,115,255,116,114,112,255,115,112,110,255, 88, 87, 85,255, 61, 61, 61,255, 60, 60, 60,255, -126,127,129,255,187,190,192,255,185,188,191,255,185,188,191,255,185,188,191,255,185,187,190,255,184,187,190,255,184,186,189,255, -184,186,189,255,184,186,189,255,183,186,188,255,183,185,188,255,182,185,188,255,183,185,187,255,182,184,187,255,181,184,187,255, -181,183,186,255,181,184,187,255,181,183,186,255,175,177,179,255,166,167,168,255,159,160,160,255,157,157,158,255,157,157,158,255, -159,159,160,255,161,162,164,255,164,166,167,255,167,168,170,255,168,170,172,255,170,171,173,255,171,173,175,255,172,174,176,255, -173,175,177,255,173,175,177,255,172,175,177,255,172,174,176,255,172,174,176,255,172,174,176,255,172,174,175,255,172,173,176,255, -172,174,175,255,171,173,175,255,171,172,174,255,169,171,173,255,169,170,171,255,168,168,169,255,166,167,168,255,165,165,166,255, -164,164,164,255,162,162,162,255,161,160,160,255,160,159,158,255,158,157,156,255,157,156,154,255,156,155,154,255,156,156,155,255, -157,156,156,255,159,160,160,255,159,160,161,255,157,158,159,255,156,157,159,255,157,158,159,255,156,157,158,255,155,155,157,255, -154,155,156,255,153,154,155,255,152,153,154,255,151,152,153,255,151,151,152,255,149,150,151,255,149,149,151,255,148,148,150,255, -147,147,148,255,146,146,147,255,144,145,146,255,144,144,145,255,143,143,144,255,141,142,142,255,141,141,141,255,139,139,139,255, -137,138,137,255,136,136,136,255,135,135,135,255,133,132,132,255,131,131,131,255,130,129,129,255,128,127,126,255,126,125,124,255, -124,122,121,255,121,120,118,255,120,117,116,255,117,115,113,255,116,113,110,255, 88, 87, 86,255, 61, 61, 61,255, 60, 60, 60,255, -126,128,130,255,188,191,194,255,187,189,192,255,187,189,192,255,186,189,192,255,186,189,191,255,186,188,191,255,185,188,191,255, -185,188,190,255,185,187,190,255,184,187,190,255,184,186,188,255,184,186,189,255,183,186,189,255,183,186,188,255,182,185,188,255, -182,185,188,255,182,185,187,255,181,183,187,255,174,176,177,255,165,166,167,255,161,161,161,255,160,161,161,255,161,162,163,255, -163,164,165,255,166,167,169,255,168,170,172,255,170,172,174,255,172,174,176,255,173,175,177,255,174,176,178,255,174,176,178,255, -174,176,178,255,174,176,179,255,174,176,178,255,173,175,177,255,173,175,176,255,172,174,175,255,172,173,176,255,171,173,174,255, -171,172,174,255,170,172,173,255,169,170,172,255,168,169,170,255,167,168,168,255,165,165,166,255,164,164,164,255,163,163,162,255, -161,161,160,255,160,160,159,255,159,159,158,255,158,157,156,255,158,158,155,255,159,159,157,255,160,160,160,255,159,160,161,255, -159,160,161,255,162,163,164,255,161,162,163,255,159,160,161,255,158,159,160,255,157,158,159,255,157,158,159,255,155,156,157,255, -155,156,157,255,154,155,156,255,153,153,155,255,152,153,154,255,152,152,153,255,150,151,152,255,150,150,151,255,149,150,151,255, -148,148,149,255,147,147,148,255,146,146,147,255,144,145,146,255,144,144,145,255,143,143,144,255,141,141,142,255,140,139,140,255, -139,138,139,255,137,136,137,255,136,135,135,255,134,133,133,255,132,131,131,255,130,129,129,255,128,127,126,255,127,125,125,255, -124,123,122,255,122,120,119,255,120,118,117,255,118,115,113,255,116,114,111,255, 88, 87, 86,255, 61, 61, 61,255, 60, 60, 60,255, -127,128,130,255,188,191,194,255,187,190,193,255,187,190,193,255,187,190,192,255,186,189,192,255,186,188,192,255,186,188,191,255, -185,188,191,255,185,188,191,255,185,188,190,255,184,187,190,255,184,187,189,255,184,187,190,255,184,186,189,255,183,186,189,255, -183,185,188,255,183,185,188,255,182,184,186,255,173,174,176,255,166,167,167,255,164,163,164,255,163,163,164,255,165,166,167,255, -167,168,170,255,170,171,173,255,172,173,175,255,173,175,177,255,175,177,179,255,175,177,179,255,175,177,180,255,174,177,179,255, -175,177,178,255,174,177,179,255,174,176,178,255,173,175,177,255,172,174,176,255,171,173,175,255,170,172,173,255,170,171,172,255, -169,170,171,255,168,169,170,255,166,167,168,255,165,166,166,255,164,164,164,255,162,162,162,255,161,160,160,255,160,160,159,255, -160,159,158,255,160,160,159,255,160,159,158,255,160,160,159,255,161,160,160,255,163,164,164,255,165,166,167,255,163,164,165,255, -161,162,163,255,160,161,163,255,160,161,163,255,160,161,162,255,158,159,161,255,158,159,160,255,157,158,159,255,156,157,158,255, -155,156,157,255,154,155,157,255,153,154,156,255,153,153,155,255,152,153,154,255,151,152,153,255,150,151,152,255,150,150,151,255, -148,149,150,255,147,148,149,255,146,147,148,255,145,145,146,255,144,144,145,255,143,143,144,255,142,142,143,255,140,140,140,255, -138,138,139,255,137,137,137,255,136,136,136,255,135,133,133,255,133,132,132,255,131,130,130,255,129,128,127,255,127,126,125,255, -125,123,122,255,122,121,119,255,121,119,117,255,118,116,114,255,116,114,112,255, 89, 87, 86,255, 61, 61, 61,255, 60, 60, 60,255, -127,128,130,255,189,192,195,255,187,190,193,255,187,190,193,255,187,190,193,255,186,189,192,255,186,189,192,255,186,188,191,255, -186,188,191,255,185,188,191,255,185,188,190,255,185,187,190,255,184,187,190,255,184,187,190,255,184,186,189,255,183,186,189,255, -184,186,189,255,184,187,189,255,181,183,185,255,173,174,175,255,167,168,169,255,166,167,167,255,166,167,168,255,168,169,171,255, -171,173,174,255,173,175,176,255,175,177,179,255,176,178,180,255,176,179,181,255,176,179,181,255,176,178,181,255,175,177,180,255, -174,176,179,255,174,176,178,255,173,174,176,255,172,173,175,255,171,172,174,255,169,171,172,255,167,168,170,255,166,167,168,255, -165,166,167,255,164,165,165,255,162,163,163,255,161,161,161,255,160,159,159,255,160,159,158,255,160,158,157,255,160,159,158,255, -161,161,160,255,163,163,162,255,164,164,165,255,164,165,165,255,163,164,165,255,164,165,167,255,166,167,169,255,164,165,167,255, -163,164,165,255,161,162,163,255,160,162,163,255,160,161,162,255,159,160,161,255,158,159,161,255,157,159,160,255,156,157,159,255, -156,157,158,255,155,156,157,255,154,155,156,255,153,154,155,255,153,153,155,255,152,152,154,255,151,152,153,255,149,151,152,255, -149,149,150,255,148,148,149,255,146,147,148,255,146,146,147,255,145,145,146,255,143,143,144,255,142,142,143,255,141,141,141,255, -139,139,139,255,138,138,138,255,137,136,137,255,134,134,134,255,133,132,132,255,132,131,130,255,129,128,128,255,128,127,126,255, -125,124,123,255,123,121,120,255,120,119,118,255,119,117,114,255,117,114,112,255, 89, 88, 86,255, 61, 61, 61,255, 60, 60, 60,255, -128,129,131,255,190,193,196,255,189,192,194,255,188,191,194,255,188,191,194,255,188,191,193,255,187,190,193,255,187,190,193,255, -187,190,193,255,187,189,192,255,186,189,192,255,186,189,191,255,186,188,191,255,186,188,191,255,185,188,190,255,185,188,190,255, -185,188,191,255,186,188,191,255,182,183,186,255,173,174,175,255,170,170,171,255,169,170,171,255,169,170,171,255,171,173,174,255, -173,175,177,255,176,178,180,255,177,179,182,255,179,181,183,255,179,181,184,255,178,180,183,255,177,180,182,255,176,178,180,255, -175,176,178,255,173,175,177,255,171,173,175,255,170,172,173,255,167,169,170,255,166,167,169,255,163,165,166,255,162,162,163,255, -160,161,160,255,159,159,159,255,158,157,157,255,157,156,156,255,157,156,155,255,159,158,157,255,160,160,159,255,162,162,161,255, -165,165,166,255,168,169,170,255,169,170,172,255,168,169,171,255,165,166,168,255,164,165,167,255,164,165,166,255,163,164,166,255, -163,164,166,255,162,163,165,255,161,162,164,255,161,162,163,255,160,161,162,255,159,160,161,255,158,159,161,255,157,158,160,255, -157,158,159,255,156,157,158,255,155,156,157,255,154,155,156,255,154,154,156,255,152,153,154,255,152,152,153,255,151,152,153,255, -149,150,151,255,149,149,150,255,148,148,149,255,146,147,147,255,145,146,147,255,145,145,146,255,143,143,144,255,141,141,142,255, -140,140,141,255,138,138,139,255,137,137,137,255,135,135,135,255,133,133,133,255,132,131,131,255,129,128,128,255,128,127,126,255, -126,125,123,255,123,122,120,255,122,120,118,255,119,117,115,255,117,115,112,255, 89, 88, 86,255, 61, 61, 61,255, 60, 60, 60,255, -128,129,131,255,191,193,196,255,189,192,195,255,189,192,195,255,188,192,194,255,188,191,194,255,188,191,194,255,188,190,193,255, -187,190,193,255,187,190,193,255,187,190,192,255,186,189,192,255,186,189,191,255,185,189,192,255,185,188,191,255,185,188,191,255, -186,189,192,255,187,190,193,255,183,184,186,255,175,176,177,255,172,173,173,255,171,172,173,255,173,174,175,255,175,176,178,255, -177,179,180,255,179,181,183,255,180,182,185,255,180,183,185,255,180,182,185,255,179,181,184,255,178,180,182,255,176,178,181,255, -174,176,178,255,171,173,175,255,169,170,172,255,167,168,170,255,164,165,167,255,161,162,163,255,158,159,159,255,155,155,155,255, -153,153,153,255,153,152,151,255,153,152,151,255,155,154,152,255,159,158,157,255,165,164,164,255,167,167,167,255,167,168,169,255, -169,170,171,255,169,170,172,255,169,171,172,255,168,170,171,255,166,168,169,255,165,166,168,255,164,165,167,255,163,165,166,255, -163,165,166,255,162,164,165,255,162,163,164,255,161,162,164,255,160,161,163,255,159,161,162,255,159,160,161,255,158,159,160,255, -157,158,160,255,157,157,159,255,155,156,158,255,155,156,157,255,154,155,156,255,153,154,155,255,152,153,154,255,151,152,153,255, -150,151,152,255,149,150,151,255,148,149,150,255,147,147,148,255,146,146,147,255,144,145,145,255,144,143,144,255,142,142,142,255, -141,141,140,255,139,139,139,255,138,137,137,255,135,135,135,255,134,133,133,255,133,132,131,255,130,129,129,255,128,127,127,255, -126,125,124,255,124,122,121,255,121,120,118,255,119,117,115,255,118,115,113,255, 89, 88, 87,255, 61, 61, 61,255, 60, 60, 60,255, -129,130,131,255,191,194,197,255,189,192,195,255,189,192,195,255,189,192,195,255,188,191,194,255,188,191,194,255,188,190,193,255, -188,190,193,255,187,190,193,255,187,190,192,255,187,189,192,255,186,189,192,255,186,189,192,255,186,188,191,255,186,189,191,255, -187,190,193,255,188,191,194,255,184,186,188,255,177,178,180,255,175,176,176,255,175,176,177,255,176,177,178,255,179,180,182,255, -180,182,185,255,181,184,186,255,182,185,187,255,181,185,187,255,181,183,186,255,179,182,184,255,178,180,183,255,176,178,180,255, -173,175,176,255,169,171,173,255,166,168,169,255,163,164,166,255,160,161,162,255,156,155,157,255,151,150,151,255,148,147,145,255, -146,145,143,255,147,145,144,255,150,149,147,255,155,154,153,255,163,163,164,255,171,172,173,255,173,174,176,255,172,173,174,255, -169,171,173,255,168,170,171,255,168,170,171,255,167,169,170,255,166,168,169,255,166,167,169,255,164,166,167,255,164,166,167,255, -164,165,167,255,163,164,165,255,162,163,165,255,162,163,164,255,161,162,163,255,160,161,162,255,159,160,162,255,158,159,161,255, -158,159,160,255,157,158,159,255,156,157,158,255,155,156,158,255,154,155,157,255,153,154,155,255,153,153,155,255,151,152,154,255, -151,151,152,255,150,150,151,255,149,149,150,255,147,148,148,255,146,147,148,255,145,146,146,255,144,144,145,255,142,142,143,255, -140,140,141,255,139,139,140,255,138,138,138,255,135,135,135,255,135,134,134,255,133,132,132,255,130,129,129,255,129,128,127,255, -127,125,124,255,124,123,121,255,123,121,119,255,120,118,116,255,118,116,113,255, 89, 88, 87,255, 61, 61, 61,255, 60, 60, 60,255, -129,130,132,255,192,195,198,255,191,193,196,255,190,193,196,255,190,192,196,255,190,192,195,255,189,192,195,255,189,192,195,255, -188,192,195,255,189,191,194,255,188,191,194,255,187,190,193,255,188,190,193,255,187,190,192,255,186,190,193,255,186,189,193,255, -189,192,195,255,190,193,195,255,185,188,190,255,180,181,182,255,178,179,179,255,178,179,180,255,179,181,183,255,182,184,186,255, -184,186,188,255,185,187,190,255,184,187,190,255,183,186,189,255,181,184,187,255,180,182,185,255,178,180,182,255,175,177,179,255, -172,173,175,255,168,169,171,255,164,164,167,255,159,160,162,255,154,154,155,255,149,148,148,255,142,141,140,255,137,136,133,255, -137,134,132,255,140,138,135,255,147,146,145,255,157,157,158,255,167,168,169,255,172,173,175,255,172,174,176,255,172,173,175,255, -170,171,173,255,169,171,172,255,169,170,172,255,168,170,171,255,167,169,170,255,167,168,169,255,166,167,169,255,165,167,168,255, -165,166,167,255,163,165,166,255,163,164,166,255,162,164,165,255,161,162,164,255,161,162,163,255,160,161,163,255,159,160,161,255, -158,159,161,255,158,159,160,255,157,158,159,255,156,157,158,255,155,156,157,255,154,155,156,255,153,154,155,255,153,153,154,255, -151,152,153,255,150,151,152,255,149,150,151,255,148,148,149,255,147,147,148,255,146,146,147,255,144,144,145,255,143,143,143,255, -142,142,141,255,140,140,140,255,139,138,138,255,136,136,136,255,135,134,134,255,134,133,132,255,131,130,129,255,129,128,128,255, -127,126,125,255,125,123,121,255,123,121,120,255,120,118,116,255,118,116,114,255, 90, 88, 87,255, 61, 61, 61,255, 60, 60, 60,255, -129,130,132,255,192,195,198,255,190,193,196,255,190,194,197,255,191,193,196,255,190,193,196,255,190,193,196,255,190,192,195,255, -189,192,195,255,189,192,195,255,189,192,194,255,188,191,194,255,188,191,194,255,187,191,193,255,187,190,193,255,188,190,193,255, -190,192,195,255,192,194,197,255,188,189,192,255,181,182,184,255,180,181,182,255,180,182,183,255,183,185,186,255,185,187,189,255, -187,189,192,255,188,190,193,255,186,189,192,255,184,187,190,255,183,185,188,255,179,182,184,255,177,179,181,255,173,175,177,255, -169,172,173,255,165,167,168,255,161,162,163,255,155,155,157,255,149,149,149,255,142,140,140,255,133,132,130,255,127,124,122,255, -125,122,120,255,128,127,125,255,139,140,139,255,154,155,156,255,164,165,167,255,169,171,173,255,170,172,174,255,170,172,174,255, -169,172,173,255,169,171,173,255,169,171,172,255,169,170,171,255,167,169,171,255,167,168,170,255,166,167,169,255,166,167,169,255, -165,166,168,255,164,165,167,255,163,165,166,255,163,164,166,255,162,163,164,255,161,162,164,255,161,162,163,255,159,161,162,255, -159,160,161,255,158,159,160,255,157,158,159,255,156,157,159,255,156,157,158,255,154,155,156,255,154,154,156,255,153,154,155,255, -152,152,153,255,151,151,152,255,150,150,151,255,148,149,150,255,147,148,148,255,147,147,147,255,145,145,146,255,143,143,144,255, -142,141,142,255,140,140,140,255,139,139,139,255,137,136,136,255,135,135,134,255,134,133,132,255,131,130,130,255,130,128,128,255, -128,126,125,255,125,124,122,255,123,121,120,255,121,119,117,255,119,116,113,255, 90, 88, 87,255, 61, 61, 61,255, 60, 60, 60,255, -129,131,132,255,193,196,199,255,191,194,197,255,191,194,197,255,191,194,197,255,190,193,196,255,191,193,196,255,189,193,196,255, -189,193,196,255,189,193,196,255,189,191,194,255,188,191,194,255,188,191,194,255,188,190,193,255,187,190,193,255,188,191,194,255, -190,193,196,255,193,196,199,255,190,193,194,255,184,185,187,255,182,183,184,255,183,185,186,255,185,187,189,255,188,190,192,255, -189,192,195,255,189,192,195,255,188,191,194,255,186,189,192,255,183,185,188,255,180,182,184,255,176,178,180,255,172,174,176,255, -168,170,172,255,163,164,165,255,157,158,159,255,151,151,152,255,144,144,143,255,134,133,133,255,124,123,120,255,117,114,112,255, -113,110,108,255,114,112,110,255,124,123,123,255,139,138,139,255,151,152,153,255,160,162,163,255,165,166,168,255,168,169,171,255, -169,171,173,255,170,172,173,255,170,171,173,255,168,170,172,255,168,169,171,255,167,169,170,255,166,168,169,255,167,168,169,255, -166,167,168,255,164,166,167,255,164,165,166,255,163,165,166,255,162,163,165,255,161,163,164,255,161,162,164,255,160,161,162,255, -159,160,162,255,159,160,161,255,157,158,160,255,157,158,159,255,156,157,158,255,155,156,157,255,154,155,156,255,153,153,155,255, -152,153,154,255,151,152,153,255,149,151,152,255,149,149,150,255,148,148,149,255,146,146,148,255,145,145,146,255,144,144,144,255, -142,142,142,255,141,141,141,255,139,139,139,255,137,136,136,255,136,135,135,255,135,134,133,255,132,131,130,255,130,129,128,255, -128,127,126,255,126,124,123,255,124,122,119,255,121,119,117,255,119,117,114,255, 90, 89, 87,255, 61, 61, 61,255, 60, 60, 60,255, -130,131,133,255,194,196,200,255,192,195,198,255,192,194,198,255,192,195,198,255,191,194,197,255,191,194,197,255,191,194,197,255, -191,193,196,255,190,193,196,255,189,193,196,255,189,192,195,255,189,192,195,255,188,192,195,255,188,191,194,255,188,191,194,255, -191,192,195,255,194,197,200,255,193,195,198,255,187,189,190,255,185,186,188,255,185,187,188,255,188,189,191,255,190,192,195,255, -191,194,197,255,191,194,197,255,189,192,195,255,187,190,192,255,183,186,188,255,179,182,184,255,175,177,180,255,171,173,175,255, -166,168,169,255,160,161,163,255,154,154,155,255,147,147,148,255,139,139,138,255,129,128,127,255,119,116,114,255,109,106,104,255, -104,102, 99,255,105,103,101,255,110,108,107,255,119,118,118,255,131,131,131,255,142,142,143,255,150,151,152,255,158,159,160,255, -164,165,166,255,167,168,170,255,168,170,172,255,168,170,171,255,168,169,171,255,168,170,171,255,168,168,171,255,167,168,170,255, -166,168,169,255,165,166,168,255,164,166,167,255,164,165,167,255,163,164,165,255,162,163,165,255,162,163,164,255,161,162,163,255, -160,161,162,255,160,161,162,255,158,159,160,255,157,158,160,255,157,158,159,255,155,156,157,255,155,155,157,255,154,155,156,255, -153,153,154,255,152,152,153,255,151,151,152,255,149,150,150,255,148,149,149,255,148,148,148,255,146,146,146,255,144,144,145,255, -143,142,143,255,141,141,141,255,140,140,139,255,138,137,137,255,136,136,135,255,135,134,133,255,132,131,130,255,130,129,129,255, -128,127,126,255,126,125,123,255,124,123,121,255,122,119,117,255,119,117,115,255, 90, 89, 87,255, 61, 61, 61,255, 60, 60, 60,255, -130,131,133,255,194,197,200,255,193,195,199,255,193,195,199,255,192,195,198,255,191,194,198,255,192,194,198,255,191,194,197,255, -190,193,196,255,190,194,197,255,190,193,196,255,190,192,195,255,189,192,195,255,189,191,194,255,189,191,194,255,188,191,194,255, -190,193,196,255,194,197,200,255,195,197,200,255,190,191,193,255,187,189,190,255,187,189,190,255,190,192,194,255,192,194,196,255, -192,195,198,255,192,195,198,255,190,193,196,255,188,190,193,255,184,186,189,255,179,182,184,255,174,177,179,255,170,172,173,255, -164,165,167,255,158,159,160,255,151,151,152,255,143,143,144,255,135,135,135,255,126,124,124,255,115,113,112,255,107,104,102,255, -101, 98, 96,255,100, 97, 95,255,102,100, 98,255,107,105,104,255,116,114,113,255,123,123,123,255,131,131,131,255,140,140,141,255, -148,149,150,255,155,156,157,255,159,161,162,255,163,164,165,255,166,167,169,255,167,169,170,255,168,169,171,255,167,169,170,255, -167,168,170,255,165,167,168,255,165,166,168,255,164,166,167,255,163,164,166,255,163,164,165,255,162,163,165,255,161,162,163,255, -160,161,163,255,160,161,162,255,159,160,161,255,158,159,160,255,157,158,159,255,156,157,158,255,155,156,157,255,154,154,156,255, -153,154,155,255,152,152,153,255,150,152,153,255,150,150,151,255,149,149,150,255,148,147,149,255,146,146,147,255,144,144,145,255, -144,143,144,255,142,142,142,255,140,140,140,255,138,138,137,255,137,136,136,255,135,134,134,255,132,131,131,255,131,130,129,255, -129,127,126,255,126,125,123,255,124,123,121,255,122,120,118,255,120,117,115,255, 90, 89, 88,255, 61, 61, 61,255, 60, 60, 60,255, -130,132,133,255,195,198,201,255,192,195,198,255,192,195,198,255,193,196,199,255,192,195,199,255,192,195,198,255,191,195,197,255, -191,194,197,255,191,193,197,255,190,193,196,255,191,193,196,255,190,193,196,255,190,192,195,255,190,192,195,255,189,191,195,255, -190,193,196,255,193,196,199,255,196,199,202,255,193,194,196,255,190,191,192,255,190,191,193,255,192,194,197,255,194,196,199,255, -194,197,200,255,193,196,199,255,192,195,198,255,188,191,194,255,184,187,190,255,179,182,184,255,175,177,179,255,169,171,173,255, -163,164,166,255,156,157,158,255,149,149,150,255,141,141,142,255,133,132,132,255,124,123,123,255,115,113,112,255,107,105,103,255, -102, 99, 97,255,100, 97, 94,255,100, 97, 95,255,102,100, 98,255,106,104,103,255,111,109,108,255,116,114,114,255,122,121,121,255, -129,128,129,255,136,136,137,255,142,143,144,255,149,150,151,255,156,157,158,255,161,163,164,255,165,166,167,255,166,167,169,255, -166,168,169,255,165,168,168,255,166,167,169,255,165,166,168,255,164,165,166,255,163,164,166,255,163,164,165,255,161,162,164,255, -161,162,163,255,160,161,163,255,159,160,161,255,158,159,161,255,157,158,160,255,156,157,158,255,155,156,158,255,155,155,157,255, -153,154,155,255,152,153,154,255,151,152,153,255,150,150,151,255,149,150,150,255,147,148,149,255,146,147,147,255,145,145,145,255, -143,143,143,255,142,142,142,255,141,141,140,255,138,138,138,255,137,136,136,255,135,135,134,255,133,132,131,255,131,130,129,255, -129,128,127,255,127,125,124,255,125,123,121,255,122,120,118,255,120,117,115,255, 90, 89, 88,255, 61, 61, 61,255, 60, 60, 60,255, -130,132,133,255,195,198,201,255,194,197,200,255,193,197,200,255,193,196,199,255,192,196,199,255,193,196,199,255,193,195,199,255, -192,195,198,255,191,195,197,255,192,195,198,255,191,194,197,255,191,194,197,255,190,193,196,255,189,192,195,255,190,193,196,255, -190,193,196,255,193,196,199,255,197,201,204,255,196,198,200,255,192,193,194,255,192,193,194,255,194,196,198,255,196,198,201,255, -197,200,203,255,196,199,202,255,193,196,199,255,190,193,196,255,185,188,191,255,181,183,186,255,175,177,180,255,170,172,173,255, -163,164,166,255,156,157,158,255,148,149,150,255,141,141,142,255,133,132,133,255,124,123,124,255,116,115,114,255,109,108,107,255, -105,102,100,255,102, 99, 98,255,101, 98, 96,255,102, 99, 97,255,102,101, 98,255,106,104,102,255,108,106,105,255,111,110,109,255, -115,112,112,255,119,118,118,255,124,123,124,255,131,130,131,255,138,138,139,255,146,147,148,255,152,153,155,255,158,159,161,255, -162,164,165,255,165,166,168,255,165,167,168,255,166,167,168,255,164,165,167,255,164,165,167,255,163,164,166,255,162,163,165,255, -162,163,164,255,161,162,163,255,160,161,162,255,159,160,161,255,158,159,160,255,157,158,159,255,156,157,158,255,155,156,157,255, -154,154,155,255,153,153,154,255,152,153,154,255,150,151,152,255,150,150,151,255,149,149,149,255,147,147,147,255,145,145,146,255, -144,143,144,255,142,142,142,255,141,141,141,255,139,139,138,255,137,137,136,255,136,135,134,255,133,132,132,255,132,130,129,255, -130,128,127,255,127,126,124,255,125,123,121,255,122,120,118,255,120,118,115,255, 90, 89, 87,255, 61, 61, 61,255, 60, 60, 60,255, -131,132,134,255,195,198,202,255,193,197,200,255,193,196,200,255,194,197,199,255,193,196,200,255,193,196,199,255,192,196,198,255, -192,195,198,255,192,195,198,255,191,194,197,255,191,194,197,255,191,194,197,255,191,194,196,255,190,193,196,255,190,193,196,255, -190,193,195,255,192,196,199,255,197,200,204,255,199,202,204,255,194,196,198,255,193,194,196,255,195,197,198,255,197,199,202,255, -198,201,204,255,198,201,204,255,195,198,202,255,192,195,198,255,187,190,193,255,183,185,188,255,177,179,181,255,172,174,175,255, -165,166,167,255,157,158,160,255,150,151,152,255,143,144,144,255,136,135,136,255,128,127,128,255,121,120,119,255,115,114,113,255, -110,108,107,255,107,105,103,255,105,103,101,255,103,101, 99,255,103,101, 99,255,104,101, 99,255,104,101,100,255,105,102,101,255, -107,105,103,255,109,107,106,255,112,110,109,255,115,113,113,255,121,120,120,255,127,127,127,255,135,134,135,255,142,143,143,255, -150,151,152,255,157,158,160,255,162,163,165,255,164,165,167,255,165,166,167,255,164,165,167,255,164,165,166,255,162,163,165,255, -162,163,164,255,161,162,164,255,160,161,162,255,159,160,162,255,158,159,161,255,157,158,159,255,156,157,159,255,156,156,157,255, -154,155,156,255,153,154,155,255,152,153,154,255,151,151,152,255,150,150,151,255,149,148,150,255,147,147,148,255,146,146,146,255, -145,144,145,255,143,143,143,255,142,141,141,255,139,139,138,255,138,137,136,255,136,135,134,255,134,133,132,255,132,131,130,255, -130,128,127,255,127,126,124,255,125,124,121,255,122,120,118,255,120,118,114,255, 90, 89, 87,255, 61, 61, 61,255, 60, 60, 60,255, -131,132,134,255,196,199,202,255,194,197,200,255,194,198,200,255,193,197,200,255,194,197,199,255,194,197,200,255,193,196,199,255, -192,195,199,255,192,196,198,255,192,194,198,255,192,194,198,255,191,195,197,255,190,193,197,255,191,194,196,255,191,194,196,255, -189,192,196,255,191,194,197,255,195,199,202,255,201,203,206,255,197,200,201,255,194,196,197,255,196,198,199,255,198,200,203,255, -199,202,205,255,199,202,205,255,198,201,204,255,194,198,201,255,190,193,196,255,185,187,190,255,180,182,184,255,175,177,178,255, -168,169,171,255,161,162,163,255,154,155,156,255,147,148,150,255,141,142,142,255,134,134,135,255,128,127,127,255,121,120,120,255, -116,115,115,255,113,112,111,255,110,108,107,255,108,106,104,255,105,104,103,255,105,103,101,255,104,102,100,255,104,101,100,255, -105,103,101,255,105,103,101,255,106,104,102,255,106,104,103,255,109,107,106,255,112,111,110,255,118,117,116,255,124,124,123,255, -133,132,133,255,141,142,143,255,151,152,153,255,157,158,160,255,162,163,164,255,163,164,166,255,164,165,167,255,162,164,165,255, -163,163,165,255,162,163,164,255,160,161,163,255,160,161,162,255,159,160,161,255,157,158,160,255,157,158,159,255,156,157,158,255, -154,155,156,255,154,154,155,255,153,152,154,255,151,152,152,255,150,151,152,255,148,149,149,255,148,148,148,255,146,146,147,255, -144,144,144,255,143,143,143,255,142,142,141,255,139,139,139,255,138,138,137,255,136,135,135,255,134,133,132,255,133,131,130,255, -130,129,127,255,127,126,124,255,126,124,122,255,122,120,118,255,120,118,114,255, 90, 89, 87,255, 61, 61, 61,255, 60, 60, 60,255, -131,133,134,255,196,200,203,255,195,198,201,255,194,198,201,255,195,198,200,255,194,197,200,255,194,197,200,255,193,196,200,255, -193,196,200,255,193,196,199,255,192,196,198,255,193,196,199,255,192,195,198,255,192,195,197,255,191,194,197,255,191,194,197,255, -191,194,196,255,191,194,197,255,194,197,200,255,199,202,205,255,200,203,205,255,196,198,200,255,196,198,200,255,198,200,203,255, -200,203,206,255,201,204,207,255,199,202,206,255,197,200,203,255,193,196,200,255,188,191,194,255,183,185,188,255,178,180,182,255, -172,174,175,255,165,166,168,255,159,160,162,255,153,154,155,255,147,147,149,255,141,142,142,255,134,135,135,255,129,129,129,255, -124,123,123,255,120,119,119,255,116,115,115,255,113,111,111,255,111,109,108,255,109,107,106,255,107,105,104,255,106,104,103,255, -106,104,102,255,104,102,100,255,103,101, 99,255,103,101, 99,255,104,102,100,255,105,103,101,255,107,105,104,255,111,109,108,255, -116,114,114,255,124,123,122,255,133,133,133,255,144,145,145,255,152,153,154,255,158,159,160,255,161,162,164,255,162,164,165,255, -162,164,165,255,162,163,165,255,161,162,163,255,160,161,163,255,159,160,162,255,158,159,160,255,157,158,159,255,156,157,158,255, -155,155,157,255,154,155,156,255,153,154,155,255,152,152,153,255,151,151,152,255,150,149,151,255,148,148,149,255,146,147,147,255, -145,145,146,255,144,143,143,255,142,142,142,255,140,139,139,255,138,138,137,255,136,135,135,255,134,133,132,255,133,131,130,255, -130,129,127,255,127,126,124,255,126,124,122,255,123,120,118,255,120,117,114,255, 90, 89, 87,255, 61, 61, 61,255, 60, 60, 60,255, -131,133,135,255,197,200,203,255,195,198,201,255,195,198,202,255,194,197,201,255,194,197,200,255,194,197,201,255,193,196,201,255, -193,196,200,255,194,197,200,255,193,196,199,255,192,195,199,255,193,196,198,255,192,195,198,255,191,194,197,255,191,194,197,255, -191,194,197,255,190,193,196,255,192,195,198,255,196,199,203,255,201,204,207,255,200,202,204,255,197,199,200,255,199,200,203,255, -201,203,206,255,201,205,208,255,201,204,208,255,199,202,205,255,195,199,202,255,191,194,197,255,186,189,192,255,182,184,187,255, -176,178,180,255,169,172,174,255,164,165,167,255,159,160,161,255,153,154,155,255,148,148,149,255,142,142,143,255,136,136,137,255, -132,131,132,255,128,127,128,255,124,123,123,255,120,119,119,255,117,116,115,255,115,114,113,255,113,111,110,255,111,108,107,255, -108,106,105,255,107,105,104,255,105,103,101,255,105,102,101,255,104,101, 99,255,102,100, 98,255,102, 99, 97,255,103,100, 99,255, -105,103,102,255,110,107,106,255,116,115,113,255,125,125,124,255,136,135,136,255,145,146,147,255,154,155,157,255,159,160,162,255, -162,163,164,255,162,163,165,255,161,162,163,255,160,161,163,255,160,161,162,255,158,159,160,255,157,158,160,255,157,157,159,255, -155,156,157,255,154,155,156,255,154,153,154,255,152,152,153,255,151,151,152,255,150,150,151,255,148,149,149,255,147,147,147,255, -146,146,145,255,144,144,144,255,143,142,142,255,140,140,139,255,139,138,138,255,137,136,135,255,134,133,132,255,132,131,130,255, -130,129,127,255,128,126,124,255,126,123,121,255,122,120,117,255,120,116,115,255, 90, 89, 87,255, 61, 61, 61,255, 60, 60, 60,255, -132,133,135,255,197,201,204,255,195,199,202,255,195,198,202,255,195,198,201,255,195,198,201,255,194,197,201,255,194,197,200,255, -194,197,201,255,193,197,200,255,194,197,199,255,193,196,199,255,192,195,200,255,193,196,198,255,192,195,198,255,191,194,197,255, -192,195,198,255,191,194,197,255,191,194,197,255,194,197,200,255,199,202,205,255,203,205,208,255,199,200,202,255,198,200,201,255, -201,203,205,255,203,205,208,255,202,206,209,255,201,204,208,255,198,201,205,255,195,198,201,255,190,193,196,255,186,188,191,255, -180,182,185,255,175,177,179,255,169,171,172,255,164,166,167,255,160,161,162,255,154,155,156,255,149,150,151,255,144,145,146,255, -139,139,140,255,135,135,136,255,131,131,132,255,128,127,128,255,124,123,123,255,121,120,120,255,119,118,117,255,116,114,113,255, -113,111,110,255,111,109,108,255,109,107,106,255,107,105,104,255,106,103,102,255,103,101, 99,255,101, 98, 96,255,100, 97, 95,255, -101, 98, 96,255,102, 99, 97,255,105,102,100,255,110,108,107,255,118,117,116,255,128,127,127,255,140,140,141,255,150,151,152,255, -158,159,160,255,161,161,163,255,161,163,164,255,161,162,163,255,160,161,163,255,158,159,161,255,158,159,160,255,157,158,159,255, -155,156,157,255,155,155,156,255,154,154,155,255,152,153,154,255,151,152,152,255,149,151,150,255,149,149,149,255,147,147,147,255, -145,145,145,255,144,144,144,255,143,143,142,255,140,140,139,255,139,138,138,255,137,136,135,255,134,133,132,255,132,131,130,255, -130,129,127,255,128,126,124,255,126,123,121,255,122,120,117,255,120,116,113,255, 90, 88, 87,255, 61, 61, 61,255, 60, 60, 60,255, -132,133,135,255,198,201,204,255,197,200,202,255,196,199,203,255,195,199,203,255,196,198,202,255,195,198,202,255,194,198,201,255, -194,197,201,255,195,198,201,255,194,197,201,255,194,197,200,255,193,196,199,255,192,195,200,255,193,196,199,255,192,195,199,255, -191,194,198,255,192,195,197,255,192,195,197,255,191,194,198,255,195,198,201,255,201,204,207,255,202,205,206,255,199,201,202,255, -200,202,203,255,202,204,207,255,203,206,209,255,203,206,209,255,201,204,208,255,198,201,204,255,194,197,200,255,190,192,195,255, -185,187,190,255,179,182,184,255,175,177,179,255,170,172,174,255,165,167,168,255,160,162,163,255,156,157,158,255,151,152,154,255, -147,147,148,255,143,143,144,255,139,139,140,255,135,135,136,255,132,132,132,255,129,128,128,255,125,125,125,255,123,122,121,255, -119,118,118,255,116,115,115,255,114,112,112,255,112,111,110,255,109,108,106,255,106,104,102,255,103,101, 99,255,101, 98, 96,255, -100, 97, 95,255, 99, 96, 94,255, 99, 96, 94,255,102, 99, 96,255,105,103,101,255,111,110,109,255,122,120,120,255,134,134,134,255, -147,147,148,255,155,156,158,255,160,161,163,255,161,162,164,255,160,161,163,255,159,160,161,255,158,159,160,255,157,158,159,255, -156,157,158,255,155,156,157,255,154,155,156,255,152,153,154,255,152,152,153,255,151,151,152,255,149,149,150,255,147,147,147,255, -146,146,146,255,144,144,144,255,143,142,142,255,141,140,139,255,139,138,138,255,137,136,135,255,135,134,133,255,133,132,130,255, -130,129,127,255,128,126,124,255,126,124,121,255,122,120,117,255,119,116,113,255, 90, 88, 86,255, 61, 61, 61,255, 60, 60, 60,255, -132,134,135,255,198,201,204,255,197,199,203,255,197,200,203,255,196,200,202,255,196,199,202,255,195,198,202,255,195,199,201,255, -195,198,201,255,194,197,201,255,195,198,200,255,194,197,200,255,194,197,200,255,193,196,199,255,193,196,199,255,193,196,199,255, -192,195,199,255,191,194,198,255,192,195,198,255,192,195,197,255,192,195,199,255,197,200,204,255,202,205,208,255,202,204,206,255, -199,201,202,255,201,202,204,255,203,205,208,255,204,206,210,255,203,206,209,255,200,204,207,255,197,200,204,255,194,197,200,255, -190,192,195,255,185,188,190,255,180,182,185,255,175,178,180,255,171,173,175,255,167,169,170,255,162,164,166,255,158,160,161,255, -154,156,157,255,151,152,153,255,147,147,148,255,143,143,144,255,139,139,140,255,136,136,137,255,133,133,133,255,130,129,129,255, -126,125,126,255,123,122,122,255,120,118,118,255,117,116,116,255,114,113,112,255,111,109,108,255,107,105,104,255,104,101, 99,255, -101, 98, 96,255,100, 97, 95,255, 99, 96, 93,255, 98, 94, 92,255, 99, 95, 93,255,101, 98, 96,255,106,105,102,255,116,114,114,255, -129,128,128,255,143,144,145,255,155,155,156,255,159,160,162,255,161,162,163,255,159,160,162,255,159,159,161,255,158,158,160,255, -156,157,158,255,155,156,157,255,155,155,156,255,153,153,154,255,152,152,153,255,151,150,152,255,149,149,150,255,148,148,148,255, -147,147,147,255,145,145,144,255,143,142,142,255,141,140,140,255,140,139,138,255,137,136,135,255,135,134,133,255,133,132,130,255, -130,129,127,255,128,126,124,255,125,123,121,255,122,119,117,255,119,115,112,255, 90, 87, 86,255, 61, 61, 61,255, 60, 60, 60,255, -132,134,135,255,199,202,205,255,196,200,204,255,196,199,204,255,197,199,203,255,197,199,203,255,196,200,202,255,195,199,203,255, -196,199,201,255,195,198,202,255,194,197,202,255,195,198,200,255,194,197,201,255,193,196,200,255,194,197,200,255,193,196,200,255, -193,196,198,255,192,195,199,255,191,194,198,255,191,194,197,255,191,194,198,255,194,197,200,255,198,201,205,255,203,205,209,255, -201,203,205,255,200,202,202,255,201,203,205,255,203,206,208,255,204,207,210,255,203,206,209,255,200,203,207,255,197,200,204,255, -194,197,200,255,190,193,196,255,186,188,191,255,181,184,186,255,177,179,181,255,173,175,177,255,169,171,173,255,165,167,168,255, -162,163,165,255,158,159,161,255,154,156,157,255,151,152,153,255,146,147,148,255,143,143,144,255,140,141,141,255,137,137,137,255, -133,133,134,255,130,130,130,255,127,126,126,255,123,122,122,255,120,119,119,255,116,114,114,255,112,110,110,255,108,106,105,255, -105,102,101,255,102, 99, 97,255,100, 97, 95,255, 99, 95, 92,255, 97, 93, 90,255, 97, 93, 90,255, 98, 95, 92,255,104,101, 98,255, -112,110,108,255,126,125,125,255,141,141,142,255,153,154,154,255,158,159,160,255,160,161,162,255,159,160,161,255,158,159,160,255, -156,157,158,255,156,156,157,255,155,155,156,255,153,153,154,255,152,153,153,255,151,152,152,255,149,150,150,255,148,148,148,255, -146,146,146,255,145,145,145,255,143,143,142,255,141,140,140,255,140,139,138,255,137,136,135,255,135,133,132,255,133,132,130,255, -130,129,127,255,127,126,124,255,125,123,120,255,122,119,116,255,119,114,111,255, 89, 87, 85,255, 61, 61, 61,255, 60, 60, 60,255, -132,134,136,255,199,202,206,255,198,200,204,255,197,201,203,255,196,200,204,255,196,199,203,255,197,199,203,255,196,200,202,255, -196,199,202,255,196,199,202,255,195,198,201,255,194,197,201,255,195,198,201,255,194,197,201,255,193,196,200,255,194,197,199,255, -193,196,200,255,193,196,199,255,192,195,199,255,192,195,198,255,191,194,197,255,192,195,198,255,194,197,200,255,199,202,205,255, -203,206,209,255,202,203,205,255,200,202,203,255,202,203,205,255,203,205,208,255,204,207,210,255,203,206,209,255,200,203,207,255, -197,200,204,255,194,197,201,255,191,193,196,255,187,189,192,255,182,185,188,255,179,181,183,255,175,177,179,255,171,173,175,255, -167,170,171,255,165,166,167,255,161,162,164,255,158,159,160,255,154,156,157,255,151,152,153,255,148,149,150,255,144,145,146,255, -141,141,142,255,137,137,138,255,134,134,134,255,130,130,131,255,127,126,126,255,123,122,122,255,118,117,117,255,114,112,112,255, -110,108,107,255,106,103,102,255,104,101, 98,255,101, 97, 95,255, 97, 94, 92,255, 96, 92, 89,255, 96, 92, 88,255, 96, 93, 90,255, -100, 98, 95,255,110,107,106,255,125,124,123,255,140,140,141,255,152,153,153,255,158,158,160,255,159,160,161,255,158,159,160,255, -157,158,159,255,156,157,158,255,155,156,156,255,153,154,155,255,152,153,153,255,152,152,152,255,150,150,150,255,148,148,148,255, -146,146,146,255,145,145,145,255,143,143,142,255,141,141,140,255,140,139,138,255,138,136,135,255,135,133,132,255,133,132,130,255, -131,129,127,255,127,125,123,255,125,123,120,255,121,118,115,255,117,114,110,255, 89, 87, 84,255, 61, 61, 61,255, 60, 60, 60,255, -133,134,136,255,199,202,206,255,197,201,204,255,198,200,204,255,197,201,203,255,197,200,204,255,196,199,203,255,197,199,203,255, -196,199,202,255,196,199,202,255,196,199,201,255,195,198,202,255,195,198,201,255,195,198,200,255,194,197,200,255,193,196,200,255, -194,197,199,255,193,196,199,255,192,195,199,255,193,196,199,255,192,195,198,255,191,194,197,255,192,195,198,255,194,197,201,255, -198,202,205,255,203,205,208,255,202,204,206,255,200,201,202,255,201,203,205,255,203,205,207,255,204,206,209,255,202,205,208,255, -200,203,207,255,198,201,204,255,195,198,201,255,192,195,198,255,189,191,194,255,185,187,190,255,181,183,186,255,177,179,181,255, -174,176,178,255,171,173,175,255,168,169,171,255,164,166,168,255,161,163,164,255,158,160,161,255,155,156,158,255,152,153,153,255, -148,149,150,255,145,146,147,255,141,141,142,255,138,138,138,255,134,134,134,255,130,129,130,255,126,125,125,255,121,120,120,255, -116,115,114,255,112,110,109,255,108,106,104,255,104,102, 99,255,100, 97, 95,255, 98, 94, 91,255, 95, 92, 88,255, 94, 90, 86,255, - 94, 91, 87,255, 99, 96, 93,255,110,108,105,255,124,123,122,255,141,140,141,255,153,154,155,255,158,159,160,255,159,159,161,255, -157,158,159,255,156,157,158,255,154,156,157,255,154,154,155,255,153,153,154,255,152,152,151,255,150,150,150,255,148,148,148,255, -146,146,146,255,145,145,145,255,144,143,142,255,141,141,140,255,140,139,138,255,138,137,136,255,135,134,132,255,133,131,130,255, -130,128,126,255,127,125,123,255,125,122,119,255,121,118,115,255,117,113,109,255, 89, 86, 84,255, 61, 61, 61,255, 60, 60, 60,255, -133,134,136,255,200,203,207,255,199,202,204,255,198,202,204,255,197,201,205,255,198,201,203,255,197,200,203,255,196,200,203,255, -196,200,203,255,197,200,202,255,196,199,203,255,195,198,201,255,196,199,201,255,195,198,202,255,195,198,200,255,194,197,201,255, -193,196,200,255,194,197,199,255,193,196,200,255,192,195,198,255,193,196,199,255,192,195,198,255,191,194,197,255,192,195,198,255, -193,196,200,255,198,201,204,255,202,205,208,255,202,204,206,255,199,201,202,255,201,202,203,255,202,204,206,255,203,206,209,255, -202,205,208,255,201,204,207,255,198,201,204,255,195,198,202,255,194,196,200,255,190,193,196,255,187,190,192,255,184,186,189,255, -180,182,185,255,177,179,181,255,174,176,178,255,171,173,175,255,168,170,171,255,166,167,169,255,163,164,165,255,159,160,162,255, -156,157,158,255,152,153,154,255,148,150,151,255,145,145,146,255,141,141,142,255,137,137,138,255,133,132,133,255,128,128,128,255, -124,123,123,255,118,117,117,255,113,112,111,255,109,107,106,255,105,102,100,255,101, 98, 95,255, 97, 94, 91,255, 94, 90, 87,255, - 93, 89, 85,255, 94, 90, 85,255, 99, 96, 92,255,109,106,104,255,125,124,123,255,144,144,144,255,154,155,155,255,157,158,159,255, -157,158,159,255,156,157,158,255,156,156,157,255,154,154,155,255,153,153,154,255,152,152,153,255,150,150,151,255,148,148,148,255, -147,146,146,255,146,145,145,255,144,143,143,255,142,141,140,255,140,139,138,255,137,136,135,255,135,134,132,255,133,131,130,255, -130,128,126,255,127,125,122,255,124,122,119,255,120,117,113,255,113,110,104,255, 74, 72, 71,255, 61, 61, 61,255, 60, 60, 60,255, -133,135,136,255,200,203,207,255,198,202,205,255,199,201,205,255,198,202,204,255,198,201,204,255,198,201,204,255,197,201,203,255, -196,200,204,255,196,200,203,255,197,200,202,255,196,199,202,255,195,198,202,255,196,199,201,255,195,198,201,255,195,198,201,255, -194,197,201,255,193,196,200,255,194,197,200,255,193,196,200,255,192,195,198,255,193,195,199,255,191,194,198,255,191,194,197,255, -192,195,198,255,193,196,199,255,196,199,202,255,201,203,206,255,202,204,206,255,200,202,202,255,200,202,202,255,201,203,205,255, -202,205,207,255,202,205,207,255,201,204,206,255,199,202,205,255,196,200,202,255,194,197,200,255,193,195,198,255,189,192,194,255, -186,189,192,255,183,185,187,255,180,182,184,255,177,179,181,255,175,176,178,255,172,174,175,255,169,171,172,255,166,167,168,255, -163,164,166,255,159,161,162,255,156,157,158,255,152,154,155,255,148,149,150,255,144,145,146,255,140,140,141,255,136,136,136,255, -131,131,131,255,126,125,125,255,120,119,119,255,115,114,113,255,110,109,108,255,106,104,101,255,101, 99, 96,255, 98, 94, 90,255, - 94, 90, 86,255, 92, 88, 83,255, 95, 90, 86,255, 99, 95, 91,255,110,108,105,255,129,128,128,255,147,147,147,255,156,157,157,255, -157,158,159,255,157,157,158,255,156,155,157,255,154,154,155,255,153,153,154,255,151,152,153,255,150,150,151,255,149,148,148,255, -147,146,146,255,146,145,145,255,144,143,143,255,142,141,140,255,140,139,138,255,137,136,135,255,135,134,132,255,133,131,130,255, -130,128,126,255,127,124,122,255,123,121,117,255,119,115,111,255,104, 99, 94,255, 37, 36, 36,255, 61, 61, 61,255, 60, 60, 60,255, -133,135,136,255,201,204,207,255,199,203,206,255,198,202,205,255,199,201,205,255,198,201,204,255,198,201,204,255,198,200,203,255, -197,201,204,255,196,200,204,255,196,199,203,255,196,199,202,255,196,199,202,255,195,198,201,255,195,198,202,255,195,198,201,255, -195,198,200,255,194,197,201,255,193,196,200,255,194,197,199,255,193,196,199,255,192,196,198,255,192,195,198,255,191,195,197,255, -192,194,198,255,191,194,197,255,191,194,197,255,194,197,200,255,198,201,204,255,201,204,206,255,201,202,204,255,199,200,200,255, -199,201,201,255,201,203,204,255,202,204,206,255,200,204,206,255,199,202,205,255,198,200,203,255,195,198,201,255,194,197,200,255, -191,194,197,255,189,191,194,255,185,188,191,255,183,185,188,255,180,182,185,255,177,179,181,255,175,177,179,255,173,174,176,255, -169,171,173,255,166,168,169,255,163,164,166,255,160,161,163,255,156,156,158,255,152,153,154,255,147,148,149,255,143,143,145,255, -139,139,140,255,134,133,133,255,128,127,128,255,123,122,121,255,116,115,115,255,111,110,108,255,106,104,102,255,102, 99, 96,255, - 97, 94, 90,255, 94, 89, 85,255, 93, 88, 84,255, 93, 88, 84,255, 99, 96, 92,255,115,112,111,255,136,136,135,255,151,152,152,255, -157,157,158,255,157,157,158,255,156,156,157,255,154,155,155,255,153,154,154,255,152,153,153,255,150,150,150,255,149,149,149,255, -147,147,146,255,145,145,144,255,144,143,143,255,142,141,140,255,140,139,138,255,137,136,135,255,135,134,132,255,132,131,129,255, -129,127,125,255,126,124,120,255,123,119,116,255,119,115,110,255, 53, 51, 48,255, 25, 25, 25,255, 62, 62, 62,255, 60, 60, 60,255, -133,135,137,255,201,204,207,255,200,202,205,255,200,203,205,255,199,202,205,255,198,202,205,255,199,202,204,255,198,201,205,255, -198,200,203,255,198,200,204,255,197,201,203,255,196,199,203,255,197,200,202,255,196,199,203,255,195,198,201,255,196,199,202,255, -195,198,202,255,195,198,200,255,195,197,201,255,194,197,200,255,194,196,200,255,193,195,199,255,193,195,199,255,192,194,198,255, -192,195,198,255,190,193,196,255,190,193,196,255,190,193,196,255,193,196,199,255,196,199,202,255,199,202,204,255,199,202,204,255, -198,200,201,255,198,199,199,255,199,201,202,255,200,202,203,255,200,202,204,255,199,201,204,255,198,201,203,255,197,200,203,255, -195,197,200,255,193,196,199,255,191,194,197,255,189,191,194,255,186,188,191,255,184,186,188,255,181,183,185,255,178,180,182,255, -176,178,179,255,173,175,176,255,170,171,173,255,167,168,170,255,163,165,166,255,159,160,162,255,155,156,157,255,150,151,152,255, -145,146,147,255,141,141,141,255,136,136,136,255,131,130,130,255,124,123,123,255,118,116,116,255,112,110,109,255,106,104,102,255, -102, 99, 96,255, 97, 93, 89,255, 93, 89, 84,255, 91, 87, 82,255, 94, 89, 84,255,103,100, 95,255,124,121,120,255,142,142,142,255, -154,154,155,255,157,158,158,255,156,157,157,255,154,155,155,255,154,154,154,255,153,153,153,255,150,150,150,255,149,149,149,255, -147,147,146,255,145,145,144,255,144,143,143,255,141,140,140,255,140,139,138,255,137,136,135,255,134,133,131,255,132,130,128,255, -129,127,124,255,125,122,119,255,122,118,114,255,106,102, 97,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 60, 60, 60,255, -133,135,137,255,201,204,208,255,200,202,206,255,199,202,206,255,200,203,205,255,199,202,206,255,198,202,205,255,199,202,204,255, -198,201,205,255,197,200,204,255,198,200,204,255,197,200,204,255,196,200,203,255,197,200,202,255,196,199,203,255,195,198,202,255, -196,199,201,255,194,197,201,255,194,198,200,255,195,196,201,255,193,197,200,255,193,196,200,255,192,195,198,255,193,195,199,255, -192,195,198,255,192,194,198,255,191,193,197,255,191,194,197,255,190,193,196,255,191,194,197,255,192,195,199,255,195,198,201,255, -199,201,204,255,200,201,203,255,198,199,199,255,197,198,199,255,198,199,200,255,198,201,201,255,199,201,203,255,198,201,203,255, -198,199,203,255,196,198,201,255,194,197,200,255,193,195,198,255,191,193,196,255,189,191,194,255,187,188,192,255,184,186,188,255, -181,183,185,255,178,180,183,255,176,178,180,255,173,174,176,255,170,171,173,255,166,167,169,255,161,163,164,255,157,158,160,255, -152,153,155,255,148,148,149,255,143,143,144,255,137,138,138,255,132,131,131,255,125,124,124,255,119,117,116,255,112,111,109,255, -107,104,102,255,101, 97, 95,255, 96, 92, 88,255, 93, 87, 82,255, 91, 87, 80,255, 96, 91, 86,255,110,107,105,255,132,131,130,255, -151,151,151,255,156,156,157,255,156,157,157,255,155,155,156,255,154,154,154,255,152,152,153,255,150,150,150,255,149,149,149,255, -147,147,146,255,145,145,145,255,144,143,143,255,141,140,139,255,140,139,137,255,137,136,134,255,134,133,131,255,132,130,127,255, -128,126,123,255,124,121,118,255,119,115,110,255, 36, 34, 32,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 60, 60, 60,255, -134,135,137,255,202,205,208,255,199,203,207,255,199,202,206,255,199,202,206,255,199,203,205,255,199,202,206,255,198,201,205,255, -198,202,204,255,198,201,205,255,197,200,203,255,197,201,204,255,197,200,204,255,196,199,203,255,196,199,202,255,195,199,203,255, -195,198,201,255,195,198,201,255,194,197,201,255,194,197,201,255,194,197,200,255,194,197,200,255,193,195,199,255,192,196,198,255, -192,195,199,255,191,194,197,255,191,194,197,255,190,193,196,255,191,193,196,255,190,192,195,255,190,193,196,255,190,193,196,255, -192,195,198,255,195,198,201,255,196,199,201,255,197,199,201,255,197,199,200,255,196,197,197,255,197,197,197,255,197,198,199,255, -198,199,201,255,197,200,202,255,196,199,202,255,196,198,200,255,194,197,199,255,193,195,198,255,191,193,196,255,189,191,194,255, -186,189,191,255,184,186,189,255,181,184,186,255,178,180,182,255,176,178,180,255,172,174,176,255,169,170,172,255,164,165,167,255, -160,161,162,255,155,156,157,255,150,150,151,255,145,145,146,255,139,139,139,255,133,133,133,255,126,125,125,255,118,117,116,255, -112,110,108,255,105,103,100,255,100, 96, 93,255, 95, 90, 85,255, 91, 87, 81,255, 92, 86, 80,255,100, 97, 92,255,121,120,118,255, -145,145,144,255,154,154,155,255,157,157,158,255,155,155,156,255,154,154,155,255,151,151,153,255,150,150,150,255,149,149,149,255, -147,146,146,255,146,145,144,255,144,143,142,255,141,140,139,255,139,138,137,255,136,135,134,255,134,132,129,255,131,129,126,255, -127,125,122,255,124,120,116,255, 88, 86, 82,255, 4, 4, 4,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -134,135,137,255,202,205,208,255,201,204,207,255,200,204,206,255,199,203,206,255,199,202,206,255,200,202,205,255,199,203,205,255, -198,201,205,255,199,202,204,255,198,201,205,255,197,200,203,255,198,201,203,255,197,200,204,255,197,200,202,255,196,199,202,255, -195,198,203,255,196,199,201,255,195,198,202,255,194,197,201,255,195,198,201,255,194,197,200,255,194,196,200,255,193,195,199,255, -192,196,198,255,192,195,198,255,191,195,197,255,191,194,197,255,191,194,197,255,190,193,196,255,189,193,195,255,189,191,195,255, -189,191,195,255,189,192,195,255,190,193,196,255,192,195,198,255,196,198,201,255,196,199,202,255,196,197,199,255,194,196,196,255, -195,196,195,255,195,197,196,255,196,198,198,255,196,198,200,255,196,198,201,255,196,198,200,255,194,196,199,255,193,195,198,255, -191,194,197,255,189,192,194,255,187,189,191,255,185,187,189,255,181,183,186,255,178,180,182,255,175,177,179,255,171,172,174,255, -167,168,170,255,161,163,165,255,157,158,159,255,152,153,154,255,146,146,147,255,140,140,140,255,133,133,133,255,126,125,124,255, -118,117,115,255,112,110,108,255,105,102, 98,255, 98, 94, 90,255, 94, 89, 83,255, 91, 86, 79,255, 94, 90, 84,255,113,109,107,255, -138,136,136,255,152,151,152,255,155,155,156,255,155,155,156,255,154,154,155,255,152,152,153,255,151,150,150,255,150,149,149,255, -147,146,146,255,146,145,144,255,144,143,142,255,141,140,139,255,139,138,136,255,136,134,132,255,133,131,129,255,130,127,124,255, -126,123,119,255,119,115,110,255, 38, 36, 34,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -134,135,137,255,202,205,209,255,201,203,207,255,201,203,207,255,200,204,206,255,199,203,207,255,199,203,206,255,200,202,205,255, -199,202,206,255,198,201,205,255,199,202,205,255,198,201,204,255,197,200,204,255,198,201,203,255,196,199,203,255,197,200,203,255, -196,199,203,255,195,198,202,255,196,199,201,255,195,198,202,255,194,197,200,255,194,197,201,255,193,196,199,255,193,196,200,255, -193,196,199,255,192,196,198,255,192,195,198,255,192,195,198,255,191,193,197,255,191,193,197,255,190,193,196,255,189,192,195,255, -189,191,195,255,188,191,194,255,188,190,193,255,188,191,194,255,189,192,195,255,190,193,196,255,191,194,197,255,193,195,198,255, -195,197,198,255,195,197,197,255,195,196,196,255,195,196,196,255,196,197,197,255,196,198,199,255,196,198,199,255,196,198,200,255, -194,197,199,255,194,195,198,255,191,194,196,255,190,192,195,255,187,189,192,255,184,186,188,255,181,183,185,255,177,178,180,255, -173,174,176,255,168,170,172,255,164,165,167,255,158,160,161,255,153,153,154,255,147,147,148,255,141,141,141,255,133,132,133,255, -125,124,123,255,117,115,115,255,110,107,105,255,102, 99, 96,255, 97, 92, 87,255, 91, 87, 81,255, 92, 87, 80,255,105,102, 98,255, -131,130,128,255,150,150,151,255,157,156,158,255,155,156,156,255,154,154,154,255,153,153,153,255,151,151,151,255,149,148,148,255, -147,146,147,255,146,145,144,255,144,143,141,255,141,140,138,255,139,137,135,255,136,134,132,255,132,130,128,255,128,126,123,255, -126,123,118,255, 81, 78, 75,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -134,136,137,255,203,206,209,255,200,204,208,255,201,203,207,255,201,203,206,255,200,204,207,255,199,203,207,255,199,203,206,255, -199,202,205,255,198,201,206,255,198,201,205,255,198,201,205,255,198,201,204,255,197,200,204,255,197,200,203,255,197,200,203,255, -196,199,203,255,196,199,202,255,196,199,202,255,195,198,202,255,194,197,201,255,195,198,200,255,194,196,200,255,193,197,199,255, -193,196,199,255,192,196,198,255,192,195,198,255,191,194,197,255,191,194,197,255,190,194,196,255,191,193,196,255,189,193,196,255, -189,192,195,255,189,192,195,255,188,190,193,255,187,191,194,255,188,190,193,255,187,189,192,255,187,189,192,255,188,190,193,255, -190,192,195,255,192,194,197,255,193,195,198,255,195,197,199,255,196,197,197,255,195,197,196,255,196,197,197,255,197,198,198,255, -196,198,200,255,196,198,200,255,195,197,200,255,194,196,199,255,192,194,197,255,189,192,194,255,186,188,191,255,183,185,187,255, -179,180,183,255,175,176,178,255,170,172,174,255,165,166,168,255,160,161,162,255,154,155,156,255,147,147,148,255,140,140,140,255, -132,131,132,255,124,122,121,255,115,113,112,255,107,105,101,255, 99, 95, 92,255, 94, 89, 83,255, 91, 86, 78,255,101, 96, 91,255, -127,124,123,255,150,150,150,255,156,157,157,255,155,156,156,255,154,154,154,255,153,153,153,255,151,151,150,255,149,148,148,255, -147,146,146,255,145,144,143,255,143,142,141,255,140,139,138,255,138,137,135,255,135,133,131,255,131,128,126,255,128,125,122,255, -115,112,106,255, 3, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -134,136,138,255,203,206,209,255,201,205,207,255,201,204,207,255,201,203,208,255,201,203,206,255,200,204,206,255,199,203,207,255, -200,203,206,255,199,202,205,255,198,201,204,255,197,200,204,255,196,200,203,255,194,197,200,255,194,197,200,255,193,196,199,255, -193,196,199,255,193,196,199,255,194,197,200,255,194,197,200,255,194,197,200,255,194,198,201,255,194,196,200,255,193,197,199,255, -194,197,200,255,193,195,199,255,193,196,199,255,192,195,198,255,192,194,197,255,191,193,196,255,191,194,197,255,190,192,195,255, -190,192,195,255,189,191,194,255,189,191,194,255,188,191,194,255,188,190,193,255,186,189,192,255,187,188,191,255,186,188,191,255, -186,188,191,255,186,188,191,255,187,189,192,255,190,192,195,255,194,196,199,255,196,198,200,255,197,198,199,255,197,198,198,255, -197,198,198,255,197,199,200,255,198,199,200,255,197,199,201,255,195,197,200,255,193,196,198,255,192,194,197,255,189,191,194,255, -185,187,190,255,181,183,185,255,176,178,180,255,172,173,175,255,166,167,169,255,161,162,163,255,154,155,156,255,147,147,148,255, -139,139,139,255,130,129,128,255,122,120,118,255,112,110,108,255,103,100, 96,255, 96, 91, 86,255, 91, 86, 79,255, 97, 93, 86,255, -125,123,121,255,151,150,150,255,156,157,157,255,155,156,156,255,154,154,154,255,153,153,152,255,151,151,150,255,149,148,148,255, -147,146,145,255,145,144,143,255,142,141,140,255,140,138,137,255,137,135,133,255,134,132,129,255,130,128,125,255,125,121,116,255, - 34, 32, 31,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -134,136,138,255,203,206,210,255,202,205,208,255,202,205,207,255,201,204,207,255,201,204,207,255,201,203,207,255,200,204,207,255, -199,202,206,255,197,200,203,255,195,198,201,255,194,197,199,255,191,194,197,255,189,192,195,255,188,191,194,255,186,189,192,255, -186,188,192,255,186,189,191,255,187,189,192,255,188,191,194,255,190,193,196,255,192,195,199,255,194,196,200,255,194,196,200,255, -194,197,200,255,194,196,200,255,192,196,198,255,193,196,199,255,192,194,197,255,191,194,197,255,191,194,197,255,190,193,196,255, -190,193,196,255,190,192,195,255,188,191,194,255,189,190,193,255,188,191,193,255,187,189,192,255,186,189,191,255,186,189,191,255, -185,188,190,255,185,187,190,255,184,186,189,255,185,187,190,255,186,189,191,255,189,191,194,255,192,195,197,255,196,199,201,255, -198,200,200,255,198,199,199,255,197,199,200,255,198,200,201,255,198,199,202,255,197,199,201,255,195,197,200,255,193,195,198,255, -190,193,195,255,187,189,191,255,182,184,187,255,178,179,181,255,172,174,175,255,167,168,170,255,161,162,163,255,154,154,155,255, -145,145,146,255,136,136,135,255,127,126,125,255,117,115,114,255,108,104,102,255, 98, 94, 89,255, 92, 87, 80,255, 96, 91, 84,255, -127,124,122,255,152,152,152,255,157,158,158,255,155,156,156,255,154,154,154,255,153,153,151,255,151,150,150,255,149,148,148,255, -147,146,145,255,144,143,142,255,142,141,139,255,139,138,136,255,136,134,132,255,132,130,127,255,129,126,122,255, 80, 77, 73,255, - 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -135,136,138,255,203,207,210,255,201,204,209,255,202,205,208,255,202,205,207,255,202,205,207,255,201,204,207,255,200,203,207,255, -198,201,204,255,195,198,201,255,191,194,197,255,189,191,193,255,185,187,190,255,182,184,187,255,180,183,185,255,178,180,183,255, -177,179,181,255,175,178,180,255,175,177,180,255,176,179,181,255,178,181,183,255,182,184,187,255,186,188,191,255,188,191,194,255, -191,193,196,255,191,194,197,255,192,195,198,255,193,195,198,255,192,194,197,255,192,194,197,255,191,194,197,255,191,194,197,255, -190,193,196,255,190,192,195,255,188,191,194,255,189,190,193,255,188,191,194,255,187,189,192,255,186,189,192,255,187,188,192,255, -185,188,190,255,185,187,190,255,185,187,190,255,184,186,189,255,184,186,188,255,184,186,189,255,186,188,191,255,189,191,194,255, -194,197,200,255,199,201,203,255,199,200,201,255,198,199,200,255,198,199,201,255,198,200,202,255,198,200,202,255,197,199,201,255, -194,197,199,255,192,194,196,255,188,190,192,255,184,185,187,255,178,180,182,255,173,175,176,255,167,169,170,255,161,162,163,255, -152,153,154,255,143,143,143,255,134,133,133,255,123,122,120,255,113,110,108,255,102, 98, 94,255, 93, 88, 81,255, 96, 90, 83,255, -131,130,128,255,154,154,154,255,157,158,158,255,155,155,155,255,154,154,154,255,153,153,152,255,150,150,149,255,149,148,147,255, -147,146,145,255,144,143,142,255,141,140,138,255,139,137,135,255,135,133,131,255,131,128,126,255,120,116,111,255, 7, 7, 6,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -135,136,138,255,204,207,210,255,202,205,209,255,201,204,208,255,201,204,208,255,202,205,209,255,201,204,208,255,199,202,206,255, -196,198,201,255,192,194,197,255,187,190,193,255,183,186,188,255,180,183,185,255,177,179,182,255,174,176,179,255,172,174,177,255, -170,172,174,255,167,169,171,255,166,168,170,255,166,168,170,255,166,168,170,255,168,170,172,255,171,173,175,255,174,177,179,255, -179,181,183,255,183,186,188,255,187,189,192,255,190,192,195,255,191,194,197,255,191,194,197,255,192,194,197,255,190,193,196,255, -191,193,196,255,190,193,196,255,189,191,194,255,188,191,194,255,189,190,194,255,187,190,193,255,187,189,192,255,187,188,192,255, -186,188,191,255,186,188,190,255,185,187,190,255,184,186,189,255,184,186,188,255,182,185,187,255,183,185,187,255,184,186,188,255, -186,189,191,255,192,195,198,255,199,202,204,255,201,202,204,255,200,201,202,255,200,201,201,255,200,201,203,255,199,201,203,255, -198,200,202,255,196,198,201,255,193,195,198,255,189,191,194,255,185,187,189,255,179,181,183,255,173,174,176,255,166,167,169,255, -159,160,161,255,150,150,150,255,141,140,139,255,129,128,127,255,117,115,113,255,105,101, 97,255, 94, 88, 81,255,100, 94, 85,255, -139,138,137,255,156,157,157,255,157,157,157,255,155,155,155,255,154,154,153,255,151,151,151,255,150,149,149,255,148,147,146,255, -145,144,143,255,143,142,140,255,140,139,137,255,136,134,132,255,134,131,128,255,129,126,121,255, 20, 19, 18,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -135,136,138,255,204,207,210,255,203,206,208,255,202,205,209,255,201,205,209,255,202,205,209,255,202,205,208,255,198,201,204,255, -194,196,199,255,190,192,195,255,186,188,191,255,182,184,186,255,178,181,183,255,175,177,179,255,171,174,176,255,168,170,172,255, -166,168,170,255,163,164,166,255,160,161,163,255,158,160,162,255,158,159,160,255,158,159,161,255,159,161,162,255,162,163,165,255, -165,167,169,255,169,171,173,255,174,176,178,255,179,181,183,255,183,185,188,255,186,189,191,255,188,190,193,255,189,191,194,255, -189,192,195,255,189,192,195,255,190,192,195,255,189,192,195,255,189,191,194,255,187,190,193,255,187,190,192,255,186,189,192,255, -186,189,191,255,186,188,191,255,185,186,190,255,184,187,189,255,183,186,188,255,183,186,188,255,182,184,186,255,182,184,186,255, -182,184,187,255,185,187,190,255,192,195,198,255,199,203,205,255,202,204,206,255,201,203,204,255,201,202,203,255,201,202,204,255, -200,202,204,255,198,201,203,255,196,199,201,255,193,196,198,255,189,191,194,255,185,187,189,255,179,181,183,255,173,174,176,255, -164,165,167,255,155,156,157,255,146,145,145,255,134,133,133,255,122,120,118,255,108,105,101,255, 94, 88, 81,255,111,106,100,255, -150,150,149,255,157,158,158,255,157,157,157,255,155,155,155,255,154,153,153,255,152,151,151,255,150,149,148,255,148,146,146,255, -145,144,143,255,143,141,139,255,139,137,135,255,136,134,130,255,130,127,122,255, 49, 47, 45,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -135,136,138,255,204,207,210,255,202,205,209,255,203,206,209,255,202,206,209,255,203,206,208,255,202,205,208,255,198,201,203,255, -193,195,198,255,189,191,193,255,185,187,190,255,181,183,186,255,178,180,182,255,175,177,179,255,172,174,176,255,168,170,172,255, -165,167,169,255,161,162,164,255,158,159,161,255,156,156,159,255,153,155,156,255,153,154,155,255,152,153,155,255,153,154,156,255, -155,156,157,255,157,158,159,255,160,161,162,255,164,166,167,255,169,171,172,255,172,174,176,255,176,178,180,255,179,182,184,255, -182,185,187,255,185,187,190,255,187,190,193,255,188,191,193,255,188,191,194,255,188,190,193,255,187,190,193,255,187,189,192,255, -186,189,191,255,186,188,191,255,185,187,190,255,184,186,189,255,184,186,189,255,184,186,188,255,182,184,186,255,181,183,187,255, -181,183,186,255,182,184,186,255,186,188,190,255,194,197,200,255,202,204,207,255,203,205,207,255,202,204,206,255,201,203,205,255, -202,204,206,255,201,203,206,255,200,202,205,255,198,199,202,255,194,196,199,255,189,192,194,255,184,186,188,255,177,179,181,255, -170,171,172,255,161,161,162,255,150,150,151,255,139,139,138,255,126,124,122,255,111,108,104,255,100, 94, 87,255,135,133,130,255, -157,157,157,255,157,157,158,255,157,157,156,255,155,154,154,255,153,152,152,255,152,151,150,255,149,148,147,255,147,146,144,255, -145,143,141,255,141,140,137,255,136,135,132,255,135,132,127,255, 81, 79, 76,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -135,136,138,255,204,207,211,255,202,206,208,255,203,206,209,255,203,206,208,255,203,206,210,255,203,205,208,255,198,201,203,255, -193,195,198,255,189,191,193,255,185,187,190,255,182,184,186,255,178,180,182,255,175,177,179,255,171,173,176,255,168,170,172,255, -165,166,168,255,161,163,164,255,157,159,160,255,154,156,157,255,153,154,155,255,151,152,153,255,149,150,151,255,149,150,151,255, -149,150,151,255,149,150,151,255,151,152,153,255,153,155,156,255,157,157,159,255,160,161,162,255,163,164,165,255,165,167,168,255, -168,170,172,255,172,174,176,255,176,178,180,255,179,181,184,255,181,183,186,255,183,185,186,255,184,185,188,255,185,187,189,255, -185,188,190,255,185,187,190,255,184,187,189,255,184,186,189,255,184,186,188,255,183,185,187,255,182,184,186,255,182,184,186,255, -181,183,185,255,180,182,184,255,182,184,186,255,190,193,195,255,200,203,206,255,203,205,209,255,202,206,208,255,203,205,208,255, -203,205,208,255,204,206,208,255,202,205,207,255,200,203,206,255,198,201,204,255,193,196,199,255,188,190,193,255,181,183,185,255, -174,176,178,255,165,166,167,255,155,155,156,255,143,143,142,255,129,128,126,255,113,110,106,255,109,104, 98,255,152,151,151,255, -159,159,159,255,157,157,157,255,156,156,156,255,155,154,154,255,153,152,152,255,150,149,149,255,149,148,147,255,146,145,143,255, -142,140,138,255,139,137,134,255,137,134,130,255,103, 99, 95,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -135,137,138,255,205,207,211,255,202,205,209,255,203,206,208,255,203,206,209,255,203,206,209,255,204,206,209,255,199,201,204,255, -193,195,198,255,189,191,193,255,185,187,190,255,182,184,186,255,179,181,183,255,175,177,179,255,172,174,176,255,169,171,173,255, -166,167,169,255,162,164,166,255,159,160,162,255,155,157,158,255,153,154,155,255,150,151,152,255,148,148,150,255,146,146,148,255, -145,146,147,255,145,146,147,255,146,147,148,255,148,148,150,255,149,150,151,255,151,152,153,255,152,153,155,255,154,155,156,255, -156,158,158,255,159,161,162,255,162,163,165,255,165,166,168,255,167,169,170,255,170,171,173,255,172,174,176,255,175,177,179,255, -178,179,182,255,179,181,183,255,179,182,184,255,180,182,184,255,180,182,184,255,180,182,184,255,180,182,184,255,180,182,184,255, -180,181,184,255,181,183,184,255,183,185,187,255,190,193,196,255,197,200,203,255,200,203,206,255,202,205,207,255,202,205,208,255, -203,205,208,255,204,206,209,255,203,206,209,255,202,205,208,255,200,203,206,255,196,199,202,255,191,193,196,255,185,187,189,255, -177,178,180,255,169,170,172,255,159,160,160,255,146,146,146,255,131,131,129,255,114,110,106,255,127,124,121,255,158,158,158,255, -158,158,159,255,157,157,157,255,155,155,155,255,154,153,153,255,152,152,151,255,150,149,148,255,147,146,145,255,145,143,141,255, -141,140,137,255,138,136,133,255,100, 97, 94,255, 8, 8, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -135,137,138,255,205,208,211,255,203,206,209,255,202,205,208,255,203,206,209,255,203,206,209,255,204,207,210,255,202,204,206,255, -194,196,197,255,190,192,194,255,186,188,190,255,183,185,187,255,180,182,184,255,177,179,181,255,174,176,178,255,171,173,175,255, -167,169,171,255,164,165,167,255,160,162,164,255,157,158,160,255,153,155,156,255,151,152,153,255,148,149,150,255,146,147,148,255, -145,146,147,255,144,144,145,255,145,145,146,255,145,146,147,255,146,147,148,255,146,147,148,255,147,148,149,255,147,148,149,255, -149,149,151,255,150,151,152,255,152,153,155,255,154,155,157,255,155,156,158,255,157,158,160,255,159,160,161,255,162,163,164,255, -163,165,166,255,166,168,169,255,167,169,171,255,168,170,172,255,169,171,173,255,170,172,174,255,171,172,174,255,171,173,174,255, -172,173,175,255,174,176,178,255,178,181,183,255,184,187,190,255,191,194,197,255,195,198,201,255,198,201,204,255,200,203,206,255, -202,204,207,255,203,206,209,255,204,207,210,255,204,206,210,255,201,204,207,255,198,201,204,255,194,196,199,255,187,189,192,255, -179,181,183,255,170,172,173,255,161,162,162,255,148,148,147,255,133,131,130,255,116,113,110,255,143,142,140,255,160,160,160,255, -158,158,158,255,156,156,156,255,155,155,154,255,153,152,152,255,151,150,149,255,149,148,146,255,146,145,143,255,142,140,138,255, -140,138,134,255,108,105,102,255, 10, 10, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -135,137,138,255,205,208,211,255,204,206,209,255,203,205,208,255,202,206,209,255,202,205,208,255,203,206,209,255,203,206,208,255, -197,199,200,255,191,193,194,255,188,190,192,255,184,186,189,255,182,185,187,255,179,182,184,255,176,178,180,255,173,175,178,255, -170,172,174,255,166,168,170,255,163,165,166,255,159,161,163,255,156,158,159,255,152,154,155,255,150,151,152,255,147,148,149,255, -146,146,147,255,145,146,147,255,145,145,146,255,144,144,145,255,144,144,145,255,144,144,145,255,143,144,145,255,144,144,145,255, -145,146,147,255,146,147,148,255,147,148,149,255,147,148,149,255,148,149,150,255,149,150,151,255,150,151,152,255,152,152,154,255, -153,154,155,255,154,156,157,255,155,157,158,255,156,158,159,255,158,159,160,255,158,159,161,255,158,159,160,255,158,159,160,255, -159,160,162,255,162,163,165,255,168,170,172,255,176,177,179,255,182,185,188,255,189,191,194,255,194,197,200,255,197,200,203,255, -200,203,206,255,201,204,207,255,203,206,209,255,203,206,209,255,201,204,208,255,199,202,205,255,195,198,201,255,189,192,194,255, -181,183,185,255,172,174,175,255,161,162,163,255,149,148,148,255,133,131,129,255,120,117,114,255,157,157,156,255,160,159,159,255, -158,158,158,255,156,156,155,255,154,153,153,255,152,151,151,255,150,149,147,255,147,146,144,255,144,142,139,255,141,139,136,255, -118,115,111,255, 9, 8, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -135,137,138,255,205,208,211,255,204,206,209,255,203,205,208,255,202,206,209,255,203,206,209,255,202,205,208,255,203,206,209,255, -201,203,204,255,193,194,195,255,190,192,193,255,187,189,191,255,185,187,190,255,182,185,187,255,179,181,184,255,176,178,181,255, -172,175,177,255,169,171,173,255,166,168,170,255,162,164,166,255,159,161,162,255,156,157,159,255,152,153,155,255,150,151,152,255, -148,149,150,255,147,147,148,255,146,147,148,255,145,146,147,255,144,145,146,255,144,144,145,255,143,144,145,255,143,144,145,255, -144,144,145,255,144,145,146,255,144,145,146,255,144,144,145,255,144,145,146,255,144,145,146,255,144,145,146,255,145,147,147,255, -147,148,149,255,148,148,149,255,148,149,150,255,149,149,150,255,149,149,151,255,149,150,152,255,150,151,152,255,150,151,152,255, -150,151,153,255,154,155,156,255,160,162,164,255,168,170,172,255,176,178,180,255,183,185,188,255,189,191,194,255,194,196,199,255, -197,200,203,255,199,202,205,255,201,204,207,255,201,205,208,255,201,204,207,255,199,202,205,255,195,198,201,255,190,192,195,255, -182,184,186,255,173,174,176,255,162,163,164,255,148,148,147,255,130,127,125,255,134,132,129,255,162,163,163,255,159,158,158,255, -157,157,156,255,156,155,154,255,153,152,152,255,152,150,149,255,149,147,145,255,145,143,140,255,143,141,138,255,103,101, 98,255, - 9, 8, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -135,137,138,255,205,208,210,255,204,205,209,255,203,205,208,255,202,206,209,255,203,206,209,255,203,205,208,255,202,206,209,255, -203,206,208,255,195,196,197,255,192,193,194,255,191,192,195,255,189,191,193,255,186,188,191,255,183,186,188,255,180,182,185,255, -176,179,181,255,173,175,177,255,170,172,174,255,167,169,171,255,163,165,167,255,160,161,163,255,157,158,159,255,154,155,156,255, -151,152,154,255,150,150,151,255,149,149,150,255,147,148,149,255,146,147,148,255,145,146,147,255,144,145,146,255,144,145,146,255, -144,145,146,255,144,144,145,255,143,143,144,255,143,143,144,255,143,142,143,255,143,144,145,255,144,143,144,255,144,145,146,255, -144,145,146,255,145,145,146,255,145,145,146,255,145,146,147,255,145,145,146,255,145,145,146,255,145,145,146,255,145,145,146,255, -147,148,149,255,150,151,152,255,157,158,160,255,165,166,168,255,171,173,175,255,177,179,182,255,184,186,189,255,189,192,195,255, -193,196,199,255,196,199,203,255,198,202,205,255,200,203,207,255,199,202,206,255,197,200,203,255,194,197,200,255,189,192,195,255, -182,184,186,255,173,174,175,255,161,161,162,255,146,144,144,255,125,122,118,255,159,159,159,255,160,160,160,255,158,158,158,255, -156,156,155,255,154,153,152,255,152,151,150,255,149,148,147,255,146,144,142,255,144,142,139,255,113,111,107,255, 10, 10, 9,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -135,137,138,255,205,207,210,255,204,206,209,255,203,206,209,255,203,206,209,255,203,206,209,255,203,206,208,255,203,204,207,255, -202,205,207,255,203,205,208,255,194,196,197,255,194,195,197,255,192,195,197,255,190,192,195,255,188,190,193,255,184,187,189,255, -181,183,186,255,178,180,182,255,175,177,179,255,171,173,175,255,168,169,171,255,164,166,168,255,161,162,164,255,158,160,161,255, -156,157,158,255,153,154,156,255,152,153,154,255,150,151,152,255,149,150,151,255,149,149,150,255,147,148,149,255,147,147,148,255, -146,147,148,255,146,146,147,255,145,145,146,255,144,144,145,255,144,144,145,255,143,144,145,255,143,144,145,255,144,144,145,255, -143,144,145,255,143,144,145,255,143,143,144,255,142,143,144,255,142,142,143,255,143,143,144,255,143,144,145,255,144,144,145,255, -145,145,146,255,148,149,150,255,154,155,157,255,162,165,166,255,169,171,173,255,175,177,179,255,180,182,184,255,185,188,191,255, -189,192,195,255,193,196,199,255,196,199,202,255,197,201,204,255,197,200,203,255,195,198,201,255,192,195,198,255,187,189,192,255, -180,182,184,255,170,171,172,255,157,158,157,255,138,137,135,255,146,144,143,255,162,162,162,255,159,159,158,255,157,157,156,255, -156,155,154,255,153,152,151,255,150,149,148,255,148,146,144,255,144,142,139,255, 99, 98, 95,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -135,136,138,255,205,207,210,255,204,206,209,255,203,206,209,255,202,206,209,255,203,205,209,255,203,206,208,255,203,205,207,255, -201,204,207,255,201,205,208,255,202,205,208,255,197,198,200,255,196,198,200,255,195,198,200,255,192,195,198,255,190,193,196,255, -186,189,192,255,183,185,188,255,180,182,185,255,177,179,181,255,173,175,178,255,170,172,174,255,166,168,170,255,163,165,167,255, -160,162,163,255,159,160,162,255,156,158,159,255,155,156,157,255,153,155,156,255,152,153,154,255,151,151,152,255,149,150,151,255, -149,149,151,255,148,149,150,255,148,147,148,255,146,147,148,255,146,146,147,255,146,146,147,255,145,145,146,255,145,145,146,255, -144,145,146,255,144,144,145,255,144,144,145,255,143,144,145,255,143,143,144,255,143,144,145,255,144,144,145,255,144,145,146,255, -145,146,147,255,148,149,150,255,154,155,157,255,162,163,165,255,168,170,172,255,173,175,178,255,178,180,183,255,182,185,188,255, -186,190,192,255,191,194,197,255,193,196,199,255,194,198,201,255,195,197,201,255,192,195,199,255,190,192,195,255,185,187,189,255, -176,178,180,255,166,167,168,255,151,151,150,255,140,139,136,255,160,160,160,255,160,160,160,255,158,158,157,255,156,156,155,255, -154,153,152,255,151,149,148,255,149,148,145,255,143,141,138,255, 67, 66, 64,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -135,136,137,255,205,207,210,255,202,205,209,255,203,206,209,255,202,206,209,255,203,206,208,255,203,205,207,255,203,204,207,255, -201,205,208,255,202,204,208,255,202,205,207,255,201,203,205,255,198,200,202,255,199,202,204,255,198,201,204,255,195,198,201,255, -192,195,198,255,188,191,194,255,186,188,191,255,182,185,187,255,179,181,184,255,176,178,180,255,172,174,176,255,169,171,172,255, -166,168,170,255,164,166,167,255,162,163,165,255,160,161,162,255,158,159,161,255,157,158,159,255,155,156,157,255,154,155,156,255, -152,154,155,255,151,152,153,255,150,151,152,255,150,150,151,255,148,149,150,255,148,148,149,255,147,148,149,255,147,148,149,255, -146,147,148,255,146,146,147,255,145,146,147,255,145,145,146,255,145,145,146,255,145,145,146,255,145,146,147,255,145,146,147,255, -146,147,148,255,149,149,150,255,153,155,156,255,161,163,165,255,167,170,172,255,172,175,177,255,178,180,183,255,182,185,187,255, -186,188,191,255,189,192,195,255,191,194,197,255,192,196,199,255,192,195,198,255,190,193,196,255,186,189,192,255,181,183,185,255, -172,173,175,255,160,160,160,255,144,142,140,255,153,152,151,255,161,161,160,255,159,158,157,255,156,157,156,255,155,154,153,255, -151,150,149,255,150,148,146,255,145,142,138,255, 40, 39, 38,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -135,136,137,255,204,206,208,255,203,205,207,255,203,205,207,255,203,206,207,255,203,205,207,255,202,204,208,255,203,205,208,255, -201,204,207,255,202,205,207,255,201,204,207,255,201,204,207,255,199,201,204,255,200,202,204,255,202,205,208,255,200,203,207,255, -196,201,204,255,194,197,200,255,191,194,197,255,189,192,194,255,185,188,190,255,182,184,187,255,178,180,183,255,175,177,179,255, -172,174,176,255,170,172,174,255,168,169,171,255,166,167,169,255,164,165,167,255,162,163,165,255,160,162,163,255,158,160,161,255, -157,158,160,255,156,157,159,255,155,156,157,255,153,155,156,255,152,153,155,255,151,152,153,255,151,152,153,255,150,151,152,255, -150,150,151,255,149,150,151,255,148,149,150,255,148,149,150,255,148,149,150,255,148,148,149,255,148,148,149,255,148,149,150,255, -149,150,151,255,150,152,153,255,155,156,157,255,161,163,165,255,168,170,172,255,174,176,178,255,178,181,183,255,182,185,187,255, -186,188,191,255,188,191,194,255,189,192,195,255,190,193,196,255,190,192,196,255,187,190,192,255,182,184,187,255,176,177,179,255, -165,166,167,255,150,149,148,255,147,145,143,255,162,162,161,255,159,159,158,255,158,157,156,255,154,153,152,255,153,151,150,255, -150,148,145,255,116,114,111,255, 12, 12, 12,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -134,135,137,255,204,206,207,255,203,205,207,255,203,205,207,255,203,205,208,255,203,204,208,255,203,205,208,255,202,205,207,255, -201,205,207,255,202,204,206,255,202,203,206,255,201,203,206,255,201,204,206,255,199,201,204,255,201,203,205,255,203,206,209,255, -202,205,208,255,199,202,205,255,196,199,203,255,193,196,200,255,191,194,197,255,188,190,193,255,184,186,189,255,181,184,186,255, -178,181,183,255,176,178,180,255,174,176,178,255,172,174,176,255,170,171,173,255,168,170,171,255,166,168,169,255,164,166,167,255, -162,164,166,255,161,163,164,255,160,162,163,255,158,160,161,255,158,159,160,255,157,158,159,255,155,156,158,255,155,156,157,255, -154,155,156,255,153,154,156,255,152,153,155,255,152,153,154,255,151,152,153,255,151,152,153,255,152,152,153,255,152,152,153,255, -152,153,154,255,154,155,156,255,157,158,159,255,163,164,166,255,169,171,172,255,174,176,178,255,179,181,183,255,183,185,188,255, -185,188,191,255,188,190,193,255,188,191,194,255,188,190,193,255,186,189,192,255,183,185,188,255,177,179,181,255,169,170,171,255, -155,155,154,255,150,148,145,255,161,161,160,255,160,159,158,255,158,158,156,255,155,154,152,255,155,153,151,255,146,143,141,255, - 65, 64, 62,255, 4, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -135,136,137,255,203,205,206,255,201,203,205,255,202,204,205,255,202,203,206,255,202,205,207,255,202,205,207,255,201,205,207,255, -202,204,206,255,201,203,207,255,202,203,207,255,200,204,205,255,200,204,205,255,201,203,206,255,200,203,205,255,199,202,204,255, -203,205,208,255,202,205,208,255,200,203,206,255,197,200,203,255,196,199,202,255,194,196,200,255,190,193,196,255,187,190,193,255, -185,188,190,255,182,185,187,255,180,182,185,255,178,181,183,255,176,178,180,255,174,176,178,255,173,174,176,255,170,172,174,255, -169,171,172,255,167,169,170,255,166,167,169,255,165,166,168,255,163,164,166,255,162,163,165,255,161,162,163,255,160,161,162,255, -159,160,161,255,158,159,161,255,157,158,159,255,157,158,159,255,156,157,158,255,155,157,158,255,155,157,158,255,156,157,158,255, -156,157,158,255,158,159,160,255,160,162,163,255,166,168,169,255,171,173,175,255,175,178,180,255,180,182,185,255,183,185,188,255, -185,188,191,255,187,190,192,255,187,189,192,255,186,188,191,255,183,185,187,255,178,179,182,255,171,172,173,255,160,161,159,255, -151,150,147,255,162,161,159,255,160,160,159,255,159,157,156,255,155,154,152,255,154,153,150,255,119,118,115,255, 12, 12, 12,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, - 53, 53, 53,255,135,136,137,255,188,189,191,255,202,205,205,255,201,203,205,255,202,203,205,255,201,203,205,255,202,203,206,255, -202,203,206,255,201,204,206,255,200,203,205,255,201,203,206,255,201,202,205,255,200,203,205,255,199,202,204,255,199,202,204,255, -197,200,202,255,199,202,204,255,201,204,205,255,200,202,205,255,199,202,205,255,197,200,203,255,195,198,201,255,193,196,199,255, -191,193,196,255,189,191,194,255,186,189,191,255,184,187,189,255,183,184,187,255,180,182,185,255,178,180,182,255,177,179,181,255, -175,177,179,255,174,175,177,255,172,174,176,255,170,172,174,255,169,171,173,255,168,169,171,255,166,168,169,255,166,167,169,255, -164,166,168,255,164,165,166,255,163,164,166,255,162,163,165,255,161,163,164,255,161,162,164,255,161,162,164,255,161,162,164,255, -161,163,164,255,162,164,165,255,165,166,168,255,168,170,171,255,172,174,177,255,176,178,181,255,180,183,185,255,183,185,188,255, -184,187,190,255,185,188,190,255,185,187,190,255,182,184,187,255,178,180,181,255,172,172,174,255,161,161,161,255,153,152,150,255, -161,161,159,255,160,159,157,255,159,158,156,255,155,154,152,255,132,131,128,255, 68, 67, 65,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 27, 27, 27,255, 0, 0, 0,255, 42, 43, 43,255,128,129,130,255,201,203,204,255,202,204,205,255,200,202,203,255,201,203,205,255, -201,203,205,255,201,203,205,255,201,203,205,255,201,202,205,255,200,203,205,255,199,202,205,255,200,202,204,255,200,201,204,255, -199,202,204,255,198,200,203,255,199,200,202,255,197,199,200,255,197,200,201,255,198,200,202,255,197,200,203,255,197,199,202,255, -195,198,201,255,193,197,200,255,192,194,197,255,190,192,195,255,188,191,194,255,186,188,191,255,184,186,189,255,182,185,188,255, -180,183,185,255,180,182,184,255,178,181,183,255,177,179,181,255,175,177,180,255,174,176,177,255,173,174,176,255,172,174,175,255, -171,173,174,255,169,171,173,255,168,170,172,255,168,169,171,255,167,168,170,255,167,168,170,255,166,168,169,255,166,168,169,255, -166,168,170,255,167,169,170,255,169,171,173,255,171,173,176,255,175,177,179,255,179,181,182,255,181,183,186,255,183,185,188,255, -184,186,188,255,183,185,188,255,181,183,186,255,178,179,181,255,172,172,173,255,161,161,160,255,157,156,155,255,161,160,159,255, -160,159,158,255,160,159,157,255,151,149,146,255, 69, 68, 66,255, 15, 14, 14,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 27, 27, 27,255,153,154,155,255,202,203,204,255,201,202,204,255, -200,201,203,255,201,202,204,255,200,201,203,255,200,202,205,255,200,201,204,255,199,201,204,255,200,202,204,255,200,202,204,255, -198,201,203,255,199,200,202,255,198,201,203,255,197,199,202,255,198,200,202,255,196,198,200,255,195,197,198,255,196,198,200,255, -196,198,200,255,196,198,201,255,195,197,201,255,195,197,200,255,192,195,198,255,191,194,197,255,190,192,195,255,188,190,193,255, -186,189,192,255,185,188,190,255,184,186,188,255,183,185,188,255,182,184,186,255,180,182,184,255,179,181,183,255,178,180,182,255, -176,178,180,255,175,177,179,255,174,176,178,255,173,175,177,255,173,174,176,255,171,173,175,255,171,173,175,255,171,173,174,255, -171,173,174,255,172,174,176,255,174,175,177,255,176,178,180,255,178,180,182,255,180,182,185,255,182,184,187,255,183,185,187,255, -182,184,186,255,180,182,184,255,177,178,180,255,171,171,172,255,161,161,160,255,161,159,158,255,162,161,160,255,161,159,157,255, -157,156,153,255, 85, 84, 83,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 47, 48, 48,255,139,140,140,255, -181,182,183,255,200,202,202,255,200,202,204,255,198,200,202,255,199,201,203,255,199,201,203,255,199,201,203,255,198,200,203,255, -199,201,202,255,198,200,202,255,197,200,202,255,198,200,201,255,197,199,201,255,197,199,201,255,197,199,201,255,195,197,200,255, -195,196,198,255,194,196,198,255,195,196,198,255,195,197,198,255,194,197,199,255,194,197,199,255,193,195,198,255,192,194,197,255, -191,193,196,255,190,192,195,255,188,190,193,255,187,190,193,255,187,189,192,255,185,188,191,255,184,187,189,255,184,186,188,255, -182,185,187,255,181,183,185,255,180,182,184,255,179,181,183,255,178,180,182,255,178,179,181,255,177,179,181,255,177,179,180,255, -177,179,180,255,177,179,181,255,177,179,181,255,179,180,182,255,180,182,184,255,181,183,185,255,181,183,185,255,181,183,185,255, -179,180,182,255,174,175,176,255,167,167,167,255,163,161,161,255,164,163,161,255,161,160,158,255,136,134,132,255, 93, 92, 90,255, - 15, 15, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 32, 32, 32,255, 83, 83, 83,255,177,179,179,255,201,204,204,255,200,201,203,255,199,200,202,255,198,200,202,255,198,200,202,255, -198,200,202,255,198,200,202,255,198,199,201,255,197,199,201,255,196,199,201,255,197,199,201,255,196,198,200,255,196,198,200,255, -195,197,199,255,194,197,199,255,194,196,198,255,193,195,197,255,193,194,197,255,193,194,196,255,193,194,196,255,193,194,195,255, -193,194,196,255,193,194,196,255,191,193,196,255,191,193,195,255,190,192,195,255,189,191,193,255,188,190,193,255,188,190,192,255, -187,189,192,255,186,188,190,255,185,187,190,255,184,186,188,255,183,185,187,255,182,184,186,255,181,183,185,255,181,183,185,255, -181,182,184,255,180,182,184,255,180,182,184,255,181,182,185,255,181,183,185,255,181,182,184,255,179,181,182,255,176,177,177,255, -171,171,170,255,167,167,165,255,167,166,164,255,163,161,160,255,115,114,112,255, 50, 50, 49,255, 15, 14, 14,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 39, 39, 39,255,135,135,135,255,195,197,197,255,196,198,198,255,196,197,199,255, -197,198,200,255,196,198,199,255,195,197,199,255,196,198,199,255,197,197,199,255,196,197,199,255,196,197,199,255,195,197,198,255, -194,197,199,255,194,195,197,255,193,196,198,255,194,195,197,255,192,194,196,255,192,193,195,255,191,194,196,255,191,192,194,255, -190,192,193,255,190,191,193,255,190,191,193,255,190,191,192,255,190,191,192,255,190,191,192,255,190,191,193,255,189,190,192,255, -189,190,191,255,188,190,191,255,188,189,190,255,186,188,189,255,186,188,189,255,186,187,188,255,184,185,187,255,183,185,186,255, -182,183,185,255,181,182,184,255,181,182,183,255,179,180,180,255,179,179,180,255,175,176,175,255,171,171,170,255,168,167,165,255, -167,166,164,255,161,160,158,255, 90, 89, 87,255, 12, 12, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 2, 2, 2,255, 71, 72, 72,255,128,130,130,255, -166,167,168,255,187,188,189,255,196,198,198,255,196,198,199,255,196,198,199,255,195,197,198,255,195,196,198,255,194,196,198,255, -194,196,197,255,193,195,197,255,193,195,196,255,193,194,196,255,192,193,195,255,191,193,195,255,191,192,194,255,190,192,193,255, -190,191,193,255,189,191,192,255,189,190,191,255,188,189,191,255,187,188,189,255,186,188,189,255,186,187,188,255,187,187,188,255, -185,186,187,255,185,186,187,255,185,185,186,255,184,185,185,255,184,184,184,255,184,184,184,255,183,183,183,255,182,182,182,255, -178,178,178,255,179,179,178,255,178,178,177,255,175,174,173,255,172,172,170,255,158,157,155,255,133,132,131,255,101, 99, 98,255, - 47, 46, 45,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 20, 20, 20,255, 36, 36, 36,255, 81, 81, 81,255,127,127,128,255,177,178,179,255,196,197,197,255,195,196,197,255,196,197,198,255, -194,196,196,255,192,193,194,255,192,193,195,255,192,193,194,255,191,193,194,255,191,192,193,255,190,192,193,255,190,191,192,255, -189,190,191,255,188,190,191,255,188,189,190,255,187,188,189,255,186,187,188,255,186,187,187,255,185,185,186,255,184,185,185,255, -183,183,184,255,182,183,182,255,181,182,182,255,180,180,180,255,179,179,179,255,177,178,177,255,178,178,178,255,177,177,177,255, -176,176,175,255,172,171,170,255,138,137,136,255,104,103,101,255, 48, 48, 47,255, 27, 27, 27,255, 10, 9, 9,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 13, 13, 13,255, 73, 73, 73,255,117,118,118,255, -165,166,166,255,188,189,189,255,188,189,189,255,188,189,190,255,189,190,190,255,188,189,190,255,188,189,189,255,188,189,190,255, -188,189,189,255,188,189,189,255,186,187,187,255,186,187,187,255,186,186,186,255,184,185,185,255,184,184,184,255,182,183,182,255, -180,180,180,255,179,179,178,255,177,177,176,255,175,175,174,255,174,174,173,255,172,171,170,255,130,129,128,255, 92, 91, 90,255, - 54, 54, 53,255, 5, 5, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 24, 24, 24,255, 49, 49, 49,255, 63, 63, 63,255, 80, 80, 80,255,101,101,101,255,113,113,113,255, -120,120,120,255,121,122,121,255,124,124,124,255,123,123,123,255,122,122,122,255,118,118,117,255,114,113,113,255,106,106,105,255, - 90, 90, 89,255, 71, 71, 70,255, 55, 55, 54,255, 39, 39, 38,255, 8, 8, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, - 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0, -156, 1, 0, 0,232,190, 95, 7, 31, 0, 0, 0, 1, 0, 0, 0, 64, 98, 96, 7,144, 27, 95, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 73, 77, 46,105, 46,102,105,108,108, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46,102,105,108,108, - 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,192, 95, 7, 0, 0, 0, 0,188, 71, 42, 0, 0, 0, 0, 4, - 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,232,192, 95, 7, 19, 0, 0, 0, 1, 0, 0, 0, - 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,112,193, 95, 7,216,209, 95, 7, - 68, 65, 84, 65, 0, 16, 0, 0,112,193, 95, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0,216,209, 95, 7, - 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 62, 62,255, - 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 59, 60, 60,255, 59, 60, 60,255, 59, 60, 60,255, 59, 60, 60,255, 59, 60, 60,255, 59, 60, 60,255, 59, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 61,255, 60, 60, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 62, 62, 62,255, 61, 61, 61,255, 98, 93, 84,255,133,122,104,255,133,122,105,255,132,122,104,255,132,120,103,255, -129,117,101,255,125,112, 97,255,117,104, 90,255,107, 94, 82,255, 99, 84, 75,255, 92, 77, 69,255, 87, 72, 65,255, 84, 68, 63,255, - 83, 68, 63,255, 85, 70, 64,255, 89, 74, 67,255, 94, 78, 71,255, 99, 85, 75,255,106, 92, 81,255,112, 99, 86,255,118,106, 91,255, -124,112, 97,255,130,118,102,255,134,124,107,255,138,129,114,255,141,133,120,255,143,136,124,255,143,136,125,255,141,134,121,255, -140,132,119,255,141,133,121,255,143,137,125,255,143,136,125,255,140,131,118,255,135,125,109,255,132,121,103,255,128,117,101,255, -127,115, 99,255,127,115, 99,255,126,115, 98,255,126,114, 98,255,126,114, 98,255,125,113, 97,255,125,113, 97,255,125,113, 97,255, -124,112, 96,255,122,110, 95,255,120,107, 93,255,115,102, 88,255,106, 92, 81,255, 95, 80, 72,255, 82, 68, 62,255, 70, 59, 56,255, - 63, 57, 54,255, 63, 56, 54,255, 65, 57, 55,255, 72, 61, 57,255, 82, 67, 62,255, 91, 76, 69,255, 99, 84, 75,255,106, 93, 82,255, -113,101, 87,255,120,107, 93,255,126,114, 98,255,132,121,104,255,137,127,111,255,141,133,120,255,144,137,126,255,146,141,131,255, -147,143,135,255,148,144,137,255,148,145,137,255,149,145,137,255,149,145,137,255,148,144,137,255,147,143,134,255,145,139,130,255, -141,133,120,255,135,124,108,255,126,114, 98,255,119,107, 92,255,114,101, 88,255,111, 98, 85,255,109, 96, 84,255,109, 95, 83,255, -108, 94, 82,255,107, 94, 82,255,106, 93, 81,255,106, 92, 81,255,106, 92, 81,255,105, 91, 80,255,104, 90, 79,255,103, 89, 79,255, - 83, 75, 70,255, 61, 61, 61,255, 60, 60, 60,255,134,123,105,255,202,179,146,255,201,178,145,255,200,179,145,255,199,177,143,255, -195,173,140,255,187,164,133,255,175,151,123,255,158,133,108,255,141,113, 93,255,125, 96, 80,255,113, 84, 71,255,107, 77, 66,255, -104, 75, 65,255,106, 77, 66,255,112, 82, 69,255,120, 91, 76,255,131,103, 85,255,143,117, 96,255,155,130,106,255,168,143,116,255, -179,156,126,255,190,168,135,255,200,179,145,255,209,190,158,255,215,200,173,255,219,206,182,255,220,207,185,255,217,204,181,255, -214,200,175,255,214,199,175,255,220,206,183,255,221,209,187,255,217,202,178,255,209,191,160,255,201,179,146,255,195,173,139,255, -190,167,135,255,188,165,134,255,188,164,133,255,186,164,133,255,187,163,132,255,186,162,132,255,185,162,131,255,185,162,131,255, -184,161,130,255,182,158,128,255,178,154,125,255,170,144,118,255,156,131,107,255,137,110, 91,255,112, 83, 71,255, 87, 63, 55,255, - 69, 54, 48,255, 63, 51, 46,255, 66, 53, 47,255, 75, 57, 51,255, 93, 66, 58,255,112, 82, 69,255,127, 99, 83,255,142,115, 95,255, -156,131,107,255,170,144,118,255,182,158,128,255,193,171,139,255,203,183,151,255,212,195,167,255,219,205,182,255,224,213,193,255, -228,218,201,255,230,221,206,255,231,223,209,255,231,223,209,255,231,223,209,255,231,223,209,255,229,221,206,255,226,217,199,255, -220,208,186,255,210,192,163,255,194,172,140,255,179,156,126,255,168,143,117,255,160,134,110,255,155,130,106,255,153,126,104,255, -152,126,103,255,151,125,102,255,150,123,101,255,148,122,100,255,147,121, 99,255,147,119, 98,255,145,118, 97,255,144,116, 96,255, -103, 89, 79,255, 61, 61, 61,255, 60, 60, 60,255,134,122,105,255,202,180,146,255,200,179,146,255,200,179,145,255,200,178,145,255, -196,175,142,255,192,169,137,255,181,158,128,255,167,142,116,255,149,123,101,255,132,104, 86,255,118, 90, 75,255,110, 81, 68,255, -104, 75, 65,255,104, 75, 65,255,108, 79, 68,255,115, 87, 73,255,126, 97, 81,255,137,109, 91,255,149,123,101,255,161,136,111,255, -173,149,121,255,184,161,130,255,195,173,140,255,204,185,152,255,211,194,166,255,217,202,177,255,219,206,184,255,219,206,184,255, -215,201,178,255,213,197,173,255,216,202,178,255,220,207,186,255,219,206,183,255,213,197,170,255,204,184,152,255,197,175,143,255, -191,169,137,255,188,165,134,255,187,165,134,255,187,164,133,255,186,163,132,255,186,163,132,255,185,162,131,255,185,162,131,255, -184,161,131,255,182,159,129,255,180,156,127,255,174,150,122,255,165,139,114,255,149,123,101,255,128, 99, 83,255,103, 74, 64,255, - 78, 58, 52,255, 66, 53, 47,255, 64, 52, 46,255, 68, 53, 48,255, 81, 60, 52,255,100, 72, 62,255,117, 87, 74,255,132,104, 87,255, -147,120, 99,255,161,135,110,255,173,149,122,255,186,162,131,255,196,175,141,255,206,187,156,255,214,198,173,255,220,207,187,255, -224,214,196,255,227,219,203,255,228,221,207,255,230,222,208,255,229,223,209,255,229,223,209,255,229,222,207,255,228,219,204,255, -223,213,195,255,216,202,178,255,204,184,153,255,188,166,135,255,174,150,123,255,164,139,114,255,158,132,108,255,154,128,105,255, -152,126,104,255,151,125,102,255,150,124,102,255,149,123,101,255,148,121,100,255,146,120, 98,255,145,118, 97,255,144,117, 96,255, -104, 90, 79,255, 61, 61, 61,255, 60, 60, 60,255,134,123,106,255,202,181,148,255,201,180,146,255,201,180,146,255,201,180,146,255, -199,178,145,255,195,173,141,255,188,165,134,255,175,151,123,255,158,133,108,255,140,113, 94,255,125, 96, 81,255,113, 84, 71,255, -107, 78, 67,255,104, 75, 65,255,106, 77, 66,255,112, 83, 70,255,120, 91, 77,255,131,103, 86,255,144,116, 96,255,156,130,106,255, -168,144,117,255,180,156,126,255,190,168,136,255,200,179,146,255,208,190,159,255,215,199,174,255,219,205,183,255,220,208,186,255, -217,205,182,255,214,199,175,255,215,199,175,255,218,206,184,255,220,209,188,255,217,203,180,255,210,192,162,255,201,180,147,255, -195,173,140,255,190,168,136,255,188,165,134,255,187,164,133,255,187,164,133,255,186,163,133,255,186,163,132,255,185,162,132,255, -184,161,132,255,184,161,131,255,182,159,129,255,178,155,126,255,171,147,120,255,160,134,110,255,142,115, 94,255,119, 90, 76,255, - 93, 67, 59,255, 72, 56, 49,255, 64, 52, 47,255, 64, 52, 47,255, 71, 55, 49,255, 87, 63, 56,255,106, 77, 66,255,122, 94, 79,255, -138,110, 91,255,152,126,104,255,165,141,115,255,178,155,125,255,190,167,136,255,200,180,147,255,209,191,163,255,216,202,178,255, -222,210,191,255,225,216,199,255,228,220,205,255,229,222,207,255,230,223,209,255,230,223,210,255,229,222,209,255,229,221,207,255, -227,218,202,255,222,210,191,255,213,197,171,255,199,178,146,255,183,160,129,255,170,146,119,255,162,136,112,255,156,131,106,255, -153,127,104,255,152,126,103,255,151,125,102,255,150,123,101,255,148,122,100,255,147,120, 99,255,145,119, 98,255,145,118, 97,255, -104, 90, 79,255, 61, 61, 61,255, 60, 60, 60,255,134,124,106,255,203,182,148,255,202,181,147,255,202,181,147,255,202,181,147,255, -201,180,146,255,198,177,144,255,193,171,139,255,183,159,129,255,168,143,116,255,149,123,101,255,132,105, 87,255,119, 90, 76,255, -110, 81, 69,255,104, 75, 65,255,105, 76, 65,255,109, 80, 68,255,116, 87, 73,255,126, 97, 82,255,138,110, 91,255,150,124,102,255, -163,137,112,255,174,150,121,255,185,162,132,255,196,174,141,255,205,186,154,255,213,196,169,255,218,204,180,255,220,208,186,255, -220,207,186,255,216,203,180,255,215,199,174,255,217,203,180,255,220,208,188,255,221,208,187,255,214,198,173,255,206,186,155,255, -198,177,144,255,193,170,138,255,190,166,135,255,188,165,134,255,187,164,133,255,187,164,133,255,186,163,132,255,186,164,133,255, -185,162,131,255,184,161,132,255,184,161,131,255,181,158,128,255,177,153,124,255,168,143,116,255,154,128,105,255,134,106, 88,255, -110, 81, 69,255, 84, 61, 54,255, 68, 54, 48,255, 64, 52, 46,255, 66, 53, 47,255, 76, 57, 51,255, 94, 67, 59,255,112, 83, 70,255, -128, 99, 83,255,142,116, 96,255,157,131,108,255,170,145,118,255,182,159,129,255,194,171,139,255,203,184,152,255,211,195,169,255, -218,206,183,255,224,213,195,255,226,217,202,255,229,221,207,255,230,223,209,255,229,222,210,255,230,223,210,255,229,223,209,255, -228,220,206,255,225,217,200,255,219,207,186,255,209,191,163,255,193,171,139,255,178,155,125,255,167,143,117,255,159,134,109,255, -155,129,106,255,153,127,104,255,152,126,103,255,150,124,102,255,149,122,100,255,148,121, 99,255,147,120, 99,255,146,119, 98,255, -104, 90, 80,255, 60, 61, 61,255, 60, 60, 60,255,135,124,107,255,204,184,149,255,203,182,149,255,203,182,149,255,203,183,149,255, -203,182,149,255,201,180,146,255,197,175,142,255,189,166,136,255,176,152,124,255,159,134,109,255,141,114, 94,255,126, 97, 81,255, -114, 85, 72,255,107, 78, 67,255,104, 75, 65,255,106, 77, 66,255,113, 84, 71,255,121, 92, 78,255,132,104, 87,255,144,117, 97,255, -156,131,107,255,168,144,117,255,180,157,127,255,192,170,137,255,202,181,148,255,209,192,162,255,215,201,176,255,220,207,185,255, -221,209,188,255,218,206,184,255,215,201,177,255,215,200,177,255,219,207,186,255,222,210,191,255,219,205,183,255,211,193,165,255, -202,182,149,255,196,174,141,255,191,169,137,255,189,166,135,255,188,166,134,255,187,166,134,255,187,164,133,255,187,164,133,255, -187,164,133,255,186,163,132,255,185,162,131,255,184,161,131,255,180,157,127,255,174,150,122,255,164,139,113,255,148,121,100,255, -126, 97, 81,255,101, 73, 62,255, 77, 57, 51,255, 66, 53, 47,255, 63, 52, 47,255, 69, 54, 48,255, 82, 60, 53,255,100, 72, 62,255, -118, 89, 75,255,133,106, 88,255,148,122,100,255,161,137,111,255,174,151,122,255,186,163,132,255,197,176,143,255,207,188,158,255, -214,199,175,255,220,209,188,255,225,216,197,255,228,219,204,255,229,222,208,255,231,224,209,255,231,224,210,255,231,224,210,255, -230,223,209,255,228,220,205,255,224,214,197,255,216,202,179,255,203,184,154,255,188,165,134,255,174,150,122,255,164,139,114,255, -157,131,108,255,154,128,105,255,152,126,103,255,151,125,103,255,150,124,101,255,148,122,100,255,147,121, 99,255,146,120, 99,255, -105, 91, 80,255, 60, 61, 61,255, 60, 60, 60,255,136,125,108,255,205,184,151,255,203,183,150,255,203,183,150,255,203,183,150,255, -203,183,149,255,202,182,148,255,200,179,145,255,194,172,140,255,183,161,130,255,168,143,117,255,150,124,102,255,133,105, 87,255, -120, 91, 76,255,110, 81, 69,255,106, 77, 65,255,106, 77, 66,255,110, 81, 69,255,117, 88, 74,255,126, 99, 82,255,138,111, 92,255, -151,125,102,255,163,138,113,255,175,152,123,255,186,164,133,255,197,175,143,255,206,187,156,255,213,197,171,255,218,206,183,255, -222,209,189,255,220,209,188,255,217,204,182,255,215,200,176,255,217,204,181,255,221,210,190,255,222,210,189,255,216,201,176,255, -207,188,158,255,199,179,145,255,194,172,140,255,191,168,136,255,189,167,135,255,188,166,134,255,188,165,134,255,187,165,134,255, -186,165,134,255,186,164,133,255,186,163,132,255,184,162,131,255,183,160,130,255,179,155,126,255,171,147,120,255,159,133,109,255, -140,113, 93,255,117, 88, 75,255, 92, 66, 58,255, 71, 55, 49,255, 64, 52, 46,255, 65, 52, 47,255, 72, 56, 50,255, 88, 64, 56,255, -107, 78, 66,255,123, 95, 79,255,138,111, 92,255,153,127,104,255,166,141,116,255,179,155,126,255,190,168,136,255,201,180,148,255, -210,193,164,255,217,203,180,255,223,211,192,255,226,217,201,255,229,221,206,255,230,223,210,255,231,224,210,255,230,223,211,255, -231,223,210,255,230,223,208,255,228,219,204,255,222,211,192,255,212,197,171,255,198,178,146,255,182,159,129,255,170,146,119,255, -162,136,111,255,155,130,106,255,153,127,104,255,152,126,103,255,150,124,102,255,150,123,101,255,148,122,100,255,148,121, 99,255, -105, 92, 80,255, 60, 61, 61,255, 60, 60, 60,255,136,125,108,255,206,185,152,255,204,184,151,255,204,184,151,255,204,184,151,255, -204,183,150,255,204,184,151,255,202,182,149,255,198,177,143,255,190,168,136,255,178,154,125,255,160,134,110,255,141,115, 95,255, -126, 97, 81,255,115, 86, 73,255,107, 78, 67,255,105, 76, 65,255,107, 78, 67,255,113, 84, 71,255,122, 93, 78,255,133,105, 87,255, -145,118, 97,255,158,132,107,255,169,145,118,255,181,158,128,255,192,170,138,255,203,182,150,255,211,193,165,255,217,203,178,255, -221,208,187,255,222,210,190,255,219,208,187,255,216,202,179,255,215,201,178,255,219,208,186,255,223,212,192,255,220,207,186,255, -213,196,169,255,204,184,152,255,197,176,143,255,193,170,138,255,190,168,136,255,189,166,135,255,188,166,134,255,189,166,135,255, -187,164,133,255,187,165,134,255,186,164,133,255,185,162,132,255,185,162,131,255,182,159,129,255,177,153,124,255,168,143,117,255, -153,128,104,255,132,105, 87,255,109, 80, 68,255, 83, 61, 54,255, 68, 53, 48,255, 64, 52, 46,255, 67, 53, 47,255, 77, 58, 51,255, - 95, 68, 59,255,112, 83, 70,255,128,100, 84,255,143,116, 96,255,158,132,108,255,170,146,119,255,183,159,129,255,194,172,140,255, -205,185,154,255,213,197,171,255,219,207,185,255,224,214,196,255,228,219,204,255,229,222,208,255,231,224,210,255,230,224,211,255, -230,224,211,255,230,223,210,255,229,222,208,255,226,217,200,255,219,207,186,255,208,190,161,255,192,171,138,255,177,154,125,255, -167,142,116,255,159,133,109,255,154,128,105,255,153,127,104,255,151,125,102,255,150,124,102,255,149,123,101,255,148,122,100,255, -106, 92, 81,255, 60, 61, 61,255, 60, 60, 60,255,136,126,109,255,206,187,154,255,205,185,153,255,205,186,153,255,205,186,153,255, -205,185,153,255,205,185,152,255,204,183,150,255,201,180,147,255,195,174,140,255,184,162,131,255,169,144,118,255,151,125,102,255, -133,106, 88,255,120, 92, 77,255,112, 83, 70,255,107, 78, 66,255,106, 77, 66,255,110, 81, 69,255,118, 89, 75,255,127, 99, 83,255, -139,112, 92,255,151,125,102,255,164,139,113,255,176,152,124,255,187,164,133,255,198,177,143,255,207,188,158,255,215,199,173,255, -220,206,185,255,223,211,191,255,222,210,191,255,218,205,183,255,215,202,179,255,218,204,182,255,222,211,192,255,223,212,192,255, -217,203,180,255,209,190,161,255,201,181,147,255,195,173,140,255,191,169,137,255,191,168,136,255,189,167,136,255,188,167,134,255, -189,166,135,255,188,165,134,255,188,165,134,255,187,164,133,255,186,163,132,255,185,162,131,255,181,157,128,255,175,150,122,255, -164,139,113,255,147,121,100,255,125, 97, 81,255, 99, 72, 62,255, 76, 58, 51,255, 65, 52, 47,255, 64, 52, 46,255, 69, 54, 48,255, - 82, 60, 53,255,101, 73, 63,255,118, 88, 74,255,133,106, 87,255,148,122,100,255,162,137,112,255,175,151,123,255,187,164,133,255, -198,177,144,255,208,189,160,255,215,201,177,255,221,210,190,255,225,217,199,255,228,220,206,255,230,223,210,255,231,224,211,255, -230,224,211,255,231,224,211,255,230,223,210,255,228,221,206,255,225,214,197,255,216,202,179,255,203,183,153,255,187,164,133,255, -173,149,122,255,163,138,113,255,157,132,107,255,154,128,105,255,152,127,104,255,151,125,102,255,150,124,102,255,149,123,101,255, -106, 92, 81,255, 60, 61, 61,255, 60, 60, 60,255,137,127,110,255,207,187,155,255,206,186,154,255,206,186,154,255,205,186,154,255, -205,186,154,255,205,186,154,255,205,185,153,255,204,183,150,255,199,178,144,255,191,169,137,255,178,154,126,255,161,135,110,255, -142,116, 95,255,127, 98, 82,255,115, 86, 73,255,109, 80, 68,255,106, 77, 66,255,108, 78, 67,255,114, 85, 71,255,122, 94, 79,255, -134,106, 88,255,146,119, 98,255,158,133,109,255,170,146,118,255,182,158,129,255,193,171,138,255,203,183,150,255,211,195,167,255, -218,204,181,255,222,210,189,255,222,212,193,255,221,209,189,255,217,203,182,255,217,203,180,255,220,208,188,255,224,213,195,255, -222,210,189,255,214,198,173,255,206,186,155,255,199,177,144,255,194,172,139,255,191,169,137,255,190,168,136,255,189,167,135,255, -188,166,134,255,188,166,134,255,188,165,134,255,188,165,133,255,187,164,133,255,186,163,132,255,184,161,131,255,180,156,126,255, -172,148,120,255,159,134,110,255,140,113, 94,255,117, 88, 74,255, 91, 66, 58,255, 72, 55, 49,255, 65, 52, 47,255, 65, 53, 47,255, - 72, 56, 50,255, 89, 64, 56,255,107, 77, 67,255,123, 94, 79,255,139,111, 92,255,153,127,104,255,166,142,116,255,179,156,127,255, -191,169,137,255,202,182,149,255,211,194,167,255,218,204,182,255,223,213,194,255,227,218,202,255,229,222,208,255,230,224,211,255, -231,224,211,255,231,225,212,255,231,224,212,255,230,223,210,255,228,219,204,255,222,211,192,255,212,197,171,255,197,177,145,255, -181,158,129,255,169,145,118,255,160,135,110,255,155,130,106,255,153,127,104,255,152,126,103,255,150,124,102,255,150,124,101,255, -106, 93, 82,255, 60, 61, 61,255, 60, 60, 60,255,137,127,111,255,209,189,156,255,206,187,155,255,206,187,155,255,206,188,155,255, -206,186,155,255,207,186,155,255,206,186,154,255,205,185,153,255,202,182,149,255,197,175,142,255,186,163,132,255,170,145,118,255, -151,125,103,255,134,107, 89,255,121, 92, 77,255,111, 82, 70,255,107, 77, 66,255,107, 77, 66,255,111, 81, 70,255,118, 89, 75,255, -128,100, 83,255,139,112, 92,255,152,126,103,255,165,139,114,255,177,153,124,255,188,165,134,255,199,178,145,255,208,190,159,255, -215,200,175,255,220,208,186,255,224,212,193,255,223,212,193,255,220,207,187,255,216,202,180,255,218,206,184,255,222,212,194,255, -224,214,196,255,220,206,184,255,211,194,165,255,203,182,150,255,197,175,142,255,193,171,139,255,190,168,136,255,191,169,137,255, -189,167,135,255,190,166,136,255,189,167,135,255,187,165,134,255,188,165,134,255,187,164,133,255,185,163,132,255,183,160,130,255, -178,154,125,255,169,143,117,255,154,128,105,255,133,105, 87,255,109, 80, 68,255, 84, 61, 54,255, 68, 54, 48,255, 64, 52, 46,255, - 66, 53, 47,255, 77, 58, 51,255, 94, 68, 59,255,113, 83, 71,255,128,100, 84,255,144,116, 96,255,157,132,108,255,171,147,120,255, -184,160,130,255,194,173,141,255,205,186,155,255,213,198,173,255,220,208,187,255,224,215,198,255,228,220,205,255,230,223,210,255, -230,224,211,255,232,224,213,255,232,224,213,255,230,224,211,255,230,223,208,255,227,217,201,255,219,207,186,255,207,190,161,255, -191,170,138,255,176,153,125,255,165,141,115,255,158,133,109,255,154,128,105,255,152,126,104,255,151,125,103,255,150,124,102,255, -107, 93, 82,255, 60, 61, 61,255, 60, 60, 60,255,137,128,112,255,209,190,159,255,208,189,158,255,208,189,157,255,207,188,157,255, -207,188,157,255,207,188,157,255,207,188,156,255,206,187,156,255,205,184,152,255,201,180,146,255,193,170,138,255,179,155,126,255, -161,136,111,255,143,116, 96,255,127, 99, 83,255,116, 88, 73,255,110, 79, 68,255,107, 77, 66,255,109, 79, 67,255,115, 85, 72,255, -123, 94, 79,255,134,106, 88,255,146,119, 98,255,158,133,108,255,171,146,119,255,182,159,129,255,194,171,139,255,204,184,151,255, -212,196,168,255,219,205,183,255,223,212,192,255,224,213,195,255,222,211,192,255,219,206,184,255,217,204,182,255,221,209,190,255, -225,215,197,255,223,212,193,255,216,202,177,255,208,189,159,255,200,180,147,255,195,173,140,255,192,170,138,255,191,168,136,255, -191,169,137,255,190,167,136,255,190,166,136,255,189,167,135,255,188,166,135,255,188,165,134,255,187,164,133,255,185,162,132,255, -182,159,128,255,175,151,123,255,164,139,114,255,147,121, 99,255,125, 97, 81,255,100, 72, 63,255, 77, 58, 51,255, 66, 53, 48,255, - 64, 52, 47,255, 70, 54, 48,255, 82, 60, 53,255,101, 73, 63,255,118, 89, 75,255,133,106, 88,255,149,122,101,255,162,137,112,255, -175,152,124,255,188,165,134,255,198,178,145,255,208,190,162,255,216,202,178,255,223,211,192,255,226,218,201,255,229,221,207,255, -231,224,211,255,231,225,212,255,232,226,213,255,232,225,213,255,230,224,211,255,229,221,207,255,224,215,197,255,215,201,178,255, -202,182,151,255,186,163,133,255,172,148,121,255,163,137,112,255,157,131,107,255,153,128,104,255,152,126,103,255,151,125,103,255, -107, 94, 82,255, 60, 61, 61,255, 60, 60, 60,255,138,128,112,255,209,191,160,255,208,189,159,255,208,189,159,255,208,189,158,255, -207,189,158,255,208,189,158,255,207,188,157,255,207,188,157,255,206,187,155,255,204,184,151,255,198,176,143,255,186,164,133,255, -171,146,120,255,152,126,103,255,135,107, 89,255,121, 93, 78,255,112, 83, 71,255,108, 78, 66,255,107, 77, 67,255,112, 82, 70,255, -119, 90, 75,255,129,100, 83,255,140,112, 93,255,152,126,103,255,164,139,114,255,176,153,124,255,188,165,134,255,199,178,145,255, -209,191,161,255,216,202,177,255,221,209,188,255,224,213,195,255,224,214,196,255,221,210,191,255,217,204,183,255,218,206,185,255, -224,213,195,255,226,216,199,255,221,209,189,255,213,197,171,255,205,186,154,255,199,178,145,255,194,172,139,255,192,170,137,255, -191,168,136,255,191,168,136,255,190,167,136,255,190,167,136,255,189,166,135,255,188,166,135,255,187,165,134,255,187,164,133,255, -185,162,132,255,180,157,127,255,172,148,121,255,160,134,110,255,141,114, 94,255,117, 88, 74,255, 92, 66, 58,255, 72, 56, 49,255, - 65, 53, 46,255, 65, 53, 47,255, 73, 56, 50,255, 88, 64, 56,255,107, 78, 67,255,123, 95, 80,255,139,112, 92,255,154,128,105,255, -167,143,116,255,180,157,127,255,192,169,138,255,202,182,151,255,212,195,168,255,218,206,184,255,224,213,196,255,227,220,204,255, -230,223,209,255,231,225,212,255,232,225,213,255,232,226,212,255,231,225,212,255,231,223,210,255,228,219,205,255,222,211,192,255, -211,195,169,255,196,175,143,255,180,157,127,255,168,143,117,255,160,134,110,255,154,129,106,255,152,127,104,255,152,126,103,255, -108, 94, 83,255, 60, 61, 61,255, 60, 60, 60,255,138,129,113,255,211,193,161,255,208,190,161,255,208,190,160,255,208,191,159,255, -209,189,159,255,208,189,159,255,207,189,160,255,208,190,158,255,208,189,157,255,206,187,155,255,202,181,148,255,194,171,138,255, -180,156,127,255,162,136,112,255,143,117, 96,255,128,100, 83,255,117, 88, 74,255,110, 80, 68,255,108, 78, 67,255,109, 79, 68,255, -115, 85, 72,255,123, 94, 79,255,134,106, 89,255,146,119, 98,255,159,133,108,255,171,146,119,255,183,160,129,255,194,172,140,255, -204,184,152,255,213,196,170,255,219,206,183,255,223,212,194,255,226,215,197,255,223,213,196,255,220,208,188,255,217,204,183,255, -221,210,190,255,225,216,199,255,225,215,197,255,219,205,184,255,210,193,164,255,203,183,150,255,196,175,142,255,193,171,139,255, -192,169,137,255,192,170,138,255,191,169,137,255,189,167,135,255,190,167,136,255,189,167,135,255,188,165,135,255,188,165,134,255, -187,164,133,255,184,161,130,255,177,154,126,255,168,145,118,255,155,129,105,255,134,106, 88,255,109, 80, 68,255, 84, 61, 54,255, - 68, 54, 48,255, 64, 52, 47,255, 67, 54, 48,255, 77, 58, 51,255, 95, 68, 60,255,112, 83, 70,255,129,101, 84,255,144,117, 97,255, -158,132,109,255,171,147,120,255,184,161,131,255,196,174,142,255,206,187,157,255,214,199,174,255,221,208,188,255,226,216,200,255, -228,221,206,255,231,224,211,255,232,225,213,255,231,226,213,255,232,226,214,255,232,225,213,255,229,222,209,255,226,217,201,255, -219,206,185,255,207,188,159,255,190,168,137,255,175,151,123,255,165,140,114,255,157,132,108,255,154,128,105,255,152,126,104,255, -108, 94, 83,255, 60, 61, 61,255, 60, 60, 60,255,138,129,114,255,211,193,163,255,210,192,162,255,210,192,162,255,210,191,161,255, -209,191,161,255,209,191,161,255,209,190,161,255,208,190,160,255,208,190,160,255,207,189,157,255,204,185,152,255,198,178,144,255, -188,165,134,255,171,147,120,255,153,127,104,255,135,109, 89,255,122, 93, 78,255,114, 84, 71,255,108, 78, 67,255,108, 78, 67,255, -112, 82, 70,255,119, 89, 75,255,128,100, 83,255,140,113, 92,255,152,126,103,255,164,139,114,255,176,153,124,255,187,165,134,255, -199,178,145,255,208,191,161,255,216,201,178,255,222,210,190,255,225,215,198,255,225,216,199,255,223,212,194,255,218,206,186,255, -219,207,186,255,224,213,196,255,227,218,201,255,223,213,194,255,216,201,177,255,207,189,158,255,200,180,147,255,195,174,141,255, -193,171,139,255,192,170,138,255,192,170,138,255,191,169,137,255,190,168,136,255,190,168,136,255,189,167,135,255,189,166,135,255, -188,165,134,255,186,164,133,255,183,160,129,255,176,152,124,255,166,141,114,255,148,122,100,255,127, 97, 82,255,101, 73, 63,255, - 78, 58, 51,255, 66, 53, 48,255, 64, 52, 47,255, 69, 54, 48,255, 83, 61, 53,255,101, 72, 63,255,119, 89, 75,255,134,107, 88,255, -149,123,101,255,163,138,113,255,176,152,124,255,188,166,134,255,199,179,146,255,209,192,164,255,217,203,180,255,222,212,193,255, -227,219,202,255,230,223,209,255,231,225,212,255,231,226,214,255,232,225,214,255,232,226,213,255,231,225,212,255,229,222,207,255, -224,214,197,255,215,200,176,255,200,181,149,255,183,161,131,255,170,146,119,255,161,137,111,255,155,130,106,255,153,127,104,255, -108, 95, 83,255, 60, 61, 61,255, 60, 60, 60,255,139,130,115,255,211,194,165,255,210,192,163,255,210,192,163,255,209,192,163,255, -209,191,163,255,210,191,162,255,210,191,162,255,209,191,161,255,209,191,161,255,208,190,160,255,207,188,156,255,202,182,150,255, -194,173,140,255,181,157,128,255,163,138,112,255,145,118, 97,255,129,101, 84,255,117, 88, 74,255,111, 81, 69,255,107, 78, 66,255, -109, 79, 68,255,114, 85, 72,255,122, 94, 79,255,134,106, 88,255,145,118, 98,255,157,132,108,255,170,145,118,255,182,159,129,255, -193,172,139,255,204,184,152,255,212,196,169,255,219,206,184,255,223,213,195,255,226,217,200,255,225,216,198,255,221,210,191,255, -218,206,186,255,221,210,191,255,226,217,200,255,226,218,201,255,222,209,189,255,212,197,170,255,205,186,154,255,199,177,144,255, -195,173,140,255,193,171,138,255,192,170,138,255,191,169,138,255,191,169,137,255,190,168,136,255,189,168,135,255,189,167,135,255, -189,166,135,255,188,165,134,255,185,163,132,255,181,157,128,255,173,149,121,255,160,136,111,255,142,115, 94,255,118, 89, 75,255, - 93, 67, 58,255, 72, 55, 49,255, 65, 53, 47,255, 66, 53, 47,255, 72, 56, 50,255, 89, 64, 56,255,108, 78, 67,255,124, 95, 79,255, -140,112, 93,255,154,128,105,255,167,143,117,255,180,157,128,255,192,170,138,255,203,183,152,255,212,196,170,255,219,207,185,255, -224,214,197,255,228,220,205,255,231,223,210,255,232,226,213,255,231,225,214,255,231,225,214,255,232,226,213,255,231,223,211,255, -228,219,204,255,221,210,191,255,210,194,166,255,194,173,141,255,178,155,126,255,167,142,116,255,158,134,109,255,154,128,105,255, -108, 95, 83,255, 60, 61, 61,255, 60, 60, 60,255,139,131,116,255,213,196,166,255,210,193,165,255,211,194,164,255,211,194,165,255, -211,192,164,255,210,193,163,255,210,193,164,255,210,191,163,255,210,192,163,255,210,192,162,255,208,190,160,255,206,186,155,255, -200,179,146,255,189,166,135,255,173,148,121,255,154,128,105,255,136,109, 90,255,123, 94, 79,255,113, 84, 71,255,108, 78, 68,255, -107, 78, 67,255,111, 82, 70,255,118, 89, 75,255,128, 99, 83,255,139,111, 92,255,152,125,102,255,164,138,113,255,176,152,123,255, -187,164,133,255,198,177,144,255,209,190,160,255,216,201,177,255,222,210,190,255,226,216,198,255,227,217,201,255,224,215,197,255, -220,209,189,255,219,207,188,255,223,213,196,255,227,218,203,255,225,216,199,255,219,205,183,255,210,193,165,255,202,183,150,255, -198,176,143,255,194,172,140,255,193,171,139,255,192,170,138,255,191,169,138,255,191,169,137,255,190,167,136,255,189,168,135,255, -189,167,135,255,188,165,134,255,187,165,133,255,184,161,131,255,179,156,126,255,170,145,119,255,155,130,106,255,134,107, 89,255, -110, 81, 69,255, 85, 62, 55,255, 68, 54, 48,255, 65, 52, 47,255, 67, 53, 47,255, 77, 58, 51,255, 96, 68, 60,255,113, 83, 70,255, -129,101, 84,255,144,117, 97,255,159,133,109,255,172,148,121,255,184,161,131,255,196,175,142,255,207,188,158,255,215,200,176,255, -221,210,190,255,226,217,201,255,229,222,208,255,231,225,213,255,232,226,214,255,231,226,214,255,232,226,214,255,231,225,213,255, -229,222,209,255,225,217,200,255,218,205,183,255,204,185,155,255,187,166,134,255,173,149,122,255,163,138,113,255,157,130,107,255, -109, 96, 84,255, 60, 61, 61,255, 60, 60, 60,255,140,131,116,255,213,196,168,255,212,195,167,255,212,195,166,255,212,194,166,255, -211,194,166,255,211,194,165,255,211,193,165,255,211,193,165,255,210,193,164,255,210,192,163,255,209,192,162,255,208,189,159,255, -204,184,151,255,196,174,141,255,182,158,129,255,164,139,113,255,146,119, 98,255,130,102, 84,255,117, 88, 75,255,110, 81, 69,255, -107, 78, 67,255,108, 79, 68,255,114, 85, 72,255,122, 93, 79,255,133,105, 87,255,145,118, 97,255,157,131,107,255,169,145,118,255, -181,157,127,255,192,170,137,255,203,183,151,255,212,195,168,255,219,206,184,255,224,213,195,255,227,217,201,255,226,218,202,255, -224,213,196,255,220,208,188,255,222,210,191,255,226,217,200,255,227,219,204,255,224,214,195,255,216,201,177,255,207,189,159,255, -201,180,147,255,196,175,141,255,194,172,139,255,193,171,139,255,192,170,138,255,192,170,138,255,191,169,137,255,191,168,137,255, -190,168,136,255,189,167,135,255,188,165,134,255,187,164,133,255,183,160,130,255,177,153,124,255,166,141,115,255,150,123,101,255, -127, 98, 82,255,101, 73, 63,255, 78, 59, 52,255, 66, 53, 47,255, 65, 53, 47,255, 69, 55, 48,255, 83, 61, 54,255,102, 73, 63,255, -119, 90, 75,255,134,106, 88,255,149,123,101,255,163,138,113,255,176,153,124,255,188,167,135,255,200,179,147,255,210,193,165,255, -217,204,181,255,223,213,194,255,228,219,204,255,230,223,210,255,231,225,213,255,232,225,214,255,231,226,214,255,232,226,214,255, -231,225,212,255,229,221,207,255,223,213,195,255,213,198,173,255,198,178,146,255,181,158,128,255,168,145,118,255,160,135,110,255, -110, 97, 84,255, 60, 61, 61,255, 60, 60, 60,255,140,132,118,255,214,197,169,255,212,195,168,255,212,195,167,255,211,195,167,255, -211,194,167,255,212,194,167,255,211,194,166,255,211,194,166,255,211,194,165,255,210,193,165,255,210,193,164,255,210,192,163,255, -207,188,156,255,201,180,148,255,190,168,136,255,174,150,122,255,156,130,106,255,138,110, 91,255,123, 95, 80,255,114, 85, 72,255, -108, 79, 68,255,108, 79, 67,255,111, 82, 69,255,117, 88, 74,255,127, 98, 82,255,138,110, 91,255,149,123,101,255,162,137,112,255, -174,150,122,255,186,163,132,255,197,176,142,255,207,188,158,255,215,200,176,255,222,210,190,255,226,217,200,255,227,219,203,255, -226,217,201,255,222,211,194,255,220,207,188,255,223,213,195,255,227,219,204,255,227,219,203,255,221,209,190,255,213,197,171,255, -205,186,155,255,199,178,145,255,195,174,141,255,193,172,139,255,193,171,138,255,192,170,138,255,191,169,138,255,191,169,137,255, -191,168,137,255,190,168,136,255,189,167,135,255,188,165,134,255,186,164,133,255,182,159,128,255,174,150,123,255,162,137,111,255, -143,116, 95,255,119, 90, 76,255, 93, 67, 58,255, 73, 56, 50,255, 65, 53, 47,255, 65, 54, 48,255, 73, 57, 50,255, 89, 64, 56,255, -107, 79, 67,255,124, 95, 79,255,139,112, 93,255,154,128,105,255,167,143,117,255,181,157,128,255,193,171,139,255,203,184,153,255, -212,197,172,255,219,207,187,255,225,215,198,255,228,221,206,255,231,224,211,255,231,225,213,255,232,227,215,255,231,226,214,255, -232,226,213,255,230,224,211,255,227,219,203,255,220,208,188,255,208,190,162,255,191,170,137,255,176,152,123,255,165,140,115,255, -112, 98, 86,255, 60, 61, 61,255, 60, 60, 60,255,141,133,120,255,215,199,172,255,212,196,169,255,213,197,169,255,213,196,169,255, -213,196,169,255,212,196,168,255,212,195,168,255,212,195,168,255,212,195,167,255,212,195,167,255,210,193,166,255,210,193,165,255, -209,192,162,255,205,185,153,255,197,175,142,255,184,161,131,255,166,140,116,255,148,121, 99,255,131,103, 85,255,119, 90, 75,255, -111, 82, 69,255,107, 78, 67,255,108, 79, 68,255,113, 84, 71,255,121, 92, 78,255,131,103, 86,255,142,116, 96,255,155,129,105,255, -168,143,116,255,179,156,126,255,191,168,137,255,202,181,148,255,211,194,166,255,218,205,182,255,224,213,195,255,227,218,202,255, -227,219,204,255,225,216,199,255,221,210,191,255,220,209,190,255,225,216,199,255,228,220,206,255,226,217,200,255,219,205,184,255, -210,193,165,255,203,184,151,255,197,177,144,255,195,174,141,255,193,171,139,255,193,171,139,255,192,170,138,255,191,169,138,255, -191,169,137,255,191,167,137,255,190,168,136,255,189,167,135,255,187,165,134,255,185,162,132,255,180,157,127,255,171,146,119,255, -156,130,107,255,135,107, 89,255,111, 82, 70,255, 85, 62, 55,255, 70, 55, 49,255, 64, 53, 47,255, 67, 54, 48,255, 77, 59, 52,255, - 95, 68, 60,255,113, 83, 71,255,129,101, 83,255,144,117, 97,255,159,134,109,255,172,148,121,255,185,162,132,255,196,176,143,255, -207,189,160,255,215,201,177,255,222,210,191,255,226,217,202,255,229,223,209,255,231,225,213,255,232,226,214,255,232,227,215,255, -231,226,214,255,231,225,213,255,229,222,208,255,225,215,198,255,216,202,179,255,201,183,151,255,184,162,131,255,171,147,119,255, -114,101, 88,255, 60, 61, 61,255, 60, 60, 60,255,142,135,123,255,216,201,176,255,214,198,171,255,214,198,170,255,213,197,170,255, -212,197,170,255,212,197,170,255,213,196,169,255,213,196,169,255,212,196,168,255,212,195,168,255,211,195,167,255,211,194,166,255, -211,193,165,255,208,190,159,255,202,182,149,255,192,170,137,255,176,152,124,255,158,131,108,255,140,112, 92,255,125, 97, 81,255, -114, 85, 72,255,109, 80, 68,255,107, 78, 67,255,110, 81, 69,255,116, 87, 74,255,125, 97, 81,255,136,108, 90,255,148,122,100,255, -160,134,110,255,172,148,120,255,184,161,130,255,195,174,141,255,206,187,157,255,215,199,173,255,221,209,189,255,226,216,199,255, -228,220,205,255,227,219,204,255,224,214,198,255,220,209,191,255,222,212,194,255,227,219,203,255,228,220,205,255,224,214,195,255, -216,201,178,255,208,190,160,255,201,181,148,255,197,176,142,255,194,172,140,255,194,172,139,255,193,171,139,255,192,170,138,255, -192,170,138,255,191,169,137,255,190,168,137,255,190,168,136,255,189,167,135,255,187,165,134,255,184,161,131,255,177,154,125,255, -166,142,116,255,150,124,101,255,128, 99, 83,255,102, 75, 64,255, 79, 59, 52,255, 67, 54, 47,255, 65, 53, 47,255, 70, 55, 49,255, - 82, 61, 53,255,101, 73, 63,255,118, 89, 75,255,134,106, 88,255,149,123,101,255,163,138,113,255,177,153,125,255,189,167,136,255, -200,180,148,255,210,193,167,255,218,205,183,255,223,214,196,255,228,220,205,255,230,224,210,255,232,226,213,255,231,226,214,255, -232,227,215,255,231,226,214,255,231,224,212,255,228,220,206,255,221,211,192,255,210,195,168,255,194,174,142,255,178,155,126,255, -117,105, 90,255, 60, 60, 61,255, 60, 60, 60,255,143,137,126,255,219,204,181,255,215,199,174,255,214,198,172,255,214,198,171,255, -213,197,171,255,213,197,171,255,212,197,170,255,212,196,170,255,212,196,170,255,213,196,169,255,212,196,168,255,212,195,168,255, -211,194,167,255,210,193,164,255,206,187,156,255,198,178,144,255,186,163,132,255,168,144,117,255,150,123,101,255,133,105, 87,255, -120, 91, 77,255,111, 82, 71,255,108, 79, 67,255,108, 79, 67,255,113, 84, 70,255,120, 91, 77,255,129,102, 84,255,141,113, 94,255, -153,127,104,255,165,140,114,255,177,153,124,255,188,166,135,255,200,179,146,255,210,192,163,255,217,203,181,255,224,213,194,255, -227,219,202,255,229,221,206,255,226,218,203,255,223,213,196,255,221,210,191,255,224,215,198,255,228,221,206,255,228,219,205,255, -222,210,190,255,213,198,172,255,205,187,156,255,200,179,146,255,196,175,141,255,195,172,140,255,193,171,139,255,193,171,138,255, -192,170,138,255,191,169,138,255,191,169,137,255,190,168,137,255,190,168,135,255,189,167,135,255,187,165,133,255,182,159,129,255, -174,151,123,255,162,137,112,255,144,116, 96,255,120, 91, 76,255, 94, 67, 59,255, 73, 56, 50,255, 65, 54, 48,255, 66, 54, 48,255, - 73, 57, 50,255, 88, 64, 56,255,108, 78, 67,255,124, 95, 80,255,139,112, 93,255,154,128,106,255,168,144,117,255,181,158,128,255, -193,172,140,255,204,185,155,255,213,198,173,255,219,208,188,255,225,216,200,255,228,221,207,255,231,225,212,255,232,226,214,255, -231,227,215,255,232,226,214,255,232,225,213,255,230,223,210,255,226,217,201,255,218,205,184,255,204,186,157,255,188,166,134,255, -121,109, 94,255, 60, 60, 61,255, 60, 60, 60,255,145,139,128,255,221,208,187,255,216,202,179,255,215,200,174,255,215,199,174,255, -215,199,173,255,214,199,173,255,214,198,172,255,214,198,172,255,214,198,171,255,213,197,171,255,213,197,170,255,213,196,170,255, -213,196,169,255,211,194,167,255,210,191,162,255,204,184,152,255,194,172,139,255,179,154,126,255,160,134,109,255,142,115, 95,255, -127, 99, 82,255,116, 87, 73,255,109, 80, 69,255,107, 78, 67,255,109, 80, 69,255,115, 86, 73,255,124, 95, 80,255,134,106, 88,255, -145,119, 98,255,158,132,108,255,170,146,119,255,182,158,129,255,193,171,139,255,204,184,152,255,213,197,171,255,220,207,186,255, -225,215,198,255,228,220,205,255,229,221,206,255,226,218,201,255,222,211,193,255,221,211,193,255,226,218,201,255,230,222,208,255, -227,218,201,255,219,206,185,255,211,194,166,255,204,184,152,255,198,177,144,255,195,174,141,255,195,173,140,255,194,172,139,255, -193,171,139,255,192,170,138,255,191,170,138,255,191,169,137,255,189,167,135,255,190,168,136,255,188,166,135,255,186,163,132,255, -180,157,128,255,170,147,119,255,157,131,107,255,136,108, 90,255,111, 82, 70,255, 86, 63, 55,255, 69, 55, 49,255, 66, 53, 47,255, - 67, 54, 48,255, 77, 59, 51,255, 95, 68, 59,255,113, 84, 71,255,129,101, 84,255,144,117, 97,255,159,134,110,255,173,149,121,255, -185,163,132,255,197,176,144,255,208,190,161,255,215,202,179,255,222,211,192,255,227,218,203,255,229,223,209,255,231,225,213,255, -232,226,214,255,232,227,215,255,232,226,214,255,231,225,212,255,228,221,207,255,223,213,196,255,213,198,174,255,199,179,146,255, -125,114, 98,255, 60, 60, 61,255, 60, 60, 60,255,141,135,124,255,223,211,191,255,219,206,184,255,216,202,178,255,215,200,175,255, -214,199,174,255,215,200,174,255,215,199,173,255,214,199,173,255,214,198,172,255,214,198,172,255,213,198,171,255,213,197,171,255, -212,197,170,255,212,196,169,255,211,194,166,255,207,189,159,255,200,180,147,255,188,166,134,255,171,147,119,255,152,126,103,255, -135,108, 89,255,122, 93, 79,255,113, 84, 71,255,108, 79, 67,255,108, 79, 67,255,111, 82, 69,255,119, 89, 75,255,127, 99, 83,255, -138,111, 92,255,150,124,102,255,163,137,112,255,174,150,122,255,186,164,132,255,197,176,143,255,208,189,159,255,216,201,178,255, -222,211,191,255,226,217,200,255,228,220,205,255,227,219,204,255,225,215,198,255,221,211,192,255,223,213,196,255,228,220,205,255, -229,222,208,255,225,215,197,255,216,202,179,255,208,190,161,255,202,182,149,255,198,176,143,255,195,173,141,255,194,173,140,255, -194,172,139,255,192,171,138,255,192,170,138,255,192,170,138,255,191,169,137,255,190,168,136,255,189,167,135,255,188,166,134,255, -184,161,131,255,178,154,125,255,167,143,116,255,151,124,102,255,128,100, 83,255,103, 75, 65,255, 79, 59, 52,255, 67, 54, 48,255, - 65, 53, 48,255, 69, 55, 49,255, 82, 61, 54,255,101, 72, 63,255,119, 89, 75,255,135,107, 89,255,149,124,101,255,164,139,114,255, -177,155,125,255,189,168,136,255,201,181,149,255,211,194,168,255,218,205,184,255,224,214,197,255,228,221,206,255,231,224,211,255, -231,226,214,255,231,227,215,255,231,227,215,255,232,226,214,255,230,224,211,255,227,219,204,255,220,208,188,255,209,191,163,255, -131,120,103,255, 60, 60, 60,255, 60, 60, 60,255,136,129,117,255,220,208,187,255,222,210,189,255,218,205,183,255,216,201,177,255, -215,200,175,255,215,200,175,255,214,199,174,255,214,199,174,255,214,199,174,255,213,198,173,255,214,198,172,255,214,198,172,255, -213,197,171,255,213,197,171,255,213,196,169,255,210,193,165,255,205,186,154,255,196,175,142,255,181,159,129,255,164,139,113,255, -145,118, 98,255,129,101, 85,255,118, 89, 75,255,111, 82, 69,255,107, 78, 67,255,108, 79, 67,255,113, 84, 71,255,121, 93, 77,255, -132,103, 86,255,142,115, 95,255,154,129,105,255,167,142,116,255,179,155,126,255,190,168,136,255,201,181,149,255,209,192,164,255, -216,202,178,255,221,209,189,255,224,214,196,255,226,217,201,255,225,217,200,255,222,213,195,255,222,211,192,255,225,216,200,255, -229,222,208,255,229,221,206,255,222,211,192,255,213,198,173,255,206,188,157,255,201,180,147,255,197,175,142,255,195,173,141,255, -194,173,140,255,193,171,139,255,192,171,138,255,192,170,138,255,192,169,138,255,191,169,137,255,190,168,136,255,189,166,135,255, -187,165,133,255,183,160,130,255,175,151,123,255,162,138,113,255,144,117, 96,255,120, 92, 77,255, 94, 68, 59,255, 73, 56, 50,255, - 65, 54, 47,255, 66, 54, 47,255, 73, 57, 50,255, 88, 65, 56,255,107, 78, 67,255,124, 95, 80,255,139,112, 93,255,154,129,106,255, -169,144,118,255,181,159,129,255,194,173,140,255,205,186,156,255,213,199,174,255,220,209,189,255,226,216,201,255,229,222,208,255, -230,225,212,255,232,226,214,255,232,227,215,255,232,226,214,255,231,225,213,255,229,222,209,255,224,215,198,255,216,203,180,255, -136,127,112,255, 60, 60, 60,255, 60, 60, 60,255,144,138,128,255,208,195,173,255,223,212,193,255,221,209,188,255,218,204,181,255, -216,202,177,255,216,201,177,255,216,201,176,255,215,200,176,255,215,200,175,255,215,200,175,255,215,199,174,255,215,199,174,255, -214,199,173,255,214,198,172,255,213,197,171,255,213,196,169,255,208,191,161,255,203,183,150,255,191,169,137,255,175,151,123,255, -156,130,106,255,138,111, 91,255,124, 96, 81,255,114, 85, 72,255,108, 79, 68,255,107, 78, 67,255,109, 80, 69,255,116, 87, 74,255, -124, 96, 80,255,134,107, 89,255,146,120, 98,255,159,133,109,255,171,146,120,255,183,160,129,255,193,171,139,255,202,182,149,255, -209,191,161,255,212,197,171,255,215,201,177,255,217,203,180,255,219,206,184,255,222,209,190,255,221,210,192,255,222,213,195,255, -227,218,204,255,229,223,209,255,227,218,203,255,220,207,186,255,211,195,168,255,204,185,153,255,200,179,146,255,196,174,142,255, -195,174,141,255,194,173,140,255,193,171,139,255,193,171,139,255,192,170,138,255,192,170,138,255,191,169,137,255,190,167,136,255, -189,166,135,255,186,163,132,255,180,157,128,255,171,148,120,255,157,132,108,255,136,109, 91,255,112, 82, 71,255, 87, 63, 55,255, - 69, 55, 49,255, 66, 53, 47,255, 68, 54, 48,255, 77, 58, 52,255, 95, 68, 60,255,113, 84, 71,255,129,101, 84,255,145,118, 97,255, -160,134,110,255,173,149,122,255,186,163,132,255,198,177,144,255,208,191,163,255,216,203,180,255,222,212,194,255,227,219,204,255, -230,223,210,255,231,226,214,255,232,226,215,255,231,227,214,255,231,225,214,255,230,225,212,255,228,220,206,255,222,212,193,255, -141,133,121,255, 60, 60, 60,255, 60, 60, 60,255,146,140,130,255,219,207,187,255,212,199,178,255,224,213,193,255,220,207,186,255, -218,204,180,255,217,202,178,255,216,202,177,255,215,201,177,255,216,201,176,255,216,201,175,255,215,200,175,255,215,200,174,255, -215,199,174,255,214,199,173,255,214,198,173,255,213,198,171,255,211,194,167,255,207,189,158,255,199,178,145,255,185,163,132,255, -167,143,117,255,149,123,101,255,133,105, 87,255,120, 91, 77,255,112, 83, 70,255,108, 78, 67,255,108, 79, 67,255,112, 82, 70,255, -119, 90, 76,255,128, 99, 84,255,139,111, 92,255,151,125,103,255,164,138,113,255,175,152,123,255,185,162,132,255,193,171,139,255, -197,176,143,255,196,175,143,255,192,170,139,255,189,166,135,255,190,168,138,255,198,178,148,255,208,191,164,255,218,206,184,255, -225,215,198,255,229,221,207,255,230,222,209,255,225,216,198,255,217,203,181,255,209,192,163,255,203,183,151,255,198,177,144,255, -195,174,141,255,194,174,140,255,194,172,140,255,193,171,139,255,192,170,139,255,192,170,138,255,191,170,138,255,191,168,136,255, -189,168,136,255,188,166,135,255,185,162,131,255,178,155,126,255,167,143,117,255,151,125,103,255,129,101, 84,255,103, 75, 64,255, - 79, 60, 52,255, 67, 54, 48,255, 65, 54, 47,255, 69, 55, 50,255, 82, 61, 54,255,101, 73, 63,255,119, 90, 76,255,135,107, 89,255, -150,124,102,255,164,140,114,255,178,154,126,255,190,169,136,255,202,182,150,255,211,195,169,255,218,206,185,255,224,215,198,255, -228,221,206,255,230,224,211,255,231,225,214,255,232,226,214,255,232,225,214,255,231,225,213,255,229,223,210,255,227,218,202,255, -144,138,128,255, 60, 60, 60,255, 60, 60, 60,255,144,138,128,255,224,213,193,255,214,202,181,255,218,208,188,255,222,211,192,255, -220,207,185,255,217,203,180,255,216,202,178,255,216,201,178,255,216,201,177,255,215,201,177,255,215,200,176,255,215,200,176,255, -214,199,175,255,214,199,174,255,214,199,174,255,214,198,173,255,213,198,171,255,211,193,165,255,204,185,154,255,195,173,140,255, -179,156,126,255,161,135,111,255,143,116, 95,255,128,100, 83,255,117, 88, 74,255,110, 81, 68,255,107, 78, 66,255,109, 79, 68,255, -114, 84, 72,255,122, 92, 78,255,132,104, 86,255,144,117, 96,255,156,131,107,255,168,143,117,255,178,154,125,255,182,159,129,255, -178,155,125,255,168,144,118,255,160,137,113,255,158,133,110,255,159,135,112,255,164,140,116,255,175,153,124,255,195,174,144,255, -214,199,175,255,226,216,200,255,229,222,208,255,229,221,207,255,223,212,194,255,214,200,175,255,207,189,159,255,201,181,148,255, -197,176,143,255,195,173,141,255,194,172,140,255,194,172,140,255,193,171,138,255,192,170,138,255,191,170,138,255,190,168,137,255, -191,169,136,255,190,168,136,255,188,165,134,255,183,160,130,255,175,152,123,255,163,138,113,255,144,118, 97,255,121, 92, 77,255, - 95, 69, 60,255, 74, 57, 51,255, 66, 54, 47,255, 66, 55, 48,255, 73, 57, 51,255, 89, 65, 56,255,107, 78, 67,255,124, 96, 80,255, -140,113, 93,255,155,129,106,255,169,144,118,255,182,159,129,255,194,173,141,255,204,187,156,255,214,199,176,255,220,209,190,255, -225,217,201,255,229,222,208,255,231,225,212,255,231,226,213,255,231,226,215,255,231,226,213,255,231,225,212,255,229,222,207,255, -146,142,133,255, 60, 60, 60,255, 60, 60, 60,255,143,136,125,255,223,212,192,255,222,211,192,255,213,201,181,255,224,214,196,255, -222,211,191,255,219,206,183,255,218,204,180,255,217,203,179,255,217,203,179,255,217,203,179,255,216,202,178,255,215,201,177,255, -216,201,177,255,215,200,176,255,215,200,175,255,214,200,175,255,214,198,173,255,212,197,170,255,210,192,163,255,202,182,150,255, -190,168,136,255,173,149,121,255,154,128,105,255,137,109, 91,255,123, 95, 79,255,114, 84, 72,255,109, 79, 68,255,108, 78, 67,255, -110, 80, 69,255,117, 87, 73,255,125, 96, 81,255,137,109, 90,255,150,123,101,255,161,136,111,255,168,144,117,255,164,140,114,255, -155,130,108,255,148,124,104,255,144,120,102,255,144,120,101,255,144,120,103,255,148,124,104,255,156,131,109,255,168,144,118,255, -189,166,135,255,212,196,169,255,225,215,197,255,229,221,207,255,227,219,203,255,220,208,188,255,212,196,170,255,205,186,156,255, -200,179,146,255,197,176,142,255,195,173,141,255,195,172,140,255,194,172,139,255,193,171,138,255,193,171,139,255,192,170,138,255, -191,168,137,255,190,169,137,255,189,167,135,255,186,163,133,255,181,158,128,255,173,148,121,255,158,133,109,255,137,109, 91,255, -113, 84, 70,255, 87, 64, 56,255, 70, 56, 49,255, 65, 54, 48,255, 68, 55, 49,255, 77, 59, 52,255, 95, 69, 60,255,113, 84, 71,255, -129,101, 84,255,144,118, 97,255,159,135,110,255,173,150,122,255,186,164,133,255,198,178,145,255,208,191,163,255,216,203,181,255, -222,212,194,255,226,219,204,255,229,223,210,255,230,225,213,255,231,226,213,255,232,225,214,255,231,226,213,255,231,225,212,255, -148,144,137,255, 59, 60, 60,255, 60, 60, 60,255,142,134,121,255,221,208,187,255,223,213,195,255,216,204,184,255,217,206,187,255, -225,215,197,255,221,209,189,255,219,206,183,255,217,204,181,255,217,203,180,255,216,202,179,255,216,203,179,255,216,202,178,255, -216,202,178,255,215,201,177,255,216,201,176,255,215,200,176,255,214,200,175,255,214,199,173,255,212,195,169,255,207,189,159,255, -198,178,145,255,185,161,131,255,166,142,115,255,148,122, 99,255,132,104, 86,255,120, 91, 76,255,112, 82, 70,255,108, 78, 67,255, -108, 78, 67,255,113, 83, 71,255,120, 91, 77,255,131,103, 85,255,144,117, 96,255,155,130,106,255,157,131,108,255,150,125,104,255, -143,119,101,255,140,116,100,255,140,116, 99,255,141,117,100,255,145,120,101,255,150,126,105,255,157,132,109,255,166,142,116,255, -177,154,124,255,194,172,140,255,211,195,168,255,223,212,194,255,228,219,204,255,225,216,199,255,218,205,183,255,210,193,165,255, -203,184,152,255,198,178,144,255,196,174,142,255,195,173,141,255,194,172,140,255,193,172,139,255,193,171,139,255,192,170,138,255, -191,170,137,255,190,169,136,255,189,167,136,255,188,166,134,255,185,163,132,255,179,155,126,255,168,144,117,255,152,126,103,255, -129,101, 84,255,104, 76, 65,255, 80, 60, 53,255, 68, 55, 49,255, 66, 54, 48,255, 70, 56, 49,255, 82, 62, 54,255,101, 73, 63,255, -118, 90, 75,255,134,106, 88,255,149,124,102,255,164,140,114,255,177,154,126,255,190,168,137,255,202,182,151,255,211,196,169,255, -218,206,186,255,224,214,198,255,228,220,206,255,230,224,211,255,231,225,213,255,231,226,214,255,231,226,214,255,232,226,213,255, -148,145,138,255, 59, 60, 60,255, 60, 60, 60,255,139,131,116,255,218,203,180,255,222,211,191,255,225,215,197,255,209,197,177,255, -223,214,195,255,224,214,196,255,220,208,187,255,218,205,182,255,217,204,181,255,217,203,180,255,217,203,180,255,216,202,179,255, -216,202,178,255,216,202,178,255,215,201,178,255,216,201,177,255,215,200,176,255,215,200,175,255,213,198,173,255,211,194,167,255, -205,186,155,255,195,172,140,255,179,155,126,255,160,134,110,255,142,115, 95,255,128, 99, 83,255,117, 87, 74,255,111, 81, 69,255, -108, 78, 67,255,109, 79, 68,255,116, 86, 74,255,126, 98, 82,255,140,114, 94,255,150,124,102,255,148,123,102,255,142,118,101,255, -140,116,100,255,140,116,100,255,143,119,102,255,149,124,104,255,158,134,110,255,167,143,117,255,177,153,124,255,186,163,132,255, -192,170,138,255,200,179,146,255,207,189,159,255,216,202,178,255,224,213,194,255,227,217,202,255,224,213,195,255,215,202,178,255, -207,190,161,255,202,181,149,255,197,177,144,255,196,175,141,255,194,173,140,255,194,172,140,255,193,171,139,255,192,171,138,255, -192,170,138,255,191,169,137,255,190,168,136,255,189,167,136,255,188,165,134,255,183,161,130,255,176,153,124,255,164,138,113,255, -145,118, 98,255,121, 92, 78,255, 95, 69, 60,255, 74, 57, 51,255, 66, 55, 48,255, 67, 55, 48,255, 73, 58, 51,255, 89, 65, 57,255, -108, 79, 67,255,124, 95, 80,255,139,113, 93,255,154,129,106,255,168,145,118,255,182,159,129,255,194,173,141,255,204,187,156,255, -213,199,175,255,220,210,190,255,225,217,200,255,228,221,208,255,230,224,211,255,231,225,213,255,230,226,214,255,232,226,214,255, -149,146,139,255, 59, 60, 60,255, 60, 60, 60,255,137,127,111,255,214,197,170,255,220,207,186,255,224,215,196,255,224,214,196,255, -211,200,180,255,225,216,199,255,223,212,194,255,220,207,187,255,219,205,183,255,218,205,182,255,217,204,181,255,218,204,181,255, -218,204,180,255,217,203,180,255,217,203,179,255,216,202,178,255,216,202,177,255,216,201,177,255,215,200,176,255,213,198,172,255, -209,192,164,255,202,182,150,255,189,167,136,255,172,149,121,255,154,128,105,255,137,109, 90,255,123, 94, 79,255,114, 84, 72,255, -109, 80, 68,255,109, 79, 68,255,113, 83, 71,255,123, 95, 79,255,138,111, 91,255,145,120, 98,255,143,118,101,255,141,117,101,255, -143,119,101,255,149,124,104,255,158,134,110,255,170,146,119,255,182,159,129,255,192,170,138,255,199,179,146,255,205,186,154,255, -209,191,162,255,212,196,168,255,215,199,175,255,217,204,181,255,221,209,189,255,225,215,199,255,227,218,202,255,222,210,191,255, -213,198,172,255,206,188,157,255,201,180,147,255,197,176,143,255,196,175,142,255,195,173,141,255,194,172,140,255,193,171,139,255, -192,171,139,255,191,170,138,255,191,169,137,255,190,168,136,255,189,167,136,255,186,164,133,255,182,158,128,255,172,149,121,255, -158,133,109,255,138,110, 91,255,112, 83, 71,255, 87, 64, 55,255, 70, 56, 49,255, 66, 54, 49,255, 68, 55, 49,255, 78, 60, 52,255, - 95, 69, 60,255,113, 84, 71,255,128,101, 84,255,144,118, 98,255,159,135,110,255,173,150,122,255,186,164,133,255,198,177,145,255, -208,191,163,255,215,203,180,255,222,212,193,255,226,218,203,255,229,222,209,255,230,224,212,255,231,224,212,255,232,226,214,255, -149,146,140,255, 59, 60, 60,255, 60, 60, 60,255,134,123,106,255,210,191,160,255,216,202,178,255,222,211,191,255,226,216,199,255, -220,209,191,255,219,208,190,255,226,216,200,255,223,211,193,255,220,207,186,255,219,205,184,255,218,205,183,255,218,205,182,255, -217,204,181,255,218,203,181,255,217,203,180,255,216,202,179,255,217,202,179,255,216,202,178,255,215,201,177,255,215,200,175,255, -213,197,171,255,208,190,161,255,199,178,146,255,184,162,131,255,166,141,115,255,148,121,100,255,132,104, 86,255,120, 91, 77,255, -112, 83, 70,255,110, 80, 68,255,113, 83, 71,255,125, 96, 80,255,141,114, 94,255,146,121,101,255,145,121,103,255,148,123,104,255, -156,131,109,255,168,144,118,255,182,159,128,255,192,171,139,255,199,178,145,255,204,183,150,255,207,188,156,255,209,191,162,255, -211,194,167,255,213,198,173,255,216,202,179,255,218,205,184,255,220,208,188,255,223,213,195,255,227,218,202,255,226,217,201,255, -219,207,186,255,211,195,167,255,204,185,154,255,199,178,146,255,196,175,143,255,195,174,141,255,195,173,140,255,193,172,139,255, -193,171,139,255,192,171,138,255,191,169,137,255,191,169,137,255,190,168,136,255,189,166,135,255,185,163,132,255,179,156,126,255, -169,144,117,255,152,126,103,255,130,102, 84,255,104, 76, 65,255, 79, 60, 53,255, 67, 55, 48,255, 65, 54, 48,255, 70, 56, 49,255, - 83, 62, 54,255,101, 73, 63,255,118, 89, 75,255,134,106, 88,255,150,124,101,255,163,139,114,255,177,154,125,255,190,168,137,255, -201,182,150,255,211,195,168,255,217,206,185,255,223,214,197,255,227,220,205,255,229,223,210,255,230,224,212,255,232,226,214,255, -149,146,140,255, 59, 60, 60,255, 60, 60, 61,255,131,119,102,255,203,183,150,255,211,194,166,255,219,206,184,255,224,214,196,255, -226,217,200,255,213,201,183,255,225,216,200,255,226,216,199,255,222,211,191,255,219,207,185,255,219,206,184,255,218,205,183,255, -218,205,182,255,217,204,182,255,217,204,181,255,217,203,180,255,216,203,180,255,217,202,179,255,216,202,178,255,215,201,177,255, -215,200,175,255,212,195,168,255,205,187,155,255,195,173,141,255,179,156,126,255,160,135,110,255,143,115, 95,255,127, 99, 83,255, -118, 89, 74,255,112, 82, 70,255,114, 85, 72,255,128,100, 82,255,144,118, 97,255,150,126,105,255,154,130,108,255,164,139,114,255, -177,154,125,255,189,167,135,255,196,175,142,255,201,180,147,255,203,183,150,255,205,185,154,255,207,188,157,255,207,190,160,255, -210,192,164,255,211,194,168,255,213,198,173,255,216,202,178,255,217,205,182,255,221,209,189,255,225,216,199,255,228,220,206,255, -225,216,199,255,216,203,180,255,209,191,163,255,202,183,150,255,198,178,145,255,196,175,142,255,195,174,141,255,194,173,140,255, -193,172,139,255,193,171,139,255,192,170,138,255,191,169,137,255,191,169,137,255,189,167,135,255,187,165,134,255,184,161,131,255, -175,152,124,255,163,139,114,255,145,119, 97,255,121, 92, 77,255, 95, 69, 60,255, 73, 57, 50,255, 66, 54, 48,255, 67, 55, 48,255, - 73, 58, 51,255, 88, 65, 57,255,107, 78, 66,255,123, 95, 80,255,139,111, 92,255,154,128,106,255,168,144,118,255,181,158,129,255, -193,173,140,255,204,186,156,255,213,198,174,255,219,209,188,255,224,216,199,255,228,221,206,255,229,223,210,255,231,225,213,255, -149,146,139,255, 59, 60, 60,255, 60, 60, 61,255,128,115, 99,255,197,175,142,255,206,187,156,255,215,200,174,255,221,210,190,255, -226,217,199,255,224,215,198,255,212,201,182,255,227,219,203,255,225,215,198,255,222,210,191,255,219,207,186,255,219,206,185,255, -218,205,184,255,219,205,183,255,218,205,183,255,218,205,182,255,218,204,181,255,217,203,180,255,216,203,180,255,217,202,179,255, -216,201,178,255,214,199,174,255,210,193,165,255,203,183,151,255,190,168,137,255,173,149,121,255,154,128,105,255,138,110, 91,255, -124, 96, 80,255,118, 88, 75,255,119, 91, 76,255,135,108, 89,255,151,125,102,255,158,133,111,255,168,144,117,255,181,158,128,255, -192,170,138,255,199,177,144,255,201,181,148,255,203,183,150,255,204,185,153,255,205,187,155,255,207,188,157,255,207,189,160,255, -208,190,161,255,210,192,164,255,211,194,168,255,212,197,172,255,215,201,177,255,217,204,182,255,222,211,193,255,227,219,204,255, -228,221,207,255,223,212,195,255,215,200,176,255,207,189,159,255,201,181,148,255,197,176,143,255,196,174,142,255,195,173,141,255, -194,173,140,255,193,172,140,255,192,171,138,255,192,170,138,255,191,169,137,255,190,168,136,255,189,167,135,255,186,164,133,255, -181,158,128,255,172,149,121,255,158,134,109,255,137,110, 92,255,113, 83, 71,255, 86, 63, 56,255, 69, 56, 49,255, 65, 54, 49,255, - 68, 55, 48,255, 77, 59, 52,255, 94, 69, 60,255,112, 83, 70,255,128,100, 84,255,144,117, 96,255,158,133,109,255,172,149,121,255, -185,163,132,255,197,177,144,255,207,190,160,255,215,202,179,255,221,211,192,255,225,217,202,255,228,221,207,255,231,225,212,255, -149,146,139,255, 59, 60, 60,255, 60, 60, 61,255,124,112, 97,255,191,168,136,255,200,179,146,255,210,191,163,255,217,204,180,255, -224,213,195,255,228,219,204,255,221,211,194,255,215,205,187,255,228,219,203,255,224,214,196,255,221,210,189,255,220,207,186,255, -219,206,185,255,218,206,184,255,219,205,184,255,219,205,183,255,218,204,182,255,218,204,181,255,217,203,181,255,216,203,180,255, -217,202,179,255,215,201,178,255,213,198,172,255,208,191,162,255,200,179,147,255,185,162,132,255,167,143,116,255,149,122,100,255, -134,106, 88,255,124, 96, 80,255,126, 98, 81,255,144,118, 97,255,161,136,111,255,172,148,121,255,185,162,131,255,195,173,140,255, -199,178,145,255,202,181,148,255,203,183,150,255,204,185,153,255,205,187,155,255,205,187,156,255,207,188,158,255,207,189,159,255, -207,189,160,255,208,191,161,255,209,192,164,255,210,194,167,255,212,196,171,255,214,199,176,255,217,205,183,255,224,215,197,255, -229,222,208,255,228,221,206,255,221,209,189,255,212,197,170,255,204,186,156,255,200,180,147,255,196,175,142,255,195,174,141,255, -194,173,140,255,194,173,140,255,193,171,139,255,192,171,138,255,192,170,138,255,190,169,137,255,189,168,136,255,188,166,135,255, -185,162,132,255,178,155,126,255,168,144,118,255,152,127,104,255,129,101, 84,255,103, 75, 65,255, 79, 60, 53,255, 67, 55, 49,255, - 66, 55, 48,255, 70, 57, 49,255, 82, 62, 54,255,100, 73, 63,255,117, 88, 75,255,133,105, 87,255,148,122,100,255,162,138,113,255, -176,153,124,255,188,168,135,255,200,181,149,255,209,194,166,255,216,205,183,255,223,213,196,255,226,219,203,255,230,223,209,255, -149,146,138,255, 59, 60, 60,255, 60, 60, 61,255,121,109, 94,255,184,161,131,255,193,171,138,255,203,183,151,255,212,196,170,255, -220,208,186,255,226,216,198,255,228,220,204,255,218,209,192,255,222,213,197,255,227,218,202,255,224,213,194,255,221,209,189,255, -219,207,186,255,219,206,185,255,219,206,185,255,218,205,184,255,219,205,183,255,218,205,183,255,218,204,181,255,217,204,181,255, -217,203,180,255,216,202,179,255,215,201,177,255,212,196,170,255,207,188,158,255,196,174,143,255,180,156,127,255,162,136,111,255, -145,118, 97,255,133,106, 87,255,136,108, 89,255,154,128,105,255,173,149,120,255,185,162,132,255,194,172,139,255,198,177,144,255, -202,181,148,255,203,184,150,255,204,185,153,255,205,187,156,255,206,187,157,255,206,188,158,255,207,189,159,255,208,190,160,255, -208,189,159,255,207,190,161,255,208,191,162,255,209,192,164,255,210,193,166,255,211,196,170,255,214,199,174,255,220,208,187,255, -227,218,203,255,231,224,210,255,227,218,203,255,218,206,185,255,210,194,166,255,203,184,153,255,199,178,145,255,196,175,142,255, -195,174,141,255,194,173,140,255,193,171,139,255,193,171,139,255,192,170,138,255,190,169,137,255,191,168,136,255,190,168,136,255, -188,165,134,255,183,160,130,255,176,152,125,255,164,140,113,255,145,119, 97,255,120, 92, 77,255, 95, 68, 60,255, 74, 57, 51,255, - 66, 55, 48,255, 66, 55, 49,255, 73, 58, 51,255, 88, 64, 57,255,105, 77, 66,255,122, 93, 78,255,138,110, 92,255,152,127,104,255, -166,143,117,255,180,157,128,255,192,171,139,255,203,185,154,255,213,198,174,255,219,208,188,255,224,216,199,255,228,220,206,255, -148,144,137,255, 59, 60, 60,255, 60, 60, 61,255,118,105, 91,255,177,154,125,255,186,163,133,255,197,175,142,255,207,188,157,255, -215,200,175,255,222,211,191,255,227,218,202,255,227,219,203,255,215,205,188,255,227,219,204,255,227,218,201,255,223,213,194,255, -221,209,189,255,220,208,187,255,220,207,186,255,220,207,185,255,219,206,185,255,219,206,184,255,218,205,183,255,218,205,182,255, -218,204,182,255,217,204,181,255,216,202,179,255,214,200,177,255,211,195,167,255,204,185,153,255,192,169,138,255,175,151,123,255, -158,132,108,255,144,117, 96,255,147,120, 98,255,165,141,114,255,183,159,129,255,193,171,138,255,196,175,142,255,200,179,146,255, -203,183,151,255,204,185,153,255,206,187,156,255,207,188,157,255,207,189,159,255,208,190,160,255,208,190,160,255,207,189,160,255, -208,190,160,255,208,189,161,255,207,189,160,255,208,190,161,255,208,192,163,255,210,193,165,255,211,195,169,255,214,201,176,255, -222,211,192,255,228,221,207,255,230,224,210,255,225,215,198,255,216,202,180,255,208,191,162,255,202,182,151,255,197,177,144,255, -196,174,142,255,195,174,141,255,194,173,140,255,193,172,139,255,193,171,139,255,191,169,137,255,191,169,137,255,190,168,137,255, -189,167,135,255,186,164,133,255,181,159,129,255,173,149,121,255,158,133,109,255,137,109, 91,255,112, 84, 71,255, 87, 64, 56,255, - 71, 56, 50,255, 65, 55, 48,255, 68, 56, 49,255, 76, 59, 52,255, 93, 68, 59,255,111, 82, 70,255,126, 98, 81,255,141,115, 95,255, -157,131,108,255,170,147,120,255,183,161,131,255,196,177,144,255,207,190,163,255,215,201,178,255,221,210,192,255,226,217,201,255, -147,142,135,255, 59, 60, 60,255, 60, 61, 61,255,116,102, 89,255,172,147,120,255,180,156,127,255,190,167,135,255,200,179,146,255, -209,192,163,255,218,204,181,255,225,214,196,255,228,220,204,255,225,216,200,255,215,204,186,255,229,221,206,255,226,217,200,255, -223,212,193,255,221,209,189,255,220,208,187,255,219,207,186,255,219,207,186,255,219,206,185,255,219,206,184,255,218,205,183,255, -218,205,183,255,218,204,182,255,217,203,181,255,216,202,179,255,214,199,174,255,209,192,164,255,201,181,149,255,187,165,134,255, -170,146,119,255,156,130,107,255,156,130,106,255,174,149,121,255,190,167,135,255,194,172,140,255,197,175,143,255,201,180,148,255, -204,185,153,255,206,187,156,255,206,188,158,255,207,189,159,255,208,190,160,255,207,190,160,255,207,190,161,255,207,189,161,255, -208,189,161,255,208,190,160,255,208,190,161,255,207,189,160,255,208,190,161,255,208,191,162,255,209,192,165,255,211,195,169,255, -216,202,179,255,224,214,197,255,230,223,210,255,229,223,209,255,223,213,194,255,214,199,174,255,206,189,159,255,201,180,148,255, -197,176,143,255,195,174,141,255,194,173,140,255,194,172,140,255,193,171,139,255,191,170,138,255,191,170,137,255,190,168,137,255, -189,167,135,255,188,166,135,255,185,163,132,255,179,155,127,255,168,144,118,255,151,126,103,255,129,101, 84,255,103, 76, 65,255, - 80, 61, 53,255, 68, 55, 49,255, 65, 55, 48,255, 69, 56, 50,255, 81, 62, 54,255, 98, 71, 62,255,116, 86, 73,255,131,103, 86,255, -146,120, 98,255,160,136,111,255,175,152,123,255,189,168,137,255,201,183,151,255,209,193,166,255,216,204,181,255,223,213,195,255, -146,141,132,255, 60, 60, 60,255, 60, 61, 61,255,113,100, 87,255,167,142,114,255,173,149,122,255,183,159,130,255,193,171,138,255, -203,183,151,255,212,196,169,255,219,207,186,255,226,216,199,255,229,222,207,255,223,215,199,255,215,206,189,255,229,221,206,255, -225,216,199,255,223,211,192,255,221,209,189,255,220,208,187,255,220,207,187,255,219,207,186,255,218,206,185,255,218,206,184,255, -219,206,184,255,217,204,182,255,218,205,182,255,217,204,181,255,216,202,178,255,213,198,172,255,208,191,160,255,198,177,144,255, -183,160,130,255,169,145,118,255,167,142,116,255,178,155,126,255,191,169,137,255,194,172,140,255,197,176,142,255,201,181,149,255, -205,185,154,255,206,188,158,255,207,189,159,255,208,191,161,255,208,190,161,255,208,191,162,255,208,190,161,255,208,191,162,255, -207,189,160,255,208,189,160,255,208,189,160,255,208,189,160,255,208,189,160,255,207,190,161,255,209,191,163,255,209,192,165,255, -212,196,170,255,217,205,182,255,226,217,201,255,231,225,212,255,228,220,206,255,220,208,190,255,211,196,170,255,205,186,156,255, -200,179,146,255,197,176,143,255,194,173,141,255,194,172,140,255,193,172,139,255,192,171,138,255,191,170,137,255,191,169,137,255, -189,168,136,255,189,167,135,255,187,165,134,255,183,161,130,255,175,152,124,255,163,138,113,255,145,118, 98,255,121, 92, 78,255, - 95, 69, 60,255, 75, 58, 51,255, 66, 56, 49,255, 67, 56, 49,255, 72, 57, 50,255, 85, 64, 56,255,104, 76, 65,255,119, 91, 76,255, -135,108, 89,255,150,124,102,255,165,142,115,255,181,159,129,255,195,174,141,255,203,184,153,255,210,194,170,255,220,208,188,255, -144,139,129,255, 60, 60, 60,255, 60, 61, 61,255,111, 98, 85,255,162,136,112,255,168,143,117,255,176,152,124,255,185,163,132,255, -196,174,142,255,205,187,156,255,215,199,175,255,222,211,191,255,227,218,202,255,229,222,207,255,219,209,193,255,223,214,199,255, -228,220,206,255,225,215,198,255,222,211,192,255,221,209,189,255,221,209,188,255,220,208,187,255,220,208,187,255,220,207,186,255, -219,206,185,255,219,205,184,255,218,205,183,255,218,205,182,255,218,204,181,255,216,201,178,255,212,197,170,255,206,187,157,255, -194,173,141,255,180,157,128,255,174,150,122,255,182,160,129,255,190,168,136,255,193,172,139,255,197,176,143,255,201,181,149,255, -205,186,155,255,207,189,159,255,208,191,161,255,209,191,162,255,208,191,163,255,209,191,163,255,209,191,163,255,208,191,162,255, -207,191,162,255,207,191,162,255,208,190,161,255,207,189,160,255,206,190,161,255,206,189,160,255,207,189,161,255,208,191,163,255, -209,192,165,255,212,197,171,255,218,206,185,255,228,220,206,255,232,226,213,255,227,218,203,255,218,205,184,255,210,193,166,255, -203,184,152,255,198,177,145,255,195,174,142,255,195,173,141,255,194,172,140,255,192,171,139,255,192,171,138,255,191,170,138,255, -190,168,136,255,189,168,136,255,188,167,135,255,185,164,133,255,181,158,129,255,171,148,120,255,158,133,108,255,137,110, 91,255, -113, 84, 71,255, 88, 64, 56,255, 71, 57, 50,255, 66, 55, 48,255, 67, 56, 49,255, 76, 59, 52,255, 91, 67, 58,255,108, 80, 68,255, -124, 96, 80,255,139,112, 92,255,155,130,106,255,172,148,121,255,186,165,134,255,195,176,143,255,204,186,155,255,215,202,179,255, -142,136,125,255, 60, 60, 60,255, 60, 61, 61,255,110, 96, 84,255,158,132,108,255,163,138,112,255,170,145,118,255,179,156,126,255, -189,166,135,255,199,178,145,255,208,191,161,255,217,203,180,255,224,213,195,255,228,220,206,255,228,221,207,255,215,205,189,255, -229,221,206,255,228,219,204,255,224,214,197,255,222,211,192,255,221,209,189,255,221,208,188,255,220,208,187,255,219,207,187,255, -220,207,186,255,219,206,185,255,218,206,184,255,218,205,183,255,218,205,182,255,217,204,181,255,215,201,177,255,211,194,168,255, -203,184,152,255,191,169,137,255,180,157,128,255,181,158,128,255,189,167,135,255,193,171,138,255,197,175,143,255,201,180,148,255, -205,185,154,255,207,189,159,255,209,190,162,255,208,191,163,255,209,192,164,255,209,192,163,255,208,191,163,255,209,192,162,255, -208,191,162,255,208,190,162,255,207,191,162,255,207,189,161,255,206,190,160,255,207,190,160,255,206,189,160,255,207,190,160,255, -208,191,163,255,209,193,166,255,212,197,172,255,220,209,189,255,229,223,210,255,231,224,212,255,225,215,198,255,216,202,179,255, -208,191,162,255,202,182,150,255,197,177,144,255,196,175,141,255,194,173,140,255,193,172,139,255,192,171,138,255,192,170,138,255, -190,169,137,255,190,168,136,255,189,168,136,255,187,166,134,255,184,162,131,255,177,155,126,255,168,144,117,255,152,126,103,255, -130,101, 85,255,105, 77, 66,255, 81, 61, 54,255, 68, 56, 49,255, 65, 55, 48,255, 69, 56, 49,255, 79, 61, 53,255, 96, 70, 60,255, -113, 84, 71,255,127,100, 83,255,144,118, 97,255,161,137,112,255,176,154,125,255,188,167,135,255,197,177,145,255,209,192,164,255, -141,133,121,255, 60, 60, 60,255, 60, 61, 61,255,109, 96, 84,255,155,130,106,255,158,132,109,255,164,140,114,255,172,148,120,255, -181,159,128,255,191,169,137,255,201,181,149,255,211,194,167,255,219,206,185,255,225,216,199,255,229,222,208,255,227,220,205,255, -213,202,185,255,230,223,209,255,227,219,202,255,224,213,195,255,222,211,191,255,221,209,189,255,221,208,188,255,221,208,188,255, -220,208,187,255,220,206,185,255,219,207,185,255,219,206,185,255,217,204,183,255,218,205,183,255,217,203,181,255,214,200,175,255, -209,192,164,255,201,180,148,255,188,165,134,255,179,155,126,255,182,159,129,255,190,168,137,255,195,174,142,255,200,180,147,255, -204,184,154,255,207,188,159,255,208,190,162,255,208,192,164,255,208,193,165,255,208,192,164,255,209,191,163,255,208,192,164,255, -209,192,162,255,209,190,163,255,208,191,162,255,207,189,161,255,207,190,160,255,206,189,160,255,206,190,159,255,207,190,160,255, -207,189,160,255,209,192,163,255,210,194,167,255,213,198,173,255,224,213,196,255,231,224,212,255,229,222,209,255,222,212,194,255, -214,199,175,255,206,187,158,255,200,181,147,255,196,176,143,255,195,174,141,255,193,172,140,255,193,171,139,255,192,171,139,255, -191,169,137,255,190,169,137,255,189,168,136,255,188,166,135,255,186,164,133,255,182,160,130,255,175,152,124,255,163,139,113,255, -145,119, 98,255,122, 94, 79,255, 97, 71, 61,255, 75, 59, 51,255, 67, 55, 49,255, 66, 55, 49,255, 71, 58, 51,255, 83, 63, 54,255, -101, 73, 63,255,117, 88, 75,255,132,104, 87,255,149,123,101,255,165,141,115,255,179,157,127,255,189,168,136,255,201,182,150,255, -137,129,115,255, 60, 60, 60,255, 60, 61, 61,255,109, 95, 83,255,154,128,105,255,156,130,106,255,160,135,110,255,167,142,115,255, -174,151,123,255,184,161,131,255,194,173,140,255,204,185,153,255,214,198,173,255,221,210,190,255,227,218,202,255,230,223,210,255, -223,214,199,255,217,209,191,255,229,222,208,255,226,217,201,255,223,213,195,255,222,210,191,255,221,210,190,255,220,209,189,255, -221,209,188,255,220,208,187,255,220,207,186,255,219,207,186,255,218,206,185,255,218,205,184,255,218,205,182,255,217,203,180,255, -213,198,174,255,207,189,160,255,197,176,143,255,182,160,130,255,176,153,124,255,181,158,128,255,189,167,136,255,198,178,145,255, -203,183,152,255,206,187,158,255,207,190,161,255,209,192,164,255,209,192,165,255,210,193,164,255,209,192,164,255,209,192,164,255, -208,191,164,255,209,191,163,255,208,191,163,255,208,189,161,255,207,190,160,255,207,190,160,255,207,188,160,255,206,188,159,255, -207,189,160,255,207,190,161,255,209,192,164,255,210,194,168,255,216,202,179,255,226,218,203,255,231,224,212,255,228,221,206,255, -220,209,190,255,212,196,171,255,204,186,155,255,199,179,146,255,196,175,142,255,194,173,140,255,193,172,140,255,193,171,139,255, -191,170,138,255,191,169,137,255,190,168,136,255,188,167,135,255,187,166,134,255,185,163,132,255,180,157,128,255,171,148,121,255, -158,134,109,255,139,112, 93,255,115, 86, 73,255, 89, 66, 57,255, 71, 57, 50,255, 66, 55, 49,255, 67, 56, 49,255, 74, 58, 51,255, - 87, 65, 57,255,105, 77, 65,255,120, 92, 77,255,136,109, 91,255,152,127,104,255,168,145,118,255,181,159,129,255,192,171,139,255, -134,124,107,255, 60, 60, 60,255, 60, 61, 61,255,110, 96, 85,255,154,128,105,255,154,128,105,255,156,131,107,255,161,136,111,255, -168,144,117,255,177,153,125,255,187,164,133,255,197,176,143,255,207,189,159,255,216,202,178,255,223,213,194,255,228,220,206,255, -231,224,211,255,220,210,195,255,224,215,200,255,229,222,207,255,226,216,200,255,223,212,194,255,221,210,191,255,221,209,190,255, -220,209,189,255,221,208,188,255,220,208,187,255,220,207,186,255,219,206,186,255,218,206,185,255,218,205,184,255,217,204,182,255, -216,202,179,255,212,197,171,255,206,186,156,255,193,171,139,255,179,156,126,255,174,150,122,255,178,155,126,255,191,170,137,255, -202,181,150,255,205,187,156,255,207,190,161,255,209,192,163,255,209,193,165,255,209,193,165,255,210,192,165,255,209,192,164,255, -209,192,164,255,208,191,163,255,208,191,163,255,207,190,161,255,208,189,160,255,207,190,160,255,206,188,159,255,206,188,159,255, -206,188,159,255,208,190,161,255,208,191,162,255,210,193,165,255,211,197,171,255,219,207,186,255,228,220,205,255,230,224,211,255, -227,218,203,255,218,206,185,255,210,193,166,255,203,184,152,255,198,177,145,255,195,174,141,255,194,173,140,255,193,172,140,255, -192,171,138,255,191,170,137,255,190,168,137,255,188,167,135,255,188,166,135,255,186,164,133,255,183,161,131,255,177,155,125,255, -168,144,118,255,153,128,104,255,132,104, 86,255,107, 79, 67,255, 83, 62, 55,255, 69, 56, 50,255, 65, 57, 50,255, 68, 56, 50,255, - 77, 59, 52,255, 92, 68, 59,255,109, 80, 69,255,124, 96, 80,255,140,114, 94,255,156,131,108,255,171,148,120,255,184,162,131,255, -129,117,101,255, 60, 60, 61,255, 60, 61, 61,255,112, 99, 86,255,156,130,106,255,153,127,104,255,154,128,105,255,158,132,108,255, -164,138,113,255,171,147,119,255,179,156,127,255,190,167,136,255,201,180,147,255,209,193,165,255,218,205,183,255,225,215,198,255, -229,222,208,255,230,223,209,255,214,205,188,255,230,223,208,255,229,221,207,255,225,216,199,255,222,211,193,255,221,210,191,255, -221,210,190,255,221,209,188,255,221,208,189,255,220,208,188,255,220,207,186,255,219,207,186,255,218,206,185,255,218,205,183,255, -217,204,182,255,216,201,178,255,211,195,168,255,203,183,152,255,189,167,136,255,176,153,124,255,170,146,119,255,177,154,126,255, -195,175,142,255,204,185,153,255,206,188,159,255,209,191,163,255,209,192,164,255,210,192,165,255,209,194,166,255,210,193,165,255, -210,192,164,255,208,193,165,255,209,192,164,255,207,190,162,255,208,189,161,255,208,189,160,255,207,189,160,255,207,189,160,255, -206,189,160,255,207,189,160,255,207,190,161,255,208,191,163,255,211,194,167,255,214,199,175,255,221,210,191,255,227,220,206,255, -229,223,211,255,225,216,200,255,216,203,181,255,208,191,162,255,201,182,150,255,197,176,143,255,194,173,140,255,194,173,140,255, -192,171,138,255,191,170,138,255,191,169,137,255,189,167,135,255,188,167,135,255,188,166,134,255,185,163,132,255,182,159,129,255, -176,152,124,255,164,140,114,255,147,121,100,255,124, 96, 80,255, 99, 72, 62,255, 77, 60, 53,255, 67, 56, 49,255, 66, 56, 49,255, - 70, 57, 50,255, 79, 62, 54,255, 97, 71, 61,255,113, 84, 72,255,128,100, 84,255,144,118, 97,255,159,135,111,255,175,151,123,255, -124,113, 97,255, 60, 60, 61,255, 60, 61, 61,255,114,101, 88,255,160,134,109,255,155,129,105,255,154,128,105,255,155,130,106,255, -159,133,109,255,165,140,114,255,173,148,121,255,182,159,129,255,192,170,138,255,203,183,151,255,212,196,169,255,221,208,188,255, -227,218,202,255,231,224,211,255,227,220,206,255,215,205,188,255,230,223,209,255,228,220,205,255,225,215,197,255,222,211,193,255, -222,211,191,255,221,210,190,255,220,209,190,255,221,209,189,255,220,208,188,255,220,208,187,255,219,207,186,255,218,206,185,255, -218,205,183,255,217,204,182,255,215,200,176,255,209,193,164,255,200,180,147,255,186,163,132,255,171,148,120,255,166,141,114,255, -180,158,128,255,198,178,146,255,205,185,155,255,207,190,161,255,209,192,164,255,210,193,165,255,209,194,166,255,210,194,166,255, -209,194,166,255,209,192,165,255,209,193,165,255,209,192,164,255,208,191,162,255,207,190,161,255,208,190,161,255,207,189,160,255, -206,190,160,255,206,190,160,255,207,189,161,255,207,190,162,255,208,192,164,255,211,196,170,255,216,202,178,255,221,210,191,255, -227,220,206,255,229,222,209,255,223,213,196,255,214,200,176,255,207,188,159,255,200,180,148,255,196,175,142,255,194,173,140,255, -192,171,139,255,192,170,138,255,191,169,137,255,189,168,136,255,188,167,135,255,188,166,135,255,186,164,134,255,184,162,132,255, -180,157,128,255,172,149,121,255,160,135,110,255,140,114, 94,255,116, 88, 75,255, 91, 68, 59,255, 73, 58, 51,255, 66, 56, 49,255, - 66, 56, 49,255, 71, 58, 51,255, 84, 64, 56,255,101, 74, 64,255,117, 88, 74,255,132,104, 86,255,147,122,100,255,164,140,114,255, -119,108, 93,255, 60, 60, 61,255, 60, 60, 61,255,118,105, 91,255,165,139,114,255,158,132,108,255,154,129,105,255,154,128,105,255, -156,130,106,255,161,135,110,255,167,142,115,255,175,151,123,255,184,162,131,255,195,173,141,255,205,187,156,255,214,200,175,255, -223,211,192,255,228,220,204,255,232,225,213,255,225,217,202,255,218,209,193,255,230,223,210,255,227,218,204,255,224,214,197,255, -222,212,193,255,221,210,191,255,221,210,190,255,220,209,190,255,221,208,189,255,220,208,188,255,220,208,187,255,219,207,186,255, -218,206,185,255,218,205,183,255,217,204,181,255,213,199,174,255,208,190,161,255,197,176,144,255,181,158,129,255,166,141,115,255, -165,140,114,255,183,160,131,255,198,177,145,255,205,187,156,255,208,190,162,255,209,192,164,255,210,193,166,255,209,193,165,255, -210,193,166,255,210,192,166,255,210,193,166,255,208,191,165,255,208,191,163,255,208,191,162,255,208,191,162,255,207,189,161,255, -207,190,161,255,207,190,160,255,206,189,160,255,207,190,161,255,209,192,163,255,210,194,167,255,212,198,173,255,216,203,181,255, -222,211,193,255,229,221,207,255,228,220,205,255,221,211,191,255,212,197,172,255,204,186,156,255,198,178,145,255,195,174,141,255, -193,172,139,255,192,171,139,255,191,170,138,255,190,168,136,255,189,167,136,255,187,167,134,255,187,165,134,255,186,164,133,255, -183,161,130,255,177,155,126,255,169,145,118,255,154,129,106,255,134,107, 88,255,109, 81, 69,255, 85, 64, 56,255, 69, 57, 50,255, - 66, 56, 49,255, 67, 57, 50,255, 75, 59, 52,255, 89, 66, 57,255,106, 77, 66,255,120, 92, 77,255,136,108, 90,255,152,127,104,255, -114,101, 88,255, 60, 61, 61,255, 60, 60, 61,255,122,110, 95,255,172,147,119,255,162,136,112,255,157,131,107,255,155,129,105,255, -154,129,105,255,157,131,108,255,162,137,111,255,169,144,118,255,178,154,125,255,187,165,133,255,198,176,144,255,208,190,161,255, -216,203,180,255,224,214,196,255,229,222,208,255,231,225,212,255,221,213,198,255,225,217,202,255,230,223,209,255,227,218,202,255, -224,213,195,255,222,211,192,255,221,210,191,255,221,210,190,255,220,210,190,255,221,209,189,255,220,208,188,255,220,208,187,255, -219,207,186,255,218,206,185,255,218,205,183,255,217,203,180,255,213,197,172,255,206,188,158,255,194,172,140,255,177,153,125,255, -163,138,113,255,168,144,117,255,184,161,131,255,199,178,146,255,206,188,159,255,208,191,163,255,209,193,165,255,210,192,166,255, -209,193,166,255,210,193,166,255,210,193,166,255,209,192,164,255,209,192,163,255,208,191,163,255,208,190,161,255,208,189,162,255, -208,189,161,255,206,189,160,255,207,190,160,255,206,189,160,255,208,191,162,255,209,192,165,255,212,197,171,255,215,201,177,255, -218,206,186,255,224,214,197,255,227,220,205,255,225,217,201,255,218,207,187,255,210,194,167,255,203,183,152,255,197,177,144,255, -194,173,140,255,192,171,139,255,192,170,138,255,190,168,137,255,189,168,136,255,189,167,136,255,187,165,134,255,186,165,134,255, -185,163,132,255,181,159,129,255,175,152,123,255,164,141,115,255,149,123,101,255,127, 98, 83,255,103, 75, 64,255, 79, 61, 53,255, - 68, 57, 50,255, 67, 57, 50,255, 69, 58, 51,255, 77, 61, 54,255, 93, 68, 59,255,109, 80, 69,255,124, 95, 80,255,140,113, 93,255, -108, 94, 83,255, 60, 61, 61,255, 60, 60, 61,255,128,116,100,255,180,157,127,255,168,144,117,255,161,135,110,255,156,130,106,255, -154,128,105,255,155,129,105,255,158,132,109,255,164,138,113,255,171,147,119,255,179,157,127,255,190,168,136,255,200,180,148,255, -210,194,165,255,219,206,184,255,225,216,199,255,230,224,209,255,231,224,212,255,217,208,193,255,228,220,207,255,230,223,209,255, -226,217,201,255,223,213,195,255,222,211,192,255,222,211,192,255,221,210,191,255,220,210,190,255,221,209,189,255,220,208,188,255, -220,208,187,255,219,207,186,255,218,206,185,255,218,205,183,255,216,202,179,255,211,196,169,255,204,185,154,255,190,169,137,255, -173,149,122,255,164,138,113,255,169,146,118,255,185,163,132,255,201,181,150,255,207,190,160,255,209,192,163,255,209,192,165,255, -210,193,166,255,210,193,165,255,210,192,166,255,209,193,164,255,208,191,164,255,208,191,163,255,207,190,163,255,208,190,162,255, -207,190,161,255,207,190,161,255,207,189,160,255,206,189,160,255,207,190,161,255,208,192,164,255,211,194,168,255,213,199,175,255, -217,204,182,255,220,209,190,255,224,214,196,255,226,218,203,255,225,216,200,255,217,204,183,255,208,191,163,255,201,181,149,255, -196,175,142,255,193,172,139,255,192,171,139,255,191,169,137,255,190,168,136,255,189,168,136,255,188,166,135,255,187,165,134,255, -186,164,133,255,183,161,131,255,179,157,128,255,172,149,121,255,161,136,111,255,143,116, 96,255,120, 91, 77,255, 95, 70, 60,255, - 75, 59, 52,255, 67, 57, 50,255, 67, 57, 50,255, 71, 58, 51,255, 81, 63, 55,255, 97, 71, 61,255,112, 83, 71,255,128,100, 83,255, -101, 87, 77,255, 61, 61, 61,255, 60, 60, 60,255,134,124,107,255,192,169,137,255,176,153,124,255,166,142,115,255,159,134,110,255, -155,129,106,255,154,128,105,255,156,130,106,255,159,134,110,255,166,141,115,255,173,149,121,255,182,160,129,255,192,170,138,255, -202,183,151,255,212,196,169,255,220,208,188,255,227,218,202,255,231,224,211,255,229,223,210,255,215,206,190,255,230,222,210,255, -229,222,207,255,226,216,200,255,223,213,195,255,222,211,192,255,221,210,191,255,221,210,191,255,220,209,190,255,221,209,189,255, -220,208,188,255,220,207,187,255,219,207,186,255,218,206,185,255,217,205,183,255,215,201,177,255,211,194,167,255,201,182,150,255, -187,165,134,255,170,146,119,255,163,139,114,255,171,147,119,255,188,166,135,255,204,185,154,255,207,190,161,255,208,192,163,255, -210,193,166,255,209,192,166,255,210,193,165,255,208,192,164,255,209,192,164,255,209,192,163,255,208,191,163,255,207,191,162,255, -207,190,161,255,206,189,160,255,207,189,160,255,207,189,160,255,206,190,161,255,207,191,162,255,209,193,166,255,212,197,172,255, -215,203,180,255,218,205,185,255,218,207,187,255,223,214,197,255,227,220,206,255,223,214,197,255,214,201,178,255,206,188,159,255, -199,179,147,255,195,174,141,255,192,171,138,255,191,170,137,255,190,169,137,255,189,168,136,255,188,166,135,255,187,166,134,255, -185,164,133,255,184,163,132,255,182,160,130,255,177,155,126,255,169,145,118,255,156,131,107,255,136,109, 90,255,113, 84, 72,255, - 88, 66, 57,255, 71, 58, 51,255, 66, 57, 50,255, 67, 57, 50,255, 72, 59, 52,255, 85, 65, 56,255,101, 74, 64,255,115, 87, 74,255, - 95, 80, 72,255, 61, 61, 61,255, 60, 60, 60,255,140,132,119,255,204,184,153,255,187,164,133,255,174,150,122,255,164,139,114,255, -158,133,108,255,155,129,106,255,154,128,105,255,156,131,107,255,161,135,111,255,167,142,116,255,175,152,123,255,184,162,131,255, -194,172,140,255,205,185,155,255,213,198,174,255,221,210,190,255,228,219,204,255,231,225,213,255,229,222,209,255,216,207,192,255, -231,224,211,255,228,220,206,255,225,215,199,255,223,213,194,255,222,211,193,255,221,210,192,255,222,211,191,255,220,209,190,255, -221,209,189,255,220,209,188,255,220,207,187,255,219,207,186,255,219,206,185,255,217,204,183,255,214,200,176,255,209,192,164,255, -199,178,147,255,183,161,130,255,168,144,117,255,164,139,113,255,172,148,120,255,192,171,139,255,205,186,156,255,207,190,161,255, -208,191,163,255,210,193,165,255,209,192,164,255,209,193,164,255,209,192,165,255,209,191,164,255,208,191,163,255,207,190,162,255, -208,190,162,255,206,190,160,255,206,189,159,255,206,188,159,255,206,189,160,255,206,190,161,255,208,191,164,255,210,195,169,255, -214,200,176,255,214,200,176,255,206,190,162,255,216,204,183,255,228,222,209,255,228,222,208,255,222,211,193,255,212,198,173,255, -204,186,155,255,198,178,145,255,194,173,141,255,191,170,138,255,190,169,137,255,189,168,136,255,188,167,135,255,187,166,135,255, -187,165,134,255,185,163,132,255,183,161,131,255,181,159,129,255,175,152,123,255,165,142,116,255,150,125,102,255,130,102, 85,255, -106, 78, 67,255, 82, 63, 55,255, 69, 58, 51,255, 66, 57, 50,255, 69, 58, 51,255, 75, 61, 53,255, 88, 66, 57,255,104, 76, 65,255, - 89, 74, 67,255, 61, 61, 61,255, 60, 60, 60,255,145,139,130,255,216,200,176,255,199,178,146,255,184,160,130,255,171,148,120,255, -163,138,113,255,157,131,108,255,154,129,105,255,155,129,105,255,157,131,107,255,162,137,112,255,168,144,117,255,177,153,124,255, -186,164,132,255,197,175,143,255,206,188,159,255,215,201,178,255,223,213,194,255,229,221,207,255,231,226,213,255,225,217,203,255, -222,214,200,255,232,225,212,255,228,220,205,255,225,215,198,255,223,213,194,255,222,211,193,255,221,210,192,255,222,211,191,255, -221,210,190,255,221,209,189,255,220,208,188,255,219,208,187,255,219,207,186,255,218,206,185,255,217,204,182,255,214,199,174,255, -207,190,161,255,197,175,143,255,180,158,128,255,167,142,116,255,163,138,113,255,175,152,124,255,197,176,144,255,206,187,157,255, -207,190,161,255,208,191,163,255,208,192,164,255,208,193,165,255,208,192,164,255,209,192,164,255,207,190,162,255,208,191,162,255, -207,190,161,255,207,189,160,255,206,188,159,255,205,188,158,255,205,188,158,255,206,188,159,255,207,189,160,255,208,192,165,255, -210,194,168,255,197,177,148,255,179,157,127,255,209,194,170,255,227,219,206,255,229,224,211,255,227,220,205,255,219,209,189,255, -210,195,169,255,202,184,153,255,196,176,143,255,193,172,139,255,191,169,137,255,190,169,137,255,188,167,135,255,188,166,134,255, -187,165,134,255,185,163,132,255,184,162,131,255,182,160,130,255,179,156,127,255,172,149,121,255,162,137,112,255,145,119, 98,255, -123, 94, 79,255, 99, 72, 63,255, 77, 60, 53,255, 68, 57, 50,255, 67, 58, 50,255, 69, 59, 51,255, 77, 61, 53,255, 92, 68, 59,255, - 83, 68, 63,255, 61, 61, 61,255, 59, 60, 60,255,148,143,136,255,225,214,196,255,211,195,169,255,195,174,142,255,181,157,128,255, -169,145,119,255,161,137,112,255,156,131,107,255,154,128,105,255,155,129,106,255,158,133,109,255,163,138,112,255,170,146,119,255, -179,155,127,255,188,166,134,255,199,177,145,255,208,191,162,255,216,203,180,255,224,214,197,255,229,223,209,255,232,226,214,255, -221,213,198,255,223,215,201,255,232,225,213,255,227,219,204,255,224,215,197,255,223,213,194,255,222,211,193,255,221,210,192,255, -221,210,191,255,221,210,190,255,220,209,189,255,220,208,188,255,220,208,187,255,218,206,186,255,219,206,185,255,216,203,181,255, -213,197,172,255,206,188,158,255,193,173,141,255,178,154,125,255,165,141,114,255,164,139,114,255,181,158,129,255,200,181,149,255, -205,187,157,255,207,189,160,255,208,190,162,255,209,192,164,255,209,192,164,255,208,192,163,255,208,191,162,255,207,190,161,255, -207,190,160,255,206,189,159,255,205,187,158,255,205,187,157,255,205,187,156,255,204,186,156,255,204,186,157,255,205,187,158,255, -191,170,141,255,164,143,120,255,194,178,153,255,219,207,189,255,224,215,200,255,227,220,207,255,229,224,211,255,226,218,203,255, -218,206,185,255,208,193,165,255,201,182,149,255,196,175,142,255,192,171,139,255,189,168,136,255,188,167,135,255,187,166,134,255, -187,165,134,255,185,164,133,255,184,163,132,255,182,161,131,255,181,159,129,255,176,153,125,255,169,146,118,255,157,132,108,255, -139,112, 92,255,116, 88, 74,255, 92, 68, 59,255, 73, 60, 52,255, 67, 57, 50,255, 67, 59, 50,255, 71, 59, 51,255, 80, 63, 54,255, - 76, 64, 60,255, 61, 61, 62,255, 59, 60, 60,255,149,145,139,255,230,222,206,255,221,210,190,255,208,191,162,255,192,171,139,255, -178,155,126,255,168,143,117,255,160,135,110,255,156,130,107,255,154,128,105,255,155,129,105,255,159,133,109,255,164,139,114,255, -171,147,120,255,180,157,127,255,190,168,136,255,200,180,147,255,210,193,166,255,218,205,184,255,225,215,199,255,230,224,211,255, -232,226,215,255,217,209,193,255,227,220,207,255,230,224,210,255,226,218,202,255,224,213,197,255,222,213,194,255,222,211,193,255, -221,210,192,255,222,211,192,255,220,210,190,255,220,209,189,255,220,209,189,255,219,207,187,255,219,207,186,255,218,206,185,255, -216,203,180,255,212,196,170,255,205,185,154,255,191,169,138,255,175,152,123,255,164,140,114,255,167,143,116,255,188,166,135,255, -202,183,151,255,205,186,156,255,206,189,159,255,207,190,160,255,207,190,162,255,208,190,162,255,206,189,161,255,206,189,160,255, -205,188,159,255,205,187,157,255,204,186,155,255,203,185,154,255,202,184,152,255,202,183,151,255,200,180,148,255,186,166,135,255, -174,153,128,255,209,196,174,255,224,216,201,255,226,218,203,255,223,214,198,255,223,215,199,255,228,221,208,255,229,223,210,255, -225,216,200,255,216,203,181,255,207,190,161,255,200,180,148,255,194,173,141,255,191,170,138,255,189,167,136,255,188,166,135,255, -187,165,134,255,185,163,132,255,185,163,132,255,184,161,130,255,182,160,129,255,179,157,127,255,174,150,122,255,165,142,115,255, -152,127,104,255,132,104, 87,255,109, 81, 69,255, 85, 65, 56,255, 71, 58, 51,255, 67, 58, 50,255, 68, 58, 50,255, 72, 60, 52,255, - 71, 62, 57,255, 61, 62, 62,255, 59, 60, 60,255,149,146,140,255,232,225,212,255,227,219,204,255,219,207,186,255,206,187,156,255, -190,167,135,255,176,152,124,255,166,141,116,255,159,134,110,255,156,130,106,255,154,128,105,255,156,130,106,255,159,134,109,255, -165,141,115,255,172,149,121,255,182,159,128,255,192,170,138,255,202,182,150,255,211,195,169,255,220,208,187,255,226,218,202,255, -231,225,212,255,231,226,213,255,218,210,195,255,230,224,210,255,229,223,209,255,226,217,202,255,223,214,196,255,222,212,194,255, -222,211,193,255,221,210,193,255,221,210,191,255,221,209,190,255,221,208,190,255,220,209,188,255,219,207,187,255,219,207,186,255, -218,205,184,255,215,202,179,255,211,195,168,255,202,183,152,255,188,166,136,255,172,149,121,255,164,140,114,255,173,149,122,255, -193,172,140,255,202,182,150,255,203,185,154,255,205,186,156,255,206,188,158,255,206,189,159,255,206,189,158,255,205,188,158,255, -204,186,156,255,204,185,154,255,202,183,152,255,201,182,150,255,199,180,147,255,192,171,139,255,177,156,127,255,181,162,134,255, -210,196,171,255,222,213,196,255,227,220,206,255,228,222,209,255,225,218,204,255,223,213,197,255,224,216,200,255,229,222,209,255, -229,223,209,255,223,214,197,255,214,201,177,255,205,187,157,255,197,178,145,255,192,172,139,255,189,168,136,255,188,167,135,255, -187,166,134,255,185,164,133,255,184,163,132,255,183,161,130,255,182,160,130,255,181,159,129,255,177,154,125,255,171,149,120,255, -161,137,112,255,146,120, 99,255,125, 97, 81,255,102, 75, 65,255, 80, 62, 54,255, 69, 58, 51,255, 67, 58, 50,255, 68, 58, 52,255, - 67, 60, 57,255, 61, 62, 62,255, 59, 60, 60,255,149,146,140,255,233,226,214,255,230,224,210,255,227,217,202,255,217,203,181,255, -202,183,152,255,187,164,133,255,174,151,122,255,165,139,114,255,158,133,109,255,155,129,106,255,154,129,105,255,156,131,107,255, -160,135,110,255,166,141,116,255,174,150,122,255,183,160,130,255,193,171,140,255,204,184,153,255,212,198,172,255,221,210,190,255, -227,219,204,255,231,225,213,255,228,222,209,255,216,208,192,255,232,226,215,255,229,222,208,255,225,217,201,255,223,213,196,255, -222,212,194,255,222,211,193,255,222,211,192,255,221,210,191,255,220,209,190,255,221,208,189,255,220,208,188,255,219,207,187,255, -218,206,186,255,218,205,183,255,215,201,178,255,209,193,166,255,200,180,149,255,186,163,133,255,171,148,120,255,166,141,115,255, -179,157,127,255,195,175,142,255,200,180,147,255,201,182,150,255,203,184,152,255,204,185,154,255,204,185,154,255,203,185,153,255, -202,184,152,255,201,181,149,255,199,180,147,255,196,176,143,255,183,161,131,255,168,147,120,255,183,162,132,255,201,183,151,255, -212,197,173,255,220,209,190,255,226,218,203,255,228,222,209,255,228,221,209,255,225,217,202,255,222,213,196,255,224,216,201,255, -229,222,210,255,228,222,207,255,221,212,193,255,211,197,172,255,203,184,153,255,196,176,143,255,191,170,138,255,188,167,135,255, -187,166,133,255,185,164,133,255,184,163,132,255,182,161,130,255,182,160,129,255,181,159,129,255,178,156,126,255,175,152,123,255, -168,144,117,255,157,132,108,255,140,114, 94,255,119, 91, 76,255, 96, 70, 61,255, 76, 61, 53,255, 68, 58, 51,255, 68, 59, 51,255, - 65, 60, 56,255, 61, 62, 62,255, 59, 60, 60,255,150,146,140,255,233,227,214,255,231,225,213,255,230,224,210,255,225,216,199,255, -215,200,176,255,200,179,148,255,181,159,129,255,172,148,121,255,163,138,113,255,158,132,108,255,155,129,105,255,154,129,105,255, -156,131,107,255,161,136,111,255,167,143,116,255,175,152,123,255,184,162,131,255,194,174,141,255,205,187,156,255,214,200,176,255, -222,212,192,255,228,220,206,255,231,226,214,255,226,218,205,255,218,209,194,255,232,226,214,255,228,221,206,255,225,215,199,255, -223,213,196,255,223,212,194,255,222,212,193,255,222,211,192,255,221,210,191,255,221,209,190,255,220,209,189,255,219,208,188,255, -219,207,186,255,218,206,185,255,217,205,183,255,214,200,176,255,208,192,163,255,198,178,146,255,184,161,130,255,171,147,120,255, -170,146,119,255,185,163,132,255,195,174,141,255,197,177,144,255,198,178,145,255,199,180,147,255,200,180,148,255,199,180,147,255, -199,178,145,255,196,175,143,255,189,167,136,255,166,145,118,255,155,131,108,255,171,148,120,255,183,162,131,255,195,175,142,255, -205,189,160,255,215,201,179,255,222,212,194,255,226,219,204,255,228,222,209,255,228,221,208,255,224,216,200,255,221,212,196,255, -225,217,201,255,228,222,209,255,226,219,205,255,219,209,189,255,209,193,166,255,200,181,150,255,194,173,141,255,190,169,137,255, -187,166,135,255,185,164,133,255,184,163,132,255,184,161,130,255,182,160,129,255,180,159,129,255,178,156,127,255,177,155,125,255, -172,149,121,255,164,140,114,255,152,126,104,255,134,107, 88,255,112, 84, 71,255, 90, 67, 59,255, 73, 60, 52,255, 68, 59, 51,255, - 65, 61, 56,255, 61, 62, 62,255, 59, 59, 60,255,150,147,140,255,233,227,214,255,232,226,214,255,231,226,213,255,230,223,210,255, -224,214,197,255,212,197,171,255,197,176,144,255,182,159,129,255,171,146,119,255,162,137,112,255,157,132,108,255,155,129,106,255, -155,129,105,255,157,131,108,255,161,137,111,255,168,144,117,255,176,153,124,255,186,164,133,255,196,175,143,255,206,189,160,255, -215,202,179,255,223,213,195,255,229,222,208,255,233,227,215,255,223,216,202,255,222,215,201,255,231,225,212,255,227,219,205,255, -225,216,199,255,223,213,195,255,222,212,194,255,222,211,193,255,222,211,192,255,221,210,191,255,221,209,190,255,220,209,189,255, -219,208,188,255,219,207,186,255,218,206,185,255,217,204,182,255,214,199,175,255,207,190,161,255,196,176,144,255,182,159,129,255, -172,148,121,255,176,153,124,255,188,166,135,255,193,171,139,255,193,172,140,255,194,173,140,255,194,175,141,255,194,174,141,255, -188,167,136,255,169,147,121,255,144,119, 99,255,139,113, 93,255,152,126,103,255,163,139,113,255,174,151,123,255,186,164,133,255, -198,178,146,255,208,192,164,255,216,204,182,255,222,212,195,255,226,218,204,255,228,221,208,255,227,220,207,255,223,215,199,255, -221,212,195,255,225,218,203,255,228,221,209,255,225,217,202,255,217,204,183,255,207,190,161,255,199,179,147,255,192,171,139,255, -188,166,135,255,186,164,133,255,185,163,132,255,183,161,130,255,182,160,130,255,181,159,129,255,179,157,127,255,177,155,126,255, -175,152,124,255,169,146,119,255,160,136,111,255,147,121, 99,255,128,100, 83,255,106, 79, 67,255, 84, 65, 56,255, 72, 59, 51,255, - 65, 60, 56,255, 61, 62, 62,255, 59, 59, 60,255,150,147,140,255,233,227,215,255,231,225,214,255,232,226,213,255,231,225,213,255, -229,222,208,255,223,212,193,255,210,194,167,255,194,173,141,255,180,157,127,255,169,144,118,255,161,136,111,255,157,131,107,255, -154,128,105,255,155,129,106,255,157,132,108,255,162,137,112,255,169,145,118,255,178,155,125,255,187,165,134,255,198,178,145,255, -208,191,162,255,217,204,182,255,224,215,197,255,229,222,209,255,231,226,214,255,220,213,198,255,227,221,208,255,230,225,212,255, -227,219,204,255,224,215,198,255,223,213,195,255,222,212,194,255,221,211,193,255,221,210,192,255,220,210,191,255,221,209,190,255, -219,208,188,255,219,207,187,255,219,206,186,255,218,206,185,255,216,203,181,255,212,198,172,255,206,188,158,255,194,174,142,255, -181,159,129,255,176,152,124,255,182,159,129,255,188,167,135,255,190,169,137,255,190,169,136,255,186,165,134,255,170,148,120,255, -143,118, 99,255,125, 97, 81,255,124, 96, 80,255,132,104, 86,255,141,114, 94,255,152,127,103,255,164,140,114,255,176,154,125,255, -190,168,136,255,201,182,150,255,210,194,167,255,216,203,181,255,221,211,193,255,226,218,202,255,228,221,208,255,226,219,205,255, -222,214,197,255,221,212,195,255,226,218,203,255,228,221,207,255,224,215,198,255,215,201,178,255,205,187,157,255,197,177,144,255, -190,169,137,255,187,166,134,255,185,163,133,255,183,161,131,255,182,160,130,255,181,159,129,255,179,158,127,255,177,155,126,255, -176,153,125,255,172,149,121,255,166,142,116,255,156,132,107,255,141,115, 95,255,123, 94, 79,255,101, 74, 64,255, 82, 64, 55,255, - 67, 61, 56,255, 61, 62, 62,255, 59, 59, 60,255,150,147,140,255,233,227,215,255,232,225,213,255,232,226,214,255,231,226,215,255, -231,225,213,255,229,221,208,255,221,210,191,255,208,191,163,255,192,171,139,255,178,155,126,255,167,143,117,255,160,136,110,255, -156,131,107,255,154,128,105,255,155,129,106,255,158,132,108,255,163,139,113,255,170,147,119,255,179,156,127,255,189,167,135,255, -199,180,147,255,209,193,165,255,217,205,184,255,225,216,200,255,229,223,210,255,231,225,214,255,215,206,191,255,230,224,211,255, -230,223,210,255,226,217,202,255,223,214,197,255,223,212,194,255,222,211,194,255,222,211,192,255,221,210,191,255,220,209,191,255, -220,209,189,255,220,208,188,255,219,208,187,255,219,206,186,255,218,206,185,255,216,202,180,255,212,196,171,255,204,186,156,255, -193,172,140,255,181,159,129,255,177,155,125,255,178,157,126,255,177,155,126,255,170,147,119,255,153,128,105,255,129,101, 84,255, -115, 86, 72,255,113, 84, 71,255,115, 86, 73,255,122, 93, 79,255,130,103, 85,255,141,115, 95,255,153,128,105,255,167,143,117,255, -181,159,129,255,192,172,139,255,201,183,151,255,208,193,167,255,215,203,181,255,221,211,192,255,224,217,201,255,226,220,205,255, -225,218,204,255,221,213,195,255,221,212,196,255,226,218,203,255,226,219,205,255,221,212,195,255,212,197,173,255,202,184,152,255, -194,174,141,255,189,168,136,255,185,164,133,255,183,161,131,255,181,160,129,255,181,159,129,255,179,156,127,255,177,155,126,255, -176,154,125,255,173,150,122,255,169,147,119,255,163,139,113,255,151,127,104,255,136,109, 90,255,118, 89, 75,255, 97, 71, 62,255, - 72, 62, 58,255, 61, 61, 62,255, 59, 59, 60,255,150,147,141,255,233,227,215,255,232,226,214,255,232,226,215,255,232,227,214,255, -232,226,215,255,231,226,213,255,229,221,207,255,220,208,188,255,206,188,159,255,190,168,136,255,177,154,124,255,167,142,116,255, -159,134,110,255,155,130,106,255,154,128,105,255,155,130,106,255,158,133,109,255,164,139,113,255,171,148,120,255,180,157,127,255, -190,168,137,255,201,181,149,255,210,194,168,255,218,207,186,255,225,217,201,255,230,224,211,255,230,224,211,255,217,209,194,255, -230,223,210,255,229,222,209,255,226,217,200,255,223,213,196,255,223,212,194,255,222,211,193,255,221,211,192,255,220,210,191,255, -220,209,190,255,220,209,189,255,220,208,188,255,218,207,187,255,218,206,185,255,217,205,184,255,215,202,179,255,210,195,169,255, -203,185,154,255,192,171,138,255,180,157,127,255,170,146,118,255,158,134,109,255,144,118, 97,255,127,100, 83,255,116, 87, 74,255, -109, 80, 68,255,107, 78, 67,255,109, 80, 68,255,114, 85, 72,255,122, 93, 79,255,131,104, 86,255,143,116, 96,255,158,134,110,255, -171,148,120,255,180,158,128,255,190,170,137,255,201,182,150,255,208,193,166,255,215,202,179,255,219,208,188,255,223,214,197,255, -226,218,203,255,225,216,201,255,221,211,194,255,221,212,195,255,225,218,203,255,225,218,203,255,219,209,190,255,210,195,168,255, -200,181,149,255,192,171,139,255,187,165,134,255,183,162,131,255,181,160,129,255,180,158,128,255,178,156,126,255,177,154,125,255, -175,153,124,255,173,151,122,255,171,148,121,255,166,143,116,255,159,135,111,255,147,122,100,255,131,104, 86,255,114, 85, 72,255, - 81, 68, 62,255, 61, 61, 61,255, 60, 60, 60,255,146,142,134,255,233,226,214,255,231,226,214,255,232,227,215,255,232,226,215,255, -231,227,215,255,232,227,215,255,231,225,212,255,228,220,205,255,218,206,184,255,204,186,155,255,188,167,134,255,175,151,123,255, -166,142,115,255,158,133,109,255,155,130,106,255,154,129,105,255,155,130,106,255,159,134,110,255,165,141,114,255,172,149,121,255, -182,159,129,255,191,169,138,255,201,182,151,255,211,196,169,255,219,208,188,255,226,218,202,255,231,224,212,255,228,222,209,255, -219,212,197,255,231,225,213,255,229,221,207,255,225,216,200,255,223,214,196,255,222,212,194,255,221,211,193,255,221,211,192,255, -220,209,190,255,220,209,190,255,219,209,189,255,219,207,187,255,218,207,186,255,217,206,185,255,217,205,183,255,214,201,178,255, -210,194,167,255,202,183,152,255,190,168,137,255,174,152,123,255,158,134,109,255,142,116, 95,255,127, 99, 83,255,117, 88, 75,255, -109, 80, 69,255,105, 76, 65,255,105, 77, 66,255,108, 79, 67,255,114, 85, 73,255,122, 94, 78,255,133,106, 88,255,149,123,101,255, -163,139,113,255,171,148,120,255,178,155,127,255,189,168,137,255,200,181,148,255,207,190,162,255,213,199,174,255,217,206,185,255, -222,212,195,255,225,217,201,255,223,215,199,255,221,210,193,255,221,212,195,255,225,217,202,255,224,216,201,255,218,207,186,255, -208,191,164,255,197,178,146,255,191,170,137,255,185,164,132,255,182,160,130,255,180,158,128,255,178,156,126,255,177,154,125,255, -175,153,124,255,173,150,122,255,172,149,121,255,168,145,118,255,163,139,114,255,155,130,106,255,143,116, 96,255,129,100, 83,255, - 89, 74, 67,255, 61, 61, 61,255, 60, 60, 60,255,135,126,111,255,221,212,196,255,232,226,214,255,232,226,215,255,231,227,215,255, -232,227,215,255,232,226,214,255,231,227,215,255,231,225,212,255,227,218,203,255,216,203,182,255,202,182,152,255,186,164,133,255, -173,150,122,255,165,140,114,255,158,133,109,255,155,129,106,255,154,129,105,255,155,130,107,255,159,135,110,255,166,141,115,255, -173,149,121,255,182,160,130,255,192,171,139,255,202,184,152,255,211,196,171,255,219,208,188,255,226,218,202,255,231,225,212,255, -224,217,204,255,223,215,201,255,231,226,213,255,227,220,206,255,224,215,199,255,223,213,195,255,222,212,194,255,222,212,193,255, -221,210,191,255,221,210,190,255,220,209,190,255,219,208,188,255,218,207,187,255,219,207,186,255,217,205,184,255,216,204,182,255, -214,200,176,255,209,193,166,255,201,182,149,255,188,166,135,255,171,147,120,255,153,127,105,255,137,110, 91,255,124, 95, 80,255, -115, 86, 72,255,108, 79, 67,255,105, 76, 65,255,105, 76, 65,255,108, 79, 67,255,115, 86, 73,255,124, 95, 80,255,138,111, 92,255, -151,126,104,255,163,139,113,255,169,146,119,255,177,155,126,255,188,168,136,255,198,178,146,255,205,188,159,255,211,198,174,255, -218,206,186,255,222,213,196,255,224,216,201,255,223,214,198,255,220,210,192,255,221,212,194,255,224,216,201,255,223,214,198,255, -216,203,182,255,205,188,159,255,195,175,143,255,188,167,136,255,183,162,130,255,180,158,128,255,178,155,126,255,176,154,125,255, -175,152,124,255,173,150,122,255,170,148,121,255,169,146,119,255,165,142,115,255,160,135,111,255,152,126,103,255,140,113, 93,255, - 96, 82, 73,255, 61, 61, 61,255, 60, 60, 60,255,136,126,110,255,204,187,157,255,220,211,195,255,233,227,215,255,232,227,214,255, -232,226,215,255,232,227,215,255,232,226,214,255,232,226,215,255,231,224,212,255,226,218,201,255,214,201,178,255,199,180,149,255, -184,162,131,255,172,149,121,255,163,139,113,255,157,132,108,255,154,129,106,255,154,129,106,255,155,130,106,255,160,135,110,255, -166,142,116,255,174,151,122,255,183,160,130,255,193,172,139,255,203,184,153,255,211,197,172,255,219,209,189,255,226,219,202,255, -230,225,212,255,222,215,202,255,222,214,201,255,231,225,212,255,227,219,204,255,224,215,198,255,223,213,195,255,222,212,194,255, -221,210,192,255,220,210,191,255,221,210,190,255,219,208,189,255,219,208,187,255,219,206,187,255,218,206,185,255,217,205,184,255, -216,203,181,255,213,199,175,255,208,192,164,255,200,180,148,255,186,164,133,255,169,145,118,255,150,125,103,255,135,108, 89,255, -122, 93, 79,255,113, 83, 71,255,107, 77, 67,255,104, 75, 65,255,105, 76, 65,255,109, 80, 68,255,116, 87, 74,255,127, 99, 82,255, -139,112, 92,255,150,125,103,255,161,137,112,255,168,145,118,255,177,154,124,255,188,167,136,255,198,178,146,255,206,189,160,255, -213,199,175,255,217,207,186,255,222,212,195,255,223,216,200,255,222,214,197,255,219,209,192,255,220,210,193,255,223,214,198,255, -221,212,194,255,214,200,177,255,203,185,155,255,193,173,141,255,186,165,133,255,181,159,129,255,178,155,126,255,176,153,124,255, -174,151,123,255,172,149,121,255,170,147,120,255,168,145,118,255,166,143,116,255,162,138,112,255,156,131,107,255,148,122,100,255, -102, 88, 78,255, 61, 61, 61,255, 60, 60, 60,255,136,126,111,255,205,186,154,255,204,187,158,255,222,215,199,255,232,226,215,255, -231,227,214,255,232,226,215,255,232,227,215,255,232,227,215,255,232,227,215,255,230,224,211,255,225,216,199,255,213,199,174,255, -198,178,146,255,183,160,130,255,171,147,120,255,162,138,113,255,157,132,108,255,154,129,106,255,154,129,105,255,156,131,107,255, -160,136,111,255,167,143,116,255,174,151,123,255,183,161,131,255,192,172,139,255,203,184,153,255,212,197,172,255,220,209,189,255, -226,218,203,255,230,224,211,255,224,216,203,255,224,217,203,255,230,224,211,255,226,218,203,255,223,214,197,255,222,212,195,255, -221,211,192,255,220,210,191,255,221,210,191,255,219,208,189,255,220,208,188,255,219,207,186,255,218,206,186,255,217,205,185,255, -216,204,183,255,216,203,180,255,213,199,174,255,208,191,162,255,198,179,147,255,184,162,131,255,167,143,117,255,149,123,101,255, -134,106, 88,255,121, 93, 78,255,112, 83, 70,255,106, 77, 66,255,103, 75, 64,255,105, 76, 66,255,109, 80, 68,255,117, 88, 74,255, -127, 99, 82,255,137,110, 91,255,149,123,101,255,159,135,110,255,167,143,116,255,177,155,125,255,190,168,136,255,199,179,147,255, -206,188,159,255,212,197,172,255,216,204,183,255,220,211,192,255,223,214,197,255,222,213,196,255,219,208,190,255,220,210,191,255, -223,213,197,255,219,210,191,255,211,197,172,255,200,182,151,255,192,170,138,255,184,162,131,255,179,157,127,255,176,154,125,255, -173,151,123,255,172,148,121,255,169,146,119,255,167,144,117,255,165,141,115,255,162,138,113,255,158,134,109,255,153,127,104,255, -106, 92, 81,255, 60, 61, 61,255, 60, 60, 60,255,137,129,114,255,205,188,158,255,202,183,152,255,204,187,160,255,225,218,204,255, -232,226,215,255,232,226,215,255,231,227,215,255,232,226,215,255,231,227,214,255,232,226,215,255,230,223,211,255,224,215,197,255, -212,196,171,255,196,176,144,255,181,159,129,255,170,146,118,255,161,137,112,255,157,132,107,255,154,129,105,255,154,129,106,255, -156,131,107,255,161,136,111,255,167,143,116,255,175,151,123,255,183,161,131,255,193,172,140,255,203,185,153,255,211,197,172,255, -219,208,188,255,225,217,202,255,229,223,210,255,221,214,200,255,228,221,209,255,230,223,210,255,226,217,201,255,223,213,196,255, -222,211,193,255,221,211,192,255,221,210,192,255,220,209,190,255,220,209,189,255,219,208,188,255,218,207,186,255,217,206,185,255, -218,205,184,255,216,204,182,255,215,202,179,255,212,197,173,255,207,189,161,255,197,177,145,255,182,161,130,255,166,141,115,255, -147,122,100,255,132,105, 86,255,120, 90, 77,255,111, 81, 70,255,106, 77, 66,255,104, 75, 64,255,106, 77, 66,255,109, 80, 68,255, -117, 88, 74,255,125, 97, 81,255,135,108, 89,255,147,122,100,255,158,133,109,255,166,143,117,255,178,156,126,255,188,167,135,255, -196,176,144,255,203,185,155,255,209,193,167,255,213,200,178,255,217,207,186,255,220,211,193,255,220,211,193,255,218,207,188,255, -219,209,190,255,221,211,194,255,218,206,187,255,210,194,168,255,199,179,147,255,189,168,136,255,182,160,130,255,176,154,125,255, -173,151,123,255,170,147,120,255,169,146,118,255,167,143,117,255,164,140,114,255,161,137,112,255,158,134,110,255,155,130,105,255, -107, 94, 82,255, 60, 61, 61,255, 60, 60, 60,255,140,133,120,255,209,193,165,255,203,185,154,255,200,181,148,255,203,186,159,255, -225,218,204,255,232,227,215,255,232,226,215,255,232,227,214,255,232,226,215,255,231,227,215,255,231,226,214,255,229,223,209,255, -223,213,195,255,210,195,168,255,194,174,142,255,180,158,127,255,169,145,118,255,161,137,111,255,156,131,107,255,153,128,105,255, -154,129,105,255,156,131,108,255,161,136,111,255,166,143,116,255,174,151,123,255,183,161,131,255,193,172,139,255,202,184,153,255, -211,196,170,255,218,208,187,255,225,217,201,255,228,222,209,255,221,213,200,255,227,220,206,255,229,222,209,255,225,216,200,255, -223,213,195,255,221,211,193,255,221,211,192,255,220,209,190,255,219,209,189,255,219,207,188,255,218,207,187,255,218,207,186,255, -218,206,185,255,216,204,183,255,216,203,181,255,214,201,178,255,212,197,171,255,206,189,159,255,196,176,143,255,182,160,129,255, -164,140,115,255,146,120, 99,255,130,103, 86,255,119, 91, 76,255,110, 81, 69,255,106, 77, 66,255,104, 75, 64,255,105, 76, 65,255, -109, 80, 68,255,114, 86, 73,255,123, 95, 79,255,134,106, 88,255,147,121,100,255,157,133,108,255,165,141,115,255,176,153,124,255, -186,164,134,255,193,173,140,255,199,180,148,255,205,187,158,255,210,195,170,255,216,203,181,255,218,207,187,255,219,208,189,255, -217,206,187,255,218,207,188,255,220,209,191,255,216,205,183,255,207,191,163,255,196,176,144,255,186,165,134,255,179,157,128,255, -174,151,123,255,170,147,119,255,168,144,118,255,166,141,115,255,162,139,113,255,160,135,111,255,157,132,108,255,154,129,105,255, -107, 94, 83,255, 60, 61, 61,255, 60, 60, 60,255,144,140,130,255,216,203,180,255,207,190,162,255,202,184,152,255,200,180,147,255, -202,185,158,255,225,219,206,255,232,226,214,255,232,226,215,255,232,227,215,255,231,227,214,255,232,227,215,255,231,226,213,255, -229,222,208,255,221,211,193,255,209,192,166,255,193,172,140,255,179,157,126,255,168,144,117,255,161,136,111,255,156,131,107,255, -154,129,105,255,154,129,105,255,156,131,108,255,160,136,111,255,166,143,116,255,174,151,122,255,183,161,130,255,191,171,138,255, -202,183,151,255,210,196,170,255,219,208,188,255,225,217,202,255,229,222,209,255,221,213,200,255,226,220,207,255,228,221,207,255, -224,215,199,255,222,212,194,255,221,210,192,255,220,210,191,255,219,209,190,255,220,208,189,255,218,207,187,255,219,207,186,255, -218,206,184,255,216,204,183,255,216,204,182,255,215,203,180,255,214,200,177,255,211,195,170,255,205,187,158,255,195,175,143,255, -181,159,128,255,163,139,113,255,145,118, 98,255,130,102, 85,255,119, 90, 75,255,110, 81, 69,255,106, 77, 66,255,104, 75, 64,255, -104, 75, 65,255,107, 78, 67,255,113, 84, 72,255,122, 93, 78,255,133,105, 87,255,145,120, 98,255,154,129,106,255,161,137,112,255, -172,150,121,255,182,160,129,255,189,168,136,255,195,175,143,255,201,183,151,255,206,189,162,255,211,197,172,255,215,202,181,255, -217,205,185,255,216,204,184,255,217,205,186,255,218,208,189,255,214,202,179,255,205,188,158,255,193,173,140,255,183,162,132,255, -177,154,125,255,170,148,120,255,166,143,117,255,163,140,114,255,160,136,111,255,157,133,109,255,154,129,106,255,151,126,103,255, -106, 93, 82,255, 60, 61, 61,255, 60, 60, 60,255,130,127,121,255,221,212,195,255,215,203,180,255,206,190,162,255,201,183,151,255, -198,179,145,255,204,188,162,255,227,220,207,255,231,226,214,255,231,225,214,255,232,225,214,255,232,225,215,255,232,226,215,255, -231,225,213,255,228,221,208,255,220,210,191,255,208,191,163,255,192,171,139,255,178,156,126,255,168,144,118,255,160,136,111,255, -155,131,106,255,154,129,105,255,153,128,105,255,155,131,107,255,160,135,111,255,165,142,116,255,174,150,122,255,182,160,130,255, -192,171,139,255,202,183,152,255,210,196,169,255,218,207,187,255,225,216,201,255,228,221,208,255,220,213,200,255,228,221,208,255, -228,221,206,255,224,215,198,255,222,212,194,255,220,210,191,255,220,210,190,255,220,209,189,255,218,207,187,255,219,207,187,255, -218,206,186,255,217,205,183,255,216,204,182,255,216,203,181,255,215,202,179,255,213,200,175,255,210,195,169,255,204,186,157,255, -194,174,142,255,179,157,127,255,162,137,112,255,144,118, 96,255,130,102, 85,255,119, 90, 75,255,110, 81, 69,255,106, 77, 66,255, -103, 74, 63,255,103, 75, 64,255,106, 77, 66,255,113, 84, 71,255,122, 93, 78,255,132,104, 87,255,142,116, 96,255,150,125,102,255, -158,133,108,255,168,145,118,255,177,155,125,255,184,163,132,255,191,170,138,255,197,177,145,255,203,185,155,255,209,193,167,255, -213,200,177,255,215,203,182,255,214,202,181,255,216,204,183,255,216,205,185,255,212,198,175,255,202,184,154,255,191,169,137,255, -180,158,128,255,173,149,121,255,166,143,116,255,162,138,113,255,158,134,109,255,155,130,106,255,151,126,104,255,148,123,100,255, -105, 91, 80,255, 60, 61, 61,255, 61, 61, 61,255, 34, 34, 34,255, 90, 87, 81,255,214,206,190,255,217,206,184,255,206,191,163,255, -202,183,152,255,197,177,144,255,202,186,159,255,226,220,208,255,231,226,214,255,231,226,214,255,231,225,214,255,231,225,214,255, -231,226,214,255,231,225,213,255,228,221,207,255,220,209,190,255,207,190,162,255,191,170,139,255,178,155,126,255,168,144,117,255, -160,135,111,255,155,131,106,255,153,128,105,255,153,128,105,255,155,130,106,255,159,135,110,255,165,141,115,255,173,149,121,255, -181,160,129,255,192,171,139,255,202,183,152,255,210,195,169,255,217,206,186,255,224,215,199,255,226,219,205,255,220,213,199,255, -226,220,206,255,227,220,206,255,223,214,197,255,221,211,193,255,220,210,191,255,220,209,190,255,218,207,188,255,219,207,187,255, -218,207,186,255,217,205,184,255,216,204,183,255,216,203,182,255,215,202,180,255,214,201,178,255,213,199,174,255,209,194,167,255, -203,186,155,255,193,173,141,255,178,156,126,255,160,136,111,255,143,117, 96,255,130,101, 84,255,119, 90, 76,255,110, 81, 69,255, -105, 76, 65,255,102, 74, 63,255,102, 74, 64,255,105, 77, 66,255,113, 83, 71,255,121, 92, 77,255,129,101, 84,255,139,112, 92,255, -146,121, 99,255,153,128,104,255,163,139,114,255,173,150,122,255,180,158,128,255,187,165,134,255,192,172,140,255,198,179,147,255, -203,186,156,255,208,193,167,255,212,198,174,255,212,198,176,255,214,201,179,255,214,202,179,255,209,195,169,255,199,180,149,255, -187,165,134,255,176,154,125,255,168,144,117,255,161,137,112,255,156,131,107,255,152,127,104,255,147,123,100,255,144,117, 97,255, -103, 89, 78,255, 61, 61, 61,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 35, 34, 31,255,196,189,175,255,217,206,185,255, -207,192,165,255,202,183,152,255,197,177,144,255,201,184,157,255,227,220,207,255,231,225,213,255,230,226,214,255,230,226,214,255, -230,226,214,255,231,226,213,255,231,224,212,255,227,220,206,255,219,209,189,255,207,190,161,255,191,170,138,255,177,155,126,255, -168,144,117,255,160,136,111,255,155,130,106,255,153,128,105,255,153,128,105,255,154,129,106,255,158,134,109,255,165,141,114,255, -172,149,121,255,182,160,130,255,192,172,139,255,201,182,151,255,208,193,166,255,216,204,182,255,222,213,195,255,226,219,203,255, -220,212,198,255,226,220,206,255,227,219,204,255,223,213,197,255,220,210,191,255,220,209,190,255,218,207,188,255,219,208,187,255, -218,207,186,255,217,205,184,255,216,204,183,255,216,203,181,255,215,202,180,255,214,201,178,255,213,199,176,255,212,198,172,255, -208,193,165,255,203,184,153,255,192,171,140,255,178,155,126,255,160,136,111,255,143,117, 97,255,131,103, 85,255,119, 90, 75,255, -110, 81, 69,255,104, 76, 65,255,101, 74, 63,255,101, 73, 63,255,104, 76, 65,255,111, 82, 70,255,118, 89, 75,255,126, 98, 81,255, -136,108, 89,255,141,115, 95,255,148,123,101,255,159,135,111,255,168,145,118,255,174,152,123,255,181,159,128,255,186,165,134,255, -191,170,138,255,197,176,144,255,202,184,153,255,206,190,163,255,207,192,167,255,210,194,171,255,211,196,172,255,206,190,162,255, -195,176,143,255,182,161,131,255,172,149,121,255,163,139,113,255,156,131,107,255,148,124,102,255,143,118, 97,255,127,102, 84,255, - 54, 48, 45,255, 61, 61, 61,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 7, 7, 6,255,144,138,127,255, -207,197,177,255,210,195,169,255,201,183,151,255,195,175,142,255,202,187,162,255,226,220,206,255,231,225,213,255,230,224,212,255, -231,224,212,255,231,224,212,255,231,225,213,255,230,224,211,255,227,220,205,255,219,209,189,255,206,190,161,255,192,171,138,255, -178,156,126,255,168,144,117,255,160,136,111,255,155,130,106,255,153,127,105,255,152,126,104,255,153,129,105,255,157,133,108,255, -164,140,114,255,172,149,121,255,181,160,129,255,190,169,138,255,199,180,147,255,207,190,162,255,214,201,178,255,220,210,192,255, -224,216,201,255,218,211,196,255,226,219,205,255,226,218,203,255,222,213,195,255,220,209,190,255,219,208,188,255,219,208,187,255, -218,207,186,255,217,205,184,255,216,204,183,255,216,203,181,255,215,202,180,255,214,201,178,255,213,199,176,255,212,198,175,255, -211,197,172,255,207,191,164,255,201,183,152,255,191,171,139,255,177,155,125,255,160,136,112,255,145,119, 98,255,130,102, 86,255, -119, 90, 76,255,110, 81, 69,255,105, 76, 65,255,101, 73, 63,255,101, 73, 63,255,104, 75, 64,255,109, 80, 68,255,115, 86, 73,255, -123, 94, 79,255,131,104, 87,255,138,111, 93,255,146,120, 98,255,154,129,106,255,160,136,111,255,166,143,116,255,172,149,121,255, -177,154,126,255,180,159,129,255,185,163,132,255,188,167,136,255,193,172,141,255,193,174,146,255,186,172,148,255,183,170,147,255, -183,166,139,255,187,167,135,255,181,159,129,255,168,145,118,255,153,130,106,255,132,110, 89,255, 81, 66, 54,255, 0, 0, 0,255, - 27, 28, 28,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 55, 53, 48,255,157,149,134,255,212,197,172,255,203,184,153,255,191,170,137,255,198,182,157,255,226,219,206,255,230,225,212,255, -230,224,212,255,230,224,212,255,230,225,212,255,230,225,212,255,230,223,211,255,227,220,205,255,219,209,189,255,207,190,162,255, -192,171,139,255,179,156,127,255,168,145,117,255,161,136,111,255,155,130,106,255,152,127,104,255,152,126,103,255,153,128,104,255, -157,132,108,255,164,140,114,255,172,149,121,255,179,157,127,255,187,166,134,255,195,176,144,255,205,188,158,255,212,199,175,255, -219,209,189,255,222,214,198,255,219,212,197,255,223,217,202,255,226,218,203,255,221,212,194,255,219,208,189,255,219,207,187,255, -218,207,186,255,217,205,184,255,216,204,183,255,216,202,180,255,215,202,179,255,214,201,178,255,214,199,177,255,212,198,175,255, -212,197,173,255,210,195,169,255,206,190,161,255,201,182,150,255,191,170,137,255,178,155,126,255,162,138,112,255,145,119, 98,255, -131,103, 86,255,119, 90, 76,255,111, 82, 70,255,105, 76, 65,255,100, 73, 62,255,100, 72, 62,255,102, 74, 64,255,107, 78, 67,255, -112, 83, 71,255,119, 90, 76,255,129,101, 84,255,136,109, 90,255,140,113, 94,255,145,118, 98,255,150,125,103,255,158,133,109,255, -161,137,112,255,163,140,114,255,165,142,116,255,168,145,118,255,150,129,105,255, 69, 60, 48,255, 38, 34, 28,255, 30, 27, 24,255, - 35, 32, 27,255, 56, 51, 42,255, 74, 66, 53,255, 68, 59, 49,255, 46, 40, 32,255, 17, 14, 11,255, 0, 0, 0,255, 0, 0, 0,255, - 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 54, 51, 46,255,182,171,150,255,204,186,156,255,194,173,141,255,195,178,151,255,225,217,203,255, -229,223,211,255,230,224,211,255,230,224,211,255,230,224,211,255,230,224,211,255,229,223,210,255,226,219,205,255,219,209,189,255, -208,191,163,255,193,173,140,255,179,156,127,255,169,145,119,255,161,137,111,255,155,130,106,255,152,127,104,255,150,125,102,255, -151,126,103,255,156,131,107,255,162,138,113,255,169,147,119,255,176,154,125,255,184,162,132,255,194,174,142,255,204,187,157,255, -212,199,174,255,218,207,187,255,223,215,197,255,218,210,195,255,223,216,202,255,225,217,201,255,221,211,193,255,219,208,188,255, -218,207,186,255,216,205,184,255,216,204,183,255,216,202,180,255,215,202,179,255,214,201,178,255,213,199,175,255,212,198,174,255, -212,198,173,255,210,196,170,255,209,194,167,255,205,189,160,255,200,181,149,255,191,170,139,255,178,156,127,255,163,139,113,255, -146,120, 99,255,132,104, 86,255,121, 92, 77,255,111, 82, 70,255,104, 76, 66,255,100, 73, 63,255, 98, 71, 62,255, 99, 72, 62,255, -104, 75, 65,255,109, 80, 68,255,116, 87, 74,255,124, 96, 80,255,129,101, 84,255,131,103, 86,255,135,108, 90,255,140,114, 94,255, -144,118, 97,255,147,122,100,255,146,120, 99,255,111, 90, 76,255, 5, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 61, 57, 50,255,142,130,109,255,166,148,121,255,186,170,146,255, -221,213,198,255,230,223,210,255,227,221,208,255,228,222,209,255,228,222,209,255,229,222,209,255,229,223,209,255,226,219,205,255, -220,210,190,255,208,193,166,255,194,174,142,255,180,158,128,255,169,146,119,255,161,137,111,255,155,129,106,255,151,126,103,255, -149,124,102,255,150,125,103,255,154,129,106,255,160,135,111,255,166,143,117,255,174,152,124,255,183,161,131,255,193,172,139,255, -203,185,154,255,210,196,170,255,217,205,183,255,221,211,193,255,217,208,192,255,224,215,201,255,225,216,200,255,221,210,192,255, -218,207,186,255,216,205,184,255,216,204,182,255,216,203,180,255,214,202,179,255,214,201,177,255,212,199,175,255,212,198,174,255, -211,197,171,255,210,195,170,255,209,194,168,255,207,192,164,255,205,188,158,255,199,180,149,255,191,171,139,255,179,157,127,255, -164,140,114,255,148,122,100,255,134,106, 88,255,122, 93, 78,255,113, 83, 71,255,105, 76, 66,255,100, 72, 62,255, 97, 71, 61,255, - 97, 71, 61,255,101, 74, 64,255,106, 78, 66,255,111, 82, 70,255,115, 86, 73,255,120, 90, 76,255,123, 95, 80,255,125, 97, 81,255, -128,100, 84,255,125, 98, 82,255, 82, 64, 54,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 19, 18, 16,255, 39, 35, 28,255, - 63, 59, 53,255,163,157,148,255,229,222,208,255,227,220,206,255,228,222,208,255,228,222,208,255,228,222,208,255,228,221,208,255, -226,219,204,255,221,211,192,255,209,195,168,255,196,175,144,255,182,160,129,255,170,147,119,255,161,137,112,255,154,130,106,255, -150,125,102,255,148,123,101,255,148,124,101,255,151,127,104,255,156,131,108,255,164,140,114,255,174,152,123,255,183,161,131,255, -192,171,139,255,200,181,150,255,207,190,163,255,212,198,174,255,217,205,184,255,216,206,188,255,219,211,195,255,224,216,200,255, -220,209,191,255,217,206,185,255,216,204,182,255,215,203,181,255,214,202,179,255,214,200,176,255,213,199,174,255,211,198,172,255, -211,196,170,255,209,195,169,255,209,193,167,255,208,192,165,255,206,190,162,255,204,186,156,255,199,180,148,255,191,171,139,255, -180,158,129,255,166,142,116,255,150,125,102,255,135,108, 90,255,124, 95, 80,255,113, 84, 71,255,106, 77, 66,255, 99, 73, 63,255, - 96, 71, 61,255, 96, 71, 61,255, 98, 72, 62,255,100, 73, 63,255,102, 75, 64,255,106, 78, 66,255,109, 80, 68,255,113, 84, 71,255, -113, 84, 71,255, 93, 69, 60,255, 12, 9, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 7, 7, 6,255,153,147,137,255,227,219,205,255,226,219,205,255,227,221,206,255,227,221,207,255,227,221,207,255, -227,221,207,255,225,218,203,255,221,212,193,255,211,197,171,255,197,178,146,255,183,161,131,255,171,148,121,255,161,137,112,255, -154,130,106,255,150,124,102,255,147,121,100,255,147,121,100,255,149,124,101,255,153,129,105,255,162,138,113,255,174,151,122,255, -182,161,130,255,188,166,135,255,194,174,142,255,201,182,151,255,206,190,162,255,211,197,172,255,213,200,180,255,219,210,194,255, -223,214,198,255,219,208,189,255,216,204,183,255,214,202,179,255,213,200,178,255,213,199,176,255,211,197,173,255,210,196,171,255, -210,195,169,255,209,193,167,255,208,193,166,255,208,192,164,255,206,189,161,255,205,188,159,255,202,184,153,255,199,179,147,255, -192,171,139,255,181,160,130,255,169,145,118,255,153,128,105,255,138,111, 92,255,126, 96, 81,255,115, 86, 73,255,107, 79, 67,255, -101, 74, 64,255, 97, 71, 61,255, 95, 70, 60,255, 93, 70, 61,255, 94, 69, 60,255, 97, 71, 62,255, 96, 71, 61,255, 97, 71, 61,255, - 95, 70, 61,255, 26, 19, 17,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,106,102, 94,255,210,203,189,255,227,219,204,255,225,218,203,255,226,219,205,255, -226,219,205,255,226,219,204,255,225,217,203,255,222,211,195,255,212,199,174,255,199,180,150,255,185,164,133,255,172,150,121,255, -163,138,113,255,155,130,106,255,149,124,102,255,147,121, 99,255,146,120, 98,255,147,121,100,255,152,127,104,255,161,136,111,255, -170,147,119,255,177,155,125,255,182,160,130,255,188,166,135,255,194,173,141,255,199,181,149,255,205,188,159,255,206,191,168,255, -216,206,188,255,222,213,196,255,218,208,188,255,215,203,180,255,213,200,176,255,212,199,174,255,211,197,172,255,210,196,170,255, -209,195,168,255,208,193,166,255,207,191,164,255,206,190,162,255,205,188,160,255,204,187,157,255,203,186,154,255,201,182,151,255, -198,177,145,255,191,171,138,255,182,161,131,255,170,147,120,255,155,131,108,255,141,115, 94,255,128,100, 83,255,118, 89, 75,255, -110, 81, 69,255,103, 75, 65,255, 98, 72, 62,255, 94, 70, 61,255, 92, 69, 60,255, 92, 68, 59,255, 90, 68, 59,255, 90, 67, 58,255, - 24, 19, 16,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 45, 44, 40,255,183,176,163,255,227,219,203,255,223,215,200,255, -225,217,202,255,225,218,202,255,225,218,202,255,225,217,201,255,221,213,195,255,214,201,178,255,202,183,154,255,187,166,134,255, -174,152,123,255,164,140,114,255,156,131,107,255,150,124,102,255,146,120, 98,255,144,118, 97,255,145,119, 98,255,149,124,102,255, -156,131,107,255,163,139,113,255,171,147,119,255,176,154,125,255,181,159,129,255,186,165,134,255,191,170,138,255,195,175,144,255, -198,180,150,255,207,194,172,255,220,211,193,255,217,206,186,255,213,200,177,255,212,198,173,255,210,195,171,255,209,194,168,255, -209,193,166,255,208,192,164,255,206,191,162,255,206,188,160,255,204,187,158,255,203,185,155,255,202,184,153,255,201,182,150,255, -198,180,147,255,195,176,143,255,191,169,138,255,182,161,130,255,172,149,121,255,159,135,110,255,145,119, 98,255,132,105, 87,255, -122, 93, 78,255,114, 85, 72,255,108, 79, 68,255,102, 74, 64,255, 98, 72, 62,255, 96, 70, 61,255, 96, 71, 61,255, 40, 30, 26,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,120,115,106,255,224,215,198,255, -222,214,197,255,224,215,199,255,222,214,198,255,223,216,200,255,223,214,199,255,221,212,194,255,215,203,181,255,204,187,158,255, -190,170,138,255,177,154,126,255,166,143,117,255,157,133,109,255,151,125,103,255,146,120, 98,255,143,117, 96,255,142,116, 96,255, -145,118, 98,255,149,122,101,255,155,130,106,255,163,139,113,255,168,145,118,255,169,146,119,255,173,150,122,255,178,156,127,255, -185,163,132,255,192,171,139,255,201,186,161,255,217,207,189,255,217,205,184,255,212,199,175,255,210,195,169,255,208,193,166,255, -208,192,164,255,206,189,161,255,205,188,160,255,205,187,157,255,203,185,155,255,202,184,153,255,201,182,150,255,199,180,147,255, -198,178,146,255,196,176,143,255,193,173,140,255,189,168,136,255,182,161,130,255,173,151,122,255,162,138,113,255,151,125,103,255, -139,112, 92,255,128,100, 84,255,121, 92, 78,255,115, 86, 73,255,111, 82, 70,255,111, 83, 70,255, 43, 33, 29,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 51, 49, 44,255, -165,157,144,255,217,208,190,255,222,213,196,255,222,213,196,255,222,214,196,255,222,213,196,255,221,212,194,255,216,204,184,255, -207,191,163,255,194,174,143,255,181,159,129,255,169,146,119,255,160,136,111,255,153,127,105,255,146,121, 99,255,142,116, 96,255, -140,114, 94,255,140,113, 94,255,143,116, 96,255,147,121,100,255,151,126,103,255,153,128,104,255,155,131,107,255,164,140,113,255, -173,150,122,255,182,159,129,255,188,166,134,255,191,173,145,255,206,194,172,255,215,203,182,255,212,199,174,255,207,192,164,255, -206,190,161,255,205,188,158,255,204,186,156,255,203,185,154,255,202,183,152,255,200,181,149,255,198,179,147,255,197,177,145,255, -195,175,142,255,194,173,141,255,192,171,139,255,189,168,136,255,185,164,133,255,180,158,128,255,173,151,123,255,165,141,115,255, -156,131,108,255,148,122,100,255,141,114, 94,255,125,100, 83,255, 88, 69, 57,255, 16, 13, 11,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 9, 9, 8,255, 58, 55, 50,255,171,163,148,255,219,208,189,255,220,210,192,255,218,208,189,255,220,210,191,255,220,209,191,255, -217,205,185,255,210,195,170,255,198,180,148,255,186,165,134,255,174,151,123,255,164,140,114,255,155,130,107,255,148,122,100,255, -143,117, 96,255,139,112, 93,255,138,111, 92,255,136,109, 90,255,137,110, 90,255,137,109, 91,255,141,114, 93,255,146,120, 99,255, -155,131,107,255,160,137,111,255,161,136,113,255,159,136,110,255,149,126,104,255, 84, 78, 70,255,178,168,150,255,214,199,174,255, -206,190,162,255,204,185,155,255,202,183,152,255,200,182,150,255,199,180,148,255,198,178,146,255,195,176,143,255,194,174,141,255, -192,172,139,255,190,170,138,255,188,167,135,255,186,164,133,255,184,162,132,255,180,158,128,255,177,155,126,255,172,149,122,255, -166,142,116,255,132,112, 91,255, 64, 54, 44,255, 24, 20, 16,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 43, 40, 35,255,145,137,123,255,216,204,183,255,214,201,182,255,216,205,185,255, -217,206,186,255,216,204,183,255,212,199,174,255,202,185,156,255,191,172,139,255,180,158,128,255,168,146,118,255,160,135,110,255, -151,125,104,255,145,118, 98,255,139,113, 93,255,136,109, 90,255,133,104, 87,255,131,104, 85,255,129,101, 85,255,131,104, 87,255, -132,106, 87,255,134,107, 88,255,129,102, 86,255,103, 80, 69,255, 13, 11, 9,255, 0, 0, 0,255, 0, 0, 0,255, 85, 80, 71,255, -196,181,158,255,202,185,156,255,201,181,150,255,198,178,146,255,195,175,143,255,194,174,141,255,192,171,139,255,190,169,137,255, -188,167,135,255,186,165,134,255,184,163,132,255,181,159,129,255,177,155,125,255,171,150,122,255,147,127,104,255, 82, 70, 57,255, - 15, 13, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 9, 8, 7,255, 67, 63, 55,255,132,124,109,255, -161,151,133,255,187,176,157,255,209,196,173,255,214,200,175,255,208,191,163,255,199,181,149,255,188,167,136,255,177,154,125,255, -166,142,115,255,157,132,108,255,149,124,101,255,143,116, 96,255,137,110, 91,255,132,106, 88,255,130,102, 85,255,128,100, 83,255, -128,100, 83,255,101, 79, 66,255, 49, 37, 32,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 79, 73, 64,255,138,125,105,255,167,151,124,255,183,164,133,255,189,169,137,255,188,167,135,255,184,162,132,255, -171,151,123,255,155,137,111,255,129,112, 92,255,102, 89, 72,255, 60, 52, 43,255, 20, 17, 14,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 9, 8, 7,255, 25, 23, 20,255, 42, 39, 34,255, 75, 70, 61,255,124,115,100,255,155,143,122,255,192,174,146,255,197,177,145,255, -189,167,136,255,177,155,126,255,169,145,118,255,160,136,111,255,153,128,104,255,150,124,102,255,139,114, 94,255, 98, 81, 67,255, - 37, 30, 25,255, 9, 8, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 1, 1, 1,255, 20, 18, 15,255, 31, 28, 23,255, 41, 37, 30,255, 43, 38, 31,255, 39, 34, 28,255, - 28, 25, 20,255, 19, 17, 14,255, 4, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 3, 3, 3,255, - 32, 29, 24,255, 64, 58, 48,255, 77, 68, 57,255, 74, 67, 56,255, 61, 55, 47,255, 13, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, - 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0, 64, 98, 96, 7, 31, 0, 0, 0, 1, 0, 0, 0,152, 5, 97, 7, -232,190, 95, 7, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, 46,102,108, 97,116,116,101,110, 46,112,110,103, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, - 99,111,110,115, 92, 46,105, 46,102,108, 97,116,116,101,110, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,100, 96, 7, - 0, 0, 0, 0,208, 71, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0, - 64,100, 96, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0,200,100, 96, 7, 48,117, 96, 7, 68, 65, 84, 65, 0, 16, 0, 0,200,100, 96, 7, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 0,144, 0, 0, 48,117, 96, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, - 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 62, 61, 61,255, 61, 61, 61,255, 91, 85, 77,255,119,106, 92,255, -119,106, 92,255,119,106, 92,255,118,106, 92,255,118,106, 91,255,118,105, 91,255,118,105, 91,255,118,105, 91,255,117,105, 91,255, -118,104, 91,255,118,105, 91,255,118,104, 90,255,118,104, 91,255,118,104, 91,255,117,105, 91,255,117,105, 91,255,117,105, 91,255, -117,104, 90,255,116,103, 90,255,117,104, 90,255,116,103, 89,255,116,103, 89,255,115,103, 89,255,115,102, 89,255,115,102, 88,255, -114,101, 88,255,114,101, 87,255,113,100, 87,255,113,100, 87,255,112, 99, 86,255,112, 99, 86,255,112, 99, 86,255,111, 98, 86,255, -111, 98, 85,255,110, 97, 85,255,110, 97, 84,255,110, 96, 84,255,109, 96, 84,255,109, 95, 83,255,108, 95, 83,255,108, 94, 82,255, -107, 94, 82,255,107, 93, 82,255,106, 92, 81,255,106, 92, 81,255,106, 92, 81,255,105, 91, 80,255,105, 91, 80,255,104, 90, 80,255, -104, 90, 79,255,104, 90, 79,255,103, 89, 79,255,103, 89, 79,255,102, 88, 78,255,102, 88, 78,255,102, 88, 78,255,101, 87, 77,255, -101, 87, 77,255,101, 86, 76,255,100, 85, 76,255, 99, 85, 75,255, 98, 84, 75,255, 98, 83, 74,255, 97, 82, 74,255, 97, 82, 73,255, - 96, 82, 73,255, 95, 80, 72,255, 95, 80, 71,255, 94, 79, 71,255, 93, 78, 70,255, 92, 77, 70,255, 91, 76, 69,255, 90, 75, 68,255, - 90, 74, 67,255, 88, 73, 66,255, 87, 72, 66,255, 86, 71, 65,255, 85, 70, 64,255, 84, 69, 63,255, 82, 68, 63,255, 81, 66, 62,255, - 80, 66, 61,255, 78, 65, 60,255, 76, 64, 59,255, 75, 63, 58,255, 73, 62, 58,255, 71, 61, 57,255, 70, 61, 57,255, 68, 60, 56,255, - 67, 60, 56,255, 65, 59, 56,255, 65, 61, 56,255, 64, 61, 59,255, 61, 62, 62,255, 60, 60, 61,255,119,107, 93,255,175,151,122,255, -173,149,121,255,173,148,121,255,172,148,121,255,172,148,121,255,172,148,120,255,172,148,120,255,172,147,120,255,172,147,120,255, -171,147,120,255,171,147,120,255,171,147,119,255,171,147,119,255,171,147,119,255,171,146,119,255,170,146,119,255,170,146,119,255, -170,145,118,255,169,145,118,255,169,145,118,255,168,144,117,255,168,143,117,255,167,142,116,255,166,141,115,255,166,141,115,255, -165,139,114,255,164,139,113,255,163,138,113,255,163,137,112,255,161,136,111,255,160,135,110,255,160,134,110,255,159,133,109,255, -158,132,108,255,158,131,108,255,156,131,107,255,156,130,106,255,155,128,105,255,154,128,105,255,153,126,104,255,152,125,102,255, -150,124,102,255,149,123,101,255,149,121,100,255,147,120, 99,255,146,120, 99,255,145,119, 98,255,145,118, 97,255,145,118, 97,255, -144,117, 96,255,143,116, 96,255,143,116, 95,255,142,115, 95,255,141,114, 94,255,141,113, 93,255,140,113, 93,255,139,112, 93,255, -138,110, 91,255,137,109, 90,255,136,108, 90,255,135,106, 88,255,133,105, 87,255,133,105, 87,255,131,103, 86,255,130,102, 85,255, -130,101, 84,255,128, 99, 83,255,127, 98, 82,255,126, 96, 80,255,124, 94, 79,255,122, 93, 78,255,120, 91, 76,255,118, 88, 75,255, -116, 87, 73,255,115, 85, 72,255,112, 82, 70,255,111, 81, 69,255,108, 79, 67,255,106, 76, 66,255,103, 74, 63,255,101, 72, 62,255, - 97, 70, 61,255, 95, 68, 59,255, 91, 67, 58,255, 88, 65, 57,255, 85, 63, 55,255, 82, 62, 54,255, 79, 61, 53,255, 75, 59, 52,255, - 73, 58, 51,255, 70, 58, 50,255, 68, 59, 51,255, 65, 61, 56,255, 61, 62, 62,255, 60, 60, 61,255,120,108, 93,255,176,152,123,255, -174,150,122,255,174,150,122,255,174,149,122,255,173,149,121,255,173,149,121,255,173,149,121,255,173,149,121,255,173,148,121,255, -173,149,121,255,173,149,121,255,172,148,121,255,172,148,121,255,172,148,120,255,172,148,120,255,172,148,120,255,171,147,120,255, -171,147,119,255,171,146,119,255,170,145,118,255,169,145,118,255,168,144,117,255,168,143,116,255,167,142,116,255,166,141,115,255, -165,140,115,255,165,140,114,255,164,139,113,255,163,137,112,255,162,137,112,255,161,136,111,255,160,134,110,255,159,134,109,255, -158,132,108,255,157,132,108,255,157,131,107,255,155,129,106,255,155,129,105,255,154,128,105,255,152,126,103,255,151,125,103,255, -150,124,102,255,148,122,100,255,148,121,100,255,147,120, 99,255,145,119, 97,255,145,118, 97,255,144,117, 97,255,143,116, 95,255, -143,116, 96,255,142,115, 95,255,141,114, 94,255,141,114, 94,255,140,113, 93,255,140,113, 93,255,139,112, 93,255,138,111, 92,255, -138,111, 91,255,137,110, 91,255,136,108, 89,255,135,107, 89,255,134,106, 88,255,132,104, 86,255,131,103, 85,255,130,101, 85,255, -129,100, 84,255,129,100, 84,255,128, 99, 83,255,125, 97, 81,255,124, 96, 80,255,123, 94, 79,255,120, 91, 77,255,119, 90, 76,255, -118, 88, 75,255,115, 86, 73,255,114, 84, 72,255,112, 82, 70,255,109, 80, 68,255,107, 77, 66,255,105, 75, 65,255,102, 73, 63,255, - 99, 71, 61,255, 96, 69, 61,255, 93, 67, 59,255, 89, 66, 57,255, 87, 64, 57,255, 84, 63, 55,255, 80, 62, 54,255, 77, 60, 52,255, - 74, 59, 52,255, 71, 58, 51,255, 69, 59, 51,255, 65, 60, 56,255, 61, 62, 62,255, 60, 60, 61,255,121,109, 94,255,177,153,124,255, -175,152,123,255,175,151,123,255,175,151,123,255,175,151,122,255,175,151,122,255,174,150,122,255,175,151,122,255,174,150,122,255, -174,150,122,255,174,150,122,255,174,150,122,255,174,150,122,255,174,149,121,255,173,149,121,255,173,149,121,255,172,148,120,255, -172,148,120,255,172,147,120,255,171,147,120,255,171,146,119,255,169,145,118,255,169,144,118,255,168,143,117,255,168,143,116,255, -167,142,116,255,166,141,115,255,165,140,114,255,163,139,113,255,163,138,112,255,162,137,111,255,161,136,111,255,160,134,110,255, -159,133,109,255,158,132,108,255,157,132,108,255,156,130,106,255,155,129,105,255,154,128,105,255,152,126,103,255,152,125,103,255, -150,124,102,255,148,122,100,255,148,121,100,255,146,120, 99,255,145,119, 97,255,144,117, 96,255,143,116, 96,255,143,116, 95,255, -142,115, 95,255,141,113, 94,255,140,113, 94,255,139,112, 92,255,138,111, 92,255,138,110, 91,255,137,109, 91,255,136,109, 90,255, -135,108, 89,255,135,106, 88,255,133,105, 87,255,132,104, 86,255,130,102, 85,255,129,101, 84,255,129,100, 84,255,128,100, 83,255, -127, 98, 82,255,127, 98, 82,255,126, 97, 82,255,125, 97, 81,255,124, 95, 80,255,123, 94, 79,255,121, 92, 77,255,120, 91, 77,255, -119, 90, 75,255,117, 88, 74,255,115, 86, 73,255,113, 84, 71,255,111, 81, 70,255,109, 79, 68,255,106, 77, 66,255,103, 74, 64,255, -100, 72, 63,255, 97, 70, 61,255, 94, 69, 59,255, 91, 66, 58,255, 88, 65, 56,255, 85, 64, 56,255, 82, 62, 54,255, 79, 61, 53,255, - 76, 60, 52,255, 72, 59, 52,255, 70, 58, 51,255, 65, 61, 56,255, 61, 62, 62,255, 60, 60, 61,255,122,109, 94,255,178,154,125,255, -177,153,124,255,177,153,124,255,176,152,124,255,176,153,124,255,176,152,124,255,176,152,123,255,176,152,123,255,176,152,123,255, -176,152,123,255,175,151,123,255,175,151,123,255,175,151,123,255,175,151,122,255,175,151,122,255,174,150,122,255,174,150,122,255, -174,150,121,255,173,148,121,255,173,148,121,255,172,148,120,255,171,146,119,255,170,146,118,255,170,145,118,255,168,144,117,255, -168,143,116,255,167,142,116,255,165,140,115,255,165,140,114,255,164,139,113,255,163,137,112,255,162,136,111,255,161,135,110,255, -159,134,109,255,158,133,109,255,158,132,108,255,156,130,106,255,155,129,106,255,154,128,105,255,152,126,103,255,151,125,102,255, -150,124,102,255,148,122,100,255,147,120, 99,255,145,119, 98,255,144,117, 96,255,142,116, 95,255,141,113, 95,255,140,112, 93,255, -139,111, 93,255,139,111, 92,255,138,111, 92,255,138,111, 92,255,138,111, 92,255,139,112, 92,255,141,113, 93,255,142,115, 95,255, -144,117, 96,255,145,119, 98,255,147,120, 99,255,147,121, 99,255,147,120, 99,255,145,118, 97,255,142,115, 95,255,140,112, 93,255, -136,109, 89,255,132,104, 86,255,127, 99, 82,255,125, 95, 80,255,122, 94, 78,255,121, 92, 77,255,120, 91, 77,255,120, 90, 76,255, -119, 90, 76,255,118, 89, 75,255,117, 88, 74,255,114, 85, 72,255,113, 84, 71,255,110, 81, 69,255,107, 78, 67,255,105, 76, 65,255, -102, 73, 63,255, 98, 71, 61,255, 96, 69, 60,255, 92, 67, 58,255, 89, 65, 57,255, 87, 65, 56,255, 83, 63, 55,255, 80, 61, 53,255, - 77, 60, 53,255, 75, 60, 52,255, 71, 59, 51,255, 65, 60, 56,255, 61, 62, 62,255, 60, 60, 61,255,122,110, 95,255,180,157,126,255, -179,155,126,255,178,155,126,255,179,155,126,255,178,155,126,255,178,154,125,255,178,154,125,255,178,154,125,255,178,154,125,255, -178,154,125,255,178,154,125,255,178,154,125,255,177,153,125,255,177,153,124,255,176,153,124,255,176,152,124,255,175,151,123,255, -175,151,123,255,175,151,123,255,174,150,122,255,173,149,121,255,173,148,121,255,171,147,120,255,171,146,119,255,170,146,118,255, -169,144,117,255,168,144,117,255,167,142,116,255,166,141,115,255,165,140,114,255,164,139,113,255,162,137,112,255,162,136,111,255, -160,134,110,255,159,133,109,255,158,132,108,255,156,130,107,255,155,129,106,255,154,128,105,255,152,126,103,255,151,124,102,255, -148,122,100,255,148,121, 99,255,145,119, 98,255,145,118, 97,255,144,118, 97,255,145,118, 98,255,147,120, 99,255,149,123,101,255, -152,126,103,255,155,130,107,255,158,134,109,255,162,137,112,255,164,141,115,255,168,143,117,255,169,145,118,255,170,147,119,255, -171,147,120,255,171,148,120,255,171,148,121,255,171,148,120,255,170,147,120,255,170,147,120,255,170,147,119,255,170,147,119,255, -169,147,119,255,169,146,118,255,167,143,117,255,162,138,112,255,154,129,105,255,143,116, 96,255,132,105, 86,255,124, 95, 79,255, -118, 89, 75,255,116, 87, 73,255,116, 87, 73,255,116, 86, 73,255,114, 84, 72,255,112, 82, 70,255,109, 80, 68,255,106, 77, 66,255, -103, 74, 64,255,100, 72, 62,255, 97, 70, 61,255, 93, 68, 59,255, 90, 66, 58,255, 87, 65, 56,255, 84, 64, 56,255, 82, 62, 54,255, - 79, 61, 54,255, 76, 60, 53,255, 72, 59, 52,255, 66, 60, 56,255, 61, 62, 62,255, 60, 60, 61,255,123,111, 96,255,181,158,128,255, -180,157,127,255,180,157,127,255,180,156,127,255,180,156,127,255,180,156,127,255,180,156,127,255,180,156,127,255,179,156,126,255, -179,156,126,255,179,156,126,255,179,155,126,255,178,155,126,255,178,154,125,255,177,153,125,255,177,153,124,255,177,153,124,255, -176,152,124,255,175,152,123,255,175,151,123,255,174,150,122,255,174,150,121,255,173,149,121,255,172,147,120,255,171,146,119,255, -170,146,118,255,169,144,118,255,168,143,117,255,167,142,116,255,166,141,115,255,164,139,114,255,164,139,113,255,162,137,112,255, -161,135,110,255,159,134,110,255,158,132,108,255,156,131,107,255,155,129,106,255,154,128,105,255,151,125,102,255,149,123,101,255, -150,123,101,255,152,126,103,255,156,130,107,255,161,136,110,255,164,140,115,255,168,144,117,255,171,147,120,255,172,150,122,255, -173,151,122,255,174,151,123,255,174,151,123,255,174,151,123,255,173,150,122,255,173,150,122,255,172,149,121,255,172,149,121,255, -171,149,121,255,171,148,120,255,171,148,119,255,170,147,120,255,170,147,119,255,169,146,119,255,168,145,118,255,168,145,118,255, -167,144,118,255,168,145,118,255,168,145,118,255,168,145,118,255,169,145,118,255,170,146,119,255,168,144,118,255,161,138,112,255, -150,125,102,255,131,104, 86,255,115, 86, 72,255,113, 84, 71,255,114, 85, 72,255,113, 84, 71,255,110, 81, 69,255,108, 79, 67,255, -105, 76, 65,255,102, 74, 63,255, 98, 71, 61,255, 95, 69, 59,255, 91, 67, 58,255, 88, 66, 57,255, 86, 64, 56,255, 83, 63, 55,255, - 80, 62, 54,255, 78, 61, 53,255, 74, 60, 52,255, 67, 60, 57,255, 61, 62, 62,255, 60, 60, 61,255,124,112, 96,255,183,159,129,255, -181,158,128,255,181,158,128,255,181,158,128,255,181,158,128,255,181,158,128,255,181,158,128,255,181,158,128,255,180,157,127,255, -180,157,127,255,180,156,127,255,180,156,127,255,179,156,126,255,179,155,126,255,178,155,127,255,178,154,125,255,177,154,125,255, -177,154,125,255,176,152,124,255,176,152,124,255,176,152,123,255,174,150,122,255,174,150,122,255,173,149,121,255,171,147,120,255, -171,146,119,255,170,146,119,255,169,144,117,255,168,143,116,255,167,142,116,255,165,140,114,255,164,139,113,255,163,138,112,255, -161,136,111,255,159,134,110,255,159,133,109,255,156,131,107,255,155,129,105,255,154,128,105,255,156,131,107,255,163,138,113,255, -170,146,118,255,173,151,122,255,175,153,124,255,175,153,124,255,175,153,124,255,176,152,123,255,175,152,124,255,175,153,124,255, -175,152,124,255,174,152,123,255,173,151,122,255,174,151,123,255,172,149,121,255,173,150,122,255,172,149,121,255,171,148,120,255, -172,149,121,255,171,148,120,255,171,148,120,255,170,147,119,255,169,146,118,255,169,146,119,255,168,145,118,255,169,146,117,255, -167,144,118,255,168,145,118,255,168,144,117,255,167,144,117,255,167,143,116,255,167,143,116,255,168,144,117,255,168,144,117,255, -168,145,117,255,169,145,119,255,159,135,110,255,129,102, 84,255,112, 82, 70,255,112, 82, 70,255,111, 82, 69,255,109, 80, 68,255, -107, 78, 67,255,103, 75, 65,255,100, 72, 63,255, 96, 70, 60,255, 92, 67, 58,255, 90, 66, 58,255, 87, 65, 56,255, 84, 63, 55,255, - 82, 63, 54,255, 78, 62, 54,255, 75, 60, 52,255, 68, 61, 57,255, 61, 62, 62,255, 60, 60, 61,255,124,113, 97,255,184,161,130,255, -184,161,130,255,183,160,130,255,183,160,130,255,183,160,130,255,183,160,130,255,183,160,130,255,183,160,130,255,182,159,129,255, -182,159,129,255,182,159,129,255,182,158,129,255,181,158,128,255,181,157,128,255,180,157,127,255,180,156,127,255,179,156,126,255, -179,155,126,255,178,154,125,255,178,154,125,255,177,153,125,255,176,152,124,255,175,151,123,255,174,150,122,255,173,149,121,255, -172,148,120,255,171,147,120,255,170,146,119,255,169,144,117,255,168,143,117,255,166,141,115,255,165,140,114,255,164,139,113,255, -161,136,111,255,160,135,110,255,159,134,109,255,161,136,111,255,165,141,114,255,172,148,120,255,177,154,125,255,178,155,126,255, -178,155,126,255,177,154,125,255,177,154,125,255,176,154,124,255,176,153,125,255,175,152,124,255,175,153,124,255,174,152,123,255, -175,151,124,255,174,151,123,255,173,150,122,255,173,150,122,255,172,149,121,255,173,150,122,255,172,149,121,255,172,149,121,255, -171,148,120,255,170,147,119,255,170,147,120,255,170,147,119,255,170,147,118,255,169,146,118,255,168,146,118,255,169,145,117,255, -167,145,118,255,168,145,118,255,168,144,117,255,168,143,116,255,168,144,117,255,168,144,117,255,168,144,118,255,168,144,118,255, -167,143,118,255,167,143,117,255,169,146,118,255,171,148,121,255,152,127,104,255,121, 93, 78,255,110, 81, 69,255,109, 80, 68,255, -108, 79, 67,255,106, 77, 66,255,102, 74, 64,255, 98, 71, 61,255, 94, 69, 59,255, 91, 67, 58,255, 87, 65, 57,255, 85, 64, 56,255, - 83, 63, 55,255, 79, 63, 54,255, 77, 61, 53,255, 68, 61, 57,255, 61, 62, 62,255, 60, 60, 61,255,126,114, 98,255,186,163,132,255, -185,162,131,255,185,162,131,255,185,162,131,255,185,162,131,255,184,162,131,255,184,161,131,255,184,161,131,255,184,161,130,255, -183,160,130,255,183,160,129,255,182,159,129,255,182,158,128,255,182,158,128,255,181,157,128,255,181,157,127,255,180,157,127,255, -179,156,127,255,179,155,126,255,179,155,126,255,178,154,125,255,177,153,124,255,176,152,124,255,175,151,123,255,174,150,122,255, -173,149,121,255,172,148,120,255,171,147,119,255,170,145,118,255,169,144,117,255,167,142,116,255,166,141,115,255,164,139,113,255, -164,139,112,255,167,143,117,255,173,149,122,255,177,154,124,255,179,157,127,255,179,157,127,255,178,156,127,255,178,155,126,255, -177,154,125,255,176,154,125,255,176,154,124,255,175,153,124,255,176,152,124,255,175,152,124,255,175,152,123,255,175,151,124,255, -174,152,123,255,173,151,122,255,174,151,123,255,173,150,122,255,173,150,122,255,172,149,121,255,172,149,121,255,172,149,121,255, -171,148,120,255,170,147,119,255,170,147,120,255,169,146,119,255,170,147,118,255,168,145,118,255,169,145,117,255,169,145,118,255, -167,145,118,255,168,145,118,255,168,144,117,255,168,144,117,255,168,144,117,255,168,144,118,255,168,144,117,255,167,144,118,255, -168,144,118,255,168,143,118,255,168,143,118,255,167,144,117,255,170,146,120,255,166,142,116,255,140,114, 95,255,108, 80, 67,255, -107, 78, 67,255,107, 78, 67,255,104, 75, 65,255,100, 73, 63,255, 95, 70, 60,255, 92, 67, 59,255, 89, 66, 57,255, 86, 64, 56,255, - 83, 64, 55,255, 81, 63, 55,255, 78, 61, 53,255, 69, 61, 57,255, 61, 62, 62,255, 60, 60, 61,255,126,114, 98,255,188,164,133,255, -186,163,132,255,186,163,132,255,186,163,132,255,185,163,132,255,185,164,132,255,185,163,133,255,185,162,131,255,185,162,132,255, -184,161,131,255,184,161,130,255,184,161,131,255,183,160,129,255,183,159,129,255,182,160,129,255,182,158,128,255,181,158,128,255, -180,157,127,255,180,157,127,255,179,156,126,255,179,155,126,255,178,154,125,255,177,153,124,255,177,153,124,255,175,151,123,255, -174,150,122,255,173,149,121,255,172,148,120,255,170,146,119,255,170,145,118,255,167,143,116,255,167,142,116,255,170,146,119,255, -177,154,125,255,179,157,127,255,179,157,127,255,179,157,128,255,178,157,127,255,179,156,126,255,177,156,127,255,177,155,126,255, -176,154,125,255,176,154,125,255,175,154,124,255,176,153,125,255,176,153,123,255,175,152,123,255,174,151,124,255,175,152,123,255, -174,151,122,255,174,151,123,255,173,150,122,255,172,149,121,255,173,150,122,255,172,149,121,255,171,148,120,255,171,148,120,255, -170,147,119,255,171,148,120,255,169,146,118,255,169,147,118,255,170,146,119,255,168,146,117,255,169,145,117,255,169,144,118,255, -168,145,118,255,167,145,117,255,168,144,118,255,168,144,118,255,168,144,117,255,168,144,118,255,168,144,118,255,168,144,117,255, -167,144,117,255,167,144,117,255,167,144,117,255,166,143,116,255,167,144,117,255,166,144,116,255,169,145,118,255,155,131,107,255, -110, 82, 69,255,106, 77, 66,255,105, 76, 66,255,102, 74, 64,255, 98, 71, 61,255, 93, 69, 59,255, 90, 67, 58,255, 87, 65, 56,255, - 84, 64, 55,255, 81, 63, 55,255, 78, 62, 53,255, 69, 61, 57,255, 61, 61, 62,255, 60, 60, 61,255,127,115, 99,255,189,166,134,255, -188,165,134,255,188,165,134,255,188,165,134,255,187,165,134,255,187,165,134,255,187,164,133,255,187,164,133,255,187,164,133,255, -186,163,132,255,186,163,132,255,185,162,132,255,185,162,131,255,184,161,131,255,184,161,130,255,183,160,130,255,182,159,129,255, -182,159,129,255,181,158,128,255,180,157,127,255,180,156,127,255,179,156,127,255,178,154,125,255,177,154,125,255,176,153,124,255, -175,151,123,255,174,150,122,255,173,148,121,255,171,147,120,255,170,146,119,255,172,149,121,255,178,155,125,255,181,159,129,255, -180,158,128,255,179,157,127,255,180,158,128,255,179,157,128,255,179,157,127,255,177,156,127,255,178,156,126,255,177,155,125,255, -176,155,126,255,176,153,125,255,175,153,124,255,175,152,124,255,175,152,123,255,174,151,124,255,174,152,123,255,174,151,122,255, -173,150,123,255,174,151,123,255,172,149,121,255,172,150,121,255,172,149,121,255,171,148,120,255,171,148,120,255,171,148,120,255, -170,147,119,255,170,147,119,255,169,146,118,255,170,147,119,255,170,146,119,255,168,146,118,255,169,145,117,255,169,144,118,255, -168,145,118,255,168,144,118,255,167,144,118,255,167,144,118,255,168,144,117,255,168,144,116,255,167,144,116,255,166,144,116,255, -166,144,117,255,167,144,117,255,167,144,117,255,167,143,117,255,167,143,117,255,167,143,117,255,166,142,116,255,170,147,120,255, -160,136,112,255,116, 88, 74,255,102, 73, 63,255,103, 75, 64,255, 99, 72, 62,255, 96, 70, 60,255, 91, 67, 58,255, 88, 66, 58,255, - 85, 64, 56,255, 82, 64, 55,255, 79, 62, 54,255, 70, 62, 57,255, 61, 61, 62,255, 60, 60, 61,255,128,116,100,255,190,168,136,255, -189,167,135,255,189,166,135,255,189,166,135,255,189,166,135,255,188,166,134,255,188,165,134,255,188,165,134,255,187,165,134,255, -187,164,133,255,187,164,133,255,186,163,132,255,185,162,132,255,185,162,131,255,185,162,131,255,184,161,130,255,183,160,130,255, -183,160,129,255,182,159,129,255,181,158,128,255,181,157,128,255,180,156,127,255,179,156,126,255,178,154,125,255,177,153,124,255, -176,152,124,255,175,151,123,255,173,149,121,255,175,151,123,255,179,156,126,255,180,158,128,255,181,159,129,255,181,159,129,255, -180,158,128,255,179,157,127,255,180,158,128,255,178,156,127,255,179,157,127,255,178,156,127,255,177,155,125,255,177,155,126,255, -176,155,126,255,176,153,124,255,175,153,125,255,176,152,123,255,175,152,124,255,174,151,123,255,175,151,124,255,173,151,122,255, -174,151,123,255,173,150,122,255,172,149,121,255,173,150,122,255,172,149,121,255,171,148,120,255,172,149,121,255,171,148,120,255, -171,148,120,255,170,147,119,255,170,147,118,255,169,146,119,255,170,146,118,255,168,146,119,255,169,145,118,255,169,144,117,255, -168,145,118,255,167,144,118,255,168,143,118,255,168,144,118,255,167,144,117,255,167,144,116,255,166,144,117,255,167,143,117,255, -167,144,117,255,167,143,117,255,167,143,117,255,167,142,117,255,166,142,116,255,167,142,117,255,167,142,117,255,166,142,116,255, -168,146,118,255,166,141,116,255,122, 96, 80,255, 99, 72, 62,255,100, 73, 63,255, 97, 70, 61,255, 92, 69, 59,255, 89, 66, 57,255, - 85, 65, 56,255, 83, 64, 55,255, 80, 62, 54,255, 70, 62, 58,255, 61, 61, 62,255, 60, 60, 61,255,129,117,100,255,192,169,137,255, -190,168,136,255,190,168,137,255,191,167,136,255,189,167,135,255,189,168,135,255,189,167,135,255,189,167,135,255,188,166,134,255, -189,165,135,255,187,166,133,255,188,165,134,255,186,163,133,255,187,164,133,255,186,163,132,255,185,162,131,255,184,161,131,255, -184,161,131,255,183,160,129,255,182,159,129,255,182,159,129,255,180,157,127,255,180,156,127,255,179,156,127,255,178,154,125,255, -176,153,124,255,175,152,123,255,179,156,126,255,181,159,129,255,180,158,128,255,181,159,129,255,181,159,129,255,180,158,128,255, -180,158,128,255,179,157,127,255,180,158,128,255,178,156,127,255,178,157,126,255,179,156,127,255,177,155,125,255,177,154,126,255, -176,155,126,255,176,153,124,255,175,153,125,255,176,152,124,255,174,152,123,255,175,151,124,255,174,151,123,255,173,150,122,255, -174,151,123,255,172,150,121,255,172,149,122,255,173,150,122,255,171,149,120,255,172,148,121,255,172,149,121,255,170,147,120,255, -171,148,119,255,170,147,120,255,170,147,119,255,170,146,118,255,169,145,118,255,168,146,119,255,169,145,119,255,169,144,118,255, -168,145,118,255,167,144,118,255,168,143,118,255,167,144,117,255,166,144,116,255,166,144,116,255,167,143,117,255,167,144,117,255, -167,143,117,255,167,143,117,255,167,142,117,255,166,142,116,255,167,142,117,255,166,143,116,255,166,143,116,255,165,142,115,255, -166,141,116,255,166,143,116,255,167,144,118,255,117, 90, 76,255, 97, 71, 61,255, 97, 71, 61,255, 93, 69, 60,255, 89, 66, 58,255, - 86, 65, 56,255, 83, 64, 56,255, 80, 63, 54,255, 70, 62, 58,255, 61, 61, 62,255, 60, 60, 61,255,129,118,101,255,193,171,138,255, -192,170,138,255,191,169,137,255,192,170,137,255,191,169,137,255,191,169,137,255,191,168,136,255,190,168,136,255,190,167,136,255, -190,167,136,255,189,167,135,255,188,166,134,255,188,165,134,255,188,165,134,255,187,164,133,255,186,164,133,255,185,163,132,255, -185,162,132,255,184,161,131,255,184,161,130,255,183,159,129,255,181,159,129,255,181,157,128,255,180,156,127,255,179,155,126,255, -179,155,126,255,181,158,129,255,181,159,129,255,181,159,129,255,182,160,130,255,181,159,129,255,180,158,128,255,181,159,129,255, -180,158,128,255,179,157,127,255,180,158,127,255,179,156,127,255,179,157,127,255,177,156,125,255,178,155,126,255,177,155,126,255, -177,155,126,255,176,153,125,255,175,153,124,255,175,152,124,255,174,152,123,255,175,152,123,255,173,151,122,255,174,150,123,255, -173,151,122,255,173,150,122,255,173,150,122,255,172,149,122,255,171,149,121,255,172,148,120,255,171,149,120,255,170,147,120,255, -170,147,120,255,169,146,119,255,170,146,120,255,169,147,120,255,170,146,119,255,168,145,118,255,169,146,118,255,169,145,119,255, -168,145,118,255,167,144,117,255,168,144,118,255,167,144,117,255,166,144,116,255,167,144,117,255,167,143,117,255,167,143,117,255, -167,142,117,255,167,143,117,255,167,142,117,255,166,143,116,255,165,142,115,255,165,142,115,255,166,141,116,255,166,141,116,255, -166,142,116,255,165,141,115,255,167,144,117,255,167,144,117,255,113, 87, 74,255, 94, 68, 59,255, 95, 70, 60,255, 90, 67, 58,255, - 87, 66, 57,255, 83, 64, 56,255, 81, 63, 55,255, 71, 62, 58,255, 61, 61, 62,255, 60, 60, 61,255,130,118,102,255,194,172,139,255, -193,171,138,255,192,170,138,255,192,170,138,255,192,170,137,255,192,170,137,255,191,169,137,255,191,169,137,255,191,169,136,255, -190,168,136,255,190,168,136,255,189,167,135,255,189,167,135,255,188,166,134,255,188,165,134,255,187,164,133,255,187,164,133,255, -186,163,132,255,185,162,132,255,184,161,131,255,183,160,130,255,182,158,128,255,181,158,128,255,180,157,127,255,181,158,128,255, -181,159,129,255,180,158,128,255,181,159,129,255,182,160,130,255,182,160,130,255,181,159,129,255,180,158,128,255,181,159,129,255, -180,158,128,255,179,157,127,255,180,158,128,255,178,156,127,255,179,157,127,255,178,156,125,255,177,155,126,255,177,155,125,255, -177,154,126,255,175,153,124,255,176,153,125,255,175,153,123,255,174,152,124,255,175,151,123,255,173,151,123,255,174,151,123,255, -173,150,122,255,173,150,122,255,173,150,122,255,172,149,121,255,171,149,122,255,172,148,121,255,171,149,121,255,171,147,121,255, -170,147,120,255,169,147,119,255,170,147,120,255,170,146,119,255,170,147,120,255,168,145,118,255,169,146,119,255,169,145,118,255, -168,144,118,255,167,145,117,255,168,144,118,255,167,144,117,255,166,143,116,255,167,144,117,255,167,142,117,255,167,142,117,255, -166,143,116,255,166,142,116,255,166,143,116,255,165,142,115,255,166,142,116,255,166,141,116,255,166,142,116,255,166,142,116,255, -166,142,116,255,166,141,116,255,165,141,115,255,167,144,117,255,165,141,115,255,108, 83, 70,255, 93, 69, 59,255, 92, 68, 58,255, - 87, 66, 57,255, 84, 65, 56,255, 81, 63, 55,255, 71, 62, 58,255, 61, 61, 62,255, 60, 60, 61,255,131,119,102,255,196,173,140,255, -195,173,140,255,194,172,140,255,194,172,139,255,194,171,139,255,194,170,139,255,193,171,139,255,193,170,138,255,193,169,137,255, -192,170,138,255,191,169,136,255,190,169,137,255,191,168,137,255,189,167,135,255,189,167,135,255,188,166,134,255,187,165,133,255, -187,164,133,255,185,162,131,255,184,161,131,255,184,161,131,255,182,159,129,255,181,158,128,255,182,159,129,255,179,158,128,255, -181,159,129,255,181,159,129,255,181,159,129,255,182,160,130,255,182,160,130,255,180,158,128,255,181,159,129,255,180,159,128,255, -180,158,128,255,179,157,127,255,180,158,128,255,178,156,126,255,178,156,126,255,177,155,127,255,177,155,125,255,176,155,126,255, -177,154,125,255,175,154,125,255,175,153,124,255,176,152,123,255,174,152,123,255,175,151,122,255,173,152,123,255,173,151,122,255, -174,150,123,255,172,150,121,255,173,149,121,255,172,150,122,255,172,149,122,255,171,148,121,255,172,148,120,255,170,148,121,255, -170,147,120,255,169,147,119,255,170,147,120,255,170,147,120,255,170,147,120,255,168,145,118,255,169,146,119,255,169,145,119,255, -168,145,118,255,167,144,117,255,168,145,118,255,168,143,118,255,167,144,117,255,166,143,116,255,166,143,116,255,167,143,117,255, -167,142,117,255,165,143,115,255,166,142,116,255,166,141,116,255,166,142,116,255,166,142,116,255,165,141,115,255,165,141,115,255, -165,141,115,255,165,142,115,255,164,142,114,255,164,141,114,255,167,144,117,255,153,129,105,255, 96, 72, 62,255, 92, 68, 59,255, - 88, 67, 58,255, 84, 65, 56,255, 81, 63, 55,255, 71, 63, 58,255, 61, 61, 62,255, 60, 60, 61,255,131,120,103,255,197,175,142,255, -195,174,141,255,195,173,140,255,194,173,140,255,194,172,140,255,194,172,140,255,194,172,139,255,194,172,139,255,193,171,139,255, -193,170,138,255,192,170,138,255,192,170,138,255,192,169,137,255,191,168,136,255,190,168,136,255,189,167,135,255,189,166,135,255, -187,165,134,255,187,164,133,255,185,162,132,255,185,162,131,255,184,160,130,255,181,159,128,255,179,157,127,255,180,158,128,255, -181,159,129,255,180,158,128,255,181,159,129,255,182,160,130,255,182,160,129,255,180,158,128,255,181,158,129,255,181,159,129,255, -180,157,128,255,180,158,127,255,178,156,128,255,179,157,126,255,178,156,126,255,178,156,127,255,176,154,125,255,177,154,125,255, -177,154,125,255,175,153,124,255,176,153,124,255,175,153,123,255,174,152,124,255,175,151,123,255,173,152,122,255,174,150,123,255, -174,150,122,255,172,151,123,255,173,149,121,255,172,150,122,255,171,149,121,255,172,149,121,255,172,148,120,255,170,148,121,255, -170,147,120,255,170,147,119,255,169,146,120,255,169,146,120,255,169,146,120,255,169,146,119,255,168,145,118,255,168,145,119,255, -168,145,118,255,167,144,117,255,168,145,118,255,167,143,117,255,166,144,116,255,167,143,117,255,167,143,117,255,166,142,116,255, -165,143,115,255,166,142,116,255,166,141,116,255,165,141,115,255,165,141,115,255,165,141,115,255,164,140,114,255,164,140,114,255, -164,141,114,255,164,142,114,255,165,142,115,255,165,142,115,255,164,141,114,255,170,147,120,255,130,105, 87,255, 88, 66, 57,255, - 88, 67, 57,255, 84, 65, 57,255, 82, 64, 55,255, 71, 63, 58,255, 61, 61, 62,255, 60, 60, 61,255,132,121,104,255,197,175,142,255, -196,174,141,255,196,174,141,255,195,173,140,255,195,174,141,255,195,173,140,255,194,173,140,255,194,173,140,255,194,172,139,255, -193,171,139,255,193,171,139,255,193,171,138,255,192,170,138,255,191,169,137,255,191,169,137,255,190,168,136,255,189,167,135,255, -189,166,135,255,187,165,133,255,187,163,132,255,185,162,132,255,180,157,127,255,178,156,127,255,179,157,127,255,179,157,127,255, -181,159,129,255,180,158,128,255,182,160,129,255,182,160,129,255,181,159,129,255,180,158,129,255,180,159,128,255,181,158,129,255, -179,157,127,255,180,158,128,255,179,157,128,255,178,156,126,255,178,156,127,255,178,155,126,255,177,155,126,255,176,154,125,255, -177,154,125,255,175,153,124,255,176,153,123,255,174,152,124,255,174,151,123,255,175,152,124,255,173,151,122,255,173,150,122,255, -174,151,123,255,172,150,122,255,172,149,121,255,173,149,121,255,171,150,122,255,172,148,120,255,172,149,121,255,171,148,121,255, -170,147,120,255,171,148,119,255,170,147,120,255,170,147,120,255,170,147,119,255,169,146,120,255,169,146,119,255,169,146,118,255, -168,145,118,255,168,145,118,255,167,145,117,255,167,143,117,255,166,144,116,255,167,143,117,255,167,142,117,255,166,143,116,255, -165,142,115,255,166,141,116,255,165,142,115,255,166,142,116,255,165,141,115,255,164,140,114,255,165,141,115,255,165,140,115,255, -165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,166,143,116,255,170,147,120,255,105, 80, 68,255, - 86, 65, 56,255, 85, 65, 57,255, 82, 64, 55,255, 72, 63, 58,255, 61, 61, 62,255, 60, 60, 61,255,132,121,104,255,199,178,144,255, -198,175,142,255,197,176,143,255,197,176,142,255,197,174,142,255,196,175,142,255,196,174,142,255,195,174,140,255,194,174,141,255, -195,173,140,255,194,172,140,255,193,171,140,255,194,172,139,255,193,171,139,255,192,170,138,255,192,170,137,255,190,168,136,255, -190,167,136,255,189,165,134,255,186,163,133,255,179,157,127,255,178,156,127,255,179,157,128,255,179,157,127,255,181,159,129,255, -180,158,128,255,181,159,129,255,180,158,129,255,180,158,129,255,180,158,129,255,180,158,128,255,181,159,129,255,180,158,128,255, -180,158,128,255,179,157,128,255,178,156,128,255,178,156,126,255,177,156,127,255,177,155,126,255,177,154,125,255,176,153,124,255, -176,153,124,255,175,152,123,255,176,153,124,255,175,152,124,255,175,152,124,255,174,151,123,255,174,151,123,255,174,151,123,255, -173,150,122,255,173,150,122,255,173,150,122,255,173,150,122,255,171,148,120,255,172,149,121,255,172,149,121,255,172,149,121,255, -171,148,120,255,170,147,119,255,171,148,120,255,170,147,119,255,170,147,119,255,171,147,119,255,170,146,120,255,170,147,119,255, -168,145,119,255,168,145,118,255,167,144,117,255,167,144,117,255,166,143,116,255,167,144,117,255,166,142,116,255,165,142,115,255, -166,141,116,255,166,142,116,255,166,142,116,255,164,142,114,255,165,140,115,255,165,140,115,255,165,141,115,255,165,141,115,255, -165,141,115,255,165,141,115,255,165,141,115,255,165,140,115,255,165,142,115,255,164,141,114,255,168,145,118,255,154,130,107,255, - 86, 64, 56,255, 85, 65, 56,255, 82, 64, 55,255, 72, 62, 58,255, 61, 61, 62,255, 60, 60, 60,255,133,122,104,255,200,179,145,255, -198,177,144,255,198,177,143,255,198,176,143,255,198,176,143,255,197,176,142,255,197,175,142,255,196,175,142,255,196,174,142,255, -196,174,141,255,195,174,141,255,195,173,141,255,194,172,140,255,194,172,140,255,193,171,139,255,193,170,138,255,192,169,137,255, -190,168,136,255,188,166,134,255,180,157,128,255,178,156,126,255,179,157,127,255,179,157,128,255,180,157,128,255,181,159,129,255, -181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,180,158,128,255,180,158,128,255, -179,157,128,255,179,157,127,255,178,157,128,255,178,155,126,255,177,155,126,255,178,154,126,255,177,154,125,255,176,154,125,255, -175,152,123,255,176,153,124,255,175,152,124,255,174,152,123,255,174,152,123,255,174,151,123,255,174,150,123,255,173,151,122,255, -173,150,122,255,173,150,122,255,172,149,121,255,172,149,121,255,172,149,121,255,172,149,121,255,172,149,121,255,172,149,121,255, -171,148,120,255,171,148,120,255,172,149,121,255,171,148,120,255,171,148,120,255,171,148,120,255,171,148,120,255,170,147,120,255, -169,146,118,255,169,146,118,255,168,145,117,255,167,144,117,255,167,144,117,255,166,144,116,255,166,142,116,255,165,142,115,255, -166,141,116,255,166,142,116,255,165,142,115,255,164,141,114,255,165,141,115,255,165,140,115,255,165,141,115,255,165,141,115,255, -165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,140,115,255,164,140,114,255,164,141,114,255,169,146,119,255, -112, 90, 75,255, 84, 64, 56,255, 82, 64, 55,255, 72, 62, 58,255, 61, 61, 62,255, 60, 60, 60,255,133,122,105,255,201,179,146,255, -199,178,145,255,199,178,144,255,199,177,144,255,198,177,144,255,198,177,143,255,198,176,143,255,197,176,143,255,197,176,143,255, -197,175,142,255,196,175,142,255,196,174,142,255,195,174,141,255,195,173,140,255,194,172,139,255,193,171,139,255,193,171,138,255, -190,168,137,255,179,157,128,255,178,156,126,255,178,157,126,255,179,156,127,255,180,158,128,255,180,158,128,255,180,159,128,255, -181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,180,158,128,255,180,158,128,255,180,158,128,255,179,157,127,255, -179,157,127,255,179,157,128,255,178,157,127,255,178,155,126,255,178,155,126,255,177,155,125,255,177,154,124,255,176,154,125,255, -175,153,123,255,175,153,124,255,175,152,123,255,175,151,124,255,174,151,123,255,173,151,122,255,174,151,123,255,173,150,122,255, -172,150,121,255,173,150,122,255,172,149,121,255,171,148,120,255,172,149,121,255,172,149,121,255,172,149,121,255,171,148,120,255, -172,149,121,255,172,149,121,255,172,149,121,255,172,148,121,255,171,148,121,255,171,148,121,255,171,148,121,255,171,148,120,255, -170,147,119,255,169,146,119,255,169,146,118,255,168,144,117,255,167,144,117,255,167,144,116,255,166,143,116,255,165,142,115,255, -166,142,116,255,166,141,116,255,165,142,115,255,164,142,114,255,165,141,115,255,165,140,115,255,165,141,115,255,165,141,115,255, -165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,140,115,255,164,141,114,255,166,143,116,255, -143,120, 98,255, 86, 67, 57,255, 83, 64, 55,255, 72, 62, 58,255, 61, 61, 62,255, 60, 60, 60,255,134,123,106,255,202,181,147,255, -201,180,146,255,201,180,146,255,200,179,146,255,200,179,145,255,199,178,145,255,199,178,145,255,199,178,143,255,198,177,144,255, -198,177,144,255,198,177,142,255,197,176,143,255,197,176,143,255,196,175,142,255,196,174,141,255,195,173,141,255,193,171,139,255, -181,158,129,255,177,155,126,255,178,156,127,255,179,156,127,255,179,158,127,255,180,157,128,255,181,158,129,255,181,159,129,255, -181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,179,157,127,255,180,158,128,255,180,157,128,255, -180,157,128,255,179,156,127,255,178,156,126,255,178,156,126,255,177,155,126,255,177,154,125,255,176,154,125,255,175,154,125,255, -175,153,125,255,174,153,123,255,175,152,124,255,173,151,122,255,174,151,123,255,174,150,123,255,172,150,121,255,173,149,122,255, -173,150,122,255,171,148,120,255,172,149,121,255,171,148,121,255,172,149,121,255,171,148,121,255,171,148,121,255,171,149,121,255, -171,149,121,255,171,149,120,255,171,148,122,255,171,149,121,255,172,150,122,255,173,150,121,255,173,150,122,255,172,149,122,255, -170,148,121,255,170,147,120,255,170,147,119,255,168,146,118,255,168,145,117,255,167,144,116,255,166,143,116,255,165,142,115,255, -165,142,115,255,165,142,115,255,166,141,116,255,165,142,115,255,164,142,114,255,165,141,115,255,165,141,115,255,165,141,115,255, -165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255, -163,139,113,255, 94, 74, 63,255, 82, 65, 55,255, 72, 63, 58,255, 61, 61, 62,255, 60, 60, 60,255,134,124,107,255,203,183,149,255, -202,181,148,255,201,181,147,255,201,180,147,255,201,180,147,255,200,180,146,255,200,179,146,255,200,179,145,255,199,178,145,255, -199,178,145,255,199,178,144,255,198,177,144,255,198,176,143,255,198,176,143,255,196,175,142,255,196,174,141,255,185,163,132,255, -177,154,126,255,178,156,127,255,179,157,127,255,179,157,128,255,180,157,128,255,181,158,129,255,180,158,128,255,181,159,129,255, -181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,180,158,128,255,179,157,127,255,179,158,127,255, -179,157,127,255,179,157,127,255,178,156,127,255,177,155,125,255,177,155,126,255,177,154,125,255,175,154,124,255,176,153,125,255, -174,153,123,255,175,152,124,255,174,152,123,255,174,152,123,255,173,151,122,255,173,150,122,255,173,149,122,255,173,150,122,255, -172,149,121,255,172,148,121,255,171,149,121,255,172,149,121,255,171,148,121,255,171,148,121,255,170,147,121,255,170,149,121,255, -170,149,121,255,171,149,120,255,171,148,121,255,172,149,122,255,173,150,121,255,172,149,122,255,172,149,122,255,173,150,121,255, -172,149,121,255,171,148,121,255,170,147,120,255,169,146,119,255,169,146,118,255,168,145,117,255,167,144,116,255,166,143,116,255, -165,142,115,255,166,142,116,255,165,142,115,255,166,141,116,255,165,142,115,255,164,141,114,255,165,140,115,255,165,141,115,255, -165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255, -171,147,119,255,114, 93, 78,255, 80, 63, 55,255, 72, 63, 58,255, 61, 61, 62,255, 60, 60, 60,255,135,125,108,255,205,184,151,255, -202,182,149,255,202,182,149,255,202,182,148,255,201,181,148,255,201,181,148,255,201,180,147,255,201,180,147,255,200,179,146,255, -200,179,146,255,200,179,146,255,199,179,146,255,199,178,145,255,198,177,144,255,198,177,144,255,190,168,136,255,176,154,125,255, -178,156,126,255,178,156,127,255,179,157,128,255,179,158,127,255,180,157,128,255,181,158,129,255,181,159,129,255,181,159,129,255, -181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,180,158,128,255,181,159,129,255,180,158,128,255,180,158,128,255, -179,156,127,255,178,156,126,255,177,156,127,255,177,155,126,255,177,155,126,255,176,154,125,255,176,154,125,255,175,153,124,255, -175,152,124,255,174,152,123,255,174,152,123,255,174,151,123,255,173,151,122,255,172,150,121,255,173,150,122,255,172,150,121,255, -172,149,121,255,171,149,121,255,172,148,121,255,171,149,121,255,170,147,121,255,170,147,121,255,171,147,121,255,171,148,121,255, -170,148,121,255,171,148,121,255,172,149,120,255,172,149,121,255,172,149,122,255,173,150,121,255,173,149,122,255,172,149,122,255, -172,150,122,255,171,149,121,255,171,148,121,255,169,147,119,255,169,146,119,255,168,145,118,255,167,144,117,255,167,143,116,255, -166,143,116,255,165,142,115,255,166,142,116,255,165,142,115,255,165,141,115,255,165,142,115,255,165,141,115,255,165,140,115,255, -165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,164,140,114,255, -167,144,117,255,149,126,105,255, 77, 60, 52,255, 71, 63, 58,255, 61, 61, 62,255, 60, 60, 60,255,136,125,109,255,205,186,153,255, -204,185,152,255,204,183,151,255,204,183,151,255,203,183,150,255,203,183,150,255,203,182,149,255,202,182,149,255,202,182,149,255, -202,181,148,255,201,181,148,255,201,180,147,255,201,180,147,255,200,180,146,255,195,174,142,255,177,154,125,255,178,155,126,255, -179,157,127,255,180,158,127,255,179,157,127,255,179,157,127,255,181,159,129,255,181,158,129,255,181,159,129,255,181,159,129,255, -181,159,129,255,181,159,129,255,181,159,129,255,180,158,128,255,181,159,129,255,180,158,128,255,179,157,127,255,179,157,127,255, -178,156,126,255,178,156,127,255,177,155,126,255,176,154,125,255,177,155,126,255,176,154,125,255,175,153,124,255,174,152,123,255, -175,153,124,255,174,152,123,255,173,151,122,255,174,151,122,255,172,151,121,255,173,150,122,255,172,149,121,255,171,149,122,255, -172,148,121,255,172,148,121,255,171,149,121,255,170,148,121,255,171,148,121,255,171,148,121,255,171,148,121,255,171,148,121,255, -171,148,121,255,171,148,121,255,170,147,121,255,170,147,120,255,171,148,120,255,171,149,121,255,172,149,121,255,172,149,121,255, -172,150,122,255,172,149,121,255,171,149,120,255,170,148,120,255,170,147,120,255,169,146,119,255,168,145,118,255,168,144,117,255, -167,143,116,255,166,143,116,255,165,142,115,255,165,143,116,255,166,141,116,255,165,141,115,255,164,141,114,255,165,140,115,255, -165,140,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,140,115,255, -165,141,114,255,169,145,119,255, 83, 67, 58,255, 71, 62, 58,255, 61, 61, 62,255, 60, 60, 60,255,136,126,110,255,206,187,155,255, -205,186,154,255,205,185,153,255,204,184,152,255,204,184,152,255,204,184,151,255,203,183,150,255,203,183,150,255,203,183,150,255, -203,182,149,255,202,182,149,255,202,182,149,255,202,181,148,255,200,179,146,255,182,160,130,255,178,155,126,255,179,156,127,255, -179,157,127,255,179,157,127,255,180,158,128,255,180,158,128,255,180,158,128,255,181,159,129,255,181,159,129,255,181,159,129,255, -181,159,129,255,181,159,129,255,180,158,128,255,181,159,129,255,180,158,128,255,179,157,127,255,179,157,127,255,179,157,126,255, -178,156,127,255,177,156,127,255,177,155,126,255,176,154,125,255,176,154,125,255,176,154,125,255,175,153,124,255,175,153,124,255, -174,152,123,255,174,151,122,255,174,151,122,255,173,150,121,255,172,150,121,255,172,150,122,255,171,149,122,255,172,148,122,255, -172,149,121,255,171,149,121,255,170,148,121,255,171,148,121,255,171,148,121,255,171,148,121,255,171,148,121,255,171,148,121,255, -171,148,121,255,171,148,121,255,171,148,121,255,171,148,121,255,170,147,121,255,171,148,120,255,171,148,120,255,171,149,121,255, -171,149,121,255,171,149,121,255,171,149,120,255,170,148,120,255,170,147,120,255,170,147,120,255,168,145,118,255,168,145,118,255, -168,143,116,255,167,143,116,255,166,143,116,255,166,142,115,255,165,142,115,255,166,141,116,255,164,142,114,255,165,141,115,255, -165,140,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255, -164,140,114,255,171,147,119,255,107, 89, 79,255, 69, 60, 56,255, 61, 61, 62,255, 60, 60, 60,255,137,127,111,255,208,188,157,255, -206,187,155,255,205,186,155,255,205,186,154,255,205,185,154,255,204,185,153,255,204,185,153,255,204,185,153,255,204,184,152,255, -204,184,152,255,203,183,151,255,203,183,151,255,204,182,150,255,191,170,139,255,178,155,126,255,178,156,127,255,179,157,127,255, -180,158,128,255,180,158,128,255,181,159,129,255,181,159,129,255,181,159,129,255,180,158,128,255,180,158,128,255,181,159,129,255, -181,159,129,255,181,159,129,255,181,159,129,255,180,158,128,255,179,157,127,255,179,157,128,255,179,157,127,255,179,156,126,255, -177,156,127,255,177,155,126,255,178,155,126,255,176,154,125,255,176,154,124,255,175,153,124,255,176,152,123,255,175,152,123,255, -175,151,122,255,174,151,123,255,173,151,122,255,172,151,122,255,173,150,122,255,172,149,121,255,172,150,121,255,172,148,122,255, -172,148,121,255,170,149,121,255,171,148,121,255,171,147,121,255,171,148,121,255,171,148,121,255,170,147,120,255,171,148,121,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,148,120,255,170,148,120,255,170,148,120,255, -171,148,121,255,171,148,121,255,171,148,121,255,170,148,120,255,169,147,119,255,170,147,120,255,168,145,118,255,169,145,118,255, -168,144,117,255,167,143,116,255,167,143,116,255,165,143,116,255,166,142,116,255,166,142,116,255,164,142,114,255,165,141,115,255, -165,140,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255, -164,140,114,255,167,143,116,255,131,113, 98,255, 66, 58, 54,255, 61, 61, 62,255, 60, 60, 60,255,137,128,112,255,209,190,159,255, -207,189,158,255,207,188,157,255,206,188,156,255,206,187,156,255,206,187,155,255,206,187,155,255,205,186,155,255,205,186,154,255, -205,186,154,255,205,185,153,255,205,185,153,255,200,180,149,255,177,155,125,255,178,156,126,255,180,158,128,255,181,159,129,255, -181,159,129,255,180,158,128,255,181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,182,160,130,255,180,158,128,255, -181,159,129,255,181,159,129,255,180,158,128,255,179,157,127,255,180,158,128,255,179,157,128,255,179,156,127,255,178,156,127,255, -177,155,126,255,178,154,125,255,177,155,125,255,176,154,124,255,177,153,125,255,176,153,124,255,176,153,124,255,175,152,123,255, -173,152,122,255,174,150,123,255,173,151,123,255,173,149,122,255,172,150,121,255,171,150,122,255,171,148,122,255,172,149,121,255, -171,149,120,255,170,147,121,255,171,148,121,255,171,148,121,255,170,147,120,255,171,148,121,255,170,147,120,255,169,146,119,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,146,120,255,170,146,120,255,169,146,119,255, -169,147,119,255,169,147,119,255,169,147,119,255,169,147,119,255,170,146,120,255,169,146,119,255,168,145,118,255,169,145,118,255, -168,145,118,255,167,143,116,255,166,144,117,255,166,143,116,255,165,143,116,255,166,142,116,255,165,142,115,255,164,142,114,255, -165,141,115,255,165,141,115,255,165,141,115,255,165,141,115,255,164,140,114,255,165,141,115,255,164,140,114,255,164,140,114,255, -164,140,114,255,165,141,114,255,146,126,107,255, 66, 58, 54,255, 61, 61, 62,255, 60, 60, 60,255,138,128,113,255,209,191,161,255, -208,190,159,255,208,189,159,255,208,189,159,255,207,188,158,255,207,188,158,255,207,188,157,255,206,187,157,255,206,187,157,255, -206,187,156,255,206,187,155,255,206,186,155,255,183,162,132,255,178,156,126,255,179,157,127,255,181,159,129,255,180,158,128,255, -180,158,128,255,181,159,129,255,182,160,130,255,182,160,130,255,182,160,130,255,181,159,129,255,180,158,128,255,181,159,129,255, -181,159,129,255,181,159,129,255,180,158,128,255,179,157,127,255,180,158,127,255,178,156,128,255,179,156,127,255,178,155,126,255, -177,155,125,255,177,155,125,255,176,154,124,255,176,153,124,255,176,153,124,255,176,153,123,255,175,152,124,255,174,152,123,255, -174,151,123,255,173,150,122,255,172,150,123,255,173,150,121,255,171,150,122,255,172,149,122,255,172,148,121,255,171,149,120,255, -171,148,121,255,171,147,121,255,171,148,121,255,170,147,120,255,171,148,121,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,146,120,255,170,146,120,255,170,146,120,255,170,146,120,255,169,146,119,255,168,145,118,255,169,145,118,255,168,145,118,255, -168,144,117,255,167,144,117,255,167,143,116,255,165,142,115,255,166,142,116,255,166,142,116,255,164,142,114,255,165,141,115,255, -165,140,115,255,165,141,115,255,165,141,115,255,164,140,114,255,165,141,115,255,164,140,114,255,164,140,114,255,163,139,113,255, -163,139,113,255,164,140,113,255,152,131,110,255, 67, 60, 57,255, 61, 61, 62,255, 60, 60, 60,255,138,129,114,255,211,192,163,255, -208,190,161,255,208,190,161,255,208,190,160,255,208,190,160,255,207,189,159,255,207,189,159,255,207,189,159,255,207,188,158,255, -207,188,158,255,208,189,158,255,193,173,143,255,177,155,126,255,180,158,127,255,180,158,128,255,181,159,129,255,180,158,128,255, -181,159,129,255,182,160,130,255,181,159,129,255,181,159,129,255,182,160,130,255,180,158,128,255,181,159,129,255,181,159,129,255, -181,159,129,255,180,158,129,255,180,158,129,255,179,157,128,255,179,157,128,255,178,156,127,255,179,156,127,255,178,155,126,255, -177,155,125,255,176,154,124,255,177,154,125,255,176,153,124,255,176,153,123,255,175,152,124,255,174,152,124,255,173,151,123,255, -174,150,123,255,172,150,123,255,173,149,122,255,172,149,122,255,171,149,121,255,172,148,122,255,172,149,120,255,171,148,121,255, -170,147,121,255,171,148,121,255,170,147,120,255,171,148,121,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,169,146,119,255,169,146,119,255,168,145,118,255,168,146,119,255,168,145,118,255,167,145,118,255, -168,144,117,255,166,143,116,255,166,143,116,255,166,142,115,255,165,142,115,255,166,141,116,255,164,142,114,255,165,141,115,255, -165,140,115,255,165,141,115,255,164,140,114,255,165,141,115,255,164,140,114,255,164,140,114,255,163,139,113,255,164,140,114,255, -164,140,114,255,164,139,113,255,155,134,111,255, 70, 63, 59,255, 61, 61, 61,255, 60, 60, 60,255,138,130,115,255,211,194,166,255, -210,192,164,255,209,192,163,255,209,192,163,255,209,192,163,255,209,191,162,255,209,191,162,255,209,191,161,255,208,190,161,255, -208,190,160,255,204,186,156,255,182,160,131,255,179,157,128,255,180,158,128,255,181,159,129,255,181,159,129,255,182,160,130,255, -182,160,130,255,182,160,129,255,182,160,130,255,182,160,129,255,181,159,128,255,181,159,129,255,181,159,129,255,180,158,129,255, -181,159,128,255,180,158,129,255,179,157,128,255,180,158,127,255,179,157,127,255,179,156,127,255,178,155,126,255,178,155,126,255, -177,154,125,255,177,153,124,255,176,153,125,255,176,152,123,255,175,152,124,255,175,151,123,255,174,151,123,255,173,150,122,255, -173,151,123,255,172,149,122,255,173,150,121,255,172,149,121,255,172,148,122,255,172,149,121,255,171,148,121,255,170,147,121,255, -171,148,121,255,171,148,121,255,171,148,121,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,169,146,119,255,168,145,118,255,169,146,119,255,168,145,118,255,167,144,117,255,167,144,117,255, -166,144,117,255,167,143,116,255,166,142,115,255,165,142,116,255,165,141,115,255,165,142,115,255,165,141,115,255,165,140,115,255, -165,141,115,255,165,141,115,255,165,141,115,255,164,140,114,255,164,140,114,255,163,139,114,255,164,140,114,255,164,140,114,255, -163,139,114,255,163,139,113,255,156,134,112,255, 72, 64, 61,255, 61, 61, 61,255, 60, 60, 60,255,139,130,116,255,212,195,167,255, -211,194,165,255,210,193,165,255,210,192,165,255,210,193,164,255,210,192,164,255,209,192,164,255,209,192,163,255,209,192,163,255, -210,192,163,255,193,173,144,255,178,156,127,255,180,158,128,255,181,159,129,255,181,159,129,255,182,160,130,255,181,159,129,255, -182,160,130,255,182,160,130,255,182,160,129,255,181,159,129,255,182,160,129,255,182,160,129,255,182,160,129,255,180,158,128,255, -181,159,129,255,180,158,128,255,180,157,127,255,179,157,127,255,179,157,127,255,178,156,126,255,178,155,125,255,177,155,125,255, -176,154,124,255,176,153,125,255,176,152,125,255,175,152,123,255,174,151,123,255,174,152,124,255,173,151,123,255,174,150,122,255, -172,151,123,255,173,149,121,255,172,150,122,255,172,148,122,255,171,149,121,255,172,149,120,255,170,147,121,255,171,148,121,255, -170,147,120,255,171,148,121,255,170,147,120,255,169,146,119,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -169,146,119,255,170,147,120,255,169,146,119,255,169,146,119,255,169,146,119,255,167,144,117,255,167,144,117,255,167,143,116,255, -167,143,116,255,166,142,115,255,165,143,116,255,165,141,115,255,165,142,115,255,164,142,114,255,165,140,115,255,165,141,115,255, -165,141,115,255,164,140,114,255,164,140,114,255,163,139,113,255,163,139,114,255,164,140,114,255,163,139,113,255,163,139,114,255, -163,139,114,255,163,139,114,255,154,132,109,255, 70, 63, 59,255, 61, 61, 61,255, 60, 60, 60,255,139,131,117,255,213,197,169,255, -211,194,167,255,211,194,167,255,211,194,167,255,210,193,166,255,210,193,166,255,210,193,166,255,210,193,165,255,211,194,166,255, -207,190,161,255,179,157,127,255,180,158,128,255,181,159,129,255,181,159,129,255,181,159,130,255,181,159,129,255,181,159,130,255, -181,159,130,255,182,160,130,255,182,160,129,255,182,160,128,255,181,159,129,255,182,160,129,255,181,159,129,255,181,159,129,255, -180,158,128,255,179,157,127,255,179,157,127,255,178,156,126,255,179,157,127,255,177,155,125,255,177,155,126,255,176,154,125,255, -176,154,125,255,175,153,124,255,176,153,125,255,175,152,123,255,174,152,124,255,173,151,123,255,174,150,122,255,173,151,123,255, -173,150,122,255,173,150,121,255,172,149,121,255,171,149,122,255,172,149,120,255,171,148,121,255,170,147,121,255,170,147,120,255, -171,148,121,255,170,147,120,255,169,146,119,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,169,146,119,255,169,146,119,255,168,146,119,255,169,145,118,255,168,145,118,255,167,144,117,255,167,144,117,255, -166,143,116,255,165,143,115,255,166,142,116,255,166,142,116,255,164,142,114,255,164,141,114,255,165,140,115,255,165,141,115,255, -164,140,114,255,165,141,115,255,163,139,113,255,164,140,114,255,164,140,114,255,163,139,113,255,162,138,114,255,163,139,113,255, -163,139,113,255,163,139,113,255,154,131,109,255, 70, 63, 59,255, 61, 61, 61,255, 60, 60, 60,255,140,131,118,255,214,197,171,255, -212,196,169,255,212,196,169,255,212,196,169,255,212,196,168,255,212,195,168,255,212,195,168,255,212,195,168,255,213,196,169,255, -189,168,139,255,179,156,127,255,181,159,129,255,181,159,129,255,182,160,130,255,183,161,129,255,183,161,130,255,183,161,130,255, -183,161,130,255,182,160,129,255,181,159,130,255,182,160,130,255,182,160,129,255,181,159,128,255,180,158,128,255,180,158,128,255, -179,157,127,255,179,157,127,255,178,156,126,255,178,156,126,255,178,156,126,255,177,155,126,255,176,154,126,255,176,154,125,255, -175,153,125,255,175,153,124,255,174,152,123,255,174,152,124,255,173,151,123,255,174,150,122,255,173,151,123,255,172,150,122,255, -172,149,121,255,172,149,122,255,171,148,121,255,172,149,120,255,171,148,121,255,171,148,121,255,170,147,120,255,171,148,121,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,169,146,119,255,168,145,118,255,169,146,119,255,168,145,118,255,168,145,118,255,166,143,116,255,166,143,116,255, -166,143,115,255,166,142,116,255,165,141,115,255,164,142,114,255,165,141,115,255,165,140,115,255,164,140,114,255,165,141,115,255, -164,140,114,255,163,139,113,255,164,140,114,255,164,140,113,255,163,139,114,255,162,138,113,255,162,138,113,255,161,137,113,255, -162,138,113,255,162,138,113,255,150,128,107,255, 68, 60, 57,255, 61, 61, 62,255, 60, 60, 60,255,140,132,118,255,214,198,172,255, -212,197,171,255,213,197,171,255,213,197,171,255,212,197,171,255,212,196,170,255,212,196,170,255,213,197,170,255,204,187,160,255, -180,158,128,255,180,158,129,255,181,159,129,255,182,160,130,255,183,161,129,255,182,160,129,255,183,161,129,255,183,161,129,255, -182,160,129,255,183,161,130,255,181,159,130,255,181,159,129,255,182,160,130,255,181,159,128,255,181,159,129,255,180,158,128,255, -180,158,128,255,179,157,127,255,179,157,127,255,178,156,126,255,178,156,125,255,177,154,125,255,177,154,126,255,176,154,125,255, -175,152,124,255,175,152,124,255,175,152,124,255,174,151,123,255,174,150,122,255,173,151,123,255,172,150,122,255,172,149,121,255, -173,150,122,255,172,149,121,255,171,148,121,255,171,148,120,255,171,148,121,255,170,147,121,255,171,148,121,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -169,146,119,255,169,146,119,255,168,145,118,255,169,145,118,255,168,145,118,255,168,144,117,255,166,143,116,255,166,143,116,255, -165,143,115,255,165,141,115,255,165,141,115,255,164,141,114,255,165,140,115,255,164,140,114,255,165,141,115,255,164,140,114,255, -164,140,114,255,164,140,114,255,164,140,113,255,163,139,114,255,162,138,113,255,162,138,112,255,162,138,113,255,162,138,113,255, -161,137,113,255,163,138,113,255,143,123,104,255, 66, 58, 55,255, 61, 61, 62,255, 60, 60, 60,255,140,133,119,255,215,199,173,255, -213,197,172,255,213,197,172,255,212,197,171,255,213,197,172,255,213,197,172,255,213,197,172,255,213,197,172,255,191,171,142,255, -180,158,128,255,181,159,130,255,182,160,129,255,183,161,129,255,182,160,131,255,183,161,130,255,183,161,130,255,183,161,130,255, -183,161,130,255,182,160,130,255,181,159,130,255,182,160,130,255,181,159,129,255,181,159,129,255,180,158,128,255,180,158,128,255, -179,157,127,255,179,157,126,255,178,156,126,255,178,156,125,255,177,155,125,255,177,154,126,255,176,154,125,255,175,153,124,255, -175,152,124,255,175,152,124,255,174,151,123,255,174,150,122,255,173,151,123,255,172,150,122,255,173,149,121,255,173,150,122,255, -172,149,121,255,171,148,121,255,171,148,120,255,172,149,121,255,170,147,121,255,170,147,120,255,171,148,121,255,169,147,119,255, -169,146,119,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -169,146,119,255,168,145,118,255,169,146,119,255,168,145,118,255,168,145,118,255,167,144,117,255,166,143,116,255,165,143,115,255, -166,142,116,255,164,142,114,255,164,141,114,255,165,140,115,255,164,140,114,255,165,141,115,255,164,140,114,255,164,140,114,255, -163,139,113,255,164,140,113,255,163,139,114,255,163,139,113,255,162,138,112,255,161,137,113,255,162,138,112,255,162,138,112,255, -161,137,112,255,164,140,113,255,128,110, 94,255, 66, 59, 54,255, 61, 61, 62,255, 60, 60, 60,255,141,133,120,255,215,200,175,255, -214,199,174,255,214,199,173,255,214,199,173,255,214,199,173,255,214,199,173,255,214,199,174,255,209,193,168,255,182,161,131,255, -181,159,129,255,182,160,130,255,183,161,130,255,182,160,131,255,183,161,130,255,183,161,131,255,183,161,131,255,183,161,131,255, -182,160,130,255,181,159,129,255,182,160,130,255,181,159,129,255,180,158,128,255,180,158,128,255,180,158,128,255,179,157,127,255, -178,156,126,255,178,156,127,255,177,155,126,255,177,155,125,255,176,155,126,255,176,154,125,255,175,153,124,255,175,153,124,255, -174,151,123,255,174,151,123,255,173,150,122,255,174,151,123,255,173,150,122,255,172,149,121,255,173,150,122,255,172,149,121,255, -172,149,122,255,172,149,120,255,171,148,121,255,170,147,121,255,171,148,121,255,170,147,120,255,169,148,119,255,170,146,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -169,146,119,255,168,145,118,255,168,146,119,255,168,145,118,255,168,144,117,255,167,144,117,255,166,143,116,255,165,142,115,255, -165,142,115,255,164,141,114,255,165,140,115,255,164,140,114,255,164,140,114,255,164,140,114,255,164,140,114,255,164,140,114,255, -163,139,113,255,162,138,114,255,162,138,113,255,162,138,112,255,161,137,113,255,161,137,112,255,161,137,111,255,160,136,111,255, -160,136,111,255,165,141,114,255,109, 93, 82,255, 66, 60, 55,255, 61, 61, 62,255, 60, 60, 60,255,141,133,121,255,216,201,177,255, -214,200,176,255,214,199,175,255,214,199,175,255,214,199,175,255,215,200,175,255,215,201,177,255,199,181,154,255,179,157,127,255, -182,160,130,255,182,160,130,255,183,161,131,255,183,161,130,255,183,161,131,255,183,161,131,255,183,161,131,255,183,161,131,255, -182,160,130,255,182,160,130,255,182,160,130,255,181,159,129,255,180,158,128,255,180,158,128,255,180,158,128,255,178,156,127,255, -178,156,126,255,178,156,126,255,178,155,126,255,177,154,125,255,177,154,126,255,175,153,124,255,175,153,124,255,174,152,123,255, -174,151,123,255,174,151,123,255,174,151,123,255,173,150,122,255,172,149,121,255,172,149,122,255,172,149,121,255,172,149,122,255, -171,148,121,255,171,148,120,255,171,148,121,255,170,147,120,255,170,147,120,255,170,148,120,255,170,147,120,255,170,146,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255, -168,145,118,255,169,146,119,255,169,146,119,255,168,144,117,255,168,144,117,255,167,144,117,255,166,142,115,255,166,142,116,255, -164,142,114,255,165,140,115,255,164,140,114,255,165,141,115,255,164,140,114,255,163,139,113,255,164,140,114,255,163,139,113,255, -163,139,114,255,163,139,113,255,162,138,112,255,162,138,113,255,161,137,112,255,161,137,111,255,161,137,111,255,161,137,111,255, -160,136,111,255,165,140,116,255, 85, 71, 64,255, 52, 47, 45,255, 61, 62, 62,255, 60, 60, 60,255,141,134,122,255,217,203,178,255, -215,201,177,255,215,200,176,255,215,200,176,255,215,200,176,255,215,201,177,255,217,203,179,255,183,162,133,255,181,159,129,255, -181,159,129,255,183,161,131,255,182,160,130,255,183,161,131,255,183,161,131,255,183,161,131,255,182,161,130,255,183,161,131,255, -182,161,130,255,182,159,130,255,181,160,129,255,180,159,128,255,180,158,128,255,179,157,127,255,179,157,128,255,179,157,126,255, -178,156,126,255,178,156,127,255,176,154,125,255,177,155,126,255,176,154,125,255,176,153,125,255,175,152,124,255,175,152,124,255, -173,150,122,255,174,151,123,255,173,150,122,255,172,149,121,255,172,149,122,255,173,150,122,255,171,148,122,255,171,148,121,255, -172,149,120,255,170,147,121,255,170,147,120,255,171,148,121,255,169,148,119,255,169,147,119,255,170,146,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255,169,146,119,255, -168,145,118,255,169,145,118,255,169,146,119,255,167,144,117,255,167,144,117,255,167,143,116,255,165,142,116,255,165,142,115,255, -165,141,115,255,164,140,114,255,165,141,115,255,164,140,114,255,163,139,113,255,163,139,114,255,164,140,114,255,162,138,114,255, -163,139,113,255,162,138,112,255,162,138,112,255,161,137,112,255,160,136,111,255,160,136,110,255,160,136,110,255,160,136,110,255, -161,136,111,255,157,136,115,255, 65, 52, 45,255, 28, 28, 28,255, 62, 62, 62,255, 60, 60, 60,255,142,134,122,255,217,203,180,255, -216,202,179,255,216,202,178,255,216,202,178,255,216,202,178,255,217,203,180,255,207,192,168,255,177,155,124,255,181,159,129,255, -181,159,129,255,183,161,131,255,183,161,131,255,183,161,131,255,183,161,131,255,183,161,131,255,183,161,131,255,182,160,130,255, -181,161,129,255,181,159,129,255,181,159,129,255,181,159,128,255,179,158,128,255,179,157,127,255,179,157,128,255,178,156,126,255, -177,155,127,255,177,155,126,255,177,154,126,255,176,154,125,255,176,153,125,255,175,152,124,255,174,152,123,255,174,151,123,255, -174,151,123,255,173,150,122,255,173,150,122,255,173,150,122,255,172,149,121,255,171,148,122,255,172,149,121,255,171,148,120,255, -170,147,121,255,171,148,121,255,170,148,120,255,169,147,119,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,168,145,118,255, -169,145,118,255,169,146,119,255,168,145,118,255,167,144,117,255,167,144,117,255,166,143,116,255,165,142,116,255,165,141,115,255, -164,141,114,255,164,140,114,255,164,140,114,255,163,139,113,255,163,139,113,255,163,139,114,255,162,138,113,255,162,138,112,255, -162,138,113,255,162,138,112,255,161,137,111,255,161,137,111,255,160,136,110,255,159,135,110,255,160,136,110,255,159,136,111,255, -162,137,112,255,129,111, 97,255, 29, 23, 19,255, 27, 28, 28,255, 61, 61, 61,255, 60, 60, 60,255,142,135,123,255,219,204,181,255, -217,203,180,255,216,203,180,255,216,202,180,255,216,203,180,255,219,206,184,255,190,172,144,255,180,158,127,255,181,159,129,255, -181,159,129,255,183,161,131,255,182,160,130,255,183,161,131,255,183,161,131,255,182,161,130,255,183,161,131,255,182,161,130,255, -181,160,129,255,182,159,130,255,180,159,128,255,180,159,129,255,179,157,128,255,179,157,127,255,179,157,128,255,177,155,126,255, -177,155,126,255,177,155,126,255,177,154,126,255,176,154,125,255,175,153,124,255,174,152,123,255,174,151,123,255,174,151,123,255, -173,150,122,255,173,150,122,255,172,149,121,255,172,149,121,255,172,149,122,255,171,148,121,255,171,148,120,255,171,148,121,255, -170,147,120,255,170,147,120,255,170,148,120,255,169,148,119,255,170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,169,146,119,255,168,145,118,255, -168,146,119,255,169,145,118,255,168,145,118,255,167,144,117,255,167,143,116,255,166,143,116,255,165,142,115,255,165,141,115,255, -164,140,114,255,164,140,114,255,163,139,113,255,164,140,114,255,163,139,114,255,162,138,113,255,163,139,112,255,162,138,113,255, -162,138,112,255,161,137,112,255,160,136,111,255,160,136,111,255,159,135,110,255,159,135,109,255,159,135,109,255,160,135,111,255, -164,140,115,255, 94, 80, 71,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 60, 60, 60,255,143,136,124,255,219,206,183,255, -217,204,182,255,217,204,182,255,217,203,181,255,218,204,182,255,216,204,181,255,181,159,130,255,181,159,129,255,182,160,130,255, -181,159,129,255,182,160,130,255,183,161,131,255,183,161,131,255,183,161,131,255,183,161,131,255,182,160,130,255,181,161,129,255, -182,160,130,255,181,159,129,255,181,158,128,255,180,158,129,255,179,157,127,255,178,156,128,255,178,156,127,255,177,155,126,255, -176,154,125,255,177,155,126,255,175,153,124,255,176,153,125,255,175,153,124,255,174,151,123,255,173,150,122,255,173,150,122,255, -173,150,122,255,172,149,121,255,173,150,122,255,171,148,122,255,171,148,121,255,172,149,120,255,170,147,121,255,170,147,120,255, -171,148,121,255,169,148,119,255,169,147,119,255,170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,169,146,119,255,168,145,118,255,169,146,119,255, -169,145,118,255,168,145,118,255,167,144,117,255,167,144,117,255,166,143,116,255,165,143,115,255,165,141,115,255,164,140,114,255, -165,141,115,255,163,139,113,255,164,140,113,255,163,139,113,255,162,138,113,255,163,139,112,255,162,138,113,255,162,138,112,255, -161,137,112,255,160,136,111,255,159,135,111,255,160,136,110,255,158,134,109,255,158,135,110,255,158,135,109,255,158,134,110,255, -151,129,108,255, 40, 34, 31,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,143,136,126,255,219,206,185,255, -218,205,184,255,218,205,183,255,218,205,183,255,218,206,184,255,208,194,170,255,180,158,128,255,181,159,129,255,182,160,130,255, -181,159,129,255,181,160,129,255,181,161,129,255,182,160,130,255,182,161,130,255,181,160,129,255,182,161,130,255,182,160,130,255, -181,160,129,255,180,159,129,255,180,158,128,255,180,158,129,255,178,156,127,255,178,156,127,255,178,156,127,255,177,155,126,255, -177,155,126,255,176,154,125,255,176,153,125,255,175,152,124,255,174,152,123,255,174,151,123,255,173,150,122,255,173,150,122,255, -172,149,121,255,172,149,122,255,171,148,122,255,172,149,121,255,171,148,120,255,170,147,121,255,171,148,121,255,170,148,120,255, -169,148,119,255,170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255,169,146,119,255,168,145,118,255,169,146,119,255,168,146,119,255, -169,145,118,255,168,144,117,255,168,144,117,255,166,143,116,255,166,143,115,255,165,141,115,255,164,141,114,255,165,141,115,255, -163,139,113,255,164,140,114,255,163,139,114,255,162,138,113,255,162,138,112,255,162,138,113,255,162,138,112,255,161,137,111,255, -160,136,111,255,159,135,110,255,159,135,109,255,158,134,109,255,158,134,110,255,158,134,110,255,158,133,110,255,159,135,110,255, -121,104, 88,255, 7, 6, 6,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,143,137,126,255,220,207,186,255, -219,206,184,255,219,205,184,255,219,206,184,255,219,207,185,255,200,183,159,255,180,158,128,255,181,159,129,255,181,159,129,255, -182,160,130,255,182,160,130,255,182,160,130,255,181,161,129,255,181,161,129,255,182,161,130,255,182,160,130,255,181,160,129,255, -181,159,129,255,181,158,128,255,179,158,129,255,179,157,128,255,179,157,128,255,178,156,127,255,177,155,126,255,176,154,125,255, -176,154,125,255,176,154,125,255,176,153,125,255,175,152,124,255,175,152,124,255,173,151,122,255,174,151,123,255,173,150,122,255, -173,150,122,255,172,149,122,255,171,148,121,255,171,148,120,255,171,148,121,255,170,147,120,255,170,148,120,255,170,147,120,255, -169,147,119,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,168,145,118,255,169,146,119,255,169,146,119,255,169,145,118,255, -168,144,117,255,168,144,117,255,167,144,117,255,166,143,116,255,166,142,116,255,165,142,115,255,165,140,115,255,164,140,114,255, -164,140,114,255,163,139,114,255,163,139,113,255,163,139,112,255,162,138,113,255,162,138,112,255,161,137,112,255,160,136,111,255, -160,136,110,255,159,135,109,255,159,134,109,255,158,134,110,255,157,134,110,255,157,133,109,255,158,133,109,255,157,133,109,255, - 67, 59, 51,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,137,126,255,221,208,188,255, -218,207,185,255,218,206,185,255,219,205,184,255,219,207,185,255,194,175,149,255,179,157,127,255,181,159,129,255,180,158,128,255, -181,159,129,255,182,159,130,255,182,160,130,255,182,160,130,255,182,160,129,255,181,160,130,255,181,160,129,255,180,159,128,255, -181,158,128,255,179,158,129,255,180,157,128,255,179,157,128,255,177,155,126,255,178,156,127,255,177,155,126,255,176,154,125,255, -175,153,124,255,176,154,125,255,174,152,123,255,175,151,124,255,174,152,123,255,174,150,123,255,173,150,122,255,172,149,121,255, -172,149,121,255,171,148,122,255,172,149,121,255,170,147,121,255,170,147,121,255,171,147,121,255,169,147,119,255,169,146,119,255, -170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,169,146,119,255,169,146,119,255,168,145,118,255,168,145,118,255,169,145,118,255,168,146,119,255,169,145,118,255, -167,144,117,255,167,144,117,255,167,143,116,255,165,143,116,255,165,142,115,255,164,141,114,255,164,140,114,255,163,139,113,255, -164,140,113,255,162,138,113,255,163,139,112,255,162,138,112,255,162,138,112,255,161,137,112,255,160,136,111,255,159,135,110,255, -159,135,109,255,158,134,110,255,157,133,110,255,158,134,109,255,158,132,109,255,158,133,109,255,157,131,108,255,147,127,106,255, - 1, 1, 2,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,137,127,255,221,209,188,255, -220,207,187,255,219,207,186,255,219,207,186,255,217,205,184,255,189,169,142,255,179,157,127,255,181,159,129,255,180,158,128,255, -181,159,129,255,181,160,129,255,182,159,130,255,182,160,130,255,181,159,129,255,181,160,129,255,180,159,128,255,180,158,129,255, -180,158,128,255,180,157,129,255,179,157,128,255,178,156,127,255,178,156,127,255,177,155,126,255,177,155,126,255,176,154,125,255, -175,153,124,255,175,153,124,255,174,152,123,255,174,151,123,255,174,151,123,255,174,151,123,255,173,150,122,255,173,150,121,255, -172,149,122,255,172,148,121,255,171,148,120,255,170,147,120,255,171,148,121,255,170,147,120,255,169,146,119,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255, -170,147,120,255,169,146,119,255,168,145,118,255,169,146,119,255,169,146,119,255,169,145,118,255,168,145,118,255,167,145,118,255, -168,143,116,255,167,143,116,255,166,143,116,255,165,142,115,255,165,141,115,255,165,141,115,255,164,140,114,255,164,140,113,255, -162,138,114,255,162,138,113,255,162,138,113,255,162,138,112,255,161,137,111,255,160,136,111,255,159,135,110,255,159,135,109,255, -158,134,110,255,157,133,109,255,157,133,108,255,157,132,108,255,156,132,108,255,155,131,107,255,159,135,110,255, 52, 45, 40,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,138,127,255,222,209,189,255, -219,207,187,255,220,208,187,255,220,207,186,255,216,204,183,255,184,164,136,255,179,157,127,255,181,159,129,255,180,158,128,255, -180,158,128,255,181,159,129,255,181,160,129,255,181,160,129,255,181,159,129,255,180,159,128,255,181,158,129,255,180,158,128,255, -180,158,129,255,179,157,128,255,178,156,127,255,178,156,127,255,177,155,126,255,177,155,126,255,176,154,125,255,175,153,124,255, -175,153,124,255,175,153,124,255,175,152,124,255,174,152,123,255,173,151,122,255,173,150,122,255,173,150,122,255,173,150,121,255, -171,148,121,255,171,149,121,255,170,148,120,255,171,148,121,255,170,148,120,255,169,147,119,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -169,146,119,255,168,145,118,255,169,146,119,255,169,146,119,255,169,145,118,255,169,145,118,255,168,145,118,255,168,144,117,255, -167,143,116,255,166,143,116,255,165,143,115,255,165,141,115,255,164,141,114,255,165,141,115,255,163,139,113,255,163,139,114,255, -163,139,113,255,162,138,112,255,162,138,112,255,161,137,112,255,160,136,111,255,160,136,110,255,159,135,109,255,158,134,110,255, -158,134,109,255,157,133,109,255,157,132,108,255,156,132,108,255,155,131,107,255,158,133,108,255,113, 97, 81,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,138,128,255,222,210,190,255, -220,208,188,255,219,207,187,255,219,207,187,255,215,202,181,255,181,160,131,255,179,157,127,255,180,158,128,255,181,159,129,255, -181,159,129,255,180,158,128,255,181,158,129,255,180,158,129,255,180,158,129,255,181,159,129,255,179,158,129,255,180,157,129,255, -180,158,128,255,178,156,128,255,178,156,127,255,178,156,127,255,176,154,125,255,176,154,125,255,175,153,124,255,176,153,125,255, -175,152,124,255,174,153,123,255,174,151,123,255,173,151,122,255,174,150,123,255,173,150,122,255,172,149,121,255,173,150,121,255, -171,148,121,255,171,148,120,255,170,147,121,255,171,148,121,255,170,147,120,255,169,146,119,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255,169,146,119,255, -168,145,118,255,169,146,119,255,169,145,118,255,168,146,119,255,169,146,119,255,168,144,117,255,167,144,117,255,168,143,116,255, -166,143,116,255,166,143,115,255,166,142,116,255,164,141,114,255,165,141,115,255,164,140,114,255,163,139,114,255,163,139,113,255, -162,138,112,255,162,138,112,255,161,137,112,255,160,136,111,255,159,135,110,255,159,135,109,255,158,133,109,255,157,133,109,255, -157,133,109,255,156,131,107,255,155,132,107,255,155,131,107,255,156,131,108,255,150,127,106,255, 24, 21, 18,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,138,128,255,222,211,191,255, -221,209,189,255,221,209,188,255,221,209,188,255,213,200,179,255,178,156,127,255,179,157,127,255,179,157,127,255,180,158,128,255, -180,158,128,255,181,159,129,255,181,159,129,255,181,159,128,255,180,158,129,255,179,158,128,255,180,157,129,255,179,157,128,255, -179,157,128,255,178,156,127,255,177,155,126,255,177,155,126,255,177,155,126,255,176,154,125,255,176,153,125,255,175,152,124,255, -174,153,123,255,175,152,124,255,174,151,123,255,173,151,122,255,174,151,123,255,172,149,121,255,173,150,122,255,172,149,122,255, -172,149,121,255,171,148,120,255,170,147,121,255,170,148,120,255,170,147,120,255,169,146,119,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255,169,146,119,255,168,145,118,255, -169,146,119,255,169,146,119,255,169,146,119,255,169,145,118,255,168,145,118,255,167,144,117,255,167,143,116,255,167,143,116,255, -166,142,115,255,165,142,115,255,164,141,114,255,164,140,114,255,164,140,114,255,164,140,113,255,163,139,113,255,162,138,113,255, -162,138,112,255,161,137,111,255,160,136,111,255,159,135,111,255,159,135,110,255,158,134,109,255,157,133,108,255,156,132,108,255, -156,132,108,255,155,131,107,255,155,130,106,255,154,129,106,255,156,131,106,255, 91, 78, 64,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,145,139,129,255,222,211,192,255, -220,209,190,255,221,209,189,255,221,209,189,255,211,197,176,255,177,154,124,255,179,156,127,255,180,158,128,255,179,157,127,255, -179,157,127,255,180,158,128,255,180,158,128,255,180,158,129,255,179,158,129,255,180,158,129,255,180,158,128,255,179,157,128,255, -178,156,127,255,177,155,126,255,177,155,126,255,177,155,126,255,176,154,125,255,175,154,124,255,175,153,124,255,174,153,123,255, -174,152,123,255,175,152,124,255,173,151,122,255,173,150,122,255,174,151,123,255,172,149,121,255,173,150,122,255,172,149,122,255, -171,149,120,255,171,148,121,255,170,147,121,255,170,148,120,255,169,147,119,255,170,146,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,169,146,119,255,169,146,119,255, -169,146,119,255,169,145,118,255,168,146,119,255,169,145,118,255,168,145,118,255,168,144,117,255,167,144,117,255,166,143,116,255, -165,142,116,255,165,141,115,255,164,140,114,255,164,140,114,255,164,140,113,255,163,139,114,255,162,138,113,255,162,138,112,255, -161,137,111,255,160,136,111,255,160,136,111,255,159,135,110,255,158,133,109,255,157,133,109,255,157,132,108,255,156,131,107,255, -156,131,107,255,155,131,106,255,155,130,107,255,153,128,106,255,149,126,103,255, 10, 9, 8,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,145,139,130,255,223,212,193,255, -221,210,190,255,220,209,191,255,221,210,191,255,208,193,170,255,176,153,123,255,178,156,126,255,180,158,128,255,180,158,128,255, -180,158,127,255,180,158,127,255,180,158,128,255,180,158,129,255,180,158,128,255,179,157,127,255,178,156,128,255,178,156,127,255, -177,155,126,255,177,155,126,255,176,154,125,255,176,154,125,255,176,154,125,255,176,153,125,255,175,152,124,255,175,152,124,255, -175,151,124,255,174,152,123,255,174,150,123,255,174,151,123,255,173,150,122,255,173,150,122,255,172,150,122,255,171,149,122,255, -171,149,120,255,170,148,121,255,171,147,121,255,170,148,120,255,169,147,119,255,170,146,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,169,146,119,255,170,147,120,255,169,146,119,255,169,146,119,255,168,145,118,255,169,146,119,255,169,145,118,255, -169,146,119,255,168,146,119,255,169,144,117,255,168,145,118,255,167,144,117,255,167,144,117,255,166,143,116,255,166,143,115,255, -165,141,115,255,164,141,114,255,165,141,115,255,163,139,113,255,163,139,114,255,163,139,113,255,161,137,113,255,161,137,112,255, -160,136,111,255,159,135,110,255,159,135,110,255,158,133,109,255,157,132,108,255,157,132,108,255,155,131,107,255,155,130,106,255, -154,130,107,255,154,128,106,255,154,129,106,255,157,132,108,255, 53, 46, 39,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,145,139,130,255,223,212,194,255, -221,210,192,255,221,210,191,255,222,211,192,255,204,189,166,255,176,152,123,255,178,156,126,255,179,157,127,255,179,157,127,255, -179,157,128,255,179,157,128,255,179,157,127,255,179,157,128,255,179,157,127,255,179,157,128,255,178,156,127,255,177,155,126,255, -177,155,126,255,176,154,125,255,176,154,125,255,176,154,125,255,176,153,125,255,175,152,124,255,174,153,123,255,175,152,124,255, -174,152,123,255,173,151,122,255,174,150,123,255,173,150,122,255,173,150,122,255,173,150,122,255,172,149,122,255,171,148,121,255, -171,149,121,255,170,148,121,255,171,147,121,255,170,148,120,255,169,147,119,255,170,146,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,169,146,119,255,169,146,119,255,168,145,118,255,169,146,119,255,169,146,119,255,169,146,119,255, -168,145,118,255,169,145,118,255,168,145,118,255,167,144,117,255,167,144,117,255,166,143,116,255,166,143,115,255,166,142,116,255, -164,141,114,255,164,140,114,255,163,139,113,255,163,139,113,255,162,138,113,255,162,138,113,255,161,137,112,255,160,136,111,255, -159,135,110,255,159,135,110,255,158,133,109,255,157,132,108,255,156,132,108,255,155,131,107,255,155,130,106,255,154,130,107,255, -155,130,106,255,153,128,105,255,154,129,106,255,107, 91, 76,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,145,140,131,255,224,214,195,255, -222,211,193,255,221,210,192,255,223,212,194,255,201,185,161,255,175,153,123,255,179,157,127,255,178,156,126,255,178,156,127,255, -178,156,128,255,179,157,128,255,178,156,128,255,178,156,127,255,179,157,128,255,178,156,127,255,177,155,126,255,177,155,126,255, -177,155,126,255,176,154,125,255,176,154,125,255,176,154,125,255,175,153,124,255,174,153,123,255,174,152,123,255,175,151,124,255, -174,151,123,255,173,150,122,255,174,151,123,255,173,150,122,255,172,149,121,255,172,150,121,255,172,149,122,255,172,148,121,255, -171,149,121,255,170,148,121,255,171,147,121,255,170,148,120,255,169,147,119,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255, -170,147,120,255,170,147,120,255,169,146,119,255,168,145,118,255,169,146,119,255,169,146,119,255,169,145,118,255,168,146,119,255, -169,145,118,255,168,145,118,255,167,144,117,255,167,144,117,255,167,143,116,255,166,142,115,255,166,142,116,255,165,142,115,255, -165,140,115,255,164,140,114,255,164,140,113,255,162,138,113,255,162,138,113,255,161,137,112,255,160,136,111,255,160,135,111,255, -159,135,110,255,158,133,109,255,157,132,108,255,156,132,108,255,155,131,107,255,155,130,106,255,154,129,107,255,154,129,106,255, -154,129,106,255,154,129,106,255,136,115, 95,255, 20, 17, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,146,141,131,255,224,214,196,255, -222,212,193,255,223,211,193,255,223,213,196,255,199,182,157,255,176,153,123,255,177,155,125,255,179,157,127,255,179,157,127,255, -179,157,128,255,179,157,128,255,178,156,128,255,179,157,127,255,178,156,127,255,177,155,126,255,177,155,126,255,176,154,125,255, -177,155,126,255,176,154,125,255,175,153,124,255,176,153,125,255,174,153,123,255,175,153,124,255,175,152,124,255,173,152,122,255, -174,151,123,255,173,150,122,255,173,150,122,255,172,149,121,255,173,150,122,255,172,149,122,255,171,148,121,255,172,149,120,255, -170,149,121,255,171,148,121,255,171,147,121,255,170,148,120,255,169,148,119,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -169,146,119,255,168,145,118,255,169,146,119,255,169,146,119,255,169,145,118,255,168,146,119,255,169,146,119,255,168,144,117,255, -168,145,118,255,167,144,117,255,167,144,117,255,166,144,117,255,167,143,116,255,165,142,116,255,165,141,115,255,164,141,114,255, -164,140,114,255,163,139,113,255,163,139,113,255,161,138,112,255,161,137,112,255,160,136,111,255,159,135,111,255,159,134,110,255, -158,133,109,255,157,132,108,255,156,131,107,255,155,130,106,255,154,129,106,255,154,129,107,255,154,129,105,255,152,127,106,255, -154,129,106,255,152,127,104,255, 65, 55, 46,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,146,141,132,255,225,215,197,255, -223,213,195,255,223,213,194,255,224,215,197,255,197,180,155,255,175,152,122,255,178,155,127,255,178,156,126,255,178,156,127,255, -179,157,128,255,179,157,127,255,179,157,127,255,178,156,126,255,177,155,126,255,178,156,127,255,177,155,126,255,176,154,125,255, -176,154,125,255,175,153,124,255,176,153,125,255,175,153,124,255,175,152,124,255,175,152,124,255,174,152,123,255,174,151,123,255, -173,150,122,255,174,151,123,255,173,150,122,255,172,149,121,255,173,150,122,255,171,149,121,255,172,148,121,255,171,149,120,255, -170,148,121,255,171,147,121,255,171,148,121,255,170,148,120,255,169,148,119,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,169,146,119,255, -168,145,118,255,169,146,119,255,169,146,119,255,169,146,119,255,168,146,119,255,169,145,118,255,168,145,118,255,167,145,118,255, -168,144,117,255,167,143,116,255,166,144,117,255,166,143,116,255,166,142,116,255,165,141,115,255,164,141,114,255,164,140,114,255, -163,139,113,255,163,139,113,255,162,138,113,255,161,137,112,255,160,136,111,255,160,135,111,255,159,134,110,255,158,134,109,255, -157,132,108,255,156,131,107,255,155,130,107,255,154,129,107,255,154,129,106,255,154,129,105,255,153,128,106,255,152,127,106,255, -155,130,107,255, 96, 81, 67,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,146,141,132,255,225,216,198,255, -223,213,196,255,223,213,196,255,224,215,198,255,197,179,153,255,175,152,123,255,177,155,126,255,177,155,127,255,177,155,126,255, -178,156,127,255,178,156,127,255,178,156,126,255,177,155,126,255,177,156,127,255,178,155,126,255,176,154,125,255,177,155,126,255, -176,154,125,255,176,154,125,255,175,153,124,255,175,152,124,255,175,153,124,255,174,151,123,255,174,151,123,255,173,150,122,255, -174,151,123,255,173,150,122,255,172,149,121,255,173,149,122,255,172,150,121,255,171,148,121,255,172,149,120,255,171,148,121,255, -171,148,121,255,171,147,121,255,170,148,120,255,170,148,120,255,169,148,119,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255,168,145,118,255, -169,146,119,255,169,146,119,255,169,146,119,255,169,145,118,255,169,146,119,255,168,145,118,255,167,145,118,255,168,144,117,255, -167,143,116,255,166,144,117,255,166,143,116,255,166,143,115,255,166,142,116,255,164,141,114,255,164,140,114,255,164,140,113,255, -163,139,113,255,162,138,113,255,161,137,112,255,160,136,111,255,160,135,111,255,159,135,110,255,158,134,109,255,157,132,108,255, -156,131,108,255,155,130,107,255,155,130,107,255,154,129,106,255,154,129,105,255,153,128,105,255,153,127,106,255,154,130,106,255, -111, 94, 77,255, 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,146,142,133,255,226,217,200,255, -224,215,197,255,224,215,196,255,224,216,199,255,197,180,154,255,175,152,123,255,177,155,126,255,177,155,126,255,178,156,127,255, -178,156,127,255,178,156,127,255,178,155,126,255,178,156,127,255,178,155,126,255,177,154,125,255,177,155,126,255,176,154,125,255, -175,153,124,255,175,153,124,255,175,153,124,255,174,153,123,255,174,151,123,255,173,152,122,255,174,151,123,255,174,151,123,255, -173,150,122,255,172,149,121,255,173,149,122,255,172,150,121,255,171,149,122,255,172,149,120,255,171,149,121,255,170,148,121,255, -171,147,121,255,170,148,120,255,171,148,121,255,169,147,119,255,170,148,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255,168,145,118,255,169,146,119,255, -169,146,119,255,169,145,118,255,168,146,119,255,169,146,119,255,168,144,117,255,167,145,118,255,168,144,117,255,167,144,117,255, -166,144,117,255,167,143,116,255,165,143,116,255,166,142,116,255,165,141,115,255,164,140,115,255,163,140,114,255,163,139,113,255, -161,138,112,255,161,137,112,255,160,136,111,255,159,135,111,255,159,134,110,255,158,133,109,255,157,132,108,255,156,131,107,255, -155,130,106,255,154,129,107,255,154,129,106,255,153,128,105,255,154,129,106,255,153,127,106,255,153,129,105,255,134,112, 92,255, - 18, 15, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,147,142,133,255,226,217,201,255, -224,216,199,255,225,215,199,255,225,217,200,255,198,181,156,255,174,152,122,255,177,155,126,255,178,156,127,255,178,156,127,255, -178,156,127,255,178,156,127,255,178,156,127,255,177,155,126,255,177,154,125,255,177,155,126,255,176,154,125,255,176,154,125,255, -175,153,124,255,175,153,124,255,174,152,123,255,174,153,123,255,175,151,124,255,173,151,122,255,174,150,123,255,173,150,122,255, -173,150,122,255,172,149,121,255,173,150,121,255,172,149,122,255,171,149,121,255,171,148,120,255,171,149,121,255,170,148,121,255, -171,148,121,255,171,148,121,255,170,148,120,255,169,148,119,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,168,145,118,255,169,146,119,255, -169,146,119,255,169,146,119,255,169,145,118,255,168,145,118,255,167,145,118,255,168,144,117,255,167,143,116,255,166,144,117,255, -166,143,116,255,166,143,115,255,166,142,116,255,165,141,115,255,164,141,115,255,163,140,114,255,163,139,113,255,162,138,113,255, -161,137,112,255,160,136,111,255,160,135,111,255,159,134,110,255,158,133,109,255,157,132,108,255,156,131,107,255,155,130,107,255, -155,130,106,255,154,129,106,255,153,128,105,255,154,129,106,255,152,127,105,255,154,129,105,255,150,126,103,255, 37, 31, 27,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,147,142,134,255,227,219,203,255, -225,216,200,255,224,216,199,255,225,217,201,255,201,185,161,255,174,152,122,255,176,154,125,255,178,156,127,255,178,155,126,255, -178,156,127,255,178,155,126,255,178,156,127,255,178,154,125,255,177,155,126,255,176,155,126,255,176,154,125,255,175,153,124,255, -176,154,125,255,175,153,124,255,174,152,123,255,175,152,124,255,174,151,123,255,173,151,122,255,173,150,122,255,173,150,122,255, -172,149,121,255,173,150,122,255,172,149,122,255,171,149,121,255,171,148,120,255,171,149,121,255,170,148,121,255,171,148,121,255, -170,148,120,255,171,148,121,255,170,148,120,255,170,148,120,255,170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,169,146,119,255,169,146,119,255, -169,145,118,255,168,146,119,255,169,145,118,255,168,145,118,255,168,144,117,255,168,143,116,255,167,144,117,255,167,143,116,255, -166,143,115,255,166,142,116,255,165,141,115,255,165,141,115,255,164,140,114,255,163,139,113,255,162,138,113,255,162,138,112,255, -161,137,111,255,160,135,111,255,159,134,110,255,158,133,109,255,157,132,108,255,156,131,108,255,155,130,107,255,154,130,106,255, -154,129,105,255,153,128,105,255,154,129,106,255,153,129,105,255,153,129,105,255,148,125,102,255, 32, 27, 22,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,147,143,135,255,228,219,203,255, -226,217,201,255,226,217,201,255,226,217,202,255,205,189,166,255,174,151,122,255,176,155,126,255,178,155,126,255,178,156,127,255, -178,155,126,255,178,156,127,255,177,155,126,255,178,154,125,255,176,155,126,255,176,154,125,255,177,155,126,255,175,153,124,255, -176,154,125,255,175,153,124,255,174,152,123,255,175,152,124,255,173,151,122,255,174,150,123,255,174,151,123,255,172,149,121,255, -173,150,122,255,172,150,122,255,171,149,121,255,172,148,121,255,171,148,120,255,170,149,121,255,171,148,121,255,171,147,121,255, -171,148,121,255,170,148,120,255,169,148,119,255,170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,169,146,119,255,168,145,118,255,169,146,119,255,169,145,118,255, -168,146,119,255,169,144,117,255,168,145,118,255,167,144,117,255,168,144,117,255,167,144,117,255,166,143,116,255,165,143,116,255, -166,142,116,255,165,141,115,255,165,140,115,255,164,140,114,255,163,139,113,255,162,138,112,255,161,137,112,255,161,137,111,255, -159,135,111,255,159,134,110,255,157,134,108,255,157,132,108,255,156,131,107,255,155,130,107,255,154,129,106,255,153,129,105,255, -154,128,106,255,153,129,105,255,152,127,105,255,153,129,105,255,152,128,104,255, 56, 48, 40,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,147,143,136,255,228,220,205,255, -226,218,203,255,226,218,202,255,226,218,203,255,209,195,174,255,174,152,122,255,176,155,126,255,178,155,126,255,177,155,126,255, -178,156,127,255,178,155,126,255,178,154,125,255,177,155,126,255,176,155,126,255,177,155,126,255,176,154,125,255,175,153,124,255, -176,154,125,255,175,153,124,255,174,152,123,255,175,152,124,255,173,151,122,255,173,150,122,255,174,151,123,255,172,149,121,255, -173,149,122,255,172,150,121,255,172,148,121,255,172,149,120,255,171,149,121,255,171,148,121,255,171,147,121,255,170,148,120,255, -170,148,120,255,170,147,120,255,169,148,119,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,169,146,119,255,170,147,120,255,170,147,120,255,169,146,119,255,168,145,118,255,169,145,118,255,168,146,119,255, -169,145,118,255,168,144,117,255,167,144,117,255,168,144,117,255,167,144,117,255,166,143,116,255,166,143,115,255,166,142,116,255, -165,141,115,255,165,141,114,255,164,140,115,255,163,139,114,255,162,138,113,255,161,137,112,255,161,137,111,255,160,135,111,255, -159,134,110,255,157,134,108,255,157,132,107,255,156,131,107,255,155,130,107,255,154,129,106,255,153,128,105,255,154,128,106,255, -153,129,105,255,151,127,104,255,152,127,104,255,153,129,105,255, 68, 57, 47,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,136,255,228,221,206,255, -227,218,203,255,227,218,203,255,227,219,203,255,215,203,183,255,176,154,125,255,176,154,125,255,177,154,125,255,178,155,126,255, -178,155,126,255,177,154,125,255,178,155,126,255,176,155,126,255,177,155,126,255,177,155,126,255,175,153,124,255,176,154,125,255, -176,154,125,255,175,153,124,255,174,152,123,255,175,152,124,255,173,151,122,255,174,150,123,255,173,150,122,255,172,149,121,255, -173,150,122,255,172,149,122,255,172,148,121,255,171,149,120,255,171,149,121,255,171,147,121,255,171,148,121,255,171,148,121,255, -170,147,120,255,169,148,119,255,170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255, -170,147,120,255,170,147,120,255,169,146,119,255,169,146,119,255,168,145,118,255,169,146,119,255,168,146,119,255,169,145,118,255, -168,144,117,255,167,145,118,255,168,144,117,255,167,144,117,255,167,143,116,255,166,143,115,255,166,142,116,255,165,141,115,255, -165,141,114,255,164,140,115,255,163,139,114,255,162,138,113,255,162,138,112,255,160,136,111,255,160,135,111,255,159,135,110,255, -157,133,108,255,157,132,107,255,156,131,108,255,155,130,107,255,154,129,106,255,153,128,105,255,153,128,105,255,153,129,105,255, -152,128,104,255,152,127,105,255,154,129,106,255, 54, 45, 37,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,136,255,229,221,207,255, -227,219,204,255,227,218,203,255,227,219,204,255,219,208,191,255,179,157,129,255,176,154,125,255,177,155,126,255,178,155,126,255, -178,155,126,255,178,155,126,255,177,155,126,255,176,155,126,255,177,155,126,255,176,155,126,255,177,153,124,255,175,154,125,255, -176,154,125,255,175,153,124,255,174,152,123,255,175,152,124,255,173,151,122,255,174,150,123,255,173,150,122,255,173,150,122,255, -172,150,122,255,171,149,122,255,172,149,120,255,171,149,121,255,170,148,121,255,171,147,121,255,170,148,120,255,171,148,121,255, -169,148,119,255,170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255, -170,147,120,255,169,146,119,255,168,145,118,255,169,146,119,255,169,145,118,255,168,146,119,255,169,145,118,255,168,144,117,255, -167,144,117,255,168,143,116,255,167,144,117,255,166,143,116,255,165,143,116,255,166,142,116,255,165,141,115,255,165,140,115,255, -164,140,115,255,163,139,114,255,162,138,113,255,162,138,112,255,161,137,111,255,160,136,110,255,159,135,110,255,158,133,109,255, -157,132,108,255,156,131,107,255,155,130,107,255,154,129,106,255,153,129,105,255,153,129,105,255,152,129,104,255,151,127,104,255, -153,128,105,255,150,127,104,255, 62, 53, 43,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,137,255,229,221,207,255, -228,220,205,255,227,219,204,255,227,219,204,255,223,214,197,255,184,164,137,255,176,154,125,255,177,154,125,255,178,155,126,255, -178,155,126,255,178,155,126,255,177,155,126,255,176,155,126,255,177,155,126,255,177,155,126,255,176,153,124,255,175,154,125,255, -176,154,125,255,175,153,124,255,174,152,123,255,175,153,124,255,174,151,123,255,173,150,122,255,173,150,122,255,172,149,121,255, -172,150,122,255,171,149,122,255,172,149,120,255,171,149,121,255,170,148,121,255,171,148,121,255,171,148,121,255,170,148,120,255, -169,148,119,255,170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255, -169,146,119,255,168,145,118,255,169,146,119,255,169,146,119,255,168,146,119,255,169,145,118,255,168,144,117,255,167,144,117,255, -168,144,117,255,167,144,117,255,166,143,116,255,166,143,116,255,166,142,116,255,165,141,115,255,165,141,114,255,164,140,115,255, -163,139,114,255,163,139,113,255,162,138,112,255,160,136,111,255,160,136,111,255,159,135,110,255,158,133,109,255,157,132,108,255, -156,131,107,255,155,130,107,255,154,130,106,255,153,129,105,255,153,129,105,255,152,128,104,255,151,127,104,255,153,129,105,255, -148,125,102,255, 50, 42, 35,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,229,222,208,255, -228,221,206,255,228,220,205,255,228,219,205,255,226,218,203,255,192,173,149,255,175,153,124,255,177,155,126,255,178,155,126,255, -178,155,126,255,178,155,126,255,178,155,126,255,177,155,126,255,177,155,126,255,177,155,126,255,176,153,124,255,175,154,125,255, -176,154,125,255,175,153,124,255,174,152,123,255,174,153,123,255,174,151,123,255,173,151,122,255,174,151,123,255,172,149,121,255, -173,150,122,255,172,149,122,255,172,149,120,255,171,149,121,255,170,148,121,255,171,147,121,255,171,148,121,255,170,148,120,255, -170,147,120,255,170,146,120,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255, -168,145,118,255,169,146,119,255,169,146,119,255,169,145,118,255,169,145,118,255,168,144,117,255,167,145,118,255,168,143,116,255, -167,144,117,255,167,143,116,255,165,143,115,255,166,142,116,255,165,141,115,255,165,141,114,255,164,140,115,255,163,139,114,255, -163,139,113,255,162,138,112,255,160,136,111,255,160,136,111,255,159,135,110,255,158,133,109,255,157,132,108,255,156,131,108,255, -155,130,107,255,154,130,106,255,153,129,105,255,153,129,105,255,152,128,104,255,153,127,105,255,153,128,105,255,139,116, 95,255, - 27, 23, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,230,223,209,255, -228,221,207,255,227,221,206,255,228,221,206,255,228,221,206,255,203,188,166,255,176,154,125,255,177,155,126,255,178,155,125,255, -178,154,126,255,178,154,126,255,178,155,126,255,177,155,126,255,176,155,126,255,177,155,126,255,177,153,124,255,176,154,125,255, -175,154,125,255,175,153,124,255,175,153,124,255,174,153,123,255,174,151,123,255,173,151,122,255,174,151,123,255,172,149,121,255, -173,149,122,255,172,150,122,255,171,148,120,255,170,149,121,255,171,149,121,255,171,148,121,255,171,147,121,255,170,148,120,255, -170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255,169,146,119,255, -168,145,118,255,169,145,118,255,168,146,119,255,169,145,118,255,168,144,117,255,167,144,117,255,167,143,116,255,166,144,117,255, -166,143,116,255,165,143,116,255,166,142,115,255,165,141,115,255,165,140,115,255,164,140,114,255,163,139,114,255,162,138,113,255, -161,137,112,255,160,137,111,255,159,135,110,255,159,134,110,255,158,133,109,255,157,132,108,255,156,131,107,255,155,130,107,255, -154,129,106,255,153,129,105,255,153,129,105,255,151,127,104,255,153,128,105,255,152,127,104,255,125,105, 86,255, 18, 15, 12,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,230,223,209,255, -228,221,207,255,227,220,207,255,228,221,206,255,228,221,206,255,218,208,190,255,176,154,125,255,177,154,125,255,178,154,126,255, -177,155,126,255,178,155,126,255,177,154,126,255,178,155,126,255,176,155,126,255,177,155,126,255,177,153,124,255,176,154,125,255, -175,154,125,255,176,154,125,255,175,153,124,255,174,153,123,255,174,151,123,255,173,151,122,255,174,151,123,255,172,149,121,255, -173,150,122,255,172,150,122,255,171,148,120,255,171,149,121,255,170,148,121,255,171,148,121,255,171,147,121,255,170,148,120,255, -170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,170,147,120,255,169,146,119,255,168,145,118,255, -169,146,119,255,168,146,119,255,169,145,118,255,168,144,117,255,167,144,117,255,167,144,117,255,167,144,117,255,166,143,116,255, -166,143,115,255,166,142,116,255,165,141,115,255,165,141,115,255,164,140,114,255,163,139,114,255,162,138,113,255,161,137,112,255, -161,137,111,255,160,135,111,255,159,134,110,255,157,134,109,255,157,132,108,255,156,131,107,255,155,130,107,255,154,130,106,255, -153,129,105,255,153,129,105,255,152,128,104,255,153,128,105,255,151,126,103,255, 91, 75, 62,255, 10, 8, 7,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,229,223,209,255, -227,221,207,255,228,220,206,255,228,221,206,255,228,221,206,255,229,223,209,255,185,165,140,255,175,153,124,255,177,154,126,255, -178,155,126,255,178,155,126,255,178,154,126,255,178,155,126,255,177,155,126,255,176,155,126,255,177,153,124,255,176,154,125,255, -175,154,125,255,176,154,125,255,175,153,124,255,174,153,123,255,174,151,123,255,173,151,122,255,174,150,123,255,173,150,122,255, -172,149,121,255,172,150,122,255,172,148,120,255,171,149,121,255,170,149,121,255,171,148,121,255,171,147,121,255,170,148,120,255, -170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,169,146,119,255,170,147,120,255,168,145,118,255,169,146,119,255, -169,145,118,255,169,145,118,255,168,144,117,255,167,145,118,255,167,143,116,255,167,144,117,255,166,143,116,255,166,143,115,255, -166,142,116,255,165,142,115,255,164,140,115,255,164,140,114,255,163,139,113,255,162,138,113,255,161,137,112,255,161,137,111,255, -160,135,111,255,159,134,110,255,157,133,109,255,157,132,108,255,156,131,108,255,155,129,107,255,154,130,106,255,153,129,105,255, -153,129,105,255,152,128,104,255,151,127,104,255,151,126,103,255, 61, 51, 42,255, 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,229,223,209,255, -228,221,207,255,228,220,206,255,227,220,207,255,228,220,206,255,229,223,209,255,211,201,182,255,173,150,121,255,177,154,125,255, -178,155,126,255,178,156,126,255,178,155,126,255,178,154,126,255,177,155,126,255,176,155,126,255,177,153,124,255,176,154,125,255, -175,154,125,255,176,154,125,255,175,153,124,255,174,152,123,255,175,153,124,255,174,151,123,255,173,151,122,255,173,150,122,255, -172,149,121,255,172,149,121,255,171,149,121,255,171,148,120,255,171,149,121,255,171,148,121,255,170,148,120,255,171,147,121,255, -169,147,119,255,170,146,120,255,170,147,120,255,170,147,120,255,170,147,120,255,168,145,118,255,169,146,119,255,168,145,118,255, -169,146,119,255,168,144,117,255,167,144,117,255,167,143,116,255,166,143,116,255,166,143,116,255,166,143,116,255,165,142,115,255, -165,141,115,255,164,140,115,255,163,139,114,255,163,139,113,255,162,138,112,255,161,137,112,255,160,136,111,255,159,135,110,255, -158,134,109,255,157,132,109,255,156,131,107,255,155,130,107,255,155,130,106,255,155,130,106,255,154,129,105,255,153,129,105,255, -153,128,104,255,153,128,105,255,137,115, 94,255, 38, 32, 27,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,229,222,209,255, -228,220,206,255,227,220,207,255,228,221,206,255,227,220,205,255,228,221,206,255,228,222,209,255,186,168,143,255,175,153,123,255, -177,155,126,255,178,156,126,255,178,155,126,255,178,154,126,255,177,155,126,255,176,155,126,255,177,153,124,255,176,154,125,255, -175,154,125,255,175,153,124,255,175,153,124,255,174,152,123,255,175,153,124,255,174,151,123,255,173,151,122,255,173,150,122,255, -172,149,121,255,173,150,122,255,171,149,121,255,172,149,121,255,171,148,120,255,171,149,121,255,171,148,121,255,171,147,121,255, -169,147,119,255,170,147,120,255,170,146,120,255,170,147,120,255,170,147,120,255,169,146,119,255,169,145,118,255,169,146,119,255, -168,145,118,255,167,144,117,255,167,144,117,255,166,144,117,255,166,143,116,255,165,143,115,255,166,142,116,255,165,141,115,255, -164,140,115,255,163,139,114,255,163,139,113,255,162,138,112,255,161,137,111,255,160,136,111,255,159,135,110,255,158,134,109,255, -158,132,108,255,156,131,108,255,155,130,107,255,155,130,107,255,155,130,106,255,154,129,105,255,152,127,105,255,152,127,104,255, -153,128,105,255,100, 84, 70,255, 14, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,229,222,209,255, -228,221,206,255,228,221,205,255,227,220,206,255,227,220,206,255,226,219,205,255,228,221,207,255,215,204,187,255,176,154,125,255, -177,154,125,255,177,155,125,255,178,155,126,255,178,154,126,255,177,154,125,255,176,155,126,255,176,153,124,255,175,154,125,255, -175,154,125,255,175,153,124,255,174,152,123,255,175,153,124,255,175,152,124,255,174,152,123,255,173,151,122,255,174,151,123,255, -173,150,122,255,172,149,121,255,172,150,122,255,171,149,121,255,172,148,120,255,170,149,121,255,171,148,121,255,171,147,121,255, -169,148,119,255,170,147,120,255,170,146,120,255,169,146,119,255,170,147,120,255,169,146,119,255,168,146,119,255,169,145,118,255, -168,144,117,255,167,144,117,255,166,143,116,255,167,144,117,255,165,142,115,255,166,142,116,255,165,142,115,255,164,140,115,255, -164,140,114,255,163,139,114,255,162,138,112,255,161,137,112,255,160,135,111,255,159,135,110,255,158,134,109,255,158,132,109,255, -156,132,108,255,156,131,107,255,154,129,106,255,155,130,105,255,154,129,106,255,152,127,105,255,153,128,105,255,152,127,105,255, - 59, 50, 41,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,229,222,208,255, -227,220,206,255,226,219,205,255,226,219,206,255,227,220,205,255,227,220,205,255,226,219,205,255,227,219,205,255,194,178,155,255, -176,153,124,255,178,154,125,255,178,154,126,255,177,155,125,255,177,155,126,255,176,154,125,255,177,154,125,255,175,154,125,255, -175,153,124,255,175,153,124,255,174,152,123,255,175,153,124,255,175,151,124,255,174,152,123,255,173,151,122,255,174,151,123,255, -173,150,122,255,172,149,121,255,172,149,121,255,172,150,122,255,172,149,121,255,171,149,121,255,170,149,121,255,170,148,120,255, -170,148,120,255,169,147,119,255,170,147,120,255,170,147,120,255,169,146,119,255,168,145,118,255,169,146,119,255,168,145,118,255, -168,145,118,255,166,143,116,255,166,143,116,255,165,142,115,255,165,142,115,255,165,141,115,255,164,140,115,255,163,139,114,255, -162,138,113,255,161,137,112,255,161,137,111,255,160,136,111,255,159,134,110,255,158,133,109,255,157,132,108,255,156,131,107,255, -155,131,107,255,155,130,106,255,154,129,105,255,153,128,106,255,154,129,106,255,152,127,104,255,122,102, 84,255, 25, 21, 18,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,137,255,229,222,208,255, -227,220,206,255,226,219,206,255,227,220,205,255,227,219,204,255,227,219,204,255,227,219,204,255,227,220,206,255,223,215,200,255, -180,160,133,255,175,152,123,255,177,154,125,255,178,155,126,255,177,155,126,255,177,154,125,255,176,154,125,255,175,154,125,255, -176,154,125,255,175,153,124,255,174,152,123,255,175,153,124,255,174,151,123,255,174,152,123,255,173,151,122,255,174,151,123,255, -173,150,122,255,172,149,121,255,173,150,122,255,172,150,122,255,171,149,121,255,171,148,120,255,170,149,121,255,171,148,121,255, -170,147,120,255,170,148,120,255,169,147,119,255,170,147,120,255,169,146,119,255,169,146,119,255,168,145,118,255,168,145,118,255, -167,144,117,255,167,144,117,255,166,143,116,255,166,143,116,255,165,141,115,255,164,140,115,255,164,140,114,255,163,139,113,255, -162,138,112,255,161,137,112,255,160,136,111,255,159,134,110,255,158,133,109,255,157,133,108,255,156,131,108,255,155,130,107,255, -155,130,106,255,154,129,105,255,153,128,106,255,155,129,106,255,145,122,100,255, 68, 57, 47,255, 7, 6, 5,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,137,255,228,221,207,255, -226,220,205,255,227,220,205,255,226,219,204,255,226,219,204,255,226,219,204,255,226,219,204,255,226,219,204,255,226,219,205,255, -219,210,194,255,173,152,123,255,176,153,124,255,177,155,126,255,176,154,125,255,177,153,124,255,175,154,125,255,175,153,124,255, -176,154,125,255,174,152,123,255,175,152,124,255,175,153,124,255,174,151,123,255,173,152,122,255,174,151,123,255,174,151,123,255, -173,150,122,255,172,149,121,255,173,150,122,255,172,149,121,255,171,150,122,255,172,148,120,255,171,148,121,255,170,149,121,255, -171,147,121,255,170,148,120,255,169,147,119,255,169,146,119,255,170,147,120,255,169,146,119,255,168,145,118,255,168,145,118,255, -167,144,117,255,166,143,116,255,165,143,115,255,166,142,116,255,164,140,114,255,163,140,114,255,163,139,113,255,161,137,112,255, -161,137,112,255,159,136,110,255,159,134,110,255,158,134,109,255,156,132,108,255,156,131,108,255,156,131,107,255,154,129,106,255, -154,129,105,255,153,128,106,255,153,128,105,255,117, 99, 81,255, 13, 11, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,147,144,136,255,228,221,207,255, -226,218,204,255,226,218,204,255,226,218,203,255,225,217,202,255,225,217,202,255,225,217,202,255,225,217,202,255,225,217,202,255, -227,219,204,255,207,196,177,255,174,153,125,255,176,153,124,255,176,154,124,255,176,154,125,255,176,153,124,255,176,154,125,255, -175,153,124,255,175,153,124,255,175,153,124,255,175,152,124,255,174,152,123,255,173,151,122,255,174,150,123,255,173,150,122,255, -174,151,123,255,173,150,122,255,172,150,122,255,173,150,122,255,172,150,122,255,172,149,121,255,171,148,120,255,170,148,121,255, -171,148,121,255,170,148,120,255,169,147,119,255,170,147,120,255,169,146,119,255,169,146,119,255,168,145,117,255,167,144,117,255, -167,144,117,255,166,143,116,255,165,142,115,255,164,141,114,255,163,140,114,255,162,139,113,255,161,137,112,255,161,137,111,255, -159,135,111,255,158,134,109,255,158,133,109,255,157,133,108,255,156,131,107,255,155,130,106,255,154,129,106,255,154,129,106,255, -153,128,105,255,133,111, 91,255, 68, 57, 47,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,147,143,136,255,227,220,205,255, -226,218,204,255,225,218,203,255,225,217,202,255,224,217,201,255,225,217,201,255,224,216,200,255,224,216,200,255,224,216,200,255, -224,216,200,255,225,217,202,255,202,190,170,255,172,149,120,255,175,153,124,255,176,154,125,255,176,154,125,255,175,153,124,255, -175,153,124,255,175,153,124,255,174,152,123,255,175,152,124,255,173,152,122,255,174,151,123,255,174,150,123,255,173,150,122,255, -174,151,123,255,173,150,122,255,173,150,122,255,173,150,122,255,172,149,121,255,172,149,121,255,171,148,120,255,170,149,121,255, -171,148,121,255,170,148,120,255,169,147,119,255,170,147,119,255,169,146,119,255,169,146,118,255,167,144,117,255,167,144,117,255, -166,143,116,255,165,142,115,255,164,141,115,255,163,140,114,255,162,139,113,255,161,137,112,255,161,137,112,255,159,135,111,255, -159,134,110,255,158,133,109,255,157,132,108,255,156,131,107,255,154,129,106,255,153,128,106,255,155,130,107,255,149,125,103,255, - 73, 62, 51,255, 14, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,146,142,134,255,226,219,203,255, -225,216,202,255,225,217,202,255,225,217,201,255,224,216,200,255,223,216,200,255,224,215,199,255,224,215,199,255,224,215,199,255, -224,215,199,255,223,215,198,255,225,217,202,255,206,192,172,255,171,148,120,255,174,152,123,255,175,153,124,255,175,153,124,255, -174,152,123,255,174,152,123,255,175,151,124,255,174,152,123,255,173,150,122,255,174,150,123,255,174,151,123,255,174,151,123,255, -173,150,122,255,172,149,121,255,173,150,122,255,173,150,122,255,172,150,122,255,172,148,121,255,171,149,120,255,170,148,121,255, -170,148,120,255,169,147,119,255,169,146,120,255,169,146,118,255,168,146,118,255,169,145,118,255,167,144,116,255,167,143,117,255, -166,142,116,255,164,141,115,255,163,140,114,255,163,139,113,255,161,137,111,255,160,136,111,255,160,136,111,255,158,134,109,255, -158,133,109,255,156,131,108,255,155,131,107,255,155,130,107,255,154,129,105,255,153,129,106,255,103, 87, 73,255, 6, 6, 5,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,128,123,115,255,221,211,194,255, -224,215,199,255,223,215,199,255,222,214,198,255,223,214,198,255,223,214,198,255,222,214,197,255,222,214,197,255,222,213,196,255, -222,213,196,255,222,213,196,255,222,213,196,255,224,216,201,255,207,194,174,255,176,155,128,255,173,150,122,255,174,152,123,255, -174,152,123,255,174,151,123,255,174,151,123,255,173,151,122,255,174,151,123,255,173,150,122,255,174,151,123,255,174,151,123,255, -173,150,122,255,172,149,121,255,172,149,122,255,173,150,122,255,172,149,122,255,171,148,121,255,171,148,120,255,171,148,121,255, -170,147,120,255,169,146,120,255,170,147,119,255,169,145,118,255,168,145,118,255,168,144,117,255,166,143,116,255,166,142,116,255, -164,141,115,255,163,140,114,255,162,139,112,255,161,137,111,255,160,136,111,255,159,134,110,255,158,134,109,255,158,133,109,255, -155,130,108,255,155,131,107,255,156,131,107,255,147,122,100,255,113, 94, 78,255, 33, 28, 23,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 41, 40, 40,255, 56, 54, 49,255, -156,149,136,255,217,207,190,255,223,214,197,255,221,211,194,255,222,212,195,255,222,212,195,255,221,212,194,255,221,212,194,255, -221,212,194,255,221,212,194,255,221,211,194,255,221,211,193,255,222,213,195,255,212,200,182,255,183,163,138,255,169,146,117,255, -173,150,122,255,174,151,123,255,174,151,123,255,174,151,123,255,174,151,123,255,174,151,123,255,173,150,122,255,173,150,122,255, -172,149,121,255,173,150,122,255,173,150,122,255,172,149,121,255,172,148,122,255,171,148,120,255,170,148,120,255,171,148,121,255, -169,147,119,255,170,147,119,255,169,146,119,255,168,145,118,255,168,145,117,255,167,144,116,255,166,143,116,255,164,141,115,255, -163,140,114,255,162,138,112,255,161,136,112,255,160,135,111,255,159,135,110,255,158,134,109,255,157,132,109,255,156,131,107,255, -156,131,108,255,154,129,106,255, 96, 81, 67,255, 33, 28, 23,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, - 0, 0, 0,255, 29, 28, 25,255,155,146,133,255,221,210,191,255,218,207,189,255,219,209,190,255,219,209,190,255,218,209,190,255, -218,207,188,255,219,208,189,255,219,208,189,255,219,208,189,255,220,208,189,255,219,209,190,255,219,208,189,255,196,181,157,255, -172,150,122,255,172,149,121,255,173,150,122,255,172,149,121,255,172,149,121,255,172,149,121,255,172,149,121,255,172,150,122,255, -173,149,122,255,173,150,121,255,172,149,121,255,171,148,122,255,172,149,121,255,170,147,121,255,171,148,121,255,170,147,120,255, -170,147,120,255,170,146,119,255,169,146,119,255,168,144,117,255,167,144,117,255,167,143,117,255,165,141,115,255,164,140,114,255, -163,139,113,255,160,136,111,255,159,134,111,255,158,135,109,255,158,133,109,255,157,132,109,255,155,130,107,255,153,129,106,255, -103, 88, 73,255, 15, 13, 12,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 14, 13, 11,255,111,105, 94,255,167,158,143,255,202,191,173,255,217,206,185,255, -218,207,186,255,217,205,184,255,215,204,183,255,216,204,183,255,216,203,183,255,215,203,182,255,215,202,180,255,216,204,182,255, -209,196,173,255,190,172,147,255,178,157,131,255,172,150,123,255,170,147,119,255,172,148,120,255,172,149,121,255,173,150,122,255, -172,150,122,255,172,149,122,255,171,148,121,255,171,148,120,255,171,148,121,255,171,148,121,255,170,147,120,255,169,147,120,255, -169,146,119,255,169,145,118,255,168,145,118,255,167,144,117,255,166,143,116,255,165,141,115,255,164,140,114,255,162,138,113,255, -161,136,112,255,161,135,111,255,159,135,110,255,155,132,108,255,133,113, 93,255,109, 92, 76,255, 61, 52, 44,255, 11, 10, 8,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 10, 9, 8,255, 36, 34, 31,255, 85, 80, 71,255, -160,151,133,255,210,197,175,255,216,203,180,255,215,202,179,255,212,198,176,255,211,198,174,255,212,197,174,255,211,196,173,255, -211,196,172,255,211,195,171,255,207,191,166,255,200,184,159,255,191,173,147,255,178,157,132,255,170,147,119,255,168,145,118,255, -169,147,119,255,170,148,120,255,171,148,120,255,171,148,121,255,170,148,120,255,170,147,120,255,170,147,120,255,170,146,119,255, -169,145,118,255,168,145,118,255,167,144,117,255,166,143,116,255,164,141,115,255,165,141,115,255,164,139,113,255,162,137,112,255, -158,134,111,255,125,107, 88,255, 76, 65, 54,255, 37, 32, 26,255, 17, 14, 12,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 68, 64, 55,255,127,119,104,255,202,187,164,255,206,191,166,255,207,191,166,255,207,192,165,255, -208,192,166,255,207,191,163,255,206,190,162,255,206,190,162,255,206,190,160,255,206,189,161,255,204,187,161,255,194,177,152,255, -184,164,139,255,175,154,128,255,170,148,121,255,168,145,118,255,168,145,118,255,168,145,118,255,168,145,118,255,168,144,117,255, -167,144,117,255,164,141,115,255,163,139,113,255,161,138,113,255,163,140,117,255,137,120,101,255, 88, 77, 64,255, 48, 42, 38,255, - 3, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 24, 22, 18,255, 64, 59, 50,255,103, 95, 81,255, -132,121,103,255,144,132,111,255,162,149,125,255,172,156,131,255,179,163,136,255,184,166,138,255,191,173,143,255,190,172,141,255, -191,173,142,255,189,171,141,255,186,169,141,255,176,159,133,255,168,151,127,255,159,142,120,255,149,134,114,255,134,119,101,255, -121,108, 92,255,100, 90, 77,255, 67, 61, 54,255, 40, 36, 32,255, 0, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 3, 3, 2,255, 14, 13, 11,255, 20, 18, 15,255, 25, 22, 18,255, 28, 25, 20,255, 33, 29, 24,255, 33, 29, 24,255, - 33, 30, 24,255, 32, 28, 23,255, 31, 27, 22,255, 26, 23, 18,255, 23, 20, 16,255, 19, 17, 14,255, 14, 12, 9,255, 5, 5, 3,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0,152, 5, 97, 7, - 31, 0, 0, 0, 1, 0, 0, 0,240,168, 97, 7, 64, 98, 96, 7, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, 46,103,114, 97, - 98, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103, -115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46,103,114, 97, 98, 46,112,110,103, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 7, 97, 7, 0, 0, 0, 0,223, 71, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,152, 7, 97, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, - 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 32, 8, 97, 7,136, 24, 97, 7, 68, 65, 84, 65, 0, 16, 0, 0, - 32, 8, 97, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0,136, 24, 97, 7, 0, 0, 0, 0, 1, 0, 0, 0, - 62, 62, 62,255, 61, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 62,255, - 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, - 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, - 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 61, 61, 61,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 61, 61, 61,255, 93, 78, 72,255,121, 93, 81,255,120, 93, 81,255,120, 92, 80,255,120, 92, 80,255,119, 92, 80,255,119, 91, 80,255, -118, 91, 79,255,117, 91, 79,255,117, 90, 79,255,117, 90, 78,255,116, 89, 78,255,115, 89, 78,255,115, 88, 78,255,114, 88, 77,255, -114, 88, 77,255,113, 87, 77,255,112, 87, 76,255,112, 87, 76,255,111, 86, 76,255,111, 86, 75,255,110, 85, 75,255,109, 85, 74,255, -108, 84, 74,255,108, 84, 73,255,107, 83, 73,255,107, 83, 73,255,106, 82, 72,255,106, 82, 72,255,104, 82, 71,255,104, 81, 71,255, -103, 80, 70,255,102, 79, 70,255,101, 79, 69,255,100, 79, 69,255,100, 78, 69,255, 99, 77, 68,255, 98, 76, 67,255, 97, 76, 67,255, - 96, 75, 66,255, 95, 74, 66,255, 93, 74, 65,255, 93, 73, 64,255, 91, 72, 63,255, 90, 71, 63,255, 89, 70, 62,255, 88, 69, 61,255, - 87, 68, 61,255, 85, 68, 60,255, 84, 66, 59,255, 83, 66, 58,255, 82, 65, 57,255, 80, 64, 57,255, 79, 63, 56,255, 78, 62, 55,255, - 76, 61, 55,255, 75, 60, 53,255, 73, 59, 53,255, 72, 58, 52,255, 70, 57, 51,255, 69, 56, 50,255, 67, 55, 49,255, 66, 54, 48,255, - 64, 52, 47,255, 63, 51, 47,255, 62, 51, 46,255, 60, 49, 45,255, 59, 48, 44,255, 57, 48, 43,255, 57, 47, 43,255, 55, 46, 42,255, - 55, 46, 42,255, 55, 46, 42,255, 56, 47, 43,255, 58, 48, 44,255, 43, 38, 37,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, - 60, 61, 61,255,122, 94, 81,255,178,124,100,255,176,123,100,255,175,122, 99,255,175,121, 98,255,173,121, 98,255,173,120, 97,255, -171,119, 97,255,171,119, 96,255,169,118, 95,255,168,117, 95,255,167,116, 94,255,166,115, 93,255,165,115, 93,255,164,114, 92,255, -163,113, 92,255,162,113, 91,255,161,111, 90,255,160,111, 90,255,159,110, 89,255,158,109, 88,255,156,108, 87,255,155,108, 87,255, -154,106, 86,255,152,106, 85,255,151,105, 84,255,150,103, 83,255,148,103, 83,255,147,102, 82,255,146,100, 81,255,144, 99, 80,255, -142, 99, 79,255,141, 97, 78,255,139, 96, 77,255,138, 95, 76,255,136, 94, 75,255,134, 93, 74,255,133, 91, 73,255,130, 90, 72,255, -129, 88, 71,255,127, 87, 69,255,125, 85, 69,255,122, 84, 67,255,120, 82, 66,255,118, 81, 65,255,116, 79, 62,255,113, 77, 61,255, -111, 75, 60,255,109, 74, 58,255,106, 72, 57,255,103, 70, 56,255,101, 68, 54,255, 98, 66, 53,255, 95, 65, 52,255, 93, 62, 49,255, - 90, 61, 48,255, 87, 59, 47,255, 85, 57, 44,255, 82, 55, 43,255, 79, 53, 42,255, 76, 50, 39,255, 74, 48, 38,255, 70, 47, 36,255, - 67, 44, 34,255, 64, 42, 33,255, 62, 41, 30,255, 59, 38, 29,255, 56, 36, 28,255, 54, 34, 26,255, 52, 33, 25,255, 50, 32, 24,255, - 49, 31, 23,255, 50, 31, 23,255, 52, 33, 25,255, 55, 36, 27,255, 20, 14, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, - 60, 61, 61,255,122, 94, 82,255,178,124,100,255,177,123,100,255,175,122, 99,255,175,122, 99,255,173,121, 98,255,172,120, 97,255, -172,120, 96,255,170,118, 96,255,170,117, 96,255,169,118, 95,255,167,116, 94,255,167,116, 94,255,166,115, 93,255,164,114, 92,255, -163,114, 92,255,163,113, 91,255,161,112, 90,255,160,111, 90,255,159,111, 89,255,157,109, 88,255,156,109, 88,255,155,107, 86,255, -154,107, 86,255,153,106, 86,255,151,105, 84,255,150,104, 84,255,149,103, 83,255,147,102, 82,255,146,101, 81,255,144,100, 81,255, -143, 98, 79,255,141, 97, 78,255,140, 96, 78,255,138, 95, 76,255,136, 94, 76,255,135, 93, 75,255,132, 91, 73,255,131, 90, 72,255, -129, 89, 71,255,127, 87, 70,255,125, 86, 69,255,123, 85, 68,255,120, 83, 66,255,118, 81, 65,255,116, 80, 64,255,114, 77, 62,255, -111, 76, 61,255,109, 75, 59,255,106, 72, 57,255,104, 71, 56,255,101, 69, 55,255, 99, 67, 53,255, 96, 65, 52,255, 94, 63, 50,255, - 91, 61, 48,255, 88, 59, 47,255, 85, 57, 45,255, 83, 55, 43,255, 79, 53, 42,255, 76, 51, 40,255, 74, 49, 38,255, 70, 47, 37,255, - 67, 44, 34,255, 64, 42, 33,255, 62, 41, 32,255, 59, 38, 29,255, 56, 36, 28,255, 55, 35, 27,255, 52, 33, 25,255, 50, 32, 24,255, - 49, 31, 23,255, 50, 32, 24,255, 51, 34, 25,255, 57, 37, 29,255, 9, 7, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,123, 94, 82,255,179,125,101,255,177,123, 99,255,177,123, 99,255,175,121, 98,255,174,121, 98,255,174,120, 98,255, -173,119, 97,255,172,119, 96,255,170,118, 96,255,170,117, 96,255,169,117, 95,255,167,116, 94,255,167,116, 94,255,165,115, 93,255, -164,114, 92,255,162,114, 92,255,162,112, 91,255,160,111, 90,255,159,110, 90,255,159,110, 89,255,157,109, 88,255,156,108, 87,255, -155,107, 86,255,153,106, 86,255,152,105, 85,255,151,104, 84,255,149,103, 83,255,148,102, 82,255,147,101, 81,255,145,101, 81,255, -144, 99, 80,255,142, 98, 79,255,141, 97, 78,255,139, 96, 77,255,137, 95, 76,255,135, 93, 75,255,134, 92, 74,255,132, 90, 72,255, -130, 89, 72,255,128, 88, 71,255,126, 86, 69,255,124, 84, 67,255,122, 83, 66,255,119, 82, 65,255,117, 80, 63,255,115, 78, 62,255, -112, 77, 61,255,109, 75, 59,255,107, 73, 58,255,105, 72, 57,255,102, 69, 55,255, 99, 67, 53,255, 97, 66, 52,255, 94, 63, 50,255, - 91, 61, 49,255, 89, 60, 47,255, 86, 57, 45,255, 82, 56, 44,255, 80, 54, 42,255, 77, 51, 40,255, 74, 49, 38,255, 71, 47, 37,255, - 67, 44, 34,255, 64, 43, 33,255, 62, 40, 31,255, 59, 38, 29,255, 56, 36, 28,255, 54, 35, 27,255, 52, 33, 25,255, 50, 32, 24,255, - 49, 31, 23,255, 50, 32, 24,255, 52, 34, 26,255, 57, 37, 28,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,123, 95, 82,255,181,125,102,255,178,124,100,255,177,123,100,255,176,123, 99,255,175,121, 98,255,174,121, 98,255, -173,120, 98,255,172,119, 97,255,171,120, 96,255,170,118, 95,255,169,117, 95,255,168,117, 94,255,166,115, 93,255,166,116, 94,255, -165,115, 93,255,163,113, 91,255,163,113, 92,255,162,112, 91,255,160,111, 89,255,159,110, 90,255,158,110, 89,255,156,108, 87,255, -155,108, 87,255,154,107, 86,255,153,106, 85,255,152,105, 84,255,151,104, 84,255,148,102, 82,255,147,102, 82,255,146,101, 82,255, -144,100, 80,255,143, 99, 79,255,142, 98, 79,255,139, 96, 77,255,138, 95, 77,255,137, 94, 76,255,134, 92, 74,255,132, 91, 73,255, -131, 90, 72,255,128, 88, 71,255,126, 87, 70,255,124, 85, 68,255,122, 84, 67,255,120, 82, 66,255,117, 81, 64,255,115, 79, 63,255, -113, 77, 62,255,110, 75, 60,255,108, 74, 59,255,105, 72, 57,255,102, 69, 55,255,100, 68, 54,255, 97, 66, 53,255, 94, 64, 50,255, - 92, 62, 49,255, 89, 60, 47,255, 86, 58, 45,255, 84, 56, 44,255, 80, 54, 42,255, 77, 51, 40,255, 74, 49, 38,255, 71, 47, 37,255, - 68, 44, 34,255, 64, 43, 32,255, 62, 40, 31,255, 59, 38, 29,255, 56, 36, 28,255, 54, 35, 27,255, 51, 33, 25,255, 50, 32, 24,255, - 49, 31, 23,255, 50, 32, 24,255, 54, 35, 26,255, 43, 29, 22,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,123, 95, 83,255,181,126,102,255,179,125,101,255,178,124,101,255,177,123,100,255,176,122, 99,255,175,122, 99,255, -174,121, 98,255,173,120, 98,255,172,120, 97,255,171,119, 97,255,170,118, 95,255,169,118, 95,255,168,117, 95,255,167,116, 93,255, -166,115, 93,255,165,115, 93,255,163,114, 92,255,162,113, 91,255,161,112, 91,255,160,111, 90,255,159,110, 89,255,158,110, 89,255, -156,108, 87,255,155,107, 87,255,153,106, 85,255,152,106, 85,255,151,105, 85,255,149,103, 83,255,148,103, 83,255,147,102, 82,255, -145,100, 81,255,144, 99, 80,255,142, 98, 79,255,140, 97, 78,255,139, 96, 77,255,137, 95, 76,255,135, 93, 74,255,134, 92, 74,255, -131, 91, 73,255,129, 88, 71,255,127, 87, 70,255,125, 86, 69,255,123, 84, 67,255,120, 83, 66,255,119, 81, 65,255,116, 79, 63,255, -113, 78, 62,255,111, 76, 60,255,109, 74, 59,255,106, 72, 58,255,103, 70, 55,255,101, 68, 54,255, 98, 66, 53,255, 95, 64, 51,255, - 92, 63, 49,255, 89, 60, 48,255, 86, 58, 45,255, 84, 56, 44,255, 80, 54, 42,255, 77, 52, 40,255, 74, 50, 39,255, 71, 47, 37,255, - 67, 44, 34,255, 64, 43, 32,255, 62, 40, 31,255, 59, 38, 29,255, 56, 36, 28,255, 54, 35, 27,255, 51, 33, 25,255, 50, 32, 24,255, - 49, 31, 23,255, 50, 32, 24,255, 54, 35, 26,255, 28, 20, 16,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,124, 95, 83,255,182,127,103,255,180,125,102,255,179,125,101,255,178,124,100,255,177,123,100,255,176,122, 99,255, -175,122, 99,255,174,121, 98,255,173,120, 98,255,172,120, 96,255,171,118, 96,255,170,118, 96,255,168,117, 94,255,168,116, 94,255, -166,116, 94,255,165,114, 92,255,164,114, 92,255,163,113, 92,255,162,113, 90,255,161,112, 90,255,160,111, 90,255,158,109, 88,255, -157,109, 88,255,155,108, 87,255,154,106, 86,255,153,106, 85,255,152,105, 85,255,150,104, 84,255,149,103, 83,255,147,102, 82,255, -146,101, 81,255,144,100, 80,255,143, 99, 80,255,141, 97, 78,255,140, 96, 77,255,138, 95, 77,255,136, 94, 75,255,134, 93, 74,255, -132, 91, 73,255,130, 89, 71,255,128, 88, 71,255,126, 86, 69,255,124, 85, 68,255,121, 84, 67,255,119, 82, 66,255,116, 80, 64,255, -114, 78, 62,255,111, 77, 60,255,109, 74, 59,255,107, 73, 58,255,104, 70, 56,255,101, 69, 54,255, 99, 67, 53,255, 96, 65, 51,255, - 93, 63, 49,255, 90, 61, 48,255, 87, 58, 46,255, 84, 56, 44,255, 81, 54, 43,255, 77, 52, 40,255, 74, 50, 39,255, 71, 47, 37,255, - 67, 44, 34,255, 64, 42, 33,255, 61, 40, 31,255, 59, 38, 29,255, 56, 36, 28,255, 53, 34, 26,255, 51, 32, 24,255, 49, 31, 23,255, - 49, 31, 23,255, 51, 33, 25,255, 56, 37, 27,255, 12, 8, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,124, 96, 83,255,184,127,103,255,181,126,102,255,180,125,101,255,179,124,101,255,178,124,100,255,177,123, 99,255, -176,122, 99,255,174,121, 98,255,174,120, 97,255,173,120, 97,255,171,119, 96,255,170,119, 96,255,169,117, 95,255,168,117, 94,255, -167,116, 94,255,166,115, 93,255,165,114, 92,255,164,114, 92,255,162,112, 91,255,161,112, 90,255,160,111, 90,255,158,110, 89,255, -158,109, 88,255,157,109, 88,255,155,107, 86,255,154,106, 86,255,153,106, 85,255,151,104, 85,255,150,104, 84,255,149,103, 83,255, -146,101, 81,255,145,100, 80,255,144,100, 80,255,142, 98, 79,255,140, 97, 78,255,139, 96, 77,255,136, 94, 76,255,135, 93, 75,255, -133, 92, 74,255,130, 90, 72,255,129, 88, 71,255,127, 87, 70,255,124, 85, 68,255,122, 84, 67,255,119, 82, 66,255,118, 80, 64,255, -115, 79, 63,255,112, 76, 61,255,110, 75, 60,255,108, 73, 58,255,104, 71, 56,255,102, 69, 55,255, 99, 68, 54,255, 96, 65, 51,255, - 93, 64, 50,255, 90, 61, 48,255, 87, 58, 46,255, 84, 57, 44,255, 81, 54, 43,255, 77, 52, 40,255, 74, 50, 39,255, 71, 47, 37,255, - 67, 44, 34,255, 63, 42, 32,255, 61, 40, 31,255, 58, 38, 29,255, 55, 35, 27,255, 53, 34, 26,255, 50, 32, 24,255, 49, 31, 23,255, - 49, 31, 23,255, 51, 33, 25,255, 54, 36, 28,255, 2, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,125, 96, 83,255,184,128,103,255,182,127,102,255,181,126,102,255,180,125,102,255,178,124,101,255,177,124,100,255, -177,123,100,255,176,122, 99,255,174,121, 98,255,174,120, 98,255,172,120, 97,255,171,119, 96,255,171,119, 96,255,169,118, 95,255, -168,117, 94,255,167,116, 93,255,165,115, 93,255,164,114, 92,255,164,114, 91,255,162,113, 91,255,161,112, 90,255,160,111, 89,255, -158,110, 89,255,157,109, 88,255,156,108, 87,255,154,107, 86,255,153,106, 86,255,152,105, 85,255,150,104, 84,255,149,103, 83,255, -148,102, 82,255,146,101, 81,255,145,100, 81,255,142, 99, 79,255,141, 97, 78,255,140, 97, 78,255,137, 94, 76,255,135, 93, 75,255, -134, 92, 74,255,131, 90, 72,255,129, 89, 72,255,127, 88, 71,255,125, 86, 69,255,123, 84, 67,255,121, 82, 65,255,118, 81, 64,255, -116, 79, 63,255,114, 78, 62,255,111, 75, 60,255,108, 74, 59,255,105, 72, 58,255,102, 70, 55,255,100, 68, 54,255, 97, 66, 52,255, - 94, 64, 50,255, 90, 61, 49,255, 87, 59, 46,255, 84, 57, 44,255, 81, 54, 43,255, 77, 52, 40,255, 74, 50, 39,255, 71, 47, 36,255, - 67, 44, 34,255, 63, 41, 32,255, 61, 40, 31,255, 58, 37, 29,255, 55, 35, 27,255, 52, 34, 26,255, 50, 32, 24,255, 49, 31, 23,255, - 49, 31, 23,255, 52, 34, 25,255, 42, 29, 23,255, 1, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,125, 96, 84,255,185,129,104,255,182,127,103,255,182,127,103,255,181,126,102,255,179,125,101,255,179,124,101,255, -177,123,100,255,176,123, 99,255,176,122, 99,255,174,121, 97,255,173,120, 97,255,172,120, 97,255,170,118, 97,255,170,118, 96,255, -168,117, 95,255,167,116, 94,255,166,116, 93,255,165,115, 93,255,164,114, 92,255,163,113, 91,255,162,112, 91,255,160,111, 90,255, -159,110, 89,255,158,110, 89,255,157,108, 87,255,155,108, 87,255,154,106, 86,255,152,105, 85,255,151,105, 84,255,150,104, 84,255, -148,102, 82,255,147,102, 82,255,145,101, 81,255,143, 99, 80,255,142, 98, 79,255,140, 97, 78,255,138, 95, 77,255,136, 94, 76,255, -134, 92, 74,255,132, 91, 73,255,130, 90, 72,255,128, 88, 71,255,126, 86, 69,255,124, 85, 68,255,121, 83, 66,255,119, 81, 65,255, -116, 80, 63,255,114, 78, 63,255,111, 76, 61,255,109, 74, 59,255,106, 72, 57,255,103, 70, 56,255,100, 68, 54,255, 97, 66, 52,255, - 94, 64, 50,255, 91, 62, 49,255, 88, 59, 46,255, 85, 57, 45,255, 81, 54, 43,255, 77, 52, 40,255, 74, 50, 39,255, 70, 47, 36,255, - 66, 44, 34,255, 63, 41, 32,255, 60, 40, 31,255, 57, 37, 28,255, 54, 35, 27,255, 52, 34, 26,255, 50, 32, 24,255, 49, 31, 23,255, - 50, 32, 24,255, 53, 35, 26,255, 30, 20, 16,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,126, 97, 84,255,186,129,105,255,183,128,103,255,182,127,104,255,182,127,103,255,180,125,101,255,179,125,102,255, -179,125,101,255,177,123, 99,255,176,123,100,255,175,122, 99,255,173,121, 97,255,173,120, 98,255,171,119, 96,255,170,118, 96,255, -170,118, 96,255,168,117, 94,255,167,116, 94,255,167,116, 94,255,165,114, 92,255,163,113, 91,255,163,113, 92,255,161,112, 90,255, -160,111, 89,255,159,110, 89,255,157,109, 88,255,156,108, 87,255,155,108, 87,255,153,106, 85,255,152,105, 85,255,151,104, 84,255, -149,103, 83,255,147,102, 82,255,146,101, 81,255,144, 99, 80,255,142, 99, 79,255,141, 97, 79,255,139, 95, 77,255,137, 94, 76,255, -135, 93, 75,255,133, 91, 73,255,131, 90, 72,255,129, 89, 71,255,126, 87, 69,255,124, 85, 68,255,122, 83, 66,255,120, 82, 65,255, -117, 80, 64,255,114, 78, 62,255,112, 77, 61,255,109, 75, 60,255,106, 72, 57,255,104, 71, 56,255,101, 69, 54,255, 97, 66, 52,255, - 95, 64, 51,255, 91, 62, 49,255, 88, 59, 46,255, 85, 57, 45,255, 81, 55, 43,255, 77, 52, 40,255, 74, 49, 38,255, 70, 46, 36,255, - 66, 43, 33,255, 62, 41, 32,255, 60, 39, 30,255, 56, 36, 27,255, 53, 35, 26,255, 51, 33, 25,255, 49, 31, 23,255, 49, 31, 23,255, - 50, 32, 24,255, 54, 35, 27,255, 19, 13, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,127, 97, 84,255,187,130,105,255,185,129,104,255,183,128,103,255,183,127,103,255,181,126,102,255,180,126,102,255, -179,125,101,255,177,124,100,255,177,123,100,255,176,122, 99,255,175,121, 99,255,173,121, 98,255,173,120, 98,255,171,119, 96,255, -170,118, 96,255,169,117, 96,255,168,117, 94,255,167,116, 94,255,166,116, 94,255,164,114, 92,255,163,113, 92,255,162,112, 90,255, -160,111, 90,255,159,111, 90,255,158,109, 88,255,157,109, 87,255,156,108, 87,255,154,107, 86,255,152,105, 85,255,151,105, 85,255, -150,103, 83,255,148,102, 82,255,147,101, 82,255,145,100, 81,255,143, 99, 80,255,141, 98, 79,255,139, 96, 77,255,137, 95, 77,255, -136, 94, 76,255,133, 92, 74,255,131, 90, 73,255,129, 89, 71,255,127, 87, 69,255,124, 86, 69,255,123, 85, 68,255,120, 82, 66,255, -117, 80, 64,255,116, 78, 62,255,113, 77, 61,255,110, 75, 60,255,107, 74, 59,255,104, 71, 56,255,101, 69, 55,255, 98, 66, 52,255, - 95, 64, 51,255, 91, 62, 49,255, 88, 59, 46,255, 85, 57, 45,255, 81, 55, 43,255, 77, 51, 40,255, 73, 48, 38,255, 69, 46, 36,255, - 66, 43, 33,255, 62, 41, 31,255, 58, 39, 29,255, 56, 36, 27,255, 53, 34, 26,255, 51, 33, 25,255, 49, 31, 23,255, 50, 32, 24,255, - 51, 33, 25,255, 50, 33, 25,255, 9, 7, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,127, 97, 84,255,188,130,106,255,185,130,104,255,184,129,104,255,183,128,104,255,182,127,103,255,181,126,102,255, -180,125,102,255,179,124,101,255,178,124,100,255,177,123,100,255,175,122, 99,255,174,121, 98,255,173,121, 97,255,172,119, 97,255, -171,119, 97,255,170,118, 95,255,169,117, 95,255,167,117, 94,255,167,115, 93,255,165,115, 92,255,164,114, 92,255,162,112, 91,255, -161,112, 91,255,161,111, 90,255,158,110, 89,255,157,109, 88,255,156,108, 88,255,155,107, 86,255,153,106, 85,255,152,105, 85,255, -150,104, 84,255,149,103, 83,255,147,102, 82,255,145,101, 81,255,144,100, 80,255,142, 98, 79,255,140, 97, 78,255,138, 96, 77,255, -136, 94, 76,255,134, 92, 74,255,132, 91, 73,255,130, 89, 72,255,128, 88, 70,255,126, 86, 69,255,123, 85, 68,255,121, 83, 66,255, -119, 81, 65,255,116, 79, 63,255,113, 78, 62,255,111, 76, 61,255,108, 73, 58,255,105, 72, 57,255,101, 69, 55,255, 98, 67, 53,255, - 95, 65, 51,255, 91, 62, 49,255, 88, 59, 46,255, 85, 57, 45,255, 81, 54, 43,255, 77, 51, 40,255, 73, 49, 38,255, 69, 46, 35,255, - 65, 43, 33,255, 61, 41, 31,255, 58, 38, 29,255, 55, 36, 27,255, 52, 34, 25,255, 51, 33, 25,255, 49, 31, 23,255, 50, 32, 24,255, - 52, 34, 25,255, 46, 30, 24,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,127, 98, 85,255,188,131,106,255,186,129,105,255,185,129,105,255,184,129,104,255,183,127,104,255,182,127,103,255, -181,126,102,255,179,125,101,255,178,124,101,255,178,124,100,255,176,122, 99,255,175,122, 98,255,174,121, 98,255,173,120, 97,255, -172,120, 96,255,170,118, 96,255,169,117, 95,255,168,117, 95,255,166,115, 93,255,166,116, 93,255,165,115, 93,255,163,113, 91,255, -162,112, 90,255,161,112, 91,255,159,110, 89,255,158,109, 88,255,157,109, 88,255,155,107, 86,255,154,106, 86,255,153,106, 86,255, -151,104, 84,255,150,103, 83,255,148,103, 83,255,146,101, 81,255,144,100, 80,255,143, 99, 80,255,141, 97, 78,255,139, 96, 77,255, -137, 95, 76,255,135, 93, 74,255,133, 92, 74,255,131, 90, 73,255,128, 88, 71,255,126, 87, 69,255,124, 85, 68,255,122, 83, 67,255, -119, 82, 65,255,116, 79, 63,255,114, 78, 62,255,111, 76, 61,255,108, 73, 58,255,105, 72, 57,255,102, 70, 55,255, 99, 67, 53,255, - 95, 65, 51,255, 92, 62, 49,255, 88, 59, 47,255, 84, 57, 45,255, 80, 54, 43,255, 76, 51, 40,255, 73, 49, 38,255, 68, 45, 35,255, - 64, 42, 33,255, 60, 39, 30,255, 58, 38, 29,255, 54, 35, 26,255, 52, 33, 25,255, 50, 32, 24,255, 49, 31, 23,255, 51, 32, 24,255, - 54, 34, 26,255, 34, 24, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,128, 98, 85,255,189,131,107,255,187,130,105,255,186,130,105,255,185,129,105,255,184,128,104,255,182,127,103,255, -182,127,103,255,180,125,101,255,179,125,101,255,178,124,101,255,177,123,100,255,176,123, 99,255,175,122, 99,255,173,121, 98,255, -172,120, 97,255,171,119, 96,255,170,118, 96,255,169,118, 95,255,167,117, 94,255,166,116, 94,255,165,115, 93,255,164,114, 92,255, -162,113, 91,255,162,112, 91,255,160,111, 89,255,159,110, 89,255,157,109, 88,255,156,108, 87,255,154,107, 86,255,153,106, 86,255, -152,105, 84,255,150,104, 84,255,149,103, 83,255,147,101, 81,255,145,101, 81,255,144, 99, 80,255,141, 98, 79,255,139, 96, 77,255, -138, 95, 76,255,135, 93, 75,255,133, 92, 74,255,132, 91, 73,255,129, 88, 71,255,127, 87, 70,255,125, 86, 69,255,122, 84, 67,255, -120, 82, 66,255,118, 81, 64,255,115, 78, 62,255,112, 76, 61,255,109, 74, 59,255,106, 72, 57,255,103, 70, 55,255, 99, 67, 53,255, - 96, 65, 52,255, 92, 62, 50,255, 89, 59, 47,255, 84, 57, 45,255, 80, 54, 43,255, 76, 51, 40,255, 72, 48, 38,255, 68, 45, 35,255, - 64, 42, 32,255, 60, 39, 30,255, 56, 36, 28,255, 53, 34, 26,255, 51, 33, 25,255, 49, 32, 24,255, 49, 32, 24,255, 51, 33, 25,255, - 55, 36, 27,255, 16, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,128, 98, 85,255,190,132,107,255,187,131,106,255,186,130,106,255,185,129,105,255,184,128,104,255,183,128,104,255, -182,127,103,255,181,126,102,255,180,126,102,255,179,125,100,255,177,123,100,255,177,123,100,255,175,122, 98,255,174,121, 98,255, -173,120, 98,255,171,120, 96,255,171,119, 96,255,170,118, 96,255,168,116, 94,255,167,116, 94,255,166,115, 93,255,164,114, 93,255, -163,114, 92,255,162,112, 91,255,160,111, 90,255,159,110, 89,255,158,110, 89,255,157,109, 88,255,155,108, 87,255,154,106, 86,255, -152,105, 85,255,151,105, 84,255,149,103, 83,255,148,102, 82,255,146,101, 81,255,144,100, 80,255,142, 98, 79,255,141, 97, 78,255, -138, 96, 77,255,136, 94, 75,255,134, 92, 74,255,132, 91, 73,255,130, 89, 72,255,128, 88, 71,255,125, 86, 68,255,123, 84, 67,255, -121, 83, 66,255,118, 80, 65,255,116, 79, 63,255,112, 77, 62,255,109, 75, 59,255,106, 73, 58,255,103, 70, 56,255, 99, 67, 53,255, - 96, 66, 52,255, 92, 62, 50,255, 88, 60, 47,255, 85, 57, 45,255, 80, 54, 43,255, 76, 51, 40,255, 72, 48, 38,255, 67, 45, 35,255, - 63, 41, 32,255, 59, 38, 30,255, 56, 36, 27,255, 52, 34, 25,255, 50, 32, 24,255, 48, 32, 23,255, 50, 32, 24,255, 52, 33, 25,255, - 56, 37, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,128, 98, 86,255,191,133,108,255,188,131,106,255,187,130,106,255,187,131,106,255,185,129,104,255,184,128,104,255, -183,128,104,255,181,126,102,255,181,126,102,255,180,125,102,255,178,124,100,255,177,124,100,255,176,123,100,255,175,122, 98,255, -174,121, 98,255,173,120, 97,255,171,119, 96,255,170,119, 96,255,169,117, 95,255,168,116, 94,255,167,116, 94,255,165,115, 92,255, -164,114, 92,255,163,113, 91,255,161,112, 90,255,160,111, 89,255,159,111, 89,255,157,109, 88,255,156,108, 87,255,155,107, 87,255, -153,106, 85,255,151,105, 85,255,150,104, 84,255,148,103, 83,255,147,101, 82,255,145,100, 81,255,143, 99, 79,255,141, 98, 79,255, -140, 96, 78,255,137, 94, 75,255,135, 93, 75,255,133, 92, 74,255,131, 90, 72,255,128, 88, 71,255,127, 87, 70,255,124, 85, 68,255, -121, 83, 67,255,118, 81, 64,255,116, 79, 63,255,113, 77, 62,255,110, 75, 59,255,107, 73, 58,255,103, 71, 56,255, 99, 68, 54,255, - 96, 66, 52,255, 92, 63, 50,255, 89, 60, 47,255, 85, 57, 45,255, 80, 54, 43,255, 76, 51, 40,255, 71, 48, 37,255, 67, 44, 34,255, - 62, 41, 31,255, 58, 38, 29,255, 55, 36, 27,255, 52, 33, 25,255, 50, 31, 24,255, 49, 31, 23,255, 50, 32, 24,255, 54, 35, 27,255, - 41, 29, 23,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,129, 99, 87,255,191,134,109,255,189,132,107,255,188,131,106,255,187,131,105,255,186,129,105,255,185,129,105,255, -184,128,104,255,183,127,103,255,181,126,103,255,180,126,102,255,179,124,101,255,178,124,101,255,177,123, 99,255,175,122, 99,255, -175,122, 99,255,174,121, 97,255,172,120, 97,255,171,119, 96,255,169,119, 95,255,168,117, 95,255,167,117, 94,255,166,115, 94,255, -164,114, 92,255,164,114, 92,255,162,112, 91,255,160,111, 90,255,160,111, 90,255,158,109, 88,255,156,108, 87,255,155,108, 87,255, -153,106, 86,255,152,105, 85,255,151,105, 84,255,149,103, 83,255,147,102, 82,255,146,101, 82,255,144, 99, 80,255,142, 98, 79,255, -140, 97, 78,255,137, 95, 76,255,136, 93, 75,255,134, 92, 74,255,131, 90, 73,255,129, 89, 71,255,127, 88, 69,255,124, 85, 68,255, -122, 84, 67,255,120, 82, 65,255,117, 80, 63,255,114, 78, 62,255,110, 75, 60,255,107, 73, 58,255,103, 71, 56,255,100, 68, 54,255, - 96, 66, 52,255, 93, 63, 50,255, 89, 60, 47,255, 85, 57, 45,255, 80, 54, 42,255, 76, 51, 39,255, 71, 47, 36,255, 66, 44, 34,255, - 62, 40, 31,255, 58, 37, 29,255, 54, 35, 26,255, 51, 33, 25,255, 49, 31, 23,255, 48, 30, 23,255, 51, 33, 25,255, 56, 36, 28,255, - 23, 16, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,128,100, 88,255,192,135,111,255,189,132,108,255,189,131,107,255,187,130,106,255,186,130,105,255,185,129,105,255, -184,129,105,255,183,127,103,255,182,127,103,255,180,125,101,255,180,125,101,255,179,124,101,255,177,123,100,255,176,123, 99,255, -175,122, 99,255,174,121, 98,255,173,120, 97,255,172,119, 96,255,170,118, 95,255,169,117, 95,255,168,117, 95,255,166,115, 93,255, -165,115, 92,255,164,114, 92,255,163,113, 91,255,162,112, 90,255,160,111, 90,255,159,110, 88,255,157,109, 88,255,156,108, 87,255, -154,106, 86,255,153,106, 86,255,151,105, 85,255,150,103, 83,255,148,103, 83,255,146,101, 82,255,145, 99, 80,255,143, 99, 80,255, -141, 97, 79,255,139, 96, 77,255,137, 95, 76,255,134, 93, 75,255,133, 91, 73,255,130, 90, 72,255,127, 88, 70,255,126, 86, 69,255, -123, 84, 67,255,120, 82, 65,255,117, 80, 64,255,114, 78, 62,255,111, 76, 60,255,108, 74, 59,255,104, 71, 57,255,100, 68, 54,255, - 97, 66, 53,255, 93, 63, 50,255, 89, 60, 47,255, 85, 57, 45,255, 80, 54, 43,255, 76, 50, 39,255, 71, 47, 37,255, 66, 44, 34,255, - 61, 40, 31,255, 57, 37, 28,255, 53, 34, 26,255, 50, 32, 24,255, 48, 31, 23,255, 49, 31, 23,255, 52, 33, 25,255, 57, 38, 29,255, - 5, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,129,100, 89,255,192,135,113,255,190,133,110,255,190,132,108,255,189,132,107,255,187,130,105,255,186,130,106,255, -185,129,105,255,183,128,103,255,183,127,103,255,182,127,103,255,180,125,101,255,179,125,101,255,179,125,100,255,177,123,100,255, -176,123,100,255,175,121, 98,255,173,120, 97,255,172,120, 97,255,170,118, 96,255,169,117, 96,255,169,117, 95,255,167,116, 93,255, -166,116, 93,255,165,115, 93,255,163,113, 91,255,162,113, 91,255,161,112, 90,255,159,110, 89,255,158,110, 89,255,157,109, 88,255, -155,107, 87,255,154,106, 86,255,153,106, 85,255,150,104, 84,255,149,103, 83,255,148,102, 83,255,145,100, 81,255,144, 99, 80,255, -142, 99, 80,255,140, 96, 77,255,138, 95, 76,255,136, 94, 75,255,133, 92, 74,255,131, 90, 72,255,129, 89, 71,255,126, 87, 69,255, -124, 85, 68,255,120, 83, 67,255,118, 81, 65,255,115, 79, 63,255,111, 76, 60,255,108, 74, 59,255,105, 72, 57,255,101, 68, 54,255, - 97, 66, 53,255, 93, 63, 50,255, 89, 60, 47,255, 85, 57, 45,255, 80, 54, 42,255, 75, 50, 39,255, 71, 47, 37,255, 66, 43, 34,255, - 61, 40, 31,255, 57, 37, 28,255, 53, 34, 26,255, 50, 32, 24,255, 48, 30, 22,255, 48, 31, 23,255, 53, 34, 26,255, 50, 33, 27,255, - 2, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,130,101, 90,255,193,137,115,255,190,135,111,255,190,133,109,255,189,132,107,255,188,131,107,255,187,130,106,255, -186,130,104,255,185,129,104,255,183,128,104,255,183,127,103,255,181,126,102,255,180,125,102,255,179,124,101,255,178,123,100,255, -177,123,100,255,176,122, 98,255,174,121, 98,255,173,120, 98,255,171,120, 96,255,171,119, 96,255,169,118, 95,255,168,117, 94,255, -166,116, 94,255,165,115, 93,255,164,114, 92,255,163,113, 91,255,162,112, 91,255,160,111, 89,255,159,110, 89,255,157,109, 88,255, -156,108, 87,255,154,107, 87,255,153,106, 86,255,152,105, 85,255,150,104, 84,255,148,103, 83,255,147,101, 82,255,144,100, 81,255, -143, 99, 80,255,141, 97, 78,255,139, 96, 77,255,137, 94, 76,255,134, 93, 75,255,132, 91, 73,255,130, 90, 72,255,127, 87, 70,255, -125, 85, 68,255,122, 83, 66,255,119, 81, 65,255,116, 79, 63,255,113, 77, 61,255,109, 75, 60,255,106, 72, 57,255,102, 69, 55,255, - 98, 67, 53,255, 94, 64, 50,255, 90, 61, 48,255, 85, 58, 46,255, 80, 54, 43,255, 76, 50, 39,255, 71, 47, 37,255, 65, 43, 34,255, - 61, 40, 31,255, 56, 36, 27,255, 52, 34, 26,255, 49, 31, 23,255, 47, 30, 22,255, 49, 31, 23,255, 54, 35, 26,255, 41, 27, 22,255, - 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,130,101, 91,255,193,138,116,255,191,135,113,255,191,134,110,255,190,132,108,255,188,131,106,255,187,131,106,255, -186,130,105,255,185,129,104,255,184,128,104,255,183,127,104,255,182,126,102,255,181,126,102,255,179,125,102,255,178,124,100,255, -177,123,100,255,176,123, 99,255,175,122, 98,255,174,121, 98,255,172,120, 97,255,171,119, 96,255,170,118, 95,255,168,117, 94,255, -167,116, 94,255,166,116, 94,255,165,114, 92,255,164,113, 91,255,162,113, 91,255,161,111, 90,255,160,111, 89,255,158,110, 89,255, -157,109, 88,255,155,108, 87,255,154,106, 86,255,152,105, 85,255,151,104, 84,255,149,103, 83,255,147,102, 82,255,146,101, 81,255, -144, 99, 80,255,142, 98, 79,255,140, 97, 78,255,138, 95, 76,255,136, 93, 75,255,133, 92, 74,255,130, 90, 72,255,128, 88, 71,255, -125, 86, 69,255,122, 84, 67,255,119, 82, 66,255,117, 80, 64,255,113, 77, 62,255,110, 75, 60,255,106, 73, 58,255,102, 70, 55,255, - 98, 67, 53,255, 94, 64, 51,255, 90, 61, 48,255, 86, 58, 46,255, 81, 54, 43,255, 76, 50, 39,255, 71, 47, 37,255, 65, 43, 34,255, - 61, 40, 30,255, 55, 37, 27,255, 51, 33, 25,255, 48, 31, 23,255, 47, 29, 22,255, 49, 31, 23,255, 55, 36, 27,255, 33, 22, 17,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,130,102, 91,255,194,138,117,255,192,136,114,255,191,135,112,255,190,134,109,255,189,132,107,255,188,131,106,255, -187,131,105,255,186,129,105,255,185,128,105,255,184,129,104,255,182,127,103,255,181,127,103,255,181,126,102,255,179,125,101,255, -178,124,100,255,177,123, 99,255,175,122, 99,255,174,121, 98,255,174,120, 97,255,172,119, 96,255,171,119, 96,255,169,117, 95,255, -168,117, 95,255,167,116, 94,255,165,115, 93,255,164,114, 92,255,163,113, 91,255,161,112, 91,255,160,111, 90,255,159,111, 90,255, -157,109, 88,255,156,108, 88,255,155,107, 87,255,153,105, 86,255,152,105, 85,255,150,104, 84,255,148,103, 83,255,147,101, 82,255, -145,101, 81,255,143, 99, 79,255,141, 97, 78,255,139, 96, 77,255,136, 94, 76,255,134, 92, 74,255,132, 91, 73,255,129, 89, 71,255, -126, 87, 70,255,124, 85, 69,255,121, 83, 66,255,117, 80, 64,255,114, 78, 62,255,110, 76, 60,255,107, 73, 58,255,103, 70, 56,255, - 99, 68, 54,255, 95, 64, 51,255, 90, 61, 48,255, 86, 58, 46,255, 81, 55, 43,255, 76, 50, 39,255, 71, 47, 37,255, 66, 43, 34,255, - 61, 40, 30,255, 55, 36, 27,255, 51, 33, 25,255, 48, 30, 23,255, 47, 29, 22,255, 49, 31, 23,255, 56, 36, 28,255, 26, 17, 14,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,130,102, 92,255,194,139,119,255,192,137,116,255,191,136,114,255,191,134,110,255,189,133,108,255,188,131,107,255, -188,130,106,255,186,130,105,255,185,129,105,255,184,129,104,255,183,128,103,255,182,127,103,255,181,126,102,255,180,125,101,255, -178,124,101,255,178,124,100,255,176,122, 99,255,175,122, 99,255,173,121, 97,255,173,120, 97,255,171,119, 96,255,170,118, 95,255, -169,117, 95,255,168,116, 94,255,166,115, 93,255,165,114, 92,255,164,114, 92,255,162,112, 91,255,161,112, 90,255,160,111, 90,255, -159,110, 89,255,157,109, 88,255,156,108, 87,255,154,107, 86,255,153,106, 85,255,151,105, 85,255,150,104, 83,255,148,102, 82,255, -146,101, 81,255,144,100, 80,255,142, 98, 79,255,140, 97, 78,255,137, 95, 76,255,136, 93, 75,255,133, 92, 74,255,130, 90, 72,255, -128, 88, 70,255,125, 86, 69,255,122, 83, 67,255,119, 81, 65,255,115, 79, 63,255,112, 77, 61,255,108, 74, 59,255,104, 71, 56,255, -100, 68, 54,255, 96, 65, 51,255, 91, 62, 49,255, 86, 58, 46,255, 81, 55, 43,255, 76, 51, 40,255, 71, 47, 37,255, 65, 43, 34,255, - 61, 40, 30,255, 55, 36, 27,255, 51, 33, 25,255, 48, 30, 22,255, 47, 29, 22,255, 50, 32, 24,255, 56, 37, 29,255, 23, 15, 12,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,131,103, 93,255,195,140,121,255,192,138,118,255,192,137,115,255,191,135,112,255,190,134,110,255,189,132,108,255, -188,131,107,255,187,130,105,255,186,130,105,255,184,128,104,255,184,128,104,255,183,127,103,255,181,127,103,255,180,125,101,255, -179,125,101,255,178,124,101,255,177,123, 99,255,176,122, 99,255,174,122, 98,255,173,121, 97,255,172,120, 97,255,171,118, 96,255, -170,117, 95,255,169,117, 95,255,167,116, 93,255,166,115, 93,255,164,114, 92,255,163,113, 91,255,162,112, 91,255,160,111, 90,255, -159,110, 89,255,158,110, 89,255,157,109, 88,255,155,107, 87,255,154,106, 86,255,152,105, 85,255,151,104, 84,255,149,103, 83,255, -147,101, 82,255,146,101, 81,255,143, 99, 80,255,141, 97, 78,255,139, 96, 77,255,137, 94, 76,255,134, 92, 74,255,132, 91, 72,255, -129, 88, 71,255,126, 86, 69,255,122, 84, 67,255,119, 82, 66,255,116, 79, 63,255,113, 77, 62,255,109, 74, 59,255,105, 71, 57,255, -101, 69, 55,255, 96, 65, 52,255, 92, 62, 49,255, 88, 59, 47,255, 82, 55, 43,255, 77, 51, 40,255, 72, 47, 37,255, 66, 44, 34,255, - 61, 40, 31,255, 55, 36, 27,255, 50, 33, 25,255, 47, 30, 22,255, 47, 29, 22,255, 50, 32, 24,255, 56, 37, 29,255, 21, 15, 12,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,131,103, 93,255,196,140,122,255,193,138,119,255,193,137,117,255,192,136,114,255,190,134,111,255,190,133,109,255, -189,132,107,255,187,131,106,255,187,130,105,255,186,130,106,255,184,128,104,255,184,128,104,255,183,127,103,255,180,126,102,255, -180,126,102,255,179,124,101,255,177,124,100,255,176,123, 99,255,176,122, 98,255,174,121, 98,255,173,121, 98,255,171,120, 97,255, -170,118, 96,255,169,118, 95,255,168,117, 94,255,167,116, 94,255,166,115, 93,255,164,114, 92,255,163,113, 92,255,162,112, 91,255, -160,111, 90,255,159,111, 89,255,158,110, 89,255,156,108, 88,255,155,107, 87,255,154,107, 86,255,152,105, 84,255,150,104, 84,255, -149,103, 83,255,147,101, 82,255,144,100, 81,255,143, 99, 80,255,140, 97, 78,255,138, 95, 77,255,136, 94, 76,255,133, 91, 73,255, -130, 89, 72,255,127, 88, 71,255,124, 85, 68,255,120, 83, 66,255,117, 81, 65,255,114, 78, 62,255,110, 75, 60,255,105, 72, 57,255, -101, 69, 55,255, 97, 66, 52,255, 93, 62, 49,255, 88, 59, 47,255, 82, 56, 44,255, 78, 52, 40,255, 72, 48, 37,255, 66, 44, 34,255, - 61, 40, 31,255, 55, 36, 27,255, 50, 33, 25,255, 47, 30, 22,255, 46, 29, 22,255, 50, 32, 24,255, 55, 37, 29,255, 19, 14, 12,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,131,103, 94,255,196,141,123,255,193,139,120,255,193,138,118,255,192,137,115,255,191,135,112,255,190,134,110,255, -189,133,108,255,188,131,106,255,187,131,106,255,186,130,106,255,185,129,104,255,184,128,104,255,182,128,104,255,182,127,103,255, -180,126,102,255,180,125,102,255,178,124,100,255,177,124,100,255,176,122, 99,255,175,122, 99,255,174,121, 98,255,172,121, 98,255, -171,119, 96,255,170,118, 96,255,169,117, 94,255,167,116, 94,255,166,116, 93,255,165,114, 92,255,164,114, 92,255,163,113, 91,255, -162,112, 90,255,160,111, 90,255,159,111, 89,255,158,110, 88,255,156,108, 87,255,155,107, 87,255,153,106, 85,255,152,105, 84,255, -150,104, 84,255,148,103, 83,255,146,101, 81,255,144,100, 81,255,142, 98, 79,255,140, 96, 77,255,137, 94, 76,255,134, 93, 74,255, -131, 90, 72,255,128, 88, 71,255,125, 86, 70,255,122, 84, 67,255,119, 81, 65,255,115, 79, 63,255,111, 76, 61,255,107, 73, 58,255, -103, 70, 56,255, 99, 66, 53,255, 93, 63, 50,255, 89, 60, 47,255, 84, 56, 44,255, 78, 52, 41,255, 73, 48, 38,255, 67, 44, 34,255, - 61, 40, 31,255, 55, 36, 27,255, 50, 32, 25,255, 47, 29, 22,255, 46, 29, 21,255, 49, 32, 24,255, 56, 37, 30,255, 21, 17, 15,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,131,104, 95,255,196,142,125,255,193,140,122,255,193,139,119,255,192,137,117,255,191,136,114,255,191,135,111,255, -189,133,109,255,189,131,107,255,188,131,106,255,186,131,106,255,186,130,105,255,185,129,104,255,183,128,103,255,182,127,103,255, -181,126,102,255,180,126,101,255,179,124,101,255,178,124,100,255,177,123, 99,255,176,122, 99,255,175,121, 98,255,173,120, 97,255, -172,120, 97,255,171,119, 96,255,170,118, 95,255,169,117, 94,255,168,117, 94,255,166,115, 93,255,165,114, 92,255,164,114, 92,255, -163,113, 91,255,162,112, 90,255,160,111, 90,255,159,110, 89,255,158,109, 88,255,156,108, 87,255,155,107, 86,255,153,106, 86,255, -151,105, 85,255,149,103, 83,255,148,102, 82,255,145,100, 80,255,143, 99, 80,255,141, 97, 78,255,138, 95, 76,255,136, 94, 75,255, -133, 92, 73,255,130, 89, 71,255,127, 87, 70,255,123, 85, 68,255,120, 82, 66,255,116, 80, 64,255,112, 77, 62,255,108, 74, 59,255, -104, 71, 56,255,100, 68, 54,255, 95, 64, 51,255, 90, 60, 47,255, 84, 57, 45,255, 79, 53, 41,255, 73, 49, 38,255, 67, 44, 34,255, - 62, 40, 31,255, 55, 36, 27,255, 50, 33, 25,255, 47, 29, 22,255, 45, 28, 21,255, 49, 31, 23,255, 55, 37, 29,255, 20, 16, 13,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,131,104, 95,255,196,143,125,255,194,141,123,255,194,140,121,255,193,138,118,255,192,136,115,255,192,135,113,255, -191,134,110,255,190,132,108,255,189,132,107,255,188,131,106,255,186,130,105,255,185,129,104,255,185,129,105,255,183,128,104,255, -182,127,103,255,181,126,102,255,180,125,102,255,179,125,101,255,178,123,101,255,177,123,100,255,176,122, 99,255,175,121, 98,255, -173,121, 98,255,172,120, 97,255,171,119, 96,255,170,118, 95,255,169,118, 95,255,168,117, 94,255,166,115, 93,255,166,115, 93,255, -164,114, 92,255,163,113, 91,255,162,113, 91,255,160,111, 90,255,159,110, 89,255,158,110, 89,255,156,108, 87,255,154,107, 86,255, -153,106, 86,255,151,104, 84,255,149,103, 83,255,147,102, 82,255,145,100, 80,255,142, 98, 79,255,140, 97, 78,255,137, 94, 76,255, -134, 93, 74,255,132, 91, 73,255,128, 88, 70,255,125, 86, 69,255,122, 84, 67,255,118, 81, 65,255,113, 78, 62,255,109, 75, 59,255, -105, 72, 58,255,100, 69, 54,255, 96, 65, 51,255, 91, 61, 49,255, 85, 57, 45,255, 80, 53, 42,255, 74, 49, 38,255, 68, 45, 35,255, - 62, 41, 32,255, 56, 36, 28,255, 50, 33, 25,255, 46, 29, 22,255, 44, 28, 20,255, 48, 30, 22,255, 55, 36, 29,255, 20, 15, 13,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,131,104, 96,255,197,144,127,255,195,142,124,255,194,140,122,255,194,139,119,255,192,138,118,255,192,136,115,255, -190,135,112,255,190,133,109,255,189,132,107,255,188,132,107,255,187,130,106,255,186,130,105,255,185,128,104,255,184,128,104,255, -183,127,103,255,182,126,102,255,181,125,102,255,180,125,102,255,179,124,101,255,178,123,100,255,177,123,100,255,175,122, 99,255, -175,121, 98,255,173,120, 97,255,172,120, 97,255,171,119, 96,255,170,118, 95,255,169,117, 95,255,168,117, 94,255,167,116, 94,255, -166,115, 93,255,164,114, 92,255,163,113, 92,255,162,112, 91,255,160,111, 90,255,159,110, 89,255,158,110, 88,255,156,108, 87,255, -154,107, 86,255,153,106, 85,255,151,104, 84,255,149,103, 83,255,146,101, 82,255,144,100, 80,255,141, 98, 79,255,138, 95, 77,255, -136, 93, 75,255,133, 92, 73,255,130, 89, 72,255,127, 87, 69,255,123, 85, 68,255,119, 82, 65,255,115, 79, 63,255,111, 76, 61,255, -107, 73, 58,255,102, 70, 56,255, 98, 66, 52,255, 92, 62, 50,255, 87, 59, 47,255, 81, 55, 43,255, 75, 50, 40,255, 69, 46, 35,255, - 63, 41, 32,255, 57, 37, 28,255, 51, 33, 25,255, 46, 29, 22,255, 44, 28, 20,255, 47, 30, 22,255, 55, 37, 29,255, 23, 17, 15,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,132,105, 97,255,198,144,128,255,195,142,125,255,194,141,123,255,194,140,121,255,193,138,118,255,192,137,116,255, -191,136,113,255,190,134,111,255,190,133,109,255,189,131,106,255,188,131,107,255,187,130,106,255,186,129,105,255,185,128,104,255, -184,128,104,255,182,127,103,255,182,126,102,255,181,126,102,255,179,125,101,255,179,124,101,255,178,123,100,255,176,122, 99,255, -176,122, 99,255,175,121, 98,255,173,120, 97,255,173,120, 97,255,172,119, 96,255,170,118, 95,255,169,117, 95,255,169,116, 94,255, -167,116, 94,255,166,115, 93,255,164,114, 92,255,163,113, 91,255,162,112, 91,255,160,111, 90,255,159,110, 89,255,158,109, 88,255, -156,108, 87,255,154,107, 86,255,152,106, 85,255,150,104, 84,255,148,102, 82,255,146,101, 82,255,143, 99, 79,255,141, 97, 78,255, -137, 95, 76,255,134, 93, 74,255,131, 91, 73,255,128, 88, 71,255,124, 86, 68,255,121, 84, 67,255,117, 80, 64,255,113, 77, 62,255, -108, 74, 59,255,104, 71, 56,255, 99, 67, 53,255, 94, 63, 50,255, 88, 60, 47,255, 83, 56, 44,255, 76, 51, 40,255, 70, 47, 36,255, - 65, 42, 32,255, 58, 37, 29,255, 52, 33, 25,255, 47, 30, 22,255, 44, 28, 20,255, 46, 29, 21,255, 55, 36, 28,255, 25, 18, 16,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,132,105, 97,255,198,145,130,255,196,143,126,255,195,142,125,255,194,141,122,255,193,139,120,255,192,138,118,255, -192,137,115,255,191,135,113,255,190,134,110,255,189,133,108,255,188,131,107,255,188,131,107,255,187,130,105,255,185,130,105,255, -185,129,104,255,184,128,103,255,183,127,103,255,182,127,103,255,181,126,103,255,180,125,102,255,179,124,101,255,178,124,101,255, -177,123,100,255,176,122, 99,255,175,122, 99,255,174,121, 98,255,173,121, 98,255,172,120, 97,255,171,118, 96,255,170,118, 96,255, -168,117, 95,255,167,117, 94,255,166,116, 94,255,166,114, 92,255,164,114, 92,255,163,113, 91,255,161,111, 91,255,159,111, 90,255, -158,110, 89,255,155,108, 87,255,154,107, 86,255,152,106, 85,255,150,103, 83,255,147,102, 82,255,145,101, 81,255,142, 98, 79,255, -139, 96, 77,255,136, 94, 76,255,133, 92, 73,255,130, 89, 71,255,126, 87, 70,255,123, 84, 67,255,118, 81, 65,255,114, 78, 63,255, -110, 75, 60,255,105, 71, 57,255,100, 68, 53,255, 95, 64, 51,255, 90, 60, 48,255, 84, 56, 44,255, 78, 52, 41,255, 72, 48, 37,255, - 66, 43, 33,255, 59, 39, 30,255, 52, 34, 26,255, 47, 30, 22,255, 44, 27, 20,255, 45, 28, 21,255, 54, 35, 27,255, 29, 21, 18,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,132,105, 98,255,198,146,131,255,196,144,128,255,195,143,126,255,195,141,123,255,193,140,122,255,193,138,119,255, -192,137,116,255,191,136,115,255,191,135,112,255,190,133,109,255,189,132,108,255,188,131,107,255,187,131,106,255,186,130,105,255, -185,130,105,255,184,129,104,255,183,128,103,255,183,128,104,255,182,127,103,255,181,126,102,255,180,125,102,255,179,124,101,255, -178,124,100,255,177,123,100,255,176,122, 99,255,176,122, 99,255,174,121, 98,255,173,121, 98,255,173,120, 97,255,171,119, 96,255, -170,118, 95,255,169,118, 95,255,168,117, 94,255,167,116, 94,255,165,115, 93,255,164,114, 92,255,163,113, 91,255,161,112, 90,255, -160,111, 90,255,158,109, 88,255,156,109, 87,255,154,106, 86,255,151,105, 85,255,149,103, 83,255,147,102, 82,255,143, 99, 80,255, -141, 97, 78,255,138, 95, 76,255,135, 92, 74,255,131, 90, 72,255,128, 88, 70,255,124, 85, 68,255,120, 83, 66,255,116, 80, 64,255, -112, 77, 61,255,107, 73, 58,255,103, 70, 55,255, 97, 66, 52,255, 92, 62, 50,255, 86, 58, 46,255, 80, 54, 42,255, 74, 49, 38,255, - 67, 44, 34,255, 60, 39, 30,255, 54, 34, 26,255, 48, 30, 23,255, 44, 27, 20,255, 44, 27, 20,255, 52, 33, 25,255, 37, 27, 23,255, - 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,132,106, 98,255,199,146,132,255,196,145,129,255,195,144,127,255,195,143,125,255,194,141,122,255,193,140,120,255, -193,138,117,255,192,137,116,255,192,136,114,255,190,134,111,255,190,133,109,255,189,132,108,255,188,131,106,255,187,130,106,255, -186,130,105,255,185,129,104,255,184,129,104,255,183,128,103,255,182,127,104,255,182,127,103,255,181,126,102,255,180,125,102,255, -179,125,101,255,179,124,101,255,177,123,100,255,177,123,100,255,176,122, 99,255,175,122, 98,255,174,121, 98,255,173,121, 97,255, -172,119, 96,255,171,119, 96,255,169,117, 95,255,169,117, 95,255,168,116, 94,255,166,115, 93,255,164,114, 92,255,163,113, 91,255, -161,112, 90,255,160,111, 89,255,158,110, 89,255,155,108, 87,255,154,106, 86,255,151,105, 85,255,148,102, 82,255,146,101, 81,255, -143, 99, 80,255,139, 96, 77,255,136, 94, 76,255,133, 92, 74,255,129, 89, 71,255,126, 87, 70,255,122, 84, 67,255,118, 81, 65,255, -113, 77, 62,255,109, 74, 59,255,104, 71, 56,255, 98, 67, 54,255, 94, 63, 50,255, 89, 59, 47,255, 82, 55, 43,255, 75, 50, 39,255, - 69, 46, 35,255, 62, 41, 31,255, 55, 36, 27,255, 49, 31, 23,255, 44, 28, 20,255, 43, 27, 19,255, 49, 31, 23,255, 44, 31, 25,255, - 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,132,106, 99,255,199,147,132,255,196,145,130,255,196,144,128,255,196,143,126,255,195,141,123,255,194,140,121,255, -194,139,120,255,193,138,117,255,192,137,116,255,192,136,113,255,191,134,111,255,190,133,109,255,189,132,108,255,188,132,107,255, -187,131,106,255,187,131,106,255,186,130,105,255,185,129,104,255,184,129,104,255,183,128,104,255,183,128,104,255,182,127,103,255, -181,126,102,255,180,125,102,255,180,125,101,255,178,124,101,255,178,124,100,255,177,123, 99,255,176,122, 99,255,175,122, 99,255, -174,121, 98,255,173,120, 97,255,172,120, 97,255,170,118, 96,255,169,118, 95,255,168,117, 94,255,167,116, 94,255,165,115, 93,255, -163,114, 92,255,162,112, 90,255,160,110, 89,255,158,110, 89,255,155,107, 87,255,153,106, 85,255,151,104, 84,255,148,102, 82,255, -144,100, 80,255,142, 98, 79,255,138, 95, 77,255,135, 93, 75,255,132, 91, 73,255,128, 88, 71,255,123, 85, 68,255,120, 82, 65,255, -116, 79, 63,255,111, 75, 60,255,106, 72, 57,255,101, 68, 54,255, 96, 64, 51,255, 90, 60, 48,255, 84, 56, 44,255, 78, 51, 40,255, - 71, 47, 36,255, 64, 42, 32,255, 57, 37, 28,255, 50, 32, 24,255, 45, 28, 21,255, 42, 26, 19,255, 48, 30, 23,255, 48, 33, 26,255, - 2, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,133,107, 99,255,199,147,134,255,197,146,131,255,196,144,129,255,195,144,127,255,195,142,125,255,195,141,123,255, -194,140,121,255,193,139,119,255,193,137,117,255,192,136,115,255,191,135,113,255,191,134,111,255,190,133,109,255,189,132,108,255, -188,132,107,255,187,131,106,255,186,130,105,255,186,130,105,255,185,129,104,255,184,129,104,255,183,128,103,255,183,127,103,255, -182,127,103,255,182,126,103,255,181,126,102,255,180,125,101,255,179,125,101,255,179,124,100,255,178,124,100,255,177,123,100,255, -176,122, 99,255,174,122, 98,255,174,120, 98,255,172,120, 97,255,171,119, 96,255,170,118, 96,255,168,117, 95,255,167,117, 93,255, -166,115, 93,255,164,114, 92,255,162,112, 90,255,160,111, 90,255,158,109, 88,255,155,108, 87,255,153,106, 85,255,150,104, 84,255, -147,102, 82,255,144,100, 80,255,140, 97, 78,255,137, 95, 76,255,133, 92, 74,255,129, 89, 72,255,125, 87, 70,255,122, 84, 67,255, -118, 81, 64,255,113, 77, 62,255,108, 74, 59,255,103, 70, 56,255, 98, 66, 52,255, 92, 62, 50,255, 86, 58, 46,255, 79, 53, 42,255, - 73, 48, 38,255, 66, 43, 33,255, 59, 39, 30,255, 51, 33, 25,255, 45, 28, 21,255, 41, 26, 19,255, 45, 29, 22,255, 56, 38, 30,255, - 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,133,107,100,255,199,148,134,255,197,146,132,255,196,145,130,255,196,144,128,255,195,143,126,255,196,142,124,255, -195,141,122,255,193,139,120,255,193,139,118,255,193,137,116,255,191,136,115,255,192,135,113,255,190,134,111,255,190,133,109,255, -189,132,108,255,188,131,106,255,187,131,106,255,187,131,106,255,186,130,105,255,186,130,105,255,185,129,104,255,184,129,104,255, -184,128,103,255,183,127,103,255,182,126,103,255,182,126,102,255,181,126,102,255,180,125,101,255,179,125,101,255,179,124,101,255, -177,123,100,255,177,123, 99,255,175,122, 98,255,174,121, 98,255,173,121, 98,255,171,119, 97,255,171,119, 96,255,169,117, 95,255, -167,116, 94,255,166,115, 93,255,164,114, 92,255,161,112, 90,255,160,111, 89,255,157,109, 88,255,154,107, 86,255,152,105, 85,255, -149,103, 83,255,145,101, 81,255,143, 99, 80,255,139, 96, 77,255,135, 93, 75,255,132, 91, 73,255,128, 88, 71,255,124, 85, 68,255, -120, 82, 66,255,115, 79, 63,255,110, 75, 60,255,106, 71, 57,255,100, 68, 54,255, 95, 64, 50,255, 88, 59, 47,255, 82, 55, 43,255, - 74, 50, 39,255, 68, 45, 35,255, 60, 40, 30,255, 53, 35, 26,255, 46, 30, 22,255, 43, 27, 20,255, 44, 27, 20,255, 55, 36, 27,255, - 10, 8, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,133,107,101,255,200,149,136,255,197,147,132,255,197,146,131,255,197,145,129,255,196,144,128,255,196,142,126,255, -195,142,124,255,194,140,122,255,194,140,120,255,193,139,118,255,193,137,117,255,192,136,115,255,192,136,113,255,191,134,111,255, -190,134,109,255,190,133,108,255,189,132,107,255,188,132,107,255,188,132,107,255,187,131,106,255,187,131,106,255,187,130,106,255, -185,129,105,255,185,129,105,255,184,128,104,255,183,128,104,255,183,128,104,255,182,127,103,255,181,126,102,255,181,126,102,255, -180,125,101,255,179,124,101,255,178,124,101,255,177,123,100,255,175,122, 99,255,174,121, 98,255,173,120, 98,255,171,119, 96,255, -170,118, 96,255,168,116, 94,255,166,115, 93,255,164,114, 92,255,162,112, 90,255,160,111, 89,255,157,109, 88,255,154,107, 86,255, -151,104, 84,255,148,103, 83,255,145,100, 80,255,141, 97, 78,255,138, 95, 77,255,134, 92, 74,255,130, 89, 72,255,126, 87, 70,255, -122, 83, 67,255,118, 80, 64,255,113, 77, 61,255,107, 73, 58,255,102, 69, 55,255, 96, 65, 51,255, 91, 61, 48,255, 85, 57, 44,255, - 77, 51, 40,255, 70, 47, 36,255, 63, 41, 31,255, 55, 36, 27,255, 48, 30, 23,255, 43, 27, 20,255, 42, 27, 20,255, 50, 32, 23,255, - 34, 26, 23,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,133,107,100,255,200,149,136,255,198,148,134,255,197,146,132,255,197,146,130,255,197,144,129,255,196,144,127,255, -196,142,125,255,195,141,124,255,194,140,122,255,194,140,120,255,193,139,119,255,193,138,117,255,192,137,116,255,191,136,114,255, -191,135,112,255,190,134,111,255,190,134,109,255,190,133,109,255,189,132,108,255,189,132,107,255,188,131,107,255,188,131,106,255, -187,130,106,255,187,130,106,255,186,130,105,255,185,129,105,255,185,129,104,255,184,128,104,255,183,128,104,255,182,127,103,255, -182,127,103,255,181,126,102,255,180,125,101,255,179,125,101,255,178,123,100,255,176,123, 99,255,175,122, 98,255,173,120, 97,255, -172,119, 97,255,170,118, 96,255,168,116, 94,255,166,115, 93,255,164,114, 92,255,162,113, 90,255,159,110, 89,255,156,109, 88,255, -153,107, 86,255,151,104, 84,255,147,102, 82,255,144, 99, 80,255,139, 97, 78,255,137, 94, 75,255,133, 91, 72,255,128, 88, 71,255, -124, 85, 68,255,119, 81, 66,255,115, 79, 63,255,110, 75, 60,255,104, 71, 56,255, 99, 67, 53,255, 93, 63, 50,255, 86, 59, 46,255, - 80, 53, 42,255, 73, 49, 38,255, 65, 43, 34,255, 57, 37, 28,255, 49, 32, 24,255, 43, 27, 20,255, 42, 26, 19,255, 48, 30, 22,255, - 47, 33, 27,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,133,108,101,255,200,150,137,255,198,148,135,255,197,147,133,255,197,147,132,255,197,145,130,255,197,144,129,255, -196,144,127,255,196,142,125,255,195,141,124,255,194,140,122,255,194,140,121,255,193,139,120,255,193,138,118,255,192,137,117,255, -193,137,116,255,191,136,114,255,191,135,113,255,191,135,112,255,190,133,110,255,190,133,110,255,190,133,109,255,189,132,108,255, -189,131,107,255,188,131,106,255,188,131,106,255,187,130,105,255,187,130,105,255,186,130,105,255,185,129,105,255,184,128,104,255, -184,128,104,255,183,128,103,255,182,126,103,255,181,126,102,255,180,125,101,255,178,124,100,255,177,123,100,255,176,123, 99,255, -174,120, 98,255,172,120, 97,255,170,118, 96,255,168,117, 94,255,166,115, 93,255,164,114, 92,255,161,112, 90,255,159,110, 89,255, -156,108, 87,255,152,106, 85,255,150,104, 84,255,146,101, 81,255,142, 98, 79,255,138, 96, 77,255,134, 93, 75,255,130, 89, 72,255, -126, 87, 70,255,122, 84, 67,255,117, 80, 64,255,113, 76, 61,255,107, 73, 58,255,102, 69, 55,255, 96, 65, 51,255, 89, 60, 47,255, - 82, 56, 43,255, 75, 50, 39,255, 68, 45, 35,255, 59, 39, 30,255, 52, 33, 25,255, 45, 28, 21,255, 41, 25, 18,255, 45, 28, 21,255, - 60, 42, 33,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,133,108,102,255,201,150,138,255,198,149,135,255,198,148,134,255,198,147,133,255,197,146,131,255,196,145,129,255, -197,145,128,255,195,144,127,255,196,142,125,255,195,142,124,255,195,141,123,255,194,140,121,255,194,140,121,255,194,140,120,255, -193,139,118,255,193,138,117,255,193,138,116,255,192,137,115,255,192,136,114,255,192,136,113,255,192,135,113,255,191,135,111,255, -190,134,110,255,190,133,109,255,190,133,108,255,189,132,107,255,189,132,107,255,188,131,107,255,187,131,106,255,187,131,106,255, -186,130,105,255,185,129,105,255,184,129,104,255,183,128,104,255,182,127,103,255,181,126,102,255,179,125,101,255,177,123,100,255, -176,123, 99,255,175,121, 99,255,172,120, 97,255,171,119, 96,255,168,118, 94,255,166,115, 93,255,164,114, 92,255,161,112, 90,255, -158,110, 89,255,155,108, 87,255,152,105, 85,255,149,103, 83,255,145,100, 81,255,141, 97, 78,255,137, 94, 76,255,133, 92, 74,255, -129, 89, 71,255,125, 85, 68,255,120, 82, 66,255,115, 78, 63,255,110, 75, 59,255,104, 70, 56,255, 98, 66, 52,255, 92, 62, 49,255, - 85, 57, 45,255, 78, 52, 41,255, 71, 46, 36,255, 63, 41, 31,255, 54, 35, 27,255, 46, 29, 22,255, 41, 26, 19,255, 44, 27, 20,255, - 53, 33, 25,255, 16, 13, 12,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,134,108,102,255,201,151,139,255,199,149,137,255,198,148,135,255,197,148,133,255,197,147,132,255,197,146,131,255, -197,145,129,255,195,144,128,255,195,144,128,255,196,143,126,255,195,143,126,255,195,142,124,255,195,141,123,255,194,141,122,255, -194,140,121,255,194,140,121,255,194,139,120,255,193,139,119,255,193,139,118,255,193,138,117,255,193,138,117,255,192,138,116,255, -192,137,115,255,191,136,114,255,191,136,113,255,191,135,111,255,191,134,110,255,190,134,109,255,189,133,108,255,189,132,108,255, -189,132,107,255,187,131,106,255,186,130,105,255,186,129,105,255,184,128,104,255,183,127,103,255,181,127,103,255,180,126,102,255, -179,124,100,255,177,123,100,255,174,121, 99,255,173,120, 97,255,171,119, 96,255,168,117, 94,255,166,115, 93,255,163,114, 92,255, -160,112, 90,255,158,109, 88,255,155,107, 86,255,151,105, 84,255,147,102, 82,255,144, 99, 79,255,140, 96, 78,255,135, 93, 75,255, -132, 90, 72,255,127, 87, 70,255,122, 84, 67,255,118, 80, 64,255,113, 77, 61,255,107, 72, 58,255,101, 69, 54,255, 95, 64, 51,255, - 89, 59, 47,255, 81, 54, 43,255, 73, 48, 38,255, 65, 43, 33,255, 56, 37, 28,255, 49, 31, 23,255, 42, 26, 20,255, 41, 26, 19,255, - 50, 31, 23,255, 32, 23, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,134,108,102,255,202,151,139,255,199,149,137,255,199,149,136,255,199,149,135,255,197,147,133,255,198,147,132,255, -197,147,130,255,196,145,130,255,196,144,129,255,195,144,127,255,195,144,127,255,196,143,127,255,196,143,126,255,195,142,125,255, -195,142,125,255,195,141,124,255,194,141,123,255,194,141,123,255,194,140,122,255,194,140,121,255,195,140,121,255,193,139,120,255, -193,139,119,255,192,139,119,255,192,138,118,255,192,138,117,255,193,137,116,255,191,136,114,255,192,136,113,255,191,135,112,255, -190,134,110,255,189,133,108,255,189,132,106,255,188,131,106,255,187,130,105,255,186,129,105,255,184,128,104,255,182,127,103,255, -181,126,102,255,179,124,101,255,177,124,100,255,175,122, 98,255,173,120, 97,255,171,119, 96,255,168,117, 94,255,166,115, 93,255, -163,113, 92,255,160,111, 90,255,157,109, 88,255,153,106, 86,255,149,103, 83,255,146,101, 82,255,142, 98, 79,255,138, 95, 76,255, -134, 92, 74,255,129, 89, 72,255,125, 86, 69,255,120, 82, 65,255,115, 78, 63,255,110, 75, 59,255,103, 70, 56,255, 97, 66, 52,255, - 91, 62, 48,255, 84, 56, 44,255, 76, 51, 40,255, 68, 45, 35,255, 59, 39, 29,255, 50, 32, 24,255, 43, 27, 20,255, 40, 25, 19,255, - 47, 29, 22,255, 43, 30, 24,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,134,108,103,255,202,152,140,255,200,150,138,255,200,150,137,255,199,149,136,255,198,148,135,255,198,147,133,255, -198,147,132,255,197,146,132,255,197,146,131,255,197,146,130,255,196,145,130,255,196,145,129,255,196,145,128,255,196,145,128,255, -197,144,128,255,197,144,127,255,196,144,127,255,196,143,126,255,196,143,126,255,196,143,125,255,196,143,125,255,195,142,124,255, -195,142,124,255,195,141,124,255,195,141,123,255,194,141,122,255,194,140,121,255,194,139,120,255,193,139,118,255,193,137,117,255, -192,137,115,255,191,136,113,255,191,134,111,255,190,133,109,255,189,132,107,255,187,131,106,255,186,130,106,255,185,129,105,255, -183,128,104,255,182,127,103,255,180,125,101,255,178,124,101,255,175,122, 99,255,173,120, 98,255,171,119, 97,255,168,117, 94,255, -166,115, 93,255,163,113, 91,255,160,111, 89,255,156,108, 87,255,153,106, 86,255,149,103, 83,255,145,100, 81,255,141, 97, 78,255, -136, 94, 76,255,132, 91, 73,255,128, 87, 71,255,123, 84, 68,255,118, 80, 64,255,113, 77, 61,255,107, 72, 57,255,100, 68, 54,255, - 94, 63, 50,255, 87, 59, 46,255, 79, 54, 42,255, 71, 47, 37,255, 61, 40, 31,255, 53, 34, 26,255, 45, 28, 21,255, 40, 25, 18,255, - 44, 28, 21,255, 47, 31, 25,255, 5, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,134,109,103,255,202,152,141,255,200,151,139,255,200,150,138,255,200,150,137,255,199,148,136,255,198,148,134,255, -198,148,134,255,198,147,133,255,197,147,133,255,197,146,132,255,197,146,132,255,197,146,132,255,197,146,131,255,197,146,131,255, -197,146,131,255,196,146,131,255,196,146,131,255,196,146,131,255,196,146,129,255,196,145,129,255,196,145,130,255,196,145,128,255, -196,145,128,255,196,145,128,255,196,144,127,255,196,144,127,255,195,143,126,255,195,143,125,255,195,142,124,255,195,141,122,255, -194,140,121,255,193,139,119,255,193,138,117,255,192,136,115,255,191,135,112,255,190,133,109,255,189,132,107,255,187,130,106,255, -186,129,105,255,184,129,104,255,182,127,102,255,180,126,102,255,178,124,101,255,176,122,100,255,173,120, 97,255,171,119, 96,255, -168,117, 94,255,166,115, 93,255,163,113, 91,255,159,110, 89,255,156,108, 87,255,152,105, 85,255,148,102, 83,255,144, 99, 80,255, -139, 96, 77,255,135, 93, 75,255,130, 89, 72,255,126, 86, 69,255,121, 82, 66,255,115, 79, 63,255,110, 74, 60,255,104, 70, 56,255, - 97, 66, 52,255, 90, 61, 47,255, 83, 56, 44,255, 74, 50, 38,255, 65, 43, 33,255, 55, 36, 28,255, 47, 30, 22,255, 41, 25, 19,255, - 42, 27, 20,255, 49, 32, 25,255, 15, 11, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,134,109,103,255,202,152,141,255,201,151,139,255,200,151,138,255,199,150,138,255,199,150,136,255,200,149,136,255, -199,148,135,255,198,149,135,255,198,148,134,255,198,147,134,255,198,147,134,255,198,147,133,255,198,147,133,255,198,147,133,255, -198,148,133,255,198,148,133,255,198,148,134,255,198,148,134,255,198,148,133,255,199,148,133,255,198,147,133,255,197,147,133,255, -197,147,132,255,197,148,132,255,197,146,132,255,197,146,131,255,198,147,131,255,196,145,129,255,196,145,129,255,197,144,128,255, -195,143,126,255,195,142,125,255,195,141,123,255,193,139,120,255,193,138,117,255,192,137,115,255,191,135,112,255,190,133,108,255, -189,132,107,255,187,130,105,255,185,129,105,255,183,128,104,255,181,126,102,255,178,124,101,255,175,122, 99,255,173,120, 97,255, -171,119, 96,255,167,116, 94,255,165,115, 93,255,161,112, 91,255,158,109, 88,255,154,107, 86,255,150,104, 84,255,146,101, 81,255, -142, 98, 79,255,138, 95, 76,255,133, 92, 73,255,128, 88, 71,255,124, 85, 68,255,119, 81, 65,255,113, 77, 61,255,106, 73, 58,255, -100, 68, 54,255, 93, 63, 50,255, 86, 58, 46,255, 78, 52, 41,255, 68, 45, 35,255, 59, 38, 29,255, 50, 31, 24,255, 42, 26, 19,255, - 40, 25, 18,255, 49, 32, 23,255, 21, 14, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,134,109,103,255,202,153,141,255,200,151,140,255,200,151,139,255,199,151,139,255,200,150,138,255,199,150,137,255, -200,149,136,255,200,149,136,255,200,149,136,255,199,149,136,255,199,149,136,255,199,149,136,255,199,149,137,255,199,149,137,255, -200,150,137,255,200,150,137,255,200,150,137,255,200,150,137,255,200,150,138,255,200,150,137,255,200,150,137,255,200,150,137,255, -200,150,137,255,200,150,137,255,200,150,136,255,199,149,136,255,199,149,136,255,199,148,135,255,199,148,134,255,198,147,133,255, -198,146,131,255,197,145,129,255,196,144,128,255,196,143,126,255,195,141,123,255,194,140,120,255,193,138,118,255,191,136,114,255, -191,134,111,255,189,133,108,255,188,131,106,255,185,129,105,255,183,128,104,255,181,126,102,255,178,124,101,255,176,123,100,255, -174,121, 98,255,170,119, 96,255,167,116, 94,255,164,114, 92,255,161,112, 91,255,157,109, 88,255,154,106, 86,255,149,103, 83,255, -145,100, 81,255,141, 97, 78,255,137, 94, 76,255,131, 91, 73,255,127, 87, 70,255,122, 83, 67,255,116, 79, 63,255,110, 75, 60,255, -103, 71, 56,255, 97, 66, 52,255, 89, 61, 48,255, 81, 54, 43,255, 72, 47, 37,255, 62, 41, 32,255, 53, 34, 25,255, 44, 27, 20,255, - 39, 24, 17,255, 45, 28, 21,255, 39, 29, 24,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,134,109,103,255,202,153,142,255,200,152,140,255,201,151,140,255,200,150,139,255,199,150,138,255,200,150,138,255, -200,150,138,255,200,149,137,255,200,150,137,255,199,150,137,255,199,150,137,255,200,150,138,255,200,150,139,255,200,151,139,255, -200,152,140,255,200,152,140,255,201,152,141,255,201,152,140,255,201,152,141,255,201,152,142,255,201,153,142,255,201,153,142,255, -201,153,142,255,201,153,142,255,201,153,141,255,201,152,141,255,201,152,140,255,201,152,140,255,201,151,139,255,200,150,138,255, -199,150,137,255,199,148,135,255,198,148,133,255,198,146,132,255,197,145,129,255,196,143,126,255,195,142,124,255,194,140,120,255, -192,138,116,255,192,135,112,255,190,133,108,255,188,131,107,255,186,130,105,255,183,128,103,255,182,126,102,255,178,125,101,255, -176,123,100,255,174,120, 97,255,170,119, 96,255,167,116, 94,255,164,114, 92,255,161,111, 90,255,157,108, 88,255,152,106, 85,255, -148,103, 83,255,144, 99, 80,255,139, 96, 77,255,135, 92, 74,255,130, 89, 72,255,124, 85, 69,255,119, 81, 65,255,113, 77, 62,255, -107, 73, 58,255,100, 68, 54,255, 93, 63, 50,255, 84, 57, 45,255, 76, 50, 40,255, 66, 43, 34,255, 56, 36, 28,255, 46, 29, 22,255, - 40, 25, 17,255, 42, 26, 19,255, 48, 33, 26,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,134,109,104,255,202,153,142,255,201,153,140,255,201,152,140,255,200,152,140,255,200,151,139,255,200,150,138,255, -199,150,138,255,199,151,139,255,199,151,139,255,200,151,138,255,201,151,140,255,201,152,140,255,201,152,141,255,200,153,142,255, -201,153,143,255,202,154,143,255,202,154,144,255,202,155,144,255,202,155,145,255,203,154,145,255,203,155,146,255,203,156,146,255, -203,156,146,255,203,156,146,255,203,156,146,255,203,156,146,255,203,155,145,255,203,155,145,255,202,154,144,255,202,154,143,255, -202,152,142,255,201,152,141,255,201,151,139,255,199,149,137,255,199,148,134,255,198,147,132,255,197,145,129,255,196,143,126,255, -195,141,123,255,193,139,119,255,192,136,114,255,191,134,110,255,188,132,107,255,187,130,106,255,185,129,105,255,181,126,102,255, -179,125,101,255,175,123, 99,255,173,120, 97,255,170,118, 96,255,166,115, 93,255,163,114, 92,255,159,110, 89,255,155,108, 87,255, -151,105, 85,255,147,101, 82,255,143, 98, 79,255,138, 95, 76,255,133, 91, 73,255,128, 87, 70,255,123, 84, 67,255,116, 80, 64,255, -111, 76, 60,255,104, 70, 56,255, 96, 66, 52,255, 89, 60, 48,255, 80, 53, 42,255, 70, 46, 36,255, 60, 39, 30,255, 50, 32, 24,255, - 41, 26, 19,255, 40, 24, 18,255, 53, 35, 27,255, 10, 8, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,134,109,103,255,202,153,142,255,201,151,140,255,200,151,140,255,201,151,140,255,201,152,140,255,200,151,139,255, -200,151,139,255,200,152,140,255,200,152,140,255,201,152,140,255,200,152,140,255,201,153,141,255,202,153,142,255,202,154,143,255, -202,154,145,255,203,155,145,255,203,155,146,255,203,156,147,255,203,156,147,255,204,157,148,255,204,157,149,255,204,157,149,255, -204,158,150,255,204,158,150,255,205,158,150,255,205,158,150,255,204,158,150,255,204,157,149,255,204,157,149,255,204,156,148,255, -204,156,146,255,203,155,145,255,202,154,144,255,202,153,143,255,201,152,140,255,200,150,138,255,199,148,136,255,198,147,132,255, -197,145,129,255,196,143,125,255,194,140,120,255,193,138,116,255,191,135,111,255,189,132,107,255,187,130,106,255,184,128,104,255, -181,126,102,255,179,125,101,255,176,122, 99,255,173,120, 97,255,169,118, 95,255,166,115, 94,255,163,113, 92,255,158,110, 89,255, -155,107, 86,255,151,104, 84,255,146,101, 81,255,141, 97, 78,255,136, 94, 75,255,131, 90, 72,255,126, 87, 69,255,120, 83, 66,255, -114, 79, 62,255,107, 73, 59,255,100, 69, 54,255, 93, 63, 49,255, 84, 57, 44,255, 74, 50, 39,255, 64, 42, 32,255, 53, 34, 26,255, - 44, 27, 20,255, 39, 24, 18,255, 45, 28, 20,255, 41, 32, 27,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,134,109,103,255,202,153,142,255,201,152,140,255,201,151,140,255,200,152,140,255,200,151,139,255,200,152,140,255, -201,152,140,255,201,151,140,255,201,151,140,255,200,153,140,255,201,152,141,255,201,153,143,255,201,154,144,255,202,155,144,255, -202,155,146,255,203,156,147,255,203,156,148,255,204,158,150,255,204,158,151,255,204,158,151,255,205,159,152,255,205,160,152,255, -205,160,153,255,205,160,154,255,206,161,154,255,206,161,154,255,206,161,154,255,206,161,154,255,206,160,153,255,206,160,152,255, -205,160,151,255,205,158,150,255,204,158,150,255,204,156,147,255,203,155,146,255,202,154,144,255,201,152,141,255,200,151,138,255, -199,149,134,255,198,146,132,255,196,144,127,255,195,141,122,255,193,138,118,255,191,135,112,255,189,132,108,255,187,130,106,255, -184,128,104,255,182,126,102,255,179,124,101,255,175,122, 99,255,173,120, 97,255,169,117, 95,255,166,115, 93,255,162,113, 91,255, -158,109, 88,255,154,106, 86,255,149,103, 83,255,144,100, 80,255,139, 97, 77,255,134, 93, 75,255,129, 90, 71,255,124, 85, 68,255, -118, 81, 64,255,111, 76, 61,255,104, 71, 56,255, 97, 66, 52,255, 89, 60, 48,255, 79, 53, 41,255, 69, 46, 36,255, 58, 37, 29,255, - 47, 29, 22,255, 39, 25, 18,255, 42, 26, 19,255, 52, 35, 27,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,134,109,103,255,202,153,141,255,200,151,140,255,199,152,139,255,199,152,140,255,200,150,140,255,199,150,140,255, -199,151,140,255,201,151,140,255,201,151,140,255,200,152,141,255,201,153,143,255,202,154,143,255,202,154,146,255,203,156,146,255, -203,156,147,255,204,157,149,255,205,158,150,255,204,158,151,255,206,160,153,255,206,160,154,255,205,161,154,255,207,162,156,255, -206,162,156,255,207,163,157,255,208,163,157,255,208,163,158,255,208,163,158,255,208,163,158,255,208,163,157,255,207,163,157,255, -207,162,156,255,207,162,155,255,207,161,154,255,206,160,152,255,205,159,151,255,205,158,149,255,203,156,146,255,203,154,145,255, -202,153,141,255,200,150,137,255,199,147,134,255,197,145,129,255,195,142,125,255,194,139,119,255,192,136,114,255,190,133,109,255, -187,131,106,255,185,129,105,255,182,127,102,255,178,124,101,255,176,122, 99,255,172,120, 97,255,168,117, 95,255,165,114, 92,255, -161,112, 91,255,157,109, 88,255,153,105, 85,255,148,103, 83,255,143, 99, 80,255,138, 95, 76,255,133, 92, 74,255,127, 88, 70,255, -122, 84, 66,255,116, 79, 63,255,108, 74, 59,255,102, 69, 55,255, 93, 63, 50,255, 84, 56, 44,255, 74, 49, 38,255, 63, 41, 32,255, - 51, 33, 25,255, 41, 26, 18,255, 39, 24, 18,255, 50, 32, 24,255, 12, 9, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,134,108,102,255,202,152,140,255,200,151,139,255,199,151,139,255,200,151,139,255,200,151,139,255,200,151,139,255, -200,151,139,255,200,152,140,255,200,152,140,255,200,153,142,255,201,153,143,255,202,154,144,255,203,154,146,255,203,156,147,255, -203,156,148,255,203,158,149,255,205,159,151,255,205,160,153,255,205,161,154,255,207,162,155,255,207,162,157,255,208,163,158,255, -208,164,159,255,208,164,160,255,208,164,160,255,209,165,161,255,209,165,161,255,209,165,161,255,209,165,162,255,209,165,161,255, -209,165,161,255,209,165,160,255,208,164,159,255,208,163,158,255,207,162,156,255,206,161,154,255,206,159,152,255,205,158,150,255, -203,156,147,255,202,154,143,255,201,151,140,255,199,150,136,255,198,146,131,255,196,143,126,255,194,140,121,255,192,137,115,255, -191,133,110,255,188,131,106,255,185,129,104,255,181,127,103,255,178,124,101,255,175,122, 99,255,171,120, 97,255,168,117, 95,255, -165,115, 92,255,160,112, 90,255,156,108, 87,255,152,105, 84,255,146,102, 82,255,142, 98, 79,255,137, 94, 76,255,131, 91, 73,255, -125, 87, 69,255,120, 82, 66,255,113, 78, 62,255,106, 73, 58,255, 98, 67, 53,255, 89, 60, 48,255, 79, 53, 42,255, 68, 45, 35,255, - 57, 36, 28,255, 45, 29, 21,255, 39, 24, 17,255, 45, 28, 21,255, 32, 22, 18,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,133,108,102,255,201,152,139,255,200,150,138,255,199,150,138,255,200,150,138,255,200,150,138,255,200,150,138,255, -200,150,139,255,200,151,139,255,201,151,139,255,201,152,141,255,201,153,142,255,201,153,143,255,203,154,145,255,202,156,147,255, -203,157,149,255,204,158,150,255,205,159,152,255,205,160,154,255,206,161,155,255,207,162,157,255,207,163,158,255,208,164,160,255, -209,165,161,255,209,166,162,255,209,166,163,255,210,167,164,255,210,167,164,255,210,167,165,255,210,168,165,255,210,168,165,255, -210,168,165,255,210,167,164,255,210,167,164,255,209,167,163,255,209,165,161,255,208,164,160,255,208,163,158,255,207,161,155,255, -205,160,153,255,205,158,150,255,203,155,145,255,202,154,142,255,201,151,138,255,198,147,133,255,197,145,128,255,195,141,123,255, -193,138,116,255,191,134,110,255,188,131,106,255,185,129,104,255,182,127,103,255,178,124,100,255,174,122, 98,255,171,120, 97,255, -168,116, 94,255,164,113, 92,255,160,111, 90,255,155,108, 87,255,151,104, 85,255,145,101, 81,255,141, 97, 78,255,135, 93, 75,255, -130, 89, 71,255,124, 85, 68,255,117, 80, 64,255,110, 75, 60,255,102, 70, 56,255, 94, 63, 50,255, 85, 57, 45,255, 73, 49, 38,255, - 62, 40, 31,255, 50, 32, 24,255, 40, 25, 18,255, 41, 26, 19,255, 43, 29, 22,255, 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,133,107,101,255,201,150,138,255,199,149,136,255,199,149,136,255,199,149,136,255,199,149,136,255,199,149,136,255, -199,149,137,255,199,150,138,255,199,150,138,255,199,151,139,255,200,152,141,255,201,153,142,255,201,154,144,255,203,156,146,255, -204,157,148,255,203,157,150,255,205,159,152,255,205,160,154,255,207,162,156,255,207,163,158,255,207,164,159,255,209,165,161,255, -209,166,163,255,209,167,164,255,211,168,165,255,210,169,166,255,211,169,167,255,212,170,168,255,212,170,168,255,212,171,168,255, -212,170,169,255,212,170,168,255,212,170,167,255,212,170,167,255,211,169,165,255,211,168,164,255,209,166,163,255,209,165,161,255, -208,163,158,255,207,161,155,255,205,160,152,255,204,157,148,255,202,154,145,255,201,152,139,255,200,149,135,255,197,146,130,255, -195,143,124,255,193,138,118,255,191,135,111,255,188,131,107,255,186,130,105,255,182,127,103,255,178,124,100,255,175,121, 98,255, -171,119, 96,255,167,116, 94,255,163,113, 91,255,159,110, 89,255,155,107, 86,255,149,103, 83,255,145,100, 81,255,139, 96, 77,255, -134, 92, 74,255,128, 88, 71,255,121, 84, 67,255,115, 79, 63,255,108, 73, 58,255,100, 67, 54,255, 89, 61, 48,255, 79, 53, 42,255, - 68, 44, 34,255, 56, 36, 27,255, 43, 27, 20,255, 38, 23, 17,255, 46, 29, 22,255, 12, 9, 7,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,132,107, 99,255,199,149,134,255,197,147,133,255,198,147,133,255,198,147,133,255,198,148,133,255,198,148,134,255, -198,148,135,255,198,148,135,255,199,149,136,255,199,150,138,255,199,151,139,255,200,152,140,255,201,153,142,255,202,154,144,255, -203,156,146,255,204,157,149,255,205,159,151,255,205,160,153,255,206,161,155,255,207,162,158,255,208,164,160,255,209,166,162,255, -210,167,163,255,210,168,165,255,211,169,166,255,211,169,167,255,211,170,169,255,212,171,169,255,212,171,170,255,213,172,171,255, -213,172,171,255,213,172,172,255,213,172,171,255,213,172,170,255,212,171,169,255,212,170,169,255,212,170,167,255,211,168,165,255, -210,167,163,255,209,165,161,255,208,163,158,255,206,161,155,255,205,159,151,255,204,156,147,255,201,153,142,255,200,150,137,255, -198,146,132,255,196,143,126,255,194,139,119,255,191,135,112,255,189,131,107,255,186,130,105,255,182,127,103,255,178,124,100,255, -174,122, 99,255,171,119, 96,255,167,116, 94,255,163,113, 91,255,159,110, 89,255,154,106, 86,255,149,103, 83,255,144, 99, 80,255, -138, 95, 77,255,132, 92, 73,255,126, 87, 70,255,120, 82, 66,255,113, 77, 61,255,104, 71, 57,255, 96, 65, 51,255, 85, 57, 45,255, - 74, 49, 38,255, 61, 40, 31,255, 49, 31, 23,255, 39, 24, 17,255, 45, 29, 22,255, 24, 17, 14,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 61,255,132,105, 97,255,198,146,131,255,197,145,129,255,197,145,129,255,197,145,129,255,197,145,129,255,197,146,130,255, -197,146,130,255,197,146,132,255,197,147,133,255,198,148,134,255,199,149,136,255,199,150,137,255,200,151,139,255,201,152,142,255, -202,154,144,255,203,156,146,255,203,157,149,255,204,159,151,255,206,160,153,255,206,162,156,255,207,164,158,255,208,165,161,255, -209,166,163,255,210,168,165,255,211,169,167,255,212,170,168,255,212,171,169,255,213,172,171,255,213,173,172,255,213,173,173,255, -214,173,173,255,214,174,174,255,214,174,174,255,214,174,174,255,214,174,173,255,213,173,173,255,213,172,172,255,213,172,170,255, -212,170,168,255,211,169,166,255,210,167,163,255,209,165,161,255,208,163,157,255,206,160,152,255,204,158,148,255,203,154,144,255, -201,151,139,255,199,148,133,255,197,144,127,255,195,140,121,255,192,136,114,255,189,132,108,255,186,130,105,255,183,127,103,255, -178,124,101,255,175,122, 98,255,171,119, 96,255,168,116, 94,255,163,113, 91,255,158,110, 89,255,153,106, 86,255,148,103, 82,255, -143, 98, 80,255,137, 94, 76,255,131, 90, 72,255,125, 85, 68,255,118, 81, 64,255,109, 75, 59,255,101, 69, 55,255, 91, 61, 49,255, - 80, 54, 42,255, 68, 45, 35,255, 55, 35, 27,255, 43, 26, 19,255, 40, 25, 18,255, 42, 30, 24,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,131,103, 94,255,196,143,126,255,195,142,124,255,194,141,124,255,194,142,124,255,195,142,124,255,195,142,125,255, -195,142,125,255,195,142,126,255,196,143,127,255,196,144,129,255,197,145,130,255,197,147,132,255,198,148,134,255,199,150,137,255, -200,151,139,255,200,152,142,255,202,155,145,255,203,156,147,255,204,157,150,255,205,160,153,255,206,161,156,255,207,163,158,255, -208,165,160,255,209,166,163,255,210,168,165,255,211,169,167,255,211,170,169,255,213,172,172,255,214,173,173,255,213,173,174,255, -215,175,175,255,214,176,176,255,215,176,176,255,216,176,177,255,216,176,177,255,215,176,176,255,215,175,175,255,214,174,174,255, -214,174,172,255,213,172,171,255,212,171,169,255,211,169,166,255,210,166,163,255,208,165,159,255,207,162,155,255,205,159,151,255, -203,156,146,255,201,152,141,255,199,148,135,255,197,145,129,255,195,141,123,255,192,137,115,255,190,133,109,255,187,130,106,255, -183,127,103,255,179,124,101,255,175,122, 98,255,171,119, 96,255,167,116, 94,255,162,112, 91,255,157,109, 88,255,153,106, 85,255, -147,102, 82,255,142, 98, 79,255,135, 93, 75,255,130, 89, 71,255,123, 84, 67,255,116, 79, 63,255,106, 73, 58,255, 97, 66, 52,255, - 86, 58, 46,255, 75, 50, 38,255, 62, 40, 31,255, 48, 30, 23,255, 39, 24, 17,255, 54, 37, 30,255, 3, 2, 2,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,129,101, 91,255,193,137,118,255,192,137,117,255,192,137,117,255,192,137,116,255,192,137,117,255,192,137,117,255, -192,138,117,255,192,138,118,255,193,138,119,255,193,139,120,255,194,140,121,255,194,141,124,255,195,142,125,255,196,144,128,255, -196,146,130,255,197,148,133,255,199,149,136,255,200,151,140,255,201,154,143,255,203,156,146,255,204,158,150,255,205,159,153,255, -206,162,156,255,207,164,159,255,209,166,162,255,210,167,165,255,211,169,167,255,212,171,169,255,213,173,171,255,213,174,174,255, -214,175,175,255,214,176,176,255,215,176,177,255,215,177,178,255,216,177,179,255,216,177,179,255,216,177,178,255,216,177,177,255, -215,176,176,255,215,175,175,255,214,174,173,255,213,172,171,255,212,170,168,255,211,169,165,255,209,166,162,255,208,163,158,255, -206,160,153,255,204,157,148,255,202,153,143,255,200,150,138,255,197,146,131,255,196,142,125,255,193,138,117,255,190,134,110,255, -187,131,106,255,183,128,104,255,180,125,101,255,176,122, 98,255,172,119, 96,255,167,116, 94,255,162,113, 91,255,157,109, 88,255, -152,105, 85,255,147,101, 82,255,140, 97, 78,255,134, 93, 74,255,128, 88, 71,255,120, 83, 66,255,113, 77, 62,255,103, 70, 56,255, - 94, 63, 50,255, 82, 55, 43,255, 69, 45, 35,255, 54, 35, 27,255, 42, 26, 19,255, 46, 28, 21,255, 21, 16, 14,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,127, 98, 86,255,188,132,108,255,187,131,108,255,187,131,108,255,187,131,108,255,187,131,108,255,187,131,108,255, -187,132,108,255,188,132,108,255,189,132,109,255,189,133,109,255,189,133,110,255,189,134,111,255,191,135,112,255,191,135,115,255, -192,138,118,255,192,139,121,255,194,142,124,255,195,144,127,255,196,146,132,255,199,149,136,255,200,151,141,255,201,154,144,255, -202,156,148,255,205,159,152,255,206,162,155,255,207,164,159,255,209,167,163,255,210,168,166,255,211,170,169,255,213,172,172,255, -214,174,173,255,214,175,175,255,215,176,177,255,216,177,179,255,216,178,179,255,217,178,180,255,217,178,180,255,216,178,180,255, -216,178,180,255,216,177,179,255,215,176,177,255,215,175,175,255,214,174,173,255,213,172,170,255,212,170,168,255,211,167,164,255, -209,165,160,255,207,162,155,255,205,159,150,255,203,155,145,255,201,152,139,255,199,148,133,255,196,143,127,255,194,139,119,255, -191,134,111,255,188,131,106,255,183,128,104,255,179,125,101,255,175,122, 98,255,171,120, 97,255,167,116, 94,255,162,113, 90,255, -157,109, 88,255,152,105, 85,255,146,101, 81,255,140, 96, 77,255,134, 92, 73,255,126, 86, 69,255,118, 81, 65,255,110, 75, 60,255, - 99, 67, 53,255, 89, 60, 47,255, 76, 50, 39,255, 61, 40, 30,255, 47, 30, 22,255, 42, 26, 19,255, 42, 29, 24,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,123, 95, 83,255,181,126,102,255,180,126,102,255,179,125,101,255,179,125,101,255,179,125,101,255,179,125,101,255, -179,125,101,255,179,125,101,255,179,124,101,255,179,124,101,255,180,126,102,255,180,125,101,255,180,125,102,255,181,126,102,255, -183,127,103,255,184,128,104,255,185,129,106,255,186,131,109,255,189,134,113,255,191,137,117,255,193,140,122,255,196,144,128,255, -198,148,134,255,200,151,139,255,202,154,144,255,204,157,149,255,205,160,154,255,207,163,158,255,209,166,162,255,211,169,166,255, -212,170,169,255,213,173,172,255,214,175,175,255,215,175,176,255,216,177,178,255,217,178,180,255,216,178,182,255,217,179,182,255, -218,180,182,255,217,179,182,255,217,179,180,255,217,178,179,255,216,176,177,255,215,175,175,255,214,173,173,255,212,171,170,255, -211,169,166,255,210,167,162,255,208,163,158,255,206,160,153,255,204,156,147,255,201,153,141,255,199,149,135,255,197,145,129,255, -194,140,121,255,191,136,114,255,189,132,107,255,185,129,104,255,181,125,102,255,176,123, 99,255,172,120, 97,255,167,116, 94,255, -162,112, 90,255,157,108, 88,255,152,105, 84,255,145,100, 81,255,139, 96, 77,255,132, 90, 73,255,124, 85, 68,255,116, 79, 63,255, -107, 72, 57,255, 96, 64, 52,255, 84, 56, 44,255, 69, 45, 35,255, 53, 35, 26,255, 42, 26, 19,255, 53, 35, 28,255, 4, 4, 4,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 61, 61, 61,255, 80, 65, 59,255,103, 74, 60,255,108, 75, 62,255,113, 79, 65,255,121, 85, 70,255,121, 85, 70,255,121, 84, 70,255, -121, 84, 70,255,120, 85, 70,255,115, 82, 67,255,113, 80, 65,255,107, 75, 62,255,105, 74, 61,255, 98, 69, 57,255, 97, 69, 56,255, - 94, 66, 54,255, 95, 67, 56,255, 91, 64, 53,255, 92, 65, 53,255, 98, 69, 57,255,100, 70, 57,255,110, 78, 64,255,120, 85, 71,255, -138, 98, 83,255,152,109, 94,255,168,123,107,255,188,138,122,255,197,146,132,255,201,152,140,255,204,157,148,255,206,161,155,255, -207,164,159,255,210,168,165,255,212,171,169,255,213,173,173,255,214,175,176,255,216,177,178,255,216,178,180,255,217,179,181,255, -218,180,182,255,218,180,183,255,218,180,182,255,218,180,182,255,217,179,181,255,216,178,179,255,215,177,177,255,215,174,175,255, -214,172,172,255,213,170,168,255,210,168,165,255,209,165,161,255,207,161,155,255,205,158,150,255,202,154,144,255,200,151,138,255, -198,146,131,255,195,142,123,255,193,137,116,255,189,133,108,255,186,129,105,255,181,127,102,255,176,123, 99,255,173,120, 97,255, -168,116, 94,255,162,112, 91,255,157,108, 88,255,151,104, 84,255,145,100, 80,255,137, 94, 76,255,130, 89, 72,255,122, 84, 67,255, -113, 77, 61,255,103, 70, 56,255, 91, 62, 49,255, 77, 51, 40,255, 61, 40, 31,255, 46, 29, 22,255, 45, 28, 21,255, 17, 13, 11,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 29, 29, 29,255, 1, 1, 1,255, 3, 2, 2,255, 4, 3, 3,255, 6, 5, 4,255, 6, 5, 4,255, 6, 4, 4,255, - 6, 4, 4,255, 6, 5, 4,255, 5, 4, 3,255, 4, 3, 3,255, 3, 2, 2,255, 2, 2, 2,255, 1, 1, 1,255, 0, 1, 1,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 2, 1, 1,255, 4, 3, 2,255, - 8, 6, 5,255, 11, 8, 6,255, 15, 11, 9,255, 21, 15, 13,255, 40, 29, 26,255, 82, 61, 53,255,130, 97, 85,255,185,138,122,255, -200,150,137,255,204,156,147,255,207,162,157,255,208,165,162,255,211,170,168,255,213,173,172,255,214,175,176,255,215,177,179,255, -217,179,181,255,218,180,182,255,218,181,183,255,218,181,183,255,217,180,183,255,217,180,182,255,217,179,181,255,216,178,179,255, -216,176,177,255,214,174,174,255,213,172,171,255,211,170,167,255,210,167,163,255,208,164,158,255,206,160,153,255,203,156,146,255, -201,152,140,255,199,147,133,255,196,143,126,255,193,138,117,255,190,133,110,255,186,130,105,255,182,127,103,255,177,123,100,255, -172,121, 97,255,168,116, 94,255,162,112, 91,255,157,108, 87,255,150,104, 83,255,143, 99, 80,255,136, 94, 75,255,128, 88, 71,255, -119, 82, 65,255,110, 75, 60,255, 98, 67, 53,255, 86, 57, 45,255, 70, 46, 36,255, 52, 34, 26,255, 43, 27, 20,255, 29, 20, 16,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 16, 12, 11,255, 83, 62, 54,255,147,110, 99,255,180,136,126,255,196,152,144,255,207,163,158,255,210,168,165,255,213,172,171,255, -213,174,174,255,215,176,179,255,217,179,181,255,217,180,183,255,219,180,183,255,219,181,184,255,218,181,183,255,218,180,183,255, -217,179,181,255,217,177,179,255,215,176,176,255,214,174,173,255,213,171,169,255,211,168,165,255,209,165,161,255,207,162,155,255, -204,157,149,255,202,154,143,255,200,149,136,255,197,144,129,255,194,140,120,255,191,134,111,255,187,131,106,255,182,127,103,255, -178,124,101,255,173,120, 98,255,168,116, 94,255,162,112, 91,255,156,108, 87,255,150,103, 83,255,142, 98, 79,255,135, 93, 75,255, -126, 87, 69,255,117, 80, 64,255,106, 72, 57,255, 93, 64, 50,255, 78, 53, 41,255, 60, 40, 30,255, 46, 29, 22,255, 37, 24, 19,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 5, 4, 3,255, 55, 41, 36,255,102, 78, 72,255,158,122,115,255,199,155,148,255, -210,166,162,255,213,171,170,255,213,173,174,255,216,177,179,255,217,179,182,255,218,180,183,255,218,181,184,255,219,181,183,255, -218,180,183,255,217,180,182,255,217,178,181,255,216,177,178,255,215,175,176,255,213,173,172,255,212,170,168,255,210,167,163,255, -208,163,158,255,205,159,152,255,203,155,146,255,201,151,138,255,198,146,131,255,195,141,123,255,192,136,114,255,188,131,107,255, -183,128,104,255,178,124,100,255,173,120, 98,255,168,116, 94,255,162,112, 91,255,156,108, 87,255,149,103, 83,255,141, 97, 79,255, -133, 91, 73,255,123, 85, 68,255,113, 78, 62,255,101, 69, 54,255, 87, 58, 46,255, 68, 45, 35,255, 51, 32, 24,255, 41, 28, 22,255, - 7, 7, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 9, 7, 6,255, 25, 19, 18,255, - 99, 76, 70,255,183,141,132,255,209,164,158,255,211,170,168,255,213,172,172,255,216,177,179,255,217,179,181,255,218,180,183,255, -218,181,184,255,218,181,183,255,218,180,183,255,217,180,182,255,217,178,180,255,216,176,177,255,214,174,174,255,213,172,171,255, -211,169,166,255,209,166,161,255,207,162,155,255,204,157,148,255,201,152,141,255,199,147,134,255,196,143,125,255,193,137,115,255, -189,132,108,255,184,129,104,255,179,125,101,255,174,120, 98,255,168,116, 95,255,161,112, 90,255,155,107, 86,255,147,102, 82,255, -139, 96, 77,255,131, 90, 72,255,121, 83, 66,255,108, 74, 59,255, 94, 63, 50,255, 76, 51, 40,255, 57, 37, 28,255, 42, 27, 20,255, - 9, 8, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 42, 31, 28,255,145,112,105,255,188,147,142,255,207,165,162,255,214,173,172,255,215,176,177,255, -216,178,180,255,217,180,183,255,218,180,183,255,219,181,184,255,218,181,183,255,217,180,182,255,217,178,180,255,216,176,176,255, -214,173,173,255,212,171,169,255,210,167,164,255,208,164,158,255,206,159,152,255,203,154,144,255,200,150,137,255,197,144,128,255, -194,139,118,255,190,133,109,255,185,129,104,255,180,126,101,255,174,121, 98,255,168,116, 94,255,161,112, 90,255,154,107, 86,255, -146,102, 81,255,138, 95, 76,255,128, 88, 70,255,116, 80, 63,255,102, 69, 55,255, 84, 57, 45,255, 64, 41, 32,255, 49, 34, 28,255, - 13, 12, 12,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 25, 19, 17,255, 78, 60, 57,255,146,115,110,255,198,157,152,255, -214,172,171,255,215,176,177,255,215,177,179,255,218,180,183,255,218,181,183,255,219,181,184,255,218,180,183,255,217,179,181,255, -216,177,179,255,215,175,176,255,213,173,171,255,211,169,167,255,209,165,161,255,207,161,155,255,204,157,148,255,202,152,140,255, -198,146,131,255,194,141,121,255,191,135,111,255,185,130,105,255,180,125,101,255,174,121, 98,255,168,116, 94,255,161,112, 91,255, -154,106, 85,255,144,101, 81,255,134, 93, 74,255,123, 84, 67,255,109, 74, 59,255, 92, 62, 49,255, 71, 46, 36,255, 48, 33, 27,255, - 11, 10, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 6, 4, 4,255, 25, 20, 18,255, -111, 86, 81,255,200,156,149,255,212,170,167,255,214,175,175,255,216,177,179,255,217,179,182,255,218,180,184,255,218,180,183,255, -218,180,182,255,217,179,180,255,216,176,178,255,214,174,174,255,212,171,170,255,210,168,164,255,208,163,157,255,206,158,151,255, -202,154,143,255,199,148,134,255,196,142,124,255,191,136,113,255,187,130,106,255,181,126,101,255,174,121, 99,255,167,116, 94,255, -160,111, 89,255,151,105, 84,255,142, 98, 79,255,129, 89, 71,255,116, 80, 64,255, 99, 66, 53,255, 76, 51, 39,255, 46, 30, 23,255, - 5, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 89, 68, 64,255,163,127,121,255,196,157,154,255,212,171,170,255,216,177,177,255,216,178,180,255, -217,180,182,255,218,180,183,255,218,180,182,255,216,178,179,255,215,176,176,255,214,173,171,255,211,169,167,255,208,165,161,255, -207,161,154,255,203,156,146,255,200,150,137,255,197,144,128,255,192,136,116,255,187,131,106,255,181,126,102,255,174,121, 97,255, -167,115, 93,255,158,110, 88,255,149,102, 83,255,137, 95, 77,255,123, 84, 67,255,105, 71, 57,255, 81, 54, 42,255, 40, 25, 19,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 46, 36, 33,255, 99, 77, 74,255,177,140,135,255,212,169,166,255, -215,175,175,255,217,178,180,255,217,179,181,255,217,179,181,255,217,178,180,255,216,177,177,255,214,174,174,255,212,170,169,255, -209,166,163,255,207,162,156,255,205,157,149,255,201,152,139,255,197,145,129,255,192,138,117,255,187,131,106,255,181,125,102,255, -173,120, 98,255,165,114, 92,255,155,108, 87,255,144,100, 80,255,129, 88, 71,255,109, 74, 59,255, 82, 55, 43,255, 22, 15, 13,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 0, 0,255, 5, 4, 4,255, 35, 27, 25,255, -140,110,105,255,207,164,160,255,213,172,172,255,214,175,176,255,216,177,179,255,216,177,180,255,216,176,178,255,215,175,175,255, -212,171,171,255,210,168,165,255,208,164,159,255,205,158,151,255,201,152,141,255,197,146,131,255,192,138,116,255,186,131,106,255, -180,125,101,255,170,118, 95,255,160,111, 90,255,149,103, 83,255,132, 91, 74,255,111, 75, 60,255, 73, 51, 42,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 22, 18, 17,255, 95, 74, 69,255,165,131,126,255,192,154,151,255,212,171,170,255,215,175,175,255,214,175,176,255, -213,173,172,255,212,171,169,255,210,168,164,255,208,164,158,255,204,158,149,255,200,151,140,255,196,144,128,255,190,135,113,255, -184,128,104,255,175,122, 99,255,165,114, 92,255,151,105, 85,255,134, 92, 74,255, 97, 67, 54,255, 12, 9, 8,255, 0, 0, 0,255, - 0, 0, 0,255, 22, 35, 45,255, 13, 20, 26,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 36, 27, 25,255, 78, 62, 59,255,140,110,106,255,200,158,153,255, -212,169,166,255,213,171,169,255,210,169,166,255,208,164,160,255,206,161,154,255,202,155,145,255,198,148,135,255,193,139,119,255, -186,130,105,255,176,123,100,255,166,115, 93,255,150,104, 83,255,100, 71, 57,255, 19, 14, 11,255, 0, 0, 0,255, 0, 0, 0,255, - 32, 51, 65,255,110,174,223,255, 73,115,148,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 2, 1, 1,255, 5, 4, 4,255, - 72, 56, 52,255,142,111,104,255,192,148,138,255,203,156,147,255,203,155,146,255,200,151,139,255,196,143,127,255,191,135,114,255, -182,126,102,255,170,118, 96,255,127, 88, 72,255, 47, 33, 27,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 23, 36, 46,255, -110,173,221,255,118,186,238,255,115,180,231,255, 25, 40, 51,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 12, 10, 8,255, 52, 39, 34,255, 65, 47, 39,255, 69, 49, 40,255, 67, 47, 39,255, - 47, 33, 27,255, 7, 5, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 21, 34, 43,255,110,174,222,255, -117,185,237,255,118,185,237,255,117,185,237,255, 93,147,189,255, 1, 1, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 46, 59,255,109,171,219,255,118,186,237,255, -118,185,237,255,118,186,238,255,118,185,237,255,118,185,238,255, 62, 98,126,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 21, 33, 42,255,108,171,217,255,117,186,238,255,118,185,237,255, -118,186,238,255,118,186,238,255,118,185,237,255,118,186,238,255,116,181,233,255, 25, 38, 49,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 17, 26, 34,255, 81,127,163,255,117,184,234,255,117,185,238,255, -118,185,237,255,118,186,238,255,118,186,238,255,118,186,238,255,118,186,238,255, 87,137,176,255, 3, 5, 7,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 2,255, 31, 49, 63,255, 99,156,199,255, -118,185,237,255,118,185,237,255,118,186,238,255,118,186,238,255,117,186,238,255,118,186,238,255, 42, 65, 84,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 3, 4, 6,255, - 69,109,140,255,118,184,237,255,118,186,237,255,118,185,238,255,118,186,238,255,118,185,238,255,115,182,232,255, 3, 5, 6,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 46, 60,255, 93,145,187,255,118,186,237,255,118,186,238,255,118,185,237,255,117,185,237,255, 84,132,169,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 5, 7, 9,255, 46, 74, 94,255,118,184,237,255,117,186,237,255,118,185,237,255,118,185,236,255, - 43, 68, 87,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 5, 9, 11,255, 88,138,177,255,117,186,237,255,117,185,238,255, - 98,154,196,255, 10, 16, 20,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 47, 75, 96,255,100,158,202,255, -117,185,238,255, 61, 96,123,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 12, 19, 24,255, - 64,102,130,255,117,185,238,255, 25, 40, 51,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 27, 43, 55,255, 94,148,190,255, 1, 1, 2,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 1, 1, 2,255, 14, 22, 28,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, - 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 73, 77, 0, 0,156, 1, 0, 0,240,168, 97, 7, 31, 0, 0, 0, 1, 0, 0, 0, 72, 76, 98, 7,152, 5, 97, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 73, 77, 46,105, 46,105,110,102,108, 97,116,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46, -105,110,102,108, 97,116,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,170, 97, 7, 0, 0, 0, 0,237, 71, 42, 0, - 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,240,170, 97, 7, 19, 0, 0, 0, - 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,120,171, 97, 7, -224,187, 97, 7, 68, 65, 84, 65, 0, 16, 0, 0,120,171, 97, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0, -224,187, 97, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 61, 60, 60,255, 61, 61, 60,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 62, 62, 62,255, 61, 61, 61,255, 94, 94, 95,255,124,125,127,255,123,125,126,255,123,125,126,255, -123,124,126,255,123,124,126,255,123,124,126,255,123,124,125,255,123,124,125,255,122,124,125,255,122,124,125,255,122,123,125,255, -122,123,124,255,122,123,124,255,122,123,124,255,121,123,124,255,121,122,124,255,121,122,124,255,121,122,123,255,121,122,123,255, -121,122,123,255,120,121,122,255,120,121,122,255,120,121,122,255,120,121,122,255,120,121,122,255,119,120,122,255,119,120,121,255, -119,120,121,255,119,120,121,255,119,120,121,255,118,119,120,255,118,119,120,255,118,119,120,255,118,119,120,255,117,118,119,255, -117,118,119,255,117,118,119,255,116,118,119,255,117,118,119,255,117,117,118,255,116,117,118,255,115,117,118,255,116,117,117,255, -115,116,117,255,115,116,117,255,115,115,117,255,114,116,116,255,114,115,116,255,114,115,115,255,114,114,116,255,113,114,115,255, -113,114,114,255,113,114,115,255,113,113,114,255,112,113,114,255,112,113,113,255,112,112,113,255,111,112,113,255,111,112,112,255, -111,111,112,255,111,111,112,255,110,111,111,255,110,110,111,255,110,110,111,255,109,109,110,255,109,109,110,255,109,109,110,255, -108,108,109,255,108,108,108,255,107,107,108,255,107,107,108,255,106,107,107,255,106,106,106,255,105,105,106,255,104,104,105,255, -104,104,104,255,103,104,104,255,103,103,103,255,102,102,103,255,101,101,102,255,101,101,101,255,100,100,100,255,100, 99, 99,255, - 99, 99, 99,255, 99, 98, 98,255, 98, 97, 97,255, 97, 97, 97,255, 96, 96, 95,255, 96, 95, 95,255, 94, 94, 94,255, 94, 93, 93,255, - 93, 92, 92,255, 77, 77, 77,255, 61, 61, 61,255, 60, 60, 60,255,125,126,128,255,184,187,189,255,182,184,187,255,182,184,187,255, -182,184,187,255,182,184,187,255,181,183,186,255,181,183,186,255,181,183,186,255,180,183,185,255,180,183,185,255,180,182,184,255, -179,182,184,255,179,182,183,255,179,181,183,255,178,181,183,255,177,180,182,255,177,180,182,255,177,179,182,255,176,179,181,255, -176,179,181,255,176,178,180,255,175,177,179,255,175,177,179,255,175,177,179,255,174,176,179,255,174,176,178,255,173,176,178,255, -173,175,177,255,173,175,177,255,173,175,177,255,172,174,176,255,172,174,176,255,171,173,175,255,171,173,175,255,170,172,174,255, -170,172,174,255,169,171,173,255,169,171,173,255,168,170,172,255,168,170,172,255,168,170,171,255,167,169,170,255,167,169,170,255, -166,168,170,255,166,167,169,255,165,167,169,255,165,166,168,255,164,166,167,255,164,165,167,255,163,165,166,255,163,164,166,255, -162,164,165,255,162,163,164,255,161,162,164,255,160,162,163,255,160,161,162,255,159,160,162,255,159,160,161,255,158,159,161,255, -157,159,160,255,157,158,159,255,156,157,159,255,156,157,158,255,155,156,157,255,154,155,156,255,153,154,155,255,153,154,155,255, -152,153,154,255,151,152,153,255,151,151,152,255,149,150,151,255,149,149,150,255,148,147,149,255,146,147,148,255,145,146,147,255, -144,144,145,255,143,143,144,255,142,142,143,255,141,141,141,255,140,140,140,255,139,138,139,255,137,137,137,255,136,136,136,255, -135,135,135,255,133,133,133,255,132,131,131,255,131,130,130,255,129,128,128,255,128,127,126,255,127,124,125,255,124,123,122,255, -123,121,120,255, 93, 92, 91,255, 61, 61, 61,255, 60, 60, 60,255,124,126,127,255,184,186,189,255,182,185,188,255,182,185,187,255, -182,184,187,255,181,184,187,255,181,184,186,255,180,184,185,255,181,183,186,255,180,183,185,255,180,182,185,255,180,182,185,255, -179,182,184,255,179,181,184,255,179,181,183,255,178,181,183,255,178,180,183,255,178,180,182,255,177,179,182,255,177,179,181,255, -176,179,181,255,175,178,180,255,176,178,180,255,175,177,180,255,175,177,179,255,175,177,178,255,174,176,178,255,174,176,177,255, -173,175,177,255,173,175,177,255,173,175,177,255,172,174,176,255,172,174,176,255,171,173,175,255,170,172,174,255,170,172,174,255, -169,171,173,255,169,171,173,255,169,171,173,255,169,171,173,255,168,170,171,255,168,170,171,255,167,169,171,255,167,169,170,255, -166,168,170,255,165,168,169,255,165,167,169,255,165,166,168,255,165,165,168,255,164,165,167,255,163,164,166,255,162,165,165,255, -162,163,165,255,162,163,165,255,161,163,164,255,160,162,163,255,160,161,163,255,159,160,162,255,159,160,161,255,159,160,161,255, -157,159,160,255,157,158,159,255,157,158,159,255,156,156,158,255,155,156,157,255,154,155,157,255,153,154,155,255,153,154,155,255, -152,153,154,255,151,152,153,255,150,151,152,255,150,150,152,255,148,149,150,255,147,148,149,255,147,147,148,255,145,145,146,255, -144,145,145,255,144,144,145,255,142,142,143,255,141,141,142,255,139,139,140,255,138,138,138,255,137,137,137,255,136,136,136,255, -135,134,134,255,133,133,133,255,132,131,131,255,131,130,130,255,130,129,128,255,128,127,126,255,126,125,124,255,125,123,123,255, -123,122,121,255, 93, 92, 91,255, 61, 61, 61,255, 60, 60, 60,255,125,126,127,255,184,187,189,255,182,185,188,255,183,185,187,255, -182,185,187,255,182,185,187,255,182,184,187,255,181,183,186,255,181,184,186,255,181,183,186,255,180,183,185,255,180,182,185,255, -180,182,185,255,180,181,184,255,179,182,184,255,179,181,183,255,178,180,183,255,178,180,182,255,178,180,182,255,177,179,181,255, -176,179,181,255,176,179,181,255,176,178,180,255,176,178,180,255,175,177,180,255,174,176,179,255,174,177,179,255,174,176,178,255, -173,176,178,255,173,175,177,255,173,175,177,255,172,174,176,255,172,174,176,255,172,174,176,255,171,173,175,255,171,173,175,255, -170,172,174,255,170,172,174,255,169,171,173,255,169,171,173,255,168,170,172,255,168,170,172,255,168,170,171,255,167,169,170,255, -167,169,170,255,166,168,169,255,165,167,169,255,165,167,169,255,164,166,167,255,164,166,167,255,164,165,167,255,163,164,166,255, -162,164,165,255,162,163,165,255,162,163,165,255,161,162,164,255,161,162,163,255,160,161,163,255,159,160,162,255,159,160,161,255, -158,159,160,255,157,158,160,255,156,157,159,255,156,157,158,255,156,156,158,255,155,156,157,255,154,155,156,255,153,154,155,255, -152,152,154,255,151,152,153,255,151,151,152,255,149,151,152,255,149,149,150,255,148,148,149,255,146,147,148,255,146,146,147,255, -145,145,146,255,143,144,145,255,143,143,144,255,141,142,142,255,140,140,140,255,139,139,139,255,138,138,138,255,137,136,136,255, -135,135,135,255,134,133,133,255,132,132,132,255,131,130,130,255,130,129,128,255,128,127,127,255,127,126,125,255,125,124,123,255, -124,122,121,255, 93, 92, 92,255, 61, 61, 61,255, 60, 60, 60,255,125,126,128,255,185,187,191,255,183,186,188,255,183,185,188,255, -183,185,188,255,183,185,187,255,183,184,187,255,182,184,187,255,182,184,186,255,181,184,186,255,181,184,186,255,180,183,185,255, -181,183,186,255,179,182,184,255,179,182,184,255,180,182,184,255,178,181,183,255,179,180,183,255,179,180,183,255,177,180,182,255, -177,179,181,255,177,180,181,255,177,178,181,255,177,179,180,255,176,178,181,255,175,177,179,255,175,177,180,255,174,176,179,255, -174,177,179,255,173,176,178,255,174,175,177,255,173,175,177,255,172,174,176,255,172,174,176,255,171,173,175,255,172,174,176,255, -171,173,175,255,171,173,175,255,170,172,174,255,170,172,174,255,169,171,172,255,168,170,172,255,168,170,171,255,167,169,171,255, -168,169,170,255,166,169,170,255,166,167,169,255,166,168,169,255,165,166,168,255,164,167,168,255,165,166,167,255,163,165,166,255, -163,164,166,255,162,164,165,255,161,164,164,255,161,163,165,255,161,162,164,255,160,161,162,255,159,161,162,255,159,160,162,255, -159,159,160,255,158,159,161,255,157,158,160,255,156,157,158,255,155,157,158,255,155,156,157,255,154,155,156,255,153,154,156,255, -153,154,155,255,151,152,153,255,151,152,153,255,150,151,152,255,149,150,151,255,148,149,150,255,147,147,148,255,146,147,148,255, -145,146,147,255,144,145,146,255,143,143,144,255,142,142,143,255,140,140,141,255,139,139,140,255,139,138,139,255,136,136,136,255, -135,135,135,255,135,134,134,255,133,132,132,255,132,131,131,255,131,130,129,255,129,128,127,255,127,126,126,255,126,125,124,255, -125,123,122,255, 93, 93, 91,255, 61, 61, 61,255, 60, 60, 60,255,125,127,128,255,186,188,191,255,184,187,189,255,184,187,189,255, -184,186,189,255,183,186,188,255,183,186,188,255,183,185,188,255,182,185,188,255,182,185,187,255,181,184,187,255,182,184,187,255, -181,184,186,255,181,183,186,255,181,183,186,255,180,183,185,255,180,182,185,255,179,181,184,255,179,181,184,255,179,181,183,255, -178,181,183,255,178,180,182,255,177,180,182,255,176,179,182,255,177,179,181,255,176,178,180,255,176,178,180,255,175,177,180,255, -174,176,179,255,174,177,179,255,173,176,178,255,174,176,178,255,173,175,177,255,173,175,177,255,172,174,176,255,172,174,176,255, -172,174,176,255,171,173,175,255,171,173,175,255,170,172,174,255,170,172,173,255,169,171,173,255,169,171,173,255,168,170,172,255, -168,170,172,255,168,169,171,255,167,169,170,255,167,168,170,255,166,168,169,255,165,167,169,255,165,167,168,255,164,165,168,255, -164,165,166,255,163,165,166,255,163,164,165,255,162,164,164,255,162,163,164,255,160,162,164,255,160,162,163,255,160,161,162,255, -159,160,161,255,159,160,161,255,158,159,160,255,157,158,159,255,156,157,159,255,156,157,158,255,155,156,157,255,154,155,156,255, -153,154,156,255,152,153,154,255,151,152,153,255,151,152,153,255,150,150,151,255,149,150,151,255,148,149,150,255,147,147,148,255, -146,146,147,255,144,145,145,255,143,143,144,255,142,143,143,255,142,142,142,255,140,140,140,255,139,138,139,255,138,137,138,255, -136,136,136,255,135,135,135,255,133,133,133,255,132,131,131,255,131,130,130,255,129,128,128,255,128,127,126,255,126,125,124,255, -125,123,122,255, 94, 93, 92,255, 61, 61, 61,255, 60, 60, 60,255,126,127,129,255,186,189,192,255,184,187,190,255,184,187,190,255, -184,186,189,255,183,186,189,255,184,186,189,255,183,186,189,255,183,186,188,255,182,185,187,255,182,184,187,255,181,185,187,255, -181,184,187,255,181,183,186,255,180,184,186,255,180,183,185,255,180,182,185,255,179,182,184,255,180,181,184,255,179,181,183,255, -178,181,183,255,178,180,183,255,177,180,182,255,177,179,182,255,177,179,181,255,176,178,181,255,176,178,180,255,176,178,180,255, -175,177,179,255,175,177,179,255,174,177,179,255,173,177,179,255,173,176,178,255,174,176,178,255,173,175,177,255,173,175,177,255, -172,174,176,255,171,173,175,255,171,173,174,255,171,173,174,255,170,172,173,255,170,172,173,255,170,170,172,255,169,170,172,255, -168,170,172,255,168,169,172,255,167,169,170,255,167,169,170,255,167,168,169,255,165,167,169,255,165,166,169,255,164,166,167,255, -164,165,167,255,163,165,166,255,163,164,166,255,162,163,165,255,162,163,165,255,161,162,164,255,160,162,163,255,160,162,163,255, -159,160,162,255,159,160,161,255,158,160,161,255,157,158,160,255,157,158,159,255,156,157,158,255,155,156,157,255,155,155,157,255, -154,155,156,255,153,153,155,255,152,153,154,255,151,152,153,255,150,151,152,255,149,150,151,255,149,149,150,255,147,148,149,255, -146,147,147,255,145,145,146,255,144,144,145,255,143,143,144,255,141,142,142,255,140,141,141,255,139,139,140,255,138,137,138,255, -137,136,137,255,135,135,135,255,134,133,133,255,133,132,132,255,131,131,130,255,129,129,128,255,128,127,126,255,127,125,125,255, -125,124,123,255, 94, 93, 92,255, 61, 61, 61,255, 60, 60, 60,255,126,127,129,255,187,190,192,255,185,188,190,255,185,187,190,255, -184,187,190,255,184,187,189,255,185,186,189,255,184,186,189,255,183,186,188,255,184,185,188,255,182,185,188,255,182,184,187,255, -183,184,188,255,181,184,186,255,181,183,186,255,182,183,187,255,180,183,185,255,180,182,185,255,179,182,184,255,179,182,184,255, -179,181,183,255,178,182,183,255,178,180,183,255,177,180,182,255,178,179,183,255,176,179,181,255,177,178,182,255,177,179,181,255, -175,177,180,255,176,178,179,255,175,178,180,255,174,176,178,255,174,177,179,255,173,176,178,255,173,176,177,255,172,175,177,255, -173,174,177,255,172,174,175,255,171,174,176,255,171,173,175,255,170,173,174,255,171,172,174,255,170,171,173,255,170,171,173,255, -169,170,172,255,169,170,172,255,168,169,171,255,167,169,170,255,166,168,170,255,166,167,169,255,165,168,169,255,165,166,168,255, -164,166,167,255,165,165,168,255,163,165,166,255,163,164,165,255,163,163,166,255,161,163,164,255,161,162,163,255,160,162,164,255, -160,161,162,255,159,160,162,255,159,160,161,255,158,159,160,255,157,158,159,255,157,158,159,255,155,156,158,255,155,156,157,255, -154,155,156,255,153,154,155,255,152,153,154,255,152,153,154,255,151,151,152,255,150,150,151,255,149,150,151,255,147,148,149,255, -147,147,148,255,145,146,146,255,144,145,146,255,144,144,145,255,142,142,143,255,141,141,141,255,140,140,140,255,138,138,138,255, -137,137,137,255,136,135,136,255,134,133,134,255,133,132,132,255,132,131,131,255,130,129,128,255,129,128,127,255,127,126,125,255, -126,125,124,255, 94, 93, 93,255, 61, 61, 61,255, 60, 60, 60,255,127,128,129,255,187,190,193,255,186,189,192,255,186,188,191,255, -186,188,190,255,185,188,191,255,185,187,190,255,185,187,190,255,184,187,189,255,184,187,189,255,184,186,189,255,183,186,188,255, -183,186,188,255,183,185,188,255,182,185,187,255,181,184,187,255,182,184,187,255,181,183,186,255,181,183,185,255,181,182,185,255, -180,182,185,255,179,182,184,255,179,182,184,255,178,181,183,255,177,181,182,255,177,180,182,255,177,179,182,255,177,179,182,255, -176,178,181,255,176,178,181,255,176,177,180,255,175,177,180,255,175,177,179,255,174,177,179,255,173,176,178,255,173,176,178,255, -172,175,177,255,172,174,176,255,172,174,176,255,171,174,176,255,171,173,175,255,171,173,175,255,170,172,174,255,169,171,174,255, -169,171,173,255,168,170,172,255,168,170,172,255,168,169,171,255,168,168,170,255,167,168,170,255,166,168,170,255,166,168,169,255, -165,167,168,255,164,166,168,255,165,165,167,255,163,165,166,255,162,165,165,255,163,164,166,255,162,163,164,255,161,162,163,255, -160,162,163,255,160,161,163,255,159,161,162,255,158,159,161,255,158,159,160,255,157,158,160,255,156,157,159,255,155,156,158,255, -155,156,157,255,153,154,156,255,153,154,155,255,152,153,154,255,151,152,153,255,150,151,152,255,150,150,151,255,148,149,149,255, -147,148,149,255,147,146,148,255,145,145,146,255,144,144,145,255,142,142,143,255,141,141,142,255,140,140,141,255,139,139,140,255, -137,137,137,255,136,136,136,255,135,134,134,255,133,133,133,255,132,131,131,255,131,130,129,255,129,128,127,255,128,126,126,255, -126,125,124,255, 94, 93, 93,255, 61, 61, 61,255, 60, 60, 60,255,126,128,130,255,188,191,193,255,187,189,192,255,186,189,192,255, -185,188,191,255,185,188,191,255,185,188,191,255,185,187,190,255,184,187,190,255,185,187,190,255,184,186,189,255,183,186,189,255, -184,186,189,255,183,185,188,255,182,185,188,255,182,184,187,255,182,184,187,255,181,184,186,255,181,183,186,255,181,183,186,255, -180,183,185,255,180,182,185,255,180,182,185,255,179,181,184,255,178,181,183,255,178,180,183,255,177,180,182,255,178,180,182,255, -177,179,181,255,176,178,181,255,176,178,180,255,175,177,180,255,175,177,180,255,175,176,179,255,174,177,179,255,174,176,178,255, -173,176,178,255,173,175,177,255,172,174,176,255,172,174,176,255,171,173,175,255,171,173,175,255,170,172,174,255,170,172,174,255, -170,172,173,255,169,171,172,255,168,170,172,255,168,170,172,255,167,169,171,255,167,169,170,255,167,168,170,255,167,167,170,255, -166,167,169,255,165,167,168,255,164,165,168,255,164,165,167,255,163,165,166,255,162,164,165,255,162,163,165,255,162,163,164,255, -161,162,163,255,160,161,163,255,160,161,162,255,159,160,161,255,158,159,160,255,158,159,160,255,157,158,159,255,156,157,158,255, -155,156,157,255,154,155,156,255,153,154,155,255,153,153,155,255,151,152,153,255,151,151,153,255,149,151,152,255,149,149,150,255, -148,148,149,255,146,147,148,255,145,146,147,255,144,145,145,255,143,143,143,255,142,142,142,255,141,141,141,255,139,139,139,255, -138,138,138,255,137,136,136,255,135,135,135,255,134,133,133,255,133,132,131,255,131,130,129,255,129,128,128,255,128,127,126,255, -127,125,124,255, 94, 94, 93,255, 61, 61, 61,255, 60, 60, 60,255,127,129,130,255,189,191,194,255,186,189,193,255,186,189,193,255, -186,189,192,255,186,189,191,255,185,188,191,255,186,188,192,255,185,188,190,255,184,187,190,255,185,187,190,255,184,187,189,255, -183,186,189,255,183,186,188,255,183,185,189,255,182,185,188,255,183,185,188,255,182,184,187,255,182,184,187,255,180,184,185,255, -180,184,185,255,181,183,186,255,179,183,184,255,180,182,185,255,179,181,184,255,179,181,184,255,178,180,183,255,177,180,182,255, -178,179,182,255,177,179,181,255,176,178,182,255,176,178,180,255,175,177,180,255,176,178,180,255,174,176,178,255,175,177,179,255, -174,176,178,255,174,176,178,255,173,175,177,255,172,174,176,255,172,174,176,255,171,173,175,255,171,173,175,255,170,172,174,255, -171,173,174,255,169,172,173,255,170,171,172,255,169,171,173,255,168,169,171,255,167,170,171,255,168,169,171,255,166,168,169,255, -167,168,169,255,166,168,169,255,164,166,167,255,165,166,167,255,164,166,167,255,163,164,165,255,162,164,166,255,163,164,165,255, -161,162,163,255,160,162,164,255,161,162,163,255,159,160,161,255,158,159,161,255,158,159,161,255,157,158,159,255,156,157,159,255, -156,157,158,255,154,155,156,255,154,154,156,255,154,154,156,255,152,153,154,255,152,152,153,255,151,151,152,255,149,150,151,255, -149,149,150,255,147,148,149,255,146,146,147,255,145,145,146,255,143,143,144,255,142,142,143,255,141,141,142,255,139,139,139,255, -138,138,138,255,137,137,137,255,135,135,135,255,134,134,134,255,133,133,132,255,131,130,130,255,130,129,128,255,128,127,126,255, -127,126,125,255, 95, 94, 93,255, 61, 61, 61,255, 60, 60, 60,255,127,129,130,255,189,192,195,255,188,191,193,255,188,190,193,255, -187,189,193,255,186,189,193,255,187,189,192,255,186,189,191,255,186,189,192,255,186,188,191,255,185,187,190,255,185,188,190,255, -185,187,190,255,185,186,190,255,184,186,189,255,183,186,189,255,182,185,188,255,183,185,188,255,182,185,187,255,182,184,187,255, -181,183,186,255,181,184,186,255,181,183,186,255,180,183,185,255,180,182,185,255,179,181,184,255,179,181,184,255,178,181,183,255, -177,180,183,255,178,180,182,255,177,180,181,255,176,179,181,255,176,178,180,255,176,178,180,255,175,177,179,255,175,177,179,255, -175,177,179,255,174,176,178,255,174,176,178,255,173,175,177,255,172,174,176,255,172,174,176,255,171,173,176,255,171,173,175,255, -171,173,175,255,171,172,174,255,170,171,173,255,170,171,173,255,169,171,173,255,169,170,171,255,168,170,171,255,168,169,171,255, -166,168,170,255,167,167,169,255,165,167,168,255,165,166,168,255,165,166,167,255,163,165,166,255,163,165,166,255,163,164,166,255, -162,163,164,255,161,162,164,255,161,161,164,255,160,161,162,255,159,160,161,255,158,160,161,255,157,158,160,255,157,158,159,255, -156,157,159,255,155,156,157,255,154,155,156,255,154,155,156,255,153,153,154,255,152,152,154,255,151,152,153,255,150,150,151,255, -149,149,150,255,148,147,148,255,146,146,147,255,145,145,146,255,144,145,145,255,143,143,143,255,142,142,142,255,140,140,141,255, -139,138,139,255,138,137,137,255,136,136,136,255,135,134,134,255,133,133,132,255,132,131,130,255,130,129,129,255,129,127,127,255, -128,126,125,255, 95, 94, 94,255, 61, 61, 61,255, 60, 60, 60,255,128,129,131,255,190,192,195,255,188,191,193,255,187,190,193,255, -187,190,193,255,187,190,192,255,187,190,192,255,187,190,192,255,186,189,191,255,186,189,191,255,185,188,191,255,185,188,191,255, -185,188,190,255,184,187,190,255,184,187,190,255,184,186,189,255,183,186,188,255,182,185,188,255,182,185,188,255,182,184,187,255, -181,184,186,255,181,184,186,255,180,184,185,255,181,183,186,255,180,183,185,255,179,182,184,255,179,181,184,255,179,181,184,255, -178,180,182,255,178,180,182,255,177,180,182,255,177,180,181,255,176,179,181,255,177,179,181,255,176,178,180,255,176,177,179,255, -175,177,179,255,174,176,178,255,174,176,178,255,174,176,178,255,173,175,177,255,173,174,177,255,172,174,175,255,171,173,175,255, -171,173,175,255,171,173,175,255,170,172,174,255,169,172,173,255,170,171,172,255,168,170,172,255,168,170,172,255,167,170,171,255, -167,168,170,255,166,168,170,255,166,167,169,255,165,167,168,255,165,166,168,255,164,165,167,255,163,165,166,255,163,165,165,255, -162,163,165,255,161,163,164,255,161,162,164,255,160,161,162,255,159,161,162,255,159,160,161,255,158,159,160,255,157,158,159,255, -157,158,159,255,155,156,157,255,155,156,157,255,153,155,155,255,153,153,155,255,152,153,154,255,151,152,153,255,150,150,151,255, -149,149,150,255,147,148,149,255,147,147,148,255,146,146,147,255,144,144,145,255,143,144,144,255,142,142,143,255,141,141,141,255, -140,139,139,255,138,138,138,255,136,136,136,255,135,134,134,255,134,133,133,255,132,131,130,255,130,129,129,255,129,128,127,255, -128,126,126,255, 95, 94, 94,255, 61, 61, 61,255, 60, 60, 60,255,127,129,131,255,190,193,196,255,188,191,194,255,188,192,195,255, -189,191,194,255,187,191,193,255,188,191,194,255,187,190,193,255,186,190,192,255,186,190,193,255,187,189,192,255,185,189,192,255, -185,189,191,255,185,188,190,255,184,188,191,255,185,187,190,255,183,187,189,255,183,187,188,255,184,186,189,255,182,185,187,255, -183,184,188,255,182,185,187,255,181,183,186,255,180,184,185,255,181,183,186,255,180,183,184,255,179,182,185,255,180,181,184,255, -178,181,184,255,179,181,183,255,178,181,183,255,178,179,181,255,177,180,182,255,176,179,181,255,176,179,181,255,175,178,180,255, -176,177,179,255,175,177,179,255,174,176,178,255,175,177,179,255,173,175,177,255,174,175,177,255,173,174,176,255,172,174,176,255, -172,174,176,255,171,173,175,255,171,173,174,255,170,172,173,255,170,172,173,255,169,171,172,255,168,171,172,255,168,169,171,255, -167,169,170,255,167,168,170,255,167,168,169,255,166,167,168,255,166,166,168,255,164,166,167,255,164,165,166,255,164,165,166,255, -162,164,165,255,162,163,164,255,162,163,164,255,160,161,163,255,159,161,162,255,160,161,162,255,158,159,161,255,158,159,160,255, -157,158,159,255,155,156,158,255,155,156,157,255,155,155,157,255,153,154,155,255,153,153,154,255,152,152,153,255,150,151,152,255, -150,150,151,255,149,149,150,255,147,147,148,255,146,147,147,255,145,145,146,255,144,144,145,255,143,143,143,255,141,141,141,255, -140,140,140,255,139,139,139,255,137,136,136,255,136,135,135,255,134,134,133,255,132,131,131,255,131,130,129,255,129,128,128,255, -128,127,126,255, 95, 95, 94,255, 61, 61, 61,255, 60, 60, 60,255,128,130,131,255,191,194,197,255,189,192,195,255,189,192,195,255, -188,192,195,255,188,191,194,255,188,191,194,255,188,191,194,255,188,190,193,255,187,189,192,255,186,190,193,255,187,189,192,255, -186,189,192,255,185,189,191,255,186,188,191,255,185,188,191,255,185,187,190,255,184,187,190,255,183,187,189,255,184,186,189,255, -183,185,188,255,183,185,188,255,182,184,187,255,181,184,186,255,181,184,186,255,180,183,185,255,180,183,185,255,179,182,185,255, -179,181,184,255,179,182,184,255,179,181,183,255,178,181,183,255,178,180,182,255,177,180,182,255,176,179,181,255,176,179,181,255, -175,178,180,255,175,177,180,255,175,177,179,255,175,177,179,255,174,176,178,255,174,176,178,255,173,175,177,255,172,174,177,255, -172,174,176,255,172,174,176,255,171,173,175,255,171,172,174,255,170,171,173,255,170,171,173,255,169,171,172,255,168,171,171,255, -168,170,171,255,168,169,171,255,166,168,169,255,166,168,169,255,166,167,169,255,165,166,168,255,164,166,167,255,164,165,167,255, -163,164,165,255,163,163,165,255,162,163,165,255,161,162,163,255,160,161,163,255,160,161,162,255,159,160,161,255,158,159,160,255, -157,158,160,255,156,157,158,255,156,157,158,255,155,156,157,255,154,154,156,255,153,154,155,255,152,153,154,255,151,151,152,255, -150,150,151,255,148,150,150,255,148,148,148,255,147,147,148,255,145,146,146,255,144,144,145,255,143,143,144,255,142,141,142,255, -140,140,140,255,139,139,139,255,137,138,137,255,136,136,135,255,135,134,134,255,133,132,131,255,131,130,129,255,130,128,128,255, -129,127,126,255, 95, 95, 94,255, 61, 61, 61,255, 60, 60, 60,255,128,130,132,255,191,194,197,255,189,193,196,255,189,192,195,255, -189,192,195,255,188,191,194,255,189,192,195,255,188,191,194,255,187,190,193,255,188,190,193,255,187,190,192,255,186,189,192,255, -187,189,192,255,186,188,191,255,185,188,191,255,186,188,191,255,185,187,190,255,184,187,190,255,184,187,190,255,183,187,189,255, -183,186,188,255,183,186,188,255,182,185,187,255,182,184,187,255,182,184,187,255,181,183,186,255,180,183,185,255,180,183,185,255, -180,182,184,255,179,181,184,255,179,181,183,255,178,180,183,255,178,180,182,255,178,179,182,255,177,180,181,255,177,179,181,255, -176,179,181,255,176,178,180,255,175,177,180,255,174,176,178,255,174,176,178,255,174,176,178,255,173,175,178,255,173,175,176,255, -172,175,177,255,172,173,175,255,171,173,175,255,171,173,175,255,170,172,174,255,170,171,173,255,170,171,173,255,169,170,172,255, -168,170,171,255,168,170,171,255,167,168,170,255,166,168,169,255,166,168,169,255,165,166,168,255,164,166,167,255,164,166,167,255, -163,164,166,255,163,164,165,255,163,164,165,255,161,162,164,255,161,162,163,255,160,161,162,255,159,160,161,255,158,159,161,255, -158,159,160,255,156,157,159,255,156,157,158,255,155,156,157,255,154,155,156,255,153,154,155,255,153,153,154,255,151,152,153,255, -150,151,152,255,149,150,151,255,148,148,149,255,147,148,148,255,146,147,147,255,145,145,146,255,144,144,144,255,142,142,142,255, -141,141,141,255,140,139,139,255,138,137,137,255,137,136,136,255,135,134,134,255,133,132,132,255,131,130,130,255,130,129,128,255, -129,128,127,255, 96, 95, 94,255, 61, 61, 61,255, 60, 60, 60,255,129,130,132,255,192,195,198,255,191,192,195,255,190,193,196,255, -189,193,196,255,190,192,195,255,189,191,194,255,188,191,195,255,188,191,194,255,187,190,193,255,188,190,194,255,187,190,193,255, -186,189,192,255,187,190,193,255,186,189,191,255,185,188,191,255,186,188,191,255,185,187,190,255,184,188,190,255,184,186,190,255, -183,187,189,255,184,186,188,255,183,186,188,255,182,185,187,255,182,184,187,255,182,184,187,255,181,183,186,255,180,183,185,255, -181,183,185,255,180,182,184,255,179,181,185,255,179,181,183,255,178,180,184,255,179,181,183,255,177,179,182,255,178,180,181,255, -177,179,182,255,177,179,180,255,176,178,180,255,176,178,180,255,175,177,179,255,174,176,179,255,175,177,178,255,173,175,177,255, -173,175,176,255,172,175,177,255,172,173,175,255,171,174,175,255,171,173,174,255,170,172,173,255,170,171,174,255,169,171,172,255, -168,170,172,255,169,170,172,255,167,169,170,255,167,168,170,255,167,168,170,255,165,167,168,255,165,166,168,255,164,166,168,255, -164,165,166,255,163,164,166,255,162,163,166,255,162,163,164,255,161,162,164,255,161,162,163,255,159,160,162,255,159,160,161,255, -158,159,161,255,156,157,159,255,156,157,159,255,156,157,158,255,154,155,156,255,154,155,156,255,153,154,155,255,151,152,153,255, -151,151,152,255,150,150,151,255,148,149,150,255,148,148,149,255,146,146,147,255,145,145,146,255,144,144,144,255,142,142,142,255, -141,141,141,255,140,140,140,255,138,138,138,255,137,136,136,255,136,135,134,255,133,132,132,255,132,131,130,255,130,129,129,255, -129,128,127,255, 96, 95, 95,255, 61, 61, 61,255, 60, 60, 60,255,129,130,132,255,192,195,198,255,190,194,197,255,191,194,197,255, -190,193,196,255,189,192,195,255,190,192,196,255,189,192,195,255,189,192,195,255,189,191,194,255,189,190,193,255,188,190,194,255, -188,190,193,255,188,190,193,255,187,189,192,255,186,189,192,255,185,188,192,255,186,188,191,255,185,188,191,255,184,187,190,255, -184,187,190,255,184,187,189,255,184,186,188,255,183,186,188,255,183,185,188,255,182,184,187,255,182,184,187,255,181,184,186,255, -180,184,185,255,180,183,185,255,179,182,184,255,180,182,184,255,179,181,184,255,178,181,183,255,178,180,182,255,177,180,182,255, -178,180,181,255,176,179,181,255,177,179,181,255,176,178,180,255,176,178,179,255,175,177,179,255,175,177,178,255,174,176,178,255, -173,175,177,255,172,174,177,255,172,174,176,255,172,174,175,255,171,174,175,255,171,172,174,255,171,172,174,255,170,171,174,255, -169,171,172,255,169,171,172,255,168,169,172,255,167,169,170,255,167,169,170,255,166,168,169,255,165,167,168,255,165,166,168,255, -164,165,167,255,164,165,166,255,163,164,166,255,162,163,165,255,162,163,164,255,161,162,163,255,160,161,162,255,159,160,162,255, -158,159,161,255,157,158,159,255,157,158,159,255,156,157,158,255,155,155,157,255,154,155,156,255,153,154,155,255,152,152,153,255, -151,151,152,255,151,151,152,255,149,150,150,255,148,148,149,255,146,147,147,255,145,145,146,255,144,144,145,255,144,143,144,255, -141,141,141,255,141,140,140,255,139,138,138,255,137,137,136,255,136,135,135,255,134,133,132,255,132,131,131,255,131,130,129,255, -130,128,127,255, 96, 95, 95,255, 61, 61, 61,255, 60, 60, 60,255,129,131,132,255,193,195,199,255,191,194,197,255,190,193,196,255, -191,194,197,255,190,193,196,255,190,193,196,255,190,193,196,255,189,192,195,255,189,192,195,255,188,191,194,255,188,191,194,255, -188,191,193,255,187,191,194,255,187,190,193,255,187,189,192,255,186,189,191,255,186,189,192,255,185,188,191,255,185,187,190,255, -184,187,190,255,184,187,190,255,183,187,189,255,184,186,188,255,183,186,188,255,183,185,187,255,182,184,187,255,182,184,187,255, -181,183,186,255,181,183,186,255,180,183,185,255,179,183,184,255,179,182,184,255,179,182,184,255,178,181,183,255,178,180,182,255, -178,179,182,255,177,180,181,255,176,179,181,255,176,179,181,255,175,177,180,255,175,177,179,255,174,176,178,255,174,176,178,255, -174,176,178,255,173,175,176,255,173,175,176,255,172,174,176,255,171,173,176,255,171,173,175,255,171,172,174,255,171,172,173,255, -169,171,173,255,169,170,172,255,169,170,171,255,168,169,171,255,167,169,170,255,166,168,169,255,166,167,169,255,166,167,168,255, -164,165,167,255,164,165,167,255,164,165,166,255,162,163,165,255,162,163,164,255,161,162,164,255,160,161,163,255,160,161,162,255, -159,160,161,255,157,158,160,255,157,158,159,255,156,157,159,255,155,156,157,255,154,155,156,255,154,154,155,255,152,153,154,255, -151,152,153,255,151,151,152,255,149,150,151,255,148,149,149,255,147,148,147,255,146,146,146,255,145,145,145,255,143,143,143,255, -142,142,142,255,141,141,141,255,139,139,138,255,138,137,137,255,137,136,135,255,134,133,132,255,132,132,131,255,131,130,129,255, -130,129,128,255, 96, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,129,131,132,255,193,196,199,255,192,195,198,255,192,195,198,255, -191,194,197,255,190,193,197,255,191,194,197,255,190,193,196,255,189,192,195,255,190,193,196,255,189,192,195,255,188,191,195,255, -189,192,195,255,188,191,194,255,187,191,194,255,188,190,193,255,187,189,193,255,187,190,191,255,187,189,192,255,185,188,191,255, -186,187,190,255,185,188,191,255,184,186,189,255,183,187,190,255,184,186,189,255,182,186,188,255,183,185,187,255,182,184,188,255, -181,184,186,255,182,183,186,255,181,184,185,255,181,182,185,255,180,183,185,255,180,182,184,255,179,181,184,255,179,180,183,255, -178,181,182,255,178,179,182,255,177,180,182,255,176,179,181,255,176,178,181,255,175,177,180,255,176,178,180,255,174,176,178,255, -175,177,179,255,174,176,178,255,174,175,176,255,173,175,177,255,173,174,176,255,171,174,175,255,172,173,175,255,170,172,174,255, -170,171,173,255,170,171,173,255,168,171,171,255,169,170,172,255,168,170,171,255,166,168,169,255,167,168,170,255,166,168,169,255, -164,166,167,255,164,166,167,255,163,165,167,255,163,164,165,255,162,163,165,255,162,163,165,255,160,161,163,255,160,161,163,255, -160,161,162,255,158,159,160,255,158,159,160,255,157,158,159,255,155,156,157,255,155,156,157,255,154,155,156,255,152,153,154,255, -152,153,154,255,151,152,153,255,150,150,151,255,149,149,150,255,147,147,149,255,146,146,147,255,145,145,145,255,143,143,143,255, -142,142,142,255,141,141,141,255,139,139,139,255,138,138,137,255,137,136,135,255,134,133,133,255,133,132,131,255,132,130,129,255, -130,129,128,255, 96, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,130,131,133,255,193,196,200,255,192,195,198,255,192,194,198,255, -192,195,198,255,191,194,197,255,190,193,197,255,191,194,197,255,190,193,196,255,189,192,196,255,190,193,196,255,189,192,195,255, -188,191,194,255,189,192,195,255,188,191,194,255,187,191,194,255,188,190,193,255,187,189,193,255,187,190,192,255,186,189,191,255, -185,188,191,255,186,188,191,255,185,187,191,255,184,187,190,255,184,187,190,255,184,186,188,255,183,185,188,255,183,185,188,255, -182,184,187,255,181,184,187,255,182,183,186,255,181,183,185,255,181,182,185,255,180,182,185,255,180,181,184,255,179,181,184,255, -179,180,183,255,178,180,182,255,178,180,182,255,177,179,181,255,177,179,181,255,176,178,180,255,176,178,180,255,175,177,179,255, -175,177,179,255,174,176,178,255,173,175,178,255,173,175,177,255,172,175,177,255,172,174,175,255,171,174,175,255,171,172,175,255, -170,172,173,255,170,172,173,255,170,170,172,255,168,170,171,255,168,170,171,255,167,169,170,255,166,168,169,255,166,168,169,255, -165,167,168,255,165,166,168,255,164,165,167,255,163,164,166,255,163,164,165,255,162,163,165,255,161,162,163,255,160,161,163,255, -160,161,162,255,158,159,161,255,158,159,160,255,156,157,160,255,156,157,158,255,155,156,157,255,155,155,155,255,153,153,155,255, -152,153,154,255,152,151,153,255,150,150,151,255,149,149,150,255,148,148,148,255,147,147,147,255,145,145,146,255,145,144,145,255, -143,142,143,255,142,141,141,255,140,139,139,255,139,138,137,255,137,136,136,255,135,134,133,255,133,132,131,255,132,131,130,255, -131,129,128,255, 96, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,130,131,133,255,194,197,200,255,193,195,199,255,192,195,198,255, -191,194,197,255,192,195,198,255,191,194,197,255,190,193,197,255,190,193,196,255,190,193,197,255,189,192,196,255,189,192,195,255, -189,192,195,255,188,191,194,255,188,191,194,255,188,191,194,255,187,190,193,255,187,190,193,255,187,189,192,255,186,190,192,255, -186,189,191,255,185,189,191,255,186,188,191,255,185,187,190,255,185,187,189,255,183,187,189,255,183,186,188,255,183,186,188,255, -183,185,187,255,182,184,187,255,181,184,187,255,181,183,186,255,180,183,185,255,180,182,185,255,179,182,184,255,180,181,184,255, -179,181,184,255,178,180,182,255,178,180,182,255,178,180,181,255,176,179,181,255,177,179,181,255,175,177,181,255,175,177,180,255, -175,177,179,255,175,177,179,255,174,176,178,255,174,175,177,255,173,174,176,255,172,174,176,255,172,173,176,255,171,173,174,255, -170,172,174,255,170,171,174,255,169,171,173,255,169,170,172,255,169,170,172,255,167,169,170,255,167,168,170,255,167,168,170,255, -166,167,168,255,165,166,168,255,164,166,167,255,163,164,166,255,162,164,165,255,163,164,165,255,161,162,164,255,160,162,163,255, -160,161,162,255,158,159,161,255,158,159,160,255,157,158,160,255,156,157,158,255,155,156,157,255,155,154,156,255,154,154,155,255, -153,153,154,255,152,152,152,255,150,151,152,255,150,150,151,255,149,149,149,255,147,147,147,255,146,146,146,255,144,144,144,255, -143,143,143,255,142,142,142,255,140,140,139,255,139,138,138,255,138,137,136,255,135,135,134,255,134,133,132,255,132,131,130,255, -131,130,129,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,130,132,133,255,194,197,201,255,193,196,198,255,192,195,198,255, -193,196,199,255,191,194,197,255,192,195,198,255,192,195,197,255,191,194,197,255,190,193,196,255,191,194,196,255,189,192,196,255, -190,193,195,255,190,193,196,255,189,191,194,255,188,191,194,255,189,192,195,255,187,191,194,255,188,190,193,255,188,189,192,255, -187,190,192,255,186,189,192,255,185,189,191,255,185,188,191,255,185,188,190,255,184,186,190,255,184,187,189,255,184,186,189,255, -182,186,188,255,183,185,188,255,182,184,187,255,182,184,187,255,181,183,186,255,180,184,185,255,180,182,185,255,179,182,184,255, -180,181,184,255,178,181,183,255,179,181,182,255,178,180,183,255,178,180,181,255,177,179,181,255,177,179,180,255,175,177,180,255, -176,178,180,255,175,177,179,255,174,176,178,255,173,176,178,255,173,176,177,255,172,175,176,255,173,174,175,255,171,173,176,255, -171,173,175,255,170,172,174,255,170,172,173,255,169,171,173,255,169,171,172,255,168,169,171,255,168,169,171,255,167,169,170,255, -166,167,168,255,166,167,169,255,165,166,168,255,164,165,167,255,163,164,166,255,163,163,166,255,161,163,164,255,161,162,164,255, -160,161,163,255,159,160,161,255,159,160,161,255,158,159,160,255,157,157,158,255,156,157,158,255,155,156,157,255,154,155,156,255, -153,154,155,255,152,153,154,255,151,151,152,255,150,150,151,255,148,148,149,255,147,147,148,255,146,146,147,255,145,144,144,255, -143,143,143,255,142,142,142,255,140,140,139,255,139,139,138,255,138,137,136,255,136,135,134,255,134,133,132,255,133,131,130,255, -131,130,129,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,130,132,133,255,195,198,201,255,193,196,199,255,193,196,199,255, -192,195,199,255,193,196,199,255,192,195,198,255,191,194,197,255,192,195,198,255,191,194,197,255,190,193,196,255,191,194,197,255, -190,193,196,255,189,192,195,255,190,192,195,255,189,192,195,255,188,192,195,255,188,191,194,255,188,191,194,255,188,190,193,255, -187,189,192,255,187,189,192,255,186,188,192,255,185,188,191,255,185,188,191,255,185,187,190,255,184,186,189,255,184,187,189,255, -184,186,188,255,183,186,188,255,183,185,188,255,182,185,187,255,182,184,186,255,181,183,185,255,180,183,185,255,180,182,185,255, -179,181,185,255,179,181,184,255,179,181,183,255,179,181,183,255,178,180,182,255,178,180,182,255,176,178,181,255,176,178,180,255, -175,177,180,255,175,177,179,255,174,176,178,255,174,176,178,255,173,176,178,255,173,175,176,255,173,175,176,255,172,173,175,255, -171,173,175,255,171,173,175,255,170,171,173,255,169,172,173,255,169,171,173,255,168,170,171,255,167,170,170,255,167,169,170,255, -166,167,169,255,165,167,168,255,165,167,168,255,164,165,167,255,163,165,166,255,163,164,166,255,162,163,164,255,161,163,164,255, -161,162,163,255,159,160,162,255,159,160,161,255,158,159,161,255,157,158,159,255,156,157,158,255,155,155,156,255,154,155,156,255, -154,154,155,255,153,153,154,255,151,151,152,255,150,150,151,255,148,149,149,255,148,148,148,255,147,147,147,255,146,145,146,255, -144,144,143,255,143,142,142,255,141,140,140,255,139,139,139,255,138,137,137,255,136,135,134,255,134,133,132,255,133,132,131,255, -132,130,129,255, 97, 96, 96,255, 61, 61, 61,255, 60, 60, 60,255,131,132,134,255,195,198,201,255,193,196,200,255,194,197,199,255, -193,196,200,255,192,195,199,255,193,196,198,255,192,195,198,255,191,194,197,255,192,195,197,255,191,194,197,255,190,193,196,255, -191,194,197,255,190,193,196,255,189,192,195,255,190,192,195,255,189,191,194,255,188,192,194,255,188,191,194,255,187,191,194,255, -188,190,193,255,187,190,193,255,187,189,192,255,186,188,191,255,186,188,191,255,185,187,190,255,184,187,190,255,184,187,190,255, -183,186,189,255,183,185,189,255,183,185,188,255,183,184,187,255,182,184,187,255,182,184,186,255,181,183,185,255,180,183,185,255, -180,182,184,255,179,182,184,255,179,181,184,255,179,180,182,255,178,181,182,255,178,180,182,255,177,179,182,255,176,178,181,255, -176,178,180,255,175,177,179,255,175,177,179,255,175,176,178,255,174,175,177,255,173,175,177,255,172,174,177,255,172,174,175,255, -171,173,175,255,171,173,175,255,170,172,174,255,170,171,174,255,170,171,173,255,168,170,171,255,168,169,171,255,168,169,171,255, -166,168,169,255,166,167,169,255,166,167,169,255,164,165,167,255,164,165,166,255,163,165,166,255,162,163,165,255,161,163,164,255, -161,162,163,255,160,161,162,255,159,160,162,255,159,159,161,255,157,158,159,255,156,157,158,255,156,156,157,255,155,155,156,255, -154,154,155,255,153,152,153,255,151,152,152,255,150,151,151,255,149,150,149,255,148,148,148,255,147,147,147,255,145,145,145,255, -144,144,144,255,143,143,142,255,141,141,140,255,140,139,139,255,139,138,137,255,136,135,135,255,134,133,133,255,133,132,131,255, -132,131,129,255, 97, 96, 96,255, 61, 61, 61,255, 60, 60, 60,255,131,132,134,255,196,199,202,255,194,197,201,255,193,196,200,255, -193,196,199,255,193,196,200,255,192,195,199,255,192,195,199,255,192,195,199,255,191,194,199,255,191,194,198,255,191,194,197,255, -191,194,197,255,190,193,196,255,190,193,196,255,190,192,195,255,189,193,196,255,189,191,194,255,188,192,195,255,189,191,194,255, -187,190,194,255,188,191,193,255,187,189,192,255,187,189,192,255,186,188,192,255,186,188,191,255,185,187,191,255,184,188,190,255, -184,187,189,255,183,186,188,255,184,185,189,255,183,185,188,255,183,184,188,255,182,185,187,255,182,183,186,255,181,184,185,255, -181,183,186,255,180,182,184,255,180,181,184,255,179,182,184,255,179,180,183,255,178,180,183,255,178,180,182,255,177,179,181,255, -176,178,180,255,177,179,181,255,175,177,179,255,174,176,178,255,174,177,179,255,173,175,177,255,173,175,176,255,173,174,177,255, -172,173,175,255,172,173,175,255,170,172,174,255,171,171,173,255,170,172,173,255,168,170,171,255,168,169,171,255,168,169,171,255, -166,168,169,255,166,167,169,255,166,167,169,255,164,166,167,255,164,166,166,255,164,165,167,255,162,164,165,255,162,163,165,255, -161,162,164,255,160,161,163,255,160,161,162,255,159,160,161,255,157,158,160,255,157,157,159,255,156,157,158,255,155,155,156,255, -154,155,156,255,153,154,155,255,152,152,153,255,151,151,152,255,149,149,151,255,148,148,149,255,147,147,147,255,145,145,145,255, -144,144,144,255,143,143,143,255,141,141,140,255,140,139,139,255,139,138,137,255,137,136,135,255,135,134,133,255,133,132,131,255, -132,131,129,255, 97, 96, 96,255, 61, 61, 61,255, 60, 60, 60,255,131,132,134,255,196,199,202,255,195,198,200,255,194,197,201,255, -193,196,200,255,194,197,199,255,193,196,200,255,192,195,200,255,193,196,199,255,192,195,198,255,191,194,199,255,191,194,198,255, -192,195,198,255,191,194,197,255,190,193,196,255,191,193,196,255,190,192,195,255,189,192,195,255,189,192,195,255,189,192,195,255, -188,191,194,255,188,191,193,255,188,190,193,255,187,190,192,255,186,189,192,255,186,189,192,255,185,188,191,255,185,187,191,255, -185,187,190,255,184,186,189,255,183,186,189,255,183,185,188,255,183,185,188,255,183,184,188,255,182,184,186,255,182,183,186,255, -181,184,185,255,181,182,185,255,180,182,185,255,180,181,183,255,178,181,184,255,179,181,183,255,177,179,182,255,178,180,181,255, -177,179,181,255,177,179,181,255,176,177,179,255,175,177,179,255,174,176,178,255,174,175,177,255,174,176,177,255,172,174,177,255, -172,173,175,255,172,173,175,255,170,173,175,255,170,171,173,255,169,171,172,255,169,170,172,255,168,169,171,255,167,169,170,255, -167,168,170,255,166,167,169,255,165,167,168,255,164,166,167,255,164,166,167,255,164,165,166,255,163,164,166,255,162,163,165,255, -162,163,164,255,161,162,163,255,160,161,162,255,159,160,161,255,158,159,160,255,157,158,159,255,157,157,159,255,155,156,157,255, -154,155,156,255,153,154,155,255,152,152,153,255,151,151,152,255,149,149,150,255,148,148,149,255,147,147,147,255,146,145,146,255, -145,144,144,255,143,143,143,255,141,141,141,255,140,140,139,255,139,138,137,255,137,136,135,255,135,134,133,255,133,132,131,255, -132,131,130,255, 97, 96, 96,255, 61, 61, 61,255, 60, 60, 60,255,131,133,134,255,197,200,203,255,194,197,201,255,195,198,200,255, -194,197,201,255,193,196,200,255,194,197,200,255,193,196,199,255,192,195,200,255,192,195,199,255,192,195,198,255,192,195,198,255, -191,194,197,255,192,195,198,255,191,194,197,255,190,194,197,255,191,192,195,255,190,192,195,255,189,192,195,255,188,191,194,255, -189,191,194,255,188,191,194,255,188,191,194,255,187,190,193,255,187,189,192,255,187,188,191,255,186,188,191,255,185,188,191,255, -184,187,191,255,184,187,190,255,184,187,189,255,184,186,189,255,183,185,188,255,182,185,187,255,182,184,187,255,181,184,186,255, -182,183,186,255,180,183,185,255,181,182,185,255,180,182,184,255,179,181,183,255,178,181,183,255,178,180,183,255,177,179,182,255, -177,179,181,255,177,179,181,255,176,177,179,255,175,177,179,255,174,176,178,255,174,175,177,255,173,175,177,255,173,175,176,255, -172,173,175,255,171,173,175,255,171,172,174,255,169,171,173,255,169,171,172,255,168,170,171,255,167,169,170,255,167,168,170,255, -166,167,169,255,165,167,168,255,165,166,168,255,164,166,167,255,164,165,166,255,163,165,165,255,163,164,165,255,162,163,165,255, -162,163,164,255,161,162,163,255,160,161,163,255,160,160,162,255,158,159,160,255,157,158,159,255,157,158,159,255,155,156,157,255, -155,155,156,255,154,154,155,255,152,152,153,255,151,151,152,255,149,150,150,255,149,149,149,255,148,148,148,255,146,146,146,255, -145,145,145,255,144,143,143,255,142,141,141,255,141,140,139,255,139,138,138,255,137,136,135,255,135,134,133,255,134,132,131,255, -132,131,130,255, 97, 97, 96,255, 61, 61, 61,255, 60, 60, 60,255,131,133,134,255,197,200,203,255,195,198,202,255,194,197,201,255, -194,197,201,255,194,197,200,255,193,196,201,255,193,196,200,255,194,197,199,255,193,196,200,255,192,195,199,255,193,196,199,255, -192,195,198,255,191,194,197,255,192,195,198,255,191,194,197,255,190,194,197,255,190,193,196,255,189,192,195,255,190,193,196,255, -188,191,194,255,189,191,194,255,188,190,193,255,188,191,194,255,187,190,193,255,186,189,192,255,186,188,191,255,185,189,191,255, -186,188,190,255,185,188,190,255,185,187,190,255,184,187,189,255,184,186,189,255,183,186,188,255,183,185,188,255,182,185,187,255, -181,184,187,255,181,184,185,255,181,183,185,255,180,182,184,255,180,182,184,255,179,181,184,255,179,181,183,255,177,179,182,255, -178,180,182,255,177,179,181,255,176,178,180,255,175,177,179,255,174,176,178,255,173,175,177,255,172,174,176,255,171,173,175,255, -171,172,174,255,170,171,173,255,169,170,172,255,168,170,171,255,167,168,170,255,166,168,169,255,166,167,169,255,165,166,168,255, -164,166,167,255,164,165,167,255,164,164,166,255,163,164,165,255,162,164,165,255,162,163,165,255,162,163,164,255,161,162,164,255, -161,162,164,255,160,161,163,255,160,161,162,255,160,161,162,255,158,159,160,255,158,159,160,255,157,158,159,255,156,156,157,255, -155,155,156,255,154,154,155,255,152,153,153,255,151,152,152,255,151,150,150,255,149,149,149,255,148,148,148,255,146,146,146,255, -145,145,145,255,144,143,143,255,142,141,141,255,141,140,139,255,139,138,138,255,137,136,135,255,135,134,133,255,134,133,131,255, -133,131,130,255, 97, 96, 96,255, 61, 61, 61,255, 60, 60, 60,255,131,133,135,255,197,200,203,255,196,199,201,255,195,198,202,255, -194,197,202,255,195,198,201,255,194,197,200,255,194,197,201,255,193,196,200,255,194,197,199,255,193,196,200,255,192,195,199,255, -193,196,199,255,192,195,198,255,191,194,197,255,192,195,198,255,191,193,197,255,191,194,197,255,190,193,196,255,189,192,195,255, -189,192,195,255,188,192,195,255,189,191,194,255,188,190,193,255,188,190,193,255,187,189,192,255,186,189,192,255,186,188,192,255, -185,188,191,255,185,187,191,255,184,188,190,255,184,186,189,255,183,186,189,255,184,185,189,255,182,185,187,255,183,184,188,255, -182,184,187,255,182,183,186,255,181,183,186,255,181,182,185,255,180,182,184,255,179,182,184,255,179,181,183,255,178,180,182,255, -177,179,182,255,177,179,181,255,175,177,179,255,174,176,178,255,173,175,177,255,173,174,176,255,171,173,175,255,170,172,174,255, -169,171,172,255,168,169,171,255,167,168,170,255,166,167,169,255,164,166,167,255,164,165,166,255,163,164,165,255,162,163,165,255, -162,163,164,255,161,162,164,255,161,162,163,255,161,162,163,255,161,162,163,255,161,162,163,255,161,162,163,255,161,162,163,255, -160,161,163,255,159,160,162,255,160,161,162,255,159,160,161,255,158,159,160,255,157,159,160,255,157,158,159,255,156,156,158,255, -155,156,156,255,153,155,155,255,153,153,154,255,152,152,152,255,150,150,150,255,149,149,149,255,148,148,148,255,146,146,146,255, -145,145,145,255,144,144,143,255,142,142,141,255,141,140,140,255,140,139,138,255,137,136,135,255,135,134,133,255,134,133,131,255, -133,131,130,255, 97, 96, 96,255, 61, 61, 61,255, 60, 60, 60,255,132,133,135,255,198,201,204,255,195,198,202,255,196,199,202,255, -195,198,201,255,194,197,202,255,194,197,201,255,195,198,200,255,194,197,201,255,193,196,200,255,194,197,199,255,193,196,200,255, -192,195,199,255,193,196,199,255,192,195,198,255,191,194,197,255,192,194,198,255,190,193,196,255,191,193,197,255,190,192,196,255, -189,193,195,255,189,192,195,255,189,192,195,255,188,191,194,255,187,191,194,255,188,190,193,255,187,189,192,255,187,189,192,255, -186,188,192,255,185,188,191,255,185,187,191,255,184,187,190,255,184,186,189,255,183,186,189,255,183,185,188,255,182,185,187,255, -182,185,187,255,181,184,186,255,181,183,186,255,181,182,186,255,180,183,184,255,180,182,184,255,179,181,184,255,178,180,182,255, -177,179,181,255,176,178,180,255,174,176,178,255,173,175,177,255,172,174,176,255,171,172,173,255,169,170,172,255,167,169,171,255, -166,167,169,255,164,165,167,255,163,164,165,255,161,163,164,255,160,161,162,255,159,160,161,255,158,159,160,255,157,158,159,255, -156,158,159,255,156,157,159,255,156,157,158,255,156,157,158,255,157,157,159,255,157,158,159,255,157,158,159,255,158,159,160,255, -159,159,161,255,159,160,161,255,159,160,161,255,159,160,161,255,158,159,160,255,158,159,160,255,157,158,159,255,156,157,158,255, -155,156,157,255,154,155,156,255,153,153,154,255,152,152,153,255,150,150,150,255,149,149,149,255,148,148,148,255,146,146,146,255, -145,145,145,255,144,144,143,255,142,142,141,255,141,141,140,255,140,139,138,255,137,136,135,255,136,135,134,255,134,133,131,255, -132,131,129,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,132,133,135,255,198,201,204,255,196,199,202,255,195,198,203,255, -195,198,202,255,196,199,201,255,195,198,202,255,194,197,201,255,195,198,200,255,194,197,201,255,193,196,200,255,194,197,199,255, -193,196,200,255,192,195,198,255,193,195,199,255,192,194,198,255,191,195,197,255,191,194,197,255,190,193,196,255,190,194,196,255, -190,193,196,255,190,193,196,255,189,191,194,255,189,191,194,255,188,190,193,255,187,191,193,255,187,190,193,255,186,190,193,255, -186,189,191,255,185,189,191,255,186,188,190,255,184,187,190,255,185,187,190,255,184,187,189,255,184,186,189,255,183,186,188,255, -182,185,187,255,182,184,187,255,182,183,187,255,181,184,186,255,180,182,185,255,179,182,184,255,178,181,183,255,177,179,181,255, -176,178,180,255,174,176,178,255,173,175,177,255,171,173,175,255,169,171,173,255,167,169,170,255,165,166,168,255,163,165,166,255, -161,162,164,255,159,160,161,255,157,158,159,255,155,156,157,255,154,155,156,255,152,153,154,255,151,152,153,255,150,151,152,255, -150,150,151,255,149,150,151,255,150,150,151,255,150,151,152,255,151,152,153,255,152,152,153,255,153,153,154,255,153,154,155,255, -155,156,157,255,156,156,158,255,157,158,159,255,157,158,159,255,157,158,159,255,157,158,159,255,157,158,159,255,156,157,158,255, -156,156,157,255,155,155,156,255,153,153,154,255,152,152,153,255,150,150,152,255,149,149,150,255,148,148,148,255,147,146,146,255, -146,145,145,255,145,144,144,255,143,142,141,255,141,141,140,255,140,139,138,255,137,136,135,255,136,135,134,255,134,133,131,255, -132,131,129,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,132,134,135,255,198,201,205,255,197,200,203,255,196,199,202,255, -196,199,203,255,195,198,202,255,196,199,201,255,195,198,202,255,194,197,201,255,195,198,200,255,194,197,201,255,193,196,200,255, -194,197,200,255,193,196,199,255,192,195,198,255,193,195,199,255,191,194,198,255,192,194,198,255,191,194,197,255,190,194,196,255, -190,193,196,255,190,193,196,255,190,192,195,255,188,191,194,255,189,191,194,255,188,190,193,255,188,190,193,255,187,190,193,255, -186,189,192,255,186,188,191,255,186,189,191,255,185,187,190,255,184,187,190,255,185,186,190,255,184,186,189,255,184,186,188,255, -183,186,188,255,182,185,187,255,182,184,187,255,182,184,186,255,180,182,185,255,179,181,183,255,177,180,182,255,176,178,180,255, -174,176,178,255,172,174,176,255,169,171,173,255,167,169,171,255,165,167,167,255,162,163,165,255,159,161,162,255,156,157,159,255, -154,155,156,255,151,152,153,255,149,150,151,255,147,147,148,255,145,145,146,255,143,143,144,255,142,142,143,255,141,141,142,255, -141,140,142,255,140,140,141,255,140,140,142,255,141,141,142,255,142,142,143,255,144,144,145,255,146,146,146,255,147,148,149,255, -150,150,151,255,152,152,153,255,153,154,155,255,154,155,156,255,156,156,157,255,156,157,158,255,156,157,158,255,155,156,157,255, -156,156,157,255,155,155,156,255,153,153,154,255,152,152,153,255,150,151,151,255,150,150,150,255,149,148,148,255,148,146,146,255, -146,145,145,255,145,144,144,255,143,142,142,255,142,141,140,255,140,139,138,255,137,136,135,255,136,135,134,255,134,132,131,255, -132,131,129,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,132,134,135,255,198,202,205,255,197,199,204,255,197,199,203,255, -197,200,202,255,196,199,203,255,195,198,202,255,196,199,201,255,195,198,202,255,194,197,201,255,195,198,200,255,194,197,200,255, -193,196,199,255,194,197,200,255,193,195,199,255,192,196,198,255,192,195,198,255,191,194,197,255,192,195,198,255,190,193,196,255, -191,193,197,255,190,192,196,255,189,193,195,255,189,192,195,255,188,191,194,255,188,191,194,255,187,190,193,255,188,190,193,255, -186,189,192,255,187,189,192,255,186,188,191,255,185,188,191,255,185,187,190,255,184,187,190,255,185,186,189,255,184,186,189,255, -184,186,189,255,183,185,188,255,182,185,187,255,181,184,186,255,179,182,184,255,178,180,182,255,176,178,180,255,174,175,178,255, -171,173,175,255,168,170,172,255,165,167,169,255,162,163,165,255,158,159,161,255,155,156,158,255,152,153,154,255,148,149,150,255, -145,146,147,255,142,143,143,255,139,139,140,255,137,137,137,255,135,135,135,255,132,132,133,255,131,130,130,255,130,129,129,255, -129,129,129,255,129,129,129,255,129,129,129,255,130,129,129,255,131,130,131,255,133,133,133,255,136,135,135,255,139,138,139,255, -141,141,142,255,145,145,146,255,148,148,148,255,151,151,152,255,152,153,154,255,155,154,155,255,155,156,157,255,156,156,157,255, -155,156,156,255,155,155,156,255,153,154,154,255,152,153,153,255,151,151,151,255,150,150,150,255,149,149,149,255,147,147,147,255, -146,145,145,255,145,144,144,255,143,142,142,255,142,141,140,255,140,139,138,255,137,136,135,255,136,135,134,255,134,132,131,255, -132,131,129,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,132,134,135,255,199,202,205,255,197,201,203,255,196,200,204,255, -197,199,203,255,197,200,202,255,196,199,203,255,196,198,202,255,196,199,201,255,195,198,202,255,195,198,201,255,195,197,201,255, -194,197,200,255,194,196,199,255,193,196,200,255,193,195,199,255,193,195,198,255,192,195,198,255,191,194,197,255,192,195,198,255, -191,193,197,255,191,193,197,255,190,192,195,255,190,192,195,255,189,191,194,255,189,191,194,255,188,191,194,255,187,191,194,255, -187,190,193,255,187,190,193,255,186,189,192,255,186,189,192,255,186,189,191,255,186,188,191,255,185,188,190,255,185,187,190,255, -184,187,189,255,183,185,188,255,182,184,187,255,180,182,185,255,178,181,183,255,175,178,180,255,173,175,177,255,170,172,174,255, -166,168,170,255,163,165,166,255,159,160,162,255,154,156,157,255,151,152,153,255,147,148,149,255,143,143,144,255,139,140,140,255, -136,136,136,255,133,133,133,255,130,129,129,255,127,126,126,255,124,123,123,255,122,121,121,255,120,118,118,255,118,117,116,255, -117,115,114,255,116,115,114,255,116,114,114,255,116,115,114,255,117,116,116,255,119,119,118,255,123,122,122,255,126,126,126,255, -131,130,130,255,136,135,135,255,140,140,140,255,144,144,145,255,148,148,148,255,151,151,151,255,153,153,154,255,154,154,155,255, -154,154,155,255,153,154,154,255,154,154,154,255,153,153,153,255,151,151,151,255,150,150,150,255,149,149,149,255,147,147,147,255, -146,146,145,255,145,144,144,255,143,142,142,255,142,141,140,255,140,139,138,255,137,136,135,255,136,135,134,255,134,133,131,255, -132,131,129,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,132,134,136,255,199,202,206,255,197,200,203,255,197,201,204,255, -196,200,204,255,196,199,203,255,197,200,202,255,195,199,203,255,196,198,202,255,196,199,201,255,194,197,202,255,195,198,200,255, -195,197,201,255,193,196,200,255,194,197,199,255,193,196,200,255,192,195,198,255,192,195,199,255,192,195,198,255,192,194,197,255, -191,194,197,255,190,194,196,255,191,193,196,255,190,193,196,255,190,192,195,255,188,191,194,255,189,191,194,255,188,191,194,255, -187,191,194,255,187,190,193,255,187,189,192,255,186,189,192,255,186,189,192,255,186,189,192,255,185,188,191,255,185,188,190,255, -184,187,190,255,183,185,188,255,181,183,186,255,179,181,183,255,176,178,180,255,172,174,176,255,169,171,173,255,164,166,168,255, -160,162,164,255,156,157,158,255,151,152,153,255,147,147,148,255,142,143,143,255,138,138,139,255,134,134,135,255,132,130,131,255, -128,128,127,255,125,124,124,255,122,121,120,255,119,118,117,255,116,114,114,255,114,112,111,255,111,110,108,255,109,107,106,255, -107,105,104,255,106,104,102,255,104,102,100,255,104,102,100,255,104,102,100,255,105,103,102,255,108,105,104,255,112,109,109,255, -116,115,115,255,123,121,121,255,129,128,128,255,136,135,135,255,141,141,141,255,146,146,146,255,149,150,150,255,152,152,153,255, -153,154,154,255,153,155,155,255,154,154,154,255,153,153,153,255,151,151,151,255,150,150,150,255,149,149,149,255,147,147,147,255, -146,146,145,255,145,144,144,255,143,142,142,255,142,141,140,255,140,139,138,255,138,137,135,255,136,135,134,255,134,132,131,255, -132,131,128,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,133,134,136,255,199,202,206,255,198,201,204,255,198,200,203,255, -197,201,204,255,196,199,203,255,197,200,202,255,196,200,202,255,195,198,202,255,196,199,201,255,195,198,202,255,194,197,201,255, -195,198,200,255,194,197,201,255,193,196,200,255,194,197,199,255,193,195,199,255,192,196,198,255,193,196,199,255,191,194,197,255, -192,195,198,255,191,194,197,255,191,193,196,255,190,192,195,255,189,193,196,255,189,191,195,255,189,192,194,255,188,191,194,255, -188,190,193,255,188,190,193,255,187,190,193,255,187,190,193,255,187,190,193,255,187,189,192,255,186,189,191,255,185,188,191,255, -184,187,189,255,181,184,186,255,179,181,184,255,175,178,180,255,171,173,176,255,167,169,171,255,162,164,166,255,158,159,161,255, -152,153,156,255,148,149,150,255,144,144,145,255,140,140,140,255,136,136,136,255,132,132,132,255,129,128,129,255,126,126,125,255, -124,123,123,255,121,120,119,255,118,117,116,255,116,115,114,255,113,112,111,255,110,109,108,255,109,106,105,255,106,103,102,255, -103,101, 99,255,101, 98, 96,255, 98, 95, 93,255, 97, 93, 91,255, 95, 91, 89,255, 95, 90, 87,255, 94, 91, 88,255, 96, 93, 90,255, -101, 97, 96,255,107,104,103,255,115,113,112,255,123,122,121,255,132,131,131,255,139,138,138,255,145,145,145,255,149,149,149,255, -151,152,152,255,154,154,154,255,154,154,154,255,153,153,153,255,151,151,151,255,150,150,150,255,149,149,149,255,147,147,147,255, -146,146,146,255,145,145,144,255,143,142,142,255,142,141,140,255,140,139,138,255,138,136,135,255,136,135,133,255,134,132,130,255, -132,130,128,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,133,134,136,255,200,203,206,255,198,201,205,255,197,200,204,255, -198,200,203,255,197,200,204,255,197,200,203,255,196,199,202,255,196,199,203,255,196,199,202,255,195,198,201,255,195,198,202,255, -195,198,201,255,194,197,201,255,194,197,201,255,194,197,200,255,193,197,200,255,193,196,199,255,192,196,199,255,193,195,199,255, -191,194,197,255,192,195,198,255,191,193,197,255,191,193,196,255,190,192,196,255,189,193,195,255,190,192,195,255,189,192,195,255, -189,192,195,255,189,192,195,255,189,191,194,255,189,191,194,255,188,191,194,255,188,191,194,255,186,189,192,255,185,188,190,255, -182,185,187,255,179,181,184,255,175,177,179,255,171,173,175,255,165,167,169,255,161,162,164,255,155,156,158,255,150,151,153,255, -146,147,148,255,142,143,143,255,139,139,139,255,136,136,136,255,132,132,132,255,131,130,130,255,128,127,127,255,126,124,125,255, -123,122,122,255,121,120,119,255,119,118,117,255,117,115,114,255,114,112,111,255,112,110,109,255,109,107,106,255,106,104,102,255, -104,101, 99,255,101, 98, 96,255, 98, 95, 92,255, 95, 92, 89,255, 92, 89, 85,255, 90, 85, 82,255, 88, 84, 78,255, 87, 82, 77,255, - 87, 83, 77,255, 92, 87, 82,255, 99, 95, 91,255,108,106,103,255,119,117,116,255,129,129,128,255,138,138,137,255,145,145,145,255, -148,149,149,255,152,152,152,255,152,152,152,255,152,152,153,255,151,151,151,255,150,150,150,255,149,149,149,255,148,147,147,255, -146,146,146,255,145,145,144,255,143,143,142,255,142,141,140,255,140,139,138,255,138,136,135,255,136,134,133,255,134,132,130,255, -132,130,127,255, 97, 96, 94,255, 61, 61, 61,255, 60, 60, 60,255,133,134,136,255,200,203,206,255,198,201,204,255,198,201,205,255, -197,200,204,255,198,201,203,255,197,200,204,255,197,199,203,255,197,200,202,255,196,199,203,255,196,198,202,255,196,199,201,255, -195,198,202,255,195,198,200,255,195,198,201,255,194,197,200,255,194,197,199,255,193,196,200,255,193,196,199,255,192,196,198,255, -192,195,198,255,191,194,197,255,191,194,197,255,190,193,196,255,191,193,197,255,190,192,196,255,189,193,195,255,189,192,195,255, -189,192,195,255,189,192,195,255,189,192,195,255,189,192,195,255,189,192,195,255,188,191,194,255,186,189,192,255,183,186,189,255, -179,182,184,255,175,177,179,255,170,172,174,255,165,167,168,255,160,160,163,255,154,155,157,255,149,150,152,255,146,146,147,255, -143,142,144,255,140,140,140,255,138,138,138,255,135,135,135,255,133,133,133,255,131,131,131,255,129,129,129,255,128,127,127,255, -125,125,124,255,123,123,122,255,122,120,119,255,119,118,117,255,117,115,115,255,114,112,112,255,112,110,109,255,109,107,106,255, -106,104,103,255,103,101,100,255,101, 98, 96,255, 97, 94, 92,255, 94, 91, 87,255, 91, 87, 83,255, 87, 83, 79,255, 85, 79, 72,255, - 82, 76, 68,255, 81, 75, 67,255, 84, 78, 71,255, 91, 87, 81,255,103,100, 97,255,117,115,113,255,129,127,126,255,139,138,138,255, -145,145,145,255,149,149,149,255,151,151,151,255,152,152,153,255,151,151,151,255,151,150,150,255,150,149,149,255,148,147,147,255, -147,146,146,255,145,145,144,255,143,143,142,255,141,141,140,255,140,139,137,255,138,136,135,255,135,134,132,255,133,131,129,255, -131,129,126,255, 96, 95, 94,255, 61, 61, 61,255, 60, 60, 60,255,133,134,136,255,200,203,207,255,199,202,204,255,199,202,205,255, -198,201,205,255,197,200,204,255,198,201,203,255,197,200,204,255,196,199,203,255,197,200,202,255,195,199,203,255,196,198,201,255, -196,199,202,255,194,197,201,255,195,198,200,255,195,198,201,255,193,196,199,255,194,197,200,255,194,196,200,255,192,196,198,255, -193,196,199,255,192,195,198,255,192,195,198,255,191,194,197,255,190,193,196,255,191,193,196,255,190,193,196,255,190,193,196,255, -190,193,196,255,190,193,196,255,190,193,196,255,190,193,196,255,189,192,195,255,187,190,193,255,184,187,190,255,180,183,185,255, -175,177,179,255,170,172,174,255,164,166,168,255,158,160,161,255,154,155,156,255,150,150,152,255,147,148,148,255,144,145,146,255, -142,143,143,255,140,140,140,255,138,138,139,255,137,137,137,255,135,135,135,255,134,133,134,255,132,132,132,255,130,129,129,255, -128,128,128,255,126,126,125,255,124,124,123,255,123,121,121,255,120,119,119,255,118,116,116,255,115,113,113,255,113,111,110,255, -110,108,107,255,107,105,104,255,104,102,100,255,101, 99, 97,255, 98, 95, 92,255, 95, 91, 88,255, 91, 87, 82,255, 87, 82, 77,255, - 83, 77, 70,255, 79, 73, 64,255, 77, 71, 60,255, 78, 72, 63,255, 86, 80, 73,255,101, 97, 93,255,117,115,113,255,131,129,128,255, -141,140,140,255,148,147,147,255,150,150,150,255,151,151,151,255,152,151,151,255,151,150,151,255,150,149,149,255,148,147,147,255, -147,146,146,255,146,145,144,255,143,142,141,255,141,140,139,255,140,138,137,255,137,136,134,255,135,134,132,255,132,131,128,255, -131,129,126,255, 96, 95, 93,255, 61, 61, 61,255, 60, 60, 60,255,133,135,136,255,200,203,207,255,198,201,205,255,199,202,205,255, -198,202,204,255,197,200,205,255,198,201,204,255,197,201,203,255,197,200,204,255,196,199,203,255,197,200,202,255,196,199,202,255, -195,198,202,255,196,199,201,255,195,198,201,255,194,198,201,255,195,197,201,255,193,196,199,255,194,197,200,255,193,195,199,255, -193,196,199,255,192,195,198,255,191,194,197,255,192,194,197,255,192,194,197,255,191,194,197,255,191,194,197,255,191,194,197,255, -192,195,198,255,192,195,198,255,192,195,198,255,190,193,196,255,188,191,194,255,185,188,191,255,181,184,186,255,175,177,180,255, -170,171,173,255,163,165,167,255,158,159,161,255,154,155,156,255,151,152,153,255,148,149,150,255,147,147,148,255,145,145,146,255, -143,143,144,255,142,143,143,255,141,141,141,255,139,139,140,255,138,138,138,255,136,136,136,255,134,134,135,255,133,132,133,255, -131,131,131,255,129,129,129,255,127,127,126,255,126,125,124,255,124,123,122,255,121,120,120,255,119,117,117,255,116,115,114,255, -114,112,112,255,111,109,108,255,108,106,105,255,105,103,101,255,102, 99, 97,255, 98, 95, 92,255, 95, 91, 87,255, 90, 86, 81,255, - 86, 81, 75,255, 81, 75, 68,255, 77, 71, 62,255, 74, 68, 58,255, 75, 68, 58,255, 84, 77, 69,255,102, 97, 93,255,120,118,116,255, -134,133,132,255,144,143,142,255,148,148,148,255,151,150,151,255,152,152,152,255,151,151,150,255,150,149,149,255,148,147,147,255, -147,146,146,255,146,145,144,255,143,142,141,255,141,140,139,255,139,138,136,255,137,135,133,255,135,133,130,255,132,130,127,255, -130,127,124,255, 96, 94, 92,255, 61, 61, 61,255, 60, 60, 60,255,133,135,136,255,201,204,207,255,199,202,206,255,198,201,205,255, -199,202,205,255,198,201,205,255,197,200,204,255,198,200,203,255,197,200,204,255,197,200,203,255,196,199,203,255,196,199,203,255, -196,199,202,255,195,198,202,255,195,198,202,255,195,198,201,255,194,198,200,255,194,197,200,255,193,196,199,255,194,196,200,255, -192,195,198,255,193,196,199,255,192,195,198,255,192,194,197,255,191,194,197,255,192,195,198,255,192,195,198,255,192,195,199,255, -193,196,199,255,193,196,199,255,192,195,198,255,190,193,196,255,187,189,193,255,182,184,187,255,176,178,180,255,170,171,174,255, -163,165,167,255,159,160,162,255,155,156,158,255,152,154,155,255,150,151,153,255,149,150,151,255,148,149,150,255,147,147,148,255, -146,146,147,255,145,145,146,255,143,143,144,255,142,142,143,255,141,141,142,255,139,139,140,255,138,138,138,255,136,136,137,255, -134,134,135,255,133,132,132,255,131,130,130,255,129,128,129,255,127,126,126,255,125,124,124,255,122,121,121,255,120,119,119,255, -117,116,116,255,114,113,112,255,112,110,109,255,109,107,106,255,106,104,102,255,102, 99, 97,255, 99, 95, 93,255, 95, 91, 87,255, - 90, 86, 81,255, 86, 80, 75,255, 81, 75, 66,255, 76, 70, 60,255, 73, 66, 57,255, 73, 66, 57,255, 84, 78, 70,255,106,103,100,255, -126,125,123,255,139,138,137,255,147,146,145,255,150,149,149,255,151,151,151,255,151,151,150,255,150,149,149,255,148,147,147,255, -147,146,145,255,145,144,143,255,143,142,140,255,141,140,138,255,139,137,135,255,137,135,133,255,134,132,129,255,131,129,126,255, -129,126,123,255, 95, 93, 91,255, 61, 61, 61,255, 60, 60, 60,255,133,135,136,255,201,204,207,255,200,203,205,255,199,202,206,255, -198,201,205,255,198,201,204,255,199,202,205,255,198,201,205,255,198,201,203,255,197,201,204,255,196,200,203,255,197,200,203,255, -196,199,203,255,195,198,201,255,196,199,202,255,195,198,201,255,195,198,201,255,195,198,201,255,194,197,200,255,194,197,200,255, -193,196,199,255,192,195,198,255,193,195,198,255,192,195,198,255,192,195,198,255,193,195,199,255,194,196,199,255,193,196,200,255, -193,196,200,255,194,197,200,255,192,195,198,255,188,191,194,255,184,186,189,255,177,179,182,255,171,172,174,255,164,166,167,255, -160,161,162,255,157,158,159,255,155,155,157,255,154,154,156,255,152,153,154,255,151,152,153,255,150,151,152,255,149,150,151,255, -148,149,150,255,147,147,148,255,146,146,147,255,145,145,146,255,143,144,144,255,142,142,143,255,141,141,142,255,139,139,139,255, -137,138,138,255,136,136,136,255,134,134,134,255,132,131,132,255,130,130,130,255,128,127,127,255,126,126,126,255,124,123,123,255, -121,120,120,255,118,117,117,255,116,114,114,255,113,111,110,255,109,108,107,255,106,104,103,255,103,101, 99,255, 99, 96, 93,255, - 95, 91, 88,255, 90, 86, 81,255, 85, 80, 74,255, 80, 74, 66,255, 76, 69, 59,255, 72, 65, 57,255, 72, 66, 58,255, 90, 84, 77,255, -116,114,111,255,134,133,131,255,144,143,143,255,149,148,148,255,151,151,150,255,151,150,150,255,150,149,149,255,148,147,146,255, -147,146,145,255,145,144,143,255,142,141,140,255,141,140,138,255,139,137,135,255,136,134,132,255,134,132,129,255,131,128,125,255, -128,125,121,255, 95, 93, 90,255, 61, 61, 61,255, 60, 60, 60,255,133,135,137,255,201,204,207,255,200,202,205,255,199,203,206,255, -198,202,205,255,199,202,205,255,199,202,204,255,198,201,205,255,198,201,204,255,197,201,203,255,196,199,204,255,197,200,202,255, -197,200,202,255,196,199,203,255,195,198,201,255,196,199,202,255,194,197,200,255,195,198,201,255,194,197,200,255,193,197,199,255, -194,196,200,255,193,196,199,255,193,195,199,255,193,196,199,255,193,196,199,255,194,197,200,255,194,197,201,255,195,198,201,255, -195,198,201,255,194,197,200,255,191,194,196,255,185,188,190,255,179,181,183,255,172,174,175,255,166,167,169,255,161,162,164,255, -159,160,161,255,156,157,160,255,155,156,158,255,155,156,158,255,155,156,157,255,154,155,156,255,153,154,155,255,152,153,154,255, -151,152,154,255,150,151,152,255,149,150,151,255,148,148,150,255,146,147,148,255,145,146,147,255,143,144,145,255,142,142,143,255, -141,141,141,255,139,139,140,255,137,137,138,255,135,135,136,255,133,133,133,255,131,131,131,255,129,128,128,255,127,126,127,255, -124,124,124,255,122,121,121,255,120,118,118,255,116,115,115,255,113,111,111,255,111,109,108,255,107,105,103,255,103,100, 98,255, - 99, 96, 93,255, 94, 90, 87,255, 90, 85, 81,255, 85, 79, 72,255, 79, 72, 63,255, 74, 67, 58,255, 71, 64, 58,255, 76, 70, 63,255, -104,100, 96,255,128,126,125,255,141,140,139,255,147,146,146,255,149,149,148,255,150,149,149,255,149,149,148,255,148,147,146,255, -146,145,144,255,145,144,142,255,142,141,140,255,140,139,137,255,138,137,134,255,135,134,131,255,134,131,128,255,130,128,124,255, -127,124,120,255, 94, 92, 89,255, 61, 61, 61,255, 60, 60, 60,255,134,135,137,255,201,204,208,255,200,203,206,255,200,203,205,255, -199,202,206,255,198,201,205,255,199,202,205,255,198,201,204,255,197,200,204,255,198,201,204,255,197,200,204,255,196,199,203,255, -196,200,202,255,197,198,203,255,195,199,201,255,196,199,202,255,195,197,201,255,194,198,200,255,195,197,201,255,193,197,199,255, -194,197,200,255,194,196,200,255,194,196,200,255,194,197,200,255,194,197,200,255,195,198,201,255,196,199,202,255,196,199,202,255, -195,198,201,255,193,196,198,255,187,191,193,255,181,183,185,255,173,175,177,255,168,169,170,255,163,164,165,255,161,161,163,255, -160,161,162,255,159,160,161,255,158,159,161,255,158,159,160,255,157,158,160,255,156,157,159,255,156,157,158,255,155,156,158,255, -154,155,156,255,153,154,155,255,152,153,154,255,151,152,153,255,150,150,151,255,148,149,150,255,147,147,148,255,145,146,147,255, -144,144,145,255,142,143,143,255,141,141,141,255,138,139,139,255,136,136,137,255,135,134,135,255,133,132,133,255,130,130,130,255, -128,127,127,255,126,124,124,255,123,122,122,255,120,119,118,255,116,115,115,255,114,112,112,255,110,109,108,255,107,104,103,255, -103,100, 97,255, 99, 95, 92,255, 94, 90, 86,255, 89, 84, 79,255, 83, 78, 70,255, 78, 71, 62,255, 74, 66, 58,255, 71, 65, 59,255, - 91, 86, 80,255,121,119,116,255,138,137,136,255,146,145,145,255,150,149,149,255,150,149,149,255,149,148,148,255,147,146,146,255, -146,145,144,255,144,143,142,255,142,141,139,255,140,138,136,255,137,136,133,255,135,133,131,255,133,130,126,255,127,126,123,255, -124,120,115,255, 74, 72, 69,255, 61, 61, 61,255, 60, 60, 60,255,134,135,137,255,202,205,208,255,199,202,206,255,200,203,205,255, -200,203,206,255,199,202,206,255,198,201,205,255,199,202,204,255,197,200,205,255,198,201,204,255,198,201,203,255,196,199,204,255, -197,200,203,255,197,199,202,255,196,198,202,255,195,199,201,255,195,197,201,255,194,198,200,255,195,198,201,255,194,196,200,255, -193,197,199,255,193,196,199,255,194,197,200,255,195,198,201,255,195,198,201,255,197,200,203,255,196,200,204,255,197,200,204,255, -195,197,201,255,190,192,195,255,183,185,188,255,176,178,180,255,169,170,172,255,165,166,167,255,162,163,165,255,162,163,164,255, -162,163,164,255,160,161,163,255,160,161,163,255,161,161,163,255,159,161,162,255,160,160,162,255,158,159,161,255,158,159,160,255, -157,158,160,255,155,156,158,255,155,156,157,255,154,155,156,255,152,153,154,255,151,152,153,255,150,151,152,255,148,149,150,255, -147,147,148,255,145,146,147,255,143,143,144,255,141,142,143,255,140,140,140,255,137,137,138,255,136,136,135,255,133,133,134,255, -131,130,131,255,129,129,128,255,126,125,126,255,123,122,122,255,120,119,119,255,117,116,116,255,114,112,112,255,110,108,107,255, -107,104,103,255,103,100, 98,255, 98, 94, 92,255, 93, 89, 85,255, 87, 83, 77,255, 82, 76, 67,255, 77, 70, 60,255, 71, 65, 58,255, - 82, 76, 69,255,115,112,108,255,135,134,133,255,145,144,143,255,149,148,148,255,150,149,149,255,149,148,147,255,147,146,145,255, -146,145,144,255,144,143,141,255,141,140,138,255,140,138,136,255,137,135,133,255,134,132,129,255,130,127,125,255,128,125,120,255, - 93, 89, 84,255, 24, 24, 25,255, 62, 62, 62,255, 60, 60, 60,255,134,135,137,255,202,205,208,255,200,203,207,255,199,202,206,255, -200,203,205,255,199,202,206,255,199,202,205,255,198,201,205,255,198,201,205,255,198,201,204,255,197,200,203,255,197,200,204,255, -197,200,203,255,196,199,202,255,196,199,202,255,196,198,202,255,196,199,202,255,195,198,201,255,194,197,200,255,194,198,200,255, -194,197,200,255,194,197,200,255,195,198,201,255,195,198,201,255,197,200,203,255,198,201,204,255,198,201,204,255,197,200,203,255, -193,195,198,255,186,189,191,255,178,180,182,255,171,173,173,255,166,167,169,255,165,166,167,255,164,165,166,255,164,165,167,255, -164,165,166,255,164,165,166,255,163,164,166,255,163,164,166,255,163,164,166,255,162,164,165,255,161,162,164,255,161,162,163,255, -160,161,162,255,158,160,161,255,158,159,161,255,156,157,160,255,155,156,158,255,154,155,157,255,152,153,155,255,151,152,153,255, -150,150,152,255,148,148,150,255,146,147,147,255,144,145,145,255,142,143,144,255,140,141,141,255,138,138,139,255,136,136,137,255, -134,134,134,255,131,131,131,255,129,129,129,255,127,126,126,255,123,122,123,255,121,120,119,255,117,116,116,255,114,112,111,255, -110,108,107,255,106,104,102,255,102, 99, 96,255, 97, 93, 90,255, 93, 88, 83,255, 87, 81, 75,255, 81, 74, 64,255, 75, 67, 58,255, - 77, 71, 66,255,107,104,100,255,134,132,130,255,144,143,142,255,149,148,147,255,150,149,148,255,149,148,147,255,147,146,145,255, -145,144,143,255,143,142,141,255,141,139,138,255,139,137,134,255,137,134,132,255,133,130,127,255,131,128,123,255,112,107,102,255, - 5, 5, 4,255, 29, 29, 29,255, 61, 61, 61,255, 60, 60, 60,255,134,135,137,255,202,205,208,255,200,203,207,255,199,203,206,255, -200,202,206,255,200,203,205,255,199,202,206,255,198,201,205,255,199,202,205,255,198,201,204,255,197,200,204,255,198,201,204,255, -197,200,203,255,196,199,203,255,197,199,203,255,196,199,202,255,196,199,202,255,195,198,201,255,194,197,200,255,195,198,201,255, -195,198,201,255,194,197,200,255,195,198,201,255,197,200,203,255,198,201,204,255,198,202,205,255,198,201,205,255,196,199,202,255, -190,192,195,255,182,183,185,255,174,175,176,255,169,170,171,255,167,168,168,255,166,167,169,255,166,167,169,255,166,167,169,255, -166,168,169,255,166,168,169,255,166,167,169,255,166,167,169,255,165,167,169,255,165,166,168,255,164,166,167,255,164,165,167,255, -162,164,166,255,161,163,165,255,161,162,164,255,159,160,162,255,158,159,161,255,156,157,159,255,155,156,158,255,154,155,156,255, -152,153,154,255,150,151,153,255,149,150,151,255,147,148,149,255,145,146,147,255,144,144,145,255,141,141,142,255,139,139,140,255, -137,136,138,255,134,134,135,255,132,132,132,255,130,129,130,255,127,126,126,255,124,123,123,255,120,119,119,255,117,116,115,255, -114,112,111,255,110,108,106,255,106,103,101,255,101, 98, 95,255, 97, 93, 89,255, 91, 86, 81,255, 85, 79, 71,255, 78, 71, 61,255, - 78, 71, 65,255,107,103, 97,255,132,131,128,255,144,143,142,255,149,148,146,255,149,148,147,255,149,148,147,255,148,147,145,255, -145,144,142,255,143,141,139,255,141,139,137,255,138,136,134,255,135,133,130,255,132,129,125,255,123,119,115,255, 26, 25, 24,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,137,255,202,205,208,255,200,204,206,255,199,203,207,255, -199,202,206,255,200,203,205,255,199,202,206,255,198,201,205,255,198,201,204,255,199,202,205,255,198,201,204,255,197,201,204,255, -198,200,204,255,197,199,203,255,197,200,203,255,196,199,202,255,195,199,201,255,196,198,202,255,195,197,201,255,194,197,200,255, -194,197,200,255,195,198,201,255,197,200,203,255,198,201,204,255,198,202,205,255,200,203,206,255,198,201,204,255,193,196,199,255, -186,188,190,255,177,178,180,255,171,172,173,255,168,169,170,255,167,168,171,255,168,169,170,255,169,170,172,255,169,170,172,255, -169,171,172,255,169,171,172,255,169,171,172,255,168,170,172,255,168,170,171,255,168,169,170,255,167,169,171,255,165,167,169,255, -165,167,169,255,164,166,168,255,162,164,166,255,162,163,165,255,161,162,164,255,159,160,162,255,158,159,161,255,156,157,159,255, -155,156,158,255,153,154,156,255,151,152,153,255,150,151,152,255,148,149,150,255,146,146,147,255,144,145,146,255,142,142,143,255, -139,140,140,255,137,138,138,255,135,135,135,255,132,132,132,255,130,129,130,255,127,126,126,255,123,123,122,255,120,119,119,255, -117,116,115,255,113,112,111,255,109,107,105,255,105,102, 99,255,100, 96, 93,255, 95, 91, 87,255, 89, 84, 77,255, 82, 76, 66,255, - 73, 66, 57,255,102, 98, 92,255,133,131,129,255,144,143,142,255,149,148,147,255,149,148,147,255,148,147,146,255,146,145,144,255, -144,143,142,255,142,140,138,255,139,137,135,255,137,135,131,255,134,131,128,255,128,126,121,255, 59, 58, 55,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,137,255,202,205,209,255,201,204,206,255,200,203,206,255, -199,202,207,255,199,202,205,255,200,203,205,255,199,202,206,255,199,202,205,255,199,202,205,255,198,201,204,255,198,200,203,255, -198,201,204,255,197,200,203,255,196,200,202,255,197,199,203,255,195,198,201,255,196,199,202,255,196,198,202,255,195,198,201,255, -196,198,202,255,196,199,202,255,197,200,203,255,199,202,205,255,200,203,207,255,200,203,206,255,198,201,204,255,191,193,196,255, -181,183,185,255,174,175,176,255,170,171,172,255,170,171,172,255,170,171,172,255,170,171,173,255,170,172,173,255,171,172,174,255, -171,172,174,255,171,173,175,255,171,173,174,255,170,172,174,255,170,172,174,255,169,171,174,255,169,171,173,255,168,170,172,255, -167,169,171,255,166,168,170,255,165,167,169,255,164,166,168,255,163,164,166,255,162,163,165,255,160,162,164,255,159,160,162,255, -157,159,160,255,156,157,159,255,154,155,156,255,152,153,154,255,150,151,153,255,148,149,150,255,146,147,148,255,145,145,146,255, -142,142,143,255,139,140,140,255,137,138,138,255,135,135,135,255,132,132,132,255,129,129,130,255,127,126,126,255,123,122,122,255, -119,119,118,255,116,115,114,255,112,110,109,255,108,106,104,255,104,101, 97,255, 99, 94, 92,255, 93, 89, 83,255, 86, 80, 73,255, - 78, 71, 61,255, 88, 82, 76,255,135,133,131,255,144,143,142,255,149,147,147,255,149,148,147,255,148,147,146,255,145,144,143,255, -144,142,140,255,142,140,137,255,138,136,133,255,134,132,129,255,134,131,126,255, 85, 83, 79,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,202,205,209,255,201,204,206,255,200,203,207,255, -199,202,207,255,200,203,206,255,200,203,205,255,199,202,205,255,198,201,205,255,199,202,204,255,197,200,205,255,198,201,204,255, -198,201,204,255,196,199,202,255,197,200,203,255,197,200,203,255,196,199,202,255,195,198,201,255,195,199,201,255,196,199,202,255, -196,198,202,255,196,199,203,255,198,201,204,255,200,203,206,255,200,204,207,255,200,203,206,255,196,199,202,255,187,189,191,255, -178,178,180,255,172,173,174,255,171,172,173,255,171,172,174,255,172,173,174,255,173,174,176,255,173,175,177,255,173,175,177,255, -174,176,177,255,174,175,177,255,174,175,177,255,173,175,177,255,173,175,177,255,172,174,176,255,171,173,175,255,171,173,175,255, -169,171,173,255,168,170,173,255,168,170,172,255,166,168,170,255,165,167,169,255,164,166,168,255,162,164,166,255,161,163,164,255, -160,161,163,255,158,159,161,255,156,158,159,255,154,155,157,255,152,153,155,255,151,152,153,255,149,149,150,255,146,147,148,255, -145,145,146,255,142,142,143,255,139,140,140,255,138,138,138,255,135,135,135,255,132,131,132,255,129,128,128,255,126,125,125,255, -122,121,121,255,119,117,117,255,115,113,113,255,111,109,107,255,107,105,102,255,102, 98, 96,255, 97, 93, 88,255, 90, 85, 79,255, - 83, 76, 66,255, 80, 73, 65,255,137,135,133,255,146,145,144,255,149,148,147,255,148,148,146,255,147,146,144,255,146,144,142,255, -143,141,139,255,140,138,136,255,137,134,131,255,136,132,128,255, 95, 91, 88,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,202,205,209,255,200,204,206,255,200,203,207,255, -201,204,207,255,199,202,206,255,200,203,205,255,200,203,206,255,198,201,205,255,198,201,204,255,199,202,205,255,197,200,204,255, -197,200,203,255,198,201,204,255,196,199,202,255,197,200,203,255,196,199,202,255,195,198,201,255,196,199,202,255,195,198,201,255, -196,199,202,255,197,200,203,255,199,202,205,255,201,204,207,255,202,205,208,255,200,203,206,255,193,195,198,255,183,184,186,255, -175,175,176,255,172,173,174,255,173,174,174,255,174,175,176,255,175,176,177,255,175,176,179,255,176,178,179,255,176,178,180,255, -176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,175,177,179,255,174,177,179,255,174,176,178,255,173,175,177,255, -172,174,176,255,171,173,175,255,170,172,174,255,169,171,173,255,168,170,172,255,166,168,170,255,165,166,169,255,163,165,167,255, -161,163,165,255,160,162,163,255,158,159,161,255,157,158,159,255,155,156,157,255,152,153,155,255,151,152,153,255,149,150,151,255, -146,147,148,255,145,145,146,255,142,143,143,255,139,140,140,255,137,137,138,255,134,134,135,255,131,131,131,255,129,128,128,255, -125,125,124,255,122,121,121,255,118,116,116,255,114,112,111,255,110,108,106,255,105,102,100,255,100, 96, 93,255, 94, 90, 84,255, - 87, 81, 73,255, 77, 70, 60,255,133,131,130,255,148,147,146,255,148,148,146,255,148,147,146,255,146,145,143,255,144,142,140,255, -142,140,137,255,138,135,132,255,136,133,129,255,106,102, 99,255, 9, 8, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,205,209,255,200,203,206,255,201,204,207,255, -201,204,207,255,199,202,206,255,200,203,205,255,199,203,206,255,199,201,205,255,198,202,204,255,199,202,205,255,198,200,204,255, -197,201,203,255,198,201,204,255,197,199,203,255,196,200,202,255,196,199,202,255,195,198,201,255,195,199,202,255,195,199,202,255, -197,200,203,255,197,200,203,255,200,203,206,255,201,204,208,255,202,205,209,255,199,202,205,255,190,193,194,255,179,180,181,255, -174,175,175,255,174,174,175,255,175,176,177,255,175,177,178,255,177,178,180,255,177,179,181,255,178,180,182,255,178,180,182,255, -178,180,182,255,178,180,182,255,178,180,182,255,177,180,182,255,177,179,181,255,176,178,181,255,176,178,180,255,175,177,180,255, -174,176,179,255,173,175,177,255,172,174,176,255,171,173,175,255,169,171,173,255,168,170,172,255,166,168,171,255,165,167,169,255, -164,165,167,255,162,163,165,255,160,162,163,255,159,160,162,255,157,158,160,255,155,156,157,255,153,154,155,255,151,152,153,255, -149,150,151,255,147,147,148,255,144,145,146,255,142,142,143,255,139,139,140,255,137,137,138,255,134,134,134,255,131,131,131,255, -128,126,127,255,125,124,124,255,121,119,119,255,117,115,115,255,113,110,109,255,108,106,102,255,104,100, 96,255, 98, 93, 89,255, - 90, 85, 78,255, 83, 75, 65,255,126,122,119,255,149,148,147,255,149,147,147,255,147,146,144,255,146,144,142,255,143,141,139,255, -139,137,134,255,138,136,132,255,119,116,112,255, 27, 25, 24,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,206,209,255,200,203,206,255,201,204,207,255, -201,204,207,255,200,202,206,255,199,203,205,255,200,203,206,255,199,202,205,255,198,201,204,255,198,202,205,255,198,201,204,255, -197,200,203,255,197,201,203,255,197,199,203,255,196,200,202,255,196,199,202,255,196,198,201,255,196,199,202,255,196,198,201,255, -197,200,203,255,198,201,204,255,200,203,207,255,202,205,208,255,203,206,209,255,198,200,203,255,187,188,190,255,177,178,178,255, -174,175,175,255,176,176,177,255,177,178,180,255,178,179,181,255,179,180,182,255,180,182,184,255,180,182,184,255,180,183,185,255, -181,183,185,255,180,183,185,255,180,183,185,255,180,182,184,255,179,182,184,255,178,181,183,255,178,180,182,255,177,179,182,255, -176,178,180,255,175,177,179,255,174,176,179,255,173,174,177,255,171,174,176,255,170,172,174,255,168,170,172,255,167,169,171,255, -166,168,169,255,164,165,167,255,162,164,166,255,161,162,164,255,159,160,162,255,157,158,160,255,155,156,157,255,153,154,155,255, -151,152,153,255,148,149,150,255,146,147,148,255,144,145,146,255,141,142,143,255,138,139,140,255,136,136,137,255,133,133,133,255, -130,129,129,255,127,126,126,255,123,122,122,255,119,117,116,255,115,113,112,255,111,109,106,255,105,102, 99,255,100, 96, 92,255, - 94, 89, 83,255, 86, 79, 70,255,117,114,109,255,150,149,149,255,148,147,146,255,146,145,143,255,144,142,140,255,141,139,136,255, -140,137,134,255,122,119,115,255, 16, 16, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,206,209,255,201,203,206,255,200,203,206,255, -200,204,207,255,200,202,206,255,199,203,205,255,199,203,205,255,199,202,205,255,198,201,204,255,199,202,205,255,198,201,204,255, -197,200,203,255,198,201,204,255,197,199,203,255,196,200,202,255,197,199,202,255,197,198,201,255,197,198,201,255,196,200,203,255, -197,200,203,255,198,201,205,255,201,204,207,255,203,206,209,255,203,205,208,255,197,199,201,255,184,186,186,255,176,176,176,255, -176,177,178,255,177,179,180,255,179,180,182,255,180,182,184,255,181,183,185,255,182,184,186,255,183,185,187,255,183,185,187,255, -183,185,188,255,183,185,188,255,183,185,187,255,182,185,187,255,182,184,186,255,181,183,186,255,180,183,185,255,179,181,184,255, -178,181,183,255,177,180,182,255,176,178,180,255,175,177,179,255,174,176,178,255,172,174,176,255,171,173,175,255,170,172,173,255, -168,169,171,255,166,168,169,255,165,166,168,255,163,164,166,255,161,162,164,255,158,160,161,255,157,158,160,255,155,156,157,255, -152,153,154,255,151,152,153,255,148,149,150,255,146,146,147,255,144,144,145,255,141,141,142,255,138,138,139,255,136,135,136,255, -132,132,132,255,129,128,128,255,125,124,124,255,121,120,120,255,117,116,115,255,113,110,109,255,108,105,102,255,103, 99, 95,255, - 97, 92, 86,255, 89, 83, 75,255,112,109,102,255,151,150,148,255,147,146,144,255,145,144,141,255,142,140,137,255,140,137,134,255, -122,119,115,255, 17, 16, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,206,209,255,202,204,207,255,201,203,206,255, -200,204,207,255,201,202,207,255,200,203,206,255,199,203,205,255,199,202,205,255,198,201,204,255,199,202,205,255,198,201,204,255, -197,200,203,255,198,201,203,255,197,199,203,255,196,200,202,255,197,199,202,255,197,198,201,255,197,198,201,255,196,200,203,255, -197,200,203,255,199,202,205,255,201,204,208,255,203,206,209,255,203,205,208,255,195,197,200,255,181,182,183,255,176,177,177,255, -178,179,179,255,180,181,182,255,181,183,184,255,183,185,186,255,184,186,188,255,184,186,188,255,185,187,189,255,185,187,189,255, -185,187,190,255,185,187,190,255,185,187,189,255,184,186,189,255,184,186,188,255,182,185,188,255,182,184,187,255,181,184,186,255, -180,182,185,255,179,181,184,255,178,180,182,255,176,179,181,255,175,177,180,255,174,176,178,255,172,174,177,255,171,173,175,255, -170,172,174,255,168,170,172,255,166,168,169,255,165,166,167,255,162,164,166,255,161,162,164,255,159,160,161,255,157,158,159,255, -155,156,157,255,153,153,155,255,150,151,152,255,148,149,150,255,145,146,147,255,143,143,144,255,140,140,141,255,137,137,138,255, -134,134,134,255,131,130,130,255,128,127,126,255,124,123,122,255,119,118,116,255,115,113,111,255,111,108,106,255,105,102, 98,255, - 99, 94, 90,255, 91, 86, 79,255,112,108,101,255,151,149,147,255,146,145,143,255,143,141,138,255,143,140,137,255,123,120,117,255, - 26, 26, 25,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,206,209,255,202,204,207,255,201,203,206,255, -200,204,207,255,201,203,207,255,200,202,206,255,199,203,205,255,199,202,205,255,199,202,205,255,198,201,204,255,198,201,204,255, -197,200,203,255,198,201,204,255,197,199,203,255,196,200,202,255,197,199,202,255,197,199,202,255,197,198,201,255,197,200,203,255, -197,200,203,255,199,202,205,255,202,204,208,255,203,206,209,255,203,205,209,255,194,195,197,255,180,180,180,255,177,178,178,255, -179,181,181,255,182,183,184,255,183,185,187,255,184,186,188,255,186,188,190,255,186,188,191,255,186,189,191,255,187,189,192,255, -187,189,192,255,186,189,192,255,186,189,192,255,186,188,191,255,185,188,191,255,185,187,190,255,184,186,189,255,183,185,188,255, -182,184,187,255,181,183,186,255,180,182,185,255,178,181,183,255,177,179,181,255,176,178,180,255,174,176,179,255,173,175,177,255, -171,173,175,255,170,172,174,255,168,170,172,255,166,168,170,255,164,166,168,255,163,164,166,255,161,162,163,255,159,160,161,255, -157,158,159,255,154,155,156,255,152,152,154,255,150,151,152,255,147,148,149,255,144,145,146,255,142,142,143,255,139,139,140,255, -136,136,135,255,133,132,132,255,129,128,128,255,126,124,124,255,121,120,119,255,117,115,114,255,113,110,108,255,108,104,101,255, -101, 97, 93,255, 94, 89, 82,255,112,108,101,255,149,147,146,255,145,142,140,255,144,141,138,255,114,111,107,255, 16, 16, 15,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,206,209,255,202,204,206,255,201,203,207,255, -200,204,206,255,201,203,206,255,200,202,205,255,199,203,206,255,200,203,206,255,199,202,205,255,198,201,204,255,198,201,204,255, -197,200,203,255,197,201,204,255,197,199,202,255,196,200,203,255,197,200,203,255,197,199,202,255,197,198,201,255,197,200,203,255, -197,200,203,255,199,202,205,255,202,204,208,255,203,206,209,255,203,206,209,255,194,195,197,255,179,179,179,255,178,179,179,255, -182,182,183,255,184,185,187,255,185,186,188,255,187,189,191,255,188,190,192,255,189,191,193,255,189,191,194,255,189,191,194,255, -189,192,195,255,189,191,194,255,188,191,194,255,188,191,194,255,187,190,193,255,186,189,192,255,186,189,191,255,184,187,190,255, -183,186,189,255,183,185,188,255,181,183,186,255,180,183,185,255,179,181,184,255,177,179,182,255,176,178,181,255,175,177,179,255, -173,175,177,255,171,173,175,255,170,172,173,255,168,170,171,255,166,168,170,255,164,166,167,255,162,164,165,255,160,162,163,255, -158,159,160,255,156,157,159,255,154,155,156,255,151,152,153,255,149,150,151,255,147,147,148,255,144,144,145,255,141,141,142,255, -138,138,138,255,135,134,134,255,131,131,130,255,128,127,126,255,124,123,121,255,119,117,116,255,115,113,110,255,110,106,103,255, -104,100, 95,255, 96, 91, 86,255,114,109,103,255,148,146,143,255,143,141,137,255,109,107,104,255, 8, 8, 8,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,206,209,255,201,203,206,255,201,204,207,255, -200,204,207,255,201,203,206,255,200,202,205,255,199,203,205,255,200,202,205,255,199,201,204,255,198,202,205,255,199,201,204,255, -198,200,203,255,197,201,204,255,198,199,202,255,197,200,202,255,197,200,203,255,197,199,202,255,197,198,201,255,196,200,203,255, -197,200,203,255,199,202,205,255,201,204,207,255,203,206,209,255,204,206,209,255,195,196,197,255,179,179,178,255,180,180,181,255, -183,184,185,255,185,187,188,255,187,189,191,255,189,191,193,255,190,191,194,255,190,192,195,255,190,193,196,255,191,193,196,255, -190,193,196,255,190,193,196,255,190,193,196,255,189,192,195,255,189,191,194,255,188,191,194,255,187,190,193,255,186,189,192,255, -185,188,191,255,184,187,189,255,183,186,189,255,182,184,187,255,180,183,185,255,180,182,184,255,177,180,182,255,176,178,181,255, -175,177,179,255,173,175,177,255,171,173,175,255,169,171,173,255,168,169,171,255,166,168,169,255,164,165,167,255,162,163,165,255, -160,161,163,255,158,159,160,255,155,156,158,255,153,154,156,255,151,151,153,255,148,149,150,255,146,146,146,255,143,143,143,255, -139,139,140,255,136,136,136,255,133,132,132,255,129,128,128,255,125,124,123,255,121,119,117,255,116,114,112,255,112,109,105,255, -105,102, 97,255, 98, 93, 87,255,117,112,106,255,144,141,138,255, 88, 87, 84,255, 3, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,206,208,255,201,203,206,255,201,204,206,255, -200,203,207,255,201,203,205,255,200,202,206,255,199,203,206,255,200,202,205,255,199,201,204,255,198,202,205,255,199,201,204,255, -198,200,203,255,197,201,204,255,198,199,202,255,197,199,203,255,197,200,202,255,197,199,201,255,197,198,201,255,196,199,202,255, -197,200,203,255,198,201,204,255,201,203,206,255,203,206,209,255,204,207,209,255,197,199,199,255,179,180,178,255,182,182,182,255, -185,186,187,255,187,189,190,255,189,191,193,255,190,192,194,255,191,194,196,255,192,194,197,255,192,194,197,255,192,195,198,255, -192,195,198,255,192,195,198,255,192,194,197,255,191,194,197,255,190,193,196,255,190,193,195,255,189,191,194,255,188,191,194,255, -187,190,193,255,185,188,191,255,185,187,190,255,184,186,189,255,182,184,187,255,181,183,186,255,180,182,185,255,177,180,182,255, -176,178,181,255,175,177,179,255,172,174,176,255,171,173,175,255,170,171,173,255,167,169,171,255,165,167,168,255,163,165,167,255, -162,163,164,255,159,160,162,255,157,158,160,255,155,156,157,255,152,153,154,255,150,151,152,255,147,148,149,255,144,145,145,255, -141,141,142,255,138,138,138,255,135,134,134,255,131,130,130,255,126,126,124,255,122,121,120,255,118,116,114,255,113,111,108,255, -107,104,100,255, 98, 93, 87,255,120,115,109,255, 55, 55, 53,255, 2, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,205,208,255,202,204,207,255,201,204,207,255, -200,204,206,255,201,202,206,255,200,203,205,255,200,203,206,255,200,202,204,255,199,201,204,255,198,202,205,255,199,201,204,255, -198,200,204,255,197,201,202,255,198,199,203,255,197,200,203,255,197,198,201,255,197,198,202,255,197,199,202,255,196,198,201,255, -197,199,202,255,198,200,203,255,199,203,206,255,202,205,207,255,204,207,209,255,200,200,203,255,181,181,180,255,183,183,183,255, -186,188,189,255,189,191,192,255,190,192,194,255,192,194,197,255,193,195,198,255,194,196,198,255,194,197,200,255,194,197,200,255, -194,197,200,255,194,197,200,255,193,196,199,255,193,196,199,255,192,195,198,255,191,194,197,255,191,194,197,255,189,192,195,255, -188,191,194,255,188,190,193,255,186,189,191,255,185,187,190,255,184,187,189,255,182,184,187,255,181,183,186,255,180,182,184,255, -177,180,182,255,176,178,180,255,175,177,179,255,173,175,177,255,171,173,175,255,169,170,172,255,167,169,170,255,165,166,168,255, -162,164,165,255,161,162,164,255,159,160,161,255,156,157,158,255,154,155,156,255,151,152,153,255,148,149,150,255,146,146,147,255, -143,143,143,255,139,139,139,255,136,135,135,255,132,131,131,255,129,127,126,255,124,123,121,255,120,118,115,255,114,112,109,255, -109,105,101,255,100, 95, 89,255, 32, 30, 27,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255,203,205,208,255,201,204,206,255,200,203,206,255, -201,204,205,255,201,202,206,255,200,203,206,255,200,203,205,255,200,201,204,255,199,202,205,255,198,202,204,255,199,200,203,255, -198,201,204,255,197,201,203,255,198,199,202,255,197,200,203,255,196,199,201,255,197,198,202,255,197,199,202,255,197,198,201,255, -196,199,202,255,197,200,203,255,199,201,204,255,201,203,206,255,203,206,208,255,202,204,206,255,184,185,183,255,183,184,183,255, -188,189,191,255,191,192,194,255,192,194,196,255,193,195,198,255,194,196,200,255,195,198,200,255,195,198,201,255,195,198,201,255, -195,198,201,255,195,198,201,255,194,197,201,255,194,197,200,255,194,196,200,255,192,196,199,255,192,195,198,255,191,194,197,255, -190,193,196,255,189,192,194,255,188,191,194,255,186,189,192,255,185,188,190,255,184,187,189,255,182,184,187,255,181,183,185,255, -180,182,184,255,177,179,181,255,176,178,180,255,174,176,178,255,172,174,176,255,171,172,174,255,169,170,172,255,166,168,169,255, -165,166,167,255,162,164,165,255,160,161,162,255,158,159,160,255,155,156,157,255,153,153,154,255,151,151,151,255,147,147,148,255, -144,144,144,255,141,140,140,255,137,137,136,255,133,133,132,255,130,128,127,255,126,124,123,255,121,119,117,255,116,114,111,255, -110,106,102,255,102, 96, 90,255, 1, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,137,255,202,205,208,255,200,204,206,255,201,204,205,255, -200,203,205,255,200,202,205,255,199,202,205,255,199,203,204,255,200,201,205,255,199,202,204,255,198,202,203,255,199,200,204,255, -198,200,203,255,197,201,203,255,198,199,203,255,197,200,202,255,197,199,201,255,196,198,202,255,196,198,202,255,196,199,202,255, -196,198,202,255,197,199,202,255,198,200,203,255,200,202,205,255,201,204,207,255,203,205,207,255,191,191,191,255,184,185,185,255, -189,190,191,255,192,193,195,255,193,195,198,255,195,197,199,255,196,198,201,255,196,198,201,255,196,199,202,255,196,199,202,255, -196,199,202,255,196,199,202,255,196,199,202,255,195,198,201,255,194,197,201,255,194,197,200,255,193,196,199,255,192,195,198,255, -191,194,197,255,189,192,196,255,189,192,195,255,188,191,194,255,186,189,192,255,185,188,191,255,184,186,189,255,182,184,187,255, -180,183,185,255,179,181,184,255,177,179,181,255,176,178,180,255,174,176,178,255,172,173,175,255,170,171,173,255,168,170,171,255, -166,167,169,255,163,164,166,255,162,163,164,255,159,160,161,255,156,157,158,255,154,155,156,255,151,152,153,255,148,148,149,255, -146,146,146,255,143,142,142,255,139,139,138,255,135,134,134,255,132,130,129,255,127,126,124,255,122,121,119,255,117,114,112,255, -111,108,103,255, 87, 82, 77,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,136,255,202,205,207,255,201,203,206,255,200,202,205,255, -201,202,205,255,199,203,204,255,200,202,205,255,200,201,205,255,199,202,204,255,198,202,203,255,198,201,204,255,199,200,203,255, -198,201,203,255,197,199,203,255,197,200,202,255,196,199,201,255,197,198,202,255,196,198,201,255,195,198,200,255,196,197,200,255, -195,198,200,255,196,198,201,255,196,199,201,255,198,201,203,255,200,202,205,255,202,204,207,255,197,198,199,255,186,186,185,255, -190,191,192,255,193,195,196,255,195,197,198,255,196,198,201,255,197,199,202,255,198,201,203,255,198,201,204,255,198,201,204,255, -198,201,204,255,198,201,204,255,197,200,204,255,197,200,203,255,196,199,202,255,195,198,202,255,195,198,201,255,193,196,199,255, -192,195,199,255,192,195,198,255,190,193,196,255,189,192,195,255,188,191,194,255,186,189,192,255,185,187,190,255,183,186,189,255, -181,184,187,255,180,182,185,255,179,181,183,255,177,179,181,255,175,177,179,255,173,175,177,255,171,173,175,255,169,171,172,255, -166,168,169,255,165,166,168,255,163,164,165,255,160,161,162,255,158,159,160,255,155,156,157,255,152,153,154,255,150,150,151,255, -147,147,147,255,143,143,143,255,140,139,139,255,136,135,135,255,133,131,130,255,128,127,125,255,124,122,119,255,117,115,112,255, -112,108,103,255, 51, 49, 45,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,136,255,202,204,206,255,201,202,205,255,201,203,205,255, -200,203,204,255,199,202,205,255,200,202,204,255,199,201,204,255,199,202,203,255,198,201,204,255,199,200,203,255,198,201,202,255, -197,200,203,255,198,200,202,255,197,200,202,255,197,199,202,255,196,199,201,255,196,198,200,255,195,197,201,255,196,198,201,255, -196,198,200,255,195,197,200,255,196,198,201,255,196,199,201,255,198,200,202,255,200,202,205,255,202,204,206,255,189,189,189,255, -190,191,192,255,194,195,197,255,196,198,200,255,197,199,202,255,198,201,203,255,199,201,204,255,199,202,205,255,199,202,205,255, -199,202,205,255,199,202,205,255,198,201,205,255,198,201,204,255,197,200,204,255,196,199,203,255,195,199,202,255,195,198,201,255, -193,196,200,255,192,195,199,255,191,194,198,255,190,193,196,255,189,192,195,255,188,191,194,255,186,189,191,255,184,187,190,255, -183,186,188,255,181,184,186,255,180,182,184,255,178,180,182,255,176,178,180,255,174,176,178,255,172,174,176,255,170,172,173,255, -168,170,171,255,166,167,169,255,163,165,166,255,162,163,164,255,159,160,161,255,156,157,158,255,154,153,155,255,151,151,151,255, -148,148,148,255,145,144,144,255,141,140,140,255,137,136,135,255,133,132,131,255,129,127,126,255,124,122,120,255,118,116,113,255, -109,105, 99,255, 8, 8, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,136,255,202,204,206,255,200,203,205,255,200,202,205,255, -199,202,204,255,199,201,204,255,200,202,204,255,200,202,204,255,199,201,203,255,198,201,203,255,199,200,202,255,197,200,203,255, -198,199,202,255,197,199,201,255,197,200,202,255,196,199,201,255,196,199,200,255,195,198,201,255,195,197,200,255,196,198,200,255, -195,197,200,255,195,197,200,255,195,198,200,255,195,198,200,255,196,198,200,255,198,200,202,255,200,202,204,255,196,197,198,255, -190,191,191,255,195,196,197,255,196,198,200,255,198,201,203,255,199,201,204,255,199,202,205,255,200,202,206,255,200,203,206,255, -200,203,206,255,199,202,206,255,199,202,205,255,199,202,205,255,198,201,204,255,197,200,204,255,196,199,203,255,196,199,202,255, -195,198,201,255,193,196,199,255,192,195,199,255,191,195,197,255,190,192,195,255,189,191,194,255,187,190,193,255,185,188,191,255, -184,187,189,255,183,185,188,255,180,183,185,255,179,182,184,255,178,180,182,255,175,177,179,255,173,176,177,255,172,173,175,255, -169,171,172,255,167,168,170,255,165,166,168,255,162,163,165,255,160,161,162,255,158,158,159,255,155,155,156,255,151,152,152,255, -149,149,149,255,146,146,145,255,142,141,141,255,138,137,136,255,134,133,131,255,130,128,126,255,125,123,120,255,119,116,112,255, - 84, 81, 76,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,135,255,201,203,204,255,199,201,203,255,200,201,203,255, -200,202,203,255,199,201,203,255,199,201,203,255,198,200,202,255,199,201,202,255,198,201,203,255,197,200,202,255,198,199,202,255, -198,200,201,255,197,199,202,255,196,199,201,255,197,198,200,255,196,198,201,255,195,197,200,255,196,198,199,255,194,197,199,255, -195,196,198,255,194,196,198,255,194,196,198,255,194,196,198,255,195,197,199,255,195,197,199,255,197,199,201,255,199,201,202,255, -191,191,191,255,194,196,197,255,197,199,201,255,199,201,204,255,200,202,205,255,200,203,206,255,201,204,207,255,201,204,207,255, -201,204,208,255,201,204,207,255,200,204,207,255,200,203,207,255,199,202,206,255,199,202,205,255,198,201,204,255,197,200,203,255, -196,199,202,255,195,198,201,255,193,196,199,255,192,195,198,255,191,194,197,255,189,192,195,255,188,191,194,255,187,189,192,255, -185,187,190,255,183,186,188,255,182,184,187,255,180,182,184,255,178,180,182,255,177,179,181,255,174,176,178,255,172,174,176,255, -170,171,173,255,168,169,171,255,166,167,169,255,163,164,166,255,161,162,163,255,158,159,160,255,155,156,157,255,153,153,153,255, -149,149,149,255,146,146,146,255,143,142,141,255,139,138,137,255,135,133,132,255,130,128,127,255,125,123,120,255,118,115,110,255, - 40, 38, 37,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,134,255,200,202,203,255,199,201,203,255,199,201,203,255, -199,201,203,255,198,200,203,255,198,201,202,255,199,201,202,255,198,200,202,255,198,200,202,255,197,199,201,255,198,200,202,255, -197,199,201,255,196,198,201,255,197,199,200,255,196,198,200,255,195,197,200,255,196,198,199,255,195,197,199,255,194,196,198,255, -195,196,198,255,194,196,198,255,193,195,198,255,193,196,198,255,194,195,198,255,194,196,198,255,194,196,198,255,195,197,199,255, -194,195,196,255,194,195,195,255,197,199,201,255,199,202,204,255,200,203,205,255,201,204,206,255,202,204,207,255,201,205,208,255, -201,204,208,255,201,204,208,255,201,204,207,255,201,204,207,255,200,203,206,255,199,202,206,255,199,202,205,255,198,201,204,255, -197,200,203,255,196,199,202,255,194,197,201,255,193,196,199,255,192,195,198,255,191,194,197,255,189,192,195,255,188,190,193,255, -186,189,192,255,184,187,189,255,183,185,187,255,181,183,186,255,179,181,184,255,177,179,181,255,175,177,179,255,173,175,176,255, -171,173,174,255,169,170,172,255,166,168,169,255,164,165,167,255,162,162,164,255,159,160,161,255,156,157,157,255,153,154,154,255, -150,150,150,255,147,146,146,255,143,143,142,255,139,138,137,255,135,134,132,255,130,128,126,255,125,122,119,255,102,100, 94,255, - 10, 9, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,135,255,201,202,203,255,197,198,200,255,199,200,202,255, -199,200,202,255,199,200,202,255,199,200,202,255,198,200,202,255,198,200,202,255,197,200,202,255,198,200,202,255,197,199,201,255, -196,199,201,255,196,199,201,255,196,198,200,255,195,197,199,255,196,198,200,255,195,197,199,255,194,196,198,255,195,197,199,255, -194,196,197,255,193,195,197,255,194,195,197,255,193,195,197,255,193,195,197,255,193,195,197,255,193,195,197,255,193,195,197,255, -194,194,196,255,193,194,194,255,197,198,200,255,200,202,204,255,201,203,206,255,201,204,207,255,202,205,208,255,202,205,209,255, -202,205,208,255,202,205,208,255,202,205,208,255,201,204,208,255,200,204,207,255,200,203,207,255,199,202,205,255,198,201,205,255, -198,201,204,255,196,199,202,255,195,198,201,255,194,197,200,255,192,195,199,255,191,194,197,255,190,193,196,255,188,191,194,255, -187,189,192,255,186,188,191,255,183,186,188,255,182,184,187,255,180,182,184,255,178,180,182,255,177,178,180,255,174,176,178,255, -172,173,175,255,169,171,172,255,168,169,170,255,165,166,167,255,162,163,164,255,160,161,162,255,157,157,158,255,154,154,155,255, -151,151,151,255,147,147,147,255,144,143,142,255,140,139,138,255,135,133,132,255,129,127,126,255,124,121,118,255, 58, 55, 52,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 45, 46, 46,255, 92, 93, 93,255,172,173,173,255,188,190,190,255, -198,200,200,255,198,200,201,255,196,198,199,255,196,197,199,255,197,199,200,255,197,199,200,255,196,198,200,255,196,198,200,255, -196,198,200,255,196,197,199,255,195,197,199,255,196,197,199,255,195,197,198,255,194,196,198,255,195,196,198,255,194,195,197,255, -193,195,197,255,194,195,197,255,193,194,196,255,192,194,196,255,192,193,195,255,191,193,195,255,191,193,195,255,191,193,194,255, -191,193,194,255,192,193,194,255,197,197,198,255,200,202,203,255,201,203,206,255,202,204,207,255,203,206,209,255,203,206,209,255, -203,206,210,255,203,206,209,255,203,206,209,255,202,206,209,255,201,205,208,255,201,204,208,255,200,204,207,255,199,202,205,255, -198,201,205,255,197,201,204,255,196,199,202,255,195,198,201,255,194,197,200,255,192,195,198,255,191,194,197,255,190,192,195,255, -188,190,193,255,186,189,191,255,184,187,189,255,182,185,187,255,181,183,185,255,179,181,183,255,177,179,181,255,175,177,178,255, -172,174,175,255,171,172,173,255,168,169,171,255,165,166,168,255,163,164,165,255,161,161,162,255,158,158,159,255,154,155,155,255, -152,151,151,255,148,147,147,255,144,143,142,255,140,139,138,255,133,132,130,255,130,128,124,255,105,101, 97,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 28, 28, 28,255, 0, 0, 0,255, 5, 5, 5,255, 49, 50, 50,255, -113,114,113,255,171,173,172,255,198,199,199,255,198,200,200,255,195,197,198,255,195,197,198,255,196,198,199,255,196,198,199,255, -196,198,199,255,196,197,199,255,195,197,198,255,195,197,198,255,195,197,198,255,195,196,198,255,194,196,197,255,193,196,197,255, -194,195,197,255,193,195,196,255,192,194,196,255,192,193,196,255,192,194,195,255,192,193,194,255,191,193,194,255,191,192,193,255, -190,192,193,255,189,190,192,255,192,193,194,255,199,201,201,255,201,203,205,255,202,204,207,255,203,206,209,255,204,206,209,255, -204,207,210,255,203,206,210,255,203,206,210,255,203,205,208,255,202,205,208,255,202,205,208,255,201,203,207,255,200,203,206,255, -199,202,205,255,198,201,204,255,197,200,203,255,195,198,202,255,195,198,201,255,193,196,199,255,192,194,197,255,190,192,195,255, -188,191,194,255,187,189,192,255,185,187,190,255,183,185,188,255,181,183,186,255,179,181,184,255,178,179,182,255,176,177,179,255, -173,175,176,255,171,172,173,255,168,169,171,255,166,167,168,255,163,165,166,255,161,161,162,255,158,158,159,255,155,155,155,255, -152,152,151,255,148,147,147,255,144,143,142,255,140,138,137,255,135,133,131,255,124,121,118,255, 19, 19, 18,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 2, 2, 2,255, 6, 6, 6,255, 41, 41, 41,255,124,124,124,255,194,194,194,255,197,198,198,255,195,197,197,255,195,196,197,255, -195,197,198,255,195,197,198,255,195,196,197,255,195,196,197,255,194,196,197,255,194,195,197,255,194,195,197,255,194,195,196,255, -192,194,196,255,193,194,196,255,192,194,195,255,192,193,195,255,191,193,194,255,191,192,194,255,191,192,193,255,190,191,193,255, -190,191,192,255,189,190,191,255,187,189,190,255,194,195,195,255,200,202,204,255,201,204,206,255,203,206,208,255,204,206,209,255, -204,207,210,255,204,207,210,255,204,207,210,255,203,206,209,255,202,205,208,255,202,205,208,255,201,204,208,255,200,203,206,255, -199,202,206,255,199,202,205,255,197,200,203,255,196,199,202,255,194,197,200,255,193,196,199,255,192,195,198,255,190,193,196,255, -189,192,194,255,188,190,193,255,185,188,190,255,184,186,189,255,182,184,187,255,180,182,184,255,178,180,182,255,176,178,179,255, -174,175,177,255,171,172,174,255,170,171,172,255,166,167,168,255,164,164,165,255,162,162,163,255,158,159,159,255,155,156,156,255, -152,152,151,255,149,148,147,255,144,142,141,255,138,137,134,255,132,129,126,255, 51, 50, 48,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 51, 51, 51,255,117,117,117,255,161,162,162,255, -175,175,175,255,189,189,190,255,195,196,196,255,194,195,196,255,194,195,196,255,193,194,195,255,191,193,193,255,192,193,194,255, -192,193,194,255,192,193,194,255,191,192,193,255,191,192,193,255,190,191,192,255,190,191,192,255,189,191,192,255,189,190,191,255, -188,189,190,255,188,189,190,255,187,188,189,255,187,189,189,255,196,198,198,255,201,203,205,255,203,204,207,255,203,206,208,255, -204,207,209,255,204,206,210,255,204,207,209,255,204,207,210,255,203,205,209,255,202,205,209,255,202,205,208,255,201,203,207,255, -200,203,206,255,198,201,205,255,197,200,204,255,197,200,203,255,196,199,202,255,194,197,200,255,193,195,198,255,192,193,196,255, -189,192,195,255,188,190,193,255,186,188,191,255,185,187,189,255,183,185,187,255,181,182,184,255,179,180,182,255,177,178,180,255, -174,175,177,255,172,173,175,255,170,171,172,255,167,168,168,255,165,165,165,255,162,162,163,255,158,159,159,255,155,155,155,255, -152,151,151,255,148,148,146,255,142,141,139,255,138,136,133,255, 89, 87, 84,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 2, 2, 2,255, - 29, 29, 29,255, 54, 54, 54,255, 89, 89, 89,255,130,130,130,255,161,162,162,255,191,191,191,255,194,195,195,255,193,194,194,255, -193,194,195,255,192,193,193,255,190,191,192,255,189,190,191,255,190,191,191,255,189,190,191,255,189,190,190,255,189,189,190,255, -188,189,189,255,187,188,188,255,187,188,188,255,186,187,187,255,187,188,188,255,197,198,198,255,202,204,205,255,203,205,207,255, -204,206,208,255,203,207,209,255,204,207,210,255,203,207,210,255,203,205,208,255,203,206,209,255,202,205,208,255,201,204,207,255, -200,203,206,255,199,202,206,255,198,201,204,255,197,200,203,255,195,198,201,255,194,197,200,255,193,196,199,255,191,194,197,255, -190,193,195,255,188,191,193,255,186,189,191,255,185,187,189,255,183,185,187,255,181,182,184,255,179,181,183,255,177,178,180,255, -175,176,177,255,173,174,175,255,170,171,172,255,167,168,169,255,164,165,165,255,162,162,162,255,158,158,158,255,155,155,154,255, -151,151,150,255,146,145,144,255,144,142,139,255, 96, 93, 90,255, 6, 5, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 2, 2, 2,255, 3, 3, 3,255, 7, 7, 7,255, 39, 39, 39,255, 87, 87, 87,255, -121,122,121,255,164,164,164,255,187,188,187,255,190,191,190,255,189,190,189,255,189,189,189,255,188,189,189,255,188,188,188,255, -187,188,188,255,187,187,187,255,186,187,187,255,186,186,186,255,185,185,186,255,184,185,184,255,195,196,197,255,202,204,205,255, -202,205,207,255,204,206,209,255,203,206,209,255,204,206,209,255,203,205,209,255,203,206,208,255,202,205,207,255,201,204,207,255, -200,203,206,255,200,203,206,255,198,201,204,255,197,200,203,255,195,198,201,255,194,197,200,255,193,196,199,255,191,194,197,255, -190,193,195,255,189,191,193,255,187,189,191,255,185,187,189,255,184,185,187,255,181,182,184,255,179,181,183,255,177,178,180,255, -175,176,177,255,173,174,175,255,170,171,171,255,167,168,169,255,164,165,165,255,162,162,162,255,158,158,158,255,154,154,153,255, -149,148,147,255,146,144,142,255,101, 98, 96,255, 4, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 4, 4, 4,255, 32, 32, 31,255, 54, 54, 53,255, 67, 67, 67,255, 77, 77, 77,255, - 84, 84, 83,255, 94, 94, 93,255,105,105,104,255,106,105,104,255,105,105,104,255,105,105,104,255,103,103,102,255,127,128,128,255, -192,194,195,255,204,206,207,255,202,204,207,255,201,205,207,255,202,206,208,255,202,205,207,255,202,204,207,255,201,203,206,255, -200,203,206,255,200,201,204,255,198,201,204,255,197,200,203,255,196,198,202,255,194,197,200,255,194,196,199,255,191,194,196,255, -190,193,195,255,189,191,193,255,187,189,191,255,185,187,190,255,183,185,187,255,181,183,185,255,179,181,182,255,177,178,180,255, -175,176,177,255,173,173,174,255,170,171,171,255,167,168,168,255,164,164,164,255,161,161,161,255,156,156,155,255,154,153,152,255, -145,143,141,255, 89, 87, 85,255, 2, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 47, 47, 47,255,158,159,160,255,204,205,207,255,202,204,206,255,202,204,207,255,202,204,207,255,201,204,206,255,200,203,206,255, -200,202,205,255,199,202,204,255,198,200,203,255,197,199,202,255,196,199,201,255,194,197,199,255,193,196,198,255,191,194,197,255, -190,192,195,255,189,191,193,255,187,189,191,255,185,187,189,255,183,185,186,255,181,183,184,255,180,181,182,255,177,178,179,255, -174,175,176,255,172,173,173,255,169,170,170,255,167,167,166,255,163,163,163,255,158,158,158,255,157,156,155,255,143,142,139,255, - 46, 45, 44,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 3, 3, 3,255, 86, 87, 87,255,198,200,201,255,202,203,204,255,200,202,204,255,201,203,205,255,200,202,205,255, -200,202,204,255,199,201,204,255,197,200,202,255,197,199,201,255,195,197,200,255,194,196,198,255,193,195,197,255,191,193,195,255, -190,192,194,255,189,190,192,255,186,188,190,255,185,186,188,255,183,185,186,255,181,182,183,255,179,180,181,255,176,177,178,255, -174,174,175,255,172,172,172,255,169,169,168,255,164,164,164,255,161,160,159,255,159,158,155,255,110,108,107,255, 10, 10, 10,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 13, 13, 13,255,106,107,107,255,171,172,173,255,198,199,201,255,200,202,204,255, -199,201,203,255,197,199,202,255,197,199,201,255,196,197,200,255,195,197,199,255,194,195,198,255,193,195,197,255,191,193,194,255, -190,191,193,255,188,189,191,255,186,188,189,255,184,185,186,255,183,184,184,255,180,181,182,255,178,178,179,255,176,176,176,255, -173,173,173,255,171,171,171,255,168,167,166,255,156,155,154,255,124,122,120,255, 44, 43, 42,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 19, 20, 20,255, 56, 56, 56,255,117,118,119,255, -187,188,189,255,199,200,201,255,197,199,200,255,196,198,199,255,193,194,196,255,192,195,196,255,191,193,195,255,190,191,193,255, -189,189,191,255,187,188,189,255,185,186,187,255,183,184,185,255,181,182,182,255,179,179,180,255,177,177,178,255,175,175,175,255, -172,172,171,255,150,149,147,255, 88, 87, 86,255, 33, 33, 32,255, 4, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 37, 37, 37,255,106,107,106,255,158,159,159,255,190,191,191,255,190,190,191,255,189,190,190,255,187,188,188,255, -186,187,187,255,184,185,185,255,182,182,182,255,180,181,181,255,179,179,178,255,176,176,175,255,147,147,146,255, 90, 89, 89,255, - 22, 22, 21,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 18, 18, 17,255, 46, 46, 45,255, 54, 53, 53,255, - 62, 62, 62,255, 62, 62, 61,255, 55, 55, 55,255, 45, 44, 44,255, 21, 21, 20,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0, 72, 76, 98, 7, 31, 0, 0, 0, 1, 0, 0, 0, -160,239, 98, 7,240,168, 97, 7, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, 46,108, 97,121,101,114, 46,112,110,103, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92,115, 99,117,108, -112,116, 45,105, 99,111,110,115, 92, 46,105, 46,108, 97,121,101,114, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 78, 98, 7, 0, 0, 0, 0, 8, 72, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 32, 0, 0, 0, 72, 78, 98, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0,208, 78, 98, 7, 56, 95, 98, 7, 68, 65, 84, 65, 0, 16, 0, 0,208, 78, 98, 7, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0, 56, 95, 98, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 61, 61, 61,255, 61, 61, 62,255, 61, 61, 62,255, - 61, 61, 61,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 62, 62, 62,255, 61, 61, 61,255, 94, 94, 95,255, -124,125,126,255,123,124,126,255,123,124,126,255,123,124,125,255,121,122,123,255, 98, 98, 97,255, 66, 63, 60,255, 66, 62, 60,255, - 73, 71, 69,255,109,109,110,255,117,118,119,255,118,119,120,255,118,119,120,255,119,120,121,255,119,120,121,255,119,120,121,255, -119,120,121,255,119,120,121,255,119,120,121,255,119,120,121,255,119,120,121,255,119,120,121,255,119,120,121,255,119,120,121,255, -119,120,121,255,119,120,121,255,119,120,121,255,119,121,122,255,121,122,123,255,125,127,128,255,125,126,126,255,126,127,126,255, -123,124,126,255,115,116,117,255,114,114,115,255,113,114,114,255,113,114,114,255,113,114,114,255,113,114,114,255,113,114,114,255, -113,113,114,255,113,113,114,255,113,113,114,255,112,113,114,255,112,113,114,255,112,113,113,255,112,113,113,255,112,112,113,255, -112,112,113,255,111,112,113,255,111,112,113,255,111,112,112,255,111,111,112,255,110,111,112,255,110,111,111,255,110,110,111,255, -110,110,111,255,109,110,110,255,109,109,110,255,109,109,110,255,108,109,110,255,108,109,109,255,108,108,109,255,108,108,109,255, -107,108,108,255,107,108,108,255,107,107,108,255,107,107,108,255,107,107,108,255,107,107,107,255,106,107,107,255,106,106,107,255, -101,101,101,255, 86, 85, 83,255, 98, 98, 98,255, 99, 98, 98,255, 98, 98, 98,255, 98, 98, 98,255, 98, 98, 98,255, 97, 97, 97,255, - 97, 97, 97,255, 97, 96, 96,255, 96, 96, 96,255, 96, 95, 95,255, 95, 94, 94,255, 94, 94, 94,255, 93, 93, 93,255, 93, 92, 92,255, - 92, 92, 91,255, 91, 90, 90,255, 91, 90, 89,255, 90, 89, 88,255, 76, 75, 75,255, 61, 61, 61,255, 60, 60, 60,255,124,125,126,255, -183,184,188,255,182,185,187,255,182,184,187,255,182,184,187,255,179,182,184,255,157,158,159,255, 81, 75, 71,255, 70, 63, 58,255, - 71, 64, 59,255,133,133,133,255,168,169,171,255,171,173,175,255,172,174,176,255,172,174,176,255,172,174,176,255,172,174,176,255, -172,174,176,255,172,174,176,255,172,174,176,255,172,174,177,255,172,174,177,255,173,175,177,255,173,175,177,255,173,175,177,255, -173,175,177,255,173,176,178,255,173,176,178,255,174,176,178,255,175,177,179,255,180,182,185,255,188,191,193,255,187,187,185,255, -185,187,189,255,171,173,174,255,163,165,167,255,162,163,165,255,161,163,164,255,161,163,164,255,161,163,164,255,161,163,164,255, -161,163,164,255,161,162,164,255,161,162,164,255,161,162,164,255,160,162,163,255,160,162,163,255,160,161,162,255,159,160,162,255, -159,160,162,255,159,160,162,255,158,159,161,255,158,159,160,255,157,159,160,255,157,158,159,255,156,157,159,255,156,157,158,255, -155,156,157,255,154,155,157,255,154,155,156,255,153,154,155,255,153,154,155,255,152,153,154,255,152,153,154,255,151,152,153,255, -151,151,152,255,150,151,152,255,150,151,152,255,149,150,151,255,149,150,151,255,149,150,151,255,148,149,150,255,148,149,150,255, -145,146,146,255,115,113,112,255,123,121,121,255,133,133,133,255,133,133,133,255,133,133,133,255,132,131,131,255,132,131,131,255, -131,130,130,255,130,129,129,255,129,128,128,255,129,128,128,255,127,126,126,255,126,125,125,255,125,123,122,255,123,122,121,255, -122,120,119,255,120,118,117,255,118,116,115,255,117,115,113,255, 89, 88, 88,255, 61, 61, 61,255, 60, 60, 60,255,123,125,126,255, -182,185,187,255,181,183,186,255,180,184,185,255,180,184,185,255,180,182,185,255,175,177,179,255,117,115,114,255, 68, 61, 56,255, - 69, 61, 56,255, 92, 88, 84,255,158,160,162,255,170,172,173,255,172,174,175,255,171,173,176,255,172,174,176,255,172,174,175,255, -171,173,176,255,171,173,176,255,172,174,177,255,172,174,177,255,173,175,176,255,172,174,176,255,173,175,177,255,173,175,177,255, -173,176,178,255,172,176,178,255,172,175,177,255,173,175,177,255,174,176,178,255,176,178,180,255,184,187,190,255,187,188,188,255, -184,184,184,255,179,182,185,255,165,167,169,255,162,163,165,255,162,162,165,255,162,163,165,255,162,163,165,255,161,163,164,255, -161,162,164,255,160,163,163,255,160,162,163,255,161,162,164,255,161,161,162,255,160,162,163,255,159,161,162,255,160,161,162,255, -159,160,161,255,159,159,162,255,158,160,160,255,158,159,160,255,157,159,159,255,156,157,160,255,156,157,158,255,156,157,158,255, -155,156,157,255,154,155,157,255,153,154,156,255,153,154,155,255,153,153,155,255,152,152,154,255,152,153,154,255,151,152,153,255, -150,152,153,255,150,151,152,255,149,150,151,255,150,149,152,255,149,150,150,255,148,149,151,255,149,148,151,255,148,149,150,255, -147,148,149,255,138,138,138,255,109,108,106,255,130,129,129,255,133,132,132,255,133,131,132,255,132,132,132,255,132,130,130,255, -131,130,130,255,130,129,129,255,130,129,129,255,128,127,127,255,127,126,126,255,125,124,124,255,124,123,123,255,123,122,121,255, -122,120,119,255,120,119,117,255,118,117,115,255,117,115,114,255, 90, 88, 87,255, 61, 61, 61,255, 60, 60, 60,255,124,125,126,255, -183,184,188,255,181,184,186,255,181,184,186,255,181,183,186,255,181,183,186,255,179,181,184,255,158,159,160,255, 80, 75, 71,255, - 69, 62, 57,255, 70, 64, 58,255,131,130,130,255,167,169,171,255,171,173,176,255,172,174,175,255,172,174,175,255,171,173,176,255, -172,174,176,255,172,174,177,255,173,175,176,255,173,175,176,255,172,174,176,255,173,175,177,255,173,175,177,255,173,176,178,255, -172,175,177,255,173,176,178,255,173,176,178,255,174,175,177,255,173,176,178,255,174,177,180,255,180,182,184,255,186,188,190,255, -189,189,187,255,182,184,185,255,171,173,175,255,163,165,166,255,161,163,164,255,162,162,165,255,161,162,164,255,162,162,165,255, -161,163,164,255,161,162,164,255,160,163,163,255,160,162,164,255,160,161,163,255,160,162,162,255,160,161,163,255,160,160,163,255, -159,161,162,255,158,160,162,255,159,159,160,255,158,160,161,255,158,159,160,255,157,158,159,255,156,157,159,255,156,157,158,255, -155,156,157,255,154,155,157,255,154,155,156,255,153,154,155,255,153,154,155,255,152,153,155,255,151,152,153,255,152,153,154,255, -151,152,153,255,150,151,152,255,150,151,152,255,149,150,152,255,149,149,150,255,149,149,151,255,148,148,151,255,148,149,149,255, -148,148,150,255,145,146,147,255,123,121,121,255,120,118,117,255,132,131,131,255,133,132,132,255,132,132,132,255,132,130,130,255, -131,130,130,255,131,130,130,255,129,128,128,255,128,127,127,255,127,126,126,255,126,125,124,255,125,124,123,255,124,123,122,255, -122,120,119,255,121,119,118,255,119,117,116,255,118,116,114,255, 90, 89, 88,255, 61, 61, 61,255, 60, 60, 60,255,124,125,126,255, -183,186,188,255,182,183,186,255,182,183,186,255,182,184,186,255,182,184,187,255,181,183,186,255,174,176,178,255,120,118,118,255, - 69, 62, 57,255, 70, 63, 58,255, 94, 90, 86,255,158,159,161,255,170,172,174,255,172,174,176,255,171,173,176,255,172,174,177,255, -172,174,177,255,173,175,177,255,172,174,176,255,173,175,177,255,173,175,177,255,173,176,178,255,172,176,178,255,172,175,177,255, -173,176,178,255,173,176,178,255,174,176,178,255,173,175,177,255,173,176,178,255,174,176,178,255,176,178,181,255,185,188,191,255, -185,185,185,255,188,188,187,255,178,180,182,255,166,168,169,255,162,164,166,255,161,163,164,255,162,163,165,255,161,163,164,255, -162,162,165,255,162,162,165,255,161,162,164,255,161,163,163,255,160,162,164,255,161,161,163,255,161,161,162,255,159,161,163,255, -159,160,163,255,159,161,162,255,159,160,161,255,159,159,160,255,158,160,161,255,158,158,160,255,157,158,159,255,156,157,159,255, -156,157,158,255,155,156,157,255,154,155,157,255,154,155,156,255,153,154,155,255,152,153,155,255,152,153,154,255,151,153,153,255, -152,152,153,255,150,152,153,255,151,151,152,255,150,151,151,255,150,150,151,255,149,149,150,255,148,149,151,255,149,148,149,255, -148,149,150,255,147,148,149,255,138,138,138,255,112,110,109,255,129,128,128,255,132,132,132,255,133,132,132,255,131,131,131,255, -132,130,130,255,131,130,130,255,129,128,128,255,129,128,128,255,128,127,126,255,127,125,125,255,126,124,124,255,124,123,122,255, -122,121,120,255,121,120,118,255,120,118,117,255,118,117,115,255, 90, 89, 88,255, 61, 61, 61,255, 60, 60, 60,255,124,125,127,255, -183,186,188,255,181,185,188,255,182,185,188,255,182,185,188,255,182,185,187,255,181,184,186,255,179,182,184,255,153,154,155,255, - 82, 76, 72,255, 70, 63, 58,255, 75, 69, 64,255,134,134,133,255,167,169,171,255,172,174,176,255,172,174,177,255,172,174,176,255, -173,174,176,255,173,175,177,255,173,176,178,255,172,176,178,255,172,175,177,255,173,176,178,255,173,176,178,255,174,176,178,255, -173,176,178,255,174,175,177,255,174,175,177,255,174,176,178,255,174,176,178,255,173,176,178,255,175,178,180,255,180,182,185,255, -187,188,191,255,188,188,187,255,185,187,188,255,171,173,175,255,163,165,167,255,162,163,165,255,161,163,164,255,162,164,165,255, -162,164,165,255,162,163,165,255,161,163,165,255,162,162,164,255,161,162,163,255,161,162,164,255,160,161,163,255,161,162,163,255, -160,161,162,255,160,161,163,255,159,161,161,255,158,160,161,255,159,160,161,255,158,159,160,255,158,159,160,255,157,158,159,255, -156,157,158,255,156,157,158,255,155,156,157,255,154,155,156,255,154,155,156,255,153,154,155,255,152,153,154,255,152,153,154,255, -152,153,154,255,151,152,153,255,151,151,152,255,150,150,151,255,150,150,152,255,149,149,151,255,148,149,151,255,148,149,150,255, -149,148,149,255,148,149,150,255,146,146,147,255,122,121,120,255,116,115,113,255,132,131,131,255,132,132,132,255,132,131,131,255, -132,130,130,255,131,130,130,255,130,129,128,255,129,128,128,255,128,127,127,255,127,126,125,255,126,125,124,255,125,124,123,255, -123,121,120,255,122,120,119,255,120,118,117,255,119,117,115,255, 91, 90, 88,255, 61, 61, 61,255, 60, 60, 60,255,124,125,127,255, -183,186,189,255,182,185,187,255,181,184,188,255,181,184,187,255,182,184,187,255,182,185,187,255,181,183,186,255,173,175,177,255, -112,110,108,255, 71, 64, 59,255, 69, 62, 57,255,100, 97, 94,255,160,162,163,255,171,173,175,255,172,174,176,255,173,174,176,255, -173,175,177,255,173,175,177,255,172,175,177,255,173,176,178,255,173,176,178,255,174,176,178,255,174,176,178,255,173,176,178,255, -174,175,177,255,174,176,178,255,174,176,178,255,174,177,179,255,174,177,179,255,173,177,179,255,175,177,179,255,176,179,181,255, -186,189,191,255,186,187,188,255,187,187,187,255,181,183,186,255,166,168,169,255,163,164,166,255,162,163,165,255,161,164,164,255, -161,163,164,255,161,164,164,255,162,163,165,255,161,163,164,255,162,162,163,255,161,162,164,255,161,162,164,255,161,162,164,255, -160,162,163,255,159,161,163,255,160,160,161,255,159,160,162,255,158,159,161,255,159,160,160,255,158,159,160,255,157,159,160,255, -157,157,159,255,156,157,158,255,156,157,158,255,155,155,157,255,154,155,156,255,154,155,156,255,153,154,155,255,152,153,154,255, -152,152,154,255,151,152,153,255,151,152,153,255,150,151,152,255,149,150,151,255,150,150,152,255,149,149,151,255,148,149,150,255, -148,148,149,255,149,149,150,255,147,148,149,255,142,142,143,255,109,106,104,255,124,122,122,255,132,131,132,255,131,132,132,255, -132,130,130,255,131,130,130,255,131,130,129,255,129,128,128,255,129,128,127,255,127,126,125,255,126,125,124,255,125,124,123,255, -123,122,121,255,122,120,119,255,120,119,117,255,119,117,116,255, 91, 90, 89,255, 61, 61, 61,255, 60, 60, 60,255,124,126,127,255, -184,186,189,255,182,184,187,255,182,185,188,255,182,185,188,255,182,185,188,255,183,185,188,255,182,185,188,255,180,182,185,255, -153,154,155,255, 76, 70, 65,255, 70, 63, 58,255, 73, 66, 60,255,138,139,139,255,168,171,173,255,172,174,176,255,173,175,177,255, -172,176,178,255,172,176,178,255,173,176,178,255,173,176,178,255,174,176,178,255,173,176,178,255,174,175,177,255,174,175,177,255, -174,176,178,255,174,176,178,255,174,177,179,255,173,176,178,255,173,177,179,255,174,177,179,255,174,177,179,255,175,178,180,255, -179,182,184,255,188,191,194,255,187,188,185,255,184,186,188,255,174,176,177,255,164,166,167,255,163,164,166,255,162,164,165,255, -162,164,166,255,162,164,164,255,161,164,165,255,161,163,165,255,162,163,164,255,162,162,163,255,161,163,163,255,161,161,164,255, -161,161,164,255,160,162,163,255,160,161,162,255,160,160,161,255,159,160,162,255,159,160,161,255,159,160,160,255,158,159,160,255, -156,157,160,255,157,158,159,255,156,157,158,255,155,155,157,255,154,156,156,255,154,155,156,255,154,154,156,255,153,153,155,255, -152,153,154,255,152,152,153,255,152,151,152,255,151,152,153,255,150,151,152,255,149,150,152,255,150,150,151,255,148,150,151,255, -149,149,150,255,149,148,149,255,148,148,149,255,147,147,148,255,134,133,132,255,108,105,103,255,129,129,128,255,132,131,131,255, -132,130,130,255,132,131,131,255,130,129,129,255,129,128,128,255,129,128,128,255,127,126,125,255,126,125,124,255,126,124,123,255, -124,122,121,255,123,121,120,255,121,120,118,255,120,118,117,255, 91, 90, 89,255, 61, 61, 61,255, 60, 60, 60,255,124,126,128,255, -184,187,190,255,183,186,188,255,183,186,188,255,182,185,187,255,182,185,187,255,182,186,188,255,183,185,188,255,181,184,187,255, -175,178,180,255,113,110,108,255, 68, 61, 56,255, 67, 61, 56,255, 96, 92, 89,255,161,162,164,255,171,173,175,255,173,175,177,255, -173,176,178,255,174,176,178,255,173,176,178,255,174,176,178,255,174,175,177,255,174,175,177,255,174,176,178,255,174,177,179,255, -174,176,178,255,173,177,179,255,173,177,179,255,174,177,179,255,175,177,179,255,175,177,179,255,174,177,179,255,175,177,179,255, -177,179,181,255,184,187,189,255,188,189,189,255,186,187,185,255,182,184,187,255,168,169,172,255,163,165,166,255,162,164,165,255, -163,163,165,255,162,164,166,255,163,164,164,255,162,164,165,255,162,163,164,255,162,162,165,255,161,162,164,255,160,163,163,255, -160,162,164,255,161,162,163,255,160,161,163,255,159,161,162,255,160,161,162,255,159,160,161,255,159,160,161,255,158,160,161,255, -158,158,160,255,157,158,159,255,157,158,159,255,155,156,158,255,155,156,157,255,155,156,157,255,154,154,156,255,153,154,155,255, -153,154,155,255,152,152,154,255,152,152,153,255,151,151,152,255,151,151,152,255,150,150,151,255,150,151,152,255,149,149,150,255, -148,150,151,255,149,149,150,255,148,149,150,255,147,148,149,255,144,144,145,255,117,116,115,255,119,117,116,255,131,130,130,255, -132,131,131,255,132,131,130,255,130,129,129,255,130,129,129,255,129,128,128,255,129,127,126,255,127,126,125,255,126,124,124,255, -124,123,121,255,123,121,120,255,122,120,119,255,120,118,117,255, 91, 90, 89,255, 61, 61, 61,255, 60, 60, 60,255,125,126,127,255, -184,186,190,255,183,185,189,255,184,185,189,255,183,186,188,255,183,186,188,255,183,185,188,255,182,186,189,255,183,185,188,255, -181,183,185,255,158,159,161,255, 81, 76, 71,255, 69, 62, 57,255, 70, 64, 59,255,131,131,131,255,168,170,172,255,173,175,177,255, -174,176,178,255,173,176,178,255,174,175,177,255,174,175,177,255,174,176,178,255,174,176,178,255,174,177,179,255,174,176,178,255, -173,177,179,255,174,177,179,255,174,177,179,255,175,177,179,255,174,177,179,255,175,176,178,255,175,177,179,255,174,178,180,255, -176,178,180,255,179,182,184,255,186,189,191,255,190,190,188,255,183,185,186,255,175,177,179,255,165,166,168,255,163,164,166,255, -162,164,165,255,163,163,166,255,163,164,165,255,162,163,164,255,162,164,165,255,161,163,164,255,162,162,165,255,161,163,164,255, -161,163,163,255,160,162,163,255,161,161,162,255,160,161,162,255,160,161,163,255,159,161,162,255,158,160,161,255,158,160,161,255, -157,158,160,255,157,158,159,255,157,158,159,255,155,156,158,255,155,156,157,255,155,156,157,255,154,155,156,255,153,154,155,255, -153,154,154,255,152,153,154,255,151,152,153,255,151,152,153,255,150,151,152,255,150,151,152,255,149,151,152,255,149,149,150,255, -148,150,151,255,148,149,150,255,148,148,149,255,148,148,149,255,147,147,148,255,135,135,135,255,109,106,104,255,127,127,127,255, -132,131,131,255,132,131,130,255,131,130,129,255,130,129,128,255,130,129,128,255,128,127,126,255,127,126,125,255,126,125,124,255, -124,123,122,255,123,122,120,255,122,120,119,255,121,119,117,255, 91, 90, 89,255, 61, 61, 61,255, 60, 60, 60,255,125,126,128,255, -185,188,190,255,184,186,189,255,183,186,188,255,184,185,189,255,184,185,189,255,184,186,189,255,184,186,188,255,182,186,189,255, -182,185,188,255,175,178,180,255,120,118,117,255, 69, 63, 57,255, 69, 63, 58,255, 94, 90, 86,255,158,160,161,255,171,173,175,255, -174,176,178,255,173,175,177,255,174,176,178,255,174,177,179,255,174,176,178,255,174,177,179,255,173,176,178,255,173,177,179,255, -175,177,179,255,174,177,179,255,175,177,179,255,174,176,178,255,175,176,178,255,175,177,179,255,175,177,179,255,174,178,179,255, -175,177,179,255,177,179,182,255,185,188,191,255,185,186,187,255,191,191,189,255,182,184,186,255,169,170,172,255,164,165,167,255, -163,165,166,255,162,164,165,255,163,164,166,255,162,164,165,255,161,163,164,255,162,163,165,255,161,164,164,255,162,162,165,255, -162,163,164,255,161,163,163,255,161,162,163,255,161,161,163,255,160,162,162,255,160,160,162,255,159,160,161,255,158,159,161,255, -158,159,161,255,157,158,160,255,157,159,160,255,156,157,158,255,155,156,158,255,155,156,158,255,154,155,156,255,153,154,156,255, -153,154,156,255,153,154,154,255,152,153,154,255,152,153,154,255,150,151,152,255,151,151,153,255,150,150,152,255,149,150,151,255, -148,149,150,255,149,149,150,255,148,148,149,255,147,149,150,255,148,147,149,255,144,146,146,255,119,118,116,255,111,109,107,255, -130,129,129,255,131,130,130,255,131,130,130,255,130,129,129,255,129,128,128,255,128,127,126,255,127,126,125,255,126,125,124,255, -124,123,122,255,123,122,121,255,122,120,119,255,121,119,118,255, 92, 91, 89,255, 61, 61, 61,255, 60, 60, 60,255,125,126,128,255, -185,188,191,255,183,186,189,255,183,187,189,255,183,187,188,255,184,186,189,255,184,186,189,255,183,186,189,255,184,187,189,255, -183,186,188,255,181,183,186,255,156,157,159,255, 84, 79, 75,255, 70, 64, 59,255, 73, 68, 63,255,132,131,131,255,168,170,172,255, -173,175,177,255,174,176,178,255,174,177,179,255,173,176,178,255,173,177,179,255,174,177,179,255,174,177,179,255,175,177,179,255, -174,176,178,255,175,176,178,255,175,177,179,255,175,177,179,255,175,178,180,255,175,178,180,255,174,177,180,255,175,177,180,255, -175,177,179,255,176,178,180,255,179,181,184,255,189,192,195,255,187,187,185,255,187,189,188,255,176,178,180,255,165,167,169,255, -163,165,166,255,163,164,166,255,162,163,165,255,163,163,166,255,163,163,166,255,162,164,165,255,162,163,165,255,161,164,165,255, -161,163,164,255,162,163,164,255,160,162,164,255,161,161,164,255,160,161,163,255,159,162,162,255,160,161,162,255,159,160,162,255, -158,159,161,255,158,159,160,255,157,159,159,255,156,157,160,255,156,157,158,255,155,156,158,255,154,155,157,255,154,155,156,255, -154,155,156,255,152,153,155,255,153,153,155,255,152,153,154,255,151,152,153,255,150,151,153,255,151,150,152,255,150,150,151,255, -149,149,150,255,148,150,151,255,148,149,150,255,148,148,150,255,147,149,148,255,147,147,148,255,142,142,142,255,104,101, 99,255, -120,119,117,255,131,129,129,255,131,130,130,255,130,129,129,255,129,128,128,255,128,127,126,255,127,126,125,255,126,125,124,255, -124,123,122,255,124,122,121,255,123,121,119,255,121,120,118,255, 92, 90, 89,255, 61, 61, 61,255, 60, 60, 60,255,125,126,128,255, -185,187,191,255,184,186,190,255,184,186,189,255,184,187,189,255,183,187,189,255,183,187,190,255,184,187,190,255,183,187,189,255, -184,186,189,255,182,185,188,255,175,178,181,255,118,116,115,255, 69, 63, 58,255, 68, 62, 57,255, 94, 90, 86,255,159,161,162,255, -172,174,176,255,173,176,178,255,173,177,179,255,174,177,179,255,174,177,179,255,175,177,179,255,175,177,179,255,174,176,178,255, -175,176,178,255,175,177,179,255,175,177,179,255,175,178,180,255,175,177,179,255,174,177,180,255,175,176,180,255,175,177,180,255, -176,178,180,255,176,178,179,255,177,179,181,255,183,186,188,255,189,192,193,255,188,187,186,255,184,186,189,255,170,172,173,255, -164,166,167,255,162,165,165,255,163,164,166,255,163,164,166,255,162,163,165,255,163,163,166,255,162,164,165,255,162,164,164,255, -161,163,165,255,162,162,164,255,160,163,163,255,161,162,164,255,161,162,164,255,160,162,162,255,159,161,162,255,160,161,162,255, -159,160,161,255,158,159,160,255,158,159,160,255,157,158,159,255,156,157,159,255,156,157,158,255,155,156,157,255,155,155,156,255, -154,155,156,255,153,154,155,255,152,153,154,255,152,152,154,255,151,152,153,255,151,151,152,255,150,151,152,255,150,150,151,255, -150,150,151,255,149,150,151,255,148,149,150,255,148,148,149,255,147,148,149,255,148,148,148,255,146,146,147,255,132,131,131,255, -105,101, 99,255,127,125,124,255,130,130,129,255,129,129,128,255,130,129,128,255,128,127,126,255,128,126,126,255,126,125,124,255, -125,123,122,255,124,122,121,255,123,121,119,255,122,120,118,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,125,127,129,255, -186,189,191,255,185,188,189,255,185,187,189,255,185,186,189,255,185,187,190,255,184,186,189,255,183,186,190,255,183,186,190,255, -183,186,190,255,184,187,189,255,181,184,187,255,161,162,164,255, 81, 76, 71,255, 69, 62, 57,255, 68, 62, 57,255,130,129,129,255, -169,171,172,255,173,175,177,255,174,177,179,255,175,177,179,255,175,177,179,255,174,177,179,255,175,176,178,255,175,177,179,255, -175,177,179,255,175,178,180,255,175,178,180,255,174,176,180,255,174,176,180,255,175,177,180,255,175,177,180,255,176,178,180,255, -175,177,180,255,175,177,179,255,176,178,180,255,178,181,183,255,187,189,192,255,190,190,190,255,185,186,186,255,180,183,185,255, -166,168,170,255,164,165,167,255,162,165,165,255,163,165,166,255,163,164,166,255,162,164,166,255,163,163,165,255,163,164,165,255, -162,163,164,255,161,162,165,255,161,163,164,255,160,163,163,255,161,163,164,255,161,161,162,255,160,161,163,255,159,160,163,255, -159,161,161,255,158,160,161,255,159,160,161,255,157,158,159,255,157,158,159,255,156,157,159,255,156,157,157,255,155,156,157,255, -154,155,156,255,154,154,156,255,153,153,155,255,153,154,155,255,151,152,153,255,152,151,153,255,151,152,152,255,150,151,152,255, -149,151,152,255,150,150,151,255,148,150,150,255,149,149,149,255,149,148,150,255,147,148,148,255,147,148,148,255,143,143,143,255, -116,114,113,255,113,111,109,255,129,128,128,255,130,129,129,255,130,129,128,255,128,127,126,255,127,126,125,255,127,126,125,255, -125,123,122,255,124,122,121,255,123,121,120,255,122,120,118,255, 91, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,126,127,129,255, -186,189,192,255,185,188,191,255,185,188,191,255,185,187,190,255,184,187,190,255,185,187,189,255,185,188,189,255,185,188,190,255, -184,187,189,255,184,186,190,255,184,186,188,255,179,181,184,255,128,127,127,255, 68, 61, 56,255, 68, 62, 57,255, 84, 79, 74,255, -155,156,158,255,172,173,176,255,174,177,179,255,175,176,178,255,175,176,178,255,175,177,179,255,175,177,179,255,175,178,180,255, -174,177,180,255,174,177,180,255,175,177,180,255,175,177,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255, -176,178,180,255,175,177,179,255,176,178,180,255,177,179,181,255,182,184,187,255,188,190,191,255,190,190,188,255,184,185,187,255, -173,175,177,255,165,166,168,255,163,165,166,255,163,164,166,255,162,165,165,255,162,164,165,255,163,163,166,255,162,163,165,255, -163,164,164,255,162,164,164,255,162,163,164,255,161,162,163,255,161,163,163,255,160,161,164,255,161,162,163,255,160,161,162,255, -159,160,163,255,159,161,162,255,159,160,161,255,157,159,160,255,157,158,159,255,157,158,159,255,156,157,158,255,155,156,158,255, -155,156,157,255,154,155,156,255,153,154,155,255,153,154,155,255,152,152,154,255,152,152,153,255,151,152,152,255,151,151,152,255, -150,150,151,255,150,151,152,255,149,149,150,255,149,149,150,255,148,148,149,255,148,148,148,255,147,148,149,255,146,146,147,255, -136,135,135,255,103,100, 97,255,122,120,119,255,129,128,128,255,129,128,128,255,128,127,126,255,127,126,125,255,127,125,124,255, -125,124,123,255,124,122,121,255,123,121,120,255,122,120,118,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,126,127,128,255, -186,189,192,255,184,187,190,255,184,187,190,255,184,188,191,255,184,188,190,255,185,188,190,255,185,187,189,255,184,187,189,255, -185,188,189,255,185,187,189,255,184,186,190,255,182,185,188,255,166,168,170,255, 91, 87, 84,255, 68, 62, 57,255, 70, 64, 58,255, -117,115,114,255,167,169,171,255,173,175,177,255,175,177,179,255,174,177,179,255,175,178,180,255,175,178,180,255,175,177,179,255, -174,176,180,255,175,177,180,255,175,177,180,255,176,178,180,255,175,177,180,255,176,178,180,255,176,178,180,255,176,178,180,255, -176,178,180,255,176,177,179,255,175,178,180,255,176,178,180,255,179,180,183,255,187,189,193,255,186,187,187,255,189,190,189,255, -180,183,185,255,168,169,171,255,164,166,167,255,163,164,166,255,163,165,166,255,163,164,166,255,162,163,165,255,163,164,166,255, -163,164,165,255,162,163,165,255,162,164,164,255,162,163,164,255,162,162,163,255,161,162,164,255,160,161,163,255,160,162,163,255, -160,161,162,255,159,161,161,255,159,160,162,255,158,160,160,255,157,159,160,255,157,158,160,255,156,157,159,255,156,156,158,255, -155,156,157,255,154,155,157,255,154,154,156,255,153,154,154,255,152,153,154,255,151,153,153,255,151,151,153,255,150,151,152,255, -150,151,152,255,149,151,152,255,149,149,150,255,148,149,150,255,149,149,150,255,147,148,148,255,147,148,148,255,147,147,148,255, -144,145,145,255,124,122,121,255, 99, 95, 92,255,126,125,124,255,129,128,127,255,128,128,126,255,127,126,125,255,127,125,124,255, -125,124,122,255,124,122,121,255,123,121,120,255,122,120,119,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,126,127,129,255, -187,190,192,255,186,189,191,255,186,188,191,255,186,187,190,255,185,187,190,255,184,188,190,255,185,187,191,255,184,187,191,255, -185,188,190,255,185,187,190,255,185,188,190,255,184,186,189,255,179,182,184,255,135,135,134,255, 73, 67, 62,255, 70, 64, 59,255, - 83, 78, 74,255,150,150,151,255,172,173,175,255,174,177,179,255,175,177,179,255,174,177,180,255,175,176,180,255,174,176,180,255, -176,178,180,255,175,177,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255, -176,177,179,255,176,178,180,255,176,177,179,255,175,178,180,255,177,179,181,255,181,183,186,255,189,192,196,255,187,187,186,255, -187,189,190,255,174,176,178,255,166,166,168,255,164,165,167,255,163,164,166,255,164,165,166,255,163,165,166,255,163,164,166,255, -162,164,165,255,163,163,166,255,161,163,164,255,162,164,165,255,161,163,164,255,162,163,163,255,161,162,164,255,161,161,163,255, -159,161,163,255,159,160,162,255,160,161,162,255,158,159,160,255,158,159,161,255,158,159,160,255,156,157,159,255,156,157,159,255, -156,156,158,255,154,156,156,255,154,155,156,255,154,154,156,255,152,154,154,255,152,153,154,255,151,153,154,255,151,151,152,255, -151,151,152,255,150,150,151,255,149,150,151,255,148,149,150,255,149,149,150,255,147,147,148,255,147,147,149,255,147,147,147,255, -146,146,147,255,142,142,143,255,110,108,106,255,108,105,103,255,127,126,125,255,128,126,126,255,127,126,125,255,127,125,124,255, -125,123,122,255,124,123,121,255,123,122,120,255,122,120,119,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,126,127,129,255, -187,190,193,255,186,189,192,255,186,189,192,255,186,188,191,255,186,188,191,255,186,187,190,255,185,188,191,255,185,188,190,255, -184,187,191,255,184,187,191,255,185,188,191,255,185,187,190,255,183,185,188,255,167,170,171,255, 96, 92, 89,255, 69, 63, 58,255, - 69, 63, 58,255,114,112,111,255,166,168,170,255,173,175,177,255,174,177,179,255,175,177,179,255,175,177,180,255,176,178,180,255, -175,177,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,177,179,255,176,177,179,255, -176,178,180,255,176,178,180,255,176,179,181,255,175,179,181,255,177,179,181,255,178,180,182,255,185,188,191,255,189,190,192,255, -187,188,187,255,184,186,189,255,169,171,173,255,164,166,167,255,163,164,166,255,163,165,165,255,163,164,165,255,162,165,166,255, -163,164,166,255,162,164,166,255,163,164,164,255,162,164,164,255,162,163,165,255,162,163,163,255,161,162,164,255,161,162,163,255, -161,161,162,255,160,161,162,255,160,161,161,255,158,159,162,255,159,160,161,255,158,159,160,255,157,158,159,255,157,158,159,255, -156,157,158,255,155,156,157,255,154,155,156,255,154,155,156,255,153,154,155,255,153,153,154,255,152,153,154,255,151,151,153,255, -151,151,152,255,149,151,152,255,150,150,151,255,149,149,150,255,149,149,150,255,147,148,149,255,148,147,149,255,146,147,147,255, -146,147,147,255,145,146,146,255,136,135,135,255,101, 97, 94,255,117,115,114,255,127,126,125,255,127,126,125,255,127,125,124,255, -125,125,122,255,124,123,121,255,123,122,120,255,122,120,119,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,126,128,129,255, -187,190,193,255,185,188,192,255,185,188,191,255,185,189,192,255,185,188,191,255,186,188,191,255,186,189,190,255,185,188,191,255, -185,188,191,255,185,187,191,255,185,187,190,255,185,187,191,255,184,187,190,255,181,183,185,255,143,142,143,255, 71, 65, 60,255, - 69, 63, 58,255, 76, 70, 66,255,146,146,147,255,171,173,176,255,174,176,179,255,176,178,180,255,176,178,179,255,175,177,180,255, -176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255, -176,178,181,255,176,179,181,255,176,178,180,255,175,178,181,255,176,178,180,255,177,179,181,255,180,182,184,255,188,191,194,255, -189,190,189,255,185,187,187,255,179,182,185,255,167,168,170,255,164,165,166,255,163,164,166,255,163,165,166,255,163,164,165,255, -162,165,166,255,163,164,166,255,162,164,165,255,163,164,164,255,162,163,165,255,161,162,164,255,161,162,163,255,161,162,164,255, -161,162,163,255,160,161,162,255,159,161,162,255,159,160,161,255,159,159,161,255,158,159,161,255,157,158,159,255,157,158,159,255, -156,157,158,255,155,156,157,255,155,155,157,255,153,155,155,255,153,154,155,255,153,153,155,255,153,152,153,255,151,152,153,255, -151,152,153,255,150,151,152,255,149,149,150,255,149,150,151,255,149,149,150,255,147,148,149,255,148,148,149,255,146,146,147,255, -146,147,147,255,146,147,147,255,143,143,143,255,122,120,119,255, 98, 94, 91,255,123,122,121,255,127,125,124,255,127,125,124,255, -125,125,122,255,124,123,121,255,123,121,120,255,122,121,119,255, 93, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,126,128,130,255, -188,191,193,255,187,190,192,255,187,189,192,255,187,188,192,255,186,188,191,255,185,189,192,255,185,189,192,255,186,189,190,255, -186,188,191,255,186,189,190,255,186,189,190,255,185,189,191,255,186,188,191,255,184,186,189,255,174,177,178,255,104,101, 99,255, - 67, 61, 56,255, 67, 61, 56,255, 98, 95, 92,255,164,165,167,255,173,175,177,255,175,177,179,255,176,178,180,255,176,178,180,255, -176,178,180,255,176,178,180,255,176,178,180,255,176,177,179,255,176,178,180,255,176,177,179,255,176,179,181,255,176,178,180,255, -176,179,181,255,175,177,181,255,175,177,181,255,176,178,181,255,177,179,181,255,176,178,180,255,177,180,182,255,183,186,188,255, -187,189,191,255,193,191,190,255,183,185,187,255,172,174,176,255,165,167,168,255,163,165,166,255,163,164,167,255,164,165,165,255, -163,165,166,255,162,164,166,255,163,163,166,255,163,163,165,255,163,163,164,255,161,163,165,255,161,162,164,255,162,163,163,255, -160,161,164,255,161,161,163,255,160,162,163,255,159,160,161,255,158,160,161,255,159,160,160,255,157,158,160,255,157,158,160,255, -157,158,159,255,155,156,158,255,155,156,157,255,155,155,157,255,153,154,155,255,153,153,155,255,153,154,155,255,151,152,153,255, -152,152,153,255,151,151,152,255,149,150,151,255,150,150,151,255,149,149,150,255,148,148,149,255,148,147,149,255,147,148,147,255, -147,146,148,255,146,146,147,255,145,145,146,255,140,139,140,255,103,101, 98,255,102, 99, 95,255,124,122,121,255,126,124,123,255, -125,123,122,255,124,123,121,255,123,122,120,255,122,121,119,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,127,128,130,255, -188,191,194,255,186,189,193,255,187,190,193,255,187,189,192,255,187,189,192,255,186,188,191,255,186,189,191,255,185,189,192,255, -185,189,191,255,186,189,191,255,186,189,191,255,186,188,191,255,185,189,192,255,185,188,191,255,182,185,188,255,154,156,157,255, - 78, 73, 68,255, 69, 63, 58,255, 71, 65, 60,255,132,131,131,255,170,172,174,255,174,176,178,255,176,178,180,255,175,177,179,255, -176,178,180,255,176,177,179,255,176,177,179,255,176,178,180,255,176,178,180,255,176,179,181,255,176,178,180,255,175,178,181,255, -175,177,181,255,176,178,181,255,176,178,181,255,177,179,181,255,177,179,181,255,177,178,180,255,176,179,181,255,179,181,183,255, -187,191,193,255,188,189,188,255,189,190,189,255,180,182,185,255,168,170,171,255,164,165,167,255,163,165,166,255,164,165,165,255, -163,164,165,255,162,165,166,255,163,164,165,255,163,164,166,255,163,163,165,255,162,163,164,255,161,163,165,255,162,162,164,255, -160,162,164,255,161,161,163,255,160,162,163,255,160,161,162,255,159,161,161,255,159,160,161,255,157,158,160,255,157,158,160,255, -157,158,159,255,156,157,158,255,155,156,157,255,155,155,157,255,154,154,156,255,153,154,155,255,153,154,155,255,152,152,153,255, -151,152,153,255,151,152,153,255,150,150,151,255,150,150,151,255,149,150,149,255,148,148,149,255,147,148,148,255,148,147,147,255, -146,146,147,255,146,146,147,255,145,145,146,255,144,144,144,255,134,133,133,255, 94, 90, 87,255,108,104,102,255,125,123,121,255, -124,123,122,255,124,122,121,255,123,122,120,255,122,121,119,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,127,128,130,255, -188,191,194,255,187,190,193,255,186,189,192,255,187,190,193,255,186,189,192,255,187,189,192,255,187,188,191,255,186,189,192,255, -186,189,192,255,185,189,192,255,186,189,192,255,186,189,192,255,186,188,191,255,186,189,192,255,184,187,190,255,176,179,181,255, -120,118,117,255, 70, 64, 59,255, 69, 63, 58,255, 91, 86, 83,255,157,157,159,255,173,175,177,255,175,177,179,255,176,178,180,255, -176,177,179,255,176,178,180,255,176,178,180,255,176,179,181,255,176,179,181,255,176,178,180,255,175,178,181,255,176,178,181,255, -176,178,181,255,177,179,181,255,177,179,181,255,176,178,181,255,176,179,181,255,176,179,181,255,176,178,180,255,177,179,181,255, -182,184,186,255,190,193,196,255,186,188,186,255,187,188,190,255,175,177,179,255,165,167,168,255,164,165,167,255,164,165,166,255, -163,165,166,255,162,164,165,255,163,165,166,255,163,165,166,255,162,164,165,255,162,163,165,255,161,163,165,255,162,162,164,255, -161,162,164,255,160,161,164,255,160,161,163,255,159,161,162,255,160,160,162,255,159,160,162,255,158,159,160,255,157,158,160,255, -157,158,159,255,156,157,158,255,155,156,158,255,155,156,156,255,154,155,156,255,154,154,156,255,153,154,155,255,152,153,154,255, -151,152,153,255,150,152,153,255,150,150,151,255,150,150,151,255,149,150,150,255,148,148,149,255,148,148,149,255,147,147,147,255, -146,146,147,255,145,146,147,255,145,145,145,255,145,145,145,255,142,142,142,255,125,123,123,255, 89, 85, 81,255,115,113,109,255, -124,122,121,255,124,122,121,255,123,122,120,255,122,120,118,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,127,129,130,255, -189,192,195,255,188,189,192,255,187,190,192,255,186,190,192,255,186,189,192,255,187,190,193,255,187,190,193,255,186,188,191,255, -187,189,191,255,186,189,191,255,186,189,192,255,186,189,192,255,185,188,192,255,185,189,192,255,186,188,191,255,183,186,188,255, -160,161,163,255, 85, 81, 77,255, 69, 63, 58,255, 70, 64, 59,255,124,123,122,255,168,170,171,255,175,177,179,255,176,178,180,255, -176,178,180,255,176,179,181,255,176,178,180,255,175,178,181,255,175,177,181,255,176,178,181,255,176,178,181,255,177,179,181,255, -176,178,181,255,177,179,181,255,176,179,181,255,177,179,181,255,176,179,181,255,177,179,181,255,176,179,181,255,177,179,181,255, -178,180,182,255,185,187,190,255,190,192,194,255,188,189,187,255,185,188,191,255,170,171,173,255,165,166,167,255,163,165,166,255, -164,164,167,255,164,165,167,255,163,165,165,255,163,164,165,255,162,163,166,255,162,164,164,255,161,164,164,255,161,163,165,255, -161,163,164,255,160,162,164,255,160,161,163,255,160,161,163,255,159,160,162,255,160,161,162,255,158,159,160,255,158,159,160,255, -158,159,159,255,156,157,159,255,156,157,158,255,155,156,158,255,155,155,156,255,154,155,156,255,153,154,155,255,153,153,154,255, -152,152,153,255,152,151,152,255,150,151,152,255,150,151,152,255,149,150,151,255,149,148,149,255,148,148,149,255,146,148,147,255, -146,147,147,255,145,147,146,255,145,145,145,255,144,144,144,255,144,144,144,255,139,139,139,255,107,105,103,255, 90, 86, 82,255, -118,116,114,255,123,121,119,255,123,121,119,255,122,120,118,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,127,128,130,255, -189,192,195,255,187,191,193,255,188,191,193,255,187,190,193,255,187,190,193,255,186,189,192,255,186,189,192,255,186,190,192,255, -186,190,192,255,187,190,191,255,187,190,191,255,186,189,192,255,186,189,192,255,186,189,191,255,185,189,192,255,185,188,190,255, -180,182,185,255,129,128,127,255, 69, 63, 58,255, 68, 62, 57,255, 80, 76, 71,255,150,151,152,255,173,174,177,255,175,177,179,255, -175,178,181,255,176,178,180,255,175,177,181,255,175,177,181,255,176,178,181,255,176,178,181,255,177,179,181,255,177,178,181,255, -177,179,181,255,176,179,181,255,176,179,181,255,176,179,181,255,177,179,181,255,176,179,181,255,177,179,181,255,176,178,180,255, -177,179,181,255,179,182,184,255,188,191,193,255,190,191,190,255,187,188,187,255,180,182,184,255,167,168,170,255,164,165,167,255, -163,165,166,255,163,164,166,255,164,165,166,255,163,164,166,255,162,164,166,255,163,163,164,255,162,164,165,255,162,163,165,255, -161,163,164,255,161,163,163,255,160,162,164,255,161,162,162,255,160,161,162,255,160,161,161,255,159,160,161,255,159,160,161,255, -158,159,160,255,157,158,159,255,156,157,159,255,156,157,158,255,155,156,157,255,154,155,156,255,154,154,155,255,153,153,154,255, -152,153,154,255,152,152,153,255,150,151,152,255,150,151,151,255,150,149,151,255,148,149,149,255,147,148,148,255,147,147,147,255, -147,147,147,255,146,146,146,255,145,145,145,255,144,144,145,255,145,144,145,255,143,142,143,255,135,133,133,255, 91, 88, 85,255, - 90, 86, 82,255,118,116,114,255,122,120,117,255,122,120,118,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,127,129,131,255, -189,192,195,255,187,191,194,255,187,190,194,255,188,191,194,255,187,191,194,255,187,190,193,255,187,189,192,255,187,190,193,255, -186,190,193,255,186,190,192,255,186,189,192,255,187,190,191,255,187,190,191,255,186,189,192,255,186,189,191,255,185,188,192,255, -185,187,189,255,171,173,174,255, 97, 94, 90,255, 67, 60, 55,255, 68, 62, 56,255,102, 98, 96,255,165,167,169,255,174,176,178,255, -176,178,180,255,175,178,181,255,176,178,180,255,176,178,181,255,177,179,181,255,177,179,181,255,177,179,181,255,176,179,181,255, -176,179,181,255,176,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,178,180,255, -176,179,181,255,178,180,182,255,182,184,188,255,188,190,192,255,191,191,190,255,185,186,188,255,173,175,177,255,165,167,168,255, -163,165,166,255,164,164,166,255,163,164,166,255,162,165,166,255,163,164,166,255,162,163,165,255,163,164,164,255,162,163,165,255, -161,162,164,255,161,163,163,255,161,162,164,255,161,162,162,255,160,161,163,255,159,160,162,255,159,160,161,255,159,160,161,255, -158,159,160,255,157,158,159,255,156,157,159,255,156,157,158,255,155,156,157,255,154,155,156,255,154,155,156,255,153,153,154,255, -152,153,154,255,152,151,152,255,151,151,152,255,150,150,151,255,150,150,151,255,148,149,149,255,148,149,149,255,148,147,147,255, -146,146,147,255,146,146,147,255,145,145,145,255,144,144,145,255,145,144,145,255,143,143,143,255,142,141,141,255,128,126,125,255, - 81, 77, 74,255, 94, 89, 85,255,118,116,113,255,120,118,116,255, 92, 91, 90,255, 61, 61, 61,255, 60, 60, 60,255,127,129,131,255, -190,193,196,255,189,190,193,255,188,190,193,255,188,190,193,255,187,190,193,255,188,191,194,255,188,190,193,255,188,190,193,255, -188,189,192,255,187,190,193,255,186,190,193,255,186,190,193,255,187,190,192,255,187,190,192,255,186,189,191,255,187,190,191,255, -185,188,191,255,183,185,188,255,150,151,152,255, 75, 69, 65,255, 69, 63, 58,255, 71, 66, 61,255,134,133,133,255,170,172,174,255, -175,177,180,255,176,178,180,255,177,179,181,255,177,179,181,255,177,179,181,255,176,179,181,255,176,179,181,255,176,179,181,255, -177,179,181,255,176,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255, -177,179,181,255,176,178,180,255,179,181,183,255,188,190,193,255,187,188,189,255,191,191,190,255,181,184,186,255,169,170,172,255, -165,166,167,255,163,164,167,255,164,165,165,255,163,165,166,255,163,164,166,255,162,163,166,255,163,164,165,255,163,164,164,255, -161,162,165,255,161,162,164,255,162,163,164,255,160,161,163,255,161,162,162,255,160,161,163,255,159,160,161,255,159,160,162,255, -158,159,161,255,158,159,159,255,157,158,159,255,156,157,159,255,156,156,158,255,155,156,157,255,154,155,156,255,153,154,155,255, -153,153,154,255,152,153,154,255,151,152,153,255,150,151,152,255,150,150,151,255,149,149,150,255,148,148,149,255,147,147,149,255, -146,147,147,255,146,146,147,255,145,145,145,255,144,144,145,255,144,144,144,255,143,143,143,255,142,142,142,255,140,139,138,255, -118,116,114,255, 76, 71, 67,255, 98, 95, 90,255,117,115,112,255, 91, 90, 89,255, 61, 61, 61,255, 60, 60, 60,255,128,129,131,255, -190,193,196,255,189,191,194,255,189,191,194,255,189,190,193,255,188,190,194,255,187,190,193,255,188,191,194,255,188,190,193,255, -187,190,193,255,188,189,192,255,187,190,193,255,187,190,192,255,186,190,193,255,187,190,192,255,187,190,192,255,187,190,192,255, -186,190,192,255,185,188,190,255,176,179,181,255,115,113,111,255, 70, 64, 59,255, 69, 63, 58,255, 91, 87, 83,255,156,158,158,255, -173,175,177,255,176,178,180,255,176,178,180,255,177,179,181,255,176,179,181,255,176,179,181,255,177,179,181,255,177,179,181,255, -176,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255, -177,179,181,255,176,178,180,255,177,179,181,255,180,182,184,255,189,192,196,255,188,189,189,255,187,188,190,255,178,179,181,255, -166,168,169,255,164,165,167,255,164,164,165,255,164,164,166,255,164,165,166,255,162,163,165,255,163,164,166,255,163,164,165,255, -162,163,164,255,161,162,164,255,162,163,163,255,160,161,163,255,161,162,162,255,160,161,163,255,160,161,162,255,159,160,162,255, -159,160,161,255,157,158,160,255,157,158,160,255,157,158,159,255,156,157,158,255,155,156,157,255,155,154,156,255,153,154,155,255, -153,153,154,255,151,153,154,255,151,152,153,255,151,151,152,255,150,149,151,255,149,149,150,255,148,148,149,255,147,147,148,255, -146,147,147,255,147,147,147,255,145,145,145,255,144,144,144,255,144,144,144,255,143,142,142,255,143,142,142,255,142,141,141,255, -136,136,135,255,104,102, 99,255, 72, 66, 62,255, 96, 92, 88,255, 88, 87, 85,255, 61, 61, 61,255, 60, 60, 60,255,128,130,131,255, -190,194,197,255,188,191,194,255,189,192,195,255,188,191,194,255,189,191,193,255,188,191,193,255,187,190,193,255,188,191,194,255, -188,190,193,255,187,190,193,255,188,189,192,255,187,189,192,255,187,190,193,255,186,190,193,255,186,190,193,255,186,189,193,255, -187,190,192,255,186,189,192,255,184,186,189,255,160,161,162,255, 84, 80, 75,255, 69, 63, 58,255, 69, 63, 58,255,120,119,118,255, -168,170,172,255,175,177,179,255,176,178,180,255,176,178,181,255,176,179,181,255,176,179,181,255,176,179,181,255,177,179,181,255, -177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255, -177,179,181,255,177,179,181,255,176,178,180,255,178,180,182,255,182,184,188,255,190,192,195,255,191,191,189,255,185,186,189,255, -172,174,176,255,165,167,168,255,163,164,166,255,164,165,165,255,164,165,166,255,162,163,166,255,163,164,166,255,162,163,165,255, -162,163,165,255,161,162,164,255,162,163,164,255,161,162,163,255,160,161,162,255,160,161,162,255,159,160,162,255,159,160,161,255, -159,160,161,255,157,158,160,255,157,158,159,255,157,158,159,255,156,157,158,255,155,156,157,255,155,155,157,255,154,154,155,255, -153,154,155,255,152,153,154,255,151,151,152,255,151,151,152,255,150,150,150,255,149,149,150,255,148,149,149,255,147,147,148,255, -147,147,147,255,146,146,147,255,145,145,145,255,144,144,144,255,144,144,144,255,143,142,142,255,142,142,142,255,142,141,141,255, -140,139,139,255,132,131,130,255, 93, 89, 86,255, 68, 63, 59,255, 72, 69, 67,255, 61, 61, 61,255, 60, 60, 60,255,128,130,131,255, -191,194,197,255,189,192,195,255,188,191,194,255,188,191,194,255,188,191,195,255,189,192,195,255,189,192,195,255,188,191,194,255, -187,190,193,255,188,190,193,255,188,191,194,255,188,190,193,255,187,189,192,255,188,189,192,255,187,190,193,255,187,190,192,255, -187,189,193,255,187,190,192,255,186,189,192,255,181,183,186,255,129,128,128,255, 69, 63, 58,255, 69, 63, 58,255, 75, 70, 65,255, -146,146,147,255,172,174,176,255,175,177,180,255,176,178,181,255,177,179,180,255,177,179,181,255,177,179,181,255,177,179,181,255, -177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255, -177,179,181,255,177,179,181,255,177,179,180,255,176,178,181,255,178,180,182,255,185,188,191,255,189,191,191,255,189,189,188,255, -182,184,187,255,168,170,172,255,165,166,167,255,163,164,166,255,163,165,165,255,163,164,166,255,162,163,165,255,163,164,166,255, -162,163,164,255,161,162,164,255,161,162,165,255,161,162,163,255,160,161,163,255,161,162,162,255,159,160,162,255,160,161,161,255, -159,160,162,255,158,159,160,255,158,159,160,255,157,158,160,255,156,157,158,255,156,157,158,255,155,156,157,255,154,155,156,255, -153,154,155,255,153,153,154,255,151,152,152,255,151,151,152,255,150,151,152,255,149,149,150,255,149,149,150,255,147,147,148,255, -147,147,148,255,146,146,147,255,145,145,145,255,144,144,144,255,145,144,144,255,143,143,142,255,142,143,141,255,142,142,141,255, -140,140,139,255,139,138,137,255,128,128,126,255, 84, 80, 76,255, 63, 60, 58,255, 61, 61, 62,255, 60, 60, 60,255,128,130,131,255, -191,194,197,255,190,193,195,255,189,192,195,255,188,191,194,255,188,191,194,255,189,192,195,255,188,191,194,255,188,191,194,255, -188,191,194,255,187,190,193,255,188,191,194,255,188,191,194,255,188,190,193,255,187,190,193,255,188,189,192,255,188,190,193,255, -187,190,192,255,187,189,193,255,186,190,192,255,185,188,190,255,173,175,177,255,100, 97, 94,255, 67, 61, 55,255, 67, 61, 56,255, - 94, 91, 87,255,161,162,164,255,174,176,178,255,176,178,180,255,177,179,181,255,176,178,180,255,177,179,181,255,177,179,181,255, -177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255, -177,179,181,255,177,179,181,255,177,179,181,255,176,178,180,255,177,179,181,255,180,182,185,255,188,191,194,255,190,190,190,255, -188,189,190,255,176,178,180,255,166,167,169,255,164,165,167,255,164,164,166,255,164,165,166,255,162,163,166,255,163,164,166,255, -163,164,164,255,162,163,165,255,161,162,165,255,161,162,163,255,161,162,163,255,161,162,162,255,160,161,163,255,159,160,162,255, -160,161,162,255,158,159,160,255,157,158,160,255,157,158,160,255,157,158,158,255,156,157,158,255,155,155,156,255,155,155,156,255, -154,154,155,255,152,153,154,255,151,152,153,255,151,152,153,255,151,151,152,255,149,149,150,255,149,149,150,255,147,147,148,255, -147,147,148,255,147,147,147,255,145,145,145,255,145,145,145,255,144,144,144,255,143,143,142,255,142,142,141,255,141,141,141,255, -140,140,139,255,139,139,138,255,137,136,135,255,122,120,118,255, 76, 74, 72,255, 61, 61, 61,255, 60, 60, 60,255,129,130,132,255, -191,194,198,255,190,193,196,255,190,193,195,255,189,192,195,255,189,192,195,255,188,191,194,255,189,192,195,255,189,192,195,255, -188,191,194,255,188,191,194,255,187,190,193,255,188,191,194,255,188,191,194,255,188,190,193,255,188,190,193,255,187,189,192,255, -188,189,192,255,188,190,193,255,187,190,193,255,186,189,192,255,183,186,188,255,155,156,157,255, 80, 75, 70,255, 69, 63, 58,255, - 71, 65, 60,255,121,120,118,255,168,170,172,255,175,177,179,255,176,178,180,255,177,179,181,255,177,179,181,255,177,179,181,255, -177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255, -177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,176,178,180,255,177,179,181,255,183,185,187,255,190,193,195,255, -188,189,188,255,187,188,191,255,171,173,174,255,164,166,167,255,164,165,166,255,163,164,166,255,162,163,166,255,163,164,166,255, -163,164,165,255,162,163,164,255,161,162,165,255,162,163,163,255,161,162,163,255,160,161,163,255,160,161,163,255,159,160,162,255, -159,160,162,255,158,159,160,255,158,159,161,255,158,159,160,255,156,157,158,255,156,157,158,255,156,156,157,255,154,155,156,255, -154,155,156,255,153,154,155,255,152,152,153,255,152,152,153,255,151,151,152,255,149,150,150,255,149,149,150,255,147,148,148,255, -147,148,147,255,147,147,147,255,145,145,145,255,145,145,145,255,144,144,144,255,142,142,142,255,142,142,141,255,141,141,140,255, -140,140,139,255,139,139,138,255,139,138,137,255,135,134,134,255, 95, 95, 94,255, 61, 61, 61,255, 60, 60, 60,255,129,130,132,255, -192,195,198,255,190,193,197,255,190,193,196,255,189,192,195,255,190,193,196,255,189,192,195,255,189,191,194,255,189,192,195,255, -188,192,195,255,188,191,194,255,188,191,194,255,188,191,194,255,187,190,194,255,188,191,194,255,188,190,193,255,188,191,194,255, -188,190,193,255,188,190,193,255,188,190,193,255,187,190,193,255,186,189,192,255,179,181,183,255,123,122,121,255, 71, 65, 60,255, - 69, 63, 58,255, 82, 76, 72,255,148,149,149,255,172,174,176,255,176,178,180,255,177,179,180,255,176,178,181,255,177,179,181,255, -177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255, -177,179,181,255,177,179,181,255,177,179,181,255,177,178,180,255,177,178,180,255,176,178,180,255,178,180,182,255,185,188,191,255, -190,191,192,255,188,189,188,255,183,185,187,255,168,170,171,255,164,165,167,255,163,164,165,255,162,163,166,255,163,164,166,255, -163,164,165,255,162,163,164,255,162,163,164,255,161,163,163,255,160,162,164,255,161,162,163,255,160,161,163,255,159,160,163,255, -159,160,162,255,159,160,161,255,158,159,160,255,157,159,160,255,157,157,159,255,157,157,159,255,156,157,158,255,154,155,156,255, -154,155,156,255,154,154,155,255,152,152,153,255,152,152,153,255,151,151,152,255,149,150,150,255,149,150,150,255,149,148,148,255, -147,147,147,255,147,147,147,255,145,145,145,255,144,144,144,255,144,144,144,255,142,142,142,255,142,141,141,255,141,141,140,255, -140,139,138,255,139,139,138,255,139,138,137,255,137,136,136,255,100, 99, 98,255, 61, 61, 61,255, 60, 60, 60,255,129,130,132,255, -192,195,198,255,191,194,196,255,190,193,197,255,189,192,196,255,189,192,195,255,190,193,196,255,190,192,195,255,189,191,194,255, -189,192,195,255,188,192,195,255,189,192,195,255,189,192,195,255,188,191,194,255,187,190,194,255,187,191,194,255,188,190,193,255, -188,191,194,255,188,191,194,255,187,191,194,255,188,190,193,255,187,189,192,255,185,187,190,255,167,168,170,255, 92, 89, 85,255, - 69, 62, 57,255, 68, 62, 56,255,101, 98, 95,255,164,165,166,255,174,176,178,255,176,178,180,255,177,179,180,255,176,178,181,255, -177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255, -177,178,180,255,177,179,181,255,177,178,180,255,176,178,180,255,177,177,179,255,177,178,180,255,177,179,181,255,179,181,183,255, -187,190,192,255,191,192,191,255,186,188,188,255,177,179,181,255,166,167,169,255,163,164,166,255,163,164,165,255,162,163,166,255, -163,164,164,255,162,163,165,255,162,163,165,255,161,162,163,255,160,163,164,255,161,162,163,255,160,161,162,255,159,160,163,255, -160,161,162,255,158,159,161,255,158,159,160,255,157,159,161,255,157,158,159,255,157,158,159,255,156,157,158,255,155,155,156,255, -155,155,156,255,154,154,155,255,152,153,154,255,152,152,153,255,150,152,151,255,150,150,151,255,149,150,150,255,148,148,148,255, -147,147,147,255,147,147,147,255,145,145,145,255,145,144,144,255,144,144,144,255,143,142,142,255,142,141,141,255,142,141,140,255, -140,139,138,255,139,138,137,255,138,137,137,255,138,136,136,255,100, 99, 99,255, 61, 61, 61,255, 60, 60, 60,255,129,131,132,255, -193,196,199,255,191,194,197,255,190,193,196,255,190,193,197,255,190,193,196,255,189,192,195,255,189,193,196,255,190,192,195,255, -190,191,194,255,189,191,194,255,188,192,195,255,189,191,195,255,189,192,193,255,188,191,194,255,188,190,194,255,188,191,194,255, -188,191,194,255,188,191,194,255,188,191,194,255,188,191,194,255,187,190,193,255,186,189,192,255,183,185,188,255,147,148,148,255, - 71, 65, 61,255, 69, 63, 58,255, 68, 62, 57,255,123,123,120,255,170,172,174,255,175,177,179,255,176,178,181,255,177,179,180,255, -176,178,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,178,180,255, -177,179,181,255,177,178,180,255,176,178,180,255,177,177,179,255,176,178,180,255,176,177,179,255,177,177,179,255,177,179,181,255, -181,183,185,255,189,191,193,255,190,191,189,255,184,186,187,255,172,174,175,255,164,166,167,255,163,164,166,255,162,163,165,255, -163,164,165,255,162,163,164,255,161,162,165,255,161,163,163,255,161,163,163,255,160,162,164,255,160,161,162,255,159,160,162,255, -160,161,162,255,158,159,161,255,159,159,161,255,159,158,161,255,157,158,159,255,157,158,159,255,155,157,157,255,156,156,157,255, -155,155,156,255,154,155,156,255,152,153,154,255,152,153,153,255,151,152,152,255,150,150,151,255,149,149,150,255,148,148,148,255, -147,147,147,255,147,147,147,255,145,145,145,255,145,144,144,255,144,143,143,255,143,142,142,255,142,141,141,255,141,140,140,255, -140,139,138,255,139,138,137,255,138,137,136,255,138,136,135,255,100, 99, 99,255, 61, 61, 61,255, 60, 60, 60,255,129,131,132,255, -193,196,199,255,192,195,198,255,191,194,197,255,190,193,196,255,191,194,197,255,191,194,197,255,190,193,196,255,189,192,195,255, -190,193,196,255,189,192,195,255,189,191,194,255,189,192,194,255,188,192,195,255,188,191,194,255,189,190,193,255,188,191,194,255, -188,191,194,255,187,191,194,255,188,191,194,255,187,190,193,255,188,191,193,255,188,189,192,255,186,188,191,255,179,182,184,255, -120,118,118,255, 68, 61, 56,255, 69, 63, 58,255, 77, 71, 67,255,145,146,146,255,172,174,176,255,176,177,179,255,176,178,181,255, -177,179,181,255,177,179,181,255,177,179,181,255,177,179,181,255,177,178,180,255,177,179,181,255,177,179,181,255,177,178,180,255, -176,178,180,255,177,177,179,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,177,179,255, -177,179,181,255,184,186,188,255,188,190,191,255,191,191,190,255,181,184,185,255,168,169,171,255,164,165,167,255,162,164,165,255, -162,163,165,255,161,164,164,255,162,163,165,255,162,163,164,255,161,163,163,255,160,162,164,255,161,162,162,255,160,161,162,255, -159,160,162,255,159,160,161,255,159,160,161,255,158,159,160,255,157,158,159,255,157,158,159,255,157,157,159,255,155,156,157,255, -154,156,157,255,154,155,156,255,153,153,154,255,153,153,154,255,152,152,153,255,150,150,151,255,149,149,150,255,148,148,150,255, -147,147,148,255,147,147,147,255,145,145,145,255,145,144,144,255,144,144,143,255,143,142,142,255,142,141,141,255,141,140,140,255, -139,138,138,255,139,138,137,255,138,137,136,255,137,136,135,255,100, 99, 99,255, 61, 61, 61,255, 60, 60, 60,255,129,131,132,255, -193,196,199,255,192,195,198,255,192,195,198,255,191,194,197,255,190,193,196,255,190,193,196,255,191,194,197,255,190,193,196,255, -189,192,195,255,190,193,196,255,190,192,195,255,189,191,194,255,188,191,194,255,189,191,194,255,188,191,194,255,189,190,193,255, -188,191,194,255,188,191,194,255,188,191,193,255,188,191,194,255,188,191,194,255,188,190,193,255,187,189,192,255,185,188,190,255, -167,168,170,255, 93, 89, 86,255, 69, 63, 58,255, 69, 63, 58,255, 98, 95, 92,255,161,161,163,255,174,176,177,255,176,178,180,255, -176,179,181,255,177,178,180,255,177,179,181,255,177,179,181,255,177,179,181,255,177,178,180,255,177,178,180,255,177,177,179,255, -177,177,179,255,176,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,175,178,180,255,175,178,180,255,175,177,179,255, -176,177,179,255,178,179,181,255,186,188,191,255,189,190,190,255,187,189,189,255,179,181,183,255,165,167,168,255,163,164,166,255, -162,164,165,255,161,163,164,255,162,163,164,255,162,163,164,255,161,163,163,255,160,162,164,255,161,161,163,255,160,161,163,255, -159,160,162,255,159,160,161,255,159,160,160,255,158,159,161,255,158,158,159,255,157,157,159,255,157,157,159,255,155,156,157,255, -155,156,157,255,155,155,156,255,153,153,154,255,153,153,154,255,152,151,153,255,150,150,151,255,150,150,150,255,149,149,150,255, -148,148,148,255,147,147,147,255,145,145,145,255,145,145,144,255,144,144,143,255,142,142,141,255,142,141,141,255,141,140,140,255, -139,138,138,255,138,137,136,255,138,137,136,255,137,136,135,255,100, 99, 99,255, 61, 61, 61,255, 60, 60, 60,255,130,131,133,255, -194,197,200,255,191,194,199,255,192,195,198,255,192,195,198,255,191,194,197,255,190,193,196,255,190,193,196,255,191,194,197,255, -190,193,196,255,189,192,195,255,190,192,195,255,190,192,195,255,188,191,194,255,189,192,195,255,189,192,195,255,188,191,194,255, -189,190,193,255,189,190,193,255,187,191,194,255,188,191,194,255,188,190,193,255,188,191,194,255,188,190,193,255,187,189,192,255, -182,184,187,255,145,145,145,255, 74, 69, 65,255, 69, 63, 58,255, 69, 63, 58,255,123,121,120,255,169,170,171,255,175,177,179,255, -176,178,180,255,176,179,181,255,177,178,180,255,177,179,181,255,177,178,180,255,177,177,179,255,176,177,179,255,176,178,180,255, -175,178,180,255,176,178,180,255,176,178,180,255,175,178,180,255,175,178,180,255,176,178,180,255,176,177,179,255,175,178,180,255, -176,178,180,255,175,177,179,255,179,180,182,255,187,189,191,255,191,192,190,255,185,186,187,255,174,176,178,255,164,166,167,255, -162,163,165,255,162,163,164,255,161,162,164,255,162,162,164,255,162,163,163,255,161,162,163,255,161,162,163,255,160,161,163,255, -159,160,162,255,159,160,161,255,158,160,160,255,158,159,161,255,157,159,159,255,157,158,159,255,157,158,159,255,155,156,157,255, -156,156,157,255,155,155,156,255,153,153,154,255,153,154,154,255,152,152,153,255,150,151,151,255,150,150,150,255,149,149,149,255, -148,148,148,255,147,147,147,255,145,145,145,255,145,145,144,255,144,144,143,255,142,142,141,255,141,141,140,255,141,140,140,255, -139,138,137,255,138,137,136,255,137,136,135,255,137,136,134,255,100, 99, 98,255, 61, 61, 61,255, 60, 60, 60,255,130,131,133,255, -194,197,200,255,192,195,199,255,192,195,199,255,191,194,198,255,192,195,198,255,191,194,197,255,190,193,196,255,190,194,197,255, -191,193,196,255,190,192,195,255,189,193,196,255,189,192,195,255,190,193,196,255,189,192,195,255,188,191,194,255,189,192,195,255, -189,192,195,255,189,191,194,255,187,191,194,255,187,191,194,255,188,191,194,255,188,190,193,255,187,191,194,255,188,190,193,255, -186,189,192,255,178,181,183,255,115,113,111,255, 69, 62, 57,255, 69, 63, 58,255, 73, 68, 64,255,142,142,142,255,172,173,175,255, -175,177,179,255,176,178,180,255,177,178,180,255,176,177,179,255,177,177,179,255,176,178,180,255,176,178,180,255,176,178,180,255, -176,178,180,255,175,178,180,255,175,178,180,255,176,178,180,255,176,177,179,255,176,178,180,255,176,177,179,255,176,176,178,255, -176,177,178,255,175,177,178,255,176,178,180,255,181,183,185,255,186,188,190,255,191,191,189,255,182,184,186,255,169,171,172,255, -164,165,165,255,162,163,165,255,161,163,165,255,162,163,164,255,161,162,163,255,160,161,164,255,161,162,163,255,160,161,163,255, -160,161,162,255,160,160,162,255,159,159,161,255,159,160,161,255,157,158,159,255,157,158,159,255,157,156,157,255,156,156,157,255, -155,156,157,255,155,155,156,255,153,154,154,255,153,153,154,255,151,153,153,255,151,151,151,255,150,150,150,255,148,148,148,255, -148,148,148,255,147,147,147,255,145,145,145,255,145,144,144,255,144,144,143,255,142,142,141,255,141,141,140,255,141,140,139,255, -139,138,137,255,138,137,136,255,137,136,135,255,136,135,134,255, 99, 99, 98,255, 61, 61, 61,255, 60, 60, 60,255,130,131,133,255, -194,197,200,255,193,196,198,255,192,195,199,255,191,194,199,255,192,195,197,255,192,195,198,255,191,194,197,255,190,193,196,255, -190,194,197,255,191,193,196,255,190,192,195,255,190,193,196,255,189,192,195,255,189,192,195,255,189,192,195,255,188,192,195,255, -189,192,195,255,189,191,194,255,188,191,194,255,188,191,194,255,187,191,194,255,188,191,194,255,188,190,193,255,188,191,194,255, -187,189,192,255,185,188,190,255,169,170,172,255, 94, 90, 87,255, 67, 60, 55,255, 68, 62, 57,255, 88, 83, 80,255,154,155,156,255, -173,175,177,255,176,177,179,255,176,177,179,255,177,177,179,255,176,178,180,255,175,178,180,255,176,178,180,255,176,178,180,255, -176,178,180,255,175,178,180,255,176,178,180,255,176,177,179,255,176,178,180,255,176,177,179,255,175,177,179,255,176,177,179,255, -175,176,178,255,175,176,179,255,175,177,179,255,176,178,180,255,182,185,188,255,188,189,191,255,187,188,187,255,180,182,184,255, -167,168,169,255,163,164,165,255,162,163,164,255,162,163,164,255,161,162,163,255,161,162,164,255,161,162,162,255,160,161,162,255, -159,160,163,255,160,160,161,255,159,160,161,255,159,160,161,255,157,158,159,255,157,158,159,255,156,157,158,255,156,156,157,255, -155,156,157,255,155,156,156,255,153,154,155,255,153,153,154,255,152,153,152,255,151,151,151,255,150,150,150,255,148,148,148,255, -148,148,148,255,147,147,147,255,145,145,145,255,145,144,144,255,144,144,143,255,143,142,141,255,142,141,140,255,141,140,139,255, -139,138,137,255,138,137,136,255,137,136,134,255,136,135,133,255, 99, 99, 98,255, 61, 61, 61,255, 60, 60, 60,255,130,132,133,255, -194,197,201,255,193,196,199,255,193,196,198,255,192,195,199,255,191,194,197,255,191,194,197,255,192,195,198,255,191,194,197,255, -190,193,196,255,190,194,197,255,191,193,196,255,190,192,195,255,189,193,196,255,190,193,196,255,190,192,195,255,189,192,195,255, -188,192,195,255,188,192,195,255,189,190,193,255,189,191,194,255,188,191,194,255,188,191,194,255,188,191,194,255,187,191,194,255, -188,190,193,255,187,189,192,255,183,185,188,255,152,152,154,255, 79, 73, 69,255, 69, 63, 58,255, 70, 64, 59,255,109,106,104,255, -164,166,167,255,175,176,178,255,176,178,180,255,176,177,179,255,176,178,180,255,177,178,180,255,176,178,180,255,175,178,180,255, -175,178,180,255,176,178,180,255,176,178,180,255,176,178,180,255,176,177,179,255,176,176,178,255,176,177,178,255,175,177,178,255, -174,177,179,255,174,177,178,255,174,176,178,255,175,176,179,255,176,178,180,255,183,185,187,255,190,191,191,255,184,186,186,255, -176,178,180,255,165,166,167,255,162,163,165,255,162,163,164,255,162,163,163,255,161,162,164,255,160,161,162,255,159,160,163,255, -159,160,162,255,159,160,161,255,159,160,161,255,158,159,160,255,157,158,159,255,158,158,158,255,157,157,159,255,155,157,157,255, -155,156,157,255,154,155,156,255,154,154,155,255,153,153,154,255,153,153,153,255,151,151,152,255,150,150,151,255,148,148,149,255, -148,148,148,255,148,147,147,255,146,145,145,255,145,144,144,255,144,143,143,255,143,142,141,255,142,141,140,255,141,140,139,255, -139,138,137,255,137,136,135,255,137,136,134,255,136,135,133,255, 99, 98, 98,255, 61, 61, 61,255, 60, 60, 60,255,130,132,133,255, -195,198,201,255,193,196,200,255,193,196,199,255,192,195,199,255,193,196,199,255,192,195,198,255,191,194,197,255,192,195,198,255, -191,194,197,255,190,193,196,255,191,194,197,255,190,193,196,255,189,193,195,255,190,192,195,255,190,193,196,255,189,192,195,255, -188,191,194,255,189,191,194,255,189,192,195,255,189,191,194,255,188,191,194,255,187,191,194,255,188,191,194,255,188,191,194,255, -188,191,193,255,187,190,193,255,186,189,192,255,179,181,184,255,125,123,122,255, 71, 66, 61,255, 69, 63, 58,255, 72, 66, 61,255, -131,129,129,255,169,171,173,255,175,177,178,255,175,178,180,255,176,177,179,255,175,178,180,255,175,178,180,255,176,177,179,255, -176,178,180,255,176,178,180,255,175,177,179,255,176,176,178,255,176,176,178,255,175,177,178,255,174,176,179,255,175,176,178,255, -175,177,178,255,175,177,177,255,175,176,177,255,174,176,178,255,175,176,178,255,177,179,181,255,183,186,189,255,189,190,189,255, -183,186,187,255,172,173,175,255,163,164,166,255,162,163,164,255,161,162,163,255,160,161,164,255,160,161,163,255,160,161,163,255, -159,160,162,255,159,160,161,255,158,160,160,255,159,159,161,255,157,159,159,255,157,158,159,255,157,158,159,255,155,156,157,255, -155,156,157,255,155,155,156,255,154,154,155,255,153,153,154,255,151,152,152,255,151,151,152,255,150,150,151,255,150,149,149,255, -148,148,148,255,148,147,147,255,146,145,145,255,145,144,144,255,144,143,143,255,142,141,141,255,142,141,140,255,141,140,139,255, -139,138,137,255,137,136,135,255,136,135,134,255,135,134,133,255, 99, 98, 97,255, 61, 61, 61,255, 60, 60, 60,255,130,132,134,255, -195,198,201,255,194,197,200,255,193,196,200,255,192,195,200,255,193,196,199,255,193,196,198,255,192,195,198,255,191,194,197,255, -192,194,198,255,191,193,197,255,190,194,196,255,191,194,197,255,190,192,196,255,189,193,195,255,189,192,195,255,190,193,196,255, -189,192,195,255,188,191,194,255,189,192,195,255,189,191,194,255,188,191,194,255,188,191,194,255,187,191,194,255,188,191,194,255, -187,190,193,255,188,191,193,255,187,190,192,255,185,188,191,255,171,172,174,255,100, 97, 94,255, 67, 61, 56,255, 68, 62, 57,255, - 79, 73, 68,255,144,145,145,255,172,174,175,255,175,177,179,255,176,178,180,255,175,177,179,255,176,178,180,255,176,178,180,255, -176,177,179,255,176,177,179,255,176,177,178,255,175,177,179,255,175,177,178,255,174,176,179,255,175,177,178,255,175,177,177,255, -175,176,177,255,174,176,177,255,175,175,178,255,174,175,177,255,174,175,177,255,174,176,178,255,178,180,182,255,186,187,190,255, -186,187,186,255,182,183,185,255,168,170,171,255,163,164,165,255,161,162,164,255,160,161,164,255,161,162,162,255,160,161,162,255, -160,161,162,255,159,160,161,255,158,160,160,255,159,159,161,255,157,159,159,255,157,158,159,255,157,157,158,255,155,156,157,255, -156,156,157,255,155,155,156,255,153,153,154,255,153,153,154,255,151,153,153,255,151,151,152,255,151,151,151,255,149,150,149,255, -148,148,148,255,148,147,147,255,146,145,145,255,145,144,144,255,144,143,143,255,142,141,141,255,141,140,140,255,141,140,139,255, -139,138,137,255,137,136,135,255,136,135,134,255,135,134,132,255, 99, 98, 97,255, 61, 61, 61,255, 60, 60, 60,255,130,132,134,255, -195,198,202,255,193,196,199,255,194,197,200,255,194,197,199,255,192,195,200,255,193,196,199,255,193,196,198,255,192,195,198,255, -191,194,197,255,192,194,198,255,190,193,196,255,191,194,197,255,191,193,197,255,190,192,196,255,189,193,195,255,190,193,196,255, -189,192,195,255,190,191,194,255,188,192,195,255,188,192,195,255,189,191,194,255,189,191,194,255,188,191,194,255,187,191,194,255, -188,191,194,255,187,191,194,255,188,190,193,255,186,189,192,255,184,186,189,255,160,161,162,255, 81, 76, 72,255, 68, 62, 57,255, - 69, 63, 58,255, 89, 85, 80,255,156,156,158,255,172,174,175,255,175,177,179,255,176,178,180,255,175,178,180,255,176,177,179,255, -175,176,178,255,176,176,178,255,175,177,179,255,174,177,178,255,174,176,179,255,175,176,177,255,175,177,178,255,175,177,178,255, -174,175,177,255,175,175,178,255,174,176,177,255,174,176,177,255,173,176,176,255,174,176,178,255,175,176,178,255,179,180,181,255, -187,189,192,255,186,186,186,255,180,182,183,255,165,167,168,255,161,162,164,255,160,161,163,255,160,161,162,255,159,160,161,255, -160,161,162,255,159,159,161,255,158,160,160,255,159,160,161,255,157,158,159,255,156,158,159,255,157,157,158,255,156,156,157,255, -155,156,156,255,155,155,156,255,153,154,154,255,152,154,154,255,152,153,153,255,151,151,151,255,151,151,151,255,149,149,149,255, -148,148,148,255,148,147,147,255,146,145,145,255,145,145,144,255,144,143,143,255,142,141,141,255,141,140,139,255,140,139,138,255, -138,137,136,255,138,136,135,255,136,135,133,255,135,133,131,255, 99, 98, 97,255, 61, 61, 61,255, 60, 60, 60,255,131,132,134,255, -195,198,202,255,193,196,200,255,193,196,200,255,193,196,199,255,193,196,200,255,193,196,199,255,192,195,198,255,193,195,199,255, -192,194,198,255,191,194,197,255,191,194,197,255,191,193,197,255,190,193,196,255,190,193,196,255,190,193,196,255,190,193,196,255, -190,192,195,255,190,192,195,255,188,191,194,255,189,191,194,255,189,192,195,255,189,191,194,255,188,190,193,255,187,191,194,255, -188,191,194,255,188,191,194,255,187,190,193,255,188,189,192,255,186,189,192,255,182,184,187,255,141,141,141,255, 74, 68, 63,255, - 69, 63, 58,255, 70, 64, 59,255,109,106,104,255,163,164,165,255,174,175,177,255,175,177,179,255,176,176,178,255,176,176,178,255, -175,177,179,255,174,177,178,255,174,177,178,255,175,177,178,255,175,176,177,255,175,176,178,255,174,176,177,255,175,175,178,255, -174,176,177,255,174,176,177,255,174,176,177,255,173,175,176,255,174,174,177,255,173,174,176,255,173,174,176,255,174,175,177,255, -179,180,182,255,186,188,189,255,185,186,186,255,176,177,179,255,165,166,167,255,161,162,163,255,160,161,162,255,159,160,161,255, -159,159,161,255,159,160,161,255,159,160,161,255,158,159,160,255,157,158,159,255,157,158,158,255,157,157,158,255,156,156,157,255, -155,155,156,255,154,155,155,255,153,154,154,255,153,153,153,255,153,153,153,255,151,151,151,255,151,151,151,255,149,149,149,255, -148,148,148,255,147,147,147,255,147,147,145,255,145,145,144,255,144,143,143,255,142,141,141,255,141,140,139,255,140,139,138,255, -138,137,136,255,137,136,134,255,135,134,133,255,135,133,131,255, 99, 98, 96,255, 61, 61, 61,255, 60, 60, 60,255,131,132,134,255, -196,199,202,255,194,197,201,255,194,197,201,255,193,196,200,255,194,197,199,255,193,196,199,255,192,195,198,255,193,195,198,255, -192,195,199,255,191,194,198,255,192,194,197,255,191,194,197,255,191,193,197,255,191,194,197,255,190,193,196,255,189,192,195,255, -190,193,196,255,190,193,196,255,189,192,195,255,188,191,194,255,189,191,194,255,189,192,195,255,188,191,194,255,188,190,193,255, -187,191,194,255,188,191,194,255,188,190,193,255,188,190,193,255,188,189,192,255,186,188,191,255,176,178,180,255,117,115,114,255, - 70, 63, 59,255, 69, 63, 58,255, 71, 65, 60,255,125,123,123,255,168,170,171,255,173,176,178,255,175,177,179,255,175,176,178,255, -175,176,179,255,174,176,179,255,175,176,178,255,175,177,177,255,175,177,177,255,175,176,178,255,175,175,178,255,174,175,177,255, -173,176,176,255,173,175,176,255,174,175,177,255,174,174,177,255,173,174,176,255,172,175,175,255,172,174,175,255,173,174,176,255, -174,175,177,255,180,182,184,255,185,187,187,255,184,185,185,255,173,174,176,255,163,164,165,255,160,161,163,255,159,160,162,255, -160,159,162,255,159,160,161,255,158,159,160,255,158,159,160,255,158,158,159,255,157,158,158,255,157,157,158,255,155,156,156,255, -155,156,156,255,153,154,154,255,154,154,154,255,153,153,153,255,153,153,153,255,151,151,151,255,150,150,150,255,149,149,149,255, -148,148,148,255,147,147,147,255,146,146,145,255,145,145,144,255,144,144,143,255,142,142,141,255,141,140,139,255,140,139,138,255, -138,137,135,255,137,135,134,255,135,134,132,255,134,132,130,255, 98, 97, 96,255, 61, 61, 61,255, 60, 60, 60,255,131,132,134,255, -196,199,202,255,195,198,201,255,195,198,200,255,194,197,201,255,194,197,199,255,194,197,200,255,194,197,199,255,192,195,199,255, -193,196,198,255,193,196,199,255,191,194,197,255,192,195,198,255,191,194,197,255,191,194,197,255,191,193,197,255,190,192,196,255, -189,193,195,255,189,192,195,255,190,192,195,255,189,191,194,255,188,192,195,255,188,191,194,255,189,190,193,255,188,190,193,255, -188,191,194,255,187,190,193,255,188,190,193,255,187,190,193,255,188,189,192,255,187,190,193,255,184,187,190,255,168,170,172,255, - 94, 89, 86,255, 68, 62, 57,255, 69, 63, 58,255, 72, 67, 61,255,137,137,137,255,170,171,172,255,173,175,177,255,175,177,179,255, -174,177,178,255,175,176,178,255,175,177,177,255,175,176,178,255,174,176,177,255,174,175,177,255,173,175,176,255,173,176,176,255, -174,175,177,255,173,174,176,255,173,174,176,255,172,174,175,255,173,175,176,255,172,173,175,255,173,174,176,255,173,173,176,255, -173,174,176,255,173,175,176,255,181,182,184,255,184,186,186,255,182,184,184,255,169,170,172,255,162,162,164,255,160,160,162,255, -160,161,162,255,158,159,160,255,158,159,160,255,157,159,160,255,158,157,158,255,157,158,158,255,157,157,158,255,155,156,156,255, -154,156,156,255,155,155,155,255,153,153,154,255,153,153,153,255,152,152,152,255,151,151,151,255,150,150,150,255,149,149,149,255, -148,148,148,255,147,147,147,255,145,145,145,255,145,144,143,255,144,144,143,255,142,141,140,255,141,140,139,255,140,139,138,255, -138,137,135,255,137,135,134,255,135,133,132,255,134,132,130,255, 98, 97, 96,255, 61, 61, 61,255, 60, 60, 60,255,131,132,134,255, -196,199,203,255,195,198,201,255,194,197,200,255,195,198,201,255,194,196,200,255,193,197,200,255,193,197,199,255,193,196,200,255, -192,195,199,255,192,196,199,255,192,194,198,255,192,194,198,255,192,195,198,255,191,194,197,255,190,194,196,255,190,194,196,255, -190,193,196,255,189,192,195,255,189,192,195,255,190,192,195,255,189,191,194,255,189,192,195,255,189,191,194,255,189,191,194,255, -188,191,194,255,187,191,194,255,188,191,194,255,188,189,192,255,188,190,193,255,187,190,193,255,186,189,192,255,184,186,189,255, -157,158,160,255, 81, 77, 72,255, 68, 62, 57,255, 69, 63, 58,255, 83, 78, 74,255,147,147,147,255,170,172,174,255,174,175,177,255, -174,176,178,255,175,176,178,255,175,176,178,255,175,175,178,255,174,176,177,255,173,176,176,255,174,175,177,255,174,174,177,255, -173,174,176,255,173,174,176,255,172,175,175,255,173,174,176,255,173,174,176,255,173,174,176,255,172,174,175,255,171,173,174,255, -171,173,174,255,172,173,174,255,173,174,175,255,181,182,184,255,184,185,185,255,181,182,184,255,168,169,170,255,161,162,163,255, -158,159,160,255,159,159,160,255,158,158,160,255,157,157,159,255,157,158,158,255,156,158,157,255,155,157,156,255,155,156,156,255, -154,155,156,255,155,155,155,255,153,153,153,255,153,153,153,255,152,152,152,255,151,151,151,255,150,150,150,255,149,148,148,255, -148,148,148,255,148,147,147,255,147,145,144,255,145,144,143,255,144,143,142,255,142,141,140,255,141,140,139,255,140,138,137,255, -138,137,135,255,136,135,133,255,135,133,131,255,133,131,129,255, 98, 97, 95,255, 61, 61, 61,255, 60, 60, 60,255,131,133,134,255, -196,199,203,255,195,198,201,255,195,198,201,255,194,198,200,255,194,197,201,255,194,196,200,255,193,196,199,255,193,196,200,255, -193,196,200,255,192,196,199,255,193,195,199,255,192,194,198,255,191,194,198,255,191,194,197,255,191,193,197,255,191,194,197,255, -190,193,196,255,190,193,196,255,190,193,196,255,190,192,195,255,189,191,195,255,188,191,194,255,189,192,195,255,189,191,194,255, -188,191,194,255,188,191,194,255,187,191,194,255,188,190,193,255,187,189,192,255,188,189,192,255,187,190,193,255,186,189,192,255, -181,183,186,255,142,142,142,255, 75, 70, 65,255, 69, 63, 58,255, 69, 63, 58,255, 95, 91, 87,255,156,156,157,255,172,173,175,255, -174,175,177,255,175,176,178,255,174,175,177,255,174,175,177,255,173,176,176,255,174,175,177,255,174,175,177,255,174,175,177,255, -173,174,176,255,172,175,175,255,173,174,176,255,173,173,176,255,172,173,175,255,172,174,175,255,171,173,174,255,171,173,174,255, -172,172,173,255,171,172,173,255,171,172,174,255,173,174,176,255,179,181,183,255,184,185,185,255,179,180,181,255,166,167,168,255, -160,160,161,255,158,159,160,255,158,159,159,255,158,158,159,255,157,158,158,255,157,157,158,255,155,157,156,255,155,155,156,255, -155,155,156,255,154,154,155,255,153,153,153,255,153,153,153,255,152,152,152,255,150,150,150,255,150,150,150,255,149,148,148,255, -148,147,147,255,148,147,146,255,146,145,144,255,145,144,143,255,144,143,142,255,142,141,140,255,141,140,138,255,140,138,137,255, -138,136,134,255,136,135,133,255,134,132,130,255,133,131,128,255, 97, 96, 95,255, 61, 61, 61,255, 60, 60, 60,255,131,133,134,255, -196,199,203,255,194,197,202,255,195,198,201,255,195,198,200,255,195,198,201,255,194,197,200,255,193,196,201,255,193,196,199,255, -194,197,200,255,193,196,199,255,193,196,199,255,192,195,199,255,192,194,198,255,192,195,198,255,191,194,197,255,190,193,196,255, -190,194,197,255,191,193,196,255,189,193,196,255,190,192,196,255,189,191,196,255,189,191,194,255,188,191,194,255,188,192,195,255, -189,190,193,255,189,191,194,255,188,191,194,255,188,190,193,255,188,189,192,255,188,190,193,255,187,190,193,255,187,189,192,255, -185,188,190,255,177,178,181,255,121,118,117,255, 71, 65, 60,255, 69, 63, 58,255, 67, 61, 56,255,105,101, 99,255,160,162,163,255, -172,173,175,255,173,174,176,255,173,176,176,255,174,176,177,255,173,175,176,255,174,174,177,255,173,175,176,255,172,175,175,255, -173,175,176,255,173,174,176,255,172,174,175,255,172,174,175,255,171,173,174,255,172,173,174,255,171,172,173,255,172,173,174,255, -170,171,174,255,171,172,173,255,171,172,172,255,171,172,173,255,172,173,175,255,179,181,183,255,182,183,184,255,176,177,179,255, -164,165,166,255,159,160,160,255,158,158,159,255,157,158,158,255,157,158,158,255,157,157,157,255,157,157,158,255,155,155,156,255, -155,155,156,255,154,154,155,255,153,153,154,255,152,152,153,255,151,152,152,255,151,150,150,255,151,150,150,255,149,148,148,255, -148,147,147,255,148,147,146,255,146,145,144,255,145,144,143,255,144,143,141,255,142,141,139,255,140,139,138,255,139,138,136,255, -137,135,134,255,136,134,132,255,134,132,129,255,132,130,127,255, 97, 96, 94,255, 61, 61, 61,255, 60, 60, 60,255,131,133,134,255, -197,200,203,255,195,198,202,255,194,197,201,255,194,197,201,255,194,197,200,255,195,198,201,255,194,197,200,255,193,196,200,255, -193,197,199,255,194,196,200,255,192,195,199,255,193,196,199,255,193,194,199,255,192,195,198,255,192,195,198,255,191,194,197,255, -190,194,196,255,191,193,196,255,189,192,195,255,189,193,196,255,190,193,196,255,190,191,195,255,189,192,194,255,188,192,195,255, -189,190,193,255,188,191,194,255,187,191,194,255,188,190,193,255,188,190,193,255,188,189,192,255,187,189,193,255,187,190,192,255, -187,189,192,255,185,187,190,255,172,174,175,255,103, 99, 97,255, 67, 61, 56,255, 69, 63, 58,255, 68, 62, 56,255,112,110,108,255, -162,163,165,255,172,173,175,255,173,175,176,255,174,175,177,255,174,174,177,255,173,175,176,255,172,175,175,255,172,174,175,255, -173,173,176,255,172,173,175,255,171,174,174,255,171,173,174,255,172,173,174,255,172,172,173,255,171,172,174,255,170,171,174,255, -171,172,173,255,170,171,172,255,170,171,172,255,170,171,172,255,170,171,172,255,171,172,173,255,178,180,181,255,181,182,183,255, -175,176,177,255,163,163,165,255,159,159,160,255,157,158,159,255,156,157,158,255,156,156,157,255,155,155,156,255,155,155,156,255, -154,154,155,255,154,154,155,255,152,152,153,255,152,152,153,255,152,152,152,255,151,150,150,255,150,149,149,255,149,148,148,255, -148,147,147,255,147,146,146,255,145,144,143,255,145,144,143,255,144,143,141,255,141,140,139,255,140,139,137,255,139,137,136,255, -137,135,133,255,135,133,131,255,133,132,129,255,132,129,126,255, 96, 95, 93,255, 61, 61, 61,255, 60, 60, 60,255,131,133,134,255, -197,200,203,255,195,198,201,255,195,198,202,255,194,197,202,255,195,198,201,255,194,197,200,255,195,198,201,255,194,197,200,255, -193,196,200,255,194,197,199,255,193,196,200,255,192,195,199,255,192,195,198,255,192,194,198,255,191,195,197,255,192,195,198,255, -191,193,197,255,190,194,197,255,190,192,196,255,190,193,195,255,189,193,195,255,190,191,195,255,189,192,194,255,188,192,195,255, -188,191,194,255,189,190,193,255,188,191,194,255,187,191,194,255,188,190,193,255,188,189,192,255,187,190,192,255,186,189,193,255, -187,190,192,255,186,188,191,255,184,186,189,255,164,165,167,255, 94, 90, 86,255, 67, 61, 56,255, 69, 63, 58,255, 73, 67, 62,255, -122,120,119,255,165,166,168,255,171,173,175,255,173,174,176,255,173,175,176,255,172,174,175,255,172,174,175,255,173,173,176,255, -172,173,175,255,172,174,175,255,172,174,175,255,172,173,174,255,171,172,173,255,171,172,174,255,170,171,173,255,170,171,173,255, -171,172,172,255,170,171,172,255,170,171,172,255,169,170,171,255,169,170,171,255,169,170,171,255,170,171,172,255,177,178,179,255, -179,181,181,255,173,175,176,255,162,163,164,255,158,158,159,255,156,157,158,255,156,156,157,255,156,156,157,255,154,154,155,255, -154,154,155,255,154,154,154,255,153,153,153,255,153,153,153,255,152,152,152,255,150,150,150,255,150,149,149,255,148,147,147,255, -148,147,146,255,147,146,145,255,145,144,143,255,144,143,142,255,142,141,140,255,142,140,139,255,140,138,137,255,138,137,135,255, -136,135,133,255,135,133,130,255,133,130,127,255,131,128,124,255, 96, 94, 92,255, 61, 61, 61,255, 60, 60, 60,255,131,133,134,255, -197,200,203,255,196,199,202,255,195,198,202,255,196,199,202,255,194,197,201,255,195,198,200,255,195,198,200,255,194,197,201,255, -193,196,200,255,193,196,199,255,194,197,200,255,193,196,199,255,193,195,199,255,192,195,198,255,191,194,197,255,192,194,198,255, -191,193,197,255,190,193,196,255,191,193,197,255,191,192,196,255,190,192,195,255,189,192,195,255,190,191,194,255,189,192,195,255, -189,191,194,255,189,190,193,255,188,191,194,255,187,191,193,255,188,190,192,255,188,189,193,255,187,190,193,255,186,190,192,255, -186,189,191,255,187,189,192,255,186,188,191,255,182,184,187,255,154,154,156,255, 83, 78, 74,255, 69, 63, 58,255, 69, 63, 58,255, - 73, 67, 62,255,132,130,130,255,166,167,168,255,172,173,174,255,172,173,175,255,173,173,176,255,173,174,176,255,171,174,174,255, -171,174,175,255,172,173,174,255,172,172,173,255,171,172,174,255,170,171,174,255,171,172,173,255,170,171,172,255,171,172,173,255, -169,170,171,255,169,170,171,255,168,169,170,255,168,169,170,255,167,168,169,255,167,168,169,255,168,168,169,255,169,169,170,255, -176,177,178,255,178,179,180,255,172,173,174,255,160,161,162,255,157,157,158,255,156,156,157,255,155,155,156,255,154,154,155,255, -153,153,154,255,154,154,154,255,153,153,153,255,152,152,152,255,151,151,150,255,150,150,149,255,150,149,149,255,148,147,147,255, -147,146,146,255,147,146,145,255,145,144,143,255,144,143,141,255,142,141,140,255,140,139,138,255,139,138,136,255,138,136,134,255, -135,134,131,255,134,132,129,255,131,128,126,255,128,126,122,255, 95, 93, 90,255, 61, 61, 61,255, 60, 60, 60,255,131,133,135,255, -197,200,203,255,196,199,202,255,196,199,202,255,196,199,202,255,194,197,201,255,194,197,201,255,195,198,200,255,195,198,201,255, -194,197,200,255,193,196,199,255,194,197,200,255,194,196,200,255,192,196,198,255,193,196,199,255,192,195,198,255,192,195,198,255, -192,194,197,255,191,193,196,255,190,193,196,255,191,193,196,255,190,192,195,255,190,192,195,255,190,191,194,255,189,192,195,255, -188,191,194,255,188,191,194,255,189,190,193,255,188,190,193,255,187,191,192,255,188,190,193,255,187,190,192,255,187,189,192,255, -186,190,191,255,187,188,192,255,186,189,191,255,185,188,190,255,180,182,185,255,139,138,138,255, 75, 70, 65,255, 69, 63, 58,255, - 68, 62, 57,255, 76, 70, 64,255,132,131,131,255,166,167,168,255,171,172,174,255,172,173,175,255,172,173,175,255,172,173,174,255, -172,173,174,255,171,172,173,255,171,172,174,255,170,171,173,255,170,171,173,255,171,172,172,255,170,171,172,255,169,170,171,255, -169,170,171,255,168,169,170,255,168,169,170,255,167,168,169,255,168,168,169,255,167,167,168,255,167,167,168,255,167,167,168,255, -167,168,169,255,173,174,174,255,178,179,180,255,171,172,173,255,160,160,161,255,156,156,157,255,155,154,156,255,153,154,154,255, -154,154,154,255,153,153,153,255,152,152,152,255,152,152,152,255,150,150,150,255,150,149,149,255,149,148,148,255,148,147,146,255, -147,146,145,255,146,145,144,255,144,143,142,255,143,142,141,255,142,141,139,255,140,139,137,255,139,137,135,255,137,135,133,255, -135,133,130,255,133,131,128,255,130,127,124,255,119,116,110,255, 57, 55, 54,255, 61, 61, 61,255, 60, 60, 60,255,131,133,135,255, -197,200,203,255,196,199,201,255,196,199,202,255,196,199,202,255,195,198,202,255,195,198,202,255,194,197,201,255,194,198,200,255, -195,197,201,255,194,196,200,255,193,197,199,255,194,197,200,255,193,195,199,255,192,196,198,255,192,195,198,255,191,194,197,255, -192,194,197,255,192,194,197,255,190,194,197,255,191,193,196,255,190,193,196,255,190,192,195,255,189,192,195,255,190,191,194,255, -188,192,195,255,189,191,194,255,189,190,193,255,188,190,193,255,187,191,193,255,187,190,192,255,187,190,192,255,186,190,192,255, -187,189,191,255,186,188,191,255,187,188,192,255,186,189,191,255,185,187,190,255,178,180,182,255,130,130,129,255, 69, 63, 58,255, - 69, 63, 58,255, 69, 63, 58,255, 80, 74, 70,255,135,135,134,255,166,167,168,255,171,172,173,255,171,173,174,255,172,173,173,255, -171,172,173,255,171,172,173,255,170,171,174,255,171,172,173,255,171,172,173,255,170,171,172,255,169,170,171,255,169,170,171,255, -168,169,170,255,168,169,170,255,167,168,169,255,168,168,169,255,167,167,168,255,167,166,168,255,166,166,167,255,166,167,167,255, -165,166,166,255,166,166,167,255,170,170,171,255,175,176,177,255,171,172,174,255,159,159,160,255,155,156,156,255,153,154,154,255, -154,154,154,255,152,152,152,255,152,152,152,255,151,151,151,255,151,150,150,255,149,148,148,255,149,148,147,255,147,146,146,255, -146,145,144,255,146,145,143,255,144,143,141,255,142,141,140,255,141,140,138,255,140,138,136,255,138,136,134,255,136,134,132,255, -135,132,128,255,131,128,125,255,131,127,122,255, 41, 39, 37,255, 27, 27, 27,255, 62, 62, 62,255, 60, 60, 60,255,131,133,135,255, -197,200,204,255,196,199,202,255,196,199,201,255,196,199,201,255,195,198,202,255,196,199,202,255,195,198,201,255,195,197,200,255, -195,198,201,255,195,198,201,255,193,196,199,255,193,196,199,255,193,197,199,255,193,195,199,255,192,195,198,255,193,196,199,255, -191,194,197,255,192,195,198,255,191,193,196,255,190,194,197,255,191,193,196,255,190,193,196,255,189,192,195,255,190,191,194,255, -188,192,195,255,189,191,194,255,189,190,193,255,187,191,194,255,188,190,193,255,188,189,192,255,186,190,193,255,186,190,193,255, -187,189,192,255,186,189,191,255,187,189,192,255,187,189,192,255,185,188,190,255,184,187,189,255,176,178,180,255,120,119,117,255, - 70, 64, 59,255, 69, 63, 58,255, 69, 63, 57,255, 81, 75, 71,255,140,140,140,255,166,167,168,255,170,171,172,255,170,171,173,255, -170,171,173,255,171,172,174,255,171,172,172,255,170,171,172,255,169,170,171,255,169,170,171,255,168,169,170,255,169,170,171,255, -167,168,169,255,168,168,169,255,168,167,169,255,166,167,167,255,166,166,167,255,166,167,167,255,165,166,166,255,164,165,165,255, -164,165,165,255,163,164,164,255,164,164,165,255,166,166,167,255,172,173,174,255,171,172,173,255,158,159,160,255,155,155,155,255, -153,153,153,255,153,153,153,255,151,151,151,255,151,151,150,255,149,149,148,255,149,148,148,255,148,147,147,255,147,146,145,255, -146,145,144,255,145,144,143,255,143,142,140,255,142,141,139,255,141,139,137,255,138,137,135,255,137,135,133,255,136,133,131,255, -133,130,127,255,131,128,123,255, 66, 64, 62,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,131,133,135,255, -197,200,204,255,196,199,203,255,196,199,202,255,196,199,201,255,196,199,202,255,196,199,202,255,194,197,200,255,195,198,201,255, -195,198,201,255,194,197,200,255,194,197,200,255,193,196,199,255,194,196,200,255,193,196,199,255,193,195,199,255,193,195,198,255, -192,194,198,255,191,195,198,255,192,194,197,255,190,193,196,255,190,193,196,255,191,192,195,255,189,193,196,255,190,192,195,255, -188,191,194,255,189,191,194,255,189,190,193,255,188,191,194,255,187,190,193,255,187,190,192,255,188,190,193,255,187,189,192,255, -186,188,191,255,187,189,192,255,186,189,191,255,185,188,190,255,186,188,191,255,185,187,191,255,183,186,188,255,170,171,173,255, -109,106,103,255, 69, 63, 58,255, 70, 64, 59,255, 67, 61, 56,255, 81, 75, 71,255,136,135,135,255,165,166,167,255,169,170,172,255, -170,171,173,255,170,171,173,255,170,171,172,255,169,170,171,255,169,170,171,255,168,169,170,255,168,169,170,255,167,168,169,255, -168,168,169,255,167,167,168,255,167,167,168,255,166,166,167,255,165,166,166,255,165,166,166,255,164,165,165,255,164,165,165,255, -163,164,164,255,162,163,163,255,162,163,163,255,162,163,162,255,163,162,163,255,169,169,169,255,171,171,173,255,160,160,161,255, -154,154,154,255,153,153,153,255,151,151,151,255,150,150,149,255,150,148,149,255,148,147,147,255,148,147,146,255,146,145,144,255, -146,145,144,255,144,143,141,255,142,141,140,255,141,140,138,255,139,138,136,255,138,136,134,255,136,134,131,255,133,130,127,255, -131,128,124,255, 95, 93, 89,255, 4, 4, 4,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 60, 60, 60,255,132,133,135,255, -197,200,204,255,196,199,203,255,196,199,202,255,196,199,201,255,196,199,202,255,196,199,202,255,195,198,201,255,194,197,200,255, -195,198,201,255,195,198,201,255,194,197,200,255,193,196,199,255,194,197,200,255,194,196,200,255,193,195,199,255,193,195,199,255, -192,195,198,255,191,194,197,255,191,194,197,255,191,193,196,255,190,194,197,255,190,192,195,255,189,192,195,255,190,193,196,255, -189,191,194,255,188,191,194,255,188,191,194,255,188,190,194,255,187,191,193,255,188,190,192,255,187,190,192,255,187,189,192,255, -186,189,191,255,187,189,192,255,186,189,191,255,185,189,190,255,185,188,190,255,186,188,191,255,184,187,190,255,182,184,186,255, -167,168,169,255,102, 98, 96,255, 66, 60, 54,255, 70, 64, 59,255, 69, 63, 58,255, 81, 76, 71,255,136,134,134,255,164,166,166,255, -168,169,170,255,170,171,172,255,170,171,172,255,169,170,171,255,169,170,171,255,168,169,170,255,167,168,169,255,168,168,169,255, -168,167,168,255,167,167,168,255,166,166,167,255,165,166,166,255,165,166,166,255,164,165,165,255,164,165,165,255,163,164,164,255, -163,163,163,255,162,163,163,255,162,162,162,255,161,161,161,255,160,160,160,255,160,160,159,255,162,162,161,255,172,173,173,255, -161,162,163,255,153,153,153,255,151,151,150,255,150,149,149,255,149,148,148,255,148,147,146,255,147,146,145,255,147,146,144,255, -144,143,142,255,143,142,140,255,142,141,139,255,140,139,137,255,139,137,135,255,137,135,133,255,135,132,129,255,131,129,125,255, -124,120,115,255, 14, 14, 13,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,132,134,135,255, -198,201,204,255,195,198,202,255,195,198,203,255,196,199,202,255,196,199,202,255,196,199,202,255,195,199,201,255,195,198,201,255, -194,197,200,255,195,198,201,255,195,197,201,255,194,196,200,255,194,196,200,255,194,197,200,255,193,196,199,255,193,196,199,255, -193,195,198,255,192,194,197,255,191,194,197,255,192,193,196,255,191,194,197,255,191,192,195,255,190,193,196,255,189,193,196,255, -189,191,194,255,188,192,195,255,189,191,194,255,188,190,193,255,187,191,194,255,188,190,193,255,187,189,193,255,186,190,192,255, -187,189,191,255,186,188,191,255,185,189,190,255,186,188,191,255,186,187,191,255,186,187,190,255,185,188,190,255,184,186,188,255, -182,184,186,255,165,167,168,255, 96, 93, 89,255, 69, 63, 58,255, 69, 63, 58,255, 69, 62, 57,255, 78, 73, 68,255,133,132,132,255, -162,163,164,255,167,168,169,255,168,169,170,255,168,169,170,255,167,168,169,255,168,168,169,255,168,167,168,255,167,167,168,255, -166,166,167,255,166,167,167,255,165,167,166,255,164,165,165,255,164,165,165,255,163,164,164,255,162,163,163,255,163,163,163,255, -162,162,162,255,161,161,161,255,161,161,161,255,159,160,159,255,158,158,158,255,157,157,157,255,157,156,156,255,157,156,155,255, -170,170,171,255,162,162,162,255,153,153,153,255,150,149,149,255,149,148,148,255,147,146,145,255,146,145,145,255,145,144,142,255, -144,143,141,255,143,141,140,255,141,139,138,255,140,138,136,255,138,136,133,255,134,132,129,255,134,131,127,255,130,126,121,255, - 23, 22, 21,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,132,134,135,255, -199,202,205,255,196,199,202,255,196,198,202,255,195,199,202,255,196,199,202,255,196,199,202,255,196,199,202,255,195,197,201,255, -195,198,201,255,194,198,200,255,195,198,201,255,194,197,200,255,194,196,200,255,193,197,200,255,194,196,199,255,194,195,198,255, -192,196,199,255,193,195,198,255,191,195,198,255,192,194,197,255,191,194,197,255,191,193,196,255,190,192,195,255,190,193,195,255, -189,192,195,255,188,192,195,255,189,191,194,255,188,191,194,255,187,190,193,255,188,190,193,255,187,190,193,255,187,189,192,255, -186,189,192,255,186,189,191,255,185,188,190,255,186,187,190,255,185,188,190,255,186,188,189,255,185,187,189,255,185,187,189,255, -184,186,188,255,181,183,185,255,159,160,161,255, 93, 89, 86,255, 68, 62, 57,255, 70, 64, 59,255, 68, 62, 57,255, 76, 71, 65,255, -124,122,121,255,160,160,161,255,166,167,168,255,167,168,169,255,168,168,169,255,168,167,168,255,167,167,168,255,166,166,167,255, -165,167,166,255,165,166,166,255,164,165,165,255,164,165,165,255,163,164,164,255,163,163,163,255,163,163,163,255,162,162,162,255, -161,161,161,255,160,160,160,255,159,159,158,255,158,158,158,255,157,157,156,255,157,156,155,255,155,154,154,255,154,153,152,255, -152,151,149,255,163,162,162,255,165,165,165,255,156,155,156,255,149,148,148,255,147,146,145,255,146,145,143,255,144,143,142,255, -143,142,140,255,141,140,138,255,140,138,137,255,138,137,134,255,136,134,131,255,134,132,127,255,129,126,121,255, 46, 44, 42,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255, -199,201,204,255,198,201,204,255,196,199,202,255,196,198,202,255,196,199,202,255,196,199,202,255,196,199,202,255,196,197,202,255, -195,198,201,255,194,198,200,255,195,198,201,255,194,197,200,255,193,196,199,255,194,197,199,255,194,196,200,255,193,196,199,255, -192,196,198,255,193,195,198,255,192,194,197,255,191,195,198,255,191,194,197,255,190,194,197,255,191,193,196,255,190,192,195,255, -189,192,194,255,189,191,195,255,188,191,194,255,188,190,194,255,188,190,193,255,187,189,192,255,188,190,193,255,187,189,192,255, -186,188,191,255,186,189,191,255,186,188,191,255,185,187,191,255,186,188,190,255,185,187,189,255,184,186,189,255,185,187,189,255, -184,186,189,255,183,186,188,255,180,182,184,255,157,158,159,255, 89, 86, 81,255, 67, 60, 55,255, 70, 64, 59,255, 69, 63, 58,255, - 74, 69, 64,255,116,114,112,255,158,157,158,255,165,166,166,255,167,167,168,255,167,167,168,255,166,166,167,255,166,167,167,255, -165,166,166,255,164,165,165,255,164,165,165,255,163,164,164,255,163,163,163,255,163,163,163,255,162,162,162,255,161,161,161,255, -160,160,160,255,159,159,159,255,158,158,157,255,157,157,156,255,156,155,154,255,155,154,153,255,153,153,152,255,152,151,150,255, -150,149,148,255,149,147,144,255,150,148,146,255,164,164,162,255,166,166,166,255,150,149,149,255,145,144,143,255,143,142,141,255, -142,141,139,255,140,139,137,255,139,137,135,255,137,135,132,255,134,131,128,255,132,129,125,255, 64, 63, 60,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255, -202,205,208,255,198,200,203,255,198,201,204,255,196,199,202,255,195,199,201,255,196,199,202,255,196,198,202,255,195,198,201,255, -194,197,200,255,195,198,201,255,194,198,200,255,195,197,201,255,194,196,200,255,193,196,199,255,194,197,200,255,193,195,199,255, -192,196,198,255,193,196,199,255,193,194,197,255,192,195,198,255,192,194,197,255,191,194,197,255,191,193,196,255,190,192,195,255, -190,192,195,255,190,191,194,255,189,192,194,255,189,190,194,255,188,191,193,255,187,190,192,255,187,190,192,255,187,189,192,255, -186,189,191,255,186,188,191,255,186,188,191,255,185,187,190,255,186,188,189,255,185,187,189,255,184,186,190,255,185,187,188,255, -185,187,189,255,184,186,188,255,183,185,187,255,180,182,184,255,158,158,160,255, 90, 86, 82,255, 69, 63, 58,255, 69, 63, 59,255, - 69, 63, 58,255, 69, 62, 57,255,106,103,100,255,150,150,150,255,162,163,164,255,164,165,166,255,165,167,166,255,165,166,166,255, -164,165,165,255,163,164,164,255,163,164,164,255,163,163,163,255,162,162,162,255,161,161,161,255,161,161,161,255,160,160,160,255, -158,158,159,255,157,157,157,255,157,157,156,255,155,155,154,255,155,154,153,255,153,152,151,255,151,150,149,255,150,149,147,255, -149,147,144,255,146,144,141,255,142,140,135,255,105, 99, 93,255, 97, 93, 89,255,101,101,101,255,143,142,142,255,142,141,139,255, -144,141,140,255,141,140,137,255,139,137,134,255,136,133,130,255,129,126,123,255, 66, 65, 62,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255, -203,206,209,255,201,204,206,255,198,200,203,255,197,200,203,255,195,198,201,255,196,199,202,255,196,199,202,255,195,198,201,255, -194,197,200,255,195,198,201,255,195,198,201,255,194,197,201,255,195,197,200,255,193,197,199,255,194,197,200,255,193,195,198,255, -192,196,199,255,193,196,199,255,192,194,197,255,192,195,198,255,191,194,197,255,192,194,197,255,190,193,196,255,190,192,195,255, -190,192,195,255,189,191,194,255,188,192,195,255,189,190,193,255,188,191,193,255,187,190,192,255,187,189,192,255,186,190,191,255, -186,189,191,255,186,188,191,255,185,187,191,255,185,187,190,255,185,187,190,255,184,186,190,255,185,187,189,255,184,186,188,255, -184,186,188,255,184,186,187,255,183,185,187,255,182,184,186,255,179,181,183,255,155,155,156,255, 93, 88, 85,255, 68, 62, 56,255, - 70, 64, 59,255, 69, 63, 58,255, 68, 62, 57,255, 93, 89, 85,255,138,137,136,255,159,160,161,255,163,164,165,255,164,165,165,255, -163,164,164,255,163,164,164,255,163,163,163,255,162,162,162,255,161,162,162,255,160,160,160,255,159,159,159,255,159,158,158,255, -157,157,157,255,157,156,156,255,156,155,154,255,154,154,153,255,153,152,151,255,151,150,149,255,150,148,146,255,148,146,143,255, -147,144,141,255,141,138,134,255, 96, 91, 85,255, 70, 63, 56,255, 63, 58, 52,255, 0, 0, 0,255, 10, 10, 10,255, 49, 49, 48,255, - 79, 78, 77,255, 87, 85, 85,255, 82, 81, 79,255, 63, 62, 61,255, 22, 22, 21,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255, -203,206,208,255,202,204,207,255,200,202,205,255,198,200,204,255,197,200,203,255,195,198,201,255,196,198,202,255,196,197,202,255, -195,198,201,255,194,198,200,255,195,197,201,255,195,198,201,255,195,197,199,255,194,197,200,255,193,197,200,255,194,195,198,255, -193,196,199,255,192,196,199,255,192,194,197,255,191,195,198,255,192,194,197,255,191,194,197,255,190,193,196,255,190,192,195,255, -190,192,195,255,189,191,194,255,188,192,195,255,188,190,193,255,188,191,193,255,187,190,192,255,187,189,192,255,186,190,191,255, -187,189,192,255,186,188,191,255,185,187,190,255,186,188,190,255,185,187,190,255,184,186,189,255,184,186,188,255,184,186,188,255, -184,186,187,255,183,185,187,255,182,184,188,255,183,185,187,255,181,183,185,255,179,180,182,255,158,158,159,255, 95, 91, 87,255, - 67, 60, 55,255, 70, 64, 59,255, 69, 63, 58,255, 69, 63, 58,255, 79, 73, 68,255,122,120,118,255,154,154,155,255,161,161,162,255, -162,162,163,255,163,163,163,255,162,162,162,255,161,161,161,255,160,160,160,255,159,159,159,255,158,158,158,255,157,157,156,255, -157,156,155,255,156,154,154,255,154,153,152,255,153,152,150,255,151,150,149,255,149,148,146,255,148,145,142,255,146,144,140,255, -134,130,126,255, 83, 77, 70,255, 71, 64, 57,255, 72, 65, 58,255, 48, 45, 41,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,136,137,255, -203,205,208,255,200,204,206,255,201,204,207,255,198,201,203,255,198,200,203,255,196,199,202,255,195,199,201,255,195,198,201,255, -194,197,200,255,195,198,201,255,195,198,201,255,195,197,200,255,195,197,200,255,194,197,200,255,193,197,200,255,193,195,198,255, -193,196,199,255,192,196,199,255,192,195,198,255,191,195,198,255,192,194,197,255,191,193,196,255,191,193,196,255,191,192,195,255, -190,192,195,255,190,191,194,255,189,192,195,255,188,190,193,255,188,191,192,255,187,190,192,255,187,190,192,255,186,189,191,255, -187,188,192,255,185,189,190,255,185,188,190,255,186,188,189,255,184,186,190,255,184,186,189,255,185,187,189,255,183,185,187,255, -184,185,188,255,183,184,187,255,182,185,186,255,182,184,186,255,182,184,186,255,181,183,185,255,179,180,182,255,162,163,163,255, - 99, 96, 92,255, 70, 64, 59,255, 69, 63, 58,255, 70, 64, 59,255, 69, 63, 58,255, 70, 64, 57,255,102, 99, 94,255,141,139,139,255, -156,156,156,255,160,160,160,255,160,160,160,255,160,160,160,255,159,159,159,255,158,158,158,255,157,157,156,255,156,156,155,255, -155,154,153,255,153,153,152,255,152,151,150,255,150,149,147,255,149,148,145,255,147,145,142,255,145,142,138,255,129,126,120,255, - 78, 72, 65,255, 71, 64, 57,255, 72, 65, 58,255, 71, 63, 56,255, 40, 39, 37,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,137,255, -203,205,208,255,200,204,207,255,200,204,206,255,201,203,206,255,199,201,204,255,198,200,203,255,196,199,202,255,195,198,201,255, -194,197,200,255,195,198,201,255,195,197,201,255,194,197,200,255,195,196,200,255,193,197,200,255,194,197,200,255,193,196,199,255, -192,195,198,255,193,195,198,255,192,196,199,255,192,194,197,255,191,195,198,255,192,193,196,255,191,194,196,255,190,193,195,255, -190,192,195,255,189,191,194,255,190,192,195,255,188,190,193,255,188,191,193,255,188,190,193,255,187,190,192,255,186,189,191,255, -187,188,192,255,185,188,190,255,186,188,190,255,185,187,189,255,184,186,189,255,185,187,189,255,184,186,188,255,183,185,187,255, -184,185,187,255,183,184,186,255,182,184,186,255,182,184,186,255,181,184,186,255,182,183,185,255,181,183,184,255,179,180,181,255, -162,163,164,255,108,105,101,255, 69, 63, 58,255, 69, 63, 58,255, 70, 64, 59,255, 69, 63, 58,255, 68, 61, 56,255, 83, 77, 73,255, -114,111,108,255,144,143,142,255,156,156,155,255,158,158,157,255,158,157,157,255,157,157,156,255,156,155,155,255,155,154,153,255, -153,153,152,255,152,151,149,255,150,149,148,255,149,147,144,255,146,145,142,255,147,144,140,255,131,127,122,255, 77, 71, 64,255, - 69, 62, 56,255, 71, 65, 58,255, 71, 64, 57,255, 74, 67, 60,255, 10, 10, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,137,255, -202,205,208,255,200,203,206,255,201,204,206,255,200,203,205,255,201,202,205,255,199,202,205,255,199,202,204,255,195,198,201,255, -195,197,200,255,194,197,201,255,195,197,200,255,195,196,201,255,194,197,200,255,193,197,200,255,194,196,199,255,193,197,200,255, -192,195,198,255,193,195,198,255,193,196,199,255,193,194,197,255,192,195,198,255,192,193,196,255,191,193,196,255,190,194,195,255, -190,192,195,255,189,192,194,255,190,192,195,255,188,190,193,255,189,191,194,255,188,190,193,255,187,190,191,255,187,189,191,255, -187,188,192,255,185,188,190,255,186,188,189,255,185,187,190,255,184,186,189,255,185,187,189,255,184,186,188,255,183,185,187,255, -184,184,186,255,183,184,186,255,182,184,186,255,181,184,186,255,181,183,185,255,181,182,184,255,181,183,184,255,180,181,183,255, -179,180,180,255,167,168,169,255,120,119,117,255, 71, 65, 59,255, 69, 63, 58,255, 70, 63, 58,255, 69, 62, 57,255, 69, 62, 57,255, - 71, 64, 59,255, 84, 79, 72,255,116,114,111,255,143,141,141,255,152,151,150,255,154,154,153,255,153,152,151,255,153,152,151,255, -151,150,149,255,150,149,147,255,148,146,144,255,147,145,141,255,144,141,137,255,120,117,112,255, 77, 70, 64,255, 70, 63, 57,255, - 71, 64, 58,255, 70, 64, 57,255, 71, 65, 57,255, 67, 62, 57,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,137,255, -202,205,207,255,200,203,206,255,201,203,206,255,200,202,205,255,200,203,205,255,200,203,205,255,197,200,202,255,197,200,203,255, -195,198,201,255,194,198,201,255,195,196,201,255,194,197,200,255,194,197,200,255,194,196,199,255,194,197,200,255,194,195,198,255, -193,196,199,255,192,196,199,255,193,194,197,255,192,195,198,255,191,195,198,255,192,193,196,255,191,194,196,255,190,193,195,255, -190,193,195,255,189,192,194,255,190,192,195,255,188,190,193,255,189,191,193,255,188,190,193,255,188,190,191,255,187,189,192,255, -186,188,191,255,186,188,190,255,185,187,189,255,185,187,190,255,185,187,189,255,184,186,188,255,183,186,188,255,184,184,186,255, -183,185,187,255,183,185,187,255,181,183,185,255,182,183,185,255,182,182,185,255,180,183,183,255,180,182,183,255,179,182,183,255, -179,181,182,255,178,179,181,255,171,172,173,255,130,129,128,255, 80, 74, 69,255, 69, 63, 58,255, 69, 63, 57,255, 70, 62, 58,255, - 69, 62, 57,255, 69, 62, 57,255, 68, 61, 55,255, 81, 76, 70,255,106,103, 99,255,126,123,120,255,136,135,132,255,141,139,137,255, -142,140,138,255,141,139,136,255,136,134,130,255,126,122,118,255,100, 97, 91,255, 73, 66, 59,255, 70, 63, 57,255, 71, 64, 58,255, - 71, 64, 58,255, 71, 64, 58,255, 71, 64, 58,255, 44, 42, 39,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,136,255, -202,204,207,255,201,202,206,255,200,202,205,255,199,203,204,255,199,202,204,255,199,202,205,255,200,202,205,255,197,200,202,255, -197,199,202,255,195,197,200,255,194,196,200,255,194,197,200,255,193,197,199,255,194,197,200,255,194,196,199,255,194,195,198,255, -193,195,198,255,192,196,199,255,193,194,197,255,192,194,197,255,191,195,198,255,191,193,196,255,191,194,196,255,190,193,195,255, -190,193,195,255,189,192,194,255,190,192,195,255,188,190,193,255,189,191,192,255,188,190,193,255,188,190,191,255,187,189,192,255, -186,188,191,255,186,188,190,255,185,187,190,255,184,186,189,255,185,187,188,255,184,186,188,255,183,185,187,255,183,184,186,255, -183,185,186,255,182,184,186,255,181,183,185,255,182,183,185,255,181,183,184,255,180,182,183,255,180,182,183,255,180,181,182,255, -180,180,182,255,179,180,182,255,177,179,180,255,173,174,175,255,144,143,143,255, 93, 88, 85,255, 68, 61, 55,255, 69, 62, 57,255, - 70, 63, 58,255, 70, 63, 58,255, 69, 62, 57,255, 69, 61, 56,255, 68, 61, 56,255, 73, 67, 61,255, 81, 75, 69,255, 87, 82, 76,255, - 91, 86, 80,255, 89, 84, 78,255, 83, 77, 71,255, 75, 68, 61,255, 68, 62, 56,255, 70, 63, 57,255, 70, 64, 58,255, 71, 64, 58,255, - 71, 64, 58,255, 71, 64, 58,255, 70, 63, 57,255, 19, 18, 17,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,136,255, -202,204,207,255,200,203,205,255,199,203,205,255,199,202,205,255,199,202,205,255,200,201,204,255,199,201,204,255,199,201,204,255, -197,199,202,255,197,199,202,255,195,197,200,255,193,196,199,255,194,197,200,255,194,197,200,255,194,196,199,255,193,196,199,255, -192,196,199,255,192,195,198,255,192,194,197,255,191,195,198,255,191,194,197,255,191,193,196,255,190,194,195,255,191,193,196,255, -190,193,195,255,189,192,194,255,190,192,195,255,188,190,193,255,189,191,192,255,188,190,193,255,188,190,191,255,187,189,192,255, -187,189,191,255,185,188,190,255,185,187,189,255,184,186,188,255,184,186,188,255,183,186,188,255,183,185,187,255,183,184,186,255, -183,185,185,255,182,184,185,255,182,183,185,255,181,183,184,255,181,182,184,255,179,182,182,255,179,181,183,255,180,180,183,255, -179,180,181,255,179,179,182,255,177,180,180,255,177,178,180,255,174,175,176,255,158,159,159,255,112,109,107,255, 71, 65, 59,255, - 69, 62, 57,255, 70, 63, 58,255, 70, 63, 58,255, 69, 62, 57,255, 69, 62, 57,255, 69, 62, 57,255, 69, 63, 57,255, 69, 63, 57,255, - 70, 63, 57,255, 69, 63, 57,255, 69, 63, 57,255, 69, 63, 57,255, 69, 63, 57,255, 69, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, - 71, 64, 58,255, 70, 63, 57,255, 60, 55, 50,255, 1, 1, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,135,136,255, -202,204,206,255,199,202,204,255,200,201,204,255,200,202,203,255,200,201,203,255,199,201,203,255,199,201,203,255,198,200,203,255, -199,201,203,255,197,199,201,255,196,199,202,255,194,197,200,255,193,196,199,255,194,196,199,255,194,195,198,255,193,196,199,255, -192,195,198,255,192,195,198,255,192,194,198,255,191,195,197,255,191,194,197,255,191,193,196,255,190,194,195,255,191,193,196,255, -190,193,195,255,189,192,194,255,190,192,194,255,188,190,193,255,189,191,192,255,188,190,193,255,188,190,191,255,187,189,191,255, -186,188,190,255,186,188,190,255,185,187,189,255,184,186,189,255,184,186,188,255,183,186,188,255,183,185,187,255,182,184,186,255, -182,184,185,255,181,184,185,255,181,182,184,255,181,182,184,255,180,181,183,255,179,181,182,255,180,181,182,255,179,180,181,255, -178,179,181,255,178,179,180,255,178,178,180,255,177,178,179,255,176,177,178,255,174,175,176,255,168,168,169,255,132,131,130,255, - 86, 80, 75,255, 70, 63, 58,255, 69, 62, 57,255, 69, 62, 58,255, 70, 63, 58,255, 70, 63, 58,255, 70, 63, 58,255, 70, 63, 58,255, - 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 69, 64, 58,255, 71, 64, 58,255, - 70, 63, 57,255, 72, 65, 59,255, 24, 23, 22,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,135,255, -201,203,205,255,200,202,203,255,200,202,204,255,199,201,204,255,199,201,203,255,199,200,203,255,198,201,203,255,198,200,202,255, -197,200,202,255,198,200,202,255,197,199,201,255,195,198,201,255,194,197,200,255,193,195,198,255,193,196,199,255,192,196,198,255, -193,195,198,255,193,194,198,255,192,195,197,255,191,194,196,255,192,194,197,255,191,194,196,255,190,193,195,255,191,193,196,255, -189,193,194,255,189,192,194,255,190,192,194,255,188,190,193,255,189,191,192,255,188,190,192,255,188,190,191,255,187,189,191,255, -186,188,191,255,186,188,189,255,185,187,189,255,184,187,188,255,184,186,187,255,183,185,187,255,182,185,187,255,183,184,185,255, -182,184,185,255,182,183,185,255,181,182,184,255,181,181,184,255,179,182,182,255,180,181,182,255,179,180,181,255,178,179,181,255, -178,179,180,255,178,179,180,255,177,178,179,255,176,177,178,255,176,177,178,255,176,176,177,255,174,175,176,255,171,172,173,255, -155,154,154,255,116,113,110,255, 80, 74, 69,255, 67, 60, 54,255, 69, 62, 57,255, 69, 62, 57,255, 70, 62, 58,255, 70, 63, 58,255, - 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 69, 64, 58,255, 70, 63, 57,255, - 75, 68, 62,255, 41, 38, 35,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,134,135,255, -200,202,204,255,199,201,203,255,199,201,203,255,198,201,203,255,199,201,203,255,198,200,202,255,197,200,202,255,197,200,202,255, -198,200,202,255,198,200,202,255,196,198,200,255,196,198,200,255,195,198,200,255,194,197,199,255,193,195,198,255,193,195,197,255, -193,195,198,255,192,194,197,255,191,195,196,255,191,194,196,255,192,193,197,255,190,194,195,255,190,193,195,255,191,193,196,255, -189,192,194,255,190,192,194,255,189,191,193,255,188,190,193,255,189,191,192,255,188,190,192,255,188,190,192,255,187,189,191,255, -186,188,190,255,186,188,190,255,185,187,189,255,184,186,188,255,184,186,187,255,183,185,186,255,182,185,187,255,182,183,185,255, -182,184,185,255,181,183,184,255,181,182,184,255,180,182,183,255,180,181,183,255,179,181,182,255,178,180,181,255,179,180,181,255, -177,178,179,255,177,178,179,255,176,177,179,255,176,176,177,255,176,176,177,255,175,175,176,255,174,175,175,255,174,174,175,255, -171,172,173,255,166,166,167,255,149,148,148,255,109,107,103,255, 76, 69, 63,255, 69, 62, 56,255, 69, 62, 57,255, 69, 63, 57,255, - 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 70, 64, 58,255, 69, 64, 58,255, 69, 63, 57,255, 73, 66, 60,255, - 52, 49, 46,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,134,134,135,255, -200,201,203,255,197,199,200,255,197,198,200,255,198,199,201,255,197,199,201,255,197,199,201,255,198,199,201,255,197,199,201,255, -197,198,200,255,196,198,200,255,196,198,200,255,196,198,200,255,196,198,199,255,195,197,199,255,193,196,198,255,192,195,197,255, -192,194,197,255,191,195,196,255,191,194,196,255,192,193,197,255,191,193,196,255,191,193,196,255,191,192,195,255,190,192,195,255, -190,192,194,255,190,192,193,255,189,191,194,255,189,191,193,255,188,190,192,255,188,190,192,255,188,189,191,255,187,188,190,255, -186,188,190,255,186,188,189,255,185,187,188,255,185,186,188,255,184,185,187,255,183,185,186,255,183,184,185,255,182,183,185,255, -181,183,184,255,181,183,184,255,181,181,182,255,180,181,182,255,179,180,181,255,178,180,181,255,178,179,180,255,177,178,179,255, -177,178,179,255,176,177,178,255,176,176,177,255,175,175,176,255,174,175,176,255,174,174,175,255,173,174,174,255,173,173,173,255, -172,172,173,255,171,171,172,255,170,170,170,255,165,165,165,255,147,146,145,255,114,110,106,255, 88, 83, 78,255, 76, 71, 65,255, - 72, 66, 60,255, 70, 63, 57,255, 69, 63, 57,255, 69, 63, 56,255, 70, 64, 58,255, 76, 70, 64,255, 73, 69, 62,255, 49, 48, 45,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 71, 71, 71,255, -143,144,144,255,196,198,198,255,199,201,201,255,197,200,200,255,196,197,199,255,197,198,200,255,197,198,199,255,196,198,199,255, -196,198,200,255,196,198,199,255,196,198,199,255,196,197,199,255,195,197,199,255,195,196,198,255,194,196,198,255,194,196,199,255, -192,194,197,255,191,194,196,255,192,193,197,255,191,193,196,255,191,193,196,255,191,192,195,255,190,192,194,255,190,192,195,255, -190,192,194,255,189,191,193,255,189,191,193,255,189,191,192,255,188,190,192,255,188,190,192,255,187,188,190,255,187,189,190,255, -186,188,190,255,186,187,189,255,185,187,188,255,184,186,188,255,183,185,187,255,183,185,186,255,182,184,185,255,181,183,184,255, -181,183,184,255,181,182,183,255,180,181,182,255,180,181,182,255,178,179,180,255,178,179,180,255,178,179,179,255,177,178,179,255, -176,177,178,255,176,177,177,255,175,176,177,255,174,175,176,255,174,174,175,255,173,174,174,255,173,173,174,255,172,172,172,255, -171,171,172,255,170,170,170,255,170,170,170,255,169,169,169,255,168,168,167,255,164,164,163,255,154,153,153,255,139,138,135,255, -125,122,118,255,113,110,106,255,107,103, 99,255,110,106,102,255,115,111,107,255, 61, 60, 57,255, 21, 21, 20,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 29, 29, 29,255, - 0, 0, 0,255, 17, 17, 17,255, 97, 98, 98,255,186,187,187,255,197,199,199,255,196,198,198,255,196,197,198,255,196,197,198,255, -196,197,198,255,195,197,198,255,195,197,198,255,195,197,198,255,195,196,198,255,195,196,198,255,194,195,197,255,193,195,196,255, -193,196,198,255,192,194,197,255,191,193,196,255,190,192,196,255,190,192,195,255,191,193,194,255,190,192,195,255,189,191,194,255, -190,192,194,255,189,191,193,255,188,191,192,255,188,189,192,255,188,190,192,255,187,189,191,255,186,189,190,255,187,188,190,255, -186,188,189,255,185,186,189,255,185,186,188,255,184,186,187,255,184,184,187,255,183,184,186,255,182,184,185,255,182,182,184,255, -181,182,183,255,181,182,183,255,179,181,181,255,180,181,181,255,179,180,181,255,177,178,179,255,177,178,179,255,177,177,178,255, -176,177,177,255,175,176,177,255,174,175,176,255,173,175,175,255,173,174,174,255,172,172,172,255,171,172,172,255,172,172,172,255, -170,170,170,255,170,169,169,255,169,169,169,255,168,167,166,255,167,166,165,255,165,165,164,255,164,163,162,255,163,161,160,255, -159,158,157,255,158,157,155,255,157,156,153,255,103,102, 99,255, 9, 9, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 15, 15, 15,255, 92, 93, 92,255,147,147,147,255,166,167,167,255, -184,185,186,255,195,196,197,255,195,196,196,255,194,195,196,255,194,195,196,255,192,193,194,255,193,194,195,255,192,194,195,255, -192,193,194,255,192,194,197,255,192,194,196,255,190,192,195,255,191,193,194,255,190,192,194,255,189,191,193,255,189,191,194,255, -189,191,193,255,188,190,192,255,188,190,192,255,187,190,191,255,188,189,191,255,187,189,190,255,187,188,189,255,186,187,189,255, -186,187,189,255,184,187,188,255,184,186,187,255,184,184,187,255,183,185,186,255,183,184,185,255,182,182,184,255,181,182,183,255, -181,182,183,255,179,180,181,255,179,180,181,255,179,180,180,255,177,178,179,255,177,178,179,255,176,177,178,255,175,177,177,255, -175,175,176,255,175,175,176,255,174,174,174,255,173,173,173,255,172,173,173,255,171,172,172,255,171,171,171,255,170,170,170,255, -169,169,169,255,168,168,168,255,167,166,166,255,166,165,164,255,165,165,163,255,163,162,160,255,163,161,159,255,161,160,157,255, -148,146,144,255,110,110,107,255, 28, 27, 27,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 18, 18, 18,255, - 43, 43, 43,255, 68, 68, 68,255,112,113,113,255,146,147,146,255,183,184,185,255,195,195,196,255,193,194,194,255,192,193,194,255, -193,194,194,255,191,192,192,255,190,191,193,255,191,193,196,255,190,192,194,255,189,191,193,255,189,191,193,255,189,191,193,255, -188,191,193,255,188,190,192,255,187,190,192,255,188,189,191,255,187,189,190,255,187,188,190,255,186,187,189,255,186,187,189,255, -186,187,188,255,184,186,187,255,184,186,187,255,184,185,186,255,183,184,185,255,182,184,185,255,182,183,184,255,181,182,183,255, -180,181,182,255,180,181,181,255,179,180,180,255,178,179,180,255,177,178,179,255,177,177,178,255,176,177,177,255,176,176,177,255, -174,175,175,255,174,174,174,255,173,173,174,255,172,172,173,255,171,171,171,255,171,171,170,255,170,170,170,255,169,169,168,255, -168,168,167,255,167,166,165,255,165,164,164,255,163,162,160,255,162,161,159,255,163,161,159,255,157,155,153,255, 89, 88, 86,255, - 32, 31, 31,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 1,255, 17, 17, 17,255, 63, 64, 63,255,102,102,101,255, -131,131,131,255,169,170,169,255,189,189,188,255,189,191,191,255,192,194,196,255,189,191,193,255,187,189,191,255,188,191,193,255, -188,189,191,255,187,190,191,255,188,189,190,255,186,189,190,255,186,188,189,255,187,187,190,255,185,187,188,255,186,187,188,255, -185,186,187,255,184,186,187,255,183,185,186,255,184,185,186,255,182,183,184,255,182,183,184,255,182,183,184,255,180,181,182,255, -180,181,182,255,179,180,181,255,179,179,180,255,178,179,179,255,177,178,178,255,176,176,177,255,176,176,177,255,175,175,176,255, -174,174,174,255,173,173,173,255,172,172,172,255,171,171,171,255,171,171,170,255,169,169,168,255,168,168,167,255,168,167,166,255, -166,165,164,255,165,164,162,255,163,162,159,255,162,161,158,255,158,157,154,255, 89, 89, 86,255, 7, 6, 6,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 3, 3, 2,255, 31, 32, 32,255,135,136,138,255,186,188,189,255,189,191,192,255, -186,188,189,255,187,188,190,255,187,189,190,255,187,188,189,255,186,187,189,255,186,187,189,255,185,186,188,255,185,186,187,255, -184,186,187,255,183,185,186,255,183,184,185,255,182,184,185,255,182,183,184,255,181,182,183,255,181,182,182,255,180,181,181,255, -179,180,181,255,179,179,179,255,178,178,179,255,177,178,178,255,176,176,177,255,175,176,176,255,175,175,175,255,174,174,174,255, -173,173,173,255,172,172,171,255,171,171,170,255,170,170,170,255,169,169,168,255,168,168,167,255,166,165,163,255,166,164,163,255, -165,164,162,255,160,159,156,255,133,132,129,255, 86, 84, 82,255, 14, 13, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 1,255, 58, 59, 59,255,162,164,166,255, -191,192,194,255,186,187,188,255,185,187,188,255,186,187,189,255,186,187,188,255,185,187,188,255,184,186,187,255,184,186,187,255, -184,185,186,255,183,184,185,255,183,184,185,255,182,183,184,255,181,182,183,255,181,181,182,255,180,181,181,255,179,180,181,255, -179,179,180,255,178,179,179,255,177,178,178,255,177,177,177,255,176,176,176,255,174,174,175,255,174,174,173,255,173,173,172,255, -172,172,172,255,171,171,170,255,170,170,169,255,168,168,167,255,167,166,164,255,167,165,163,255,168,166,164,255,157,155,153,255, -102,101,100,255, 44, 43, 42,255, 11, 11, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 86, 87, 88,255,184,186,187,255,186,188,189,255,185,186,187,255,183,185,186,255,184,184,185,255,183,185,186,255,183,184,185,255, -182,184,185,255,182,183,184,255,181,182,183,255,182,182,183,255,180,181,181,255,180,181,181,255,179,180,181,255,179,178,179,255, -178,179,179,255,178,178,178,255,176,176,176,255,176,176,176,255,175,175,174,255,173,173,173,255,173,173,172,255,170,170,169,255, -169,169,168,255,170,169,168,255,168,167,166,255,166,165,164,255,166,164,162,255,151,149,147,255, 71, 70, 68,255, 6, 6, 6,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 16, 16, 16,255,109,111,111,255,162,163,164,255,184,186,187,255,184,185,186,255,182,183,184,255,182,183,184,255, -182,182,183,255,181,182,183,255,181,181,182,255,180,181,181,255,179,180,180,255,178,179,180,255,178,178,179,255,177,178,178,255, -176,177,177,255,176,176,176,255,175,175,175,255,174,174,173,255,173,173,172,255,172,172,171,255,172,172,170,255,171,171,169,255, -170,169,167,255,157,156,153,255,130,129,128,255, 92, 91, 90,255, 35, 35, 34,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 23, 23, 23,255, 67, 67, 67,255,155,156,156,255,186,187,188,255,183,184,184,255, -181,181,182,255,180,181,181,255,180,180,180,255,179,180,180,255,179,179,179,255,178,178,178,255,177,177,177,255,176,176,176,255, -176,175,175,255,175,175,174,255,173,173,172,255,173,173,172,255,173,173,172,255,173,172,170,255,162,161,159,255,117,116,114,255, - 60, 60, 59,255, 28, 28, 27,255, 8, 8, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 25, 25, 25,255,113,113,113,255, -173,173,173,255,176,176,176,255,177,177,177,255,176,176,176,255,176,176,176,255,176,176,176,255,176,175,175,255,174,175,173,255, -174,174,173,255,171,171,169,255,170,169,167,255,164,162,161,255,111,110,107,255, 46, 46, 45,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 31, 31, 31,255, 65, 66, 65,255,100,100,100,255,114,114,114,255,117,117,116,255,115,116,115,255,115,114,113,255, -102,102,101,255, 75, 75, 74,255, 39, 39, 38,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, - 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0, -160,239, 98, 7, 31, 0, 0, 0, 1, 0, 0, 0,248,146, 99, 7, 72, 76, 98, 7, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, - 46,110,117,100,103,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46,110,117,100,103,101, 46,112,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,241, 98, 7, 0, 0, 0, 0, 20, 72, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,160,241, 98, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, - 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 40,242, 98, 7,144, 2, 99, 7, 68, 65, 84, 65, - 0, 16, 0, 0, 40,242, 98, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0,144, 2, 99, 7, 0, 0, 0, 0, - 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, - 61, 62, 62,255, 61, 61, 62,255, 61, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 61, 62,255, 61, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 61, 61, 61,255, 61, 61, 62,255, 61, 62, 62,255, 62, 62, 62,255, 61, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 62,255, - 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, 61, 61, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 62, 62,255, 61, 61, 62,255, - 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 61, 61, 61,255, 61, 61, 61,255, 78, 68, 63,255, 87, 69, 61,255, 77, 61, 55,255, 71, 57, 51,255, 69, 55, 49,255, 70, 56, 51,255, - 76, 61, 54,255, 87, 69, 61,255, 99, 78, 68,255,108, 84, 73,255,113, 88, 77,255,116, 90, 78,255,119, 92, 80,255,121, 93, 81,255, -122, 94, 82,255,124, 95, 83,255,125, 96, 84,255,127, 97, 84,255,128, 98, 85,255,128, 99, 85,255,129, 99, 86,255,129,100, 86,255, -129,100, 86,255,129, 99, 86,255,128, 99, 85,255,128, 98, 85,255,128, 98, 85,255,127, 97, 84,255,125, 96, 84,255,123, 95, 82,255, -119, 91, 79,255,110, 86, 74,255, 98, 77, 67,255, 82, 65, 58,255, 71, 57, 51,255, 73, 59, 52,255, 84, 66, 59,255, 97, 76, 67,255, -108, 84, 74,255,116, 90, 78,255,121, 93, 81,255,123, 95, 83,255,124, 95, 83,255,124, 95, 83,255,123, 95, 82,255,122, 94, 82,255, -115, 89, 78,255,102, 80, 70,255, 86, 67, 60,255, 66, 54, 48,255, 57, 47, 43,255, 99, 77, 67,255,113, 88, 77,255,113, 88, 76,255, -112, 86, 75,255,110, 85, 74,255,111, 86, 75,255,103, 79, 70,255, 91, 72, 63,255, 93, 73, 64,255, 90, 71, 63,255, 87, 69, 61,255, - 84, 66, 58,255, 80, 64, 57,255, 78, 62, 55,255, 77, 62, 55,255, 78, 63, 55,255, 81, 64, 57,255, 85, 68, 60,255, 91, 72, 63,255, - 94, 73, 65,255, 96, 75, 66,255,100, 78, 69,255,107, 83, 73,255,114, 88, 77,255,114, 88, 77,255,102, 79, 70,255, 76, 61, 54,255, - 52, 44, 40,255, 46, 39, 36,255, 48, 41, 37,255, 60, 49, 45,255, 86, 68, 60,255, 83, 66, 58,255, 71, 57, 51,255, 84, 66, 59,255, - 82, 65, 58,255, 74, 60, 53,255, 66, 54, 48,255, 63, 51, 46,255, 64, 52, 47,255, 53, 45, 41,255, 50, 42, 39,255, 55, 51, 50,255, - 62, 62, 62,255, 60, 61, 61,255,111, 86, 74,255,141, 97, 77,255,116, 80, 63,255, 94, 63, 50,255, 78, 52, 40,255, 70, 46, 36,255, - 73, 48, 37,255, 85, 57, 45,255,108, 74, 58,255,135, 92, 74,255,154,107, 86,255,167,116, 94,255,174,121, 98,255,179,125,101,255, -183,127,103,255,187,130,105,255,191,133,107,255,193,135,110,255,195,137,114,255,195,139,117,255,197,141,120,255,196,141,120,255, -196,141,120,255,196,140,119,255,195,139,117,255,195,137,115,255,194,136,112,255,192,134,109,255,190,132,107,255,185,130,104,255, -180,125,101,255,165,114, 93,255,143, 99, 80,255,113, 78, 61,255, 85, 57, 45,255, 80, 53, 41,255, 96, 65, 51,255,123, 84, 67,255, -148,103, 82,255,166,115, 92,255,177,123,100,255,182,127,103,255,184,128,104,255,184,129,104,255,184,128,104,255,181,126,102,255, -168,117, 95,255,143, 99, 80,255,110, 75, 60,255, 72, 48, 37,255, 52, 33, 24,255,132, 90, 72,255,164,114, 91,255,164,114, 92,255, -161,111, 89,255,158,110, 88,255,161,111, 90,255,140, 96, 77,255,126, 87, 69,255,129, 88, 71,255,123, 85, 68,255,116, 79, 63,255, -108, 74, 59,255,103, 70, 55,255, 98, 66, 52,255, 96, 64, 50,255, 97, 66, 52,255,100, 67, 54,255,103, 70, 55,255, 98, 66, 52,255, - 90, 61, 47,255, 87, 58, 45,255, 88, 59, 46,255, 98, 66, 53,255,119, 81, 65,255,148,103, 82,255,170,118, 95,255,164,114, 92,255, -118, 81, 64,255, 56, 36, 27,255, 32, 19, 13,255, 36, 22, 16,255, 70, 46, 35,255,112, 77, 61,255, 93, 63, 49,255, 92, 63, 49,255, -106, 72, 57,255, 87, 59, 46,255, 82, 55, 43,255, 70, 47, 36,255, 65, 43, 33,255, 56, 35, 27,255, 40, 24, 18,255, 50, 42, 39,255, - 62, 62, 62,255, 60, 60, 61,255,132,105, 96,255,189,135,114,255,168,117, 96,255,141, 98, 78,255,112, 77, 61,255, 87, 58, 46,255, - 69, 46, 36,255, 64, 43, 33,255, 72, 48, 37,255, 91, 62, 49,255,120, 82, 65,255,145,100, 81,255,163,113, 92,255,175,122, 99,255, -182,127,103,255,188,131,107,255,193,135,110,255,195,139,118,255,197,143,124,255,198,145,128,255,199,146,131,255,200,147,131,255, -200,147,132,255,199,147,131,255,198,146,129,255,197,143,126,255,197,142,122,255,195,140,118,255,193,137,114,255,191,133,110,255, -186,130,106,255,176,122, 99,255,157,109, 88,255,130, 90, 72,255,100, 67, 53,255, 79, 53, 42,255, 86, 57, 45,255,110, 75, 60,255, -139, 96, 77,255,161,111, 90,255,174,122, 99,255,182,127,103,255,186,130,105,255,186,130,105,255,185,129,105,255,183,127,103,255, -172,119, 96,255,146,101, 81,255,114, 78, 63,255, 75, 50, 39,255, 50, 32, 24,255,126, 87, 69,255,164,114, 93,255,166,115, 93,255, -162,113, 91,255,161,111, 90,255,164,113, 92,255,140, 97, 78,255,134, 92, 74,255,136, 94, 75,255,131, 90, 72,255,123, 84, 67,255, -114, 78, 62,255,105, 72, 57,255, 98, 67, 53,255, 91, 62, 48,255, 91, 61, 48,255, 96, 65, 51,255, 89, 60, 47,255, 81, 55, 43,255, - 75, 51, 39,255, 71, 47, 37,255, 68, 45, 34,255, 65, 42, 33,255, 65, 43, 33,255, 76, 51, 40,255,108, 74, 58,255,157,108, 87,255, -186,130,106,255,161,112, 92,255, 85, 57, 44,255, 38, 22, 16,255, 32, 19, 13,255, 68, 44, 34,255,109, 75, 59,255, 90, 61, 48,255, -100, 69, 55,255,100, 69, 54,255, 75, 50, 39,255, 82, 55, 43,255, 73, 49, 38,255, 62, 40, 31,255, 45, 29, 21,255, 50, 43, 39,255, - 62, 62, 62,255, 60, 60, 60,255,142,121,120,255,215,172,170,255,207,159,150,255,195,143,128,255,174,123,103,255,146,100, 80,255, -113, 77, 61,255, 84, 56, 44,255, 66, 44, 34,255, 64, 42, 33,255, 76, 51, 39,255, 99, 68, 53,255,128, 88, 70,255,153,106, 85,255, -171,119, 96,255,182,127,103,255,190,133,108,255,195,138,116,255,197,143,125,255,199,147,131,255,201,150,135,255,201,151,137,255, -202,151,138,255,202,151,138,255,201,150,137,255,201,149,135,255,200,148,132,255,198,146,129,255,197,143,126,255,195,140,119,255, -192,136,113,255,186,130,104,255,171,119, 96,255,148,103, 83,255,117, 81, 64,255, 88, 60, 47,255, 80, 54, 42,255, 98, 66, 53,255, -127, 88, 70,255,154,107, 86,255,172,120, 97,255,183,128,103,255,187,130,106,255,188,131,106,255,188,131,106,255,186,129,105,255, -175,122, 98,255,150,104, 84,255,119, 81, 65,255, 78, 52, 40,255, 48, 31, 23,255,119, 82, 65,255,166,115, 94,255,169,117, 95,255, -164,114, 92,255,165,114, 92,255,167,115, 93,255,144,100, 80,255,141, 98, 79,255,142, 99, 79,255,137, 95, 76,255,128, 88, 71,255, -117, 80, 64,255,104, 71, 56,255, 87, 59, 46,255, 84, 56, 44,255, 99, 68, 53,255, 96, 65, 52,255, 90, 60, 47,255, 84, 57, 45,255, - 81, 55, 43,255, 81, 54, 42,255, 81, 54, 43,255, 77, 52, 40,255, 70, 46, 36,255, 62, 40, 31,255, 59, 38, 29,255, 75, 49, 38,255, -125, 86, 69,255,183,130,109,255,185,134,115,255,119, 82, 66,255, 44, 27, 20,255, 34, 21, 15,255, 72, 47, 37,255,106, 73, 58,255, - 91, 62, 49,255,109, 74, 59,255, 92, 61, 48,255, 66, 44, 34,255, 83, 56, 44,255, 72, 48, 37,255, 51, 33, 24,255, 51, 43, 39,255, - 62, 62, 62,255, 60, 60, 60,255,144,124,126,255,221,183,186,255,219,180,183,255,216,176,176,255,211,168,164,255,200,152,139,255, -181,128,108,255,151,103, 83,255,115, 78, 62,255, 83, 55, 43,255, 66, 44, 34,255, 65, 43, 33,255, 80, 53, 42,255,106, 72, 58,255, -135, 93, 75,255,160,111, 89,255,176,123,100,255,188,131,107,255,194,138,116,255,198,144,127,255,200,149,134,255,202,152,139,255, -203,153,142,255,204,154,143,255,203,154,142,255,203,153,142,255,202,152,141,255,202,150,137,255,200,149,134,255,199,147,130,255, -197,143,125,255,192,136,113,255,183,127,103,255,164,113, 92,255,135, 93, 75,255,104, 71, 56,255, 84, 56, 44,255, 87, 59, 46,255, -114, 78, 62,255,145,100, 81,255,168,117, 94,255,181,127,102,255,188,131,106,255,190,132,107,255,190,132,107,255,188,131,106,255, -178,125,101,255,155,107, 86,255,123, 84, 68,255, 83, 56, 44,255, 47, 31, 23,255,110, 75, 59,255,166,116, 93,255,171,119, 96,255, -165,115, 93,255,167,116, 94,255,168,117, 95,255,148,103, 83,255,147,102, 82,255,147,102, 82,255,141, 98, 79,255,131, 90, 73,255, -118, 80, 64,255, 97, 66, 52,255, 75, 51, 40,255,100, 69, 54,255,106, 72, 57,255, 99, 67, 53,255, 92, 62, 50,255, 88, 59, 47,255, - 86, 59, 46,255, 91, 62, 49,255,100, 68, 54,255,105, 71, 57,255,100, 68, 54,255, 86, 58, 46,255, 68, 45, 35,255, 57, 37, 28,255, - 58, 38, 29,255,104, 71, 56,255,176,124,104,255,195,142,125,255,136, 94, 77,255, 43, 27, 20,255, 37, 23, 16,255, 82, 55, 43,255, -105, 71, 57,255, 99, 67, 53,255,114, 78, 62,255, 78, 53, 40,255, 67, 44, 34,255, 85, 57, 45,255, 63, 41, 32,255, 53, 44, 41,255, - 62, 62, 62,255, 60, 60, 60,255,143,122,124,255,220,183,186,255,220,183,188,255,221,184,188,255,220,183,186,255,218,179,182,255, -214,173,171,255,204,156,146,255,185,133,115,255,154,107, 87,255,115, 79, 62,255, 84, 56, 44,255, 67, 44, 34,255, 68, 45, 34,255, - 86, 58, 46,255,115, 79, 63,255,144, 99, 80,255,167,116, 94,255,182,126,102,255,191,135,112,255,197,143,124,255,201,149,134,255, -202,152,140,255,203,155,144,255,204,156,146,255,205,156,146,255,204,156,145,255,204,154,144,255,203,153,142,255,202,152,138,255, -200,149,135,255,197,144,125,255,192,136,112,255,178,124,100,255,154,107, 86,255,124, 85, 68,255, 93, 63, 50,255, 83, 56, 44,255, -101, 68, 54,255,132, 91, 73,255,161,112, 90,255,179,125,101,255,188,132,107,255,192,134,109,255,192,134,109,255,191,133,108,255, -183,127,103,255,160,111, 89,255,129, 89, 71,255, 90, 61, 47,255, 49, 31, 23,255, 99, 67, 53,255,164,114, 92,255,172,120, 97,255, -167,116, 94,255,169,117, 95,255,171,119, 96,255,154,106, 86,255,152,105, 85,255,151,104, 84,255,145,100, 80,255,133, 92, 74,255, -115, 79, 63,255, 82, 55, 43,255, 82, 55, 44,255,114, 78, 62,255,110, 75, 60,255,101, 68, 54,255, 93, 63, 50,255, 87, 59, 47,255, - 87, 58, 45,255, 94, 64, 50,255,107, 72, 58,255,120, 82, 65,255,125, 86, 69,255,118, 80, 64,255,100, 68, 54,255, 77, 50, 40,255, - 56, 37, 28,255, 52, 33, 25,255, 98, 66, 51,255,170,121,101,255,197,143,124,255,135, 94, 76,255, 45, 28, 20,255, 42, 26, 18,255, - 92, 62, 49,255, 98, 67, 53,255,112, 77, 61,255,109, 74, 59,255, 65, 42, 33,255, 74, 50, 39,255, 78, 52, 41,255, 59, 48, 44,255, - 62, 62, 62,255, 60, 60, 60,255,136,111,106,255,212,169,164,255,217,177,179,255,220,182,185,255,220,183,188,255,221,184,188,255, -220,183,187,255,218,181,184,255,215,174,173,255,206,160,151,255,188,137,120,255,156,108, 88,255,118, 80, 63,255, 86, 58, 46,255, - 69, 45, 35,255, 71, 47, 37,255, 93, 63, 49,255,124, 85, 68,255,153,106, 85,255,174,121, 98,255,187,131,107,255,194,140,118,255, -199,147,131,255,202,152,140,255,204,156,145,255,205,157,148,255,205,158,149,255,205,158,149,255,205,157,148,255,204,156,146,255, -204,155,143,255,201,151,137,255,197,144,126,255,189,133,109,255,170,118, 96,255,144, 99, 80,255,111, 76, 61,255, 86, 58, 46,255, - 90, 61, 48,255,118, 81, 64,255,151,105, 84,255,175,121, 99,255,188,131,106,255,194,136,112,255,194,137,113,255,193,136,111,255, -187,129,105,255,166,115, 93,255,136, 94, 75,255, 96, 65, 52,255, 52, 33, 25,255, 87, 58, 46,255,161,112, 90,255,174,121, 98,255, -168,117, 94,255,171,118, 96,255,173,121, 97,255,158,109, 88,255,156,108, 87,255,155,107, 87,255,148,102, 83,255,134, 93, 75,255, -109, 74, 59,255, 67, 44, 34,255,101, 68, 55,255,122, 84, 67,255,114, 78, 62,255,102, 70, 55,255, 91, 61, 48,255, 81, 55, 43,255, - 83, 56, 44,255, 91, 60, 48,255, 99, 67, 53,255,110, 75, 59,255,122, 84, 67,255,129, 89, 72,255,125, 85, 69,255,109, 74, 59,255, - 82, 55, 43,255, 55, 36, 27,255, 52, 33, 25,255,100, 68, 54,255,173,122,102,255,192,138,118,255,121, 84, 67,255, 41, 25, 19,255, - 52, 32, 25,255, 95, 64, 51,255, 99, 67, 53,255,121, 83, 66,255, 91, 61, 48,255, 60, 39, 30,255, 76, 50, 39,255, 65, 53, 48,255, - 61, 62, 62,255, 60, 61, 61,255,120, 92, 81,255,187,132,110,255,200,148,134,255,210,166,160,255,216,176,176,255,219,182,184,255, -220,183,187,255,221,184,188,255,220,183,187,255,219,181,184,255,216,176,176,255,207,161,154,255,189,137,119,255,156,108, 88,255, -116, 79, 62,255, 84, 57, 44,255, 70, 46, 36,255, 77, 51, 40,255,104, 70, 57,255,137, 94, 76,255,163,114, 92,255,181,126,102,255, -192,135,112,255,197,144,126,255,201,151,139,255,204,156,145,255,206,159,149,255,206,159,152,255,206,160,152,255,206,159,151,255, -206,158,150,255,204,157,145,255,201,151,138,255,197,142,124,255,184,129,105,255,162,113, 91,255,131, 91, 72,255, 99, 67, 53,255, - 86, 57, 45,255,103, 70, 55,255,137, 95, 76,255,168,116, 94,255,186,129,105,255,194,137,113,255,196,140,118,255,194,138,116,255, -190,132,107,255,171,119, 96,255,142, 98, 79,255,104, 71, 56,255, 58, 37, 28,255, 75, 50, 39,255,155,107, 86,255,175,121, 99,255, -169,117, 95,255,172,120, 96,255,176,122, 99,255,162,113, 91,255,159,110, 89,255,158,109, 88,255,150,104, 84,255,134, 92, 75,255, - 98, 66, 53,255, 62, 41, 30,255,119, 81, 66,255,128, 88, 71,255,117, 80, 64,255,102, 70, 55,255, 84, 57, 45,255, 75, 50, 39,255, - 81, 54, 42,255, 85, 58, 45,255, 88, 59, 47,255, 93, 63, 50,255,103, 70, 56,255,117, 80, 64,255,127, 87, 69,255,127, 87, 70,255, -114, 77, 62,255, 83, 55, 44,255, 52, 34, 26,255, 56, 36, 27,255,113, 77, 61,255,178,124,102,255,184,130,109,255, 92, 62, 49,255, - 37, 23, 17,255, 66, 44, 33,255, 94, 64, 50,255,107, 72, 58,255,117, 80, 64,255, 68, 45, 34,255, 64, 42, 32,255, 68, 55, 49,255, - 61, 62, 62,255, 61, 61, 61,255,100, 78, 69,255,148,102, 82,255,165,113, 91,255,182,128,105,255,196,145,130,255,207,161,154,255, -214,173,172,255,218,181,182,255,220,183,186,255,221,184,188,255,221,183,188,255,219,182,185,255,216,176,176,255,207,160,150,255, -186,134,116,255,150,105, 85,255,113, 77, 61,255, 81, 54, 43,255, 71, 48, 37,255, 87, 59, 46,255,120, 81, 65,255,151,105, 84,255, -174,121, 98,255,188,132,108,255,196,141,122,255,201,150,136,255,204,156,146,255,206,160,152,255,208,162,154,255,208,162,155,255, -208,161,155,255,207,160,153,255,205,157,147,255,201,151,138,255,194,138,118,255,178,124,100,255,152,105, 85,255,118, 81, 65,255, - 89, 60, 48,255, 91, 61, 49,255,121, 83, 67,255,157,109, 88,255,182,126,102,255,194,136,113,255,196,142,122,255,197,142,122,255, -193,136,112,255,177,123,100,255,148,103, 83,255,112, 76, 61,255, 64, 42, 32,255, 66, 43, 33,255,146,100, 81,255,174,121, 98,255, -171,119, 96,255,173,120, 97,255,178,124,100,255,166,115, 93,255,161,112, 91,255,160,110, 89,255,152,105, 85,255,133, 91, 74,255, - 85, 57, 44,255, 70, 48, 38,255,132, 90, 72,255,133, 92, 74,255,120, 83, 66,255,100, 68, 54,255, 75, 49, 39,255, 74, 49, 38,255, - 81, 54, 42,255, 82, 55, 43,255, 82, 55, 43,255, 82, 56, 44,255, 88, 59, 47,255, 98, 66, 52,255,111, 76, 61,255,123, 85, 67,255, -127, 87, 70,255,114, 78, 62,255, 78, 53, 41,255, 50, 32, 24,255, 65, 42, 33,255,128, 87, 70,255,184,130,106,255,168,117, 95,255, - 64, 42, 32,255, 41, 26, 19,255, 83, 56, 44,255, 95, 65, 51,255,120, 82, 66,255, 97, 66, 51,255, 59, 38, 29,255, 65, 53, 47,255, - 61, 62, 62,255, 61, 61, 62,255, 86, 68, 61,255,116, 79, 64,255,129, 89, 71,255,144,100, 79,255,160,111, 89,255,177,124,103,255, -194,141,123,255,206,159,148,255,213,171,171,255,218,179,181,255,220,182,186,255,220,184,187,255,220,183,188,255,219,181,184,255, -215,174,173,255,204,157,147,255,181,130,111,255,145, 99, 80,255,103, 70, 55,255, 78, 52, 40,255, 78, 52, 41,255,103, 70, 56,255, -138, 95, 76,255,165,115, 93,255,183,128,104,255,193,138,116,255,200,148,133,255,204,155,146,255,207,161,153,255,208,163,156,255, -209,164,158,255,209,164,157,255,207,161,155,255,205,158,148,255,200,149,135,255,191,135,112,255,171,119, 97,255,141, 97, 78,255, -104, 72, 56,255, 86, 58, 45,255,105, 71, 56,255,143, 99, 80,255,174,122, 98,255,191,135,111,255,198,143,124,255,198,145,126,255, -196,140,119,255,182,128,104,255,156,108, 87,255,120, 82, 66,255, 73, 48, 38,255, 59, 38, 30,255,135, 93, 74,255,173,120, 98,255, -171,119, 96,255,172,120, 97,255,179,125,101,255,169,117, 95,255,164,115, 93,255,162,112, 91,255,153,106, 85,255,131, 90, 72,255, - 73, 49, 38,255, 83, 58, 47,255,139, 96, 77,255,137, 95, 76,255,123, 84, 67,255, 94, 64, 50,255, 69, 46, 35,255, 78, 52, 41,255, - 83, 55, 43,255, 81, 54, 42,255, 79, 53, 41,255, 78, 52, 41,255, 79, 53, 41,255, 84, 56, 44,255, 93, 63, 50,255,107, 74, 59,255, -122, 84, 67,255,128, 88, 70,255,110, 76, 60,255, 71, 47, 37,255, 49, 31, 23,255, 78, 52, 41,255,146,101, 81,255,187,131,106,255, -140, 97, 78,255, 47, 30, 22,255, 54, 34, 26,255, 90, 60, 48,255,106, 72, 58,255,120, 82, 66,255, 73, 48, 37,255, 60, 50, 44,255, - 62, 62, 62,255, 61, 61, 62,255, 81, 65, 57,255,102, 68, 54,255,106, 73, 58,255,115, 79, 63,255,127, 87, 70,255,141, 97, 79,255, -158,108, 88,255,175,122, 99,255,192,137,118,255,204,157,146,255,213,171,168,255,218,178,180,255,219,182,185,255,220,184,187,255, -220,183,186,255,219,180,183,255,213,171,170,255,200,151,138,255,171,120, 99,255,131, 90, 72,255, 93, 63, 49,255, 75, 50, 38,255, - 90, 61, 48,255,124, 85, 68,255,156,108, 87,255,179,124,101,255,191,135,113,255,199,147,132,255,204,156,146,255,208,162,154,255, -209,164,159,255,209,166,161,255,210,165,160,255,208,163,156,255,205,157,148,255,199,146,130,255,187,130,107,255,162,112, 91,255, -127, 87, 70,255, 93, 63, 50,255, 93, 62, 49,255,125, 86, 69,255,164,114, 91,255,188,131,108,255,198,144,124,255,199,146,130,255, -198,144,126,255,188,132,108,255,164,113, 91,255,128, 88, 70,255, 82, 55, 43,255, 57, 37, 28,255,121, 83, 66,255,170,118, 96,255, -172,120, 97,255,173,121, 97,255,181,126,102,255,173,120, 97,255,166,116, 94,255,163,113, 92,255,154,106, 86,255,127, 87, 70,255, - 64, 41, 32,255, 95, 66, 53,255,146,101, 81,255,142, 98, 79,255,124, 85, 68,255, 86, 59, 46,255, 72, 47, 37,255, 85, 57, 45,255, - 86, 58, 46,255, 84, 56, 44,255, 80, 53, 42,255, 76, 51, 40,255, 75, 50, 39,255, 75, 50, 40,255, 81, 54, 42,255, 92, 62, 49,255, -107, 73, 58,255,123, 84, 68,255,126, 86, 69,255,101, 69, 54,255, 60, 39, 30,255, 52, 33, 26,255, 98, 67, 53,255,165,115, 93,255, -180,126,102,255,100, 67, 54,255, 41, 25, 18,255, 69, 46, 35,255, 93, 63, 49,255,119, 82, 65,255, 99, 67, 53,255, 61, 50, 45,255, - 61, 62, 62,255, 61, 61, 62,255, 81, 64, 57,255, 98, 66, 52,255, 98, 66, 52,255,100, 68, 54,255,106, 73, 57,255,115, 78, 63,255, -126, 87, 69,255,141, 97, 78,255,156,108, 86,255,174,121, 97,255,191,137,119,255,204,156,145,255,213,170,166,255,217,177,179,255, -219,182,185,255,220,183,187,255,220,183,186,255,218,178,181,255,211,166,159,255,190,139,122,255,155,108, 88,255,111, 76, 60,255, - 81, 55, 43,255, 84, 56, 44,255,113, 77, 62,255,148,102, 82,255,173,120, 97,255,189,132,110,255,198,146,129,255,204,157,146,255, -209,163,156,255,210,166,162,255,211,167,163,255,210,166,161,255,209,163,157,255,205,156,147,255,196,144,125,255,181,126,102,255, -150,105, 83,255,111, 76, 60,255, 89, 60, 48,255,107, 73, 58,255,149,103, 82,255,181,126,103,255,197,142,122,255,201,149,133,255, -200,147,131,255,193,137,115,255,171,118, 96,255,138, 95, 76,255, 93, 62, 50,255, 58, 38, 29,255,109, 75, 59,255,165,115, 92,255, -173,120, 97,255,172,120, 97,255,182,127,102,255,175,122, 99,255,169,118, 95,255,165,115, 92,255,154,107, 86,255,124, 85, 68,255, - 58, 38, 29,255,104, 71, 57,255,150,104, 83,255,145,100, 81,255,124, 85, 68,255, 80, 54, 42,255, 78, 52, 41,255, 91, 61, 48,255, - 90, 61, 48,255, 86, 58, 45,255, 82, 55, 43,255, 77, 51, 40,255, 72, 48, 37,255, 72, 48, 37,255, 74, 49, 38,255, 79, 53, 42,255, - 92, 62, 49,255,109, 74, 60,255,125, 86, 69,255,121, 83, 66,255, 87, 58, 46,255, 53, 34, 26,255, 63, 42, 32,255,124, 85, 68,255, -178,124,100,255,158,110, 88,255, 60, 39, 30,255, 47, 29, 22,255, 80, 54, 41,255,103, 70, 56,255,116, 79, 63,255, 72, 58, 52,255, - 61, 62, 62,255, 61, 61, 62,255, 83, 66, 58,255,101, 69, 55,255, 99, 67, 53,255, 97, 65, 52,255, 97, 66, 52,255,101, 68, 54,255, -107, 72, 58,255,116, 78, 63,255,126, 86, 69,255,140, 97, 77,255,156,108, 87,255,173,121, 99,255,190,137,118,255,205,155,144,255, -213,171,168,255,217,178,180,255,219,182,186,255,220,183,187,255,219,182,185,255,216,175,174,255,204,157,146,255,177,125,105,255, -135, 92, 73,255, 94, 63, 51,255, 79, 53, 41,255,101, 69, 54,255,137, 94, 75,255,167,115, 93,255,186,130,106,255,198,145,127,255, -204,157,146,255,209,164,159,255,211,168,164,255,211,169,165,255,211,167,163,255,209,163,157,255,203,155,144,255,194,140,120,255, -172,120, 96,255,137, 94, 76,255, 98, 67, 53,255, 94, 64, 50,255,129, 88, 71,255,170,118, 95,255,193,138,117,255,201,150,134,255, -201,150,136,255,196,142,123,255,178,124,100,255,147,102, 82,255,104, 71, 56,255, 63, 41, 31,255, 97, 66, 52,255,159,110, 89,255, -172,120, 97,255,172,119, 97,255,182,127,103,255,178,124,101,255,171,119, 96,255,166,115, 93,255,154,107, 86,255,120, 82, 65,255, - 56, 36, 27,255,111, 75, 60,255,153,106, 85,255,148,102, 82,255,123, 84, 67,255, 77, 51, 40,255, 86, 58, 45,255, 96, 65, 52,255, - 94, 64, 50,255, 90, 61, 48,255, 85, 57, 44,255, 78, 52, 41,255, 73, 49, 38,255, 70, 46, 36,255, 69, 45, 35,255, 72, 48, 37,255, - 80, 53, 42,255, 95, 65, 51,255,114, 78, 63,255,126, 87, 70,255,113, 76, 61,255, 72, 48, 38,255, 52, 33, 25,255, 82, 55, 43,255, -150,104, 83,255,182,127,103,255,117, 80, 64,255, 41, 26, 19,255, 62, 40, 31,255, 86, 58, 46,255,113, 78, 61,255, 84, 66, 59,255, - 61, 61, 62,255, 61, 61, 62,255, 88, 69, 61,255,108, 74, 59,255,104, 71, 56,255,101, 69, 54,255, 99, 67, 53,255, 97, 66, 52,255, - 99, 67, 53,255,102, 69, 55,255,108, 74, 58,255,116, 80, 63,255,127, 87, 69,255,141, 97, 78,255,156,108, 88,255,174,122, 99,255, -192,138,119,255,205,158,149,255,214,172,171,255,217,179,181,255,219,182,185,255,219,182,186,255,219,180,183,255,212,169,166,255, -193,142,124,255,156,108, 87,255,108, 73, 58,255, 80, 54, 42,255, 93, 63, 49,255,128, 88, 69,255,161,111, 90,255,183,128,103,255, -197,144,126,255,205,157,148,255,210,166,161,255,212,169,166,255,212,169,166,255,211,168,164,255,209,163,156,255,202,152,140,255, -190,134,113,255,161,112, 91,255,120, 82, 65,255, 91, 62, 49,255,108, 74, 59,255,153,105, 85,255,187,132,109,255,200,148,134,255, -202,153,140,255,200,147,131,255,185,130,106,255,156,108, 87,255,114, 78, 62,255, 70, 46, 36,255, 88, 59, 46,255,150,103, 83,255, -172,120, 97,255,171,119, 96,255,182,127,103,255,180,126,102,255,173,120, 98,255,168,116, 94,255,154,107, 86,255,117, 79, 64,255, - 54, 34, 26,255,116, 80, 64,255,155,108, 87,255,150,104, 84,255,120, 82, 66,255, 76, 51, 39,255, 94, 63, 50,255,102, 69, 55,255, - 99, 66, 53,255, 94, 64, 50,255, 87, 60, 47,255, 81, 55, 43,255, 75, 50, 39,255, 70, 47, 36,255, 67, 44, 34,255, 67, 44, 34,255, - 71, 47, 36,255, 82, 55, 43,255,101, 69, 54,255,120, 83, 66,255,125, 86, 69,255, 99, 67, 54,255, 59, 39, 30,255, 57, 37, 28,255, -109, 74, 58,255,171,119, 96,255,172,119, 96,255, 72, 48, 36,255, 46, 30, 22,255, 74, 49, 38,255, 98, 67, 53,255, 88, 69, 62,255, - 61, 61, 62,255, 61, 61, 61,255, 95, 75, 66,255,123, 84, 67,255,116, 79, 63,255,111, 75, 60,255,106, 72, 58,255,103, 69, 55,255, -100, 68, 54,255,100, 67, 53,255,100, 68, 54,255,104, 71, 56,255,109, 75, 59,255,117, 80, 64,255,129, 88, 71,255,142, 98, 79,255, -159,110, 88,255,177,124,101,255,194,142,125,255,207,161,153,255,215,174,173,255,219,180,183,255,219,182,186,255,220,183,186,255, -216,176,177,255,205,156,146,255,175,124,105,255,126, 86, 68,255, 87, 59, 46,255, 86, 57, 46,255,117, 80, 64,255,153,106, 85,255, -179,125,101,255,196,142,124,255,206,158,149,255,211,167,162,255,213,171,168,255,213,171,168,255,211,168,164,255,208,162,155,255, -200,149,134,255,183,128,105,255,146,101, 81,255,103, 70, 56,255, 94, 64, 50,255,132, 91, 72,255,176,122, 99,255,199,145,129,255, -204,154,143,255,203,152,139,255,193,137,115,255,165,115, 92,255,126, 87, 69,255, 79, 53, 41,255, 81, 54, 43,255,139, 97, 77,255, -169,117, 95,255,171,119, 96,255,181,126,102,255,183,127,103,255,175,122, 98,255,168,117, 95,255,155,108, 86,255,114, 77, 62,255, - 53, 34, 26,255,120, 82, 65,255,157,109, 88,255,151,104, 84,255,119, 81, 64,255, 77, 51, 40,255,102, 69, 55,255,108, 74, 58,255, -103, 70, 56,255, 98, 66, 52,255, 91, 62, 49,255, 84, 57, 45,255, 78, 52, 40,255, 72, 48, 37,255, 67, 44, 35,255, 64, 42, 32,255, - 65, 43, 33,255, 72, 48, 37,255, 87, 58, 46,255,108, 74, 59,255,126, 87, 69,255,119, 82, 66,255, 82, 55, 43,255, 52, 33, 25,255, - 72, 48, 37,255,140, 97, 78,255,183,128,103,255,137, 95, 76,255, 47, 30, 23,255, 60, 40, 31,255, 83, 56, 43,255, 84, 67, 59,255, - 61, 61, 62,255, 60, 61, 61,255,109, 84, 73,255,144,100, 80,255,134, 93, 74,255,127, 87, 70,255,120, 83, 66,255,114, 78, 62,255, -109, 74, 59,255,105, 72, 57,255,102, 70, 55,255,102, 69, 55,255,103, 70, 55,255,106, 72, 58,255,112, 76, 61,255,119, 82, 66,255, -131, 90, 72,255,145,100, 80,255,162,112, 90,255,180,127,105,255,198,147,130,255,210,166,161,255,216,177,178,255,219,182,185,255, -220,183,186,255,218,181,183,255,212,168,164,255,191,141,126,255,149,102, 83,255, 97, 66, 52,255, 80, 54, 42,255,106, 72, 57,255, -145,100, 81,255,176,123,100,255,196,143,125,255,206,160,152,255,212,169,166,255,214,172,170,255,213,171,169,255,211,168,164,255, -207,160,153,255,197,144,126,255,172,119, 96,255,127, 87, 70,255, 93, 63, 49,255,110, 75, 59,255,158,109, 87,255,193,138,118,255, -204,154,143,255,204,155,144,255,197,144,127,255,175,121, 98,255,137, 95, 76,255, 90, 61, 48,255, 78, 52, 41,255,129, 89, 71,255, -166,115, 93,255,170,118, 96,255,181,125,102,255,184,128,104,255,177,123,100,255,170,118, 95,255,155,108, 87,255,111, 76, 60,255, - 53, 34, 25,255,121, 83, 66,255,158,110, 89,255,152,105, 85,255,116, 80, 63,255, 80, 53, 41,255,110, 75, 59,255,114, 78, 62,255, -108, 74, 59,255,102, 69, 55,255, 95, 65, 51,255, 88, 60, 47,255, 82, 55, 43,255, 75, 50, 39,255, 69, 46, 35,255, 64, 42, 32,255, - 62, 41, 31,255, 64, 42, 33,255, 75, 50, 39,255, 95, 64, 51,255,118, 81, 64,255,128, 88, 70,255,107, 73, 58,255, 65, 42, 33,255, - 54, 34, 26,255,102, 69, 55,255,169,118, 95,255,177,123,100,255, 86, 57, 45,255, 48, 30, 22,255, 72, 47, 37,255, 75, 61, 54,255, - 61, 62, 62,255, 60, 61, 61,255,129,102, 91,255,179,125,103,255,162,112, 90,255,150,104, 83,255,140, 97, 78,255,132, 91, 73,255, -125, 86, 69,255,118, 81, 65,255,113, 77, 61,255,108, 73, 58,255,105, 72, 57,255,104, 70, 56,255,105, 71, 57,255,107, 73, 58,255, -113, 78, 62,255,122, 84, 67,255,133, 92, 73,255,148,103, 83,255,166,115, 92,255,186,132,110,255,203,154,143,255,213,171,169,255, -218,180,182,255,220,182,186,255,220,182,186,255,216,176,175,255,203,155,145,255,168,118, 98,255,113, 77, 61,255, 81, 54, 43,255, - 98, 67, 53,255,139, 96, 77,255,173,121, 98,255,197,144,127,255,208,162,157,255,213,171,169,255,215,174,172,255,213,172,170,255, -211,168,163,255,205,158,149,255,191,137,117,255,156,108, 86,255,109, 74, 59,255, 96, 64, 51,255,135, 93, 75,255,183,128,105,255, -202,152,139,255,205,157,148,255,201,150,136,255,184,130,106,255,149,102, 82,255,102, 70, 55,255, 78, 52, 41,255,119, 82, 65,255, -160,110, 89,255,169,117, 94,255,178,125,101,255,185,129,104,255,179,125,101,255,171,119, 97,255,155,108, 87,255,109, 74, 59,255, - 52, 33, 25,255,121, 83, 67,255,160,110, 89,255,152,105, 85,255,113, 77, 61,255, 83, 56, 44,255,118, 80, 64,255,121, 83, 66,255, -113, 77, 61,255,105, 72, 57,255, 99, 68, 53,255, 93, 63, 50,255, 86, 58, 46,255, 80, 53, 42,255, 73, 49, 38,255, 67, 44, 34,255, - 62, 41, 31,255, 61, 40, 30,255, 67, 44, 34,255, 82, 55, 43,255,106, 72, 57,255,126, 87, 70,255,125, 86, 69,255, 88, 59, 46,255, - 53, 34, 26,255, 70, 46, 35,255,140, 97, 78,255,184,128,104,255,138, 96, 77,255, 53, 33, 26,255, 59, 38, 28,255, 69, 55, 50,255, - 61, 62, 62,255, 60, 60, 60,255,143,122,123,255,211,166,160,255,195,144,128,255,181,128,106,255,168,117, 94,255,157,108, 87,255, -147,101, 82,255,138, 95, 77,255,130, 90, 72,255,123, 84, 67,255,117, 79, 64,255,112, 76, 61,255,108, 74, 59,255,107, 73, 58,255, -107, 73, 58,255,110, 75, 60,255,116, 79, 63,255,124, 86, 69,255,137, 94, 76,255,152,105, 84,255,172,119, 97,255,193,141,124,255, -208,162,154,255,216,176,176,255,219,181,185,255,220,183,187,255,219,180,182,255,211,166,160,255,184,133,116,255,131, 90, 72,255, - 84, 56, 44,255, 90, 61, 49,255,130, 89, 71,255,170,118, 95,255,197,145,129,255,209,165,160,255,214,174,173,255,216,175,174,255, -214,172,171,255,211,167,163,255,203,153,141,255,180,127,105,255,135, 93, 75,255, 95, 65, 51,255,113, 77, 61,255,165,114, 92,255, -199,146,129,255,206,159,149,255,204,156,144,255,192,137,117,255,160,111, 90,255,114, 78, 63,255, 82, 54, 43,255,111, 75, 60,255, -153,106, 85,255,166,115, 94,255,176,123,100,255,186,130,105,255,181,126,102,255,173,120, 97,255,156,108, 87,255,108, 74, 59,255, - 52, 33, 25,255,121, 82, 66,255,160,112, 89,255,152,106, 86,255,111, 76, 60,255, 88, 59, 46,255,126, 87, 68,255,127, 87, 70,255, -116, 80, 64,255,109, 74, 59,255,102, 69, 55,255, 97, 66, 52,255, 91, 62, 49,255, 86, 58, 46,255, 79, 52, 41,255, 71, 47, 37,255, - 64, 42, 32,255, 60, 39, 30,255, 61, 40, 31,255, 71, 47, 36,255, 92, 63, 50,255,118, 81, 65,255,132, 91, 73,255,113, 77, 61,255, - 68, 45, 34,255, 52, 33, 26,255,103, 71, 56,255,173,120, 97,255,178,124,101,255, 80, 54, 42,255, 49, 31, 24,255, 63, 51, 46,255, - 61, 62, 62,255, 60, 60, 60,255,144,126,128,255,222,185,189,255,217,177,178,255,209,163,156,255,197,146,131,255,186,132,110,255, -176,122, 98,255,165,114, 92,255,154,107, 86,255,145,100, 81,255,136, 94, 76,255,128, 88, 71,255,120, 83, 66,255,114, 78, 63,255, -111, 75, 60,255,109, 74, 59,255,109, 75, 59,255,112, 77, 61,255,118, 81, 65,255,129, 88, 71,255,141, 97, 78,255,158,109, 88,255, -180,127,105,255,200,150,135,255,213,170,167,255,218,180,182,255,220,183,186,255,219,182,185,255,215,173,173,255,196,147,134,255, -147,101, 82,255, 92, 62, 48,255, 86, 58, 45,255,124, 85, 68,255,167,116, 95,255,199,148,133,255,212,169,166,255,216,176,176,255, -216,175,175,255,214,172,171,255,210,165,159,255,198,146,129,255,164,114, 92,255,113, 77, 62,255, 98, 67, 52,255,141, 97, 77,255, -189,135,114,255,206,157,148,255,206,158,150,255,198,146,129,255,171,119, 97,255,128, 87, 70,255, 88, 59, 46,255,104, 71, 56,255, -146,100, 81,255,164,114, 92,255,174,121, 98,255,186,129,105,255,183,127,103,255,174,122, 98,255,157,108, 88,255,108, 74, 59,255, - 51, 33, 25,255,119, 81, 65,255,160,111, 90,255,153,107, 85,255,109, 74, 59,255, 92, 62, 49,255,133, 91, 73,255,134, 92, 74,255, -122, 83, 67,255,111, 76, 61,255,104, 71, 57,255,101, 68, 54,255, 97, 66, 52,255, 93, 62, 50,255, 86, 58, 46,255, 77, 51, 41,255, - 68, 45, 34,255, 61, 40, 31,255, 59, 38, 29,255, 63, 42, 32,255, 79, 53, 41,255,105, 72, 57,255,130, 90, 72,255,131, 90, 72,255, - 92, 62, 49,255, 53, 34, 26,255, 69, 46, 36,255,146,101, 81,255,189,132,108,255,136, 94, 76,255, 49, 32, 24,255, 57, 47, 43,255, - 62, 62, 62,255, 60, 60, 60,255,143,124,124,255,222,184,188,255,221,185,188,255,219,182,185,255,215,175,175,255,209,163,156,255, -200,150,136,255,193,138,117,255,182,128,105,255,172,120, 96,255,161,111, 90,255,150,105, 84,255,142, 98, 78,255,132, 91, 74,255, -124, 86, 68,255,118, 81, 64,255,113, 78, 62,255,111, 76, 61,255,111, 76, 60,255,114, 78, 62,255,122, 84, 67,255,131, 90, 73,255, -145,100, 80,255,166,114, 93,255,190,137,117,255,207,161,155,255,216,176,178,255,219,182,185,255,220,183,186,255,217,178,181,255, -204,156,145,255,162,112, 92,255, 99, 67, 53,255, 85, 57, 45,255,120, 83, 66,255,166,115, 94,255,200,151,138,255,215,173,172,255, -217,178,179,255,216,176,176,255,213,171,169,255,207,161,154,255,188,134,114,255,141, 97, 77,255, 97, 66, 52,255,116, 80, 63,255, -171,120, 98,255,203,153,141,255,208,161,153,255,203,153,140,255,183,128,106,255,141, 97, 79,255, 97, 66, 52,255,100, 68, 54,255, -138, 95, 76,255,160,111, 90,255,170,119, 96,255,185,129,105,255,184,129,105,255,176,122, 99,255,158,109, 88,255,108, 73, 59,255, - 51, 33, 25,255,117, 80, 64,255,161,112, 90,255,152,106, 85,255,107, 73, 57,255, 96, 66, 52,255,140, 97, 78,255,139, 96, 78,255, -125, 86, 69,255,112, 77, 61,255,106, 72, 58,255,105, 72, 57,255,104, 71, 56,255,101, 69, 54,255, 95, 64, 51,255, 86, 58, 46,255, - 75, 50, 39,255, 65, 43, 33,255, 59, 39, 30,255, 59, 39, 30,255, 69, 46, 35,255, 92, 62, 50,255,122, 84, 67,255,137, 95, 76,255, -117, 80, 65,255, 68, 44, 35,255, 51, 33, 25,255,109, 74, 59,255,180,126,103,255,180,126,102,255, 76, 51, 40,255, 54, 46, 42,255, - 62, 62, 62,255, 60, 60, 60,255,141,120,119,255,218,178,179,255,219,181,184,255,220,183,187,255,219,183,186,255,217,179,181,255, -214,173,172,255,210,165,160,255,204,156,146,255,198,145,129,255,188,135,114,255,178,125,102,255,168,117, 94,255,157,109, 88,255, -147,102, 81,255,137, 94, 76,255,128, 87, 70,255,120, 82, 66,255,115, 78, 63,255,113, 77, 61,255,113, 78, 62,255,118, 81, 65,255, -125, 86, 68,255,135, 93, 75,255,152,105, 84,255,177,124,103,255,199,150,138,255,213,171,170,255,219,181,184,255,220,183,187,255, -219,181,184,255,208,162,154,255,168,119,100,255,101, 68, 54,255, 83, 56, 44,255,118, 80, 63,255,166,115, 93,255,202,154,143,255, -216,177,177,255,218,178,181,255,216,176,176,255,213,170,168,255,203,155,143,255,171,119, 97,255,114, 78, 62,255,100, 68, 53,255, -146,101, 81,255,196,144,127,255,208,161,154,255,206,159,149,255,192,137,117,255,155,107, 87,255,108, 73, 59,255, 98, 66, 53,255, -130, 89, 71,255,156,108, 87,255,168,116, 94,255,184,128,104,255,186,130,105,255,177,123,100,255,159,110, 89,255,108, 74, 59,255, - 50, 32, 24,255,115, 78, 63,255,161,111, 90,255,153,106, 85,255,105, 71, 56,255,101, 69, 54,255,147,101, 82,255,146,100, 81,255, -128, 88, 71,255,112, 77, 62,255,106, 72, 57,255,108, 73, 59,255,110, 75, 61,255,110, 75, 60,255,106, 72, 57,255, 97, 66, 52,255, - 85, 58, 45,255, 72, 48, 37,255, 62, 40, 31,255, 59, 38, 29,255, 63, 42, 32,255, 79, 53, 42,255,110, 75, 59,255,136, 94, 75,255, -134, 93, 75,255, 92, 62, 49,255, 51, 32, 24,255, 74, 49, 39,255,158,110, 89,255,192,136,113,255,131, 91, 72,255, 55, 47, 44,255, - 62, 62, 62,255, 60, 60, 60,255,142,121,121,255,216,176,176,255,216,177,177,255,217,179,180,255,219,181,183,255,219,182,184,255, -218,180,183,255,217,178,179,255,214,174,174,255,212,169,166,255,208,162,155,255,202,153,142,255,195,143,125,255,186,131,109,255, -175,121, 97,255,163,113, 90,255,151,104, 84,255,140, 97, 78,255,130, 89, 71,255,121, 83, 66,255,116, 79, 63,255,114, 78, 62,255, -115, 79, 63,255,121, 83, 66,255,128, 89, 70,255,139, 96, 77,255,163,113, 92,255,191,140,122,255,211,166,161,255,218,179,181,255, -220,184,187,255,219,181,184,255,210,166,160,255,171,122,102,255,106, 71, 56,255, 83, 56, 44,255,118, 81, 64,255,168,118, 98,255, -207,161,153,255,218,180,182,255,217,179,180,255,216,175,176,255,211,167,163,255,194,142,126,255,143, 99, 79,255, 98, 66, 52,255, -120, 83, 66,255,180,128,107,255,207,160,152,255,207,161,154,255,200,147,131,255,169,117, 95,255,121, 83, 66,255,100, 67, 53,255, -124, 85, 68,255,151,105, 85,255,164,114, 92,255,180,126,102,255,186,130,105,255,179,125,101,255,160,111, 90,255,109, 75, 59,255, - 51, 32, 25,255,112, 76, 61,255,161,112, 90,255,153,106, 86,255,103, 70, 55,255,105, 72, 57,255,153,106, 86,255,152,105, 84,255, -132, 91, 72,255,111, 75, 60,255,103, 70, 56,255,110, 74, 60,255,116, 80, 64,255,118, 81, 65,255,117, 80, 64,255,110, 75, 60,255, - 98, 66, 53,255, 83, 55, 43,255, 68, 45, 34,255, 60, 39, 30,255, 60, 39, 30,255, 70, 46, 35,255, 95, 64, 51,255,128, 88, 70,255, -143, 98, 79,255,117, 80, 64,255, 63, 41, 32,255, 54, 35, 26,255,126, 86, 69,255,189,134,113,255,172,121, 98,255, 76, 61, 54,255, - 61, 61, 62,255, 60, 60, 60,255,140,121,122,255,219,181,184,255,218,180,183,255,218,180,181,255,218,180,181,255,218,180,182,255, -218,180,183,255,217,180,182,255,218,179,181,255,217,177,179,255,216,176,176,255,214,173,172,255,211,168,165,255,206,161,154,255, -201,150,136,255,192,137,117,255,180,126,103,255,167,116, 93,255,154,107, 86,255,142, 98, 79,255,131, 90, 73,255,122, 84, 68,255, -118, 81, 65,255,116, 79, 63,255,118, 81, 65,255,123, 84, 68,255,130, 90, 71,255,151,104, 83,255,181,128,108,255,206,159,152,255, -217,178,178,255,220,183,186,255,219,182,186,255,212,168,164,255,172,123,104,255,102, 68, 54,255, 85, 57, 45,255,121, 82, 65,255, -175,124,104,255,212,169,166,255,219,181,183,255,217,179,179,255,215,174,173,255,207,161,152,255,174,122,102,255,115, 79, 63,255, -102, 70, 55,255,156,108, 86,255,202,152,141,255,209,163,157,255,205,156,146,255,182,127,104,255,135, 93, 74,255,103, 70, 56,255, -120, 81, 65,255,146,101, 82,255,160,112, 90,255,178,123,100,255,187,130,106,255,181,126,102,255,163,112, 91,255,111, 75, 60,255, - 51, 32, 24,255,109, 74, 59,255,161,111, 90,255,152,106, 84,255,102, 69, 55,255,108, 75, 59,255,158,110, 89,255,157,109, 88,255, -134, 93, 74,255,107, 73, 58,255, 98, 66, 52,255,109, 74, 59,255,120, 82, 66,255,126, 86, 69,255,127, 87, 70,255,123, 85, 68,255, -113, 77, 61,255, 97, 66, 52,255, 78, 52, 41,255, 64, 42, 32,255, 60, 39, 30,255, 63, 42, 33,255, 83, 55, 44,255,117, 80, 64,255, -143, 99, 80,255,136, 95, 75,255, 85, 57, 45,255, 48, 31, 23,255, 92, 62, 48,255,175,123,101,255,190,137,117,255,106, 82, 72,255, - 60, 61, 61,255, 60, 60, 60,255,137,116,115,255,206,165,163,255,207,168,165,255,213,174,173,255,217,178,180,255,218,180,183,255, -218,180,183,255,218,180,182,255,217,179,181,255,218,179,181,255,218,179,181,255,217,178,180,255,217,178,179,255,216,176,176,255, -214,173,172,255,210,166,162,255,204,156,146,255,195,143,126,255,184,130,108,255,170,118, 95,255,155,107, 87,255,141, 98, 79,255, -131, 90, 72,255,123, 84, 67,255,118, 81, 64,255,117, 80, 64,255,120, 82, 66,255,123, 85, 68,255,140, 96, 77,255,173,122,100,255, -203,155,143,255,217,177,178,255,220,183,186,255,219,182,185,255,210,166,161,255,165,117, 99,255, 96, 65, 51,255, 86, 58, 45,255, -124, 85, 67,255,182,132,113,255,215,174,173,255,218,180,182,255,217,177,178,255,213,171,169,255,199,147,132,255,144, 99, 80,255, - 99, 67, 53,255,129, 88, 70,255,190,137,118,255,209,163,157,255,208,162,154,255,193,139,119,255,151,104, 83,255,111, 76, 60,255, -116, 80, 64,255,141, 98, 78,255,157,109, 88,255,174,121, 97,255,187,130,105,255,182,127,103,255,164,114, 92,255,113, 77, 62,255, - 50, 32, 24,255,105, 71, 56,255,161,111, 90,255,152,105, 85,255,100, 68, 54,255,113, 77, 61,255,164,114, 92,255,162,112, 91,255, -137, 94, 76,255,101, 69, 54,255, 91, 62, 49,255,109, 74, 59,255,122, 84, 67,255,131, 89, 72,255,135, 93, 75,255,135, 93, 74,255, -127, 88, 70,255,112, 77, 61,255, 92, 62, 49,255, 72, 48, 37,255, 62, 41, 31,255, 61, 40, 30,255, 72, 48, 37,255,103, 70, 55,255, -137, 95, 76,255,147,102, 82,255,112, 76, 61,255, 56, 36, 28,255, 64, 41, 32,255,152,105, 85,255,196,142,123,255,124, 97, 86,255, - 60, 61, 61,255, 60, 60, 60,255,144,126,128,255,222,185,189,255,218,180,183,255,214,174,174,255,211,170,169,255,212,172,171,255, -215,176,177,255,217,179,181,255,218,180,182,255,218,179,182,255,217,179,182,255,218,179,181,255,218,179,181,255,218,179,181,255, -217,179,182,255,217,178,180,255,215,176,176,255,212,170,168,255,206,160,153,255,198,147,132,255,186,131,109,255,171,118, 95,255, -155,107, 87,255,141, 97, 78,255,131, 89, 72,255,123, 84, 67,255,118, 81, 65,255,119, 81, 65,255,119, 82, 65,255,131, 90, 73,255, -166,116, 94,255,201,151,137,255,217,177,178,255,220,183,186,255,219,181,184,255,208,164,157,255,158,111, 91,255, 93, 62, 49,255, - 88, 59, 46,255,133, 91, 72,255,192,141,126,255,217,178,179,255,217,178,179,255,215,175,175,255,210,165,159,255,178,125,105,255, -113, 78, 61,255,107, 73, 57,255,167,117, 95,255,207,159,150,255,209,164,158,255,201,151,137,255,166,115, 92,255,121, 83, 66,255, -115, 79, 63,255,136, 94, 76,255,153,106, 85,255,170,118, 96,255,185,129,105,255,184,128,103,255,166,116, 94,255,115, 79, 63,255, - 50, 33, 24,255,101, 69, 55,255,160,111, 90,255,151,104, 85,255, 98, 67, 53,255,115, 79, 63,255,169,117, 95,255,167,116, 94,255, -139, 95, 77,255, 92, 62, 50,255, 85, 57, 45,255,109, 74, 59,255,122, 83, 67,255,130, 90, 72,255,137, 94, 76,255,142, 98, 79,255, -140, 96, 77,255,128, 88, 71,255,108, 74, 60,255, 85, 57, 44,255, 68, 45, 34,255, 62, 40, 31,255, 66, 43, 33,255, 88, 59, 47,255, -127, 87, 70,255,151,104, 84,255,134, 93, 75,255, 77, 51, 39,255, 48, 31, 23,255,121, 82, 65,255,192,137,117,255,132,105, 96,255, - 60, 61, 61,255, 60, 61, 61,255,124, 99, 92,255,204,160,154,255,217,178,179,255,220,184,188,255,220,183,188,255,218,180,183,255, -215,177,178,255,216,177,179,255,217,178,180,255,217,180,182,255,218,180,183,255,218,181,183,255,218,181,183,255,218,181,183,255, -218,181,183,255,219,181,184,255,219,181,184,255,218,180,183,255,216,177,178,255,213,173,170,255,208,162,155,255,199,146,131,255, -185,130,107,255,168,117, 95,255,152,106, 85,255,139, 96, 77,255,129, 88, 71,255,121, 83, 66,255,119, 81, 65,255,116, 80, 64,255, -127, 87, 70,255,162,113, 92,255,200,151,139,255,217,177,178,255,220,183,187,255,219,181,183,255,206,159,150,255,147,102, 82,255, - 85, 57, 45,255, 93, 63, 50,255,144, 99, 81,255,202,156,147,255,217,177,179,255,215,175,175,255,215,173,172,255,201,151,139,255, -144, 99, 79,255,100, 68, 54,255,138, 95, 77,255,199,147,132,255,209,164,159,255,206,159,150,255,180,127,106,255,133, 92, 74,255, -117, 80, 64,255,132, 91, 73,255,150,103, 84,255,166,115, 93,255,184,127,104,255,185,128,104,255,169,118, 95,255,118, 81, 65,255, - 52, 33, 25,255, 97, 65, 52,255,159,110, 89,255,150,104, 84,255, 97, 66, 52,255,119, 81, 65,255,173,121, 98,255,172,120, 96,255, -140, 97, 77,255, 82, 54, 42,255, 82, 55, 43,255,109, 74, 60,255,121, 83, 66,255,128, 88, 70,255,135, 94, 75,255,143, 99, 80,255, -147,102, 82,255,142, 98, 79,255,126, 86, 69,255,101, 68, 54,255, 77, 52, 40,255, 66, 44, 34,255, 62, 41, 32,255, 76, 51, 40,255, -113, 77, 61,255,148,102, 82,255,150,104, 84,255,103, 71, 56,255, 49, 31, 24,255, 86, 57, 45,255,180,126,104,255,134,107,100,255, - 60, 60, 61,255, 61, 61, 62,255, 82, 64, 57,255,120, 81, 64,255,160,115, 99,255,196,151,141,255,216,175,173,255,221,184,187,255, -221,184,189,255,220,183,187,255,219,182,186,255,219,182,185,255,219,181,185,255,219,181,185,255,219,182,185,255,219,181,184,255, -218,181,184,255,218,181,184,255,219,181,184,255,219,181,184,255,219,181,185,255,218,181,183,255,217,178,179,255,213,172,171,255, -207,161,153,255,196,144,128,255,182,128,106,255,165,114, 92,255,149,103, 83,255,135, 94, 75,255,125, 85, 69,255,119, 81, 65,255, -113, 77, 61,255,124, 84, 68,255,162,113, 92,255,202,155,144,255,218,180,181,255,220,183,186,255,218,180,181,255,198,150,139,255, -130, 89, 72,255, 83, 55, 44,255,100, 67, 53,255,160,113, 95,255,210,167,163,255,216,175,175,255,214,173,171,255,211,167,163,255, -176,126,107,255,109, 74, 59,255,114, 78, 62,255,180,129,111,255,208,162,155,255,208,162,156,255,193,140,123,255,148,102, 82,255, -121, 83, 66,255,130, 89, 72,255,146,102, 81,255,162,112, 91,255,181,126,102,255,185,129,105,255,171,119, 96,255,122, 84, 67,255, - 52, 33, 25,255, 93, 63, 49,255,158,110, 89,255,150,104, 84,255, 95, 64, 51,255,122, 83, 66,255,177,123,100,255,177,123,100,255, -141, 97, 79,255, 71, 48, 37,255, 82, 55, 43,255,110, 75, 60,255,119, 82, 65,255,123, 84, 68,255,131, 90, 73,255,141, 98, 79,255, -149,103, 83,255,151,104, 84,255,141, 97, 78,255,119, 81, 65,255, 91, 61, 48,255, 72, 48, 37,255, 63, 41, 32,255, 68, 45, 34,255, - 98, 66, 52,255,140, 96, 77,255,158,109, 88,255,129, 89, 71,255, 63, 41, 32,255, 57, 37, 28,255,157,109, 89,255,133,105, 97,255, - 60, 61, 61,255, 61, 61, 61,255,101, 78, 68,255,120, 82, 64,255,106, 72, 57,255,117, 80, 65,255,154,109, 91,255,195,146,133,255, -215,173,170,255,219,182,184,255,220,184,188,255,221,184,189,255,220,184,188,255,220,183,188,255,219,183,187,255,219,183,186,255, -219,182,186,255,219,182,186,255,218,181,184,255,218,182,184,255,218,182,185,255,218,182,185,255,219,181,185,255,218,180,183,255, -217,177,178,255,212,170,167,255,205,157,148,255,193,140,122,255,177,123, 99,255,159,110, 89,255,142, 99, 79,255,128, 88, 71,255, -118, 81, 65,255,111, 76, 60,255,123, 84, 67,255,165,115, 94,255,206,160,151,255,218,181,183,255,220,182,185,255,216,176,175,255, -188,139,124,255,115, 78, 62,255, 81, 54, 42,255,113, 76, 61,255,180,131,113,255,214,174,172,255,212,171,168,255,213,171,169,255, -199,150,137,255,134, 92, 75,255,101, 69, 54,255,154,107, 88,255,205,157,147,255,209,163,158,255,201,151,138,255,164,115, 93,255, -129, 89, 71,255,129, 88, 71,255,143, 99, 80,255,157,110, 89,255,177,123,100,255,185,130,105,255,173,121, 98,255,126, 86, 69,255, - 54, 34, 26,255, 89, 60, 47,255,158,109, 88,255,150,104, 84,255, 94, 64, 50,255,124, 85, 68,255,181,126,102,255,181,126,103,255, -141, 98, 78,255, 63, 42, 32,255, 85, 56, 44,255,112, 76, 61,255,117, 80, 64,255,120, 81, 65,255,125, 86, 69,255,136, 94, 76,255, -148,103, 82,255,156,108, 87,255,152,104, 85,255,135, 93, 75,255,107, 73, 58,255, 82, 55, 43,255, 67, 44, 34,255, 64, 42, 33,255, - 84, 56, 44,255,127, 87, 70,255,158,110, 88,255,148,103, 82,255, 85, 57, 45,255, 45, 28, 21,255,123, 85, 68,255,130,101, 90,255, - 60, 61, 61,255, 60, 60, 60,255,140,117,116,255,199,151,140,255,168,121,103,255,137, 94, 77,255,115, 79, 63,255,123, 83, 66,255, -158,110, 91,255,193,145,131,255,210,167,163,255,217,177,178,255,219,181,184,255,220,183,186,255,221,183,187,255,220,183,188,255, -219,184,188,255,219,183,187,255,220,183,186,255,220,182,185,255,220,182,185,255,219,182,184,255,219,181,185,255,220,182,185,255, -219,182,185,255,218,179,182,255,215,175,175,255,210,166,161,255,201,151,138,255,186,132,110,255,167,116, 94,255,149,103, 83,255, -131, 90, 73,255,117, 80, 64,255,108, 74, 59,255,124, 85, 68,255,173,122,101,255,210,166,162,255,218,181,183,255,219,180,183,255, -214,171,167,255,171,122,102,255, 96, 64, 51,255, 86, 58, 46,255,131, 90, 72,255,200,152,140,255,211,169,167,255,210,167,164,255, -210,165,159,255,166,118,100,255,105, 72, 57,255,127, 87, 69,255,195,145,133,255,210,164,159,255,207,159,150,255,178,126,105,255, -138, 95, 76,255,130, 89, 72,255,141, 98, 78,255,154,107, 86,255,173,120, 97,255,185,129,104,255,175,122, 98,255,130, 90, 72,255, - 55, 36, 27,255, 85, 57, 44,255,157,109, 88,255,149,103, 83,255, 92, 62, 49,255,126, 87, 69,255,184,129,104,255,185,128,104,255, -141, 97, 78,255, 58, 38, 28,255, 88, 59, 47,255,113, 77, 61,255,116, 79, 63,255,115, 79, 63,255,119, 81, 65,255,130, 89, 72,255, -144,100, 80,255,155,107, 87,255,158,110, 89,255,149,102, 83,255,125, 85, 69,255, 95, 65, 51,255, 74, 49, 38,255, 63, 42, 31,255, - 73, 49, 38,255,111, 76, 60,255,155,107, 86,255,161,112, 90,255,112, 76, 61,255, 48, 31, 23,255, 87, 58, 46,255,120, 93, 82,255, - 60, 61, 61,255, 60, 60, 60,255,144,124,126,255,224,186,190,255,221,183,186,255,211,168,164,255,189,144,133,255,159,114, 98,255, -133, 91, 72,255,131, 89, 69,255,155,108, 89,255,185,136,121,255,206,160,151,255,215,173,172,255,218,179,181,255,219,181,185,255, -219,183,186,255,220,183,186,255,220,183,187,255,220,183,186,255,220,182,186,255,218,181,184,255,219,182,184,255,219,182,185,255, -219,182,185,255,219,181,185,255,218,181,183,255,217,178,179,255,213,171,169,255,206,159,150,255,193,140,121,255,175,122, 99,255, -154,106, 86,255,134, 92, 74,255,116, 79, 63,255,108, 73, 59,255,131, 90, 72,255,184,134,117,255,215,173,172,255,218,181,182,255, -218,179,181,255,207,161,153,255,148,102, 83,255, 87, 58, 46,255, 97, 66, 52,255,160,114, 96,255,209,166,160,255,207,161,155,255, -211,167,163,255,193,143,128,255,123, 84, 67,255,109, 74, 59,255,177,127,109,255,210,163,158,255,209,164,157,255,192,139,119,255, -151,104, 84,255,134, 92, 74,255,140, 96, 77,255,152,105, 85,255,169,117, 96,255,184,128,104,255,177,123, 99,255,136, 93, 75,255, - 57, 37, 28,255, 82, 54, 43,255,156,108, 87,255,149,103, 83,255, 90, 61, 48,255,129, 89, 71,255,188,131,106,255,188,131,107,255, -140, 96, 77,255, 56, 36, 27,255, 93, 63, 50,255,115, 78, 62,255,115, 78, 63,255,111, 77, 61,255,113, 77, 62,255,122, 83, 67,255, -138, 96, 77,255,154,106, 86,255,161,112, 91,255,158,109, 88,255,141, 97, 78,255,112, 76, 61,255, 85, 57, 45,255, 67, 44, 34,255, - 66, 44, 34,255, 95, 64, 51,255,145,100, 81,255,169,117, 94,255,138, 95, 77,255, 62, 41, 32,255, 63, 41, 31,255,105, 82, 71,255, - 61, 61, 61,255, 60, 61, 61,255,114, 91, 82,255,187,139,126,255,209,164,158,255,221,182,185,255,221,184,188,255,217,178,180,255, -206,163,159,255,181,133,118,255,149,104, 83,255,136, 93, 73,255,153,106, 87,255,182,130,111,255,203,155,143,255,213,170,167,255, -216,176,176,255,218,179,181,255,219,181,183,255,219,182,185,255,219,182,185,255,218,182,185,255,218,181,183,255,218,181,184,255, -218,181,184,255,219,182,184,255,219,182,184,255,218,180,183,255,217,178,180,255,214,174,172,255,208,163,157,255,197,147,131,255, -180,126,102,255,157,109, 88,255,135, 93, 75,255,114, 78, 62,255,109, 75, 59,255,145,100, 79,255,199,151,138,255,217,177,178,255, -218,179,180,255,216,176,176,255,193,145,133,255,119, 81, 64,255, 86, 57, 45,255,122, 83, 66,255,194,147,135,255,207,162,156,255, -207,161,153,255,207,159,149,255,151,104, 84,255,103, 70, 55,255,151,105, 85,255,206,160,152,255,210,164,160,255,201,151,137,255, -166,114, 92,255,139, 95, 77,255,140, 96, 78,255,150,103, 83,255,165,114, 93,255,182,127,102,255,178,124,100,255,140, 97, 78,255, - 60, 39, 30,255, 78, 52, 41,255,156,108, 87,255,148,102, 82,255, 88, 59, 47,255,132, 91, 72,255,190,134,111,255,190,134,110,255, -139, 95, 77,255, 57, 38, 30,255, 98, 66, 52,255,117, 80, 64,255,115, 79, 64,255,109, 74, 59,255,108, 73, 59,255,115, 79, 63,255, -131, 90, 73,255,149,103, 83,255,161,112, 91,255,163,113, 91,255,153,106, 86,255,129, 88, 71,255, 98, 67, 53,255, 73, 48, 38,255, - 64, 42, 32,255, 80, 53, 42,255,130, 89, 72,255,169,118, 96,255,160,111, 90,255, 85, 57, 45,255, 53, 33, 26,255, 85, 68, 60,255, - 61, 61, 62,255, 61, 62, 62,255, 63, 51, 46,255, 71, 46, 35,255, 95, 63, 49,255,137, 96, 81,255,186,143,134,255,210,170,169,255, -219,182,185,255,221,185,189,255,215,175,174,255,193,146,134,255,161,115, 96,255,146,101, 82,255,158,109, 87,255,182,130,109,255, -202,153,141,255,211,167,163,255,215,174,174,255,216,177,178,255,218,180,181,255,218,180,183,255,218,180,183,255,218,180,183,255, -218,180,182,255,218,180,182,255,218,180,183,255,219,181,183,255,218,180,182,255,217,178,180,255,215,175,174,255,210,165,161,255, -199,149,135,255,183,128,105,255,159,111, 89,255,134, 91, 74,255,112, 76, 61,255,117, 80, 64,255,168,118, 97,255,210,165,159,255, -217,178,178,255,217,177,178,255,211,167,163,255,162,115, 97,255, 94, 64, 50,255, 98, 67, 53,255,161,114, 94,255,208,164,159,255, -202,154,143,255,209,164,158,255,179,127,108,255,112, 76, 60,255,128, 87, 69,255,197,148,133,255,210,166,160,255,207,160,150,255, -179,125,103,255,147,101, 81,255,141, 97, 78,255,148,102, 83,255,162,112, 91,255,179,124,100,255,179,125,102,255,145, 99, 80,255, - 62, 40, 32,255, 75, 49, 38,255,155,107, 86,255,147,102, 82,255, 86, 58, 46,255,135, 93, 74,255,192,137,116,255,192,137,115,255, -138, 96, 77,255, 62, 43, 35,255,103, 70, 56,255,119, 82, 65,255,115, 79, 64,255,108, 73, 58,255,103, 71, 56,255,109, 74, 59,255, -123, 85, 67,255,143, 99, 79,255,159,110, 89,255,166,116, 93,255,161,112, 91,255,143, 99, 80,255,113, 77, 62,255, 83, 56, 44,255, - 66, 43, 33,255, 69, 45, 36,255,113, 76, 61,255,165,115, 93,255,174,121, 98,255,116, 79, 63,255, 51, 33, 24,255, 69, 56, 51,255, - 61, 62, 62,255, 61, 62, 62,255, 63, 52, 47,255, 59, 39, 29,255, 53, 34, 26,255, 51, 32, 23,255, 65, 41, 30,255,103, 70, 58,255, -152,112,100,255,198,155,148,255,221,182,183,255,223,187,192,255,218,179,180,255,202,158,151,255,178,130,116,255,160,111, 89,255, -163,112, 89,255,183,131,111,255,201,152,139,255,210,166,161,255,214,173,172,255,216,176,177,255,217,178,179,255,217,178,180,255, -218,179,181,255,218,179,181,255,217,179,180,255,218,180,182,255,218,180,181,255,218,179,181,255,217,178,179,255,215,174,174,255, -209,165,161,255,201,150,136,255,182,128,106,255,157,109, 88,255,129, 88, 71,255,110, 75, 59,255,135, 92, 74,255,193,142,127,255, -215,174,173,255,216,175,175,255,214,173,173,255,197,147,134,255,127, 88, 70,255, 91, 62, 49,255,126, 86, 67,255,201,152,141,255, -201,153,142,255,206,159,151,255,197,147,133,255,131, 89, 71,255,112, 77, 60,255,180,129,110,255,210,165,159,255,209,163,158,255, -192,138,119,255,157,109, 87,255,144, 99, 80,255,148,102, 82,255,159,110, 89,255,176,122, 99,255,180,125,101,255,149,103, 83,255, - 66, 43, 33,255, 72, 48, 37,255,154,107, 86,255,146,100, 81,255, 85, 56, 44,255,138, 95, 76,255,194,140,120,255,194,139,119,255, -138, 98, 80,255, 69, 51, 44,255,108, 73, 58,255,122, 83, 66,255,116, 79, 64,255,106, 73, 58,255,101, 69, 54,255,103, 70, 56,255, -116, 79, 63,255,136, 94, 75,255,155,107, 87,255,165,115, 93,255,167,116, 93,255,155,107, 87,255,129, 89, 71,255, 96, 65, 51,255, - 71, 47, 36,255, 63, 41, 32,255, 93, 62, 49,255,155,108, 87,255,182,127,103,255,147,101, 82,255, 62, 41, 31,255, 63, 54, 51,255, - 61, 62, 62,255, 61, 62, 62,255, 70, 56, 51,255, 72, 47, 37,255, 64, 42, 32,255, 57, 37, 29,255, 53, 34, 26,255, 49, 31, 23,255, - 53, 34, 25,255, 77, 52, 40,255,133, 95, 80,255,196,150,140,255,218,178,181,255,221,185,190,255,219,182,185,255,211,169,166,255, -188,139,125,255,164,113, 92,255,167,117, 94,255,189,135,115,255,204,156,144,255,211,167,162,255,213,172,170,255,215,175,175,255, -217,176,177,255,217,177,178,255,217,178,179,255,217,178,179,255,217,178,179,255,218,179,180,255,217,178,179,255,216,177,177,255, -214,173,171,255,209,164,159,255,199,147,133,255,179,125,102,255,151,104, 84,255,121, 83, 67,255,116, 79, 63,255,166,117, 97,255, -209,164,158,255,215,174,172,255,215,173,172,255,211,166,161,255,166,117, 96,255, 99, 67, 53,255,107, 73, 58,255,179,127,108,255, -205,157,147,255,201,151,139,255,205,158,148,255,153,106, 86,255,107, 73, 58,255,158,110, 90,255,208,161,152,255,210,165,160,255, -201,150,137,255,168,116, 93,255,147,102, 82,255,147,102, 83,255,157,109, 88,255,172,120, 96,255,179,124,101,255,153,106, 86,255, - 69, 46, 36,255, 70, 47, 37,255,153,107, 85,255,145,100, 81,255, 81, 54, 43,255,142, 98, 79,255,196,143,125,255,196,141,121,255, -140,102, 85,255, 76, 58, 51,255,113, 77, 61,255,124, 85, 69,255,118, 81, 65,255,107, 73, 58,255, 99, 67, 53,255, 99, 68, 54,255, -110, 74, 59,255,128, 88, 71,255,148,103, 83,255,163,114, 92,255,169,118, 95,255,162,114, 91,255,143, 99, 80,255,111, 76, 61,255, - 79, 53, 41,255, 62, 41, 31,255, 75, 50, 38,255,139, 96, 77,255,185,129,104,255,170,119, 96,255, 87, 58, 46,255, 62, 54, 51,255, - 61, 62, 62,255, 61, 61, 62,255, 86, 68, 60,255,100, 68, 54,255, 86, 58, 45,255, 74, 50, 39,255, 64, 42, 32,255, 57, 37, 28,255, - 52, 33, 25,255, 47, 29, 22,255, 46, 29, 21,255, 70, 45, 34,255,132, 92, 75,255,187,144,134,255,213,174,174,255,221,184,188,255, -222,185,189,255,211,168,165,255,186,135,119,255,169,118, 97,255,179,124,101,255,195,143,125,255,205,158,149,255,211,167,163,255, -213,171,169,255,215,173,172,255,215,175,175,255,215,176,176,255,216,176,177,255,216,177,177,255,216,177,178,255,216,177,177,255, -215,175,174,255,212,170,168,255,207,161,154,255,196,142,124,255,172,120, 97,255,140, 97, 77,255,115, 79, 63,255,140, 97, 78,255, -198,149,136,255,213,171,167,255,213,171,169,255,213,171,168,255,191,140,123,255,115, 78, 62,255,100, 68, 54,255,153,105, 84,255, -203,154,141,255,197,145,128,255,207,160,153,255,173,124,105,255,113, 77, 61,255,138, 95, 76,255,202,152,139,255,210,165,159,255, -205,158,149,255,180,126,104,255,154,107, 86,255,149,103, 83,255,155,108, 87,255,169,118, 95,255,178,124,100,255,156,108, 88,255, - 74, 49, 38,255, 69, 46, 35,255,152,105, 85,255,144, 99, 79,255, 79, 53, 41,255,146,101, 82,255,198,145,130,255,196,143,125,255, -141,104, 89,255, 83, 63, 55,255,118, 80, 63,255,127, 88, 70,255,119, 82, 65,255,107, 73, 58,255, 98, 66, 53,255, 96, 65, 51,255, -103, 71, 56,255,120, 82, 66,255,142, 98, 79,255,159,111, 90,255,169,117, 95,255,168,117, 95,255,154,107, 86,255,127, 87, 70,255, - 91, 62, 49,255, 65, 43, 33,255, 61, 40, 31,255,119, 80, 65,255,182,128,104,255,186,130,107,255,118, 82, 65,255, 63, 55, 52,255, - 61, 62, 62,255, 60, 61, 61,255,110, 85, 75,255,149,103, 83,255,136, 94, 75,255,117, 80, 64,255, 96, 65, 52,255, 78, 51, 40,255, - 65, 43, 33,255, 58, 37, 29,255, 51, 33, 25,255, 45, 28, 21,255, 45, 28, 20,255, 68, 44, 33,255,120, 85, 71,255,180,136,126,255, -215,173,169,255,223,186,192,255,221,184,187,255,209,166,161,255,186,137,121,255,174,120, 96,255,185,130,108,255,200,148,133,255, -207,160,153,255,211,167,163,255,213,170,168,255,214,172,171,255,215,174,173,255,215,174,174,255,215,175,175,255,216,175,175,255, -215,175,174,255,214,173,171,255,210,167,163,255,204,156,146,255,189,134,113,255,160,111, 89,255,125, 86, 69,255,126, 87, 69,255, -182,132,114,255,211,167,162,255,212,169,167,255,212,170,167,255,205,157,148,255,142, 97, 77,255,100, 68, 54,255,135, 92, 74,255, -194,143,127,255,195,142,123,255,205,157,148,255,189,139,124,255,124, 85, 68,255,124, 85, 68,255,191,141,125,255,209,164,157,255, -208,162,155,255,189,136,117,255,162,112, 91,255,151,105, 85,255,155,108, 87,255,167,116, 94,255,176,123, 99,255,160,111, 89,255, - 78, 52, 41,255, 68, 46, 36,255,152,106, 85,255,142, 98, 78,255, 77, 51, 40,255,150,105, 86,255,199,148,133,255,197,144,127,255, -143,109, 95,255, 87, 66, 57,255,123, 84, 67,255,130, 90, 72,255,121, 83, 66,255,107, 73, 59,255, 97, 66, 52,255, 94, 64, 50,255, - 99, 68, 54,255,113, 78, 62,255,133, 92, 74,255,154,106, 86,255,167,116, 94,255,170,119, 95,255,163,113, 92,255,141, 97, 78,255, -105, 71, 57,255, 72, 47, 37,255, 55, 35, 27,255, 95, 64, 50,255,175,123,101,255,195,140,120,255,149,103, 83,255, 68, 57, 53,255, - 61, 62, 62,255, 60, 61, 61,255,123, 94, 82,255,181,126,102,255,178,124,101,255,170,118, 96,255,152,105, 85,255,126, 86, 69,255, - 99, 67, 53,255, 78, 52, 41,255, 66, 43, 33,255, 57, 37, 29,255, 51, 33, 25,255, 46, 29, 21,255, 45, 28, 21,255, 62, 40, 30,255, -118, 81, 66,255,185,139,125,255,217,177,179,255,221,185,190,255,219,182,185,255,206,163,157,255,182,129,108,255,179,125,101,255, -194,139,119,255,203,154,142,255,208,162,156,255,211,167,163,255,212,171,168,255,214,172,170,255,214,173,171,255,215,174,172,255, -215,173,173,255,213,172,171,255,212,169,167,255,208,162,156,255,199,147,133,255,177,123,100,255,141, 98, 78,255,122, 83, 67,255, -167,117, 97,255,207,162,155,255,212,168,164,255,212,168,164,255,210,165,159,255,166,116, 97,255,104, 71, 56,255,124, 85, 68,255, -182,131,111,255,196,141,122,255,202,151,139,255,198,150,137,255,138, 95, 77,255,117, 80, 64,255,177,128,110,255,208,162,155,255, -209,163,157,255,197,145,129,255,171,119, 96,255,155,108, 87,255,156,108, 87,255,164,114, 93,255,174,121, 98,255,162,112, 91,255, - 82, 55, 43,255, 68, 46, 37,255,151,105, 84,255,140, 96, 77,255, 74, 49, 38,255,155,109, 91,255,201,151,136,255,197,144,129,255, -141,108, 95,255, 87, 64, 53,255,128, 87, 70,255,132, 91, 73,255,123, 85, 68,255,108, 74, 59,255, 97, 67, 52,255, 94, 64, 51,255, - 96, 65, 52,255,107, 73, 59,255,125, 86, 69,255,147,102, 82,255,162,113, 91,255,171,119, 97,255,168,117, 95,255,153,105, 86,255, -120, 83, 66,255, 81, 54, 43,255, 54, 35, 27,255, 75, 49, 39,255,166,117, 96,255,198,148,133,255,171,120, 99,255, 80, 63, 55,255, - 61, 61, 62,255, 60, 61, 61,255,125, 96, 83,255,187,131,106,255,191,133,108,255,193,136,112,255,191,135,112,255,180,126,104,255, -155,108, 87,255,124, 86, 68,255, 98, 66, 52,255, 79, 53, 41,255, 67, 44, 34,255, 58, 38, 29,255, 51, 33, 25,255, 44, 28, 20,255, - 40, 25, 18,255, 64, 41, 31,255,132, 92, 76,255,195,151,143,255,218,178,180,255,221,186,191,255,216,177,179,255,195,147,134,255, -182,128,105,255,189,133,109,255,199,147,132,255,205,158,149,255,209,164,158,255,211,167,163,255,212,170,167,255,213,171,169,255, -213,172,170,255,213,171,169,255,212,170,167,255,209,166,161,255,204,156,146,255,190,135,115,255,157,109, 88,255,126, 86, 69,255, -153,106, 85,255,202,154,144,255,211,167,162,255,210,166,162,255,211,166,162,255,184,134,118,255,114, 78, 62,255,116, 79, 64,255, -172,122,102,255,196,142,124,255,198,145,128,255,204,155,145,255,154,107, 88,255,115, 79, 63,255,164,117, 98,255,207,159,150,255, -209,163,157,255,202,152,140,255,178,125,102,255,161,112, 90,255,157,109, 88,255,163,114, 92,255,172,120, 97,255,163,113, 91,255, - 87, 58, 45,255, 70, 48, 40,255,152,104, 84,255,137, 95, 76,255, 72, 48, 37,255,161,114, 96,255,202,152,140,255,197,145,129,255, -139,109, 97,255, 91, 63, 51,255,133, 91, 74,255,135, 93, 75,255,124, 86, 69,255,109, 74, 60,255, 98, 67, 53,255, 94, 63, 50,255, - 94, 64, 51,255,102, 70, 55,255,119, 81, 65,255,140, 96, 78,255,158,109, 88,255,169,117, 95,255,172,120, 97,255,162,114, 91,255, -136, 94, 75,255, 94, 64, 50,255, 58, 37, 29,255, 61, 40, 30,255,156,109, 90,255,201,153,141,255,188,136,118,255, 98, 76, 65,255, - 61, 61, 61,255, 60, 61, 61,255,122, 94, 82,255,183,128,103,255,188,131,107,255,193,137,115,255,197,143,125,255,198,145,128,255, -195,141,122,255,181,127,106,255,154,105, 85,255,121, 83, 66,255, 96, 65, 51,255, 79, 53, 41,255, 68, 45, 35,255, 59, 38, 29,255, - 50, 32, 24,255, 41, 25, 19,255, 42, 26, 19,255, 78, 52, 40,255,152,110, 96,255,207,161,154,255,221,184,188,255,221,185,190,255, -209,168,165,255,192,141,124,255,186,130,105,255,195,141,122,255,203,153,141,255,207,160,153,255,210,165,160,255,211,168,164,255, -212,169,166,255,213,170,167,255,212,169,166,255,211,167,163,255,206,160,153,255,198,145,128,255,172,120, 97,255,134, 93, 75,255, -145, 99, 79,255,197,146,131,255,210,166,161,255,210,165,160,255,210,166,161,255,196,148,136,255,128, 88, 70,255,112, 76, 61,255, -160,112, 93,255,197,143,127,255,194,139,119,255,205,157,146,255,170,120,101,255,117, 80, 64,255,152,106, 87,255,203,155,145,255, -209,164,157,255,205,157,148,255,187,131,110,255,166,115, 94,255,159,111, 90,255,163,114, 92,255,170,118, 96,255,164,114, 91,255, - 92, 63, 50,255, 74, 55, 48,255,152,105, 84,255,133, 92, 73,255, 71, 47, 36,255,168,120,102,255,203,154,142,255,196,145,130,255, -136,109, 99,255, 99, 67, 54,255,137, 94, 76,255,137, 95, 76,255,127, 86, 69,255,111, 76, 60,255,100, 68, 53,255, 95, 64, 51,255, - 93, 63, 50,255, 98, 67, 53,255,112, 76, 61,255,132, 90, 73,255,151,104, 84,255,166,116, 93,255,174,121, 98,255,170,119, 96,255, -149,103, 83,255,108, 74, 59,255, 64, 42, 32,255, 55, 35, 27,255,150,104, 86,255,202,155,144,255,197,147,134,255,112, 86, 75,255, - 60, 61, 61,255, 60, 61, 61,255,120, 93, 81,255,176,123,100,255,182,127,102,255,189,132,107,255,193,138,117,255,197,144,127,255, -200,148,134,255,200,150,136,255,194,143,125,255,176,124,101,255,147,101, 81,255,117, 80, 64,255, 95, 64, 51,255, 81, 54, 43,255, - 68, 45, 35,255, 58, 36, 28,255, 48, 31, 23,255, 41, 25, 18,255, 46, 29, 21,255,100, 68, 55,255,179,132,118,255,216,176,176,255, -221,184,188,255,219,182,185,255,204,158,149,255,188,133,108,255,193,138,117,255,201,151,137,255,206,159,150,255,209,163,157,255, -211,166,161,255,211,168,164,255,211,168,164,255,211,167,163,255,208,163,156,255,202,151,139,255,183,128,106,255,145,100, 81,255, -141, 96, 77,255,191,139,122,255,210,165,159,255,210,164,159,255,210,165,159,255,204,156,147,255,146,101, 83,255,111, 75, 60,255, -150,104, 85,255,195,143,127,255,193,137,114,255,205,156,146,255,181,129,110,255,122, 83, 67,255,142, 98, 79,255,200,151,138,255, -209,163,157,255,208,161,153,255,194,139,119,255,172,120, 97,255,163,113, 91,255,164,114, 92,255,169,118, 96,255,164,114, 92,255, - 94, 63, 50,255, 80, 63, 57,255,153,105, 84,255,129, 88, 71,255, 70, 46, 35,255,175,127,109,255,204,155,145,255,194,143,128,255, -132,108, 98,255,107, 74, 59,255,140, 97, 78,255,140, 96, 77,255,128, 88, 71,255,112, 77, 61,255,101, 69, 54,255, 95, 65, 52,255, - 93, 63, 49,255, 96, 65, 51,255,106, 72, 57,255,124, 86, 68,255,143, 99, 79,255,161,111, 91,255,174,121, 98,255,175,122, 99,255, -161,112, 90,255,123, 85, 68,255, 71, 47, 36,255, 55, 36, 29,255,146,103, 85,255,203,156,146,255,202,154,144,255,120, 93, 82,255, - 60, 61, 61,255, 60, 61, 61,255,119, 92, 80,255,173,120, 96,255,175,121, 99,255,182,127,103,255,189,132,108,255,193,138,116,255, -197,144,127,255,201,149,136,255,203,153,142,255,202,151,138,255,191,138,118,255,168,117, 95,255,139, 96, 77,255,115, 78, 63,255, - 95, 64, 51,255, 80, 53, 41,255, 67, 44, 34,255, 55, 36, 27,255, 44, 27, 20,255, 35, 21, 16,255, 63, 41, 30,255,143,101, 85,255, -204,159,153,255,219,181,184,255,221,185,191,255,213,173,171,255,197,144,127,255,194,139,118,255,200,148,134,255,205,157,147,255, -208,162,154,255,209,164,159,255,210,166,161,255,210,165,160,255,208,163,158,255,204,156,145,255,191,137,116,255,157,109, 87,255, -142, 97, 78,255,187,134,114,255,208,162,155,255,209,164,157,255,209,163,157,255,207,161,152,255,164,116, 97,255,113, 78, 62,255, -143, 98, 79,255,192,141,124,255,192,135,112,255,204,154,142,255,190,138,120,255,131, 90, 72,255,135, 92, 74,255,194,145,131,255, -209,163,156,255,208,162,156,255,198,145,128,255,178,124,100,255,167,116, 94,255,165,114, 93,255,169,118, 95,255,163,114, 92,255, - 98, 67, 54,255, 87, 71, 66,255,153,106, 84,255,122, 84, 67,255, 72, 47, 37,255,182,133,117,255,205,157,147,255,192,142,127,255, -122, 98, 89,255,117, 80, 65,255,144,100, 80,255,142, 98, 78,255,129, 89, 71,255,113, 77, 61,255,102, 70, 55,255, 97, 66, 52,255, - 93, 64, 49,255, 94, 64, 50,255,101, 68, 54,255,117, 80, 64,255,135, 93, 75,255,155,108, 86,255,172,120, 97,255,180,125,101,255, -171,119, 96,255,138, 95, 77,255, 82, 54, 42,255, 62, 45, 38,255,153,110, 92,255,203,156,147,255,204,157,148,255,125, 97, 86,255, - 60, 61, 61,255, 60, 61, 61,255,120, 93, 81,255,171,119, 96,255,169,118, 95,255,176,122, 99,255,184,128,104,255,190,132,108,255, -193,137,115,255,197,142,123,255,199,147,131,255,202,152,141,255,204,155,145,255,199,149,134,255,184,131,110,255,159,110, 89,255, -134, 92, 74,255,110, 75, 60,255, 91, 62, 49,255, 78, 52, 41,255, 64, 42, 32,255, 49, 32, 24,255, 38, 23, 17,255, 44, 27, 19,255, -104, 71, 56,255,183,135,121,255,216,174,173,255,221,185,190,255,218,180,183,255,205,159,150,255,196,142,123,255,199,147,132,255, -204,156,145,255,207,161,152,255,209,164,157,255,209,164,158,255,208,163,157,255,205,158,149,255,196,142,124,255,166,115, 92,255, -146,101, 81,255,184,131,110,255,208,161,153,255,208,162,156,255,208,162,156,255,208,163,155,255,179,129,111,255,120, 83, 66,255, -138, 95, 76,255,189,137,120,255,192,136,114,255,201,151,137,255,196,145,128,255,139, 96, 77,255,129, 89, 70,255,189,139,122,255, -208,162,155,255,208,163,157,255,201,150,138,255,185,129,104,255,171,119, 96,255,167,116, 94,255,169,118, 95,255,163,113, 92,255, - 99, 68, 54,255, 95, 81, 76,255,155,106, 84,255,116, 79, 63,255, 75, 49, 39,255,190,140,124,255,205,158,149,255,189,139,125,255, -115, 92, 81,255,126, 87, 70,255,146,101, 82,255,143, 99, 80,255,130, 90, 72,255,114, 78, 62,255,104, 71, 56,255, 99, 67, 53,255, - 94, 65, 51,255, 93, 63, 50,255, 97, 66, 52,255,110, 76, 60,255,127, 87, 70,255,148,102, 82,255,170,118, 96,255,182,127,103,255, -179,124,101,255,151,105, 84,255, 93, 62, 49,255, 72, 56, 49,255,161,117, 99,255,203,156,147,255,204,158,149,255,126, 99, 88,255, - 60, 61, 61,255, 60, 61, 61,255,124, 95, 83,255,173,121, 97,255,167,116, 93,255,169,118, 95,255,177,123,100,255,186,130,105,255, -191,135,109,255,192,137,113,255,195,139,120,255,197,143,126,255,201,150,137,255,204,156,146,255,203,155,145,255,196,142,124,255, -177,124,100,255,149,103, 83,255,126, 86, 69,255,105, 72, 57,255, 88, 60, 47,255, 72, 47, 37,255, 56, 37, 28,255, 43, 27, 20,255, - 39, 24, 17,255, 76, 51, 39,255,159,112, 93,255,210,166,161,255,220,182,186,255,220,184,188,255,212,170,168,255,199,149,134,255, -200,149,135,255,204,155,145,255,206,159,152,255,207,162,155,255,207,161,154,255,205,158,150,255,198,146,130,255,173,120, 97,255, -153,105, 85,255,186,132,111,255,206,159,150,255,208,162,154,255,207,161,154,255,209,163,155,255,193,141,125,255,131, 90, 72,255, -134, 93, 74,255,184,133,115,255,193,137,116,255,200,147,130,255,200,149,134,255,146,101, 81,255,126, 86, 69,255,184,133,115,255, -207,161,154,255,209,164,157,255,203,155,144,255,189,133,110,255,175,122, 98,255,169,118, 95,255,169,117, 95,255,163,114, 92,255, - 98, 66, 52,255,107, 94, 88,255,156,106, 84,255,107, 73, 58,255, 81, 54, 43,255,197,146,132,255,206,159,149,255,186,137,121,255, -112, 89, 79,255,132, 92, 74,255,149,103, 83,255,144, 99, 80,255,131, 90, 72,255,115, 78, 63,255,106, 72, 57,255,100, 68, 54,255, - 96, 65, 52,255, 93, 63, 50,255, 95, 64, 51,255,104, 71, 56,255,117, 80, 64,255,140, 96, 77,255,167,116, 94,255,184,128,104,255, -186,130,105,255,163,113, 91,255,105, 70, 55,255, 84, 68, 61,255,167,118,100,255,203,155,145,255,202,154,144,255,124, 96, 85,255, - 60, 61, 61,255, 60, 61, 61,255,129, 99, 87,255,179,125,101,255,168,117, 94,255,167,116, 93,255,172,119, 96,255,181,126,102,255, -188,132,107,255,192,135,111,255,193,137,115,255,193,137,114,255,194,138,117,255,197,144,127,255,202,153,142,255,205,158,149,255, -201,150,137,255,187,133,111,255,164,114, 91,255,141, 97, 78,255,119, 82, 65,255, 98, 67, 53,255, 80, 53, 42,255, 64, 42, 32,255, - 49, 31, 23,255, 38, 24, 17,255, 62, 40, 30,255,135, 94, 76,255,201,155,146,255,218,179,180,255,221,184,189,255,215,176,176,255, -205,157,148,255,202,152,140,255,204,156,146,255,205,159,149,255,206,160,152,255,205,158,150,255,199,147,132,255,177,124,100,255, -162,112, 90,255,189,135,114,255,206,159,149,255,207,160,152,255,207,160,152,255,207,160,153,255,200,148,134,255,142, 98, 79,255, -135, 92, 74,255,182,131,112,255,195,140,119,255,198,144,126,255,202,152,139,255,153,106, 85,255,125, 85, 68,255,180,129,108,255, -207,160,153,255,209,163,157,255,204,157,148,255,193,139,118,255,179,125,101,255,172,120, 96,255,170,118, 95,255,163,113, 91,255, -100, 68, 54,255,112, 97, 91,255,157,108, 85,255, 97, 66, 52,255, 91, 63, 51,255,202,152,139,255,206,158,151,255,179,132,115,255, -108, 85, 75,255,140, 96, 78,255,151,104, 84,255,145,100, 81,255,131, 90, 72,255,116, 79, 64,255,107, 73, 58,255,103, 70, 56,255, - 98, 66, 52,255, 93, 63, 50,255, 92, 63, 49,255, 99, 67, 53,255,108, 73, 58,255,132, 91, 73,255,163,113, 91,255,186,130,107,255, -191,135,113,255,172,120, 97,255,116, 79, 62,255, 80, 63, 55,255,172,121,100,255,200,152,141,255,196,145,129,255,119, 91, 79,255, - 60, 61, 61,255, 60, 60, 61,255,133,106, 98,255,189,133,109,255,173,120, 97,255,165,115, 93,255,166,116, 93,255,174,121, 99,255, -184,129,104,255,192,135,111,255,194,138,116,255,193,138,116,255,192,135,112,255,192,134,109,255,193,138,115,255,199,147,131,255, -205,157,147,255,204,155,144,255,194,141,123,255,176,122, 99,255,153,106, 85,255,130, 89, 72,255,107, 73, 58,255, 89, 60, 47,255, - 71, 47, 37,255, 54, 35, 26,255, 42, 27, 19,255, 53, 35, 26,255,122, 84, 68,255,193,145,133,255,216,175,174,255,220,183,187,255, -218,180,183,255,211,168,163,255,205,157,148,255,205,157,147,255,205,158,150,255,204,157,148,255,199,148,133,255,180,126,102,255, -172,119, 96,255,193,140,122,255,205,157,148,255,206,159,150,255,206,159,149,255,206,159,151,255,202,151,138,255,150,104, 84,255, -138, 95, 75,255,181,129,109,255,196,141,121,255,196,142,122,255,203,153,141,255,158,109, 88,255,124, 84, 67,255,176,124,104,255, -207,159,151,255,209,163,156,255,205,159,150,255,196,143,125,255,183,128,103,255,175,122, 99,255,171,119, 96,255,162,112, 90,255, - 99, 69, 56,255,120,103, 97,255,158,108, 86,255, 85, 58, 45,255,107, 74, 61,255,206,157,145,255,206,158,150,255,169,124,107,255, -108, 83, 73,255,146,101, 81,255,152,105, 85,255,144, 99, 81,255,130, 89, 72,255,116, 80, 64,255,109, 74, 59,255,105, 71, 57,255, -100, 67, 53,255, 94, 63, 50,255, 91, 62, 49,255, 94, 64, 50,255, 99, 67, 53,255,122, 84, 67,255,161,112, 90,255,188,133,110,255, -195,142,124,255,180,126,104,255,126, 85, 68,255, 91, 72, 65,255,173,120, 98,255,195,142,123,255,183,129,106,255,107, 82, 72,255, - 60, 61, 61,255, 60, 60, 60,255,137,113,109,255,199,145,129,255,181,126,102,255,168,117, 94,255,163,114, 91,255,168,117, 94,255, -178,124,100,255,189,132,107,255,194,137,116,255,196,140,121,255,194,139,117,255,192,135,110,255,188,131,107,255,188,131,107,255, -193,139,118,255,203,154,143,255,205,157,148,255,199,147,132,255,184,130,106,255,162,112, 91,255,139, 96, 77,255,117, 80, 64,255, - 98, 66, 53,255, 76, 51, 39,255, 59, 38, 29,255, 48, 30, 22,255, 53, 34, 25,255,117, 80, 63,255,187,137,121,255,213,170,167,255, -219,181,184,255,220,183,186,255,215,175,175,255,209,165,160,255,207,161,154,255,205,158,149,255,198,148,133,255,185,129,104,255, -184,128,104,255,198,146,129,255,204,156,145,255,206,158,147,255,206,157,147,255,206,157,148,255,204,153,140,255,159,110, 89,255, -141, 97, 79,255,181,128,108,255,197,142,122,255,196,140,119,255,203,153,140,255,162,112, 91,255,124, 85, 68,255,173,122,100,255, -205,158,149,255,209,163,156,255,207,159,152,255,198,146,130,255,187,131,107,255,178,124,100,255,172,120, 97,255,162,112, 90,255, - 97, 67, 54,255,124,105, 97,255,157,108, 86,255, 74, 49, 38,255,127, 90, 75,255,209,161,151,255,205,158,147,255,153,110, 93,255, -114, 87, 76,255,150,103, 84,255,153,106, 85,255,143, 99, 80,255,129, 89, 71,255,116, 80, 63,255,110, 76, 60,255,108, 73, 59,255, -101, 68, 54,255, 94, 63, 50,255, 90, 60, 48,255, 90, 60, 48,255, 91, 62, 49,255,114, 77, 62,255,159,111, 88,255,190,137,117,255, -198,148,135,255,186,132,111,255,132, 90, 72,255, 95, 75, 67,255,166,115, 92,255,182,126,103,255,163,113, 92,255, 92, 75, 68,255, - 61, 61, 61,255, 60, 60, 60,255,140,118,117,255,207,160,152,255,192,138,117,255,175,122, 98,255,165,114, 92,255,163,114, 92,255, -171,119, 96,255,182,127,103,255,192,136,113,255,197,142,124,255,197,143,125,255,194,139,118,255,191,133,109,255,185,129,105,255, -181,126,101,255,186,131,108,255,199,147,133,255,205,157,148,255,202,152,139,255,190,136,115,255,170,118, 96,255,148,102, 82,255, -126, 87, 69,255,102, 70, 55,255, 81, 54, 42,255, 63, 41, 32,255, 51, 32, 24,255, 55, 35, 27,255,113, 76, 60,255,180,130,112,255, -209,164,157,255,217,178,179,255,219,182,185,255,217,179,181,255,213,172,171,255,208,165,159,255,201,153,140,255,194,139,120,255, -195,141,122,255,201,150,137,255,204,155,144,255,204,155,144,255,203,154,143,255,204,155,145,255,204,154,141,255,167,115, 94,255, -145,100, 81,255,181,129,107,255,196,142,123,255,195,139,117,255,203,152,139,255,164,114, 93,255,124, 85, 67,255,171,120, 99,255, -205,157,147,255,208,162,156,255,206,160,152,255,199,149,134,255,190,134,111,255,180,126,102,255,173,120, 97,255,160,111, 90,255, -101, 74, 63,255,130,106, 95,255,154,105, 84,255, 64, 42, 32,255,151,108, 93,255,209,162,155,255,203,154,142,255,136, 98, 83,255, -123, 92, 79,255,154,107, 86,255,153,106, 86,255,142, 98, 79,255,127, 88, 71,255,116, 79, 63,255,112, 76, 61,255,109, 75, 59,255, -103, 70, 56,255, 95, 65, 51,255, 90, 60, 48,255, 86, 58, 45,255, 83, 56, 44,255,107, 72, 58,255,159,110, 88,255,195,143,127,255, -202,155,144,255,191,138,118,255,134, 92, 73,255, 95, 75, 67,255,150,103, 82,255,148,104, 83,255, 98, 70, 58,255, 40, 38, 38,255, - 61, 62, 62,255, 60, 60, 60,255,141,120,120,255,213,171,168,255,202,153,141,255,186,131,108,255,170,119, 96,255,163,114, 92,255, -165,115, 93,255,175,121, 98,255,187,131,107,255,196,141,121,255,199,146,130,255,198,145,128,255,195,139,118,255,190,132,108,255, -183,128,104,255,177,123, 99,255,177,123,100,255,192,139,120,255,204,155,144,255,204,155,144,255,195,142,123,255,177,123,100,255, -156,108, 87,255,131, 90, 73,255,106, 72, 57,255, 84, 56, 44,255, 68, 45, 35,255, 54, 35, 26,255, 59, 38, 30,255,110, 75, 59,255, -177,125,105,255,206,158,148,255,214,173,171,255,216,177,179,255,216,177,177,255,212,170,168,255,206,161,154,255,201,152,140,255, -200,149,136,255,202,152,139,255,203,153,142,255,203,153,140,255,202,152,139,255,203,153,140,255,203,152,138,255,168,117, 96,255, -150,104, 83,255,182,129,108,255,197,142,124,255,195,139,116,255,203,150,137,255,164,114, 94,255,123, 85, 67,255,171,120, 99,255, -204,156,145,255,208,162,154,255,206,160,151,255,201,150,137,255,192,136,114,255,183,128,104,255,175,121, 99,255,159,110, 88,255, -104, 79, 69,255,137,109, 96,255,148,101, 81,255, 60, 40, 32,255,174,127,110,255,210,164,157,255,199,148,132,255,117, 88, 76,255, -131, 94, 78,255,156,108, 87,255,153,105, 86,255,140, 96, 78,255,125, 85, 69,255,116, 80, 64,255,114, 78, 63,255,112, 76, 61,255, -104, 71, 57,255, 96, 65, 52,255, 90, 61, 47,255, 82, 55, 44,255, 75, 51, 39,255,101, 69, 54,255,165,115, 94,255,200,151,139,255, -205,159,151,255,193,142,124,255,131, 89, 70,255, 89, 72, 66,255, 65, 45, 37,255, 26, 19, 16,255, 2, 2, 1,255, 28, 28, 29,255, - 62, 62, 62,255, 60, 60, 60,255,141,121,121,255,217,176,176,255,210,166,161,255,198,145,129,255,181,126,103,255,167,116, 94,255, -163,113, 91,255,167,116, 94,255,179,124,101,255,192,136,113,255,198,145,129,255,200,150,136,255,198,146,130,255,195,140,119,255, -189,132,108,255,182,127,103,255,170,118, 96,255,167,116, 94,255,184,131,110,255,202,153,140,255,205,158,149,255,198,146,130,255, -183,128,105,255,161,111, 90,255,135, 93, 74,255,110, 74, 60,255, 89, 59, 47,255, 71, 47, 37,255, 58, 38, 29,255, 63, 42, 31,255, -111, 75, 60,255,173,121, 99,255,201,150,136,255,210,164,160,255,212,170,167,255,211,168,164,255,207,162,155,255,204,156,146,255, -202,153,140,255,201,152,140,255,202,151,138,255,201,150,136,255,201,149,133,255,202,150,137,255,200,149,134,255,166,115, 93,255, -156,108, 88,255,187,133,112,255,197,142,123,255,194,138,115,255,202,150,134,255,163,113, 92,255,123, 83, 67,255,172,121, 99,255, -203,155,144,255,207,162,154,255,206,160,151,255,201,151,138,255,194,139,118,255,186,129,104,255,175,123, 99,255,157,108, 86,255, -104, 83, 74,255,141,106, 91,255,139, 94, 75,255, 66, 46, 38,255,193,143,128,255,209,164,158,255,190,137,119,255,115, 95, 86,255, -140, 97, 78,255,159,110, 89,255,151,105, 84,255,137, 95, 76,255,123, 84, 67,255,116, 80, 64,255,117, 80, 64,255,114, 78, 63,255, -106, 73, 57,255, 97, 66, 52,255, 89, 59, 47,255, 79, 52, 41,255, 68, 45, 35,255, 98, 67, 53,255,179,127,107,255,204,158,150,255, -206,162,156,255,193,141,126,255,123, 84, 68,255, 36, 33, 32,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,139,117,115,255,217,177,177,255,215,174,173,255,207,161,154,255,193,139,118,255,176,122, 99,255, -165,114, 92,255,163,113, 91,255,170,119, 96,255,184,129,104,255,196,142,122,255,201,151,139,255,202,152,140,255,199,147,131,255, -195,140,119,255,189,132,107,255,180,125,102,255,166,116, 94,255,159,110, 88,255,173,121, 99,255,198,148,134,255,206,159,151,255, -200,150,136,255,187,133,111,255,165,114, 93,255,139, 96, 77,255,114, 78, 62,255, 93, 63, 50,255, 74, 49, 39,255, 61, 40, 31,255, - 67, 45, 34,255,111, 76, 60,255,166,115, 93,255,194,141,123,255,204,155,143,255,205,158,149,255,204,157,147,255,203,154,142,255, -202,151,138,255,201,150,135,255,200,148,132,255,199,146,128,255,199,145,127,255,200,147,131,255,198,146,129,255,166,115, 93,255, -162,112, 91,255,191,138,118,255,196,141,120,255,194,137,114,255,201,148,132,255,160,111, 90,255,123, 84, 67,255,174,122,101,255, -203,155,143,255,207,160,153,255,206,159,151,255,201,151,139,255,194,140,121,255,187,130,106,255,177,124,100,255,152,104, 83,255, -107, 90, 83,255,149,105, 87,255,124, 84, 67,255, 88, 68, 58,255,204,154,143,255,209,163,156,255,172,122,102,255,108, 90, 84,255, -151,104, 83,255,159,110, 89,255,148,103, 83,255,133, 92, 73,255,120, 82, 65,255,118, 80, 64,255,119, 81, 65,255,116, 80, 64,255, -108, 74, 59,255, 98, 67, 53,255, 88, 59, 46,255, 74, 50, 38,255, 58, 38, 29,255,113, 78, 62,255,192,139,121,255,207,163,158,255, -208,163,159,255,191,139,123,255,112, 81, 68,255, 0, 1, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 61, 61,255,126, 99, 89,255,211,167,163,255,217,177,179,255,214,172,171,255,204,156,146,255,189,133,111,255, -172,120, 96,255,163,113, 91,255,164,114, 92,255,174,121, 98,255,189,133,110,255,200,148,134,255,204,155,145,255,203,154,142,255, -199,148,132,255,194,138,117,255,187,130,105,255,177,124,100,255,164,114, 92,255,150,104, 84,255,161,111, 91,255,193,142,126,255, -206,160,153,255,203,154,143,255,192,138,118,255,170,118, 95,255,143, 99, 79,255,118, 81, 65,255, 97, 66, 52,255, 79, 53, 41,255, - 66, 44, 34,255, 74, 49, 38,255,112, 77, 61,255,157,108, 87,255,187,131,109,255,196,142,122,255,198,146,130,255,199,147,131,255, -199,146,129,255,198,144,126,255,197,143,123,255,196,140,119,255,196,140,118,255,198,144,126,255,197,143,125,255,167,115, 93,255, -167,116, 93,255,194,141,123,255,195,139,117,255,194,136,112,255,199,145,128,255,156,108, 87,255,122, 84, 67,255,177,125,104,255, -203,154,142,255,206,160,151,255,205,158,149,255,201,151,139,255,195,141,122,255,188,131,107,255,177,124,100,255,146, 99, 79,255, -110, 97, 92,255,160,109, 87,255,108, 72, 57,255,114, 84, 72,255,210,162,154,255,208,159,150,255,149,109, 92,255,116, 92, 81,255, -160,111, 89,255,158,110, 89,255,144,100, 80,255,128, 88, 71,255,118, 81, 64,255,119, 82, 66,255,122, 84, 67,255,119, 82, 65,255, -111, 75, 60,255, 99, 67, 53,255, 87, 59, 46,255, 70, 47, 36,255, 55, 36, 28,255,140, 97, 77,255,199,148,133,255,209,167,163,255, -207,163,158,255,183,132,113,255,100, 76, 66,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 61, 61, 61,255,100, 77, 68,255,184,133,114,255,215,174,172,255,218,178,179,255,212,170,168,255,201,150,137,255, -184,128,105,255,168,117, 95,255,162,112, 90,255,165,115, 94,255,179,125,101,255,194,140,120,255,203,155,144,255,206,159,151,255, -204,155,145,255,199,146,131,255,193,137,114,255,185,129,105,255,173,121, 98,255,159,110, 89,255,142, 99, 79,255,147,101, 81,255, -185,134,115,255,206,159,151,255,205,158,149,255,196,143,125,255,175,121, 99,255,147,102, 82,255,123, 85, 68,255,103, 70, 56,255, - 85, 57, 45,255, 73, 48, 38,255, 80, 53, 41,255,108, 74, 58,255,147,101, 82,255,174,121, 98,255,186,130,106,255,191,134,111,255, -192,136,113,255,192,135,111,255,191,134,109,255,191,134,109,255,192,135,110,255,197,141,120,255,190,135,114,255,166,116, 94,255, -174,121, 98,255,197,144,126,255,193,136,114,255,193,135,111,255,198,143,123,255,149,104, 83,255,125, 85, 67,255,180,128,107,255, -203,153,142,255,206,158,150,255,204,156,147,255,201,151,138,255,195,141,123,255,188,132,107,255,176,122, 99,255,137, 92, 73,255, -111, 93, 87,255,168,115, 92,255, 95, 68, 56,255,147,109, 95,255,211,166,160,255,203,153,140,255,123, 95, 83,255,131, 93, 77,255, -165,114, 92,255,156,108, 87,255,139, 96, 77,255,123, 85, 67,255,116, 79, 63,255,122, 84, 67,255,126, 87, 69,255,122, 84, 67,255, -112, 77, 61,255,100, 68, 54,255, 86, 58, 45,255, 64, 43, 33,255, 65, 43, 34,255,160,111, 90,255,203,155,144,255,210,167,164,255, -205,158,151,255,166,116, 96,255, 75, 61, 55,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 61, 61, 62,255, 82, 66, 58,255,138, 94, 75,255,195,145,131,255,217,177,177,255,217,178,179,255,211,167,163,255, -197,145,128,255,179,125,101,255,165,115, 93,255,161,112, 90,255,168,117, 95,255,185,129,106,255,200,148,133,255,207,161,154,255, -207,162,155,255,204,156,145,255,199,146,130,255,192,135,112,255,182,127,103,255,170,118, 96,255,155,107, 87,255,135, 93, 75,255, -134, 92, 73,255,170,122,103,255,203,155,145,255,208,162,155,255,199,148,133,255,179,126,104,255,152,105, 85,255,129, 89, 71,255, -110, 75, 60,255, 92, 62, 49,255, 81, 54, 42,255, 84, 57, 44,255,105, 72, 57,255,136, 94, 75,255,158,109, 88,255,171,119, 96,255, -177,123, 99,255,180,125,102,255,182,127,103,255,184,129,105,255,189,133,107,255,194,137,115,255,182,128,104,255,170,118, 95,255, -182,128,105,255,197,143,125,255,190,133,108,255,191,135,110,255,194,140,119,255,142, 98, 78,255,127, 88, 70,255,185,132,110,255, -202,153,141,255,204,157,148,255,204,156,145,255,200,150,136,255,195,141,122,255,188,132,108,255,174,121, 98,255,126, 88, 72,255, -126,100, 89,255,168,115, 93,255, 89, 65, 55,255,174,129,117,255,210,165,160,255,191,140,125,255,109, 90, 83,255,151,103, 82,255, -166,115, 93,255,152,106, 85,255,133, 92, 73,255,117, 80, 64,255,117, 80, 64,255,126, 87, 69,255,130, 90, 72,255,124, 85, 69,255, -114, 78, 62,255,101, 68, 55,255, 85, 57, 45,255, 60, 39, 30,255, 82, 56, 45,255,176,124,102,255,206,159,151,255,208,164,160,255, -196,147,133,255,145,100, 81,255, 47, 37, 33,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 61, 62, 62,255, 76, 60, 54,255,105, 71, 56,255,152,105, 86,255,203,156,146,255,218,179,180,255,216,177,178,255, -209,163,157,255,194,139,119,255,175,122, 98,255,163,113, 92,255,162,113, 91,255,172,120, 97,255,190,136,114,255,204,157,147,255, -210,166,161,255,209,164,158,255,204,156,145,255,198,145,128,255,190,134,109,255,179,125,101,255,168,116, 94,255,152,105, 85,255, -131, 90, 73,255,122, 84, 66,255,151,106, 87,255,198,147,133,255,209,164,158,255,202,154,142,255,185,131,109,255,158,109, 87,255, -134, 93, 74,255,118, 81, 64,255, 99, 67, 53,255, 89, 60, 47,255, 94, 63, 49,255,107, 73, 58,255,126, 86, 69,255,144, 99, 80,255, -157,109, 87,255,165,114, 93,255,172,120, 96,255,177,123,100,255,186,130,105,255,192,135,110,255,180,125,102,255,174,122, 99,255, -188,133,111,255,195,139,119,255,187,130,106,255,190,133,110,255,189,134,112,255,131, 90, 72,255,135, 93, 74,255,189,135,115,255, -202,152,140,255,203,155,145,255,202,153,142,255,198,148,134,255,194,140,120,255,186,130,106,255,169,117, 95,255,116, 84, 72,255, -141,102, 86,255,159,110, 88,255, 92, 68, 57,255,192,148,137,255,210,164,158,255,170,124,109,255,113, 89, 79,255,166,115, 92,255, -164,114, 92,255,146,102, 82,255,125, 86, 69,255,113, 77, 62,255,119, 82, 66,255,132, 91, 73,255,135, 93, 74,255,128, 87, 70,255, -115, 79, 63,255,101, 69, 55,255, 84, 56, 44,255, 59, 41, 33,255,103, 72, 59,255,185,131,109,255,204,157,148,255,202,155,145,255, -183,129,109,255,114, 80, 66,255, 17, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 61, 61, 62,255, 80, 64, 57,255, 94, 64, 50,255,116, 79, 63,255,168,119, 98,255,210,166,162,255,219,180,181,255, -215,175,175,255,206,159,151,255,190,135,113,255,172,120, 97,255,162,113, 91,255,164,113, 91,255,177,123, 99,255,197,143,126,255, -208,164,158,255,212,169,166,255,210,165,159,255,204,155,144,255,197,142,123,255,188,132,107,255,176,122, 99,255,164,114, 92,255, -149,103, 83,255,128, 88, 71,255,112, 77, 61,255,132, 91, 73,255,186,136,120,255,208,163,156,255,205,158,149,255,189,135,115,255, -163,114, 91,255,145,100, 81,255,127, 88, 70,255,108, 74, 59,255,103, 70, 56,255,105, 71, 57,255,112, 78, 62,255,128, 87, 70,255, -142, 98, 79,255,153,107, 86,255,164,115, 92,255,176,122, 99,255,188,131,106,255,189,132,109,255,178,125,100,255,180,125,102,255, -192,137,115,255,191,135,112,255,184,128,104,255,189,133,109,255,180,126,104,255,121, 82, 67,255,147,101, 81,255,192,138,118,255, -201,151,138,255,202,153,142,255,201,151,138,255,198,146,130,255,192,137,116,255,183,128,104,255,161,112, 89,255,106, 80, 69,255, -160,113, 92,255,144, 99, 80,255,105, 77, 66,255,203,158,152,255,207,160,152,255,149,112, 99,255,135, 97, 80,255,173,120, 96,255, -161,111, 90,255,137, 95, 77,255,116, 79, 63,255,111, 75, 60,255,125, 86, 69,255,138, 95, 77,255,138, 96, 77,255,130, 90, 72,255, -117, 80, 64,255,102, 69, 55,255, 81, 54, 42,255, 60, 42, 34,255,124, 87, 71,255,184,130,107,255,196,144,129,255,191,137,116,255, -159,111, 89,255, 71, 50, 42,255, 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 61, 61, 61,255,102, 80, 70,255,107, 72, 58,255,100, 67, 53,255,127, 87, 69,255,180,129,111,255,214,171,169,255, -219,181,183,255,215,174,174,255,203,156,145,255,186,131,109,255,169,118, 95,255,161,111, 90,255,165,115, 93,255,183,128,104,255, -202,152,140,255,212,169,167,255,213,171,169,255,210,165,160,255,203,154,142,255,195,140,120,255,185,128,104,255,173,120, 97,255, -161,112, 90,255,147,102, 82,255,126, 87, 69,255,108, 74, 59,255,118, 80, 63,255,166,120,102,255,204,157,147,255,208,162,155,255, -193,141,123,255,175,122, 99,255,160,110, 89,255,143, 99, 79,255,130, 90, 71,255,123, 84, 67,255,122, 83, 66,255,130, 90, 71,255, -141, 97, 78,255,154,107, 86,255,168,116, 94,255,182,128,103,255,191,134,110,255,185,129,105,255,182,127,103,255,188,132,108,255, -193,138,116,255,183,128,104,255,181,126,102,255,186,131,108,255,166,116, 94,255,113, 78, 62,255,162,112, 90,255,194,140,120,255, -200,149,136,255,201,150,138,255,199,148,134,255,196,143,125,255,191,134,112,255,179,124,101,255,146,101, 82,255,101, 72, 60,255, -172,120, 98,255,122, 84, 68,255,131,100, 91,255,208,164,158,255,199,152,142,255,128, 97, 83,255,157,109, 89,255,173,120, 97,255, -155,108, 87,255,127, 87, 70,255,107, 73, 58,255,113, 77, 61,255,134, 92, 74,255,145,100, 81,255,142, 99, 80,255,132, 91, 73,255, -119, 82, 65,255,102, 69, 55,255, 78, 52, 41,255, 67, 51, 43,255,132, 91, 74,255,170,119, 96,255,170,119, 98,255,138, 97, 79,255, - 75, 52, 43,255, 7, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 61,255,133,109,106,255,151,106, 87,255,106, 71, 57,255,107, 72, 58,255,138, 95, 76,255,188,138,121,255, -216,176,176,255,218,181,183,255,214,172,171,255,201,151,137,255,182,128,104,255,166,116, 93,255,160,111, 89,255,168,117, 94,255, -188,134,113,255,208,162,155,255,216,175,174,255,214,173,172,255,210,165,159,255,202,153,140,255,193,138,116,255,182,127,103,255, -170,118, 96,255,158,110, 88,255,145,100, 80,255,127, 87, 70,255,110, 75, 60,255,104, 71, 56,255,142, 99, 81,255,193,144,130,255, -209,165,159,255,201,151,139,255,189,135,115,255,172,119, 96,255,161,111, 89,255,156,108, 87,255,153,105, 85,255,154,107, 86,255, -160,111, 90,255,171,118, 96,255,183,128,104,255,190,133,110,255,191,134,109,255,186,130,106,255,187,131,106,255,193,138,115,255, -184,129,105,255,176,123,100,255,175,122, 99,255,186,130,106,255,147,102, 82,255,122, 83, 67,255,175,122, 99,255,195,141,122,255, -199,147,133,255,199,148,133,255,196,145,128,255,194,139,118,255,186,130,106,255,172,119, 96,255,126, 87, 70,255,116, 83, 68,255, -175,121, 98,255, 97, 68, 56,255,161,126,117,255,210,166,161,255,186,139,125,255,125, 93, 79,255,172,120, 97,255,170,118, 95,255, -146,101, 81,255,114, 78, 62,255,100, 68, 54,255,120, 83, 66,255,143, 99, 80,255,151,104, 84,255,146,101, 82,255,135, 93, 75,255, -121, 83, 66,255,102, 70, 56,255, 73, 48, 37,255, 72, 55, 48,255,105, 75, 62,255, 42, 30, 26,255, 25, 18, 15,255, 12, 9, 7,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,131,110,108,255,201,155,147,255,143, 98, 80,255,108, 74, 59,255,112, 77, 62,255,148,101, 82,255, -196,148,135,255,218,179,180,255,219,181,183,255,213,170,168,255,198,147,132,255,179,125,101,255,163,113, 92,255,160,111, 90,255, -171,119, 96,255,194,142,125,255,212,170,167,255,217,178,179,255,215,174,174,255,210,164,159,255,202,150,137,255,192,136,112,255, -179,125,101,255,168,117, 94,255,155,108, 87,255,143, 98, 79,255,127, 87, 70,255,112, 77, 61,255, 98, 66, 52,255,119, 81, 63,255, -172,125,107,255,207,162,155,255,207,162,155,255,199,149,135,255,188,133,112,255,183,129,105,255,182,127,105,255,184,128,104,255, -187,131,106,255,189,134,111,255,192,137,115,255,192,137,115,255,191,134,110,255,190,133,108,255,192,135,112,255,185,129,106,255, -172,120, 97,255,171,119, 96,255,172,120, 97,255,182,128,104,255,127, 88, 70,255,143, 98, 79,255,184,128,104,255,195,141,120,255, -196,144,128,255,196,144,126,255,194,140,121,255,190,134,110,255,180,126,102,255,158,110, 88,255, 98, 68, 54,255,145,102, 83,255, -162,112, 90,255, 84, 63, 54,255,191,148,139,255,210,164,158,255,161,117,100,255,135, 99, 83,255,179,125,101,255,164,114, 92,255, -131, 91, 72,255, 99, 67, 53,255,101, 68, 54,255,133, 91, 74,255,153,106, 85,255,156,109, 88,255,150,104, 84,255,139, 96, 77,255, -123, 85, 68,255,103, 69, 55,255, 67, 44, 34,255, 75, 61, 56,255, 41, 34, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,140,120,120,255,202,161,159,255,193,148,138,255,138, 95, 77,255,110, 75, 59,255,120, 82, 65,255, -158,109, 89,255,202,156,146,255,220,182,185,255,219,181,184,255,211,169,165,255,196,143,127,255,175,122, 99,255,162,112, 91,255, -160,111, 89,255,175,122, 98,255,200,150,135,255,216,176,175,255,218,180,181,255,215,174,174,255,209,164,158,255,201,149,134,255, -190,133,110,255,177,123,100,255,165,115, 92,255,153,106, 86,255,142, 98, 78,255,127, 87, 70,255,114, 78, 62,255, 99, 67, 53,255, - 99, 67, 52,255,136, 95, 79,255,185,138,125,255,205,157,147,255,207,159,151,255,203,154,143,255,200,149,136,255,198,145,129,255, -198,145,129,255,197,145,129,255,196,143,125,255,194,140,120,255,194,137,115,255,190,134,111,255,179,125,102,255,165,115, 92,255, -164,114, 92,255,162,112, 90,255,182,127,103,255,164,114, 92,255,125, 86, 69,255,163,113, 91,255,188,131,107,255,193,139,118,255, -195,140,121,255,193,139,119,255,191,135,111,255,185,129,104,255,172,119, 97,255,134, 92, 74,255, 93, 63, 51,255,174,121, 98,255, -131, 89, 71,255,105, 83, 76,255,209,163,156,255,204,155,145,255,128, 94, 79,255,160,113, 94,255,180,125,101,255,154,107, 86,255, -113, 77, 62,255, 86, 59, 46,255,112, 76, 61,255,146,101, 82,255,159,111, 89,255,160,111, 90,255,153,106, 86,255,143,100, 80,255, -127, 87, 70,255,102, 69, 54,255, 68, 50, 43,255, 50, 35, 28,255, 11, 8, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,142,121,121,255,217,178,179,255,197,157,153,255,188,142,130,255,132, 91, 73,255,113, 77, 62,255, -125, 86, 68,255,164,115, 94,255,206,161,153,255,220,183,187,255,219,181,183,255,210,166,162,255,193,139,121,255,171,119, 96,255, -160,110, 90,255,161,112, 90,255,180,126,103,255,205,158,149,255,218,181,182,255,218,180,183,255,215,174,174,255,209,163,158,255, -199,148,133,255,188,132,109,255,175,122, 99,255,163,113, 91,255,151,105, 85,255,140, 96, 78,255,127, 87, 71,255,115, 79, 63,255, -102, 69, 55,255, 92, 62, 49,255,101, 69, 55,255,139, 96, 79,255,172,124,105,255,199,149,135,255,204,154,142,255,202,153,140,255, -201,150,137,255,199,147,132,255,196,141,122,255,191,135,113,255,182,127,104,255,168,117, 95,255,156,108, 87,255,157,109, 87,255, -153,106, 86,255,169,118, 95,255,183,128,103,255,140, 96, 77,255,142, 97, 79,255,176,122, 99,255,189,132,107,255,192,136,113,255, -192,136,114,255,190,133,109,255,186,130,105,255,177,124,101,255,158,109, 88,255,105, 72, 57,255,137, 95, 76,255,177,123,100,255, - 93, 66, 53,255,156,120,109,255,214,168,163,255,181,131,114,255,119, 94, 83,255,182,125,102,255,176,122, 99,255,139, 96, 76,255, - 90, 61, 48,255, 87, 58, 46,255,131, 90, 72,255,155,108, 87,255,163,113, 91,255,163,113, 91,255,158,109, 88,255,148,103, 82,255, -131, 91, 73,255, 97, 65, 51,255, 64, 51, 45,255, 41, 26, 20,255, 4, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,142,120,120,255,217,176,176,255,214,176,178,255,202,162,159,255,182,133,117,255,130, 90, 71,255, -115, 79, 63,255,130, 89, 72,255,171,120,100,255,210,167,162,255,220,183,187,255,219,181,183,255,209,164,158,255,190,136,115,255, -169,117, 95,255,158,109, 88,255,161,112, 91,255,182,130,108,255,209,165,161,255,219,182,185,255,218,180,183,255,215,175,175,255, -209,163,157,255,199,147,131,255,187,132,107,255,174,121, 98,255,162,113, 91,255,150,104, 84,255,138, 96, 77,255,128, 87, 70,255, -116, 79, 63,255,105, 71, 56,255, 93, 63, 50,255, 88, 59, 46,255, 95, 64, 51,255,116, 78, 62,255,149,104, 84,255,164,114, 92,255, -167,117, 95,255,170,119, 97,255,167,116, 93,255,154,106, 85,255,142, 97, 79,255,140, 96, 77,255,143, 99, 80,255,142, 98, 80,255, -155,108, 88,255,183,127,103,255,161,111, 90,255,132, 91, 73,255,163,114, 91,255,181,126,102,255,187,131,106,255,189,132,107,255, -188,131,107,255,186,129,104,255,179,125,101,255,167,117, 94,255,138, 95, 77,255,120, 82, 66,255,171,120, 96,255,159,110, 88,255, - 86, 66, 58,255,198,151,140,255,210,162,154,255,137,102, 88,255,145,104, 87,255,190,133,108,255,166,116, 94,255,116, 79, 63,255, - 73, 48, 38,255,107, 73, 58,255,144,100, 80,255,158,109, 88,255,163,113, 91,255,167,115, 93,255,166,115, 93,255,156,108, 87,255, -137, 94, 76,255, 88, 61, 50,255, 52, 34, 27,255, 23, 16, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,143,124,125,255,217,177,177,255,215,175,175,255,209,171,171,255,202,162,159,255,180,132,117,255, -130, 89, 70,255,117, 80, 64,255,134, 92, 73,255,176,126,107,255,213,170,169,255,221,185,190,255,219,181,183,255,208,162,156,255, -187,134,113,255,166,115, 93,255,156,108, 87,255,163,113, 90,255,186,134,115,255,212,171,168,255,220,183,187,255,218,180,183,255, -216,176,177,255,209,164,158,255,199,147,131,255,187,132,108,255,174,121, 97,255,162,112, 90,255,149,104, 84,255,139, 96, 77,255, -129, 88, 71,255,117, 80, 65,255,108, 73, 59,255, 99, 67, 53,255, 92, 63, 49,255, 90, 61, 48,255, 91, 61, 48,255,100, 67, 54,255, -107, 73, 58,255,109, 75, 59,255,113, 77, 62,255,118, 81, 65,255,123, 85, 67,255,128, 88, 71,255,133, 92, 75,255,151,105, 86,255, -178,124,100,255,170,119, 96,255,138, 95, 77,255,152,105, 85,255,175,121, 98,255,183,127,103,255,186,130,105,255,186,130,105,255, -184,128,104,255,180,125,102,255,172,120, 97,255,156,108, 87,255,133, 92, 74,255,154,106, 86,255,179,124,101,255,127, 88, 71,255, -126, 96, 86,255,212,165,158,255,190,142,129,255,117, 90, 79,255,183,128,104,255,187,132,108,255,151,104, 84,255, 86, 58, 46,255, - 83, 58, 47,255,128, 88, 71,255,144, 99, 80,255,153,106, 86,255,169,117, 95,255,180,125,101,255,178,124,100,255,167,116, 94,255, -135, 93, 75,255, 76, 55, 46,255, 43, 29, 22,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,143,124,125,255,221,183,186,255,214,175,174,255,216,176,176,255,209,171,173,255,193,154,150,255, -175,127,111,255,128, 88, 70,255,118, 81, 65,255,136, 94, 75,255,178,127,108,255,214,173,171,255,221,185,190,255,219,181,184,255, -207,162,155,255,185,131,110,255,163,113, 91,255,154,107, 87,255,163,113, 91,255,189,137,118,255,214,174,173,255,219,181,185,255, -218,181,183,255,217,178,178,255,210,165,160,255,200,149,134,255,188,133,110,255,174,122, 98,255,164,114, 92,255,154,106, 86,255, -143, 99, 79,255,132, 91, 74,255,123, 84, 67,255,114, 78, 62,255,108, 73, 59,255,102, 69, 55,255, 99, 67, 54,255, 98, 66, 53,255, - 99, 67, 53,255,103, 70, 56,255,108, 74, 59,255,113, 77, 62,255,120, 82, 65,255,134, 91, 73,255,155,108, 87,255,177,123,100,255, -175,121, 98,255,148,102, 82,255,150,104, 84,255,169,117, 95,255,178,125,101,255,182,127,103,255,184,128,104,255,182,127,103,255, -180,125,102,255,174,121, 98,255,165,114, 92,255,149,104, 83,255,150,103, 83,255,173,120, 98,255,170,118, 95,255,104, 76, 63,255, -174,133,120,255,209,164,158,255,153,115,103,255,147,106, 87,255,195,140,120,255,180,126,104,255,123, 83, 66,255, 79, 60, 53,255, -115, 81, 66,255,130, 90, 72,255,139, 96, 77,255,163,113, 92,255,186,131,108,255,193,139,120,255,190,135,113,255,173,120, 98,255, -123, 85, 70,255, 61, 44, 37,255, 7, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,142,122,123,255,220,183,186,255,219,182,185,255,214,173,172,255,217,178,178,255,206,169,170,255, -200,160,156,255,169,120,102,255,127, 87, 70,255,119, 82, 65,255,137, 95, 76,255,180,130,111,255,214,174,173,255,221,185,189,255, -219,181,184,255,206,160,152,255,183,129,107,255,161,112, 91,255,153,107, 86,255,163,112, 90,255,190,139,121,255,215,175,175,255, -218,180,182,255,218,180,183,255,218,178,180,255,211,168,164,255,202,151,138,255,191,135,113,255,179,125,101,255,167,116, 94,255, -157,109, 88,255,147,102, 82,255,138, 95, 77,255,131, 90, 72,255,123, 85, 68,255,118, 81, 65,255,114, 78, 62,255,112, 76, 61,255, -113, 77, 61,255,115, 79, 63,255,120, 83, 66,255,132, 91, 73,255,147,102, 81,255,163,113, 91,255,177,124,100,255,176,122, 99,255, -155,108, 87,255,152,106, 86,255,168,117, 94,255,175,121, 99,255,180,125,101,255,180,126,102,255,181,126,102,255,179,125,101,255, -176,122, 99,255,169,118, 95,255,160,111, 89,255,155,107, 87,255,167,116, 94,255,177,124,101,255,148,103, 83,255,112, 84, 73,255, -200,156,149,255,198,152,142,255,131, 97, 83,255,183,132,112,255,196,142,124,255,165,114, 92,255, 91, 66, 54,255,110, 81, 69,255, -126, 86, 69,255,124, 85, 69,255,141, 98, 79,255,177,124,101,255,195,144,128,255,199,150,140,255,194,140,124,255,164,113, 91,255, - 92, 65, 53,255, 14, 10, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,143,124,126,255,219,181,184,255,220,183,187,255,218,181,184,255,214,173,173,255,216,176,177,255, -203,168,169,255,196,157,153,255,171,124,106,255,127, 86, 68,255,119, 82, 66,255,137, 95, 75,255,179,130,113,255,215,174,173,255, -221,186,191,255,219,182,185,255,207,160,152,255,182,129,107,255,160,110, 89,255,152,105, 85,255,162,112, 90,255,190,140,123,255, -215,176,176,255,218,180,182,255,218,180,182,255,218,181,183,255,213,171,169,255,205,156,146,255,195,141,122,255,184,129,105,255, -174,121, 98,255,166,116, 93,255,158,110, 89,255,151,105, 84,255,145,100, 81,255,141, 98, 78,255,139, 96, 77,255,138, 96, 77,255, -140, 97, 78,255,144,100, 80,255,153,106, 86,255,162,113, 91,255,173,121, 98,255,180,125,102,255,174,121, 98,255,160,111, 89,255, -158,110, 89,255,168,116, 94,255,173,121, 98,255,178,124,100,255,179,125,101,255,179,125,101,255,179,124,101,255,176,123, 99,255, -172,120, 97,255,167,116, 94,255,163,113, 91,255,167,116, 94,255,175,122, 99,255,171,119, 96,255,116, 81, 66,255,148,115,106,255, -209,164,157,255,169,124,109,255,144,106, 90,255,197,147,133,255,190,136,116,255,137, 95, 77,255,103, 74, 62,255,127, 87, 69,255, -120, 82, 65,255,118, 81, 65,255,152,105, 85,255,185,130,108,255,198,146,130,255,197,146,130,255,178,127,106,255,109, 77, 64,255, - 23, 18, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,144,125,127,255,221,184,187,255,219,182,186,255,220,184,188,255,218,181,184,255,215,175,175,255, -216,177,178,255,204,169,171,255,190,152,148,255,168,121,103,255,126, 86, 69,255,119, 81, 65,255,136, 93, 75,255,177,126,106,255, -213,172,171,255,220,184,189,255,219,182,186,255,207,162,155,255,182,128,107,255,159,111, 89,255,150,104, 84,255,160,111, 89,255, -188,136,117,255,214,173,172,255,215,177,178,255,216,178,180,255,220,183,186,255,215,175,175,255,208,162,156,255,200,149,134,255, -193,138,118,255,185,129,105,255,177,124,100,255,173,120, 97,255,170,118, 96,255,167,116, 93,255,165,115, 93,255,165,115, 93,255, -169,117, 95,255,175,121, 99,255,179,125,101,255,183,128,104,255,183,128,103,255,173,121, 98,255,165,115, 93,255,165,115, 93,255, -169,118, 95,255,173,121, 98,255,176,122, 99,255,178,124,100,255,178,124,100,255,178,124,101,255,176,122, 99,255,174,121, 98,255, -171,118, 96,255,168,117, 94,255,169,118, 95,255,173,120, 98,255,175,122, 99,255,148,102, 81,255, 97, 75, 65,255,193,149,139,255, -204,154,143,255,128, 96, 82,255,182,135,120,255,201,151,138,255,178,125,102,255,117, 83, 68,255,126, 87, 70,255,123, 85, 68,255, -108, 74, 59,255,123, 84, 68,255,146,102, 82,255,115, 82, 68,255, 84, 62, 53,255, 67, 49, 42,255, 28, 20, 17,255, 6, 4, 4,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 60, 60, 60,255,137,118,118,255,220,183,186,255,219,183,187,255,219,183,187,255,220,183,188,255,219,181,185,255, -216,177,177,255,218,179,180,255,206,171,173,255,197,158,155,255,166,119,101,255,126, 86, 69,255,117, 80, 64,255,132, 91, 73,255, -173,123,104,255,211,169,167,255,220,183,186,255,219,182,186,255,208,163,156,255,182,128,107,255,159,110, 89,255,150,104, 84,255, -158,110, 88,255,185,134,115,255,213,171,170,255,214,175,175,255,215,177,178,255,220,184,187,255,217,178,180,255,211,168,165,255, -205,158,150,255,200,148,133,255,195,140,122,255,193,137,116,255,189,133,110,255,187,132,109,255,188,132,109,255,189,133,110,255, -190,133,110,255,189,133,109,255,188,131,107,255,183,128,103,255,175,122, 99,255,171,119, 96,255,171,118, 96,255,172,120, 97,255, -174,121, 98,255,175,121, 98,255,176,123, 99,255,177,123,100,255,177,123, 99,255,176,122, 99,255,174,121, 98,255,173,120, 97,255, -171,119, 97,255,171,119, 97,255,173,121, 97,255,174,121, 98,255,164,113, 92,255,108, 76, 62,255,143,112,101,255,213,164,157,255, -162,120,105,255,147,110, 96,255,205,156,146,255,198,145,129,255,158,110, 88,255,118, 84, 69,255,128, 88, 71,255,111, 76, 61,255, -105, 71, 57,255,101, 71, 57,255, 19, 14, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 61, 61, 61,255, 58, 52, 50,255,170,136,134,255,223,185,189,255,220,184,188,255,219,183,187,255,219,183,187,255, -219,183,186,255,217,179,180,255,217,178,179,255,208,172,175,255,194,157,153,255,172,125,109,255,128, 87, 69,255,116, 79, 63,255, -129, 88, 70,255,166,118, 98,255,207,162,156,255,220,183,187,255,219,182,187,255,211,167,163,255,185,133,114,255,160,111, 89,255, -149,103, 83,255,156,107, 86,255,180,129,109,255,208,164,159,255,215,176,177,255,213,173,173,255,219,182,185,255,219,182,185,255, -214,173,171,255,208,164,159,255,203,156,147,255,200,151,138,255,198,146,131,255,197,145,129,255,196,143,125,255,194,140,120,255, -192,136,114,255,188,132,108,255,183,128,104,255,178,124,101,255,176,122, 99,255,174,121, 98,255,174,121, 98,255,174,121, 98,255, -175,122, 99,255,175,122, 99,255,176,122, 99,255,176,122, 99,255,175,122, 99,255,174,121, 98,255,173,120, 98,255,172,120, 97,255, -172,120, 96,255,173,120, 97,255,173,121, 98,255,169,118, 95,255,135, 93, 75,255,109, 83, 73,255,199,152,141,255,195,148,138,255, -140,105, 91,255,199,151,139,255,205,158,149,255,187,133,111,255,131, 92, 76,255,127, 89, 72,255,117, 79, 63,255, 98, 67, 53,255, - 62, 43, 35,255, 7, 6, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 28, 29, 29,255, 4, 3, 2,255,147,119,117,255,222,184,187,255,220,183,188,255,219,183,187,255, -219,182,186,255,219,183,186,255,218,180,183,255,217,178,179,255,215,177,180,255,193,157,155,255,174,128,112,255,129, 89, 71,255, -114, 78, 63,255,123, 84, 68,255,155,107, 88,255,200,153,143,255,218,180,182,255,218,181,184,255,213,172,170,255,189,137,118,255, -162,112, 90,255,150,103, 84,255,154,106, 86,255,173,122,101,255,203,156,146,255,215,177,178,255,210,168,166,255,216,178,180,255, -220,183,186,255,215,176,176,255,209,165,162,255,204,158,149,255,200,150,138,255,197,145,129,255,194,140,121,255,190,134,112,255, -187,131,107,255,183,128,104,255,180,125,101,255,177,123,100,255,176,122, 99,255,174,122, 98,255,174,121, 97,255,174,121, 97,255, -174,121, 98,255,174,121, 98,255,174,121, 98,255,174,121, 98,255,173,121, 98,255,173,120, 98,255,172,120, 97,255,172,119, 97,255, -173,120, 97,255,173,121, 98,255,171,118, 96,255,151,105, 85,255,105, 77, 64,255,168,127,114,255,208,161,154,255,162,120,105,255, -185,140,127,255,209,165,159,255,200,149,135,255,162,112, 91,255,121, 88, 74,255,122, 84, 66,255, 97, 67, 53,255, 31, 22, 18,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255,124,101,100,255,214,177,180,255,220,184,188,255, -218,181,185,255,218,181,184,255,219,182,186,255,219,181,184,255,217,178,179,255,215,178,180,255,201,165,165,255,179,132,118,255, -135, 93, 75,255,115, 78, 63,255,119, 81, 65,255,145,100, 80,255,190,144,131,255,214,174,174,255,218,180,183,255,215,175,176,255, -195,145,130,255,168,117, 94,255,152,104, 84,255,150,104, 84,255,167,116, 94,255,195,147,134,255,213,173,172,255,209,168,166,255, -213,173,173,255,217,180,182,255,215,176,177,255,208,166,161,255,203,155,145,255,197,146,130,255,193,138,117,255,189,132,107,255, -184,128,104,255,181,126,102,255,178,124,100,255,176,122, 99,255,174,121, 98,255,173,120, 97,255,173,120, 97,255,172,120, 97,255, -172,119, 97,255,172,119, 97,255,172,119, 97,255,172,119, 97,255,172,119, 97,255,171,119, 96,255,172,120, 97,255,173,120, 98,255, -172,120, 97,255,171,119, 96,255,157,109, 87,255,115, 80, 64,255,129, 97, 84,255,204,157,148,255,192,145,133,255,167,126,112,255, -209,165,160,255,206,159,152,255,183,130,111,255,129, 92, 76,255,123, 85, 69,255, 80, 55, 45,255, 6, 4, 4,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 72, 58, 57,255,195,158,159,255, -221,183,186,255,219,182,185,255,218,180,183,255,218,180,183,255,219,181,184,255,218,180,182,255,215,177,179,255,206,170,170,255, -184,141,131,255,145,101, 82,255,116, 79, 63,255,114, 78, 62,255,134, 91, 73,255,174,127,110,255,208,165,160,255,216,177,179,255, -216,176,177,255,202,156,146,255,175,123,102,255,154,106, 86,255,150,104, 83,255,160,111, 89,255,184,133,114,255,207,161,155,255, -211,170,169,255,208,166,163,255,212,172,170,255,215,176,176,255,210,167,163,255,202,155,144,255,196,143,126,255,190,134,111,255, -185,129,104,255,181,126,102,255,178,124,100,255,175,122, 99,255,173,121, 98,255,172,120, 97,255,172,119, 97,255,171,119, 96,255, -171,119, 96,255,171,119, 96,255,171,119, 96,255,171,119, 97,255,172,119, 97,255,173,120, 97,255,173,120, 98,255,173,121, 97,255, -170,118, 96,255,157,108, 88,255,117, 83, 68,255,113, 83, 71,255,192,145,132,255,203,154,143,255,166,124,110,255,205,162,157,255, -210,165,160,255,194,143,127,255,150,105, 85,255,114, 81, 66,255, 49, 34, 27,255, 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 16, 13, 12,255, -141,114,112,255,216,177,179,255,217,179,182,255,216,179,181,255,216,178,180,255,217,179,181,255,218,180,182,255,216,177,178,255, -210,172,174,255,192,151,145,255,158,111, 92,255,120, 82, 65,255,112, 76, 61,255,123, 84, 68,255,155,108, 89,255,199,153,144,255, -211,171,172,255,214,174,175,255,209,166,162,255,185,133,112,255,161,111, 89,255,151,105, 83,255,154,107, 87,255,172,120, 99,255, -197,146,132,255,211,170,168,255,207,165,162,255,205,162,156,255,211,169,167,255,210,168,165,255,205,159,151,255,198,147,133,255, -192,137,116,255,186,130,106,255,182,127,103,255,179,125,101,255,176,122, 99,255,175,122, 99,255,174,121, 98,255,173,121, 98,255, -173,120, 97,255,173,120, 98,255,173,120, 98,255,174,121, 98,255,175,121, 98,255,174,121, 98,255,173,121, 97,255,169,117, 94,255, -153,106, 85,255,117, 82, 66,255,123, 89, 74,255,190,139,123,255,205,155,144,255,168,125,111,255,205,163,158,255,210,165,161,255, -200,150,137,255,157,110, 89,255, 97, 72, 61,255, 12, 9, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 58, 45, 43,255,167,134,133,255,208,170,171,255,217,178,179,255,216,176,177,255,214,174,175,255,216,177,179,255, -216,177,178,255,213,176,177,255,199,160,159,255,172,126,111,255,132, 92, 73,255,112, 77, 61,255,115, 79, 63,255,137, 94, 74,255, -180,132,116,255,203,161,156,255,209,170,170,255,211,170,170,255,195,147,132,255,171,121, 99,255,154,106, 86,255,151,105, 84,255, -162,111, 89,255,181,128,108,255,201,154,144,255,208,165,160,255,204,159,152,255,204,159,152,255,206,162,155,255,205,160,153,255, -201,154,143,255,197,146,131,255,193,139,119,255,189,133,111,255,186,130,106,255,183,128,104,255,181,126,103,255,180,126,102,255, -180,125,102,255,179,125,101,255,179,124,101,255,178,124,101,255,176,123, 99,255,171,119, 96,255,160,111, 90,255,141, 97, 78,255, -121, 84, 68,255,136, 96, 79,255,188,135,116,255,200,150,135,255,181,134,119,255,192,149,140,255,207,160,152,255,198,150,138,255, -137, 97, 82,255, 48, 36, 31,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 1, 1, 1,255, 53, 42, 41,255,119, 96, 94,255,200,161,159,255,216,176,175,255,214,173,172,255, -210,170,168,255,213,172,172,255,215,175,176,255,207,168,167,255,184,142,133,255,152,107, 90,255,119, 81, 63,255,110, 75, 60,255, -122, 83, 65,255,152,107, 89,255,186,139,127,255,204,161,157,255,204,164,162,255,204,160,154,255,187,136,119,255,163,113, 91,255, -153,106, 85,255,154,107, 85,255,165,115, 93,255,183,131,111,255,197,147,134,255,204,157,148,255,203,156,148,255,200,152,142,255, -198,148,135,255,196,146,132,255,196,145,129,255,195,142,125,255,193,139,119,255,191,135,113,255,189,132,108,255,186,130,105,255, -183,128,104,255,180,126,101,255,175,122, 99,255,167,117, 94,255,157,109, 88,255,145,101, 81,255,137, 95, 77,255,141, 98, 79,255, -164,114, 92,255,188,131,108,255,197,142,122,255,179,131,114,255,182,131,113,255,201,150,135,255,196,146,132,255, 89, 65, 55,255, - 6, 5, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 1,255, 8, 7, 6,255, 73, 58, 55,255,168,133,130,255, -212,169,165,255,208,165,160,255,206,161,155,255,207,165,161,255,211,170,168,255,197,157,154,255,172,126,112,255,134, 92, 74,255, -113, 77, 62,255,112, 76, 61,255,126, 87, 69,255,159,111, 93,255,191,145,134,255,189,149,144,255,198,159,155,255,202,155,145,255, -178,125,105,255,160,110, 89,255,152,105, 85,255,153,106, 85,255,162,112, 91,255,175,123,100,255,189,136,116,255,196,146,131,255, -199,149,136,255,196,144,129,255,191,136,116,255,186,131,107,255,182,127,103,255,178,124,100,255,174,121, 98,255,171,119, 96,255, -167,116, 94,255,162,113, 91,255,157,109, 88,255,155,108, 87,255,155,109, 88,255,162,112, 91,255,169,118, 95,255,177,122, 99,255, -183,127,103,255,187,132,108,255,168,121,102,255,178,126,102,255,193,138,116,255,187,137,119,255, 53, 39, 33,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 19, 14, 13,255,100, 77, 73,255,147,114,107,255,169,130,121,255,181,137,127,255,196,153,144,255,200,157,150,255,187,144,132,255, -158,114, 97,255,129, 89, 72,255,112, 76, 60,255,111, 76, 61,255,128, 88, 69,255,162,116, 97,255,178,134,121,255,186,147,140,255, -199,158,152,255,192,145,131,255,177,126,106,255,161,112, 90,255,152,105, 84,255,149,103, 83,255,153,106, 85,255,161,111, 89,255, -170,118, 95,255,178,125,103,255,182,129,107,255,184,130,108,255,184,129,106,255,183,127,104,255,181,126,102,255,179,124,100,255, -176,123, 99,255,175,122, 98,255,173,121, 97,255,173,120, 97,255,172,119, 96,255,171,119, 96,255,173,120, 97,255,175,122, 99,255, -172,121, 99,255,160,114, 94,255,174,121, 98,255,184,130,106,255,143,103, 87,255, 22, 16, 13,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 16, 13, 11,255, 35, 26, 24,255, 55, 41, 37,255, 76, 57, 51,255,113, 86, 79,255, -139,107, 97,255,161,123,110,255,160,118,102,255,132, 90, 72,255,111, 75, 59,255,109, 75, 59,255,122, 83, 66,255,144,100, 83,255, -162,118,102,255,183,139,127,255,192,151,140,255,192,149,138,255,184,135,117,255,170,118, 97,255,156,107, 85,255,149,102, 81,255, -146,101, 81,255,147,102, 82,255,149,103, 83,255,152,105, 85,255,155,108, 87,255,157,109, 88,255,159,110, 89,255,159,111, 89,255, -159,110, 89,255,159,111, 89,255,160,110, 89,255,164,113, 91,255,168,117, 94,255,169,121,100,255,158,114, 96,255,149,105, 85,255, -156,109, 88,255,176,122, 99,255,160,112, 93,255, 67, 48, 41,255, 8, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 1, 0, 0,255, 1, 1, 1,255, 1, 1, 1,255, 91, 71, 65,255,151,110, 95,255,134, 92, 74,255,114, 78, 63,255,108, 73, 59,255, -110, 75, 60,255,120, 82, 65,255,137, 94, 76,255,156,111, 92,255,173,131,115,255,185,143,131,255,190,144,129,255,185,134,116,255, -173,121, 99,255,164,114, 92,255,158,110, 88,255,154,107, 86,255,152,105, 85,255,153,106, 85,255,155,107, 86,255,157,108, 87,255, -161,111, 90,255,166,115, 94,255,167,120,100,255,158,118,101,255,140,104, 89,255,133, 95, 77,255,145,100, 80,255,164,114, 92,255, -171,122,100,255, 73, 54, 47,255, 4, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 61, 49, 45,255, 97, 70, 59,255,118, 84, 70,255, -117, 82, 67,255,121, 84, 69,255,111, 76, 60,255,106, 72, 56,255,108, 72, 57,255,112, 75, 58,255,119, 82, 65,255,128, 94, 79,255, -139,104, 91,255,148,112, 98,255,152,112, 96,255,154,115, 99,255,152,112, 94,255,148,109, 92,255,146,108, 92,255,141,105, 90,255, -133, 99, 85,255,126, 93, 79,255,124, 88, 72,255,131, 90, 72,255,134, 93, 76,255,131, 92, 75,255,115, 83, 70,255, 56, 43, 37,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 12, 10, 10,255, - 30, 22, 19,255, 49, 36, 31,255, 76, 57, 49,255,100, 73, 63,255,117, 85, 72,255,128, 92, 77,255,128, 91, 76,255,124, 85, 70,255, -118, 81, 65,255,114, 77, 61,255,113, 76, 60,255,114, 78, 62,255,117, 81, 65,255,122, 85, 69,255,128, 90, 75,255,125, 90, 74,255, -111, 80, 67,255,101, 73, 63,255, 71, 52, 45,255, 47, 34, 28,255, 32, 24, 21,255, 13, 10, 10,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 2, 2, 2,255, 13, 11, 11,255, - 25, 21, 20,255, 36, 31, 29,255, 36, 30, 28,255, 28, 24, 22,255, 23, 19, 18,255, 8, 7, 7,255, 1, 1, 1,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, - 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, - 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0,248,146, 99, 7, 31, 0, 0, 0, 1, 0, 0, 0, 80, 54,100, 7,160,239, 98, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, 46,112,105,110, 99,104, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, - 92, 46,105, 46,112,105,110, 99,104, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,148, 99, 7, 0, 0, 0, 0, -255, 81, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,248,148, 99, 7, - 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -128,149, 99, 7,232,165, 99, 7, 68, 65, 84, 65, 0, 16, 0, 0,128,149, 99, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, - 60, 61, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 62, 62, 61,255, 60, 61, 61,255, -165,140,114,255,169,145,118,255,171,146,119,255,172,147,119,255,172,148,121,255,174,150,122,255,175,151,123,255,175,151,123,255, -175,151,123,255,173,149,122,255,172,147,120,255,170,145,118,255,168,143,116,255,165,141,115,255,163,138,113,255,161,136,111,255, -159,133,109,255,156,130,107,255,153,127,104,255,150,124,102,255,147,120, 99,255,143,115, 96,255,138,111, 92,255,133,105, 87,255, -128, 99, 83,255,123, 95, 79,255,118, 89, 75,255,113, 83, 71,255,107, 78, 66,255, 99, 72, 62,255, 61, 61, 62,255, 60, 61, 61,255, -164,139,113,255,169,145,118,255,170,146,119,255,171,147,119,255,171,148,120,255,173,148,121,255,175,150,122,255,175,151,123,255, -175,152,123,255,176,151,123,255,174,150,122,255,172,148,120,255,170,146,119,255,168,144,117,255,166,141,115,255,164,139,113,255, -160,136,110,255,158,133,109,255,155,130,106,255,153,127,104,255,149,122,101,255,145,119, 98,255,141,114, 94,255,135,108, 89,255, -130,102, 85,255,126, 97, 81,255,121, 92, 77,255,115, 86, 73,255,109, 80, 68,255,102, 74, 64,255, 61, 61, 61,255, 60, 61, 61,255, -163,138,113,255,169,144,118,255,170,146,119,255,171,146,118,255,172,148,119,255,173,149,121,255,173,149,121,255,176,152,123,255, -177,153,124,255,177,153,124,255,176,152,123,255,175,151,123,255,173,149,121,255,171,146,119,255,168,144,117,255,166,141,115,255, -164,139,113,255,161,136,111,255,158,133,108,255,155,129,106,255,152,126,103,255,149,122,100,255,145,117, 97,255,138,111, 92,255, -133,105, 87,255,128,100, 83,255,123, 94, 79,255,117, 88, 75,255,111, 82, 70,255,104, 75, 65,255, 61, 61, 61,255, 60, 61, 61,255, -161,136,111,255,169,145,118,255,170,146,119,255,170,147,119,255,172,147,120,255,172,149,120,255,173,150,122,255,175,151,123,255, -176,152,124,255,177,154,125,255,178,154,124,255,177,153,125,255,175,152,123,255,173,149,121,255,171,147,119,255,169,144,118,255, -166,142,115,255,164,139,113,255,161,136,110,255,158,132,108,255,155,129,105,255,151,125,102,255,146,121, 99,255,141,114, 94,255, -136,108, 90,255,130,102, 85,255,125, 97, 81,255,119, 90, 76,255,113, 84, 72,255,107, 78, 67,255, 61, 61, 61,255, 60, 61, 61,255, -159,133,109,255,169,144,117,255,169,146,119,255,170,147,119,255,171,148,120,255,172,148,120,255,174,150,122,255,174,151,122,255, -176,152,124,255,177,153,124,255,178,154,124,255,178,154,125,255,177,154,125,255,176,152,123,255,174,150,122,255,171,147,120,255, -169,144,118,255,166,141,116,255,163,138,112,255,160,135,110,255,156,131,107,255,153,128,104,255,149,124,101,255,143,116, 96,255, -138,111, 92,255,133,105, 88,255,127, 99, 83,255,122, 93, 78,255,116, 86, 74,255,108, 79, 68,255, 61, 61, 61,255, 61, 61, 61,255, -151,125,103,255,169,144,117,255,170,145,118,255,171,146,119,255,171,147,120,255,172,148,120,255,174,150,122,255,174,152,122,255, -176,152,123,255,176,152,125,255,178,154,125,255,177,155,126,255,178,155,126,255,177,153,124,255,176,152,123,255,173,149,121,255, -170,147,120,255,168,144,117,255,165,141,115,255,162,138,112,255,159,134,109,255,155,130,106,255,151,126,103,255,145,119, 98,255, -140,114, 94,255,135,108, 89,255,129,102, 84,255,124, 95, 80,255,118, 89, 75,255,110, 81, 69,255, 61, 61, 61,255, 61, 61, 61,255, -131,103, 86,255,167,142,116,255,169,145,118,255,170,146,118,255,172,147,120,255,173,148,121,255,174,150,122,255,174,152,122,255, -175,151,123,255,177,153,125,255,176,154,125,255,176,154,125,255,176,153,124,255,176,152,125,255,176,152,124,255,173,150,122,255, -173,149,121,255,169,145,118,255,167,143,116,255,164,140,114,255,161,137,111,255,157,132,108,255,153,128,105,255,147,121,100,255, -142,116, 95,255,137,110, 91,255,131,104, 86,255,125, 97, 81,255,119, 90, 76,255,112, 83, 70,255, 61, 61, 61,255, 60, 60, 60,255, -164,139,114,255,148,121, 99,255,168,144,117,255,170,145,118,255,172,148,120,255,173,149,121,255,175,151,123,255,175,152,123,255, -175,151,124,255,177,153,124,255,177,153,125,255,177,154,125,255,177,152,124,255,176,152,124,255,175,151,122,255,174,149,121,255, -172,148,121,255,170,146,119,255,167,144,117,255,165,140,114,255,162,137,112,255,159,134,109,255,156,131,107,255,150,125,102,255, -145,119, 98,255,140,113, 93,255,134,107, 88,255,128,100, 83,255,121, 93, 78,255,114, 85, 72,255, 61, 61, 61,255, 59, 60, 60,255, -231,224,212,255,182,165,145,255,165,141,115,255,169,145,118,255,172,148,120,255,173,149,121,255,175,150,123,255,176,151,123,255, -175,152,124,255,177,153,124,255,177,152,123,255,175,153,123,255,176,152,124,255,174,151,122,255,173,151,123,255,172,148,122,255, -171,147,119,255,169,145,118,255,166,142,116,255,164,139,114,255,161,137,111,255,159,134,109,255,156,131,107,255,151,126,103,255, -147,121,100,255,142,115, 95,255,136,109, 90,255,129,101, 85,255,123, 94, 79,255,116, 87, 73,255, 61, 61, 61,255, 59, 60, 60,255, -230,222,208,255,230,223,209,255,222,215,203,255,170,146,118,255,171,147,120,255,173,149,121,255,175,151,123,255,176,152,123,255, -176,152,124,255,176,153,124,255,176,153,124,255,176,153,124,255,175,151,123,255,175,151,123,255,174,149,121,255,171,147,120,255, -171,147,118,255,168,144,117,255,165,141,115,255,162,138,112,255,160,135,110,255,157,133,108,255,155,130,106,255,152,126,104,255, -148,122,100,255,143,117, 96,255,137,110, 91,255,131,103, 86,255,124, 96, 80,255,117, 88, 74,255, 61, 61, 61,255, 59, 60, 60,255, -229,220,206,255,229,220,206,255,229,221,207,255,229,221,207,255,156,133,109,255,173,149,121,255,174,150,122,255,175,152,123,255, -176,152,124,255,176,153,124,255,176,153,124,255,176,151,123,255,175,152,123,255,173,151,123,255,173,150,122,255,172,148,119,255, -170,146,119,255,167,143,116,255,164,140,114,255,161,137,112,255,159,134,109,255,156,131,107,255,154,129,105,255,151,125,103,255, -148,122,101,255,144,118, 97,255,139,112, 92,255,132,105, 87,255,125, 97, 81,255,118, 89, 75,255, 61, 61, 61,255, 59, 60, 60,255, -228,220,205,255,228,220,205,255,228,220,205,255,226,218,203,255,226,218,202,255,219,211,196,255,174,150,121,255,175,151,123,255, -176,151,124,255,176,152,123,255,176,152,122,255,174,152,123,255,174,150,123,255,174,149,121,255,173,149,120,255,170,146,119,255, -168,144,118,255,166,142,115,255,163,139,113,255,161,136,111,255,158,133,108,255,155,130,106,255,152,127,104,255,150,124,102,255, -147,121,100,255,144,118, 97,255,140,113, 93,255,133,106, 88,255,126, 97, 82,255,118, 89, 75,255, 61, 61, 61,255, 59, 60, 60,255, -227,219,205,255,228,219,204,255,226,219,203,255,227,217,203,255,226,217,201,255,224,215,199,255,225,216,199,255,168,144,116,255, -173,149,121,255,175,151,123,255,175,150,123,255,175,151,123,255,173,150,121,255,172,148,120,255,171,147,119,255,169,145,118,255, -167,143,118,255,165,141,115,255,162,138,112,255,160,135,110,255,157,132,108,255,154,129,106,255,151,126,103,255,147,122,101,255, -146,120, 99,255,144,117, 97,255,140,113, 94,255,134,107, 88,255,126, 98, 82,255,118, 89, 75,255, 61, 61, 61,255, 59, 60, 60,255, -228,220,205,255,228,219,204,255,227,218,204,255,226,218,201,255,226,217,201,255,225,216,198,255,224,214,197,255,223,213,196,255, -222,214,199,255,171,146,119,255,173,149,120,255,172,148,120,255,173,149,121,255,172,148,120,255,171,147,119,255,169,144,117,255, -167,143,116,255,165,140,114,255,162,137,112,255,159,134,110,255,156,131,107,255,153,128,105,255,150,125,103,255,147,121, 99,255, -145,119, 97,255,143,116, 96,255,139,112, 93,255,134,107, 89,255,126, 98, 82,255,117, 88, 75,255, 61, 61, 61,255, 59, 60, 60,255, -228,220,205,255,227,219,204,255,227,218,202,255,225,218,202,255,225,216,200,255,223,214,197,255,223,213,196,255,223,213,195,255, -223,213,195,255,222,212,195,255,210,200,185,255,168,143,117,255,171,147,119,255,171,147,120,255,170,146,119,255,168,144,117,255, -165,141,116,255,163,139,113,255,160,136,112,255,158,133,109,255,155,130,107,255,152,127,104,255,149,124,101,255,146,120, 99,255, -143,117, 96,255,141,115, 94,255,138,111, 92,255,134,106, 88,255,126, 97, 82,255,115, 86, 74,255, 61, 61, 61,255, 59, 60, 60,255, -228,219,204,255,227,219,204,255,226,217,202,255,226,217,201,255,224,215,199,255,224,215,198,255,222,214,197,255,222,212,194,255, -222,212,193,255,221,211,191,255,220,210,191,255,221,211,192,255,206,198,182,255,162,137,111,255,167,143,116,255,165,141,115,255, -164,140,114,255,162,137,112,255,158,134,109,255,156,132,108,255,153,128,105,255,151,126,103,255,148,122,101,255,145,119, 98,255, -143,116, 96,255,140,113, 93,255,137,110, 91,255,133,105, 87,255,124, 96, 80,255,112, 83, 71,255, 61, 61, 61,255, 59, 60, 60,255, -227,219,204,255,227,219,203,255,226,218,201,255,226,217,201,255,225,216,198,255,223,214,197,255,223,213,195,255,222,212,193,255, -221,210,191,255,220,209,191,255,220,209,189,255,219,208,187,255,218,207,187,255,218,207,188,255,212,202,185,255,147,120,100,255, -157,132,108,255,156,132,108,255,155,130,106,255,154,129,106,255,151,126,103,255,149,123,101,255,147,121,100,255,143,118, 96,255, -142,115, 95,255,139,112, 92,255,135,108, 89,255,131,103, 86,255,122, 93, 79,255,107, 78, 67,255, 61, 61, 62,255, 59, 60, 60,255, -226,218,203,255,227,217,203,255,226,218,202,255,224,216,200,255,224,215,198,255,223,213,196,255,221,211,193,255,221,211,191,255, -219,208,189,255,218,207,187,255,217,206,185,255,217,205,184,255,216,204,183,255,215,203,181,255,215,203,181,255,215,203,180,255, -215,204,184,255,142,115, 95,255,146,120, 99,255,148,122,100,255,148,122,100,255,146,120, 98,255,145,119, 98,255,143,116, 95,255, -141,114, 94,255,137,110, 92,255,134,106, 88,255,128,100, 84,255,118, 89, 75,255, 44, 32, 29,255, 62, 62, 62,255, 59, 60, 60,255, -227,219,204,255,226,218,202,255,226,216,200,255,224,215,200,255,223,214,197,255,223,213,196,255,221,211,193,255,220,209,190,255, -219,208,187,255,217,205,184,255,216,204,183,255,215,202,179,255,214,201,178,255,213,200,177,255,212,199,175,255,212,198,173,255, -211,197,172,255,210,196,170,255,199,184,160,255,139,112, 92,255,143,115, 96,255,143,117, 96,255,144,117, 96,255,143,116, 96,255, -139,113, 93,255,136,109, 90,255,132,104, 86,255,125, 96, 81,255,108, 79, 68,255, 0, 0, 0,255, 62, 62, 62,255, 59, 60, 60,255, -227,220,206,255,227,219,203,255,226,216,200,255,224,215,198,255,222,213,196,255,222,212,194,255,221,210,192,255,218,207,188,255, -217,205,184,255,216,204,182,255,214,201,178,255,213,199,175,255,212,198,174,255,211,197,171,255,210,196,170,255,209,194,167,255, -208,193,167,255,208,193,166,255,208,192,165,255,216,205,185,255,136,109, 90,255,140,113, 93,255,142,116, 95,255,142,115, 95,255, -138,111, 91,255,134,107, 88,255,129,101, 84,255,118, 89, 75,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 59, 60, 60,255, -228,221,207,255,226,219,205,255,226,218,201,255,224,215,199,255,222,213,196,255,221,211,192,255,220,209,190,255,217,206,186,255, -216,204,183,255,214,201,179,255,213,199,175,255,211,197,172,255,209,195,169,255,208,193,167,255,208,192,165,255,208,191,164,255, -207,191,163,255,206,190,163,255,207,191,163,255,206,189,161,255,207,194,171,255,135,108, 89,255,140,113, 93,255,139,112, 93,255, -136,108, 90,255,131,104, 86,255,125, 96, 81,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 59, 60, 60,255, -228,221,207,255,226,219,205,255,225,217,202,255,225,215,199,255,222,213,196,255,221,211,192,255,219,208,189,255,217,205,184,255, -215,202,180,255,213,200,177,255,211,197,173,255,210,195,168,255,208,192,166,255,207,191,164,255,206,190,162,255,207,189,161,255, -207,189,161,255,207,189,161,255,207,190,162,255,206,191,163,255,207,192,164,255,129,100, 84,255,139,111, 92,255,136,109, 90,255, -133,105, 87,255,127, 99, 83,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 59, 60, 60,255, -227,221,207,255,226,219,205,255,225,217,202,255,224,215,199,255,223,214,196,255,220,211,192,255,219,208,189,255,217,205,184,255, -215,202,179,255,213,199,175,255,210,196,170,255,208,192,165,255,206,190,161,255,205,188,159,255,205,188,159,255,205,188,159,255, -206,188,159,255,206,189,159,255,205,188,160,255,206,190,162,255,205,187,157,255,118, 88, 75,255,134,107, 88,255,133,106, 87,255, -117, 93, 77,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 59, 60, 60,255, -227,219,205,255,226,218,203,255,225,216,201,255,223,215,198,255,221,212,195,255,220,210,192,255,218,207,188,255,216,204,182,255, -214,201,178,255,212,198,173,255,209,194,168,255,207,191,163,255,205,187,158,255,204,186,156,255,203,186,155,255,204,186,155,255, -203,186,155,255,203,186,155,255,203,185,155,255,202,184,153,255,224,215,200,255,102, 74, 63,255,130,102, 85,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 60, 60, 60,255, -224,216,200,255,224,216,200,255,223,214,198,255,222,213,196,255,221,211,193,255,219,209,190,255,217,206,186,255,215,202,180,255, -213,199,175,255,210,196,170,255,208,192,165,255,205,188,159,255,203,185,154,255,202,183,152,255,201,182,151,255,201,182,150,255, -199,180,149,255,197,177,146,255,198,179,147,255,214,202,180,255,186,165,135,255, 29, 22, 19,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 61, 61, 61,255, -156,147,132,255,219,208,189,255,219,209,191,255,219,209,189,255,218,207,188,255,217,206,186,255,216,203,182,255,213,199,176,255, -210,196,171,255,208,192,165,255,205,189,159,255,202,184,153,255,199,180,148,255,197,177,144,255,195,175,142,255,191,171,139,255, -190,169,137,255,192,172,139,255,192,171,140,255, 46, 40, 32,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, - 0, 0, 0,255, 0, 0, 0,255, 4, 4, 3,255, 88, 83, 73,255,215,201,176,255,212,199,174,255,210,195,171,255,208,193,166,255, -206,189,162,255,203,185,156,255,200,181,150,255,197,176,144,255,192,172,139,255,187,166,134,255,183,161,131,255,119,103, 84,255, - 19, 17, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 4, 4, 3,255, 12, 11, 9,255, 6, 5, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 68, 65, 84, 65, - 0,144, 0, 0,232,165, 99, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 62,255, 61, 61, 62,255, 62, 62, 61,255, 61, 61, 61,255, 88, 81, 75,255,115,102, 89,255,116,103, 89,255, -117,104, 90,255,117,105, 91,255,118,105, 91,255,118,105, 91,255,118,106, 92,255,118,106, 92,255,119,106, 92,255,119,106, 92,255, -119,106, 92,255,119,107, 92,255,119,107, 92,255,120,107, 93,255,120,107, 93,255,120,107, 93,255,120,107, 93,255,120,107, 93,255, -120,107, 93,255,120,107, 93,255,120,108, 93,255,120,108, 93,255,120,108, 93,255,120,107, 93,255,120,107, 93,255,120,107, 93,255, -119,107, 92,255,119,107, 92,255,119,106, 92,255,119,106, 92,255,119,105, 92,255,118,105, 91,255,118,105, 91,255,118,104, 91,255, -117,104, 91,255,117,104, 90,255,117,104, 89,255,116,103, 90,255,115,102, 89,255,115,102, 89,255,115,102, 89,255,114,101, 88,255, -114,101, 88,255,114,101, 88,255,113,100, 87,255,113,100, 87,255,113,100, 87,255,112, 99, 86,255,112, 98, 86,255,111, 98, 85,255, -111, 97, 85,255,110, 97, 85,255,110, 97, 84,255,110, 96, 84,255,109, 96, 84,255,108, 95, 83,255,108, 94, 83,255,108, 94, 83,255, -107, 93, 82,255,107, 93, 82,255,106, 92, 81,255,105, 92, 80,255,105, 91, 80,255,104, 90, 79,255,104, 90, 79,255,103, 89, 79,255, -102, 88, 78,255,101, 87, 77,255,101, 87, 76,255,100, 86, 76,255, 99, 84, 76,255, 98, 84, 75,255, 97, 83, 74,255, 97, 82, 73,255, - 96, 82, 73,255, 95, 81, 72,255, 94, 80, 71,255, 93, 79, 71,255, 93, 78, 70,255, 92, 77, 70,255, 91, 76, 68,255, 90, 75, 68,255, - 90, 74, 67,255, 88, 73, 66,255, 88, 72, 66,255, 86, 71, 65,255, 85, 70, 64,255, 84, 69, 63,255, 83, 68, 63,255, 82, 67, 62,255, - 80, 66, 62,255, 79, 66, 60,255, 70, 63, 61,255, 61, 61, 62,255, 60, 61, 61,255,113,100, 87,255,165,139,113,255,167,142,115,255, -168,144,117,255,169,144,117,255,171,146,118,255,172,146,119,255,171,147,119,255,171,147,120,255,172,147,120,255,172,148,120,255, -173,148,120,255,173,148,121,255,173,148,121,255,174,149,121,255,174,150,122,255,175,150,122,255,174,150,122,255,174,150,122,255, -174,150,122,255,175,151,123,255,175,151,123,255,175,151,123,255,175,151,123,255,175,151,123,255,175,151,123,255,175,151,122,255, -174,150,122,255,174,150,122,255,173,149,121,255,173,149,121,255,172,148,121,255,172,147,120,255,171,147,119,255,170,146,119,255, -170,145,118,255,169,144,118,255,168,144,117,255,168,143,116,255,167,142,116,255,166,141,115,255,166,140,115,255,165,140,114,255, -164,139,113,255,164,138,113,255,162,137,112,255,162,136,111,255,162,136,111,255,160,135,110,255,159,134,109,255,159,133,109,255, -158,132,108,255,157,131,107,255,156,130,107,255,155,130,106,255,155,128,105,255,153,127,104,255,152,126,103,255,152,125,103,255, -150,124,102,255,150,123,101,255,149,121,100,255,147,120, 99,255,146,120, 98,255,145,118, 97,255,144,117, 96,255,143,116, 95,255, -141,114, 94,255,140,113, 93,255,139,111, 91,255,137,109, 90,255,135,107, 89,255,134,105, 87,255,132,104, 86,255,131,103, 86,255, -130,101, 84,255,128, 99, 83,255,126, 98, 82,255,125, 95, 80,255,123, 94, 79,255,122, 93, 78,255,120, 90, 76,255,118, 89, 75,255, -116, 86, 73,255,114, 85, 72,255,112, 83, 71,255,110, 80, 68,255,108, 79, 67,255,106, 77, 66,255,104, 74, 64,255,101, 73, 63,255, - 99, 72, 62,255, 97, 69, 60,255, 78, 65, 60,255, 61, 61, 62,255, 60, 61, 61,255,113, 99, 87,255,163,138,113,255,165,140,114,255, -167,142,116,255,168,143,116,255,169,145,118,255,169,146,119,255,170,145,118,255,171,146,119,255,170,147,120,255,171,146,120,255, -172,147,119,255,171,148,119,255,172,147,121,255,172,148,121,255,172,148,120,255,172,148,120,255,174,150,122,255,173,149,121,255, -174,150,122,255,175,151,123,255,175,151,123,255,175,151,123,255,175,151,123,255,175,151,123,255,174,150,122,255,175,151,123,255, -175,151,123,255,174,150,122,255,174,149,122,255,173,149,122,255,173,149,121,255,172,147,120,255,172,147,120,255,170,147,119,255, -170,146,119,255,170,145,118,255,169,144,117,255,168,144,117,255,168,143,116,255,167,142,116,255,166,141,115,255,165,141,115,255, -164,140,114,255,164,139,113,255,163,138,113,255,162,137,112,255,162,136,111,255,161,136,111,255,159,134,110,255,159,134,109,255, -159,133,109,255,157,131,108,255,156,131,107,255,156,130,107,255,155,129,105,255,154,128,105,255,153,127,104,255,152,126,103,255, -151,125,103,255,150,124,102,255,149,122,100,255,148,121,100,255,147,120, 99,255,145,119, 98,255,144,118, 97,255,143,115, 96,255, -142,114, 94,255,141,113, 94,255,138,111, 92,255,137,109, 90,255,136,108, 90,255,134,106, 88,255,133,105, 87,255,132,104, 86,255, -130,101, 84,255,128, 99, 83,255,127, 98, 82,255,125, 96, 80,255,123, 95, 79,255,122, 93, 78,255,120, 91, 76,255,118, 89, 75,255, -116, 87, 74,255,115, 85, 72,255,113, 83, 71,255,111, 81, 69,255,109, 80, 68,255,107, 78, 66,255,104, 75, 64,255,102, 73, 63,255, - 99, 72, 62,255, 97, 70, 60,255, 79, 66, 60,255, 61, 61, 62,255, 60, 61, 61,255,112, 99, 86,255,163,137,112,255,164,139,113,255, -166,142,116,255,168,143,116,255,169,145,118,255,169,145,118,255,170,146,119,255,171,146,119,255,170,146,119,255,171,146,119,255, -171,147,120,255,172,147,119,255,171,148,120,255,172,147,121,255,173,148,120,255,173,149,121,255,174,150,122,255,173,149,121,255, -174,150,122,255,175,151,123,255,174,150,122,255,175,151,123,255,175,151,123,255,174,150,123,255,174,150,123,255,175,151,123,255, -175,151,122,255,174,150,123,255,174,150,122,255,174,150,122,255,173,150,122,255,172,149,121,255,172,148,121,255,172,147,120,255, -171,146,119,255,170,146,119,255,170,145,118,255,169,144,117,255,168,144,117,255,167,143,116,255,167,142,116,255,166,141,115,255, -165,140,114,255,164,140,114,255,164,139,113,255,163,138,112,255,162,137,112,255,161,136,111,255,161,135,110,255,160,135,110,255, -159,134,109,255,158,133,108,255,157,131,107,255,156,131,107,255,156,130,106,255,154,129,105,255,153,127,104,255,153,127,104,255, -152,126,103,255,151,125,102,255,149,124,101,255,148,122,100,255,147,121, 99,255,146,119, 98,255,145,118, 97,255,144,117, 96,255, -142,116, 96,255,141,114, 94,255,139,112, 93,255,138,110, 92,255,136,109, 90,255,135,108, 89,255,133,106, 88,255,132,104, 87,255, -130,102, 85,255,128,100, 84,255,127, 99, 83,255,126, 97, 81,255,124, 95, 80,255,122, 94, 78,255,121, 92, 77,255,119, 90, 76,255, -117, 88, 74,255,115, 87, 73,255,113, 84, 71,255,112, 82, 70,255,109, 80, 69,255,107, 78, 67,255,105, 76, 65,255,102, 74, 64,255, -100, 72, 62,255, 98, 70, 61,255, 79, 66, 61,255, 61, 61, 62,255, 60, 61, 61,255,112, 98, 86,255,162,136,112,255,164,139,113,255, -166,142,115,255,167,143,116,255,169,145,118,255,170,145,118,255,170,146,119,255,170,145,118,255,171,146,118,255,170,147,118,255, -171,146,120,255,172,147,119,255,171,148,119,255,172,147,120,255,172,148,121,255,173,149,121,255,173,149,121,255,174,150,122,255, -173,149,121,255,174,150,122,255,175,151,123,255,175,151,123,255,174,150,123,255,175,151,123,255,175,151,123,255,176,152,123,255, -176,152,122,255,175,151,122,255,174,150,122,255,174,150,122,255,174,149,121,255,174,149,121,255,173,149,121,255,172,148,120,255, -172,147,120,255,171,147,120,255,170,146,119,255,170,145,118,255,169,144,117,255,168,144,117,255,167,143,116,255,167,142,116,255, -166,141,115,255,165,140,114,255,164,140,114,255,164,139,113,255,163,138,112,255,162,137,112,255,161,136,111,255,161,135,110,255, -160,134,110,255,159,134,109,255,158,133,108,255,157,131,107,255,156,131,107,255,156,130,106,255,154,128,105,255,153,127,104,255, -153,127,104,255,151,125,103,255,151,125,102,255,150,124,101,255,148,122,100,255,147,121, 99,255,146,120, 98,255,145,118, 97,255, -144,117, 96,255,143,116, 95,255,140,113, 93,255,139,112, 92,255,138,110, 91,255,136,108, 90,255,135,107, 89,255,133,105, 87,255, -131,103, 85,255,130,102, 85,255,128, 99, 83,255,127, 98, 82,255,125, 97, 81,255,123, 94, 79,255,121, 93, 77,255,120, 91, 77,255, -118, 89, 75,255,117, 87, 74,255,114, 85, 72,255,112, 83, 70,255,110, 81, 69,255,108, 79, 68,255,106, 77, 65,255,103, 75, 65,255, -101, 73, 63,255, 98, 71, 61,255, 80, 66, 61,255, 61, 61, 62,255, 60, 61, 61,255,111, 98, 85,255,161,136,110,255,164,139,113,255, -166,142,115,255,168,143,116,255,169,145,118,255,170,145,118,255,170,145,118,255,170,146,119,255,171,145,119,255,171,145,119,255, -171,147,119,255,171,147,120,255,171,147,120,255,171,148,120,255,172,147,121,255,172,149,120,255,173,148,121,255,174,149,122,255, -174,149,121,255,175,150,122,255,174,150,122,255,174,150,123,255,175,151,123,255,175,151,123,255,176,151,122,255,176,152,123,255, -175,152,123,255,175,152,124,255,176,152,124,255,176,151,123,255,174,151,123,255,175,151,123,255,174,150,122,255,173,149,121,255, -173,148,121,255,172,148,120,255,172,147,120,255,171,146,119,255,170,146,119,255,170,145,118,255,169,144,117,255,168,144,117,255, -167,142,116,255,166,141,115,255,166,141,115,255,165,140,114,255,164,139,113,255,164,139,113,255,162,137,112,255,162,136,111,255, -160,136,110,255,160,134,110,255,159,134,109,255,158,133,109,255,157,132,108,255,157,131,107,255,155,130,106,255,154,128,105,255, -154,128,105,255,153,127,104,255,151,125,103,255,151,124,102,255,149,122,101,255,148,122,100,255,147,121, 99,255,145,119, 98,255, -144,118, 97,255,143,116, 96,255,141,114, 94,255,140,112, 93,255,138,111, 92,255,136,109, 90,255,135,108, 89,255,134,106, 88,255, -132,104, 86,255,130,102, 85,255,129,101, 84,255,127, 99, 83,255,126, 97, 81,255,124, 96, 79,255,122, 93, 78,255,121, 92, 77,255, -119, 90, 76,255,117, 88, 74,255,115, 86, 73,255,113, 84, 71,255,111, 82, 70,255,109, 80, 68,255,107, 78, 66,255,105, 76, 65,255, -102, 74, 64,255,100, 72, 62,255, 80, 66, 61,255, 61, 61, 61,255, 60, 61, 61,255,111, 97, 85,255,161,135,111,255,164,139,113,255, -166,141,115,255,168,143,116,255,169,144,118,255,170,144,117,255,170,145,118,255,170,146,119,255,171,146,119,255,171,145,119,255, -170,147,119,255,170,146,120,255,171,146,119,255,171,147,120,255,172,147,121,255,172,149,120,255,173,148,121,255,173,149,121,255, -174,149,121,255,174,150,122,255,175,151,123,255,175,151,123,255,175,151,123,255,176,152,122,255,176,152,123,255,175,152,123,255, -176,153,124,255,176,152,124,255,176,152,123,255,176,152,124,255,175,151,123,255,175,151,123,255,174,150,122,255,174,150,122,255, -174,150,122,255,173,148,121,255,172,148,120,255,172,147,120,255,171,146,119,255,170,146,119,255,169,145,118,255,169,145,118,255, -168,144,117,255,167,142,116,255,166,142,115,255,166,141,115,255,165,140,114,255,164,139,113,255,163,138,113,255,162,137,112,255, -161,136,111,255,161,136,111,255,160,134,110,255,159,133,109,255,158,132,108,255,157,132,108,255,156,131,107,255,155,130,106,255, -154,128,105,255,153,127,104,255,153,127,104,255,151,125,103,255,150,124,102,255,149,123,101,255,148,121,100,255,147,120, 99,255, -146,118, 97,255,144,117, 97,255,143,116, 95,255,140,113, 93,255,139,112, 92,255,138,111, 91,255,136,109, 90,255,134,107, 89,255, -133,105, 87,255,131,103, 86,255,130,102, 84,255,128,100, 83,255,127, 98, 82,255,124, 96, 80,255,123, 95, 79,255,121, 92, 78,255, -120, 91, 76,255,118, 88, 75,255,116, 86, 73,255,114, 84, 72,255,111, 82, 70,255,109, 80, 69,255,107, 78, 67,255,105, 76, 65,255, -103, 74, 64,255,100, 72, 62,255, 81, 67, 61,255, 61, 61, 62,255, 60, 61, 61,255,111, 97, 85,255,160,135,109,255,164,138,113,255, -166,141,115,255,167,142,116,255,169,144,118,255,169,144,117,255,169,145,118,255,171,145,118,255,171,146,119,255,171,145,119,255, -170,146,118,255,171,147,119,255,171,147,120,255,171,147,120,255,171,147,119,255,173,149,121,255,172,148,120,255,173,149,121,255, -173,149,121,255,174,150,122,255,175,151,123,255,174,150,123,255,175,151,123,255,176,152,122,255,175,151,124,255,176,152,124,255, -177,153,123,255,176,152,124,255,176,152,124,255,176,152,123,255,176,152,124,255,175,151,123,255,175,151,124,255,174,151,122,255, -175,150,123,255,173,149,121,255,173,149,121,255,172,148,120,255,171,147,120,255,171,147,119,255,170,146,119,255,169,144,117,255, -169,144,117,255,168,143,117,255,167,142,116,255,166,142,115,255,166,141,115,255,164,139,114,255,164,139,113,255,164,139,113,255, -162,137,112,255,161,136,111,255,161,136,111,255,159,134,109,255,159,133,109,255,159,133,108,255,157,131,107,255,156,130,107,255, -155,130,106,255,154,128,105,255,153,127,104,255,153,127,104,255,151,125,102,255,150,124,101,255,149,123,101,255,147,121, 99,255, -146,120, 98,255,145,119, 98,255,144,117, 96,255,142,115, 94,255,140,113, 93,255,138,111, 92,255,137,110, 91,255,136,107, 89,255, -134,106, 88,255,132,104, 87,255,130,102, 85,255,129,101, 84,255,127, 99, 82,255,125, 97, 81,255,124, 95, 80,255,122, 94, 79,255, -120, 91, 76,255,118, 89, 75,255,117, 88, 74,255,114, 85, 72,255,113, 83, 71,255,111, 81, 69,255,108, 79, 67,255,106, 77, 66,255, -104, 75, 65,255,101, 73, 63,255, 81, 67, 62,255, 61, 61, 61,255, 60, 61, 61,255,110, 97, 85,255,160,133,109,255,163,138,113,255, -166,141,115,255,168,143,116,255,169,144,118,255,169,145,117,255,169,145,118,255,170,146,119,255,171,146,119,255,171,146,119,255, -171,146,118,255,170,147,119,255,171,147,120,255,172,148,119,255,172,148,120,255,171,147,121,255,173,149,121,255,172,148,120,255, -174,150,122,255,173,149,121,255,174,150,122,255,174,150,122,255,175,151,122,255,176,152,123,255,175,151,123,255,176,152,124,255, -177,153,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,153,123,255,177,153,123,255,176,152,123,255,175,152,123,255, -175,152,123,255,175,151,123,255,174,150,122,255,173,149,121,255,173,149,121,255,172,148,120,255,171,147,120,255,171,146,119,255, -170,146,118,255,169,144,118,255,168,144,117,255,167,143,116,255,167,142,116,255,166,141,115,255,165,140,114,255,164,139,114,255, -164,139,113,255,163,137,112,255,162,137,112,255,161,136,111,255,160,135,110,255,159,134,110,255,158,133,108,255,157,131,108,255, -156,130,107,255,155,129,106,255,154,128,105,255,153,127,104,255,152,126,103,255,151,124,102,255,150,124,102,255,149,122,100,255, -147,121, 99,255,146,120, 98,255,145,117, 97,255,143,116, 96,255,141,114, 94,255,140,113, 93,255,138,111, 92,255,136,109, 90,255, -134,107, 88,255,133,105, 87,255,132,104, 87,255,130,102, 84,255,128,100, 83,255,127, 98, 82,255,124, 96, 80,255,123, 94, 79,255, -121, 92, 77,255,119, 90, 76,255,117, 88, 75,255,115, 86, 73,255,113, 84, 71,255,111, 82, 70,255,109, 80, 68,255,107, 78, 66,255, -104, 75, 65,255,103, 74, 64,255, 82, 67, 62,255, 61, 61, 61,255, 60, 61, 61,255,110, 96, 84,255,159,133,108,255,163,137,112,255, -166,141,115,255,167,143,116,255,169,145,118,255,170,144,118,255,170,144,118,255,170,146,119,255,171,146,119,255,171,145,119,255, -171,146,119,255,170,146,119,255,171,147,120,255,172,148,119,255,171,147,120,255,172,148,120,255,173,148,121,255,172,148,120,255, -174,149,122,255,173,149,121,255,174,150,122,255,174,150,123,255,175,151,122,255,175,151,123,255,175,151,124,255,176,152,124,255, -177,153,124,255,177,153,124,255,177,153,123,255,177,152,123,255,176,152,124,255,176,152,124,255,177,153,123,255,176,152,124,255, -176,152,123,255,175,152,123,255,174,151,122,255,174,150,122,255,173,149,121,255,173,148,121,255,172,148,120,255,171,147,119,255, -170,146,119,255,170,145,119,255,169,144,117,255,168,144,117,255,167,143,116,255,166,142,115,255,166,141,115,255,165,140,114,255, -164,139,113,255,163,138,113,255,163,137,112,255,161,136,111,255,161,136,111,255,160,135,110,255,159,133,109,255,158,133,108,255, -157,131,107,255,156,130,106,255,155,129,106,255,154,128,105,255,153,127,104,255,152,126,103,255,151,124,102,255,149,123,101,255, -148,122,100,255,147,120, 99,255,145,119, 97,255,144,117, 96,255,142,115, 95,255,140,113, 93,255,139,112, 93,255,137,110, 91,255, -136,108, 89,255,134,107, 89,255,132,104, 87,255,131,103, 85,255,128,100, 83,255,127, 99, 82,255,125, 97, 81,255,124, 95, 80,255, -121, 93, 78,255,120, 91, 77,255,118, 89, 75,255,116, 87, 73,255,114, 85, 72,255,112, 83, 70,255,110, 80, 68,255,108, 78, 67,255, -105, 76, 65,255,103, 74, 64,255, 82, 67, 62,255, 61, 61, 61,255, 60, 61, 61,255,109, 95, 84,255,158,132,108,255,162,136,112,255, -166,141,115,255,167,143,116,255,169,145,118,255,170,144,119,255,169,145,119,255,171,146,119,255,171,146,119,255,171,145,118,255, -171,147,120,255,170,147,120,255,171,146,119,255,171,147,120,255,172,148,121,255,173,147,121,255,173,148,121,255,172,149,120,255, -174,149,122,255,173,150,122,255,173,149,121,255,175,151,123,255,174,150,122,255,175,151,123,255,175,151,124,255,176,152,124,255, -177,153,124,255,177,153,123,255,177,152,124,255,176,153,124,255,178,153,124,255,178,154,124,255,177,153,125,255,176,152,124,255, -177,153,124,255,176,152,123,255,175,151,123,255,174,152,122,255,175,151,123,255,173,149,121,255,173,149,121,255,172,148,120,255, -171,147,120,255,171,147,119,255,169,145,118,255,169,144,117,255,169,144,118,255,167,142,116,255,166,142,115,255,166,142,116,255, -165,140,114,255,164,139,113,255,164,139,113,255,162,137,112,255,161,136,111,255,161,136,110,255,159,134,110,255,159,133,109,255, -158,133,109,255,156,131,107,255,155,130,106,255,155,130,106,255,153,128,104,255,152,127,104,255,152,126,103,255,150,124,101,255, -149,123,101,255,148,122,100,255,146,119, 98,255,144,118, 97,255,143,116, 96,255,141,114, 94,255,140,113, 93,255,138,111, 91,255, -136,109, 90,255,135,107, 89,255,133,105, 87,255,131,104, 86,255,130,102, 85,255,127, 99, 83,255,126, 98, 82,255,124, 96, 80,255, -122, 93, 78,255,121, 92, 77,255,119, 90, 76,255,117, 87, 74,255,115, 86, 73,255,113, 83, 71,255,110, 81, 69,255,108, 79, 68,255, -106, 77, 66,255,104, 74, 64,255, 82, 68, 62,255, 61, 61, 61,255, 60, 61, 61,255,108, 95, 83,255,157,131,107,255,161,136,111,255, -166,141,115,255,167,142,116,255,169,145,118,255,170,145,118,255,169,146,119,255,170,146,119,255,170,146,119,255,170,145,118,255, -170,147,119,255,171,147,120,255,171,146,119,255,172,147,120,255,173,148,121,255,173,147,121,255,172,149,120,255,173,148,121,255, -173,149,121,255,173,150,122,255,174,149,121,255,175,151,123,255,174,150,122,255,175,151,123,255,175,151,124,255,175,151,124,255, -176,152,124,255,177,152,123,255,176,153,124,255,177,154,125,255,177,153,124,255,177,153,125,255,178,154,124,255,177,154,125,255, -177,153,125,255,177,153,125,255,176,152,124,255,176,152,124,255,175,152,123,255,175,151,123,255,174,150,122,255,173,149,121,255, -172,148,120,255,172,148,120,255,171,147,119,255,170,146,119,255,169,145,118,255,169,144,118,255,167,143,116,255,167,142,116,255, -166,142,115,255,165,140,114,255,164,140,114,255,164,139,113,255,162,137,112,255,161,136,111,255,161,136,110,255,159,134,110,255, -159,133,109,255,158,132,108,255,156,131,107,255,156,130,106,255,155,129,105,255,153,127,104,255,152,126,104,255,151,125,102,255, -150,124,101,255,149,122,101,255,146,121, 99,255,145,119, 97,255,144,117, 96,255,142,116, 95,255,141,114, 94,255,139,112, 93,255, -137,110, 91,255,136,108, 90,255,134,107, 89,255,132,104, 86,255,130,102, 85,255,129,101, 84,255,127, 98, 82,255,125, 97, 81,255, -123, 95, 79,255,121, 93, 78,255,119, 90, 76,255,118, 89, 75,255,116, 86, 73,255,113, 84, 72,255,111, 82, 70,255,109, 80, 68,255, -107, 78, 67,255,105, 75, 65,255, 83, 68, 63,255, 61, 61, 61,255, 60, 61, 61,255,107, 93, 82,255,156,129,107,255,161,135,110,255, -165,140,114,255,167,143,116,255,169,145,118,255,170,145,118,255,170,145,119,255,169,146,119,255,170,146,119,255,170,145,119,255, -170,147,119,255,171,147,119,255,172,146,120,255,172,148,120,255,172,147,121,255,173,148,121,255,172,148,120,255,173,149,121,255, -173,150,122,255,174,150,122,255,174,149,121,255,174,151,123,255,174,150,123,255,175,151,122,255,176,152,124,255,175,151,124,255, -176,152,124,255,177,152,123,255,176,153,124,255,177,153,124,255,178,154,125,255,178,154,125,255,178,154,125,255,178,153,125,255, -178,154,125,255,177,153,125,255,177,153,125,255,176,152,124,255,176,152,124,255,175,151,123,255,174,151,122,255,174,150,122,255, -173,149,121,255,173,149,121,255,171,147,120,255,171,146,119,255,170,146,119,255,169,145,118,255,168,144,117,255,168,143,116,255, -166,142,116,255,166,141,115,255,165,140,114,255,164,139,113,255,163,138,113,255,162,137,112,255,161,136,111,255,161,136,111,255, -159,134,110,255,158,133,108,255,157,132,108,255,156,130,107,255,155,130,106,255,154,129,105,255,153,127,104,255,151,126,103,255, -151,125,102,255,149,123,101,255,148,122,100,255,146,120, 99,255,144,118, 97,255,143,116, 96,255,142,115, 95,255,140,113, 93,255, -138,111, 92,255,137,109, 91,255,135,107, 89,255,133,106, 87,255,132,104, 86,255,129,101, 84,255,128,100, 83,255,125, 98, 82,255, -124, 95, 80,255,122, 93, 79,255,120, 92, 77,255,118, 89, 75,255,116, 87, 74,255,114, 85, 72,255,112, 83, 70,255,109, 80, 68,255, -107, 78, 67,255,105, 76, 65,255, 83, 69, 63,255, 61, 61, 61,255, 60, 61, 61,255,106, 92, 80,255,153,128,104,255,160,134,110,255, -164,139,114,255,167,143,116,255,169,145,118,255,170,144,119,255,170,145,119,255,170,146,119,255,171,146,119,255,171,145,119,255, -170,147,119,255,171,146,120,255,172,147,120,255,171,147,119,255,172,148,120,255,173,149,121,255,172,148,120,255,173,149,121,255, -173,150,122,255,174,149,121,255,175,150,122,255,175,151,123,255,175,151,123,255,174,150,122,255,176,152,124,255,175,151,124,255, -176,152,124,255,177,153,124,255,176,152,123,255,177,153,124,255,178,154,125,255,178,154,125,255,178,154,125,255,178,154,125,255, -177,153,125,255,178,154,125,255,178,154,124,255,177,153,125,255,176,152,124,255,176,152,123,255,176,152,124,255,175,151,123,255, -174,150,122,255,174,150,122,255,172,149,121,255,171,147,120,255,171,147,120,255,170,145,118,255,169,145,118,255,169,145,118,255, -167,143,116,255,166,142,115,255,166,141,115,255,165,140,114,255,164,139,113,255,163,138,113,255,162,137,111,255,161,136,111,255, -160,135,111,255,159,134,109,255,158,133,108,255,157,132,108,255,156,130,106,255,155,129,106,255,154,128,105,255,152,126,103,255, -151,125,103,255,150,124,102,255,148,122,100,255,147,120, 99,255,146,119, 98,255,144,117, 96,255,142,116, 96,255,141,114, 94,255, -139,112, 92,255,137,110, 91,255,136,109, 90,255,134,106, 88,255,132,104, 87,255,130,102, 85,255,128,100, 84,255,127, 98, 82,255, -124, 96, 80,255,123, 95, 79,255,121, 92, 78,255,119, 90, 76,255,117, 88, 74,255,115, 86, 73,255,112, 83, 70,255,110, 81, 69,255, -108, 79, 67,255,106, 77, 66,255, 83, 69, 64,255, 61, 61, 61,255, 60, 61, 61,255,104, 90, 80,255,151,124,102,255,159,133,109,255, -164,139,113,255,167,142,116,255,169,144,117,255,170,145,118,255,170,145,118,255,169,146,119,255,170,146,119,255,171,147,118,255, -170,147,119,255,171,146,120,255,171,147,120,255,171,148,120,255,172,147,120,255,173,148,121,255,172,148,120,255,173,149,121,255, -173,149,121,255,174,150,122,255,175,151,123,255,175,150,123,255,175,151,123,255,174,151,122,255,176,151,124,255,175,151,124,255, -176,152,124,255,176,153,123,255,176,152,124,255,177,153,124,255,177,154,125,255,178,154,125,255,178,154,124,255,178,154,125,255, -178,154,125,255,178,154,125,255,178,154,125,255,177,154,124,255,177,154,125,255,176,152,124,255,176,152,124,255,176,152,123,255, -174,151,123,255,174,151,122,255,174,150,122,255,173,148,121,255,172,148,120,255,171,147,120,255,170,146,119,255,169,145,118,255, -169,144,118,255,167,143,116,255,167,142,116,255,166,141,116,255,165,140,114,255,164,139,114,255,163,138,112,255,162,137,112,255, -161,136,111,255,160,135,110,255,159,133,109,255,158,132,108,255,156,131,107,255,156,130,106,255,155,129,106,255,153,128,104,255, -152,126,103,255,151,125,102,255,149,124,101,255,148,122,100,255,146,120, 99,255,145,119, 97,255,143,116, 96,255,141,115, 95,255, -139,112, 93,255,138,111, 92,255,137,110, 91,255,134,107, 88,255,133,105, 88,255,131,104, 86,255,129,101, 84,255,127, 99, 83,255, -125, 97, 81,255,124, 95, 79,255,122, 93, 78,255,120, 91, 76,255,118, 89, 75,255,116, 86, 74,255,113, 84, 71,255,111, 82, 69,255, -108, 79, 68,255,107, 78, 66,255, 84, 69, 64,255, 61, 61, 61,255, 61, 61, 61,255,102, 88, 78,255,148,121,100,255,157,132,107,255, -163,138,113,255,167,142,116,255,169,144,117,255,170,144,117,255,169,145,118,255,169,146,119,255,170,146,119,255,171,147,118,255, -171,146,119,255,170,146,120,255,171,147,119,255,172,148,120,255,171,147,121,255,173,148,121,255,172,148,120,255,173,149,121,255, -173,149,121,255,174,150,122,255,175,151,123,255,175,151,123,255,175,151,123,255,174,152,122,255,176,152,124,255,175,151,124,255, -176,152,124,255,177,153,123,255,176,152,124,255,177,153,125,255,178,154,125,255,178,154,125,255,178,153,124,255,178,154,126,255, -178,155,126,255,178,155,126,255,178,155,125,255,177,154,125,255,176,153,124,255,177,153,124,255,177,153,124,255,176,152,124,255, -175,151,123,255,175,151,123,255,173,150,121,255,173,149,121,255,172,149,121,255,172,148,120,255,171,147,119,255,170,145,119,255, -169,145,118,255,168,144,117,255,167,143,116,255,166,142,115,255,166,141,115,255,165,140,114,255,163,139,113,255,163,138,112,255, -162,137,112,255,161,136,111,255,160,135,110,255,158,133,109,255,157,132,108,255,156,131,107,255,155,130,106,255,154,128,105,255, -153,127,104,255,151,126,103,255,150,124,102,255,148,122,100,255,147,121, 99,255,145,119, 98,255,144,118, 97,255,142,115, 95,255, -140,114, 94,255,139,112, 93,255,137,110, 91,255,135,108, 89,255,134,106, 88,255,132,104, 86,255,130,102, 85,255,128,100, 83,255, -126, 98, 81,255,124, 95, 80,255,123, 94, 79,255,120, 91, 77,255,118, 90, 76,255,117, 88, 74,255,114, 85, 72,255,112, 83, 70,255, -109, 80, 68,255,107, 78, 67,255, 84, 69, 63,255, 61, 61, 61,255, 61, 61, 61,255, 99, 84, 75,255,144,117, 97,255,155,128,105,255, -162,137,112,255,166,142,115,255,169,144,118,255,169,144,117,255,170,145,118,255,169,146,119,255,170,146,118,255,171,145,119,255, -170,146,119,255,171,146,120,255,172,147,119,255,172,148,121,255,171,147,121,255,173,149,121,255,172,148,120,255,173,149,121,255, -173,149,121,255,174,150,122,255,175,151,123,255,175,151,123,255,175,152,123,255,174,152,122,255,176,152,124,255,176,151,124,255, -175,152,123,255,177,153,125,255,177,152,124,255,176,153,125,255,178,154,125,255,178,154,125,255,178,153,124,255,178,155,126,255, -178,155,126,255,178,154,125,255,178,155,126,255,177,154,125,255,178,155,126,255,176,153,124,255,177,154,125,255,177,153,124,255, -175,152,123,255,176,152,124,255,175,151,123,255,174,150,122,255,173,149,122,255,173,149,120,255,172,148,120,255,171,147,120,255, -170,145,118,255,169,145,118,255,168,144,117,255,167,142,117,255,166,142,116,255,166,141,115,255,164,139,114,255,163,138,113,255, -163,138,113,255,161,136,111,255,160,135,111,255,160,134,110,255,158,132,108,255,157,132,108,255,156,131,107,255,154,129,105,255, -153,128,105,255,152,127,104,255,150,125,102,255,149,123,101,255,148,122,100,255,146,120, 98,255,145,118, 97,255,143,117, 96,255, -141,115, 94,255,140,113, 93,255,139,112, 92,255,136,109, 90,255,135,107, 89,255,132,105, 87,255,131,103, 85,255,129,101, 84,255, -126, 98, 82,255,125, 97, 80,255,123, 95, 79,255,121, 92, 77,255,119, 90, 76,255,117, 88, 75,255,114, 85, 72,255,113, 84, 71,255, -110, 81, 69,255,108, 78, 67,255, 85, 70, 64,255, 61, 61, 61,255, 61, 61, 61,255, 96, 81, 73,255,139,111, 92,255,151,125,103,255, -161,136,110,255,166,141,115,255,169,144,117,255,169,145,118,255,169,144,117,255,170,145,118,255,171,146,119,255,171,146,119,255, -171,146,119,255,172,147,120,255,171,146,119,255,171,147,120,255,172,147,120,255,173,149,121,255,172,148,120,255,173,149,121,255, -173,149,121,255,174,150,122,255,175,151,123,255,175,151,123,255,175,152,123,255,174,152,122,255,176,152,124,255,175,151,124,255, -176,152,123,255,177,152,125,255,177,153,125,255,176,152,125,255,178,154,125,255,178,154,125,255,178,154,125,255,178,154,125,255, -178,154,125,255,177,155,126,255,178,155,126,255,178,154,125,255,178,155,126,255,176,153,124,255,177,154,125,255,177,153,124,255, -176,153,124,255,175,152,124,255,176,152,123,255,174,151,123,255,174,150,122,255,173,149,121,255,172,148,121,255,172,147,120,255, -170,147,120,255,170,146,119,255,169,145,118,255,168,144,117,255,167,143,116,255,167,142,116,255,165,141,115,255,164,140,114,255, -164,139,113,255,162,138,112,255,161,136,111,255,160,135,110,255,159,134,109,255,157,132,108,255,156,131,107,255,155,130,106,255, -154,128,105,255,153,127,104,255,151,126,103,255,150,124,101,255,149,123,101,255,146,120, 99,255,145,119, 98,255,144,117, 97,255, -142,116, 95,255,140,114, 94,255,138,111, 92,255,137,110, 90,255,135,108, 89,255,134,106, 87,255,131,103, 86,255,129,102, 84,255, -127, 99, 83,255,125, 97, 81,255,124, 95, 80,255,122, 93, 78,255,120, 91, 76,255,118, 89, 75,255,115, 86, 73,255,113, 84, 71,255, -110, 81, 69,255,108, 79, 67,255, 85, 70, 64,255, 61, 61, 61,255, 61, 61, 61,255, 93, 79, 70,255,133,105, 87,255,148,121, 99,255, -158,133,109,255,164,139,114,255,168,144,117,255,169,144,118,255,170,145,118,255,170,145,118,255,170,146,119,255,170,146,119,255, -171,146,119,255,171,147,119,255,172,146,120,255,172,147,120,255,172,147,120,255,172,149,121,255,172,148,120,255,173,149,121,255, -173,149,121,255,174,150,122,255,175,151,123,255,175,151,123,255,175,152,123,255,174,152,122,255,176,152,124,255,175,151,124,255, -176,152,123,255,177,153,125,255,177,153,125,255,176,152,125,255,178,154,125,255,177,154,125,255,178,154,125,255,177,153,124,255, -177,154,125,255,178,155,126,255,178,155,126,255,178,155,126,255,178,154,125,255,176,153,124,255,177,153,124,255,176,154,125,255, -176,152,124,255,175,153,124,255,176,152,122,255,174,151,123,255,174,150,122,255,174,149,121,255,173,149,121,255,172,148,121,255, -171,147,119,255,170,146,119,255,170,145,119,255,168,144,117,255,168,143,117,255,167,143,116,255,166,141,115,255,165,141,114,255, -164,140,114,255,163,138,113,255,162,138,112,255,161,136,111,255,159,135,110,255,158,134,109,255,157,132,108,255,156,130,107,255, -155,129,106,255,153,128,105,255,152,126,103,255,151,125,102,255,149,123,101,255,148,122,100,255,146,120, 99,255,144,118, 97,255, -143,116, 96,255,142,115, 95,255,139,112, 92,255,138,111, 91,255,136,109, 90,255,134,106, 88,255,132,105, 87,255,130,103, 85,255, -128,100, 83,255,126, 98, 82,255,124, 96, 80,255,122, 93, 78,255,121, 92, 77,255,118, 89, 76,255,116, 87, 73,255,113, 84, 71,255, -111, 82, 70,255,109, 79, 68,255, 85, 70, 64,255, 61, 61, 61,255, 61, 61, 61,255, 91, 75, 68,255,124, 96, 80,255,141,114, 93,255, -155,129,106,255,163,138,113,255,168,143,116,255,168,144,118,255,169,144,117,255,170,146,119,255,169,145,119,255,169,145,119,255, -171,147,118,255,170,146,119,255,171,148,120,255,172,147,120,255,173,148,121,255,173,148,121,255,172,148,120,255,173,149,121,255, -173,149,121,255,174,150,122,255,175,151,123,255,175,151,123,255,175,152,123,255,174,152,122,255,176,152,124,255,176,151,124,255, -175,152,123,255,177,153,125,255,177,153,125,255,177,152,125,255,177,154,125,255,178,154,125,255,177,154,125,255,176,154,125,255, -176,154,125,255,177,153,124,255,177,154,125,255,178,155,126,255,178,154,125,255,176,154,125,255,177,154,125,255,177,153,125,255, -175,152,123,255,176,153,123,255,176,152,124,255,174,152,122,255,174,151,122,255,174,151,123,255,173,149,121,255,173,149,121,255, -172,148,120,255,171,147,120,255,170,146,119,255,169,145,118,255,168,144,117,255,168,143,116,255,166,142,116,255,166,141,115,255, -165,140,114,255,163,139,113,255,163,138,113,255,162,137,112,255,160,135,110,255,159,134,110,255,158,133,109,255,156,131,107,255, -155,130,106,255,154,129,106,255,152,127,104,255,151,126,103,255,150,124,102,255,148,122,100,255,147,121, 99,255,145,119, 98,255, -143,117, 96,255,142,116, 95,255,140,114, 94,255,138,111, 92,255,137,109, 91,255,135,107, 89,255,133,105, 87,255,131,103, 86,255, -128,100, 84,255,127, 99, 82,255,125, 97, 81,255,122, 94, 79,255,121, 92, 77,255,119, 90, 76,255,116, 87, 74,255,114, 85, 72,255, -112, 83, 70,255,110, 80, 68,255, 85, 70, 65,255, 61, 61, 61,255, 61, 61, 61,255, 88, 73, 67,255,117, 88, 74,255,131,103, 86,255, -149,123,101,255,161,136,111,255,167,142,116,255,168,144,117,255,168,144,117,255,169,145,118,255,170,145,118,255,169,145,118,255, -170,146,118,255,170,146,119,255,171,147,119,255,172,147,120,255,173,148,121,255,172,149,120,255,173,148,121,255,173,149,121,255, -174,150,122,255,174,150,122,255,175,151,123,255,175,151,123,255,175,152,123,255,174,152,122,255,176,152,124,255,176,152,124,255, -175,151,123,255,177,153,125,255,177,153,125,255,177,153,125,255,176,153,125,255,176,154,124,255,176,154,125,255,177,154,125,255, -177,154,125,255,176,154,125,255,177,153,124,255,177,153,124,255,176,153,124,255,177,153,125,255,177,154,125,255,176,152,125,255, -177,153,124,255,176,152,123,255,176,152,124,255,174,152,122,255,174,151,123,255,173,150,122,255,173,149,121,255,172,149,121,255, -173,149,121,255,171,147,119,255,171,147,119,255,169,145,118,255,169,145,118,255,168,144,117,255,167,143,116,255,166,142,116,255, -165,141,115,255,164,140,114,255,164,139,113,255,163,138,113,255,161,137,111,255,160,135,110,255,159,134,109,255,157,132,108,255, -156,131,107,255,155,130,106,255,153,128,105,255,152,126,104,255,151,125,103,255,149,123,101,255,147,121,100,255,146,120, 99,255, -144,118, 97,255,142,116, 95,255,141,114, 94,255,139,112, 93,255,137,110, 91,255,136,108, 90,255,133,106, 88,255,131,104, 86,255, -129,101, 85,255,127, 99, 83,255,125, 97, 81,255,123, 95, 79,255,122, 93, 78,255,119, 90, 76,255,117, 88, 74,255,115, 86, 72,255, -112, 83, 70,255,110, 81, 69,255, 85, 70, 65,255, 61, 61, 61,255, 61, 61, 61,255, 90, 75, 68,255,114, 85, 72,255,121, 92, 77,255, -141,114, 94,255,157,131,108,255,165,140,115,255,168,143,117,255,169,145,117,255,169,144,117,255,170,145,117,255,170,145,118,255, -169,146,118,255,170,146,119,255,171,147,119,255,172,147,120,255,173,148,121,255,172,149,120,255,173,148,121,255,174,149,122,255, -174,150,122,255,175,151,123,255,174,150,122,255,175,151,123,255,175,152,123,255,174,152,122,255,176,152,124,255,176,152,124,255, -175,151,123,255,177,153,125,255,177,153,124,255,177,153,124,255,177,153,124,255,177,154,125,255,177,154,125,255,177,154,125,255, -177,154,125,255,177,154,125,255,176,154,125,255,176,154,125,255,176,154,125,255,177,154,125,255,176,153,124,255,177,153,125,255, -176,153,124,255,175,152,124,255,176,151,123,255,174,151,122,255,175,151,123,255,173,149,121,255,173,150,122,255,173,149,122,255, -172,148,120,255,172,148,120,255,171,147,119,255,169,145,118,255,169,145,118,255,169,145,118,255,167,143,116,255,167,143,116,255, -166,142,115,255,165,140,114,255,164,139,113,255,163,139,113,255,161,137,111,255,161,136,111,255,159,134,110,255,158,133,109,255, -157,132,108,255,155,130,107,255,154,129,105,255,153,127,104,255,151,126,103,255,149,124,101,255,148,122,100,255,147,121, 98,255, -145,119, 97,255,143,117, 96,255,141,114, 94,255,140,113, 93,255,138,111, 92,255,136,108, 90,255,134,107, 88,255,132,105, 87,255, -130,102, 85,255,129,101, 84,255,126, 98, 82,255,124, 95, 80,255,122, 93, 78,255,120, 91, 77,255,117, 88, 75,255,115, 86, 73,255, -113, 84, 71,255,111, 81, 69,255, 86, 71, 65,255, 61, 61, 61,255, 61, 61, 61,255,105, 92, 80,255,121, 92, 78,255,114, 85, 72,255, -129,101, 84,255,151,124,102,255,163,138,113,255,168,143,116,255,169,143,117,255,169,145,117,255,170,144,117,255,170,145,118,255, -170,145,118,255,170,146,119,255,171,147,120,255,172,147,120,255,173,148,121,255,172,149,120,255,173,149,121,255,174,150,122,255, -174,150,122,255,175,151,123,255,175,150,123,255,175,152,123,255,175,152,123,255,174,152,122,255,176,152,124,255,176,151,124,255, -175,151,124,255,177,153,123,255,177,153,123,255,177,153,124,255,177,153,124,255,177,154,125,255,177,153,124,255,177,154,125,255, -177,154,125,255,177,154,125,255,177,154,125,255,177,153,125,255,177,154,125,255,177,153,125,255,177,152,125,255,175,152,123,255, -176,152,124,255,176,151,124,255,175,152,123,255,174,151,123,255,174,151,123,255,174,149,121,255,173,149,121,255,173,149,122,255, -171,147,120,255,172,148,120,255,171,147,120,255,169,145,118,255,170,145,118,255,169,145,117,255,167,143,117,255,166,142,116,255, -167,142,116,255,165,140,114,255,164,140,113,255,164,139,114,255,162,137,112,255,161,136,111,255,160,135,111,255,158,134,109,255, -157,133,108,255,156,131,108,255,154,129,106,255,153,128,105,255,152,127,104,255,150,124,102,255,149,123,101,255,148,122,100,255, -145,119, 98,255,144,118, 97,255,142,116, 96,255,140,114, 93,255,138,111, 92,255,136,110, 90,255,135,108, 89,255,133,105, 87,255, -130,102, 85,255,129,101, 84,255,127, 99, 82,255,124, 96, 80,255,122, 94, 79,255,120, 92, 77,255,118, 89, 75,255,116, 87, 73,255, -113, 84, 71,255,111, 81, 69,255, 86, 71, 65,255, 61, 61, 61,255, 60, 60, 60,255,134,124,111,255,161,137,113,255,117, 88, 74,255, -115, 86, 73,255,138,111, 91,255,159,133,109,255,166,141,115,255,168,143,117,255,169,144,118,255,169,144,118,255,170,144,117,255, -170,145,118,255,170,147,119,255,171,148,120,255,172,147,120,255,173,147,121,255,172,149,120,255,173,149,121,255,174,150,122,255, -174,150,122,255,175,151,123,255,175,150,123,255,175,152,123,255,174,152,122,255,175,152,123,255,176,152,124,255,176,151,124,255, -175,152,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,154,125,255,177,154,125,255, -177,154,125,255,177,154,125,255,177,153,125,255,177,154,124,255,176,153,125,255,176,152,124,255,176,152,124,255,175,153,123,255, -175,152,124,255,176,151,123,255,174,152,123,255,174,150,123,255,174,150,122,255,173,150,122,255,173,149,122,255,172,148,121,255, -171,147,120,255,171,147,120,255,171,147,119,255,169,145,118,255,169,145,118,255,168,144,117,255,167,143,117,255,166,142,116,255, -166,142,116,255,165,140,114,255,164,140,114,255,163,139,113,255,162,137,112,255,161,137,112,255,160,136,111,255,159,134,109,255, -157,133,108,255,157,132,108,255,155,130,106,255,154,129,105,255,152,127,104,255,151,125,103,255,149,124,101,255,148,122,100,255, -146,120, 98,255,145,119, 97,255,143,117, 95,255,141,114, 94,255,139,113, 92,255,137,110, 91,255,135,108, 89,255,133,106, 88,255, -131,103, 87,255,129,101, 84,255,127, 99, 83,255,125, 97, 80,255,123, 94, 79,255,121, 92, 77,255,118, 89, 75,255,116, 87, 74,255, -114, 85, 72,255,112, 82, 70,255, 86, 71, 65,255, 61, 61, 61,255, 60, 60, 60,255,145,141,134,255,215,203,183,255,164,139,114,255, -115, 86, 72,255,120, 92, 77,255,148,121, 99,255,164,139,113,255,167,143,116,255,168,144,117,255,169,144,118,255,170,145,118,255, -170,145,118,255,170,146,119,255,171,147,120,255,172,148,120,255,173,147,121,255,172,149,120,255,173,149,121,255,174,150,122,255, -173,149,121,255,175,151,123,255,175,150,123,255,175,152,123,255,174,152,122,255,175,152,123,255,175,152,123,255,176,152,124,255, -175,151,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,152,123,255,177,153,124,255,177,153,125,255,177,154,125,255, -177,154,125,255,177,154,125,255,177,154,125,255,177,153,125,255,177,152,124,255,176,153,124,255,175,153,123,255,176,152,124,255, -176,151,124,255,175,152,123,255,175,151,122,255,174,150,122,255,173,150,122,255,174,149,121,255,172,149,122,255,172,148,121,255, -172,148,121,255,171,147,119,255,170,146,119,255,170,146,119,255,169,144,117,255,168,144,118,255,167,144,117,255,166,142,116,255, -166,142,116,255,165,140,114,255,164,140,114,255,163,139,113,255,162,137,112,255,161,136,112,255,161,136,111,255,159,134,109,255, -158,133,109,255,157,132,108,255,156,131,107,255,154,129,106,255,153,128,104,255,151,126,103,255,150,125,102,255,149,123,100,255, -147,121, 99,255,145,119, 98,255,143,117, 96,255,142,115, 95,255,140,113, 93,255,137,110, 92,255,136,109, 90,255,134,107, 88,255, -132,104, 86,255,130,102, 85,255,128,100, 83,255,125, 97, 81,255,124, 95, 79,255,121, 93, 78,255,119, 90, 76,255,117, 88, 74,255, -114, 85, 72,255,112, 83, 70,255, 87, 72, 65,255, 61, 61, 61,255, 59, 60, 60,255,150,147,141,255,227,220,208,255,214,204,186,255, -165,142,118,255,115, 87, 74,255,127, 99, 82,255,156,129,106,255,166,141,114,255,167,143,117,255,168,144,117,255,168,145,118,255, -170,145,118,255,170,146,119,255,171,146,120,255,172,148,120,255,173,148,121,255,172,148,120,255,173,149,121,255,173,149,121,255, -175,151,123,255,174,150,122,255,175,150,123,255,174,152,123,255,174,152,122,255,175,152,123,255,176,152,124,255,176,152,124,255, -175,151,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,152,123,255,177,153,124,255,177,153,125,255, -177,153,125,255,177,153,125,255,176,153,124,255,175,152,123,255,175,153,123,255,176,153,124,255,175,153,123,255,176,152,124,255, -175,152,123,255,174,152,122,255,175,151,123,255,173,150,122,255,174,149,121,255,172,149,122,255,173,148,121,255,172,148,121,255, -171,147,119,255,170,146,120,255,170,146,119,255,169,144,117,255,168,145,118,255,168,144,118,255,166,142,116,255,167,142,115,255, -166,141,116,255,164,140,114,255,164,139,114,255,163,138,113,255,162,137,112,255,161,137,112,255,161,136,111,255,159,134,109,255, -159,134,109,255,158,133,108,255,156,131,107,255,155,130,106,255,154,129,105,255,152,126,103,255,150,125,103,255,149,124,102,255, -147,121,100,255,145,120, 98,255,144,118, 97,255,142,116, 95,255,140,114, 94,255,139,112, 92,255,137,109, 90,255,135,107, 89,255, -132,105, 87,255,131,103, 85,255,128,100, 84,255,126, 98, 81,255,124, 96, 80,255,122, 93, 78,255,119, 90, 76,255,117, 88, 75,255, -115, 86, 73,255,113, 83, 70,255, 87, 72, 66,255, 61, 61, 61,255, 59, 60, 60,255,149,146,139,255,233,227,214,255,229,224,211,255, -216,208,191,255,171,150,128,255,120, 91, 75,255,133,106, 88,255,161,136,111,255,167,142,116,255,167,143,116,255,168,144,117,255, -169,145,118,255,170,146,119,255,170,146,119,255,172,148,120,255,172,148,121,255,172,148,120,255,173,149,121,255,173,149,121,255, -175,151,123,255,175,150,123,255,175,151,123,255,174,151,123,255,175,152,122,255,176,152,123,255,176,152,124,255,176,151,124,255, -175,152,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,152,123,255,176,153,124,255,176,152,124,255, -176,152,124,255,176,152,124,255,175,152,123,255,176,153,124,255,176,153,124,255,175,153,123,255,176,152,124,255,175,151,123,255, -174,152,122,255,175,151,123,255,174,151,123,255,173,149,121,255,173,150,122,255,172,149,121,255,172,148,121,255,171,147,120,255, -172,148,119,255,170,146,119,255,169,145,118,255,170,144,117,255,168,144,118,255,167,143,117,255,166,142,116,255,166,141,116,255, -165,141,115,255,164,140,114,255,163,139,113,255,163,138,113,255,161,137,112,255,161,136,111,255,160,136,111,255,159,134,109,255, -158,133,109,255,158,133,108,255,156,131,107,255,155,130,106,255,154,129,105,255,152,127,104,255,151,125,103,255,149,124,102,255, -148,122,100,255,146,120, 99,255,145,119, 98,255,143,116, 96,255,141,114, 94,255,139,112, 92,255,137,110, 91,255,135,108, 89,255, -133,105, 87,255,131,103, 86,255,129,101, 84,255,126, 98, 82,255,124, 96, 80,255,122, 94, 79,255,120, 91, 76,255,118, 89, 75,255, -115, 86, 73,255,113, 83, 71,255, 87, 72, 66,255, 61, 61, 61,255, 59, 60, 60,255,149,145,138,255,231,224,210,255,231,224,212,255, -231,225,213,255,221,214,200,255,182,165,145,255,123, 94, 78,255,142,116, 95,255,165,141,115,255,167,142,116,255,167,144,116,255, -169,145,118,255,170,145,118,255,170,146,119,255,172,148,120,255,172,148,120,255,172,149,120,255,173,149,121,255,173,150,121,255, -175,151,123,255,175,150,123,255,175,151,123,255,174,152,122,255,175,152,123,255,176,151,123,255,176,152,124,255,176,151,124,255, -175,152,124,255,177,153,124,255,177,153,124,255,177,153,124,255,177,153,124,255,176,153,124,255,177,152,123,255,176,153,123,255, -175,153,123,255,175,153,123,255,176,153,124,255,176,153,124,255,176,152,124,255,176,152,124,255,175,152,123,255,174,151,122,255, -175,151,123,255,174,151,122,255,173,151,123,255,173,149,121,255,173,150,121,255,172,148,122,255,172,148,120,255,172,148,120,255, -171,147,119,255,170,146,119,255,170,145,118,255,169,145,118,255,168,144,117,255,167,143,117,255,166,142,116,255,166,141,115,255, -165,141,115,255,164,139,114,255,163,138,113,255,163,138,113,255,161,137,111,255,161,136,111,255,160,135,111,255,159,134,109,255, -158,133,109,255,157,133,108,255,156,131,107,255,155,130,106,255,154,129,106,255,152,127,104,255,151,126,103,255,150,125,102,255, -148,123,100,255,147,121,100,255,145,118, 98,255,143,117, 96,255,142,115, 95,255,139,112, 93,255,138,111, 91,255,136,109, 90,255, -133,106, 87,255,132,104, 86,255,129,101, 85,255,127, 99, 82,255,125, 96, 81,255,123, 94, 79,255,120, 91, 77,255,118, 90, 75,255, -116, 87, 73,255,114, 84, 71,255, 87, 72, 66,255, 61, 61, 61,255, 59, 60, 60,255,149,145,137,255,231,224,210,255,230,223,210,255, -230,224,211,255,232,226,214,255,227,221,209,255,192,178,159,255,125, 99, 83,255,146,119, 98,255,166,141,115,255,167,142,116,255, -168,144,117,255,169,145,118,255,170,146,119,255,171,148,119,255,172,147,120,255,172,149,120,255,173,149,121,255,173,149,121,255, -175,151,123,255,175,150,123,255,175,151,123,255,175,151,122,255,175,151,123,255,176,152,124,255,176,152,124,255,175,151,124,255, -176,152,124,255,177,153,124,255,177,153,124,255,176,153,124,255,177,153,124,255,177,153,124,255,176,153,124,255,176,153,124,255, -176,153,124,255,176,153,124,255,176,153,124,255,176,152,124,255,175,153,123,255,175,151,123,255,174,152,122,255,175,151,123,255, -175,151,122,255,174,151,123,255,174,149,121,255,173,150,122,255,172,149,122,255,173,148,120,255,171,147,121,255,172,148,120,255, -170,146,119,255,169,145,118,255,170,145,118,255,168,144,117,255,167,143,117,255,167,143,116,255,166,141,115,255,165,141,114,255, -164,140,114,255,163,139,113,255,162,138,112,255,162,137,112,255,161,136,111,255,160,135,110,255,160,135,110,255,158,133,109,255, -158,133,108,255,157,132,108,255,155,130,107,255,155,130,106,255,154,129,106,255,153,127,104,255,151,126,103,255,150,125,102,255, -148,123,101,255,147,121,100,255,146,120, 99,255,144,118, 97,255,142,116, 95,255,141,114, 93,255,138,111, 92,255,136,109, 90,255, -134,107, 88,255,132,105, 87,255,130,102, 85,255,127, 99, 82,255,125, 97, 81,255,123, 94, 79,255,120, 92, 77,255,119, 90, 76,255, -116, 87, 74,255,114, 84, 71,255, 87, 72, 66,255, 61, 61, 61,255, 59, 60, 60,255,148,145,137,255,231,223,209,255,229,222,209,255, -229,223,209,255,230,223,209,255,231,225,212,255,232,226,214,255,206,196,181,255,148,127,110,255,146,119, 97,255,168,143,116,255, -168,143,117,255,169,144,117,255,169,145,118,255,171,147,120,255,172,147,120,255,172,149,120,255,173,149,121,255,173,149,121,255, -175,151,123,255,175,151,123,255,175,150,123,255,175,150,123,255,176,152,123,255,175,151,124,255,176,152,124,255,175,151,124,255, -176,152,124,255,176,152,124,255,176,153,124,255,177,153,124,255,176,153,124,255,176,153,124,255,175,153,124,255,176,153,124,255, -176,153,124,255,176,153,124,255,176,152,124,255,175,153,123,255,176,152,124,255,175,151,123,255,174,151,122,255,174,152,123,255, -174,151,123,255,173,150,122,255,174,150,122,255,172,150,122,255,173,149,121,255,172,148,120,255,171,147,120,255,171,147,120,255, -170,146,118,255,169,145,118,255,170,144,117,255,168,145,117,255,167,143,116,255,166,142,116,255,166,141,115,255,165,140,114,255, -164,140,114,255,163,138,113,255,162,138,112,255,162,137,112,255,160,135,110,255,160,135,110,255,159,134,110,255,158,133,109,255, -157,132,108,255,156,132,108,255,155,130,107,255,155,130,106,255,154,129,106,255,153,127,104,255,152,126,104,255,151,125,103,255, -149,123,101,255,147,122,100,255,145,120, 99,255,144,118, 97,255,143,116, 96,255,140,114, 93,255,139,112, 92,255,137,109, 91,255, -134,107, 89,255,133,105, 87,255,130,102, 85,255,128,100, 83,255,126, 98, 81,255,123, 95, 79,255,121, 92, 78,255,119, 90, 76,255, -117, 87, 74,255,115, 85, 72,255, 88, 72, 66,255, 61, 61, 61,255, 59, 60, 60,255,148,145,137,255,230,223,209,255,230,222,208,255, -230,222,208,255,229,222,208,255,230,223,209,255,230,223,210,255,231,225,212,255,222,215,203,255,167,150,135,255,143,117, 95,255, -170,146,118,255,168,143,117,255,169,145,118,255,171,147,120,255,172,147,120,255,173,149,120,255,173,149,121,255,173,149,121,255, -175,151,123,255,175,151,123,255,175,151,123,255,174,150,123,255,176,152,124,255,176,152,123,255,176,152,124,255,175,151,124,255, -176,152,124,255,177,153,124,255,177,153,124,255,176,153,124,255,175,153,124,255,175,153,124,255,176,153,124,255,176,153,124,255, -176,153,124,255,176,153,124,255,175,153,123,255,176,152,124,255,175,151,123,255,174,152,122,255,174,152,123,255,175,151,123,255, -174,151,123,255,173,150,122,255,174,149,121,255,172,149,122,255,173,149,121,255,171,147,120,255,172,148,120,255,171,147,119,255, -171,147,118,255,169,145,118,255,169,145,117,255,168,144,117,255,167,143,117,255,167,142,116,255,165,141,115,255,164,140,114,255, -164,139,114,255,162,138,112,255,162,137,112,255,161,136,111,255,160,135,110,255,160,135,110,255,159,134,109,255,157,133,108,255, -156,132,107,255,155,131,108,255,155,130,106,255,155,130,106,255,154,129,106,255,152,127,104,255,152,126,104,255,151,125,103,255, -149,123,101,255,148,122,100,255,146,121, 99,255,145,119, 97,255,143,117, 96,255,141,114, 94,255,139,113, 93,255,137,110, 91,255, -135,107, 89,255,133,106, 88,255,131,103, 86,255,128,100, 83,255,127, 98, 82,255,124, 96, 80,255,121, 93, 78,255,120, 91, 76,255, -117, 88, 74,255,115, 85, 72,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,145,137,255,230,223,209,255,228,221,207,255, -228,222,207,255,229,221,208,255,229,222,208,255,229,222,208,255,229,222,209,255,231,224,211,255,233,228,215,255,188,176,163,255, -149,126,105,255,166,142,116,255,170,145,118,255,170,146,119,255,171,147,119,255,171,147,121,255,173,149,121,255,173,149,121,255, -175,151,123,255,174,151,123,255,174,150,123,255,175,151,123,255,176,152,124,255,176,152,124,255,176,152,124,255,176,151,124,255, -175,152,124,255,176,153,124,255,175,153,124,255,175,153,124,255,176,153,124,255,176,153,124,255,176,153,124,255,176,153,124,255, -176,152,124,255,176,153,123,255,175,152,124,255,175,151,123,255,174,152,122,255,174,152,123,255,175,151,123,255,173,151,123,255, -174,150,122,255,174,149,121,255,172,149,122,255,173,149,121,255,172,148,120,255,171,147,120,255,171,147,119,255,171,147,119,255, -169,145,118,255,169,145,118,255,169,145,117,255,167,143,117,255,166,142,116,255,166,142,116,255,165,140,114,255,164,140,114,255, -163,139,113,255,162,137,112,255,161,136,112,255,161,136,111,255,159,135,110,255,159,134,109,255,158,133,109,255,157,132,107,255, -156,131,107,255,155,130,107,255,154,129,106,255,154,129,106,255,153,128,104,255,152,127,104,255,152,126,103,255,151,125,102,255, -149,123,101,255,148,122,100,255,147,121, 99,255,145,119, 97,255,144,117, 97,255,141,116, 94,255,140,113, 93,255,138,111, 91,255, -136,108, 90,255,134,106, 88,255,131,103, 86,255,129,101, 84,255,127, 99, 82,255,124, 96, 80,255,122, 93, 78,255,120, 91, 77,255, -117, 88, 75,255,115, 85, 72,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,137,255,230,222,208,255,229,221,207,255, -229,221,207,255,228,222,207,255,228,221,207,255,228,221,207,255,229,221,208,255,229,222,208,255,230,223,209,255,233,227,213,255, -212,205,191,255,171,153,135,255,160,134,109,255,172,147,119,255,171,147,119,255,172,148,121,255,173,149,121,255,174,149,121,255, -174,151,123,255,175,151,123,255,175,151,123,255,174,150,123,255,176,152,124,255,176,152,124,255,176,152,124,255,176,151,124,255, -176,152,124,255,175,153,124,255,176,153,124,255,176,153,124,255,176,153,124,255,176,153,124,255,176,153,124,255,176,152,124,255, -176,153,123,255,175,152,124,255,175,151,123,255,174,152,122,255,175,151,123,255,175,151,123,255,174,151,123,255,174,150,122,255, -173,150,122,255,174,149,121,255,173,150,121,255,173,149,121,255,172,148,121,255,172,148,119,255,171,147,119,255,170,146,119,255, -169,145,118,255,169,144,117,255,168,144,118,255,167,144,116,255,166,142,116,255,166,141,115,255,164,140,114,255,164,140,114,255, -163,138,113,255,161,137,112,255,161,136,111,255,160,136,111,255,159,134,109,255,158,133,109,255,158,133,108,255,156,132,107,255, -156,131,107,255,155,130,107,255,154,129,105,255,153,128,105,255,153,128,105,255,151,126,103,255,151,126,103,255,150,125,101,255, -149,123,101,255,148,122,100,255,147,121,100,255,145,119, 98,255,144,117, 96,255,142,115, 95,255,140,114, 93,255,138,111, 92,255, -136,109, 90,255,134,107, 88,255,132,104, 86,255,129,101, 84,255,127, 99, 82,255,125, 96, 81,255,122, 94, 79,255,120, 91, 77,255, -118, 88, 75,255,115, 85, 72,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,137,255,230,222,207,255,229,220,206,255, -229,220,207,255,229,221,206,255,229,220,206,255,228,221,207,255,229,222,207,255,229,221,207,255,229,221,207,255,229,221,207,255, -229,221,207,255,227,221,208,255,194,184,170,255,156,133,109,255,171,146,119,255,171,148,120,255,173,149,121,255,173,149,121,255, -173,151,123,255,174,150,122,255,175,151,123,255,175,151,123,255,176,152,124,255,175,152,123,255,176,152,124,255,176,151,124,255, -176,152,124,255,176,153,124,255,176,152,124,255,176,153,124,255,176,153,124,255,176,153,124,255,176,153,124,255,176,153,123,255, -176,152,124,255,176,151,123,255,175,152,122,255,174,152,123,255,175,152,123,255,175,151,123,255,174,150,122,255,173,151,123,255, -174,150,122,255,173,149,121,255,173,150,122,255,173,148,121,255,172,148,121,255,172,148,119,255,171,147,119,255,170,146,118,255, -170,146,119,255,169,144,117,255,168,144,118,255,167,143,116,255,167,142,116,255,166,141,115,255,164,140,114,255,163,139,113,255, -163,138,112,255,161,137,112,255,161,136,111,255,160,135,111,255,159,134,109,255,158,133,109,255,157,133,108,255,156,131,107,255, -155,130,107,255,155,130,106,255,154,129,105,255,153,128,105,255,152,127,104,255,152,126,103,255,151,125,103,255,150,125,102,255, -148,123,101,255,148,122,101,255,147,121,100,255,145,119, 98,255,144,118, 97,255,142,115, 95,255,140,114, 94,255,139,112, 92,255, -136,109, 90,255,135,108, 89,255,132,105, 87,255,130,102, 85,255,128,100, 83,255,125, 97, 81,255,122, 94, 79,255,121, 92, 77,255, -118, 89, 75,255,115, 86, 73,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,230,222,207,255,229,221,206,255, -229,221,206,255,229,221,207,255,229,221,206,255,228,220,206,255,227,220,205,255,228,221,206,255,228,220,206,255,227,219,205,255, -227,219,205,255,227,220,205,255,230,223,209,255,215,208,195,255,169,151,130,255,170,145,119,255,171,147,120,255,173,149,121,255, -174,149,121,255,174,151,122,255,175,150,123,255,174,151,122,255,175,151,123,255,176,152,123,255,176,152,124,255,176,152,124,255, -176,151,124,255,176,152,124,255,176,152,124,255,176,152,124,255,176,151,123,255,176,151,124,255,176,151,123,255,175,152,123,255, -176,151,123,255,175,152,122,255,174,151,123,255,175,152,123,255,175,151,123,255,174,150,122,255,173,151,123,255,174,149,121,255, -173,150,122,255,173,150,122,255,172,148,121,255,172,148,120,255,171,147,120,255,172,148,119,255,170,146,119,255,170,146,119,255, -169,144,117,255,168,144,118,255,168,144,117,255,166,142,116,255,166,142,115,255,165,141,115,255,164,140,114,255,163,139,113,255, -162,138,113,255,161,136,111,255,160,136,111,255,160,135,111,255,158,133,109,255,158,133,108,255,157,132,107,255,155,130,107,255, -155,130,106,255,154,129,106,255,153,128,105,255,152,127,104,255,151,127,103,255,151,125,102,255,150,125,102,255,150,123,102,255, -148,123,101,255,148,122,100,255,147,121, 99,255,145,119, 98,255,144,118, 97,255,142,117, 95,255,141,114, 94,255,139,113, 93,255, -137,110, 91,255,135,108, 89,255,133,105, 87,255,130,102, 85,255,128,100, 83,255,125, 97, 81,255,123, 94, 79,255,121, 92, 77,255, -118, 89, 75,255,116, 86, 73,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,230,222,207,255,229,221,206,255, -228,220,206,255,229,221,206,255,228,220,206,255,228,220,205,255,227,221,206,255,227,220,205,255,227,220,205,255,228,220,205,255, -227,219,204,255,226,219,204,255,227,219,203,255,229,221,206,255,224,217,203,255,194,181,165,255,166,145,122,255,170,146,117,255, -173,149,121,255,174,150,122,255,174,151,122,255,175,150,123,255,175,151,122,255,175,151,123,255,176,152,124,255,175,151,123,255, -176,152,124,255,176,151,124,255,176,151,124,255,176,151,124,255,176,152,124,255,176,152,123,255,176,152,122,255,176,151,122,255, -175,152,122,255,174,152,123,255,175,152,123,255,174,151,123,255,175,150,123,255,173,151,123,255,174,150,122,255,173,150,122,255, -173,150,122,255,172,149,121,255,173,149,120,255,172,148,120,255,172,148,120,255,171,147,120,255,170,146,118,255,169,145,118,255, -169,144,117,255,168,144,118,255,167,143,117,255,166,142,116,255,166,141,116,255,165,141,115,255,165,139,115,255,163,138,113,255, -162,138,113,255,161,136,111,255,160,135,110,255,160,135,110,255,158,133,109,255,157,132,108,255,156,132,108,255,155,130,106,255, -154,129,106,255,154,129,106,255,152,127,104,255,152,127,103,255,152,126,102,255,150,125,103,255,150,124,102,255,149,124,101,255, -148,122,100,255,148,122,100,255,147,121, 98,255,145,119, 98,255,144,118, 97,255,142,116, 95,255,141,115, 94,255,140,113, 93,255, -137,110, 91,255,135,108, 89,255,133,106, 88,255,130,102, 85,255,128,100, 83,255,126, 97, 81,255,123, 94, 79,255,121, 92, 77,255, -118, 89, 75,255,116, 86, 73,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,230,222,207,255,228,220,205,255, -229,221,205,255,228,220,205,255,228,220,205,255,227,219,206,255,228,220,205,255,228,220,205,255,227,219,204,255,227,219,204,255, -226,218,203,255,227,219,203,255,226,218,203,255,226,218,202,255,226,218,202,255,227,219,204,255,219,211,196,255,172,155,136,255, -167,143,116,255,174,150,121,255,174,150,122,255,174,151,122,255,175,150,123,255,175,151,123,255,175,151,123,255,176,152,124,255, -176,151,124,255,176,152,124,255,176,152,124,255,176,152,123,255,176,152,123,255,176,152,122,255,176,152,122,255,175,152,123,255, -174,152,123,255,174,152,123,255,175,152,123,255,175,151,123,255,174,150,123,255,173,151,123,255,173,150,122,255,174,149,121,255, -172,149,121,255,172,148,120,255,173,149,120,255,171,147,120,255,172,148,120,255,170,146,119,255,169,146,119,255,170,145,118,255, -168,144,118,255,168,144,118,255,167,143,117,255,166,142,115,255,165,141,115,255,165,141,115,255,163,139,113,255,163,138,113,255, -162,138,112,255,161,136,111,255,160,135,111,255,160,135,110,255,158,133,108,255,157,132,108,255,156,131,108,255,155,130,106,255, -154,129,106,255,154,129,105,255,152,127,104,255,152,126,103,255,151,126,102,255,149,124,102,255,150,124,102,255,149,123,101,255, -148,122,100,255,147,121,100,255,147,121, 99,255,145,119, 98,255,144,118, 97,255,142,116, 96,255,141,115, 94,255,140,113, 93,255, -137,110, 91,255,136,108, 90,255,133,106, 88,255,131,103, 85,255,129,100, 83,255,126, 97, 82,255,123, 94, 79,255,121, 92, 77,255, -118, 89, 75,255,116, 86, 72,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,230,222,207,255,229,221,205,255, -228,220,205,255,227,219,206,255,228,220,206,255,228,219,205,255,228,220,205,255,227,219,204,255,226,218,203,255,227,219,204,255, -227,218,202,255,226,218,202,255,227,218,201,255,225,217,201,255,226,217,201,255,225,216,200,255,226,218,202,255,231,224,210,255, -194,183,168,255,168,147,124,255,170,146,119,255,174,150,121,255,174,151,122,255,174,151,122,255,175,151,123,255,174,151,122,255, -175,151,123,255,175,151,123,255,176,152,123,255,175,152,123,255,175,151,122,255,175,151,123,255,175,152,123,255,175,152,123,255, -174,151,123,255,175,151,123,255,175,151,123,255,174,150,122,255,174,151,123,255,173,150,122,255,174,149,121,255,172,150,122,255, -173,149,121,255,173,149,120,255,171,147,121,255,172,148,120,255,171,147,120,255,170,146,118,255,169,145,118,255,169,144,117,255, -168,144,118,255,167,143,117,255,167,143,116,255,166,141,115,255,165,141,115,255,164,140,114,255,163,138,113,255,162,138,113,255, -162,137,112,255,160,135,110,255,160,135,110,255,159,134,110,255,157,132,108,255,156,132,107,255,156,131,107,255,154,129,106,255, -154,129,106,255,152,128,105,255,152,127,103,255,151,126,103,255,150,124,102,255,149,124,101,255,149,123,101,255,148,122,101,255, -147,121,100,255,147,121, 99,255,145,119, 98,255,145,119, 98,255,144,118, 97,255,142,116, 97,255,141,115, 95,255,140,113, 93,255, -137,110, 91,255,136,109, 90,255,134,106, 88,255,131,103, 86,255,129,100, 84,255,126, 98, 82,255,123, 94, 79,255,121, 92, 77,255, -118, 89, 75,255,116, 86, 72,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,230,222,207,255,228,220,205,255, -227,219,205,255,228,220,206,255,228,220,205,255,228,220,204,255,227,219,205,255,227,218,203,255,226,219,204,255,227,218,203,255, -226,218,203,255,227,217,202,255,226,217,201,255,225,217,201,255,226,216,200,255,225,216,200,255,225,216,200,255,225,216,200,255, -228,219,204,255,217,209,195,255,189,175,156,255,162,139,115,255,172,147,118,255,174,150,122,255,174,150,122,255,174,151,122,255, -175,151,123,255,174,150,122,255,175,151,123,255,175,151,122,255,174,150,123,255,174,150,123,255,174,151,123,255,174,151,123,255, -175,151,123,255,175,150,123,255,175,150,122,255,174,151,123,255,173,150,122,255,174,149,121,255,173,150,122,255,173,149,121,255, -173,148,120,255,172,148,121,255,172,148,120,255,172,148,119,255,171,147,119,255,169,145,118,255,170,145,118,255,169,145,117,255, -167,143,117,255,167,143,117,255,167,143,116,255,165,141,116,255,165,140,114,255,164,140,114,255,162,138,112,255,162,138,112,255, -162,137,112,255,160,135,110,255,159,134,110,255,158,134,109,255,157,132,108,255,156,132,108,255,156,131,107,255,154,129,105,255, -154,129,105,255,153,128,105,255,152,126,103,255,151,125,103,255,150,125,102,255,149,123,101,255,148,123,101,255,147,121,100,255, -147,121, 99,255,146,120, 99,255,146,120, 99,255,145,119, 98,255,144,118, 97,255,142,116, 96,255,141,115, 95,255,140,113, 94,255, -138,111, 91,255,136,109, 90,255,134,107, 88,255,131,103, 86,255,129,101, 84,255,126, 98, 82,255,123, 95, 79,255,121, 92, 77,255, -118, 89, 75,255,116, 86, 72,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,230,222,207,255,227,219,205,255, -228,220,206,255,228,220,206,255,228,219,204,255,228,220,205,255,228,219,204,255,226,219,203,255,226,219,204,255,227,219,203,255, -227,217,203,255,226,217,202,255,225,217,201,255,226,217,201,255,225,216,200,255,226,217,201,255,224,215,199,255,224,215,200,255, -224,215,199,255,225,216,199,255,225,217,202,255,218,209,194,255,170,151,132,255,168,144,116,255,173,149,121,255,174,150,122,255, -173,149,121,255,175,151,123,255,175,151,123,255,175,151,123,255,175,151,123,255,174,150,122,255,175,150,123,255,174,150,122,255, -175,150,123,255,175,151,123,255,174,151,123,255,173,151,122,255,173,150,121,255,174,150,122,255,173,149,121,255,172,148,120,255, -173,149,121,255,172,148,120,255,171,147,119,255,171,147,120,255,170,146,119,255,169,145,118,255,169,144,117,255,169,145,117,255, -167,143,118,255,167,142,116,255,167,143,116,255,165,141,115,255,164,140,114,255,164,140,114,255,162,138,112,255,162,137,112,255, -162,137,112,255,160,135,110,255,159,134,110,255,158,134,109,255,157,132,108,255,156,131,107,255,155,130,106,255,154,129,106,255, -153,128,105,255,153,127,104,255,151,126,103,255,150,125,102,255,150,124,102,255,148,122,100,255,147,122,101,255,148,122,100,255, -146,120, 99,255,146,120, 99,255,146,120, 98,255,144,118, 97,255,144,117, 97,255,142,117, 95,255,141,115, 95,255,140,113, 94,255, -138,111, 91,255,136,109, 90,255,134,107, 88,255,131,103, 86,255,129,101, 84,255,126, 98, 82,255,124, 95, 80,255,121, 92, 78,255, -118, 89, 75,255,116, 85, 72,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,229,221,206,255,228,220,205,255, -228,220,205,255,228,220,204,255,228,220,205,255,227,219,204,255,228,218,203,255,226,219,204,255,227,219,203,255,227,218,203,255, -227,217,202,255,226,218,201,255,225,218,202,255,225,216,200,255,226,217,201,255,224,215,199,255,225,216,199,255,225,216,198,255, -224,215,199,255,224,215,198,255,224,215,198,255,225,217,200,255,228,221,206,255,190,178,163,255,170,148,125,255,169,144,118,255, -173,148,121,255,173,149,121,255,173,149,121,255,173,149,121,255,174,150,122,255,174,150,122,255,174,150,122,255,174,150,122,255, -174,150,122,255,173,150,121,255,173,149,121,255,174,149,121,255,174,150,121,255,173,149,121,255,172,149,121,255,173,149,120,255, -172,148,120,255,171,147,120,255,172,148,120,255,170,146,119,255,170,146,118,255,169,146,119,255,169,144,117,255,168,144,118,255, -167,143,116,255,166,142,115,255,166,142,116,255,165,140,114,255,164,140,114,255,164,139,114,255,162,138,112,255,162,137,112,255, -161,136,112,255,160,135,110,255,159,134,109,255,158,133,109,255,157,132,108,255,156,131,107,255,155,130,106,255,153,129,105,255, -153,128,105,255,152,127,104,255,150,125,102,255,150,124,102,255,148,124,102,255,148,122,100,255,148,122,100,255,146,120,100,255, -146,120, 98,255,145,119, 98,255,144,118, 98,255,144,118, 97,255,143,117, 96,255,143,115, 96,255,141,115, 94,255,140,113, 94,255, -138,111, 92,255,136,109, 90,255,134,107, 89,255,131,104, 86,255,129,101, 84,255,126, 98, 82,255,124, 95, 79,255,121, 92, 77,255, -118, 88, 75,255,115, 85, 72,255, 88, 73, 67,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,229,221,206,255,228,220,206,255, -228,220,205,255,228,220,204,255,228,219,204,255,228,219,204,255,227,218,203,255,226,219,204,255,227,219,203,255,227,217,202,255, -227,218,202,255,226,217,201,255,225,218,202,255,226,216,200,255,225,216,200,255,224,215,199,255,225,216,199,255,224,215,198,255, -223,214,198,255,223,214,197,255,223,214,197,255,223,214,197,255,224,215,198,255,228,220,203,255,218,209,194,255,191,178,161,255, -161,139,117,255,168,143,115,255,172,149,121,255,173,149,121,255,173,150,122,255,173,150,122,255,173,150,122,255,174,150,121,255, -173,149,121,255,173,149,121,255,173,149,121,255,173,149,122,255,173,149,122,255,173,149,121,255,173,148,120,255,172,149,121,255, -171,147,120,255,172,148,119,255,171,147,120,255,170,146,118,255,169,146,119,255,170,145,118,255,168,145,117,255,168,144,117,255, -167,143,116,255,167,143,115,255,166,142,115,255,164,140,114,255,164,140,114,255,164,139,114,255,162,137,112,255,162,137,112,255, -161,136,111,255,159,135,110,255,158,134,109,255,158,133,109,255,156,132,107,255,155,131,106,255,155,130,106,255,153,128,105,255, -153,128,104,255,152,127,103,255,150,125,102,255,150,124,102,255,149,123,102,255,148,122,100,255,147,121,100,255,147,121, 99,255, -145,119, 98,255,145,119, 98,255,144,118, 97,255,143,117, 96,255,143,117, 96,255,142,116, 95,255,141,114, 94,255,140,113, 93,255, -138,111, 92,255,136,109, 90,255,134,107, 89,255,132,104, 86,255,129,101, 84,255,126, 98, 82,255,123, 95, 79,255,121, 92, 77,255, -117, 88, 75,255,115, 85, 72,255, 88, 73, 66,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,229,221,206,255,228,220,205,255, -228,220,204,255,228,219,204,255,228,219,204,255,228,218,203,255,227,219,204,255,227,218,204,255,227,219,203,255,227,218,203,255, -226,218,201,255,225,218,202,255,225,217,201,255,226,217,201,255,225,216,200,255,225,216,199,255,225,216,198,255,224,215,198,255, -224,215,197,255,224,214,197,255,224,215,198,255,223,214,197,255,224,213,196,255,223,213,196,255,224,215,198,255,225,216,200,255, -222,214,199,255,176,161,145,255,160,136,111,255,171,146,119,255,172,148,120,255,173,149,121,255,173,149,120,255,173,149,121,255, -173,149,120,255,172,148,120,255,173,149,121,255,173,149,121,255,173,149,121,255,173,149,120,255,173,149,121,255,172,148,120,255, -172,148,119,255,171,147,120,255,171,147,119,255,169,145,119,255,170,145,118,255,169,144,117,255,168,144,118,255,167,143,117,255, -167,143,116,255,166,142,115,255,165,141,115,255,165,140,114,255,164,139,113,255,164,139,114,255,162,137,112,255,161,137,111,255, -161,136,111,255,159,134,110,255,158,134,109,255,157,133,108,255,156,131,107,255,155,131,107,255,155,130,106,255,153,128,105,255, -152,127,104,255,152,126,103,255,150,125,103,255,150,124,102,255,149,123,101,255,147,121,100,255,147,121, 99,255,147,121, 99,255, -145,119, 97,255,145,119, 97,255,144,118, 96,255,143,117, 96,255,143,116, 96,255,141,115, 94,255,141,114, 94,255,139,112, 93,255, -138,111, 92,255,136,109, 90,255,134,107, 89,255,131,104, 86,255,130,101, 84,255,126, 98, 82,255,123, 94, 79,255,121, 92, 78,255, -117, 88, 75,255,115, 85, 72,255, 87, 72, 66,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,229,221,207,255,228,220,204,255, -228,219,205,255,228,220,205,255,228,218,204,255,227,219,203,255,227,219,204,255,227,219,203,255,227,218,202,255,226,217,203,255, -226,217,201,255,225,218,202,255,226,217,201,255,226,217,201,255,225,216,200,255,225,216,199,255,224,215,198,255,224,215,198,255, -224,215,198,255,224,214,197,255,224,214,197,255,223,213,196,255,223,214,197,255,222,214,197,255,222,213,196,255,223,213,196,255, -223,215,198,255,228,220,204,255,208,199,184,255,171,154,134,255,166,142,119,255,167,142,115,255,171,147,119,255,172,148,120,255, -172,148,120,255,172,148,120,255,172,148,120,255,171,147,120,255,171,147,121,255,172,148,120,255,172,148,120,255,171,147,119,255, -171,147,119,255,171,147,119,255,169,145,118,255,170,145,118,255,169,145,118,255,168,144,117,255,168,144,117,255,168,144,116,255, -166,142,116,255,166,142,116,255,165,141,115,255,164,140,114,255,164,139,113,255,163,138,113,255,161,137,111,255,161,136,111,255, -160,135,111,255,158,134,109,255,158,133,109,255,157,133,108,255,156,131,107,255,155,130,107,255,154,129,106,255,153,128,104,255, -152,127,103,255,151,126,103,255,150,125,102,255,149,124,101,255,149,123,101,255,147,121, 99,255,147,121, 99,255,145,119, 98,255, -144,118, 97,255,144,118, 97,255,144,117, 96,255,142,116, 95,255,142,115, 95,255,141,115, 94,255,140,113, 93,255,139,112, 93,255, -137,110, 91,255,136,109, 90,255,134,107, 89,255,131,104, 86,255,130,102, 85,255,127, 98, 82,255,123, 94, 79,255,120, 91, 77,255, -117, 88, 74,255,114, 84, 71,255, 87, 72, 66,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,229,221,206,255,228,219,205,255, -228,220,205,255,228,219,204,255,228,218,203,255,227,219,204,255,226,219,203,255,227,219,203,255,227,218,202,255,227,217,203,255, -226,218,201,255,225,217,201,255,226,217,201,255,225,216,200,255,225,216,200,255,225,216,198,255,224,215,198,255,223,214,197,255, -224,215,198,255,224,214,197,255,223,213,196,255,224,214,196,255,222,214,197,255,223,213,196,255,222,212,195,255,222,212,195,255, -223,213,195,255,223,214,196,255,224,216,199,255,223,216,200,255,204,194,178,255,175,158,140,255,155,131,106,255,169,144,117,255, -171,147,120,255,171,147,120,255,172,147,120,255,172,147,120,255,172,148,120,255,171,147,120,255,171,147,120,255,172,148,119,255, -171,147,119,255,170,146,118,255,170,146,119,255,169,145,118,255,169,144,117,255,169,145,118,255,167,143,116,255,167,143,117,255, -166,142,115,255,165,141,115,255,165,141,115,255,165,139,113,255,163,139,113,255,163,138,113,255,161,137,111,255,160,136,111,255, -159,135,110,255,158,134,109,255,158,133,109,255,157,132,108,255,156,131,107,255,155,130,107,255,154,129,106,255,152,127,104,255, -152,127,104,255,151,126,103,255,150,124,102,255,149,123,101,255,148,123,100,255,147,121,100,255,146,120, 99,255,146,120, 97,255, -144,118, 97,255,144,118, 97,255,143,116, 95,255,142,116, 95,255,142,115, 95,255,140,114, 93,255,139,113, 93,255,139,112, 92,255, -137,111, 91,255,136,108, 90,255,134,107, 88,255,131,104, 86,255,129,101, 84,255,126, 97, 82,255,123, 94, 79,255,120, 91, 77,255, -116, 87, 74,255,113, 84, 71,255, 86, 71, 65,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,229,221,206,255,228,220,205,255, -228,219,204,255,228,218,203,255,227,219,204,255,226,219,204,255,226,219,204,255,227,218,202,255,227,217,203,255,227,217,202,255, -225,218,202,255,226,217,201,255,226,216,200,255,225,216,200,255,224,215,200,255,224,215,198,255,223,214,197,255,223,214,197,255, -224,214,197,255,223,213,196,255,224,213,196,255,222,213,197,255,222,214,196,255,223,213,195,255,222,212,195,255,223,213,194,255, -223,213,195,255,222,212,194,255,223,213,195,255,222,212,195,255,224,214,197,255,225,216,201,255,210,200,185,255,159,141,123,255, -159,134,109,255,168,143,117,255,170,146,119,255,170,146,119,255,171,147,119,255,171,146,118,255,171,147,119,255,171,147,120,255, -170,146,118,255,169,145,118,255,170,146,119,255,168,144,117,255,169,145,118,255,168,144,117,255,167,143,117,255,167,143,116,255, -165,141,116,255,165,141,115,255,165,140,114,255,163,139,113,255,162,138,112,255,162,138,112,255,160,136,112,255,160,136,111,255, -159,135,110,255,158,133,109,255,157,133,108,255,156,131,107,255,155,130,107,255,154,129,106,255,154,129,105,255,152,127,104,255, -151,126,103,255,151,126,103,255,149,124,101,255,149,123,101,255,148,122,101,255,146,121, 99,255,146,120, 99,255,146,119, 98,255, -144,117, 96,255,143,117, 96,255,143,117, 96,255,141,115, 94,255,141,115, 94,255,140,113, 93,255,139,113, 92,255,138,111, 92,255, -137,109, 91,255,136,108, 90,255,134,106, 88,255,131,103, 86,255,129,101, 84,255,126, 97, 82,255,122, 94, 79,255,119, 90, 77,255, -115, 86, 74,255,111, 82, 70,255, 86, 71, 65,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,229,221,206,255,228,219,204,255, -227,218,203,255,228,219,204,255,227,219,204,255,226,219,204,255,227,219,203,255,227,218,202,255,226,217,203,255,227,218,202,255, -225,217,201,255,226,217,201,255,226,217,201,255,225,216,200,255,224,215,199,255,224,215,198,255,223,214,197,255,224,215,198,255, -224,213,197,255,223,214,196,255,223,213,197,255,223,214,195,255,223,213,195,255,222,212,195,255,223,213,194,255,222,212,194,255, -221,211,193,255,221,211,193,255,221,212,193,255,221,212,194,255,221,212,194,255,222,212,194,255,224,215,197,255,226,218,202,255, -193,183,168,255,164,145,126,255,159,136,112,255,163,139,112,255,169,145,118,255,169,145,118,255,169,145,118,255,169,145,118,255, -169,145,118,255,170,145,118,255,169,144,117,255,168,145,118,255,168,144,117,255,168,144,116,255,167,143,116,255,166,142,116,255, -166,141,115,255,164,140,114,255,164,140,113,255,163,138,113,255,162,138,112,255,162,137,112,255,160,136,111,255,159,135,110,255, -159,134,110,255,158,133,109,255,156,132,108,255,156,131,107,255,155,130,107,255,154,129,106,255,153,128,105,255,152,126,103,255, -151,126,103,255,150,125,103,255,149,124,101,255,148,123,100,255,148,122,100,255,146,120, 99,255,146,120, 98,255,144,119, 98,255, -144,117, 96,255,143,117, 96,255,142,115, 95,255,141,115, 94,255,141,114, 93,255,139,113, 93,255,139,112, 92,255,138,111, 92,255, -136,109, 90,255,135,108, 89,255,134,106, 88,255,131,103, 86,255,129,101, 84,255,126, 97, 81,255,122, 93, 79,255,118, 89, 76,255, -115, 86, 73,255,111, 82, 70,255, 85, 70, 64,255, 61, 61, 61,255, 59, 60, 60,255,148,144,136,255,229,220,205,255,228,218,203,255, -228,219,204,255,227,219,204,255,226,219,203,255,227,219,204,255,227,218,203,255,227,218,203,255,227,217,202,255,226,218,202,255, -225,217,201,255,226,216,200,255,226,217,201,255,224,215,199,255,224,215,199,255,225,216,199,255,223,214,197,255,224,215,198,255, -224,213,196,255,223,213,197,255,222,214,196,255,223,213,195,255,222,212,196,255,223,213,195,255,222,212,194,255,221,211,194,255, -221,211,193,255,222,212,193,255,221,211,193,255,221,211,193,255,221,211,193,255,221,211,193,255,221,211,193,255,222,212,194,255, -224,215,197,255,219,211,194,255,200,188,173,255,167,149,132,255,147,121, 99,255,163,138,111,255,168,144,117,255,168,143,117,255, -168,144,117,255,168,144,117,255,168,144,118,255,168,144,117,255,168,144,117,255,167,143,117,255,166,142,116,255,166,142,116,255, -165,140,114,255,164,140,114,255,164,139,114,255,163,139,113,255,162,137,112,255,161,137,112,255,160,136,111,255,159,134,110,255, -158,134,109,255,157,132,108,255,156,131,107,255,156,131,107,255,155,130,106,255,154,128,105,255,153,127,104,255,151,127,104,255, -151,126,103,255,150,124,102,255,148,123,101,255,148,122,101,255,147,122,100,255,146,120, 99,255,145,119, 98,255,145,119, 98,255, -143,117, 96,255,143,116, 96,255,141,116, 94,255,141,114, 94,255,140,114, 94,255,140,113, 92,255,138,111, 92,255,137,110, 91,255, -137,110, 90,255,134,107, 89,255,133,105, 88,255,131,103, 86,255,128,100, 84,255,125, 96, 81,255,121, 92, 78,255,117, 88, 75,255, -113, 84, 72,255,110, 80, 68,255, 84, 69, 64,255, 61, 61, 61,255, 59, 60, 60,255,148,143,135,255,229,220,205,255,228,219,204,255, -228,219,204,255,227,219,204,255,227,219,204,255,227,219,203,255,227,219,202,255,226,217,202,255,227,218,201,255,226,218,202,255, -226,217,201,255,226,216,200,255,225,216,200,255,224,215,199,255,225,216,199,255,223,214,197,255,224,215,198,255,224,214,197,255, -223,214,197,255,222,214,197,255,223,213,196,255,222,213,196,255,223,213,195,255,222,212,194,255,222,212,194,255,222,212,193,255, -222,212,193,255,220,210,191,255,220,210,191,255,221,211,191,255,221,211,191,255,221,211,191,255,220,210,191,255,220,210,191,255, -221,211,192,255,221,211,192,255,222,212,194,255,224,214,197,255,206,198,182,255,155,135,119,255,148,122,100,255,162,137,111,255, -165,141,115,255,166,142,115,255,167,143,116,255,166,142,116,255,167,143,115,255,165,141,115,255,166,142,116,255,165,141,115,255, -164,140,114,255,163,139,113,255,163,139,113,255,162,137,112,255,161,137,111,255,160,135,111,255,158,134,109,255,159,134,110,255, -157,132,108,255,156,132,108,255,155,131,107,255,155,130,107,255,153,128,105,255,153,127,104,255,152,127,104,255,151,126,103,255, -150,125,103,255,150,124,102,255,148,122,101,255,148,122,100,255,147,121,100,255,146,120, 98,255,145,119, 98,255,145,118, 98,255, -143,116, 96,255,143,116, 96,255,142,115, 95,255,140,114, 94,255,140,113, 93,255,138,111, 92,255,138,111, 91,255,137,110, 91,255, -135,108, 90,255,134,107, 89,255,133,105, 87,255,130,102, 85,255,128,100, 83,255,124, 96, 80,255,121, 92, 77,255,117, 88, 75,255, -112, 83, 71,255,108, 79, 67,255, 84, 69, 63,255, 61, 61, 61,255, 59, 60, 60,255,148,143,135,255,229,220,205,255,227,219,204,255, -227,219,204,255,226,219,203,255,227,219,203,255,227,219,203,255,227,219,202,255,227,217,202,255,226,217,201,255,226,218,202,255, -225,216,200,255,226,217,201,255,224,215,199,255,225,216,199,255,225,216,199,255,223,214,197,255,223,215,197,255,224,214,197,255, -222,213,196,255,223,213,196,255,223,212,196,255,223,213,195,255,222,212,194,255,222,212,194,255,221,211,193,255,222,212,192,255, -221,211,192,255,221,210,191,255,221,210,191,255,221,210,191,255,220,210,191,255,220,210,191,255,219,210,191,255,219,209,190,255, -219,209,190,255,219,209,190,255,220,210,191,255,220,210,191,255,222,212,193,255,224,216,197,255,196,184,169,255,160,140,124,255, -150,126,105,255,153,127,103,255,161,136,111,255,164,140,114,255,165,140,115,255,164,140,114,255,164,139,114,255,164,139,114,255, -163,139,113,255,162,138,112,255,161,138,111,255,161,137,111,255,159,135,110,255,158,135,109,255,159,134,110,255,157,133,108,255, -156,131,107,255,155,131,107,255,155,130,106,255,154,129,106,255,154,128,105,255,152,127,104,255,152,126,103,255,150,125,103,255, -150,124,102,255,148,123,101,255,147,122,100,255,148,122, 99,255,147,121, 99,255,145,119, 98,255,145,118, 98,255,143,118, 96,255, -143,116, 96,255,142,116, 96,255,142,115, 95,255,140,114, 94,255,139,113, 93,255,138,111, 91,255,137,110, 91,255,136,109, 90,255, -135,108, 89,255,134,106, 88,255,132,104, 87,255,130,101, 85,255,127, 99, 83,255,124, 95, 80,255,120, 91, 77,255,116, 87, 73,255, -112, 82, 70,255,106, 78, 66,255, 82, 68, 63,255, 61, 61, 61,255, 59, 60, 60,255,148,143,135,255,229,220,205,255,227,219,204,255, -226,219,203,255,227,219,204,255,227,219,203,255,227,218,202,255,227,219,202,255,226,217,202,255,226,218,202,255,225,217,201,255, -226,217,201,255,225,216,200,255,225,216,200,255,225,216,198,255,224,215,198,255,223,214,197,255,224,214,197,255,223,214,196,255, -222,214,197,255,223,212,195,255,222,212,195,255,223,213,194,255,222,212,194,255,221,211,194,255,222,212,192,255,221,211,192,255, -221,211,192,255,221,209,190,255,220,209,190,255,220,209,190,255,220,209,191,255,219,209,190,255,219,209,190,255,220,209,190,255, -219,208,189,255,219,208,189,255,219,208,189,255,219,208,189,255,219,208,189,255,219,209,189,255,221,211,192,255,218,209,191,255, -202,191,174,255,172,155,138,255,141,115, 96,255,145,118, 96,255,158,133,109,255,160,136,111,255,162,137,112,255,162,137,112,255, -161,136,112,255,161,136,112,255,161,136,111,255,159,135,110,255,159,134,110,255,159,134,110,255,158,133,109,255,155,131,107,255, -155,130,107,255,155,131,106,255,154,129,106,255,153,128,105,255,151,126,103,255,151,126,103,255,151,126,103,255,150,125,102,255, -148,123,101,255,147,122,101,255,148,121,100,255,147,121,100,255,146,120, 99,255,145,119, 98,255,144,118, 97,255,144,118, 97,255, -143,116, 96,255,142,116, 96,255,141,115, 95,255,140,113, 93,255,139,112, 92,255,137,110, 91,255,137,110, 91,255,136,109, 90,255, -134,107, 88,255,133,105, 87,255,131,103, 86,255,129,101, 84,255,126, 98, 82,255,122, 94, 79,255,118, 89, 76,255,114, 85, 72,255, -110, 81, 68,255,104, 76, 64,255, 81, 67, 62,255, 61, 61, 61,255, 59, 60, 60,255,148,143,135,255,228,220,205,255,227,219,204,255, -227,219,204,255,227,219,203,255,227,219,203,255,226,219,202,255,227,218,203,255,226,218,201,255,225,218,202,255,226,217,201,255, -226,217,201,255,225,216,200,255,224,215,200,255,225,216,198,255,224,215,198,255,224,215,197,255,223,214,197,255,222,214,197,255, -222,212,195,255,223,213,195,255,223,213,195,255,221,211,193,255,222,212,194,255,222,212,193,255,220,210,192,255,220,211,191,255, -221,210,191,255,219,210,190,255,219,210,190,255,220,209,191,255,220,209,189,255,219,208,190,255,220,209,189,255,218,207,188,255, -218,207,188,255,219,208,187,255,218,207,187,255,218,207,187,255,218,207,187,255,218,207,187,255,218,207,187,255,218,207,188,255, -219,208,189,255,221,211,191,255,212,202,185,255,169,152,134,255,141,114, 95,255,147,120,100,255,154,128,105,255,156,132,107,255, -157,132,108,255,159,134,110,255,158,133,109,255,156,132,108,255,157,132,108,255,157,133,108,255,155,130,106,255,154,129,105,255, -154,129,106,255,154,129,106,255,153,128,105,255,151,126,103,255,151,126,103,255,150,126,102,255,151,125,103,255,149,123,101,255, -147,122,100,255,147,121,100,255,147,121,100,255,146,120, 99,255,146,120, 99,255,144,118, 97,255,143,118, 96,255,144,117, 97,255, -142,116, 95,255,142,115, 95,255,141,114, 94,255,139,113, 93,255,139,112, 92,255,137,110, 91,255,136,109, 90,255,135,108, 89,255, -133,106, 88,255,132,105, 87,255,131,103, 86,255,128,100, 83,255,125, 97, 82,255,122, 93, 79,255,117, 89, 75,255,114, 84, 71,255, -107, 78, 67,255, 99, 72, 63,255, 73, 62, 57,255, 61, 61, 62,255, 59, 60, 60,255,147,143,135,255,228,220,205,255,227,219,203,255, -227,219,203,255,227,218,202,255,227,218,203,255,227,218,203,255,226,217,202,255,225,217,201,255,226,218,202,255,225,217,201,255, -225,217,201,255,224,216,200,255,225,215,200,255,224,215,198,255,224,215,198,255,224,214,197,255,223,214,196,255,222,213,196,255, -223,213,195,255,222,213,194,255,222,212,194,255,222,212,194,255,221,211,193,255,221,211,192,255,221,211,191,255,220,210,191,255, -220,210,190,255,220,209,189,255,219,209,189,255,220,209,189,255,219,208,189,255,219,208,188,255,218,207,187,255,219,208,187,255, -218,207,187,255,218,207,186,255,217,206,186,255,217,206,185,255,217,206,185,255,217,206,185,255,218,206,185,255,217,206,185,255, -217,206,186,255,217,206,185,255,218,207,187,255,221,210,191,255,207,196,178,255,173,155,136,255,150,126,107,255,143,116, 95,255, -149,122,100,255,153,128,104,255,154,129,105,255,154,129,106,255,155,130,107,255,154,129,106,255,153,128,105,255,153,128,105,255, -153,128,105,255,153,128,105,255,151,125,103,255,150,125,102,255,150,125,102,255,150,124,102,255,149,123,101,255,147,122,100,255, -147,121,100,255,146,120,100,255,146,120, 99,255,146,120, 98,255,144,118, 97,255,144,118, 97,255,144,117, 97,255,143,117, 96,255, -142,116, 95,255,141,115, 95,255,141,113, 93,255,139,112, 93,255,138,111, 92,255,137,110, 91,255,136,109, 90,255,135,107, 89,255, -133,105, 87,255,131,103, 86,255,130,102, 85,255,127, 99, 83,255,124, 96, 81,255,121, 92, 78,255,117, 88, 74,255,112, 82, 70,255, -104, 76, 66,255, 81, 60, 52,255, 34, 33, 32,255, 62, 62, 62,255, 59, 60, 60,255,147,143,135,255,228,220,205,255,227,219,203,255, -227,219,202,255,227,219,203,255,226,218,202,255,227,217,203,255,226,218,202,255,226,218,202,255,226,217,202,255,226,217,201,255, -225,217,201,255,224,216,200,255,225,215,199,255,224,215,198,255,223,214,197,255,224,215,198,255,223,213,196,255,222,213,196,255, -223,213,194,255,222,212,194,255,221,212,194,255,222,212,194,255,221,211,192,255,220,210,191,255,221,211,192,255,220,210,191,255, -220,209,189,255,219,208,189,255,220,209,189,255,219,208,189,255,218,207,188,255,219,208,187,255,219,208,187,255,218,207,186,255, -218,206,185,255,218,206,185,255,218,206,185,255,217,205,184,255,218,206,185,255,217,205,184,255,217,205,184,255,217,205,183,255, -216,204,183,255,216,205,183,255,217,205,183,255,217,205,183,255,217,206,185,255,217,206,186,255,209,197,177,255,187,171,152,255, -150,125,104,255,138,111, 90,255,145,119, 98,255,148,122,101,255,151,125,103,255,151,125,103,255,150,125,103,255,151,126,103,255, -151,126,103,255,150,125,102,255,149,123,101,255,149,123,101,255,150,124,102,255,149,123,101,255,148,122,101,255,147,121,100,255, -147,121, 99,255,147,121, 99,255,146,120, 98,255,145,119, 98,255,145,119, 98,255,144,117, 96,255,143,117, 96,255,142,117, 95,255, -142,116, 95,255,141,114, 95,255,141,114, 94,255,139,112, 92,255,138,111, 92,255,136,109, 90,255,136,108, 90,255,134,106, 88,255, -132,104, 87,255,131,103, 85,255,129,101, 84,255,127, 98, 82,255,123, 95, 80,255,120, 91, 76,255,115, 86, 72,255,109, 80, 68,255, - 99, 72, 62,255, 15, 11, 9,255, 28, 28, 28,255, 62, 62, 62,255, 59, 60, 60,255,148,144,136,255,228,220,205,255,226,218,203,255, -227,219,202,255,227,218,202,255,227,217,203,255,226,218,202,255,225,217,201,255,226,218,202,255,226,217,202,255,225,216,201,255, -224,216,200,255,225,215,200,255,225,216,199,255,224,215,198,255,223,215,198,255,223,213,196,255,223,213,196,255,222,212,195,255, -222,212,194,255,221,211,193,255,222,212,194,255,220,210,192,255,221,211,192,255,221,211,191,255,220,210,191,255,219,209,190,255, -219,208,189,255,220,209,189,255,219,208,188,255,218,207,187,255,218,207,186,255,218,207,186,255,217,206,185,255,217,206,185,255, -218,205,184,255,217,205,184,255,216,204,183,255,216,204,183,255,216,204,183,255,216,204,182,255,215,203,181,255,215,203,181,255, -215,202,180,255,215,203,181,255,215,203,181,255,215,202,180,255,215,203,180,255,215,203,180,255,215,203,181,255,216,204,183,255, -215,204,184,255,183,166,144,255,148,122,102,255,142,115, 95,255,144,118, 97,255,145,120, 98,255,146,120, 99,255,148,122,100,255, -148,123,101,255,148,122,100,255,147,121,100,255,147,122,100,255,148,122,100,255,148,122,100,255,147,121, 99,255,146,120, 98,255, -145,119, 98,255,146,120, 99,255,145,119, 98,255,145,119, 98,255,144,118, 97,255,144,117, 96,255,143,116, 95,255,142,117, 96,255, -142,115, 95,255,141,114, 94,255,139,112, 92,255,138,111, 92,255,137,110, 92,255,136,109, 90,255,135,107, 89,255,134,106, 88,255, -131,104, 86,255,130,103, 85,255,128,100, 84,255,125, 97, 81,255,122, 93, 79,255,118, 89, 75,255,113, 84, 71,255,105, 76, 66,255, - 44, 32, 29,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 59, 60, 60,255,148,144,136,255,229,221,206,255,226,219,204,255, -227,219,203,255,227,217,202,255,227,218,203,255,226,217,202,255,225,218,201,255,226,217,202,255,226,216,201,255,224,217,201,255, -225,216,200,255,225,215,200,255,224,215,199,255,224,215,198,255,223,215,198,255,223,213,196,255,222,213,195,255,223,213,195,255, -221,212,194,255,222,212,193,255,221,211,193,255,220,210,192,255,221,211,191,255,220,210,191,255,219,209,190,255,219,208,189,255, -219,208,187,255,218,207,189,255,218,207,187,255,218,207,186,255,217,206,185,255,217,206,185,255,218,206,185,255,217,205,184,255, -216,204,183,255,216,204,183,255,215,203,182,255,215,203,181,255,215,203,181,255,215,203,181,255,215,202,180,255,215,202,179,255, -215,202,179,255,215,202,179,255,214,202,179,255,214,201,178,255,214,201,178,255,214,201,178,255,214,201,178,255,214,201,178,255, -214,201,178,255,216,204,182,255,208,196,174,255,179,161,139,255,152,127,105,255,141,114, 93,255,142,115, 95,255,143,117, 97,255, -145,119, 98,255,146,119, 98,255,146,120, 98,255,146,120, 99,255,147,121, 99,255,146,120, 99,255,145,119, 98,255,145,119, 98,255, -146,120, 98,255,145,119, 99,255,145,119, 98,255,144,118, 97,255,144,118, 97,255,143,117, 96,255,143,117, 95,255,143,116, 96,255, -141,115, 94,255,140,114, 94,255,140,113, 93,255,138,111, 92,255,137,110, 91,255,135,108, 89,255,134,107, 89,255,133,105, 87,255, -131,103, 86,255,130,101, 84,255,128,100, 83,255,125, 96, 81,255,121, 92, 78,255,116, 86, 74,255,108, 80, 68,255, 75, 54, 48,255, - 3, 2, 2,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,136,255,229,221,206,255,226,219,204,255, -227,218,203,255,227,218,203,255,226,217,202,255,226,218,202,255,225,217,201,255,225,216,201,255,226,217,201,255,225,216,200,255, -225,215,199,255,225,216,199,255,225,216,199,255,224,215,198,255,223,214,198,255,224,213,196,255,222,213,195,255,222,212,195,255, -221,213,195,255,221,211,193,255,221,211,193,255,221,211,191,255,220,210,191,255,219,210,191,255,220,209,190,255,219,208,188,255, -218,207,188,255,218,207,188,255,218,207,186,255,217,206,185,255,218,206,185,255,218,206,185,255,217,205,184,255,216,204,183,255, -216,204,182,255,215,203,181,255,216,203,181,255,216,203,181,255,215,202,180,255,215,202,179,255,214,201,178,255,214,201,178,255, -214,201,178,255,214,201,177,255,214,201,177,255,213,200,177,255,213,200,176,255,213,200,176,255,213,200,175,255,213,200,175,255, -213,200,175,255,213,199,175,255,212,199,175,255,213,199,175,255,207,193,171,255,175,155,131,255,144,118, 95,255,139,112, 93,255, -141,114, 94,255,142,115, 95,255,143,117, 96,255,144,117, 97,255,144,118, 97,255,145,119, 98,255,145,119, 98,255,145,119, 98,255, -145,119, 98,255,146,120, 99,255,144,119, 97,255,144,118, 97,255,144,117, 97,255,143,116, 95,255,143,117, 95,255,142,116, 96,255, -141,114, 94,255,140,113, 93,255,139,112, 93,255,138,111, 91,255,137,110, 91,255,136,108, 89,255,133,106, 88,255,132,105, 87,255, -130,102, 86,255,128,100, 84,255,126, 98, 82,255,124, 95, 80,255,119, 90, 76,255,112, 83, 71,255,103, 75, 65,255, 16, 11, 10,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,136,255,229,221,207,255,227,219,204,255, -226,218,204,255,227,218,203,255,226,218,202,255,225,218,201,255,226,217,202,255,226,216,200,255,225,217,201,255,224,216,200,255, -224,215,200,255,225,216,199,255,224,215,198,255,223,214,197,255,224,215,197,255,222,213,197,255,223,213,196,255,222,213,195,255, -222,211,193,255,221,211,193,255,220,210,192,255,220,210,191,255,219,209,190,255,220,209,190,255,218,207,188,255,219,208,187,255, -219,208,187,255,218,206,186,255,217,206,185,255,217,205,184,255,217,205,184,255,216,204,183,255,216,204,183,255,215,203,181,255, -215,202,180,255,215,202,179,255,214,201,179,255,214,201,178,255,214,201,178,255,213,200,177,255,213,200,177,255,213,200,177,255, -212,199,176,255,212,199,175,255,212,199,175,255,212,198,174,255,212,198,174,255,212,198,173,255,212,198,173,255,211,197,173,255, -211,197,172,255,211,197,172,255,211,197,172,255,210,196,170,255,210,195,170,255,216,204,182,255,199,184,160,255,158,134,110,255, -141,115, 95,255,139,112, 92,255,140,113, 93,255,141,114, 94,255,143,115, 96,255,143,117, 96,255,143,117, 96,255,143,117, 96,255, -144,118, 97,255,144,118, 97,255,144,117, 96,255,143,117, 97,255,143,116, 96,255,143,117, 96,255,143,116, 96,255,142,115, 94,255, -140,114, 94,255,139,113, 93,255,138,111, 92,255,137,110, 91,255,136,109, 90,255,134,107, 89,255,133,106, 88,255,132,104, 86,255, -129,101, 84,255,128,100, 83,255,125, 96, 81,255,121, 92, 77,255,116, 86, 73,255,108, 79, 68,255, 32, 24, 21,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,137,255,229,222,207,255,227,219,205,255, -227,219,204,255,226,218,204,255,226,218,202,255,225,217,202,255,226,217,202,255,225,216,200,255,224,217,201,255,225,216,200,255, -225,216,199,255,224,215,199,255,223,214,197,255,224,215,198,255,223,214,197,255,223,213,196,255,223,212,195,255,222,213,195,255, -222,211,193,255,221,210,192,255,221,211,192,255,219,209,190,255,220,209,190,255,219,208,189,255,218,207,188,255,219,208,188,255, -218,207,186,255,217,206,185,255,217,205,184,255,217,205,184,255,216,204,183,255,216,204,182,255,216,203,181,255,215,202,180,255, -214,201,179,255,214,201,178,255,214,201,178,255,213,200,177,255,213,200,177,255,213,199,176,255,213,200,176,255,212,199,175,255, -212,199,174,255,212,198,174,255,212,198,173,255,212,198,173,255,211,197,172,255,211,197,172,255,211,196,171,255,211,196,171,255, -210,196,170,255,210,196,170,255,211,196,170,255,210,195,170,255,209,195,169,255,208,192,165,255,212,199,174,255,210,196,173,255, -175,155,130,255,144,118, 97,255,138,111, 92,255,138,111, 92,255,140,113, 93,255,141,114, 94,255,142,115, 95,255,142,116, 96,255, -143,117, 96,255,145,118, 96,255,144,117, 96,255,143,116, 96,255,143,117, 95,255,142,116, 96,255,142,115, 95,255,141,115, 95,255, -140,113, 93,255,139,112, 93,255,137,111, 92,255,136,109, 90,255,135,108, 89,255,134,106, 88,255,133,104, 87,255,131,103, 85,255, -128,101, 84,255,127, 98, 82,255,123, 95, 80,255,119, 90, 75,255,110, 81, 70,255, 53, 38, 33,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,137,255,229,222,208,255,228,220,205,255, -227,219,205,255,226,219,204,255,226,218,203,255,226,218,202,255,225,216,201,255,225,217,201,255,224,216,200,255,225,216,200,255, -224,215,198,255,224,215,198,255,223,214,198,255,223,214,197,255,223,214,197,255,223,212,196,255,222,213,195,255,222,212,194,255, -222,211,194,255,221,210,192,255,221,211,192,255,219,209,190,255,219,208,189,255,218,207,189,255,219,208,187,255,218,207,186,255, -218,206,185,255,217,205,184,255,216,204,184,255,217,205,183,255,216,204,182,255,216,203,181,255,215,202,180,255,214,201,178,255, -214,201,178,255,213,200,177,255,214,200,177,255,213,200,176,255,213,200,176,255,213,199,175,255,213,199,175,255,212,198,174,255, -212,198,172,255,211,197,172,255,211,197,172,255,211,197,171,255,211,196,170,255,211,196,170,255,210,195,169,255,210,195,169,255, -210,195,169,255,210,195,169,255,210,195,169,255,209,194,168,255,209,194,168,255,209,194,167,255,207,191,164,255,208,193,167,255, -215,203,181,255,190,171,146,255,148,122,100,255,137,110, 91,255,137,110, 91,255,139,112, 92,255,141,114, 94,255,141,115, 95,255, -142,116, 96,255,144,117, 96,255,143,116, 96,255,143,117, 95,255,142,116, 95,255,142,115, 95,255,142,115, 95,255,141,114, 94,255, -139,112, 93,255,138,111, 92,255,138,110, 91,255,136,108, 90,255,134,107, 89,255,133,106, 88,255,131,104, 86,255,130,102, 85,255, -128,100, 83,255,125, 97, 81,255,121, 92, 78,255,115, 86, 73,255, 70, 51, 44,255, 2, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,229,222,208,255,227,220,206,255, -228,220,205,255,227,219,204,255,227,219,203,255,226,218,203,255,225,218,202,255,226,216,200,255,225,216,200,255,225,216,200,255, -224,215,198,255,223,214,198,255,223,214,197,255,222,213,196,255,223,213,196,255,222,212,194,255,222,212,194,255,221,211,193,255, -222,211,192,255,221,210,192,255,220,210,191,255,219,208,189,255,219,208,189,255,218,207,188,255,218,207,187,255,217,206,185,255, -217,205,184,255,216,204,183,255,217,205,183,255,216,204,182,255,215,202,180,255,215,202,179,255,214,201,178,255,213,200,177,255, -214,200,177,255,213,199,175,255,212,198,175,255,212,198,174,255,212,198,174,255,212,198,173,255,211,197,173,255,211,197,171,255, -210,196,170,255,210,196,170,255,210,196,170,255,210,195,169,255,209,194,169,255,209,194,167,255,208,193,167,255,208,193,167,255, -208,193,167,255,208,193,167,255,208,193,166,255,208,193,166,255,209,193,166,255,209,193,166,255,208,192,165,255,206,189,161,255, -207,190,163,255,216,205,185,255,191,172,147,255,148,122,100,255,136,109, 90,255,137,109, 91,255,138,111, 92,255,140,113, 93,255, -142,116, 95,255,142,117, 96,255,142,116, 95,255,142,115, 95,255,141,115, 95,255,142,114, 94,255,142,115, 95,255,140,114, 94,255, -139,112, 92,255,138,111, 91,255,136,110, 91,255,135,108, 89,255,134,107, 88,255,132,104, 86,255,130,103, 85,255,129,101, 84,255, -126, 98, 82,255,123, 95, 80,255,118, 89, 75,255, 93, 68, 58,255, 6, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,230,222,208,255,227,220,206,255, -228,220,206,255,227,220,205,255,226,219,204,255,226,218,203,255,225,218,202,255,226,216,201,255,225,217,201,255,225,216,200,255, -223,215,198,255,224,215,198,255,222,213,196,255,223,214,196,255,222,213,195,255,223,213,195,255,221,211,193,255,222,212,193,255, -221,211,192,255,220,210,191,255,219,209,190,255,220,208,189,255,218,207,188,255,219,208,187,255,217,206,186,255,218,206,185,255, -217,205,184,255,217,205,183,255,216,204,181,255,216,203,180,255,214,201,179,255,214,201,178,255,213,201,178,255,213,200,177,255, -213,199,175,255,213,199,175,255,213,199,174,255,212,198,174,255,212,198,173,255,211,197,171,255,210,196,170,255,210,196,170,255, -210,195,170,255,210,195,169,255,209,194,169,255,209,194,168,255,208,194,167,255,208,193,166,255,208,193,166,255,208,193,166,255, -208,192,165,255,208,192,165,255,208,192,165,255,208,192,165,255,208,192,165,255,208,192,165,255,207,192,164,255,207,191,164,255, -205,188,159,255,207,190,163,255,217,205,183,255,185,165,139,255,144,117, 96,255,135,108, 89,255,136,109, 91,255,138,111, 92,255, -141,114, 94,255,142,116, 95,255,141,115, 95,255,142,115, 95,255,142,114, 94,255,141,115, 94,255,141,114, 94,255,140,113, 93,255, -138,111, 92,255,137,110, 91,255,136,109, 90,255,134,107, 89,255,133,105, 87,255,131,103, 87,255,130,102, 85,255,128,100, 83,255, -125, 97, 81,255,121, 92, 77,255, 95, 71, 60,255, 5, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,138,255,230,223,209,255,227,220,206,255, -228,220,206,255,228,220,205,255,226,219,204,255,226,218,203,255,226,218,202,255,226,217,201,255,225,217,201,255,225,216,200,255, -224,215,198,255,223,215,198,255,223,214,197,255,222,214,195,255,223,213,195,255,222,212,194,255,222,212,193,255,221,211,192,255, -221,211,192,255,220,209,190,255,220,209,190,255,219,208,189,255,219,208,188,255,218,207,187,255,217,206,185,255,217,205,184,255, -217,205,183,255,216,203,181,255,216,203,181,255,215,202,179,255,214,201,178,255,213,201,178,255,214,200,177,255,213,199,175,255, -213,199,174,255,212,198,174,255,212,198,173,255,211,197,172,255,211,197,171,255,210,196,170,255,210,195,170,255,210,195,169,255, -209,194,169,255,209,194,168,255,208,194,167,255,208,193,166,255,208,193,166,255,208,193,166,255,207,192,165,255,207,192,165,255, -207,191,165,255,208,192,164,255,208,192,164,255,208,192,164,255,208,192,164,255,208,192,164,255,207,191,164,255,208,192,164,255, -207,191,163,255,205,188,159,255,209,194,168,255,217,206,187,255,172,149,123,255,138,111, 91,255,135,108, 90,255,137,110, 91,255, -139,112, 93,255,141,115, 95,255,142,115, 95,255,141,115, 95,255,141,115, 95,255,141,114, 94,255,140,113, 94,255,139,112, 93,255, -137,111, 91,255,136,109, 91,255,135,108, 89,255,133,106, 88,255,132,104, 87,255,131,103, 86,255,129,101, 84,255,127, 99, 82,255, -122, 94, 79,255,100, 75, 64,255, 15, 11, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,138,255,230,223,209,255,228,221,207,255, -227,220,207,255,228,221,206,255,226,219,205,255,227,219,204,255,226,218,203,255,226,218,201,255,225,217,201,255,224,216,200,255, -224,215,199,255,223,215,198,255,224,214,197,255,222,213,196,255,223,213,195,255,221,211,193,255,221,211,192,255,221,211,192,255, -219,209,190,255,220,209,190,255,219,208,189,255,219,208,188,255,218,207,187,255,217,206,186,255,218,205,184,255,217,205,184,255, -216,204,183,255,216,203,181,255,215,202,180,255,214,201,179,255,213,200,177,255,213,200,177,255,213,199,175,255,213,198,174,255, -212,198,173,255,211,197,172,255,211,197,171,255,210,196,170,255,209,195,169,255,210,194,169,255,209,194,168,255,208,193,167,255, -209,193,166,255,208,193,166,255,208,192,165,255,207,192,165,255,208,192,165,255,208,191,164,255,208,191,164,255,207,191,163,255, -207,191,163,255,206,191,163,255,206,190,163,255,206,190,163,255,206,190,163,255,206,190,163,255,207,191,163,255,207,191,164,255, -207,191,163,255,206,189,161,255,203,186,156,255,214,202,180,255,207,194,171,255,151,126,103,255,134,107, 88,255,135,108, 89,255, -137,110, 91,255,140,113, 94,255,140,113, 93,255,140,113, 93,255,140,113, 93,255,139,113, 93,255,139,112, 93,255,138,111, 91,255, -137,110, 91,255,136,108, 90,255,133,106, 88,255,132,105, 87,255,131,104, 86,255,129,102, 84,255,127,100, 84,255,125, 96, 81,255, -106, 81, 69,255, 18, 13, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,138,255,230,223,209,255,228,221,207,255, -228,221,207,255,228,221,206,255,226,219,205,255,227,219,204,255,226,218,203,255,226,218,202,255,225,217,201,255,224,217,200,255, -224,215,199,255,223,214,198,255,224,215,198,255,222,213,196,255,222,212,195,255,221,211,193,255,221,211,192,255,221,211,192,255, -219,209,190,255,219,208,189,255,219,208,189,255,218,207,187,255,218,207,186,255,218,206,185,255,217,205,184,255,216,204,182,255, -215,203,181,255,216,202,180,255,214,201,178,255,213,201,178,255,214,200,177,255,213,199,175,255,213,199,174,255,212,198,173,255, -211,197,172,255,210,197,171,255,210,196,170,255,210,195,169,255,210,194,169,255,209,194,168,255,208,193,167,255,209,193,166,255, -208,192,166,255,208,192,165,255,207,192,165,255,208,192,164,255,208,192,164,255,208,191,163,255,207,191,163,255,207,191,163,255, -206,190,162,255,207,191,162,255,207,190,162,255,207,191,162,255,207,191,162,255,207,191,162,255,206,190,162,255,206,190,163,255, -206,190,163,255,206,190,162,255,205,187,158,255,205,188,160,255,218,208,189,255,177,157,132,255,135,108, 90,255,133,106, 87,255, -136,109, 90,255,140,113, 93,255,140,114, 94,255,140,113, 93,255,139,112, 93,255,139,112, 92,255,137,111, 92,255,136,109, 90,255, -135,108, 90,255,134,107, 88,255,132,106, 88,255,132,104, 86,255,130,103, 86,255,129,102, 85,255,127, 99, 83,255,102, 78, 65,255, - 18, 13, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,138,255,230,223,210,255,229,222,207,255, -228,221,207,255,228,221,206,255,226,219,205,255,227,219,204,255,225,217,202,255,226,218,202,255,225,217,201,255,224,217,201,255, -224,215,199,255,223,214,199,255,224,215,198,255,222,213,196,255,222,212,195,255,222,212,193,255,221,211,192,255,220,210,191,255, -219,209,190,255,219,208,189,255,218,207,188,255,218,207,187,255,217,206,185,255,218,206,185,255,216,204,183,255,215,204,182,255, -216,203,181,255,215,202,179,255,214,201,178,255,213,200,177,255,213,199,175,255,213,199,174,255,212,198,173,255,211,197,172,255, -210,197,171,255,211,196,170,255,209,195,169,255,210,194,168,255,209,194,167,255,208,193,166,255,209,193,166,255,208,192,165,255, -207,192,165,255,207,192,164,255,208,192,164,255,208,191,163,255,207,191,163,255,207,191,163,255,206,191,163,255,206,191,163,255, -207,191,163,255,207,190,162,255,207,191,163,255,207,191,163,255,207,191,163,255,207,191,163,255,207,191,163,255,207,190,162,255, -207,191,162,255,207,191,163,255,206,190,161,255,203,185,155,255,213,200,176,255,201,186,163,255,141,115, 95,255,131,103, 86,255, -135,107, 89,255,138,112, 92,255,139,112, 93,255,139,112, 93,255,138,112, 92,255,137,110, 91,255,136,109, 91,255,136,109, 90,255, -134,107, 89,255,134,106, 88,255,133,105, 87,255,131,103, 86,255,129,102, 85,255,127,100, 83,255, 97, 74, 63,255, 12, 9, 8,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,139,255,230,224,210,255,228,221,207,255, -227,221,207,255,228,221,206,255,226,219,205,255,226,219,204,255,227,219,204,255,225,217,202,255,225,217,202,255,224,217,201,255, -225,215,199,255,224,215,199,255,224,215,198,255,222,213,196,255,222,212,195,255,221,211,193,255,221,211,192,255,220,210,191,255, -220,209,190,255,219,208,189,255,218,208,188,255,218,207,186,255,218,206,185,255,217,205,184,255,216,204,182,255,215,203,181,255, -215,202,180,255,214,201,178,255,213,200,177,255,213,200,177,255,212,198,174,255,212,198,174,255,211,197,173,255,210,196,171,255, -210,195,170,255,210,195,168,255,209,194,168,255,209,193,167,255,208,192,166,255,208,192,165,255,207,191,165,255,207,191,164,255, -207,191,163,255,207,191,163,255,206,190,162,255,206,190,162,255,206,189,161,255,207,189,161,255,207,189,161,255,207,189,161,255, -207,189,161,255,207,189,161,255,207,189,161,255,207,189,161,255,207,189,161,255,207,189,161,255,207,190,162,255,207,190,162,255, -207,190,162,255,206,191,163,255,207,190,162,255,205,187,157,255,207,192,164,255,215,203,182,255,151,126,105,255,129,100, 84,255, -133,106, 88,255,138,111, 92,255,139,111, 92,255,138,111, 92,255,137,110, 91,255,136,109, 90,255,136,109, 90,255,135,107, 89,255, -134,106, 88,255,133,105, 87,255,131,104, 87,255,130,103, 86,255,127, 99, 83,255,101, 77, 66,255, 5, 4, 3,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,138,255,230,223,210,255,228,222,207,255, -227,221,207,255,228,221,206,255,226,219,205,255,227,219,205,255,226,219,204,255,225,217,202,255,225,217,202,255,224,217,201,255, -224,216,200,255,223,215,199,255,224,215,198,255,222,213,196,255,222,213,196,255,221,211,194,255,221,211,192,255,220,210,191,255, -220,209,190,255,219,208,189,255,219,208,188,255,218,206,186,255,217,206,185,255,217,205,184,255,216,204,182,255,216,203,181,255, -215,202,179,255,214,201,178,255,214,200,177,255,213,199,175,255,212,198,174,255,211,197,172,255,211,196,171,255,210,195,170,255, -210,195,168,255,209,194,167,255,208,193,167,255,208,192,165,255,208,192,164,255,207,191,164,255,207,191,163,255,207,191,162,255, -207,190,162,255,207,190,162,255,206,190,161,255,206,190,161,255,206,190,161,255,206,189,161,255,206,189,160,255,206,189,161,255, -206,189,161,255,206,189,160,255,206,189,161,255,207,190,161,255,207,190,162,255,206,189,162,255,207,189,161,255,207,189,161,255, -207,190,162,255,207,191,163,255,207,190,162,255,206,188,160,255,205,187,159,255,220,209,189,255,164,141,118,255,126, 97, 82,255, -132,104, 87,255,136,109, 90,255,138,111, 92,255,137,110, 91,255,137,109, 91,255,136,108, 90,255,135,107, 89,255,134,107, 88,255, -133,105, 87,255,132,105, 87,255,130,104, 86,255,127,100, 83,255, 72, 56, 47,255, 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,138,255,230,223,210,255,228,221,207,255, -227,220,207,255,228,221,206,255,226,219,205,255,227,219,205,255,226,219,204,255,226,217,202,255,225,217,201,255,224,217,201,255, -224,216,200,255,224,215,199,255,223,215,198,255,223,213,196,255,222,213,195,255,221,211,194,255,220,211,192,255,220,210,191,255, -220,209,190,255,219,208,189,255,218,208,188,255,219,206,186,255,217,206,185,255,217,205,184,255,215,203,182,255,216,203,181,255, -215,202,179,255,213,200,177,255,213,200,176,255,213,199,175,255,211,197,173,255,211,197,172,255,210,196,171,255,210,195,169,255, -209,194,168,255,209,193,166,255,208,192,165,255,207,191,164,255,207,191,163,255,207,191,162,255,206,190,162,255,206,190,161,255, -206,190,161,255,206,190,161,255,205,189,160,255,205,189,160,255,205,189,160,255,205,188,160,255,205,188,160,255,205,188,160,255, -205,188,160,255,205,188,160,255,206,189,160,255,206,189,161,255,206,189,161,255,207,190,161,255,207,190,162,255,207,190,162,255, -206,189,161,255,207,190,162,255,207,190,162,255,206,190,161,255,205,187,158,255,220,209,189,255,176,156,132,255,122, 93, 78,255, -130,102, 85,255,134,107, 88,255,136,108, 90,255,135,108, 90,255,135,108, 89,255,135,108, 89,255,134,107, 88,255,134,106, 87,255, -132,105, 87,255,131,104, 87,255,130,102, 85,255, 52, 41, 35,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,138,255,230,223,210,255,227,221,207,255, -228,220,206,255,227,220,206,255,226,219,205,255,227,219,204,255,226,219,204,255,225,217,202,255,225,217,201,255,224,217,201,255, -224,215,199,255,224,215,199,255,223,213,197,255,223,214,196,255,222,213,195,255,221,211,193,255,220,211,192,255,221,211,192,255, -219,209,190,255,219,208,189,255,219,207,188,255,217,207,186,255,217,206,185,255,217,205,184,255,216,204,182,255,215,203,181,255, -215,202,179,255,213,200,177,255,213,200,176,255,213,199,175,255,211,197,173,255,211,197,171,255,210,196,170,255,209,194,168,255, -209,193,167,255,208,192,165,255,207,191,163,255,206,190,163,255,206,190,161,255,205,189,161,255,205,189,160,255,205,188,159,255, -205,188,159,255,205,188,159,255,205,188,159,255,205,188,159,255,205,188,159,255,205,188,159,255,205,188,159,255,205,188,159,255, -206,188,159,255,206,188,159,255,206,188,159,255,206,189,159,255,205,188,160,255,205,188,160,255,205,188,160,255,206,189,161,255, -206,189,161,255,206,190,162,255,206,190,162,255,206,189,161,255,205,187,157,255,220,209,189,255,184,166,142,255,118, 88, 75,255, -130,101, 84,255,133,105, 87,255,134,107, 88,255,134,107, 88,255,134,107, 89,255,134,106, 88,255,133,106, 87,255,131,105, 87,255, -132,105, 87,255,117, 93, 77,255, 27, 21, 18,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,138,255,229,223,209,255,228,221,207,255, -228,221,207,255,227,220,206,255,227,219,205,255,226,219,204,255,226,218,203,255,225,217,202,255,224,217,202,255,225,217,201,255, -224,215,199,255,224,215,198,255,223,213,196,255,223,213,196,255,222,213,195,255,222,211,193,255,220,210,192,255,221,210,192,255, -219,210,191,255,219,208,188,255,219,207,187,255,217,206,186,255,217,205,185,255,216,205,183,255,217,205,182,255,215,203,181,255, -215,202,179,255,213,200,177,255,213,200,176,255,213,199,174,255,211,197,173,255,211,197,171,255,210,195,170,255,209,194,168,255, -209,193,166,255,208,192,165,255,206,190,163,255,206,190,161,255,205,189,160,255,205,189,160,255,205,188,159,255,204,188,159,255, -204,188,159,255,204,188,159,255,204,188,159,255,204,188,159,255,204,188,158,255,204,188,159,255,204,188,159,255,204,188,159,255, -205,188,159,255,205,187,159,255,205,187,158,255,205,188,159,255,205,188,159,255,205,188,159,255,206,189,160,255,206,189,160,255, -205,188,160,255,205,189,161,255,206,189,161,255,205,188,159,255,204,188,158,255,222,212,193,255,186,167,143,255,113, 84, 71,255, -127, 99, 83,255,132,105, 87,255,134,106, 88,255,134,107, 88,255,134,106, 88,255,132,106, 87,255,133,106, 88,255,134,107, 89,255, - 85, 67, 55,255, 12, 9, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,145,137,255,229,223,209,255,228,220,206,255, -227,220,206,255,226,219,206,255,227,219,204,255,226,219,204,255,225,218,203,255,225,218,202,255,224,217,201,255,225,216,201,255, -223,215,199,255,224,214,198,255,223,214,197,255,222,213,196,255,222,212,195,255,221,211,193,255,221,210,192,255,220,210,191,255, -219,209,189,255,218,208,188,255,219,208,188,255,217,206,186,255,217,205,184,255,217,205,183,255,216,203,181,255,215,202,180,255, -215,202,179,255,213,200,177,255,213,200,176,255,212,199,174,255,212,197,172,255,211,196,171,255,210,195,169,255,208,193,167,255, -208,193,165,255,208,192,164,255,206,190,162,255,206,189,161,255,206,189,160,255,204,187,158,255,204,188,159,255,204,187,158,255, -205,187,158,255,205,187,158,255,205,187,158,255,205,187,158,255,205,187,158,255,205,187,158,255,205,187,158,255,205,187,158,255, -205,187,158,255,205,187,158,255,205,188,158,255,205,188,158,255,204,188,158,255,205,188,159,255,205,188,159,255,204,187,159,255, -205,188,160,255,206,189,160,255,205,188,159,255,204,187,157,255,207,190,163,255,225,217,200,255,180,161,136,255,108, 79, 67,255, -125, 96, 81,255,130,103, 86,255,133,105, 88,255,133,106, 88,255,133,106, 87,255,133,106, 88,255,129,103, 85,255, 42, 33, 28,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,148,144,137,255,229,222,208,255,227,220,206,255, -226,219,205,255,226,219,204,255,225,218,203,255,225,218,203,255,226,218,203,255,225,217,201,255,225,216,201,255,223,216,199,255, -224,215,198,255,223,215,198,255,223,213,196,255,222,213,195,255,222,212,194,255,220,211,193,255,220,210,192,255,220,210,191,255, -219,208,189,255,218,208,188,255,218,207,188,255,217,206,185,255,216,205,184,255,216,204,183,255,215,203,181,255,214,202,180,255, -214,201,179,255,213,200,177,255,213,199,175,255,212,198,174,255,211,197,172,255,210,196,170,255,210,195,169,255,208,193,167,255, -208,192,165,255,206,191,163,255,207,189,161,255,206,189,160,255,205,187,159,255,204,187,158,255,204,186,157,255,204,187,156,255, -203,186,156,255,203,186,156,255,203,186,156,255,203,186,156,255,203,186,156,255,203,186,156,255,203,186,156,255,203,186,156,255, -203,186,156,255,203,187,156,255,203,186,157,255,203,186,157,255,204,186,157,255,204,187,157,255,204,187,157,255,204,187,158,255, -204,187,158,255,204,187,157,255,203,186,155,255,203,186,156,255,215,203,180,255,226,218,201,255,169,147,123,255,103, 75, 64,255, -123, 95, 79,255,129,101, 85,255,129,103, 86,255,132,104, 87,255,130,104, 86,255, 99, 79, 65,255, 14, 11, 9,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,147,144,137,255,228,221,206,255,227,219,205,255, -226,219,204,255,225,219,204,255,226,218,203,255,226,218,203,255,225,217,202,255,225,216,201,255,224,216,200,255,224,216,199,255, -223,215,198,255,223,214,197,255,223,213,196,255,221,212,195,255,221,212,194,255,220,210,193,255,220,210,192,255,220,210,191,255, -219,208,190,255,218,207,188,255,218,207,186,255,218,205,186,255,217,205,184,255,216,204,182,255,215,203,181,255,215,202,179,255, -214,201,178,255,213,200,177,255,213,199,175,255,212,198,173,255,211,197,172,255,210,195,170,255,209,194,168,255,208,193,166,255, -207,191,164,255,207,191,163,255,206,189,161,255,205,188,159,255,205,187,158,255,204,186,157,255,203,186,156,255,204,186,156,255, -203,185,155,255,203,186,155,255,203,186,155,255,204,186,155,255,204,186,155,255,204,186,155,255,203,186,155,255,203,186,155,255, -203,186,155,255,203,186,155,255,203,186,156,255,203,186,155,255,203,186,155,255,203,186,155,255,203,185,155,255,203,185,155,255, -202,185,154,255,202,184,153,255,203,185,155,255,211,198,173,255,224,215,200,255,218,207,185,255,151,127,105,255,102, 74, 63,255, -120, 92, 77,255,126, 98, 82,255,130,102, 85,255,111, 88, 74,255, 42, 34, 28,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,147,143,136,255,227,220,206,255,226,219,203,255, -226,218,204,255,226,218,203,255,224,217,202,255,225,216,202,255,225,217,201,255,223,215,199,255,224,216,200,255,224,215,199,255, -222,214,197,255,222,213,196,255,223,212,196,255,221,212,194,255,221,212,193,255,221,210,192,255,219,209,190,255,220,209,190,255, -218,208,189,255,218,207,187,255,218,207,186,255,216,205,184,255,216,204,183,255,215,203,182,255,215,202,180,255,214,201,179,255, -214,201,177,255,212,199,175,255,212,198,174,255,212,197,173,255,210,195,170,255,210,195,169,255,209,194,167,255,208,192,165,255, -207,191,163,255,207,190,162,255,205,188,159,255,205,188,158,255,204,187,157,255,204,186,155,255,203,186,154,255,203,185,155,255, -203,185,154,255,202,185,154,255,202,185,154,255,203,185,154,255,203,185,154,255,203,185,154,255,203,185,154,255,203,185,154,255, -203,185,154,255,203,185,154,255,203,185,154,255,202,185,154,255,201,184,153,255,202,184,152,255,201,182,151,255,201,182,150,255, -200,181,150,255,203,185,154,255,211,197,173,255,221,211,193,255,221,212,194,255,199,182,155,255,134,108, 89,255,105, 77, 66,255, -118, 90, 75,255,126, 98, 83,255, 66, 53, 44,255, 4, 3, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,147,143,135,255,227,219,204,255,225,217,202,255, -225,217,202,255,224,217,201,255,224,216,201,255,224,216,201,255,223,216,200,255,223,215,199,255,223,215,198,255,222,214,197,255, -222,213,196,255,222,213,195,255,221,212,194,255,221,211,193,255,220,211,193,255,219,210,192,255,219,209,190,255,219,208,189,255, -218,207,187,255,217,206,186,255,217,206,186,255,216,204,183,255,216,204,182,255,215,203,181,255,214,202,179,255,213,201,178,255, -213,200,176,255,212,199,175,255,211,198,173,255,211,196,171,255,209,195,169,255,209,194,168,255,208,192,166,255,207,191,164,255, -206,190,162,255,206,189,160,255,205,187,159,255,204,187,157,255,203,185,155,255,202,185,154,255,202,185,154,255,202,184,153,255, -202,184,153,255,202,184,152,255,202,184,152,255,202,184,152,255,201,183,152,255,201,183,152,255,201,183,152,255,201,183,152,255, -201,183,152,255,201,183,151,255,201,182,151,255,200,182,150,255,200,181,148,255,199,180,148,255,199,180,147,255,199,180,148,255, -203,185,155,255,211,196,171,255,217,207,186,255,219,208,188,255,207,192,166,255,173,151,124,255,124, 96, 80,255,109, 80, 68,255, - 82, 63, 53,255, 13, 11, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,146,142,134,255,225,217,201,255,224,216,200,255, -224,216,201,255,224,216,200,255,224,216,200,255,223,215,199,255,223,215,198,255,223,214,198,255,223,214,197,255,223,213,196,255, -222,213,196,255,222,212,194,255,221,212,194,255,221,211,193,255,220,210,192,255,220,210,191,255,219,209,190,255,218,207,188,255, -217,206,186,255,217,206,186,255,217,205,184,255,216,204,183,255,215,203,181,255,215,202,180,255,214,201,178,255,213,200,176,255, -213,199,175,255,212,198,174,255,211,196,171,255,210,196,170,255,209,195,169,255,208,193,166,255,208,192,165,255,207,191,162,255, -206,189,160,255,205,188,159,255,204,187,157,255,203,186,155,255,203,185,154,255,202,184,153,255,202,183,152,255,202,183,152,255, -201,183,151,255,201,183,151,255,201,182,151,255,201,182,150,255,201,182,150,255,201,182,150,255,200,181,149,255,200,181,149,255, -199,180,149,255,199,179,147,255,198,179,146,255,197,177,146,255,197,177,144,255,196,177,144,255,198,179,147,255,203,185,156,255, -209,195,169,255,214,202,180,255,215,202,179,255,207,190,162,255,186,165,135,255,153,128,105,255, 99, 77, 64,255, 29, 22, 19,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,145,140,131,255,224,215,198,255,223,215,198,255, -223,215,198,255,223,215,198,255,223,214,198,255,223,213,198,255,222,214,197,255,222,213,195,255,222,212,196,255,222,213,195,255, -221,211,193,255,220,211,193,255,221,211,192,255,220,209,191,255,220,210,191,255,219,209,189,255,218,207,188,255,217,207,187,255, -217,206,185,255,216,205,184,255,216,204,183,255,216,203,181,255,215,202,180,255,214,201,179,255,213,200,177,255,212,199,176,255, -212,198,174,255,211,196,172,255,210,196,171,255,210,195,169,255,208,193,167,255,208,192,165,255,207,191,164,255,206,189,161,255, -205,188,159,255,205,187,157,255,203,185,155,255,203,185,154,255,202,184,153,255,202,182,151,255,201,182,151,255,201,182,150,255, -200,181,150,255,199,180,149,255,200,181,149,255,199,180,148,255,198,180,148,255,199,180,147,255,197,178,146,255,198,178,145,255, -197,176,144,255,196,176,143,255,196,175,143,255,194,175,141,255,195,175,142,255,198,178,145,255,203,185,154,255,208,191,164,255, -210,196,171,255,209,194,168,255,200,183,152,255,185,164,133,255,159,136,111,255, 68, 56, 46,255, 2, 2, 2,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,138,132,123,255,221,211,192,255,221,211,193,255, -221,211,194,255,220,211,193,255,221,212,194,255,221,212,195,255,221,212,195,255,221,211,194,255,220,211,193,255,220,211,193,255, -220,210,192,255,220,210,191,255,219,209,191,255,219,209,190,255,219,208,188,255,218,207,188,255,217,206,187,255,217,206,185,255, -216,205,184,255,216,204,183,255,216,203,182,255,215,202,180,255,214,201,179,255,213,200,177,255,212,199,176,255,212,199,174,255, -211,197,172,255,210,196,171,255,209,194,169,255,209,193,167,255,208,192,166,255,207,191,164,255,206,190,161,255,205,188,159,255, -204,187,158,255,203,185,155,255,202,184,154,255,202,184,152,255,201,182,151,255,200,181,150,255,199,180,148,255,199,180,148,255, -198,179,147,255,198,179,146,255,197,178,146,255,197,177,144,255,196,176,144,255,196,176,143,255,195,174,142,255,194,173,141,255, -193,172,141,255,193,172,140,255,193,172,140,255,194,174,141,255,197,176,144,255,200,182,149,255,203,185,155,255,204,187,157,255, -200,182,151,255,188,167,137,255,150,132,107,255, 92, 78, 64,255, 13, 11, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 51, 50, 48,255, 76, 72, 64,255,156,147,132,255, -212,202,182,255,221,210,190,255,219,208,189,255,218,208,188,255,219,209,190,255,219,209,191,255,219,209,191,255,219,209,190,255, -219,209,189,255,219,208,189,255,219,208,188,255,218,207,188,255,218,207,186,255,218,206,186,255,217,206,186,255,217,205,184,255, -216,204,183,255,216,203,182,255,215,202,180,255,214,201,179,255,213,201,177,255,213,199,176,255,212,199,174,255,211,197,172,255, -210,196,171,255,210,195,169,255,209,193,167,255,208,192,165,255,207,191,164,255,206,189,162,255,205,189,159,255,205,187,157,255, -203,185,156,255,202,184,153,255,201,183,152,255,200,182,150,255,199,180,148,255,198,179,147,255,197,179,146,255,197,177,144,255, -196,176,143,255,196,176,143,255,195,175,142,255,193,173,141,255,193,172,140,255,191,171,139,255,190,170,138,255,190,169,137,255, -190,169,137,255,190,169,137,255,191,170,138,255,192,172,139,255,196,175,142,255,196,176,143,255,192,171,140,255,172,152,124,255, -104, 91, 74,255, 46, 40, 32,255, 13, 11, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 28, 26, 23,255,122,115,102,255,210,197,177,255,216,204,183,255,215,203,183,255,217,206,186,255,218,205,185,255,217,205,185,255, -216,205,184,255,216,205,186,255,216,205,184,255,216,206,184,255,216,205,184,255,216,204,182,255,215,203,182,255,216,204,182,255, -214,202,180,255,215,201,179,255,214,201,179,255,213,199,176,255,212,198,175,255,212,198,174,255,210,196,172,255,210,195,170,255, -209,194,169,255,208,193,166,255,208,192,165,255,207,191,163,255,205,189,160,255,204,188,158,255,205,187,157,255,203,185,154,255, -202,184,152,255,201,183,151,255,199,181,148,255,198,179,147,255,198,178,146,255,196,177,144,255,195,176,143,255,195,175,142,255, -193,173,140,255,192,172,139,255,190,170,138,255,189,169,137,255,189,168,136,255,187,166,134,255,185,164,133,255,187,164,133,255, -185,164,133,255,186,164,133,255,185,163,132,255,183,161,131,255,153,136,110,255, 89, 78, 63,255, 24, 21, 17,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 36, 34, 30,255,107,101, 89,255,160,150,134,255,185,174,156,255,213,199,177,255, -216,203,181,255,216,204,181,255,216,203,181,255,214,201,178,255,214,202,179,255,214,201,178,255,214,201,178,255,214,201,178,255, -213,200,176,255,213,199,176,255,212,199,175,255,212,198,173,255,211,196,172,255,210,196,171,255,209,195,169,255,209,193,167,255, -207,192,165,255,207,191,163,255,207,189,161,255,205,188,160,255,204,187,157,255,203,185,155,255,202,184,153,255,201,183,151,255, -200,181,149,255,199,180,147,255,198,178,145,255,196,177,144,255,195,175,143,255,194,173,140,255,192,172,139,255,192,170,138,255, -190,169,137,255,188,168,136,255,186,165,134,255,184,163,132,255,184,163,132,255,183,161,131,255,181,159,129,255,173,152,123,255, -152,133,107,255,125,109, 88,255, 78, 68, 55,255, 26, 22, 18,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 4, 4, 3,255, 25, 24, 21,255, 52, 48, 43,255, - 88, 83, 73,255,149,139,122,255,197,183,161,255,215,201,176,255,213,199,175,255,213,199,176,255,212,199,174,255,211,197,172,255, -211,196,172,255,210,195,171,255,210,195,170,255,209,194,169,255,209,193,167,255,208,193,166,255,208,191,165,255,207,191,163,255, -206,189,162,255,205,188,160,255,205,187,157,255,203,185,156,255,202,184,153,255,201,182,151,255,200,181,150,255,199,180,147,255, -198,179,146,255,197,176,144,255,196,175,143,255,194,173,140,255,192,172,139,255,190,170,138,255,189,168,137,255,187,166,134,255, -187,166,133,255,186,164,133,255,183,161,131,255,181,159,129,255,167,146,119,255,119,103, 84,255, 76, 65, 54,255, 38, 32, 26,255, - 19, 17, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 17, 15, 13,255, 80, 74, 64,255,122,114, 97,255,172,158,136,255,200,185,159,255, -203,187,161,255,204,188,161,255,204,189,162,255,205,188,161,255,206,189,161,255,205,189,160,255,205,187,159,255,204,187,158,255, -204,185,157,255,203,185,154,255,202,183,153,255,201,182,152,255,200,181,149,255,199,179,147,255,198,177,145,255,196,176,143,255, -195,175,142,255,193,173,140,255,192,171,139,255,189,168,136,255,186,165,134,255,183,162,131,255,181,159,129,255,178,157,127,255, -163,142,116,255,116,101, 82,255, 75, 66, 54,255, 20, 17, 14,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 20, 19, 15,255, 53, 48, 40,255, 69, 62, 52,255, 87, 79, 66,255,118,107, 89,255,128,115, 96,255,133,121,100,255,138,124,103,255, -144,130,107,255,150,135,111,255,152,136,112,255,155,139,114,255,152,137,112,255,146,130,107,255,141,127,103,255,137,122,100,255, -129,115, 93,255,123,109, 89,255,116,103, 83,255, 95, 84, 68,255, 71, 62, 51,255, 54, 47, 38,255, 32, 28, 23,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 0,255, - 4, 4, 3,255, 9, 8, 7,255, 10, 9, 7,255, 12, 11, 9,255, 12, 10, 9,255, 8, 7, 6,255, 6, 5, 4,255, 4, 3, 3,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0, 80, 54,100, 7, 31, 0, 0, 0, - 1, 0, 0, 0,168,217,100, 7,248,146, 99, 7, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, 46,115, 99,114, 97,112,101, 46, -112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92, -115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46,115, 99,114, 97,112,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80, 56,100, 7, 0, 0, 0, 0, 61, 72, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 32, 0, 0, 0, 80, 56,100, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, - 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,216, 56,100, 7, 64, 73,100, 7, 68, 65, 84, 65, 0, 16, 0, 0,216, 56,100, 7, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0, 64, 73,100, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, - 61, 61, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 62, 62, 61,255, 61, 61, 61,255, - 97, 91, 83,255,131,120,102,255,131,119,102,255,130,119,102,255,130,119,101,255,130,119,101,255,130,119,101,255,130,119,101,255, -130,119,102,255,130,119,102,255,131,119,102,255,131,119,102,255,131,119,102,255,130,119,102,255,130,119,102,255,131,119,102,255, -131,118,102,255,130,118,102,255,130,119,102,255,130,119,101,255,129,118,101,255,129,118,101,255,129,117,101,255,129,117,101,255, -128,117,100,255,128,116,100,255,127,116, 99,255,127,115, 99,255,126,114, 98,255,126,114, 98,255,125,113, 97,255,125,113, 97,255, -124,112, 97,255,124,112, 96,255,123,111, 96,255,123,111, 95,255,123,110, 95,255,122,110, 95,255,121,109, 94,255,121,109, 94,255, -121,108, 94,255,120,108, 93,255,120,107, 93,255,119,107, 92,255,119,106, 92,255,119,106, 92,255,118,106, 91,255,118,105, 91,255, -118,105, 91,255,117,104, 91,255,117,104, 90,255,116,103, 89,255,116,103, 89,255,116,103, 89,255,115,102, 89,255,114,101, 88,255, -114,101, 87,255,113,100, 87,255,113,100, 87,255,112, 99, 86,255,112, 98, 86,255,111, 98, 85,255,111, 98, 85,255,110, 97, 85,255, -110, 96, 84,255,109, 96, 84,255,109, 95, 83,255,108, 94, 82,255,107, 93, 82,255,106, 92, 81,255,105, 92, 81,255,105, 91, 80,255, -105, 91, 80,255,104, 90, 79,255,103, 89, 79,255,102, 88, 78,255,101, 87, 77,255,100, 87, 77,255, 99, 85, 76,255, 99, 85, 75,255, - 98, 84, 74,255, 97, 83, 74,255, 96, 81, 73,255, 95, 80, 72,255, 93, 78, 70,255, 91, 76, 69,255, 89, 73, 67,255, 86, 71, 64,255, - 82, 68, 63,255, 79, 66, 61,255, 78, 65, 60,255, 77, 65, 60,255, 78, 65, 60,255, 71, 64, 61,255, 61, 61, 62,255, 60, 60, 61,255, -132,120,103,255,197,175,142,255,196,174,141,255,195,173,140,255,195,173,140,255,195,173,140,255,195,173,141,255,195,174,141,255, -196,174,141,255,196,174,141,255,196,174,142,255,196,174,142,255,196,175,142,255,197,175,142,255,197,175,142,255,197,175,142,255, -196,175,142,255,196,175,142,255,196,174,141,255,196,174,141,255,195,173,141,255,195,173,140,255,194,172,140,255,194,172,139,255, -193,170,138,255,192,170,138,255,191,169,136,255,190,167,136,255,189,166,135,255,188,165,134,255,187,164,133,255,185,163,132,255, -185,162,131,255,183,160,130,255,183,160,130,255,182,159,128,255,181,157,128,255,180,157,127,255,179,156,126,255,178,154,125,255, -177,153,125,255,176,153,124,255,175,151,123,255,175,151,123,255,174,149,121,255,173,149,121,255,172,148,120,255,172,147,120,255, -171,146,119,255,170,145,118,255,169,144,118,255,168,144,117,255,167,143,116,255,167,141,115,255,166,141,115,255,165,140,114,255, -163,138,113,255,163,138,112,255,162,137,111,255,160,135,110,255,159,134,110,255,159,132,108,255,158,132,108,255,157,132,108,255, -157,130,106,255,154,129,105,255,154,128,105,255,152,125,103,255,150,124,102,255,149,122,100,255,148,120, 99,255,146,119, 98,255, -145,118, 98,255,144,117, 96,255,141,114, 95,255,140,113, 92,255,139,111, 91,255,137,109, 91,255,135,108, 88,255,133,106, 87,255, -132,104, 87,255,130,102, 85,255,128, 99, 83,255,125, 97, 81,255,122, 94, 79,255,119, 90, 76,255,114, 84, 71,255,108, 78, 67,255, -102, 73, 63,255, 96, 70, 60,255, 94, 68, 59,255, 94, 68, 59,255, 97, 70, 60,255, 81, 66, 61,255, 61, 61, 62,255, 60, 60, 61,255, -132,120,103,255,197,176,142,255,196,175,142,255,196,175,142,255,196,175,142,255,196,175,142,255,197,175,142,255,197,175,142,255, -197,175,142,255,197,176,142,255,198,176,143,255,198,176,143,255,198,177,143,255,198,177,144,255,198,177,144,255,198,177,144,255, -198,177,144,255,198,177,144,255,198,177,143,255,198,176,143,255,197,176,143,255,197,175,142,255,196,174,142,255,195,174,141,255, -195,173,140,255,194,172,140,255,193,170,138,255,192,169,137,255,191,169,137,255,189,166,135,255,188,166,134,255,187,164,133,255, -185,163,132,255,185,162,131,255,183,160,130,255,182,159,129,255,182,158,129,255,180,157,127,255,180,156,127,255,179,155,126,255, -178,154,125,255,177,153,124,255,176,152,124,255,175,151,123,255,174,150,122,255,173,149,121,255,172,148,120,255,172,148,120,255, -171,147,120,255,170,145,118,255,169,145,117,255,169,144,118,255,167,143,116,255,167,142,116,255,166,141,115,255,165,140,114,255, -164,139,114,255,163,138,113,255,162,137,112,255,161,136,111,255,160,135,110,255,159,134,110,255,159,133,109,255,158,132,108,255, -157,131,107,255,155,129,106,255,153,128,104,255,152,126,103,255,151,125,102,255,149,122,100,255,147,121, 99,255,145,119, 97,255, -143,116, 96,255,142,115, 95,255,139,112, 93,255,138,111, 92,255,137,110, 91,255,135,109, 89,255,134,107, 88,255,132,105, 87,255, -130,103, 85,255,129,102, 85,255,127, 99, 83,255,124, 96, 80,255,121, 92, 78,255,117, 88, 75,255,113, 83, 71,255,107, 78, 67,255, -100, 73, 63,255, 96, 70, 60,255, 96, 70, 60,255, 97, 70, 60,255,100, 72, 62,255, 82, 67, 62,255, 61, 61, 61,255, 60, 60, 61,255, -132,121,104,255,198,177,143,255,197,176,143,255,197,176,143,255,197,176,143,255,198,176,143,255,198,177,143,255,198,177,144,255, -199,178,144,255,199,178,145,255,199,178,145,255,199,179,145,255,200,179,145,255,200,179,146,255,200,179,146,255,200,179,146,255, -200,179,146,255,200,179,146,255,200,179,146,255,200,179,146,255,199,178,145,255,199,178,145,255,198,177,144,255,198,176,143,255, -197,176,143,255,196,174,141,255,195,173,140,255,194,172,140,255,192,170,138,255,192,169,137,255,190,168,136,255,189,166,135,255, -188,165,133,255,186,163,132,255,185,162,132,255,183,160,131,255,183,160,129,255,182,158,128,255,180,158,127,255,180,156,127,255, -179,155,126,255,178,154,125,255,177,153,125,255,176,152,124,255,175,151,123,255,174,150,122,255,173,149,121,255,172,148,121,255, -172,147,120,255,171,147,119,255,170,145,118,255,170,145,118,255,168,144,117,255,167,143,116,255,166,142,115,255,165,141,115,255, -165,140,114,255,164,139,113,255,163,138,113,255,162,137,112,255,160,135,110,255,160,135,110,255,160,134,110,255,159,133,109,255, -157,132,108,255,156,130,107,255,155,129,106,255,153,127,104,255,151,125,103,255,149,123,101,255,147,120, 98,255,144,117, 96,255, -142,115, 95,255,140,113, 93,255,139,112, 92,255,137,110, 91,255,136,109, 90,255,135,108, 89,255,133,106, 88,255,132,104, 87,255, -131,103, 85,255,129,101, 84,255,126, 98, 82,255,123, 95, 80,255,120, 92, 77,255,116, 87, 74,255,111, 82, 70,255,106, 77, 66,255, -100, 73, 63,255, 97, 70, 61,255, 97, 71, 61,255,100, 72, 62,255,103, 74, 64,255, 84, 68, 63,255, 61, 61, 61,255, 60, 60, 60,255, -133,122,104,255,200,178,144,255,198,177,143,255,198,177,144,255,199,177,144,255,199,178,145,255,199,178,145,255,199,179,145,255, -200,179,146,255,200,179,146,255,200,179,146,255,200,180,146,255,201,180,147,255,201,180,147,255,201,180,147,255,201,180,147,255, -201,180,147,255,201,181,148,255,201,181,148,255,201,181,148,255,201,180,148,255,200,180,147,255,200,179,146,255,199,179,146,255, -199,178,145,255,198,177,144,255,197,176,143,255,197,174,142,255,195,173,140,255,194,172,140,255,192,171,139,255,191,168,136,255, -190,167,136,255,188,165,134,255,186,164,133,255,185,163,132,255,183,161,131,255,183,160,129,255,182,159,129,255,180,157,128,255, -179,156,127,255,179,155,126,255,177,154,125,255,177,153,124,255,176,152,124,255,174,151,122,255,174,150,122,255,173,149,121,255, -173,148,120,255,172,147,120,255,171,147,119,255,169,145,119,255,169,145,118,255,168,144,117,255,167,142,116,255,166,142,115,255, -166,141,115,255,164,140,114,255,164,139,113,255,163,138,112,255,161,136,111,255,161,136,111,255,161,136,110,255,160,134,110,255, -159,133,109,255,158,132,108,255,156,130,106,255,154,128,105,255,151,124,102,255,147,121, 99,255,145,117, 97,255,142,116, 95,255, -140,113, 93,255,139,112, 92,255,138,111, 92,255,136,109, 90,255,136,108, 90,255,134,107, 89,255,133,106, 88,255,132,104, 87,255, -130,102, 86,255,128,101, 83,255,126, 98, 82,255,122, 94, 79,255,120, 91, 77,255,115, 85, 72,255,109, 79, 68,255,104, 76, 65,255, -100, 73, 63,255, 98, 71, 61,255, 99, 72, 62,255,103, 74, 64,255,106, 77, 66,255, 85, 70, 64,255, 61, 61, 61,255, 60, 60, 60,255, -133,122,105,255,201,180,147,255,200,179,146,255,200,179,146,255,201,180,146,255,201,180,146,255,201,180,147,255,201,181,148,255, -202,181,148,255,202,181,148,255,202,182,148,255,202,182,149,255,202,182,149,255,203,182,149,255,203,183,150,255,203,183,150,255, -203,183,150,255,203,183,150,255,203,182,150,255,203,182,150,255,203,182,150,255,202,182,149,255,202,182,149,255,201,181,148,255, -201,180,147,255,200,180,146,255,199,178,145,255,198,177,144,255,197,176,143,255,196,174,141,255,194,172,140,255,193,171,139,255, -191,169,137,255,190,168,136,255,189,166,135,255,187,164,133,255,186,163,132,255,184,161,131,255,183,160,130,255,182,159,129,255, -180,157,128,255,180,156,127,255,179,156,126,255,178,154,125,255,177,153,125,255,176,152,124,255,175,151,123,255,174,150,122,255, -173,149,122,255,172,148,121,255,172,148,120,255,171,147,119,255,170,146,119,255,169,145,118,255,168,144,117,255,167,142,116,255, -167,142,116,255,165,141,115,255,165,140,114,255,164,139,113,255,163,138,113,255,163,138,112,255,162,137,112,255,161,136,110,255, -159,134,110,255,158,132,109,255,156,130,107,255,153,127,104,255,148,123,101,255,146,119, 98,255,143,116, 96,255,140,113, 94,255, -139,112, 93,255,138,111, 91,255,136,109, 90,255,135,108, 90,255,135,108, 89,255,134,107, 89,255,132,105, 87,255,132,104, 87,255, -129,102, 84,255,128,100, 83,255,125, 97, 81,255,122, 93, 78,255,118, 89, 75,255,113, 83, 71,255,108, 78, 67,255,103, 74, 64,255, -100, 73, 63,255,100, 73, 63,255,102, 74, 64,255,107, 78, 66,255,109, 79, 68,255, 86, 71, 65,255, 61, 61, 61,255, 60, 60, 60,255, -134,123,106,255,202,181,148,255,201,181,147,255,201,181,148,255,202,181,148,255,202,181,148,255,202,181,148,255,202,182,149,255, -202,182,149,255,202,182,149,255,203,183,150,255,203,183,150,255,203,183,150,255,203,183,151,255,203,183,151,255,203,183,151,255, -203,183,151,255,203,183,151,255,203,184,151,255,203,183,151,255,203,183,151,255,203,183,151,255,203,183,151,255,202,182,150,255, -202,182,149,255,202,182,149,255,201,180,147,255,200,179,146,255,199,179,145,255,198,176,143,255,196,175,142,255,195,173,141,255, -194,172,139,255,192,170,138,255,190,168,136,255,188,166,134,255,187,164,133,255,186,163,132,255,184,161,131,255,183,160,130,255, -182,159,129,255,181,157,128,255,180,156,127,255,179,155,126,255,178,154,125,255,177,153,124,255,176,152,123,255,175,151,123,255, -174,150,122,255,173,149,121,255,172,148,121,255,171,147,120,255,171,147,119,255,170,146,119,255,169,145,118,255,168,144,117,255, -167,142,116,255,166,142,115,255,166,141,115,255,165,140,114,255,165,140,114,255,164,139,114,255,163,138,113,255,161,136,111,255, -160,134,110,255,157,131,108,255,155,129,106,255,151,125,103,255,147,121, 99,255,143,117, 96,255,141,115, 94,255,140,113, 93,255, -138,111, 92,255,138,111, 92,255,137,110, 91,255,135,108, 89,255,135,108, 89,255,134,107, 89,255,132,105, 87,255,131,104, 86,255, -129,102, 84,255,128,100, 83,255,125, 97, 81,255,122, 93, 78,255,117, 87, 74,255,111, 82, 70,255,106, 77, 66,255,102, 74, 64,255, -101, 73, 63,255,102, 74, 64,255,106, 77, 66,255,109, 80, 68,255,111, 82, 69,255, 87, 72, 66,255, 61, 61, 61,255, 60, 60, 60,255, -135,124,107,255,204,182,149,255,202,182,149,255,202,182,149,255,203,182,149,255,203,182,150,255,204,182,150,255,203,183,150,255, -203,183,151,255,203,183,151,255,204,183,151,255,204,184,151,255,204,184,152,255,203,184,152,255,203,184,152,255,204,184,152,255, -204,184,152,255,204,184,152,255,204,184,152,255,204,184,152,255,204,184,152,255,204,184,152,255,204,184,152,255,203,183,151,255, -203,183,151,255,202,182,150,255,202,182,150,255,202,182,149,255,201,180,147,255,200,179,146,255,199,178,145,255,197,176,142,255, -196,174,141,255,194,173,140,255,192,170,138,255,190,168,136,255,188,167,134,255,187,164,133,255,186,163,132,255,185,161,131,255, -183,160,130,255,182,159,129,255,181,158,128,255,180,156,127,255,179,155,126,255,177,154,125,255,176,153,124,255,176,152,123,255, -174,150,122,255,174,150,122,255,174,150,121,255,172,148,120,255,171,147,120,255,170,147,119,255,170,145,118,255,169,145,118,255, -168,144,117,255,166,142,116,255,166,142,116,255,166,141,115,255,166,141,115,255,165,140,114,255,164,139,113,255,161,135,111,255, -159,133,109,255,156,130,106,255,152,126,103,255,149,123,101,255,145,119, 98,255,142,116, 95,255,140,114, 94,255,139,113, 93,255, -138,111, 92,255,137,110, 91,255,137,110, 91,255,135,108, 89,255,135,108, 89,255,134,107, 89,255,132,105, 87,255,132,104, 87,255, -129,102, 84,255,128,100, 83,255,124, 96, 81,255,120, 92, 77,255,116, 86, 73,255,110, 81, 68,255,104, 76, 65,255,102, 74, 63,255, -102, 74, 64,255,105, 77, 66,255,109, 80, 68,255,112, 82, 70,255,114, 84, 71,255, 88, 73, 66,255, 61, 61, 61,255, 60, 60, 60,255, -135,125,107,255,205,185,152,255,204,184,151,255,204,184,151,255,203,184,151,255,204,184,151,255,204,184,151,255,204,184,152,255, -204,184,152,255,204,184,152,255,204,185,153,255,204,185,153,255,204,185,153,255,205,185,153,255,205,185,153,255,205,186,154,255, -204,186,154,255,204,186,154,255,204,186,154,255,204,186,154,255,204,186,154,255,204,186,154,255,204,186,154,255,205,185,154,255, -205,185,153,255,204,185,152,255,203,184,151,255,203,183,150,255,202,182,149,255,201,180,147,255,200,180,147,255,199,178,145,255, -197,176,143,255,196,174,141,255,194,172,140,255,192,170,138,255,191,168,137,255,189,167,135,255,187,165,134,255,186,163,132,255, -184,162,131,255,183,160,130,255,182,159,129,255,181,157,128,255,180,156,127,255,179,155,126,255,177,154,125,255,177,153,124,255, -176,152,124,255,174,151,123,255,174,150,122,255,174,150,122,255,172,148,120,255,171,147,120,255,170,147,120,255,170,145,118,255, -169,145,118,255,168,144,117,255,168,143,117,255,167,143,116,255,166,141,115,255,165,140,114,255,163,137,112,255,160,134,110,255, -156,130,107,255,152,126,103,255,149,123,101,255,146,120, 98,255,143,117, 96,255,142,115, 95,255,140,114, 94,255,139,112, 93,255, -138,111, 92,255,138,111, 92,255,137,110, 91,255,136,109, 90,255,135,108, 89,255,134,106, 88,255,133,106, 88,255,132,104, 87,255, -131,102, 86,255,128, 99, 83,255,124, 95, 80,255,120, 91, 76,255,114, 85, 72,255,108, 79, 68,255,104, 76, 65,255,103, 75, 63,255, -104, 76, 65,255,109, 80, 68,255,113, 83, 71,255,115, 85, 73,255,115, 86, 73,255, 89, 74, 67,255, 61, 61, 61,255, 60, 60, 60,255, -136,125,109,255,206,186,153,255,204,185,152,255,204,185,152,255,204,185,153,255,204,184,152,255,204,185,152,255,205,185,152,255, -204,185,153,255,205,185,153,255,205,185,154,255,205,186,154,255,205,186,154,255,205,186,153,255,204,186,154,255,204,185,154,255, -204,185,154,255,205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255, -205,186,155,255,205,186,155,255,204,185,154,255,204,184,153,255,203,184,152,255,203,183,150,255,201,181,148,255,201,180,147,255, -199,178,145,255,198,176,143,255,196,174,142,255,194,172,140,255,192,170,138,255,191,168,137,255,189,167,135,255,187,164,133,255, -186,163,132,255,184,162,131,255,183,160,130,255,182,159,129,255,180,157,128,255,179,156,127,255,179,155,126,255,177,154,125,255, -176,153,124,255,175,152,123,255,175,151,123,255,174,150,122,255,173,149,121,255,172,148,120,255,171,147,119,255,170,146,119,255, -170,146,119,255,169,145,118,255,168,144,117,255,168,143,117,255,166,141,115,255,164,138,113,255,161,135,110,255,156,131,107,255, -152,126,104,255,150,122,100,255,146,120, 99,255,144,117, 97,255,143,116, 96,255,141,115, 94,255,140,113, 93,255,139,111, 93,255, -138,111, 92,255,137,110, 91,255,137,110, 91,255,136,109, 90,255,135,108, 90,255,134,107, 89,255,134,106, 88,255,133,105, 87,255, -130,102, 85,255,128,100, 83,255,124, 95, 80,255,119, 90, 75,255,112, 84, 71,255,107, 78, 67,255,104, 75, 65,255,105, 76, 65,255, -107, 79, 67,255,113, 84, 71,255,116, 87, 73,255,117, 88, 74,255,118, 88, 74,255, 90, 75, 67,255, 61, 61, 61,255, 60, 60, 60,255, -136,126,110,255,207,187,155,255,205,185,153,255,204,185,153,255,204,185,153,255,205,185,153,255,205,185,153,255,204,184,153,255, -205,186,154,255,204,186,154,255,205,186,153,255,205,185,153,255,205,186,153,255,204,186,154,255,205,186,154,255,206,187,155,255, -205,186,155,255,206,187,155,255,206,187,156,255,206,187,156,255,206,186,155,255,206,186,155,255,206,186,155,255,206,186,155,255, -206,186,155,255,205,186,155,255,205,186,155,255,206,186,155,255,204,185,154,255,204,184,152,255,203,183,151,255,202,182,149,255, -201,180,147,255,200,179,146,255,198,177,143,255,196,174,142,255,195,173,140,255,192,170,138,255,191,168,137,255,189,167,135,255, -187,164,133,255,185,163,132,255,184,162,131,255,183,160,130,255,182,159,129,255,180,157,127,255,179,156,126,255,179,155,126,255, -177,153,125,255,176,153,124,255,176,152,124,255,174,150,122,255,174,150,122,255,173,149,122,255,172,148,120,255,171,147,119,255, -171,147,119,255,169,145,118,255,169,144,117,255,167,142,116,255,164,139,113,255,161,136,111,255,157,131,107,255,153,127,104,255, -149,123,102,255,147,121, 99,255,145,118, 97,255,143,117, 96,255,142,116, 95,255,141,114, 94,255,140,113, 94,255,139,113, 93,255, -139,111, 93,255,138,111, 92,255,137,110, 92,255,137,110, 91,255,136,109, 90,255,135,108, 89,255,135,107, 89,255,133,105, 88,255, -130,102, 85,255,128, 99, 83,255,123, 95, 80,255,117, 88, 74,255,111, 82, 70,255,107, 78, 67,255,105, 76, 65,255,107, 78, 67,255, -112, 83, 71,255,117, 88, 74,255,119, 90, 76,255,119, 90, 77,255,119, 90, 75,255, 91, 75, 68,255, 61, 61, 61,255, 60, 60, 60,255, -136,127,111,255,207,188,156,255,206,187,155,255,206,186,155,255,206,186,155,255,204,185,154,255,205,186,154,255,204,186,154,255, -205,185,153,255,205,186,153,255,205,186,153,255,204,186,154,255,205,185,155,255,206,186,155,255,206,187,156,255,205,186,156,255, -206,187,156,255,206,187,156,255,206,186,155,255,206,187,156,255,206,187,157,255,206,188,157,255,205,188,157,255,206,188,157,255, -206,188,157,255,206,188,157,255,206,188,157,255,206,188,157,255,206,187,156,255,205,186,156,255,205,185,153,255,204,184,152,255, -202,182,150,255,201,181,148,255,200,179,146,255,198,177,143,255,196,174,142,255,194,172,140,255,192,170,138,255,191,168,137,255, -189,166,135,255,187,164,133,255,185,162,132,255,184,161,131,255,182,159,129,255,182,159,129,255,181,157,127,255,179,156,127,255, -179,155,126,255,177,154,125,255,176,153,124,255,176,152,123,255,174,151,123,255,174,150,122,255,172,149,122,255,172,148,120,255, -171,147,120,255,169,145,118,255,168,143,117,255,166,140,114,255,161,136,112,255,157,132,108,255,154,128,105,255,151,125,102,255, -148,122,100,255,146,120, 99,255,144,118, 97,255,143,117, 96,255,142,116, 95,255,141,114, 94,255,140,113, 93,255,140,113, 93,255, -139,112, 92,255,139,112, 92,255,139,112, 92,255,138,111, 91,255,138,111, 92,255,137,110, 91,255,135,108, 89,255,134,106, 88,255, -132,103, 85,255,127, 98, 82,255,122, 93, 78,255,116, 87, 73,255,110, 81, 70,255,107, 79, 68,255,108, 79, 68,255,112, 83, 71,255, -117, 88, 74,255,120, 91, 76,255,122, 93, 78,255,122, 93, 78,255,120, 91, 77,255, 91, 76, 69,255, 61, 61, 61,255, 60, 60, 60,255, -137,127,111,255,207,188,157,255,205,186,156,255,205,186,155,255,206,187,154,255,205,186,154,255,205,186,155,255,205,186,155,255, -204,185,153,255,205,186,154,255,205,186,154,255,205,185,155,255,205,186,155,255,206,187,156,255,206,186,155,255,206,187,156,255, -206,187,156,255,206,186,155,255,206,187,156,255,206,188,157,255,206,188,156,255,205,188,156,255,206,187,157,255,206,187,157,255, -207,187,157,255,207,188,158,255,206,188,157,255,206,188,157,255,206,187,157,255,206,187,157,255,205,187,156,255,205,186,155,255, -204,185,152,255,202,182,150,255,201,181,148,255,200,179,146,255,198,177,143,255,196,174,142,255,194,172,140,255,192,170,138,255, -191,168,137,255,188,166,134,255,186,164,133,255,185,162,131,255,183,161,131,255,182,159,129,255,181,158,128,255,180,157,128,255, -179,156,127,255,178,155,126,255,177,153,125,255,176,152,124,255,175,152,123,255,174,150,122,255,173,149,121,255,172,148,120,255, -170,146,119,255,168,144,117,255,166,141,115,255,162,137,112,255,159,133,109,255,155,129,106,255,152,126,103,255,150,124,102,255, -147,121, 99,255,145,119, 98,255,144,118, 97,255,143,117, 96,255,141,116, 95,255,141,114, 94,255,140,114, 94,255,140,113, 93,255, -139,112, 93,255,139,112, 93,255,139,112, 92,255,139,111, 92,255,138,111, 92,255,137,111, 91,255,137,109, 90,255,134,106, 88,255, -131,102, 86,255,126, 97, 82,255,120, 91, 77,255,115, 86, 72,255,111, 82, 70,255,110, 81, 69,255,113, 84, 71,255,117, 88, 75,255, -121, 92, 78,255,123, 94, 79,255,124, 95, 80,255,122, 94, 79,255,121, 92, 77,255, 91, 76, 69,255, 61, 61, 61,255, 60, 60, 60,255, -137,128,111,255,208,189,158,255,207,188,156,255,206,187,156,255,205,186,155,255,206,186,155,255,206,186,154,255,206,187,155,255, -205,185,154,255,204,186,155,255,205,186,155,255,205,186,155,255,206,187,156,255,205,187,156,255,206,187,156,255,206,187,156,255, -206,187,156,255,206,186,155,255,206,187,156,255,206,187,156,255,205,188,157,255,206,187,156,255,207,189,158,255,207,188,158,255, -207,188,157,255,207,189,158,255,208,188,159,255,207,188,158,255,208,188,158,255,207,188,158,255,206,189,158,255,206,187,156,255, -205,186,155,255,204,185,153,255,202,183,151,255,201,181,148,255,200,179,146,255,198,177,143,255,196,174,142,255,195,173,140,255, -192,170,138,255,190,168,136,255,188,166,134,255,186,163,132,255,185,162,131,255,184,161,130,255,182,159,129,255,181,158,128,255, -179,156,126,255,178,155,126,255,178,154,125,255,176,153,124,255,175,152,123,255,175,151,123,255,173,149,121,255,171,147,120,255, -169,144,117,255,166,141,114,255,163,137,112,255,159,133,109,255,156,130,106,255,152,126,103,255,150,124,102,255,148,121,100,255, -146,120, 98,255,145,119, 98,255,143,117, 96,255,143,117, 96,255,143,117, 96,255,141,115, 94,255,142,114, 94,255,141,115, 95,255, -140,113, 93,255,141,114, 93,255,140,113, 94,255,140,113, 92,255,139,112, 93,255,138,111, 92,255,137,110, 91,255,134,107, 88,255, -130,101, 84,255,125, 97, 80,255,119, 90, 76,255,114, 85, 72,255,112, 83, 71,255,114, 85, 72,255,118, 89, 75,255,122, 94, 78,255, -125, 96, 80,255,127, 98, 82,255,126, 97, 81,255,124, 96, 80,255,122, 93, 78,255, 92, 76, 69,255, 61, 61, 61,255, 60, 60, 60,255, -137,128,112,255,208,190,159,255,206,188,157,255,206,187,156,255,206,187,156,255,206,187,155,255,206,187,154,255,205,186,154,255, -205,186,155,255,204,185,154,255,204,185,154,255,205,186,155,255,206,187,156,255,206,187,156,255,206,187,156,255,206,187,156,255, -206,186,155,255,206,187,156,255,206,188,157,255,205,188,157,255,206,187,156,255,207,188,157,255,207,188,157,255,206,189,158,255, -207,188,158,255,208,189,159,255,207,189,159,255,208,190,160,255,207,190,160,255,208,190,160,255,208,190,159,255,207,189,159,255, -206,187,157,255,205,186,155,255,204,185,153,255,203,183,151,255,201,181,148,255,200,179,146,255,198,177,143,255,196,174,141,255, -194,172,139,255,192,170,137,255,189,167,135,255,187,165,133,255,185,162,132,255,184,161,131,255,182,160,129,255,181,158,129,255, -181,157,128,255,179,156,126,255,178,155,126,255,177,153,124,255,176,152,124,255,175,151,123,255,172,148,120,255,169,145,118,255, -166,141,115,255,162,137,112,255,159,134,109,255,156,130,106,255,152,127,104,255,150,124,102,255,148,122,100,255,146,120, 99,255, -145,119, 98,255,145,118, 98,255,143,117, 96,255,143,117, 97,255,143,116, 96,255,142,116, 95,255,142,116, 95,255,142,116, 95,255, -142,115, 95,255,142,115, 95,255,141,114, 95,255,141,114, 94,255,140,113, 93,255,139,112, 92,255,137,109, 90,255,133,105, 87,255, -128,100, 83,255,122, 94, 79,255,117, 88, 75,255,115, 86, 73,255,116, 87, 73,255,119, 90, 76,255,123, 95, 80,255,127, 99, 82,255, -128,100, 83,255,128,100, 84,255,127, 98, 82,255,125, 96, 81,255,123, 94, 79,255, 92, 77, 69,255, 61, 61, 61,255, 60, 60, 60,255, -137,128,112,255,209,190,159,255,206,188,157,255,207,188,157,255,206,187,156,255,206,187,155,255,206,187,154,255,206,187,155,255, -205,186,155,255,204,185,155,255,205,186,155,255,205,186,155,255,206,187,156,255,206,187,156,255,206,187,156,255,206,187,156,255, -206,187,156,255,206,187,156,255,205,188,157,255,206,188,157,255,207,187,156,255,206,188,157,255,206,189,158,255,207,188,158,255, -207,189,159,255,207,190,160,255,208,190,160,255,208,189,160,255,208,189,161,255,207,189,160,255,207,189,161,255,207,189,160,255, -207,189,159,255,206,188,158,255,206,187,155,255,204,185,153,255,203,183,151,255,201,181,148,255,200,179,146,255,197,176,143,255, -195,174,141,255,193,171,139,255,190,168,136,255,188,166,135,255,186,164,132,255,184,161,132,255,183,160,130,255,182,159,129,255, -180,158,128,255,179,156,126,255,178,155,126,255,177,153,125,255,175,151,122,255,173,149,121,255,170,146,119,255,167,142,116,255, -163,138,113,255,159,134,109,255,155,130,106,255,153,127,104,255,150,124,102,255,148,122,100,255,147,121,100,255,146,120, 98,255, -145,118, 97,255,145,117, 98,255,143,117, 96,255,143,118, 96,255,143,117, 97,255,143,116, 96,255,143,116, 96,255,143,116, 96,255, -143,116, 96,255,143,116, 96,255,143,116, 96,255,143,116, 95,255,141,114, 94,255,140,112, 93,255,136,108, 90,255,132,104, 86,255, -125, 97, 81,255,120, 92, 77,255,117, 88, 74,255,117, 88, 75,255,121, 92, 77,255,126, 98, 81,255,129,101, 85,255,131,103, 86,255, -131,103, 86,255,130,102, 85,255,128,100, 84,255,127, 98, 82,255,123, 95, 79,255, 92, 77, 70,255, 61, 61, 61,255, 60, 60, 60,255, -138,129,113,255,209,191,160,255,206,188,158,255,207,188,157,255,206,187,156,255,206,187,155,255,205,186,154,255,206,187,155,255, -204,185,155,255,205,186,155,255,205,186,155,255,205,186,155,255,206,187,156,255,206,187,156,255,206,187,156,255,206,187,156,255, -205,186,155,255,205,187,156,255,206,188,157,255,206,187,156,255,207,188,157,255,207,189,158,255,206,188,158,255,207,188,159,255, -208,189,159,255,208,190,159,255,208,190,160,255,208,189,161,255,207,190,161,255,208,191,162,255,209,191,162,255,208,190,161,255, -207,189,161,255,208,190,160,255,206,188,158,255,206,187,156,255,205,186,154,255,203,183,151,255,201,181,148,255,199,178,145,255, -197,176,143,255,194,173,140,255,192,170,138,255,189,167,135,255,187,164,133,255,186,163,132,255,183,160,130,255,182,159,129,255, -180,157,127,255,179,156,126,255,177,153,125,255,174,150,122,255,173,149,121,255,170,145,118,255,166,141,115,255,163,138,112,255, -159,133,109,255,155,130,106,255,153,126,104,255,150,124,102,255,148,122,100,255,147,121, 99,255,147,120, 99,255,145,119, 98,255, -145,118, 97,255,145,119, 98,255,144,118, 96,255,145,117, 97,255,145,118, 97,255,145,118, 97,255,145,118, 97,255,145,117, 96,255, -145,119, 98,255,145,119, 98,255,145,118, 98,255,144,117, 96,255,142,115, 95,255,140,112, 93,255,134,107, 89,255,128,100, 84,255, -122, 94, 78,255,119, 90, 76,255,119, 90, 76,255,123, 94, 79,255,128,100, 83,255,133,105, 87,255,134,107, 89,255,135,107, 89,255, -134,106, 88,255,132,104, 86,255,130,102, 85,255,127, 98, 83,255,124, 95, 80,255, 93, 77, 70,255, 61, 61, 61,255, 60, 60, 60,255, -138,129,113,255,209,191,160,255,207,188,159,255,207,188,157,255,206,187,156,255,206,187,155,255,206,187,155,255,205,186,154,255, -204,185,155,255,205,186,155,255,205,186,155,255,204,186,155,255,205,186,155,255,205,186,155,255,206,187,156,255,206,187,156,255, -205,186,155,255,206,187,156,255,206,187,156,255,207,188,156,255,207,187,157,255,207,188,157,255,206,188,159,255,207,189,159,255, -208,189,160,255,208,190,160,255,208,190,160,255,207,189,160,255,208,191,161,255,209,190,162,255,208,191,162,255,209,190,161,255, -209,191,162,255,208,190,161,255,207,189,160,255,207,189,159,255,206,187,156,255,205,186,154,255,203,183,151,255,201,180,148,255, -199,178,145,255,196,175,142,255,193,172,139,255,190,168,136,255,187,165,133,255,186,163,132,255,183,160,130,255,182,159,129,255, -180,157,127,255,178,154,126,255,176,151,123,255,172,147,120,255,169,144,117,255,165,140,114,255,161,136,111,255,157,132,108,255, -155,129,106,255,153,126,104,255,151,125,102,255,149,123,101,255,148,122,100,255,147,121, 99,255,146,120, 99,255,146,120, 99,255, -146,120, 98,255,145,119, 98,255,145,119, 98,255,145,119, 98,255,145,119, 98,255,146,119, 98,255,146,119, 98,255,146,120, 98,255, -146,120, 99,255,147,120, 99,255,147,120, 99,255,145,119, 97,255,143,116, 95,255,138,111, 92,255,132,104, 87,255,125, 96, 81,255, -120, 91, 77,255,120, 91, 76,255,124, 95, 80,255,130,102, 85,255,136,108, 89,255,137,110, 92,255,138,110, 91,255,137,110, 91,255, -135,108, 89,255,133,106, 88,255,131,103, 85,255,127, 99, 83,255,125, 96, 80,255, 92, 77, 70,255, 61, 61, 61,255, 60, 60, 60,255, -138,129,114,255,209,191,161,255,207,189,159,255,206,188,157,255,206,187,155,255,206,187,156,255,206,187,155,255,205,186,155,255, -205,186,155,255,205,186,155,255,205,186,155,255,205,185,154,255,204,185,154,255,205,187,156,255,206,186,155,255,206,187,156,255, -206,187,156,255,205,186,155,255,206,187,156,255,207,188,157,255,207,187,157,255,207,188,157,255,206,188,159,255,207,188,159,255, -207,189,159,255,208,190,160,255,208,190,160,255,207,189,160,255,209,191,162,255,208,191,162,255,209,190,161,255,209,191,162,255, -208,191,162,255,209,191,162,255,208,190,162,255,208,190,161,255,207,189,159,255,206,188,157,255,205,186,154,255,203,183,151,255, -201,180,147,255,198,177,144,255,194,173,140,255,191,169,137,255,187,165,134,255,185,163,132,255,182,160,130,255,181,158,128,255, -178,154,125,255,175,151,123,255,172,147,120,255,168,143,116,255,164,138,113,255,159,133,109,255,156,130,107,255,153,128,105,255, -152,126,103,255,150,125,102,255,149,123,101,255,148,122,100,255,147,121,100,255,147,121, 99,255,147,121,100,255,147,121, 99,255, -147,121, 99,255,147,120, 99,255,146,120, 99,255,147,121, 99,255,147,121, 99,255,148,121, 99,255,148,122,100,255,148,122,100,255, -148,122,100,255,148,122,100,255,147,120, 99,255,146,119, 98,255,142,115, 95,255,136,109, 89,255,128,100, 83,255,122, 93, 79,255, -121, 92, 77,255,125, 96, 81,255,132,104, 86,255,138,111, 92,255,141,114, 94,255,142,115, 94,255,140,113, 93,255,139,111, 92,255, -137,109, 91,255,134,107, 88,255,132,104, 87,255,128,100, 84,255,124, 96, 80,255, 92, 77, 70,255, 61, 61, 61,255, 60, 60, 60,255, -138,129,114,255,210,192,163,255,207,189,159,255,207,188,157,255,206,187,157,255,206,187,155,255,206,187,156,255,205,186,155,255, -205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,204,186,155,255,205,185,154,255,206,187,156,255,205,186,155,255, -206,187,155,255,205,186,156,255,206,187,157,255,206,187,157,255,207,188,158,255,207,187,157,255,207,189,159,255,206,188,158,255, -207,189,159,255,207,190,159,255,208,190,160,255,207,189,160,255,209,191,162,255,209,190,161,255,209,191,162,255,209,191,163,255, -208,191,164,255,209,192,164,255,209,192,163,255,209,191,163,255,208,191,162,255,207,189,159,255,206,187,158,255,205,186,154,255, -202,183,151,255,200,179,146,255,196,175,142,255,192,170,138,255,188,166,134,255,185,161,132,255,181,158,128,255,178,154,125,255, -174,150,122,255,170,146,119,255,166,141,115,255,162,137,112,255,158,133,109,255,155,130,106,255,152,127,104,255,151,125,102,255, -150,124,102,255,148,123,100,255,149,122,100,255,148,122,101,255,147,122,100,255,148,122,100,255,148,121,100,255,148,122,101,255, -148,122,101,255,149,123,101,255,149,123,101,255,149,123,101,255,150,123,101,255,150,124,102,255,150,124,102,255,151,125,102,255, -150,124,102,255,149,123,101,255,149,122,100,255,145,119, 98,255,139,113, 93,255,131,103, 86,255,124, 95, 80,255,121, 92, 77,255, -125, 96, 81,255,133,105, 88,255,140,114, 94,255,145,118, 97,255,145,118, 98,255,144,117, 96,255,142,115, 94,255,140,113, 93,255, -138,110, 91,255,135,107, 89,255,132,104, 87,255,128,100, 84,255,124, 96, 80,255, 92, 77, 70,255, 61, 61, 61,255, 60, 60, 60,255, -138,129,115,255,210,192,163,255,208,190,159,255,207,189,158,255,206,188,157,255,205,187,156,255,206,187,156,255,205,186,155,255, -205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,204,185,154,255,205,186,155,255,206,187,156,255, -206,187,155,255,205,186,156,255,206,187,157,255,207,188,157,255,206,187,158,255,207,187,157,255,207,188,158,255,206,189,158,255, -207,188,159,255,208,190,160,255,208,189,160,255,208,190,161,255,208,190,161,255,209,191,162,255,209,191,162,255,208,191,164,255, -209,192,164,255,210,193,165,255,210,193,165,255,209,192,164,255,209,192,164,255,209,191,162,255,208,190,161,255,207,188,159,255, -205,186,155,255,202,182,150,255,199,178,145,255,194,172,139,255,189,166,135,255,184,161,130,255,179,155,126,255,174,149,122,255, -169,145,117,255,165,140,114,255,161,136,111,255,157,132,108,255,155,129,106,255,152,127,104,255,151,125,103,255,150,124,102,255, -149,123,101,255,149,122,101,255,148,122,101,255,148,122,101,255,148,122,101,255,149,123,100,255,149,123,101,255,149,123,101,255, -150,124,102,255,151,125,102,255,151,125,103,255,152,125,103,255,152,126,103,255,152,126,103,255,153,127,104,255,153,127,104,255, -152,126,103,255,150,124,102,255,147,121, 99,255,142,116, 96,255,134,107, 89,255,126, 98, 82,255,122, 93, 78,255,125, 97, 81,255, -134,107, 88,255,142,116, 95,255,147,120, 99,255,148,121,100,255,147,121, 98,255,145,119, 97,255,143,116, 96,255,141,114, 94,255, -138,110, 91,255,135,107, 89,255,132,104, 87,255,128, 99, 83,255,124, 95, 80,255, 92, 76, 69,255, 61, 61, 61,255, 60, 60, 60,255, -138,130,115,255,211,193,164,255,208,190,161,255,207,189,159,255,207,188,157,255,205,187,156,255,206,187,156,255,205,186,155,255, -205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,205,186,155,255,206,186,155,255, -206,187,155,255,206,187,156,255,205,186,156,255,206,187,157,255,207,188,157,255,207,188,158,255,207,188,158,255,207,189,159,255, -206,188,158,255,208,189,160,255,207,190,160,255,208,190,160,255,208,190,161,255,209,191,161,255,208,191,162,255,208,192,164,255, -209,192,164,255,210,193,165,255,209,193,165,255,210,193,165,255,209,193,165,255,209,193,165,255,209,192,164,255,209,191,163,255, -208,190,161,255,206,187,156,255,202,182,150,255,196,175,142,255,190,167,136,255,183,160,129,255,177,153,124,255,170,146,119,255, -165,140,114,255,161,136,110,255,158,132,107,255,155,129,106,255,152,126,103,255,150,125,102,255,150,124,102,255,149,123,101,255, -149,123,100,255,149,123,101,255,147,121,101,255,148,122,101,255,149,123,100,255,149,123,101,255,149,123,101,255,150,124,102,255, -152,126,103,255,153,127,104,255,154,128,105,255,154,129,106,255,155,129,106,255,156,130,106,255,156,130,107,255,155,129,105,255, -154,128,104,255,150,124,102,255,145,119, 97,255,137,110, 91,255,128,100, 84,255,123, 95, 79,255,126, 98, 82,255,135,108, 90,255, -144,118, 97,255,149,123,101,255,150,124,101,255,149,123,101,255,148,121,100,255,146,119, 98,255,143,116, 96,255,141,113, 94,255, -138,110, 91,255,135,107, 89,255,131,104, 86,255,127, 99, 83,255,123, 93, 78,255, 90, 75, 68,255, 61, 61, 61,255, 60, 60, 60,255, -139,130,116,255,211,194,165,255,208,190,161,255,207,189,159,255,207,188,158,255,205,187,156,255,206,187,156,255,205,186,155,255, -205,186,154,255,205,186,155,255,205,186,155,255,205,186,154,255,205,186,155,255,205,186,155,255,204,185,154,255,205,186,155,255, -205,187,155,255,206,187,155,255,206,187,156,255,206,187,157,255,207,188,157,255,206,187,158,255,207,188,158,255,207,189,159,255, -207,189,159,255,207,189,159,255,208,190,160,255,208,189,160,255,207,190,161,255,208,191,162,255,209,190,162,255,208,192,164,255, -209,192,164,255,210,192,164,255,209,194,166,255,209,193,165,255,210,194,167,255,211,194,167,255,211,195,168,255,211,195,168,255, -210,194,166,255,209,192,163,255,206,187,157,255,200,180,148,255,193,171,139,255,185,162,131,255,177,153,124,255,170,145,118,255, -163,138,113,255,159,133,109,255,155,129,106,255,152,126,103,255,151,125,102,255,150,124,102,255,148,122,100,255,149,123,100,255, -148,122,100,255,147,121,101,255,148,122,100,255,148,122,100,255,150,124,102,255,150,124,102,255,151,125,103,255,152,127,104,255, -154,128,105,255,155,129,105,255,157,131,107,255,158,132,108,255,159,133,109,255,159,133,109,255,158,133,109,255,157,131,108,255, -154,128,105,255,148,122,100,255,139,112, 93,255,130,102, 86,255,125, 96, 81,255,127, 99, 83,255,137,109, 90,255,147,121, 99,255, -152,127,104,255,152,126,104,255,152,125,103,255,149,123,101,255,148,121,100,255,145,118, 97,255,142,115, 95,255,140,113, 93,255, -138,110, 91,255,134,107, 88,255,131,103, 86,255,126, 98, 82,255,121, 92, 78,255, 89, 74, 67,255, 61, 61, 61,255, 60, 60, 60,255, -139,131,116,255,211,194,166,255,209,191,162,255,208,190,160,255,207,188,158,255,205,187,156,255,206,186,155,255,205,186,155,255, -205,185,155,255,205,186,154,255,205,186,154,255,205,186,155,255,205,185,154,255,205,186,155,255,204,186,154,255,205,185,155,255, -206,187,156,255,205,186,155,255,206,187,155,255,206,187,157,255,206,187,156,255,207,188,157,255,207,187,157,255,207,188,158,255, -207,189,159,255,207,189,159,255,208,189,160,255,207,190,159,255,207,190,161,255,208,190,161,255,209,190,162,255,208,192,164,255, -209,192,164,255,210,192,164,255,210,194,166,255,210,193,166,255,210,194,167,255,211,195,169,255,212,196,170,255,213,197,172,255, -213,198,173,255,213,197,172,255,211,195,167,255,207,189,159,255,200,179,146,255,191,169,137,255,182,158,129,255,173,149,121,255, -167,142,115,255,159,135,110,255,155,130,106,255,152,127,104,255,150,124,102,255,149,123,101,255,148,122,100,255,148,122,100,255, -147,121,100,255,148,122,100,255,149,123,101,255,149,123,101,255,150,124,102,255,151,125,103,255,153,127,104,255,154,128,105,255, -155,129,106,255,157,131,107,255,159,133,109,255,160,135,110,255,161,136,111,255,161,136,111,255,160,135,109,255,157,132,107,255, -151,126,103,255,142,115, 95,255,131,104, 86,255,126, 98, 82,255,129,101, 84,255,138,112, 92,255,150,124,101,255,156,130,106,255, -156,130,106,255,154,128,104,255,152,125,103,255,149,122,100,255,146,120, 99,255,145,118, 97,255,142,115, 94,255,140,113, 93,255, -137,110, 91,255,134,106, 88,255,130,102, 85,255,126, 97, 81,255,119, 90, 75,255, 88, 73, 66,255, 61, 61, 61,255, 60, 60, 60,255, -140,131,118,255,212,196,168,255,209,192,164,255,208,190,161,255,207,189,158,255,206,187,157,255,206,187,156,255,205,186,155,255, -205,186,155,255,205,185,154,255,205,185,153,255,205,185,154,255,205,186,155,255,205,185,155,255,205,186,155,255,204,185,154,255, -205,186,155,255,206,187,156,255,206,187,155,255,205,186,157,255,206,187,156,255,207,188,157,255,207,187,157,255,207,188,158,255, -207,189,159,255,207,188,159,255,207,189,159,255,208,190,160,255,207,190,160,255,208,191,161,255,208,190,162,255,208,191,163,255, -209,192,164,255,210,192,164,255,210,194,166,255,211,194,166,255,211,195,168,255,212,196,171,255,213,197,172,255,214,199,175,255, -216,201,178,255,216,202,180,255,217,202,180,255,215,199,174,255,209,191,162,255,201,179,147,255,190,168,136,255,180,157,127,255, -171,147,119,255,164,139,114,255,159,134,109,255,155,129,106,255,151,126,104,255,149,124,102,255,149,123,101,255,149,123,101,255, -148,122,100,255,149,123,101,255,150,124,102,255,151,125,102,255,151,125,103,255,153,127,104,255,154,128,105,255,155,129,106,255, -157,132,108,255,159,133,109,255,160,135,110,255,162,137,112,255,162,137,112,255,162,137,111,255,160,135,110,255,153,128,106,255, -144,118, 97,255,133,106, 88,255,127, 98, 82,255,130,102, 85,255,141,115, 95,255,153,128,105,255,158,133,108,255,159,133,109,255, -157,131,107,255,154,128,105,255,150,125,102,255,148,122,100,255,146,119, 98,255,144,117, 96,255,141,114, 94,255,140,112, 93,255, -137,109, 91,255,133,106, 88,255,129,101, 84,255,124, 95, 80,255,116, 87, 73,255, 86, 71, 64,255, 61, 61, 61,255, 60, 60, 60,255, -140,132,118,255,213,197,169,255,210,193,165,255,208,191,161,255,208,190,160,255,206,187,157,255,206,187,156,255,205,186,155,255, -205,186,154,255,205,185,153,255,205,184,154,255,205,184,153,255,205,185,153,255,205,186,154,255,205,186,155,255,205,186,155,255, -205,186,155,255,206,187,156,255,205,186,155,255,205,186,157,255,206,187,157,255,207,188,158,255,207,188,158,255,207,187,157,255, -207,188,158,255,206,188,158,255,207,189,159,255,208,190,160,255,208,190,160,255,207,191,161,255,208,191,161,255,209,191,163,255, -208,191,163,255,209,192,164,255,209,194,165,255,210,193,166,255,211,195,168,255,212,197,171,255,213,199,174,255,214,201,176,255, -217,203,182,255,219,207,186,255,221,209,189,255,220,209,188,255,217,203,180,255,211,195,167,255,203,183,150,255,192,170,138,255, -181,158,128,255,173,149,121,255,166,141,115,255,160,135,110,255,156,130,107,255,153,127,104,255,151,126,103,255,151,125,103,255, -151,125,103,255,151,125,102,255,151,125,103,255,152,126,103,255,154,128,105,255,155,129,106,255,157,131,106,255,158,132,108,255, -159,134,109,255,161,136,111,255,163,137,112,255,163,138,113,255,163,138,112,255,161,136,111,255,154,130,106,255,145,119, 98,255, -135,107, 89,255,128,100, 83,255,131,104, 86,255,144,117, 97,255,156,132,107,255,162,137,112,255,161,136,111,255,159,133,109,255, -155,129,106,255,153,126,104,255,150,123,101,255,147,120, 99,255,145,119, 97,255,143,116, 96,255,141,114, 94,255,139,112, 92,255, -137,109, 90,255,133,105, 87,255,129,100, 83,255,122, 93, 78,255,113, 83, 70,255, 84, 69, 63,255, 61, 61, 61,255, 60, 60, 60,255, -141,132,119,255,214,198,171,255,211,195,167,255,210,192,163,255,208,190,160,255,207,188,158,255,206,187,156,255,205,186,155,255, -204,185,154,255,205,185,153,255,205,184,154,255,205,184,154,255,205,185,154,255,205,186,153,255,205,186,155,255,205,186,154,255, -205,186,155,255,205,186,156,255,206,187,156,255,206,187,157,255,205,186,156,255,206,187,157,255,207,188,158,255,207,187,157,255, -207,188,158,255,206,189,159,255,207,188,158,255,207,189,159,255,208,190,160,255,207,190,161,255,208,190,161,255,209,191,163,255, -208,191,163,255,209,192,164,255,209,193,165,255,210,193,166,255,210,194,167,255,212,196,170,255,213,198,173,255,215,201,176,255, -218,204,182,255,221,208,189,255,224,212,195,255,225,215,198,255,224,214,196,255,222,209,188,255,216,200,175,255,207,188,157,255, -196,174,142,255,185,162,131,255,176,152,124,255,169,144,118,255,163,138,113,255,159,133,109,255,156,131,107,255,154,128,105,255, -153,128,104,255,153,127,104,255,154,128,105,255,155,129,105,255,157,130,106,255,158,132,108,255,159,134,109,255,161,135,111,255, -162,137,112,255,163,138,113,255,164,139,113,255,163,139,113,255,161,136,111,255,155,130,106,255,145,118, 98,255,134,107, 89,255, -129,101, 84,255,134,106, 88,255,147,122,100,255,160,135,110,255,165,140,114,255,164,139,114,255,161,135,110,255,157,132,108,255, -154,128,105,255,151,125,102,255,149,122,100,255,146,120, 98,255,145,118, 97,255,142,115, 95,255,140,113, 93,255,139,112, 92,255, -136,109, 90,255,132,104, 87,255,127, 99, 82,255,120, 91, 76,255,108, 79, 67,255, 80, 67, 61,255, 61, 61, 61,255, 60, 60, 60,255, -141,133,121,255,215,200,173,255,212,196,170,255,210,193,165,255,208,191,162,255,207,189,159,255,206,187,157,255,206,187,156,255, -204,185,154,255,205,185,154,255,205,184,153,255,205,185,154,255,205,185,154,255,205,186,153,255,205,186,154,255,205,186,155,255, -204,185,155,255,205,186,156,255,206,187,156,255,206,187,157,255,205,186,156,255,206,187,157,255,207,188,158,255,207,187,157,255, -207,188,158,255,207,189,159,255,206,188,158,255,207,189,159,255,208,189,160,255,208,189,160,255,207,189,161,255,209,191,162,255, -208,191,163,255,209,191,163,255,210,193,165,255,210,193,165,255,210,194,167,255,212,196,169,255,213,197,171,255,214,199,175,255, -217,204,181,255,220,208,188,255,224,213,195,255,227,218,202,255,228,220,205,255,227,219,203,255,225,214,195,255,219,206,184,255, -211,194,167,255,201,181,148,255,190,168,136,255,181,158,127,255,173,149,121,255,167,142,116,255,162,137,112,255,160,134,110,255, -158,133,108,255,157,132,108,255,157,132,108,255,158,133,109,255,159,134,109,255,161,136,110,255,163,138,113,255,164,139,114,255, -166,140,115,255,165,141,115,255,165,140,114,255,161,137,112,255,154,129,106,255,143,117, 96,255,133,105, 87,255,130,102, 85,255, -137,110, 91,255,151,126,103,255,163,139,113,255,166,143,116,255,166,141,115,255,163,138,113,255,159,134,109,255,155,130,106,255, -153,127,104,255,150,124,101,255,148,121,100,255,146,119, 98,255,144,117, 96,255,142,115, 95,255,140,113, 93,255,139,111, 92,255, -135,108, 89,255,131,103, 85,255,125, 96, 81,255,116, 87, 73,255,102, 74, 64,255, 76, 64, 60,255, 61, 61, 62,255, 60, 60, 60,255, -142,134,122,255,216,201,176,255,212,197,171,255,211,195,167,255,210,192,164,255,208,190,161,255,207,188,158,255,206,187,156,255, -205,186,155,255,204,185,154,255,204,184,153,255,205,185,154,255,205,186,154,255,205,186,154,255,205,185,153,255,205,186,154,255, -204,185,155,255,205,186,156,255,206,187,155,255,206,187,157,255,205,186,156,255,206,187,157,255,207,188,158,255,207,187,157,255, -207,188,158,255,207,189,159,255,206,188,158,255,207,189,159,255,208,190,159,255,208,190,160,255,208,189,160,255,208,190,162,255, -208,190,162,255,208,191,163,255,208,192,164,255,209,193,165,255,209,193,166,255,211,195,168,255,212,197,170,255,213,199,174,255, -216,202,179,255,219,207,186,255,222,212,194,255,226,218,202,255,229,222,208,255,230,223,210,255,229,221,206,255,226,217,201,255, -222,212,191,255,216,202,178,255,207,189,158,255,197,175,143,255,187,165,134,255,178,156,126,255,172,149,120,255,168,143,116,255, -165,140,114,255,163,138,112,255,163,138,112,255,163,138,113,255,164,139,113,255,165,141,114,255,168,143,116,255,168,144,117,255, -169,144,118,255,167,143,117,255,163,139,114,255,155,129,107,255,142,116, 95,255,132,104, 86,255,129,102, 85,255,140,114, 93,255, -155,131,107,255,166,142,116,255,169,145,118,255,167,142,116,255,163,138,113,255,160,135,110,255,157,131,108,255,153,127,105,255, -150,124,102,255,149,123,101,255,147,121, 99,255,145,118, 97,255,144,117, 96,255,143,116, 95,255,140,113, 94,255,139,111, 92,255, -135,107, 89,255,130,102, 85,255,122, 94, 79,255,111, 82, 70,255, 95, 70, 60,255, 74, 64, 59,255, 61, 61, 62,255, 60, 60, 60,255, -142,135,123,255,218,202,179,255,214,199,174,255,212,196,170,255,211,194,166,255,209,191,162,255,207,189,159,255,206,188,157,255, -205,186,155,255,204,185,154,255,205,184,153,255,204,185,153,255,204,185,153,255,205,185,154,255,205,186,154,255,204,185,154,255, -205,186,155,255,204,185,155,255,205,186,156,255,206,187,157,255,205,186,156,255,206,187,157,255,207,188,158,255,206,187,157,255, -206,188,158,255,207,189,159,255,206,188,158,255,207,189,159,255,207,190,159,255,207,190,160,255,208,190,160,255,207,190,161,255, -207,190,162,255,208,191,162,255,209,192,163,255,208,192,164,255,209,192,165,255,210,194,167,255,212,196,169,255,213,198,173,255, -215,201,177,255,218,205,182,255,221,210,190,255,225,215,198,255,228,221,206,255,231,225,212,255,231,224,211,255,229,222,208,255, -227,219,203,255,225,215,198,255,221,209,189,255,214,198,173,255,206,187,155,255,196,174,142,255,187,164,133,255,179,157,127,255, -175,151,123,255,172,148,120,255,170,146,118,255,170,145,118,255,170,146,118,255,171,147,119,255,172,148,120,255,173,148,121,255, -171,147,120,255,166,142,115,255,156,131,107,255,142,116, 95,255,130,103, 86,255,130,102, 85,255,143,117, 97,255,160,136,110,255, -169,146,118,255,171,146,119,255,168,143,117,255,164,139,114,255,160,135,110,255,158,132,107,255,154,129,105,255,152,126,103,255, -150,123,101,255,148,122,100,255,147,120, 99,255,145,118, 97,255,144,117, 96,255,143,116, 96,255,141,114, 94,255,138,111, 92,255, -134,107, 88,255,128,100, 84,255,119, 90, 76,255,104, 76, 65,255, 89, 68, 58,255, 79, 66, 61,255, 61, 61, 62,255, 60, 60, 60,255, -143,136,124,255,218,205,182,255,215,201,177,255,213,198,172,255,211,196,168,255,210,193,164,255,208,190,161,255,207,188,157,255, -205,187,156,255,204,185,154,255,205,184,154,255,203,184,153,255,203,184,152,255,204,184,153,255,204,185,153,255,205,186,153,255, -205,186,155,255,204,185,155,255,205,186,156,255,206,186,157,255,205,187,156,255,206,187,157,255,206,188,158,255,206,187,157,255, -206,188,158,255,207,189,159,255,207,188,158,255,206,189,159,255,206,190,159,255,207,190,160,255,208,189,161,255,208,190,161,255, -207,191,161,255,208,191,162,255,208,192,162,255,208,191,163,255,209,192,164,255,210,193,166,255,211,195,168,255,212,197,171,255, -214,199,175,255,216,203,179,255,220,207,186,255,223,212,194,255,227,218,202,255,230,223,209,255,232,226,213,255,231,225,212,255, -229,222,208,255,227,219,204,255,226,218,202,255,225,215,198,255,221,209,189,255,214,199,174,255,206,187,155,255,197,175,142,255, -189,166,134,255,183,160,130,255,180,157,127,255,178,154,126,255,177,153,125,255,177,153,124,255,176,152,124,255,174,151,123,255, -168,145,118,255,158,133,109,255,142,116, 96,255,130,103, 85,255,131,104, 87,255,146,120, 99,255,163,138,113,255,170,147,119,255, -171,146,119,255,168,143,117,255,164,139,114,255,160,135,110,255,158,132,107,255,155,129,106,255,152,126,104,255,151,125,102,255, -150,124,102,255,148,121,100,255,147,120, 99,255,145,119, 97,255,144,118, 97,255,144,117, 96,255,141,114, 94,255,138,111, 92,255, -134,106, 88,255,126, 98, 81,255,113, 84, 72,255, 94, 70, 61,255, 95, 71, 61,255, 86, 71, 65,255, 61, 61, 61,255, 60, 60, 60,255, -143,137,126,255,219,206,184,255,216,203,179,255,215,200,176,255,213,197,171,255,211,194,167,255,209,192,163,255,208,189,159,255, -206,187,156,255,205,186,154,255,204,185,153,255,203,184,152,255,204,184,152,255,204,184,152,255,203,184,152,255,204,185,153,255, -205,186,153,255,204,185,155,255,205,186,155,255,206,187,157,255,206,187,157,255,206,188,158,255,206,187,157,255,206,188,158,255, -207,189,159,255,207,189,159,255,207,189,159,255,207,188,160,255,206,188,159,255,207,189,160,255,208,190,161,255,208,190,161,255, -208,191,162,255,207,190,161,255,209,192,163,255,209,192,163,255,208,191,164,255,210,193,166,255,210,194,167,255,211,195,169,255, -213,198,173,255,215,200,177,255,217,204,182,255,220,209,189,255,224,214,196,255,227,219,204,255,231,224,211,255,232,226,214,255, -231,225,212,255,228,221,208,255,226,218,204,255,227,219,205,255,228,220,206,255,227,217,202,255,222,211,192,255,215,200,175,255, -207,188,159,255,199,179,147,255,194,171,140,255,189,167,135,255,185,162,132,255,182,159,129,255,177,155,125,255,170,147,120,255, -158,133,110,255,142,116, 95,255,131,104, 86,255,135,107, 89,255,150,124,101,255,163,139,114,255,169,145,118,255,169,145,118,255, -167,142,116,255,164,139,113,255,160,135,110,255,157,131,108,255,155,129,106,255,153,127,104,255,151,125,103,255,150,124,102,255, -148,122,100,255,148,121,100,255,147,120, 99,255,146,119, 98,255,145,118, 97,255,144,117, 96,255,141,114, 94,255,138,110, 91,255, -131,104, 86,255,122, 93, 78,255,105, 77, 66,255, 94, 70, 60,255,109, 80, 69,255, 91, 76, 69,255, 61, 61, 61,255, 60, 60, 60,255, -144,138,127,255,221,208,186,255,218,205,182,255,216,203,179,255,214,199,175,255,213,197,170,255,210,193,165,255,208,190,161,255, -206,188,157,255,205,185,154,255,203,185,153,255,204,184,152,255,203,183,151,255,204,183,151,255,204,184,152,255,203,184,152,255, -204,185,153,255,205,186,154,255,204,185,155,255,206,187,156,255,206,187,157,255,206,188,158,255,206,188,158,255,207,188,158,255, -206,189,159,255,207,189,159,255,207,189,160,255,207,189,159,255,207,189,160,255,207,189,160,255,208,190,161,255,208,190,161,255, -208,191,162,255,207,190,161,255,209,192,163,255,209,192,163,255,208,191,163,255,210,193,166,255,210,194,167,255,211,195,169,255, -213,197,172,255,214,199,175,255,216,202,179,255,219,206,185,255,222,210,191,255,224,215,198,255,228,220,206,255,231,225,212,255, -232,226,214,255,231,224,212,255,227,220,206,255,225,217,203,255,226,219,205,255,229,222,209,255,230,223,210,255,228,220,206,255, -223,213,194,255,217,202,179,255,209,192,164,255,201,181,150,255,193,172,139,255,184,162,131,255,172,150,121,255,157,133,108,255, -141,115, 95,255,134,107, 89,255,141,114, 94,255,154,130,106,255,164,140,114,255,168,143,117,255,167,143,116,255,165,140,114,255, -162,137,111,255,159,134,109,255,156,131,107,255,155,129,105,255,153,127,104,255,152,125,103,255,151,124,102,255,149,123,101,255, -148,123,100,255,147,121, 99,255,147,121, 99,255,147,119, 99,255,145,118, 97,255,144,117, 96,255,141,114, 94,255,136,109, 90,255, -128, 99, 83,255,114, 85, 73,255, 97, 71, 61,255,107, 78, 67,255,120, 92, 77,255, 94, 80, 72,255, 61, 61, 61,255, 60, 60, 60,255, -144,138,128,255,222,210,189,255,219,206,185,255,218,204,182,255,216,202,179,255,213,198,172,255,211,195,167,255,209,192,162,255, -207,188,158,255,205,185,154,255,204,184,152,255,203,183,151,255,203,183,151,255,203,183,151,255,203,183,151,255,203,183,151,255, -203,185,153,255,204,185,153,255,204,185,154,255,206,187,156,255,205,187,157,255,206,188,157,255,206,188,158,255,207,189,159,255, -207,188,158,255,207,189,159,255,207,189,160,255,207,189,160,255,207,189,160,255,208,190,160,255,207,189,161,255,208,190,161,255, -208,191,162,255,207,190,161,255,209,192,163,255,209,191,163,255,208,191,163,255,210,193,166,255,210,194,167,255,211,195,168,255, -212,197,171,255,213,199,174,255,215,201,177,255,217,203,182,255,220,208,187,255,222,212,193,255,226,216,200,255,228,221,207,255, -231,225,212,255,232,226,214,255,231,225,212,255,227,220,207,255,225,218,203,255,226,218,203,255,228,221,208,255,230,224,212,255, -231,224,212,255,227,218,203,255,219,207,188,255,208,193,166,255,195,175,143,255,178,156,127,255,159,135,111,255,142,116, 96,255, -139,112, 93,255,150,124,102,255,162,138,112,255,167,143,116,255,167,142,116,255,165,140,114,255,163,137,112,255,160,134,110,255, -158,132,108,255,156,130,106,255,155,129,105,255,153,127,104,255,152,125,103,255,151,125,103,255,150,124,102,255,149,123,101,255, -148,122,100,255,148,122, 99,255,147,121, 99,255,146,119, 98,255,145,119, 98,255,143,116, 96,255,139,112, 92,255,132,105, 87,255, -121, 92, 77,255,103, 75, 65,255,102, 75, 65,255,120, 91, 77,255,129,101, 83,255, 97, 83, 74,255, 61, 61, 61,255, 60, 60, 60,255, -145,138,128,255,222,210,190,255,220,208,187,255,218,206,183,255,217,203,180,255,214,199,175,255,211,195,169,255,209,192,162,255, -206,188,157,255,204,184,152,255,202,182,150,255,201,181,149,255,201,180,148,255,201,181,148,255,201,181,149,255,202,182,150,255, -203,183,151,255,204,184,153,255,205,185,154,255,204,185,155,255,206,187,156,255,205,187,157,255,206,188,158,255,207,189,158,255, -207,189,159,255,207,188,159,255,207,189,159,255,207,188,159,255,207,189,160,255,207,190,160,255,207,190,161,255,208,190,161,255, -207,190,161,255,208,191,162,255,209,191,162,255,209,192,163,255,208,192,164,255,210,193,166,255,210,194,167,255,211,195,168,255, -212,196,170,255,213,198,173,255,214,200,175,255,216,203,179,255,219,205,185,255,220,209,190,255,223,213,194,255,226,217,201,255, -229,221,207,255,231,225,212,255,232,227,215,255,231,225,212,255,228,221,208,255,226,218,204,255,225,217,202,255,225,218,204,255, -226,219,206,255,225,218,202,255,218,207,187,255,205,188,161,255,186,165,134,255,163,139,113,255,147,122,100,255,148,123,100,255, -161,136,111,255,171,147,120,255,172,148,120,255,168,144,117,255,164,139,113,255,161,136,111,255,159,133,109,255,156,131,107,255, -155,129,106,255,154,128,105,255,153,127,104,255,152,126,103,255,151,125,103,255,151,123,101,255,149,124,102,255,149,123,101,255, -148,123,100,255,149,122,100,255,148,121,100,255,147,121, 99,255,146,119, 98,255,142,115, 95,255,136,108, 91,255,126, 98, 82,255, -109, 80, 69,255,100, 73, 63,255,120, 92, 77,255,131,103, 86,255,135,107, 89,255, 99, 85, 76,255, 61, 61, 61,255, 60, 60, 60,255, -144,138,128,255,222,210,189,255,220,208,186,255,219,206,184,255,217,203,180,255,215,199,175,255,211,195,168,255,208,190,161,255, -205,186,155,255,202,182,150,255,200,180,147,255,199,178,145,255,199,178,145,255,200,179,145,255,200,179,146,255,201,181,148,255, -202,182,149,255,203,183,151,255,204,184,153,255,205,186,154,255,205,186,155,255,206,187,157,255,206,188,157,255,207,188,158,255, -206,188,158,255,207,189,158,255,207,189,159,255,207,188,159,255,206,190,160,255,206,189,161,255,206,190,160,255,208,189,162,255, -207,190,161,255,208,191,162,255,208,191,163,255,208,191,163,255,209,192,164,255,210,193,166,255,210,194,167,255,210,194,168,255, -212,196,170,255,213,198,173,255,214,199,175,255,216,202,178,255,217,204,182,255,219,207,186,255,222,210,192,255,224,214,196,255, -226,218,202,255,229,222,208,255,231,225,212,255,232,227,215,255,231,225,213,255,229,223,210,255,226,220,205,255,224,216,201,255, -221,212,195,255,216,205,185,255,207,191,164,255,191,170,138,255,172,150,122,255,162,139,113,255,164,141,114,255,173,150,122,255, -177,155,126,255,176,153,124,255,171,148,119,255,167,142,115,255,162,137,111,255,158,133,109,255,156,131,107,255,155,129,106,255, -154,128,105,255,153,127,104,255,152,126,103,255,151,125,102,255,151,124,103,255,150,124,102,255,150,123,101,255,149,123,101,255, -149,123,101,255,149,123,101,255,149,122,100,255,147,121,100,255,145,118, 97,255,141,113, 93,255,130,103, 85,255,114, 86, 73,255, -102, 74, 64,255,120, 92, 77,255,135,107, 89,255,139,112, 92,255,139,111, 92,255,100, 86, 77,255, 61, 61, 61,255, 60, 60, 60,255, -144,137,126,255,220,208,186,255,219,205,184,255,217,203,180,255,216,201,176,255,212,197,171,255,209,192,164,255,206,186,156,255, -202,182,149,255,199,178,145,255,196,175,142,255,195,173,140,255,194,173,141,255,196,174,141,255,197,176,143,255,198,178,145,255, -201,180,147,255,202,181,149,255,203,183,152,255,204,185,154,255,205,186,155,255,205,187,156,255,205,188,157,255,206,188,158,255, -207,187,157,255,206,189,159,255,207,189,159,255,207,188,160,255,207,190,159,255,207,190,160,255,206,190,160,255,208,189,162,255, -207,190,161,255,208,191,162,255,208,191,163,255,208,191,163,255,209,192,164,255,209,193,166,255,210,194,167,255,211,195,168,255, -212,196,170,255,213,197,172,255,213,199,174,255,215,201,177,255,217,203,181,255,219,206,184,255,220,209,189,255,222,212,193,255, -225,215,198,255,227,218,203,255,229,222,208,255,231,225,212,255,232,226,214,255,231,227,215,255,230,224,212,255,227,221,207,255, -223,215,200,255,217,207,187,255,208,192,166,255,198,178,147,255,190,170,138,255,186,165,134,255,186,164,133,255,184,162,131,255, -180,156,127,255,174,149,122,255,169,144,117,255,164,139,113,255,160,134,110,255,157,132,108,255,156,130,106,255,155,129,106,255, -154,128,104,255,153,127,104,255,152,127,103,255,152,125,103,255,151,125,102,255,151,124,102,255,150,124,102,255,150,124,102,255, -150,124,101,255,150,124,101,255,150,123,101,255,147,121, 99,255,143,117, 96,255,135,108, 89,255,120, 91, 77,255,104, 76, 66,255, -121, 93, 78,255,138,111, 92,255,144,117, 96,255,144,117, 95,255,142,114, 94,255,101, 87, 77,255, 61, 61, 61,255, 60, 60, 60,255, -142,135,123,255,217,203,178,255,214,200,175,255,213,197,171,255,212,194,167,255,209,190,161,255,205,186,154,255,201,181,147,255, -197,175,142,255,192,170,138,255,189,167,135,255,188,166,134,255,189,166,135,255,190,168,137,255,193,171,139,255,195,174,141,255, -198,177,144,255,200,180,147,255,202,182,149,255,203,183,152,255,204,185,154,255,204,186,155,255,205,186,156,255,205,187,157,255, -205,187,157,255,206,188,158,255,207,189,158,255,206,188,159,255,207,189,160,255,207,190,160,255,207,189,160,255,207,189,161,255, -208,190,162,255,207,190,162,255,209,191,163,255,208,191,163,255,209,192,164,255,209,193,166,255,210,194,167,255,210,194,168,255, -212,196,170,255,212,197,172,255,213,198,174,255,215,201,177,255,216,203,180,255,217,204,182,255,219,207,186,255,221,209,191,255, -223,213,195,255,225,216,199,255,227,219,204,255,229,222,208,255,231,225,212,255,232,226,214,255,232,226,214,255,230,225,213,255, -229,222,209,255,225,217,203,255,220,210,191,255,213,201,177,255,207,190,162,255,199,179,147,255,191,170,136,255,183,161,130,255, -176,153,124,255,170,147,119,255,166,141,115,255,162,136,111,255,159,134,109,255,157,131,107,255,156,130,106,255,155,129,105,255, -154,128,105,255,154,128,105,255,153,127,104,255,153,127,104,255,153,126,104,255,152,126,104,255,153,126,104,255,152,126,103,255, -152,126,103,255,151,125,102,255,150,124,102,255,146,120, 99,255,139,113, 93,255,125, 97, 81,255,107, 80, 68,255,120, 92, 78,255, -142,115, 95,255,148,123,101,255,148,121,100,255,145,118, 98,255,143,115, 95,255,102, 87, 78,255, 61, 61, 61,255, 60, 60, 60,255, -140,131,116,255,211,193,165,255,209,190,160,255,207,187,156,255,204,184,152,255,202,181,148,255,197,176,143,255,193,172,139,255, -189,166,134,255,184,162,131,255,181,158,128,255,180,156,127,255,180,157,128,255,183,161,130,255,187,164,134,255,191,169,137,255, -195,173,141,255,198,177,144,255,201,180,147,255,202,183,151,255,203,184,153,255,204,186,155,255,204,187,156,255,205,186,156,255, -206,187,157,255,205,188,158,255,206,188,158,255,207,188,159,255,206,188,159,255,207,189,159,255,207,190,160,255,207,190,161,255, -208,189,162,255,207,190,161,255,209,191,163,255,208,191,163,255,209,192,164,255,210,194,166,255,210,194,167,255,210,194,168,255, -212,196,170,255,212,197,172,255,213,198,174,255,215,201,177,255,216,202,179,255,218,204,182,255,219,206,185,255,220,209,189,255, -222,211,192,255,224,214,196,255,226,217,200,255,227,219,204,255,229,222,208,255,231,224,211,255,231,225,213,255,231,225,213,255, -230,225,212,255,229,222,208,255,225,216,201,255,219,207,187,255,210,195,168,255,200,180,149,255,190,168,136,255,181,158,128,255, -174,150,122,255,168,144,117,255,164,139,113,255,161,135,111,255,158,133,109,255,156,130,107,255,155,129,106,255,154,128,105,255, -154,128,105,255,154,128,105,255,154,128,105,255,154,128,105,255,154,128,105,255,155,129,105,255,155,129,105,255,154,129,105,255, -154,128,105,255,153,126,104,255,150,124,102,255,144,118, 97,255,130,102, 85,255,108, 82, 71,255,120, 92, 78,255,146,120, 98,255, -153,128,105,255,153,127,104,255,150,123,101,255,146,120, 99,255,143,116, 95,255,102, 88, 78,255, 61, 61, 61,255, 60, 60, 60,255, -136,125,108,255,204,182,149,255,200,179,146,255,198,176,143,255,195,173,140,255,192,170,138,255,188,166,134,255,184,161,131,255, -180,157,127,255,175,151,123,255,172,148,120,255,170,146,119,255,171,146,119,255,174,150,122,255,179,155,126,255,185,162,132,255, -190,168,136,255,195,174,141,255,198,178,145,255,201,181,148,255,202,182,150,255,203,184,153,255,205,186,155,255,204,187,156,255, -205,187,156,255,205,187,157,255,206,188,158,255,205,187,157,255,207,189,159,255,206,189,159,255,207,190,159,255,207,190,161,255, -208,189,161,255,207,190,162,255,209,191,163,255,208,191,163,255,209,192,164,255,210,194,167,255,211,194,167,255,210,194,168,255, -212,196,170,255,212,197,172,255,213,198,174,255,215,200,177,255,215,202,179,255,217,203,181,255,218,206,184,255,220,208,188,255, -222,211,191,255,223,212,194,255,224,215,198,255,227,218,202,255,228,220,205,255,229,222,209,255,231,224,211,255,230,225,212,255, -231,224,211,255,229,222,208,255,226,216,201,255,220,207,187,255,211,195,168,255,200,180,147,255,190,168,135,255,180,157,127,255, -173,150,121,255,168,144,117,255,164,139,113,255,160,135,110,255,158,133,109,255,157,131,107,255,156,130,106,255,155,129,106,255, -155,129,105,255,155,129,105,255,155,129,106,255,156,130,106,255,156,130,106,255,156,130,107,255,157,131,107,255,157,131,107,255, -155,129,106,255,154,128,105,255,149,123,100,255,137,109, 91,255,115, 87, 74,255,123, 96, 81,255,149,123,101,255,157,132,108,255, -157,131,107,255,154,128,105,255,150,124,102,255,147,120, 99,255,144,116, 96,255,102, 88, 78,255, 61, 61, 61,255, 60, 60, 61,255, -131,119,102,255,194,172,139,255,190,168,136,255,188,165,134,255,186,163,132,255,183,160,130,255,180,157,127,255,177,153,125,255, -172,148,121,255,168,144,116,255,164,139,113,255,161,136,110,255,160,135,110,255,163,138,113,255,169,145,118,255,176,152,124,255, -184,161,130,255,190,168,137,255,195,174,141,255,198,178,145,255,201,181,148,255,202,182,151,255,203,184,152,255,204,185,154,255, -204,186,155,255,205,187,156,255,205,187,157,255,206,187,157,255,206,188,158,255,206,188,158,255,207,189,159,255,206,190,160,255, -207,189,161,255,207,190,162,255,208,191,163,255,208,192,164,255,209,192,164,255,210,194,166,255,210,194,168,255,210,194,168,255, -212,196,170,255,212,197,172,255,213,198,173,255,214,200,176,255,215,202,179,255,217,203,181,255,218,205,184,255,219,207,187,255, -220,209,189,255,222,212,193,255,223,214,196,255,225,216,199,255,227,218,203,255,229,221,207,255,230,223,210,255,230,225,212,255, -231,224,211,255,230,223,209,255,228,219,204,255,222,211,193,255,215,200,176,255,205,187,155,255,194,173,140,255,185,162,131,255, -177,153,124,255,171,146,119,255,165,141,114,255,162,137,112,255,159,134,110,255,157,132,108,255,157,131,107,255,157,131,107,255, -157,131,107,255,157,131,107,255,157,131,108,255,158,132,108,255,159,133,109,255,159,133,109,255,159,134,110,255,158,133,109,255, -157,132,108,255,152,127,104,255,140,114, 94,255,120, 93, 79,255,125,100, 85,255,152,127,104,255,160,135,110,255,160,134,109,255, -157,131,108,255,153,127,104,255,151,124,102,255,147,120, 99,255,144,116, 96,255,102, 88, 78,255, 61, 61, 61,255, 60, 60, 61,255, -126,114, 98,255,186,162,132,255,182,159,129,255,180,157,127,255,178,154,126,255,176,153,125,255,174,151,122,255,171,147,120,255, -167,142,116,255,161,136,111,255,157,131,106,255,152,126,103,255,150,123,102,255,151,126,103,255,158,132,108,255,165,141,115,255, -175,151,123,255,184,162,131,255,191,169,137,255,195,174,141,255,198,178,145,255,201,180,148,255,202,182,149,255,203,183,152,255, -204,185,154,255,205,186,155,255,205,186,155,255,205,187,156,255,206,187,157,255,206,188,158,255,206,188,158,255,206,189,159,255, -207,190,160,255,208,189,161,255,208,191,163,255,209,192,164,255,209,192,164,255,210,194,166,255,210,194,167,255,210,195,168,255, -212,196,170,255,212,197,172,255,214,198,173,255,214,200,175,255,215,201,178,255,216,202,180,255,217,205,183,255,219,206,186,255, -220,209,189,255,221,210,192,255,223,212,195,255,225,215,198,255,226,218,201,255,228,220,205,255,230,223,209,255,231,225,212,255, -232,225,213,255,231,225,212,255,230,223,209,255,228,219,203,255,222,210,191,255,214,199,173,255,204,184,152,255,193,171,138,255, -183,160,130,255,175,151,123,255,169,145,118,255,165,140,114,255,162,136,112,255,159,134,110,255,159,133,109,255,159,133,109,255, -158,133,109,255,159,133,109,255,160,134,110,255,160,135,110,255,161,136,111,255,162,137,112,255,162,136,111,255,160,135,110,255, -156,131,107,255,143,118, 96,255,124, 98, 84,255,133,107, 90,255,156,130,107,255,162,138,112,255,162,137,112,255,159,133,109,255, -155,131,106,255,153,127,104,255,150,123,102,255,146,120, 99,255,144,116, 96,255,102, 88, 78,255, 61, 61, 61,255, 60, 60, 61,255, -123,111, 95,255,179,156,126,255,176,153,124,255,175,151,123,255,174,150,122,255,173,148,121,255,170,147,119,255,168,143,117,255, -163,138,113,255,157,131,107,255,150,124,102,255,145,118, 98,255,142,115, 94,255,142,115, 95,255,147,121, 99,255,155,129,106,255, -165,141,115,255,176,152,124,255,185,163,132,255,192,170,138,255,195,174,141,255,198,177,145,255,200,180,147,255,202,182,149,255, -202,183,151,255,204,185,153,255,204,185,154,255,205,186,155,255,205,186,156,255,206,187,157,255,205,187,157,255,207,189,159,255, -206,189,160,255,207,189,160,255,207,191,162,255,208,191,163,255,208,192,164,255,210,193,166,255,210,194,167,255,211,194,168,255, -211,196,170,255,212,197,172,255,213,198,173,255,214,200,175,255,214,201,177,255,215,203,180,255,217,204,182,255,218,206,185,255, -220,208,188,255,221,209,190,255,222,211,193,255,224,214,197,255,225,216,200,255,227,219,204,255,229,222,208,255,230,224,211,255, -231,225,213,255,232,226,214,255,231,225,213,255,230,223,210,255,228,219,204,255,222,212,192,255,214,200,173,255,205,185,153,255, -193,171,139,255,183,160,130,255,176,152,123,255,170,146,119,255,166,141,116,255,163,139,112,255,162,137,112,255,160,135,110,255, -160,135,110,255,161,136,111,255,162,136,111,255,163,138,112,255,164,138,113,255,164,139,113,255,163,138,112,255,158,134,109,255, -147,122,100,255,128,102, 86,255,139,115, 95,255,160,136,111,255,165,140,114,255,163,138,113,255,160,135,110,255,158,132,108,255, -155,128,105,255,152,126,103,255,149,123,101,255,146,120, 99,255,143,115, 95,255,102, 88, 77,255, 61, 61, 61,255, 60, 60, 61,255, -121,108, 94,255,175,152,124,255,173,150,122,255,173,148,121,255,171,147,120,255,171,147,119,255,169,144,118,255,165,140,114,255, -161,135,110,255,153,127,104,255,146,119, 98,255,139,112, 92,255,135,107, 89,255,134,106, 87,255,138,110, 91,255,145,119, 98,255, -156,130,107,255,167,143,116,255,178,155,126,255,187,164,134,255,192,170,138,255,195,174,141,255,198,177,145,255,200,180,147,255, -201,181,149,255,202,182,150,255,203,184,152,255,204,185,153,255,204,185,154,255,205,186,156,255,206,187,157,255,206,188,158,255, -206,188,159,255,207,189,160,255,208,190,161,255,208,191,162,255,208,191,164,255,209,192,165,255,209,193,166,255,210,194,167,255, -211,195,169,255,212,197,171,255,212,197,173,255,214,199,175,255,214,200,177,255,216,201,178,255,216,203,181,255,217,205,183,255, -218,206,185,255,220,209,188,255,221,210,192,255,222,212,194,255,224,215,198,255,226,217,201,255,227,220,205,255,230,223,209,255, -231,225,213,255,232,227,215,255,232,226,214,255,231,225,212,255,229,223,210,255,228,220,204,255,224,213,194,255,217,202,177,255, -207,188,157,255,196,174,142,255,186,163,132,255,178,155,126,255,173,149,121,255,168,144,117,255,166,141,115,255,164,140,113,255, -164,139,113,255,164,139,114,255,165,140,114,255,166,141,115,255,166,141,115,255,165,140,114,255,160,136,111,255,148,122,100,255, -131,105, 89,255,144,120,100,255,165,141,115,255,168,144,117,255,165,140,115,255,162,136,112,255,159,133,109,255,156,130,106,255, -154,128,105,255,151,124,102,255,149,122,101,255,146,119, 98,255,142,115, 95,255,101, 87, 77,255, 61, 61, 61,255, 60, 60, 61,255, -120,107, 93,255,174,150,121,255,172,149,121,255,172,147,119,255,171,146,119,255,170,146,118,255,168,143,117,255,165,140,114,255, -159,134,109,255,151,125,103,255,142,115, 95,255,135,108, 89,255,129,101, 84,255,127, 98, 83,255,130,102, 85,255,137,110, 91,255, -147,120, 99,255,159,134,109,255,171,147,119,255,181,158,129,255,188,166,134,255,193,171,138,255,195,174,141,255,198,177,144,255, -200,179,146,255,201,181,148,255,202,182,150,255,203,184,152,255,204,184,153,255,204,185,154,255,205,186,156,255,206,187,157,255, -206,188,158,255,206,188,159,255,207,190,161,255,207,190,161,255,208,192,163,255,209,192,164,255,210,193,165,255,210,194,167,255, -211,195,169,255,211,196,170,255,213,198,172,255,213,198,174,255,214,200,175,255,215,201,178,255,216,202,180,255,217,204,182,255, -217,206,185,255,219,207,187,255,220,209,189,255,222,211,192,255,223,213,195,255,225,215,199,255,227,218,203,255,228,221,207,255, -230,223,211,255,232,226,214,255,232,227,215,255,231,225,213,255,230,224,211,255,229,222,208,255,228,220,205,255,225,215,197,255, -219,206,184,255,211,193,164,255,200,179,146,255,190,168,136,255,183,159,129,255,177,152,124,255,172,148,120,255,170,146,118,255, -169,144,117,255,168,144,117,255,168,143,117,255,169,144,117,255,167,143,117,255,162,138,112,255,147,122,100,255,135,110, 92,255, -154,130,107,255,170,147,119,255,171,147,119,255,168,143,117,255,164,139,113,255,161,135,110,255,158,132,108,255,155,129,106,255, -153,127,104,255,151,124,102,255,149,122,100,255,146,118, 97,255,142,114, 94,255,101, 86, 77,255, 61, 61, 61,255, 60, 60, 61,255, -120,107, 93,255,174,149,121,255,173,149,120,255,172,148,121,255,171,147,120,255,170,146,119,255,168,145,117,255,165,140,114,255, -159,134,109,255,151,124,103,255,141,114, 95,255,133,105, 87,255,126, 97, 81,255,122, 93, 79,255,124, 96, 79,255,130,102, 85,255, -140,113, 93,255,150,124,102,255,163,138,113,255,175,152,124,255,184,161,131,255,189,167,136,255,193,171,139,255,195,174,141,255, -197,177,144,255,200,179,146,255,201,181,148,255,201,181,149,255,203,183,151,255,204,184,153,255,204,185,154,255,205,187,156,255, -206,188,157,255,205,187,158,255,207,189,160,255,208,190,161,255,207,190,162,255,209,192,163,255,208,192,164,255,209,193,165,255, -210,194,168,255,211,195,170,255,211,196,171,255,213,198,173,255,213,199,174,255,214,200,176,255,215,202,178,255,216,203,181,255, -218,205,183,255,219,206,185,255,219,208,188,255,221,210,191,255,222,212,193,255,223,214,197,255,225,217,201,255,227,219,205,255, -229,222,209,255,231,225,212,255,232,226,214,255,232,227,215,255,230,224,212,255,229,221,208,255,228,220,207,255,228,220,206,255, -227,218,202,255,222,211,192,255,215,200,175,255,205,187,156,255,196,175,142,255,188,166,134,255,182,159,129,255,178,155,125,255, -175,152,123,255,174,150,122,255,173,149,121,255,170,146,118,255,163,139,113,255,147,121,100,255,137,113, 95,255,163,139,114,255, -173,150,122,255,174,150,122,255,170,145,118,255,166,141,115,255,163,137,113,255,160,134,110,255,157,131,107,255,155,129,106,255, -153,127,104,255,151,124,102,255,148,122,100,255,144,118, 97,255,140,113, 93,255, 99, 85, 75,255, 61, 61, 61,255, 60, 60, 61,255, -120,107, 93,255,175,151,123,255,174,150,122,255,173,150,122,255,173,149,121,255,172,148,120,255,170,146,119,255,166,141,115,255, -160,135,111,255,152,125,103,255,141,114, 94,255,131,103, 86,255,124, 95, 79,255,119, 90, 76,255,120, 91, 77,255,126, 97, 81,255, -133,105, 87,255,144,118, 97,255,157,131,108,255,169,145,118,255,180,156,127,255,186,163,132,255,190,168,136,255,193,172,139,255, -196,174,141,255,197,176,143,255,199,178,145,255,200,180,148,255,201,181,149,255,203,183,151,255,203,184,153,255,204,185,154,255, -205,187,156,255,205,187,157,255,206,188,158,255,206,189,160,255,207,190,161,255,208,191,163,255,208,192,164,255,209,192,165,255, -210,194,167,255,210,195,168,255,211,195,170,255,212,198,172,255,213,198,174,255,213,199,175,255,215,200,177,255,216,202,180,255, -216,203,181,255,218,205,184,255,218,207,186,255,219,208,189,255,221,210,191,255,222,212,194,255,224,215,198,255,226,217,201,255, -227,220,205,255,229,222,209,255,231,225,212,255,231,225,214,255,230,225,213,255,229,222,209,255,227,219,205,255,227,219,205,255, -228,220,206,255,228,221,207,255,227,217,201,255,221,209,188,255,213,197,170,255,204,186,155,255,196,176,143,255,190,167,136,255, -184,162,131,255,180,158,128,255,175,152,123,255,164,139,114,255,146,121,100,255,146,122,102,255,170,147,120,255,177,154,125,255, -175,151,123,255,171,147,119,255,168,143,117,255,165,139,114,255,162,137,111,255,159,134,109,255,157,131,107,255,155,129,106,255, -153,127,104,255,151,125,102,255,148,121,100,255,144,117, 96,255,137,110, 91,255, 96, 81, 73,255, 61, 61, 61,255, 60, 60, 61,255, -121,108, 93,255,177,154,125,255,176,153,124,255,176,152,124,255,175,151,124,255,175,150,123,255,173,149,121,255,169,145,118,255, -163,138,113,255,154,128,105,255,142,115, 95,255,132,104, 86,255,123, 94, 79,255,118, 89, 75,255,118, 88, 75,255,122, 93, 78,255, -129,101, 84,255,140,113, 93,255,151,126,103,255,163,139,114,255,175,151,123,255,182,159,129,255,186,164,133,255,190,168,136,255, -193,171,139,255,195,173,141,255,197,176,143,255,199,178,145,255,200,179,147,255,201,181,149,255,203,183,151,255,203,184,152,255, -204,185,154,255,205,187,156,255,206,188,158,255,206,189,159,255,207,189,160,255,208,190,162,255,208,191,163,255,209,193,165,255, -210,193,166,255,210,194,168,255,211,196,169,255,212,197,171,255,212,197,172,255,214,199,174,255,214,200,176,255,214,201,178,255, -216,203,180,255,217,204,182,255,218,206,184,255,219,207,186,255,220,209,189,255,221,211,192,255,222,212,195,255,224,215,198,255, -226,218,202,255,227,220,206,255,229,222,209,255,231,225,212,255,231,226,213,255,230,223,211,255,227,220,206,255,225,217,202,255, -225,217,202,255,227,219,206,255,230,222,210,255,230,222,210,255,227,218,202,255,221,209,189,255,213,199,175,255,206,187,158,255, -196,176,143,255,185,164,132,255,167,144,117,255,147,122,102,255,162,139,114,255,178,155,126,255,179,156,127,255,175,152,123,255, -172,147,120,255,168,144,117,255,166,141,115,255,164,139,113,255,161,136,111,255,159,134,109,255,157,131,107,255,156,130,106,255, -154,128,105,255,151,125,103,255,148,122,100,255,143,116, 95,255,131,103, 85,255, 90, 76, 69,255, 61, 61, 61,255, 60, 60, 61,255, -122,110, 95,255,180,156,127,255,179,156,127,255,180,156,127,255,180,156,127,255,178,155,126,255,177,154,125,255,174,149,121,255, -167,143,116,255,157,131,107,255,145,118, 97,255,133,106, 88,255,124, 96, 80,255,119, 90, 76,255,117, 88, 75,255,120, 92, 77,255, -128,100, 84,255,137,110, 91,255,148,122,100,255,160,134,110,255,170,146,119,255,178,154,126,255,184,161,130,255,187,165,133,255, -190,168,136,255,193,171,139,255,195,173,141,255,196,175,142,255,199,178,145,255,200,179,146,255,201,181,148,255,203,183,151,255, -203,184,153,255,204,185,154,255,205,187,157,255,205,188,158,255,206,188,159,255,207,190,161,255,207,190,162,255,208,191,163,255, -209,193,165,255,209,193,167,255,210,194,168,255,211,196,170,255,212,197,171,255,212,197,173,255,214,199,175,255,213,200,176,255, -215,201,179,255,216,203,181,255,216,204,182,255,218,206,185,255,218,207,186,255,220,209,189,255,221,211,192,255,222,212,195,255, -224,215,199,255,226,218,202,255,227,220,206,255,228,222,209,255,230,224,211,255,230,224,212,255,229,222,209,255,226,219,204,255, -223,215,199,255,223,214,198,255,225,217,202,255,228,221,208,255,230,224,212,255,230,223,210,255,225,216,199,255,215,203,181,255, -200,182,151,255,173,150,123,255,155,132,110,255,176,153,124,255,183,160,130,255,181,158,128,255,176,152,123,255,172,148,120,255, -169,144,117,255,167,142,116,255,164,139,114,255,162,137,112,255,161,136,111,255,160,134,110,255,158,132,108,255,157,131,107,255, -155,129,106,255,152,126,103,255,148,121, 99,255,138,111, 91,255,123, 95, 80,255,105, 92, 82,255, 61, 61, 61,255, 60, 60, 61,255, -125,113, 97,255,185,162,131,255,184,162,131,255,185,162,131,255,185,162,131,255,184,161,131,255,183,159,130,255,179,156,126,255, -173,148,120,255,162,137,111,255,149,123,100,255,137,109, 90,255,127, 99, 83,255,120, 92, 77,255,118, 89, 75,255,122, 93, 78,255, -128,100, 84,255,138,111, 91,255,147,121,100,255,157,132,108,255,166,143,116,255,174,150,122,255,180,156,127,255,183,161,131,255, -187,165,133,255,190,168,136,255,192,170,138,255,194,173,140,255,196,175,142,255,198,177,144,255,200,180,147,255,201,181,148,255, -202,183,150,255,203,184,153,255,204,185,154,255,205,187,157,255,205,188,158,255,206,189,159,255,207,190,161,255,207,190,162,255, -208,192,164,255,209,193,166,255,210,194,167,255,211,195,169,255,211,196,170,255,212,197,172,255,213,198,173,255,213,199,175,255, -214,200,177,255,215,202,179,255,216,203,181,255,216,204,182,255,218,206,184,255,218,207,186,255,219,208,189,255,221,210,192,255, -222,212,195,255,224,215,198,255,225,217,202,255,227,219,205,255,228,221,208,255,229,223,209,255,228,223,209,255,227,220,206,255, -224,215,200,255,220,211,193,255,219,208,189,255,218,207,188,255,218,208,190,255,218,209,190,255,212,200,180,255,195,178,153,255, -177,156,128,255,172,149,122,255,184,162,131,255,184,162,131,255,180,157,127,255,176,152,123,255,172,148,121,255,169,144,118,255, -167,142,116,255,165,140,115,255,164,139,113,255,162,137,112,255,161,136,111,255,161,135,110,255,160,134,110,255,158,132,109,255, -156,130,106,255,152,126,103,255,144,118, 97,255,127, 99, 83,255,146,120,100,255,110, 96, 84,255, 60, 61, 61,255, 60, 60, 61,255, -128,116,100,255,191,169,136,255,191,169,137,255,192,170,138,255,193,170,138,255,192,170,137,255,190,168,136,255,187,164,133,255, -180,156,127,255,169,145,118,255,155,130,106,255,141,115, 94,255,131,103, 86,255,125, 96, 81,255,122, 93, 79,255,125, 97, 81,255, -131,104, 86,255,141,114, 94,255,149,123,101,255,157,132,108,255,164,139,113,255,170,146,119,255,175,152,123,255,180,156,127,255, -183,161,130,255,187,164,133,255,189,167,135,255,192,170,138,255,194,172,140,255,196,175,142,255,198,177,144,255,199,179,146,255, -200,181,148,255,202,183,151,255,203,184,152,255,204,185,155,255,205,187,156,255,206,188,158,255,206,188,159,255,207,190,161,255, -208,191,162,255,208,192,164,255,210,194,166,255,210,194,168,255,211,195,169,255,212,196,171,255,212,197,172,255,213,198,173,255, -213,199,175,255,214,200,177,255,215,202,179,255,216,203,180,255,217,204,182,255,218,205,184,255,218,207,186,255,219,208,188,255, -221,211,192,255,222,212,194,255,223,214,198,255,225,216,201,255,226,218,203,255,227,220,205,255,227,220,206,255,226,219,205,255, -224,216,201,255,220,210,192,255,214,203,181,255,207,191,165,255,198,180,149,255,191,172,143,255,187,167,137,255,187,167,135,255, -189,169,137,255,190,169,136,255,186,163,133,255,181,157,128,255,176,152,124,255,172,148,121,255,169,145,118,255,167,143,116,255, -166,142,115,255,165,140,114,255,164,139,113,255,163,138,112,255,163,137,112,255,162,136,111,255,161,135,111,255,160,134,110,255, -156,130,107,255,151,125,102,255,134,107, 89,255,145,118, 98,255,157,131,106,255,109, 95, 83,255, 60, 61, 61,255, 60, 60, 61,255, -132,121,104,255,200,178,144,255,200,178,145,255,201,181,147,255,202,181,148,255,202,182,149,255,200,180,147,255,196,175,142,255, -190,167,135,255,179,156,126,255,164,140,113,255,150,124,101,255,138,111, 91,255,131,104, 86,255,130,101, 85,255,132,105, 87,255, -140,113, 93,255,148,122,100,255,154,128,105,255,158,133,109,255,163,138,113,255,167,142,116,255,171,147,120,255,175,151,123,255, -179,155,126,255,182,160,130,255,185,163,132,255,188,167,135,255,191,170,138,255,193,172,139,255,195,175,142,255,198,177,144,255, -199,179,146,255,200,181,148,255,202,183,150,255,203,184,152,255,203,185,154,255,205,186,156,255,205,188,158,255,206,189,159,255, -207,190,161,255,207,191,163,255,208,192,164,255,209,193,166,255,210,194,168,255,210,195,169,255,212,196,171,255,211,197,172,255, -212,198,173,255,214,200,175,255,213,200,176,255,214,201,178,255,216,202,180,255,215,203,181,255,217,205,183,255,218,206,185,255, -218,207,188,255,220,210,191,255,221,211,193,255,222,213,196,255,224,215,199,255,224,216,200,255,225,217,202,255,225,217,202,255, -225,217,202,255,223,214,198,255,220,211,193,255,218,206,187,255,215,203,181,255,213,200,177,255,211,197,172,255,207,189,162,255, -200,180,147,255,192,169,138,255,184,162,131,255,178,155,125,255,175,150,122,255,171,147,120,255,169,144,117,255,167,143,116,255, -165,140,115,255,164,140,115,255,165,140,114,255,165,140,114,255,164,139,114,255,164,139,113,255,162,137,112,255,160,135,110,255, -156,130,106,255,142,115, 95,255,139,112, 93,255,156,131,108,255,155,129,105,255,108, 95, 83,255, 60, 61, 61,255, 60, 60, 60,255, -137,127,111,255,210,190,160,255,210,192,163,255,211,195,166,255,212,196,169,255,213,196,170,255,211,195,169,255,208,191,163,255, -201,182,151,255,191,169,138,255,177,154,124,255,160,137,112,255,147,122,100,255,141,114, 94,255,142,115, 95,255,147,121, 99,255, -153,127,104,255,157,132,107,255,159,135,110,255,160,135,110,255,161,136,111,255,163,137,112,255,165,141,115,255,168,144,118,255, -172,149,121,255,176,153,124,255,180,158,128,255,184,162,131,255,188,166,134,255,191,169,137,255,194,172,139,255,195,175,142,255, -198,176,143,255,199,179,146,255,200,181,148,255,202,182,150,255,203,184,152,255,203,185,154,255,205,186,156,255,205,188,158,255, -206,188,159,255,207,190,161,255,207,191,163,255,208,193,164,255,209,193,166,255,210,194,168,255,210,195,169,255,211,196,170,255, -211,197,172,255,212,198,173,255,213,199,175,255,213,200,176,255,214,201,177,255,215,202,179,255,215,203,180,255,216,204,182,255, -217,206,184,255,218,207,187,255,219,208,189,255,221,210,192,255,221,212,194,255,223,213,196,255,224,215,198,255,224,216,200,255, -226,218,203,255,227,219,205,255,227,220,206,255,227,221,206,255,227,220,205,255,225,216,200,255,220,208,188,255,211,196,170,255, -203,182,151,255,193,171,138,255,185,163,132,255,179,156,126,255,175,150,123,255,172,147,120,255,169,144,117,255,167,143,116,255, -166,142,116,255,166,141,115,255,166,141,115,255,166,141,115,255,166,141,115,255,165,140,114,255,164,139,113,255,160,135,111,255, -145,120, 98,255,138,113, 93,255,159,134,110,255,156,130,107,255,153,127,104,255,107, 94, 82,255, 60, 61, 61,255, 60, 60, 60,255, -142,135,122,255,219,206,183,255,220,207,186,255,222,210,190,255,222,211,192,255,222,211,193,255,221,210,191,255,218,206,185,255, -211,196,170,255,201,182,150,255,186,165,134,255,172,149,121,255,160,136,110,255,157,133,108,255,161,138,112,255,167,144,117,255, -169,146,119,255,168,144,117,255,165,141,115,255,161,136,111,255,158,133,109,255,157,132,108,255,159,133,109,255,162,136,112,255, -166,141,115,255,170,146,119,255,175,152,123,255,179,156,127,255,184,161,131,255,187,165,134,255,190,169,137,255,193,171,139,255, -195,174,142,255,198,177,144,255,199,179,146,255,200,180,148,255,202,182,150,255,203,183,152,255,203,185,154,255,205,187,156,255, -205,187,157,255,206,188,159,255,207,190,161,255,208,191,163,255,208,193,164,255,209,193,166,255,210,194,167,255,210,195,168,255, -211,196,170,255,211,196,171,255,212,198,173,255,213,198,174,255,213,199,175,255,214,200,177,255,214,201,177,255,215,202,179,255, -216,203,181,255,216,204,182,255,217,205,185,255,219,208,187,255,219,208,190,255,220,211,192,255,222,213,195,255,224,215,199,255, -225,217,202,255,226,219,205,255,228,222,208,255,230,224,211,255,230,225,213,255,229,223,209,255,226,216,200,255,219,206,184,255, -210,193,165,255,200,180,148,255,191,169,137,255,184,161,130,255,179,154,126,255,175,151,122,255,171,147,119,255,169,145,117,255, -168,143,117,255,167,143,116,255,167,142,116,255,167,142,116,255,167,143,116,255,167,142,116,255,163,139,113,255,151,125,103,255, -141,116, 96,255,158,132,108,255,157,131,108,255,154,128,105,255,151,125,103,255,106, 92, 81,255, 60, 61, 61,255, 60, 60, 60,255, -146,141,132,255,227,218,201,255,227,218,202,255,227,219,204,255,226,218,203,255,224,216,199,255,220,211,192,255,215,203,181,255, -207,192,165,255,197,178,147,255,185,164,133,255,177,155,126,255,176,154,125,255,181,159,130,255,187,165,134,255,188,166,135,255, -183,161,131,255,176,152,124,255,168,143,117,255,161,136,111,255,156,130,106,255,152,125,103,255,151,126,103,255,154,128,105,255, -157,132,108,255,162,138,112,255,168,144,117,255,173,150,122,255,179,156,127,255,183,161,130,255,187,165,134,255,190,169,137,255, -192,171,139,255,195,174,141,255,197,177,144,255,199,179,146,255,200,180,148,255,202,182,150,255,202,184,152,255,203,184,153,255, -204,186,155,255,205,187,158,255,205,188,159,255,207,190,161,255,207,190,162,255,208,191,163,255,208,193,165,255,209,193,166,255, -209,194,167,255,210,195,169,255,211,196,170,255,211,196,171,255,212,197,173,255,212,198,174,255,212,199,174,255,213,200,176,255, -213,200,177,255,215,201,178,255,215,203,181,255,216,204,183,255,218,207,186,255,219,208,188,255,220,210,192,255,222,213,195,255, -223,215,199,255,225,218,202,255,227,220,206,255,229,222,209,255,230,224,212,255,232,226,214,255,231,225,213,255,228,220,205,255, -221,209,189,255,213,197,169,255,203,182,150,255,193,171,138,255,186,163,132,255,180,157,127,255,176,152,124,255,172,148,120,255, -171,146,119,255,170,145,119,255,170,145,118,255,169,145,118,255,168,144,117,255,165,142,115,255,156,130,107,255,143,118, 99,255, -158,133,109,255,157,131,107,255,155,130,106,255,152,126,103,255,148,122,100,255,103, 89, 79,255, 61, 61, 61,255, 59, 60, 60,255, -147,142,134,255,225,216,200,255,222,212,195,255,219,208,189,255,215,203,182,255,211,197,171,255,205,188,160,255,199,179,149,255, -193,173,140,255,190,170,138,255,191,170,139,255,195,176,146,255,202,184,155,255,206,190,161,255,205,188,159,255,200,179,147,255, -189,167,135,255,179,154,126,255,168,143,117,255,159,133,108,255,151,125,103,255,146,120, 98,255,144,118, 97,255,146,119, 98,255, -149,124,101,255,154,129,105,255,160,135,111,255,167,143,116,255,173,149,121,255,178,155,126,255,183,160,130,255,187,165,133,255, -190,169,137,255,192,171,139,255,195,174,141,255,197,176,143,255,198,179,145,255,200,180,147,255,201,182,149,255,202,183,152,255, -202,184,153,255,204,185,155,255,205,187,157,255,205,188,159,255,206,189,160,255,207,190,162,255,207,191,163,255,208,192,164,255, -209,193,166,255,209,194,167,255,210,194,169,255,210,195,169,255,211,196,170,255,211,197,172,255,211,197,172,255,212,198,173,255, -212,198,173,255,213,199,175,255,214,200,177,255,215,201,178,255,215,203,181,255,217,205,184,255,218,207,186,255,219,209,190,255, -221,211,193,255,223,214,197,255,224,216,201,255,226,218,204,255,227,220,206,255,228,222,209,255,230,224,211,255,231,226,213,255, -230,223,210,255,225,215,198,255,218,204,181,255,208,189,160,255,198,177,145,255,190,168,136,255,184,161,130,255,179,156,126,255, -175,152,123,255,174,150,122,255,173,148,121,255,171,146,119,255,167,143,116,255,155,130,106,255,147,121,100,255,157,133,109,255, -158,133,108,255,156,130,107,255,153,127,104,255,148,123,101,255,141,115, 95,255, 95, 81, 73,255, 61, 61, 61,255, 60, 60, 60,255, -141,133,122,255,212,197,171,255,207,191,163,255,204,187,157,255,202,184,153,255,201,182,152,255,202,183,152,255,203,185,155,255, -205,190,163,255,210,196,171,255,215,201,179,255,217,205,184,255,217,205,183,255,215,200,177,255,208,191,162,255,199,178,146,255, -188,166,134,255,177,153,124,255,165,141,115,255,156,131,106,255,147,121, 99,255,140,114, 93,255,138,110, 91,255,137,111, 91,255, -141,114, 94,255,146,120, 98,255,152,127,104,255,160,135,110,255,166,142,116,255,172,149,121,255,178,155,126,255,183,160,130,255, -187,165,134,255,191,169,137,255,193,171,139,255,195,174,141,255,197,177,144,255,198,178,145,255,199,179,148,255,201,181,149,255, -202,182,150,255,202,183,153,255,204,185,154,255,204,186,156,255,205,188,158,255,206,188,159,255,206,189,160,255,207,190,162,255, -207,191,163,255,208,192,164,255,208,192,166,255,209,193,166,255,209,194,167,255,210,195,168,255,210,195,169,255,211,196,169,255, -211,196,171,255,211,197,171,255,211,197,173,255,213,199,174,255,213,200,176,255,215,201,179,255,215,203,180,255,216,205,183,255, -218,207,186,255,219,209,190,255,221,212,193,255,222,214,196,255,223,215,200,255,224,217,201,255,224,217,202,255,226,219,204,255, -229,222,209,255,231,225,212,255,230,222,207,255,223,212,194,255,215,200,175,255,206,188,157,255,198,176,144,255,190,168,136,255, -185,162,131,255,181,157,127,255,177,153,125,255,171,148,120,255,155,131,107,255,151,126,104,255,161,135,110,255,159,134,110,255, -158,132,108,255,154,129,105,255,150,125,103,255,145,118, 97,255,115, 90, 75,255, 38, 36, 35,255, 61, 61, 62,255, 60, 60, 60,255, -139,131,118,255,211,196,169,255,209,195,169,255,212,197,172,255,213,200,177,255,216,204,182,255,218,207,187,255,220,209,191,255, -221,211,193,255,222,211,192,255,220,208,189,255,217,204,182,255,214,199,173,255,209,191,161,255,202,182,149,255,193,172,139,255, -184,161,130,255,174,150,122,255,164,138,112,255,153,127,103,255,143,116, 96,255,135,107, 89,255,131,102, 85,255,130,102, 84,255, -133,105, 87,255,137,110, 91,255,144,117, 97,255,152,126,103,255,160,135,110,255,166,142,116,255,172,149,121,255,178,156,126,255, -183,161,131,255,187,165,134,255,191,169,137,255,193,172,139,255,195,174,141,255,197,177,144,255,198,178,145,255,199,179,147,255, -200,181,149,255,201,182,150,255,202,183,152,255,203,185,154,255,203,185,155,255,204,186,156,255,205,187,158,255,205,188,159,255, -206,189,160,255,207,190,162,255,207,190,162,255,207,191,163,255,208,192,164,255,208,192,165,255,208,193,166,255,208,193,166,255, -209,194,167,255,209,194,167,255,210,195,169,255,210,195,169,255,210,196,170,255,211,197,172,255,212,198,174,255,213,199,176,255, -214,202,179,255,215,204,181,255,217,205,185,255,219,208,188,255,219,210,191,255,220,211,193,255,221,211,194,255,220,211,194,255, -221,212,195,255,225,217,202,255,229,223,209,255,231,225,212,255,228,221,206,255,223,212,193,255,215,200,177,255,207,189,160,255, -199,178,146,255,190,168,136,255,180,157,127,255,161,138,112,255,153,128,106,255,163,137,112,255,161,135,110,255,159,134,110,255, -157,132,108,255,152,127,105,255,148,121,100,255,127,102, 85,255, 15, 12, 10,255, 28, 28, 28,255, 61, 61, 61,255, 60, 60, 60,255, -145,140,131,255,223,213,195,255,222,212,195,255,222,212,195,255,222,212,194,255,222,212,193,255,221,210,191,255,219,207,187,255, -218,204,182,255,215,200,175,255,212,196,168,255,209,190,160,255,204,184,152,255,200,179,145,255,194,172,140,255,187,165,134,255, -179,156,126,255,171,147,119,255,161,135,111,255,150,124,101,255,140,113, 93,255,131,103, 85,255,124, 96, 80,255,123, 94, 79,255, -125, 96, 81,255,129,101, 84,255,135,108, 89,255,143,117, 96,255,152,127,104,255,160,135,110,255,167,143,116,255,174,151,122,255, -179,156,127,255,184,162,131,255,188,166,135,255,191,170,137,255,193,172,139,255,195,174,141,255,196,176,143,255,198,178,145,255, -199,179,146,255,200,180,148,255,200,181,150,255,201,183,151,255,202,183,152,255,203,185,154,255,203,185,155,255,204,186,156,255, -205,188,157,255,205,188,158,255,205,188,159,255,206,189,160,255,206,190,161,255,206,190,162,255,207,191,162,255,207,191,162,255, -207,191,163,255,207,192,163,255,208,192,163,255,208,192,164,255,208,192,164,255,208,192,166,255,209,194,167,255,209,194,168,255, -210,196,170,255,211,197,173,255,213,200,176,255,214,202,180,255,215,203,182,255,216,204,184,255,217,206,186,255,217,205,186,255, -215,203,182,255,214,201,180,255,216,205,186,255,222,213,197,255,228,222,208,255,230,224,212,255,227,220,206,255,221,211,192,255, -211,196,171,255,194,174,142,255,170,148,120,255,161,137,113,255,166,141,115,255,163,138,113,255,162,137,111,255,160,135,110,255, -157,131,108,255,151,126,103,255,131,105, 87,255, 24, 19, 16,255, 0, 0, 0,255, 30, 29, 29,255, 62, 62, 62,255, 60, 60, 60,255, -147,142,133,255,225,214,197,255,221,210,191,255,219,207,186,255,217,204,181,255,215,201,176,255,213,198,171,255,210,193,165,255, -208,189,158,255,205,185,153,255,202,181,149,255,199,178,144,255,195,174,141,255,192,170,137,255,187,165,133,255,182,159,129,255, -177,153,124,255,169,144,118,255,159,133,109,255,147,121, 99,255,137,109, 90,255,127, 99, 82,255,120, 90, 77,255,117, 87, 74,255, -118, 89, 75,255,122, 93, 79,255,128, 99, 82,255,135,108, 89,255,145,118, 97,255,154,128,105,255,161,136,111,255,168,145,118,255, -175,152,123,255,180,157,128,255,185,163,132,255,188,167,135,255,191,170,138,255,193,172,139,255,194,173,141,255,196,176,143,255, -197,177,144,255,198,178,146,255,199,180,147,255,200,181,148,255,200,181,150,255,202,183,151,255,202,183,151,255,203,184,153,255, -204,185,154,255,204,186,155,255,204,187,156,255,204,187,156,255,204,187,157,255,204,188,157,255,205,188,158,255,205,188,158,255, -206,188,158,255,206,188,158,255,205,188,158,255,205,187,158,255,205,187,158,255,205,188,158,255,205,188,159,255,206,189,161,255, -207,190,162,255,208,192,164,255,208,193,167,255,210,195,169,255,210,196,172,255,211,198,174,255,212,199,175,255,212,198,174,255, -209,195,170,255,205,188,160,255,200,183,155,255,201,186,161,255,204,190,166,255,211,198,178,255,214,203,184,255,211,197,176,255, -195,176,148,255,179,157,128,255,173,149,121,255,170,146,119,255,167,143,116,255,165,140,114,255,163,138,112,255,161,135,110,255, -154,129,106,255,142,115, 95,255, 37, 30, 25,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -143,136,125,255,218,204,180,255,214,199,174,255,212,195,167,255,209,191,161,255,206,188,156,255,204,184,152,255,202,181,147,255, -198,177,144,255,197,174,141,255,195,173,140,255,192,170,138,255,190,167,136,255,186,164,133,255,183,160,130,255,180,156,127,255, -174,150,122,255,167,143,117,255,158,132,109,255,146,120, 98,255,135,107, 89,255,124, 96, 80,255,116, 87, 73,255,111, 81, 69,255, -111, 82, 70,255,115, 86, 73,255,120, 92, 77,255,127, 99, 83,255,137,110, 91,255,146,121, 99,255,156,131,107,255,164,140,114,255, -171,148,120,255,178,155,126,255,182,160,129,255,185,164,132,255,188,167,135,255,191,170,138,255,193,171,139,255,193,173,140,255, -196,175,142,255,196,176,143,255,197,177,144,255,198,179,146,255,199,180,147,255,199,180,148,255,200,181,148,255,201,182,150,255, -201,182,151,255,202,183,151,255,202,184,153,255,202,184,153,255,203,185,153,255,203,184,153,255,203,184,153,255,202,185,154,255, -203,185,154,255,203,184,154,255,202,184,153,255,202,183,152,255,202,183,152,255,202,183,152,255,202,184,152,255,202,184,153,255, -203,186,155,255,204,186,157,255,204,187,158,255,206,188,160,255,206,190,161,255,207,192,164,255,209,194,168,255,210,196,171,255, -212,198,175,255,213,200,178,255,215,203,180,255,216,205,183,255,218,208,188,255,218,206,185,255,213,197,173,255,204,185,154,255, -194,173,141,255,187,164,132,255,180,157,127,255,175,151,123,255,171,147,119,255,168,145,117,255,164,139,114,255,159,134,110,255, -145,119, 98,255, 40, 31, 26,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -139,131,116,255,212,193,164,255,207,188,157,255,204,184,152,255,202,181,147,255,199,177,144,255,197,175,142,255,194,172,140,255, -193,170,138,255,191,168,137,255,189,167,135,255,188,165,134,255,186,163,132,255,184,161,130,255,182,158,128,255,178,155,126,255, -174,150,122,255,167,143,117,255,158,133,109,255,146,119, 98,255,134,107, 88,255,123, 94, 79,255,113, 83, 71,255,107, 77, 66,255, -106, 77, 66,255,109, 80, 68,255,114, 85, 72,255,121, 92, 77,255,129,102, 85,255,140,114, 94,255,151,125,103,255,159,135,110,255, -168,144,117,255,174,151,123,255,179,157,127,255,182,160,130,255,185,164,132,255,188,166,135,255,190,169,137,255,192,170,139,255, -193,172,140,255,194,174,141,255,195,175,142,255,197,177,144,255,197,177,144,255,198,177,146,255,198,179,146,255,198,179,146,255, -199,180,147,255,200,181,148,255,200,181,149,255,201,182,150,255,200,182,149,255,201,182,149,255,201,182,150,255,201,181,149,255, -201,181,149,255,199,180,147,255,200,180,147,255,199,179,147,255,198,179,146,255,199,179,146,255,199,179,146,255,199,180,148,255, -200,180,148,255,200,182,149,255,200,182,150,255,201,183,152,255,202,184,153,255,204,187,157,255,207,190,162,255,210,196,170,255, -214,202,179,255,219,208,189,255,222,214,197,255,225,218,204,255,228,222,208,255,229,221,208,255,225,215,200,255,218,205,184,255, -209,192,164,255,199,179,146,255,190,168,136,255,182,160,129,255,178,154,125,255,173,149,121,255,166,142,116,255,143,120, 98,255, - 41, 33, 28,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -137,126,109,255,206,186,153,255,202,182,148,255,199,178,144,255,196,175,141,255,195,172,140,255,192,170,138,255,191,168,137,255, -190,167,136,255,188,165,134,255,187,165,134,255,186,163,132,255,185,162,131,255,184,161,129,255,181,158,128,255,178,155,126,255, -174,150,122,255,168,143,117,255,159,134,110,255,147,120, 99,255,134,107, 88,255,122, 94, 78,255,111, 81, 69,255,104, 74, 64,255, -101, 73, 63,255,104, 75, 65,255,109, 80, 68,255,116, 87, 74,255,124, 96, 81,255,135,108, 90,255,147,121,100,255,157,133,109,255, -166,142,116,255,172,149,120,255,176,153,124,255,180,157,128,255,182,161,130,255,184,162,132,255,187,165,133,255,189,168,136,255, -190,169,137,255,192,172,138,255,194,173,141,255,194,174,141,255,195,175,142,255,196,176,143,255,196,176,143,255,196,177,144,255, -197,177,144,255,197,177,145,255,198,178,146,255,198,179,146,255,199,179,146,255,198,179,146,255,198,178,145,255,198,178,145,255, -197,177,144,255,197,177,144,255,196,176,143,255,196,176,143,255,196,175,143,255,196,175,143,255,195,175,142,255,196,175,143,255, -196,176,143,255,196,176,143,255,196,176,143,255,197,177,144,255,198,178,145,255,200,180,148,255,202,184,153,255,206,190,162,255, -211,197,173,255,216,204,183,255,220,210,192,255,223,214,198,255,226,219,205,255,230,224,211,255,230,225,212,255,229,221,207,255, -223,212,194,255,214,199,175,255,203,184,154,255,194,172,140,255,184,162,131,255,175,153,124,255,157,133,109,255, 42, 34, 29,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -135,124,107,255,203,182,147,255,199,178,144,255,197,175,142,255,195,172,140,255,192,170,138,255,191,169,136,255,190,168,136,255, -188,166,134,255,187,165,133,255,187,164,133,255,186,163,132,255,185,162,131,255,184,161,131,255,182,159,129,255,179,156,126,255, -177,153,124,255,170,146,119,255,161,136,111,255,148,122,100,255,135,107, 89,255,122, 94, 78,255,110, 81, 69,255,102, 73, 63,255, - 98, 70, 61,255, 99, 71, 62,255,105, 76, 65,255,112, 83, 70,255,121, 92, 77,255,133,106, 88,255,147,121, 99,255,158,133,109,255, -165,142,115,255,171,147,120,255,174,151,122,255,176,154,124,255,178,156,126,255,180,158,128,255,183,161,130,255,185,164,133,255, -187,166,134,255,189,168,136,255,191,170,138,255,192,171,139,255,193,173,140,255,193,173,140,255,194,174,141,255,194,174,141,255, -194,174,141,255,195,175,142,255,195,175,142,255,196,176,143,255,196,175,143,255,195,175,142,255,195,175,142,255,194,174,141,255, -194,174,141,255,193,173,140,255,193,173,140,255,192,172,139,255,192,172,139,255,192,171,139,255,192,171,139,255,192,171,139,255, -191,171,138,255,191,170,138,255,191,170,138,255,191,170,138,255,192,172,139,255,193,173,141,255,196,176,144,255,200,182,149,255, -205,187,159,255,208,193,168,255,212,198,176,255,214,203,183,255,218,208,190,255,223,215,199,255,228,221,207,255,230,224,212,255, -230,224,210,255,225,215,200,255,217,204,183,255,205,188,159,255,189,168,137,255,152,130,106,255, 19, 16, 13,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -134,123,106,255,201,180,146,255,198,177,144,255,197,175,141,255,195,173,140,255,193,171,138,255,191,169,137,255,190,168,136,255, -189,167,135,255,188,166,134,255,188,166,134,255,187,164,133,255,187,164,133,255,185,162,132,255,184,161,131,255,182,159,129,255, -179,155,126,255,174,149,122,255,164,140,114,255,153,126,103,255,138,110, 91,255,124, 95, 80,255,111, 81, 69,255,101, 73, 63,255, - 96, 69, 61,255, 97, 71, 61,255,102, 75, 64,255,111, 82, 70,255,123, 94, 78,255,138,110, 91,255,153,127,104,255,162,138,113,255, -168,144,118,255,169,146,119,255,170,147,120,255,171,148,120,255,173,150,121,255,176,153,124,255,178,156,126,255,181,159,129,255, -183,163,131,255,186,165,134,255,188,167,135,255,190,169,137,255,190,169,137,255,192,170,139,255,191,171,138,255,191,171,138,255, -193,172,140,255,193,171,139,255,193,171,140,255,192,172,139,255,192,172,139,255,192,172,140,255,192,171,139,255,192,171,138,255, -191,170,138,255,190,169,137,255,190,169,137,255,190,169,137,255,189,168,137,255,188,167,136,255,188,167,136,255,187,166,135,255, -186,165,134,255,185,165,134,255,185,164,133,255,185,164,133,255,185,164,133,255,186,165,134,255,187,165,134,255,186,165,133,255, -182,161,131,255,178,157,128,255,176,156,131,255,175,155,130,255,178,159,135,255,186,169,147,255,196,181,161,255,208,197,179,255, -218,209,193,255,225,216,199,255,208,198,178,255,160,147,125,255, 87, 77, 63,255, 8, 7, 6,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -134,124,106,255,202,181,147,255,200,178,145,255,199,177,144,255,197,175,142,255,195,173,140,255,194,172,139,255,193,171,138,255, -192,170,138,255,191,168,136,255,190,168,136,255,190,167,136,255,190,167,136,255,189,166,135,255,188,166,134,255,186,164,132,255, -183,160,129,255,178,154,125,255,170,146,118,255,157,132,107,255,142,115, 95,255,128, 99, 82,255,114, 84, 72,255,103, 74, 64,255, - 97, 70, 61,255, 98, 71, 62,255,103, 75, 65,255,115, 86, 73,255,133,104, 86,255,153,129,105,255,167,143,116,255,171,148,120,255, -169,146,119,255,167,143,116,255,165,141,115,255,164,140,115,255,165,141,115,255,168,144,118,255,171,149,120,255,175,153,124,255, -180,157,128,255,182,161,131,255,185,164,133,255,186,165,134,255,188,167,135,255,189,168,136,255,189,168,136,255,189,168,136,255, -190,168,137,255,189,168,137,255,189,168,136,255,190,169,137,255,189,168,137,255,189,168,136,255,189,167,136,255,188,167,136,255, -188,167,135,255,187,166,135,255,186,165,134,255,186,164,133,255,186,164,133,255,185,164,132,255,184,162,132,255,183,161,131,255, -182,161,130,255,181,159,129,255,180,158,128,255,180,158,127,255,178,156,127,255,177,155,126,255,175,153,124,255,172,150,121,255, -169,146,118,255,167,143,117,255,164,141,115,255,163,140,114,255,161,138,112,255,160,136,111,255,158,134,110,255,152,127,106,255, -145,120,100,255,129,107, 92,255, 32, 28, 25,255, 8, 8, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -136,125,108,255,205,184,151,255,203,182,149,255,201,181,147,255,200,179,145,255,199,178,144,255,198,176,142,255,196,175,142,255, -196,174,141,255,195,173,140,255,194,172,140,255,194,172,140,255,194,173,140,255,194,172,139,255,193,171,139,255,192,169,138,255, -189,167,134,255,184,161,130,255,177,152,123,255,164,140,114,255,149,122,100,255,133,105, 87,255,119, 90, 76,255,107, 77, 66,255, -100, 72, 63,255,100, 73, 62,255,112, 83, 71,255,136,109, 90,255,166,143,117,255,181,160,130,255,182,160,129,255,176,153,124,255, -170,146,118,255,162,138,112,255,158,133,108,255,155,131,107,255,156,131,107,255,158,133,109,255,162,138,113,255,168,145,118,255, -173,151,122,255,178,155,127,255,181,160,129,255,183,161,130,255,183,163,132,255,185,163,132,255,185,164,133,255,186,165,134,255, -186,165,134,255,186,165,134,255,186,165,134,255,186,165,134,255,186,165,134,255,186,164,133,255,185,164,133,255,185,164,132,255, -184,163,132,255,184,162,132,255,184,162,131,255,183,161,130,255,182,161,130,255,181,159,129,255,180,158,128,255,180,157,128,255, -179,156,127,255,177,155,126,255,177,154,125,255,175,154,125,255,174,152,123,255,173,151,122,255,172,149,121,255,169,146,119,255, -168,145,118,255,166,143,117,255,165,141,115,255,163,140,114,255,162,138,113,255,158,133,110,255,153,129,105,255,141,116, 96,255, -101, 80, 67,255, 7, 5, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -138,129,112,255,209,191,159,255,207,188,157,255,206,187,155,255,206,186,153,255,204,184,152,255,204,183,150,255,203,182,148,255, -202,181,148,255,202,180,147,255,202,180,147,255,201,180,147,255,202,181,147,255,202,181,148,255,202,181,147,255,200,180,146,255, -198,177,143,255,193,171,139,255,186,163,132,255,174,150,122,255,158,133,108,255,141,114, 94,255,126, 98, 81,255,112, 83, 70,255, -101, 72, 62,255,131,107, 91,255,167,147,123,255,193,175,148,255,203,186,156,255,199,179,147,255,188,166,134,255,177,153,125,255, -166,142,115,255,156,131,107,255,149,123,101,255,145,118, 97,255,145,118, 97,255,146,120, 99,255,151,126,102,255,158,134,109,255, -165,142,116,255,172,148,121,255,176,153,124,255,178,156,126,255,180,158,128,255,181,159,129,255,182,160,130,255,182,161,130,255, -183,161,131,255,183,161,130,255,183,161,131,255,183,161,131,255,183,161,130,255,182,160,131,255,182,160,130,255,181,159,129,255, -181,159,129,255,180,158,128,255,180,158,128,255,179,157,129,255,179,157,127,255,178,156,127,255,178,155,126,255,176,154,125,255, -176,154,125,255,175,153,124,255,174,152,123,255,173,151,122,255,173,150,121,255,171,148,121,255,170,147,119,255,168,145,118,255, -166,143,117,255,165,141,115,255,164,140,114,255,162,139,113,255,158,134,110,255,154,129,106,255,135,111, 92,255, 57, 46, 38,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -141,133,120,255,216,200,174,255,214,198,172,255,213,197,170,255,213,196,169,255,212,195,167,255,211,193,165,255,210,192,163,255, -210,192,163,255,210,192,163,255,210,192,162,255,210,192,162,255,210,193,163,255,211,194,166,255,212,194,167,255,211,194,167,255, -209,192,163,255,206,188,157,255,200,180,147,255,189,166,135,255,172,148,120,255,153,128,105,255,135,108, 88,255,124, 96, 80,255, -178,162,142,255,213,199,177,255,216,204,183,255,214,200,176,255,209,191,163,255,199,178,145,255,186,164,132,255,173,149,121,255, -161,136,111,255,149,123,101,255,140,113, 93,255,134,106, 88,255,132,104, 87,255,134,107, 89,255,139,112, 92,255,146,120, 99,255, -155,130,107,255,163,139,113,255,169,146,118,255,172,150,122,255,175,153,124,255,177,155,126,255,178,156,127,255,179,157,128,255, -180,158,128,255,179,157,128,255,179,157,128,255,179,157,128,255,179,157,127,255,179,156,127,255,178,156,127,255,178,156,126,255, -178,155,126,255,178,155,126,255,177,155,126,255,177,155,125,255,177,154,125,255,176,154,125,255,175,153,124,255,174,153,124,255, -174,152,123,255,174,151,123,255,172,149,122,255,171,149,121,255,170,147,120,255,168,145,118,255,167,144,118,255,166,143,117,255, -164,141,115,255,163,140,114,255,162,138,112,255,158,133,110,255,154,128,105,255,117, 96, 78,255, 12, 10, 8,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -145,140,130,255,224,212,193,255,222,211,191,255,222,210,190,255,221,209,189,255,221,209,188,255,220,207,186,255,219,207,186,255, -219,206,185,255,219,207,186,255,219,207,186,255,220,208,187,255,221,209,188,255,221,210,191,255,222,212,192,255,223,212,194,255, -223,212,192,255,220,208,188,255,215,200,177,255,203,186,156,255,186,165,134,255,167,144,119,255,162,141,122,255,209,196,178,255, -222,210,190,255,216,203,180,255,213,197,171,255,208,190,160,255,201,181,148,255,193,170,138,255,181,158,129,255,169,145,118,255, -156,131,107,255,144,117, 96,255,132,104, 86,255,125, 96, 80,255,122, 94, 78,255,123, 95, 79,255,127, 98, 82,255,134,107, 88,255, -144,117, 96,255,153,129,105,255,161,137,111,255,166,143,117,255,171,148,120,255,173,151,122,255,174,152,123,255,175,153,125,255, -176,153,124,255,175,153,124,255,175,153,124,255,175,153,124,255,175,152,124,255,174,152,123,255,174,152,123,255,174,151,123,255, -174,152,123,255,174,152,123,255,174,152,123,255,174,151,123,255,174,151,123,255,174,151,123,255,173,150,122,255,173,150,122,255, -172,150,122,255,171,149,121,255,171,148,120,255,170,146,119,255,168,145,118,255,167,144,117,255,166,143,116,255,164,141,114,255, -162,138,114,255,161,137,112,255,158,133,109,255,138,115, 94,255, 66, 54, 45,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255, -149,145,138,255,232,224,211,255,230,223,210,255,229,223,209,255,230,223,208,255,229,223,208,255,229,222,208,255,229,221,207,255, -229,221,207,255,228,220,206,255,228,221,206,255,227,220,204,255,227,218,203,255,225,216,200,255,223,214,197,255,221,211,193,255, -218,209,191,255,217,205,186,255,212,199,178,255,208,193,169,255,204,188,163,255,206,192,169,255,218,204,181,255,214,198,172,255, -209,192,163,255,206,188,157,255,203,183,150,255,199,178,145,255,193,171,139,255,187,163,133,255,178,154,125,255,166,140,115,255, -151,126,103,255,139,111, 91,255,126, 97, 81,255,117, 88, 74,255,113, 83, 72,255,113, 84, 71,255,116, 88, 74,255,123, 94, 80,255, -133,105, 87,255,143,117, 96,255,153,128,104,255,161,136,111,255,165,142,115,255,169,145,118,255,170,147,120,255,170,147,120,255, -170,148,120,255,170,148,120,255,170,147,119,255,170,147,119,255,169,146,119,255,169,146,119,255,170,146,119,255,170,147,120,255, -171,148,120,255,171,148,121,255,172,149,122,255,173,150,122,255,172,150,122,255,172,149,121,255,172,149,121,255,171,148,121,255, -171,148,120,255,169,146,119,255,168,145,119,255,167,144,117,255,166,143,116,255,165,142,115,255,164,140,114,255,161,137,113,255, -160,135,111,255,149,125,103,255, 88, 74, 61,255, 23, 19, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -143,138,127,255,219,209,190,255,218,208,189,255,218,207,188,255,217,207,188,255,217,206,188,255,217,207,188,255,217,206,187,255, -217,206,187,255,216,205,186,255,216,205,185,255,216,204,186,255,217,205,186,255,219,208,190,255,220,209,192,255,222,211,194,255, -222,210,192,255,220,208,187,255,216,202,179,255,212,198,171,255,211,194,166,255,209,190,161,255,206,187,154,255,203,183,150,255, -201,181,147,255,199,177,144,255,196,174,141,255,192,171,138,255,188,165,134,255,182,159,129,255,175,151,122,255,163,138,112,255, -148,121,100,255,133,105, 88,255,120, 92, 77,255,111, 81, 69,255,104, 76, 65,255,104, 75, 65,255,108, 79, 67,255,114, 85, 72,255, -124, 96, 80,255,135,108, 89,255,146,120, 99,255,156,132,107,255,161,137,112,255,164,140,114,255,164,141,114,255,164,140,114,255, -164,140,114,255,164,140,114,255,164,140,114,255,164,140,114,255,164,141,114,255,164,141,114,255,165,142,116,255,167,143,117,255, -168,145,118,255,170,147,120,255,171,148,120,255,171,148,121,255,171,148,121,255,171,148,121,255,170,147,120,255,169,146,119,255, -169,146,119,255,168,145,118,255,166,143,117,255,165,142,116,255,164,141,115,255,161,137,113,255,160,136,111,255,157,133,109,255, -124,103, 84,255, 24, 20, 16,255, 2, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -144,140,131,255,222,213,196,255,221,212,195,255,221,212,195,255,222,212,195,255,223,214,197,255,224,215,199,255,224,216,200,255, -226,217,201,255,226,217,201,255,225,215,199,255,224,214,195,255,222,211,192,255,220,208,188,255,218,206,183,255,216,202,177,255, -214,198,172,255,211,194,166,255,208,189,159,255,205,185,153,255,203,182,149,255,201,180,146,255,199,178,145,255,198,176,143,255, -196,174,141,255,194,172,139,255,191,169,137,255,189,166,134,255,185,162,132,255,180,157,127,255,172,149,121,255,162,136,111,255, -146,119, 98,255,130,102, 85,255,117, 87, 74,255,106, 77, 66,255, 98, 71, 61,255, 96, 70, 61,255,100, 73, 63,255,108, 79, 67,255, -119, 90, 76,255,131,103, 86,255,145,118, 97,255,154,129,105,255,157,132,108,255,157,133,108,255,156,131,108,255,155,130,107,255, -154,129,106,255,154,129,106,255,155,129,106,255,156,131,107,255,157,132,108,255,159,135,110,255,162,138,113,255,165,142,116,255, -167,144,117,255,169,146,119,255,170,147,119,255,170,147,119,255,169,146,119,255,169,146,119,255,168,145,118,255,167,144,117,255, -167,144,117,255,165,142,116,255,163,140,115,255,162,138,114,255,161,137,112,255,156,132,107,255,126,106, 87,255, 53, 44, 36,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255, -149,145,137,255,230,223,209,255,228,221,207,255,228,221,206,255,227,219,204,255,226,217,201,255,225,215,198,255,223,213,195,255, -222,211,191,255,220,208,188,255,218,206,182,255,216,202,178,255,214,198,173,255,212,195,168,255,210,193,164,255,208,190,159,255, -206,187,155,255,204,184,151,255,202,182,148,255,199,179,145,255,198,176,143,255,196,175,142,255,195,173,140,255,194,172,140,255, -192,170,138,255,191,169,137,255,189,167,135,255,187,165,134,255,184,161,131,255,179,155,127,255,172,148,121,255,161,136,110,255, -145,118, 98,255,128,101, 84,255,114, 85, 72,255,103, 74, 64,255, 93, 68, 59,255, 90, 67, 58,255, 93, 69, 60,255,103, 75, 65,255, -118, 89, 76,255,137,110, 91,255,148,123,100,255,151,126,103,255,150,125,102,255,148,122,100,255,146,120, 98,255,144,118, 97,255, -143,117, 96,255,143,117, 97,255,145,119, 98,255,147,121, 99,255,151,126,104,255,158,133,109,255,162,139,113,255,166,142,116,255, -168,145,118,255,169,146,119,255,169,146,118,255,168,145,118,255,168,145,118,255,167,144,117,255,166,143,116,255,165,142,116,255, -164,141,115,255,161,138,113,255,162,138,113,255,158,134,109,255,113, 95, 79,255, 48, 41, 33,255, 6, 5, 4,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -146,141,131,255,225,214,195,255,223,213,193,255,223,212,192,255,222,211,191,255,221,208,188,255,219,207,185,255,218,204,181,255, -216,201,177,255,214,199,174,255,213,196,169,255,211,193,165,255,208,190,160,255,207,188,156,255,205,185,153,255,203,183,150,255, -202,181,148,255,200,179,145,255,198,177,143,255,197,175,142,255,196,174,141,255,195,173,140,255,193,171,139,255,192,171,138,255, -192,170,138,255,190,168,136,255,189,167,135,255,187,165,134,255,184,161,131,255,179,156,127,255,172,148,120,255,162,137,111,255, -146,119, 98,255,128,100, 84,255,113, 83, 71,255,100, 72, 63,255, 90, 67, 58,255, 86, 66, 57,255, 89, 67, 58,255,105, 77, 65,255, -134,106, 88,255,151,125,103,255,153,127,105,255,146,121, 99,255,141,114, 94,255,137,110, 91,255,134,106, 88,255,132,104, 87,255, -131,104, 86,255,132,104, 86,255,135,107, 89,255,142,116, 95,255,152,128,105,255,161,137,111,255,166,143,116,255,168,144,118,255, -168,145,118,255,167,144,118,255,168,145,118,255,167,144,117,255,166,143,116,255,165,142,116,255,164,141,115,255,161,138,113,255, -161,137,112,255,160,136,111,255,130,110, 90,255, 30, 25, 21,255, 2, 2, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -144,137,126,255,221,208,186,255,220,206,185,255,219,205,184,255,218,204,181,255,218,203,180,255,216,201,176,255,214,199,172,255, -213,196,169,255,211,193,165,255,209,192,162,255,208,189,158,255,206,187,154,255,204,184,151,255,203,182,148,255,201,180,146,255, -199,178,144,255,198,176,143,255,196,175,141,255,195,173,140,255,194,172,139,255,194,172,140,255,194,172,140,255,193,171,139,255, -192,170,138,255,191,169,137,255,190,168,136,255,188,165,134,255,186,163,132,255,181,158,128,255,174,150,122,255,163,138,113,255, -148,121, 99,255,129,101, 84,255,113, 83, 71,255, 99, 72, 62,255, 89, 67, 58,255, 84, 65, 56,255,100, 77, 66,255,140,115, 95,255, -163,140,114,255,162,138,112,255,152,127,104,255,141,114, 94,255,131,103, 86,255,125, 97, 81,255,122, 94, 78,255,120, 92, 77,255, -119, 90, 76,255,120, 92, 77,255,135,108, 90,255,153,129,105,255,163,140,114,255,167,144,117,255,168,145,118,255,167,145,117,255, -167,144,118,255,167,144,117,255,166,143,116,255,165,142,115,255,164,141,115,255,164,140,114,255,160,136,111,255,142,121, 99,255, -106, 89, 73,255, 36, 30, 24,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -143,137,126,255,220,207,185,255,218,205,182,255,217,204,180,255,216,202,178,255,216,201,176,255,215,199,174,255,213,197,170,255, -212,195,167,255,210,193,164,255,208,190,160,255,207,188,156,255,206,186,153,255,204,183,150,255,203,182,148,255,201,180,146,255, -199,178,144,255,198,177,143,255,196,175,141,255,196,174,141,255,196,174,141,255,196,174,141,255,196,174,141,255,195,173,140,255, -194,172,140,255,194,172,139,255,192,170,138,255,191,169,137,255,188,166,134,255,185,162,131,255,177,154,125,255,167,143,116,255, -151,125,103,255,132,103, 86,255,114, 85, 72,255,100, 73, 63,255, 88, 66, 57,255,100, 79, 68,255,171,149,124,255,186,166,134,255, -178,156,126,255,164,140,114,255,148,123,101,255,134,107, 88,255,122, 94, 79,255,115, 86, 73,255,112, 83, 70,255,108, 79, 68,255, -107, 79, 67,255,150,127,105,255,166,143,116,255,170,148,120,255,171,148,121,255,170,146,120,255,168,145,118,255,168,144,117,255, -167,143,117,255,165,141,116,255,165,141,116,255,165,141,115,255,161,137,112,255,121,103, 84,255, 58, 50, 40,255, 23, 19, 16,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -145,138,128,255,222,210,190,255,220,207,186,255,219,206,184,255,219,204,182,255,217,202,179,255,216,201,177,255,215,200,174,255, -213,198,171,255,212,195,167,255,211,194,165,255,209,191,161,255,208,189,157,255,205,186,154,255,204,184,151,255,203,182,149,255, -201,180,146,255,200,179,145,255,199,178,144,255,198,176,143,255,198,176,143,255,198,176,143,255,198,176,143,255,198,176,143,255, -198,176,144,255,197,175,142,255,197,175,142,255,196,174,141,255,193,171,138,255,189,167,135,255,183,160,129,255,172,149,120,255, -157,131,107,255,137,109, 89,255,117, 88, 74,255,101, 73, 63,255, 98, 76, 66,255,203,188,164,255,208,190,162,255,196,175,142,255, -180,158,127,255,163,137,112,255,145,119, 97,255,129,101, 84,255,114, 85, 73,255,106, 77, 66,255,100, 73, 63,255, 97, 72, 62,255, -169,147,120,255,181,159,129,255,177,155,126,255,174,152,123,255,172,150,122,255,170,147,120,255,168,145,118,255,166,143,117,255, -166,142,116,255,164,141,115,255,152,129,106,255, 89, 76, 62,255, 14, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255, -147,142,133,255,226,216,198,255,223,213,195,255,223,211,192,255,221,210,189,255,220,208,186,255,219,206,184,255,218,205,182,255, -217,203,179,255,216,201,176,255,214,199,173,255,213,197,169,255,211,195,166,255,210,192,162,255,208,190,159,255,207,188,155,255, -206,186,153,255,204,184,151,255,203,183,150,255,202,181,148,255,202,181,148,255,202,182,148,255,203,183,150,255,204,183,151,255, -204,183,151,255,203,183,150,255,203,182,149,255,202,181,147,255,200,179,145,255,196,175,142,255,190,168,135,255,179,156,127,255, -164,139,113,255,143,116, 96,255,121, 93, 77,255,110, 83, 71,255,199,184,164,255,215,199,173,255,206,187,157,255,195,174,141,255, -180,158,128,255,162,137,112,255,143,116, 96,255,124, 96, 81,255,109, 80, 68,255, 97, 71, 62,255, 90, 69, 59,255,156,136,111,255, -185,164,133,255,181,158,129,255,179,156,127,255,176,153,125,255,173,150,122,255,170,146,119,255,151,130,106,255,132,114, 92,255, - 98, 83, 69,255, 44, 37, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255, -149,146,139,255,231,223,210,255,229,220,207,255,228,219,204,255,226,218,202,255,225,216,199,255,225,214,196,255,223,213,194,255, -222,211,192,255,221,210,189,255,220,207,186,255,218,206,183,255,217,203,180,255,216,201,176,255,214,199,172,255,212,196,168,255, -211,194,165,255,210,193,164,255,209,191,161,255,208,190,159,255,208,189,158,255,208,190,160,255,210,192,163,255,211,193,165,255, -211,194,165,255,211,194,165,255,210,193,164,255,210,193,163,255,209,191,161,255,206,188,157,255,201,181,148,255,190,168,136,255, -174,151,122,255,151,126,102,255,131,104, 87,255,187,169,147,255,213,197,170,255,208,191,162,255,204,184,152,255,196,175,141,255, -183,160,129,255,164,138,113,255,142,115, 95,255,122, 94, 79,255,106, 77, 66,255, 92, 69, 59,255,116, 97, 81,255,186,164,133,255, -183,161,131,255,181,159,129,255,168,146,119,255,130,112, 91,255, 90, 78, 64,255, 50, 43, 35,255, 25, 21, 18,255, 7, 6, 5,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255, -148,145,138,255,232,226,212,255,230,225,212,255,232,226,213,255,232,225,213,255,230,224,211,255,230,223,209,255,230,222,208,255, -229,221,206,255,228,220,204,255,227,218,202,255,226,216,199,255,225,214,197,255,224,213,194,255,222,210,191,255,221,208,187,255, -220,207,185,255,218,204,182,255,217,203,180,255,217,202,178,255,215,202,177,255,216,202,178,255,218,204,182,255,219,206,185,255, -220,207,187,255,221,209,188,255,221,209,189,255,221,209,188,255,219,208,188,255,218,205,183,255,213,198,173,255,202,183,154,255, -181,159,129,255,162,140,117,255,204,188,163,255,212,196,168,255,210,193,163,255,207,189,159,255,204,184,152,255,197,176,143,255, -186,163,133,255,168,144,116,255,144,117, 97,255,123, 95, 79,255,105, 76, 65,255, 90, 69, 59,255,143,126,103,255,108, 95, 77,255, - 78, 68, 55,255, 22, 19, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255, -116,113,107,255,207,200,187,255,227,220,205,255,226,219,204,255,226,219,205,255,227,220,206,255,228,221,208,255,228,221,207,255, -228,221,208,255,228,221,208,255,229,222,209,255,229,223,209,255,229,222,209,255,229,222,209,255,229,222,207,255,229,221,207,255, -228,220,205,255,227,219,204,255,227,218,202,255,226,217,201,255,225,216,198,255,224,215,198,255,224,215,198,255,224,215,199,255, -224,215,199,255,224,216,200,255,224,216,200,255,224,215,199,255,222,213,196,255,219,208,189,255,213,200,177,255,204,188,162,255, -203,187,161,255,215,200,174,255,213,197,170,255,211,194,166,255,210,192,163,255,208,191,161,255,206,187,155,255,201,180,147,255, -191,169,137,255,174,150,122,255,149,123,101,255,126, 97, 81,255,103, 76, 65,255, 31, 24, 21,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, - 31, 31, 31,255, 34, 33, 31,255,103,100, 94,255,212,206,193,255,232,226,213,255,233,226,214,255,229,223,211,255,228,222,210,255, -229,222,210,255,229,222,209,255,228,221,208,255,227,221,207,255,227,220,206,255,226,219,205,255,226,218,204,255,225,218,204,255, -225,217,202,255,225,216,201,255,224,215,201,255,223,214,199,255,222,213,197,255,220,211,194,255,220,210,193,255,222,212,195,255, -223,213,198,255,224,215,198,255,223,214,197,255,223,213,195,255,221,211,191,255,220,208,188,255,219,206,185,255,219,205,183,255, -217,204,180,255,215,201,176,255,215,199,174,255,214,198,172,255,212,197,171,255,212,196,169,255,210,193,165,255,206,188,158,255, -199,178,146,255,183,160,130,255,157,132,108,255,129,101, 84,255, 55, 41, 35,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 53, 51, 47,255,152,147,138,255,222,216,203,255,227,221,210,255, -230,224,212,255,231,225,213,255,232,225,213,255,230,226,214,255,231,225,213,255,231,225,213,255,231,225,212,255,230,223,211,255, -230,224,211,255,230,223,210,255,230,223,210,255,230,223,209,255,229,222,208,255,229,222,208,255,229,221,207,255,228,220,206,255, -228,220,205,255,227,218,204,255,227,218,202,255,226,216,200,255,226,216,199,255,224,214,196,255,223,213,194,255,222,211,192,255, -221,209,189,255,220,208,187,255,220,207,186,255,219,206,185,255,219,206,184,255,218,205,183,255,217,204,182,255,214,199,176,255, -207,190,163,255,193,172,140,255,165,141,115,255, 86, 70, 59,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 53, 52, 48,255, - 94, 91, 85,255,143,139,130,255,165,161,151,255,191,184,173,255,206,200,186,255,222,216,203,255,229,222,209,255,231,224,210,255, -230,224,210,255,230,224,210,255,230,224,210,255,230,224,211,255,231,224,210,255,231,224,211,255,231,224,210,255,230,224,210,255, -230,224,209,255,230,223,209,255,231,223,209,255,230,222,208,255,230,222,208,255,230,222,207,255,229,221,206,255,229,221,205,255, -228,220,204,255,227,218,202,255,226,217,201,255,225,216,199,255,225,216,198,255,223,213,195,255,216,205,187,255,200,189,169,255, -172,159,138,255,126,114, 93,255, 45, 39, 32,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 7, 6, 5,255, 21, 20, 18,255, 29, 28, 26,255, 43, 41, 38,255, 54, 52, 48,255, 72, 69, 64,255, - 90, 86, 80,255,115,109,101,255,129,124,114,255,144,139,127,255,151,145,133,255,157,150,139,255,159,152,140,255,165,158,147,255, -168,162,150,255,168,162,150,255,169,163,150,255,169,162,150,255,169,163,150,255,169,162,150,255,169,163,150,255,158,151,139,255, -155,148,137,255,148,141,131,255,134,128,117,255,118,112,102,255, 89, 85, 76,255, 60, 57, 52,255, 44, 42, 37,255, 31, 29, 26,255, - 17, 15, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, - 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, - 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0, -156, 1, 0, 0,168,217,100, 7, 31, 0, 0, 0, 1, 0, 0, 0, 0,125,101, 7, 80, 54,100, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 73, 77, 46,105, 46,115,109,111,111,116,104, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46,115,109,111,111, -116,104, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,219,100, 7, 0, 0, 0, 0, 82, 72, 42, 0, 0, 0, 0, 4, - 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,168,219,100, 7, 19, 0, 0, 0, 1, 0, 0, 0, - 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 48,220,100, 7,152,236,100, 7, - 68, 65, 84, 65, 0, 16, 0, 0, 48,220,100, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0,152,236,100, 7, - 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 60,255, 60, 60, 60,255, 59, 60, 60,255, 59, 60, 60,255, 59, 60, 60,255, 59, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 61,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 61, 61,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 62, 62,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 61, 61,255, 61, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 60, 61, 61,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 60,255, 60, 60, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 60, 61,255, 60, 60, 60,255, 60, 60, 61,255, 60, 60, 61,255, 61, 61, 61,255, - 61, 62, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 61,255, 61, 61, 62,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 62,255, 61, 62, 62,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 61, 62,255, 61, 61, 62,255, - 61, 61, 61,255, 62, 62, 62,255, 61, 61, 61,255, 94, 88, 80,255,125,113, 98,255,125,113, 97,255,124,112, 97,255,124,112, 97,255, -124,112, 96,255,124,112, 96,255,124,111, 96,255,123,111, 96,255,123,111, 96,255,123,111, 95,255,123,110, 95,255,122,110, 95,255, -122,110, 95,255,122,109, 94,255,121,109, 94,255,121,109, 94,255,121,109, 94,255,122,109, 95,255,124,112, 96,255,130,118,102,255, -137,128,112,255,141,133,121,255,148,145,138,255,149,146,139,255,149,146,139,255,148,145,138,255,144,140,132,255,143,139,131,255, -140,134,124,255,132,124,112,255,126,119,110,255,132,124,112,255,135,127,113,255,119,107, 92,255,142,136,126,255,144,138,128,255, -105, 92, 80,255, 68, 59, 56,255, 60, 55, 53,255, 62, 56, 53,255, 72, 64, 59,255, 70, 66, 60,255, 64, 60, 56,255, 74, 68, 63,255, - 76, 71, 66,255, 67, 64, 59,255, 62, 56, 53,255, 66, 58, 55,255, 80, 68, 63,255, 99, 88, 78,255,112,100, 88,255,113,100, 88,255, - 86, 74, 67,255, 70, 64, 60,255, 97, 82, 73,255,103, 89, 78,255,111, 97, 85,255,134,124,109,255,146,142,133,255,142,136,126,255, -119,108, 93,255,127,116,100,255,137,128,112,255,130,119,103,255, 94, 80, 72,255, 83, 68, 63,255, 93, 78, 70,255, 97, 83, 74,255, - 98, 84, 74,255,107, 93, 82,255,115,102, 89,255,126,114, 99,255,134,124,108,255,129,118,101,255,124,112, 96,255, 86, 75, 68,255, - 69, 60, 56,255, 81, 66, 61,255, 78, 64, 60,255, 79, 66, 60,255, 85, 71, 64,255, 81, 67, 62,255, 84, 71, 65,255,103, 89, 79,255, - 98, 83, 73,255, 73, 62, 59,255, 61, 55, 52,255, 67, 62, 60,255, 64, 58, 54,255, 70, 60, 57,255, 73, 62, 57,255, 74, 62, 58,255, - 74, 67, 63,255, 61, 61, 61,255, 60, 60, 61,255,126,114, 98,255,186,163,132,255,185,162,131,255,184,161,131,255,184,161,130,255, -183,160,130,255,183,160,129,255,182,159,129,255,182,158,129,255,181,158,128,255,181,158,128,255,181,157,128,255,180,157,127,255, -180,156,127,255,179,155,126,255,178,154,125,255,178,154,125,255,178,154,125,255,179,155,126,255,183,159,128,255,190,168,136,255, -208,189,158,255,220,207,186,255,229,223,209,255,233,227,214,255,232,227,214,255,232,226,214,255,229,222,208,255,230,223,209,255, -230,222,208,255,222,210,190,255,218,208,192,255,222,213,197,255,219,209,192,255,191,170,140,255,213,199,177,255,230,224,210,255, -188,170,145,255,123, 97, 80,255, 91, 68, 59,255, 76, 60, 53,255, 81, 73, 65,255, 83, 77, 70,255, 70, 65, 57,255, 68, 61, 53,255, - 73, 67, 58,255, 66, 60, 53,255, 62, 53, 47,255, 71, 59, 51,255,117, 91, 76,255,176,152,123,255,205,188,160,255,192,172,146,255, -137,110, 89,255,110,101, 96,255,114, 87, 72,255,138,111, 91,255,144,117, 96,255,189,168,139,255,216,201,178,255,205,189,161,255, -172,148,120,255,183,159,130,255,199,178,145,255,191,170,138,255,132,105, 86,255, 86, 61, 54,255,102, 76, 64,255,115, 87, 73,255, -113, 88, 74,255,111, 91, 77,255,120,100, 84,255,158,133,110,255,194,172,140,255,185,162,131,255,164,140,114,255,112, 85, 72,255, - 72, 56, 49,255, 65, 52, 47,255, 75, 56, 50,255, 94, 70, 61,255, 85, 66, 56,255, 78, 60, 52,255,112, 84, 71,255,136,108, 89,255, -147,120, 99,255,122, 97, 81,255, 85, 70, 60,255, 80, 71, 65,255, 75, 68, 64,255, 74, 59, 53,255, 85, 61, 52,255, 75, 57, 50,255, - 74, 65, 60,255, 61, 61, 62,255, 60, 60, 61,255,126,114, 98,255,187,164,132,255,185,163,132,255,185,162,131,255,185,162,131,255, -184,161,131,255,183,160,130,255,183,160,130,255,182,159,129,255,182,159,129,255,182,159,129,255,181,158,128,255,181,158,128,255, -181,157,128,255,179,156,127,255,179,156,126,255,179,155,126,255,178,155,126,255,178,155,125,255,181,157,128,255,186,162,132,255, -200,179,146,255,217,203,179,255,228,219,204,255,231,225,212,255,231,225,213,255,229,222,208,255,224,214,196,255,220,209,188,255, -215,201,176,255,208,190,161,255,215,200,176,255,228,219,204,255,229,222,209,255,210,195,170,255,214,202,180,255,230,223,211,255, -201,185,160,255,172,150,121,255,166,142,115,255,112, 93, 82,255,102, 90, 83,255,111, 94, 87,255,106, 86, 75,255, 91, 71, 61,255, - 99, 76, 66,255, 99, 75, 65,255, 79, 65, 56,255, 71, 61, 53,255,103, 79, 67,255,169,145,118,255,209,193,167,255,184,164,135,255, -134,105, 88,255, 87, 71, 62,255, 97, 73, 63,255,115, 90, 75,255,116, 88, 74,255,151,125,102,255,177,153,124,255,172,147,119,255, -161,136,110,255,177,154,124,255,187,165,133,255,180,156,127,255,139,113, 93,255, 78, 60, 53,255, 72, 58, 51,255, 80, 65, 56,255, -101, 82, 70,255,115, 95, 82,255,106, 88, 75,255, 94, 74, 63,255,162,137,111,255,171,146,119,255,144,118, 97,255,140,114, 94,255, -137,111, 91,255, 92, 72, 62,255, 66, 52, 46,255, 83, 63, 55,255, 97, 75, 64,255, 85, 75, 69,255,106, 80, 67,255,126, 97, 81,255, -163,138,112,255,169,144,117,255,164,138,112,255,155,130,106,255,146,121,100,255,126,107, 92,255, 94, 81, 75,255, 73, 63, 56,255, - 69, 65, 59,255, 61, 61, 62,255, 60, 60, 61,255,126,114, 98,255,188,164,133,255,186,163,132,255,185,163,132,255,185,162,131,255, -184,161,131,255,184,161,131,255,184,161,130,255,183,160,130,255,183,159,129,255,182,159,129,255,182,158,128,255,181,158,128,255, -181,158,128,255,180,157,127,255,180,156,127,255,179,156,126,255,179,155,126,255,179,155,126,255,180,157,128,255,183,160,130,255, -192,170,138,255,208,190,160,255,221,209,187,255,227,218,202,255,228,219,204,255,225,216,198,255,217,203,178,255,206,188,157,255, -195,174,142,255,197,175,142,255,204,184,152,255,212,197,171,255,219,207,186,255,211,197,172,255,215,203,181,255,227,219,204,255, -185,165,139,255,144,121,101,255,125,110, 96,255, 98, 87, 81,255, 99, 87, 81,255,110, 91, 80,255,121, 94, 79,255,113, 83, 70,255, -124, 95, 79,255,144,117, 96,255,109, 87, 73,255, 71, 62, 53,255, 82, 65, 55,255,151,125,103,255,185,163,133,255,161,137,112,255, -130,102, 85,255,110, 83, 70,255, 97, 74, 64,255, 94, 75, 64,255, 72, 56, 49,255,116, 90, 76,255,149,123,101,255,145,118, 97,255, -147,121, 99,255,175,151,122,255,187,165,133,255,187,165,133,255,169,145,118,255,126,105, 87,255, 78, 64, 55,255, 68, 57, 50,255, - 90, 72, 61,255,137,111, 92,255,155,130,105,255,121, 94, 79,255,166,141,115,255,157,132,108,255,148,123,101,255,189,169,142,255, -200,182,154,255,169,145,119,255,119, 94, 78,255, 90, 70, 60,255,104, 82, 69,255,100, 80, 68,255, 91, 72, 63,255,107, 82, 70,255, -141,115, 95,255,149,125,103,255,144,122,101,255,136,115, 96,255,131,110, 92,255,127,107, 91,255,110, 88, 75,255, 79, 64, 55,255, - 77, 70, 66,255, 61, 61, 61,255, 60, 60, 61,255,127,115, 99,255,188,165,134,255,187,164,133,255,186,164,132,255,186,163,132,255, -185,162,132,255,185,162,131,255,185,162,131,255,184,161,130,255,184,161,130,255,183,160,130,255,183,159,129,255,182,159,129,255, -181,158,128,255,181,158,128,255,181,157,128,255,180,156,127,255,179,156,127,255,179,155,126,255,180,157,127,255,181,158,128,255, -186,163,132,255,197,176,143,255,210,192,163,255,219,206,184,255,223,212,194,255,222,210,191,255,211,195,167,255,196,175,141,255, -189,167,135,255,195,173,141,255,199,178,144,255,200,180,147,255,203,183,152,255,193,173,141,255,200,184,157,255,216,204,182,255, -162,140,117,255,106, 91, 83,255,102, 90, 83,255,114, 96, 87,255,116, 97, 86,255, 96, 77, 66,255, 85, 63, 55,255, 83, 64, 56,255, - 99, 74, 63,255,158,133,108,255,133,107, 89,255, 81, 63, 55,255, 79, 62, 54,255,129,102, 85,255,159,134,110,255,135,108, 89,255, -128,100, 83,255,125, 97, 81,255,121, 94, 79,255,124, 98, 82,255, 69, 55, 48,255, 86, 66, 57,255,137,109, 91,255,131,104, 85,255, -126, 98, 82,255,166,142,115,255,198,177,146,255,213,198,172,255,213,199,174,255,209,192,167,255,170,148,123,255,106, 83, 70,255, - 89, 67, 57,255,120, 92, 77,255,123, 96, 80,255,134,108, 89,255,174,150,122,255,117, 90, 76,255,166,142,117,255,212,197,173,255, -215,202,180,255,189,168,139,255,179,157,128,255,181,161,133,255,166,142,116,255,154,129,106,255,137,113, 94,255,114, 92, 78,255, - 94, 79, 70,255, 93, 82, 74,255, 98, 85, 78,255, 95, 82, 74,255, 93, 82, 72,255, 98, 85, 77,255, 90, 78, 69,255, 84, 71, 63,255, - 90, 83, 77,255, 61, 61, 61,255, 60, 60, 61,255,128,116,100,255,190,167,135,255,188,166,134,255,188,165,134,255,187,165,134,255, -187,164,133,255,186,164,133,255,186,163,132,255,185,163,132,255,185,162,132,255,185,162,131,255,184,161,131,255,184,160,130,255, -183,160,130,255,183,159,129,255,182,159,129,255,182,158,129,255,181,157,128,255,181,157,128,255,180,157,127,255,181,158,128,255, -183,160,129,255,189,166,135,255,199,178,145,255,210,192,163,255,218,205,182,255,221,210,190,255,212,196,169,255,195,172,140,255, -191,169,137,255,198,177,143,255,199,177,144,255,196,174,141,255,194,172,139,255,180,158,127,255,192,173,145,255,209,193,166,255, -160,137,114,255,143,120,103,255,158,135,113,255,163,139,117,255,168,144,119,255,134,108, 89,255, 84, 62, 54,255, 68, 58, 50,255, - 81, 70, 62,255,140,115, 95,255,142,115, 95,255,112, 85, 72,255,104, 77, 67,255,139,113, 94,255,154,128,104,255,128,100, 83,255, -129,101, 83,255,135,109, 90,255,123, 98, 81,255,123, 98, 82,255, 89, 70, 60,255, 63, 50, 45,255,115, 89, 75,255,135,107, 89,255, -118, 89, 75,255,148,122,100,255,194,172,142,255,219,205,183,255,226,217,200,255,228,219,204,255,222,210,189,255,188,166,139,255, -135,109, 89,255,132,104, 86,255,113, 86, 73,255,137,112, 93,255,170,146,118,255,101, 77, 67,255,165,141,115,255,199,180,151,255, -192,173,144,255,181,160,131,255,214,200,178,255,218,204,181,255,203,183,151,255,190,167,136,255,179,156,128,255,172,148,123,255, -163,140,118,255,148,127,107,255,139,123,107,255,139,120,105,255,136,114,100,255,128,106, 92,255,116, 91, 76,255,119,103, 95,255, -122,110, 95,255, 60, 60, 61,255, 60, 60, 61,255,128,116,100,255,190,168,136,255,189,167,135,255,189,166,135,255,188,166,134,255, -188,165,134,255,187,165,133,255,187,164,133,255,186,164,132,255,186,163,132,255,186,163,132,255,185,162,131,255,184,161,131,255, -184,161,130,255,183,160,130,255,183,160,130,255,182,159,129,255,182,159,129,255,181,158,128,255,181,157,128,255,180,157,127,255, -181,158,128,255,184,161,130,255,190,167,135,255,199,178,145,255,211,194,166,255,221,209,188,255,218,206,185,255,201,181,150,255, -201,181,148,255,206,187,156,255,202,182,150,255,195,174,141,255,191,169,137,255,181,158,128,255,194,173,142,255,197,176,144,255, -175,151,122,255,185,163,133,255,208,190,160,255,206,189,161,255,205,187,157,255,166,142,116,255, 92, 70, 60,255, 72, 60, 52,255, - 74, 64, 56,255,100, 77, 65,255,125, 96, 80,255,129,101, 84,255,129,101, 84,255,164,140,114,255,159,134,109,255,148,122,100,255, -174,150,122,255,191,170,139,255,175,152,123,255,167,144,117,255,149,125,102,255, 83, 65, 57,255,104, 80, 67,255,143,116, 96,255, -125, 97, 81,255,122, 93, 78,255,163,138,113,255,206,188,160,255,224,214,196,255,229,223,208,255,230,223,210,255,219,209,188,255, -180,157,128,255,156,131,107,255,120, 93, 78,255,120, 93, 78,255,135,109, 90,255, 94, 76, 68,255,144,117, 96,255,155,129,105,255, -148,122,100,255,193,173,143,255,214,200,174,255,216,201,177,255,217,203,179,255,218,206,184,255,220,208,187,255,222,211,193,255, -225,216,198,255,227,218,201,255,227,217,200,255,219,208,189,255,201,187,167,255,174,157,136,255,130,110, 92,255,126,110, 96,255, -137,127,110,255, 60, 60, 60,255, 60, 60, 61,255,129,117,100,255,192,169,137,255,190,168,136,255,190,167,135,255,189,167,135,255, -189,166,135,255,188,166,134,255,188,165,134,255,187,164,133,255,187,164,133,255,186,164,132,255,186,163,132,255,185,163,132,255, -185,162,131,255,184,161,131,255,185,162,130,255,183,160,130,255,183,160,129,255,182,159,129,255,181,158,128,255,181,158,128,255, -181,157,128,255,183,159,129,255,184,162,131,255,189,168,136,255,200,180,147,255,214,199,174,255,224,215,198,255,214,201,179,255, -210,194,168,255,220,208,187,255,211,195,170,255,197,176,144,255,189,167,136,255,189,168,135,255,198,178,145,255,202,183,150,255, -190,169,139,255,204,187,162,255,224,215,198,255,223,214,196,255,226,218,202,255,215,203,182,255,138,113, 93,255, 80, 64, 55,255, - 77, 62, 54,255,106, 79, 67,255,121, 92, 77,255,124, 96, 80,255,112, 83, 70,255,132,105, 88,255,118, 91, 76,255,108, 83, 70,255, -156,131,107,255,174,151,124,255,188,165,134,255,197,176,143,255,176,152,124,255, 94, 75, 65,255,110, 82, 70,255,142,115, 94,255, -133,106, 88,255,111, 82, 69,255,135,108, 89,255,185,163,134,255,218,204,182,255,227,218,202,255,228,221,208,255,223,213,196,255, -201,183,155,255,173,149,121,255,136,109, 90,255,120, 92, 77,255,117, 91, 77,255, 93, 78, 71,255,138,109, 90,255,127,100, 83,255, -116, 89, 75,255,174,150,122,255,208,191,162,255,222,212,194,255,223,213,196,255,223,214,198,255,227,220,206,255,230,224,212,255, -231,226,214,255,232,227,215,255,232,227,215,255,232,226,213,255,230,224,209,255,226,217,201,255,214,201,177,255,171,149,124,255, -130,119,104,255, 60, 60, 61,255, 60, 60, 61,255,129,118,101,255,193,171,138,255,192,170,137,255,191,169,137,255,191,169,137,255, -190,168,136,255,190,167,136,255,189,167,135,255,189,166,135,255,189,166,135,255,188,165,134,255,187,164,134,255,187,164,133,255, -186,163,133,255,186,163,132,255,185,162,132,255,185,162,131,255,184,161,131,255,184,160,130,255,183,160,130,255,183,159,129,255, -182,159,129,255,181,158,129,255,183,160,129,255,184,161,131,255,190,168,136,255,202,182,151,255,217,204,181,255,226,218,203,255, -211,200,181,255,220,212,197,255,221,211,193,255,204,187,158,255,197,177,145,255,208,192,166,255,218,206,184,255,219,207,185,255, -199,179,149,255,217,206,189,255,223,214,198,255,224,215,200,255,227,220,206,255,220,211,193,255,143,118, 97,255, 83, 65, 56,255, - 82, 63, 55,255,116, 87, 73,255,134,107, 89,255,150,125,102,255,139,112, 93,255,161,136,111,255,149,125,103,255, 82, 68, 58,255, - 78, 63, 55,255,117, 92, 76,255,164,139,113,255,181,158,128,255,161,136,111,255, 89, 70, 60,255,102, 78, 66,255,144,117, 96,255, -141,114, 94,255,112, 83, 70,255,107, 80, 68,255,141,114, 94,255,183,161,132,255,202,183,156,255,211,196,173,255,219,206,187,255, -212,198,173,255,191,171,140,255,179,156,126,255,174,150,122,255,159,134,110,255, 87, 73, 65,255,115, 88, 73,255,127, 99, 82,255, - 93, 68, 59,255,137,110, 91,255,180,158,131,255,203,185,158,255,224,216,200,255,231,226,214,255,232,227,215,255,232,227,215,255, -232,227,215,255,232,227,215,255,232,227,215,255,231,225,213,255,227,220,207,255,220,210,194,255,192,177,158,255,173,151,124,255, -122,111, 95,255, 60, 60, 61,255, 60, 60, 61,255,130,118,101,255,194,172,139,255,192,170,138,255,192,170,138,255,192,169,137,255, -191,169,137,255,191,169,136,255,190,168,136,255,190,167,135,255,189,167,135,255,189,166,135,255,188,166,134,255,188,165,134,255, -187,164,133,255,187,164,133,255,186,163,132,255,186,163,132,255,185,162,131,255,184,161,131,255,184,161,130,255,183,160,130,255, -183,160,130,255,182,159,129,255,181,158,128,255,182,160,130,255,185,162,131,255,191,169,137,255,202,183,152,255,216,202,179,255, -226,217,202,255,213,204,188,255,211,199,179,255,208,192,165,255,209,194,168,255,222,214,196,255,230,223,210,255,223,212,194,255, -204,186,156,255,226,217,202,255,225,217,201,255,221,210,192,255,214,202,180,255,208,192,167,255,142,117, 97,255,100, 75, 64,255, -102, 77, 65,255,107, 78, 67,255,122, 94, 79,255,164,139,113,255,151,126,103,255,161,136,111,255,171,148,122,255,153,130,107,255, - 98, 76, 65,255,113, 85, 71,255,175,151,123,255,192,172,143,255,172,149,121,255,101, 80, 68,255, 92, 69, 59,255,144,117, 96,255, -145,119, 97,255,116, 88, 74,255,100, 71, 62,255,104, 76, 65,255,139,112, 92,255,164,139,112,255,173,148,121,255,196,176,145,255, -204,186,156,255,196,176,143,255,193,172,139,255,184,161,130,255,169,145,118,255, 91, 71, 61,255,103, 78, 66,255,147,121, 98,255, -126, 98, 82,255,104, 77, 65,255,135,108, 89,255,195,176,148,255,228,221,206,255,232,226,213,255,232,226,214,255,232,227,216,255, -232,227,215,255,227,220,206,255,217,206,188,255,209,197,176,255,206,191,168,255,194,176,149,255,146,123,105,255,149,123,101,255, -110, 96, 84,255, 60, 61, 61,255, 60, 60, 61,255,131,119,102,255,196,173,140,255,193,171,139,255,194,172,139,255,193,171,138,255, -192,170,138,255,192,170,137,255,191,169,138,255,190,168,136,255,190,169,137,255,190,167,136,255,189,167,135,255,189,166,135,255, -188,165,134,255,188,165,134,255,187,165,133,255,186,164,132,255,186,163,132,255,185,162,133,255,185,162,131,255,184,161,130,255, -184,161,131,255,183,160,129,255,182,159,130,255,182,159,129,255,183,160,130,255,184,162,131,255,190,168,136,255,197,176,144,255, -211,195,168,255,225,216,199,255,228,221,208,255,224,216,200,255,224,215,200,255,228,222,209,255,231,225,213,255,223,214,198,255, -213,198,173,255,226,217,202,255,224,214,197,255,225,217,200,255,214,202,179,255,201,184,156,255,131,104, 86,255,126, 99, 82,255, -162,138,113,255,158,134,109,255,116, 88, 74,255,109, 84, 71,255,122, 95, 80,255,117, 96, 83,255,109, 91, 80,255,111, 88, 73,255, -105, 76, 66,255,101, 74, 63,255,175,153,127,255,220,208,186,255,198,179,152,255,117, 92, 76,255, 93, 68, 58,255,146,120, 98,255, -154,128,105,255,126, 98, 81,255,126, 97, 81,255,122, 93, 78,255,136,107, 89,255,165,141,115,255,163,139,113,255,164,139,114,255, -182,158,129,255,191,170,137,255,190,168,136,255,166,142,115,255,150,123,101,255, 99, 75, 63,255,106, 81, 69,255,152,126,103,255, -155,130,105,255,105, 82, 71,255,123, 97, 81,255,176,153,125,255,216,202,180,255,228,220,206,255,230,224,212,255,224,216,200,255, -209,196,176,255,209,195,173,255,217,207,188,255,217,206,187,255,193,177,153,255,147,125,107,255,126, 98, 82,255,136,108, 89,255, -100, 86, 76,255, 61, 61, 61,255, 60, 60, 61,255,131,120,103,255,197,175,142,255,195,173,140,255,195,173,140,255,194,172,140,255, -194,172,139,255,193,171,139,255,193,171,138,255,192,170,138,255,192,170,138,255,191,169,137,255,191,169,136,255,190,168,136,255, -190,168,136,255,189,167,135,255,189,166,135,255,188,165,134,255,187,165,133,255,187,164,133,255,187,164,133,255,186,163,132,255, -185,162,132,255,185,162,131,255,183,160,130,255,183,160,130,255,183,160,129,255,183,160,130,255,184,161,131,255,187,164,133,255, -194,172,139,255,206,188,158,255,220,208,187,255,228,220,205,255,230,225,211,255,231,225,213,255,231,224,211,255,224,216,199,255, -216,203,180,255,219,207,186,255,224,213,196,255,222,213,195,255,211,197,171,255,178,157,130,255,110, 81, 68,255,140,114, 93,255, -200,182,151,255,212,198,173,255,176,156,133,255, 99, 86, 77,255, 80, 71, 64,255,102, 86, 75,255,131,108, 90,255,132,109, 93,255, -134,108, 89,255,121, 95, 78,255,171,150,127,255,223,213,196,255,204,189,163,255,150,124,101,255,109, 82, 70,255,130,104, 86,255, -125,101, 86,255, 80, 64, 56,255,111, 85, 72,255,116, 91, 75,255,113, 88, 74,255,145,119, 97,255,145,119, 97,255,126, 99, 83,255, -153,128,104,255,184,161,131,255,195,174,141,255,177,153,124,255,148,122,100,255, 98, 77, 66,255,101, 78, 67,255,150,124,101,255, -166,141,115,255,116, 96, 83,255, 95, 72, 63,255,138,112, 92,255,172,148,120,255,188,168,141,255,180,162,139,255,198,182,156,255, -215,204,184,255,211,199,179,255,193,176,152,255,154,134,111,255,106, 83, 72,255,116, 87, 73,255,129,101, 84,255,120, 91, 76,255, - 87, 72, 66,255, 61, 61, 61,255, 60, 60, 61,255,132,121,103,255,197,176,142,255,196,174,141,255,196,174,141,255,195,173,140,255, -194,173,140,255,194,172,139,255,194,172,139,255,193,171,139,255,193,171,138,255,192,170,138,255,192,170,138,255,191,169,137,255, -191,168,136,255,190,168,136,255,189,167,135,255,189,167,135,255,189,166,135,255,188,165,134,255,188,165,134,255,187,164,133,255, -186,163,132,255,185,162,131,255,185,162,131,255,184,161,131,255,183,160,130,255,183,160,130,255,183,160,130,255,183,160,130,255, -186,163,132,255,193,172,139,255,205,185,154,255,215,200,176,255,222,211,191,255,226,217,201,255,229,221,206,255,227,219,204,255, -219,206,186,255,218,205,184,255,228,221,207,255,218,207,187,255,203,185,155,255,152,128,104,255,108, 79, 68,255,136,110, 90,255, -200,181,153,255,225,218,202,255,226,218,202,255,199,190,175,255,187,178,162,255,153,132,111,255,124, 97, 81,255,143,117, 96,255, -171,148,121,255,150,125,103,255,200,184,161,255,225,217,202,255,205,188,161,255,194,174,143,255,180,158,130,255,171,147,120,255, -152,128,108,255, 94, 81, 72,255, 71, 59, 52,255, 82, 72, 63,255, 77, 69, 62,255, 90, 77, 70,255, 90, 72, 61,255, 91, 66, 57,255, -120, 92, 77,255,172,148,119,255,195,173,141,255,192,170,138,255,178,154,125,255,114, 91, 77,255, 98, 75, 64,255,140,112, 92,255, -152,125,103,255,100, 81, 69,255, 63, 50, 45,255, 78, 61, 53,255,134,108, 89,255,180,157,128,255,154,133,113,255,171,149,125,255, -160,138,116,255,172,150,122,255,137,112, 93,255, 89, 70, 60,255, 92, 68, 58,255,125, 97, 80,255,127, 99, 82,255,104, 76, 65,255, - 83, 69, 63,255, 61, 61, 61,255, 60, 60, 61,255,132,121,104,255,199,178,143,255,197,175,143,255,196,175,142,255,197,174,141,255, -195,175,142,255,195,174,141,255,195,173,140,255,195,173,140,255,194,172,139,255,194,172,139,255,193,171,139,255,193,171,138,255, -192,170,138,255,192,169,137,255,192,170,137,255,190,168,136,255,190,167,136,255,189,167,135,255,189,166,135,255,188,166,134,255, -188,165,134,255,186,163,132,255,186,163,133,255,186,163,132,255,184,161,131,255,184,161,130,255,183,160,131,255,183,160,130,255, -184,161,131,255,188,165,134,255,196,174,142,255,206,187,156,255,215,200,174,255,220,208,188,255,226,216,200,255,229,222,208,255, -226,218,202,255,220,210,192,255,222,213,196,255,208,193,168,255,187,166,135,255,151,127,104,255,145,120, 99,255,167,143,117,255, -173,150,122,255,208,193,167,255,222,214,196,255,224,216,201,255,222,212,195,255,195,178,151,255,118, 92, 77,255,114, 90, 75,255, -167,144,117,255,177,154,126,255,215,203,180,255,220,210,191,255,208,193,166,255,209,193,167,255,209,192,164,255,187,164,133,255, -160,137,114,255,125,104, 92,255, 75, 67, 61,255, 74, 67, 59,255, 83, 76, 69,255, 81, 74, 65,255, 70, 63, 57,255, 68, 55, 50,255, - 90, 67, 58,255,144,118, 97,255,168,144,117,255,175,151,123,255,171,146,119,255, 94, 73, 63,255, 96, 69, 60,255,122, 94, 78,255, -141,114, 94,255,112, 89, 75,255, 75, 59, 52,255, 85, 67, 58,255, 95, 76, 66,255,168,143,117,255,116, 91, 77,255,106, 80, 68,255, -124, 95, 80,255,149,124,101,255,120, 92, 78,255, 85, 65, 56,255, 93, 70, 60,255,126, 97, 81,255,124, 96, 80,255,103, 75, 64,255, - 86, 71, 65,255, 61, 61, 61,255, 60, 60, 60,255,133,122,104,255,200,178,145,255,198,177,144,255,198,176,143,255,197,176,143,255, -197,176,143,255,197,176,142,255,197,175,142,255,197,175,142,255,196,174,141,255,196,174,141,255,195,174,141,255,194,173,140,255, -194,172,140,255,194,172,139,255,193,171,139,255,193,171,138,255,192,170,138,255,191,169,137,255,191,168,137,255,189,167,135,255, -189,166,135,255,188,166,134,255,187,164,133,255,186,164,133,255,186,163,132,255,185,162,131,255,185,162,131,255,184,161,131,255, -184,161,130,255,186,163,132,255,191,168,136,255,200,178,145,255,208,191,162,255,216,201,178,255,222,211,191,255,227,219,204,255, -230,225,212,255,227,221,208,255,215,203,182,255,199,182,153,255,190,171,141,255,183,162,132,255,187,166,135,255,203,185,156,255, -182,160,130,255,188,167,135,255,210,196,171,255,227,221,207,255,227,219,206,255,211,197,173,255,144,119, 98,255, 96, 73, 63,255, -157,133,109,255,194,173,141,255,206,189,159,255,207,190,161,255,206,187,157,255,207,189,160,255,213,196,170,255,200,182,151,255, -182,159,131,255,175,153,127,255,162,142,121,255,135,115, 97,255,122,103, 87,255,125,102, 86,255,100, 78, 67,255, 75, 66, 62,255, - 86, 69, 59,255,147,121, 99,255,164,139,114,255,163,138,112,255,146,119, 97,255, 82, 62, 54,255, 87, 63, 55,255,110, 83, 71,255, -142,115, 94,255,147,121, 99,255,116, 99, 91,255,134,106, 87,255,111, 91, 80,255,115, 92, 78,255,109, 85, 71,255,102, 81, 72,255, -133,106, 87,255,152,126,104,255,133,106, 87,255, 93, 71, 60,255, 95, 69, 60,255,116, 87, 73,255,111, 83, 70,255,101, 73, 63,255, - 91, 76, 69,255, 61, 61, 61,255, 60, 60, 60,255,134,123,105,255,201,179,146,255,199,178,144,255,199,178,145,255,199,178,144,255, -198,177,144,255,198,177,144,255,198,177,143,255,198,177,143,255,198,177,143,255,198,176,143,255,197,176,143,255,197,175,142,255, -196,175,142,255,196,174,142,255,195,173,141,255,195,173,140,255,194,172,140,255,193,171,139,255,193,170,138,255,192,170,138,255, -191,168,136,255,190,168,136,255,188,166,135,255,188,165,134,255,187,164,133,255,187,164,133,255,185,163,132,255,185,162,131,255, -184,161,131,255,185,163,132,255,188,165,134,255,194,172,139,255,202,182,150,255,210,193,165,255,217,203,180,255,222,211,193,255, -227,218,203,255,229,221,208,255,225,217,202,255,218,207,188,255,214,201,178,255,208,193,166,255,198,178,146,255,198,178,147,255, -187,166,135,255,173,150,122,255,201,182,154,255,209,193,166,255,210,194,167,255,190,170,143,255,155,130,106,255,115, 87, 73,255, -151,126,103,255,193,172,140,255,202,182,150,255,204,185,154,255,206,189,159,255,204,184,152,255,210,193,165,255,223,211,193,255, -216,202,181,255,215,202,179,255,219,206,185,255,214,200,176,255,200,181,154,255,185,162,133,255,156,130,105,255, 98, 80, 72,255, -118,102, 93,255,166,140,114,255,170,145,118,255,168,143,116,255,144,117, 96,255, 92, 68, 59,255,110, 84, 72,255,155,131,107,255, -182,161,135,255,194,175,146,255,138,118,102,255,116, 88, 74,255,119, 96, 80,255, 83, 70, 63,255, 88, 69, 60,255,104, 84, 75,255, -133,105, 87,255,127,100, 83,255,108, 82, 69,255, 89, 66, 58,255, 93, 67, 58,255, 98, 71, 62,255,102, 74, 63,255, 90, 65, 57,255, - 91, 76, 69,255, 61, 61, 61,255, 60, 60, 60,255,134,123,106,255,203,182,147,255,200,179,147,255,201,180,147,255,201,180,147,255, -201,180,146,255,201,180,145,255,201,180,146,255,199,178,146,255,200,179,146,255,200,179,146,255,200,179,144,255,199,178,145,255, -199,178,145,255,198,176,143,255,198,177,143,255,197,176,143,255,196,174,141,255,196,174,141,255,194,173,140,255,193,172,139,255, -193,171,139,255,192,169,137,255,190,168,137,255,190,168,136,255,188,166,134,255,188,165,134,255,187,164,133,255,186,163,133,255, -185,162,132,255,185,162,131,255,187,164,133,255,190,168,136,255,196,175,142,255,204,184,151,255,210,194,166,255,216,202,178,255, -220,209,190,255,223,213,196,255,223,213,195,255,220,209,189,255,218,205,184,255,216,202,180,255,201,182,153,255,183,161,130,255, -174,151,122,255,132,105, 87,255,128,102, 85,255,173,150,123,255,202,184,157,255,150,125,104,255,174,152,124,255,157,132,108,255, -153,127,104,255,186,163,131,255,194,172,140,255,202,181,149,255,209,192,163,255,204,185,155,255,188,165,133,255,209,194,169,255, -220,208,187,255,207,190,162,255,208,191,163,255,214,199,175,255,218,205,183,255,214,198,173,255,191,169,139,255,130,106, 90,255, -146,125,106,255,166,142,115,255,160,135,110,255,180,157,127,255,171,146,118,255,107, 81, 69,255,145,120, 98,255,191,171,139,255, -208,192,164,255,206,189,160,255,142,116, 96,255,137,110, 91,255,171,146,119,255,144,119, 97,255, 81, 64, 56,255,115, 92, 80,255, -141,114, 93,255,123, 94, 79,255, 84, 63, 55,255, 74, 58, 50,255, 98, 70, 61,255,101, 72, 63,255,116, 86, 74,255,103, 76, 65,255, - 83, 69, 63,255, 61, 61, 61,255, 60, 60, 60,255,135,124,107,255,203,183,149,255,202,181,148,255,202,181,148,255,202,181,148,255, -202,181,148,255,202,181,148,255,202,181,148,255,202,181,148,255,201,180,147,255,201,180,147,255,201,180,147,255,201,180,146,255, -200,179,146,255,200,179,145,255,199,178,145,255,199,177,144,255,198,177,144,255,197,176,143,255,197,175,142,255,196,174,141,255, -194,172,140,255,193,171,139,255,193,171,138,255,191,169,137,255,190,168,136,255,189,167,136,255,188,166,134,255,188,165,134,255, -186,163,132,255,186,163,132,255,187,164,133,255,188,165,134,255,192,169,138,255,197,176,143,255,203,183,152,255,209,192,165,255, -214,200,175,255,217,204,182,255,218,205,184,255,218,205,184,255,218,205,184,255,215,201,177,255,197,176,146,255,160,134,110,255, -140,114, 94,255,121, 97, 83,255, 87, 67, 58,255,147,124,105,255,192,175,150,255,158,133,109,255,199,178,146,255,160,136,111,255, -146,120, 98,255,176,152,124,255,187,165,134,255,199,179,145,255,210,192,164,255,214,199,174,255,202,183,154,255,201,182,151,255, -201,181,151,255,183,160,130,255,183,160,130,255,188,166,135,255,192,171,141,255,192,171,142,255,185,162,132,255,124,103, 88,255, -144,119, 97,255,161,136,111,255,156,130,106,255,179,155,126,255,174,151,124,255,131,105, 88,255,157,132,107,255,175,151,122,255, -189,166,134,255,195,174,141,255,167,143,117,255,158,132,108,255,179,157,127,255,177,154,124,255,112, 87, 74,255,131,105, 87,255, -152,127,104,255,136,108, 90,255,104, 79, 67,255, 73, 63, 57,255,108, 81, 69,255,115, 86, 72,255,130,102, 84,255,129,101, 84,255, - 85, 71, 64,255, 61, 61, 61,255, 60, 60, 60,255,135,125,108,255,205,185,152,255,203,183,150,255,203,183,150,255,203,183,150,255, -203,183,150,255,203,183,150,255,203,183,150,255,203,183,150,255,203,183,150,255,203,182,149,255,202,182,149,255,202,182,149,255, -202,182,149,255,202,181,148,255,201,181,148,255,201,180,147,255,200,179,146,255,199,178,145,255,199,178,145,255,198,177,143,255, -197,175,142,255,196,175,141,255,195,174,141,255,194,172,139,255,192,170,138,255,191,169,137,255,190,167,136,255,189,167,135,255, -188,165,134,255,187,164,133,255,186,163,132,255,186,164,133,255,188,166,135,255,191,169,137,255,196,174,141,255,200,179,147,255, -205,187,156,255,209,192,163,255,212,195,169,255,213,198,173,255,215,200,175,255,209,192,162,255,184,162,131,255,150,125,104,255, -127,101, 86,255,124,102, 87,255,107, 85, 75,255,139,114, 95,255,186,164,133,255,176,153,124,255,203,184,152,255,173,150,123,255, -144,118, 96,255,162,137,112,255,177,153,124,255,194,173,140,255,207,187,157,255,214,199,172,255,202,183,153,255,187,166,134,255, -180,157,128,255,175,151,123,255,178,155,125,255,179,156,127,255,178,154,125,255,167,143,115,255,146,119, 98,255, 94, 83, 77,255, - 81, 64, 55,255,143,120,100,255,199,183,159,255,195,178,152,255,150,126,104,255,178,156,126,255,165,140,114,255,167,143,116,255, -181,159,129,255,197,177,144,255,196,176,143,255,189,167,135,255,185,163,132,255,183,160,130,255,109, 90, 78,255,120, 93, 77,255, -125, 98, 82,255,112, 86, 73,255,113, 86, 72,255, 98, 79, 69,255,101, 79, 71,255, 98, 71, 60,255,128,101, 84,255,151,126,103,255, -104, 90, 79,255, 60, 61, 61,255, 60, 60, 60,255,136,126,109,255,206,187,153,255,205,185,153,255,205,185,153,255,205,185,153,255, -205,185,153,255,205,185,153,255,205,185,153,255,204,185,152,255,203,185,152,255,204,184,152,255,204,184,152,255,204,184,151,255, -204,184,151,255,204,183,151,255,203,183,150,255,203,183,150,255,202,182,148,255,201,181,147,255,201,181,147,255,200,179,146,255, -199,178,145,255,198,177,144,255,197,176,143,255,196,174,142,255,194,172,140,255,193,171,139,255,192,170,138,255,190,168,136,255, -189,167,135,255,188,166,135,255,187,164,133,255,186,163,132,255,186,164,133,255,188,166,135,255,190,168,136,255,193,172,139,255, -197,175,143,255,201,181,148,255,204,185,154,255,208,190,161,255,210,194,165,255,203,182,150,255,181,158,129,255,162,139,115,255, -149,125,103,255,141,115, 95,255,102, 76, 66,255,136,110, 91,255,168,143,116,255,163,137,112,255,183,161,132,255,185,163,133,255, -163,139,114,255,160,135,110,255,163,137,112,255,175,152,122,255,177,154,124,255,183,161,132,255,195,173,141,255,170,146,120,255, -159,135,113,255,171,147,121,255,189,167,136,255,203,183,152,255,206,188,159,255,189,168,139,255,134,109, 90,255, 88, 79, 73,255, - 61, 50, 46,255,140,127,113,255,225,218,204,255,191,176,156,255,155,131,106,255,197,176,144,255,180,157,128,255,140,112, 93,255, -143,116, 96,255,163,139,113,255,158,134,110,255,173,151,122,255,195,175,143,255,162,141,117,255, 89, 69, 61,255,119, 91, 76,255, -125, 98, 81,255,108, 83, 70,255, 95, 73, 62,255,113, 86, 72,255,111, 92, 82,255, 85, 72, 68,255,115, 89, 76,255,126, 99, 81,255, - 98, 84, 74,255, 61, 61, 61,255, 60, 60, 60,255,136,127,110,255,207,188,156,255,206,187,155,255,206,187,155,255,206,186,154,255, -206,186,154,255,206,186,154,255,206,186,154,255,205,185,154,255,205,186,154,255,205,185,153,255,205,185,153,255,204,185,153,255, -205,185,153,255,204,184,152,255,204,184,152,255,204,184,151,255,203,183,150,255,203,182,149,255,203,182,149,255,201,181,148,255, -200,180,146,255,200,179,146,255,199,178,145,255,198,177,143,255,197,175,142,255,195,173,141,255,193,172,139,255,192,170,138,255, -191,169,137,255,190,167,136,255,188,166,135,255,188,165,134,255,187,164,133,255,187,165,133,255,188,165,134,255,189,167,135,255, -192,170,137,255,194,173,140,255,199,178,145,255,205,186,155,255,209,192,162,255,203,184,151,255,193,171,138,255,191,169,138,255, -183,160,131,255,109, 84, 71,255, 92, 68, 58,255,125, 97, 81,255,130,103, 85,255,123, 96, 80,255,119, 92, 77,255,136,109, 90,255, -153,127,104,255,147,121, 99,255,143,116, 96,255,141,115, 96,255,137,111, 93,255,128,101, 84,255,185,162,133,255,193,173,142,255, -175,152,124,255,176,153,125,255,192,171,139,255,212,195,167,255,223,213,195,255,211,197,174,255,140,114, 94,255, 90, 70, 60,255, - 68, 53, 48,255, 98, 85, 76,255,183,165,142,255,181,159,129,255,172,148,120,255,182,159,129,255,187,165,134,255,174,151,125,255, -157,133,110,255,123, 95, 79,255, 87, 63, 55,255,106, 84, 70,255,122, 98, 81,255, 95, 72, 62,255, 65, 51, 46,255, 91, 70, 60,255, -129,103, 85,255,145,118, 97,255,127,102, 84,255,108, 80, 67,255,120, 98, 87,255,109, 87, 74,255, 89, 68, 61,255, 87, 64, 56,255, - 73, 62, 58,255, 61, 61, 62,255, 60, 60, 60,255,137,128,112,255,208,189,159,255,207,188,158,255,206,188,157,255,206,187,157,255, -206,187,156,255,206,187,156,255,206,187,156,255,205,186,155,255,205,186,155,255,205,186,155,255,205,186,154,255,205,186,154,255, -204,185,154,255,205,185,154,255,204,185,153,255,204,185,153,255,204,184,152,255,204,184,152,255,203,183,151,255,203,183,150,255, -203,182,149,255,201,181,148,255,201,180,147,255,199,178,145,255,198,177,144,255,197,175,143,255,196,174,141,255,194,173,140,255, -193,171,139,255,191,169,137,255,190,168,136,255,189,166,135,255,188,165,134,255,187,164,133,255,187,164,134,255,188,166,134,255, -189,167,135,255,192,169,138,255,197,175,142,255,204,185,154,255,212,196,170,255,212,196,170,255,211,195,167,255,218,204,182,255, -189,170,144,255, 99, 73, 62,255, 92, 66, 58,255,124, 96, 81,255,131,104, 86,255,115, 88, 74,255, 93, 69, 60,255,104, 77, 66,255, -139,111, 92,255,130,104, 86,255,109, 86, 72,255,110, 87, 74,255,134,108, 89,255,139,111, 92,255,156,131,107,255,201,183,152,255, -206,187,156,255,201,181,150,255,198,176,144,255,200,180,147,255,208,190,162,255,182,161,135,255,125, 98, 81,255,157,132,108,255, -114, 90, 76,255, 66, 55, 50,255, 92, 75, 66,255,173,149,121,255,186,164,133,255,176,153,124,255,161,137,111,255,201,185,160,255, -216,203,181,255,182,160,135,255,117, 92, 77,255, 84, 61, 53,255, 85, 63, 55,255, 78, 58, 51,255, 81, 62, 54,255, 62, 51, 45,255, - 78, 63, 55,255,125,101, 83,255,179,156,126,255,161,135,110,255,113, 91, 77,255,164,140,115,255,125,103, 87,255, 67, 57, 52,255, - 61, 55, 53,255, 61, 62, 62,255, 60, 60, 60,255,138,129,113,255,210,191,161,255,207,190,160,255,208,190,160,255,208,190,159,255, -207,188,158,255,206,189,158,255,207,188,157,255,207,188,157,255,207,188,157,255,207,188,157,255,205,186,156,255,206,187,156,255, -206,187,156,255,206,186,154,255,206,186,155,255,205,186,154,255,205,186,154,255,204,186,154,255,205,185,153,255,203,183,152,255, -204,184,151,255,203,182,150,255,202,182,149,255,201,181,148,255,201,180,147,255,199,178,145,255,198,176,143,255,196,174,141,255, -194,173,140,255,193,171,139,255,191,169,137,255,190,168,136,255,189,167,135,255,189,166,135,255,188,165,134,255,188,165,134,255, -189,167,135,255,191,168,137,255,195,173,140,255,204,184,153,255,215,200,175,255,222,210,190,255,224,215,198,255,230,223,210,255, -205,191,167,255,129,102, 84,255,121, 93, 78,255,147,120, 98,255,152,126,103,255,138,111, 91,255, 97, 73, 62,255,103, 76, 65,255, -157,131,107,255,174,152,126,255,125,107, 93,255,101, 80, 71,255,155,130,107,255,177,155,127,255,119, 94, 78,255,139,115, 96,255, -178,155,128,255,200,181,150,255,210,193,164,255,209,193,164,255,204,186,155,255,163,139,114,255,113, 90, 77,255,198,179,151,255, -175,153,126,255, 95, 75, 64,255, 76, 70, 65,255,169,148,124,255,189,169,139,255,174,152,124,255,172,148,121,255,207,190,163,255, -219,207,188,255,222,213,195,255,201,183,157,255,133,105, 87,255,121, 92, 77,255,111, 85, 72,255,127, 99, 82,255, 94, 72, 62,255, - 67, 54, 48,255, 64, 52, 47,255,139,117, 96,255,192,169,138,255,169,145,118,255,128,105, 87,255,151,125,102,255,132,108, 90,255, - 79, 70, 65,255, 61, 61, 61,255, 60, 60, 60,255,138,129,114,255,211,193,163,255,209,191,162,255,209,191,161,255,209,191,161,255, -208,190,160,255,208,189,159,255,208,189,159,255,207,189,158,255,207,189,158,255,207,188,157,255,207,187,157,255,207,188,157,255, -206,187,156,255,205,186,156,255,205,187,155,255,206,187,155,255,205,186,154,255,205,186,154,255,204,185,154,255,205,185,154,255, -204,185,153,255,204,184,152,255,203,184,151,255,203,182,150,255,202,182,149,255,200,180,147,255,199,179,146,255,198,177,143,255, -196,175,142,255,195,173,140,255,193,171,139,255,192,170,137,255,191,168,137,255,190,167,136,255,189,166,135,255,188,166,134,255, -189,167,135,255,191,169,137,255,194,172,139,255,202,181,149,255,213,197,171,255,223,212,194,255,229,222,208,255,231,226,213,255, -216,204,183,255,180,158,129,255,175,152,124,255,184,162,132,255,183,160,130,255,169,145,118,255,124, 96, 80,255, 98, 71, 62,255, -150,125,102,255,218,206,184,255,215,203,183,255,177,159,136,255,206,191,166,255,180,159,131,255,132,108, 91,255,113, 90, 77,255, -133,110, 95,255,158,134,112,255,181,160,131,255,205,188,161,255,220,208,188,255,185,167,142,255,140,116, 97,255,215,204,187,255, -224,214,197,255,182,162,139,255, 92, 80, 72,255,123,101, 85,255,110, 87, 72,255,113, 92, 81,255,188,167,138,255,214,202,178,255, -218,207,186,255,227,219,204,255,222,209,187,255,156,132,109,255,101, 77, 65,255,153,127,104,255,157,132,107,255,132,104, 86,255, - 87, 67, 57,255, 69, 55, 48,255, 75, 60, 54,255,140,117, 97,255,185,162,132,255,164,139,114,255, 91, 74, 66,255,169,146,119,255, -127,116,101,255, 60, 60, 61,255, 60, 60, 60,255,139,130,115,255,212,194,164,255,209,192,163,255,209,192,163,255,209,192,162,255, -209,191,161,255,208,190,161,255,208,190,160,255,207,189,159,255,207,189,159,255,208,188,158,255,207,188,158,255,206,188,157,255, -207,187,156,255,206,187,156,255,205,186,156,255,205,186,155,255,206,187,155,255,206,187,155,255,205,186,155,255,205,185,154,255, -205,185,154,255,204,185,153,255,204,185,153,255,203,183,152,255,202,182,150,255,202,182,149,255,201,181,147,255,199,179,146,255, -198,177,144,255,196,175,142,255,195,173,141,255,194,172,139,255,192,170,137,255,191,169,137,255,190,168,136,255,189,167,135,255, -189,167,135,255,191,169,137,255,193,172,138,255,198,177,145,255,208,190,161,255,218,205,184,255,225,216,200,255,227,220,206,255, -219,209,191,255,211,197,173,255,213,199,176,255,215,202,178,255,217,202,180,255,204,187,160,255,155,130,106,255,114, 85, 73,255, -129,102, 84,255,186,165,137,255,193,173,143,255,195,175,146,255,210,193,164,255,191,169,137,255,166,142,117,255,136,110, 93,255, -134,109, 94,255,137,114, 99,255,140,117,100,255,144,121,101,255,136,117,101,255,156,139,125,255,201,184,160,255,213,198,175,255, -216,203,183,255,202,185,160,255,146,123,101,255,109, 91, 81,255,104, 81, 68,255,103, 91, 85,255,184,161,132,255,215,202,177,255, -223,213,195,255,225,216,199,255,219,208,189,255,198,182,158,255,128,103, 86,255,160,136,110,255,188,166,135,255,172,148,119,255, -137,111, 91,255, 85, 64, 56,255, 68, 52, 47,255, 67, 54, 48,255, 91, 73, 63,255,115, 92, 76,255, 91, 69, 59,255,137,124,111,255, -146,140,128,255, 60, 60, 60,255, 60, 60, 60,255,139,131,116,255,212,195,167,255,211,193,165,255,210,193,164,255,210,192,164,255, -210,192,163,255,209,192,162,255,208,191,162,255,209,191,161,255,208,190,160,255,207,190,160,255,208,189,159,255,207,189,158,255, -207,189,158,255,207,187,157,255,207,188,157,255,207,188,157,255,206,187,156,255,206,187,156,255,206,187,156,255,206,187,155,255, -205,187,154,255,205,186,154,255,204,186,154,255,205,185,153,255,204,184,151,255,203,183,150,255,202,182,149,255,200,180,147,255, -199,179,146,255,198,177,144,255,196,174,142,255,195,173,141,255,193,171,139,255,192,170,138,255,191,169,137,255,191,168,137,255, -191,168,137,255,191,169,137,255,192,170,138,255,195,174,141,255,202,182,150,255,210,193,165,255,216,202,180,255,220,208,188,255, -218,207,187,255,219,207,188,255,223,214,196,255,226,217,201,255,225,216,199,255,212,198,172,255,177,155,125,255,138,111, 92,255, -118, 88, 75,255,131,105, 85,255,122, 97, 81,255,116, 92, 76,255,170,146,119,255,201,181,147,255,200,179,148,255,182,159,131,255, -164,140,116,255,157,134,112,255,147,123,105,255,127,104, 89,255, 80, 64, 56,255, 95, 85, 79,255,160,137,112,255,173,149,121,255, -156,132,108,255,124, 99, 83,255,159,135,111,255, 99, 79, 68,255,114, 89, 76,255,101, 83, 75,255,169,143,117,255,189,167,136,255, -177,155,127,255,166,144,120,255,195,179,157,255,217,205,187,255,206,192,169,255,189,169,141,255,221,210,191,255,221,209,187,255, -208,191,166,255,166,143,118,255,110, 82, 70,255, 93, 69, 60,255, 68, 54, 48,255, 64, 54, 48,255, 74, 59, 52,255, 83, 63, 55,255, -120,110, 97,255, 60, 60, 61,255, 60, 60, 60,255,139,131,117,255,213,196,168,255,211,194,167,255,211,193,165,255,211,193,165,255, -210,193,164,255,209,192,164,255,209,192,163,255,209,191,162,255,209,191,161,255,208,190,160,255,207,190,159,255,208,189,159,255, -206,188,159,255,206,188,158,255,206,187,157,255,207,187,157,255,207,188,157,255,206,187,156,255,206,187,156,255,206,187,156,255, -206,186,155,255,206,187,154,255,205,186,154,255,205,186,154,255,205,185,153,255,203,184,151,255,203,183,150,255,202,182,149,255, -201,181,148,255,200,179,146,255,198,177,144,255,196,175,142,255,195,173,141,255,194,172,139,255,192,170,138,255,192,170,138,255, -191,169,137,255,191,169,137,255,192,170,137,255,193,171,139,255,196,175,142,255,201,180,148,255,205,186,156,255,208,191,162,255, -211,196,169,255,216,202,180,255,222,212,193,255,226,217,201,255,224,215,198,255,216,204,182,255,193,173,143,255,145,119, 98,255, -111, 82, 70,255,114, 89, 77,255, 99, 81, 71,255, 69, 58, 50,255,106, 85, 72,255,205,189,163,255,219,206,184,255,218,204,182,255, -204,186,157,255,192,171,139,255,183,161,131,255,174,151,124,255,144,121, 99,255, 78, 63, 55,255,121,103, 87,255,181,158,129,255, -171,148,123,255,134,116,103,255,180,165,148,255,136,117,102,255,145,121,101,255,133,111, 96,255,183,161,130,255,186,163,133,255, -151,126,102,255, 99, 76, 64,255, 80, 64, 55,255,132,113, 98,255,172,151,129,255,155,130,108,255,172,152,130,255,198,182,162,255, -210,197,176,255,191,171,144,255,160,135,109,255,149,122,101,255,128,102, 85,255, 95, 74, 63,255, 73, 56, 48,255,113, 93, 81,255, - 99, 87, 79,255, 61, 61, 61,255, 60, 60, 60,255,140,132,118,255,214,197,169,255,211,195,168,255,211,194,167,255,210,194,166,255, -210,193,165,255,210,193,165,255,209,192,163,255,210,191,162,255,209,191,162,255,209,190,161,255,208,190,160,255,207,189,160,255, -207,189,159,255,207,188,158,255,207,188,158,255,207,188,158,255,207,187,156,255,206,187,156,255,205,186,155,255,206,187,156,255, -206,187,156,255,205,186,155,255,206,187,155,255,205,186,154,255,204,185,154,255,205,185,154,255,204,184,152,255,203,183,150,255, -202,182,149,255,201,181,148,255,199,178,145,255,198,177,144,255,196,174,142,255,195,173,141,255,194,172,139,255,192,170,138,255, -192,170,138,255,192,170,137,255,192,170,137,255,192,170,138,255,193,171,139,255,195,174,141,255,198,177,144,255,199,179,146,255, -203,182,150,255,207,189,160,255,213,199,174,255,219,207,187,255,223,213,195,255,222,211,192,255,202,184,154,255,158,133,108,255, -121, 94, 79,255,136,111, 93,255,129,107, 93,255, 77, 62, 54,255, 89, 74, 65,255,203,187,165,255,219,206,186,255,219,207,186,255, -218,205,183,255,211,195,169,255,204,184,152,255,204,184,152,255,206,188,158,255,152,131,109,255,124,110, 99,255,202,190,173,255, -213,202,183,255,207,195,176,255,195,180,160,255,198,182,161,255,181,162,140,255,152,127,105,255,194,173,141,255,197,176,142,255, -184,161,131,255,156,131,108,255,104, 84, 70,255, 64, 52, 47,255, 92, 73, 62,255,122, 95, 79,255,114, 88, 74,255,122, 96, 80,255, -136,110, 91,255,130,103, 86,255,122, 94, 78,255,158,132,107,255,182,158,127,255,167,145,120,255,171,151,130,255,170,147,119,255, - 94, 82, 74,255, 61, 61, 61,255, 60, 60, 60,255,140,132,118,255,214,198,171,255,213,196,169,255,212,196,169,255,212,195,168,255, -211,194,166,255,210,193,165,255,211,194,165,255,209,192,164,255,209,192,163,255,208,192,162,255,208,190,161,255,207,189,161,255, -207,189,160,255,207,189,159,255,208,188,159,255,206,189,157,255,207,188,157,255,206,187,156,255,207,188,157,255,205,186,156,255, -206,186,156,255,206,187,155,255,206,187,156,255,205,186,156,255,205,186,155,255,204,186,155,255,205,185,154,255,204,184,153,255, -203,183,151,255,202,182,150,255,200,180,147,255,199,178,145,255,198,177,144,255,196,174,142,255,195,173,141,255,195,173,140,255, -193,171,139,255,193,171,139,255,192,170,138,255,192,170,138,255,192,170,138,255,193,171,139,255,193,172,139,255,195,173,141,255, -195,174,141,255,200,179,146,255,203,184,154,255,210,193,167,255,218,205,183,255,222,210,190,255,210,193,164,255,184,162,132,255, -150,124,102,255,169,145,118,255,174,153,127,255,122, 99, 85,255,105, 87, 79,255,188,166,136,255,201,181,147,255,207,188,158,255, -212,197,170,255,214,199,174,255,212,196,171,255,211,195,167,255,210,192,163,255,200,181,153,255,120,102, 90,255, 88, 65, 55,255, -162,138,111,255,190,169,139,255,174,150,121,255,166,142,115,255,144,119, 97,255,149,123,100,255,189,166,135,255,183,159,130,255, -179,155,126,255,184,161,130,255,177,154,125,255,130,107, 90,255, 75, 60, 53,255,125,103, 86,255,157,133,111,255,139,114, 95,255, -131,105, 88,255,128,102, 84,255,103, 78, 67,255,176,159,142,255,220,210,194,255,226,219,203,255,219,205,183,255,197,176,147,255, -112, 99, 86,255, 60, 61, 61,255, 60, 60, 60,255,141,132,119,255,214,199,172,255,212,197,171,255,212,196,169,255,211,196,169,255, -211,195,167,255,211,194,166,255,211,194,165,255,210,193,165,255,210,192,164,255,209,192,163,255,208,191,162,255,208,190,161,255, -207,189,161,255,207,189,159,255,208,189,159,255,207,189,158,255,206,188,157,255,207,188,157,255,206,188,157,255,206,187,157,255, -205,187,157,255,206,188,156,255,206,187,156,255,206,187,156,255,206,187,156,255,205,186,155,255,204,186,155,255,204,184,153,255, -203,184,152,255,203,183,151,255,201,181,149,255,201,180,147,255,199,178,145,255,198,177,144,255,196,175,142,255,195,174,141,255, -195,173,140,255,194,172,140,255,193,171,139,255,193,171,139,255,193,171,139,255,192,170,138,255,193,171,139,255,193,171,139,255, -193,171,139,255,195,173,140,255,197,176,143,255,202,182,151,255,212,197,171,255,220,208,188,255,218,205,182,255,210,194,166,255, -186,164,135,255,189,167,137,255,212,198,176,255,154,132,114,255,149,125,104,255,217,203,180,255,213,199,174,255,215,200,176,255, -219,206,186,255,222,210,192,255,221,211,193,255,226,216,200,255,225,214,195,255,175,158,136,255, 91, 77, 66,255, 60, 50, 45,255, - 94, 74, 63,255,154,127,104,255,156,130,106,255,146,120, 98,255,130,103, 85,255,131,103, 86,255,187,164,134,255,194,173,141,255, -183,160,130,255,175,151,122,255,202,184,156,255,219,207,188,255,174,158,140,255,165,149,134,255,203,189,168,255,214,202,181,255, -206,192,173,255,199,184,164,255,196,182,166,255,231,225,213,255,234,228,216,255,235,229,216,255,228,220,203,255,189,171,148,255, -113,101, 88,255, 60, 61, 61,255, 60, 60, 60,255,141,133,120,255,215,200,173,255,213,197,172,255,212,197,171,255,212,196,169,255, -212,195,168,255,211,195,168,255,210,193,166,255,211,193,165,255,210,193,165,255,210,193,163,255,209,191,162,255,208,191,162,255, -208,190,160,255,208,190,160,255,207,189,159,255,208,188,158,255,206,188,158,255,207,188,157,255,207,187,156,255,206,187,156,255, -205,187,157,255,206,187,157,255,206,188,157,255,206,187,156,255,206,187,156,255,205,186,155,255,205,186,155,255,204,184,153,255, -204,185,153,255,203,184,152,255,202,182,150,255,201,181,148,255,200,179,146,255,199,178,145,255,198,177,144,255,196,175,142,255, -195,174,141,255,195,173,141,255,194,173,140,255,194,172,140,255,193,172,139,255,193,171,139,255,192,170,138,255,192,170,138,255, -192,170,138,255,193,172,139,255,195,174,141,255,200,179,146,255,210,192,164,255,220,208,187,255,224,213,196,255,225,215,199,255, -215,201,178,255,188,167,135,255,157,133,110,255,130,103, 85,255,189,170,141,255,225,215,198,255,229,222,208,255,228,221,208,255, -227,221,207,255,225,217,203,255,220,209,192,255,196,187,173,255,121,110, 98,255,107, 84, 71,255, 87, 70, 60,255, 63, 52, 47,255, - 69, 57, 51,255,139,114, 95,255,160,135,110,255,146,120, 98,255,132,105, 86,255,135,108, 88,255,180,158,131,255,222,211,191,255, -219,206,187,255,200,182,157,255,169,146,120,255,218,206,185,255,198,186,170,255,126,100, 85,255,156,131,108,255,207,192,166,255, -226,219,205,255,229,222,209,255,227,220,206,255,221,212,195,255,207,196,180,255,160,143,130,255,118,105, 95,255,122, 98, 85,255, -112, 99, 86,255, 60, 61, 61,255, 60, 60, 60,255,141,133,120,255,215,200,175,255,214,198,172,255,213,198,171,255,212,197,171,255, -213,196,169,255,212,196,169,255,212,195,168,255,211,194,166,255,211,194,166,255,210,193,165,255,209,192,163,255,209,192,163,255, -208,191,162,255,209,191,161,255,208,190,160,255,208,190,160,255,207,189,159,255,207,189,158,255,206,188,158,255,207,187,157,255, -206,188,156,255,206,188,157,255,206,188,157,255,206,187,156,255,206,187,156,255,206,187,156,255,205,186,155,255,205,185,154,255, -204,184,153,255,204,184,152,255,202,182,150,255,202,182,149,255,201,181,148,255,199,179,146,255,199,178,145,255,198,177,144,255, -197,176,143,255,196,175,142,255,196,174,142,255,195,174,141,255,194,173,140,255,194,173,140,255,194,172,139,255,194,172,139,255, -194,172,139,255,194,173,140,255,196,175,142,255,200,180,147,255,208,191,163,255,218,206,186,255,227,218,203,255,231,224,212,255, -225,218,201,255,188,167,138,255,137,110, 91,255,143,117, 96,255,187,165,135,255,210,194,167,255,218,205,183,255,223,212,194,255, -226,218,201,255,227,220,205,255,201,186,163,255,102, 81, 69,255, 67, 52, 46,255,106, 83, 70,255,113, 88, 74,255, 84, 66, 57,255, - 70, 58, 53,255,142,121,103,255,158,133,109,255,144,118, 96,255,122, 94, 78,255,150,125,102,255,142,116, 95,255,197,183,163,255, -228,221,207,255,230,223,210,255,182,163,141,255,142,117, 99,255,100, 75, 62,255, 71, 54, 48,255,102, 79, 67,255,172,149,124,255, -218,205,185,255,226,218,203,255,228,219,204,255,223,212,193,255,173,152,126,255,108, 85, 74,255,101, 76, 64,255, 90, 70, 61,255, -104, 90, 79,255, 61, 61, 61,255, 60, 60, 60,255,141,133,120,255,216,201,176,255,214,198,173,255,213,198,172,255,213,198,172,255, -212,196,170,255,212,196,169,255,211,196,169,255,211,194,167,255,210,194,166,255,211,193,165,255,210,192,164,255,210,192,163,255, -209,192,163,255,208,191,162,255,208,190,161,255,207,189,160,255,208,190,159,255,207,189,159,255,207,189,158,255,207,187,157,255, -206,188,157,255,205,188,156,255,206,188,157,255,206,187,156,255,206,187,155,255,206,187,156,255,205,186,155,255,204,185,154,255, -205,185,153,255,204,185,153,255,203,183,151,255,202,182,150,255,201,181,149,255,200,180,147,255,199,178,145,255,199,178,145,255, -198,177,144,255,197,176,143,255,197,176,143,255,196,175,142,255,196,174,141,255,195,173,141,255,194,173,140,255,194,173,140,255, -194,173,141,255,195,174,141,255,197,176,143,255,201,181,149,255,208,191,163,255,218,205,183,255,226,217,201,255,226,218,204,255, -214,201,178,255,188,167,136,255,171,149,121,255,172,149,121,255,179,155,126,255,187,165,134,255,196,175,144,255,204,184,152,255, -206,187,156,255,205,187,157,255,180,158,129,255,121, 94, 79,255, 87, 64, 56,255,113, 88, 73,255,141,114, 93,255,129,102, 84,255, -100, 77, 65,255,118, 96, 82,255,129,102, 85,255,116, 90, 76,255, 91, 68, 59,255,148,123,101,255,143,117, 96,255,164,142,119,255, -218,207,189,255,208,198,185,255,200,186,167,255,152,126,103,255,118, 92, 77,255, 73, 58, 51,255, 59, 48, 44,255,143,123,105,255, -218,205,183,255,227,218,203,255,227,218,202,255,223,212,192,255,203,185,158,255,142,121,104,255,146,123,105,255, 98, 82, 72,255, - 94, 81, 74,255, 61, 61, 61,255, 60, 60, 60,255,142,134,121,255,217,202,176,255,214,199,174,255,214,199,173,255,214,198,172,255, -213,197,171,255,212,196,170,255,211,195,168,255,211,195,168,255,211,195,167,255,210,193,166,255,211,193,165,255,210,193,164,255, -210,191,163,255,208,192,162,255,209,191,162,255,207,189,160,255,208,190,160,255,207,189,159,255,206,188,158,255,206,188,158,255, -207,187,158,255,205,188,156,255,206,188,157,255,206,187,156,255,206,187,155,255,205,186,155,255,206,187,156,255,204,185,154,255, -205,186,154,255,204,185,153,255,203,183,151,255,202,182,150,255,202,182,150,255,201,180,148,255,200,180,147,255,199,179,146,255, -199,178,145,255,198,177,144,255,198,177,144,255,197,176,143,255,196,175,142,255,195,174,141,255,195,174,141,255,195,173,140,255, -195,173,141,255,196,175,142,255,198,177,144,255,201,181,148,255,206,188,158,255,212,197,172,255,217,204,183,255,215,203,181,255, -208,193,166,255,202,184,153,255,199,179,148,255,189,167,135,255,177,153,124,255,171,147,119,255,177,154,125,255,189,166,135,255, -194,172,139,255,190,168,136,255,173,150,122,255,142,116, 95,255,110, 81, 69,255,134,107, 87,255,185,165,137,255,187,169,146,255, -159,140,125,255, 90, 71, 62,255,136,110, 90,255,111, 86, 72,255, 73, 58, 51,255, 77, 61, 53,255,109, 85, 71,255,158,133,108,255, -134,112, 98,255,139,112, 93,255,183,162,136,255,208,193,169,255,189,169,142,255,144,119, 98,255, 81, 64, 54,255, 90, 76, 65,255, -203,188,166,255,225,216,201,255,225,218,204,255,225,218,203,255,213,202,182,255,160,138,115,255, 96, 74, 64,255, 90, 70, 60,255, - 77, 70, 66,255, 61, 61, 61,255, 60, 60, 60,255,141,134,122,255,217,202,178,255,215,200,176,255,214,200,174,255,215,199,174,255, -214,198,172,255,213,198,171,255,213,197,170,255,212,196,169,255,212,195,168,255,212,195,168,255,210,194,166,255,211,193,165,255, -210,193,164,255,209,191,163,255,209,191,162,255,209,191,162,255,207,189,160,255,208,190,160,255,206,188,158,255,207,188,158,255, -206,187,158,255,207,188,157,255,205,188,157,255,206,187,156,255,206,186,155,255,206,187,156,255,205,186,155,255,205,186,155,255, -205,186,154,255,204,185,153,255,204,184,152,255,203,183,151,255,202,182,150,255,202,181,149,255,201,181,148,255,200,180,147,255, -200,179,146,255,199,178,145,255,199,178,145,255,198,177,144,255,197,176,143,255,197,175,143,255,196,175,142,255,196,175,142,255, -196,175,141,255,196,175,142,255,198,177,144,255,199,179,146,255,202,183,151,255,205,187,157,255,207,190,161,255,207,190,162,255, -207,191,163,255,210,195,168,255,208,190,161,255,193,172,139,255,176,152,124,255,164,140,114,255,163,138,113,255,176,152,124,255, -193,171,139,255,197,176,145,255,188,167,137,255,169,145,118,255,135,108, 90,255,184,166,142,255,228,221,206,255,226,216,200,255, -197,180,155,255, 95, 79, 69,255,154,131,108,255,178,156,129,255,121, 99, 83,255, 66, 54, 48,255, 60, 48, 44,255,114, 93, 80,255, -109, 84, 72,255,143,116, 96,255,178,156,129,255,215,204,184,255,223,214,197,255,222,212,194,255,201,187,165,255,136,118,103,255, -130,110, 93,255,180,159,130,255,189,170,142,255,181,160,131,255,173,150,121,255,178,153,124,255,133,108, 89,255,100, 74, 64,255, - 81, 68, 62,255, 61, 61, 61,255, 60, 60, 60,255,142,135,122,255,217,203,179,255,215,201,176,255,215,200,176,255,214,199,174,255, -214,199,173,255,214,198,172,255,212,198,171,255,213,196,170,255,212,195,169,255,212,195,168,255,211,194,167,255,211,194,166,255, -209,192,164,255,210,192,164,255,209,192,163,255,208,190,161,255,208,190,161,255,208,190,160,255,207,189,159,255,206,188,158,255, -207,188,158,255,206,188,158,255,205,188,156,255,206,187,156,255,205,187,156,255,206,186,155,255,205,186,155,255,205,186,155,255, -205,186,154,255,204,185,153,255,203,184,152,255,203,183,151,255,203,183,151,255,201,181,149,255,201,181,148,255,201,181,148,255, -200,180,147,255,200,179,146,255,199,179,146,255,198,178,145,255,198,177,144,255,197,176,143,255,196,175,142,255,196,175,142,255, -196,175,142,255,196,175,143,255,197,176,143,255,197,176,144,255,199,179,146,255,200,180,148,255,201,182,150,255,203,185,154,255, -209,193,164,255,215,200,177,255,213,196,170,255,199,178,146,255,181,159,129,255,165,141,115,255,157,131,108,255,163,138,113,255, -195,175,145,255,220,207,185,255,211,196,171,255,167,145,120,255,164,141,114,255,214,201,177,255,228,222,208,255,223,214,198,255, -218,207,189,255,170,154,135,255,133,108, 91,255,195,176,151,255,213,197,175,255,150,130,110,255, 67, 54, 47,255, 90, 78, 73,255, -125, 97, 81,255,148,122,100,255,161,136,111,255,175,152,124,255,193,174,147,255,205,189,165,255,217,205,183,255,225,214,195,255, -188,172,152,255,152,130,110,255,176,153,123,255,185,161,131,255,179,155,126,255,175,151,123,255,172,147,120,255,142,117, 96,255, - 87, 74, 67,255, 61, 61, 61,255, 60, 60, 60,255,142,135,122,255,217,203,179,255,216,201,177,255,215,201,176,255,214,200,175,255, -215,200,174,255,214,199,174,255,213,198,172,255,213,197,171,255,212,196,170,255,211,196,169,255,212,194,167,255,211,195,167,255, -210,193,165,255,209,192,164,255,210,191,163,255,208,191,162,255,208,190,161,255,207,189,160,255,207,189,159,255,206,188,158,255, -206,188,158,255,206,188,157,255,205,188,156,255,206,187,156,255,206,187,156,255,205,186,155,255,204,185,154,255,205,186,155,255, -204,186,154,255,205,186,154,255,203,184,152,255,203,183,151,255,203,183,151,255,201,181,149,255,202,181,149,255,201,181,148,255, -201,179,147,255,200,180,147,255,199,179,147,255,198,178,145,255,199,178,145,255,198,177,144,255,196,176,143,255,197,176,142,255, -196,175,143,255,195,174,141,255,196,175,142,255,196,175,142,255,197,176,143,255,197,177,144,255,200,180,147,255,203,184,152,255, -211,195,169,255,219,208,186,255,219,207,185,255,210,193,164,255,195,173,141,255,177,153,125,255,160,135,110,255,150,124,101,255, -160,135,110,255,168,146,121,255,129,106, 91,255,126, 99, 82,255,165,142,115,255,211,196,171,255,224,215,198,255,229,223,210,255, -229,223,209,255,224,215,198,255,179,157,132,255,123, 96, 81,255,181,163,141,255,222,211,192,255,168,148,127,255, 80, 64, 58,255, -146,121,102,255,160,135,110,255,170,146,118,255,174,150,122,255,174,150,122,255,176,152,124,255,180,158,129,255,187,165,135,255, -193,171,140,255,145,125,106,255,182,160,129,255,198,177,145,255,200,179,147,255,197,176,145,255,191,170,139,255,191,168,137,255, -127,116,101,255, 60, 60, 61,255, 60, 60, 60,255,141,134,122,255,217,203,178,255,216,201,176,255,215,200,176,255,214,200,175,255, -215,200,175,255,214,199,174,255,214,198,174,255,214,198,172,255,213,197,171,255,213,196,170,255,211,195,168,255,211,195,167,255, -211,194,166,255,210,193,165,255,210,193,164,255,208,191,162,255,209,190,161,255,208,190,161,255,208,189,159,255,208,189,159,255, -207,188,158,255,206,188,157,255,205,188,156,255,206,187,156,255,206,187,156,255,205,186,155,255,204,185,154,255,205,186,154,255, -205,186,154,255,205,185,153,255,203,184,152,255,203,183,151,255,203,183,151,255,201,181,149,255,201,181,149,255,201,181,149,255, -201,180,147,255,200,180,147,255,200,179,145,255,199,178,145,255,199,178,145,255,198,177,144,255,197,176,143,255,197,176,143,255, -196,175,141,255,196,175,141,255,195,174,141,255,194,173,141,255,194,173,141,255,196,175,142,255,198,178,145,255,202,184,153,255, -212,197,171,255,222,211,192,255,226,216,200,255,222,210,191,255,212,196,169,255,197,176,145,255,176,152,124,255,145,118, 97,255, -117, 89, 74,255,104, 81, 71,255,117, 90, 77,255,137,110, 90,255,170,147,119,255,208,192,164,255,217,206,184,255,225,216,200,255, -228,222,209,255,225,217,203,255,221,211,192,255,181,163,141,255,125,101, 84,255,188,168,143,255,217,205,185,255,156,137,118,255, -153,132,113,255,171,147,119,255,178,155,125,255,191,170,138,255,196,175,145,255,190,169,139,255,183,160,131,255,179,156,125,255, -176,152,123,255,154,129,105,255,155,137,115,255,213,200,176,255,215,202,180,255,214,201,178,255,214,201,176,255,216,202,180,255, -139,131,121,255, 60, 60, 60,255, 60, 60, 60,255,142,134,122,255,217,202,177,255,215,200,175,255,214,200,175,255,215,200,174,255, -214,199,174,255,215,200,175,255,215,199,174,255,214,198,173,255,213,197,171,255,212,197,170,255,212,196,169,255,212,195,168,255, -210,195,166,255,210,193,165,255,209,193,164,255,209,191,162,255,208,191,162,255,208,191,161,255,208,189,159,255,208,189,159,255, -207,188,158,255,206,188,157,255,205,188,156,255,206,187,156,255,205,186,156,255,205,186,155,255,204,185,154,255,205,186,154,255, -204,186,153,255,205,185,153,255,203,184,152,255,203,183,151,255,203,183,151,255,201,181,149,255,201,181,149,255,200,181,149,255, -201,180,147,255,200,180,147,255,200,179,146,255,199,178,145,255,198,177,144,255,199,178,145,255,197,176,143,255,197,176,143,255, -196,175,142,255,195,174,141,255,194,173,140,255,194,172,140,255,194,173,140,255,195,173,140,255,197,177,144,255,202,183,151,255, -211,196,170,255,222,212,193,255,229,222,208,255,229,222,209,255,225,216,200,255,219,207,186,255,211,195,171,255,175,153,126,255, -115, 88, 74,255,117, 91, 78,255,135,107, 89,255,140,114, 94,255,160,136,110,255,197,178,147,255,214,200,175,255,215,201,176,255, -213,200,175,255,221,210,191,255,218,208,190,255,208,198,181,255,198,185,168,255,153,131,111,255,116, 99, 90,255,109, 95, 86,255, -138,111, 91,255,169,144,117,255,182,159,129,255,200,180,149,255,220,208,186,255,223,212,194,255,218,204,182,255,209,193,168,255, -199,180,151,255,188,166,136,255,155,132,108,255,176,160,138,255,205,187,158,255,204,187,157,255,184,167,145,255,172,152,130,255, -103, 91, 82,255, 60, 61, 61,255, 60, 60, 60,255,142,134,121,255,216,201,176,255,215,199,174,255,215,198,173,255,214,199,174,255, -215,200,174,255,215,199,174,255,214,200,175,255,215,198,173,255,214,199,173,255,213,197,172,255,212,196,170,255,212,196,169,255, -211,195,167,255,210,194,166,255,210,193,165,255,209,192,163,255,208,191,162,255,208,191,161,255,208,189,159,255,208,189,159,255, -207,188,158,255,206,187,157,255,205,188,156,255,205,187,156,255,205,186,155,255,204,185,154,255,205,186,155,255,205,186,153,255, -205,186,153,255,204,185,154,255,204,184,152,255,203,183,151,255,203,183,151,255,201,181,149,255,201,181,149,255,200,181,148,255, -201,179,146,255,200,180,147,255,199,179,146,255,199,178,145,255,199,177,144,255,198,178,145,255,197,176,143,255,196,175,143,255, -196,175,142,255,194,173,140,255,194,172,139,255,193,172,140,255,193,172,140,255,193,172,139,255,195,175,142,255,199,180,147,255, -208,191,164,255,218,207,186,255,228,220,206,255,231,225,213,255,230,224,212,255,221,212,195,255,213,203,185,255,194,181,165,255, -132,105, 89,255,133,105, 87,255,136,109, 89,255,124, 95, 79,255,135,108, 89,255,169,146,119,255,196,176,145,255,195,174,143,255, -175,152,123,255,172,149,122,255,170,147,123,255,193,173,144,255,195,175,145,255,141,115, 94,255, 85, 63, 54,255, 77, 68, 64,255, - 76, 57, 51,255,121, 95, 79,255,172,148,120,255,193,171,139,255,214,200,176,255,229,221,207,255,230,224,211,255,226,218,204,255, -224,215,200,255,224,215,201,255,218,206,187,255,184,166,141,255,188,167,135,255,175,153,124,255,155,133,114,255,122, 95, 82,255, - 85, 69, 64,255, 61, 61, 61,255, 60, 60, 60,255,141,133,120,255,215,199,174,255,213,198,173,255,214,198,173,255,214,199,173,255, -214,199,174,255,215,199,174,255,214,200,174,255,215,199,174,255,214,198,173,255,214,198,172,255,213,197,171,255,212,196,169,255, -212,195,168,255,211,194,166,255,210,193,165,255,209,192,163,255,208,191,162,255,208,191,161,255,207,189,159,255,208,189,159,255, -207,188,158,255,206,188,157,255,205,187,156,255,206,187,156,255,204,185,154,255,205,186,154,255,205,185,154,255,205,186,154,255, -205,185,154,255,204,185,153,255,203,184,152,255,203,184,152,255,203,183,151,255,201,181,149,255,201,180,148,255,201,180,147,255, -200,180,146,255,199,179,146,255,200,178,146,255,199,178,145,255,198,178,145,255,198,176,143,255,197,176,143,255,196,175,142,255, -195,174,142,255,193,173,140,255,193,171,139,255,192,170,138,255,191,170,138,255,192,171,138,255,193,172,139,255,197,176,142,255, -203,184,154,255,213,198,174,255,223,213,195,255,228,222,208,255,228,222,208,255,220,210,190,255,196,178,146,255,155,129,103,255, -134,107, 88,255,145,119, 98,255,145,118, 96,255,116, 88, 74,255,115, 85, 72,255,148,122,100,255,168,144,117,255,167,142,116,255, -140,112, 93,255,105, 78, 66,255,112, 85, 72,255,186,164,133,255,200,180,148,255,176,151,123,255,124, 98, 82,255, 83, 67, 60,255, - 70, 61, 57,255, 67, 52, 47,255,147,123,102,255,198,177,146,255,207,189,160,255,216,203,181,255,225,216,199,255,225,216,200,255, -192,176,155,255,180,160,133,255,173,149,122,255,165,142,115,255,145,122,102,255,129,103, 87,255,102, 76, 65,255,102, 74, 63,255, - 83, 69, 63,255, 61, 61, 61,255, 60, 60, 60,255,140,131,117,255,212,195,168,255,211,194,167,255,212,196,169,255,213,197,171,255, -213,198,173,255,214,199,174,255,215,199,175,255,214,199,174,255,215,199,174,255,213,199,173,255,213,198,172,255,213,197,171,255, -211,195,168,255,211,194,167,255,210,193,166,255,209,192,163,255,208,191,162,255,208,191,161,255,208,189,159,255,207,189,159,255, -207,188,158,255,206,187,156,255,206,187,156,255,205,186,155,255,204,185,155,255,204,185,154,255,205,186,154,255,205,185,154,255, -204,185,153,255,204,184,153,255,203,184,152,255,202,183,151,255,203,183,151,255,201,181,149,255,200,181,148,255,201,180,147,255, -199,179,146,255,200,179,146,255,199,179,146,255,198,178,145,255,198,177,144,255,198,177,144,255,196,175,143,255,196,175,142,255, -194,173,141,255,193,172,140,255,193,171,139,255,191,170,138,255,191,169,137,255,191,170,137,255,191,170,138,255,193,172,139,255, -196,176,143,255,204,186,155,255,213,199,174,255,219,208,189,255,220,210,191,255,214,201,178,255,202,184,155,255,185,164,134,255, -175,153,124,255,181,159,130,255,179,157,128,255,146,120, 98,255,125, 97, 81,255,150,123,101,255,173,149,120,255,177,153,124,255, -152,126,102,255, 99, 74, 63,255, 84, 64, 56,255,177,153,125,255,211,194,165,255,207,188,158,255,177,154,125,255,115, 90, 75,255, - 76, 67, 62,255, 63, 51, 47,255,140,121,102,255,202,184,154,255,207,191,163,255,214,201,177,255,205,191,168,255,157,141,125,255, -132,108, 90,255,149,123,100,255,128,100, 84,255,112, 85, 72,255,104, 76, 65,255,109, 80, 68,255, 87, 63, 55,255, 91, 68, 59,255, - 92, 77, 69,255, 61, 61, 61,255, 60, 60, 60,255,138,129,113,255,208,190,158,255,207,189,157,255,208,190,160,255,209,192,164,255, -212,195,168,255,213,198,172,255,214,198,173,255,214,200,175,255,215,200,175,255,214,199,174,255,213,198,172,255,213,197,171,255, -212,196,169,255,211,194,167,255,211,194,166,255,209,192,163,255,208,191,162,255,208,190,161,255,207,189,159,255,206,188,158,255, -207,187,158,255,205,187,156,255,206,186,155,255,205,185,155,255,204,185,153,255,205,186,154,255,204,185,153,255,204,184,153,255, -203,184,152,255,203,185,153,255,203,183,151,255,202,183,151,255,203,183,151,255,201,181,149,255,200,181,148,255,200,180,147,255, -199,179,146,255,200,178,145,255,199,179,146,255,198,177,144,255,198,177,144,255,197,176,144,255,196,175,142,255,195,174,142,255, -195,174,141,255,193,172,140,255,193,171,139,255,191,169,137,255,190,170,138,255,191,169,137,255,191,169,137,255,190,169,137,255, -192,170,138,255,195,174,142,255,200,181,149,255,205,189,160,255,208,192,165,255,207,191,164,255,205,188,158,255,202,184,154,255, -201,183,152,255,203,185,155,255,201,183,152,255,183,161,131,255,167,143,116,255,180,157,128,255,205,187,159,255,216,202,180,255, -205,188,163,255,149,124,103,255, 90, 67, 58,255,137,111, 91,255,182,160,131,255,198,177,145,255,193,171,138,255,157,131,107,255, - 81, 66, 59,255, 63, 49, 44,255,142,126,107,255,193,172,141,255,192,171,139,255,184,163,133,255,148,123,101,255,116, 95, 82,255, -111, 87, 75,255,143,117, 96,255,117, 89, 75,255, 97, 76, 66,255,128,100, 84,255,148,121,100,255,127, 99, 82,255, 79, 61, 53,255, - 94, 80, 72,255, 61, 61, 61,255, 60, 60, 60,255,133,123,106,255,200,179,146,255,200,179,147,255,203,182,150,255,206,187,155,255, -208,191,162,255,211,195,168,255,213,198,172,255,215,200,176,255,215,200,176,255,214,200,175,255,214,199,174,255,214,198,172,255, -213,197,170,255,211,195,168,255,211,194,166,255,209,192,165,255,209,191,162,255,208,190,161,255,208,190,159,255,206,188,158,255, -206,188,157,255,206,186,155,255,205,186,155,255,205,186,154,255,204,185,154,255,204,185,153,255,203,185,153,255,204,184,152,255, -204,184,152,255,203,184,152,255,202,184,152,255,203,184,152,255,203,183,151,255,201,182,149,255,201,181,148,255,200,180,147,255, -200,179,146,255,199,178,145,255,199,178,145,255,197,177,144,255,197,176,143,255,197,176,143,255,196,175,142,255,195,174,142,255, -195,174,141,255,193,172,139,255,193,171,139,255,191,170,138,255,190,170,138,255,190,169,137,255,189,167,135,255,189,167,135,255, -189,168,136,255,191,169,137,255,193,171,139,255,195,174,141,255,196,176,144,255,198,177,144,255,199,179,146,255,201,181,150,255, -202,183,151,255,203,184,153,255,200,181,149,255,194,173,140,255,190,169,136,255,198,179,147,255,214,200,177,255,221,211,193,255, -218,207,187,255,193,174,145,255,143,117, 96,255,128,101, 83,255,144,118, 97,255,162,137,112,255,171,147,120,255,160,133,109,255, - 93, 71, 61,255, 57, 44, 41,255,136,121,104,255,190,168,136,255,192,172,140,255,159,136,111,255,138,112, 92,255,108, 87, 77,255, - 90, 71, 63,255,146,119, 98,255,148,122,100,255,113, 89, 78,255,144,117, 96,255,184,162,131,255,191,170,139,255,154,130,108,255, -113,105, 96,255, 60, 60, 61,255, 60, 60, 61,255,125,114, 98,255,187,165,133,255,190,168,136,255,195,174,141,255,201,180,147,255, -205,186,155,255,209,191,163,255,213,197,171,255,215,200,175,255,215,201,177,255,214,200,176,255,215,199,174,255,214,198,173,255, -212,196,170,255,212,195,169,255,211,194,167,255,209,192,165,255,209,191,162,255,208,190,161,255,207,189,159,255,206,188,157,255, -206,187,156,255,205,186,155,255,205,185,154,255,204,185,153,255,203,184,153,255,204,184,152,255,204,184,152,255,204,184,152,255, -203,184,152,255,203,184,152,255,203,184,152,255,202,183,151,255,203,183,150,255,201,182,149,255,201,181,148,255,200,180,147,255, -199,179,146,255,199,179,146,255,199,178,145,255,197,177,144,255,197,177,144,255,196,176,142,255,196,175,142,255,195,174,142,255, -195,174,141,255,193,172,139,255,193,172,139,255,191,170,139,255,191,170,137,255,190,169,137,255,190,168,136,255,189,168,136,255, -189,167,135,255,189,168,136,255,190,168,137,255,191,169,137,255,191,170,138,255,192,171,138,255,193,172,139,255,195,174,141,255, -196,175,143,255,197,176,143,255,195,174,142,255,192,171,139,255,192,171,138,255,195,175,142,255,203,185,154,255,210,195,169,255, -212,198,173,255,206,189,159,255,190,168,137,255,168,143,116,255,154,128,104,255,151,125,103,255,154,128,105,255,151,125,103,255, -119, 93, 77,255, 62, 48, 43,255,133,118,101,255,200,181,152,255,205,187,159,255,180,157,127,255,144,117, 95,255,110, 85, 73,255, - 77, 64, 58,255,103, 76, 65,255,113, 88, 75,255,103, 76, 66,255,110, 83, 70,255,166,143,118,255,179,160,135,255,157,133,111,255, -109, 96, 84,255, 60, 61, 61,255, 60, 60, 61,255,118,106, 92,255,174,150,122,255,180,156,127,255,187,164,133,255,195,173,140,255, -201,181,148,255,207,188,159,255,211,195,168,255,215,200,176,255,216,202,178,255,216,201,177,255,214,200,175,255,214,199,174,255, -213,198,172,255,212,195,169,255,211,194,167,255,209,192,163,255,208,191,162,255,208,190,160,255,206,188,158,255,206,187,157,255, -206,187,156,255,204,185,154,255,204,184,153,255,203,185,153,255,204,183,151,255,203,184,152,255,202,183,151,255,203,183,151,255, -203,183,151,255,203,183,151,255,202,183,151,255,203,183,150,255,202,183,149,255,202,181,149,255,201,181,149,255,201,180,148,255, -199,179,146,255,199,179,146,255,199,178,145,255,197,177,144,255,197,177,144,255,196,176,143,255,196,175,143,255,195,174,142,255, -194,173,141,255,194,173,140,255,193,172,140,255,192,171,138,255,191,170,138,255,192,170,137,255,190,169,137,255,191,168,136,255, -190,168,136,255,189,168,136,255,189,168,136,255,190,168,136,255,191,169,137,255,192,170,138,255,191,170,138,255,193,172,140,255, -194,173,140,255,194,173,140,255,192,171,139,255,191,170,138,255,191,170,138,255,195,174,141,255,201,182,149,255,208,191,163,255, -212,196,172,255,213,198,172,255,209,192,164,255,203,183,153,255,192,171,140,255,181,158,128,255,173,149,121,255,166,141,115,255, -150,124,101,255,100, 76, 63,255,134,119,102,255,219,208,188,255,224,214,197,255,216,203,181,255,199,181,155,255,164,141,116,255, -136,116,100,255,116, 89, 75,255, 91, 70, 63,255,123, 98, 82,255,110, 85, 73,255,147,124,104,255,153,128,104,255,154,128,105,255, -107, 94, 82,255, 60, 61, 61,255, 60, 61, 61,255,114,101, 88,255,166,141,115,255,170,146,119,255,179,155,126,255,188,165,135,255, -197,176,143,255,205,186,155,255,210,194,167,255,215,200,176,255,216,202,179,255,216,202,178,255,215,200,177,255,215,200,175,255, -214,198,173,255,212,196,170,255,211,194,166,255,209,193,163,255,208,191,161,255,208,189,159,255,206,187,157,255,205,187,155,255, -205,185,154,255,204,184,153,255,203,184,152,255,203,183,151,255,202,183,151,255,202,182,150,255,202,182,150,255,201,181,149,255, -201,182,150,255,202,182,150,255,202,182,149,255,202,182,149,255,202,182,149,255,201,182,149,255,201,181,148,255,201,180,148,255, -199,179,146,255,199,179,146,255,199,178,145,255,197,177,144,255,197,176,143,255,197,176,144,255,196,175,142,255,196,175,142,255, -194,174,142,255,194,173,140,255,194,173,140,255,193,172,140,255,192,171,139,255,192,171,139,255,192,170,138,255,191,170,138,255, -191,170,138,255,191,169,137,255,191,169,137,255,191,170,138,255,191,170,138,255,191,170,138,255,192,171,138,255,193,172,139,255, -193,172,140,255,193,172,140,255,193,172,139,255,193,172,139,255,194,173,140,255,198,177,145,255,202,184,153,255,209,194,168,255, -216,204,182,255,222,211,193,255,225,216,200,255,226,217,201,255,224,214,196,255,221,209,189,255,217,204,181,255,212,198,174,255, -204,188,162,255,170,148,124,255,139,114, 96,255,159,139,118,255,175,156,137,255,177,160,144,255,158,141,127,255,148,129,113,255, -178,155,127,255,171,146,119,255,119, 94, 78,255,135,116, 98,255,133,113, 99,255,127,103, 87,255,162,137,112,255,168,142,116,255, -119,106, 92,255, 60, 60, 61,255, 60, 61, 61,255,112, 99, 86,255,161,136,111,255,164,139,113,255,171,146,119,255,181,158,128,255, -191,170,138,255,202,183,151,255,210,194,167,255,215,201,177,255,217,203,180,255,216,203,180,255,216,202,178,255,215,201,176,255, -213,199,172,255,212,196,170,255,211,194,166,255,209,192,164,255,208,190,160,255,207,188,158,255,206,187,156,255,205,185,153,255, -204,184,152,255,203,184,152,255,203,183,151,255,202,182,150,255,202,182,150,255,202,181,149,255,202,181,149,255,201,181,149,255, -201,181,149,255,201,181,148,255,201,181,148,255,202,182,149,255,201,181,148,255,201,181,148,255,200,180,148,255,201,181,148,255, -200,180,147,255,199,179,146,255,199,178,145,255,197,177,144,255,198,177,144,255,196,177,144,255,196,176,143,255,195,175,142,255, -195,175,142,255,194,173,140,255,194,173,140,255,194,173,139,255,193,172,139,255,192,171,139,255,192,171,138,255,191,170,138,255, -191,170,138,255,191,170,138,255,191,170,138,255,191,170,138,255,192,171,139,255,192,171,138,255,192,171,139,255,193,171,140,255, -193,172,139,255,194,173,140,255,194,173,139,255,194,172,140,255,194,174,141,255,197,177,144,255,202,183,152,255,207,192,165,255, -214,202,179,255,219,209,191,255,223,215,198,255,225,217,201,255,225,216,202,255,226,219,204,255,227,220,204,255,225,217,199,255, -196,180,155,255,145,120,100,255, 95, 72, 62,255, 81, 62, 53,255, 83, 64, 54,255,100, 76, 63,255, 76, 59, 50,255, 64, 51, 45,255, -102, 81, 69,255,158,132,108,255,159,134,109,255,125,102, 89,255,113, 89, 77,255,135,115, 99,255,192,173,145,255,209,195,171,255, -139,132,120,255, 60, 60, 60,255, 60, 61, 61,255,114,101, 88,255,159,133,108,255,158,132,108,255,163,138,113,255,174,149,121,255, -184,162,131,255,197,176,143,255,209,192,162,255,216,202,179,255,218,205,182,255,218,205,183,255,216,203,180,255,216,201,177,255, -215,199,174,255,212,197,170,255,211,194,165,255,209,191,162,255,207,189,159,255,206,187,156,255,205,185,154,255,203,184,152,255, -203,183,151,255,202,182,149,255,201,181,149,255,201,180,148,255,201,181,148,255,200,180,147,255,200,181,147,255,200,179,147,255, -200,179,148,255,200,179,147,255,200,181,148,255,200,180,147,255,200,180,148,255,201,181,147,255,201,181,148,255,201,181,148,255, -199,179,147,255,200,179,146,255,199,179,146,255,197,177,144,255,197,178,145,255,198,177,144,255,196,176,143,255,196,176,143,255, -196,175,142,255,194,174,141,255,195,174,140,255,194,173,141,255,194,173,140,255,193,172,139,255,193,172,139,255,193,172,138,255, -193,172,139,255,193,172,139,255,193,172,139,255,193,172,139,255,193,172,139,255,192,171,140,255,192,171,140,255,193,173,139,255, -192,172,140,255,192,173,140,255,192,171,139,255,192,172,139,255,193,172,139,255,194,174,141,255,196,176,144,255,201,182,151,255, -205,189,161,255,210,195,169,255,211,197,173,255,211,197,173,255,208,193,168,255,202,188,165,255,196,184,166,255,184,166,146,255, -169,146,119,255,189,167,137,255,133,110, 91,255, 83, 67, 58,255, 78, 64, 57,255, 96, 75, 65,255, 95, 74, 63,255, 68, 55, 49,255, - 60, 49, 44,255, 93, 73, 63,255,154,128,105,255,155,131,109,255,140,116, 99,255,142,117, 98,255,186,165,137,255,212,199,178,255, -144,139,130,255, 60, 60, 60,255, 60, 61, 61,255,115,102, 88,255,159,133,108,255,157,131,107,255,161,136,111,255,169,146,118,255, -180,158,128,255,194,173,140,255,206,189,160,255,217,203,180,255,219,207,186,255,219,206,184,255,218,204,181,255,216,202,178,255, -215,200,174,255,212,196,169,255,211,193,165,255,208,191,161,255,207,188,157,255,206,186,154,255,204,184,152,255,203,183,150,255, -201,181,148,255,201,180,148,255,201,180,147,255,200,180,147,255,200,179,146,255,199,179,146,255,199,179,146,255,199,179,146,255, -199,178,146,255,199,179,146,255,199,179,146,255,200,179,147,255,200,179,147,255,200,180,147,255,200,180,148,255,199,179,147,255, -200,180,146,255,200,180,147,255,199,179,146,255,198,178,145,255,197,177,144,255,198,177,144,255,197,176,143,255,197,176,143,255, -195,176,143,255,195,174,141,255,195,174,142,255,195,174,141,255,194,173,141,255,193,173,141,255,194,173,140,255,193,172,140,255, -193,172,140,255,193,172,140,255,193,172,140,255,192,172,140,255,192,172,140,255,193,172,139,255,193,172,140,255,192,172,140,255, -192,172,139,255,192,171,139,255,191,171,138,255,191,171,138,255,190,170,137,255,190,169,137,255,189,168,136,255,191,170,138,255, -194,173,141,255,195,175,143,255,193,173,142,255,181,159,129,255,162,138,114,255,122, 94, 78,255,115, 85, 70,255,147,121, 98,255, -145,118, 97,255,194,176,152,255,219,205,183,255,166,148,127,255,111, 89, 75,255,109, 90, 81,255,153,128,106,255,129,108, 91,255, - 81, 66, 55,255, 60, 48, 44,255, 91, 72, 62,255,116, 97, 83,255,109, 85, 76,255,121, 94, 78,255,148,122, 99,255,202,182,151,255, -143,136,125,255, 60, 60, 60,255, 60, 60, 60,255,129,119,106,255,175,151,124,255,170,147,119,255,172,149,121,255,176,154,124,255, -186,165,133,255,200,180,149,255,211,195,170,255,219,207,188,255,221,209,190,255,220,207,186,255,218,205,182,255,217,202,179,255, -215,200,174,255,212,196,168,255,210,193,164,255,208,190,159,255,205,186,155,255,204,184,152,255,203,182,149,255,201,180,148,255, -200,180,147,255,200,179,146,255,199,178,145,255,199,178,144,255,198,177,144,255,198,177,144,255,199,178,145,255,199,178,145,255, -199,178,145,255,199,178,145,255,199,178,145,255,199,179,146,255,199,179,146,255,200,180,147,255,199,179,147,255,199,179,146,255, -200,180,147,255,200,180,147,255,199,179,146,255,198,178,145,255,197,177,144,255,197,178,145,255,197,176,143,255,196,176,143,255, -196,176,143,255,195,175,142,255,195,175,142,255,194,174,142,255,194,174,141,255,194,173,140,255,193,173,141,255,193,172,140,255, -194,172,140,255,194,173,140,255,193,173,139,255,193,173,139,255,193,172,140,255,192,172,140,255,193,172,140,255,192,171,139,255, -192,171,139,255,192,171,139,255,191,170,138,255,189,168,136,255,188,166,135,255,186,165,134,255,184,163,132,255,182,161,130,255, -182,160,129,255,180,158,127,255,173,151,122,255,162,138,112,255,163,139,113,255,150,124,102,255,152,127,104,255,181,159,130,255, -168,144,117,255,158,134,110,255,217,203,181,255,227,218,202,255,194,177,154,255,158,135,112,255,204,189,163,255,217,205,187,255, -191,175,154,255,129,108, 90,255, 70, 57, 52,255, 62, 52, 49,255, 88, 72, 65,255, 94, 68, 58,255, 86, 68, 58,255,160,137,113,255, -133,124,111,255, 60, 60, 60,255, 60, 60, 60,255,140,133,121,255,204,186,158,255,200,182,152,255,199,180,149,255,192,172,139,255, -197,177,146,255,209,194,167,255,218,207,187,255,225,215,199,255,223,213,195,255,221,209,188,255,219,206,184,255,217,203,179,255, -215,199,174,255,212,195,168,255,209,191,162,255,206,187,157,255,205,185,152,255,203,182,149,255,200,179,146,255,199,178,145,255, -198,177,144,255,197,176,143,255,197,176,143,255,197,175,142,255,196,175,142,255,196,175,142,255,196,175,142,255,197,176,143,255, -197,176,143,255,197,176,143,255,197,178,145,255,198,177,144,255,199,178,145,255,197,177,144,255,199,179,146,255,199,179,146,255, -199,179,146,255,198,178,146,255,198,178,145,255,199,179,146,255,198,178,145,255,197,178,145,255,197,176,143,255,196,177,144,255, -196,176,143,255,196,176,143,255,195,175,142,255,196,175,142,255,194,175,142,255,195,175,142,255,195,173,141,255,194,174,141,255, -194,174,140,255,193,172,141,255,194,172,141,255,194,173,140,255,192,173,140,255,193,172,139,255,193,171,140,255,192,171,139,255, -191,170,138,255,191,170,138,255,189,168,136,255,188,167,136,255,187,165,134,255,184,163,132,255,181,159,129,255,178,156,126,255, -174,152,123,255,170,147,119,255,163,139,113,255,158,133,109,255,159,135,110,255,156,132,108,255,165,142,116,255,201,184,156,255, -205,190,164,255,182,160,131,255,203,184,153,255,177,155,128,255,182,161,130,255,187,167,135,255,209,193,167,255,228,220,206,255, -231,225,212,255,217,205,186,255,132,112, 93,255, 93, 72, 62,255, 98, 86, 80,255,128,101, 84,255, 80, 62, 54,255, 76, 61, 53,255, - 91, 76, 68,255, 61, 61, 61,255, 60, 60, 61,255,127,116,101,255,175,152,123,255,179,157,129,255,194,175,145,255,201,182,151,255, -215,203,181,255,222,212,194,255,223,214,198,255,228,220,205,255,227,218,203,255,223,212,194,255,220,207,186,255,217,203,179,255, -214,198,172,255,210,193,165,255,208,190,159,255,205,186,153,255,203,182,149,255,200,179,146,255,199,178,144,255,197,175,142,255, -196,175,142,255,196,174,141,255,195,173,141,255,195,173,141,255,195,173,141,255,195,174,141,255,195,174,141,255,195,174,141,255, -196,175,142,255,196,175,142,255,197,176,143,255,197,176,144,255,197,177,144,255,198,178,145,255,198,178,145,255,198,178,145,255, -198,178,145,255,199,179,145,255,199,179,146,255,199,179,146,255,198,178,145,255,197,177,144,255,197,177,144,255,197,176,143,255, -196,176,143,255,196,176,143,255,195,176,143,255,196,175,143,255,196,174,142,255,195,175,142,255,195,174,142,255,195,173,141,255, -194,174,141,255,193,173,141,255,194,173,140,255,193,172,140,255,193,172,140,255,193,172,140,255,192,171,139,255,191,170,138,255, -191,170,138,255,190,169,137,255,188,167,135,255,187,166,135,255,185,164,133,255,183,161,131,255,180,158,128,255,176,154,125,255, -173,149,122,255,167,144,117,255,163,140,113,255,160,137,111,255,160,136,111,255,160,136,111,255,164,140,114,255,183,162,132,255, -209,195,169,255,215,202,178,255,202,185,156,255,151,126,103,255,193,173,141,255,203,184,153,255,200,180,148,255,215,201,179,255, -223,215,200,255,222,213,199,255,186,169,149,255,163,142,121,255,159,135,114,255,164,139,112,255,132,104, 86,255,103, 87, 78,255, -106, 96, 87,255, 61, 61, 61,255, 60, 61, 61,255,111, 98, 85,255,147,121, 99,255,147,121, 99,255,168,145,118,255,200,182,153,255, -223,212,194,255,227,219,204,255,224,215,198,255,228,219,205,255,229,220,205,255,227,217,201,255,222,210,191,255,217,203,180,255, -213,197,170,255,209,192,162,255,206,187,155,255,203,183,150,255,200,179,146,255,198,177,143,255,196,174,141,255,195,173,140,255, -193,172,139,255,193,170,138,255,192,170,138,255,192,170,138,255,192,170,138,255,193,171,139,255,193,172,140,255,194,172,140,255, -194,173,140,255,195,174,141,255,196,175,142,255,196,175,143,255,197,176,143,255,198,177,144,255,197,177,144,255,198,178,145,255, -198,178,145,255,199,179,146,255,199,179,146,255,199,179,146,255,198,178,145,255,197,177,144,255,197,177,144,255,197,177,144,255, -196,177,144,255,196,176,143,255,196,175,143,255,196,175,143,255,196,174,143,255,195,174,142,255,194,175,142,255,195,174,142,255, -194,173,141,255,194,173,140,255,193,173,140,255,194,172,140,255,193,172,139,255,192,171,139,255,192,171,139,255,191,170,138,255, -190,170,137,255,190,169,137,255,188,166,135,255,187,165,134,255,184,163,132,255,182,160,130,255,179,157,127,255,177,154,125,255, -174,151,123,255,170,147,119,255,168,144,117,255,166,143,116,255,167,144,116,255,166,143,116,255,166,143,117,255,173,150,122,255, -190,168,137,255,199,180,149,255,192,172,140,255,182,161,130,255,198,179,148,255,209,193,167,255,200,183,153,255,184,163,135,255, -195,177,149,255,184,163,136,255,123,104, 91,255,121, 95, 80,255,160,141,122,255,202,184,156,255,188,167,140,255,149,125,105,255, -131,120,105,255, 60, 60, 61,255, 61, 61, 61,255,103, 89, 79,255,141,114, 94,255,159,135,110,255,161,137,111,255,163,138,112,255, -182,160,130,255,214,198,176,255,225,215,199,255,227,219,204,255,229,221,206,255,227,218,203,255,222,211,191,255,217,203,179,255, -211,194,166,255,207,189,158,255,204,184,151,255,200,179,146,255,198,176,143,255,195,173,140,255,192,170,138,255,191,169,137,255, -190,168,136,255,189,167,135,255,189,167,135,255,189,167,135,255,189,167,135,255,190,168,136,255,191,169,137,255,191,170,137,255, -192,171,139,255,193,172,139,255,194,173,141,255,195,174,141,255,195,175,142,255,196,176,143,255,197,176,143,255,198,177,144,255, -198,178,145,255,199,179,146,255,198,178,145,255,199,179,146,255,198,178,145,255,199,179,146,255,198,178,145,255,198,177,145,255, -197,176,144,255,197,176,144,255,196,176,143,255,195,175,142,255,196,176,142,255,195,176,143,255,196,174,142,255,194,174,141,255, -195,174,142,255,194,174,141,255,193,174,140,255,193,173,140,255,193,172,140,255,192,171,139,255,192,171,139,255,190,170,137,255, -190,169,137,255,189,168,136,255,187,166,134,255,186,164,133,255,184,163,132,255,182,160,130,255,180,157,128,255,177,155,126,255, -174,152,123,255,172,149,122,255,172,149,121,255,172,148,121,255,172,149,121,255,173,150,122,255,173,150,122,255,175,153,124,255, -179,157,127,255,183,162,131,255,184,162,131,255,183,161,130,255,193,172,140,255,203,184,154,255,186,166,135,255,170,148,120,255, -201,181,151,255,188,167,136,255,146,122,101,255,148,122,100,255,134,113,100,255,168,146,123,255,168,145,121,255,102, 79, 69,255, - 69, 65, 61,255, 61, 61, 61,255, 60, 60, 60,255,129,122,111,255,213,202,186,255,215,205,184,255,188,168,142,255,165,140,114,255, -163,138,111,255,193,174,146,255,224,215,198,255,228,221,207,255,228,220,205,255,224,213,195,255,219,207,185,255,214,199,172,255, -210,191,162,255,205,185,153,255,201,180,146,255,197,175,142,255,194,172,140,255,192,169,137,255,189,166,135,255,188,165,133,255, -186,164,133,255,186,163,132,255,186,163,132,255,186,163,133,255,187,164,133,255,187,165,134,255,188,166,134,255,189,167,136,255, -190,169,137,255,192,170,138,255,193,172,139,255,194,173,140,255,194,174,141,255,196,175,142,255,196,176,143,255,197,177,144,255, -198,178,145,255,198,178,145,255,199,179,146,255,198,178,146,255,199,179,146,255,199,179,146,255,198,178,145,255,198,178,145,255, -197,177,144,255,196,176,143,255,197,177,144,255,195,175,142,255,196,176,143,255,196,176,143,255,195,174,142,255,194,175,141,255, -195,174,141,255,194,173,140,255,194,173,140,255,193,172,139,255,192,172,140,255,192,171,139,255,192,171,139,255,190,169,137,255, -190,169,137,255,188,167,135,255,187,166,134,255,186,164,133,255,184,163,132,255,182,160,130,255,180,158,128,255,178,156,127,255, -176,154,125,255,175,153,124,255,174,152,124,255,175,153,124,255,176,153,124,255,176,154,125,255,178,155,126,255,180,157,127,255, -181,160,129,255,183,160,130,255,182,160,130,255,181,159,129,255,184,163,132,255,190,170,138,255,189,168,137,255,191,171,141,255, -195,176,148,255,171,148,122,255,166,144,119,255,162,139,115,255,149,124,103,255,153,135,112,255,128,115, 96,255, 84, 71, 59,255, - 21, 22, 23,255, 62, 62, 62,255, 60, 60, 60,255,139,134,123,255,197,181,159,255,202,187,164,255,212,200,179,255,200,184,159,255, -190,172,147,255,205,191,167,255,228,221,207,255,231,224,211,255,225,214,196,255,219,206,184,255,216,201,176,255,210,193,164,255, -206,187,155,255,202,181,147,255,197,176,142,255,193,171,139,255,190,168,135,255,187,165,133,255,185,162,131,255,183,160,130,255, -182,159,129,255,182,159,129,255,182,159,129,255,182,160,130,255,183,160,130,255,184,162,131,255,186,163,133,255,187,164,133,255, -188,166,135,255,190,168,137,255,192,170,138,255,193,172,140,255,194,173,141,255,196,175,142,255,196,176,143,255,197,177,144,255, -198,178,145,255,198,178,145,255,198,178,146,255,199,179,146,255,199,179,146,255,198,179,146,255,198,178,145,255,197,177,144,255, -198,178,145,255,196,176,143,255,197,177,144,255,196,175,142,255,195,176,143,255,195,176,143,255,195,174,141,255,195,175,141,255, -194,174,141,255,194,174,141,255,193,173,140,255,193,173,140,255,192,171,139,255,192,171,139,255,191,170,138,255,190,169,137,255, -189,168,136,255,188,167,135,255,187,165,134,255,185,164,133,255,184,163,132,255,182,161,130,255,181,159,129,255,179,157,127,255, -178,156,126,255,178,155,126,255,177,155,125,255,177,155,125,255,178,156,126,255,179,157,127,255,180,158,129,255,182,161,130,255, -184,162,131,255,184,163,132,255,182,161,130,255,179,157,128,255,177,155,125,255,175,153,124,255,170,147,119,255,161,137,113,255, -152,128,105,255,137,112, 94,255,122, 94, 80,255,124, 95, 80,255, 99, 80, 66,255, 15, 13, 11,255, 2, 2, 2,255, 0, 0, 0,255, - 29, 29, 29,255, 61, 61, 61,255, 60, 60, 60,255,138,130,116,255,176,158,135,255,170,145,118,255,163,139,112,255,166,142,115,255, -197,179,150,255,225,216,199,255,228,220,205,255,228,219,204,255,225,216,199,255,221,209,190,255,215,200,175,255,207,189,158,255, -201,181,147,255,197,175,142,255,192,170,138,255,189,166,135,255,185,162,131,255,183,160,129,255,180,157,127,255,179,156,126,255, -178,154,125,255,177,154,125,255,178,154,126,255,179,155,126,255,179,156,127,255,181,158,129,255,183,160,130,255,184,163,131,255, -186,164,133,255,188,167,135,255,191,170,138,255,192,171,139,255,193,173,140,255,195,175,142,255,196,175,143,255,196,176,143,255, -198,178,145,255,197,177,144,255,199,178,145,255,198,178,146,255,199,179,146,255,198,179,146,255,197,178,145,255,197,178,145,255, -198,178,145,255,197,177,144,255,197,176,143,255,197,177,144,255,197,176,143,255,196,176,143,255,196,176,143,255,195,174,142,255, -194,175,141,255,194,173,141,255,193,174,140,255,193,173,140,255,192,171,139,255,191,170,138,255,191,170,138,255,189,168,136,255, -189,168,136,255,188,167,135,255,186,165,133,255,185,164,133,255,184,163,132,255,182,161,130,255,181,159,129,255,180,158,128,255, -179,157,127,255,179,157,127,255,179,157,127,255,180,158,128,255,180,158,128,255,181,159,129,255,182,161,130,255,182,161,130,255, -183,162,131,255,183,162,131,255,181,159,129,255,177,155,125,255,172,150,121,255,166,142,115,255,155,131,107,255,143,118, 97,255, -125, 97, 81,255,113, 83, 71,255,119, 89, 75,255, 89, 68, 57,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 60, 60, 61,255,129,118,102,255,192,173,146,255,183,162,136,255,151,125,101,255,161,137,111,255, -205,190,164,255,228,221,206,255,228,219,204,255,226,217,202,255,227,220,206,255,226,217,202,255,217,204,182,255,205,185,153,255, -197,176,142,255,192,169,137,255,187,164,134,255,184,161,130,255,180,157,127,255,178,154,125,255,176,152,123,255,174,150,122,255, -173,149,121,255,173,149,121,255,173,149,122,255,174,151,123,255,176,152,124,255,177,155,125,255,179,157,127,255,182,160,129,255, -184,163,132,255,187,166,134,255,190,168,137,255,191,170,138,255,193,172,140,255,195,175,142,255,196,176,143,255,197,177,144,255, -198,178,145,255,198,178,145,255,198,178,146,255,197,179,146,255,198,179,146,255,198,179,146,255,198,179,146,255,198,179,146,255, -198,178,145,255,198,178,145,255,197,177,144,255,196,177,144,255,197,177,144,255,196,176,143,255,195,175,142,255,195,175,142,255, -195,175,142,255,193,173,140,255,193,173,140,255,193,173,140,255,192,171,139,255,191,170,138,255,191,170,138,255,189,168,136,255, -188,167,135,255,188,167,135,255,186,165,133,255,185,164,133,255,184,163,132,255,182,161,130,255,182,160,130,255,181,159,129,255, -180,158,128,255,180,158,128,255,180,158,128,255,180,158,128,255,180,158,128,255,182,160,130,255,182,160,130,255,182,161,130,255, -182,161,130,255,181,159,129,255,178,156,126,255,174,151,123,255,166,143,116,255,157,132,108,255,144,119, 98,255,129,101, 85,255, -118, 89, 75,255,118, 90, 76,255, 82, 62, 53,255, 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 60, 60, 61,255,119,107, 92,255,183,161,131,255,202,189,168,255,194,179,159,255,203,187,162,255, -223,214,197,255,231,226,213,255,226,218,203,255,217,206,185,255,222,213,196,255,219,207,188,255,212,196,171,255,197,177,144,255, -191,170,137,255,186,163,132,255,181,158,128,255,177,154,125,255,175,151,123,255,172,148,121,255,170,145,118,255,169,144,117,255, -168,143,116,255,167,143,116,255,168,144,117,255,170,146,119,255,171,148,120,255,174,151,123,255,176,154,125,255,179,157,128,255, -183,161,131,255,186,164,133,255,189,168,136,255,192,171,139,255,193,173,140,255,195,175,142,255,196,176,143,255,197,177,144,255, -198,178,145,255,198,178,145,255,198,178,146,255,198,179,146,255,198,179,146,255,199,178,146,255,198,178,145,255,198,178,145,255, -198,178,145,255,197,177,144,255,197,177,144,255,197,177,144,255,196,176,143,255,196,176,143,255,195,175,142,255,194,174,141,255, -194,174,141,255,193,173,140,255,193,173,140,255,193,173,140,255,191,171,138,255,191,170,138,255,190,169,137,255,189,168,136,255, -188,167,135,255,188,167,135,255,186,165,133,255,185,164,133,255,184,163,132,255,182,161,130,255,182,161,130,255,181,160,129,255, -180,158,128,255,181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,181,159,129,255,180,158,128,255, -179,157,127,255,177,155,126,255,174,151,122,255,168,144,117,255,159,135,110,255,148,122,100,255,133,107, 89,255,124, 96, 80,255, -122, 93, 79,255, 85, 64, 53,255, 2, 2, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 60, 61, 61,255,113,100, 87,255,164,138,113,255,183,160,131,255,213,198,175,255,223,213,196,255, -228,221,207,255,231,225,213,255,226,218,203,255,220,210,190,255,223,213,195,255,216,203,180,255,201,181,150,255,187,164,133,255, -186,164,132,255,181,157,128,255,175,152,123,255,172,147,120,255,168,144,117,255,166,141,115,255,164,139,113,255,162,137,112,255, -162,137,111,255,162,137,111,255,163,139,112,255,165,141,115,255,167,143,117,255,170,147,120,255,175,152,123,255,178,156,126,255, -182,160,130,255,186,164,133,255,189,168,136,255,192,171,139,255,193,173,140,255,196,175,142,255,197,177,144,255,197,177,145,255, -198,179,146,255,199,178,146,255,198,179,146,255,198,178,146,255,199,179,145,255,198,178,146,255,197,177,145,255,198,178,144,255, -197,177,145,255,196,176,143,255,197,177,144,255,197,177,144,255,196,176,143,255,195,175,142,255,195,175,142,255,194,174,141,255, -194,174,141,255,193,173,140,255,193,173,140,255,193,172,140,255,191,171,138,255,191,170,138,255,190,169,137,255,189,168,136,255, -188,167,135,255,187,166,134,255,186,164,133,255,185,163,133,255,184,163,132,255,183,161,131,255,182,161,130,255,181,160,129,255, -181,159,129,255,180,158,128,255,180,158,128,255,179,158,128,255,179,157,128,255,179,157,127,255,178,156,127,255,176,154,126,255, -175,152,124,255,171,148,120,255,166,142,116,255,159,135,111,255,150,125,102,255,138,112, 93,255,129,102, 85,255,124, 96, 80,255, - 86, 64, 54,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 60, 61, 61,255,110, 96, 84,255,154,127,104,255,155,130,106,255,167,142,114,255,184,162,133,255, -212,197,173,255,228,221,207,255,227,219,205,255,221,212,194,255,227,220,205,255,226,217,203,255,199,180,152,255,178,154,124,255, -181,159,128,255,175,152,124,255,170,145,119,255,165,141,114,255,162,137,112,255,160,134,110,255,157,132,108,255,156,130,106,255, -155,130,106,255,155,130,106,255,157,132,108,255,160,136,110,255,163,139,113,255,167,143,117,255,172,149,121,255,176,154,125,255, -181,160,130,255,186,165,134,255,190,169,137,255,193,172,140,255,195,175,142,255,196,176,144,255,198,178,145,255,198,178,146,255, -199,178,146,255,198,178,146,255,199,179,147,255,199,179,146,255,198,178,145,255,197,177,146,255,198,178,144,255,197,177,144,255, -196,176,144,255,197,177,144,255,197,177,144,255,196,176,143,255,195,175,142,255,196,176,143,255,194,174,141,255,195,175,142,255, -194,174,141,255,193,173,140,255,192,172,139,255,192,172,139,255,191,171,138,255,190,170,137,255,190,169,137,255,189,168,136,255, -188,167,135,255,187,165,134,255,185,164,133,255,184,164,133,255,184,163,132,255,183,161,131,255,182,160,130,255,182,160,130,255, -181,159,129,255,180,158,128,255,179,157,127,255,178,156,127,255,177,155,126,255,176,153,125,255,174,152,123,255,172,149,121,255, -168,145,119,255,164,140,114,255,158,134,109,255,150,125,102,255,141,115, 95,255,132,106, 88,255,128,100, 83,255, 83, 63, 54,255, - 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 60, 61, 61,255,112, 98, 86,255,153,127,104,255,149,123,100,255,152,126,103,255,157,132,107,255, -179,157,129,255,216,202,181,255,223,214,196,255,215,202,180,255,220,209,189,255,224,213,196,255,208,194,174,255,175,153,126,255, -180,156,127,255,174,151,123,255,166,142,116,255,161,135,111,255,156,130,107,255,153,127,105,255,150,123,101,255,148,121,100,255, -148,121, 99,255,148,122, 99,255,150,124,102,255,154,128,105,255,158,134,109,255,163,140,114,255,170,147,119,255,176,154,124,255, -182,161,130,255,188,167,135,255,192,172,139,255,195,175,142,255,197,177,144,255,198,178,146,255,199,180,147,255,199,180,147,255, -198,179,146,255,198,179,146,255,198,178,147,255,198,178,145,255,197,177,146,255,198,178,145,255,197,177,145,255,196,176,144,255, -197,177,144,255,196,176,143,255,196,176,143,255,195,175,142,255,196,176,143,255,195,175,142,255,194,174,141,255,194,174,141,255, -194,174,141,255,193,173,140,255,192,173,139,255,192,172,139,255,191,170,138,255,190,169,137,255,190,169,137,255,188,167,135,255, -188,166,135,255,186,165,134,255,185,164,133,255,185,163,133,255,184,162,132,255,183,161,130,255,182,160,130,255,181,159,129,255, -179,157,127,255,178,156,127,255,177,155,126,255,176,153,125,255,174,151,123,255,172,149,121,255,170,146,118,255,166,143,116,255, -161,138,112,255,156,131,107,255,149,124,102,255,142,116, 95,255,134,108, 90,255,130,102, 85,255, 88, 68, 57,255, 1, 1, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 60, 60, 61,255,125,114, 99,255,171,146,120,255,154,128,105,255,147,121, 99,255,148,122,100,255, -165,142,115,255,207,193,169,255,220,209,189,255,205,187,158,255,201,180,148,255,213,196,170,255,216,204,183,255,182,161,134,255, -178,155,126,255,176,153,125,255,166,142,116,255,157,131,108,255,151,125,103,255,147,121, 99,255,142,116, 96,255,140,112, 93,255, -138,111, 92,255,139,112, 93,255,142,116, 95,255,147,121, 99,255,154,129,105,255,161,137,112,255,169,146,119,255,177,155,125,255, -184,164,132,255,191,170,138,255,196,176,143,255,199,179,147,255,200,181,149,255,201,182,149,255,201,182,150,255,200,181,149,255, -200,180,148,255,199,180,147,255,198,179,146,255,197,178,145,255,197,177,145,255,196,176,144,255,196,176,143,255,196,176,143,255, -195,175,142,255,196,176,143,255,196,176,143,255,196,176,143,255,196,176,143,255,195,175,142,255,195,175,142,255,194,174,141,255, -193,173,140,255,193,173,140,255,192,172,139,255,192,171,139,255,191,170,138,255,190,169,137,255,190,169,137,255,188,167,135,255, -187,166,134,255,186,165,134,255,185,163,133,255,184,162,132,255,183,161,130,255,182,160,129,255,181,159,128,255,179,157,127,255, -178,156,126,255,177,154,126,255,174,152,123,255,173,150,122,255,171,148,119,255,168,144,117,255,164,140,114,255,159,136,111,255, -155,130,106,255,149,124,101,255,141,116, 95,255,136,109, 90,255,130,102, 85,255, 84, 65, 55,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,142,135,125,255,195,175,144,255,162,135,110,255,146,120, 99,255,140,114, 94,255, -167,145,120,255,212,199,176,255,190,170,142,255,175,151,122,255,184,161,130,255,204,185,155,255,220,209,189,255,190,171,147,255, -179,156,127,255,181,158,129,255,171,147,119,255,157,132,107,255,148,122,100,255,142,115, 95,255,135,108, 89,255,131,103, 86,255, -130,102, 85,255,130,103, 85,255,135,108, 89,255,141,115, 95,255,150,125,102,255,160,136,111,255,171,148,120,255,181,159,129,255, -190,169,137,255,197,177,145,255,202,183,152,255,203,185,155,255,204,186,156,255,203,185,155,255,203,184,153,255,201,182,151,255, -200,181,149,255,199,180,147,255,198,178,146,255,197,177,145,255,196,176,143,255,196,176,143,255,196,176,143,255,195,175,142,255, -196,176,143,255,196,176,143,255,195,175,142,255,195,175,142,255,195,175,142,255,194,174,141,255,195,174,142,255,194,174,141,255, -193,173,140,255,194,172,141,255,193,171,140,255,192,171,139,255,191,171,139,255,190,169,137,255,189,168,136,255,187,166,135,255, -186,165,134,255,186,164,133,255,184,163,132,255,183,162,131,255,182,160,130,255,181,159,129,255,180,157,127,255,178,155,126,255, -176,153,125,255,174,151,123,255,172,149,121,255,170,146,119,255,167,143,116,255,163,139,113,255,158,134,110,255,153,128,106,255, -148,123,101,255,141,116, 95,255,135,110, 91,255,129,101, 84,255, 64, 50, 42,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,133,123,108,255,199,183,157,255,174,151,122,255,139,115, 97,255,151,127,106,255, -204,187,160,255,181,160,135,255,155,133,111,255,160,135,110,255,175,151,122,255,201,182,151,255,222,211,191,255,197,181,160,255, -181,158,129,255,189,166,135,255,184,161,130,255,165,141,114,255,149,124,101,255,138,111, 92,255,128,100, 83,255,123, 94, 79,255, -121, 93, 78,255,122, 94, 79,255,128,100, 83,255,138,110, 91,255,150,125,102,255,164,140,115,255,177,155,126,255,189,168,136,255, -197,178,145,255,203,186,155,255,206,190,162,255,208,192,164,255,207,191,163,255,205,188,160,255,204,186,156,255,203,184,153,255, -200,181,149,255,199,179,147,255,198,178,145,255,196,176,143,255,196,176,143,255,196,176,143,255,195,175,142,255,195,175,142,255, -195,175,142,255,195,175,142,255,195,175,142,255,194,174,141,255,194,174,141,255,195,174,142,255,195,175,142,255,194,173,141,255, -194,173,141,255,193,172,140,255,192,172,139,255,192,171,139,255,190,169,138,255,189,168,136,255,188,167,135,255,187,166,134,255, -186,165,133,255,185,163,132,255,183,161,131,255,182,160,130,255,180,159,129,255,179,156,127,255,177,155,126,255,175,153,124,255, -173,150,122,255,171,148,120,255,168,145,118,255,165,141,115,255,161,138,112,255,157,132,108,255,153,128,105,255,147,122,100,255, -142,116, 95,255,136,110, 91,255,129,102, 85,255, 39, 30, 25,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 60, 60, 61,255,120,109, 95,255,186,167,143,255,193,176,152,255,158,135,112,255,202,187,164,255, -189,169,142,255,156,135,114,255,152,127,106,255,158,133,108,255,166,142,115,255,198,178,150,255,223,213,194,255,202,187,166,255, -184,162,131,255,198,176,143,255,201,180,147,255,183,161,130,255,159,133,109,255,139,112, 92,255,124, 95, 79,255,116, 87, 74,255, -114, 85, 72,255,116, 87, 74,255,124, 96, 81,255,138,111, 92,255,157,133,109,255,176,153,124,255,191,170,138,255,200,180,148,255, -204,187,157,255,209,193,166,255,210,195,170,255,211,196,170,255,209,194,167,255,207,190,163,255,204,187,157,255,203,184,153,255, -200,181,149,255,198,178,145,255,196,176,143,255,195,175,142,255,194,174,141,255,194,174,141,255,194,174,141,255,194,174,141,255, -195,174,142,255,194,175,141,255,195,174,142,255,195,175,142,255,195,175,142,255,194,174,142,255,194,173,141,255,194,173,140,255, -193,173,140,255,192,172,139,255,191,171,138,255,191,170,138,255,189,169,136,255,189,168,136,255,188,167,135,255,186,165,133,255, -185,163,133,255,183,161,132,255,182,160,130,255,180,159,129,255,178,156,127,255,177,155,126,255,175,152,124,255,172,150,122,255, -171,148,120,255,167,144,117,255,164,140,115,255,160,137,111,255,157,132,108,255,152,127,104,255,147,121,100,255,141,116, 95,255, -136,110, 91,255,119, 94, 78,255, 30, 23, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,125,116,104,255,200,182,156,255,179,160,137,255,200,188,173,255,218,210,193,255, -195,179,155,255,181,164,142,255,168,144,116,255,160,136,112,255,177,158,136,255,212,198,175,255,226,217,201,255,201,184,160,255, -190,168,136,255,205,186,154,255,212,196,168,255,203,185,153,255,175,151,123,255,144,117, 96,255,121, 93, 78,255,111, 82, 70,255, -109, 80, 68,255,114, 86, 73,255,126, 99, 82,255,144,118, 97,255,170,147,120,255,192,171,140,255,202,184,154,255,205,188,158,255, -207,191,163,255,211,197,172,255,212,198,175,255,211,197,172,255,209,195,168,255,207,190,162,255,204,187,156,255,201,182,151,255, -199,179,147,255,196,177,143,255,195,175,142,255,194,174,141,255,194,173,141,255,193,173,140,255,194,173,140,255,193,173,140,255, -194,173,141,255,195,174,142,255,194,175,141,255,194,175,141,255,195,175,142,255,194,174,142,255,194,173,141,255,193,173,140,255, -193,173,140,255,192,172,139,255,192,171,138,255,191,170,138,255,189,168,136,255,188,167,136,255,187,165,134,255,185,164,133,255, -183,162,131,255,182,160,130,255,180,159,129,255,178,157,127,255,177,155,125,255,174,152,123,255,172,149,121,255,170,147,119,255, -167,143,117,255,164,140,114,255,160,136,111,255,156,131,107,255,152,127,104,255,147,122, 99,255,140,116, 95,255,138,110, 92,255, -103, 81, 68,255, 23, 18, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 60, 60, 61,255,125,113,100,255,188,168,140,255,198,179,149,255,219,207,187,255,230,225,212,255, -221,213,198,255,211,202,184,255,187,169,146,255,155,131,111,255,182,160,132,255,199,180,151,255,206,188,159,255,189,167,138,255, -193,172,139,255,212,196,168,255,219,205,182,255,217,204,182,255,197,178,149,255,155,131,107,255,126, 98, 82,255,109, 80, 69,255, -108, 79, 68,255,114, 85, 72,255,124, 96, 80,255,145,120, 98,255,172,148,121,255,192,172,140,255,202,184,153,255,203,184,152,255, -201,182,149,255,206,190,161,255,212,198,174,255,211,196,171,255,208,192,165,255,205,188,158,255,202,183,152,255,199,179,147,255, -196,176,143,255,194,175,141,255,194,173,141,255,193,172,140,255,192,172,139,255,192,172,139,255,193,172,140,255,193,172,140,255, -193,173,140,255,195,175,142,255,195,174,142,255,195,174,142,255,195,174,142,255,195,174,142,255,194,174,142,255,194,173,141,255, -194,173,141,255,192,171,139,255,191,171,138,255,190,170,138,255,188,167,135,255,187,166,134,255,186,164,133,255,183,162,131,255, -182,160,130,255,180,159,129,255,178,156,127,255,177,154,125,255,174,152,123,255,171,149,121,255,169,146,119,255,166,142,116,255, -163,139,113,255,159,135,111,255,155,131,107,255,151,126,103,255,146,121, 99,255,140,115, 95,255,135,109, 90,255, 84, 66, 56,255, - 5, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 60, 60, 61,255,118,105, 91,255,174,150,122,255,179,155,126,255,184,162,132,255,212,200,180,255, -229,223,209,255,221,212,194,255,155,135,117,255,148,126,106,255,166,141,115,255,179,156,126,255,181,158,128,255,175,152,126,255, -194,172,140,255,214,199,173,255,218,205,184,255,223,213,194,255,210,195,171,255,166,142,116,255,124, 96, 80,255,105, 76, 66,255, -105, 76, 66,255,112, 83, 70,255,124, 95, 80,255,144,117, 96,255,163,139,113,255,180,158,128,255,192,170,138,255,194,171,139,255, -188,167,135,255,192,171,139,255,203,185,154,255,206,190,161,255,205,187,156,255,201,183,151,255,198,178,146,255,195,175,142,255, -194,173,141,255,192,171,139,255,191,170,138,255,191,170,138,255,191,170,138,255,191,170,138,255,193,172,140,255,193,173,140,255, -194,174,141,255,195,175,142,255,196,175,143,255,196,176,143,255,196,176,143,255,196,175,143,255,194,174,141,255,194,174,141,255, -193,173,140,255,192,171,139,255,191,170,138,255,190,169,137,255,188,167,135,255,186,165,134,255,184,163,133,255,183,161,131,255, -180,159,129,255,178,156,126,255,177,154,125,255,174,151,123,255,171,148,120,255,168,145,119,255,166,142,116,255,162,138,113,255, -159,135,110,255,155,130,107,255,151,126,103,255,145,121, 99,255,142,115, 95,255,128,104, 86,255, 68, 54, 45,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 60, 60, 61,255,126,114, 98,255,183,159,129,255,166,142,116,255,176,156,132,255,211,199,179,255, -224,217,204,255,228,220,205,255,145,125,111,255,158,133,110,255,163,137,112,255,178,154,126,255,169,145,120,255,168,146,122,255, -192,170,139,255,211,193,165,255,211,195,169,255,208,192,165,255,183,162,135,255,137,111, 91,255,107, 78, 68,255,100, 73, 63,255, -104, 76, 65,255,116, 87, 74,255,131,103, 86,255,147,121,100,255,163,139,113,255,178,155,126,255,190,168,136,255,187,165,134,255, -178,155,126,255,176,153,124,255,186,165,133,255,194,174,142,255,195,176,143,255,195,175,143,255,194,173,141,255,191,170,138,255, -190,168,137,255,189,167,136,255,188,167,135,255,188,167,136,255,189,168,136,255,191,170,138,255,193,172,140,255,194,174,141,255, -195,175,142,255,196,176,144,255,197,177,144,255,197,177,144,255,197,177,144,255,196,176,143,255,195,175,142,255,195,174,142,255, -194,173,141,255,192,171,139,255,191,170,138,255,189,168,136,255,188,166,135,255,185,164,133,255,183,161,131,255,181,159,129,255, -178,156,127,255,176,154,125,255,173,151,123,255,171,148,120,255,168,145,118,255,165,141,115,255,161,137,113,255,158,133,109,255, -154,130,106,255,150,125,102,255,144,119, 98,255,141,115, 95,255,110, 89, 74,255, 34, 27, 23,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,140,135,126,255,194,176,151,255,202,186,164,255,204,187,158,255,210,194,169,255, -206,188,161,255,211,201,184,255,151,129,111,255,165,140,114,255,170,145,118,255,182,159,129,255,165,141,117,255,170,146,121,255, -191,170,139,255,206,187,155,255,200,180,147,255,181,159,129,255,146,119, 98,255,113, 85, 71,255,100, 73, 62,255,101, 73, 63,255, -113, 84, 71,255,128, 99, 83,255,140,113, 93,255,152,127,103,255,166,143,115,255,186,164,133,255,200,180,148,255,193,171,140,255, -175,151,123,255,165,141,114,255,171,147,119,255,181,159,128,255,186,165,134,255,189,168,136,255,188,166,135,255,186,165,133,255, -185,163,133,255,184,163,132,255,184,163,132,255,186,165,134,255,189,168,136,255,191,171,138,255,194,174,141,255,195,175,142,255, -196,177,144,255,198,179,146,255,198,179,146,255,198,179,146,255,198,178,146,255,198,178,145,255,196,176,143,255,196,175,143,255, -194,174,141,255,192,172,139,255,191,170,138,255,189,167,136,255,186,165,133,255,184,162,132,255,181,159,129,255,178,156,126,255, -176,153,125,255,173,150,122,255,170,147,119,255,167,143,117,255,164,140,114,255,160,136,111,255,157,133,109,255,153,129,105,255, -148,124,101,255,144,120, 98,255,141,114, 95,255, 87, 70, 59,255, 6, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,136,131,123,255,178,156,132,255,198,177,146,255,194,173,141,255,184,161,131,255, -199,179,149,255,196,182,164,255,175,153,126,255,170,146,119,255,190,169,139,255,194,175,146,255,166,142,117,255,176,152,123,255, -194,174,146,255,206,188,157,255,193,171,139,255,161,136,111,255,123, 96, 80,255,105, 76, 65,255,101, 74, 64,255,113, 84, 72,255, -130,102, 85,255,139,113, 93,255,147,121, 99,255,153,128,104,255,166,143,116,255,197,178,150,255,218,206,186,255,209,195,170,255, -182,160,131,255,157,133,109,255,157,134,109,255,179,158,129,255,192,172,140,255,190,169,137,255,184,163,132,255,179,157,128,255, -177,155,126,255,176,154,125,255,179,157,128,255,183,161,131,255,186,164,134,255,189,168,136,255,191,171,139,255,193,173,140,255, -196,175,143,255,198,178,146,255,200,181,149,255,201,182,150,255,201,182,150,255,200,181,149,255,199,179,147,255,197,177,144,255, -195,175,142,255,192,172,139,255,190,169,138,255,188,166,135,255,184,163,132,255,181,159,129,255,178,156,126,255,174,152,124,255, -172,149,121,255,169,146,118,255,165,142,115,255,163,138,113,255,159,135,110,255,156,131,107,255,151,127,105,255,149,124,101,255, -144,118, 97,255,125,101, 84,255, 49, 40, 34,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 61, 60, 59,255,169,155,136,255,190,168,137,255,182,164,138,255,192,173,145,255, -203,187,162,255,195,181,161,255,193,173,144,255,179,158,132,255,202,185,158,255,197,183,163,255,174,153,125,255,185,163,131,255, -196,177,148,255,214,200,176,255,188,167,136,255,147,122, 99,255,115, 85, 72,255,109, 81, 69,255,126, 98, 81,255,147,121, 99,255, -151,125,103,255,149,124,101,255,145,118, 96,255,165,146,128,255,200,187,167,255,215,203,183,255,221,212,196,255,219,210,193,255, -204,190,167,255,191,176,156,255,200,186,167,255,216,205,185,255,211,196,171,255,192,171,139,255,178,156,127,255,171,148,120,255, -169,147,119,255,171,149,121,255,175,152,124,255,176,154,125,255,176,153,124,255,176,153,124,255,178,156,126,255,183,160,130,255, -190,169,137,255,197,177,145,255,201,183,151,255,204,186,156,255,204,186,156,255,203,184,154,255,201,182,150,255,198,179,146,255, -195,175,142,255,192,172,139,255,189,167,136,255,185,163,133,255,182,159,129,255,177,155,126,255,174,151,123,255,170,147,120,255, -167,143,117,255,163,139,114,255,161,137,111,255,157,133,109,255,155,130,107,255,150,126,104,255,149,123,102,255,142,117, 96,255, - 77, 63, 52,255, 15, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 28, 28, 28,255, 15, 14, 12,255,214,204,186,255,209,196,175,255,210,196,173,255, -208,196,179,255,187,167,139,255,195,174,145,255,194,173,142,255,174,151,122,255,194,178,154,255,193,172,140,255,200,179,147,255, -201,181,149,255,212,201,181,255,188,169,141,255,149,125,103,255,159,137,116,255,194,178,154,255,206,192,169,255,196,178,150,255, -172,150,122,255,151,127,104,255,175,161,145,255,221,214,199,255,230,223,210,255,230,223,210,255,226,217,202,255,221,210,190,255, -215,201,178,255,218,205,184,255,228,219,204,255,228,221,208,255,216,203,181,255,188,167,136,255,166,143,116,255,162,138,112,255, -167,144,117,255,169,146,119,255,169,146,119,255,165,142,115,255,161,137,111,255,156,132,108,255,157,133,108,255,168,146,118,255, -185,164,133,255,198,179,146,255,204,186,155,255,206,189,160,255,205,189,161,255,205,187,158,255,202,183,152,255,198,179,147,255, -194,175,142,255,190,169,137,255,185,164,133,255,181,159,129,255,176,154,125,255,172,149,121,255,167,145,118,255,163,140,114,255, -161,137,112,255,158,134,109,255,155,131,107,255,153,129,105,255,150,126,103,255,148,123,101,255,119, 98, 81,255, 21, 18, 15,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 52, 50, 47,255,160,153,138,255,204,190,166,255, -199,183,158,255,177,156,130,255,191,170,137,255,155,132,108,255,170,152,136,255,219,209,190,255,190,170,142,255,214,200,178,255, -213,198,174,255,217,203,180,255,218,207,188,255,204,187,160,255,181,159,128,255,194,175,144,255,217,205,184,255,204,188,164,255, -177,156,127,255,201,188,166,255,228,220,204,255,214,205,189,255,219,211,195,255,230,223,210,255,226,217,201,255,214,199,174,255, -201,181,148,255,197,176,144,255,211,195,167,255,222,212,193,255,214,199,175,255,179,157,127,255,153,128,105,255,161,137,111,255, -166,142,115,255,162,138,112,255,159,134,110,255,152,127,104,255,143,117, 95,255,135,108, 89,255,141,116, 96,255,174,153,125,255, -196,176,145,255,204,187,156,255,207,191,162,255,208,192,164,255,207,191,162,255,205,188,159,255,202,183,153,255,198,178,145,255, -192,171,139,255,186,165,134,255,180,158,128,255,175,153,124,255,169,146,119,255,164,141,114,255,160,136,111,255,158,133,109,255, -155,130,107,255,153,128,105,255,152,127,104,255,148,123,101,255,125,104, 85,255, 65, 53, 44,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 2, 2, 2,255, 54, 50, 44,255, -198,184,163,255,191,170,142,255,173,151,124,255,176,162,148,255,203,190,172,255,210,194,167,255,187,168,140,255,204,190,168,255, -226,219,204,255,228,220,204,255,223,213,195,255,198,180,149,255,177,154,125,255,176,154,126,255,182,162,134,255,172,150,122,255, -192,172,142,255,216,203,180,255,218,206,186,255,223,215,198,255,223,217,203,255,221,212,198,255,214,201,179,255,206,188,157,255, -192,170,138,255,184,160,130,255,194,171,140,255,210,193,166,255,206,189,159,255,167,144,117,255,153,128,105,255,162,138,112,255, -159,133,109,255,153,127,104,255,149,123,101,255,139,112, 92,255,125, 97, 81,255,112, 84, 72,255,165,143,119,255,211,197,174,255, -212,198,174,255,208,193,167,255,209,193,167,255,210,195,168,255,208,192,165,255,205,188,159,255,201,182,151,255,195,174,142,255, -187,166,134,255,179,157,128,255,173,150,121,255,166,142,116,255,160,135,111,255,156,131,107,255,153,128,105,255,152,127,105,255, -153,128,105,255,154,129,105,255,124,104, 85,255, 53, 44, 36,255, 11, 9, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, -128,115, 96,255,196,178,153,255,181,161,136,255,217,202,176,255,217,205,187,255,208,196,175,255,220,210,193,255,216,205,188,255, -215,205,189,255,212,203,188,255,220,211,195,255,193,175,148,255,163,141,115,255,168,146,118,255,161,137,112,255,150,125,102,255, -171,149,121,255,208,192,164,255,212,199,175,255,218,207,187,255,229,223,211,255,228,222,209,255,202,188,164,255,201,181,147,255, -189,167,135,255,177,154,125,255,180,157,128,255,194,173,141,255,190,169,138,255,162,137,112,255,165,140,114,255,162,138,112,255, -153,128,104,255,147,120, 99,255,141,114, 94,255,128, 99, 83,255,107, 79, 68,255,100, 78, 68,255,171,147,121,255,204,187,158,255, -206,189,161,255,208,192,165,255,213,198,175,255,213,198,175,255,209,195,169,255,205,188,159,255,199,180,147,255,191,169,138,255, -180,159,128,255,171,148,120,255,161,138,112,255,154,129,105,255,148,124,101,255,148,124,102,255,153,128,105,255,154,129,106,255, -125,106, 87,255, 37, 31, 26,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 75, 68, 59,255,199,180,153,255,204,184,151,255,212,194,167,255,207,189,160,255,191,179,161,255,217,205,186,255,196,178,151,255, -195,178,151,255,151,126,103,255,137,112, 94,255,166,145,123,255,196,179,153,255,177,155,126,255,150,125,103,255,137,110, 91,255, -159,134,110,255,199,179,147,255,195,176,144,255,201,183,155,255,222,212,195,255,217,206,185,255,194,176,145,255,194,173,141,255, -189,166,134,255,174,149,122,255,171,147,120,255,177,153,124,255,166,143,116,255,164,140,115,255,176,152,124,255,164,140,114,255, -150,124,102,255,142,116, 95,255,137,109, 90,255,120, 91, 77,255, 88, 68, 60,255,113, 89, 75,255,171,148,120,255,180,159,129,255, -196,178,151,255,218,207,188,255,223,214,198,255,220,209,189,255,212,198,174,255,205,187,157,255,195,176,143,255,183,161,131,255, -170,147,120,255,158,133,109,255,149,123,101,255,140,117, 95,255,131,110, 91,255,117, 99, 81,255, 79, 67, 55,255, 27, 23, 19,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 36, 32, 27,255,203,185,157,255,198,181,153,255,203,191,173,255,163,149,128,255, 43, 39, 34,255,176,168,155,255,191,171,142,255, -196,175,144,255,203,185,156,255,202,183,152,255,197,176,143,255,213,199,176,255,185,164,135,255,152,127,104,255,132,104, 86,255, -170,145,118,255,191,170,137,255,169,145,118,255,170,147,119,255,203,185,156,255,190,171,142,255,176,154,126,255,190,170,140,255, -190,168,135,255,172,149,120,255,166,141,115,255,161,135,111,255,147,121,100,255,174,151,123,255,186,164,133,255,170,145,118,255, -152,126,103,255,142,116, 95,255,136,108, 89,255,113, 85, 71,255, 96, 79, 71,255,170,150,129,255,186,167,139,255,197,181,156,255, -222,212,193,255,228,219,205,255,228,220,206,255,223,213,196,255,213,199,175,255,201,183,151,255,186,165,133,255,172,149,121,255, -150,125,103,255, 93, 78, 65,255, 49, 41, 35,255, 33, 28, 23,255, 20, 17, 14,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 9, 8, 8,255, 84, 80, 72,255, 9, 9, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 3, 3, 3,255,150,135,111,255, -208,191,163,255,219,208,187,255,212,196,169,255,206,187,157,255,216,202,180,255,195,176,147,255,164,140,114,255,148,123,101,255, -193,173,143,255,188,166,134,255,151,126,103,255,170,147,120,255,194,174,143,255,183,166,144,255,196,178,152,255,178,157,130,255, -193,171,138,255,173,149,122,255,161,136,110,255,145,119, 97,255,140,112, 93,255,191,171,140,255,203,184,153,255,180,156,127,255, -157,131,107,255,146,120, 99,255,139,112, 92,255,114, 87, 73,255,169,154,136,255,225,217,202,255,221,211,192,255,220,209,190,255, -223,212,193,255,221,210,190,255,222,210,191,255,219,208,189,255,210,195,169,255,191,171,140,255,170,147,120,255,136,112, 93,255, - 28, 23, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,109,102, 90,255, -170,161,145,255,116,111,103,255,198,190,174,255,211,200,182,255,199,185,163,255,201,184,155,255,199,181,154,255,135,121,103,255, -123,117,105,255,173,157,133,255, 96, 81, 66,255, 8, 6, 6,255, 53, 51, 48,255,197,189,171,255,199,182,157,255,188,168,139,255, -194,173,140,255,176,153,124,255,157,132,108,255,131,103, 86,255,131,103, 85,255,201,185,159,255,223,213,194,255,197,177,148,255, -169,145,117,255,156,132,108,255,156,131,108,255,130,105, 87,255,157,135,111,255,212,200,178,255,214,205,190,255,222,214,200,255, -226,216,199,255,221,209,189,255,215,201,178,255,212,196,172,255,203,185,155,255,176,153,125,255,147,122,100,255, 33, 27, 23,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 9, 9, 9,255, - 12, 11, 9,255, 0, 0, 0,255, 90, 85, 76,255,211,199,177,255,197,177,145,255,203,186,157,255,101, 90, 74,255, 8, 6, 5,255, - 0, 0, 0,255, 27, 25, 22,255, 4, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 24, 22, 19,255,110,105, 97,255,212,199,178,255, -200,180,148,255,182,159,128,255,153,127,104,255,117, 89, 75,255,113, 85, 72,255,152,127,106,255,193,179,161,255,219,207,188,255, -195,177,150,255,209,197,180,255,204,188,162,255,152,128,106,255,170,149,126,255,214,201,178,255,184,163,135,255,141,123,105,255, - 94, 91, 85,255,213,205,190,255,222,209,188,255,208,191,161,255,180,159,129,255,150,135,117,255,108, 94, 78,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 60, 55,255, 91, 85, 73,255, 12, 11, 10,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 10, 9, 8,255, -161,149,125,255,192,169,139,255,147,123,100,255,105, 78, 67,255,103, 75, 64,255, 78, 57, 49,255, 7, 7, 6,255,187,178,163,255, -186,167,138,255,217,206,187,255,173,153,132,255,143,118, 97,255,110, 96, 82,255,177,171,161,255,198,180,153,255, 84, 69, 58,255, - 0, 0, 0,255, 1, 1, 1,255, 77, 74, 69,255,103, 95, 83,255, 26, 23, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 99, 93, 81,255,202,184,155,255,146,120, 98,255,103, 76, 65,255, 79, 59, 50,255, 5, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, - 67, 64, 60,255,143,138,128,255,159,139,116,255,116, 94, 79,255, 7, 4, 3,255, 0, 0, 0,255, 77, 72, 64,255, 17, 15, 13,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 22, 21, 19,255,199,187,169,255,154,130,106,255, 68, 51, 44,255, 6, 5, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 3, 3, 3,255, 27, 24, 21,255, 24, 21, 17,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 11, 11, 10,255, 28, 26, 23,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, - 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0, 0,125,101, 7, 31, 0, 0, 0, 1, 0, 0, 0, 88, 32,102, 7, -168,217,100, 7, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, 46,115,110, 97,107,101, 95,104,111,111,107, 46,112,110,103, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, - 99,111,110,115, 92, 46,105, 46,115,110, 97,107,101, 95,104,111,111,107, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,101, 7, - 0, 0, 0, 0, 98, 72, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0, - 0,127,101, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0,136,127,101, 7,240,143,101, 7, 68, 65, 84, 65, 0, 16, 0, 0,136,127,101, 7, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 0,144, 0, 0,240,143,101, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 60, 60, 60,255, - 60, 60, 60,255, 60, 60, 60,255, 60, 60, 60,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, - 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, - 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 62, 61, 61,255, 61, 61, 61,255,100, 87, 84,255,136,111,105,255, -136,110,104,255,135,110,104,255,135,110,104,255,135,110,103,255,135,109,103,255,135,109,102,255,135,109,102,255,134,108,102,255, -134,108,101,255,134,107,100,255,133,107, 99,255,133,107, 99,255,133,106, 98,255,133,105, 97,255,132,105, 96,255,132,104, 95,255, -132,104, 94,255,131,103, 93,255,131,102, 92,255,131,102, 91,255,130,101, 90,255,129,100, 89,255,129, 99, 88,255,129, 99, 86,255, -128, 99, 86,255,128, 98, 85,255,127, 98, 85,255,127, 97, 85,255,126, 97, 84,255,126, 97, 84,255,125, 96, 84,255,124, 96, 83,255, -124, 95, 83,255,123, 95, 82,255,122, 94, 82,255,122, 94, 82,255,121, 93, 81,255,121, 93, 81,255,120, 93, 81,255,119, 92, 80,255, -119, 92, 80,255,118, 91, 79,255,117, 91, 79,255,116, 90, 79,255,116, 90, 78,255,116, 89, 78,255,115, 88, 78,255,114, 88, 77,255, -114, 88, 77,255,113, 87, 76,255,112, 87, 76,255,111, 86, 75,255,110, 86, 75,255,110, 85, 74,255,108, 84, 73,255,108, 84, 73,255, -107, 83, 73,255,106, 82, 72,255,106, 82, 72,255,105, 82, 71,255,104, 81, 71,255,103, 80, 70,255,102, 79, 70,255,101, 79, 69,255, -100, 78, 69,255, 99, 78, 68,255, 98, 77, 68,255, 98, 76, 67,255, 97, 76, 66,255, 96, 75, 66,255, 95, 74, 65,255, 94, 74, 65,255, - 93, 73, 65,255, 92, 72, 64,255, 91, 72, 63,255, 90, 71, 62,255, 89, 70, 62,255, 88, 69, 61,255, 87, 69, 60,255, 86, 68, 60,255, - 85, 67, 59,255, 83, 66, 58,255, 82, 65, 58,255, 80, 64, 57,255, 80, 64, 56,255, 78, 62, 55,255, 77, 61, 54,255, 75, 60, 54,255, - 74, 59, 53,255, 72, 58, 52,255, 71, 57, 51,255, 65, 59, 55,255, 61, 62, 62,255, 60, 60, 60,255,136,111,106,255,207,158,148,255, -206,157,147,255,206,157,146,255,206,156,146,255,205,156,145,255,205,155,144,255,205,154,143,255,204,154,143,255,204,153,141,255, -203,152,140,255,202,152,139,255,202,151,137,255,202,150,136,255,201,149,134,255,200,148,132,255,199,147,131,255,199,146,129,255, -198,144,127,255,197,143,125,255,197,142,123,255,196,140,121,255,195,139,119,255,194,138,117,255,194,137,114,255,193,136,111,255, -192,134,110,255,192,133,108,255,190,133,108,255,189,131,107,255,188,131,106,255,187,130,106,255,186,129,105,255,185,128,104,255, -183,128,104,255,182,127,102,255,180,126,102,255,179,125,101,255,179,124,100,255,177,123,100,255,176,123,100,255,175,121, 98,255, -173,121, 98,255,173,119, 96,255,171,119, 96,255,170,118, 96,255,168,117, 94,255,167,116, 94,255,165,115, 93,255,164,114, 92,255, -163,113, 91,255,161,112, 91,255,160,111, 89,255,158,110, 89,255,157,109, 88,255,156,108, 87,255,154,107, 86,255,152,106, 85,255, -151,104, 84,255,149,103, 83,255,148,102, 82,255,146,100, 81,255,144,100, 80,255,143, 98, 79,255,141, 97, 78,255,139, 96, 78,255, -138, 94, 76,255,135, 93, 75,255,134, 93, 74,255,133, 90, 72,255,130, 89, 72,255,129, 89, 71,255,127, 87, 70,255,125, 86, 69,255, -124, 85, 68,255,122, 83, 66,255,120, 82, 65,255,118, 81, 64,255,116, 79, 63,255,113, 78, 62,255,112, 76, 60,255,109, 74, 59,255, -106, 72, 58,255,105, 70, 56,255,102, 69, 55,255, 99, 67, 53,255, 97, 65, 51,255, 94, 63, 50,255, 91, 62, 49,255, 88, 59, 46,255, - 86, 57, 45,255, 83, 56, 44,255, 79, 53, 41,255, 70, 56, 50,255, 61, 62, 62,255, 60, 60, 60,255,136,111,107,255,207,159,150,255, -206,158,149,255,205,157,148,255,205,157,148,255,205,157,147,255,205,156,145,255,204,156,145,255,204,155,145,255,203,154,143,255, -203,153,142,255,202,152,141,255,202,152,139,255,202,151,138,255,201,150,136,255,200,149,134,255,200,148,133,255,199,146,131,255, -198,145,129,255,198,145,127,255,196,143,126,255,196,142,123,255,196,141,122,255,195,139,119,255,194,138,117,255,193,137,115,255, -192,136,113,255,192,134,110,255,191,133,109,255,189,132,107,255,188,131,107,255,187,131,106,255,186,130,105,255,185,129,105,255, -184,128,104,255,182,127,103,255,182,127,103,255,181,125,102,255,179,125,101,255,178,124,101,255,176,123,100,255,175,122, 99,255, -174,121, 98,255,173,120, 97,255,172,119, 97,255,171,119, 96,255,169,117, 95,255,168,117, 94,255,166,116, 94,255,164,114, 92,255, -163,113, 92,255,162,113, 91,255,160,111, 90,255,159,110, 89,255,158,109, 88,255,156,108, 87,255,155,107, 87,255,153,106, 85,255, -151,104, 84,255,149,104, 83,255,148,103, 82,255,146,101, 82,255,145,100, 81,255,143, 99, 80,255,141, 98, 79,255,140, 97, 78,255, -138, 96, 77,255,136, 94, 76,255,135, 93, 75,255,133, 91, 73,255,132, 90, 72,255,129, 89, 72,255,127, 87, 70,255,126, 86, 69,255, -124, 86, 69,255,122, 84, 67,255,120, 83, 66,255,119, 81, 64,255,116, 79, 63,255,114, 78, 62,255,112, 77, 61,255,110, 75, 59,255, -107, 73, 58,255,105, 71, 56,255,102, 69, 55,255,100, 68, 54,255, 97, 66, 52,255, 95, 64, 50,255, 91, 62, 49,255, 89, 60, 47,255, - 86, 58, 46,255, 83, 56, 44,255, 79, 53, 41,255, 70, 56, 51,255, 61, 62, 62,255, 60, 60, 60,255,137,113,108,255,207,160,152,255, -206,159,151,255,206,159,150,255,206,158,150,255,205,158,149,255,205,157,148,255,205,157,147,255,204,156,146,255,204,155,145,255, -204,155,144,255,203,154,143,255,203,153,142,255,202,153,141,255,201,152,139,255,201,150,137,255,200,149,136,255,200,148,134,255, -199,147,132,255,198,146,129,255,197,145,128,255,197,143,126,255,196,143,124,255,196,142,123,255,195,140,121,255,194,139,118,255, -193,138,116,255,192,136,113,255,191,135,111,255,191,134,109,255,189,132,107,255,189,131,106,255,188,131,106,255,186,130,106,255, -185,129,105,255,185,129,104,255,183,128,103,255,182,127,102,255,180,125,102,255,179,125,101,255,178,124,100,255,176,123, 99,255, -175,122, 99,255,174,121, 98,255,173,120, 97,255,172,119, 96,255,170,118, 96,255,169,117, 95,255,168,116, 94,255,167,116, 93,255, -165,114, 93,255,163,113, 91,255,162,112, 91,255,160,111, 90,255,159,110, 89,255,157,109, 88,255,155,108, 87,255,154,107, 86,255, -153,106, 85,255,150,104, 84,255,149,103, 83,255,148,102, 82,255,146,101, 81,255,144,100, 80,255,143, 99, 79,255,141, 97, 79,255, -139, 96, 77,255,137, 95, 76,255,136, 94, 75,255,134, 92, 74,255,132, 91, 73,255,131, 90, 72,255,129, 89, 71,255,127, 87, 70,255, -125, 86, 68,255,123, 85, 68,255,121, 83, 66,255,119, 82, 65,255,117, 80, 64,255,115, 79, 63,255,113, 77, 62,255,110, 76, 60,255, -108, 73, 59,255,105, 72, 57,255,103, 70, 55,255,101, 68, 54,255, 98, 66, 52,255, 95, 64, 51,255, 93, 62, 49,255, 90, 60, 47,255, - 87, 58, 46,255, 84, 56, 44,255, 80, 54, 42,255, 70, 56, 50,255, 61, 62, 62,255, 60, 60, 60,255,137,113,109,255,209,161,154,255, -207,160,153,255,207,160,153,255,206,159,151,255,206,159,151,255,206,159,151,255,205,158,149,255,205,158,149,255,205,157,148,255, -204,156,146,255,203,155,145,255,203,155,144,255,203,154,143,255,202,153,142,255,202,152,140,255,201,151,138,255,200,150,137,255, -200,149,135,255,199,147,133,255,198,146,131,255,198,145,129,255,197,144,127,255,196,143,125,255,196,142,124,255,195,140,121,255, -194,139,119,255,193,138,117,255,192,136,115,255,191,135,112,255,191,134,110,255,190,132,108,255,189,132,107,255,188,131,106,255, -186,130,105,255,185,129,105,255,184,128,104,255,183,127,103,255,182,126,102,255,180,125,102,255,179,124,101,255,178,124,100,255, -176,122, 99,255,175,122, 98,255,174,121, 98,255,172,120, 97,255,171,119, 96,255,170,118, 96,255,168,117, 94,255,167,116, 94,255, -166,115, 93,255,164,114, 92,255,163,113, 91,255,162,112, 91,255,159,111, 89,255,158,110, 89,255,157,109, 88,255,155,107, 87,255, -154,107, 86,255,153,106, 85,255,150,104, 84,255,149,103, 83,255,147,102, 82,255,145,100, 81,255,144, 99, 80,255,142, 98, 79,255, -140, 97, 78,255,139, 96, 77,255,137, 95, 76,255,135, 93, 75,255,134, 92, 74,255,132, 91, 73,255,130, 89, 72,255,128, 88, 71,255, -126, 87, 69,255,124, 85, 68,255,122, 84, 67,255,120, 82, 65,255,118, 81, 64,255,116, 79, 63,255,113, 77, 61,255,112, 76, 60,255, -109, 74, 59,255,106, 72, 57,255,104, 71, 56,255,101, 69, 55,255, 98, 66, 53,255, 96, 65, 51,255, 93, 63, 50,255, 90, 61, 48,255, - 87, 59, 46,255, 84, 57, 44,255, 80, 54, 42,255, 70, 57, 51,255, 61, 62, 62,255, 60, 60, 60,255,138,114,111,255,209,164,157,255, -208,162,155,255,208,162,155,255,208,161,154,255,207,161,154,255,207,160,153,255,207,160,152,255,206,160,151,255,206,159,150,255, -206,158,149,255,205,157,148,255,205,156,146,255,204,156,145,255,203,154,144,255,203,154,142,255,202,153,141,255,201,151,138,255, -201,150,137,255,200,149,136,255,199,148,134,255,199,147,132,255,199,146,130,255,197,145,129,255,197,144,126,255,196,143,124,255, -195,141,122,255,194,140,119,255,193,138,118,255,193,137,115,255,192,136,112,255,191,135,110,255,190,133,108,255,189,132,107,255, -188,131,106,255,186,130,106,255,185,129,105,255,184,128,104,255,183,127,103,255,182,127,103,255,180,125,102,255,179,125,101,255, -178,124,100,255,176,123, 99,255,175,122, 99,255,174,121, 98,255,172,120, 97,255,171,119, 96,255,170,118, 96,255,168,117, 95,255, -167,116, 94,255,166,116, 94,255,164,114, 92,255,163,113, 92,255,162,112, 90,255,160,110, 89,255,158,110, 89,255,157,108, 87,255, -155,107, 87,255,153,106, 86,255,152,105, 85,255,150,104, 84,255,148,103, 83,255,147,102, 81,255,145,100, 81,255,143, 99, 80,255, -142, 97, 78,255,140, 96, 78,255,138, 95, 77,255,137, 93, 75,255,134, 93, 75,255,133, 92, 74,255,131, 90, 72,255,129, 89, 71,255, -128, 88, 71,255,125, 86, 68,255,123, 84, 68,255,121, 83, 67,255,119, 81, 65,255,117, 80, 64,255,115, 79, 63,255,112, 76, 61,255, -109, 75, 60,255,107, 73, 58,255,105, 71, 56,255,102, 69, 55,255, 99, 67, 53,255, 96, 65, 52,255, 94, 63, 50,255, 90, 61, 48,255, - 88, 59, 47,255, 84, 57, 45,255, 81, 54, 42,255, 70, 57, 51,255, 61, 62, 62,255, 60, 60, 60,255,138,115,112,255,210,165,159,255, -208,163,158,255,209,163,157,255,208,163,156,255,208,162,156,255,207,162,155,255,207,161,154,255,207,161,154,255,206,160,152,255, -206,159,151,255,205,159,150,255,205,157,148,255,204,157,148,255,204,156,146,255,203,155,145,255,203,154,143,255,202,153,141,255, -201,151,140,255,201,151,138,255,200,150,136,255,200,149,135,255,199,148,133,255,198,147,131,255,198,145,129,255,197,144,127,255, -196,143,125,255,195,141,123,255,194,140,120,255,194,139,118,255,193,137,115,255,192,136,113,255,191,134,111,255,190,133,108,255, -189,132,107,255,188,131,106,255,186,130,106,255,185,129,105,255,183,129,104,255,183,127,103,255,182,127,103,255,180,126,102,255, -179,125,101,255,178,124,100,255,176,123,100,255,175,122, 99,255,174,121, 98,255,172,120, 97,255,171,119, 96,255,170,118, 96,255, -168,117, 95,255,167,116, 93,255,166,115, 93,255,164,114, 92,255,162,113, 91,255,161,112, 90,255,159,110, 89,255,157,109, 88,255, -156,108, 87,255,154,107, 86,255,153,106, 85,255,151,105, 84,255,149,104, 84,255,148,102, 82,255,146,101, 82,255,144,100, 80,255, -143, 99, 79,255,141, 97, 78,255,139, 96, 77,255,137, 95, 76,255,135, 94, 75,255,134, 93, 74,255,132, 91, 73,255,131, 90, 72,255, -129, 89, 70,255,127, 87, 70,255,124, 86, 69,255,122, 84, 66,255,120, 82, 66,255,118, 80, 64,255,115, 78, 62,255,113, 77, 61,255, -111, 76, 60,255,108, 73, 58,255,105, 71, 57,255,103, 70, 55,255,100, 68, 53,255, 97, 66, 52,255, 94, 64, 51,255, 91, 61, 49,255, - 88, 59, 47,255, 85, 57, 45,255, 81, 54, 43,255, 70, 57, 51,255, 61, 62, 62,255, 60, 60, 60,255,138,115,113,255,211,166,161,255, -209,164,159,255,209,164,159,255,209,164,158,255,208,163,157,255,208,164,157,255,208,162,156,255,207,162,155,255,208,161,154,255, -206,160,153,255,206,160,152,255,206,159,151,255,205,158,149,255,205,157,148,255,204,157,147,255,203,155,145,255,203,154,144,255, -203,153,142,255,201,152,140,255,202,151,139,255,201,151,137,255,200,149,135,255,199,148,134,255,199,147,132,255,197,145,129,255, -197,144,128,255,196,143,126,255,195,142,123,255,195,140,120,255,194,139,119,255,193,137,116,255,192,136,113,255,191,135,111,255, -190,133,108,255,189,132,107,255,188,131,106,255,186,130,105,255,186,129,105,255,185,129,104,255,183,127,103,255,182,127,103,255, -180,125,101,255,179,125,101,255,178,124,100,255,176,122,100,255,175,122, 98,255,174,121, 98,255,172,120, 97,255,171,119, 96,255, -170,118, 96,255,168,116, 94,255,166,115, 93,255,165,115, 93,255,163,113, 91,255,162,112, 91,255,161,112, 90,255,159,110, 89,255, -157,109, 88,255,156,108, 87,255,153,106, 86,255,152,105, 85,255,151,105, 84,255,149,103, 83,255,147,102, 82,255,146,101, 81,255, -144, 99, 80,255,142, 98, 79,255,140, 97, 78,255,138, 95, 77,255,137, 94, 76,255,135, 93, 75,255,133, 92, 73,255,131, 91, 73,255, -130, 89, 71,255,127, 87, 70,255,125, 86, 69,255,122, 84, 67,255,121, 83, 66,255,118, 81, 65,255,116, 79, 63,255,114, 78, 62,255, -111, 76, 61,255,108, 74, 58,255,106, 72, 57,255,104, 71, 56,255,100, 68, 54,255, 98, 67, 53,255, 95, 65, 51,255, 91, 62, 49,255, - 89, 60, 47,255, 85, 57, 45,255, 81, 55, 43,255, 71, 57, 51,255, 61, 62, 62,255, 60, 60, 60,255,139,116,114,255,212,168,163,255, -210,166,162,255,210,166,161,255,210,166,161,255,210,165,160,255,209,164,159,255,209,164,159,255,209,164,158,255,208,163,156,255, -208,162,156,255,207,162,155,255,207,160,153,255,207,160,152,255,206,159,150,255,205,158,149,255,205,157,148,255,204,155,146,255, -203,155,144,255,203,154,143,255,202,153,141,255,202,152,139,255,201,151,138,255,200,149,136,255,199,148,134,255,198,147,132,255, -198,145,130,255,197,145,128,255,197,144,126,255,196,142,124,255,195,141,121,255,194,139,119,255,193,137,116,255,192,136,113,255, -191,135,112,255,190,133,108,255,189,132,108,255,188,131,106,255,187,130,106,255,186,130,105,255,185,129,104,255,183,128,104,255, -182,127,103,255,180,125,102,255,179,125,101,255,178,124,100,255,176,123, 99,255,175,122, 99,255,174,121, 98,255,172,120, 97,255, -171,119, 96,255,170,118, 96,255,168,116, 94,255,166,115, 93,255,165,114, 93,255,163,113, 91,255,162,112, 91,255,160,111, 90,255, -158,110, 89,255,157,109, 88,255,155,108, 87,255,153,106, 86,255,152,105, 85,255,149,104, 84,255,148,103, 83,255,147,102, 82,255, -144,100, 81,255,143, 99, 80,255,142, 98, 79,255,139, 97, 77,255,138, 95, 76,255,136, 94, 76,255,134, 92, 74,255,132, 91, 73,255, -130, 90, 72,255,128, 88, 70,255,126, 87, 69,255,124, 85, 68,255,121, 83, 66,255,119, 81, 65,255,117, 80, 63,255,114, 78, 62,255, -112, 76, 61,255,110, 75, 60,255,107, 73, 58,255,104, 71, 56,255,101, 69, 54,255, 99, 67, 53,255, 95, 65, 51,255, 92, 62, 49,255, - 89, 60, 47,255, 85, 58, 45,255, 81, 55, 43,255, 71, 57, 51,255, 61, 62, 62,255, 60, 60, 60,255,139,117,115,255,212,168,165,255, -211,167,164,255,211,167,163,255,210,167,162,255,210,166,162,255,210,166,161,255,209,165,160,255,209,165,160,255,209,164,158,255, -208,163,157,255,208,162,156,255,207,161,155,255,206,161,154,255,206,160,152,255,206,159,151,255,205,158,150,255,204,157,148,255, -204,156,146,255,203,155,145,255,203,154,143,255,202,153,141,255,201,152,141,255,201,151,138,255,200,149,136,255,199,148,135,255, -198,147,132,255,198,146,130,255,197,145,129,255,197,144,127,255,196,142,124,255,194,141,121,255,194,139,119,255,193,137,117,255, -192,136,114,255,191,135,111,255,190,133,108,255,189,132,107,255,188,131,106,255,187,130,106,255,186,129,105,255,185,129,104,255, -183,128,103,255,182,126,102,255,181,125,102,255,179,124,101,255,177,124,100,255,176,122, 99,255,174,121, 99,255,173,120, 97,255, -172,120, 97,255,170,118, 96,255,169,117, 95,255,167,116, 94,255,166,115, 93,255,164,114, 92,255,162,113, 91,255,161,111, 90,255, -160,111, 89,255,158,109, 88,255,156,108, 87,255,155,107, 86,255,153,106, 85,255,151,105, 84,255,150,103, 83,255,148,102, 82,255, -146,101, 81,255,145,100, 81,255,143, 99, 80,255,141, 97, 78,255,139, 95, 77,255,137, 94, 76,255,135, 93, 75,255,134, 92, 74,255, -131, 90, 72,255,129, 89, 71,255,127, 87, 70,255,124, 86, 69,255,123, 84, 67,255,120, 83, 66,255,117, 80, 64,255,116, 79, 63,255, -113, 77, 61,255,110, 75, 59,255,108, 73, 58,255,105, 72, 57,255,102, 69, 55,255, 99, 68, 53,255, 96, 65, 52,255, 92, 62, 49,255, - 89, 60, 47,255, 85, 58, 46,255, 81, 54, 43,255, 70, 57, 51,255, 61, 62, 62,255, 60, 60, 60,255,140,118,116,255,213,169,166,255, -211,168,165,255,211,168,165,255,211,169,164,255,211,167,163,255,210,167,163,255,210,166,162,255,210,166,161,255,209,165,161,255, -209,165,159,255,208,163,158,255,208,163,157,255,207,162,155,255,208,161,155,255,207,161,153,255,206,159,151,255,205,158,150,255, -205,158,149,255,204,156,147,255,203,155,145,255,203,155,144,255,202,153,142,255,201,152,141,255,201,151,139,255,200,149,137,255, -199,148,135,255,199,148,133,255,198,146,131,255,197,145,129,255,197,144,127,255,195,142,124,255,194,141,122,255,194,139,120,255, -193,138,117,255,192,136,113,255,192,135,112,255,190,133,109,255,189,132,107,255,188,132,107,255,186,130,105,255,185,129,105,255, -184,128,104,255,183,127,103,255,181,127,103,255,179,125,101,255,178,124,100,255,177,123,100,255,175,122, 98,255,174,121, 98,255, -173,120, 98,255,171,119, 96,255,170,118, 95,255,169,117, 95,255,167,116, 93,255,165,115, 93,255,164,114, 92,255,162,112, 90,255, -160,111, 90,255,159,110, 89,255,157,109, 88,255,156,108, 87,255,154,107, 86,255,152,105, 85,255,151,104, 84,255,149,103, 83,255, -147,102, 82,255,145,101, 81,255,144,100, 80,255,142, 98, 79,255,140, 97, 78,255,139, 96, 77,255,136, 94, 75,255,134, 93, 74,255, -133, 91, 73,255,130, 89, 71,255,128, 88, 70,255,125, 86, 68,255,123, 84, 68,255,121, 83, 66,255,118, 81, 64,255,116, 79, 63,255, -113, 78, 62,255,111, 75, 60,255,109, 74, 59,255,105, 72, 57,255,102, 69, 55,255,100, 68, 54,255, 96, 65, 52,255, 92, 62, 49,255, - 89, 60, 48,255, 85, 58, 45,255, 81, 55, 43,255, 70, 57, 51,255, 61, 62, 62,255, 60, 60, 60,255,140,118,117,255,214,171,169,255, -212,170,167,255,212,170,167,255,212,169,166,255,212,169,166,255,212,168,165,255,211,168,164,255,210,167,163,255,210,167,162,255, -210,166,161,255,209,165,160,255,209,164,159,255,209,164,158,255,208,163,156,255,208,162,155,255,207,161,154,255,206,160,153,255, -206,159,151,255,205,158,149,255,205,157,148,255,204,156,146,255,203,155,145,255,202,153,142,255,202,152,141,255,201,151,139,255, -201,150,137,255,200,149,136,255,199,148,133,255,198,146,131,255,197,145,129,255,196,144,127,255,196,142,125,255,195,141,122,255, -194,140,119,255,193,138,117,255,192,136,114,255,191,135,112,255,190,133,109,255,189,132,107,255,188,131,106,255,186,130,105,255, -185,129,105,255,184,128,104,255,182,127,103,255,181,126,103,255,179,125,101,255,178,124,101,255,177,123,100,255,175,122, 99,255, -174,121, 98,255,172,120, 97,255,170,119, 96,255,169,118, 95,255,168,117, 94,255,166,115, 93,255,165,115, 93,255,163,113, 91,255, -161,112, 90,255,160,111, 90,255,158,109, 88,255,156,108, 87,255,155,107, 87,255,154,106, 86,255,152,105, 85,255,150,104, 84,255, -148,103, 83,255,146,101, 82,255,145,100, 81,255,142, 99, 79,255,141, 97, 78,255,139, 96, 78,255,137, 94, 76,255,135, 93, 75,255, -133, 92, 74,255,131, 90, 72,255,128, 88, 71,255,127, 87, 70,255,124, 85, 68,255,121, 83, 67,255,120, 81, 66,255,117, 80, 64,255, -114, 78, 62,255,112, 77, 60,255,109, 74, 59,255,106, 72, 57,255,103, 70, 55,255,100, 68, 54,255, 96, 66, 52,255, 92, 63, 49,255, - 89, 60, 48,255, 85, 57, 45,255, 81, 54, 43,255, 70, 57, 51,255, 61, 62, 62,255, 60, 60, 60,255,140,119,117,255,214,172,170,255, -213,171,169,255,212,170,168,255,212,170,168,255,212,170,167,255,212,170,166,255,212,169,166,255,211,168,165,255,211,168,164,255, -210,167,163,255,210,166,162,255,209,166,160,255,209,164,159,255,208,164,158,255,208,163,157,255,207,162,155,255,207,161,154,255, -206,160,152,255,205,159,151,255,205,159,150,255,205,157,148,255,204,156,147,255,203,155,145,255,202,153,143,255,201,152,141,255, -201,152,139,255,201,150,137,255,199,149,136,255,199,148,134,255,198,146,131,255,197,145,130,255,196,144,127,255,196,142,124,255, -195,141,121,255,194,140,120,255,193,137,117,255,192,136,114,255,191,135,111,255,190,133,109,255,189,131,107,255,188,130,106,255, -186,130,105,255,185,129,105,255,183,128,104,255,182,127,103,255,181,126,102,255,179,125,102,255,178,124,100,255,177,123,100,255, -175,122, 98,255,173,120, 97,255,172,119, 96,255,170,118, 96,255,169,117, 95,255,167,116, 94,255,165,115, 93,255,164,114, 92,255, -163,113, 91,255,160,111, 90,255,159,110, 89,255,158,109, 88,255,156,108, 87,255,154,107, 86,255,153,106, 85,255,151,105, 85,255, -149,103, 83,255,148,102, 82,255,146,101, 81,255,144, 99, 80,255,142, 98, 79,255,140, 97, 78,255,138, 95, 76,255,136, 94, 75,255, -134, 92, 74,255,132, 91, 73,255,130, 89, 72,255,127, 87, 71,255,125, 86, 69,255,122, 84, 68,255,120, 82, 65,255,117, 81, 64,255, -115, 79, 63,255,112, 76, 60,255,110, 75, 59,255,106, 73, 58,255,103, 70, 56,255,100, 68, 54,255, 97, 66, 52,255, 93, 63, 49,255, - 89, 59, 48,255, 84, 57, 45,255, 81, 54, 42,255, 70, 57, 51,255, 61, 62, 62,255, 60, 60, 60,255,141,119,119,255,215,173,172,255, -213,172,170,255,213,171,170,255,214,171,169,255,212,171,169,255,212,171,168,255,213,170,168,255,211,169,166,255,211,168,166,255, -212,169,165,255,210,167,163,255,211,167,162,255,210,166,160,255,210,164,160,255,209,165,159,255,208,163,157,255,207,162,156,255, -207,161,155,255,206,160,153,255,205,159,152,255,206,159,150,255,204,157,148,255,204,156,147,255,203,155,145,255,202,153,143,255, -201,153,142,255,202,152,140,255,200,150,138,255,199,149,135,255,199,148,134,255,197,146,131,255,198,145,130,255,197,144,127,255, -195,142,124,255,195,141,123,255,194,140,119,255,192,137,116,255,192,136,114,255,191,135,111,255,189,132,108,255,189,132,107,255, -188,131,107,255,186,130,105,255,185,129,105,255,184,128,104,255,182,127,103,255,181,126,102,255,179,124,101,255,178,124,100,255, -176,123,100,255,174,121, 98,255,173,120, 97,255,171,119, 97,255,169,117, 95,255,168,117, 94,255,167,116, 94,255,165,114, 92,255, -164,113, 91,255,162,113, 91,255,160,111, 89,255,159,110, 89,255,157,109, 88,255,155,107, 86,255,154,106, 86,255,152,106, 85,255, -150,104, 83,255,148,103, 83,255,147,102, 82,255,145,100, 80,255,143, 99, 80,255,142, 98, 79,255,139, 95, 77,255,137, 95, 76,255, -135, 93, 75,255,132, 91, 73,255,130, 90, 72,255,128, 89, 71,255,125, 86, 69,255,123, 85, 68,255,120, 82, 66,255,118, 81, 65,255, -115, 79, 63,255,112, 76, 61,255,110, 75, 60,255,106, 73, 58,255,103, 70, 56,255,100, 69, 54,255, 96, 66, 52,255, 93, 63, 49,255, - 89, 60, 48,255, 84, 57, 45,255, 80, 54, 42,255, 70, 56, 50,255, 61, 62, 62,255, 60, 60, 60,255,141,120,119,255,216,175,174,255, -215,173,172,255,214,173,172,255,213,173,171,255,214,172,171,255,214,172,170,255,213,171,169,255,213,171,168,255,213,170,167,255, -212,170,166,255,211,169,166,255,211,168,164,255,211,167,163,255,210,166,162,255,210,165,161,255,209,165,159,255,208,163,158,255, -208,162,156,255,207,161,155,255,207,161,153,255,206,160,152,255,205,159,151,255,205,157,149,255,204,156,147,255,203,155,145,255, -203,154,144,255,202,153,141,255,201,152,140,255,200,150,138,255,200,149,135,255,199,148,134,255,198,146,131,255,198,145,129,255, -196,144,127,255,196,142,124,255,195,141,121,255,194,139,119,255,192,137,116,255,192,136,113,255,191,134,111,255,190,133,108,255, -189,132,107,255,188,131,106,255,186,130,105,255,185,129,105,255,183,127,103,255,182,127,103,255,181,126,101,255,178,124,101,255, -177,123,100,255,176,122, 99,255,174,121, 98,255,172,120, 97,255,171,118, 96,255,169,117, 95,255,167,116, 94,255,166,115, 93,255, -164,114, 92,255,163,113, 92,255,161,112, 90,255,160,111, 90,255,158,110, 89,255,156,108, 87,255,154,107, 86,255,153,106, 86,255, -151,104, 84,255,149,103, 83,255,148,102, 82,255,145,101, 81,255,144, 99, 80,255,142, 98, 79,255,139, 97, 78,255,138, 95, 77,255, -136, 94, 76,255,133, 92, 74,255,130, 90, 73,255,129, 88, 71,255,126, 87, 69,255,123, 85, 68,255,121, 84, 66,255,119, 81, 65,255, -116, 79, 64,255,113, 77, 62,255,110, 75, 60,255,107, 73, 58,255,104, 71, 56,255,101, 69, 54,255, 97, 66, 52,255, 92, 63, 50,255, - 89, 60, 47,255, 84, 57, 45,255, 80, 54, 42,255, 69, 56, 50,255, 61, 62, 62,255, 60, 60, 60,255,141,120,120,255,217,175,175,255, -215,174,174,255,214,174,173,255,214,173,172,255,214,173,172,255,214,173,172,255,213,172,170,255,213,171,170,255,213,171,169,255, -213,170,168,255,212,170,167,255,211,169,165,255,211,168,164,255,210,167,163,255,210,166,162,255,209,165,161,255,209,165,160,255, -208,163,158,255,207,162,156,255,207,161,155,255,206,161,153,255,206,160,152,255,205,159,151,255,204,157,149,255,203,156,147,255, -203,156,146,255,203,154,143,255,202,153,142,255,201,152,140,255,200,150,137,255,199,149,136,255,199,148,134,255,198,146,131,255, -197,145,129,255,196,144,127,255,195,142,124,255,194,140,121,255,193,139,119,255,192,137,116,255,192,136,113,255,190,134,110,255, -190,133,107,255,188,131,106,255,187,131,106,255,185,130,104,255,184,128,104,255,182,127,103,255,181,126,102,255,180,125,101,255, -178,124,100,255,176,122, 99,255,175,122, 99,255,173,120, 98,255,171,119, 96,255,170,118, 96,255,168,117, 95,255,167,116, 94,255, -166,115, 93,255,164,114, 92,255,162,112, 91,255,161,112, 90,255,159,110, 89,255,157,109, 88,255,156,108, 87,255,154,106, 86,255, -152,105, 85,255,150,104, 84,255,148,103, 83,255,147,102, 82,255,145,101, 81,255,143, 99, 80,255,141, 97, 78,255,139, 96, 77,255, -136, 94, 75,255,134, 92, 74,255,132, 91, 73,255,129, 89, 72,255,127, 87, 70,255,124, 86, 69,255,121, 83, 67,255,119, 82, 66,255, -116, 80, 64,255,113, 77, 62,255,111, 76, 60,255,107, 73, 59,255,104, 71, 56,255,101, 69, 55,255, 97, 66, 52,255, 92, 63, 50,255, - 88, 60, 47,255, 84, 56, 44,255, 79, 53, 42,255, 69, 56, 51,255, 61, 62, 62,255, 60, 60, 60,255,142,121,121,255,217,176,176,255, -216,176,175,255,216,175,175,255,215,175,174,255,215,173,174,255,215,174,173,255,215,173,173,255,213,173,171,255,214,172,170,255, -213,171,170,255,213,171,168,255,213,170,168,255,212,170,167,255,211,168,165,255,210,167,164,255,210,167,163,255,209,165,161,255, -209,165,160,255,208,163,158,255,207,162,157,255,208,162,156,255,206,161,153,255,206,160,152,255,206,159,151,255,204,157,149,255, -203,156,147,255,204,156,146,255,202,154,143,255,202,153,142,255,201,152,140,255,200,150,137,255,200,149,136,255,199,148,133,255, -198,146,131,255,197,145,128,255,196,143,126,255,195,141,124,255,194,140,121,255,194,139,118,255,192,137,115,255,192,135,112,255, -191,134,110,255,189,132,107,255,188,131,107,255,187,130,106,255,185,129,104,255,184,128,104,255,181,127,103,255,181,126,102,255, -179,125,101,255,177,123,100,255,176,122, 99,255,175,122, 99,255,172,120, 97,255,171,119, 96,255,170,118, 96,255,167,116, 94,255, -166,115, 93,255,165,115, 93,255,163,113, 91,255,161,112, 91,255,160,111, 90,255,158,109, 88,255,156,108, 88,255,155,107, 87,255, -153,105, 85,255,151,105, 84,255,150,104, 84,255,147,102, 82,255,145,101, 81,255,144,100, 80,255,141, 98, 79,255,139, 96, 78,255, -137, 95, 77,255,135, 93, 74,255,132, 91, 73,255,131, 90, 72,255,128, 88, 70,255,125, 86, 69,255,122, 84, 67,255,120, 82, 66,255, -117, 80, 64,255,114, 78, 62,255,111, 76, 60,255,108, 74, 59,255,104, 71, 56,255,100, 69, 55,255, 97, 66, 52,255, 92, 63, 50,255, - 88, 60, 47,255, 83, 56, 44,255, 79, 53, 42,255, 69, 56, 50,255, 61, 62, 62,255, 60, 60, 60,255,142,121,122,255,218,178,178,255, -216,176,177,255,216,176,176,255,216,176,176,255,215,175,175,255,215,175,174,255,215,174,174,255,214,174,173,255,214,173,172,255, -214,172,171,255,213,172,170,255,213,171,169,255,213,170,168,255,212,169,167,255,211,168,165,255,211,168,164,255,210,167,162,255, -210,166,161,255,209,165,160,255,208,163,158,255,208,163,157,255,207,162,156,255,207,161,154,255,206,160,152,255,205,159,151,255, -205,158,149,255,204,157,147,255,204,156,146,255,202,154,143,255,202,153,141,255,201,151,140,255,200,150,138,255,200,149,135,255, -199,148,133,255,198,146,131,255,197,144,128,255,196,143,126,255,195,141,123,255,194,140,120,255,193,138,118,255,192,136,115,255, -191,135,111,255,190,133,109,255,189,132,107,255,188,131,106,255,185,129,105,255,184,129,104,255,183,128,104,255,182,126,102,255, -180,126,102,255,178,125,100,255,176,123,100,255,175,122, 99,255,173,121, 98,255,171,119, 97,255,170,119, 96,255,169,117, 95,255, -167,116, 94,255,165,115, 93,255,164,114, 92,255,162,112, 91,255,160,111, 90,255,159,110, 89,255,157,109, 88,255,156,108, 87,255, -154,107, 86,255,152,105, 85,255,150,104, 84,255,148,103, 83,255,147,101, 82,255,145,100, 81,255,142, 98, 79,255,140, 97, 78,255, -138, 96, 77,255,135, 93, 75,255,133, 92, 74,255,130, 90, 73,255,128, 88, 71,255,125, 86, 69,255,123, 84, 67,255,120, 82, 66,255, -117, 80, 65,255,114, 78, 62,255,111, 76, 60,255,108, 74, 59,255,104, 71, 56,255,100, 69, 55,255, 97, 66, 52,255, 92, 62, 49,255, - 87, 59, 47,255, 83, 56, 44,255, 78, 52, 41,255, 68, 55, 50,255, 61, 62, 62,255, 60, 60, 60,255,142,122,123,255,218,178,179,255, -216,177,178,255,217,177,178,255,216,177,177,255,216,176,176,255,215,175,176,255,216,175,175,255,215,174,174,255,214,174,174,255, -214,173,172,255,213,172,171,255,213,172,170,255,212,171,169,255,212,170,168,255,212,169,167,255,212,168,165,255,211,168,165,255, -210,167,163,255,209,166,162,255,209,165,160,255,209,163,158,255,208,163,157,255,207,162,156,255,207,161,154,255,205,160,153,255, -205,159,151,255,205,158,149,255,203,156,147,255,203,155,145,255,202,153,143,255,201,152,141,255,201,151,139,255,200,150,137,255, -199,149,135,255,198,147,133,255,197,145,130,255,196,144,128,255,196,143,125,255,194,141,122,255,194,140,120,255,193,138,117,255, -192,136,114,255,190,134,111,255,190,133,108,255,188,131,107,255,187,130,105,255,186,130,105,255,183,128,104,255,182,127,103,255, -181,126,102,255,179,124,101,255,178,124,100,255,176,123, 99,255,174,121, 98,255,173,120, 97,255,171,119, 97,255,169,118, 95,255, -168,117, 94,255,167,115, 93,255,164,114, 92,255,163,113, 91,255,161,112, 90,255,159,110, 89,255,158,109, 88,255,156,108, 87,255, -154,107, 86,255,153,106, 86,255,151,105, 85,255,149,103, 83,255,147,102, 82,255,145,100, 81,255,143, 98, 79,255,141, 97, 78,255, -139, 96, 76,255,136, 94, 75,255,133, 92, 74,255,131, 91, 73,255,129, 89, 71,255,126, 87, 70,255,123, 84, 67,255,121, 83, 66,255, -117, 81, 65,255,114, 78, 62,255,111, 76, 61,255,108, 74, 59,255,104, 71, 56,255,101, 69, 54,255, 96, 65, 52,255, 92, 62, 49,255, - 87, 59, 47,255, 81, 55, 43,255, 77, 51, 40,255, 68, 55, 49,255, 61, 62, 62,255, 60, 60, 60,255,143,122,123,255,219,180,181,255, -218,177,180,255,217,178,180,255,217,178,179,255,217,177,177,255,216,177,177,255,216,176,177,255,216,176,176,255,215,175,175,255, -214,175,174,255,214,173,172,255,213,173,172,255,214,173,171,255,212,171,169,255,213,171,168,255,212,170,167,255,212,169,166,255, -211,168,165,255,210,167,164,255,209,166,162,255,209,165,160,255,209,165,159,255,208,163,157,255,208,162,156,255,206,160,154,255, -205,159,152,255,206,159,151,255,204,157,148,255,204,156,147,255,203,155,145,255,202,153,143,255,202,153,141,255,201,152,139,255, -199,149,137,255,199,148,134,255,198,147,132,255,197,145,130,255,196,144,127,255,196,143,125,255,194,140,121,255,194,139,119,255, -193,138,116,255,191,135,113,255,190,134,109,255,189,132,107,255,187,131,106,255,186,130,106,255,185,129,104,255,183,127,103,255, -181,127,103,255,179,125,101,255,178,124,101,255,177,123,100,255,175,122, 98,255,174,121, 98,255,172,120, 97,255,170,118, 95,255, -169,117, 95,255,167,116, 94,255,165,114, 92,255,164,114, 92,255,162,112, 91,255,160,111, 89,255,158,110, 89,255,157,109, 88,255, -155,107, 87,255,153,106, 86,255,152,105, 85,255,150,103, 83,255,148,102, 82,255,146,101, 81,255,143, 99, 79,255,141, 97, 78,255, -139, 96, 78,255,137, 94, 75,255,134, 93, 74,255,132, 91, 73,255,129, 89, 71,255,127, 87, 70,255,123, 85, 68,255,121, 83, 66,255, -118, 81, 65,255,114, 78, 62,255,111, 76, 61,255,108, 74, 59,255,104, 71, 56,255,100, 68, 54,255, 95, 65, 51,255, 91, 61, 48,255, - 86, 58, 46,255, 81, 54, 43,255, 76, 51, 40,255, 67, 55, 49,255, 61, 62, 62,255, 60, 60, 60,255,143,123,124,255,219,180,182,255, -217,179,181,255,217,179,180,255,218,179,180,255,217,178,179,255,217,177,178,255,217,177,178,255,216,176,177,255,216,176,176,255, -215,175,175,255,215,174,174,255,214,174,173,255,214,173,172,255,213,172,171,255,213,171,169,255,213,171,168,255,212,170,167,255, -212,169,166,255,211,168,165,255,210,167,164,255,210,166,162,255,210,165,160,255,208,165,159,255,208,163,157,255,207,162,156,255, -206,160,154,255,205,160,152,255,205,159,151,255,204,157,149,255,204,156,147,255,202,155,145,255,202,153,143,255,202,152,140,255, -200,151,139,255,199,149,136,255,199,148,134,255,197,146,131,255,197,145,129,255,196,143,126,255,195,142,123,255,194,140,121,255, -193,138,118,255,192,137,114,255,191,134,112,255,190,133,108,255,188,131,107,255,187,130,106,255,186,130,105,255,184,128,104,255, -182,127,103,255,181,126,102,255,179,125,101,255,178,124,100,255,176,122,100,255,174,121, 98,255,173,120, 97,255,171,119, 96,255, -169,118, 95,255,168,117, 94,255,166,115, 93,255,164,114, 92,255,163,113, 92,255,161,112, 90,255,159,111, 89,255,158,110, 89,255, -156,108, 87,255,154,107, 86,255,152,106, 85,255,150,104, 84,255,148,102, 83,255,146,101, 82,255,144, 99, 80,255,141, 98, 79,255, -140, 96, 78,255,137, 94, 76,255,134, 93, 75,255,132, 91, 73,255,129, 89, 71,255,127, 87, 70,255,125, 85, 68,255,122, 83, 67,255, -118, 81, 65,255,115, 78, 62,255,111, 77, 61,255,107, 73, 59,255,104, 71, 56,255,100, 68, 54,255, 95, 64, 51,255, 90, 61, 48,255, - 85, 57, 45,255, 80, 54, 42,255, 75, 49, 38,255, 66, 53, 48,255, 61, 62, 62,255, 60, 60, 60,255,143,123,125,255,220,181,183,255, -218,180,182,255,218,179,181,255,217,179,181,255,218,178,180,255,217,178,180,255,216,178,179,255,217,177,178,255,216,177,178,255, -215,176,176,255,215,175,175,255,215,174,173,255,215,173,173,255,214,173,172,255,213,172,171,255,212,171,169,255,212,170,168,255, -212,170,167,255,212,169,166,255,211,168,165,255,210,167,164,255,209,166,161,255,209,165,161,255,208,165,159,255,207,163,157,255, -207,162,156,255,206,161,154,255,205,160,152,255,205,159,150,255,204,157,148,255,203,155,146,255,202,155,144,255,202,153,142,255, -201,152,140,255,200,151,138,255,199,149,135,255,198,147,134,255,197,146,131,255,197,144,127,255,195,143,126,255,195,141,123,255, -194,139,119,255,192,138,116,255,191,136,113,255,191,133,110,255,189,132,107,255,188,131,106,255,186,129,106,255,185,129,104,255, -183,128,103,255,181,126,102,255,180,125,101,255,179,124,101,255,176,123, 99,255,175,122, 98,255,174,121, 98,255,171,119, 96,255, -170,118, 95,255,168,117, 95,255,167,115, 93,255,165,115, 93,255,164,114, 92,255,162,112, 91,255,160,111, 90,255,158,110, 89,255, -156,108, 87,255,154,107, 86,255,153,106, 85,255,150,104, 84,255,149,103, 83,255,146,101, 82,255,144, 99, 80,255,142, 98, 79,255, -140, 97, 78,255,138, 95, 76,255,135, 93, 75,255,133, 92, 74,255,130, 89, 72,255,127, 88, 70,255,124, 85, 68,255,121, 83, 67,255, -118, 81, 65,255,115, 78, 62,255,111, 76, 61,255,107, 73, 59,255,103, 70, 56,255, 99, 67, 54,255, 94, 63, 50,255, 89, 61, 47,255, - 84, 56, 44,255, 79, 52, 41,255, 72, 48, 37,255, 65, 53, 47,255, 61, 62, 62,255, 60, 60, 60,255,143,124,125,255,220,182,185,255, -218,181,183,255,218,180,183,255,219,180,183,255,217,180,182,255,218,179,181,255,218,179,180,255,216,177,179,255,216,178,179,255, -217,177,178,255,215,176,176,255,216,175,175,255,215,175,174,255,215,174,173,255,214,173,172,255,214,173,171,255,212,171,169,255, -213,171,169,255,212,170,168,255,211,169,166,255,211,168,165,255,210,167,164,255,210,166,162,255,209,165,161,255,208,163,158,255, -207,162,157,255,206,162,155,255,206,160,153,255,206,159,152,255,205,158,150,255,203,156,148,255,203,156,146,255,203,155,144,255, -201,153,142,255,201,151,139,255,200,150,138,255,199,148,135,255,198,147,132,255,197,146,130,255,196,144,127,255,195,142,124,255, -194,141,121,255,193,138,118,255,192,137,115,255,191,135,112,255,190,132,108,255,188,132,107,255,187,131,105,255,185,129,105,255, -184,128,104,255,182,127,103,255,180,126,102,255,179,125,101,255,177,123,100,255,176,122, 99,255,174,121, 98,255,172,119, 97,255, -171,118, 96,255,169,118, 95,255,167,116, 94,255,166,115, 93,255,164,115, 93,255,162,113, 91,255,161,112, 90,255,159,110, 89,255, -157,108, 88,255,155,107, 87,255,153,106, 86,255,151,104, 84,255,149,103, 83,255,147,102, 82,255,145,100, 80,255,143, 98, 79,255, -141, 97, 78,255,138, 95, 76,255,135, 93, 75,255,133, 92, 74,255,130, 90, 72,255,127, 88, 70,255,124, 85, 68,255,121, 83, 67,255, -118, 81, 64,255,114, 78, 62,255,110, 76, 61,255,107, 73, 58,255,102, 70, 55,255, 98, 67, 53,255, 93, 63, 50,255, 88, 59, 47,255, - 83, 55, 44,255, 77, 51, 40,255, 71, 47, 36,255, 63, 52, 47,255, 61, 62, 62,255, 60, 60, 60,255,144,124,126,255,221,183,186,255, -219,181,184,255,219,181,184,255,218,181,183,255,219,180,183,255,218,180,182,255,217,179,181,255,217,178,180,255,217,178,180,255, -216,178,179,255,216,177,178,255,216,176,176,255,216,175,175,255,214,175,174,255,215,174,173,255,214,173,172,255,213,172,171,255, -213,171,169,255,213,170,169,255,212,169,168,255,211,169,166,255,210,168,164,255,210,167,163,255,210,166,162,255,208,165,160,255, -208,164,159,255,207,162,156,255,206,161,155,255,206,161,153,255,205,159,151,255,204,158,150,255,204,156,147,255,203,155,145,255, -202,154,144,255,201,152,141,255,200,151,139,255,199,149,136,255,198,148,134,255,198,146,131,255,197,145,128,255,196,143,126,255, -195,141,123,255,193,140,120,255,193,137,117,255,192,136,113,255,190,134,109,255,189,132,107,255,188,130,106,255,186,130,105,255, -184,129,104,255,182,128,104,255,181,126,102,255,179,125,101,255,178,124,101,255,176,122, 99,255,175,122, 98,255,173,120, 97,255, -171,120, 97,255,170,118, 96,255,168,117, 94,255,166,116, 94,255,165,115, 93,255,163,113, 91,255,161,112, 90,255,160,111, 89,255, -157,109, 88,255,156,108, 87,255,154,107, 86,255,152,105, 84,255,150,103, 83,255,148,102, 82,255,145,100, 80,255,143, 99, 79,255, -141, 97, 78,255,138, 95, 76,255,136, 93, 75,255,133, 92, 74,255,131, 90, 72,255,127, 88, 70,255,125, 85, 68,255,121, 83, 67,255, -118, 81, 64,255,114, 78, 62,255,110, 75, 60,255,106, 72, 58,255,102, 69, 55,255, 96, 65, 52,255, 92, 62, 49,255, 87, 58, 46,255, - 81, 54, 42,255, 75, 50, 39,255, 68, 44, 34,255, 62, 51, 46,255, 61, 62, 62,255, 60, 60, 60,255,144,124,126,255,221,183,187,255, -220,182,185,255,219,182,185,255,218,181,184,255,218,181,183,255,219,180,183,255,218,180,182,255,217,179,181,255,217,179,180,255, -216,178,179,255,216,177,179,255,216,177,178,255,215,176,176,255,215,175,175,255,214,175,174,255,215,173,173,255,214,173,172,255, -213,172,171,255,212,171,169,255,212,170,169,255,211,170,167,255,211,168,165,255,211,167,164,255,210,167,162,255,209,165,161,255, -208,164,160,255,208,164,158,255,207,162,156,255,206,161,155,255,206,160,153,255,204,158,150,255,204,157,148,255,204,156,146,255, -202,155,145,255,202,153,142,255,201,152,140,255,200,150,138,255,199,149,135,255,197,147,132,255,197,146,130,255,196,144,127,255, -194,142,124,255,194,140,122,255,193,138,118,255,191,136,114,255,191,135,111,255,190,133,108,255,188,131,107,255,186,130,105,255, -185,129,105,255,183,127,103,255,182,126,102,255,180,126,102,255,178,124,100,255,177,123, 99,255,176,122, 99,255,174,121, 98,255, -172,120, 97,255,171,119, 96,255,169,117, 95,255,167,116, 94,255,166,115, 93,255,163,113, 91,255,162,112, 91,255,160,111, 90,255, -158,109, 88,255,156,108, 87,255,154,107, 86,255,152,105, 84,255,150,103, 83,255,148,102, 82,255,145,100, 80,255,143, 99, 79,255, -141, 97, 78,255,139, 95, 76,255,136, 94, 75,255,134, 92, 74,255,131, 90, 72,255,128, 88, 70,255,124, 85, 68,255,121, 83, 67,255, -117, 80, 64,255,113, 78, 62,255,109, 75, 60,255,105, 71, 57,255,100, 68, 54,255, 95, 64, 51,255, 91, 60, 48,255, 85, 58, 45,255, - 79, 53, 41,255, 72, 48, 37,255, 64, 43, 33,255, 60, 50, 45,255, 62, 62, 62,255, 60, 60, 60,255,144,125,126,255,221,185,188,255, -220,182,186,255,219,183,186,255,220,182,185,255,219,181,185,255,218,182,184,255,218,181,184,255,218,180,182,255,217,180,181,255, -218,179,181,255,217,178,180,255,216,178,179,255,217,177,178,255,215,176,176,255,216,175,176,255,214,175,175,255,214,174,173,255, -214,173,172,255,213,172,171,255,213,171,170,255,212,170,168,255,211,169,167,255,210,168,165,255,211,168,164,255,209,166,163,255, -208,165,161,255,209,164,159,255,207,163,157,255,207,162,156,255,206,161,154,255,205,159,151,255,205,158,150,255,204,157,148,255, -203,155,146,255,202,154,143,255,202,153,142,255,200,151,139,255,199,149,136,255,199,148,134,255,197,146,131,255,197,145,128,255, -196,143,126,255,195,141,123,255,194,139,119,255,193,138,116,255,191,135,112,255,190,133,109,255,188,131,107,255,187,130,106,255, -185,129,105,255,184,129,104,255,182,127,103,255,181,126,102,255,179,124,101,255,178,124,100,255,176,123,100,255,174,121, 98,255, -173,120, 97,255,171,119, 97,255,169,117, 95,255,168,116, 94,255,166,115, 93,255,164,114, 92,255,162,113, 91,255,161,111, 90,255, -158,109, 88,255,156,108, 87,255,155,107, 86,255,152,105, 84,255,150,104, 84,255,148,102, 82,255,146,100, 80,255,143, 99, 79,255, -142, 98, 78,255,139, 95, 76,255,136, 94, 75,255,134, 92, 74,255,130, 90, 72,255,127, 88, 70,255,123, 85, 68,255,121, 83, 67,255, -117, 80, 64,255,112, 77, 62,255,109, 74, 60,255,104, 71, 57,255, 99, 67, 53,255, 95, 64, 51,255, 89, 60, 47,255, 84, 55, 44,255, - 77, 51, 40,255, 69, 46, 35,255, 61, 39, 30,255, 57, 48, 44,255, 62, 62, 62,255, 60, 60, 60,255,144,125,127,255,222,184,188,255, -220,183,187,255,220,183,187,255,219,183,186,255,220,182,185,255,219,181,185,255,218,182,184,255,219,181,183,255,218,180,182,255, -217,180,181,255,218,178,180,255,217,178,180,255,217,178,179,255,216,177,178,255,216,176,176,255,215,176,176,255,214,175,175,255, -214,174,173,255,214,172,171,255,213,172,170,255,213,171,169,255,212,170,168,255,211,169,166,255,211,168,165,255,210,167,163,255, -209,166,162,255,209,165,160,255,208,163,158,255,207,162,156,255,207,161,155,255,206,160,153,255,205,158,151,255,204,157,149,255, -203,156,147,255,202,154,145,255,201,153,142,255,201,152,141,255,200,150,138,255,199,149,135,255,198,147,132,255,197,145,130,255, -196,144,127,255,195,142,123,255,194,139,121,255,192,138,117,255,191,136,114,255,190,134,110,255,189,131,107,255,188,131,106,255, -186,130,105,255,184,128,105,255,183,127,103,255,181,126,102,255,180,125,101,255,178,124,101,255,177,123,100,255,175,122, 98,255, -173,121, 98,255,172,120, 97,255,170,118, 95,255,168,117, 94,255,166,116, 94,255,164,114, 92,255,163,113, 91,255,161,112, 90,255, -159,110, 88,255,157,108, 87,255,155,108, 87,255,153,106, 85,255,150,105, 84,255,149,103, 83,255,146,101, 82,255,143, 99, 80,255, -142, 98, 79,255,139, 95, 76,255,136, 94, 75,255,133, 92, 74,255,130, 90, 72,255,127, 88, 70,255,123, 85, 69,255,120, 83, 66,255, -116, 80, 64,255,112, 77, 61,255,108, 74, 59,255,103, 70, 56,255, 98, 67, 53,255, 93, 62, 49,255, 87, 59, 47,255, 81, 55, 43,255, - 74, 49, 39,255, 65, 43, 34,255, 53, 35, 27,255, 42, 39, 37,255, 62, 62, 62,255, 60, 60, 60,255,144,125,127,255,222,185,189,255, -221,183,187,255,220,184,187,255,219,183,187,255,220,182,186,255,220,182,185,255,219,181,185,255,218,181,184,255,219,180,183,255, -218,180,182,255,217,179,181,255,217,179,180,255,216,178,179,255,217,177,178,255,216,176,177,255,216,175,176,255,215,175,175,255, -215,174,174,255,213,173,172,255,213,172,171,255,212,171,170,255,212,170,168,255,211,170,167,255,211,169,166,255,210,167,164,255, -209,166,163,255,209,166,162,255,208,164,159,255,207,163,158,255,207,162,156,255,206,161,154,255,205,160,152,255,205,158,150,255, -203,156,148,255,203,155,146,255,202,154,144,255,201,152,141,255,200,151,139,255,199,149,137,255,198,148,134,255,197,146,131,255, -197,144,128,255,195,142,125,255,194,141,122,255,193,138,118,255,192,137,115,255,191,135,111,255,190,132,108,255,188,131,106,255, -187,130,105,255,185,128,104,255,184,128,103,255,182,127,103,255,180,125,102,255,179,125,101,255,178,124,100,255,175,122, 99,255, -174,121, 98,255,172,120, 97,255,170,118, 95,255,168,117, 95,255,167,116, 94,255,165,114, 92,255,163,113, 91,255,161,112, 90,255, -159,110, 89,255,157,109, 88,255,155,108, 87,255,153,106, 85,255,151,105, 85,255,149,103, 84,255,146,101, 82,255,144, 99, 80,255, -142, 98, 79,255,139, 96, 77,255,135, 94, 75,255,133, 92, 74,255,130, 90, 72,255,126, 87, 70,255,124, 84, 68,255,119, 82, 66,255, -116, 79, 63,255,111, 76, 61,255,106, 73, 58,255,102, 69, 55,255, 97, 65, 52,255, 91, 61, 48,255, 86, 57, 45,255, 78, 52, 41,255, - 70, 46, 36,255, 60, 39, 29,255, 32, 23, 20,255, 28, 28, 28,255, 62, 62, 62,255, 60, 60, 60,255,144,125,128,255,222,186,190,255, -221,184,188,255,220,183,188,255,221,183,188,255,220,183,187,255,219,182,186,255,219,183,186,255,219,182,185,255,218,181,184,255, -219,181,184,255,218,180,182,255,217,180,181,255,218,179,181,255,216,178,179,255,216,177,178,255,215,177,177,255,216,175,176,255, -215,175,175,255,215,174,173,255,213,173,172,255,213,172,171,255,212,172,170,255,212,170,168,255,211,169,167,255,211,168,164,255, -210,167,163,255,210,166,162,255,208,164,160,255,208,163,158,255,207,163,157,255,207,161,154,255,206,160,153,255,205,159,151,255, -204,157,149,255,203,156,147,255,203,155,144,255,201,153,142,255,201,151,139,255,200,150,137,255,198,148,135,255,198,147,132,255, -197,145,129,255,196,143,126,255,195,141,123,255,194,140,120,255,192,137,117,255,191,135,113,255,190,134,110,255,188,131,107,255, -187,130,106,255,186,130,106,255,184,128,104,255,183,128,104,255,181,126,102,255,179,125,101,255,178,124,100,255,175,122, 99,255, -174,121, 98,255,172,120, 97,255,170,118, 95,255,169,117, 95,255,167,116, 94,255,165,114, 92,255,163,113, 91,255,162,113, 91,255, -159,111, 89,255,157,109, 89,255,156,108, 88,255,153,106, 86,255,151,105, 85,255,149,103, 84,255,146,101, 82,255,144, 99, 80,255, -142, 98, 79,255,139, 96, 77,255,135, 93, 75,255,133, 92, 74,255,130, 89, 72,255,126, 87, 70,255,122, 84, 67,255,119, 82, 65,255, -115, 78, 63,255,110, 75, 60,255,106, 72, 58,255,100, 68, 54,255, 95, 64, 51,255, 90, 60, 48,255, 83, 56, 43,255, 74, 50, 39,255, - 65, 42, 33,255, 51, 36, 29,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 60, 60, 60,255,144,125,128,255,222,186,190,255, -221,185,189,255,221,184,189,255,220,183,188,255,220,184,187,255,219,183,187,255,220,182,187,255,220,182,185,255,219,182,185,255, -219,181,184,255,218,180,183,255,218,180,182,255,218,179,181,255,217,178,180,255,217,177,179,255,216,176,178,255,216,176,177,255, -215,175,175,255,214,175,174,255,214,173,173,255,214,173,172,255,213,171,170,255,212,171,169,255,212,170,167,255,210,168,166,255, -211,168,164,255,210,167,163,255,209,165,161,255,208,164,160,255,208,163,157,255,207,162,156,255,206,160,154,255,205,159,152,255, -204,158,150,255,203,156,148,255,202,155,145,255,202,153,143,255,201,152,141,255,200,150,138,255,198,149,135,255,198,147,133,255, -198,146,130,255,196,144,127,255,195,142,124,255,194,139,121,255,192,138,117,255,191,136,114,255,191,134,110,255,189,132,107,255, -188,131,106,255,187,130,105,255,184,129,104,255,183,128,104,255,181,126,102,255,180,125,101,255,178,124,101,255,176,122, 99,255, -174,121, 98,255,173,120, 97,255,170,118, 95,255,169,117, 95,255,167,116, 94,255,165,115, 93,255,164,114, 92,255,162,113, 91,255, -160,111, 89,255,157,110, 89,255,156,108, 88,255,153,106, 86,255,151,105, 85,255,149,104, 84,255,146,101, 82,255,144,100, 81,255, -142, 98, 79,255,139, 96, 77,255,135, 93, 75,255,132, 91, 73,255,129, 89, 71,255,125, 87, 70,255,122, 84, 67,255,118, 81, 65,255, -114, 78, 63,255,109, 75, 60,255,104, 71, 57,255, 99, 67, 53,255, 93, 63, 50,255, 87, 59, 46,255, 80, 53, 42,255, 70, 47, 36,255, - 57, 37, 28,255, 11, 8, 7,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 60, 60, 60,255,144,126,128,255,222,186,191,255, -221,185,190,255,221,185,189,255,221,184,189,255,220,183,188,255,220,183,187,255,219,182,186,255,219,183,186,255,220,182,185,255, -219,182,185,255,219,180,183,255,218,180,183,255,217,180,182,255,217,178,180,255,216,178,179,255,217,177,178,255,215,176,177,255, -215,176,177,255,214,174,174,255,215,174,173,255,214,173,172,255,213,172,170,255,212,171,170,255,212,170,169,255,211,168,166,255, -210,168,165,255,210,167,164,255,209,166,162,255,208,165,160,255,208,164,159,255,207,162,156,255,206,161,155,255,206,160,153,255, -204,158,150,255,203,157,148,255,203,156,146,255,202,154,143,255,201,152,141,255,199,151,139,255,199,149,136,255,198,148,133,255, -198,146,131,255,196,144,128,255,195,142,124,255,193,140,122,255,193,138,118,255,192,137,115,255,190,134,111,255,190,133,108,255, -188,132,107,255,186,130,105,255,185,129,104,255,183,128,104,255,181,126,102,255,180,125,101,255,178,124,101,255,176,122, 99,255, -175,121, 98,255,173,120, 97,255,171,119, 96,255,169,118, 95,255,168,117, 95,255,165,115, 93,255,164,114, 92,255,162,113, 91,255, -160,111, 89,255,158,110, 89,255,156,109, 88,255,154,106, 86,255,151,105, 85,255,149,104, 84,255,146,101, 82,255,143, 99, 80,255, -142, 98, 79,255,138, 95, 76,255,135, 93, 75,255,132, 91, 73,255,129, 89, 71,255,124, 86, 69,255,122, 84, 66,255,118, 81, 64,255, -114, 78, 62,255,108, 74, 59,255,103, 69, 56,255, 97, 66, 52,255, 91, 61, 48,255, 84, 57, 45,255, 75, 49, 39,255, 64, 41, 32,255, - 28, 19, 16,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,126,128,255,222,187,191,255, -221,185,189,255,221,184,190,255,221,184,189,255,220,184,188,255,221,183,187,255,220,184,188,255,220,183,186,255,220,183,186,255, -219,182,185,255,218,181,184,255,219,181,183,255,218,179,182,255,218,179,181,255,217,179,180,255,216,177,180,255,216,177,178,255, -216,176,177,255,214,176,176,255,215,174,174,255,214,174,173,255,213,172,171,255,212,171,170,255,212,171,169,255,212,170,167,255, -211,168,165,255,211,168,164,255,209,166,162,255,208,165,161,255,208,164,159,255,207,162,157,255,207,161,155,255,206,160,153,255, -204,158,150,255,204,157,149,255,203,156,147,255,202,154,144,255,201,153,141,255,201,151,139,255,199,149,137,255,198,148,134,255, -196,146,131,255,196,144,128,255,195,143,125,255,195,141,122,255,193,139,119,255,192,137,115,255,192,135,112,255,190,133,109,255, -189,132,107,255,186,130,105,255,185,129,104,255,184,128,104,255,181,126,102,255,180,125,101,255,178,124,100,255,177,123,100,255, -175,122, 99,255,173,121, 98,255,171,119, 96,255,170,118, 96,255,168,117, 95,255,165,115, 93,255,164,114, 92,255,162,113, 91,255, -160,111, 89,255,158,110, 88,255,156,109, 88,255,154,106, 86,255,151,105, 85,255,150,104, 84,255,146,101, 82,255,143, 99, 80,255, -141, 98, 79,255,138, 95, 76,255,135, 93, 74,255,131, 91, 73,255,128, 88, 71,255,124, 85, 69,255,120, 82, 66,255,116, 80, 64,255, -112, 76, 61,255,107, 73, 58,255,102, 69, 55,255, 96, 64, 51,255, 89, 60, 47,255, 80, 54, 42,255, 70, 46, 35,255, 47, 32, 25,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,126,128,255,222,187,191,255, -221,185,190,255,221,184,189,255,221,185,190,255,221,185,188,255,221,184,188,255,220,183,188,255,219,183,187,255,219,182,186,255, -220,182,186,255,218,181,184,255,219,181,184,255,218,180,183,255,217,179,181,255,218,179,181,255,216,178,179,255,216,177,178,255, -216,176,177,255,215,175,176,255,215,174,175,255,214,174,173,255,213,172,172,255,212,172,171,255,212,171,169,255,212,170,168,255, -211,169,166,255,211,168,165,255,209,166,163,255,209,165,161,255,208,164,159,255,207,163,157,255,206,162,155,255,206,161,154,255, -204,159,151,255,204,157,149,255,203,156,147,255,202,154,144,255,201,153,142,255,201,152,140,255,199,149,137,255,198,148,134,255, -197,146,131,255,196,144,128,255,196,143,125,255,195,141,123,255,193,139,119,255,192,137,116,255,191,136,113,255,190,133,109,255, -189,132,107,255,186,130,105,255,185,129,104,255,184,128,104,255,182,127,103,255,181,126,102,255,179,125,101,255,177,123,100,255, -175,122, 99,255,174,121, 98,255,171,119, 96,255,170,118, 95,255,168,117, 95,255,166,115, 93,255,164,114, 92,255,162,113, 91,255, -160,111, 89,255,158,109, 88,255,156,108, 87,255,154,106, 86,255,151,105, 85,255,149,103, 83,255,147,101, 81,255,144, 99, 80,255, -141, 97, 79,255,137, 95, 76,255,134, 92, 74,255,130, 90, 72,255,127, 87, 70,255,123, 85, 68,255,119, 82, 65,255,115, 79, 63,255, -110, 76, 60,255,106, 72, 57,255,100, 68, 54,255, 93, 63, 50,255, 86, 57, 45,255, 75, 49, 39,255, 53, 36, 29,255, 2, 2, 2,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,125,128,255,222,186,191,255, -221,184,190,255,221,185,189,255,221,185,190,255,221,185,188,255,220,184,189,255,221,183,188,255,219,184,187,255,220,183,187,255, -220,183,186,255,218,181,185,255,219,181,184,255,218,181,183,255,218,179,181,255,218,179,181,255,216,179,180,255,216,177,179,255, -215,177,178,255,215,175,176,255,214,174,175,255,214,174,174,255,213,173,172,255,213,172,171,255,212,171,170,255,211,170,168,255, -211,169,167,255,211,168,165,255,209,166,163,255,209,165,162,255,208,164,160,255,207,163,157,255,207,162,156,255,206,161,154,255, -205,159,151,255,204,157,149,255,203,156,147,255,201,154,145,255,202,153,141,255,201,152,139,255,199,149,137,255,198,148,134,255, -197,147,132,255,197,144,129,255,196,143,125,255,195,141,123,255,193,139,119,255,192,137,116,255,191,135,114,255,190,134,109,255, -189,132,107,255,187,130,105,255,185,129,104,255,184,129,105,255,182,127,103,255,181,126,102,255,179,125,101,255,177,123,100,255, -176,122, 99,255,174,121, 98,255,171,119, 96,255,170,118, 95,255,168,117, 95,255,165,115, 93,255,164,114, 92,255,162,112, 91,255, -159,110, 89,255,157,109, 88,255,156,108, 87,255,153,106, 85,255,151,105, 84,255,149,103, 83,255,146,101, 81,255,143, 99, 79,255, -140, 97, 78,255,137, 94, 76,255,133, 91, 74,255,130, 90, 72,255,126, 87, 70,255,122, 84, 67,255,119, 81, 65,255,114, 78, 63,255, -110, 75, 59,255,104, 70, 57,255, 98, 67, 52,255, 91, 61, 49,255, 80, 53, 41,255, 61, 41, 33,255, 10, 7, 6,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,125,128,255,222,186,191,255, -221,184,190,255,221,185,189,255,221,185,188,255,220,185,189,255,221,184,189,255,220,183,188,255,219,183,187,255,220,183,187,255, -220,183,186,255,218,181,185,255,219,181,184,255,217,181,182,255,218,180,182,255,218,180,182,255,216,178,180,255,217,177,179,255, -216,177,178,255,216,175,176,255,215,175,176,255,215,175,175,255,213,173,173,255,213,172,171,255,212,171,170,255,212,170,169,255, -211,169,167,255,211,168,166,255,209,167,163,255,209,165,162,255,208,164,160,255,208,163,158,255,207,162,155,255,206,161,154,255, -205,159,151,255,204,157,149,255,203,156,147,255,202,154,145,255,201,153,142,255,201,152,139,255,199,149,136,255,198,148,134,255, -197,146,131,255,196,144,129,255,196,142,125,255,195,141,121,255,193,139,119,255,192,137,116,255,191,135,112,255,190,134,109,255, -189,132,107,255,186,130,105,255,186,130,105,255,184,129,104,255,182,127,103,255,181,126,102,255,179,125,101,255,177,123, 99,255, -176,122, 99,255,174,121, 98,255,171,119, 97,255,170,118, 95,255,168,117, 94,255,165,115, 92,255,163,113, 92,255,162,112, 91,255, -159,110, 89,255,157,109, 88,255,156,108, 87,255,153,106, 85,255,151,104, 84,255,148,102, 82,255,145,101, 81,255,142, 98, 79,255, -139, 96, 77,255,135, 94, 75,255,132, 91, 73,255,128, 88, 71,255,125, 86, 69,255,121, 84, 67,255,117, 80, 64,255,112, 77, 62,255, -108, 73, 58,255,102, 69, 55,255, 95, 65, 51,255, 86, 57, 45,255, 68, 45, 37,255, 18, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,125,127,255,222,185,190,255, -221,185,189,255,221,185,189,255,220,185,188,255,221,184,189,255,220,184,188,255,219,183,188,255,220,183,187,255,220,182,187,255, -220,183,186,255,218,181,185,255,219,181,184,255,218,180,183,255,217,180,183,255,218,180,182,255,216,178,180,255,217,177,179,255, -216,177,178,255,216,176,177,255,215,176,176,255,215,175,175,255,213,173,173,255,213,172,171,255,212,171,170,255,212,170,169,255, -211,170,167,255,211,169,166,255,209,167,163,255,209,166,162,255,208,165,160,255,208,163,158,255,207,162,155,255,206,161,154,255, -205,159,152,255,204,157,150,255,203,156,147,255,202,154,144,255,201,152,141,255,200,151,139,255,199,149,136,255,198,148,133,255, -197,146,131,255,196,144,128,255,195,142,125,255,194,141,122,255,193,138,119,255,192,137,115,255,192,134,113,255,190,133,109,255, -188,131,107,255,186,131,105,255,185,129,105,255,184,128,104,255,182,128,103,255,181,126,102,255,179,125,101,255,177,123,100,255, -176,123, 99,255,174,121, 98,255,172,119, 97,255,170,118, 95,255,167,116, 94,255,165,114, 92,255,163,113, 91,255,161,112, 90,255, -159,110, 89,255,156,108, 88,255,154,107, 86,255,152,105, 85,255,150,103, 83,255,146,101, 82,255,144,100, 80,255,140, 97, 78,255, -137, 95, 76,255,134, 93, 75,255,131, 90, 73,255,128, 88, 71,255,125, 86, 69,255,121, 83, 66,255,116, 79, 63,255,111, 76, 61,255, -106, 72, 57,255, 98, 67, 53,255, 88, 58, 46,255, 78, 55, 46,255, 23, 18, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,125,127,255,221,185,189,255, -220,184,188,255,220,184,189,255,221,184,189,255,221,184,189,255,220,183,188,255,219,183,187,255,220,183,187,255,219,182,187,255, -220,183,186,255,218,181,184,255,218,182,185,255,219,181,184,255,217,180,182,255,218,180,182,255,216,178,180,255,216,177,179,255, -215,177,178,255,216,176,177,255,215,175,176,255,215,175,175,255,213,173,173,255,213,172,172,255,212,171,170,255,212,170,169,255, -211,170,167,255,211,169,166,255,209,167,163,255,209,166,162,255,208,164,160,255,207,162,158,255,207,162,155,255,206,161,153,255, -205,159,151,255,204,157,148,255,203,156,147,255,202,154,144,255,201,152,141,255,200,151,139,255,199,148,136,255,198,147,133,255, -197,146,130,255,195,143,127,255,194,142,124,255,194,140,122,255,192,138,118,255,192,136,115,255,191,134,112,255,189,132,108,255, -188,131,107,255,186,130,105,255,185,129,105,255,184,128,104,255,181,126,102,255,180,126,102,255,179,125,101,255,177,123,100,255, -175,122, 99,255,173,121, 98,255,171,119, 96,255,169,117, 95,255,166,116, 94,255,164,114, 92,255,162,112, 91,255,160,111, 90,255, -157,109, 88,255,155,108, 87,255,153,106, 86,255,151,104, 84,255,148,102, 82,255,144,100, 81,255,141, 97, 78,255,138, 95, 77,255, -136, 94, 75,255,132, 91, 73,255,129, 89, 71,255,127, 87, 70,255,123, 84, 67,255,119, 81, 65,255,114, 78, 62,255,108, 74, 59,255, -101, 68, 55,255, 91, 62, 49,255, 82, 59, 50,255, 28, 23, 21,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,143,124,126,255,221,183,187,255, -219,183,187,255,219,183,187,255,219,184,187,255,219,184,187,255,219,184,187,255,220,183,187,255,220,182,186,255,219,183,186,255, -218,181,186,255,219,181,185,255,219,181,184,255,217,181,183,255,218,179,182,255,217,179,181,255,217,178,181,255,216,177,179,255, -215,177,178,255,215,176,177,255,215,175,176,255,215,175,175,255,213,173,173,255,213,172,172,255,212,172,171,255,212,170,168,255, -211,169,167,255,211,168,166,255,209,166,163,255,209,165,162,255,208,164,160,255,207,162,157,255,206,161,156,255,205,160,153,255, -204,158,150,255,204,157,148,255,203,155,145,255,201,153,143,255,201,152,140,255,200,150,138,255,198,148,135,255,198,147,132,255, -197,145,129,255,195,143,127,255,194,142,123,255,193,140,120,255,192,137,117,255,191,136,113,255,189,134,110,255,189,132,108,255, -188,131,106,255,186,129,105,255,185,128,104,255,184,128,104,255,181,126,102,255,180,125,101,255,178,124,100,255,176,123, 99,255, -174,121, 98,255,172,119, 97,255,170,118, 96,255,167,116, 94,255,166,114, 92,255,163,113, 91,255,160,111, 90,255,158,109, 88,255, -156,108, 87,255,154,107, 86,255,151,104, 84,255,148,103, 83,255,145,100, 81,255,142, 98, 79,255,139, 96, 78,255,136, 94, 76,255, -133, 92, 74,255,131, 90, 72,255,128, 88, 71,255,124, 85, 68,255,120, 82, 65,255,115, 79, 63,255,110, 75, 60,255,104, 70, 56,255, - 94, 63, 50,255, 82, 60, 50,255, 28, 24, 22,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,143,124,126,255,220,183,186,255, -219,182,186,255,219,182,186,255,220,183,187,255,220,183,187,255,220,183,187,255,220,183,187,255,220,183,186,255,219,182,186,255, -218,182,185,255,219,181,184,255,219,180,184,255,218,181,182,255,218,179,182,255,217,179,181,255,217,179,180,255,216,177,179,255, -215,177,178,255,215,176,177,255,214,175,176,255,215,175,174,255,213,173,173,255,213,172,172,255,213,172,171,255,211,170,168,255, -211,169,167,255,211,168,165,255,209,166,163,255,208,165,161,255,208,164,160,255,206,162,157,255,206,161,155,255,205,160,152,255, -204,158,150,255,203,156,147,255,202,155,145,255,201,153,142,255,201,151,140,255,200,150,137,255,198,148,134,255,197,146,132,255, -197,145,128,255,195,143,125,255,194,140,122,255,192,139,119,255,192,137,115,255,191,135,112,255,190,133,109,255,188,132,107,255, -186,130,106,255,185,129,104,255,184,128,104,255,182,127,103,255,181,126,102,255,178,125,101,255,177,123,100,255,175,122, 98,255, -173,120, 97,255,171,118, 96,255,168,117, 95,255,166,115, 93,255,164,114, 92,255,162,112, 90,255,159,111, 89,255,156,108, 88,255, -154,107, 87,255,151,105, 84,255,149,102, 82,255,146,101, 81,255,142, 98, 79,255,140, 96, 77,255,137, 94, 76,255,134, 92, 74,255, -131, 90, 73,255,129, 89, 71,255,125, 86, 69,255,121, 82, 66,255,116, 79, 63,255,110, 76, 60,255,105, 71, 56,255, 97, 66, 52,255, - 80, 60, 50,255, 24, 21, 20,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,143,123,124,255,219,182,184,255, -219,182,185,255,219,181,185,255,219,182,186,255,219,183,186,255,218,183,185,255,219,182,186,255,219,182,186,255,219,182,185,255, -219,182,185,255,218,180,184,255,218,181,183,255,218,180,183,255,217,179,182,255,216,179,181,255,217,178,179,255,216,177,179,255, -215,177,178,255,216,175,176,255,214,175,175,255,214,174,174,255,214,173,172,255,213,172,172,255,213,172,170,255,211,170,168,255, -211,169,167,255,211,168,165,255,209,166,163,255,208,165,161,255,208,164,159,255,206,162,156,255,206,161,155,255,205,159,152,255, -204,157,149,255,203,155,146,255,202,154,144,255,200,152,141,255,200,150,138,255,199,149,136,255,197,147,133,255,197,145,130,255, -196,144,127,255,195,141,124,255,194,140,120,255,193,138,117,255,191,136,114,255,190,133,110,255,189,132,107,255,187,130,106,255, -186,129,105,255,184,129,105,255,182,127,103,255,181,126,102,255,179,125,101,255,177,123,100,255,175,122, 99,255,173,120, 97,255, -171,119, 96,255,169,118, 95,255,166,115, 93,255,164,114, 92,255,162,112, 91,255,159,110, 89,255,157,109, 88,255,154,107, 86,255, -151,104, 84,255,149,103, 83,255,145,101, 81,255,142, 98, 79,255,139, 96, 77,255,137, 95, 76,255,134, 92, 74,255,131, 90, 73,255, -129, 89, 71,255,125, 86, 69,255,121, 83, 66,255,116, 80, 64,255,110, 76, 60,255,105, 72, 57,255, 98, 66, 52,255, 79, 58, 50,255, - 12, 11, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,142,122,124,255,219,180,183,255, -217,180,183,255,218,181,184,255,219,181,184,255,218,181,185,255,219,181,185,255,219,181,185,255,218,182,185,255,219,181,184,255, -217,180,183,255,217,180,183,255,218,180,182,255,217,179,181,255,216,178,181,255,217,178,180,255,216,178,179,255,216,177,178,255, -216,176,178,255,214,176,176,255,214,175,175,255,214,174,174,255,214,172,172,255,213,172,171,255,212,171,170,255,211,170,168,255, -211,169,166,255,210,168,165,255,209,166,162,255,208,165,161,255,208,163,159,255,206,162,156,255,206,160,153,255,205,159,151,255, -203,157,148,255,202,155,145,255,202,153,142,255,200,152,140,255,199,150,137,255,198,148,134,255,197,146,131,255,196,145,128,255, -195,142,125,255,194,141,122,255,193,139,118,255,191,136,115,255,190,134,111,255,189,132,108,255,187,130,106,255,186,130,105,255, -185,129,104,255,182,127,103,255,181,126,102,255,179,125,101,255,177,123,100,255,176,122, 99,255,173,120, 98,255,171,119, 96,255, -169,118, 95,255,167,116, 93,255,164,114, 92,255,162,113, 91,255,159,110, 89,255,157,109, 88,255,154,107, 87,255,151,104, 84,255, -148,103, 83,255,145,100, 80,255,142, 98, 79,255,140, 96, 77,255,137, 94, 76,255,134, 92, 74,255,131, 91, 73,255,129, 89, 71,255, -125, 86, 69,255,120, 83, 66,255,115, 79, 64,255,111, 76, 60,255,106, 72, 57,255, 97, 66, 53,255, 70, 52, 45,255, 4, 4, 4,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,141,121,122,255,217,179,180,255, -217,179,181,255,217,179,182,255,218,181,183,255,218,180,184,255,219,181,184,255,219,182,184,255,219,182,184,255,218,181,184,255, -218,181,183,255,218,180,182,255,217,180,182,255,216,178,181,255,217,178,180,255,216,178,179,255,215,177,179,255,216,176,178,255, -215,176,176,255,214,175,175,255,214,174,174,255,213,174,173,255,214,172,172,255,213,172,170,255,212,171,169,255,212,169,167,255, -210,168,166,255,210,167,164,255,209,166,162,255,208,164,160,255,207,163,158,255,206,161,155,255,205,160,153,255,205,158,150,255, -203,156,147,255,202,154,144,255,201,153,141,255,200,151,138,255,199,149,136,255,198,147,133,255,197,145,129,255,196,143,127,255, -195,142,123,255,193,139,120,255,192,137,116,255,191,135,112,255,190,132,109,255,187,131,106,255,186,130,105,255,185,129,104,255, -183,127,103,255,181,126,102,255,179,125,101,255,177,124,100,255,176,123, 99,255,173,121, 97,255,171,119, 96,255,169,118, 95,255, -166,115, 93,255,164,114, 92,255,161,112, 91,255,159,110, 89,255,157,108, 87,255,153,106, 86,255,151,104, 84,255,148,103, 82,255, -144,100, 80,255,142, 98, 78,255,138, 96, 77,255,136, 94, 76,255,134, 92, 74,255,131, 91, 73,255,129, 89, 71,255,125, 86, 68,255, -120, 82, 66,255,115, 79, 63,255,111, 76, 60,255,107, 72, 57,255, 96, 67, 55,255, 43, 32, 28,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,140,120,120,255,216,176,177,255, -216,178,179,255,217,179,181,255,217,179,182,255,218,181,184,255,219,182,184,255,219,181,185,255,218,181,184,255,219,182,184,255, -218,181,183,255,218,179,182,255,217,179,181,255,216,179,181,255,216,177,179,255,215,177,179,255,216,177,178,255,215,175,176,255, -214,176,176,255,214,175,174,255,213,174,174,255,214,173,173,255,212,172,171,255,212,171,170,255,212,170,168,255,210,168,166,255, -210,168,165,255,210,167,164,255,208,165,161,255,208,164,160,255,207,163,157,255,205,160,154,255,205,159,152,255,204,158,149,255, -202,155,147,255,202,154,143,255,201,152,140,255,199,150,137,255,199,148,134,255,198,147,131,255,196,144,128,255,195,142,124,255, -194,141,121,255,192,138,118,255,191,135,114,255,190,133,110,255,188,131,106,255,186,130,106,255,185,129,105,255,183,127,103,255, -181,126,102,255,179,125,101,255,177,123,100,255,175,122, 99,255,173,120, 97,255,171,119, 96,255,169,118, 95,255,166,115, 93,255, -164,113, 92,255,161,112, 91,255,158,109, 88,255,156,108, 87,255,152,106, 85,255,149,103, 83,255,147,102, 82,255,144, 99, 80,255, -141, 97, 78,255,138, 95, 77,255,137, 94, 76,255,134, 92, 74,255,131, 91, 73,255,129, 89, 71,255,125, 85, 68,255,120, 82, 65,255, -115, 79, 63,255,111, 76, 60,255,106, 72, 56,255, 95, 68, 56,255, 25, 20, 18,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,139,117,117,255,214,172,172,255, -214,174,175,255,216,177,179,255,217,179,182,255,218,181,184,255,219,182,185,255,219,182,186,255,219,183,187,255,219,182,186,255, -219,181,184,255,218,180,183,255,217,179,181,255,216,178,180,255,216,177,179,255,215,177,178,255,216,175,176,255,214,175,176,255, -214,174,174,255,213,173,174,255,213,173,173,255,213,172,171,255,212,171,170,255,211,170,169,255,211,169,168,255,210,168,166,255, -210,167,164,255,209,166,162,255,208,164,160,255,207,163,158,255,207,162,156,255,205,160,154,255,204,158,150,255,203,156,147,255, -202,155,145,255,201,153,142,255,200,151,138,255,199,149,136,255,198,147,132,255,196,145,129,255,195,143,126,255,194,141,122,255, -192,138,118,255,191,136,114,255,190,134,110,255,188,131,107,255,187,130,106,255,185,129,105,255,183,127,103,255,181,126,102,255, -179,124,101,255,177,123,100,255,175,122, 99,255,173,120, 98,255,171,119, 96,255,168,117, 95,255,165,115, 93,255,163,113, 92,255, -160,111, 90,255,157,109, 88,255,154,106, 86,255,151,104, 85,255,148,102, 82,255,145,101, 81,255,143, 98, 79,255,140, 97, 78,255, -138, 96, 77,255,136, 94, 76,255,134, 92, 74,255,132, 91, 73,255,129, 88, 71,255,126, 86, 68,255,121, 82, 66,255,115, 79, 64,255, -111, 76, 60,255,104, 71, 57,255, 76, 55, 46,255, 7, 6, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,138,115,113,255,210,167,165,255, -212,171,170,255,214,174,175,255,216,178,180,255,218,180,184,255,219,182,186,255,220,183,187,255,220,184,188,255,220,184,188,255, -219,183,187,255,218,182,185,255,218,181,183,255,217,179,181,255,216,178,180,255,215,177,178,255,215,175,176,255,214,175,175,255, -214,174,174,255,213,173,173,255,213,172,171,255,212,171,170,255,212,171,169,255,211,169,167,255,211,169,166,255,210,168,165,255, -209,166,163,255,209,165,161,255,207,164,160,255,207,162,157,255,206,161,154,255,205,160,153,255,204,158,150,255,203,155,146,255, -202,154,143,255,200,152,140,255,199,150,137,255,198,148,134,255,197,146,130,255,196,144,126,255,195,141,123,255,193,139,119,255, -192,136,115,255,190,134,111,255,188,132,107,255,187,130,106,255,185,129,105,255,183,127,103,255,180,126,102,255,179,125,101,255, -177,123, 99,255,174,121, 98,255,172,119, 97,255,170,117, 95,255,167,116, 94,255,165,114, 93,255,162,112, 91,255,159,109, 88,255, -155,108, 87,255,152,105, 85,255,149,103, 83,255,147,101, 82,255,144, 99, 80,255,141, 98, 79,255,139, 96, 77,255,137, 94, 76,255, -136, 93, 75,255,134, 92, 74,255,132, 91, 73,255,130, 89, 72,255,127, 86, 69,255,122, 83, 66,255,116, 80, 64,255,110, 75, 60,255, -102, 72, 59,255, 44, 33, 28,255, 3, 3, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 61, 61,255,124,100, 94,255,202,157,149,255, -206,164,159,255,211,169,167,255,213,174,175,255,216,178,181,255,219,182,185,255,219,183,187,255,221,185,190,255,221,184,190,255, -221,185,189,255,219,183,187,255,219,182,185,255,218,181,183,255,216,178,181,255,216,177,179,255,215,175,176,255,214,175,175,255, -214,174,174,255,212,172,171,255,212,171,170,255,211,171,169,255,211,169,167,255,210,168,166,255,210,168,165,255,209,166,163,255, -208,165,162,255,208,164,160,255,207,162,157,255,206,161,156,255,206,160,154,255,204,158,150,255,203,157,148,255,203,155,145,255, -200,152,142,255,200,150,138,255,199,149,135,255,197,146,132,255,196,144,128,255,195,142,124,255,193,139,120,255,192,136,116,255, -191,135,112,255,188,132,107,255,186,130,105,255,185,129,105,255,182,127,103,255,180,126,102,255,178,124,101,255,176,122, 99,255, -173,121, 98,255,170,118, 96,255,169,117, 95,255,166,115, 93,255,162,112, 91,255,160,111, 90,255,156,108, 88,255,153,106, 85,255, -150,104, 84,255,147,102, 83,255,145,100, 81,255,143, 98, 79,255,141, 97, 79,255,138, 95, 76,255,136, 94, 76,255,136, 93, 75,255, -134, 92, 74,255,133, 92, 74,255,132, 91, 73,255,129, 88, 71,255,123, 84, 67,255,117, 80, 64,255,109, 75, 60,255, 91, 65, 55,255, - 13, 11, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 23, 25, 25,255, 70, 51, 45,255, -166,126,117,255,202,157,150,255,210,167,165,255,212,171,171,255,216,177,179,255,219,181,184,255,220,183,187,255,220,184,189,255, -221,185,189,255,220,183,188,255,219,183,186,255,219,181,184,255,217,179,182,255,216,178,179,255,216,177,178,255,215,175,175,255, -214,174,174,255,212,172,172,255,212,171,170,255,211,170,169,255,210,169,166,255,210,168,165,255,209,167,163,255,208,166,162,255, -208,165,160,255,207,163,158,255,206,162,156,255,206,160,154,255,205,158,151,255,203,157,149,255,203,156,146,255,201,153,142,255, -200,152,140,255,199,149,136,255,197,147,133,255,196,145,129,255,195,142,125,255,193,140,121,255,192,137,116,255,190,134,111,255, -188,132,107,255,186,130,105,255,184,128,104,255,182,127,103,255,179,124,101,255,176,123, 99,255,175,122, 99,255,172,119, 96,255, -169,117, 95,255,166,116, 94,255,163,113, 92,255,161,111, 90,255,157,110, 88,255,154,107, 86,255,151,105, 84,255,148,103, 83,255, -146,101, 81,255,144, 99, 80,255,142, 98, 79,255,140, 97, 78,255,138, 95, 77,255,137, 94, 76,255,136, 93, 75,255,135, 93, 75,255, -134, 92, 74,255,133, 92, 74,255,130, 90, 72,255,124, 86, 68,255,117, 80, 64,255,104, 72, 58,255, 63, 47, 39,255, 4, 4, 4,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 61, 61,255, 29, 29, 29,255, 0, 0, 0,255, - 14, 10, 9,255, 82, 62, 56,255,183,139,130,255,208,162,155,255,210,167,165,255,214,175,175,255,218,179,180,255,219,182,185,255, -220,183,186,255,219,182,185,255,219,181,184,255,218,179,182,255,217,178,180,255,216,177,178,255,215,176,176,255,214,175,174,255, -214,173,172,255,213,172,170,255,212,171,169,255,211,169,167,255,210,168,165,255,209,167,163,255,209,166,161,255,208,165,160,255, -207,163,158,255,207,162,157,255,206,161,154,255,205,159,152,255,204,158,150,255,203,156,147,255,201,154,144,255,200,152,140,255, -200,150,138,255,198,147,134,255,196,145,130,255,195,143,126,255,193,140,121,255,191,137,116,255,190,134,111,255,188,131,107,255, -186,129,105,255,183,128,103,255,181,126,102,255,178,123,100,255,175,122, 99,255,172,120, 98,255,170,117, 95,255,167,116, 94,255, -165,114, 92,255,161,111, 90,255,158,110, 89,255,155,107, 87,255,152,105, 84,255,149,103, 83,255,146,101, 81,255,144,100, 80,255, -143, 98, 79,255,141, 97, 78,255,140, 96, 78,255,138, 95, 76,255,137, 94, 75,255,137, 94, 75,255,137, 95, 76,255,137, 94, 76,255, -135, 93, 75,255,131, 91, 73,255,126, 87, 69,255,115, 79, 63,255, 79, 57, 48,255, 23, 18, 15,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 5, 5, 4,255,122, 93, 86,255,200,151,140,255,207,162,155,255,212,170,167,255,215,174,174,255, -216,177,178,255,216,177,178,255,217,177,178,255,215,175,176,255,214,174,174,255,214,173,173,255,213,172,171,255,212,171,170,255, -212,170,169,255,211,169,167,255,210,168,166,255,210,168,164,255,209,166,162,255,208,165,161,255,207,165,160,255,207,163,157,255, -206,162,156,255,206,161,154,255,204,159,151,255,204,158,150,255,203,156,147,255,201,154,144,255,200,152,140,255,200,150,138,255, -198,147,134,255,196,144,129,255,195,143,125,255,193,139,121,255,191,136,115,255,190,133,110,255,187,130,106,255,184,128,104,255, -182,127,103,255,179,124,100,255,176,122, 99,255,172,120, 97,255,170,118, 96,255,166,116, 94,255,163,113, 91,255,161,112, 90,255, -158,110, 88,255,154,107, 86,255,152,105, 85,255,148,103, 83,255,146,101, 81,255,144,100, 80,255,143, 99, 80,255,141, 97, 78,255, -140, 97, 77,255,140, 97, 77,255,138, 95, 77,255,139, 96, 77,255,140, 97, 77,255,141, 97, 78,255,139, 96, 77,255,137, 95, 77,255, -133, 92, 74,255,125, 85, 69,255,111, 78, 64,255, 40, 31, 28,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,101, 72, 60,255,194,141,125,255,202,154,143,255,208,163,157,255, -211,167,164,255,212,169,166,255,211,169,166,255,211,168,165,255,210,167,164,255,209,166,163,255,209,166,161,255,208,165,160,255, -208,165,160,255,208,164,159,255,207,164,159,255,208,163,158,255,207,162,157,255,207,162,156,255,206,161,155,255,206,161,153,255, -205,159,152,255,204,158,151,255,203,157,148,255,202,155,146,255,201,153,143,255,200,151,140,255,198,149,136,255,197,147,132,255, -196,144,127,255,194,141,123,255,192,138,118,255,190,135,111,255,188,132,107,255,185,129,104,255,183,127,103,255,179,125,101,255, -176,123, 99,255,173,121, 97,255,169,118, 95,255,167,115, 93,255,163,114, 91,255,160,111, 90,255,156,109, 87,255,152,106, 86,255, -150,104, 84,255,148,102, 82,255,145,100, 80,255,144, 99, 80,255,143, 98, 79,255,143, 98, 79,255,142, 98, 79,255,142, 98, 79,255, -141, 98, 79,255,141, 98, 79,255,142, 99, 79,255,143, 99, 80,255,144, 99, 80,255,141, 98, 79,255,139, 96, 77,255,129, 89, 72,255, -101, 70, 57,255, 55, 39, 32,255, 0, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 1,255,168,118, 96,255,192,136,116,255,200,148,133,255, -204,154,145,255,205,157,148,255,205,157,148,255,204,157,147,255,204,156,146,255,203,156,146,255,203,155,144,255,202,154,145,255, -202,154,145,255,202,155,145,255,203,155,146,255,203,156,147,255,203,156,147,255,203,156,147,255,202,156,146,255,203,155,146,255, -202,155,145,255,201,154,144,255,200,153,141,255,200,151,140,255,199,149,136,255,197,147,133,255,196,145,128,255,194,141,124,255, -192,139,119,255,191,136,112,255,189,132,108,255,186,129,105,255,183,127,103,255,179,125,101,255,176,122, 99,255,172,120, 97,255, -168,118, 95,255,165,115, 93,255,162,113, 91,255,158,109, 89,255,154,107, 87,255,151,104, 84,255,148,102, 83,255,146,101, 81,255, -145,100, 81,255,144,100, 80,255,144, 99, 80,255,145,100, 80,255,145,100, 81,255,145,100, 81,255,146,101, 81,255,145,101, 81,255, -145,101, 81,255,145,101, 81,255,145,101, 81,255,144,100, 80,255,142, 98, 78,255,134, 92, 74,255,104, 73, 59,255, 39, 27, 22,255, - 10, 7, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 92, 65, 54,255,181,126,102,255,191,134,111,255, -196,141,121,255,197,144,127,255,197,144,126,255,196,142,124,255,195,142,123,255,194,140,121,255,194,140,121,255,193,140,121,255, -193,140,121,255,194,140,122,255,194,142,124,255,196,144,126,255,196,145,129,255,197,145,130,255,197,146,131,255,197,146,132,255, -197,146,131,255,197,145,131,255,196,145,129,255,195,144,127,255,195,141,124,255,193,140,120,255,192,137,117,255,190,135,113,255, -189,132,108,255,186,130,105,255,182,128,103,255,180,125,101,255,175,122, 99,255,171,119, 96,255,169,117, 95,255,164,114, 93,255, -160,111, 90,255,156,109, 88,255,153,106, 86,255,150,103, 83,255,147,102, 82,255,146,102, 81,255,146,101, 82,255,146,101, 82,255, -147,101, 82,255,148,102, 82,255,148,102, 83,255,148,103, 83,255,149,103, 83,255,148,103, 83,255,148,103, 83,255,145,101, 81,255, -147,102, 82,255,145,101, 81,255,142, 99, 79,255,135, 93, 74,255,111, 78, 64,255, 40, 29, 25,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 56, 42, 35,255,170,118, 95,255,182,126,102,255, -188,131,106,255,189,132,108,255,188,131,107,255,187,130,105,255,185,128,104,255,183,127,103,255,182,126,102,255,181,126,102,255, -181,126,102,255,181,126,102,255,183,127,103,255,183,128,104,255,185,130,106,255,186,131,108,255,187,132,108,255,187,132,109,255, -188,133,110,255,188,133,110,255,188,133,110,255,188,133,110,255,188,132,108,255,187,131,107,255,186,129,105,255,184,128,104,255, -182,127,103,255,178,125,101,255,175,122, 99,255,172,119, 96,255,168,117, 94,255,164,114, 92,255,161,112, 90,255,157,109, 88,255, -154,107, 86,255,151,104, 84,255,149,103, 83,255,148,103, 83,255,149,103, 83,255,148,103, 83,255,150,103, 83,255,150,104, 84,255, -151,104, 84,255,151,104, 84,255,151,105, 84,255,151,104, 84,255,149,104, 84,255,147,103, 83,255,147,102, 82,255,145,101, 80,255, -139, 97, 78,255,119, 83, 67,255, 84, 59, 49,255, 36, 27, 23,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 31, 24, 22,255,162,113, 90,255,174,121, 98,255, -179,124,100,255,180,125,101,255,178,124,100,255,175,121, 98,255,172,119, 96,255,169,118, 95,255,167,116, 94,255,166,116, 93,255, -166,115, 93,255,166,115, 92,255,166,115, 93,255,166,116, 94,255,168,116, 94,255,169,117, 95,255,169,118, 95,255,169,118, 95,255, -171,119, 96,255,173,120, 97,255,175,122, 99,255,177,124,100,255,178,124,100,255,179,124,100,255,178,123,100,255,177,123, 99,255, -175,121, 98,255,172,120, 97,255,169,117, 95,255,166,115, 93,255,162,113, 91,255,160,111, 90,255,157,109, 88,255,155,108, 87,255, -154,106, 86,255,153,106, 86,255,153,106, 86,255,152,106, 86,255,153,106, 86,255,154,106, 86,255,154,106, 86,255,154,106, 86,255, -154,107, 86,255,153,106, 85,255,151,105, 84,255,148,103, 83,255,147,102, 82,255,144,100, 79,255,134, 94, 75,255, 91, 65, 54,255, - 41, 29, 25,255, 15, 11, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 26, 22, 20,255,158,109, 88,255,169,118, 95,255, -172,120, 97,255,172,119, 97,255,169,117, 95,255,164,114, 92,255,160,111, 89,255,157,109, 87,255,155,107, 86,255,152,106, 85,255, -151,104, 83,255,149,103, 83,255,148,102, 82,255,146,100, 82,255,145,100, 80,255,142, 98, 79,255,143, 98, 79,255,145,101, 82,255, -152,105, 85,255,159,110, 89,255,165,115, 93,255,169,117, 95,255,170,119, 96,255,172,120, 97,255,173,120, 97,255,173,120, 97,255, -171,119, 96,255,169,118, 95,255,167,116, 94,255,164,114, 92,255,161,112, 90,255,160,112, 90,255,159,110, 89,255,158,110, 89,255, -158,110, 89,255,158,109, 89,255,157,109, 89,255,156,109, 89,255,157,109, 88,255,156,108, 88,255,154,107, 86,255,154,106, 86,255, -151,105, 85,255,146,102, 81,255,140, 97, 79,255,135, 96, 77,255, 95, 69, 58,255, 44, 33, 29,255, 0, 1, 1,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 26, 21, 19,255,157,108, 87,255,166,115, 93,255, -167,117, 95,255,166,115, 92,255,161,112, 90,255,156,107, 87,255,150,103, 83,255,145,100, 81,255,141, 96, 78,255,137, 94, 76,255, -134, 92, 74,255,130, 89, 71,255,125, 86, 69,255,119, 81, 65,255,111, 77, 63,255, 88, 64, 53,255, 74, 56, 50,255, 99, 79, 72,255, -115, 85, 72,255,130, 93, 77,255,153,108, 89,255,163,115, 94,255,168,118, 96,255,170,119, 96,255,172,119, 96,255,172,120, 97,255, -171,118, 96,255,169,118, 95,255,167,116, 94,255,166,115, 93,255,164,114, 92,255,163,113, 91,255,162,112, 90,255,161,112, 90,255, -160,111, 89,255,159,110, 89,255,158,110, 89,255,157,109, 89,255,150,106, 86,255,137, 96, 78,255,125, 88, 72,255,105, 73, 60,255, - 85, 61, 50,255, 55, 40, 34,255, 29, 23, 20,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 34, 26, 23,255,157,108, 87,255,163,113, 92,255, -164,114, 92,255,160,111, 89,255,154,107, 86,255,148,101, 82,255,140, 97, 77,255,134, 92, 74,255,129, 88, 71,255,123, 84, 67,255, -117, 80, 64,255,110, 74, 59,255, 99, 67, 53,255, 85, 58, 47,255, 38, 30, 26,255, 5, 5, 4,255, 0, 0, 0,255, 2, 2, 2,255, - 10, 8, 7,255, 15, 11, 9,255, 22, 16, 14,255, 30, 23, 19,255, 42, 30, 26,255, 60, 42, 35,255, 85, 60, 49,255,101, 73, 59,255, -108, 76, 62,255,112, 80, 66,255,121, 87, 72,255,120, 86, 71,255,119, 86, 71,255,114, 81, 68,255,108, 77, 65,255,101, 73, 61,255, - 93, 67, 56,255, 77, 57, 48,255, 53, 39, 33,255, 34, 25, 21,255, 25, 18, 15,255, 17, 12, 10,255, 13, 9, 8,255, 4, 3, 3,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 49, 37, 33,255,155,107, 86,255,162,112, 91,255, -161,111, 90,255,156,108, 87,255,149,103, 83,255,141, 97, 78,255,132, 91, 73,255,124, 85, 68,255,116, 80, 64,255,109, 74, 59,255, -100, 68, 53,255, 88, 60, 47,255, 75, 51, 40,255, 27, 21, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 58, 43, 36,255,157,108, 87,255,161,112, 90,255, -159,110, 89,255,152,106, 85,255,144, 99, 80,255,135, 92, 75,255,124, 86, 69,255,116, 79, 63,255,106, 72, 57,255, 96, 65, 51,255, - 84, 56, 44,255, 70, 46, 36,255, 46, 35, 29,255, 2, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 62, 45, 38,255,158,109, 88,255,161,112, 90,255, -157,109, 88,255,149,103, 84,255,140, 96, 78,255,129, 89, 71,255,119, 81, 64,255,108, 73, 58,255, 97, 65, 51,255, 85, 57, 45,255, - 71, 46, 36,255, 55, 35, 27,255, 16, 14, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 69, 50, 42,255,159,110, 88,255,160,112, 90,255, -156,109, 88,255,147,102, 82,255,136, 95, 76,255,125, 85, 68,255,113, 77, 62,255,101, 68, 54,255, 89, 60, 47,255, 75, 49, 38,255, - 59, 39, 29,255, 45, 31, 26,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 70, 50, 43,255,159,110, 89,255,160,111, 90,255, -155,108, 87,255,146,101, 81,255,134, 92, 74,255,122, 84, 67,255,109, 74, 58,255, 95, 64, 50,255, 80, 53, 42,255, 65, 43, 33,255, - 53, 34, 26,255, 18, 14, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 67, 49, 41,255,160,111, 89,255,161,111, 90,255, -155,108, 87,255,144,100, 80,255,132, 91, 73,255,119, 82, 66,255,104, 71, 56,255, 89, 61, 47,255, 74, 49, 38,255, 57, 37, 28,255, - 50, 33, 26,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 1, 1,255, 4, 5, 5,255, - 9, 9, 10,255, 7, 8, 8,255, 3, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 61, 45, 38,255,162,112, 90,255,162,112, 91,255, -155,108, 87,255,144, 99, 80,255,131, 90, 73,255,117, 80, 63,255,101, 69, 55,255, 84, 57, 45,255, 67, 44, 34,255, 52, 34, 25,255, - 41, 27, 22,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 1, 1,255, 4, 3, 3,255, - 8, 7, 6,255, 30, 27, 25,255, 49, 42, 39,255, 50, 40, 35,255, 62, 48, 41,255, 68, 51, 44,255, 66, 48, 42,255, 63, 45, 37,255, - 62, 43, 35,255, 61, 43, 35,255, 62, 45, 38,255, 64, 48, 41,255, 64, 49, 41,255, 58, 44, 37,255, 44, 35, 32,255, 40, 34, 33,255, - 15, 12, 11,255, 6, 4, 4,255, 4, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 51, 38, 34,255,163,112, 90,255,164,113, 92,255, -156,108, 87,255,144, 99, 80,255,130, 89, 72,255,115, 79, 63,255, 98, 66, 53,255, 80, 54, 42,255, 61, 40, 31,255, 48, 31, 22,255, - 35, 26, 23,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 4, 3, 3,255, 23, 17, 14,255, 38, 27, 21,255, 55, 38, 31,255, - 67, 47, 39,255, 67, 44, 34,255, 68, 43, 32,255, 72, 47, 37,255, 74, 48, 38,255, 76, 50, 39,255, 77, 51, 40,255, 79, 53, 41,255, - 81, 54, 42,255, 83, 55, 43,255, 84, 56, 43,255, 83, 56, 43,255, 83, 55, 43,255, 81, 54, 42,255, 77, 51, 39,255, 71, 45, 34,255, - 69, 47, 38,255, 62, 43, 35,255, 52, 38, 32,255, 33, 25, 22,255, 20, 17, 16,255, 3, 4, 5,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 23, 21,255,165,114, 92,255,165,114, 93,255, -158,110, 89,255,145,100, 81,255,130, 89, 72,255,114, 78, 62,255, 96, 65, 52,255, 77, 51, 40,255, 57, 37, 28,255, 49, 32, 24,255, - 31, 26, 24,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 11, 9, 9,255, 40, 30, 25,255, 62, 42, 33,255, 67, 44, 35,255, 73, 49, 38,255, 76, 51, 40,255, - 80, 53, 41,255, 81, 55, 43,255, 84, 56, 44,255, 86, 57, 45,255, 88, 60, 47,255, 92, 62, 49,255, 97, 66, 52,255,102, 69, 55,255, -107, 73, 58,255,111, 76, 61,255,116, 79, 62,255,117, 81, 65,255,118, 81, 65,255,118, 81, 65,255,116, 80, 63,255,112, 77, 61,255, -107, 72, 57,255, 99, 67, 52,255, 89, 60, 47,255, 81, 54, 43,255, 67, 45, 34,255, 58, 43, 37,255, 28, 22, 19,255, 5, 5, 5,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 8, 7, 7,255,167,116, 94,255,167,117, 94,255, -160,111, 89,255,147,102, 82,255,131, 90, 72,255,114, 78, 62,255, 95, 64, 51,255, 74, 49, 39,255, 52, 34, 25,255, 51, 35, 29,255, - 27, 23, 22,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 1,255, - 9, 7, 6,255, 43, 33, 30,255, 68, 47, 39,255, 72, 48, 36,255, 76, 51, 40,255, 80, 54, 43,255, 83, 56, 44,255, 85, 58, 46,255, - 87, 59, 47,255, 90, 61, 48,255, 95, 64, 50,255,101, 69, 54,255,109, 73, 59,255,117, 80, 64,255,126, 87, 69,255,134, 93, 74,255, -143, 98, 79,255,150,104, 83,255,156,108, 86,255,161,111, 90,255,165,114, 92,255,166,115, 93,255,167,116, 94,255,164,114, 93,255, -161,112, 91,255,152,105, 86,255,141, 97, 78,255,127, 87, 69,255,112, 77, 61,255, 96, 65, 51,255, 80, 54, 41,255, 62, 44, 35,255, - 33, 27, 24,255, 5, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,165,117, 96,255,171,119, 97,255, -163,113, 91,255,149,104, 83,255,133, 92, 74,255,116, 79, 63,255, 95, 64, 51,255, 72, 48, 38,255, 49, 32, 24,255, 48, 33, 26,255, - 27, 23, 21,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 8, 7, 7,255, 40, 30, 27,255, - 67, 47, 40,255, 74, 50, 39,255, 78, 52, 40,255, 81, 55, 43,255, 85, 57, 45,255, 87, 58, 46,255, 89, 60, 48,255, 92, 62, 50,255, - 98, 66, 53,255,105, 71, 56,255,114, 79, 62,255,125, 86, 69,255,135, 93, 74,255,145,100, 81,255,154,106, 85,255,159,110, 89,255, -158,112, 92,255,142,100, 83,255,133, 95, 78,255,126, 89, 75,255,123, 88, 74,255,117, 83, 69,255,128, 93, 78,255,142,103, 89,255, -153,112, 99,255,174,130,116,255,193,144,129,255,192,142,127,255,180,130,114,255,159,111, 93,255,132, 91, 72,255,109, 74, 58,255, - 86, 58, 45,255, 65, 45, 37,255, 33, 24, 20,255, 2, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,143,101, 83,255,176,123, 99,255, -167,117, 94,255,153,106, 86,255,137, 95, 76,255,118, 80, 64,255, 97, 65, 52,255, 73, 49, 38,255, 48, 31, 23,255, 41, 26, 19,255, - 38, 32, 28,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 24, 23,255, 67, 49, 45,255, 73, 50, 40,255, - 78, 52, 41,255, 82, 55, 43,255, 84, 57, 45,255, 87, 58, 46,255, 89, 60, 48,255, 92, 62, 49,255, 97, 66, 52,255,104, 71, 56,255, -114, 78, 61,255,124, 85, 68,255,133, 92, 74,255,143, 98, 79,255,147,101, 82,255,133, 95, 78,255, 86, 64, 55,255, 34, 26, 23,255, - 9, 6, 5,255, 7, 5, 4,255, 6, 4, 4,255, 4, 3, 3,255, 4, 3, 3,255, 3, 2, 2,255, 4, 3, 3,255, 5, 4, 4,255, - 7, 5, 5,255, 9, 7, 7,255, 17, 13, 12,255, 57, 46, 43,255,129,102, 97,255,199,156,150,255,203,156,147,255,182,132,115,255, -147,102, 81,255,116, 79, 62,255, 90, 61, 48,255, 64, 44, 37,255, 17, 15, 14,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,110, 78, 64,255,180,126,101,255, -172,120, 96,255,158,110, 89,255,142, 97, 79,255,123, 84, 67,255,101, 69, 54,255, 77, 51, 40,255, 51, 33, 25,255, 36, 21, 15,255, - 43, 32, 26,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 12, 9, 9,255, 52, 40, 38,255, 71, 51, 45,255, 75, 50, 40,255, 79, 53, 41,255, - 83, 56, 44,255, 86, 58, 45,255, 88, 60, 46,255, 91, 61, 49,255, 95, 64, 51,255,102, 70, 55,255,110, 75, 60,255,119, 82, 65,255, -127, 87, 70,255,131, 90, 73,255,119, 82, 66,255, 77, 54, 44,255, 24, 19, 17,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 53, 43, 43,255,146,119,117,255, -189,149,145,255,187,139,125,255,153,108, 90,255,115, 78, 61,255, 83, 57, 44,255, 41, 30, 25,255, 6, 5, 4,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 64, 46, 38,255,185,129,104,255, -178,124,100,255,165,115, 92,255,148,102, 82,255,129, 89, 71,255,107, 73, 59,255, 83, 57, 44,255, 57, 37, 28,255, 36, 21, 16,255, - 40, 25, 18,255, 19, 15, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 3, 3, 3,255, 36, 27, 27,255, 64, 48, 44,255, 72, 50, 42,255, 76, 50, 40,255, 80, 54, 42,255, 84, 56, 44,255, - 86, 59, 46,255, 90, 60, 48,255, 94, 63, 50,255, 99, 67, 53,255,106, 72, 57,255,114, 78, 62,255,120, 82, 65,255,123, 85, 68,255, - 98, 68, 56,255, 45, 32, 26,255, 9, 7, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 31, 25, 25,255, 90, 73, 73,255,172,137,132,255,193,147,137,255,150,105, 87,255,103, 69, 53,255, 67, 46, 38,255, 20, 16, 14,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 32, 23, 19,255,179,126,102,255, -185,129,104,255,173,120, 97,255,156,109, 87,255,137, 94, 76,255,117, 80, 64,255, 95, 64, 50,255, 69, 46, 36,255, 44, 27, 20,255, - 31, 18, 12,255, 40, 28, 22,255, 22, 20, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 16, 13, 12,255, 59, 44, 42,255, 68, 49, 43,255, 72, 48, 39,255, 76, 51, 39,255, 81, 54, 42,255, 84, 57, 45,255, 87, 58, 47,255, - 91, 61, 48,255, 95, 65, 51,255,101, 69, 55,255,109, 74, 59,255,115, 79, 63,255,117, 80, 64,255,113, 79, 63,255, 46, 34, 29,255, - 3, 2, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 3, 2, 2,255, 69, 57, 56,255,193,155,153,255,184,137,123,255,127, 87, 68,255, 87, 60, 47,255, - 32, 24, 21,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 11, 8, 6,255,151,106, 87,255, -192,135,112,255,181,126,103,255,165,114, 93,255,148,102, 82,255,128, 88, 70,255,106, 72, 57,255, 84, 57, 44,255, 60, 40, 30,255, - 39, 24, 18,255, 31, 18, 12,255, 33, 21, 16,255, 15, 11, 9,255, 5, 4, 4,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 4, 4, 3,255, 14, 11, 10,255, 49, 37, 34,255, - 66, 47, 42,255, 67, 46, 39,255, 72, 48, 36,255, 76, 51, 39,255, 81, 54, 42,255, 85, 57, 45,255, 88, 60, 47,255, 93, 63, 50,255, - 98, 66, 52,255,104, 71, 56,255,110, 76, 60,255,114, 78, 62,255,109, 74, 60,255, 73, 52, 42,255, 7, 7, 6,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 3, 2, 2,255,119, 98, 99,255,185,145,139,255,158,115, 99,255, -106, 71, 57,255, 51, 37, 31,255, 4, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 94, 68, 57,255, -197,143,126,255,191,135,112,255,176,122, 99,255,159,110, 89,255,140, 97, 78,255,122, 83, 67,255,102, 69, 55,255, 81, 54, 43,255, - 60, 39, 30,255, 43, 27, 20,255, 35, 21, 14,255, 33, 21, 15,255, 32, 20, 17,255, 30, 23, 20,255, 19, 16, 14,255, 14, 13, 12,255, - 15, 15, 16,255, 16, 17, 17,255, 19, 19, 19,255, 19, 15, 14,255, 36, 28, 24,255, 49, 34, 28,255, 61, 43, 36,255, 64, 43, 35,255, - 66, 43, 34,255, 71, 47, 37,255, 77, 52, 40,255, 82, 55, 43,255, 86, 58, 45,255, 91, 61, 48,255, 95, 65, 51,255,101, 68, 55,255, -107, 73, 58,255,111, 76, 61,255,111, 76, 60,255, 95, 65, 53,255, 30, 22, 18,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 34, 29, 30,255,122, 99, 97,255, -185,144,136,255,129, 90, 73,255, 70, 47, 37,255, 10, 8, 7,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 21, 15, 12,255, -198,147,133,255,198,146,131,255,189,133,109,255,171,119, 96,255,155,107, 87,255,137, 95, 76,255,120, 82, 66,255,102, 70, 55,255, - 85, 58, 45,255, 68, 44, 35,255, 53, 34, 26,255, 43, 27, 20,255, 39, 24, 17,255, 39, 25, 18,255, 40, 24, 18,255, 42, 26, 19,255, - 44, 29, 21,255, 49, 35, 28,255, 49, 32, 25,255, 52, 33, 26,255, 55, 36, 28,255, 58, 38, 29,255, 61, 40, 30,255, 67, 44, 34,255, - 73, 48, 38,255, 79, 53, 41,255, 84, 56, 44,255, 89, 60, 47,255, 93, 63, 51,255, 99, 67, 53,255,104, 71, 57,255,110, 75, 60,255, -112, 77, 61,255,107, 73, 58,255, 70, 50, 41,255, 4, 3, 2,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 40, 33, 33,255,191,154,153,255,155,114,100,255, 88, 60, 48,255, 11, 10, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, -109, 81, 74,255,208,160,151,255,198,145,128,255,186,130,107,255,169,118, 95,255,153,107, 86,255,138, 95, 77,255,123, 85, 68,255, -108, 73, 58,255, 94, 63, 51,255, 81, 54, 43,255, 69, 45, 35,255, 60, 39, 30,255, 53, 34, 25,255, 49, 31, 24,255, 48, 31, 23,255, - 48, 31, 23,255, 50, 31, 23,255, 52, 33, 25,255, 55, 36, 27,255, 59, 39, 29,255, 65, 43, 32,255, 71, 47, 37,255, 77, 52, 40,255, - 83, 56, 43,255, 88, 59, 47,255, 93, 63, 50,255, 98, 66, 53,255,103, 70, 56,255,108, 74, 59,255,112, 77, 61,255,112, 76, 61,255, - 99, 68, 55,255, 49, 36, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255,115, 94, 95,255,157,121,111,255,111, 80, 69,255, 13, 9, 8,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 5, 3, 3,255,178,138,132,255,209,163,156,255,198,145,129,255,185,129,105,255,170,118, 95,255,155,107, 87,255,141, 98, 79,255, -130, 89, 72,255,117, 81, 65,255,106, 73, 58,255, 97, 66, 52,255, 89, 60, 47,255, 81, 54, 43,255, 75, 50, 39,255, 71, 47, 36,255, - 68, 45, 35,255, 68, 44, 35,255, 69, 45, 35,255, 71, 48, 37,255, 76, 50, 39,255, 80, 53, 42,255, 85, 57, 45,255, 90, 61, 48,255, - 95, 64, 51,255, 99, 67, 54,255,103, 70, 56,255,109, 74, 59,255,113, 77, 62,255,115, 79, 63,255,111, 76, 60,255, 83, 57, 46,255, - 23, 17, 14,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 35, 29, 30,255, 92, 73, 69,255, 89, 69, 63,255, 5, 4, 4,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 50, 39, 38,255,206,165,162,255,208,163,157,255,199,147,131,255,186,130,107,255,172,120, 97,255,160,111, 90,255, -149,103, 83,255,139, 96, 77,255,130, 89, 72,255,122, 83, 67,255,115, 78, 63,255,108, 74, 59,255,102, 69, 55,255, 98, 66, 52,255, - 94, 64, 50,255, 92, 62, 49,255, 92, 62, 49,255, 94, 63, 50,255, 95, 64, 51,255, 98, 67, 53,255,101, 69, 55,255,105, 71, 56,255, -108, 74, 59,255,112, 76, 60,255,115, 79, 63,255,118, 82, 65,255,118, 81, 64,255,111, 75, 60,255, 72, 51, 42,255, 6, 5, 4,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255,106, 85, 84,255,216,176,176,255,209,166,161,255,200,149,135,255,189,134,111,255,178,123,100,255, -167,116, 93,255,157,109, 88,255,149,103, 83,255,143, 99, 79,255,136, 94, 75,255,131, 90, 72,255,126, 87, 69,255,122, 83, 67,255, -118, 81, 65,255,116, 79, 64,255,115, 79, 63,255,115, 79, 63,255,115, 79, 63,255,116, 80, 63,255,117, 81, 64,255,120, 82, 65,255, -122, 84, 67,255,124, 85, 69,255,124, 85, 68,255,120, 82, 66,255,102, 71, 56,255, 45, 33, 27,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,106, 86, 86,255,220,181,183,255,212,171,169,255,204,157,147,255,195,141,123,255, -185,129,105,255,176,122, 98,255,167,117, 94,255,160,111, 90,255,156,107, 87,255,150,104, 84,255,146,101, 81,255,142, 98, 79,255, -138, 95, 77,255,135, 93, 75,255,134, 92, 74,255,133, 92, 73,255,132, 91, 73,255,133, 91, 73,255,133, 91, 73,255,134, 92, 74,255, -133, 92, 73,255,130, 90, 72,255,123, 84, 68,255, 80, 56, 46,255, 16, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 86, 71, 71,255,215,179,182,255,217,177,179,255,210,165,161,255, -200,151,139,255,194,139,120,255,186,131,107,255,179,125,101,255,173,120, 97,255,168,117, 95,255,164,114, 92,255,159,110, 89,255, -156,108, 87,255,153,106, 86,255,151,104, 84,255,149,104, 84,255,149,103, 83,255,145,101, 81,255,145,100, 81,255,141, 98, 79,255, -134, 92, 75,255,117, 81, 65,255, 36, 26, 22,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 49, 40, 41,255,162,135,138,255,211,175,177,255, -215,175,174,255,209,165,159,255,202,153,143,255,197,145,128,255,192,137,116,255,187,131,109,255,182,127,103,255,178,124,100,255, -173,121, 97,255,169,118, 95,255,166,115, 93,255,162,113, 91,255,158,110, 89,255,155,107, 87,255,145,101, 81,255,118, 82, 66,255, - 71, 50, 41,255, 8, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 5, 4, 4,255, 51, 42, 43,255, -137,113,113,255,208,168,167,255,214,171,168,255,210,165,159,255,204,157,148,255,199,149,136,255,194,141,125,255,191,135,113,255, -185,129,105,255,180,125,102,255,175,122, 98,255,168,116, 94,255,157,109, 89,255,110, 78, 64,255, 50, 36, 30,255, 14, 10, 8,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 1, 1, 0,255, 50, 40, 38,255,115, 90, 86,255,166,129,121,255,191,144,131,255,189,139,122,255,185,131,110,255, -178,125,103,255,159,114, 94,255,108, 77, 64,255, 65, 48, 40,255, 8, 7, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 73, 77, 0, 0,156, 1, 0, 0, 88, 32,102, 7, - 31, 0, 0, 0, 1, 0, 0, 0,176,195,102, 7, 0,125,101, 7, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 46,105, 46,116,104,117, -109, 98, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103, -115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46,116,104,117,109, 98, 46,112,110,103, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 34,102, 7, 0, 0, 0, 0,112, 72, 42, 0, 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0, 88, 34,102, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, - 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,224, 34,102, 7, 72, 51,102, 7, 68, 65, 84, 65, 0, 16, 0, 0, -224, 34,102, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0, 72, 51,102, 7, 0, 0, 0, 0, 1, 0, 0, 0, - 62, 62, 62,255, 61, 61, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 60, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, - 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 62, 61, 61,255, - 61, 61, 61,255, 98, 84, 80,255,133,106, 97,255,133,105, 97,255,132,104, 96,255,132,105, 95,255,132,104, 94,255,132,104, 94,255, -131,103, 93,255,131,103, 92,255,131,102, 92,255,131,102, 91,255,130,101, 90,255,130,101, 89,255,129,100, 88,255,129,100, 88,255, -129, 99, 86,255,128, 99, 86,255,128, 98, 85,255,128, 98, 85,255,127, 97, 85,255,127, 97, 85,255,126, 97, 84,255,126, 97, 84,255, -125, 96, 84,255,125, 96, 83,255,124, 96, 83,255,124, 95, 83,255,123, 95, 82,255,123, 95, 82,255,122, 94, 82,255,122, 94, 82,255, -121, 94, 81,255,121, 93, 81,255,120, 93, 81,255,120, 93, 80,255,120, 92, 80,255,119, 92, 80,255,119, 92, 80,255,118, 91, 79,255, -118, 91, 79,255,117, 91, 79,255,117, 90, 79,255,116, 90, 78,255,116, 89, 78,255,115, 89, 78,255,114, 88, 77,255,114, 88, 77,255, -114, 88, 77,255,113, 87, 76,255,113, 87, 76,255,112, 86, 76,255,111, 86, 76,255,111, 86, 75,255,110, 86, 75,255,109, 85, 74,255, -109, 84, 74,255,108, 84, 74,255,108, 84, 73,255,107, 83, 73,255,106, 83, 72,255,106, 82, 72,255,105, 82, 72,255,104, 81, 71,255, -103, 81, 71,255,103, 80, 70,255,102, 79, 69,255,101, 79, 69,255,100, 78, 68,255,100, 78, 68,255, 98, 77, 68,255, 98, 76, 67,255, - 97, 76, 66,255, 96, 75, 66,255, 95, 74, 65,255, 94, 73, 65,255, 92, 73, 64,255, 91, 72, 63,255, 90, 71, 63,255, 89, 70, 62,255, - 88, 69, 61,255, 86, 68, 60,255, 85, 67, 60,255, 84, 66, 59,255, 82, 65, 58,255, 81, 64, 57,255, 79, 63, 56,255, 77, 62, 55,255, - 76, 61, 55,255, 75, 60, 53,255, 73, 59, 53,255, 72, 58, 52,255, 70, 57, 51,255, 68, 55, 49,255, 64, 58, 55,255, 61, 62, 62,255, - 60, 60, 61,255,134,106, 99,255,202,149,132,255,200,148,132,255,200,146,130,255,200,146,129,255,198,145,128,255,198,144,126,255, -197,144,125,255,197,143,123,255,196,142,122,255,197,141,121,255,195,140,119,255,195,138,117,255,194,138,116,255,194,137,114,255, -193,135,112,255,192,135,110,255,191,134,108,255,191,133,108,255,189,132,107,255,189,132,107,255,188,131,106,255,187,130,106,255, -186,130,105,255,186,129,105,255,184,128,104,255,183,128,103,255,183,127,103,255,181,126,102,255,180,125,102,255,180,125,101,255, -178,124,101,255,177,123,100,255,176,123,100,255,175,122, 98,255,175,121, 98,255,173,121, 98,255,173,120, 97,255,172,119, 97,255, -171,119, 96,255,170,118, 96,255,170,117, 95,255,168,117, 94,255,168,116, 94,255,167,115, 93,255,165,115, 93,255,164,114, 92,255, -164,113, 91,255,162,112, 91,255,161,112, 90,255,160,111, 90,255,159,110, 89,255,158,109, 88,255,156,108, 88,255,155,108, 87,255, -154,106, 86,255,153,106, 86,255,152,105, 84,255,151,104, 84,255,149,103, 83,255,148,102, 82,255,147,101, 82,255,145,100, 81,255, -144, 99, 79,255,142, 98, 79,255,140, 97, 78,255,139, 96, 77,255,138, 94, 76,255,135, 93, 75,255,134, 91, 73,255,132, 91, 73,255, -130, 90, 72,255,128, 88, 70,255,126, 87, 69,255,124, 85, 68,255,122, 83, 66,255,120, 82, 65,255,118, 81, 63,255,115, 78, 62,255, -113, 77, 61,255,110, 75, 59,255,107, 73, 58,255,104, 71, 56,255,102, 69, 54,255, 99, 67, 53,255, 96, 65, 52,255, 94, 63, 49,255, - 91, 61, 48,255, 87, 59, 47,255, 84, 57, 44,255, 82, 54, 42,255, 78, 52, 41,255, 74, 50, 39,255, 67, 55, 49,255, 61, 62, 62,255, - 60, 60, 61,255,134,107,100,255,201,149,135,255,200,149,133,255,199,147,132,255,199,147,131,255,198,146,130,255,198,145,128,255, -198,145,127,255,197,143,126,255,196,142,124,255,196,142,123,255,195,140,121,255,195,139,119,255,195,139,118,255,193,137,116,255, -193,136,114,255,192,135,112,255,192,134,111,255,191,133,108,255,190,133,108,255,189,132,107,255,188,131,107,255,187,131,106,255, -186,129,105,255,186,130,105,255,185,129,104,255,183,128,104,255,183,128,103,255,182,127,102,255,181,126,102,255,180,125,102,255, -179,124,101,255,178,124,101,255,177,123,100,255,175,122, 99,255,175,122, 99,255,174,121, 98,255,173,120, 97,255,172,120, 97,255, -171,119, 97,255,170,119, 96,255,169,118, 96,255,169,117, 95,255,167,117, 94,255,166,116, 94,255,166,115, 93,255,164,114, 92,255, -163,114, 92,255,163,113, 91,255,161,112, 91,255,160,111, 90,255,159,111, 90,255,158,109, 88,255,157,109, 87,255,156,108, 88,255, -154,107, 86,255,153,106, 86,255,152,106, 85,255,150,104, 84,255,149,103, 83,255,147,102, 82,255,146,101, 82,255,145,101, 81,255, -143,100, 80,255,142, 98, 79,255,141, 97, 78,255,139, 96, 77,255,137, 95, 76,255,136, 94, 76,255,134, 92, 74,255,132, 91, 73,255, -131, 90, 72,255,128, 88, 71,255,126, 87, 70,255,125, 86, 69,255,122, 84, 67,255,120, 83, 66,255,118, 81, 65,255,116, 79, 63,255, -113, 77, 62,255,111, 76, 61,255,108, 73, 58,255,105, 72, 57,255,102, 69, 55,255,100, 68, 53,255, 96, 66, 52,255, 93, 63, 50,255, - 91, 62, 49,255, 88, 59, 47,255, 85, 57, 45,255, 82, 55, 43,255, 78, 52, 41,255, 75, 50, 39,255, 68, 55, 49,255, 61, 62, 62,255, - 60, 60, 61,255,134,108,101,255,202,151,137,255,200,149,135,255,200,149,135,255,200,148,134,255,199,148,132,255,198,146,131,255, -198,146,130,255,198,145,128,255,197,144,127,255,197,144,126,255,196,142,124,255,195,141,122,255,195,140,121,255,194,139,119,255, -194,138,117,255,193,137,115,255,192,136,113,255,192,135,111,255,191,134,109,255,190,133,108,255,189,132,107,255,188,131,106,255, -187,131,106,255,187,130,106,255,185,129,105,255,185,129,104,255,184,128,104,255,183,127,103,255,181,126,102,255,181,126,102,255, -180,125,101,255,178,124,101,255,178,124,101,255,177,123, 99,255,176,122, 99,255,175,122, 98,255,174,121, 98,255,173,121, 98,255, -172,120, 97,255,171,119, 96,255,170,119, 96,255,169,118, 95,255,168,117, 94,255,167,116, 94,255,166,115, 94,255,165,115, 93,255, -164,114, 92,255,163,113, 91,255,162,112, 91,255,161,112, 90,255,160,111, 89,255,159,110, 89,255,158,109, 88,255,156,109, 87,255, -155,108, 87,255,154,106, 86,255,152,105, 85,255,152,105, 84,255,150,104, 84,255,149,103, 83,255,147,102, 82,255,146,101, 82,255, -144,100, 80,255,143, 99, 80,255,142, 98, 79,255,140, 97, 78,255,138, 96, 77,255,137, 94, 76,255,135, 93, 75,255,133, 92, 74,255, -131, 91, 73,255,130, 89, 71,255,128, 88, 70,255,125, 86, 69,255,123, 85, 68,255,121, 83, 67,255,119, 82, 65,255,116, 80, 64,255, -114, 78, 62,255,111, 76, 60,255,109, 74, 59,255,106, 72, 57,255,103, 70, 55,255,100, 68, 54,255, 97, 66, 52,255, 94, 64, 50,255, - 92, 62, 49,255, 89, 60, 47,255, 85, 57, 45,255, 82, 56, 44,255, 79, 53, 41,255, 76, 50, 39,255, 68, 55, 50,255, 61, 62, 62,255, - 60, 60, 61,255,134,109,102,255,203,152,140,255,201,150,138,255,201,150,137,255,200,150,136,255,200,148,134,255,199,148,134,255, -199,147,132,255,198,147,131,255,198,146,129,255,197,144,128,255,197,144,126,255,196,143,125,255,195,141,123,255,195,141,122,255, -194,140,120,255,193,138,117,255,193,137,116,255,192,137,114,255,191,135,111,255,191,134,110,255,190,133,108,255,189,132,107,255, -188,131,106,255,187,131,106,255,186,130,105,255,185,129,105,255,185,129,104,255,184,128,104,255,183,127,103,255,182,126,102,255, -181,126,102,255,180,125,101,255,179,124,101,255,178,124,100,255,177,123, 99,255,176,123, 99,255,175,121, 98,255,174,121, 98,255, -173,121, 98,255,172,120, 97,255,171,119, 96,255,170,118, 95,255,169,117, 95,255,168,117, 95,255,167,116, 93,255,166,115, 93,255, -165,114, 92,255,164,114, 92,255,163,113, 91,255,162,112, 90,255,161,111, 90,255,160,111, 89,255,158,110, 89,255,157,108, 87,255, -156,108, 88,255,155,107, 87,255,153,106, 85,255,152,105, 85,255,151,105, 84,255,149,103, 83,255,148,102, 82,255,147,102, 82,255, -145,100, 80,255,144, 99, 80,255,143, 99, 79,255,140, 97, 78,255,139, 96, 77,255,138, 95, 76,255,136, 93, 75,255,134, 93, 74,255, -132, 91, 73,255,130, 89, 71,255,128, 88, 70,255,127, 87, 70,255,124, 85, 68,255,122, 84, 67,255,119, 81, 66,255,117, 80, 64,255, -114, 79, 63,255,112, 76, 61,255,109, 75, 60,255,106, 73, 58,255,103, 70, 55,255,101, 69, 54,255, 98, 66, 53,255, 95, 64, 51,255, - 92, 62, 49,255, 89, 60, 48,255, 86, 58, 45,255, 83, 56, 44,255, 79, 54, 42,255, 76, 51, 40,255, 68, 55, 49,255, 61, 62, 62,255, - 60, 60, 61,255,135,109,103,255,204,154,142,255,202,153,141,255,202,152,139,255,202,151,138,255,201,150,137,255,201,150,136,255, -200,149,134,255,199,148,133,255,199,147,131,255,198,146,130,255,198,145,129,255,197,144,127,255,197,143,126,255,196,142,124,255, -196,141,122,255,195,140,120,255,194,139,119,255,194,138,117,255,193,137,115,255,192,135,112,255,191,134,110,255,191,134,109,255, -189,132,107,255,188,132,107,255,187,130,107,255,186,130,106,255,185,129,105,255,184,128,104,255,184,128,104,255,183,127,103,255, -181,126,102,255,181,126,102,255,180,125,102,255,178,124,101,255,178,124,100,255,177,123, 99,255,176,123, 99,255,175,122, 99,255, -174,121, 98,255,173,120, 97,255,172,120, 97,255,172,119, 97,255,170,118, 96,255,169,117, 95,255,168,116, 95,255,167,116, 94,255, -166,115, 93,255,165,114, 92,255,164,114, 92,255,162,113, 91,255,161,113, 90,255,160,111, 90,255,159,110, 89,255,158,110, 89,255, -157,109, 88,255,156,108, 87,255,154,107, 87,255,153,106, 85,255,152,105, 85,255,151,104, 84,255,149,103, 83,255,148,102, 83,255, -146,101, 81,255,145,100, 80,255,143, 99, 80,255,141, 97, 78,255,140, 96, 78,255,138, 95, 77,255,136, 94, 75,255,134, 93, 74,255, -133, 92, 74,255,131, 90, 72,255,129, 89, 71,255,127, 88, 71,255,124, 86, 69,255,122, 84, 67,255,120, 83, 66,255,118, 80, 64,255, -115, 79, 63,255,113, 78, 61,255,110, 75, 60,255,107, 73, 58,255,104, 71, 56,255,102, 69, 55,255, 98, 67, 53,255, 96, 65, 51,255, - 93, 63, 50,255, 90, 61, 48,255, 86, 58, 46,255, 84, 56, 44,255, 80, 54, 42,255, 77, 51, 40,255, 69, 55, 50,255, 61, 62, 62,255, - 60, 60, 60,255,135,110,104,255,204,156,144,255,203,154,143,255,202,153,142,255,202,152,141,255,201,152,139,255,201,151,138,255, -201,150,137,255,200,149,135,255,200,148,134,255,199,147,133,255,198,146,131,255,198,146,129,255,197,145,128,255,196,144,126,255, -196,143,125,255,195,142,123,255,195,141,121,255,194,139,119,255,193,138,117,255,193,137,115,255,192,135,112,255,191,134,110,255, -191,133,109,255,189,132,107,255,188,131,106,255,188,131,106,255,186,130,106,255,185,129,105,255,185,129,104,255,183,128,104,255, -182,127,103,255,182,127,103,255,180,126,102,255,179,125,101,255,179,125,101,255,177,124,100,255,176,124, 99,255,175,123, 99,255, -175,122, 99,255,174,121, 98,255,173,120, 97,255,171,119, 96,255,171,119, 96,255,170,118, 96,255,168,117, 95,255,168,116, 94,255, -166,116, 94,255,165,115, 93,255,165,114, 92,255,163,113, 92,255,162,112, 91,255,161,112, 90,255,160,111, 90,255,159,110, 89,255, -158,109, 88,255,156,109, 88,255,155,107, 86,255,154,107, 86,255,152,106, 85,255,151,104, 84,255,150,104, 83,255,149,103, 83,255, -147,102, 82,255,146,101, 81,255,144,100, 80,255,142, 98, 79,255,141, 97, 78,255,139, 96, 77,255,137, 94, 76,255,136, 93, 75,255, -134, 92, 74,255,132, 91, 72,255,130, 90, 72,255,128, 87, 71,255,126, 86, 69,255,123, 85, 68,255,121, 83, 67,255,118, 81, 65,255, -116, 80, 64,255,113, 77, 62,255,111, 76, 61,255,108, 73, 59,255,105, 72, 57,255,102, 69, 55,255, 99, 67, 54,255, 96, 65, 51,255, - 94, 63, 50,255, 90, 61, 48,255, 87, 59, 46,255, 84, 57, 45,255, 81, 54, 42,255, 77, 52, 40,255, 69, 56, 50,255, 61, 62, 62,255, - 60, 60, 60,255,136,111,106,255,206,157,147,255,203,155,145,255,203,154,144,255,202,153,143,255,202,153,141,255,201,152,140,255, -201,152,138,255,200,150,137,255,201,149,136,255,199,148,135,255,199,148,133,255,198,147,132,255,198,146,130,255,197,145,129,255, -197,144,127,255,196,143,125,255,195,142,124,255,195,141,122,255,194,139,119,255,193,138,117,255,193,137,115,255,191,135,113,255, -192,135,111,255,191,133,109,255,189,132,107,255,188,131,106,255,188,131,107,255,186,130,105,255,185,129,105,255,185,129,105,255, -183,128,103,255,182,127,104,255,182,127,103,255,180,125,101,255,180,126,102,255,179,125,101,255,177,123,100,255,177,123,100,255, -175,122, 99,255,174,121, 99,255,174,121, 98,255,172,119, 97,255,171,120, 96,255,171,119, 96,255,169,117, 96,255,168,117, 94,255, -168,116, 94,255,166,115, 93,255,165,114, 92,255,165,114, 93,255,163,113, 91,255,162,112, 90,255,161,112, 91,255,159,110, 89,255, -158,110, 88,255,157,109, 88,255,156,108, 87,255,155,107, 86,255,153,106, 86,255,151,105, 84,255,150,104, 84,255,149,103, 83,255, -148,102, 82,255,146,101, 81,255,145,100, 81,255,143, 99, 79,255,142, 98, 79,255,140, 97, 78,255,138, 95, 76,255,136, 94, 75,255, -134, 93, 75,255,133, 91, 73,255,130, 90, 72,255,129, 89, 71,255,126, 87, 69,255,124, 85, 68,255,122, 84, 66,255,119, 82, 65,255, -117, 80, 64,255,114, 78, 62,255,112, 76, 61,255,109, 74, 59,255,105, 72, 57,255,103, 70, 56,255,100, 68, 54,255, 97, 65, 52,255, - 94, 64, 50,255, 91, 61, 49,255, 87, 59, 46,255, 85, 57, 45,255, 81, 55, 43,255, 78, 52, 40,255, 69, 56, 50,255, 61, 62, 62,255, - 60, 60, 60,255,136,112,107,255,206,158,149,255,204,157,147,255,204,156,145,255,204,156,145,255,203,155,144,255,203,153,142,255, -202,153,141,255,202,151,140,255,201,151,138,255,201,151,137,255,200,149,136,255,199,148,134,255,199,148,133,255,198,146,131,255, -198,145,129,255,198,145,128,255,196,143,126,255,196,142,124,255,195,141,122,255,194,139,120,255,194,138,118,255,193,137,115,255, -192,136,113,255,191,135,111,255,190,133,109,255,190,132,108,255,189,132,107,255,188,131,106,255,187,130,106,255,186,130,105,255, -185,129,104,255,184,128,104,255,183,128,104,255,182,127,102,255,181,126,102,255,180,125,102,255,179,124,101,255,178,124,100,255, -177,123,100,255,176,122, 99,255,175,122, 99,255,174,121, 98,255,172,120, 97,255,172,120, 97,255,171,119, 96,255,169,118, 95,255, -169,117, 95,255,168,117, 94,255,166,115, 93,255,165,115, 93,255,164,114, 93,255,162,113, 91,255,162,112, 91,255,160,112, 91,255, -159,110, 89,255,158,109, 88,255,157,108, 87,255,155,108, 87,255,154,107, 86,255,153,106, 85,255,151,105, 85,255,150,104, 84,255, -149,102, 82,255,147,102, 82,255,146,101, 81,255,144, 99, 80,255,142, 98, 79,255,141, 97, 78,255,138, 95, 77,255,137, 94, 76,255, -136, 93, 75,255,133, 92, 73,255,131, 90, 72,255,129, 89, 72,255,127, 87, 70,255,124, 86, 69,255,122, 83, 68,255,120, 82, 65,255, -117, 80, 64,255,114, 78, 62,255,112, 76, 61,255,109, 75, 60,255,106, 72, 58,255,104, 71, 56,255,100, 68, 54,255, 98, 66, 52,255, - 95, 64, 51,255, 91, 62, 49,255, 88, 59, 47,255, 85, 57, 45,255, 81, 55, 43,255, 78, 52, 41,255, 69, 56, 50,255, 61, 62, 62,255, - 60, 60, 60,255,136,112,108,255,206,159,151,255,205,157,149,255,205,157,148,255,204,156,147,255,204,156,146,255,203,155,144,255, -203,154,143,255,202,153,142,255,202,152,140,255,202,152,139,255,201,151,137,255,200,149,136,255,199,148,135,255,199,148,133,255, -198,146,131,255,197,145,130,255,197,145,128,255,196,143,126,255,195,142,124,255,195,141,122,255,194,139,119,255,193,138,118,255, -193,137,115,255,192,136,113,255,191,134,112,255,190,133,109,255,190,132,108,255,188,131,106,255,188,131,106,255,187,130,106,255, -186,129,105,255,185,129,104,255,184,128,104,255,183,127,103,255,182,127,102,255,181,126,102,255,179,125,101,255,179,124,101,255, -177,124,100,255,176,123, 99,255,175,122, 99,255,174,121, 98,255,173,120, 97,255,172,120, 97,255,171,120, 97,255,170,118, 96,255, -169,118, 95,255,168,117, 95,255,167,116, 94,255,166,115, 93,255,165,115, 92,255,164,114, 92,255,162,112, 91,255,161,111, 90,255, -160,111, 90,255,159,110, 89,255,157,109, 88,255,156,108, 87,255,155,107, 87,255,153,106, 85,255,152,106, 85,255,151,104, 84,255, -149,103, 83,255,148,102, 82,255,146,101, 82,255,144,100, 80,255,143, 99, 79,255,141, 98, 79,255,139, 96, 77,255,138, 95, 76,255, -136, 94, 75,255,134, 92, 74,255,132, 91, 73,255,130, 89, 72,255,128, 88, 70,255,125, 86, 69,255,123, 84, 68,255,121, 83, 66,255, -118, 81, 65,255,115, 78, 63,255,113, 77, 61,255,110, 75, 60,255,107, 73, 58,255,104, 71, 56,255,101, 69, 55,255, 98, 66, 52,255, - 95, 64, 51,255, 92, 62, 49,255, 88, 60, 47,255, 85, 58, 45,255, 82, 55, 43,255, 79, 53, 41,255, 69, 56, 50,255, 61, 62, 62,255, - 60, 60, 60,255,137,113,109,255,208,160,152,255,205,158,151,255,206,159,150,255,205,158,149,255,205,156,147,255,204,156,146,255, -203,154,145,255,203,154,143,255,203,154,142,255,202,153,141,255,202,152,140,255,201,151,138,255,200,149,136,255,200,149,135,255, -199,148,134,255,198,146,131,255,197,145,130,255,198,145,129,255,196,143,126,255,195,142,124,255,195,142,122,255,194,139,120,255, -193,138,118,255,192,137,116,255,192,136,113,255,191,134,110,255,190,133,109,255,189,132,107,255,188,131,106,255,188,131,106,255, -186,130,106,255,186,129,105,255,185,129,105,255,183,128,103,255,183,127,103,255,182,127,102,255,180,125,102,255,179,125,101,255, -178,125,100,255,177,123,100,255,176,123, 99,255,175,122, 98,255,174,121, 98,255,173,120, 98,255,172,119, 96,255,171,119, 96,255, -170,118, 96,255,168,117, 94,255,168,116, 94,255,167,116, 94,255,165,114, 92,255,164,114, 92,255,163,113, 92,255,161,112, 90,255, -160,111, 90,255,160,111, 90,255,158,109, 88,255,157,109, 88,255,156,108, 87,255,154,106, 86,255,153,106, 85,255,152,105, 85,255, -149,103, 83,255,148,102, 82,255,147,102, 82,255,145,100, 81,255,143, 99, 80,255,142, 98, 79,255,140, 96, 77,255,138, 95, 77,255, -137, 95, 76,255,134, 93, 74,255,133, 91, 73,255,131, 90, 72,255,128, 88, 71,255,125, 86, 69,255,123, 85, 68,255,121, 83, 66,255, -118, 81, 65,255,115, 79, 63,255,114, 78, 62,255,111, 76, 60,255,107, 73, 58,255,105, 72, 57,255,102, 69, 55,255, 98, 67, 53,255, - 96, 65, 51,255, 92, 63, 50,255, 89, 60, 47,255, 86, 58, 46,255, 82, 55, 43,255, 79, 53, 41,255, 69, 56, 51,255, 61, 62, 62,255, - 60, 60, 60,255,137,114,110,255,208,162,155,255,206,160,153,255,206,160,151,255,206,159,151,255,205,158,150,255,205,157,148,255, -204,156,147,255,203,156,146,255,203,155,144,255,203,154,143,255,202,153,141,255,202,152,140,255,201,151,138,255,201,150,137,255, -200,149,135,255,199,148,134,255,198,146,132,255,198,146,130,255,198,145,129,255,196,143,126,255,196,142,124,255,195,141,122,255, -194,139,120,255,193,138,118,255,192,137,116,255,192,135,113,255,191,134,110,255,190,133,109,255,189,132,107,255,188,132,107,255, -187,130,106,255,186,130,106,255,185,129,105,255,184,128,104,255,183,128,104,255,182,127,103,255,181,126,102,255,180,126,102,255, -179,125,101,255,178,124,100,255,177,123,100,255,176,123, 99,255,175,121, 99,255,174,121, 98,255,173,120, 98,255,171,119, 96,255, -170,119, 96,255,170,118, 96,255,168,117, 94,255,167,116, 94,255,166,116, 94,255,165,114, 92,255,164,114, 92,255,163,113, 92,255, -161,112, 90,255,160,111, 90,255,159,110, 90,255,157,109, 88,255,156,108, 87,255,155,107, 86,255,153,106, 86,255,152,106, 85,255, -151,104, 84,255,149,103, 83,255,148,102, 83,255,146,101, 81,255,144,100, 80,255,143, 99, 80,255,141, 97, 78,255,139, 96, 78,255, -137, 95, 77,255,135, 93, 75,255,133, 92, 74,255,131, 90, 73,255,128, 88, 71,255,126, 87, 70,255,124, 85, 68,255,122, 83, 66,255, -119, 81, 65,255,117, 79, 63,255,114, 78, 62,255,111, 76, 61,255,108, 74, 59,255,105, 72, 57,255,102, 70, 55,255, 99, 67, 53,255, - 96, 65, 51,255, 93, 63, 50,255, 89, 60, 47,255, 86, 58, 45,255, 82, 55, 44,255, 79, 53, 41,255, 69, 56, 51,255, 61, 62, 62,255, - 60, 60, 60,255,137,114,111,255,209,163,156,255,207,161,155,255,206,161,154,255,206,160,152,255,205,159,151,255,205,158,150,255, -205,157,148,255,204,157,148,255,204,156,146,255,203,155,145,255,202,154,144,255,202,153,142,255,201,152,141,255,201,151,139,255, -201,150,137,255,200,149,136,255,199,148,134,255,199,147,132,255,198,146,130,255,197,145,129,255,196,143,127,255,195,142,125,255, -195,141,122,255,194,139,120,255,193,138,118,255,192,137,115,255,192,135,113,255,191,134,111,255,190,133,109,255,189,132,107,255, -188,131,106,255,187,131,106,255,186,130,105,255,185,129,104,255,184,128,104,255,183,128,104,255,182,127,103,255,181,126,102,255, -180,125,102,255,179,124,101,255,178,124,100,255,177,123, 99,255,175,122, 99,255,174,121, 98,255,173,120, 97,255,172,120, 97,255, -172,119, 96,255,170,118, 95,255,169,117, 95,255,168,117, 94,255,167,116, 93,255,166,115, 93,255,164,114, 92,255,163,113, 91,255, -162,112, 91,255,161,112, 90,255,159,110, 89,255,158,110, 89,255,157,109, 88,255,155,108, 87,255,154,107, 86,255,153,106, 85,255, -151,104, 84,255,150,104, 83,255,148,103, 83,255,147,101, 82,255,145,100, 81,255,143, 99, 80,255,142, 98, 78,255,140, 97, 78,255, -138, 95, 77,255,136, 94, 75,255,134, 92, 74,255,131, 91, 73,255,129, 89, 71,255,127, 87, 70,255,124, 86, 69,255,122, 84, 67,255, -120, 82, 65,255,117, 80, 64,255,114, 78, 62,255,112, 77, 61,255,109, 74, 59,255,106, 72, 57,255,103, 70, 56,255, 99, 67, 53,255, - 96, 65, 52,255, 93, 63, 50,255, 89, 60, 48,255, 86, 58, 46,255, 83, 56, 44,255, 80, 53, 41,255, 69, 56, 51,255, 61, 62, 62,255, - 60, 60, 60,255,138,115,111,255,209,163,157,255,207,163,156,255,208,162,155,255,207,162,154,255,207,160,152,255,206,159,152,255, -205,158,151,255,205,158,149,255,204,157,148,255,205,157,147,255,203,155,145,255,202,154,144,255,202,153,143,255,201,152,141,255, -201,151,139,255,201,150,137,255,200,149,136,255,199,148,134,255,199,146,132,255,198,146,130,255,197,145,128,255,196,143,126,255, -195,142,124,255,195,141,122,255,194,139,119,255,193,138,118,255,193,137,116,255,191,135,113,255,191,134,110,255,191,133,109,255, -189,131,107,255,188,131,107,255,188,131,106,255,186,129,105,255,185,129,105,255,184,129,104,255,183,127,103,255,182,127,102,255, -181,126,103,255,179,125,101,255,179,125,100,255,178,124,101,255,176,122, 99,255,176,122, 98,255,175,121, 98,255,173,120, 97,255, -172,119, 96,255,171,119, 96,255,170,118, 95,255,169,118, 95,255,167,116, 94,255,166,115, 93,255,165,115, 92,255,164,113, 92,255, -163,113, 91,255,162,112, 91,255,160,111, 89,255,159,110, 89,255,158,110, 89,255,156,108, 87,255,155,107, 86,255,154,106, 86,255, -152,105, 84,255,150,104, 84,255,149,103, 83,255,147,101, 82,255,146,101, 81,255,144,100, 81,255,142, 98, 79,255,140, 97, 78,255, -139, 96, 77,255,136, 94, 75,255,134, 92, 74,255,132, 91, 73,255,130, 89, 71,255,127, 88, 70,255,126, 86, 69,255,123, 84, 67,255, -120, 82, 66,255,117, 80, 64,255,115, 78, 63,255,112, 77, 61,255,109, 74, 59,255,106, 73, 58,255,103, 70, 56,255, 99, 68, 53,255, - 97, 66, 52,255, 93, 63, 50,255, 90, 60, 48,255, 86, 59, 46,255, 83, 56, 44,255, 80, 53, 42,255, 70, 56, 50,255, 61, 62, 62,255, - 60, 60, 60,255,138,115,113,255,210,165,160,255,209,164,158,255,208,163,157,255,208,162,155,255,207,161,155,255,207,160,153,255, -206,160,152,255,206,159,151,255,205,158,149,255,204,158,149,255,204,157,147,255,203,155,145,255,202,155,144,255,202,154,143,255, -202,152,141,255,201,151,139,255,201,150,137,255,200,149,136,255,199,148,134,255,198,147,132,255,198,146,130,255,197,145,128,255, -196,143,126,255,196,142,124,255,195,141,122,255,194,139,120,255,193,138,117,255,192,137,115,255,191,135,112,255,191,134,110,255, -190,133,109,255,189,132,107,255,188,132,107,255,187,131,106,255,186,130,105,255,185,129,105,255,184,128,104,255,182,127,103,255, -182,127,102,255,181,126,102,255,179,125,101,255,179,125,100,255,178,124,100,255,176,123, 99,255,175,122, 98,255,173,121, 98,255, -173,120, 97,255,171,119, 96,255,170,118, 96,255,169,118, 96,255,168,117, 94,255,167,116, 94,255,166,116, 93,255,165,114, 92,255, -163,113, 91,255,162,113, 91,255,161,112, 90,255,159,110, 89,255,158,110, 89,255,157,109, 88,255,155,108, 87,255,154,107, 86,255, -153,105, 85,255,151,105, 84,255,150,104, 84,255,148,102, 82,255,146,101, 81,255,145,100, 81,255,142, 99, 80,255,141, 97, 79,255, -139, 96, 78,255,137, 94, 76,255,135, 93, 75,255,133, 92, 74,255,130, 89, 72,255,128, 88, 71,255,125, 87, 69,255,123, 84, 67,255, -120, 83, 66,255,118, 81, 64,255,115, 79, 63,255,113, 77, 62,255,110, 75, 59,255,106, 73, 58,255,103, 71, 56,255,100, 68, 53,255, - 97, 66, 52,255, 93, 63, 50,255, 90, 61, 48,255, 87, 59, 46,255, 83, 56, 44,255, 80, 53, 42,255, 70, 56, 50,255, 61, 62, 62,255, - 60, 60, 60,255,138,116,113,255,210,166,161,255,209,164,159,255,208,164,158,255,208,163,157,255,207,162,156,255,207,162,155,255, -206,160,153,255,206,160,152,255,206,160,151,255,205,158,150,255,204,157,149,255,204,157,147,255,203,155,145,255,202,154,144,255, -202,154,143,255,201,152,141,255,201,151,140,255,200,151,138,255,199,149,136,255,199,148,134,255,198,147,132,255,197,146,130,255, -197,144,128,255,196,143,126,255,195,142,124,255,195,141,121,255,194,139,119,255,193,138,117,255,192,137,115,255,191,135,113,255, -190,134,110,255,190,133,108,255,188,131,106,255,188,131,107,255,187,130,106,255,185,130,104,255,185,129,104,255,184,128,104,255, -183,127,103,255,181,126,102,255,181,126,102,255,179,124,101,255,178,124,100,255,176,123,100,255,175,123, 99,255,175,121, 98,255, -174,121, 98,255,172,119, 97,255,171,119, 96,255,170,118, 96,255,169,117, 95,255,168,116, 94,255,167,116, 94,255,165,115, 93,255, -164,114, 92,255,163,113, 92,255,161,112, 90,255,160,111, 90,255,159,110, 89,255,157,109, 88,255,156,108, 87,255,155,107, 87,255, -153,106, 85,255,152,105, 84,255,150,104, 84,255,148,103, 83,255,147,102, 82,255,145,100, 81,255,143, 99, 80,255,141, 98, 79,255, -140, 97, 78,255,138, 95, 76,255,135, 93, 75,255,133, 92, 74,255,131, 90, 72,255,129, 88, 71,255,126, 86, 70,255,124, 85, 68,255, -121, 83, 67,255,119, 82, 64,255,116, 79, 63,255,113, 77, 62,255,110, 75, 60,255,107, 74, 58,255,104, 71, 56,255,100, 68, 54,255, - 97, 66, 52,255, 93, 63, 50,255, 90, 61, 48,255, 87, 59, 46,255, 83, 56, 44,255, 80, 54, 42,255, 70, 56, 50,255, 61, 62, 62,255, - 60, 60, 60,255,139,116,114,255,212,167,163,255,209,165,160,255,210,164,160,255,209,165,159,255,208,163,157,255,207,163,157,255, -208,162,156,255,206,160,154,255,207,161,153,255,206,160,152,255,205,158,150,255,204,158,149,255,205,157,148,255,203,155,146,255, -202,155,144,255,202,154,142,255,201,152,141,255,201,152,139,255,200,150,137,255,199,149,136,255,199,148,134,255,198,147,131,255, -197,146,130,255,197,144,128,255,196,143,125,255,195,142,123,255,195,140,121,255,193,138,119,255,193,138,117,255,192,136,114,255, -191,134,112,255,191,134,109,255,190,133,108,255,188,131,106,255,188,131,106,255,187,130,106,255,185,130,104,255,184,129,104,255, -184,128,104,255,182,126,102,255,181,126,102,255,180,126,102,255,178,124,100,255,178,124,100,255,177,123,100,255,175,121, 98,255, -174,122, 99,255,172,120, 97,255,171,119, 96,255,171,119, 97,255,169,117, 95,255,168,117, 94,255,168,117, 95,255,166,115, 93,255, -165,114, 92,255,164,114, 91,255,162,112, 91,255,161,112, 90,255,160,111, 90,255,158,109, 88,255,157,109, 88,255,155,108, 87,255, -153,106, 85,255,152,106, 85,255,151,105, 85,255,149,103, 83,255,147,102, 82,255,146,101, 81,255,144,100, 80,255,142, 98, 79,255, -141, 97, 78,255,138, 95, 76,255,136, 94, 75,255,134, 92, 74,255,131, 90, 72,255,129, 89, 71,255,127, 88, 70,255,124, 85, 68,255, -121, 83, 67,255,118, 81, 65,255,116, 79, 63,255,113, 77, 62,255,110, 75, 60,255,107, 73, 58,255,104, 71, 56,255,100, 68, 54,255, - 97, 66, 52,255, 94, 64, 51,255, 90, 61, 48,255, 87, 59, 46,255, 83, 56, 44,255, 80, 54, 42,255, 70, 57, 50,255, 61, 62, 62,255, - 60, 60, 60,255,139,117,115,255,212,169,164,255,210,167,163,255,210,165,161,255,210,165,160,255,209,165,159,255,208,163,158,255, -208,163,157,255,207,162,156,255,207,161,154,255,207,161,153,255,206,160,152,255,206,159,150,255,205,158,149,255,204,157,148,255, -204,156,146,255,203,155,144,255,202,154,142,255,202,152,141,255,201,152,139,255,200,150,137,255,200,149,135,255,198,148,134,255, -198,146,132,255,197,145,129,255,196,144,128,255,196,143,125,255,195,141,123,255,194,140,121,255,194,139,118,255,193,137,116,255, -192,136,114,255,191,135,111,255,190,134,109,255,189,132,107,255,188,132,107,255,187,131,106,255,186,130,105,255,185,129,105,255, -184,129,104,255,183,127,103,255,182,127,103,255,181,126,102,255,180,125,101,255,178,124,101,255,178,124,100,255,176,122, 99,255, -175,122, 98,255,174,121, 98,255,172,120, 97,255,172,119, 97,255,170,119, 96,255,169,117, 95,255,168,117, 95,255,166,115, 93,255, -165,115, 93,255,164,114, 92,255,163,113, 91,255,161,112, 91,255,160,111, 90,255,159,110, 89,255,157,109, 88,255,156,108, 87,255, -154,106, 86,255,153,106, 85,255,151,105, 85,255,150,103, 83,255,148,102, 82,255,147,101, 82,255,145,100, 80,255,143, 99, 80,255, -141, 97, 79,255,138, 95, 77,255,136, 94, 75,255,135, 93, 74,255,132, 91, 73,255,130, 89, 71,255,128, 88, 69,255,125, 85, 68,255, -122, 84, 67,255,120, 81, 65,255,117, 80, 64,255,114, 78, 62,255,110, 75, 60,255,107, 74, 59,255,104, 71, 56,255,100, 68, 54,255, - 97, 66, 52,255, 94, 64, 51,255, 90, 61, 48,255, 87, 59, 46,255, 84, 56, 44,255, 80, 54, 42,255, 70, 56, 50,255, 61, 62, 62,255, - 60, 60, 60,255,139,117,115,255,213,169,165,255,210,167,163,255,210,167,163,255,209,166,161,255,210,166,161,255,209,165,160,255, -209,163,158,255,208,163,157,255,207,162,156,255,206,162,154,255,206,161,153,255,206,160,152,255,206,158,150,255,205,158,149,255, -204,156,148,255,204,155,146,255,203,155,144,255,202,154,143,255,202,152,141,255,201,152,139,255,200,150,137,255,199,148,135,255, -198,147,133,255,198,146,131,255,197,145,129,255,196,144,127,255,196,142,125,255,195,141,123,255,194,140,120,255,193,138,118,255, -192,137,116,255,192,136,114,255,191,134,111,255,190,133,109,255,189,132,107,255,188,131,107,255,187,130,106,255,186,130,105,255, -185,128,105,255,184,128,104,255,182,127,103,255,182,127,103,255,180,125,101,255,179,125,101,255,178,124,101,255,177,123, 99,255, -176,122, 99,255,174,121, 99,255,173,120, 97,255,172,120, 97,255,171,118, 97,255,170,118, 95,255,169,117, 95,255,167,116, 93,255, -166,115, 93,255,165,115, 93,255,163,113, 91,255,162,112, 91,255,161,111, 90,255,159,110, 89,255,158,110, 88,255,156,108, 88,255, -155,107, 86,255,154,106, 86,255,152,105, 85,255,150,104, 83,255,149,103, 83,255,147,102, 82,255,145,100, 81,255,143, 99, 80,255, -141, 98, 79,255,139, 96, 77,255,137, 94, 76,255,135, 93, 75,255,132, 91, 73,255,130, 89, 72,255,128, 88, 70,255,125, 86, 69,255, -122, 84, 67,255,119, 81, 65,255,117, 80, 64,255,114, 78, 62,255,110, 75, 60,255,108, 74, 59,255,104, 71, 56,255,100, 68, 54,255, - 97, 66, 53,255, 94, 63, 50,255, 90, 61, 48,255, 87, 59, 46,255, 83, 56, 44,255, 79, 53, 42,255, 69, 56, 50,255, 61, 62, 62,255, - 60, 60, 60,255,139,118,116,255,213,170,167,255,211,169,165,255,210,168,164,255,211,167,163,255,209,165,161,255,210,166,161,255, -209,165,160,255,209,163,158,255,208,163,157,255,208,162,156,255,206,162,154,255,207,161,153,255,206,160,152,255,205,159,151,255, -205,158,149,255,204,157,148,255,204,155,146,255,203,155,144,255,202,154,142,255,202,152,140,255,201,151,139,255,199,149,136,255, -199,148,135,255,199,148,133,255,197,146,131,255,197,145,129,255,196,144,127,255,195,142,124,255,195,141,122,255,194,140,120,255, -193,138,117,255,192,137,116,255,192,135,113,255,190,134,110,255,190,133,108,255,189,132,107,255,187,131,106,255,186,130,106,255, -186,130,105,255,184,128,104,255,183,128,104,255,182,127,103,255,181,126,102,255,180,126,102,255,179,125,101,255,177,123,100,255, -176,122,100,255,176,123, 99,255,174,121, 98,255,173,120, 98,255,171,119, 96,255,170,118, 96,255,169,118, 96,255,167,116, 94,255, -167,116, 93,255,166,115, 93,255,164,114, 92,255,162,113, 91,255,162,112, 91,255,160,111, 89,255,159,110, 89,255,157,109, 88,255, -155,108, 87,255,154,107, 86,255,153,106, 85,255,150,104, 84,255,149,103, 83,255,148,102, 83,255,145,100, 81,255,143, 99, 80,255, -142, 98, 79,255,139, 96, 77,255,137, 95, 76,255,135, 93, 75,255,133, 91, 73,255,130, 90, 72,255,128, 88, 71,255,126, 86, 69,255, -122, 84, 67,255,119, 82, 65,255,117, 80, 64,255,114, 78, 62,255,110, 75, 60,255,107, 74, 59,255,104, 71, 56,255,100, 68, 54,255, - 97, 66, 52,255, 94, 63, 50,255, 90, 61, 48,255, 86, 58, 46,255, 83, 56, 44,255, 79, 53, 41,255, 69, 56, 51,255, 61, 62, 62,255, - 60, 60, 60,255,140,118,117,255,214,171,169,255,212,169,167,255,212,169,165,255,211,168,164,255,210,167,163,255,210,166,162,255, -210,166,161,255,209,165,160,255,209,164,158,255,208,163,157,255,208,162,156,255,207,162,155,255,207,161,153,255,206,160,151,255, -205,159,150,255,205,158,149,255,204,156,148,255,204,156,145,255,202,154,144,255,202,153,142,255,201,152,140,255,201,151,138,255, -200,149,136,255,199,148,134,255,199,147,132,255,197,145,130,255,197,144,128,255,196,143,126,255,195,142,124,255,195,140,122,255, -193,139,120,255,193,138,117,255,192,136,114,255,191,135,112,255,190,133,109,255,190,132,108,255,188,131,107,255,187,131,106,255, -186,130,106,255,185,129,105,255,184,128,104,255,183,128,104,255,182,127,103,255,180,126,102,255,180,125,102,255,178,124,100,255, -177,123,100,255,176,122,100,255,174,122, 98,255,173,121, 98,255,172,119, 97,255,171,119, 97,255,170,118, 96,255,168,117, 94,255, -167,116, 94,255,166,116, 94,255,165,114, 92,255,163,113, 91,255,162,113, 91,255,161,111, 90,255,159,110, 89,255,158,109, 88,255, -156,108, 87,255,154,107, 87,255,153,106, 86,255,152,104, 84,255,150,104, 84,255,148,103, 83,255,146,101, 81,255,144,100, 80,255, -142, 98, 79,255,140, 96, 77,255,137, 95, 76,255,136, 94, 74,255,133, 91, 73,255,130, 90, 72,255,129, 89, 71,255,126, 86, 69,255, -123, 85, 68,255,121, 82, 65,255,118, 80, 64,255,114, 78, 63,255,111, 76, 60,255,107, 74, 59,255,104, 71, 56,255,100, 68, 54,255, - 96, 66, 52,255, 93, 63, 50,255, 90, 61, 48,255, 86, 58, 46,255, 83, 55, 43,255, 79, 52, 41,255, 69, 56, 50,255, 61, 62, 62,255, - 60, 60, 60,255,140,119,118,255,214,171,169,255,213,170,168,255,212,169,167,255,212,169,166,255,211,168,165,255,210,167,164,255, -210,167,162,255,209,166,161,255,209,165,160,255,209,164,159,255,208,163,157,255,207,162,156,255,207,161,155,255,206,160,153,255, -205,160,152,255,205,158,150,255,204,158,149,255,204,156,147,255,203,155,145,255,202,154,144,255,202,152,142,255,200,151,140,255, -200,151,138,255,200,150,136,255,198,148,134,255,198,147,132,255,197,145,130,255,196,144,128,255,196,143,125,255,195,141,123,255, -194,140,121,255,193,139,119,255,193,137,116,255,191,136,114,255,191,135,111,255,190,133,109,255,189,132,107,255,188,131,106,255, -187,131,105,255,186,129,105,255,185,129,104,255,183,127,103,255,182,127,103,255,181,126,102,255,179,126,102,255,179,124,101,255, -178,124,100,255,177,123, 99,255,176,122, 99,255,175,122, 98,255,173,120, 97,255,172,119, 96,255,171,119, 96,255,169,117, 95,255, -168,116, 94,255,167,116, 94,255,165,115, 92,255,164,114, 92,255,163,113, 92,255,161,112, 90,255,160,111, 89,255,158,110, 89,255, -157,109, 88,255,155,108, 87,255,154,106, 86,255,152,105, 84,255,150,104, 84,255,148,103, 83,255,147,101, 81,255,144,100, 80,255, -143, 99, 79,255,140, 97, 78,255,138, 95, 77,255,136, 94, 75,255,133, 92, 74,255,131, 90, 72,255,129, 89, 71,255,126, 86, 69,255, -123, 85, 68,255,120, 82, 66,255,118, 81, 64,255,114, 78, 63,255,111, 76, 60,255,107, 74, 58,255,103, 71, 56,255, 99, 68, 54,255, - 96, 65, 52,255, 92, 63, 50,255, 88, 60, 47,255, 85, 58, 45,255, 82, 55, 43,255, 77, 52, 40,255, 68, 55, 50,255, 61, 62, 62,255, - 60, 60, 60,255,141,119,118,255,214,173,171,255,212,171,169,255,213,170,168,255,212,170,167,255,212,169,166,255,211,168,165,255, -210,167,164,255,210,167,163,255,210,166,161,255,209,165,160,255,209,164,159,255,208,163,157,255,207,162,156,255,207,161,155,255, -206,160,153,255,205,160,152,255,205,158,150,255,204,157,148,255,203,156,147,255,203,155,145,255,203,154,143,255,201,152,142,255, -201,152,140,255,200,150,138,255,199,148,135,255,199,148,133,255,198,147,131,255,197,145,129,255,196,143,127,255,196,143,125,255, -195,141,122,255,194,140,121,255,194,139,118,255,192,137,115,255,191,135,113,255,191,134,111,255,190,132,108,255,189,132,107,255, -188,131,107,255,186,130,105,255,186,130,105,255,185,129,105,255,183,127,103,255,182,127,103,255,181,126,102,255,180,125,102,255, -179,125,101,255,177,123,100,255,176,123,100,255,175,122, 99,255,174,120, 97,255,172,120, 97,255,171,119, 97,255,169,118, 95,255, -168,117, 94,255,167,117, 94,255,165,115, 93,255,165,115, 93,255,164,114, 92,255,162,112, 90,255,161,112, 90,255,159,111, 90,255, -157,109, 88,255,156,108, 87,255,155,107, 86,255,152,105, 84,255,151,105, 84,255,149,103, 83,255,147,101, 82,255,145,100, 81,255, -143, 99, 80,255,140, 97, 78,255,138, 95, 77,255,136, 94, 76,255,134, 92, 74,255,131, 90, 72,255,129, 89, 71,255,126, 86, 69,255, -123, 85, 68,255,120, 82, 66,255,117, 80, 64,255,114, 78, 63,255,111, 76, 60,255,107, 73, 58,255,103, 70, 56,255, 99, 67, 53,255, - 95, 65, 51,255, 91, 62, 49,255, 88, 59, 47,255, 85, 58, 45,255, 81, 55, 43,255, 77, 51, 40,255, 67, 55, 49,255, 61, 62, 62,255, - 60, 60, 60,255,141,119,119,255,215,174,172,255,213,172,170,255,212,171,169,255,213,171,168,255,212,170,167,255,212,169,166,255, -211,168,165,255,210,167,164,255,210,167,163,255,210,166,161,255,209,165,160,255,209,164,159,255,208,163,157,255,207,162,156,255, -207,161,154,255,206,160,153,255,205,159,152,255,205,158,150,255,204,157,148,255,204,156,147,255,203,155,144,255,202,154,143,255, -201,152,141,255,201,151,139,255,200,150,137,255,199,148,135,255,198,147,133,255,197,146,131,255,197,144,128,255,196,143,126,255, -195,142,125,255,194,140,122,255,194,139,120,255,193,138,118,255,192,136,115,255,191,135,112,255,190,134,109,255,189,132,107,255, -189,132,107,255,187,130,106,255,186,130,106,255,185,129,105,255,184,128,103,255,183,127,103,255,182,127,103,255,180,125,101,255, -179,125,101,255,178,123,101,255,177,123,100,255,176,122, 99,255,175,121, 98,255,173,120, 97,255,172,120, 97,255,170,118, 95,255, -169,118, 95,255,168,117, 94,255,166,115, 93,255,165,114, 92,255,164,114, 92,255,162,112, 91,255,161,111, 90,255,160,111, 90,255, -158,109, 88,255,156,108, 87,255,155,107, 87,255,153,106, 85,255,151,105, 85,255,150,104, 84,255,147,102, 82,255,145,100, 81,255, -143, 99, 80,255,141, 97, 78,255,138, 96, 77,255,137, 94, 76,255,134, 92, 74,255,131, 90, 73,255,129, 89, 71,255,126, 87, 69,255, -122, 84, 68,255,119, 82, 65,255,117, 80, 64,255,114, 78, 62,255,109, 75, 60,255,106, 73, 58,255,102, 70, 56,255, 98, 67, 53,255, - 94, 64, 50,255, 91, 61, 48,255, 87, 59, 46,255, 85, 57, 45,255, 81, 54, 43,255, 75, 50, 38,255, 67, 54, 49,255, 61, 62, 62,255, - 60, 60, 60,255,141,120,119,255,216,174,173,255,213,172,171,255,213,172,170,255,212,171,169,255,213,170,168,255,212,170,167,255, -212,169,166,255,211,168,165,255,210,167,164,255,210,166,162,255,209,166,161,255,209,165,160,255,209,164,158,255,207,163,157,255, -207,162,156,255,207,161,154,255,206,160,153,255,205,159,151,255,205,158,149,255,204,157,148,255,203,156,146,255,202,154,144,255, -201,153,142,255,201,152,141,255,200,151,138,255,199,150,136,255,199,148,135,255,198,147,132,255,197,146,130,255,196,145,128,255, -195,143,126,255,195,142,124,255,194,140,122,255,193,139,119,255,192,137,116,255,192,136,113,255,190,134,111,255,190,133,108,255, -189,132,107,255,187,131,106,255,187,130,106,255,186,130,105,255,184,128,104,255,183,128,103,255,182,127,103,255,181,126,102,255, -180,125,102,255,179,124,100,255,177,123,100,255,176,123, 99,255,174,121, 99,255,174,121, 98,255,172,120, 97,255,170,118, 95,255, -169,117, 95,255,168,117, 95,255,167,115, 93,255,166,115, 93,255,164,114, 92,255,162,113, 91,255,161,112, 91,255,160,111, 90,255, -158,109, 88,255,156,108, 87,255,155,107, 87,255,153,106, 85,255,151,105, 85,255,150,104, 84,255,148,102, 82,255,145,101, 81,255, -144, 99, 80,255,141, 97, 78,255,139, 96, 77,255,137, 95, 76,255,134, 92, 74,255,131, 91, 73,255,129, 89, 71,255,126, 86, 69,255, -122, 84, 67,255,120, 81, 65,255,116, 80, 63,255,113, 77, 61,255,109, 74, 59,255,106, 72, 58,255,101, 69, 55,255, 96, 65, 52,255, - 93, 63, 50,255, 90, 61, 48,255, 86, 58, 46,255, 83, 56, 44,255, 79, 52, 41,255, 73, 48, 38,255, 66, 54, 48,255, 61, 62, 62,255, - 60, 60, 60,255,141,120,120,255,216,175,174,255,214,173,172,255,214,173,171,255,213,172,170,255,212,171,169,255,213,171,168,255, -212,170,167,255,212,169,166,255,211,168,165,255,211,168,164,255,210,166,162,255,209,166,161,255,208,165,161,255,208,164,158,255, -208,163,157,255,206,162,156,255,206,161,154,255,206,160,152,255,205,158,151,255,204,157,149,255,204,156,147,255,203,155,145,255, -202,154,143,255,202,153,142,255,200,151,139,255,200,150,138,255,199,149,136,255,198,147,133,255,198,146,132,255,197,145,129,255, -196,143,127,255,195,142,125,255,195,141,123,255,194,139,120,255,193,138,118,255,192,137,115,255,191,135,112,255,191,133,109,255, -190,132,107,255,188,131,106,255,187,131,106,255,187,130,105,255,185,129,105,255,184,128,104,255,183,127,103,255,181,127,103,255, -180,126,102,255,179,124,100,255,178,124,100,255,177,123,100,255,175,121, 98,255,174,121, 98,255,173,120, 97,255,171,119, 96,255, -170,118, 96,255,169,117, 95,255,167,116, 93,255,166,115, 93,255,165,115, 93,255,163,113, 91,255,162,112, 90,255,160,112, 90,255, -158,110, 89,255,157,109, 88,255,155,108, 87,255,153,106, 85,255,151,105, 85,255,150,104, 84,255,148,102, 82,255,145,101, 81,255, -144, 99, 80,255,141, 97, 78,255,139, 96, 77,255,137, 95, 76,255,134, 92, 74,255,131, 90, 73,255,128, 88, 71,255,125, 86, 69,255, -122, 84, 67,255,118, 81, 65,255,115, 79, 63,255,112, 77, 61,255,108, 73, 59,255,104, 71, 57,255,100, 68, 54,255, 96, 65, 51,255, - 92, 63, 49,255, 88, 60, 48,255, 85, 57, 45,255, 81, 54, 42,255, 76, 50, 40,255, 72, 47, 37,255, 65, 53, 48,255, 61, 62, 62,255, - 60, 60, 60,255,142,120,121,255,216,176,175,255,214,174,173,255,214,173,172,255,214,173,171,255,213,172,170,255,212,171,169,255, -212,170,168,255,211,169,167,255,212,169,166,255,210,168,165,255,210,167,164,255,210,166,162,255,209,166,161,255,208,164,160,255, -208,163,158,255,207,163,157,255,206,161,155,255,206,160,153,255,206,159,152,255,205,158,150,255,204,157,148,255,204,156,146,255, -202,155,145,255,202,154,143,255,201,152,141,255,200,152,139,255,200,150,137,255,199,148,135,255,198,147,132,255,198,146,130,255, -196,144,129,255,196,144,126,255,195,142,124,255,194,140,122,255,194,139,119,255,193,138,116,255,191,136,113,255,190,134,111,255, -190,133,108,255,188,132,107,255,188,131,106,255,187,130,106,255,185,129,105,255,184,129,104,255,183,128,104,255,182,127,103,255, -181,126,102,255,180,124,101,255,178,124,100,255,177,123,100,255,175,122, 98,255,174,121, 98,255,173,121, 98,255,171,119, 96,255, -171,119, 96,255,169,118, 95,255,167,116, 94,255,166,116, 94,255,165,115, 93,255,163,113, 91,255,162,113, 90,255,161,112, 90,255, -159,110, 89,255,157,109, 88,255,155,108, 87,255,153,106, 85,255,152,105, 85,255,150,104, 84,255,147,102, 82,255,145,101, 81,255, -143, 99, 80,255,141, 97, 78,255,138, 96, 77,255,136, 94, 75,255,134, 92, 74,255,131, 90, 72,255,127, 87, 71,255,124, 86, 68,255, -121, 84, 67,255,118, 81, 64,255,114, 79, 63,255,111, 76, 61,255,107, 73, 58,255,103, 70, 56,255, 99, 67, 54,255, 94, 64, 51,255, - 91, 61, 48,255, 87, 59, 46,255, 83, 56, 44,255, 79, 53, 41,255, 74, 50, 38,255, 70, 45, 36,255, 64, 52, 47,255, 61, 62, 62,255, - 60, 60, 60,255,142,121,121,255,217,176,176,255,214,174,174,255,215,174,173,255,214,173,172,255,213,172,171,255,213,172,170,255, -212,171,169,255,212,170,168,255,211,169,167,255,211,168,166,255,210,168,165,255,210,167,164,255,209,166,162,255,209,165,161,255, -208,164,160,255,207,163,157,255,207,162,156,255,207,161,155,255,205,160,153,255,205,159,152,255,205,158,149,255,203,156,147,255, -203,155,146,255,203,154,144,255,201,153,142,255,200,152,140,255,200,151,138,255,199,149,136,255,198,148,134,255,197,147,132,255, -197,145,130,255,196,144,127,255,196,143,126,255,194,141,123,255,193,140,120,255,193,138,118,255,191,136,115,255,191,135,112,255, -190,134,109,255,189,132,107,255,188,131,107,255,186,131,106,255,185,129,105,255,185,129,105,255,184,127,104,255,182,127,103,255, -181,126,102,255,179,125,102,255,179,124,101,255,178,124,100,255,176,122, 99,255,175,122, 98,255,174,121, 98,255,172,120, 97,255, -171,119, 96,255,170,118, 95,255,168,116, 94,255,167,116, 94,255,165,115, 93,255,163,113, 91,255,162,112, 91,255,161,112, 90,255, -159,110, 89,255,157,109, 88,255,156,108, 87,255,153,106, 85,255,152,105, 84,255,150,104, 84,255,147,102, 82,255,145,100, 80,255, -143, 99, 80,255,141, 97, 78,255,138, 95, 76,255,136, 94, 75,255,133, 91, 73,255,129, 89, 72,255,127, 88, 70,255,124, 85, 68,255, -121, 83, 66,255,118, 81, 65,255,114, 78, 62,255,110, 75, 60,255,106, 72, 57,255,102, 69, 55,255, 97, 66, 52,255, 93, 62, 50,255, - 89, 60, 47,255, 85, 57, 45,255, 81, 54, 42,255, 76, 52, 40,255, 72, 48, 38,255, 67, 44, 34,255, 63, 51, 46,255, 61, 62, 62,255, - 60, 60, 60,255,142,121,121,255,217,177,178,255,215,175,175,255,214,175,174,255,214,174,174,255,214,173,172,255,213,173,171,255, -214,172,171,255,212,171,169,255,212,170,168,255,212,170,167,255,211,168,165,255,210,167,164,255,211,168,164,255,209,166,162,255, -208,165,160,255,209,164,159,255,207,163,157,255,207,162,156,255,207,161,154,255,205,159,153,255,205,158,150,255,205,158,149,255, -203,156,147,255,202,155,145,255,202,153,143,255,201,152,141,255,201,152,139,255,199,150,137,255,199,148,135,255,198,147,133,255, -197,146,131,255,196,145,129,255,196,143,126,255,195,141,124,255,194,140,122,255,194,139,119,255,192,137,116,255,192,136,113,255, -191,135,111,255,189,133,108,255,189,132,107,255,188,131,106,255,186,130,106,255,185,129,105,255,183,129,103,255,183,127,103,255, -181,127,103,255,180,125,101,255,179,125,101,255,178,124,100,255,177,124, 99,255,175,122, 99,255,174,121, 98,255,173,120, 97,255, -171,119, 96,255,170,118, 96,255,168,116, 94,255,167,116, 94,255,166,115, 93,255,164,113, 92,255,162,113, 91,255,161,112, 91,255, -159,110, 89,255,157,109, 88,255,156,108, 87,255,153,106, 85,255,151,105, 84,255,150,104, 84,255,147,101, 81,255,145,100, 80,255, -143, 99, 79,255,140, 97, 77,255,138, 95, 76,255,134, 93, 74,255,131, 91, 73,255,128, 89, 71,255,125, 86, 69,255,122, 84, 67,255, -119, 82, 66,255,116, 79, 63,255,112, 77, 62,255,108, 74, 59,255,104, 70, 56,255, 99, 68, 54,255, 94, 64, 50,255, 90, 61, 48,255, - 88, 59, 47,255, 84, 56, 44,255, 80, 53, 42,255, 75, 50, 39,255, 71, 47, 37,255, 64, 43, 32,255, 60, 50, 45,255, 62, 62, 62,255, - 60, 60, 60,255,142,122,122,255,217,178,178,255,215,177,176,255,215,175,175,255,214,175,174,255,215,173,173,255,214,173,172,255, -214,172,171,255,212,171,170,255,213,171,169,255,211,170,168,255,211,169,166,255,211,168,165,255,211,167,164,255,210,166,163,255, -209,165,161,255,208,165,160,255,208,163,158,255,207,162,156,255,206,162,155,255,206,160,154,255,205,159,152,255,204,157,149,255, -204,157,148,255,203,156,146,255,202,154,144,255,202,153,142,255,201,152,140,255,200,150,138,255,199,149,136,255,199,148,134,255, -197,146,132,255,197,145,129,255,196,144,127,255,195,142,125,255,195,141,122,255,194,139,120,255,192,138,118,255,192,136,115,255, -191,135,112,255,189,133,110,255,189,132,107,255,187,130,106,255,187,130,105,255,186,129,105,255,184,128,104,255,183,128,103,255, -182,127,103,255,180,125,101,255,180,125,101,255,178,124,101,255,178,123,100,255,176,122, 99,255,175,121, 98,255,173,120, 97,255, -172,120, 97,255,170,118, 96,255,168,117, 94,255,167,116, 94,255,166,115, 93,255,164,114, 92,255,163,113, 91,255,161,112, 91,255, -159,110, 89,255,157,109, 88,255,156,108, 87,255,153,106, 85,255,152,105, 84,255,150,104, 84,255,147,102, 82,255,144,100, 81,255, -142, 99, 80,255,140, 96, 78,255,136, 94, 76,255,133, 92, 74,255,130, 90, 72,255,127, 88, 70,255,124, 85, 68,255,121, 83, 67,255, -118, 81, 64,255,115, 78, 63,255,111, 75, 60,255,106, 72, 58,255,101, 69, 55,255, 96, 65, 51,255, 92, 62, 49,255, 89, 60, 47,255, - 86, 58, 46,255, 83, 55, 44,255, 79, 52, 41,255, 74, 49, 38,255, 68, 44, 35,255, 59, 40, 30,255, 46, 41, 39,255, 62, 62, 62,255, - 60, 60, 60,255,142,122,123,255,218,178,180,255,216,176,177,255,215,176,176,255,215,175,175,255,214,174,174,255,214,173,173,255, -213,173,172,255,213,172,171,255,212,171,170,255,212,170,169,255,211,169,167,255,211,169,167,255,210,168,164,255,210,167,163,255, -209,166,162,255,208,164,160,255,208,163,159,255,208,163,158,255,206,161,156,255,207,161,154,255,206,160,153,255,204,158,150,255, -204,157,149,255,204,156,147,255,202,154,145,255,201,153,143,255,201,153,142,255,200,151,139,255,200,150,137,255,199,149,136,255, -197,147,133,255,198,146,130,255,197,145,129,255,195,142,125,255,195,141,123,255,194,140,121,255,193,138,119,255,192,137,116,255, -191,136,112,255,190,134,110,255,189,132,108,255,188,131,107,255,187,130,106,255,186,130,105,255,185,129,105,255,184,128,104,255, -182,127,103,255,181,125,102,255,180,125,101,255,179,124,101,255,177,123,100,255,176,123, 99,255,175,122, 99,255,173,120, 97,255, -172,120, 97,255,171,119, 96,255,169,117, 94,255,168,117, 94,255,166,116, 94,255,164,114, 92,255,163,113, 91,255,161,112, 90,255, -159,110, 89,255,157,109, 88,255,156,108, 87,255,153,106, 85,255,151,105, 85,255,150,104, 84,255,147,101, 82,255,144,100, 81,255, -142, 98, 79,255,138, 95, 76,255,135, 93, 75,255,132, 91, 73,255,129, 88, 71,255,125, 86, 69,255,123, 84, 68,255,120, 82, 66,255, -117, 79, 64,255,113, 77, 62,255,108, 73, 58,255,103, 70, 55,255, 99, 67, 53,255, 94, 63, 50,255, 90, 61, 48,255, 88, 60, 47,255, - 85, 58, 45,255, 82, 54, 42,255, 76, 50, 40,255, 70, 47, 36,255, 64, 42, 32,255, 33, 23, 18,255, 28, 28, 28,255, 62, 62, 62,255, - 60, 60, 60,255,142,122,123,255,218,179,180,255,216,177,178,255,215,177,177,255,216,176,177,255,215,175,175,255,214,174,174,255, -215,174,174,255,213,173,171,255,213,172,170,255,212,172,170,255,212,170,168,255,212,170,167,255,210,169,166,255,210,167,164,255, -210,167,163,255,209,166,162,255,209,164,160,255,208,164,158,255,208,163,157,255,207,161,155,255,206,161,153,255,206,159,152,255, -204,158,149,255,204,157,148,255,203,155,146,255,202,154,145,255,202,153,142,255,200,151,140,255,199,150,138,255,200,149,136,255, -198,147,134,255,198,146,132,255,197,145,129,255,195,143,126,255,195,142,125,255,194,141,122,255,193,139,120,255,192,138,117,255, -192,136,114,255,191,134,111,255,190,133,108,255,189,132,107,255,188,131,106,255,186,130,105,255,186,130,104,255,184,128,104,255, -183,127,103,255,182,127,102,255,180,126,102,255,180,125,102,255,179,124,100,255,177,123, 99,255,176,123, 99,255,174,121, 99,255, -172,120, 97,255,171,119, 96,255,169,118, 95,255,168,117, 95,255,167,116, 94,255,164,114, 92,255,163,113, 91,255,161,112, 90,255, -159,110, 88,255,157,109, 88,255,155,108, 87,255,153,106, 86,255,151,105, 85,255,149,103, 83,255,146,101, 82,255,143, 99, 80,255, -139, 97, 78,255,137, 95, 76,255,133, 92, 74,255,130, 89, 72,255,127, 87, 70,255,124, 85, 68,255,121, 83, 66,255,118, 81, 65,255, -114, 78, 63,255,110, 74, 59,255,105, 71, 57,255,100, 68, 54,255, 95, 64, 50,255, 91, 62, 48,255, 90, 61, 48,255, 87, 58, 46,255, - 84, 57, 44,255, 79, 53, 41,255, 72, 49, 37,255, 66, 43, 33,255, 45, 31, 25,255, 0, 0, 0,255, 29, 29, 29,255, 61, 61, 61,255, - 60, 60, 60,255,142,122,123,255,218,180,181,255,217,178,179,255,216,177,178,255,216,176,177,255,215,175,176,255,215,175,175,255, -215,174,173,255,214,173,173,255,213,172,171,255,212,171,171,255,212,171,169,255,212,170,167,255,211,169,167,255,210,168,165,255, -210,167,163,255,210,166,162,255,209,165,160,255,208,164,159,255,207,163,157,255,207,162,156,255,206,161,154,255,205,159,152,255, -205,158,151,255,204,157,149,255,204,156,147,255,203,155,145,255,202,153,143,255,200,152,141,255,200,151,139,255,200,150,137,255, -199,148,135,255,198,147,133,255,197,145,130,255,196,144,128,255,195,142,125,255,194,141,123,255,193,140,120,255,193,138,118,255, -192,137,115,255,191,135,112,255,190,133,109,255,190,132,108,255,188,131,106,255,187,130,106,255,185,130,105,255,184,128,104,255, -183,128,104,255,183,127,103,255,181,126,102,255,180,126,102,255,178,125,100,255,177,123, 99,255,176,123,100,255,174,121, 98,255, -173,120, 97,255,171,119, 96,255,170,118, 96,255,168,117, 95,255,167,116, 94,255,164,114, 92,255,163,113, 91,255,161,112, 90,255, -159,110, 88,255,157,109, 88,255,155,107, 87,255,153,106, 86,255,150,104, 84,255,148,103, 83,255,145,100, 81,255,142, 98, 79,255, -138, 96, 77,255,135, 93, 74,255,131, 90, 72,255,128, 88, 71,255,125, 85, 69,255,121, 83, 66,255,118, 81, 65,255,116, 80, 63,255, -111, 76, 60,255,106, 72, 57,255,102, 69, 55,255, 97, 65, 52,255, 92, 63, 49,255, 91, 61, 48,255, 90, 60, 48,255, 87, 58, 46,255, - 82, 54, 42,255, 75, 50, 39,255, 68, 46, 35,255, 53, 36, 29,255, 6, 5, 4,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, - 60, 60, 60,255,143,123,124,255,219,180,182,255,216,178,179,255,217,177,179,255,216,177,177,255,216,175,176,255,216,176,176,255, -215,175,174,255,214,173,173,255,213,173,172,255,213,172,170,255,212,171,169,255,212,170,168,255,212,170,166,255,211,168,165,255, -210,168,164,255,209,166,162,255,209,165,161,255,209,165,160,255,207,163,158,255,207,162,157,255,207,162,155,255,205,160,153,255, -205,159,151,255,204,158,150,255,203,156,148,255,203,155,145,255,202,154,144,255,201,152,142,255,200,152,140,255,200,151,138,255, -199,149,136,255,198,148,133,255,197,146,131,255,196,144,129,255,195,143,126,255,195,142,124,255,194,140,122,255,193,139,118,255, -192,138,116,255,191,135,113,255,190,134,111,255,190,133,108,255,188,131,106,255,187,130,106,255,186,129,106,255,185,129,104,255, -183,128,103,255,182,128,104,255,181,126,102,255,180,126,102,255,178,124,100,255,177,123,100,255,176,123,100,255,174,121, 98,255, -173,120, 97,255,171,119, 96,255,170,118, 96,255,169,117, 95,255,167,116, 94,255,164,114, 92,255,163,113, 91,255,161,112, 90,255, -158,110, 89,255,157,109, 88,255,155,107, 87,255,152,105, 85,255,150,104, 84,255,147,102, 82,255,144, 99, 80,255,140, 97, 77,255, -136, 94, 76,255,132, 91, 73,255,129, 89, 71,255,125, 86, 69,255,122, 83, 67,255,119, 81, 65,255,116, 80, 64,255,112, 77, 61,255, -107, 73, 58,255,103, 70, 56,255, 99, 67, 53,255, 94, 63, 50,255, 91, 63, 48,255, 90, 61, 48,255, 89, 59, 47,255, 84, 56, 44,255, - 78, 52, 41,255, 72, 48, 36,255, 62, 41, 32,255, 9, 6, 6,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,143,123,124,255,219,181,183,255,217,178,180,255,216,178,179,255,217,177,179,255,215,176,177,255,216,175,176,255, -215,175,175,255,214,174,173,255,214,173,173,255,214,173,172,255,213,171,170,255,212,171,169,255,211,170,168,255,211,169,166,255, -211,168,165,255,210,167,164,255,209,166,162,255,209,165,161,255,208,164,159,255,207,163,157,255,207,162,156,255,206,161,154,255, -205,159,152,255,205,158,150,255,204,157,149,255,203,156,147,255,203,155,145,255,202,153,142,255,201,152,141,255,200,151,139,255, -199,149,136,255,198,148,134,255,198,147,132,255,197,145,129,255,196,144,128,255,196,143,125,255,194,140,122,255,193,139,119,255, -192,138,117,255,191,135,114,255,191,134,111,255,190,133,109,255,188,131,107,255,187,131,106,255,187,131,106,255,185,129,104,255, -184,129,104,255,182,127,103,255,181,126,102,255,181,126,102,255,178,124,100,255,177,123,100,255,176,123,100,255,174,121, 98,255, -173,120, 97,255,172,120, 97,255,170,118, 95,255,169,117, 95,255,167,116, 94,255,164,114, 92,255,163,113, 91,255,161,112, 90,255, -158,110, 89,255,156,108, 88,255,154,107, 87,255,151,104, 84,255,148,103, 83,255,145,101, 82,255,141, 98, 79,255,137, 94, 76,255, -133, 91, 73,255,129, 89, 71,255,125, 86, 69,255,122, 84, 67,255,120, 82, 65,255,117, 80, 64,255,113, 77, 61,255,108, 73, 59,255, -104, 71, 57,255,100, 67, 53,255, 94, 63, 50,255, 92, 62, 49,255, 91, 61, 49,255, 90, 61, 48,255, 85, 58, 45,255, 80, 54, 42,255, - 75, 50, 38,255, 66, 44, 34,255, 18, 14, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,143,123,124,255,219,181,183,255,217,179,181,255,217,178,179,255,217,178,178,255,216,176,178,255,216,176,176,255, -214,176,176,255,215,174,174,255,214,174,173,255,213,172,172,255,213,172,171,255,212,171,169,255,211,171,168,255,211,169,167,255, -211,168,165,255,211,168,164,255,209,166,163,255,209,166,161,255,209,164,160,255,208,163,158,255,207,162,156,255,207,162,154,255, -206,160,153,255,205,159,151,255,204,157,149,255,203,156,147,255,203,155,145,255,202,153,143,255,201,153,142,255,200,151,139,255, -199,150,137,255,199,148,134,255,198,147,133,255,197,145,130,255,196,144,128,255,196,143,126,255,194,141,123,255,193,139,120,255, -193,138,117,255,191,136,114,255,191,135,112,255,190,133,109,255,189,132,107,255,187,131,106,255,187,131,106,255,185,129,104,255, -184,129,104,255,182,127,103,255,181,126,102,255,181,126,102,255,178,124,100,255,178,123,101,255,177,123,100,255,174,121, 98,255, -173,120, 97,255,172,120, 97,255,170,118, 95,255,168,117, 95,255,166,116, 94,255,164,114, 92,255,162,112, 90,255,160,111, 90,255, -158,110, 89,255,155,108, 87,255,152,106, 86,255,150,104, 84,255,147,102, 82,255,143, 99, 80,255,139, 96, 77,255,134, 92, 74,255, -130, 90, 72,255,126, 87, 69,255,122, 84, 67,255,119, 81, 65,255,117, 80, 64,255,113, 77, 62,255,109, 74, 59,255,105, 72, 57,255, -101, 68, 54,255, 95, 64, 51,255, 93, 62, 49,255, 92, 62, 49,255, 91, 61, 48,255, 87, 59, 46,255, 81, 55, 43,255, 77, 52, 40,255, - 68, 46, 36,255, 22, 16, 14,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,143,123,125,255,219,181,184,255,218,179,181,255,217,178,180,255,216,178,179,255,216,176,178,255,215,177,177,255, -215,176,177,255,214,174,175,255,215,175,174,255,214,173,173,255,213,172,171,255,212,171,170,255,212,170,169,255,211,169,167,255, -211,169,166,255,210,167,164,255,209,167,163,255,209,166,162,255,209,165,160,255,208,164,159,255,207,163,157,255,207,161,155,255, -206,160,154,255,205,159,152,255,204,158,149,255,203,157,148,255,203,156,146,255,202,154,144,255,201,153,142,255,201,152,140,255, -199,150,138,255,199,149,135,255,198,148,133,255,197,146,131,255,196,144,128,255,196,143,127,255,194,141,124,255,194,140,120,255, -193,139,118,255,192,137,116,255,191,135,113,255,191,134,110,255,189,132,107,255,188,131,106,255,187,131,106,255,185,129,104,255, -185,129,105,255,183,127,103,255,182,127,103,255,181,126,102,255,179,124,100,255,177,123,101,255,177,123,100,255,174,121, 98,255, -173,120, 97,255,172,120, 97,255,170,118, 95,255,168,117, 95,255,166,115, 93,255,163,113, 91,255,162,112, 90,255,160,111, 90,255, -157,109, 88,255,154,106, 87,255,151,105, 85,255,148,102, 83,255,144,100, 81,255,140, 97, 78,255,135, 93, 74,255,130, 90, 71,255, -126, 87, 70,255,123, 84, 67,255,119, 81, 65,255,117, 80, 64,255,113, 77, 62,255,109, 74, 59,255,106, 72, 58,255,101, 69, 55,255, - 96, 65, 51,255, 92, 63, 50,255, 93, 63, 50,255, 91, 62, 49,255, 88, 59, 47,255, 84, 56, 44,255, 80, 53, 41,255, 72, 48, 38,255, - 29, 20, 17,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,143,123,125,255,220,182,184,255,217,179,181,255,218,179,181,255,217,178,180,255,216,177,178,255,216,177,178,255, -216,176,177,255,214,175,175,255,215,175,175,255,214,174,174,255,213,172,172,255,212,172,171,255,213,172,169,255,211,170,168,255, -211,169,166,255,211,169,166,255,210,167,164,255,209,166,162,255,209,165,160,255,208,164,159,255,207,163,157,255,207,162,155,255, -206,161,154,255,206,160,152,255,204,158,151,255,204,157,149,255,203,156,147,255,202,154,144,255,201,153,143,255,200,152,141,255, -200,150,138,255,199,149,136,255,198,148,134,255,197,146,131,255,196,145,129,255,196,144,127,255,195,142,124,255,194,140,121,255, -194,139,119,255,192,137,116,255,192,135,113,255,191,134,111,255,189,132,108,255,188,132,106,255,187,131,106,255,185,129,104,255, -185,129,105,255,183,128,104,255,182,127,103,255,181,126,102,255,179,125,101,255,178,124,101,255,177,123,100,255,175,121, 98,255, -173,120, 97,255,172,119, 96,255,169,117, 95,255,167,116, 94,255,165,115, 93,255,163,113, 91,255,161,112, 90,255,159,111, 89,255, -156,108, 87,255,153,106, 86,255,149,103, 84,255,145,101, 81,255,141, 97, 78,255,136, 94, 75,255,131, 89, 72,255,126, 87, 70,255, -123, 84, 67,255,119, 82, 66,255,117, 80, 64,255,113, 77, 62,255,109, 74, 59,255,106, 72, 57,255,102, 69, 54,255, 96, 65, 51,255, - 93, 64, 50,255, 94, 64, 51,255, 93, 63, 50,255, 89, 60, 48,255, 85, 57, 45,255, 81, 54, 42,255, 75, 50, 39,255, 43, 32, 27,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,143,123,125,255,220,182,185,255,217,180,182,255,218,179,181,255,217,179,180,255,217,177,179,255,216,177,178,255, -216,177,177,255,215,175,176,255,215,175,175,255,213,174,174,255,213,173,172,255,213,173,171,255,213,172,170,255,211,170,169,255, -211,169,167,255,210,168,165,255,210,167,164,255,209,166,163,255,208,165,161,255,208,164,159,255,207,163,158,255,206,163,156,255, -206,161,155,255,206,160,153,255,204,158,151,255,204,157,149,255,203,156,147,255,202,154,145,255,201,153,143,255,201,153,141,255, -200,151,139,255,199,149,136,255,199,148,134,255,197,146,132,255,196,145,129,255,195,144,127,255,195,142,125,255,195,141,122,255, -194,139,119,255,192,138,117,255,192,136,113,255,191,134,111,255,189,133,108,255,188,131,106,255,186,131,106,255,186,130,105,255, -185,129,104,255,183,129,105,255,182,127,103,255,181,126,102,255,179,126,102,255,178,124,100,255,177,123,100,255,175,121, 98,255, -173,120, 97,255,171,119, 96,255,169,117, 95,255,166,115, 93,255,164,114, 92,255,162,113, 91,255,160,111, 89,255,157,109, 88,255, -154,107, 87,255,150,104, 84,255,147,101, 82,255,142, 98, 79,255,136, 94, 75,255,131, 90, 73,255,126, 87, 70,255,123, 84, 67,255, -120, 82, 65,255,116, 80, 64,255,113, 77, 62,255,109, 75, 59,255,105, 72, 57,255,101, 68, 54,255, 97, 66, 52,255, 94, 64, 50,255, - 94, 64, 51,255, 93, 64, 50,255, 90, 61, 48,255, 87, 59, 46,255, 83, 56, 44,255, 76, 52, 41,255, 40, 29, 24,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,143,124,125,255,220,182,185,255,217,180,182,255,218,179,181,255,217,178,181,255,217,178,179,255,216,177,179,255, -215,176,178,255,216,176,176,255,215,175,175,255,214,173,174,255,213,173,172,255,214,173,172,255,213,172,171,255,212,170,169,255, -212,170,168,255,210,168,166,255,210,167,164,255,209,167,163,255,209,165,161,255,208,164,160,255,207,163,158,255,207,162,156,255, -206,161,155,255,206,161,153,255,204,159,151,255,204,157,150,255,204,157,148,255,202,155,145,255,201,154,143,255,202,153,142,255, -200,151,139,255,199,150,137,255,199,149,135,255,197,146,132,255,196,145,130,255,196,144,128,255,196,142,125,255,195,141,122,255, -194,140,120,255,192,138,117,255,192,136,114,255,191,135,111,255,189,133,108,255,189,132,107,255,187,130,105,255,186,130,105,255, -186,130,104,255,184,128,104,255,183,127,103,255,182,127,103,255,180,125,101,255,178,124,100,255,177,123,100,255,174,121, 98,255, -173,120, 97,255,170,118, 96,255,167,116, 94,255,166,115, 93,255,163,113, 91,255,160,111, 89,255,158,110, 89,255,155,107, 87,255, -152,105, 85,255,147,102, 82,255,142, 98, 79,255,137, 94, 76,255,132, 90, 73,255,126, 87, 70,255,122, 84, 67,255,119, 81, 65,255, -116, 80, 64,255,112, 76, 61,255,108, 73, 58,255,105, 71, 57,255,101, 68, 54,255, 97, 66, 52,255, 95, 65, 51,255, 95, 65, 50,255, - 94, 64, 51,255, 91, 62, 49,255, 88, 60, 47,255, 85, 57, 45,255, 78, 53, 41,255, 47, 34, 28,255, 1, 1, 1,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,143,124,125,255,220,182,185,255,217,180,182,255,218,180,182,255,217,179,181,255,216,178,180,255,217,178,179,255, -216,177,178,255,216,176,177,255,215,175,176,255,215,175,175,255,213,173,173,255,214,173,172,255,213,172,171,255,213,170,169,255, -212,170,168,255,210,169,166,255,210,167,165,255,209,167,164,255,209,166,162,255,208,164,160,255,208,164,159,255,207,162,157,255, -206,161,155,255,205,161,154,255,206,159,152,255,204,158,150,255,204,157,148,255,202,155,146,255,202,154,144,255,202,153,142,255, -200,151,140,255,200,150,138,255,199,149,136,255,197,147,133,255,197,146,130,255,196,145,128,255,195,143,126,255,195,141,124,255, -194,140,121,255,193,138,117,255,192,136,114,255,191,135,112,255,190,133,109,255,189,132,107,255,188,132,107,255,186,130,105,255, -186,130,105,255,184,128,104,255,183,128,104,255,182,127,103,255,180,125,101,255,178,124,100,255,177,123,100,255,174,121, 98,255, -172,120, 96,255,169,118, 95,255,166,115, 93,255,164,114, 92,255,161,113, 91,255,159,110, 88,255,156,108, 88,255,153,106, 86,255, -148,103, 83,255,143, 99, 80,255,137, 94, 76,255,131, 90, 72,255,126, 87, 70,255,122, 83, 67,255,118, 82, 64,255,115, 79, 63,255, -112, 76, 61,255,108, 73, 58,255,104, 71, 56,255,100, 68, 54,255, 97, 66, 53,255, 95, 65, 52,255, 96, 65, 52,255, 94, 64, 51,255, - 92, 63, 49,255, 89, 60, 47,255, 86, 58, 46,255, 79, 54, 42,255, 51, 37, 32,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,143,124,125,255,220,182,185,255,217,180,182,255,217,180,182,255,218,180,182,255,216,178,180,255,217,177,179,255, -216,177,178,255,215,176,177,255,215,176,176,255,215,175,175,255,213,173,173,255,214,173,172,255,213,172,171,255,213,170,169,255, -212,170,169,255,210,170,166,255,210,168,165,255,209,167,164,255,209,166,162,255,208,165,160,255,208,164,159,255,207,162,157,255, -206,161,155,255,206,161,154,255,205,159,152,255,204,158,150,255,204,157,149,255,202,155,147,255,202,155,145,255,202,153,143,255, -201,152,140,255,200,151,138,255,199,149,136,255,198,148,134,255,197,147,132,255,197,145,129,255,196,144,127,255,195,142,124,255, -194,140,121,255,193,139,119,255,192,137,116,255,192,136,113,255,190,134,111,255,190,133,108,255,188,131,106,255,187,131,106,255, -186,130,105,255,185,129,105,255,184,128,104,255,182,127,103,255,180,125,101,255,178,124,101,255,176,122, 99,255,173,120, 97,255, -171,118, 96,255,167,116, 94,255,165,115, 93,255,162,112, 90,255,159,111, 89,255,157,109, 88,255,153,106, 86,255,149,104, 84,255, -144, 99, 80,255,137, 94, 76,255,131, 90, 73,255,125, 86, 69,255,121, 83, 67,255,118, 82, 64,255,115, 79, 63,255,111, 75, 60,255, -107, 73, 58,255,103, 70, 56,255,100, 68, 54,255, 97, 66, 52,255, 96, 65, 52,255, 96, 65, 52,255, 95, 64, 51,255, 93, 63, 50,255, - 91, 62, 49,255, 87, 59, 46,255, 80, 55, 44,255, 35, 26, 22,255, 0, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,143,124,125,255,220,182,185,255,217,181,182,255,218,180,183,255,218,180,182,255,216,178,180,255,217,177,179,255, -216,178,179,255,216,176,177,255,215,176,176,255,215,175,175,255,213,173,173,255,214,173,172,255,213,172,171,255,213,170,169,255, -212,171,169,255,211,169,166,255,210,168,165,255,210,168,164,255,209,166,162,255,208,165,161,255,208,164,160,255,207,162,158,255, -206,161,156,255,206,161,154,255,206,159,152,255,205,159,151,255,204,158,150,255,203,156,147,255,202,155,146,255,202,154,144,255, -201,152,141,255,200,151,139,255,200,150,137,255,198,148,135,255,197,147,132,255,197,146,131,255,196,144,128,255,196,143,125,255, -195,141,123,255,193,139,120,255,193,138,117,255,192,136,115,255,191,135,112,255,190,134,109,255,189,132,107,255,188,131,106,255, -187,131,106,255,185,129,104,255,184,128,104,255,182,127,103,255,180,125,101,255,178,124,100,255,175,122, 99,255,172,119, 96,255, -169,117, 95,255,165,115, 93,255,162,113, 91,255,160,111, 89,255,157,109, 88,255,153,106, 85,255,150,104, 84,255,145,100, 80,255, -137, 95, 76,255,131, 90, 73,255,125, 86, 69,255,121, 83, 66,255,118, 81, 64,255,114, 78, 62,255,110, 75, 60,255,107, 72, 57,255, -103, 70, 56,255,100, 68, 53,255, 97, 66, 52,255, 96, 65, 51,255, 96, 65, 52,255, 95, 64, 51,255, 93, 63, 50,255, 92, 62, 49,255, - 88, 59, 46,255, 84, 58, 46,255, 41, 32, 28,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,143,124,125,255,220,182,185,255,217,180,183,255,218,180,182,255,217,179,181,255,216,178,180,255,216,177,179,255, -215,178,179,255,216,176,177,255,215,176,176,255,214,175,176,255,214,174,174,255,214,173,172,255,212,171,170,255,213,171,170,255, -212,170,169,255,210,169,168,255,211,168,165,255,210,167,164,255,210,166,162,255,209,165,161,255,208,164,160,255,208,163,158,255, -207,162,156,255,206,161,154,255,205,160,153,255,205,159,151,255,205,158,150,255,203,156,148,255,202,155,146,255,203,154,144,255, -201,153,143,255,201,152,140,255,200,151,138,255,199,149,136,255,198,148,134,255,197,146,131,255,196,145,129,255,196,143,127,255, -196,142,125,255,195,141,122,255,194,139,120,255,193,138,117,255,192,136,114,255,191,134,112,255,190,133,109,255,188,132,107,255, -187,131,106,255,185,129,104,255,184,128,104,255,182,127,103,255,180,125,101,255,177,123,100,255,174,121, 98,255,170,118, 95,255, -167,116, 94,255,163,114, 92,255,161,112, 90,255,158,109, 88,255,154,107, 85,255,150,104, 84,255,145,100, 80,255,138, 95, 76,255, -131, 90, 72,255,125, 86, 69,255,121, 83, 66,255,117, 80, 64,255,113, 78, 62,255,110, 75, 59,255,106, 72, 57,255,102, 70, 55,255, -100, 68, 53,255, 97, 66, 52,255, 96, 65, 51,255, 96, 65, 52,255, 95, 64, 51,255, 94, 63, 50,255, 92, 62, 49,255, 88, 60, 47,255, - 81, 58, 46,255, 28, 23, 20,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,143,124,126,255,220,182,185,255,217,180,183,255,218,180,182,255,217,179,181,255,217,178,180,255,216,177,179,255, -215,177,179,255,215,176,177,255,215,176,176,255,214,175,175,255,214,174,174,255,213,173,172,255,213,172,171,255,212,171,170,255, -212,170,169,255,211,169,167,255,210,168,166,255,210,167,165,255,210,166,162,255,209,165,161,255,208,164,160,255,207,163,158,255, -207,162,157,255,207,162,155,255,205,160,153,255,205,160,152,255,205,159,151,255,203,157,149,255,203,156,147,255,203,155,145,255, -202,153,143,255,201,152,141,255,200,151,139,255,199,150,137,255,198,149,135,255,198,147,133,255,197,146,131,255,196,145,129,255, -195,143,127,255,195,142,124,255,194,141,122,255,194,139,119,255,192,137,116,255,192,136,113,255,191,133,110,255,189,132,107,255, -187,131,106,255,186,130,105,255,184,128,104,255,182,127,103,255,179,125,101,255,175,122, 99,255,171,119, 96,255,167,116, 94,255, -164,114, 92,255,161,112, 90,255,158,109, 88,255,154,107, 86,255,150,104, 84,255,145,100, 80,255,137, 95, 76,255,130, 89, 72,255, -125, 86, 69,255,120, 83, 66,255,116, 80, 63,255,113, 77, 62,255,109, 74, 59,255,105, 71, 56,255,102, 69, 55,255, 99, 67, 53,255, - 98, 66, 53,255, 96, 65, 51,255, 96, 65, 52,255, 96, 65, 51,255, 94, 64, 50,255, 92, 62, 49,255, 89, 60, 47,255, 78, 57, 46,255, - 22, 17, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,143,123,125,255,219,182,184,255,218,179,182,255,217,179,182,255,216,178,181,255,217,178,179,255,216,178,179,255, -215,177,178,255,215,175,176,255,214,176,176,255,215,175,175,255,213,173,173,255,214,173,172,255,213,173,172,255,212,171,170,255, -211,170,169,255,211,169,167,255,210,168,166,255,211,168,165,255,209,166,163,255,208,165,162,255,209,165,161,255,207,163,158,255, -208,163,158,255,207,162,157,255,206,161,154,255,205,160,153,255,205,160,152,255,204,158,150,255,203,156,148,255,202,156,147,255, -203,154,144,255,202,153,143,255,201,152,141,255,200,151,139,255,199,150,137,255,199,149,136,255,198,147,134,255,197,146,131,255, -197,145,129,255,195,143,127,255,195,142,124,255,194,140,121,255,192,138,118,255,192,136,115,255,191,135,111,255,189,132,108,255, -188,131,107,255,186,130,105,255,184,128,103,255,180,126,102,255,177,123,100,255,173,120, 97,255,168,117, 95,255,164,114, 92,255, -161,112, 90,255,157,109, 88,255,154,107, 86,255,150,104, 84,255,144, 99, 80,255,137, 95, 76,255,130, 90, 72,255,124, 85, 68,255, -120, 82, 65,255,115, 78, 63,255,112, 77, 61,255,108, 74, 59,255,104, 71, 56,255,101, 69, 55,255, 98, 67, 53,255, 98, 67, 53,255, - 97, 66, 52,255, 96, 65, 52,255, 96, 65, 51,255, 95, 64, 51,255, 92, 62, 49,255, 89, 60, 47,255, 77, 55, 45,255, 13, 12, 12,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,143,123,125,255,219,181,184,255,217,179,182,255,217,179,181,255,216,178,180,255,217,177,179,255,216,177,179,255, -216,177,178,255,215,175,176,255,214,175,175,255,215,175,175,255,213,173,173,255,214,173,173,255,213,172,172,255,212,171,170,255, -212,171,169,255,211,169,167,255,211,169,166,255,211,168,165,255,210,167,164,255,209,166,162,255,208,165,161,255,209,164,160,255, -207,163,158,255,207,163,157,255,206,162,156,255,206,161,154,255,205,160,153,255,204,159,151,255,204,158,150,255,203,156,148,255, -203,156,147,255,203,154,145,255,202,153,143,255,201,153,141,255,201,151,140,255,200,150,138,255,199,149,137,255,198,148,134,255, -198,147,132,255,197,145,129,255,195,143,126,255,194,141,123,255,193,139,119,255,192,137,116,255,191,134,112,255,189,133,108,255, -188,131,107,255,186,129,105,255,182,128,103,255,179,125,101,255,174,121, 98,255,169,118, 95,255,164,114, 92,255,160,112, 90,255, -157,109, 88,255,154,106, 86,255,150,103, 83,255,144,100, 80,255,137, 94, 76,255,129, 89, 71,255,124, 85, 68,255,119, 81, 65,255, -115, 78, 62,255,111, 76, 60,255,107, 73, 58,255,103, 70, 56,255,101, 68, 54,255, 98, 66, 53,255, 97, 66, 52,255, 97, 66, 52,255, - 96, 65, 52,255, 95, 64, 51,255, 94, 64, 50,255, 92, 62, 49,255, 88, 60, 48,255, 67, 49, 42,255, 2, 2, 2,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,143,123,124,255,219,181,183,255,217,179,181,255,216,178,180,255,217,177,180,255,216,177,178,255,216,177,178,255, -216,176,177,255,214,176,176,255,215,175,175,255,214,174,174,255,213,174,173,255,214,173,172,255,213,171,172,255,212,171,170,255, -212,171,169,255,212,169,167,255,211,169,167,255,210,168,166,255,211,167,164,255,209,167,164,255,209,166,162,255,208,165,161,255, -208,164,160,255,207,163,158,255,207,162,157,255,206,162,156,255,206,161,154,255,205,160,153,255,205,159,152,255,204,158,150,255, -204,157,149,255,203,156,147,255,203,155,146,255,202,155,145,255,201,154,143,255,201,152,141,255,200,151,139,255,200,150,137,255, -198,148,134,255,197,146,131,255,196,144,128,255,195,142,124,255,193,140,120,255,192,138,116,255,190,135,113,255,189,133,109,255, -188,131,106,255,185,129,105,255,181,126,102,255,176,122, 99,255,170,118, 96,255,165,115, 92,255,160,111, 90,255,156,109, 88,255, -153,106, 85,255,148,102, 83,255,143, 99, 79,255,136, 94, 75,255,129, 88, 71,255,123, 84, 68,255,118, 81, 64,255,114, 78, 62,255, -110, 75, 60,255,106, 72, 57,255,103, 70, 55,255,100, 69, 54,255, 98, 67, 53,255, 98, 67, 53,255, 97, 66, 52,255, 96, 65, 52,255, - 96, 65, 51,255, 94, 64, 50,255, 92, 62, 49,255, 90, 62, 49,255, 50, 39, 33,255, 3, 3, 2,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,143,123,124,255,218,180,182,255,217,178,180,255,217,177,180,255,216,178,179,255,215,176,178,255,216,176,177,255, -215,175,176,255,215,175,175,255,214,175,175,255,213,174,174,255,214,173,172,255,214,173,172,255,213,172,171,255,212,171,170,255, -211,171,169,255,212,170,168,255,211,169,167,255,210,168,167,255,210,168,165,255,209,167,164,255,210,167,164,255,209,166,162,255, -208,165,161,255,209,165,160,255,207,163,158,255,208,163,158,255,207,162,157,255,206,161,155,255,205,161,154,255,206,160,153,255, -205,159,152,255,205,158,151,255,204,157,149,255,203,156,147,255,203,155,146,255,202,154,144,255,201,152,142,255,200,151,139,255, -199,149,136,255,198,147,133,255,197,145,129,255,196,143,126,255,194,140,122,255,193,138,118,255,192,136,113,255,190,133,108,255, -187,130,106,255,183,127,103,255,177,123,100,255,171,119, 96,255,165,114, 92,255,160,111, 90,255,156,108, 88,255,152,105, 85,255, -147,102, 83,255,141, 98, 79,255,135, 93, 75,255,128, 88, 71,255,122, 84, 67,255,117, 80, 64,255,113, 77, 62,255,110, 75, 60,255, -105, 72, 57,255,102, 69, 55,255,100, 68, 54,255, 98, 66, 52,255, 98, 67, 53,255, 97, 66, 52,255, 96, 66, 52,255, 95, 65, 51,255, - 94, 63, 50,255, 92, 62, 49,255, 89, 61, 49,255, 31, 25, 22,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,142,122,123,255,218,179,181,255,216,177,179,255,216,177,178,255,215,176,177,255,215,176,177,255,214,175,176,255, -215,175,175,255,214,174,174,255,213,174,174,255,214,173,173,255,213,172,172,255,213,173,172,255,212,172,170,255,213,172,170,255, -212,171,170,255,211,171,169,255,212,170,167,255,211,169,167,255,210,168,166,255,211,169,166,255,210,168,165,255,210,168,164,255, -210,167,164,255,209,166,162,255,209,165,161,255,209,164,160,255,208,164,159,255,208,163,158,255,207,163,157,255,207,162,156,255, -206,161,155,255,206,161,153,255,205,159,152,255,205,158,150,255,204,157,149,255,203,155,146,255,202,154,144,255,201,152,141,255, -200,150,137,255,198,148,134,255,197,145,130,255,196,143,126,255,194,141,122,255,193,138,117,255,192,135,112,255,189,131,107,255, -185,129,105,255,179,124,101,255,172,119, 96,255,165,114, 92,255,160,111, 90,255,155,108, 87,255,152,105, 85,255,146,101, 82,255, -140, 97, 78,255,134, 92, 74,255,127, 88, 70,255,122, 83, 67,255,117, 80, 64,255,113, 77, 62,255,109, 73, 59,255,105, 71, 56,255, -101, 69, 55,255, 99, 68, 54,255, 98, 67, 52,255, 97, 67, 53,255, 97, 66, 52,255, 96, 65, 52,255, 95, 65, 51,255, 94, 64, 50,255, - 92, 62, 49,255, 76, 53, 43,255, 24, 18, 16,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,142,121,122,255,217,178,178,255,215,176,177,255,215,176,176,255,214,175,175,255,214,175,175,255,214,174,174,255, -214,174,174,255,214,174,173,255,213,173,172,255,213,172,172,255,213,172,172,255,212,172,172,255,213,172,171,255,212,171,170,255, -213,171,170,255,212,171,169,255,212,171,169,255,211,170,168,255,211,170,168,255,211,169,168,255,211,170,168,255,211,169,167,255, -211,169,167,255,210,168,165,255,210,167,165,255,210,167,163,255,209,167,163,255,209,166,162,255,209,165,160,255,208,164,159,255, -207,164,158,255,207,163,156,255,206,161,155,255,205,160,153,255,205,159,151,255,204,157,148,255,202,155,146,255,201,153,142,255, -200,151,138,255,199,148,135,255,197,146,131,255,195,144,127,255,194,141,121,255,192,138,116,255,191,134,110,255,187,130,105,255, -180,126,102,255,172,120, 97,255,165,114, 92,255,159,110, 89,255,155,107, 87,255,150,104, 84,255,145,100, 81,255,140, 97, 77,255, -133, 91, 73,255,127, 87, 70,255,120, 83, 66,255,116, 79, 63,255,112, 76, 61,255,107, 73, 58,255,104, 70, 56,255,101, 69, 55,255, -100, 68, 54,255, 98, 67, 53,255, 98, 66, 53,255, 97, 66, 52,255, 96, 65, 52,255, 95, 64, 51,255, 94, 64, 50,255, 91, 61, 48,255, - 57, 40, 33,255, 9, 7, 6,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,141,121,121,255,216,175,176,255,213,174,174,255,213,173,174,255,213,173,173,255,213,173,173,255,214,174,172,255, -213,173,172,255,212,172,171,255,212,172,171,255,213,172,171,255,213,171,170,255,213,172,171,255,213,171,171,255,212,172,172,255, -213,173,172,255,213,172,171,255,213,172,171,255,213,172,171,255,213,172,171,255,213,172,170,255,213,172,170,255,213,172,170,255, -213,171,170,255,213,171,169,255,212,171,168,255,212,170,167,255,211,169,166,255,211,168,166,255,210,167,164,255,210,167,163,255, -209,165,161,255,208,164,159,255,208,163,157,255,206,161,155,255,205,159,152,255,205,158,150,255,203,156,147,255,202,153,143,255, -201,152,140,255,199,149,136,255,198,146,131,255,197,144,127,255,194,140,121,255,192,137,115,255,188,131,107,255,182,127,103,255, -172,120, 98,255,164,114, 92,255,158,109, 89,255,154,107, 86,255,149,104, 83,255,144,100, 80,255,138, 95, 77,255,132, 90, 73,255, -125, 86, 69,255,120, 82, 66,255,115, 79, 63,255,111, 75, 60,255,107, 73, 58,255,103, 70, 56,255,101, 69, 54,255,100, 68, 54,255, - 97, 66, 52,255, 97, 66, 53,255, 96, 65, 52,255, 96, 65, 52,255, 95, 64, 51,255, 94, 64, 50,255, 88, 59, 47,255, 42, 30, 25,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,140,119,119,255,213,174,173,255,212,172,172,255,212,172,172,255,212,172,171,255,212,172,171,255,212,172,171,255, -212,172,171,255,212,171,171,255,213,171,170,255,213,171,170,255,212,172,171,255,213,172,171,255,212,172,171,255,213,172,172,255, -213,173,173,255,214,173,173,255,214,173,173,255,213,173,173,255,214,173,173,255,214,173,173,255,214,174,173,255,214,174,173,255, -214,173,173,255,214,173,172,255,213,172,171,255,213,172,171,255,212,171,170,255,212,170,168,255,211,169,167,255,211,168,166,255, -210,167,164,255,209,165,161,255,208,164,159,255,207,162,157,255,206,161,154,255,205,159,151,255,204,157,148,255,202,154,144,255, -201,152,140,255,199,149,136,255,198,146,131,255,196,143,125,255,194,139,119,255,190,134,110,255,184,128,104,255,173,121, 98,255, -164,114, 92,255,158,109, 89,255,153,106, 86,255,149,103, 83,255,143, 99, 79,255,137, 94, 76,255,131, 90, 72,255,125, 86, 68,255, -119, 82, 65,255,114, 78, 62,255,110, 75, 60,255,106, 72, 57,255,103, 70, 55,255,100, 68, 54,255, 99, 68, 54,255, 97, 67, 52,255, - 97, 66, 53,255, 96, 65, 52,255, 96, 65, 52,255, 95, 64, 51,255, 93, 63, 49,255, 75, 51, 41,255, 28, 20, 18,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,139,118,117,255,213,171,169,255,212,170,169,255,212,170,169,255,212,170,169,255,212,171,169,255,212,171,169,255, -211,171,169,255,212,171,170,255,212,171,170,255,212,171,170,255,213,172,171,255,212,172,172,255,213,173,172,255,214,173,173,255, -213,174,174,255,214,174,174,255,214,175,175,255,214,175,175,255,214,175,176,255,215,175,176,255,215,176,177,255,215,176,177,255, -215,176,176,255,215,175,176,255,215,175,175,255,214,174,173,255,213,173,173,255,213,172,171,255,213,171,170,255,212,169,167,255, -211,168,166,255,210,167,163,255,209,165,161,255,207,163,158,255,207,161,155,255,206,160,152,255,204,157,149,255,203,154,145,255, -201,152,140,255,199,149,136,255,198,146,131,255,195,141,124,255,192,136,114,255,185,129,104,255,174,121, 98,255,164,114, 92,255, -157,109, 88,255,153,106, 85,255,148,102, 82,255,141, 97, 79,255,136, 93, 75,255,129, 89, 72,255,124, 85, 68,255,118, 81, 65,255, -113, 77, 62,255,109, 74, 60,255,105, 71, 57,255,102, 69, 55,255,100, 68, 54,255, 99, 67, 53,255, 98, 67, 53,255, 97, 66, 53,255, - 96, 65, 52,255, 96, 65, 52,255, 95, 65, 51,255, 93, 63, 50,255, 58, 41, 34,255, 8, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,138,116,114,255,211,168,165,255,210,168,164,255,210,168,165,255,210,168,165,255,210,168,165,255,210,169,167,255, -211,169,167,255,211,170,168,255,211,170,169,255,212,171,170,255,213,172,172,255,212,172,172,255,213,173,174,255,214,175,175,255, -215,175,176,255,215,176,177,255,216,177,177,255,216,177,178,255,217,178,179,255,217,178,180,255,217,178,180,255,217,178,180,255, -217,178,180,255,217,178,179,255,216,177,179,255,216,176,177,255,215,175,175,255,214,173,174,255,214,172,172,255,213,171,170,255, -211,169,167,255,211,168,165,255,210,166,162,255,208,164,159,255,207,162,155,255,206,160,152,255,204,157,148,255,203,155,145,255, -201,152,140,255,199,149,135,255,196,145,128,255,193,138,118,255,186,130,106,255,174,121, 98,255,163,113, 92,255,157,108, 87,255, -151,105, 85,255,146,101, 81,255,140, 97, 78,255,134, 92, 74,255,129, 88, 71,255,123, 84, 67,255,117, 80, 64,255,113, 77, 61,255, -108, 73, 58,255,105, 71, 57,255,101, 69, 54,255,100, 68, 54,255, 99, 67, 53,255, 97, 67, 52,255, 97, 66, 53,255, 97, 65, 52,255, - 95, 65, 52,255, 95, 64, 51,255, 92, 62, 49,255, 40, 29, 25,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,137,114,112,255,209,164,160,255,208,164,160,255,208,165,160,255,208,165,161,255,209,167,162,255,209,167,163,255, -210,168,164,255,210,168,166,255,211,170,168,255,211,170,169,255,212,172,171,255,213,173,172,255,213,173,174,255,214,175,175,255, -215,176,177,255,216,177,178,255,216,178,179,255,217,179,181,255,217,179,181,255,218,180,183,255,218,180,183,255,218,180,183,255, -218,180,183,255,218,180,182,255,218,179,181,255,217,177,180,255,216,176,178,255,215,175,176,255,214,173,173,255,213,172,171,255, -212,170,169,255,211,169,165,255,210,167,163,255,208,165,159,255,207,162,156,255,206,160,153,255,204,157,148,255,203,154,145,255, -201,151,139,255,198,147,132,255,195,141,123,255,187,131,108,255,174,121, 98,255,163,113, 92,255,156,108, 87,255,150,104, 84,255, -145,100, 81,255,139, 96, 77,255,133, 92, 73,255,128, 88, 70,255,122, 84, 67,255,116, 79, 64,255,112, 76, 61,255,107, 72, 58,255, -103, 70, 56,255,101, 69, 55,255,100, 68, 54,255, 98, 67, 53,255, 97, 66, 53,255, 97, 66, 52,255, 96, 65, 51,255, 96, 65, 52,255, - 95, 65, 51,255, 74, 51, 42,255, 16, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 60, 60,255,136,112,108,255,206,160,154,255,206,161,154,255,206,161,155,255,206,161,156,255,206,162,158,255,207,164,159,255, -208,165,161,255,209,166,163,255,209,168,165,255,211,169,167,255,212,170,170,255,212,172,172,255,213,174,175,255,215,176,177,255, -215,177,179,255,217,178,180,255,217,179,181,255,218,180,184,255,218,181,185,255,219,182,185,255,219,182,186,255,219,182,186,255, -219,182,186,255,219,182,184,255,218,180,183,255,218,179,181,255,217,177,179,255,215,176,177,255,215,174,174,255,214,173,172,255, -212,171,169,255,211,169,166,255,210,167,163,255,208,164,160,255,207,162,156,255,206,160,153,255,204,157,148,255,202,154,144,255, -200,150,137,255,196,144,127,255,189,133,111,255,175,122, 99,255,163,113, 91,255,155,108, 87,255,150,104, 83,255,143, 99, 80,255, -138, 95, 77,255,132, 90, 73,255,126, 86, 69,255,121, 83, 67,255,115, 79, 63,255,110, 75, 60,255,106, 72, 57,255,103, 70, 56,255, -100, 68, 54,255, 99, 68, 54,255, 98, 67, 53,255, 97, 66, 53,255, 97, 65, 52,255, 96, 66, 51,255, 96, 65, 51,255, 94, 65, 51,255, - 43, 31, 26,255, 4, 3, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 60, 61, 61,255,122, 99, 93,255,192,144,134,255,201,154,145,255,203,156,148,255,204,157,150,255,204,158,151,255,205,160,153,255, -205,161,156,255,207,163,159,255,208,165,161,255,209,167,164,255,211,169,167,255,212,171,170,255,213,173,173,255,215,175,176,255, -216,178,179,255,217,180,182,255,218,181,183,255,219,182,185,255,220,183,187,255,220,184,188,255,221,184,189,255,221,184,189,255, -220,184,187,255,219,183,186,255,219,182,185,255,218,180,183,255,217,179,180,255,216,177,177,255,215,175,175,255,214,173,172,255, -212,171,169,255,211,169,167,255,210,167,163,255,208,164,160,255,207,162,156,255,206,160,152,255,204,157,148,255,201,153,141,255, -197,147,131,255,190,135,113,255,176,123, 99,255,163,113, 91,255,154,107, 86,255,148,102, 83,255,142, 98, 79,255,137, 94, 75,255, -131, 90, 72,255,126, 86, 69,255,120, 82, 66,255,114, 78, 63,255,110, 74, 60,255,105, 71, 57,255,102, 70, 56,255,100, 68, 54,255, - 99, 67, 53,255, 98, 66, 52,255, 97, 66, 52,255, 96, 65, 52,255, 97, 66, 51,255, 95, 64, 52,255, 83, 59, 47,255, 16, 12, 11,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 26, 27, 28,255, 35, 26, 23,255,108, 80, 72,255,163,122,110,255,199,149,136,255,201,152,142,255,202,155,145,255, -202,155,147,255,204,158,151,255,205,161,155,255,207,163,158,255,209,166,163,255,211,169,166,255,212,172,171,255,214,175,175,255, -216,177,179,255,217,180,182,255,219,182,185,255,219,183,187,255,220,184,188,255,221,185,189,255,220,185,190,255,220,185,190,255, -221,184,188,255,220,184,187,255,219,183,185,255,219,181,183,255,218,179,181,255,216,177,178,255,215,175,175,255,214,173,172,255, -212,171,169,255,212,169,166,255,210,167,162,255,208,165,159,255,207,162,156,255,205,158,151,255,203,155,145,255,199,149,135,255, -191,137,116,255,178,124,100,255,163,113, 91,255,154,107, 86,255,147,102, 82,255,141, 97, 78,255,135, 93, 75,255,130, 89, 71,255, -125, 85, 68,255,119, 81, 65,255,113, 78, 62,255,108, 74, 59,255,104, 72, 56,255,102, 69, 55,255,100, 68, 54,255, 98, 67, 53,255, - 97, 66, 52,255, 97, 66, 52,255, 96, 65, 51,255, 96, 66, 51,255, 93, 64, 52,255, 57, 40, 33,255, 7, 6, 5,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 61,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 13, 10, 9,255, 44, 33, 29,255,125, 93, 81,255,189,139,124,255, -199,149,134,255,200,152,140,255,201,153,143,255,204,158,150,255,206,160,154,255,208,164,160,255,210,168,166,255,212,172,172,255, -215,176,177,255,217,179,181,255,218,181,185,255,219,183,187,255,221,185,189,255,220,185,190,255,221,185,190,255,221,185,189,255, -221,184,187,255,220,183,186,255,219,182,185,255,218,180,183,255,218,179,180,255,216,176,177,255,215,175,175,255,214,173,172,255, -212,170,168,255,211,169,165,255,210,167,162,255,208,163,158,255,207,161,154,255,204,157,149,255,201,152,140,255,193,140,120,255, -178,124,101,255,163,113, 91,255,153,106, 86,255,146,101, 81,255,140, 96, 78,255,134, 92, 74,255,129, 88, 71,255,123, 84, 68,255, -118, 80, 65,255,112, 76, 61,255,107, 73, 58,255,104, 70, 56,255,101, 69, 55,255, 99, 68, 54,255, 98, 67, 53,255, 97, 67, 53,255, - 97, 66, 52,255, 96, 66, 52,255, 96, 65, 52,255, 85, 60, 48,255, 22, 16, 13,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 70, 50, 43,255,148,108, 94,255,183,135,120,255,194,144,131,255,200,151,141,255,203,157,149,255,206,162,156,255,208,166,163,255, -212,172,172,255,215,176,178,255,217,179,182,255,218,182,185,255,219,183,187,255,221,183,188,255,220,183,187,255,220,183,186,255, -219,183,186,255,219,182,184,255,218,180,183,255,218,179,181,255,217,178,179,255,216,176,176,255,215,174,174,255,214,172,171,255, -212,170,168,255,211,167,164,255,210,166,161,255,208,163,157,255,205,160,152,255,203,154,144,255,195,143,125,255,180,126,102,255, -163,113, 91,255,153,106, 85,255,145,100, 81,255,139, 96, 77,255,133, 92, 73,255,127, 88, 70,255,123, 84, 67,255,116, 80, 64,255, -111, 76, 61,255,107, 72, 57,255,103, 70, 56,255,100, 69, 55,255, 99, 67, 53,255, 98, 66, 52,255, 97, 66, 52,255, 96, 65, 51,255, - 96, 66, 52,255, 94, 63, 51,255, 68, 49, 41,255, 5, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 22, 16, 14,255, 73, 53, 46,255,107, 79, 69,255,153,113,101,255,193,145,132,255,203,154,144,255, -207,162,156,255,210,169,166,255,214,175,175,255,216,178,179,255,217,179,182,255,218,180,183,255,219,180,182,255,219,180,182,255, -218,180,181,255,218,180,181,255,218,179,180,255,217,178,179,255,216,176,177,255,215,175,175,255,214,173,172,255,213,171,169,255, -212,169,166,255,210,167,163,255,209,164,158,255,207,161,154,255,204,156,147,255,197,145,129,255,181,127,104,255,163,113, 91,255, -151,105, 85,255,144, 99, 80,255,138, 95, 76,255,132, 91, 73,255,127, 87, 69,255,122, 83, 67,255,115, 79, 63,255,110, 75, 60,255, -105, 72, 57,255,102, 69, 55,255,100, 69, 54,255, 98, 67, 53,255, 97, 66, 52,255, 97, 66, 52,255, 96, 65, 52,255, 96, 65, 52,255, - 85, 59, 49,255, 36, 26, 22,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 10, 7, 6,255, 24, 18, 16,255, 61, 46, 41,255, -146,111,101,255,194,149,139,255,207,162,157,255,210,168,167,255,213,173,172,255,214,175,174,255,215,174,174,255,215,175,176,255, -216,176,177,255,217,177,177,255,217,177,178,255,216,176,176,255,216,175,175,255,215,174,173,255,213,172,170,255,212,170,167,255, -211,167,164,255,209,166,160,255,208,162,156,255,205,159,150,255,199,148,134,255,183,128,106,255,163,113, 91,255,152,104, 84,255, -143, 99, 79,255,137, 94, 76,255,131, 90, 72,255,126, 86, 69,255,120, 82, 66,255,115, 78, 63,255,109, 74, 59,255,104, 71, 56,255, -101, 69, 55,255,100, 68, 54,255, 98, 67, 53,255, 98, 66, 53,255, 97, 66, 52,255, 96, 65, 52,255, 97, 65, 52,255, 64, 47, 39,255, - 7, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 6, 6, 6,255, 93, 72, 66,255,189,146,139,255,207,162,156,255,208,165,161,255,211,167,165,255,212,170,168,255, -214,172,171,255,215,174,173,255,215,174,174,255,215,174,174,255,214,173,172,255,213,172,170,255,212,170,167,255,212,168,165,255, -210,166,162,255,209,163,158,255,207,161,153,255,200,151,139,255,185,131,109,255,163,113, 92,255,150,104, 84,255,142, 98, 79,255, -136, 93, 75,255,130, 89, 71,255,124, 86, 69,255,119, 81, 65,255,113, 77, 62,255,108, 73, 58,255,104, 70, 56,255,101, 69, 55,255, -100, 68, 54,255, 98, 66, 52,255, 97, 66, 52,255, 96, 65, 52,255, 95, 65, 52,255, 88, 61, 49,255, 36, 28, 24,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 43, 32, 28,255,191,141,126,255,202,154,144,255,206,160,152,255,209,165,160,255, -211,169,165,255,213,171,168,255,214,172,169,255,214,172,170,255,213,171,168,255,212,169,167,255,211,168,164,255,210,166,161,255, -209,164,159,255,207,162,155,255,202,154,143,255,187,133,113,255,165,114, 92,255,150,104, 84,255,142, 98, 79,255,135, 93, 75,255, -129, 89, 71,255,124, 85, 68,255,118, 81, 64,255,112, 76, 61,255,107, 72, 58,255,103, 70, 55,255,100, 68, 54,255, 99, 68, 54,255, - 97, 66, 53,255, 97, 66, 52,255, 96, 65, 51,255, 94, 65, 52,255, 62, 43, 35,255, 16, 12, 11,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 84, 59, 49,255,196,142,122,255,200,151,138,255,206,159,152,255, -209,164,159,255,211,167,163,255,212,169,165,255,212,170,166,255,212,168,164,255,211,166,162,255,209,165,159,255,209,164,158,255, -208,163,157,255,204,157,148,255,189,135,116,255,166,115, 93,255,150,104, 83,255,141, 97, 78,255,134, 92, 74,255,128, 88, 71,255, -123, 84, 67,255,116, 79, 63,255,111, 75, 60,255,105, 72, 57,255,102, 69, 55,255,100, 68, 54,255, 99, 67, 53,255, 97, 66, 52,255, - 97, 66, 52,255, 96, 65, 51,255, 92, 63, 50,255, 31, 23, 19,255, 2, 2, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 2, 2, 1,255,171,120, 98,255,197,143,125,255,203,154,143,255, -207,160,153,255,209,164,158,255,210,166,161,255,210,166,160,255,209,164,159,255,208,163,157,255,208,163,156,255,209,163,158,255, -205,160,152,255,193,141,123,255,167,116, 94,255,149,104, 83,255,140, 97, 77,255,133, 92, 73,255,128, 87, 70,255,122, 83, 67,255, -115, 78, 63,255,109, 74, 59,255,105, 71, 57,255,101, 69, 55,255,100, 68, 54,255, 98, 67, 53,255, 97, 66, 52,255, 96, 65, 51,255, - 94, 63, 51,255, 77, 54, 45,255, 11, 9, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 1,255,100, 70, 58,255,192,136,113,255,201,149,135,255, -205,156,146,255,207,161,152,255,208,161,154,255,208,161,154,255,207,160,152,255,208,161,154,255,209,164,159,255,208,163,157,255, -196,145,130,255,171,119, 96,255,150,104, 84,255,139, 97, 77,255,132, 91, 73,255,126, 87, 70,255,120, 82, 66,255,114, 78, 62,255, -108, 73, 58,255,103, 70, 56,255,101, 69, 54,255, 99, 67, 53,255, 98, 67, 53,255, 97, 66, 52,255, 96, 65, 51,255, 88, 61, 49,255, - 39, 28, 23,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 64, 45, 37,255,185,129,106,255,198,145,127,255, -202,152,140,255,205,156,146,255,206,157,147,255,206,158,147,255,207,160,152,255,209,165,159,255,209,166,161,255,200,151,139,255, -174,121, 99,255,151,105, 84,255,139, 96, 77,255,131, 90, 72,255,125, 86, 69,255,119, 81, 65,255,112, 76, 61,255,107, 73, 58,255, -103, 70, 56,255,100, 68, 54,255, 99, 67, 53,255, 98, 67, 53,255, 96, 65, 52,255, 95, 65, 51,255, 75, 53, 44,255, 7, 6, 5,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 32, 23, 19,255,168,118, 95,255,194,139,118,255, -200,148,132,255,202,151,139,255,203,154,142,255,206,158,147,255,209,164,158,255,211,167,164,255,205,158,149,255,179,126,105,255, -154,106, 86,255,139, 96, 78,255,131, 90, 72,255,124, 86, 68,255,117, 80, 64,255,111, 75, 60,255,105, 71, 57,255,102, 69, 55,255, -100, 68, 54,255, 98, 67, 53,255, 97, 66, 52,255, 96, 65, 51,255, 87, 60, 47,255, 42, 30, 25,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 13, 20, 26,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 13, 10, 9,255,152,107, 86,255,190,134,111,255, -198,144,126,255,200,148,134,255,203,153,142,255,208,162,154,255,212,169,166,255,209,165,160,255,186,134,116,255,157,109, 88,255, -140, 97, 78,255,130, 90, 72,255,123, 85, 68,255,116, 79, 64,255,109, 74, 59,255,104, 71, 56,255,101, 69, 55,255, 99, 68, 54,255, - 98, 67, 53,255, 97, 66, 52,255, 95, 64, 51,255, 64, 44, 36,255, 17, 13, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 12, 20, 25,255,102,160,205,255, 52, 82,105,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,129, 91, 74,255,188,131,106,255, -196,140,119,255,200,148,133,255,206,158,148,255,211,167,163,255,213,172,170,255,195,144,129,255,163,113, 90,255,142, 98, 79,255, -130, 90, 72,255,122, 84, 67,255,115, 78, 62,255,108, 73, 58,255,103, 70, 56,255,101, 69, 55,255, 99, 67, 54,255, 98, 67, 53,255, - 96, 66, 52,255, 93, 63, 50,255, 34, 24, 20,255, 2, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 85,133,171,255,118,186,238,255,115,182,232,255, 34, 53, 68,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 67, 48, 39,255,183,128,104,255, -194,137,115,255,202,151,138,255,210,164,158,255,215,173,172,255,202,154,144,255,171,118, 96,255,145,100, 81,255,131, 90, 72,255, -122, 83, 67,255,114, 77, 62,255,107, 72, 57,255,102, 70, 55,255,101, 69, 54,255, 99, 67, 53,255, 98, 66, 52,255, 94, 64, 51,255, - 72, 49, 40,255, 13, 9, 8,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 64,101,129,255,118,186,238,255,118,185,237,255,118,186,238,255,102,161,206,255, 14, 22, 28,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 19, 14, 12,255,178,124,101,255, -193,137,117,255,205,157,147,255,214,172,172,255,209,165,161,255,179,127,107,255,150,104, 84,255,133, 91, 73,255,121, 83, 67,255, -113, 77, 61,255,106, 72, 57,255,102, 69, 55,255,101, 69, 54,255, 99, 67, 53,255, 98, 67, 52,255, 85, 58, 47,255, 33, 23, 18,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 52, 82,105,255,118,186,238,255,118,185,237,255,118,186,238,255,118,185,237,255,118,186,238,255, 88,139,178,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255,145,102, 83,255, -196,142,123,255,210,167,163,255,216,177,177,255,190,140,124,255,156,109, 87,255,135, 94, 75,255,121, 83, 67,255,112, 76, 61,255, -106, 72, 57,255,102, 69, 55,255,101, 69, 55,255, 99, 67, 53,255, 97, 66, 53,255, 55, 39, 33,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 27, 42, 54,255, -113,178,228,255,118,186,238,255,118,185,237,255,118,186,238,255,118,185,237,255,118,186,238,255,118,186,238,255, 78,123,158,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 87, 63, 52,255, -199,147,132,255,216,177,179,255,203,157,149,255,165,115, 92,255,139, 96, 77,255,122, 84, 67,255,111, 76, 61,255,106, 72, 57,255, -102, 70, 55,255,101, 69, 55,255, 95, 65, 52,255, 71, 50, 40,255, 17, 13, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 11, 17, 21,255,105,166,212,255, -118,186,238,255,118,186,238,255,118,186,238,255,118,186,238,255,118,185,237,255,118,186,238,255,118,186,238,255,117,184,235,255, - 35, 55, 71,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 25, 18, 16,255, -201,154,143,255,215,175,175,255,179,127,107,255,144, 99, 79,255,124, 85, 68,255,112, 77, 61,255,107, 73, 58,255,104, 70, 56,255, -101, 69, 55,255, 65, 45, 37,255, 24, 17, 14,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 4, 7, 8,255, 97,152,195,255,118,186,238,255, -118,185,237,255,118,186,238,255,118,186,238,255,118,185,237,255,118,186,238,255,118,186,238,255, 81,128,164,255, 32, 50, 64,255, - 7, 12, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 7, 5, 5,255, -187,149,145,255,201,153,143,255,155,107, 85,255,127, 87, 70,255,115, 78, 62,255,109, 74, 59,255,105, 72, 57,255, 71, 50, 42,255, - 8, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 1, 2,255, 79,124,159,255,118,185,237,255,118,186,238,255, -118,186,238,255,118,185,237,255,118,186,238,255,118,186,238,255, 93,146,187,255, 21, 33, 42,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 1, 0, 0,255, - 80, 63, 62,255,164,118,101,255,136, 95, 77,255,112, 78, 64,255, 90, 62, 51,255, 60, 43, 36,255, 14, 11, 10,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 50, 79,101,255,118,186,238,255,118,186,238,255,118,186,238,255, -118,186,238,255,111,174,223,255, 82,130,166,255, 28, 44, 57,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 3, 2, 2,255, 26, 19, 16,255, 32, 23, 20,255, 21, 16, 14,255, 5, 4, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 36, 57, 73,255,118,185,237,255,118,186,238,255,118,186,238,255,118,186,238,255, - 66,104,133,255, 23, 36, 46,255, 0, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 19, 31, 39,255,116,182,233,255,118,185,237,255,118,186,238,255, 74,116,148,255, 8, 12, 16,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 9, 15, 19,255,100,158,202,255,104,163,209,255, 70,111,142,255, 14, 23, 29,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 75,118,151,255, 52, 82,105,255, 15, 24, 31,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 12, 18, 23,255, 2, 3, 4,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, - 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, - 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 73, 77, 0, 0,156, 1, 0, 0,176,195,102, 7, 31, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88, 32,102, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 73, 77, 46,105, 46,116,119,105,115,116, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 58, 92,103,115,111, 99, 92,115, 99,117,108,112,116, 45,105, 99,111,110,115, 92, 46,105, 46, -116,119,105,115,116, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,197,102, 7, 0, 0, 0, 0,216, 72, 42, 0, - 0, 0, 0, 4, 0, 4, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,176,197,102, 7, 19, 0, 0, 0, - 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 56,198,102, 7, -160,214,102, 7, 68, 65, 84, 65, 0, 16, 0, 0, 56,198,102, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0, -160,214,102, 7, 0, 0, 0, 0, 1, 0, 0, 0, 62, 62, 62,255, 61, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, - 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 60, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, 61, 61, 61,255, - 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, - 61, 62, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 61, 62,255, - 61, 61, 62,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, - 61, 62, 62,255, 61, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 61, 62, 62,255, 61, 62, 62,255, 61, 61, 62,255, 61, 61, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, - 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 61, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 61, 61, 61,255, 61, 61, 61,255, 85, 81, 76,255,107, 99, 90,255,106, 98, 89,255,106, 98, 89,255, -105, 97, 88,255,105, 97, 88,255,105, 97, 87,255,105, 97, 87,255,105, 97, 87,255,104, 96, 87,255,104, 96, 87,255,103, 96, 86,255, -103, 96, 86,255,103, 96, 86,255,103, 96, 86,255,103, 96, 86,255,103, 96, 86,255,103, 96, 86,255,103, 95, 85,255,103, 95, 85,255, -102, 95, 85,255,102, 95, 84,255,102, 95, 85,255,102, 94, 84,255, 98, 90, 79,255, 91, 83, 71,255, 83, 75, 66,255, 77, 71, 63,255, - 73, 68, 62,255, 71, 66, 60,255, 70, 64, 59,255, 68, 64, 58,255, 68, 63, 58,255, 67, 62, 57,255, 66, 61, 56,255, 66, 60, 54,255, - 65, 60, 53,255, 67, 61, 52,255, 70, 65, 55,255, 75, 68, 57,255, 77, 71, 59,255, 77, 70, 59,255, 74, 67, 57,255, 70, 64, 55,255, - 69, 63, 55,255, 67, 61, 55,255, 66, 61, 54,255, 65, 60, 54,255, 65, 60, 54,255, 64, 60, 53,255, 63, 59, 54,255, 63, 58, 53,255, - 62, 58, 53,255, 62, 57, 52,255, 61, 57, 52,255, 60, 56, 51,255, 60, 56, 51,255, 60, 55, 50,255, 59, 54, 50,255, 58, 53, 49,255, - 57, 53, 48,255, 56, 52, 48,255, 55, 51, 47,255, 54, 50, 46,255, 53, 49, 45,255, 52, 48, 44,255, 51, 47, 42,255, 49, 46, 42,255, - 48, 45, 40,255, 47, 43, 39,255, 46, 43, 39,255, 46, 43, 38,255, 46, 43, 38,255, 48, 44, 39,255, 52, 48, 42,255, 59, 53, 46,255, - 64, 58, 50,255, 68, 62, 53,255, 69, 62, 54,255, 68, 62, 53,255, 68, 61, 53,255, 67, 61, 52,255, 67, 61, 52,255, 66, 60, 52,255, - 65, 59, 51,255, 65, 59, 50,255, 64, 58, 49,255, 63, 58, 50,255, 63, 57, 49,255, 62, 57, 48,255, 61, 55, 48,255, 60, 55, 47,255, - 59, 54, 47,255, 60, 57, 54,255, 62, 62, 62,255, 60, 61, 61,255,108,100, 91,255,151,136,117,255,149,134,116,255,149,133,115,255, -147,132,114,255,147,132,114,255,147,132,114,255,146,131,113,255,146,131,113,255,145,131,112,255,145,130,112,255,144,130,111,255, -144,130,111,255,144,130,111,255,145,130,111,255,145,130,111,255,145,130,111,255,145,130,111,255,144,129,111,255,144,129,111,255, -144,129,110,255,143,128,109,255,136,120,100,255,120,105, 84,255,104, 91, 72,255, 92, 81, 66,255, 85, 75, 63,255, 81, 71, 60,255, - 78, 69, 59,255, 76, 67, 57,255, 75, 66, 56,255, 73, 64, 54,255, 72, 63, 53,255, 72, 62, 50,255, 72, 61, 47,255, 75, 63, 46,255, - 83, 70, 51,255, 91, 78, 57,255, 97, 83, 61,255, 95, 82, 60,255, 90, 77, 56,255, 84, 71, 52,255, 80, 68, 51,255, 77, 66, 51,255, - 76, 65, 50,255, 74, 63, 50,255, 73, 63, 50,255, 72, 62, 49,255, 71, 61, 49,255, 71, 61, 49,255, 70, 60, 48,255, 69, 59, 47,255, - 68, 58, 47,255, 67, 58, 46,255, 65, 57, 45,255, 64, 55, 44,255, 64, 55, 43,255, 62, 53, 42,255, 61, 52, 41,255, 59, 51, 40,255, - 57, 49, 39,255, 56, 47, 37,255, 54, 46, 35,255, 51, 43, 33,255, 49, 42, 31,255, 47, 39, 29,255, 44, 37, 27,255, 41, 35, 25,255, - 39, 32, 22,255, 35, 29, 19,255, 33, 27, 17,255, 32, 26, 16,255, 31, 25, 16,255, 31, 25, 16,255, 31, 25, 16,255, 36, 28, 18,255, - 46, 38, 25,255, 60, 50, 34,255, 70, 59, 41,255, 75, 63, 45,255, 74, 62, 44,255, 73, 61, 43,255, 72, 60, 43,255, 71, 59, 42,255, - 69, 57, 41,255, 68, 57, 40,255, 66, 55, 39,255, 65, 54, 38,255, 64, 53, 38,255, 62, 52, 36,255, 61, 50, 35,255, 60, 49, 34,255, - 58, 47, 33,255, 59, 54, 46,255, 62, 62, 62,255, 60, 61, 61,255,108,100, 91,255,151,136,118,255,149,134,116,255,149,134,116,255, -148,133,115,255,148,133,115,255,148,133,115,255,148,133,115,255,147,132,114,255,146,131,113,255,146,132,113,255,146,132,113,255, -147,132,113,255,147,132,114,255,147,132,114,255,147,132,114,255,147,132,114,255,147,132,114,255,147,132,113,255,144,129,109,255, -133,119, 99,255,115,101, 82,255, 97, 85, 68,255, 88, 77, 65,255, 83, 74, 63,255, 81, 71, 61,255, 79, 70, 61,255, 78, 69, 60,255, - 78, 68, 58,255, 77, 67, 57,255, 76, 67, 56,255, 76, 66, 54,255, 78, 67, 52,255, 83, 70, 53,255, 93, 80, 59,255,105, 90, 68,255, -110, 96, 73,255,107, 92, 68,255,100, 85, 63,255, 92, 79, 58,255, 87, 74, 56,255, 85, 73, 55,255, 84, 72, 55,255, 82, 71, 55,255, - 82, 71, 55,255, 81, 70, 54,255, 81, 70, 54,255, 80, 69, 54,255, 80, 69, 53,255, 79, 69, 53,255, 79, 68, 53,255, 78, 67, 53,255, - 78, 67, 52,255, 78, 66, 52,255, 78, 65, 50,255, 76, 65, 50,255, 75, 64, 49,255, 74, 63, 49,255, 72, 62, 47,255, 71, 61, 46,255, - 70, 59, 44,255, 68, 57, 43,255, 65, 56, 41,255, 63, 53, 40,255, 60, 51, 37,255, 58, 49, 35,255, 54, 45, 33,255, 51, 42, 30,255, - 47, 39, 28,255, 44, 35, 25,255, 40, 33, 22,255, 36, 30, 19,255, 33, 27, 18,255, 31, 26, 17,255, 31, 24, 15,255, 30, 24, 15,255, - 30, 24, 15,255, 35, 27, 18,255, 49, 40, 27,255, 63, 53, 37,255, 72, 60, 43,255, 73, 61, 43,255, 72, 60, 43,255, 70, 59, 42,255, - 69, 57, 41,255, 68, 57, 40,255, 66, 55, 38,255, 65, 54, 39,255, 64, 53, 38,255, 64, 52, 36,255, 62, 51, 36,255, 60, 49, 35,255, - 58, 47, 33,255, 59, 54, 46,255, 62, 62, 62,255, 60, 61, 61,255,108,100, 91,255,152,137,119,255,150,135,117,255,150,135,118,255, -150,135,117,255,150,135,117,255,150,135,117,255,149,134,116,255,148,133,115,255,149,134,116,255,150,135,117,255,150,135,117,255, -150,135,117,255,151,136,118,255,151,136,118,255,151,136,118,255,151,136,119,255,147,132,113,255,131,117, 97,255,112, 99, 81,255, - 96, 84, 70,255, 88, 77, 66,255, 84, 75, 64,255, 83, 74, 64,255, 82, 73, 63,255, 81, 72, 62,255, 81, 71, 61,255, 81, 71, 60,255, - 81, 71, 59,255, 81, 71, 56,255, 86, 74, 57,255, 96, 83, 62,255,104, 90, 68,255,115,100, 78,255,124,110, 89,255,125,110, 89,255, -115,100, 77,255,106, 91, 67,255,100, 85, 63,255, 96, 83, 62,255, 94, 81, 62,255, 93, 80, 61,255, 92, 79, 60,255, 92, 79, 60,255, - 92, 79, 60,255, 92, 80, 60,255, 93, 79, 60,255, 94, 80, 60,255, 94, 80, 61,255, 94, 81, 60,255, 95, 82, 61,255, 95, 82, 61,255, - 96, 83, 61,255, 96, 83, 61,255, 96, 83, 61,255, 96, 82, 61,255, 96, 82, 61,255, 95, 81, 60,255, 94, 81, 59,255, 93, 79, 58,255, - 91, 78, 56,255, 89, 76, 55,255, 86, 74, 53,255, 83, 71, 51,255, 80, 68, 49,255, 77, 65, 47,255, 73, 62, 44,255, 70, 58, 42,255, - 66, 55, 39,255, 61, 51, 36,255, 57, 47, 33,255, 52, 42, 29,255, 47, 38, 26,255, 41, 33, 22,255, 36, 28, 18,255, 31, 25, 16,255, - 30, 24, 15,255, 30, 24, 15,255, 32, 26, 16,255, 42, 34, 22,255, 59, 48, 33,255, 70, 58, 41,255, 72, 60, 43,255, 70, 60, 43,255, - 69, 57, 41,255, 68, 57, 40,255, 66, 55, 38,255, 65, 54, 39,255, 64, 53, 38,255, 63, 52, 36,255, 62, 51, 36,255, 60, 50, 35,255, - 58, 48, 33,255, 59, 54, 46,255, 62, 62, 62,255, 60, 61, 61,255,109,101, 92,255,153,138,120,255,152,137,119,255,152,137,119,255, -152,137,119,255,152,137,119,255,151,136,118,255,151,136,118,255,152,137,119,255,152,137,120,255,153,138,120,255,153,138,121,255, -154,139,121,255,154,139,122,255,155,140,123,255,152,137,120,255,135,120,101,255,109, 96, 78,255, 96, 84, 71,255, 89, 79, 68,255, - 86, 77, 67,255, 85, 76, 66,255, 85, 75, 65,255, 85, 75, 65,255, 85, 75, 64,255, 86, 75, 63,255, 87, 76, 63,255, 89, 76, 61,255, - 94, 81, 62,255,108, 94, 73,255,115,100, 79,255,114,100, 78,255,129,114, 94,255,139,124,106,255,135,120,101,255,123,108, 86,255, -111, 96, 72,255,106, 92, 68,255,104, 90, 67,255,103, 89, 66,255,103, 89, 67,255,105, 91, 68,255,107, 93, 71,255,110, 96, 73,255, -112, 98, 76,255,115,101, 78,255,117,104, 80,255,120,105, 83,255,123,108, 86,255,125,110, 89,255,128,113, 92,255,129,114, 93,255, -131,116, 95,255,132,117, 97,255,132,117, 98,255,133,118, 98,255,132,118, 98,255,132,117, 98,255,131,116, 95,255,129,115, 93,255, -127,112, 92,255,124,110, 89,255,122,108, 86,255,119,104, 83,255,115,100, 78,255,111, 96, 74,255,106, 92, 69,255,100, 86, 64,255, - 94, 80, 58,255, 87, 74, 54,255, 80, 68, 49,255, 75, 62, 44,255, 68, 57, 40,255, 62, 51, 36,255, 55, 45, 31,255, 46, 37, 25,255, - 37, 29, 19,255, 31, 25, 16,255, 32, 26, 17,255, 32, 26, 17,255, 38, 31, 20,255, 58, 47, 33,255, 68, 57, 40,255, 71, 59, 42,255, - 69, 58, 41,255, 68, 57, 40,255, 66, 55, 38,255, 65, 54, 39,255, 64, 53, 38,255, 62, 52, 36,255, 61, 51, 36,255, 60, 50, 35,255, - 58, 48, 33,255, 59, 54, 47,255, 62, 62, 62,255, 60, 61, 61,255,110,102, 93,255,155,140,122,255,154,139,122,255,154,139,122,255, -154,139,122,255,154,139,121,255,154,139,121,255,154,139,122,255,155,140,122,255,156,141,124,255,156,141,124,255,157,142,125,255, -157,142,126,255,155,140,123,255,142,128,109,255,116,102, 84,255, 97, 85, 71,255, 91, 81, 70,255, 89, 79, 69,255, 89, 79, 68,255, - 88, 79, 68,255, 89, 79, 67,255, 90, 79, 67,255, 91, 79, 67,255, 93, 80, 66,255, 95, 83, 66,255,103, 90, 71,255,115,101, 79,255, -123,108, 87,255,117,103, 81,255,124,110, 89,255,144,130,112,255,148,133,116,255,138,124,105,255,129,114, 93,255,121,106, 84,255, -119,104, 81,255,121,107, 84,255,125,110, 89,255,129,114, 93,255,133,118, 98,255,137,122,102,255,140,126,106,255,144,129,110,255, -148,133,114,255,152,137,119,255,155,139,122,255,158,143,126,255,160,145,129,255,162,148,131,255,164,149,133,255,166,151,135,255, -167,152,136,255,167,152,137,255,168,153,138,255,168,153,138,255,168,153,137,255,168,153,137,255,167,152,137,255,166,151,136,255, -164,149,133,255,161,147,130,255,158,143,127,255,154,139,123,255,150,135,118,255,144,129,112,255,139,124,105,255,132,118, 98,255, -125,111, 90,255,118,103, 80,255,110, 96, 73,255,103, 88, 65,255, 95, 81, 59,255, 87, 74, 53,255, 76, 65, 46,255, 66, 55, 39,255, - 55, 45, 31,255, 42, 34, 22,255, 34, 28, 18,255, 34, 28, 18,255, 33, 27, 18,255, 40, 32, 21,255, 59, 48, 34,255, 67, 56, 40,255, - 69, 57, 41,255, 67, 56, 40,255, 65, 54, 38,255, 64, 53, 38,255, 64, 53, 37,255, 62, 52, 36,255, 61, 51, 35,255, 60, 50, 35,255, - 58, 48, 33,255, 59, 54, 47,255, 62, 62, 62,255, 60, 61, 61,255,111,103, 94,255,157,142,125,255,156,141,124,255,156,141,124,255, -156,141,124,255,157,142,124,255,157,142,125,255,158,143,126,255,159,143,127,255,160,145,128,255,160,145,129,255,161,146,129,255, -149,134,116,255,123,109, 91,255,102, 91, 75,255, 94, 83, 71,255, 92, 82, 70,255, 91, 81, 70,255, 92, 81, 70,255, 93, 82, 70,255, - 94, 82, 70,255, 96, 84, 70,255, 98, 85, 69,255,101, 87, 69,255,115,100, 81,255,129,114, 95,255,123,109, 88,255,115,101, 80,255, -123,110, 89,255,144,130,112,255,154,139,123,255,151,136,119,255,144,129,112,255,142,127,108,255,142,127,109,255,145,130,112,255, -149,134,116,255,153,138,121,255,156,142,124,255,160,146,129,255,164,149,134,255,168,153,138,255,171,156,141,255,174,159,144,255, -176,161,147,255,178,163,149,255,180,165,151,255,181,167,152,255,183,167,154,255,184,168,154,255,184,169,155,255,185,170,156,255, -185,170,156,255,186,171,157,255,186,170,157,255,185,170,157,255,185,170,156,255,184,169,155,255,183,168,154,255,182,167,152,255, -180,165,151,255,179,163,149,255,177,161,147,255,174,159,144,255,171,156,141,255,167,152,137,255,162,148,132,255,158,143,127,255, -151,136,120,255,143,128,110,255,133,118, 99,255,122,107, 86,255,112, 97, 74,255,103, 89, 65,255, 96, 82, 59,255, 86, 73, 53,255, - 75, 63, 45,255, 61, 51, 35,255, 47, 38, 26,255, 37, 30, 20,255, 34, 29, 18,255, 34, 28, 18,255, 44, 35, 24,255, 59, 49, 34,255, - 66, 55, 39,255, 67, 56, 39,255, 65, 54, 39,255, 64, 53, 38,255, 64, 53, 37,255, 62, 52, 36,255, 61, 51, 35,255, 60, 50, 35,255, - 58, 48, 33,255, 59, 54, 47,255, 62, 62, 62,255, 60, 60, 61,255,112,104, 95,255,159,144,127,255,158,143,126,255,158,143,126,255, -159,144,127,255,159,144,128,255,161,146,129,255,162,147,130,255,162,147,131,255,163,148,132,255,161,146,129,255,137,123,104,255, -109, 96, 79,255, 98, 87, 74,255, 94, 84, 72,255, 94, 83, 72,255, 94, 84, 72,255, 96, 85, 72,255, 97, 86, 72,255, 99, 87, 72,255, -102, 89, 72,255,105, 91, 72,255,117,102, 81,255,140,125,106,255,136,122,104,255,109, 95, 74,255,116,102, 81,255,144,130,112,255, -159,144,128,255,159,144,128,255,156,141,125,255,157,142,126,255,159,144,128,255,163,148,132,255,166,151,136,255,169,154,139,255, -172,157,142,255,175,160,145,255,177,162,147,255,180,164,150,255,181,166,151,255,183,168,154,255,184,169,155,255,185,170,156,255, -187,172,158,255,188,172,159,255,189,173,160,255,190,174,161,255,190,175,161,255,191,175,163,255,191,176,162,255,192,177,163,255, -193,177,163,255,192,177,164,255,194,178,164,255,193,178,165,255,193,178,165,255,194,178,165,255,194,178,165,255,193,178,165,255, -193,178,165,255,191,176,163,255,190,174,161,255,187,172,158,255,184,169,155,255,179,164,150,255,174,158,144,255,167,153,137,255, -161,147,131,255,157,142,126,255,151,136,119,255,141,126,109,255,128,113, 93,255,113, 98, 75,255,103, 88, 65,255, 94, 80, 59,255, - 82, 70, 51,255, 70, 58, 42,255, 58, 47, 33,255, 45, 36, 24,255, 36, 29, 19,255, 34, 28, 18,255, 35, 29, 19,255, 49, 39, 27,255, - 61, 50, 36,255, 65, 54, 38,255, 64, 54, 38,255, 63, 52, 36,255, 63, 53, 37,255, 62, 51, 36,255, 61, 51, 35,255, 61, 50, 35,255, - 58, 48, 33,255, 59, 54, 46,255, 62, 62, 62,255, 60, 60, 61,255,113,105, 96,255,161,146,129,255,161,146,129,255,162,147,130,255, -163,147,131,255,164,149,133,255,165,150,133,255,165,150,134,255,166,150,134,255,155,140,122,255,124,110, 92,255,102, 90, 74,255, - 98, 87, 74,255, 97, 86, 74,255, 97, 86, 74,255, 98, 87, 74,255,100, 88, 74,255,102, 90, 74,255,105, 92, 75,255,110, 96, 76,255, -122,107, 87,255,141,126,107,255,146,131,114,255,120,106, 87,255,109, 95, 73,255,134,120,101,255,160,145,129,255,167,152,136,255, -167,151,136,255,168,153,137,255,171,155,141,255,173,158,143,255,175,160,145,255,177,162,148,255,179,164,150,255,181,166,152,255, -182,167,153,255,184,169,155,255,185,170,156,255,187,171,157,255,187,172,158,255,187,173,159,255,188,172,159,255,188,173,159,255, -188,173,159,255,187,171,158,255,187,172,158,255,187,172,158,255,186,171,158,255,186,171,157,255,186,171,157,255,186,171,158,255, -187,171,158,255,187,172,158,255,188,172,159,255,188,173,160,255,189,174,160,255,190,175,162,255,191,176,163,255,193,177,164,255, -194,179,165,255,195,180,167,255,196,180,168,255,196,181,168,255,196,180,168,255,195,180,167,255,193,177,164,255,188,173,160,255, -182,166,152,255,172,157,143,255,162,148,132,255,152,138,121,255,143,128,110,255,130,115, 95,255,113, 98, 75,255,100, 85, 63,255, - 89, 75, 55,255, 77, 65, 46,255, 63, 53, 37,255, 50, 41, 28,255, 40, 32, 22,255, 34, 28, 18,255, 34, 27, 18,255, 36, 30, 20,255, - 51, 42, 29,255, 62, 51, 36,255, 63, 52, 36,255, 62, 51, 36,255, 61, 51, 35,255, 61, 50, 35,255, 61, 50, 35,255, 60, 50, 35,255, - 58, 48, 33,255, 59, 54, 46,255, 62, 62, 62,255, 60, 60, 61,255,114,106, 97,255,163,148,132,255,164,149,132,255,165,150,134,255, -166,151,135,255,167,152,137,255,169,154,138,255,167,152,136,255,145,130,112,255,114,101, 84,255,101, 90, 76,255, 99, 88, 75,255, - 99, 88, 75,255,101, 89, 76,255,102, 90, 76,255,105, 93, 77,255,108, 95, 77,255,112, 98, 78,255,124,109, 89,255,147,132,114,255, -151,136,119,255,124,110, 90,255,109, 94, 72,255,128,113, 93,255,154,140,124,255,169,154,139,255,173,158,143,255,174,159,145,255, -176,161,146,255,178,163,149,255,180,164,150,255,181,166,152,255,183,168,154,255,184,169,155,255,185,170,156,255,186,171,157,255, -186,170,157,255,185,170,156,255,185,170,156,255,184,169,155,255,184,169,155,255,184,169,155,255,183,168,155,255,184,169,155,255, -184,169,155,255,184,169,155,255,184,168,155,255,183,169,154,255,182,167,154,255,182,167,153,255,181,166,152,255,180,165,151,255, -180,164,151,255,180,165,151,255,181,166,152,255,182,167,154,255,184,169,155,255,186,171,157,255,186,171,158,255,187,172,160,255, -188,173,159,255,188,173,160,255,189,173,160,255,190,175,161,255,192,177,164,255,195,180,167,255,197,182,169,255,199,183,171,255, -198,182,170,255,195,179,166,255,188,173,159,255,178,164,149,255,165,150,134,255,147,133,115,255,128,113, 93,255,109, 94, 71,255, - 97, 83, 60,255, 85, 72, 53,255, 70, 59, 41,255, 56, 46, 32,255, 45, 36, 23,255, 36, 29, 19,255, 34, 27, 18,255, 35, 28, 18,255, - 40, 32, 22,255, 54, 45, 31,255, 61, 51, 35,255, 60, 50, 35,255, 60, 49, 34,255, 60, 50, 35,255, 60, 50, 35,255, 60, 49, 34,255, - 58, 48, 33,255, 59, 54, 46,255, 62, 62, 62,255, 60, 60, 61,255,115,108, 99,255,167,152,136,255,168,153,137,255,168,153,137,255, -168,153,138,255,170,155,139,255,165,150,134,255,134,120,101,255,108, 96, 79,255,103, 91, 77,255,102, 90, 77,255,103, 91, 77,255, -105, 93, 77,255,107, 94, 78,255,110, 97, 79,255,114,100, 79,255,123,108, 87,255,143,129,110,255,164,149,133,255,140,127,108,255, -105, 91, 69,255,116,102, 81,255,149,134,117,255,166,151,136,255,173,158,143,255,177,161,147,255,179,163,149,255,180,165,151,255, -182,167,152,255,183,168,154,255,183,168,154,255,185,169,156,255,185,170,156,255,185,170,156,255,183,168,154,255,183,168,154,255, -183,168,154,255,182,167,153,255,181,166,152,255,181,165,151,255,179,164,150,255,175,160,145,255,170,155,139,255,163,148,132,255, -155,140,123,255,146,132,114,255,139,124,105,255,132,117, 98,255,126,111, 91,255,122,107, 85,255,118,104, 82,255,116,101, 80,255, -114,100, 78,255,115, 99, 78,255,115,101, 79,255,116,102, 80,255,120,106, 85,255,125,110, 90,255,132,118, 98,255,143,128,109,255, -154,140,122,255,167,152,136,255,178,163,149,255,186,171,157,255,189,174,160,255,189,174,160,255,189,173,160,255,190,175,162,255, -194,179,166,255,198,183,170,255,201,186,173,255,199,184,170,255,191,175,163,255,181,165,151,255,166,151,137,255,143,129,111,255, -115,100, 78,255, 95, 81, 59,255, 83, 69, 50,255, 67, 56, 39,255, 51, 42, 28,255, 40, 32, 21,255, 33, 27, 18,255, 34, 28, 19,255, - 35, 29, 19,255, 45, 37, 24,255, 56, 46, 32,255, 60, 49, 34,255, 59, 49, 33,255, 59, 48, 34,255, 59, 48, 34,255, 59, 49, 34,255, - 57, 47, 33,255, 59, 54, 46,255, 62, 62, 62,255, 60, 60, 61,255,117,110,101,255,171,155,139,255,170,155,139,255,170,155,139,255, -170,155,139,255,161,146,129,255,129,115, 97,255,108, 95, 79,255,104, 92, 78,255,104, 93, 78,255,106, 93, 79,255,109, 96, 79,255, -111, 98, 80,255,116,101, 82,255,123,109, 87,255,140,125,105,255,161,146,129,255,158,143,127,255,119,106, 86,255,104, 90, 67,255, -131,116, 97,255,160,144,129,255,171,156,141,255,176,161,146,255,179,164,149,255,180,165,151,255,182,166,152,255,183,168,154,255, -183,168,154,255,183,168,154,255,183,168,154,255,183,168,154,255,182,167,153,255,181,166,152,255,180,165,151,255,177,162,147,255, -172,157,142,255,165,150,134,255,155,140,123,255,144,129,110,255,133,118, 98,255,123,108, 86,255,115,100, 77,255,108, 94, 71,255, -103, 90, 66,255,101, 86, 63,255, 98, 84, 62,255, 97, 83, 60,255, 96, 82, 59,255, 94, 81, 59,255, 93, 79, 58,255, 92, 78, 56,255, - 91, 77, 56,255, 89, 76, 55,255, 89, 75, 55,255, 87, 74, 54,255, 87, 74, 53,255, 86, 74, 53,255, 86, 73, 53,255, 87, 73, 52,255, - 88, 74, 53,255, 91, 79, 56,255, 98, 85, 63,255,110, 97, 76,255,128,114, 94,255,148,133,116,255,167,152,136,255,181,166,151,255, -188,173,160,255,192,177,164,255,195,179,166,255,198,182,169,255,202,187,174,255,201,186,174,255,195,179,166,255,179,164,150,255, -159,144,128,255,132,117, 98,255,103, 88, 67,255, 82, 69, 50,255, 66, 55, 39,255, 50, 40, 28,255, 38, 30, 19,255, 32, 26, 17,255, - 34, 28, 18,255, 36, 29, 19,255, 49, 39, 27,255, 58, 48, 33,255, 58, 48, 33,255, 56, 46, 32,255, 56, 46, 32,255, 57, 47, 32,255, - 57, 47, 32,255, 59, 54, 46,255, 62, 62, 62,255, 60, 60, 61,255,119,111,103,255,171,155,140,255,169,154,138,255,170,155,140,255, -157,142,125,255,124,110, 91,255,109, 96, 80,255,107, 95, 79,255,107, 95, 80,255,109, 96, 81,255,112, 99, 81,255,116,102, 82,255, -122,108, 86,255,135,120,101,255,158,143,126,255,170,155,141,255,138,124,105,255,107, 93, 71,255,115,102, 80,255,144,130,113,255, -165,150,135,255,173,158,143,255,177,162,148,255,180,164,150,255,180,165,151,255,182,167,153,255,181,167,153,255,182,167,153,255, -182,167,153,255,182,167,153,255,181,166,152,255,179,164,150,255,173,158,144,255,164,150,134,255,153,138,122,255,141,126,108,255, -130,115, 94,255,120,106, 82,255,114, 99, 75,255,109, 95, 71,255,107, 92, 68,255,105, 90, 66,255,103, 89, 65,255,102, 87, 64,255, -101, 86, 63,255, 99, 85, 63,255, 99, 85, 61,255, 98, 83, 60,255, 97, 83, 60,255, 96, 82, 59,255, 95, 81, 59,255, 94, 80, 57,255, - 93, 79, 57,255, 91, 78, 56,255, 90, 77, 55,255, 89, 75, 54,255, 87, 74, 53,255, 85, 72, 52,255, 84, 71, 51,255, 82, 70, 51,255, - 81, 68, 49,255, 79, 67, 48,255, 78, 66, 48,255, 78, 66, 47,255, 78, 66, 47,255, 81, 69, 49,255, 89, 75, 55,255,102, 88, 69,255, -122,107, 88,255,147,132,115,255,175,160,145,255,196,180,168,255,201,186,173,255,199,184,171,255,199,184,171,255,202,187,174,255, -199,183,171,255,180,165,150,255,147,132,114,255,112, 97, 76,255, 87, 73, 53,255, 67, 56, 39,255, 50, 41, 27,255, 37, 30, 19,255, - 33, 27, 17,255, 34, 28, 18,255, 38, 31, 21,255, 53, 43, 29,255, 59, 48, 34,255, 56, 45, 31,255, 55, 45, 31,255, 55, 45, 31,255, - 56, 46, 32,255, 59, 53, 46,255, 62, 62, 62,255, 60, 60, 61,255,117,109,101,255,168,153,137,255,168,153,138,255,156,141,124,255, -122,108, 89,255,110, 98, 81,255,109, 96, 80,255,110, 97, 81,255,112, 99, 82,255,116,102, 83,255,121,106, 85,255,131,116, 95,255, -148,133,115,255,171,156,141,255,168,153,138,255,120,106, 85,255,104, 90, 67,255,125,111, 91,255,154,139,123,255,168,153,138,255, -174,159,144,255,177,162,148,255,180,164,150,255,180,165,151,255,180,165,151,255,182,166,152,255,181,165,151,255,181,166,152,255, -179,163,149,255,174,159,144,255,164,149,133,255,152,137,120,255,140,125,106,255,129,114, 93,255,122,107, 84,255,116,101, 78,255, -114, 99, 75,255,112, 97, 73,255,112, 97, 73,255,112, 97, 73,255,112, 97, 74,255,114, 99, 76,255,116,101, 78,255,120,105, 82,255, -124,109, 87,255,128,113, 93,255,133,118, 97,255,136,122,103,255,140,126,106,255,143,128,110,255,145,130,112,255,145,130,112,255, -143,128,110,255,141,126,108,255,138,123,104,255,132,118, 98,255,126,112, 91,255,119,105, 84,255,112, 98, 76,255,105, 91, 69,255, - 97, 84, 62,255, 92, 79, 58,255, 87, 74, 54,255, 83, 70, 51,255, 79, 67, 48,255, 77, 65, 47,255, 74, 62, 45,255, 73, 61, 44,255, - 74, 62, 45,255, 79, 67, 48,255, 89, 76, 55,255,112, 99, 77,255,153,138,122,255,191,176,162,255,203,187,175,255,200,184,172,255, -199,184,171,255,205,189,177,255,202,187,175,255,173,159,144,255,126,111, 91,255, 91, 78, 57,255, 71, 59, 41,255, 51, 42, 28,255, - 37, 30, 19,255, 33, 27, 17,255, 36, 30, 20,255, 42, 33, 22,255, 56, 46, 32,255, 56, 46, 32,255, 54, 44, 30,255, 53, 43, 31,255, - 54, 44, 30,255, 58, 53, 45,255, 62, 62, 62,255, 60, 60, 61,255,116,108, 99,255,167,152,136,255,156,141,124,255,125,111, 92,255, -112, 99, 82,255,111, 98, 82,255,112, 99, 82,255,116,101, 83,255,120,105, 85,255,128,113, 92,255,140,125,106,255,161,146,129,255, -178,162,148,255,156,141,125,255,111, 96, 75,255,108, 94, 71,255,134,120,101,255,158,143,127,255,168,153,138,255,174,159,144,255, -177,162,148,255,179,164,149,255,180,165,150,255,181,165,151,255,181,165,151,255,179,164,150,255,176,161,146,255,168,153,138,255, -157,143,126,255,146,131,113,255,136,121,100,255,129,114, 93,255,125,110, 88,255,124,109, 87,255,124,109, 88,255,127,112, 91,255, -131,116, 95,255,136,122,101,255,143,128,109,255,149,135,116,255,155,140,123,255,160,146,130,255,163,149,133,255,167,152,138,255, -170,156,142,255,172,159,144,255,174,161,147,255,175,162,149,255,178,164,151,255,179,166,153,255,180,167,153,255,180,167,155,255, -181,167,155,255,182,168,156,255,182,168,156,255,183,169,156,255,182,167,154,255,181,167,153,255,177,162,148,255,171,156,142,255, -164,149,133,255,152,138,120,255,141,125,107,255,126,111, 91,255,112, 97, 77,255, 99, 85, 65,255, 88, 75, 54,255, 80, 68, 48,255, - 76, 64, 46,255, 72, 60, 43,255, 70, 59, 42,255, 71, 59, 42,255, 75, 63, 44,255, 94, 81, 61,255,134,121,103,255,175,160,145,255, -198,183,170,255,203,187,176,255,203,188,175,255,208,193,181,255,200,184,172,255,158,143,127,255,107, 93, 73,255, 73, 60, 42,255, - 51, 42, 28,255, 38, 30, 19,255, 33, 27, 18,255, 35, 30, 19,255, 47, 38, 26,255, 57, 47, 33,255, 54, 45, 31,255, 52, 42, 29,255, - 52, 43, 29,255, 57, 52, 45,255, 62, 62, 62,255, 60, 60, 61,255,115,107, 99,255,158,143,125,255,128,113, 94,255,114,101, 82,255, -113,100, 83,255,115,102, 83,255,118,104, 84,255,124,109, 89,255,133,119, 99,255,149,134,116,255,172,156,141,255,180,165,150,255, -140,125,107,255,105, 91, 69,255,114,100, 78,255,141,127,108,255,158,144,128,255,168,153,138,255,173,158,144,255,176,161,147,255, -179,164,149,255,180,165,151,255,180,165,151,255,179,164,150,255,174,159,144,255,165,150,134,255,154,139,122,255,144,130,111,255, -137,123,103,255,134,120,100,255,134,119, 99,255,136,121,102,255,140,125,106,255,148,134,116,255,159,143,126,255,167,152,136,255, -169,155,140,255,165,151,137,255,157,144,130,255,152,139,124,255,154,140,125,255,158,144,129,255,162,148,133,255,168,153,139,255, -172,158,144,255,175,160,146,255,177,163,149,255,178,164,150,255,180,165,152,255,180,166,152,255,181,167,152,255,181,166,152,255, -182,167,153,255,182,167,154,255,183,168,154,255,184,168,155,255,184,169,156,255,184,170,156,255,185,170,157,255,184,170,156,255, -183,169,155,255,183,168,155,255,183,168,154,255,182,167,153,255,179,164,151,255,172,157,142,255,157,142,126,255,134,120,101,255, -109, 95, 74,255, 90, 76, 55,255, 79, 67, 47,255, 74, 62, 44,255, 70, 59, 41,255, 68, 57, 40,255, 72, 60, 41,255, 86, 73, 54,255, -119,105, 86,255,168,152,137,255,204,189,176,255,206,191,179,255,205,189,177,255,207,192,179,255,191,175,162,255,136,122,104,255, - 79, 66, 47,255, 51, 42, 28,255, 36, 29, 19,255, 34, 28, 18,255, 37, 31, 20,255, 51, 42, 29,255, 56, 46, 32,255, 52, 42, 29,255, - 51, 42, 28,255, 57, 51, 45,255, 62, 62, 62,255, 60, 61, 61,255,110,102, 94,255,134,119, 99,255,117,103, 84,255,115,102, 83,255, -117,103, 84,255,121,106, 86,255,128,113, 93,255,140,125,106,255,157,142,124,255,178,163,148,255,180,165,151,255,132,118, 98,255, -104, 89, 66,255,120,105, 84,255,144,130,113,255,158,144,128,255,168,153,138,255,173,158,144,255,176,161,147,255,179,164,150,255, -180,165,151,255,179,164,150,255,175,160,145,255,166,150,135,255,155,140,123,255,147,133,114,255,142,128,109,255,142,127,108,255, -145,130,111,255,150,134,117,255,158,143,126,255,167,152,136,255,176,160,146,255,171,157,143,255,153,141,127,255,139,125,109,255, -143,131,115,255,153,139,123,255,168,153,138,255,178,163,149,255,182,167,153,255,183,168,154,255,182,167,153,255,179,164,150,255, -175,160,146,255,172,157,142,255,170,155,140,255,167,152,137,255,165,150,134,255,164,149,133,255,162,147,131,255,162,147,131,255, -162,147,131,255,163,148,132,255,164,149,134,255,167,152,137,255,170,155,140,255,175,159,146,255,180,164,150,255,185,169,155,255, -190,174,161,255,192,176,163,255,193,178,165,255,191,176,162,255,188,173,160,255,188,172,159,255,191,175,162,255,194,179,167,255, -191,176,162,255,170,155,141,255,137,122,104,255,106, 91, 71,255, 86, 73, 54,255, 76, 64, 46,255, 70, 59, 42,255, 67, 56, 39,255, - 69, 58, 41,255, 82, 69, 50,255,123,108, 89,255,185,169,156,255,208,192,180,255,206,190,178,255,208,193,180,255,209,193,181,255, -165,151,135,255, 92, 79, 60,255, 53, 43, 30,255, 36, 29, 19,255, 35, 29, 19,255, 40, 33, 22,255, 55, 45, 31,255, 53, 43, 30,255, - 49, 40, 27,255, 56, 51, 44,255, 62, 62, 62,255, 61, 61, 61,255, 99, 91, 81,255,122,107, 87,255,118,104, 85,255,119,105, 85,255, -124,109, 88,255,133,118, 98,255,145,130,112,255,163,148,132,255,183,167,153,255,175,160,146,255,126,112, 92,255,103, 89, 66,255, -122,107, 87,255,144,130,113,255,158,144,128,255,167,153,138,255,173,158,144,255,177,162,147,255,179,164,150,255,180,164,150,255, -176,161,147,255,169,154,138,255,159,144,128,255,152,137,120,255,149,134,116,255,151,135,118,255,156,141,124,255,165,150,135,255, -172,156,142,255,168,153,139,255,159,145,130,255,150,137,122,255,141,128,111,255,149,135,120,255,163,148,133,255,177,163,148,255, -183,168,154,255,182,167,153,255,178,163,148,255,173,157,142,255,167,152,137,255,163,148,131,255,159,144,127,255,155,140,124,255, -152,137,121,255,150,135,117,255,148,133,115,255,146,131,113,255,144,129,111,255,142,128,109,255,141,126,108,255,139,124,106,255, -138,123,105,255,137,123,104,255,136,122,104,255,137,122,103,255,137,123,104,255,138,124,105,255,140,125,107,255,144,129,112,255, -149,135,117,255,157,142,126,255,166,151,136,255,176,161,146,255,186,170,156,255,192,177,164,255,195,180,167,255,196,181,168,255, -197,182,169,255,200,184,172,255,200,185,173,255,188,173,160,255,160,145,128,255,124,110, 91,255, 95, 81, 61,255, 77, 65, 46,255, - 69, 57, 40,255, 65, 54, 39,255, 68, 56, 39,255, 89, 76, 57,255,148,133,117,255,199,183,170,255,211,195,184,255,209,193,181,255, -214,198,186,255,185,170,156,255,112, 98, 80,255, 56, 45, 30,255, 35, 29, 19,255, 36, 30, 20,255, 47, 39, 27,255, 54, 44, 31,255, - 50, 41, 28,255, 55, 50, 44,255, 62, 62, 62,255, 61, 61, 61,255, 94, 86, 75,255,121,107, 86,255,121,107, 86,255,127,112, 91,255, -137,122,102,255,150,135,117,255,168,153,136,255,187,172,158,255,175,160,145,255,123,108, 88,255,105, 91, 68,255,123,109, 89,255, -144,129,113,255,158,143,127,255,167,152,138,255,173,158,144,255,178,163,148,255,180,165,151,255,179,164,149,255,173,157,143,255, -164,149,133,255,157,142,125,255,156,141,124,255,158,143,127,255,166,151,135,255,178,162,147,255,180,165,152,255,154,140,125,255, -132,118,101,255,141,127,111,255,158,144,129,255,173,158,143,255,181,166,152,255,182,167,152,255,177,162,148,255,172,157,142,255, -167,152,137,255,162,147,132,255,159,144,127,255,156,141,124,255,154,139,122,255,152,137,120,255,151,136,119,255,149,134,117,255, -149,134,117,255,148,133,115,255,147,132,115,255,147,132,115,255,146,131,113,255,144,130,112,255,144,129,111,255,142,127,110,255, -141,126,108,255,139,125,106,255,137,122,104,255,135,120,102,255,133,118, 99,255,131,116, 97,255,129,114, 95,255,127,113, 93,255, -126,112, 91,255,127,112, 91,255,128,114, 93,255,133,117, 99,255,139,125,106,255,150,136,119,255,164,149,133,255,180,165,150,255, -194,178,165,255,201,186,174,255,204,188,176,255,203,188,175,255,203,187,175,255,197,182,169,255,174,159,144,255,133,119,100,255, - 94, 81, 60,255, 75, 64, 45,255, 67, 55, 39,255, 63, 53, 37,255, 72, 60, 42,255,109, 95, 77,255,179,163,149,255,216,200,188,255, -212,197,185,255,214,198,186,255,203,187,175,255,134,120,103,255, 57, 47, 32,255, 35, 28, 19,255, 39, 33, 23,255, 53, 43, 29,255, - 52, 42, 29,255, 55, 50, 44,255, 62, 62, 62,255, 61, 61, 61,255, 93, 85, 74,255,124,109, 88,255,129,114, 94,255,140,125,106,255, -153,138,121,255,171,156,140,255,190,174,160,255,177,161,147,255,123,108, 88,255,105, 91, 68,255,123,108, 88,255,143,128,111,255, -157,143,127,255,168,153,138,255,174,159,144,255,179,163,149,255,180,165,151,255,178,162,148,255,171,156,140,255,164,149,133,255, -161,146,130,255,164,149,133,255,172,157,141,255,180,165,151,255,178,163,149,255,147,134,119,255,120,108, 90,255,142,129,112,255, -175,160,146,255,186,170,157,255,184,169,155,255,178,162,148,255,172,157,142,255,167,152,137,255,164,149,133,255,161,146,130,255, -159,144,128,255,158,143,126,255,157,142,126,255,157,142,126,255,158,143,126,255,158,143,126,255,158,143,127,255,159,144,128,255, -161,146,130,255,162,147,131,255,164,149,133,255,164,149,134,255,164,150,134,255,165,150,136,255,165,150,135,255,164,149,133,255, -164,149,133,255,162,147,132,255,159,144,128,255,156,142,125,255,153,138,121,255,148,134,117,255,144,130,112,255,140,125,106,255, -135,120,102,255,130,116, 96,255,126,111, 91,255,122,108, 87,255,121,106, 85,255,121,106, 85,255,124,110, 89,255,132,117, 98,255, -145,131,113,255,166,151,135,255,187,172,158,255,202,186,174,255,207,191,179,255,206,190,178,255,207,192,180,255,204,188,176,255, -173,159,144,255,124,108, 89,255, 88, 75, 55,255, 72, 60, 42,255, 65, 54, 38,255, 64, 53, 37,255, 82, 70, 51,255,157,142,125,255, -212,196,185,255,214,198,186,255,214,198,187,255,214,199,186,255,146,132,115,255, 59, 48, 34,255, 35, 29, 20,255, 46, 39, 27,255, - 53, 43, 30,255, 55, 50, 44,255, 62, 62, 62,255, 61, 61, 61,255, 95, 88, 77,255,133,118, 98,255,143,128,110,255,156,141,124,255, -173,158,142,255,191,175,161,255,178,163,148,255,124,110, 89,255,104, 90, 66,255,121,107, 86,255,140,127,108,255,156,141,125,255, -167,152,137,255,174,159,144,255,179,164,150,255,180,165,151,255,177,162,146,255,171,155,140,255,167,152,136,255,169,154,139,255, -178,162,147,255,182,167,152,255,165,151,136,255,139,124,108,255,124,111, 92,255,147,132,116,255,179,164,150,255,188,173,158,255, -183,167,153,255,176,161,146,255,170,155,140,255,167,152,136,255,164,149,134,255,163,148,132,255,163,148,131,255,163,148,132,255, -164,149,133,255,165,150,134,255,168,153,137,255,170,155,140,255,173,158,143,255,175,160,146,255,178,163,149,255,179,164,150,255, -180,165,152,255,182,167,152,255,182,167,153,255,183,168,154,255,183,168,155,255,184,169,155,255,184,169,155,255,185,170,156,255, -185,170,156,255,185,170,156,255,185,170,156,255,185,169,156,255,183,168,155,255,181,166,152,255,178,163,149,255,174,159,144,255, -167,153,137,255,160,146,130,255,152,137,121,255,143,129,111,255,135,120,101,255,127,112, 92,255,121,106, 85,255,117,102, 80,255, -117,102, 80,255,122,107, 86,255,135,120,101,255,156,142,125,255,182,167,152,255,201,186,173,255,209,194,182,255,211,195,183,255, -213,197,185,255,201,185,173,255,159,144,128,255,110, 95, 75,255, 79, 67, 47,255, 66, 55, 39,255, 61, 51, 36,255, 72, 60, 41,255, -135,121,103,255,205,189,177,255,217,201,189,255,217,201,189,255,218,202,190,255,152,137,121,255, 60, 50, 34,255, 40, 34, 25,255, - 52, 44, 31,255, 57, 51, 44,255, 62, 62, 62,255, 61, 61, 61,255,101, 94, 83,255,146,131,113,255,158,143,126,255,175,159,144,255, -192,176,163,255,184,168,154,255,128,114, 94,255,107, 92, 68,255,118,104, 83,255,137,123,105,255,155,140,124,255,166,152,137,255, -174,160,145,255,181,165,151,255,181,166,151,255,178,162,148,255,172,157,142,255,173,158,143,255,179,164,149,255,187,171,158,255, -168,153,139,255,122,109, 91,255,125,112, 95,255,159,144,128,255,182,167,153,255,187,172,158,255,181,166,152,255,176,161,146,255, -172,156,141,255,169,154,139,255,168,152,137,255,166,151,137,255,168,152,137,255,169,154,139,255,172,157,141,255,175,160,145,255, -179,163,149,255,181,166,152,255,182,167,153,255,181,166,152,255,180,165,151,255,178,163,149,255,176,161,147,255,175,161,146,255, -175,160,145,255,174,160,145,255,175,160,145,255,174,159,145,255,175,160,146,255,176,161,147,255,177,162,148,255,178,163,149,255, -179,164,151,255,181,166,153,255,183,168,154,255,185,170,157,255,187,172,158,255,189,173,160,255,191,175,162,255,192,176,163,255, -191,176,163,255,190,175,161,255,187,171,158,255,180,165,152,255,172,157,142,255,160,145,130,255,148,133,116,255,135,120,101,255, -123,109, 88,255,116,102, 79,255,114, 99, 75,255,116,102, 80,255,129,115, 96,255,154,139,123,255,184,169,156,255,207,191,179,255, -214,198,186,255,214,199,187,255,212,196,185,255,189,174,159,255,134,119,101,255, 87, 74, 54,255, 68, 57, 40,255, 62, 51, 36,255, - 69, 58, 41,255,119,105, 86,255,205,188,176,255,220,204,193,255,217,201,189,255,217,201,189,255,147,133,117,255, 52, 42, 30,255, - 41, 35, 25,255, 58, 52, 45,255, 62, 62, 62,255, 60, 61, 61,255,108,100, 90,255,160,144,127,255,174,159,143,255,192,177,163,255, -190,174,161,255,137,123,104,255,106, 92, 68,255,115,101, 78,255,134,119,101,255,153,138,122,255,166,151,135,255,175,160,145,255, -181,166,152,255,183,167,153,255,179,163,149,255,176,161,146,255,179,164,149,255,185,169,155,255,179,164,150,255,139,126,109,255, -107, 94, 76,255,151,137,122,255,186,170,157,255,189,174,160,255,183,167,153,255,178,163,148,255,174,158,143,255,173,157,142,255, -172,157,141,255,172,157,141,255,174,158,143,255,177,161,146,255,179,163,149,255,182,166,153,255,184,169,155,255,182,167,153,255, -178,163,149,255,174,159,145,255,169,154,140,255,167,152,137,255,164,150,134,255,164,149,134,255,164,149,134,255,165,150,135,255, -165,151,136,255,166,151,137,255,168,154,139,255,170,155,140,255,172,157,142,255,173,158,143,255,174,159,145,255,176,161,147,255, -177,162,148,255,178,163,150,255,181,166,152,255,182,167,153,255,184,168,155,255,186,171,158,255,188,173,159,255,190,175,161,255, -193,177,164,255,195,180,167,255,197,181,169,255,197,182,169,255,196,180,167,255,192,176,163,255,185,169,156,255,172,157,143,255, -158,143,127,255,141,126,108,255,125,110, 90,255,115,101, 77,255,110, 96, 72,255,115,100, 77,255,131,117, 98,255,162,148,133,255, -197,181,168,255,214,198,187,255,217,201,189,255,218,202,190,255,207,191,179,255,154,139,122,255, 97, 83, 63,255, 71, 60, 42,255, - 62, 51, 36,255, 66, 55, 38,255,113, 99, 80,255,204,188,176,255,220,204,192,255,218,202,190,255,218,202,190,255,127,113, 96,255, - 43, 35, 23,255, 52, 48, 43,255, 62, 62, 62,255, 60, 60, 61,255,114,106, 98,255,175,160,144,255,191,176,162,255,193,178,164,255, -148,133,116,255,110, 96, 72,255,112, 98, 75,255,130,115, 96,255,149,134,118,255,163,149,134,255,174,160,145,255,182,166,152,255, -183,168,154,255,181,166,151,255,181,166,151,255,185,170,156,255,183,169,155,255,150,135,120,255,114,101, 83,255,129,115, 97,255, -177,162,148,255,191,176,162,255,187,171,157,255,181,166,151,255,177,162,147,255,175,160,145,255,175,160,145,255,176,161,146,255, -179,163,149,255,181,166,152,255,184,169,154,255,184,169,155,255,181,166,152,255,174,159,146,255,167,153,138,255,162,147,132,255, -158,144,128,255,157,143,127,255,157,143,127,255,159,145,129,255,161,147,131,255,164,149,134,255,167,152,137,255,169,154,139,255, -171,156,141,255,173,158,143,255,174,159,145,255,176,161,147,255,178,162,149,255,179,164,150,255,180,165,151,255,181,166,152,255, -183,168,154,255,184,169,156,255,185,170,157,255,186,171,159,255,188,173,160,255,189,174,160,255,190,175,162,255,192,176,163,255, -193,179,165,255,195,179,167,255,197,182,169,255,199,183,171,255,201,185,173,255,202,186,174,255,202,186,173,255,199,183,170,255, -191,176,163,255,179,164,150,255,162,148,132,255,142,128,110,255,124,109, 88,255,112, 97, 74,255,109, 94, 70,255,118,103, 81,255, -144,130,111,255,182,167,153,255,211,195,183,255,219,203,192,255,220,204,192,255,213,197,186,255,168,153,137,255,105, 91, 71,255, - 71, 60, 42,255, 62, 51, 36,255, 67, 56, 39,255,123,109, 90,255,209,193,181,255,221,205,194,255,221,205,193,255,215,199,187,255, -107, 95, 78,255, 49, 45, 39,255, 62, 62, 62,255, 60, 60, 60,255,122,114,106,255,191,175,160,255,197,182,169,255,162,147,131,255, -117,103, 82,255,110, 96, 73,255,125,110, 90,255,145,131,114,255,161,146,131,255,174,159,144,255,181,166,152,255,185,169,155,255, -184,168,154,255,185,170,155,255,188,173,159,255,172,157,143,255,116,103, 84,255,112, 98, 80,255,163,148,133,255,189,174,160,255, -190,174,160,255,184,169,154,255,181,166,151,255,179,164,149,255,179,164,149,255,180,165,149,255,182,167,153,255,185,170,156,255, -187,172,158,255,183,168,154,255,175,160,146,255,165,151,135,255,157,143,127,255,153,139,123,255,153,138,122,255,155,140,124,255, -157,143,127,255,161,146,130,255,164,149,134,255,167,153,138,255,170,155,140,255,172,157,143,255,174,159,145,255,177,162,147,255, -178,163,148,255,179,164,150,255,180,165,151,255,181,166,152,255,182,167,153,255,182,167,153,255,182,167,153,255,183,168,155,255, -184,169,155,255,185,170,156,255,187,171,158,255,188,172,159,255,189,174,160,255,191,175,163,255,192,177,164,255,194,178,166,255, -196,181,168,255,197,182,169,255,199,183,171,255,200,184,172,255,202,186,174,255,203,187,175,255,205,189,177,255,206,190,178,255, -206,190,178,255,203,187,175,255,195,180,166,255,181,166,152,255,162,147,131,255,138,124,105,255,118,103, 81,255,108, 93, 69,255, -111, 96, 72,255,130,115, 95,255,168,154,139,255,207,191,179,255,221,205,193,255,222,206,194,255,217,201,189,255,179,164,150,255, -108, 95, 75,255, 72, 60, 42,255, 61, 50, 35,255, 70, 59, 41,255,138,124,106,255,221,205,194,255,222,206,194,255,223,207,196,255, -203,187,175,255, 87, 81, 72,255, 61, 61, 61,255, 60, 60, 60,255,129,121,114,255,201,185,172,255,179,163,149,255,129,115, 95,255, -111, 96, 73,255,118,103, 82,255,140,126,108,255,158,143,128,255,172,157,142,255,181,166,152,255,186,171,157,255,187,171,157,255, -188,172,158,255,186,171,157,255,155,142,126,255,101, 88, 70,255,124,111, 93,255,181,166,152,255,193,177,164,255,189,173,160,255, -184,169,155,255,183,167,153,255,182,167,152,255,182,167,153,255,185,170,156,255,187,172,158,255,187,172,158,255,181,166,152,255, -170,155,140,255,159,145,129,255,151,137,120,255,149,135,118,255,151,137,120,255,154,140,124,255,159,144,129,255,163,148,133,255, -167,152,138,255,171,156,141,255,173,158,143,255,176,161,146,255,177,162,148,255,178,163,149,255,179,164,150,255,179,164,150,255, -178,163,149,255,178,163,149,255,176,161,147,255,175,160,145,255,173,158,144,255,173,158,143,255,171,156,142,255,171,157,141,255, -172,157,142,255,172,157,142,255,173,158,144,255,175,160,146,255,177,162,148,255,180,165,151,255,184,169,155,255,187,172,159,255, -191,176,163,255,195,179,166,255,198,182,170,255,200,185,172,255,202,188,174,255,204,189,176,255,206,191,178,255,207,191,179,255, -209,193,181,255,210,194,182,255,209,193,181,255,204,188,176,255,194,179,166,255,176,161,147,255,152,137,121,255,127,112, 91,255, -109, 95, 71,255,107, 92, 69,255,121,106, 85,255,160,145,130,255,204,188,176,255,222,206,194,255,224,208,196,255,219,203,191,255, -179,163,149,255,105, 91, 71,255, 69, 58, 41,255, 58, 48, 34,255, 77, 65, 46,255,165,150,134,255,225,209,198,255,221,205,193,255, -225,209,197,255,141,133,127,255, 60, 60, 60,255, 60, 60, 60,255,135,126,120,255,192,176,163,255,146,131,114,255,114,100, 77,255, -114, 99, 77,255,133,119,100,255,153,138,122,255,169,154,139,255,180,165,151,255,187,172,158,255,188,173,159,255,190,175,161,255, -182,166,152,255,137,123,107,255, 97, 84, 65,255,139,125,108,255,189,174,161,255,194,179,165,255,189,174,160,255,186,170,156,255, -185,170,155,255,186,170,156,255,187,172,158,255,189,174,160,255,188,173,159,255,180,165,151,255,167,153,138,255,154,140,125,255, -148,134,116,255,147,133,116,255,150,136,119,255,155,140,124,255,160,145,130,255,165,150,135,255,169,154,139,255,173,158,143,255, -176,161,146,255,177,163,148,255,178,163,149,255,179,163,149,255,178,163,148,255,176,161,146,255,173,158,144,255,171,156,141,255, -168,153,137,255,164,149,134,255,161,146,130,255,158,143,127,255,154,139,124,255,152,137,120,255,150,135,118,255,148,133,116,255, -147,132,114,255,147,132,114,255,147,132,115,255,148,133,116,255,151,136,119,255,154,139,123,255,159,144,128,255,164,150,135,255, -171,156,141,255,178,163,148,255,184,170,156,255,192,177,163,255,197,182,169,255,203,187,175,255,206,190,178,255,208,192,180,255, -210,194,182,255,211,195,183,255,212,196,184,255,213,197,185,255,211,195,183,255,203,187,175,255,187,172,159,255,163,149,134,255, -135,120,101,255,112, 98, 75,255,105, 90, 66,255,116,101, 79,255,154,139,123,255,202,186,174,255,223,207,195,255,225,209,197,255, -219,203,192,255,171,156,141,255, 98, 85, 64,255, 64, 54, 37,255, 58, 48, 33,255, 96, 83, 64,255,196,180,167,255,226,210,198,255, -223,206,195,255,147,139,133,255, 59, 60, 60,255, 60, 60, 60,255,131,124,117,255,166,151,136,255,124,110, 88,255,111, 97, 74,255, -127,112, 92,255,147,132,115,255,165,150,135,255,179,164,149,255,187,172,158,255,191,175,161,255,192,176,162,255,179,163,149,255, -120,107, 89,255, 90, 78, 59,255,153,138,122,255,191,176,163,255,194,179,165,255,190,175,161,255,188,172,158,255,188,172,158,255, -189,173,160,255,191,175,162,255,190,175,161,255,183,168,154,255,167,152,137,255,152,137,120,255,145,130,113,255,145,130,113,255, -150,135,118,255,155,140,124,255,160,146,130,255,166,152,136,255,171,156,141,255,174,159,145,255,177,162,148,255,178,163,149,255, -179,164,149,255,178,163,148,255,176,160,146,255,172,157,142,255,169,154,139,255,165,150,134,255,160,146,129,255,156,141,124,255, -150,136,119,255,146,131,114,255,141,127,108,255,137,122,104,255,133,118, 99,255,129,115, 95,255,126,112, 90,255,123,108, 87,255, -121,106, 84,255,119,104, 82,255,118,104, 82,255,118,103, 81,255,118,104, 82,255,120,106, 84,255,124,109, 88,255,129,114, 94,255, -136,121,103,255,144,130,113,255,155,140,123,255,165,151,136,255,177,162,148,255,188,173,159,255,197,181,169,255,204,189,176,255, -209,193,181,255,211,196,184,255,213,198,186,255,215,199,187,255,215,199,188,255,215,199,187,255,210,194,182,255,195,180,167,255, -171,157,142,255,142,128,109,255,115,100, 78,255,104, 89, 65,255,112, 98, 76,255,153,138,122,255,205,190,177,255,225,209,198,255, -226,210,199,255,217,201,190,255,160,145,129,255, 87, 74, 54,255, 60, 49, 34,255, 63, 52, 37,255,137,123,105,255,222,205,194,255, -227,211,199,255,144,136,130,255, 60, 60, 60,255, 60, 60, 61,255,120,112,105,255,141,126,107,255,114, 99, 78,255,119,103, 82,255, -139,124,106,255,158,144,129,255,175,160,146,255,186,171,157,255,191,176,162,255,191,177,163,255,176,161,146,255,117,104, 86,255, - 89, 77, 59,255,160,146,131,255,196,180,167,255,195,179,166,255,192,176,162,255,190,175,161,255,190,175,161,255,192,176,162,255, -192,177,163,255,188,173,159,255,174,159,144,255,154,139,123,255,142,128,110,255,142,128,110,255,147,132,115,255,154,139,123,255, -159,145,129,255,166,151,136,255,171,156,141,255,176,161,146,255,178,163,149,255,180,165,151,255,179,164,149,255,178,163,148,255, -174,159,144,255,171,156,140,255,166,151,135,255,161,146,130,255,156,141,125,255,151,136,119,255,145,131,112,255,140,125,107,255, -135,120,101,255,130,115, 95,255,125,111, 89,255,120,105, 83,255,116,101, 78,255,112, 97, 73,255,110, 95, 70,255,107, 92, 68,255, -105, 90, 66,255,104, 89, 66,255,102, 88, 64,255,101, 87, 64,255,100, 86, 63,255,100, 86, 63,255,101, 86, 63,255,101, 87, 64,255, -103, 90, 66,255,108, 93, 71,255,115,100, 78,255,126,111, 91,255,140,125,107,255,155,141,124,255,171,156,142,255,186,172,158,255, -199,183,170,255,208,192,180,255,213,197,185,255,215,199,188,255,217,201,190,255,218,202,191,255,218,202,191,255,214,198,186,255, -201,185,172,255,176,161,147,255,145,130,113,255,114,100, 78,255,103, 88, 65,255,112, 98, 76,255,159,145,128,255,212,196,184,255, -227,211,200,255,228,212,200,255,210,194,181,255,136,121,103,255, 74, 62, 45,255, 55, 45, 31,255, 83, 71, 54,255,192,176,162,255, -231,214,203,255,146,138,132,255, 59, 60, 60,255, 60, 61, 61,255,107, 99, 90,255,124,110, 89,255,113, 98, 75,255,130,115, 96,255, -151,136,120,255,170,155,140,255,183,168,154,255,192,176,163,255,193,177,163,255,174,159,144,255,112, 97, 79,255, 87, 74, 56,255, -155,140,125,255,195,180,167,255,197,182,167,255,194,178,165,255,193,177,163,255,193,178,164,255,194,179,165,255,193,177,164,255, -182,167,153,255,160,146,130,255,142,129,111,255,138,124,106,255,143,129,111,255,150,136,119,255,157,143,127,255,164,150,134,255, -171,156,141,255,176,161,146,255,179,164,150,255,180,165,151,255,180,165,150,255,178,163,148,255,175,160,145,255,170,155,140,255, -166,151,136,255,161,146,130,255,156,141,124,255,150,135,118,255,145,130,112,255,139,124,106,255,134,119, 99,255,129,114, 93,255, -124,109, 87,255,119,104, 81,255,114, 99, 75,255,110, 95, 71,255,108, 93, 69,255,105, 91, 67,255,103, 89, 66,255,101, 87, 64,255, - 99, 86, 63,255, 97, 84, 62,255, 95, 82, 60,255, 94, 80, 59,255, 93, 79, 58,255, 91, 78, 57,255, 90, 76, 56,255, 90, 76, 56,255, - 90, 76, 55,255, 91, 77, 56,255, 92, 79, 57,255, 96, 82, 60,255,102, 88, 65,255,113, 99, 77,255,129,115, 94,255,150,135,118,255, -171,156,141,255,190,174,161,255,204,189,176,255,213,197,185,255,218,202,190,255,220,204,192,255,221,205,193,255,222,206,194,255, -218,202,189,255,204,188,175,255,177,162,148,255,144,129,112,255,113, 98, 77,255,101, 87, 63,255,115,100, 79,255,169,155,139,255, -219,203,191,255,228,212,201,255,227,211,200,255,192,176,162,255,107, 93, 73,255, 62, 51, 36,255, 56, 45, 31,255,137,123,106,255, -228,211,200,255,149,140,135,255, 59, 60, 60,255, 61, 61, 61,255, 97, 90, 80,255,115,100, 78,255,122,107, 87,255,142,127,109,255, -163,149,132,255,178,163,148,255,189,174,160,255,193,177,164,255,178,163,148,255,114,101, 83,255, 76, 64, 46,255,149,135,119,255, -195,180,166,255,198,183,169,255,196,181,167,255,195,179,166,255,195,179,166,255,196,180,167,255,192,176,163,255,176,161,148,255, -149,135,118,255,135,121,103,255,137,123,105,255,145,131,114,255,154,139,122,255,162,147,131,255,169,154,138,255,175,160,145,255, -179,164,150,255,181,166,152,255,182,166,152,255,179,165,150,255,176,161,147,255,172,157,142,255,168,153,138,255,163,148,132,255, -158,143,126,255,153,138,120,255,147,132,114,255,142,127,108,255,136,121,102,255,131,116, 96,255,126,111, 90,255,121,106, 84,255, -117,102, 79,255,112, 97, 73,255,109, 94, 69,255,107, 92, 68,255,105, 91, 67,255,103, 88, 65,255,101, 86, 64,255, 99, 85, 63,255, - 97, 83, 61,255, 95, 81, 59,255, 92, 79, 58,255, 90, 77, 56,255, 89, 75, 55,255, 87, 74, 54,255, 85, 72, 52,255, 83, 71, 51,255, - 82, 69, 51,255, 81, 69, 50,255, 81, 68, 49,255, 82, 70, 50,255, 84, 71, 52,255, 88, 75, 55,255, 95, 81, 60,255,107, 93, 71,255, -128,113, 93,255,155,140,123,255,180,164,151,255,200,185,172,255,213,197,185,255,220,204,192,255,222,206,194,255,223,207,196,255, -224,207,196,255,220,204,192,255,204,188,176,255,175,160,146,255,140,125,108,255,109, 95, 72,255,100, 86, 62,255,122,107, 87,255, -186,171,157,255,226,210,198,255,229,213,202,255,224,208,196,255,160,145,128,255, 80, 67, 47,255, 53, 43, 29,255, 78, 66, 48,255, -206,191,177,255,151,143,137,255, 59, 60, 60,255, 61, 61, 61,255, 91, 83, 72,255,116,102, 79,255,132,117, 98,255,153,138,122,255, -172,157,142,255,185,170,157,255,193,177,164,255,183,167,153,255,127,113, 95,255, 74, 63, 45,255,134,119,103,255,196,179,166,255, -200,184,171,255,199,183,170,255,197,182,168,255,197,182,168,255,197,181,168,255,191,175,162,255,170,155,140,255,142,127,109,255, -131,117, 97,255,138,124,106,255,147,133,117,255,157,142,126,255,164,151,135,255,172,157,143,255,178,163,148,255,182,167,153,255, -183,168,154,255,182,167,153,255,180,165,151,255,176,160,146,255,172,156,141,255,166,151,135,255,161,146,130,255,156,142,125,255, -151,136,118,255,146,131,113,255,141,126,108,255,136,121,101,255,132,117, 96,255,127,112, 91,255,122,107, 85,255,118,103, 80,255, -114, 99, 75,255,110, 95, 70,255,109, 94, 69,255,107, 92, 68,255,104, 90, 66,255,102, 88, 65,255,101, 87, 64,255, 98, 84, 62,255, - 97, 83, 61,255, 94, 81, 59,255, 92, 79, 58,255, 90, 77, 56,255, 89, 75, 55,255, 86, 73, 53,255, 84, 71, 52,255, 82, 70, 50,255, - 80, 67, 48,255, 78, 66, 47,255, 76, 64, 46,255, 75, 63, 45,255, 74, 62, 45,255, 75, 63, 45,255, 77, 66, 48,255, 83, 71, 51,255, - 93, 79, 58,255,110, 96, 74,255,139,125,107,255,171,156,142,255,197,182,169,255,213,197,185,255,221,205,193,255,225,209,197,255, -225,209,198,255,226,210,198,255,221,205,193,255,201,186,173,255,170,155,139,255,131,116, 97,255,103, 89, 67,255,101, 87, 64,255, -141,126,108,255,208,192,181,255,230,214,202,255,231,215,204,255,210,195,183,255,117,103, 84,255, 61, 50, 34,255, 52, 41, 26,255, -155,140,124,255,151,142,137,255, 60, 60, 60,255, 61, 61, 61,255, 89, 81, 69,255,123,109, 88,255,141,127,109,255,163,149,133,255, -179,164,150,255,191,175,162,255,186,171,157,255,139,124,106,255, 76, 65, 46,255,110, 97, 80,255,188,173,159,255,202,186,173,255, -200,185,171,255,199,184,170,255,199,184,170,255,198,183,169,255,191,175,162,255,166,150,135,255,136,121,104,255,129,115, 95,255, -139,124,106,255,149,135,118,255,158,143,128,255,167,153,138,255,175,160,146,255,181,166,152,255,183,168,154,255,184,169,155,255, -183,168,154,255,180,165,150,255,176,161,146,255,172,156,141,255,167,152,136,255,162,147,130,255,157,142,125,255,152,137,120,255, -148,133,115,255,143,128,109,255,139,124,104,255,135,120,100,255,130,115, 95,255,126,112, 90,255,123,108, 85,255,118,103, 81,255, -114, 99, 76,255,111, 96, 71,255,109, 95, 69,255,107, 93, 68,255,105, 91, 67,255,104, 89, 66,255,102, 87, 64,255, 99, 85, 63,255, - 98, 84, 62,255, 96, 82, 60,255, 94, 80, 59,255, 92, 79, 58,255, 90, 76, 56,255, 87, 74, 54,255, 85, 72, 52,255, 83, 70, 51,255, - 81, 68, 49,255, 78, 66, 47,255, 76, 64, 46,255, 73, 61, 44,255, 71, 60, 42,255, 69, 57, 41,255, 69, 58, 41,255, 70, 59, 42,255, - 75, 63, 45,255, 84, 71, 51,255,100, 86, 64,255,129,114, 95,255,166,151,135,255,196,180,168,255,215,198,187,255,223,207,195,255, -227,210,199,255,227,211,200,255,228,212,200,255,220,204,192,255,195,179,166,255,158,143,127,255,118,104, 82,255, 98, 84, 62,255, -108, 94, 72,255,172,158,142,255,225,209,197,255,231,215,204,255,231,214,204,255,175,160,145,255, 79, 66, 48,255, 49, 40, 27,255, -100, 87, 70,255,142,133,127,255, 60, 60, 60,255, 61, 61, 61,255, 92, 85, 74,255,131,116, 97,255,151,137,120,255,172,157,142,255, -185,169,156,255,189,174,160,255,155,140,124,255, 84, 72, 54,255, 85, 73, 57,255,169,154,140,255,202,186,173,255,202,186,173,255, -201,185,172,255,201,185,172,255,200,184,171,255,191,176,163,255,166,151,136,255,132,117, 98,255,127,112, 93,255,138,124,106,255, -150,135,118,255,160,145,129,255,169,154,139,255,177,162,148,255,182,167,153,255,185,170,156,255,186,170,157,255,184,169,155,255, -181,166,151,255,177,162,147,255,173,158,143,255,168,153,138,255,164,149,133,255,159,144,127,255,155,140,123,255,151,136,118,255, -147,132,114,255,143,128,110,255,139,124,105,255,136,121,101,255,132,117, 97,255,128,114, 93,255,125,110, 88,255,121,107, 84,255, -119,104, 81,255,115,100, 76,255,112, 97, 72,255,109, 95, 70,255,108, 93, 69,255,107, 92, 68,255,105, 90, 67,255,102, 88, 65,255, -101, 87, 64,255, 99, 85, 62,255, 97, 83, 61,255, 95, 81, 60,255, 93, 79, 58,255, 90, 77, 56,255, 88, 75, 55,255, 86, 73, 53,255, - 83, 70, 51,255, 80, 67, 49,255, 78, 65, 47,255, 75, 63, 45,255, 71, 59, 43,255, 69, 57, 41,255, 66, 55, 39,255, 65, 54, 38,255, - 65, 54, 38,255, 68, 57, 41,255, 77, 65, 46,255, 94, 80, 59,255,123,109, 88,255,165,150,135,255,199,183,170,255,217,201,189,255, -225,209,197,255,228,212,200,255,230,213,201,255,228,212,201,255,216,200,188,255,182,167,153,255,141,126,108,255,105, 91, 67,255, - 96, 82, 60,255,131,118, 98,255,207,191,179,255,232,215,204,255,232,216,205,255,216,199,188,255,116,103, 85,255, 55, 45, 31,255, - 67, 57, 42,255,119,111,103,255, 60, 60, 61,255, 61, 61, 61,255, 95, 87, 77,255,139,124,106,255,160,146,130,255,178,163,148,255, -187,172,158,255,173,157,143,255,105, 92, 74,255, 66, 55, 39,255,133,119,102,255,199,183,170,255,204,189,176,255,203,187,174,255, -203,187,174,255,201,186,173,255,194,178,165,255,167,153,137,255,130,116, 97,255,123,108, 88,255,136,121,104,255,149,134,118,255, -160,145,129,255,170,155,140,255,178,163,149,255,185,169,155,255,187,172,158,255,188,172,159,255,186,171,157,255,184,168,154,255, -180,165,150,255,176,160,146,255,172,156,141,255,167,152,136,255,163,148,131,255,159,144,127,255,155,140,123,255,152,137,119,255, -148,133,115,255,145,130,112,255,142,127,108,255,138,123,104,255,135,120,100,255,132,117, 97,255,129,114, 93,255,126,111, 90,255, -123,108, 86,255,120,105, 83,255,117,102, 79,255,114, 99, 74,255,111, 96, 71,255,109, 94, 70,255,107, 92, 68,255,106, 91, 68,255, -104, 90, 66,255,102, 88, 65,255,100, 86, 64,255, 98, 84, 62,255, 96, 82, 60,255, 94, 81, 59,255, 91, 78, 57,255, 89, 75, 55,255, - 87, 74, 54,255, 84, 71, 51,255, 80, 68, 49,255, 77, 65, 46,255, 74, 62, 44,255, 70, 59, 42,255, 67, 55, 39,255, 63, 53, 37,255, - 61, 51, 35,255, 61, 51, 35,255, 64, 53, 37,255, 73, 61, 43,255, 91, 77, 56,255,126,111, 92,255,170,156,141,255,204,188,175,255, -221,205,193,255,227,211,200,255,230,214,202,255,231,214,203,255,228,211,200,255,206,191,178,255,165,150,135,255,120,106, 84,255, - 96, 82, 59,255,104, 89, 67,255,175,160,145,255,228,212,202,255,232,215,204,255,230,214,203,255,163,148,132,255, 68, 56, 40,255, - 54, 45, 32,255, 93, 86, 76,255, 61, 61, 61,255, 61, 61, 61,255, 98, 90, 80,255,147,132,115,255,168,153,138,255,182,166,152,255, -183,167,154,255,134,120,103,255, 69, 58, 41,255, 93, 81, 63,255,184,169,155,255,206,190,177,255,205,189,177,255,205,189,176,255, -204,188,175,255,197,182,169,255,173,159,144,255,132,118, 99,255,119,105, 84,255,133,118,100,255,147,133,116,255,159,144,128,255, -170,155,140,255,178,163,149,255,186,170,157,255,188,173,160,255,189,174,160,255,188,173,159,255,186,171,156,255,183,167,153,255, -179,164,149,255,175,160,145,255,171,156,141,255,167,153,136,255,164,149,133,255,161,146,129,255,157,142,126,255,154,139,122,255, -151,136,118,255,148,133,115,255,145,130,112,255,142,128,109,255,139,124,105,255,136,121,102,255,134,119, 99,255,131,116, 95,255, -128,114, 92,255,125,110, 89,255,122,107, 85,255,119,104, 81,255,116,101, 77,255,113, 98, 74,255,110, 95, 71,255,109, 94, 69,255, -107, 92, 68,255,105, 90, 67,255,104, 89, 66,255,101, 87, 64,255,100, 86, 63,255, 97, 83, 61,255, 95, 81, 60,255, 93, 80, 58,255, - 91, 77, 56,255, 88, 75, 54,255, 85, 71, 52,255, 81, 69, 49,255, 78, 66, 47,255, 73, 62, 44,255, 69, 58, 41,255, 66, 54, 38,255, - 62, 51, 36,255, 59, 48, 34,255, 58, 48, 33,255, 60, 50, 35,255, 71, 59, 42,255, 92, 79, 58,255,134,120,100,255,181,166,152,255, -211,195,183,255,225,208,197,255,230,213,202,255,231,215,204,255,231,215,204,255,223,206,195,255,187,172,158,255,141,126,108,255, -102, 88, 65,255, 93, 79, 57,255,138,124,105,255,218,202,190,255,232,215,204,255,232,216,205,255,203,186,173,255, 90, 77, 59,255, - 50, 42, 29,255, 74, 67, 59,255, 61, 61, 62,255, 61, 61, 61,255,101, 93, 84,255,154,140,124,255,173,158,144,255,182,167,153,255, -161,146,131,255, 90, 78, 59,255, 69, 59, 42,255,148,133,117,255,203,188,176,255,207,191,179,255,206,190,178,255,205,190,177,255, -201,186,173,255,183,168,154,255,140,125,108,255,115,101, 79,255,127,113, 93,255,143,130,112,255,157,142,127,255,168,153,138,255, -180,164,150,255,186,171,157,255,189,174,160,255,191,175,162,255,191,175,162,255,188,173,159,255,186,171,157,255,183,168,153,255, -179,164,149,255,176,160,146,255,173,158,142,255,170,155,139,255,167,152,136,255,164,149,132,255,161,146,129,255,158,143,126,255, -155,140,123,255,153,138,120,255,150,135,117,255,147,132,114,255,145,130,111,255,142,127,108,255,139,124,104,255,135,120,101,255, -133,118, 98,255,130,115, 95,255,127,112, 91,255,124,109, 87,255,120,106, 83,255,117,102, 79,255,114, 99, 75,255,111, 96, 72,255, -109, 94, 69,255,107, 93, 68,255,105, 91, 67,255,104, 90, 66,255,103, 89, 65,255,100, 86, 64,255, 99, 85, 63,255, 97, 83, 61,255, - 94, 81, 59,255, 92, 78, 57,255, 90, 76, 55,255, 86, 73, 53,255, 83, 70, 50,255, 79, 66, 47,255, 73, 62, 44,255, 69, 58, 41,255, - 65, 54, 38,255, 60, 50, 34,255, 56, 46, 32,255, 56, 46, 32,255, 59, 48, 34,255, 71, 60, 43,255, 98, 85, 63,255,150,136,118,255, -195,179,166,255,219,202,191,255,228,211,200,255,231,215,204,255,232,216,205,255,230,213,203,255,209,193,181,255,160,145,130,255, -113, 99, 77,255, 91, 77, 56,255,112, 97, 76,255,198,183,170,255,232,216,205,255,232,215,204,255,225,209,198,255,123,108, 90,255, - 51, 42, 30,255, 63, 58, 51,255, 61, 62, 62,255, 60, 61, 61,255,104, 97, 88,255,161,146,131,255,176,161,146,255,175,160,146,255, -122,108, 89,255, 65, 54, 38,255, 93, 81, 64,255,185,170,156,255,208,192,180,255,209,193,180,255,208,192,179,255,206,190,177,255, -192,176,163,255,155,140,124,255,113, 99, 77,255,119,105, 84,255,138,124,106,255,153,139,122,255,166,151,136,255,177,162,148,255, -186,171,157,255,191,175,162,255,193,177,164,255,193,177,164,255,192,176,162,255,190,173,160,255,187,171,157,255,184,168,154,255, -181,166,151,255,178,163,148,255,175,160,146,255,173,158,143,255,170,155,139,255,168,152,137,255,165,150,134,255,162,147,131,255, -160,145,128,255,157,142,125,255,155,140,122,255,153,138,120,255,150,135,117,255,147,132,114,255,144,130,111,255,141,126,107,255, -137,123,103,255,134,119,100,255,131,116, 96,255,128,113, 92,255,124,109, 88,255,121,106, 84,255,118,103, 80,255,115,100, 76,255, -111, 96, 72,255,109, 94, 70,255,108, 93, 69,255,106, 91, 67,255,104, 90, 66,255,103, 89, 65,255,101, 87, 64,255, 99, 85, 63,255, - 98, 84, 62,255, 96, 82, 60,255, 94, 79, 58,255, 91, 78, 57,255, 87, 74, 54,255, 84, 71, 52,255, 79, 67, 48,255, 73, 62, 44,255, - 69, 57, 40,255, 62, 52, 36,255, 58, 47, 32,255, 54, 44, 30,255, 53, 43, 30,255, 59, 48, 33,255, 76, 64, 45,255,115,101, 80,255, -172,157,141,255,208,193,180,255,225,208,197,255,231,215,203,255,233,216,205,255,232,215,204,255,224,207,196,255,180,165,151,255, -127,113, 93,255, 94, 80, 59,255, 97, 84, 62,255,176,161,146,255,230,215,203,255,232,215,204,255,233,217,206,255,161,146,130,255, - 57, 47, 32,255, 60, 57, 51,255, 62, 62, 62,255, 60, 61, 61,255,107,100, 91,255,166,152,136,255,173,158,144,255,156,141,125,255, - 87, 74, 55,255, 61, 51, 36,255,132,117,100,255,201,186,173,255,210,194,182,255,209,193,181,255,209,193,180,255,202,186,173,255, -171,156,141,255,122,108, 87,255,110, 95, 72,255,129,115, 95,255,148,134,116,255,162,147,132,255,174,160,145,255,185,169,156,255, -192,176,163,255,194,178,165,255,196,180,167,255,195,179,166,255,193,177,163,255,191,175,161,255,189,173,159,255,186,171,157,255, -184,169,154,255,182,167,152,255,180,165,150,255,177,162,147,255,174,159,144,255,172,157,142,255,170,155,139,255,168,153,137,255, -165,150,134,255,163,148,132,255,160,145,129,255,158,143,125,255,155,140,123,255,153,138,120,255,150,135,116,255,147,132,113,255, -143,128,109,255,139,125,106,255,136,121,101,255,132,117, 98,255,129,114, 93,255,125,110, 89,255,121,106, 84,255,118,102, 80,255, -114, 99, 76,255,111, 96, 72,255,109, 94, 69,255,107, 93, 68,255,105, 91, 67,255,104, 89, 66,255,103, 89, 65,255,101, 87, 64,255, -100, 86, 63,255, 98, 85, 62,255, 97, 83, 61,255, 95, 81, 60,255, 92, 79, 57,255, 89, 76, 56,255, 85, 72, 52,255, 80, 68, 49,255, - 74, 62, 45,255, 68, 56, 39,255, 61, 50, 35,255, 56, 45, 31,255, 52, 42, 29,255, 52, 43, 30,255, 61, 51, 35,255, 88, 75, 55,255, -143,128,110,255,193,178,165,255,219,203,192,255,229,213,201,255,233,216,205,255,233,216,205,255,229,213,202,255,201,187,173,255, -141,127,109,255, 98, 85, 63,255, 91, 77, 56,255,156,141,124,255,228,212,200,255,231,214,203,255,234,217,206,255,195,179,166,255, - 69, 58, 41,255, 61, 58, 54,255, 61, 62, 62,255, 60, 61, 61,255,110,103, 94,255,168,154,139,255,168,153,138,255,127,113, 94,255, - 66, 56, 41,255, 77, 65, 49,255,165,150,134,255,209,193,180,255,212,196,183,255,211,195,182,255,208,192,180,255,191,176,162,255, -142,127,109,255,106, 92, 68,255,118,103, 82,255,139,125,107,255,157,142,126,255,170,155,140,255,182,167,153,255,190,175,161,255, -195,179,166,255,197,181,168,255,197,181,168,255,196,181,167,255,195,179,166,255,193,177,164,255,192,176,162,255,190,175,161,255, -188,172,158,255,186,170,156,255,184,168,154,255,182,166,152,255,180,165,150,255,177,162,147,255,176,161,146,255,174,159,143,255, -171,156,140,255,169,154,139,255,167,152,136,255,164,149,133,255,162,147,129,255,159,144,127,255,155,140,123,255,152,137,119,255, -148,134,116,255,145,130,111,255,141,126,107,255,137,122,102,255,132,118, 98,255,129,114, 93,255,124,110, 88,255,120,106, 84,255, -116,101, 79,255,113, 98, 74,255,110, 95, 70,255,108, 93, 69,255,107, 92, 68,255,104, 90, 66,255,103, 89, 65,255,102, 88, 65,255, -101, 86, 63,255,100, 86, 63,255, 99, 85, 63,255, 97, 84, 61,255, 96, 82, 60,255, 94, 80, 59,255, 91, 77, 56,255, 86, 73, 53,255, - 80, 68, 49,255, 73, 61, 43,255, 66, 55, 39,255, 59, 49, 34,255, 52, 43, 30,255, 50, 41, 28,255, 54, 44, 30,255, 70, 58, 41,255, -113,100, 79,255,175,159,145,255,212,196,183,255,227,210,199,255,232,216,204,255,233,217,205,255,231,215,204,255,216,200,188,255, -158,143,127,255,104, 91, 68,255, 87, 74, 54,255,141,126,108,255,224,207,196,255,231,215,203,255,232,215,204,255,218,201,190,255, - 88, 76, 59,255, 65, 63, 58,255, 61, 61, 62,255, 60, 60, 61,255,113,105, 97,255,167,152,137,255,159,144,128,255, 99, 86, 66,255, - 57, 47, 33,255, 96, 83, 65,255,188,172,158,255,211,196,183,255,213,196,184,255,211,195,183,255,204,189,176,255,173,157,143,255, -117,103, 81,255,107, 92, 68,255,127,113, 92,255,148,133,116,255,164,150,134,255,177,162,148,255,188,173,159,255,194,180,166,255, -198,183,170,255,200,184,171,255,199,184,170,255,199,183,170,255,197,182,168,255,196,180,167,255,195,179,166,255,193,178,165,255, -192,176,162,255,190,175,161,255,189,174,159,255,186,171,157,255,185,170,155,255,184,169,154,255,182,166,152,255,180,165,151,255, -179,163,148,255,177,162,147,255,174,159,144,255,172,156,141,255,169,153,138,255,166,151,134,255,162,147,130,255,159,144,127,255, -155,140,123,255,151,136,119,255,147,132,114,255,143,128,109,255,137,123,104,255,133,118, 98,255,128,114, 93,255,124,109, 88,255, -119,105, 83,255,115,100, 77,255,110, 96, 72,255,108, 93, 69,255,107, 92, 68,255,104, 90, 66,255,103, 89, 65,255,102, 87, 64,255, -100, 86, 63,255,100, 85, 63,255, 99, 85, 63,255, 99, 85, 63,255, 98, 84, 62,255, 97, 83, 61,255, 95, 81, 60,255, 91, 78, 57,255, - 86, 73, 53,255, 80, 68, 48,255, 72, 60, 43,255, 64, 53, 37,255, 56, 46, 32,255, 50, 41, 28,255, 49, 40, 27,255, 58, 48, 33,255, - 89, 76, 56,255,151,137,120,255,202,186,173,255,222,206,195,255,230,213,202,255,233,216,205,255,232,216,204,255,222,206,195,255, -175,159,145,255,111, 96, 75,255, 86, 73, 53,255,131,117, 98,255,221,205,193,255,231,215,204,255,229,213,201,255,229,212,201,255, -111, 98, 80,255, 74, 71, 67,255, 61, 61, 61,255, 60, 60, 61,255,113,106, 98,255,164,150,134,255,143,128,111,255, 77, 65, 47,255, - 59, 49, 34,255,120,106, 88,255,202,186,174,255,213,197,185,255,213,197,185,255,211,195,183,255,197,182,169,255,150,135,117,255, -104, 90, 68,255,112, 98, 75,255,135,121,102,255,155,141,124,255,171,156,141,255,184,169,155,255,193,178,164,255,198,183,170,255, -201,185,172,255,202,186,173,255,202,186,173,255,201,186,172,255,200,185,171,255,199,184,170,255,198,183,169,255,197,182,168,255, -196,180,167,255,195,179,165,255,194,178,165,255,193,177,163,255,192,176,162,255,191,175,161,255,189,174,160,255,188,173,159,255, -187,171,157,255,185,170,155,255,183,168,153,255,181,166,151,255,178,163,148,255,175,160,145,255,171,156,140,255,167,152,136,255, -163,148,132,255,159,144,127,255,154,139,122,255,149,135,117,255,144,129,111,255,139,125,105,255,134,119, 99,255,129,114, 93,255, -123,108, 87,255,118,103, 80,255,112, 98, 74,255,109, 94, 70,255,107, 92, 68,255,104, 90, 66,255,103, 88, 65,255,101, 87, 64,255, -100, 86, 63,255, 98, 84, 62,255, 98, 84, 62,255, 98, 84, 62,255, 98, 85, 62,255, 98, 84, 62,255, 98, 84, 62,255, 96, 82, 60,255, - 92, 78, 58,255, 86, 73, 52,255, 78, 66, 47,255, 69, 58, 41,255, 60, 50, 35,255, 52, 43, 29,255, 47, 38, 26,255, 51, 42, 29,255, - 73, 61, 43,255,128,112, 93,255,189,174,160,255,218,202,190,255,228,212,201,255,232,216,204,255,232,216,204,255,225,209,198,255, -187,172,158,255,117,102, 81,255, 87, 74, 54,255,126,112, 93,255,220,204,193,255,231,215,204,255,227,210,199,255,233,217,206,255, -131,118,102,255, 81, 78, 74,255, 61, 61, 61,255, 60, 60, 61,255,113,106, 98,255,160,146,130,255,121,107, 87,255, 64, 52, 37,255, - 66, 55, 38,255,142,128,111,255,209,193,181,255,214,198,186,255,214,198,186,255,209,193,181,255,187,172,159,255,126,112, 92,255, -101, 87, 63,255,118,104, 83,255,143,128,110,255,161,147,131,255,176,161,146,255,188,173,160,255,197,181,168,255,201,186,173,255, -203,187,174,255,204,188,175,255,204,188,175,255,204,188,175,255,203,188,175,255,203,187,174,255,202,187,173,255,201,185,172,255, -200,185,171,255,200,184,171,255,199,183,170,255,199,183,170,255,198,183,169,255,198,182,169,255,198,182,169,255,197,181,168,255, -196,180,166,255,194,179,165,255,193,177,164,255,191,175,161,255,189,173,159,255,186,170,156,255,182,167,152,255,178,163,148,255, -174,159,144,255,169,154,138,255,164,149,133,255,158,143,127,255,153,138,121,255,147,132,114,255,141,126,108,255,135,120,101,255, -128,114, 93,255,122,108, 86,255,116,101, 79,255,111, 96, 71,255,107, 93, 68,255,104, 90, 66,255,103, 88, 65,255,100, 86, 63,255, - 98, 84, 62,255, 97, 83, 61,255, 96, 83, 61,255, 97, 83, 61,255, 97, 83, 61,255, 99, 85, 62,255, 99, 85, 62,255,100, 86, 63,255, - 98, 84, 62,255, 92, 78, 57,255, 85, 71, 52,255, 76, 64, 46,255, 65, 54, 39,255, 56, 46, 32,255, 49, 40, 28,255, 47, 39, 27,255, - 62, 52, 36,255,107, 93, 72,255,175,160,145,255,212,197,185,255,227,210,199,255,231,215,203,255,231,215,204,255,226,210,198,255, -195,179,167,255,122,108, 87,255, 86, 74, 53,255,126,112, 93,255,221,206,193,255,231,214,203,255,225,209,197,255,234,218,207,255, -147,134,118,255, 94, 90, 85,255, 61, 61, 61,255, 60, 61, 61,255,112,104, 96,255,155,140,124,255,102, 88, 67,255, 57, 47, 33,255, - 73, 61, 43,255,161,145,129,255,213,196,184,255,216,200,188,255,215,199,186,255,207,191,178,255,174,159,145,255,109, 95, 73,255, -101, 88, 64,255,124,109, 89,255,149,134,117,255,167,153,137,255,182,167,153,255,193,177,164,255,200,184,171,255,203,187,174,255, -206,190,177,255,207,191,178,255,207,191,178,255,207,191,178,255,207,191,178,255,206,190,178,255,206,190,177,255,205,190,177,255, -205,189,177,255,205,189,177,255,205,189,176,255,205,189,176,255,205,189,176,255,205,189,176,255,205,189,176,255,205,189,176,255, -204,189,176,255,204,188,175,255,203,187,174,255,202,186,173,255,201,185,172,255,198,183,169,255,196,180,167,255,193,177,163,255, -188,172,159,255,184,168,154,255,179,163,148,255,172,157,142,255,165,150,135,255,159,144,127,255,151,136,119,255,144,129,112,255, -137,122,103,255,129,115, 94,255,122,107, 86,255,114, 99, 76,255,109, 94, 70,255,106, 90, 67,255,103, 88, 65,255,100, 86, 63,255, - 97, 83, 61,255, 96, 82, 60,255, 94, 80, 59,255, 94, 80, 59,255, 95, 81, 60,255, 98, 84, 61,255,100, 86, 64,255,101, 87, 64,255, -102, 87, 64,255, 98, 84, 62,255, 90, 78, 56,255, 83, 70, 51,255, 72, 60, 43,255, 60, 50, 35,255, 51, 42, 29,255, 46, 39, 26,255, - 54, 45, 31,255, 92, 79, 58,255,161,146,130,255,207,191,178,255,224,208,196,255,230,214,202,255,231,214,203,255,226,209,198,255, -198,182,169,255,127,112, 92,255, 86, 73, 53,255,131,117, 99,255,224,208,196,255,230,213,202,255,224,208,196,255,234,217,206,255, -160,145,130,255,116,110,105,255, 60, 60, 60,255, 60, 61, 61,255,111,103, 95,255,145,131,113,255, 88, 75, 54,255, 54, 45, 31,255, - 80, 67, 49,255,174,158,143,255,215,199,187,255,216,200,188,255,215,199,187,255,203,187,174,255,161,145,130,255,101, 87, 64,255, -104, 90, 67,255,129,115, 95,255,154,138,122,255,171,156,141,255,186,171,157,255,196,181,167,255,202,186,174,255,205,190,177,255, -208,192,179,255,209,193,180,255,210,194,181,255,210,194,181,255,210,194,182,255,210,194,181,255,210,194,181,255,210,194,181,255, -210,194,181,255,210,194,181,255,210,194,181,255,210,194,182,255,210,194,182,255,211,195,182,255,211,195,182,255,212,195,183,255, -212,196,184,255,212,196,184,255,212,196,184,255,212,196,183,255,211,195,183,255,210,194,182,255,210,194,181,255,208,192,180,255, -205,189,176,255,201,185,173,255,197,181,168,255,190,175,161,255,183,168,153,255,175,160,145,255,166,151,136,255,157,142,125,255, -148,133,116,255,139,125,106,255,130,116, 96,255,121,107, 85,255,113, 98, 74,255,107, 92, 68,255,103, 89, 65,255, 99, 85, 63,255, - 97, 83, 61,255, 94, 81, 59,255, 93, 79, 58,255, 92, 79, 57,255, 93, 79, 58,255, 95, 81, 60,255, 99, 85, 62,255,102, 88, 65,255, -104, 90, 66,255,104, 89, 66,255, 98, 84, 62,255, 89, 76, 55,255, 78, 66, 48,255, 66, 55, 39,255, 54, 45, 31,255, 47, 39, 26,255, - 50, 41, 28,255, 83, 70, 51,255,149,134,116,255,201,185,172,255,221,205,193,255,229,213,201,255,230,213,202,255,224,208,196,255, -196,181,168,255,126,112, 92,255, 85, 72, 52,255,143,128,110,255,227,211,199,255,228,212,200,255,223,207,195,255,234,218,206,255, -163,149,134,255,134,127,123,255, 60, 60, 60,255, 60, 61, 61,255,109,101, 93,255,135,120,101,255, 78, 66, 48,255, 53, 43, 30,255, - 87, 74, 54,255,180,165,151,255,216,200,189,255,218,202,190,255,215,199,186,255,201,184,172,255,146,131,114,255, 97, 82, 60,255, -105, 91, 68,255,133,119,100,255,157,142,126,255,175,160,145,255,189,174,160,255,198,182,170,255,204,188,176,255,208,192,179,255, -209,193,181,255,210,194,182,255,212,196,184,255,213,197,184,255,212,196,184,255,214,198,184,255,213,197,185,255,213,197,185,255, -213,197,185,255,214,197,185,255,214,198,185,255,214,198,187,255,215,199,186,255,215,199,187,255,216,200,188,255,217,201,189,255, -216,200,188,255,216,200,188,255,216,200,188,255,217,201,189,255,217,201,189,255,217,201,189,255,217,201,189,255,216,200,188,255, -216,200,188,255,214,198,186,255,213,197,185,255,209,193,180,255,204,188,175,255,196,180,167,255,187,171,157,255,176,161,146,255, -164,149,133,255,153,138,121,255,143,128,110,255,132,117, 97,255,121,106, 84,255,111, 96, 73,255,105, 91, 67,255,100, 86, 63,255, - 96, 82, 60,255, 93, 79, 58,255, 91, 78, 57,255, 89, 76, 55,255, 89, 76, 55,255, 92, 78, 57,255, 96, 83, 60,255,102, 88, 65,255, -107, 92, 68,255,109, 95, 72,255,105, 91, 68,255, 97, 83, 61,255, 85, 72, 53,255, 71, 60, 42,255, 58, 48, 34,255, 49, 40, 28,255, - 48, 40, 28,255, 76, 64, 46,255,140,125,106,255,196,180,167,255,219,203,191,255,227,211,199,255,228,212,200,255,220,204,192,255, -192,176,163,255,121,107, 87,255, 85, 73, 53,255,161,146,130,255,231,214,203,255,227,211,199,255,222,206,194,255,233,217,206,255, -162,148,135,255,147,139,134,255, 60, 60, 60,255, 60, 61, 61,255,107, 99, 90,255,125,110, 90,255, 73, 61, 43,255, 53, 44, 30,255, - 89, 76, 57,255,184,168,154,255,217,201,189,255,218,202,190,255,215,199,186,255,198,183,170,255,135,120,101,255, 94, 80, 58,255, -106, 92, 69,255,136,121,103,255,158,144,128,255,177,162,148,255,191,175,162,255,200,184,171,255,206,190,177,255,209,194,181,255, -211,195,183,255,213,197,185,255,214,198,185,255,214,198,186,255,215,199,187,255,216,200,187,255,216,200,188,255,216,200,188,255, -216,200,188,255,217,201,189,255,217,201,189,255,217,201,189,255,217,201,189,255,217,201,189,255,217,201,189,255,217,201,189,255, -217,201,189,255,217,201,189,255,218,201,189,255,218,202,190,255,218,201,190,255,218,201,190,255,219,203,191,255,219,203,191,255, -219,203,191,255,219,203,191,255,219,203,191,255,218,202,190,255,216,200,188,255,213,197,185,255,208,192,180,255,199,184,171,255, -188,172,158,255,173,158,143,255,159,144,128,255,145,130,112,255,132,117, 98,255,120,105, 83,255,108, 94, 69,255,103, 88, 64,255, - 96, 82, 60,255, 91, 78, 57,255, 89, 76, 55,255, 87, 74, 54,255, 86, 74, 54,255, 88, 75, 55,255, 94, 80, 59,255,101, 87, 63,255, -109, 94, 70,255,117,102, 81,255,117,102, 80,255,106, 92, 69,255, 93, 80, 58,255, 77, 65, 47,255, 62, 52, 36,255, 51, 42, 29,255, - 48, 39, 28,255, 72, 61, 43,255,134,119,100,255,191,176,163,255,216,200,188,255,225,209,198,255,227,210,199,255,216,200,188,255, -183,168,154,255,112, 99, 78,255, 91, 78, 58,255,184,168,154,255,231,215,204,255,225,208,197,255,222,205,193,255,233,216,205,255, -166,154,142,255,153,144,139,255, 59, 60, 60,255, 61, 61, 61,255,104, 97, 87,255,118,104, 83,255, 69, 58, 41,255, 53, 43, 30,255, - 90, 77, 57,255,183,168,153,255,217,202,190,255,219,202,190,255,215,199,187,255,196,181,168,255,134,120,100,255, 91, 78, 56,255, -107, 92, 70,255,136,120,103,255,160,145,130,255,178,163,148,255,192,177,163,255,201,185,172,255,206,190,178,255,210,194,182,255, -213,197,185,255,214,198,186,255,215,199,187,255,216,200,188,255,216,200,188,255,217,201,189,255,217,201,189,255,217,201,189,255, -217,201,189,255,218,202,190,255,218,202,190,255,218,202,190,255,217,201,189,255,217,201,189,255,216,200,188,255,216,200,188,255, -216,200,188,255,216,200,188,255,217,201,189,255,217,201,189,255,218,202,190,255,218,202,190,255,219,202,191,255,219,203,191,255, -219,203,191,255,220,203,192,255,220,204,192,255,220,204,192,255,219,203,191,255,219,203,191,255,217,201,189,255,214,198,186,255, -209,193,181,255,199,183,170,255,184,168,154,255,164,149,134,255,147,132,114,255,132,117, 97,255,117,102, 80,255,105, 91, 67,255, - 98, 84, 62,255, 91, 78, 57,255, 86, 73, 53,255, 84, 71, 52,255, 83, 70, 51,255, 84, 71, 52,255, 90, 76, 56,255, 99, 85, 62,255, -109, 94, 71,255,123,108, 88,255,128,114, 94,255,120,106, 85,255,103, 88, 65,255, 84, 72, 52,255, 66, 55, 39,255, 53, 43, 30,255, - 48, 40, 29,255, 70, 59, 42,255,132,117, 98,255,189,173,160,255,213,197,185,255,223,207,195,255,223,207,195,255,209,194,181,255, -170,154,139,255,101, 88, 67,255,107, 94, 73,255,206,190,178,255,231,215,203,255,223,207,195,255,222,206,194,255,229,212,200,255, -180,167,155,255,153,144,138,255, 59, 60, 60,255, 61, 61, 61,255,102, 94, 85,255,114, 99, 77,255, 67, 56, 40,255, 53, 43, 30,255, - 87, 74, 54,255,179,162,148,255,218,202,190,255,220,204,192,255,216,200,188,255,196,180,167,255,137,123,104,255, 91, 77, 55,255, -105, 91, 69,255,134,120,101,255,159,144,128,255,179,164,149,255,192,177,163,255,202,185,173,255,207,191,178,255,212,196,183,255, -213,197,185,255,215,199,187,255,217,201,189,255,218,200,188,255,218,201,189,255,218,202,190,255,219,202,191,255,219,203,191,255, -219,202,190,255,218,201,189,255,218,202,190,255,216,200,188,255,217,200,188,255,216,199,187,255,216,200,188,255,216,200,188,255, -216,200,188,255,216,199,187,255,217,200,188,255,216,200,188,255,216,200,188,255,217,201,189,255,217,201,189,255,217,201,189,255, -217,201,189,255,218,202,190,255,218,202,190,255,218,202,190,255,219,202,191,255,220,202,192,255,219,203,191,255,218,202,190,255, -217,201,189,255,213,197,185,255,206,190,177,255,192,177,163,255,171,156,140,255,147,132,115,255,128,113, 93,255,112, 97, 73,255, -101, 87, 64,255, 93, 79, 58,255, 85, 72, 52,255, 80, 68, 49,255, 79, 67, 48,255, 80, 68, 49,255, 86, 74, 53,255, 97, 83, 60,255, -110, 95, 72,255,128,113, 93,255,137,122,104,255,134,119,101,255,117,102, 81,255, 93, 80, 58,255, 71, 60, 43,255, 55, 45, 32,255, - 48, 41, 29,255, 71, 59, 42,255,133,119, 99,255,187,172,158,255,212,196,184,255,221,204,193,255,219,202,191,255,200,184,172,255, -150,136,119,255, 94, 79, 58,255,140,125,107,255,222,206,194,255,230,213,202,255,222,206,194,255,225,209,197,255,209,193,180,255, -211,196,185,255,150,141,135,255, 59, 60, 60,255, 61, 61, 61,255, 99, 92, 82,255,112, 96, 74,255, 68, 57, 40,255, 52, 43, 30,255, - 82, 69, 50,255,168,153,138,255,217,201,189,255,221,204,193,255,216,200,188,255,199,184,171,255,139,124,107,255, 92, 79, 57,255, -101, 88, 65,255,132,117, 98,255,157,143,126,255,178,162,148,255,192,176,163,255,201,185,173,255,207,191,179,255,212,196,183,255, -214,198,186,255,216,200,188,255,217,201,189,255,217,202,190,255,218,202,190,255,219,203,191,255,219,202,190,255,218,202,190,255, -217,201,189,255,217,201,189,255,216,200,188,255,216,199,187,255,216,200,188,255,216,200,188,255,215,199,187,255,215,199,187,255, -215,199,187,255,215,199,187,255,215,199,187,255,215,199,187,255,215,199,187,255,215,199,187,255,215,199,187,255,216,200,188,255, -216,200,188,255,216,200,188,255,217,200,188,255,217,201,189,255,217,201,189,255,218,201,189,255,218,202,190,255,218,202,190,255, -218,202,190,255,217,202,189,255,215,199,187,255,208,193,180,255,196,180,167,255,174,159,143,255,146,131,113,255,121,107, 85,255, -105, 90, 67,255, 94, 80, 59,255, 85, 72, 52,255, 77, 65, 47,255, 75, 63, 46,255, 76, 64, 45,255, 83, 70, 51,255, 94, 81, 59,255, -110, 97, 73,255,132,118, 99,255,145,130,113,255,146,131,114,255,132,117, 97,255,102, 89, 66,255, 78, 66, 47,255, 57, 47, 33,255, - 49, 40, 30,255, 74, 62, 45,255,136,122,103,255,186,171,158,255,209,193,181,255,217,201,188,255,212,196,184,255,187,172,158,255, -128,114, 95,255,100, 86, 64,255,176,162,147,255,228,211,200,255,227,211,199,255,223,206,195,255,230,213,202,255,191,177,165,255, -236,219,208,255,149,140,134,255, 59, 60, 60,255, 61, 61, 61,255, 98, 90, 80,255,110, 95, 73,255, 70, 58, 41,255, 51, 42, 29,255, - 76, 64, 45,255,154,140,123,255,214,198,186,255,221,205,192,255,218,202,190,255,204,188,176,255,148,133,116,255, 92, 79, 56,255, - 99, 84, 62,255,125,111, 91,255,153,139,123,255,175,160,146,255,190,174,161,255,200,184,171,255,207,191,178,255,212,196,183,255, -213,197,185,255,216,200,188,255,218,201,189,255,217,202,190,255,218,202,190,255,218,202,190,255,218,202,190,255,218,201,189,255, -217,200,188,255,217,201,189,255,216,200,188,255,215,199,187,255,215,199,187,255,215,199,187,255,215,198,187,255,214,199,187,255, -215,199,186,255,215,199,186,255,214,198,186,255,214,198,186,255,214,198,186,255,214,198,186,255,214,198,186,255,214,198,186,255, -214,198,186,255,214,198,186,255,215,199,186,255,215,199,187,255,215,199,187,255,215,199,187,255,216,200,188,255,216,200,188,255, -217,201,189,255,217,201,189,255,217,201,189,255,215,199,187,255,209,193,181,255,197,181,168,255,174,159,144,255,140,125,107,255, -112, 97, 74,255, 97, 83, 60,255, 85, 73, 53,255, 75, 63, 46,255, 70, 59, 42,255, 72, 60, 43,255, 80, 68, 48,255, 94, 80, 58,255, -113, 99, 76,255,137,123,105,255,153,138,122,255,156,141,124,255,144,130,112,255,114, 99, 77,255, 83, 70, 51,255, 58, 48, 34,255, - 49, 41, 29,255, 80, 68, 49,255,142,128,109,255,186,170,157,255,206,190,178,255,212,196,183,255,202,187,174,255,166,152,137,255, -108, 94, 72,255,127,113, 93,255,204,188,176,255,230,213,202,255,226,210,198,255,225,208,197,255,220,203,192,255,214,199,187,255, -238,221,210,255,154,144,138,255, 59, 60, 60,255, 61, 61, 61,255, 95, 88, 78,255,109, 95, 73,255, 72, 61, 44,255, 52, 42, 29,255, - 69, 57, 41,255,136,122,103,255,208,192,180,255,221,204,192,255,220,203,192,255,207,191,179,255,166,151,135,255, 98, 84, 63,255, - 94, 80, 58,255,119,105, 84,255,148,133,116,255,171,156,141,255,188,173,159,255,199,183,170,255,205,189,177,255,210,194,182,255, -213,197,185,255,215,199,187,255,217,201,189,255,218,201,189,255,217,201,189,255,217,201,189,255,218,201,189,255,217,200,188,255, -216,200,188,255,215,199,187,255,215,199,187,255,215,199,187,255,215,199,187,255,214,198,187,255,214,198,185,255,214,198,185,255, -213,197,185,255,213,197,185,255,213,197,185,255,212,196,184,255,212,196,184,255,212,196,183,255,211,195,183,255,211,195,183,255, -211,195,183,255,212,196,184,255,212,196,184,255,212,196,184,255,212,196,184,255,213,197,185,255,214,198,185,255,214,198,186,255, -215,199,187,255,216,200,188,255,216,200,188,255,217,201,189,255,215,199,187,255,208,192,180,255,194,179,165,255,167,152,136,255, -128,113, 93,255,101, 87, 64,255, 86, 73, 53,255, 74, 62, 44,255, 66, 55, 40,255, 68, 57, 40,255, 78, 65, 47,255, 94, 81, 59,255, -118,103, 81,255,144,129,112,255,160,145,129,255,165,150,135,255,155,140,124,255,123,109, 89,255, 88, 75, 54,255, 60, 50, 35,255, - 51, 43, 31,255, 89, 76, 56,255,149,134,117,255,186,170,157,255,202,186,174,255,204,188,175,255,187,171,158,255,139,125,106,255, -106, 92, 69,255,160,146,130,255,220,204,192,255,230,213,202,255,227,211,199,255,229,212,201,255,210,196,184,255,224,208,197,255, -192,179,167,255, 68, 64, 62,255, 61, 61, 61,255, 61, 61, 61,255, 94, 86, 76,255,110, 96, 73,255, 78, 65, 47,255, 52, 43, 30,255, - 62, 51, 36,255,116,102, 82,255,197,182,169,255,221,204,193,255,220,204,192,255,213,197,185,255,178,163,149,255,113,100, 79,255, - 91, 77, 56,255,108, 94, 70,255,140,125,108,255,165,150,135,255,184,168,154,255,196,179,167,255,203,187,174,255,208,192,180,255, -212,196,184,255,214,198,186,255,215,199,187,255,216,200,188,255,216,200,188,255,216,200,188,255,216,200,188,255,216,200,188,255, -215,199,187,255,216,200,188,255,215,199,187,255,214,198,186,255,214,198,186,255,214,198,186,255,213,197,185,255,213,197,185,255, -212,196,185,255,212,196,184,255,211,195,183,255,211,195,183,255,211,195,183,255,211,195,182,255,211,195,182,255,211,195,182,255, -211,195,182,255,211,195,182,255,211,195,182,255,211,195,182,255,211,195,183,255,211,195,183,255,212,196,184,255,212,196,184,255, -213,197,185,255,214,198,186,255,215,199,187,255,216,200,188,255,216,200,188,255,214,198,185,255,206,190,177,255,188,173,160,255, -153,138,121,255,110, 96, 73,255, 88, 75, 54,255, 72, 60, 43,255, 62, 52, 36,255, 63, 53, 37,255, 77, 65, 47,255, 97, 83, 61,255, -124,109, 89,255,151,136,120,255,167,152,137,255,173,158,144,255,165,150,134,255,132,117, 98,255, 91, 78, 57,255, 60, 50, 36,255, - 55, 46, 33,255,100, 86, 65,255,156,140,125,255,185,169,156,255,197,182,168,255,192,176,163,255,163,148,133,255,115,100, 78,255, -128,113, 93,255,190,175,161,255,227,210,199,255,230,214,202,255,233,217,205,255,218,203,191,255,180,165,152,255,130,117,103,255, - 29, 24, 15,255, 23, 24, 25,255, 62, 62, 62,255, 61, 61, 61,255, 92, 85, 74,255,110, 96, 73,255, 83, 71, 51,255, 55, 45, 31,255, - 57, 46, 32,255, 96, 83, 63,255,178,163,148,255,218,201,189,255,222,205,194,255,216,200,188,255,194,179,166,255,131,117, 98,255, - 91, 78, 57,255,101, 87, 64,255,128,113, 93,255,156,141,125,255,177,162,147,255,192,177,163,255,201,185,172,255,206,190,178,255, -210,194,182,255,213,197,185,255,215,199,186,255,215,199,187,255,216,200,188,255,216,200,188,255,216,200,188,255,215,199,187,255, -216,200,187,255,215,199,187,255,214,198,187,255,215,199,187,255,215,199,187,255,214,198,186,255,213,197,185,255,212,196,185,255, -213,197,184,255,212,196,183,255,212,196,183,255,211,195,183,255,211,195,182,255,210,194,182,255,210,194,182,255,210,194,182,255, -209,194,181,255,209,194,181,255,209,194,181,255,209,194,181,255,209,194,181,255,209,193,181,255,209,193,181,255,210,194,182,255, -210,194,182,255,212,196,184,255,213,197,185,255,215,199,187,255,216,200,188,255,215,199,187,255,211,195,183,255,199,183,171,255, -174,159,145,255,128,114, 94,255, 91, 78, 57,255, 70, 59, 42,255, 58, 48, 34,255, 60, 49, 35,255, 80, 68, 49,255,103, 89, 67,255, -133,119,100,255,159,144,128,255,174,159,145,255,180,165,151,255,172,157,143,255,138,124,105,255, 93, 80, 59,255, 59, 49, 35,255, - 63, 52, 37,255,114, 99, 78,255,160,145,130,255,183,168,154,255,189,174,160,255,174,159,145,255,134,120,101,255,120,105, 83,255, -155,141,124,255,208,192,181,255,229,213,201,255,235,218,207,255,212,196,185,255,150,135,120,255,100, 88, 69,255, 59, 49, 34,255, - 0, 0, 0,255, 29, 29, 29,255, 61, 61, 61,255, 61, 61, 61,255, 91, 83, 72,255,111, 96, 72,255, 89, 77, 56,255, 60, 49, 35,255, - 52, 44, 30,255, 78, 67, 49,255,150,135,117,255,211,195,183,255,222,206,194,255,219,203,191,255,205,189,176,255,159,146,129,255, - 99, 86, 64,255, 94, 80, 58,255,115,100, 79,255,144,131,113,255,168,153,138,255,185,170,156,255,196,181,167,255,204,189,176,255, -209,193,180,255,211,195,183,255,213,197,185,255,214,198,186,255,214,198,186,255,215,199,187,255,215,199,187,255,216,200,188,255, -214,198,186,255,215,198,187,255,216,199,187,255,214,199,187,255,214,198,186,255,213,197,185,255,213,197,185,255,212,196,184,255, -211,195,183,255,211,195,182,255,210,194,183,255,210,194,182,255,209,193,181,255,209,193,180,255,208,192,180,255,208,192,179,255, -208,192,179,255,207,191,178,255,207,191,178,255,207,191,178,255,207,191,178,255,207,191,178,255,207,191,178,255,207,191,179,255, -208,192,180,255,209,193,181,255,211,195,183,255,213,197,185,255,215,198,186,255,216,199,187,255,214,198,186,255,207,191,178,255, -188,173,159,255,148,133,116,255, 97, 83, 61,255, 70, 59, 41,255, 54, 44, 31,255, 62, 51, 35,255, 87, 73, 54,255,113, 98, 77,255, -143,129,112,255,166,151,137,255,182,167,153,255,187,172,158,255,177,162,148,255,141,126,107,255, 92, 79, 58,255, 58, 48, 34,255, - 75, 63, 45,255,126,112, 92,255,163,148,132,255,179,164,150,255,177,162,146,255,151,136,120,255,125,110, 90,255,135,121,103,255, -178,162,149,255,219,203,191,255,228,211,200,255,195,181,168,255,128,114, 96,255, 94, 80, 60,255, 74, 62, 45,255, 13, 11, 8,255, - 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 61, 61, 61,255, 90, 82, 71,255,111, 96, 72,255, 94, 81, 60,255, 66, 55, 39,255, - 52, 43, 29,255, 65, 54, 38,255,119,105, 86,255,194,179,165,255,220,204,192,255,222,205,193,255,214,198,186,255,185,170,155,255, -125,110, 90,255, 92, 79, 58,255,103, 89, 65,255,129,115, 95,255,156,141,125,255,177,161,147,255,191,176,162,255,199,184,171,255, -205,190,177,255,209,193,181,255,211,195,183,255,212,196,185,255,214,198,185,255,214,198,186,255,214,198,186,255,214,198,186,255, -215,199,187,255,215,199,187,255,214,199,186,255,215,199,186,255,214,198,185,255,214,198,186,255,212,196,184,255,212,196,184,255, -212,196,183,255,211,195,182,255,209,193,181,255,209,193,181,255,208,192,180,255,208,192,179,255,207,191,178,255,207,191,178,255, -206,190,178,255,206,190,178,255,205,189,177,255,205,189,177,255,205,189,177,255,205,189,177,255,205,189,177,255,206,190,177,255, -206,190,178,255,207,191,179,255,209,193,181,255,211,195,183,255,214,198,186,255,215,199,187,255,215,199,187,255,210,194,182,255, -196,181,167,255,164,149,134,255,107, 93, 72,255, 68, 57, 41,255, 51, 42, 29,255, 68, 58, 40,255, 97, 83, 61,255,125,111, 90,255, -154,139,123,255,175,160,146,255,189,173,160,255,192,177,164,255,179,164,150,255,139,125,106,255, 87, 74, 54,255, 58, 48, 33,255, - 90, 77, 56,255,136,122,103,255,163,148,133,255,172,157,142,255,159,144,129,255,133,118,100,255,129,115, 95,255,150,135,119,255, -197,181,168,255,209,194,182,255,160,146,130,255,107, 93, 71,255, 97, 83, 60,255, 84, 71, 52,255, 39, 33, 24,255, 1, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 90, 82, 71,255,110, 96, 72,255, 99, 85, 62,255, 74, 63, 45,255, - 54, 44, 31,255, 57, 47, 33,255, 90, 77, 57,255,163,149,132,255,213,198,186,255,222,205,194,255,218,202,190,255,203,188,174,255, -158,143,127,255,104, 90, 68,255, 95, 81, 59,255,114, 99, 77,255,143,128,110,255,164,150,134,255,182,166,153,255,194,178,165,255, -201,185,172,255,205,189,177,255,209,193,180,255,211,195,183,255,213,197,185,255,214,198,186,255,214,198,186,255,215,199,187,255, -214,198,186,255,214,198,186,255,214,199,186,255,214,198,186,255,214,198,185,255,213,197,185,255,212,196,184,255,211,195,183,255, -211,195,182,255,210,194,181,255,209,193,181,255,208,192,180,255,207,192,179,255,207,191,178,255,206,190,177,255,206,190,177,255, -204,189,176,255,204,188,176,255,204,188,175,255,203,187,174,255,203,187,174,255,202,187,174,255,202,187,174,255,203,187,174,255, -203,187,174,255,205,189,177,255,207,191,178,255,210,194,181,255,212,196,184,255,215,199,186,255,215,199,187,255,212,196,184,255, -202,186,173,255,174,159,145,255,118,103, 82,255, 67, 56, 39,255, 53, 44, 32,255, 80, 68, 49,255,108, 94, 71,255,138,124,105,255, -164,150,134,255,184,169,155,255,196,180,167,255,196,181,168,255,179,164,149,255,133,118, 99,255, 79, 67, 48,255, 62, 52, 37,255, -106, 93, 71,255,143,128,111,255,161,146,130,255,161,146,130,255,140,125,108,255,128,114, 94,255,135,121,102,255,164,150,134,255, -176,162,148,255,121,107, 88,255,104, 89, 66,255,101, 86, 64,255, 90, 77, 56,255, 63, 53, 39,255, 1, 1, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 91, 83, 72,255,111, 96, 72,255,102, 88, 64,255, 84, 71, 52,255, - 59, 49, 34,255, 53, 44, 30,255, 71, 59, 41,255,123,109, 89,255,193,177,164,255,219,203,192,255,221,205,193,255,213,197,185,255, -190,175,161,255,135,120,100,255, 98, 84, 61,255,100, 85, 63,255,121,106, 85,255,149,134,117,255,169,154,138,255,183,168,154,255, -194,178,165,255,201,186,173,255,206,190,177,255,209,193,180,255,211,195,182,255,211,195,183,255,213,197,185,255,213,197,185,255, -214,198,186,255,214,198,186,255,214,198,185,255,213,197,185,255,213,197,184,255,212,196,183,255,211,195,183,255,210,194,182,255, -209,193,181,255,209,193,180,255,208,192,179,255,206,190,178,255,206,190,177,255,205,189,176,255,204,188,175,255,203,187,174,255, -202,186,173,255,201,186,173,255,201,185,172,255,200,184,171,255,199,184,170,255,199,183,170,255,199,183,170,255,199,183,170,255, -200,185,172,255,202,186,173,255,204,188,175,255,208,192,179,255,211,195,183,255,214,198,186,255,215,199,187,255,213,197,185,255, -205,189,176,255,180,164,149,255,127,113, 92,255, 65, 55, 39,255, 62, 53, 38,255, 94, 81, 59,255,121,107, 86,255,151,136,120,255, -175,160,146,255,193,178,164,255,201,185,172,255,197,182,169,255,174,159,145,255,119,106, 85,255, 68, 57, 41,255, 79, 67, 49,255, -121,106, 85,255,146,132,114,255,157,142,126,255,146,131,114,255,129,115, 96,255,128,114, 94,255,139,125,107,255,146,131,115,255, - 99, 86, 65,255,103, 88, 64,255,103, 88, 65,255, 93, 80, 58,255, 76, 64, 47,255, 4, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 92, 85, 74,255,112, 98, 74,255,104, 89, 65,255, 92, 78, 57,255, - 69, 57, 41,255, 53, 44, 30,255, 60, 49, 34,255, 90, 77, 55,255,155,140,123,255,207,192,179,255,221,204,193,255,219,203,191,255, -208,192,179,255,178,163,148,255,126,112, 91,255, 99, 85, 63,255,104, 90, 67,255,128,113, 93,255,153,139,122,255,171,156,142,255, -185,169,156,255,194,178,165,255,200,185,172,255,205,189,176,255,207,191,179,255,209,194,181,255,211,195,183,255,212,196,184,255, -213,197,185,255,213,197,185,255,213,197,184,255,213,196,184,255,212,196,183,255,211,195,182,255,210,194,182,255,209,193,181,255, -208,192,180,255,207,191,178,255,206,190,177,255,205,189,177,255,204,188,175,255,203,187,174,255,202,186,173,255,201,185,172,255, -200,184,171,255,200,184,171,255,198,182,169,255,197,182,168,255,197,181,168,255,196,180,167,255,195,179,166,255,195,179,166,255, -196,180,167,255,198,182,169,255,201,185,172,255,205,190,177,255,210,194,181,255,213,197,185,255,215,199,186,255,214,198,186,255, -207,191,178,255,183,167,153,255,129,114, 94,255, 66, 55, 39,255, 77, 65, 48,255,106, 92, 69,255,136,122,103,255,163,148,133,255, -185,170,157,255,200,185,172,255,204,188,176,255,195,180,167,255,162,147,132,255,101, 87, 67,255, 65, 54, 39,255,100, 86, 64,255, -129,115, 95,255,147,132,116,255,147,132,116,255,132,118, 99,255,124,110, 90,255,123,109, 88,255,117,103, 83,255, 96, 83, 62,255, -103, 88, 65,255,104, 89, 66,255, 96, 82, 60,255, 80, 67, 48,255, 16, 14, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 93, 86, 75,255,116,101, 78,255,105, 91, 67,255, 97, 83, 61,255, - 80, 67, 49,255, 59, 49, 34,255, 55, 45, 31,255, 70, 59, 42,255,112, 98, 77,255,178,163,149,255,214,198,186,255,220,204,192,255, -215,199,187,255,201,186,173,255,169,154,139,255,124,109, 89,255,103, 88, 65,255,109, 95, 71,255,130,116, 95,255,153,138,122,255, -171,156,141,255,184,169,154,255,193,178,164,255,198,182,169,255,203,188,175,255,206,190,177,255,208,192,179,255,209,193,181,255, -210,194,181,255,211,195,182,255,211,195,182,255,211,195,182,255,210,194,181,255,210,194,181,255,209,193,180,255,207,191,178,255, -206,190,178,255,205,190,176,255,204,188,175,255,203,187,174,255,202,186,173,255,201,185,172,255,200,184,171,255,198,182,169,255, -197,182,168,255,197,181,168,255,196,180,167,255,194,178,165,255,193,177,164,255,192,176,163,255,190,175,161,255,190,175,161,255, -191,175,162,255,194,178,165,255,197,182,168,255,203,188,174,255,209,193,180,255,213,197,185,255,215,198,186,255,214,198,185,255, -207,191,179,255,183,168,154,255,127,112, 93,255, 64, 54, 38,255, 94, 80, 59,255,121,107, 85,255,150,135,118,255,175,160,145,255, -195,180,167,255,205,189,177,255,204,189,176,255,187,172,158,255,141,126,109,255, 78, 66, 48,255, 83, 71, 51,255,114, 99, 78,255, -135,121,102,255,144,129,112,255,135,120,101,255,123,108, 88,255,114,101, 78,255,103, 89, 66,255, 97, 83, 61,255,103, 89, 66,255, -104, 90, 66,255, 98, 84, 62,255, 86, 73, 53,255, 28, 24, 18,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 93, 85, 74,255,117,102, 80,255,107, 93, 69,255,100, 86, 63,255, - 89, 75, 55,255, 69, 58, 42,255, 55, 45, 32,255, 59, 49, 34,255, 83, 70, 50,255,134,120,101,255,192,176,163,255,216,200,188,255, -220,204,192,255,213,197,185,255,199,183,170,255,167,152,137,255,125,110, 90,255,108, 93, 69,255,114, 99, 76,255,132,118, 98,255, -152,137,120,255,166,151,136,255,179,164,149,255,189,174,159,255,195,179,166,255,198,183,170,255,203,187,174,255,205,189,176,255, -206,190,178,255,207,191,178,255,207,191,178,255,207,191,179,255,207,191,179,255,207,191,178,255,206,190,178,255,206,190,177,255, -205,189,175,255,204,188,175,255,203,188,175,255,202,187,174,255,201,185,172,255,200,185,171,255,200,184,171,255,198,182,169,255, -197,181,168,255,195,179,166,255,194,178,165,255,192,177,163,255,190,174,161,255,189,173,160,255,186,171,157,255,185,170,156,255, -186,170,156,255,188,172,159,255,193,178,164,255,201,185,172,255,208,192,179,255,213,197,184,255,214,198,186,255,213,197,185,255, -206,191,178,255,182,166,152,255,115,101, 80,255, 81, 71, 56,255,108, 94, 71,255,136,122,103,255,163,149,133,255,187,171,158,255, -202,186,174,255,207,191,179,255,200,184,171,255,170,155,141,255,108, 95, 74,255, 72, 61, 43,255,103, 88, 66,255,124,109, 88,255, -137,123,104,255,134,119,101,255,122,107, 87,255,111, 97, 74,255, 99, 85, 62,255, 96, 82, 60,255,103, 89, 65,255,104, 90, 66,255, - 99, 85, 63,255, 88, 75, 54,255, 42, 36, 26,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 88, 81, 69,255,115,100, 77,255,109, 94, 71,255,103, 89, 65,255, - 94, 81, 59,255, 80, 68, 49,255, 63, 52, 37,255, 56, 46, 32,255, 65, 54, 38,255, 94, 81, 59,255,149,134,117,255,197,182,169,255, -217,200,188,255,219,203,191,255,211,195,183,255,197,182,169,255,173,158,143,255,141,127,109,255,123,109, 87,255,123,108, 86,255, -134,119, 99,255,148,134,116,255,163,148,132,255,173,158,143,255,183,167,152,255,190,175,160,255,194,179,165,255,198,182,168,255, -200,185,171,255,202,186,173,255,203,187,174,255,204,189,175,255,205,189,176,255,205,189,176,255,204,188,176,255,204,188,176,255, -204,188,175,255,204,188,175,255,203,187,174,255,202,186,173,255,201,186,173,255,200,185,171,255,199,184,170,255,198,183,169,255, -197,181,168,255,196,179,167,255,194,178,164,255,191,176,163,255,189,173,159,255,186,171,157,255,184,168,154,255,181,166,152,255, -180,164,150,255,182,167,152,255,189,173,159,255,199,183,170,255,207,191,179,255,213,197,184,255,213,197,185,255,213,197,185,255, -206,190,177,255,176,161,146,255,100, 87, 69,255, 97, 85, 65,255,123,109, 88,255,151,136,120,255,176,162,147,255,196,181,168,255, -206,190,178,255,204,188,176,255,185,170,157,255,134,120,101,255, 79, 66, 47,255, 90, 77, 56,255,115,101, 79,255,129,114, 95,255, -133,118, 99,255,121,106, 85,255,108, 95, 72,255, 96, 82, 60,255, 96, 82, 60,255,103, 89, 65,255,104, 90, 67,255,100, 86, 63,255, - 88, 75, 55,255, 38, 33, 23,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 82, 75, 63,255,107, 92, 68,255,108, 94, 69,255,105, 90, 67,255, - 99, 85, 63,255, 89, 76, 55,255, 74, 62, 45,255, 60, 50, 35,255, 59, 48, 34,255, 72, 61, 43,255,102, 88, 67,255,157,142,125,255, -199,183,170,255,216,200,188,255,218,202,190,255,211,195,183,255,198,182,170,255,180,165,151,255,158,144,127,255,140,126,108,255, -136,122,103,255,142,127,109,255,151,136,119,255,161,146,130,255,172,156,141,255,179,164,149,255,185,170,156,255,190,175,161,255, -194,178,165,255,197,181,168,255,200,184,171,255,202,187,173,255,204,188,176,255,205,189,176,255,205,189,177,255,205,189,177,255, -205,189,176,255,205,189,176,255,204,188,175,255,203,188,175,255,203,187,174,255,202,186,173,255,200,185,171,255,199,184,170,255, -198,182,169,255,195,180,166,255,194,179,165,255,192,176,162,255,189,173,159,255,185,171,157,255,182,167,152,255,178,163,149,255, -175,160,145,255,175,160,146,255,184,169,155,255,197,181,168,255,207,191,179,255,213,197,184,255,213,197,185,255,211,195,183,255, -203,187,174,255,164,148,132,255, 92, 80, 62,255,113, 99, 76,255,141,126,108,255,166,151,137,255,189,173,160,255,202,186,174,255, -206,190,177,255,192,177,164,255,151,136,119,255, 92, 78, 58,255, 84, 72, 51,255,110, 96, 74,255,122,108, 87,255,130,115, 96,255, -120,105, 85,255,107, 93, 69,255, 94, 81, 59,255, 96, 83, 60,255,103, 89, 65,255,104, 90, 67,255,100, 86, 64,255, 91, 78, 56,255, - 40, 34, 25,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 62,255, 74, 68, 57,255, 97, 83, 60,255,103, 89, 66,255,104, 90, 66,255, -101, 87, 64,255, 94, 81, 59,255, 84, 70, 51,255, 70, 58, 42,255, 60, 50, 34,255, 62, 51, 36,255, 77, 66, 47,255,108, 94, 72,255, -160,145,128,255,198,182,169,255,213,197,185,255,216,200,188,255,212,196,184,255,201,185,172,255,189,174,160,255,177,162,146,255, -163,148,133,255,157,142,126,255,158,143,126,255,162,147,131,255,169,153,137,255,175,160,145,255,182,167,152,255,189,173,159,255, -193,178,164,255,198,182,169,255,201,185,172,255,204,188,175,255,205,189,176,255,207,191,178,255,207,191,179,255,208,192,179,255, -208,192,179,255,208,192,179,255,206,191,178,255,206,190,178,255,206,190,177,255,204,188,175,255,203,187,174,255,202,186,173,255, -200,184,171,255,198,183,169,255,196,180,167,255,193,178,164,255,190,174,161,255,186,171,156,255,181,166,151,255,175,160,145,255, -171,156,142,255,171,156,141,255,180,165,151,255,196,180,167,255,208,192,179,255,212,196,184,255,212,196,184,255,210,194,181,255, -198,182,169,255,142,128,111,255,100, 88, 68,255,131,117, 97,255,158,143,127,255,180,165,151,255,196,181,167,255,203,187,174,255, -194,179,166,255,160,145,129,255,104, 91, 70,255, 89, 76, 55,255,107, 93, 71,255,120,106, 84,255,126,112, 92,255,120,105, 84,255, -106, 91, 68,255, 93, 80, 58,255, 95, 81, 60,255,103, 89, 65,255,104, 90, 66,255,100, 86, 64,255, 90, 76, 57,255, 35, 30, 22,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 62, 62,255, 66, 59, 51,255, 82, 69, 50,255, 95, 81, 60,255,101, 87, 63,255, -100, 86, 64,255, 97, 83, 61,255, 90, 77, 56,255, 80, 67, 49,255, 68, 57, 41,255, 62, 51, 35,255, 65, 54, 38,255, 80, 68, 49,255, -111, 97, 75,255,158,143,126,255,193,178,164,255,210,194,182,255,214,198,186,255,212,196,184,255,206,190,177,255,198,182,169,255, -188,173,159,255,181,165,151,255,176,161,147,255,176,161,146,255,178,163,148,255,182,166,152,255,187,171,157,255,192,176,163,255, -196,180,166,255,200,184,171,255,203,187,174,255,205,189,176,255,206,190,178,255,208,192,179,255,209,193,181,255,209,193,181,255, -210,194,181,255,210,194,181,255,210,194,181,255,209,193,181,255,208,192,179,255,207,191,178,255,206,190,177,255,204,188,176,255, -203,187,174,255,201,185,172,255,198,182,169,255,195,180,166,255,192,176,162,255,186,171,157,255,180,165,150,255,172,157,142,255, -167,152,136,255,167,152,137,255,179,164,150,255,197,181,168,255,209,193,180,255,211,195,183,255,211,195,182,255,208,192,179,255, -189,174,160,255,121,108, 89,255,122,108, 88,255,150,135,119,255,173,158,144,255,190,175,161,255,197,182,169,255,191,176,163,255, -158,144,128,255,111, 97, 75,255, 98, 84, 61,255,110, 95, 73,255,120,106, 86,255,124,110, 89,255,118,104, 82,255,104, 89, 67,255, - 92, 79, 57,255, 96, 82, 60,255,104, 89, 66,255,104, 90, 67,255,100, 86, 64,255, 85, 73, 53,255, 26, 22, 16,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 59, 54, 46,255, 65, 54, 38,255, 81, 69, 49,255, 92, 78, 57,255, - 97, 84, 61,255, 97, 84, 62,255, 94, 81, 59,255, 87, 74, 53,255, 77, 65, 47,255, 68, 57, 40,255, 63, 52, 37,255, 68, 56, 40,255, - 83, 69, 50,255,108, 94, 71,255,151,136,119,255,185,170,156,255,205,189,177,255,213,197,184,255,213,197,185,255,209,193,181,255, -205,189,176,255,199,183,170,255,195,179,166,255,193,178,164,255,193,178,164,255,194,178,165,255,197,181,168,255,199,184,170,255, -202,186,173,255,204,188,175,255,206,190,178,255,208,192,179,255,210,194,181,255,211,195,183,255,212,196,183,255,213,197,184,255, -213,197,184,255,213,197,184,255,212,196,184,255,212,196,183,255,211,195,182,255,210,194,182,255,208,192,180,255,207,191,178,255, -205,189,177,255,202,186,173,255,200,184,171,255,196,181,167,255,192,176,163,255,186,172,157,255,179,163,149,255,169,154,139,255, -162,147,132,255,164,150,134,255,180,165,151,255,200,184,171,255,209,193,180,255,211,195,182,255,209,193,180,255,205,188,176,255, -172,157,142,255,116,103, 84,255,144,129,113,255,168,153,138,255,184,169,155,255,191,175,162,255,183,168,154,255,150,135,118,255, -111, 97, 75,255,113, 98, 76,255,121,106, 86,255,124,110, 90,255,124,109, 89,255,117,103, 81,255,103, 89, 66,255, 90, 77, 56,255, - 97, 83, 61,255,103, 89, 65,255,103, 89, 66,255,100, 86, 63,255, 85, 73, 54,255, 15, 13, 9,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 56, 51, 44,255, 54, 44, 30,255, 65, 54, 38,255, 79, 66, 47,255, - 89, 75, 55,255, 94, 80, 58,255, 94, 81, 59,255, 91, 77, 56,255, 85, 72, 52,255, 76, 65, 46,255, 69, 58, 40,255, 66, 55, 39,255, - 69, 58, 41,255, 82, 70, 50,255,105, 91, 68,255,143,128,109,255,175,160,146,255,197,181,168,255,208,192,179,255,211,195,183,255, -210,194,182,255,208,192,180,255,207,191,178,255,203,188,175,255,202,186,173,255,202,186,173,255,203,187,174,255,204,188,175,255, -205,190,177,255,208,192,179,255,210,194,181,255,211,195,183,255,212,196,184,255,214,198,186,255,215,199,186,255,215,199,187,255, -216,200,187,255,216,199,187,255,215,199,187,255,214,198,186,255,214,198,186,255,212,196,184,255,211,195,182,255,210,194,181,255, -208,192,178,255,205,189,176,255,202,186,173,255,198,182,169,255,193,177,164,255,186,171,157,255,175,160,146,255,164,149,133,255, -156,141,125,255,163,148,133,255,186,171,156,255,203,188,174,255,208,192,180,255,208,192,180,255,207,191,178,255,197,182,169,255, -139,125,107,255,133,120,102,255,163,148,132,255,178,163,149,255,182,167,154,255,170,155,141,255,143,128,111,255,121,107, 86,255, -129,114, 96,255,135,121,102,255,131,117, 98,255,126,112, 92,255,117,103, 82,255,102, 88, 65,255, 89, 76, 56,255, 97, 83, 61,255, -104, 89, 66,255,103, 89, 65,255, 98, 84, 62,255, 69, 60, 43,255, 1, 1, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 56, 51, 44,255, 49, 40, 27,255, 54, 44, 30,255, 64, 53, 37,255, - 76, 64, 46,255, 85, 73, 52,255, 90, 77, 56,255, 91, 77, 56,255, 88, 75, 55,255, 83, 71, 51,255, 77, 65, 46,255, 70, 59, 42,255, - 68, 57, 40,255, 71, 60, 43,255, 82, 70, 49,255,100, 86, 64,255,129,115, 94,255,162,148,132,255,185,170,156,255,199,183,170,255, -207,191,178,255,209,193,181,255,210,194,182,255,209,193,181,255,209,193,180,255,209,192,180,255,208,192,180,255,209,193,181,255, -210,194,182,255,211,195,183,255,212,196,184,255,213,197,185,255,214,198,186,255,215,199,187,255,216,200,188,255,216,200,188,255, -217,200,188,255,216,200,188,255,216,200,187,255,215,199,187,255,214,198,186,255,214,198,185,255,212,196,184,255,210,194,182,255, -209,193,180,255,206,190,177,255,203,187,174,255,199,183,170,255,193,178,164,255,185,170,156,255,172,157,142,255,157,142,126,255, -151,136,120,255,167,153,138,255,193,177,164,255,205,190,177,255,207,191,178,255,206,190,177,255,204,189,176,255,172,157,143,255, -125,113, 95,255,160,146,130,255,173,158,144,255,172,157,143,255,158,143,127,255,140,126,108,255,137,122,104,255,144,131,113,255, -146,131,114,255,137,124,105,255,130,116, 97,255,118,103, 82,255,100, 86, 64,255, 90, 77, 56,255, 99, 85, 63,255,104, 89, 66,255, -103, 88, 65,255, 96, 82, 61,255, 48, 41, 30,255, 2, 2, 1,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 62, 62,255, 65, 59, 50,255, 55, 45, 31,255, 49, 40, 27,255, 53, 44, 30,255, - 62, 52, 36,255, 72, 60, 44,255, 81, 68, 50,255, 86, 73, 54,255, 88, 75, 55,255, 85, 72, 53,255, 82, 69, 49,255, 77, 65, 46,255, - 72, 61, 43,255, 70, 59, 42,255, 73, 61, 43,255, 82, 69, 49,255, 94, 81, 60,255,117,102, 80,255,148,132,114,255,171,156,141,255, -187,172,158,255,198,182,169,255,204,188,176,255,207,191,179,255,209,193,181,255,210,194,182,255,211,195,182,255,210,194,183,255, -212,196,183,255,212,196,184,255,213,197,185,255,215,199,187,255,215,199,187,255,216,200,188,255,217,201,188,255,217,201,189,255, -216,201,189,255,217,201,189,255,217,201,189,255,216,200,188,255,215,199,186,255,214,198,186,255,213,197,185,255,211,195,183,255, -209,193,181,255,207,191,178,255,204,188,175,255,199,183,170,255,193,178,164,255,183,168,153,255,166,151,136,255,148,134,117,255, -150,135,118,255,178,163,148,255,200,184,171,255,205,189,176,255,204,189,175,255,204,188,175,255,194,178,165,255,137,124,108,255, -159,144,129,255,168,153,139,255,163,148,133,255,150,136,120,255,147,132,115,255,153,139,123,255,158,143,127,255,154,140,124,255, -143,129,112,255,134,119,101,255,119,105, 84,255, 99, 85, 62,255, 89, 77, 56,255,100, 86, 63,255,103, 89, 66,255,102, 87, 64,255, - 88, 76, 55,255, 18, 15, 11,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255,101, 93, 84,255, 83, 71, 53,255, 55, 44, 30,255, 50, 41, 28,255, - 53, 43, 29,255, 60, 49, 34,255, 69, 58, 41,255, 76, 64, 46,255, 82, 69, 50,255, 84, 71, 51,255, 84, 71, 52,255, 81, 68, 49,255, - 77, 65, 47,255, 74, 62, 44,255, 73, 61, 44,255, 74, 63, 44,255, 81, 68, 49,255, 91, 78, 56,255,106, 91, 69,255,131,116, 96,255, -155,140,123,255,172,158,142,255,186,170,156,255,194,179,166,255,201,185,172,255,204,188,175,255,207,191,178,255,208,192,180,255, -210,194,181,255,211,195,182,255,212,196,184,255,213,197,185,255,214,198,186,255,215,199,187,255,216,200,187,255,216,200,188,255, -216,200,188,255,216,200,188,255,216,200,188,255,215,199,187,255,214,198,186,255,214,198,185,255,212,196,183,255,211,195,182,255, -209,193,180,255,206,190,177,255,202,187,174,255,199,183,170,255,192,176,162,255,178,164,149,255,156,141,125,255,139,125,107,255, -157,143,127,255,190,175,162,255,202,186,173,255,202,187,173,255,201,186,172,255,200,184,171,255,165,150,135,255,155,140,125,255, -164,149,134,255,158,143,128,255,153,139,123,255,158,143,127,255,165,150,135,255,166,151,136,255,161,146,130,255,149,134,118,255, -137,123,104,255,121,106, 85,255, 98, 84, 62,255, 91, 78, 57,255,101, 87, 64,255,103, 89, 66,255, 98, 84, 62,255, 70, 60, 44,255, - 7, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,145,136,131,255,169,154,138,255, 84, 71, 53,255, 55, 45, 31,255, - 50, 41, 28,255, 52, 42, 29,255, 58, 48, 33,255, 65, 54, 39,255, 72, 60, 43,255, 77, 65, 47,255, 80, 68, 50,255, 81, 68, 50,255, - 80, 68, 48,255, 78, 65, 47,255, 75, 64, 46,255, 75, 63, 45,255, 76, 64, 46,255, 81, 68, 49,255, 88, 75, 54,255, 99, 84, 62,255, -115,100, 78,255,136,121,102,255,155,140,124,255,170,155,140,255,181,166,151,255,189,174,160,255,195,180,167,255,200,184,171,255, -203,187,175,255,206,190,177,255,207,191,179,255,209,193,181,255,211,195,182,255,212,196,183,255,212,196,184,255,214,198,185,255, -214,198,185,255,214,198,185,255,214,198,186,255,214,198,185,255,212,196,184,255,212,196,183,255,211,195,182,255,209,193,180,255, -207,191,178,255,204,188,175,255,201,186,173,255,197,182,168,255,189,174,160,255,171,156,141,255,141,126,109,255,138,123,105,255, -176,161,146,255,198,182,169,255,200,185,171,255,198,182,169,255,200,184,170,255,186,171,157,255,150,136,121,255,160,145,129,255, -159,145,129,255,162,147,132,255,169,154,139,255,172,157,143,255,171,156,141,255,164,149,134,255,152,138,122,255,140,125,107,255, -119,105, 84,255, 97, 83, 62,255, 95, 82, 60,255,102, 88, 65,255,103, 88, 65,255, 87, 75, 55,255, 34, 29, 21,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 59, 60, 60,255,149,140,135,255,229,212,201,255,176,162,146,255, 89, 77, 58,255, - 59, 48, 33,255, 52, 42, 29,255, 52, 42, 29,255, 56, 46, 32,255, 61, 51, 36,255, 68, 56, 40,255, 73, 61, 44,255, 77, 65, 46,255, - 78, 67, 47,255, 79, 66, 48,255, 77, 65, 47,255, 77, 64, 46,255, 76, 65, 46,255, 78, 66, 47,255, 81, 68, 49,255, 87, 74, 54,255, - 94, 80, 59,255,103, 90, 67,255,119,104, 82,255,138,123,104,255,153,138,121,255,165,150,134,255,175,160,144,255,183,168,154,255, -189,174,159,255,194,178,165,255,198,182,169,255,202,186,173,255,204,188,175,255,205,190,177,255,207,191,178,255,209,193,180,255, -209,193,180,255,209,193,180,255,209,193,180,255,209,193,180,255,208,192,180,255,207,191,178,255,207,191,178,255,205,189,176,255, -203,187,174,255,202,186,173,255,199,183,170,255,195,179,166,255,183,168,154,255,155,140,124,255,128,113, 93,255,157,142,126,255, -193,178,165,255,198,182,168,255,195,180,166,255,196,180,167,255,194,179,165,255,148,134,119,255,162,147,132,255,166,151,136,255, -171,156,142,255,176,161,147,255,177,162,148,255,173,158,144,255,166,151,136,255,154,140,124,255,140,125,108,255,117,102, 81,255, - 94, 81, 61,255, 97, 83, 62,255,102, 88, 65,255,101, 87, 64,255, 64, 55, 41,255, 6, 5, 4,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,119,111,103,255,216,200,187,255,228,212,201,255,182,166,152,255, -101, 87, 69,255, 63, 52, 36,255, 54, 44, 30,255, 52, 42, 29,255, 54, 44, 31,255, 59, 49, 34,255, 64, 53, 37,255, 69, 57, 41,255, - 72, 61, 43,255, 75, 63, 46,255, 76, 64, 46,255, 77, 65, 46,255, 77, 65, 47,255, 78, 65, 47,255, 79, 67, 48,255, 81, 69, 50,255, - 86, 73, 53,255, 92, 79, 57,255, 98, 85, 62,255,108, 93, 69,255,122,107, 85,255,137,122,102,255,149,134,116,255,159,144,127,255, -168,153,136,255,175,160,145,255,181,166,152,255,187,171,157,255,191,175,162,255,195,179,165,255,197,181,168,255,199,183,170,255, -200,184,171,255,202,186,173,255,202,187,173,255,202,187,173,255,202,186,173,255,202,186,172,255,200,184,171,255,200,184,170,255, -199,183,170,255,198,182,169,255,196,181,167,255,191,175,161,255,171,156,140,255,132,117, 97,255,139,124,107,255,186,171,157,255, -196,181,167,255,192,176,162,255,191,175,161,255,193,178,164,255,161,148,133,255,168,153,139,255,174,159,144,255,177,162,148,255, -179,164,150,255,178,163,149,255,175,160,145,255,168,153,138,255,155,140,124,255,137,122,105,255,113, 99, 77,255, 95, 81, 61,255, -100, 86, 63,255,102, 88, 65,255, 83, 71, 53,255, 29, 25, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 62,255, 74, 68, 57,255,133,119,100,255,207,191,178,255,230,213,203,255, -197,181,168,255,124,110, 92,255, 70, 58, 41,255, 57, 47, 32,255, 53, 43, 30,255, 54, 44, 30,255, 57, 47, 32,255, 61, 50, 35,255, - 64, 54, 38,255, 68, 57, 41,255, 71, 60, 43,255, 73, 61, 44,255, 76, 64, 45,255, 76, 64, 46,255, 78, 66, 47,255, 79, 67, 48,255, - 82, 69, 50,255, 85, 72, 52,255, 90, 77, 56,255, 96, 82, 60,255,102, 88, 65,255,111, 96, 73,255,121,106, 84,255,133,118, 97,255, -143,128,109,255,152,137,120,255,159,144,128,255,167,151,135,255,173,157,142,255,178,162,147,255,182,166,152,255,185,170,155,255, -188,173,158,255,190,174,160,255,191,176,161,255,192,177,162,255,193,177,163,255,193,177,163,255,193,177,163,255,193,178,164,255, -193,177,163,255,194,178,164,255,193,177,163,255,182,166,152,255,142,127,109,255,125,111, 90,255,176,161,146,255,194,177,164,255, -189,173,159,255,186,171,156,255,191,176,162,255,173,159,144,255,172,158,143,255,180,164,150,255,181,166,152,255,180,165,151,255, -178,163,149,255,175,160,146,255,167,152,137,255,153,139,122,255,131,116, 97,255,106, 92, 71,255, 98, 84, 61,255,103, 89, 66,255, - 95, 82, 61,255, 39, 34, 25,255, 5, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 62,255, 68, 61, 53,255, 78, 65, 47,255,117,102, 82,255,194,179,165,255, -227,210,200,255,212,196,184,255,149,134,117,255, 84, 71, 52,255, 63, 52, 36,255, 56, 46, 32,255, 54, 44, 30,255, 55, 45, 31,255, - 59, 48, 34,255, 62, 52, 36,255, 65, 54, 38,255, 68, 57, 40,255, 71, 59, 42,255, 72, 61, 43,255, 74, 62, 44,255, 77, 65, 47,255, - 79, 66, 48,255, 81, 69, 50,255, 84, 72, 52,255, 88, 75, 54,255, 93, 80, 58,255, 98, 85, 62,255,104, 90, 66,255,110, 95, 72,255, -118,103, 80,255,128,113, 92,255,137,122,102,255,145,130,111,255,152,137,119,255,158,143,126,255,164,149,132,255,168,153,137,255, -172,157,141,255,175,160,145,255,177,162,147,255,179,164,149,255,180,165,150,255,183,166,152,255,184,168,154,255,185,169,154,255, -188,172,158,255,191,175,161,255,186,171,157,255,153,138,122,255,115,101, 79,255,167,152,137,255,190,175,161,255,184,169,154,255, -181,166,151,255,188,172,158,255,173,158,144,255,173,158,144,255,183,168,154,255,181,166,152,255,180,165,151,255,178,163,149,255, -174,159,145,255,165,150,135,255,148,133,117,255,121,107, 87,255,100, 87, 66,255,102, 87, 64,255,102, 88, 65,255, 58, 49, 37,255, - 5, 4, 3,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255,103, 96, 87,255, 95, 83, 64,255, 74, 62, 44,255,104, 90, 69,255, -173,158,143,255,221,205,193,255,224,208,197,255,178,163,148,255,112, 98, 79,255, 74, 63, 45,255, 61, 50, 35,255, 57, 47, 32,255, - 56, 46, 32,255, 58, 47, 33,255, 60, 49, 34,255, 63, 52, 36,255, 65, 54, 38,255, 68, 56, 40,255, 70, 58, 42,255, 72, 60, 43,255, - 74, 62, 45,255, 77, 65, 46,255, 80, 68, 48,255, 82, 70, 50,255, 86, 73, 53,255, 90, 77, 56,255, 95, 81, 60,255,100, 86, 63,255, -105, 90, 67,255,110, 95, 71,255,117,102, 78,255,124,109, 87,255,131,116, 95,255,137,122,104,255,144,129,111,255,150,135,117,255, -155,140,123,255,159,143,126,255,162,147,130,255,165,150,134,255,168,152,137,255,171,156,140,255,174,159,143,255,178,163,147,255, -185,169,155,255,186,171,157,255,160,145,130,255,122,108, 87,255,163,149,133,255,188,173,159,255,179,163,149,255,175,160,144,255, -181,165,151,255,176,161,147,255,173,159,145,255,186,170,156,255,183,168,154,255,180,165,151,255,178,163,149,255,173,157,143,255, -160,145,129,255,136,122,104,255,111, 98, 76,255,100, 86, 64,255, 97, 83, 61,255, 72, 63, 46,255, 16, 14, 11,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,143,135,130,255,187,173,160,255,115,102, 84,255, 75, 63, 43,255, - 89, 76, 56,255,140,125,107,255,203,187,174,255,227,211,199,255,207,191,178,255,154,139,122,255, 97, 84, 64,255, 70, 58, 40,255, - 63, 52, 36,255, 59, 49, 34,255, 59, 48, 34,255, 59, 49, 34,255, 61, 50, 35,255, 63, 52, 37,255, 65, 55, 39,255, 68, 56, 40,255, - 70, 58, 42,255, 72, 61, 43,255, 75, 63, 45,255, 77, 65, 47,255, 80, 68, 49,255, 84, 71, 52,255, 88, 75, 55,255, 93, 79, 59,255, - 97, 83, 62,255,101, 87, 66,255,105, 91, 69,255,109, 95, 72,255,114,100, 77,255,120,105, 82,255,126,111, 89,255,133,118, 97,255, -138,123,104,255,143,129,110,255,148,133,115,255,152,137,120,255,157,142,125,255,162,147,130,255,168,153,137,255,177,162,147,255, -186,170,156,255,159,144,128,255,127,112, 93,255,166,151,136,255,181,165,151,255,171,156,140,255,170,154,138,255,178,162,147,255, -174,159,146,255,181,166,153,255,185,170,156,255,183,168,154,255,181,166,151,255,177,162,147,255,168,153,138,255,146,132,115,255, -119,105, 86,255,106, 92, 69,255,100, 87, 64,255, 61, 53, 39,255, 21, 18, 13,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,144,136,130,255,223,207,195,255,208,193,181,255,142,129,112,255, - 84, 72, 52,255, 80, 68, 49,255,108, 95, 74,255,173,158,143,255,218,202,191,255,223,207,195,255,197,181,168,255,139,125,107,255, - 91, 78, 58,255, 73, 61, 43,255, 66, 54, 39,255, 62, 52, 36,255, 61, 50, 35,255, 62, 52, 36,255, 63, 52, 37,255, 65, 54, 38,255, - 66, 56, 39,255, 69, 57, 41,255, 71, 60, 43,255, 73, 62, 44,255, 76, 64, 46,255, 80, 68, 49,255, 83, 71, 53,255, 87, 74, 55,255, - 91, 78, 58,255, 95, 81, 62,255, 98, 85, 64,255,102, 89, 68,255,106, 92, 71,255,110, 96, 73,255,113, 99, 76,255,118,103, 81,255, -124,109, 87,255,131,116, 95,255,136,121,103,255,143,128,109,255,150,135,117,255,159,144,128,255,172,157,141,255,181,166,151,255, -151,136,119,255,129,115, 96,255,174,159,144,255,172,157,141,255,163,148,132,255,164,149,132,255,174,159,143,255,171,157,144,255, -186,171,157,255,185,170,156,255,182,167,153,255,178,163,150,255,171,157,142,255,155,140,124,255,127,113, 94,255,107, 93, 71,255, -105, 91, 67,255, 68, 59, 43,255, 7, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 60, 60, 60,255,141,133,127,255,219,202,190,255,220,204,192,255,217,201,190,255, -178,164,150,255,113,100, 82,255, 81, 68, 49,255, 85, 72, 51,255,130,115, 97,255,186,170,156,255,219,203,191,255,221,204,194,255, -189,173,159,255,139,125,106,255,101, 88, 68,255, 79, 67, 49,255, 70, 58, 41,255, 66, 55, 39,255, 66, 55, 38,255, 65, 54, 38,255, - 66, 55, 39,255, 68, 56, 40,255, 69, 58, 41,255, 71, 60, 43,255, 74, 62, 45,255, 77, 65, 47,255, 80, 68, 50,255, 83, 71, 53,255, - 86, 74, 55,255, 90, 77, 59,255, 93, 80, 61,255, 97, 84, 64,255,101, 88, 67,255,105, 91, 69,255,108, 94, 72,255,112, 97, 75,255, -116,101, 77,255,122,107, 85,255,132,117, 96,255,142,127,108,255,156,141,125,255,173,157,142,255,170,155,140,255,148,134,118,255, -147,133,116,255,173,158,143,255,161,146,129,255,154,139,121,255,159,144,128,255,171,156,141,255,178,163,150,255,189,174,161,255, -185,170,156,255,181,166,152,255,171,156,142,255,155,140,125,255,132,118, 99,255,111, 97, 75,255, 90, 78, 57,255, 61, 53, 39,255, - 13, 12, 9,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 61, 61, 61,255, 60, 58, 56,255,128,119,111,255,198,183,171,255,216,200,188,255, -218,202,190,255,204,189,178,255,162,149,134,255,104, 91, 72,255, 77, 64, 44,255, 93, 80, 60,255,131,116, 97,255,182,166,151,255, -218,202,191,255,219,203,191,255,196,181,168,255,159,145,129,255,119,105, 85,255, 90, 77, 56,255, 78, 65, 45,255, 73, 61, 43,255, - 71, 60, 42,255, 71, 59, 43,255, 72, 60, 43,255, 73, 61, 44,255, 74, 62, 45,255, 76, 65, 47,255, 79, 67, 49,255, 82, 70, 52,255, - 85, 73, 55,255, 88, 75, 57,255, 91, 79, 60,255, 95, 82, 63,255, 98, 85, 66,255,102, 88, 68,255,105, 91, 70,255,109, 95, 73,255, -115,101, 78,255,127,112, 91,255,145,130,112,255,166,150,135,255,172,157,142,255,152,138,122,255,155,140,125,255,161,146,131,255, -156,141,124,255,145,130,112,255,146,131,113,255,160,145,129,255,174,160,146,255,186,171,158,255,188,172,159,255,182,167,153,255, -171,156,141,255,151,136,120,255,128,114, 94,255,111, 98, 77,255, 74, 64, 49,255, 33, 29, 22,255, 10, 8, 6,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 1, 1, 1,255, 60, 55, 51,255, -156,144,134,255,210,194,182,255,210,194,183,255,201,187,176,255,154,141,127,255, 97, 84, 64,255, 83, 70, 51,255, 90, 77, 56,255, -121,106, 86,255,172,157,142,255,209,193,181,255,219,203,191,255,212,196,184,255,188,172,159,255,152,138,120,255,120,106, 84,255, - 99, 86, 64,255, 89, 76, 55,255, 85, 72, 52,255, 82, 70, 50,255, 82, 69, 50,255, 82, 70, 51,255, 83, 71, 52,255, 85, 73, 53,255, - 88, 75, 56,255, 91, 78, 57,255, 93, 80, 60,255, 97, 84, 63,255,101, 87, 66,255,105, 91, 69,255,113, 99, 76,255,126,111, 90,255, -144,129,110,255,165,150,134,255,175,160,145,255,157,143,128,255,150,136,120,255,163,148,132,255,149,134,115,255,135,120,100,255, -135,120,101,255,147,133,114,255,167,152,137,255,181,167,154,255,187,172,158,255,180,165,151,255,167,152,136,255,144,130,114,255, -122,108, 88,255,105, 92, 72,255, 57, 50, 38,255, 7, 6, 5,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 12, 11, 10,255, 85, 79, 73,255,133,124,114,255,169,157,148,255,182,170,159,255,156,142,125,255,115,102, 85,255, - 90, 77, 57,255, 84, 71, 49,255,106, 92, 71,255,144,129,112,255,178,162,146,255,200,184,172,255,212,196,185,255,210,195,183,255, -196,180,167,255,175,159,144,255,155,140,123,255,140,125,107,255,129,114, 95,255,122,107, 87,255,118,103, 83,255,117,102, 81,255, -117,103, 82,255,120,106, 85,255,125,110, 90,255,132,117, 97,255,142,126,107,255,152,136,119,255,163,148,132,255,173,158,144,255, -175,161,146,255,163,149,135,255,151,137,121,255,148,134,116,255,137,122,102,255,124,109, 87,255,125,110, 89,255,141,126,107,255, -159,145,130,255,176,163,149,255,179,164,151,255,167,153,137,255,151,136,120,255,124,111, 94,255, 92, 82, 66,255, 64, 55, 44,255, - 27, 24, 19,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 15, 14, 13,255, 35, 32, 30,255, 65, 60, 57,255,105, 98, 90,255, -140,129,118,255,140,127,111,255,110, 97, 77,255, 88, 75, 53,255, 89, 75, 55,255,104, 90, 69,255,124,110, 91,255,148,133,115,255, -171,156,141,255,190,175,161,255,200,185,172,255,203,188,175,255,201,185,172,255,197,181,168,255,192,177,163,255,188,173,160,255, -186,171,157,255,185,170,156,255,184,170,156,255,183,168,155,255,180,166,153,255,176,161,147,255,164,150,135,255,150,135,117,255, -135,121,101,255,124,110, 88,255,116,101, 80,255,112, 98, 75,255,121,106, 85,255,145,131,112,255,161,148,133,255,164,150,135,255, -159,145,128,255,144,131,113,255,109, 97, 83,255, 66, 59, 50,255, 32, 29, 23,255, 17, 15, 12,255, 3, 3, 2,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 1, 0,255, 33, 30, 29,255, 78, 71, 64,255,118,107, 91,255,102, 89, 69,255, 88, 75, 54,255, 86, 74, 54,255, - 88, 76, 55,255, 93, 79, 58,255,101, 88, 66,255,112, 98, 78,255,124,110, 90,255,133,119, 98,255,139,124,105,255,141,127,108,255, -141,126,108,255,139,124,105,255,132,117, 98,255,125,110, 90,255,115,101, 80,255,109, 94, 73,255,105, 90, 69,255,104, 90, 68,255, -106, 92, 70,255,113, 99, 76,255,130,117, 97,255,150,136,121,255,158,146,131,255,136,123,111,255, 86, 78, 68,255, 64, 58, 49,255, - 21, 18, 15,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 18, 17, 17,255, 49, 45, 41,255, 68, 62, 53,255, - 79, 71, 59,255, 82, 72, 59,255, 89, 78, 61,255, 90, 78, 61,255, 95, 82, 63,255, 97, 84, 64,255, 98, 85, 65,255,100, 86, 66,255, -101, 88, 68,255,100, 87, 67,255,100, 87, 67,255, 96, 83, 65,255, 94, 83, 66,255, 94, 83, 68,255, 88, 78, 63,255, 88, 79, 67,255, - 67, 61, 54,255, 51, 47, 43,255, 42, 39, 37,255, 13, 12, 10,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 8, 8, 8,255, 17, 16, 15,255, 19, 17, 15,255, 22, 20, 18,255, 24, 22, 19,255, 25, 23, 19,255, 27, 24, 20,255, - 27, 25, 21,255, 25, 22, 19,255, 23, 21, 18,255, 19, 18, 15,255, 17, 16, 14,255, 14, 13, 12,255, 5, 5, 5,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 30, 30, 30,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 30, 30, 30,255, 62, 62, 62,255, 62, 62, 62,255, 29, 29, 29,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 29, 29, 29,255, 62, 62, 62,255, 62, 62, 62,255, 45, 45, 45,255, 29, 29, 29,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, 30, 30, 30,255, - 29, 29, 29,255, 45, 45, 45,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, - 62, 62, 62,255, 62, 62, 62,255, 62, 62, 62,255, 67, 65, 0, 0,104, 0, 0, 0, 8,103,103, 7, 29, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, - 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63, -205,204,204, 61, 0, 0,200, 66, 0, 0, 12, 66,161, 14,234, 64, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0,108, 1, 0, 0,216,103,103, 7, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63,247,255,239, 65, 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,168,105,103, 7, - 2, 0, 0, 0, 46, 26,128, 63, 25, 4,240, 65, 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64, 11, 3, 0, 1, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,111, 18,131, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160,107,103, 7, 68, 65, 84, 65, 16, 1, 0, 0,168,105,103, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,243, 4, 53,191, -242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63, 32,107,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 32,107,103, 7, 81, 1, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -160,107,103, 7, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0,120, 1, 0, 0, 40,108,103, 7,132, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, 99, 80, 61,114, 99, 80, 61,114, 99, 80, 61, 0, 0, 0, 0,199, 54, 36, 60,199, 54, 36, 60,199, 54, 36, 60, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0,128, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,160, 64, 0, 0,200, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 0, 0,128, 63,205,204, 76, 61, 0, 0, 5, 0, 0, 0, 0, 0, 10,215,163, 59, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,140, 36, 4, 0, 0, 0, 0, 81, 1, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 88,230,128, 4, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0, +232, 1, 0, 0,200,230,128, 4, 0, 0, 0, 0,132, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114, 99, 80, 61,114, 99, 80, 61,114, 99, 80, 61, 0, 0, 0, 0,199, 54, 36, 60, +199, 54, 36, 60,199, 54, 36, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0, +128, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 64, 0, 0,200, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 61, 0, 0, 5, 0, 0, 0, 0, 0, 10,215,163, 59, + 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,110,103, 7, 68, 65, 84, 65, 32, 0, 0, 0, - 8,110,103, 7, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0,144,110,103, 7,121, 0, 0, 0, 1, 0, 0, 0, -208,114,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, - 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,103,103, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,232,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,248,232,128, 4, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, +208, 4, 0, 0,104,233,128, 4, 0, 0, 0, 0,121, 0, 0, 0, 1, 0, 0, 0,136,238,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101, +114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,225,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +222,149, 47, 63, 53, 70, 58, 63,222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, + 7,165, 39, 63,149, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 1, 0,128, 63, 1, 0,128, 51, 1, 0, 0,179, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0,128, 63, 1, 0,128, 51, 0, 0, 0, 0, + 2, 0, 0,179, 2, 0, 0,167, 1, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 53, 1, 0, 0, 41, 1, 0,128,168, 0, 0,128, 63, + 0, 0,128, 63,157,190,215, 49,167,170, 4, 52, 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, 33, 69, 15, 51, 0, 0, 0,128, + 73,254, 67, 51,243, 97,106, 49, 0, 0,128, 63, 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, 0, 0,128, 53, 0, 0,128, 63, + 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,187,225, 16, 63, 0, 0,128, 63, +205,204,204, 62,237, 54, 32, 63, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, + 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 79, 66, 0, 0,208, 4, 0, 0,136,238,128, 4, 0, 0, 0, 0,121, 0, 0, 0, 1, 0, 0, 0,136,244,128, 4, + 0, 0, 0, 0,104,233,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, + 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,204, 5, 88, +159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 66,130, 4, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 47, 9, 3, + 0, 0, 0, 0,152,237, 67, 4, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63,222,149, 47, 63, 52, 70, 58, 63,179, 56, 49,188, 0, 0, 0,128, 86,126,162,190,227,251,159, 62, + 56, 53,101, 63, 0, 0, 0,128, 7,165, 39, 63,149, 84, 28,191, 50,247,227, 62, 0, 0, 0,128,110,101,239, 64,151, 62,208,192, + 77,255,170, 64, 0, 0,128, 63, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, 79, 66, 0, 0, + 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63, +169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,243,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8,189, 5, 88,159,127, 0, 0,200,196, 5, 88,159,127, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0,248, 47, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,152,237, 67, 4, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,152, 0, 0, 0,168,243,128, 4, 0, 0, 0, 0,124, 0, 0, 0, 1, 0, 0, 0, + 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,205,204, 76, 62, + 10,215,163, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 79, 66, 0, 0,208, 4, 0, 0, +136,244,128, 4, 0, 0, 0, 0,121, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,238,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,226,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,222,149, 47, 63, 53, 70, 58, 63,222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, - 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,149, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, - 78,255,170, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,125,103,133, 51,176,219,194,178, 0, 0, 0, 0,190, 32, 66, 51, 1, 0,128, 63, -168,200,153, 51, 0, 0, 0, 0, 32,206, 18,179,126,126,149, 50, 1, 0,128, 63, 0, 0, 0, 0,241,251,133, 52,172,182, 27,180, -174,236,252, 51, 0, 0,128, 63, 0, 0,128, 63,157,190,215, 49,167,170, 4, 52, 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, - 33, 69, 15, 51, 0, 0, 0,128, 73,254, 67, 51,243, 97,106, 49, 0, 0,128, 63, 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, - 0, 0,128, 53, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63, -187,225, 16, 63, 0, 0,128, 63,205,204,204, 62,237, 54, 32, 63, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, -220, 3, 0, 0,208,114,103, 7,121, 0, 0, 0, 1, 0, 0, 0, 8,120,103, 7,144,110,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 79, 66, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 8,114, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8,197,104, 7, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 56,102, 3,128, 22,252, 2, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,222,149, 47, 63, 52, 70, 58, 63, -179, 56, 49,188, 0, 0, 0,128, 86,126,162,190,227,251,159, 62, 56, 53,101, 63, 0, 0, 0,128, 7,165, 39, 63,149, 84, 28,191, - 50,247,227, 62, 0, 0, 0,128,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, 79, 66, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, - 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16,119,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 80, 3,100, 3,216, 81,252, 2, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,216, 56,102, 3, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,128, 22,252, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -144, 0, 0, 0, 16,119,103, 7,124, 0, 0, 0, 1, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,205,204, 76, 62, 10,215,163, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, - 79, 66, 0, 0,220, 3, 0, 0, 8,120,103, 7,121, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,114,103, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,103,103, 7, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, - 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, @@ -24727,8 +4204,8 @@ char datatoc_startup_blend[]= { 241,161, 95, 62,164,111, 75, 63, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 35,233,134, 49,251,110, 17,179, 0, 0, 0, 0, 49,158,141, 50, 1, 0,128, 63,126,214,237, 50, 0, 0, 0, 0,155,248, 28,178, -199,139, 96,177,254,255,127, 63, 0, 0, 0, 0, 80,136,159,178,192, 4,158,178,209,114,143,179, 0, 0,128, 63, 53,236,148,190, + 1, 0,128, 50, 0, 0, 0,179, 0, 0, 0, 0, 1, 0,128, 50, 1, 0,128, 63, 1, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 39, 1, 0, 0, 52, 1, 0,128, 39, 0, 0,128, 63, 53,236,148,190, 222,102, 69,191, 37,255, 16, 63, 0, 0, 0,128, 24,134,116, 63, 57,174, 76,190,240,161, 95, 62, 0, 0, 0,128,235, 13, 98,189, 34,194, 26, 63,166,111, 75, 63, 0, 0, 0,128,208, 19, 13, 63,234, 65,102,190, 10, 10,231,192, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 68, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, @@ -24736,34 +4213,42 @@ char datatoc_startup_blend[]= { 229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0,160, 2, 0, 0, 72,124,103, 7, 44, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, 0, 0, 8, 0, - 1, 0, 50, 0,205,204, 76, 62, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, - 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, 0, 0,128, 63, - 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 4, 0, 67, 0, 64, 3, 67, 0, 64, 3, - 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61, - 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 80,127,103, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 65, 0, 0, 32, 3, 0, 0,168,249,128, 4, 0, 0, 0, 0, 44, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, + 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 10,215, 35, 60, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 50, 0,205,204, 76, 62, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 2, 0, + 50, 0, 0, 6, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 4, 0, 67, 0, 64, 3, 67, 0, 64, 3, 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61, 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 24,253,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192,128,103, 7, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,111,148, 26, 63,111,148, 26, 63,111,148, 26, 63,205,204, 76, 61,205,204,204, 61,102,102,166, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 80,127,103, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 24, 34,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,120,254,128, 4, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111,148, 26, 63,111,148, 26, 63,111,148, 26, 63, +205,204, 76, 61,205,204,204, 61,102,102,166, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, + 24,253,128, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +136,159,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -24771,9 +4256,9 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 32, 0, 0, 0,192,128,103, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, - 96, 0, 0, 0, 1, 0, 1, 0, 49, 0, 49, 0, 72,129,103, 7,176,145,103, 7, 68, 65, 84, 65, 0, 16, 0, 0, 72,129,103, 7, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,120,254,128, 4, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, + 32, 0, 0, 0, 96, 0, 0, 0, 1, 0, 1, 0, 49, 0, 49, 0,232,254,128, 4, 0, 0, 0, 0, 56, 15,129, 4, 0, 0, 0, 0, + 68, 65, 84, 65, 0, 16, 0, 0,232,254,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -24901,7 +4386,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0,176,145,103, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0, + 56, 15,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -26053,19 +5539,150 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0, - 48, 1, 0, 0, 24, 34,104, 7, 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 7, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 35,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,176, 35,104, 7, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, - 96, 0, 0, 0, 0, 0, 1, 0, 14, 0, 13, 0, 56, 36,104, 7,160, 52,104, 7, 68, 65, 84, 65, 0, 16, 0, 0, 56, 36,104, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0,112, 1, 0, 0,136,159,129, 4, 0, 0, 0, 0, + 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 7, 0, 8, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 1, 0, + 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,161,129, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 72,161,129, 4, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, + 0, 0, 1, 0, 14, 0, 13, 0,184,161,129, 4, 0, 0, 0, 0, 8,178,129, 4, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, +184,161,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 68, 65, 84, 65, 0,144, 0, 0, 8,178,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, @@ -26194,7 +5811,6 @@ char datatoc_startup_blend[]= { 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 68, 65, 84, 65, 0,144, 0, 0,160, 52,104, 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, @@ -27219,148 +6835,25 @@ char datatoc_startup_blend[]= { 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0, - 40, 1, 0, 0, 8,197,104, 7, 54, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0,176, 1, 0, 0, 88, 66,130, 4, 0, 0, 0, 0, 54, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 7,101, 3, -224,205,104, 7,192,206,104, 7, 0, 0, 0, 0, 80,200,104, 7, 48,203,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,198,104, 7, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120,201,104, 7, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 40,204,104, 7, 2, 0, 0, 0, 5, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, - 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 67, 0, 0, 0, 30, 0, 6, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, -224, 7,101, 3, 0, 0, 0, 0, 1, 0, 0, 0, 72,124,103, 7, 68, 65, 84, 65, 84, 1, 0, 0,152,198,104, 7, 88, 1, 0, 0, - 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80,200,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 89, 38, 4, 0, 0, 0, 0, + 88, 75,130, 4, 0, 0, 0, 0, 24, 76,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 70,130, 4, 0, 0, 0, 0, +200, 72,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 68,130, 4, 0, 0, 0, 0, + 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 71,130, 4, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,168, 73,130, 4, 0, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 30, 0, 6, 0, 1, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0, 8, 89, 38, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0,168,249,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0, 88, 68,130, 4, 0, 0, 0, 0, + 88, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 70,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -27368,17 +6861,18 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, - 80,200,104, 7, 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, - 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191,230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191, -253,255,127,191, 0, 0,128,191, 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, - 26,182,230, 73, 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, - 1, 0, 0, 0,245,255,127, 63, 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191, -250,255,127,191, 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, - 26,182,230, 73,230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0,120,201,104, 7, 88, 1, 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, 8, 70,130, 4, 0, 0, 0, 0, + 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, 1, 0, 0, 0, + 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191,230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191,253,255,127,191, + 0, 0,128,191, 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, + 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, 1, 0, 0, 0, +245,255,127, 63, 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191,250,255,127,191, + 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73, +230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0, 24, 71,130, 4, 0, 0, 0, 0, 88, 1, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48,203,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +200, 72,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -27386,2831 +6880,3272 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0, 48,203,104, 7, - 57, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 35, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, - 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65, 84, 1, 0, 0, - 40,204,104, 7, 88, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,205,104, 7, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0,200, 72,130, 4, 0, 0, 0, 0, 57, 0, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, + 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65,104, 1, 0, 0,168, 73,130, 4, 0, 0, 0, 0, + 88, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88, 75,130, 4, 0, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,206,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 76,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,120, 0, 0, 0,224,205,104, 7, 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, - 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, 68, 65, 84, 65, 8, 1, 0, 0,192,206,104, 7, 67, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 48,208,104, 7, 87, 1, 0, 0, 1, 0, 0, 0,224,213,104, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,208,211,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,120, 0, 0, 0, 88, 75,130, 4, 0, 0, 0, 0, + 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, + 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, + 68, 65, 84, 65, 32, 1, 0, 0, 24, 76,130, 4, 0, 0, 0, 0, 67, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, +136, 77,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, 56, 83,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, 48, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 40, 81,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,124,208,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,240, 77,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,208,211,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61, 72,213,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 40, 81,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,184, 82,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72,213,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0,184, 82,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,224,213,104, 7, 87, 1, 0, 0, 1, 0, 0, 0, 32,218,104, 7, - 48,208,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,111, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 16,216,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 56,120, 94, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 44,214,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, 56, 83,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, +136, 87,130, 4, 0, 0, 0, 0,136, 77,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 66,108,111, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +120, 85,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 16,216,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,136,217,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136,217,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 32,218,104, 7, 87, 1, 0, 0, 1, 0, 0, 0, 96,222,104, 7, -224,213,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 80,220,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,108,218,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,160, 83,130, 4, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 80,220,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61,200,221,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, +120, 85,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, + 8, 87,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200,221,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8, 87,130, 4, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, +136, 87,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,216, 91,130, 4, 0, 0, 0, 0, 56, 83,130, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,200, 89,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,240, 87,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,200, 89,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 88, 91,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 88, 91,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 96,222,104, 7, 87, 1, 0, 0, 1, 0, 0, 0,160,226,104, 7, - 32,218,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, 97,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,144,224,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,224,212, 93, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,172,222,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0,216, 91,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, + 40, 96,130, 4, 0, 0, 0, 0,136, 87,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 67,108, 97,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, + 24, 94,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,144,224,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186, 8,226,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8,226,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,160,226,104, 7, 87, 1, 0, 0, 1, 0, 0, 0,224,230,104, 7, - 96,222,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,208,228,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,236,226,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 64, 92,130, 4, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,208,228,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61, 72,230,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, + 24, 94,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, +168, 95,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72,230,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,168, 95,130, 4, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, + 40, 96,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,120,100,130, 4, 0, 0, 0, 0,216, 91,130, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,104, 98,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,144, 96,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,104, 98,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,248, 99,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0,248, 99,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,224,230,104, 7, 87, 1, 0, 0, 1, 0, 0, 0, 32,235,104, 7, -160,226,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,114,101, 97,115,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 16,233,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 56,120, 94, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 44,231,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0,120,100,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, +200,104,130, 4, 0, 0, 0, 0, 40, 96,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 67,114,101, 97,115,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +184,102,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 16,233,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,228, 97,175,190, 50,131,112, 63,218,243,127,191, - 10,183,157,188,136,234,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136,234,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215, 35, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 32,235,104, 7, 87, 1, 0, 0, 1, 0, 0, 0, 96,239,104, 7, -224,230,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, 0, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 80,237,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,108,235,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,224,100,130, 4, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 80,237,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61,200,238,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, +184,102,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,228, 97,175,190, 50,131,112, 63,218,243,127,191, 10,183,157,188, + 72,104,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200,238,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72,104,130, 4, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215, 35, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, +200,104,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, 24,109,130, 4, 0, 0, 0, 0,120,100,130, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, 0, 48, 54, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 8,107,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 48,105,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 8,107,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,152,108,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0,152,108,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 96,239,104, 7, 87, 1, 0, 0, 1, 0, 0, 0,160,243,104, 7, - 32,235,104, 7, 88,186, 79, 3, 0, 0, 0, 0, 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,144,241,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,172,239,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, 24,109,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, +104,113,130, 4, 0, 0, 0, 0,200,104,130, 4, 0, 0, 0, 0, 88,186, 79, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, + 88,111,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,144,241,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186, 8,243,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8,243,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,128,109,130, 4, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, + 88,111,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, +232,112,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,232,112,130, 4, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, +104,113,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,117,130, 4, 0, 0, 0, 0, 24,109,130, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,105,108,108, 47, 68,101,101,112,101,110, 0, 48, 48, + 49, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,115,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, + 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,208,113,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,115,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, +224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 56,117,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 56,117,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,160,243,104, 7, 87, 1, 0, 0, 1, 0, 0, 0,224,247,104, 7, - 96,239,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,105,108,108, 47, 68,101,101,112,101,110, 0, 48, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,208,245,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,232,190, 95, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,236,243,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0,184,117,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, + 8,122,130, 4, 0, 0, 0, 0,104,113,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 70,108, 97,116,116,101,110, 47, 67,111,110,116,114, 97,115,116, 0, 48, 48, 49, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +248,119,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,208,245,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186, 72,247,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72,247,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, + 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 32,118,130, 4, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, +248,119,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, +136,121,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136,121,130, 4, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, + 8,122,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, 88,126,130, 4, 0, 0, 0, 0,184,117,130, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, 97, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 72,124,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,112,122,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 72,124,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, +224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,216,125,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0,216,125,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,224,247,104, 7, 87, 1, 0, 0, 1, 0, 0, 0, 32,252,104, 7, -160,243,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,108, 97,116,116,101,110, 47, 67,111,110,116,114, 97,115,116, 0, 48, - 48, 49, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 16,250,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 64, 98, 96, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 44,248,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, 88,126,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, +168,130,130, 4, 0, 0, 0, 0, 8,122,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 73,110,102,108, 97,116,101, 47, 68,101,102,108, 97,116,101, 0, 48, 48, 49, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +152,128,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 16,250,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,136,251,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136,251,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, + 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, 68, 65, 84, 65, 16, 1, 0, 0,192,126,130, 4, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, +152,128,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, + 40,130,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40,130,130, 4, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, +168,130,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,248,134,130, 4, 0, 0, 0, 0, 88,126,130, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,232,132,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, + 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 16,131,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,232,132,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, +224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,120,134,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0,120,134,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 32,252,104, 7, 87, 1, 0, 0, 1, 0, 0, 0, 96, 0,105, 7, -224,247,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, 97, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 80,254,104, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,152, 5, 97, 7, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,108,252,104, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0,248,134,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, + 72,139,130, 4, 0, 0, 0, 0,168,130,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 76,105,103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, + 56,137,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 80,254,104, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,200,255,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200,255,104, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 96, 0,105, 7, 87, 1, 0, 0, 1, 0, 0, 0,160, 4,105, 7, - 32,252,104, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 73,110,102,108, 97,116,101, 47, 68,101,102,108, 97,116,101, 0, 48, 48, - 49, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,144, 2,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,240,168, 97, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, - 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0,172, 0,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 96,135,130, 4, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,144, 2,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186, 8, 4,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, + 56,137,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, +200,138,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8, 4,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,160, 4,105, 7, 87, 1, 0, 0, 1, 0, 0, 0,224, 8,105, 7, - 96, 0,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,208, 6,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 72, 76, 98, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,236, 4,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200,138,130, 4, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, + 72,139,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,152,143,130, 4, 0, 0, 0, 0,248,134,130, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,136,141,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,208, 6,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186, 72, 8,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,176,139,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,136,141,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 24,143,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72, 8,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,224, 8,105, 7, 87, 1, 0, 0, 1, 0, 0, 0, 32, 13,105, 7, -160, 4,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105,103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 16, 11,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 44, 9,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 16, 11,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61,136, 12,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136, 12,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 24,143,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 32, 13,105, 7, 87, 1, 0, 0, 1, 0, 0, 0, 96, 17,105, 7, -224, 8,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 80, 15,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,108, 13,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0,152,143,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, +232,147,130, 4, 0, 0, 0, 0, 72,139,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 77,117,108,116,105,112,108,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +216,145,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 80, 15,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61,200, 16,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200, 16,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 0,144,130, 4, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, +216,145,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, +104,147,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,104,147,130, 4, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, +232,147,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, 56,152,130, 4, 0, 0, 0, 0,152,143,130, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 78,117,100,103,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 40,150,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, + 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 80,148,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 40,150,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, +224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,184,151,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0,184,151,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, 56,152,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, +136,156,130, 4, 0, 0, 0, 0,232,147,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 80,105,110, 99,104, 47, 77, 97,103,110,105,102,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +120,154,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, + 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, 68, 65, 84, 65, 16, 1, 0, 0,160,152,130, 4, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, +120,154,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, + 8,156,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8,156,130, 4, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, +136,156,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,216,160,130, 4, 0, 0, 0, 0, 56,152,130, 4, 0, 0, 0, 0, + 72,208, 93, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,111,108,105,115,104, 0, 48, 48, 49, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,200,158,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 9, + 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,240,156,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,200,158,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, +224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 88,160,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 88,160,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0,216,160,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, + 40,165,130, 4, 0, 0, 0, 0,136,156,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 83, 99,114, 97,112,101, 47, 80,101, 97,107,115, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, + 24,163,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, + 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 64,161,130, 4, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, + 24,163,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, +168,164,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,168,164,130, 4, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, + 40,165,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,120,169,130, 4, 0, 0, 0, 0,216,160,130, 4, 0, 0, 0, 0, + 32,205,112, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83, 99,117,108,112,116, 32, 68,114, 97,119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,104,167,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, + 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,144,165,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,104,167,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, +224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,248,168,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0,248,168,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0,120,169,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, +200,173,130, 4, 0, 0, 0, 0, 40,165,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 83,109,101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +184,171,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0,224,169,130, 4, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, +184,171,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, + 72,173,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72,173,130, 4, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, +200,173,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, 24,178,130, 4, 0, 0, 0, 0,120,169,130, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, 0, 48, 48, 49, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 8,176,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, + 0, 0, 0, 0, 5, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 48,174,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 8,176,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, +224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,152,177,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0,152,177,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, 24,178,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, +104,182,130, 4, 0, 0, 0, 0,200,173,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 83,110, 97,107,101, 32, 72,111,111,107, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, + 88,180,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, + 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0,128,178,130, 4, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, + 88,180,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, +232,181,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,232,181,130, 4, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, +104,182,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,186,130, 4, 0, 0, 0, 0, 24,178,130, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,184,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,208,182,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,184,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,186,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 56,186,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 96, 17,105, 7, 87, 1, 0, 0, 1, 0, 0, 0,160, 21,105, 7, - 32, 13,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117,108,116,105,112,108,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,144, 19,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,172, 17,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0,184,186,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, + 8,191,130, 4, 0, 0, 0, 0,104,182,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 83,117, 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +248,188,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,144, 19,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61, 8, 21,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8, 21,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,160, 21,105, 7, 87, 1, 0, 0, 1, 0, 0, 0,224, 25,105, 7, - 96, 17,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 78,117,100,103,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,208, 23,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,160,239, 98, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,236, 21,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,187,130, 4, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,208, 23,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186, 72, 25,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, +248,188,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, +136,190,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72, 25,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136,190,130, 4, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, + 8,191,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, 88,195,130, 4, 0, 0, 0, 0,184,186,130, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,104,117,109, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 72,193,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 8, + 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,112,191,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 72,193,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, +224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,216,194,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0,216,194,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,224, 25,105, 7, 87, 1, 0, 0, 1, 0, 0, 0, 32, 30,105, 7, -160, 21,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,105,110, 99,104, 47, 77, 97,103,110,105,102,121, 0, 48, 48, 49, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 16, 28,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,248,146, 99, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, - 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0, 44, 26,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, 88,195,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8,191,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 84,119,105,115,116, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +152,197,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 16, 28,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,136, 29,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136, 29,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 32, 30,105, 7, 87, 1, 0, 0, 1, 0, 0, 0, 96, 34,105, 7, -224, 25,105, 7, 72,208, 93, 3, 0, 0, 0, 0, 66, 82, 80,111,108,105,115,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 80, 32,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 64, 98, 96, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 9, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,108, 30,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, + 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0,192,195,130, 4, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 80, 32,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,200, 33,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, +152,197,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, + 40,199,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200, 33,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 96, 34,105, 7, 87, 1, 0, 0, 1, 0, 0, 0,160, 38,105, 7, - 32, 30,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83, 99,114, 97,112,101, 47, 80,101, 97,107,115, 0, 48, 48, 49, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,144, 36,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 80, 54,100, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,172, 34,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,144, 36,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186, 8, 38,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40,199,130, 4, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 85, 83, 69, 82, 32, 13, 0, 0, +160, 19,176, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 33, 8, 17, 1, 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, + 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85, +115,101,114,115, 47,116,111,110, 47, 68,101,115,107,116,111,112, 47, 0, 45,112,111,119,101,114,112, 99, 47, 98,105,110, 47, 98, +108,101,110,100,101,114, 46, 97,112,112, 47, 67,111,110,116,101,110,116,115, 47, 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8, 38,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,160, 38,105, 7, 87, 1, 0, 0, 1, 0, 0, 0,224, 42,105, 7, - 96, 34,105, 7, 32,205,112, 3, 0, 0, 0, 0, 66, 82, 83, 99,117,108,112,116, 32, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,208, 40,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,144, 27, 95, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,236, 38,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,208, 40,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186, 72, 42,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72, 42,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,224, 42,105, 7, 87, 1, 0, 0, 1, 0, 0, 0, 32, 47,105, 7, -160, 38,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 16, 45,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 44, 43,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 16, 45,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61,136, 46,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136, 46,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 32, 47,105, 7, 87, 1, 0, 0, 1, 0, 0, 0, 96, 51,105, 7, -224, 42,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 80, 49,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,168,217,100, 7, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 5, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,108, 47,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 80, 49,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,200, 50,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200, 50,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 96, 51,105, 7, 87, 1, 0, 0, 1, 0, 0, 0,160, 55,105, 7, - 32, 47,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,110, 97,107,101, 32, 72,111,111,107, 0, 48, 48, 49, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,144, 53,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0,125,101, 7, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,172, 51,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,144, 53,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186, 8, 55,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8, 55,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,160, 55,105, 7, 87, 1, 0, 0, 1, 0, 0, 0,224, 59,105, 7, - 96, 51,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,208, 57,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,236, 55,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,208, 57,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61, 72, 59,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72, 59,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0,224, 59,105, 7, 87, 1, 0, 0, 1, 0, 0, 0, 32, 64,105, 7, -160, 55,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,117, 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 16, 62,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 44, 60,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 16, 62,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61,136, 63,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136, 63,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 32, 64,105, 7, 87, 1, 0, 0, 1, 0, 0, 0, 96, 68,105, 7, -224, 59,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,104,117,109, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 80, 66,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 88, 32,102, 7, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, - 0, 0, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,108, 64,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 80, 66,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,200, 67,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200, 67,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,200, 1, 0, 0, 96, 68,105, 7, 87, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 32, 64,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,119,105,115,116, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,144, 70,105, 7, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,176,195,102, 7, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,172, 68,105, 7, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,144, 70,105, 7, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186, 8, 72,105, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8, 72,105, 7, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 78, 65, 49,208,226, 0, 0, 32,240, 90, 3, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, - 78, 65, 77, 69,206, 11, 0, 0, 42,110,101,120,116, 0, 42,112,114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, - 0, 42,108, 97,115,116, 0,120, 0,121, 0,122, 0,119, 0,120,109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, - 97,120, 0, 42,112,111,105,110,116,101,114, 0,103,114,111,117,112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0, -115,117, 98,116,121,112,101, 0,102,108, 97,103, 0,110, 97,109,101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0,100, 97,116, 97, - 0,108,101,110, 0,116,111,116, 97,108,108,101,110, 0, 42,110,101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 50, - 52, 93, 0,117,115, 0,105, 99,111,110, 95,105,100, 0, 42,112,114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, - 98,108,111, 99,107, 0, 42,102,105,108,101,100, 97,116, 97, 0,110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,108,101,112, 97, -116,104, 91, 50, 52, 48, 93, 0,116,111,116, 0,112, 97,100, 0, 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, - 93, 0, 99,104, 97,110,103,101,100, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 95,116,105,109,101,115,116, 97,109,112, 91, 50, - 93, 0, 42,114,101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, 98,108,111, 99,107,116,121,112,101, 0, 97,100,114, 99,111,100,101, - 0,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, 42, 98,101,122,116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, - 99,116, 0,118, 97,114,116,121,112,101, 0,116,111,116,118,101,114,116, 0,105,112,111, 0,101,120,116,114, 97,112, 0,114,116, - 0, 98,105,116,109, 97,115,107, 0,115,108,105,100,101, 95,109,105,110, 0,115,108,105,100,101, 95,109, 97,120, 0, 99,117,114, -118, 97,108, 0, 42,100,114,105,118,101,114, 0, 99,117,114,118,101, 0, 99,117,114, 0,115,104,111,119,107,101,121, 0,109,117, -116,101,105,112,111, 0,112,111,115, 0,114,101,108, 97,116,105,118,101, 0,116,111,116,101,108,101,109, 0,112, 97,100, 50, 0, - 42,119,101,105,103,104,116,115, 0,118,103,114,111,117,112, 91, 51, 50, 93, 0,115,108,105,100,101,114,109,105,110, 0,115,108, -105,100,101,114,109, 97,120, 0, 42, 97,100,116, 0, 42,114,101,102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, - 0,101,108,101,109,115,105,122,101, 0, 98,108,111, 99,107, 0, 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101, -121, 0,115,108,117,114,112,104, 0, 42,108,105,110,101, 0, 42,102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101, -110,111, 0,115,116, 97,114,116, 0,101,110,100, 0,112, 97,100, 49, 0,102,108, 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, - 0,112, 97,100, 91, 52, 93, 0, 42,110, 97,109,101, 0,110,108,105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108, - 0, 42,115,101,108,108, 0, 99,117,114, 99, 0,115,101,108, 99, 0,109, 97,114,107,101,114,115, 0, 42,117,110,100,111, 95, 98, -117,102, 0,117,110,100,111, 95,112,111,115, 0,117,110,100,111, 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,109, -116,105,109,101, 0,115,105,122,101, 0,115,101,101,107, 0,112, 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0, 99,108, -105,112,115,116, 97, 0, 99,108,105,112,101,110,100, 0,108,101,110,115, 0,111,114,116,104,111, 95,115, 99, 97,108,101, 0,100, -114, 97,119,115,105,122,101, 0,115,104,105,102,116,120, 0,115,104,105,102,116,121, 0, 89, 70, 95,100,111,102,100,105,115,116, - 0, 42,100,111,102, 95,111, 98, 0,102,114, 97,109,101,110,114, 0,102,114, 97,109,101,115, 0,111,102,102,115,101,116, 0,115, -102,114, 97, 0,102,105,101, 95,105,109, 97, 0, 99,121, 99,108, 0,111,107, 0,109,117,108,116,105, 95,105,110,100,101,120, 0, -108, 97,121,101,114, 0,112, 97,115,115, 0,109,101,110,117,110,114, 0, 42,115, 99,101,110,101, 0,105, 98,117,102,115, 0, 42, -103,112,117,116,101,120,116,117,114,101, 0, 42, 97,110,105,109, 0, 42,114,114, 0, 42,114,101,110,100,101,114,115, 91, 56, 93, - 0,114,101,110,100,101,114, 95,115,108,111,116, 0,108, 97,115,116, 95,114,101,110,100,101,114, 95,115,108,111,116, 0,115,111, -117,114, 99,101, 0,108, 97,115,116,102,114, 97,109,101, 0,116,112, 97,103,101,102,108, 97,103, 0,116,111,116, 98,105,110,100, - 0,120,114,101,112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119,101,110,100, 0, 98,105,110,100, 99,111,100,101, 0, - 42,114,101,112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108,101, 0, 42,112,114,101,118,105,101,119, 0,108, 97, -115,116,117,112,100, 97,116,101, 0,108, 97,115,116,117,115,101,100, 0, 97,110,105,109,115,112,101,101,100, 0,103,101,110, 95, -120, 0,103,101,110, 95,121, 0,103,101,110, 95,116,121,112,101, 0, 97,115,112,120, 0, 97,115,112,121, 0,116,101,120, 99,111, - 0,109, 97,112,116,111, 0,109, 97,112,116,111,110,101,103, 0, 98,108,101,110,100,116,121,112,101, 0, 42,111, 98,106,101, 99, -116, 0, 42,116,101,120, 0,117,118,110, 97,109,101, 91, 51, 50, 93, 0,112,114,111,106,120, 0,112,114,111,106,121, 0,112,114, -111,106,122, 0,109, 97,112,112,105,110,103, 0,111,102,115, 91, 51, 93, 0,115,105,122,101, 91, 51, 93, 0,114,111,116, 0,116, -101,120,102,108, 97,103, 0, 99,111,108,111,114,109,111,100,101,108, 0,112,109, 97,112,116,111, 0,112,109, 97,112,116,111,110, -101,103, 0,110,111,114,109, 97,112,115,112, 97, 99,101, 0,119,104,105, 99,104, 95,111,117,116,112,117,116, 0, 98,114,117,115, -104, 95,109, 97,112, 95,109,111,100,101, 0,112, 97,100, 91, 55, 93, 0,114, 0,103, 0, 98, 0,107, 0,100,101,102, 95,118, 97, -114, 0, 99,111,108,102, 97, 99, 0,118, 97,114,102, 97, 99, 0,110,111,114,102, 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, - 97,114,112,102, 97, 99, 0, 99,111,108,115,112,101, 99,102, 97, 99, 0,109,105,114,114,102, 97, 99, 0, 97,108,112,104, 97,102, - 97, 99, 0,100,105,102,102,102, 97, 99, 0,115,112,101, 99,102, 97, 99, 0,101,109,105,116,102, 97, 99, 0,104, 97,114,100,102, - 97, 99, 0,114, 97,121,109,105,114,114,102, 97, 99, 0,116,114, 97,110,115,108,102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99, -111,108,101,109,105,116,102, 97, 99, 0, 99,111,108,114,101,102,108,102, 97, 99, 0, 99,111,108,116,114, 97,110,115,102, 97, 99, - 0,100,101,110,115,102, 97, 99, 0,115, 99, 97,116,116,101,114,102, 97, 99, 0,114,101,102,108,102, 97, 99, 0,116,105,109,101, -102, 97, 99, 0,108,101,110,103,116,104,102, 97, 99, 0, 99,108,117,109,112,102, 97, 99, 0,107,105,110,107,102, 97, 99, 0,114, -111,117,103,104,102, 97, 99, 0,112, 97,100,101,110,115,102, 97, 99, 0,108,105,102,101,102, 97, 99, 0,115,105,122,101,102, 97, - 99, 0,105,118,101,108,102, 97, 99, 0,112,118,101,108,102, 97, 99, 0,115,104, 97,100,111,119,102, 97, 99, 0,122,101,110,117, -112,102, 97, 99, 0,122,101,110,100,111,119,110,102, 97, 99, 0, 98,108,101,110,100,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, - 48, 93, 0, 42,104, 97,110,100,108,101, 0, 42,112,110, 97,109,101, 0, 42,115,116,110, 97,109,101,115, 0,115,116,121,112,101, -115, 0,118, 97,114,115, 0, 42,118, 97,114,115,116,114, 0, 42,114,101,115,117,108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, - 97, 91, 51, 50, 93, 0, 40, 42,100,111,105,116, 41, 40, 41, 0, 40, 42,105,110,115,116, 97,110, 99,101, 95,105,110,105,116, 41, - 40, 41, 0, 40, 42, 99, 97,108,108, 98, 97, 99,107, 41, 40, 41, 0,118,101,114,115,105,111,110, 0, 97, 0,105,112,111,116,121, -112,101, 0, 42,105,109, 97, 0, 42, 99,117, 98,101, 91, 54, 93, 0,105,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, - 97,116, 91, 51, 93, 91, 51, 93, 0,115,116,121,112,101, 0,118,105,101,119,115, 99, 97,108,101, 0,110,111,116,108, 97,121, 0, - 99,117, 98,101,114,101,115, 0,100,101,112,116,104, 0,114,101, 99, 97,108, 99, 0,108, 97,115,116,115,105,122,101, 0,102, 97, -108,108,111,102,102, 95,116,121,112,101, 0,102, 97,108,108,111,102,102, 95,115,111,102,116,110,101,115,115, 0,114, 97,100,105, -117,115, 0, 99,111,108,111,114, 95,115,111,117,114, 99,101, 0,116,111,116,112,111,105,110,116,115, 0,112,100,112, 97,100, 0, -112,115,121,115, 0,112,115,121,115, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115, -112, 97, 99,101, 0, 42,112,111,105,110,116, 95,116,114,101,101, 0, 42,112,111,105,110,116, 95,100, 97,116, 97, 0,110,111,105, -115,101, 95,115,105,122,101, 0,110,111,105,115,101, 95,100,101,112,116,104, 0,110,111,105,115,101, 95,105,110,102,108,117,101, -110, 99,101, 0,110,111,105,115,101, 95, 98, 97,115,105,115, 0,112,100,112, 97,100, 51, 91, 51, 93, 0,110,111,105,115,101, 95, -102, 97, 99, 0,115,112,101,101,100, 95,115, 99, 97,108,101, 0, 42, 99,111, 98, 97, 0,114,101,115,111,108, 91, 51, 93, 0,105, -110,116,101,114,112, 95,116,121,112,101, 0,102,105,108,101, 95,102,111,114,109, 97,116, 0,101,120,116,101,110,100, 0,115,109, -111,107,101,100, 95,116,121,112,101, 0,105,110,116, 95,109,117,108,116,105,112,108,105,101,114, 0,115,116,105,108,108, 95,102, -114, 97,109,101, 0,115,111,117,114, 99,101, 95,112, 97,116,104, 91, 50, 52, 48, 93, 0, 42,100, 97,116, 97,115,101,116, 0, 99, - 97, 99,104,101,100,102,114, 97,109,101, 0,110,111,105,115,101,115,105,122,101, 0,116,117,114, 98,117,108, 0, 98,114,105,103, -104,116, 0, 99,111,110,116,114, 97,115,116, 0,115, 97,116,117,114, 97,116,105,111,110, 0,114,102, 97, 99, 0,103,102, 97, 99, - 0, 98,102, 97, 99, 0,102,105,108,116,101,114,115,105,122,101, 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, 97,114, -105,116,121, 0,109,103, 95,111, 99,116, 97,118,101,115, 0,109,103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97,105,110, - 0,100,105,115,116, 95, 97,109,111,117,110,116, 0,110,115, 95,111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, 0,118, -110, 95,119, 50, 0,118,110, 95,119, 51, 0,118,110, 95,119, 52, 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105,115,116, -109, 0,118,110, 95, 99,111,108,116,121,112,101, 0,110,111,105,115,101,100,101,112,116,104, 0,110,111,105,115,101,116,121,112, -101, 0,110,111,105,115,101, 98, 97,115,105,115, 0,110,111,105,115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, 97,103, - 0, 99,114,111,112,120,109,105,110, 0, 99,114,111,112,121,109,105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114,111,112, -121,109, 97,120, 0,116,101,120,102,105,108,116,101,114, 0, 97,102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101, -112,101, 97,116, 0, 99,104,101, 99,107,101,114,100,105,115,116, 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42,110,111, -100,101,116,114,101,101, 0, 42,112,108,117,103,105,110, 0, 42,101,110,118, 0, 42,112,100, 0, 42,118,100, 0,117,115,101, 95, -110,111,100,101,115, 0,108,111, 99, 91, 51, 93, 0,114,111,116, 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105, -110, 91, 51, 93, 0,109, 97,120, 91, 51, 93, 0,109,111,100,101, 0,116,111,116,101,120, 0,115,104,100,119,114, 0,115,104,100, -119,103, 0,115,104,100,119, 98, 0,115,104,100,119,112, 97,100, 0,101,110,101,114,103,121, 0,100,105,115,116, 0,115,112,111, -116,115,105,122,101, 0,115,112,111,116, 98,108,101,110,100, 0,104, 97,105,110,116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, - 42, 99,117,114,102, 97,108,108,111,102,102, 0,115,104, 97,100,115,112,111,116,115,105,122,101, 0, 98,105, 97,115, 0,115,111, -102,116, 0, 99,111,109,112,114,101,115,115,116,104,114,101,115,104, 0,112, 97,100, 53, 91, 51, 93, 0, 98,117,102,115,105,122, -101, 0,115, 97,109,112, 0, 98,117,102,102,101,114,115, 0,102,105,108,116,101,114,116,121,112,101, 0, 98,117,102,102,108, 97, -103, 0, 98,117,102,116,121,112,101, 0,114, 97,121, 95,115, 97,109,112, 0,114, 97,121, 95,115, 97,109,112,121, 0,114, 97,121, - 95,115, 97,109,112,122, 0,114, 97,121, 95,115, 97,109,112, 95,116,121,112,101, 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, - 97,114,101, 97, 95,115,105,122,101, 0, 97,114,101, 97, 95,115,105,122,101,121, 0, 97,114,101, 97, 95,115,105,122,101,122, 0, - 97,100, 97,112,116, 95,116,104,114,101,115,104, 0,114, 97,121, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0,116,101,120, - 97, 99,116, 0,115,104, 97,100,104, 97,108,111,115,116,101,112, 0,115,117,110, 95,101,102,102,101, 99,116, 95,116,121,112,101, - 0,115,107,121, 98,108,101,110,100,116,121,112,101, 0,104,111,114,105,122,111,110, 95, 98,114,105,103,104,116,110,101,115,115, - 0,115,112,114,101, 97,100, 0,115,117,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,117,110, 95,115,105,122,101, 0, - 98, 97, 99,107,115, 99, 97,116,116,101,114,101,100, 95,108,105,103,104,116, 0,115,117,110, 95,105,110,116,101,110,115,105,116, -121, 0, 97,116,109, 95,116,117,114, 98,105,100,105,116,121, 0, 97,116,109, 95,105,110,115, 99, 97,116,116,101,114,105,110,103, - 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,101,120,116,105,110, 99,116,105,111,110, 95,102, 97, 99,116,111,114, 0, 97,116, -109, 95,100,105,115,116, 97,110, 99,101, 95,102, 97, 99,116,111,114, 0,115,107,121, 98,108,101,110,100,102, 97, 99, 0,115,107, -121, 95,101,120,112,111,115,117,114,101, 0,115,107,121, 95, 99,111,108,111,114,115,112, 97, 99,101, 0,112, 97,100, 52, 91, 54, - 93, 0, 42,109,116,101,120, 91, 49, 56, 93, 0,112,114, 95,116,101,120,116,117,114,101, 0,112, 97,100, 54, 91, 54, 93, 0,100, -101,110,115,105,116,121, 0,101,109,105,115,115,105,111,110, 0,115, 99, 97,116,116,101,114,105,110,103, 0,114,101,102,108,101, - 99,116,105,111,110, 0,101,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,116,114, 97,110,115,109,105,115,115,105, -111,110, 95, 99,111,108, 91, 51, 93, 0,114,101,102,108,101, 99,116,105,111,110, 95, 99,111,108, 91, 51, 93, 0,100,101,110,115, -105,116,121, 95,115, 99, 97,108,101, 0,100,101,112,116,104, 95, 99,117,116,111,102,102, 0, 97,115,121,109,109,101,116,114,121, - 0,115,116,101,112,115,105,122,101, 95,116,121,112,101, 0,115,104, 97,100,101,102,108, 97,103, 0,115,104, 97,100,101, 95,116, -121,112,101, 0,112,114,101, 99, 97, 99,104,101, 95,114,101,115,111,108,117,116,105,111,110, 0,115,116,101,112,115,105,122,101, - 0,109,115, 95,100,105,102,102, 0,109,115, 95,105,110,116,101,110,115,105,116,121, 0,109,115, 95,115,112,114,101, 97,100, 0, -109, 97,116,101,114,105, 97,108, 95,116,121,112,101, 0,115,112,101, 99,114, 0,115,112,101, 99,103, 0,115,112,101, 99, 98, 0, -109,105,114,114, 0,109,105,114,103, 0,109,105,114, 98, 0, 97,109, 98,114, 0, 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, - 98, 0,101,109,105,116, 0, 97,110,103, 0,115,112,101, 99,116,114, 97, 0,114, 97,121, 95,109,105,114,114,111,114, 0, 97,108, -112,104, 97, 0,114,101,102, 0,115,112,101, 99, 0,122,111,102,102,115, 0, 97,100,100, 0,116,114, 97,110,115,108,117, 99,101, -110, 99,121, 0,118,111,108, 0,102,114,101,115,110,101,108, 95,109,105,114, 0,102,114,101,115,110,101,108, 95,109,105,114, 95, -105, 0,102,114,101,115,110,101,108, 95,116,114, 97, 0,102,114,101,115,110,101,108, 95,116,114, 97, 95,105, 0,102,105,108,116, -101,114, 0,116,120, 95,108,105,109,105,116, 0,116,120, 95,102, 97,108,108,111,102,102, 0,114, 97,121, 95,100,101,112,116,104, - 0,114, 97,121, 95,100,101,112,116,104, 95,116,114, 97, 0,104, 97,114, 0,115,101,101,100, 49, 0,115,101,101,100, 50, 0,103, -108,111,115,115, 95,109,105,114, 0,103,108,111,115,115, 95,116,114, 97, 0,115, 97,109,112, 95,103,108,111,115,115, 95,109,105, -114, 0,115, 97,109,112, 95,103,108,111,115,115, 95,116,114, 97, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,109,105, -114, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,116,114, 97, 0, 97,110,105,115,111, 95,103,108,111,115,115, 95,109, -105,114, 0,100,105,115,116, 95,109,105,114, 0,102, 97,100,101,116,111, 95,109,105,114, 0,115,104, 97,100,101, 95,102,108, 97, -103, 0,109,111,100,101, 95,108, 0,102,108, 97,114,101, 99, 0,115,116, 97,114, 99, 0,108,105,110,101, 99, 0,114,105,110,103, - 99, 0,104, 97,115,105,122,101, 0,102,108, 97,114,101,115,105,122,101, 0,115,117, 98,115,105,122,101, 0,102,108, 97,114,101, - 98,111,111,115,116, 0,115,116,114, 97,110,100, 95,115,116, 97, 0,115,116,114, 97,110,100, 95,101,110,100, 0,115,116,114, 97, -110,100, 95,101, 97,115,101, 0,115,116,114, 97,110,100, 95,115,117,114,102,110,111,114, 0,115,116,114, 97,110,100, 95,109,105, -110, 0,115,116,114, 97,110,100, 95,119,105,100,116,104,102, 97,100,101, 0,115,116,114, 97,110,100, 95,117,118,110, 97,109,101, - 91, 51, 50, 93, 0,115, 98,105, 97,115, 0,108, 98,105, 97,115, 0,115,104, 97,100, 95, 97,108,112,104, 97, 0,115,101,112,116, -101,120, 0,114,103, 98,115,101,108, 0,112,114, 95,116,121,112,101, 0,112,114, 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109, -112, 0,109,108, 95,102,108, 97,103, 0,100,105,102,102, 95,115,104, 97,100,101,114, 0,115,112,101, 99, 95,115,104, 97,100,101, -114, 0,114,111,117,103,104,110,101,115,115, 0,114,101,102,114, 97, 99, 0,112, 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0, -100, 97,114,107,110,101,115,115, 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42,114, 97,109,112, 95,115,112,101, 99, 0,114, 97, -109,112,105,110, 95, 99,111,108, 0,114, 97,109,112,105,110, 95,115,112,101, 99, 0,114, 97,109,112, 98,108,101,110,100, 95, 99, -111,108, 0,114, 97,109,112, 98,108,101,110,100, 95,115,112,101, 99, 0,114, 97,109,112, 95,115,104,111,119, 0,112, 97,100, 51, - 0,114, 97,109,112,102, 97, 99, 95, 99,111,108, 0,114, 97,109,112,102, 97, 99, 95,115,112,101, 99, 0, 42,103,114,111,117,112, - 0,102,114,105, 99,116,105,111,110, 0,102,104, 0,114,101,102,108,101, 99,116, 0,102,104,100,105,115,116, 0,120,121,102,114, -105, 99,116, 0,100,121,110, 97,109,111,100,101, 0,115,115,115, 95,114, 97,100,105,117,115, 91, 51, 93, 0,115,115,115, 95, 99, -111,108, 91, 51, 93, 0,115,115,115, 95,101,114,114,111,114, 0,115,115,115, 95,115, 99, 97,108,101, 0,115,115,115, 95,105,111, -114, 0,115,115,115, 95, 99,111,108,102, 97, 99, 0,115,115,115, 95,116,101,120,102, 97, 99, 0,115,115,115, 95,102,114,111,110, -116, 0,115,115,115, 95, 98, 97, 99,107, 0,115,115,115, 95,102,108, 97,103, 0,115,115,115, 95,112,114,101,115,101,116, 0,109, - 97,112,116,111, 95,116,101,120,116,117,114,101,100, 0,112, 97,100, 52, 0,103,112,117,109, 97,116,101,114,105, 97,108, 0,110, - 97,109,101, 91, 50, 53, 54, 93, 0, 42, 98, 98, 0,105, 49, 0,106, 49, 0,107, 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115, -101,108, 99,111,108, 49, 0,115,101,108, 99,111,108, 50, 0,113,117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,101,120,112,121, - 0,101,120,112,122, 0,114, 97,100, 0,114, 97,100, 50, 0,115, 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,101,108,101,109, -115, 0,100,105,115,112, 0, 42,101,100,105,116,101,108,101,109,115, 0, 42, 42,109, 97,116, 0,102,108, 97,103, 50, 0,116,111, -116, 99,111,108, 0,119,105,114,101,115,105,122,101, 0,114,101,110,100,101,114,115,105,122,101, 0,116,104,114,101,115,104, 0, - 42,108, 97,115,116,101,108,101,109, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,104,116, 0, -104, 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104,105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110, -114, 0,112,110,116,115,117, 0,112,110,116,115,118, 0,114,101,115,111,108,117, 0,114,101,115,111,108,118, 0,111,114,100,101, -114,117, 0,111,114,100,101,114,118, 0,102,108, 97,103,117, 0,102,108, 97,103,118, 0, 42,107,110,111,116,115,117, 0, 42,107, -110,111,116,115,118, 0,116,105,108,116, 95,105,110,116,101,114,112, 0,114, 97,100,105,117,115, 95,105,110,116,101,114,112, 0, - 99,104, 97,114,105,100,120, 0,107,101,114,110, 0,104, 0,110,117,114, 98, 0, 42,101,100,105,116,110,117,114, 98, 0, 42, 98, -101,118,111, 98,106, 0, 42,116, 97,112,101,114,111, 98,106, 0, 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,112, 97, -116,104, 0, 42,107,101,121, 0, 98,101,118, 0,100,114, 97,119,102,108, 97,103, 0,116,119,105,115,116, 95,109,111,100,101, 0, -112, 97,100, 91, 50, 93, 0,116,119,105,115,116, 95,115,109,111,111,116,104, 0,115,109, 97,108,108, 99, 97,112,115, 95,115, 99, - 97,108,101, 0,112, 97,116,104,108,101,110, 0, 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0, -101,120,116, 50, 0,114,101,115,111,108,117, 95,114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117, - 0, 42,108, 97,115,116,115,101,108, 0,115,112, 97, 99,101,109,111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101, -100,105,115,116, 0,115,104,101, 97,114, 0,102,115,105,122,101, 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, - 0,117,108,104,101,105,103,104,116, 0,120,111,102, 0,121,111,102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, - 0, 42,115,101,108, 98,111,120,101,115, 0, 42,101,100,105,116,102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, - 42,118,102,111,110,116, 0, 42,118,102,111,110,116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0, -115,101,112, 99,104, 97,114, 0, 99,116,105,109,101, 0,116,111,116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0, -115,101,108,115,116, 97,114,116, 0,115,101,108,101,110,100, 0, 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, - 0,101,102,102,101, 99,116, 0, 42,109,102, 97, 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109, -118,101,114,116, 0, 42,109,101,100,103,101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107, -121, 0, 42,116,101,120, 99,111,109,101,115,104, 0, 42,109,115,101,108,101, 99,116, 0, 42,101,100,105,116, 95,109,101,115,104, - 0,118,100, 97,116, 97, 0,101,100, 97,116, 97, 0,102,100, 97,116, 97, 0,116,111,116,101,100,103,101, 0,116,111,116,102, 97, - 99,101, 0,116,111,116,115,101,108,101, 99,116, 0, 97, 99,116, 95,102, 97, 99,101, 0,101,100,105,116,102,108, 97,103, 0, 99, -117, 98,101,109, 97,112,115,105,122,101, 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98, -100,105,118,114, 0,115,117, 98,115,117,114,102,116,121,112,101, 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,103,101, 0, -117,118, 91, 52, 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, - 97,112, 0,118, 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,119,101, -105,103,104,116, 0,100,101,102, 95,110,114, 0, 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0, -110,111, 91, 51, 93, 0,117,118, 91, 50, 93, 0, 99,111, 91, 50, 93, 0,105,110,100,101,120, 0,102, 0,105, 0,115, 91, 50, 53, - 54, 93, 0,116,111,116,100,105,115,112, 0, 40, 42,100,105,115,112,115, 41, 40, 41, 0,118, 91, 52, 93, 0,109,105,100, 0,118, - 91, 50, 93, 0, 42,102, 97, 99,101,115, 0, 42, 99,111,108,102, 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,118,101,114, -116,115, 0,108,101,118,101,108,115, 0,108,101,118,101,108, 95, 99,111,117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101, -119,108,118,108, 0,101,100,103,101,108,118,108, 0,112,105,110,108,118,108, 0,114,101,110,100,101,114,108,118,108, 0,117,115, -101, 95, 99,111,108, 0, 42,101,100,103,101, 95,102,108, 97,103,115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, - 42,118,101,114,116, 95,109, 97,112, 0, 42,101,100,103,101, 95,109, 97,112, 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42, -111,108,100, 95,101,100,103,101,115, 0,115,116, 97, 99,107,105,110,100,101,120, 0, 42,101,114,114,111,114, 0,109,111,100,105, -102,105,101,114, 0,115,117, 98,100,105,118, 84,121,112,101, 0,114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, - 67, 97, 99,104,101, 0, 42,109, 67, 97, 99,104,101, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,101,110, -103,116,104, 0,114, 97,110,100,111,109,105,122,101, 0,115,101,101,100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116, 97,114, -116, 95, 99, 97,112, 0, 42,101,110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, - 95,111, 98, 0,111,102,102,115,101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115, -116, 0,102,105,116, 95,116,121,112,101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105, -115, 0,116,111,108,101,114, 97,110, 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103, -108,101, 0,118, 97,108,117,101, 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, - 0,101, 95,102,108, 97,103,115, 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, - 91, 51, 50, 93, 0, 42,100,111,109, 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,116,105,109,101, 0, 42,116, -101,120,116,117,114,101, 0,115,116,114,101,110,103,116,104, 0,100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118, -101,108, 0,116,101,120,109, 97,112,112,105,110,103, 0, 42,109, 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101, -114, 95,110, 97,109,101, 91, 51, 50, 93, 0,117,118,108, 97,121,101,114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,116,111, -114,115, 91, 49, 48, 93, 0, 42,105,109, 97,103,101, 0,110,117,109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112, -101, 99,116,120, 0, 97,115,112,101, 99,116,121, 0,115, 99, 97,108,101,120, 0,115, 99, 97,108,101,121, 0,112,101,114, 99,101, -110,116, 0,102, 97, 99,101, 67,111,117,110,116, 0,102, 97, 99, 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99, -101,110,116,101,114, 0,115,116, 97,114,116,120, 0,115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111, -119, 0,115,112,101,101,100, 0,100, 97,109,112, 0,102, 97,108,108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105, -102,101,116,105,109,101, 0,100,101,102,111,114,109,102,108, 97,103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, - 0,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112, 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99, -101,110,116, 91, 51, 93, 0, 42,105,110,100,101,120, 97,114, 0,116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, - 99,108,111,116,104, 79, 98,106,101, 99,116, 0, 42,115,105,109, 95,112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114, -109,115, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 0,112,116, 99, 97, 99,104,101,115, 0, 42,120, 0, 42,120,110,101, -119, 0, 42,120,111,108,100, 0, 42, 99,117,114,114,101,110,116, 95,120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, - 0, 42, 99,117,114,114,101,110,116, 95,118, 0, 42,109,102, 97, 99,101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109, -102, 97, 99,101,115, 0, 42, 98,118,104,116,114,101,101, 0, 42,118, 0, 42,100,109, 0, 99,102,114, 97, 0,111,112,101,114, 97, -116,105,111,110, 0,118,101,114,116,101,120, 0,116,111,116,105,110,102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,122, -101, 0, 42, 98,105,110,100,105,110,102,108,117,101,110, 99,101,115, 0, 42, 98,105,110,100,111,102,102,115,101,116,115, 0, 42, - 98,105,110,100, 99, 97,103,101, 99,111,115, 0,116,111,116, 99, 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,100, - 0, 42,100,121,110,105,110,102,108,117,101,110, 99,101,115, 0, 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0, -100,121,110,103,114,105,100,115,105,122,101, 0,100,121,110, 99,101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108, -108,119,105,100,116,104, 0, 98,105,110,100,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42, 98,105,110,100,119,101,105,103,104,116, -115, 0, 42, 98,105,110,100, 99,111,115, 0, 40, 42, 98,105,110,100,102,117,110, 99, 41, 40, 41, 0, 42,112,115,121,115, 0,116, -111,116,100,109,118,101,114,116, 0,116,111,116,100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,111,115, -105,116,105,111,110, 0,114, 97,110,100,111,109, 95,112,111,115,105,116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103, -114,111,117,112, 0,112,114,111,116,101, 99,116, 0,108,118,108, 0,115, 99,117,108,112,116,108,118,108, 0,116,111,116,108,118, -108, 0,115,105,109,112,108,101, 0, 42,102,115,115, 0, 42,116, 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, - 0,118,103,114,111,117,112, 95,110, 97,109,101, 91, 51, 50, 93, 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, - 84,121,112,101, 0,115,104,114,105,110,107, 79,112,116,115, 0,112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, - 76,101,118,101,108,115, 0, 42,111,114,105,103,105,110, 0,102, 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111, -114,105,103,105,110, 79,112,116,115, 0,111,102,102,115,101,116, 95,102, 97, 99, 0, 99,114,101, 97,115,101, 95,105,110,110,101, -114, 0, 99,114,101, 97,115,101, 95,111,117,116,101,114, 0, 99,114,101, 97,115,101, 95,114,105,109, 0, 42,111, 98, 95, 97,120, -105,115, 0,115,116,101,112,115, 0,114,101,110,100,101,114, 95,115,116,101,112,115, 0,105,116,101,114, 0,115, 99,114,101,119, - 95,111,102,115, 0, 97,110,103,108,101, 0,112,110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111, -112,110,116,115,119, 0,116,121,112,101,117, 0,116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, - 0,100,117, 0,100,118, 0,100,119, 0, 42,100,101,102, 0, 42,108, 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, - 97,116, 91, 52, 93, 91, 52, 93, 0, 42,101,100,105,116,108, 97,116,116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99, -117,108,112,116, 0,112, 97,114,116,121,112,101, 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115, -117, 98,115,116,114, 91, 51, 50, 93, 0, 42,116,114, 97, 99,107, 0, 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103, -114,111,117,112, 0, 42,112,114,111,120,121, 95,102,114,111,109, 0, 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, - 98, 0, 42,112,111,115,101, 0, 42,103,112,100, 0, 97,118,115, 0, 42,109,112, 97,116,104, 0, 99,111,110,115,116,114, 97,105, -110,116, 67,104, 97,110,110,101,108,115, 0,100,101,102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115, 0,114,101,115, -116,111,114,101, 95,109,111,100,101, 0, 42,109, 97,116, 98,105,116,115, 0, 97, 99,116, 99,111,108, 0,100,108,111, 99, 91, 51, - 93, 0,111,114,105,103, 91, 51, 93, 0,100,115,105,122,101, 91, 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116, - 91, 52, 93, 0,114,111,116, 65,120,105,115, 91, 51, 93, 0,100,114,111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110, -103,108,101, 0,100,114,111,116, 65,110,103,108,101, 0,111, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105, -110,118, 91, 52, 93, 91, 52, 93, 0,108, 97,121, 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,112, -114,111,116,101, 99,116,102,108, 97,103, 0,116,114, 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102, -108, 97,103, 0,105,112,111,102,108, 97,103, 0,105,112,111,119,105,110, 0,115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105, -115,102,108, 97,103, 0, 98,111,117,110,100,116,121,112,101, 0,100,117,112,111,110, 0,100,117,112,111,102,102, 0,100,117,112, -115,116, 97, 0,100,117,112,101,110,100, 0,115,102, 0,109, 97,115,115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116, -105, 97, 0,102,111,114,109,102, 97, 99,116,111,114, 0,114,100, 97,109,112,105,110,103, 0,109, 97,114,103,105,110, 0,109, 97, -120, 95,118,101,108, 0,109,105,110, 95,118,101,108, 0,109, 95, 99,111,110,116, 97, 99,116, 80,114,111, 99,101,115,115,105,110, -103, 84,104,114,101,115,104,111,108,100, 0,114,111,116,109,111,100,101, 0,100,116, 0,100,116,120, 0,101,109,112,116,121, 95, -100,114, 97,119,116,121,112,101, 0,112, 97,100, 49, 91, 51, 93, 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0, -100,117,112,102, 97, 99,101,115, 99, 97, 0,112,114,111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108, -101,114,115, 0, 97, 99,116,117, 97,116,111,114,115, 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, - 97,109,101,102,108, 97,103, 0,103, 97,109,101,102,108, 97,103, 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97, -103, 0, 97,110,105,115,111,116,114,111,112,105, 99, 70,114,105, 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97, -105,110,116,115, 0,110,108, 97,115,116,114,105,112,115, 0,104,111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115, -116,101,109, 0, 42,115,111,102,116, 0, 42,100,117,112, 95,103,114,111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97, -103, 0,114,101,115,116,114,105, 99,116,102,108, 97,103, 0,115,104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, - 0,114,101, 99, 97,108, 99,111, 0, 98,111,100,121, 95,116,121,112,101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116, -105,110,103,115, 0, 42,100,101,114,105,118,101,100, 68,101,102,111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97, -108, 0,108, 97,115,116, 68, 97,116, 97, 77, 97,115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0, -103,112,117,108, 97,109,112, 0,112, 99, 95,105,100,115, 0, 42,100,117,112,108,105,108,105,115,116, 0, 99,117,114,105,110,100, -101,120, 0, 97, 99,116,105,118,101, 0,111,114,105,103,108, 97,121, 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116, -101,100, 0,111,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111,114, 99,111, 91, 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111, -114, 99,101,102,105,101,108,100, 0,115,104, 97,112,101, 0,116,101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110, -107, 95, 97,120,105,115, 0,122,100,105,114, 0,102, 95,115,116,114,101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95, -102,108,111,119, 0,102, 95,115,105,122,101, 0,102, 95,112,111,119,101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100, -105,115,116, 0,102, 95,112,111,119,101,114, 95,114, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,100, 0,112,100,101,102, - 95,100, 97,109,112, 0,112,100,101,102, 95,114,100, 97,109,112, 0,112,100,101,102, 95,112,101,114,109, 0,112,100,101,102, 95, -102,114,105, 99,116, 0,112,100,101,102, 95,114,102,114,105, 99,116, 0,112,100,101,102, 95,115,116,105, 99,107,110,101,115,115, - 0, 97, 98,115,111,114,112,116,105,111,110, 0,112,100,101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105, -102,116, 0,112,100,101,102, 95,115, 98,111,102,116, 0, 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111, -119, 0,107,105,110,107, 95,102,114,101,113, 0,107,105,110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0, -102,114,101,101, 95,101,110,100, 0,116,101,120, 95,110, 97, 98,108, 97, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0, -119,101,105,103,104,116, 91, 49, 51, 93, 0,103,108,111, 98, 97,108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93, 0, -102,114, 97,109,101, 0,116,111,116,112,111,105,110,116, 0,100, 97,116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,120, - 95, 97,114,114, 97,121, 0, 42,100, 97,116, 97, 91, 56, 93, 0, 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, 0,115,105,109, -102,114, 97,109,101, 0,115,116, 97,114,116,102,114, 97,109,101, 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, - 97,109,101, 0,108, 97,115,116, 95,101,120, 97, 99,116, 0,110, 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,109, -101, 91, 54, 52, 93, 0,105,110,102,111, 91, 54, 52, 93, 0,112, 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97, 99, -104,101, 0, 42,101,100,105,116, 0, 40, 42,102,114,101,101, 95,101,100,105,116, 41, 40, 41, 0,108,105,110, 83,116,105,102,102, - 0, 97,110,103, 83,116,105,102,102, 0,118,111,108,117,109,101, 0,118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,116, -101,114, 97,116,105,111,110,115, 0,100,105,116,101,114, 97,116,105,111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,115, - 0,107, 83, 82, 72, 82, 95, 67, 76, 0,107, 83, 75, 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82, 95, - 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 75, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76, 0, -107, 86, 67, 70, 0,107, 68, 80, 0,107, 68, 71, 0,107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77, 84, - 0,107, 67, 72, 82, 0,107, 75, 72, 82, 0,107, 83, 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,108, - 97,103,115, 0,110,117,109, 99,108,117,115,116,101,114,105,116,101,114, 97,116,105,111,110,115, 0,119,101,108,100,105,110,103, - 0,116,111,116,115,112,114,105,110,103, 0, 42, 98,112,111,105,110,116, 0, 42, 98,115,112,114,105,110,103, 0,109,115,103, 95, -108,111, 99,107, 0,109,115,103, 95,118, 97,108,117,101, 0,110,111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71, 95, - 77, 97,115,115, 91, 51, 50, 93, 0,103,114, 97,118, 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, - 0,112,104,121,115,105, 99,115, 95,115,112,101,101,100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114, -105, 99,116, 0,109,105,110,103,111, 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116, -103,114,111,117,112, 0,110, 97,109,101,100, 86, 71, 95, 83,111,102,116,103,111, 97,108, 91, 51, 50, 93, 0,102,117,122,122,121, -110,101,115,115, 0,105,110,115,112,114,105,110,103, 0,105,110,102,114,105, 99,116, 0,110, 97,109,101,100, 86, 71, 95, 83,112, -114,105,110,103, 95, 75, 91, 51, 50, 93, 0,101,102,114, 97, 0,105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115, -111,108,118,101,114,102,108, 97,103,115, 0, 42, 42,107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, - 99,111,110,100,115,112,114,105,110,103, 0, 99,111,108, 98, 97,108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108, -115,116,105,102,102, 0,115, 98, 99, 95,109,111,100,101, 0, 97,101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, - 0,109, 97,120,108,111,111,112,115, 0, 99,104,111,107,101, 0,115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, - 99, 0,115,112,114,105,110,103,112,114,101,108,111, 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116, -105,102,102, 0,105,110,112,117,115,104, 0, 42,112,111,105,110,116, 99, 97, 99,104,101, 0, 42,101,102,102,101, 99,116,111,114, - 95,119,101,105,103,104,116,115, 0,108, 99,111,109, 91, 51, 93, 0,108,114,111,116, 91, 51, 93, 91, 51, 93, 0,108,115, 99, 97, -108,101, 91, 51, 93, 91, 51, 93, 0,112, 97,100, 52, 91, 52, 93, 0, 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, - 99,101,100,111,112,116,105,111,110,115, 0,114,101,115,111,108,117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119, -114,101,115,120,121,122, 0,114,101, 97,108,115,105,122,101, 0,103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114, -101,110,100,101,114, 68,105,115,112,108, 97,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0, -118,105,115, 99,111,115,105,116,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0, -103,114, 97,118,120, 0,103,114, 97,118,121, 0,103,114, 97,118,122, 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, - 69,110,100, 0, 98, 97,107,101, 83,116, 97,114,116, 0, 98, 97,107,101, 69,110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82, -101,102,105,110,101, 0,105,110,105, 86,101,108,120, 0,105,110,105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111, -114,103, 77,101,115,104, 0, 42,109,101,115,104, 83,117,114,102, 97, 99,101, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102, -100, 97,116, 97, 80, 97,116,104, 91, 50, 52, 48, 93, 0, 98, 98, 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, - 51, 93, 0,116,121,112,101, 70,108, 97,103,115, 0,100,111,109, 97,105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117, -109,101, 73,110,105,116, 84,121,112,101, 0,112, 97,114,116, 83,108,105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116, -101, 84,114, 97, 99,101,114,115, 0,103,101,110,101,114, 97,116,101, 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, - 99,101, 83,109,111,111,116,104,105,110,103, 0,115,117,114,102, 97, 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, - 99,108,101, 73,110,102, 83,105,122,101, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70, -105,101,108,100, 83,105,122,101, 0, 42,109,101,115,104, 83,117,114,102, 78,111,114,109, 97,108,115, 0, 99,112,115, 84,105,109, -101, 83,116, 97,114,116, 0, 99,112,115, 84,105,109,101, 69,110,100, 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116, -114, 97, 99,116,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97, -100,105,117,115, 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99, -105,116,121,102,111,114, 99,101, 82, 97,100,105,117,115, 0,108, 97,115,116,103,111,111,100,102,114, 97,109,101, 0,109,105,115, -116,121,112,101, 0,104,111,114,114, 0,104,111,114,103, 0,104,111,114, 98, 0,104,111,114,107, 0,122,101,110,114, 0,122,101, -110,103, 0,122,101,110, 98, 0,122,101,110,107, 0, 97,109, 98,107, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117, -114,101, 0,101,120,112, 0,114, 97,110,103,101, 0,108,105,110,102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105, -116,121, 0, 97, 99,116,105,118,105,116,121, 66,111,120, 82, 97,100,105,117,115, 0,115,107,121,116,121,112,101, 0,111, 99, 99, -108,117,115,105,111,110, 82,101,115, 0,112,104,121,115,105, 99,115, 69,110,103,105,110,101, 0,116,105, 99,114, 97,116,101, 0, -109, 97,120,108,111,103,105, 99,115,116,101,112, 0,112,104,121,115,117, 98,115,116,101,112, 0,109, 97,120,112,104,121,115,116, -101,112, 0,109,105,115,105, 0,109,105,115,116,115,116, 97, 0,109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0, -115,116, 97,114,114, 0,115,116, 97,114,103, 0,115,116, 97,114, 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, - 0,115,116, 97,114,109,105,110,100,105,115,116, 0,115,116, 97,114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105, -115,101, 0,100,111,102,115,116, 97, 0,100,111,102,101,110,100, 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97, -111,100,105,115,116, 0, 97,111,100,105,115,116,102, 97, 99, 0, 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, - 97,111,109,111,100,101, 0, 97,111,115, 97,109,112, 0, 97,111,109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97, -100, 97,112,116, 95,116,104,114,101,115,104, 0, 97,111, 95, 97,100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97, -111, 95, 97,112,112,114,111,120, 95,101,114,114,111,114, 0, 97,111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116, -105,111,110, 0, 97,111, 95,105,110,100,105,114,101, 99,116, 95,101,110,101,114,103,121, 0, 97,111, 95,101,110,118, 95,101,110, -101,114,103,121, 0, 97,111, 95,112, 97,100, 50, 0, 97,111, 95,105,110,100,105,114,101, 99,116, 95, 98,111,117,110, 99,101,115, - 0, 97,111, 95,112, 97,100, 0, 97,111, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, - 95,109,101,116,104,111,100, 0, 97,111, 95, 97,112,112,114,111,120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101, -114,101, 0, 42, 97,111,116, 97, 98,108,101,115, 0,112, 97,100, 91, 51, 93, 0,115,101,108, 99,111,108, 0,115,120, 0,115,121, - 0, 42,108,112, 70,111,114,109, 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, 98, 70,111,114,109, 97,116, 0, 99, 98, 80, - 97,114,109,115, 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108,101,114, 0,100,119, 75,101,121, 70,114, 97, -109,101, 69,118,101,114,121, 0,100,119, 81,117, 97,108,105,116,121, 0,100,119, 66,121,116,101,115, 80,101,114, 83,101, 99,111, -110,100, 0,100,119, 70,108, 97,103,115, 0,100,119, 73,110,116,101,114,108,101, 97,118,101, 69,118,101,114,121, 0, 97,118,105, - 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114,109,115, 0, 42,112, 97,100, 0, 99,100, 83, -105,122,101, 0,113,116, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 99,111,100,101, 99, 84,121,112,101, 0, 99, -111,100,101, 99, 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0, 99,111,100,101, 99, 0, 99,111,100,101, 99, 70,108, - 97,103,115, 0, 99,111,108,111,114, 68,101,112,116,104, 0, 99,111,100,101, 99, 84,101,109,112,111,114, 97,108, 81,117, 97,108, -105,116,121, 0,109,105,110, 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 84,101,109,112,111,114, 97, -108, 81,117, 97,108,105,116,121, 0,107,101,121, 70,114, 97,109,101, 82, 97,116,101, 0, 98,105,116, 82, 97,116,101, 0, 97,117, -100,105,111, 99,111,100,101, 99, 84,121,112,101, 0, 97,117,100,105,111, 83, 97,109,112,108,101, 82, 97,116,101, 0, 97,117,100, -105,111, 66,105,116, 68,101,112,116,104, 0, 97,117,100,105,111, 67,104, 97,110,110,101,108,115, 0, 97,117,100,105,111, 67,111, -100,101, 99, 70,108, 97,103,115, 0, 97,117,100,105,111, 66,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 95, 99,111,100,101, - 99, 0,118,105,100,101,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, 98,105,116,114, 97,116,101, 0, 97,117, -100,105,111, 95,109,105,120,114, 97,116,101, 0, 97,117,100,105,111, 95,118,111,108,117,109,101, 0,103,111,112, 95,115,105,122, -101, 0,114, 99, 95,109,105,110, 95,114, 97,116,101, 0,114, 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102, -102,101,114, 95,115,105,122,101, 0,109,117,120, 95,112, 97, 99,107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116, -101, 0,109,105,120,114, 97,116,101, 0,109, 97,105,110, 0,115,112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,111, -112,112,108,101,114, 95,102, 97, 99,116,111,114, 0,100,105,115,116, 97,110, 99,101, 95,109,111,100,101,108, 0, 42,109, 97,116, - 95,111,118,101,114,114,105,100,101, 0, 42,108,105,103,104,116, 95,111,118,101,114,114,105,100,101, 0,108, 97,121, 95,122,109, - 97,115,107, 0,108, 97,121,102,108, 97,103, 0,112, 97,115,115,102,108, 97,103, 0,112, 97,115,115, 95,120,111,114, 0, 42, 97, -118,105, 99,111,100,101, 99,100, 97,116, 97, 0, 42,113,116, 99,111,100,101, 99,100, 97,116, 97, 0,113,116, 99,111,100,101, 99, -115,101,116,116,105,110,103,115, 0,102,102, 99,111,100,101, 99,100, 97,116, 97, 0,115,117, 98,102,114, 97,109,101, 0,112,115, -102,114, 97, 0,112,101,102,114, 97, 0,105,109, 97,103,101,115, 0,102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97,100, -115, 0,102,114, 97,109,101,108,101,110, 0, 98,108,117,114,102, 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101, -100,103,101, 66, 0,102,117,108,108,115, 99,114,101,101,110, 0,120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113, -112,108, 97,121, 0, 97,116,116,114,105, 98, 0,114,116, 50, 0,102,114, 97,109,101, 95,115,116,101,112, 0,115,116,101,114,101, -111,109,111,100,101, 0,100,105,109,101,110,115,105,111,110,115,112,114,101,115,101,116, 0,109, 97,120,105,109,115,105,122,101, - 0,120,115, 99,104, 0,121,115, 99,104, 0,120,112, 97,114,116,115, 0,121,112, 97,114,116,115, 0,119,105,110,112,111,115, 0, -112,108, 97,110,101,115, 0,105,109,116,121,112,101, 0,115,117, 98,105,109,116,121,112,101, 0,113,117, 97,108,105,116,121, 0, -100,105,115,112,108, 97,121,109,111,100,101, 0,114,112, 97,100, 49, 0,114,112, 97,100, 50, 0,115, 99,101,109,111,100,101, 0, -114, 97,121,116,114, 97, 99,101, 95,111,112,116,105,111,110,115, 0,114, 97,121,116,114, 97, 99,101, 95,115,116,114,117, 99,116, -117,114,101, 0,114,101,110,100,101,114,101,114, 0,111, 99,114,101,115, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, - 0,102,114,115, 95,115,101, 99, 0,101,100,103,101,105,110,116, 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100, -105,115,112,114,101, 99,116, 0,108, 97,121,101,114,115, 0, 97, 99,116,108, 97,121, 0,109, 98,108,117,114, 95,115, 97,109,112, -108,101,115, 0,120, 97,115,112, 0,121, 97,115,112, 0,102,114,115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, - 0, 99,111,108,111,114, 95,109,103,116, 95,102,108, 97,103, 0,112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117, -101, 0,112,111,115,116,115, 97,116, 0,100,105,116,104,101,114, 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95, -111,115, 97, 0, 98, 97,107,101, 95,102,105,108,116,101,114, 0, 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102, -108, 97,103, 0, 98, 97,107,101, 95,110,111,114,109, 97,108, 95,115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95, -115,112,108,105,116, 0, 98, 97,107,101, 95,109, 97,120,100,105,115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, - 0, 98, 97,107,101, 95,112, 97,100, 0, 98, 97, 99,107, 98,117,102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0, -115,116, 97,109,112, 0,115,116, 97,109,112, 95,102,111,110,116, 95,105,100, 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, - 49, 54, 48, 93, 0,102,103, 95,115,116, 97,109,112, 91, 52, 93, 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, 0,115,101,113, - 95,112,114,101,118, 95,116,121,112,101, 0,115,101,113, 95,114,101,110,100, 95,116,121,112,101, 0,115,101,113, 95,102,108, 97, -103, 0,112, 97,100, 53, 91, 53, 93, 0,115,105,109,112,108,105,102,121, 95,102,108, 97,103, 0,115,105,109,112,108,105,102,121, - 95,115,117, 98,115,117,114,102, 0,115,105,109,112,108,105,102,121, 95,115,104, 97,100,111,119,115, 97,109,112,108,101,115, 0, -115,105,109,112,108,105,102,121, 95,112, 97,114,116,105, 99,108,101,115, 0,115,105,109,112,108,105,102,121, 95, 97,111,115,115, -115, 0, 99,105,110,101,111,110,119,104,105,116,101, 0, 99,105,110,101,111,110, 98,108, 97, 99,107, 0, 99,105,110,101,111,110, -103, 97,109,109, 97, 0,106,112, 50, 95,112,114,101,115,101,116, 0,106,112, 50, 95,100,101,112,116,104, 0,114,112, 97,100, 51, - 0,100,111,109,101,114,101,115, 0,100,111,109,101,109,111,100,101, 0,100,111,109,101, 97,110,103,108,101, 0,100,111,109,101, -116,105,108,116, 0,100,111,109,101,114,101,115, 98,117,102, 0, 42,100,111,109,101,116,101,120,116, 0,101,110,103,105,110,101, - 91, 51, 50, 93, 0,112, 97,114,116,105, 99,108,101, 95,112,101,114, 99, 0,115,117, 98,115,117,114,102, 95,109, 97,120, 0,115, -104, 97,100, 98,117,102,115, 97,109,112,108,101, 95,109, 97,120, 0, 97,111, 95,101,114,114,111,114, 0,116,105,108,116, 0,114, -101,115, 98,117,102, 0, 42,119, 97,114,112,116,101,120,116, 0, 99,111,108, 91, 51, 93, 0,109, 97,116,109,111,100,101, 0,102, -114, 97,109,105,110,103, 0,114,116, 49, 0,100,111,109,101, 0,115,116,101,114,101,111,102,108, 97,103, 0,101,121,101,115,101, -112, 97,114, 97,116,105,111,110, 0, 42, 99, 97,109,101,114, 97, 0, 42, 42, 98,114,117,115,104,101,115, 0, 97, 99,116,105,118, -101, 95, 98,114,117,115,104, 95,105,110,100,101,120, 0, 98,114,117,115,104, 95, 99,111,117,110,116, 0, 42,112, 97,105,110,116, - 95, 99,117,114,115,111,114, 0,112, 97,105,110,116, 95, 99,117,114,115,111,114, 95, 99,111,108, 91, 52, 93, 0,112, 97,105,110, -116, 0,115,101, 97,109, 95, 98,108,101,101,100, 0,110,111,114,109, 97,108, 95, 97,110,103,108,101, 0,115, 99,114,101,101,110, - 95,103,114, 97, 98, 95,115,105,122,101, 91, 50, 93, 0, 42,112, 97,105,110,116, 99,117,114,115,111,114, 0,105,110,118,101,114, -116, 0,116,111,116,114,101,107,101,121, 0,116,111,116, 97,100,100,107,101,121, 0, 98,114,117,115,104,116,121,112,101, 0, 98, -114,117,115,104, 91, 55, 93, 0,101,109,105,116,116,101,114,100,105,115,116, 0,115,101,108,101, 99,116,109,111,100,101, 0,101, -100,105,116,116,121,112,101, 0,100,114, 97,119, 95,115,116,101,112, 0,102, 97,100,101, 95,102,114, 97,109,101,115, 0,110, 97, -109,101, 91, 51, 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, 93, 0,114, 97,100,105, 97,108, 95,115,121,109,109, 91, 51, 93, 0, -108, 97,115,116, 95,120, 0,108, 97,115,116, 95,121, 0,108, 97,115,116, 95, 97,110,103,108,101, 0,100,114, 97,119, 95, 97,110, - 99,104,111,114,101,100, 0, 97,110, 99,104,111,114,101,100, 95,115,105,122,101, 0, 97,110, 99,104,111,114,101,100, 95,108,111, - 99, 97,116,105,111,110, 91, 51, 93, 0, 97,110, 99,104,111,114,101,100, 95,105,110,105,116,105, 97,108, 95,109,111,117,115,101, - 91, 50, 93, 0,100,114, 97,119, 95,112,114,101,115,115,117,114,101, 0,112,114,101,115,115,117,114,101, 95,118, 97,108,117,101, - 0,115,112,101, 99,105, 97,108, 95,114,111,116, 97,116,105,111,110, 0, 42,118,112, 97,105,110,116, 95,112,114,101,118, 0, 42, -119,112, 97,105,110,116, 95,112,114,101,118, 0, 42,118,112, 97,105,110,116, 0, 42,119,112, 97,105,110,116, 0,118,103,114,111, -117,112, 95,119,101,105,103,104,116, 0, 99,111,114,110,101,114,116,121,112,101, 0,101,100,105,116, 98,117,116,102,108, 97,103, - 0,106,111,105,110,116,114,105,108,105,109,105,116, 0,100,101,103,114, 0,116,117,114,110, 0,101,120,116,114, 95,111,102,102, -115, 0,100,111,117, 98,108,105,109,105,116, 0,110,111,114,109, 97,108,115,105,122,101, 0, 97,117,116,111,109,101,114,103,101, - 0,115,101,103,109,101,110,116,115, 0,114,105,110,103,115, 0,118,101,114,116,105, 99,101,115, 0,117,110,119,114, 97,112,112, -101,114, 0,117,118, 99, 97,108, 99, 95,114, 97,100,105,117,115, 0,117,118, 99, 97,108, 99, 95, 99,117, 98,101,115,105,122,101, - 0,117,118, 99, 97,108, 99, 95,109, 97,114,103,105,110, 0,117,118, 99, 97,108, 99, 95,109, 97,112,100,105,114, 0,117,118, 99, - 97,108, 99, 95,109, 97,112, 97,108,105,103,110, 0,117,118, 99, 97,108, 99, 95,102,108, 97,103, 0,117,118, 95,102,108, 97,103, - 0,117,118, 95,115,101,108,101, 99,116,109,111,100,101, 0,117,118, 95,112, 97,100, 91, 50, 93, 0, 97,117,116,111,105,107, 95, - 99,104, 97,105,110,108,101,110, 0,105,109, 97,112, 97,105,110,116, 0,112, 97,114,116,105, 99,108,101, 0,112,114,111,112,111, -114,116,105,111,110, 97,108, 95,115,105,122,101, 0,115,101,108,101, 99,116, 95,116,104,114,101,115,104, 0, 99,108,101, 97,110, - 95,116,104,114,101,115,104, 0, 97,117,116,111,107,101,121, 95,109,111,100,101, 0, 97,117,116,111,107,101,121, 95,102,108, 97, -103, 0,114,101,116,111,112,111, 95,109,111,100,101, 0,114,101,116,111,112,111, 95,112, 97,105,110,116, 95,116,111,111,108, 0, -108,105,110,101, 95,100,105,118, 0,101,108,108,105,112,115,101, 95,100,105,118, 0,114,101,116,111,112,111, 95,104,111,116,115, -112,111,116, 0,109,117,108,116,105,114,101,115, 95,115,117, 98,100,105,118, 95,116,121,112,101, 0,115,107,103,101,110, 95,114, -101,115,111,108,117,116,105,111,110, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,105,110,116,101,114,110, - 97,108, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,101,120,116,101,114,110, 97,108, 0,115,107,103,101, -110, 95,108,101,110,103,116,104, 95,114, 97,116,105,111, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,108,105,109,105, -116, 0,115,107,103,101,110, 95, 97,110,103,108,101, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 99,111,114,114,101,108, - 97,116,105,111,110, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,115,121,109,109,101,116,114,121, 95,108,105,109,105,116, - 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95, 97,110,103,108,101, 95,119,101,105,103,104,116, 0,115,107,103, -101,110, 95,114,101,116, 97,114,103,101,116, 95,108,101,110,103,116,104, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95, -114,101,116, 97,114,103,101,116, 95,100,105,115,116, 97,110, 99,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,111, -112,116,105,111,110,115, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 0,115,107,103,101,110, 95,112,111,115,116,112, -114,111, 95,112, 97,115,115,101,115, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110,115, 91, 51, 93, 0, -115,107,103,101,110, 95,109,117,108,116,105, 95,108,101,118,101,108, 0, 42,115,107,103,101,110, 95,116,101,109,112,108, 97,116, -101, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 95, - 99,111,110,118,101,114,116, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110, 95,110,117,109, 98,101,114, - 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,114,101, -116, 97,114,103,101,116, 95,114,111,108,108, 0,115,107,103,101,110, 95,115,105,100,101, 95,115,116,114,105,110,103, 91, 56, 93, - 0,115,107,103,101,110, 95,110,117,109, 95,115,116,114,105,110,103, 91, 56, 93, 0,101,100,103,101, 95,109,111,100,101, 0,115, -110, 97,112, 95,109,111,100,101, 0,115,110, 97,112, 95,102,108, 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0,112, -114,111,112,111,114,116,105,111,110, 97,108, 0,112,114,111,112, 95,109,111,100,101, 0, 97,117,116,111, 95,110,111,114,109, 97, -108,105,122,101, 0,105,110,116,112, 97,100, 0,116,111,116,111, 98,106, 0,116,111,116,108, 97,109,112, 0,116,111,116,111, 98, -106,115,101,108, 0,116,111,116, 99,117,114,118,101, 0,116,111,116,109,101,115,104, 0,116,111,116, 97,114,109, 97,116,117,114, -101, 0,115, 99, 97,108,101, 95,108,101,110,103,116,104, 0,115,121,115,116,101,109, 0,103,114, 97,118,105,116,121, 91, 51, 93, - 0,113,117,105, 99,107, 95, 99, 97, 99,104,101, 95,115,116,101,112, 0, 42,119,111,114,108,100, 0, 42,115,101,116, 0, 98, 97, -115,101, 0, 42, 98, 97,115, 97, 99,116, 0, 42,111, 98,101,100,105,116, 0, 99,117,114,115,111,114, 91, 51, 93, 0,116,119, 99, -101,110,116, 91, 51, 93, 0,116,119,109,105,110, 91, 51, 93, 0,116,119,109, 97,120, 91, 51, 93, 0,108, 97,121, 97, 99,116, 0, - 42,101,100, 0, 42,116,111,111,108,115,101,116,116,105,110,103,115, 0, 42,115,116, 97,116,115, 0, 97,117,100,105,111, 0,116, -114, 97,110,115,102,111,114,109, 95,115,112, 97, 99,101,115, 0, 42,115,111,117,110,100, 95,115, 99,101,110,101, 0, 42,115,111, -117,110,100, 95,115, 99,101,110,101, 95,104, 97,110,100,108,101, 0, 42,102,112,115, 95,105,110,102,111, 0, 42,116,104,101, 68, - 97,103, 0,100, 97,103,105,115,118, 97,108,105,100, 0,100, 97,103,102,108, 97,103,115, 0,106,117,109,112,102,114, 97,109,101, - 0,112, 97,100, 53, 0, 97, 99,116,105,118,101, 95,107,101,121,105,110,103,115,101,116, 0,107,101,121,105,110,103,115,101,116, -115, 0,103,109, 0,117,110,105,116, 0,112,104,121,115,105, 99,115, 95,115,101,116,116,105,110,103,115, 0, 98,108,101,110,100, - 0,118,105,101,119, 0,119,105,110,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, - 0,118,105,101,119,105,110,118, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114, -115,105,110,118, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, - 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,116,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, - 52, 93, 0,122,102, 97, 99, 0, 99, 97,109,100,120, 0, 99, 97,109,100,121, 0,112,105,120,115,105,122,101, 0, 99, 97,109,122, -111,111,109, 0,118,105,101,119, 98,117,116, 0,116,119,100,114, 97,119,102,108, 97,103, 0,114,102,108, 97,103, 0,118,105,101, -119,108,111, 99,107, 0,112,101,114,115,112, 0, 99,108,105,112, 91, 54, 93, 91, 52, 93, 0, 99,108,105,112, 95,108,111, 99, 97, -108, 91, 54, 93, 91, 52, 93, 0, 42, 99,108,105,112, 98, 98, 0, 42,108,111, 99, 97,108,118,100, 0, 42,114,105, 0, 42,114,101, -116,111,112,111, 95,118,105,101,119, 95,100, 97,116, 97, 0, 42,100,101,112,116,104,115, 0, 42,115,109,115, 0, 42,115,109,111, -111,116,104, 95,116,105,109,101,114, 0,108,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,108,112,101,114,115,112, 0,108,118, -105,101,119, 0,103,114,105,100,118,105,101,119, 0,116,119, 97,110,103,108,101, 91, 51, 93, 0,112, 97,100,102, 0,114,101,103, -105,111,110, 98, 97,115,101, 0,115,112, 97, 99,101,116,121,112,101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, - 99,107,104, 97,110,100,108,101,114, 91, 56, 93, 0,108, 97,121, 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, - 0, 98,103,112,105, 99, 98, 97,115,101, 0, 42, 98,103,112,105, 99, 0,111, 98, 95, 99,101,110,116,114,101, 95, 98,111,110,101, - 91, 51, 50, 93, 0,100,114, 97,119,116,121,112,101, 0,115, 99,101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0,112, -105,118,111,116, 95,108, 97,115,116, 0,103,114,105,100, 0,110,101, 97,114, 0,102, 97,114, 0,103,114,105,100,108,105,110,101, -115, 0,103,114,105,100,102,108, 97,103, 0,103,114,105,100,115,117, 98,100,105,118, 0,109,111,100,101,115,101,108,101, 99,116, - 0,107,101,121,102,108, 97,103,115, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101, 0,116,119,102,108, 97,103, 0, 99, -117,115,116,111,109,100, 97,116, 97, 95,109, 97,115,107, 0, 97,102,116,101,114,100,114, 97,119, 0,122, 98,117,102, 0,120,114, - 97,121, 0,110,100,111,102,109,111,100,101, 0,110,100,111,102,102,105,108,116,101,114, 0, 42,112,114,111,112,101,114,116,105, -101,115, 95,115,116,111,114, 97,103,101, 0,118,101,114,116, 0,104,111,114, 0,109, 97,115,107, 0,109,105,110, 91, 50, 93, 0, -109, 97,120, 91, 50, 93, 0,109,105,110,122,111,111,109, 0,109, 97,120,122,111,111,109, 0,115, 99,114,111,108,108, 0,115, 99, -114,111,108,108, 95,117,105, 0,107,101,101,112,116,111,116, 0,107,101,101,112,122,111,111,109, 0,107,101,101,112,111,102,115, - 0, 97,108,105,103,110, 0,119,105,110,120, 0,119,105,110,121, 0,111,108,100,119,105,110,120, 0,111,108,100,119,105,110,121, - 0, 42,116, 97, 98, 95,111,102,102,115,101,116, 0,116, 97, 98, 95,110,117,109, 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99, -114,101,101,110, 0,118, 50,100, 0, 42, 97,100,115, 0,103,104,111,115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, - 97,112, 0, 99,117,114,115,111,114, 86, 97,108, 0,109, 97,105,110, 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117, -115,101,114, 0,114,101, 95, 97,108,105,103,110, 0,112,114,101,118,105,101,119, 0,112, 97,116,104,102,108, 97,103, 0,100, 97, -116, 97,105, 99,111,110, 0, 42,112,105,110,105,100, 0,114,101,110,100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104, -111,119,110, 0,122,101, 98,114, 97, 0,122,111,111,109, 0,116,105,116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, - 93, 0,102,105,108,101, 91, 56, 48, 93, 0,114,101,110, 97,109,101,102,105,108,101, 91, 56, 48, 93, 0,115,111,114,116, 0,100, -105,115,112,108, 97,121, 0, 97, 99,116,105,118,101, 95, 98,111,111,107,109, 97,114,107, 0, 97, 99,116,105,118,101, 95,102,105, -108,101, 0,115,101,108,115,116, 97,116,101, 0,102, 95,102,112, 0,102,112, 95,115,116,114, 91, 56, 93, 0,115, 99,114,111,108, -108, 95,111,102,102,115,101,116, 0, 42,112, 97,114, 97,109,115, 0, 42,102,105,108,101,115, 0, 42,102,111,108,100,101,114,115, - 95,112,114,101,118, 0, 42,102,111,108,100,101,114,115, 95,110,101,120,116, 0, 42,111,112, 0, 42,115,109,111,111,116,104,115, - 99,114,111,108,108, 95,116,105,109,101,114, 0, 42,108, 97,121,111,117,116, 0,114,101, 99,101,110,116,110,114, 0, 98,111,111, -107,109, 97,114,107,110,114, 0,115,121,115,116,101,109,110,114, 0,116,114,101,101, 0, 42,116,114,101,101,115,116,111,114,101, - 0,115,101, 97,114, 99,104, 95,115,116,114,105,110,103, 91, 51, 50, 93, 0,115,101, 97,114, 99,104, 95,116,115,101, 0,115,101, - 97,114, 99,104, 95,102,108, 97,103,115, 0,100,111, 95, 0,111,117,116,108,105,110,101,118,105,115, 0,115,116,111,114,101,102, -108, 97,103, 0, 42, 99,117,109, 97,112, 0,105,109, 97,110,114, 0, 99,117,114,116,105,108,101, 0,105,109,116,121,112,101,110, -114, 0,108,111, 99,107, 0,112,105,110, 0,100,116, 95,117,118, 0,115,116,105, 99,107,121, 0,100,116, 95,117,118,115,116,114, -101,116, 99,104, 0, 99,117,114,115,111,114, 91, 50, 93, 0, 99,101,110,116,120, 0, 99,101,110,116,121, 0,115, 99,111,112,101, -115, 0,115, 97,109,112,108,101, 95,108,105,110,101, 95,104,105,115,116, 0, 42,116,101,120,116, 0,116,111,112, 0,118,105,101, -119,108,105,110,101,115, 0,108,104,101,105,103,104,116, 0, 99,119,105,100,116,104, 0,108,105,110,101,110,114,115, 95,116,111, -116, 0,108,101,102,116, 0,115,104,111,119,108,105,110,101,110,114,115, 0,116, 97, 98,110,117,109, 98,101,114, 0,115,104,111, -119,115,121,110,116, 97,120, 0,111,118,101,114,119,114,105,116,101, 0,108,105,118,101, 95,101,100,105,116, 0,112,105,120, 95, -112,101,114, 95,108,105,110,101, 0,116,120,116,115, 99,114,111,108,108, 0,116,120,116, 98, 97,114, 0,119,111,114,100,119,114, - 97,112, 0,100,111,112,108,117,103,105,110,115, 0,102,105,110,100,115,116,114, 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99, -101,115,116,114, 91, 50, 53, 54, 93, 0, 42,112,121, 95,100,114, 97,119, 0, 42,112,121, 95,101,118,101,110,116, 0, 42,112,121, - 95, 98,117,116,116,111,110, 0, 42,112,121, 95, 98,114,111,119,115,101,114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95, -103,108,111, 98, 97,108,100,105, 99,116, 0,108, 97,115,116,115,112, 97, 99,101, 0,115, 99,114,105,112,116,110, 97,109,101, 91, - 50, 53, 54, 93, 0,115, 99,114,105,112,116, 97,114,103, 91, 50, 53, 54, 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,117,116, - 95,114,101,102,115, 0, 42, 97,114,114, 97,121, 0, 99, 97, 99,104,101,115, 0, 99, 97, 99,104,101, 95,100,105,115,112,108, 97, -121, 0,114,101,100,114, 97,119,115, 0, 42,105,100, 0, 97,115,112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, - 0,109,121, 0, 42,101,100,105,116,116,114,101,101, 0,116,114,101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,109, -101,110,117, 0,110,117,109,116,105,108,101,115,120, 0,110,117,109,116,105,108,101,115,121, 0,118,105,101,119,114,101, 99,116, - 0, 98,111,111,107,109, 97,114,107,114,101, 99,116, 0,115, 99,114,111,108,108,112,111,115, 0,115, 99,114,111,108,108,104,101, -105,103,104,116, 0,115, 99,114,111,108,108, 97,114,101, 97, 0,114,101,116,118, 97,108, 0,112,114,118, 95,119, 0,112,114,118, - 95,104, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95, -101,118,101,110,116, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95, 97,114,103,115, 41, 40, 41, 0, 42, 97, -114,103, 49, 0, 42, 97,114,103, 50, 0, 42,109,101,110,117,112, 0, 42,112,117,112,109,101,110,117, 0, 42,105,109,103, 0,108, -101,110, 95, 97,108,108,111, 99, 0, 99,117,114,115,111,114, 0,114,112,116, 95,109, 97,115,107, 0,115, 99,114,111,108,108, 98, - 97, 99,107, 0,104,105,115,116,111,114,121, 0,112,114,111,109,112,116, 91, 50, 53, 54, 93, 0,108, 97,110,103,117, 97,103,101, - 91, 51, 50, 93, 0,115,101,108, 95,115,116, 97,114,116, 0,115,101,108, 95,101,110,100, 0,102,105,108,116,101,114, 91, 54, 52, - 93, 0,102,105,108,101,110, 97,109,101, 91, 50, 53, 54, 93, 0, 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,100, - 0,114, 95,116,111, 95,108, 0,112,111,105,110,116,115, 0,107,101,114,110,105,110,103, 0,105,116, 97,108,105, 99, 0, 98,111, -108,100, 0,115,104, 97,100,111,119, 0,115,104, 97,100,120, 0,115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, - 97, 0,115,104, 97,100,111,119, 99,111,108,111,114, 0,112, 97,110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, - 98,101,108, 0,119,105,100,103,101,116,108, 97, 98,101,108, 0,119,105,100,103,101,116, 0,112, 97,110,101,108,122,111,111,109, - 0,109,105,110,108, 97, 98,101,108, 99,104, 97,114,115, 0,109,105,110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111, -108,117,109,110,115,112, 97, 99,101, 0,116,101,109,112,108, 97,116,101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, - 0, 98,117,116,116,111,110,115,112, 97, 99,101,120, 0, 98,117,116,116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108, -115,112, 97, 99,101, 0,112, 97,110,101,108,111,117,116,101,114, 0,112, 97,100, 91, 49, 93, 0,111,117,116,108,105,110,101, 91, - 52, 93, 0,105,110,110,101,114, 91, 52, 93, 0,105,110,110,101,114, 95,115,101,108, 91, 52, 93, 0,105,116,101,109, 91, 52, 93, - 0,116,101,120,116, 91, 52, 93, 0,116,101,120,116, 95,115,101,108, 91, 52, 93, 0,115,104, 97,100,101,100, 0,115,104, 97,100, -101,116,111,112, 0,115,104, 97,100,101,100,111,119,110, 0, 97,108,112,104, 97, 95, 99,104,101, 99,107, 0,105,110,110,101,114, - 95, 97,110,105,109, 91, 52, 93, 0,105,110,110,101,114, 95, 97,110,105,109, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, - 95,107,101,121, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,100, -114,105,118,101,110, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 95,115,101,108, 91, 52, 93, 0,119, 99,111, -108, 95,114,101,103,117,108, 97,114, 0,119, 99,111,108, 95,116,111,111,108, 0,119, 99,111,108, 95,116,101,120,116, 0,119, 99, -111,108, 95,114, 97,100,105,111, 0,119, 99,111,108, 95,111,112,116,105,111,110, 0,119, 99,111,108, 95,116,111,103,103,108,101, - 0,119, 99,111,108, 95,110,117,109, 0,119, 99,111,108, 95,110,117,109,115,108,105,100,101,114, 0,119, 99,111,108, 95,109,101, -110,117, 0,119, 99,111,108, 95,112,117,108,108,100,111,119,110, 0,119, 99,111,108, 95,109,101,110,117, 95, 98, 97, 99,107, 0, -119, 99,111,108, 95,109,101,110,117, 95,105,116,101,109, 0,119, 99,111,108, 95, 98,111,120, 0,119, 99,111,108, 95,115, 99,114, -111,108,108, 0,119, 99,111,108, 95,112,114,111,103,114,101,115,115, 0,119, 99,111,108, 95,108,105,115,116, 95,105,116,101,109, - 0,119, 99,111,108, 95,115,116, 97,116,101, 0,105, 99,111,110,102,105,108,101, 91, 56, 48, 93, 0, 98, 97, 99,107, 91, 52, 93, - 0,116,105,116,108,101, 91, 52, 93, 0,116,101,120,116, 95,104,105, 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,104, -101, 97,100,101,114, 95,116,105,116,108,101, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 91, 52, 93, 0,104,101, - 97,100,101,114, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0, 98,117,116,116,111,110, 91, 52, 93, 0, 98,117,116,116,111,110, - 95,116,105,116,108,101, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 91, 52, 93, 0, 98,117,116,116,111,110, 95, -116,101,120,116, 95,104,105, 91, 52, 93, 0,108,105,115,116, 91, 52, 93, 0,108,105,115,116, 95,116,105,116,108,101, 91, 52, 93, - 0,108,105,115,116, 95,116,101,120,116, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,112, 97, -110,101,108, 91, 52, 93, 0,112, 97,110,101,108, 95,116,105,116,108,101, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, - 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93, 0,115, -104, 97,100,101, 50, 91, 52, 93, 0,104,105,108,105,116,101, 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,101, 91, - 52, 93, 0,115,101,108,101, 99,116, 91, 52, 93, 0,108, 97,109,112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, 52, 93, 0,103, -114,111,117,112, 91, 52, 93, 0,103,114,111,117,112, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,111,114, -109, 91, 52, 93, 0,118,101,114,116,101,120, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0, -101,100,103,101, 91, 52, 93, 0,101,100,103,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101, 97,109, - 91, 52, 93, 0,101,100,103,101, 95,115,104, 97,114,112, 91, 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, - 93, 0,101,100,103,101, 95, 99,114,101, 97,115,101, 91, 52, 93, 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101, -108,101, 99,116, 91, 52, 93, 0,102, 97, 99,101, 95,100,111,116, 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0,118,101, -114,116,101,120, 95,110,111,114,109, 97,108, 91, 52, 93, 0, 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110, -101, 95,112,111,115,101, 91, 52, 93, 0,115,116,114,105,112, 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, - 52, 93, 0, 99,102,114, 97,109,101, 91, 52, 93, 0,110,117,114, 98, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95, -118,108,105,110,101, 91, 52, 93, 0, 97, 99,116, 95,115,112,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95, -117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95,118,108,105,110,101, 91, 52, 93, 0,108, 97,115,116,115, -101,108, 95,112,111,105,110,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108, -101, 95, 97,117,116,111, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95, - 97,108,105,103,110, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100, -108,101, 95,115,101,108, 95, 97,117,116,111, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95,118,101, 99,116, 91, 52, - 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97,108,105,103,110, 91, 52, 93, 0,100,115, 95, 99,104, 97,110,110,101,108, - 91, 52, 93, 0,100,115, 95,115,117, 98, 99,104, 97,110,110,101,108, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,111,117,116, -112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95, -105,110,102,111, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,101,114,114,111,114, 91, 52, 93, 0, 99,111,110,115,111,108,101, - 95, 99,117,114,115,111,114, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,105,122,101, 0,102, 97, 99,101,100,111,116, 95,115, -105,122,101, 0, 98,112, 97,100, 91, 50, 93, 0,115,121,110,116, 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,120,110, 91, 52, - 93, 0,115,121,110,116, 97,120, 98, 91, 52, 93, 0,115,121,110,116, 97,120,118, 91, 52, 93, 0,115,121,110,116, 97,120, 99, 91, - 52, 93, 0,109,111,118,105,101, 91, 52, 93, 0,105,109, 97,103,101, 91, 52, 93, 0,115, 99,101,110,101, 91, 52, 93, 0, 97,117, -100,105,111, 91, 52, 93, 0,101,102,102,101, 99,116, 91, 52, 93, 0,112,108,117,103,105,110, 91, 52, 93, 0,116,114, 97,110,115, -105,116,105,111,110, 91, 52, 93, 0,109,101,116, 97, 91, 52, 93, 0,101,100,105,116,109,101,115,104, 95, 97, 99,116,105,118,101, - 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116, -101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,105,122,101, 0, -104,112, 97,100, 91, 55, 93, 0,112,114,101,118,105,101,119, 95, 98, 97, 99,107, 91, 52, 93, 0,115,111,108,105,100, 91, 52, 93, - 0,116,117,105, 0,116, 98,117,116,115, 0,116,118, 51,100, 0,116,102,105,108,101, 0,116,105,112,111, 0,116,105,110,102,111, - 0,116,115,110,100, 0,116, 97, 99,116, 0,116,110,108, 97, 0,116,115,101,113, 0,116,105,109, 97, 0,116,105,109, 97,115,101, -108, 0,116,101,120,116, 0,116,111,111,112,115, 0,116,116,105,109,101, 0,116,110,111,100,101, 0,116,108,111,103,105, 99, 0, -116,117,115,101,114,112,114,101,102, 0,116, 99,111,110,115,111,108,101, 0,116, 97,114,109, 91, 50, 48, 93, 0, 97, 99,116,105, -118,101, 95,116,104,101,109,101, 95, 97,114,101, 97, 0,109,111,100,117,108,101, 91, 54, 52, 93, 0,115,112,101, 99, 91, 52, 93, - 0,100,117,112,102,108, 97,103, 0,115, 97,118,101,116,105,109,101, 0,116,101,109,112,100,105,114, 91, 49, 54, 48, 93, 0,102, -111,110,116,100,105,114, 91, 49, 54, 48, 93, 0,114,101,110,100,101,114,100,105,114, 91, 49, 54, 48, 93, 0,116,101,120,116,117, -100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,116,101,120,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,115,101,113, -100,105,114, 91, 49, 54, 48, 93, 0,112,121,116,104,111,110,100,105,114, 91, 49, 54, 48, 93, 0,115,111,117,110,100,100,105,114, - 91, 49, 54, 48, 93, 0,105,109, 97,103,101, 95,101,100,105,116,111,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97, -121,101,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 95,112,114,101,115,101,116, 0,118, 50,100, 95, -109,105,110, 95,103,114,105,100,115,105,122,101, 0,116,105,109,101, 99,111,100,101, 95,115,116,121,108,101, 0,118,101,114,115, -105,111,110,115, 0,100, 98,108, 95, 99,108,105, 99,107, 95,116,105,109,101, 0,103, 97,109,101,102,108, 97,103,115, 0,119,104, -101,101,108,108,105,110,101,115, 99,114,111,108,108, 0,117,105,102,108, 97,103, 0,108, 97,110,103,117, 97,103,101, 0,117,115, -101,114,112,114,101,102, 0,118,105,101,119,122,111,111,109, 0,109,105,120, 98,117,102,115,105,122,101, 0, 97,117,100,105,111, -100,101,118,105, 99,101, 0, 97,117,100,105,111,114, 97,116,101, 0, 97,117,100,105,111,102,111,114,109, 97,116, 0, 97,117,100, -105,111, 99,104, 97,110,110,101,108,115, 0,100,112,105, 0,101,110, 99,111,100,105,110,103, 0,116,114, 97,110,115,111,112,116, -115, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 49, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 50, 0, -116,104,101,109,101,115, 0,117,105,102,111,110,116,115, 0,117,105,115,116,121,108,101,115, 0,107,101,121,109, 97,112,115, 0, - 97,100,100,111,110,115, 0,107,101,121, 99,111,110,102,105,103,115,116,114, 91, 54, 52, 93, 0,117,110,100,111,115,116,101,112, -115, 0,117,110,100,111,109,101,109,111,114,121, 0,103,112, 95,109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103,112, - 95,101,117, 99,108,105,100,101, 97,110,100,105,115,116, 0,103,112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101,116,116, -105,110,103,115, 0,116, 98, 95,108,101,102,116,109,111,117,115,101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, 0, -108,105,103,104,116, 91, 51, 93, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,115,101,116,116,105,110,103,115, 0,116, -119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108, 97,103, 0,116,119, 95,104, 97,110,100,108,101,115,105,122,101, 0, -116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101,111,117,116, 0,116,101,120, 99,111,108,108,101, 99,116,114, 97,116, -101, 0,119,109,100,114, 97,119,109,101,116,104,111,100, 0,109,101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101, -102,101,116, 99,104,102,114, 97,109,101,115, 0,102,114, 97,109,101,115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95, -114,111,116, 95, 97,110,103,108,101, 0,111, 98, 99,101,110,116,101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114, -118,105, 98,114,105,103,104,116, 0,114,101, 99,101,110,116, 95,102,105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101, -119,116,120, 0,103,108,114,101,115,108,105,109,105,116, 0,110,100,111,102, 95,112, 97,110, 0,110,100,111,102, 95,114,111,116, - 97,116,101, 0, 99,117,114,115,115,105,122,101, 0, 99,111,108,111,114, 95,112,105, 99,107,101,114, 95,116,121,112,101, 0,105, -112,111, 95,110,101,119, 0,107,101,121,104, 97,110,100,108,101,115, 95,110,101,119, 0,115, 99,114, 99, 97,115,116,102,112,115, - 0,115, 99,114, 99, 97,115,116,119, 97,105,116, 0,112,114,111,112,119,105,100,116,104, 0,118,101,114,115,101,109, 97,115,116, -101,114, 91, 49, 54, 48, 93, 0,118,101,114,115,101,117,115,101,114, 91, 49, 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108, -105,112, 0, 99,111, 98, 97, 95,119,101,105,103,104,116, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102, -105,101,100, 95,115,105,122,101, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,117,110, -112,114,111,106,101, 99,116,101,100, 95,114, 97,100,105,117,115, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110, -105,102,105,101,100, 95, 97,108,112,104, 97, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,111,118,101,114,108, 97,121, - 95, 99,111,108, 91, 51, 93, 0,118,101,114,116, 98, 97,115,101, 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97, -115,101, 0, 42,110,101,119,115, 99,101,110,101, 0,102,117,108,108, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0, -100,111, 95,114,101,102,114,101,115,104, 0,100,111, 95,100,114, 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, - 97,119, 95,112, 97,105,110,116, 99,117,114,115,111,114, 0,100,111, 95,100,114, 97,119, 95,100,114, 97,103, 0,115,119, 97,112, - 0,109, 97,105,110,119,105,110, 0,115,117, 98,119,105,110, 97, 99,116,105,118,101, 0, 97,110,105,109,109,111,100,101, 0, 42, - 97,110,105,109,116,105,109,101,114, 0, 42, 99,111,110,116,101,120,116, 0,104, 97,110,100,108,101,114, 91, 56, 93, 0, 42,110, -101,119,118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42,116,121,112,101, 0,112, 97,110,101,108,110, 97,109,101, 91, - 54, 52, 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, 97,119,110, 97,109,101, 91, 54, 52, 93, 0,111,102,115, -120, 0,111,102,115,121, 0,115,105,122,101,120, 0,115,105,122,101,121, 0,108, 97, 98,101,108,111,102,115, 0,114,117,110,116, -105,109,101, 95,102,108, 97,103, 0, 99,111,110,116,114,111,108, 0,115,110, 97,112, 0,115,111,114,116,111,114,100,101,114, 0, - 42,112, 97,110,101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101,100, 97,116, 97, 0,108,105,115,116, 95,115, 99,114,111,108, -108, 0,108,105,115,116, 95,115,105,122,101, 0,108,105,115,116, 95,108, 97,115,116, 95,108,101,110, 0,108,105,115,116, 95,103, -114,105,112, 95,115,105,122,101, 0,108,105,115,116, 95,115,101, 97,114, 99,104, 91, 54, 52, 93, 0, 42,118, 51, 0, 42,118, 52, - 0, 42,102,117,108,108, 0, 98,117,116,115,112, 97, 99,101,116,121,112,101, 0,104,101, 97,100,101,114,116,121,112,101, 0,115, -112, 97, 99,101,100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, 0, 97, 99,116,105,111,110,122,111,110,101,115, 0,119,105, -110,114, 99,116, 0,100,114, 97,119,114, 99,116, 0,115,119,105,110,105,100, 0,114,101,103,105,111,110,116,121,112,101, 0, 97, -108,105,103,110,109,101,110,116, 0,100,111, 95,100,114, 97,119, 95,111,118,101,114,108, 97,121, 0,117,105, 98,108,111, 99,107, -115, 0,112, 97,110,101,108,115, 0, 42,104,101, 97,100,101,114,115,116,114, 0, 42,114,101,103,105,111,110,100, 97,116, 97, 0, -115,117, 98,118,115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115,105,111,110, 0,112, 97,100,115, 0,109,105,110,118,101, -114,115,105,111,110, 0,109,105,110,115,117, 98,118,101,114,115,105,111,110, 0, 42, 99,117,114,115, 99,114,101,101,110, 0, 42, - 99,117,114,115, 99,101,110,101, 0,102,105,108,101,102,108, 97,103,115, 0,103,108,111, 98, 97,108,102, 0,102,105,108,101,110, - 97,109,101, 91, 50, 52, 48, 93, 0,110, 97,109,101, 91, 56, 48, 93, 0, 42,105, 98,117,102, 0, 42,105, 98,117,102, 95, 99,111, -109,112, 0, 42,115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0,110,114, 0, 98,111,116,116,111,109, 0,114,105,103,104, -116, 0,120,111,102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93, 0,103, 97,109,109, 97, 91, 51, 93, 0,103, 97,105, -110, 91, 51, 93, 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110,101, 0,115,116, 97,114,116,115,116,105,108,108, 0,101,110, -100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0,111,114,120, 0,111,114,121, 0, 42, 99,114,111,112, 0, - 42,116,114, 97,110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, 98, 97,108, 97,110, 99,101, 0, 42,116,115,116,114,105, -112,100, 97,116, 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42,116,115, -116,114,105,112,100, 97,116, 97, 95,101,110,100,115,116,105,108,108, 0, 42,105, 98,117,102, 95,115,116, 97,114,116,115,116,105, -108,108, 0, 42,105, 98,117,102, 95,101,110,100,115,116,105,108,108, 0, 42,105,110,115,116, 97,110, 99,101, 95,112,114,105,118, - 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, - 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111,102,115, 0,109, 97, 99,104,105,110,101, 0,115,116, 97, -114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,115, 97,116, 0,109,117,108, 0,104, 97,110,100,115,105,122,101, 0, - 97,110,105,109, 95,112,114,101,115,101,101,107, 0, 42,115,116,114,105,112, 0, 42,115, 99,101,110,101, 95, 99, 97,109,101,114, - 97, 0,101,102,102,101, 99,116, 95,102, 97,100,101,114, 0,115,112,101,101,100, 95,102, 97,100,101,114, 0, 42,115,101,113, 49, - 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42,115,111,117,110,100, 0, 42,115, 99,101, -110,101, 95,115,111,117,110,100, 0,108,101,118,101,108, 0,112, 97,110, 0,115, 99,101,110,101,110,114, 0,109,117,108,116,105, - 99, 97,109, 95,115,111,117,114, 99,101, 0,115,116,114,111, 98,101, 0, 42,101,102,102,101, 99,116,100, 97,116, 97, 0, 97,110, -105,109, 95,115,116, 97,114,116,111,102,115, 0, 97,110,105,109, 95,101,110,100,111,102,115, 0, 98,108,101,110,100, 95,109,111, -100,101, 0, 98,108,101,110,100, 95,111,112, 97, 99,105,116,121, 0, 42,111,108,100, 98, 97,115,101,112, 0, 42,112, 97,114,115, -101,113, 0, 42,115,101,113, 98, 97,115,101,112, 0,109,101,116, 97,115,116, 97, 99,107, 0, 42, 97, 99,116, 95,115,101,113, 0, - 97, 99,116, 95,105,109, 97,103,101,100,105,114, 91, 50, 53, 54, 93, 0, 97, 99,116, 95,115,111,117,110,100,100,105,114, 91, 50, - 53, 54, 93, 0,111,118,101,114, 95,111,102,115, 0,111,118,101,114, 95, 99,102,114, 97, 0,111,118,101,114, 95,102,108, 97,103, - 0,111,118,101,114, 95, 98,111,114,100,101,114, 0,101,100,103,101, 87,105,100,116,104, 0,102,111,114,119, 97,114,100, 0,119, -105,112,101,116,121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109,112, 0,102, 66,111,111,115,116, 0,100, 68,105,115, -116, 0,100, 81,117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0, 83, 99, 97,108,101,120, 73,110,105, 0, 83, 99, 97, -108,101,121, 73,110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, 83, 99, 97,108,101,121, 70,105,110, 0,120, 73,110,105, 0, -120, 70,105,110, 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111,116, 73,110,105, 0,114,111,116, 70,105,110, 0,105,110,116, -101,114,112,111,108, 97,116,105,111,110, 0,117,110,105,102,111,114,109, 95,115, 99, 97,108,101, 0, 42,102,114, 97,109,101, 77, - 97,112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115,116, 86, 97,108,105,100, 70,114, 97,109,101, 0, 98,117, -116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,116,111,116,112, 97,114,116, 0,110,111,114,109,102, 97, - 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,120,102, 97, 99, 0,114, 97,110,100,108,105,102,101, 0, -102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,109, 97,120,108,101,110, 0,100,101,102,118,101, 99, 91, - 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, 0, 99,104,105,108,100, 91, 52, 93, 0,109, 97,116, 91, - 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,115,116, 97,116,105, 99,115,116,101,112, 0,111,109, 97, -116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101,120, 0,102,108, 97,103, 50,110,101,103, 0,118,101,114,116, -103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, 91, 51, 50, 93, 0,118,103,114,111,117,112,110, 97,109, -101, 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102, 97, 99, 0,117,115,101,100, 0,117,115,101,100,101,108, -101,109, 0, 42,112,111,105,110, 0,114,101,115,101,116,100,105,115,116, 0,108, 97,115,116,118, 97,108, 0, 42,109, 97, 0,107, -101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,101,116, 78, 97,109,101, 91, 51, 50, 93, 0,116,111,103, -103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91, 51, 50, 93, 0,109, 97,120,118, 97,108,117,101, 91, 51, - 50, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,105,111,110, 0,109, 97,116,101,114,105, 97,108, 78, 97,109,101, 91, 51, - 50, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,114,111,112,110, 97,109,101, 91, 51, 50, 93, 0,109, 97,116,110, 97,109, -101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111,115,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0, 99, -111,110,115,116,114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114,111,109, 79, 98,106,101, 99,116, 0,115,117, 98,106,101, 99, -116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116,121,112,101, 0,112,117,108,115,101, 0,102,114,101,113, 0, -116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,116, 97,112, 0,106,111,121,105,110,100,101,120, 0, 97,120, -105,115, 95,115,105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, 0,104, 97,116, 0,104, 97,116,102, 0, -112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0, 42,109,121,110,101,119, 0,105,110,112,117,116,115, - 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,108,105,110,107,115, 0,118, 97,108,111, 0,115,116, 97,116,101, 95,109, - 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111,112, 91, 51, 50, 93, 0, 98,108,101,110,100,105,110, 0,112, -114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,115,101,116, 0,115,116,114,105,100,101, 97,120,105,115, 0,115,116,114, -105,100,101,108,101,110,103,116,104, 0,115,110,100,110,114, 0,112, 97,100, 51, 91, 50, 93, 0,112,105,116, 99,104, 0,115,111, -117,110,100, 51, 68, 0,112, 97,100, 54, 91, 49, 93, 0, 42,109,101, 0,108,105,110, 86,101,108,111, 99,105,116,121, 91, 51, 93, - 0, 97,110,103, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108,102,108, 97,103, 0,100,121,110, 95,111,112, -101,114, 97,116,105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,102,111,114, 99,101,114,111,116, 91, 51, 93, 0, -108,105,110,101, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103,117,108, 97,114,118,101,108,111, 99,105,116, -121, 91, 51, 93, 0, 42,114,101,102,101,114,101,110, 99,101, 0,109,105,110, 0,109, 97,120, 0,114,111,116,100, 97,109,112, 0, -109,105,110,108,111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, 51, 93, 0,109,105,110,114,111,116, 91, 51, 93, 0,109, 97, -120,114,111,116, 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51, 50, 93, 0, 98,117,116,115,116, 97, 0, 98,117,116,101,110, -100, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, 97,114,103, 95, 49, 0,105,110,116, 95, 97,114,103, - 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97,116, 95, 97,114,103, 95, 50, 0,116,111, 80,114,111, -112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, 99,116, 0, 98,111,100,121, 84,121,112,101, 0,102,105,108, -101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97,109,101, 91, 54, 52, 93, 0,105,110,116, 95, 97,114, -103, 0,102,108,111, 97,116, 95, 97,114,103, 0, 42,115,117, 98,116, 97,114,103,101,116, 0,103,111, 0, 97, 99, 99,101,108,108, -101,114, 97,116,105,111,110, 0,109, 97,120,115,112,101,101,100, 0,109, 97,120,114,111,116,115,112,101,101,100, 0,109, 97,120, -116,105,108,116,115,112,101,101,100, 0,116,105,108,116,100, 97,109,112, 0,115,112,101,101,100,100, 97,109,112, 0,109,105,110, - 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101,102,101,114,101,110, 99,101, 95,100,105,115,116, 97,110, 99, -101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,101, 0,114,111,108,108,111,102,102, 95,102, 97, 99,116,111,114, 0, 99,111, -110,101, 95,105,110,110,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95, 97,110,103,108,101, 0, - 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42,110,101,119,112, 97, 99,107,101,100,102,105,108,101, 0, 97, -116,116,101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, 97, 99,104,101, 0, 42,112,108, 97,121, - 98, 97, 99,107, 95,104, 97,110,100,108,101, 0, 42, 97,114,101, 97, 0, 42,108, 97,109,112,114,101,110, 0,103,111, 98,106,101, - 99,116, 0,100,117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 42,112,114,111,112, 0, 99,104,105,108,100, 98, 97,115,101, 0, -114,111,108,108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98,111,110,101, 95,109, 97,116, 91, 51, 93, - 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97,105,108, 91, 51, 93, 0, 97,114,109, 95, -109, 97,116, 91, 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0,122,119,105,100,116,104, 0,101, 97,115,101, 49, 0,101, 97, -115,101, 50, 0,114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95,116, 97,105,108, 0, 98,111,110,101, 98, 97,115,101, 0, 99, -104, 97,105,110, 98, 97,115,101, 0, 42,101,100, 98,111, 0, 42, 97, 99,116, 95, 98,111,110,101, 0, 42, 97, 99,116, 95,101,100, - 98,111,110,101, 0, 42,115,107,101,116, 99,104, 0,108, 97,121,101,114, 95,112,114,111,116,101, 99,116,101,100, 0,103,104,111, -115,116,101,112, 0,103,104,111,115,116,115,105,122,101, 0,103,104,111,115,116,116,121,112,101, 0,112, 97,116,104,115,105,122, -101, 0,103,104,111,115,116,115,102, 0,103,104,111,115,116,101,102, 0,112, 97,116,104,115,102, 0,112, 97,116,104,101,102, 0, -112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,111,105,110,116,115, 0,115,116, 97,114,116, 95,102,114, 97,109, -101, 0,101,110,100, 95,102,114, 97,109,101, 0,103,104,111,115,116, 95,115,102, 0,103,104,111,115,116, 95,101,102, 0,103,104, -111,115,116, 95, 98, 99, 0,103,104,111,115,116, 95, 97, 99, 0,103,104,111,115,116, 95,116,121,112,101, 0,103,104,111,115,116, - 95,115,116,101,112, 0,103,104,111,115,116, 95,102,108, 97,103, 0,112, 97,116,104, 95,116,121,112,101, 0,112, 97,116,104, 95, -115,116,101,112, 0,112, 97,116,104, 95,118,105,101,119,102,108, 97,103, 0,112, 97,116,104, 95, 98, 97,107,101,102,108, 97,103, - 0,112, 97,116,104, 95,115,102, 0,112, 97,116,104, 95,101,102, 0,112, 97,116,104, 95, 98, 99, 0,112, 97,116,104, 95, 97, 99, - 0, 99,111,110,115,116,102,108, 97,103, 0,105,107,102,108, 97,103, 0,115,101,108,101, 99,116,102,108, 97,103, 0, 97,103,114, -112, 95,105,110,100,101,120, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105,107,116,114,101,101, 0, 42, 98, 95, 98, -111,110,101, 95,109, 97,116,115, 0, 42,100,117, 97,108, 95,113,117, 97,116, 0, 42, 98, 95, 98,111,110,101, 95,100,117, 97,108, - 95,113,117, 97,116,115, 0,101,117,108, 91, 51, 93, 0, 99,104, 97,110, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115, -101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, 51, 93, 0,112,111,115,101, 95,116, 97, -105,108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105,109,105,116,109, 97,120, 91, 51, 93, 0,115,116, -105,102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, 0,105,107,114,111,116,119,101,105,103,104,116, - 0,105,107,108,105,110,119,101,105,103,104,116, 0, 42, 99,117,115,116,111,109, 0, 42, 99,117,115,116,111,109, 95,116,120, 0, - 99,104, 97,110, 98, 97,115,101, 0, 42, 99,104, 97,110,104, 97,115,104, 0,112,114,111,120,121, 95,108, 97,121,101,114, 0,115, -116,114,105,100,101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, 95,111,102,102,115,101,116, 91, 51, 93, - 0, 97,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,103,114,111,117,112, 0,105,107,115,111,108,118,101,114, 0, 42, -105,107,100, 97,116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,112,114,111,120,121, 95, 97, 99,116, 95, 98,111,110,101, 91, 51, - 50, 93, 0,110,117,109,105,116,101,114, 0,110,117,109,115,116,101,112, 0,109,105,110,115,116,101,112, 0,109, 97,120,115,116, -101,112, 0,115,111,108,118,101,114, 0,102,101,101,100, 98, 97, 99,107, 0,109, 97,120,118,101,108, 0,100, 97,109,112,109, 97, -120, 0,100, 97,109,112,101,112,115, 0, 99,104, 97,110,110,101,108,115, 0, 99,117,115,116,111,109, 67,111,108, 0, 99,115, 0, - 99,117,114,118,101,115, 0,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,109, 97,114,107,101,114, 0, 42,115,111,117, -114, 99,101, 0, 42,102,105,108,116,101,114, 95,103,114,112, 0,102,105,108,116,101,114,102,108, 97,103, 0, 97,100,115, 0,116, -105,109,101,115,108,105,100,101, 0, 42,103,114,112, 0,116,101,109,112, 0,110, 97,109,101, 91, 51, 48, 93, 0,111,119,110,115, -112, 97, 99,101, 0,116, 97,114,115,112, 97, 99,101, 0,101,110,102,111,114, 99,101, 0,104,101, 97,100,116, 97,105,108, 0,108, -105,110, 95,101,114,114,111,114, 0,114,111,116, 95,101,114,114,111,114, 0, 42,116, 97,114, 0,109, 97,116,114,105,120, 91, 52, - 93, 91, 52, 93, 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100,101,114, 0,116, 97,114,110,117,109, 0,116, 97,114,103,101, -116,115, 0,105,116,101,114, 97,116,105,111,110,115, 0,114,111,111,116, 98,111,110,101, 0,109, 97,120, 95,114,111,111,116, 98, -111,110,101, 0, 42,112,111,108,101,116, 97,114, 0,112,111,108,101,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112, -111,108,101, 97,110,103,108,101, 0,111,114,105,101,110,116,119,101,105,103,104,116, 0,103,114, 97, 98,116, 97,114,103,101,116, - 91, 51, 93, 0,110,117,109,112,111,105,110,116,115, 0, 99,104, 97,105,110,108,101,110, 0,120,122, 83, 99, 97,108,101, 77,111, -100,101, 0,114,101,115,101,114,118,101,100, 49, 0,114,101,115,101,114,118,101,100, 50, 0,109,105,110,109, 97,120,102,108, 97, -103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99,107,102,108, 97,103, 0,102,111,108,108,111,119, -102,108, 97,103, 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103,108,101,110,103,116,104, 0, 98,117,108, -103,101, 0,112,105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120, 88, 0, 97,120, 89, 0, 97,120, 90, 0,109,105, -110, 76,105,109,105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54, 93, 0,101,120,116,114, 97, 70,122, 0,105,110, -118,109, 97,116, 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109, 97,112, 91, 51, 93, 0,101,120,112,111, 0,102, -114,111,109, 95,109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91, 51, 93, 0,116,111, 95,109,105,110, 91, 51, 93, - 0,116,111, 95,109, 97,120, 91, 51, 93, 0,114,111,116, 65,120,105,115, 0,122,109,105,110, 0,122,109, 97,120, 0,112, 97,100, - 91, 57, 93, 0, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, 95, 97,120,105,115, 0,115,116,114,105, -100,101, 95, 97,120,105,115, 0, 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114,116, 0, 97, 99,116,101,110,100, 0, 97, - 99,116,111,102,102,115, 0,115,116,114,105,100,101,108,101,110, 0,115, 99, 97,108,101, 0, 98,108,101,110,100,111,117,116, 0, -115,116,114,105,100,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,111,102,102,115, 95, 98,111,110,101, 91, 51, 50, 93, 0, -104, 97,115,105,110,112,117,116, 0,104, 97,115,111,117,116,112,117,116, 0,100, 97,116, 97,116,121,112,101, 0,115,111, 99,107, -101,116,116,121,112,101, 0, 42,110,101,119, 95,115,111, 99,107, 0,110,115, 0,108,105,109,105,116, 0,115,116, 97, 99,107, 95, -105,110,100,101,120, 0,105,110,116,101,114,110, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 95,101,120,116, 0,108,111, 99, -120, 0,108,111, 99,121, 0,111,119,110, 95,105,110,100,101,120, 0,116,111, 95,105,110,100,101,120, 0, 42,116,111,115,111, 99, -107, 0, 42,108,105,110,107, 0, 42,110,101,119, 95,110,111,100,101, 0,108, 97,115,116,121, 0,111,117,116,112,117,116,115, 0, - 42,115,116,111,114, 97,103,101, 0,109,105,110,105,119,105,100,116,104, 0, 99,117,115,116,111,109, 49, 0, 99,117,115,116,111, -109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117,115,116,111,109, 52, 0,110,101,101,100, 95,101,120,101, 99, 0,101,120,101, - 99, 0, 42,116,104,114,101, 97,100,100, 97,116, 97, 0,116,111,116,114, 0, 98,117,116,114, 0,112,114,118,114, 0, 42, 98,108, -111, 99,107, 0, 42,116,121,112,101,105,110,102,111, 0, 42,102,114,111,109,110,111,100,101, 0, 42,116,111,110,111,100,101, 0, - 42,102,114,111,109,115,111, 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0, 42,115,116, 97, 99,107, 0, 42,116,104, -114,101, 97,100,115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, 97, 99,107,115,105,122,101, 0, 99,117,114, 95,105,110,100, -101,120, 0, 97,108,108,116,121,112,101,115, 0, 42,111,119,110,116,121,112,101, 0,112, 97,100, 50, 91, 50, 93, 0, 40, 42,112, -114,111,103,114,101,115,115, 41, 40, 41, 0, 40, 42,115,116, 97,116,115, 95,100,114, 97,119, 41, 40, 41, 0, 40, 42,116,101,115, -116, 95, 98,114,101, 97,107, 41, 40, 41, 0, 42,116, 98,104, 0, 42,112,114,104, 0, 42,115,100,104, 0, 99,121, 99,108,105, 99, - 0,109,111,118,105,101, 0,115, 97,109,112,108,101,115, 0,109,105,110,115,112,101,101,100, 0,112,101,114, 99,101,110,116,120, - 0,112,101,114, 99,101,110,116,121, 0, 98,111,107,101,104, 0,103, 97,109,109, 97, 0, 99,117,114,118,101,100, 0,105,109, 97, -103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109, 97,103,101, 95,105,110, 95,104,101,105,103,104,116, 0, 99,101,110,116, -101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,115,112,105,110, 0,119,114, 97,112, 0,115,105,103,109, 97, 95, 99,111, -108,111,114, 0,115,105,103,109, 97, 95,115,112, 97, 99,101, 0,104,117,101, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116, -114,101,110,103,116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, 91, 52, 93, 0, 97,108,103,111,114,105,116,104,109, 0, 99, -104, 97,110,110,101,108, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, 0, 99,111,108,110, 97,109,101, 91, 51, 50, 93, 0, 98, -107,116,121,112,101, 0,114,111,116, 97,116,105,111,110, 0,103, 97,109, 99,111, 0,110,111, 95,122, 98,117,102, 0,102,115,116, -111,112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, 0, 42,100,105, 99,116, 0, 42,110,111,100,101, 0, 97, -110,103,108,101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105,120, 0,116,104,114,101,115,104,111,108,100, 0,102, 97, -100,101, 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105,116, 0,115,108,111,112,101, 91, 51, 93, 0,112,111,119, -101,114, 91, 51, 93, 0,108,105,102,116, 95,108,103,103, 91, 51, 93, 0,108,105,109, 99,104, 97,110, 0,117,110,115,112,105,108, -108, 0,108,105,109,115, 99, 97,108,101, 0,117,115,112,105,108,108,114, 0,117,115,112,105,108,108,103, 0,117,115,112,105,108, -108, 98, 0,115,104,111,114,116,121, 0,109,105,110,116, 97, 98,108,101, 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95, -105,110, 91, 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, 42, 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42, -112,114,101,109,117,108,116, 97, 98,108,101, 0,112,114,101,115,101,116, 0, 99,104, 97,110,103,101,100, 95,116,105,109,101,115, -116, 97,109,112, 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, 0,119, -104,105,116,101, 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, 93, 0,120, 95,114,101,115, -111,108,117,116,105,111,110, 0,100, 97,116, 97, 95,114, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,103, 91, 50, 53, 54, 93, 0, -100, 97,116, 97, 95, 98, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,108,117,109, 97, 91, 50, 53, 54, 93, 0,115, 97,109,112,108, -101, 95,102,117,108,108, 0,115, 97,109,112,108,101, 95,108,105,110,101,115, 0, 97, 99, 99,117,114, 97, 99,121, 0,119, 97,118, -101,102,114,109, 95,109,111,100,101, 0,119, 97,118,101,102,114,109, 95, 97,108,112,104, 97, 0,119, 97,118,101,102,114,109, 95, -121,102, 97, 99, 0,119, 97,118,101,102,114,109, 95,104,101,105,103,104,116, 0,118,101, 99,115, 99,111,112,101, 95, 97,108,112, -104, 97, 0,118,101, 99,115, 99,111,112,101, 95,104,101,105,103,104,116, 0,109,105,110,109, 97,120, 91, 51, 93, 91, 50, 93, 0, -104,105,115,116, 0, 42,119, 97,118,101,102,111,114,109, 95, 49, 0, 42,119, 97,118,101,102,111,114,109, 95, 50, 0, 42,119, 97, -118,101,102,111,114,109, 95, 51, 0, 42,118,101, 99,115, 99,111,112,101, 0,119, 97,118,101,102,111,114,109, 95,116,111,116, 0, -111,102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,109,116,101,120, 0, 42,105,109, 97,103,101, 95,105, 99,111,110, - 0,110,111,114,109, 97,108, 95,119,101,105,103,104,116, 0,106,105,116,116,101,114, 0,115,109,111,111,116,104, 95,115,116,114, -111,107,101, 95,114, 97,100,105,117,115, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,102, 97, 99,116,111,114, 0, -114, 97,116,101, 0,114,103, 98, 91, 51, 93, 0,115, 99,117,108,112,116, 95,112,108, 97,110,101, 0,112,108, 97,110,101, 95,111, -102,102,115,101,116, 0,115, 99,117,108,112,116, 95,116,111,111,108, 0,118,101,114,116,101,120,112, 97,105,110,116, 95,116,111, -111,108, 0,105,109, 97,103,101,112, 97,105,110,116, 95,116,111,111,108, 0, 97,117,116,111,115,109,111,111,116,104, 95,102, 97, - 99,116,111,114, 0, 99,114,101, 97,115,101, 95,112,105,110, 99,104, 95,102, 97, 99,116,111,114, 0,112,108, 97,110,101, 95,116, -114,105,109, 0,116,101,120,116,117,114,101, 95,115, 97,109,112,108,101, 95, 98,105, 97,115, 0,116,101,120,116,117,114,101, 95, -111,118,101,114,108, 97,121, 95, 97,108,112,104, 97, 0,117,110,112,114,111,106,101, 99,116,101,100, 95,114, 97,100,105,117,115, - 0, 97,100,100, 95, 99,111,108, 91, 51, 93, 0,115,117, 98, 95, 99,111,108, 91, 51, 93, 0, 97, 99,116,105,118,101, 95,114,110, -100, 0, 97, 99,116,105,118,101, 95, 99,108,111,110,101, 0, 97, 99,116,105,118,101, 95,109, 97,115,107, 0, 42,108, 97,121,101, -114,115, 0,116,111,116,108, 97,121,101,114, 0,109, 97,120,108, 97,121,101,114, 0,116,111,116,115,105,122,101, 0, 42,112,111, -111,108, 0, 42,101,120,116,101,114,110, 97,108, 0,118,101,108, 91, 51, 93, 0,114,111,116, 91, 52, 93, 0, 97,118,101, 91, 51, - 93, 0, 42,103,114,111,117,110,100, 0,119, 97,110,100,101,114, 91, 51, 93, 0,110,117,109, 0,112, 97,114,101,110,116, 0,112, - 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0,102,111,102,102,115,101,116, 0,114,116, 91, 50, 93, 0,112, -114,101,118, 95,115,116, 97,116,101, 0, 42,104, 97,105,114, 0, 42, 98,111,105,100, 0,100,105,101,116,105,109,101, 0,110,117, -109, 95,100,109, 99, 97, 99,104,101, 0,104, 97,105,114, 95,105,110,100,101,120, 0, 97,108,105,118,101, 0,115,112,114,105,110, -103, 95,107, 0,114,101,115,116, 95,108,101,110,103,116,104, 0,118,105,115, 99,111,115,105,116,121, 95,111,109,101,103, 97, 0, -118,105,115, 99,111,115,105,116,121, 95, 98,101,116, 97, 0,115,116,105,102,102,110,101,115,115, 95,107, 0,115,116,105,102,102, -110,101,115,115, 95,107,110,101, 97,114, 0,114,101,115,116, 95,100,101,110,115,105,116,121, 0, 98,117,111,121, 97,110, 99,121, - 0, 42, 98,111,105,100,115, 0, 42,102,108,117,105,100, 0,100,105,115,116,114, 0,112,104,121,115,116,121,112,101, 0, 97,118, -101,109,111,100,101, 0,114,101, 97, 99,116,101,118,101,110,116, 0,100,114, 97,119, 0,100,114, 97,119, 95, 97,115, 0,100,114, - 97,119, 95,115,105,122,101, 0, 99,104,105,108,100,116,121,112,101, 0,114,101,110, 95, 97,115, 0,115,117, 98,102,114, 97,109, -101,115, 0,114,101,110, 95,115,116,101,112, 0,104, 97,105,114, 95,115,116,101,112, 0,107,101,121,115, 95,115,116,101,112, 0, - 97,100, 97,112,116, 95, 97,110,103,108,101, 0, 97,100, 97,112,116, 95,112,105,120, 0,114,111,116,102,114,111,109, 0,105,110, -116,101,103,114, 97,116,111,114, 0, 98, 98, 95, 97,108,105,103,110, 0, 98, 98, 95,117,118, 95,115,112,108,105,116, 0, 98, 98, - 95, 97,110,105,109, 0, 98, 98, 95,115,112,108,105,116, 95,111,102,102,115,101,116, 0, 98, 98, 95,116,105,108,116, 0, 98, 98, - 95,114, 97,110,100, 95,116,105,108,116, 0, 98, 98, 95,111,102,102,115,101,116, 91, 50, 93, 0,115,105,109,112,108,105,102,121, - 95,114,101,102,115,105,122,101, 0,115,105,109,112,108,105,102,121, 95,114, 97,116,101, 0,115,105,109,112,108,105,102,121, 95, -116,114, 97,110,115,105,116,105,111,110, 0,115,105,109,112,108,105,102,121, 95,118,105,101,119,112,111,114,116, 0,116,105,109, -101,116,119,101, 97,107, 0,106,105,116,102, 97, 99, 0,101,102,102, 95,104, 97,105,114, 0,103,114,105,100, 95,114,101,115, 0, -112, 97,114,116,102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116, 97,110,112,104, 97,115,101, 0,114,101, 97, 99,116,102, 97, 99, - 0,111, 98, 95,118,101,108, 91, 51, 93, 0, 97,118,101,102, 97, 99, 0,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,114, -111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,115,105,122,101, 0,114,101, 97, 99, -116,115,104, 97,112,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97,103,102, 97, 99, 0, 98,114,111,119,110,102, 97, 99, 0,100, - 97,109,112,102, 97, 99, 0,114, 97,110,100,108,101,110,103,116,104, 0, 99,104,105,108,100, 95,110, 98,114, 0,114,101,110, 95, - 99,104,105,108,100, 95,110, 98,114, 0,112, 97,114,101,110,116,115, 0, 99,104,105,108,100,115,105,122,101, 0, 99,104,105,108, -100,114, 97,110,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,100, 0, 99,104,105,108,100,102,108, 97,116, 0, 99,108,117, -109,112,112,111,119, 0,114,111,117,103,104, 49, 0,114,111,117,103,104, 49, 95,115,105,122,101, 0,114,111,117,103,104, 50, 0, -114,111,117,103,104, 50, 95,115,105,122,101, 0,114,111,117,103,104, 50, 95,116,104,114,101,115, 0,114,111,117,103,104, 95,101, -110,100, 0,114,111,117,103,104, 95,101,110,100, 95,115,104, 97,112,101, 0, 99,108,101,110,103,116,104, 0, 99,108,101,110,103, -116,104, 95,116,104,114,101,115, 0, 98,114, 97,110, 99,104, 95,116,104,114,101,115, 0,100,114, 97,119, 95,108,105,110,101, 91, - 50, 93, 0,112, 97,116,104, 95,115,116, 97,114,116, 0,112, 97,116,104, 95,101,110,100, 0,116,114, 97,105,108, 95, 99,111,117, -110,116, 0,107,101,121,101,100, 95,108,111,111,112,115, 0,100,117,112,108,105,119,101,105,103,104,116,115, 0, 42,101,102,102, - 95,103,114,111,117,112, 0, 42,100,117,112, 95,111, 98, 0, 42, 98, 98, 95,111, 98, 0, 42,112,100, 50, 0, 42,112, 97,114,116, - 0, 42,112, 97,114,116,105, 99,108,101,115, 0, 42, 42,112, 97,116,104, 99, 97, 99,104,101, 0, 42, 42, 99,104,105,108,100, 99, - 97, 99,104,101, 0,112, 97,116,104, 99, 97, 99,104,101, 98,117,102,115, 0, 99,104,105,108,100, 99, 97, 99,104,101, 98,117,102, -115, 0, 42, 99,108,109,100, 0, 42,104, 97,105,114, 95,105,110, 95,100,109, 0, 42,104, 97,105,114, 95,111,117,116, 95,100,109, - 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42,108, 97,116,116,105, 99,101, 0,116,114,101,101, 95,102,114, 97,109,101, 0, -116,111,116, 99,104,105,108,100, 0,116,111,116, 99, 97, 99,104,101,100, 0,116,111,116, 99,104,105,108,100, 99, 97, 99,104,101, - 0,116, 97,114,103,101,116, 95,112,115,121,115, 0,116,111,116,107,101,121,101,100, 0, 98, 97,107,101,115,112, 97, 99,101, 0, - 98, 98, 95,117,118,110, 97,109,101, 91, 51, 93, 91, 51, 50, 93, 0,118,103,114,111,117,112, 91, 49, 50, 93, 0,118,103, 95,110, -101,103, 0,114,116, 51, 0, 42,114,101,110,100,101,114,100, 97,116, 97, 0, 42,101,102,102,101, 99,116,111,114,115, 0, 42,116, -114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97,110,100, 0, 67,100,105,115, 0, 67,118,105, 0,115,116,114,117, 99,116,117, -114, 97,108, 0, 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98,101,110,100, 0,109, 97,120, 95,115,116,114,117, 99,116, 0, -109, 97,120, 95,115,104,101, 97,114, 0, 97,118,103, 95,115,112,114,105,110,103, 95,108,101,110, 0,116,105,109,101,115, 99, 97, -108,101, 0,101,102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108,101, 0,101,102,102, 95,119,105,110,100, 95,115, 99, 97,108, -101, 0,115,105,109, 95,116,105,109,101, 95,111,108,100, 0,118,101,108,111, 99,105,116,121, 95,115,109,111,111,116,104, 0, 99, -111,108,108,105,100,101,114, 95,102,114,105, 99,116,105,111,110, 0,115,116,101,112,115, 80,101,114, 70,114, 97,109,101, 0,112, -114,101,114,111,108,108, 0,109, 97,120,115,112,114,105,110,103,108,101,110, 0,115,111,108,118,101,114, 95,116,121,112,101, 0, -118,103,114,111,117,112, 95, 98,101,110,100, 0,118,103,114,111,117,112, 95,109, 97,115,115, 0,118,103,114,111,117,112, 95,115, -116,114,117, 99,116, 0,115,104, 97,112,101,107,101,121, 95,114,101,115,116, 0,112,114,101,115,101,116,115, 0,114,101,115,101, -116, 0, 42, 99,111,108,108,105,115,105,111,110, 95,108,105,115,116, 0,101,112,115,105,108,111,110, 0,115,101,108,102, 95,102, -114,105, 99,116,105,111,110, 0,115,101,108,102,101,112,115,105,108,111,110, 0,115,101,108,102, 95,108,111,111,112, 95, 99,111, -117,110,116, 0,108,111,111,112, 95, 99,111,117,110,116, 0,112,114,101,115,115,117,114,101, 0,116,104,105, 99,107,110,101,115, -115, 0,115,116,114,111,107,101,115, 0,102,114, 97,109,101,110,117,109, 0, 42, 97, 99,116,102,114, 97,109,101, 0,103,115,116, -101,112, 0,105,110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102,101,114, 95,115,105,122,101, 0,115, 98,117,102,102,101, -114, 95,115,102,108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, 42,116,121,112,101,115,116,114, 0, 42,109,101,115,115, 97, -103,101, 0,108,105,115,116, 0,112,114,105,110,116,108,101,118,101,108, 0,115,116,111,114,101,108,101,118,101,108, 0, 42,114, -101,112,111,114,116,116,105,109,101,114, 0,103,114,101,121,115, 99, 97,108,101, 0,119,105,100,116,104,102, 97, 99, 0, 42,119, -105,110,100,114, 97,119, 97, 98,108,101, 0, 42,119,105,110, 97, 99,116,105,118,101, 0,119,105,110,100,111,119,115, 0,105,110, -105,116,105, 97,108,105,122,101,100, 0,102,105,108,101, 95,115, 97,118,101,100, 0,111,112, 95,117,110,100,111, 95,100,101,112, -116,104, 0,111,112,101,114, 97,116,111,114,115, 0,113,117,101,117,101, 0,114,101,112,111,114,116,115, 0,106,111, 98,115, 0, -112, 97,105,110,116, 99,117,114,115,111,114,115, 0,100,114, 97,103,115, 0,107,101,121, 99,111,110,102,105,103,115, 0, 42,100, -101,102, 97,117,108,116, 99,111,110,102, 0,116,105,109,101,114,115, 0, 42, 97,117,116,111,115, 97,118,101,116,105,109,101,114, - 0, 42,103,104,111,115,116,119,105,110, 0,103,114, 97, 98, 99,117,114,115,111,114, 0, 42,110,101,119,115, 99,114,101,101,110, - 0,115, 99,114,101,101,110,110, 97,109,101, 91, 51, 50, 93, 0,112,111,115,120, 0,112,111,115,121, 0,119,105,110,100,111,119, -115,116, 97,116,101, 0,109,111,110,105,116,111,114, 0,108, 97,115,116, 99,117,114,115,111,114, 0, 97,100,100,109,111,117,115, -101,109,111,118,101, 0, 42,101,118,101,110,116,115,116, 97,116,101, 0, 42, 99,117,114,115,119,105,110, 0, 42,116,119,101, 97, -107, 0,100,114, 97,119,109,101,116,104,111,100, 0,100,114, 97,119,102, 97,105,108, 0, 42,100,114, 97,119,100, 97,116, 97, 0, -109,111,100, 97,108,104, 97,110,100,108,101,114,115, 0,115,117, 98,119,105,110,100,111,119,115, 0,103,101,115,116,117,114,101, - 0,105,100,110, 97,109,101, 91, 54, 52, 93, 0,112,114,111,112,118, 97,108,117,101, 0,115,104,105,102,116, 0, 99,116,114,108, - 0, 97,108,116, 0,111,115,107,101,121, 0,107,101,121,109,111,100,105,102,105,101,114, 0,109, 97,112,116,121,112,101, 0, 42, -112,116,114, 0,105,116,101,109,115, 0,115,112, 97, 99,101,105,100, 0,114,101,103,105,111,110,105,100, 0,107,109,105, 95,105, -100, 0, 40, 42,112,111,108,108, 41, 40, 41, 0, 42,109,111,100, 97,108, 95,105,116,101,109,115, 0, 98, 97,115,101,110, 97,109, -101, 91, 54, 52, 93, 0, 97, 99,116,107,101,121,109, 97,112, 0, 42, 99,117,115,116,111,109,100, 97,116, 97, 0, 42,112,121, 95, -105,110,115,116, 97,110, 99,101, 0, 42,114,101,112,111,114,116,115, 0,109, 97, 99,114,111, 0, 42,111,112,109, 0, 42,101,100, - 97,116, 97, 0,105,110,102,108,117,101,110, 99,101, 0, 42, 99,111,101,102,102,105, 99,105,101,110,116,115, 0, 97,114,114, 97, -121,115,105,122,101, 0,112,111,108,121, 95,111,114,100,101,114, 0, 97,109,112,108,105,116,117,100,101, 0,112,104, 97,115,101, - 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, 97,115,101, 95,111,102,102,115,101,116, 0,118, 97,108,117,101, 95,111, -102,102,115,101,116, 0,109,105,100,118, 97,108, 0, 98,101,102,111,114,101, 95,109,111,100,101, 0, 97,102,116,101,114, 95,109, -111,100,101, 0, 98,101,102,111,114,101, 95, 99,121, 99,108,101,115, 0, 97,102,116,101,114, 95, 99,121, 99,108,101,115, 0,114, -101, 99,116, 0,112,104, 97,115,101, 0,109,111,100,105,102,105, 99, 97,116,105,111,110, 0,115,116,101,112, 95,115,105,122,101, - 0, 42,114,110, 97, 95,112, 97,116,104, 0,112, 99,104, 97,110, 95,110, 97,109,101, 91, 51, 50, 93, 0,116,114, 97,110,115, 67, -104, 97,110, 0,105,100,116,121,112,101, 0,116, 97,114,103,101,116,115, 91, 56, 93, 0,110,117,109, 95,116, 97,114,103,101,116, -115, 0,118, 97,114,105, 97, 98,108,101,115, 0,101,120,112,114,101,115,115,105,111,110, 91, 50, 53, 54, 93, 0, 42,101,120,112, -114, 95, 99,111,109,112, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, 0, 97,114,114, 97,121, 95,105,110,100,101,120, 0, 99, -111,108,111,114, 95,109,111,100,101, 0, 99,111,108,111,114, 91, 51, 93, 0,102,114,111,109, 91, 49, 50, 56, 93, 0,116,111, 91, - 49, 50, 56, 93, 0,109, 97,112,112,105,110,103,115, 0,115,116,114,105,112,115, 0, 42,114,101,109, 97,112, 0,102, 99,117,114, -118,101,115, 0,115,116,114,105,112, 95,116,105,109,101, 0, 98,108,101,110,100,109,111,100,101, 0,101,120,116,101,110,100,109, -111,100,101, 0,103,114,111,117,112, 91, 54, 52, 93, 0,103,114,111,117,112,109,111,100,101, 0,107,101,121,105,110,103,102,108, - 97,103, 0,112, 97,116,104,115, 0,116,121,112,101,105,110,102,111, 91, 54, 52, 93, 0, 97, 99,116,105,118,101, 95,112, 97,116, -104, 0, 42,116,109,112, 97, 99,116, 0,110,108, 97, 95,116,114, 97, 99,107,115, 0, 42, 97, 99,116,115,116,114,105,112, 0,100, -114,105,118,101,114,115, 0,111,118,101,114,114,105,100,101,115, 0, 97, 99,116, 95, 98,108,101,110,100,109,111,100,101, 0, 97, - 99,116, 95,101,120,116,101,110,100,109,111,100,101, 0, 97, 99,116, 95,105,110,102,108,117,101,110, 99,101, 0,114,117,108,101, - 0,111,112,116,105,111,110,115, 0,102,101, 97,114, 95,102, 97, 99,116,111,114, 0,115,105,103,110, 97,108, 95,105,100, 0,108, -111,111,107, 95, 97,104,101, 97,100, 0,111,108,111, 99, 91, 51, 93, 0,113,117,101,117,101, 95,115,105,122,101, 0,119, 97,110, -100,101,114, 0,102,108,101,101, 95,100,105,115,116, 97,110, 99,101, 0,104,101, 97,108,116,104, 0,115,116, 97,116,101, 95,105, -100, 0,114,117,108,101,115, 0, 99,111,110,100,105,116,105,111,110,115, 0, 97, 99,116,105,111,110,115, 0,114,117,108,101,115, -101,116, 95,116,121,112,101, 0,114,117,108,101, 95,102,117,122,122,105,110,101,115,115, 0,108, 97,115,116, 95,115,116, 97,116, -101, 95,105,100, 0,108, 97,110,100,105,110,103, 95,115,109,111,111,116,104,110,101,115,115, 0, 98, 97,110,107,105,110,103, 0, - 97,103,103,114,101,115,115,105,111,110, 0, 97,105,114, 95,109,105,110, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, - 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, 99, 0, 97,105,114, 95,109, 97,120, 95, 97,118,101, 0, 97, -105,114, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,106,117,109,112, 95,115,112,101,101, -100, 0,108, 97,110,100, 95,109, 97,120, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95, 97, 99, 99, 0,108, 97, -110,100, 95,109, 97,120, 95, 97,118,101, 0,108, 97,110,100, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, - 97,110,100, 95,115,116,105, 99,107, 95,102,111,114, 99,101, 0,115,116, 97,116,101,115, 0, 42,115,109,100, 0, 42,102,108,117, -105,100, 95,103,114,111,117,112, 0, 42, 99,111,108,108, 95,103,114,111,117,112, 0, 42,119,116, 0, 42,116,101,120, 95,119,116, - 0, 42,116,101,120, 95,115,104, 97,100,111,119, 0, 42,115,104, 97,100,111,119, 0,112, 48, 91, 51, 93, 0,112, 49, 91, 51, 93, - 0,100,120, 0,111,109,101,103, 97, 0,116,101,109,112, 65,109, 98, 0, 98,101,116, 97, 0,114,101,115, 91, 51, 93, 0, 97,109, -112,108,105,102,121, 0,109, 97,120,114,101,115, 0,118,105,101,119,115,101,116,116,105,110,103,115, 0,110,111,105,115,101, 0, -100,105,115,115, 95,112,101,114, 99,101,110,116, 0,100,105,115,115, 95,115,112,101,101,100, 0,114,101,115, 95,119,116, 91, 51, - 93, 0,100,120, 95,119,116, 0,118, 51,100,110,117,109, 0, 99, 97, 99,104,101, 95, 99,111,109,112, 0, 99, 97, 99,104,101, 95, -104,105,103,104, 95, 99,111,109,112, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 91, 50, 93, 0,112,116, 99, 97, 99,104, -101,115, 91, 50, 93, 0,118,101,108,111, 99,105,116,121, 91, 51, 93, 0,118,103,114,112, 95,104,101, 97,116, 95,115, 99, 97,108, -101, 91, 50, 93, 0,118,103,114,111,117,112, 95,102,108,111,119, 0,118,103,114,111,117,112, 95,100,101,110,115,105,116,121, 0, -118,103,114,111,117,112, 95,104,101, 97,116, 0, 42,112,111,105,110,116,115, 95,111,108,100, 0, 42,118,101,108, 0,109, 97,116, - 95,111,108,100, 91, 52, 93, 91, 52, 93, 0, 0, 84, 89, 80, 69,212, 1, 0, 0, 99,104, 97,114, 0,117, 99,104, 97,114, 0,115, -104,111,114,116, 0,117,115,104,111,114,116, 0,105,110,116, 0,108,111,110,103, 0,117,108,111,110,103, 0,102,108,111, 97,116, - 0,100,111,117, 98,108,101, 0,118,111,105,100, 0, 76,105,110,107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76,105,115,116, 66, - 97,115,101, 0,118,101, 99, 50,115, 0,118,101, 99, 50,102, 0,118,101, 99, 50,105, 0,118,101, 99, 50,100, 0,118,101, 99, 51, -105, 0,118,101, 99, 51,102, 0,118,101, 99, 51,100, 0,118,101, 99, 52,105, 0,118,101, 99, 52,102, 0,118,101, 99, 52,100, 0, -114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, 80,114,111,112,101,114,116,121, 68, 97,116, 97, 0, 73, 68, 80,114,111,112,101, -114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70,105,108,101, 68, 97,116, 97, 0, 80,114,101,118,105,101,119, 73, -109, 97,103,101, 0, 73,112,111, 68,114,105,118,101,114, 0, 79, 98,106,101, 99,116, 0, 73,112,111, 67,117,114,118,101, 0, 66, - 80,111,105,110,116, 0, 66,101,122, 84,114,105,112,108,101, 0, 73,112,111, 0, 75,101,121, 66,108,111, 99,107, 0, 75,101,121, - 0, 65,110,105,109, 68, 97,116, 97, 0, 84,101,120,116, 76,105,110,101, 0, 84,101,120,116, 77, 97,114,107,101,114, 0, 84,101, -120,116, 0, 80, 97, 99,107,101,100, 70,105,108,101, 0, 67, 97,109,101,114, 97, 0, 73,109, 97,103,101, 85,115,101,114, 0, 83, - 99,101,110,101, 0, 73,109, 97,103,101, 0, 71, 80, 85, 84,101,120,116,117,114,101, 0, 97,110,105,109, 0, 82,101,110,100,101, -114, 82,101,115,117,108,116, 0, 77, 84,101,120, 0, 84,101,120, 0, 80,108,117,103,105,110, 84,101,120, 0, 67, 66, 68, 97,116, - 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, 69,110,118, 77, 97,112, 0, 73,109, 66,117,102, 0, 80,111,105,110,116, 68,101, -110,115,105,116,121, 0, 86,111,120,101,108, 68, 97,116, 97, 0, 98, 78,111,100,101, 84,114,101,101, 0, 84,101,120, 77, 97,112, -112,105,110,103, 0, 76, 97,109,112, 0, 67,117,114,118,101, 77, 97,112,112,105,110,103, 0, 87, 97,118,101, 0, 86,111,108,117, -109,101, 83,101,116,116,105,110,103,115, 0, 77, 97,116,101,114,105, 97,108, 0, 71,114,111,117,112, 0, 86, 70,111,110,116, 0, - 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108,101,109, 0, 66,111,117,110,100, 66,111,120, 0, 77,101,116, 97, - 66, 97,108,108, 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110,102,111, 0, 84,101,120,116, 66,111,120, 0, 67,117,114,118,101, - 0, 80, 97,116,104, 0, 83,101,108, 66,111,120, 0, 69,100,105,116, 70,111,110,116, 0, 77,101,115,104, 0, 77, 70, 97, 99,101, - 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86,101,114,116, 0, 77, 69,100,103,101, 0, 77, 68,101,102,111,114, -109, 86,101,114,116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99,107,121, 0, 77, 83,101,108,101, 99,116, 0, 69,100,105,116, 77, -101,115,104, 0, 67,117,115,116,111,109, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 0, 80, 97,114,116,105, 97,108, 86, -105,115,105, 98,105,108,105,116,121, 0, 77, 68,101,102,111,114,109, 87,101,105,103,104,116, 0, 77, 84,101,120, 80,111,108,121, - 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111,111,112, 67,111,108, 0, 77, 70,108,111, 97,116, 80,114,111,112,101,114,116,121, - 0, 77, 73,110,116, 80,114,111,112,101,114,116,121, 0, 77, 83,116,114,105,110,103, 80,114,111,112,101,114,116,121, 0, 79,114, -105,103, 83,112, 97, 99,101, 70, 97, 99,101, 0, 77, 68,105,115,112,115, 0, 77,117,108,116,105,114,101,115, 67,111,108, 0, 77, -117,108,116,105,114,101,115, 67,111,108, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 70, 97, 99,101, 0, 77,117,108,116, -105,114,101,115, 69,100,103,101, 0, 77,117,108,116,105,114,101,115, 76,101,118,101,108, 0, 77,111,100,105,102,105,101,114, 68, - 97,116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 77, -111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,114,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,117, -105,108,100, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 97,115,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, - 0, 65,114,114, 97,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,105,114,114,111,114, 77,111,100,105,102,105,101, -114, 68, 97,116, 97, 0, 69,100,103,101, 83,112,108,105,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,101,118,101, -108, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 77,101,115,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, - 83,109,111,107,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 68,111,109, 97,105,110, 83,101,116, -116,105,110,103,115, 0, 83,109,111,107,101, 70,108,111,119, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 67,111,108, -108, 83,101,116,116,105,110,103,115, 0, 68,105,115,112,108, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 85, - 86, 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101, 99,105,109, 97,116,101, 77,111,100, -105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67, 97,115, -116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87, 97,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65, -114,109, 97,116,117,114,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 72,111,111,107, 77,111,100,105,102,105,101,114, - 68, 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 77, -111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 0, 67,108,111,116,104, 83,105,109, 83,101,116,116,105,110, -103,115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 80,111,105,110,116, 67, 97, 99,104,101, 0, - 67,111,108,108,105,115,105,111,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 86, 72, 84,114,101,101, 0, 83,117, -114,102, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101,114,105,118,101,100, 77,101,115,104, 0, 66, 86, - 72, 84,114,101,101, 70,114,111,109, 77,101,115,104, 0, 66,111,111,108,101, 97,110, 77,111,100,105,102,105,101,114, 68, 97,116, - 97, 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101, 0, 77, 68,101,102, 67,101,108,108, 0, 77,101,115,104, 68,101,102, -111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 77,111, -100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 0, 80, 97,114,116,105, 99, -108,101, 73,110,115,116, 97,110, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,120,112,108,111,100,101, 77,111, -100,105,102,105,101,114, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, - 70,108,117,105,100,115,105,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 83,101,116, -116,105,110,103,115, 0, 83,104,114,105,110,107,119,114, 97,112, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,105,109, -112,108,101, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,104, 97,112,101, 75,101,121, 77,111, -100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,108,105,100,105,102,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, - 83, 99,114,101,119, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 0, 98, 68,101,102,111,114, -109, 71,114,111,117,112, 0, 83, 99,117,108,112,116, 83,101,115,115,105,111,110, 0, 98, 65, 99,116,105,111,110, 0, 98, 80,111, -115,101, 0, 98, 71, 80,100, 97,116, 97, 0, 98, 65,110,105,109, 86,105,122, 83,101,116,116,105,110,103,115, 0, 98, 77,111,116, -105,111,110, 80, 97,116,104, 0, 66,117,108,108,101,116, 83,111,102,116, 66,111,100,121, 0, 80, 97,114,116, 68,101,102,108,101, - 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 79, 98, 72,111,111,107, 0, 68,117,112,108,105, 79, 98,106,101, 99,116, 0, 82, - 78, 71, 0, 69,102,102,101, 99,116,111,114, 87,101,105,103,104,116,115, 0, 80, 84, 67, 97, 99,104,101, 77,101,109, 0, 80, 84, - 67, 97, 99,104,101, 69,100,105,116, 0, 83, 66, 86,101,114,116,101,120, 0, 66,111,100,121, 80,111,105,110,116, 0, 66,111,100, -121, 83,112,114,105,110,103, 0, 83, 66, 83, 99,114, 97,116, 99,104, 0, 87,111,114,108,100, 0, 66, 97,115,101, 0, 65,118,105, - 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, - 99,107,116,105,109,101, 67,111,100,101, 99, 83,101,116,116,105,110,103,115, 0, 70, 70, 77,112,101,103, 67,111,100,101, 99, 68, - 97,116, 97, 0, 65,117,100,105,111, 68, 97,116, 97, 0, 83, 99,101,110,101, 82,101,110,100,101,114, 76, 97,121,101,114, 0, 82, -101,110,100,101,114, 68, 97,116, 97, 0, 82,101,110,100,101,114, 80,114,111,102,105,108,101, 0, 71, 97,109,101, 68,111,109,101, - 0, 71, 97,109,101, 70,114, 97,109,105,110,103, 0, 71, 97,109,101, 68, 97,116, 97, 0, 84,105,109,101, 77, 97,114,107,101,114, - 0, 80, 97,105,110,116, 0, 66,114,117,115,104, 0, 73,109, 97,103,101, 80, 97,105,110,116, 83,101,116,116,105,110,103,115, 0, - 80, 97,114,116,105, 99,108,101, 66,114,117,115,104, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 69,100,105,116, 83,101, -116,116,105,110,103,115, 0, 84,114, 97,110,115,102,111,114,109, 79,114,105,101,110,116, 97,116,105,111,110, 0, 83, 99,117,108, -112,116, 0, 86, 80, 97,105,110,116, 0, 84,111,111,108, 83,101,116,116,105,110,103,115, 0, 98, 83,116, 97,116,115, 0, 85,110, -105,116, 83,101,116,116,105,110,103,115, 0, 80,104,121,115,105, 99,115, 83,101,116,116,105,110,103,115, 0, 69,100,105,116,105, -110,103, 0, 83, 99,101,110,101, 83,116, 97,116,115, 0, 68, 97,103, 70,111,114,101,115,116, 0, 66, 71,112,105, 99, 0, 82,101, -103,105,111,110, 86,105,101,119, 51, 68, 0, 82,101,110,100,101,114, 73,110,102,111, 0, 82,101,116,111,112,111, 86,105,101,119, - 68, 97,116, 97, 0, 86,105,101,119, 68,101,112,116,104,115, 0, 83,109,111,111,116,104, 86,105,101,119, 83,116,111,114,101, 0, -119,109, 84,105,109,101,114, 0, 86,105,101,119, 51, 68, 0, 83,112, 97, 99,101, 76,105,110,107, 0, 86,105,101,119, 50, 68, 0, - 83,112, 97, 99,101, 73,110,102,111, 0, 98, 83, 99,114,101,101,110, 0, 83,112, 97, 99,101, 73,112,111, 0, 98, 68,111,112,101, - 83,104,101,101,116, 0, 83,112, 97, 99,101, 66,117,116,115, 0, 83,112, 97, 99,101, 83,101,113, 0, 70,105,108,101, 83,101,108, -101, 99,116, 80, 97,114, 97,109,115, 0, 83,112, 97, 99,101, 70,105,108,101, 0, 70,105,108,101, 76,105,115,116, 0,119,109, 79, -112,101,114, 97,116,111,114, 0, 70,105,108,101, 76, 97,121,111,117,116, 0, 83,112, 97, 99,101, 79,111,112,115, 0, 84,114,101, -101, 83,116,111,114,101, 0, 84,114,101,101, 83,116,111,114,101, 69,108,101,109, 0, 83,112, 97, 99,101, 73,109, 97,103,101, 0, - 83, 99,111,112,101,115, 0, 72,105,115,116,111,103,114, 97,109, 0, 83,112, 97, 99,101, 78,108, 97, 0, 83,112, 97, 99,101, 84, -101,120,116, 0, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 84,105,109,101, - 67, 97, 99,104,101, 0, 83,112, 97, 99,101, 84,105,109,101, 0, 83,112, 97, 99,101, 78,111,100,101, 0, 83,112, 97, 99,101, 76, -111,103,105, 99, 0, 83,112, 97, 99,101, 73,109, 97, 83,101,108, 0, 67,111,110,115,111,108,101, 76,105,110,101, 0, 83,112, 97, - 99,101, 67,111,110,115,111,108,101, 0, 83,112, 97, 99,101, 85,115,101,114, 80,114,101,102, 0,117,105, 70,111,110,116, 0,117, -105, 70,111,110,116, 83,116,121,108,101, 0,117,105, 83,116,121,108,101, 0,117,105, 87,105,100,103,101,116, 67,111,108,111,114, -115, 0,117,105, 87,105,100,103,101,116, 83,116, 97,116,101, 67,111,108,111,114,115, 0, 84,104,101,109,101, 85, 73, 0, 84,104, -101,109,101, 83,112, 97, 99,101, 0, 84,104,101,109,101, 87,105,114,101, 67,111,108,111,114, 0, 98, 84,104,101,109,101, 0, 98, - 65,100,100,111,110, 0, 83,111,108,105,100, 76,105,103,104,116, 0, 85,115,101,114, 68,101,102, 0, 83, 99,114, 86,101,114,116, - 0, 83, 99,114, 69,100,103,101, 0, 80, 97,110,101,108, 0, 80, 97,110,101,108, 84,121,112,101, 0,117,105, 76, 97,121,111,117, -116, 0, 83, 99,114, 65,114,101, 97, 0, 83,112, 97, 99,101, 84,121,112,101, 0, 65, 82,101,103,105,111,110, 0, 65, 82,101,103, -105,111,110, 84,121,112,101, 0, 70,105,108,101, 71,108,111, 98, 97,108, 0, 83,116,114,105,112, 69,108,101,109, 0, 84, 83,116, -114,105,112, 69,108,101,109, 0, 83,116,114,105,112, 67,114,111,112, 0, 83,116,114,105,112, 84,114, 97,110,115,102,111,114,109, - 0, 83,116,114,105,112, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 83,116,114,105,112, 80,114,111,120,121, 0, 83,116, -114,105,112, 0, 80,108,117,103,105,110, 83,101,113, 0, 83,101,113,117,101,110, 99,101, 0, 98, 83,111,117,110,100, 0, 77,101, -116, 97, 83,116, 97, 99,107, 0, 87,105,112,101, 86, 97,114,115, 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, 97,110,115,102, -111,114,109, 86, 97,114,115, 0, 83,111,108,105,100, 67,111,108,111,114, 86, 97,114,115, 0, 83,112,101,101,100, 67,111,110,116, -114,111,108, 86, 97,114,115, 0, 69,102,102,101, 99,116, 0, 66,117,105,108,100, 69,102,102, 0, 80, 97,114,116, 69,102,102, 0, - 80, 97,114,116,105, 99,108,101, 0, 87, 97,118,101, 69,102,102, 0, 98, 80,114,111,112,101,114,116,121, 0, 98, 78,101, 97,114, - 83,101,110,115,111,114, 0, 98, 77,111,117,115,101, 83,101,110,115,111,114, 0, 98, 84,111,117, 99,104, 83,101,110,115,111,114, - 0, 98, 75,101,121, 98,111, 97,114,100, 83,101,110,115,111,114, 0, 98, 80,114,111,112,101,114,116,121, 83,101,110,115,111,114, - 0, 98, 65, 99,116,117, 97,116,111,114, 83,101,110,115,111,114, 0, 98, 68,101,108, 97,121, 83,101,110,115,111,114, 0, 98, 67, -111,108,108,105,115,105,111,110, 83,101,110,115,111,114, 0, 98, 82, 97,100, 97,114, 83,101,110,115,111,114, 0, 98, 82, 97,110, -100,111,109, 83,101,110,115,111,114, 0, 98, 82, 97,121, 83,101,110,115,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 83,101, -110,115,111,114, 0, 98, 77,101,115,115, 97,103,101, 83,101,110,115,111,114, 0, 98, 83,101,110,115,111,114, 0, 98, 67,111,110, -116,114,111,108,108,101,114, 0, 98, 74,111,121,115,116,105, 99,107, 83,101,110,115,111,114, 0, 98, 69,120,112,114,101,115,115, -105,111,110, 67,111,110,116, 0, 98, 80,121,116,104,111,110, 67,111,110,116, 0, 98, 65, 99,116,117, 97,116,111,114, 0, 98, 65, -100,100, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 65, 99,116,105,111,110, 65, 99,116,117, 97,116,111,114, - 0, 98, 83,111,117,110,100, 65, 99,116,117, 97,116,111,114, 0, 83,111,117,110,100, 51, 68, 0, 98, 69,100,105,116, 79, 98,106, -101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83, 99,101,110,101, 65, 99,116,117, 97,116,111,114, 0, 98, 80,114,111,112, -101,114,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 73,112, -111, 65, 99,116,117, 97,116,111,114, 0, 98, 67, 97,109,101,114, 97, 65, 99,116,117, 97,116,111,114, 0, 98, 67,111,110,115,116, -114, 97,105,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 71,114,111,117,112, 65, 99,116,117, 97,116,111,114, 0, 98, 82, 97, -110,100,111,109, 65, 99,116,117, 97,116,111,114, 0, 98, 77,101,115,115, 97,103,101, 65, 99,116,117, 97,116,111,114, 0, 98, 71, - 97,109,101, 65, 99,116,117, 97,116,111,114, 0, 98, 86,105,115,105, 98,105,108,105,116,121, 65, 99,116,117, 97,116,111,114, 0, - 98, 84,119,111, 68, 70,105,108,116,101,114, 65, 99,116,117, 97,116,111,114, 0, 98, 80, 97,114,101,110,116, 65, 99,116,117, 97, -116,111,114, 0, 98, 83,116, 97,116,101, 65, 99,116,117, 97,116,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 65, 99,116,117, - 97,116,111,114, 0, 70,114,101,101, 67, 97,109,101,114, 97, 0, 83,112, 97, 99,101, 83,111,117,110,100, 0, 71,114,111,117,112, - 79, 98,106,101, 99,116, 0, 66,111,110,101, 0, 98, 65,114,109, 97,116,117,114,101, 0, 98, 77,111,116,105,111,110, 80, 97,116, -104, 86,101,114,116, 0, 98, 80,111,115,101, 67,104, 97,110,110,101,108, 0, 71, 72, 97,115,104, 0, 98, 73, 75, 80, 97,114, 97, -109, 0, 98, 73,116, 97,115, 99, 0, 98, 65, 99,116,105,111,110, 71,114,111,117,112, 0, 83,112, 97, 99,101, 65, 99,116,105,111, -110, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 67,104, 97,110, -110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 84, 97,114,103,101, -116, 0, 98, 80,121,116,104,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 75,105,110,101,109, 97,116,105, 99, 67,111, -110,115,116,114, 97,105,110,116, 0, 98, 83,112,108,105,110,101, 73, 75, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, - 97, 99,107, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,101, 76,105,107,101, 67,111,110,115,116, -114, 97,105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122, -101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83, 97,109,101, 86,111,108,117,109,101, 67,111,110,115,116, -114, 97,105,110,116, 0, 98, 84,114, 97,110,115, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 77,105,110, 77, - 97,120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, - 76,111, 99,107, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68, 97,109,112, 84,114, 97, 99,107, 67,111, -110,115,116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111,110,115,116,114, 97,105,110,116, 0, 98, - 83,116,114,101,116, 99,104, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,105,103,105,100, 66,111,100,121, 74,111, -105,110,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, 67,111,110,115,116,114, 97,105,110,116, - 0, 98, 67,104,105,108,100, 79,102, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115,102,111,114,109, 67,111, -110,115,116,114, 97,105,110,116, 0, 98, 80,105,118,111,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 76,105, -109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110, -116, 0, 98, 83,105,122,101, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68,105,115,116, 76,105,109,105, -116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,104,114,105,110,107,119,114, 97,112, 67,111,110,115,116,114, 97,105,110, -116, 0, 98, 65, 99,116,105,111,110, 77,111,100,105,102,105,101,114, 0, 98, 65, 99,116,105,111,110, 83,116,114,105,112, 0, 98, - 78,111,100,101, 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 0, 98, 78,111,100,101, 76,105,110,107, 0, - 98, 78,111,100,101, 0, 98, 78,111,100,101, 80,114,101,118,105,101,119, 0,117,105, 66,108,111, 99,107, 0, 98, 78,111,100,101, - 84,121,112,101, 0, 78,111,100,101, 73,109, 97,103,101, 65,110,105,109, 0, 78,111,100,101, 66,108,117,114, 68, 97,116, 97, 0, - 78,111,100,101, 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 66,105,108, 97,116,101,114, 97,108, 66,108,117,114, 68, - 97,116, 97, 0, 78,111,100,101, 72,117,101, 83, 97,116, 0, 78,111,100,101, 73,109, 97,103,101, 70,105,108,101, 0, 78,111,100, -101, 67,104,114,111,109, 97, 0, 78,111,100,101, 84,119,111, 88, 89,115, 0, 78,111,100,101, 84,119,111, 70,108,111, 97,116,115, - 0, 78,111,100,101, 71,101,111,109,101,116,114,121, 0, 78,111,100,101, 86,101,114,116,101,120, 67,111,108, 0, 78,111,100,101, - 68,101,102,111, 99,117,115, 0, 78,111,100,101, 83, 99,114,105,112,116, 68,105, 99,116, 0, 78,111,100,101, 71,108, 97,114,101, - 0, 78,111,100,101, 84,111,110,101,109, 97,112, 0, 78,111,100,101, 76,101,110,115, 68,105,115,116, 0, 78,111,100,101, 67,111, -108,111,114, 66, 97,108, 97,110, 99,101, 0, 78,111,100,101, 67,111,108,111,114,115,112,105,108,108, 0, 84,101,120, 78,111,100, -101, 79,117,116,112,117,116, 0, 67,117,114,118,101, 77, 97,112, 80,111,105,110,116, 0, 67,117,114,118,101, 77, 97,112, 0, 66, -114,117,115,104, 67,108,111,110,101, 0, 67,117,115,116,111,109, 68, 97,116, 97, 76, 97,121,101,114, 0, 67,117,115,116,111,109, - 68, 97,116, 97, 69,120,116,101,114,110, 97,108, 0, 72, 97,105,114, 75,101,121, 0, 80, 97,114,116,105, 99,108,101, 75,101,121, - 0, 66,111,105,100, 80, 97,114,116,105, 99,108,101, 0, 66,111,105,100, 68, 97,116, 97, 0, 67,104,105,108,100, 80, 97,114,116, -105, 99,108,101, 0, 80, 97,114,116,105, 99,108,101, 84, 97,114,103,101,116, 0, 80, 97,114,116,105, 99,108,101, 68,117,112,108, -105, 87,101,105,103,104,116, 0, 80, 97,114,116,105, 99,108,101, 68, 97,116, 97, 0, 83, 80, 72, 70,108,117,105,100, 83,101,116, -116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 83,101,116,116,105,110,103,115, 0, 66,111,105,100, 83,101,116,116,105, -110,103,115, 0, 80, 97,114,116,105, 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 75, 68, 84,114,101,101, 0, 80, 97,114,116, -105, 99,108,101, 68,114, 97,119, 68, 97,116, 97, 0, 76,105,110,107, 78,111,100,101, 0, 98, 71, 80, 68,115,112,111,105,110,116, - 0, 98, 71, 80, 68,115,116,114,111,107,101, 0, 98, 71, 80, 68,102,114, 97,109,101, 0, 98, 71, 80, 68,108, 97,121,101,114, 0, - 82,101,112,111,114,116, 0, 82,101,112,111,114,116, 76,105,115,116, 0, 82,101,112,111,114,116, 84,105,109,101,114, 73,110,102, -111, 0,119,109, 87,105,110,100,111,119, 77, 97,110, 97,103,101,114, 0,119,109, 87,105,110,100,111,119, 0,119,109, 75,101,121, - 67,111,110,102,105,103, 0,119,109, 69,118,101,110,116, 0,119,109, 83,117, 98, 87,105,110,100,111,119, 0,119,109, 71,101,115, -116,117,114,101, 0,119,109, 75,101,121, 77, 97,112, 73,116,101,109, 0, 80,111,105,110,116,101,114, 82, 78, 65, 0,119,109, 75, -101,121, 77, 97,112, 0,119,109, 79,112,101,114, 97,116,111,114, 84,121,112,101, 0, 70, 77,111,100,105,102,105,101,114, 0, 70, - 77,111,100, 95, 71,101,110,101,114, 97,116,111,114, 0, 70, 77,111,100, 95, 70,117,110, 99,116,105,111,110, 71,101,110,101,114, - 97,116,111,114, 0, 70, 67, 77, 95, 69,110,118,101,108,111,112,101, 68, 97,116, 97, 0, 70, 77,111,100, 95, 69,110,118,101,108, -111,112,101, 0, 70, 77,111,100, 95, 67,121, 99,108,101,115, 0, 70, 77,111,100, 95, 80,121,116,104,111,110, 0, 70, 77,111,100, - 95, 76,105,109,105,116,115, 0, 70, 77,111,100, 95, 78,111,105,115,101, 0, 70, 77,111,100, 95, 83,116,101,112,112,101,100, 0, - 68,114,105,118,101,114, 84, 97,114,103,101,116, 0, 68,114,105,118,101,114, 86, 97,114, 0, 67,104, 97,110,110,101,108, 68,114, -105,118,101,114, 0, 70, 80,111,105,110,116, 0, 70, 67,117,114,118,101, 0, 65,110,105,109, 77, 97,112, 80, 97,105,114, 0, 65, -110,105,109, 77, 97,112,112,101,114, 0, 78,108, 97, 83,116,114,105,112, 0, 78,108, 97, 84,114, 97, 99,107, 0, 75, 83, 95, 80, - 97,116,104, 0, 75,101,121,105,110,103, 83,101,116, 0, 65,110,105,109, 79,118,101,114,114,105,100,101, 0, 73,100, 65,100,116, - 84,101,109,112,108, 97,116,101, 0, 66,111,105,100, 82,117,108,101, 0, 66,111,105,100, 82,117,108,101, 71,111, 97,108, 65,118, -111,105,100, 0, 66,111,105,100, 82,117,108,101, 65,118,111,105,100, 67,111,108,108,105,115,105,111,110, 0, 66,111,105,100, 82, -117,108,101, 70,111,108,108,111,119, 76,101, 97,100,101,114, 0, 66,111,105,100, 82,117,108,101, 65,118,101,114, 97,103,101, 83, -112,101,101,100, 0, 66,111,105,100, 82,117,108,101, 70,105,103,104,116, 0, 66,111,105,100, 83,116, 97,116,101, 0, 70, 76, 85, - 73, 68, 95, 51, 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 0, 0, 0, 84, 76, 69, 78, 1, 0, 1, 0, 2, 0, 2, 0, - 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 0, 0, 8, 0, 12, 0, 8, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, 12, 0, 24, 0, - 16, 0, 16, 0, 32, 0, 16, 0, 16, 0, 20, 0, 76, 0, 52, 0, 40, 2, 0, 0, 32, 0,140, 0,220, 3, 92, 0, 36, 0, 56, 0, - 84, 0,112, 0,124, 0, 56, 0, 24, 0, 40, 0,120, 0, 12, 0,104, 0, 36, 0,120, 5,156, 1, 0, 0, 0, 0, 0, 0, 8, 1, - 48, 1, 84, 1, 24, 0, 8, 3,168, 0, 0, 0, 72, 0, 32, 1,152, 0,132, 0,108, 1, 16, 1, 56, 0, 88, 0,160, 2, 76, 0, - 60, 1, 0, 0,108, 0,104, 0,148, 0, 56, 0, 8, 0, 16, 0, 92, 1, 0, 0, 0, 0, 0, 0, 40, 1, 20, 0, 44, 0, 60, 0, - 24, 0, 12, 0, 12, 0, 4, 0, 8, 0, 8, 0, 0, 0, 28, 0, 84, 0, 32, 0, 8, 0, 12, 0, 8, 0, 8, 0, 4, 0, 4, 0, - 0, 1, 32, 0, 12, 0, 16, 0, 64, 0, 24, 0, 12, 0, 40, 0, 64, 0, 80, 0,100, 0,108, 0, 80, 0,108, 0,128, 0, 76, 0, - 72, 0,120, 0, 72, 0, 84, 0,188, 0, 48, 0,168, 0,160, 0,172, 0, 72, 0,104, 0,116, 0,196, 0,112, 0,224, 0, 64, 0, - 92, 0, 0, 0,144, 0, 32, 0,240, 1,112, 0, 0, 0, 88, 0, 0, 0, 0, 0, 76, 0, 8, 0, 8, 0,244, 0, 88, 0,124, 1, - 84, 0, 76, 0, 72, 0, 72, 0,176, 1,120, 0,116, 0, 64, 0,120, 0, 92, 0,220, 0, 40, 0, 0, 0, 92, 0,148, 0, 72, 0, - 48, 0, 20, 0,120, 0,144, 0, 88, 1,208, 0,180, 0, 0, 0, 68, 0, 92, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,120, 1, - 28, 0,176, 0,144, 0, 64, 0, 60, 0, 24, 0, 72, 0,232, 3, 56, 0, 20, 0, 16, 0,100, 0, 84, 0, 24, 0,200, 1, 44, 0, - 16, 0,156, 0, 80, 0, 96, 0, 44, 0,144, 1, 32, 0, 8, 0, 24, 0, 56, 2, 0, 0, 0, 0, 72, 0, 72, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,248, 0, 40, 0,140, 0, 48, 0,140, 0,208, 0, 24, 0,216, 0,216, 0,200, 1, 60, 0, 0, 0,120, 0, - 0, 0,252, 0, 12, 0, 12, 0, 24, 33,112, 16, 24, 16,192, 0,124, 2, 80, 2, 40, 0, 36, 0,188, 0,244, 0, 52, 0,140, 2, - 28, 0,112, 1, 88, 0, 16, 1, 32, 0,224, 0, 32, 0, 32, 0,112, 2,104, 1, 16, 0, 48, 29, 72, 0, 56, 0,248, 12, 20, 0, - 24, 0, 64, 1, 0, 0, 0, 0, 96, 0, 0, 0,248, 0, 0, 0, 16, 1, 80, 0, 28, 0, 16, 0, 8, 0, 44, 0,252, 0,240, 0, -168, 1,216, 0, 92, 1, 16, 0, 12, 0, 24, 0, 52, 0, 16, 0, 20, 0, 16, 0, 24, 0, 56, 1, 0, 0, 56, 0, 52, 0, 48, 0, - 8, 0, 44, 0, 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 72, 0, 68, 0, 76, 0, 80, 0, 60, 0,128, 0, - 76, 0, 60, 0, 12, 0, 92, 0, 68, 0, 32, 0, 80, 0, 16, 0, 76, 0,108, 0, 84, 0, 28, 0, 96, 0, 56, 0, 56, 0,108, 0, -140, 0, 4, 0, 20, 0, 12, 0, 8, 0, 80, 0, 40, 0,188, 0, 24, 0, 16, 1,144, 0, 16, 0,204, 1, 0, 0, 4, 0, 40, 0, -104, 0,216, 0, 64, 0, 44, 0, 72, 0,116, 0, 60, 0,112, 0, 16, 0, 52, 0, 44, 0, 44, 0, 44, 0, 8, 0, 36, 0, 68, 0, - 64, 0, 44, 0, 44, 0, 20, 0, 52, 0, 96, 0, 12, 0,108, 0, 92, 0, 52, 0, 28, 0, 28, 0, 28, 0, 52, 0, 20, 0, 60, 0, -140, 0, 36, 0,120, 0, 32, 0,180, 0, 0, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, 44, 0, 8, 0, - 8, 0, 64, 0, 32, 0, 24, 0, 8, 0, 24, 0, 32, 0, 8, 0, 84, 0, 20, 0, 32, 0, 12, 0, 44, 0, 20, 0, 68, 0,240, 0, - 24, 0, 56, 0, 52, 0, 20, 0, 64, 0, 28, 0, 20, 0,180, 0, 36, 0,200, 1, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 20, 0, 24, 0,172, 0, 24, 0, 28, 0, 20, 0,168, 0,148, 0,152, 0, 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 96, 0, 0, 0, - 88, 0, 20, 0, 24, 0, 16, 0, 20, 0, 8, 0, 8, 0, 24, 0, 20, 0, 20, 0, 48, 0,208, 1, 28, 1, 16, 0, 68, 0, 0, 1, - 20, 0,160, 0, 88, 0, 96, 0,152, 0, 20, 0, 56, 0, 48, 0, 68, 0, 56, 0, 92, 0, 64, 0, 56, 0, 96, 0, 0, 0, 0, 0, - 83, 84, 82, 67,153, 1, 0, 0, 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0, 11, 0, 1, 0, - 9, 0, 2, 0, 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4, 0, 13, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0, 14, 0, 2, 0, - 7, 0, 5, 0, 7, 0, 6, 0, 15, 0, 2, 0, 4, 0, 5, 0, 4, 0, 6, 0, 16, 0, 2, 0, 8, 0, 5, 0, 8, 0, 6, 0, - 17, 0, 3, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 18, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, - 19, 0, 3, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 20, 0, 4, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, - 4, 0, 8, 0, 21, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 8, 0, 22, 0, 4, 0, 8, 0, 5, 0, - 8, 0, 6, 0, 8, 0, 7, 0, 8, 0, 8, 0, 23, 0, 4, 0, 4, 0, 9, 0, 4, 0, 10, 0, 4, 0, 11, 0, 4, 0, 12, 0, - 24, 0, 4, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 25, 0, 4, 0, 9, 0, 13, 0, 12, 0, 14, 0, - 4, 0, 15, 0, 4, 0, 16, 0, 26, 0, 10, 0, 26, 0, 0, 0, 26, 0, 1, 0, 0, 0, 17, 0, 0, 0, 18, 0, 2, 0, 19, 0, - 0, 0, 20, 0, 4, 0, 21, 0, 25, 0, 22, 0, 4, 0, 23, 0, 4, 0, 24, 0, 27, 0, 9, 0, 9, 0, 0, 0, 9, 0, 1, 0, - 27, 0, 25, 0, 28, 0, 26, 0, 0, 0, 27, 0, 2, 0, 28, 0, 2, 0, 19, 0, 4, 0, 29, 0, 26, 0, 30, 0, 28, 0, 8, 0, - 27, 0, 31, 0, 27, 0, 32, 0, 29, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 4, 0, 36, 0, 4, 0, 37, 0, 28, 0, 38, 0, - 30, 0, 5, 0, 4, 0, 39, 0, 4, 0, 40, 0, 2, 0, 41, 0, 2, 0, 42, 0, 4, 0, 43, 0, 31, 0, 6, 0, 32, 0, 44, 0, - 2, 0, 45, 0, 2, 0, 46, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 47, 0, 33, 0, 21, 0, 33, 0, 0, 0, 33, 0, 1, 0, - 34, 0, 48, 0, 35, 0, 49, 0, 24, 0, 50, 0, 24, 0, 51, 0, 2, 0, 45, 0, 2, 0, 46, 0, 2, 0, 52, 0, 2, 0, 53, 0, - 2, 0, 54, 0, 2, 0, 55, 0, 2, 0, 19, 0, 2, 0, 56, 0, 7, 0, 11, 0, 7, 0, 12, 0, 4, 0, 57, 0, 7, 0, 58, 0, - 7, 0, 59, 0, 7, 0, 60, 0, 31, 0, 61, 0, 36, 0, 7, 0, 27, 0, 31, 0, 12, 0, 62, 0, 24, 0, 63, 0, 2, 0, 45, 0, - 2, 0, 64, 0, 2, 0, 65, 0, 2, 0, 37, 0, 37, 0, 16, 0, 37, 0, 0, 0, 37, 0, 1, 0, 7, 0, 66, 0, 7, 0, 60, 0, - 2, 0, 17, 0, 2, 0, 46, 0, 2, 0, 67, 0, 2, 0, 19, 0, 4, 0, 68, 0, 4, 0, 69, 0, 9, 0, 2, 0, 7, 0, 70, 0, - 0, 0, 20, 0, 0, 0, 71, 0, 7, 0, 72, 0, 7, 0, 73, 0, 38, 0, 13, 0, 27, 0, 31, 0, 39, 0, 74, 0, 37, 0, 75, 0, - 0, 0, 76, 0, 4, 0, 77, 0, 7, 0, 60, 0, 12, 0, 78, 0, 36, 0, 79, 0, 27, 0, 80, 0, 2, 0, 17, 0, 2, 0, 81, 0, - 2, 0, 82, 0, 2, 0, 19, 0, 40, 0, 6, 0, 40, 0, 0, 0, 40, 0, 1, 0, 0, 0, 83, 0, 0, 0, 84, 0, 4, 0, 23, 0, - 4, 0, 85, 0, 41, 0, 10, 0, 41, 0, 0, 0, 41, 0, 1, 0, 4, 0, 86, 0, 4, 0, 87, 0, 4, 0, 88, 0, 4, 0, 89, 0, - 4, 0, 14, 0, 4, 0, 90, 0, 0, 0, 91, 0, 0, 0, 92, 0, 42, 0, 15, 0, 27, 0, 31, 0, 0, 0, 93, 0, 4, 0, 90, 0, - 4, 0, 94, 0, 12, 0, 95, 0, 40, 0, 96, 0, 40, 0, 97, 0, 4, 0, 98, 0, 4, 0, 99, 0, 12, 0,100, 0, 0, 0,101, 0, - 4, 0,102, 0, 4, 0,103, 0, 9, 0,104, 0, 8, 0,105, 0, 43, 0, 3, 0, 4, 0,106, 0, 4, 0,107, 0, 9, 0, 2, 0, - 44, 0, 15, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,108, 0, 7, 0,109, 0, 7, 0,110, 0, - 7, 0,111, 0, 7, 0,112, 0, 7, 0,113, 0, 7, 0,114, 0, 7, 0,115, 0, 7, 0,116, 0, 36, 0, 79, 0, 32, 0,117, 0, - 45, 0, 13, 0, 4, 0,118, 0, 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, 2, 0,122, 0, 2, 0,123, 0, 2, 0, 19, 0, - 2, 0,124, 0, 2, 0,125, 0, 2, 0,126, 0, 2, 0,127, 0, 2, 0,128, 0, 46, 0,129, 0, 47, 0, 32, 0, 27, 0, 31, 0, - 0, 0, 34, 0, 12, 0,130, 0, 48, 0,131, 0, 49, 0,132, 0, 50, 0,133, 0, 50, 0,134, 0, 2, 0,135, 0, 2, 0,136, 0, - 2, 0,124, 0, 2, 0, 19, 0, 2, 0,137, 0, 2, 0, 17, 0, 4, 0,138, 0, 2, 0,139, 0, 2, 0,140, 0, 2, 0,141, 0, - 2, 0,142, 0, 2, 0,143, 0, 2, 0,144, 0, 4, 0,145, 0, 4, 0,146, 0, 43, 0,147, 0, 30, 0,148, 0, 7, 0,149, 0, - 4, 0,150, 0, 2, 0,151, 0, 2, 0,152, 0, 2, 0,153, 0, 2, 0,154, 0, 7, 0,155, 0, 7, 0,156, 0, 51, 0, 63, 0, - 2, 0,157, 0, 2, 0,158, 0, 2, 0,159, 0, 2, 0,160, 0, 32, 0,161, 0, 52, 0,162, 0, 0, 0,163, 0, 0, 0,164, 0, - 0, 0,165, 0, 0, 0,166, 0, 0, 0,167, 0, 7, 0,168, 0, 7, 0,169, 0, 7, 0,170, 0, 2, 0,171, 0, 2, 0,172, 0, - 2, 0,173, 0, 2, 0,174, 0, 2, 0,175, 0, 2, 0,176, 0, 0, 0,177, 0, 0, 0,178, 0, 7, 0,179, 0, 7, 0,180, 0, - 7, 0,181, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0, 56, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0,186, 0, 7, 0,187, 0, - 7, 0,188, 0, 7, 0,189, 0, 7, 0,190, 0, 7, 0,191, 0, 7, 0,192, 0, 7, 0,193, 0, 7, 0,194, 0, 7, 0,195, 0, - 7, 0,196, 0, 7, 0,197, 0, 7, 0,198, 0, 7, 0,199, 0, 7, 0,200, 0, 7, 0,201, 0, 7, 0,202, 0, 7, 0,203, 0, - 7, 0,204, 0, 7, 0,205, 0, 7, 0,206, 0, 7, 0,207, 0, 7, 0,208, 0, 7, 0,209, 0, 7, 0,210, 0, 7, 0,211, 0, - 7, 0,212, 0, 7, 0,213, 0, 7, 0,214, 0, 7, 0,215, 0, 7, 0,216, 0, 7, 0,217, 0, 7, 0,218, 0, 53, 0, 15, 0, - 0, 0,219, 0, 9, 0,220, 0, 0, 0,221, 0, 0, 0,222, 0, 4, 0,223, 0, 4, 0,224, 0, 9, 0,225, 0, 7, 0,226, 0, - 7, 0,227, 0, 7, 0,228, 0, 4, 0,229, 0, 9, 0,230, 0, 9, 0,231, 0, 4, 0,232, 0, 4, 0, 37, 0, 54, 0, 6, 0, - 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,233, 0, 7, 0, 66, 0, 4, 0, 63, 0, 55, 0, 5, 0, 2, 0, 19, 0, - 2, 0, 36, 0, 2, 0, 63, 0, 2, 0,234, 0, 54, 0,228, 0, 56, 0, 17, 0, 32, 0,161, 0, 47, 0,235, 0, 57, 0,236, 0, - 7, 0,237, 0, 7, 0,238, 0, 2, 0, 17, 0, 2, 0,239, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0,240, 0, 4, 0,241, 0, - 2, 0,242, 0, 2, 0,243, 0, 4, 0,124, 0, 4, 0,138, 0, 2, 0,244, 0, 2, 0,245, 0, 58, 0, 22, 0, 2, 0, 19, 0, - 2, 0,246, 0, 7, 0,247, 0, 7, 0,248, 0, 2, 0,137, 0, 2, 0,249, 0, 4, 0,250, 0, 4, 0,251, 0, 32, 0,161, 0, - 4, 0,252, 0, 2, 0,253, 0, 2, 0,254, 0, 9, 0,255, 0, 7, 0, 0, 1, 7, 0, 1, 1, 2, 0, 2, 1, 2, 0, 3, 1, - 2, 0, 4, 1, 2, 0, 5, 1, 7, 0, 6, 1, 7, 0, 7, 1, 55, 0, 8, 1, 59, 0, 13, 0, 4, 0, 9, 1, 4, 0, 10, 1, - 2, 0, 11, 1, 2, 0, 19, 0, 2, 0, 12, 1, 2, 0, 13, 1, 32, 0,161, 0, 7, 0, 14, 1, 4, 0, 15, 1, 0, 0, 16, 1, - 7, 0, 17, 1, 4, 0, 18, 1, 4, 0,124, 0, 52, 0, 63, 0, 27, 0, 31, 0, 39, 0, 74, 0, 7, 0, 19, 1, 7, 0, 20, 1, - 7, 0, 21, 1, 7, 0, 22, 1, 7, 0, 23, 1, 7, 0, 24, 1, 7, 0, 25, 1, 7, 0, 26, 1, 7, 0, 27, 1, 7, 0, 69, 0, - 7, 0, 28, 1, 7, 0, 29, 1, 7, 0, 30, 1, 7, 0, 31, 1, 7, 0, 32, 1, 7, 0, 33, 1, 7, 0, 34, 1, 7, 0, 35, 1, - 7, 0, 36, 1, 7, 0, 37, 1, 7, 0, 38, 1, 7, 0, 39, 1, 2, 0, 40, 1, 2, 0, 41, 1, 2, 0, 42, 1, 2, 0, 43, 1, - 2, 0, 44, 1, 2, 0, 45, 1, 2, 0, 46, 1, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,239, 0, 7, 0, 47, 1, 7, 0, 48, 1, - 7, 0, 49, 1, 7, 0, 50, 1, 4, 0, 51, 1, 4, 0, 52, 1, 2, 0, 53, 1, 2, 0, 54, 1, 2, 0, 12, 1, 2, 0,122, 0, - 4, 0, 23, 0, 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, 7, 0, 55, 1, 7, 0, 56, 1, 7, 0, 89, 0, 45, 0, 57, 1, - 60, 0, 58, 1, 36, 0, 79, 0, 47, 0,235, 0, 53, 0, 59, 1, 55, 0, 8, 1, 56, 0, 60, 1, 30, 0,148, 0, 58, 0, 61, 1, - 59, 0, 62, 1, 0, 0, 63, 1, 0, 0,178, 0, 61, 0, 8, 0, 7, 0, 64, 1, 7, 0, 65, 1, 7, 0,169, 0, 4, 0, 19, 0, - 7, 0, 66, 1, 7, 0, 67, 1, 7, 0, 68, 1, 32, 0, 44, 0, 62, 0, 72, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 4, 0, 69, 1, 2, 0,172, 0, 2, 0, 70, 1, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,182, 0, - 7, 0, 71, 1, 7, 0, 72, 1, 7, 0, 73, 1, 7, 0, 74, 1, 7, 0, 75, 1, 7, 0, 76, 1, 7, 0, 77, 1, 7, 0, 78, 1, - 7, 0, 79, 1, 7, 0, 80, 1, 7, 0, 81, 1, 63, 0, 82, 1, 2, 0,246, 0, 2, 0, 69, 0, 7, 0,109, 0, 7, 0,110, 0, - 7, 0, 83, 1, 7, 0, 84, 1, 7, 0, 85, 1, 7, 0, 86, 1, 7, 0, 87, 1, 2, 0, 88, 1, 2, 0, 89, 1, 2, 0, 90, 1, - 2, 0, 91, 1, 0, 0, 92, 1, 0, 0, 93, 1, 2, 0, 94, 1, 2, 0, 95, 1, 2, 0, 96, 1, 2, 0, 97, 1, 2, 0, 98, 1, - 7, 0, 99, 1, 7, 0,100, 1, 7, 0,101, 1, 7, 0,102, 1, 2, 0,103, 1, 2, 0, 89, 0, 2, 0,104, 1, 2, 0,105, 1, - 2, 0,106, 1, 2, 0,107, 1, 7, 0,108, 1, 7, 0,109, 1, 7, 0,110, 1, 7, 0,111, 1, 7, 0,112, 1, 7, 0,113, 1, - 7, 0,114, 1, 7, 0,115, 1, 7, 0,116, 1, 7, 0,117, 1, 7, 0,118, 1, 7, 0,119, 1, 2, 0,120, 1, 0, 0,121, 1, - 36, 0, 79, 0, 51, 0,122, 1, 2, 0,123, 1, 0, 0,124, 1, 30, 0,148, 0, 64, 0, 2, 0, 27, 0, 31, 0, 36, 0, 79, 0, - 65, 0, 18, 0, 7, 0,125, 1, 7, 0,126, 1, 7, 0,127, 1, 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, 7, 0,131, 1, - 7, 0,132, 1, 7, 0,133, 1, 7, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 2, 0,137, 1, 2, 0,138, 1, 7, 0,139, 1, - 7, 0,140, 1, 7, 0,141, 1, 7, 0,142, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0,143, 1, 2, 0, 19, 0, - 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,144, 1, 7, 0,145, 1, 7, 0,146, 1, 7, 0,147, 1, 7, 0,148, 1, - 7, 0,149, 1, 7, 0,150, 1, 7, 0,151, 1, 7, 0,152, 1, 7, 0,153, 1, 7, 0,154, 1, 7, 0,155, 1, 7, 0,156, 1, - 7, 0,157, 1, 7, 0,158, 1, 7, 0,159, 1, 7, 0,160, 1, 7, 0,161, 1, 7, 0,162, 1, 7, 0,163, 1, 65, 0,164, 1, - 7, 0,165, 1, 7, 0,166, 1, 7, 0,167, 1, 7, 0,168, 1, 7, 0,169, 1, 7, 0,170, 1, 7, 0,171, 1, 2, 0,172, 1, - 2, 0,173, 1, 2, 0,174, 1, 0, 0,175, 1, 0, 0,176, 1, 7, 0,177, 1, 7, 0,178, 1, 2, 0,179, 1, 2, 0,180, 1, - 7, 0,181, 1, 7, 0,182, 1, 7, 0,183, 1, 7, 0,184, 1, 2, 0,185, 1, 2, 0,186, 1, 4, 0, 69, 1, 4, 0,187, 1, - 2, 0,188, 1, 2, 0,189, 1, 2, 0,190, 1, 2, 0,191, 1, 7, 0,192, 1, 7, 0,193, 1, 7, 0,194, 1, 7, 0,195, 1, - 7, 0,196, 1, 7, 0,197, 1, 7, 0,198, 1, 7, 0,199, 1, 7, 0,200, 1, 7, 0,201, 1, 0, 0,202, 1, 7, 0,203, 1, - 7, 0,204, 1, 7, 0,205, 1, 4, 0,206, 1, 0, 0,207, 1, 0, 0,104, 1, 0, 0,208, 1, 0, 0, 63, 1, 2, 0,209, 1, - 2, 0,210, 1, 2, 0,123, 1, 2, 0,211, 1, 2, 0,212, 1, 2, 0,213, 1, 7, 0,214, 1, 7, 0,215, 1, 7, 0,216, 1, - 7, 0,217, 1, 7, 0,218, 1, 2, 0,157, 0, 2, 0,158, 0, 55, 0,219, 1, 55, 0,220, 1, 0, 0,221, 1, 0, 0,222, 1, - 0, 0,223, 1, 0, 0,224, 1, 2, 0,225, 1, 2, 0,226, 1, 7, 0,227, 1, 7, 0,228, 1, 51, 0,122, 1, 60, 0, 58, 1, - 36, 0, 79, 0, 67, 0,229, 1, 30, 0,148, 0, 7, 0,230, 1, 7, 0,231, 1, 7, 0,232, 1, 7, 0,233, 1, 7, 0,234, 1, - 2, 0,235, 1, 2, 0, 69, 0, 7, 0,236, 1, 7, 0,237, 1, 7, 0,238, 1, 7, 0,239, 1, 7, 0,240, 1, 7, 0,241, 1, - 7, 0,242, 1, 7, 0,243, 1, 7, 0,244, 1, 2, 0,245, 1, 2, 0,246, 1, 4, 0,247, 1, 4, 0,248, 1, 12, 0,249, 1, - 68, 0, 4, 0, 27, 0, 31, 0, 0, 0,250, 1, 69, 0, 2, 0, 43, 0,147, 0, 70, 0, 26, 0, 70, 0, 0, 0, 70, 0, 1, 0, - 71, 0,251, 1, 4, 0,252, 1, 4, 0,253, 1, 4, 0,254, 1, 4, 0,255, 1, 4, 0, 0, 2, 4, 0, 1, 2, 2, 0, 17, 0, - 2, 0, 19, 0, 2, 0, 2, 2, 2, 0, 3, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 4, 2, 7, 0, 5, 2, - 7, 0, 6, 2, 7, 0, 7, 2, 7, 0, 8, 2, 7, 0, 9, 2, 7, 0, 10, 2, 7, 0, 23, 0, 7, 0, 11, 2, 7, 0, 12, 2, - 72, 0, 20, 0, 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 13, 2, 12, 0, 14, 2, 12, 0, 15, 2, 36, 0, 79, 0, - 66, 0, 16, 2, 0, 0, 19, 0, 0, 0, 17, 2, 2, 0, 18, 2, 2, 0,171, 0, 2, 0, 37, 0, 7, 0, 64, 1, 7, 0,169, 0, - 7, 0, 65, 1, 7, 0, 19, 2, 7, 0, 20, 2, 7, 0, 21, 2, 70, 0, 22, 2, 35, 0, 11, 0, 7, 0, 23, 2, 7, 0, 24, 2, - 7, 0, 25, 2, 7, 0,248, 0, 2, 0, 54, 0, 0, 0, 26, 2, 0, 0, 27, 2, 0, 0, 28, 2, 0, 0, 29, 2, 0, 0, 30, 2, - 0, 0, 31, 2, 34, 0, 7, 0, 7, 0, 32, 2, 7, 0, 24, 2, 7, 0, 25, 2, 2, 0, 28, 2, 2, 0, 31, 2, 7, 0,248, 0, - 7, 0, 37, 0, 73, 0, 21, 0, 73, 0, 0, 0, 73, 0, 1, 0, 2, 0, 17, 0, 2, 0, 33, 2, 2, 0, 31, 2, 2, 0, 19, 0, - 2, 0, 34, 2, 2, 0, 35, 2, 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 38, 2, 2, 0, 39, 2, 2, 0, 40, 2, 2, 0, 41, 2, - 7, 0, 42, 2, 7, 0, 43, 2, 34, 0, 48, 0, 35, 0, 49, 0, 2, 0, 44, 2, 2, 0, 45, 2, 4, 0, 46, 2, 74, 0, 5, 0, - 2, 0, 47, 2, 2, 0, 33, 2, 0, 0, 19, 0, 0, 0, 37, 0, 2, 0, 69, 0, 75, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, - 7, 0, 8, 0, 7, 0, 48, 2, 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 49, 2, 12, 0, 14, 2, - 12, 0, 50, 2, 32, 0, 51, 2, 32, 0, 52, 2, 32, 0, 53, 2, 36, 0, 79, 0, 77, 0, 54, 2, 38, 0, 55, 2, 66, 0, 16, 2, - 12, 0, 56, 2, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 2, 0,171, 0, 2, 0, 89, 0, 2, 0, 57, 2, 2, 0, 58, 2, - 2, 0, 59, 2, 7, 0, 60, 2, 7, 0, 61, 2, 2, 0, 62, 2, 2, 0, 18, 2, 2, 0, 19, 0, 2, 0, 63, 2, 7, 0, 64, 2, - 7, 0, 65, 2, 7, 0, 66, 2, 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 67, 2, 2, 0, 68, 2, 4, 0, 69, 2, 9, 0, 70, 2, - 2, 0, 23, 0, 2, 0, 95, 0, 2, 0, 66, 0, 2, 0, 71, 2, 7, 0, 72, 2, 7, 0, 73, 2, 7, 0, 74, 2, 7, 0, 75, 2, - 7, 0, 76, 2, 7, 0, 77, 2, 7, 0, 78, 2, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0, 81, 2, 0, 0, 82, 2, 78, 0, 83, 2, - 79, 0, 84, 2, 0, 0, 85, 2, 68, 0, 86, 2, 68, 0, 87, 2, 68, 0, 88, 2, 68, 0, 89, 2, 4, 0, 90, 2, 7, 0, 91, 2, - 4, 0, 92, 2, 4, 0, 93, 2, 75, 0, 94, 2, 4, 0, 95, 2, 4, 0, 96, 2, 74, 0, 97, 2, 74, 0, 98, 2, 80, 0, 41, 0, - 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 99, 2, 36, 0, 79, 0, 38, 0, 55, 2, 66, 0, 16, 2, 81, 0,100, 2, - 82, 0,101, 2, 83, 0,102, 2, 84, 0,103, 2, 85, 0,104, 2, 86, 0,105, 2, 87, 0,106, 2, 88, 0,107, 2, 80, 0,108, 2, - 89, 0,109, 2, 90, 0,110, 2, 91, 0,111, 2, 91, 0,112, 2, 91, 0,113, 2, 4, 0, 53, 0, 4, 0,114, 2, 4, 0,115, 2, - 4, 0,116, 2, 4, 0,117, 2, 2, 0,171, 0, 2, 0,118, 2, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 7, 0,119, 2, - 4, 0, 57, 2, 2, 0,120, 2, 2, 0, 19, 0, 2, 0,121, 2, 2, 0,122, 2, 2, 0, 18, 2, 2, 0,123, 2, 92, 0,124, 2, - 93, 0,125, 2, 83, 0, 8, 0, 9, 0,126, 2, 7, 0,127, 2, 4, 0,128, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, - 2, 0,130, 2, 2, 0,131, 2, 81, 0, 7, 0, 4, 0,132, 2, 4, 0,133, 2, 4, 0,134, 2, 4, 0,135, 2, 2, 0, 33, 2, - 0, 0,136, 2, 0, 0, 19, 0, 85, 0, 5, 0, 4, 0,132, 2, 4, 0,133, 2, 0, 0,137, 2, 0, 0,138, 2, 2, 0, 19, 0, - 94, 0, 2, 0, 4, 0,139, 2, 7, 0, 25, 2, 86, 0, 3, 0, 94, 0,140, 2, 4, 0,141, 2, 4, 0, 19, 0, 84, 0, 6, 0, - 7, 0,142, 2, 2, 0,143, 2, 2, 0, 33, 2, 0, 0, 19, 0, 0, 0,138, 2, 0, 0, 59, 2, 87, 0, 4, 0, 0, 0,233, 0, - 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 95, 0, 6, 0, 47, 0,126, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, - 2, 0,130, 2, 2, 0,131, 2, 96, 0, 1, 0, 7, 0,144, 2, 97, 0, 5, 0, 0, 0,233, 0, 0, 0,179, 0, 0, 0,180, 0, - 0, 0,181, 0, 4, 0, 37, 0, 88, 0, 1, 0, 7, 0,145, 2, 89, 0, 2, 0, 4, 0,146, 2, 4, 0, 17, 0, 82, 0, 7, 0, - 7, 0,127, 2, 47, 0,126, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, 2, 0,130, 2, 2, 0,131, 2, 98, 0, 1, 0, - 7, 0,147, 2, 99, 0, 1, 0, 4, 0,148, 2,100, 0, 1, 0, 0, 0,149, 2,101, 0, 1, 0, 7, 0,127, 2,102, 0, 3, 0, - 4, 0,150, 2, 0, 0, 92, 0, 7, 0,151, 2,103, 0, 4, 0, 7, 0,233, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, -104, 0, 1, 0,103, 0,128, 2,105, 0, 5, 0, 4, 0,152, 2, 4, 0,153, 2, 0, 0, 19, 0, 0, 0, 33, 2, 0, 0, 59, 2, -106, 0, 2, 0, 4, 0,154, 2, 4, 0,153, 2,107, 0, 10, 0,107, 0, 0, 0,107, 0, 1, 0,105, 0,155, 2,104, 0,156, 2, -106, 0,157, 2, 4, 0, 53, 0, 4, 0,115, 2, 4, 0,114, 2, 4, 0, 37, 0, 84, 0,158, 2, 92, 0, 14, 0, 12, 0,159, 2, - 84, 0,158, 2, 0, 0,160, 2, 0, 0,161, 2, 0, 0,162, 2, 0, 0,163, 2, 0, 0,164, 2, 0, 0,165, 2, 0, 0,166, 2, - 0, 0, 19, 0, 91, 0,111, 2, 91, 0,113, 2, 2, 0,167, 2, 0, 0,168, 2, 93, 0, 8, 0, 4, 0,169, 2, 4, 0,170, 2, - 81, 0,171, 2, 85, 0,172, 2, 4, 0,115, 2, 4, 0,114, 2, 4, 0, 53, 0, 4, 0, 37, 0,108, 0, 9, 0,108, 0, 0, 0, -108, 0, 1, 0, 4, 0, 17, 0, 4, 0, 69, 1, 4, 0,173, 2, 4, 0, 37, 0, 0, 0, 20, 0, 46, 0,129, 0, 0, 0,174, 2, -109, 0, 7, 0,108, 0,175, 2, 2, 0,176, 2, 2, 0,159, 2, 2, 0,177, 2, 2, 0, 90, 0, 9, 0,178, 2, 9, 0,179, 2, -110, 0, 3, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0, 20, 0,111, 0, 5, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0, 20, 0, - 2, 0,180, 2, 0, 0,181, 2,112, 0, 5, 0,108, 0,175, 2, 7, 0, 87, 0, 7, 0,182, 2, 4, 0,183, 2, 4, 0,184, 2, -113, 0, 5, 0,108, 0,175, 2, 32, 0,185, 2, 0, 0, 71, 0, 4, 0, 69, 1, 4, 0, 19, 0,114, 0, 13, 0,108, 0,175, 2, - 32, 0,186, 2, 32, 0,187, 2, 32, 0,188, 2, 32, 0,189, 2, 7, 0,190, 2, 7, 0,191, 2, 7, 0,182, 2, 7, 0,192, 2, - 4, 0,193, 2, 4, 0,194, 2, 4, 0, 90, 0, 4, 0,195, 2,115, 0, 5, 0,108, 0,175, 2, 2, 0,196, 2, 2, 0, 19, 0, - 7, 0,197, 2, 32, 0,198, 2,116, 0, 3, 0,108, 0,175, 2, 7, 0,199, 2, 4, 0, 90, 0,117, 0, 10, 0,108, 0,175, 2, - 7, 0,200, 2, 4, 0,201, 2, 4, 0, 37, 0, 2, 0, 90, 0, 2, 0,202, 2, 2, 0,203, 2, 2, 0,204, 2, 7, 0,205, 2, - 0, 0,206, 2,118, 0, 3, 0,108, 0,175, 2, 7, 0, 37, 0, 4, 0, 17, 0,119, 0, 6, 0,108, 0,175, 2,120, 0,207, 2, -121, 0,208, 2,122, 0,209, 2, 7, 0,210, 2, 4, 0, 17, 0,123, 0, 11, 0,108, 0,175, 2, 52, 0,211, 2, 7, 0,212, 2, - 4, 0,213, 2, 0, 0,206, 2, 7, 0,214, 2, 4, 0,215, 2, 32, 0,216, 2, 0, 0,217, 2, 4, 0,218, 2, 4, 0, 37, 0, -124, 0, 12, 0,108, 0,175, 2, 32, 0,219, 2, 47, 0,220, 2, 4, 0, 90, 0, 4, 0,221, 2, 7, 0,222, 2, 7, 0,223, 2, - 7, 0,224, 2, 7, 0,225, 2, 0, 0,217, 2, 4, 0,218, 2, 4, 0, 37, 0,125, 0, 3, 0,108, 0,175, 2, 7, 0,226, 2, - 4, 0,227, 2,126, 0, 5, 0,108, 0,175, 2, 7, 0,228, 2, 0, 0,206, 2, 2, 0, 19, 0, 2, 0,229, 2,127, 0, 8, 0, -108, 0,175, 2, 32, 0,161, 0, 7, 0,228, 2, 7, 0,248, 0, 7, 0,106, 0, 0, 0,206, 2, 2, 0, 19, 0, 2, 0, 17, 0, -128, 0, 21, 0,108, 0,175, 2, 32, 0,230, 2, 0, 0,206, 2, 52, 0,211, 2, 32, 0,216, 2, 2, 0, 19, 0, 2, 0, 37, 0, - 7, 0,231, 2, 7, 0,232, 2, 7, 0,233, 2, 7, 0, 64, 2, 7, 0,234, 2, 7, 0,235, 2, 7, 0,236, 2, 7, 0,237, 2, - 4, 0,215, 2, 4, 0,218, 2, 0, 0,217, 2, 7, 0,238, 2, 7, 0,239, 2, 7, 0, 89, 0,129, 0, 7, 0,108, 0,175, 2, - 2, 0,240, 2, 2, 0,241, 2, 4, 0, 69, 0, 32, 0,161, 0, 7, 0,242, 2, 0, 0,206, 2,130, 0, 10, 0,108, 0,175, 2, - 32, 0,161, 0, 0, 0,243, 2, 7, 0,244, 2, 7, 0,245, 2, 7, 0,237, 2, 4, 0,246, 2, 4, 0,247, 2, 7, 0,248, 2, - 0, 0, 20, 0,131, 0, 1, 0,108, 0,175, 2,132, 0, 7, 0,108, 0,175, 2, 46, 0,129, 0,133, 0,249, 2,134, 0,250, 2, -135, 0,251, 2,136, 0,252, 2, 12, 0,253, 2,137, 0, 13, 0,108, 0,175, 2, 84, 0,254, 2, 84, 0,255, 2, 84, 0, 0, 3, - 84, 0, 1, 3, 84, 0, 2, 3, 84, 0, 3, 3, 81, 0, 4, 3, 4, 0, 5, 3, 4, 0, 6, 3, 7, 0,210, 2, 7, 0, 37, 0, -138, 0, 7, 3,139, 0, 7, 0,108, 0,175, 2, 84, 0,254, 2, 84, 0, 8, 3,140, 0, 9, 3,141, 0, 7, 3, 4, 0, 10, 3, - 4, 0, 5, 3,142, 0, 4, 0,108, 0,175, 2, 32, 0,161, 0, 4, 0, 11, 3, 4, 0, 37, 0,143, 0, 2, 0, 4, 0, 12, 3, - 7, 0, 25, 2,144, 0, 2, 0, 4, 0,120, 0, 4, 0, 13, 3,145, 0, 24, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0,206, 2, - 2, 0, 14, 3, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 37, 0,143, 0, 15, 3, 4, 0, 16, 3, 7, 0, 17, 3, 4, 0, 53, 0, - 4, 0, 18, 3,144, 0, 19, 3,143, 0, 20, 3, 4, 0, 21, 3, 4, 0, 22, 3, 4, 0, 23, 3, 4, 0, 13, 3, 7, 0, 24, 3, - 7, 0, 25, 3, 7, 0, 26, 3, 7, 0, 27, 3, 7, 0, 28, 3, 9, 0, 29, 3,146, 0, 8, 0,108, 0,175, 2,147, 0, 30, 3, -140, 0, 9, 3, 4, 0, 31, 3, 4, 0, 32, 3, 4, 0, 33, 3, 2, 0, 19, 0, 2, 0, 56, 0,148, 0, 8, 0,108, 0,175, 2, - 32, 0, 44, 0, 2, 0,252, 0, 2, 0, 19, 0, 2, 0,196, 2, 2, 0, 56, 0, 7, 0, 34, 3, 7, 0, 35, 3,149, 0, 5, 0, -108, 0,175, 2, 4, 0, 36, 3, 2, 0, 19, 0, 2, 0, 37, 3, 7, 0, 38, 3,150, 0, 8, 0,108, 0,175, 2, 0, 0, 39, 3, - 0, 0, 40, 3, 0, 0,165, 2, 0, 0, 41, 3, 0, 0, 42, 3, 0, 0, 90, 0, 0, 0, 59, 2,151, 0, 3, 0,108, 0,175, 2, -152, 0, 43, 3,136, 0,252, 2,153, 0, 10, 0,108, 0,175, 2, 32, 0, 44, 3, 32, 0, 45, 3, 0, 0, 46, 3, 7, 0, 47, 3, - 2, 0, 48, 3, 2, 0, 49, 3, 0, 0, 50, 3, 0, 0, 51, 3, 0, 0,181, 2,154, 0, 9, 0,108, 0,175, 2, 32, 0, 52, 3, - 0, 0, 46, 3, 7, 0, 53, 3, 7, 0, 54, 3, 0, 0, 69, 1, 0, 0,196, 2, 0, 0, 55, 3, 0, 0, 37, 0,155, 0, 1, 0, -108, 0,175, 2,156, 0, 8, 0,108, 0,175, 2, 0, 0,206, 2, 7, 0,120, 0, 7, 0, 56, 3, 7, 0, 57, 3, 7, 0, 58, 3, - 7, 0, 59, 3, 4, 0, 19, 0,157, 0, 9, 0,108, 0,175, 2, 32, 0, 60, 3, 4, 0, 61, 3, 4, 0, 62, 3, 4, 0, 63, 3, - 7, 0, 64, 3, 7, 0, 65, 3, 2, 0,196, 2, 2, 0, 19, 0,158, 0, 28, 0, 27, 0, 31, 0, 2, 0, 34, 2, 2, 0, 35, 2, - 2, 0, 66, 3, 2, 0, 19, 0, 2, 0, 67, 3, 2, 0, 68, 3, 2, 0, 69, 3, 2, 0, 69, 0, 0, 0, 70, 3, 0, 0, 71, 3, - 0, 0, 72, 3, 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 73, 3, 7, 0, 74, 3, 7, 0, 75, 3, 7, 0, 76, 3, 7, 0, 77, 3, - 7, 0, 78, 3, 34, 0, 79, 3, 36, 0, 79, 0, 38, 0, 55, 2, 86, 0,105, 2, 0, 0, 71, 0, 7, 0, 80, 3, 7, 0, 81, 3, -158, 0, 82, 3,159, 0, 3, 0,159, 0, 0, 0,159, 0, 1, 0, 0, 0, 20, 0, 71, 0, 3, 0, 7, 0, 83, 3, 4, 0, 19, 0, - 4, 0, 37, 0, 32, 0,126, 0, 27, 0, 31, 0, 39, 0, 74, 0,160, 0, 84, 3, 2, 0, 17, 0, 2, 0, 85, 3, 4, 0, 86, 3, - 4, 0, 87, 3, 4, 0, 88, 3, 0, 0, 89, 3, 32, 0, 38, 0, 32, 0, 90, 3, 32, 0, 91, 3, 32, 0, 92, 3, 32, 0, 93, 3, - 36, 0, 79, 0, 77, 0, 54, 2, 71, 0,251, 1,161, 0, 94, 3,161, 0, 95, 3,162, 0, 96, 3, 9, 0, 2, 0,163, 0, 97, 3, -164, 0, 98, 3,165, 0, 99, 3, 12, 0,100, 3, 12, 0, 99, 2, 12, 0, 14, 2, 12, 0,101, 3, 12, 0,102, 3, 4, 0, 69, 1, - 4, 0,103, 3, 66, 0, 16, 2, 0, 0,104, 3, 4, 0, 18, 2, 4, 0,105, 3, 7, 0, 64, 1, 7, 0,106, 3, 7, 0,107, 3, - 7, 0,169, 0, 7, 0,108, 3, 7, 0, 65, 1, 7, 0,109, 3, 7, 0, 4, 2, 7, 0,110, 3, 7, 0,111, 3, 7, 0,112, 3, - 7, 0,113, 3, 7, 0,114, 3, 7, 0,115, 3, 7, 0,244, 2, 7, 0,116, 3, 7, 0,237, 0, 4, 0,117, 3, 2, 0, 19, 0, - 2, 0,118, 3, 2, 0,119, 3, 2, 0,120, 3, 2, 0,121, 3, 2, 0,122, 3, 2, 0,123, 3, 2, 0,124, 3, 2, 0,125, 3, - 2, 0,126, 3, 2, 0,127, 3, 2, 0,128, 3, 4, 0,129, 3, 4, 0,130, 3, 4, 0,131, 3, 4, 0,132, 3, 7, 0,133, 3, - 7, 0, 91, 2, 7, 0,134, 3, 7, 0,135, 3, 7, 0,136, 3, 7, 0,137, 3, 7, 0,138, 3, 7, 0,212, 0, 7, 0,139, 3, - 7, 0,140, 3, 7, 0,141, 3, 7, 0,142, 3, 2, 0,143, 3, 0, 0,144, 3, 0, 0,145, 3, 0, 0,146, 3, 0, 0,147, 3, - 7, 0,148, 3, 7, 0,149, 3, 12, 0,150, 3, 12, 0,151, 3, 12, 0,152, 3, 12, 0,153, 3, 7, 0,154, 3, 2, 0,146, 2, - 2, 0,155, 3, 7, 0,128, 2, 4, 0,156, 3, 4, 0,157, 3,166, 0,158, 3, 2, 0,159, 3, 2, 0,244, 0, 7, 0,160, 3, - 12, 0,161, 3, 12, 0,162, 3, 12, 0,163, 3, 12, 0,164, 3,167, 0, 61, 1,168, 0,165, 3, 67, 0,166, 3, 2, 0,167, 3, - 2, 0,168, 3, 2, 0,169, 3, 2, 0,170, 3, 7, 0,120, 2, 2, 0,171, 3, 2, 0,172, 3,152, 0,173, 3,140, 0,174, 3, -140, 0,175, 3, 4, 0,176, 3, 4, 0,177, 3, 4, 0,178, 3, 4, 0, 69, 0, 12, 0,179, 3, 12, 0,180, 3, 12, 0,181, 3, -169, 0, 14, 0,169, 0, 0, 0,169, 0, 1, 0, 32, 0, 38, 0, 7, 0,244, 2, 7, 0, 66, 1, 7, 0,245, 2, 7, 0,237, 2, - 0, 0, 20, 0, 4, 0,246, 2, 4, 0,247, 2, 4, 0,182, 3, 2, 0, 17, 0, 2, 0,183, 3, 7, 0,248, 2,170, 0, 12, 0, -170, 0, 0, 0,170, 0, 1, 0, 32, 0, 44, 0, 4, 0,184, 3, 4, 0,146, 2, 4, 0,185, 3, 4, 0, 17, 0, 4, 0,186, 3, - 7, 0, 66, 1, 7, 0,187, 3, 7, 0,188, 3, 7, 0,144, 2,167, 0, 40, 0, 4, 0, 19, 0, 2, 0,189, 3, 2, 0,190, 3, - 2, 0,237, 2, 2, 0,191, 3, 2, 0,192, 3, 2, 0,193, 3, 2, 0,194, 3, 2, 0,195, 3, 7, 0,196, 3, 7, 0,197, 3, - 7, 0,198, 3, 7, 0,199, 3, 7, 0,200, 3, 7, 0,201, 3, 7, 0,202, 3, 7, 0,203, 3, 7, 0,204, 3, 7, 0,205, 3, - 7, 0,206, 3, 7, 0,207, 3, 7, 0,208, 3, 7, 0,209, 3, 7, 0,210, 3, 7, 0,211, 3, 7, 0,212, 3, 7, 0,213, 3, - 7, 0,214, 3, 7, 0,215, 3, 7, 0,216, 3, 7, 0,217, 3, 7, 0,218, 3, 7, 0,219, 3, 7, 0,220, 3, 7, 0,221, 3, - 7, 0,222, 3, 52, 0,162, 0,171, 0,223, 3, 7, 0,224, 3, 4, 0,184, 2,172, 0, 5, 0, 67, 0,229, 1, 7, 0,225, 3, - 7, 0,226, 3, 2, 0, 19, 0, 2, 0,227, 3,173, 0, 9, 0,173, 0, 0, 0,173, 0, 1, 0, 4, 0,228, 3, 4, 0,229, 3, - 4, 0,230, 3, 4, 0, 19, 0, 4, 0,231, 3, 9, 0,232, 3, 9, 0,233, 3,136, 0, 19, 0,136, 0, 0, 0,136, 0, 1, 0, - 4, 0, 19, 0, 4, 0,234, 3, 4, 0,235, 3, 4, 0,236, 3, 4, 0,237, 3, 4, 0,238, 3, 4, 0,239, 3, 4, 0,229, 3, - 4, 0,146, 2, 4, 0, 56, 0, 0, 0,240, 3, 0, 0,241, 3, 0, 0,242, 3, 0, 0,243, 3, 12, 0,244, 3,174, 0,245, 3, - 9, 0,246, 3,175, 0, 1, 0, 7, 0, 32, 2,166, 0, 30, 0, 4, 0, 19, 0, 7, 0,247, 3, 7, 0,248, 3, 7, 0,249, 3, - 4, 0,250, 3, 4, 0,251, 3, 4, 0,252, 3, 4, 0,253, 3, 7, 0,254, 3, 7, 0,255, 3, 7, 0, 0, 4, 7, 0, 1, 4, - 7, 0, 2, 4, 7, 0, 3, 4, 7, 0, 4, 4, 7, 0, 5, 4, 7, 0, 6, 4, 7, 0, 7, 4, 7, 0, 8, 4, 7, 0, 9, 4, - 7, 0, 10, 4, 7, 0, 11, 4, 7, 0, 12, 4, 7, 0, 13, 4, 7, 0, 14, 4, 7, 0, 15, 4, 4, 0, 16, 4, 4, 0, 17, 4, - 7, 0, 18, 4, 7, 0,139, 3,168, 0, 54, 0, 4, 0,229, 3, 4, 0, 19, 4,176, 0, 20, 4,177, 0, 21, 4, 0, 0, 37, 0, - 0, 0, 22, 4, 2, 0, 23, 4, 7, 0, 24, 4, 0, 0, 25, 4, 7, 0, 26, 4, 7, 0, 27, 4, 7, 0, 28, 4, 7, 0, 29, 4, - 7, 0, 30, 4, 7, 0, 31, 4, 7, 0, 32, 4, 7, 0, 33, 4, 7, 0, 34, 4, 2, 0, 35, 4, 0, 0, 36, 4, 2, 0, 37, 4, - 7, 0, 38, 4, 7, 0, 39, 4, 0, 0, 40, 4, 4, 0,121, 0, 4, 0, 41, 4, 4, 0, 42, 4, 2, 0, 43, 4, 2, 0, 44, 4, -175, 0, 45, 4, 4, 0, 46, 4, 4, 0, 81, 0, 7, 0, 47, 4, 7, 0, 48, 4, 7, 0, 49, 4, 7, 0, 50, 4, 2, 0, 51, 4, - 2, 0, 52, 4, 2, 0, 53, 4, 2, 0, 54, 4, 2, 0, 55, 4, 2, 0, 56, 4, 2, 0, 57, 4, 2, 0, 58, 4,178, 0, 59, 4, - 7, 0, 60, 4, 7, 0, 61, 4,136, 0, 62, 4, 12, 0,253, 2,172, 0, 63, 4, 7, 0, 64, 4, 7, 0, 65, 4, 7, 0, 66, 4, - 0, 0, 67, 4,152, 0, 51, 0,151, 0, 68, 4, 2, 0, 17, 0, 2, 0, 69, 4, 2, 0, 70, 4, 2, 0, 71, 4, 7, 0, 72, 4, - 2, 0, 73, 4, 2, 0, 74, 4, 7, 0, 75, 4, 2, 0, 76, 4, 2, 0, 77, 4, 7, 0, 78, 4, 7, 0, 79, 4, 7, 0, 80, 4, - 7, 0, 81, 4, 7, 0, 82, 4, 4, 0, 83, 4, 4, 0, 84, 4, 7, 0, 85, 4, 4, 0, 86, 4, 7, 0, 87, 4, 7, 0, 88, 4, - 7, 0, 89, 4, 80, 0, 90, 4, 80, 0, 91, 4, 80, 0, 92, 4, 0, 0, 93, 4, 7, 0, 94, 4, 7, 0, 95, 4, 36, 0, 79, 0, - 2, 0, 96, 4, 0, 0, 97, 4, 0, 0, 98, 4, 7, 0, 99, 4, 4, 0,100, 4, 7, 0,101, 4, 7, 0,102, 4, 4, 0,103, 4, - 4, 0, 19, 0, 7, 0,104, 4, 7, 0,105, 4, 7, 0,106, 4, 84, 0,107, 4, 7, 0,108, 4, 7, 0,109, 4, 7, 0,110, 4, - 7, 0,111, 4, 7, 0,112, 4, 7, 0,113, 4, 7, 0,114, 4, 4, 0,115, 4,179, 0, 78, 0, 27, 0, 31, 0, 39, 0, 74, 0, - 2, 0,172, 0, 2, 0, 70, 1, 2, 0,104, 1, 2, 0,116, 4, 7, 0,117, 4, 7, 0,118, 4, 7, 0,119, 4, 7, 0,120, 4, - 7, 0,121, 4, 7, 0,122, 4, 7, 0,123, 4, 7, 0,124, 4, 7, 0,150, 1, 7, 0,152, 1, 7, 0,151, 1, 7, 0,125, 4, - 4, 0,126, 4, 7, 0,127, 4, 7, 0,128, 4, 7, 0,129, 4, 7, 0,130, 4, 7, 0,131, 4, 7, 0,132, 4, 7, 0,133, 4, - 2, 0,134, 4, 2, 0, 69, 1, 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4, 2, 0,138, 4, 2, 0,139, 4, 2, 0,140, 4, - 7, 0,141, 4, 7, 0,142, 4, 7, 0,143, 4, 7, 0,144, 4, 7, 0,145, 4, 7, 0,146, 4, 7, 0,147, 4, 7, 0,148, 4, - 7, 0,149, 4, 7, 0,150, 4, 7, 0,151, 4, 7, 0,152, 4, 2, 0,153, 4, 2, 0,154, 4, 2, 0,155, 4, 2, 0,156, 4, - 7, 0,157, 4, 7, 0,158, 4, 7, 0,159, 4, 7, 0,160, 4, 2, 0,161, 4, 2, 0,162, 4, 2, 0,163, 4, 2, 0,164, 4, - 7, 0,165, 4, 7, 0,166, 4, 7, 0,167, 4, 7, 0,168, 4, 7, 0,169, 4, 7, 0,170, 4, 7, 0,171, 4, 2, 0,172, 4, - 2, 0,173, 4, 2, 0,174, 4, 2, 0,175, 4, 2, 0,176, 4, 2, 0, 19, 0, 7, 0,177, 4, 7, 0,178, 4, 36, 0, 79, 0, - 51, 0,122, 1, 2, 0,123, 1, 2, 0,179, 4, 30, 0,148, 0,180, 0, 8, 0,180, 0, 0, 0,180, 0, 1, 0, 4, 0,117, 3, - 4, 0,180, 4, 4, 0, 19, 0, 2, 0,181, 4, 2, 0,182, 4, 32, 0,161, 0,181, 0, 13, 0, 9, 0,183, 4, 9, 0,184, 4, - 4, 0,185, 4, 4, 0,186, 4, 4, 0,187, 4, 4, 0,188, 4, 4, 0,189, 4, 4, 0,190, 4, 4, 0,191, 4, 4, 0,192, 4, - 4, 0,193, 4, 4, 0, 37, 0, 0, 0,194, 4,182, 0, 5, 0, 9, 0,195, 4, 9, 0,196, 4, 4, 0,197, 4, 4, 0, 69, 0, - 0, 0,198, 4,183, 0, 17, 0, 4, 0,199, 4, 4, 0,200, 4, 4, 0,201, 4, 4, 0,202, 4, 4, 0,203, 4, 4, 0,204, 4, - 4, 0,205, 4, 4, 0,206, 4, 4, 0,207, 4, 4, 0,208, 4, 4, 0,209, 4, 4, 0,210, 4, 2, 0,211, 4, 2, 0,212, 4, - 4, 0,213, 4, 4, 0,214, 4, 4, 0, 89, 0,184, 0, 15, 0, 4, 0, 17, 0, 4, 0,201, 4, 4, 0,215, 4, 4, 0,216, 4, - 4, 0,217, 4, 4, 0,218, 4, 7, 0,219, 4, 4, 0,220, 4, 4, 0, 90, 0, 4, 0,221, 4, 4, 0,222, 4, 4, 0,223, 4, - 4, 0,224, 4, 4, 0,225, 4, 26, 0, 30, 0,185, 0, 7, 0, 4, 0,226, 4, 7, 0,227, 4, 7, 0,228, 4, 7, 0,229, 4, - 4, 0,230, 4, 2, 0, 19, 0, 2, 0, 37, 0,186, 0, 11, 0,186, 0, 0, 0,186, 0, 1, 0, 0, 0, 20, 0, 66, 0,231, 4, - 67, 0,232, 4, 4, 0,117, 3, 4, 0,233, 4, 4, 0,234, 4, 4, 0, 37, 0, 4, 0,235, 4, 4, 0,236, 4,187, 0,111, 0, -181, 0,237, 4,182, 0,238, 4,183, 0,239, 4,184, 0,240, 4, 4, 0, 10, 3, 4, 0,121, 0, 4, 0, 41, 4, 7, 0,241, 4, - 4, 0,242, 4, 4, 0,243, 4, 4, 0,244, 4, 4, 0,245, 4, 2, 0, 19, 0, 2, 0,246, 4, 7, 0,247, 4, 7, 0,248, 4, - 7, 0,249, 4, 7, 0,250, 4, 7, 0,251, 4, 2, 0,252, 4, 2, 0,253, 4, 2, 0,254, 4, 2, 0,255, 4, 2, 0,243, 0, - 2, 0, 0, 5, 2, 0, 1, 5, 2, 0, 2, 5, 2, 0, 3, 5, 2, 0, 4, 5, 2, 0, 91, 1, 2, 0,106, 0, 2, 0, 5, 5, - 2, 0, 6, 5, 2, 0, 7, 5, 2, 0, 8, 5, 2, 0, 9, 5, 2, 0, 10, 5, 2, 0, 11, 5, 2, 0, 12, 5, 2, 0, 13, 5, - 2, 0, 92, 1, 2, 0, 14, 5, 2, 0, 15, 5, 2, 0, 16, 5, 2, 0, 17, 5, 4, 0, 18, 5, 4, 0, 69, 1, 4, 0, 19, 5, - 2, 0, 20, 5, 2, 0, 21, 5, 2, 0, 22, 5, 2, 0,248, 1, 2, 0, 23, 5, 2, 0, 24, 5, 2, 0, 25, 5, 2, 0, 26, 5, - 24, 0, 27, 5, 24, 0, 28, 5, 23, 0, 29, 5, 12, 0, 30, 5, 2, 0, 31, 5, 2, 0, 32, 5, 7, 0, 33, 5, 7, 0, 34, 5, - 7, 0, 35, 5, 7, 0, 36, 5, 4, 0, 37, 5, 7, 0, 38, 5, 7, 0, 39, 5, 7, 0, 40, 5, 7, 0, 41, 5, 2, 0, 42, 5, - 2, 0, 43, 5, 2, 0, 44, 5, 2, 0, 45, 5, 2, 0, 46, 5, 2, 0, 47, 5, 7, 0, 48, 5, 7, 0, 49, 5, 7, 0, 50, 5, - 0, 0, 51, 5, 0, 0, 52, 5, 4, 0, 53, 5, 2, 0, 54, 5, 2, 0,226, 1, 0, 0, 55, 5, 7, 0, 56, 5, 7, 0, 57, 5, - 0, 0, 58, 5, 0, 0, 59, 5, 0, 0, 60, 5, 0, 0, 61, 5, 4, 0, 62, 5, 2, 0, 63, 5, 2, 0, 64, 5, 7, 0, 65, 5, - 7, 0, 66, 5, 2, 0, 67, 5, 2, 0, 68, 5, 7, 0, 69, 5, 2, 0, 70, 5, 2, 0, 71, 5, 4, 0, 72, 5, 2, 0, 73, 5, - 2, 0, 74, 5, 2, 0, 75, 5, 2, 0, 76, 5, 7, 0, 77, 5, 7, 0, 69, 0, 42, 0, 78, 5, 0, 0, 79, 5,188, 0, 9, 0, -188, 0, 0, 0,188, 0, 1, 0, 0, 0, 20, 0, 2, 0, 80, 5, 2, 0, 81, 5, 2, 0, 82, 5, 2, 0, 89, 0, 7, 0, 83, 5, - 7, 0, 69, 0,189, 0, 7, 0, 2, 0,201, 2, 2, 0, 69, 1, 2, 0, 65, 3, 2, 0, 84, 5, 7, 0, 85, 5, 7, 0, 69, 0, - 42, 0, 86, 5,190, 0, 5, 0, 7, 0, 87, 5, 0, 0, 17, 0, 0, 0, 89, 0, 0, 0, 69, 0, 0, 0,226, 1,191, 0, 28, 0, - 7, 0,132, 4, 7, 0,133, 4, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0, 88, 5, 2, 0,179, 4, 2, 0,135, 4, 2, 0,136, 4, - 2, 0,137, 4, 2, 0,138, 4, 2, 0,139, 4, 2, 0,140, 4,190, 0, 89, 5, 2, 0,252, 4, 2, 0,253, 4, 2, 0,254, 4, - 2, 0,255, 4, 2, 0,243, 0, 2, 0, 0, 5, 2, 0, 90, 5, 2, 0, 1, 5,189, 0, 91, 5, 2, 0, 92, 5, 2, 0, 3, 5, - 2, 0, 6, 5, 2, 0, 7, 5, 7, 0, 93, 5, 7, 0, 89, 0,192, 0, 6, 0,192, 0, 0, 0,192, 0, 1, 0, 4, 0,228, 3, - 0, 0,240, 3, 4, 0, 19, 0, 32, 0, 94, 5,193, 0, 6, 0,194, 0, 95, 5, 4, 0, 96, 5, 4, 0, 97, 5, 9, 0, 98, 5, - 0, 0, 99, 5, 4, 0, 90, 0,195, 0, 8, 0,193, 0,100, 5, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0,101, 5, 2, 0,102, 5, - 2, 0,103, 5, 4, 0, 89, 0, 9, 0,104, 5,196, 0, 6, 0, 2, 0,106, 0, 2, 0,234, 3, 2, 0,105, 5, 2, 0,195, 2, - 4, 0, 19, 0, 7, 0,212, 2,197, 0, 14, 0, 2, 0, 19, 0, 2, 0,106, 5, 2, 0,107, 5, 2, 0,108, 5,196, 0,109, 5, - 9, 0,104, 5, 7, 0,110, 5, 7, 0, 56, 0, 4, 0,111, 5, 4, 0,112, 5, 4, 0,113, 5, 4, 0,114, 5, 46, 0,129, 0, - 32, 0,161, 0,198, 0, 4, 0,198, 0, 0, 0,198, 0, 1, 0, 0, 0,115, 5, 7, 0,116, 5,199, 0, 14, 0,193, 0,100, 5, - 4, 0, 90, 0, 4, 0,117, 5, 7, 0,118, 5, 7, 0,119, 5, 7, 0,120, 5, 4, 0,121, 5, 4, 0,122, 5, 7, 0,123, 5, - 7, 0,124, 5, 4, 0,125, 5, 7, 0,126, 5, 7, 0,127, 5, 4, 0, 37, 0,200, 0, 7, 0,193, 0,100, 5, 2, 0, 19, 0, - 2, 0, 37, 0, 4, 0, 36, 0, 4, 0,128, 5, 86, 0,129, 5, 9, 0,104, 5,201, 0, 74, 0,200, 0,130, 5,200, 0,131, 5, -199, 0, 84, 3, 7, 0,132, 5, 2, 0,133, 5, 2, 0,134, 5, 7, 0,135, 5, 7, 0,136, 5, 2, 0,234, 3, 2, 0,137, 5, - 7, 0,138, 5, 7, 0,139, 5, 7, 0,140, 5, 2, 0,141, 5, 2, 0,111, 5, 2, 0,142, 5, 2, 0,143, 5, 2, 0,144, 5, - 2, 0,145, 5, 7, 0,146, 5, 7, 0,147, 5, 7, 0,148, 5, 2, 0,149, 5, 2, 0,150, 5, 2, 0,151, 5, 2, 0,152, 5, - 2, 0,153, 5, 2, 0,154, 5, 2, 0,155, 5,195, 0,156, 5,197, 0,157, 5, 7, 0,158, 5, 7, 0,159, 5, 7, 0,160, 5, - 2, 0,161, 5, 2, 0,162, 5, 0, 0,163, 5, 0, 0,164, 5, 0, 0,165, 5, 0, 0,166, 5, 0, 0,167, 5, 0, 0,168, 5, - 2, 0,169, 5, 7, 0,170, 5, 7, 0,171, 5, 7, 0,172, 5, 7, 0,173, 5, 7, 0,174, 5, 7, 0,175, 5, 7, 0,176, 5, - 7, 0,177, 5, 7, 0,178, 5, 7, 0,179, 5, 2, 0,180, 5, 0, 0,181, 5, 0, 0,182, 5, 0, 0,183, 5, 0, 0,184, 5, - 32, 0,185, 5, 0, 0,186, 5, 0, 0,187, 5, 0, 0,188, 5, 0, 0,189, 5, 0, 0,190, 5, 0, 0,191, 5, 0, 0,192, 5, - 0, 0,193, 5, 2, 0,194, 5, 2, 0,195, 5, 2, 0,196, 5, 2, 0,197, 5, 2, 0,198, 5, 4, 0,199, 5, 4, 0,200, 5, -202, 0, 8, 0, 4, 0,201, 5, 4, 0,202, 5, 4, 0,203, 5, 4, 0,204, 5, 4, 0,205, 5, 4, 0,206, 5, 4, 0, 53, 0, - 4, 0,115, 2,203, 0, 3, 0, 7, 0,207, 5, 2, 0,208, 5, 2, 0, 19, 0,204, 0, 4, 0, 7, 0,209, 5, 4, 0, 19, 0, - 4, 0,210, 5, 4, 0, 56, 0, 46, 0, 42, 0, 27, 0, 31, 0, 39, 0, 74, 0, 32, 0, 94, 5,179, 0,211, 5, 46, 0,212, 5, - 47, 0,235, 0, 12, 0,213, 5,180, 0,214, 5, 32, 0,215, 5, 7, 0,216, 5, 7, 0,217, 5, 7, 0,218, 5, 7, 0,219, 5, - 4, 0,117, 3, 4, 0,220, 5, 4, 0, 89, 0, 2, 0, 19, 0, 2, 0, 63, 1, 60, 0, 58, 1,205, 0,221, 5,201, 0,222, 5, -206, 0,223, 5,187, 0,179, 0,185, 0,224, 5, 12, 0,100, 0, 12, 0,225, 5, 9, 0,226, 5, 9, 0,227, 5, 9, 0,228, 5, -207, 0,229, 5, 2, 0,230, 5, 2, 0,231, 5, 2, 0,244, 0, 2, 0,232, 5, 4, 0,233, 5, 4, 0,234, 5, 12, 0,235, 5, -190, 0, 89, 5,191, 0,236, 5,203, 0,237, 5,163, 0, 97, 3,204, 0,238, 5,208, 0, 11, 0,208, 0, 0, 0,208, 0, 1, 0, - 47, 0,235, 0, 45, 0, 57, 1, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0,106, 0, 7, 0,239, 5, 2, 0,240, 5, 2, 0, 19, 0, - 7, 0, 69, 0,209, 0, 39, 0, 7, 0,241, 5, 7, 0,242, 5, 7, 0,243, 5, 7, 0,244, 5, 7, 0,245, 5, 7, 0,246, 5, - 7, 0,247, 5, 7, 0,248, 5, 7, 0,249, 5, 7, 0, 76, 1, 7, 0,250, 5, 7, 0,251, 5, 7, 0,252, 5, 7, 0,253, 5, - 7, 0,168, 0, 2, 0,254, 5, 2, 0,255, 5, 2, 0, 0, 6, 2, 0, 37, 0, 2, 0, 1, 6, 2, 0, 2, 6, 2, 0, 3, 6, - 2, 0,240, 5, 7, 0, 4, 6, 7, 0, 5, 6, 71, 0, 6, 6,163, 0, 97, 3,209, 0, 7, 6,210, 0, 8, 6,211, 0, 9, 6, -212, 0, 10, 6,213, 0, 11, 6,214, 0, 12, 6, 7, 0, 13, 6, 2, 0, 14, 6, 2, 0, 15, 6, 7, 0, 16, 6, 7, 0, 17, 6, - 7, 0, 18, 6,215, 0, 55, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, - 7, 0,249, 5, 7, 0, 76, 1, 7, 0, 89, 0, 4, 0, 23, 6, 2, 0, 3, 6, 2, 0,240, 5, 32, 0, 94, 5, 32, 0, 24, 6, - 12, 0, 25, 6,208, 0, 26, 6,215, 0, 7, 6, 0, 0, 27, 6, 4, 0,117, 3, 4, 0,220, 5, 2, 0, 28, 6, 2, 0, 69, 0, - 2, 0, 29, 6, 2, 0, 30, 6, 2, 0,226, 1, 2, 0, 19, 0, 2, 0, 17, 2, 2, 0, 31, 6, 7, 0,111, 0, 7, 0, 32, 6, - 7, 0, 16, 6, 7, 0, 18, 6, 7, 0, 33, 6, 7, 0, 34, 6, 7, 0,168, 0, 7, 0,216, 5, 2, 0, 35, 6, 2, 0,248, 1, - 2, 0, 36, 6, 2, 0, 37, 6, 2, 0, 38, 6, 2, 0, 39, 6, 2, 0, 40, 6, 2, 0, 41, 6, 2, 0, 42, 6, 2, 0, 0, 6, - 4, 0, 43, 6, 12, 0, 44, 6, 2, 0, 45, 6, 2, 0,129, 2, 2, 0, 46, 6, 0, 0, 47, 6, 0, 0, 48, 6, 9, 0, 49, 6, -163, 0, 97, 3,217, 0, 24, 0, 24, 0, 36, 0, 24, 0, 63, 0, 23, 0, 50, 6, 23, 0, 51, 6, 23, 0, 52, 6, 7, 0, 53, 6, - 7, 0, 54, 6, 7, 0, 55, 6, 7, 0, 56, 6, 2, 0, 57, 6, 2, 0, 58, 6, 2, 0, 59, 6, 2, 0, 60, 6, 2, 0, 61, 6, - 2, 0, 19, 0, 2, 0, 62, 6, 2, 0, 63, 6, 2, 0, 64, 6, 2, 0, 65, 6, 2, 0, 66, 6, 2, 0, 30, 6, 7, 0, 67, 6, - 4, 0, 68, 6, 4, 0, 69, 6,216, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, - 2, 0, 22, 6,218, 0, 8, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, -219, 0, 70, 6, 46, 0,129, 0,220, 0, 14, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, - 2, 0, 22, 6,217, 0, 71, 6,221, 0, 72, 6, 12, 0, 73, 6, 2, 0, 69, 1, 2, 0, 74, 6, 4, 0, 19, 0, 7, 0, 75, 6, - 4, 0, 30, 6,222, 0, 20, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, -210, 0, 8, 6,217, 0, 71, 6, 2, 0, 76, 6, 2, 0, 77, 6, 2, 0, 78, 6, 2, 0, 79, 6, 2, 0, 62, 6, 2, 0, 80, 6, - 0, 0, 19, 0, 0, 0,179, 4, 9, 0, 54, 2, 4, 0, 81, 6, 4, 0, 82, 6, 27, 0, 83, 6,223, 0, 18, 0,216, 0, 0, 0, -216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6, 7, 0, 79, 2, 7, 0, 80, 2, - 2, 0, 76, 6, 2, 0, 84, 6, 2, 0, 85, 6, 2, 0, 86, 6, 4, 0, 19, 0, 7, 0, 87, 6, 4, 0,240, 5, 4, 0, 37, 0, -163, 0, 97, 3,224, 0, 15, 0, 0, 0, 88, 6, 0, 0, 89, 6, 0, 0, 90, 6, 0, 0, 91, 6, 2, 0, 17, 0, 2, 0, 19, 0, - 2, 0, 92, 6, 2, 0, 93, 6, 2, 0,169, 1, 2, 0, 94, 6, 4, 0, 95, 6, 4, 0, 96, 6, 2, 0, 97, 6, 2, 0, 37, 0, - 0, 0, 98, 6,225, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 4, 0, 99, 6,224, 0,100, 6, -226, 0,101, 6, 12, 0,102, 6, 12, 0,103, 6,227, 0,104, 6,214, 0,105, 6,228, 0,106, 6, 2, 0,107, 6, 2, 0,108, 6, - 2, 0,109, 6, 2, 0, 69, 0,229, 0, 17, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, - 2, 0, 22, 6,217, 0, 71, 6, 12, 0,110, 6,230, 0,111, 6, 0, 0,112, 6,231, 0,113, 6, 4, 0,114, 6, 4, 0,115, 6, - 2, 0, 19, 0, 2, 0,116, 6, 2, 0,117, 6, 2, 0, 37, 0,232, 0, 32, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, - 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 47, 0,220, 2, 45, 0, 57, 1, 63, 0,118, 6, 2, 0,128, 0, 2, 0,119, 6, - 2, 0, 69, 0, 2, 0,120, 6, 4, 0, 19, 0, 2, 0,121, 6, 2, 0,122, 6, 2, 0,123, 6, 2, 0,226, 1, 0, 0,124, 6, - 0, 0,125, 6, 0, 0,126, 6, 0, 0, 30, 6, 7, 0,127, 6, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0, 87, 6, 7, 0,248, 1, - 7, 0,128, 6, 7, 0,129, 6,163, 0, 97, 3,233, 0,130, 6,234, 0,131, 6,235, 0, 11, 0,216, 0, 0, 0,216, 0, 1, 0, - 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 2, 0, 74, 6, 2, 0, 19, 0, 4, 0, 37, 0,221, 0, 72, 6, -217, 0, 71, 6,236, 0, 27, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, - 42, 0,132, 6, 4, 0,133, 6, 4, 0,134, 6, 2, 0, 90, 0, 2, 0,128, 0, 2, 0,135, 6, 0, 0,136, 6, 0, 0,137, 6, - 4, 0,138, 6, 4, 0,139, 6, 4, 0,140, 6, 4, 0,141, 6, 2, 0,142, 6, 2, 0,143, 6, 7, 0,144, 6, 23, 0,145, 6, - 23, 0,146, 6, 4, 0,147, 6, 4, 0,148, 6, 0, 0,149, 6, 0, 0,150, 6,237, 0, 10, 0, 27, 0, 31, 0, 9, 0,151, 6, - 9, 0,152, 6, 9, 0,153, 6, 9, 0,154, 6, 9, 0,155, 6, 4, 0, 90, 0, 4, 0,156, 6, 0, 0,157, 6, 0, 0,158, 6, -238, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6,237, 0,159, 6, 2, 0, 90, 0, - 2, 0,128, 0, 4, 0, 89, 0, 9, 0,160, 6,239, 0, 9, 0,239, 0, 0, 0,239, 0, 1, 0, 4, 0, 17, 0, 4, 0, 19, 0, - 7, 0,161, 6, 4, 0, 23, 0, 4, 0,236, 3, 4, 0,237, 3, 4, 0,124, 0,240, 0, 11, 0,216, 0, 0, 0,216, 0, 1, 0, - 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6,217, 0, 71, 6, 12, 0,162, 6, 4, 0,163, 6, 4, 0, 37, 0, 4, 0, 19, 0, - 4, 0,164, 6,241, 0, 25, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, -217, 0, 71, 6, 27, 0,165, 6, 27, 0, 80, 0, 2, 0, 19, 0, 2, 0,128, 0, 7, 0,166, 6, 9, 0,167, 6, 7, 0, 79, 2, - 7, 0, 80, 2, 7, 0, 87, 6, 7, 0, 18, 6, 7, 0,168, 6, 7, 0,169, 6, 60, 0, 58, 1, 60, 0,170, 6, 4, 0,171, 6, - 2, 0,172, 6, 2, 0, 37, 0,163, 0, 97, 3,242, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, - 7, 0, 21, 6, 2, 0, 22, 6, 2, 0, 19, 0, 2, 0,126, 3, 4, 0, 37, 0,163, 0, 97, 3,243, 0, 42, 0,216, 0, 0, 0, -216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6,226, 0,101, 6, 0, 0, 88, 6, - 0, 0, 89, 6, 0, 0, 90, 6, 2, 0, 17, 0, 2, 0,173, 6, 2, 0, 19, 0, 2, 0, 92, 6, 9, 0,167, 6, 4, 0, 95, 6, - 4, 0,174, 6, 4, 0,175, 6, 4, 0, 96, 6, 23, 0,176, 6, 23, 0,177, 6, 7, 0,178, 6, 7, 0,179, 6, 7, 0,180, 6, - 7, 0,166, 6, 2, 0,181, 6, 2, 0,234, 0, 2, 0,169, 1, 2, 0, 94, 6, 2, 0, 37, 0, 2, 0, 89, 0, 2, 0,182, 6, - 2, 0,183, 6, 9, 0,184, 6, 9, 0,185, 6, 9, 0,186, 6, 9, 0,187, 6, 9, 0,188, 6, 2, 0,189, 6, 0, 0,190, 6, - 57, 0,191, 6,244, 0, 7, 0,244, 0, 0, 0,244, 0, 1, 0, 4, 0,192, 6, 4, 0, 23, 0, 0, 0, 83, 0, 4, 0,193, 6, - 4, 0, 17, 0,245, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, - 4, 0, 17, 0, 4, 0,194, 6, 4, 0, 19, 0, 4, 0,135, 6, 12, 0,195, 6, 12, 0,196, 6, 0, 0,197, 6, 0, 0,198, 6, - 4, 0,199, 6, 4, 0,200, 6,246, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 4, 0, 37, 0, - 0, 0,201, 6,247, 0, 7, 0,247, 0, 0, 0,247, 0, 1, 0, 0, 0,202, 6, 2, 0,203, 6, 2, 0,204, 6, 2, 0,205, 6, - 2, 0, 37, 0,248, 0, 12, 0, 2, 0,204, 6, 2, 0,206, 6, 2, 0,207, 6, 0, 0,181, 2, 2, 0,208, 6, 2, 0,209, 6, - 2, 0,210, 6, 2, 0,211, 6, 2, 0,212, 6, 2, 0, 62, 6, 7, 0,213, 6, 7, 0,214, 6,249, 0, 18, 0,249, 0, 0, 0, -249, 0, 1, 0, 0, 0,240, 3,248, 0,215, 6,248, 0,216, 6,248, 0,217, 6,248, 0,218, 6, 7, 0,219, 6, 2, 0,220, 6, - 2, 0,221, 6, 2, 0,222, 6, 2, 0,223, 6, 2, 0,224, 6, 2, 0,225, 6, 2, 0,226, 6, 2, 0,227, 6, 2, 0,228, 6, - 2, 0,229, 6,250, 0, 10, 0, 0, 0,230, 6, 0, 0,231, 6, 0, 0,232, 6, 0, 0,233, 6, 0, 0,234, 6, 0, 0,235, 6, - 2, 0,236, 6, 2, 0,237, 6, 2, 0,238, 6, 2, 0,239, 6,251, 0, 8, 0, 0, 0,240, 6, 0, 0,241, 6, 0, 0,242, 6, - 0, 0,243, 6, 0, 0,244, 6, 0, 0,245, 6, 7, 0,239, 5, 7, 0, 37, 0,252, 0, 18, 0,250, 0,246, 6,250, 0,247, 6, -250, 0,248, 6,250, 0,249, 6,250, 0,250, 6,250, 0,251, 6,250, 0,252, 6,250, 0,253, 6,250, 0,254, 6,250, 0,255, 6, -250, 0, 0, 7,250, 0, 1, 7,250, 0, 2, 7,250, 0, 3, 7,250, 0, 4, 7,250, 0, 5, 7,251, 0, 6, 7, 0, 0, 7, 7, -253, 0, 92, 0, 0, 0, 8, 7, 0, 0, 9, 7, 0, 0,234, 6, 0, 0, 10, 7, 0, 0, 11, 7, 0, 0, 12, 7, 0, 0, 13, 7, - 0, 0, 14, 7, 0, 0, 15, 7, 0, 0, 16, 7, 0, 0, 17, 7, 0, 0, 18, 7, 0, 0, 19, 7, 0, 0, 20, 7, 0, 0, 21, 7, - 0, 0, 22, 7, 0, 0, 23, 7, 0, 0, 24, 7, 0, 0, 25, 7, 0, 0, 26, 7, 0, 0, 27, 7, 0, 0, 28, 7, 0, 0, 29, 7, - 0, 0, 30, 7, 0, 0, 31, 7, 0, 0, 32, 7, 0, 0, 33, 7, 0, 0, 34, 7, 0, 0, 35, 7, 0, 0, 36, 7, 0, 0, 37, 7, - 0, 0, 38, 7, 0, 0, 39, 7, 0, 0, 40, 7, 0, 0, 41, 7, 0, 0, 42, 7, 0, 0, 43, 7, 0, 0, 44, 7, 0, 0, 45, 7, - 0, 0, 46, 7, 0, 0, 47, 7, 0, 0, 48, 7, 0, 0, 49, 7, 0, 0, 50, 7, 0, 0, 51, 7, 0, 0, 52, 7, 0, 0, 53, 7, - 0, 0, 54, 7, 0, 0, 55, 7, 0, 0, 56, 7, 0, 0, 57, 7, 0, 0, 58, 7, 0, 0, 59, 7, 0, 0, 60, 7, 0, 0, 61, 7, - 0, 0, 62, 7, 0, 0, 63, 7, 0, 0, 64, 7, 0, 0, 65, 7, 0, 0, 66, 7, 0, 0, 67, 7, 0, 0, 68, 7, 0, 0, 69, 7, - 0, 0, 70, 7, 0, 0, 71, 7, 0, 0, 72, 7, 0, 0, 73, 7, 0, 0, 74, 7, 0, 0, 75, 7, 0, 0, 76, 7, 0, 0, 77, 7, - 0, 0, 78, 7, 0, 0, 79, 7, 0, 0, 80, 7, 0, 0, 81, 7, 0, 0, 82, 7, 0, 0, 83, 7, 0, 0, 84, 7, 0, 0, 85, 7, - 0, 0, 86, 7, 0, 0, 87, 7, 0, 0, 88, 7, 0, 0, 89, 7, 0, 0, 90, 7, 0, 0, 91, 7, 0, 0, 92, 7, 0, 0, 93, 7, - 0, 0, 94, 7, 0, 0, 95, 7, 0, 0, 96, 7, 0, 0, 97, 7, 0, 0, 98, 7,254, 0, 5, 0, 0, 0, 99, 7, 0, 0, 32, 7, - 0, 0, 34, 7, 2, 0, 19, 0, 2, 0, 37, 0,255, 0, 25, 0,255, 0, 0, 0,255, 0, 1, 0, 0, 0, 20, 0,252, 0,100, 7, -253, 0,101, 7,253, 0,102, 7,253, 0,103, 7,253, 0,104, 7,253, 0,105, 7,253, 0,106, 7,253, 0,107, 7,253, 0,108, 7, -253, 0,109, 7,253, 0,110, 7,253, 0,111, 7,253, 0,112, 7,253, 0,113, 7,253, 0,114, 7,253, 0,115, 7,253, 0,116, 7, -253, 0,117, 7,253, 0,118, 7,254, 0,119, 7, 4, 0,120, 7, 4, 0, 37, 0, 0, 1, 3, 0, 0, 1, 0, 0, 0, 1, 1, 0, - 0, 0,121, 7, 1, 1, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,128, 2, 7, 0,122, 7, 7, 0, 32, 2, 2, 1, 88, 0, - 4, 0, 19, 0, 4, 0,123, 7, 4, 0,124, 7, 0, 0,125, 7, 0, 0,126, 7, 0, 0,127, 7, 0, 0,128, 7, 0, 0,129, 7, - 0, 0,130, 7, 0, 0,131, 7, 0, 0,132, 7, 0, 0,133, 7, 0, 0,134, 7, 4, 0,135, 7, 2, 0,136, 7, 2, 0,137, 7, - 2, 0,138, 7, 2, 0,139, 7, 4, 0,140, 7, 4, 0,141, 7, 4, 0,142, 7, 4, 0,143, 7, 2, 0,144, 7, 2, 0,145, 7, - 4, 0,146, 7, 4, 0,147, 7, 4, 0,148, 7, 4, 0,149, 7, 4, 0,150, 7, 4, 0,195, 6, 4, 0,151, 7, 2, 0,152, 7, - 2, 0,153, 7, 2, 0,154, 7, 2, 0,155, 7, 12, 0,156, 7, 12, 0,157, 7, 12, 0,158, 7, 12, 0,159, 7, 12, 0,160, 7, - 0, 0,161, 7, 2, 0,162, 7, 2, 0,163, 7, 2, 0,164, 7, 2, 0,165, 7, 2, 0,166, 7, 2, 0,167, 7, 2, 0,168, 7, - 2, 0,169, 7, 1, 1,170, 7, 2, 0,171, 7, 2, 0,172, 7, 2, 0,173, 7, 2, 0,174, 7, 2, 0,175, 7, 2, 0,176, 7, - 2, 0,177, 7, 2, 0,178, 7, 4, 0,179, 7, 4, 0,180, 7, 2, 0,181, 7, 2, 0,182, 7, 2, 0,183, 7, 2, 0,184, 7, - 2, 0,185, 7, 2, 0,186, 7, 2, 0,187, 7, 2, 0,188, 7, 2, 0,189, 7, 2, 0,190, 7, 2, 0,191, 7, 2, 0,192, 7, - 2, 0,193, 7, 2, 0,194, 7, 2, 0,195, 7, 2, 0,196, 7, 2, 0,197, 7, 2, 0,179, 4, 0, 0,198, 7, 0, 0,199, 7, - 7, 0,200, 7, 2, 0,161, 5, 2, 0,162, 5, 55, 0,201, 7, 4, 0,202, 7, 7, 0,203, 7, 7, 0,204, 7, 7, 0,205, 7, -219, 0, 21, 0, 27, 0, 31, 0, 12, 0,206, 7, 12, 0,207, 7, 12, 0,208, 7, 12, 0, 19, 6, 46, 0,129, 0, 46, 0,209, 7, - 2, 0,210, 7, 2, 0,211, 7, 2, 0,212, 7, 2, 0,213, 7, 2, 0,214, 7, 2, 0,215, 7, 2, 0,216, 7, 2, 0,217, 7, - 2, 0,218, 7, 2, 0,219, 7, 4, 0,220, 7,214, 0,221, 7, 9, 0,222, 7, 2, 0,223, 7, 3, 1, 5, 0, 3, 1, 0, 0, - 3, 1, 1, 0, 3, 1,224, 7, 13, 0,225, 7, 4, 0, 19, 0, 4, 1, 7, 0, 4, 1, 0, 0, 4, 1, 1, 0, 3, 1,226, 7, - 3, 1,227, 7, 2, 0, 28, 5, 2, 0, 19, 0, 4, 0, 37, 0, 5, 1, 25, 0, 5, 1, 0, 0, 5, 1, 1, 0, 6, 1,228, 7, - 7, 1,106, 6, 0, 0,229, 7, 0, 0,230, 7, 0, 0,231, 7, 2, 0,232, 7, 2, 0,233, 7, 2, 0,234, 7, 2, 0,235, 7, - 2, 0,236, 7, 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,237, 7, 2, 0,238, 7, 2, 0,239, 7, 4, 0,240, 7, 5, 1,241, 7, - 9, 0,242, 7, 4, 0,243, 7, 4, 0,244, 7, 4, 0,245, 7, 4, 0,246, 7, 0, 0,247, 7, 8, 1, 22, 0, 8, 1, 0, 0, - 8, 1, 1, 0, 3, 1,226, 7, 3, 1,227, 7, 3, 1,248, 7, 3, 1,249, 7,219, 0,250, 7, 23, 0, 51, 0, 0, 0, 20, 6, - 0, 0,251, 7, 2, 0, 63, 6, 2, 0, 64, 6, 2, 0,252, 7, 2, 0, 37, 0, 2, 0,213, 7, 2, 0,193, 6, 2, 0, 19, 0, - 9, 1,228, 7, 12, 0,253, 7, 12, 0, 19, 6, 12, 0,254, 7, 12, 0,255, 7, 10, 1, 24, 0, 10, 1, 0, 0, 10, 1, 1, 0, -217, 0, 71, 6, 23, 0, 0, 8, 23, 0, 1, 8, 2, 0, 63, 6, 2, 0, 64, 6, 2, 0, 2, 8, 2, 0, 3, 8, 2, 0, 4, 8, - 2, 0, 19, 0, 7, 0, 75, 2, 2, 0,234, 7, 2, 0,235, 7, 2, 0,212, 7, 2, 0, 5, 8, 2, 0,217, 7, 2, 0,179, 4, - 11, 1,228, 7, 12, 0, 6, 8, 12, 0, 7, 8, 12, 0,254, 7, 0, 0, 8, 8, 9, 0, 9, 8, 12, 1, 12, 0, 0, 0, 10, 8, - 2, 0, 11, 8, 2, 0, 12, 8, 2, 0, 13, 8, 2, 0, 14, 8, 2, 0, 15, 5, 2, 0, 10, 5,219, 0, 15, 8, 46, 0, 16, 8, - 4, 0, 17, 8, 4, 0, 18, 8, 0, 0, 19, 8, 13, 1, 1, 0, 0, 0, 20, 8, 14, 1, 8, 0, 57, 0, 21, 8, 57, 0, 22, 8, - 14, 1, 23, 8, 14, 1, 24, 8, 14, 1, 25, 8, 2, 0,124, 0, 2, 0, 19, 0, 4, 0, 26, 8, 15, 1, 4, 0, 4, 0,133, 6, - 4, 0, 27, 8, 4, 0,138, 6, 4, 0, 28, 8, 16, 1, 2, 0, 4, 0, 29, 8, 4, 0, 30, 8, 17, 1, 5, 0, 7, 0, 31, 8, - 7, 0, 32, 8, 7, 0, 33, 8, 4, 0, 19, 0, 4, 0, 37, 0, 18, 1, 6, 0, 0, 0, 34, 8, 0, 0, 90, 6, 49, 0,132, 0, - 2, 0,106, 0, 2, 0, 14, 5, 4, 0, 37, 0, 19, 1, 21, 0, 19, 1, 0, 0, 19, 1, 1, 0, 4, 0, 56, 0, 4, 0, 23, 0, - 4, 0, 28, 0, 4, 0, 35, 8, 4, 0, 36, 8, 4, 0, 37, 8, 13, 1, 38, 8, 0, 0, 34, 8, 4, 0, 39, 8, 4, 0, 40, 8, - 18, 1, 91, 3, 15, 1, 41, 8, 16, 1, 42, 8, 17, 1, 43, 8, 14, 1, 44, 8, 14, 1, 45, 8, 14, 1, 46, 8, 57, 0, 47, 8, - 57, 0, 48, 8, 20, 1, 12, 0, 0, 0,250, 1, 9, 0,220, 0, 0, 0,221, 0, 4, 0,224, 0, 4, 0,232, 0, 9, 0,225, 0, - 7, 0,227, 0, 7, 0,228, 0, 9, 0, 49, 8, 9, 0, 50, 8, 9, 0,229, 0, 9, 0,231, 0, 21, 1, 48, 0, 21, 1, 0, 0, - 21, 1, 1, 0, 9, 0, 51, 8, 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 19, 0, 4, 0, 17, 0, 4, 0, 23, 0, 4, 0, 87, 0, - 4, 0, 52, 8, 4, 0, 53, 8, 4, 0, 36, 8, 4, 0, 37, 8, 4, 0, 54, 8, 4, 0,243, 0, 4, 0, 55, 8, 4, 0, 56, 8, - 7, 0, 57, 8, 7, 0, 37, 0, 7, 0, 58, 8, 7, 0, 59, 8, 4, 0,121, 0, 4, 0, 60, 8, 19, 1, 61, 8, 36, 0, 79, 0, - 46, 0,129, 0, 32, 0, 62, 8, 49, 0,132, 0, 7, 0, 63, 8, 7, 0, 64, 8, 20, 1, 59, 1, 21, 1, 65, 8, 21, 1, 66, 8, - 21, 1, 67, 8, 12, 0, 68, 8, 22, 1, 69, 8, 9, 0, 70, 8, 7, 0,249, 3, 7, 0, 71, 8, 7, 0, 72, 8, 4, 0, 73, 8, - 4, 0, 74, 8, 7, 0, 75, 8, 9, 0, 76, 8, 4, 0, 77, 8, 4, 0, 78, 8, 4, 0, 79, 8, 7, 0, 80, 8, 23, 1, 4, 0, - 23, 1, 0, 0, 23, 1, 1, 0, 12, 0, 81, 8, 21, 1, 82, 8,205, 0, 11, 0, 12, 0, 83, 8, 12, 0, 68, 8, 12, 0, 84, 8, - 21, 1, 85, 8, 0, 0, 86, 8, 0, 0, 87, 8, 4, 0, 88, 8, 4, 0, 89, 8, 4, 0, 90, 8, 4, 0, 37, 0, 24, 0, 91, 8, - 24, 1, 4, 0, 7, 0, 92, 8, 7, 0, 65, 3, 2, 0, 93, 8, 2, 0, 94, 8, 25, 1, 6, 0, 7, 0, 95, 8, 7, 0, 96, 8, - 7, 0, 97, 8, 7, 0, 98, 8, 4, 0, 99, 8, 4, 0,100, 8, 26, 1, 13, 0, 7, 0,101, 8, 7, 0,102, 8, 7, 0,103, 8, - 7, 0,104, 8, 7, 0,105, 8, 7, 0,106, 8, 7, 0,107, 8, 7, 0,108, 8, 7, 0,109, 8, 7, 0,110, 8, 4, 0,226, 2, - 4, 0,111, 8, 4, 0,112, 8, 27, 1, 2, 0, 7, 0, 87, 5, 7, 0, 37, 0, 28, 1, 5, 0, 7, 0,113, 8, 7, 0,114, 8, - 4, 0, 90, 0, 4, 0,182, 2, 4, 0,115, 8, 29, 1, 6, 0, 29, 1, 0, 0, 29, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, - 2, 0,116, 8, 2, 0, 56, 0, 30, 1, 8, 0, 30, 1, 0, 0, 30, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,116, 8, - 2, 0, 56, 0, 7, 0, 23, 0, 7, 0,121, 0, 31, 1, 45, 0, 31, 1, 0, 0, 31, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, - 2, 0,116, 8, 2, 0,239, 0, 2, 0, 35, 4, 2, 0,117, 8, 7, 0,118, 8, 7, 0, 88, 0, 7, 0,239, 2, 4, 0,119, 8, - 4, 0, 81, 0, 4, 0,184, 2, 7, 0,120, 8, 7, 0,121, 8, 7, 0,122, 8, 7, 0,123, 8, 7, 0,124, 8, 7, 0,125, 8, - 7, 0,236, 2, 7, 0, 56, 1, 7, 0,126, 8, 7, 0,127, 8, 7, 0, 37, 0, 7, 0,128, 8, 7, 0,129, 8, 7, 0,130, 8, - 2, 0,131, 8, 2, 0,132, 8, 2, 0,133, 8, 2, 0,134, 8, 2, 0,135, 8, 2, 0,136, 8, 2, 0,137, 8, 2, 0,138, 8, - 2, 0, 17, 2, 2, 0,139, 8, 2, 0, 14, 2, 2, 0,140, 8, 0, 0,141, 8, 0, 0,142, 8, 7, 0,237, 0, 32, 1,143, 8, - 67, 0,229, 1, 33, 1, 16, 0, 33, 1, 0, 0, 33, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,116, 8, 2, 0,239, 0, - 7, 0,231, 2, 7, 0,232, 2, 7, 0,233, 2, 7, 0, 64, 2, 7, 0,234, 2, 7, 0,235, 2, 7, 0,144, 8, 7, 0,236, 2, - 7, 0,238, 2, 7, 0,239, 2,231, 0, 5, 0, 2, 0, 17, 0, 2, 0, 26, 8, 2, 0, 19, 0, 2, 0,145, 8, 27, 0,165, 6, -230, 0, 3, 0, 4, 0, 68, 0, 4, 0,146, 8,231, 0, 2, 0, 34, 1, 7, 0, 34, 1, 0, 0, 34, 1, 1, 0, 0, 0, 20, 0, - 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, 9, 0,147, 8, 35, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0,148, 8, - 4, 0,149, 8, 4, 0, 37, 0, 36, 1, 4, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 89, 0, 2, 0, 69, 0, 37, 1, 4, 0, - 0, 0, 20, 0, 66, 0,150, 8, 7, 0, 76, 1, 7, 0, 37, 0, 38, 1, 6, 0, 2, 0,151, 8, 2, 0,152, 8, 2, 0, 17, 0, - 2, 0,153, 8, 0, 0,154, 8, 0, 0,155, 8, 39, 1, 5, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0,156, 8, - 0, 0,157, 8, 40, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 41, 1, 4, 0, 2, 0,158, 8, 2, 0,159, 8, - 2, 0, 19, 0, 2, 0, 37, 0, 42, 1, 6, 0, 0, 0, 20, 0, 0, 0,160, 8, 2, 0,161, 8, 2, 0,236, 2, 2, 0, 69, 1, - 2, 0, 69, 0, 43, 1, 5, 0, 0, 0, 20, 0, 7, 0, 65, 3, 7, 0,129, 4, 2, 0, 19, 0, 2, 0,196, 2, 44, 1, 3, 0, - 0, 0, 20, 0, 4, 0,184, 2, 4, 0,158, 8, 45, 1, 7, 0, 0, 0, 20, 0, 7, 0,129, 4, 0, 0,162, 8, 0, 0,163, 8, - 2, 0, 69, 1, 2, 0, 89, 0, 4, 0,164, 8, 46, 1, 4, 0, 0, 0,165, 8, 0, 0,166, 8, 4, 0, 17, 0, 7, 0,200, 2, - 47, 1, 3, 0, 32, 0,167, 8, 0, 0,168, 8, 0, 0,169, 8, 48, 1, 18, 0, 48, 1, 0, 0, 48, 1, 1, 0, 2, 0, 17, 0, - 2, 0,170, 8, 2, 0, 19, 0, 2, 0,171, 8, 2, 0,172, 8, 2, 0,173, 8, 2, 0, 89, 0, 2, 0, 69, 0, 0, 0, 20, 0, - 9, 0, 2, 0, 49, 1,174, 8, 32, 0, 44, 0, 2, 0,105, 5, 2, 0, 71, 8, 2, 0,175, 8, 2, 0, 37, 0, 50, 1, 11, 0, - 0, 0, 20, 0, 0, 0, 17, 0, 0, 0,176, 8, 2, 0, 19, 0, 2, 0,196, 2, 2, 0,177, 8, 4, 0,178, 8, 4, 0,179, 8, - 4, 0,180, 8, 4, 0,181, 8, 4, 0,182, 8, 51, 1, 1, 0, 0, 0,183, 8, 52, 1, 4, 0, 42, 0,132, 6, 0, 0,121, 7, - 4, 0, 69, 1, 4, 0, 19, 0, 49, 1, 18, 0, 49, 1, 0, 0, 49, 1, 1, 0, 49, 1,184, 8, 2, 0, 17, 0, 2, 0, 19, 0, - 2, 0,185, 8, 2, 0,173, 8, 2, 0,170, 8, 2, 0,186, 8, 2, 0, 69, 0, 2, 0,226, 1, 0, 0, 20, 0, 9, 0, 2, 0, - 53, 1,174, 8, 48, 1,187, 8, 2, 0, 15, 0, 2, 0,188, 8, 4, 0,189, 8, 54, 1, 3, 0, 4, 0,210, 2, 4, 0, 37, 0, - 32, 0, 44, 0, 55, 1, 12, 0,161, 0,190, 8, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,118, 8, 4, 0, 88, 0, 0, 0, 20, 0, - 0, 0,191, 8, 2, 0,192, 8, 2, 0,193, 8, 2, 0,194, 8, 2, 0,195, 8, 7, 0,196, 8, 56, 1, 13, 0, 2, 0, 19, 0, - 2, 0,197, 8, 4, 0, 89, 0, 4, 0, 69, 0, 2, 0,198, 8, 7, 0,249, 3, 7, 0,199, 8, 22, 1, 69, 8, 57, 1,200, 8, - 2, 0, 17, 0, 2, 0,248, 1, 2, 0,233, 5, 2, 0,201, 8, 58, 1, 11, 0, 4, 0,210, 2, 2, 0, 17, 0, 2, 0, 19, 0, - 32, 0, 44, 0, 80, 0,202, 8, 0, 0, 20, 0, 7, 0,203, 8, 7, 0,204, 8, 7, 0,134, 3, 2, 0,205, 8, 2, 0,206, 8, - 59, 1, 5, 0, 2, 0, 17, 0, 2, 0, 89, 0, 4, 0, 37, 0, 46, 0,129, 0, 32, 0, 94, 5, 60, 1, 5, 0, 4, 0, 37, 0, - 4, 0, 17, 0, 0, 0, 20, 0, 0, 0,156, 8, 32, 0, 44, 0, 61, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,170, 8, - 2, 0,135, 3, 7, 0,207, 8, 7, 0,208, 8, 7, 0,179, 4, 7, 0,147, 3, 7, 0,106, 3, 7, 0,109, 3, 7, 0,209, 8, - 7, 0,210, 8, 32, 0,211, 8, 62, 1, 10, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,118, 8, 4, 0, 88, 0, 0, 0, 20, 0, - 0, 0,191, 8, 2, 0, 89, 0, 2, 0, 69, 0, 2, 0,226, 1, 2, 0,248, 1, 63, 1, 8, 0, 32, 0, 44, 0, 7, 0,233, 2, - 7, 0,212, 8, 7, 0,213, 8, 7, 0, 37, 0, 2, 0, 89, 0, 2, 0,196, 2, 7, 0, 69, 0, 64, 1, 12, 0, 2, 0, 17, 0, - 2, 0, 69, 1, 2, 0, 19, 0, 2, 0,236, 2, 2, 0,210, 2, 2, 0,214, 8, 4, 0, 37, 0, 7, 0,215, 8, 7, 0,216, 8, - 7, 0,217, 8, 7, 0,218, 8, 0, 0,219, 8, 65, 1, 9, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,118, 8, 4, 0, 88, 0, - 0, 0, 20, 0, 2, 0,179, 4, 2, 0, 63, 0, 2, 0,220, 8, 2, 0,221, 8, 66, 1, 7, 0, 4, 0,184, 2, 4, 0,222, 8, - 4, 0,223, 8, 4, 0,224, 8, 7, 0,225, 8, 7, 0,226, 8, 0, 0,162, 8, 67, 1, 7, 0, 0, 0,227, 8, 32, 0,228, 8, - 0, 0,168, 8, 2, 0,229, 8, 2, 0, 89, 0, 4, 0, 69, 0, 0, 0,169, 8, 68, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, - 4, 0,118, 8, 4, 0, 88, 0, 0, 0,230, 8, 0, 0,231, 8, 69, 1, 1, 0, 4, 0, 19, 0, 70, 1, 6, 0, 0, 0, 92, 0, - 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,232, 8, 7, 0,233, 8, 42, 0,132, 6, 71, 1, 4, 0, 0, 0, 59, 2, 2, 0, 19, 0, - 4, 0, 17, 0, 32, 0, 44, 0, 72, 1, 2, 0, 4, 0, 17, 0, 4, 0, 52, 6, 73, 1, 6, 0, 0, 0,165, 8, 0, 0,166, 8, - 4, 0, 17, 0, 7, 0, 25, 2, 32, 0, 44, 3, 32, 0,234, 8, 53, 1, 10, 0, 53, 1, 0, 0, 53, 1, 1, 0, 53, 1,184, 8, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,170, 8, 2, 0,235, 8, 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 44, 0, 74, 1, 10, 0, - 7, 0,134, 3, 7, 0,236, 8, 7, 0,237, 8, 7, 0,238, 8, 7, 0,239, 8, 4, 0, 19, 0, 7, 0,214, 8, 7, 0,240, 8, - 7, 0,241, 8, 7, 0, 37, 0, 57, 1, 8, 0, 7, 0,242, 8, 7, 0,243, 8, 7, 0,244, 8, 7, 0,245, 8, 7, 0,246, 8, - 7, 0,247, 8, 7, 0,248, 8, 7, 0,249, 8, 22, 1, 16, 0, 27, 0, 31, 0, 0, 0, 34, 0, 43, 0,147, 0, 9, 0,220, 0, - 43, 0,250, 8, 36, 0, 79, 0, 7, 0,249, 3, 7, 0,251, 8, 7, 0,199, 8, 7, 0,242, 8, 7, 0,243, 8, 7, 0,252, 8, - 4, 0, 90, 0, 4, 0, 37, 0, 9, 0,253, 8, 9, 0,254, 8, 75, 1, 15, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, - 4, 0, 20, 6, 7, 0, 21, 6, 8, 1,255, 8,217, 0, 71, 6, 22, 1, 69, 8, 2, 0, 69, 1, 2, 0,197, 8, 2, 0, 79, 2, - 2, 0, 80, 2, 2, 0, 19, 0, 2, 0,122, 6, 4, 0, 69, 0, 76, 1, 6, 0, 76, 1, 0, 0, 76, 1, 1, 0, 32, 0, 44, 0, - 9, 0, 0, 9, 4, 0,244, 0, 4, 0, 37, 0, 67, 0, 4, 0, 27, 0, 31, 0, 12, 0, 1, 9, 4, 0,126, 0, 7, 0, 2, 9, - 77, 1, 27, 0, 77, 1, 0, 0, 77, 1, 1, 0, 26, 0, 3, 9, 77, 1, 38, 0, 12, 0, 4, 9, 0, 0, 20, 0, 7, 0, 5, 9, - 7, 0, 6, 9, 7, 0, 7, 9, 7, 0, 8, 9, 4, 0, 19, 0, 7, 0, 9, 9, 7, 0, 10, 9, 7, 0, 11, 9, 7, 0, 76, 1, - 7, 0, 25, 2, 7, 0, 12, 9, 7, 0,182, 2, 7, 0, 13, 9, 7, 0, 14, 9, 7, 0, 15, 9, 7, 0, 16, 9, 7, 0, 17, 9, - 7, 0,169, 0, 4, 0,126, 0, 2, 0,142, 5, 2, 0,179, 4, 78, 1, 25, 0, 27, 0, 31, 0, 39, 0, 74, 0, 12, 0, 18, 9, - 12, 0, 19, 9, 12, 0, 20, 9, 77, 1, 21, 9, 9, 0, 22, 9, 9, 0, 23, 9, 4, 0, 19, 0, 4, 0, 28, 6, 2, 0,240, 2, - 2, 0, 81, 6, 4, 0, 37, 0, 4, 0,126, 0, 4, 0, 24, 9, 2, 0, 25, 9, 2, 0, 26, 9, 2, 0, 27, 9, 2, 0, 28, 9, - 4, 0, 29, 9, 4, 0, 30, 9, 4, 0, 31, 9, 4, 0, 32, 9, 4, 0, 33, 9, 4, 0, 34, 9, 79, 1, 2, 0, 7, 0,142, 2, - 4, 0, 19, 0,165, 0, 5, 0, 79, 1, 35, 9, 4, 0,182, 2, 4, 0, 36, 9, 4, 0, 37, 9, 4, 0, 19, 0,164, 0, 16, 0, - 4, 0, 38, 9, 4, 0, 39, 9, 4, 0, 40, 9, 4, 0, 41, 9, 2, 0, 42, 9, 2, 0, 43, 9, 2, 0, 44, 9, 2, 0,244, 0, - 2, 0, 45, 9, 2, 0, 46, 9, 2, 0, 47, 9, 2, 0, 48, 9, 4, 0, 49, 9, 4, 0, 50, 9, 4, 0, 51, 9, 4, 0, 52, 9, - 80, 1, 44, 0, 80, 1, 0, 0, 80, 1, 1, 0, 26, 0, 3, 9, 12, 0,161, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0, 53, 9, - 2, 0, 54, 9, 2, 0, 55, 9, 2, 0,120, 3, 2, 0, 56, 9, 4, 0, 62, 2, 4, 0, 31, 9, 4, 0, 32, 9, 77, 1, 57, 9, - 80, 1, 38, 0, 80, 1, 58, 9, 12, 0, 59, 9, 9, 0, 60, 9, 9, 0, 61, 9, 9, 0, 62, 9, 7, 0, 64, 1, 7, 0,169, 0, - 7, 0, 63, 9, 7, 0, 4, 2, 7, 0,111, 3, 7, 0,113, 3, 2, 0,143, 3, 2, 0, 37, 0, 7, 0, 64, 9, 7, 0, 65, 9, - 7, 0,116, 3, 7, 0, 66, 9, 7, 0, 67, 9, 7, 0, 68, 9, 7, 0, 69, 9, 7, 0, 70, 9, 7, 0, 71, 9, 7, 0, 72, 9, - 7, 0, 73, 9, 7, 0, 54, 2,165, 0, 99, 3, 32, 0, 74, 9, 80, 1, 75, 9,162, 0, 14, 0, 12, 0, 76, 9, 81, 1, 77, 9, - 2, 0, 19, 0, 2, 0, 78, 9, 7, 0, 91, 2, 7, 0, 79, 9, 7, 0, 80, 9, 12, 0, 81, 9, 4, 0, 82, 9, 4, 0, 83, 9, - 9, 0, 84, 9, 9, 0, 85, 9,164, 0, 98, 3, 0, 0, 86, 9, 82, 1, 1, 0, 4, 0, 83, 9, 83, 1, 12, 0, 4, 0, 83, 9, - 7, 0,182, 8, 2, 0, 87, 9, 2, 0, 88, 9, 7, 0, 89, 9, 7, 0, 90, 9, 2, 0, 91, 9, 2, 0, 19, 0, 7, 0, 92, 9, - 7, 0, 93, 9, 7, 0, 94, 9, 7, 0, 95, 9, 84, 1, 7, 0, 84, 1, 0, 0, 84, 1, 1, 0, 12, 0, 96, 9, 4, 0, 19, 0, - 4, 0, 97, 9, 0, 0,240, 3,254, 0, 98, 9,161, 0, 7, 0, 27, 0, 31, 0, 12, 0, 99, 9, 12, 0, 76, 9, 12, 0,100, 9, - 12, 0,100, 0, 4, 0, 19, 0, 4, 0,101, 9,221, 0, 5, 0, 27, 0,102, 9, 12, 0, 76, 9, 67, 0,103, 9, 4, 0,104, 9, - 4, 0, 19, 0, 85, 1, 13, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, -217, 0, 71, 6,161, 0, 94, 3,221, 0,105, 9, 0, 0, 69, 1, 0, 0, 74, 6, 2, 0, 19, 0, 7, 0,106, 9, 86, 1, 8, 0, - 86, 1, 0, 0, 86, 1, 1, 0, 84, 1,107, 9, 36, 0, 79, 0, 12, 0,100, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0,108, 9, - 87, 1, 5, 0, 87, 1, 0, 0, 87, 1, 1, 0, 36, 0, 79, 0, 2, 0, 19, 0, 0, 0,109, 9, 88, 1, 14, 0, 88, 1, 0, 0, - 88, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0,110, 9, 0, 0,111, 9, 0, 0,109, 9, 7, 0,112, 9, - 7, 0,113, 9, 4, 0, 37, 0, 36, 0, 79, 0, 7, 0,114, 9, 7, 0,115, 9, 89, 1, 9, 0, 89, 1, 0, 0, 89, 1, 1, 0, - 32, 0,116, 9, 0, 0,243, 2, 7, 0,117, 9, 2, 0,118, 9, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,119, 9, 90, 1, 7, 0, - 42, 0,132, 6, 26, 0, 3, 9, 4, 0, 19, 0, 4, 0,120, 9, 12, 0,121, 9, 32, 0,116, 9, 0, 0,243, 2, 91, 1, 15, 0, - 32, 0,116, 9, 2, 0,122, 9, 2, 0, 19, 0, 2, 0,123, 9, 2, 0,124, 9, 0, 0,243, 2, 32, 0,125, 9, 0, 0,126, 9, - 7, 0,127, 9, 7, 0, 25, 2, 7, 0,128, 9, 7, 0,129, 9, 2, 0, 17, 0, 2, 0, 69, 1, 7, 0, 76, 1, 92, 1, 6, 0, - 32, 0,116, 9, 7, 0, 35, 9, 2, 0,130, 9, 2, 0,131, 9, 2, 0, 19, 0, 2, 0,132, 9, 93, 1, 6, 0, 32, 0,116, 9, - 4, 0,133, 9, 4, 0,134, 9, 4, 0, 90, 0, 4, 0, 37, 0, 0, 0,243, 2, 94, 1, 4, 0, 32, 0,116, 9, 4, 0, 19, 0, - 4, 0,133, 9, 0, 0,243, 2, 95, 1, 4, 0, 32, 0,116, 9, 4, 0, 19, 0, 4, 0,133, 9, 0, 0,243, 2, 96, 1, 4, 0, - 32, 0,116, 9, 4, 0, 19, 0, 4, 0,133, 9, 0, 0,243, 2, 97, 1, 2, 0, 4, 0, 19, 0, 7, 0,249, 3, 98, 1, 2, 0, - 32, 0,116, 9, 0, 0,243, 2, 99, 1, 10, 0, 32, 0,116, 9, 4, 0,135, 9, 7, 0,120, 0, 4, 0, 19, 0, 2, 0,125, 6, - 2, 0,136, 9, 2, 0, 89, 0, 2, 0, 69, 0, 7, 0,137, 9, 0, 0,243, 2,100, 1, 10, 0, 32, 0,116, 9, 2, 0, 17, 0, - 2, 0, 43, 4, 4, 0, 87, 0, 4, 0, 88, 0, 7, 0,212, 8, 7, 0,213, 8, 4, 0, 37, 0,161, 0,190, 8, 0, 0,243, 2, -101, 1, 4, 0, 32, 0,116, 9, 4, 0,121, 3, 4, 0,138, 9, 0, 0,243, 2,102, 1, 4, 0, 32, 0,116, 9, 4, 0,121, 3, - 4, 0, 37, 0, 0, 0,243, 2,103, 1, 6, 0, 32, 0,116, 9, 7, 0,120, 0, 7, 0, 56, 3, 4, 0,139, 9, 2, 0,121, 3, - 2, 0,122, 3,104, 1, 6, 0, 32, 0,116, 9, 4, 0,140, 9, 4, 0,141, 9, 7, 0,142, 9, 7, 0,143, 9, 0, 0,243, 2, -105, 1, 16, 0, 32, 0,116, 9, 32, 0, 58, 9, 4, 0, 17, 0, 7, 0,144, 9, 7, 0,145, 9, 7, 0,146, 9, 7, 0,147, 9, - 7, 0,148, 9, 7, 0,149, 9, 7, 0,150, 9, 7, 0,151, 9, 7, 0,152, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 89, 0, - 2, 0, 69, 0,106, 1, 3, 0, 32, 0,116, 9, 4, 0, 19, 0, 4, 0, 17, 2,107, 1, 5, 0, 32, 0,116, 9, 4, 0, 19, 0, - 4, 0, 37, 0, 7, 0,153, 9, 0, 0,243, 2,108, 1, 10, 0, 32, 0,116, 9, 0, 0,243, 2, 2, 0,154, 9, 2, 0,155, 9, - 0, 0,156, 9, 0, 0,157, 9, 7, 0,158, 9, 7, 0,159, 9, 7, 0,160, 9, 7, 0,161, 9,109, 1, 5, 0, 32, 0,116, 9, - 0, 0,243, 2, 7, 0,190, 2, 2, 0,162, 9, 2, 0, 19, 0,110, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, - 7, 0, 12, 0, 7, 0,163, 9, 7, 0,164, 9, 2, 0, 19, 0, 2, 0, 17, 2,111, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, - 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,163, 9, 7, 0,164, 9, 2, 0, 19, 0, 2, 0, 17, 2,112, 1, 8, 0, 7, 0, 9, 0, - 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,163, 9, 7, 0,164, 9, 2, 0, 19, 0, 2, 0, 17, 2,113, 1, 7, 0, - 32, 0,116, 9, 0, 0,243, 2, 7, 0, 76, 1, 7, 0, 85, 1, 2, 0, 19, 0, 2, 0, 69, 1, 4, 0, 37, 0,114, 1, 5, 0, - 32, 0, 44, 3, 7, 0, 76, 1, 2, 0, 48, 3, 0, 0, 50, 3, 0, 0,165, 9,115, 1, 10, 0,115, 1, 0, 0,115, 1, 1, 0, - 2, 0, 17, 0, 2, 0, 19, 0, 0, 0,166, 9, 7, 0, 19, 1, 7, 0, 20, 1, 2, 0, 96, 9, 2, 0,167, 9, 32, 0, 44, 0, -116, 1, 22, 0,116, 1, 0, 0,116, 1, 1, 0, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0,168, 9, 2, 0,169, 9, 36, 0, 79, 0, -161, 0,190, 8, 32, 0,161, 0, 7, 0, 87, 0, 7, 0, 88, 0, 7, 0,170, 9, 7, 0,171, 9, 7, 0,172, 9, 7, 0,173, 9, - 7, 0,229, 2, 7, 0,174, 9, 7, 0,192, 8, 7, 0,175, 9, 0, 0,176, 9, 0, 0,177, 9, 12, 0,102, 3,117, 1, 8, 0, - 7, 0, 32, 2, 7, 0,212, 8, 7, 0,213, 8, 9, 0, 2, 0, 2, 0,178, 9, 2, 0,179, 9, 2, 0,180, 9, 2, 0,181, 9, -118, 1, 18, 0,118, 1, 0, 0,118, 1, 1, 0,118, 1,182, 9, 0, 0, 20, 0,117, 1,183, 9, 2, 0, 17, 0, 2, 0, 19, 0, - 2, 0,184, 9, 2, 0,185, 9, 2, 0,186, 9, 2, 0,187, 9, 4, 0, 89, 0, 7, 0,188, 9, 7, 0,189, 9, 4, 0,190, 9, - 4, 0,191, 9,118, 1,192, 9,119, 1,193, 9,120, 1, 33, 0,120, 1, 0, 0,120, 1, 1, 0,120, 1,194, 9, 0, 0, 20, 0, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 35, 8, 2, 0, 71, 8, 2, 0,195, 9, 2, 0,128, 0, 2, 0,185, 9, 2, 0, 26, 8, - 12, 0,185, 8, 12, 0,196, 9, 27, 0,165, 6, 9, 0,197, 9, 7, 0,188, 9, 7, 0,189, 9, 7, 0, 64, 2, 7, 0,198, 9, - 2, 0,199, 9, 2, 0,200, 9, 7, 0,201, 9, 7, 0,202, 9, 2, 0,203, 9, 2, 0,204, 9, 9, 0,205, 9, 24, 0,206, 9, - 24, 0,207, 9, 24, 0,208, 9,121, 1,148, 0,122, 1,209, 9,123, 1,210, 9,119, 1, 8, 0,119, 1, 0, 0,119, 1, 1, 0, -120, 1,211, 9,120, 1,212, 9,118, 1,213, 9,118, 1,192, 9, 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 22, 0, 27, 0, 31, 0, - 39, 0, 74, 0,163, 0, 97, 3, 12, 0,214, 9, 12, 0,215, 9,117, 1,216, 9, 12, 0,217, 9, 4, 0, 17, 0, 4, 0,218, 9, - 4, 0,219, 9, 4, 0,220, 9, 4, 0, 19, 0, 4, 0, 37, 0, 12, 0,221, 9,123, 1,222, 9, 4, 0,223, 9, 9, 0,224, 9, - 9, 0,225, 9, 4, 0,226, 9, 9, 0,227, 9, 9, 0,228, 9, 9, 0,229, 9,124, 1, 6, 0, 4, 0,119, 0, 4, 0,121, 0, - 4, 0, 26, 8, 0, 0,230, 9, 0, 0,231, 9, 2, 0, 37, 0,125, 1, 16, 0, 2, 0,234, 7, 2, 0,235, 7, 2, 0,232, 9, - 2, 0,237, 8, 2, 0,233, 9, 2, 0, 67, 0, 7, 0,228, 2, 7, 0,234, 9, 7, 0,235, 9, 2, 0, 91, 1, 0, 0,236, 9, - 0, 0,237, 9, 2, 0,238, 9, 2, 0, 37, 0, 4, 0,239, 9, 4, 0,240, 9,126, 1, 9, 0, 7, 0,241, 9, 7, 0,242, 9, - 7, 0,252, 8, 7, 0, 65, 3, 7, 0,243, 9, 7, 0, 87, 6, 2, 0, 63, 3, 0, 0,244, 9, 0, 0, 37, 0,127, 1, 4, 0, - 7, 0,245, 9, 7, 0,246, 9, 2, 0, 63, 3, 2, 0, 37, 0,128, 1, 3, 0, 7, 0,247, 9, 7, 0, 57, 8, 7, 0, 15, 0, -129, 1, 7, 0, 0, 0,250, 1, 2, 0, 12, 5, 2, 0, 13, 5, 2, 0, 14, 5, 2, 0,201, 4, 4, 0,121, 0, 4, 0, 41, 4, -130, 1, 9, 0, 7, 0,248, 9, 7, 0,249, 9, 7, 0,250, 9, 7, 0, 75, 2, 7, 0,251, 9, 7, 0,252, 9, 7, 0,253, 9, - 2, 0,254, 9, 2, 0,255, 9,131, 1, 4, 0, 2, 0, 0, 10, 2, 0, 1, 10, 2, 0, 2, 10, 2, 0, 3, 10,132, 1, 2, 0, - 7, 0, 5, 0, 7, 0, 6, 0,133, 1, 2, 0, 0, 0,163, 0, 0, 0, 4, 10,134, 1, 1, 0, 0, 0, 20, 0,135, 1, 10, 0, - 0, 0, 5, 10, 0, 0, 6, 10, 0, 0, 80, 6, 0, 0, 7, 10, 2, 0,232, 9, 2, 0, 8, 10, 7, 0, 9, 10, 7, 0, 10, 10, - 7, 0, 11, 10, 7, 0,174, 9,136, 1, 2, 0, 9, 0, 12, 10, 9, 0, 13, 10,137, 1, 11, 0, 0, 0, 14, 5, 0, 0, 17, 0, - 0, 0, 63, 3, 0, 0, 65, 3, 0, 0, 14, 10, 0, 0,106, 0, 0, 0, 59, 2, 7, 0, 15, 10, 7, 0, 16, 10, 7, 0, 17, 10, - 7, 0, 18, 10,138, 1, 8, 0, 7, 0,151, 8, 7, 0,120, 0, 7, 0,237, 9, 7, 0,147, 2, 7, 0, 19, 10, 7, 0,233, 0, - 7, 0, 20, 10, 4, 0, 17, 0,139, 1, 4, 0, 2, 0, 21, 10, 2, 0, 22, 10, 2, 0, 23, 10, 2, 0, 37, 0,140, 1, 7, 0, - 7, 0, 24, 10, 7, 0,190, 2, 7, 0, 25, 10, 7, 0, 31, 8, 7, 0, 32, 8, 7, 0, 33, 8, 7, 0, 26, 10,141, 1, 6, 0, - 2, 0, 27, 10, 2, 0, 28, 10, 7, 0, 29, 10, 7, 0, 30, 10, 7, 0, 31, 10, 7, 0, 32, 10,142, 1, 1, 0, 0, 0, 20, 0, -143, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 19, 0, 2, 0, 33, 10,144, 1, 10, 0, 2, 0,229, 3, 2, 0, 19, 0, - 7, 0,129, 4, 7, 0, 34, 10, 7, 0, 35, 10, 7, 0, 36, 10, 7, 0, 37, 10,143, 1, 38, 10,143, 1, 39, 10,143, 1, 40, 10, - 63, 0, 11, 0, 4, 0, 19, 0, 4, 0, 63, 0, 4, 0, 41, 10, 4, 0, 42, 10, 24, 0, 43, 10, 24, 0, 44, 10,144, 1, 45, 10, - 7, 0, 46, 10, 7, 0, 47, 10, 7, 0, 48, 10, 7, 0, 49, 10,234, 0, 10, 0, 4, 0, 96, 9, 4, 0, 50, 10, 7, 0, 51, 10, - 7, 0, 52, 10, 7, 0, 53, 10, 7, 0, 54, 10, 7, 0, 10, 0, 7, 0, 12, 0, 4, 0, 69, 1, 4, 0,233, 2,233, 0, 18, 0, - 4, 0,124, 0, 4, 0, 55, 10, 4, 0, 56, 10, 7, 0, 57, 10, 4, 0, 58, 10, 7, 0, 59, 10, 7, 0, 60, 10, 4, 0, 61, 10, - 7, 0, 62, 10, 4, 0, 63, 10, 7, 0, 64, 10,234, 0, 65, 10, 7, 0, 66, 10, 7, 0, 67, 10, 7, 0, 68, 10, 7, 0, 69, 10, - 4, 0, 70, 10, 4, 0, 37, 0,145, 1, 4, 0, 47, 0,220, 2, 7, 0, 71, 10, 7, 0,158, 1, 7, 0, 37, 0,194, 0, 31, 0, - 27, 0, 31, 0,145, 1, 72, 10, 63, 0, 38, 10, 51, 0, 73, 10, 47, 0, 74, 10, 7, 0, 75, 10, 2, 0,239, 5, 2, 0, 37, 0, - 4, 0,106, 0, 4, 0, 19, 0, 7, 0, 76, 10, 4, 0, 72, 2, 4, 0, 77, 10, 7, 0, 78, 10, 7, 0, 79, 10, 7, 0, 80, 10, - 7, 0,158, 1, 4, 0, 81, 10, 7, 0, 82, 10, 0, 0, 83, 10, 0, 0, 84, 10, 0, 0, 85, 10, 0, 0,226, 1, 7, 0, 86, 10, - 7, 0, 87, 10, 7, 0, 88, 10, 7, 0, 89, 10, 4, 0, 90, 10, 7, 0, 91, 10, 7, 0, 92, 10, 7, 0, 93, 10,146, 1, 10, 0, - 4, 0, 17, 0, 4, 0,120, 0, 4, 0, 19, 0, 4, 0,183, 3, 4, 0, 94, 10, 4, 0, 95, 10, 4, 0, 96, 10, 0, 0, 92, 0, - 0, 0, 20, 0, 9, 0, 2, 0,147, 1, 1, 0, 0, 0, 19, 8, 91, 0, 7, 0,146, 1, 97, 10, 4, 0, 98, 10, 4, 0, 99, 10, - 4, 0,100, 10, 4, 0, 37, 0, 9, 0,101, 10,147, 1,102, 10,148, 1, 5, 0, 7, 0,142, 2, 7, 0,210, 2, 7, 0, 25, 2, - 2, 0,118, 2, 2, 0, 37, 0,149, 1, 5, 0, 7, 0,142, 2, 7, 0,103, 10, 7, 0,104, 10, 7, 0,105, 10, 7, 0,210, 2, -150, 1, 5, 0, 32, 0,106, 10,151, 1, 22, 0, 7, 0,209, 5, 7, 0,107, 10, 7, 0, 56, 0,152, 1, 7, 0, 4, 0,108, 10, - 4, 0,109, 10, 4, 0,110, 10, 7, 0,111, 10, 7, 0,112, 10, 7, 0,113, 10, 7, 0, 56, 0,153, 1, 8, 0,153, 1, 0, 0, -153, 1, 1, 0, 32, 0, 44, 0, 4, 0,252, 0, 2, 0, 19, 0, 2, 0, 69, 1, 7, 0,210, 2, 7, 0,159, 8,154, 1, 6, 0, -154, 1, 0, 0,154, 1, 1, 0, 32, 0, 44, 0, 2, 0,195, 2, 2, 0, 19, 0, 2, 0,114, 10,155, 1, 17, 0,149, 1,177, 3, -149, 1,115, 10,148, 1,116, 10,149, 1,143, 8,150, 1,117, 10, 4, 0, 81, 0, 7, 0,210, 2, 7, 0,239, 2, 7, 0,118, 10, - 4, 0,108, 10, 4, 0,119, 10, 7, 0,112, 10, 7, 0,113, 10, 7, 0,106, 0, 4, 0,120, 10, 2, 0, 19, 0, 2, 0,121, 10, -156, 1, 9, 0, 7, 0,122, 10, 7, 0,248, 0, 7, 0,123, 10, 7, 0,124, 10, 7, 0,125, 10, 7, 0,126, 10, 7, 0,127, 10, - 7, 0,128, 10, 7, 0,129, 10,157, 1,111, 0, 27, 0, 31, 0, 39, 0, 74, 0,158, 1,130, 10,156, 1,131, 10,172, 0, 63, 4, - 4, 0, 19, 0, 2, 0, 17, 0, 2, 0,154, 9, 2, 0,132, 10, 2, 0,133, 10, 2, 0,143, 3, 2, 0,134, 10, 2, 0,135, 10, - 2, 0,136, 10, 2, 0,137, 10, 2, 0,138, 10, 2, 0,139, 10, 2, 0,140, 10, 2, 0,141, 10, 2, 0,113, 5, 2, 0,142, 10, - 2, 0,143, 10, 2, 0,144, 10, 2, 0,145, 10, 2, 0,146, 10, 2, 0, 14, 2, 2, 0,136, 8, 2, 0,111, 8, 2, 0,147, 10, - 2, 0,148, 10, 2, 0,193, 3, 2, 0,194, 3, 2, 0,149, 10, 2, 0,150, 10, 2, 0,151, 10, 2, 0,152, 10, 7, 0,153, 10, - 7, 0,154, 10, 7, 0,155, 10, 2, 0, 62, 5, 2, 0,156, 10, 7, 0,157, 10, 7, 0,158, 10, 7, 0,159, 10, 7, 0,118, 8, - 7, 0, 88, 0, 7, 0,239, 2, 7, 0,124, 8, 7, 0,160, 10, 7, 0,161, 10, 7, 0,162, 10, 4, 0,119, 8, 4, 0,117, 8, - 4, 0,163, 10, 7, 0,120, 8, 7, 0,121, 8, 7, 0,122, 8, 7, 0,164, 10, 7, 0,165, 10, 7, 0,166, 10, 7, 0,167, 10, - 7, 0,168, 10, 7, 0, 56, 0, 7, 0,169, 10, 7, 0,170, 10, 7, 0,171, 10, 7, 0,172, 10, 7, 0,134, 3, 7, 0,106, 0, - 7, 0,173, 10, 7, 0,174, 10, 7, 0,175, 10, 7, 0,176, 10, 7, 0,177, 10, 7, 0,178, 10, 7, 0,179, 10, 4, 0,180, 10, - 4, 0,181, 10, 7, 0,182, 10, 7, 0,183, 10, 7, 0,184, 10, 7, 0,185, 10, 7, 0,186, 10, 7, 0,207, 0, 7, 0,187, 10, - 7, 0,220, 3, 7, 0,218, 3, 7, 0,219, 3, 7, 0,188, 10, 7, 0,189, 10, 7, 0,190, 10, 7, 0,191, 10, 7, 0,192, 10, - 7, 0,193, 10, 7, 0,194, 10, 7, 0,195, 10, 7, 0,196, 10, 7, 0,197, 10, 7, 0,198, 10, 7, 0,199, 10, 7, 0,200, 10, - 4, 0,201, 10, 4, 0,202, 10, 67, 0,166, 3, 12, 0,203, 10, 67, 0,204, 10, 32, 0,205, 10, 32, 0,206, 10, 36, 0, 79, 0, -167, 0, 61, 1,167, 0,207, 10,147, 0, 44, 0,147, 0, 0, 0,147, 0, 1, 0,157, 1,208, 10,155, 1,209, 10,152, 1, 58, 9, -174, 0,245, 3, 9, 0,246, 3,159, 1,210, 10,159, 1,211, 10, 12, 0,212, 10, 12, 0,213, 10,132, 0,214, 10,140, 0,215, 10, -140, 0,216, 10, 32, 0,217, 10, 32, 0,218, 10, 32, 0, 38, 0, 12, 0,121, 9, 0, 0, 20, 0, 7, 0,237, 0, 7, 0, 10, 3, - 7, 0,219, 10, 4, 0,184, 2, 4, 0, 56, 0, 4, 0, 19, 0, 4, 0,119, 8, 4, 0,220, 10, 4, 0,221, 10, 4, 0,222, 10, - 2, 0,244, 0, 2, 0,223, 10, 2, 0,224, 10, 2, 0,225, 10, 0, 0,226, 10, 2, 0,227, 10, 2, 0,228, 10, 2, 0,229, 10, - 9, 0,230, 10,136, 0, 62, 4, 12, 0,253, 2, 12, 0,231, 10,160, 1,232, 10,161, 1,233, 10, 7, 0,234, 10,134, 0, 37, 0, -162, 1,253, 8, 7, 0, 32, 4, 7, 0,235, 10, 7, 0,236, 10, 7, 0,209, 5, 7, 0,144, 3, 7, 0,134, 3, 7, 0,237, 10, - 7, 0, 74, 2, 7, 0,238, 10, 7, 0,239, 10, 7, 0,240, 10, 7, 0,241, 10, 7, 0,242, 10, 7, 0,243, 10, 7, 0, 33, 4, - 7, 0,244, 10, 7, 0,245, 10, 7, 0,246, 10, 7, 0, 34, 4, 7, 0, 30, 4, 7, 0, 31, 4, 7, 0,247, 10, 7, 0,248, 10, - 4, 0,249, 10, 4, 0, 90, 0, 4, 0,250, 10, 4, 0,251, 10, 2, 0,252, 10, 2, 0,253, 10, 2, 0,254, 10, 2, 0,255, 10, - 2, 0, 0, 11, 2, 0, 1, 11, 2, 0, 2, 11, 2, 0,179, 4,172, 0, 63, 4,135, 0, 9, 0,162, 1, 3, 11, 7, 0, 4, 11, - 7, 0, 5, 11, 7, 0,230, 1, 7, 0, 6, 11, 4, 0, 90, 0, 2, 0, 7, 11, 2, 0, 8, 11, 67, 0,229, 1,163, 1, 4, 0, - 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 9, 11,164, 1, 6, 0,164, 1, 0, 0,164, 1, 1, 0,163, 1, 35, 9, - 4, 0,250, 0, 2, 0, 10, 11, 2, 0, 19, 0,165, 1, 5, 0,165, 1, 0, 0,165, 1, 1, 0, 12, 0, 11, 11, 4, 0, 12, 11, - 4, 0, 19, 0,166, 1, 9, 0,166, 1, 0, 0,166, 1, 1, 0, 12, 0,119, 0,165, 1, 13, 11, 4, 0, 19, 0, 2, 0, 10, 11, - 2, 0, 14, 11, 7, 0, 91, 0, 0, 0, 15, 11,163, 0, 6, 0, 27, 0, 31, 0, 12, 0, 30, 5, 4, 0, 19, 0, 2, 0, 16, 11, - 2, 0, 17, 11, 9, 0, 18, 11,167, 1, 7, 0,167, 1, 0, 0,167, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, - 0, 0, 19, 11, 0, 0, 20, 11,168, 1, 6, 0, 12, 0, 21, 11, 4, 0, 22, 11, 4, 0, 23, 11, 4, 0, 19, 0, 4, 0, 37, 0, -214, 0, 24, 11,169, 1, 3, 0, 7, 0, 87, 5, 7, 0, 25, 11, 7, 0, 26, 11,170, 1, 17, 0, 27, 0, 31, 0,171, 1, 27, 11, -171, 1, 28, 11, 12, 0, 29, 11, 4, 0, 30, 11, 2, 0, 31, 11, 2, 0, 32, 11, 12, 0, 33, 11, 12, 0, 34, 11,168, 1, 35, 11, - 12, 0, 36, 11, 12, 0, 37, 11, 12, 0, 38, 11, 12, 0, 39, 11,172, 1, 40, 11, 12, 0, 41, 11,214, 0, 42, 11,171, 1, 31, 0, -171, 1, 0, 0,171, 1, 1, 0, 9, 0, 43, 11, 4, 0,211, 7, 2, 0, 44, 11, 2, 0, 37, 0,219, 0, 70, 6,219, 0, 45, 11, - 0, 0, 46, 11, 2, 0, 47, 11, 2, 0, 48, 11, 2, 0,234, 7, 2, 0,235, 7, 2, 0, 49, 11, 2, 0, 50, 11, 2, 0,183, 3, - 2, 0,193, 6, 2, 0, 51, 11, 2, 0, 52, 11, 2, 0,223, 9,173, 1, 53, 11,174, 1, 54, 11,175, 1, 55, 11, 4, 0, 56, 11, - 4, 0, 57, 11, 9, 0, 58, 11, 12, 0, 34, 11, 12, 0,254, 7, 12, 0, 59, 11, 12, 0, 60, 11, 12, 0, 61, 11,176, 1, 17, 0, -176, 1, 0, 0,176, 1, 1, 0, 0, 0, 62, 11, 26, 0, 30, 0, 2, 0, 63, 11, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0, 64, 11, - 2, 0, 65, 11, 2, 0, 66, 11, 2, 0, 67, 11, 2, 0, 68, 11, 2, 0, 19, 0, 2, 0, 69, 11, 2, 0, 31, 0, 2, 0, 37, 0, -177, 1, 70, 11,178, 1, 10, 0,178, 1, 0, 0,178, 1, 1, 0, 12, 0, 71, 11, 0, 0, 62, 11, 2, 0, 72, 11, 2, 0, 73, 11, - 2, 0, 19, 0, 2, 0, 74, 11, 4, 0, 75, 11, 9, 0, 76, 11,172, 1, 7, 0,172, 1, 0, 0,172, 1, 1, 0, 0, 0, 62, 11, - 0, 0, 77, 11, 12, 0,159, 7, 4, 0, 78, 11, 4, 0, 19, 0,227, 0, 14, 0,227, 0, 0, 0,227, 0, 1, 0, 0, 0, 62, 11, - 26, 0, 30, 0,179, 1,228, 7, 9, 0, 79, 11, 9, 0, 80, 11,177, 1, 70, 11,168, 1, 81, 11, 12, 0, 82, 11,227, 0, 83, 11, - 7, 1,106, 6, 2, 0, 19, 0, 2, 0,179, 4,180, 1, 8, 0,180, 1, 0, 0,180, 1, 1, 0, 9, 0, 2, 0, 9, 0, 84, 11, - 0, 0,240, 3, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0, 85, 11,181, 1, 5, 0, 7, 0, 86, 11, 4, 0, 87, 11, 4, 0, 88, 11, - 4, 0, 69, 1, 4, 0, 19, 0,182, 1, 6, 0, 7, 0, 89, 11, 7, 0, 90, 11, 7, 0, 91, 11, 7, 0, 92, 11, 4, 0, 17, 0, - 4, 0, 19, 0,183, 1, 5, 0, 7, 0,212, 8, 7, 0,213, 8, 7, 0,210, 2, 2, 0, 28, 2, 2, 0, 29, 2,184, 1, 5, 0, -183, 1, 2, 0, 4, 0, 53, 0, 7, 0, 93, 11, 7, 0,212, 8, 7, 0,213, 8,185, 1, 4, 0, 2, 0, 94, 11, 2, 0, 95, 11, - 2, 0, 96, 11, 2, 0, 97, 11,186, 1, 2, 0, 42, 0,159, 6, 26, 0, 3, 9,187, 1, 3, 0, 24, 0, 98, 11, 4, 0, 19, 0, - 4, 0, 37, 0,188, 1, 6, 0, 7, 0,106, 0, 7, 0,212, 2, 7, 0, 99, 11, 7, 0, 37, 0, 2, 0,243, 0, 2, 0,100, 11, -189, 1, 5, 0, 7, 0,101, 11, 7, 0,120, 0, 7, 0, 36, 9, 7, 0, 37, 9, 4, 0, 19, 0,190, 1, 6, 0, 27, 0,165, 6, - 0, 0,102, 11, 0, 0,103, 11, 2, 0,104, 11, 2, 0, 19, 0, 4, 0,105, 11,191, 1, 7, 0,191, 1, 0, 0,191, 1, 1, 0, - 0, 0,240, 3,190, 1,106, 11, 2, 0,107, 11, 2, 0, 17, 0, 7, 0, 60, 0,192, 1, 7, 0, 12, 0,108, 11, 0, 0,109, 11, - 9, 0,110, 11, 7, 0, 60, 0, 7, 0, 85, 11, 4, 0, 17, 0, 4, 0, 19, 0,193, 1, 3, 0, 7, 0,111, 11, 4, 0, 19, 0, - 4, 0, 37, 0,194, 1, 15, 0,194, 1, 0, 0,194, 1, 1, 0, 84, 1,107, 9,192, 1, 61, 0, 12, 0,102, 3, 35, 0, 49, 0, -193, 1,112, 11, 4, 0, 53, 0, 7, 0, 60, 0, 2, 0, 19, 0, 2, 0, 12, 1, 4, 0,113, 11, 0, 0,102, 11, 4, 0,114, 11, - 7, 0,115, 11,195, 1, 2, 0, 0, 0,116, 11, 0, 0,117, 11,196, 1, 4, 0,196, 1, 0, 0,196, 1, 1, 0,161, 0, 44, 3, - 12, 0,118, 11,197, 1, 24, 0,197, 1, 0, 0,197, 1, 1, 0, 12, 0,119, 11,161, 0,190, 8,196, 1,120, 11, 12, 0,121, 11, - 12, 0,102, 3, 0, 0,240, 3, 7, 0, 85, 11, 7, 0,122, 11, 7, 0, 87, 0, 7, 0, 88, 0, 7, 0,170, 9, 7, 0,171, 9, - 7, 0,229, 2, 7, 0,174, 9, 7, 0,192, 8, 7, 0,175, 9, 2, 0,123, 11, 2, 0,124, 11, 2, 0, 89, 0, 2, 0, 17, 0, - 4, 0, 19, 0, 4, 0, 69, 0,198, 1, 6, 0,198, 1, 0, 0,198, 1, 1, 0, 12, 0,119, 11, 4, 0, 19, 0, 4, 0,146, 2, - 0, 0,240, 3,199, 1, 11, 0,199, 1, 0, 0,199, 1, 1, 0, 27, 0,165, 6, 0, 0,125, 11, 4, 0,105, 11, 2, 0,126, 11, - 2, 0, 37, 0, 0, 0,102, 11, 4, 0,113, 11, 2, 0, 19, 0, 2, 0,127, 11,200, 1, 8, 0,200, 1, 0, 0,200, 1, 1, 0, - 12, 0,128, 11, 0, 0,240, 3, 0, 0,129, 11, 2, 0, 19, 0, 2, 0,127, 11, 4, 0,130, 11,201, 1, 5, 0,201, 1, 0, 0, -201, 1, 1, 0, 0, 0,102, 11, 4, 0,113, 11, 7, 0,200, 2, 39, 0, 12, 0,161, 0, 94, 3,161, 0,131, 11,196, 1,120, 11, - 12, 0,132, 11,197, 1,133, 11, 12, 0,134, 11, 12, 0,135, 11, 4, 0, 19, 0, 4, 0,244, 0, 2, 0,136, 11, 2, 0,137, 11, - 7, 0,138, 11,202, 1, 2, 0, 27, 0, 31, 0, 39, 0, 74, 0,203, 1, 5, 0,203, 1, 0, 0,203, 1, 1, 0, 4, 0, 17, 0, - 4, 0, 19, 0, 0, 0, 20, 0,204, 1, 6, 0,203, 1,139, 11, 32, 0, 44, 0, 4, 0,140, 11, 7, 0,141, 11, 4, 0,142, 11, - 4, 0, 96, 9,205, 1, 3, 0,203, 1,139, 11, 4, 0,140, 11, 7, 0,143, 11,206, 1, 8, 0,203, 1,139, 11, 32, 0, 44, 0, - 7, 0, 64, 1, 7, 0,144, 11, 7, 0, 10, 3, 7, 0,252, 8, 4, 0,140, 11, 4, 0,145, 11,207, 1, 5, 0,203, 1,139, 11, - 7, 0,146, 11, 7, 0, 71, 8, 7, 0,235, 2, 7, 0, 56, 0,208, 1, 3, 0,203, 1,139, 11, 7, 0,252, 8, 7, 0,147, 11, -151, 1, 4, 0, 7, 0,148, 11, 7, 0,175, 10, 2, 0,149, 11, 2, 0, 69, 1,209, 1, 14, 0,209, 1, 0, 0,209, 1, 1, 0, - 12, 0,150, 11, 12, 0,151, 11, 12, 0,152, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0,153, 11, 7, 0,154, 11, - 4, 0,142, 11, 4, 0, 96, 9, 7, 0,249, 3, 7, 0,237, 2,158, 1, 23, 0, 4, 0,140, 11, 4, 0,155, 11, 7, 0,156, 11, - 7, 0, 56, 0, 7, 0,157, 11, 7, 0,233, 2, 7, 0,148, 11, 7, 0,158, 11, 7, 0,212, 2, 7, 0, 57, 10, 7, 0,129, 4, - 7, 0,159, 11, 7, 0,160, 11, 7, 0,161, 11, 7, 0,162, 11, 7, 0,163, 11, 7, 0,164, 11, 7, 0,165, 11, 7, 0,166, 11, - 7, 0,167, 11, 7, 0,168, 11, 7, 0,169, 11, 12, 0,170, 11,120, 0, 36, 0,119, 0,171, 11,210, 1,131, 10, 67, 0,172, 11, - 67, 0,204, 10, 67, 0,173, 11,211, 1,174, 11, 48, 0,162, 0, 48, 0,175, 11, 48, 0,176, 11, 7, 0,177, 11, 7, 0,178, 11, - 7, 0,179, 11, 7, 0,180, 11, 7, 0,181, 11, 7, 0,108, 9, 7, 0,182, 11, 7, 0,158, 1, 7, 0,183, 11, 4, 0,184, 11, - 4, 0,185, 11, 4, 0,186, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0,187, 11, 2, 0,188, 11, 2, 0,189, 11, 4, 0,190, 11, - 7, 0,212, 2, 4, 0,191, 11, 7, 0,192, 11, 4, 0,193, 11, 4, 0,194, 11, 4, 0,195, 11,136, 0,196, 11, 12, 0,197, 11, -172, 0, 63, 4,121, 0, 11, 0,119, 0,171, 11,147, 0, 30, 3, 7, 0,125, 1, 7, 0,108, 9, 7, 0,198, 11, 7, 0,199, 11, - 2, 0,200, 11, 2, 0,201, 11, 2, 0,202, 11, 2, 0, 17, 0, 4, 0, 37, 0,122, 0, 13, 0,119, 0,171, 11,138, 0, 7, 3, -140, 0, 9, 3, 7, 0, 35, 9, 7, 0,203, 11, 7, 0,204, 11, 7, 0, 66, 1, 7, 0,205, 11, 4, 0,130, 9, 4, 0, 5, 3, - 2, 0, 17, 0, 2, 0, 37, 0, 4, 0, 69, 0, 69, 78, 68, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 35, 0, 0, 0, 2, 0, 94, 1, 8, 0, 0, 0, 3, 0, 0, 0, 56, 52, 39, 1, 0, 0, 0, 0, 2, 0, 2, 0, 0, 8, 0, 0, + 2, 0, 0, 0, 68,172, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0,128, 0, 0, 0, 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0, + 24,213,130, 4, 0, 0, 0, 0, 24,213,130, 4, 0, 0, 0, 0,152,116, 5, 88,159,127, 0, 0,152,116, 5, 88,159,127, 0, 0, +248,117, 5, 88,159,127, 0, 0,248,117, 5, 88,159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 2, 0, 25, 0, 1, 0, 20, 0, 20, 0, + 1, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 30, 90,100,191,154,153,153, 62,102,102,102, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 31,250,254, 62, 9, 0, 0, 63,156,153, 25, 63, 0, 0, 0, 0,205,204, 76, 62,205,204, 76, 62,205,204, 76, 62, 0, 0,128, 63, + 44,135, 22, 63, 32,133,235, 62,184,243,125, 62, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,195, 73, 76, 63, 42,135, 86, 63, + 0, 0,128, 63, 0, 0, 0, 0, 1, 43,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 16, 47, 93, 62, 58,180,200,190, + 24, 47, 93,190, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 25, 0, 15, 0,120, 0, 60, 0, 3, 0,128, 0, 0, 0, 0, 0, 0, 0, +144, 31, 15, 0, 6, 0, 25, 0, 8, 0, 10, 0,200, 0, 0, 0,100, 0,100, 0, 0, 0, 0, 0, 2, 0, 1, 0, 10, 0, 50, 0, +200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 62, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 29, 0, 0, 24,213,130, 4, 0, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,101,102, 97,117,108,116, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255, +100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255, +100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255, +153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, + 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 70, 70, 70,255, + 70, 70, 70,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255, +100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255, +153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255, +153,153,153,255,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, + 70, 70, 70,255,255,255,255,255,255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 63, 63, 63,255, + 86,128,194,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 25, 25, 25,230, + 45, 45, 45,230,100,100,100,255,160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, + 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, 25, 25, 25,255,128,128,128,255, +100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50,180, 80, 80, 80,180, +100,100,100,180,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255,190,190,190,255, +100,100,100,180, 68, 68, 68,255, 0, 0, 0,255,255,255,255,255, 0, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, + 86,128,194,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,115,190, 76,255, 90,166, 51,255, +240,235,100,255,215,211, 75,255,180, 0,255,255,153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255,204, 0,153,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255,255,255,255,255, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 76, 76,255, 0, 0, 0, 0, +250,250,250,255, 15, 15, 15,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100,255,140, 25,255,250,250,250,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,130,130,130,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,250,250,250,255,250,250,250,255,250,250,250,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255, +124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255, +124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,109, 88,129,255, + 78,152, 62,255, 46,143,143,255,169, 84,124,255,126,126, 80,255,162, 95,111,255,109,145,131,255,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0,255,255,255, 10,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255,110,110,110,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,132,132,132,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255, 94, 94, 94,255,172,172,172,255, 17, 27, 60,100, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,195,195,195,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255, 64, 64, 64,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,100, 0, 0,255, + 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,255,255,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,155,155,155,160,100,100,100,255,108,105,111,255, +104,106,117,255,105,117,110,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,128,255,255,255,255,255,255, 0,170, 0,255, +220, 96, 96,255,220, 96, 96,255, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255, +247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255, +131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255, +240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255, +111,182,171,255, 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0,244,201, 12,255,238,194, 54,255, +243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0,111, 47,106,255,152, 69,190,255, +211, 48,214,255, 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0,141,141,141,255,176,176,176,255, +222,222,222,255, 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, + 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 68, 78, 65, 49,208,226, 0, 0,168,189, 36, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69, +206, 11, 0, 0, 42,110,101,120,116, 0, 42,112,114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, 0, 42,108, 97, +115,116, 0,120, 0,121, 0,122, 0,119, 0,120,109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, 97,120, 0, 42, +112,111,105,110,116,101,114, 0,103,114,111,117,112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0,115,117, 98,116, +121,112,101, 0,102,108, 97,103, 0,110, 97,109,101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0,100, 97,116, 97, 0,108,101,110, + 0,116,111,116, 97,108,108,101,110, 0, 42,110,101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 50, 52, 93, 0,117, +115, 0,105, 99,111,110, 95,105,100, 0, 42,112,114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, 98,108,111, 99, +107, 0, 42,102,105,108,101,100, 97,116, 97, 0,110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,108,101,112, 97,116,104, 91, 50, + 52, 48, 93, 0,116,111,116, 0,112, 97,100, 0, 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, 93, 0, 99,104, + 97,110,103,101,100, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 95,116,105,109,101,115,116, 97,109,112, 91, 50, 93, 0, 42,114, +101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, 98,108,111, 99,107,116,121,112,101, 0, 97,100,114, 99,111,100,101, 0,110, 97,109, +101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, 42, 98,101,122,116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, 99,116, 0,118, + 97,114,116,121,112,101, 0,116,111,116,118,101,114,116, 0,105,112,111, 0,101,120,116,114, 97,112, 0,114,116, 0, 98,105,116, +109, 97,115,107, 0,115,108,105,100,101, 95,109,105,110, 0,115,108,105,100,101, 95,109, 97,120, 0, 99,117,114,118, 97,108, 0, + 42,100,114,105,118,101,114, 0, 99,117,114,118,101, 0, 99,117,114, 0,115,104,111,119,107,101,121, 0,109,117,116,101,105,112, +111, 0,112,111,115, 0,114,101,108, 97,116,105,118,101, 0,116,111,116,101,108,101,109, 0,112, 97,100, 50, 0, 42,119,101,105, +103,104,116,115, 0,118,103,114,111,117,112, 91, 51, 50, 93, 0,115,108,105,100,101,114,109,105,110, 0,115,108,105,100,101,114, +109, 97,120, 0, 42, 97,100,116, 0, 42,114,101,102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, 0,101,108,101, +109,115,105,122,101, 0, 98,108,111, 99,107, 0, 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101,121, 0,115,108, +117,114,112,104, 0, 42,108,105,110,101, 0, 42,102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101,110,111, 0,115, +116, 97,114,116, 0,101,110,100, 0,112, 97,100, 49, 0,102,108, 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, 0,112, 97,100, + 91, 52, 93, 0, 42,110, 97,109,101, 0,110,108,105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108, 0, 42,115,101, +108,108, 0, 99,117,114, 99, 0,115,101,108, 99, 0,109, 97,114,107,101,114,115, 0, 42,117,110,100,111, 95, 98,117,102, 0,117, +110,100,111, 95,112,111,115, 0,117,110,100,111, 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,109,116,105,109,101, + 0,115,105,122,101, 0,115,101,101,107, 0,112, 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0, 99,108,105,112,115,116, + 97, 0, 99,108,105,112,101,110,100, 0,108,101,110,115, 0,111,114,116,104,111, 95,115, 99, 97,108,101, 0,100,114, 97,119,115, +105,122,101, 0,115,104,105,102,116,120, 0,115,104,105,102,116,121, 0, 89, 70, 95,100,111,102,100,105,115,116, 0, 42,100,111, +102, 95,111, 98, 0,102,114, 97,109,101,110,114, 0,102,114, 97,109,101,115, 0,111,102,102,115,101,116, 0,115,102,114, 97, 0, +102,105,101, 95,105,109, 97, 0, 99,121, 99,108, 0,111,107, 0,109,117,108,116,105, 95,105,110,100,101,120, 0,108, 97,121,101, +114, 0,112, 97,115,115, 0,109,101,110,117,110,114, 0, 42,115, 99,101,110,101, 0,105, 98,117,102,115, 0, 42,103,112,117,116, +101,120,116,117,114,101, 0, 42, 97,110,105,109, 0, 42,114,114, 0, 42,114,101,110,100,101,114,115, 91, 56, 93, 0,114,101,110, +100,101,114, 95,115,108,111,116, 0,108, 97,115,116, 95,114,101,110,100,101,114, 95,115,108,111,116, 0,115,111,117,114, 99,101, + 0,108, 97,115,116,102,114, 97,109,101, 0,116,112, 97,103,101,102,108, 97,103, 0,116,111,116, 98,105,110,100, 0,120,114,101, +112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119,101,110,100, 0, 98,105,110,100, 99,111,100,101, 0, 42,114,101,112, + 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108,101, 0, 42,112,114,101,118,105,101,119, 0,108, 97,115,116,117,112, +100, 97,116,101, 0,108, 97,115,116,117,115,101,100, 0, 97,110,105,109,115,112,101,101,100, 0,103,101,110, 95,120, 0,103,101, +110, 95,121, 0,103,101,110, 95,116,121,112,101, 0, 97,115,112,120, 0, 97,115,112,121, 0,116,101,120, 99,111, 0,109, 97,112, +116,111, 0,109, 97,112,116,111,110,101,103, 0, 98,108,101,110,100,116,121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116, +101,120, 0,117,118,110, 97,109,101, 91, 51, 50, 93, 0,112,114,111,106,120, 0,112,114,111,106,121, 0,112,114,111,106,122, 0, +109, 97,112,112,105,110,103, 0,111,102,115, 91, 51, 93, 0,115,105,122,101, 91, 51, 93, 0,114,111,116, 0,116,101,120,102,108, + 97,103, 0, 99,111,108,111,114,109,111,100,101,108, 0,112,109, 97,112,116,111, 0,112,109, 97,112,116,111,110,101,103, 0,110, +111,114,109, 97,112,115,112, 97, 99,101, 0,119,104,105, 99,104, 95,111,117,116,112,117,116, 0, 98,114,117,115,104, 95,109, 97, +112, 95,109,111,100,101, 0,112, 97,100, 91, 55, 93, 0,114, 0,103, 0, 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111, +108,102, 97, 99, 0,118, 97,114,102, 97, 99, 0,110,111,114,102, 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, + 97, 99, 0, 99,111,108,115,112,101, 99,102, 97, 99, 0,109,105,114,114,102, 97, 99, 0, 97,108,112,104, 97,102, 97, 99, 0,100, +105,102,102,102, 97, 99, 0,115,112,101, 99,102, 97, 99, 0,101,109,105,116,102, 97, 99, 0,104, 97,114,100,102, 97, 99, 0,114, + 97,121,109,105,114,114,102, 97, 99, 0,116,114, 97,110,115,108,102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99,111,108,101,109, +105,116,102, 97, 99, 0, 99,111,108,114,101,102,108,102, 97, 99, 0, 99,111,108,116,114, 97,110,115,102, 97, 99, 0,100,101,110, +115,102, 97, 99, 0,115, 99, 97,116,116,101,114,102, 97, 99, 0,114,101,102,108,102, 97, 99, 0,116,105,109,101,102, 97, 99, 0, +108,101,110,103,116,104,102, 97, 99, 0, 99,108,117,109,112,102, 97, 99, 0,107,105,110,107,102, 97, 99, 0,114,111,117,103,104, +102, 97, 99, 0,112, 97,100,101,110,115,102, 97, 99, 0,108,105,102,101,102, 97, 99, 0,115,105,122,101,102, 97, 99, 0,105,118, +101,108,102, 97, 99, 0,112,118,101,108,102, 97, 99, 0,115,104, 97,100,111,119,102, 97, 99, 0,122,101,110,117,112,102, 97, 99, + 0,122,101,110,100,111,119,110,102, 97, 99, 0, 98,108,101,110,100,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0, 42, +104, 97,110,100,108,101, 0, 42,112,110, 97,109,101, 0, 42,115,116,110, 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97, +114,115, 0, 42,118, 97,114,115,116,114, 0, 42,114,101,115,117,108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, + 93, 0, 40, 42,100,111,105,116, 41, 40, 41, 0, 40, 42,105,110,115,116, 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, + 42, 99, 97,108,108, 98, 97, 99,107, 41, 40, 41, 0,118,101,114,115,105,111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42, +105,109, 97, 0, 42, 99,117, 98,101, 91, 54, 93, 0,105,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, + 93, 91, 51, 93, 0,115,116,121,112,101, 0,118,105,101,119,115, 99, 97,108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101, +114,101,115, 0,100,101,112,116,104, 0,114,101, 99, 97,108, 99, 0,108, 97,115,116,115,105,122,101, 0,102, 97,108,108,111,102, +102, 95,116,121,112,101, 0,102, 97,108,108,111,102,102, 95,115,111,102,116,110,101,115,115, 0,114, 97,100,105,117,115, 0, 99, +111,108,111,114, 95,115,111,117,114, 99,101, 0,116,111,116,112,111,105,110,116,115, 0,112,100,112, 97,100, 0,112,115,121,115, + 0,112,115,121,115, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, + 0, 42,112,111,105,110,116, 95,116,114,101,101, 0, 42,112,111,105,110,116, 95,100, 97,116, 97, 0,110,111,105,115,101, 95,115, +105,122,101, 0,110,111,105,115,101, 95,100,101,112,116,104, 0,110,111,105,115,101, 95,105,110,102,108,117,101,110, 99,101, 0, +110,111,105,115,101, 95, 98, 97,115,105,115, 0,112,100,112, 97,100, 51, 91, 51, 93, 0,110,111,105,115,101, 95,102, 97, 99, 0, +115,112,101,101,100, 95,115, 99, 97,108,101, 0, 42, 99,111, 98, 97, 0,114,101,115,111,108, 91, 51, 93, 0,105,110,116,101,114, +112, 95,116,121,112,101, 0,102,105,108,101, 95,102,111,114,109, 97,116, 0,101,120,116,101,110,100, 0,115,109,111,107,101,100, + 95,116,121,112,101, 0,105,110,116, 95,109,117,108,116,105,112,108,105,101,114, 0,115,116,105,108,108, 95,102,114, 97,109,101, + 0,115,111,117,114, 99,101, 95,112, 97,116,104, 91, 50, 52, 48, 93, 0, 42,100, 97,116, 97,115,101,116, 0, 99, 97, 99,104,101, +100,102,114, 97,109,101, 0,110,111,105,115,101,115,105,122,101, 0,116,117,114, 98,117,108, 0, 98,114,105,103,104,116, 0, 99, +111,110,116,114, 97,115,116, 0,115, 97,116,117,114, 97,116,105,111,110, 0,114,102, 97, 99, 0,103,102, 97, 99, 0, 98,102, 97, + 99, 0,102,105,108,116,101,114,115,105,122,101, 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, 97,114,105,116,121, 0, +109,103, 95,111, 99,116, 97,118,101,115, 0,109,103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97,105,110, 0,100,105,115, +116, 95, 97,109,111,117,110,116, 0,110,115, 95,111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, 0,118,110, 95,119, 50, + 0,118,110, 95,119, 51, 0,118,110, 95,119, 52, 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105,115,116,109, 0,118,110, + 95, 99,111,108,116,121,112,101, 0,110,111,105,115,101,100,101,112,116,104, 0,110,111,105,115,101,116,121,112,101, 0,110,111, +105,115,101, 98, 97,115,105,115, 0,110,111,105,115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, 97,103, 0, 99,114,111, +112,120,109,105,110, 0, 99,114,111,112,121,109,105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114,111,112,121,109, 97,120, + 0,116,101,120,102,105,108,116,101,114, 0, 97,102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101,112,101, 97,116, + 0, 99,104,101, 99,107,101,114,100,105,115,116, 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42,110,111,100,101,116,114, +101,101, 0, 42,112,108,117,103,105,110, 0, 42,101,110,118, 0, 42,112,100, 0, 42,118,100, 0,117,115,101, 95,110,111,100,101, +115, 0,108,111, 99, 91, 51, 93, 0,114,111,116, 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105,110, 91, 51, 93, + 0,109, 97,120, 91, 51, 93, 0,109,111,100,101, 0,116,111,116,101,120, 0,115,104,100,119,114, 0,115,104,100,119,103, 0,115, +104,100,119, 98, 0,115,104,100,119,112, 97,100, 0,101,110,101,114,103,121, 0,100,105,115,116, 0,115,112,111,116,115,105,122, +101, 0,115,112,111,116, 98,108,101,110,100, 0,104, 97,105,110,116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, 42, 99,117,114, +102, 97,108,108,111,102,102, 0,115,104, 97,100,115,112,111,116,115,105,122,101, 0, 98,105, 97,115, 0,115,111,102,116, 0, 99, +111,109,112,114,101,115,115,116,104,114,101,115,104, 0,112, 97,100, 53, 91, 51, 93, 0, 98,117,102,115,105,122,101, 0,115, 97, +109,112, 0, 98,117,102,102,101,114,115, 0,102,105,108,116,101,114,116,121,112,101, 0, 98,117,102,102,108, 97,103, 0, 98,117, +102,116,121,112,101, 0,114, 97,121, 95,115, 97,109,112, 0,114, 97,121, 95,115, 97,109,112,121, 0,114, 97,121, 95,115, 97,109, +112,122, 0,114, 97,121, 95,115, 97,109,112, 95,116,121,112,101, 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, 97,114,101, 97, + 95,115,105,122,101, 0, 97,114,101, 97, 95,115,105,122,101,121, 0, 97,114,101, 97, 95,115,105,122,101,122, 0, 97,100, 97,112, +116, 95,116,104,114,101,115,104, 0,114, 97,121, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0,116,101,120, 97, 99,116, 0, +115,104, 97,100,104, 97,108,111,115,116,101,112, 0,115,117,110, 95,101,102,102,101, 99,116, 95,116,121,112,101, 0,115,107,121, + 98,108,101,110,100,116,121,112,101, 0,104,111,114,105,122,111,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,112,114, +101, 97,100, 0,115,117,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,117,110, 95,115,105,122,101, 0, 98, 97, 99,107, +115, 99, 97,116,116,101,114,101,100, 95,108,105,103,104,116, 0,115,117,110, 95,105,110,116,101,110,115,105,116,121, 0, 97,116, +109, 95,116,117,114, 98,105,100,105,116,121, 0, 97,116,109, 95,105,110,115, 99, 97,116,116,101,114,105,110,103, 95,102, 97, 99, +116,111,114, 0, 97,116,109, 95,101,120,116,105,110, 99,116,105,111,110, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,100,105, +115,116, 97,110, 99,101, 95,102, 97, 99,116,111,114, 0,115,107,121, 98,108,101,110,100,102, 97, 99, 0,115,107,121, 95,101,120, +112,111,115,117,114,101, 0,115,107,121, 95, 99,111,108,111,114,115,112, 97, 99,101, 0,112, 97,100, 52, 91, 54, 93, 0, 42,109, +116,101,120, 91, 49, 56, 93, 0,112,114, 95,116,101,120,116,117,114,101, 0,112, 97,100, 54, 91, 54, 93, 0,100,101,110,115,105, +116,121, 0,101,109,105,115,115,105,111,110, 0,115, 99, 97,116,116,101,114,105,110,103, 0,114,101,102,108,101, 99,116,105,111, +110, 0,101,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,116,114, 97,110,115,109,105,115,115,105,111,110, 95, 99, +111,108, 91, 51, 93, 0,114,101,102,108,101, 99,116,105,111,110, 95, 99,111,108, 91, 51, 93, 0,100,101,110,115,105,116,121, 95, +115, 99, 97,108,101, 0,100,101,112,116,104, 95, 99,117,116,111,102,102, 0, 97,115,121,109,109,101,116,114,121, 0,115,116,101, +112,115,105,122,101, 95,116,121,112,101, 0,115,104, 97,100,101,102,108, 97,103, 0,115,104, 97,100,101, 95,116,121,112,101, 0, +112,114,101, 99, 97, 99,104,101, 95,114,101,115,111,108,117,116,105,111,110, 0,115,116,101,112,115,105,122,101, 0,109,115, 95, +100,105,102,102, 0,109,115, 95,105,110,116,101,110,115,105,116,121, 0,109,115, 95,115,112,114,101, 97,100, 0,109, 97,116,101, +114,105, 97,108, 95,116,121,112,101, 0,115,112,101, 99,114, 0,115,112,101, 99,103, 0,115,112,101, 99, 98, 0,109,105,114,114, + 0,109,105,114,103, 0,109,105,114, 98, 0, 97,109, 98,114, 0, 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, 98, 0,101,109, +105,116, 0, 97,110,103, 0,115,112,101, 99,116,114, 97, 0,114, 97,121, 95,109,105,114,114,111,114, 0, 97,108,112,104, 97, 0, +114,101,102, 0,115,112,101, 99, 0,122,111,102,102,115, 0, 97,100,100, 0,116,114, 97,110,115,108,117, 99,101,110, 99,121, 0, +118,111,108, 0,102,114,101,115,110,101,108, 95,109,105,114, 0,102,114,101,115,110,101,108, 95,109,105,114, 95,105, 0,102,114, +101,115,110,101,108, 95,116,114, 97, 0,102,114,101,115,110,101,108, 95,116,114, 97, 95,105, 0,102,105,108,116,101,114, 0,116, +120, 95,108,105,109,105,116, 0,116,120, 95,102, 97,108,108,111,102,102, 0,114, 97,121, 95,100,101,112,116,104, 0,114, 97,121, + 95,100,101,112,116,104, 95,116,114, 97, 0,104, 97,114, 0,115,101,101,100, 49, 0,115,101,101,100, 50, 0,103,108,111,115,115, + 95,109,105,114, 0,103,108,111,115,115, 95,116,114, 97, 0,115, 97,109,112, 95,103,108,111,115,115, 95,109,105,114, 0,115, 97, +109,112, 95,103,108,111,115,115, 95,116,114, 97, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,109,105,114, 0, 97,100, + 97,112,116, 95,116,104,114,101,115,104, 95,116,114, 97, 0, 97,110,105,115,111, 95,103,108,111,115,115, 95,109,105,114, 0,100, +105,115,116, 95,109,105,114, 0,102, 97,100,101,116,111, 95,109,105,114, 0,115,104, 97,100,101, 95,102,108, 97,103, 0,109,111, +100,101, 95,108, 0,102,108, 97,114,101, 99, 0,115,116, 97,114, 99, 0,108,105,110,101, 99, 0,114,105,110,103, 99, 0,104, 97, +115,105,122,101, 0,102,108, 97,114,101,115,105,122,101, 0,115,117, 98,115,105,122,101, 0,102,108, 97,114,101, 98,111,111,115, +116, 0,115,116,114, 97,110,100, 95,115,116, 97, 0,115,116,114, 97,110,100, 95,101,110,100, 0,115,116,114, 97,110,100, 95,101, + 97,115,101, 0,115,116,114, 97,110,100, 95,115,117,114,102,110,111,114, 0,115,116,114, 97,110,100, 95,109,105,110, 0,115,116, +114, 97,110,100, 95,119,105,100,116,104,102, 97,100,101, 0,115,116,114, 97,110,100, 95,117,118,110, 97,109,101, 91, 51, 50, 93, + 0,115, 98,105, 97,115, 0,108, 98,105, 97,115, 0,115,104, 97,100, 95, 97,108,112,104, 97, 0,115,101,112,116,101,120, 0,114, +103, 98,115,101,108, 0,112,114, 95,116,121,112,101, 0,112,114, 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109,112, 0,109,108, + 95,102,108, 97,103, 0,100,105,102,102, 95,115,104, 97,100,101,114, 0,115,112,101, 99, 95,115,104, 97,100,101,114, 0,114,111, +117,103,104,110,101,115,115, 0,114,101,102,114, 97, 99, 0,112, 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0,100, 97,114,107, +110,101,115,115, 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42,114, 97,109,112, 95,115,112,101, 99, 0,114, 97,109,112,105,110, + 95, 99,111,108, 0,114, 97,109,112,105,110, 95,115,112,101, 99, 0,114, 97,109,112, 98,108,101,110,100, 95, 99,111,108, 0,114, + 97,109,112, 98,108,101,110,100, 95,115,112,101, 99, 0,114, 97,109,112, 95,115,104,111,119, 0,112, 97,100, 51, 0,114, 97,109, +112,102, 97, 99, 95, 99,111,108, 0,114, 97,109,112,102, 97, 99, 95,115,112,101, 99, 0, 42,103,114,111,117,112, 0,102,114,105, + 99,116,105,111,110, 0,102,104, 0,114,101,102,108,101, 99,116, 0,102,104,100,105,115,116, 0,120,121,102,114,105, 99,116, 0, +100,121,110, 97,109,111,100,101, 0,115,115,115, 95,114, 97,100,105,117,115, 91, 51, 93, 0,115,115,115, 95, 99,111,108, 91, 51, + 93, 0,115,115,115, 95,101,114,114,111,114, 0,115,115,115, 95,115, 99, 97,108,101, 0,115,115,115, 95,105,111,114, 0,115,115, +115, 95, 99,111,108,102, 97, 99, 0,115,115,115, 95,116,101,120,102, 97, 99, 0,115,115,115, 95,102,114,111,110,116, 0,115,115, +115, 95, 98, 97, 99,107, 0,115,115,115, 95,102,108, 97,103, 0,115,115,115, 95,112,114,101,115,101,116, 0,109, 97,112,116,111, + 95,116,101,120,116,117,114,101,100, 0,112, 97,100, 52, 0,103,112,117,109, 97,116,101,114,105, 97,108, 0,110, 97,109,101, 91, + 50, 53, 54, 93, 0, 42, 98, 98, 0,105, 49, 0,106, 49, 0,107, 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115,101,108, 99,111, +108, 49, 0,115,101,108, 99,111,108, 50, 0,113,117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,101,120,112,121, 0,101,120,112, +122, 0,114, 97,100, 0,114, 97,100, 50, 0,115, 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,101,108,101,109,115, 0,100,105, +115,112, 0, 42,101,100,105,116,101,108,101,109,115, 0, 42, 42,109, 97,116, 0,102,108, 97,103, 50, 0,116,111,116, 99,111,108, + 0,119,105,114,101,115,105,122,101, 0,114,101,110,100,101,114,115,105,122,101, 0,116,104,114,101,115,104, 0, 42,108, 97,115, +116,101,108,101,109, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,104,116, 0,104, 49, 0,104, + 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104,105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110,114, 0,112,110, +116,115,117, 0,112,110,116,115,118, 0,114,101,115,111,108,117, 0,114,101,115,111,108,118, 0,111,114,100,101,114,117, 0,111, +114,100,101,114,118, 0,102,108, 97,103,117, 0,102,108, 97,103,118, 0, 42,107,110,111,116,115,117, 0, 42,107,110,111,116,115, +118, 0,116,105,108,116, 95,105,110,116,101,114,112, 0,114, 97,100,105,117,115, 95,105,110,116,101,114,112, 0, 99,104, 97,114, +105,100,120, 0,107,101,114,110, 0,104, 0,110,117,114, 98, 0, 42,101,100,105,116,110,117,114, 98, 0, 42, 98,101,118,111, 98, +106, 0, 42,116, 97,112,101,114,111, 98,106, 0, 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,112, 97,116,104, 0, 42, +107,101,121, 0, 98,101,118, 0,100,114, 97,119,102,108, 97,103, 0,116,119,105,115,116, 95,109,111,100,101, 0,112, 97,100, 91, + 50, 93, 0,116,119,105,115,116, 95,115,109,111,111,116,104, 0,115,109, 97,108,108, 99, 97,112,115, 95,115, 99, 97,108,101, 0, +112, 97,116,104,108,101,110, 0, 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0,101,120,116, 50, + 0,114,101,115,111,108,117, 95,114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117, 0, 42,108, 97, +115,116,115,101,108, 0,115,112, 97, 99,101,109,111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101,100,105,115,116, + 0,115,104,101, 97,114, 0,102,115,105,122,101, 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, 0,117,108,104, +101,105,103,104,116, 0,120,111,102, 0,121,111,102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, 0, 42,115,101, +108, 98,111,120,101,115, 0, 42,101,100,105,116,102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, 42,118,102,111, +110,116, 0, 42,118,102,111,110,116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0,115,101,112, 99, +104, 97,114, 0, 99,116,105,109,101, 0,116,111,116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0,115,101,108,115, +116, 97,114,116, 0,115,101,108,101,110,100, 0, 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, 0,101,102,102, +101, 99,116, 0, 42,109,102, 97, 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109,118,101,114,116, + 0, 42,109,101,100,103,101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107,121, 0, 42,116, +101,120, 99,111,109,101,115,104, 0, 42,109,115,101,108,101, 99,116, 0, 42,101,100,105,116, 95,109,101,115,104, 0,118,100, 97, +116, 97, 0,101,100, 97,116, 97, 0,102,100, 97,116, 97, 0,116,111,116,101,100,103,101, 0,116,111,116,102, 97, 99,101, 0,116, +111,116,115,101,108,101, 99,116, 0, 97, 99,116, 95,102, 97, 99,101, 0,101,100,105,116,102,108, 97,103, 0, 99,117, 98,101,109, + 97,112,115,105,122,101, 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98,100,105,118,114, + 0,115,117, 98,115,117,114,102,116,121,112,101, 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,103,101, 0,117,118, 91, 52, + 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, 97,112, 0,118, + 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,119,101,105,103,104,116, + 0,100,101,102, 95,110,114, 0, 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0,110,111, 91, 51, + 93, 0,117,118, 91, 50, 93, 0, 99,111, 91, 50, 93, 0,105,110,100,101,120, 0,102, 0,105, 0,115, 91, 50, 53, 54, 93, 0,116, +111,116,100,105,115,112, 0, 40, 42,100,105,115,112,115, 41, 40, 41, 0,118, 91, 52, 93, 0,109,105,100, 0,118, 91, 50, 93, 0, + 42,102, 97, 99,101,115, 0, 42, 99,111,108,102, 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,118,101,114,116,115, 0,108, +101,118,101,108,115, 0,108,101,118,101,108, 95, 99,111,117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101,119,108,118,108, + 0,101,100,103,101,108,118,108, 0,112,105,110,108,118,108, 0,114,101,110,100,101,114,108,118,108, 0,117,115,101, 95, 99,111, +108, 0, 42,101,100,103,101, 95,102,108, 97,103,115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, 42,118,101,114, +116, 95,109, 97,112, 0, 42,101,100,103,101, 95,109, 97,112, 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42,111,108,100, 95, +101,100,103,101,115, 0,115,116, 97, 99,107,105,110,100,101,120, 0, 42,101,114,114,111,114, 0,109,111,100,105,102,105,101,114, + 0,115,117, 98,100,105,118, 84,121,112,101, 0,114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, 67, 97, 99,104, +101, 0, 42,109, 67, 97, 99,104,101, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,101,110,103,116,104, 0, +114, 97,110,100,111,109,105,122,101, 0,115,101,101,100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116, 97,114,116, 95, 99, 97, +112, 0, 42,101,110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, 95,111, 98, 0, +111,102,102,115,101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115,116, 0,102,105, +116, 95,116,121,112,101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105,115, 0,116,111, +108,101,114, 97,110, 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103,108,101, 0,118, + 97,108,117,101, 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, 0,101, 95,102, +108, 97,103,115, 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, 91, 51, 50, 93, + 0, 42,100,111,109, 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,116,105,109,101, 0, 42,116,101,120,116,117, +114,101, 0,115,116,114,101,110,103,116,104, 0,100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118,101,108, 0,116, +101,120,109, 97,112,112,105,110,103, 0, 42,109, 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101,114, 95,110, 97, +109,101, 91, 51, 50, 93, 0,117,118,108, 97,121,101,114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,116,111,114,115, 91, 49, + 48, 93, 0, 42,105,109, 97,103,101, 0,110,117,109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112,101, 99,116,120, + 0, 97,115,112,101, 99,116,121, 0,115, 99, 97,108,101,120, 0,115, 99, 97,108,101,121, 0,112,101,114, 99,101,110,116, 0,102, + 97, 99,101, 67,111,117,110,116, 0,102, 97, 99, 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99,101,110,116,101, +114, 0,115,116, 97,114,116,120, 0,115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111,119, 0,115,112, +101,101,100, 0,100, 97,109,112, 0,102, 97,108,108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105,102,101,116,105, +109,101, 0,100,101,102,111,114,109,102,108, 97,103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, 0,115,117, 98, +116, 97,114,103,101,116, 91, 51, 50, 93, 0,112, 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116, 91, + 51, 93, 0, 42,105,110,100,101,120, 97,114, 0,116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, 99,108,111,116, +104, 79, 98,106,101, 99,116, 0, 42,115,105,109, 95,112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114,109,115, 0, 42, +112,111,105,110,116, 95, 99, 97, 99,104,101, 0,112,116, 99, 97, 99,104,101,115, 0, 42,120, 0, 42,120,110,101,119, 0, 42,120, +111,108,100, 0, 42, 99,117,114,114,101,110,116, 95,120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, 0, 42, 99,117, +114,114,101,110,116, 95,118, 0, 42,109,102, 97, 99,101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109,102, 97, 99,101, +115, 0, 42, 98,118,104,116,114,101,101, 0, 42,118, 0, 42,100,109, 0, 99,102,114, 97, 0,111,112,101,114, 97,116,105,111,110, + 0,118,101,114,116,101,120, 0,116,111,116,105,110,102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,122,101, 0, 42, 98, +105,110,100,105,110,102,108,117,101,110, 99,101,115, 0, 42, 98,105,110,100,111,102,102,115,101,116,115, 0, 42, 98,105,110,100, + 99, 97,103,101, 99,111,115, 0,116,111,116, 99, 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,100, 0, 42,100,121, +110,105,110,102,108,117,101,110, 99,101,115, 0, 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0,100,121,110,103, +114,105,100,115,105,122,101, 0,100,121,110, 99,101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108,108,119,105,100, +116,104, 0, 98,105,110,100,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42, 98,105,110,100,119,101,105,103,104,116,115, 0, 42, 98, +105,110,100, 99,111,115, 0, 40, 42, 98,105,110,100,102,117,110, 99, 41, 40, 41, 0, 42,112,115,121,115, 0,116,111,116,100,109, +118,101,114,116, 0,116,111,116,100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,111,115,105,116,105,111, +110, 0,114, 97,110,100,111,109, 95,112,111,115,105,116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103,114,111,117,112, + 0,112,114,111,116,101, 99,116, 0,108,118,108, 0,115, 99,117,108,112,116,108,118,108, 0,116,111,116,108,118,108, 0,115,105, +109,112,108,101, 0, 42,102,115,115, 0, 42,116, 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, 0,118,103,114, +111,117,112, 95,110, 97,109,101, 91, 51, 50, 93, 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, 84,121,112,101, + 0,115,104,114,105,110,107, 79,112,116,115, 0,112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, 76,101,118,101, +108,115, 0, 42,111,114,105,103,105,110, 0,102, 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111,114,105,103,105, +110, 79,112,116,115, 0,111,102,102,115,101,116, 95,102, 97, 99, 0, 99,114,101, 97,115,101, 95,105,110,110,101,114, 0, 99,114, +101, 97,115,101, 95,111,117,116,101,114, 0, 99,114,101, 97,115,101, 95,114,105,109, 0, 42,111, 98, 95, 97,120,105,115, 0,115, +116,101,112,115, 0,114,101,110,100,101,114, 95,115,116,101,112,115, 0,105,116,101,114, 0,115, 99,114,101,119, 95,111,102,115, + 0, 97,110,103,108,101, 0,112,110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111,112,110,116,115, +119, 0,116,121,112,101,117, 0,116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, 0,100,117, 0, +100,118, 0,100,119, 0, 42,100,101,102, 0, 42,108, 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, 97,116, 91, 52, + 93, 91, 52, 93, 0, 42,101,100,105,116,108, 97,116,116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99,117,108,112,116, + 0,112, 97,114,116,121,112,101, 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115,117, 98,115,116, +114, 91, 51, 50, 93, 0, 42,116,114, 97, 99,107, 0, 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103,114,111,117,112, + 0, 42,112,114,111,120,121, 95,102,114,111,109, 0, 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, 98, 0, 42,112, +111,115,101, 0, 42,103,112,100, 0, 97,118,115, 0, 42,109,112, 97,116,104, 0, 99,111,110,115,116,114, 97,105,110,116, 67,104, + 97,110,110,101,108,115, 0,100,101,102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115, 0,114,101,115,116,111,114,101, + 95,109,111,100,101, 0, 42,109, 97,116, 98,105,116,115, 0, 97, 99,116, 99,111,108, 0,100,108,111, 99, 91, 51, 93, 0,111,114, +105,103, 91, 51, 93, 0,100,115,105,122,101, 91, 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116, 91, 52, 93, 0, +114,111,116, 65,120,105,115, 91, 51, 93, 0,100,114,111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110,103,108,101, 0, +100,114,111,116, 65,110,103,108,101, 0,111, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105,110,118, 91, 52, + 93, 91, 52, 93, 0,108, 97,121, 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,112,114,111,116,101, + 99,116,102,108, 97,103, 0,116,114, 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102,108, 97,103, 0, +105,112,111,102,108, 97,103, 0,105,112,111,119,105,110, 0,115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105,115,102,108, 97, +103, 0, 98,111,117,110,100,116,121,112,101, 0,100,117,112,111,110, 0,100,117,112,111,102,102, 0,100,117,112,115,116, 97, 0, +100,117,112,101,110,100, 0,115,102, 0,109, 97,115,115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116,105, 97, 0,102, +111,114,109,102, 97, 99,116,111,114, 0,114,100, 97,109,112,105,110,103, 0,109, 97,114,103,105,110, 0,109, 97,120, 95,118,101, +108, 0,109,105,110, 95,118,101,108, 0,109, 95, 99,111,110,116, 97, 99,116, 80,114,111, 99,101,115,115,105,110,103, 84,104,114, +101,115,104,111,108,100, 0,114,111,116,109,111,100,101, 0,100,116, 0,100,116,120, 0,101,109,112,116,121, 95,100,114, 97,119, +116,121,112,101, 0,112, 97,100, 49, 91, 51, 93, 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0,100,117,112,102, + 97, 99,101,115, 99, 97, 0,112,114,111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108,101,114,115, 0, + 97, 99,116,117, 97,116,111,114,115, 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, 97,109,101,102, +108, 97,103, 0,103, 97,109,101,102,108, 97,103, 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97,103, 0, 97,110, +105,115,111,116,114,111,112,105, 99, 70,114,105, 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97,105,110,116,115, + 0,110,108, 97,115,116,114,105,112,115, 0,104,111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115,116,101,109, 0, + 42,115,111,102,116, 0, 42,100,117,112, 95,103,114,111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97,103, 0,114,101, +115,116,114,105, 99,116,102,108, 97,103, 0,115,104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, 0,114,101, 99, + 97,108, 99,111, 0, 98,111,100,121, 95,116,121,112,101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, + 0, 42,100,101,114,105,118,101,100, 68,101,102,111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97,108, 0,108, 97, +115,116, 68, 97,116, 97, 77, 97,115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0,103,112,117,108, + 97,109,112, 0,112, 99, 95,105,100,115, 0, 42,100,117,112,108,105,108,105,115,116, 0, 99,117,114,105,110,100,101,120, 0, 97, + 99,116,105,118,101, 0,111,114,105,103,108, 97,121, 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116,101,100, 0,111, +109, 97,116, 91, 52, 93, 91, 52, 93, 0,111,114, 99,111, 91, 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111,114, 99,101,102, +105,101,108,100, 0,115,104, 97,112,101, 0,116,101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110,107, 95, 97,120, +105,115, 0,122,100,105,114, 0,102, 95,115,116,114,101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95,102,108,111,119, + 0,102, 95,115,105,122,101, 0,102, 95,112,111,119,101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100,105,115,116, 0, +102, 95,112,111,119,101,114, 95,114, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,100, 0,112,100,101,102, 95,100, 97,109, +112, 0,112,100,101,102, 95,114,100, 97,109,112, 0,112,100,101,102, 95,112,101,114,109, 0,112,100,101,102, 95,102,114,105, 99, +116, 0,112,100,101,102, 95,114,102,114,105, 99,116, 0,112,100,101,102, 95,115,116,105, 99,107,110,101,115,115, 0, 97, 98,115, +111,114,112,116,105,111,110, 0,112,100,101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105,102,116, 0,112, +100,101,102, 95,115, 98,111,102,116, 0, 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111,119, 0,107,105, +110,107, 95,102,114,101,113, 0,107,105,110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0,102,114,101,101, + 95,101,110,100, 0,116,101,120, 95,110, 97, 98,108, 97, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0,119,101,105,103, +104,116, 91, 49, 51, 93, 0,103,108,111, 98, 97,108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93, 0,102,114, 97,109, +101, 0,116,111,116,112,111,105,110,116, 0,100, 97,116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,120, 95, 97,114,114, + 97,121, 0, 42,100, 97,116, 97, 91, 56, 93, 0, 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, 0,115,105,109,102,114, 97,109, +101, 0,115,116, 97,114,116,102,114, 97,109,101, 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, 97,109,101, 0, +108, 97,115,116, 95,101,120, 97, 99,116, 0,110, 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,109,101, 91, 54, 52, + 93, 0,105,110,102,111, 91, 54, 52, 93, 0,112, 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97, 99,104,101, 0, 42, +101,100,105,116, 0, 40, 42,102,114,101,101, 95,101,100,105,116, 41, 40, 41, 0,108,105,110, 83,116,105,102,102, 0, 97,110,103, + 83,116,105,102,102, 0,118,111,108,117,109,101, 0,118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,116,101,114, 97,116, +105,111,110,115, 0,100,105,116,101,114, 97,116,105,111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,115, 0,107, 83, 82, + 72, 82, 95, 67, 76, 0,107, 83, 75, 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82, 95, 83, 80, 76, 84, + 95, 67, 76, 0,107, 83, 75, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 86, 67, 70, + 0,107, 68, 80, 0,107, 68, 71, 0,107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77, 84, 0,107, 67, 72, + 82, 0,107, 75, 72, 82, 0,107, 83, 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,108, 97,103,115, 0, +110,117,109, 99,108,117,115,116,101,114,105,116,101,114, 97,116,105,111,110,115, 0,119,101,108,100,105,110,103, 0,116,111,116, +115,112,114,105,110,103, 0, 42, 98,112,111,105,110,116, 0, 42, 98,115,112,114,105,110,103, 0,109,115,103, 95,108,111, 99,107, + 0,109,115,103, 95,118, 97,108,117,101, 0,110,111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71, 95, 77, 97,115,115, + 91, 51, 50, 93, 0,103,114, 97,118, 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, 0,112,104,121, +115,105, 99,115, 95,115,112,101,101,100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114,105, 99,116, 0, +109,105,110,103,111, 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116,103,114,111,117, +112, 0,110, 97,109,101,100, 86, 71, 95, 83,111,102,116,103,111, 97,108, 91, 51, 50, 93, 0,102,117,122,122,121,110,101,115,115, + 0,105,110,115,112,114,105,110,103, 0,105,110,102,114,105, 99,116, 0,110, 97,109,101,100, 86, 71, 95, 83,112,114,105,110,103, + 95, 75, 91, 51, 50, 93, 0,101,102,114, 97, 0,105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115,111,108,118,101, +114,102,108, 97,103,115, 0, 42, 42,107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, 99,111,110,100, +115,112,114,105,110,103, 0, 99,111,108, 98, 97,108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108,115,116,105,102, +102, 0,115, 98, 99, 95,109,111,100,101, 0, 97,101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, 0,109, 97,120, +108,111,111,112,115, 0, 99,104,111,107,101, 0,115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, 99, 0,115,112, +114,105,110,103,112,114,101,108,111, 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116,105,102,102, 0, +105,110,112,117,115,104, 0, 42,112,111,105,110,116, 99, 97, 99,104,101, 0, 42,101,102,102,101, 99,116,111,114, 95,119,101,105, +103,104,116,115, 0,108, 99,111,109, 91, 51, 93, 0,108,114,111,116, 91, 51, 93, 91, 51, 93, 0,108,115, 99, 97,108,101, 91, 51, + 93, 91, 51, 93, 0,112, 97,100, 52, 91, 52, 93, 0, 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,101,100,111, +112,116,105,111,110,115, 0,114,101,115,111,108,117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119,114,101,115,120, +121,122, 0,114,101, 97,108,115,105,122,101, 0,103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114,101,110,100,101, +114, 68,105,115,112,108, 97,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0,118,105,115, 99, +111,115,105,116,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0,103,114, 97,118, +120, 0,103,114, 97,118,121, 0,103,114, 97,118,122, 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, 69,110,100, 0, + 98, 97,107,101, 83,116, 97,114,116, 0, 98, 97,107,101, 69,110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82,101,102,105,110, +101, 0,105,110,105, 86,101,108,120, 0,105,110,105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111,114,103, 77,101, +115,104, 0, 42,109,101,115,104, 83,117,114,102, 97, 99,101, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102,100, 97,116, 97, + 80, 97,116,104, 91, 50, 52, 48, 93, 0, 98, 98, 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, 51, 93, 0,116, +121,112,101, 70,108, 97,103,115, 0,100,111,109, 97,105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117,109,101, 73,110, +105,116, 84,121,112,101, 0,112, 97,114,116, 83,108,105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116,101, 84,114, 97, + 99,101,114,115, 0,103,101,110,101,114, 97,116,101, 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, 99,101, 83,109, +111,111,116,104,105,110,103, 0,115,117,114,102, 97, 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, 99,108,101, 73, +110,102, 83,105,122,101, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70,105,101,108,100, + 83,105,122,101, 0, 42,109,101,115,104, 83,117,114,102, 78,111,114,109, 97,108,115, 0, 99,112,115, 84,105,109,101, 83,116, 97, +114,116, 0, 99,112,115, 84,105,109,101, 69,110,100, 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116,114, 97, 99,116, +102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97,100,105,117,115, + 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99,105,116,121,102, +111,114, 99,101, 82, 97,100,105,117,115, 0,108, 97,115,116,103,111,111,100,102,114, 97,109,101, 0,109,105,115,116,121,112,101, + 0,104,111,114,114, 0,104,111,114,103, 0,104,111,114, 98, 0,104,111,114,107, 0,122,101,110,114, 0,122,101,110,103, 0,122, +101,110, 98, 0,122,101,110,107, 0, 97,109, 98,107, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101, +120,112, 0,114, 97,110,103,101, 0,108,105,110,102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97, + 99,116,105,118,105,116,121, 66,111,120, 82, 97,100,105,117,115, 0,115,107,121,116,121,112,101, 0,111, 99, 99,108,117,115,105, +111,110, 82,101,115, 0,112,104,121,115,105, 99,115, 69,110,103,105,110,101, 0,116,105, 99,114, 97,116,101, 0,109, 97,120,108, +111,103,105, 99,115,116,101,112, 0,112,104,121,115,117, 98,115,116,101,112, 0,109, 97,120,112,104,121,115,116,101,112, 0,109, +105,115,105, 0,109,105,115,116,115,116, 97, 0,109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0,115,116, 97,114, +114, 0,115,116, 97,114,103, 0,115,116, 97,114, 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, 0,115,116, 97, +114,109,105,110,100,105,115,116, 0,115,116, 97,114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105,115,101, 0,100, +111,102,115,116, 97, 0,100,111,102,101,110,100, 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97,111,100,105,115, +116, 0, 97,111,100,105,115,116,102, 97, 99, 0, 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, 97,111,109,111, +100,101, 0, 97,111,115, 97,109,112, 0, 97,111,109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97,100, 97,112,116, + 95,116,104,114,101,115,104, 0, 97,111, 95, 97,100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97,111, 95, 97,112, +112,114,111,120, 95,101,114,114,111,114, 0, 97,111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116,105,111,110, 0, + 97,111, 95,105,110,100,105,114,101, 99,116, 95,101,110,101,114,103,121, 0, 97,111, 95,101,110,118, 95,101,110,101,114,103,121, + 0, 97,111, 95,112, 97,100, 50, 0, 97,111, 95,105,110,100,105,114,101, 99,116, 95, 98,111,117,110, 99,101,115, 0, 97,111, 95, +112, 97,100, 0, 97,111, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, 95,109,101,116, +104,111,100, 0, 97,111, 95, 97,112,112,114,111,120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101,114,101, 0, 42, + 97,111,116, 97, 98,108,101,115, 0,112, 97,100, 91, 51, 93, 0,115,101,108, 99,111,108, 0,115,120, 0,115,121, 0, 42,108,112, + 70,111,114,109, 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, 98, 70,111,114,109, 97,116, 0, 99, 98, 80, 97,114,109,115, + 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108,101,114, 0,100,119, 75,101,121, 70,114, 97,109,101, 69,118, +101,114,121, 0,100,119, 81,117, 97,108,105,116,121, 0,100,119, 66,121,116,101,115, 80,101,114, 83,101, 99,111,110,100, 0,100, +119, 70,108, 97,103,115, 0,100,119, 73,110,116,101,114,108,101, 97,118,101, 69,118,101,114,121, 0, 97,118,105, 99,111,100,101, + 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114,109,115, 0, 42,112, 97,100, 0, 99,100, 83,105,122,101, 0, +113,116, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 99,111,100,101, 99, 84,121,112,101, 0, 99,111,100,101, 99, + 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0, 99,111,100,101, 99, 0, 99,111,100,101, 99, 70,108, 97,103,115, 0, + 99,111,108,111,114, 68,101,112,116,104, 0, 99,111,100,101, 99, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0, +109,105,110, 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 84,101,109,112,111,114, 97,108, 81,117, 97, +108,105,116,121, 0,107,101,121, 70,114, 97,109,101, 82, 97,116,101, 0, 98,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 99, +111,100,101, 99, 84,121,112,101, 0, 97,117,100,105,111, 83, 97,109,112,108,101, 82, 97,116,101, 0, 97,117,100,105,111, 66,105, +116, 68,101,112,116,104, 0, 97,117,100,105,111, 67,104, 97,110,110,101,108,115, 0, 97,117,100,105,111, 67,111,100,101, 99, 70, +108, 97,103,115, 0, 97,117,100,105,111, 66,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 95, 99,111,100,101, 99, 0,118,105, +100,101,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, +109,105,120,114, 97,116,101, 0, 97,117,100,105,111, 95,118,111,108,117,109,101, 0,103,111,112, 95,115,105,122,101, 0,114, 99, + 95,109,105,110, 95,114, 97,116,101, 0,114, 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102,102,101,114, 95, +115,105,122,101, 0,109,117,120, 95,112, 97, 99,107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116,101, 0,109,105, +120,114, 97,116,101, 0,109, 97,105,110, 0,115,112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,111,112,112,108,101, +114, 95,102, 97, 99,116,111,114, 0,100,105,115,116, 97,110, 99,101, 95,109,111,100,101,108, 0, 42,109, 97,116, 95,111,118,101, +114,114,105,100,101, 0, 42,108,105,103,104,116, 95,111,118,101,114,114,105,100,101, 0,108, 97,121, 95,122,109, 97,115,107, 0, +108, 97,121,102,108, 97,103, 0,112, 97,115,115,102,108, 97,103, 0,112, 97,115,115, 95,120,111,114, 0, 42, 97,118,105, 99,111, +100,101, 99,100, 97,116, 97, 0, 42,113,116, 99,111,100,101, 99,100, 97,116, 97, 0,113,116, 99,111,100,101, 99,115,101,116,116, +105,110,103,115, 0,102,102, 99,111,100,101, 99,100, 97,116, 97, 0,115,117, 98,102,114, 97,109,101, 0,112,115,102,114, 97, 0, +112,101,102,114, 97, 0,105,109, 97,103,101,115, 0,102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97,100,115, 0,102,114, + 97,109,101,108,101,110, 0, 98,108,117,114,102, 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101,100,103,101, 66, + 0,102,117,108,108,115, 99,114,101,101,110, 0,120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113,112,108, 97,121, + 0, 97,116,116,114,105, 98, 0,114,116, 50, 0,102,114, 97,109,101, 95,115,116,101,112, 0,115,116,101,114,101,111,109,111,100, +101, 0,100,105,109,101,110,115,105,111,110,115,112,114,101,115,101,116, 0,109, 97,120,105,109,115,105,122,101, 0,120,115, 99, +104, 0,121,115, 99,104, 0,120,112, 97,114,116,115, 0,121,112, 97,114,116,115, 0,119,105,110,112,111,115, 0,112,108, 97,110, +101,115, 0,105,109,116,121,112,101, 0,115,117, 98,105,109,116,121,112,101, 0,113,117, 97,108,105,116,121, 0,100,105,115,112, +108, 97,121,109,111,100,101, 0,114,112, 97,100, 49, 0,114,112, 97,100, 50, 0,115, 99,101,109,111,100,101, 0,114, 97,121,116, +114, 97, 99,101, 95,111,112,116,105,111,110,115, 0,114, 97,121,116,114, 97, 99,101, 95,115,116,114,117, 99,116,117,114,101, 0, +114,101,110,100,101,114,101,114, 0,111, 99,114,101,115, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, 0,102,114,115, + 95,115,101, 99, 0,101,100,103,101,105,110,116, 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100,105,115,112,114, +101, 99,116, 0,108, 97,121,101,114,115, 0, 97, 99,116,108, 97,121, 0,109, 98,108,117,114, 95,115, 97,109,112,108,101,115, 0, +120, 97,115,112, 0,121, 97,115,112, 0,102,114,115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, 0, 99,111,108, +111,114, 95,109,103,116, 95,102,108, 97,103, 0,112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117,101, 0,112,111, +115,116,115, 97,116, 0,100,105,116,104,101,114, 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95,111,115, 97, 0, + 98, 97,107,101, 95,102,105,108,116,101,114, 0, 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102,108, 97,103, 0, + 98, 97,107,101, 95,110,111,114,109, 97,108, 95,115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95,115,112,108,105, +116, 0, 98, 97,107,101, 95,109, 97,120,100,105,115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, 0, 98, 97,107, +101, 95,112, 97,100, 0, 98, 97, 99,107, 98,117,102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0,115,116, 97,109, +112, 0,115,116, 97,109,112, 95,102,111,110,116, 95,105,100, 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, 49, 54, 48, 93, + 0,102,103, 95,115,116, 97,109,112, 91, 52, 93, 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, 0,115,101,113, 95,112,114,101, +118, 95,116,121,112,101, 0,115,101,113, 95,114,101,110,100, 95,116,121,112,101, 0,115,101,113, 95,102,108, 97,103, 0,112, 97, +100, 53, 91, 53, 93, 0,115,105,109,112,108,105,102,121, 95,102,108, 97,103, 0,115,105,109,112,108,105,102,121, 95,115,117, 98, +115,117,114,102, 0,115,105,109,112,108,105,102,121, 95,115,104, 97,100,111,119,115, 97,109,112,108,101,115, 0,115,105,109,112, +108,105,102,121, 95,112, 97,114,116,105, 99,108,101,115, 0,115,105,109,112,108,105,102,121, 95, 97,111,115,115,115, 0, 99,105, +110,101,111,110,119,104,105,116,101, 0, 99,105,110,101,111,110, 98,108, 97, 99,107, 0, 99,105,110,101,111,110,103, 97,109,109, + 97, 0,106,112, 50, 95,112,114,101,115,101,116, 0,106,112, 50, 95,100,101,112,116,104, 0,114,112, 97,100, 51, 0,100,111,109, +101,114,101,115, 0,100,111,109,101,109,111,100,101, 0,100,111,109,101, 97,110,103,108,101, 0,100,111,109,101,116,105,108,116, + 0,100,111,109,101,114,101,115, 98,117,102, 0, 42,100,111,109,101,116,101,120,116, 0,101,110,103,105,110,101, 91, 51, 50, 93, + 0,112, 97,114,116,105, 99,108,101, 95,112,101,114, 99, 0,115,117, 98,115,117,114,102, 95,109, 97,120, 0,115,104, 97,100, 98, +117,102,115, 97,109,112,108,101, 95,109, 97,120, 0, 97,111, 95,101,114,114,111,114, 0,116,105,108,116, 0,114,101,115, 98,117, +102, 0, 42,119, 97,114,112,116,101,120,116, 0, 99,111,108, 91, 51, 93, 0,109, 97,116,109,111,100,101, 0,102,114, 97,109,105, +110,103, 0,114,116, 49, 0,100,111,109,101, 0,115,116,101,114,101,111,102,108, 97,103, 0,101,121,101,115,101,112, 97,114, 97, +116,105,111,110, 0, 42, 99, 97,109,101,114, 97, 0, 42, 42, 98,114,117,115,104,101,115, 0, 97, 99,116,105,118,101, 95, 98,114, +117,115,104, 95,105,110,100,101,120, 0, 98,114,117,115,104, 95, 99,111,117,110,116, 0, 42,112, 97,105,110,116, 95, 99,117,114, +115,111,114, 0,112, 97,105,110,116, 95, 99,117,114,115,111,114, 95, 99,111,108, 91, 52, 93, 0,112, 97,105,110,116, 0,115,101, + 97,109, 95, 98,108,101,101,100, 0,110,111,114,109, 97,108, 95, 97,110,103,108,101, 0,115, 99,114,101,101,110, 95,103,114, 97, + 98, 95,115,105,122,101, 91, 50, 93, 0, 42,112, 97,105,110,116, 99,117,114,115,111,114, 0,105,110,118,101,114,116, 0,116,111, +116,114,101,107,101,121, 0,116,111,116, 97,100,100,107,101,121, 0, 98,114,117,115,104,116,121,112,101, 0, 98,114,117,115,104, + 91, 55, 93, 0,101,109,105,116,116,101,114,100,105,115,116, 0,115,101,108,101, 99,116,109,111,100,101, 0,101,100,105,116,116, +121,112,101, 0,100,114, 97,119, 95,115,116,101,112, 0,102, 97,100,101, 95,102,114, 97,109,101,115, 0,110, 97,109,101, 91, 51, + 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, 93, 0,114, 97,100,105, 97,108, 95,115,121,109,109, 91, 51, 93, 0,108, 97,115,116, + 95,120, 0,108, 97,115,116, 95,121, 0,108, 97,115,116, 95, 97,110,103,108,101, 0,100,114, 97,119, 95, 97,110, 99,104,111,114, +101,100, 0, 97,110, 99,104,111,114,101,100, 95,115,105,122,101, 0, 97,110, 99,104,111,114,101,100, 95,108,111, 99, 97,116,105, +111,110, 91, 51, 93, 0, 97,110, 99,104,111,114,101,100, 95,105,110,105,116,105, 97,108, 95,109,111,117,115,101, 91, 50, 93, 0, +100,114, 97,119, 95,112,114,101,115,115,117,114,101, 0,112,114,101,115,115,117,114,101, 95,118, 97,108,117,101, 0,115,112,101, + 99,105, 97,108, 95,114,111,116, 97,116,105,111,110, 0, 42,118,112, 97,105,110,116, 95,112,114,101,118, 0, 42,119,112, 97,105, +110,116, 95,112,114,101,118, 0, 42,118,112, 97,105,110,116, 0, 42,119,112, 97,105,110,116, 0,118,103,114,111,117,112, 95,119, +101,105,103,104,116, 0, 99,111,114,110,101,114,116,121,112,101, 0,101,100,105,116, 98,117,116,102,108, 97,103, 0,106,111,105, +110,116,114,105,108,105,109,105,116, 0,100,101,103,114, 0,116,117,114,110, 0,101,120,116,114, 95,111,102,102,115, 0,100,111, +117, 98,108,105,109,105,116, 0,110,111,114,109, 97,108,115,105,122,101, 0, 97,117,116,111,109,101,114,103,101, 0,115,101,103, +109,101,110,116,115, 0,114,105,110,103,115, 0,118,101,114,116,105, 99,101,115, 0,117,110,119,114, 97,112,112,101,114, 0,117, +118, 99, 97,108, 99, 95,114, 97,100,105,117,115, 0,117,118, 99, 97,108, 99, 95, 99,117, 98,101,115,105,122,101, 0,117,118, 99, + 97,108, 99, 95,109, 97,114,103,105,110, 0,117,118, 99, 97,108, 99, 95,109, 97,112,100,105,114, 0,117,118, 99, 97,108, 99, 95, +109, 97,112, 97,108,105,103,110, 0,117,118, 99, 97,108, 99, 95,102,108, 97,103, 0,117,118, 95,102,108, 97,103, 0,117,118, 95, +115,101,108,101, 99,116,109,111,100,101, 0,117,118, 95,112, 97,100, 91, 50, 93, 0, 97,117,116,111,105,107, 95, 99,104, 97,105, +110,108,101,110, 0,105,109, 97,112, 97,105,110,116, 0,112, 97,114,116,105, 99,108,101, 0,112,114,111,112,111,114,116,105,111, +110, 97,108, 95,115,105,122,101, 0,115,101,108,101, 99,116, 95,116,104,114,101,115,104, 0, 99,108,101, 97,110, 95,116,104,114, +101,115,104, 0, 97,117,116,111,107,101,121, 95,109,111,100,101, 0, 97,117,116,111,107,101,121, 95,102,108, 97,103, 0,114,101, +116,111,112,111, 95,109,111,100,101, 0,114,101,116,111,112,111, 95,112, 97,105,110,116, 95,116,111,111,108, 0,108,105,110,101, + 95,100,105,118, 0,101,108,108,105,112,115,101, 95,100,105,118, 0,114,101,116,111,112,111, 95,104,111,116,115,112,111,116, 0, +109,117,108,116,105,114,101,115, 95,115,117, 98,100,105,118, 95,116,121,112,101, 0,115,107,103,101,110, 95,114,101,115,111,108, +117,116,105,111,110, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,105,110,116,101,114,110, 97,108, 0,115, +107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,101,120,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,108,101, +110,103,116,104, 95,114, 97,116,105,111, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,108,105,109,105,116, 0,115,107, +103,101,110, 95, 97,110,103,108,101, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 99,111,114,114,101,108, 97,116,105,111, +110, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,115,121,109,109,101,116,114,121, 95,108,105,109,105,116, 0,115,107,103, +101,110, 95,114,101,116, 97,114,103,101,116, 95, 97,110,103,108,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114, +101,116, 97,114,103,101,116, 95,108,101,110,103,116,104, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97, +114,103,101,116, 95,100,105,115,116, 97,110, 99,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,111,112,116,105,111, +110,115, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 95,112, + 97,115,115,101,115, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110,115, 91, 51, 93, 0,115,107,103,101, +110, 95,109,117,108,116,105, 95,108,101,118,101,108, 0, 42,115,107,103,101,110, 95,116,101,109,112,108, 97,116,101, 0, 98,111, +110,101, 95,115,107,101,116, 99,104,105,110,103, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 95, 99,111,110,118, +101,114,116, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110, 95,110,117,109, 98,101,114, 0,115,107,103, +101,110, 95,114,101,116, 97,114,103,101,116, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,114,101,116, 97,114,103, +101,116, 95,114,111,108,108, 0,115,107,103,101,110, 95,115,105,100,101, 95,115,116,114,105,110,103, 91, 56, 93, 0,115,107,103, +101,110, 95,110,117,109, 95,115,116,114,105,110,103, 91, 56, 93, 0,101,100,103,101, 95,109,111,100,101, 0,115,110, 97,112, 95, +109,111,100,101, 0,115,110, 97,112, 95,102,108, 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0,112,114,111,112,111, +114,116,105,111,110, 97,108, 0,112,114,111,112, 95,109,111,100,101, 0, 97,117,116,111, 95,110,111,114,109, 97,108,105,122,101, + 0,105,110,116,112, 97,100, 0,116,111,116,111, 98,106, 0,116,111,116,108, 97,109,112, 0,116,111,116,111, 98,106,115,101,108, + 0,116,111,116, 99,117,114,118,101, 0,116,111,116,109,101,115,104, 0,116,111,116, 97,114,109, 97,116,117,114,101, 0,115, 99, + 97,108,101, 95,108,101,110,103,116,104, 0,115,121,115,116,101,109, 0,103,114, 97,118,105,116,121, 91, 51, 93, 0,113,117,105, + 99,107, 95, 99, 97, 99,104,101, 95,115,116,101,112, 0, 42,119,111,114,108,100, 0, 42,115,101,116, 0, 98, 97,115,101, 0, 42, + 98, 97,115, 97, 99,116, 0, 42,111, 98,101,100,105,116, 0, 99,117,114,115,111,114, 91, 51, 93, 0,116,119, 99,101,110,116, 91, + 51, 93, 0,116,119,109,105,110, 91, 51, 93, 0,116,119,109, 97,120, 91, 51, 93, 0,108, 97,121, 97, 99,116, 0, 42,101,100, 0, + 42,116,111,111,108,115,101,116,116,105,110,103,115, 0, 42,115,116, 97,116,115, 0, 97,117,100,105,111, 0,116,114, 97,110,115, +102,111,114,109, 95,115,112, 97, 99,101,115, 0, 42,115,111,117,110,100, 95,115, 99,101,110,101, 0, 42,115,111,117,110,100, 95, +115, 99,101,110,101, 95,104, 97,110,100,108,101, 0, 42,102,112,115, 95,105,110,102,111, 0, 42,116,104,101, 68, 97,103, 0,100, + 97,103,105,115,118, 97,108,105,100, 0,100, 97,103,102,108, 97,103,115, 0,106,117,109,112,102,114, 97,109,101, 0,112, 97,100, + 53, 0, 97, 99,116,105,118,101, 95,107,101,121,105,110,103,115,101,116, 0,107,101,121,105,110,103,115,101,116,115, 0,103,109, + 0,117,110,105,116, 0,112,104,121,115,105, 99,115, 95,115,101,116,116,105,110,103,115, 0, 98,108,101,110,100, 0,118,105,101, +119, 0,119,105,110,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101, +119,105,110,118, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,105,110,118, + 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116,111, 98, + 91, 52, 93, 91, 52, 93, 0,116,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,122, +102, 97, 99, 0, 99, 97,109,100,120, 0, 99, 97,109,100,121, 0,112,105,120,115,105,122,101, 0, 99, 97,109,122,111,111,109, 0, +118,105,101,119, 98,117,116, 0,116,119,100,114, 97,119,102,108, 97,103, 0,114,102,108, 97,103, 0,118,105,101,119,108,111, 99, +107, 0,112,101,114,115,112, 0, 99,108,105,112, 91, 54, 93, 91, 52, 93, 0, 99,108,105,112, 95,108,111, 99, 97,108, 91, 54, 93, + 91, 52, 93, 0, 42, 99,108,105,112, 98, 98, 0, 42,108,111, 99, 97,108,118,100, 0, 42,114,105, 0, 42,114,101,116,111,112,111, + 95,118,105,101,119, 95,100, 97,116, 97, 0, 42,100,101,112,116,104,115, 0, 42,115,109,115, 0, 42,115,109,111,111,116,104, 95, +116,105,109,101,114, 0,108,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,108,112,101,114,115,112, 0,108,118,105,101,119, 0, +103,114,105,100,118,105,101,119, 0,116,119, 97,110,103,108,101, 91, 51, 93, 0,112, 97,100,102, 0,114,101,103,105,111,110, 98, + 97,115,101, 0,115,112, 97, 99,101,116,121,112,101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, 99,107,104, 97, +110,100,108,101,114, 91, 56, 93, 0,108, 97,121, 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0, 98,103,112, +105, 99, 98, 97,115,101, 0, 42, 98,103,112,105, 99, 0,111, 98, 95, 99,101,110,116,114,101, 95, 98,111,110,101, 91, 51, 50, 93, + 0,100,114, 97,119,116,121,112,101, 0,115, 99,101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0,112,105,118,111,116, + 95,108, 97,115,116, 0,103,114,105,100, 0,110,101, 97,114, 0,102, 97,114, 0,103,114,105,100,108,105,110,101,115, 0,103,114, +105,100,102,108, 97,103, 0,103,114,105,100,115,117, 98,100,105,118, 0,109,111,100,101,115,101,108,101, 99,116, 0,107,101,121, +102,108, 97,103,115, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101, 0,116,119,102,108, 97,103, 0, 99,117,115,116,111, +109,100, 97,116, 97, 95,109, 97,115,107, 0, 97,102,116,101,114,100,114, 97,119, 0,122, 98,117,102, 0,120,114, 97,121, 0,110, +100,111,102,109,111,100,101, 0,110,100,111,102,102,105,108,116,101,114, 0, 42,112,114,111,112,101,114,116,105,101,115, 95,115, +116,111,114, 97,103,101, 0,118,101,114,116, 0,104,111,114, 0,109, 97,115,107, 0,109,105,110, 91, 50, 93, 0,109, 97,120, 91, + 50, 93, 0,109,105,110,122,111,111,109, 0,109, 97,120,122,111,111,109, 0,115, 99,114,111,108,108, 0,115, 99,114,111,108,108, + 95,117,105, 0,107,101,101,112,116,111,116, 0,107,101,101,112,122,111,111,109, 0,107,101,101,112,111,102,115, 0, 97,108,105, +103,110, 0,119,105,110,120, 0,119,105,110,121, 0,111,108,100,119,105,110,120, 0,111,108,100,119,105,110,121, 0, 42,116, 97, + 98, 95,111,102,102,115,101,116, 0,116, 97, 98, 95,110,117,109, 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99,114,101,101,110, + 0,118, 50,100, 0, 42, 97,100,115, 0,103,104,111,115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, 97,112, 0, 99, +117,114,115,111,114, 86, 97,108, 0,109, 97,105,110, 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117,115,101,114, 0, +114,101, 95, 97,108,105,103,110, 0,112,114,101,118,105,101,119, 0,112, 97,116,104,102,108, 97,103, 0,100, 97,116, 97,105, 99, +111,110, 0, 42,112,105,110,105,100, 0,114,101,110,100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104,111,119,110, 0, +122,101, 98,114, 97, 0,122,111,111,109, 0,116,105,116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,102,105, +108,101, 91, 56, 48, 93, 0,114,101,110, 97,109,101,102,105,108,101, 91, 56, 48, 93, 0,115,111,114,116, 0,100,105,115,112,108, + 97,121, 0, 97, 99,116,105,118,101, 95, 98,111,111,107,109, 97,114,107, 0, 97, 99,116,105,118,101, 95,102,105,108,101, 0,115, +101,108,115,116, 97,116,101, 0,102, 95,102,112, 0,102,112, 95,115,116,114, 91, 56, 93, 0,115, 99,114,111,108,108, 95,111,102, +102,115,101,116, 0, 42,112, 97,114, 97,109,115, 0, 42,102,105,108,101,115, 0, 42,102,111,108,100,101,114,115, 95,112,114,101, +118, 0, 42,102,111,108,100,101,114,115, 95,110,101,120,116, 0, 42,111,112, 0, 42,115,109,111,111,116,104,115, 99,114,111,108, +108, 95,116,105,109,101,114, 0, 42,108, 97,121,111,117,116, 0,114,101, 99,101,110,116,110,114, 0, 98,111,111,107,109, 97,114, +107,110,114, 0,115,121,115,116,101,109,110,114, 0,116,114,101,101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97, +114, 99,104, 95,115,116,114,105,110,103, 91, 51, 50, 93, 0,115,101, 97,114, 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, + 95,102,108, 97,103,115, 0,100,111, 95, 0,111,117,116,108,105,110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0, + 42, 99,117,109, 97,112, 0,105,109, 97,110,114, 0, 99,117,114,116,105,108,101, 0,105,109,116,121,112,101,110,114, 0,108,111, + 99,107, 0,112,105,110, 0,100,116, 95,117,118, 0,115,116,105, 99,107,121, 0,100,116, 95,117,118,115,116,114,101,116, 99,104, + 0, 99,117,114,115,111,114, 91, 50, 93, 0, 99,101,110,116,120, 0, 99,101,110,116,121, 0,115, 99,111,112,101,115, 0,115, 97, +109,112,108,101, 95,108,105,110,101, 95,104,105,115,116, 0, 42,116,101,120,116, 0,116,111,112, 0,118,105,101,119,108,105,110, +101,115, 0,108,104,101,105,103,104,116, 0, 99,119,105,100,116,104, 0,108,105,110,101,110,114,115, 95,116,111,116, 0,108,101, +102,116, 0,115,104,111,119,108,105,110,101,110,114,115, 0,116, 97, 98,110,117,109, 98,101,114, 0,115,104,111,119,115,121,110, +116, 97,120, 0,111,118,101,114,119,114,105,116,101, 0,108,105,118,101, 95,101,100,105,116, 0,112,105,120, 95,112,101,114, 95, +108,105,110,101, 0,116,120,116,115, 99,114,111,108,108, 0,116,120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100, +111,112,108,117,103,105,110,115, 0,102,105,110,100,115,116,114, 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99,101,115,116,114, + 91, 50, 53, 54, 93, 0, 42,112,121, 95,100,114, 97,119, 0, 42,112,121, 95,101,118,101,110,116, 0, 42,112,121, 95, 98,117,116, +116,111,110, 0, 42,112,121, 95, 98,114,111,119,115,101,114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,111, 98, + 97,108,100,105, 99,116, 0,108, 97,115,116,115,112, 97, 99,101, 0,115, 99,114,105,112,116,110, 97,109,101, 91, 50, 53, 54, 93, + 0,115, 99,114,105,112,116, 97,114,103, 91, 50, 53, 54, 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,117,116, 95,114,101,102, +115, 0, 42, 97,114,114, 97,121, 0, 99, 97, 99,104,101,115, 0, 99, 97, 99,104,101, 95,100,105,115,112,108, 97,121, 0,114,101, +100,114, 97,119,115, 0, 42,105,100, 0, 97,115,112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, 0,109,121, 0, + 42,101,100,105,116,116,114,101,101, 0,116,114,101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,109,101,110,117, 0, +110,117,109,116,105,108,101,115,120, 0,110,117,109,116,105,108,101,115,121, 0,118,105,101,119,114,101, 99,116, 0, 98,111,111, +107,109, 97,114,107,114,101, 99,116, 0,115, 99,114,111,108,108,112,111,115, 0,115, 99,114,111,108,108,104,101,105,103,104,116, + 0,115, 99,114,111,108,108, 97,114,101, 97, 0,114,101,116,118, 97,108, 0,112,114,118, 95,119, 0,112,114,118, 95,104, 0, 40, + 42,114,101,116,117,114,110,102,117,110, 99, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95,101,118,101,110, +116, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95, 97,114,103,115, 41, 40, 41, 0, 42, 97,114,103, 49, 0, + 42, 97,114,103, 50, 0, 42,109,101,110,117,112, 0, 42,112,117,112,109,101,110,117, 0, 42,105,109,103, 0,108,101,110, 95, 97, +108,108,111, 99, 0, 99,117,114,115,111,114, 0,114,112,116, 95,109, 97,115,107, 0,115, 99,114,111,108,108, 98, 97, 99,107, 0, +104,105,115,116,111,114,121, 0,112,114,111,109,112,116, 91, 50, 53, 54, 93, 0,108, 97,110,103,117, 97,103,101, 91, 51, 50, 93, + 0,115,101,108, 95,115,116, 97,114,116, 0,115,101,108, 95,101,110,100, 0,102,105,108,116,101,114, 91, 54, 52, 93, 0,102,105, +108,101,110, 97,109,101, 91, 50, 53, 54, 93, 0, 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,100, 0,114, 95,116, +111, 95,108, 0,112,111,105,110,116,115, 0,107,101,114,110,105,110,103, 0,105,116, 97,108,105, 99, 0, 98,111,108,100, 0,115, +104, 97,100,111,119, 0,115,104, 97,100,120, 0,115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, 97, 0,115,104, + 97,100,111,119, 99,111,108,111,114, 0,112, 97,110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, 98,101,108, 0, +119,105,100,103,101,116,108, 97, 98,101,108, 0,119,105,100,103,101,116, 0,112, 97,110,101,108,122,111,111,109, 0,109,105,110, +108, 97, 98,101,108, 99,104, 97,114,115, 0,109,105,110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111,108,117,109,110, +115,112, 97, 99,101, 0,116,101,109,112,108, 97,116,101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, 0, 98,117,116, +116,111,110,115,112, 97, 99,101,120, 0, 98,117,116,116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108,115,112, 97, 99, +101, 0,112, 97,110,101,108,111,117,116,101,114, 0,112, 97,100, 91, 49, 93, 0,111,117,116,108,105,110,101, 91, 52, 93, 0,105, +110,110,101,114, 91, 52, 93, 0,105,110,110,101,114, 95,115,101,108, 91, 52, 93, 0,105,116,101,109, 91, 52, 93, 0,116,101,120, +116, 91, 52, 93, 0,116,101,120,116, 95,115,101,108, 91, 52, 93, 0,115,104, 97,100,101,100, 0,115,104, 97,100,101,116,111,112, + 0,115,104, 97,100,101,100,111,119,110, 0, 97,108,112,104, 97, 95, 99,104,101, 99,107, 0,105,110,110,101,114, 95, 97,110,105, +109, 91, 52, 93, 0,105,110,110,101,114, 95, 97,110,105,109, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, + 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101, +110, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 95,115,101,108, 91, 52, 93, 0,119, 99,111,108, 95,114,101, +103,117,108, 97,114, 0,119, 99,111,108, 95,116,111,111,108, 0,119, 99,111,108, 95,116,101,120,116, 0,119, 99,111,108, 95,114, + 97,100,105,111, 0,119, 99,111,108, 95,111,112,116,105,111,110, 0,119, 99,111,108, 95,116,111,103,103,108,101, 0,119, 99,111, +108, 95,110,117,109, 0,119, 99,111,108, 95,110,117,109,115,108,105,100,101,114, 0,119, 99,111,108, 95,109,101,110,117, 0,119, + 99,111,108, 95,112,117,108,108,100,111,119,110, 0,119, 99,111,108, 95,109,101,110,117, 95, 98, 97, 99,107, 0,119, 99,111,108, + 95,109,101,110,117, 95,105,116,101,109, 0,119, 99,111,108, 95, 98,111,120, 0,119, 99,111,108, 95,115, 99,114,111,108,108, 0, +119, 99,111,108, 95,112,114,111,103,114,101,115,115, 0,119, 99,111,108, 95,108,105,115,116, 95,105,116,101,109, 0,119, 99,111, +108, 95,115,116, 97,116,101, 0,105, 99,111,110,102,105,108,101, 91, 56, 48, 93, 0, 98, 97, 99,107, 91, 52, 93, 0,116,105,116, +108,101, 91, 52, 93, 0,116,101,120,116, 95,104,105, 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,104,101, 97,100,101, +114, 95,116,105,116,108,101, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 91, 52, 93, 0,104,101, 97,100,101,114, + 95,116,101,120,116, 95,104,105, 91, 52, 93, 0, 98,117,116,116,111,110, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,105,116, +108,101, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, + 95,104,105, 91, 52, 93, 0,108,105,115,116, 91, 52, 93, 0,108,105,115,116, 95,116,105,116,108,101, 91, 52, 93, 0,108,105,115, +116, 95,116,101,120,116, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,112, 97,110,101,108, 91, + 52, 93, 0,112, 97,110,101,108, 95,116,105,116,108,101, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 91, 52, 93, 0, +112, 97,110,101,108, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93, 0,115,104, 97,100,101, + 50, 91, 52, 93, 0,104,105,108,105,116,101, 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,101, 91, 52, 93, 0,115, +101,108,101, 99,116, 91, 52, 93, 0,108, 97,109,112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, 52, 93, 0,103,114,111,117,112, + 91, 52, 93, 0,103,114,111,117,112, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,111,114,109, 91, 52, 93, + 0,118,101,114,116,101,120, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, + 91, 52, 93, 0,101,100,103,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101, 97,109, 91, 52, 93, 0, +101,100,103,101, 95,115,104, 97,114,112, 91, 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, 93, 0,101,100, +103,101, 95, 99,114,101, 97,115,101, 91, 52, 93, 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101,108,101, 99,116, + 91, 52, 93, 0,102, 97, 99,101, 95,100,111,116, 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0,118,101,114,116,101,120, + 95,110,111,114,109, 97,108, 91, 52, 93, 0, 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110,101, 95,112,111, +115,101, 91, 52, 93, 0,115,116,114,105,112, 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, 52, 93, 0, 99, +102,114, 97,109,101, 91, 52, 93, 0,110,117,114, 98, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,118,108,105,110, +101, 91, 52, 93, 0, 97, 99,116, 95,115,112,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95,117,108,105,110, +101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95,118,108,105,110,101, 91, 52, 93, 0,108, 97,115,116,115,101,108, 95,112, +111,105,110,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,117, +116,111, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,108,105,103, +110, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115, +101,108, 95, 97,117,116,111, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95,118,101, 99,116, 91, 52, 93, 0,104, 97, +110,100,108,101, 95,115,101,108, 95, 97,108,105,103,110, 91, 52, 93, 0,100,115, 95, 99,104, 97,110,110,101,108, 91, 52, 93, 0, +100,115, 95,115,117, 98, 99,104, 97,110,110,101,108, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,111,117,116,112,117,116, 91, + 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,102,111, + 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,101,114,114,111,114, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95, 99,117,114, +115,111,114, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,105,122,101, 0,102, 97, 99,101,100,111,116, 95,115,105,122,101, 0, + 98,112, 97,100, 91, 50, 93, 0,115,121,110,116, 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,120,110, 91, 52, 93, 0,115,121, +110,116, 97,120, 98, 91, 52, 93, 0,115,121,110,116, 97,120,118, 91, 52, 93, 0,115,121,110,116, 97,120, 99, 91, 52, 93, 0,109, +111,118,105,101, 91, 52, 93, 0,105,109, 97,103,101, 91, 52, 93, 0,115, 99,101,110,101, 91, 52, 93, 0, 97,117,100,105,111, 91, + 52, 93, 0,101,102,102,101, 99,116, 91, 52, 93, 0,112,108,117,103,105,110, 91, 52, 93, 0,116,114, 97,110,115,105,116,105,111, +110, 91, 52, 93, 0,109,101,116, 97, 91, 52, 93, 0,101,100,105,116,109,101,115,104, 95, 97, 99,116,105,118,101, 91, 52, 93, 0, +104, 97,110,100,108,101, 95,118,101,114,116,101,120, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115, +101,108,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,105,122,101, 0,104,112, 97,100, + 91, 55, 93, 0,112,114,101,118,105,101,119, 95, 98, 97, 99,107, 91, 52, 93, 0,115,111,108,105,100, 91, 52, 93, 0,116,117,105, + 0,116, 98,117,116,115, 0,116,118, 51,100, 0,116,102,105,108,101, 0,116,105,112,111, 0,116,105,110,102,111, 0,116,115,110, +100, 0,116, 97, 99,116, 0,116,110,108, 97, 0,116,115,101,113, 0,116,105,109, 97, 0,116,105,109, 97,115,101,108, 0,116,101, +120,116, 0,116,111,111,112,115, 0,116,116,105,109,101, 0,116,110,111,100,101, 0,116,108,111,103,105, 99, 0,116,117,115,101, +114,112,114,101,102, 0,116, 99,111,110,115,111,108,101, 0,116, 97,114,109, 91, 50, 48, 93, 0, 97, 99,116,105,118,101, 95,116, +104,101,109,101, 95, 97,114,101, 97, 0,109,111,100,117,108,101, 91, 54, 52, 93, 0,115,112,101, 99, 91, 52, 93, 0,100,117,112, +102,108, 97,103, 0,115, 97,118,101,116,105,109,101, 0,116,101,109,112,100,105,114, 91, 49, 54, 48, 93, 0,102,111,110,116,100, +105,114, 91, 49, 54, 48, 93, 0,114,101,110,100,101,114,100,105,114, 91, 49, 54, 48, 93, 0,116,101,120,116,117,100,105,114, 91, + 49, 54, 48, 93, 0,112,108,117,103,116,101,120,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,115,101,113,100,105,114, 91, + 49, 54, 48, 93, 0,112,121,116,104,111,110,100,105,114, 91, 49, 54, 48, 93, 0,115,111,117,110,100,100,105,114, 91, 49, 54, 48, + 93, 0,105,109, 97,103,101, 95,101,100,105,116,111,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 91, + 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 95,112,114,101,115,101,116, 0,118, 50,100, 95,109,105,110, 95, +103,114,105,100,115,105,122,101, 0,116,105,109,101, 99,111,100,101, 95,115,116,121,108,101, 0,118,101,114,115,105,111,110,115, + 0,100, 98,108, 95, 99,108,105, 99,107, 95,116,105,109,101, 0,103, 97,109,101,102,108, 97,103,115, 0,119,104,101,101,108,108, +105,110,101,115, 99,114,111,108,108, 0,117,105,102,108, 97,103, 0,108, 97,110,103,117, 97,103,101, 0,117,115,101,114,112,114, +101,102, 0,118,105,101,119,122,111,111,109, 0,109,105,120, 98,117,102,115,105,122,101, 0, 97,117,100,105,111,100,101,118,105, + 99,101, 0, 97,117,100,105,111,114, 97,116,101, 0, 97,117,100,105,111,102,111,114,109, 97,116, 0, 97,117,100,105,111, 99,104, + 97,110,110,101,108,115, 0,100,112,105, 0,101,110, 99,111,100,105,110,103, 0,116,114, 97,110,115,111,112,116,115, 0,109,101, +110,117,116,104,114,101,115,104,111,108,100, 49, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 50, 0,116,104,101,109, +101,115, 0,117,105,102,111,110,116,115, 0,117,105,115,116,121,108,101,115, 0,107,101,121,109, 97,112,115, 0, 97,100,100,111, +110,115, 0,107,101,121, 99,111,110,102,105,103,115,116,114, 91, 54, 52, 93, 0,117,110,100,111,115,116,101,112,115, 0,117,110, +100,111,109,101,109,111,114,121, 0,103,112, 95,109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103,112, 95,101,117, 99, +108,105,100,101, 97,110,100,105,115,116, 0,103,112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101,116,116,105,110,103,115, + 0,116, 98, 95,108,101,102,116,109,111,117,115,101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, 0,108,105,103,104, +116, 91, 51, 93, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,115,101,116,116,105,110,103,115, 0,116,119, 95,104,111, +116,115,112,111,116, 0,116,119, 95,102,108, 97,103, 0,116,119, 95,104, 97,110,100,108,101,115,105,122,101, 0,116,119, 95,115, +105,122,101, 0,116,101,120,116,105,109,101,111,117,116, 0,116,101,120, 99,111,108,108,101, 99,116,114, 97,116,101, 0,119,109, +100,114, 97,119,109,101,116,104,111,100, 0,109,101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101,102,101,116, 99, +104,102,114, 97,109,101,115, 0,102,114, 97,109,101,115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95,114,111,116, 95, + 97,110,103,108,101, 0,111, 98, 99,101,110,116,101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114,118,105, 98,114, +105,103,104,116, 0,114,101, 99,101,110,116, 95,102,105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101,119,116,120, 0, +103,108,114,101,115,108,105,109,105,116, 0,110,100,111,102, 95,112, 97,110, 0,110,100,111,102, 95,114,111,116, 97,116,101, 0, + 99,117,114,115,115,105,122,101, 0, 99,111,108,111,114, 95,112,105, 99,107,101,114, 95,116,121,112,101, 0,105,112,111, 95,110, +101,119, 0,107,101,121,104, 97,110,100,108,101,115, 95,110,101,119, 0,115, 99,114, 99, 97,115,116,102,112,115, 0,115, 99,114, + 99, 97,115,116,119, 97,105,116, 0,112,114,111,112,119,105,100,116,104, 0,118,101,114,115,101,109, 97,115,116,101,114, 91, 49, + 54, 48, 93, 0,118,101,114,115,101,117,115,101,114, 91, 49, 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108,105,112, 0, 99, +111, 98, 97, 95,119,101,105,103,104,116, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95, +115,105,122,101, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,117,110,112,114,111,106, +101, 99,116,101,100, 95,114, 97,100,105,117,115, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101, +100, 95, 97,108,112,104, 97, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,111,118,101,114,108, 97,121, 95, 99,111,108, + 91, 51, 93, 0,118,101,114,116, 98, 97,115,101, 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,115,101, 0, 42, +110,101,119,115, 99,101,110,101, 0,102,117,108,108, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0,100,111, 95,114, +101,102,114,101,115,104, 0,100,111, 95,100,114, 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, 97,119, 95,112, + 97,105,110,116, 99,117,114,115,111,114, 0,100,111, 95,100,114, 97,119, 95,100,114, 97,103, 0,115,119, 97,112, 0,109, 97,105, +110,119,105,110, 0,115,117, 98,119,105,110, 97, 99,116,105,118,101, 0, 97,110,105,109,109,111,100,101, 0, 42, 97,110,105,109, +116,105,109,101,114, 0, 42, 99,111,110,116,101,120,116, 0,104, 97,110,100,108,101,114, 91, 56, 93, 0, 42,110,101,119,118, 0, +118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42,116,121,112,101, 0,112, 97,110,101,108,110, 97,109,101, 91, 54, 52, 93, 0, +116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, 97,119,110, 97,109,101, 91, 54, 52, 93, 0,111,102,115,120, 0,111,102, +115,121, 0,115,105,122,101,120, 0,115,105,122,101,121, 0,108, 97, 98,101,108,111,102,115, 0,114,117,110,116,105,109,101, 95, +102,108, 97,103, 0, 99,111,110,116,114,111,108, 0,115,110, 97,112, 0,115,111,114,116,111,114,100,101,114, 0, 42,112, 97,110, +101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101,100, 97,116, 97, 0,108,105,115,116, 95,115, 99,114,111,108,108, 0,108,105, +115,116, 95,115,105,122,101, 0,108,105,115,116, 95,108, 97,115,116, 95,108,101,110, 0,108,105,115,116, 95,103,114,105,112, 95, +115,105,122,101, 0,108,105,115,116, 95,115,101, 97,114, 99,104, 91, 54, 52, 93, 0, 42,118, 51, 0, 42,118, 52, 0, 42,102,117, +108,108, 0, 98,117,116,115,112, 97, 99,101,116,121,112,101, 0,104,101, 97,100,101,114,116,121,112,101, 0,115,112, 97, 99,101, +100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, 0, 97, 99,116,105,111,110,122,111,110,101,115, 0,119,105,110,114, 99,116, + 0,100,114, 97,119,114, 99,116, 0,115,119,105,110,105,100, 0,114,101,103,105,111,110,116,121,112,101, 0, 97,108,105,103,110, +109,101,110,116, 0,100,111, 95,100,114, 97,119, 95,111,118,101,114,108, 97,121, 0,117,105, 98,108,111, 99,107,115, 0,112, 97, +110,101,108,115, 0, 42,104,101, 97,100,101,114,115,116,114, 0, 42,114,101,103,105,111,110,100, 97,116, 97, 0,115,117, 98,118, +115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115,105,111,110, 0,112, 97,100,115, 0,109,105,110,118,101,114,115,105,111, +110, 0,109,105,110,115,117, 98,118,101,114,115,105,111,110, 0, 42, 99,117,114,115, 99,114,101,101,110, 0, 42, 99,117,114,115, + 99,101,110,101, 0,102,105,108,101,102,108, 97,103,115, 0,103,108,111, 98, 97,108,102, 0,102,105,108,101,110, 97,109,101, 91, + 50, 52, 48, 93, 0,110, 97,109,101, 91, 56, 48, 93, 0, 42,105, 98,117,102, 0, 42,105, 98,117,102, 95, 99,111,109,112, 0, 42, +115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0,110,114, 0, 98,111,116,116,111,109, 0,114,105,103,104,116, 0,120,111, +102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93, 0,103, 97,109,109, 97, 91, 51, 93, 0,103, 97,105,110, 91, 51, 93, + 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110,101, 0,115,116, 97,114,116,115,116,105,108,108, 0,101,110,100,115,116,105, +108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0,111,114,120, 0,111,114,121, 0, 42, 99,114,111,112, 0, 42,116,114, 97, +110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, 98, 97,108, 97,110, 99,101, 0, 42,116,115,116,114,105,112,100, 97,116, + 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42,116,115,116,114,105,112, +100, 97,116, 97, 95,101,110,100,115,116,105,108,108, 0, 42,105, 98,117,102, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42, +105, 98,117,102, 95,101,110,100,115,116,105,108,108, 0, 42,105,110,115,116, 97,110, 99,101, 95,112,114,105,118, 97,116,101, 95, +100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42,116,109,112, + 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111,102,115, 0,109, 97, 99,104,105,110,101, 0,115,116, 97,114,116,100,105, +115,112, 0,101,110,100,100,105,115,112, 0,115, 97,116, 0,109,117,108, 0,104, 97,110,100,115,105,122,101, 0, 97,110,105,109, + 95,112,114,101,115,101,101,107, 0, 42,115,116,114,105,112, 0, 42,115, 99,101,110,101, 95, 99, 97,109,101,114, 97, 0,101,102, +102,101, 99,116, 95,102, 97,100,101,114, 0,115,112,101,101,100, 95,102, 97,100,101,114, 0, 42,115,101,113, 49, 0, 42,115,101, +113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42,115,111,117,110,100, 0, 42,115, 99,101,110,101, 95,115, +111,117,110,100, 0,108,101,118,101,108, 0,112, 97,110, 0,115, 99,101,110,101,110,114, 0,109,117,108,116,105, 99, 97,109, 95, +115,111,117,114, 99,101, 0,115,116,114,111, 98,101, 0, 42,101,102,102,101, 99,116,100, 97,116, 97, 0, 97,110,105,109, 95,115, +116, 97,114,116,111,102,115, 0, 97,110,105,109, 95,101,110,100,111,102,115, 0, 98,108,101,110,100, 95,109,111,100,101, 0, 98, +108,101,110,100, 95,111,112, 97, 99,105,116,121, 0, 42,111,108,100, 98, 97,115,101,112, 0, 42,112, 97,114,115,101,113, 0, 42, +115,101,113, 98, 97,115,101,112, 0,109,101,116, 97,115,116, 97, 99,107, 0, 42, 97, 99,116, 95,115,101,113, 0, 97, 99,116, 95, +105,109, 97,103,101,100,105,114, 91, 50, 53, 54, 93, 0, 97, 99,116, 95,115,111,117,110,100,100,105,114, 91, 50, 53, 54, 93, 0, +111,118,101,114, 95,111,102,115, 0,111,118,101,114, 95, 99,102,114, 97, 0,111,118,101,114, 95,102,108, 97,103, 0,111,118,101, +114, 95, 98,111,114,100,101,114, 0,101,100,103,101, 87,105,100,116,104, 0,102,111,114,119, 97,114,100, 0,119,105,112,101,116, +121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109,112, 0,102, 66,111,111,115,116, 0,100, 68,105,115,116, 0,100, 81, +117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0, 83, 99, 97,108,101,120, 73,110,105, 0, 83, 99, 97,108,101,121, 73, +110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, 83, 99, 97,108,101,121, 70,105,110, 0,120, 73,110,105, 0,120, 70,105,110, + 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111,116, 73,110,105, 0,114,111,116, 70,105,110, 0,105,110,116,101,114,112,111, +108, 97,116,105,111,110, 0,117,110,105,102,111,114,109, 95,115, 99, 97,108,101, 0, 42,102,114, 97,109,101, 77, 97,112, 0,103, +108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115,116, 86, 97,108,105,100, 70,114, 97,109,101, 0, 98,117,116,116,121,112, +101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,116,111,116,112, 97,114,116, 0,110,111,114,109,102, 97, 99, 0,111, 98, +102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,120,102, 97, 99, 0,114, 97,110,100,108,105,102,101, 0,102,111,114, 99, +101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,109, 97,120,108,101,110, 0,100,101,102,118,101, 99, 91, 51, 93, 0,109, +117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, 0, 99,104,105,108,100, 91, 52, 93, 0,109, 97,116, 91, 52, 93, 0,116, +101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,115,116, 97,116,105, 99,115,116,101,112, 0,111,109, 97,116, 0,116,105, +109,101,116,101,120, 0,115,112,101,101,100,116,101,120, 0,102,108, 97,103, 50,110,101,103, 0,118,101,114,116,103,114,111,117, +112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, 91, 51, 50, 93, 0,118,103,114,111,117,112,110, 97,109,101, 95,118, 91, + 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102, 97, 99, 0,117,115,101,100, 0,117,115,101,100,101,108,101,109, 0, 42, +112,111,105,110, 0,114,101,115,101,116,100,105,115,116, 0,108, 97,115,116,118, 97,108, 0, 42,109, 97, 0,107,101,121, 0,113, +117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,101,116, 78, 97,109,101, 91, 51, 50, 93, 0,116,111,103,103,108,101, 78, + 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91, 51, 50, 93, 0,109, 97,120,118, 97,108,117,101, 91, 51, 50, 93, 0,100, +101,108, 97,121, 0,100,117,114, 97,116,105,111,110, 0,109, 97,116,101,114,105, 97,108, 78, 97,109,101, 91, 51, 50, 93, 0,100, + 97,109,112,116,105,109,101,114, 0,112,114,111,112,110, 97,109,101, 91, 51, 50, 93, 0,109, 97,116,110, 97,109,101, 91, 51, 50, + 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111,115,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0, 99,111,110,115,116, +114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114,111,109, 79, 98,106,101, 99,116, 0,115,117, 98,106,101, 99,116, 91, 51, 50, + 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116,121,112,101, 0,112,117,108,115,101, 0,102,114,101,113, 0,116,111,116,108, +105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,116, 97,112, 0,106,111,121,105,110,100,101,120, 0, 97,120,105,115, 95,115, +105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, 0,104, 97,116, 0,104, 97,116,102, 0,112,114,101, 99, +105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0, 42,109,121,110,101,119, 0,105,110,112,117,116,115, 0,116,111,116, +115,108,105,110,107,115, 0, 42, 42,115,108,105,110,107,115, 0,118, 97,108,111, 0,115,116, 97,116,101, 95,109, 97,115,107, 0, + 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111,112, 91, 51, 50, 93, 0, 98,108,101,110,100,105,110, 0,112,114,105,111,114, +105,116,121, 0,101,110,100, 95,114,101,115,101,116, 0,115,116,114,105,100,101, 97,120,105,115, 0,115,116,114,105,100,101,108, +101,110,103,116,104, 0,115,110,100,110,114, 0,112, 97,100, 51, 91, 50, 93, 0,112,105,116, 99,104, 0,115,111,117,110,100, 51, + 68, 0,112, 97,100, 54, 91, 49, 93, 0, 42,109,101, 0,108,105,110, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103, + 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108,102,108, 97,103, 0,100,121,110, 95,111,112,101,114, 97,116, +105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,102,111,114, 99,101,114,111,116, 91, 51, 93, 0,108,105,110,101, + 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103,117,108, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, + 0, 42,114,101,102,101,114,101,110, 99,101, 0,109,105,110, 0,109, 97,120, 0,114,111,116,100, 97,109,112, 0,109,105,110,108, +111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, 51, 93, 0,109,105,110,114,111,116, 91, 51, 93, 0,109, 97,120,114,111,116, + 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51, 50, 93, 0, 98,117,116,115,116, 97, 0, 98,117,116,101,110,100, 0,100,105, +115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, 97,114,103, 95, 49, 0,105,110,116, 95, 97,114,103, 95, 50, 0,102, +108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97,116, 95, 97,114,103, 95, 50, 0,116,111, 80,114,111,112, 78, 97,109, +101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, 99,116, 0, 98,111,100,121, 84,121,112,101, 0,102,105,108,101,110, 97,109, +101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97,109,101, 91, 54, 52, 93, 0,105,110,116, 95, 97,114,103, 0,102,108, +111, 97,116, 95, 97,114,103, 0, 42,115,117, 98,116, 97,114,103,101,116, 0,103,111, 0, 97, 99, 99,101,108,108,101,114, 97,116, +105,111,110, 0,109, 97,120,115,112,101,101,100, 0,109, 97,120,114,111,116,115,112,101,101,100, 0,109, 97,120,116,105,108,116, +115,112,101,101,100, 0,116,105,108,116,100, 97,109,112, 0,115,112,101,101,100,100, 97,109,112, 0,109,105,110, 95,103, 97,105, +110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101,102,101,114,101,110, 99,101, 95,100,105,115,116, 97,110, 99,101, 0,109, 97, +120, 95,100,105,115,116, 97,110, 99,101, 0,114,111,108,108,111,102,102, 95,102, 97, 99,116,111,114, 0, 99,111,110,101, 95,105, +110,110,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, + 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42,110,101,119,112, 97, 99,107,101,100,102,105,108,101, 0, 97,116,116,101,110, +117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, 97, 99,104,101, 0, 42,112,108, 97,121, 98, 97, 99,107, + 95,104, 97,110,100,108,101, 0, 42, 97,114,101, 97, 0, 42,108, 97,109,112,114,101,110, 0,103,111, 98,106,101, 99,116, 0,100, +117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 42,112,114,111,112, 0, 99,104,105,108,100, 98, 97,115,101, 0,114,111,108,108, + 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98,111,110,101, 95,109, 97,116, 91, 51, 93, 91, 51, 93, 0, + 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97,105,108, 91, 51, 93, 0, 97,114,109, 95,109, 97,116, 91, + 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0,122,119,105,100,116,104, 0,101, 97,115,101, 49, 0,101, 97,115,101, 50, 0, +114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95,116, 97,105,108, 0, 98,111,110,101, 98, 97,115,101, 0, 99,104, 97,105,110, + 98, 97,115,101, 0, 42,101,100, 98,111, 0, 42, 97, 99,116, 95, 98,111,110,101, 0, 42, 97, 99,116, 95,101,100, 98,111,110,101, + 0, 42,115,107,101,116, 99,104, 0,108, 97,121,101,114, 95,112,114,111,116,101, 99,116,101,100, 0,103,104,111,115,116,101,112, + 0,103,104,111,115,116,115,105,122,101, 0,103,104,111,115,116,116,121,112,101, 0,112, 97,116,104,115,105,122,101, 0,103,104, +111,115,116,115,102, 0,103,104,111,115,116,101,102, 0,112, 97,116,104,115,102, 0,112, 97,116,104,101,102, 0,112, 97,116,104, + 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,111,105,110,116,115, 0,115,116, 97,114,116, 95,102,114, 97,109,101, 0,101,110, +100, 95,102,114, 97,109,101, 0,103,104,111,115,116, 95,115,102, 0,103,104,111,115,116, 95,101,102, 0,103,104,111,115,116, 95, + 98, 99, 0,103,104,111,115,116, 95, 97, 99, 0,103,104,111,115,116, 95,116,121,112,101, 0,103,104,111,115,116, 95,115,116,101, +112, 0,103,104,111,115,116, 95,102,108, 97,103, 0,112, 97,116,104, 95,116,121,112,101, 0,112, 97,116,104, 95,115,116,101,112, + 0,112, 97,116,104, 95,118,105,101,119,102,108, 97,103, 0,112, 97,116,104, 95, 98, 97,107,101,102,108, 97,103, 0,112, 97,116, +104, 95,115,102, 0,112, 97,116,104, 95,101,102, 0,112, 97,116,104, 95, 98, 99, 0,112, 97,116,104, 95, 97, 99, 0, 99,111,110, +115,116,102,108, 97,103, 0,105,107,102,108, 97,103, 0,115,101,108,101, 99,116,102,108, 97,103, 0, 97,103,114,112, 95,105,110, +100,101,120, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105,107,116,114,101,101, 0, 42, 98, 95, 98,111,110,101, 95, +109, 97,116,115, 0, 42,100,117, 97,108, 95,113,117, 97,116, 0, 42, 98, 95, 98,111,110,101, 95,100,117, 97,108, 95,113,117, 97, +116,115, 0,101,117,108, 91, 51, 93, 0, 99,104, 97,110, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,109, 97, +116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, 51, 93, 0,112,111,115,101, 95,116, 97,105,108, 91, 51, + 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105,109,105,116,109, 97,120, 91, 51, 93, 0,115,116,105,102,102,110, +101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, 0,105,107,114,111,116,119,101,105,103,104,116, 0,105,107,108, +105,110,119,101,105,103,104,116, 0, 42, 99,117,115,116,111,109, 0, 42, 99,117,115,116,111,109, 95,116,120, 0, 99,104, 97,110, + 98, 97,115,101, 0, 42, 99,104, 97,110,104, 97,115,104, 0,112,114,111,120,121, 95,108, 97,121,101,114, 0,115,116,114,105,100, +101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, 95,111,102,102,115,101,116, 91, 51, 93, 0, 97,103,114, +111,117,112,115, 0, 97, 99,116,105,118,101, 95,103,114,111,117,112, 0,105,107,115,111,108,118,101,114, 0, 42,105,107,100, 97, +116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,112,114,111,120,121, 95, 97, 99,116, 95, 98,111,110,101, 91, 51, 50, 93, 0,110, +117,109,105,116,101,114, 0,110,117,109,115,116,101,112, 0,109,105,110,115,116,101,112, 0,109, 97,120,115,116,101,112, 0,115, +111,108,118,101,114, 0,102,101,101,100, 98, 97, 99,107, 0,109, 97,120,118,101,108, 0,100, 97,109,112,109, 97,120, 0,100, 97, +109,112,101,112,115, 0, 99,104, 97,110,110,101,108,115, 0, 99,117,115,116,111,109, 67,111,108, 0, 99,115, 0, 99,117,114,118, +101,115, 0,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,109, 97,114,107,101,114, 0, 42,115,111,117,114, 99,101, 0, + 42,102,105,108,116,101,114, 95,103,114,112, 0,102,105,108,116,101,114,102,108, 97,103, 0, 97,100,115, 0,116,105,109,101,115, +108,105,100,101, 0, 42,103,114,112, 0,116,101,109,112, 0,110, 97,109,101, 91, 51, 48, 93, 0,111,119,110,115,112, 97, 99,101, + 0,116, 97,114,115,112, 97, 99,101, 0,101,110,102,111,114, 99,101, 0,104,101, 97,100,116, 97,105,108, 0,108,105,110, 95,101, +114,114,111,114, 0,114,111,116, 95,101,114,114,111,114, 0, 42,116, 97,114, 0,109, 97,116,114,105,120, 91, 52, 93, 91, 52, 93, + 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100,101,114, 0,116, 97,114,110,117,109, 0,116, 97,114,103,101,116,115, 0,105, +116,101,114, 97,116,105,111,110,115, 0,114,111,111,116, 98,111,110,101, 0,109, 97,120, 95,114,111,111,116, 98,111,110,101, 0, + 42,112,111,108,101,116, 97,114, 0,112,111,108,101,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112,111,108,101, 97, +110,103,108,101, 0,111,114,105,101,110,116,119,101,105,103,104,116, 0,103,114, 97, 98,116, 97,114,103,101,116, 91, 51, 93, 0, +110,117,109,112,111,105,110,116,115, 0, 99,104, 97,105,110,108,101,110, 0,120,122, 83, 99, 97,108,101, 77,111,100,101, 0,114, +101,115,101,114,118,101,100, 49, 0,114,101,115,101,114,118,101,100, 50, 0,109,105,110,109, 97,120,102,108, 97,103, 0,115,116, +117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99,107,102,108, 97,103, 0,102,111,108,108,111,119,102,108, 97,103, + 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103,108,101,110,103,116,104, 0, 98,117,108,103,101, 0,112, +105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120, 88, 0, 97,120, 89, 0, 97,120, 90, 0,109,105,110, 76,105,109, +105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54, 93, 0,101,120,116,114, 97, 70,122, 0,105,110,118,109, 97,116, + 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109, 97,112, 91, 51, 93, 0,101,120,112,111, 0,102,114,111,109, 95, +109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91, 51, 93, 0,116,111, 95,109,105,110, 91, 51, 93, 0,116,111, 95, +109, 97,120, 91, 51, 93, 0,114,111,116, 65,120,105,115, 0,122,109,105,110, 0,122,109, 97,120, 0,112, 97,100, 91, 57, 93, 0, + 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, 95, 97,120,105,115, 0,115,116,114,105,100,101, 95, 97, +120,105,115, 0, 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114,116, 0, 97, 99,116,101,110,100, 0, 97, 99,116,111,102, +102,115, 0,115,116,114,105,100,101,108,101,110, 0,115, 99, 97,108,101, 0, 98,108,101,110,100,111,117,116, 0,115,116,114,105, +100,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,111,102,102,115, 95, 98,111,110,101, 91, 51, 50, 93, 0,104, 97,115,105, +110,112,117,116, 0,104, 97,115,111,117,116,112,117,116, 0,100, 97,116, 97,116,121,112,101, 0,115,111, 99,107,101,116,116,121, +112,101, 0, 42,110,101,119, 95,115,111, 99,107, 0,110,115, 0,108,105,109,105,116, 0,115,116, 97, 99,107, 95,105,110,100,101, +120, 0,105,110,116,101,114,110, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 95,101,120,116, 0,108,111, 99,120, 0,108,111, + 99,121, 0,111,119,110, 95,105,110,100,101,120, 0,116,111, 95,105,110,100,101,120, 0, 42,116,111,115,111, 99,107, 0, 42,108, +105,110,107, 0, 42,110,101,119, 95,110,111,100,101, 0,108, 97,115,116,121, 0,111,117,116,112,117,116,115, 0, 42,115,116,111, +114, 97,103,101, 0,109,105,110,105,119,105,100,116,104, 0, 99,117,115,116,111,109, 49, 0, 99,117,115,116,111,109, 50, 0, 99, +117,115,116,111,109, 51, 0, 99,117,115,116,111,109, 52, 0,110,101,101,100, 95,101,120,101, 99, 0,101,120,101, 99, 0, 42,116, +104,114,101, 97,100,100, 97,116, 97, 0,116,111,116,114, 0, 98,117,116,114, 0,112,114,118,114, 0, 42, 98,108,111, 99,107, 0, + 42,116,121,112,101,105,110,102,111, 0, 42,102,114,111,109,110,111,100,101, 0, 42,116,111,110,111,100,101, 0, 42,102,114,111, +109,115,111, 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0, 42,115,116, 97, 99,107, 0, 42,116,104,114,101, 97,100, +115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, 97, 99,107,115,105,122,101, 0, 99,117,114, 95,105,110,100,101,120, 0, 97, +108,108,116,121,112,101,115, 0, 42,111,119,110,116,121,112,101, 0,112, 97,100, 50, 91, 50, 93, 0, 40, 42,112,114,111,103,114, +101,115,115, 41, 40, 41, 0, 40, 42,115,116, 97,116,115, 95,100,114, 97,119, 41, 40, 41, 0, 40, 42,116,101,115,116, 95, 98,114, +101, 97,107, 41, 40, 41, 0, 42,116, 98,104, 0, 42,112,114,104, 0, 42,115,100,104, 0, 99,121, 99,108,105, 99, 0,109,111,118, +105,101, 0,115, 97,109,112,108,101,115, 0,109,105,110,115,112,101,101,100, 0,112,101,114, 99,101,110,116,120, 0,112,101,114, + 99,101,110,116,121, 0, 98,111,107,101,104, 0,103, 97,109,109, 97, 0, 99,117,114,118,101,100, 0,105,109, 97,103,101, 95,105, +110, 95,119,105,100,116,104, 0,105,109, 97,103,101, 95,105,110, 95,104,101,105,103,104,116, 0, 99,101,110,116,101,114, 95,120, + 0, 99,101,110,116,101,114, 95,121, 0,115,112,105,110, 0,119,114, 97,112, 0,115,105,103,109, 97, 95, 99,111,108,111,114, 0, +115,105,103,109, 97, 95,115,112, 97, 99,101, 0,104,117,101, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116,114,101,110,103, +116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, 91, 52, 93, 0, 97,108,103,111,114,105,116,104,109, 0, 99,104, 97,110,110, +101,108, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, 0, 99,111,108,110, 97,109,101, 91, 51, 50, 93, 0, 98,107,116,121,112, +101, 0,114,111,116, 97,116,105,111,110, 0,103, 97,109, 99,111, 0,110,111, 95,122, 98,117,102, 0,102,115,116,111,112, 0,109, + 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, 0, 42,100,105, 99,116, 0, 42,110,111,100,101, 0, 97,110,103,108,101, + 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105,120, 0,116,104,114,101,115,104,111,108,100, 0,102, 97,100,101, 0,109, + 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105,116, 0,115,108,111,112,101, 91, 51, 93, 0,112,111,119,101,114, 91, 51, + 93, 0,108,105,102,116, 95,108,103,103, 91, 51, 93, 0,108,105,109, 99,104, 97,110, 0,117,110,115,112,105,108,108, 0,108,105, +109,115, 99, 97,108,101, 0,117,115,112,105,108,108,114, 0,117,115,112,105,108,108,103, 0,117,115,112,105,108,108, 98, 0,115, +104,111,114,116,121, 0,109,105,110,116, 97, 98,108,101, 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95,105,110, 91, 50, + 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, 42, 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42,112,114,101,109, +117,108,116, 97, 98,108,101, 0,112,114,101,115,101,116, 0, 99,104, 97,110,103,101,100, 95,116,105,109,101,115,116, 97,109,112, + 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, 0,119,104,105,116,101, + 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, 93, 0,120, 95,114,101,115,111,108,117,116, +105,111,110, 0,100, 97,116, 97, 95,114, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,103, 91, 50, 53, 54, 93, 0,100, 97,116, 97, + 95, 98, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,108,117,109, 97, 91, 50, 53, 54, 93, 0,115, 97,109,112,108,101, 95,102,117, +108,108, 0,115, 97,109,112,108,101, 95,108,105,110,101,115, 0, 97, 99, 99,117,114, 97, 99,121, 0,119, 97,118,101,102,114,109, + 95,109,111,100,101, 0,119, 97,118,101,102,114,109, 95, 97,108,112,104, 97, 0,119, 97,118,101,102,114,109, 95,121,102, 97, 99, + 0,119, 97,118,101,102,114,109, 95,104,101,105,103,104,116, 0,118,101, 99,115, 99,111,112,101, 95, 97,108,112,104, 97, 0,118, +101, 99,115, 99,111,112,101, 95,104,101,105,103,104,116, 0,109,105,110,109, 97,120, 91, 51, 93, 91, 50, 93, 0,104,105,115,116, + 0, 42,119, 97,118,101,102,111,114,109, 95, 49, 0, 42,119, 97,118,101,102,111,114,109, 95, 50, 0, 42,119, 97,118,101,102,111, +114,109, 95, 51, 0, 42,118,101, 99,115, 99,111,112,101, 0,119, 97,118,101,102,111,114,109, 95,116,111,116, 0,111,102,102,115, +101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,109,116,101,120, 0, 42,105,109, 97,103,101, 95,105, 99,111,110, 0,110,111,114, +109, 97,108, 95,119,101,105,103,104,116, 0,106,105,116,116,101,114, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95, +114, 97,100,105,117,115, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,102, 97, 99,116,111,114, 0,114, 97,116,101, + 0,114,103, 98, 91, 51, 93, 0,115, 99,117,108,112,116, 95,112,108, 97,110,101, 0,112,108, 97,110,101, 95,111,102,102,115,101, +116, 0,115, 99,117,108,112,116, 95,116,111,111,108, 0,118,101,114,116,101,120,112, 97,105,110,116, 95,116,111,111,108, 0,105, +109, 97,103,101,112, 97,105,110,116, 95,116,111,111,108, 0, 97,117,116,111,115,109,111,111,116,104, 95,102, 97, 99,116,111,114, + 0, 99,114,101, 97,115,101, 95,112,105,110, 99,104, 95,102, 97, 99,116,111,114, 0,112,108, 97,110,101, 95,116,114,105,109, 0, +116,101,120,116,117,114,101, 95,115, 97,109,112,108,101, 95, 98,105, 97,115, 0,116,101,120,116,117,114,101, 95,111,118,101,114, +108, 97,121, 95, 97,108,112,104, 97, 0,117,110,112,114,111,106,101, 99,116,101,100, 95,114, 97,100,105,117,115, 0, 97,100,100, + 95, 99,111,108, 91, 51, 93, 0,115,117, 98, 95, 99,111,108, 91, 51, 93, 0, 97, 99,116,105,118,101, 95,114,110,100, 0, 97, 99, +116,105,118,101, 95, 99,108,111,110,101, 0, 97, 99,116,105,118,101, 95,109, 97,115,107, 0, 42,108, 97,121,101,114,115, 0,116, +111,116,108, 97,121,101,114, 0,109, 97,120,108, 97,121,101,114, 0,116,111,116,115,105,122,101, 0, 42,112,111,111,108, 0, 42, +101,120,116,101,114,110, 97,108, 0,118,101,108, 91, 51, 93, 0,114,111,116, 91, 52, 93, 0, 97,118,101, 91, 51, 93, 0, 42,103, +114,111,117,110,100, 0,119, 97,110,100,101,114, 91, 51, 93, 0,110,117,109, 0,112, 97,114,101,110,116, 0,112, 97, 91, 52, 93, + 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0,102,111,102,102,115,101,116, 0,114,116, 91, 50, 93, 0,112,114,101,118, 95, +115,116, 97,116,101, 0, 42,104, 97,105,114, 0, 42, 98,111,105,100, 0,100,105,101,116,105,109,101, 0,110,117,109, 95,100,109, + 99, 97, 99,104,101, 0,104, 97,105,114, 95,105,110,100,101,120, 0, 97,108,105,118,101, 0,115,112,114,105,110,103, 95,107, 0, +114,101,115,116, 95,108,101,110,103,116,104, 0,118,105,115, 99,111,115,105,116,121, 95,111,109,101,103, 97, 0,118,105,115, 99, +111,115,105,116,121, 95, 98,101,116, 97, 0,115,116,105,102,102,110,101,115,115, 95,107, 0,115,116,105,102,102,110,101,115,115, + 95,107,110,101, 97,114, 0,114,101,115,116, 95,100,101,110,115,105,116,121, 0, 98,117,111,121, 97,110, 99,121, 0, 42, 98,111, +105,100,115, 0, 42,102,108,117,105,100, 0,100,105,115,116,114, 0,112,104,121,115,116,121,112,101, 0, 97,118,101,109,111,100, +101, 0,114,101, 97, 99,116,101,118,101,110,116, 0,100,114, 97,119, 0,100,114, 97,119, 95, 97,115, 0,100,114, 97,119, 95,115, +105,122,101, 0, 99,104,105,108,100,116,121,112,101, 0,114,101,110, 95, 97,115, 0,115,117, 98,102,114, 97,109,101,115, 0,114, +101,110, 95,115,116,101,112, 0,104, 97,105,114, 95,115,116,101,112, 0,107,101,121,115, 95,115,116,101,112, 0, 97,100, 97,112, +116, 95, 97,110,103,108,101, 0, 97,100, 97,112,116, 95,112,105,120, 0,114,111,116,102,114,111,109, 0,105,110,116,101,103,114, + 97,116,111,114, 0, 98, 98, 95, 97,108,105,103,110, 0, 98, 98, 95,117,118, 95,115,112,108,105,116, 0, 98, 98, 95, 97,110,105, +109, 0, 98, 98, 95,115,112,108,105,116, 95,111,102,102,115,101,116, 0, 98, 98, 95,116,105,108,116, 0, 98, 98, 95,114, 97,110, +100, 95,116,105,108,116, 0, 98, 98, 95,111,102,102,115,101,116, 91, 50, 93, 0,115,105,109,112,108,105,102,121, 95,114,101,102, +115,105,122,101, 0,115,105,109,112,108,105,102,121, 95,114, 97,116,101, 0,115,105,109,112,108,105,102,121, 95,116,114, 97,110, +115,105,116,105,111,110, 0,115,105,109,112,108,105,102,121, 95,118,105,101,119,112,111,114,116, 0,116,105,109,101,116,119,101, + 97,107, 0,106,105,116,102, 97, 99, 0,101,102,102, 95,104, 97,105,114, 0,103,114,105,100, 95,114,101,115, 0,112, 97,114,116, +102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116, 97,110,112,104, 97,115,101, 0,114,101, 97, 99,116,102, 97, 99, 0,111, 98, 95, +118,101,108, 91, 51, 93, 0, 97,118,101,102, 97, 99, 0,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,114,111,116,102, 97, + 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,115,105,122,101, 0,114,101, 97, 99,116,115,104, 97, +112,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97,103,102, 97, 99, 0, 98,114,111,119,110,102, 97, 99, 0,100, 97,109,112,102, + 97, 99, 0,114, 97,110,100,108,101,110,103,116,104, 0, 99,104,105,108,100, 95,110, 98,114, 0,114,101,110, 95, 99,104,105,108, +100, 95,110, 98,114, 0,112, 97,114,101,110,116,115, 0, 99,104,105,108,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,110, +100,115,105,122,101, 0, 99,104,105,108,100,114, 97,100, 0, 99,104,105,108,100,102,108, 97,116, 0, 99,108,117,109,112,112,111, +119, 0,114,111,117,103,104, 49, 0,114,111,117,103,104, 49, 95,115,105,122,101, 0,114,111,117,103,104, 50, 0,114,111,117,103, +104, 50, 95,115,105,122,101, 0,114,111,117,103,104, 50, 95,116,104,114,101,115, 0,114,111,117,103,104, 95,101,110,100, 0,114, +111,117,103,104, 95,101,110,100, 95,115,104, 97,112,101, 0, 99,108,101,110,103,116,104, 0, 99,108,101,110,103,116,104, 95,116, +104,114,101,115, 0, 98,114, 97,110, 99,104, 95,116,104,114,101,115, 0,100,114, 97,119, 95,108,105,110,101, 91, 50, 93, 0,112, + 97,116,104, 95,115,116, 97,114,116, 0,112, 97,116,104, 95,101,110,100, 0,116,114, 97,105,108, 95, 99,111,117,110,116, 0,107, +101,121,101,100, 95,108,111,111,112,115, 0,100,117,112,108,105,119,101,105,103,104,116,115, 0, 42,101,102,102, 95,103,114,111, +117,112, 0, 42,100,117,112, 95,111, 98, 0, 42, 98, 98, 95,111, 98, 0, 42,112,100, 50, 0, 42,112, 97,114,116, 0, 42,112, 97, +114,116,105, 99,108,101,115, 0, 42, 42,112, 97,116,104, 99, 97, 99,104,101, 0, 42, 42, 99,104,105,108,100, 99, 97, 99,104,101, + 0,112, 97,116,104, 99, 97, 99,104,101, 98,117,102,115, 0, 99,104,105,108,100, 99, 97, 99,104,101, 98,117,102,115, 0, 42, 99, +108,109,100, 0, 42,104, 97,105,114, 95,105,110, 95,100,109, 0, 42,104, 97,105,114, 95,111,117,116, 95,100,109, 0, 42,116, 97, +114,103,101,116, 95,111, 98, 0, 42,108, 97,116,116,105, 99,101, 0,116,114,101,101, 95,102,114, 97,109,101, 0,116,111,116, 99, +104,105,108,100, 0,116,111,116, 99, 97, 99,104,101,100, 0,116,111,116, 99,104,105,108,100, 99, 97, 99,104,101, 0,116, 97,114, +103,101,116, 95,112,115,121,115, 0,116,111,116,107,101,121,101,100, 0, 98, 97,107,101,115,112, 97, 99,101, 0, 98, 98, 95,117, +118,110, 97,109,101, 91, 51, 93, 91, 51, 50, 93, 0,118,103,114,111,117,112, 91, 49, 50, 93, 0,118,103, 95,110,101,103, 0,114, +116, 51, 0, 42,114,101,110,100,101,114,100, 97,116, 97, 0, 42,101,102,102,101, 99,116,111,114,115, 0, 42,116,114,101,101, 0, + 42,112,100,100, 0, 42,102,114, 97,110,100, 0, 67,100,105,115, 0, 67,118,105, 0,115,116,114,117, 99,116,117,114, 97,108, 0, + 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98,101,110,100, 0,109, 97,120, 95,115,116,114,117, 99,116, 0,109, 97,120, 95, +115,104,101, 97,114, 0, 97,118,103, 95,115,112,114,105,110,103, 95,108,101,110, 0,116,105,109,101,115, 99, 97,108,101, 0,101, +102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108,101, 0,101,102,102, 95,119,105,110,100, 95,115, 99, 97,108,101, 0,115,105, +109, 95,116,105,109,101, 95,111,108,100, 0,118,101,108,111, 99,105,116,121, 95,115,109,111,111,116,104, 0, 99,111,108,108,105, +100,101,114, 95,102,114,105, 99,116,105,111,110, 0,115,116,101,112,115, 80,101,114, 70,114, 97,109,101, 0,112,114,101,114,111, +108,108, 0,109, 97,120,115,112,114,105,110,103,108,101,110, 0,115,111,108,118,101,114, 95,116,121,112,101, 0,118,103,114,111, +117,112, 95, 98,101,110,100, 0,118,103,114,111,117,112, 95,109, 97,115,115, 0,118,103,114,111,117,112, 95,115,116,114,117, 99, +116, 0,115,104, 97,112,101,107,101,121, 95,114,101,115,116, 0,112,114,101,115,101,116,115, 0,114,101,115,101,116, 0, 42, 99, +111,108,108,105,115,105,111,110, 95,108,105,115,116, 0,101,112,115,105,108,111,110, 0,115,101,108,102, 95,102,114,105, 99,116, +105,111,110, 0,115,101,108,102,101,112,115,105,108,111,110, 0,115,101,108,102, 95,108,111,111,112, 95, 99,111,117,110,116, 0, +108,111,111,112, 95, 99,111,117,110,116, 0,112,114,101,115,115,117,114,101, 0,116,104,105, 99,107,110,101,115,115, 0,115,116, +114,111,107,101,115, 0,102,114, 97,109,101,110,117,109, 0, 42, 97, 99,116,102,114, 97,109,101, 0,103,115,116,101,112, 0,105, +110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102,101,114, 95,115,105,122,101, 0,115, 98,117,102,102,101,114, 95,115,102, +108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, 42,116,121,112,101,115,116,114, 0, 42,109,101,115,115, 97,103,101, 0,108, +105,115,116, 0,112,114,105,110,116,108,101,118,101,108, 0,115,116,111,114,101,108,101,118,101,108, 0, 42,114,101,112,111,114, +116,116,105,109,101,114, 0,103,114,101,121,115, 99, 97,108,101, 0,119,105,100,116,104,102, 97, 99, 0, 42,119,105,110,100,114, + 97,119, 97, 98,108,101, 0, 42,119,105,110, 97, 99,116,105,118,101, 0,119,105,110,100,111,119,115, 0,105,110,105,116,105, 97, +108,105,122,101,100, 0,102,105,108,101, 95,115, 97,118,101,100, 0,111,112, 95,117,110,100,111, 95,100,101,112,116,104, 0,111, +112,101,114, 97,116,111,114,115, 0,113,117,101,117,101, 0,114,101,112,111,114,116,115, 0,106,111, 98,115, 0,112, 97,105,110, +116, 99,117,114,115,111,114,115, 0,100,114, 97,103,115, 0,107,101,121, 99,111,110,102,105,103,115, 0, 42,100,101,102, 97,117, +108,116, 99,111,110,102, 0,116,105,109,101,114,115, 0, 42, 97,117,116,111,115, 97,118,101,116,105,109,101,114, 0, 42,103,104, +111,115,116,119,105,110, 0,103,114, 97, 98, 99,117,114,115,111,114, 0, 42,110,101,119,115, 99,114,101,101,110, 0,115, 99,114, +101,101,110,110, 97,109,101, 91, 51, 50, 93, 0,112,111,115,120, 0,112,111,115,121, 0,119,105,110,100,111,119,115,116, 97,116, +101, 0,109,111,110,105,116,111,114, 0,108, 97,115,116, 99,117,114,115,111,114, 0, 97,100,100,109,111,117,115,101,109,111,118, +101, 0, 42,101,118,101,110,116,115,116, 97,116,101, 0, 42, 99,117,114,115,119,105,110, 0, 42,116,119,101, 97,107, 0,100,114, + 97,119,109,101,116,104,111,100, 0,100,114, 97,119,102, 97,105,108, 0, 42,100,114, 97,119,100, 97,116, 97, 0,109,111,100, 97, +108,104, 97,110,100,108,101,114,115, 0,115,117, 98,119,105,110,100,111,119,115, 0,103,101,115,116,117,114,101, 0,105,100,110, + 97,109,101, 91, 54, 52, 93, 0,112,114,111,112,118, 97,108,117,101, 0,115,104,105,102,116, 0, 99,116,114,108, 0, 97,108,116, + 0,111,115,107,101,121, 0,107,101,121,109,111,100,105,102,105,101,114, 0,109, 97,112,116,121,112,101, 0, 42,112,116,114, 0, +105,116,101,109,115, 0,115,112, 97, 99,101,105,100, 0,114,101,103,105,111,110,105,100, 0,107,109,105, 95,105,100, 0, 40, 42, +112,111,108,108, 41, 40, 41, 0, 42,109,111,100, 97,108, 95,105,116,101,109,115, 0, 98, 97,115,101,110, 97,109,101, 91, 54, 52, + 93, 0, 97, 99,116,107,101,121,109, 97,112, 0, 42, 99,117,115,116,111,109,100, 97,116, 97, 0, 42,112,121, 95,105,110,115,116, + 97,110, 99,101, 0, 42,114,101,112,111,114,116,115, 0,109, 97, 99,114,111, 0, 42,111,112,109, 0, 42,101,100, 97,116, 97, 0, +105,110,102,108,117,101,110, 99,101, 0, 42, 99,111,101,102,102,105, 99,105,101,110,116,115, 0, 97,114,114, 97,121,115,105,122, +101, 0,112,111,108,121, 95,111,114,100,101,114, 0, 97,109,112,108,105,116,117,100,101, 0,112,104, 97,115,101, 95,109,117,108, +116,105,112,108,105,101,114, 0,112,104, 97,115,101, 95,111,102,102,115,101,116, 0,118, 97,108,117,101, 95,111,102,102,115,101, +116, 0,109,105,100,118, 97,108, 0, 98,101,102,111,114,101, 95,109,111,100,101, 0, 97,102,116,101,114, 95,109,111,100,101, 0, + 98,101,102,111,114,101, 95, 99,121, 99,108,101,115, 0, 97,102,116,101,114, 95, 99,121, 99,108,101,115, 0,114,101, 99,116, 0, +112,104, 97,115,101, 0,109,111,100,105,102,105, 99, 97,116,105,111,110, 0,115,116,101,112, 95,115,105,122,101, 0, 42,114,110, + 97, 95,112, 97,116,104, 0,112, 99,104, 97,110, 95,110, 97,109,101, 91, 51, 50, 93, 0,116,114, 97,110,115, 67,104, 97,110, 0, +105,100,116,121,112,101, 0,116, 97,114,103,101,116,115, 91, 56, 93, 0,110,117,109, 95,116, 97,114,103,101,116,115, 0,118, 97, +114,105, 97, 98,108,101,115, 0,101,120,112,114,101,115,115,105,111,110, 91, 50, 53, 54, 93, 0, 42,101,120,112,114, 95, 99,111, +109,112, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, 0, 97,114,114, 97,121, 95,105,110,100,101,120, 0, 99,111,108,111,114, + 95,109,111,100,101, 0, 99,111,108,111,114, 91, 51, 93, 0,102,114,111,109, 91, 49, 50, 56, 93, 0,116,111, 91, 49, 50, 56, 93, + 0,109, 97,112,112,105,110,103,115, 0,115,116,114,105,112,115, 0, 42,114,101,109, 97,112, 0,102, 99,117,114,118,101,115, 0, +115,116,114,105,112, 95,116,105,109,101, 0, 98,108,101,110,100,109,111,100,101, 0,101,120,116,101,110,100,109,111,100,101, 0, +103,114,111,117,112, 91, 54, 52, 93, 0,103,114,111,117,112,109,111,100,101, 0,107,101,121,105,110,103,102,108, 97,103, 0,112, + 97,116,104,115, 0,116,121,112,101,105,110,102,111, 91, 54, 52, 93, 0, 97, 99,116,105,118,101, 95,112, 97,116,104, 0, 42,116, +109,112, 97, 99,116, 0,110,108, 97, 95,116,114, 97, 99,107,115, 0, 42, 97, 99,116,115,116,114,105,112, 0,100,114,105,118,101, +114,115, 0,111,118,101,114,114,105,100,101,115, 0, 97, 99,116, 95, 98,108,101,110,100,109,111,100,101, 0, 97, 99,116, 95,101, +120,116,101,110,100,109,111,100,101, 0, 97, 99,116, 95,105,110,102,108,117,101,110, 99,101, 0,114,117,108,101, 0,111,112,116, +105,111,110,115, 0,102,101, 97,114, 95,102, 97, 99,116,111,114, 0,115,105,103,110, 97,108, 95,105,100, 0,108,111,111,107, 95, + 97,104,101, 97,100, 0,111,108,111, 99, 91, 51, 93, 0,113,117,101,117,101, 95,115,105,122,101, 0,119, 97,110,100,101,114, 0, +102,108,101,101, 95,100,105,115,116, 97,110, 99,101, 0,104,101, 97,108,116,104, 0,115,116, 97,116,101, 95,105,100, 0,114,117, +108,101,115, 0, 99,111,110,100,105,116,105,111,110,115, 0, 97, 99,116,105,111,110,115, 0,114,117,108,101,115,101,116, 95,116, +121,112,101, 0,114,117,108,101, 95,102,117,122,122,105,110,101,115,115, 0,108, 97,115,116, 95,115,116, 97,116,101, 95,105,100, + 0,108, 97,110,100,105,110,103, 95,115,109,111,111,116,104,110,101,115,115, 0, 98, 97,110,107,105,110,103, 0, 97,103,103,114, +101,115,115,105,111,110, 0, 97,105,114, 95,109,105,110, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95,115,112,101, +101,100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, 99, 0, 97,105,114, 95,109, 97,120, 95, 97,118,101, 0, 97,105,114, 95,112, +101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,106,117,109,112, 95,115,112,101,101,100, 0,108, 97, +110,100, 95,109, 97,120, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95, 97, 99, 99, 0,108, 97,110,100, 95,109, + 97,120, 95, 97,118,101, 0,108, 97,110,100, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95, +115,116,105, 99,107, 95,102,111,114, 99,101, 0,115,116, 97,116,101,115, 0, 42,115,109,100, 0, 42,102,108,117,105,100, 95,103, +114,111,117,112, 0, 42, 99,111,108,108, 95,103,114,111,117,112, 0, 42,119,116, 0, 42,116,101,120, 95,119,116, 0, 42,116,101, +120, 95,115,104, 97,100,111,119, 0, 42,115,104, 97,100,111,119, 0,112, 48, 91, 51, 93, 0,112, 49, 91, 51, 93, 0,100,120, 0, +111,109,101,103, 97, 0,116,101,109,112, 65,109, 98, 0, 98,101,116, 97, 0,114,101,115, 91, 51, 93, 0, 97,109,112,108,105,102, +121, 0,109, 97,120,114,101,115, 0,118,105,101,119,115,101,116,116,105,110,103,115, 0,110,111,105,115,101, 0,100,105,115,115, + 95,112,101,114, 99,101,110,116, 0,100,105,115,115, 95,115,112,101,101,100, 0,114,101,115, 95,119,116, 91, 51, 93, 0,100,120, + 95,119,116, 0,118, 51,100,110,117,109, 0, 99, 97, 99,104,101, 95, 99,111,109,112, 0, 99, 97, 99,104,101, 95,104,105,103,104, + 95, 99,111,109,112, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 91, 50, 93, 0,112,116, 99, 97, 99,104,101,115, 91, 50, + 93, 0,118,101,108,111, 99,105,116,121, 91, 51, 93, 0,118,103,114,112, 95,104,101, 97,116, 95,115, 99, 97,108,101, 91, 50, 93, + 0,118,103,114,111,117,112, 95,102,108,111,119, 0,118,103,114,111,117,112, 95,100,101,110,115,105,116,121, 0,118,103,114,111, +117,112, 95,104,101, 97,116, 0, 42,112,111,105,110,116,115, 95,111,108,100, 0, 42,118,101,108, 0,109, 97,116, 95,111,108,100, + 91, 52, 93, 91, 52, 93, 0, 0, 84, 89, 80, 69,212, 1, 0, 0, 99,104, 97,114, 0,117, 99,104, 97,114, 0,115,104,111,114,116, + 0,117,115,104,111,114,116, 0,105,110,116, 0,108,111,110,103, 0,117,108,111,110,103, 0,102,108,111, 97,116, 0,100,111,117, + 98,108,101, 0,118,111,105,100, 0, 76,105,110,107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76,105,115,116, 66, 97,115,101, 0, +118,101, 99, 50,115, 0,118,101, 99, 50,102, 0,118,101, 99, 50,105, 0,118,101, 99, 50,100, 0,118,101, 99, 51,105, 0,118,101, + 99, 51,102, 0,118,101, 99, 51,100, 0,118,101, 99, 52,105, 0,118,101, 99, 52,102, 0,118,101, 99, 52,100, 0,114, 99,116,105, + 0,114, 99,116,102, 0, 73, 68, 80,114,111,112,101,114,116,121, 68, 97,116, 97, 0, 73, 68, 80,114,111,112,101,114,116,121, 0, + 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70,105,108,101, 68, 97,116, 97, 0, 80,114,101,118,105,101,119, 73,109, 97,103,101, + 0, 73,112,111, 68,114,105,118,101,114, 0, 79, 98,106,101, 99,116, 0, 73,112,111, 67,117,114,118,101, 0, 66, 80,111,105,110, +116, 0, 66,101,122, 84,114,105,112,108,101, 0, 73,112,111, 0, 75,101,121, 66,108,111, 99,107, 0, 75,101,121, 0, 65,110,105, +109, 68, 97,116, 97, 0, 84,101,120,116, 76,105,110,101, 0, 84,101,120,116, 77, 97,114,107,101,114, 0, 84,101,120,116, 0, 80, + 97, 99,107,101,100, 70,105,108,101, 0, 67, 97,109,101,114, 97, 0, 73,109, 97,103,101, 85,115,101,114, 0, 83, 99,101,110,101, + 0, 73,109, 97,103,101, 0, 71, 80, 85, 84,101,120,116,117,114,101, 0, 97,110,105,109, 0, 82,101,110,100,101,114, 82,101,115, +117,108,116, 0, 77, 84,101,120, 0, 84,101,120, 0, 80,108,117,103,105,110, 84,101,120, 0, 67, 66, 68, 97,116, 97, 0, 67,111, +108,111,114, 66, 97,110,100, 0, 69,110,118, 77, 97,112, 0, 73,109, 66,117,102, 0, 80,111,105,110,116, 68,101,110,115,105,116, +121, 0, 86,111,120,101,108, 68, 97,116, 97, 0, 98, 78,111,100,101, 84,114,101,101, 0, 84,101,120, 77, 97,112,112,105,110,103, + 0, 76, 97,109,112, 0, 67,117,114,118,101, 77, 97,112,112,105,110,103, 0, 87, 97,118,101, 0, 86,111,108,117,109,101, 83,101, +116,116,105,110,103,115, 0, 77, 97,116,101,114,105, 97,108, 0, 71,114,111,117,112, 0, 86, 70,111,110,116, 0, 86, 70,111,110, +116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108,101,109, 0, 66,111,117,110,100, 66,111,120, 0, 77,101,116, 97, 66, 97,108,108, + 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110,102,111, 0, 84,101,120,116, 66,111,120, 0, 67,117,114,118,101, 0, 80, 97,116, +104, 0, 83,101,108, 66,111,120, 0, 69,100,105,116, 70,111,110,116, 0, 77,101,115,104, 0, 77, 70, 97, 99,101, 0, 77, 84, 70, + 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86,101,114,116, 0, 77, 69,100,103,101, 0, 77, 68,101,102,111,114,109, 86,101,114, +116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99,107,121, 0, 77, 83,101,108,101, 99,116, 0, 69,100,105,116, 77,101,115,104, 0, + 67,117,115,116,111,109, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 0, 80, 97,114,116,105, 97,108, 86,105,115,105, 98, +105,108,105,116,121, 0, 77, 68,101,102,111,114,109, 87,101,105,103,104,116, 0, 77, 84,101,120, 80,111,108,121, 0, 77, 76,111, +111,112, 85, 86, 0, 77, 76,111,111,112, 67,111,108, 0, 77, 70,108,111, 97,116, 80,114,111,112,101,114,116,121, 0, 77, 73,110, +116, 80,114,111,112,101,114,116,121, 0, 77, 83,116,114,105,110,103, 80,114,111,112,101,114,116,121, 0, 79,114,105,103, 83,112, + 97, 99,101, 70, 97, 99,101, 0, 77, 68,105,115,112,115, 0, 77,117,108,116,105,114,101,115, 67,111,108, 0, 77,117,108,116,105, +114,101,115, 67,111,108, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, + 69,100,103,101, 0, 77,117,108,116,105,114,101,115, 76,101,118,101,108, 0, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, + 83,117, 98,115,117,114,102, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 77,111,100,105,102, +105,101,114, 68, 97,116, 97, 0, 67,117,114,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,117,105,108,100, 77, +111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 97,115,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114,114, + 97,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,105,114,114,111,114, 77,111,100,105,102,105,101,114, 68, 97,116, + 97, 0, 69,100,103,101, 83,112,108,105,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,101,118,101,108, 77,111,100, +105,102,105,101,114, 68, 97,116, 97, 0, 66, 77,101,115,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107, +101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 68,111,109, 97,105,110, 83,101,116,116,105,110,103, +115, 0, 83,109,111,107,101, 70,108,111,119, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 67,111,108,108, 83,101,116, +116,105,110,103,115, 0, 68,105,115,112,108, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 85, 86, 80,114,111, +106,101, 99,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101, 99,105,109, 97,116,101, 77,111,100,105,102,105,101, +114, 68, 97,116, 97, 0, 83,109,111,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67, 97,115,116, 77,111,100, +105,102,105,101,114, 68, 97,116, 97, 0, 87, 97,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114,109, 97,116, +117,114,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 72,111,111,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, + 0, 83,111,102,116, 98,111,100,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 77,111,100,105,102, +105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 0, 67,108,111,116,104, 83,105,109, 83,101,116,116,105,110,103,115, 0, 67, +108,111,116,104, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 80,111,105,110,116, 67, 97, 99,104,101, 0, 67,111,108,108, +105,115,105,111,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 86, 72, 84,114,101,101, 0, 83,117,114,102, 97, 99, +101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101,114,105,118,101,100, 77,101,115,104, 0, 66, 86, 72, 84,114,101, +101, 70,114,111,109, 77,101,115,104, 0, 66,111,111,108,101, 97,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 68, +101,102, 73,110,102,108,117,101,110, 99,101, 0, 77, 68,101,102, 67,101,108,108, 0, 77,101,115,104, 68,101,102,111,114,109, 77, +111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 77,111,100,105,102,105, +101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 0, 80, 97,114,116,105, 99,108,101, 73,110, +115,116, 97,110, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,120,112,108,111,100,101, 77,111,100,105,102,105, +101,114, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105, +100,115,105,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 83,101,116,116,105,110,103, +115, 0, 83,104,114,105,110,107,119,114, 97,112, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,105,109,112,108,101, 68, +101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,104, 97,112,101, 75,101,121, 77,111,100,105,102,105, +101,114, 68, 97,116, 97, 0, 83,111,108,105,100,105,102,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83, 99,114,101, +119, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 0, 98, 68,101,102,111,114,109, 71,114,111, +117,112, 0, 83, 99,117,108,112,116, 83,101,115,115,105,111,110, 0, 98, 65, 99,116,105,111,110, 0, 98, 80,111,115,101, 0, 98, + 71, 80,100, 97,116, 97, 0, 98, 65,110,105,109, 86,105,122, 83,101,116,116,105,110,103,115, 0, 98, 77,111,116,105,111,110, 80, + 97,116,104, 0, 66,117,108,108,101,116, 83,111,102,116, 66,111,100,121, 0, 80, 97,114,116, 68,101,102,108,101, 99,116, 0, 83, +111,102,116, 66,111,100,121, 0, 79, 98, 72,111,111,107, 0, 68,117,112,108,105, 79, 98,106,101, 99,116, 0, 82, 78, 71, 0, 69, +102,102,101, 99,116,111,114, 87,101,105,103,104,116,115, 0, 80, 84, 67, 97, 99,104,101, 77,101,109, 0, 80, 84, 67, 97, 99,104, +101, 69,100,105,116, 0, 83, 66, 86,101,114,116,101,120, 0, 66,111,100,121, 80,111,105,110,116, 0, 66,111,100,121, 83,112,114, +105,110,103, 0, 83, 66, 83, 99,114, 97,116, 99,104, 0, 87,111,114,108,100, 0, 66, 97,115,101, 0, 65,118,105, 67,111,100,101, + 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105, +109,101, 67,111,100,101, 99, 83,101,116,116,105,110,103,115, 0, 70, 70, 77,112,101,103, 67,111,100,101, 99, 68, 97,116, 97, 0, + 65,117,100,105,111, 68, 97,116, 97, 0, 83, 99,101,110,101, 82,101,110,100,101,114, 76, 97,121,101,114, 0, 82,101,110,100,101, +114, 68, 97,116, 97, 0, 82,101,110,100,101,114, 80,114,111,102,105,108,101, 0, 71, 97,109,101, 68,111,109,101, 0, 71, 97,109, +101, 70,114, 97,109,105,110,103, 0, 71, 97,109,101, 68, 97,116, 97, 0, 84,105,109,101, 77, 97,114,107,101,114, 0, 80, 97,105, +110,116, 0, 66,114,117,115,104, 0, 73,109, 97,103,101, 80, 97,105,110,116, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116, +105, 99,108,101, 66,114,117,115,104, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 69,100,105,116, 83,101,116,116,105,110, +103,115, 0, 84,114, 97,110,115,102,111,114,109, 79,114,105,101,110,116, 97,116,105,111,110, 0, 83, 99,117,108,112,116, 0, 86, + 80, 97,105,110,116, 0, 84,111,111,108, 83,101,116,116,105,110,103,115, 0, 98, 83,116, 97,116,115, 0, 85,110,105,116, 83,101, +116,116,105,110,103,115, 0, 80,104,121,115,105, 99,115, 83,101,116,116,105,110,103,115, 0, 69,100,105,116,105,110,103, 0, 83, + 99,101,110,101, 83,116, 97,116,115, 0, 68, 97,103, 70,111,114,101,115,116, 0, 66, 71,112,105, 99, 0, 82,101,103,105,111,110, + 86,105,101,119, 51, 68, 0, 82,101,110,100,101,114, 73,110,102,111, 0, 82,101,116,111,112,111, 86,105,101,119, 68, 97,116, 97, + 0, 86,105,101,119, 68,101,112,116,104,115, 0, 83,109,111,111,116,104, 86,105,101,119, 83,116,111,114,101, 0,119,109, 84,105, +109,101,114, 0, 86,105,101,119, 51, 68, 0, 83,112, 97, 99,101, 76,105,110,107, 0, 86,105,101,119, 50, 68, 0, 83,112, 97, 99, +101, 73,110,102,111, 0, 98, 83, 99,114,101,101,110, 0, 83,112, 97, 99,101, 73,112,111, 0, 98, 68,111,112,101, 83,104,101,101, +116, 0, 83,112, 97, 99,101, 66,117,116,115, 0, 83,112, 97, 99,101, 83,101,113, 0, 70,105,108,101, 83,101,108,101, 99,116, 80, + 97,114, 97,109,115, 0, 83,112, 97, 99,101, 70,105,108,101, 0, 70,105,108,101, 76,105,115,116, 0,119,109, 79,112,101,114, 97, +116,111,114, 0, 70,105,108,101, 76, 97,121,111,117,116, 0, 83,112, 97, 99,101, 79,111,112,115, 0, 84,114,101,101, 83,116,111, +114,101, 0, 84,114,101,101, 83,116,111,114,101, 69,108,101,109, 0, 83,112, 97, 99,101, 73,109, 97,103,101, 0, 83, 99,111,112, +101,115, 0, 72,105,115,116,111,103,114, 97,109, 0, 83,112, 97, 99,101, 78,108, 97, 0, 83,112, 97, 99,101, 84,101,120,116, 0, + 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 84,105,109,101, 67, 97, 99,104, +101, 0, 83,112, 97, 99,101, 84,105,109,101, 0, 83,112, 97, 99,101, 78,111,100,101, 0, 83,112, 97, 99,101, 76,111,103,105, 99, + 0, 83,112, 97, 99,101, 73,109, 97, 83,101,108, 0, 67,111,110,115,111,108,101, 76,105,110,101, 0, 83,112, 97, 99,101, 67,111, +110,115,111,108,101, 0, 83,112, 97, 99,101, 85,115,101,114, 80,114,101,102, 0,117,105, 70,111,110,116, 0,117,105, 70,111,110, +116, 83,116,121,108,101, 0,117,105, 83,116,121,108,101, 0,117,105, 87,105,100,103,101,116, 67,111,108,111,114,115, 0,117,105, + 87,105,100,103,101,116, 83,116, 97,116,101, 67,111,108,111,114,115, 0, 84,104,101,109,101, 85, 73, 0, 84,104,101,109,101, 83, +112, 97, 99,101, 0, 84,104,101,109,101, 87,105,114,101, 67,111,108,111,114, 0, 98, 84,104,101,109,101, 0, 98, 65,100,100,111, +110, 0, 83,111,108,105,100, 76,105,103,104,116, 0, 85,115,101,114, 68,101,102, 0, 83, 99,114, 86,101,114,116, 0, 83, 99,114, + 69,100,103,101, 0, 80, 97,110,101,108, 0, 80, 97,110,101,108, 84,121,112,101, 0,117,105, 76, 97,121,111,117,116, 0, 83, 99, +114, 65,114,101, 97, 0, 83,112, 97, 99,101, 84,121,112,101, 0, 65, 82,101,103,105,111,110, 0, 65, 82,101,103,105,111,110, 84, +121,112,101, 0, 70,105,108,101, 71,108,111, 98, 97,108, 0, 83,116,114,105,112, 69,108,101,109, 0, 84, 83,116,114,105,112, 69, +108,101,109, 0, 83,116,114,105,112, 67,114,111,112, 0, 83,116,114,105,112, 84,114, 97,110,115,102,111,114,109, 0, 83,116,114, +105,112, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 83,116,114,105,112, 80,114,111,120,121, 0, 83,116,114,105,112, 0, + 80,108,117,103,105,110, 83,101,113, 0, 83,101,113,117,101,110, 99,101, 0, 98, 83,111,117,110,100, 0, 77,101,116, 97, 83,116, + 97, 99,107, 0, 87,105,112,101, 86, 97,114,115, 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, 97,110,115,102,111,114,109, 86, + 97,114,115, 0, 83,111,108,105,100, 67,111,108,111,114, 86, 97,114,115, 0, 83,112,101,101,100, 67,111,110,116,114,111,108, 86, + 97,114,115, 0, 69,102,102,101, 99,116, 0, 66,117,105,108,100, 69,102,102, 0, 80, 97,114,116, 69,102,102, 0, 80, 97,114,116, +105, 99,108,101, 0, 87, 97,118,101, 69,102,102, 0, 98, 80,114,111,112,101,114,116,121, 0, 98, 78,101, 97,114, 83,101,110,115, +111,114, 0, 98, 77,111,117,115,101, 83,101,110,115,111,114, 0, 98, 84,111,117, 99,104, 83,101,110,115,111,114, 0, 98, 75,101, +121, 98,111, 97,114,100, 83,101,110,115,111,114, 0, 98, 80,114,111,112,101,114,116,121, 83,101,110,115,111,114, 0, 98, 65, 99, +116,117, 97,116,111,114, 83,101,110,115,111,114, 0, 98, 68,101,108, 97,121, 83,101,110,115,111,114, 0, 98, 67,111,108,108,105, +115,105,111,110, 83,101,110,115,111,114, 0, 98, 82, 97,100, 97,114, 83,101,110,115,111,114, 0, 98, 82, 97,110,100,111,109, 83, +101,110,115,111,114, 0, 98, 82, 97,121, 83,101,110,115,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 83,101,110,115,111,114, + 0, 98, 77,101,115,115, 97,103,101, 83,101,110,115,111,114, 0, 98, 83,101,110,115,111,114, 0, 98, 67,111,110,116,114,111,108, +108,101,114, 0, 98, 74,111,121,115,116,105, 99,107, 83,101,110,115,111,114, 0, 98, 69,120,112,114,101,115,115,105,111,110, 67, +111,110,116, 0, 98, 80,121,116,104,111,110, 67,111,110,116, 0, 98, 65, 99,116,117, 97,116,111,114, 0, 98, 65,100,100, 79, 98, +106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 65, 99,116,105,111,110, 65, 99,116,117, 97,116,111,114, 0, 98, 83,111, +117,110,100, 65, 99,116,117, 97,116,111,114, 0, 83,111,117,110,100, 51, 68, 0, 98, 69,100,105,116, 79, 98,106,101, 99,116, 65, + 99,116,117, 97,116,111,114, 0, 98, 83, 99,101,110,101, 65, 99,116,117, 97,116,111,114, 0, 98, 80,114,111,112,101,114,116,121, + 65, 99,116,117, 97,116,111,114, 0, 98, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 73,112,111, 65, 99,116, +117, 97,116,111,114, 0, 98, 67, 97,109,101,114, 97, 65, 99,116,117, 97,116,111,114, 0, 98, 67,111,110,115,116,114, 97,105,110, +116, 65, 99,116,117, 97,116,111,114, 0, 98, 71,114,111,117,112, 65, 99,116,117, 97,116,111,114, 0, 98, 82, 97,110,100,111,109, + 65, 99,116,117, 97,116,111,114, 0, 98, 77,101,115,115, 97,103,101, 65, 99,116,117, 97,116,111,114, 0, 98, 71, 97,109,101, 65, + 99,116,117, 97,116,111,114, 0, 98, 86,105,115,105, 98,105,108,105,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 84,119,111, + 68, 70,105,108,116,101,114, 65, 99,116,117, 97,116,111,114, 0, 98, 80, 97,114,101,110,116, 65, 99,116,117, 97,116,111,114, 0, + 98, 83,116, 97,116,101, 65, 99,116,117, 97,116,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 65, 99,116,117, 97,116,111,114, + 0, 70,114,101,101, 67, 97,109,101,114, 97, 0, 83,112, 97, 99,101, 83,111,117,110,100, 0, 71,114,111,117,112, 79, 98,106,101, + 99,116, 0, 66,111,110,101, 0, 98, 65,114,109, 97,116,117,114,101, 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 86,101,114, +116, 0, 98, 80,111,115,101, 67,104, 97,110,110,101,108, 0, 71, 72, 97,115,104, 0, 98, 73, 75, 80, 97,114, 97,109, 0, 98, 73, +116, 97,115, 99, 0, 98, 65, 99,116,105,111,110, 71,114,111,117,112, 0, 83,112, 97, 99,101, 65, 99,116,105,111,110, 0, 98, 65, + 99,116,105,111,110, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108, 0, + 98, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 84, 97,114,103,101,116, 0, 98, 80, +121,116,104,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 75,105,110,101,109, 97,116,105, 99, 67,111,110,115,116,114, + 97,105,110,116, 0, 98, 83,112,108,105,110,101, 73, 75, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97, 99,107, 84, +111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110, +116, 0, 98, 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,107, +101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83, 97,109,101, 86,111,108,117,109,101, 67,111,110,115,116,114, 97,105,110, +116, 0, 98, 84,114, 97,110,115, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 77,105,110, 77, 97,120, 67,111, +110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99,107, + 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68, 97,109,112, 84,114, 97, 99,107, 67,111,110,115,116,114, + 97,105,110,116, 0, 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,116,114,101, +116, 99,104, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,105,103,105,100, 66,111,100,121, 74,111,105,110,116, 67, +111,110,115,116,114, 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,104, +105,108,100, 79,102, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115,102,111,114,109, 67,111,110,115,116,114, + 97,105,110,116, 0, 98, 80,105,118,111,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 76,105,109,105,116, 67, +111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83, +105,122,101, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68,105,115,116, 76,105,109,105,116, 67,111,110, +115,116,114, 97,105,110,116, 0, 98, 83,104,114,105,110,107,119,114, 97,112, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, + 99,116,105,111,110, 77,111,100,105,102,105,101,114, 0, 98, 65, 99,116,105,111,110, 83,116,114,105,112, 0, 98, 78,111,100,101, + 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 0, 98, 78,111,100,101, 76,105,110,107, 0, 98, 78,111,100, +101, 0, 98, 78,111,100,101, 80,114,101,118,105,101,119, 0,117,105, 66,108,111, 99,107, 0, 98, 78,111,100,101, 84,121,112,101, + 0, 78,111,100,101, 73,109, 97,103,101, 65,110,105,109, 0, 78,111,100,101, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, + 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 66,105,108, 97,116,101,114, 97,108, 66,108,117,114, 68, 97,116, 97, 0, + 78,111,100,101, 72,117,101, 83, 97,116, 0, 78,111,100,101, 73,109, 97,103,101, 70,105,108,101, 0, 78,111,100,101, 67,104,114, +111,109, 97, 0, 78,111,100,101, 84,119,111, 88, 89,115, 0, 78,111,100,101, 84,119,111, 70,108,111, 97,116,115, 0, 78,111,100, +101, 71,101,111,109,101,116,114,121, 0, 78,111,100,101, 86,101,114,116,101,120, 67,111,108, 0, 78,111,100,101, 68,101,102,111, + 99,117,115, 0, 78,111,100,101, 83, 99,114,105,112,116, 68,105, 99,116, 0, 78,111,100,101, 71,108, 97,114,101, 0, 78,111,100, +101, 84,111,110,101,109, 97,112, 0, 78,111,100,101, 76,101,110,115, 68,105,115,116, 0, 78,111,100,101, 67,111,108,111,114, 66, + 97,108, 97,110, 99,101, 0, 78,111,100,101, 67,111,108,111,114,115,112,105,108,108, 0, 84,101,120, 78,111,100,101, 79,117,116, +112,117,116, 0, 67,117,114,118,101, 77, 97,112, 80,111,105,110,116, 0, 67,117,114,118,101, 77, 97,112, 0, 66,114,117,115,104, + 67,108,111,110,101, 0, 67,117,115,116,111,109, 68, 97,116, 97, 76, 97,121,101,114, 0, 67,117,115,116,111,109, 68, 97,116, 97, + 69,120,116,101,114,110, 97,108, 0, 72, 97,105,114, 75,101,121, 0, 80, 97,114,116,105, 99,108,101, 75,101,121, 0, 66,111,105, +100, 80, 97,114,116,105, 99,108,101, 0, 66,111,105,100, 68, 97,116, 97, 0, 67,104,105,108,100, 80, 97,114,116,105, 99,108,101, + 0, 80, 97,114,116,105, 99,108,101, 84, 97,114,103,101,116, 0, 80, 97,114,116,105, 99,108,101, 68,117,112,108,105, 87,101,105, +103,104,116, 0, 80, 97,114,116,105, 99,108,101, 68, 97,116, 97, 0, 83, 80, 72, 70,108,117,105,100, 83,101,116,116,105,110,103, +115, 0, 80, 97,114,116,105, 99,108,101, 83,101,116,116,105,110,103,115, 0, 66,111,105,100, 83,101,116,116,105,110,103,115, 0, + 80, 97,114,116,105, 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 75, 68, 84,114,101,101, 0, 80, 97,114,116,105, 99,108,101, + 68,114, 97,119, 68, 97,116, 97, 0, 76,105,110,107, 78,111,100,101, 0, 98, 71, 80, 68,115,112,111,105,110,116, 0, 98, 71, 80, + 68,115,116,114,111,107,101, 0, 98, 71, 80, 68,102,114, 97,109,101, 0, 98, 71, 80, 68,108, 97,121,101,114, 0, 82,101,112,111, +114,116, 0, 82,101,112,111,114,116, 76,105,115,116, 0, 82,101,112,111,114,116, 84,105,109,101,114, 73,110,102,111, 0,119,109, + 87,105,110,100,111,119, 77, 97,110, 97,103,101,114, 0,119,109, 87,105,110,100,111,119, 0,119,109, 75,101,121, 67,111,110,102, +105,103, 0,119,109, 69,118,101,110,116, 0,119,109, 83,117, 98, 87,105,110,100,111,119, 0,119,109, 71,101,115,116,117,114,101, + 0,119,109, 75,101,121, 77, 97,112, 73,116,101,109, 0, 80,111,105,110,116,101,114, 82, 78, 65, 0,119,109, 75,101,121, 77, 97, +112, 0,119,109, 79,112,101,114, 97,116,111,114, 84,121,112,101, 0, 70, 77,111,100,105,102,105,101,114, 0, 70, 77,111,100, 95, + 71,101,110,101,114, 97,116,111,114, 0, 70, 77,111,100, 95, 70,117,110, 99,116,105,111,110, 71,101,110,101,114, 97,116,111,114, + 0, 70, 67, 77, 95, 69,110,118,101,108,111,112,101, 68, 97,116, 97, 0, 70, 77,111,100, 95, 69,110,118,101,108,111,112,101, 0, + 70, 77,111,100, 95, 67,121, 99,108,101,115, 0, 70, 77,111,100, 95, 80,121,116,104,111,110, 0, 70, 77,111,100, 95, 76,105,109, +105,116,115, 0, 70, 77,111,100, 95, 78,111,105,115,101, 0, 70, 77,111,100, 95, 83,116,101,112,112,101,100, 0, 68,114,105,118, +101,114, 84, 97,114,103,101,116, 0, 68,114,105,118,101,114, 86, 97,114, 0, 67,104, 97,110,110,101,108, 68,114,105,118,101,114, + 0, 70, 80,111,105,110,116, 0, 70, 67,117,114,118,101, 0, 65,110,105,109, 77, 97,112, 80, 97,105,114, 0, 65,110,105,109, 77, + 97,112,112,101,114, 0, 78,108, 97, 83,116,114,105,112, 0, 78,108, 97, 84,114, 97, 99,107, 0, 75, 83, 95, 80, 97,116,104, 0, + 75,101,121,105,110,103, 83,101,116, 0, 65,110,105,109, 79,118,101,114,114,105,100,101, 0, 73,100, 65,100,116, 84,101,109,112, +108, 97,116,101, 0, 66,111,105,100, 82,117,108,101, 0, 66,111,105,100, 82,117,108,101, 71,111, 97,108, 65,118,111,105,100, 0, + 66,111,105,100, 82,117,108,101, 65,118,111,105,100, 67,111,108,108,105,115,105,111,110, 0, 66,111,105,100, 82,117,108,101, 70, +111,108,108,111,119, 76,101, 97,100,101,114, 0, 66,111,105,100, 82,117,108,101, 65,118,101,114, 97,103,101, 83,112,101,101,100, + 0, 66,111,105,100, 82,117,108,101, 70,105,103,104,116, 0, 66,111,105,100, 83,116, 97,116,101, 0, 70, 76, 85, 73, 68, 95, 51, + 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 0, 0, 0, 84, 76, 69, 78, 1, 0, 1, 0, 2, 0, 2, 0, 4, 0, 4, 0, + 4, 0, 4, 0, 8, 0, 0, 0, 16, 0, 24, 0, 16, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, 12, 0, 24, 0, 16, 0, 16, 0, + 32, 0, 16, 0, 16, 0, 32, 0, 96, 0, 72, 0, 72, 2, 0, 0, 40, 0,144, 0,208, 4,112, 0, 36, 0, 56, 0,112, 0,128, 0, +168, 0, 96, 0, 40, 0, 48, 0,176, 0, 16, 0,136, 0, 40, 0, 8, 6,240, 1, 0, 0, 0, 0, 0, 0, 16, 1,112, 1,120, 1, + 24, 0, 8, 3,200, 0, 0, 0, 88, 0, 40, 1,240, 0,136, 0,216, 1, 64, 1, 80, 0, 88, 0, 32, 3,104, 0, 88, 1, 0, 0, +128, 0,104, 0,208, 0, 80, 0, 8, 0, 16, 0,216, 1, 0, 0, 0, 0, 0, 0,176, 1, 20, 0, 48, 0, 64, 0, 24, 0, 12, 0, + 16, 0, 4, 0, 8, 0, 8, 0, 0, 0, 40, 0,128, 0, 48, 0, 8, 0, 16, 0, 8, 0, 8, 0, 4, 0, 4, 0, 0, 1, 32, 0, + 16, 0, 16, 0, 64, 0, 24, 0, 12, 0, 64, 0, 80, 0,104, 0,120, 0,128, 0, 96, 0,128, 0,160, 0, 96, 0, 88, 0,136, 0, + 88, 0,112, 0, 0, 1, 56, 0,192, 0,184, 0,232, 0, 88, 0,120, 0,136, 0,224, 0,136, 0,248, 0, 80, 0,136, 0, 0, 0, +152, 0, 40, 0, 8, 2,160, 0, 0, 0,120, 0, 0, 0, 0, 0, 96, 0, 8, 0, 8, 0, 48, 1,112, 0,240, 1,104, 0, 96, 0, + 88, 0, 96, 0,200, 1,144, 0,136, 0, 80, 0,136, 0,112, 0, 8, 1, 48, 0, 0, 0,144, 0,176, 0,104, 0, 48, 0, 24, 0, +120, 0,152, 0,120, 1,224, 0,192, 0, 0, 0, 72, 0,168, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,232, 1, 40, 0,184, 0, +152, 0, 64, 0, 64, 0, 24, 0, 88, 0, 0, 4, 64, 0, 24, 0, 16, 0,104, 0, 96, 0, 32, 0,240, 1, 56, 0, 16, 0,168, 0, + 88, 0,104, 0, 64, 0,184, 1, 32, 0, 8, 0, 24, 0, 80, 2, 0, 0, 0, 0, 88, 0,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 48, 1, 56, 0,144, 0, 72, 0,208, 0,240, 0, 40, 0,248, 0,240, 0,200, 1,104, 0, 0, 0,168, 0, 0, 0, 32, 1, + 16, 0, 16, 0, 72, 33,128, 16, 24, 16,216, 0,144, 2,120, 2, 64, 0, 48, 0,216, 0, 32, 1, 72, 0,200, 2, 40, 0,144, 1, +104, 0, 24, 1, 32, 0,232, 0, 32, 0, 32, 0,112, 2,104, 1, 16, 0, 56, 29, 80, 0, 56, 0, 32, 13, 32, 0, 40, 0, 88, 1, + 0, 0, 0, 0,160, 0, 0, 0, 40, 1, 0, 0, 24, 1, 80, 0, 48, 0, 16, 0, 8, 0, 44, 0, 0, 1, 32, 1,200, 1, 32, 1, +136, 1, 32, 0, 12, 0, 24, 0, 52, 0, 16, 0, 24, 0, 24, 0, 32, 0, 72, 1, 0, 0, 64, 0, 64, 0, 48, 0, 8, 0, 48, 0, + 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 72, 0, 72, 0, 96, 0,104, 0, 60, 0,128, 0, 80, 0, 80, 0, + 16, 0, 96, 0, 72, 0, 32, 0, 88, 0, 24, 0, 80, 0,112, 0, 84, 0, 32, 0, 96, 0, 56, 0, 56, 0,112, 0,140, 0, 4, 0, + 24, 0, 16, 0, 8, 0, 88, 0, 40, 0,216, 0, 40, 0, 40, 1,200, 0, 16, 0, 16, 2, 0, 0, 4, 0, 40, 0,120, 0, 0, 1, + 88, 0, 56, 0, 88, 0,128, 0, 80, 0,120, 0, 24, 0, 56, 0, 48, 0, 48, 0, 48, 0, 8, 0, 40, 0, 72, 0, 72, 0, 48, 0, + 48, 0, 24, 0, 56, 0,104, 0, 16, 0,112, 0, 96, 0, 56, 0, 28, 0, 28, 0, 28, 0, 56, 0, 24, 0, 72, 0,168, 0, 40, 0, +144, 0, 56, 0,232, 0, 0, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, 44, 0, 8, 0, 8, 0, 64, 0, + 32, 0, 24, 0, 16, 0, 24, 0, 32, 0, 8, 0, 84, 0, 20, 0, 32, 0, 12, 0, 56, 0, 24, 0, 72, 0,240, 0, 24, 0, 56, 0, + 56, 0, 20, 0, 64, 0, 40, 0, 32, 0,192, 0, 36, 0, 16, 2,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 32, 0, 40, 0, +192, 0, 40, 0, 40, 0, 20, 0, 24, 1,224, 0,168, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0,120, 0, 0, 0,104, 0, 24, 0, + 24, 0, 16, 0, 24, 0, 8, 0, 16, 0, 24, 0, 20, 0, 20, 0, 56, 0, 24, 2, 40, 1, 16, 0,104, 0, 0, 1, 40, 0,200, 0, +104, 0,112, 0,168, 0, 32, 0, 80, 0, 56, 0, 80, 0, 64, 0,104, 0, 72, 0, 64, 0,128, 0, 0, 0, 0, 0, 83, 84, 82, 67, +153, 1, 0, 0, 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0, 11, 0, 1, 0, 9, 0, 2, 0, + 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4, 0, 13, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0, 14, 0, 2, 0, 7, 0, 5, 0, + 7, 0, 6, 0, 15, 0, 2, 0, 4, 0, 5, 0, 4, 0, 6, 0, 16, 0, 2, 0, 8, 0, 5, 0, 8, 0, 6, 0, 17, 0, 3, 0, + 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 18, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 19, 0, 3, 0, + 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 20, 0, 4, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 4, 0, 8, 0, + 21, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 8, 0, 22, 0, 4, 0, 8, 0, 5, 0, 8, 0, 6, 0, + 8, 0, 7, 0, 8, 0, 8, 0, 23, 0, 4, 0, 4, 0, 9, 0, 4, 0, 10, 0, 4, 0, 11, 0, 4, 0, 12, 0, 24, 0, 4, 0, + 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 25, 0, 4, 0, 9, 0, 13, 0, 12, 0, 14, 0, 4, 0, 15, 0, + 4, 0, 16, 0, 26, 0, 10, 0, 26, 0, 0, 0, 26, 0, 1, 0, 0, 0, 17, 0, 0, 0, 18, 0, 2, 0, 19, 0, 0, 0, 20, 0, + 4, 0, 21, 0, 25, 0, 22, 0, 4, 0, 23, 0, 4, 0, 24, 0, 27, 0, 9, 0, 9, 0, 0, 0, 9, 0, 1, 0, 27, 0, 25, 0, + 28, 0, 26, 0, 0, 0, 27, 0, 2, 0, 28, 0, 2, 0, 19, 0, 4, 0, 29, 0, 26, 0, 30, 0, 28, 0, 8, 0, 27, 0, 31, 0, + 27, 0, 32, 0, 29, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 4, 0, 36, 0, 4, 0, 37, 0, 28, 0, 38, 0, 30, 0, 5, 0, + 4, 0, 39, 0, 4, 0, 40, 0, 2, 0, 41, 0, 2, 0, 42, 0, 4, 0, 43, 0, 31, 0, 6, 0, 32, 0, 44, 0, 2, 0, 45, 0, + 2, 0, 46, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 47, 0, 33, 0, 21, 0, 33, 0, 0, 0, 33, 0, 1, 0, 34, 0, 48, 0, + 35, 0, 49, 0, 24, 0, 50, 0, 24, 0, 51, 0, 2, 0, 45, 0, 2, 0, 46, 0, 2, 0, 52, 0, 2, 0, 53, 0, 2, 0, 54, 0, + 2, 0, 55, 0, 2, 0, 19, 0, 2, 0, 56, 0, 7, 0, 11, 0, 7, 0, 12, 0, 4, 0, 57, 0, 7, 0, 58, 0, 7, 0, 59, 0, + 7, 0, 60, 0, 31, 0, 61, 0, 36, 0, 7, 0, 27, 0, 31, 0, 12, 0, 62, 0, 24, 0, 63, 0, 2, 0, 45, 0, 2, 0, 64, 0, + 2, 0, 65, 0, 2, 0, 37, 0, 37, 0, 16, 0, 37, 0, 0, 0, 37, 0, 1, 0, 7, 0, 66, 0, 7, 0, 60, 0, 2, 0, 17, 0, + 2, 0, 46, 0, 2, 0, 67, 0, 2, 0, 19, 0, 4, 0, 68, 0, 4, 0, 69, 0, 9, 0, 2, 0, 7, 0, 70, 0, 0, 0, 20, 0, + 0, 0, 71, 0, 7, 0, 72, 0, 7, 0, 73, 0, 38, 0, 13, 0, 27, 0, 31, 0, 39, 0, 74, 0, 37, 0, 75, 0, 0, 0, 76, 0, + 4, 0, 77, 0, 7, 0, 60, 0, 12, 0, 78, 0, 36, 0, 79, 0, 27, 0, 80, 0, 2, 0, 17, 0, 2, 0, 81, 0, 2, 0, 82, 0, + 2, 0, 19, 0, 40, 0, 6, 0, 40, 0, 0, 0, 40, 0, 1, 0, 0, 0, 83, 0, 0, 0, 84, 0, 4, 0, 23, 0, 4, 0, 85, 0, + 41, 0, 10, 0, 41, 0, 0, 0, 41, 0, 1, 0, 4, 0, 86, 0, 4, 0, 87, 0, 4, 0, 88, 0, 4, 0, 89, 0, 4, 0, 14, 0, + 4, 0, 90, 0, 0, 0, 91, 0, 0, 0, 92, 0, 42, 0, 15, 0, 27, 0, 31, 0, 0, 0, 93, 0, 4, 0, 90, 0, 4, 0, 94, 0, + 12, 0, 95, 0, 40, 0, 96, 0, 40, 0, 97, 0, 4, 0, 98, 0, 4, 0, 99, 0, 12, 0,100, 0, 0, 0,101, 0, 4, 0,102, 0, + 4, 0,103, 0, 9, 0,104, 0, 8, 0,105, 0, 43, 0, 3, 0, 4, 0,106, 0, 4, 0,107, 0, 9, 0, 2, 0, 44, 0, 15, 0, + 27, 0, 31, 0, 39, 0, 74, 0, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,108, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0,111, 0, + 7, 0,112, 0, 7, 0,113, 0, 7, 0,114, 0, 7, 0,115, 0, 7, 0,116, 0, 36, 0, 79, 0, 32, 0,117, 0, 45, 0, 13, 0, + 4, 0,118, 0, 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, 2, 0,122, 0, 2, 0,123, 0, 2, 0, 19, 0, 2, 0,124, 0, + 2, 0,125, 0, 2, 0,126, 0, 2, 0,127, 0, 2, 0,128, 0, 46, 0,129, 0, 47, 0, 32, 0, 27, 0, 31, 0, 0, 0, 34, 0, + 12, 0,130, 0, 48, 0,131, 0, 49, 0,132, 0, 50, 0,133, 0, 50, 0,134, 0, 2, 0,135, 0, 2, 0,136, 0, 2, 0,124, 0, + 2, 0, 19, 0, 2, 0,137, 0, 2, 0, 17, 0, 4, 0,138, 0, 2, 0,139, 0, 2, 0,140, 0, 2, 0,141, 0, 2, 0,142, 0, + 2, 0,143, 0, 2, 0,144, 0, 4, 0,145, 0, 4, 0,146, 0, 43, 0,147, 0, 30, 0,148, 0, 7, 0,149, 0, 4, 0,150, 0, + 2, 0,151, 0, 2, 0,152, 0, 2, 0,153, 0, 2, 0,154, 0, 7, 0,155, 0, 7, 0,156, 0, 51, 0, 63, 0, 2, 0,157, 0, + 2, 0,158, 0, 2, 0,159, 0, 2, 0,160, 0, 32, 0,161, 0, 52, 0,162, 0, 0, 0,163, 0, 0, 0,164, 0, 0, 0,165, 0, + 0, 0,166, 0, 0, 0,167, 0, 7, 0,168, 0, 7, 0,169, 0, 7, 0,170, 0, 2, 0,171, 0, 2, 0,172, 0, 2, 0,173, 0, + 2, 0,174, 0, 2, 0,175, 0, 2, 0,176, 0, 0, 0,177, 0, 0, 0,178, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, + 7, 0,182, 0, 7, 0,183, 0, 7, 0, 56, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0,186, 0, 7, 0,187, 0, 7, 0,188, 0, + 7, 0,189, 0, 7, 0,190, 0, 7, 0,191, 0, 7, 0,192, 0, 7, 0,193, 0, 7, 0,194, 0, 7, 0,195, 0, 7, 0,196, 0, + 7, 0,197, 0, 7, 0,198, 0, 7, 0,199, 0, 7, 0,200, 0, 7, 0,201, 0, 7, 0,202, 0, 7, 0,203, 0, 7, 0,204, 0, + 7, 0,205, 0, 7, 0,206, 0, 7, 0,207, 0, 7, 0,208, 0, 7, 0,209, 0, 7, 0,210, 0, 7, 0,211, 0, 7, 0,212, 0, + 7, 0,213, 0, 7, 0,214, 0, 7, 0,215, 0, 7, 0,216, 0, 7, 0,217, 0, 7, 0,218, 0, 53, 0, 15, 0, 0, 0,219, 0, + 9, 0,220, 0, 0, 0,221, 0, 0, 0,222, 0, 4, 0,223, 0, 4, 0,224, 0, 9, 0,225, 0, 7, 0,226, 0, 7, 0,227, 0, + 7, 0,228, 0, 4, 0,229, 0, 9, 0,230, 0, 9, 0,231, 0, 4, 0,232, 0, 4, 0, 37, 0, 54, 0, 6, 0, 7, 0,179, 0, + 7, 0,180, 0, 7, 0,181, 0, 7, 0,233, 0, 7, 0, 66, 0, 4, 0, 63, 0, 55, 0, 5, 0, 2, 0, 19, 0, 2, 0, 36, 0, + 2, 0, 63, 0, 2, 0,234, 0, 54, 0,228, 0, 56, 0, 17, 0, 32, 0,161, 0, 47, 0,235, 0, 57, 0,236, 0, 7, 0,237, 0, + 7, 0,238, 0, 2, 0, 17, 0, 2, 0,239, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0,240, 0, 4, 0,241, 0, 2, 0,242, 0, + 2, 0,243, 0, 4, 0,124, 0, 4, 0,138, 0, 2, 0,244, 0, 2, 0,245, 0, 58, 0, 22, 0, 2, 0, 19, 0, 2, 0,246, 0, + 7, 0,247, 0, 7, 0,248, 0, 2, 0,137, 0, 2, 0,249, 0, 4, 0,250, 0, 4, 0,251, 0, 32, 0,161, 0, 4, 0,252, 0, + 2, 0,253, 0, 2, 0,254, 0, 9, 0,255, 0, 7, 0, 0, 1, 7, 0, 1, 1, 2, 0, 2, 1, 2, 0, 3, 1, 2, 0, 4, 1, + 2, 0, 5, 1, 7, 0, 6, 1, 7, 0, 7, 1, 55, 0, 8, 1, 59, 0, 13, 0, 4, 0, 9, 1, 4, 0, 10, 1, 2, 0, 11, 1, + 2, 0, 19, 0, 2, 0, 12, 1, 2, 0, 13, 1, 32, 0,161, 0, 7, 0, 14, 1, 4, 0, 15, 1, 0, 0, 16, 1, 7, 0, 17, 1, + 4, 0, 18, 1, 4, 0,124, 0, 52, 0, 63, 0, 27, 0, 31, 0, 39, 0, 74, 0, 7, 0, 19, 1, 7, 0, 20, 1, 7, 0, 21, 1, + 7, 0, 22, 1, 7, 0, 23, 1, 7, 0, 24, 1, 7, 0, 25, 1, 7, 0, 26, 1, 7, 0, 27, 1, 7, 0, 69, 0, 7, 0, 28, 1, + 7, 0, 29, 1, 7, 0, 30, 1, 7, 0, 31, 1, 7, 0, 32, 1, 7, 0, 33, 1, 7, 0, 34, 1, 7, 0, 35, 1, 7, 0, 36, 1, + 7, 0, 37, 1, 7, 0, 38, 1, 7, 0, 39, 1, 2, 0, 40, 1, 2, 0, 41, 1, 2, 0, 42, 1, 2, 0, 43, 1, 2, 0, 44, 1, + 2, 0, 45, 1, 2, 0, 46, 1, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,239, 0, 7, 0, 47, 1, 7, 0, 48, 1, 7, 0, 49, 1, + 7, 0, 50, 1, 4, 0, 51, 1, 4, 0, 52, 1, 2, 0, 53, 1, 2, 0, 54, 1, 2, 0, 12, 1, 2, 0,122, 0, 4, 0, 23, 0, + 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, 7, 0, 55, 1, 7, 0, 56, 1, 7, 0, 89, 0, 45, 0, 57, 1, 60, 0, 58, 1, + 36, 0, 79, 0, 47, 0,235, 0, 53, 0, 59, 1, 55, 0, 8, 1, 56, 0, 60, 1, 30, 0,148, 0, 58, 0, 61, 1, 59, 0, 62, 1, + 0, 0, 63, 1, 0, 0,178, 0, 61, 0, 8, 0, 7, 0, 64, 1, 7, 0, 65, 1, 7, 0,169, 0, 4, 0, 19, 0, 7, 0, 66, 1, + 7, 0, 67, 1, 7, 0, 68, 1, 32, 0, 44, 0, 62, 0, 72, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0, 17, 0, 2, 0, 19, 0, + 4, 0, 69, 1, 2, 0,172, 0, 2, 0, 70, 1, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,182, 0, 7, 0, 71, 1, + 7, 0, 72, 1, 7, 0, 73, 1, 7, 0, 74, 1, 7, 0, 75, 1, 7, 0, 76, 1, 7, 0, 77, 1, 7, 0, 78, 1, 7, 0, 79, 1, + 7, 0, 80, 1, 7, 0, 81, 1, 63, 0, 82, 1, 2, 0,246, 0, 2, 0, 69, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0, 83, 1, + 7, 0, 84, 1, 7, 0, 85, 1, 7, 0, 86, 1, 7, 0, 87, 1, 2, 0, 88, 1, 2, 0, 89, 1, 2, 0, 90, 1, 2, 0, 91, 1, + 0, 0, 92, 1, 0, 0, 93, 1, 2, 0, 94, 1, 2, 0, 95, 1, 2, 0, 96, 1, 2, 0, 97, 1, 2, 0, 98, 1, 7, 0, 99, 1, + 7, 0,100, 1, 7, 0,101, 1, 7, 0,102, 1, 2, 0,103, 1, 2, 0, 89, 0, 2, 0,104, 1, 2, 0,105, 1, 2, 0,106, 1, + 2, 0,107, 1, 7, 0,108, 1, 7, 0,109, 1, 7, 0,110, 1, 7, 0,111, 1, 7, 0,112, 1, 7, 0,113, 1, 7, 0,114, 1, + 7, 0,115, 1, 7, 0,116, 1, 7, 0,117, 1, 7, 0,118, 1, 7, 0,119, 1, 2, 0,120, 1, 0, 0,121, 1, 36, 0, 79, 0, + 51, 0,122, 1, 2, 0,123, 1, 0, 0,124, 1, 30, 0,148, 0, 64, 0, 2, 0, 27, 0, 31, 0, 36, 0, 79, 0, 65, 0, 18, 0, + 7, 0,125, 1, 7, 0,126, 1, 7, 0,127, 1, 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, 7, 0,131, 1, 7, 0,132, 1, + 7, 0,133, 1, 7, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 2, 0,137, 1, 2, 0,138, 1, 7, 0,139, 1, 7, 0,140, 1, + 7, 0,141, 1, 7, 0,142, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0,143, 1, 2, 0, 19, 0, 7, 0,179, 0, + 7, 0,180, 0, 7, 0,181, 0, 7, 0,144, 1, 7, 0,145, 1, 7, 0,146, 1, 7, 0,147, 1, 7, 0,148, 1, 7, 0,149, 1, + 7, 0,150, 1, 7, 0,151, 1, 7, 0,152, 1, 7, 0,153, 1, 7, 0,154, 1, 7, 0,155, 1, 7, 0,156, 1, 7, 0,157, 1, + 7, 0,158, 1, 7, 0,159, 1, 7, 0,160, 1, 7, 0,161, 1, 7, 0,162, 1, 7, 0,163, 1, 65, 0,164, 1, 7, 0,165, 1, + 7, 0,166, 1, 7, 0,167, 1, 7, 0,168, 1, 7, 0,169, 1, 7, 0,170, 1, 7, 0,171, 1, 2, 0,172, 1, 2, 0,173, 1, + 2, 0,174, 1, 0, 0,175, 1, 0, 0,176, 1, 7, 0,177, 1, 7, 0,178, 1, 2, 0,179, 1, 2, 0,180, 1, 7, 0,181, 1, + 7, 0,182, 1, 7, 0,183, 1, 7, 0,184, 1, 2, 0,185, 1, 2, 0,186, 1, 4, 0, 69, 1, 4, 0,187, 1, 2, 0,188, 1, + 2, 0,189, 1, 2, 0,190, 1, 2, 0,191, 1, 7, 0,192, 1, 7, 0,193, 1, 7, 0,194, 1, 7, 0,195, 1, 7, 0,196, 1, + 7, 0,197, 1, 7, 0,198, 1, 7, 0,199, 1, 7, 0,200, 1, 7, 0,201, 1, 0, 0,202, 1, 7, 0,203, 1, 7, 0,204, 1, + 7, 0,205, 1, 4, 0,206, 1, 0, 0,207, 1, 0, 0,104, 1, 0, 0,208, 1, 0, 0, 63, 1, 2, 0,209, 1, 2, 0,210, 1, + 2, 0,123, 1, 2, 0,211, 1, 2, 0,212, 1, 2, 0,213, 1, 7, 0,214, 1, 7, 0,215, 1, 7, 0,216, 1, 7, 0,217, 1, + 7, 0,218, 1, 2, 0,157, 0, 2, 0,158, 0, 55, 0,219, 1, 55, 0,220, 1, 0, 0,221, 1, 0, 0,222, 1, 0, 0,223, 1, + 0, 0,224, 1, 2, 0,225, 1, 2, 0,226, 1, 7, 0,227, 1, 7, 0,228, 1, 51, 0,122, 1, 60, 0, 58, 1, 36, 0, 79, 0, + 67, 0,229, 1, 30, 0,148, 0, 7, 0,230, 1, 7, 0,231, 1, 7, 0,232, 1, 7, 0,233, 1, 7, 0,234, 1, 2, 0,235, 1, + 2, 0, 69, 0, 7, 0,236, 1, 7, 0,237, 1, 7, 0,238, 1, 7, 0,239, 1, 7, 0,240, 1, 7, 0,241, 1, 7, 0,242, 1, + 7, 0,243, 1, 7, 0,244, 1, 2, 0,245, 1, 2, 0,246, 1, 4, 0,247, 1, 4, 0,248, 1, 12, 0,249, 1, 68, 0, 4, 0, + 27, 0, 31, 0, 0, 0,250, 1, 69, 0, 2, 0, 43, 0,147, 0, 70, 0, 26, 0, 70, 0, 0, 0, 70, 0, 1, 0, 71, 0,251, 1, + 4, 0,252, 1, 4, 0,253, 1, 4, 0,254, 1, 4, 0,255, 1, 4, 0, 0, 2, 4, 0, 1, 2, 2, 0, 17, 0, 2, 0, 19, 0, + 2, 0, 2, 2, 2, 0, 3, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 4, 2, 7, 0, 5, 2, 7, 0, 6, 2, + 7, 0, 7, 2, 7, 0, 8, 2, 7, 0, 9, 2, 7, 0, 10, 2, 7, 0, 23, 0, 7, 0, 11, 2, 7, 0, 12, 2, 72, 0, 20, 0, + 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 13, 2, 12, 0, 14, 2, 12, 0, 15, 2, 36, 0, 79, 0, 66, 0, 16, 2, + 0, 0, 19, 0, 0, 0, 17, 2, 2, 0, 18, 2, 2, 0,171, 0, 2, 0, 37, 0, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, + 7, 0, 19, 2, 7, 0, 20, 2, 7, 0, 21, 2, 70, 0, 22, 2, 35, 0, 11, 0, 7, 0, 23, 2, 7, 0, 24, 2, 7, 0, 25, 2, + 7, 0,248, 0, 2, 0, 54, 0, 0, 0, 26, 2, 0, 0, 27, 2, 0, 0, 28, 2, 0, 0, 29, 2, 0, 0, 30, 2, 0, 0, 31, 2, + 34, 0, 7, 0, 7, 0, 32, 2, 7, 0, 24, 2, 7, 0, 25, 2, 2, 0, 28, 2, 2, 0, 31, 2, 7, 0,248, 0, 7, 0, 37, 0, + 73, 0, 21, 0, 73, 0, 0, 0, 73, 0, 1, 0, 2, 0, 17, 0, 2, 0, 33, 2, 2, 0, 31, 2, 2, 0, 19, 0, 2, 0, 34, 2, + 2, 0, 35, 2, 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 38, 2, 2, 0, 39, 2, 2, 0, 40, 2, 2, 0, 41, 2, 7, 0, 42, 2, + 7, 0, 43, 2, 34, 0, 48, 0, 35, 0, 49, 0, 2, 0, 44, 2, 2, 0, 45, 2, 4, 0, 46, 2, 74, 0, 5, 0, 2, 0, 47, 2, + 2, 0, 33, 2, 0, 0, 19, 0, 0, 0, 37, 0, 2, 0, 69, 0, 75, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 8, 0, + 7, 0, 48, 2, 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 49, 2, 12, 0, 14, 2, 12, 0, 50, 2, + 32, 0, 51, 2, 32, 0, 52, 2, 32, 0, 53, 2, 36, 0, 79, 0, 77, 0, 54, 2, 38, 0, 55, 2, 66, 0, 16, 2, 12, 0, 56, 2, + 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 2, 0,171, 0, 2, 0, 89, 0, 2, 0, 57, 2, 2, 0, 58, 2, 2, 0, 59, 2, + 7, 0, 60, 2, 7, 0, 61, 2, 2, 0, 62, 2, 2, 0, 18, 2, 2, 0, 19, 0, 2, 0, 63, 2, 7, 0, 64, 2, 7, 0, 65, 2, + 7, 0, 66, 2, 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 67, 2, 2, 0, 68, 2, 4, 0, 69, 2, 9, 0, 70, 2, 2, 0, 23, 0, + 2, 0, 95, 0, 2, 0, 66, 0, 2, 0, 71, 2, 7, 0, 72, 2, 7, 0, 73, 2, 7, 0, 74, 2, 7, 0, 75, 2, 7, 0, 76, 2, + 7, 0, 77, 2, 7, 0, 78, 2, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0, 81, 2, 0, 0, 82, 2, 78, 0, 83, 2, 79, 0, 84, 2, + 0, 0, 85, 2, 68, 0, 86, 2, 68, 0, 87, 2, 68, 0, 88, 2, 68, 0, 89, 2, 4, 0, 90, 2, 7, 0, 91, 2, 4, 0, 92, 2, + 4, 0, 93, 2, 75, 0, 94, 2, 4, 0, 95, 2, 4, 0, 96, 2, 74, 0, 97, 2, 74, 0, 98, 2, 80, 0, 41, 0, 27, 0, 31, 0, + 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 99, 2, 36, 0, 79, 0, 38, 0, 55, 2, 66, 0, 16, 2, 81, 0,100, 2, 82, 0,101, 2, + 83, 0,102, 2, 84, 0,103, 2, 85, 0,104, 2, 86, 0,105, 2, 87, 0,106, 2, 88, 0,107, 2, 80, 0,108, 2, 89, 0,109, 2, + 90, 0,110, 2, 91, 0,111, 2, 91, 0,112, 2, 91, 0,113, 2, 4, 0, 53, 0, 4, 0,114, 2, 4, 0,115, 2, 4, 0,116, 2, + 4, 0,117, 2, 2, 0,171, 0, 2, 0,118, 2, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 7, 0,119, 2, 4, 0, 57, 2, + 2, 0,120, 2, 2, 0, 19, 0, 2, 0,121, 2, 2, 0,122, 2, 2, 0, 18, 2, 2, 0,123, 2, 92, 0,124, 2, 93, 0,125, 2, + 83, 0, 8, 0, 9, 0,126, 2, 7, 0,127, 2, 4, 0,128, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, 2, 0,130, 2, + 2, 0,131, 2, 81, 0, 7, 0, 4, 0,132, 2, 4, 0,133, 2, 4, 0,134, 2, 4, 0,135, 2, 2, 0, 33, 2, 0, 0,136, 2, + 0, 0, 19, 0, 85, 0, 5, 0, 4, 0,132, 2, 4, 0,133, 2, 0, 0,137, 2, 0, 0,138, 2, 2, 0, 19, 0, 94, 0, 2, 0, + 4, 0,139, 2, 7, 0, 25, 2, 86, 0, 3, 0, 94, 0,140, 2, 4, 0,141, 2, 4, 0, 19, 0, 84, 0, 6, 0, 7, 0,142, 2, + 2, 0,143, 2, 2, 0, 33, 2, 0, 0, 19, 0, 0, 0,138, 2, 0, 0, 59, 2, 87, 0, 4, 0, 0, 0,233, 0, 0, 0,179, 0, + 0, 0,180, 0, 0, 0,181, 0, 95, 0, 6, 0, 47, 0,126, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, 2, 0,130, 2, + 2, 0,131, 2, 96, 0, 1, 0, 7, 0,144, 2, 97, 0, 5, 0, 0, 0,233, 0, 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, + 4, 0, 37, 0, 88, 0, 1, 0, 7, 0,145, 2, 89, 0, 2, 0, 4, 0,146, 2, 4, 0, 17, 0, 82, 0, 7, 0, 7, 0,127, 2, + 47, 0,126, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, 2, 0,130, 2, 2, 0,131, 2, 98, 0, 1, 0, 7, 0,147, 2, + 99, 0, 1, 0, 4, 0,148, 2,100, 0, 1, 0, 0, 0,149, 2,101, 0, 1, 0, 7, 0,127, 2,102, 0, 3, 0, 4, 0,150, 2, + 0, 0, 92, 0, 7, 0,151, 2,103, 0, 4, 0, 7, 0,233, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0,104, 0, 1, 0, +103, 0,128, 2,105, 0, 5, 0, 4, 0,152, 2, 4, 0,153, 2, 0, 0, 19, 0, 0, 0, 33, 2, 0, 0, 59, 2,106, 0, 2, 0, + 4, 0,154, 2, 4, 0,153, 2,107, 0, 10, 0,107, 0, 0, 0,107, 0, 1, 0,105, 0,155, 2,104, 0,156, 2,106, 0,157, 2, + 4, 0, 53, 0, 4, 0,115, 2, 4, 0,114, 2, 4, 0, 37, 0, 84, 0,158, 2, 92, 0, 14, 0, 12, 0,159, 2, 84, 0,158, 2, + 0, 0,160, 2, 0, 0,161, 2, 0, 0,162, 2, 0, 0,163, 2, 0, 0,164, 2, 0, 0,165, 2, 0, 0,166, 2, 0, 0, 19, 0, + 91, 0,111, 2, 91, 0,113, 2, 2, 0,167, 2, 0, 0,168, 2, 93, 0, 8, 0, 4, 0,169, 2, 4, 0,170, 2, 81, 0,171, 2, + 85, 0,172, 2, 4, 0,115, 2, 4, 0,114, 2, 4, 0, 53, 0, 4, 0, 37, 0,108, 0, 9, 0,108, 0, 0, 0,108, 0, 1, 0, + 4, 0, 17, 0, 4, 0, 69, 1, 4, 0,173, 2, 4, 0, 37, 0, 0, 0, 20, 0, 46, 0,129, 0, 0, 0,174, 2,109, 0, 7, 0, +108, 0,175, 2, 2, 0,176, 2, 2, 0,159, 2, 2, 0,177, 2, 2, 0, 90, 0, 9, 0,178, 2, 9, 0,179, 2,110, 0, 3, 0, +108, 0,175, 2, 32, 0,161, 0, 0, 0, 20, 0,111, 0, 5, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0, 20, 0, 2, 0,180, 2, + 0, 0,181, 2,112, 0, 5, 0,108, 0,175, 2, 7, 0, 87, 0, 7, 0,182, 2, 4, 0,183, 2, 4, 0,184, 2,113, 0, 5, 0, +108, 0,175, 2, 32, 0,185, 2, 0, 0, 71, 0, 4, 0, 69, 1, 4, 0, 19, 0,114, 0, 13, 0,108, 0,175, 2, 32, 0,186, 2, + 32, 0,187, 2, 32, 0,188, 2, 32, 0,189, 2, 7, 0,190, 2, 7, 0,191, 2, 7, 0,182, 2, 7, 0,192, 2, 4, 0,193, 2, + 4, 0,194, 2, 4, 0, 90, 0, 4, 0,195, 2,115, 0, 5, 0,108, 0,175, 2, 2, 0,196, 2, 2, 0, 19, 0, 7, 0,197, 2, + 32, 0,198, 2,116, 0, 3, 0,108, 0,175, 2, 7, 0,199, 2, 4, 0, 90, 0,117, 0, 10, 0,108, 0,175, 2, 7, 0,200, 2, + 4, 0,201, 2, 4, 0, 37, 0, 2, 0, 90, 0, 2, 0,202, 2, 2, 0,203, 2, 2, 0,204, 2, 7, 0,205, 2, 0, 0,206, 2, +118, 0, 3, 0,108, 0,175, 2, 7, 0, 37, 0, 4, 0, 17, 0,119, 0, 6, 0,108, 0,175, 2,120, 0,207, 2,121, 0,208, 2, +122, 0,209, 2, 7, 0,210, 2, 4, 0, 17, 0,123, 0, 11, 0,108, 0,175, 2, 52, 0,211, 2, 7, 0,212, 2, 4, 0,213, 2, + 0, 0,206, 2, 7, 0,214, 2, 4, 0,215, 2, 32, 0,216, 2, 0, 0,217, 2, 4, 0,218, 2, 4, 0, 37, 0,124, 0, 12, 0, +108, 0,175, 2, 32, 0,219, 2, 47, 0,220, 2, 4, 0, 90, 0, 4, 0,221, 2, 7, 0,222, 2, 7, 0,223, 2, 7, 0,224, 2, + 7, 0,225, 2, 0, 0,217, 2, 4, 0,218, 2, 4, 0, 37, 0,125, 0, 3, 0,108, 0,175, 2, 7, 0,226, 2, 4, 0,227, 2, +126, 0, 5, 0,108, 0,175, 2, 7, 0,228, 2, 0, 0,206, 2, 2, 0, 19, 0, 2, 0,229, 2,127, 0, 8, 0,108, 0,175, 2, + 32, 0,161, 0, 7, 0,228, 2, 7, 0,248, 0, 7, 0,106, 0, 0, 0,206, 2, 2, 0, 19, 0, 2, 0, 17, 0,128, 0, 21, 0, +108, 0,175, 2, 32, 0,230, 2, 0, 0,206, 2, 52, 0,211, 2, 32, 0,216, 2, 2, 0, 19, 0, 2, 0, 37, 0, 7, 0,231, 2, + 7, 0,232, 2, 7, 0,233, 2, 7, 0, 64, 2, 7, 0,234, 2, 7, 0,235, 2, 7, 0,236, 2, 7, 0,237, 2, 4, 0,215, 2, + 4, 0,218, 2, 0, 0,217, 2, 7, 0,238, 2, 7, 0,239, 2, 7, 0, 89, 0,129, 0, 7, 0,108, 0,175, 2, 2, 0,240, 2, + 2, 0,241, 2, 4, 0, 69, 0, 32, 0,161, 0, 7, 0,242, 2, 0, 0,206, 2,130, 0, 10, 0,108, 0,175, 2, 32, 0,161, 0, + 0, 0,243, 2, 7, 0,244, 2, 7, 0,245, 2, 7, 0,237, 2, 4, 0,246, 2, 4, 0,247, 2, 7, 0,248, 2, 0, 0, 20, 0, +131, 0, 1, 0,108, 0,175, 2,132, 0, 7, 0,108, 0,175, 2, 46, 0,129, 0,133, 0,249, 2,134, 0,250, 2,135, 0,251, 2, +136, 0,252, 2, 12, 0,253, 2,137, 0, 13, 0,108, 0,175, 2, 84, 0,254, 2, 84, 0,255, 2, 84, 0, 0, 3, 84, 0, 1, 3, + 84, 0, 2, 3, 84, 0, 3, 3, 81, 0, 4, 3, 4, 0, 5, 3, 4, 0, 6, 3, 7, 0,210, 2, 7, 0, 37, 0,138, 0, 7, 3, +139, 0, 7, 0,108, 0,175, 2, 84, 0,254, 2, 84, 0, 8, 3,140, 0, 9, 3,141, 0, 7, 3, 4, 0, 10, 3, 4, 0, 5, 3, +142, 0, 4, 0,108, 0,175, 2, 32, 0,161, 0, 4, 0, 11, 3, 4, 0, 37, 0,143, 0, 2, 0, 4, 0, 12, 3, 7, 0, 25, 2, +144, 0, 2, 0, 4, 0,120, 0, 4, 0, 13, 3,145, 0, 24, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0,206, 2, 2, 0, 14, 3, + 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 37, 0,143, 0, 15, 3, 4, 0, 16, 3, 7, 0, 17, 3, 4, 0, 53, 0, 4, 0, 18, 3, +144, 0, 19, 3,143, 0, 20, 3, 4, 0, 21, 3, 4, 0, 22, 3, 4, 0, 23, 3, 4, 0, 13, 3, 7, 0, 24, 3, 7, 0, 25, 3, + 7, 0, 26, 3, 7, 0, 27, 3, 7, 0, 28, 3, 9, 0, 29, 3,146, 0, 8, 0,108, 0,175, 2,147, 0, 30, 3,140, 0, 9, 3, + 4, 0, 31, 3, 4, 0, 32, 3, 4, 0, 33, 3, 2, 0, 19, 0, 2, 0, 56, 0,148, 0, 8, 0,108, 0,175, 2, 32, 0, 44, 0, + 2, 0,252, 0, 2, 0, 19, 0, 2, 0,196, 2, 2, 0, 56, 0, 7, 0, 34, 3, 7, 0, 35, 3,149, 0, 5, 0,108, 0,175, 2, + 4, 0, 36, 3, 2, 0, 19, 0, 2, 0, 37, 3, 7, 0, 38, 3,150, 0, 8, 0,108, 0,175, 2, 0, 0, 39, 3, 0, 0, 40, 3, + 0, 0,165, 2, 0, 0, 41, 3, 0, 0, 42, 3, 0, 0, 90, 0, 0, 0, 59, 2,151, 0, 3, 0,108, 0,175, 2,152, 0, 43, 3, +136, 0,252, 2,153, 0, 10, 0,108, 0,175, 2, 32, 0, 44, 3, 32, 0, 45, 3, 0, 0, 46, 3, 7, 0, 47, 3, 2, 0, 48, 3, + 2, 0, 49, 3, 0, 0, 50, 3, 0, 0, 51, 3, 0, 0,181, 2,154, 0, 9, 0,108, 0,175, 2, 32, 0, 52, 3, 0, 0, 46, 3, + 7, 0, 53, 3, 7, 0, 54, 3, 0, 0, 69, 1, 0, 0,196, 2, 0, 0, 55, 3, 0, 0, 37, 0,155, 0, 1, 0,108, 0,175, 2, +156, 0, 8, 0,108, 0,175, 2, 0, 0,206, 2, 7, 0,120, 0, 7, 0, 56, 3, 7, 0, 57, 3, 7, 0, 58, 3, 7, 0, 59, 3, + 4, 0, 19, 0,157, 0, 9, 0,108, 0,175, 2, 32, 0, 60, 3, 4, 0, 61, 3, 4, 0, 62, 3, 4, 0, 63, 3, 7, 0, 64, 3, + 7, 0, 65, 3, 2, 0,196, 2, 2, 0, 19, 0,158, 0, 28, 0, 27, 0, 31, 0, 2, 0, 34, 2, 2, 0, 35, 2, 2, 0, 66, 3, + 2, 0, 19, 0, 2, 0, 67, 3, 2, 0, 68, 3, 2, 0, 69, 3, 2, 0, 69, 0, 0, 0, 70, 3, 0, 0, 71, 3, 0, 0, 72, 3, + 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 73, 3, 7, 0, 74, 3, 7, 0, 75, 3, 7, 0, 76, 3, 7, 0, 77, 3, 7, 0, 78, 3, + 34, 0, 79, 3, 36, 0, 79, 0, 38, 0, 55, 2, 86, 0,105, 2, 0, 0, 71, 0, 7, 0, 80, 3, 7, 0, 81, 3,158, 0, 82, 3, +159, 0, 3, 0,159, 0, 0, 0,159, 0, 1, 0, 0, 0, 20, 0, 71, 0, 3, 0, 7, 0, 83, 3, 4, 0, 19, 0, 4, 0, 37, 0, + 32, 0,126, 0, 27, 0, 31, 0, 39, 0, 74, 0,160, 0, 84, 3, 2, 0, 17, 0, 2, 0, 85, 3, 4, 0, 86, 3, 4, 0, 87, 3, + 4, 0, 88, 3, 0, 0, 89, 3, 32, 0, 38, 0, 32, 0, 90, 3, 32, 0, 91, 3, 32, 0, 92, 3, 32, 0, 93, 3, 36, 0, 79, 0, + 77, 0, 54, 2, 71, 0,251, 1,161, 0, 94, 3,161, 0, 95, 3,162, 0, 96, 3, 9, 0, 2, 0,163, 0, 97, 3,164, 0, 98, 3, +165, 0, 99, 3, 12, 0,100, 3, 12, 0, 99, 2, 12, 0, 14, 2, 12, 0,101, 3, 12, 0,102, 3, 4, 0, 69, 1, 4, 0,103, 3, + 66, 0, 16, 2, 0, 0,104, 3, 4, 0, 18, 2, 4, 0,105, 3, 7, 0, 64, 1, 7, 0,106, 3, 7, 0,107, 3, 7, 0,169, 0, + 7, 0,108, 3, 7, 0, 65, 1, 7, 0,109, 3, 7, 0, 4, 2, 7, 0,110, 3, 7, 0,111, 3, 7, 0,112, 3, 7, 0,113, 3, + 7, 0,114, 3, 7, 0,115, 3, 7, 0,244, 2, 7, 0,116, 3, 7, 0,237, 0, 4, 0,117, 3, 2, 0, 19, 0, 2, 0,118, 3, + 2, 0,119, 3, 2, 0,120, 3, 2, 0,121, 3, 2, 0,122, 3, 2, 0,123, 3, 2, 0,124, 3, 2, 0,125, 3, 2, 0,126, 3, + 2, 0,127, 3, 2, 0,128, 3, 4, 0,129, 3, 4, 0,130, 3, 4, 0,131, 3, 4, 0,132, 3, 7, 0,133, 3, 7, 0, 91, 2, + 7, 0,134, 3, 7, 0,135, 3, 7, 0,136, 3, 7, 0,137, 3, 7, 0,138, 3, 7, 0,212, 0, 7, 0,139, 3, 7, 0,140, 3, + 7, 0,141, 3, 7, 0,142, 3, 2, 0,143, 3, 0, 0,144, 3, 0, 0,145, 3, 0, 0,146, 3, 0, 0,147, 3, 7, 0,148, 3, + 7, 0,149, 3, 12, 0,150, 3, 12, 0,151, 3, 12, 0,152, 3, 12, 0,153, 3, 7, 0,154, 3, 2, 0,146, 2, 2, 0,155, 3, + 7, 0,128, 2, 4, 0,156, 3, 4, 0,157, 3,166, 0,158, 3, 2, 0,159, 3, 2, 0,244, 0, 7, 0,160, 3, 12, 0,161, 3, + 12, 0,162, 3, 12, 0,163, 3, 12, 0,164, 3,167, 0, 61, 1,168, 0,165, 3, 67, 0,166, 3, 2, 0,167, 3, 2, 0,168, 3, + 2, 0,169, 3, 2, 0,170, 3, 7, 0,120, 2, 2, 0,171, 3, 2, 0,172, 3,152, 0,173, 3,140, 0,174, 3,140, 0,175, 3, + 4, 0,176, 3, 4, 0,177, 3, 4, 0,178, 3, 4, 0, 69, 0, 12, 0,179, 3, 12, 0,180, 3, 12, 0,181, 3,169, 0, 14, 0, +169, 0, 0, 0,169, 0, 1, 0, 32, 0, 38, 0, 7, 0,244, 2, 7, 0, 66, 1, 7, 0,245, 2, 7, 0,237, 2, 0, 0, 20, 0, + 4, 0,246, 2, 4, 0,247, 2, 4, 0,182, 3, 2, 0, 17, 0, 2, 0,183, 3, 7, 0,248, 2,170, 0, 12, 0,170, 0, 0, 0, +170, 0, 1, 0, 32, 0, 44, 0, 4, 0,184, 3, 4, 0,146, 2, 4, 0,185, 3, 4, 0, 17, 0, 4, 0,186, 3, 7, 0, 66, 1, + 7, 0,187, 3, 7, 0,188, 3, 7, 0,144, 2,167, 0, 40, 0, 4, 0, 19, 0, 2, 0,189, 3, 2, 0,190, 3, 2, 0,237, 2, + 2, 0,191, 3, 2, 0,192, 3, 2, 0,193, 3, 2, 0,194, 3, 2, 0,195, 3, 7, 0,196, 3, 7, 0,197, 3, 7, 0,198, 3, + 7, 0,199, 3, 7, 0,200, 3, 7, 0,201, 3, 7, 0,202, 3, 7, 0,203, 3, 7, 0,204, 3, 7, 0,205, 3, 7, 0,206, 3, + 7, 0,207, 3, 7, 0,208, 3, 7, 0,209, 3, 7, 0,210, 3, 7, 0,211, 3, 7, 0,212, 3, 7, 0,213, 3, 7, 0,214, 3, + 7, 0,215, 3, 7, 0,216, 3, 7, 0,217, 3, 7, 0,218, 3, 7, 0,219, 3, 7, 0,220, 3, 7, 0,221, 3, 7, 0,222, 3, + 52, 0,162, 0,171, 0,223, 3, 7, 0,224, 3, 4, 0,184, 2,172, 0, 5, 0, 67, 0,229, 1, 7, 0,225, 3, 7, 0,226, 3, + 2, 0, 19, 0, 2, 0,227, 3,173, 0, 9, 0,173, 0, 0, 0,173, 0, 1, 0, 4, 0,228, 3, 4, 0,229, 3, 4, 0,230, 3, + 4, 0, 19, 0, 4, 0,231, 3, 9, 0,232, 3, 9, 0,233, 3,136, 0, 19, 0,136, 0, 0, 0,136, 0, 1, 0, 4, 0, 19, 0, + 4, 0,234, 3, 4, 0,235, 3, 4, 0,236, 3, 4, 0,237, 3, 4, 0,238, 3, 4, 0,239, 3, 4, 0,229, 3, 4, 0,146, 2, + 4, 0, 56, 0, 0, 0,240, 3, 0, 0,241, 3, 0, 0,242, 3, 0, 0,243, 3, 12, 0,244, 3,174, 0,245, 3, 9, 0,246, 3, +175, 0, 1, 0, 7, 0, 32, 2,166, 0, 30, 0, 4, 0, 19, 0, 7, 0,247, 3, 7, 0,248, 3, 7, 0,249, 3, 4, 0,250, 3, + 4, 0,251, 3, 4, 0,252, 3, 4, 0,253, 3, 7, 0,254, 3, 7, 0,255, 3, 7, 0, 0, 4, 7, 0, 1, 4, 7, 0, 2, 4, + 7, 0, 3, 4, 7, 0, 4, 4, 7, 0, 5, 4, 7, 0, 6, 4, 7, 0, 7, 4, 7, 0, 8, 4, 7, 0, 9, 4, 7, 0, 10, 4, + 7, 0, 11, 4, 7, 0, 12, 4, 7, 0, 13, 4, 7, 0, 14, 4, 7, 0, 15, 4, 4, 0, 16, 4, 4, 0, 17, 4, 7, 0, 18, 4, + 7, 0,139, 3,168, 0, 54, 0, 4, 0,229, 3, 4, 0, 19, 4,176, 0, 20, 4,177, 0, 21, 4, 0, 0, 37, 0, 0, 0, 22, 4, + 2, 0, 23, 4, 7, 0, 24, 4, 0, 0, 25, 4, 7, 0, 26, 4, 7, 0, 27, 4, 7, 0, 28, 4, 7, 0, 29, 4, 7, 0, 30, 4, + 7, 0, 31, 4, 7, 0, 32, 4, 7, 0, 33, 4, 7, 0, 34, 4, 2, 0, 35, 4, 0, 0, 36, 4, 2, 0, 37, 4, 7, 0, 38, 4, + 7, 0, 39, 4, 0, 0, 40, 4, 4, 0,121, 0, 4, 0, 41, 4, 4, 0, 42, 4, 2, 0, 43, 4, 2, 0, 44, 4,175, 0, 45, 4, + 4, 0, 46, 4, 4, 0, 81, 0, 7, 0, 47, 4, 7, 0, 48, 4, 7, 0, 49, 4, 7, 0, 50, 4, 2, 0, 51, 4, 2, 0, 52, 4, + 2, 0, 53, 4, 2, 0, 54, 4, 2, 0, 55, 4, 2, 0, 56, 4, 2, 0, 57, 4, 2, 0, 58, 4,178, 0, 59, 4, 7, 0, 60, 4, + 7, 0, 61, 4,136, 0, 62, 4, 12, 0,253, 2,172, 0, 63, 4, 7, 0, 64, 4, 7, 0, 65, 4, 7, 0, 66, 4, 0, 0, 67, 4, +152, 0, 51, 0,151, 0, 68, 4, 2, 0, 17, 0, 2, 0, 69, 4, 2, 0, 70, 4, 2, 0, 71, 4, 7, 0, 72, 4, 2, 0, 73, 4, + 2, 0, 74, 4, 7, 0, 75, 4, 2, 0, 76, 4, 2, 0, 77, 4, 7, 0, 78, 4, 7, 0, 79, 4, 7, 0, 80, 4, 7, 0, 81, 4, + 7, 0, 82, 4, 4, 0, 83, 4, 4, 0, 84, 4, 7, 0, 85, 4, 4, 0, 86, 4, 7, 0, 87, 4, 7, 0, 88, 4, 7, 0, 89, 4, + 80, 0, 90, 4, 80, 0, 91, 4, 80, 0, 92, 4, 0, 0, 93, 4, 7, 0, 94, 4, 7, 0, 95, 4, 36, 0, 79, 0, 2, 0, 96, 4, + 0, 0, 97, 4, 0, 0, 98, 4, 7, 0, 99, 4, 4, 0,100, 4, 7, 0,101, 4, 7, 0,102, 4, 4, 0,103, 4, 4, 0, 19, 0, + 7, 0,104, 4, 7, 0,105, 4, 7, 0,106, 4, 84, 0,107, 4, 7, 0,108, 4, 7, 0,109, 4, 7, 0,110, 4, 7, 0,111, 4, + 7, 0,112, 4, 7, 0,113, 4, 7, 0,114, 4, 4, 0,115, 4,179, 0, 78, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0,172, 0, + 2, 0, 70, 1, 2, 0,104, 1, 2, 0,116, 4, 7, 0,117, 4, 7, 0,118, 4, 7, 0,119, 4, 7, 0,120, 4, 7, 0,121, 4, + 7, 0,122, 4, 7, 0,123, 4, 7, 0,124, 4, 7, 0,150, 1, 7, 0,152, 1, 7, 0,151, 1, 7, 0,125, 4, 4, 0,126, 4, + 7, 0,127, 4, 7, 0,128, 4, 7, 0,129, 4, 7, 0,130, 4, 7, 0,131, 4, 7, 0,132, 4, 7, 0,133, 4, 2, 0,134, 4, + 2, 0, 69, 1, 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4, 2, 0,138, 4, 2, 0,139, 4, 2, 0,140, 4, 7, 0,141, 4, + 7, 0,142, 4, 7, 0,143, 4, 7, 0,144, 4, 7, 0,145, 4, 7, 0,146, 4, 7, 0,147, 4, 7, 0,148, 4, 7, 0,149, 4, + 7, 0,150, 4, 7, 0,151, 4, 7, 0,152, 4, 2, 0,153, 4, 2, 0,154, 4, 2, 0,155, 4, 2, 0,156, 4, 7, 0,157, 4, + 7, 0,158, 4, 7, 0,159, 4, 7, 0,160, 4, 2, 0,161, 4, 2, 0,162, 4, 2, 0,163, 4, 2, 0,164, 4, 7, 0,165, 4, + 7, 0,166, 4, 7, 0,167, 4, 7, 0,168, 4, 7, 0,169, 4, 7, 0,170, 4, 7, 0,171, 4, 2, 0,172, 4, 2, 0,173, 4, + 2, 0,174, 4, 2, 0,175, 4, 2, 0,176, 4, 2, 0, 19, 0, 7, 0,177, 4, 7, 0,178, 4, 36, 0, 79, 0, 51, 0,122, 1, + 2, 0,123, 1, 2, 0,179, 4, 30, 0,148, 0,180, 0, 8, 0,180, 0, 0, 0,180, 0, 1, 0, 4, 0,117, 3, 4, 0,180, 4, + 4, 0, 19, 0, 2, 0,181, 4, 2, 0,182, 4, 32, 0,161, 0,181, 0, 13, 0, 9, 0,183, 4, 9, 0,184, 4, 4, 0,185, 4, + 4, 0,186, 4, 4, 0,187, 4, 4, 0,188, 4, 4, 0,189, 4, 4, 0,190, 4, 4, 0,191, 4, 4, 0,192, 4, 4, 0,193, 4, + 4, 0, 37, 0, 0, 0,194, 4,182, 0, 5, 0, 9, 0,195, 4, 9, 0,196, 4, 4, 0,197, 4, 4, 0, 69, 0, 0, 0,198, 4, +183, 0, 17, 0, 4, 0,199, 4, 4, 0,200, 4, 4, 0,201, 4, 4, 0,202, 4, 4, 0,203, 4, 4, 0,204, 4, 4, 0,205, 4, + 4, 0,206, 4, 4, 0,207, 4, 4, 0,208, 4, 4, 0,209, 4, 4, 0,210, 4, 2, 0,211, 4, 2, 0,212, 4, 4, 0,213, 4, + 4, 0,214, 4, 4, 0, 89, 0,184, 0, 15, 0, 4, 0, 17, 0, 4, 0,201, 4, 4, 0,215, 4, 4, 0,216, 4, 4, 0,217, 4, + 4, 0,218, 4, 7, 0,219, 4, 4, 0,220, 4, 4, 0, 90, 0, 4, 0,221, 4, 4, 0,222, 4, 4, 0,223, 4, 4, 0,224, 4, + 4, 0,225, 4, 26, 0, 30, 0,185, 0, 7, 0, 4, 0,226, 4, 7, 0,227, 4, 7, 0,228, 4, 7, 0,229, 4, 4, 0,230, 4, + 2, 0, 19, 0, 2, 0, 37, 0,186, 0, 11, 0,186, 0, 0, 0,186, 0, 1, 0, 0, 0, 20, 0, 66, 0,231, 4, 67, 0,232, 4, + 4, 0,117, 3, 4, 0,233, 4, 4, 0,234, 4, 4, 0, 37, 0, 4, 0,235, 4, 4, 0,236, 4,187, 0,111, 0,181, 0,237, 4, +182, 0,238, 4,183, 0,239, 4,184, 0,240, 4, 4, 0, 10, 3, 4, 0,121, 0, 4, 0, 41, 4, 7, 0,241, 4, 4, 0,242, 4, + 4, 0,243, 4, 4, 0,244, 4, 4, 0,245, 4, 2, 0, 19, 0, 2, 0,246, 4, 7, 0,247, 4, 7, 0,248, 4, 7, 0,249, 4, + 7, 0,250, 4, 7, 0,251, 4, 2, 0,252, 4, 2, 0,253, 4, 2, 0,254, 4, 2, 0,255, 4, 2, 0,243, 0, 2, 0, 0, 5, + 2, 0, 1, 5, 2, 0, 2, 5, 2, 0, 3, 5, 2, 0, 4, 5, 2, 0, 91, 1, 2, 0,106, 0, 2, 0, 5, 5, 2, 0, 6, 5, + 2, 0, 7, 5, 2, 0, 8, 5, 2, 0, 9, 5, 2, 0, 10, 5, 2, 0, 11, 5, 2, 0, 12, 5, 2, 0, 13, 5, 2, 0, 92, 1, + 2, 0, 14, 5, 2, 0, 15, 5, 2, 0, 16, 5, 2, 0, 17, 5, 4, 0, 18, 5, 4, 0, 69, 1, 4, 0, 19, 5, 2, 0, 20, 5, + 2, 0, 21, 5, 2, 0, 22, 5, 2, 0,248, 1, 2, 0, 23, 5, 2, 0, 24, 5, 2, 0, 25, 5, 2, 0, 26, 5, 24, 0, 27, 5, + 24, 0, 28, 5, 23, 0, 29, 5, 12, 0, 30, 5, 2, 0, 31, 5, 2, 0, 32, 5, 7, 0, 33, 5, 7, 0, 34, 5, 7, 0, 35, 5, + 7, 0, 36, 5, 4, 0, 37, 5, 7, 0, 38, 5, 7, 0, 39, 5, 7, 0, 40, 5, 7, 0, 41, 5, 2, 0, 42, 5, 2, 0, 43, 5, + 2, 0, 44, 5, 2, 0, 45, 5, 2, 0, 46, 5, 2, 0, 47, 5, 7, 0, 48, 5, 7, 0, 49, 5, 7, 0, 50, 5, 0, 0, 51, 5, + 0, 0, 52, 5, 4, 0, 53, 5, 2, 0, 54, 5, 2, 0,226, 1, 0, 0, 55, 5, 7, 0, 56, 5, 7, 0, 57, 5, 0, 0, 58, 5, + 0, 0, 59, 5, 0, 0, 60, 5, 0, 0, 61, 5, 4, 0, 62, 5, 2, 0, 63, 5, 2, 0, 64, 5, 7, 0, 65, 5, 7, 0, 66, 5, + 2, 0, 67, 5, 2, 0, 68, 5, 7, 0, 69, 5, 2, 0, 70, 5, 2, 0, 71, 5, 4, 0, 72, 5, 2, 0, 73, 5, 2, 0, 74, 5, + 2, 0, 75, 5, 2, 0, 76, 5, 7, 0, 77, 5, 7, 0, 69, 0, 42, 0, 78, 5, 0, 0, 79, 5,188, 0, 9, 0,188, 0, 0, 0, +188, 0, 1, 0, 0, 0, 20, 0, 2, 0, 80, 5, 2, 0, 81, 5, 2, 0, 82, 5, 2, 0, 89, 0, 7, 0, 83, 5, 7, 0, 69, 0, +189, 0, 7, 0, 2, 0,201, 2, 2, 0, 69, 1, 2, 0, 65, 3, 2, 0, 84, 5, 7, 0, 85, 5, 7, 0, 69, 0, 42, 0, 86, 5, +190, 0, 5, 0, 7, 0, 87, 5, 0, 0, 17, 0, 0, 0, 89, 0, 0, 0, 69, 0, 0, 0,226, 1,191, 0, 28, 0, 7, 0,132, 4, + 7, 0,133, 4, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0, 88, 5, 2, 0,179, 4, 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4, + 2, 0,138, 4, 2, 0,139, 4, 2, 0,140, 4,190, 0, 89, 5, 2, 0,252, 4, 2, 0,253, 4, 2, 0,254, 4, 2, 0,255, 4, + 2, 0,243, 0, 2, 0, 0, 5, 2, 0, 90, 5, 2, 0, 1, 5,189, 0, 91, 5, 2, 0, 92, 5, 2, 0, 3, 5, 2, 0, 6, 5, + 2, 0, 7, 5, 7, 0, 93, 5, 7, 0, 89, 0,192, 0, 6, 0,192, 0, 0, 0,192, 0, 1, 0, 4, 0,228, 3, 0, 0,240, 3, + 4, 0, 19, 0, 32, 0, 94, 5,193, 0, 6, 0,194, 0, 95, 5, 4, 0, 96, 5, 4, 0, 97, 5, 9, 0, 98, 5, 0, 0, 99, 5, + 4, 0, 90, 0,195, 0, 8, 0,193, 0,100, 5, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0,101, 5, 2, 0,102, 5, 2, 0,103, 5, + 4, 0, 89, 0, 9, 0,104, 5,196, 0, 6, 0, 2, 0,106, 0, 2, 0,234, 3, 2, 0,105, 5, 2, 0,195, 2, 4, 0, 19, 0, + 7, 0,212, 2,197, 0, 14, 0, 2, 0, 19, 0, 2, 0,106, 5, 2, 0,107, 5, 2, 0,108, 5,196, 0,109, 5, 9, 0,104, 5, + 7, 0,110, 5, 7, 0, 56, 0, 4, 0,111, 5, 4, 0,112, 5, 4, 0,113, 5, 4, 0,114, 5, 46, 0,129, 0, 32, 0,161, 0, +198, 0, 4, 0,198, 0, 0, 0,198, 0, 1, 0, 0, 0,115, 5, 7, 0,116, 5,199, 0, 14, 0,193, 0,100, 5, 4, 0, 90, 0, + 4, 0,117, 5, 7, 0,118, 5, 7, 0,119, 5, 7, 0,120, 5, 4, 0,121, 5, 4, 0,122, 5, 7, 0,123, 5, 7, 0,124, 5, + 4, 0,125, 5, 7, 0,126, 5, 7, 0,127, 5, 4, 0, 37, 0,200, 0, 7, 0,193, 0,100, 5, 2, 0, 19, 0, 2, 0, 37, 0, + 4, 0, 36, 0, 4, 0,128, 5, 86, 0,129, 5, 9, 0,104, 5,201, 0, 74, 0,200, 0,130, 5,200, 0,131, 5,199, 0, 84, 3, + 7, 0,132, 5, 2, 0,133, 5, 2, 0,134, 5, 7, 0,135, 5, 7, 0,136, 5, 2, 0,234, 3, 2, 0,137, 5, 7, 0,138, 5, + 7, 0,139, 5, 7, 0,140, 5, 2, 0,141, 5, 2, 0,111, 5, 2, 0,142, 5, 2, 0,143, 5, 2, 0,144, 5, 2, 0,145, 5, + 7, 0,146, 5, 7, 0,147, 5, 7, 0,148, 5, 2, 0,149, 5, 2, 0,150, 5, 2, 0,151, 5, 2, 0,152, 5, 2, 0,153, 5, + 2, 0,154, 5, 2, 0,155, 5,195, 0,156, 5,197, 0,157, 5, 7, 0,158, 5, 7, 0,159, 5, 7, 0,160, 5, 2, 0,161, 5, + 2, 0,162, 5, 0, 0,163, 5, 0, 0,164, 5, 0, 0,165, 5, 0, 0,166, 5, 0, 0,167, 5, 0, 0,168, 5, 2, 0,169, 5, + 7, 0,170, 5, 7, 0,171, 5, 7, 0,172, 5, 7, 0,173, 5, 7, 0,174, 5, 7, 0,175, 5, 7, 0,176, 5, 7, 0,177, 5, + 7, 0,178, 5, 7, 0,179, 5, 2, 0,180, 5, 0, 0,181, 5, 0, 0,182, 5, 0, 0,183, 5, 0, 0,184, 5, 32, 0,185, 5, + 0, 0,186, 5, 0, 0,187, 5, 0, 0,188, 5, 0, 0,189, 5, 0, 0,190, 5, 0, 0,191, 5, 0, 0,192, 5, 0, 0,193, 5, + 2, 0,194, 5, 2, 0,195, 5, 2, 0,196, 5, 2, 0,197, 5, 2, 0,198, 5, 4, 0,199, 5, 4, 0,200, 5,202, 0, 8, 0, + 4, 0,201, 5, 4, 0,202, 5, 4, 0,203, 5, 4, 0,204, 5, 4, 0,205, 5, 4, 0,206, 5, 4, 0, 53, 0, 4, 0,115, 2, +203, 0, 3, 0, 7, 0,207, 5, 2, 0,208, 5, 2, 0, 19, 0,204, 0, 4, 0, 7, 0,209, 5, 4, 0, 19, 0, 4, 0,210, 5, + 4, 0, 56, 0, 46, 0, 42, 0, 27, 0, 31, 0, 39, 0, 74, 0, 32, 0, 94, 5,179, 0,211, 5, 46, 0,212, 5, 47, 0,235, 0, + 12, 0,213, 5,180, 0,214, 5, 32, 0,215, 5, 7, 0,216, 5, 7, 0,217, 5, 7, 0,218, 5, 7, 0,219, 5, 4, 0,117, 3, + 4, 0,220, 5, 4, 0, 89, 0, 2, 0, 19, 0, 2, 0, 63, 1, 60, 0, 58, 1,205, 0,221, 5,201, 0,222, 5,206, 0,223, 5, +187, 0,179, 0,185, 0,224, 5, 12, 0,100, 0, 12, 0,225, 5, 9, 0,226, 5, 9, 0,227, 5, 9, 0,228, 5,207, 0,229, 5, + 2, 0,230, 5, 2, 0,231, 5, 2, 0,244, 0, 2, 0,232, 5, 4, 0,233, 5, 4, 0,234, 5, 12, 0,235, 5,190, 0, 89, 5, +191, 0,236, 5,203, 0,237, 5,163, 0, 97, 3,204, 0,238, 5,208, 0, 11, 0,208, 0, 0, 0,208, 0, 1, 0, 47, 0,235, 0, + 45, 0, 57, 1, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0,106, 0, 7, 0,239, 5, 2, 0,240, 5, 2, 0, 19, 0, 7, 0, 69, 0, +209, 0, 39, 0, 7, 0,241, 5, 7, 0,242, 5, 7, 0,243, 5, 7, 0,244, 5, 7, 0,245, 5, 7, 0,246, 5, 7, 0,247, 5, + 7, 0,248, 5, 7, 0,249, 5, 7, 0, 76, 1, 7, 0,250, 5, 7, 0,251, 5, 7, 0,252, 5, 7, 0,253, 5, 7, 0,168, 0, + 2, 0,254, 5, 2, 0,255, 5, 2, 0, 0, 6, 2, 0, 37, 0, 2, 0, 1, 6, 2, 0, 2, 6, 2, 0, 3, 6, 2, 0,240, 5, + 7, 0, 4, 6, 7, 0, 5, 6, 71, 0, 6, 6,163, 0, 97, 3,209, 0, 7, 6,210, 0, 8, 6,211, 0, 9, 6,212, 0, 10, 6, +213, 0, 11, 6,214, 0, 12, 6, 7, 0, 13, 6, 2, 0, 14, 6, 2, 0, 15, 6, 7, 0, 16, 6, 7, 0, 17, 6, 7, 0, 18, 6, +215, 0, 55, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 7, 0,249, 5, + 7, 0, 76, 1, 7, 0, 89, 0, 4, 0, 23, 6, 2, 0, 3, 6, 2, 0,240, 5, 32, 0, 94, 5, 32, 0, 24, 6, 12, 0, 25, 6, +208, 0, 26, 6,215, 0, 7, 6, 0, 0, 27, 6, 4, 0,117, 3, 4, 0,220, 5, 2, 0, 28, 6, 2, 0, 69, 0, 2, 0, 29, 6, + 2, 0, 30, 6, 2, 0,226, 1, 2, 0, 19, 0, 2, 0, 17, 2, 2, 0, 31, 6, 7, 0,111, 0, 7, 0, 32, 6, 7, 0, 16, 6, + 7, 0, 18, 6, 7, 0, 33, 6, 7, 0, 34, 6, 7, 0,168, 0, 7, 0,216, 5, 2, 0, 35, 6, 2, 0,248, 1, 2, 0, 36, 6, + 2, 0, 37, 6, 2, 0, 38, 6, 2, 0, 39, 6, 2, 0, 40, 6, 2, 0, 41, 6, 2, 0, 42, 6, 2, 0, 0, 6, 4, 0, 43, 6, + 12, 0, 44, 6, 2, 0, 45, 6, 2, 0,129, 2, 2, 0, 46, 6, 0, 0, 47, 6, 0, 0, 48, 6, 9, 0, 49, 6,163, 0, 97, 3, +217, 0, 24, 0, 24, 0, 36, 0, 24, 0, 63, 0, 23, 0, 50, 6, 23, 0, 51, 6, 23, 0, 52, 6, 7, 0, 53, 6, 7, 0, 54, 6, + 7, 0, 55, 6, 7, 0, 56, 6, 2, 0, 57, 6, 2, 0, 58, 6, 2, 0, 59, 6, 2, 0, 60, 6, 2, 0, 61, 6, 2, 0, 19, 0, + 2, 0, 62, 6, 2, 0, 63, 6, 2, 0, 64, 6, 2, 0, 65, 6, 2, 0, 66, 6, 2, 0, 30, 6, 7, 0, 67, 6, 4, 0, 68, 6, + 4, 0, 69, 6,216, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, +218, 0, 8, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,219, 0, 70, 6, + 46, 0,129, 0,220, 0, 14, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, +217, 0, 71, 6,221, 0, 72, 6, 12, 0, 73, 6, 2, 0, 69, 1, 2, 0, 74, 6, 4, 0, 19, 0, 7, 0, 75, 6, 4, 0, 30, 6, +222, 0, 20, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,210, 0, 8, 6, +217, 0, 71, 6, 2, 0, 76, 6, 2, 0, 77, 6, 2, 0, 78, 6, 2, 0, 79, 6, 2, 0, 62, 6, 2, 0, 80, 6, 0, 0, 19, 0, + 0, 0,179, 4, 9, 0, 54, 2, 4, 0, 81, 6, 4, 0, 82, 6, 27, 0, 83, 6,223, 0, 18, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6, 7, 0, 79, 2, 7, 0, 80, 2, 2, 0, 76, 6, + 2, 0, 84, 6, 2, 0, 85, 6, 2, 0, 86, 6, 4, 0, 19, 0, 7, 0, 87, 6, 4, 0,240, 5, 4, 0, 37, 0,163, 0, 97, 3, +224, 0, 15, 0, 0, 0, 88, 6, 0, 0, 89, 6, 0, 0, 90, 6, 0, 0, 91, 6, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 92, 6, + 2, 0, 93, 6, 2, 0,169, 1, 2, 0, 94, 6, 4, 0, 95, 6, 4, 0, 96, 6, 2, 0, 97, 6, 2, 0, 37, 0, 0, 0, 98, 6, +225, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 4, 0, 99, 6,224, 0,100, 6,226, 0,101, 6, + 12, 0,102, 6, 12, 0,103, 6,227, 0,104, 6,214, 0,105, 6,228, 0,106, 6, 2, 0,107, 6, 2, 0,108, 6, 2, 0,109, 6, + 2, 0, 69, 0,229, 0, 17, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, +217, 0, 71, 6, 12, 0,110, 6,230, 0,111, 6, 0, 0,112, 6,231, 0,113, 6, 4, 0,114, 6, 4, 0,115, 6, 2, 0, 19, 0, + 2, 0,116, 6, 2, 0,117, 6, 2, 0, 37, 0,232, 0, 32, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, + 7, 0, 21, 6, 2, 0, 22, 6, 47, 0,220, 2, 45, 0, 57, 1, 63, 0,118, 6, 2, 0,128, 0, 2, 0,119, 6, 2, 0, 69, 0, + 2, 0,120, 6, 4, 0, 19, 0, 2, 0,121, 6, 2, 0,122, 6, 2, 0,123, 6, 2, 0,226, 1, 0, 0,124, 6, 0, 0,125, 6, + 0, 0,126, 6, 0, 0, 30, 6, 7, 0,127, 6, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0, 87, 6, 7, 0,248, 1, 7, 0,128, 6, + 7, 0,129, 6,163, 0, 97, 3,233, 0,130, 6,234, 0,131, 6,235, 0, 11, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, + 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 2, 0, 74, 6, 2, 0, 19, 0, 4, 0, 37, 0,221, 0, 72, 6,217, 0, 71, 6, +236, 0, 27, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 42, 0,132, 6, + 4, 0,133, 6, 4, 0,134, 6, 2, 0, 90, 0, 2, 0,128, 0, 2, 0,135, 6, 0, 0,136, 6, 0, 0,137, 6, 4, 0,138, 6, + 4, 0,139, 6, 4, 0,140, 6, 4, 0,141, 6, 2, 0,142, 6, 2, 0,143, 6, 7, 0,144, 6, 23, 0,145, 6, 23, 0,146, 6, + 4, 0,147, 6, 4, 0,148, 6, 0, 0,149, 6, 0, 0,150, 6,237, 0, 10, 0, 27, 0, 31, 0, 9, 0,151, 6, 9, 0,152, 6, + 9, 0,153, 6, 9, 0,154, 6, 9, 0,155, 6, 4, 0, 90, 0, 4, 0,156, 6, 0, 0,157, 6, 0, 0,158, 6,238, 0, 10, 0, +216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6,237, 0,159, 6, 2, 0, 90, 0, 2, 0,128, 0, + 4, 0, 89, 0, 9, 0,160, 6,239, 0, 9, 0,239, 0, 0, 0,239, 0, 1, 0, 4, 0, 17, 0, 4, 0, 19, 0, 7, 0,161, 6, + 4, 0, 23, 0, 4, 0,236, 3, 4, 0,237, 3, 4, 0,124, 0,240, 0, 11, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, + 4, 0, 20, 6, 7, 0, 21, 6,217, 0, 71, 6, 12, 0,162, 6, 4, 0,163, 6, 4, 0, 37, 0, 4, 0, 19, 0, 4, 0,164, 6, +241, 0, 25, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6, + 27, 0,165, 6, 27, 0, 80, 0, 2, 0, 19, 0, 2, 0,128, 0, 7, 0,166, 6, 9, 0,167, 6, 7, 0, 79, 2, 7, 0, 80, 2, + 7, 0, 87, 6, 7, 0, 18, 6, 7, 0,168, 6, 7, 0,169, 6, 60, 0, 58, 1, 60, 0,170, 6, 4, 0,171, 6, 2, 0,172, 6, + 2, 0, 37, 0,163, 0, 97, 3,242, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, + 2, 0, 22, 6, 2, 0, 19, 0, 2, 0,126, 3, 4, 0, 37, 0,163, 0, 97, 3,243, 0, 42, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6,226, 0,101, 6, 0, 0, 88, 6, 0, 0, 89, 6, + 0, 0, 90, 6, 2, 0, 17, 0, 2, 0,173, 6, 2, 0, 19, 0, 2, 0, 92, 6, 9, 0,167, 6, 4, 0, 95, 6, 4, 0,174, 6, + 4, 0,175, 6, 4, 0, 96, 6, 23, 0,176, 6, 23, 0,177, 6, 7, 0,178, 6, 7, 0,179, 6, 7, 0,180, 6, 7, 0,166, 6, + 2, 0,181, 6, 2, 0,234, 0, 2, 0,169, 1, 2, 0, 94, 6, 2, 0, 37, 0, 2, 0, 89, 0, 2, 0,182, 6, 2, 0,183, 6, + 9, 0,184, 6, 9, 0,185, 6, 9, 0,186, 6, 9, 0,187, 6, 9, 0,188, 6, 2, 0,189, 6, 0, 0,190, 6, 57, 0,191, 6, +244, 0, 7, 0,244, 0, 0, 0,244, 0, 1, 0, 4, 0,192, 6, 4, 0, 23, 0, 0, 0, 83, 0, 4, 0,193, 6, 4, 0, 17, 0, +245, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 4, 0, 17, 0, + 4, 0,194, 6, 4, 0, 19, 0, 4, 0,135, 6, 12, 0,195, 6, 12, 0,196, 6, 0, 0,197, 6, 0, 0,198, 6, 4, 0,199, 6, + 4, 0,200, 6,246, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 4, 0, 37, 0, 0, 0,201, 6, +247, 0, 7, 0,247, 0, 0, 0,247, 0, 1, 0, 0, 0,202, 6, 2, 0,203, 6, 2, 0,204, 6, 2, 0,205, 6, 2, 0, 37, 0, +248, 0, 12, 0, 2, 0,204, 6, 2, 0,206, 6, 2, 0,207, 6, 0, 0,181, 2, 2, 0,208, 6, 2, 0,209, 6, 2, 0,210, 6, + 2, 0,211, 6, 2, 0,212, 6, 2, 0, 62, 6, 7, 0,213, 6, 7, 0,214, 6,249, 0, 18, 0,249, 0, 0, 0,249, 0, 1, 0, + 0, 0,240, 3,248, 0,215, 6,248, 0,216, 6,248, 0,217, 6,248, 0,218, 6, 7, 0,219, 6, 2, 0,220, 6, 2, 0,221, 6, + 2, 0,222, 6, 2, 0,223, 6, 2, 0,224, 6, 2, 0,225, 6, 2, 0,226, 6, 2, 0,227, 6, 2, 0,228, 6, 2, 0,229, 6, +250, 0, 10, 0, 0, 0,230, 6, 0, 0,231, 6, 0, 0,232, 6, 0, 0,233, 6, 0, 0,234, 6, 0, 0,235, 6, 2, 0,236, 6, + 2, 0,237, 6, 2, 0,238, 6, 2, 0,239, 6,251, 0, 8, 0, 0, 0,240, 6, 0, 0,241, 6, 0, 0,242, 6, 0, 0,243, 6, + 0, 0,244, 6, 0, 0,245, 6, 7, 0,239, 5, 7, 0, 37, 0,252, 0, 18, 0,250, 0,246, 6,250, 0,247, 6,250, 0,248, 6, +250, 0,249, 6,250, 0,250, 6,250, 0,251, 6,250, 0,252, 6,250, 0,253, 6,250, 0,254, 6,250, 0,255, 6,250, 0, 0, 7, +250, 0, 1, 7,250, 0, 2, 7,250, 0, 3, 7,250, 0, 4, 7,250, 0, 5, 7,251, 0, 6, 7, 0, 0, 7, 7,253, 0, 92, 0, + 0, 0, 8, 7, 0, 0, 9, 7, 0, 0,234, 6, 0, 0, 10, 7, 0, 0, 11, 7, 0, 0, 12, 7, 0, 0, 13, 7, 0, 0, 14, 7, + 0, 0, 15, 7, 0, 0, 16, 7, 0, 0, 17, 7, 0, 0, 18, 7, 0, 0, 19, 7, 0, 0, 20, 7, 0, 0, 21, 7, 0, 0, 22, 7, + 0, 0, 23, 7, 0, 0, 24, 7, 0, 0, 25, 7, 0, 0, 26, 7, 0, 0, 27, 7, 0, 0, 28, 7, 0, 0, 29, 7, 0, 0, 30, 7, + 0, 0, 31, 7, 0, 0, 32, 7, 0, 0, 33, 7, 0, 0, 34, 7, 0, 0, 35, 7, 0, 0, 36, 7, 0, 0, 37, 7, 0, 0, 38, 7, + 0, 0, 39, 7, 0, 0, 40, 7, 0, 0, 41, 7, 0, 0, 42, 7, 0, 0, 43, 7, 0, 0, 44, 7, 0, 0, 45, 7, 0, 0, 46, 7, + 0, 0, 47, 7, 0, 0, 48, 7, 0, 0, 49, 7, 0, 0, 50, 7, 0, 0, 51, 7, 0, 0, 52, 7, 0, 0, 53, 7, 0, 0, 54, 7, + 0, 0, 55, 7, 0, 0, 56, 7, 0, 0, 57, 7, 0, 0, 58, 7, 0, 0, 59, 7, 0, 0, 60, 7, 0, 0, 61, 7, 0, 0, 62, 7, + 0, 0, 63, 7, 0, 0, 64, 7, 0, 0, 65, 7, 0, 0, 66, 7, 0, 0, 67, 7, 0, 0, 68, 7, 0, 0, 69, 7, 0, 0, 70, 7, + 0, 0, 71, 7, 0, 0, 72, 7, 0, 0, 73, 7, 0, 0, 74, 7, 0, 0, 75, 7, 0, 0, 76, 7, 0, 0, 77, 7, 0, 0, 78, 7, + 0, 0, 79, 7, 0, 0, 80, 7, 0, 0, 81, 7, 0, 0, 82, 7, 0, 0, 83, 7, 0, 0, 84, 7, 0, 0, 85, 7, 0, 0, 86, 7, + 0, 0, 87, 7, 0, 0, 88, 7, 0, 0, 89, 7, 0, 0, 90, 7, 0, 0, 91, 7, 0, 0, 92, 7, 0, 0, 93, 7, 0, 0, 94, 7, + 0, 0, 95, 7, 0, 0, 96, 7, 0, 0, 97, 7, 0, 0, 98, 7,254, 0, 5, 0, 0, 0, 99, 7, 0, 0, 32, 7, 0, 0, 34, 7, + 2, 0, 19, 0, 2, 0, 37, 0,255, 0, 25, 0,255, 0, 0, 0,255, 0, 1, 0, 0, 0, 20, 0,252, 0,100, 7,253, 0,101, 7, +253, 0,102, 7,253, 0,103, 7,253, 0,104, 7,253, 0,105, 7,253, 0,106, 7,253, 0,107, 7,253, 0,108, 7,253, 0,109, 7, +253, 0,110, 7,253, 0,111, 7,253, 0,112, 7,253, 0,113, 7,253, 0,114, 7,253, 0,115, 7,253, 0,116, 7,253, 0,117, 7, +253, 0,118, 7,254, 0,119, 7, 4, 0,120, 7, 4, 0, 37, 0, 0, 1, 3, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0,121, 7, + 1, 1, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,128, 2, 7, 0,122, 7, 7, 0, 32, 2, 2, 1, 88, 0, 4, 0, 19, 0, + 4, 0,123, 7, 4, 0,124, 7, 0, 0,125, 7, 0, 0,126, 7, 0, 0,127, 7, 0, 0,128, 7, 0, 0,129, 7, 0, 0,130, 7, + 0, 0,131, 7, 0, 0,132, 7, 0, 0,133, 7, 0, 0,134, 7, 4, 0,135, 7, 2, 0,136, 7, 2, 0,137, 7, 2, 0,138, 7, + 2, 0,139, 7, 4, 0,140, 7, 4, 0,141, 7, 4, 0,142, 7, 4, 0,143, 7, 2, 0,144, 7, 2, 0,145, 7, 4, 0,146, 7, + 4, 0,147, 7, 4, 0,148, 7, 4, 0,149, 7, 4, 0,150, 7, 4, 0,195, 6, 4, 0,151, 7, 2, 0,152, 7, 2, 0,153, 7, + 2, 0,154, 7, 2, 0,155, 7, 12, 0,156, 7, 12, 0,157, 7, 12, 0,158, 7, 12, 0,159, 7, 12, 0,160, 7, 0, 0,161, 7, + 2, 0,162, 7, 2, 0,163, 7, 2, 0,164, 7, 2, 0,165, 7, 2, 0,166, 7, 2, 0,167, 7, 2, 0,168, 7, 2, 0,169, 7, + 1, 1,170, 7, 2, 0,171, 7, 2, 0,172, 7, 2, 0,173, 7, 2, 0,174, 7, 2, 0,175, 7, 2, 0,176, 7, 2, 0,177, 7, + 2, 0,178, 7, 4, 0,179, 7, 4, 0,180, 7, 2, 0,181, 7, 2, 0,182, 7, 2, 0,183, 7, 2, 0,184, 7, 2, 0,185, 7, + 2, 0,186, 7, 2, 0,187, 7, 2, 0,188, 7, 2, 0,189, 7, 2, 0,190, 7, 2, 0,191, 7, 2, 0,192, 7, 2, 0,193, 7, + 2, 0,194, 7, 2, 0,195, 7, 2, 0,196, 7, 2, 0,197, 7, 2, 0,179, 4, 0, 0,198, 7, 0, 0,199, 7, 7, 0,200, 7, + 2, 0,161, 5, 2, 0,162, 5, 55, 0,201, 7, 4, 0,202, 7, 7, 0,203, 7, 7, 0,204, 7, 7, 0,205, 7,219, 0, 21, 0, + 27, 0, 31, 0, 12, 0,206, 7, 12, 0,207, 7, 12, 0,208, 7, 12, 0, 19, 6, 46, 0,129, 0, 46, 0,209, 7, 2, 0,210, 7, + 2, 0,211, 7, 2, 0,212, 7, 2, 0,213, 7, 2, 0,214, 7, 2, 0,215, 7, 2, 0,216, 7, 2, 0,217, 7, 2, 0,218, 7, + 2, 0,219, 7, 4, 0,220, 7,214, 0,221, 7, 9, 0,222, 7, 2, 0,223, 7, 3, 1, 5, 0, 3, 1, 0, 0, 3, 1, 1, 0, + 3, 1,224, 7, 13, 0,225, 7, 4, 0, 19, 0, 4, 1, 7, 0, 4, 1, 0, 0, 4, 1, 1, 0, 3, 1,226, 7, 3, 1,227, 7, + 2, 0, 28, 5, 2, 0, 19, 0, 4, 0, 37, 0, 5, 1, 25, 0, 5, 1, 0, 0, 5, 1, 1, 0, 6, 1,228, 7, 7, 1,106, 6, + 0, 0,229, 7, 0, 0,230, 7, 0, 0,231, 7, 2, 0,232, 7, 2, 0,233, 7, 2, 0,234, 7, 2, 0,235, 7, 2, 0,236, 7, + 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,237, 7, 2, 0,238, 7, 2, 0,239, 7, 4, 0,240, 7, 5, 1,241, 7, 9, 0,242, 7, + 4, 0,243, 7, 4, 0,244, 7, 4, 0,245, 7, 4, 0,246, 7, 0, 0,247, 7, 8, 1, 22, 0, 8, 1, 0, 0, 8, 1, 1, 0, + 3, 1,226, 7, 3, 1,227, 7, 3, 1,248, 7, 3, 1,249, 7,219, 0,250, 7, 23, 0, 51, 0, 0, 0, 20, 6, 0, 0,251, 7, + 2, 0, 63, 6, 2, 0, 64, 6, 2, 0,252, 7, 2, 0, 37, 0, 2, 0,213, 7, 2, 0,193, 6, 2, 0, 19, 0, 9, 1,228, 7, + 12, 0,253, 7, 12, 0, 19, 6, 12, 0,254, 7, 12, 0,255, 7, 10, 1, 24, 0, 10, 1, 0, 0, 10, 1, 1, 0,217, 0, 71, 6, + 23, 0, 0, 8, 23, 0, 1, 8, 2, 0, 63, 6, 2, 0, 64, 6, 2, 0, 2, 8, 2, 0, 3, 8, 2, 0, 4, 8, 2, 0, 19, 0, + 7, 0, 75, 2, 2, 0,234, 7, 2, 0,235, 7, 2, 0,212, 7, 2, 0, 5, 8, 2, 0,217, 7, 2, 0,179, 4, 11, 1,228, 7, + 12, 0, 6, 8, 12, 0, 7, 8, 12, 0,254, 7, 0, 0, 8, 8, 9, 0, 9, 8, 12, 1, 12, 0, 0, 0, 10, 8, 2, 0, 11, 8, + 2, 0, 12, 8, 2, 0, 13, 8, 2, 0, 14, 8, 2, 0, 15, 5, 2, 0, 10, 5,219, 0, 15, 8, 46, 0, 16, 8, 4, 0, 17, 8, + 4, 0, 18, 8, 0, 0, 19, 8, 13, 1, 1, 0, 0, 0, 20, 8, 14, 1, 8, 0, 57, 0, 21, 8, 57, 0, 22, 8, 14, 1, 23, 8, + 14, 1, 24, 8, 14, 1, 25, 8, 2, 0,124, 0, 2, 0, 19, 0, 4, 0, 26, 8, 15, 1, 4, 0, 4, 0,133, 6, 4, 0, 27, 8, + 4, 0,138, 6, 4, 0, 28, 8, 16, 1, 2, 0, 4, 0, 29, 8, 4, 0, 30, 8, 17, 1, 5, 0, 7, 0, 31, 8, 7, 0, 32, 8, + 7, 0, 33, 8, 4, 0, 19, 0, 4, 0, 37, 0, 18, 1, 6, 0, 0, 0, 34, 8, 0, 0, 90, 6, 49, 0,132, 0, 2, 0,106, 0, + 2, 0, 14, 5, 4, 0, 37, 0, 19, 1, 21, 0, 19, 1, 0, 0, 19, 1, 1, 0, 4, 0, 56, 0, 4, 0, 23, 0, 4, 0, 28, 0, + 4, 0, 35, 8, 4, 0, 36, 8, 4, 0, 37, 8, 13, 1, 38, 8, 0, 0, 34, 8, 4, 0, 39, 8, 4, 0, 40, 8, 18, 1, 91, 3, + 15, 1, 41, 8, 16, 1, 42, 8, 17, 1, 43, 8, 14, 1, 44, 8, 14, 1, 45, 8, 14, 1, 46, 8, 57, 0, 47, 8, 57, 0, 48, 8, + 20, 1, 12, 0, 0, 0,250, 1, 9, 0,220, 0, 0, 0,221, 0, 4, 0,224, 0, 4, 0,232, 0, 9, 0,225, 0, 7, 0,227, 0, + 7, 0,228, 0, 9, 0, 49, 8, 9, 0, 50, 8, 9, 0,229, 0, 9, 0,231, 0, 21, 1, 48, 0, 21, 1, 0, 0, 21, 1, 1, 0, + 9, 0, 51, 8, 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 19, 0, 4, 0, 17, 0, 4, 0, 23, 0, 4, 0, 87, 0, 4, 0, 52, 8, + 4, 0, 53, 8, 4, 0, 36, 8, 4, 0, 37, 8, 4, 0, 54, 8, 4, 0,243, 0, 4, 0, 55, 8, 4, 0, 56, 8, 7, 0, 57, 8, + 7, 0, 37, 0, 7, 0, 58, 8, 7, 0, 59, 8, 4, 0,121, 0, 4, 0, 60, 8, 19, 1, 61, 8, 36, 0, 79, 0, 46, 0,129, 0, + 32, 0, 62, 8, 49, 0,132, 0, 7, 0, 63, 8, 7, 0, 64, 8, 20, 1, 59, 1, 21, 1, 65, 8, 21, 1, 66, 8, 21, 1, 67, 8, + 12, 0, 68, 8, 22, 1, 69, 8, 9, 0, 70, 8, 7, 0,249, 3, 7, 0, 71, 8, 7, 0, 72, 8, 4, 0, 73, 8, 4, 0, 74, 8, + 7, 0, 75, 8, 9, 0, 76, 8, 4, 0, 77, 8, 4, 0, 78, 8, 4, 0, 79, 8, 7, 0, 80, 8, 23, 1, 4, 0, 23, 1, 0, 0, + 23, 1, 1, 0, 12, 0, 81, 8, 21, 1, 82, 8,205, 0, 11, 0, 12, 0, 83, 8, 12, 0, 68, 8, 12, 0, 84, 8, 21, 1, 85, 8, + 0, 0, 86, 8, 0, 0, 87, 8, 4, 0, 88, 8, 4, 0, 89, 8, 4, 0, 90, 8, 4, 0, 37, 0, 24, 0, 91, 8, 24, 1, 4, 0, + 7, 0, 92, 8, 7, 0, 65, 3, 2, 0, 93, 8, 2, 0, 94, 8, 25, 1, 6, 0, 7, 0, 95, 8, 7, 0, 96, 8, 7, 0, 97, 8, + 7, 0, 98, 8, 4, 0, 99, 8, 4, 0,100, 8, 26, 1, 13, 0, 7, 0,101, 8, 7, 0,102, 8, 7, 0,103, 8, 7, 0,104, 8, + 7, 0,105, 8, 7, 0,106, 8, 7, 0,107, 8, 7, 0,108, 8, 7, 0,109, 8, 7, 0,110, 8, 4, 0,226, 2, 4, 0,111, 8, + 4, 0,112, 8, 27, 1, 2, 0, 7, 0, 87, 5, 7, 0, 37, 0, 28, 1, 5, 0, 7, 0,113, 8, 7, 0,114, 8, 4, 0, 90, 0, + 4, 0,182, 2, 4, 0,115, 8, 29, 1, 6, 0, 29, 1, 0, 0, 29, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,116, 8, + 2, 0, 56, 0, 30, 1, 8, 0, 30, 1, 0, 0, 30, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,116, 8, 2, 0, 56, 0, + 7, 0, 23, 0, 7, 0,121, 0, 31, 1, 45, 0, 31, 1, 0, 0, 31, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,116, 8, + 2, 0,239, 0, 2, 0, 35, 4, 2, 0,117, 8, 7, 0,118, 8, 7, 0, 88, 0, 7, 0,239, 2, 4, 0,119, 8, 4, 0, 81, 0, + 4, 0,184, 2, 7, 0,120, 8, 7, 0,121, 8, 7, 0,122, 8, 7, 0,123, 8, 7, 0,124, 8, 7, 0,125, 8, 7, 0,236, 2, + 7, 0, 56, 1, 7, 0,126, 8, 7, 0,127, 8, 7, 0, 37, 0, 7, 0,128, 8, 7, 0,129, 8, 7, 0,130, 8, 2, 0,131, 8, + 2, 0,132, 8, 2, 0,133, 8, 2, 0,134, 8, 2, 0,135, 8, 2, 0,136, 8, 2, 0,137, 8, 2, 0,138, 8, 2, 0, 17, 2, + 2, 0,139, 8, 2, 0, 14, 2, 2, 0,140, 8, 0, 0,141, 8, 0, 0,142, 8, 7, 0,237, 0, 32, 1,143, 8, 67, 0,229, 1, + 33, 1, 16, 0, 33, 1, 0, 0, 33, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,116, 8, 2, 0,239, 0, 7, 0,231, 2, + 7, 0,232, 2, 7, 0,233, 2, 7, 0, 64, 2, 7, 0,234, 2, 7, 0,235, 2, 7, 0,144, 8, 7, 0,236, 2, 7, 0,238, 2, + 7, 0,239, 2,231, 0, 5, 0, 2, 0, 17, 0, 2, 0, 26, 8, 2, 0, 19, 0, 2, 0,145, 8, 27, 0,165, 6,230, 0, 3, 0, + 4, 0, 68, 0, 4, 0,146, 8,231, 0, 2, 0, 34, 1, 7, 0, 34, 1, 0, 0, 34, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 4, 0, 22, 0, 9, 0,147, 8, 35, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0,148, 8, 4, 0,149, 8, + 4, 0, 37, 0, 36, 1, 4, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 89, 0, 2, 0, 69, 0, 37, 1, 4, 0, 0, 0, 20, 0, + 66, 0,150, 8, 7, 0, 76, 1, 7, 0, 37, 0, 38, 1, 6, 0, 2, 0,151, 8, 2, 0,152, 8, 2, 0, 17, 0, 2, 0,153, 8, + 0, 0,154, 8, 0, 0,155, 8, 39, 1, 5, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0,156, 8, 0, 0,157, 8, + 40, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 41, 1, 4, 0, 2, 0,158, 8, 2, 0,159, 8, 2, 0, 19, 0, + 2, 0, 37, 0, 42, 1, 6, 0, 0, 0, 20, 0, 0, 0,160, 8, 2, 0,161, 8, 2, 0,236, 2, 2, 0, 69, 1, 2, 0, 69, 0, + 43, 1, 5, 0, 0, 0, 20, 0, 7, 0, 65, 3, 7, 0,129, 4, 2, 0, 19, 0, 2, 0,196, 2, 44, 1, 3, 0, 0, 0, 20, 0, + 4, 0,184, 2, 4, 0,158, 8, 45, 1, 7, 0, 0, 0, 20, 0, 7, 0,129, 4, 0, 0,162, 8, 0, 0,163, 8, 2, 0, 69, 1, + 2, 0, 89, 0, 4, 0,164, 8, 46, 1, 4, 0, 0, 0,165, 8, 0, 0,166, 8, 4, 0, 17, 0, 7, 0,200, 2, 47, 1, 3, 0, + 32, 0,167, 8, 0, 0,168, 8, 0, 0,169, 8, 48, 1, 18, 0, 48, 1, 0, 0, 48, 1, 1, 0, 2, 0, 17, 0, 2, 0,170, 8, + 2, 0, 19, 0, 2, 0,171, 8, 2, 0,172, 8, 2, 0,173, 8, 2, 0, 89, 0, 2, 0, 69, 0, 0, 0, 20, 0, 9, 0, 2, 0, + 49, 1,174, 8, 32, 0, 44, 0, 2, 0,105, 5, 2, 0, 71, 8, 2, 0,175, 8, 2, 0, 37, 0, 50, 1, 11, 0, 0, 0, 20, 0, + 0, 0, 17, 0, 0, 0,176, 8, 2, 0, 19, 0, 2, 0,196, 2, 2, 0,177, 8, 4, 0,178, 8, 4, 0,179, 8, 4, 0,180, 8, + 4, 0,181, 8, 4, 0,182, 8, 51, 1, 1, 0, 0, 0,183, 8, 52, 1, 4, 0, 42, 0,132, 6, 0, 0,121, 7, 4, 0, 69, 1, + 4, 0, 19, 0, 49, 1, 18, 0, 49, 1, 0, 0, 49, 1, 1, 0, 49, 1,184, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,185, 8, + 2, 0,173, 8, 2, 0,170, 8, 2, 0,186, 8, 2, 0, 69, 0, 2, 0,226, 1, 0, 0, 20, 0, 9, 0, 2, 0, 53, 1,174, 8, + 48, 1,187, 8, 2, 0, 15, 0, 2, 0,188, 8, 4, 0,189, 8, 54, 1, 3, 0, 4, 0,210, 2, 4, 0, 37, 0, 32, 0, 44, 0, + 55, 1, 12, 0,161, 0,190, 8, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,118, 8, 4, 0, 88, 0, 0, 0, 20, 0, 0, 0,191, 8, + 2, 0,192, 8, 2, 0,193, 8, 2, 0,194, 8, 2, 0,195, 8, 7, 0,196, 8, 56, 1, 13, 0, 2, 0, 19, 0, 2, 0,197, 8, + 4, 0, 89, 0, 4, 0, 69, 0, 2, 0,198, 8, 7, 0,249, 3, 7, 0,199, 8, 22, 1, 69, 8, 57, 1,200, 8, 2, 0, 17, 0, + 2, 0,248, 1, 2, 0,233, 5, 2, 0,201, 8, 58, 1, 11, 0, 4, 0,210, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 44, 0, + 80, 0,202, 8, 0, 0, 20, 0, 7, 0,203, 8, 7, 0,204, 8, 7, 0,134, 3, 2, 0,205, 8, 2, 0,206, 8, 59, 1, 5, 0, + 2, 0, 17, 0, 2, 0, 89, 0, 4, 0, 37, 0, 46, 0,129, 0, 32, 0, 94, 5, 60, 1, 5, 0, 4, 0, 37, 0, 4, 0, 17, 0, + 0, 0, 20, 0, 0, 0,156, 8, 32, 0, 44, 0, 61, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,170, 8, 2, 0,135, 3, + 7, 0,207, 8, 7, 0,208, 8, 7, 0,179, 4, 7, 0,147, 3, 7, 0,106, 3, 7, 0,109, 3, 7, 0,209, 8, 7, 0,210, 8, + 32, 0,211, 8, 62, 1, 10, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,118, 8, 4, 0, 88, 0, 0, 0, 20, 0, 0, 0,191, 8, + 2, 0, 89, 0, 2, 0, 69, 0, 2, 0,226, 1, 2, 0,248, 1, 63, 1, 8, 0, 32, 0, 44, 0, 7, 0,233, 2, 7, 0,212, 8, + 7, 0,213, 8, 7, 0, 37, 0, 2, 0, 89, 0, 2, 0,196, 2, 7, 0, 69, 0, 64, 1, 12, 0, 2, 0, 17, 0, 2, 0, 69, 1, + 2, 0, 19, 0, 2, 0,236, 2, 2, 0,210, 2, 2, 0,214, 8, 4, 0, 37, 0, 7, 0,215, 8, 7, 0,216, 8, 7, 0,217, 8, + 7, 0,218, 8, 0, 0,219, 8, 65, 1, 9, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,118, 8, 4, 0, 88, 0, 0, 0, 20, 0, + 2, 0,179, 4, 2, 0, 63, 0, 2, 0,220, 8, 2, 0,221, 8, 66, 1, 7, 0, 4, 0,184, 2, 4, 0,222, 8, 4, 0,223, 8, + 4, 0,224, 8, 7, 0,225, 8, 7, 0,226, 8, 0, 0,162, 8, 67, 1, 7, 0, 0, 0,227, 8, 32, 0,228, 8, 0, 0,168, 8, + 2, 0,229, 8, 2, 0, 89, 0, 4, 0, 69, 0, 0, 0,169, 8, 68, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,118, 8, + 4, 0, 88, 0, 0, 0,230, 8, 0, 0,231, 8, 69, 1, 1, 0, 4, 0, 19, 0, 70, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 4, 0,232, 8, 7, 0,233, 8, 42, 0,132, 6, 71, 1, 4, 0, 0, 0, 59, 2, 2, 0, 19, 0, 4, 0, 17, 0, + 32, 0, 44, 0, 72, 1, 2, 0, 4, 0, 17, 0, 4, 0, 52, 6, 73, 1, 6, 0, 0, 0,165, 8, 0, 0,166, 8, 4, 0, 17, 0, + 7, 0, 25, 2, 32, 0, 44, 3, 32, 0,234, 8, 53, 1, 10, 0, 53, 1, 0, 0, 53, 1, 1, 0, 53, 1,184, 8, 2, 0, 17, 0, + 2, 0, 19, 0, 2, 0,170, 8, 2, 0,235, 8, 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 44, 0, 74, 1, 10, 0, 7, 0,134, 3, + 7, 0,236, 8, 7, 0,237, 8, 7, 0,238, 8, 7, 0,239, 8, 4, 0, 19, 0, 7, 0,214, 8, 7, 0,240, 8, 7, 0,241, 8, + 7, 0, 37, 0, 57, 1, 8, 0, 7, 0,242, 8, 7, 0,243, 8, 7, 0,244, 8, 7, 0,245, 8, 7, 0,246, 8, 7, 0,247, 8, + 7, 0,248, 8, 7, 0,249, 8, 22, 1, 16, 0, 27, 0, 31, 0, 0, 0, 34, 0, 43, 0,147, 0, 9, 0,220, 0, 43, 0,250, 8, + 36, 0, 79, 0, 7, 0,249, 3, 7, 0,251, 8, 7, 0,199, 8, 7, 0,242, 8, 7, 0,243, 8, 7, 0,252, 8, 4, 0, 90, 0, + 4, 0, 37, 0, 9, 0,253, 8, 9, 0,254, 8, 75, 1, 15, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, + 7, 0, 21, 6, 8, 1,255, 8,217, 0, 71, 6, 22, 1, 69, 8, 2, 0, 69, 1, 2, 0,197, 8, 2, 0, 79, 2, 2, 0, 80, 2, + 2, 0, 19, 0, 2, 0,122, 6, 4, 0, 69, 0, 76, 1, 6, 0, 76, 1, 0, 0, 76, 1, 1, 0, 32, 0, 44, 0, 9, 0, 0, 9, + 4, 0,244, 0, 4, 0, 37, 0, 67, 0, 4, 0, 27, 0, 31, 0, 12, 0, 1, 9, 4, 0,126, 0, 7, 0, 2, 9, 77, 1, 27, 0, + 77, 1, 0, 0, 77, 1, 1, 0, 26, 0, 3, 9, 77, 1, 38, 0, 12, 0, 4, 9, 0, 0, 20, 0, 7, 0, 5, 9, 7, 0, 6, 9, + 7, 0, 7, 9, 7, 0, 8, 9, 4, 0, 19, 0, 7, 0, 9, 9, 7, 0, 10, 9, 7, 0, 11, 9, 7, 0, 76, 1, 7, 0, 25, 2, + 7, 0, 12, 9, 7, 0,182, 2, 7, 0, 13, 9, 7, 0, 14, 9, 7, 0, 15, 9, 7, 0, 16, 9, 7, 0, 17, 9, 7, 0,169, 0, + 4, 0,126, 0, 2, 0,142, 5, 2, 0,179, 4, 78, 1, 25, 0, 27, 0, 31, 0, 39, 0, 74, 0, 12, 0, 18, 9, 12, 0, 19, 9, + 12, 0, 20, 9, 77, 1, 21, 9, 9, 0, 22, 9, 9, 0, 23, 9, 4, 0, 19, 0, 4, 0, 28, 6, 2, 0,240, 2, 2, 0, 81, 6, + 4, 0, 37, 0, 4, 0,126, 0, 4, 0, 24, 9, 2, 0, 25, 9, 2, 0, 26, 9, 2, 0, 27, 9, 2, 0, 28, 9, 4, 0, 29, 9, + 4, 0, 30, 9, 4, 0, 31, 9, 4, 0, 32, 9, 4, 0, 33, 9, 4, 0, 34, 9, 79, 1, 2, 0, 7, 0,142, 2, 4, 0, 19, 0, +165, 0, 5, 0, 79, 1, 35, 9, 4, 0,182, 2, 4, 0, 36, 9, 4, 0, 37, 9, 4, 0, 19, 0,164, 0, 16, 0, 4, 0, 38, 9, + 4, 0, 39, 9, 4, 0, 40, 9, 4, 0, 41, 9, 2, 0, 42, 9, 2, 0, 43, 9, 2, 0, 44, 9, 2, 0,244, 0, 2, 0, 45, 9, + 2, 0, 46, 9, 2, 0, 47, 9, 2, 0, 48, 9, 4, 0, 49, 9, 4, 0, 50, 9, 4, 0, 51, 9, 4, 0, 52, 9, 80, 1, 44, 0, + 80, 1, 0, 0, 80, 1, 1, 0, 26, 0, 3, 9, 12, 0,161, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0, 53, 9, 2, 0, 54, 9, + 2, 0, 55, 9, 2, 0,120, 3, 2, 0, 56, 9, 4, 0, 62, 2, 4, 0, 31, 9, 4, 0, 32, 9, 77, 1, 57, 9, 80, 1, 38, 0, + 80, 1, 58, 9, 12, 0, 59, 9, 9, 0, 60, 9, 9, 0, 61, 9, 9, 0, 62, 9, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 63, 9, + 7, 0, 4, 2, 7, 0,111, 3, 7, 0,113, 3, 2, 0,143, 3, 2, 0, 37, 0, 7, 0, 64, 9, 7, 0, 65, 9, 7, 0,116, 3, + 7, 0, 66, 9, 7, 0, 67, 9, 7, 0, 68, 9, 7, 0, 69, 9, 7, 0, 70, 9, 7, 0, 71, 9, 7, 0, 72, 9, 7, 0, 73, 9, + 7, 0, 54, 2,165, 0, 99, 3, 32, 0, 74, 9, 80, 1, 75, 9,162, 0, 14, 0, 12, 0, 76, 9, 81, 1, 77, 9, 2, 0, 19, 0, + 2, 0, 78, 9, 7, 0, 91, 2, 7, 0, 79, 9, 7, 0, 80, 9, 12, 0, 81, 9, 4, 0, 82, 9, 4, 0, 83, 9, 9, 0, 84, 9, + 9, 0, 85, 9,164, 0, 98, 3, 0, 0, 86, 9, 82, 1, 1, 0, 4, 0, 83, 9, 83, 1, 12, 0, 4, 0, 83, 9, 7, 0,182, 8, + 2, 0, 87, 9, 2, 0, 88, 9, 7, 0, 89, 9, 7, 0, 90, 9, 2, 0, 91, 9, 2, 0, 19, 0, 7, 0, 92, 9, 7, 0, 93, 9, + 7, 0, 94, 9, 7, 0, 95, 9, 84, 1, 7, 0, 84, 1, 0, 0, 84, 1, 1, 0, 12, 0, 96, 9, 4, 0, 19, 0, 4, 0, 97, 9, + 0, 0,240, 3,254, 0, 98, 9,161, 0, 7, 0, 27, 0, 31, 0, 12, 0, 99, 9, 12, 0, 76, 9, 12, 0,100, 9, 12, 0,100, 0, + 4, 0, 19, 0, 4, 0,101, 9,221, 0, 5, 0, 27, 0,102, 9, 12, 0, 76, 9, 67, 0,103, 9, 4, 0,104, 9, 4, 0, 19, 0, + 85, 1, 13, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6, +161, 0, 94, 3,221, 0,105, 9, 0, 0, 69, 1, 0, 0, 74, 6, 2, 0, 19, 0, 7, 0,106, 9, 86, 1, 8, 0, 86, 1, 0, 0, + 86, 1, 1, 0, 84, 1,107, 9, 36, 0, 79, 0, 12, 0,100, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0,108, 9, 87, 1, 5, 0, + 87, 1, 0, 0, 87, 1, 1, 0, 36, 0, 79, 0, 2, 0, 19, 0, 0, 0,109, 9, 88, 1, 14, 0, 88, 1, 0, 0, 88, 1, 1, 0, + 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0,110, 9, 0, 0,111, 9, 0, 0,109, 9, 7, 0,112, 9, 7, 0,113, 9, + 4, 0, 37, 0, 36, 0, 79, 0, 7, 0,114, 9, 7, 0,115, 9, 89, 1, 9, 0, 89, 1, 0, 0, 89, 1, 1, 0, 32, 0,116, 9, + 0, 0,243, 2, 7, 0,117, 9, 2, 0,118, 9, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,119, 9, 90, 1, 7, 0, 42, 0,132, 6, + 26, 0, 3, 9, 4, 0, 19, 0, 4, 0,120, 9, 12, 0,121, 9, 32, 0,116, 9, 0, 0,243, 2, 91, 1, 15, 0, 32, 0,116, 9, + 2, 0,122, 9, 2, 0, 19, 0, 2, 0,123, 9, 2, 0,124, 9, 0, 0,243, 2, 32, 0,125, 9, 0, 0,126, 9, 7, 0,127, 9, + 7, 0, 25, 2, 7, 0,128, 9, 7, 0,129, 9, 2, 0, 17, 0, 2, 0, 69, 1, 7, 0, 76, 1, 92, 1, 6, 0, 32, 0,116, 9, + 7, 0, 35, 9, 2, 0,130, 9, 2, 0,131, 9, 2, 0, 19, 0, 2, 0,132, 9, 93, 1, 6, 0, 32, 0,116, 9, 4, 0,133, 9, + 4, 0,134, 9, 4, 0, 90, 0, 4, 0, 37, 0, 0, 0,243, 2, 94, 1, 4, 0, 32, 0,116, 9, 4, 0, 19, 0, 4, 0,133, 9, + 0, 0,243, 2, 95, 1, 4, 0, 32, 0,116, 9, 4, 0, 19, 0, 4, 0,133, 9, 0, 0,243, 2, 96, 1, 4, 0, 32, 0,116, 9, + 4, 0, 19, 0, 4, 0,133, 9, 0, 0,243, 2, 97, 1, 2, 0, 4, 0, 19, 0, 7, 0,249, 3, 98, 1, 2, 0, 32, 0,116, 9, + 0, 0,243, 2, 99, 1, 10, 0, 32, 0,116, 9, 4, 0,135, 9, 7, 0,120, 0, 4, 0, 19, 0, 2, 0,125, 6, 2, 0,136, 9, + 2, 0, 89, 0, 2, 0, 69, 0, 7, 0,137, 9, 0, 0,243, 2,100, 1, 10, 0, 32, 0,116, 9, 2, 0, 17, 0, 2, 0, 43, 4, + 4, 0, 87, 0, 4, 0, 88, 0, 7, 0,212, 8, 7, 0,213, 8, 4, 0, 37, 0,161, 0,190, 8, 0, 0,243, 2,101, 1, 4, 0, + 32, 0,116, 9, 4, 0,121, 3, 4, 0,138, 9, 0, 0,243, 2,102, 1, 4, 0, 32, 0,116, 9, 4, 0,121, 3, 4, 0, 37, 0, + 0, 0,243, 2,103, 1, 6, 0, 32, 0,116, 9, 7, 0,120, 0, 7, 0, 56, 3, 4, 0,139, 9, 2, 0,121, 3, 2, 0,122, 3, +104, 1, 6, 0, 32, 0,116, 9, 4, 0,140, 9, 4, 0,141, 9, 7, 0,142, 9, 7, 0,143, 9, 0, 0,243, 2,105, 1, 16, 0, + 32, 0,116, 9, 32, 0, 58, 9, 4, 0, 17, 0, 7, 0,144, 9, 7, 0,145, 9, 7, 0,146, 9, 7, 0,147, 9, 7, 0,148, 9, + 7, 0,149, 9, 7, 0,150, 9, 7, 0,151, 9, 7, 0,152, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 89, 0, 2, 0, 69, 0, +106, 1, 3, 0, 32, 0,116, 9, 4, 0, 19, 0, 4, 0, 17, 2,107, 1, 5, 0, 32, 0,116, 9, 4, 0, 19, 0, 4, 0, 37, 0, + 7, 0,153, 9, 0, 0,243, 2,108, 1, 10, 0, 32, 0,116, 9, 0, 0,243, 2, 2, 0,154, 9, 2, 0,155, 9, 0, 0,156, 9, + 0, 0,157, 9, 7, 0,158, 9, 7, 0,159, 9, 7, 0,160, 9, 7, 0,161, 9,109, 1, 5, 0, 32, 0,116, 9, 0, 0,243, 2, + 7, 0,190, 2, 2, 0,162, 9, 2, 0, 19, 0,110, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, + 7, 0,163, 9, 7, 0,164, 9, 2, 0, 19, 0, 2, 0, 17, 2,111, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, + 7, 0, 12, 0, 7, 0,163, 9, 7, 0,164, 9, 2, 0, 19, 0, 2, 0, 17, 2,112, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, + 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,163, 9, 7, 0,164, 9, 2, 0, 19, 0, 2, 0, 17, 2,113, 1, 7, 0, 32, 0,116, 9, + 0, 0,243, 2, 7, 0, 76, 1, 7, 0, 85, 1, 2, 0, 19, 0, 2, 0, 69, 1, 4, 0, 37, 0,114, 1, 5, 0, 32, 0, 44, 3, + 7, 0, 76, 1, 2, 0, 48, 3, 0, 0, 50, 3, 0, 0,165, 9,115, 1, 10, 0,115, 1, 0, 0,115, 1, 1, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 0, 0,166, 9, 7, 0, 19, 1, 7, 0, 20, 1, 2, 0, 96, 9, 2, 0,167, 9, 32, 0, 44, 0,116, 1, 22, 0, +116, 1, 0, 0,116, 1, 1, 0, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0,168, 9, 2, 0,169, 9, 36, 0, 79, 0,161, 0,190, 8, + 32, 0,161, 0, 7, 0, 87, 0, 7, 0, 88, 0, 7, 0,170, 9, 7, 0,171, 9, 7, 0,172, 9, 7, 0,173, 9, 7, 0,229, 2, + 7, 0,174, 9, 7, 0,192, 8, 7, 0,175, 9, 0, 0,176, 9, 0, 0,177, 9, 12, 0,102, 3,117, 1, 8, 0, 7, 0, 32, 2, + 7, 0,212, 8, 7, 0,213, 8, 9, 0, 2, 0, 2, 0,178, 9, 2, 0,179, 9, 2, 0,180, 9, 2, 0,181, 9,118, 1, 18, 0, +118, 1, 0, 0,118, 1, 1, 0,118, 1,182, 9, 0, 0, 20, 0,117, 1,183, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,184, 9, + 2, 0,185, 9, 2, 0,186, 9, 2, 0,187, 9, 4, 0, 89, 0, 7, 0,188, 9, 7, 0,189, 9, 4, 0,190, 9, 4, 0,191, 9, +118, 1,192, 9,119, 1,193, 9,120, 1, 33, 0,120, 1, 0, 0,120, 1, 1, 0,120, 1,194, 9, 0, 0, 20, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 2, 0, 35, 8, 2, 0, 71, 8, 2, 0,195, 9, 2, 0,128, 0, 2, 0,185, 9, 2, 0, 26, 8, 12, 0,185, 8, + 12, 0,196, 9, 27, 0,165, 6, 9, 0,197, 9, 7, 0,188, 9, 7, 0,189, 9, 7, 0, 64, 2, 7, 0,198, 9, 2, 0,199, 9, + 2, 0,200, 9, 7, 0,201, 9, 7, 0,202, 9, 2, 0,203, 9, 2, 0,204, 9, 9, 0,205, 9, 24, 0,206, 9, 24, 0,207, 9, + 24, 0,208, 9,121, 1,148, 0,122, 1,209, 9,123, 1,210, 9,119, 1, 8, 0,119, 1, 0, 0,119, 1, 1, 0,120, 1,211, 9, +120, 1,212, 9,118, 1,213, 9,118, 1,192, 9, 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 22, 0, 27, 0, 31, 0, 39, 0, 74, 0, +163, 0, 97, 3, 12, 0,214, 9, 12, 0,215, 9,117, 1,216, 9, 12, 0,217, 9, 4, 0, 17, 0, 4, 0,218, 9, 4, 0,219, 9, + 4, 0,220, 9, 4, 0, 19, 0, 4, 0, 37, 0, 12, 0,221, 9,123, 1,222, 9, 4, 0,223, 9, 9, 0,224, 9, 9, 0,225, 9, + 4, 0,226, 9, 9, 0,227, 9, 9, 0,228, 9, 9, 0,229, 9,124, 1, 6, 0, 4, 0,119, 0, 4, 0,121, 0, 4, 0, 26, 8, + 0, 0,230, 9, 0, 0,231, 9, 2, 0, 37, 0,125, 1, 16, 0, 2, 0,234, 7, 2, 0,235, 7, 2, 0,232, 9, 2, 0,237, 8, + 2, 0,233, 9, 2, 0, 67, 0, 7, 0,228, 2, 7, 0,234, 9, 7, 0,235, 9, 2, 0, 91, 1, 0, 0,236, 9, 0, 0,237, 9, + 2, 0,238, 9, 2, 0, 37, 0, 4, 0,239, 9, 4, 0,240, 9,126, 1, 9, 0, 7, 0,241, 9, 7, 0,242, 9, 7, 0,252, 8, + 7, 0, 65, 3, 7, 0,243, 9, 7, 0, 87, 6, 2, 0, 63, 3, 0, 0,244, 9, 0, 0, 37, 0,127, 1, 4, 0, 7, 0,245, 9, + 7, 0,246, 9, 2, 0, 63, 3, 2, 0, 37, 0,128, 1, 3, 0, 7, 0,247, 9, 7, 0, 57, 8, 7, 0, 15, 0,129, 1, 7, 0, + 0, 0,250, 1, 2, 0, 12, 5, 2, 0, 13, 5, 2, 0, 14, 5, 2, 0,201, 4, 4, 0,121, 0, 4, 0, 41, 4,130, 1, 9, 0, + 7, 0,248, 9, 7, 0,249, 9, 7, 0,250, 9, 7, 0, 75, 2, 7, 0,251, 9, 7, 0,252, 9, 7, 0,253, 9, 2, 0,254, 9, + 2, 0,255, 9,131, 1, 4, 0, 2, 0, 0, 10, 2, 0, 1, 10, 2, 0, 2, 10, 2, 0, 3, 10,132, 1, 2, 0, 7, 0, 5, 0, + 7, 0, 6, 0,133, 1, 2, 0, 0, 0,163, 0, 0, 0, 4, 10,134, 1, 1, 0, 0, 0, 20, 0,135, 1, 10, 0, 0, 0, 5, 10, + 0, 0, 6, 10, 0, 0, 80, 6, 0, 0, 7, 10, 2, 0,232, 9, 2, 0, 8, 10, 7, 0, 9, 10, 7, 0, 10, 10, 7, 0, 11, 10, + 7, 0,174, 9,136, 1, 2, 0, 9, 0, 12, 10, 9, 0, 13, 10,137, 1, 11, 0, 0, 0, 14, 5, 0, 0, 17, 0, 0, 0, 63, 3, + 0, 0, 65, 3, 0, 0, 14, 10, 0, 0,106, 0, 0, 0, 59, 2, 7, 0, 15, 10, 7, 0, 16, 10, 7, 0, 17, 10, 7, 0, 18, 10, +138, 1, 8, 0, 7, 0,151, 8, 7, 0,120, 0, 7, 0,237, 9, 7, 0,147, 2, 7, 0, 19, 10, 7, 0,233, 0, 7, 0, 20, 10, + 4, 0, 17, 0,139, 1, 4, 0, 2, 0, 21, 10, 2, 0, 22, 10, 2, 0, 23, 10, 2, 0, 37, 0,140, 1, 7, 0, 7, 0, 24, 10, + 7, 0,190, 2, 7, 0, 25, 10, 7, 0, 31, 8, 7, 0, 32, 8, 7, 0, 33, 8, 7, 0, 26, 10,141, 1, 6, 0, 2, 0, 27, 10, + 2, 0, 28, 10, 7, 0, 29, 10, 7, 0, 30, 10, 7, 0, 31, 10, 7, 0, 32, 10,142, 1, 1, 0, 0, 0, 20, 0,143, 1, 4, 0, + 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 19, 0, 2, 0, 33, 10,144, 1, 10, 0, 2, 0,229, 3, 2, 0, 19, 0, 7, 0,129, 4, + 7, 0, 34, 10, 7, 0, 35, 10, 7, 0, 36, 10, 7, 0, 37, 10,143, 1, 38, 10,143, 1, 39, 10,143, 1, 40, 10, 63, 0, 11, 0, + 4, 0, 19, 0, 4, 0, 63, 0, 4, 0, 41, 10, 4, 0, 42, 10, 24, 0, 43, 10, 24, 0, 44, 10,144, 1, 45, 10, 7, 0, 46, 10, + 7, 0, 47, 10, 7, 0, 48, 10, 7, 0, 49, 10,234, 0, 10, 0, 4, 0, 96, 9, 4, 0, 50, 10, 7, 0, 51, 10, 7, 0, 52, 10, + 7, 0, 53, 10, 7, 0, 54, 10, 7, 0, 10, 0, 7, 0, 12, 0, 4, 0, 69, 1, 4, 0,233, 2,233, 0, 18, 0, 4, 0,124, 0, + 4, 0, 55, 10, 4, 0, 56, 10, 7, 0, 57, 10, 4, 0, 58, 10, 7, 0, 59, 10, 7, 0, 60, 10, 4, 0, 61, 10, 7, 0, 62, 10, + 4, 0, 63, 10, 7, 0, 64, 10,234, 0, 65, 10, 7, 0, 66, 10, 7, 0, 67, 10, 7, 0, 68, 10, 7, 0, 69, 10, 4, 0, 70, 10, + 4, 0, 37, 0,145, 1, 4, 0, 47, 0,220, 2, 7, 0, 71, 10, 7, 0,158, 1, 7, 0, 37, 0,194, 0, 31, 0, 27, 0, 31, 0, +145, 1, 72, 10, 63, 0, 38, 10, 51, 0, 73, 10, 47, 0, 74, 10, 7, 0, 75, 10, 2, 0,239, 5, 2, 0, 37, 0, 4, 0,106, 0, + 4, 0, 19, 0, 7, 0, 76, 10, 4, 0, 72, 2, 4, 0, 77, 10, 7, 0, 78, 10, 7, 0, 79, 10, 7, 0, 80, 10, 7, 0,158, 1, + 4, 0, 81, 10, 7, 0, 82, 10, 0, 0, 83, 10, 0, 0, 84, 10, 0, 0, 85, 10, 0, 0,226, 1, 7, 0, 86, 10, 7, 0, 87, 10, + 7, 0, 88, 10, 7, 0, 89, 10, 4, 0, 90, 10, 7, 0, 91, 10, 7, 0, 92, 10, 7, 0, 93, 10,146, 1, 10, 0, 4, 0, 17, 0, + 4, 0,120, 0, 4, 0, 19, 0, 4, 0,183, 3, 4, 0, 94, 10, 4, 0, 95, 10, 4, 0, 96, 10, 0, 0, 92, 0, 0, 0, 20, 0, + 9, 0, 2, 0,147, 1, 1, 0, 0, 0, 19, 8, 91, 0, 7, 0,146, 1, 97, 10, 4, 0, 98, 10, 4, 0, 99, 10, 4, 0,100, 10, + 4, 0, 37, 0, 9, 0,101, 10,147, 1,102, 10,148, 1, 5, 0, 7, 0,142, 2, 7, 0,210, 2, 7, 0, 25, 2, 2, 0,118, 2, + 2, 0, 37, 0,149, 1, 5, 0, 7, 0,142, 2, 7, 0,103, 10, 7, 0,104, 10, 7, 0,105, 10, 7, 0,210, 2,150, 1, 5, 0, + 32, 0,106, 10,151, 1, 22, 0, 7, 0,209, 5, 7, 0,107, 10, 7, 0, 56, 0,152, 1, 7, 0, 4, 0,108, 10, 4, 0,109, 10, + 4, 0,110, 10, 7, 0,111, 10, 7, 0,112, 10, 7, 0,113, 10, 7, 0, 56, 0,153, 1, 8, 0,153, 1, 0, 0,153, 1, 1, 0, + 32, 0, 44, 0, 4, 0,252, 0, 2, 0, 19, 0, 2, 0, 69, 1, 7, 0,210, 2, 7, 0,159, 8,154, 1, 6, 0,154, 1, 0, 0, +154, 1, 1, 0, 32, 0, 44, 0, 2, 0,195, 2, 2, 0, 19, 0, 2, 0,114, 10,155, 1, 17, 0,149, 1,177, 3,149, 1,115, 10, +148, 1,116, 10,149, 1,143, 8,150, 1,117, 10, 4, 0, 81, 0, 7, 0,210, 2, 7, 0,239, 2, 7, 0,118, 10, 4, 0,108, 10, + 4, 0,119, 10, 7, 0,112, 10, 7, 0,113, 10, 7, 0,106, 0, 4, 0,120, 10, 2, 0, 19, 0, 2, 0,121, 10,156, 1, 9, 0, + 7, 0,122, 10, 7, 0,248, 0, 7, 0,123, 10, 7, 0,124, 10, 7, 0,125, 10, 7, 0,126, 10, 7, 0,127, 10, 7, 0,128, 10, + 7, 0,129, 10,157, 1,111, 0, 27, 0, 31, 0, 39, 0, 74, 0,158, 1,130, 10,156, 1,131, 10,172, 0, 63, 4, 4, 0, 19, 0, + 2, 0, 17, 0, 2, 0,154, 9, 2, 0,132, 10, 2, 0,133, 10, 2, 0,143, 3, 2, 0,134, 10, 2, 0,135, 10, 2, 0,136, 10, + 2, 0,137, 10, 2, 0,138, 10, 2, 0,139, 10, 2, 0,140, 10, 2, 0,141, 10, 2, 0,113, 5, 2, 0,142, 10, 2, 0,143, 10, + 2, 0,144, 10, 2, 0,145, 10, 2, 0,146, 10, 2, 0, 14, 2, 2, 0,136, 8, 2, 0,111, 8, 2, 0,147, 10, 2, 0,148, 10, + 2, 0,193, 3, 2, 0,194, 3, 2, 0,149, 10, 2, 0,150, 10, 2, 0,151, 10, 2, 0,152, 10, 7, 0,153, 10, 7, 0,154, 10, + 7, 0,155, 10, 2, 0, 62, 5, 2, 0,156, 10, 7, 0,157, 10, 7, 0,158, 10, 7, 0,159, 10, 7, 0,118, 8, 7, 0, 88, 0, + 7, 0,239, 2, 7, 0,124, 8, 7, 0,160, 10, 7, 0,161, 10, 7, 0,162, 10, 4, 0,119, 8, 4, 0,117, 8, 4, 0,163, 10, + 7, 0,120, 8, 7, 0,121, 8, 7, 0,122, 8, 7, 0,164, 10, 7, 0,165, 10, 7, 0,166, 10, 7, 0,167, 10, 7, 0,168, 10, + 7, 0, 56, 0, 7, 0,169, 10, 7, 0,170, 10, 7, 0,171, 10, 7, 0,172, 10, 7, 0,134, 3, 7, 0,106, 0, 7, 0,173, 10, + 7, 0,174, 10, 7, 0,175, 10, 7, 0,176, 10, 7, 0,177, 10, 7, 0,178, 10, 7, 0,179, 10, 4, 0,180, 10, 4, 0,181, 10, + 7, 0,182, 10, 7, 0,183, 10, 7, 0,184, 10, 7, 0,185, 10, 7, 0,186, 10, 7, 0,207, 0, 7, 0,187, 10, 7, 0,220, 3, + 7, 0,218, 3, 7, 0,219, 3, 7, 0,188, 10, 7, 0,189, 10, 7, 0,190, 10, 7, 0,191, 10, 7, 0,192, 10, 7, 0,193, 10, + 7, 0,194, 10, 7, 0,195, 10, 7, 0,196, 10, 7, 0,197, 10, 7, 0,198, 10, 7, 0,199, 10, 7, 0,200, 10, 4, 0,201, 10, + 4, 0,202, 10, 67, 0,166, 3, 12, 0,203, 10, 67, 0,204, 10, 32, 0,205, 10, 32, 0,206, 10, 36, 0, 79, 0,167, 0, 61, 1, +167, 0,207, 10,147, 0, 44, 0,147, 0, 0, 0,147, 0, 1, 0,157, 1,208, 10,155, 1,209, 10,152, 1, 58, 9,174, 0,245, 3, + 9, 0,246, 3,159, 1,210, 10,159, 1,211, 10, 12, 0,212, 10, 12, 0,213, 10,132, 0,214, 10,140, 0,215, 10,140, 0,216, 10, + 32, 0,217, 10, 32, 0,218, 10, 32, 0, 38, 0, 12, 0,121, 9, 0, 0, 20, 0, 7, 0,237, 0, 7, 0, 10, 3, 7, 0,219, 10, + 4, 0,184, 2, 4, 0, 56, 0, 4, 0, 19, 0, 4, 0,119, 8, 4, 0,220, 10, 4, 0,221, 10, 4, 0,222, 10, 2, 0,244, 0, + 2, 0,223, 10, 2, 0,224, 10, 2, 0,225, 10, 0, 0,226, 10, 2, 0,227, 10, 2, 0,228, 10, 2, 0,229, 10, 9, 0,230, 10, +136, 0, 62, 4, 12, 0,253, 2, 12, 0,231, 10,160, 1,232, 10,161, 1,233, 10, 7, 0,234, 10,134, 0, 37, 0,162, 1,253, 8, + 7, 0, 32, 4, 7, 0,235, 10, 7, 0,236, 10, 7, 0,209, 5, 7, 0,144, 3, 7, 0,134, 3, 7, 0,237, 10, 7, 0, 74, 2, + 7, 0,238, 10, 7, 0,239, 10, 7, 0,240, 10, 7, 0,241, 10, 7, 0,242, 10, 7, 0,243, 10, 7, 0, 33, 4, 7, 0,244, 10, + 7, 0,245, 10, 7, 0,246, 10, 7, 0, 34, 4, 7, 0, 30, 4, 7, 0, 31, 4, 7, 0,247, 10, 7, 0,248, 10, 4, 0,249, 10, + 4, 0, 90, 0, 4, 0,250, 10, 4, 0,251, 10, 2, 0,252, 10, 2, 0,253, 10, 2, 0,254, 10, 2, 0,255, 10, 2, 0, 0, 11, + 2, 0, 1, 11, 2, 0, 2, 11, 2, 0,179, 4,172, 0, 63, 4,135, 0, 9, 0,162, 1, 3, 11, 7, 0, 4, 11, 7, 0, 5, 11, + 7, 0,230, 1, 7, 0, 6, 11, 4, 0, 90, 0, 2, 0, 7, 11, 2, 0, 8, 11, 67, 0,229, 1,163, 1, 4, 0, 7, 0, 5, 0, + 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 9, 11,164, 1, 6, 0,164, 1, 0, 0,164, 1, 1, 0,163, 1, 35, 9, 4, 0,250, 0, + 2, 0, 10, 11, 2, 0, 19, 0,165, 1, 5, 0,165, 1, 0, 0,165, 1, 1, 0, 12, 0, 11, 11, 4, 0, 12, 11, 4, 0, 19, 0, +166, 1, 9, 0,166, 1, 0, 0,166, 1, 1, 0, 12, 0,119, 0,165, 1, 13, 11, 4, 0, 19, 0, 2, 0, 10, 11, 2, 0, 14, 11, + 7, 0, 91, 0, 0, 0, 15, 11,163, 0, 6, 0, 27, 0, 31, 0, 12, 0, 30, 5, 4, 0, 19, 0, 2, 0, 16, 11, 2, 0, 17, 11, + 9, 0, 18, 11,167, 1, 7, 0,167, 1, 0, 0,167, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, 0, 0, 19, 11, + 0, 0, 20, 11,168, 1, 6, 0, 12, 0, 21, 11, 4, 0, 22, 11, 4, 0, 23, 11, 4, 0, 19, 0, 4, 0, 37, 0,214, 0, 24, 11, +169, 1, 3, 0, 7, 0, 87, 5, 7, 0, 25, 11, 7, 0, 26, 11,170, 1, 17, 0, 27, 0, 31, 0,171, 1, 27, 11,171, 1, 28, 11, + 12, 0, 29, 11, 4, 0, 30, 11, 2, 0, 31, 11, 2, 0, 32, 11, 12, 0, 33, 11, 12, 0, 34, 11,168, 1, 35, 11, 12, 0, 36, 11, + 12, 0, 37, 11, 12, 0, 38, 11, 12, 0, 39, 11,172, 1, 40, 11, 12, 0, 41, 11,214, 0, 42, 11,171, 1, 31, 0,171, 1, 0, 0, +171, 1, 1, 0, 9, 0, 43, 11, 4, 0,211, 7, 2, 0, 44, 11, 2, 0, 37, 0,219, 0, 70, 6,219, 0, 45, 11, 0, 0, 46, 11, + 2, 0, 47, 11, 2, 0, 48, 11, 2, 0,234, 7, 2, 0,235, 7, 2, 0, 49, 11, 2, 0, 50, 11, 2, 0,183, 3, 2, 0,193, 6, + 2, 0, 51, 11, 2, 0, 52, 11, 2, 0,223, 9,173, 1, 53, 11,174, 1, 54, 11,175, 1, 55, 11, 4, 0, 56, 11, 4, 0, 57, 11, + 9, 0, 58, 11, 12, 0, 34, 11, 12, 0,254, 7, 12, 0, 59, 11, 12, 0, 60, 11, 12, 0, 61, 11,176, 1, 17, 0,176, 1, 0, 0, +176, 1, 1, 0, 0, 0, 62, 11, 26, 0, 30, 0, 2, 0, 63, 11, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0, 64, 11, 2, 0, 65, 11, + 2, 0, 66, 11, 2, 0, 67, 11, 2, 0, 68, 11, 2, 0, 19, 0, 2, 0, 69, 11, 2, 0, 31, 0, 2, 0, 37, 0,177, 1, 70, 11, +178, 1, 10, 0,178, 1, 0, 0,178, 1, 1, 0, 12, 0, 71, 11, 0, 0, 62, 11, 2, 0, 72, 11, 2, 0, 73, 11, 2, 0, 19, 0, + 2, 0, 74, 11, 4, 0, 75, 11, 9, 0, 76, 11,172, 1, 7, 0,172, 1, 0, 0,172, 1, 1, 0, 0, 0, 62, 11, 0, 0, 77, 11, + 12, 0,159, 7, 4, 0, 78, 11, 4, 0, 19, 0,227, 0, 14, 0,227, 0, 0, 0,227, 0, 1, 0, 0, 0, 62, 11, 26, 0, 30, 0, +179, 1,228, 7, 9, 0, 79, 11, 9, 0, 80, 11,177, 1, 70, 11,168, 1, 81, 11, 12, 0, 82, 11,227, 0, 83, 11, 7, 1,106, 6, + 2, 0, 19, 0, 2, 0,179, 4,180, 1, 8, 0,180, 1, 0, 0,180, 1, 1, 0, 9, 0, 2, 0, 9, 0, 84, 11, 0, 0,240, 3, + 2, 0, 17, 0, 2, 0, 19, 0, 7, 0, 85, 11,181, 1, 5, 0, 7, 0, 86, 11, 4, 0, 87, 11, 4, 0, 88, 11, 4, 0, 69, 1, + 4, 0, 19, 0,182, 1, 6, 0, 7, 0, 89, 11, 7, 0, 90, 11, 7, 0, 91, 11, 7, 0, 92, 11, 4, 0, 17, 0, 4, 0, 19, 0, +183, 1, 5, 0, 7, 0,212, 8, 7, 0,213, 8, 7, 0,210, 2, 2, 0, 28, 2, 2, 0, 29, 2,184, 1, 5, 0,183, 1, 2, 0, + 4, 0, 53, 0, 7, 0, 93, 11, 7, 0,212, 8, 7, 0,213, 8,185, 1, 4, 0, 2, 0, 94, 11, 2, 0, 95, 11, 2, 0, 96, 11, + 2, 0, 97, 11,186, 1, 2, 0, 42, 0,159, 6, 26, 0, 3, 9,187, 1, 3, 0, 24, 0, 98, 11, 4, 0, 19, 0, 4, 0, 37, 0, +188, 1, 6, 0, 7, 0,106, 0, 7, 0,212, 2, 7, 0, 99, 11, 7, 0, 37, 0, 2, 0,243, 0, 2, 0,100, 11,189, 1, 5, 0, + 7, 0,101, 11, 7, 0,120, 0, 7, 0, 36, 9, 7, 0, 37, 9, 4, 0, 19, 0,190, 1, 6, 0, 27, 0,165, 6, 0, 0,102, 11, + 0, 0,103, 11, 2, 0,104, 11, 2, 0, 19, 0, 4, 0,105, 11,191, 1, 7, 0,191, 1, 0, 0,191, 1, 1, 0, 0, 0,240, 3, +190, 1,106, 11, 2, 0,107, 11, 2, 0, 17, 0, 7, 0, 60, 0,192, 1, 7, 0, 12, 0,108, 11, 0, 0,109, 11, 9, 0,110, 11, + 7, 0, 60, 0, 7, 0, 85, 11, 4, 0, 17, 0, 4, 0, 19, 0,193, 1, 3, 0, 7, 0,111, 11, 4, 0, 19, 0, 4, 0, 37, 0, +194, 1, 15, 0,194, 1, 0, 0,194, 1, 1, 0, 84, 1,107, 9,192, 1, 61, 0, 12, 0,102, 3, 35, 0, 49, 0,193, 1,112, 11, + 4, 0, 53, 0, 7, 0, 60, 0, 2, 0, 19, 0, 2, 0, 12, 1, 4, 0,113, 11, 0, 0,102, 11, 4, 0,114, 11, 7, 0,115, 11, +195, 1, 2, 0, 0, 0,116, 11, 0, 0,117, 11,196, 1, 4, 0,196, 1, 0, 0,196, 1, 1, 0,161, 0, 44, 3, 12, 0,118, 11, +197, 1, 24, 0,197, 1, 0, 0,197, 1, 1, 0, 12, 0,119, 11,161, 0,190, 8,196, 1,120, 11, 12, 0,121, 11, 12, 0,102, 3, + 0, 0,240, 3, 7, 0, 85, 11, 7, 0,122, 11, 7, 0, 87, 0, 7, 0, 88, 0, 7, 0,170, 9, 7, 0,171, 9, 7, 0,229, 2, + 7, 0,174, 9, 7, 0,192, 8, 7, 0,175, 9, 2, 0,123, 11, 2, 0,124, 11, 2, 0, 89, 0, 2, 0, 17, 0, 4, 0, 19, 0, + 4, 0, 69, 0,198, 1, 6, 0,198, 1, 0, 0,198, 1, 1, 0, 12, 0,119, 11, 4, 0, 19, 0, 4, 0,146, 2, 0, 0,240, 3, +199, 1, 11, 0,199, 1, 0, 0,199, 1, 1, 0, 27, 0,165, 6, 0, 0,125, 11, 4, 0,105, 11, 2, 0,126, 11, 2, 0, 37, 0, + 0, 0,102, 11, 4, 0,113, 11, 2, 0, 19, 0, 2, 0,127, 11,200, 1, 8, 0,200, 1, 0, 0,200, 1, 1, 0, 12, 0,128, 11, + 0, 0,240, 3, 0, 0,129, 11, 2, 0, 19, 0, 2, 0,127, 11, 4, 0,130, 11,201, 1, 5, 0,201, 1, 0, 0,201, 1, 1, 0, + 0, 0,102, 11, 4, 0,113, 11, 7, 0,200, 2, 39, 0, 12, 0,161, 0, 94, 3,161, 0,131, 11,196, 1,120, 11, 12, 0,132, 11, +197, 1,133, 11, 12, 0,134, 11, 12, 0,135, 11, 4, 0, 19, 0, 4, 0,244, 0, 2, 0,136, 11, 2, 0,137, 11, 7, 0,138, 11, +202, 1, 2, 0, 27, 0, 31, 0, 39, 0, 74, 0,203, 1, 5, 0,203, 1, 0, 0,203, 1, 1, 0, 4, 0, 17, 0, 4, 0, 19, 0, + 0, 0, 20, 0,204, 1, 6, 0,203, 1,139, 11, 32, 0, 44, 0, 4, 0,140, 11, 7, 0,141, 11, 4, 0,142, 11, 4, 0, 96, 9, +205, 1, 3, 0,203, 1,139, 11, 4, 0,140, 11, 7, 0,143, 11,206, 1, 8, 0,203, 1,139, 11, 32, 0, 44, 0, 7, 0, 64, 1, + 7, 0,144, 11, 7, 0, 10, 3, 7, 0,252, 8, 4, 0,140, 11, 4, 0,145, 11,207, 1, 5, 0,203, 1,139, 11, 7, 0,146, 11, + 7, 0, 71, 8, 7, 0,235, 2, 7, 0, 56, 0,208, 1, 3, 0,203, 1,139, 11, 7, 0,252, 8, 7, 0,147, 11,151, 1, 4, 0, + 7, 0,148, 11, 7, 0,175, 10, 2, 0,149, 11, 2, 0, 69, 1,209, 1, 14, 0,209, 1, 0, 0,209, 1, 1, 0, 12, 0,150, 11, + 12, 0,151, 11, 12, 0,152, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0,153, 11, 7, 0,154, 11, 4, 0,142, 11, + 4, 0, 96, 9, 7, 0,249, 3, 7, 0,237, 2,158, 1, 23, 0, 4, 0,140, 11, 4, 0,155, 11, 7, 0,156, 11, 7, 0, 56, 0, + 7, 0,157, 11, 7, 0,233, 2, 7, 0,148, 11, 7, 0,158, 11, 7, 0,212, 2, 7, 0, 57, 10, 7, 0,129, 4, 7, 0,159, 11, + 7, 0,160, 11, 7, 0,161, 11, 7, 0,162, 11, 7, 0,163, 11, 7, 0,164, 11, 7, 0,165, 11, 7, 0,166, 11, 7, 0,167, 11, + 7, 0,168, 11, 7, 0,169, 11, 12, 0,170, 11,120, 0, 36, 0,119, 0,171, 11,210, 1,131, 10, 67, 0,172, 11, 67, 0,204, 10, + 67, 0,173, 11,211, 1,174, 11, 48, 0,162, 0, 48, 0,175, 11, 48, 0,176, 11, 7, 0,177, 11, 7, 0,178, 11, 7, 0,179, 11, + 7, 0,180, 11, 7, 0,181, 11, 7, 0,108, 9, 7, 0,182, 11, 7, 0,158, 1, 7, 0,183, 11, 4, 0,184, 11, 4, 0,185, 11, + 4, 0,186, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0,187, 11, 2, 0,188, 11, 2, 0,189, 11, 4, 0,190, 11, 7, 0,212, 2, + 4, 0,191, 11, 7, 0,192, 11, 4, 0,193, 11, 4, 0,194, 11, 4, 0,195, 11,136, 0,196, 11, 12, 0,197, 11,172, 0, 63, 4, +121, 0, 11, 0,119, 0,171, 11,147, 0, 30, 3, 7, 0,125, 1, 7, 0,108, 9, 7, 0,198, 11, 7, 0,199, 11, 2, 0,200, 11, + 2, 0,201, 11, 2, 0,202, 11, 2, 0, 17, 0, 4, 0, 37, 0,122, 0, 13, 0,119, 0,171, 11,138, 0, 7, 3,140, 0, 9, 3, + 7, 0, 35, 9, 7, 0,203, 11, 7, 0,204, 11, 7, 0, 66, 1, 7, 0,205, 11, 4, 0,130, 9, 4, 0, 5, 3, 2, 0, 17, 0, + 2, 0, 37, 0, 4, 0, 69, 0, 69, 78, 68, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; From 185036c3ed3d623c580834604deca4beab514e35 Mon Sep 17 00:00:00 2001 From: Joshua Leung <aligorith@gmail.com> Date: Mon, 19 Jul 2010 11:25:23 +0000 Subject: [PATCH 550/674] Bugfix #22906: Animation Player buttons broke on r30467 Reverting this commit. Seems that only the added parts were tested. I'll look at restoring a similar version of this in future. --- source/blender/editors/include/ED_screen.h | 4 +- .../blender/editors/include/ED_screen_types.h | 1 - .../blender/editors/render/render_internal.c | 2 +- source/blender/editors/screen/screen_edit.c | 8 +- source/blender/editors/screen/screen_ops.c | 97 ++++++++----------- source/blender/makesdna/DNA_screen_types.h | 2 +- 6 files changed, 51 insertions(+), 63 deletions(-) diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index f313eeaf914..3478447b058 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -98,7 +98,7 @@ void ED_screen_set_scene(struct bContext *C, struct Scene *scene); void ED_screen_delete_scene(struct bContext *C, struct Scene *scene); void ED_screen_set_subwinactive(struct wmWindow *win, struct wmEvent *event); void ED_screen_exit(struct bContext *C, struct wmWindow *window, struct bScreen *screen); -void ED_screen_animation_timer(struct bContext *C, int redraws, int refresh, int sync, int enable, double speed); +void ED_screen_animation_timer(struct bContext *C, int redraws, int refresh, int sync, int enable); void ED_screen_animation_timer_update(struct bScreen *screen, int redraws, int refresh); int ED_screen_full_newspace(struct bContext *C, ScrArea *sa, int type); void ED_screen_full_prevspace(struct bContext *C, ScrArea *sa); @@ -110,7 +110,7 @@ void ED_screen_new_window(struct bContext *C, struct rcti *position, int type); /* anim */ void ED_update_for_newframe(const struct bContext *C, int mute); void ED_refresh_viewport_fps(struct bContext *C); -int ED_screen_animation_play(struct bContext *C, int sync, int mode, int toggle); +int ED_screen_animation_play(struct bContext *C, int sync, int mode); /* screen keymaps */ void ED_operatortypes_screen(void); diff --git a/source/blender/editors/include/ED_screen_types.h b/source/blender/editors/include/ED_screen_types.h index f6767aaa07f..c55dafa6f51 100644 --- a/source/blender/editors/include/ED_screen_types.h +++ b/source/blender/editors/include/ED_screen_types.h @@ -38,7 +38,6 @@ typedef struct ScreenAnimData { short refresh; short flag; /* flags for playback */ int sfra; /* frame that playback was started from */ - double speed_mul; /* speed multiplier */ } ScreenAnimData; /* for animplayer */ diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c index 3d9ba4e5921..7110c3aa7a7 100644 --- a/source/blender/editors/render/render_internal.c +++ b/source/blender/editors/render/render_internal.c @@ -628,7 +628,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event) /* cancel animation playback */ if (screen->animtimer) - ED_screen_animation_play(C, 0, 0, 1); + ED_screen_animation_play(C, 0, 0); /* handle UI stuff */ WM_cursor_wait(1); diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 3e56e601788..952f34ae2be 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1653,7 +1653,7 @@ void ED_refresh_viewport_fps(bContext *C) /* redraws: uses defines from stime->redraws * enable: 1 - forward on, -1 - backwards on, 0 - off */ -void ED_screen_animation_timer(bContext *C, int redraws, int refresh, int sync, int enable, double speed) +void ED_screen_animation_timer(bContext *C, int redraws, int refresh, int sync, int enable) { bScreen *screen= CTX_wm_screen(C); wmWindowManager *wm= CTX_wm_manager(C); @@ -1666,14 +1666,16 @@ void ED_screen_animation_timer(bContext *C, int redraws, int refresh, int sync, if(enable) { ScreenAnimData *sad= MEM_callocN(sizeof(ScreenAnimData), "ScreenAnimData"); - screen->animtimer= WM_event_add_timer(wm, win, TIMER0, (1.0/(FPS*speed))); + + screen->animtimer= WM_event_add_timer(wm, win, TIMER0, (1.0/FPS)); + sad->ar= CTX_wm_region(C); sad->sfra = scene->r.cfra; sad->redraws= redraws; sad->refresh= refresh; - sad->speed_mul= speed; sad->flag |= (enable < 0)? ANIMPLAY_FLAG_REVERSE: 0; sad->flag |= (sync == 0)? ANIMPLAY_FLAG_NO_SYNC: (sync == 1)? ANIMPLAY_FLAG_SYNC: 0; + screen->animtimer->customdata= sad; } diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index da2b520ed94..9b152f8c7e5 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -2443,30 +2443,29 @@ static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event) float time; /* sync, don't sync, or follow scene setting */ - if(sad->flag & ANIMPLAY_FLAG_SYNC) sync= 1; - else if(sad->flag & ANIMPLAY_FLAG_NO_SYNC) sync= 0; + if (sad->flag & ANIMPLAY_FLAG_SYNC) sync= 1; + 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))) - scene->r.cfra = time * (int)(FPS + 0.5) * sad->speed_mul; + scene->r.cfra = time * FPS + 0.5; else { - if(sync) { - int step = floor(wt->duration * sad->speed_mul * FPS); + if (sync) { + int step = floor(wt->duration * FPS); /* skip frames */ - if(sad->flag & ANIMPLAY_FLAG_REVERSE) + if (sad->flag & ANIMPLAY_FLAG_REVERSE) scene->r.cfra -= step; else scene->r.cfra += step; - wt->duration -= ((float)step)/(FPS*sad->speed_mul); + wt->duration -= ((float)step)/FPS; } else { /* one frame +/- */ - int step = sad->speed_mul; - if(sad->flag & ANIMPLAY_FLAG_REVERSE) - scene->r.cfra-=step; + if (sad->flag & ANIMPLAY_FLAG_REVERSE) + scene->r.cfra--; else - scene->r.cfra+=step; + scene->r.cfra++; } } @@ -2504,19 +2503,19 @@ static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event) } } - if(sad->flag & ANIMPLAY_FLAG_JUMPED) + if (sad->flag & ANIMPLAY_FLAG_JUMPED) sound_seek_scene(C); /* since we follow drawflags, we can't send notifier but tag regions ourselves */ ED_update_for_newframe(C, 1); - for(sa= screen->areabase.first; sa; sa= sa->next) { + for (sa= screen->areabase.first; sa; sa= sa->next) { ARegion *ar; - for(ar= sa->regionbase.first; ar; ar= ar->next) { - if(ar==sad->ar) + for (ar= sa->regionbase.first; ar; ar= ar->next) { + if (ar==sad->ar) ED_region_tag_redraw(ar); else - if(match_region_with_redraws(sa->spacetype, ar->regiontype, sad->redraws)) + if (match_region_with_redraws(sa->spacetype, ar->regiontype, sad->redraws)) ED_region_tag_redraw(ar); } @@ -2534,7 +2533,7 @@ static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event) * since the frames-per-second value may have been changed */ // TODO: this may make evaluation a bit slower if the value doesn't change... any way to avoid this? - wt->timestep= (1.0/(FPS*sad->speed_mul)); + wt->timestep= (1.0/FPS); return OPERATOR_FINISHED; } @@ -2558,57 +2557,46 @@ static void SCREEN_OT_animation_step(wmOperatorType *ot) /* ****************** anim player, starts or ends timer ***************** */ /* toggle operator */ -int ED_screen_animation_play(bContext *C, int sync, int mode, int toggle) +int ED_screen_animation_play(bContext *C, int sync, int mode) { bScreen *screen= CTX_wm_screen(C); - struct Scene* scene = CTX_data_scene(C); + Scene *scene = CTX_data_scene(C); - if(screen->animtimer && toggle) { - ScreenAnimData *sad= (ScreenAnimData *)screen->animtimer->customdata; - + if (screen->animtimer) { /* stop playback now */ - ED_screen_animation_timer(C, 0, 0, 0, 0, 0.0); + ED_screen_animation_timer(C, 0, 0, 0, 0); sound_stop_scene(scene); } else { ScrArea *sa= CTX_wm_area(C); int refresh= SPACE_TIME; - double speed = 1.0; - if (screen->animtimer) { - ScreenAnimData *sad = (ScreenAnimData*)screen->animtimer->customdata; - int oldmode = sad->flag & ANIMPLAY_FLAG_REVERSE ? -1 : 1; - speed = (screen->animtimer && (oldmode == mode)) ? 2.0 : 1.0; - } else if (toggle) { - mode = screen->animmode; - } - screen->animmode = mode; - - if(mode == 1) // XXX only play audio forwards!? + + if (mode == 1) // XXX only play audio forwards!? sound_play_scene(scene); - + /* timeline gets special treatment since it has it's own menu for determining redraws */ if ((sa) && (sa->spacetype == SPACE_TIME)) { SpaceTime *stime= (SpaceTime *)sa->spacedata.first; - - ED_screen_animation_timer(C, stime->redraws, refresh, sync, mode, speed); - + + ED_screen_animation_timer(C, stime->redraws, refresh, sync, mode); + /* update region if TIME_REGION was set, to leftmost 3d window */ ED_screen_animation_timer_update(screen, stime->redraws, refresh); } else { int redraws = TIME_REGION|TIME_ALL_3D_WIN; - + /* XXX - would like a better way to deal with this situation - Campbell */ - if((!sa) || (sa->spacetype == SPACE_SEQ)) { + if ((!sa) || (sa->spacetype == SPACE_SEQ)) { redraws |= TIME_SEQ; } - - ED_screen_animation_timer(C, redraws, refresh, sync, mode, speed); - + + ED_screen_animation_timer(C, redraws, refresh, sync, mode); + if(screen->animtimer) { wmTimer *wt= screen->animtimer; ScreenAnimData *sad= wt->customdata; - + sad->ar= CTX_wm_region(C); } } @@ -2620,13 +2608,12 @@ int ED_screen_animation_play(bContext *C, int sync, int mode, int toggle) static int screen_animation_play_exec(bContext *C, wmOperator *op) { int mode= (RNA_boolean_get(op->ptr, "reverse")) ? -1 : 1; - int toggle= RNA_boolean_get(op->ptr, "toggle"); int sync= -1; - - if(RNA_property_is_set(op->ptr, "sync")) + + if (RNA_property_is_set(op->ptr, "sync")) sync= (RNA_boolean_get(op->ptr, "sync")); - - return ED_screen_animation_play(C, sync, mode, toggle); + + return ED_screen_animation_play(C, sync, mode); } static void SCREEN_OT_animation_play(wmOperatorType *ot) @@ -2643,7 +2630,6 @@ static void SCREEN_OT_animation_play(wmOperatorType *ot) RNA_def_boolean(ot->srna, "reverse", 0, "Play in Reverse", "Animation is played backwards"); RNA_def_boolean(ot->srna, "sync", 0, "Sync", "Drop frames to maintain framerate"); - RNA_def_boolean(ot->srna, "toggle", 1, "Toggle Playback", "Toggle animation off or double speed on hitting play again"); } static int screen_animation_cancel_exec(bContext *C, wmOperator *op) @@ -2661,7 +2647,7 @@ static int screen_animation_cancel_exec(bContext *C, wmOperator *op) WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); /* call the other "toggling" operator to clean up now */ - ED_screen_animation_play(C, 0, 0, 1); + ED_screen_animation_play(C, 0, 0, 0); } return OPERATOR_PASS_THROUGH; @@ -3109,20 +3095,21 @@ void ED_keymap_screen(wmKeyConfig *keyconf) /* play (forward and backwards) */ WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", AKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", KKEY, KM_PRESS, 0, LKEY); RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", AKEY, KM_PRESS, KM_ALT|KM_SHIFT, 0)->ptr, "reverse", 1); WM_keymap_add_item(keymap, "SCREEN_OT_animation_cancel", ESCKEY, KM_PRESS, 0, 0); /* Alternative keys for animation and sequencer playing */ +#if 0 // XXX: disabled for restoring later... bad implementation keymap= WM_keymap_find(keyconf, "Frames", 0, 0); kmi = WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", RIGHTARROWKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "toggle", 0); + RNA_boolean_set(kmi->ptr, "cycle_speed", 1); kmi = WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", LEFTARROWKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "reverse", 1); - RNA_boolean_set(kmi->ptr, "toggle", 0); + RNA_boolean_set(kmi->ptr, "reverse", 1); + RNA_boolean_set(kmi->ptr, "cycle_speed", 1); WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", DOWNARROWKEY, KM_PRESS, KM_ALT, 0); +#endif keymap_modal_set(keyconf); } diff --git a/source/blender/makesdna/DNA_screen_types.h b/source/blender/makesdna/DNA_screen_types.h index e02a95d2119..a811fd9c014 100644 --- a/source/blender/makesdna/DNA_screen_types.h +++ b/source/blender/makesdna/DNA_screen_types.h @@ -66,7 +66,7 @@ typedef struct bScreen { short mainwin; /* screensize subwindow, for screenedges and global menus */ short subwinactive; /* active subwindow */ - int animmode; /* store current direction of animation(1=forward, -1=backward) */ + int pad2; struct wmTimer *animtimer; /* if set, screen has timer handler added in window */ void *context; /* context callback */ From f7298287b34f34c120788a456dfc43351467a3cc Mon Sep 17 00:00:00 2001 From: Joshua Leung <aligorith@gmail.com> Date: Mon, 19 Jul 2010 11:47:46 +0000 Subject: [PATCH 551/674] Bugger... msvc didn't bail out on these... --- source/blender/editors/screen/screen_ops.c | 4 ++-- source/blender/windowmanager/intern/wm_event_system.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 9b152f8c7e5..9ccfec43341 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -2647,7 +2647,7 @@ static int screen_animation_cancel_exec(bContext *C, wmOperator *op) WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); /* call the other "toggling" operator to clean up now */ - ED_screen_animation_play(C, 0, 0, 0); + ED_screen_animation_play(C, 0, 0); } return OPERATOR_PASS_THROUGH; @@ -2999,7 +2999,7 @@ static void keymap_modal_set(wmKeyConfig *keyconf) void ED_keymap_screen(wmKeyConfig *keyconf) { wmKeyMap *keymap; - wmKeyMapItem *kmi; + //wmKeyMapItem *kmi; /* Screen Editing ------------------------------------------------ */ keymap= WM_keymap_find(keyconf, "Screen Editing", 0, 0); diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index dfb802f26b4..63dcda3c12e 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1594,7 +1594,7 @@ void wm_event_do_handlers(bContext *C) CTX_data_scene_set(C, scene); if(((playing == 1) && (!win->screen->animtimer)) || ((playing == 0) && (win->screen->animtimer))){ - ED_screen_animation_play(C, -1, 1, 1); + ED_screen_animation_play(C, -1, 1); } if(playing == 0) { From ff83a98a07c3d55eac03ebd903ad7a0c3e6c33b4 Mon Sep 17 00:00:00 2001 From: Xavier Thomas <xavier.thomas.1980@gmail.com> Date: Mon, 19 Jul 2010 15:39:12 +0000 Subject: [PATCH 552/674] Add a "copy" option to the save_as_mainfile operator. It saves the current state but does not make the saved file active, so further save won't use this filepath. --- source/blender/windowmanager/WM_api.h | 2 +- source/blender/windowmanager/intern/wm_files.c | 14 ++++++++------ source/blender/windowmanager/intern/wm_operators.c | 8 ++++++-- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index 78ea0350667..46d42b300bf 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -78,7 +78,7 @@ void WM_window_open_temp (struct bContext *C, struct rcti *position, int type); int WM_read_homefile (struct bContext *C, struct wmOperator *op); int WM_write_homefile (struct bContext *C, struct wmOperator *op); void WM_read_file (struct bContext *C, char *name, struct ReportList *reports); -int WM_write_file (struct bContext *C, char *target, int fileflags, struct ReportList *reports); +int WM_write_file (struct bContext *C, char *target, int fileflags, struct ReportList *reports, int copy); void WM_read_autosavefile(struct bContext *C); void WM_autosave_init (struct wmWindowManager *wm); diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 86e08118e54..6457e184066 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -566,7 +566,7 @@ int write_crash_blend(void) } } -int WM_write_file(bContext *C, char *target, int fileflags, ReportList *reports) +int WM_write_file(bContext *C, char *target, int fileflags, ReportList *reports, int copy) { Library *li; int len; @@ -620,11 +620,13 @@ int WM_write_file(bContext *C, char *target, int fileflags, ReportList *reports) do_history(di, reports); if (BLO_write_file(CTX_data_main(C), di, fileflags, reports, thumb)) { - strcpy(G.sce, di); - G.relbase_valid = 1; - strcpy(G.main->name, di); /* is guaranteed current file */ - - G.save_over = 1; /* disable untitled.blend convention */ + if(!copy) { + strcpy(G.sce, di); + G.relbase_valid = 1; + strcpy(G.main->name, di); /* is guaranteed current file */ + + G.save_over = 1; /* disable untitled.blend convention */ + } if(fileflags & G_FILE_COMPRESS) G.fileflags |= G_FILE_COMPRESS; else G.fileflags &= ~G_FILE_COMPRESS; diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 370dd111936..7d0ff1e44e8 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -1783,6 +1783,7 @@ static int wm_save_as_mainfile_exec(bContext *C, wmOperator *op) { char path[FILE_MAX]; int fileflags; + int copy=0; save_set_compress(op); @@ -1793,6 +1794,9 @@ static int wm_save_as_mainfile_exec(bContext *C, wmOperator *op) untitled(path); } + if(RNA_property_is_set(op->ptr, "copy")) + copy = RNA_boolean_get(op->ptr, "copy"); + fileflags= G.fileflags; /* set compression flag */ @@ -1801,7 +1805,7 @@ static int wm_save_as_mainfile_exec(bContext *C, wmOperator *op) if(RNA_boolean_get(op->ptr, "relative_remap")) fileflags |= G_FILE_RELATIVE_REMAP; else fileflags &= ~G_FILE_RELATIVE_REMAP; - if ( WM_write_file(C, path, fileflags, op->reports) != 0) + if ( WM_write_file(C, path, fileflags, op->reports, copy) != 0) return OPERATOR_CANCELLED; WM_event_add_notifier(C, NC_WM|ND_FILESAVE, NULL); @@ -1822,6 +1826,7 @@ static void WM_OT_save_as_mainfile(wmOperatorType *ot) WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER, FILE_SAVE, WM_FILESEL_FILEPATH); RNA_def_boolean(ot->srna, "compress", 0, "Compress", "Write compressed .blend file"); RNA_def_boolean(ot->srna, "relative_remap", 1, "Remap Relative", "Remap relative paths when saving in a different directory"); + RNA_def_boolean(ot->srna, "copy", 0, "Save Copy", "Save a copy of the actual working state but does not make saved file active."); } /* *************** save file directly ******** */ @@ -1873,7 +1878,6 @@ static void WM_OT_save_mainfile(wmOperatorType *ot) RNA_def_boolean(ot->srna, "relative_remap", 0, "Remap Relative", "Remap relative paths when saving in a different directory"); } - /* XXX: move these collada operators to a more appropriate place */ #ifdef WITH_COLLADA From 523e8e4dc97fb1c316c229a83a66c6550620330c Mon Sep 17 00:00:00 2001 From: Peter Schlaile <peter@schlaile.de> Date: Mon, 19 Jul 2010 16:27:31 +0000 Subject: [PATCH 553/674] == FFMPEG == This is a fix for the following issues in ffmpeg movie reader: * mpeg transport stream seeking (HDV) failed completely, since ffmpeg doesn't want to seek by timestamp (those aren't guaranteed to be strictly monotonic within those file formats) We therefore seek by byte and use the bitrate in those cases. This isn't a real fix, I will add a seperate index building process, soon, so that we can finally seek by timecode properly (optionally with "free run timecode" on consumer video camcorders, stay tuned :) ) * Recent versions of ffmpeg do set the ALPHA channel to 0xff properly, so we test the first pixel for proper ALPHA and then workaround optionally. --- source/blender/imbuf/intern/anim.c | 290 ++++++++++++++++------------- 1 file changed, 160 insertions(+), 130 deletions(-) diff --git a/source/blender/imbuf/intern/anim.c b/source/blender/imbuf/intern/anim.c index bfc3433875d..69e547cd8df 100644 --- a/source/blender/imbuf/intern/anim.c +++ b/source/blender/imbuf/intern/anim.c @@ -685,6 +685,116 @@ static int startffmpeg(struct anim * anim) { return (0); } +static void ffmpeg_postprocess(struct anim * anim, ImBuf * ibuf, + int * filter_y) +{ + AVFrame * input = anim->pFrame; + + /* This means the data wasnt read properly, + this check stops crashing */ + if (input->data[0]==0 && input->data[1]==0 + && input->data[2]==0 && input->data[3]==0){ + fprintf(stderr, "ffmpeg_fetchibuf: " + "data not read properly...\n"); + return; + } + + if (anim->ib_flags & IB_animdeinterlace) { + if (avpicture_deinterlace( + (AVPicture*) + anim->pFrameDeinterlaced, + (const AVPicture*) + anim->pFrame, + anim->pCodecCtx->pix_fmt, + anim->pCodecCtx->width, + anim->pCodecCtx->height) + < 0) { + *filter_y = 1; + } else { + input = anim->pFrameDeinterlaced; + } + } + + if (ENDIAN_ORDER == B_ENDIAN) { + int * dstStride = anim->pFrameRGB->linesize; + uint8_t** dst = anim->pFrameRGB->data; + int dstStride2[4] = { dstStride[0], 0, 0, 0 }; + uint8_t* dst2[4] = { dst[0], 0, 0, 0 }; + int x,y,h,w; + unsigned char* bottom; + unsigned char* top; + + sws_scale(anim->img_convert_ctx, + (const uint8_t * const *)input->data, + input->linesize, + 0, + anim->pCodecCtx->height, + dst2, + dstStride2); + + /* workaround: sws_scale bug + sets alpha = 0 and compensate + for altivec-bugs and flipy... */ + + bottom = (unsigned char*) ibuf->rect; + top = bottom + ibuf->x * (ibuf->y-1) * 4; + + h = (ibuf->y + 1) / 2; + w = ibuf->x; + + for (y = 0; y < h; y++) { + unsigned char tmp[4]; + unsigned int * tmp_l = + (unsigned int*) tmp; + tmp[3] = 0xff; + + for (x = 0; x < w; x++) { + tmp[0] = bottom[0]; + tmp[1] = bottom[1]; + tmp[2] = bottom[2]; + + bottom[0] = top[0]; + bottom[1] = top[1]; + bottom[2] = top[2]; + bottom[3] = 0xff; + + *(unsigned int*) top = *tmp_l; + + bottom +=4; + top += 4; + } + top -= 8 * w; + } + } else { + int * dstStride = anim->pFrameRGB->linesize; + uint8_t** dst = anim->pFrameRGB->data; + int dstStride2[4] = { -dstStride[0], 0, 0, 0 }; + uint8_t* dst2[4] = { dst[0] + (anim->y - 1)*dstStride[0], + 0, 0, 0 }; + int i; + unsigned char* r; + + sws_scale(anim->img_convert_ctx, + (const uint8_t * const *)input->data, + input->linesize, + 0, + anim->pCodecCtx->height, + dst2, + dstStride2); + + r = (unsigned char*) ibuf->rect; + + /* workaround sws_scale bug: older version of + sws_scale set alpha = 0... */ + if (r[3] == 0) { + for (i = 0; i < ibuf->x * ibuf->y; i++) { + r[3] = 0xff; + r += 4; + } + } + } +} + static ImBuf * ffmpeg_fetchibuf(struct anim * anim, int position) { ImBuf * ibuf; int frameFinished; @@ -692,6 +802,8 @@ static ImBuf * ffmpeg_fetchibuf(struct anim * anim, int position) { int64_t pts_to_search = 0; int pos_found = 1; int filter_y = 0; + int seek_by_bytes= 0; + int preseek_count = 0; if (anim == 0) return (0); @@ -724,6 +836,8 @@ static ImBuf * ffmpeg_fetchibuf(struct anim * anim, int position) { } } + seek_by_bytes = !!(anim->pFormatCtx->iformat->flags & AVFMT_TS_DISCONT); + if (position != anim->curposition + 1) { #ifdef FFMPEG_OLD_FRAME_RATE double frame_rate = @@ -737,22 +851,42 @@ static ImBuf * ffmpeg_fetchibuf(struct anim * anim, int position) { double time_base = av_q2d(anim->pFormatCtx->streams[anim->videoStream] ->time_base); - long long pos = (long long) (position - anim->preseek) - * AV_TIME_BASE / frame_rate; + long long pos; long long st_time = anim->pFormatCtx ->streams[anim->videoStream]->start_time; + int ret; - if (pos < 0) { - pos = 0; + if (seek_by_bytes) { + pos = position - anim->preseek; + if (pos < 0) { + pos = 0; + } + preseek_count = position - pos; + + pos *= anim->pFormatCtx->bit_rate / frame_rate; + pos /= 8; + } else { + pos = (long long) (position - anim->preseek) + * AV_TIME_BASE / frame_rate; + if (pos < 0) { + pos = 0; + } + + if (st_time != AV_NOPTS_VALUE) { + pos += st_time * AV_TIME_BASE * time_base; + } } - if (st_time != AV_NOPTS_VALUE) { - pos += st_time * AV_TIME_BASE * time_base; + ret = av_seek_frame(anim->pFormatCtx, -1, + pos, + AVSEEK_FLAG_BACKWARD | ( + seek_by_bytes + ? AVSEEK_FLAG_ANY + | AVSEEK_FLAG_BYTE : 0)); + if (ret < 0) { + fprintf(stderr, "error while seeking: %d\n", ret); } - av_seek_frame(anim->pFormatCtx, -1, - pos, AVSEEK_FLAG_BACKWARD); - pts_to_search = (long long) (((double) position) / time_base / frame_rate); if (st_time != AV_NOPTS_VALUE) { @@ -769,132 +903,28 @@ static ImBuf * ffmpeg_fetchibuf(struct anim * anim, int position) { anim->pFrame, &frameFinished, packet.data, packet.size); + if (seek_by_bytes && preseek_count > 0) { + preseek_count--; + } + if (frameFinished && !pos_found) { - if (packet.dts >= pts_to_search) { - pos_found = 1; - anim->curposition = position; + if (seek_by_bytes) { + if (!preseek_count) { + pos_found = 1; + anim->curposition = position; + } + } else { + if (packet.dts >= pts_to_search) { + pos_found = 1; + anim->curposition = position; + } } } if(frameFinished && pos_found == 1) { - AVFrame * input = anim->pFrame; - - /* This means the data wasnt read properly, - this check stops crashing */ - if (input->data[0]==0 && input->data[1]==0 - && input->data[2]==0 && input->data[3]==0){ - av_free_packet(&packet); - break; - } - - if (anim->ib_flags & IB_animdeinterlace) { - if (avpicture_deinterlace( - (AVPicture*) - anim->pFrameDeinterlaced, - (const AVPicture*) - anim->pFrame, - anim->pCodecCtx->pix_fmt, - anim->pCodecCtx->width, - anim->pCodecCtx->height) - < 0) { - filter_y = 1; - } else { - input = anim->pFrameDeinterlaced; - } - } - - if (ENDIAN_ORDER == B_ENDIAN) { - int * dstStride - = anim->pFrameRGB->linesize; - uint8_t** dst = anim->pFrameRGB->data; - int dstStride2[4] - = { dstStride[0], 0, 0, 0 }; - uint8_t* dst2[4]= { - dst[0], 0, 0, 0 }; - int x,y,h,w; - unsigned char* bottom; - unsigned char* top; - - sws_scale(anim->img_convert_ctx, - (const uint8_t * const *)input->data, - input->linesize, - 0, - anim->pCodecCtx->height, - dst2, - dstStride2); - - /* workaround: sws_scale - sets alpha = 0 and compensate - for altivec-bugs and flipy... */ - - bottom = (unsigned char*) ibuf->rect; - top = bottom - + ibuf->x * (ibuf->y-1) * 4; - - h = (ibuf->y + 1) / 2; - w = ibuf->x; - - for (y = 0; y < h; y++) { - unsigned char tmp[4]; - unsigned int * tmp_l = - (unsigned int*) tmp; - tmp[3] = 0xff; - - for (x = 0; x < w; x++) { - tmp[0] = bottom[0]; - tmp[1] = bottom[1]; - tmp[2] = bottom[2]; - - bottom[0] = top[0]; - bottom[1] = top[1]; - bottom[2] = top[2]; - bottom[3] = 0xff; - - *(unsigned int*) top - = *tmp_l; - - bottom +=4; - top += 4; - } - top -= 8 * w; - } - - av_free_packet(&packet); - break; - } else { - int * dstStride - = anim->pFrameRGB->linesize; - uint8_t** dst = anim->pFrameRGB->data; - int dstStride2[4] - = { -dstStride[0], 0, 0, 0 }; - uint8_t* dst2[4]= { - dst[0] - + (anim->y - 1)*dstStride[0], - 0, 0, 0 }; - int i; - unsigned char* r; - - sws_scale(anim->img_convert_ctx, - (const uint8_t * const *)input->data, - input->linesize, - 0, - anim->pCodecCtx->height, - dst2, - dstStride2); - - /* workaround: sws_scale - sets alpha = 0... */ - - r = (unsigned char*) ibuf->rect; - - for (i = 0; i < ibuf->x * ibuf->y;i++){ - r[3] = 0xff; - r+=4; - } - - av_free_packet(&packet); - break; - } + ffmpeg_postprocess(anim, ibuf, &filter_y); + av_free_packet(&packet); + break; } } From 40ee7ef155d4a59c4a093d95724c95a89adc1b96 Mon Sep 17 00:00:00 2001 From: Peter Schlaile <peter@schlaile.de> Date: Mon, 19 Jul 2010 17:38:20 +0000 Subject: [PATCH 554/674] == Sequencer == Made mpeg_preseek accessible again. --- release/scripts/ui/space_sequencer.py | 1 + 1 file changed, 1 insertion(+) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 97d84b77e18..b9b9003506b 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -589,6 +589,7 @@ class SEQUENCER_PT_input_movie(SEQUENCER_PT_input): col.label(text="Path:") col = split.column() col.prop(strip, "filepath", text="") + col.prop(strip, "mpeg_preseek", text="MPEG Preseek") class SEQUENCER_PT_input_image(SEQUENCER_PT_input): From aa0e4277a2d54b0a18a9d43508f8288b49955034 Mon Sep 17 00:00:00 2001 From: Peter Schlaile <peter@schlaile.de> Date: Mon, 19 Jul 2010 17:39:25 +0000 Subject: [PATCH 555/674] == Sequencer == In multicam editing, do not cut to non existent cams (above multicam track) --- release/scripts/op/sequencer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/op/sequencer.py b/release/scripts/op/sequencer.py index cf876189907..432486b70cf 100644 --- a/release/scripts/op/sequencer.py +++ b/release/scripts/op/sequencer.py @@ -94,7 +94,7 @@ class SequencerCutMulticam(bpy.types.Operator): s = context.scene.sequence_editor.active_strip - if s.multicam_source == camera: + if s.multicam_source == camera or camera >= s.channel: return {'FINISHED'} if not s.select: From e24d90acad5929e58dbc7500feae3fe6658e236b Mon Sep 17 00:00:00 2001 From: Xavier Thomas <xavier.thomas.1980@gmail.com> Date: Mon, 19 Jul 2010 17:45:03 +0000 Subject: [PATCH 556/674] Add a "Save Copy" entry in the File menu. --- release/scripts/ui/space_info.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index ca8371b85fe..25f4e8b2097 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -93,6 +93,8 @@ class INFO_MT_file(bpy.types.Menu): layout.operator("wm.save_mainfile", text="Save", icon='FILE_TICK').check_existing = False layout.operator_context = 'INVOKE_AREA' layout.operator("wm.save_as_mainfile", text="Save As...") + layout.operator_context = 'INVOKE_AREA' + layout.operator("wm.save_as_mainfile", text="Save Copy...").copy = True layout.separator() From 55d17f69d8b76c9f04662b6f1a3532ab708fa5b1 Mon Sep 17 00:00:00 2001 From: Peter Schlaile <peter@schlaile.de> Date: Mon, 19 Jul 2010 17:47:58 +0000 Subject: [PATCH 557/674] == Sequencer == Add keyboard shortcuts for multicam editing (hit 1-0 (regular, not keypad!) to cut to camera 1-10 during playback) --- .../blender/editors/space_sequencer/sequencer_ops.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c index fb26e69f7db..ea1c05148a7 100644 --- a/source/blender/editors/space_sequencer/sequencer_ops.c +++ b/source/blender/editors/space_sequencer/sequencer_ops.c @@ -167,7 +167,18 @@ void sequencer_keymap(wmKeyConfig *keyconf) RNA_enum_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_swap", RIGHTARROWKEY, KM_PRESS, KM_ALT, 0)->ptr, "side", SEQ_SIDE_RIGHT); WM_keymap_add_item(keymap, "SEQUENCER_OT_snap", SKEY, KM_PRESS, KM_SHIFT, 0); - + + /* multicam editing keyboard layout, switch to camera 1-10 using + regular number keys */ + { + int keys[] = { ONEKEY, TWOKEY, THREEKEY, FOURKEY, FIVEKEY, + SIXKEY, SEVENKEY, EIGHTKEY, NINEKEY, ZEROKEY }; + int i; + + for (i = 1; i <= 10; i++) { + RNA_enum_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_cut_multicam", keys[i-1], KM_PRESS, 0, 0)->ptr, "camera", i); + } + } /* Mouse selection, a bit verbose :/ */ WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); From c2945d31e7e9a1558ba892b5bbabc337f4263d24 Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" <gsr.b3d@infernal-iceberg.com> Date: Mon, 19 Jul 2010 18:08:29 +0000 Subject: [PATCH 558/674] SVN maintenance. Plus no hidden files in config. --- release/datafiles/brushicons/clay.png | Bin 0 -> 11181 bytes release/datafiles/brushicons/crease.png | Bin 0 -> 8638 bytes release/datafiles/brushicons/draw.png | Bin 0 -> 11349 bytes release/datafiles/brushicons/fill.png | Bin 0 -> 16892 bytes release/datafiles/brushicons/flatten.png | Bin 0 -> 9114 bytes release/datafiles/brushicons/grab.png | Bin 0 -> 8045 bytes release/datafiles/brushicons/inflate.png | Bin 0 -> 8840 bytes release/datafiles/brushicons/layer.png | Bin 0 -> 11004 bytes release/datafiles/brushicons/nudge.png | Bin 0 -> 18012 bytes release/datafiles/brushicons/pinch.png | Bin 0 -> 9880 bytes release/datafiles/brushicons/scrape.png | Bin 0 -> 13055 bytes release/datafiles/brushicons/smooth.png | Bin 0 -> 16428 bytes release/datafiles/brushicons/snake_hook.png | Bin 0 -> 9710 bytes release/datafiles/brushicons/thumb.png | Bin 0 -> 9098 bytes release/datafiles/brushicons/twist.png | Bin 0 -> 16906 bytes 15 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 release/datafiles/brushicons/clay.png create mode 100644 release/datafiles/brushicons/crease.png create mode 100644 release/datafiles/brushicons/draw.png create mode 100644 release/datafiles/brushicons/fill.png create mode 100644 release/datafiles/brushicons/flatten.png create mode 100644 release/datafiles/brushicons/grab.png create mode 100644 release/datafiles/brushicons/inflate.png create mode 100644 release/datafiles/brushicons/layer.png create mode 100644 release/datafiles/brushicons/nudge.png create mode 100644 release/datafiles/brushicons/pinch.png create mode 100644 release/datafiles/brushicons/scrape.png create mode 100644 release/datafiles/brushicons/smooth.png create mode 100644 release/datafiles/brushicons/snake_hook.png create mode 100644 release/datafiles/brushicons/thumb.png create mode 100644 release/datafiles/brushicons/twist.png diff --git a/release/datafiles/brushicons/clay.png b/release/datafiles/brushicons/clay.png new file mode 100644 index 0000000000000000000000000000000000000000..dab73b7cbdd312d69f3f5aab4d2f1754ce367197 GIT binary patch literal 11181 zcmWlf2Q*vn8^=S{C@S$Yf?Bahs|kuyGqzTX*gICMMr&_1W7RHNtM-gdYlJGXscNOD zSz8H$)c)t6d+vG9%}H|Zo9DUD^ZkC_H}2^ZP5N8xw*UYDy|xzIfHd0v|D+}d0La)c zznzjUD4bOus{jBE$+Q=CH%Zr&_PUyI(nxxps&#~s1{zN-GcVFF;QoJ-sS1DaC%sAK zt^HV?YL@Ch0ED(X?;Z~Tzyr{Rs~Gvu?gj@mmzp6K7tV9>=X?7xfyY(xXs)U)C&6YZ zqzrW?C6hL!S2auJhC|NgEsY-nl*~f85RF$nP>uVqo=e?M4Oh;fhI|u^ghGa0BnmgS z(N!`FLEU)ysfANy0b%}}{r!;fTubNtv2~XTao%rF@%-=QT=(T1)kOXy+JfVQ&k92@ zLdPQUy4@G!wY*p5UgqkGHM%C?!q%kgE~A&VDF9YDNY2<Fp$_zXm;Wo@dP1_tr)7lF z0a7zR3IPA{gPzUxWeetW$TnFyx6fEhH=(0D=x{aeqGZy)v-N=wrr-(g{iKURzTWhM zmyZ_a=g-%(f(=8{q*rtGzYwkFq>_l}o%W9L`G)ScwziJ*?;as>H^cjSM#IZ?&b<6W z!9dO8)Y>YvYi;fHG>!&vLiCfc?)1FcBYh>{eBLjQfR@3&bmvNdLRNx(ZON9#<=q!Q zd-77?bJe1@X3r|Aau*gCtwuKz`Y(P>x84k=^;_&8MS<0TsqJWn+b4KMzrB^yjwjZy zxBL}a0Z$RqjFk91ucpXHfXWY(pXWU0XBQNGhPLJtSoghVJ0{lN;LoRs9SdW(i4wU= zeuqD{CjDXZzr*&tF!smVQZ}P%bj4e<>ka<}1$CTvuqywHwK+KCt2=tjah;vB)1E)! z#5%F)bI~`n<vr_13p5j7w>izUxe0*7IXF0CP^j&)oF}+#r{-5LJ9g*i{R*z9vpT_m zzZI3)>BOs*Q~7dN4#-Nbyn^f}&#T_6tI$OsfNg3G@r^om>ey>zeEwocKT#vS{kiHs z8n0Ol1uWsa|6nnA7Q$&i?FMPG<t@JFtCfG|gna$(Exg*ftM%jV?cKfcelNe@3$1R{ z*6^Czw;moI?(Pc#=WbRw#%J@1n`n7__SkKZ3fyw>1^_bu>fDW0;&;g0m`on#Z@iOK z!zd}bzy^H#>0eL9g6O3U!pwlu*&B}h(_9RGqe<;k-O2cNdAZW%meM~pC78`9DTJPB zL*BJjuE<&_3+QTzxOg&bf;nvZ*JGG}m|=4DPe1NHt)y-|27l%bwHak-Yt=XQdBmQy z)2=-kcKAnTchB<QNmdB13oVT0fj}Zq)6?md>V3dJFCVzR7xbqJ7l}De8XH4ebf4~Y z`!28aX9W}5g5R^=;tkhA;2uu_pDhx7=Jm>_`h%?z$KD}GDfa&$z*`B#%d>`ET=#Mt zE8%o+{8XmvAju<apyQC%&CQLBdSDQ;Yv0=4VIfTqNy7e_bTPuw^U_e?>H|B+623-u zwYqJ@#%|y-gf9&3+p8xBi~jQ*;w~<X4n2K|4!8$zkF9nrC34U5bG>*eHgdh*q7354 z<#2up{R%O*i2;LOxykk^X#r^Bs5abS1$<%OkUepml%X53RJ;`MJ4r%+4oa%3tJssV z$c<dTg&>a|r!jL#;6Zoj$D83@^9gQqt!_Jcv|nNiCkFy>3HvTm(CO)7r-xP_o|N-a zJo($TbN+4+)$@1Bmhex67QiZDnLXib)q#TY7EzaHL=d5Z5D4;tOfu)9qMg{>J(i#j z`KGUzmzVQ1SD0{1-~Jm(P&8f~@ON*oZ;7n1N_2fQ<Z#@_jUz%6F6HfCzv#p1wLR<W z;pgnJ(OX;aZxC76vD{Zlb>C}|2-Tnkpj;A}fk3jJc64nE!YV<_N(P%fKcDB-Hcy8V zDV@0*|5_LDyO^5@ck&HcyvK4L)UknY-^C=P6Nmnc=16+mbQvpNhF#<necf>Poa9;e z-n+j{(%^G-g~gx@=p+J{Y42Hn+BbW0U4Xfkuup_yft`M6EAbP*34PoH&2()9VtU#^ zIL7npH>X7KWP;+91z{nGJNrL!bBiRQ^s(Cic>iIn`heNR0+M-89wc*~SDIYPf)?gn zbHWaKSxYmba@2vKAs&03Au8@pA}0BZ&n^U;ZP0lYmwf%}u?#2I_}+o&hYug%4k&66 z86bsp2gVL`O@Qzg`a*3w^7@dKA78lw#)zR4BLx>FJBmq3?ia;GER(KL6JROt!-R9w z*Bi)DhxP|t`rGX+%S(CGktkFjaGmhA?sS&5=9lmpFyg)mqBN8a<zr=na7(PLs(Svu z{kg`Up)+j5kayloPJ46j%izh&eFltuPMVm-<MOHFq@)9XJ&F+At9X<tPCB)+YS=UZ z03p}X5{&xRx@)hfr0}a?Vq@`SY%%-N1(p*Yt`+}fAiLd{OZ5lQrFN{2{4B-**Gf2j z*<k8z)n+O_>zk@7d|M<gCyox#IOqb~^1b&Ehd|6rA?@Oz<l)r*_}jNnSP7rKx`_Au z3siZAoxd`&@uxEiIRSa3(zn`o<ne(3YG_H{t+&DZ)4zbKbd&ORgH=^KhC;1mJ-2Li zL`wU_$&11mc*j|4yFYQ*E5lnd_HF=5GVJ5Y?RVO%c33e>u3<aJ9?iT_*^K4<5D^W$ z)uK<+%<}S;HO^<$5|;#!f=?Sio}v~4EoUfuD&&V#{|9Z_4ch3^g<`=Wo*_6t(!>k= z+~$a!sSQ|B0DAj{6ng+3&JP^`4*|_|79Jh(npogSA86ez+L<k6z;}5;1)LsW*<IZb zNu>YV!5o)#e}E~HD54JMFo5)>3q6@_b)D<K*x#?;VfjL}o?)<(Au9kcrhNaTeCNZ5 zVy9J0{F$OZ{_F{SoiNi->ozcCEZvgOZ{M)lF)d$56`exCQ`$Eg?vlu+Uxq+LFOiag z)D`<7|4-N5F&70Z3yvf~hr~S2JI%XAczF;MOI{f6sRPxpb80OVa(zG;A9IQ&%-GG{ zbMHPbo652ZIb0RMzOQ-?oIG1H)N!bh<|l{7fFnskVKrn-_5HoKyUQCv4E6P|_d4hu zpZ9ZrnJ?@0^XHh$-!m>U*#-fKh1u5#RJby{_wTp<?A#qoTp3eGYs+-Z62l4c_K7dU ziC_L<a~Ld-)En&SLKgk3T%*lQO~GKe>6i7{*)tcZ2h&D~yS;u3uPo%1C`vF^fAhNu zVppfQxcWVhxqBzR60L-gPc~~UV(3p1OIJtA@bl-_c5ZGDxsoL;KYcnI8*(_TaOLt@ z=^GNe*ZteHqoc`dfYUE{Ka%_R+*}6(&Ox055PH>8*L4C-{*Ua5NZFuBG_WXt9<#Xk z*|sXMvDF%vR4b~61*>6sil9-b(VpDg9cQZZ#eI64#nyQnSCz0sXYQqp>>M*VML4R* zSj%D1)Z(X)<gEqy#fjT<V`G0@ZUQO#QtaSJJp@}{mHYd4bl7Ru_4#;zLc-~CTlZi2 zZe{pX%Uwx69v&1R8~}h6@+L^9N@LkA*j&}9<N0!?Tz=@4b7+Y3rU}5{<OYbxlI;4} z-IaaKuvMy>+OVbA(0>G2_RVm6HWe~;K9VY=hEt-bX~;mz*#e~$T3B``%Vt_N$~a(n z4l|yw$3+Tr)F`=d+!lOT#vR;G{P~zr5Vp5*y<O*iX36T1nA&Nk+{6Byj0OaH*3AHU zIWt>wvlayeK~h_$&DCO1aLI>~<-(BkEpOLz3J_#v;$pNKwDyPly6=2}xX{+Qc5T`D ziC`w)S7S>L2nVJPf{}@20MI0bZPHp*RRI5Y8c7fvvbqXg)m|m)dY3Jdx^Tz-N$$~q z<=Lj$e=<$1eP-576wYTRe9#`O1i!AGyzY~o?g0Hw|Mk(FCK-h!Gr$+HA<oB2#%KPA zk6R)F%%)}wQdS;37lB~GwbIq?=<Qi{HMkZ93TxhSClwUlcPGM6@raaO^F<^H*EI9j zGo<|_YCviIEBC1u{x?A7E<g`A4G2%62GOX)WnaaQ{_XOZQ%_7yK_yc2g-f%De(bcG zo{dL^0|C;Xw(d!Kp(f>UM7Kra!ue8HBloU7CVOJGzX(6a8a!swy}OJ5_v<mYjk}p+ zVmP&=q#C*MaDGZ!K4!@>@lB#MmWc|6$aDkn^wKE@!j629dc2=7JLed$5PVkxv<$4a zA5!=3h1Fs|xTdyybxU8qk!PI(par)zZIsx$Mj6TQ!LXkfeB9bL6QQl7Huyd^(od0x zx?VVhw>RFVxrBx{2CS;1ZD+E7&!1cE2eQOAKp}_gkz*^P9Z2g`nptI=gN4QJa>ywW ziv`Z2|1^J_7jcgG`MTXT@E2f`eIz%kRQ!GvDQM&oaCl5gRXbOb(Dh;T#PyoZX;Nol zMz-8mNBY{0C;?bG*zntmu>Zyx#tY4$*atSyVM|JFKseS)Yi!9N6QR@QuIhbi-1dX5 z3D8&MWUgZ1NKcppaOua8?vs4kdk_{t?vA03c#Y5l4r@lCC(vkcr<aa~?1tr{JWlNF zM?_yrON#(R&}db^<g{<vClZy*SoCK(H9MND!CeDh@ix;S@X93YC&$83hfdWIY1+tm z5rOC(s5(85NPopSw<?O)A8$yv5Ogf%dKavG_d#4UV-o^_@R^cAAj(Th6Yf{Pu}^$s zNUr`lBD|z!$wlfjsSh^|`-<K78xPnxj1zXG*!U+HXXwl71m|abL=#g{Ro(tPqvSi2 z1tJsrPR=Kf;mbfp;eyz;8l2~Q^gDo?RkENfR2J!mkYNGLK9Cp`OJv|JEqQnI(GWZH zaL1iigba0DO|3@pfx|<#B&?5BdW$g7ezODZ%BrJq9J1I}%V3?&nqWp}2g`Zjy7TA2 zD2fxn14iBjh_8EbTapY3Yp|{M`!N)thlzp8ff8VBAX=Im0UCM#I!aF@VBS(-p&jiy z=iA`IN{gSj5B0AP!nh00l|S)#>Hb#86`Q@3mv0QyV3nffC57up(M{oU1kesZpHrj% z^h`zSCy=iQDv13><fP?eMDedPsqJI@(D+%jmA4y7V$RcUwEOyQ<;3O&_mobxw6vo^ z&{#{5o=5?V>|1dH^K)+%Rf-?N83yDuGapp<zw8W0u>oru(D+UQ8eda82n2ZA-;Fp! z@65LDu%O*Y)&XjzbTa5#(A?5R(&celAqrG^8J$EZg@v&)1=|}G;QsykaGr2z)DJMS z7>YGLL?q^?1LE%~^!xkQ`_;EaMok-IO+j%Y6nJTkqurOj_2>VDl#qm9##2&QQ>SSK zm_Mljk_?6KClAm;B=?1`$g=~jn@_LIi|((kIVHRZiI37@;MG*j<sQAw5WEQ0befb5 zo5`t`=-ysVK+DVK9&GdVe<EKfCR*VZC;n;Fj_oNW$OWB<*Zv*7TzPd}Wr<IwJv%Br zIypJn+uKW3quNJlDy*bUl}}i{>Tjs6^_^S@*x-~|3?{@X9)0YtylEA<<tTBzhYuY^ za+i-WkV;6$*Go?RDbmAetWynPyQ`Z)H@#1q-gSCi;Lo7N^M&(p4_UAEQTv8}d2JV5 zJTJcKMH@(zoc-PR408){Rp6Sl-1`;LOAUw%H_H(3KCr@H<d|F!bWe)}9mrhGwRIlv zYPJ4lfUrT3H6+O_J?7vRvh$AyC&9$+BrKA~hBRvbJ?$g;Ua#P2wY+m(`r6UW?JQbe zdYzpwGmss&R8FT#s@0l*j+2nPEB6CUfKp;yWB>|&HIh1d^j=S}c=F$X^=UEAh8QK` zsS=m2>ai{hnCUb?Ce|j_idrCiBy-&T@hA5d^6ZVkmB;rWz_gZDboHc*6nheIxf*jA zuz2`b;wpkA!_Zyl*_T4kdq*^&%;W|HqGG;`>#=iF<jj>dowclpq6#pjFV{31Rnzc= zm}MO};}<fZtAxKvqw5qYN8`%dXC7c5QxSkqgvRR)8o9j09XEX?`KkHK`Mmi&0;@#s z;@q4YD=i3|R6gdiV%gE+b8(K@SSxV09bJ<kFS0!)R{=;~f4rFiHE(n6FGDD%@>;|x zC*HC5CKYBA-XVc<i8;krqS2lg|4#HTVogG=pL7Mg*iTJqh?yqow3PY;iO^&=^1`N# zGh0YUgE7OVi^AulLox2NL06I+CYim0tD%B_mN)ob(2wy5_mTsIBR=0K3&?8eN*PLG z_J>C~B(}s1@~n!QaHr7l-$@=2($CWfm+8C;yPPTLx~}yI+99=Ap@LK-g{>0+EGrh( z$*Y9|j0zWJN`TnZN~Ci38qET;1yq4rcMKDIEgyab0LWqN$#or9X9G&hGz-Kq??2p_ zGo{PFUH`uI1UfFH6YNoRBI-B#GZS0h)%+}7eOkNNl4;D@TD9#Y#jdZB{(LI2I?&-| zv;*LN1AHB9n0T@2T6eis5cu=k(!)lc=_*02!HcaA4_X`B+1fSD<khh6EqgW!3vJ%v zQzr3<)~c8DVAs?{>XJTa*-|8_3|QeU_m|JR&*hbBqklwKHnyU-+qs?xeP?$?-EzxN z&af}GlSY*&I!Lu-s@|5aNSjPHAC3llja2y!v&-QFH?GETVe^kz;n-ExU{VHY`WRZc zCh<~ei;#?spNQaYd(~j!(>qZa*Q#1i&Bxn6np;&0IT-LnCGvIR03cPD_h;MHXoW@| zq~4U&<0&JAW8#ppHdI4EF>s@O=^TudQw)dCj0{%%savrf>wLdwKU~QB57;R|OZXD> z|9-#uRq3+PnM=+w$|aGEf}ANeqbUCci}tpaVtqYS59^|;4scCkr%pWrst6{lZ~3tp z9~GrBwmkkp{#jhCbg(z3YO-Q0$OQ2I!S9=<MGqW7P?P6?+3Ec}T`0Q+2qZM^<vhq^ z`*8#eY{3}s-HrLyfx!pW{WV72C}t$^y|Uj$>ItT2-lU-x64+0gtk1}iqmXKSq4B5h z_uX|~N>?#Rq}H@KEaNd*E}vPYsG-inImWfiZ(B@6@-Y-Um@BKs>bSVssH>0P+oJ~> z1H%(l_>Fy47WrO`+!*{-#+IP9*aH1mRrQS4e?1$*PdTa=z?*EkTR4|tZ|S!7qM4)T zA&AZ5(cg~@S0fCepGt1SVGjxtm{ZE0!@HGxtI%Yrq`v<NlPvgtlqNE~q)&%S^yXlk z<O&N{yI!1`NL`;ABd*iA4s)g=#>4&W&1O%@J3)lD`Kdf0Ts+0pK5->7UmWx_AEDB- zWCVq=Mc$C^iGQ7K_&wO3?$z+!#CCMD5oeCGu!7gJeS)GYA5!PpM77tK^S|kpH5r5K zhB_en89DESdV2~MCvA20a;VbUzV`aF<ltXaN*4{kd!||q8YrBfXiypoturC1p@ADx zWdV3O_5S7e&-={R{!oIQlLU~;{81?(;k?}@aHP2KmuLV$KjiQ@KxH(Ik=wC?z*js6 z?jnA1w*Q0=Dy_+U35Ni8J+hgnDKpI^Tfbu_d&*q<sK}VpU&r&L8NgbtZ9V|Pnb*N; z?w_+pC(>TI8O)#vBy%8->saa{+>0sH%tO_yg6x2Xs;%p?(K@4)psaglzg37h^N~>q zO<ex@+C=BtxYbB6dt>~^=E+PEbW!hjrq$T=JIHrj^xBa;f0$q~&HBj1hIjUTcfgI@ zo1aI*M@$#*HcPf*UXhwZ!{{CRrEI>+D?4MxN0sb?G52fGMr3BoIb?b4f^F56o*Re- zaiE!oXsuvW;tRDRp3=>s>;ngKz`Os-3lG7&&dd)V2t@1T4i7h*>sSujD*t#}^MJJ$ zs<AU%h4y*O4vBrMDhe_Pk?ZH#4jV12S%8(3-_G61Bi{R$BD+1|D*m*5Smgngz>l7S zxsTJv2n4Q_+e~KK7zLK&e{3fZEHv*LvGhpN!d1*d$ng1V3V=mM&NEH{f4rI&l!bOA zwUeisLU=umX3{~l&|Rary~@oBWRUpf9Ee<PBtZKz7$KB+d+OFIBa^;dS#@!i6*@ZA zt6bQTwi?T`A4-Lsk8EzJ=tfQdYIlEMR=G1f8=t}`wCkM7Vn+9+x>J^7(XSR-#+K9) zn`^-CV)G%barrZMnL0)=INBN#Av{>>n17dFEmj)WHVsCmYQbSye{u<-K+9-gw&A|J zFA2==e6V;dS*6LR=1_~E0suG+y}J@-nP?TUC1glp`z$PYMaFrxzT}rq$HP)4-dBlL z><4HZwr;|Dnc>7Ycc=Aj!FzNqi5`_z{U?NUJ591R)D!KTT6fv<c{-H7HUTphJa&aU z*t@YjzfTw!`DB=8Enpu~rwV25l>fb$$GP{?tzba`)76TBvL~VFsCZ#mho_D$`Y`VS zU`#Lj>k;WTKf;Xj+xKTiX^ypP8TP0J`6OxsSOWo#bJCo9h?{VZ4U+e(b$eML>obI1 zpY~UnM(~jHz7|<=JD^cEB71U=HY+}sPsAqfV~Nt}OVFgLYwZmHQi1%%kpcI1d#i=` z8D@93|7zUIp_<Avu)pEY+@GQ5Mq^1o_kqepV9#yMtY(dAMZG85eR?#-6x#i7q`sE+ z@u&)xFiGo`F%5xL(>fh7_;a+COIT=VJ<ezMCqvizzqs`Dt>#8%>XI7#AiXTND&=Vv z-y6tW_%dq49EYNA(tb&o69r`kqbJq#s$Xmm8&`#XySsBnf{BZMA#Jh>zvKu#v5%IH zN?mt2e5@khNwGEd10#tfsjX`cCIh9Ug1kP|{N)1_LMf}vX~6uA2mx^&Rx&T020UxX zB0H?Cs+qoapcNlPLek6QL%R36w|N=3lLru1H<VX+MQ(CO+^QgvfLluZ%-o<913T^K zLhrmDyNFeDLZw9=ms!apiS7^NWq-{j#99-TUg?m^qK)_oPNubBzl5V|c$;>B{1}<Y z3&&e7k{H@_izJ|)^<M78rF9DPcBt0sc4u0`o&JmL8EFLYStav-@5jsgFYd>rT;9dD zB-Pd$W-Y!RxeJZyQ*-XPllnb~VIlV04M6^*AYT%94-31#nr1oc2tf@tAO~7oTg3r) z?%et9JLh(7o1xDf;O^!&sRUlZo5>$=(;X52+9?r~>gwv0cFZOM&m{9-{Y04DP}X_o zV?qLANivw7lR5VSy|Ss6EeF`6R-eD|B-*k{mgTZO+RGwd?<-<!#q6;fv0Kc2I!L9s z|AyGPF<)@8I!5f!@;>=H^T7jiI&I<cvyKE=X6r()2z3EJSo0JD;#EF*dX$1Ej<TlB zh9il)MQ*GB(`2mqohrz?ThB_kJ>%4L6SQX>0L(WXeIpI&meF1tiWeUlx=zPD&i)B0 zp87eymvkOi*nh*&SFU(m8L}8Ql%+tBn+VF6egIY5lCG-{>b&R~W!s=f*_67YT{lF^ zs@SB*1}kz<iBMfReKN7|*@(eiAAzTo3w1`HNF3L)yUFVyD|9Ps;d+Dno9dy*j53Ki zNKORo5il2W6Nr0;LHtCZgd;Q?a%DNVPBb%R*wsj`YF9}?f2h8t*X6MEooSOED=ZPG z6S11r3ky`Hq=(oee&Q6@XC;ExvlQ2c^v^aml^%Q;yYi)L{`@)M@2>_u3^tomu+G%k z#fr{+^)O}-7!Q2Yx<iBD&;GDQ5@Ld-KU%!jjeZ_`x4(r$;HvQK?3RzCbhB<^+b0I1 zH`w{G>^j&K-XG}a@6mN(10&Y#s=>sL#mlqB(5Xf1l()}C{@J`qizH;M--e(JXaUrs z$F@HxnfcgYssEM!rf@{oat+PA#7@q&yKg_6mvW#ha(H4)4bZ!KI(tB!(lG%U!iqc9 z)eyVza{W8#pp|2i)SpZa`P*hqJezrWCF9QH_C4;keu24X#?|F53&Fw<cgb_u;qbnw zhYA2F8GLAxRUGu|ma=LhFC|bpN?}@#>jpJ1HEpCy96Qknr|``UP*Gz^r@}miHD(C- z7TJ9r)V;B9d;L@C+^gW>MxYJ5FzuTL)HMEp=^bCY&NN&6$9MrC?|74NIN&*TTaPfc zY%>rDXUGz49!z85<Y9DrNEYk6I@w4KsA(Y;BKP-04iDvj&n?b1Am~v$9|l4<sjMe` z<|n$>TiSjH&Ml(eXvr~r(XairXICdKjp$N)+m_wW3+V$;q&UY@#J$N<Lg(rC-8o3e z;1>!SzN{U+y*5P7W-mtqbhJFj{t7d)tv+XmV&~{b3cm>B<r$>KPl=$JZm*E*>h3e8 zh3hxnpX%PM=%lM&+VH)lM!{a@nwdOR(F~QBHS#$t%Lb^U2Jgr5+S~sqa5D4#+ygch zghJGuL<U4Yq|G67CQ~wRV5DaJ7344>jlpW!>0Wzt)@N=Brz_o8Z8jJCnu=)#M~c6x zD0}Uk?Y5Rb#|`QlXf>MJ(IjUb&;Y1W&rn+7^r=8LwcgRFLGr>T3NcMXjwH&a(SC<Z zYR=`*Mw!e|jUmoPRmQbi*!1+{CJg4)O4P+*_qAQB!r^yfNJn<arW$v^{Ejto=!3^; zM1;5R4jqV@dLB8@sDXMbTu*5T(|wD`_SsOyg5QumED_eKSA`+JJe}1tG%14IQtcIJ zk@J?xp=FUH#~pHf)29w!qXOKlulnGFEZFZ8Qaqa-@Qi1bu=Xc>Sh#rWH~%ld5vncX z#F(5c+YDJ0uPLbsuo}XC-A-o=(ouwf8K1RIQ=^nA2G6@8)gzaWknx#%WWT)~sCwwc z46b}!-s<umeBOLG(m4&v_XPip=am}!H)C_~_x}$dW(VtcxiEKS+v0J=*7&PXax7j_ zoj+3DxCUw5r3ufDle;}~6NGrd1G<&X=mAg(vg{9NjM9U8JxG6%uQOMcn}6}4-lZ6z z4&;Y2uDwynlVRo*8KYkbPW@tFU!;?})Wt9^hvz>3HDFDs2s@f?>$;q{UWqJ_PI%s# zqVg<<+4ANELn7Yukg9+?kTa6K*ac=glXoAkYAddMC)m^91)*Zf5B$pG#KPsOmJ&lL zxf%v}no0+dTt$@hjXd%BA!sz(bp%vJEkysm<-KqU{yOC@drb5DF#tfz_5Zy9L8p#c zS9p@?mt=EE2^HVj4Mr`Y+E%I2jM{m0I?yxVjR9Cnqe5UKIpZNPiR;~pipx=UB{21! zJ>2w|699K`QZ)!Sml77OT{c<>8x34jxGl5!W@Sn7RFSz3CUGeO`b;uVm}Q%;eb&$e zlfC)K#LAtA>C&If)z^7pc3k|9BPU@i_y6iq$4eg<Zi0sLKyD$ujWeY;MeapQmbUZs zI{I|RKT%1zlj7JjZk_gFNHMBn_he8v`iIVi*$c8RzZc?p|Gukw{YcDz_0@3kYFw!^ zOR9jNpyTBH&LwFiPXlFY4&_NHUa9v78P97bn(j4xM9dhlz11||=B)IDXPlBdu|1gv zg*U)|M8f#q6;^X6^g?bMm`OhkD7&3kWfk!R`C8{Gxnf$tQl|4XuB_>F#TwjS6U1?0 zasXpAV7sQ`AFS%IXJhtr5Kda4;#LD5pwwCgWpCl>=(p!#Vf^BW%7YQrnM;q>%^Gh7 zibTal>Nuwi)QomJS9xSVxSKUmL77Y#6snfzOU*&oJ}xIZ@qkkJA;O~3Q`MBpOnf(3 zbT>9$KQp6t*{o>xdE6S0jV<iG!F438p3=dXm0IF5{JKe=+4kd!lKI-I*CSJiJ{+rJ zoWAi!dZ7BhwGGXdI8nH4!7Z+m0d|I@285N;1up|;XOBQ!QIVxsqpMBuB~yR*37XL8 z{qpr1eFc}9{EkCXE&F_DaMle;zBJDv8=5%aeMWkNR5H)o(O`yNjv>Bg&5KG~Zm#uV z!>cDNHIy9oK-L61MX+g~@xvnfq1pDT?#)SDCn0&^@;MTi3SB#i=j$C><0ls%D<KG$ zN{MWwQN7g0l29%EtLK4UiQ0U>d%AD0Y}2j!q}()Wo*0=tc03iWNlR8;ynTi#T4Yj$ z@JwA#@w_s)qYKv|@MaE?k>J!0#|N8>5}}KOpeuYiOLa>6_>0<XLk+u%gj{#^qNe7> z`^8e03Qsj?<1_9-byK5ja|=tCh%W!->sXO%!pzo<-U+8^rSTNq4*ZRL6nXMO`z9kV z2kd1wn?Kv_BwjU^odL`9Y=)43#phH_L47>n%~NJPnQ7kjSn4TCij~4aeP6z>-!T+{ zsUB>bdM#<98!R9s&5}dbByk|R5>J_G{7RhszMT#Y1vo(cV?gs6n5nO@?=2baAkD2a zu&<*+e(*s$`n;>Hi|-xf8%~F%8Jl+;qLJq{lw+lS%+gap5h`z`3`Mp-<zTft!ST9$ zmDB}?be+7zqb*QsTU3;~{D+(QYpKOG)<0kIv-E+pQ@x<3+r}8pM8No_H6l}8hry`t zOq3^RDbwVt$@$S`Qa7PB)4WDJ1VMmk*0zYV65dcT2eFu@8N{E$VqbDyO3?uvgv{sl z&B(RX0J$F-<F&ZHs;Uef3G}{hBjlDqvDq1n;q?upx%Y>*SF#2k!?T}x5DQ;wS!{X7 zJMqsu+G)VDY(o24ZHT}0e+S~eD??+7K<w;_x(w_qpqeX8F7(ic=@gJT>zN&^)$dTf zA@*PW*P!t)CXspMG@=2NG0Q@tk9mJ??+n`9n|fEVy@@RSgnMiUU}S<16Cxj!0+Gtf z^y#EUh)F)K1Jrny7|>``%IHY0{w_h|iAA+#?=v0VuT8HbhdpN*g`%(2!#*&)rg`-6 zyI)CIM1Z&3Otf^2*2sgFG0*Dw+h?AM<`t-#s0jfESc%kFCwaJ@Rt146o}d@cTUIEZ zF+PH>^|16=%OS|0i%}Xd=*A@n>&U5!9I|^3gEU2r#cqu-&#=_V3Nkzol2eV=Wkl0` zb6g)~*LBKqOl%MwX(ZSf8PlQ+9{6s_^oj*BCtD}0!ZS3>>?4Yb9a(xxUX7WOSNN3J z1@s+C8;A@P2Y2@`(cVntJg^eTNj|B}!kFBteJNhkY{V;>@o89&{=)tQbeTJm0d;WO z>tO$WqOA9Eb+`}qS9f?{6IxW|MWrqrj!_e)H8?|8y=Nl7ZCLq^?k;^se_JG7$mS=Z zE`1?2^x89v@432lrd{u};6!SNpG4i~3Fav*fzF?NHDm2!Pj#fzq)P|t)(yqQA?B|t zSggM;!QQaMi$|}~YXzR0Oz&<y(@nr`bD^}kp7Jj%=WyIuJ1I4CA6b_AEpCJk|Ezgp z=36lWXT3-JJF~|cu&ndj=Hry7$Yb`SZ-IqJ?aftHKc8ZMsVc0`hAnNWvbl^(hb)W^ zLjSuXLixx>M?GrEkWK{3V`{->Xn5-5kjT#%&h#qUzmShI9{S>ATS=aMyvQ)@(``KG zFwg;mdi>*0i*7|lFk490Cd*Tg_hb}I4gkaYB!_`<oXlDrLsDPhnG~DEPnosQm|!Xs zY7s2c%Kb1lf)r&!_`)G$C#xN-^*MW&RnfG_Q&$xpvh2p_8xSk@LHV}T8^a(D!Bi8& ziTjZ$JE3>$nm-mI1$5eU*rPht6v(YlJbu=czA#-5%sO&)nx|ZCHke>w;2b#kI;htA zggVDPagrFac-Q_Y{D;(^GB)Yr0~aaub{Sd>S^KuF@(=Li_kTBnCn#T!_cI9$Y<v_4 zH~zU5i}`D2_c1QESFxZu^GzKBY`}i{Sp`1J#|YD;;jv5UqZ6SA`<y<!5dp3+a*XLr zcJvg(4vH{nS6!KB?@W3>v?|cUY5sX7$^H|8tR4odp~zFxwzq!X%k}ep&U1P5`QVX4 z;cA4_O$T8f+DLx2cq1KS<NXlD%u!u$>D*`PjnUTXC4G8ov^;$k_aD`n*5wP=J@c&x zs`9=&CoRn=#sCeqNc8K>U9n*I99>#vzW8h5*Dv<E+T?*h?da<E>6B#ni(_#g@}=)Q zVD?3|yDVlmk|<XkEy%OnV%AENpVrTmBl!)?E5E}Qthd@|#2Av{y}FC{0O2_^#<~s) zi2=^`6@7&;$IR%1FIjdSK$6LA@@?ftg7syR-3n%Z{U&W{7;~|7Cx-@>1PHiiG-3Y! za+vG`*n^&VF+xDll+@)|U<T3}G)(W;OVb2|N}^YT&2F>R0c}1Hg4dyg;35|!Ghexp zz!MQO*T@64bY$T`iJtlkYSh}5Mw09cw!Fbj7AiM+zLMJi%9GucY>`MWg&e8JNVn3v zmQk=Kb8Kb&$e^;W!}oS@MSWZpe+=)l&uu2k71@GW3hYcrSPBRWFN>3g1C}2kNSKp_ z&wMG!pc%jGP9e%OW?^yKUUjSiv`A|=6BRWU5}EQWwrfa8J0XERzl0mOjv>;XL0$AO z1>azp6-Uy5kCkgqQOR^T-s_Imh@f~@z&tP*Wv89}e3XfYv-4+#I1hixgYPo~!3OWr z-UREqtrMeB!ljm!Sa9Y!(q1p)J{wfw{+yVC%CL!`JR;a&OVbqu(e-^Bz#I<egdpgc zEZbb>*b*##*CL--y`J%JoR)fQ^|P$8<h*LbZ)Sh#V*plQbK_YMzH29UCo3w4NnoXi zMrBg_V?5c@a24Y#iyVbJ-fH)~tD~b6@BXuRWX7Q@=8Zd~pz%70UsBs(6at!ofV|3| zLlx4gpk;${IC<RNV9$XzeWlHh$-fmak1V4s+F^kRrn)-;(t4wu;TI1{(kYjK_6y;# zl%d#yrCZ7-1#L1b`LH;BQugT?)f`Z!PU87U{l$Q+y+(9Th3<R&Q}|@U&UtH|#Cj9P zf&wpVLz(H*DE_(fPI2-i-^z(Vmd$ZtY=MH$3x)hm+s#yapt3RT=IhVlCrr{Ajv0j} zFZ{V9aM(NlM<B|=VVYi=1)<;9F##XD7e*i}*Ho2jK|#p)nh&Inv;b}OCvdc?ZN&co Df-IR! literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/crease.png b/release/datafiles/brushicons/crease.png new file mode 100644 index 0000000000000000000000000000000000000000..ac057e081c18776a9510f11c27d11aedecbe0bc4 GIT binary patch literal 8638 zcmV;vAwk}WP)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NN=A`8ErE+7B^AOJ~3K~#9!?R<N%UR9OnTKk;u`|cwNxycn0l3WO{5Z)nx5kmqA z&_Hl(KtM1&v<Dy4wl(FHBWg*v+S=ozpsUrcnX2wCXKWd;b?lmI+i9m}MytWsFjIgv zB{dc}4UE{@B)K>D`_4Ig@3q$avG(3)pYL9j@UU^p1G&%do^PME*W<T-YpspDcI|>+ zcs-vNmCXFWx4t7HOzg>zhQmV#pS|UlTk;nf06;8=#X4J6RaK3wb)Wjg$H!mfyt7SH zRdrR3n#Njdo%ip0#~s}lIcII-ob}Fo??%JLfB1)={gXG`^p&rC<uiYDcYKj;oO9lL zBJ$4t{ZD>;{Y|%`DSG|E%-VH-c=sm_0C?w!2t<fze*Vx6Z@QhC0SyayB4RNB;E9;X zId|y5v#-AJBJ!SygxNXgtaZ+p08m%e;e~~Th54PkE=FUV^WOWWX_~sOs>)hd0zj|d zTfbq$ndfX10NXS~Wb3A?hNI!Iu50IP2>{d6D+d!3)><MWB4=$~j}{Lvjz+_#shzd> zy!P(-T=?zpe3zJsSy-B;S(rcc?9cxG?eF+!-EA?Y0D4bVRac`?(=^W0?|twC9W5Xt zXI)d*wrQ%mvW@lLOZV-Jv$km(>zs9tJXzb!A3C`A@+<%PYyasBfBt!WQE~H|_FHSc zx86JN-29<~mtC=sS)6wwaOvJXD<=EKc}L`lh?$$l{`l!9SwsL34Kp+G*3(Wm%&ao3 zM%B|#{+}Cfd5d?XKeX01))H~q)b--wg@uKM(QtV6HP?CPh`hD7uB*DLZPR$~OJmH+ zm8<5C-#k6NqNyA5<h-j!!_jaw8VwuUIOod2#6+*xFN(6ND(^j!Z|ZtDTwGjStn1n~ z);R|+)!vo)H+%N%dGCAg91JD|gqexFbI#f3-S2+)6Hol;7u)Z*zVi?WGcXgdFf$2@ z^Xxr2>+9Nn@UGvjhQs0F!uvk(LGS%@uLyxzh}aVmdG9@WPu^Q+z4xxM&N?CjG#~uH z`{ob)^zKjpo2563ChlBgt!<j7u5Dd6P2Dt&v(8!9*ruxM(P+51czAyP&`~q9pZxg8 z)~uOXW<}0gPhOWo-VqToktbsE-r1&JTsX8af9RU)Z*tBxb?uz}+`s+2ZJMeYjTR5z zbI(1G{qG-^x*~m|pjAxF%*@{Trmhb>`|QPgFPog4_T&+bDM}<lLx2cquqfX4wzn-F zo-YBwlV=KlECRy9MAkNk4<G*NPoBB<`Zo$d_`Qf)5VLqs&N=72`lS*8yz|~$XM-EE zO*0xUF3iuLzvIFSckU(%HwjPdowc^9>!zt~(=<(^9!77ZCh3WI&>yT{ckJ5P*`hGS zVr`@AU}o}OJ#Sst)o4`LRb5xQC*J!K00t8igNezqEc*RHe=snGA!chG3&*>V`fO)y z-PBF3A1YmxK1&GzrYsB=MPUTMS_=Ro%q$X~C^&WNth3fOwrOf>!$;?wuJfhylP}3N zH#cWqs(ZE8zj5Qn-+9-&cI?;zL2Jla=e>LAq3?a@Lm&CY5#YZ2?%y;wCjcS<AR>@9 z+dA9SO;cB+(eT-y{p3CGegDsUw9O};ghheIARsd`v-jk^ciw9-blx*_e=zy`AHM77 ztjGW&fDu6kVOIa4q1Jlmymw6Gy%!N<%HO*E=I4}=2yoCBR&S&R?7feMM9eGzfVgh` zhUZ*SkVyLL_HsnTthXleo;;D~J8r#U`5UPz#*d!KhaeWB68R8%>d|PlxVX4;&u`p% z>;7eS?VAsL+c_6~tU9J}Q}4Zcuf@X)2M-?Dd)XDee&0LS)OB5tMvI4Ud-HF#yO!2M z<TY^WKNevYVzy0l`0&DYH{85p)lrBB08CMoy}`uP^q>9dpM3Vy_k>4Fj)sVth*gn< zh1KX?RgF$RYa5yZ0nr#h1E^O~lqF#K@jv*8h#01bNSH*Jg;|6}M3{)0x;}W|z?M_D zf`)rQL<4{Tz#_~503vwF?u!h?y8s9apakvqo|>jvSU7akEpKK4771<^^^bv=NrGk| zq7i+N_%eMkPt-K^;rT;FQ39f<vkvb8BBIjZOv{YkrqxIy?_4z+%^x~=;J~w2Uj2H- zl^kP3d~Lcy$S7481OD{ZHm<I#!wd7n#l;(L+8^Dd-bHPh^j|asVrBp-iAY_#`p~9n zY|~6lO<!@<J_cY<EKE$o64cu}y?lVyo`^)G6cGSHz@jLorl!`eon3$IhKY#*GkVo5 zVNqn@ovu87vgA`dl@bxlqAVs0QxsE^(<@f4?DcvqLgbQInDs8++QwO@$VxF;5Vmkx z6ooMc(e(TM{$KzI8oS%OP_Q^>tp-r%tUh0oxrmf#3IkvYV~ha-@+1NxEJ3;)<Ew6m zZ5r#H^Dan7owBf$1`rScPy~nx7(~J*3v;kT=X?m&jdPm+IK@%HwnX3+71uUx+GOCB zbg4&pWnFE&Ua?}uXFmJc&6`g!2GvIbA_yP=s|ykl0A?1D6fYD=d+)4mY+c`f|9yY+ zpa08?S`agT=X(zYCkLQm5QGsx6mbHAdbJ1%VlXA|yaqkzJ&_2SYp%U+-_=*!y868j ze{^v;e1Q@|G>Cu#3=9Y&Ab`P01XxI-`RA+QBqHxaq$eU`5fL<Z-ua%U8h+$spFGk9 zwK^1>I)mDLa2jfs!68Ps7@()R$FQuBDF}-IqA{i@dxQ7C_g`#2ZqpGjNJAkd$3s4X z;jpL#Oyd9ElZ)QWGcm<Dt&ufGY6LK^f8D;<T(IrP7NjCk&=7ZmIHp?(F%c;=3IHKt zAn#oYD?YM1is<X6Zkqa}&2#IInLPp>iV%dOS7l*h5k)phdy>-?keJDZ$8gSRNO0C# zYn!TSY_sa9qb|SVDkZsYzWwc*1PS^3zWBwje)Vh4x#wO`i~(6>XBqn<M0?4v5E8ui z&P5(+Xs~$Qwbuhk)GZbfKvR^xiAh7=-+c4_8?L{>TI+4|!yo?e<Da_wxfVnTUuZld zB9WMpGJ~RL(I^#Qp(pR0ZEQ0fE-oHkxc;VF%Cc0<hz8IIvIq*IK`e{`DWC|T2?6lL zlTZ1~r~lB|=8;Dp`P{#|7XXU6xw&1tFX2`~9RQ?q$-z|smCQu!y|=be=;NGw<Nh~; zDHOwTcs+#wf)5FQPAc8-E=<I0W@dKnyl^-gmH?2gAbf@>gm8oGw$LUAu4(FOI9!-N zw0dUEp3ARb5#$i&L1J(M1jK+g)qsQ{;3Hv?;JO3=as9gWB>+fJO%aLULj;5|z7Qb& zSeHW9Hp(n6%pbg9$7_#2;iLq|MSvqdkAELm6MVgRis;CD^%NY}RBARJZ-7y6Io&Qt zGy%=nW>gJ_hZje~;T!kghG_H-aXo2g;tg7$+(O@E+Qbp&iGYZ1S=iBN;ndoeBnm{A zVykLYjYdsV@7{CS(Z?Jkf<dk<#N6F$5e^wi7K?*F3uzw_`S=QEiB^_@ZAxEK`gsf) zmOKH-?md^TI_f9{5C#!q5td+sns>xhiUI+Wxq7|1^Nu{J-;d5Am{Cyb$e6}e1TVlK zQWQn6ELW{weatcIjz0QmL}LtUcBG!7y|S(1j7=j&t|2fwuc1)Azb7IefO1-p+JiBO zSQs=#S-=1aQ<S}OVq$V)Vq!3uD0`&|bbxr`Y*T_or94SQR5HvhU~(x;I~xK~h>65` z*kUdLz?h;e0iXmCL^MTVjOq1yW!Woxy`m`47!e>55#KJQl?zCusU+pn=?YOftV-3# zIY-_n&5F^Jf`p2qP(*}?#u!~tQ4~c{=%eG<3ILc{A!HUtQUr|Vqg&!5KdVH73+#pd zLKP^QTii0ufY6`;gNoJwM1+`75DZFu`?v@eX_ph@U9QLhmiRn94LcNMl&F{J0fN?+ zi1^@xe;f1&5D|leh2&io%m#1WE-bE2KkI&hqFru3<Q^pWqn5`^>AAuRUR)f$!uUqb z&0aZ+*|lqz3A^)(xn6OJ;;$EUM1?QCR<B;YapT5I_Ut)t`}WNzoWRVgXX^DLrXeC0 zChy(i;^BXP?|uL68{Zhdpj367Z<w2#d-BOA0pQkKZ@uHKZ)FyP$Q}0+z?C3?KmaPt z(aUN*#5&v5_2_MH|LqrPW#zto`)<7Hrhacg%!ptR5CK`41_nU{U|;}502T&8h0M|8 zNx&Rvj4A*4Gk^5;uYdh7|Knf1a2?vXX>Kr>0K}p&h(;+}R0aeMV1nzCv6h^IPhtm^ ztq{OnyLP?hw*4<ssSO|s7(@ibz%-;BJH}2$3MpqIZqrDGxItKmr)=4B;~TDdp$kIY zBqf6Yv!sb3tS8nS1ENguh0?Amc;y7^&FQC~vGc+UUZ{jbP%ulQM6z6&0xISxmlml@ zO6NqFB$Y8$qb|94_h8U}Aqx^jfdD8ta6wukkc{poW(rFnA_=kzuM}3it2T*fv;y(Z z-}&|<Uyv5f1VeTg^|#GHV%D6LnT16Y6H57|NM3`0P}C5C9p|6>0=5iN-Gw`=Va+Vt zrKtK4CxuqT6XYong$r?Ic>eaYk8DAaN(jkgC%GT5HE}H0ggr`9Y+osHV})X+)9*O% ztRvg9j6uj{)4pq4a^i>$yJ$Lc1|g$UhRs>0{VK<AT7LwwtWCnxYT~0yPC~SZbBrR= zwQxl2UaJ_kZmg|^dB@J(?A_X9Pki{{haY_KThAl7#*DM&J|b6^RvCZNNeNrW6TL$y z(A%b|Y7su?ybCsOK0&jv4Ra^#-Mja9-uc_}hYo(|!yo<eGtc~-B5uYEFhiFA<tZ4X z#1z_ZI8!4ca?V>@*HyJ)!>03hye9E-B7nveMcM0595u7{6QB53O<jNC3-|ulZ+vt4 zV(@YbBuQ+NM3YMhIvS+uzisNKs?OhW;cIs80_D%3<%vvDn4&1lUfCP;2NU~m+5fNq z_|x0Z-L{;SakBTMylohZ+MUv#)=9(|r)i+A>+0<77i>P^q*$6oNKpwx<TgcNOi`3& zQItim|CTr3{s$lZ&=M<awUq^A>7}lUg)@phuv5BQ&e^&et=q8a)UBtfI09<GP(+KL zFgbBF#-K4pF*!MX_a{HLbjvcE&eFf2Fe>`U>_O6X4#H`g##y`T;yt2OnpA9xD@b`L zq~&3eWX6IY`^a7Tj%^`0H-5=TwJbx;=t~JK2YGL8Q;mjKzW!Q-PDT|(12GBiFnd~4 ziN63uEbe;$dsK%&67!X-t8$-d2_P}hh3`WZ+uFLWR<1f~_3D`<!5}1sSD2QEaWN2Y zAD&fzZi+%<Ss*ka<D6o#Odka$qNL2WLZegDG^54gRj<1S1lwJW_4^<pY*!Pd9q}Ja zTBQb7lRN5+Ih922GB5(>!bvStO<j+Mi)Ws5E*KQyln*41Lhq4pWqL2pbR&_-ty0Im z>iRx?yu?pKk_|bf%&U?2{_JzNV?dhF@m5ijvz4?QS11`I1Bts`1}%eDdk`i506-+x z^hDbUv;nlP>#C|oqtP{Qc%w4HAkaZXiME0Ec~e<{g_83~f>1G)l4V{wy)EgUk}?hN zwDY)W>S|OCho_!?=3sIn19p&G1!UTh3?q?7B&p8S+IB0UR7L36KV)T%=x;)!-QwcP zRjba~cCM0X5MK_<`PEKP%6xEIOJM$Ev>$^tS$Qk~FG@WhO<h%^QB_r@EHA(6YEcc* zjuglvu%u!{EF9$ZTJ9Ek7?Sd8w2!}3rjqjH%SRgDT5FrSscUQP)YSA9`>sx|T;DA* z!%4N<$Jcx^gK}-PNf@9L9?B32Qj>>I?NXFl%TwW3L}rgZdiU;2D7v)eS>jygZ5BsK z<{@t&$~KM@K$A8BBa%*kP`CiZ7&DldIPUn(C!TzADCO&FVu250yi3{Bc#Sg8U5MI^ ziAtnvDs%j$&8mrxEs6pW%d#wra^=cZo95;wCni8Z5JW&XA#m2oSLNCpA2L>aqU^Ke zGehZ|Sy{#jBNjyg#$X90B9^`0<mBY4Rja3_rwUVuHhpE*!d<A8ttU&n<9gC>B-ZV^ zJI?Kbl*0!AgGQh*XiQ=H{fWuRiHXU{o)#F;q*~TETI#HZgoWF@+lTT>?1*nOr!oAl zj!~Dw07ln@h=^rT^!oi?uiqaG%Ca<QAcklOoyrl}b}>n8vy0V&Sbz7i$j@z0;8^|= z^tx202@#bd!%*cY%U;<ldxa?wQG#i57c6md$1I&BlR5>4(0h=IG7^)xF{(f45F+Si z0f^RKj46t;D9fHP1z<EBt$u<g@%j@%M0IOf0#2#i;l1ZjGxM!)3zf8v2hI=|lo5>w z%EFjJaX2C-><kD?1l$cTSq)KQos8R#nV1m8hEz^0OO|_bvNA=!fMCMzp_&pHll;|E z{msohOY$YGBjD}U>Zxst?63!UsuOfb%}4W<&{ieF0H}m;qF7=y4}4j~N9}6zVi|cK zj4Q>Vu(CWu?>t$QkT#v721*10K><-U&tXUlMgsPUgoz~A5{x-XCiL*c<xpUo0!7;T zAkG%_<daXr0}nu6CyUus#CjQAN}vnInkdGwhP2%@oF&}p>+A(BU%?CjxNFz0g9i^D zI&|ojRu=lly+ma7>eVwdGbI4b&(A;g)Kk9}%F-s!nVA{$YeD>qRquW+pkJ}8e35_O z@Ao%u+<4MSC%x)bubQ5oUbAM+?Ck99t7ccOSUDK<%d*#YWTdV#W@~L#RZl$r_|yOQ z>1Uq#$#=i|-JkySXTN#^nx39Mcl-9Or=GfH%a%23)~udcbJVI;Wv|y^epr?be{IJ~ zN*hC!l$oXM4JIe2SFc`k&bix#`S#o20)d(F)oAq8Q%`;W```bouYRqns#k=7n0f8& z?A+Ykt6%-<OE10jm}AxzMWIju(X<3jd~|Gi@W8zxgkJgB?kE7LjamX6!HdEtl¬ zIVC_~0wQ6-UVm`haho@6+;rJxmxJ&VKl;&MeCf-NKmNo&S}fbSbLW*;UbXkq%Th9v z7-o*$nanyK5S0QE6V(QSky(qv5kQPh{V~CYjC!IldrGk_I`t@1+hvtH1+_=aKl<pS ze}3=%&o%%1a$IwBbH^WlyoroD0-!<7pd-jf9T^bqBn;9*gV0iaI&za_7qo+7;c=|F zG}N%$ZuTtkh*expRp^*h7z2W*op$<1Km5Dze8(M=lM}!EC>AOaG5NvNQy?HHCR$W5 zrgpMJbmm)#C6X?jO%9K>CsIZ|X;M!~h>>IBZc!uVS%_#*0N1TQ_I>~I-Irf_$uHMQ zYsrJ7bt&7R38Ek)1EXkJA!9NTP}#Cjj_7*iR3S-ymw`hNp}+y8u6D^=2lF9>pqC*B zGk|Q25iVb|W5@PwXWjS3ul(rmp8VzEph(zb=!OY?MnFe{I!R?p|0JKy%UHvfiHa$8 z+rc6&sTaB>0wEOB#>5MAD$fNsfXagyQ<VLQn{K@B%FFlslEQrSu&taz$tZf4HkTh` zKHB)5^B|$B6G+FT9T3I_61l)*%?K=EXn=(|XmJdIsQ_sJSw}I>JmZW_8`ppS-Y-{m z{c>uMK$p*j*xdq>rm>^jV37`^Lm6$?r7%;QO8S+AkyM>eZ42<NuMU+5(v9NWTW1{$ zDVqeq>FHH(y7Ahnm(6pVRI3bN7jiy~J1UVCEAlc$Te6SRkoI9&avRKIJ&5Gxot9gQ zT@-m4By9;~!#7IQGjqS++kfM4_Il;Zr$J-nlC+P$%r586g2dzWU_0c~Z4cx2vEutg z2ANamzK}3UKKPM_+x0u&&KeSVV(*ATE$Etkd&{zT`Fv2`DUdh7K&(zfEQf@8-_lZH zJHj*mRVebdDF<YoKdC>9B3c*&3$5oTjzc&3_=B#$SDGy+9sj=`d;FyrPy!v07M_&{ zmZ_OSI5&V}uUjj`u|HANl=TwiC1L4y1O<edD@>|Jv?CZ{=m7y|*3NF-divVgwP=iX zP~O7qyz^Rkt*fV>diqOW{tu5l^5{z-pykSv<KsQ?VV75&tQxMReQqgY5a@IzEGb4v z?D&f(b0jO$LwcNdOx}B5v0}vuC!M@;)7<351cf;iWyFK~HgWQ?*Pl3b>#95NJXw`< zG#dTju^&A2(EoVwTi+()BR4UQNTk!g#hGb99F2@t0uc+2&AmX|L?BtCOSc0l1@-9l z@;Y-Ep7qXKJ!_}m@11hWnWt>sS`<d*Nnu%#HBCTl+X7<{5DgiFg_ggkR}|--yZx*) z&%XV(+eGBRfoJc#|1W;<*khwn_53ub8?ZVC7J)K!nwb~?IQ$C2$7DPR91+a;tWMrg zlb09Nzi^zWa@JYvz3ue|=kK_1<EBlDV3`?F09i{N8IXj$feQ>6DHy<nIedeNNCvUc zO_-Tk`_?=DDKiPv!w*05r=R;g5&Z%m6sPAi-H~xKiTzbw<p`;N?5h9)hSY7+@jtnV zh0=a1o9l@fsSC65-k)~HnP;B04NVxogxH!Th=?d+5CzeM{m~K;WbIpMKvjy_7!Ux1 zAW#O(X$*MJfM=d{_C23EqpquO{_O)_{p-J3PC(GMzd+Zu1pk}IqukR--sY1#p=|1` z)u3_p0gh=1>9Isk4?c0WnVep6(ZzdLuU;Lx??Wnx8J<=-7(|vJ8Vqk0y7nPSRC5G_ zhCo!NXbKcTV~`7DghcxN!Nt3G@4jf~Bac4%#V`G(b1v@_3c)LxTRU(JnQMuf5DTu! zGh*t<kd&qb9t}cKvc;gOHBw?dF$}0$Yn!^N>+0AIn|ANH%ovoI7zQ!{+IF$nl7|pQ zC84KHKu{%$2w@6F$%&BmwtQcxa0>z(HA4nCZR=@wec+Vu{r86+`k#*`6XVuqWNgAa zQ;#Tun7nosrAs+-c%sBbcLSF&<)`3S+cb6E)UIjH*?z(4XPlKWO`Z0>tXnin2r;av zZQE2rf;)ej*I?T_r>=munG=lxHruytTQjrviNAZQj3K6-UGD%r=~U*K89O;Ff^cYz zN%NCYE*(xf^_RtC*@8E=PKTN5dgQIU;I$W>eDW4fjX&{;619@a2?2wGq0ZzWE+L0I zoqQc&H*WH+IY_iq8AH<0bv@7>q}4Al(;}3}$_g-M&92#?>C!rRf_&b2o%B*rXVC2X z&FfaLp5bWnh+&8p0J>Jce1QOhHg$g?ogl<nJK{2(*phESu-vi}o-;((#-}L3*yS1K zmRg3SwJZ$yu$zjcQ<yj%6%y^LY3in~SFT!h$)&$BH8sTm7$cVMLI*B%R71vMJOXlV zP@V089OXsaC*6jrg!#kMWEv#x+jX#Ar>_H;b%!Kz(#Ua>I5V-#jirP)8y;^1dDGOk zu1`E=%Z>{#lIZMN<pSKDbk0sKYg?dO(SS|@CP$fxD4(^L{4k96H!#)@9UU$v6KnBG zgrou;kSaQTmz}Pb{n0W8)gg@H2|GTW`PkI8wT&r?i!Z(W*bN(5!#Hy)6M(?duDYb` z`9wfxS|Udg*@y9I@I+d6*##a;BU8h4XFN0;g~-Dbvq*<Jir+=7lXnYct)b!k4pIcD z!Q5JBn~ihFz4oHr#uVz*Sr`%Hi3-VhBo9I3v9r|_=!m85`r+;fQ#MSL_`0zvm2o|a zCYBh_r47$rWY{@)pgj)-So^W5<)qUI5iT4?=kx?QKQ%pl@!reU&dy>eBDStSPvAO| z>HzwseQuo3MdgE4+@bWc_QiO*3wM8*(6EfB8o?yTF-wO_jJE{oq;KgohA^C%2FU_n z6HbQ^=E3B|c^B<I_Sj>?xg>!FZ`qZ!TZnC-$o2_fY_KGond-81ajLe{icCvhlr<!W z1H#e)jInKUj4#Vxom1=Ce4=z2oSZaF?SSzBMdiRmWaX-r+s@lDyLL^;+QbO9*u0&b zfYfa)sZTTlWyvR5#zq9VJ^rU{m!w!$i7ktY-F5Up!cl=;QaE>B(oI&oughyxqFj4M zy$Ubij>$w6qABX=cv-BSJ!Z?+tt(fo4DbMBPQqD1B#T(w#io$@@t5g7BpE*qF3Lti z6K6VRB%J{iy8m10#0lInwcw5hK|UWLT>@EzfID{Hei<jAj4^;v6h*HGXs}oIrdF(2 zw{HE~*;#Bs8@3$`OM+AmDN-Qo;KO{bttHPnG^K}$2g-Z;lVa!WEyeli&R|66+#L>4 zC)XgzJ4Z7(3>dl@!r8G#5K)X2Qm9541I85LRJ_4pYI=HVYHDII&@*m81kea(pddTr zrv0d=jtS}zRzUNZ$8VO-{A}Bxn$3bFC)gQsPdyRQ5#{sdoU2Uqruhv1Sbq?Po)rKC zz@{)^`qX4;5vFr-3sV%mvh4Ny{a(N9_sTLJYZ?b3QDu{t5tryoM5+Pl#rBxaR9~kx zKViJ=sMK~&J2pNmcPnl6MUAU-K0>!&Kh+{Q8~w}XBLdH4Op$284B%@=Lm2TirYMV| zD2t*j%d#ko!W5=31`Qg7IE1;hP}0e#mgH8Q6Mn~LzB-ed<MDypF^G;gj3p=vgGU^W zu+*bvb6>*To$2OICwZ$Bsmoqs2T-7w5D?H5g-#BuICP4_=sCD195SJq69WKH@@^fN zhnn=F9`6PM!Lnjtmu&lD)udxu<6%?-WwNZy?_?2{QWVRQRZb_wb&i?i7F2fx6o)nd z;uq~0vz}>Y&=^&eqA*5BJ9I>q<E*HrQ+YLC#^O{41G}?{vJ5pD*t^c5a-C2c4lkn| zi?x1QNGNs9w`EXBCdSJ^nf54y%*3J!Ks%HG?NEu1m7soUu+WJPY>%YP*r0KOe#w7X zOz6y8W|CPN(7V_t*hm^Ml5Po?c^MRv+<7v`OyZs9fbP)+L4zR7vq(6QMdHMM=_&vK z0WV2JK~(TELK<|@W6Mn()kPLY#$*~}VX)(a(_<q-0L+0A2=rSjrghpqC7I_~`(6%$ z!VxD~fjju=%=&UMwS5Ea?YNurXD%~okg5-2M}eZ6Af}1xwhfWnLFDd;!`K)3Tn=b} z&x#<tgw79lZ!Ie)DkKj;dVcvb87Yk)z?y^Xbk;;R9NHe$(w&LQqnI-5dUB3I191=u zbOK2ED~u?)HNa(rBcVqP#s`JQ)G4ca$nwR08TURUOVXSr4qKA?WIERw6P9iROLmG% z+ujq7+i6?y3~0QPR54NO%DQo~rp-7K7+TUaY-Me*W6mY(C5P@It*L)+nf|N1F_znD z=_H5r*pxhO8@MU!CY5E(XPiTVc7`&=F-;S8?b?+mKL0;V>5QxPiyHX(fB(*ld|L8? QaR2}S07*qoM6N<$f*#qQivR!s literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/draw.png b/release/datafiles/brushicons/draw.png new file mode 100644 index 0000000000000000000000000000000000000000..2cbc80523129ec5c63fe0ae5fa4e242168905732 GIT binary patch literal 11349 zcmWk!2Q*u68xJ*NhoXuSX{so#l+vPRjL_I>)vnb@X$jh(6o08vdla#0(b%K4M^U?i z*i?;BtM=y0ch9-!z3)Be-gD3MJn#LD=l!6stI5L1%Lo7fSP)upL&|9T{}V_J08sIs z|2n2jXq;7$DgZ!vG}D<KEoDw;ucHa4jFjV8t^OTlVDQi~_oTdG?Efc~sz{nI<tDus z0;x_vNq?1!kq%#(M7aY7AmA#-zLOjN*oGxjlQ|32);TuabMyP*0KWUl{qE;G;Mkau zJSe9lFzLl&?o%a^Q6&p5LiJN)V=?sz8c@^`jS7K~<3d%<ZS1x`d=e<;2NDBO^Kk5d zKRwSld}ZA{Hj5=(lpk*S1dw$DIk$(8j(vrtJh!Gj2WOl&_RmVTELx{t*0U&*7d|K; zuC(Z#@98O>{_t!(oINcPTdN~Zo{=o)cG51F(DMl2KR-TXV%zzgcRO-#3x3i)NUx^$ z=)Y$587O$XcV+Hk<B}Hu1bp>$9!$T>9pTVb`fc-sFY|T3Q7x<6QxnW)U!m;9+1f(1 zT8_>=dGGBGO}uBPZ5)*C-N~@e+<x}N?B+=)3AO1PN(b0_T&YKd_E%^M1gs3jM=PBD zz9K*6?2et?=&&z&l0((<s4Ii(*yyuBz$Nz52bQU{R5&)X7ipPRXYa)R3-Ft_w=H7A z80Fc))fN5hwYkX{a>k5|-<`$YU>%rMdb=}Uz2D!S%<nmn81V@x=Zvo$kYfQLt*~3Q ztT!&ktpt1M+xPqXf8;sB?r<}qtgOa(0e|Zl;~M__MLEYeVmF)CeyeM0EMV;Ja_<(D z{9~Azx%vhSXxKUz1c0{uO{R*(m7lwxPRsiD){1BDwX)5O8ZRAhY*aeyCOfV+&P~es zo)r}<{hL)Xh0k3QlRN6C(w+?BAEmL;jaj{GH!7{aI7&2ig;Vho(9_40@&IM*0bg1g zY5}u#1LEXbXC^M-_xqyx`{_-avvl&U2_WEK<GX#8t&|D23a|V4$2<SjZVSFyjHOq? zYz)7A#urVl>^_$ITveGd;cRYUyx+BX@$<1@Ggg{c>99A$oj~Y$|0y=Xd!XXb`Oq7a zDxlyyBvGsAS=Hp4*7=Cs;5i^wSwpJu3G_W#>>lz>cXT!9j+l57^A$5-K~8`9ce2uX z3-5X8cb3bSX4yWZb$fO5c$m7N9BDKr_l#eP?Z5Wkk2aXOIluH!HUYV>!}9~5;-k6> z3g?+HK5ys9KGWMp_nObW$^25-twx^#3rZNzqm|C0o6j<p(pb|UzWU>Ab4jPdVP|KT zlq1qp@ui0-6IC5`Xbq=ppI=^1GW=VvDab)?Cf}Nq%^W<;1R4mn9URQsm#667-klhc zrw3@Ga-(#a*;#g4ef=LJIPymy3!bi|%^r0Y6>;x&>%9B7)O(Es<ix{FpEq*SsbSAS zwLKegXl-WpU#^gl8LD;=|JeU;c^D<?)2m^b=Xx2LOSzdR-I=~yHVx#%*?mo3K)SQ7 zu;H7Gh%)C=t))VZ$1Z=JV40bZFfU}%Ha6GOm3&U7KN&6AU)-`eafDFgv{x-Nj=!Qx z--J`Dy#W{jl)95|n47438(Z%@sOWn!{k;*7KXx-ra<obeo?j`j%y_`hiuWX0ux8Nc zf0Ay9xe9XPW_Lz?jwHXnKQT2k+jJS9$rIT*HuG<<)k8#lTfoYLegNw<*hk%Z&)j*T z7st74ZjxxOsBdBOdet#3n!miJ9BIYnnIC_2|L&Ji&w;n(2A{h}B?Tqw@DOvj>&9cH zqe3h)&gmG8;6PXDz6N;@m^d16NfAXWACl8CQPnlBU#sUs#ki^1??L*65qH0@@7S07 zt^}QOSGvYIwGUY+@;I3nRLQKCl@#08bSaDfGB&XqLtgc_l~9>f`Q0b}9+zzM2J>sP zu1MhVaaq}5Sgrz}i-VWk*Pi3&r{bSftV~VJ{pQaWuPwe>ABUZ&Hj={kZT$B~n=g`T zAClF7NL8}Ebw*n?FP=7C4rvOW^Roj0vzI|^I9pKdp#TWa5>E6b(<q~?Oqbj$b|vne z)O7iyj#`^9VgQU+0>K6*Pj@@MiuKl&xH;fGGa4b2({c}aqk7cKYds5!dbW;a=c;Wq z;JiVBW##<`$Ge~Pl)RTm3Mq@&JyWT<wq6Rq-tSzQBQjn|a%w0qj8{O=H}5gIPx^>Z z!>L4<hZ`FkXJ+tt{Kl%6Vd5>RI|TaNp_7wN--f30au^RYQ5r$q%ZPqAlDEqD?qdH< zl0>Kk1lJ-yU@;{Pl;n*f$;yn8I<-ZeSiK(!l)`ij#JMZY&AD+sDT~#m{`<|Rt;rEu zzCyN1;(`F8hqQKFB<L~Lj#ZbG0v&uZEUj)pskzOOLQUu457jIjVvYfOqosZwcWhVy z(6&C+5c4E9x+{=HTM59itt1cBH8r7nW_C7Uy}XN(jDM?L0)%2}8aNJDC3AU^KgTzh z3akt)yB73MtbHC3(wJN^f9!`XPtm&_kKZK^q(7?0ZuZ6Md`yFu4=@7aw0DE5pGq-R z0&qZ_B#?PGGU0Cc>xx=R#E_qdSD)X<uW!7}yvJP`btNprd!b*P83MooaDR2&u{BQf zzdyW>=4S~5=qD{599NPDGA0z?1;|a@;odD03q3wE8GH6>X*9!J;q)mr4)?|DUm`@j zO{>VP51C3y2YzFtOE*Ko=ODpn0J<8hbN8|LF_&xV+pPt*1CTfcwN;oXWmB3UBEA+* zh4;}Gh1)HoGTxqdB=f7QZu$8oim<*sul%uh`&lJU8q#4uuW&_Kk%#~B+x3>^<=EWh z<1bGXLtbrGMTDB$8}c@R`bWQaxH%D|5cYA;&s&0qd<o**eb%lEjgp?e_*oq(sbHMb z!Fqc~grwBZfrH~#mjq~`p|)#$Y(-5u#w00}$PnSX^<6&saQ&0ImzF|KE%$W-Vav_^ z9`~-F<dfkiC_<I0vSS=PFGa7>*|<P(_Wkd-?h*nY*lhgvvQM|t);EM*lgPp1gHebC zLx>A;TEeNrtqXePqX9A0^w+=}r+d_G0)Uk3fV=VmOP`FQAD{gE%ns|N&#kWZla%fR z<;Z+`vF`WU`gZPtzOGr7PmMf#?Prc<LU35;8lU_WSy291-@Gp@x4P9Mq2M})C^})l zDc-Y(IlVHQb9K&Q<jKLjt~s1itN*pH4Q49I&&;^~ef!WthsYV5fJnG+0&}LClI|18 zFn+aB(R=r%@BPOh1Ep=}IltZhWSf9vF4JeROV@?Wr~1gdr(4aJ*<k`Fi?_GV<v)zg zzuKrCyXZ-qi&TcuF#&O9G*)Q*e}F(Ot+4C%e$GzhbV6@V$=bDdhlhRSh{0Xu(zpAl zrk&y@ZD>Xym1KdHzz28>6&8i}9Kaq7iM`j1_0R^vN94LIq<hBzztQfO_!+z>7}DnM zzh-$kmU%XDwXXW=ZQX_o@*H$qTtq0YjNTY&WH~iL`D-OslRB<EI+!>0DiqoSKtvz# ze<YDe6$*NB3AhHIh>7*`_)Gx;Aru@i=bw4Dn(5!}+&v2U1<s%{0Q|L|=eH!M78I@( zxu(_?r51RTPExY8aeP7mAprP25CDpOsx68yF!u<Xm4{%)>oo;0_9jp25S6GB|G)Pd zR-<YP1CF>##lv@`o_(^_zvhm1pimNwl`I8dF;=EEuIU)+9Iac3oP_&`xRf6}4smeQ z4P7qQBsPuU)<7IERz3ZyGap$2G;==BX8mqhLOTtlvvpQJM#Aj(m^Ky^{XM5=#PC7@ zafZCz9HRMEu&>nx544HWgS*m*SdnKhIk_SLQcO%&?UUGcq}gjS3b&t)VGP8bhF51d z4>kw9&6BpUhk}pSz7J|bpp?fUrEiy_M@IjA9Gm|BHtX)CvKCPRQE97*2E9by84=y) z1HfZ`tr&|^{|kXCV;l&TNGnrEbIuNXSf=j5fp?9M&)~h~Vd?(VIvIp2JQAK)g@7-b zDDAW>oh+2@&URgag=NwL_!IfwOE57?0^m~gG}0P;>a+63G|KA}*e!lb%Lh@_NJ@;% zlN`&<I3td|<kFDb!>%TM38Z8j3_324xU3u)!V|i$b`QJietxhuLegYl@c8!tD1=gD zr?Q<BkVIT1XpP6~svbBLXE~Y-(|pS<St}|jDk|!!5aEufFf(4tDG>wAj@PXep_*LK z4FdL7N7=wYp+U9$s(|^i=HIzK?;u(~eU_&bKLsy>I#NblIGi9GfZhu6-W-weBJrMz zuf;|Gho4}q3#B@W>%{P$>y5;doST}_0`-0l4p+g@1XvvX47!m8%n>_lW-~UQ@rNb! zGZl?LRiJc#L*;;IK4xabk;2A~-Q@6t&b!BMifM`J2Bs$0_S8dgL~*5u0)h=I|9l%t zqJm<0D#$fI(8KurDYiG_pufHzTU7diLfTqzWxg5X{6p)sA9BtFiC&17iz0=xxNU8w zmlnq*4D7Z}`ubBaOGY4?M2eJAIh~xWlc;zU@cWi<S}TE;h1Fv6eK7>gjK>6J1xnsq z_N0PQzRRkNny}ldY^HCPon@H(?CtSMr!XYkOJ57XlIO#?>YT8>Gb#P8w?i4a0+N#Q z>Y}2eqMQG(xX5cD)(|}j)Gie7je@lgt^8IGYxG(7hfNt-+;(LR47hH1!0_etXKhaS z5~GhEfPv$6A6nUEu!9<)tbJ{m0ZS5Qc$u1@3Wp@-i6MwbPK~>>vY3w9H(NCNuI)l9 zF1wvi&4eU?N5AercGqLx?x{m1_&RLg%ir^mo>lbmR?K7<b%>PtAd{*k3W0`iM<zfZ z`3<s*_}!91F*5H~BZ(m<E`#UK8w+V7_F8yo%5vA0H+G<BC(!5Y06KQUJ}EoGDZX)I zV|N%44A-W-i)bNAs5a0R&5wzR0e|B%7Vg(VnT|!F(+Q2vjvRUV<T9<awj<m-TG`gV z^6O;@`q!i<V>lGAmqb;zdQcMKmYKG``F0DSjLMCN!Zi4Dt6>O^ML1lg%YZMKMvFLt zH1~Bj_?&0_1qhM3w)S|dG1&vWmA=R6Qi#|X#UKW4ANK7|TdfDnPfkrt%qY^gaY_Y3 zkx~vE=tz=Wx_DN#_HBSjAkxZgN(4`Bcn8AAx}3g&a9QFn{<Eq(A#a|vgh+iU@bKq) zTHW1ndw24gy`p8G^JEGX5rudX=TfbZ1Q3gN;pYBQ{C)SUS6xUoet!Uljlv0@6(4%8 z<<y(8!pdqhd$iNH@cyEvb~Pl@XvrZfJ1EgGoReJ?4sTh}AD4H=qrVao2cTKd^~OVW z^T*x)I`z{YzhU*9Lf0B32Pz^2^h$d6yM426TWAYDdc8P_Ds5a&Mb*^QRFV3gB`&Q> zeWswtMg3+S%4X@G&+DvUdNxJ!qro>rwE<H>SLiJiDp9Da3ALl%u#1r9!}v_Usj0bu zt=n4?Jv&TqvgEfKb{`G;-=!`GRx>DyQ7!8?WdqnTqcRa8w#QX`85g-@RyHP~mHqXz z`z5uF=e0_LfW`502R5ZMNr1w6L0Z6B*VeS0?-$QVsvKItfdGI87P20*{Uc`PkMZ`n zwh#oXl!<IW=_>C0#Fw5HQk4CVet~F#$8}BR+o<LXZg!PCF8BUEFkpmEb?YmJ%E2R} z(ZRL#zXNGR928N+`DSp*US?v-Ks&MHY)NS^yxZ#}gw>0z*Rc8Ka<3Nz0;<r^T)$4k zDLS~Gj!NyE?39rS;UlXZ_W7*1idO=vVD0lFgY?1(;Ls!aOyppuzqnweo6)<!Mu&}? zx8E&$3TV;C06-zImVrO&u2%BSYjv)F>x!<7|DGJCIWn1q->~P>f&7sgY!h<ON#qVH zaP=O*3q*~T*8LT2J}QuHSYNudvpGCa&DVh21EB15@V(hl<ZzXXnw2Tih(0d?zmU~l ze9Q=e#KI7P$$|PPq!!>lKLL5W9+wwI6*zYOBf4?n#@5-e686y9JCdjOISAZluSi&v z<6NF^t}shbH&1r7GQkYfr2Le>_Cg!ZyvoBKIs!w)Nh6SPE)G?cD`vXf)2(xwSV(@t zeVfw<HoNEd-fTPXkMIm76qKZs<!n{6rAvzIO3+4OoKiqFJ_n+7cZI?rg_TeGHc<X< z8mRUmmxmU7%wevnyoCA&c2K1sPZ?$XM}0rrS)kyAj$*E$Jr!IzFlOvO<}vfNue$@~ z&QvYjkwlGK!Vf;cgb`2PhueE_>sv&PjYSPnz2vZSCR8R(NVT-H&AvNM9HZ$|TV4Fu zk?eO`8?ak?HtGJ%1N`A|woY(G?C-zjDp;X*6zteGrocR|pc6Vzh^We!JJqkaPOyBU zPfce!W@4UDQzD2x3UV-gh74Jc#Z?haZ9My#nhuKRj!)kmJ<O0xu*+VD<g0cB<E}4u zrifFpW~?)$0{ZRt2cWLUr!P^~mX;3gR59vbF(xK=mv=kt4Y+qJ#M25UC>+~%%@$w> zK%hL=Bx=t(Y?`*t4h9Uv<fwvhMB(0wc@Jr8o4N6a9xK1pHSabp{+o{&la)cH+VW}8 zC`$&KLLhm@iae43J;HV|la7l@u0?dX$xtw9xcj*rJ}H7WqVIG3xU*W`Km8M|^%?#= zJ+cne3IOCJ=nhkOMyp2(8=Xa(H7$`_3jz)d)JUTw#yp21CFnXYs<+}<-!c{7Ctcyn zRWAy_ISRE&taJ8>aJGbNUAE|4Y=pB4g^>T7tR2q0)xsMMXaR$jwQqF>mf_T>0XL}A zE7|MAaie~UX%z7>V-KrF7J5-?kAVrGk#~jtW=ey1|ETHgX(9ceL<XIQSK%%|I4G8u z+P)1GVP=p=AFQCmnJq#{>@oXkVQGpfPr1h((cve9*A<ROtVHP^dS9c+GR}<i&gJat zeGD{`op0(Udo1zZ(PZgnf(4CGo9bhlyvB~FU7!kSBcQl-+6X<hCe91#fL@y@F8bP2 zBz|r8*iZ2ecV$HimR#ZI)$P~?Y5CSX_a2vrdA%m}@<qRO3RSZA+=UUD7B>POY(T|S zsowYo#TbQ3j!9!$cqld9TM-^ZZV=-(F_A;Xi`Op_d)eG>tV?IrS1)BJ$ZfAXpJ%eY zd&U$fNfW}Db>)5bsO?kjr8k>axfp63(jl!*thlJ8r>G=V`LKAcu84Yt!kbLEkya$k z&GlhFkL_E@0*&h_Fobd-jeW)~!clNSmG0!7t5j~Uevba(jI9v&tl88xGIjj@JkinI z#L+6r#H1rHtAv-YO}As60cOP~sOZ;yOY<I*C=FjEwFB($K!0TY;beveI=1L&_D5PJ zB{>$>vWVWo4b;_@gy)!vJ2_JHZiIdLm!hH)ZB$x8$(7oHNjg9r)XH-1+seNV`kI;q z61$gsc~BsVS~UWy%)}o2QDbK9UG=rw+OBYqzAw`96l1Hns3_dtpwGE-!q1|QY+@4n z>rUG&7S7zi&`%&xM9z+1U<eU2ks}r1R1+c>9Lzw^NNnY*x>9%L0VWD4gke3gG&O1Y zk7D|D_`O88_W{3D_3WxB@_g)CTT4sJ9ZEGE!Gz?8^-9QFpo<~)K0pK2?EMPA7cpEp zK>4Yd`_!?lJVsBQwyccCf*_yrCTu02@s*YmN~60L6b55OviNttu>tiZdl>_%!Q&AJ zH>gJfasUmUB)N_pFatf6a(*IA*o#-oAc>9jhGGTg-!ESU3d5-#Xz`D1=;*9px&12` zmOm%WGR^&R)R(qUm02KKorxwB0RK{@Tj^#Swh$EsMRd~F+-*7{LXq_YU%v{dE9NF7 zy;F6O0p9BmcoTDAEYN~=MlYoAYG}olf#aU`K)XGvG_<@4L<=UY`XWT3UudN2jUm0` zh7wC@kxAt3py-h+JGO76oetdi?f^2>QEG5%RV^VEBMWSD<u20dt$P%r8j)kaSM4Jj zo@mq|Feqj*Ze`x5lq4f4_ZEnrx!Lx$icVP>xI|IHk=xmbjdZlwlrb(Zegu2X*Yu9< zMFqJHzpqXu9+C1i?DzXSYjT>%;fG{}&y#%loCZHv195>kt#ZRWuZKy819y4h5cH(C z`cE$hzU+lCxQ1@2JSRrvfE{+$9aKFgjE;k@`YG1dln+n@Qj`H_Jrk^74QiZ|wSV!P z;%@dLk=i#`4@$Do=Uz0h6%~=T@-RBykn0cgtO<1DLNDT>h`51*Te8*YR45{GNPG2{ zDfq8~BB(G1^dcSzki{5X(_&PPC5mTQzJZ%|&dhYo3AO&>U^EzKOY(Wg{9k*8c=&PO zdvt0iPj2;7Icq^tb=<r$)oUOD4TC^Pq*+t#+gcVDZ>m<}wphm=RLFg_GJc_<(P~=_ z2K`Zr<t=p|FEH<OW-+Zc)aD~#0@o6W*-k6~mA*AePMf~IKi@@}z(nB<SI<k2>1v|= z3NFK8^oiYST}R4uhuy&40L7VIBnv>>6&(rFK;<H1l30<ff#dBe#(C1N!cM3=&IIlI zI045|>M3jM-iW=1%R1W$MJ8P##4v#%p<Y$#Pf<JoAD(!Mti-$IRwJrN+M<xqka>Nr z@Pwz~6ieNtq)hnw52m%ZF0j5b+*aSLW-<=_fJWSkfjC(p)7=>)k-z`k$GM_*%GlA! zG%taIlK11GozQGF*WL2|JHSLk4Qy!#$r1JdG3zer&D*aS@=>v*?es+D{9ZW#M8W3A z$jVk1X^M5^?Xy-?g`62dQYaB`bUt!~0F(()bKPhp7kp_j6^_UTOApos{88-kwF~>( zCiMYFa`N|=8l+#?KJk*nucIw3!&GSF3xpBz(4k2eg6fny9Ke8x-^oK7ajjoZbWLlK z5Fq<+Dc{-Vda6sBu)}8kR!SfS&s(G}p%%8i+}-6S&~8_q9*<)k(uXZjYT;!aSXHUG zgu>oXZ93|o5UPA;;*0(!3G+kQUOA1{g+;a@V|Gzw<rPc%N<YboDVF00QrJwMc%Wxs zxnv(201<;k<rUe#AlmsjWOo1oCqwbKzawAeqvH1Kof@0vdE1EG$=uzup1=7%NJ20f zl~GbaP$iQ574;$rZ75b&9pcZ!`2YS5+Q-Mo-F>T@#C>vk3W|-2it6vDWIeunF;-LH zm_GZN*3R_wblyAAkGV?kKT5!rtqHZu4I6tjdgI53t7CH>?MT@fucLqSq=0$=XOQqq z_U|<(<H;Bx_VR<C-=A5EEq~Z_s(3aZZHBtcV8G#;&JL!Uk93+AQ$IiRT=|vl7o+A@ z>J?)YQMh+3ie5C)Qn^n9fG`G{93t5vb^D(#kCH4iSJTx(B>DeLP&`AU&$>!`zk>yj ze$#KAtjy>^sBS0)oLwLE?UZd^`9HmQ`0w($4K&if9e5O>CH_De1X2NyxCUmQj#BZc z_>TBbCl-JMv!p|}4CJna_(>{yEv^i|{I-2SR+@Xn1R1D{p5BjDdUuH3yc{{#%PTw! z<@`02t7-G5tN3Np@p8<a&Hx^tC3!ed8IB7KmGmgO9&1s<0S@2tjqg3?O0tI4Fv{QU z;9h5s1;WZIRNIQH5kv*)ziD-K+pDrOzU@(3&~?1eyR)v#U7yP-`2!#NCUENoMQ-St znAjZd-)q<>Ie(PxZ2M&`N2l9>1OI52v!G&Uw_EQNcl~g~G)}&$Jx&nfPjn6Wk=;(f zwn*A)eNQB6ufb7-sHb@`sxu6;Sc+p*bS=W%<Zgum+tPoYn|+^#w*n5a7mIqAXYTh> z9lAbJV#cqR{%||dW`FSIW%!ik>dhaDPsMGsH)6}2DMn0t-seMp^RR)?>-`sg*J>a1 zSG=$>%uRMQ7UW(_{qw74G9HQ~n$e-qs^y>)8Sy`ORBD}A#Om`g(vk=IF>Y3#9^z=w zuzUFK^4`Uc|G@X=s6a2Kr90dVND!Qgoij$iOh4=J4Rl95ia<RP)9BtUXvf&O&-v3Q zMMLn(y6Sk-BwOB?NuXIdB5s9s>naFD13Wi}QnQmRTyJ<}9lKT3`zs1ES1M>K--~0@ zocqTzcQj~oq&j8Xyw}_OdXOw%kyr1)Ub88kk_>zgwm0XtQxzG1ay!AhW;!$)(p4KZ zecCY;MwgS*CMK&~ralKSz=1#v3<i`ym(>RDz^P#L%wmBu8RrMzD={W${&DIpo)++1 zy}-Shdlz@f>obC<<E2f<5}Bp(oi$cm096Jl)f#b~IgZZ?^yM@iuC$y=p0ED9q+VE+ zYv^VCtQP)$*q!}Z%MyPyNenUkgW{PNxF$h$%09^5ai9ZyTtuUv$nkunC?ovf=Va@E zTV}m9VizLtAAIiL=E(uex3|8NGv<!^YZFcOFZnz2n0^A_KW0ZU8|H80Gj1?o3m*>D zxBT1S_s|bXD&qHwkBQO37z;p{!$Db~bpZqa1;CTIJlE8kaoe-yUo86@(<%yAPXT43 zXz!Xqa`60eQ1DMMFfWh_sC@J7R%zowM8MvIQoohfu-UVuIlt*3LKl86oTV6e?+QcZ zZqtpXFjh#^$43|58UAj15N{ECTyJUuF{t#baak0%v@kV|YIq@$5uNM&5uN}Q9`sb# z*0)FT<h5%MSk40F0`z4`7G(V4W)N0syXx~?s*`yN2pn#ul@9`>hxSGbHZO1~?X{dA zUhb4OEit^%|GB67^0xm+Du_>jSe*#O-Y^d&`U@VTYRr1{=0|bj(~uCf>^0MZw{JIb zDrNZ0@IS%?lT=67Bo69ImPcQzj8rA`6n}nZZI_J=e`-RSq&Sar)8}Jj*6%!1mv~mx zaPS}EA=<9WaC+Yk6Vt}!kAeZ@t;V%>pPBPVG*CbvPGr2M>qCM}AUsGlH~mmMtt61K zB2O!d@hU)w&SB49=iT%pH)cz=_tH>9)ceKvi)vjzpdW@9Lpsdq4Vq#HcvTCkk;O_# z`NpR;XF&xew6+zs_5K&r^EZ=4Zd_sKcn{{_h`~W_0c<(W>aI2XzSDH}M(MEArf6+> zo0e0ZLl~i&$*cmdxTLuBuHel>uwF~X9832Dy0>(nyfv%<0H)6W?*%ycb{%(aSCiod zUC!a@H$ovf6J!@N3|{uN{b_ef{@GVaGN1Bl_kWe~(tzUgaXP}-(!Nx|D4lDvR$<1= zoINuY90$*v;GrW&rGJg?{-^K!e`o6{m9R0k2ec9)g+dKuTI^I*Dg=|1b+>jr&UPv} zYS{X{)da8IQq9|_Cp1vv#_At8O$E8yby<6M;1u6vl&oS*;6f4a)OhEALrpC`h2ceC z{}z2IB9ihk-0YQp33-J8dmrJJyTDMmDh*}J1p9~ktIcQE=6nxl1mBSb&knl|Ri^Lj z0orXj0QUi}(|uTIa&B=&zHwCpgU65K0ycPg9EB_}{R(r|5C;3HY|wTEf8L8)z0e`| zt#p>&!pRMJq*2(1#Uin^x}vonQZ-tPd?WmM`%q_4@WMU|;Q_paM}t+Wb1=6d25<{* z!v1Cwqlc{A^O@VGx4IxCpUJO&lMieG@GyEPgSdaVT+h~`|NSytnD@rL2XquG-;^By z#DX*ovy;Jj?Xt%u{M)_eg-i740j|+bx`pt8&n0UGAE)m-^G%J|eMQ9fgte=M-Bt8h z$x#p#BgnnxVE3JSYNYelP^3KfJFM_dwBY4O_tOHKGreZ+N6dJ>r7v<4{tOQTuZ`~v zsy<v}DbXZH=xl|mh-skUw%&lqFTbF%s_ZY!208A(9-K9A{<>CYAp3E`8D(DbSuu9) zC84sqnlvSxR~T*_m)~B!O=@kYXrG-{KrFZcM)hF^74i^$Lr2v7^=;9Fz^}e&^cnv0 zZ`$SF<E?nf5{6=hAX`zMYKR{@cJ)<Wadi^CIKN+n%%sSzw)Gn^hCN_I{-2B1N!JBy zl6~%Sbz=FHYHRj;@pKPV4DG^fco4v<Vrf2R&D`yi<>h6Pi-Jri*wzJ9JM!I@9n#D0 z9_v3OtSSfBE{z&<Kh~7RD_}Hg6|4MrTMKhMm>==17Q7z{u&nb>8w=%m9!csOIHfZX zjR(i!zUkg+!+LEfhJwLlE7^T#w8)D65?^zT*Wipmxqf+=oSG<p5s}2!xt6xZmzG-{ z3u9p4w-a9fc`NX-R({$7>X<an@h?ZtK&R7Ej6uhv*WlAPqoljh<~{7!+2Q)AL?}bf zL(?#ZP*A$xsdcX7cmd{StK9oRv>axKfP7VKKqa}2o*5$)008-z97>bBz12fnpp+0* z=?B7*Z(MWj{<8L5s8^*kDP%S=LPGD62q#3Jzsyq3b@}5CZxDC|R?A-R{g5V!mOV86 zk?q?MMntuds^Yh38Rx>af^y7_XIlSmB8R<-<}F5DP@lf-2oqJH;<<)-2}5$-L_bM> zR*hqi6!H~^NW<RaFSovD?ea+gZ|S_ah`TXM#i%2BU;Bl6@T9w@d0Z2=eIZ)_Wc@Z% znM2y*(U>n8rv);jX}A_Ef?q){G{t$VX>xt5!&q6Og5T5lvgC-iRQ%K&=@B7NlnbSU zLr0OEJj`*>2O42w$)N_eTqdrGP4rJ0mCedW@Bg;o=G#j-l$ho-D6>vUR=gK;GYcp& zN-rP!oYj$qX1sN>bE2SM^r4yUzXq8_OwEI@W~NU~DBgg%iMrKTN#T_M&TC+i8!Cc^ za)>7_auwp@J`7BZT!n#8VK&OA7D@GYX!=uXtBvafR4R00lZk&VXPRCFT;Bh1WCUC6 z(V31`S7m4$m?$_{r&4AB!N9aXQrqk9eps*mxgTB03(to7$VA$OMbW*<_<RiR{qy3h zG_o3I*F;|^`<=gKJyEu^*bP4m34cked3J3j$hfh^KPXV%%3=s?{ZSiO)h$dDweC;l zuqrYzRp6TPm;)AJ$cWe%%>^p+kla3zRA_>vB5sC25iu^3&n#``c%r(FZEdR<9vX<a zTPPd0rA*U;55n*6Wz{KOeT$$ae>59`$$WQ!95%}Nd|wKu+h_bIB4!@vMPs=W@Uy6X z5;vh{=FKU~qOT*%s%D*+K+P`6pvwPNYVx`H3p9(kc5%z40CQL;^oH@b$ompzqcB=i z^ou3@My|`&+?BEy!Qj&`dU&4l!QZ4C?;?|}h7y}>OZTrAOK#mtO{oq#;)}XHu+s%= zd+G?e#RjVw@=sa{;Q9O2jC5Qe780M3!1&ECA|iONaI`U>x|siBP-Fk^1b;gjoS;*i zQ7)xEbDefK{DZ`IE1m2P_x6+|I<rCAT3t?&@2}=m(u`D-pK#>hTnOgOrIN1}6uD7+ zF7_RIaGV$?a^CahM5O;-xs}hsLuTVm;M7e0+~CWwuF-EzyVl*oiotNXwDy2W1_&So z-nZ^{Q^m;bhlOa9+PdR5j|DsM{rhmQh-8VbddtFB@@^X;*Y!aR2DJRQdBjT_5=l&+ zx67Aiivm3Ju@>^6mh<_;O?8#0sYWoia2UNQd>HX%*UTyeWuQr@{&4o{V|x>&k>Yi& z>crR2@`xrc5<p9<9s~^XnCi9rD}ATNGbNv)C7xC}$3vDXYK=1tyZyIqKKS6V&oES{ z$RDdd%|h!Dxk}ts+4!nn8sQ`4;Lz+XWEfX~Zgg!VbGM9%F*kkzSlz_9h~K@wUHnyx z8H>5{^=BWBpJ9yidzoD{yX6#-WFQ*#rOu=Foe@)MUsV+~Rg*_T-jv@2a!Fe+xX#%& zO<jjg*QSocO(pYTA^+U-R5GB<tS|iz-jf|AH2T2%{b6Sf`D!+8UX9MU#MBywlO3cL z((VJxQEk(rKBN-2JD8Q3M~lRR3axXStqjII2d(I+UojV1E{FysPR~m0zMoA}u-2{K zv+~lj%WB>&cUTDr+r~M4Ngx%N^%WQG43v-9y|C{d0&@}J#^DxtMwZGiroFEsnqE}D zqWS<(xd|4!nzNhHa0sTl>jGd$Ts8b@dhaK1{?yGWS&>aC@w)O5??|^%dWqHj$Ju*Q zgNb1JG9rSTuxI;_IGK_s!o6Ep^c4+H{e}bMs7=<=CP(BpXLCrUwT~;gv(V;qjlV`^ zZc#A+9)qbW4reWEWIpo82<In9x_(^vsAGxhat*0JCOo7YdCkzU=dVvr2G}v&rPl&F ze45O5q>9p@u|D^KOCxxNXNuIzMJR^mWI+wGeWquD6zw4IO)PnWi)+g$Qw<il5*d1D zJrg9GND2fBl+8T(-MCxx%8)6G$RIju8A3cs=6+=UaqQ>)h?T*KJ$#joH~8)H&9V^I zlQL!ZCc~%m)G9xqh-%`o$G9}||EBJ4ojBi=_!w2!I-TYGiuV_5O%eHT2ey%aU#Z#k zJyeCY|EyZK%sONpmmTGg(c;UGta=Wekkz?57AW4%d+(63)CJVrW7uvog5GD^@g;d@ zZ^s(CCVhflj~YV{8=IJmFPoT4V;t~~Tj@-nygcAACH;*A-QRkli<L$Mo@EOIjC><x zDO}ljMKtRw^R3v*2eHD5A+#cmq5e9~RTZ4kSenG9z`74n7g&uSGVLGRm8sS?{243_ z?Ms#a>M#Xr<(t3Ykm4o4uqd>NiKApo-K)E{gCrTGvkf6Hi7~$lk}n4f6&cq7S^Nt! zcKK2KlU9x0qh!8-Lmv^xpo%hh#ai@P->y*zd+^6!wtjMSuHl}S`1krdif{7$HpQ%x zM&;C>j-bCE8Wz%YL%Ut7xZm>GW!06e9Vy*n7_Jz|-gwR>bLDT%A0`Y_O{MJ&>k} zF&vVkj=3Iv)ik+8SUUmnM`Z7>n{XG`mSTzBvuzbSnA54iz2~x2e-!2a2E%*3PT!lS zC+2&f(k+4hZ@fqj()X>Wvs_s*S)raRn2OR3ckBD&RXbmT?{K?XoWwb&5%nv?G)I}n z_{hi7vfiUa#SvIo%T+j4#dDZeaX3GK`QewurKoC?d;(b3#?(NrtzbZ=Knai5((_>3 z8E@K=P7%VexZugbWdghDBiW$op7mdk@^M<V4o_p9M-l@FmoLvnL^;^=;UNi<Qj+xr zdxkIKuNt_QMTa(eajFV3X!=qbl-;zPE4SP8`r{XQF0VPhJbyoV!vCAHy%&H`*M*m; H+P?oE!fE8? literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/fill.png b/release/datafiles/brushicons/fill.png new file mode 100644 index 0000000000000000000000000000000000000000..654ec7b66fc4d96c68b77337d7bee37288234744 GIT binary patch literal 16892 zcmX6_2T&8=*If`afc%IE(uE+sE1@GL^e%zWn<BmUUW9;3mnslIIs~NG&_omjB$QAD z3`InwOYiXIKVN2c-t5j~v+ut9&OP_sn|=FCSB;XKksJU3N)2^oIAOH;-vJ^903yb# zu`|L6iG!k!A^_AUQ(QhLC7j=Wp{1rw7zv*<rH%-~K<24#>O;80%>ND|7*B2>;o==% z4IPy`b9e3o>~|q&9nk>5252ZN8V1g7bq1u^%?7dhW82sMT*BA#JA=f9A28LuAyG~t z0p(PFN{wp~NdMwJ&Nq%u6_`agT)vLabk)eTu!}Cz`Ap)b`tG(m5Z~7E!_qZ>7C-wI zk6S<5%yQS|K2N>~en5R+8OQmp)ZD<bw%mGA?qqmz_aux;?r73rX|(e?QR3>G+QW<D z-QHHKZHu5Yih_%+%Erx`Q`W0Kc1D&R_nYZj`Kw{;;M+iCX}WOOYJ~YypBp;)lODPK zFVR=`*K(iWJG_o4dJewdk-z-6cwT$+$6UB8vLv0URet|<&++WVqR;M}Tk;b#s#@#I zzQvH8*YZc#+!3eTTo*HSaT$ptIz0^e(jDRZmv=UvXsStQ&x9<!>(IkrybKNGOe`wz zIVFw-V`{>7mXpO*l&fff3L8pd4yi=$;=ZfB=jjmOQy=SjAy<JHJnVws`c)jel)3cP zr-fBIvcjJI+WfQZf@=|CI2=A+hB@yK5bE(eFxTthDgDuX>Zdxp7ICD-8gY3U&3bu{ z1Yom+4WIH`hb}+W%fA^Mz4WWzD1pq+97m?h|9iwbu0urxI9hi88(Hgky1SrO07hX| zFZ@iyc24pyCX*vP*S{-CEMDFw1`Jg~mz()do`&8r{CE7-K|?8g+qma)j~lyq@<mOu zQn>Sw>oVW>q|3syu&qkiI((g<@FNd{7K?M%r@vmt_w21!NvIXvY_t*q|At(w_c6J` z5vw=fCw_$$ociXeHR(niMV#9Wi!a>NpTuf0jfSo}ZJp?K9{t?4ce*aT`76)cm`!si z5xzdt`RQ!D=Q7Q|&3~_5xFL3V{3z?B<v;mD+k%?7cAF8G(a`O*f@_k>ClQ|KLt54^ zkYRgg@k7z&nTr>N<-WsqI!FDjJ>dhlPLz02o<V_Eh>5X?J>i>O*0WF1f48=CmxrX_ zb_dJNQ_Y;cJj!j~?b9ddx{v1Yo6)SN^?HS(C-NDiuS<l&H;sEv&-r(^tUCUjNHm^7 z-!{-KE?j@n3;V)^`fTUTAsKRJKDrTm+?#w8IluTb=)hESw&!$JIQ%?qSLR?zt>|j_ z&2&)4sCCfZL|^iv?U`0zmGC`SLD>1~9lct)>szcU>Ot34)+#y~J%?K^dEF5^`4=T0 zf>KAy2Ll$`&+7HMM>jpXua6epor$lDd|%)Ejkx-=c71m11pjm)>|%Rn;jR7KqE8DS z=<;P-w~EUubI?Nj8xfaVyP*fAt=I3Fy4DIqZuaC)nH+Y)QuV!;&3kU97O#5*<~y(Q zMVSKR_~?su2AxJ6pGr%HF6Y*==%l{Za|_>kdNP-Ec5s95vG}PD+8e^%T+Fc~YxY~+ z^zSlnC0UGy|J}P|<PnmP7AH=-rcB=Ab2Q@6ed(P;%fy}e@Z!@gZY<s@z=)JH!gJuQ zz({;&KRl{=o^>|(XgF&TlZ05U3GtBeTfFlws>)SJY6X=Puvj@fw70dI*c+lNw0QLG zzJDDtWUk{-n~@uJfOfrJTF+Wa(~~>%kw13KHm=ImYQ^7>(0&_3U@K^<vGyLJYpWp- zF?#xSU>JE)oqceaDtd3nPE`tW_^T?bXMbo_wD2_%687zY3f~pJc0cOANl8L_RDD+! zoi9%EX6y<KgS4eESE&YE)pP~qI}PRdyes{>d$ZFTYkF3Afqi=X>W)atQXzN2?=haV zdKwFm?$GbA9<l)|a|^eUe+FsJK=EI4wqy8p?z#2siS;u$ggS(rZuZ>#jB~k}q<VV& z$(HI!@8@fxl(PAc@$bbFY1p%OBCe<k<e7E#P!?n|;Rr(vt?$gPY}<Y)f^d7dgs@!5 zaxPs>*V<P9eb&H#Nv{h$JD6Z1cY$wfO1!1%FM``{n&m?ukH*RDN`>7#3UL2<Cdupb zW-L*ndx(cFid+A>qvtBo$u#0}FJ$rHOBeTU5G(*@wpJUyZT%boDt*{i4;?QPg(J!Z za%4sex_6g5jC2>R>AccLx%!^+a@vNj_4j&Q_EJ>kU#-X=o?h*?d#oQu(=*Nb?v~a@ zNF^Q|tFF3Ihiz5~XQ}wCJuTnq-nH<!I>u=4pNZs*kglcI8CwNz5~lFf+y1Ic4<E61 ziz-N~971xDRnT!dl<TL%QyAgpwJ-d8?&nYCh@oUXcY&VW@r&zi;**cV&_s!z15VxC zR_kDUhs{W6366?vH92f)uS`1^gC4e*ON{tKcU_;p-=TL{i~sv;*qS1WEpMmudaH3< z*3@cKxc0x><vS}J4o&ttc$&d^y4tR@xr`vIu%qTy)yC7s&T)S0v(gNoWEiM_-oqkr zJ)@z*c>0dRsJzYV&89dhH_1mq(BSpi8KJIb$`T9H?eoHm)|=PXr3u3BhwBCBlZ%(L z$!<TdXaF1Es|<?8pbR($)9!n`FrZzlHl*x1#5=gsx0Zi>JQd)7*HXrB{(RksNo#Yn zrN`IvY9#Mtbe8b;vh}Hpe1reIE%neWcAm~UJn?Z$_>0x8u;gs_g7n8J#2|f#M!KG} zJeRBhmVwTL%k23bIh?!~9V`%Y;h*y$w$he%<!F9^pY0o02c32BJLpR{+jYX%iCibR z?nhDdZn6ho$<$hOHQCaicTwTPcWOkV@1JM@4THMScyJUv>I~WoL~-R>2ktPb7#(MI zl<$OtnI00OaH^WU8^1Qb#yhyn)CW0lpUccUxXU*O?{uXbR%6RwhY(mmZz8`;anmQ% zG+octs$+hv<;@{WK+Ld%M&3B)U8;|nb^E`eKiN8n)|e%#*xqZb<ElWf$<rV09Hk@* z4_S1r+k6fB7`xB+acX^)D`wo-{J#Z~qoz8WFmkLEz9V@2h`DdSlm<|*$PSP@6`4-B z3g{l8zYn+9*c)*WRsdy5%VC0SS#9n7Y@JrWE5YN+-jpsy;r{*$#-&_u#3B_mA+MCx zy*^K^k5K4XQa~J)tizYLy-W)h=>=*}9@~Zb+1B|VcSDo34eq17`Zq$w3%+L=8*?I` ziSUx9v;8gj&LtBhodp94xm)1F!a@SeR`569@-Czlp8x$=AYE+QZO4Gp?`0^T%82)1 zjJ^GV1f?kii7cDXP*7HrAf<!7IfI_{A9w^~g0H(p9d@N%q#<UetVn)`S2RtP9OY5t z<Jji-TFZ8CCmB6zRVLt-`yJhYu+RhcH4Biw@kl^^SIYh1MYr76#V|~3czMxATTeLC zT0(jyjRm=WS(=1ZH_d3{hn24Vi7DLy=`jDR-xHOC*so<Zq;#mg&8z_7EmnN<&#slr z^`pjsTz5Jk5;E<St&S}LCx{y_c4I;g#{9ppuI^OMi|6L#OW(ZAQwx%%weW^;t^C~_ zwZ048t~qefEs$BK(q*d{!+Zh}!<cwuXxJHdt;08OuXz*f=jH5ob*v^;tgdh0=MqJM zHARRMU<<;%Re6EUZx3s1^`bMPRLz}rq?7oH@*#?}DZvCgg^25PSbD5{*|%9?R*rLa zT-l!Cg+ys#zcvT72=B1qo98;VYYbe<cSZ0*fH&sA{=wRNQFdes9Glc{K66|jWi)-k zzp0fe?>K}^<I{VAjahmT480(j+VAdmO^9xRY{xQ{IK*&67IQv5pWwq`(#H$&^V;6m zrCw7Uur%Gg6Rl%Lhjt%{m7uqcif^c}3Os(HJ9{>-hmvX?Uu-kb*MWRHHeXCytE8b8 z)r_HO9CUTqROlU=&}^0XyHTd*lt+28fmw!m57l)09E@D;;j6mlcVydxH=5S{3)35y zo4Y>V>TgRS_EOEo%wjNf11ez2=+&ATOXm$@2+b%L%B%M@lv@5EF94?0u~K7@TW;KW ztr3}y(XO!yEEZtujiI3qwO(ybOr#{~E)W7it``=smQUo*jl<9HpA_^cO?XR7)3fRp z1?8068Qh0_*$vyAnyJORE}q2`qPt|o1qS_r2P<qj8+6`2QxLMcy?dms_w;B|bX4|$ z`|5P}^7ClepW5rY0GQZ>?x1hGRqamN%lv7-XtoCCz9SaI*CZEGEhfc)N~bh7+bG;I zX=%x~;dOmqDC&E;lj*c|*i~L@>&bPA=I`Wp&sy*Q^jT{kjo4{)d&MRhuR25JZjsHb zqGCnPOKE9sw&{m?wP@LLDL3KDLtjk0X4uPz1jAw;eQ^{mQ0<t%(}&*+&Cf)#gX*K? zd>6M_!~WKchVPjNA#UDYCDgbGhhIr(NF#qNv~5G!I3rWWgBvcUucs5wpiX?m;D4dq zTW5Jz1G@!vmz*Uws+zh?5EXtEGH_&t&|2|TbnXmQY{&{!ke)8Krbf{3a*RT{X2rC{ z?W&YOtVBj`|3w)V@t&L{bsvrxTVbTXz}^fCM?mtnaiRXdc1~`Ahyav04zJZAAvDUZ zfdeCHB<lK-W>^mUGJG;;)?gqr9N&GoI`1n2Oz{ThjjCOA%q-5b?6BIIaw4HRT{9;a z!+70ADw*z;i_DpsyL7;}Ako<l>NO|*Nle-G(gmxPDbsU6;UQ~Y+r<@}7%2HID?K;Y z<^9|nT03+bw$$eTV=s7Et9Qs$#snP?^BmIPl)R$=48Ed?I>5Z?zmS=!-P&1X=JXOO zsdMvjDit+ZCoRNTKRmsn#BCEHNo>KrXT2GY(lx`eKCkMDBZqiw)1UM9_Om2w5jce1 zlZB4`q2=qgZ(6)1PV0()k1|8@GJJF$#1iclKp+$IVs+j*l+uu|_}trK5}<;o!ilkO z@^Z}7Z2e<_$&MgZ=R(=~5t|`>C1OgwIQO797hx*e&xTZ2Os(g@w$|=!|M%!F8vvi+ zlm8j)cJs$wc9h;Wr!2S|w;h0S;l8@osHli5GHXH5Jx+mv#=}>ebh$!8Bu?%cSer5M zm{`tRL@afkc&V<K-evnK=~F(ls2r!dp)H}K8duCz``hU=eFhu`aHRN|?(RP9I+{KX zxAHD|0aAc=1|RHy9h5|)%@n^K<mry?3f9K(JKSwGU(LS#JcBce0zlHhG$E4wxWV3$ zZO0r`_cn4h2Fwcpyhvh>{&SlVRWO;Zu<S+5MZtLqI=3-8U}82!97#dMK?3*W`ehot zy1gB5-Us*8(uZ0O0H0c|!Xa;cgpki22}Zn)$Ih9yc32sg{=Ta*m!3gF{l-WQHT`w# z-yiI>Vnn6SN%RRH`Zj<B)CY-D6o@0)qR6MUM-F!*Zn)8|nF;QOc0z67hN;Giq2M-& z?$iEerUM#Sn{zhz^m)CZNTiLN*1IU##r5N;g(2s<(Ehr<GCo66#H@uT(aTM3n5S94 z+MSLLc+~u^TzQT-Ttrq*0BoU71}LcOLq$!b1!La)SMz%h`IrysSn%d?zVhtRu!MC_ zlW6&*;@_9@vR=WfU)HCzWJK=*B6sl=sD%$WOQ}`gnGN)>1ac#v-jei>Ns%-qynl+j z*2e|@24V{N(d3X67(ro3d8SDOAp!ILI1IM(c$&AxnU?EkstG~Td<@LVVP?@?2)&vs zjV4R;o)Xt{yQ_<`dg^80h1=a-<-1LN*9e1G6t<AEm1LQK^2H*=N#Rk`$t5&VGqYPu zf3S&F9SGBcjsxY0%6WfU(DOH7Lf%XIC_$`m+Z_P<C4_1AN(7_k%Bd}Wn>IIg-ON?Z z95+}Pr_TrXRvJ`omKzz(+_`EN^><L|fDQoPrbZ~s17ILF`uim|QChr_=^qdhkJh(5 zFXph*&0Xspu>d*;)5AKO*@9W1>?nLb8)sh?8!cwg+KG9Sx;KImC|QDiYq>5?|JwL_ zsC3&{c)JAYe|P)4+0F0lspgT@)uRlXvxL<nnrfvI8z6FC-t<9?lc}Ga+b!yp{Zo-u zUjhr<$6}8~5-C81tUt;s1J127jf`vW5=r{HZck=UHB!mO)MYZet&P8-=3D(-fu!-9 zVrIb-EI2fOaUarKwu_Q$?+gm|bF+1-Ygs?i`|BT>KCK~j8}L*`B;>GLL4OX+eh^9< z?_E9$@c-{PDXwT5`g8j{dTM9LIie2p`$Xby`7PS-8XxBs4Zbu+4<j-?AxN+S03ltI z)f*-d)ETRumaIRqMJOgDw_dG#zJ=*5y|1xe$1<b18<K`s*?=p^_YDzH%}c@!BMuZ` zW>ZFd>BIMJW_kQaRi>k)W3YP^y*jn9Z{|^l`9r0<;r~g!k9S;KB6o`mhc82$6SZP> z$Z|(ht2{h<!h^Uuq0pwr&FK5(#xoLGS<{)){0;&Ukz%(LIHZId*L$01>{lKWCTAv; zPeweJ<N5C47PD1HgO9J|Bjjw$IDuEWT$N5O*!YcXyP+|bboEhwq*Vve!$Hup^k#?w z@$9i>@p97<7w;<B;!{88po8B-L+3V5ZX--6C@LvR3;@bY-o(lnTd{8IZN%9CK(R78 zZ|`T{4R-k-Pch+kYmU%zq*To~t8eDa`EXU&^+pcPRLO+DvE5x7C3X<aq>|&=Z$3-T zOG;;Iw&lvwdEI{$Eg(S?8Vt^t?P>^r5oG5#W{&rj-ppBLN0!o{pyPkfu~S;O;tKaS zG!4xV_W1*l6=KyhAoOZu=eMIS$cMR60+clqti_MtnP}J+R;n-zD#>*>;Mxo9_^t(+ z<9-JNX_`RwYAi5k=NWj^SW;nu<!<Y7N7EctmY!*^!jvme2u2yr2CjX?f6SBA<XLsI z{fSO!!qis%@x1waKGn77sLR{vRy;$MX&ii2>h3Vs8ch^g$ICu-xZ(Oh?|7rgIZbgh zM+g5u$HRDDP4p_Ox371U>j`<FEKE&zPmD7!d&&BCUg+EbK&n-)(w*VY+vKshC?BjT z(<6>paQJF_D+hqum*xM1;~3TIN0vQj2lG1yzu&SmTpWJaFu<U1n3z^3bYJs5$v|*s zs(wD#nIklpRt$bPHZe7(1Ad?{W#<$2omS9UsRE2jcY4CKW~#yK@`yG?0rXe{y(`*T zzdh0&@!!FufgS|3e3B8_-6K6CpFe$OC8VOiaPl{37@B{D{VE`Q!@~Rxdf0Pf9r|bd z^{%z~4oBnisST7x%?TwRexafIx0mC5Yd5SbY>hkO-!1v8x7>GFvc!FNJ@@ySjKkNo zM)ishL)=OwBqRa?0&da+WUv25_w4svp14_>m8FgE9PKSb^UD#lo>)Q-;1*c;sPyvJ zLDo%f&&ABJZ@(mM!edp2m4s(7N6UA^Gyd0SH+x^lq1U*?^U;(s0@uF-Xo5%|jV~WX zZ|CAP3}2Gker~uc><hIN73@36%V?yM+rOrwhC`|=L0%;aB==sx-*EAB6*COy7MzXQ zCLBbZ&s(1zRBWxu9T;ElEM5nZu>q-5Q-r0D#&<d9Od@VUHjaOO*qm*#yU2I<i|!3J z=m);Fe4=J%2TH(VAMMiucmMozl+>DNDAES)ty9TgpVdCS@$mXEKU#frb+f-4x^$JS zg#19F!@z14VcQl#ug2iSGi^B2jJXoo^2_sNV9I|krIQT+_mrt2JhU98HYEc4eO-Il zX;0alQk9XIF`5zvbWLT%*`55$pSaPh**oXai<bo~hIwskya)*ZfDb*%y<6KOH&;-i z(a$4#cZ8C8F(8DW-^$}YPi&1#$xuo9GflF4Bp_I?<j60_2!}SG6`LnX@n|AArfla< zQjJTQ8%n%MSN^oT;O28d;D?C)_?soAWPFA;l`iUrt>0|kAaniq(neKrv_|Fw6d8W( z^3(R==enM)V{y_iu{CLYw-g9`0;xa@u$6P<>G`+(=ieGjSdJ-@M~?GGV|$mMj)`Zy z1pA)s$VMCwgkKhOM!#Qc^zyyxUs$|x==l$bEY~Zz{_JrD&to=RcU{?`s>r#`0Vq7! z8(+vUPL5p>;3vt-sR_=<v-nC6=UREBk$u>du6)89sO3QjlQvDfzXk~*XlExedL3HH zRK%mXG@qBh=x>(4`y<~a=xKEhh<`Bf#8FbSsG4sR;~IYPb@OyBV#gsjupoW#+)~de zN2riQA#?C>Y0gEh&nrIzu8tp*UHmUZ(P0(2C_ngK<ZhnfY>|}H!Ba45a^1D5qq(O; z45fP?RuNafJFn%^#ddhERk#__G9!i;QYQcGERKJ>b`L_st3GAOTS@{*sA%VUueJ>M z;z<AnvQ2jB&b{+-PmABBVEByKXn^!pU8DEJrrQ%C?P2Gkrl&gdokVO>P7`O#3)9!w z>0Z}VFbqL^r%=XZ-Tz|QrhO$KIJ2i@zT3vI*X$nU%6eNR6C05c&8wIt5D>}fkayJK zhjXrEhnK&WSfFQNwsRV6pM-9m`<Ju&8tI-#>-0z3$!t44KxC&VXzJ$5O8@K$s%w0T zN=%D=hWMIS)7mt*dw5A8Fbo3od5Doi6N4%YqBPCX`<XFi3c*XkNHA0^2C(5bX}J<g z0V{k`m+B7kYLd`iLHX36(JQmhx&I1yoL}jb{4I;s$RNWe$!I_#mlA09#yxNT+3Y&X z>1@W@Bv_0x3ItqeJuj#8zs+w{_tHep#d)MI=Sfn(j2}XS7lL$aAD?_Fo&*5&RgCFy z7>~Lrz61JmRx33@Keqlwhy9N|>0uYET_jot?rlaF_3l9k@NtM<Fm3OpFA`yQ^~F1r zCgCv-in;oLqc|VNf9ToqH!{SP>Qpj5;PeY^LS&ULQNw<)zeyjP<>+pgAo}pN5|WNm zEq3Y4HQ$phr8J=V>iwPV@N;k6%skY!=bHhoEjA~nEHVWS>P3f&%SnDf#<IwRI#-)} zmwSB!Tq5dzt{+E#X#M3kBZez2`HY5?Y7dy(WqS1!nbdts*bB_x*?GwFhxD1N04F%g z4%gMUT{RAMawfh973`z>sav~tB0*Vxe<aC5m<`db084sRgn7e#=VDJ5FWFVL9$REX z_InW5Ki6*)vHNY;ALWT?l+|Sdy^Hel4J=k)OL!a<%G?{2|KOrSt>YkFkhnM<A^o&7 z$VvQd6`DwaF?N~M{|80aH5qQRd~cFMy5w8Q(o)+=Dm;ZRH~Dx#t#Ng#+b#rT3ra~L zh9uMlpKraDjH8s8);0#!F!+n(`HSvx(x?L^%D^+oP=nmh0$0j%+BH5HCGh^8bLhdx z!SU*E{Jb&le`_3K@;(uA%V^HI$?!3^Aw!Tq#b_G5u1uZlPH}Yown^SK@SKv3q*S?q zat6$|VdE!SK>5n1YeZ)FB?^0-i*Y712O?8GR1O~U%ymn}IY)uF7=p*u4LQ`*Ua!as zO0Ah7+y)MnMt5tam!Bxap*Ko~q#g;<Ph77wVT;Cl7eG}*{gpZ;&S1WH5Scq9nB3^- z`dq5ERdooOyCrV702AE~;j!D3?FzDOEBHelsbG+WkpqBLr+ihZVncnJ;U}G+$bz+W z9Vj;+JQ8ydD?TEgN`t9Gq&_yxI_^FL)rY^Jbm1Z<M+&~D_~6*b;HX!U{U6*@9RD#6 z=>s7JsMX0NR|tH@Ex9GhUR#r5#ct8kbXya6W+|qF13;7pK4CI{eScze+|TxWOL)lL z&??HAMR_FX;lN-?f&CW;hq242AV_4S#fKdjF%erN7*g$AR?et<k0o<GLG-r!vaW@p z-BaoJ7K<!)>CZt~mM%_G7FL_L$iT%Gnjf6dD|6w0+wo%fbsDFw7<^{<9hiFWJZ`M) z&A{s*qZ(I%^|BanDj*Q~D`rrO<U<ipEX#YV+Ba${vPC69bVJ}Gr<_@ixo$5JEI*0O z;*-qVz58<?BnWA}I`P}bEi5<+=GsQr;4re1)!?Qf(sBiI-oV@jNtd|4Jc$HpEjKgf z!vwn~HNZoMi3GurG*h0Rr=*kjXB7>M2e#z_YLR}N<l?M!r&MBldUuj>aPN>=gi|xq zF$Pdi05`c3q?B4*bDv!`LrD#(tC`a60R}A*BZq^*aYKDt(np|sk$@%<kgh-o!vFwN z(Wi{?jC;pdusvhPbtVXfc|+nlnRgOf{ge6n1rv;69(Bw@9}lD4myW~%K>h0vFG2Z# zKRs1M@xF5UG~d+yEPi?N#w>MKPRyP<`ifM>GZKT$%n6yFPz;h#5GE8xrcs`>e466( zRSi;Wu3iryr70!sIIpH=F_cjv@%X3u%uMO4Rrenhot}erw*bJ%Z|ca6+d>>wC*VCm zk%TL^Kq^A$D;v&!d+z>qgwn!()FdJjBo!5+!4M=zq`E$MTAO=PP$HN0!65QsvF!Fo zo<fb(9aqW|`%1vZ=I?Oyhn}D7M@qtX1tUIew2%OsIUBcGaGPXg+QVfCAxW7(JtQe` zPcys5;=VmcNu57ZFi_PTwQZhzq*!DfA19oKv@#ZLj$xS&f-5V*vnaL<HQ6|AJ9*I2 z_`&Igl3$<oGgfP4Om+@$KmS32B3S0B$`k;Yi24q*R^-f1X1q+tskVSN9&@XqUB$B> z?&$q#Y^uq9QoG+N-~lx?6RJI88BmR_aV$g6qn~T_9ys<0HHfSKoG><!z!jezPxn^W zAV{*FhSW{2|0kX2zT}rlSspER3q}HbLO*vZV;boX|G|lvW3O2Hp}|nuc=obMK0B!x zU0q5-aQja=|E{jiTyy*}?yYMfujmBwzO<!r7xU%$=+eEu2M1~J==_<*PA~5WkOICs zwoc&VOlf@nu3tx){4+l$h~2oK%@hf6{yb~i?VMzHx(sC$1eMESVZlz6ELprSv!9RM ze*e(uS6fNKs67MH^Jr44wL{;o@ySDjId!2@8o|e37=#-)Y&<%f<!dAZ3_E`w1#3NT zWhKFXA~S;GluTj(O@jVm((9aE9{U`m8j}uY?!eGAVT)%&p(xdZbZ}h#3z-(WHmfCH zOz)s*8*T3=LeljAy#STYIIoaR2e*i~<LEb3xqR}fEapji(|)3IIUa5-+QW=WlYCVY zpuU>5*x}gwFA!>AO<q$27~pC8GSe-M&-$ML9L83fj(W#VD38zjG8-c(*+ks%6kBY* zSDz@)`E}ch82__X);9!R%E?zBycfN$Sp{j3B^J9ngtW<Mai&;mnKL5siuC?r@>|(f zdQ%^bOrsjv8Eye7PO~LKt5Kd#m5(8kj}Q-Ze(gEtmrB{fX2fPJQT-Ie^Q?dU0k#xa zMUFmK8ebk5=1zM9*Te>8()QttKX!TbwSWATQM1T|#OJdjyJ-o4^O}ZM;fIm&xFZGd z#@u;J@|Hk;Vk4Jc+TgfsPPvW}EvaeCGHDW>r2Ep3aBERZUd~EQytjHD?cQ^PtdB`a zdXLcP?1v+*Ew3BV{UE^*-3YM%h2q#A-gD3srh+3v!Zmd@#1{(^$^bw>k`|@KR%r2_ zDy4`w{tTL}Tf|;lk{(;wUbA|Zv?h~8x8V<>)!u~n(gV+wi~00^1n|dGXsT0}%9y_n zX*2{RMUF}p$C!|LHM=p-s{}xFcc0~rI=q%Kg#(~5c6}`fM;hwZAVcK=G&iZ31FO+T zqf+mNJ8&CqWf^^p7n;6{1v!vZspjd%`@#l4kDC8Ud7NK9b-fel5&;+8v9W94Ji48y zEBsF;|GvO_X1NWE0;r@!=N_vYK`ynNCQKj(NEM#b<1JnCv;6Kb==#9ejxrMJJGG}h z;Nv>e()mo(l8mj=Tc?%&<Nj$~CE6TKObp`PL^H6Cw6w-HqI*F?A-X+oFzFhm|9rW> z<PfnT6})wa9H9(}`<*tZR+VmW=y-Y)HlzHjD|M-tBIql<dCPKJ%Zh1|3zL5&O~yM$ z;4KYjF3Yq^KZ8r7@^EZw?3V*y2bVUw=6t*VGCy0%-|fh!Lzc}LP%^QT5<}V@<6io= z<$cGMmAPfSE=`At07Ntj>f?q8SuFxu2srb;Dyz!0#nfy|X08XCh?dec2|<S+*}=K) zPo(%CMr+l7Gj$583up=x`N$9;=2yCTa-sO+sOwW>^eg+|xFSWe7#ft};7bST{46_s zX5{uOBu$YZ4}Gbr(f2a1oZktLN%_m{Bx~$CGFRVY)_LPJbEzRDuXuhHWB5qdEaF-k z@4+VRo<3AFpC|Z_{ynqfyao8!`W?l;!HP4Uuxdsyj10Ndq~4EP4$u6Z&>(IlaQ?&# z^*9If)?qy~r|H+Y-;}@hK(pWgRKR##P)M>o(LPA$UY5#to)tl#32y^R!lnwi@RT0{ z0Lx+eyHNxK$>h_W5)9<W#A~7n0Ni%ctZr%t1mIL*e?SaG#?ZKt+a}Oa?9m`a5D0CY zr^T@U-Qg#`I2HBhC934Nqp}8(hLmgZEvlY_Qo{TD|7;q<M4Si+<k!CGck%oOA*pJ< z>~=pRpDrN*$W=F7F%nO6XoA`+X1>DgDz>jl=t|sw@x<F}AP88lW9&B2#DZ(k>1(OC zSBFSC(Ns^V7}83WwxSgwBp%LBa=BzA)DAGcV8ILjT2}uKD=<bEoTIBYewV;P;7`mr zR|c2E8R^nR>gjt3nllLK?v`+pd0obJ5R|HHYN`Lm#`G;8pF=1{v^F8P9=%J^`-()p z*YBQ$pWxz0JkeTFW$wD9oVIh#-yF1|3F`ysV)8Nk#SSgn>kSPhjE!@ti8sxQ`K#a5 z&z##%K8r7SgyM=MlX?~%3nN;y(w~5$MD9KY*fdhRy1H)I(&eRpGsHs9siIC#5*9CS z$QI9^J}G*&8~Z9?<ICKwH4piEImv(*riho8MnP87c9sYo0}0gIqUyz2xxnKot&0^? zM4J5IQb(bKd92+A2-Y8{KZVdqt+q+Hxqy7=*p)oUzBw(IKVIf0%>wa*VZ4&Xh-_@U z0N=!mrXFiLKLqsz;i3b|KqwN-j56EEyIw8_Bh%xSCC@K$qjoB!!0B7os~-{9GvS(j zuqU6TRys*veA%1wS3^Bk<zZzR>Dl`nQ`_bFcrdP~PW_M|!r(iD4)n@PZqhdk@9dnJ z-^@mw|5G|aqgzb2Qx!B7HyehyOrayG(9t1ub#5FKDKZoTRv=bUH2G?R07t3oYa56P z;-G#y#<ck33zsq{FC$!;>tGw{13_e9D||Wr_?=I`BxjS8qvbSWb`pV~<j{?Gk?9le z3VeL+Gw9;ubMSjGEkc(<I%1Ti=XCM9D`clT`f(E2th!TUkltyZryx1ikswE88~aVA z#6IaqrhsAiF<;9m$`KJLV#biRDhG|GugWQME|c)=lPjluL|dM*L=3shma2Xa4hWG@ zKl9`uY+;Ho3~31xl)MLgTJcaUT|^TXQUsP=S|NY_BN~XJTWt3V3OK!Kk6*_ek6w?< zU!Gc@zaatGLBJO?tuay6p(hOGjeStf{c3@Dv=iu2f)5e!tgfi)2b6L^jB<F)5FzS| z7eVwH`BCu3+6U3ws`5>z!|F0KB0&IIBvOH(07Vje3PFA+fUp{tbSfF#LCkg<>8l$0 z>3(=HOlrkKofkmD`9K<MtQ`m6ivv(W=Tihg{VNPt*bUk0)w^1{Kg?1tVIt*o(pR?X z2{GHDB8VPK3Ges@i}j_MO1;c}BP^#%$`TIDxr&|8_KvZYxn=INv8(48mcM23V)0&; zn_S4$cRAwiU}E4c8%@RP{Jr$Lm~6#i2X);Ibj^_LNE%Q4niJz%kdcv{fkgU~{`m)* z`i2RH36G5?kC{klRnDq5uUcD=Bi3?-uX?D*ij#ldWEWfws_piC9I_8$+|>2B`gtp` z_t!1bM+Ews>I0|ql9N%lS2IneQ<*hHf`{52$t-mY{FFqsyRMu~GFJmJEE}2S6<l=G zm1r^uXNC=px)*aVTS`0~h>eJZM4h<bRB5y5d!qpFFP=nuit$M?2ojEcMFN7b@T24W zESp`GB%lfP=obiMN+pB3C>q~^r{xj*2CVM~W_RVTK4U%2B(xD3;WN9Z;!ZyTA8b={ z>zg%wJ%lN2SBaMET@E?iXvjAW`D#`PWbfGGpI$7f)uRVnC|&`?WXP8ZlPc+>$1Cgl zIlmG5%`RW#kN<;I^I>W>V%=xUR^OMc{%!I2@yZ@!BC4)bZ(jiynE>mWG2j1e{+%C) z*Qacc)HGG9>ipIK)m>}k$SDoVSu-_7AfNTeIIf3V8u(d?X^%AAMa=jrHL?sh`RW+^ zSt7)A5cOqF=;tp+qCoOzy;O=Myu9(gnVdn{SqM`Ju}UUQvc#1wDr*dTDU#4!^;=E; zvb*5yZE_l4WrLI(IrfcxtQPmEt&T@VdrBe=YTR}_VS<DI08_)HX^tdkBdw&b!Z<VL zJZH#sGfQ%5D|{Z{i!(6ns&VNP0l*29QH_~ji3h@*DQ@sDCXhBLYWS*MK8HTFPTHA( z?n=?OVKjS!7gj3rnWFj(0%yU~CnDB2CNS_s&{D$Jat3NSb5~20x!PP^zcd{L0q(gB zJ;|fdFr+~kh*1_Mc=yvgpdR;1g<SkO9Kkc(2266kJ9Lx?Nj{2m7A^=<mT;@H>Hgq4 z@Lr13E@y=5*PuvZ8hh0SrV!~R#6|+*MWZV)&h!{3!n40ma*!_EK@!3(dfbrq^Jl1z zDqpV?lZ%=1LlD^m3Ob4;HIR^r(nja^Uj*aheB}~Xc=-1l_?Y_Jz{Ic$Cp5aUta7$x z{XA)vKDKZ^$!Rvz-8skI5mU;TWd8%?0xmjk1;gp9s(dXt8XI_WbDqK4!65c(b>MLn z2!fSzU0axEIEWJ?RSxt#@3gx^t;v=gEkcqiYPJ^S`(FDvEePdchY)K@6jNwf)!uwo zX7|43xlI1LKPC61b}c8sz**)d3cnB6fS8Fo>D(sfeI=Q{POIRJ1${htqBp^lWWOHD z$gQ7gXNQ<Z)*WjY(lW)`&&Jy2Cb^g<InkTNZ)dlB%uOP=UTeKOU)&t=2v|`^jGh}I z&Y!B0=irBbHY7<W=q2<n5+I}qq#$07r>YfZj4~!&!^hGeyMF#^d$m+u8TT?(*MH?q zKr0?oog3@j&zS;duYN)BOeIk_Lc|{S(<yh6EOZY-yNmhZ4NITPBtT1sN^M%-a0Y5y z#K)8%31kbF+aOdVpj&MEq=3sS-Cjc<;fHHF2l$M9Ek$+k6wEUL%rld|BO-qD%>u&{ zg2s)ZSD6xIScX@iW@S@@FDl-K_Fe?6p~fOzqq&g8iXbrYhmT4cIs}{@W+aX*B?*tf z?RD%+<`I)|rbIyz;#%b)dxtz)2Ty7@b42<}QoxGUHadOh>^|l#oA2FcJY_JeRTxr0 zeWiVq6s~DzhpP9dwXG-K6T0D|LrIr6@#a3^osiTcbdl_LqR|+E&6eM3)Hc->eByWU zO@0IQmq}~EnFJrRol6R_ka%w*N?YB`KL^03>WF}nA+)bWStCY(*EF3ievI!G@?#ay zFXd#CPrE0ZXz!Go**bB_?x4U^0z}=1bIpd*>%}^uT9#wS#eXW4jugk*n_--?TU^Wu zp7s=fjKC|J2sW5V2uS?(g!`zPW!^lPB`>8JaCr)-_c9dI^5SF@8##(8r+k}nR3TcH z0EaDm(gY!O4t?Um@BsJ3b;j3Xe$REZ(QQ;TuP*QXGr#-1IbhVd8F}Fb7hL2KB13oB z7oKHmAkj&iNb<2jfuz*cDNKV*aG3Ay{u#$Zy);wPQfA_cW{Sv<33HFLiV~7j2d`bF ztKu+xE}A@R7Q}?AG1>%&=$q6Tu45kd55sLU=zd_xFJfq_i4)lS{IFO|uragOiJNaB z<J*fkJxyLoH}$*>r*u`X%uKkZyszNAavU)P2~q?s7x6zVoFJ3Md!6dTY`)B+{ucB5 z(wVp^w;n$pHqK%(hr3ni7xYn$d<9v1`WXWyHT1S9;Y_Nfj&g$b({Exa7G#EX*gNH6 zR12Df8fw0p46se1iF${@uFd*N<m*n9@Wf-BKn~iVx8N@(<Gwl)P=dS7H!u(Qc9hMJ zn-xTf#5*Ld&7<|uD4z-HOL$9_2emre^UZ^86B0We{Z%i<uU_es2-_T0k4js!2Zkb1 zAoeB`-gE`>Ld`;kvXv0nzcO?hhhF2{?mXr`8bkW-GXrhYtGE{?LXnY%K^Zz#zGlW! zoJi4d7iZ^XVL>V`lES9%n;b)2Y6rz$ve>vNFG4Q@NCRZU&xXxm*LAqF_nR$oLe|4T zlGZ{2R3C>xj8o#Fl(=cPdGW3>Pw7||bXhTv^SiGg-u%VFl3&&DUMN0_Qu))pszXgY zD78}JjD~6zy?o$c3Lyn`ga=fXJKu(pyO!Qsz#9{RG<XY5em<Mh9@td?IrQP<g?lhT ze<p|eO{ePW-6085m7Aef_PDY)PPnGkiTY&Ll@XvN-a-fW+exaRU#<AeG3Wb6tS1rp z6OcpyxB~p22+0SbqQRZ{abE%#Go3_&vB>lW!Aq#6m;k<skUhA~Nc^l>CLthl4zFaq zgRT6Qw`%Sa+84b}FrH+CHj-AOI;2f?p`TTmKC_BO`s1Oy2D^fOmh#FbmI-y=TE-*) zoxWv@q$Ym@5LA5-MERMbiRIjufLng$aJtWnji<oNw2@&~vo#-hRzl0tyUUu<AMMS< zoa#zL4H`wh!8D1g2l}ZF>0Z3FATgu`?VZebp!Am{w}68{acPnLYFBg_{#i8G=I0;Y zk-EF{;(`P9onyY3oYksW(pRaf2J?HJY$ZCgw{1OLMYdgc_CBYQz(H6Z-duK#6`mX} zgnni0ob}G_yd?V;gIn7ziAbQi$#K(q+g1_i6+B~8QKWya)0<Pom^q_lvQ~mVs2D2K z$%apOV(C_1#rvsxcA9Z9tPt8-O{EIB)Lu9CX+Q-x%m@_|^1{+zpT<H5$YHM?NdEV{ zLq(c@OmW~A$Fn6b5pnJLI=A8dP~3Koe?`uJMk8fHIT-J&6a$z#FG(6qAb)MTJxS$J zsZCQM!l*=FRxgz&1MYu^MgGut*ocObon-mNegka`4H&4WFQ9X4e8fo*6_H?N@-OHp zF+{81a2gznFe`1uywR}q?EmsOHz*$Lq4U~D7gRMY{q|rzFkBLqSR~*M%A$rjvi)9n zcFfK9xbuq1x67A)_;~^m333dLo)<`}FLFY=JI6ZxXmRRjS@zd1FE*E(76dJa2Gjcn z(^oa|N^*KXrs4fmB>sT<C!=Ims;K6WbTUp7JAr~u`fuyXiwH9D<`mhCrM|7pTf0x( zvcQ`}O8MaEj>+i*n2A0m{y*rjTHH`h(U85LoC_NDF808dUrs!`#rhY_vtL8$pfkaK zeSG=Q6Uw@V7<^9xC^@3rY&TxHT)evPYaxFa^=Vd*iA}MCX)xxrrmPn#KtMB`x5e=G zx^4wSQW2vL0&I5iJo#O$D7%!)5lQkLC4yDwoh((!Dkq-Ar%FDe)JJRuCpqP!(T_?V zuJM9wn93v50nK{)uvgSgWMF~*u6uB{&*<moy$$GW6hW1moUInJoil8`d*^a<LMmV4 zIb!OilN{4P@v^UE;u=CJ1_`DIwPU8e?k)yI5qjL*$M!5nTUdsr-w>q)?mgx)(HHwE zRA7?nB$c^-y9_ra$hs*WDUz+%$!3Vin2uR8BoAk{b6?kv3Mf~mcR^zk4mf!C$ze;u z;{D|P=qMWGvv{f&9<_^M@WWfop7)?j9g3!})b;D^B@5S&?kSgOR=FC{-K+H0d`q+I zo<MxI(_WH}+AAwW=zl%%4V9E<9#Qqm*B>hV0yg9OPv_~OtFY(iBszjv=gTtlL~wYo z10!WUsYq_5t%W<B_PjgnrPEqGU+9jBvrj3jshXgGsWK@t)zi0`aV&pTZvn@v(V|3Q zxt-c89GW-|I*T7QG0$XD`R2zXcuN6hSkq~Gs(2_FkvT~ri&@MwMUX;?4ML0sw~me- z;pN?L8!9i+b~5nBnuqRm6fOLcfy|Mo{C0X=z(p`;Ahh5Cf|G<qLG9aAbB*o!^$YRu zyKRbpgSu@^lH6l5XY`wxwnOhcL%2${I5D=^n$>tnvf%$S#NP&&jep-G9`I7nqfqT} z>A4*lpi`C?<1BAc>^cNZPIJsxZsgGMR#AkJ)ADE9YQ7~j5V3(cVB{&p3Qgah6@C4_ z^tt?52hD3*9f@l3Upyt+RjyWaK5*J}@zi)y^$E0=fGb#iu>FJYy=3m<vt@#N=6n%@ zz<I!oanw1%1C3Xoj+KN#780HoqyD#M{5xW|UCPQg%8DEtn%Q(_WJkr_hP`2UN<Z8H zK?>)DByN%>Oryja1Y0AK19HtE$@pVUa$QG*X@U+i82Vt8+lzY5&h!yUdrE?LN1erJ zgR6mNB~P3(Gdn5!q);Cbs1yk%B6+M#4x{Hq7p-GfD=~tl6{#8-qZ{mYB`?w!7=KGz z`N`|97WwhRANVnss`agVN-}W<>1LC_RmSwElH6ju?<12~F;+{#-P@-vE5T(<8~znc zHAU<6E+EzwMNEx!x5JND%f5zvisZU~?hjBQ5S)HkhO?S4o?GTicq$&p4s;oI2%1>@ zQv7YP6ZJq40k)pIeJ28FII~AZhbJu-{VlX4d=ZFuMQq4d#6*O8HuyObL0a{!mwwZv zm8M!0j+m_;EH1;+m;P#d(!Kg@Ae9=XjtxYJ1sP$>$N$<$%f|Hw&3Y0+#%RCJG}pM? zE~Fz#Vhy%hYRkX6f%@CYB>h%RF}9T5c$WN}USvsr_T~nxS0x6=-|?8B63}=W{saGD z3{OSOQIeYd?j8e;2mO7wufkGQjZyEaBi|?>?{lgGZ-Pwg&((Cz;c#%TtlY-&BgvJI zNy}5{{HDc|Lydnwc)|oWI}`e3f0ox5WCdltZo$3+u_32}iz$_#@psmoUz;4<HHNNr z{)&Pd(IT?xIETP6K#}AgR|%Vx3Mkh$)4Vo$7TqUBx6*2-|Id7HPfpU7sxr$d<Y(+? zL9&Z{;!qm^Mnd~65mt=TzD3&`Wh;JtDkE)6P2Dt|T6`2-Qp%EramJAfb0lh}mB*Cq z77}?lwSQcwTMi`u@HI;^$uLiBj?&Jsv{0BlWwI0FwA<5ksD`lK7j@G=LHYV->~EU9 z<^n5GhW^Y{QLhEKRdo5xM6CR?S}xXl+E2fcZ**n2)V3%NPchQ|JW(aJ+JbAF@5<5J z9b4-5d3PMoxZH@j<@!NXqu53psf_$sJj}-}Hp*6u{uJ4F)>NIt$ApBX28W?Lz^S3) zN}9fM$tTnBEs8;ksJDn*`OQ7kBi*@E(uGuy&x{}a+XZoLcTa-;mIuup>o~i0-l!(* zr&0{L^h=dib1-;eSvrj7Zm&ULrmF9GA}&`3270dhIwF=kNggw{4}F}ucsaRKt#dMr zTF5qZ|19<KE4bQEbKOnqe8Bf2G<2c=f-55c_)NUg@?9v(kIu{eiG&3-VFoo#xhn5% z=D_*L^pyw^m^hO9YN?BI;d7RdIAwC##l23yV5;6%#tK-nr7umwjALeYQ{94_P=Tv3 z=JTNJWZSI%Hu^`fQ$rh*uPU4*D^Yuxq6DLa2eboHUpdr3kF-UwkCeeH0#(m4NnH-* zhTO&mwi5iOzpiZ&cSmp1D@m5$;hlQob~1l@bl|mJuE@Yj998%EH*8pIcy1>l$+4}1 zw^r(--n1+~50}&z5@LG2Z;a7msvnKq9c~Bh<{bY@2)!4n$M+}u@vhoLcvI$lOSP^1 z$%zwlrk`Ai;j}aWKq>_GQ!^8cEuKMm?x)YBd-W@u?<b?kQ;juVkzpkr!0e{_ipadV z-_jLsBF;Yjff4&|%Nj;sJmj&##UtIrmDcXoS4YyJI-B;EZz9<^_P3%DSxK!~n4Lfz zX#9x~JzZ2>GW%O!l^CzvU|mUCRdCUX(Pr4(z-GPND|Xno^*+<Q+f|~kM^o>zo%(MT z2dMJ4yB&xh9;6gCGQ$~nSpc?SPkkC%e#zp_GK*(IJoghQR8@@Yv=m9PTF5si3+61H zUriPFsgV_}itf>K+*SXrZMBl_ob=vi`vRH>6V}Xjn|*z8=oc0mo_J!32D1U2iaPIZ zDop3!{(*u-^hK?FxN?;DS2+hvUuoQi#DPDHa(0Qr-Bu=UP!C&ev&v({Bv+~r7kYk= z82iG>WB!rsn4xX0v%=a&mE@E9QomTQ5hF#0Jxw2^XJ|iz@ac<k@vJ3~8NJo&o$I8L z<OdY6&JG0SjGs?CZYg1btNqAKNOf~5?BDWJ|ENH#Z?vO{7A_xuPRSBh`JdmmJnKPq zA{mjAx~O;MkXGLug~uFb9UJ`JxnJ3Mzox<&E`p*1y~9mjAo+Azy|>q{dseRMvAITn z26=ANb%y8}?k4@WFoq9t$dFF5n~M#X7Rz207zBTo<+d}eGfW*tTRc|GuHawbbWGBC zNCZ-qssevD)qt>Lx13pii<k8B;Zu*DbC$k3UA(VZ6QA3fpZzFTd*wDOVfzSRi1N#i z_=nyM#Ko0`OxgBJl^=1kR0)*--CA8YDfM?vB>eGk=JHfZF4phqWFgAO!%dE1J^%c+ zWb+=~78#bY_;-DGaija@^QNPPM{gQX>4@H-uac``v{Cyxj};l{ICm$$#H&9j3NQ<C zcs!`CPXyY2%vxza*w<Bw+P(E}mMIj3l`K8PJnRd*Jm0GAA?#VdoR1<qLzl(&ZUgg3 zK<~X0VQyX;MHGWt38HVjiYVCLjNjR9%G{K*EWhw${1f)HWCGjfb9S>n?ClV0gCrtJ zVY5>I+%9UyGVo-#&vxg+>ETRRnprlOJ&I>k!<06`K!{Ht_q)^vrH|zgAFO1P`U(nK z>qIONluQm`+kbydR*%O9iZb@G11S%JQw^yesVn?$qH@|UG2Cog@L2iZw$0LDqGMN0 zp$;uX%#1au7Er5ktSUj*P3$<;Oq09_E>|maJMX|~J!~#^bZ^h)VU}%{X7-nx64Ar& zY&R%aU+(;WM9RA;(T!(X=%M5w#+fkrgeEx><dUc~EgfS2y@(=1ae8BFxnB}F>@Vub zC<d%<lv)kK{<Vc~e)w(Qd@P3=--A465!Mw!{_VmI?c_4QKAV~G?E0_OZvG?H<3D61 z<a5oP>&o-w<09jpgbu)j{hgB0c=DA?Wod4r)%)4pS>f9ex>qUFh6(l93mlXzpCMgx z#iMR5hNG)lRig`g@k1|6ezXtcHi2@M|LzS(jTd&>TNox7^jF0-I%r@YMfNf{Kmj5L zPOj`$O}DhU+kycuA5T0M=OwP`QG^~^&1^rZ^9$b&Ik^a(E1_m8AS!jK=DRRE3;*6l z{jayABYe6IPiXVj2J&xn*iQNjoSf}R9pPGb_Mc7XOFWdzo#2m#djygJ8n!waS{q-= z53gjYhP(MowLwIX^iuS9>V-=BTKe*I<Mh2$@t{GGL88b71`or8cQl+_Ul=M+^xcb% zCKxtxbM$XS>fds&FcQ64xZ_eSdnj9bG9TD+TyXV-f8|%B`FMki$^4YgaBk*74w+)M zjrJtxu6GXCDD?|(=>a03eC*?4{nm=#hQ~o$naa@br)OA)=v@j!$T|JOhWbCOX?clh zmK*b*<;SBd7`G>a_fXtb0z6gpddD2+P2FQCZ+OFReIIOKl_E(=g~$*p)0yeF9K+FN z+b4>jsQW>|9$2a3?fPLSlZddRnc8cYxq!7$5-Aw_s8A;cC9-DfC21F>zd%zxT=^}I ze1-T$Y8%OEk#w4zw8h$W{rCBL{*MU}l{I_YZ_nKN1WtX#we-{S$pZ*48hHM{_X7A& zJC)AZvAzxp6gX&epMRbZqEgP|J*1hhnfyVvJqpcNYhvZOAD1)^1}qH0kg9+#D(~FH z>DrgK7t1>6oR(2DLtC4V4{_Vl|BI*LJahoSsp@7LI@z?XOwf2}^K!hg6*jak6w|*; zKLx$jn9#DpZ1b#d7;Srp30(Ox_WS)`0Pg@0|2fp5jXg!c)1&zOeeS)zmlx9D4%3M4 zmDJmMjKe%WbH`}wLqrJX87|A5@sih+C7{eJ$}7sMit(J*$yn{3_09kQvZ90-JAJ5q zP}^dRwyA?YNu_V7G$sqBI`p#c{e8Ord|V&XAhq!UBUlk~sfv%5HC^4byl#1&I;Kb+ zvn^<om5gL1!r80nB#7&sHgY|t+w{22X(K~w>s)ZJ>lkBroviqB)B*U%AAh_!r~m(o z4+#FmAr*i7^V@%a|0_iP<XP~wulT!7=`UYB{>2N!zw<`m)Bo^4Y2WkU3bNeY00000 LNkvXXu0mjfidE>0 literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/flatten.png b/release/datafiles/brushicons/flatten.png new file mode 100644 index 0000000000000000000000000000000000000000..401226be862d25817ba56bf7a3f19effc3987103 GIT binary patch literal 9114 zcmV;LBW2u)P)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NN=A`Bt<yMq7#AOJ~3K~#9!?R|N$rB`v^uls!WzFFQZ8Z?8DG$ZyMn;nd#5fm5< z2^egaIK~)N*%A`CT(K&YO#+g@jzh&Rvan-{l&MNEm7sVDPFNMO2qZLGkVYF?qLD`1 z>~G$E_ulWE{^gH8=X~FN^JW+cfknz!ujajZbMN<^uTP)uUw8kyCEK@e$B%s-&zl-E zyM5<(uKUhcQ#&<dig9T)`QXR@>W;hbuWwQU!&UQui3kLuI$S-t@IC+R(-)st-xRiO z+xCQYOCrKV8X-_oRRHqZGoJr<m;L~N3LpXi5=2x0h=_(}FdWRS8h-lXcLQhusHz5y zEvPgD02Ps-7&HJr^PzVufG0ou`6?QMir>jEtg1mn(BZIY0E`dsODO>eA%H-H!Tfze zgNP`A@#3M48`pslfvTvAh=d@tL{LN;K*pn`7?S{^YBW)Zv26_y2><t&zt;d*JiL^W z#Tb`HlhNYR`i=90;XsTka>ci=o0`dS?cMRb<c=FJr=@Ey`+GA>iPPzHyfpdU_kV2W zO}l<{_0^YNl9E}nlq{tb+cX(Zzjy5|fAQbGk~bI@X#_xm!Vp3;Y*wwF`=#eT<&ziY zJ=QoGX$T@B0)+w)AT&Ch8x98HlNY`VKojFcg9sXuv_wEvNj6O&^XALW%P+a}<{tux zF~&Bflt=&|8K==`DnX}9hfdylDuBFE8bq?fNDx&eQ!^PIOewZ)Y?=@>Scu6e3K~cP z_{ukTG^52OGn*R@QZfh>N@a}6%v989i=#=icz8rI#xxzbqtSRWo@{yCiK;@%tvB7d z>#qCTl<-LHUE|-@tX}oKul-jMBBeWSxp};F7=)Rnm~OiLo)3NO3qM{5PCw&}FZ}2K zK=R73U($#qk{}a78bD)8$rUoSmXe)&(Z`RzB9R^6_#Xoe6o?s(5Fr60fS@WO8kCL2 zls@~%?};hV_^yjTx%@&lornlT;QQ)|1&Rs?h$yK5MKnkXA;gqo`t-%;13c%#Ph@=) zAWlarqADQ-%?CTH0f?*&B7T+!O&AQC;oNXIHwaDhnGc=6X7wrn3Lv%<4M9~y(54AN z8x5+eBG3RzUZ!75R6`TAkq~q^41>YoqaQfu=}$aO0kq?V)1Lg)6cb<~2mz`Rnh=_x zqCv{)(5)_L2qE}0G$Fk2UBA`<m@FPJOOHKy%bo}Jrj%4wRRDtoiXbJUfcY^2iYkpX zgNTX(a04exi-(P*arNrC7~|5?G;fs9C{ztZG6RjEnUIM_8jL0)qVmNrUDf~?EiMs4 zOGa8UrZkzP>9n0+zg7eyLYj)02nZq(5D^3@^xI$Gu`r%Qvj)K7g^?dVl06Mf58S&q z#WbC^DW;Un%u=#;+NNmJX*(WI$4isZxLumYQ5zpQJNbybwr$&{kJPpD>3_=`U-QBD zy(dnmi-!;0dGn1S1e(Q^;xvBf6JNab&fP!$^xyWw%QQ5kX&CId^lwNCgrpfQrIf5~ z+Z1haaq0K|&0iej(d6#it~N`6Tz%<Zn;8Ha&CCEMBWcOnHoEt?^{#vW-DfXZSw<o% zB3FImOF~x}x+;j}(*TvG2~884L3rwEC%fA?@};hFL6v@<1ay;D&T1$}t7)312_b|} zT==d{8|If^$Sf`FyC2A(6N+C=ARydM1rY}gp$W|(G$H)yAN<yfpYxR23&nQ-1NWdD za0>l-2vF(Ay?5k&X+cGQ=gq(Tl+#Y>T`09#6e<8TdsC`VAbr!JfCSYb+Gx`R5nS-j zU+rHg&Tn`O01*u#h-P!>HgCoZsRnUqq@mGf&@_#F>Z0=tz_U19waSfOzH`19ivgOw zo;v1|5HvK}H2T8lJiR;`O*4Rk|DdY=q2-Gb(e7U*gb*4%|2JL@KvO%7?IfiHP>VK* zKvY!WxU#>r{Mc?rMN~rwvgL#gYH@05^2Db-(~JP~GpeYns6wC$N21-eR3V^H)o-L5 z*UdMn9VbgPi!p^z<Rq$M5K^T0G$Gl)mL^9&8Ui(_w(U4h$FUth?&K}Bd_Gitw|xh) z9!Mu7ky+U>C5_W@Y$xq>+P3Zb4fBrR00>l7kY$#C1%W`!ETz=n(h#(1r>&7RGh<3= zI2=sdHUxzT2yu@srhpM{)0rsl2uKLN{jF;q{Y5jn=}2al5{%S*bMYewF@PCw3WWJT z5eaf|VML;7Cv74@m?bk>vKUjlGy$-B?P`$u<RyxLG|+EB5{sjyD=)txnHi;-Oj{a# znKVnuQcNkPwvC4l9-fS+^XpcxT|cj?W+qe<12CDi*IaR9+r~-TMx#-hcG{+7APBgu z{6Z-u8ddesfyI4$4w}*L(N1F<<8;!}IGx66vZ=$*N0ndOx^=7K(e(0IYvtETTQ>db zYtMSdQ?{LY(uwnH=7z&SV&U+3|Ne!0@85g-uKT`y#Sd@#(VdU@n(~6Sp8B{;zx-c} zBp}T2^ZvW<xbMy%VKO>A89_uqGg&*3C!hM5C!ezERWE)ziIh@|$!JW7DZTg4{_^0$ z;h$(h$!yn;t}-*yg8Ns|E5G)oW-uTbn&1c1m#PX91_7a>Bq2dm%xG#F^do<GwnvaL zr9b+}=MNnoJsb(C2GXNF+<D`U1NYrE7!GpGN9N!hVrCF2=rH4zVoISB%xES`RkaZ0 z&)@q_Gmv)i$G>>*gZm!Jmbuv!?EL;W#*2sC7Wxe#Vl<K-j^rO497v8>gQ@`_MNJuK zG*!|p(abE#Meli=1Kjug@n@1JDSpg?%t(vV$<pFMH|PckkZ*&GmWZCMm+o8`Sw5vA zjz37Ms-+|vXi3ayVjug!IU@3@zxv9KowprpL9|G-efR!f_Z5zoEJtf_n@UgwFqlA0 z*h2&^CpuUoO+<niDW)P~W~yR|W*$u1xo>+lfX`j>&F@`v(@KaBNU2S+9gh|SIeurs z2-%YrpXS&Ef*xk-V1;{B_tB0MHFOBCf;<%!$k}gv#iu`be$eHHPytwsmfE>B>m02) zn33{UDZg?5>ToXORW8Fz+Mz?$kU!^uOdKrwvO-V|3dqMlaPGT*^PetX5G`7YYu9Zk z7tLraXiyER1-EIIN`^965y+tnR?Fp7pg}rt=a9H@Jgd)r`e`4(@cdZ`r3g#Spz&*| zssxCN1O!DDkBX{jK{XjDEt6A!2lFm#0c!QZL_?4ef+Nom!rU-?_D_DVTTqJAl%}bj zobtq{m%C*&1QAu#trV>=7y01@qAQE4uUj2VmYS1N&r*aSs-i(J{{6F)hr<>pW&|)C zG;8M9jSe4HWs$u<q@Q~uL8#G$LNiea)QmyZjKr*}qdSIX=9i=TB@_b3qx5)3_@u2H zpLW{GjZ4TQI})2VZ&uZXg9q~Q5;w;n;oAhIQfPqhpP33sU$g?K_g=Ope<p<xpqs1g zHW`ADLZWE~4S>{+&D^n)<ox{Vxw*ju_uU^t@T(VZ>x*;k@qYkSU;@xY1vJaSLANY| z8O1_XL7JHx4ioEPWQriRZ37@q$H^B|;#ZO<Zr=33{d-ka)I*Z2?`|&*(iul}<7^Ok z)Wfo@k`_~f{>=U@YnaXK@PUI%gF({(Xxpio6|WA09yx5>FdtJIjm9RNjS(D-P|7t8 zR473=t$A5~wR~A$NcPIEg>^L~2gAWPFZ-@g8$jZ;H5MbCmnNPvuw=u*Af@CE%UuBk zAduq;5YT*U-yNal?RShI5F=fpDrzvLLUXu5a&d9#TmS3(ZrmCG)3&Ct^M-lA=Q5_z zXqGG*0Sx8_#Uwf^$S#k_5W&?(%A-RBW;u)jKqzv(!5{1!U%k?dDc{T&G@16YpB3<w zlTKKE(NbC(jm<2^BqD3)R}bfg@F>u_E7UV30!LH=z|~xYWHW4beE){S3!{{b<TRyd zjHHpiptj1U`gr8X$ipM6(VL~ZxVUf6)N^=VKd_jCRuQ<{QWZ<qPUCnynJi5`FKlFt z$-gFToW>N*+LR)hpp6K=bIl#~coH*0r`0WCQBsyLuD<Gz<uS@{Ez6kYgs~I0SxQV~ zGDMTakO*pcl;s;eHhc6eX8ZQ-dZd~EhkZS|BG*Ubf{q$Wzx?#)ziRu7ww=1=g!OCZ z*USNIBlqn)w0Hl)-Mb&S;@Vrj{_QJ4KJwxHwr$()y6Z0g%afmY+Q0sn=e+cVzZlyH z8fmee9@w|{!QFRzP~j%o{ZdK>vuSHz`s(H1xoYSBLx&#`rIxK*x9-}t>ofoHPtH2? zrJ_PJDK6pK?|!|;Ar(PaGgFOZY>l*(><2q<|I`=${wH0~MgQu8cfS42MoPAg1aNTg z1GiuQgIqsD=epg|xdALzj%J>yv=k}A8*bh8k-z+#hkxuJbK+(VgAf|^*d#Q2?%#dq zjXOdUa!OC!g=Ywwky=ghs+Z?HAFd+uj3=G?nGe4EwcB6tFi)9R5i-sWO*@_LzV*89 zmf3T50i?r@nb1PJ3wRJFf;YYL#h<$9ymf0=KlEdtae?~nZ@By`9#?2aBkXAph3vs$ zmLS3lC%JMLN~|e@KY#Dp?>pzs57`ch$9^I=UUiuia)iTrFW^_GL{hS6&7cu8d*>38 zOqUQ9!M4Y3{?tY1t)E}>5Eev_cQh;>+$%=}el+IFOpZUYOf%9bU&yhWmSqJE>Jc>r zAHLunXTIQ>4?#izcHee`supaz%v$-ehb%9CXi3>iSrclI>iiK8_f_TXuRrVk=e_kf z7Q|e0+k4+GM|VU8%{>5F%j)IaWvwdVNZuijZWS)0tmauiaq^Z;AASEhKUPAd8Nl)A za6cDSh2%H)lt+#pOTbVAW03F?N>OrElq8Dg034zsP0&wYeEzW()ZzG)s;OZK!TJde zk8!dc>V@-N!0tz*<^*cZOM`@x=z*H?lNY_~7+dBf3G)(3$q#gxRDD}3?@6js&DL^A z*KQVl$~iC3!br$_r|=Bs$3JlH(Iu1;%}S*0p^A1pqB(=+A&qqG0xpZ*yZotVwFFu$ zf)~&7xl>g|knsEOc>Pgyh>2z*S>#0))mgA(^+1@-;?Z%Yhm?88Ix8hAy)2=K@>x&X z`ihtQ!VwZOI?(9p1pPuaS43gmq?#O9F;CV1bzY95o`6|Vi3on<b!V(7A)_VHlAw0O zQERz1=JXPo^g_3lE3-ONik2#zQnw9SGpZu;u~}tOmPoJ}&gFcbt6j-@RnzGDll>d8 zVs2_i$65EfrrV@jWG(<;ZZJ4$^QQhO%V~mDtJikABDsiAeL?jR<&w)Qu`6V#s?1P# zEt{&kJg*@9=^wnk&xRzKKwG>1gd%D{QH*{sC)hn=zQZxHi#2Q3+dEeU6w9fqd37|t z^7I$<?2wtIv~ly6>J2hOPsBY-J#G~k`MCx~MRNpxjJ+$_cXSVkjHDcuD&G9+U&>L3 z^G^T@G{&}R23-*YhMM>kbqDWPaL4bNmScpP)v;7tPg+^0>qAa@u3Z(jKK3yrm1N;R zwp&i#Hp9^>rz!(SK|iZoZh0*2uJ$2c2b?hhJq<VVrO$m1M3gY5XcjG{^&2<kyi38W z{v4fd<u$qjRSs>w<BB>iy-k8EL$`ibh#(@*dfGM+3d>4Oi?q0U&Dxw0>#n$L3#589 zWC!fvkw@FRnY9XQ=C$Hq|8dKvb#8}@7A;0gF{O6%Nhf($%dJ5v@kl{6qCycW3Y9~( z)Ij9uzJ$FjzCfk$6ngtE(liQCNlVdFSgoa)V!PpljXBL!NKX0j@}m?O;g*+~f#k{m zeqM07OX-3F)RcbRfou}8gqX~t*M!XC{QMdhQvdmCZo7lDP!&+=p%kg2T&D8<#JSTA zbLzUfq~80N#t{(pkkhx!QfskIDL(e3%^oJRC#Vizi>tT8Tq$u{!QC@e7MG<vBzQR$ zB_-I8?*QC<>)lyGDYj<Olb8N7v-x#v@=7=(`MyF{bSRmq?!G$1UJ+`k9)TJ2S%IX> zYLcM|ckQ~TGmLrBFqTga27{m>nL%ejbXJ9q+2eW-Ls$H8C`aa9GV^q9mUm^>^z|&Z zaWDvoXgqOIlBYo7%Ft}}nz_;9ILEI&wV*3FO^_`w1X{H;*ZV1goYF5zaTm<;)esb3 zb@eU&>4t=*#A19no5P<QHj`=V0d)<7yvpGwLDdaM7hh)>P@XTBJ94I3Opd7A3x>nt z?tAz4e3`G`ax%ucyfTw9SAa@vT{79I`o$VWTB&_>hd{DG3&hKU?6MaO8ovBLzpJW@ z2|$x`VRg?4qk+Dxd~N4!Y7=@krtr0-miJi$?z{}vm?|IsVnD^q|6W16;_@44ot0^v z;#>3hoPBi_1><zu4(A3M0_)CYYDjh{1dUe0q%8BSSI#G`VAO47BiHS?W#Q0bDhi)_ zT2f3o4lE1xC0kd2$>q1D#c@iuW`4B>&8ltYCdt^vWW|6X7t;zX&zYSZaLacty}F$y zEB4O7yk)&2U$I!TLh2PLXl4iY9Wt}w++cp)S{2F386`}8t9#5oqjOri+@NT{{=J8G zUU!=(DWh4kQg0J9G{%^^_s?uxDF!AlnPoY7oH9B*K6KzPjl;R&sx_<T<_6kmbz2Y- z7%5<{wnpsVci^_0@ABtQ$;~lICNhz}AWJcIF>6=+@eF5{zZY*D%ymUm5ek+@<HHM! zDbmc`6a^>dhX9~$<8(S*8co_ZTB29eV)hGJ>WNIoMD|Wu4;WWGRMHTx*IALQm|URW zOCX^UrR3EUY1&$vIL*=$J<_w3XiU*!OqMK}C8H589yd_UuKN!ZgvctROlR&2W#DW{ zZ047?{FlofhR7UHGZ(SbIBAAxNM0-x&F6Fb_U-%k?>}(hz@x1!^bh+YxpCvh6HYjx z0dVl(!Ckv{{i9Hhj08?N;RO9hLHwMR6Mt^Xo5%ACLD#NXJsdQHCWN5Qvw@>lvW+n% zi^<xyU7AeWHvRuBpjW;8C8xjSdH>{9XEcpxdmTKd0`d$LGmJ({qlJZ~(PBHDSV}WS z4@mAX2-RlyokaO+LC?f&7-x22SRo&>ah-P*I?{_8J&(es}4gl!u(%!`O4AnAaT ziRxs$wC}#%hYuc@PR5pEO{i2FQ3yE~%)%H~5hA$zJ$3W?Q_gz+>&|>0&3iQ&lRdEa z;C&D7zviYpckKMp;%NM+Fx6+CdFGx6AKb8h_3!-l+s=I1i-&V_z48lZ@?W5+jusYn z-Fp3@{SP+HU>P!~h@%6H6v90Aw;WN{K+QQ)6(6IAO>^LBX5YQ$=Kpi$_5E)3pV@2M zwr!7p{Nv?}GtPMHuf6V#um5Ex*8T2U1PZ`bZT8-K*KODTAeYT6v4BD$jWx$uNM5D9 zV5MeUi^(ps9Qa8MYtRcboRa5+zDyT{?AUq7=Pvo$blUzb1=KiUR<$vvqAKhs=2Ugh z{rB8)!w(c33>)wD>k^J$5K^%40jp?aCWbB*W8`=D(@2_Gj!+2>c|%Y$sF;^gX-e`1 z&wRoQp82~Z_v}CP%`2||+U3{&jBHRzG^yt{JKYhD?evG2f3+QtylzvE5YaVQiU`cJ zLtP(%8>4(^{NHAK3yw_MO6FmTn<){JSzc6TLq&>U^QQH0dClo>`<2s2lj+}n^U7~s zwR7@QQ>&&FpDWWbe^b?k{d;cSahU)bv=lVSQbgdg^z&?yqi`Q+Syaf4Xhq9%NZZSV zdqFu<lPtf5G-kn(LYONR%?RP@x#62%{j#^b=4B*4|F@TZXUB~{H81AmRpuO=HqE{V z?z!cvZ#7Mm3kmE}`O>RebXM6q1B7L|Q#xjIsuta+a+8snr~YaYyU>ljrsin@Psus` zSyat05JJvEz2gmMz2glpKd`X)+5i6aTkgE)5f)I%a%DHYcyRA+*IwQ<O*RuOxzrVF z205QuxY1b!%ts^$uwtgwD|##arB{E-$6fltx@R>>DXG1hFav-M>(*TG&NrCZx39YK zlCOV%G@d*%0`eOR2!qjf-*zKOFE>cd?e=u1l2cZ)EG}tuIUQM6E?c4MQA$f*78K1) zbyik@pZg*pnjs)N(46lEyG*po_7^^D`-`4+=<w*@fBx_8xqt6ZCZL=JGuM;J=<vdU zJ<Bl;W_dfaJ8iJexU3+PoRXFmxJc;HzXhe!j^!-pBChAcGT}@BsumyMr_X8zyySfa z1n1YT{=j)}P2?B8{H@Ebyy0O6tCf50T0C0V-?o#=u+MfU6B{$%<w!0=HNE0xK8h3) zUzQ!DUlyCG3YWI8ZuUrNl5!)Yd4Q3(Zovssg(IPr?k2&xQ<<J5lpxOX!#{uBnV-7& zyjT6wFFvej-YYYf%o1ti(LzVc>uq$E(Mnb*v*N0=hX^xb0%v$DndP^lm@4bAFE*6f z0i_kHqX3nuNX`UwQc~t66=FhWKzcpoEx+=zkG}t$$Dgw0AsjI$ywVbx+|<Q(BBjXP z)w4;LQALTYWUtamAiWA}fraWAiM0$>4EZsN!&cfW>Iyt}oLP$1;jx3Nc?p_vu5|g< zf>LwGiwv~+qjP?J@BW29``lmeJGgM18bn(1A_2VmR;poLDP6Ot=o%G^OLl4Y=>VBJ zL#U6#@R>iIxjj}lT;F)ls8Yu}sMM%h=0_R(AcfXeIi`ilBZZTr1ZC5P^&h_A9q)Y8 zE05C#u?`?$O3h%{A3aeVt+(Cj3@uQ4Lkffyl-F{6-EwggEL~;l*tyQmD)svDq&K`s zIuZm5DYDPmQa4aeq|S#fbo?n*kbK#5pZ0Gr`0W!<*l;`=WS-nHOLMDMOKC4s6;+C` z*hN%g@-o|@l`N52Jm}NaC`XvD<B(Ambf-|6rkME@$Rf$r!hCP3M4PVnHFMmu>`+cB zHmzU#;R}B2MZfU0V{4FkoFhnJ8qBTM(DcYFm9ECR1nCj#W>g8FvWrW5T+jY^tfRH( z9^=H-s&j^BMTvSOtr8Db&8iH*y5c-KFOyAucvVVv?pt2@n{RmeF>=zmdCgNZp=pMz zR%4ck3#nxMjySTcWwuTwsjR&o9kg_q32UYGAr%<<Y)IDr(T?3W!#qSWR?-{mQaSk5 zR8>1g$SYs+?0<3gn~r|ON{1iKLeMp9*UfOV`eYiX>XmUsDo3zTiWx3cH7S_E*?W>_ zt7T^5@o3V@T(ORv(_`0aq5hV=VYhu!`R3Yto{XOWdG-@e`A-*~zijYN>6f(xr>cM? z*FR?SjA9EjC%JH9RZ7q8EJLqua%nH`2)G3;xE=LD1u7~&t?40&sc*$AcGYUdD@8C5 zkMQHDHEU7PlL#{JRI}ZhU)B8Kxo@2t4wnfi!HHd&wiwsWuV1r1^UeHet2$J>i_(kI zbGI{iucz%jOO=VVTKJTbgIF!Ra6Ys{R~ef91y)Ph^CVO)o?d!g0ofWsgrXG4vz~m) z+g|sIdXV#xHYT&g6lswu#&&YbX-^8xa7EBuI79XJl@W(Ru&u_j<L%Bo59+RFO1-xM zXH|W8hpqtE9yae>N3o}@v%u=uuvu5b6ysShefBF}_?%8aKJCcCbpEoKVtevwPm*F3 z%K|zEQl<U$22gdG+8oIh%Z(%A2a+yL4_DoTJ62d0uN}WCvB#}lHqffa`s>k9QPG0d zGfH69fX{x$Q=a<xQ^@M(JrJwxo0KfYrqL}YZ!M%8mNcOO{^jU@CT6O$II_zSdPLsy zCOL&79qYX2G%IIR@vw*#rP04TS6$nHpx??+jFGE+hwuE*S>hA7ZSfRfMbe4M>73DG z>p!H}&dm)^dHfSPI+cMGGnnPU4w8q{tVAnyCTH>J&eAPo>ojj)Z&m_CotNEn;^1-j zrgjeWNOGrUl0G#v;JP=n8x!K!Pz3~QR}Gp$12AilA2G9N7X66%SBkBGkK4LcHCT@q zR8kSOr>!<|c0e~z1r*I_rGPH~fYumTazllHU`=w&0H22>qnV;hw@Y5jlA1xDwN1$5 z@-ifck7F)2$jnk})-pwQ8q}st5soT6>Ex4|LF4DoKVdV}uFh0d&{49q(sd=MC%mL& zEwVQgkNd^<%av)yqa7D_iJ8Nx1;}U@p>|C>IXxvuj3w-`K}8UgwJ`$HWE+&C6=GMP zZq_HjZ9Z|+!r{e*gA0jPvk}Y6sw)LkHQk`zH)W;dAw5o|?|W_mQHUu(QwTf5QE9Zx z-0CtR=4*(Wne=FUy)^Jq0~)`62>Rf@gS3P&XtEQtNP3kRUBBaOMH#^AHFHf9_U+jZ z@q-N?x|8|ha<p`6cic-BsqnlVIQmQ;z&b)Pgt@fAE-&6shM=?^_ZkTbO+61O>;_wu z`66}ic~mtNfoizsx|;?~)B2PVqgjeH_C8))jr&RcY<(Vc;>N|rrSa0VM)fq#B-oBT z7oGenTiI)@T4}*3^HrsApljn}HE?bcBm*%mu`ueC*xA~DDL%Ol=0Z1xNAJWD42Ofu zuedSABoe?p<IF53E6n{F5p^2WC%|IWs^MTTSX^8p4PC|=%LXuYS;t-&@6eg0_Elz- z<%&0JS6U&k_grKx!@8l(bWLD(%86C-c9D)#%f-BMxw3Sa$C=)J&x3dGelX;rb7;Kk zWX@!FbZ01&2lD*y+Huo02^c}FSv5??$#h!R>C*-4yrzCnE6ND)8LDz`{vS&STo6r% zlItj^e!aVlWysgaW9#}1lgg8oUS4)Z>#iW!G|i!di<f_ICws=KDH&HYXQOoIbLI@^ z)PC1vfYM08;h>>0(acbnUZM)`u+DY&ev%m?)+d3WcE-bmV*Z1O8H?u!X+?r&r~`FK zD^s7Cn@Or8C#dxPn?C=f!i`#P7!HRw?Yv{>&39>#SOyl>BgT|cueWFUc%j_qxQ+k- z0}Dw+K~z5X2Yu#oM@_a0a8{-#<aIzbPds8y-4i^b+Lp&Z<VlaETiz4;r9xMwY%C{n zwr=Oc*t<M=1_5AiTrfdUgIco7F5PkP&|;&~&BbD;L6xvBQl`~*t@}QRjCn8nZBq5P zSNm?I3$AH`H&WE(^z!o#^}}4JPn2Hxd=n9I0+Ek)cbOQN3rmg_tkiJXqZgE_VU9B> zeF_dMMa6xDgdJDx+_U$fZ)YmqG%Om@0I;k<v&rJ}ccWzypq}%Yky?2wuVu;mNt}*b z<CLTZ9S)n&H2w4zyon>1H>4KV`~5g{EJI_jvQuN`I&^`Zc(RC4roNTReks3{Mrm*P z8ZC~mzvh-h2NylzklRMQj9ML2wL$&PJ^+17)Ir7B@m^duMC*v=oWgZY({UaN7@EOw zIA{i{A^4y_>8fa@;h@C)K5-z^8sy0GnP#Gr6#_-h=+>tw|38TGEZ*)EW88iBgLmG3 zxA#7%YV;Ns{~s4*E?}|tk~PRucJnJ#@~Tp?HZ_)>y6$^vk1*@`xsu1NeL8JB8IQ&( zcS%5l&dm+yRt>_SDXGg+S}(nP{Ze9|+*h@{B2ZX`8pU5q8HOS{8ZF&*$L{@m4pl5d zFeXdMqNS9~h}?z(CL(2kRgah@??{qa6Fn=e`o|1{oN;Q!E_KbXRch9aDD?ZpHnx-Y z-~j`fie!B>N*T!7ghrbXv<Xcqb=C9Ki)jIfhCG&}ZQJqEWN~3>ad9*rO{UZ6@gtb$ zVdg>HrJbg9)L0^n?EVC^29ZoL6DIp!Yz2-&b@{AHRc!T4pJ5&9Sp;Y^#=YMv<ckg} zK8cTJF#<7`;e1u(UGo@>l^x4I&$C*P-grq58*`>B<@xL>Wzl$(m*>08a?UV1@ko0b zlr2;*NS*y-<~xrR7JJ+>>)^hTGyggp3JJ0a=_R^y-W8?A6Ua=(Y6fYR>7r(ZtK~GM zlGW=guMaG=Y-E#}B_>Peic=)w?O}=ZkljG55#ILg+n04WKa>>SPnpF1v%LIDHxu&z Y0g_l*6=~nk0000007*qoM6N<$f~$t7Gynhq literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/grab.png b/release/datafiles/brushicons/grab.png new file mode 100644 index 0000000000000000000000000000000000000000..d3ebbef31ad3afcf3cbca9c55b2bd8a6cf3c83b6 GIT binary patch literal 8045 zcmV-zAClmSP)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NN=A`Bt<yMq7#9_mR%K~#9!?R<T#Wmk3ITKk-P@B5gUH{-F5zh)de6pRfRD8wbj z6KJrY2Dikdp^*?2C3Q+u(jsK~N2^4nrGXYGkhH2)iKI$YDT2ys3r&DF(4?phlu$sp zV8=GYcs@Mu>wcYc_Q(3@AA9d}&VBRjdG<W;P;vC;&VBElx9>V@uf6tKzx7)iPn<Xb z7rpj!lX>c2zxT7708sAwyZ`&Z1HPI6`8U4s=GPrfHx0|u6D<t~U;OAlJ#y@Y$}~Cm z@TrsE`pQG!jek>$=zss%`v*&_gXOiN95&-8W*d*5JNNj*r_X=&p_Az*06<W36}d{t zyZOfUY<6aIa&mp^)W&vq6S*q583iAhYwI`X)%s-i#MX3ac?DoQ-4y)XIct4re5kA& z&+Bp3Ose|pkDbmcK%ihfkquNkUpZe{-}pcx3wjD9p4bxwBIkn-#4Lp|cRcs{?j{$= z69;0SzKDejV|<`^6Ygp5F7-Nc-Oca)+}7^Dd+~E``p$p)^p`&NzW4pj*Cl0^MWL!J za?7#nKKbE~3|H3NY~%DdKlklZr@!>zBk86;`S|;>7>rid%F!w)PtH6vKKJdDPi#JT z^6a_oX}Sqbp&Z<N%g#2)&gQet^W)j$8{<Dev;K`!=hICb9Jv{}ikO_IX=Be%W>1W# zPfTX5lqH8I*m>i<^PzTOS~rub9#>5u>ZXN#<%vR|#)sPZx%IX6E>MA;Wt$LOAa=~2 z*bzA&0<kKTWzpT_0{K9JC=iE0fjJN(z@R9e-jdqOWiIjW-}{G~x4rf)&qSiv|D~6I z<==k%zx?Wb0PrjS;gL?=7yZls`kNoQ;l}5gq99w_>H2)*(NmB9pT{@1@4M@c-+ue; z-9V!H#Sh*O2*#9VxI9=oI9NJ37_An=C1XleW^e1Q)6MjJJvlp>*BjI7-1hX*v+Mu+ z;ghrZyeE;u@}cJd0svw$FvUQHgPr+iEFqAe`)b_O)5^L@)ojkI_3`Y~`uM?<XC6GW z*%!P701*=L!VDrRtjZwF?3scmww;AFo73vtc=EmV%?mY90ssdq!E$Jb1B);Vix5j- z_QckO%DH*t#`Ah}I^USgr<MKI>5U5pLSSE0sEH`B5OH7*%#{6x^`WwE-nd!g=GN6N zAcCmwA`!VNNE|`}MZ*;z$TK@n)_d!N4Z#zWC;%8^24&e_McH)`2O<|&K>T73%$~>- zIZBRAL=a(6m_b>*=!PqIv1}KD3&96=M4s6b`#?UB4{<E^#DRsFMHCSWG^)Bh8ukbJ z!T8BNU&oIhH<v!j+kWehE_H~(XgTi6$B!Q`pYbU7|KWKw<%i#J?Os>^!W<+1(QkgR z4AtlV^iSXS`m5jb>9ZW%(;MhNe&{!DdH#zzxMut8*7kRAxN_~@J8t{%8?W7~Kf3kC z8$R`skCvlV6?XIOdi(Tb{jqb~)6*N<ThnS`i6G*jEL4?PRMj9JTv>Y0&%N=U*Svmo z@Mt+4sYtMMH{YtaPfy2BY)s~7w<h0P-(H{27Y6#`2kuu;L}SWfIa(bo9~vwjC`Zet z7$PFMI@rq1Hk-+r*=)Quug_0rPi)Ulo!>fN`GtX&4qhoL5C<A8nZd}ILYbLsCL&*j zYP*@9n^o1MYPM(f=Bzq5o}Ss7tdFOQk5-f@jDP?jOaKr#fT{?yZ-Sk=`DSh1ym8ao zj_Z1RR&7k?x|<tOP*r6WR&)#iaTxOK>)__KOa5ryxLIW<wH?nZE(RA2B*Gk&36w<` zRah7#Fu6eDh#Kc>=jYbVt(!G&R@>Tz?_B61MHrZboUj*m!Xhdx%FKb;`Ly9T&ehJ> z&R5o7_*?)`s*tc3_8cq=$03M?L;|t%!TQj+P<v{eZ=AQ@56g15ftZAYkYi?Ijy^xW z24Y8KLvTbskPBo31>(_gu*>QZ4#J*=NtHxMgt+Hwqn`|EBVZO$Ks37!<b{K<stAj+ z2#FF4kp!0LzlkXhBC3c0D!UKFBCJ9zBEq5~!XhNX#3boSSv2a{AQJN~12K_^#!rh9 z#V-*dRbmlQ5m6OTK*Yir-fh+lix4x5CgDX{Gz}ePWM)-SRZxRa76w$09$eiy5JlCn zw6f&)%F&<{l6n*X5fKgIU%2M*1p_gYNW3+vM$>TAA6-;bK@|}ZF|a(7wCo3V9Xoc+ zz~yw|uBQG2zHWcR-@5;^TTdf4{ytrIz3W3Sz2_YO$mIXU>#lf~1$x&fA6`Cm1t|Ql z-~Z?zf8y77#-ZPj>+N^n^^P~)`<$z;5n&G2*AqKkpO4RNPUk1jZ~e2ky=dOpgI8WR z+c>jJV0`J<uq@ws?>&F}XMe679WccJK!k{bb@MIXO#OVbnQzS+H?8ZfS-mx{Uw!M1 zpZ)qH7fSQY1-jz}&;6yJ`Rgx#;qArfKsj7OV?b3!goAe#xjNW+XePeiZfsp!Us*S6 z?08;p%&IdR<FlI+Qxvcm>vwtDXMXj*E~ijHgP>3tG^QvAqjI=BSUOM+SBl|EIb15r zkr@n)DF91jKvk3jdt!3zEx9VVd1$7=POS?~2(@*!^RvcHs%CpuJu#l0T;DQ9>73j3 zQA<!ba^*3NI}{>dVN8LhFvS3iK~a=g4vZO?qC{iR6bJ~a!a>E8#Ld}LXxKI6=E2Uq zZ>%R5Ld@@K>*v<a8oNDj)+e*Go0C~>zkPP=$#h==Ksj7yRcw6|76uD2#u%fBD5^j# zjEDdTpsJ$6%ETNbI1UZ@nqB3|yO<A!7;S{c`nhxS#>JfT{PuKQ)lTp!jG+VoKx05u z(@u=af&yw(2oMEgFbEKDi2E>ys2dIqkz*F0!;~1QSm)~;mQ89qp4FSv`M7Qlt*(6K zk<%9wNL58tL_t(lQ~?y?KM+s^kR(miO`ItX%tFG%nv+&`fvl&-`^JUF`O5m4wX@nz z>SoqhM11Jn)>AK+5&%?Kgj5)mH3bQx%Alem(QZMLtnpQHs6tVu2=qnu_+aCdIX90H zaBVB=J@J9ja8flF7f6JJNrga2goIgzG(`&O5&?xIN>ZkzxPq8lMA7;XWvZR8U8r5C zoUgpMAry$;I=gjIhmtg;Q6~2Bji`vm$PAJMS-Liui-92t2NL3x(mNs>$cErTu%2uP z&Ij*FSeAx^#`!%7B<z(*$*Y7IW2r(6`=T_gDp3xWG@Ut$BW7X_(Wr?$u?yrvd<{NO zU?EjND2j5|6k!)|Mwx`YNDz)su1NxkqNs2T|FjEtxiugmP5??YBchZr#7Bxk6lf6l zv<D;&3HcZZvw%pNpcuwx`8q>R!FMZ7e$x+xMO8GeQ!t2(Ai{`vQ6(7wh<Ol8l7>ZC z(`O4uQQ{950&fyd@iH^BP%Ca;i~s-#h)@_T&=AWlH(b3Z4KYj9M6#G<#gIfv`ADlF z&B7^V`KUj?d1)emK`e|ZjNw9<Wp!XKsw4vd-LvMEETSw-J*`NaGvuk|oPn{Z#N3C4 zV|JcDGv+99cSJ;HdBMe$6g8yr5k)~jgq1}UAe(SpanjmQOuBlRjZiW;Wsd72`E^i@ z`(I3YRQ15HxQIXq@ISu09-k=<lLwRhZR;PS+m^JaiD<hX<Aj2!VL?{ISaKnZ!i9ip z!Gfxyiio#8Z*^vOk3H7b)-E%=G3I8Mk1!`roG`dYhxLQHF0ah>auMkI+wN#{=x1M` zU;M<EZ+^vVHN#HNra&*g`)&7sZu5%kZ~l|tdH=JVN*CquJ)b@ch@j9%y`LR{e&*MH z_qjj$hL|{<{MsLL@XxYQfAxWXgQzhn{r!LVrteE`|D^Smvi#sL|Kgo5x{ZTv#%I^J zx8DEB&wu?JU;1}{_cd?-*I)eIzkk=h<@Qf~U46xofBEir-G0jpO*s^D<SGtMK?h~= zcV7RKUw-K1Z~wP1|IRyq>ii?${JsnH3-{dp?zg^muzUy*RfwDocINACJ3HUhRc)OM z;lOBc_1eK*rP()uuD$Y#2R`sm4jsL&C`X8>${ZZ|n(CRWx9xnruIJOnO&dF@n%eqn z)>h8<7zO(&(8vD4J5Rjgl}oE@rW_hXQ4w+!9JwmgQ(uo=wOKnmuidP%v)axYJ85iD z4xTcVe%hv5yyNb>-f_<x4;{X`7%rQlj74Imz~tFC!B%9azMi;xTsv1=KeujHyGd;) zRWqK~)<0>2R;p@YOi>t60E}s2!nV^Lg&7UXmC@+V7vJ(r_uO^#ifhZ|wZYPgDMv+7 z0HUf2vru4i?3-Zc)XaP{c6OdKd^c;7h9>i7Ts3q1<O03zul&R-Z#=4fzzS0l!4!kR zaA`1FEk~>6aHSY7m%}Af4vi^IQ34uOfCx8G5VGW&;O1oKzL|JeH?ag{{oMMhar4Gb zE4w|fYwOOA=T9ooaJY0}bq%6^V&%Y;rYNx-6ve0*3{5dIgJDq&O<7_wKw|)ns)7a; z5hh{J-jT1#)nsShPMr77`^Hl$YdJS}Zq~SI(@bhx8biB*d3i$0;b7@Ng3rK2n9P_# z{CJbTN@EH{12NYJ5mktZ2?Y)fdrQ6|JNI_xL$D#lYFp!d?R;Z>l`D!>WA(``8URW( zr71@l+Bbk`Oks)=utY2nO^cZs0l-)bQWX|vA<q;Mw1(_FxXKebA8a7&L*snoLgOQp z7UtH?8yi^8Y;QlMK!|9Hw$=b>5DfqVDu9Br3V<pI=JHm|Gf0`39Ft>Llds4(E<!|+ zQWQdh(jw2y`O3P=`O%=9H}0vy2E?@20V*hpDuOZ!#KIIB2FOrB#D-!v#$JNwP?N7I z_z;N|fjp7-5tJe4L*ql^d|dpV_~6R&MH58?1W*7GK}1nN5HSW-l~GX*wyM#XWHYIR zIA0PPia-o=Aod)A81jL<4^bxTsd2%EfC>*@Q2O1aHmw2*3ZN*W015(tJD}2>K}rJG z*fV)yAHkPc56$J($Y)9DjH3whkq<N|i;H4b(NilXSfS0zvtLq4;Ac!+BfJrpI&-YC z5=mg9mSz(fF@bXVI5-L}5Q{F21{Z~6$_T*%2xOEDH7ac(pN{w|sEAO!kuoSlNj)8F zv12+?sz(PR1@N*51TD=`hEt*r;=)#yh;yps?F2OKEfVX`8cXwu5yc!5M~VW84_RA8 z#8Mi3e0#nJd?+eI8B~B-l{BMMNty^PWI#B+=3=oDGYKc6R<tK#Pm+rEsdUdQGAPV= zwikgQK6TU$flvZvg%vXNA+0o!$PXD-i}iS-^x2V2MZyVbj8cjKz^)X8-FN#qH4=gI z#3qRNkceiOKZ4Z?i6)Ra87&YSAuoyo#YrTIVlj)VI@Uc21YN-(LQ$0Ao(uxD2z3UB zJM=RPkrWfZB(p6N=R!o(AXc9Dh{7iORZReXk}v`I$|9}ZsA$GRRq{u+?=y(j(GlXq zDX1|xuiPG|EUqI4VGvdTQITvtJ9X1aqiNa4(gI~dLvjR}E|Ikh1~D-2b;@)BX@wTm z%QYCtOpaVsP+{%>TFESw7J*dO4vhsx05k@T+4GcT8;WzJNgr|IL^%VDNg8GDW-X(f zEhk1L{ROmMA2R!DPxz3kfKZ$kjbSx_#vnrz#F@Y17To&Awh$915i-u+c`V52xvCEK zrlC~ERY{Jx`}{m$-aa(rt<mVadPAyNrL7RsOA62<CJX?uwz9M*fkdPEbq}5VlEz4^ zL*{$6vs6`)tl0hvkPI=WfDbXkn1@$Kd(%*)D<S0KCJMBuG-wxgL=i#q&vQXd+svu8 z8*S^!8O)Cbj6GtE+VjQjYu>ydE;?91(32d=kLM?WJk1KZ4iu$9L_lPb!v|LOV$^9* zZ!JKizj<}D(@hzGWaM8u`%1crW|u1pfH9FlRMq2G9NJU(5e-!oT0hiA8`0KxZ1vh2 zwl4g(6&kwLjtJNm*_Q_89yeDNfkY0Az9&W`qPpO++j&fKWW(yFEWb&Uh6pj)i)n<Y zU~6GdK4p-kiM9z@Ea_&juY=^AB>Qs_0T2c5%__7;lowf6609zbE@nf}MTBh)FIh>_ zT({c$rY)i!^FY(1v|5BrL;zIim8WjJYVD#%ofc7g`j{1p0K}iP5hG~)$qpNbmJQLa z3s_kHiU822Fo!Otq4LzY&ZB`OU)`0=dY|3;o~~-vl|)5ZQN*yIs9`L)7{p?kmWm=q zWgr@9CdZD!t`(oeJUMaV#P;^~cs#z`%0kcXrK*PyA3k#ANC^Ow$>h|jQ$JG5jtdcw z964fsq=+A~`sTB3HRjOOH~dIJJFf#ruX*)-zkdH`x2}2qOQ+`_f0m1hm(Mj=UVZcX z{{69+yb2UIPd@ms-txS9yzv9AC0?G_@fW}9r+(qru6@DFAZ9fRkA3CypZdpd`94<e zekh#F@t55B+F$;_(PPic1r&%KA)on;`yTwlr}ndO_d|DGb<?eH`R5NTuU&<zDfv+a zL=EBh-u?Qs4}I;Tc=`Vqj&^0~mSfi)TpE-HMRa32|MuhOT?hcM{@8=R^*5e>)y=p4 z{D=PYXmu@SVCTN`wcq=dyHsT_1%)57>$%rod+U$ieBvdyzv?BoA6PwzreI+SUf7dw z$km}4yJlLuP+K>y>OXtz%me@P8|#mL>*M#{{9}LdHGl0Ned6ISedZ57{P*^V<6Yjq z1E4I+<IlP3oo{~APyfUn!=(dQl*SYQ7_l-YV)jCwy(M3huY;X<SNlLd1W&9AKX&Dj zx8C{Eht6&N!B-#r?pMF?@q2IDy8xG|f`0zBufF>)zw)NzHyu87xEziE3p6HH7h~;3 zIWQ5ES8^0A`zF!^La0+6%u^FWW5e9}#yL;CRKP9Q9{u*&&8H>FWuc&Jj~;o&3vPMs z9j|!#t+yUtJBsBH&=f@(L8XMYa74a?5DEEQQ?=w93N`!M2Ok3Yw)X6O9jLahYTUH8 zv&PoeFD)&tuB=pbeOW7Lc{DtH;K1FleEHA5=EQZ+xy}q%j46x32#rBBfEWQKg-A@! zeC@88#c^;F98<%-rr-j{vpeE3AHnB>d~BDPHEvop<Eoi9)_W%+mzM<{KCt@JFT3s4 zFL}{T*Ij@3@D;18hl;_dD2EUk9EE{c^*~Ho5r#<oPvvDwe3IaWy#&WeH4SkHluEoI zS9YUzTuALUm31@gCUrBe>dN}S+F1Ma6r`#z`|)Fc^@Ya=Xa;4m6bp|Lf<p+*BH{y! zstcr`%z|i$84-qMX%JSHMk}My6$cL-T3tPS=-`!WYs*V3<#4GOESYkIMOl<XQ<P{* zG=(t+5>}mhuOM~xh^hdmUL%g$Auk*vAwYs-vJxDTW#S+lh&dO)6H9=|`q&*6=@VgY zv-wn3RW~a8bSJn}fZK1n{?41P-dWH`z=SNvZ(>29z@h*wOi`dI&<u*AL^HsmKvNb) z8Q++qL@dyxW`M|NK{V}f9VXZn-dR&UmGWu|vA=|a7qT2IbLdK^qC^~+0`)i)MAoPE zRmDcX+D__bT3cd<Vz51{p0<Jjpd2hMtzOYq#}HbOG$P6d5y2QlgOS7(6@&({z@oso z#Tb*`paC?-6o{yRh^Wb}2xJsBVYSk>?y)H41r>yXM5`gsWQBa&{U2!))HT{C^KpR! zrRKWYr$)BQ+F9*pwX;5~9X$BeM;?C$E}{elEC<DKNu=#bjQ`>xIT$%sxr@D1M7E1o zJ6V+pvgFvWE*z0^&4sO4PsntQ<bx@;H)>}%j>!pyL~dcG_K*eURzZni!jVowE`-LD z^-()+*0_0N8}EmM!S^=C{50KjXF-UCDF%qqfELymLL#97ph2U?wBJJ4HYp&nsG`wi z09f0$N=TK&Tu4eB1&JgV4yvq7OhF}T#|imZWzRekVNs@h1O+pZcqYoMmfXOW8Z#Ro z=GIk>tE_8$FvbYL`egphHkmRPL5!lNCzM!4N?=;%GDdc#f(n3%#SAnic0?I8k`^TB zPQ@tn>Jf=gBB~nu4Ot|_#>3PEDxA8aIP)Y}I69q3Ad$3f#SXtf<O4^tR;IT3+WN}* z#(Py*84VtKV*8nyPk)<_5040`;tG(yLr_(YH>e<hfyj|VWJx7m&Hw^tou-m_t_x+C z%(>T$+RoVAA4^>yR@+=C66pznnR{oCw6Ae%cb*-E$o;ERtEhKAh`_Kk4HQpJN!)83 zqzIU+Tge7QBBLQ{Fs+)T2yFQPuuv}2u3NY*l%)=}d?1aA3W*TJJu4NnL`5kzV>0#V zG{h1l@uNawA&KwBJ}w15WF1)-;!aP(g)zlo_|3;oUrHQTwyOa<Dn#CD5Foc)w#8Dw z{(p+8v<qo%NwT~cu%fEu+HhuSrAVi(@JHf7Y~7302;%h0%yEfPcF&2RmE1GA-1i(Q zn>L-~MZ^q%qha~@=HwCs-LhK}owLZy1%bqeNk$QS-22X@`{Uly%C*&KHIakSRg-nG zVBEGkM%EAayT3D!EjP_FQ>6J3h1m0)NwzNAktYt!qFNS(s2SI8KNJKVS3*HDp(9cx z096zKI)-OnK8ZS!cc`u|FVK;506L;WpEVL|>%cjPPA#CC4&C9tduEM3D8y5cqW1~x z+s5a>-jgSakr9g`;;=AV)`ur2us;n2X~&rm00oIpD42;<IfM~aMaZiLB2yMR=1$L= z6tWq`@ugo`k11EANOleKxlJ|^_;O?zNxs~+f_F^KxXL)G##5whimH@Fv9h}IXD1)K z^jtD8u|#=IT8M5n(<-8Wl^EbjKBFO1nbYFxXhJ=kgtlQ9`c1lt+|tqwrGE+(OY9n6 zSYjf%Gd>xPCrb3%5S2xVp{R<+3`%omT<=S=9hX=-4?=T8bj!DCeFrQux3s4YZ3#HN zl?It964Nc{=`|6O1f=!Tso7k3!2xCdtVC}emssnwHL!SU?MqW<xoTMy!{O-U_a5Ij z1!>Db0%<vaAl$`u9Y?6=Y|=j0v0fJKNIRw>fJnz_+CgXQNVLq+j-nrFPX<d75J`Ii zMD|Ub$j}mxn3Qxxn8CRVqPl+;lo|eAEEi2CH>hj-c%4Jf>r(sr%5QQ{MG6z6IY}n< zW@~DR#=@D9+@5JB@rZ{u|7r~?F|+eYZi(5Rk1GR%W>A(J(?<7EK`jMYML=0qL0FU_ zirrd-^c2xo5JX;DOTg+esk$A#=YycfTNCXV#);7^tkUv(sdugcC$6coDt9N>W#*y+ zB+$WlV%VpvO!$n5MD0jCrG_=0T9J<G%Va=ZTt59LUo@yz<~DrL3y7le!MJrpnQ5Kc z9nyh$-SH2Z0L?k1>~T7CP@h<=D*LCP7~@2OyG9+wH}SX}1&9qny{#&*5ojsYG1}Ro zvQBsTn5690+E#~1^v;1IB#kKaOr|@(gWH2O7Wj}0=tIO?RCGTT6pIGgH<Px^QpoXL z_f2+3(ylDnK^p8V2o{6po+-6-<~9QABxo7h(zPAzB>iThbPl;X@FkVf_K!{2I%!VF zL8UWq`YQ;sqk%=5X4|{ahJUbw_1)5PRW2Z%cRK1?LAvu)7HF;uB;Pi0Tc|E3JR*Jm z%4o1(3Npzam=h}8(@W=57c3_CAf^X^o@3Gl?t7mJ-ixEsW5>3l-cc^C8l?;EGc{a# z0a&lUAfm%9xQUorCXTGGn0?};8c5j^rT&x!Ujli-Lq0dFlTTF@HK$(Kwy^Xl)*_1y z7YlECClO^c5s^h@_IH3q%6Fo#<jO+V_@E%F!ve2bJFu@7l#i2&RPFAmdJO-rQL3Fs zPQQ@sce*>ff=*6+^SwK$`(6Gay~ETJHM`B_TA-j^RBfvR=68UIU_e!g`KGH5@1KI8 z$503DdzQ`|w4-;&45ZUwR&jr)&&IG2F<y9bQX;N*<HH3jtDggF-;fa7Go8Q~)0URf zpEBQk&Cz{y(#f*ZuGF?Vv@K+Ln{PW-;)%VzhJg0o^i2J6b`bh=Q%E}QE+&C3mA_Ln zqITP1Tg^<WiH8^)1Y<BZ6Dp=-AQgaB4=)dwM}x+NOSPcrXjr;ly51zV9=U%*mxb?$ z15*&#Yv)L-5Bj?`bd5XEGs6560Zaq7qwMfOnu9{jm8srxi(MG1S{S_Qf<v31*%Irz zjdE<7o3BJVt#ui~!uS19rPsIty><%G9W6usE|0}sJi;Klc;~`VXN$36i;%a)Y-p=d zqSqWgaEaSlbkdN|!UXB}%_vA0{w!pqy)LcfLEES=cH~Ld>9w!}O24a07WOq**cp0O zDGNuyEjpr}Gs;aoZ69AW$Lo%+UHUfP&U3b*ywdVhLbfc3VT($4R$$le*PeAM{r0y7 z`%3L;3og91m(Fmy1f^Au<l<wy%DPw)caYNBOB9YBIj|o~OjQA;4O8=B2Qkc9d`<w} z0UTyi>e_-c<SMB@Ul#mN4z(k$n2fZGxk3AS%O(tIA6Q72b3Fx6`^C!cy{f2QdFYvV vqOKiE_X|7OjbXTNe}R|uS*rTX`n~=igLO&~R9Qja00000NkvXXu0mjfR$)$i literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/inflate.png b/release/datafiles/brushicons/inflate.png new file mode 100644 index 0000000000000000000000000000000000000000..f3ad313add81581cd7486d77c5fb310ac7cc8428 GIT binary patch literal 8840 zcmV;3B6r=1P)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NN=A`Bt<yMq7#AOJ~3K~#9!?R{yqWmj=t)!yga=?(qfYjsPlZnb0$NHRzb$je|k zw24R*F9+K~1A|S5AAl0cAS^7)%p$@N6hknUO|meE#fnX^U}cfPA#qmh2nTBbq{L3V zk~m0cR*!GE_e^{5s{E)uo%@=WgcV0PT!H%bd-tAGr*>8Cs;|D<!h;77!qdK<$%l%$ zzb`E<{oAkn-gLV8=)(`a>CJCRANtzecRNSU(r{E3#jt5R1~pk+{*~K4@(aIsGXNAs zgt|~bWvPwntZUo0ZQG`8TVtJENdW)=GJr0Mjg5`1t<9~?jjheit<BBN&CO5##_j%g zOaKH;)715>soS>grqhk%M~^=F*u$ruy89n}<U<Mon24B+F>5<_E3FP6dg6)49)0+s zZ*^Tg8ZW3~Pyhh2bIuWwwRUC4+USDubh>rk`4?)f+otiibKynKIdXtF8jZEmUDpy3 z5fuPnt#i&<Yn*e=S+dqS`JaCk0AP%9&N}NXIkLt&YmK$mS!=De&N_TXYxhiEIQRFv z@BMmRR~yHVU2(+~=|eAh=}Uj@_FoqTEG@5C=c?Ikb7TGRp(o$`<~PfS^q2qDzeZMo zs;;K0D7&t!>v~pAw>CFlc)<(4_D6REfMP~Q0K}%QW!0wB&8^MN>DJcf#_?bI$cN-Z zzzjrg*J*o?9yxOC=;5PBjvPI5<j_-3Jo?c88jcs<e*Ie%Gc!9PYMN%}uH75!>rXxL z_+yWJ`;iC#$1DHF6^LrrX?yVx|L9)l$XV;0HP%>TX0ur}n<63+RkP`IYeR`zDJ=pO zMLAhm(7GTZCSu~kud8#$hR>04);VXLwa$@qR2X9%If|dK#xIz4);Vjfa}J)XwNvmM zy?Xwul)C1cYp(r!*ODV5T3OqvRN;uMwO!YBZPV0sRn4|G*RQ+odTVX(LPT`;J@*ka zFffy22Ig{704N4!9XV%>G1eGkjOd0LKK!9yKK#^Uw|(>zy+=b`pw_4qD5Z2Uo-7<a ze7LG+)oeDKO=mNCGm|%!f7M-QKK{|$dXL5oz`$bd%+9&tcyjFMQKdBi5Roy)n67Qw zrm35{nr>}vtRFl4<l|?bd;TXr{;_Jh`AhG)MJ~k5z|2I%%uUk_hU3+p`pG9AtEMwC zudZw5LbK`C=Em`(haQ_u7PKyysT@siz2&_H05~Eb@)rUo=Nwxm+O_Lcvtp`hw!VJ6 zGo3MA*R{GR_U`|Ii(dRglgWgcx~@Z1x|F!&oLmQ(h?&TdV<N{yz%&{SckSA}wss0R zE5=KXoU_(iXB-m~Gc!n7GNKD6BDoZ?W5<q&nVcgcCg(rkh$#32$yKxX2F%2ch>0B# zh)B#V5tNyovvM2ftaC)(S46N71Fh|d2?&TqDDif$dm=}U96NHvL{1#gI%|v#A@(_q zlh4U(|Ni~YnbZE?@&4_vJHPm))Ayd?tPQ?D`@k*l|C9gr-=AhH84ib^{`9B!?Ab#^ zj@&7`_Asz>)ODTd+NQ3>Mb?iUdE47>oYN5kz@1<E;%TRyj)2T87T_E$E$=|3naNsf zjOp68X_}^<RkPXF=EjqcKk~s3-<DsfxaYpF6EOoYF%uzxDzwr>%owa#BD6PXB4Qp4 z$MecYRUj%v1ciu7>tZw-ks}|;jOjXKt+mFQu9MK_taapGcjZs^l#Pgp$ix7M$V%&` zuG+4Z9}tlZVI%~AuI;+6Z5I|MT5IRBB#0SU)XvNdN*7JjG)>($P1`hW+cr%jDr(zS zekcL%V;{Y3b!CUY5HkP*A`lS)5RooQ({*)K)zz%7tGcS2rfKS?ZJN5O>Z+<{v)Od3 zt}0!W?|#=i5m6+P@aP{^!o>2*YSYwJHLI#wRZXi|jNjAQY-?+4W8?VYy=R`IQ0b!l z;0NBv%mp(u6U+4^LU(2~8ZR#GICA)@uIsE<dE3-=RaMii&Glo4H`b3G_@S30Dy5Vz z%FAB)ih`K|m`T#S5V;*MEG`nc!-o#drdxGgH%(p7s@ZHh-8^2;HZOYV%Xh4-0RSK> zrBM|k5i^4inGDQ64vj|RU8kNpo{ZOzAK%<qXJVz*%G%oM%Ic1l6{WSaR<<8REST9j zFOozu5sHY2sVs`6rRC9ZxVpM#Oy?XSf>Mf^t+oEnai;}voL*iWAO>P)MntWP(MXkL z=|YtCS4pdc1ra+(Uen@ij+ohj3z3(|KQ~KK9R-gs04_K_PIx2<*x4gG_B)Gz-uVCc zB?c&bxF;fD_PbiRri<%9{#O3W#LO;Uk(rqbaxQ+?KLByK207<^ZpTFA9CH#UJU0;o zbK!`bBOi!-I12Z4j+x}v{$}LlNhQ9-hm8_Z5QiKQBz+JwIiA0N-2B2OOw0_=t9|W^ zGtN-(e0m|`^Gl$o-)5iT>%8;Md*{2}b=H|@x!}*%bieb3-}&v&fBso3>EOYGcinZ@ zcOk@Q?)dDBF1i>1#Rnx7bB@RtsFL4zrfciE*;qgN^Eck~Oj4tH4PA1{C2zaohJAbY zm4gAt@Y4%Byu7@kv_?>XK*Y#IjDQG$=)VELlAI_&RTSmo(#q|(f1;Xh-Tcn?aNMm< zxMW0h&%O5%v0TL8A3#zG3E?U0VK*F202MPb5QqIHrpwOfyd+V{k)x1;Go#YwE$@5p zzx&GXe(j#GpDgD?rIps8G@?ROs8Go^g@~w>(z+;y!;$S8L>=S43)Ui4sN~49RDvy7 zE5)q*%1TZS0Dt8buNaMnClv@4pi+RS6apY9Dew^#0BEfTg8>kAT^H)U&ZJk@b)7Yx z>AJ3M<&96L{Gak++Zkhwh-=^Yx+_oWWr#oohzulVfS?En5fBwBg{b5{45+jf<wfK2 zTNU|o-$jjCU$b_d7q@HMwrRVj>ALpUf9(^dYi_yqm)F-fwh82OJN7d9qzy={kBErN z;Ycan)HP}?0(qN@J{IaE=hw~zk$f)HwQW<^bv><S)7j>6K-A^n{qKE`G3~GZ>g|s` z@nlvJ1B)<3fQW<)Bu;`vM2OB=rPT7u+WN7hbzOy3mQq^s1CHwPLK$O2?rOSDV7sQ8 zR<r5W#^F;=-D`{~%TgD>%x`<!^>tm{@((_oN^}Gw@(#wt$N&fg#K1sc*&?FWdSz{` z*ebU+H=4TkyXbZe`4ZO}Yy4`pUE9=6J*#G0v#sN8=g!}Cn({uxN*9`FIGnuyeeb^S z-h1;>9{_#+$jBsmW010x!(KC<EEMISn$4!ut-6|ZT_?GJK!@ZX!96-j=|!4)w$--P zWW4Z$2M(Ni+UaFE0AwUoN}<w9xw0sB?>;pMB&Cd41^FbKA?9Tsc99UJ5GM-@gW;fC zT59ULuBxh<HLkMOc3mr8)^(ljI%7I(3^_X(j#t-qudJ=DtgKEJ7Rs{p`HeSVA74;u zFA(|EFN8%&bG;Bi%rRQ}oEZoahl4?(^>{p9-mxP@0562KR&pI#Yh4s&Q7Ek?1qNm! z2LKrIU=C%c2qgJqjOm;VDrn3L0<yLtUG>G7D$7#B)i@=mA#r4iUyv)4&zhN;3F5Cr z9xTMKAsDr20Ypr%mSDO7(XxD&9iBrzD-jKpQiPyDJcUS1Q}C#e^yZ0qsK!Jp5y(G= zychiu%TiHTvhaiS#PiucGcf@}QcmwT#F;Qz#Y7x4bp{Sg#**dxn#ik-L*>U}Nd#&C zPdW-kA|(rx?A+G}6yv$~AC85F07qU{A_jrMB#ntC9hDetIZESY2A2F?ER0F&x*!9` z$|InC0XroB8L1e8mBlJRzUh%dZ#co$qGtt5iUnyDnB!LhIG7hrvT{+Ve7%U6K+N7n z`%fky8X_VG(7P$h(|hmF{Jo#G`Kv)x4F$Pez*Suk$i*Tu)<Oasa;%Gh3Pk+sU4OtH z-VM<)e-ncN^W48<GMC8;NzqCEXm&otWGhQ~xx2o;`8>lLr8ay12y^h@K_!{Z^XK)v zD-^#k(D$4`&rNNA-SyX9ef2exb6I1YvkyJ=(5<)Ldg##Mzfgg$yZ-t&zVUCPQUQY^ zL<^|Usx#00flq$&pO~)wlRy5iAN<fieCF5GJ9g~Y*w}csq8vDI;NSf2R}Q@RrKpuJ znlNj_g(QKPS6A0w{WpK&p$8v)>d>L5z3iE1p7|X$q_sZx+;gwI>dMP5yG$t+vpy!C zEG!Ji6Gr8$H$fRl3MY{bSrTPLR0@^8_S$P7_~ti0^_kB;>m|GCrkgIk^wLvy?P3N; zPC6mX3<y93z>}r%a4<%t!iI;kcOfE#>LuF)5di>E>*B%}zVHpNyZZBA_~O$DL_}p- z{@h!C?wV^}>xg|x%8UpaQSuPK8i)$9EQg>}NY5#j2Rx5bOV-2$D5bDc`r?ZZ{QLj# zACDeAb~3lW?)vNh;6Hu!wXb~xqSm@lN`qh^sALILs8I@~%W?qHJ)(#b`>onVJefnb z<rB$>asvSV{kOd7Y2pwwD6LT;AR+<-C=^YjQiy<nsFW&-!a3s+DM?;KN=2#NnvxwC z{uU5!56`1g7rfxSlL>@~3YD0kl<W)&5dnc&Noz!FU6v(>&RRq}<i;*0e$rV@!uSud z^QoIG?_Yn_!IK*`vO?egU?fFI0E_?}^`whpwzbX-&XM;aUkIe$Na$S$7|n&ouX8TX z6Pcwt{mxs5V1<Z?!XXNAg#i%|0kzgzRn^S-{<KRHB#gmEtRY}~Lh;C98vkQ*bk_d8 zC)>+dT5ueDs0_fM6fgs#5?>=>u{e*hX75D|-^L7Rm9v3}Vja2gao-lV*IfD2uYcXu zCxP@Za;$uk?7^Q9<rol^CnPxm4}&cJ_Ff48vvBteeKa<G+Zt<r<Yh0v@rLV9q9I`9 zOt|!tlD-%WJj`ND5X?AXPl<?uW#E5coiWDCXcN84n9iCO5LHp^J7fR5Zhps!1Oh<c zdQH7=1|W>>SR4#TL@vPL3HP+dWZ<0*D6AJzer~O?ow3H)uCu0V+h%!bRiQ45a&>Lz z&A;&W?MnuN2{8Z>VAzsEeN4nO7>o*C$|L%F2xw=FF<r1L6VxDr%C7{86{x0d+or9j z3rov@fJzlbxwf|R@BHlRGl2p?Befx71Z>zdI+%$_DK(l*0Kgb$qjG{M(&!DCaVH34 zXF4m*1>YWT+PZG)Syk0SMnY7mw9>`-7hLe8m%c2^7+FwW!SwvTj(`CVA%Td7!_jaw zW+so-wVmlq*S4l>tp}?FJnjU@3xBp<+qF&8Hg(%nO|?~&WAuBj>`Gee;>R!lYh_t5 zvx1}^@Bg8uXIVKWPnc0!j~5n(qmguh11K(%w5DrK*9xTPr4eAdZQ8bJo2sd+s@iIs zZh6OYQ4VCUL_|~w3YF3~zvBh~C_FCa!=P-4hyaW^vfw{b7UjaiA~`pkO$F=h$7#yk z%9?<{3W21qrfoeVfIa)p91Mo25J;R_x*57C2NAH6wE|{D2z{7HFknUi$38PD%5t)} z$jnok+ScDbw7tD!Icq~-q3znHZK}GOHuaR5_n&#r+Rj}?St2S1CrS#arv`w+XHyY* zr5Ju9)CugtVUG-#<zT$9AT~Lp85rxF^G<J#^9C;_)wXTjHjOpya5&z%`}EWIp0TjF zq_s{>D!;EQN&1S!yYWzG03A7QBp$nFir3(>EMYuBRI1RGF0h^vku{cyt%s{UAr(Ol zN8{z?)#a6y)wP{V%gck|P%9NNVc=xn-iE}(84!^&o`J{MIAX#Hd|^qthohlVSQN!@ zI2bmgrmowz>Docpb#`Dz&N2fkH5d#=qtSRW8I49|IY2~+29e%K3otZaI4ULvM24Oz zC0sXPKf?JbOF^Os!*Vnpduop{&N;b;QdktaC`w%vS}8zJFyzS2na_t3xSOq)&)vO1 z6uz9YXTPJcLIqlj!U|ow!7!yL;wC;1R-sOc&l<Ge7pjQJ8ME+@yc#J0{J>cf5EY#~ zktO8@04NH{FDXziB32qPvk0(ZzI(GoLX2J(g%+_qCY;^g3qU;p9z2ZhRR>BTF{0KA zrKN;~q&#d)u{j(rm8>%vcZx%Pv7)w;$8)L?d9FVl7BgaqUfUSLJqn252XDOzVicl> zY08pGWX#kN6vYsLSm@!xaa9vCiXd@5*=njAV?!r?0i+p`bACc=As9(&Dv<X%j-Kzk z9Ng=@^g1z7Y6|^_=qZ^mK<J6a@WIK3M2;eXxzH0fb#Wknko3$HpxqSWGXxugd2L(j zus3GCC4l5Ig=A%vZDPc!RpzCM^>Wa2@HE-{k~(tCKQP-Mdz2h<hq-nTM-36Adr)%4 z&|!#Iqhw6|rw;9DNDGnQ9WtdP_FUG-=q*`j3IODwds?#CZON#CJ!w+AG2E!{lyCwx zB5O}YFAV)M_ASHo5ELVNyd1?oNO0YB2k$f96~H%#m?I&vCpq-lEtIKP?pg#MJH-xb z+%u%90{{dBNvqtmm&_An>5;)fYDPkDX-?4h%akNG#3?Sv)#DIKY0g}FOGX|9iNd5F zRlr8zgfdXJp1m80K)$_|>?-U#7?hM0N|YH|cF7F3%GBw*qJ1nYZa;Dx%FQgsp}7uI z$dS@!n4VzH_%jR-XwE5;yY{ZYsa;Lbhur|6c=(}*G7>3s|6f^yZ0@f;A_Sy=C=m|& zEwgOPPo2-8G>>?B4%+eK$Jf`_pKooU|F<t@URhaLU0p2zU}IzBkw+f+zEZZ6JXcp& z)%O+gJ=QGyzJk85pub$N;`u4o+S=;Aefvhk(P%sd;I{3m+3d-uo;-Z`$p2po+Ih+; z=bd}*D-QnH<(FT+xVR`8lCzG{&xK_(7^xX1!(oS>dh)KjzIxBS_dfE-qjS@)-`fh( zT3>bb)o=g#8w;(80TDB96d|zE$V{xH!HtTL0hNc=93V1)V%UA^p4VJ?<*R@4r<^rJ z_Wo}^@SC5xqpGUsse+24*tc)*?%lhWmX;@z$#6KBOePBp3lT;nqSN-A{#P%1)#BnJ z5lE9?#a=ofG9fAk7L8#*Y6J*nl(wA$WJHCEkr|ctT}h`de({Sx{*OOaSF^kCzWWPz zeks9{e*p?oO6}ddch8<Z=bUrSg%@6U=2>U$KjREt6fwUiKRT8GzPzGG#K~k*4u&!c z$%sm$lv02yYxyXUQX#=;n86_t*T9&``EFW3+nISV8vn?pKl-wl{qO_#-~ZeH{Lapp z=RiUExQF!R&pGFutFF50^2;yRMd9mvDMV5UBoYc?UMuaD5?iAf3fj@I91O>(6e=aH z|JZ;_0Md!3SaLumulgcNk`X`ywv9@FX>#rdU-Y8)z31G2@#TN{jc-2i=TZ<eudJ^A z*ehRo#T8eqtgcQb696P4U=Yd+rUrFrx`cJ~eIr?PK{tKxivdspjEX{+C89z=NYG|J zSp$7!tEVamW579$H&wccW1fhq9#cV7sz6=*^iRF|hc9`_CqH$^cONnL@8AEL*SzNS zZ}^#|<sE~;(6`c*z~AVnV3j|fL@Ci$d;<!@WRj9Ec{+wrMwBj5Dc@C&>(B6=(B)K8 z_loK`KA841j(p=Zed#FuT81B)9F0b!3(i01Pyh6PnrFGw?bxwnWo5-r11Y6t$R_j| zl^>m!X$xsEB7l5A0fPcSr4;y4CQ*zkiefMrAh5LtQOy&~Gulkry7N9{csBW|3j?T* z;?O6>Va{yQG7Vs6AVwtj<Lb)VPyG0+{(PA<dS4MX3IKu(ts$_Oi^BL}<luW8LnMaT zh|*b8&9?GUyvQ%ls71Lg2t6g8p&(PbUPq2RpC%D)Jnbe7vbp$&=PJ3xS`Q<(uy60) zOI~u(ce{%rBA_1tLRKX6WQ+uWiZMh%6@CJQjJ^@*El!wDiix(i)|o*OqodH=R+y+Z zy>1r4Jfa-ud}Ul94E#ou@hXbrNAX~cI37jejEq2G^8R?qfs4L*{~z;rxy>U0Nw-lU z5^&T&h{N&*Sajl}YoaD9r8OdSrZvWBRXArESg}SVR0?IRF=BE#Moe*dg&?Q(GdmgZ zmh()KIff%dQdS*oEuOjHh#ci7@Hist+|BQJ>+k>J-S^%1jc1-E6&XAf8*RyXpx?`6 z08UgH&IlWxRp~4NqjgT&ZG@z>Mk4e%3&<jH54+_QIw(NHM7>e}WI!$pU7Y4bv&lN) zO!=Wq>CGGCtRdpA>;Bfy{><xNd-b=z_28#I{n@5zo>ih4^pZ}I@H@Nb8_HZ>M9p(z zLHLGnZH(zGSjCJ=DJD^0WRc}r5aq47-abbCX$tWvj>9N17-eVABn7!Jpy|nEp5oLJ zlhy?>oPGA$AO7G6jvP61$LIdp<Bvb_j1)v1;|j;L22R8`;F!n~fl_h5_UwVdP-s;O z3H_ulN}z|Fz%bv0iQ_SH5&|V7ayd6LDX8aTUPm^vU#urqnJ@s@nzk+nBL=0Eh62dB zwVgX}yy30Kjvf7tfBKtqldSU!^2HAWVoo>-(aFC-0t(%3Z*Pz~6$${9)`Q{5THDl> zbq>k-bO979m^)VHB>8i`n{#eF>5bTw%gCgbT$<0c*4Qw=+I3CaRCQggtnMOm!cz8T zfo^4G^_OnC@!@Yje8=a0tKQ~x1>|LqpB9hhBM7GnfrSz5KO`A-;v{%VkGN7f7>sB_ z%xxnyHwrYDNIgf$TgGq#^<;kLPt?g{P>4Nw^a&IF5`(;RwWc+lsoT10>gmGbic)B; zEsIig#0(0cD8X9Xw}1b8-~EgCKk#4f{L+_C=wiMzhn`=Gq4@N^6A14pdzT+JL-ag3 zAFVx;xEu_|%m~mlwK0asab%fb^3qgFWo>Rsqj?!AoAV6WWdX>aqZOy+U3Th$HC@*> zU0bzH1yJnVwabwUWLnAHlmkX)tqTBj4i8*>@e9s9_m0o~*5mn*cG3`vrHFP|HlOsy z^Jy4D8o<OMOY-z0r4;)K*8#{80&UYajkU%($|)NNa+%PaWk}PLw5{6k$&BQaPLdwt z;8kf9+xY0*b;h(^*O<04UE3L2SQw4Q3tE@n-%;2wQX(-hE2Wq<YaWg!Z+X+-{ojA~ zXTSIR|2b6io<Pa$9m)^;Bg&d0qM#7SKq(S2Gcx*)FsDM^7bQ@XrKgZ;-L_5Fc4AGE z_W{f~SBTS;<_mZ}?RIg4_bFg7p2!at?O4;9uI}2}7~>q2gL3z2dzY412ZMo9+FP-} zOtLkhVq}?NFA8lPpMB1`m+SJuZ$DZ<qA?+p$8==Qp0g@G>+W*oj3FQ~iKB@n#JwDS zv{7X_P*R5!t&lqbjJ4iHVz-xho9(1?e|iBZBhOpPP8D$0TH6^Tv+A`mowE)AmX?=x z@7aIK?o$^Q7YBoZma_sA{SYOhM#`i^^2I5tj2kF$r?(jv&H6Vo-Q$(b;Pr^!ltPx2 z_U!HTo>nCel-5OAmR%W!-CJvnHB20XO4`rUVP_$KW|zhevb<0z^<F#H7;9Q<J0h!; zo-8lzSUqKB?Ud!^9g~H{;c%$54h2HYH!vizD3c<nG%~9IS@eUnY*>JSeSl$ZJz#}l zrX!eBupkPg5R5@7FS<a=k+Lk6QbkdgWjP!Uh5Frffu;_?Y>C)!;htpdDBG>J+fF!P z)e&0&C<epvWN|nej~5mf7M3Q9i{tTlI2`GsD75yqw&$opf~7pFivf01Qf=lj2$%^F zi4l_F_@Lygvt(Hm2DOCe7*YdIv`WX!<Oao_&Zx2Q^F(D?T5Cs<Ol&+eH5`#*$y!U+ zS>>FKc^Lx(6rPMuMMzqeR;nn<VlWsE27}>nI2@LPL0Jl`HOx2lXex=$pObDqk{fEH z0wT9CQw@o(0KL*etY!k1fGwe07@-V=iH}GjVj=XHW|%1p6)MyML=jP0l#ZNpqyD^1 zdgE*y>>-xJ!Fo@mlvY|PtqY~aR+QF-9JvEZh1wc=4Ar^%Aj^%jd?Y4{o(&}_Awkel zc*BCjBB0-#WnV`K<AB+$g-;E|%>3`;5vYk|>3PCR`CUW_&%D<H<B0Z9KR@Cyu@uPP z9<xEEl;A6KDLY2S8v87-cT(V-;xa~e+UB#$!3UsiIs%C}Kw%t*QpxHUm2%=T5Qb|p z5D;>L2Ouz6G4v<2Mk4ZLXVz4t(?hl~u2Q+Xjn@NNipx2Lj}jz7IWEr7yHcpk`!42t zFkT&U17gNVL8g!{lN@BjF?)i!pc8{yyme&G5l~1o^Rpe2fS6%MN_HDUR=(KNbEj1# z9$BQ0`HCpP4p|=xeZCGS@G|Z<cR0<`DM&PCkUBbW{~)I%LO736c)A=cJRYP0JwB!o z$SD#)qm%UstZ5;8xq_H0geD1qpF@;_#-}WCO3}}@a<ZUogXqsxgy+XTQ8(jr&js&z z9#lqO74bOqcsN2r9Fm8eyO?vvvr&rNgc58R=%%T;7%Gq6h(PA=6tR)CQ(|_`P;zI^ z#mbnB=`@s#j7q^^(FbnMIL>JV0P;jJZ--*c{j;2?$2#xLcLlUe0&~{i>6N3Qtr!W} zl3%4EnqCx1EwiA4UYoGjzx5bs?@*Q=lRWap<2WOw@D{brQI=duDp?Su(cSE0`Me8c zqcNTa?a%n~g=Ub8!Z9~#V~y&k;DI3XG>D0N4dEF$8#3~PS&+4}A<}i@mHWEO;U@Ha z-B=<~e-@(Gwxq08H)laHe+e~vIGQR?Vmu`p`camW@Lm+3sxry>JINX_Y--Ryo-3SG z6ikJ(=n4RYesB#S9_Eur;d!f>CpKsM0Y|npNG%CG*VE1IAlv49A4%mXglSEPfjK!z zCSX3rlCNK!92A{XoW_Zh58i(;nGfgB-G4)w<3exTVQ%~HO&`Q(q<j;La{&X}$~gc4 z0r^QpK~!@LfL<Ib66hdD_RVP?FvUdhnv)eoMrK0)XM{dTvT>g!iWrFTniw8P{yPZ> zeQ*)xw*DCXIirVfHy*}5IGF-ie-vk~@0t$~%nhRUT`Yzh3X@h6S^)j&co?^24{Bi; znaHO(GndOYkuV0<+sNY~&KY4ObA&8(vv_6iNDjzmWc;W?-fGKFr0T_J+BT5Un~TYt zb$u6$V+whGnpP%&(b*6HL2q&!pqIH}R=1{&0sH1Zf9h6d*=c4fsGEAz81v&0{h6+O zVkB?g67&ut<2a$Qoko%ET1C7vaeC@J)u6DIi^*Vk)0=fC2{I`4gg=lL!}4Q{>EN-o z48Mh3O`MH0VOS)N*-EU55w<BPogSELI@HfG0s)_B3+q*Qxh2O$k&^XhULM8q4%Hh* z$|5W$!^)1Zi}~HWizTNfhB@uzy`<={kkNo3j9JZ3W%VccPO!J7ARVm-cz)z8i^#bJ z3ATw@*2Z}~!`q<OZ70=1IM*{(uGxMKCpyfI`*~Tm@YEaZ>t*Koww0VQJz@OsxFpZ$ z?@Z|kOP&LKPY}IBkj{$iUakyz9p#fB=;!$Pll3(*2RJ;Pb|Al1c5B#n93c138igJ; zEg=<I#gN-kx_*8Xbv|N6kdNo$!Gi~R?g{@=j_&lxgwJB&=l=l02WQVCm3?>s0000< KMNUMnLSTY6H1p{I literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/layer.png b/release/datafiles/brushicons/layer.png new file mode 100644 index 0000000000000000000000000000000000000000..df3b02fb766053b478b52353eca9332d664adaf3 GIT binary patch literal 11004 zcmV<YDg)JtP)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NN=A`Bt<yMq7#AOJ~3K~#9!?R<HZomG|Z-uwIRQ1{l95C{pWN`MRuGLrxy6T}ea z*6v2JX`c22Y=Lh3sjs`A+AfwfsLy_=Z)vMf1zTwwK}1Cv5)y_0At6MD2pIrFhDueX zQq!$_>)!i)-`V^9vClc*R{@oW^lE&oZ`Mj`rS5R<K6~%8_wV=H2bU~a0>AU|W}X!K zpH{C~D=bM8Ma^b?y!vNXT$w(Jnb&XJ6vv4%37f=7F3d@>)OOyIg+lPqqwDQEu@OK7 zKoKOwzWw`?B)R-USC5a4q)!qMVHOcVY&06JZEehKOaeIhYhV3pty&2IfQ4BYL_j2p zqA<*{FaQ`HryvM(c>(}7EG!~&+t<I6&*zb-qrJ7+Y#<N-AR++(GYj+AZn^mbAG!t+ zi^XDZ?|=w`hzI~;=%4h#5C63Y0K(AV0YPRqhFL^jeR+qzQ}V?dKLr2)(q1mG5ny3v zW+MPo4m~UcfFw2_`EP$OA^@<rr(Z;jF~%4+GCDjgBKW5E?#(>V|Mbw>hm$ytqo~=e z@7TWe)BkWox_29%e#RIRCy9QWAe217ru9#pw`}3+N7s8VKxO~|1_VH)@N2i+c;!_e zY1GFNWYwcj0RTSn)J9{NjbUS0<cl|c^22}q2@{*dBx7ThM!oj)d+#M?5#1HU|M}TZ zUiYz2Vi4pC`6!BsC=9|CD^}p6k3YpGVUfXs{e?mS5JhCHGHQ&8qNq_HZ`5lcb7GhQ zKmd>k0OB|jK@kvU03Zs;7$YKI{Ol)-#i9VTwY4=GbrEJZECK){!$Y`g%_G8Qyk18@ zL>L>Z2(x}x630Dzb|E4qiMi#b&oHwHms<+L!n$$HEYeac88+~C?OphrezE$YHBqx+ zj7gHXRvr8BUtZg2G=7^8EMB~L_MACaU3Ikp2#aA65f;PDV%V@TCeeS4N!XY;YBrno ztFHdbgWf3U?(Y8dKinVy!U%*Y0tg5QVB-V;kuZv)Z+-Qa%^TNGnR@tmtx8E__L1GM zzP2Y_(V|6*zVO8_fd&|}5fNiVghiMQi0tdx`-9uQ`CqU78w4<HggHs#Bu+}@^5B8} zQ8TJlM{c<B^Feoa_wp4h0fbptSd0jW000OZzUAi6oVDcK`DdLSgdrjYK@f&HW?|-L zv!P25g51)@XA=OZOBj<dGwU}J`TCc>uy^;a>pt<RFbsnrAfj9@S1Oms$Hx<sAR-_l z5h5W`kjsYvpbjU@AOeVN%s>6(r?3C`C)Gm*007(C%6+|kJjRHCf&vHv%xXp=3N%+5 zv9^_3wfdufz3uu>d<xM9H6oT;TKe|w6F>kK0cO#-)7*lH53jmE1c1aCL=lFUwmct% z;bm8R2<-bp7={Aa*WV{<GZ8k14Ko`yM)Tgt@X%>zEYu`u5a7`@tL7f}uFlR$hJ_FS zpj2)h85)eDh=Fa!6S0xOA|iWs?`&;t*C-|cFl^SYx_|C*C$zVBFbjwn=9W_Vz`*`y zvuW7=F~%fuqWdB&+qb>g*4`;1#&BYiw=Yk=EsyT*ZhE`k>y4v-`SRr-|M(}EjY$&2 z=F4CH@)J)y`DRZ5eaxIS>)YSC74%%vb0<lRNs=T^;^^9Iudj@az2R3w0C@7Lr-VfW z7{DY3z@BZKuwmV%#J*z^HyVxWuK%lgy?*c;ZQQikISA`9Z^QtzF~a&TY{W1#5A^rl z^{?MWLIB8x;eBh?W#1@7A_U+#(QpuOp#*|Rh!6l6f`9qO|E^W5bB;Z3_MCYyz4-i| zojVUUHX<6s0DvF@fFdFw0Ej4ph`<P6`P^q)+uE+Y`Z{J~lK8aw3y(VT=>Eas=eBH3 zjs4Wqn_ct^Yew-QAS}%P>!#0~xoFwDPCVI&VWT@4$5GQ5iK0fcQU4#G`b>9sH!+LN zV`wvp0HE8>FMaNY^Dq6A6HhrEi3o#$f*=e#IwvEAfDi;>E|<Ug#v9a+MAM^wB?gxu z5q@y%H%~uv(UC{b);%RcW@;;!`uqA3DF{MgMhb#l{@i6tNCdQ!()tWo^gHi<?X_C9 zdit4XBO)Ra1%TAi(LS($Ko0}}03`be0um7xa3z3!mn2Dk_`Pra`Bm2<001E(5Oj7< z?(ZKUA^=R^OUn<WP=o<ALoxs`05Jd4ji0(slO!Sn2xGCOd|;p-Kt%lOtp)UHWD}<Q z3qjVdy8qJmT@i+%4<8Bw5fjG=piSapcgJO8Kw?|$F^B+j9LLXYT0e8vQ8ry80zkP` z7#<u%w+Imd{e0Bik8u){w+@Ri!k0gH!-qfmx9Z~hXlw7>KQQRBxY*UOzRDW3*{Fx= zb_gPZy*+ytoV_#%0%1S|K_J8=i8)~w5CCS~7OlMPCk-7K2*Vty6YIwP;I?m^I{z#e za{wacQemLKmr=BK*Ye#iMFap|_~oWTOA!Io*doFko_OqiS6+=E&XXjcFN};<83cs| zm>DuwU=bOwR%aeH2LuIxMD(bUCm((2kSS9{qnBAkS_(8iUeg8WhcVj{fki+diXv}2 z(qF8;@26K>b*=RTW<e~sw)XZPU}n@67=3qZAQ0KUbqk?ZKOzF8@&4ko&$PC-G7AU` zB8YI@OriwDmOFY-Ylcws96o)90I+^dW_U-PYh7Jk1n;B=YD4xG9_O5U&M7CKf`nt0 z%43f`wtf4Kf8X=^^^f<x|MIJ^xyBfy?q?lJK!h*6@FI1fBuRvsP4d0(e}C2LHE+>K zOO`BIw=O*|k3atS73ZC|a^?A@QVReWBU+5vyeBNI?STy;?Q-0Y8ahU+b(0ul;y8-_ z@uttcwrkg$ER8~D-mr0#F~(+Qcfc7IVZlH^^!#<Xkc34L7?1!MiI6paAR-Ae5{WQz zKxBsc2A_Ov?J-Ap&6zbF5rbU#z(ebP_m)u*3Xz7P#-5@RLWs<QASfXA+z|i-6hS}$ zAVL-hNQ6aDm<b_H9)D!*i_iZO5ydt~HpiPdS-EUst=@QI<1c^Pf)Eh_g;`5y)J;MJ zW*`C)6m(}W+JCeWLjWN`0YnlWJTQFwcfO8@Y|M$Lo_^d3ClQh@>XRf%qS2uP>mGTy z+)^l&TE@rgzi~kVprtqp>Vc={7NFt*uH6Ec#8E(yNSFypkh!m?=Z^1v3jpREbKIGW zmIWb+t%q1d$Z!~jIg`sxExhNl%bU&m^sZSao-!YW<0Kld)o!@)<_Qam<3xlJbYrZY z^$cME@h2*PWQt(jwV}ZS-~QSyK@cuqdGV~HXA_aSx4N1Ti3kyk1RQXoSQH?tjh%kR z+04cm2*O;c-1_;OK3l6+Zu-J4KI{bmm<8?5fZ|a0SQkMN)}j){*B@~df8#4(Xf_(> zuDoR4vB$fR000RB6cO@;K@gV9<)OjBW+N70L_z|Zn0d-=9XH<a4-Y)JI@BF;K7%&K zUD+pohct{>1W}kDUH!l_8=ss#_t@p<UyK1d(`h*B%ZP{(gHowwXlUrbz<_{IK+IbC zSP+0n0E8(Zk}xO79D7XYA^-q%+YvP5x%$W2Pu&=xRvr8LEuTlitFHf8p-{A?76~vi zG6AVc1Eg|mTXn3qfByimMgeFFK?DLcwkShDLS!UF2@olCJHwgk2^bgwSuN(iJBvL2 z@ahduJi6rEmG3(F6a*ARM4O=OPJkd%u~Y`&{rv;X1^~2pvYRakfGli_cd;>xNQh$3 zGRZtr*Fo^E0{~GJeeIUd#ZmL>>pxZ~w%Gbi_YqMLNd%CBfLdFN!z0z|*qFM34^rO| zvIqhSSm+GghHD9L(N4|%n296SW(Yt;4h-zS?dxBjHGA#_m;Ol*kZ&~6?IVf+QK?)O zPI`L>j7hXZV*n6F1Yxixk%#~=u&cq{&Y|M7&O*!v00F^n6Eh&HCq4D}qfb1t`jS8W zv#yy(61}eNMFbF}pj>WgHsj%;11v15`}r=!u10H45Zevfw<7?-@p|>;?OPolti7UP z4I+&-VgBLmx9)lE*MD*C$I9ihZ^9+BC;`aliY)~i8mWwr*TAAR?6AyCap1io&1}v; z8J>LXkva3`b<La=roPPfNeIA#CP}{el`k|KjSqkH@ACP48jE04A|ePtxwVxf=^q%3 z<Jf0(2DBdw%yx5F-1}=@@vEuT#`f*mb^M7ZYhYPGP1_-1YuTvT`05vL%;oae{M9FN zxtyj+@PHOD2m?S{TL-Y|?;D7t*d9S5?3@L3bJBfcb{QW;!wp`2d0VsDIOMRYm`#&f zz}WMfrQT?K{g#`j9Wmq5Km9Wd0s%l2u@!*B5D;72TH~mB;K2U0{S^=p6tqpgE16u` zB$Ba_2yfl;+_bK45MjeU8XeC8A}j#dXg2=&pKh8l^T><d`#vN}vp9fQ=MzFImx|3s zG&rb9PrE+wJ-Kd?WOfQ1BC57FNz&W1=ZNlE%$Z*ch)8I+%rGF<8{^;j(&wjlbzk_N z%K%V|LyNJ1O-lg<#e6tkZ;p(NfPXW6wz{7~9=v(HRagK(#%tC3_;`Cqr=$>xmSHR+ zAtFBc_&O0_HXEOOtkBXrb;gm;Y<k*5pxFlzg<-%9_3@fJTQYy?e~CSK{6?nd5J((F zT9~H^*={EbbEPu&4#OL@H+$zSX33Hz^oCpWANY7@b*}Hk1-+G4dgjcTD^{$SG^vw~ z*|vTAefQn}cDDE3-QBx)?|w5+ojP^uO*h{>W5x_mxwy8KL3qQ44R`$T&b@nkeov=< zvle=A^+Tu`4}d5D5!P-F2$793^B0^kfBu3bNk&J8|K?+#P!Q_v-?AW}n{NKXf-@Gd zVE_>%UrHbY1OUwFP*r9VB27AE%D>!pYZN!{zwiFL?!M>u+Oo-$C!c!ish9rIrKg;H zs$mvkz|hvk6HWkoc8W(D>{+3Vx?#5PIEdW;zyo*u@UAz%W!Tl#RjpR<yz8z~xtwWE z6;MQG@zs_;CYi<lUI{5-W8CpBEJ}u1cH8oi8#iwFKi|6bP5IEZ*Iu{uoO4i*Y_v6i z9`S-gs9quf0)+M#1i;E@_=1Fl839O8C=g+!z$D4$jq7)8-x@U<0&?+r%X;<?KKtC3 z-{C_75CnnPu2m4xurM<q5+ftq9^c^&fM_9f(OwG`1JTY(yOcQLjqBGvyJ-Va;2?O6 zqUg|$)??=$y>-W{zimONjifD;QGs-=gcR@v=7WeW3m7SwjRFKBK&TiI3=R$4`Tg$* z3sI1%0c@MoHSMr%FYgrL-x6iYIS3H4VWZuTxZc@TRdO)fhNM-j{(y)=AV!{l_L;{Y zUad`PYkS)XC!N~SISD{Uhle(8cv69<<By&5tCzO_*04uJ0A*ISHPaFiCELaLe;tQ} z$hL1q5;B~uzW=A&UwRP$+B!NGpSz;HqeC6un50-NUU=zyS3mHJD2lqL9r{}rgg^j^ zVZ)4qjBMLu5%y$-hxfHP7wzEGi2wnTB)R*J@AvlX1%UZyEt+@iyNK-WJCX(yq!kxj z{Mg#nwQAM(nIiHA7D|#t`&0ozu%YCe3`t2*g+Wk%?|YCWN$&XmcLw_VLHNCwU)kQ# zi3rS0WCcS83?YPoh`4n5%B@?TyJq(B#~w3RgyUv&^_n#gKeBFuEQ%d>r%i)fJZtL- zB7mx?v8w@15(pw_OmgS#w;kBuUnu7P^aCF%6pPA5C~`%vnM2#EU|U<qX=g62*K5WY zV}!!+-OJB8FmT|7U%lkY53!+a*W++00pt{caKMj62T%wA$QbjpAKlU4+f#0Bz5IjM zl*(ly0wwlz0YpedK@bE%5QdYd96DaFM^O_IgTN7hLH@GK{-nLV%`QkX9-B7Eihdx9 zLOAN|s7poxAs`lB_sBy#U)@nIw_bL|U*vNIX9ZPc=)d-dTrOX3Z66*Q0sth7D-Z=l zghaV8|F<9i=s^V<YD_8$>$NKA`ZDePEk!KI!dsr*ym`Zug+l(aKmUt-zCeUdn1n9t z5CR4iluD&sK0i7#!gl-Iy6u|Pin+i4?;q8^Oe}EbTvZP!KoG@I+(t5@t{Q*``uiXJ z`91l3{sSNSNTE;^5EKFu6q~*r{13%qF)?PWGOT-TcR>kP3seyk5m9SvyYKB0kv&pn z+jnaohY>qu8bRvg<F|k3p8??gAH1emEGmX6WFZJdAnQL=Dz}P2WpqS=ceG+bNSA}| zMMy}2b!xjIHn39!O~Xu=;t@Y%%)fm5tIYhK_g&H6)=oqyC?q80QVuEoUn-ReaddP< zQ>~!>8Ya@w7O(;fSXm3XZSt)+C?kmMnom>?m3i%|`>K`7nTyVu-Zc{u1rSIGNGX4n z2oX}Tr4$4>G&HELiG&Wz5RY_8ihEiR%|@Be$sUQ))qrBS&Z${sU(cRrH$64wu)|I| z?eu^&TEyxq6nrKi4D$J0KBU2+VPn{)chq792}x2|C(XR*Sa8y1IAsGkw%Fw#ad@dn zv(dQYd*2Sj@ICLlG6-|x+kJ6~j06CKASjiJm9d&h607V)tq@$&mkieA{Zr3rml&-f z^>77GtY>V-Y<~2E@0uj};}3kWkk6B=jcgiLg9{N+xm2n*;(C4DeXO8AdNO9=4CI-S z34qE;73XB@G#;~b`z_4dUfj~#v*(PnmmYf9RM2!RuEs<Jn?j*nE*q1Kj0{Vf*-=vZ z#(qVy6^6%z(bXJ4ntSbPEL3TuU$IYMZZsP|zx$42vE`KcXQB#slq*xkuiXe~X=w>b zhKEO(Sz{`*QIc+v)e~6Y9MjdH-7*h%Iam|bi}Wdm`Oe#K1%&tim#e}sJQx#pNO2H` zg?vz{*5fz^L8aI<B18{l&#G9%^8{!a?8?Ytd$x`S$9IT@`DFL5o&EcI<}X}QZf)~B zeGs<|h~?JSB!RK9O6of3ItH+Bm~qWigJS;^QDw2AZ?|l@<Q)ht;C0vSx8@6l(-th$ z#P#}z2(*++k~9a0MpC6l>hzNFMo)QpWYZR>AhP-C^;!{wWyF|M>=A9yJ-qrp0C?}^ zSB7DT2=WH2kuVGb<l1;MiDS$#IF4#Vkqmx!5DDO1>eW|vw6?Ya2#L~$4rgUcZvZn? zMn|68wBg93=T4qHMcf%QfmakEqGGXVjEq&sK<N^&8Zu9>`_+K9p4xA@(hU$Rqa)*E zmBXjca4dtx%)u(Z1O<ROx$9rQ8-(Gx=U+rbY94zoX1-&gPy~rbM@Q8KQN)LY>t7~r znahK$WH(5XBs;df*fr}YEqO_q02Hf=@v*RH_pXtl!6nPj&*uwjF^yvO?=C__0db?r zQ54xqMPuFWlV`j#csW|rkbrW|Tb_O9=sEKc349((x7LyYki^lCfAHNxp*Zij6BOHU zU9<RQ0b)z3Y*@xBqp9W!ICa?+7Zz61)X_ttjSRy6zTU1`M-c_y?6&+sFB=9C;TN9U zEFu@a=dvISSm0orivUO%<|Jv<YIS3bixhW^O3Gt<z99wd)tL~IIH`<|<icFG^&`ho z0J{D@j^nlW-`n2NaoE&pD1sm^7SqTg#6lrw80+KXj$IK!C2?$LlJ1!U(tT5^DQf#m zFC02`8elestLTeGKp0T*l*b==2oNv&<I6FyrGiX!AVkO)3Si>OSjC6|(AH5&OLROU zJ7ch<OHPT@%IL`9(~bblcExFtuN0SvK(pC+cGLRlGrC$^+cJq3#Vt!v5CZ~<3`ETc zJlnyxg#_iH+~%;=W@O4y#DsZZe_xo(W2Pul3z9k@TMZtsTk{~ZEI<EJ?O?#h7x)?m z1q#IiB3DK$S#p_?EfHitUi{Y)Ryv0LG0?Mn*OWu2B4#*BXE{olS&>G4{G}J3J#zNk zQn{Q)iAqx(xr9Un5+@kPks8D%Izjd+`XFk|xsPs597TnE0f-!dB^i2HD@GOs5tdC) zJt-m!mn^r%GNkHFyJaFREhR!39UWGo9jf`nHr}8BBs=%XmRDjGf4g7%b+J^+#E1(@ z>(rVRK%%Jm%v0+Qn>M|*tyRroU4c{joQMcaJ>n!zY|)Oa9R*rlu5}uJDmv~J1yB&{ z<F(0$OhK_&&jfd80f2DNu3hT|0Hk-{UdC|Jq0^t)wCRl*8N_@(kHEEBU7^{Gh$o}X zkPKy(`J?}PV4$z9ts}!rI|fvpOf_i3!^0yZBkwd?=s)%$BAuO`lO|0H0bq1=bkCkW z|7n!h7s8V!O``ua#2*-)_@4&)1AB!3-XAb++O*3rzkJc6ML`fuK<!<PZA>D}Q8U`~ z%+rrNy6%M+w)}r?pw7<DD?j+b`KQl6Z0b}U5=wPhY0+a_7ZD)}L?q1Rmn=PJ@sedu zzsO@_m7bp79XobBwPC}num1WE+dznT*20A!x%T?588hNI5^$5H3Ug+l=Cq2;R45_> zLUz7FYflW?J0`WYcg~$R@1lz?RLHtkt8ILG)B5%6cfR&otv3FSGY}$nc6Oe4(uwot z&h6^zo;z>ultT^y3W6YKNk1ZE3<d#NJR3-fH`g0zBWJsR0FOjz69Xcokg2WLl*}Xu z0xeq0t!>MeEnB*DiOT(xBzb7fntOiy)8<<hE4)Pmb#!!Ga_J>!EI8wkDN`m-KBQbO zd*x!P(iH&=yvR)X0{~Q|yb=!<I~T{*C<@D9iDga|t!^v<keqs-N#}Re@d#~Gq!VL0 z#~y^a3op3v!t*a+;jzltj#pm3=f^+Y+tc&*8VDCJUR)}b&cEP-`3n{VL7+pEZo!bw zw58R#<<L{$z$F(eKkyih9hYW1{CIF^O_U_7Ljl0+!Y`w(vjZ*eMVutbcx`-ibf_{i zT&-54W-|zaTrT(Y=3j2x{_?=Uf#1h8-QC@@X3YvkWXaNHXDwXhdQ+g#-QSR6_nd05 zSyXfm0zv`;D9B_<Cw7RbM^2GQ9F=5c^j02BC~T2)Kmj2NG#?SFu@u;0J8y%65*X$r zHp4@M+qQ1mxno<i*|a>*#6GDQ;>pL&34>z>hAW$&+wywC`~NM(G(Ze9DqrTnen%=Y zpq=wW%O8-93mrSr`C4=kmA8#`z=M<&n9}q*?P$}Gbw)y$dX(6;W0(>(qgP(u{=(*s zBg4a%xkva-=(Lg?%sjchymHyX=U#fbuYdpVnS;=>q?p3SEXL}LQ@|A+*`RtDC1EFg zL&yeZ)+jCp)hte8j+VxS?1ZZ2uoyUrlRdj$+q`joZ_jQejKOn20=ayySS;oXg)j`6 zIchc=_3>sDlVcflBThW#=s1oChlby>fs|2FB-w7d!Y3|;df5dafT&=}O&6!o=fUnm zo{2(0hAhAC43=fuEV8B`iK$j=&p-Rjvrn(LWD;7bMq5YQtfS{0aYT1ZsfB_-uLQA5 zGh;-INs_+4-WQ*LuGwtbr4yX|u4C4&d+Mzk2vg@^Hee<4j$d<|Yu&)l=s1Kh4JWn) zo#Vb(yk^CIb9DGynxb?vMF)umfQ=a*9(-)=sy(mm6gRs8C`ZnoGw+xaIwno>oLCl7 z(iA`xFdGWOBW83@n>Kx9WN7o#8=H*=0*1)P%$u`q`^#@N#1K)yB#F4Qd}7GBRAEJ3 z>4{|}LykcA{A|keT6)2zD@zbN%^J8t5CJj9^zG|ew{}(UzCBuAi^$>Ak2vAv(+-_F z&C*YqgU?CX5kz$GP>5LqVP;|p!b7G^U2*=!QPkY>{ImP^?wNW>$2NdcsWfli-0rTf zVxbr((cs|F)@|GN?;rRb21?>s94(Pv_u<q`S{Ad*s^GJT%QOt0sIpQXH&_YwymPaO z&ZI7M1q8sDq`$9s&4c&u-?vXMP6>0l<4!pFxZ_VOv=j-+>vODSoG1<gYe)1<j%Iiw zmVlU<xflcs&RX2w*+~?>|BB%_j=W-5n3>JW70a2;nui~G^sy)2*g!gqVhno%-;2wv zlS@h#t6?0S0;>GfzXj0`LMfY~N1-*acyQJV78KbW9v*t={-5>i-ldpsv8CmVvzK+v zoR!Pvd?ksQw2y>3nE@`i$rcs@KrE~WABjL9ZS9?nM!jCIS4PKF3X5o^UI@re0Fxwm z-n*BdyL9nCfAc&26TQjL|Jjq>D;KoV^%=%XztXXYj6?=q#<jy|Zj<#{kiI{-*CDeR z8y$W8k=5H?+@kt`_V$i57A@<VIV%iv&Wp1J6@rK@0>H*=ngAUd9{?g@zK|yhYqhHC z7qpH;u`_hcga`}<m5KuhLu59Az+YYWm#@6~>JRStQIaI$$8KEeU^mR-B22ej|51q^ zrb->9o>B@pV;4`V+XC3#iDZRiEX`))xnFL2eC;azq*AGT#^Pl&XC0Nx<p8s(MrAFK zCGFAmbe;#ao(>p>VJ@Ff5>p+kBqp(%Q0vO1ouTT>L{!0Om5kyvx5PO6=-D@X`tSbj zhd-)R$00k?>JMNIWesy>Ppt2F3A4L0#h(2B78RRRR9a;BSm%h{?JAPQ$==<&R{i3h z%IF9HgkgC0(sv&<XKp^9cd9C2uw1sCy_8fe!^{U&gan9)g<_G2q9__29W}c7cA(OV zC#~}mf|auAC?^mxGYNuD*%}Cf5KV&bfB$7WcfR)P*Y<>24mahm9WA3ZvZcz!s>xj8 z4=ij8T0KmhnVfjdNgQnf!DC~i58Zd~D?7FlkqE!*<kL@`e^#kfveK`NQT5yxvI=rl z9*U?QNV2y^6^g|`O*1l@Br#{&3jZ`$c@qfx1-S~0h}dR1Btl^X3IPqM952j>L`2ht zUg_b^BV;Z4Ii03Uk8gB(8IW}PJ;R*%!Y_`Z?OT7f_Q9V=%_b2|pV77Wobx&-O;*O# zZVQRkKUroSRN^OAW-n;Pwx|SVzEH@86vxTv=xEezI%jv)K8kb1j1a;}<DCMs6EOe) z3T;V5K~(Mzo$b)~bV!6ofJjTzFw2eGTnrws5kx^i7AL0mIx)+^gHuTWFsDRprmZl> zj0_Lm|C77+_3S~!APmkq@8TnmIywk*L}cfr$=9Jyn(Z`SKK+r31PBnJSSSV|G4tr? zShLaaxRR|*SOkHD7}?cp9+E<@uy(Apq~b{gCmSU1fT;&DPpD~Zu2G5`!0RgQTiNM* z!AzqiR-9mqWd=y1XzPnFtbO3#IF5;E-f<@^Sh%=cZbc%0*x4dF^$y$mqU%S{wrYTc zxm>PLEC`!=y;-YO^{f%An{m*kyYa_LiCwI}u8{^JV77XdRIrW${!$}<GlNGVd?BY& zN}n1K5g5{z-JcFVZ@G&HbbE|QWn_5OeLvm#$__*<m&@mzf60ul?jQ*55>+$jk2w2v ztV-8n3gR?zNMRTj3q^n=iId7$C5|G+7p(Z-#k#!&PtczXUboK^D|`gdYbYlw=A5|6 zb?4zh7?oyI?_f3!D_Et1Vn}5TRuP-&-!)q$NwRC_uOIl?kH*JqK@iM4?u0WIEiISI zc3c<y1WziW^iwL%Y1}siLc&6!P{@Z-95)(KtvaSUTHpGn5d{8j19vMxdOewtHsJ!V zA7wdc_}{gkI3WkQX?^R29ywN}C-}hAiw3|7iJfA^zKlg0jrwD29(-Z*(|{P}@+&U9 zw0q`}K^UT|L^0I^9yE#p?rsy&u^J@G=_8POGaehO#8H#ICuHhRo31=u2MF%Y0(8?k zoOX(m)%2!Q4(UWmx~4FrZ<Q2iaaLD^5Iu};XI<DU9#dH!vk@LTaNz!*-QBluFCcc! zI%?^;E89BSiGoxlk13+$Puhc3-6~flDz=mY5*DeBN0rJb8<p4y9)vRaIWv#K*|LDM zdNE`NFJym}xh73gtPMTJk*$LyopEvcZS+24J9dQhDxK7OM8qV?D=%;R#gFe)%HfQ~ zOHVpwK`xim>OM2P0|yxeWkQ{)xAKHxSS%J1k|^eCwc2Pj#NH(A)PTqtIgbl>Krbz0 zVTA0?OGbIe6UM9rJapm5uqIqN02$S=od*Sf$Rqgt#IBu!%#jZuBF#p9!;|ZtdFpXy zZfk2l_kv3fpLT=;D6%En8-+fmGYW!;M1^8YE<oluN@R3&B#9I6$|-@Qz<}*&z)Ld4 zfp%!`Gs#HN{oN~>fbykDCXXUInbScbmR>87ayw}+<4_EL`=BB`%+;~62k!mx&R4br z;1S(3m#@5}t-ak>fNxTDqzem!u-MW<k}ylP))=qVRM45`g%pMq%s@{%kR!fj^1`nP z-eP@;B@HdVNc)ybHZhNm4EOc!%hW;EW4s|8TjlsL@oH>60}%v-6Vun*^NXL{IXXN{ z6r6VEqLWWsP$(4aS?yl(J58h=QyAup#R5tcB`{VUYc?BfSnD>gb@wSgy^lk(5^>)( zTW}$(CU<P+L{=)DPOzWQY&5pN^sC-|Jz>6>!X4n!jja?tNTC<-I>Y%&hZ)$IoxgtN zzI*PBq9z5w(&gvRo_B06m&XhVlO6r|O_maoAP8DoO2P?BJl-_bN+n5RcR3BF7h|Eg zu@Vm)Xhfm-F<eP`Jjn{}CDS6ko?ozzWA^v=y|m@|!w#Q%%IWj>_4e2H><xW>X7ppn zj>EGJiux*g6hoNfDBk?^`X?TFNJLuO+t0h`y;G-7qd*ndVqfhm9D%ID7AGRMK^V5Q zv=A5rT&tV0O2rtHULt0jKh|kB#d|rehdGl8y-B<ZGnE5Csz(+-DVX*JBF%dJS6iMF zHpiWCQWyrVK}%Z=z0=fTE*|65#w@dI!rW-oH$496FP~ly08<a2e(uVPJ10+eLS04a zJaHlHW((4eF>MJjm&+AfN=ZB}5LRmqy|ohjg)Zss+L)$4?VYU~p!hag{4HDd#p&Hf z;x7JTo1=Xrh6u)(;laUIcDyuw#*CJhR&e+4XAni-OM$!A#l{JP&)3S788cq5t^UQ& zUf%X10L(mU_POU>)KV&0>txSwFH9gine5%l`VLV(pAUl|;HYV^R;x6d4QBs|sI00c zW6NIa45SS#RYhm@Ms5bz4<fjoX0Lw+f6t%oZ{jF=dB;n_=IA-cD3&4)smLDl*`W#n zhcsJ#x9hSD^T_D%s(bJ0*|Up?PB>-$>1Uo@C=~3?;0{ehoN$Euxp!@3^{W$6q1X}< zGRO6pDwRqcM`G^;683k+B0Cs{-3*J98A}EYo}i!3KtQ6Zbij;|98-Kx>f^OncWmvP zJf);pUFon2XXm)mUd$<-(378RsVV_sWZ{wFq5FPvSATC05uS9~nWru|E1%C>OcZ^^ zm@>20SZOOD&N@M{r6e2yP&4LgWh60)uyuLy6J@sL)Rmx%c=rorcB4$$R?^<F<!)0> zYhafKwVgF=4)piwZA(EAxQm{$tw<KMx6vq82=3b%mv#)B1N-}bde`mMN(BHGowIV@ zamR;Y4&4-+72{{JPZk>W)dB)g5EP3o0h(B(-b^Z^qihU&HH7~f&ej$HWCn0IJ!mh= zKDThH6xZbnqniY_r#)&@Yqu&%;+{RbjY+zXoNc4S^&lB$*m`3cV(c(`OpjF%5tDH5 zzMco~y}MSehWY&2OW!?v-m#u|V9$qmxWih?yOp~e5itnDQn}3WxS^olh-$T(61kZ( zH|+@#)pO9o{&xIN|8lpmWy&A+W88Z3yD3Vx6$=V7FvM}RW9y5ZlP7m{bXr%)UQw5^ z4rW*ly`R~V#P&Qy)SKS>`}*$t$q%cQ3KA_``tI5Dj#b7=k&)~KnPduQZ!CMmAYc%N zg+c+jnJ_lS>slpytVx93Sja(fWe<DKl!Y$yO6Gf|L%43R)LuK7wi*o8>e#+LyQWT` zkqblr!VFfLHg`Vzr>B@bktOXxjWIoYcmMqEe~X&UFbvMQ;E%dz9Tf&aI_HV0C<E=S z6!!nsv(nZ)3|m@CV(O6z>h=2g__&9?1=$X<Thd;D(N-s!QWssN;|Mp~e0o0DUqIpq zIoY!;03tG08QHgY&!LA;3n;L;Lncz$Zn{J=hhymTo@AvZBFwyR@19ln{y1tjbNT$) z=d9@Jo)rdxyV2Bse-AB62JQh5HUbb)F3c73c`!|uU~Fux(P*e}#J)n%_fL9>96DA> zz+Fmla95GJ&n<iU+9DNgTVYu$WMlezd!nd$`1Bb*BW9d&LgVcRTGD0}Ebi<(SYYOX z{e2Jo?C#oF1qshweD0A)&ke(zdlPi1C1ZBjE(3{M_yQ>xhWUJsFlokItBp4rb!J9? zQlU7uN5LhVjMF(~#LVE^gdZTi6BaWQmuOFRr?fG~?C;&j#&mX0PDLpbn6BUSn5eWz zHwe$d`}=!;e)k>Y)iEMky5gca^Nv;Q!d>H^DZeE%%9?>u^m>eZE>~=6L5UNlTCJwA zjxA~t{BeLO!iesoMz;mOLq0cgM%wF8Y_p7plifRC1%S4WP9(~fYBB+c!Gna#-axoy q$&#$2W+*p2IJN&_PVD@iFaN(Mp+kkoRWw2X0000<MNUMnLSTYO52)P$ literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/nudge.png b/release/datafiles/brushicons/nudge.png new file mode 100644 index 0000000000000000000000000000000000000000..84964e91f30b25fb6d732d06baa82a7357e2dbdb GIT binary patch literal 18012 zcmXt=Wl&qq!^Hzd0z8x;MT-P0?k)vFihFT)io0uRpilx7FJ9cCxCbc3t!N5Ci+gd0 zm;Z<N&g|^m`{B;+?CkE@bAI<mYpBWN<5J=R004YN1*q0@ZT`OkL<a!SC?9^`Jl|m0 z$*9Tz0JZUW_ZFDX_gI$7^3dn{`MQy94}Gq1+!PEvpWlG|UqOSgWcocn#P(8DeTTh( zO$?yN*L{q61pv?i6rnQOehUX3zR5Ov{%_i*6@^!fnq4**b!J7e%VzgnHnYAepkpwT zJ2_3k@n4SqxnBE6lj9%qA6%7>+zN_?v-z8|tVnIocxhH=Hf4XyYh3asi+Y)s$!b(& zmG_e8_@qk5an_^}X}a=o=o)&`jCZusMSEX=I?X{Z^|;nd(^6K_T%%PJ`nN*rdgvX0 zywt_@)#KkiN$gDpvCx~MmrM_RW`WZ?gV&D)Pmg=_i%6v1L|2=$SBt0h-Bs7sX3{jC zrp|cLUz1On?K-)*E!y@V;N(*C;v4xyv!~37LaT(sf(NV4rAd{iJlS}b#D;2i;shiy z*w22A1FV&o*LBllHm%1sTdr)+IjNPHUB3VRwpMs48URCIB?!6PCs_6%zTi;$q)k5p zIsQ}TIl#?r4nufe+h70y9tYUDcNIC_cX6HPpPC+36SR+R$a3jNyBdraYKudQ78s?Y z1dU#ja?#wbvA<cqLadw^Hoh-0)v&gwOWSo+?-Hx`o4o}~@bK_>pU!_Y-pi20zPK-P zcs%|0Pj0K(fpg@?l4Y;{bha!cYUO^AHt2G)7mk%kD&^(kVY?*(THQF$r~O^LY5Z-X zH+SzKgz}@*?csuRrjOSE@;?IM%(3{V3oEJC54WG=)w6=?iu91Ki}eD5FVTNXb=;I+ zJz)3WIL2^=KHX(S^s&FeFSy(oiuu$!Iw$y0P0LpII=<xPeLw9B!0-8j_^h|5!GsIF z`<Irm%SxlOsR(vL9aE=>fj3-lZ=$bW0KSIHg!&TD?*)b)OLbl4nW_0y&hz{k6Ip3~ zDF3n?aGt{dbQpY9pu+c1vJxb)B>1>Z`=qYsJbAX{={cf0lHTFPXMK<n%h2v?tQ;V` zbZ?p~hr%wkL-=i+cuWVKb-J>R<-QHJiT32J*Sc9AF=K>J_uwNR|Dkectv%fHuGw7! z?c9$lLEj5A)AcuQ&ZcSGj^*I+B0S=nx7Voz!6!y5*E=;&TMY4%_k*>bR-M`0Cf^LI z1%2aQ2Cet$ogg0%&UA0S8056B7q`Ep4%jI7b{sc0*c&T0s%}Pf-SwNGa-<~DLUipu zcTXrh9zB+S2|7^Dt?yhlTDjXZX<q7*@Rp#6Z)(00bQoznL`Q3@v!{FKdb^W*-%I5_ zZkOXHr}0$Nb!+#HrT=sYb$LWXJ`Z};RF)RhzV%t4nhgY5YA|c@dz_~A8}I<H2vki- zd7lpm|9p6O$ah23bMk*1sUFRySn_f7cmG?qoja(<wvTlF1RPPAf$K^e_{yib?9}7? z8il%8hTI67`pR<UWoL{$ams;~{gJZo$>NC>?Ufs;18!a0u!UM=uK(UBu9QQ1W)wVr zxDFE7cLcj#UH{HG+L;^ETWYiF-SCKZKPfY7+mC))@2#=$TKh$CC*}!_&2Dqso3z@d zmGWPEdfc!(-;4n%U;NY_=<feJWivp)ldxaxJr!19TkxBQ#RknrI?S-s<Mb>v5*rKa zO-V7r|N7TsHcHs3E#N9+Jn%S30~i@~df>UT6msEg_IOLyTx}xWRhQ4hUU;6)Fz`1~ zM956Hc97ZfdAQ8{P6x+7{)Yy*zYGj%^>nLWH3m!)t{A0@K2Gf>HLZ88n{?ewuG|g2 zk-Egry}2)0z9=>e*obyLHV~glS4*aBvk}lbe9<{Sla}kh8D~QEbfy;yxH?2#rC%Ye z{*JDtLmHRs>Z1Q}-Vrq6yF5KeJ?`AC{JXW@{<Gb6y4$>T7b%|;Vy&vql|MZ2X8X*$ zlatV~;UGdOc-{P}VmjvP7!~*2OUJWq`8H4C#mmbIAKDHP_aG0SCSfq`VyN;5;ivty zu79_VzHPdPXX*$q^Rv?Rh;6c%5b`D`q}PMwx-7S8OPzNM8GYE@-JS1M(c@n0`Y+aD z7xy6RASbt|TU(2h)6l!+B;SJt^68DCB1=7HiucJ7SzifSbPZu@_~fIi)iisbHob?7 z&!*k>n^5Mdm6a#{_J${{=BI&8VcM4YI>T0DdEdY}FXMp^5<V`MfBMpM*^(vhht%N& zFC|WX3AZgQ2sthKZ;dA4I|_@-4gGLh^6`u&XS_aA4?4>Ixl_dbuz609OHO5SH|rX7 z;$8EU!gJ0fTKBZojG;T`BMFdZqs$AZZENw{t3g~R+*LneU;Wg}@e?DB)ngx-kT|*U z?Kmr#ki0B<5S9X>m5$}CX34NX`fb8R$zIGu?c|>n<eBCEoa`3St}vym5CNs%N(G(| zTDb=O`}CRS?ystEX9>b>@4l}-O;4$9leu7_XUxhJ)X%UN)OvZ|8`_xH<tcN8xLs?O zBe{8$dYoGMXi~G0>vw8&9DtOMe|t9jAlzA2>$bPpSO2DXEA*o0b5MnhtZ!=zJw{Z2 zq9f=)>CN5eW)=+r&JtTglzf2tM0LmIY*6rx?D5l*r#xbIg@4eVM>4ot1L@l3u#L<O zs?%p>5+u@0_M*p1Ac<}ce%gqr+82t@y*W7G>;F(z9J(om*k_+WB&skExprLjDsSh= zfrclwL)`OgeD#^HpKgxUeUIlmLV_61sx~dbgs}o+x^^AG&PE&i@u9S3hGI00l2Y_} zDo?4%{}OL~@=T9E9J`R%1$=HYZIL)hmpAj9Fljz$-^}}6KWj|}09mpEWygD=909je zo0V`P!r7Bg+S-mO)g2FURP^Ovwu<9?3;zQ0KXe@8t=ukzh92~(hu&YI7ChAIHLB90 ziCVQP6&xgJ)I|eutQsu72i{$ihyT9lRgrL@vOy8h{AtI0M<SYfaJ`nmK>Ki3v*9=< zk2qH?5P9Xe|0Yo^rG}0JY1Blb*tmH+f=`V;xs(bo%}}>jFmN?$+YA^v^Gsbgk6rBw z*@|eh2s!Br;l;}+(-uml>Q9_97Bj2V8JKhNq*DHPywUc##Fh&k@Da3hc=$d>Ir7kj z@+jMY^{T1J%*6h?@Uq8#+SB<&&5GDjV>yZdp{Uqkl|Pd<9(wgJ#&_xNsOvUUY9;uh zN<CNPu!#)>Sn>h(e{>Wv{hb;`h@q~+=|oF4*r&5d{HguYxY=c$hNBD+_FGWB>$-|; zA}h2v`)WP_^W=MTXeGlJE>*KH@(r7Y{1mY)7!xFH!H4NLTFynw@Ny5|3AzAeyHx*& z!QSpl&dz`xN3+0dZZ6K0Wxp#bhLeMWiMJsa7X(2!YuxAfu81ER3hx9_7li1IsZ6jB z-!4zeZk!n&RsuJj5XOw(6!g>{%{?sqYo}JjU1<*HeMe+dZt7Qp?@_LyJD)CYrkB!T zOU55TrFFkxVW8AZPHrICFg}_zeLmuBtJ6%1H`dDZab_lHtRYgY{%Seo>CfDL*KLZr ze_RNv$`!aYM}~M9YrmxZW|olvbW#6BI&z`HA*NS8XV~O2pNSQiBkt*6+1y(grtR(7 zQM2ETpwg1ucQ~^Px$+G;3~r{~p+fb2aC<yoGiG~9mo=m}cjYS{0*Wtnd2UNF8LV@@ zfi{vhWGU7xWb0Kt^q=12j=Ioc3)t;^<%v7D5~=Lkb=cNa?LPj~c5MntklW&q3ZSU( z-7ZF6_)<3QM`$-^f3bME#aGS|0S`UAAx64VbANlwI+6XjSTI2pz7pi7C$z-O>RzLR z^ZH>khCh23Mo&C&Q69OAY0>N9gfyz0K?9I&;kkB(T;&Fxm1VDgde3gto42~nR()}C z0seQ!2>O}J9q~BHb2qIZL3uc6E3r}|h(B@lBuS#wSFql>6ewJ^A}01jLdryFG@*L@ z<RsRR(a<2Pa!(9f<EK77IT#4|3QE+jDyEX${Z&F6y4hNv^kf)u>9X)|KK?0(Z3IBi ze7&)|9iJt-R2I2EAmqAIcYK;&;?UM}7*HO_LaGRt-f3jZF~Ec5x^uxm=+_oI{*RlG z!=$eJ-vbehvX2!{oBVb)9FKUTAD$i`YC3|fZ);1w0RTXn+aibEfAuRbAwEb|U+VxQ zr@DlcpfGYW)wFAy3z)Dv<FXN4zlBnj`WOC{ujeDEqBQ{|4MZcX+_4oyl3gFAs<uyL z2VI^joj7vmm{bZp&TkMNp_-4mL-&0#0TSnq7gPM|!R-00zAI;H`Te$PZ|k(n;j!?G z>P{@_52SYGH$##36ixfrXzLJW5#o4T%Spo#Z6?<IVGyLhb^kK}5U!anw;;HPn)Kh8 zwTjzrMeDRcMe4I%{o|hqy`AiR`VPSWbjwbB5X=oawV+#lxRNYnT1exTX#YCl+hph3 zvcELryLVRdCE`Y_UdO&^IH1B_w9~n)%JJ4laY}XHqdo#;icAynwy{Skm_gq&)M+<o zz2{e6?`%Z~ikpd@?N!%)98foQ`@~~bWgl5<^L<?v=_2K2QCyiRm40$@MewVt&(2iB z>ugrf%yXS;?DXK*?)Gcse8Zu+(L|fBeH)LbCAdqXQ7eaC=eX@CGMh^HidlgpA1m2D zaR!y+tlsymf>QTi`dFK_@zneHL1XL+z9i2KruR)H@Y}8UtYp%P`vl#Y+m+2vQR}4? zM((zRfTEeK;fr)YmOIU@sAq+MUGVRaAXp=Y(RM<j)mVR=Dd~k(yTOi7+Qc@Va?(iA z_~jy^Q`j5&Yw~P6*KhOB{7s5B$JA2l6o~;KuPni%b8dbT5BjGr+e?B-`AQl_c!lfz zus8X(*JtkPf`d%AuFS8~CeVT$HtO*JDY`wuc6}NY5A`;|dh36C>WF)Bb@i~-9@2^M zbJ;qrK(py=z0@xr;Kv=?^BCj#jC9&N-eF0@i|@MrOZ<j=lw|n0Wj6!4bh1@@!g=DS z6jRio0MW8+3@~8Ur)T_+m8_%6D(o}DZWg>c3kp6g+dgjJtd^bjTq2|g@HlaQA3X^M zc6&6|TJ`of>7NgdTFN4mh8WQR)y6^9Grt85#u+U^7U~o1C&pa!uSTCW-oN^!k-m9L z9l*abf{rdbr)I}wbR)929Gt4Zi0A!`xB(i?OV;7`hKz**aaO?m-~7%}$-uHU4<i)| zL~DCZr!f}`6dlkK(oL@3-!Se4;WoXzH=nrv{j4sHXx@5!0RX+GRR-uMKN!c_f+3!s zWa>2HQbv^|nN=AUPYa#G!GD_{8UKymE-DtdrL*uV#$s1%x=?<h>`nY>Ao9MnlGdc6 zpYP^&SI|)ih(>vlzm5sYyNT$VJTfk8m`WHzh`E=s6WhW4Er4`83QUn=D2a*A25rOf z?OCWDb2=RWpp(jploAs4^>Hb3&~Mr<%3nC{*gtd>GPBd(I-4Fizh@F$&Y@nwA^d9$ zi%ZDu;xQ_9Uh!sN9`37`&;OzVAo%ddqXXJD?Xoq}RyI_(nr~{nJliN_##Tv7VKh}` zt&LA%XZ%aBN-9n9UBOL;yO#%-n)yy6*C;0uaE&%(9cO~TCoVSVp!4{ca#7zTr^D;$ z-BIJgtp{TcHOiX+_Pk=i%=27zir+9#<YXElo+7Cl{hAPbH-Dn*Y5o3HB@+1`>>ktp zX`+Ax-3&8H0a3)YK_+j2gD?RjEWGT<U9p^rh~L&_HIgaO^4=q&0sc)E3$C3O6J?$y z8C*=^XX?Q_pSWp)^K4Lg)Bk1Z7CTy-Axi=1xLjdj0FV9--9`al2V2oDjcRrx|0|>A z3Z{h##A&B1_1nvY&oons)Wmi#-;dwPH*u=u4kF>>Dv<YuZT16#m{!*52uG@>vUVB6 zq#|pmW6Xfpv?y==4~=SP>fI!q$I*h%u1lf#XaKMOT-z(GzIigU5(4Q;zyN6=VSsK$ z5L1^#y|%NEN+uu8^bEF3Yn8KGrjFU;ucsT7<DJ;!s#Wd=d^{`Ub`y_m<sq`U)pm2I zugqE?@rxV`6nR)|sfm$rh>1T!aWtygk6NGnR=%-++t(M=YVXrrG<WF}a#!@e`B0xW zmI(+5yN#>tqrkt{oh|2_bGRvAE~n6)_PFOs1}YBFw<D_!>Nl~NQk%-pLQhM&GUM#K z9_K!5Wn1OhnTlP^yf0y1cHcfkk2)hR8Bz5ttdJzseE50`R{g*R`M%krvoy+Vm0Xu$ zF_z}g7il48Dnzj&Hg$JeWYFKk+1?y-zCQs1tj!G3a_KqZPuq*;tluQN!!`NJFPcgQ zZUX}PYc%uiDgW4+`JYpLjz2b$x{nigRlcai24yrx@Ryj0@bTXDe`;^^3$(fUJCq)A zsm)Q%3JMS71BP)Bf~9-CzNq#R$c|j74)B|Be{W#O{v-0o)5oXPVu99wNww>QY(-&H z3<u+1f|VVs4Mu@Al<L5VYHt+(rRx{(%AQ1sr03o_|BC+!jDCGzIR2^Mh$gBDpI)&z z$0pe>E+@C8MZ3lGs#v9ZLhuVedr{ful(@@64B@3LsTQS<&A=I}m5f46tgdv~=B+76 z3FE4%1lz;;O))9`m-D<km-~O)h(`M#pDQTQq@5`CD2|SHC>Kb_E-g7c$18^qJk^6X z)8D6A<IpZjT>e(o8{qHMVvGQ73H%#%5S0qv`0IoyHtX{4;7`iS(W%k1#nXXn@Rj3$ zIgoe|N@T;d=Z&%0WP%#WUK^V-Y;_shP{Fx-yG9V7+Z8ym)%alYw05?#EcrHyPM?Rf z#dQTyb3Y!68!XQ~mL=+WFkhcWm0Dk2<9Kx~?J7hZZ5K@`8wCVo;8C0fx3_9l)3kaO z*^34uV=H&<k&MxJyk_N+{(D;LMyCt01<5CE_IO~gk!*GyUb%2Q6dsQpj%ror<@3^O z({jbxym*d~dN^M1q~6spT;O{}&-snSH1M!-iS0M1Jn(Cr{6Z41PAVgu7eX!*MF#@` zp9@4|Toq|lw&w!!Do%2aE~Qrl0l1)5HYTjvkzxx(nz6h`*fTiK120tw_YBv7rZB+^ z%JUVh#mr301&9c%7^pu3#AM9d5yUWsxsdVO*owyaiFm%dt7G|R5yl=Ca)jGw#&X`3 z4S7mxl!TNPa1zgIPy4XN7K8qVeuQ*+oe9o=qr`Yyz(J{5-+I)-hSvRJSQY8(%uk=t zMtr~PoAapWZGC%pmzJ9P*wYp3<y%d)Bl;uQGf-R1^TbkHXD+UCmzMJE{B(FYoLB?? zm4h(+_uf|-9mdaKng9&t<GX`iQ_!RObzZJE5aPE#+x}ET5JLCwwPK9A>g&Lp(Oo}i ztIM&sQhuk9Z<|KNJCfFtdUm3T0NXKdRc_$JSFw<8G=&dJkoU3DUPZ)DCowCcqJmG{ zIy=YI^T?-vNho0#+hlsUs<7XELXCjxcBEwcUB6HB@HFw8Tur79XOy767GZy$9T<+& z{{_PuVp;wZ1Ic-HVEh<KZN&LS>dJ^V_%@<M>NaiVfovC+G*oCo-h9+~TQ(6~#*d5! zkpehOMX&z6Ux^)@dU1siM2f%lye*sWYwcNntgR9rPQZW+mXBv%FrjLf=>B8HqbSJ2 zdr6|Wr_g8CA<}8#6%=B#_G~x`dn-glYC2>{#R|Q6@j@g=A?Q?Z`L3tAOCE>@Gl#3@ z_#geQ)tkHYUJ6;^enDp%d?L<?ny<AAZSz!RoZK>Mt4RA`?n&w~{t*Dc#UKm^Nwb7W zgM3Per6k;Mn;czPQqm#=ZpqK&#kK6V@uX59U1x}^CGVv%kTj`S)3N&N(1VRW<v`); z_Pu`W!~Ws2f_P7G^;@^D#6hJx2i>izy)3&~a(o^LIXG9VUjzaIM}aW_ZfKxLljuKv zmJ!%4cGcnyY@lv$$<~|lwc8%4Do}#WD|C=ZB=uB8G}-vr=+O$o`9a6G8Tb9RT2~n1 zqW8bpZ-aS`bE)Gxj!a8Fssnf|5ukoS!A!UX+zX{DCzx)IfkrlS68^0?Cp)Y2@v-@J zz-H^%L+3yZ$&}_rl54B?S(|EOz^-KOqhYJXy;X<;Mh=C?55Ak>p_rsQAy@sb?P}fK z;a{z3JaXdI!PKcF>fCyyYH541<rZ`Qjr@=l2BLv7=m)g@3&qo7<zvQlT>}l7$ss$~ z7PZyKG>4fcS(6PdPz7BE8tmeI139K*wqu0FL`jI-;M3=ObRq$auNx)t)S`ht$m_w| zilf?cylJvHH#DK+j`TsoW=)ofT#lK&h{%MRUFF&0-2jyQo$DgvG2^1Q)%vH$L&h%j z)%*`?cmkVpbg8XB8uZ`VwrNMeNZhpEmhgWUrWs}lKrZ2oB16u+q09i!C!h^_*xvBw z8#8~KeYdBkhZ<j_lvZW#c9|bOLG`JlZ2`3iuj(lQhe!hl^2o!Ei#TzQ!zF~3+n%Rd z-~x3oA3kd6SAqPS?Y1e_cgp5}|MRsCbvwT=KB^2W-SuNQjBX6h#w!ZoD;Evfxt3u| z`BJWfx>HR0iQVM<HsD+%l*@DdkU(?Aq|K{kvMxYe%u^N>T#-k{rIR`KWjTX;_D;Oc zHDn1TAt~i)LvJ=pRaJ~ZAqN1LveuEo;GR0EL}f1(tbe_jzG(XIf@^R57D0oW!jT(k zw588?2mgmE6UxADsvJRjk6b)0b1Fj><W&$)In7}DwBq<=$}w&2ebf4+_bVJ`Wx@_c zwvJ8O?N%!Y@BJp#tiZL=l$)W=x}yNT9$-%?eY*@O_E(<y&<C$F<NZU5ZhayS>97Em z*Ifdgq1&@>xYQa3=s5>Wsvw+5SJ7o@d6a9{1wJy)_u=10(d@tH7$6K3eq|h5K%^|3 zI{wO0F#T&>wM9?5iJ1`GaQ4T4DF2Zqf?rlANpA>pvkWDqn!`bh62B#<QpSGegJi;^ z*Tw3fMA6n`4d9>pT09Bs8A5h^OLet{q(K~nS#k0mbjE#&=0WzgAjK^?q|>4Z-#=fW z2KNti!Y#9vqhv97kf=-TL>Ar}ou+fk-Ub_pOXtb5uFd7>%*@Try=76Yf9ZDIl2O5s z4-mudqj?^sX6h;4Nt_zJJ=g{Wi2?!uR)zeF#dO`_jn0PB_S!oCp)SJRX1zI6s1Qq0 z#ce*Z1lgJXoO=n@F29?pHj84aX^Zm-Ip;`QB2nc6oWhyo4Oj3qvhkd36A7s_vq~YK z*q0qQP2&0UAAi?Fkln__5+r~H)2JVCCJI~tT{sX&tra9w!J9ZDupi;wDOtj;E~jJg zQ{+3x#(!w!$YjID-$^?=8k6xRfpS#r#BDYebtLh97$pdU3-qoUSApqe;lP`X$szV< zc~E?|DQWfMIOvSq2CG>HijMqOg+<SoNDtL=njiy6Gs<9qegdQ^Z?oLD7KTcF?0tlC zjy^<!WS~GCRx1^0V3KClT;=<fFXdBqD|c<a%N=@vu%HT4*BQF-lc+DCmy*Pa9^2hp zJZ|GzQYSwncGuI$icdF<d|ZN#+u!CFwHftM)aY#HnN^d}(d#FQT7{4UdeETK09X`g zkwAhAgCID3^4B6dbNLz;1o$6#J&PBMQ01K<?5pdXgw%mTiD~GVE*QhznIQ_A|0REr z2nJPdVo)?mm-2N8aBtHvU_oXUKRm};{)c0(XO)pU-x3+@qrR?IF4uh~43BDwQ*1RC zu%7wfitoSbCo|Xzf_sePHDZN@5Av<QhIEUR7=vJZC#5P;j<Xe!6mBy}L9A{}BEDiJ z50&>eoD7bNBP^W(_8yjbKeQZEGpm}Q8;+sp1G`7HQyUg4B!UU=plk3OmyydL7!z>P z!~I<nV^5h?vw#5v7!h}bNdgAaSw0`y=tSZ_Bz$c(1`dl7t1xLX)1&}}oSG{$IVWVl zRjMgyNaUAK3fQfs*UOu=N;GRtQxzX#u3^)(>=&a}9CkP7*H=`0D>W^hqXq#0O1}$R zYKE5ElVPQhAN4N?i?nJ=h}{8sOAdbEST+yoGLST&$KYF(Tu|=@+;jY6n5K^6J3$PK z+Ia{4mw4za_GkbgM)%1l_K1-;C1hL5g1sl<UzeL4r`wlLEEtF04|LJSKs`T+N0G_` zWy8qvgX){~%Y2&~!7x!g<*~UV{QVhyAB(?J*S|p^>1IPXZ+OD`4LSf0virzbx{Iw1 zWd6m5tEq~^VpJ_iEv3@O5OL3e@pY7hjbG1}t<AnQM0%I%<pJW@`*<pUh`l8D@=)&T zpRQoeJ7^>b4TxEiXSa2xhwHt*M;!=G-D6KmKDmqwp&$5y|FAk6EO4HY`U1>I?k@vG zO9tA?06wf<zl8#ESw=*tV_0D1aqY&=Y($FhW_!0w02qapnQ8?z?+4qDpTn=rV>`IX zThBiqHlBUh`1r%0iRfS=X=xzlHo}T@d&1P1#d>|x3t0+U{a5j(o!_17yVV>9$Uy=% zXy(&FM==Y6nS$ssY~c1gKf1l|HBxNg7REY%Glns_h2R<gGxwyUtdcyx2ZtSy)B4{z z)52};V)ssy;)6cY)diz;tTL}G6wyF9J!oM-bhR=^ZC%?qvu_hfmHi&^<DNvVEOFsh z{rg62+T_`tUH%&Ql@A&kUXg^2F*6L0P$QD=7x{E|1Y9)a`(PcU&{}|Axp4D3CMA+~ zYBDG8i%XknDXw%|`{y^@G*bS%>{M6*HIi;MsUPHlp1?K7Ps$i{-x1SnW20kg#;n>S z0sC!L`>0!CP5Gyh<6z%u4RtYLmQvpk@YAZZZ{2T$vVC#}9cK91*V@^7JP0j#=h}jq zE5H18JPZ6R#i4$NN8sJjFyr_*7lE(Mne=x(HN*ktx#aP6_ea!98Iw35%-F4`bk!Kx zZD6iLwlyJnwl}|?MjC@Zy&(Cv!Tz{Y`k!m)6+1>j;86e`v$e~fj%w=PUE_)zSHn2y z4>sjw_kIx=h+zYp1VFCwh4+hnIm~^!VOvQDh1WKP1OJ^qznSUl1OR+}xO1Iv4~#!< zz-Zt}fB`^2G&-w~6={wm#4$xmWftFZo*)_D|DOdQ0RItu+pxZXP4|mi@?ln4IpV7G z$doDLbZi07ZsM4RHWIiU6N6@h3&vRg>i!ZV9AveD3EqCq00SrD_&k{BO>yjV!p+SB ziwiR&*W=DF!|T~$k!S$v=wAS7X}6xA-Syf19*qKKrNSes(_YVkkxG&;Jhpm1gr9z| zHLdIJSM(XdvYYC}LPgoJajW0VWq3lu*i1bsJ3bEhT`C9$=VJk2gwa{w$qX78zi$D> z(KfvHEz`O}Ur10Yv`o<B8gqHQV`vjX%t8(W(Xo0Ns?~qjBXfu~oaNb%bZ&c#O<z1L z>0HK{>0^g2^a7yP`ESg%)9v8Vv8f8>O@$X+f$*~ad)oie#UN(CC_QLwu*i}Pj1C;W zaZtx#_|P5#;?qfeE#)NY(rB}r`iXaMh<S-Fi(Pjm^vat%w=0Z}QGZSZ-yvqZyy)hO zg`kRjGc^)V1eC$yTk?1PK~k3LlKrIVH*aq6sUx>ZmcRK*oNBuZS{8QPTS0%N=4||4 zanXWVxvDw7fdG#>DEWF89xx9OX1?gLNLOeKnD%z&{*WQGE<qJ<lXRjS6QM#c^wsh1 zoZ<7|2diH!W3QzIOn5nZeK?V45L^t6SFCAKFTERL<Bk=4;u)YB>`9?#gU$E@f$JYl z81}1s5?|ly25(NCjGPrLQJ;9}Jv-B?y(hg;C=<r?EC3Av3OBd@<1(l}SbB(AypNe& zRyQ-9ip!d5$l7(%J^o&gl!1>B@U=B)l5zB;H%to<R;)1ZS1FZ7L-E>~c2Q|Y1aC2> z=I!mjytF$M|JC8r0)K<fRKCE!gWJ;xcD?@wIxY4MVNuS>!;#U1QzR6!<QlkPVIV%R zb$Dhf9{3!64^sxj2iFiH9AUO1#*1izdi6>p2N35Ef=lyX0KYsW(Pg=y&{P!B<fE}| zi|cnQzxLN-06O^JO}m$p?oJLC$8BrQj#zw>jztQI)4%KY*hi-AwsqyiP}61q6(B4q zUoENh3BU<qU-`H&x`A5#!2Y(w(mE2D#h^$yUA4XBe1m<Ua!S9r>-^pQe3>=$aKeU7 zRk{WAg}(8P<%`4gHN@lP+M$O4KKPvTVXCZzMl>M9-5r@T#vr+LatT(9#*>qsn2O<l z4kauU<lE{KD}Qv`&%3-69tadSrF!IjiJ`$XM8FFBVG{`G{_25Yq4K^BrNyfg^0+v& zwYL0dj4BCr`>_2-dgKx?qhKWAGp68T?j|waZW_l(C!OcYX(D#|YjQm;RT&i-;9EmI zY$HBv{U$-DhovaT#4LwXxA-ijC$33_V_4MgW0AONZ$tZ(;`7XvD1_rp=6q>%O7n;# z#ASU4?6+xT$X0mQ$nQBq)bA?tV?UlYB<MlfSKa8gD4JqM6gu}`?2&{YRjMEWy3=&Z z|0efYnvWhR*)gBAbsBwc_o&q_DP*Gi$?@N_R%tgV*I`am28BNw8>RvYmb$Mvk@dz> z6w|s4atf?A9sJqGl>+O8Os}Rpz82>j%8PvjxBd9aJ#)SiaAv}tm0R~Zw6G$$bwOc( z9t!}CwIgJ%)--GjI=GqMo*1oS6u7vpa(s@AY!X>TGkTz}vfPzK&kR<Z&WD|9Gin6y zJkz~6&;j2qR<#_&LIzu*JnQHhM_3lp>CDQWo3{W(*(hD-iu_Ex&9-&yuDjGgF7C~) z=fR_DuAU~b&oeH8_mb1;2Jg<`DGzWxZ+IM*7{2lNPUJiG%Fu%Ha3&p|{+3=$;+c}X z?K{&vi&0WG;LmCmtyD%XjCFb-L>R~m%X-1pvij3YqF;2ggW;91QyQK{U`T-tFPG4N zUQ5BVa}!c0e}{Ja+N&21u)OSxIFt)51*Q)H%fahtYk{U9mb#e)HAeaj72VG^z?zpM zbRY--jhsw|T-Qh!Q9K~n$e#pv#FbM3tYLb!PU%+*)))$Nh>)45fN;Zk{$qIoVo5Ai zOyo#_LK}^r&JT!eoGMFte=L=j?=<zceh@X~K%re7udFx;d7C`>Q{g?-yaGenQj|)j zF#zV|{imm=+|oC+iaEPpln>}pPh*ibU4R`jzytdCCo`OzW|SCdw6&$75&hhB&aMj6 z6fbAFf;5m40}Y?G2m*`(_3P6^Q?0R}BPZ0kTsl-ma?@`20V6`x+fR6aXJ`!u2*Y-L z+v3{MHD5Ys=mXM%nL`t%YCjl>rHuRhvSh_M{msi+zk3@Z%^F<w1G6HFbt)$j_;IRq z#G=6FrutQqn-P6+>0Vln<jrUq&hVcu-ybVop-(@5{*;mfU*p&-|2h``;X1P8#+4Gq z>cN-73>6ydKb<=8sQn|riDoWV{POCum@nI*gOeuq#&))p>>~B(7HvJ;yif`H-daZ! z2MmPJwXA00jf>hrfZ%I~UR@v>ARGk#h4JH_C+}-ivD(&t=y~h_d)tjGzG`Ub)9NbS zO$mQd_Wqn{S0FMNX_BT?EMk?c2?zfCb++VT;qv!B`UbL$udkAFD=uEMjChl@kFAeB z<Ctoz>}j|40DypWW{r&k>1XqxL=b@73$@^J3XlrVutB$dx51!@l`+paWLT0?%+%Z; zL8cL|DbKc?sb)V3?Y-;|Y^QzbU3tlRH+n_$FrM&UM&YTGljT)>@V(?QV!az5v^HDt z?BxMP3uF|iW;a`(#cbM{sdPa(-=BGe`*e<eF`3ot09*S<uQDy4Z~#MM^gvtNXQFJ! z59Ds7gG$;!nl{cA2Mjg-f7HXzn-MQpx8vn$fjk(54h#cG17ujIov)P2xY+mbQO!*6 z5BZhP3apG6Vbld)C#Ula)9fn&Yro<r<U{*O&lzy1juG2S1k3(4m8Ds{01OxqIBqbA z`JwTA_`Wr|EJm=Gp4_{cN!WRDa=z>1ASK?z!qm<E@T(;+5x}m#wcl8=$`v{O3wl=Q zBoIGX{>m_=Td>q_s{8o}7UVqxHVtff(Y<m<2mt(8D17s+fypx6uVJ$#zVqILKD*Ou zMW$YpW3FO<pxFiG^IcqA^qVRcBGkR?{JLytc57~8G`za=(r{~mHemIm3F`7k*X%1m zk39h9_F{pLEhQp4dUqt1?3bWTLznMTf9J_18aT`@8Q0V9OG^GBCT>r5Yus|ep%O<g zMM@(%fX>V4qhmx)A0+KF0%YtqY%pjqZ4c6-oYG1D70)GjjS@!Iq^AJTfdC8)khB6t zCi@)j%g}$tRID}w+&S&GXSxQ_0$-*FnC(~#;@0Olx0TA=gKXys!b3YTdxGySCEb?r zeNF1)J<$mN!t1&tfJQkh4yo)hWL#t8H(=EP`u#|(IVXf#v<-%xu5+!3Z_}bvO9;7U z;d1rz(WK<pK@dItP@dhL?GisbqAIX@Hv(K#bCWi^%p;?~3<E)Vu%tyoT84oP<b-fu zScUowAgtmaZ-4qK2olZ%;W2Z}8s0x{dAKZvhFlLTw+{>~Xr+6s4J)T@351hxM;<aW z7|Ju(>N|4I!HezHImw>q3O8SMSG#4F=CgT6|HGSO$OVMu5`1zRt$c=ON^bjia)}B_ z;JR1?eV-LsHKpQz0x2qcPB9Y(7ZN6`1>0*2pXpaSL_u=~rV+PcoJ}iY9XpP;C1mGw z9@*4azTrQP?$qGu)o<mD1rBVKicrCxca6{Mt(K+^I1vg812K$7NP|4sjHQ6A@%Bn) zTzGW1%X!-?Ui;a?W{uD19`57UyCa33M%Y;c6Kc&&N$L79JdjpX=z|6`N_InkXGi(w z=FNnfl*c_}<m3@EtN!uv@j|xOQOpyL1zvBmN#2^E7QMZPlo3sD9IjjG9k;hTT8lp$ zuw1Wf<G46g1PzN}7Or*^&p-w$Kv+6T1iw?aNGHREq{N{SqAFa@*}h!2$Jy@i=OR_d z(ZG9J$O(BF1O~vq;(<lJ!`o%d|Cn}e@^H2B;Y6?Yd3@q49!gZ<0e>@x5z+%0VD~)6 zWxL@q%T8^1`}`48m)=yU{007P=0Hmkn%G~A61>gYE}|yShIZ=x*T|fAl1mpH!x3;o z`a~FX?0)-f!kRB#sR#&==E0?N5KyYteCxCKq0?qSz<)&H>2?gs=+PVgz8x_&s;=ws z4uwyLo}I3ZT;1{;0D*YC#=7UI3qI^KO}ld->pQxAf~PMyC-|u+PF|=cATPZME_|-M zE|e30Vv@n#N$a|CULY?PQ`ZfvvB4}thGpNH>`U+dLV8ZZ*Q%Y2wRjWI!m=XjU`!AY z?2R31W>bA|;W0{ng1X(!_IPdy8%gomj+EfP25+0h_Ws+6(P|a0SHdrS<OP|&3;g(? zkWP$|e0CXSy(u=w_x8QZqk#PzG{B!{%92d&b+Aj5HWPWx?x@RB9lP)k9QuPy?}DHr zQ-c}KG<TZWjkq|3%5i{VEbj^)b+4mNmhNPOGwMtg+5B3)*`(Lqs0oz=Uk;ibPnfI% z046Hu0}N_7abAK*$QfWva2%+@^WMRno!&r;QM``}cH-8T`r~<jx)@Z}RNbXKM-rt2 z5Xl3Bh2-3jf4UQtJ<IbK8~o1`3I^l@?(QOms$Cn$U+qz~^P8k6lTAfv1(!`pgKUyC z;qD+UBta)#GEPs3r=K;x240fqQ&0f>nIqWvA?Uv5Rh#EqxQ=w0?|3Lj5w)U`URUh} z*{m728VXPoSk2_XeJ`q1H{|Fbc_@$Ad=oRiOs3vC`~hb}wOR`jN-PY^f!oGrnhyVw z$ir`eeVZdOc++~RTXuLwH<sRITI|nO>h7N$GAuL*<mYqZ4wQ}l>c@eG_6Dd3{lYS} z;lY~6S_ak9vi!yZR0dl72ZMcQQzRZq@$RJlc>K!S(aBAOB1XN6gLwRJMmR4P;5zx% zqJ@$|wqGy$eZ^s*@PEh4LYD|sjsFAU@Oe0GAgK;wR`;PDmVV}LJPlPajHVh2iI(Hy zoXKnep*pv4>O@+Mr|NWZmb?xVaxQh3^1UU+IQoi9i`)<|Zm~_%>lzEOKDi3}dC9~1 z%<AQ4s{w>H#~jO;+Jx~pWBm@TQe#tA?&ST*O(4Ls{5iNy)D)y=uY-LI1ERf4)uqi- z_y%qGwwi4IIu`2C_N>_SjO1b&2@}9S(WU9gS4kN3eIZ!pu3`ZmwiXZOp?s5AFYde$ zbA(J7R#D$U^xxqgF9EArpTTF4z0U%L+Rd+ZQk$zN4k#7{ev7x1iO-WFxoVO_vrHeF z-zr3nd;QI+5F)5V#Y7Xeq?#Bx>5_V(aDIZU5~Em#tTR&&pivl2G;LMg&H*`&{vjhi znN1AfhQRgP%W6T08<J(rB*?#LnM2S>u-D;R)8_3LSRiV8T{2s8UR&io6TJ*9Y!&iv zc2Pc&fl%7;f)ZpaFRx__2B~Njq(d9DktQq3(y-cJ;GbE1QH0@NpbI)J8$WYIdZdlN zwR!#9+mF1(8s{XlW$$+j<fB)PjvB_ida-wn))U2txXpPDW&!hb8gtC;rK^?q*R{U& zFR@pfJsdC<drW$(0OUpZjQs9@$kJ>#aMGz3$n-{?wSvm&-_Sd7<RmmSn9p3P>=}Ku zYYqA1At?nUn%uem!z`Hb(zw91#kfou7r*llPkE${>wNM45Ye*8?@qg*(&l!l#6buL zUJoW7W&wn!Cw-OV8En#I!k;Nm-7k5eo@lN1g2P_(-5NTE3;+ZJG5`&L5v$>NQRaN4 z1`d;LFK)Fa)85!sFE{AK6*gToP@8_Reg<@GR1;n(QLHEP^@|XP^C2<>pd^aTi=Jof zpE_SaRm~L-_jV}8ssT}9t5Um#gsC4^7h*e1(~+Db1gzma#e=m`#qWr|m2&(rScM_h z-&4ZCfFJDz;;DNWfEHWtRuMhHQOg1yr=3?zGtSMMEkw-Xa(6C&5Us8sK4lz8LovhN zui!80lHZ1V!f<}#0*rxZ;9ubkFiw=aiF{lMT|Q6|gBXDJY`|g=lDr1=h+eR6XW_g{ z{btg<5Fj=k-Ai2myekP77zMQ5HMT;=WK3WRKz8UUkGFq|A+pj(4-{U`ShD`xqce!L zrk^j7QkJ}_Y-g<bHOFRJ3GS@cv_6wWC1S3@D56YG(zVTW@Egn>nov+quSf}^J6BZ; zR-ypV5vf`ynE;hP79hV&r$lPb8NFJnY(5xvtVX5*-?sQ4Y*k$O5ICn6*hgvX%p-Kn zIOl`qh4)7wVbEgbxI$237yuxxCW*W<$;Cwjtb#1Vc(?yUj{?D>q@%vC!f!2hJ}2|_ z@Inwa-x`D~6mV4E3iFHeb*RNLA~&YqZ`v9S@<fs|KtMpuO*nrKxe*gzDbXYeYjrsq zewOY#n;BmfU;=zC&}BL4i`;(k!;F`G?ItlG4_Q9rkaKtg0jeenywkPDv7!$%AN>qc zHWbTesx8!*n5w|r45(TZV2?Bqtdtv>a~}9%f+7%me<Dn?82r#ETq6Ftwh%LCp3TG} z?{n0Dypf<6fIN_?0{%!saunqRBuY;icdscUl^6#81@nxIriZzG0-%3qVS5JL21W3L zNASYKrgR>Gk=>{0pjXtpzfyvRd^za{+B{qF`Xbk{HFZo6d(qG+)@yF)0H8=*a0Z7B zk!Cp01$FLp>g?2WbAk+X`IoG4R`$xi;c?~y0E=}0!a<Nyr9?JmKCr%4R3W`$pB9D% z5tdIuokpc@41U3k)2u4Wt0Q%tGS03Yq4FCMTX6Nd!{tLz35ja`Z{dnF7yfuA)v3RU zq_X<x09-KnmHy6rbqUHPP74Oq#{_<H=rraXRpH1VWGndidJF@x<RJn1N~$Og!vKu> zN|bD3f^A+u^N%C|0q;+a4n`7Ut=e@Q4C&F(<f!~XPGl<6&j=8}t%qVexmM>cnJ3Oc zNsRK@Q-7DpQV;^t#;;!#=mh-HHm4^RtteesX*6bnScj7+(tE%L2~|kKG*(fYr&AuS zP1?@7UiF)P#rvYw$FMwF7*S9Az~^I8KXb2jQ^i>Karo4$;M1>+_6`zMidW|ObSi+K z6$Qp}!CT_C6`F!hN@e-|poHfzI=s7aOHbFBJF2mHsP5;dFa^V^MAr;8A&QuOt%@h@ zU(Nf)`!zXC5DW+?vSGILY&@r>I1)}-oS@L8j8XD__pdP%q2@D1Nu8pTTDAI`p>Rlx zKEK$~(0Cds7ouPk*RD0q9$AJ$Ogf;^iQs>t^TVgZDJW$lhJl!~BF5xe|9s%m-HXUD z6?PuESfV?Z-TMrFwmx2UJ(O2rSGVRB*pXCB{%$N+CL6u2qfb!CXIN^C8>IY6^vgO0 zfC~eK^HXZ9)SheQEtfV|<~XrsjLN_w0H82K8~;4x6yT7}lm?HYDiC~{@<rXgx=K~k z3J}&Uc%eIe88qC&K?paegV9FDtpg_u*oYvdHW^tF<T9AJOPBXy^cbw$&&)x@>T3w2 zGGldFnF1rlq;|R+`1Q)ONx$jP>lKvV9mU~Jnla{4G!Lr)P&5g5Y6+RtEZ0>;&VDc` z-o8V-V8w^vhV3ZyUAY=`xenwcOyWCqd^-E>KtjrF)|AorfiZQ|%NyT?NeROOhyFi8 zbU<~J55{w+NHOxP$Wv}MJ)WJG&!BVfEBllGphU24;r%pQW}`Uasr0c%UmTefeO=e& zR5n4?)Bv%-uZ6&I)y~SyruEMl4B?=jDEA|*WKUdBGEX8;lgVdITA&)BMBgXKEP<*2 zkE5h0kTJZVJTb~4I;xzN588dvTkgV@N|jPPBtm<*`#~A{qFzi;s$IJ|tdJ16wz)ZV z?lpoZD`lO`J51hF%AeHX(7W&=@NzQ%Y4L8I<9swA#3f(bkAygRq`_|CuI&~HR(z)q zspvm#z6U+W21~w_u<A_#yvE_bN{zMJ&XLJ3v{XkFiwem=P}uF|%%&bUSBkd5f(YMh zRcrfIG+_0px-h5Rz>c{X>IL|+(y&pN?==~Kg_wg720oSD!dhcv!eUV2xeUsUpjl16 zi95uMQ>TMgP@7<Y=^5FShoVy94jF6=7@c3|j4rhr4L<Csfvl4zV?Rj}Qjk>?k#Ub= zsGt))vxZXt>GWVPOz(fjYIdHVo#)T*(*h=S^RkVk#UuW47R-Jr)3OWXLh=5Y48+sS z2NA<g;>W1_;>E%tz#dUMi=A&xroStci;7JvDPHv^1D8eLc7%+CFfC(Y0AH_<mi12L zh^g}|ce<#q?8J3X&ibLIMt6sbAc6E^Z=28*+3>QI+^Ze*(QLjjDw4Cq06<Bpe=jJJ z));gU4f;O>vXm{)P_rMWtgmGv2Vp-ZMi_|0>UDhiP${L3HT*l-??`)Y9ZL4b;$6Qd zS9ZO**8}b=cNx2)zL%!v?jV=~r~_&u#4wcqYQD_FRBKpX2?1R;j!qi3I!!L*kXNIZ z|6-kxz(PZcLxd64XGw5ybg(#WM}t*pqf>O6*xXv~=-|+H_w;0vOfLRl+NGn8cZqV% zl@v`E2z0~*K-n+0LvPnUH!r7YS&s}^d--jjnY|p4E!t43c&3fLA8u7q$L7<KQ2^}+ z#@PcjrHU1+Ldp-{lS%SNhpkB`;<nC)1mNlg)-)xU#GR2(pB#}BCT-E2*euyxSh*p$ zldea{qN)D-{j<pB05f-&yThBE-ED%9Hz^^(zDNSy#>A1`HFL3;vnj@J=1}}zy21?! zyDViHd@|iEN;wsU9zFmadRWRkUA_rEw6JgHFF+^(bfo*UllzLvjB$R_%UuGmm+=MY z(x_)nDU<HnTIAtyU3Ma$?Dp_(8ZHf_4LY0OS$m_Y+m`C>UJ!coH$^Jo%I;US43sYH z6-(s=OC&B^>Z=RD_)o&*)T}gniiyNN9%J~ndy_&v3uj$oN>(6g@Wap65#-9Hm=Tb^ zr><u?JM?Dk&0WECmCODc;gto%ZFOQexsQP4_4#;OlFj|6?8A#OYJ6$J39N!OYl;{6 zP7ah<wJPX@BuaKnNm`mobU^kL5wf}sbO4aBuvjx$h0PgcEo({stFcrTA7*a)<6Q>6 z8rhq(O}??Bsl$x+S;w1~*>Xc^@dTvqw|1^8-!JAm?d1djo#VrwkC#p}EB-Wm#8UEL zZQXbcK?8*YLf*7B+_FitS1~5#ukP{@$ZLui{!;vA>#l2!$u6R&q+Dg<V2UzC&9_eO znEfoSN{Q-MmwKoPeb`vev7wYggzRQFO991<lyKnE0{)kM*%O!Y)7g#77fX(?fW+<T z$(}X8)D4@}g=7$lE*bQ_;cMM0#NL@g4)cRKtmP{vnIU_X_lRfVoR&Qmg9FHca)!?E z6ASxKM)7oRd5dIH6$Ks7%2>4mVn0mctCx}Lk<%ko?5<{re`6{DeBkc|*YmFyb_UkC za=-|nm6LWB`V1wYihWCI$N{UCV|0C5AV*%YLnVfVyDp!Dd|S)mf6P=ts%!4?mC%G) zmA6?>aZ%$qX>Xue@M#6g%#NwOVL5oazhb-Q9+=sb3c(?by+mB!UUq(3vn@H9OBqoM z)?uf~rJ;!(NaEoG)|SbrTBc)I4Ho@{=uYX3FzU3z2`wQTOz)MH%ZxszrF0}RSVe_l zVOn95jR;7YFqdd1rl>d`8hTZ|suXyE-@V>*eKakzs!!X|WK`2!S0D+f5F6y7Mq+~? zFv6bzNL7Qb7H+j4csO~}J)QHEQKg=db(qo4eyA?LQsuXjBQQ_#hgCXP5qqq8uyg%V z7xY1hPleN_iTrKb(|p&`jctdDseyBsyZhbLY^IB&tYeYL`nwL1`S!EbqfWblCAq_~ zrI^^|CapSnf5FhsjaS0frqZ+rOA!_?zU&LS6e2AgCUDpcPkBB%gT7k=sfuG?k(&y! z3<jDt1h=eVj)_dslxx~4eG`)y0QgMV8Q|PV@r_(6ceE=Yps=CM`{8e2?8W5y#{L^@ zkpA=6!MsA8>ayPpNo@KP4QO&xhd9O(D+i~uir}x9MwB$&`de1DSc}kplY>VDoTe*9 z8{VJk1+d4aP>b(aBtd{o+iR<9y?17h1D*1kx*b!;_d5&Yml2LKzEl+2IL!V-b(;s* zsP@3XD*|;x!K<+tqt01pAecM9@4(uPGLDo`u5?Sk$^IJ_FOM$eApbC-c9CkMEC@c8 zIN+Zr$kGY}TEbcqImonF`)$Vk43iD~Nl&&k3XBNm7Q8bvdi~F5lL`u1R$4nAdY2A6 zo^7Cl3Fg-Z-Z20`*wk(iNbP058&Qd3Mw-EpXFuM!az90=MKZE2V~@F~S~fTat9rKj zCi}?n_k4qciPIktnA4vy=e1P()8?n=FB`FoEe@)EeT8-B=9)S$MSCy7u*6r1WbXth z2yz!up^t~=Gv`^zX5qQJ?H~3yIVEd;9l&_IHNGKXvDofLRfr0N4g;cXifvLAivh+L z0DLt!PPR|B0e#PMXHEH<s5}JQfTY67xHCTD670=5KG?2mcnX*;i;KLR{#%vpdEC`j zkbHY1pG%V)+32H(_Kexw#XsGx4}Ge%=B}{gD%4P7!xShT=1DSlpv<wEdtI?6I!5=Q zNw0HGblTbc69kx&Xd{tLBNcMJ({uRda}49Y@TaS46A7eaBdS8pYOKK#NX&_uW=vvF zN|T!<(dEmtNUKVf;~8Ahg_shq%pmGeA&YSndRZ`O$(rmiXS~t`l*583?WU=UR--%9 zY2X5?@Wb)?dl}!5^MfhKia<<c@R&qA-P#sIVz|kO6SBj!*SFN2&+M&)gksETEFKl@ zVhfb#u{~Z&iafho0R2Fp5P*R$V!|vI!^SEzyP)HkV{bkpVC*pWTHGz$cFcJW6%sgI z?ak{AVz#rkkjSK#T12hf-R@4BV~ksH0|1yk|NAch>8(((P2<DkMYc<C&1_)mil7s% z#R~u(=KBtoX`XaiT2<z*z_$`&_|JXwuJ4-M*DCqH0G<V5`mVH8Wu8RSS)7g+(dja2 z`c9|jnFgr>F2xJbOKWXn0s-VwRTl`tLa8vxEz^)vaV1M385fKTE~Qc$BSbNBE!wKN zt(s?Gd^8Qe9gLJxH+Q#gUEhHK{MA4G`*0qux9Tg+AVXGEoK?~ylf24Rp(e2n)3wdO zu>;p?`fj7%^;><r)*;kKh6y18Kr7CRa5z2QdwRHk|6uTZy1)=_becbXZFjX9)IHy> zwM@5Rm=44ygiuMYr4VJ7CzIuTd^nvwIvP*Hr0F}CH+t)xrsMb!YQ^$03!@~P$LTao zlA^q{(F;8Lg+NPlA%&7sD*ymB2_ZPiOD+T#s-msKH20O#00=2X1-2@MAS4Dc2=Q&& z@Z7p*3n?ED#`~jF$1>l0b?1kdwoaqu=fC_c&Wi2TR<9oTHXTk=KpawG9Zi?|&KV2b z@N11m+iR{;uV+{e!UjMPXsDGCMUpOt<Krh!4i6t5ot(^<0KnB|@b>QcwRWTFyN=^g zr$MNXO$reP5NXAwR7#dSkMn4J8ZMttW_u@-d6c$%_d>tB+NwLY1tF56RJ=^{beZMz zI6I9J2w=Y%Sca*zf)Glj85jJ8(25!)aP4WFr3I_n(VAnO%$F5Dp|q~HS85OgW1E^a z*A5)ZBzT@=kB-KZFxu!efBO3F<;~T*`-8vz_;X6g)pPy2=hPhQ?*37NDDoVlf!<ze z|73T=udg`GzUkDlX+en38crnz%kt%9K6?7>=<wU4;lX4cr3E#}TC4Hyl?(lLz3Dlw z?HG2AP#+s6!UO=Uwbp_It(E4Il_HPgcs2>6!^!MmG>fyM;X7L^?bSxjqqMTyDy{^} z)4YhXB22Sonl*g4UGorxLTZeGl&Z=O(OOHTF~X~j;K|AOblI}0QTe_C*U3wU5v-^m zgJ6f6HOF$O0RW7%;?dFga5^UlzW?gZAK$oan)Gje^`BonI@svc*V_%>vK-62y>}p_ zvV5-ufB>y~n^(`jc?$ppA<$YWAvlY(#mQ`ZcsLw98k`)C=ZhqR5Hx-7T(`B+ZuA<p zz_D!GF)fc&^9U0N5d=U<0TkC-X)TnLl4rb#qa+zEqUV$O;bfkbtm!!$o#slT=Gqit zq@<_>6eSmFQO0=@WqHo{<wnh>rmRe&5@;=pl2<<q7eWKw@SS$*?+qtgy{3>#D{Y$w zMhIv{O~bb=-=PK}CF94l<#--V<3tGg>iPc9ZoaYB?S1mq*MI-(&!ti~FKt!E7Ae*3 z$A`9MIuy-Hjwz@FRD!2r5uYaEWO{ls7>}QgXGhb;Jjs;Oo^AFTwQF1b)n?H2UDu+P zX&8ou3>y&>VNy{gS}>(GI79EGmQu-53dUHzOp9?CA5LaR(?!8}({uandbjSo79|*I zrG=IN0Ht)nc~<hQU`bwT0NR0vAd=NG3;<FvV@xUyA*d>81Yx)CFOux}WFC07lv>I& zX%@?hI4i}eESad1DC(~LC$C?A=h`kJ=C5ym^_Rc+$Bglves{ayS*E#5&C@U*E}~}5 zO^fn)u>?-wR@?mH({KKH^x$L>O%`#OW(5-%LC?0XY_6;|>#e}^ZHpSjAh<%Rs)P!l zl@djjKy>Dh(F&-u52TdhN^&ljX)#&G&!@A&G~`0mJ!iF9>ja)>nFhvM1F2Mn4oIa+ zE=w*dc9<aOTU2SOB$QH0tuaJG$S5x`L`<HQHd<?!no239G(m_u78kPMys{NHsM86& zjc%hG_)N%eo(=xu7ymF?L<HmQmDZJW{aKVmSspmnWEpcI2}bic%?p<1%&}i+6kn*y z{-7!SjuP(wLnQoi@c(Prmk-02!o~03{a?=h@YTO}1b;7JduezAFOi$?4F<nsiuxb* WLQ18{LQ=B;0000<MNUMnLSTYUQ3c)r literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/pinch.png b/release/datafiles/brushicons/pinch.png new file mode 100644 index 0000000000000000000000000000000000000000..b60bcd66a36c8814c1696c1fcf032e05064647b5 GIT binary patch literal 9880 zcmV;JCTH1+P)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NN=A`MplixmI>AOJ~3K~#9!?R|T&omX|=Z>_z*bIyH8S644fvSs;=Ap(M999jn@ zfX6@~aS0@ZGNH+|Jd!fZWRkuJZBm+HCN!C8>5v&Rr6ElVIL6op12#4o+t^gbw)~JS zOR_9u%ko3dE9vUqbG~n{)j!tS`}@wd4K8s9)5)<$_nf11zq7x!*Itj``mJT!vSkZ? z<l}{WD2m9Q?YBxZtcMGuh2z7MbM<IQz+2w?Z;#I}*oRnwsy7H#Kg3?B`msMTm|i}Z zp1J9oPk-Wff5Sfn08j!rgb=IVU@BIF5UWRb?&(kT|KvmO1`q+LDmZY6u{YpQ#a_Dp ziYsFbA#l~JKKh%NMF7mKBFq8RVB0O%s_M$sGsDFii^CL~{-BEXrA&0kx4+7vidB@9 z0y8t&)qPE|*T3V2t7FxpKupBU96|^jV^md163*DP=@c9aArKQ25wijiNl8YddSQO? z<jF-=fS6Pj3J?L1l<K+}jq1^`u18H%H!(}q{#ly38I9`U;%GFihl|6}a5Nm&^n&*8 zg*<4_{kNz}Q!mzwCx$1FjTYzY;ix}3`MQ7fJLN;+U;V*H04M+zs1S$#U?PNSeHGTO zT>jwRCjc;10c9fFmZ~?&p~oRiFPpq@^En@V-(>)zY6BBt=v6)9(17E&uDY_<uTqmH zCi|Pu*chQiL`*@0?tAjUQ@id?O`4jTSX>+qMXD;k`J&Ac!~}$1f7^{;2M_~`Xb2nv zhZvYC1dbtu?_PU(RaHa;0wF||)G!BT=G2I)hUF&@u30<F%m6VH0U`?3rb&wnqm%QC zC+8RW?DIB)NmYqJfT&86(WtJ6^=MevbyL?VGPCa-p=pwB+;DL;S{#jrqk2@=b%Pgc z?~112H{SWyfA<F;kd!3Vsi~WKp{a+X;jkW!4jw%A;XnF|Lr0GPunQ%T$9CPRno??1 zn$$GXj3kYk(I7R$-e9DXR;*fc-538{R5hhFn>K&u6My>2&wuSXRzx9?03r#@L||44 z93lXspqf;K?BhK;cJQ&870dqgBkxU38V>9K@YyRnw<bwNKp<w;002b9K~keCb|F<! z)khxMx#z*%lT!mgQ($8H<M+So@WErBy6T$|fI^7@VItKK?Q}A$Mgef-$lUhZZw?`d zNYkXLWs@n1B!MPXRn--<(;s=qB@qA<sS+p=F(ZLkxY~B}HADbNRi>vWl1OS2GZBF( zB|udoqAFr&`u)BMf)z@L-@EB+l`If5fno@D#zcu!SXBdyf|)~5g$6{`MpZ?X2ob>X z<8xcDyLvFu4<S%skSd6YR6zt%Wm|MZAwV^l<xHAVlbX6|nv~3Tt=1z`Qv)Wlts!Ot zm>EP&1SP18TSQVysZRB%sYk8p8V>8Iz+li*klj6jRFs2R1|-p@Ns^>#{G02#Zt64| z*2CdwG^|I%dNgWkvw=kRz3`1E6900Ml$s>cq~zC<rf%v{JsLHm;b>@2M)k06UOYSb zqC8GN{d9h@uH~nH{kk<@`l~;iS+Pu-Mw&V`i}h&OjE2MEXfzys`g32s_NF_2qzCv8 zh*ecZBsH4qrWvJrn3~0AG)&D%M5Jj%WOCWe_rHJ7?|$sl&v|R%U;h3_K+GH%q);N* z#sh#VF>#1huUGZ^lF~WnZ{9c=RIzveGu;c#%*;d%0jfy=0uckmfkl`o5Jxso1dwWo zy?XJ)g%@80(Ko$z^B?}j7rWPDB2s{|T~{JiJAWa>ibIb%1Y+hu#6+}b$F8c1A@G0v z(7US`+6$R)15{Osh>3|q2r+~hVijV=u|kLx0*E>Gjvk&1F~k^S<d6OKJ7%UPa}=Zk z6<<G?*lsFth#aa=^<wPB*bA{&4JNO@^4fmCVkTzd5Ml@)e%GbGYx^F)OOq&6HAzag zc`8Z74WoVTTUT8pl86XU5tWphCN*^$4(qw2$G^1o!AO9bNR^04m6%DCIWSl`gsVUI zxixE7EL%R2k~B@S)32%=z@i~=RaF<BcV>he3J{UNHclx}4DqIGu9%$Yowjj}sHT(@ zU{zI>AgpArA_R^x#K6&AC_@Cywq^0wYc5~5Y-0Jc2>>FZNr{w6nMs+5m`FH~Dx2wG z=14@g<pd~r&qLeio_u6xW?Ic$n?oU0rbHlE&;em)MIr^%-gSG#AnsMSUHgR?f_r*Z z$tKf`6f+AeiFqwm0aR7gR5pT`2)BIW>s%j+F@VgvL5T<o1rfkzzln*|Je6>RB&s4R zssK2|>Qf*4D29i!$?iN93<9%hzTFiu6OpQ_s3Z{)6;aht9eDg_UVUyAgMGqpgOotT zOiCbyn#5F9Bx%#6)TG)%jk>8v&C!LLr<YAsy$EJfsL4E^L30J<0i>#kh^CYzrIaK! zO-hn%QL4Oh)eMz9Am5SN0aR6m2>f?bN_CPX=5<9hHA#}BB&vx0K@TP#RU#G<=D>g| ziI`Ed1xV9KlP{N2YHD9mN+K#TgaET6o-mk;g$dHv(nu<ov#a<eQ)*I5qN<StgP=s_ zSmBW-+^HsMkC-{=l<GRArd(a@N_a{6wT&A$GG0m#Ke9jMv3k|aYkub3*SzxFndMVc z6a7K20%88-!if_nkDoYs|Bgp@KC<u8eNVrLYl^B0;Is{=eEo{Qta`n`EbhnP23u89 zV^&<HNvVdIMmE3tHZi?UNmQh1lKIp}pLphv{`_yAI&kF2T+k18ZdJ9QP+;M%nqd%0 z4OEDk&8;M+5H&T#fkRSB(Nx!eT~(o)HZPz4@_+yM)QYve{^aAkw_pCn>p%O|@4Vmz z0kP_*lvITgR4mGex+e&#oX;S!WeC~!3Ro$d*{&u4Ak>TVqlIG|&wJ&im!4R+a;7)v z6XDPP=BvjtI`O<AmRVspLgtki5O)j;B_f5zsss>-i30#;F`H%kZVR*Jm?0*LCyzeU zpP1<Pd%Y?u^xyo}Wg;p`{{3HG@k3%hC9-ftJ+K1I+*-T@b3&p-8Um>%AyQ_DitVz6 z^Qx+9;!y>NCDqH;Y}#?njlF&qtEi%)N=ZQU@elrbYSMrG+v^S=pI^ElRfP&c1PX0q zB!B}$R3QKpn@m!IQXmx(u#&23GOqx&ywL7PRb*~%{)Vr7HUy4Uu=@@`B9M>}0R8Z< zy?JqA_@A%1e$+G_3AqY;L<1#a5>Y^v0*Qb@N&*5TkVhh%)gP$xu9<G59yK?A{o2$h z2OdoH-K9VwPzWpMMFUEM3H;u#zvbxM{Aa#)Q%6FEKA00>wj2*|MF1EiOswW4RR}>< zEdjE8YJPs<d*8fXn_<<jh<IXh((oZgKC-GpLdwL#s!9|*^9s_dmM@$5(A(em%?BRI z(G|?a+m=CXeXzV#eO;s?LJU>&;(YYjiQBLJ^6aV^W&(7@iV2avCk{zeR02y9WhGHb zLPR1$iNMSdfHVXEF>;Dw(625yXH#qshKP_S(**K`S=2%d6(Wkg-oa-MY`gio6)TpT z@}9DObyh+VC^Kme9E6la9nXP4NmNNK%2Q@mfFY_Lxy2Zmx#K$WK_Y=r7Mp^YtKQ)D zZ(J47m?2oTYK3hy5yS#Vf`C{cZ3atBB$PbBG9U@eEC2}tR2ZZ}4j~Z?YxMBb?h?#U zRdSSRG)i~gcy+(uBTyAUu$WQ-6%d0|V8IGOnK?m8a;#4TR#GNP9zZjbih=<UX-d?! z?wVtum;p*Qz2-oN4<Eks`Y%r{n`GwxpijQyf@Bgv3{}Y{xrC~A!!968A2b7~WJ#Vt zNGaPEk3;Q*=eQamW`HEgXFl=qm%ri+4m>$MnZ<;>JDr!dEewT1l?~e@f-;ei#f(J4 zAP|F96%h4Y$&*1*m86p6X%AslBLPPbJn`TD(|<Yh>{DN{`AjDE(Asca5hhkvx98*` zs;ii3n-W+^4R>M@VNwaqq5wpTUb!q(#G+3TX(N155dk!8+O+Aw_Iu7e=d@L;SCB6U z4$}bSVY;nPiC7&lHMzll!)0eS3+;wLb6D>Hji$z)codx)Uz`QR$A%ICoVxLpWy`17 zFjrT3h?-d%S0Ghpf-0EHSrAny)NVeB=SRsfO0!7nA#=(Bw#g<x&v}Oe8WotHo(zFo zouRxtb{<4PObpu`UvNGgV*mM8h~zv++P|gjjsamMXXuK`MW`ChP<m!a${^QaQlf4s z0cP6|lSmec<Z~jfBAs>QCzgjbE|I2bEWgW1NSl_ZXav9^fIQm;6kw2AkwjIQ*`P;t zwNqP7SxNg`Tw-O*{Jy*5N#dzbn;w;{QN&K!y^lQICazgs2wmG_&e|lCQ%Q&jTH}^w zrtV3!`*7JMv^OH<Z?&VAL{BEX#PCMT&0ac-*|KE|KL=j%6Mek2GS`>lf__9Q{o0>B z|Ex_LUVhH$lN0^vsX-OP!oqN2ad_<b{Jtj-?AZO-9ry0~f4HC+!_RI$|F_?J*&DZ9 zBm$Af4ymf8t!8Cw5rcS|CP``<6|L*$mj8YKRoCCX>(Tu$&VoMr`yY7Ud)`4Da>Oq| zB%o*B$Z~4phC@h+IRy!cn!u8@iYcW~#Y=wif=gci8U<34|8eDwU--(+KPCY3$v^qS zcV2d>dVtgQleuzcNU>qZsS!z%YDtZ1l4Nx?cV=dtiK#aj#A<N#;K9#*;T!++E8qFQ zI`-k0-~QH@pMNfg*n*MNhJ2l%P)pcR-phcyRo!EVF@!+GA}NI4stspdbiw%-oVo7a z2lxK)e7-z3ZQ2xxm_snR2oh0H@sz=$ekB4iQBYE*09H|DE^*HoKv}Bel1B4K_OIOV zvR7R+eEVHH*Q}ZS#9v?4B>B<Do`{HoMg7dI1jlSC$7xjXS%$yK>Mw(_4p9Cu69o=c zs0PI0@RPewJ?B*-5(5A6`+x19UG|0-V27wAEd&q~JHTP?zj#`YL`sUoAR@LkwSO3a z*|`(MkvTM@#mR|&h|Gb`Jaz3S{>6KyCk8*-Fy_G319$^wj8V~98Cvk0h$wJ=xC}Gg z?`t9=W=YM&MBiQnW~lt@e|p)4FF*T-EQnfsx~m5T*du>Iu1t)q$VB$Xzn-(4k#hn~ zO+6a+`@I-r2%dm5;a9f&-1~p|jnB6r?c6(B^r=n9Xl$E^m>C?b!qnLy1~ZuKj~Yfq zVb^_k$6m04R0wRVX2NOfSAF1D-tgR8mUBmiYOcm<8@`%IC|8;}5HY*zu&EA+!2wjn zWNB)eUU}-y`*y?_iA|^+LSPQW%tY(g%>MJY{nB$wC}VPYue8X9OEJfgJob$<Nrn7P zAurvRB`HnKZn)t~m#e@9<2kR1(koJ@tX}b(m;A%=1!at|Y?XZ#*{>EU*>~HT%CWL~ zC`YdzhR7i>M^%me>FX~4;>r2NSOpFt*g18(n<)@XG4O`9v#&kx%&sqUgb?K5qT!8> za9L8U1W80ek(h#jjALPZjEs1BybWN_LpvXSU{?s->s40wAR>Z5Bv<PQN}^1xRaIU5 z%JX(V@$}L8llj<ZG|p|1QhUa{whWlmviV`t7#CG!4jf{LgU9y%;QB9J{n(zp6O;X3 zzY0|df!&(r1ehGkB_^`caIY8N^M=>8z`5BU0*MN|um!I+6Orb^pr=FzsJWFOk6U{8 zY~A|U&K;A}6VuD5ic+SOJXJB^CWFNte@Uk4{a$>>FI;#Ch*We|#p-qDI>qXVLLgOT zB7u^&#=s$K1>bka_n+AP;LOUIRcmHdAu3QbDFF%u5edWzYS>6N_lCpUk#NmCWySQt zx#Sq5<^-86BQ#|K3EP_jkQB_pnJ(20*L<bVi?NDp)~zn78VQSN3?YdyD^vvt3=!K3 z2aYnBVOSPfg&s(;1Q_DGRPuU*8wHfnaB_g5>JM)D#<e;+wtTV&^bKD(kkOXRj3fpY zDKS$@&J6=8X|W*?caHAi4FD~;hC5I3qe27`%~&Ih<_M1W-2UCsv8VeX&|shrMwmHe zhXV}hBT|0}uS(d#hls0B#-g*N3_FN<Js=NWJt|Wz&?5mFVzq7S)_QI~2aZ*A)hxJ# zDpWcpZTGZU9#k&pSg5ZkABrrePLNOL-r-J2)d2<&Gw<2C`@kdj$0~5(vY#0|%AX`A zDQ?i~Hsl)P_eca0ml%VUWJzGx%{rJ!AnN;^w`w@5w|?`=>8XCzk8lix-~cN~!~iWK zO-YFiVpBlMt)t@<vs}nR((#q}(TlD9Q?@dO-92&G`kfoOo|~TTcR)v{LRdv#*lHpf z6g9$_@isifgraN~K*S7@>^gJhuUl{{ICZ|B0z~ukC-1-c+7KB`W$k%uGcSOMOrmU> z3K1_$<+@w3T5hU2mnbqQ@5oMGk?W8}8!pyrP~GzNuh8fy2ajdVqd}n=^)p>nh;M+Z zRcU;^3?$!35A4`JOG*S5B&$5M7?K5tb_GV>59Tl&)}Q~>C)3HpuB{!7(?W&LhMmE7 zu$4$bs^x@J8-N2PzI9KZFQeK;@wHWIvjQQ+hwj;W-)*<9Tfc^w{I1=pX%~~=j^8bU zEe5y*<(dEIr3$Mm5a9Jk?XJm#29r><oaWYR|902*ht4|ZG`E_ic9u1(1@=o-g0g|n zB}f%FO37;}l36-h&XbEI1Gl~uUmXB&Q`a|L@mF`<e%Gcm*HebUizRWl+bL<d3F9_x zbF+r*pqw3A?!fP23HT@iUGjheh!1VMV`8{??#oV(F;Ish1M1o=^@HBch`drRX1B5} zwz8YH*r`>pvS3<t+wsq_jRU|(4jrFexqNbZ0z?3HOYog_XHu6ZYi*uHh9Q%xl_Om{ z$_ABvkpf|ehzcMO?QWc(A+CC1cI7gUdW+bBF%h)|bSuqjrtK@(^qHu0dNVg7*LX5I zVt_Cd+E#yDY=&_Ih`p-n_j?>n=++xR;H6M#2fxmBzD#t?+^2ko1)57wnxXVoHn{>( zR@lPaW{0X?6{}c`2UrVA-s+PZ3L$i|r3|6xatFMOP&UE=^0ow#m(>;_R0`9?DI3P9 zYhim8B3A0`S9w9&MfJP8qwPX+*`+Iqya+WcZoF=U7Sy*bvlPs}*{dsHw{hfPLveRj zUX|P+p&dzxr~<8wjGgI}pR!ZsQQr4$HG=>kW}^ZnF}TPB7xjQv;dP)KxOsiFBklY& zZ-L#n-*{@v8l6)n==`pfLvOCbLoRK@eFbdeJXh%eWgUxB*3qhJyB8{BTb9)8c6s|! zt{!RU9e`qspIAi7V6@Ow$rU{r(VVUtb3n(+WGdw^qf53M<tHj-?Uv4V`(cBq`huv0 zy8x7wjoF}9_%C+I|5)B7U2E6*mXwW(z3(t?26NlBwu{w{r2;5EdHBS(-A{VRpTnu{ zDJw2qOR22<?3j?^kV?%_TN{LDNwMA3QV%ue7H!$G<;amEM~@zTsg;F(vJX{Vv0}yS z>}&)uH#hhA<B$KnP@YZloSmKJzZb+$Svm2iti1VSX(mDlRg4Du8j@yauSx0ua{<lH zEc?Zaf9@6MpLxONmz{R%DZ$A-24xy+QuE&_d(KqCjl!=eR1c%~&&|!>yW^1^d-iSJ z_Rzs2$9@U~bk13)zxhoUzxFk+T)%GZY3tX77|pqgBshcDOub}hYt0?1DzF5{pJ=Dq zQFM&Z<K<b1PESv+->~}9U%JqUE%uSc;po7jqfb0_=-wTB@4RpK{$~#VWK8wzU;p}( z^T*e(UGb0KcFF60{(_0Yz=B}QipTPeOwY-$M7wdLrF_UCO%aF18%Xf*CuujUhlfqh zba&2di^w}X#1umSQB$XbhmPKO>)p5C_2AyepFaM=ipoFU<Mh){KjVxuqN={{pS<(3 zx4o(4U#y<R8!ZuJ3x@@-pr9&FT~$$|wW_F+8i&`IoI(gpD#ol;Wkq5VD2WKb%4+0T z1ebGWw1J=^N^OJ(Lp=lY)bgnntJj^k`PIK8X<`28+@VAJ_dWB!uD<EpcWifB)r)?_ z6yOj;?74cksj6E0nsF4!pJ--x3Kjl6c}WFY5=YAv1OjVTg9z-25`z^25e>PAs9V`J za42*Umwbv9O+9StQLOrdsTH&9&RVtpoVBMtvwUXR>&`!G?&ygpj?CR~=k^y@tzs$0 za0XbYP5AAs<sz(WRIZtmLae$WL_r}i#y*S)tkxjNO6t<FP6I>pe4v4Pl~4;5H;!13 zCl@XHqYEbvFU}twEL%By%2}_RS@q0Qhn{)n!Sgn*+kE!M7{j4s^Ecda-;TXcsOpO# zAR-V4X!5cGiFOu7>XLA%K^>~fc`XPmB+g8=>O%f$RDQ?5j9~8QIoru4r_n#lG(PKv zqVR5w6arNp&L3?SPp&-m+>K{#df=X2RgAHUfqCu9<?nsV#Q-%aUH;AQJ-Bz@-_eT^ zSxrv8{Og45QoFMwBTBjGX?&fQ5$qi$85>aT0FU|iiJ+Vzb^?SrEY+3g6BD(x8%I05 zy^tl1>c#n3^(H3<RTV<UZ>)Vc27b?5E+$~^#L3TJciR&O4*&RW-lc+E7HIKJFBas6 z6Dka0Dp<aB0QABQQCAn2BQZ#z3}sR&N4eBnbnF~;0I^&V$o2PJsr77~0UUhtsli0w zm{eArMo#XDR7Gc|CqMYkOHz}zZh!cOJMK>}*rLbh)@qpkcSslQf|aP-AB9|xaamXe z%>ZdLNkp7sP+}W}pms`g-w?qXn#=CA;B&5Opb*Zo!BS{S_2kT&Lr?F2djHc^FNVMz z*q|eGerDnXY7Hh7!asP`c|X7ToX7SbyyB*<Cl(f8xPUzJXiEv?<z+uFxh;nXCjG(! zXu|_lwo*{bGRkl<tazph&DPo478Fp1pKYbquX(UV)IEhp`?CE@sh*l$KU`e6`@7#A zE)HYmQ*w%0Yaj!`Eg(rE=0O2EeZ!jHd-q!p&7Jt-jkhmpAbU;$xjIsDUglpUS0|u0 zfQ7svfJMYoE#Gp5^~s2EJ_QUFQixdpZ-6R!@3wYZASs6mE+lkF8@XL>iO-kRFvsPq zPJQ&D?K|#yU}0g%9120ISVkAKvWS8ah#h&RKr9q_)r#p4UiQZQ2abIHTi>gj^!x(y z1Jr_Zuzbp^Z5b!GkjAVvvzMbG#3UlQ5+N<K2Z30<d)q>73YipPVlAgiI_IXtr|PP= z{Y;5COis@}`RJb8ZoGN^#DXz)ZL$ctpS0fcQtw8Gm;rA|5^^vXal@LGANkcw@89$I zjdwpF&k761G^p&M`(mfmcuNhk?-s{s3+Kk`%1rQvH0$ar!~&mfLB)Pirx;FNOKOWt zZF^vAwgrmb#PpGa&+NGSjw6TWBqbt>F>txl7NJ!I6ST0`JiHKikSbtiQ-KiJKJ%)x zH=cLex@))I`{+{#p2r3OL<-T;VM2Mrk-g5I&X`0>FiCk;oXwEf4+tm_j7Fmw`KJ!g zPCMmV?f9;x8^|FpE-pU4XYUh_JTia$gwfz)4CK=iEFj9p-B}iHP1X4gOz;5|*?M{% z)Fy%<a^VKN{dKS2yZ_*IcivarTr3c`GuTWfZD30bFIDDBrW$QQ(SDZ6CQN8?v34YL zQ)BMkZD9asdbJ0L3geXlT3lFoX8)7B@4M&3v19$gAcPPCPfksCA}ue?c*kU(nUJxD z{Gq~HahYf-kcyY5i3G+6jTQG1&)Ts1w=VsKFWvfm%e`X92vX^hQv1);NlQRdXe^mf zAWlaS5$mlMYo@ktV6Uo+oginlWF}9CJz~r}URW4CaQ9vNcJ1u-s{Wwj$o+ntIAygD zNiqwPq;xKNvDQ5(iMM{0W+p$_tSk^0oVO5@LcRE}R+?2-Rt_AriaO|3?|S`3`%jKe zXg*>kF7!aq$R(1aM9;`=3JFXK78Kj>WOwFd6ZImk6ZSj=^|w3}W@e6Y-=q5;-hThd zV}}CCU}6wrShr!dc0xx}j$oh&G*a}^jj^mKl=>JkhYXci`<*degrsnvauDkxW`+uc zz{JX;Oo3SgS1~AbqUoKm-aq82S(!A@(aEkMWwssjCm#Qi8hgqOc_ym*u$T^|iitz0 zn{@E$1ABMwIJj@`irML^*Bb;3R!(=fsn`@1&u)}7H`*%;YjCM}*daN|QFxcHv6-Ar z#6m)9Tnp!fWMhP+&JCoN*vZ5inVF<Zej_up&O-9TEuF@3<XG7#kvXhWWrcvjE=%im zR<-_U7zuyw=+V1wy9L8z6B7dt9DsEjR-?^h#WvhpptByUyPs^NO7CjXa}~|40U#3@ z=UiKh_3@0-CFK`U2&q`4uWjwt>D?;K9l9birPJ)KXov68Apmvr>hT1{433t2WA0VG zg9i@ozW?s}#2lfCRb195^rt$Yj~}{B%7sYr_FW^DsqUV22nu0POG?vjtCqkb|E4H9 z!)xsP`@Je@rxC*Ksi}(f35>b<+@k5c&*GmccWNq;sitb{JK6|@sH&=y^9xV>VDDo) zxA&vOUXOwPAOHb55FKwaa5}Gw+6W^vbL_CL`2;O7h;#HPA0cF4f(}awU0SNgAKt=Q zSX9}{Q_I+c<YygnWhV~u2?azgJJ_RIvh||mjjb`_+`b=%i;MT%ev1r`+K9>N$yloT zIq3He?v@Xq-$Xu)&JR#Gz(z)bN=e<(aw;k7tWmfMY>=Ub5^CnSwap?eVDS`B#sYOe z$C)XLF%5Dik_|p<HPvSfiq#k;>kfxd^#;3lJh=bi?W}c-9Es5H*~Z!&kPIGa=D|_9 zN5dpNTQb|%#?yJyiMDh@+f)}cl_Lrd&a%q;NHULI)rPth%@SvYE5!D^CAqd(WeHsA zIm$kTux017bU0Yh4nSiFb(0?3vuoeO4@9a%h`m6dKw3~B%Ftrwyt-k^`Cgiu4=Dfu z1_?<-K~&jJ9czxWqn1OYycZr211$@X#2Jx!jA>RFZz3nM;Efn!cmXNIy+;n4qyvGM z`8GNp$I}?1n9=u~V`chDad86LyL;EJyKbFXHVLMFBp{-stmN}D3o{PfwdRyryLMZq zmBsI6Vy(~Jb&4~fu<U?Z!i#&H!iZKZiCvMWi)cYn{Fac7GrD}i?g3Lkp9PA?5~Zl4 zql`QQf&+7m_uqNv&bx1)T`?5{FJCr^7M(U|p4!N`?L})bQd+Vn3`c}~W)T%^%v(h= z?qXg)1Kcg69+?!~zIGMT79eS%HqE49EsAV8Lfeumx|E#U0$H6%+J<8ofKSBxAKQET z4cE)!@wMw#t(u*7|7gdV$8;l$q~x`^WssHz=<ShXuyU?yxJPF54#lja<eS;CWpVkX zNyqlbls0#f01T%@yBic8Bgk2CPoK>IE;UQ1OP85X#2`93e|+b*t+!qOtyODhPg%d3 zXI3d?xzISrs)dZ5&`51S3#KuMnsYW>;C8gpiRRfxL}Kh~ZxR~Yh9xmr_SP8zY84mM zA^&Fd#^&Od5l!vP4Q&arEk(9vZ~J7J&@^)V=u_Knx$*9;+oz`oXP$l9<n(|FHvz5h zquc<KjjonKNo@ndIN93AH5MZQZ6`jVjlpxp!+n)@i#;M`s);)<AAzKK)<`z+UFg5u zu0T|Z_Bbm~w9Ad{keJ(C$7!5LpMLDySN`?(Z97Hul=UmutX<h3^sJk%&C#fn(egMZ zt=-DrQt6=EE|&WS3`0Q?g<9zE_u4i;bvo6k6YQYvavN*7l}<6k83LJ<3GGfF$?}nw zPq~!aUOEzpX#2JY4o=2?zgoR^cE#-SUcZ;YZ|%&h>K5-hHKEML&jEgJcOzcf(bM5N zm)>gQv04Vms$ySNn$X5UG(!}|YAxv0r41<V@Z}3_Tr=0!6{MAgWN4{0@pigN+9L)` zP7P*PE?Yh`-RoD*yf?19*KV}*+T;$o?p(Yj6{C)wumq;#K`FOGqM#?4xq#CA(TP|( z7E?PxOG{jBn;cv=9T|0L(guBZ=<8!m0Q#JdETF1a&CE<sPEGdu-p!rwNja-HJA;GT z9Q*nBp>3>;(w<Y0f6e27Jo2Xu(Wx7>F+;J0(W@9U7t)=9Gk#1&bcr_kD4)W+Z<`Xb zbs8J0BRQmw0DApuVsg;yM{BNbivn())drX4oQOz&h+x{9a|WYJ9>@8B+GrvvUGm<3 zt1>p!QZQ~q%iO7sh-67CQ<rtUq%)yq-**JpVcaj3Qno<~#K=`Y29plu7RzE}gw)z- zkf9-JJ$5cDl1K3TY)S^TeFKtvznmmehW}=qOfpVpM%OJZI*XQUDYAza=^Qb%M%bUB zBczts-%1KaUM+>ZE%BHJ*@SFsNFFm4t&5;`gcisJkuy<rdaXOt99-ox6q}>|Quy+e zUdHM1UYwIm?(?zDSy?RS?3kgh!|H~At$}XE(dn4b_Gg&_*S(I-)yzlCMolnLH~b^Z z{Iad}kk|V4vUB$7cim{V_31>;=FIj?%ZQXEEd*tTvvdZ>VQDV`&`L#?gf4AYL^(M5 z&f$uoDC5M&PNH-*tR0P4+Qwob0p^e+drqs`P>Z&-c(WlDc@8X<@$$Ku9BoCmsD^{W z(pp}W`IT*#44kxRznHZK)@tSxgFBj6j$vuP$n40r8B5EEyiQxz*g!VzuuKc#vKvX4 zo=3;iI<tC6JN-}|N3){~CG~IXFk~e<=?rlZ|4g@W7Gpgpc}iR74gX)Yh)-i}QzXgd zu$J+ePnvYw&+>s9YuIXAq{_cQpQGWYebQ<Wml+}*PEIFpFP0{cizqc$|Cd6NDcNRe zwuW@NQ^(}eJxZ-dM_UFg>jjobXDoneTba<E(${rcW0tsMeWV?YSNgKr4mhBU(YLuO zY_&!orsxfI8QXB?32{r28V8u$elBgt+!RT4fvHa4WO)G@??N7PUQl#Y&_5|l4N++w z%PJvdD=_u}j7t{dO`_WAH744!WlI-*$KRFo_(HhZKQ)&m(*FZ90jE9Q4t+NO0000< KMNUMnLSTZi%jj$X literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/scrape.png b/release/datafiles/brushicons/scrape.png new file mode 100644 index 0000000000000000000000000000000000000000..9b7a57c1b9fb9c74dde911fc666e0c9bdd4b46e4 GIT binary patch literal 13055 zcmV<bG62nqP)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NN=A`MplixmI>AOJ~3K~#9!?Y()hW$95Ln3>;l&bixLs;X=0>gr8uBq4zYki^n- zAOW&L1Ofsq2F)-6#vv1)2#l973}eOy6CQbN28TTmcqV|cnX$#<u^A9zvye0(A+=hf z)qAyS-`;ZHyX#rLC3F7x&bjxNBpYFC>~@52Rlj=6edm5RPk#Aj{(isA#>XCe4F1H& z=kg>SnP2$WdzQyHqYt-l-r3$AJ^#YBJNx7R;U|A_^&|p-{`T3?=|_57r{<Hzd;jGJ zNB!cF2hacVKl<VS<6S@4UI_tS_~>uX=gar}-yeA0SH0#<-}vQOkrN_E?roj8`Kgb8 z{nvl927ogUzdBxg@=IR-$_HO|ez>)5i=obX#qfm9dLR1DcmMfsf3v!9;r{!2?qeT* z>UEEP(Qs?q=7X%aHP}9_bawIa-w84L#%Tb#_x>|y&)+i`?T|J|N@s=12T%OoFW<bj z2MBf55CDv}cSk$hh=>5BRDb*Qr6+!?Y5ewyQ4F!JoCW}91|TE?Qo`|r|MH(4>>nwu zjn*MVBGdo?Ac!O&5dHLMuRrVyz~1d~xvZ*X?VKk7h{4C;LsKs%NAuazHBLmfwg()U zMQ-0d!q4g6eJ&5Y{K?-hXM4-Z0f7AC&;9yn*!!}tc=flu^T#)zM0T(<I{mO6oQjb% zqh9`s3(mP;{ptVypZ(NdJAGoSy?56>`M&vd@%+=5uU@|WHE(|XXlJO6;TRF|!yo+3 z>(Bh*W8eN)@%qKbpZNV>n~bM}QUBb1XY&4*wmp*%hP&rp{Mc{ZxpjCvp3+Bt=U+Ve z_;Y!Y-Fx9&)*G3;pAUAoPTgP653XOi6I`gPMnClOhcavKx%Z4QIg(P!<o&J1(ak@6 z@2@wFE6bXcBHQ0Seg2$QRuBLn@9%JM&wliSSFhZ%nL&idpLjvLYEFcJK!8ZJcjd`X zeB_fM#Pj!^zIOS}iBnq-oIgdv5dZ}N5L`K%Pp4<^J(cHnI$ib$`K60DghhK-6A?u8 z!7t{Ex@?>aMKAY0PL5|;W+sz4e7^3T7Lli(c>nhHj!5JfIe6iK2%%p1W?7fB|L5KB z`5*tcU-_Ia)VER|U2m3?x}3VY_91u|Zr|AZ!23R7488Kz5B=@G@V4F{KX?ALfH)Wa z#{cq**KQwtx-&ic=%auChu`L%=g1uS#`QZNdjBWxd*I9~Uj5L){_$|s-`XB1tpPxU zIdTl_V|2B1&hOtj`YV6$7upp8z^VIR8+~0K-`u}_Yc`p0?+mltGV{y6;6j$?%2=fg zDUC#kgrrSAP|BLTFYHgA+7XUF^!NUW2Ec32e8@Zh<j0?%9L*ni_};I0?6reYKPz%$ z3uUa*nbJm?Oqtx~LsWWv<GI5-*Ie1mW(z`z0zdqH-=+cJcsy-tr<K0&z}bf%xzHQ* zmA0fbl2*znn`zs#`M~x@AaeVK4}I$SOXadsihPJf#LP&j0pttc@MtwVc<_-qB9byn zD-c8^L;wU*I`40ryziR&@Y>TK`oKp|p4tf^)>RWDGxNdTu`yZ$Ks`GQuF=XQ*98`! zbRnf}UJOo*uRry|Q_oK)b3_;p`re2AJ4ffvpNf%}i*h*XjSnUo077s800`|WfB+Cc zIQqrW?K@YVFPD`F3xI2UT{{36ZS`l9#hqK@?cE^)<VCIlfMWmwL;w&G00{ulG|tsc z(=@K}9NA`e_k;>Q&Zdj9tV4(#xj!fl_KwQ384P+F0PAvz0Eh^PAQG9Q58emwLkuy5 z7-NiqLkJ;6V{}nuP2-x{3rLpRvTXJbk3WBL^7HbzaNz=dzOJPodhq@az5h2u@G%C7 z!TUyQ9h%ZNi|Cu{FFyYb@A%Qr<wEL@Km423{IH%KERSx?53iNeJLPn5dU*2#?|uIx zU--(4&pf}a>`(m2_kPRQzTw#yukRmCKkHStwzlx<Gan4DX{uSXJZh??ci#K3TvQ+X z@YBy+y7|Vh`l8u%;hn$l!Lv5YnAto3jvx95pJ^k!bLEp!qC}3t)yvs(ehgtTzJ2Et zk3Vzk=HZ10&z?Jf4=NHCB0_{1IfO7dUi`%$|Jl1P^s)E;jB`!!K}5=B^|22>efi4m zZ++X>jrWg&k0<Zh&2oc8Ai^v$#t>o%p{adcHsAj@f4cD@T}UHQaG_~j2!3+3SS~9~ z>dD8Sd-*Fb42FZeXSFtngoMH@EP$Z3**^2|=;Zm2zv+$7Kl!n5edpf>0KIeXtG3T^ zvpAX_T$|6zqR7skvuE!;IT-f)gTmNMnKq;#A%apSGg+Tw0KmiBmlxCJ&-~~+|IW|9 zM{8pv^U?l|$#`mvId#u&Z&;i<z1tu3vb<0xSK5%aq>NHpXFb~+W%*!y{gY4p-Y=Jn znlxFXzv0m@(Jy}deTcYsd;HYLFK+J+?|b0v&hDt_7d9`n$w*tRGtyR@OlLil_nUHl z>B&Ek*wmHt-p3G~^VVvb9L*2+kB<+h&UvNP_Rg@E)}k$?P_1;jO4i#V(s_StI2x48 z`qr(n%}itlfcdP{+9-}}tUi7A!~+lAI~WaZo)c*#MWl!{X`{3?Sx;$G&i0>w`~!yv zM;v8$r~mXPFF*XUdl8+@w0_{_Ur;TM`=j2u3$nF6vPBO`wIKxo02GokR+}saw}0j7 z>15tio|zHh?3vv^`tUQadCh|WsQWu-mF<zzF$Sd!A`u`UA|ePNBAGnvZ~LYe;ET_` znCF?Xx~W}ofkhsA@XSX)@~jMo6nq`r5|ETKfP?^PA?;Q)wl_KvT)h}yd*%<{I~w)p zv*mQM7;O!-H6lQS=g#iVXG<NLW%Ld~fZA(F3g1Yiv@yMUc5v~JKXmK*zH{CfZLBGJ z*`<ruFFbfIgy5W5Yh4IB2FJpH1OSKvKq>5|=)aiUx^wNyt?T<$)x;<<a*R=HJ=z{z zeD3Pmdrv7vq_D^=aSZKSK@<T*!S)zn@5<$L42aviqoT-^#u#H=x#gk+fTCw_UfYW? z0)SGAL>NFsq>cXoAOga{H?CT`rV$ox)b{RZFz6|zn8o?v8n2X!%zL+wToV99OANvc zh%8Kq!otA9F?d&3b<_9|LX6BTS#CvSHeH0!zDH~H!DPYADXnYL`$D9cl6c|ZoO9ka zF1Qdwj3K7qR7&-FMF=rQ76CxeT1{tVVA9?@5kLe)0svu-k-hUFY@BQ9LV-hw%xsMo zmdFu_tTod`=_A2Q>Rh|;zWWGXN)N=g)@mQG`?A-5*W14BwXgZY`yaSa<e8-B00;<( zfCzv{x)~ffhP^wt-t!y3{$oG+Pd|@q(vkVjwWk1(nSmp7;NUq{<zy0r7Y+iTbVf?0 z3UIQ2{kf+ve#w`Asc)({pS<eA=^y!T-g^1g;qJNJU;6bA?2o7az6(Nt#rS57USf#B z#o(f^qj#MLa?0UEBt~|PI~q@~UA*>z-}?wy^XK07rVzM4D9-MTno0FH|GV!xd1?z7 zm}86rAWyw;_2+)&clXAVKgEIofNUQ{hzLm$B1aco6Wr3*OIOW<Z(@ic1dh@B;2X~( zR;#jVe(l}AclykU)8|f{K6jF%h{)`CuC%h5)kY!0YrpW}pL*qk%n}1T*Zk~1|E-Tc z_2QqrAUEHSF$hPFp)KD@1E6=+WPJ4E3)ik+x&2?h^Lr3wx_`B)-HB7%S}Q;t40}5# zMn%6cMiX`WLqwqcBLXY}ERoq}`Uk)7TVssA3C~`<@<0E=uYGpEe)Q2t|NamCx!`>Y zFDX2w)TJ()gT3+ft9yI<$ANj&FYY~m>dg6jvfL73IsuF|S}Q^l6iUS`AP6%H05FS) zun0&B-BQ;+GWAD0_nd!V=fuhP{my&-!e4z?-MCePr2$~)%tNl4yJi`h$~Vr3=$vQA zjq{E3fY8gWHhM7Z<^7xpiz3SkYpo?kN-0tbk%$Np(}^gEC?LXVn-Xavg<30}DV-@} z2x)e3^@YoSyruaU{_YP{%jR7_`zy~~z17{armE{Q`an7#Zk@@BA^T>se>KL~>*w3M z!{JuHD6-MkU@+?U`$b-4+GwS<QW{B9I?_mWm1Vm!B1L4{br?&^5GiBxdVX|#=i==6 z$TdF1cs!oxx&6!E`_^h%|F8ez0~!FhS!Q`b#nAg^eDm_vE4RjbM>aFPey+7XefosS zY+l&B$g<38Yjj$Q(xfzzLZt{b5+SLS0wF0<Ms-P*QU(awyXoGgquW<z(?wG`AA+y| zz-ZL-K29c!-JQ|bf8`fz0K9hTG61khaQ^sccIWnZHd!Fy&hF^+nG;((qoSW#Yn4`7 zYo!g6!n72mWFbU_N~IN$(xj}m8R?8j1z!i>n5<{Ap3eG*2UDf6=;u(@-UaUiM~*R$ zhP|WlggM<Z=MuK%U2rZCVV-BbL4MDf-BV{y42FfVR%uO2BNCAUBqZu?lOodHI*igr z=}g&Nn@mJFdI`<q;PS!k8}rGcagJF6z-+p>dE@Zmm*0zsP2Dhyu;iHyZl(d?<UPBt z@jj&$ntJ_=NDW8*(e^O!<yu=(3KM9A2t){kL`VdH*e#BfQN}85waHN%j=o+@j_<s1 zc>B(5vZ$)Y`v4+sW`TJ6^v==Y^vb2%4?J`>&kQpoQ41NId)XI9@4Tzra@y3(;5{Oe z)>>)OCb=pgq972U5Ks!<Km;j|BBhkE#`bhp0IA^Wa&|br{@h|dmy~!BrYMlYiiijR zfZTij<nefV^~&Bu51+GEiHJ@qr+^>`X=Ag(*bGDjk=mtDmkbIB0;Z*;Yz~o>Hn}N= zS#JaauCBDPC<4A#N^y)gukY>M8lOD9GaB||jL!MsLkyfAz)%#~0}r0Lb8Fl*t|6lV zz&E9LRrHRd7XU;8O35_=V6t-pCfW}v-Vl*CChuqcZEbR2FU#rP_~xg^<KuE(dLICg z6!!bYgD*S3n3XR+e>LxA=gyzb^A>LiA%qx2L=kQ84917k!=t$dfZ*%s9mkMT*>rda z2oa?F0)QZZgn$Tul)L~H0!Hta;~TTXn+N-clcRZ6)~@pvO5R1JwaRjH;lZ<2<uAW@ zBZheT+(~OSB8Z51K}4n1aM&9x6F?ojNEBFGLPUtDU5$VcBn%1x1rQLK8Diz@=v`Hp z%W_${+9LufQcN6KSYj0B0DvI`gtR4aXLnTB?&h^U5!pF0vc_PFrifZAYfJ(GBZwf# z>i)DRC4z_`5eg;;5(JRQQ8<PeeDKbD?|mSmyqB3w7cK-Jn#R?&^Dd?J3;@6a2+81t zFdFq2i)!!ISZmem=R_1^6zMWXj**$$S}OT>@>mfdVqp{nMu7kUL^uY|F$5pdBeth< za(2>2lOkh{YkX6?1YR)+hqSvQh%kt?nxkDV%lW*_GHb0C08YD%qi?riyAT9!>onj9 z03g7?!YO&>7(xe)#gxsaM`Qt!7+IJBz*wymc^B%san7eCLPXM2nI)wRO%rDGg*C<+ z!^~-y)hr2?+xWBLPw6reIWor(V&uroF~*oK&oM<8mdNcZGN*q90IW4c)Sv?&Vu<TZ zoq&|etPU|QtH!wy0%%11oj-g=B$dCb=eBn|MV*vueZ~VeK7;N%yh?-adRkgy_tv^) z3r7widM}L!cEJh0#PG&co4s@v^VnmLQCrc!WF9ZA%JrqVpu0-x?|%Dt{Fyhu>6Ksb z@acO_Z{k;y&bGFKV2)8FR?Fp6Pk#Jw{ZBvr$>*<pJ{N?D@BDAS`)~c|UyqTYd&wBQ zNUDbd$Dot}6poI)WA^M_<jBF@dm{f!|MfTh<NxzF|LECIeZCf?e&WY|<on<G4g>^= zAW@=c-$YkMxAgTqxFvE-KVoKA%`ZLk$F>*{23IYnN0Xb^_H2~5f9IdcjDG&o&416; z+<*W5TB2_j#~d98&(X)=VrZgoIJg+2q|6dfgkuclvOGSV{J;PDm%jP!Z_AW%-iwIV z>Z2ce>My?IoB#ZG{#obz{^8`Ke|+)he)V_$9WC_cH$D3Bg?plJ*f+sdzA2+CgR8xB z-n$rL48b|)8dulNVqT38Ci{1ee)o4jc;@tuQm~kpuJM-e*{3d@K6iqMGHV{X@65No z`77W0wXfelnq0qq_@}avddoL_-78=5a-}VjN>Hw}P|zCm5Rn*T@UgDy>GAw{JS!Xb z?6a5AhrzI~HRZYO4~qF@AqX}zL_~x{_+_to`CGsC4PWxAhu;6ur`qHDPrPL;z(R;* z@;vKp3v&!j@KvanuA2L%3?al2Bo*g~0HC$XwIZVFWYHfK+q)wXU}gj$MZrg7Q7J-H zM4}Wuc;W2N|D7NB)YaQR_S5hFlXsahS<&AD;1(YPA*E3nP&uOwqEFnjTP==UH7^&- zrfy7Tie9!ASQ#2^_48hq_cCKlI*mo3OLD3Ejvx{%eB_~ff8p=^z<WRV#6N$}2mfsg zsuxF-+b<+6CV|9&NT?%+YB9NS<>tlbu6*I^U;oIfUTO2grfGV;e6&5Vnay&uy}LEq z?%T|!LZ`dW?FW#y;6W5-jL3lajbHPnZ+iW!|MK7c`9)cOcBg*RSH1T9siH1tO*ya2 zWwl(^)v{d77PI5ygX7yb4)$&zec~feKKVzFTMITb!mPCF4|`iXqph7mZ%~-b8l$z= zx~;X9(n=?qqpc&`ths$jt={y8*PPwndg8gupT())^wnQ>;p|TE!TUB53_dvLo661R z<<Y_9cs#2b&%(>;0s*r;%ZjYm&-;TS?`1YE#;62AC{0?e9%+qA8*QyAip*G}OkNCz z_rLs=Z+`1rzwf)h?Rfvz(=S}T%c+%8+GysO%B_^>#f09u5Ml%XqbV~QNjVpoIWMfu zt<mWf^{OmN%=BGZ8?+Py5owzj!;{7Ege`{JX3hM_&+dHBcYNKOzx<27???XO+J|g! zd$4oP*K^-guBl@P-i4HU3JU@nt9yt=FB^_}MK3c}+sq`xD6No)lxoYgRL@ExJOo4l z0ZAb$QcCFzk$kgY4t{?+zH?<ZnN?+-S@RG6`uG08yMC@+5NVqaPvygt!ZEta)w6mr zDHn?nf>LCx&Wo%lus6uJc82{yk>{DU*0g|?Leec-swk<C5LdhjCU`_?OUjbc90QW> zjZVs7mxb@#{#bB<ISvNBAOHTh{f(b_Hvs6+RMUeiz9~UOW&K`%dw6O~X9vzXZI@YY zN27l7;?dTiKj`H}W{lRx5NV|-K~jj6EP<^afdGk=BBhnK%4DQ6Br+yL;OYM5<2zU9 zvw3FB^muNyLWC11xBtp_z2zg<=i21GllOjs0J>&5AK$!o@yV*J`~4z>sECRpOD@?T z6zyuP(bg!XNo%5HA%!i>s1OwpBBrGnQdXHvn@nkoh~?zY(aq<N$4BL|_RfpQaM)YS zN>XHudhmg>AGto$)$HK-*7KyT2)J@qm(}$vcYNdfgTm(4SX1<iEVp@)<+-)iXst<W zrF7yjTPSS}=B3-Gi419@lqRJCAcm${93S7hcr-pL=aq9V6>$KN7j`_Jjz$AEEC9M% zF2{Sf2r)93i)#PQ(PTWU%4WH&c28_=Z4Y|=JTEe9jWI@>ZZ%3LS8egU7FSHx(#dHO z_!omOr~8w=E6e$!Wj<TbVhus}d&TXW2dB^M0DyMRFXklzMCNi?m5ZurocF;7BO*4l zMUmOewyRO9<%h9_IFlo%dxza>l+KjNls3W~r0I`NZJ)Z|*Yn$#KJm#Xo;`p5B!D!v za1<7fF^b4&)VuWJEd<aUIo-|}xv6~!5k!<CV^mS(y<ToJYpqEbBPrc(@^qRf<N{S2 zkd;=-C~cLo+E@YP=#0rE`s16=93R|V%oZn44lh1`?aaB8HnSp*Ii{Ks07qMWfU!>a zt3>9=B8-T}8k^y0YcSgG=e^8Wqm7}Jue7!yO6yXDgezxi*Q6|xk{A%7n(dEozHoea zyj)f>L=iZ3&(7ZM!z|Bsb_Nuvix6P60syTvX{{Jh5VY2LkpYOYX7}XwXnUCDnX#5S z5Eu|4eT2I{K_b<{u_nQi!py#zjjtYDzjQpFl*=ZBz|4e5MBCeg$z*Zm%HrJF6Qqbj zN2&wpJkLg3gLHnS6R_9Mi(bC9J?Qldn`NYQYnb+Ty0obM2wmVoOprbj2uI({$2Sgd zUY;CHm&?jEfnx-K2uQ?$*z4s@?Vfw?`oj;OC8a3Dc0t8pbmE>f-qlTA)n!%JnFwT= z&5O)hOUj^9X>+tpysS#yH8_!Oo@!BBB_J_I@9W@0j4kY%zy<(_F^Qj`*UQUA_1x1} z9(>uo?coQYwe9t`&cslgYGLd&YZ_)zinP|G3{e7vlU+a(77H8YciP8oM9!7A%-mFq z>E5NI{Tm@fYmIk4_{a#U$P#YTB@h^H^~+^_<x@9LpV>`J10fQoBS{%;bDQN^mT8mx zhEfWUfKQNCg3$qgEp1DbGK@l*EO_UeQfb@UIu(3){+Y|;!->*L8>N&=At=2k7GX~K z>u52r?%W<XjRyb{5RN|4s{nvXky1)2BueRMcW>H4b|p7!nJ3c9Sd$Hu$$V2WM`QEo z7S(hw%govHrw$J$S1;WH#JrbfxlvjXA$0|@h#0F*oEYsLOs3NX0BGSDgO9OEurLWS zCZDGjRNnH@geWK|og*jIJTrM;+bjkr9DFrD+`n{ua8OlE46I4rd*Sr0>-(2qy!pUG z=ZYdH@~&x|05L>~$<j76+r$3tgGpKt$KWIc;n*hmL>+U`)*8u3?QIi+1n(1((qwYd zHu|QirqjL4hj;EwC$pw<%#4UyD?~bVdKX}P>BSr8?z?9+>WheoZyL9*3lNK52D1eK zY2hdwm_u^5)^%GtVbgb82ZmL8h>A!NpsyG8?BMX$<-`4>`E1!VF2;y}iqLD7^8XVj zw-u>d*Y@gD+q=6Xttmz&N%;eUgvO|0kwN9Oh;WPv8$?8aRxHzrxp9T&cM6>LkpSYR zoYu>u@!qZR!SP~V*0tvt6Yd@n6$@)oiil`yXCNSlcaB`+cXo$LQBZ`DvEv`}+yXc) z!osnQDIjSzB7$q>PD^k|x7*tiheK>!XsY?-Xg*!kl?y&Xx2Ktzh+^cHrzR1AUN85f zFd5H+^IN+kg6;%DAR=Q-D<1}6feoCxTL=JlWb!Hkw%=__f#6(S1|NvXX1WFKA))BN zEQoC}o^G{><c0M<pH3E$c{uDtCp1cNJ^@y#wBwb#h)Aoh1xax7DoVFZJcCH&=!0v# z_bj4}E{a@{Qbcv_R$8HCtWL($?v6aSu5t6}k|P(rd_|t6cdJ`R2NdCCk3@7NmZS9~ zz;xjxRT7E9A$S);;K(47s(ND$5|W~(cCPVWf+WUnO;)5}4>q&T`T492A==DB%0L8G zw@g+?<!YlNtiFWRJCO7W98zCGY{dtXUJ?nFQZ_T~lN$&=fM7=<u0%Gh2(2|sS1;ye z=A$u6x|2?)0|t>rFy%unYnB$W{vg1>Ai^PrL<PkdIITyxJETAmQ5)Sle_JzRl$Lww z>V8NXgsSo}R(YN&Mac!Vh=4>EKv+3&S_2>=q)Q}ann=PVVr+$ADaC2Ijo5*rB8ZS` zI%bYhIC4u=2(UoAd=RA-0MxY;fh;rWMro0lR^E9_cYI>^URwWZUpR)aT2f5BOY6Vw z!dTk9Pej(5bg;AYfGNRfmz`coDH4FXamfqQ(IGJg1Y9xLDI7t^4g)~D8sQis$F;nz zBbvBnQn)n|$ChXTM6H#GX(`{0jm*GEsE7#BhuAo8j7k>b*iw+V3JI&+0;ENGI6)9B zoNN=hm40=lOj-_it4Z8iD@jDqN-?pJFt1*T5Ls!Zh#bVE8g4DbEGgu)tGR2FLA##F zED~eO*mWjb-N_UQSNCqiTFj9d5J-~}B@&TR#wY0r(prJ@k=gkG0Qytc4_E0UY#a_L z^H}fJ&S8^xL%XHmF6d=Vka7D?Iuwn$`>K5d=}op+YU3e90AK*Z#~yp^`1p7-nY`3! zq5rrK5!v3}-r3pF05F|SuV26ZpN;aFBF~+j9s19P_)m;Zd`Z)rpY@ShGa3!^JRc1Q z{eEwEXM1;N`|RmcqpjiA)-bcy8cT%MX6fYK5Fr2{EEmfdxoO;NKATLY*Kgjse&fz$ zI-Sp#v)TN3I{#0=K(fJNz3xlD`1{`R_BVh18;!}7N@YEyjIGngcbc0vmPz-ov_FNU zLlNef&N1OA!t3WG2F|;tn$M2*Zd|?nuYT*pzx3OG@Deo;Gr#TIzxnNN`<9a@cT=8^ zZAstCsME>c*^pPM2(-s+TqSU@k&`pW=o?ors>M`92E!r8z)6iP%)$AlE|=x;cse<n zz2e?`-uX>$eDC8=UA=Sgk~5G1Jow-PXHK8y7zH9r<QSpLbwr}X$Py*CwSRh(DX~s| z0WEmnO8Poi;uwQ(s^xq!IiBs^K0Mr?e)$_8J$L>zyP9M4-qlrIE~=(>A+kdJ>eoE- z9pCWio4@wUQo=W%moHqp@!X}G&wc9p?fv7U>AZ3NKZ1b}Ak@ohe%Ml*ZQ;NPA(j|K zm}3wQF-GAi>&jwX6s%6h1Xi@{b%?HU%Vjk^n$M2sv&sCIe&JW5Qs4iVzSr0uRAs81 zl%^~*d7c5l<j&DQ`^De-vv2vz!JsIL?A5P$;8l;@-$}_@*Ig{C_kZ-M-}wE<XN&Sb zSPWv}02|a_diR}VH3~=OWSwrY-Ji58*9tXhi#BHVJ~XwfmQ7XGb?t+XEK*hVyME#y zZ4Y{{c;vp*XHN)1mS=-uBqHbXRQ^8kp{I~=YkRnRYOB{Tv{vn=7g8XjQSXY|9RC0S z5^zaGK~$UG^t!ja@pT{)LOhx-Uc7SaxBuYdFJ8Oz|JN2XdB4~?odk?+Ol>Wa3S`G2 z^_+O-z|p5@(u(ui0-8J3TpPFB%cK%1N`m4vkw!$Krgj&fyS9I8eB#tre^~SeMbXb! z#!p5kLRUMEl4V9)t(79x+G%w#kfPJ4cJ4X3{f7VI6$lVQ_~i4~-uICwpLy}R>#C{G z!xnQ*xtxu=s%BFun7*Naw90bR%FGFbnSF3|2(<*y!N=Id5SSx}R%Dq-FclIrOh#*) znHVAxf`Ha!tx3QZN68Cqj7c;BeEP0kQ5LvTgs;#v=@2EYg;|tVU;0Had+n<p65$y6 z^0nLl`>+1){&>oti`eAf)_z0ED8-v6F|)M#S?pGo+6=o=mQk3i#q{`Ke|#|YQGM|n zzI-?uxTcJ*^3AfT7WJ|e0qa8E%R&euY_y6AB33FZY_FFWgCftZvDO$xDXT!*WCz;5 znbmFEWL98(Lq$Y&NRU#L>i0(;zVNQU_Kq0h;nDQHAN=^g{>Uf)9SzhhkEREg5@**o z&LludIzQ^<<&b_5qj#aHo5j4G9M6u&v*~31#2-GsT-FyJzVBtPc;MXmv%P+93&}zV zK1*GY#+u**03eaED$BDh&oXPYQKYCtU{~T>*~INu30L<KR|+29P&XwrF(*`zm_!(r zqBCbs{8!)d#_xQ~SC5ZozxKY5eCWv+{uCA2qmMrNjbHOcU-uQS<h!)J9Z=B9ELKUO zFmnts$&lx><@9(lo6Kj^a#_|cL_{=N4f^@+?(pQ<6QfaI8_g^o*awJ^dQi01Mklcf zCDwKYC$#WXdtBV*MJsTlWosDLct(Pc89MkU#t?ZOB-^~jHKA$TWM2RLzxus9hvPIC z;j=z2T)6PS0}p6eVb0KMts}SY(?ZJ|z)A~KMQ$2jl}%MPP3@cyA;z{j7Jv|9jEhAD zd&jPJ{Xs7)tTiUF!s($@`mb#pXgAgdIJU;hI^*2!L2}nd>+A=enoB9AtudyjY@tm~ zCetP}Sz&BW$^fvh%J2N1w=X7lCWreMU%2`sKlx9`lli}Ki|MQ=`a9k?v6U_+{dk8I zb^zz<e#OY?ZxXp9pd#wzF=UL+GL!f6EVoHbq==MO#%iUM(xeh&okUhGxt>}xDAmqu zb{P{)wq`9^S^&5Een(Wbu`-z_4F}1!EsX6cn=73utx+Jjx-9pq`C&Ofs+MJ4H^GHd zC$|3KkG^wn|L7mT`?sIHeB-kiDDUqKPdyld<LFm^qjwyd4xRTQ#2AA20bCH~Run|2 zh_q2zX0=vGsI|6MWkuHO<wY;ga+?)dmKkG=v08O(St~e5p3`nFqSlG1YpBO=!@*rJ z=bHY8l~IrgP!SQdGAaZS-&ECX?7c^2l{Q&EP{u}A&nA<}_{h~w>aR}e#qQSN2jB6{ zi`nvLe)+dAUb}slf$HUSc65UU6e(0jX=`jh>uV%J5RNg1Ci=?Pi>6vsWmzq&7}+>w ztqz%G7Oj+kB=K6-HRsvP+RWI@m?Q?%Z7}WxVXgQoeX_0raa9biP;!I~bb8}Qozz4n zp@$}=fLf+IRh8Og+Ga#52Is4Jy_kf0qKW(c96`q8X<fQrVN;^66!iwZA9(v)4#v}; z`oDf7MHnprd4GF!^8Ofn3@-S_H%nJ7UA1(sijfge+bqiqZLPAsEOPL{G(j6<ZD0na ziCG9y8D)&N)@He}sZGRaZIsfwjXOlxZZ1Mpko<?JYj)bO4kAK3RG}M2u<|d$)N<5{ zrCP;HE9^@0DIz427=681jt|P|LAjXLRplDzeF!0@Q@WRD*678&tSi?W6o{Y|q1C5O zZU5*yzvIbE`<D(E8UcK>aOE+gQcA15m*xH5kYjL7IW1?0)8onb;Ak;l#>h!~Mnnn5 zC#A9+ZDuI_vQgS-W3|@Wm{#7Yh)5}=T5VC=Fh@ii-Ghj!6|3D`Ngl9jI852sTHb<5 z{ijf+E>+!Wxm4<v6b_+YHsz$6kIVUSwOlrJ<C`??Br>z`MqEc240?HyEoNm|H9Ok_ zM4j06em|GPg$BTKb~L{6JOH9<*Tl@hdsjEhWi_45XOqQZUN()FD5NRRlT5~Fqm4;j zrAhOul+j5Sm|_jJ|Fp+ds~kiETDeTO%aD>oC9;Ev(kPDfo$hzr2IHi)gVjz1h`w>P zXYXQk90Nxm>awY(^|ERj=bVorhS-uboJybeaBPdwqL&$?Cdcy_dFRAd^3g6)tefd% zzLA-Mu!I;~?Uu`GK3gtkWmz^&<2bU`D)^T2PRB)-<Y-1~oeZ)*&ezg3OrNNY5QCjw zZMC`9#zG=WCTlm~s+G9YNRmQAfuu=tX)*vHDpM#6t|}MH@zMU+H*PR2Y-R%m^dTTZ zh(K$8s%x8ql<@WXd0o5fS8ks;wUdO*sXH>%wd+!zuDTD=HNLJ~Q+w}2@QM0vK`|oI zM%m03d6wl?w<_heb-K>m?wzl?VxcofyMw6Jp+jp6!1b@MREV88Qg;zY0b&|N#W5gJ zmJd}c)vR4LNAdl_;K{A!VtI5pJ=~ve?F_cJ2btC(gy>_4kz?vIOtk@b_5!Wd_Re5> zJUu*|Vh49X^g%#GP*(J)k0FE@lKuddA`wjrthK#<-s=~GL2oeZC3$vxLUkJoV6`dQ z99i0_W0-{W9d}EuD|I@*<ZE4=+6co+cb(U*C@`_w2&j}64!)i(mdE9MTrFmGRl9ED zim+ItPoLRt8h`cDt+Mv#&YkG>bE_!$5CXLEsH4|gK^9Tb%ZtLowASs3sgy8di@5?a zwlXw@#wcb(L?W!U&WfzxFZ#oxKj;-j-eotM)H?0!(!4ICfv%EBXVZqX2MN>bq^G1T z2GYrmx|K#H;c7d}iJ${BMM7xGW_euB4wtFesa=|tm3kvvT?Rr5y1OSv!w{#(vn!Ww z54ZZKPHibg8~uy1Q*K~;not*mjMe>K-uA-Awl6E~6hPFPY-TtLD$J~DlfZtSWwsrM zKuNvbWoRoLd-ZwhH(x;(gs|q`*I%__F-#h4m9`S9wrd|rrBOq|k%M#9qFx@A(}U%F zRxazhYF5qPkr_5%n{F*_<Qoiod6CWM%V(dyS`_y5=^dLJg$e)!BMFIcC!}j*ko5Y! z-IF^Z<&`m}F=D~T5Q2BD$OQqER>o+XS!1=arWM||X9~&MHkkB09R@%sARW@xDO90D zB9n59)?U?}ci09Ug`^QF$ugK@bd9TK)ndGy9+ZnkxvZPUd6(Lc<4U)1S2yfk6&?sn zzgO6^dNHe>efn}<WasWZnHL!W3a&bNH!^A4+Zvv_FUBY_q$x2WG{HB)dGAAP3(+KL zrPVwSN@o+bx?lv{5QtE_n!6+j8z9c7=>QN`84#jsgHAVg0z2s&a}3^lS2nH;X~q(v z(n<vt6;mWa7L>ceqHe^9tlPai?GqLK{LHx%v&rI_r!Nl&y?ajY*xUlIPPY|cri{t@ zDgp8_sNg9yN;ld#6FhTF{nlM7yLlL67h(a|!d&bGY6vJK*y7xGVT5b`d+j+&D`iP* z(zcsPsS-O9qvsG}aK0(4*}>%C*7$HzE-NA|iae#SZMgFxfiiFxOw@LE-bDe5Afh#T zdwXE4o*XZpd-m$??r>{sppAkw*k+Sim6fPQV$xR<DNt$nz}=7~QMa2&R)u5>-XL_= zYUN?rvH(O$-Xm-McYEj)qE3_Ww9d$6N*hEHVc*ou0Rc!Eoo5LBU~@$ZiL^1t<H`77 zvVZ$l46#2b2BV%a3A$yDtyriNwj=@uWs~C+5EeirrHUdWqRi@}<HgbOVt0E`^lZZU zT2><lAETETTTGsVB*7`JmB}5nm`Y_@&#{13{)Ko~Bkrd5Y3)3McWJFLjVQ^q$&|^p z$&i!?2k$tBR8~j~uADT><9acvtA(!{AAImpE80Cd>JN&=tehNA$A=TG)Yi^mxHYu7 z1%Nc=C4{&d+rhko-8x)XB&BuMXc-iUcsyC$Iym0y6)vo3AC8hpix`Ak#-h_FZS0&@ z%egWat^m=NDe691V-=f%zSK>aMzeL<jnYP$T$^0kTxkm;F`+KO2Uj)ANxeKO=kuzp z>NEx}jgQ#S0V~AesFxR}T-LMc;_zU4xIY<g4R%fpi(am^(wajz(kfLOAjo$stkV5b zifm>_!=8v7E|w)L089qr$c~fywEWk4f?f;BtknPQa6bHuIQwZ7VrvniRz=)_hTS2B zl;-}V89*QsT*bb2^|D?Zm-F#*zNpHou3Va<(~W&tqaZ{`i3vg!gp{%lhW+KDEEnZ` zy2x@n+8zvsJ*AZ;6QjZq0!B;|Kc%~`vYr*F6k2Nr{hV3mW#|kfv7@>Iv?Nz6=4(&m z)SL<{<uu@WSKVc*bdb0H(jENiJ$2y-0SQO}Aqa|aIy9rJT|KWC$IJO*xhU(ZX=>-3 z4?ebo0#|x&X!XH}NEABAq_uic*eo;sVXs=&<)YfVb$F=NaM&Mg^{g>Oq!omu?Ug8! ztecuqB;|*RlIj;R_cD#V8pa&k4uB*jZucj4HlcQ)1_%lw;VRa`nv-eu&}n2#N`DY= zCA?m3Nl1wtQ@{vL62;b(^Qx?>WnERZYg~#mEvmc9YBogI%(5zD5Rr(9R^TL9qtvjl znW>iba#<aXr_;&2=;wn$(Vlk%BqSojMAVj3T{cNtE1Mau0|4tyt>#KMz0xJGx6Vcw zTJa4VHfh^L2}xE6DQ=K}o#MGAwO6A@q7UA=rgpV!n#OydWaxyT2tlaT+eo@40)WhE zEi95gM<QfKM21xw3YZkxd66kib>*tEnI6v<v$E*rMK3c(ueLq6B@g2or%cVBU8%8} z{E~#Aco#>vrs^=|$L;%E9Z_uyMcQ1Fc9H-QLbpi;It6x$jH#TF5M$&te#ZwECREx; z622yNcv#JfjwyRf!$3g*leRly_sr{Nt&I^;?Oo7H<wZt{>XMq;%_j45QRPLJ71n6g z$@*6v5MA_F8?{)HV{B~l6<fLPu-TkV)$K1?iOHlppEe26Hg!ybd0uh0v7KfaBd<yu zW)Vqlj|NGR)|!n@)=6eclekl;W?m1*fpw$&-NyxPrtqQ_Ww}MfZrG8p%G5obs=TBp zSdAH6CnI`;j^hotSxt~_i-^rgjBE3B0UTFEOc!xDH4CI4a4YF=Rmm|)8d@5z<rHNt zHAh4eLS={)lQud=j;)zOveatIRN|XKkb&Dg>$5QNl2CK4732mGybn#|n#OBQ#-;{g z><SuL5w@Ei)Ty*r#_KlHUAt^EPfv=o4(v(G0KjAv?3xL>sYmTxqmG<Ry-&OzBDJB; z6J8I7XtC*4TB%Sgwel=x;RsAD0>CXL#KNh%5oW{{Pn}9=Bt=H6WY{z}t7*JWy?;ch zY)JJ4tV#`8tLmV=SehdS(gL@Dz-=-kT~^cXD*;H&C+iAvGof$$ce_rQ*qUfVqrd8` zXv_7D!BeoV3J_5ekeDWN_@IzNt0Rf+p|(=l^BU%XO<q4GnTc0XiekhN*oWv`&{`SO zVxsAkl(h$SEe)_)H>AY3!<<s{M;gkuj?nEGtxX<y&7UVK8(Lm`-T2ZnwUIY^N7wK$ zfBN_>xhvmI46ITHQ4vN(J`noIAq1dyHf_7DVPlHNUBkUtx;{lkq&P+ikz<TLkTrTG zT}?1Rmj{KwcPlX&yWF`8cwK7LS>`je`x}DU6(}PKg5yqh#=_FI2CXNK@w)XQ{pu=k zw6Zr|4J($_%Ojye1%QeuYNB*1hA1&LjS2AGz(-PqtQa3`hpe)~$k6tnuyp(;rq^o! z7dNqMf!k16;5v@T%1XGY+*xY}HiZ|w4kfGYv+8V-wdvY$xZdA)&u0U;d!!q0yvn8+ zCc)gKv_{03?q~##F;&{hrk^Ryg2cm-A{CV;@hnl25|fQ4LRuLJMI^?sa*DMvaHD7S zv(#I6J5DD*S?NGvy@Ohv2)8O~VGv;W%&B&pP(-o_f7<uE=XZtqW{<Z3fFeTO7DLQw zlDc$vzXM(nxrOJ5lqju|oTVKhjlj%`h@)&Iiu@THeVx^8+GxXdWP^BH&Fg8;UD(_` zt6kInXx+>ND?_wRS$C^#I?75`ySD9s<4y;e7L!=It{eanY-trB!WacH3Ij6&MFs#S zL?%Qb6d|RABSu652p}9K0w_wIfQXMh_SjvPd1*D={D;2=-n|Xw{{v}3>Lr~beX9Tf N002ovPDHLkV1k3DyVC#w literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/smooth.png b/release/datafiles/brushicons/smooth.png new file mode 100644 index 0000000000000000000000000000000000000000..052e2452d13dca7b58c3ed8b6d21037e0595ac00 GIT binary patch literal 16428 zcmWk#1yCH#8eGVc9DcY4I3R)GF2N6XclRGBcyI_1-2IRM!7V_5;O=lZ1a}V>g4^Rw z)zs8%)$UHs&d&7L-Cu-?k~Ah7DH;F(n6fewYA>zH|0@_70FX!@CvIOlAZsy2F#xEE zLw_(udFj74lb4owX<y2%cuT-bgX%1!>-zG9`TtiW7(LwU<>DJRSw+b=i*N7%YD}%C zC;|YW0%Rq`G`tr7w0im)T)WfV*)=LrVz7PT*$-{g4#J-;H6rJawG=S2HZSIj$gYLQ zc=9UotkNo((Op^P5)4TG9agOME|gIFE)&^?1QHA0f17UPbenQL(8d{PL3gx$dwl1& zY7|Ke7>#A|U(cN0=1?xTc(UH)8ZkQA+J-;%`Z&wWkHk?t_r%JKQ9f^U9O$pr*K<By zI*F{lm8foa^}j9J-Tj3v@3|VVbTm$}zaPWfZ!YD}PL3+<d~~&9*J32%j|2n)Anb>! zf=6q_%*<;`$vGh-D5!VhXnN@*{OL)=9~Tg%0>GOmvu_vNUW<W%H-IP@C%D1V(~UP^ zC(fS$6{wZpiljLE3M(su0et4mR<%qHEyrC?Q8b*>=wL8Z7LAA;2N@>}f($e_uDEZW zeV(ST)SaJOcq<J6OB{Ul(7<5Vky@&d>VQ*toc~{SIwK$9T-MX)2|5T6xM0~uUmtBI zjE&@V*+jEdcc5l<m(lZBX=u0>@WA+^y84tg;1owL!%{C~U1z|1iAk-F&H3P?*=}E6 zXgmxR_@Tk1K8!E<_vX>c|6E#Gxa0F4sZ31JQ-bot?tow3>l<~UmfYQ7Akc0Pi`@4~ z+ODxeX^eFtxj!>M;Boe}!})CHuj2UgR&GXL_v9CAk+Y4Z2wGGqL@Lza(<kA}k>{t8 zlUJ*aHFjHyyzpC)C>uViSUBGvSWGg3qSc+O;kI+1Yf`XG1YfT$PafR$AruS+a9~-V z6b9*p&pXAhPiZ!sJDGML@<?srFz2OO`a&SMx&Kb|`@v1ZbV#b|K(k^rDHs}p3P51= zA6yhG#>gt}@18F;*2V-5HyuJahwas!UqdZs8kk$$#~fuZo=&R$?g}WIkM`}VjdI8E zYzavUMcL{M7zjqP;n$Btr%$Ga4nLr{9CC%F=L-#C;HTd`y!u6|EUCkVE_?lOM}v>C zfY)|U967)5-|kzx@bzu8*D3N+r7AB^aIkAsHtsm<Z8Sy&2^v2h4LtulZEv-^FI&4^ zKAq>93(B3Xqhaj0JuA5WO#4(x*?LZv`|vySW1;5}OWbQbSI(8AM!y56_P=X6zUR4h zL2W+Q{+Av8JdJ!qO%9yIu{??jqfQG==uo$RJE!K+=(n3;4rF}h2NoPDql7MfWaf1N zw_|&&l;BMG7JFZ2uI_T}DT|&$>)8yt>lU7v$QKn*kH2ABcLG&CldV2jTv1(+qEcAT z^|{@l(O%cp(u-Q3sf86kuCc-qZTWf9m>cb&?_g;0KYBe%(=62jdXOZTCK_6?$OaOn z3c=T`D#bkMusn*@eEadeHk}nJkk3OXJ08c-%)3a=8>K5}v-2ztfDyz*!LA#vA+)kt zQ7#KQnaV3JYmb-?hSd~p4_!;1c!20$8AWuBLn@Vo#3Xy3fpZuCmVz@hWIg#4g1cH< zjmuX5DgN)avG1dL$JGQQYa0Wnow%LGJOK!Zckh5it447$gh0Sz;otE5LI6Of7QZ5< zG}H6UH$XTkroriVqtnG+`<aDxtK(9;-#ul!;v7B*FtN&5d|&XsfCobE+@EorUTQ;} zIY4>zJ6XQC{ciU3r1g<ysrKn9Dqvw^^}cD`{|x@THCvjHP?}I<Ze6|UCFp-&<tW80 z<<M_$n^9z%9A#NxPhUnJ+rL*#*Zznt^1H!YQM@t^k|1BKJG5^w%P%1Od0dFM?eAek z;X+}o7skLAGp~~kFXjjrM!}y4YaG<;lh)#*(l>aw_0~ofsqXCo74?Nr5dpppS&ZBb zy<8}*=ZixJ5lw54tj0PW?vFc3#i+nH0}ei-ELQ}7@P9q4_azS7Y5geFL~(C(<O!@( z)dKEr*KU_OZWdVuy~|H#pLS1k9pVO>TQZFV-B=zo))v})R=gG;7W#&AhX~>ZCdUu! zQ;i3YCSyC!JQ4GB#!pVUes0eKtPj_ePmcjlzs=*?A1Xy|OF25*8rS|=KW}KG_i=>$ z_v?9h3|sJ{$8C0KsK)yY0dJSH>5fMoHr%&@o_C99GXZzQ>d!OMJxCqb0>;lvHRWkA z=vqA^O?%*6gLiqwASUy1#<s7IyoPFgepzJjgVFIx`<Um+>e+CD>#0wkC{<wY^Wt8n z5AWJ9H>K<U%8J^r9&q$BS*?<?Qn)nF-?Wt#aV+6Sn@5LBfV*Dqn;<L~;%0088w$~S zq#=qkLnRAi7vV0qi?o~!n<EV1E4pt@WI{sX+d~G2=j9JJOQVNAlFj{m?sF2k%ITbI zY*3utj`3?`R*KnimCQ9xBS3|P0VsfIxas9*uu7$rg=DIxjgRtu*Yx9w^!?-7lg{^c zb``Qlw2KfEMQtGpMK#)JNIy8=R^=58%)&<ma}Gkix^vS^66ns`desvo3RK&b&1&eZ zO^uZXL6a<~855aC(oI4jfT%MR@a#nb*!nShelkZw$|}osJ1iZ1ehNFOPOTEq;qsu7 zP?txZNQOA~Q-uI9Fw|TD=xPECfS275WUiT#Bu`>HE&9F2B4|Wg`fBB8MzZ`)^Bw6D z6B^48+E-9wD;O9IGRFXSHLXXZZ?wl($SAImX&pWF{@I_oAtx+!FJE*mrPXV*QT$e9 z<UGue0#HjpUS0!ED9{6gh>(#XWp)}us~JPLX7BmE?#_swj<)iEk2iC=0=e06MXE9V zFX5vkJHbs6$Y$YGK&L8KNW6*0^aN?7`@>lTk>a#k+p3A*e3g5pq9K{^zsdWP=RO~< zxL6=i)VYgf9l?nN0fWDl7yw|+Yn7$ev#Swo-}Tg{1Bv$uUI$;5mB(mn{(QdZj5y!e z=nDmHF7HOWAovPk&Pbp@6>t|xy#riL&Y{RwSQGoEJMU_&aWDSvmeqHRW^3)KU=0q> zxxI1nEAo3(WM*dXE*;}1$oj-W1rc?=mSlpfF$}3u&Fz=lJpJ7hb~67LVZwG8l<RB% z{AYAie_X^+e{KJAkX7(jqur!y<ZG@;G}5{+77L$wa%Pc@J`eCMud-2t2SM(yp9m(R z(lcI~nBwE+*}=ZsT!FXW@&<U`-ObQZwp_GSXLUVa_1u%xWykf~FEubt|Fj=@4TRa+ zy_0;NOj36GJ;lk%-EqI09csXmh7de&dxd0ZYSrA<qMIB&@<sjW+t=SkL(3Dae0$Lx z{lt5Mgie)qYl3cfF>iS*4ePf~N+Uia0kE6igYra)5*s5j;*9k1Srq(ojqlMt<|21? z!+h1-mWWVDerdrHkqvW^HC4iRyWfBN!#W=`?)Qs@`J7MGY(Lcb%b(s1{`?*<bbrdt zoGHuVyH}bPZ>espZo81ICP!jkQQB6QEFWzs?D9C(<l=FDU)^3lxE<@`VZ`U>Z)^4> z-f;^z2)D2LkCZ2bnz&TmJz&1f<00Ye6?;F)Ru*c%m&4DZJnOXepLuq0$klwuW2E#C zvxRS#c8*pyvx^O!(s9{*oIgF><rz|Zo)&oHGg?1gE*=fAe#tFwom*ax?i`;+fj*?6 z{$r%{yI~BtiFo6*hyna^FkWkXI=m(bK3(fLwf-=@+U65SA%q4@Xb_01u#gdNxjOm5 zWjGRqtm7zb9qlMuxqe!ivr?0Cx^B@-%U>M8udfY-UHMZ+`?afAn(gR<Rh*3mS+ERS z&sqYmE)PPtJDPDnp}@dzeJ&%KYV6K)Vlw*9bC~bbHQRk30>9ffSMmI;P7%y=vGV`4 z$q+n9R>gmTu+gP1Ok@{<?;EbQnGRrCy#SfI<PpoMCI#VK=8Pf~AU#vr_ckIe(sHYq zpyUOzt@-%|uzi=U{V37`0pIOf6T<c2D4f`>F20}Gr<XOz%FgF!LK{|n_hLqhcddv7 zn)Rb=O-Tu1GO8A`3AC_qCUG#odGca|B=bnE!U%`M^iQT~9*iX>GUZmU?e2+v5mrd- zfd0w8{?bf+7g+?6D@nP5?eQVo$ZgmaH>To7=)rBTTB_>YZ*ooiZwGSvryq4yEi>rR zRPjl0La6XX!TltK(XKB$5HfNgdp}4%k(MzrUnY{;L2t!>0CDNVTlvx3Ki>6x3mF9& zi9BxLbg}L#n-|M6wa8C6M!l}xd}Vb1?BDOfm^@WPQ_+XABDQ|}5n7OVXUIAL)@jO8 zXkO+<LP7}v^WRdKhOnoCQ)y*YX*E*_G@Bgmn}y(7?C_Xz<~C(2WU4IUoL|R5_sEl4 z2>QC1zH@)c6#Bx1W)-&Wtt@d6Y67@RY5|{GoE8QS0waOhq_PAkj=rlRA>qpaELmu1 zU@#jpL<Wq5%2>8}jw<!IlX%`0xR+XKS7nfUv$0gH{jV4Hvr?B8(&WFPb6q4XW=b_h zHIz62=f#|Epf_jH3t^WcHVw%V#0qsr1A#-Q!y@E(cNs=1!@sF#u=j^JfA6hT!dJYy z`6**azX&;q=4IM;S@S-3fP#<!7Nr#vt*Z9IX`Yb~dWktrWw0sr$U8ZQ{$I{Ho|l;4 zme4<*YBIBbQ}+Tkp2z?&6biyu0h_{qYOrt)qjnv6{9%*7b%B=C4>v3|Vi^nba(<j5 zj2b142f!Rd_E2qx9oNfq!ZD(aEb(x*givHi1HW~at2PQbGAIy$AQwv$cCwo_GT_5n z>CUKSsFG>d&%L>fWwhF&7ehHHo1LHfV-D2Qq{W*BIj-yDgnrR!|7bW};NY{vr4m)Q zYbz^lo>!)gQ6+QkCq@CFAxKE^G`;*UhXnM8I=QQ~#Cjxkh`N!>iQ6WGI-Cjym{W(C zL^EVo{kPgTM8+G|4+PTCOh4WIrVKbqIwkiK(5$V-Qsh`V(Ou$q+2KGE<*Kj7g#lnB zP_QcWm%3@h@Blto6afu{04#jKgeoos0vpK5)&k6e-JGbVTIHsEw_ZudwSVf~Ql%T% zZCv^3=>3p=kWq;J_}7nB#Am<TYxBuV2zIt%d|MyGi%DzUUu2ETD&$IK<MOgbDVwcX z1A%5ut~Xhqx{y4}Y@h(3LIn=BgXS+rhwr$MP=ipr5}A(LNkh*6&8pLgn+tbXLsfO^ z^8Bu!q<Q`wPyaCe%|?vH6ZTJsDP6ue$rTT61Np4#WNww);oWO6Aj-#GVg5?V6e9#e z4qycWqM`uOdWz=@d?Pw`ZpT3e!rA|Vs5in+U{)KO5sjL<hkqRA+g4@Vb_JB%c|_X0 z+`XEcgkAjHJdTR0d_*25XQnpml>M)7I)68|pKE7UTlw36d){9EJ%|xIuywuCK6bzs zIL-Tsh3{*30xI8eQ~?v>Wmn)FrZ3k>LlzB$XmC}t8W_tcQu-Y$2GHO1cggGXc-ppS znkcU1w853LTiV^#eOv_(XHzc8e0J#^@j2wHDVuIK-Z%;0UY(}}{M&TE7M@y|7G`6U z0f4N`Xn~Zbl4cB7bpOWn-DuP<1{alLiFdeIAq9D16eCRfg%u`$W)kq^qe{8qT90>5 zf*+kvrfz<d=%#!K#1?U}{`TH`{nq+xmGWiPiB8KsmaYC0!qCnp>K!2-O<jb@)Aci| zO7m8gfQhm3nzqRECvB`B<jdsjS>!vZ&(WV=j+J0nFf`#uep$0fvTi0T!C3LrfZfX5 zn7;hU)kz%&($p~?#{=e+;k-=Ik;80}yZ(9OfW5z`e!J#<|IDbibIEf>oYys^rF&Y^ zq^=x}H(=@b$_fZ8rm(H^o9q@J;=*M=!emakYJZ6$^HPI@t@=o<!;%$GL9!UY6-OA$ zJ<D}<L!$^Dnc+~22ys~S6scW1)s_pLx?^s$YqX~)suhAexn!-C_r$MB%k#^27tl<% zI3CwU-R9(^ZcHv9QulA4*!37B#oP18z`#VUeHTi#1U}v1CupGgk`gcCg^V%Bud2l4 zcKhJ{Em=`!RmIGEUm#B8F+o|l`Lf|_6((l3h`VJ^s?mbJ{0ClztGNqS!RuXF-FZKq zUYagN>{EF<&a^ve0$J~kiKZ5h>bCn>!`hHW2js_BG!(gLQ<BKQw+1`B?udSa*3)1J zec9CSCPcpIwbz~$>m1KDt+kX{8Sh+8VZmN6QOC_#rQOoIh#B5lzr6!-%GPm{XiAaE zwdsW!U9#5G4L`-V<y6S#U(ymI><5eA26(Px3qN+%x16d7A<>2XE@F4t3HI9u|2bN^ zxHay8qqBI;x{x~{v4BEEQww!mqgbcZWX744;*Ka{WEj3oT?XZu?@2$R<q&6|`OI83 zgiSxvU>~pXvwt+#`}e0lVyUtE1L4R$<uXx;U9-!{vg`O;Tc=pZh4w|ZKZ<_5Yx^Sb zal)b^!s=)Qo^E|cAN{LDwCg_$bxw9^TT0&&YgRB&fc`-u3~v}F1h&LcYPns@uh<v4 zOGfc)SwwJa*5V6Cwe+~<g=zKbqMnFA%eJazK<848<JRcD3ZI(m&Sw0&L82@@c}Z#c z2LiNW1eQ$*JsJ*h*LHaJ54T^2hFI?JILYe%KPwTD?msInL|v94M|+!hw}%GLeaN2$ z@5a+azXtsC%xyj;j4%N@(>iW$*PefW0RmMzub-<#GmDUbyEVU!(IBUi+8G_=H$eF8 zEJo|SnVDn%>2$|klQO2U*U=oj!J~l}E64j>#Q%;)8}YW;>n7s)X)oaH*?@{1460pV z0@jHr7Df2nUIAw*&wt?o_q+jGh|v`JLd?p`j=O}G)1}7aFLBH8EI8Z9d%$e0Kc}f? zBZ^Kr4nz64>HeuIhXwVO>?I>rM;ZIw+|bCgt&N_Zo{1nuZdMiuXubctCEOA4!A>@R zCg95K+xyMQbCu`8RRIs`{MQBNp*2ChzPNbF<7r5csEeV#rsSbp2T#Y-RWCdkTMJ)1 zpMU^wTl(-ep<2^vyRX}>arnoVshXdixEix_TBz}0G3D;}jsH*oY8B~oRXXeIo~P8D z%b;e$aC|ZJRMl9|OIkuAVoQi<v?_~w>rT5*g-fj7I|MNZ1Fu3xt+U{Gq4h3Ezj2I? zqb{m6*GT;L-bJ?HzfnKWKL~3zVMSt|K#y3O+wF~lN})F4j_a8O&&7HB88_C{WE0xm zYCA@2>x-t~`P1{8f6j_jaJ>olV90Bja~A}ZZUQq1{A}*D^aSV0ZsJg5fQzJv2K;-| zK`<NByZn=GS&*0g@bW<372T*hS(er~;AH(Q1xGT)O6s+xJu+B{!j~~OOAQ|tFPQD` zt>6oGq1x{OqjwS4W$TfNfpH{=&7-q6x^u?b^t~73aws2i(SQ1=6Par5^=Dt6UzP8T zQ+JNMkK^W=;pTo%w7a*fKAJDwA)T71IgAr5&Ml?@hU%o!UNf^J184|7bEW%jV093M znhFMnm6ZOiT$)==&r;rtdX5&A0M9JWYE4h18l+p1&+*Kp{rwzXQ*_sp@QtTtU$p-z zer@Y=ZiZK`){*3MxxvrUcj*vOFbl}7jHpp65De|bkpe+Hsn@BnAy55ZuX0<Rk2A#S zo`;ZH6&>Ik2S-G#xk7O`cm_AricP%+JU&86qYRNCfNezUeTJ&0<{T{mg5f4uK>1!N z{7U&1sMG>}fhlN#kZv6SDF|etO$EjYgq$ocPfu!Gr#<)bQHuOMd*xx~eKwWicYVTY ziMO$s>C2NlZnbMg$ecv|!cVDbpg=)T(RlPO{^Bf700cPNO0jq`03j-!!(3>h`!IYk zECeD2HU&WwX?>?Ns~Q7FzrQT#v$E85Z871F)x}vdoByyRG6$+J)#XYhabUGfHqH4* zWfj8`-C!}Qbmt#$px+pADuSD18&acM(ZV%D8`z{Ix{0Acr=nfU8lAelJo;+A<?)>2 z%93Nt8d;U~Xl-<Bf;``;1US_~R@G8c{e@1j2xj-tKmjB=aZo-U!@smvtW#=y^}uqZ zrUD=|Ft(S$;YCMSE(mxp#Tk+7eSn~ay#i#Vjr}uK)wNoiJ6H_J&b_#+jj!+As+F(3 z+!eJ6G+kg(&TCrW^^(DQQ`MT4VTHzgP95f$pjU#!Xp=&ERQr_?AX?cwPs;Xj)pR@Y z>(!P3O=W3CL&K(YOexZlCP~Bx5C#y=)=P{R0f~^og<?fUu)}`X7Gd#i?Td--6BFv> zQ4%4U7-*29hCup>fs+4fi|h;nk5?+wq>2?rULeS?HkOJXW>z-rtE=xyDX8s&)e-ho zd@fLV>2U(nvLF<wHc@vUjG@gFh3r#w1Udr6e7S+X7;7sKFBm7droaD%C7PVIPmVG6 zJ-hl*@qReDm-L9*o!kA=y-WlH`g05y0PrN$>;VAwGk88oPE<@u$vL^pkepZ}P`Z<G z^)(6zOX*b;q`ToI{s{yo!xraOFP%Cb<Y-9^8;{@jk!8R~)at;Rn82&GW@~E|@f|gs z+Qjc(phgsPm<kcGi>fgg>cZTNj4U2bo^IDio}_Ki_P6l@0u2EVbFdFvu^VH7{KV7V zoIFhotO>dODzv-w?0CB2tj<<IFr6Ihdp<2<3>B%NP@;wTM(d5T&?vlwH`HMEZV7;j z506|E6HgR)L9_ftTRJf%|5gA#kyoNX_zN-@AJ7!fWL=&TAGV~aPq(*G7rr>kJue;h z%oS0iybAc&)$UvM%l(x3`DTg)892KWdirKO+ZN1uBC3fDfN;8z!ARc%Tc^~usklx^ zqsSb~*kWI(C885NM{#jB)i$UTo0NqnFIsaIW{ya}+Ecr;L(fdF1Q+dEx&g=Ez97#y zWFTUoSo#n~QT<h>?3Fb#A_yW%wJzcF#-lQj8;ej?HEr5iAUz~$Hbk9B{Ca_UsVJHg zY-;uC-`x)5fd&O|)|M9QcaGkXlAhZl%r;}p0|fG}HPq{HAb|#nz#+DFnoi;LnMVY{ z+Gnk3e3%f4K|ejsvM*#|@jmeN*vY}#KXDST5?)JQ4`ntQaMYG&Rd}rm`MQ|-I`+)X z)+$hiST)I5=+4!zYBCc7rF}C|)wwUzrhu=D4%_d}A+T8%4WrrykU=33h!~v+zwp3{ zLRUE|x+s-At<F4Ycs*I@%*LL-3d4dr-bLjx=B>Ty`ror2%2tO@9_O=-tT@r{WFs5? zJ<T;N-6>O4lvg)>a`<>St^QewoY%$ow^*ha!EYat0;x{9AShLEAUc!^7Viqm69vPl zK4k7z2LWhOG&TDX1w`hU35o)|Aq8VgP940)^w}T1zU7r}e7SC<iY6FK(<RonROp%X z2{66985~_#ccNbZ6)i8mUd2Sfx_c_QD^_?KW)dokgan8ZLt#`Q(V0V~PhHceql#k= z3pMZ4m~VR60}KUHlZ&4>C{MliH%cQ8To$sjvzpxgbZ-9pol>6U4(($iv<*gs1pX2; z2D79?$hH39HOrMsbjr1U@*ibv<fj$~vqNhS#dH|<)DH@qeA|Cd;8(`X!n&;97b7R^ ziahm*Jas<$Jzr@H*VPnrXOABL+M<x04Y=7>x6|e>n&!94WNmlGfQgb%g_Y#*vV^fp zSbB9bqQsU2=3y0%ze9K4(69!Z8vhczoHY`;)_R{3Gbat>HVrR~+N&bbdM<5LmJn|* z_=*s88E7z3^g2f9$F<)4L3he-yGT7Ib8Lp|_3h={32SS{vr_Y-xM-bQzcJjNAYlVG z25C}pWLWsDqd)CNTP};BScCDp?1A3(9kLbpbzifG)aKFY<Ng5CFm^U&73Tfsd9yE1 z$9?Rhl-1qbSBiy(X1}$!K9B_d&W+|Uoe4Ui({r`CrJVaU0|!4h2LKc0T^8e&Mj}G8 zOjgzEf`xKQClTmg&oeZiF5VU#Sa?{m;7!<@?(x-GSX9379y<olkJ!gsSl#v(V=hlI zY1kZ8R{iglD7?|3t@l?;`KAwZE!yE1ELgT!pf|xSTj(3<N_`&uuFk&w<YRn-a^Gz; zH_yv+eo&M!?<CDvMJp+=Tq=+HuJ>SjA#>N6YpX^4Y3z93E%v|7NwRjNqEDA(?-IG` zf;$)<pO>^-9eLEHleRkVG!+|z=R=?X2#nxIaZKNtkR?}Q+z8jYrRygyNN#Z>h=n9t z@N2A<q8xIdoA>>JvBNWovzMMH+P}Ipr=|N{guaR&j0~pub&7b|F6(2M*FOJ6L64XA zo_pHsXm_{zcX&BMWG!9&u%1CvnpjiQQd;$nr9U<Nf|x-MC&lKSXBc^GMvIpC2lFiU zv>Y_5c!Crej{fZhx^^P0`w`1J9UipX&1q%I=F`<|oo*k;mHf|-Y0A0d@AoL57qL&8 zT9m0f>9_HfZ_ebMnBLbO_}Y}JJUvhfUR^Ei{Tam#iFZbT>O$e{X>ZU^DhfFsOn;gU zW}#C-U^?B9yzM{ruq%7&lwzJO*w6aeafQ);9y7*#emkj;Eqld#AGN>ooSfWWh}<TU zg1v=sK_-6|FI|-dlUP!tP`-S6I;(`|-ma3Vs1g#X0fQ3Gh!RXKt!&NKOaVn~PbqQ) z5i%f4ompkqPL<$pOHfVGfe(K3XjETboWZU-N~A9Ur^c-0G@nP=GoKGbyG1?^opYCX z<evPuSz(iW`gxnMK%+t7ez1$veCy&}km&nHr_-=vEbNcS>|i7y%hfaNPh#xbBX=*k zQOz`3`S!pyGDi(TQz=D-<OW2T2KCD70+&Fx3jWkGuBK*Xviv-^yM$R${%zoTPmk+l zv#5v7NsRXDV<`4o>E|y4SUIX(3xvN5@{gv`WBk|pF6N;?6(;kmJ+sgI8?maP&Rp+6 zqTs{kT}<wmm<LF>wbSN^D3qx%-7_k+zJD5h*k5~C&=#&KQ=DoQ4R?WZ^Ky&0`PC+~ z=5(-AqWu?L+hlRoblNdHyV6UaojJ4@r8VC?Hxz0?_08J#9RQS$c9+%F5)c_vFsR{X z0sv+9|GfYtAC=W6XG9I7D58;p;f&kNyDRx(R)dcMH}bhpqyKtucJQQmD;&svc|ESi z{mJ;{;%jQPQ7BG?zEjKaLCj>HSL)^buN-?h$~z15hWaFSlPEhH?b*O21ftU^ut^{g zuM5T8k#4xD{JWfgAdIgTIV55H)b4Nv3P>c{l1a{z5e7OfHeIF^8w=fxda`77RC%|h zsxs`zdHPdbOx3-C!w>buNiT=(csx*9Y!AEZrqLG^s#*$O%m;Xs3mxaXZ|Li5<vDZL zK92<L<y?FHWK1g>a)I5|KvhEDqp?YC$k5I;&DK_oE^||t=7`3;3(x;-OWINujYvh? z(Ja>!q&N<3M7Z^K&m(fvjYhfVq+J%wT;(h5F3VJYT6%9MmNB5j?pmel!Kq^^9dxuJ z@=J39*B?%#1J0+;Uu|ywEYGv_?~aQp26qL;cNEpwIo?Fmj_mmIqz%34>4LTEEKP8^ zm3I6$tuXYWv)=k_HaZ%&S(%SN{K>cEga%fXH!i!{{WLfKkVZ^G+VaUyuItwaiesat zWAwRgyd;S!T1jrX&?i@G7Q^h<qL9W)1F;Mp8&NQgaVL?@VGv|VYk^}pk=o}~duGu| zar*<NW^<Mt%V+RHo9meT8w3Eh%pmtZ4he*atI*@mJ07aJIhk!9ZW%wO8mm8uv6}nN zA2+fp#KdA?jz*7TU@Ehw&?5upStC1CAve2*@Jw^)x^S*7miwp<eeLo@`=a(z@H@%N zn>>@6t1;0tm5MLvb$Cfpk-K%#Q_Bh*HtC*!mSz@Lyw7ed4g2+Z+!}szmoz6TGCf|V z<uK`ZP~m4~>9)GB?Yf@k_&ttITO%-HnF+`qZP#K~{~LS-kmnlKf}mS<A8MF}e2QKI zM@{v+;>a>58L+9o6+0ZX4inBUaU$`(4ecQ`FROxtC{E*Iy!G-NJe{3>kByc^DA!bC zL1)F@pICPPisH+cxm85h!Ay!>UBf%R)Ob@C;=2rMWgWl_0e)dIe|es+x_!(ZvhZK+ zhdukSLM7OUF+yQ4684x?aZ%AzoSJ{uHVInj#ItJe^T00rSwv06&|$2_>1mzv=^wA- zTCG;<YF+hLcE{-1ep_*oXEf^POxb|7*xkD`^lFL^`0~#)Ld``_vwHzO3W}LUv$Mp< z;gY**3%m&9&$kCo;hP5X<3&N7#qXu1`U&eASME(Jt$YtobG&xP@F3myC+%%{bI(&p zPUBB@2je1JGCyAie187Pdi`$PpyP4~`?Ses;Nap*oS;{lvNrkxE$(aU&13UDG<=5> z2k(QOFKYoiznk65pRb~F#jUE+<%e(;-f;{Sj{cdU1~w7WC#80W>204rd;3!7vc5vH zvQ8u2s(IVE97bDRb^t<MV$zjLSkP)p&mqap%1pnX!efmYV|qAU^s;ksctk}zw0C$| z-3qW(XE;d6>w4<A8BQ|3NqUBKevY7$yhc-Us3VVVP>eHpOO_+U^u1ZTer|4_3GogZ z?66{Z`+p(r=8J#lu?B}7NrS_rLDg^KIB!4i_Zf=s>IxH0N#?p?3=Tm)CyQ?}4k!Xj z+6(2iS^?M+Q;Lgx=%_DG%CIF`)J3T$t05(E&geG!tr>p;;;~v|LfN?{&UYPa`ul=g zv#X}tJp!Jy_@nCxTYZTT;9$|v%xL;_@DSlii)z<QT7?M<7I%-SA6uzCyabuU&K4&9 zO^eX^^%H3|H6O(&3+=sq8w{8@5zt^<D2x!PV_wbzyY&fS=xL8GZOeha1;&$|Ljsa@ zCDi<oIwWW{wQURXmhO4dEvIWg04mhPFuwZuhbP8U4CT=$)<`jZUZ<OX#T5EWvlj6F z&C#E0)#O5FT2xa%ZRW3r@?2}Yiq|y~EtG-=jxfLawVSY!o{kmcac=dzmrN+yHQ>=_ zun=4ot!OHb&qOlOn&k>moWZkY`&(+3$0tx<Vp}_Yn)lH>*~izL>JRtu+;%T{s;nVb zzPBKZ4V=)!+^3_(g@u!BsXMK?RFrxEAttdFq=<TW>iDbz7W<$tV-=g-;(asPIWGMA zc%kkM`02p7y<_eTCYrnA`HgtkyI%<iOZ3V9*Km3Cq<Nv{Kj&Y&CyN$p^2#53wt6@T zE%V|Vc}U-fICqs=N@wZ`XkCJW#dI$|A!;KQe5*<ha!eF|v+O0hZZ+9=aVfBb)M4#! zo&r?Sv@m={RgIKEj()Y!GDVVtQQhp?7bQ#8Ry#l{dj~A_VJ~_q8MR+=<fE_m`hHWF zecr#i2r)lDKkOBsqbtqJvJ>%%L;~!3j3FYSt2;Y?>{Qy#OP{IIVA_O59X<$}UQvR9 zTnvU{bPQq}-4gt5zTh>o(f{Le_kanqQq21=NOkt#aSzl=nMM*%W@&Z%i6e%cr%8VE zCD~Xv<u`}am>JH935r?nDLU^y;Es0jG8*%NNeiRdl|Ixv$bB#;6cBRWY7#H5I5fNO zkQ3vha6&B?tmttOc1V>EYWDix^afd&okNX2m4HN^W6});*gh|LlKDbM998ee%QY`Q z$U-zyWU4;=p)d<oH&sJ1g#cA7kcx@}H4NDu^YY1AVw#&;9`PfUkH#XJ-Q#l*q?2I= z`Gy1Nef!&pX&jxgPSbiB9mj>}BSeb$B}ng2hbXZ1gSaJn8Xfdo?8LFf{&TZBH!k}o zN(I4qjS9fdZ%Fl)(g>5f!jyEcW3aLimKVZ`GAdUgwoBeV58Rlp=Gsviw=Tk^`yM>( z>_Q)#_|i<GM>saJXrgh%0GOm^t8n$ng*nVuhr0GPlrZ>{Qi21!8T-<1G=~yn!P_(~ zl{}|cSWWUIx?KU4KX4eh2s`;DPC6C9;rzSd><AKST&rZx2vs>+xLSrR+CqotMYaHM zw8EH3!1gGN;hq(1stg7S@!-El*s=PwEjF|tH+|1wUBty*9wp$sXl9imp-)rjN@@_w zRj}YVXth+8OfbNKN<j3&Qgjq_i;mH^TZIj0xpimRRmoRFw^&~kI>>7YQR}z84%r)# zdD`yfV5)s34#pPL3I30-#b|*L8BwGrQHV<jWSblv!QY?dsz7Xwn-?uhm|$t8>!B>Y zWeqPVGWEN@G@pOJ=dYJzBDgw5j``oR%sUQ<bJypZcn9OQ2J6QnQPB%84X1BfqJkpq zqa_ZR9xVD?a_{$$&1r`c%LdDe{%bBfh|C|ZWr9YND`b4?cYv!WEf5x@t~Y#fd1Vd# zK8%8d_~w^!_)~$jG?9A!{{ByjJ+7xXDnI#$@T_+X7^qz#F9abpT}FaB7BBxY`@D_J z$L^uM>pUa3yN_zHsMaPI#2z{G8kUe*6uW9tVdzXzk!CSVL!3(@EIo#s3g-OKr88?O z`#$TFwaxDcY%o+I3nI!U1p}m-FiRoG=DTO9kYI#pDJ=Vw;9yPn4z|$_=+~eh%13>% zJKay^BM?|1Isoby1w-RSk<pM|M&lBPk(aE#G{>|=58p{_`lPwE7+dtTQM$LrKf=)P zkYu0$j1}-S^3HL&lN8n#nJLqUy<6asn_&<SPq(}Y=FTEXwUO&>u!NQV!4fC~d_wV& z8C9nvI!#EFcfm-A6$dUAs6M|ije&fL%KkcsxLpRG=43M2WHu!=xQVQUT)dp&+V93# z5+hXA_P|z`H|kc6N8ey}ZUV0(z{~bZT6+Acms$2jN#u3d$GmGDI;h$1w)eKd5g*yY zHdnCFEmy#D0HeSH`Rvj|OoC}q@giP)2(;8giA=I;q5HHiq(j=-ZqZpJrG^NPO9u$K zolcs6G{lm~?Xw60B3(yo*(Vx3kiogl?9~s_-+33?KaxaHsc{o5WwmIjai-Zc6|Nlj zBL=8n6-<ld^ocI~Xqj^qOCQI;W>HX%GisA^Sgf^WOyI`IGfAdzrY4r^eQ#+7pDBu# zMVQoaG~kZJE!5+J5_<kr{9)75rTJ#dc6te?yk<JF=ltkXD%z^-87roVIsUFw!)o%R zIj1i4#pDX10a1m-L-I=^$x%^RAnzsAc8jeYhUb3&blUUYoZQ9D2nyPuA#wx&=hnh^ z-^2gR#7uUHfj|2=%^z0!*pV*2gzRQ}1rfu$Z*^A7+)Mxa{lOvY>z2xP_yrmNPK0Y> zXiv9Z&EaiM==jd!4;Z?8IW_oOUD+Y-k;!G1Wn!$(ff#}WEo(7(aYo3jJ3mzt2@uYm zC&HixeJBi4p;y8CLQLq2qN@oFv1VP?$uul+a?tH)rz5?(xA^=Rrpf!B5EYW&RNy+_ zz#_-om7zL37HjY?%$D02R2J_#TslO8B1$E}mdeP@wi(UdyJ|kpcqN@C4!|aA(4l3a zwem%uZet+MEL0%P*UZ4O>>;9yN`>!VE?U%BC6Yll6b$NRw4W%&u!k=ahJrczxeXm` zo#<+t+4!}{%14UOGc?L{2Iskd@*FRQz2i?y7xFn7u0NmYF6}zcJ0hx9RD&W10U?0^ zc<+7xomh^m7;XMx<Ul#6E&CGw6PUVoME;WtX9(C-EW{)h&(vD<F^8ay;I>I^^+mas zLP+C7nrY4Eiw#l}#nIL~E6alFiW&HHhHUk%m^FX-D`~#Cn32&V_#PC(A$$4pBXnuC zJ=#v`FN|aIrh@%q8;uSbWjnji;lu~5o%$8^i-<H<tW_O30)4ZMyF0x)lg#%WZB8p! z?Ue(p<4Uc*=>R~y1vZzJilja=QoKGaJAo#4^S_!Y<Cs`p(R&dG091e~*x<#ATZZ_T zHfAoVtf?r40G6`fYX9t68$s78`mOol>uF_R7XGedkbr>_5>gnkxvbW^vEqGy*>hZ7 zG4Ly-YoTZ=P}YKa&#S%I>=*sE9nP476AZ1snu6n@^qj;FoOHO8NjSR+c7^X$R~oih zwrxhKeB3DdtefEHAIBsg$xxn2U0z08s(A=NlmZU6)i(Z?Qw4*6DaaR>gOI5Jej+d` zbi!v;29U;c4y8!*nUYJb!c{Opi&)3n!l;mOozR67&8m-*>rt;G>^SN98Wo~43xArX zMD@Yi(^-ivr@1N=KF*7<E!X8;Pa5BSqqUP_Pcq7SOVZ3Elt$9Z!IQ@HlV_Gqt}WB8 z@|gi7zEyw@z>ovMArF{i>;P3iu{<s{+Ix=fUQ4Q$k&RXu93P+prvq3x<EG8xyxCM3 zhVA!q0>LU^tTbf@ovybY1_~PH3HOfQnu(1S#b1OB9I1&78$3E`4k_jWg%5p+yXd?h za;OUCmVd9`da_z@-kJ<jR-yjaY)dlNVjbo<O8arXGL!UU6quxiy`Jku#v3W(Xv!uN z&|5l`?k8N*FECt*i7dmyRve@dfyje^ZzU8?KM;i!u&>%^d3a=ut=Q{4>WseyAi&9P z0)d8(v~efuI|AYK61BgE@@39!+R4Jf7nXOF_{e-@LSQqP#!C6EtpziHQ#*VM^M+>Y zFc8SsGPxoK!syZnr!FxQ{_DYjS~yyrk1p6PB;HOMHy8M6veu6dP1Yo7OHJbsM=Ai< zuX_^nkN-PiNE;>^H_jj<>jE(|TY&1rs+6KJlv#@|B&b!Up&$?t$o4{QCSvE2J%B1` zaab6lrz1IA<F*ebjPn4-NK>F`B+Y0;MXB#Axs-3A7{Ns4J;Vi}rL)>9N{lBvB?uML zDZZ!HQG210af0x_99YM8U?2^E2wdL9DOX2?6~tUB5x8Bq;UG-e)RJW1D^Ut~{{0gV zJ@}@v+}2QE&u)OQZtH3mrKRZo-cXaoi3a=}Zko&+0qNZuuqV*R7*bN^C^oIM0xS{! zpRHTvgglTk2#VSG2+!O1QPa$OT^@JOLe|DJ-Sshb@+zxu^!eTe6}W8E(o*B;LM3)* zYULKx9NFRN#+k-16yA_k?dLDIT>QA__3qrB)%wM^G-VX_OC{_}`C6a$H=B~A*V=9y z;3xNI=BKUh@e3Y&R3nkSp)zBNqska?%P(qCs_nnxgUj0QcZI+>P%rFtpOasgg}g6j z;C_McfAhZS)I1=CtalbBwv-{ge9}0)ky7nWf>c_q64VFcVlR>_99RV~#IWcwCkg-) zHjdd>S*p`aRwHigX_?CJrZY4U^cfp6&KFfNmz8ZhW{&I2{3Ep%V|%Fm_5~JJctqn_ z6zzgPuCLm${T^y)-e5o9rnSF~;dYxT@$icoKQ&bdIm!=``NB)A#eI6Vo^spg%T%Id zeALLagyc#`w>NH-5e!Kj&Os~x>yU;cw72#vP!vq{O}wv?DW;+XJ1B5@<u8)s)-Zpy zt&Jo}Q{pqms<y>P6uc0n%j%I#V>Lm87gOGt^=^hkTBM}yLajop@XFCFO5OWvLz!Y1 zSM?WzU|muHr@n`ilmt9S&--GG=Ex^A=k^4BzBmmmRjzLa=kXY2O&NYySI}73UdYTZ za)Ai?BCUk^pV7Fr$VItlz!`fW8;~Eb`|;wct8q=(T2&9(rLWIGDt-hlI3JhU@VSI( z=@k+q`t$7ek&3H!1!dC?5~$PiT&uNKPOI9b9^|Eb018YZ0C15_W#=9;c_l2yY9o90 zVzYd%6Dwrwc&~nPH<smm`|kClLR7*^`pufx#pvJ+vZV7tA&q*}L6+F{S}Xs4il*jO ziHo}YC_P*V?zz0sMhNvi{|*0YB+SOgCs?0sS6bb4fiMhGiTTp|+sbDDVW`f!N)D_8 z@JRV)l;Zz6I`Z*)R`gtJsLZDUvdXM8nl$|W0Koi68Nm-YJQXMWFvhXpqoiLm@o;!v zKMar24;2P6Wg04@2rtQjSf{Fvjw&meMCUUL(P6!<ADcSHUY0HmrJ}BljbM5)p-DR5 zKMZY+3woNES(OSAo-8$>nQAbQWVlfv|8gCdl2nhp%~$0iU0M{MoO?ni8nG;IX<XU5 zAbHorH5^?K%T31C4?(WW>hRc@8F>?%O_B*si63Qnt--(6lefnDl@!p@Xqd&5S^hpy zuJmU8?}_wfU?M|htTtPk?KO5bArZ9%8#I#T$Y1voN0%V0a98>b!jPh!hX8y#X8y|h zzWQ@p&auxm$j<h~m{w=z(Z%%Q%?KYv=j3#7aOk*LSo`PYKEj2*fFZ?}t&>SgqRQ2W zWSAJSO!g*#kE?w`gDiYL6w&6YplR8$W}eZY%JZ=$Zh(|}p;gwxaKelu;|l@N7Q%n* zF9{Cghb}+^`=~U(kZ}Ujb9Y^%?Zi<(<@sddYx!Da%Dn;vuc9RL5Oq*5aInnvHMXio z^gF1Ra0?qRcZ$v^ThwBzDd|r-qej1bQpdtX&I1kVY&k2%sMJU+>Wn5XF2a(S)!KT8 z!@~u)k0Qc6^OFm1f3{Nst9F@j(7b7CNT>6g$M1i$KARbex27u>5*6udJG>6wRhR!l z#G2!~x4A)+wp)vW7RZ7VvtET+E=_ci;*z2MW?t9G43si0&bVYh`@6YynYuHwRV%N! zxy+QH?9yi|u1*CB2d1K`q5Mq?Tf%ZBE<D*VtM$|EPltufDl~-a0_-{TsLr*ta>>Uj z;0C9^_cBO+tnz%}JRxc?EV0yp7Pl%cbg_lhW3Be0AfZ2@Jneq`^7PlSk>dQD@tm8J zx;OfVuv>%GavScN#k*J|>e5VJ`?RUAM&9Q$r9qW&pZ>4Xdqrt?UyId3Yng@`|L9#L zxWAQ0FP+CS_BDBK=o+$pOUqaAlaxO#A!CQ@*qfpvEWIo!sLZPOubymZZObMdfk}hQ zN3wom99i(oN+z1(j3i7aX?t3pexsPw&|eVAV962MXMrdf?lU;Je?A*4)WCw_mt)Eh z59D_VoUG8`nCTPNF)s}gsKx7A@ucvd-=S;29$<|f<&g-6^LpGNud3Aua`JDX&!cqL zKMt%3KFmebM0^gPV06mq0?|e7eA8ZQYB#@+<t{B8J#xxgtSxP6Yr3Lr_ng>-Fp$3d zo-L<yik>IBj5l#a%&`HLopq_%6NdUe*uzcHyUab_EWfpa7TCH#c+~RggA!^Gs1>w@ zuOnGu_it0MDo2$e+}5eu$)UWFnKVKY5*&3QEA>HYkZj_`{E+Y6wzxd1R`Z{Cn=K#i z*_$sqYEu!trCUTS%0<>iRurwz4bqf8_HJjJF;5re^X|n-8F^1Q3eL2owGM>f&qrqU z<^^@tZT=iaMDYY4vYB_~rG6K?>gFnLZ$f7a<fnCAz4A8AqSelmsE$&k{t2s9>4*(` zUN@&ICv74&`ereeVd39pYV(IOmDSu8k`LL_6F2Lbnz?eBh(?Co*!6h?{a><X{M^oL z*|s})_!399w<<9ya!)RO1lvjT_d^x(3)SBse@{(injS8imPlmp*Kep~(S0T0V-Ah! zxP5ezI-=oDILmv<L*$xs`^R<v%1BqUh;FxTD2quRDHj*>zSUpZ!Emr(ufLcujIj2t zDdBZepfUmS_C=v3(N=PkGq#rqsM+Pzr%&y_%f=<wmgU34lcJ<ahy-Lf^7|phES}20 z!0&golF~Z)GaT~#wkb>nV4QuUrCA;NZI0Wo6m9aCUeJ)%a=-P>iHVdNM2;6d?u^@8 zQ&@(BC6VUJ9y)KvPH;y<1Z1IMxM|yrr-_SOn6o9mCPYI!id*pmq1;7Xgk8^z>m<XS z>?8gPoz2vYfyXBo(zWz<c6cg?lUM@K;dw`l!alkii3`1jHK{aM#1R2fKwuU+3$e8* zaMBH*?P=}xsewU736gcrqg=I{Sb|xXS3XC_zZibUt8cp#57RVRQ#GY3UD&^{eb~X3 z=QQW7Qq(CjB*GktoT;(O?r0!^MyNBwhcJwDafwlSo)j3g=cgDy<iNbK@HD|5TT?X| z8QX)uH*Yskk$x2&WKEk*u7}xdyJCvr+J*n$c1SKH!j?Kh*dJExa_}%?;Ns;Xrfq4c zPTA&jzfdP$Xx3zqcnG&s>@kwrLxn10avOkuCCe_kNxmB+pBO>nxRLwk*4Lym0`Hs6 z`^;UhxjT6B2~2D*nbOup8t`5BGAw~sJTP#*NR{oc>>H=Q(xmKNJGGB<Bhn5dhb?}* z3ELxdv8`_F798+ubg#@KWXNU>+4QaNWWMv!n5W9H5~Z-WyK{a6%YU2`B7zILWXTqz z>Hj&{AOo~`P5rxzsSQ$b%F4`zM7v2LCQJ!MUR=a~#|tBIa;+7eTz#z7+0<H2tD2o@ z@yqP;8?yD%n|Qn~H=FDV6E`k=U}8@1b=}#mlj5sEt9?GhJp{~$K4{+wJOu(#q-3-# z;zZV~ZDw9g`U-2aq@ia(!+)?&eYf=&JBE3;S6Q|Juyji%oAcPJIYdoYSItq6NHP@~ zsIAfdXmn4$x$4kJnIT2U-J9*(5NIl*+!_}>is*I!aG#5`^ec%UoP>z)=n~y;vtzgu z0$;LPJRCIK<5Y(^<p?yZV#3B;=UXFtiOHHdv}B5W1jsy&mlhfvc@yy8{Cgw%+e%mK zr-_68QI%n+{ol=uAn><$AA~q-RqDSH_(+{j4-RworzTVq90vnnF^M0v@)Xqr#?vKl z%nJ=T>e$Ne?S^+;*y}8kV|xFj7ad6?qBT(miYF8)Nrdz2XorNWWzwgT5RE}|*L`0S zRiMU^Goh|cu%RCwr#f$ALwx-WsRK>y7n%NCI3q?RM;iXbR`rhw%+*&emfX@nMjBLg zvRa$j>i7h?5@h!>0GUYvJzHG)1+|6Nixb1+a_`6b$_CY1#V>;l?>Qu7)P9OOn2S0i zK5)m#_)VwOStsIuA*%`oswu*+SA8#^dgdhx9SlDWqIRpKTCSA)JebaEe|c9QpCvc0 ztlE!uzz_bmu8`==qTQKzf(m-Wx+Y`%3kPfv4^E)v@;3kbu#<pXC|upxR)>nj#@}S3 zqoBHj_;32pzp2sfhbgmW6{c5!bTN@N-oj$eFPq;BZtdlbmXEu$mk#ClPGFb?K~ll1 zz42C`oCT(g;TPoKaD3_1{<*5AzP+t@nrqBVnAJ|qcDqhK=~kgZhfAS{h0KG;m`NQV zwoY{*mV&~&R!J)~_E}GYPiikJ29Hk9X;qH94T*6c*Rrz&T&G1L1E<>py2W3O{|>5= z$8A~!Lp#5l5SKi#m;SeZuzv%=K#7(Nj)<mNihMi5s#~2Di;O!$^51`+*4E`Ko6k$n zF609^swFerk`8~rV?fi2*jaE()h@N=Q`vJMlB!W=P0fbToWYc^Py0-SMB3)#pVA-z zYRxna&A(T&@58@5=AMN5FcSQ7%}A%Kq{eyeXDygn`GqgEQ~#Eg5`NquhR2ZBYb76* z-`OBMW<63px9&Q=DixuXiV)acs4Jjclm1!Q=6~4>uWs<C`cUg5<bS<;?99PB6k^2$ zPKwkKbR-L=H%SeZO;j1Cic;sfv9fIaC++gsmilZ3Yc}p{$s6H3MSc^BY^-|Zaw$r0 z12%mPm{D&^7CIvLcaLRRk$3YI4vp5-&)Fbdpo}Whsr&F5hOujHqjVpQeJsFd<xvfg zC`dos|31r>dD%S4gloC^>zjv)p`x4N&UkE2hu5OL=R=I=>=9}(6{8EWR9dQoU(IE0 z370KNNWsF?MUV8`iwUk^2e!6z;nwH>FjvB@s2NJ$9eC8lnt4~0HydrSyHq)`WZNKr zO5`BC!5yF<BYsInGih8}p<{pEdW(E7cPZkl>FntPT*czJJe!|xG3EM(M_k?g5FGFm st-0nx2q<M2WHPa$oIdq0&x(TskOuDGQzB#>`+%1sE2$(=1v3f$AJ=q!2LJ#7 literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/snake_hook.png b/release/datafiles/brushicons/snake_hook.png new file mode 100644 index 0000000000000000000000000000000000000000..f8351d909eead260defcb64673de4e4704553cda GIT binary patch literal 9710 zcmV<KB@x<*P)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NN=A`MplixmI>AOJ~3K~#9!?R|NaUe{4)Ro(mExAZE>+N@}?Wm}4EIo=&7Mr1Q4 zCJ6-M5ON4Pfe8-GNnn68%#bj1W(LjxGlzjNAxt1J3z+~Dmh5E57(0#~+p%ofvMt$G zOKr8f)!WzK_TIf!HGkaumX;-3UIGU4oj$FvzvaGqb*t*ut>3S%aPQu|@QjZ$`H<PZ zef#0Vhwu2%f8IWsT(NV@O6F&mR!%+A4_$k4`11{y@BX<rRb$_L{Z#;fd-v{5R^~R0 zrXRoczSCXK0>DGlb8r9Q*Isr0j%^#(c88hw@>`$1?SaRStoqO`fAq)9F7J1;-co<@ z=;Gq+`)<5;aph%?&o2DlU*8S@BqB%#k&JDaq}gasPK=IiT060M?f7|{*1hiy*8u<l zfU2sBsvxK$AsGTN#<ZG^@pkJi*X|(zP|n3=;)XsSiW_)0^eikQB8G6h-LwGUhCR-Q zZrJt1j_WVx&S%c&&O6VZ#SmHm$otDaAGl#B?=1`l{eG4Yog3zE=$v!jv)~!c-I+X0 z_~)bVecJ__&w9-z=l|`4kDdC1AN%<qT{kfX0LGZNUw7%A9cPEv-~Rg7S0DPVfAIr| zSpQn1*{uJG0Pu-leAn@%PP>t|n`v*5ceCO9KJu5VK6K|te|PQK7Yut#ZqONaW>@A9 zpXl^v7dyQyfBzqUE(-py-}5t|44|MQ!U&pxYgntGSD(N2!13j7zfWWgsH(840wSV8 zL?Ub?Nh?j>a@8&Xu<Ua7nfTnhf#d_u`<}&%Fbe>r*1YkG-PUJ4_PHPS{IKH&%P#BY z&gYJE?;VROG}6Sn{<8O(A9nNpa@Jq$XZaw{2YEisUGBW|9?#IF&g5ZF`ukgd^6|m^ z;rW@zzIfjwAN<tcJePrP|KNYR_3m%{!moVb$oyiv-EJBD{;OVk*7#^MO+NJb+fVoX zuYKfyy!t0^t_Es08h1Z%?=AZt{qh5c003a2{OCpJZ2N($FKRcEE$b%F*|ctQq}}Of zcN{qMv0K08Jcm)Lfi6F9YhulX+ctUTFYY^7zvlkOr}jU7#<%vq@4N2&T~}Ulxx7{N zSCK^6XT7{P*X{K>{b8p!$h=2DK<Ev!Un)#&)j%Th@TWgZWL21jRh)P)K6hz5X|x+7 z-Lb*S`e8S7ZkW4%<}A@~yz`BNJYQJp{q|@6u5!3-+qV7CYpw@C1t0_vQ58@H6;%aL zP()BvHbjQV8cMBAj7bxF_4(T_+_K^E*~LNbEC8s8C<A*DFYJV!a4zhGy|7owg>w;L zQPD8CBBDi1t!X#Y@4I~0(fMTy0Gtn0nAt0PW+y%upZR>qZs_x#&wAcF=e_gZg;*u( zSy)vS2(j5nCP!Nq0P?|#3JZG`$1Z1|iy!)Yz<JO6+&Q0n&b`k)htQXKpZgF1J+r8S zHDm!G?=7mbcrToZ&p02l8#s=E(s}Qg<0#(ej<Yaah^O8=??v>5i<2+NW81cE^g@lb z%KNXl@S;C@|1Zo>?K?g{|C7J_XPy4=%m=E%^?|?ot4Hqo%%PdNxutIAePRdzf9)^6 zdWN?amy-1pqgQRBzrK6_C%=B*fg>|d&M(ie^gQ!x_MCtBV@E~xbVI!Dx=SCJnwglG zh<|_KKfLEZ{KyUGt)Hxa=v9|q{Fawr{1dOe>isvp?x{oE@;kqN*5r68QPj~wx4+yQ zOpK4g+*0|`zxmb!h<L-xc6J8YyRX0coK0tKSvzTrd31W_Yx^Jj?)U!UDU_Y(KCw2X zlW##)|N2`oJlQ1i&YkWasZ{!8yS3{j8;MS95Kl8oE!3vT)(vacjJGe}xm^)9O^#VZ zgWTnwMM0S7`-6Y`KR^A<(|^Z*|5e)>7ZxM}RrYz_UmAAjJA+}TH|!3FVF6Xu4}bpl zho@&xG5z0j#hy=o@I&L9&u@%OCe0B_nrIUugT@$}rX<bOG!tux982!`lI@$X-M#(x zho?lO9B5)<!hH6_zi*pu0AXPeK}3yK6H+iBWkN8<B!&!8c=w8P&)&IZ(|wN}Ee9go zXb~9zB0?mCgh&L4NQO*8wn=F#No*srtwz#rq@%6oXsa>aZk;{ee%EWRtY(c&0z`<Y zQDKPT2MN(2k)iNFLbQfbYZ{4drb#1BCPvzCy>?G+`b9wn6huXZRaikl6+i$~6hT!L zR6zj%0Rb@%N+Yett6sVT04xZDvIv8)hJlndhJ8_H6(=Ghq9J?LVn9S9O08WpJ~Aq~ zmAIU-vJ>x=efX{7#OK1fvJ2}6vx>wY&?uZW)UbB_n6=__4e2gBWiKvccH%R38T(9p z#@?|Ai?B*~A|a_(1<-Jhi2*C@gjvNad-hH^7niZi#0|v_*bP|3vv?L}VNn+KA}kt* zjF}!-&W92u%Ede3ob!zRkn@4h`_6Ojy=P_?&m4Z3#S44kFchdFl4YL>vxK*NCO&63 zWEV$q%t0K-?BZ{B%*@4YN{o7z^MQobksZ5?{gB--Y!rMPh;tv-ICfs*>%JUIMFo`L zMYXPN-MW?F#q>bL7neY%$kxlpL!bVf>&z`Z`OtD_zBkMVS)P0L5^Pdt7CZmtFTeKp zB+#dR<5$jV@cp;`>5&slGmD)Q%PULWK|jlw)mUmJNxPZ0()7JIzA{bh6SIqd{`Gy& zM}nPOw_UyaoR5F$mQxG#;h+9t(>-#}!MO*gj_rG5`pE3UQpTPBuviShTC?Yz?Q2^} zD}h#;w$tQ2H@v*vNFRFg#OJ^H;F-(ui$DGoyVk&mKK13hA3c2N$kb^yw0X_w(G!bP zvkQ+OpP%pa4li_1Ua~#k`)J%hZ`-u-qO;fZhFN0Fx_09|H@y6;@zHf-BYoD7e(4+2 zbMq{!szhXsxpdcgzxlp@xj1v^t9RY?%|pk2{SQBS207ma=XU$qAj?^`k=RCJp8hVU zW{ywI91qVot{LC4e$8lV5@W2PJzLgZw)HGP5Yhf%I1oHCH+S88eulk!7B;kYwCPoh zp>~?AA0KtjGuZnNKY1ooaD1_Ie6jNa8}*@?d4n|8YM_p{8tI0~v7MWTySJ?WtGo6y z%UG*1G1}g?Zt|tuH;ptJ%{0j!uMD%9rIr0pOfRnVRtA}8ejx?gFgdzztldac5%wHc z1tNO)>%R*TL*+z;nK@_9b2luiLpNNq69A~Ft$0-tesW>u&+mBP;Pmn5D9|sx<E=Mc ze|>Xw9U7|=mQN0eL|lJ`g+2RReeUxCyCLVj+~v;u%yaJ9`LNq!W@eW4<L#TTznT!e zXtzK7e|J7~;PBCB7Dz<)ef(p#(Y9%ei~&RuR`w!9LMldu5n0tLdqjg|1PO@9CMHRY z%ThONdgqzFi1X|{JC@wJ%(L^HGlNR2k-YsC7Z0zzpgYXJ`rs1}Jbv`)G}IbftB3%o zBBA^T0EDCjf{2KUD8eCsMo_XzNUs0@kdO>gMm{sbhKQ|6S<=KbLx$ivkDFAsh8k(| zhRZK_?L|8}{p|nz?Y-XnQwT&!stO1oDxiSCh(=YEl>ik{0gGG_5eSHg45)%pP*qZ6 z0Rg~g(UK5DDoDtLXo##e-m~?bJ8y^@);5#mJ>PT9Vz+<G!$*%EpIfzyK_UbIR0IUj zunU4vV+hq!2*nHqRfvf*hQ%3*%R^!H<wgVn5P=Yh&>$M3#87HYVvR9mt!X57qTPJ; z?ycW<*{*W;WT7b1Mk!Q41yn^CL_k?ZK!Q<=hO9Xx&MGPlDxjhoGE)J-P>u;daa4eC zA3@ZhvrwP0#xxQ;G1B_pOV2;v>Ca|r0YEuk0D?Y5RasR)M1)lZm?gNIu&@X5S`=WE zU35Kh5-Uy`v)e)}k?N^}f+_+K0wEbgi7|;aBh7TZNNc=l0YKPEEHwpzq}Vw~^nYb# z7V+UXuw(WTrE$WUavm~cQ56Zv_sO}uDAay5SS<k%QDRNPrkN(W8Vdm8^Jpp%b)%}n z9JWQEBI1P^lqJX!s$AZy<l=K?CxrwdoYtObu{j9B1)(dADF7k>A`uxP17rb!eJ&!w zY)h>KC55e4Ia5U%pNn|$q2|WLT&jq8X08h-;XBGK%<=my>RDNowb&)7B4}`pprK4e ziX9xQY7j!1RaqtMRD9ShRpmdabP(rNL_|F^7qb>h+!CKKvwD{J0cK_qg~H$f5m3Pb z0A~X!OfdRap&n(g;w6Y8K5hdw>Lcu33iTB861HwEqQ#c3P*}Oi3o_L;8odC(BI4)o zxwj~rhJQstp)f~Kk>LMv1FTYRhNEvs^DCYgHz%r~(b5a|4X+o*1T4rxB9_%KT8HLE zR&NY@vlovrd-v|8lklN`@W+d8qxc<xp7T~ZvG!Nq``$Oc;+lTvM1Se{pnIa9WeY2V z4}Jc&dk#*0`vfu*6BEnJ%O}11)*Ej4#DD$GjcGPFwQqK2YJO>cVWrpU4IT3(+c)pM zaOdF@%L^;L7hIa{+qa)WLqC1fTW)^y8;|b)^6bLG!b*Q-FzjdfF!wA107RG=^R`!B zGTZ5X<O_Fv+ovos=H@qj@64ljOwBGFTUef1>MXAGI{jhhJOVTl+iIlkM%ql1kw*G6 zZ@BJHZrk@f_lH0F`s@GnOJ8$Ea(%KuxBS+BJTZ0O)a=5cV{?aQ=AM|D@AL-<XcLnd zn_83F!DzEN(oFk}#z-^$k?UUe;Pi<v-t*9N5M}o{=luMeU;DGa_c2#X^;Zcr(oFO2 z+|2ya^!(z%W3%@^{$$Q_bg^6i!uUx0%JX*UaL6K#ecL6w&tA7{({&&D%AHx3pQ+^% zeeS>g`X@j47eDpee{|Ajca>4U^1_{$pS$_^V(0Me;v+|o51l)Be6e1)2Y}4E$B)l} zX^pp=pu(!&b7JXL7oB^-mQ4qyXP<sIy?yiMkN)z%`R?=1`h!n?_Rns=?<An;WTXE6 zYxeZAyqD$uVK&H}G}?8Tx&AmfJ$-O``n8ws84)L<j%AR$HKVN$-1NHfR`b?Jr$2rB zJ)yuI^wDlMe)dOhy7B7E@3`};fAN`5e16|!i_4v7HtJ0iBU$cp=S9^T>h+#s3chmh z{jEm&%H8KQE#}_#GdJJqjkj96H;!NXqc@JV8?7`YqTKU|<&`7H4*u##?znGy@$u=I zGxaj>y=PGcL)1#s=J1&@!9kXP`M!s(G3RbtyY;NK=(D*bHM3+58A4Uay&rmA9OO^T zEuC0gdUkHlstQ1aX=27&jfu>ip^<v#N2cc<nVu`lyRBv`cR4?0r~K^JG7V_BHLWzA z7-_Xq^BiM~>R`}+4$_<~kcb+@rnMuj#+uRg<~0+S?EL#q-<}ewt!X#YN#TTOq}iAl zX$>7eGWBG;*%)m$&Ke)RXxqk(lVf8eZBgwF^5y>Ez|rGJ=N7tyY-KQffdxXuW|}0% zq}EKd*)wn7u=bL3wuoq}k&d;Si8TgMR6R@XeW<a$>cVpX;?}G;%<n%s_rJdUbvQi| z{VW6;Z8auGS^!w=nSc<<m;gCK;Ak*=k<58S2m}S^i_#I|NHe*5=h;`D^X8%R-+1K6 zCvLm<xeJ7d8`iELUAq;HDR#QC&JrpFB3`{?KlJ&ak@a$CGv|li=gtpvpF7XY!7UIW zwdT7n-0_NCTOT<#|G&R_SO1Jxl_*e>*jqpNYoqJ7*v1F~Fng7-(`6MeDq+v6#-p)B zDch8?zBPlCZEk%t;mkS599UK?%EBT*1Uombeg93bo9*;}`^<PwrrB=){?Gl?FaP9E zjjY|0w#QA<05XUa@L-5QD`2PzXed$zg$7*+Arhjs#vmCYV<^<y03d8|0ic<fD|fym zX*3QWpMUxU&HVeD-+kQ`*CeemlQfV>14%8^rXb>>2oN#gP+C-pZ^dGn1Q84cMk1Mj zKbK!nPymCte!PA0jxFDMd|FRq^4qs>x0Ez&qlHKSA}j!^BA|*y1^5n#ilnFlWKaaq z5;2ffBLrepL5Bb)BIF1`9)oBM8Be+M$fy7<RaL$D`m6u)n~xkjaq4B;5?Lfmh@c1v zDvF4T1R$g&s0b)Xh=Pc*q)7-uKnBU6ShB2|s5)z?qB|r25xFNsMCSnj(pV09^Od^} zp6Gt@oA;k0QX>(Cp@}Ha2m>hqQDZ4IOd5tO01_er8A5|($QVRR#u{S~%gP~HB5O=y zO=2mvwqZ?TO=?VPZM%`Q8|lt<BR_E6<);!T2!RwXNr+0Q7y}y?Yg|!yg`(a{VR8To zh#-_%i$W|>sEA>_S3+xTYK=9NSh9vfZoa;m{NO7uf9hHm#?`=-0030QlUPR4s82?0 zgS%0H?y(|R6yHTE`4$wb)u!NG7@|gE#!`IUp7U1=6mOjh4=Pkr7N*1V;3~x*tEe$p z$QQp@4O5h|;|D012nLo3lA*+ywWH0e&fEHw)m{rWUcvP!7%l=JpoNIxDy6uf2xWa+ z^rVqaQYU~GrFJ4TgqFx4CDv>hYrkaOWFe3O#0quPhn57DP+<lLbu^7c#mH4GDrr)Q zAeDkj7(k24`D)HlDD$H+WQ}Py?D-qlluJihs#5?F6%Z|J)}R6suN|HTu|iQ0w5Vk( zD|5wsDX^JRypmrNm4y%j0#T63wi@YGJGTIUEvcDUQ~?8{IMx_NBlo7NfU}lxf`(E* zgK|0FQrFCCy_Y%+s8U#w2+<-YmPVSX0FZ);3KkV=RE1E5h4QKz#VS#bVr@}jP%hLX zswx2Gr6v4%l766iUfL5GvSb?8XwXoE$wZ(ml@_pzih%f4qQnZnkH49f0~!vis<Q>{ zUTQijCDRyLFv3NML}-Zsz{b@S0x(j{iwG1|Xsv)wAIjD$fjU*lq+V6H5U1cg#euZo z(?$z}IBQZf_6V*8fk0yoI;bajSOqOGt9lTL5@?`fMVTV*Ar&4aQutm`374X<9cEAz zYpxeVNr+WcXh@V<Kv4?~N#!_k;@CsU3}Y|iRa~s<$D)4V-p2y@Y7i*8rAk$0mkOV& zB5a7Cw(t}UytwE`h0R8B*{gct01kWQTzrtpbATCCIo9Vzv{I6+g33a;km!0+no}_K z7|$)J3VXns4M~VM0ez1aEtT~YtU2~vXr(|oKuQ2`6_8NJ7)xBCf*e&V71=U5EPbsE zJR&t|qLQ3?7a41%Wfb(dc%^VVg)|(5E3{XFqbK=b8ANSR1C-NR^YCEN8e#krLi8d& zpj|4u8VahRuTtQn0S%Oh(`vyxETNfl(F!8jV5+JDVKu6dO<$WS4*Yl(7m%l5s3o#g z0#kKZlcQFmpc>^48kHJcw2HfF<F(_$1jT&CnG#_LfM%dNRxo9V(1n#mtVy}>tALkP za}@D42`(14yp>Ef{MsIzIUZJ`I#6G(tOXz}RUED_SWtT|PzBbATdp$d!uO#vYC#qw zimb$F*(MPBy%rZ2mzI`ZY_QNj>_b&2CnwjeSz`fUd3pKBkt5$x%2P?6Yu2ox?<nFQ z8G82}1^pv?*yrb^aM`X4UVZtcSM1ukd7>?D;D_BT&*poByC0p}e`MzC4?Q+K<HF)U z5d~eg`=$Tto$tDA_bv;Z_m{Kok{d3&Vb`t920Eo<Zd-iC1zWE^Z_7LOUdAl_JfEIl zzVC@+w>)rgn7e<n3i|1{zV+wc`L1EVGwjSRJ$7fmyD-SIf%94Jz2`jkX+(lhnc9Th zVY1!ad*O~(?%tl|e*e+gzj@%`Qn&w4M?shGy5JA~-3LhA++*KdS)A$g``tm-8)p41 zA7pNryVy?Yd|<+c5>cq^8AFE15*lN|?+eaecfsbhS?(X6S@`O{M{?(142nQJH7xVY z3VQFGZ~Texe`Ei|W8LMs#cp@0H(2ftmivR{ZokvdRtCfFU^vKK=A7r4p9fN+F`>oQ zq&7(tlUkD)n^=>?qO93{_PX7huU#4D_dIdz-ft(3<Y^v1|6}jGaLeSrhaUXHFWh=c zRP7lQ^kc8P_HBEwTs-#h^2*9$w?DtqTj=yobh>lP-MQtJ#cqF?=K`ooVoWc~9Sf30 zLPG@Jtr=^Nr8?TOnRf(vVojRF-hspzYfWlwGckL2Z{NFn+fpz4+WtdRvkTvDrJTEU z+uOe9wcovG*By7>a@&2kfB4U)`orwGxY&-3>u!3*o^EHhJIEG${rTnIiB5NRsq^GQ z=h*zx%3#=Pw^uZoJ#ku8XTC-em>e6uX#2Jnq4VAvNQ^Pw4AEPI)|%AX@m6}%wR;HB ztA6GF$M!!l&8wLd&*x!?UUSXWANcWi4Hl-pe$O`!Jbcgp{p@F+n3;QCG3ZU#>_O0# z!LZZMI^AKXKUnJZ7gqWUE4^XvM#snZKk?+5i@3DXz3qVq0bsP%+P!`2x)Ec&vj(jg z!<;$S9~x_@k=kaGy#CVj-h9<dtuftU_TbUkyADmy%r8D$rCfE<MelgSjTdcuiS$oA zcKFaEQ%64dhrjdS^!%Y?b7vm-o=!p6?AkHN{4jTeJRdlhIiEXrETTF(Ix^RPjth2o zF!<(yM*yJNXzbW{)|NG64WmUAr(y0^C^Hn=O--wrUb<uRD|T&bHyW+fCe|vMrS4$h zT$VGd=FW|@TjTAKkyd;C+BNIO$5f=-U74Gon?5o3=>50--K{HgE5j$|77x!Y%Cm2M zIjw@WZd?!Sb4C{$`dI=lofv8+cIdn{=6Ra^Fv|{1O&^#702pbtwyvMtFxpIr(!_*? z4=Dh?p>$1UfVajZ29ZpFin=SyOG}H+`Jr?D%nftj84LzursfuoFLs=JUYXZv6|`f+ z8WsV-kklZeAxx}kq)EGxI_5U=3m7<igTaBR!GU7QwM5pM4QH)eH!+UlN1JJCjBv*6 z0?riBOF+n-?+lz*JT^N!7-j<C{R^2loK``tBw>lQ*#KuH);1F}(n!2-iYh|3c6?-^ z^TN|9K{fOSPfZ`2nm+a-O%#XDscHn=$)wgc66Qu4&gTe-G9f+;wA5Mo=eSv289ElR z##o|8VgM3EFhq&9%|<%fauXxXHN%m!Cda-tH8(vs|IbcA$Co<c@B$=Cgc55S*0$2b zv3MUKAMwnN<>GCdhhC1a^gBb|ym7;13KPv_<HTsYktBu)Lw^{CUiA`vSOs}T%mp&$ zmHx0h%ug(LPjvfJb4yPyc8(lB@nTd^VoZ{lW|}015K~c&UHL_+J(6w$m<%O{sDvkp zN_I|YMZpRdh!{+XRE5X`U;x&%n`_$5t!u{tW0^hRk}TZM{r)3!_Z&R(<igT&Z}1PS zpznI=j&)<B?Pe=!w9%vyq>6x5fgl4yfJM<no=2c7DFpNam_>cjhUNlLA}o%@GY0~1 z*x$xhrHI2uqDUl+AP^!NJKnNapSR`Z=f5N%J6Y~#miu40_u&Iaj{SWr=-uCY-8-&- zb#rWO+8Q^ufkd%sGP*^<o(QO4ogM%MhFU{Ji>9w|)RPm=ghQuPI1Hm`J7e)G%<2nR zQbbs|*3t+7;ET<7GfmG~pT7J0t3{-rxuf&T`wk!b#v_NHGg<O93M#<q@pkKVSHA4s zZ@h8y#?6$pZL@7{f+mS)zC?_>`T?o%rLw~-{0XIkR8$zns(3JI0bMtRonfc!l3-E+ zLSu=*Cv%`{gmbN!V}oAllA<aC5@37)Kx`)V+>L9ut)IN%((`-6{NU{J9S=W#d|~+o zP>=w;^M+Ty>Dp^-qn#v8N}9%|##+G8)(e2atpo^_16?Foemo8bh*07y5LlBcAOJ+6 zshJP~k%0*S357$9GD4Qft9oK5BG#A)gNlh{77jpmY_;^2rh<K;D6p^;p`H*^YfXzT z-eND<I5~8Fq3=F*=f0Ka5wI+%PORBDI<XPRkg<W47u-jLOU{mJMLIwL1q4t;1E{E? zgpp7}h*i`L4b~RKD=HaK1dzaM13@GtB@!lsMB;^+5Jgo`gwTizQ3&UWEqgC*Y?O^n zsmw~j4@&?S45eTLQ7g6f$6tL#=J@DR?@RX{$nyNT#2~VXX*6S4B!sesIWjObaKyqd z08la%Xf-jU5{W8`DxjbMMJk;H?wbM`1c>d@6n1cy0OPob!lX!uK5$A9iBts(XC_re z5;20J%8a7KCKwTUQ8B_=HqWAn5+W%XBbM2DvW9oAH``xxMbF7yho<*Gar9X#h=`1h zzJmw^3L43r7^5(vA_aP$5=iJ~CKbWZ)UKd}C=vl|R1LI6R73>Q*qg5apkcYAkRvc? zcpDT^kPM?Lizt#J0E$rHZvzUdhy*Jm79kWN5)ma9F({&HqH&>7Wky1>MiMrj*;z5x z@7=xinsYbJ59KTO9q9J@XSRwV5gGxgIHV;N5>X`@j-W=qXE2XIUseDFiROd_i8-#% zMNe_XDFabN0@6S<22v1Jirhw20HZ2EAxnsCU<47QFdU&MilRXlArM4j2|e*aamYj= zWg{dKVZow{pDm#?CNU<p{s*tz-DSA*;L)Qqv(KO)42OvobZb-$z7=i`NkssIl^}-G z8%myoVns*{U#cB15LOrjkRqrDg0V*XLR1J0V+9QgPyjLj5<Wu;#c8!r$PkZ95CB33 zA`zgdI1mK`C`ysKCdhyY9AyaC<j6=Qw9a35?xz0sP2YI*@adL33#G+KI4Obv1r!NX za5W_u0YeQG3-(Nr0o9chcMTP1R|~Sc7L@nshgz_(BS}BFwPL6tAOZ?#h<s8@ZM3*h zc}@isz8jg%ii8FL1Puje7DZG-QA9*TBnoOM6$>pjIbXZ;?D>sr?|y9hsr?fKrDvf+ zaq=6gC<0dLp8{x*QbD781v`MU@jbAEwd@hllGR*M$x8KBd|a*Qcm@A0g!i$*XDa{z z1z$--K~y?db~TT;#@(w;Ud-gNXrsWQy(RPkL>_D4+*4>+FlfmnhFXnu-B|0oU0Ywa zWAmvLRMDG@4u1%T=+(HhrLrP-S<B3@B6$bGVvTVdlvN{2YH<>491B#bRI#i&9w4rh ztNG#;WvZsKnr$JhCL%{YAr^;GK%gKOyG1JCDbq-7yV2M<F>>wsFBxezifux4v4R#C z*0FemV2DRro{JC|%w;wNb@Fy`fCxnPSS@cVdBq~7X6x^k6l_(FG}rQ&lBn*IKdkke ze~Nv@&(^8>b*5<1iKC%MfXY*1h%BiPsWqYrwBWMs8;&jwd|g2moif}n#)cXRPvdKW zR~;Dm0yQ%Uw}S;^4p$xP!ZmZ_+KW<<tpjVF0U{4uN=rqk4)+L?pmkPb6#@${*Xq;Z ziiLS%ty4h}Vp|NNK@w6TvBrpMDn=7k(5;i`TjPa-v^<6wDvcD8L7=7usCk@9=_#ct zmB)e<8&?TumaN*fh0|}O;28^x20A?#<oQzZr71!|Gc2683UxJEYi3oqp|TqaYe@<s z5Q1Pl%7;Y_kr=f~sah39LmCvM<r(5-sDRSHK&zezfMP!i)uAMD?;cAWQaKTnv}-7L zw!ubJl|j4&-33m#GH`K5PDwp4CPkvIpk!OCXnh`K^@%46Wn0B6f2^+sMO2CpLnI<( z&<I&lwuT9PVL_pG6G-{-P!*^M@(KY+02L9e8IhK49Yy;<un`0;Ju7T<153Bw;sGkk zKK48W#<5DN5RpKIuSaA!`Sh32VWP5nIXSsOr|Q#*9#Dm-T3<vFza<23wZ^ze|1T^^ z3Og+f2r7rFbfpq)yznWhOuh)cBCF2d2_I%yeP&TrFj8LxX)XMyOfE_<D_sm^m3CH# zoubKLRWn8$1d88U&n)WpR6BVLNn(XGC`gpK*7_4S^HubN`hr#V92KDlDrLnkme5WR z6;W%rP^nYZ<0-nz1#envW}+3JI(9NZt$RnSkW_XW)cO3?VMEo?UA1ywnORhRhfw7O zRr*w(Zx;CHA(4=ft!Z%}97fMll@P;Y=q<!UD4QOly<=<$;4m_VnsRiyaPF3bvjCxr zEKr4*NH4D<PGvq4JBvz{1(J9X@F4bJ6a_w6Wpuh)Ra*6fX}M9-;;g$^_bMzXtSnGz zRiNITR?*mNk)SxrDhBRqIhT4xvFt0We5y34%15N?V1bkKMXmCyvdN?7Ur-&NCdFZ2 zkwUNaW|k_qDuYvOQYrfw%UU}WCH6u=!oCb_<u0p;-&L@KRm-{5LJ!muJg(j<m+(qQ zTyG(WvnsV@A+A^wm-dsCRXcvG{$i!L@_e>RHHBEkWm&64RO`20+bpiytcHG#;#ia7 z>^dov!*WG0G8B;_X%;LRYvMGQi<feYL{fBh6sjpeqcX(Ad|ATj;I-AN=x+omkf!ps zV~-lF>I$nJ5LlWnRBwsss&_$Foqx6}07J1+kITG>4|opL+RIk2kJY@^94exL@n-9d znxarPyi_L~uG$!^4z%?qN{~8!QU#Q_+gt5`u@kF$OF~0csk_jwQZyMoWd)Qv@=&&w z7TdhwVl3XByt>1xl)hTar0!W9;{lXOP!(c|W9*8BBOY{D03WMWbFu~@;1;4MtD|N< zt3u2wbEuz)SM&zSs#Zj(J7zs%*H6yW%Edr@EmoB&7u0qb<^P9L#ur)Dq7>UHIp(<l zT2E@U$R>-I;#w=Aav(*^>q#qp^_5a1S_`+e`-G|?PGTUg%%rx`m%Vevm1>s*sJB(c wb${>Py-%qdoLOJgi=cZ7U)V1_<sDT0|Mz{$pxD`T*Z=?k07*qoM6N<$g4Z2?$p8QV literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/thumb.png b/release/datafiles/brushicons/thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..8c39075fc8a7a7f5e5e014d2122ce5c02a56c7c3 GIT binary patch literal 9098 zcmV;5BX!(~P)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NN=A`Z{@+OGfrAOJ~3K~#9!?R<OCT~~GAT5Iof&b{CJC4JIoOW&uL-xfl)dBqlT z5(qJc5HLv_rv{Q?N*h{8C*!8WBxyU7nI=s_r;}Gn+dK<o+Axzg(7=T93P}MQgRzYX zmaT^^*|MbX{oQ-c-fOM?vG+db+)uLQCpH=GTwR^--gD1gXYKV~zqRqup+j)d$J059 z>Z7;3HlBUQr_OCU$<{}A{OI8ucTe1Z{M4_$ernT6W`2JD*s){(>3#3M=H-WX&F@=3 zcVg$v#C?yPW|rnkBJzzt{fN!GNCwEf=7yU(`Iic7R{PZ-e&)`GrmQo}zT8+o-CsS! zuD@??>&y4<oEaT@=grr*30D<SVRn7rUuEHm;qK)-wr`spz5VcYk#P1-*om*$SIi}g zDnMpv>%<tdzWp`V5&&@3=c>o9C)GMT$0D9tR1q=H?NE_h0Py9S@2|VwitDdd-c`;! z&)&0VVG%;K0N^&3UAg8qmikpyIxams&lR)t-m@?ZKCQKTW{;mZbR7U3{E>G*)k*jM z>4*RME#EgeI&}S8|LNwn3;*5sXaCdMeBZXo5vqol9{$?HCkIZt=cE7qz5nnhY+k4e zAkKFD+D3oR?9|<@^UV9-@zWyg`fKI-lG|7T^`jkwfV;L#TsF7m-s6t}03iT?im>>~ zRqMW5&oX<-%*39#Et4bNx4r5b0I<wXyc6$)o%%{xgoTL4hljRJ_{#aiS1piKeQ|wu zJ+9V$wc(kWSwsLdvu31QOpXp)SFZbN!}nKRZ^gO3W3HGh&(5=FQB^{;)yA?f*Ij?5 z?5~&3m(Ev?EAO3W&+J%41fH+8qvvbo?fGy0^>2LOfrlUb>bH;gD*yZc_bUMKv;XUn ztmyvg4^2PCh49d!L!bZr=Nk$M@A_}QOE&ku{LJS*e(LPX@<y+6{70X=>!~TiLx&E% z`^E#8@7h-kPZYxww&)@NyRz!9x!&s1sR!;o^3dtUl_yr$%F26zKmP2U7rc<!v17-3 z-hNx&9VN2L&Xwz~zwXL)c75>`nQY7W@RrfeXs1(TR#mUrxo!Xa_HL(m<jm4$9vNGR zcy^Vlim%vJ!WCCN?|M@8xat*|-99xoHq_ZRHGXDg?d-~0k=e_)Pxq_pqhGwIxsZrg z_8_e6RanI<J7K5nnJe~=MMTva8Y=QF<D<i!VtH+2wbx%-@85RQ%a_*IKmOIfvj8Bj z6!yYid?mhOUyAFqE5-H1^;m>i!nH&d0W8r_r$9s`GK2tn%fZVm0Qjn>-my4wPJHQI zUtHh29=o3R;@Eo@@6~azRouR)A<DC?n+N;WUuEZ19Q%r0pIx6_FKCn#_Fg=T^WL#| z=E`&B*)w~VU;tG`RV@IPYv)uPyGne?TzSu|;=Ong&*CM1$9W%YW95D2e9$%L*|GQ+ z#!fzm$IhKQpEsqw$c4_g&(GlT@89vJvEiY{VSnn}TmRjMFM4Yic=v%n|MP$SwjX%+ z>t5Mh>yu~Cj}10m2sgd;yFc?|*X@7R;@Oj*yZdXWmsTt1|M0VSjm&IcJ9FxpG5gxR zmlvbcTX$S>&HUUYQ{zKL{;u!8Ue^~d$`Df@ZJV0-!him)(XG3(Vi?IxO>J}Qr&+{# zzHDyhz{1?uj-Gt7tBjA2<DR+M5C7u7vfa^Qc%m2@LzAgE-`{Zk)pBj|f&0Jw$eE?n z%d4v!eb4-nFWysD?t-^wKL2|kvYio|cZn>3D6=qYh*Q{&4t1sK5h05>=BsyXyJpAi zJ;xq9pCX$NjWV+egR-xjsw%UJWA8)+(OkM^iV!kmjG?8~4FtIT@WDU&>{mAnB$?ch zMKS=W!t6@#dam5?{WY$7!VZ8Y$A+iJhIh_P&Ww+Ai_8$+e)u5Kz(NrsDk35RsH%c0 z1S7{4yPmk7h$Fz^PBAjnnVX)N8XX?(b_~&NHyyZg;nD${jjE~&prEQMqN>8_=~-1& z39+zN3fVe7iin12X?^46J7$#q11BB>02@L?6$xe!(o<DbSVa=4fCz@D$g}a`ZusG| zE9=+p*m8P#6#z(?Ram0UXB8IqD!~h|1QVDZA<D^(87lIjq8J<MWX8N^?+y{MB2LAF zcoi1$!cN79wHK+vou(%!r~&|jF=UO&^Q@carSp5YO<Q5F?1i0pr|guS_)5G}uGBkG z6%kPoQHh*XPyhuYFo@PrW{gp?>MLQ-KEzoS`%1VHF4>hV!Mtm593tUXRa$q72t-JT zmc3)|gezvJt`uL2FWL23JjZV`i?WKShO2~i46hm@2mmXtFW!kbae<sZyB_<BMT55q z)G%v2kn~m{EW83*@B8eXddFOeFS+V@U$KZ|@yg8NMH6ZDQ(09+St5-9YPsw&JMoor z#jf=1BWqZ~RYbzIm{mP%aNmhoW{sr5OUke9*s+7)rSw3=mli?KL$p3UfB7AsJbTN} z{pJf8^`HOv(uY2H`q2l!bpN*&*ETB8|NG8wKDM|LK015sTfh24)9?D-FWm9Tvw#Qy z-~O9VeB#%Brd(Top$Phc1DBVJkIe78ZuXLWfBWUnJ-)c|wpU(VF*D1_#kIe@`vCy> z{rB8d*B?Ip+du!TskuNpbN=I#|Ms6v&hEBZfhME8d*mCRKXU5y%0_>6qu;BXXJ*kS z*7_g+%DvA^@EFS@Pj<#<e*G7xw(l)Qr}OTp$vOZqIdkcy+qP4+VvQ*>YYl-yH#aX^ zm^-kreQbE>*b|G-nxOIV@qs0K{lTk$_U&()oY;~NkLN=ZSusR5!{B<ERlIn|RCS21 z*ni{B#Yc}Gf9Txm##+C>(XZC}RljokwoUDsom7BF7T5pk?r%OD84{7N{=tU;5zvq^ zXsn?OZAQk1N>30~0D$Ny5Riy$cWidwzLE9ClPAxdS?%@LdevI5zg||ovZ_4qoEmx8 z&DSgFR~|Zb-?5X=OsI>oX%!7Wh^mUH;zdOvxhjR|Z6t*RDgc0Fx}!7md1qsN`OM1N zdcV6-mTSFotzY&^S32iKU$N(s8+OmJ@MrEj_Q;uYPm7=|?<$Lg5C#;5RaL}8jBZpU z1cWNeAX1YRDMQogbZ3b+%4)6GAMJK~m0RoeS9|?l>H5w&&qVlx`*#a3IMI)M;qHqN zL}Ubj1Vj;)6$zA4K~y0mu)-o9RARUyKIG8CUd0Jl$_xlaW{J9a<~q3@F0%3A?rN{U z)+>8eRaU-q-UAZp?S~IK&!4{U=;_7fr?Nu|fDj^3jc>#wRTWHp3a`pe*eg5nrLe2x zB?QQ=MFc`L*5uX>cZ&61xn5R%S5+1FohuzvMz7z$yK;QwiIuy)eRMNHA$kQ71qBdL zi6I`uI5aF)6ZD1nNJ3cD1T#&%1!xTc09r-NLeSbPZ7=ghWh>96^BZM}8SdLUzGLFb zyB>b*#F@o5LGi~x>tcYYFx31I29Xftf^axcO$Cocrm8A}YVElZ5edN(sWk|NF(xxq zInJ!fEcHsKphH;PuzUOEb5o!H=CM#P0A&s$3`vhdc`*IFmr!rfC_pjl4&k?oC`f#b znL>ztBfB6ZB|r$7A;>Hs0tR}C5I3qS*K9=L=BswCn@%9eMIMA0S{WoP3afajLw{xw zm%{KWM)DGVJFYVeNX%ZMST$iYVjv>~<1AtgX4Vv%X}TFl#sWb2J&_<iDSj4KmdKBA zLeMYv%9XH-IZu2IUy#V2`k5p^TW{6`5+D&8LSx7Zu_1$G0YH2eLU~YCWnl&tj+s%+ zY?NJ8c<)rbh_H$Zq+|(LHI}0QB&8MM&P0Kw$*2;o+AL}#b+OK0vP3D4cO?wsL&7G^ zDoM%13O0hGqQY_2+J8pvU=c|vL8LNdE|SvHl<Fn}gBAeTl_Fl7tW{K#EC&M^2#PBb zGPP!PI8nnXi3{lshr}sS=2>I<BPy(kZmqLXQ3X^BfL!&WdPf@*a+N@n(|D1#28Fy? z1!~Hq{)n~3p;W32B>HwTrOK+IKp4D%s4A#MgiqabpNaxV(u$a%M}9*6+Wc9+gl~vy zwCI`~ar{06?!_cpH?1JB7#3tDM$1M#+Lu_pG2~`19byh0Iz)*0_bM;@9zow-1ikT& z-x=RF|NIyBpUc;O?h}vS@u_p2k%{L`%PyYV0{qDx?|%QA58rt8-t#~GwOeKZ;9q>~ zq4$04;Y+W1^><>)woOf3_v%{~wv1oDd;5D{|Eim>-M8t4-+0p;02CwRKk@5-amT05 zEgU@jTnIAb<KxTAPgNWE<$wIfojZ1q7G`N>v8?=9H$SjzF3*cc&&I}}us?d&XZFA0 zCqqhUvf^7``15B+&HViQ#R+=fn_ipSZ2HnG{qmz5WhJ6sWXovx+WGAdJ-%3Z4*;uA zJeqZeF1hLzOOGA<@V~s}S+i$;e*Pj$HagTT@<P~`>*p?e+2OhAiHXsnv2HiBCbQ<& zS6_4ZnkZPG{k>mWI(76z?>P9v%FuOtF6|6YWStT5C4gRi)pc9ON5+Rc<3rs}W)0Eq z*~xd@d|i=e0PvxAUiaLE`XWpAAAagB(_81W?wH9sDw5?xqXn(5uP7)XNeVo!*|BxU z)|tP1^z?J2<{~n5^}?m^c=L}I!;`k?8k-|o0L{CjU8pwtJp~{_P!JVB>}F>F!rZYl z%l!+rpPoKJ7bxis75R0S@A>6_@>3Jjm)fF0AR<&%BnAWpotoRX%az9-J57j$Xo%L! z(gUFATW+}W=(*L;e*Ig|Pto%?-+TN1z5BYOQ(1Sc7#cTuVbCauswlGn5LrbwwwRf_ zjK$-bMG8a__WEVX0?Z3jBe%cyx{rME>(2XULy%{A?_1t*+v^USyh|oGSz+^z$-87N zA^{<QMP*P0AwWbTAR=2#&+ZZt3`{~ah*(w?fEPj3+YY_#TPM%`?E?=#W1;@QPv3s) z&4+D1Z1S$nIwmX7<YX)Y*0m}~%`i|22_&chK%Qm5C9Bq1X^Oi66sJc!`xoZ!J8@c4 zy8pCfh-_|)ApiuVkZ(gM<q4n)N(;rstRfKleV~YFvd+}Rw5k$-AtXXVFogZeJ788c z3b);K;7dnNK5*jH(_Jz$8QD%OASxgzfGRVfNXRK;J1}HzBJArF4**S8OpJ~w03sP8 zLqy@eDyTd#2@1Y)&)lA^6Cc0pn@^7*GR9`12n0}PG@>o;H(620{!$VLs)|H5AL|yX z8kWr%Bn(u!$}@wg!p!K<Z8shG*q86`mDNQELLwrgK%x4fq@*Gmvn*AP?NbpEP6x3G z8Y*iDWQ-Xua#am79$yd*`F`a*GZ9)eZ+qp{U-<T;$4;GoYPCl|0u?|4RYFk3z!n5i z6$r^)$TpclSTvMoLd}F#MF9*^C(lF`LOqW#6!s9IU!n6%2tahxzDxFQoB8zJ_dmHW zi~50~{t!CUvFaGtux>Di5?kni$NoNuhhP*C3{h@vVQrDyp(39c?hbc~Zjlcad6Ahw zoHew4w0QHY_dkVmRS0c&faV!g34=UAs!*gtPbe2h%6u$Tr~-f?%tEi(nogdL4|j%( zqLbThk#|BL0>BWBW#-n`?0<4^AAWK$VbsK-^e@P`q~xDf6qG{&w663301?@SrhKGZ z3>A4N%Q{8g$uesUAQDkV_#>~l>Out7>r)q0gVl>g8&y<HH5`o^7k*zfeGdQ>F_mB; z`Z!~(p(3+k;X0Y^6nVGEazg-Wt?6X;A6$Rs1vrG-lyxzdFlqw`SXV(J1V8~46|{AZ zs)B^OKn>+OqJZkMWO8e}MONgtu%?q`ojfbDOcks#9c$ij;Ihp!q^hWZq5u+pFWJeu zz#=Uf3LKOgo1v}FO#MHmGH0kFX4V!q%QKr<)5){K+Kx2{kY~1&+wZ?-cSBGr^n@P{ z)$_P+adl!PDb`vcR;~hj0--_4lCe)Xk5o7WA~J-THMuppwboFluz6-PV-TRQwwq@+ z?A_5SoQpKN6M+E|e=-%XVvSZ6G&ExB(q%N~lIp9QSq1>0gh)h&$Qoras!(KET}msg znH(;5%}xcOPQ}__20>IfmgH4L6rpX3Sds|<WmSPB>b2On^r0!R0sw*%ArTrw^*Uym z4YX#)%+HKPEelPBSZ9;uC_;Ck<_8FffHEZTN2)s}v`eBW76zk%)d7?M#Na7XMr4Vs zF~*QJl#^8e8~Xw^>L-;x(}Bc-WGbr08f~DpX}LrWHFlr|(+mbfA#fr<f)J}v2!gFK z#&F<Ja^?eVm&hSaJqD;-AE8#<)WPEdNqp7XJT%f&bFwkCK?w;Ff=?le4I~>(NbEQT zB2-jEFD7upr}8=1wf!JWQSMX&MyB1|NDYt>I7A}`wK;_lctzVlX*CmEOMKFBPEAZv zj&Pw!N_6;bY6cz>NvV5hfmVRpv_}qMpf8wtY>Za;2R6_V6kVA^qe3~h!-Si@Sb~E& z5stqXkm#+(MPgDSFB&cwpuG_@s5@BcB`jHz8wgisAM&0gE(xNhv1t@)?4i#R@nyAb zjfw{8Q{5zLEjkoh4xzSOR#jpnp_ZW*PA@Vk^ccAAyhz|c-A))>yW00Q)W~22lhAD1 z5R=HWq1PPkVUXz51qT<`A?TQc-{h`(L1K+p4V&MFXgd)I+O%mJo~3Htja*R9qub zh*Av7p?Rp{YCUhdaniCs(cL6!00SeFQ-sa3UuQA8NxlL>v3nZLor<XX)C>0!jwq}N zq*ouL<Jf57dhJAONpE-T+AAte`q^fcCK>WB+3TQRVaZ(GHERT=)fjB89khNrwqToH zXMI`<7@7+-Q6DrM0ufc0TE2s=JMl8G<e~KpEbaS-);U4BPzIo#%}3HYxwUWuYi1vO z{EP}KNb(`|IRbitPFWIJ(7~2jTb}B7+Vb1#@JZ+;iV%zSN`i(>=7A%^YH@LKX=&-D z))snkAF4VrF)=wgX#rq)dHKYN6W?RX`5@29$w~SiBfiVJci&^s_Zal_9wSq;0l4%M zf4pcUuAO_lJ3f8e2mg=Fiihs}^#A+l2Ui|H@%NcQhG=$jEVp*Otd`a`o=(f9w|w@$ z{M0M<zWRsX`fvW^z#HEg-n{c;zjNPT{psUJz5!3W6Y;|OvO|Xs9X)#V`0?Y<<tjy% z{l$O$wJ|IA-19e&oLOG$^()U_<e}5cpS$<l7j5Ms(wjf<UoXGu%`r(-4F{(lxa%)J z_`W9|zW+sG&CZ=W7Zw(t9|rySYp;L*t#6s!`LfkB$N%pBzdd<&d2wxHy<a)+y@)DQ zo*!FY`|`I>EUvCU*+qsYx7_|)pBbH*YlmxrQ!4ziU;4=-U;5;Co<U}Qetv0b>8TL} zPyLu48~KGFdtF9|phM%^X14Cgcny>dA`uZn7;+yUDz2E@^77qtd$(`tRc>j$x9K{r zzj5cE{dT#&vg`UEs96Ju$G`s9A9}~Z#Yc~Phb3rye0*YJ;(1`u&)@okd$vvIc?SSg zyv@5)+xLv+q<$R$!)%=)OwlRk)+}tDeA%wKYj<v2E8X&XuWf8je)G;R{_(HOU3tUg zCA*p3$9~}-ec=y&`9)E&z@X=9q!(tVFTZ3<-Wjo-Q8GFE3VKV1hbLzDTs1ax^60&% z&YWG|==ZCt^uDaZw01=965?yGS~zs&e9!rB96x>k@unC1KR)pG(V4l`GbdkkBmJBt z2oZ06&4JfkwXZWWlXXUIXUNzB$%ayZ$vR_G+sB8yR{H^pVU5YG4MVqB*M$KyYc81@ zJ+QF-iXGdW=-HKZ0H`)rUtHEa4=Q%+_r3f*Z+=}qvL)|M*kZ_J9g`K56~<&pMnMrE z?~aa7Y#qsfl*6EHXy|3u7$SoNp?!&nh?a22^!R~=?bpn2U+!0{z5a{n>z}=f<$3<& z-+$vfZ~5V=iAgk>A&c>5DYREYB?v<cKsd{BYHr`~#O(5!<EPIpuJ-!<%2m!6nXg!! z^OaBg$fPn@X7J{#b}8&CJ>U88sRti<>?Il~Zk-srZr{T0x!L`@7p_>CAL@?S&WI_7 zY~Cef0|o|Tg;|?EMktseDKa4nA~6(0<I~$O8yP#dbneu-mDRO=RaUO@zRIlg-ubKy zJ4rAzW32b7b~AJ1zDsZ1cj<b?cR&2-gC|da=NZ%p@#s)@es<<ZZ@m8S{;P+EhS21Q z#$*MNC7Xw*u^AbQ6d)Otym6}pE`rFyspGDSqyQEbOa{fs%uF#nGJ0lt>Fo0Q#zyH% z=fa*gg|}h*o638~%pBW3p;S0hm>aLydE@0f*PZ{|y+@u{UeoW0`dLx<$=AL1_19k6 z9U3MwhzT@>QELL|2FauY0z?1_t!aq(hk;&U>}1vhgGvArI&@?VK&Lah#TLUOYv)$h zR>JIO+V>}@n~gi21cB1j(^6H0;mp4A;AJAX=G>>h{@~Ku`U@;Us^jC+lQVOvKZ{7w zXaZ0$D*^ihfT3#+0fd7T&TbbfQ;VZ%;fMY-007pb_&{i_?cm6CmJbbgmRC16*85fI zTrELi<Ce;E<=8Vj&wgMGABl7{w{N-ON(FslrS~`AI=ZyB@j}@kvY9Qqtv-L00<0&7 zV$d%jD5y<mt=(mV26`2`{Bbg^2G2;{C{He)tjRi^A<VLTxU;d|uQtl6bl$Udo=eBh z`!eGsR$&huPOa~NECEp1IyUqpH(V*AM@}z&^~j0mg5rD<1{rH?!76n>FMwKVU<;@Q ztr83~l-ib=mR>bYhuHbAn~RZ04f>&}NExGA6o`gQC(kxY*RQI|ah|bb+wojEuAHw; zxc3~k4GOI`mN3`}hH&5P<lfnd%JDrX2Exwg${<7{n?Y>dMlqnY8%f|5ASeiiZZasw zKA<8(-PUTimfEvS06~0eL|?n}9=5GOM6xyuSf0X~(z()k$Kot^GO2vrGpY36Id)+e zCeL0N5u2+hsA7@h^}DwpT-dhMtL{AV=ws)Wo;!mOi2_iP02BnneWOx6p{fc>3Id>* zOeRJoVKeXrt!7lavDLt^q{h{7!>kCFLLf4rd1gb{U3qrwofm6O!Nz5oV_!O7R=)D= ztoLk^-XW)v^01y{bZWTx!E1I2zypsjef_~>?TrhcX&i(p=tl)bz-TJMmVy9rfSe*w zDLU`u*b!8PBgRo#>$bf#Bi}V6Qqz?a_9!-VK>|E70K?P}sx^pc2n~s6W<%CUE~dz` zD)Xfed)|4^?7U%>#3^Nwz$OADqpEP#?8N0;#@3vC_P&Q#*VdjngAfo<>X0vt5!V|B z1&^j0cIN>A0Sq^TP&;3!`>4=xK`^#=xdv)QtgHys*ra-#w?RNC01}412~8MdW+5UG z5ldnX=4?Bek6Q!QTc3&Hco4RsiRv4$KjTDiJg}z}{mPM(k34?nSwzxl`D(~(l&-jc z8zKe-AfTw$po0bvP)E`&=+Yo}n*ER(tVEa#kJI7tXR*QbC2)UOJPF|jp&>Oy*4o@g z9#tV(vBa#kArD}-nCht_q9Oghy>sQlwr`v`edN>=7cJ}#q#77(UBWtHg8kIwMx=@W z)M%*|o~4G707R4wHoU9dnMUzxu-HN4+B|Nf!8Fdo6Br;6L1R#aK@bfw8bo6#^PGDV zw!rhmmWWl;9)0SWy@&!30%{1~@ZkLH)t5{kJG*+%!;d~iP;P4v4J}kyTW}yacu<6h z>_lvExdYD@^er6A09Hbwfe6)@p$75=h$<4oQEiYz7{FHH_7qV7!d7Caib%*o$|%73 zER%EOj4-ny$|P8E3j4HHo&_{$T!`{^&x~C<F?{sg+I>eKeF_Pxy}P8yCQzCXTA-jJ zpbbj6!6MeUL~UVG6Et@KE!!}wIWx#nOJcO8upu0Tw!Wbvr1FSr*!Dz03{b$Z2gs=L z><t-a&q#>YkY_PO#u)Fp@~o<ckb>?a?w%RlKDPIs<EKwAtvrc}Y1l0TYA`J(+(<pP zjSZ+R-oGS9)Sz8$0k?uGLK|b%@J?D$QX3H(z~nfvn@3|K!{%+;ly5;nfr2z3LXfO* z$N`ioo`hKl(HJt!fr%k~VN?UuvFH#H@ZiGMjdJQMM^5&tYJfpC`bGjY8&oAowLn_R z=<BtGr4DhUih`gfW~DqMmW1N$KzN^_1uSYDS%S&}MhQ+R#yIK|&EudUXzXU%ST1Fc zs6-}4bATK%nIuRe6qFHtnB#EXdlVovN_iF~^VRz<d19^qjbo?6D%UC&@V+XbD2-!^ ziG>OT^m_|qUQhFDf?l?E259ZxR|A<<LE~l}am$V<j!|3dZS+JElUhm%&{#7a$Qv;s zLKUM$58jGUL8*0CG`EUi5jk#z;=N~4LKU(EV1RO*9i_1=cCKO<!*0<KF=~SK_61NQ zMB7P24FzOq1<I}amo|?E`PE`yL^g-K3=|<|W_8Gr9BB)A4K18r9a+F2Y<)niqM~86 z?TQ2@)D;L?yJSRWc?4ipBt-(U3LQ{e6f&q{qAkH`%xW48Pz6Z-IAOiDEi4hm8`F1= zysNR{F;itwPRDhwS35R{lUa?o+k_7v$dor>K(&@844Hn^yAWz>3>Ywk4n#;oL||0a zgt8tskPc&nNRpdxOasCIkQiEt6|@88_7Ft?x{JUdEFJ1}v`*sFRvuap&O}DU$TLle zp|;ZIw%2TNtsRzVTasD@U}y^&Vyey{P|!m{0wg6;B~^o}gcb|{Do8|=L)yZuHQCcZ zi=hqbtqqW**JN(P1}M#Fhe$K!keDR{?=-4gqpAgJ4161ZsRPmk4Xil@5zv;h#wOHr z63{|oYrU~i%w`1RtQsK+0cw~NgBU6$6>IRZs46kpON>wz5FChK!bi2ajhcD@^}qlC z0{clsK~x10d{&xjXrx9#YNOL^;3L}D7fp18Ok)5m50H2Wi3I~2z$CIFXQUl+4eS{M zO%&S<Or)7P1OgyLfo5D0S}Mj7s~aSpYqKEr{<Q4?PlEw!IFhC;2JB8PFDV^^0f6ox z8n~6nN#epL6&oBMXzl-_GLRA0F0aLzS|{q-?}ZwnQ4{MRtCk>%!1fl|5{JmrvZk$n zQlO}9c}bpolV%N6HUL9Gs68G8VV){Q+~I~qHfwwBwq%pwv|!UxXMkzgAVzD=Pz%P( zVr#crXxser-bxZA%3eTY@vtT^)ihH1z3sD7^$P}P&VoW|n7-v$_XtIj81O({jFglV zw?d(Ia9#fy%a~0ZG$>6{i#QC-8niL$()yAJ3;@z~pm4m2NsXHiK>9?83;@;jJlwkk ztE|%4nzr-erVh~7j)8-E>P%{*DoI78&4?r#A>paV7eqI4ZD5BtY0b|x16$e#=0hvZ z0d3jz*7RbUJPf1gt=nmQc?^*^E86)|!|61RW6A*MjSAF`2AV;s0X>3&afuXIH)IV= z?7;a08m&o<fncRI@CveNB&ucdwKdQQwGDzW%`C0C-BfAEXenCbGOfyC8l@KzL8x~) z(=>t`Tve!=gpCWZ*12?oiiEfaL;~L+F{G)+iw;;N8JL(G5S-QkO)~}A^n3?JXyA)2 zxoQoVf(_fc3%h|J5C$ec2Fvd)2Gu+Q<ygOO412pt7UUe-yNx#$vR3Q~?J%q!P-+5e zX%&~+zAO&XG-HQ@AEgn$C~+__f+RZFifM~<%ZoV)<<#h&S}}C17^nj&=)j;;Z94!i zuti;pa$rFDFPuqic27-LMCw|>z>r$49WAwO6s;{bn<lk3&Hp5GKCpN;I2aHI3QcRQ zN!ddZpLRLbdOuD{>}W)^W#C#G)JmyBwH7vS``5^HW2;)0D8*(21=&sWP?E$+k`50{ zsx`B07aC&I+D}34#Oul-9y)YLb+9J;T{RYk&(}9D^fs#ge~2taHuu(->Hq)$07*qo IM6N<$f+DnSFaQ7m literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/twist.png b/release/datafiles/brushicons/twist.png new file mode 100644 index 0000000000000000000000000000000000000000..41b0b5ba856ae377db34b389d62f68275cae79d2 GIT binary patch literal 16906 zcmXt=2Q*v%`^Q67V^!>+D$&-~nzct`)+j=#U3>4nM?-B@t9Ff0RMcJ-MNzaiv1jeQ zH~)Np=lpX{&OO&Txw-C5p6C6%-tSMMG~OtZ5i<}2006SrN^)@A_T7I^AU*(q$8a-v zf!iUlex>#b0H{nLxi-Cz+b1+rQIx}NagPhx=3v~0$VExd9d`ume@{FZd!`TWj}JUv ztI0o@dO!tWA=9~yp#cCOfY)-bw0)+we|Ud>rtA5lNeiXr>2|h}Rm67uPeOUNAnR2d z4F4$!FVNiF=Vj1D(CSp~4%_r+YsT*slX$8x`CkK9xZ|t@GqQ@U{lvU;r7p61#b>2A zvmTpDlVa1ZV&}cR&vZ@xri+a=>y)>&JKu~)G<)w6N_$>&(@{Ww%?dk`m+Zg)-dr8H zd`Xr{^Wo!<vkvm-CdjL+t9#ASeAg-7Kep8BXE0VLQ$8%|_InK%8C>wn{htS~0e~<N zyz6#J{f>FS{r#Y~VOm69@?nbPK!ejhx>*4aKmgdEZ1r7FU(5ZmIF*TqjD>&tRa%-Y z5_sz^bu5nAYh9aVmZ1cwjYJSe-~qr;Bdpqp-(`CDaL>7S>ls;Jw0N8t9zeS^r9<)5 zdN|z;rOnCncVK{r`^{E{-~R8(yVI*OX8&sn0=#|6y^Jy^37>OMq-(9d-rLV;?VX6_ zpu>vW%i5bObn_{zh}cW79wk4A<0c;oQ{heYnrSQ#SB`2C=4iG8v)960iroS#0YVRt z1rjcEyw88%x}m<<5XzlLu?4wY|MSHj&0X%EK>%${o?BZF&*#W7NqwG~R)z@PFqgj6 z?CE-khO1leQ%{S<f#cnvRJ?(0|I~MfKd+d77bXSHHl~z~S1{?_bu-@_rJd$B`V2i| ze9$Cbm7aVu_dx2i(o=Sny2ORebF3cs^T6{qbzzfzN9<0+X0Ls@PgOb32fl-Q(zMm% z<+Fn$v)D9&rs)%NYpbD3t)$40W#}L1<}$?*L0RETzbpEJ`SVq2soOs>jN{JnnPSB3 zfxDAz)be-$_Gq(=ROa*CtLtvZ;>XD2{^>m_?**DejEV1BQJeuS9W5km#jR4~ZB{x4 z@{~P!vn-;?K2AUHyWHl<=Iy<T6OXgkJshZ`BLS2$O26K}$&LATNBVkcK5+BAL}347 zFBk>q$jua~H+%OxGCf6kQm|Z(Me})@(ZJ1=aI4owztMWSb?#SeS%+*#a%JF^u^f;J z@ghap<fbcaIW-*Ma~x&;TjmY|SZGeTW>1SdIU}>nD18_CXTq_5?l#Ujuy*&n2_2S; zZGO^c-Fmz0&vkJy)aPyD)?-tyQ;=-j;BvZs-oqrWaJOhbA9R}XURwS^SC`k_<Q`_v znfdb9p8%*6eFQq4j|ZDd|JZnBXvi@mwUj+cE9u_7_wmb|(TAIJbS4w-E(3W7!GQ&{ z&ECbY|MJI$qk1!)F^f(1&Ik9H@xR!LLFJTtz_pJ4OYMz9_Tv#yo|Nc{-N09xqv`1- zlK~ecY3g#qFnDhRO_EH|ZQcNrwCnM4x)u;-Bn(2Dg8g#Vd~*ogz61lIS#MC%7lZR? zgXW9NEvHVfiSGq!ugU(53F~CryFS`D8GPHTd%J#j+q&CyG>72Q<tQaY{e!WCxuWqy z@SsSLG6(a`&>5+b|K^6GcY=}o;r6klb7OF4^q6j((aqWkLn7rbb3YK0D?(?SQK;Lq za?ia#90ZHxC1vm`c+36o=qM&;Bz|jc>JzwNPxA0yH%XJfpQ6He&~8lb<<G0&Oc`L% zm2mLUJ?6`W?%U&nHP$YZ;K2FbMFhN8xz?}@v3Zi=h;?k<yvk!n=Fm-`b?aL`qi=7D znR|-_f{zBfrS@;<Th5rAKNJ)cG%F0JZBNb4<%qku+^xnL@Iu$v`eh*k>EBAf1}z9P zcw#*PfD(_o`eNY}Rjz2a{r%7<AI<{z@3mg_pJBFgZ+H6$VBmVnbk);zYv%d7lTQi- znq|6pfOJ(I<#ZE$V3-W>6$cr9tHvL7BawRFzSH=4^u|Wi%?EYA9PbVx?99n&Jtarm zRBh&I>#bd-Lu=Jq<8BUSw|`EKr356eWV)`<2+zpK_^Q(f2+P^UoNU#D@_7}^`I6pw z^cl=e&E{w$?#IW+wcM<#6eh!nfsi$iy{&GeT;j*4o~#V<TbG7F4kUG$R#$*@4O6|9 zxaseROSg<tjb08*X=(8bclw)~oAou%iq%c#$J=)&-gCZA*Z(BF@2ZOI>dgIf&MrfB zr>4c9g#;h!ntU7G&aJxaHt|0dF!5PmWpomC+g>nNmwFEoB;|3^>yhKmR(72Cq7Tsk zQpBXIOP&0lzg{ko-WXbN)OEf+dLVs@yMJnk*M9~{jZ})i-Ok<K-qLJ%=;#W~^3oo~ z>^Sbc0_&8e&>8zIk<9zu&d){8oSk0Hos{kEZ2p!3@G7KjPgJ_Et!!xPBM``sp!TyH zvl4JjI!w9$Vs}<pgVj*_e7xXl&gX?h;NqVtM4&N<llWra`DU)EmXW9n34&1*XdYWa zSN?1tN9QeK$y-wG_hf*6PUhWRdF(8BfTu~X1G>q?nXuk13ooQE4=%zRvE<uh9@+2k zLkg24Ocx$VS(3s&+dH2bD&jXd?Q|Wu7efiAg-Kh2wqYJm3cqeP_Jk)$ozq!&tGC`> z<}gja*x6%Nt$j=e`wHq5G-GOf2zd8$`u31ZeXD8Lx9xYv-${q7ik6#<)vYv`ho=S4 zh~K#hCTPB8?@h4)5(L4M2?2qkUXKVOc@@^Lf1Mv_QBhH?DUQcdN5`~CzTflfzA}6f zu=|rbkrK19YG7A8_4B6&f1)<^edtpZ0X~EPMF0Q*p|G!SxgUu%2wSZSR3}|@PDYhX z`p>z|>$cvKliwb6=lI;xd{QmC@_zth$lxOZ{1km41B(Q~a4&_(@sf5V702(*-?=II za@x|6#4J;dBv<-K=#}9l1f>lB54V5+HmI=1fwGP88YZ^GM~NktSr<9FC8=qtxbkgX zRvTRkDr^hy?1Yun1s+9~a`JU(AWl-S#!pI1gU%8aD_SlIVZX1hzm>9Q2@ISWVoxNn zo;!X8#ubQ1%@3c30Go{8vg?59&SnCo!)*9kfq({H(ePEP;^3{D*2Sj&o%&h#)jtQF z*Z6BJr0og?I?w4y!UIY^SLmqZFgFBgREVRLCBJN^Zh2LJ8FCChYY`;^NKaP>mzKWe zbI#xP*Na#S&wE^5MB#3?o;+gtpb)(USDyFo_(=E)Opr{H{<?Gi;IzJF`SwBB&%5py zfvZni?-s74&ws9@#kH-qo~7s-2byC0`^X=QxlE$cu5#$$ex`>3tl70ot{h0m={log z!BN42>guwxYDKK){8{U1Tx;{0<6e3OW`Es0!J+lok6+X`9>mY*>NFCemb3Ln)p&hl zcXx9;njY62(OVGY^t3p&{D|i)FKKtBNx(+>#YKrp;6lA|&`P7T)b;+F)Jda%@X7ms zf6hxVbD<j>MDm($jc*WbGQA}m8?{gD9h(=MUYaMnzOh~Re{625XuY?-E)+X7fAQP7 z0t^mVry`%dR`IT1Y5H9hH+_mZ)fc0uf^qZkth!|bWWv8l`sY+HMfLYfapepO-h0CR zEH}OJd+;5G`Fj6D<LMvfyZQ$SOwu0R({nj}tbnk6#@s8C*aLxqRwZ6TQ3(-YVF9mB zq0%BKQe^Gb!oZ(5JkS3S1c3y~J-1%2xMfFBlqIX&UGM9jF^QG2i<owW*tNCZoipP@ z_*j?My4b8qhzVtHjC!>7U92(=EclsX(o6FpvEd*=Qpav%!z}T@)rp?!5%-H;4QFx7 ztS3oGQ_zO1wW6Z6V)wt%e~VO9v3xYu{f2HOqwfrfIi97(9`TYI%~xP&Bi5*Z*l+9k zu}=UZ9~bC)D^5;Mp!+d`5ahr4i#=7b7RTjYIn^;lVF~yN0mMQT7$VEs%|<tn(>nNl zHg_*8gNmWW;>!B=@YM^T^x1_vVd$NT_e{0#$aqOfPjPObhn-*7S;?MkY+@-0fl!Mh zty`H3Sgs8Ml@h0CXV)x6(QqjgF0Az@<cj(qGT&aLLkjO+LF3}%Z-+iSKL0m=yE4{X z;kPB(dOfk6AaOmrCt?f)K)_rCRQI`%Hl=3k8EE?^bVlV{iJaJUSJ{M4vq}qoqvvUY zYP!_<B@C>bFkaI4B^x~>#R-qa1#Y^Y9u`L^xOjLR@7-=Du(I|CZ!ZV0G=vs$@EK_# z?n421zX&q<cv8M!UPibzqP02A(^Jt~NOrI}0PiCl2t|_O-{FMx-jq-&C$XH3sc9Q8 zDKKwKOiPRIO^z7a_FpAkd_Q+`P%pB}YwsbK7OdBSGcmHeFgXZB0IfEg+8_LhHZqr- zZHb`h0N(>pgn^gY(*OV^j&M+xd)L>!t1<nR>tBtxn9!VEV~!Pp0cn9jVGVS0eg!qj z#SxV?1PN^az&vk)7L|5|?PO&C{Y6ieQfh=A7ufjaSda1TK2@QBo%of*IkXfI@^PK2 zMpzp8Hn40YgaD2Y6<G^&ryU+V`r+52z_GK(sPyzxR<*O_^$8~DHZjo?l)o2vmkE!Q z<416FU%dLVrC$QSJ2k($8$<5P1m6`QjB@q{{?OTzt)()eZ*T=*bavMN`q$82(3yQW z97<cwpRS6#4V`Au`7)7!k1${tcsZ7@7i=Eu+7?O>o&VNqhL==rgqO8P?r?hkPAa)Z z0PA^SsjIJZIK=kYq|xkab#*tnVcP}DKo`C3EG;GF&8NW#2HU9TmrSDkI&MzRFu1pN zE*s~{y=tGQPNntQWtgrpwb#{EXGx5u=R+V0-h#|y^LdF(XNbvZ<TZtOtiY9@OKcgS za=>(x-q!10mGJgY`H;S7>uSeO9|kZr-piMsTsq$fWt=9fVuoFIGz=t))c&S@>anQV zUW8YAjnRldZ?*Vy)KU?A)Q9}CGyQ^jov~)=fc?<mr6DYmed-e>j2%x#+Gzp;145q? znEZJmb=SU33{A-h+#Ee<NcpoOhDwJ0reaH&3&aNAyOB+}-k+|Y^TYnmsI6NLILd9k z*r>P;!F3u|PzaY|MWT!j=L+h2>GC9#G74E*ihKuz;sYQA&}0|@8It_hT&20-3BD5G z6^GHE7mvif&aW?$Qk2!O2qRs*j~Ca5D7ctFPzL;^K$;@><m7bzCe=G&wVL^ES^APB z>|n>)&)r}Rf~)_e=zxpbf@ICE&qcPCpI_OoUj_Y!J)#WrJwBU*5CZTBK=`0%p)5fB z?ppg=yGBE9UF8+GJma!+yl|j?Q9OkXwWX^odfeqOyp%a2HC^o&Ra2g~m)FCG<>$BL zk1<y~XI`G3x?2^LkXPsy_vNWYW{J!9h%!Zw*@lgX>D<8GA%`L(M6HKHsazBb{5io| zEFUX@b*y{84LCv&820llaNgSpdmw>5%7W}Sg21noA_-)Giw&4%zp)IhddZPN-1K;P zdipTzH3(U2C$Fg;OGLKO=YO^o8XB5NW0bbrbUm2(KCE&s2V=oGHX`7&KWO~?8Hm!9 zJG?NKFmz2Uet9ZRp~bjjY->!voPmik4yT$Q6)*a}QIhSyZyx6QIAZkZ-n3VlXYrhi zY_Gt^xn!$H_X&2!BBKa&IJuT97PPc(u-7P^q#S%%ohu<N^x**^A)HX)?>VkyrRQMw z+xuQP8MbPU)YRGwSAEQp^zJ<id`{3t040Si#C{Mw4xB%Fg!ObNb`su<Q|LT-G*5mF zA;sT(fP32k@&a=Zf8@KDOsz}9Mte<nlGAm&8bW`MW~_7k4^e5kEjxA1FCAy9yyv-s z&(uv?*La-Y7ZjL#8&}(Mw0^hRS)I!<mPZ61PdwSeIzD>LP!!7oq+i2HCx>Fwbl1M< zZZkd@HPi=$>#a@bWs$nADYX3+MulU=&;?qU41%eR@u$~eZu3GzX&URYiZ;OJUF(wv z0xvMf$)KfB?_fxZa^Q*m-T5rD)NSPhW(hy93;?9waaL47{OB@NGOlY1Gk3d%#ypn! z_`mNRiF42hQ|u5L?F0<Xw}C~vp)96fhG`%Wh!Hh`xmh((yC$x@!hmK-J{%H&JR(!x zn7Q7LN>VH;?q6}6J)1w9v*7n#`gfonybFb{U|WxAkb~B(*PbFTUwVyLmWhcqebD{p zx7ye(y4JxpZo#jI7?Z$Kz`K?YsMzASnlN5FV$*e!1D3IP01zxXpEFt+*am(TnHu=$ zV~8s)K~Rfkg|_mTa*wB@yrwQ`#bkr2%Ad$a^i^%eUB|)5n)dyh$=vI3OT7WfyJI%# zJCuhQiDGw`Q)7T<2^>MxZ#At`VeEZ8@v2$Vq{T{>KM{_g0Stb{DyQI+$r=d^r*mu8 z^z=l@u?&q(ma`L^a{~jEIo7!OGm-2~R=><5iZ&>f`Ws3&Vq%U4r0@P6&xEZ#=xMmX zJeZrG%jp2$t#nH_oh@*{TqKIjCGiv$yMvCh>s0{pkHxi1CV?z!;ghOfK0g1#>2eKg z?Tk#ETZ`;~%fE?T`|VHcf?P2gS>BI62&E|Wu0sgu;4W<q3oy5SR5G~W)M2`dEVIsO zlD?$}h3YKMy~W{+<&h)#=N2z*&5%z4a_a3vLzQQ9?o3D!loaY=<bT)Jk&Fk#Ym?C( zlDU(~d#n1CQuciZ2qv#dq{)&HL4gl^1t|Ooz~`_WaeyINYTHHdCEr87>Tq=q55t3k z{QUS$zWw1zEhD3Yj?U&pv(OWTJY~fLonzQgu~Ok6$N4JJLp`=P+1%PQ;Y%ElX9O|b z@wxq0+z3RIn19)r8A^ZE5Q0p$0ijUp1Tgkz3t{kH8}KD&t--0o%W>LKB&c?G)PWo} zfjhVXAzhez&;2wQK45WTVxnj)5dN~5{n<wu<729F@<+v*^*0~go+GK@#1HcZh3-SC zk+JTO!ekj`yuxG_vAE~dFkl<5HLE}<kVSd)5#!0qNA2wU$pG8dcRuFHnKw(SR%g4j z>)nzU!MEp~y@tUQY{z@3VFO|G&R+j7!9q&vi>Dlxzb%w}^OktH5pQzn?@Yw=ELbp( zBM}A_%$Ye7h`0I-kBu9BN9r&bJYdM0zbTlQgMN9;&ezH+Uz>X-XeTw%(}1A(0Xeh( zzl}8ORg$cjJG~!yt*yaUR;w|&=ha5I(lFb4h67>^ek=RabC+*o5BmIb=I<`&{AO1T zWsuY`>hSdpJH5)#Tbg_KI!Izj;DdfGQX&mi<>f7J4aK~!_uc&;V*K{EgMCukT5qeR zn{K+w)N`aR5=<_a#{U}3-PU=ls;dVbO`Bw9<d|pO1Mn#jLrY7)mgbj~qRTQ$*E2pT zTZ)TcQASw=+44~&kU*;^vx-Vi{BHhCQn9J$2K<}sAe+8o&IY{#2A`6U<6vRXzq8wq zpu;uhtE8wNy)FXSM|Qckx0>JcK}PmrWD$7=MV5L!Z~q`cz&7kR24Bkol4dXCT@kXb zV>y;e&%XGS4*N^LOXU^Rp0wu|4X5jE_jZYz=4q<n{VQ^*tLvoToBCjZ*0)GNDd&(7 z0ufonnSsvWlcY$n94^^K&*kjiqS14wr|}+Qj0tRJ5m9`*TZ{ph>5BCZlN=})BXxw3 zye97R_UEmHWg8RYgM^$M3fS%FBq=HB&-tsrI0DkLcboL!ZsB*70O056yv-(M-Utv2 zfe@mSyFdUtG$QcvZ(Zkdi4JiLg@Oz|6q)>q1oNF&Sk!m1s!zcd{AS>9mztKQc9%`% zTM^$)r2@^0(V1Xhvpe-b%kv!Zz4P`pY1hN;`-o>HNLxKV7>JG%@UE+7ZWmo{;8kwY z+SnQ_k8Tl2SJg{JZAGBBN=xPG1z|uyBwx=Oou`p{v4CUxpYsd%<Om?NBeL@kuF{*X zn>6`0z}-1L&*l?B4}VOxx0}uIPYH1J2_hGaWkQo3Cr2%tpEn;5&*Hw%8`@pG9`aG` zI9U_%7s3DlJW2Q~nnp=Ye1YzNoX@_Y-2~@Q;fU#cCM!%We@})xrFTo`6wUC5Nm~3Y zi4`d!t@`XwPP~JJlS@Bie0L*wd#~x})L%idV)wVFS!}*4FHp8$4|#*nfdo-JdSZD@ z#2fp$)b2zf?%lJ;33MtdfZvOYLbdv}#%20C`Ss1sb1qu0N3+h8H%S5P#x403tz4)r zeb6u*)z&!i-D_pmxv{m?IRviHO+ykMwmg-^2Y3qLjm|<Yz+7mbediW4%@W{v*7Y<+ z)hw1OYSjMftft=kn_hK1zt{2l)`1T{g|JFWbe_Gz_(N{mQnKzlY=y&C(U>DgHr$wd z%(0tMPsrsiaIa@Ytas(`AW5-%AiGF#RLE#dFpLNWgi))pGkiPgcq`D36`YOLL$U+& z*m8Y)2b1d@oNQc_lwB4ELr?2Y8)#nWmX#{&JoIQX*7!EzoCV@DFG?Quyn&;Jrc)Ym z6S1B101dH9g5<4acS(hDOI~sDixkzZrg%PEj<{sF+-vcVf4@+|<RW3bLmo^p0Q48q zqsIEVYW$j5)6&7OaUStESz<bzv^t~}3c!^#T40;5gGn4n!q@3GzdjA%(iOeZ1RGQn zo|(Z;J5R@T=bQ)SeKrxOvbAxs^!NW@+37huD5!=&$Vc&V-G4F)L-RtPvW)yPD?)E1 zVq^i72fs#DgPfe2;N_tF?J3ub$tcnJv!<rYrY1kCDAG0?Y!OX~-1ZWZU@iGTzhh@_ zr{VgLt8w80d5e^gP@~n!B_=0So6~aL&%)<<z9zfd?Nj`L$o#K%$=#bng%s@o8Re4Y ziJ0)s?QM&^&u4)zvfr>RDd0*<qEg|fbX8XWBOdRK48OjV%v8jqS3o0aYMFRrDZ6#Q z0?pu+F}kTLM<b(_C<_)?NSYR$;2lAdP)sTaN^PnC8I%vAeD)d)<*;ngd_heD`VGs2 zvvZFzdO|H`qSe#}o*;F~^>@Tx;_s779j=w>#?467Rf<Amqs;yJ)MkJ9egK&{1@)g@ zqtO^`epCrV*Hg;ZNjh#6H84<E>ep0L1)(Yg2s(e(pDVp}5sKzQGbcx1=$G3~dvaJ- znmq^_98Wc9@w;i0^+zSQ-eSlxcY&=#*mME_1QyARjA}@Hg9-<YjL><g#j$-VEv0}# zkPRmp8A)NFS4chwGhhRP#+eMM0U}7kO`6$a?ct+BH0J9Kaegg2?9VTPz;K=VvWUk9 z)mDy`+P`0{yoZ4GB;Ed{q&0vdLE$8}U8Fdi)$Zzu7}1u0)j&V1K>w6rf2jt9Oe|5b z@zp25@d3b3*X`=%;`qms3k}ad4iDm_nTR>A4LN!BdIb`NtTmRF7A0-qc!l&`yA}bJ zJYtoW7B{(SQX|@ci>YnPAbg?_>Z<#r0?!HPBw&GnA0mT{tUdR=A6Z*jZT=pTweHX2 zPNn6rM7~qg@<gP-sbgYdRD1`>Lq39VtPQ<|t2rOyAB6#3yW+DY@Bk1bdk=EM7X!iv zOw5i63rV)Mf8_54D@MMK0)zm5GvAYh+M#m7;G0)C=~kxAiStMdIdpnelKFwqw$Jar zuz%)XP4260+Im0@{is@$A1x!11MK+7M@+Fa`T+n!9t<uFVzA`lreE2Wz15l5{<u0~ zJ^y^BPZyait(1GsZ-bx)7rX+WW0)6h>Sk>wgqk(UZGjdRjIK3V9Up}loH|a~S6o&0 zc6YUCXjq<xBY_cuPd{thBY;pmING@7^dilKi~7(gdv?P^ETvc5-g3H<hwC9l7)WkX zbS+l#mMiQXeSs+$i6aA;y~dm^-}tpgC|L*r03QiS)==*Gynp>=(I<x)0Pz=__G|Lz z>jH(Dxe_S>o<fjW;@-4?5Euh1Wyx*M%v_*<1Be*f>=m!m+i6#8=seni8!)PA>3<zb zbh|nfYbJzDD9CM<iofYN%ldg{1D2D~JoX9)K~d<n>G-_{Df1cr6C-gi)QDaz-<p}( zVHWIrku9<2n;fZo5IIv20N~WPq4r{Xk_ri3%Wn<--WqI~_pu_muWlCDE(7c_7%hkF zOAdG%vEhp`bvw0>U>FG=qwtn-+UYZpgCygh!2Hp@-i9L1GM(eyiJ+3aEy@tHN?vjC z$+>Zb$fb**#!Ub~158NPJU2UA?PjyzQylcPPzJO+<xAgHsPUUl<$kv-*gBD41^V9= zBMjZU%Gna@6F4#y2jcgNpd^4cNb=^O^$Sz5Mpq-6<9%Rbrqhq|=H>^czt|;%mTXXP z%wg|VXfkek;qC$|MYRvUNFm1T&HG*%RbcAs^~+t_Xb|+xOLhR6ypJzvN$MQk`}tVq zH1iwqaVWSTIU;Y*7tP!NwM?$!wJ=pOQ0xV-!631eIu0uu1LZgm)^(N@p&1UMV`Ynf zH0!K);Ar5jMD+N!zaw+JJQdC|%d66fvMZ0}yB+hs+hmhIA;M|@ERfsAGu>aRWg36z zh+|ItQuvBEOHDr)(I?=jO+ra&L}eIXyhB*BS`BCWGDMEJ%~fE0HgUGmv5%>~#q+4h zF$3+|Pe(_0)>2n&_<ZhkwV6mW$7l1y(Z%pp@Q(0PK;aYYits8e-71ejqB837dCCK+ zqYL%Bt}CgZqEv9SNqwc^bG0{W1h3w8O7_(VstK!UArMBwq#YhJpSMKN*8XU!2q~1R z=64V!eh9G6Oh;FD{^w5@XLV<m#HVtmvAUcp{%0-xQb9}6TxdP<DvUPg^-=4!O0cu8 zuA(p?<SEr_0ejUq@obbF@|xUSL3h)8cULb07t{6v=>Yt|YafY9+vRasr3NRDZw{lt zpRez1^oaVRwK7n+`5yv=b;0`SZS+k$s+JDq_?<e*W+O%9O~Kr&bU3$b;Q06g$6{LT z&T27x!G~JGdgas17qbcH7;*rFtQm9F#AR*8W^K*pIcsBY-wm8SJN1@0{q-bM*lA~D z_aHzWn5g=6y2`Q6F^vmlR|}(-*TRWJB26>Ckt)hWGbqyKm}=}XMZAl{Mfd+_0eGpp zJ}*zvJ<pO3x_$@p(KYrw>fdQ@=e-`amXZnzT8$T;otd50;-;ZM`W#&%8dc4fFUuc1 z#1P~0lgf^HFhsn+C)?yCakzeljdKVAoaby^8B-HjRXH{lkw7^}I8abjIm9HAHH0IR zMkrFmx>n!wdS>I^gHz+r5}Ez~<~+8HI=FPE>Ta;P=j$8QbY2d#=lxgn9iqWk71zq# zLkbLD=60K5+iAkHKHUkAui{JXK`edIByEP+mV+in5>$K1NcW3LU(vP(Q(?mj)@L6; z6fn|R4Qd+bOf+5wN*-E>6B_o|(lKS!+X`L!f^^j@%e0-{jSV*Np6>|?=S9xCjWw=B z*avUK`y)Ynx3v#QWu4uYQ;B0t*U3r0H5}l;PQWHb7&YLFZ5KC}aTy|T-axqOG0bCO zaBFt91?T>By|p0SI+@}x6L#~G;5@+5!R0V0QdIyGbd!3EX?y!88J;5@eCjXl<Ku++ z!hY@@yd^8kr8B;Da<|;U%!zGj$ioLHai&<}Cdl5LwUZOF8NWUw>FdRMJc4W{qb8?9 zIK6U*nX4_IG;_U~j2lD51-!>|2W_aRs7MI_5#ZsjGIZ?`AOxg?5W)@Kd{k60j!vL! zTdwcv!MzU;b++n~4~Mg-cZ2!@0bx%R$%78_22!`)81xcz+yne14_=UbB5TyGo<jgw z=XA2SH)*k(6&R2jADV12vq>@i#j604>9r{_<mUb>9?$d4ro0O2^h@wBBpSy13j8Vr zf|Mav?ocR5HOb0N&o(yfosMUQ7lAxFS9A?)uk__LMV3u2rsnq~UA`H*Qx&0Yqd_dG zOku5OnS0Z9K@)Y19}*r@QL+<sky@_oEB)8%c^szQqAWZ4x_C=%l{T(|DjSjq26W0$ z5a8QtV>bP7@7lr_ew=VU1q=%w=e6Z!i@(^~-Hn6eY`q_shg>h>)cbWe(J&={v3`*c zpwg0{^WdNbNpWE`A;7KQIMC4qOdJ~u)0i2>qGykB7hL$;{P5&tIVUHpNbh?jD3Og0 z=98mUhA10zE6_Z<m%v9$W5dmr)92~sb^N)A=&6P_Vnh(@N=Lg!{>aDD&Cbissl?Eo zB5Y?vqzk0PUa0*kP|oEsfm9gK)Z+rJf@?XVxi7Bpye0L6Jk`Zg7PD|_BWb$csI-Iu zO020Q7Z<hUD=Um+Q>pbILEPPSU~?oS{zuO2SM@hExFWl;aTIf5RypM|1H%6p-7T0R z*dYbYG?GppW)-K-Pw6OY5@S?+ljSD4`QWE3SB%Pv$1sDmH?fS!V12tM6SSeoHUqt- zuR2m=MFCv2QqzQS6oQ~@Spxr2bII<yz7<&Bca8F~%{qf}QK&Vaky@8I9H0F@-I5t2 zrFjh^GweSM;^j08=YF0oD!fCeN|?W>14_<d3B;;B#pyaVwYUe+6v`SKX1Qmj`Eo?h z2|-G2^vlWNp?m%q>*+VMrw-lr6UL2pTF<rbd#}Plu>Qtm5MW|yz1M2C0wJG-YsOzJ zJL{eGbe%^B)Ktfq7~qQ+KMV(+@TSGuZ)k^Uj=SJLFZ`%k!#tKT2cUO-Bbs3L2~zk9 zObDgQQUO$PlojyY2fXd7H5FLIe`-=HFJj7d&tJAhRhcM+QiUz$yN-PW-oGr8sBOwz z9$K3Fww#Nq8mtWfI1E|<BzVn%3W33(-$8PahX}Q2@VM6qsE(>G&=jr=x&MihI4Xpi z(rnTJT%yf6W_LnY&V8IKUYLyA%YH)zkSW*6Oi#a<hh5Y^9q<r~yRC=Z#-vc)ais_c zcjaw0<=F$ney6~I`7$r_L45t;AG1gX$XPyI+?n9L;vL1-yYB4&?#;3DEitYjA_9dG zcQxf@^7U15cMKxrWx<O3njnH#3(Yx<gm~tv_)(x?L7{A0=RU8^$_Y5eXMZ9JWw!Ba zBMR1dY9cF>O5c3Z#8vNL*z9H_FX7ZbfE$|v{Y*_?lHM5lJDrr);=&pK+-6g0=-{LF zW5CBHW2N!t;&oc)LLB!)K<3{-@*_1KoJ=u#MKlSW+{i>n@j9cmELvLYZ3V}_@2;L1 zjQ=<)_bw99BTd{HElcU0X}|vWXM1~Q_<Xc|#%x1+L^~la?)94r#^!$!WeNftg0Qc1 z-*LnRV?7Y#?p|G@ZFka(n6BT^Z*;?v5tH78Tygiy<Ad}``e`qADws0l$u*S%JD)LO z6h(XC{e5#J9}7WQsag7gYEer|x$IbtSxF>?4kBgvr>g_dlqFI5=}4+A6e!Ce7H`B& zd#G}hVrLm(b~<{|7?8Jlxp*hc6Z-!B`~Q3~9_OaTQ^pGP*w%p5-Dr-kiB;^`sfSVE z$_b;egC;e<v~<1op2~-WN1VELuYP`Bps*mulLNvC_#CS4^TCjE3!*FpRI0qM3iTe! zC&EffOKqF-*E5RjGMvCx5|4#rCytN*!J)0L9kkGfHD6HJ+du#CS*Z@#Q!Qg3<e8Kw zTdx(xbp8N21h^fbZmjP*jDXT*AzfWv<7D1faRGT6+j~1rw@n6h4s#KFqJG<h)dP~A zr`K`?i~Rj40-%ESHSGXdo)ryHSo$fLDvSn3{Y;EfZA9?zpr8>Vt<1qrD<V-R(F*Ui zmS^PP_4Ul;0hK-0X>)V?)G*Dpl#{_SmV`oB?Q!T5Y>?Ms;-vGsy?yDM`E=G%xS8W# z-qBdoQ7cTQd6}Wb?CR3Msj2)4*3<Ox+Fbp5zZOd__$Yx75Bd{K5o-{09}47)(42>9 zL)*a|#F{kurO|m?m7i_(4&MIZC)FD9FdAX;y9ZT1q6G;Z)#<d~gAh<S8Yy?XzR4BU zEJ>|%ZWc`H)lg_$h|W*tvgAOa?Lc`ekBR2bHshw?L8hjzb7w~Kn%5z_k^xR;eo_3l zM-+oJ1qEkwu3JpPM%8x<80WyN%n<>SSHA%O<U4t2295%P!XRN9?U4lRP#KUJQX4U( z-5I%2BFCTk_gT_Lr0lmXoP|c6|2*yQJMCWz>)jo`kQI4{FSW^^cP6TF_OiQHV4y6Q zE?N_~3X=hZQ!6Ggsr_2k<Uwds15JN<)iO03m#rSTU%)7yd}V*DEGm^g@9rWI=5<?~ zI`R9RqOYx;*K_s8pFq1(GjIk@?c!!<fXw4DeUUUu83IB1sLmP-iMg?{k;%!VehVrJ zk;2kM&-lnbwXcgyfId;TvaDwXbsuAl1aMYq*w2dTIMg)`2KQS`MG$`A8Hrv02LF9T zwPuJFB7H(C+xrz3S+oIyDa%gRITjn2Cm*U@KnnR}Wr3Q#R&;$Yet4}0kLt_gvw+&o z+0-Ark%x+y(x=*jBT7N|cndIiS35fy9lp6k*QhGzBo-?zSkv?bn;yyLVU!U0<L|XW z7%LmyPvK~DQA=l<yE!H1Xbef}$^(jFZJrcmSzreQ*O{04owyz=;__hFZ+hZ5@b~+m z0~fM$?D4`u2xA^y<t)CxyrhzZ{DYBtUIjYnWX3xC^{HsgjE1v6sH&s5C_d*R{kIAo zTfP68)2=RJq4-mg?RvB_OA1lg;0bJioPCA3t;gqESy|vs6A#YBwCk(eY9a*0LdJPX z>CIu$U(H3#gco)6e0+U*I(`i;>5u2pT5&y55Lu4Zq^;uJ55T&=hsc0YpEl|oGEKo0 zX5H+~yh4>{wURBff!WzcCEEI0Lel#$3`M+Gw}}Yy(A~UHnO?~8)`@<Hmk>hJAVJ68 zM;#OJZG1n7maP5e<{lB%+3HeM1Im_|;3NO4SWx-y%SXDvbkz*550_}n<`gazY5I4w zcEf`Z`cK5G5pK-M-QWNB`6^v+iWyEmND3E1m$};|GJjD6^kcsE7}3JMf7L{F?%Pt@ zvqZ-&P&A8PI{n*ErVT9Uv<S&4!fw`56(_hqh5--=71pGi!1rZ3<s*VOGr!K;m++Br z?1=@xV>(}3`toH~jLnmf+K&Ik8=6_iPI~CzSyGQSXZQoc%juEIcvXod>=j<Q@C+Qa z=oebVc`vZBtPA~Lp~1oD%5Ng58vU|2YDOY{*ZVzMimR(dk^`Mc92T?HPqj?{kH8j{ zYK}2NsY~9d$k16nl|x<}tpuw)5B~>K;%G<);Dab$3#yF>8I1_SlC7$#?I^|j<8yg* zdt)zUV5+#!sns6`=RGj^ZJVg1=Vk1gZ${BuE0&br^$bGLzF{sOn*A+yEOd8!v#tMQ zC4B7SH9iXfAg>8U##ZxMoHQA*W5LTk$VR8X`$D?&HEupBrKQQkb|?u^QP=H>HkhgA z*y!nLf4reOYf>DGWH@_t=@M(jq6rUs<4o&+ZU~_A$8bh@8~{HO@(BzG{St<v{<oCT zNsyG<Edx@9K;<%u&OAIZ->sR8^FW5m&~O|3zRuXUFEeKwm-*GkOnfd-JsXpu#*;Z) z+w1GEed3v%eL}Y;yg)buyYSQM`l*nC!sXc`G3n;Fx4{FQI6COo@7r-oyrQq9$7;Jf zQFjrs<+QWAD-XQH<eKQu)bF7V+^s=!J3EbYb8U5Xr*bToU8-u>6dhd%K+R<CQ+z-{ zW7LEl01{OQqU1KOb)&a-hSm2e1c*vOkaBZ?pTLvVEKR^Oq>CFGkfG)U1bptX@K8(W z{F9fLqSD!U??ZfUZq|_CU%_%ibf4gIik&Ehdb*XN*2$CZhnxhcr17z|c<s{u<rmD> z(vM{pah|fADxZ*zco0UzwFTnDFkSD2xhVP{mkE0X`qQu0dcHJbJrK9mgbNGu^777% zO=kDh>FMAS4+u>nC@_&dC&Jldo8lNRLp3EbjOL<&weJB>br-Kfd5(%|s;H8)NEAL0 z$L~uEVlFzXt<_VwPW(D7vrO3`_(*oO3St@UUu8PVBr29bAJ(MT#Z~F5<AdhtWr95B zdP?E>^CB*V3TU(r=PKepdfjmimRxqq=r|}NmdD7+j<7?yWkUodM*Wvh>Pb(@O;usa zB%STJ-u_5h`msRGE*dkJ6MA}T$WO!PCWM*{J2FR>vA-k)0DSof^ovevns`jL<o;%% z#!BD6VC7HLd9K1XtcDwgMJ}$Fa5Lp9-KwNC2<FDh60JJwdhgx8$oI;)NH|TIP`B%K zA!^OdXv2dwsi$kXM;TR9BiJ3jy}LQvU^-H(JKtbC@(}q^xgjqky;GSb(Pjz~8<mVZ zM!!6ZZQM8djXlO+U=parKxTG!lgpxn0&kM7z5SLFt5%V%P#L^DB|Kl*m@750{M{Ov zCjgk|U`hR5p3%NjeJGwqI>@t3=wwN6lwRL?bamCLKTDKPSX!3j33wwT8U!-*!I+e# z{`pLkg6kMKd6x_ahVF!uT%b&gLp9ZBl%G=dG|)%~9G}R3IOT{I^Sf{YzT;1CxcTcH zA8(ZMeJM#`B={1WOV;p|qK!nh3w#gM#bfUBZi1H-09hU-ziw=t{1_3D*IkaJh_SVk z3+{9-To>|uHVopJ|7=hz<{Fy3o^N%-=yOe$_cUOc2q1&c(XfAS-boNQP2+kkNlf*a zvMBItGNrl0IuKUEP5@Z=fY}ku*BjePf${D6;jO`3^vcA^njb<&Yiwcw_kJ?PFaNkc z#A!#r?(u9u2rudMaJs-+moVBOcrDZE^71T*+Lup$EQ7psOP@cT0HlxzT+6D$5qHY) zclVzRM}K@$m4nn!a9FUJykq1E>5I6WS1wEm6igalNm^Nta(}}SN1gYUQ-`xtzZ_nM za44ogCM$AVAfoJIOJUSu&**ZtcohQY%aUVO>^i&xx*7;Rx%RVn0x4kH2rUFp+SXg) zDpRMR(~{!g(RuN~v9V6@(Y@f4{rx%Y85J&SDTn_BB$TZTZqg|i)%?a9o(#l?(5P|? z<WaH|E>xxS$YbBlkglcPOVZhUd0qJj|4Zun!eR8MzRUYENmRqpZ1e>b^Mgl*-JTB3 z6qVh$B!>tY))U46@5OnDFnOpZ$D=25)UkZDVOT~)*XO+lb<4sISaSAde83k@Ip-nd zld4jB0r$rKI)~}Ts3`Mpa&J#B3K%;|PO}eXrt~a!Mxv{syu3gljVIaeBtnbxIT;x# z9`3wLi*PBF*j(|I2RUnEn7xb8iu+=?kOw;|Qi5b{q1!Dorf0l$JUa$s*!%S_%Mug3 z7mP!SxQXl)C<3#0^$J7~y7s_$;R>?{XK?F!5+wuVQ_%SR^-Tz0tVl^R|LTVzFrk#E z;k@g6NTDII5d!|Ytfd8~XjiQs0!lRl(Cna)jr0--skZz|q%44-SWAEe0Kmt^M(Haj zrV`0WF3cLIL_AkVr)nA1MhF0)d=C!~G}ENZ@dR|b1j|@!Nh}p2qd965C`7XuCu``C z_~ZPQz+1zIr~>>TcjpgE-s}Z}q#Pu+U^qjBsgf;d_@e+T%S#0nG1za`0Q^^@6T>Xe zB7$TjrH`)%$zfd$FqfB><&PM4cXou;?9*G=@LX{BBpXQjF4mr*9jF4ZTD2Nb?}q`2 zLPFdXB8SJusvY}Q(~M_>mqyd$7~eR*Z6z`%4G}b7#hq~AytMbNHp(#elr$zs8{6o1 zkRYG;4QB+<K3@gpPudSV*hJQqEoYImiO^BpFO%1^jMeM~TMJGRhHCbT(qtJ4S|pZ# z;-5-YQGzy7v+$=$<U0_mi2<l!cAT%D{Yez!5_X;&O5Ec0c+#tj{Ft-W|3_6Qix2=w zSE7u?`xu=+S~`X^u(cT}<+j*KJAR%e_54fyE6$Fpz<4bj6z4eD_j&#kd$OX$`U&U4 zM|UT&sWWlV9>IIR>U9Y6bnrg!Rf=AXj(Q2PwJgl4UKudRU+iP}Rq&U_Cke|q^gTam z98IG3Q%Mk^5lx$G;L?V&h;@I?ZVt7KtqS2+pkKzve`ljCW?8N$6flW0m*t9B)(K-L zz-JF94Y-@RI4Id5!XB9M1^W2ZmfCA>9hY4h=VYXJRC2?CkHKK2bURjx5u6{{NqDLI z%WUc(iH+@fmI+@Ci`B3EEE&X@Y7tM8V+GcJ%r0Hvd0`}g7)n6E3w!^xLF5SdxRBc- zS(7#biV`I4fRJ|JVwAi<d}&}9FKPRr^RRR~g!G<rnynf4k`xhCzsC5n<M~hag4l2< z2|F3bkt_o;IU<(7zYzce!9E?lRrkKCD>r!2>~XdqjVO`hocbY;zu-UD7==5hgg0-p zi<8kNt+o!wc19z3NP&?g-0BnEqfWb*Nn|4J_wL<009Sg%^6DTE*yG#V(B1xiT&sN~ z=2lo;@FZPTfjkZrZE%1_8;{_aw0yH>F;6ekvV&;0o$ppE4<*m0lyl-SxIoZCuuzZ` zC-8$ngo31DKS^Yz9VDNvvH0naZ~IWjy7uPdDqQjLl5dheApoX<NRgXa-~Ekd(hIym zHP<^%PL7P&XRxw@an78B;O6pLe~yUjznKfIS0J>$q}vf$eXZp*06C_-!Zm+>xM*Jd ziO7CyJbUEmz63At$5;;HBDfNeg7vNDXuRQC*9l|T&zqs71ObNA(_;n3Ln02|t`dvV z;^u*xr8=XEv9ebnxv5v8REA0reIhxk{MOH5G7S#Bna2&QhtULTncutlsfUNNZ91c4 zEW{|rYUPu>Nr_%%6zLb`sIgu8{}&Al=s|PUIZg|S@FuG&h>OYqEI<(#sQ;t|lepJ< z`#<0Qi%ZW;r>4ca`1nU5-!-@cHgYiy&Ud&(>%8ZDOO(f2rIz)=`ozTQSfH(zn3rU> zle6>QAFJu517sc}C=A|syc9FQ^X~|2<bLz}w-^#&&BB?bK;Yi(nM!=&hWf>hzy-EF zaH>~rL|aWW+2$-1=o6ohQ3}-GE!il{SI?jSy)O4{l2%sxB_oSI=D;lD1ElROf@Y)! zUgF_zVD0a(_;Mswi4_O_FP{{6cYw>WTkc2hH~^oSA?7T8A}3M1^=Zh_zzeLvo&P!L z$^_%O{m%zHEbiQVg2AQLuhb>ZPWB{~Lz1(NBs(N0lZqdv^{OP!eo1DfBr*~nE;(kZ zpC7XkG@iUVbble`zp|cErd!bo=IbI@0|3;<2rmh*t_bsuAa=FUvtOslzOYB<*DR6d z%iZTSVoQ8T^gQFG=%Efp!RO)M@Awqxt+Pg~RMe1AMHeC%&K}h)uo4oWjlpH@YE(xA zaV*rHSW|-p5qTUB*Du4;9+3zL(BUHdkBajcSL1hdw<la*8`Lqu)<ycu{7w9}qZHR@ zqruC#|7B&@#4nTJ6F+g<!IwoEu4SF;g+**H>KSfnA1}@)NmK$WsA^IhVJn(1{h%wO ze@3yb7b)@a@qN!5+xdCAz?OnjOL+gu-|4BTC-v(hb<1M7J{2DaYHxVm5UbI~uBb~* z(>}pCl4uzqHdPOlA<DF!?7YT|H88B47pC7Rl8EvL!M?LA9?ZBk)-;H;e&;npQ{ShH zlCxXxV!|zF>$Ttq=JArg!7Xtt=ni(-ZLe7-oUA#iYo34U*NGT1OZfZ?2bLVLMF{ie zmnb+ra<J0;!$3T<BG7txXVT$$qH1~(eaaScL35qG@CUE!?aVJ9{=|tYUw@XwcgYdu zV?(6>G=4cM_B{)M9NU7cbmT??-XYTtLTCjep6k#q@-NJb#a+8-R}wgb$dCY~{zhhk zy4kPVeVt42#u|%h&;E4N&$E&@WxC~CTRT|KdoU2eV&(D&W1j=uIuQB+5}NxaP3~8? zHCh8zOMu_Jq|BEy#ix%XsMNiGR#sLf=FM~=Zc=H~i}^P^#?M+>Dq0NRW(b#Cyv*z? ztS+L#dKzhsuKbOM;AWl83{B3o_{Y+*e0qE$qeDX|c4Z4gFp8&(Uk3D3hx}Qag|9R1 z<W!hk-F_hOXM%Sz&pn0j9I>e)`BpsrKL5!9g{#n)3_{bk1fgsqvTvihwT!YQZ*F99 z&WYLxOD{agHfSCrsTj}1f!H+tEvPnG=esQFJ)5bD614_|u;m6__nBO!QVn`E#r+y~ zad2?>E+93Su0cH}SneZ{-eXanUZ+rSFm<bo8@O3#$H&JLm5OktH$8Ra#|4Sap`|SI zSWhGD$!Cz6ot2+c5Gyu^k>Rarmnu{qOaLV-2n@>qS-BFBdJr44NfBBHzz1p|%@k(| z{$?l&6n)|5*TeM;1$k-!fK?6~>%%fRmum04r^E`6&R60n=x-@W?~#3Qn%&H+SuPaz z@ihl7v|cVe>(+xF0&Ws&NZtIQn)f?zjzKlij|he(rVf51eZ<IUFgrh<2&bn5;fKHL zh}6?z!HocYbyu%k*7xl%t^;0<<ZP|KdHN}WLW?E^6bp&~@b<s|={|dBJXL%9(oz24 zswR-B+cu*nyiVqUktsP6;7Fx^QNiXI-1e>%DPzOH$Ti67nCA!=KRCLSI$fM_0%z3N zG9NyJKf0O{J<FQs($k~W=L#e8egqXmFLRb3u?)np3}_9|nAS6%`aSgCOf*u~Lny!g zJ@LNB+*Qn$FiqbmHqp^?@u!488n;3#aGnmAS$6yheMW7X_4MfAd^Y#0Lb0I3mYObH zdkP+=6VW#>Jr#JqkO=|C4P_k-o$q(&2Kh9dZF4L0buleAWpR`@zIA(V`J?&jyxCve z#Ib_;@#8<Ae(9?M^9jVWNajs8Pp~=_ey|^YCtJ6f(nt^^BlhYh??u3%tt>Z<_GIZN zjT8Z((FlW{3eYmvw|x&dPbHP7%3+jjiFh5x_wnqZH+apFpR%p+^=DZgQr!>zrbvpq z+QMch#oCva>D{i!i^u=|{j=duFZ9(!EL2v;E`6WAaj@UIZTT>rJI{*LHwQi&>g;^s zFD>nRX>lDyIpA*2gL=9R>}Ow4j9))`!@RdE736W(-%(Ld(f*p>|Hw<ahu9vl(iUsh zAGvpRbL-;hXk>qL-Dym%rmKTCoSq@>c>K{9<e_gaJ<bvvH=a^j#jW;9^fOf-e;T~K zE{;}&WMT-nx<E8bp!ZQ1`!mwjW~*IYO42|}$uHEFdI-R$bsa(?UaGZGy4|U%O}hHM z-R&77F{AQY`SHd0msWyOJ_iBLcRQI!uRVhJa-TI0N5D5VD7|j1*gC-mtbVFL@g*CM zc4o6_8+(qnXWN>qk4lDVP31sE)HRX6PJDuGeJxj_$5+p=t(`*_<~NtMf6L#1YNFCL zRBl;&(L>DTKQ$%+??8-cX>grVeqwZ`6QRM+!qs8OS7N9Ig#xX)s;DQEFtDlbW@Yi6 zCoed{binie`*~?pth;?8cMN-c|A2Zz{6ocp_tib}f+__fYE_1u_x@O6&yX%(=4v|= z8=xnt?=t5xcPl&-ucpapV5#H^%f9+QyF<R`QEP>PJ6{!7*LkJz1$jtB7i_%yUWIWj zpgRSdyAZ%^R16F$Uy*H$wbKDi>wPjhH8KpmW$&$HyPwup5NIeP8On$SKM**{a`bTz ztXBK@@ug?wzF{qXoxy5LKaeyjp<XTVB889E{1-h*bGzr;mRrxDY@u<pVwIL>gybo3 z#B%WuYQ>YQ_bV%Te3v&Lk`9JmXXq+tPN~FdX8leYAyEcBV_%PitiLH<dtoBwZshHL zr0{~^MMM|bj&4~G1O9{U7e7tMbQ7LW3dRCIhG|3s6=;omtsRz`2;UKfgemt{aiWsn zDfCx4NF^-!WLWAM|9;B#>FI+sS7T0d9#)a#mM>4hPX<4;sM>uHZvWaCOuFb5D%CDe zSH98F*6Z@!E;fg)dU-jir_-=Bf<YemgpqCR-~)YIs>VNrpP--rs$bP7^cL9%``9XO z^&@VM=ozpYyCub=&>-9o4LJYzy8tyirS#<{v3w89DL-@2iT#u>`WmhcP#P|8FANJf zsbY^IRb7(jh=CXRrdwKO&>RWAC=7ejko7RNDQ687o9C<eS;nW0rF>drAnw$8sF_^- zoMq<&A8k&9=g}$;GUb!zBefz;>SFm4PA&U^Z?)BhV%dd2J)~f<Pk_h2#y8z(;q#`k z)_Um!)^JYCZ+zvkrJ=-*9hdK}DDWm{YFS&+yLhxWZp!xMvBN@7;Rs?tS1CN@rP@_| z;K0U*?D##L@ek8sl%a>%JdkZyZ2_Lb*~m~7dgjknWYt8!+%FAC9Ni=|6$UP5^|2%@ zv1dGc&8kw8GCTz_|Nd=Tg6rGg#B7!_j>?=q$pKf9>x0-&{}*lmk^fRDZ8e1a8Pw4A zi=`d4^%@2=DBaD_W*P|Bv@oTr+tJIF=al%q8wSD`E@!MgGG4qnsHPffF3&CqsO+c2 z)u+<1|E|FP$2aVM{-*zL)cS~I!T<KWt+jsvSS(_FOGQx^00000NkvXXu0mjf_4Cap literal 0 HcmV?d00001 From 5095e97ea6d4be29c5fc803ea613cab69f5dd39c Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Mon, 19 Jul 2010 19:57:28 +0000 Subject: [PATCH 559/674] use the world horizon color when view3d render only option is set --- source/blender/editors/space_view3d/view3d_draw.c | 6 +++++- source/blender/makesrna/intern/rna_world.c | 9 +++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index c3d034eebd3..f282bc204a6 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -2208,7 +2208,11 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) } /* clear background */ - UI_ThemeClearColor(TH_BACK); + if((v3d->flag2 & V3D_RENDER_OVERRIDE) && scene->world) + glClearColor(scene->world->horr, scene->world->horg, scene->world->horb, 0.0); + else + UI_ThemeClearColor(TH_BACK); + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); /* setup view matrices */ diff --git a/source/blender/makesrna/intern/rna_world.c b/source/blender/makesrna/intern/rna_world.c index 8d5e2291724..4d0170bdc18 100644 --- a/source/blender/makesrna/intern/rna_world.c +++ b/source/blender/makesrna/intern/rna_world.c @@ -33,6 +33,8 @@ #include "DNA_texture_types.h" #include "DNA_world_types.h" +#include "WM_types.h" + #ifdef RNA_RUNTIME #include "MEM_guardedalloc.h" @@ -42,7 +44,6 @@ #include "BKE_texture.h" #include "WM_api.h" -#include "WM_types.h" static PointerRNA rna_World_lighting_get(PointerRNA *ptr) { @@ -476,7 +477,11 @@ void RNA_def_world(BlenderRNA *brna) RNA_def_property_float_sdna(prop, NULL, "horr"); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Horizon Color", "Color at the horizon"); - RNA_def_property_update(prop, 0, "rna_World_update"); + /* RNA_def_property_update(prop, 0, "rna_World_update"); */ + /* render-only uses this, the notifier could be made to be more spesific */ + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, "rna_World_update"); + + prop= RNA_def_property(srna, "zenith_color", PROP_FLOAT, PROP_COLOR); RNA_def_property_float_sdna(prop, NULL, "zenr"); From c7ce37471d8f7858735695ad92db1731fa2c1ae3 Mon Sep 17 00:00:00 2001 From: Peter Schlaile <peter@schlaile.de> Date: Mon, 19 Jul 2010 20:01:18 +0000 Subject: [PATCH 560/674] == Sequencer == Bugfix: free_imbuf_seq() was closing IMB anim handles on nearly every change of RNA variables. This can be *very* slow, if you twiddle with parameters during playback. Especially multicam editing... Now: we close IMB anim handles only on refresh_all() and filepath changes. --- source/blender/blenkernel/BKE_sequencer.h | 4 +- source/blender/blenkernel/intern/sequencer.c | 60 ++----------------- .../editors/space_sequencer/sequencer_edit.c | 2 +- .../blender/makesrna/intern/rna_sequencer.c | 2 +- .../blender/render/intern/source/pipeline.c | 2 +- 5 files changed, 10 insertions(+), 60 deletions(-) diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index 002a1958a13..c5417e04780 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -191,13 +191,13 @@ void seq_dupe_animdata(struct Scene *scene, char *name_from, char *name_to); int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test, struct Scene *evil_scene); int shuffle_seq_time(ListBase * seqbasep, struct Scene *evil_scene); int seqbase_isolated_sel_check(struct ListBase *seqbase); -void free_imbuf_seq(struct Scene *scene, struct ListBase * seqbasep, int check_mem_usage); +void free_imbuf_seq(struct Scene *scene, struct ListBase * seqbasep, int check_mem_usage, int keep_file_handles); struct Sequence *seq_dupli_recursive(struct Scene *scene, struct Sequence * seq, int dupe_flag); int seq_swap(struct Sequence *seq_a, struct Sequence *seq_b); void seq_update_sound(struct Scene* scene, struct Sequence *seq); void seq_update_muting(struct Scene* scene, struct Editing *ed); -void seqbase_sound_reload(Scene *scene, ListBase *seqbase); +void seqbase_sound_reload(struct Scene *scene, ListBase *seqbase); void seqbase_unique_name_recursive(ListBase *seqbasep, struct Sequence *seq); void seqbase_dupli_recursive(struct Scene *scene, ListBase *nseqbase, ListBase *seqbase, int dupe_flag); diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index de4e7a5ccbe..f631e42e05a 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -3267,59 +3267,8 @@ static void free_anim_seq(Sequence *seq) } } -#if 0 -static void free_imbuf_seq_except(Scene *scene, int cfra) -{ - Editing *ed= seq_give_editing(scene, FALSE); - Sequence *seq; - TStripElem *se; - int a; - - if(ed==NULL) return; - - SEQ_BEGIN(ed, seq) { - if(seq->strip) { - TStripElem * curelem = give_tstripelem(seq, cfra); - - for(a = 0, se = seq->strip->tstripdata; - a < seq->strip->len && se; a++, se++) { - if(se != curelem) { - free_imbuf_strip_elem(se); - } - } - for(a = 0, se = seq->strip->tstripdata_startstill; - a < seq->strip->startstill && se; a++, se++) { - if(se != curelem) { - free_imbuf_strip_elem(se); - } - } - for(a = 0, se = seq->strip->tstripdata_endstill; - a < seq->strip->endstill && se; a++, se++) { - if(se != curelem) { - free_imbuf_strip_elem(se); - } - } - if(seq->strip->ibuf_startstill) { - IMB_freeImBuf(seq->strip->ibuf_startstill); - seq->strip->ibuf_startstill = 0; - } - - if(seq->strip->ibuf_endstill) { - IMB_freeImBuf(seq->strip->ibuf_endstill); - seq->strip->ibuf_endstill = 0; - } - - if(seq->type==SEQ_MOVIE) - if(seq->startdisp > cfra || seq->enddisp < cfra) - free_anim_seq(seq); - free_proxy_seq(seq); - } - } - SEQ_END -} -#endif - -void free_imbuf_seq(Scene *scene, ListBase * seqbase, int check_mem_usage) +void free_imbuf_seq(Scene *scene, ListBase * seqbase, int check_mem_usage, + int keep_file_handles) { Sequence *seq; TStripElem *se; @@ -3374,14 +3323,15 @@ void free_imbuf_seq(Scene *scene, ListBase * seqbase, int check_mem_usage) seq->strip->ibuf_endstill = 0; } - if(seq->type==SEQ_MOVIE) + if(seq->type==SEQ_MOVIE && !keep_file_handles) free_anim_seq(seq); if(seq->type==SEQ_SPEED) { sequence_effect_speed_rebuild_map(scene, seq, 1); } } if(seq->type==SEQ_META) { - free_imbuf_seq(scene, &seq->seqbase, FALSE); + free_imbuf_seq(scene, &seq->seqbase, FALSE, + keep_file_handles); } if(seq->type==SEQ_SCENE) { /* FIXME: recurs downwards, diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index b320deb85e3..1b9b793ebdd 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -1415,7 +1415,7 @@ static int sequencer_refresh_all_exec(bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, FALSE); - free_imbuf_seq(scene, &ed->seqbase, FALSE); + free_imbuf_seq(scene, &ed->seqbase, FALSE, FALSE); WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index 4becd3b065e..ec8b45db306 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -460,7 +460,7 @@ static void rna_Sequence_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Editing *ed= seq_give_editing(scene, FALSE); - free_imbuf_seq(scene, &ed->seqbase, FALSE); + free_imbuf_seq(scene, &ed->seqbase, FALSE, TRUE); if(RNA_struct_is_a(ptr->type, &RNA_SoundSequence)) seq_update_sound(scene, ptr->data); diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 258abe9a0fc..f27698752f1 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -2510,7 +2510,7 @@ static void do_render_seq(Render * re) if (recurs_depth == 0) { /* with nested scenes, only free on toplevel... */ Editing * ed = re->scene->ed; if (ed) { - free_imbuf_seq(re->scene, &ed->seqbase, TRUE); + free_imbuf_seq(re->scene, &ed->seqbase, TRUE, TRUE); } } } From 1033b60824c291089e568e1b20b8b1a734cb28e1 Mon Sep 17 00:00:00 2001 From: Diego Borghetti <bdiego@gmail.com> Date: Mon, 19 Jul 2010 22:47:15 +0000 Subject: [PATCH 561/674] Fix #22911 [#22911] Node editors: pressing home doesn't zoom properly Was using the incorrect value to calculate the new area (also a typo in the ymax/xmax). The bug can be found on the 2.4x version too, not really sure how old is it. --- source/blender/editors/space_node/node_state.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/space_node/node_state.c b/source/blender/editors/space_node/node_state.c index 6b3cfd11135..e12730f4317 100644 --- a/source/blender/editors/space_node/node_state.c +++ b/source/blender/editors/space_node/node_state.c @@ -243,7 +243,7 @@ static void snode_home(ScrArea *sa, ARegion *ar, SpaceNode* snode) cur->xmin= cur->ymin= 0.0f; cur->xmax=ar->winx; - cur->xmax= ar->winy; + cur->ymax=ar->winy; if(snode->edittree) { for(node= snode->edittree->nodes.first; node; node= node->next) { @@ -261,19 +261,20 @@ static void snode_home(ScrArea *sa, ARegion *ar, SpaceNode* snode) snode->yof= 0; width= cur->xmax - cur->xmin; height= cur->ymax- cur->ymin; + if(width > height) { float newheight; newheight= oldheight * width/oldwidth; cur->ymin= cur->ymin - newheight/4; - cur->ymax= cur->ymin + newheight; + cur->ymax= cur->ymax + newheight/4; } else { float newwidth; newwidth= oldwidth * height/oldheight; cur->xmin= cur->xmin - newwidth/4; - cur->xmax= cur->xmin + newwidth; + cur->xmax= cur->xmax + newwidth/4; } - + ar->v2d.tot= ar->v2d.cur; UI_view2d_curRect_validate(&ar->v2d); } From 80e63236464a7e864c45e163dd059ffe61735926 Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Tue, 20 Jul 2010 02:18:10 +0000 Subject: [PATCH 562/674] * Images for brush icons are now reloaded when they are needed from an external file * First, try to load the file from the given filename. This is either absolute or relative to the current .blend * If file is found using the given filename directly then look for the file in the datafiles/brushicons directory (local, user, or system). * Note: This commit does not update the .blend to reference the default icons * Note: This commit does not make sure that the build system copies the default icons to the 2.52/datafiles/brushicons directory --- release/scripts/ui/space_view3d_toolbar.py | 11 ++++-- source/blender/blenkernel/BKE_brush.h | 3 ++ source/blender/blenkernel/intern/brush.c | 33 ++++++++++++++++- source/blender/blenloader/intern/readfile.c | 9 ++++- .../editors/interface/interface_icons.c | 2 +- source/blender/makesdna/DNA_brush_types.h | 1 + source/blender/makesrna/intern/rna_brush.c | 37 ++++++++++++++++++- source/blender/makesrna/intern/rna_image.c | 17 --------- 8 files changed, 87 insertions(+), 26 deletions(-) diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index fa1a4dec317..51fe070d0c5 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -567,10 +567,10 @@ class VIEW3D_PT_tools_brush(PaintPanel): if edit.sculpt_paint_use_unified_size: if edit.sculpt_paint_unified_lock_brush_size: row.prop(edit, "sculpt_paint_unified_lock_brush_size", toggle=True, text="", icon='LOCKED') - row.prop(edit, "sculpt_paint_unified_unprojected_radius", text="Unified Radius", slider=True) + row.prop(edit, "sculpt_paint_unified_unprojected_radius", text="Radius", slider=True) else: row.prop(edit, "sculpt_paint_unified_lock_brush_size", toggle=True, text="", icon='UNLOCKED') - row.prop(edit, "sculpt_paint_unified_size", text="Unified Radius", slider=True) + row.prop(edit, "sculpt_paint_unified_size", text="Radius", slider=True) else: if brush.lock_brush_size: @@ -1122,8 +1122,11 @@ class VIEW3D_PT_tools_brush_appearance(PaintPanel): col = layout.column() col.label(text="Icon:") - #col.template_ID_preview(brush, "image_icon", open="image.open", filter="is_image_icon", rows=3, cols=8) - col.template_ID_preview(brush, "image_icon", open="image.open", rows=3, cols=8) + + row = col.row(align=True) + row.template_ID(brush, "image_icon") + row = col.row(align=True) + row.prop(brush, "image_icon_path", text="") # ********** default tools for weightpaint **************** diff --git a/source/blender/blenkernel/BKE_brush.h b/source/blender/blenkernel/BKE_brush.h index 6a209167f93..a2168d2a888 100644 --- a/source/blender/blenkernel/BKE_brush.h +++ b/source/blender/blenkernel/BKE_brush.h @@ -44,6 +44,9 @@ struct Brush *copy_brush(struct Brush *brush); void make_local_brush(struct Brush *brush); void free_brush(struct Brush *brush); +/* image icon function */ +struct Image *get_brush_icon(struct Brush *brush); + /* brush library operations used by different paint panels */ int brush_set_nr(struct Brush **current_brush, int nr, const char *name); int brush_delete(struct Brush **current_brush); diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index c47f5a3ddba..cea9ba32160 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -132,8 +132,6 @@ Brush *copy_brush(Brush *brush) if(brush->mtex.tex) id_us_plus((ID*)brush->mtex.tex); - if(brush->image_icon) id_us_plus((ID*)brush->image_icon); - brushn->curve= curvemapping_copy(brush->curve); /* enable fake user by default */ @@ -205,6 +203,37 @@ void make_local_brush(Brush *brush) } } +/* image icon function */ +Image* get_brush_icon(Brush *brush) +{ + + if (!(brush->image_icon) && brush->image_icon_path[0]) { + // first use the path directly to try and load the file + brush->image_icon= BKE_add_image_file(brush->image_icon_path, 1); + + // otherwise lets try to find it in other directories + if (!(brush->image_icon)) { + char path[240]; + char *folder; + + folder= BLI_get_folder(BLENDER_DATAFILES, "brushicons"); + + path[0] = 0; + + BLI_make_file_string(G.sce, path, folder, brush->image_icon_path); + + if (path[0]) + brush->image_icon= BKE_add_image_file(path, 1); + } + + // remove user count so image isn't saved on exit + if (brush->image_icon) + id_us_min((ID*)(brush->image_icon)); + } + + return brush->image_icon; +} + /* Library Operations */ int brush_set_nr(Brush **current_brush, int nr, const char *name) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index fce87302d30..675ccb152d2 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -1539,8 +1539,11 @@ static void lib_link_brush(FileData *fd, Main *main) brush->id.flag -= LIB_NEEDLINK; brush->mtex.tex= newlibadr_us(fd, brush->id.lib, brush->mtex.tex); - brush->image_icon= newlibadr_us(fd, brush->id.lib, brush->image_icon); brush->clone.image= newlibadr_us(fd, brush->id.lib, brush->clone.image); + + // Image icons not saved if only used as an icon, + // but if it used elsewhere in the file it will have been saved + brush->image_icon= newlibadr_us(fd, brush->id.lib, brush->image_icon); } } } @@ -10981,6 +10984,10 @@ static void do_versions(FileData *fd, Library *lib, Main *main) for (brush= main->brush.first; brush; brush= brush->id.next) { /* Sanity Check */ + // brush icon loaded but not the path + //if (brush->image_icon && !(brush->image_icon_path[0])) + // BLI_strncpy(brush->image_icon_path, brush->image_icon->name, sizeof(brush->image_icon_path)); + // infinite number of dabs if (brush->spacing == 0) brush->spacing = 10; diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c index 232b6f7f317..c6fafce0ffd 100644 --- a/source/blender/editors/interface/interface_icons.c +++ b/source/blender/editors/interface/interface_icons.c @@ -981,7 +981,7 @@ int ui_id_icon_get(bContext *C, ID *id, int preview) case ID_BR: { /* use the image in the brush as the icon */ /* XXX redundancy here can be reduced be rewriting this switch as an if */ - ID* ima_id = (ID*)((Brush*)id)->image_icon; + ID* ima_id = (ID*)get_brush_icon((Brush*)id); id = ima_id ? ima_id : id; iconid= BKE_icon_getid(id); /* checks if not exists, or changed */ diff --git a/source/blender/makesdna/DNA_brush_types.h b/source/blender/makesdna/DNA_brush_types.h index 3b2ce6b436e..5fdc3e6dc5c 100644 --- a/source/blender/makesdna/DNA_brush_types.h +++ b/source/blender/makesdna/DNA_brush_types.h @@ -54,6 +54,7 @@ typedef struct Brush { struct CurveMapping *curve; /* falloff curve */ struct MTex mtex; struct Image *image_icon; + char image_icon_path[240]; float normal_weight; diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c index 6d5a06d4f81..22f61c3efcd 100644 --- a/source/blender/makesrna/intern/rna_brush.c +++ b/source/blender/makesrna/intern/rna_brush.c @@ -104,6 +104,36 @@ static int rna_Brush_is_imapaint_brush(Brush *me, bContext *C) return 0; } +static void rna_Brush_image_icon_update(Main *bmain, Scene *scene, PointerRNA *ptr) +{ + Brush *br= (Brush*)ptr->data; + + if (br->image_icon) { + // store path to external image so it can be reloaded later + BLI_strncpy(br->image_icon_path, br->image_icon->name, sizeof(br->image_icon_path)); + + // setting or loading image_icon bumps its user count + // we do not want writefile to save the image if a brush is the only user, + // so decrement the user count by one + id_us_min((ID*)(br->image_icon)); + } + else { + memset(br->image_icon_path, 0, sizeof(br->image_icon_path)); + } + + WM_main_add_notifier(NC_BRUSH|NA_EDITED, br); +} + +static void rna_Brush_image_icon_path_update(Main *bmain, Scene *scene, PointerRNA *ptr) +{ + Brush *br= (Brush*)ptr->data; + + if (br->image_icon) + br->image_icon = NULL; + + WM_main_add_notifier(NC_BRUSH|NA_EDITED, br); +} + #else static void rna_def_brush_texture_slot(BlenderRNA *brna) @@ -642,7 +672,12 @@ static void rna_def_brush(BlenderRNA *brna) RNA_def_property_struct_type(prop, "Image"); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Image Icon", ""); - RNA_def_property_update(prop, 0, "rna_Brush_update"); + RNA_def_property_update(prop, 0, "rna_Brush_image_icon_update"); + + prop= RNA_def_property(srna, "image_icon_path", PROP_STRING, PROP_FILEPATH); + RNA_def_property_string_sdna(prop, NULL, "image_icon_path"); + RNA_def_property_ui_text(prop, "Image Icon Filepath", "File path for brush icon"); + RNA_def_property_update(prop, 0, "rna_Brush_image_icon_path_update"); /* clone tool */ prop= RNA_def_property(srna, "clone_image", PROP_POINTER, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_image.c b/source/blender/makesrna/intern/rna_image.c index 7144b409299..7d8248b58ed 100644 --- a/source/blender/makesrna/intern/rna_image.c +++ b/source/blender/makesrna/intern/rna_image.c @@ -213,12 +213,6 @@ static int rna_Image_depth_get(PointerRNA *ptr) return depth; } -static int rna_Image_is_image_icon(Image *me, bContext *C) -{ - const char prefix[] = ".imageicon."; - return strncmp(me->id.name+2, prefix, sizeof(prefix)-1) == 0; -} - #else static void rna_def_imageuser(BlenderRNA *brna) @@ -298,9 +292,6 @@ static void rna_def_image(BlenderRNA *brna) {IMA_STD_FIELD, "ODD", 0, "Lower First", "Lower field first"}, {0, NULL, 0, NULL, NULL}}; - FunctionRNA *func; - PropertyRNA *parm; - srna= RNA_def_struct(brna, "Image", "ID"); RNA_def_struct_ui_text(srna, "Image", "Image datablock referencing an external or packed image"); RNA_def_struct_ui_icon(srna, ICON_IMAGE_DATA); @@ -342,14 +333,6 @@ static void rna_def_image(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Field Order", "Order of video fields. Select which lines are displayed first"); RNA_def_property_update(prop, NC_IMAGE|ND_DISPLAY, NULL); - /* functions */ - func= RNA_def_function(srna, "is_image_icon", "rna_Image_is_image_icon"); - RNA_def_function_ui_description(func, "Returns true if Image name is prefixed with .imageicon."); - parm= RNA_def_pointer(func, "context", "Context", "", ""); - RNA_def_property_flag(parm, PROP_REQUIRED); - parm= RNA_def_boolean(func, "ret", 0, "", ""); - RNA_def_function_return(func, parm); - /* booleans */ prop= RNA_def_property(srna, "fields", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", IMA_FIELDS); From 132a1f95c14d69fca0bbf07500dde51f87385968 Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Tue, 20 Jul 2010 02:55:08 +0000 Subject: [PATCH 563/674] * Attempt #2 for new startup.blend * This file has the default filenames for the sculpt icons * Note: This does not contain code to make sure that icons get installed to 2.52/datafiles/brushicons so they can be loaded properly --- .../blender/editors/datafiles/startup.blend.c | 10411 ++++++++-------- 1 file changed, 4964 insertions(+), 5447 deletions(-) diff --git a/source/blender/editors/datafiles/startup.blend.c b/source/blender/editors/datafiles/startup.blend.c index 34c6a6154fd..39c8cbd586d 100644 --- a/source/blender/editors/datafiles/startup.blend.c +++ b/source/blender/editors/datafiles/startup.blend.c @@ -1,492 +1,392 @@ /* DataToC output of file <startup_blend> */ -int datatoc_startup_blend_size= 324620; +int datatoc_startup_blend_size= 309152; char datatoc_startup_blend[]= { - 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 53, 50, - 82, 69, 78, 68, 32, 0, 0, 0,240, 70,109,192,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, - 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 76, 79, 66, 24, 1, 0, 0, -240, 69,109,192,255,127, 0, 0,201, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 53, 5, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1, -120, 12, 66, 4, 0, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 16, 0, 0,128, 32, 4, 0, 47,104,111,109,101, 47, 98,114, -101, 99,104,116, 47, 46, 98,108,101,110,100,101,114, 47, 50, 46, 53, 50, 47, 99,111,110,102,105,103, 47,115,116, 97,114,116,117, -112, 46, 98,108,101,110,100, 0, 57,158,233, 0, 0, 0, 0, 0, 40, 0, 0, 0, 48, 0, 0, 0, 48, 71,109,192, 32, 0, 0, 0, -240, 70,109,192,255,127, 0, 0, 8, 33, 58, 4, 0, 0, 0, 0,160, 70,109,192,255,127, 0, 0,152,242,130, 4, 0, 0, 0, 0, -208, 70,109,192,255,127, 0, 0,129,160,233, 0, 0, 0, 0, 0,252, 0, 0, 0, 0, 0, 0, 0,240, 70,109,192,255,127, 0, 0, - 32, 0, 0, 0, 82, 69, 78, 68, 8, 33, 58, 4, 0, 0, 0, 0, 82, 69, 78, 68, 32, 0, 0, 0,240, 70,109,192,255,127, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0,184,113, 68, 4, 0, 0, 0, 0, 32, 71,109,192,255,127, 0, 0, 63,167,233, 0, 0, 0, 0, 0, -152,135, 10, 3, 0, 0, 0, 0, 8, 33, 58, 4, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 0, 0, 24, 1, 0, 0,184,113, 68, 4, 0, 0, 0, 0,111, 1, 0, 0, 1, 0, 0, 0, + + 66, 76, 69, 78, 68, 69, 82, 95,118, 50, 53, 50, 82, 69, 78, 68, 32, 0, 0, 0,156,231,143, 2, 0, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 71, 76, 79, 66, 16, 1, 0, 0,188,230,143, 2,201, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 53, 5, 0, 0, 0,250, 0, 0, 0, + 1, 0, 0, 1,192,179,102, 3, 48,136,106, 3, 0, 16, 0, 0,128, 32, 4, 0, 67, 58, 92,116,109,112, 92,115,116, 97,114,116, +117,112, 46, 98,108,101,110,100, 0,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, +204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, +204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, +204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, +204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, +204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, +204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, +204,204,204,204, 87, 77, 0, 0,168, 0, 0, 0,192, 12,102, 3,111, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 87,105,110, 77, 97,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 13,102, 3,208, 13,102, 3,208, 13,102, 3,208, 13,102, 3, 3, 0, 0, 0, + 1, 0, 0, 0,232,203, 78, 3,232,203, 78, 3, 0, 0, 0, 0, 0, 0, 0, 0, 72, 48, 76, 3, 72, 48, 76, 3, 16, 0, 0, 0, + 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 82, 3, 0,247, 82, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 88, 29,253, 2, 88, 29,253, 2, 88, 29,253, 2,176,153, 77, 3,176,153, 77, 3,176,153, 77, 3, + 68, 65, 84, 65,148, 0, 0, 0,208, 13,102, 3,112, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,129, 4, 3, + 1, 0, 0, 0, 0, 0, 0, 0,192,179,102, 3, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,136, 6,202, 3, 0, 0, 0, 0, 1, 0,238, 3, + 0, 0, 1, 0, 0, 0, 0, 0,240,131, 4, 3,208, 11, 8, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,192,222, 78, 3, +240,216, 76, 3, 96,238, 82, 3,192, 9, 8, 3,112, 10, 8, 3, 32, 11, 8, 3, 32, 11, 8, 3, 32, 27, 8, 3, 88, 0, 83, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,200, 14,102, 3,195, 0, 0, 0, 1, 0, 0, 0,176, 91,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,131, 75, 3, 88, 21,102, 3,208, 21,102, 3,208, 35,102, 3, + 80, 36,102, 3,128, 82,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 87, 77, 87,105,110, 77, 97,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24,115, 68, 4, 0, 0, 0, 0, 24,115, 68, 4, 0, 0, 0, 0, 24,115, 68, 4, 0, 0, 0, 0, - 24,115, 68, 4, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120,131, 75, 3,196, 0, 0, 0, 1, 0, 0, 0,200,255, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200,255, 9, 3,196, 0, 0, 0, + 1, 0, 0, 0,200, 95, 8, 3,120,131, 75, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +200, 95, 8, 3,196, 0, 0, 0, 1, 0, 0, 0,200,175, 75, 3,200,255, 9, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,200,175, 75, 3,196, 0, 0, 0, 1, 0, 0, 0,144,191, 98, 3,200, 95, 8, 3, 0, 0, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144,191, 98, 3,196, 0, 0, 0, 1, 0, 0, 0,184, 15,102, 3, +200,175, 75, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184, 15,102, 3,196, 0, 0, 0, + 1, 0, 0, 0, 48, 16,102, 3,144,191, 98, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 48, 16,102, 3,196, 0, 0, 0, 1, 0, 0, 0,168, 16,102, 3,184, 15,102, 3, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,168, 16,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 17,102, 3, 48, 16,102, 3, 0, 0, 0, 0, + 32, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 17,102, 3,196, 0, 0, 0, 1, 0, 0, 0,152, 17,102, 3, +168, 16,102, 3, 0, 0, 0, 0, 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152, 17,102, 3,196, 0, 0, 0, + 1, 0, 0, 0, 16, 18,102, 3, 32, 17,102, 3, 0, 0, 0, 0,254, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 16, 18,102, 3,196, 0, 0, 0, 1, 0, 0, 0,136, 18,102, 3,152, 17,102, 3, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,136, 18,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 19,102, 3, 16, 18,102, 3, 0, 0, 0, 0, + 32, 4, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 19,102, 3,196, 0, 0, 0, 1, 0, 0, 0,120, 19,102, 3, +136, 18,102, 3, 0, 0, 0, 0,192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120, 19,102, 3,196, 0, 0, 0, + 1, 0, 0, 0,240, 19,102, 3, 0, 19,102, 3, 0, 0, 0, 0,192, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +240, 19,102, 3,196, 0, 0, 0, 1, 0, 0, 0,104, 20,102, 3,120, 19,102, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,104, 20,102, 3,196, 0, 0, 0, 1, 0, 0, 0,224, 20,102, 3,240, 19,102, 3, 0, 0, 0, 0, +192, 1, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224, 20,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 88, 21,102, 3, +104, 20,102, 3, 0, 0, 0, 0, 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 88, 21,102, 3,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,224, 20,102, 3, 0, 0, 0, 0,254, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +208, 21,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 22,102, 3, 0, 0, 0, 0,200, 95, 8, 3,200,255, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 22,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208, 22,102, 3,208, 21,102, 3, +200,255, 9, 3,144,191, 98, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208, 22,102, 3,197, 0, 0, 0, + 1, 0, 0, 0, 80, 23,102, 3, 80, 22,102, 3,200, 95, 8, 3,184, 15,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 80, 23,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208, 23,102, 3,208, 22,102, 3,144,191, 98, 3,184, 15,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208, 23,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 24,102, 3, + 80, 23,102, 3,120,131, 75, 3, 48, 16,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 24,102, 3, +197, 0, 0, 0, 1, 0, 0, 0,208, 24,102, 3,208, 23,102, 3,200,175, 75, 3, 48, 16,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,208, 24,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 25,102, 3, 80, 24,102, 3,184, 15,102, 3, +168, 16,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 25,102, 3,197, 0, 0, 0, 1, 0, 0, 0, +208, 25,102, 3,208, 24,102, 3, 48, 16,102, 3, 32, 17,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +208, 25,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 26,102, 3, 80, 25,102, 3,200,175, 75, 3,152, 17,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 26,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208, 26,102, 3,208, 25,102, 3, + 32, 17,102, 3,152, 17,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208, 26,102, 3,197, 0, 0, 0, + 1, 0, 0, 0, 80, 27,102, 3, 80, 26,102, 3,120,131, 75, 3, 16, 18,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 80, 27,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208, 27,102, 3,208, 26,102, 3,168, 16,102, 3,136, 18,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208, 27,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 28,102, 3, + 80, 27,102, 3, 48, 16,102, 3,136, 18,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 28,102, 3, +197, 0, 0, 0, 1, 0, 0, 0,208, 28,102, 3,208, 27,102, 3, 16, 18,102, 3,136, 18,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,208, 28,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 29,102, 3, 80, 28,102, 3, 16, 18,102, 3, + 0, 19,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 29,102, 3,197, 0, 0, 0, 1, 0, 0, 0, +208, 29,102, 3,208, 28,102, 3,136, 18,102, 3, 0, 19,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +208, 29,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 30,102, 3, 80, 29,102, 3,144,191, 98, 3,120, 19,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 30,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208, 30,102, 3,208, 29,102, 3, +168, 16,102, 3,120, 19,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208, 30,102, 3,197, 0, 0, 0, + 1, 0, 0, 0, 80, 31,102, 3, 80, 30,102, 3, 0, 19,102, 3,120, 19,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 80, 31,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208, 31,102, 3,208, 30,102, 3, 16, 18,102, 3,240, 19,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208, 31,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 32,102, 3, + 80, 31,102, 3, 0, 19,102, 3,104, 20,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 32,102, 3, +197, 0, 0, 0, 1, 0, 0, 0,208, 32,102, 3,208, 31,102, 3,240, 19,102, 3,104, 20,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,208, 32,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 33,102, 3, 80, 32,102, 3, 32, 17,102, 3, +224, 20,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 33,102, 3,197, 0, 0, 0, 1, 0, 0, 0, +208, 33,102, 3,208, 32,102, 3,168, 16,102, 3,224, 20,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +208, 33,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 34,102, 3, 80, 33,102, 3,184, 15,102, 3, 88, 21,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 34,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208, 34,102, 3,208, 33,102, 3, +152, 17,102, 3, 88, 21,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208, 34,102, 3,197, 0, 0, 0, + 1, 0, 0, 0, 80, 35,102, 3, 80, 34,102, 3,224, 20,102, 3, 88, 21,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 80, 35,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208, 35,102, 3,208, 34,102, 3,144,191, 98, 3,240, 19,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208, 35,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 80, 35,102, 3,120, 19,102, 3,104, 20,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 80, 36,102, 3, +199, 0, 0, 0, 1, 0, 0, 0,216, 39,102, 3, 0, 0, 0, 0,144,191, 98, 3,200,255, 9, 3,200, 95, 8, 3,184, 15,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 24, 91,102, 3, 24, 91,102, 3, 24, 37,102, 3,120, 38,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24, 37,102, 3,200, 0, 0, 0, 1, 0, 0, 0,120, 38,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120, 38,102, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 24, 37,102, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8,233, 9, 3, 0, 0, 0, 0, 8,233, 9, 3, 0, 0, 0, 0, 8,233, 9, 3, 0, 0, 0, 0, - 24, 48, 5, 88,159,127, 0, 0, 24, 48, 5, 88,159,127, 0, 0, 24, 48, 5, 88,159,127, 0, 0, 68, 65, 84, 65,224, 0, 0, 0, - 24,115, 68, 4, 0, 0, 0, 0,112, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48,106,255, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120, 12, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 5, 0, 30, 0,118, 7, 97, 4, 0, 0, 0, 0, 1, 0,238, 3, 0, 0, 1, 0, 0, 0, 0, 0,136,216, 18, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 56,205, 5, 88,159,127, 0, 0, - 88, 63, 41, 4, 0, 0, 0, 0, 88, 63, 41, 4, 0, 0, 0, 0,200, 48, 5, 88,159,127, 0, 0,152, 49, 5, 88,159,127, 0, 0, -104, 50, 5, 88,159,127, 0, 0,104, 50, 5, 88,159,127, 0, 0, 56, 51, 5, 88,159,127, 0, 0, 88, 98, 5, 88,159,127, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 72,116, 68, 4, 0, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 40,225, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 65, 59, 4, 0, 0, 0, 0, 8,120, 68, 4, 0, 0, 0, 0, -120,120, 68, 4, 0, 0, 0, 0, 88,226, 35, 4, 0, 0, 0, 0,200,226, 35, 4, 0, 0, 0, 0,152,215, 57, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 96, 0, 0, 0,216, 39,102, 3,199, 0, 0, 0, 1, 0, 0, 0,160, 44,102, 3, 80, 36,102, 3, 48, 16,102, 3, + 32, 17,102, 3,152, 17,102, 3,200,175, 75, 3, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 51, 1, 0, 0, + 4, 4,222, 0, 52, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 43,102, 3, 96, 43,102, 3,160, 40,102, 3, + 0, 42,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160, 40,102, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 42,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 55, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,222, 0, 31, 0,222, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0, +254, 4, 0, 0, 21, 1, 0, 0, 51, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 31, 0, + 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 24, 65, 59, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,248,108, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248,108, 57, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 72, 39, 58, 4, 0, 0, 0, 0, 24, 65, 59, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72, 39, 58, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -232,143, 57, 4, 0, 0, 0, 0,248,108, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,232,143, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,232, 64, 38, 4, 0, 0, 0, 0, - 72, 39, 58, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -232, 64, 38, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,248, 11, 68, 4, 0, 0, 0, 0,232,143, 57, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248, 11, 68, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 88, 25, 67, 4, 0, 0, 0, 0,232, 64, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88, 25, 67, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 56, 77, 68, 4, 0, 0, 0, 0,248, 11, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 56, 77, 68, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8, 68, 62, 4, 0, 0, 0, 0, - 88, 25, 67, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 8, 68, 62, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8,115, 36, 4, 0, 0, 0, 0, 56, 77, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8,115, 36, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 72,241, 61, 4, 0, 0, 0, 0, 8, 68, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,241, 61, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -104,117, 68, 4, 0, 0, 0, 0, 8,115, 36, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,104,117, 68, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,216,117, 68, 4, 0, 0, 0, 0, - 72,241, 61, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -216,117, 68, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72,118, 68, 4, 0, 0, 0, 0,104,117, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,118, 68, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,184,118, 68, 4, 0, 0, 0, 0,216,117, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,118, 68, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 40,119, 68, 4, 0, 0, 0, 0, 72,118, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 40,119, 68, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,119, 68, 4, 0, 0, 0, 0, -184,118, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -152,119, 68, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8,120, 68, 4, 0, 0, 0, 0, 40,119, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8,120, 68, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,119, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,120, 68, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -232,120, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,108, 57, 4, 0, 0, 0, 0, 72, 39, 58, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,120, 68, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 88,121, 68, 4, 0, 0, 0, 0,120,120, 68, 4, 0, 0, 0, 0,232, 64, 38, 4, 0, 0, 0, 0,248,108, 57, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,121, 68, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -200,121, 68, 4, 0, 0, 0, 0,232,120, 68, 4, 0, 0, 0, 0, 72, 39, 58, 4, 0, 0, 0, 0,248, 11, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,121, 68, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 8,205, 62, 4, 0, 0, 0, 0, 88,121, 68, 4, 0, 0, 0, 0,232, 64, 38, 4, 0, 0, 0, 0,248, 11, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,205, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -184, 35, 57, 4, 0, 0, 0, 0,200,121, 68, 4, 0, 0, 0, 0, 24, 65, 59, 4, 0, 0, 0, 0, 88, 25, 67, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184, 35, 57, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -200, 22, 56, 4, 0, 0, 0, 0, 8,205, 62, 4, 0, 0, 0, 0,232,143, 57, 4, 0, 0, 0, 0, 88, 25, 67, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200, 22, 56, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 72, 65, 66, 4, 0, 0, 0, 0,184, 35, 57, 4, 0, 0, 0, 0,248, 11, 68, 4, 0, 0, 0, 0, 56, 77, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72, 65, 66, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -184, 65, 66, 4, 0, 0, 0, 0,200, 22, 56, 4, 0, 0, 0, 0, 8, 68, 62, 4, 0, 0, 0, 0, 88, 25, 67, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184, 65, 66, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -216, 28, 8, 5, 0, 0, 0, 0, 72, 65, 66, 4, 0, 0, 0, 0, 8,115, 36, 4, 0, 0, 0, 0,232,143, 57, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216, 28, 8, 5, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 72, 29, 8, 5, 0, 0, 0, 0,184, 65, 66, 4, 0, 0, 0, 0, 8,115, 36, 4, 0, 0, 0, 0, 8, 68, 62, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72, 29, 8, 5, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -104, 66, 36, 4, 0, 0, 0, 0,216, 28, 8, 5, 0, 0, 0, 0, 24, 65, 59, 4, 0, 0, 0, 0, 72,241, 61, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104, 66, 36, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -216, 66, 36, 4, 0, 0, 0, 0, 72, 29, 8, 5, 0, 0, 0, 0, 56, 77, 68, 4, 0, 0, 0, 0,104,117, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216, 66, 36, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -200,138, 10, 3, 0, 0, 0, 0,104, 66, 36, 4, 0, 0, 0, 0, 88, 25, 67, 4, 0, 0, 0, 0,104,117, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,138, 10, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 56,139, 10, 3, 0, 0, 0, 0,216, 66, 36, 4, 0, 0, 0, 0, 72,241, 61, 4, 0, 0, 0, 0,104,117, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,139, 10, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -168,220, 35, 4, 0, 0, 0, 0,200,138, 10, 3, 0, 0, 0, 0, 72,241, 61, 4, 0, 0, 0, 0,216,117, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,220, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 24,221, 35, 4, 0, 0, 0, 0, 56,139, 10, 3, 0, 0, 0, 0,104,117, 68, 4, 0, 0, 0, 0,216,117, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,221, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -136,221, 35, 4, 0, 0, 0, 0,168,220, 35, 4, 0, 0, 0, 0,232, 64, 38, 4, 0, 0, 0, 0, 72,118, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,221, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -248,221, 35, 4, 0, 0, 0, 0, 24,221, 35, 4, 0, 0, 0, 0, 56, 77, 68, 4, 0, 0, 0, 0, 72,118, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,221, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -104,222, 35, 4, 0, 0, 0, 0,136,221, 35, 4, 0, 0, 0, 0,216,117, 68, 4, 0, 0, 0, 0, 72,118, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,222, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -216,222, 35, 4, 0, 0, 0, 0,248,221, 35, 4, 0, 0, 0, 0, 72,241, 61, 4, 0, 0, 0, 0,184,118, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,222, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 72,223, 35, 4, 0, 0, 0, 0,104,222, 35, 4, 0, 0, 0, 0,216,117, 68, 4, 0, 0, 0, 0, 40,119, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,223, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -184,223, 35, 4, 0, 0, 0, 0,216,222, 35, 4, 0, 0, 0, 0,184,118, 68, 4, 0, 0, 0, 0, 40,119, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,223, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 40,224, 35, 4, 0, 0, 0, 0, 72,223, 35, 4, 0, 0, 0, 0, 8, 68, 62, 4, 0, 0, 0, 0,152,119, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,224, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -152,224, 35, 4, 0, 0, 0, 0,184,223, 35, 4, 0, 0, 0, 0, 56, 77, 68, 4, 0, 0, 0, 0,152,119, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,224, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 8,225, 35, 4, 0, 0, 0, 0, 40,224, 35, 4, 0, 0, 0, 0,248, 11, 68, 4, 0, 0, 0, 0, 8,120, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,225, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -120,225, 35, 4, 0, 0, 0, 0,152,224, 35, 4, 0, 0, 0, 0, 8,115, 36, 4, 0, 0, 0, 0, 8,120, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,225, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -232,225, 35, 4, 0, 0, 0, 0, 8,225, 35, 4, 0, 0, 0, 0,152,119, 68, 4, 0, 0, 0, 0, 8,120, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,225, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 88,226, 35, 4, 0, 0, 0, 0,120,225, 35, 4, 0, 0, 0, 0,232, 64, 38, 4, 0, 0, 0, 0,184,118, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,226, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232,225, 35, 4, 0, 0, 0, 0, 72,118, 68, 4, 0, 0, 0, 0, 40,119, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,200,226, 35, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 72, 27, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 64, 38, 4, 0, 0, 0, 0,248,108, 57, 4, 0, 0, 0, 0, - 72, 39, 58, 4, 0, 0, 0, 0,248, 11, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, -188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152,224, 57, 4, 0, 0, 0, 0,152,224, 57, 4, 0, 0, 0, 0,184,227, 35, 4, 0, 0, 0, 0,216, 25, 68, 4, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 0, 42,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,160, 40,102, 3, 0, 0, 0, 0, + 0, 0, 94, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 77, 67, 1,128,138,195, 0, 0, 0, 0,205, 0, 0, 0, +222, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +204, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,222, 0, 21, 1,205, 0, 21, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,184,227, 35, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216, 25, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, - 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, - 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, -188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,216, 25, 68, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184,227, 35, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, - 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, - 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0, 72, 27, 68, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 88, 32, 68, 4, 0, 0, 0, 0, -200,226, 35, 4, 0, 0, 0, 0, 88, 25, 67, 4, 0, 0, 0, 0, 8, 68, 62, 4, 0, 0, 0, 0, 8,115, 36, 4, 0, 0, 0, 0, -232,143, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 51, 1, 0, 0, - 4, 4,222, 0, 52, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 31, 68, 4, 0, 0, 0, 0, - 24, 31, 68, 4, 0, 0, 0, 0, 56, 28, 68, 4, 0, 0, 0, 0,168, 29, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 56, 28, 68, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,168, 29, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,248, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, 31, 0,222, 0, 31, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 51, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -168, 29, 68, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 28, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 94, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 77, 67, 1,128,138,195, 0, 0, 0, 0, -205, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,222, 0, 21, 1,205, 0, 21, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 24, 31, 68, 4, 0, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 96, 43,102, 3,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 88, 32, 68, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 72, 37, 68, 4, 0, 0, 0, 0, 72, 27, 68, 4, 0, 0, 0, 0, 24, 65, 59, 4, 0, 0, 0, 0, 72,241, 61, 4, 0, 0, 0, 0, -104,117, 68, 4, 0, 0, 0, 0, 88, 25, 67, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, - 0, 0, 0, 0, 83, 0, 0, 0, 15, 15, 32, 4, 84, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40, 36, 68, 4, 0, 0, 0, 0, 40, 36, 68, 4, 0, 0, 0, 0, 72, 33, 68, 4, 0, 0, 0, 0,184, 34, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 72, 33, 68, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,184, 34, 68, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,132, 68, + 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, +160, 44,102, 3,199, 0, 0, 0, 1, 0, 0, 0, 72, 49,102, 3,216, 39,102, 3,120,131, 75, 3, 16, 18,102, 3,136, 18,102, 3, + 48, 16,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 15, 15, 32, 4, 84, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 48,102, 3, 40, 48,102, 3,104, 45,102, 3,200, 46,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104, 45,102, 3,200, 0, 0, 0, 1, 0, 0, 0, +200, 46,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,132, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 32, 4, - 26, 0, 32, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 32, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +200, 46,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104, 45,102, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, + 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 18, 0, 0, 0, + 57, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, + 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 4, 0, 0, 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,184, 34, 68, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 33, 68, 4, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, - 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 18, 0, 0, 0, 57, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, - 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 32, 4, - 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, - 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 58, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,216, 0, 0, 0, 40, 36, 68, 4, 0, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 40, 48,102, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 72, 49,102, 3, +199, 0, 0, 0, 1, 0, 0, 0,160, 55,102, 3,160, 44,102, 3, 32, 17,102, 3,224, 20,102, 3, 88, 21,102, 3,152, 17,102, 3, + 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 47, 2, 0, 0, 3, 3,222, 0,251, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208, 52,102, 3,208, 52,102, 3, 16, 50,102, 3,112, 51,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16, 50,102, 3,200, 0, 0, 0, 1, 0, 0, 0,112, 51,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 94, 67, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, 26, 0,222, 0, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 22, 2, 0, 0, 47, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 72, 37, 68, 4, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,248, 47, 10, 3, 0, 0, 0, 0, 88, 32, 68, 4, 0, 0, 0, 0, 8, 68, 62, 4, 0, 0, 0, 0, -152,119, 68, 4, 0, 0, 0, 0, 8,120, 68, 4, 0, 0, 0, 0, 8,115, 36, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 47, 2, 0, 0, 3, 3,222, 0,251, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104, 45, 10, 3, 0, 0, 0, 0,104, 45, 10, 3, 0, 0, 0, 0,136, 42, 10, 3, 0, 0, 0, 0, -248, 43, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136, 42, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -248, 43, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,222, 0, 26, 0,222, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 4, 0, 0,254, 4, 0, 0, 22, 2, 0, 0, 47, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -222, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248, 43, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136, 42, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112, 51,102, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 50,102, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0,100, 66, 0, 0,131, 67, 0, 0, 79,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, - 0, 0, 0, 4, 6, 0,222, 0,225, 0,205, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -222, 0,225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 6, 0,222, 0,225, 0,205, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0, +254, 4, 0, 0, 53, 1, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,104, 45, 10, 3, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,252, 0, 0, 0,208, 52,102, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 58, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 54,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 68, 65, 84, 65, 16, 0, 0, 0, 24, 58, 9, 3, 0, 0, 0, 0,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, -216, 46, 10, 3, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,216, 46, 10, 3, 0, 0, 0, 0,222, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, - 20, 0, 0, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,200,230,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,136,238,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 88, 66,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,168,249,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,136,159,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,136,244,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,168,226,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,104,233,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,216,225,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,248, 47, 10, 3, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 72, 61, 10, 3, 0, 0, 0, 0, 72, 37, 68, 4, 0, 0, 0, 0,216,117, 68, 4, 0, 0, 0, 0, - 72,118, 68, 4, 0, 0, 0, 0, 56, 77, 68, 4, 0, 0, 0, 0,104,117, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,186, 2, 0, 0, 1, 1, 95, 2,102, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200, 59, 10, 3, 0, 0, 0, 0,200, 59, 10, 3, 0, 0, 0, 0,232, 48, 10, 3, 0, 0, 0, 0, -168, 54, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232, 48, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 88, 50, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 48, 54,102, 3,223, 0, 0, 0, + 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,160, 54,102, 3, 68, 65, 84, 65,156, 0, 0, 0,160, 54,102, 3,222, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,136,106, 3, 19, 0, 0, 0, 1, 0, 1, 0, 48,136,106, 3, 20, 0, 0, 0, + 1, 0, 1, 0, 48,136,106, 3, 21, 0, 1, 0, 1, 0, 1, 0, 48,136,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 96,158,106, 3, + 0, 0, 0, 0, 1, 0, 1, 0, 16,165,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 72,247,107, 3, 0, 0, 0, 0, 1, 0, 1, 0, +136,174,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 88, 84,107, 3, 0, 0, 0, 0, 1, 0, 1, 0, 72,170,106, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 16,154,106, 3, 0, 0, 0, 0, 1, 0, 1, 0,208,160,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 64,153,106, 3, + 68, 65, 84, 65, 96, 0, 0, 0,160, 55,102, 3,199, 0, 0, 0, 1, 0, 0, 0, 88, 68,102, 3, 72, 49,102, 3, 0, 19,102, 3, +120, 19,102, 3,168, 16,102, 3,136, 18,102, 3, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,186, 2, 0, 0, + 1, 1, 95, 2,102, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 66,102, 3,248, 66,102, 3,104, 56,102, 3, +232, 61,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104, 56,102, 3, +200, 0, 0, 0, 1, 0, 0, 0,200, 57,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 23, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 95, 2, 26, 0, 95, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 95, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 12, 4, 10, 0, 95, 2, 26, 0, 95, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, + 31, 4, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 26, 0, + 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,200, 57,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 40, 59,102, 3,104, 56,102, 3, 0, 0, 0, 0, + 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0, +160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0,193, 1, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 76, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88, 50, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -200, 51, 10, 3, 0, 0, 0, 0,232, 48, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 1, 0, 0,193, 1, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 76, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40, 59,102, 3,200, 0, 0, 0, 1, 0, 0, 0, +136, 60,102, 3,200, 57,102, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, + 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, +120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0, +111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200, 51, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 56, 53, 10, 3, 0, 0, 0, 0, 88, 50, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, - 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56, 53, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -168, 54, 10, 3, 0, 0, 0, 0,200, 51, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,180, 0,148, 3,163, 0,130, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +136, 60,102, 3,200, 0, 0, 0, 1, 0, 0, 0,232, 61,102, 3, 40, 59,102, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, +147, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, +147, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,148, 3,163, 0,130, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168, 54, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 53, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232, 61,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136, 60,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 95, 2, 76, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 76, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 56, 10, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 24, 56, 10, 3, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,134,144, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, - 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, -185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, -178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62, -145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, - 99,240,191, 62,110,116, 85, 63, 80,185, 70,188, 0, 0, 82,180,206, 44,182,190,198,158, 47, 62, 36,239, 74, 63, 0, 0, 8,179, - 67,108,117,194,183,204,216, 65,104,156, 5,194,212,247,159,192,235, 62,114, 66, 59,254,213,193,157,225, 3, 66, 55, 8,160, 64, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, -178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62, -145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, -255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, -234,108, 69, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 63,102, 3, 68, 65, 84, 65, 72, 3, 0, 0, 72, 63,102, 3,159, 0, 0, 0, + 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,134,144, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, + 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, + 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, + 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, + 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, + 0, 0,128, 63,178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, + 35, 44,185, 62,145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65, +214,211,111, 65, 99,240,191, 62,110,116, 85, 63, 80,185, 70,188, 0, 0, 82,180,206, 44,182,190,198,158, 47, 62, 36,239, 74, 63, + 0, 0, 8,179, 67,108,117,194,183,204,216, 65,104,156, 5,194,212,247,159,192,235, 62,114, 66, 59,254,213,193,157,225, 3, 66, + 55, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, + 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, + 0, 0,128, 63,178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, + 35, 44,185, 62,145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65, +214,211,111, 65,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, + 0, 0, 0, 0,234,108, 69, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 32, 33, 12, 66, + 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248, 66,102, 3,160, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0,208,160,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, + 88, 68,102, 3,199, 0, 0, 0, 1, 0, 0, 0, 88, 76,102, 3,160, 55,102, 3, 16, 18,102, 3,240, 19,102, 3,104, 20,102, 3, + 0, 19,102, 3, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,255, 0, 0, 0, 2, 2,192, 1,171, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 74,102, 3,160, 74,102, 3, 32, 69,102, 3, 64, 73,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 69,102, 3,200, 0, 0, 0, 1, 0, 0, 0, +128, 70,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, + 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, + 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0, +110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 32, 33, 12, 66, 85,152,137, 66, -116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,200, 59, 10, 3, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104,233,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, - 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 72, 61, 10, 3, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 8,209, 57, 4, 0, 0, 0, 0,248, 47, 10, 3, 0, 0, 0, 0, 72,241, 61, 4, 0, 0, 0, 0, -184,118, 68, 4, 0, 0, 0, 0, 40,119, 68, 4, 0, 0, 0, 0,216,117, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,255, 0, 0, 0, 2, 2,192, 1,171, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200,207, 57, 4, 0, 0, 0, 0,200,207, 57, 4, 0, 0, 0, 0, 56, 62, 10, 3, 0, 0, 0, 0, -136, 66, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56, 62, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -168, 63, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168, 63, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 24, 65, 10, 3, 0, 0, 0, 0, 56, 62, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,254,194, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, - 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, - 0, 0, 0, 4, 6, 0,217, 0,145, 0,200, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +128, 70,102, 3,200, 0, 0, 0, 1, 0, 0, 0,224, 71,102, 3, 32, 69,102, 3, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,254,194, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, +144, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, +144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, + 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0,145, 0,200, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0,145, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24, 65, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -136, 66, 10, 3, 0, 0, 0, 0,168, 63, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224, 71,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 64, 73,102, 3,128, 70,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 1, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64, 73,102, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,224, 71,102, 3, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, + 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 18, 0, 0, 0, +230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0,111, 18,131, 58, +111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, + 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0,191, 1, 0, 0, +111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136, 66, 10, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 65, 10, 3, 0, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, - 18, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, -111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, 0, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,200,207, 57, 4, 0, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +208, 0, 0, 0,160, 74,102, 3,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 38, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56, 38, 68, 4, 0, 0, 0, 0, - 24, 1, 0, 0, 1, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 8,209, 57, 4, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,152,215, 57, 4, 0, 0, 0, 0, 72, 61, 10, 3, 0, 0, 0, 0,184,118, 68, 4, 0, 0, 0, 0, -232, 64, 38, 4, 0, 0, 0, 0, 72,118, 68, 4, 0, 0, 0, 0, 40,119, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0,186, 2, 0, 0, 12, 12,192, 1,186, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 72,214, 57, 4, 0, 0, 0, 0, 72,214, 57, 4, 0, 0, 0, 0,248,209, 57, 4, 0, 0, 0, 0, -216,212, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,209, 57, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -104,211, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 98, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,216, 75,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,216, 75,102, 3, 24, 1, 0, 0, 1, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 88, 76,102, 3,199, 0, 0, 0, 1, 0, 0, 0, +128, 82,102, 3, 88, 68,102, 3,240, 19,102, 3,144,191, 98, 3,120, 19,102, 3,104, 20,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, +191, 1, 0, 0, 1, 1, 0, 0,186, 2, 0, 0, 12, 12,192, 1,186, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 81,102, 3, 64, 81,102, 3, 32, 77,102, 3,224, 79,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 32, 77,102, 3,200, 0, 0, 0, 1, 0, 0, 0,128, 78,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0,192, 98, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104,211, 57, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -216,212, 57, 4, 0, 0, 0, 0,248,209, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,199,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, - 0, 0, 2, 4, 6, 0,200, 0,160, 1,200, 0,142, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,199, 0, 0, 0, 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0,160, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 78,102, 3,200, 0, 0, 0, 1, 0, 0, 0, +224, 79,102, 3, 32, 77,102, 3, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, + 0, 0,199,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,200, 0, +160, 1,200, 0,142, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 27, 1, 0, 0, +186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,160, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216,212, 57, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104,211, 57, 4, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,104, 68, 0, 0,199,195, 0, 0, 0, 0,231, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, - 0, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0, 0, 0, 0, 2, - 0, 0, 2, 4, 4, 0,248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +224, 79,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 78,102, 3, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194, + 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0,199,195, 0, 0, 0, 0,231, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, +159, 1, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0, +159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0, + 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0,191, 1, 0, 0, 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 72,214, 57, 4, 0, 0, 0, 0, 25, 1, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 64, 81,102, 3, 25, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 2, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,152,215, 57, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,209, 57, 4, 0, 0, 0, 0,152,119, 68, 4, 0, 0, 0, 0, 56, 77, 68, 4, 0, 0, 0, 0,248, 11, 68, 4, 0, 0, 0, 0, - 8,120, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, - 1, 1,222, 0,138, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,223, 57, 4, 0, 0, 0, 0, - 24,223, 57, 4, 0, 0, 0, 0,136,216, 57, 4, 0, 0, 0, 0,248,217, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -136,216, 57, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,248,217, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,128, 82,102, 3,199, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 88, 76,102, 3,224, 20,102, 3,168, 16,102, 3,184, 15,102, 3, 88, 21,102, 3, 0, 0, 0, 0, + 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 1, 1,222, 0,138, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,184, 89,102, 3,184, 89,102, 3, 72, 83,102, 3,168, 84,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72, 83,102, 3,200, 0, 0, 0, 1, 0, 0, 0,168, 84,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 64, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,132, 1, 24, 0,132, 1, 24, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0, 49, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0, 49, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -248,217, 57, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,216, 57, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168, 84,102, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 72, 83,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, + 49, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,219, 57, 4, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, -104,219, 57, 4, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 86,102, 3, 68, 65, 84, 65, + 72, 3, 0, 0, 8, 86,102, 3,159, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,109,100, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, @@ -511,263 +411,208 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 7, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, - 24,223, 57, 4, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0,104,233,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 7, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +184, 89,102, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,208,160,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, + 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,176, 91,102, 3,195, 0, 0, 0, 1, 0, 0, 0,192,179,102, 3,200, 14,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 92,102, 3,184, 98,102, 3, 48, 99,102, 3,176,109,102, 3, 48,110,102, 3, +192,140,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 78, 0, 0,208, 0, 0, 0, 40,225, 57, 4, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,120, 12, 66, 4, 0, 0, 0, 0, - 72,116, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,109,112,111,115, -105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 67, 10, 3, 0, 0, 0, 0,136,231, 57, 4, 0, 0, 0, 0,248,231, 57, 4, 0, 0, 0, 0,152, 39, 62, 4, 0, 0, 0, 0, - 8, 40, 62, 4, 0, 0, 0, 0,168, 6, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248, 67, 10, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 72,226, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 72,226, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,184,226, 57, 4, 0, 0, 0, 0, -248, 67, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -184,226, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 40,227, 57, 4, 0, 0, 0, 0, 72,226, 57, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 40,227, 57, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,152,227, 57, 4, 0, 0, 0, 0,184,226, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,152,227, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 8,228, 57, 4, 0, 0, 0, 0, 40,227, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 8,228, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,120,228, 57, 4, 0, 0, 0, 0, -152,227, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -120,228, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,232,228, 57, 4, 0, 0, 0, 0, 8,228, 57, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232,228, 57, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 88,229, 57, 4, 0, 0, 0, 0,120,228, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88,229, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -200,229, 57, 4, 0, 0, 0, 0,232,228, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,200,229, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 56,230, 57, 4, 0, 0, 0, 0, - 88,229, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 56,230, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,168,230, 57, 4, 0, 0, 0, 0,200,229, 57, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168,230, 57, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 24,231, 57, 4, 0, 0, 0, 0, 56,230, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24,231, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -136,231, 57, 4, 0, 0, 0, 0,168,230, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,136,231, 57, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24,231, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -248,231, 57, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104,232, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72,226, 57, 4, 0, 0, 0, 0,184,226, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -104,232, 57, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,232, 57, 4, 0, 0, 0, 0,248,231, 57, 4, 0, 0, 0, 0, - 72,226, 57, 4, 0, 0, 0, 0,152,227, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -216,232, 57, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,233, 57, 4, 0, 0, 0, 0,104,232, 57, 4, 0, 0, 0, 0, -184,226, 57, 4, 0, 0, 0, 0, 8,228, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 72,233, 57, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,233, 57, 4, 0, 0, 0, 0,216,232, 57, 4, 0, 0, 0, 0, -152,227, 57, 4, 0, 0, 0, 0, 8,228, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -184,233, 57, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40,234, 57, 4, 0, 0, 0, 0, 72,233, 57, 4, 0, 0, 0, 0, - 40,227, 57, 4, 0, 0, 0, 0,232,228, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 40,234, 57, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152,234, 57, 4, 0, 0, 0, 0,184,233, 57, 4, 0, 0, 0, 0, -120,228, 57, 4, 0, 0, 0, 0,232,228, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -152,234, 57, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40,229, 35, 4, 0, 0, 0, 0, 40,234, 57, 4, 0, 0, 0, 0, - 8,228, 57, 4, 0, 0, 0, 0, 88,229, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 40,229, 35, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,232, 33, 62, 4, 0, 0, 0, 0,152,234, 57, 4, 0, 0, 0, 0, -152,227, 57, 4, 0, 0, 0, 0, 88,229, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -232, 33, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88, 34, 62, 4, 0, 0, 0, 0, 40,229, 35, 4, 0, 0, 0, 0, -120,228, 57, 4, 0, 0, 0, 0, 88,229, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 88, 34, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200, 34, 62, 4, 0, 0, 0, 0,232, 33, 62, 4, 0, 0, 0, 0, - 8,228, 57, 4, 0, 0, 0, 0,232,228, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -200, 34, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56, 35, 62, 4, 0, 0, 0, 0, 88, 34, 62, 4, 0, 0, 0, 0, -152,227, 57, 4, 0, 0, 0, 0,200,229, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 56, 35, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168, 35, 62, 4, 0, 0, 0, 0,200, 34, 62, 4, 0, 0, 0, 0, - 88,229, 57, 4, 0, 0, 0, 0, 56,230, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -168, 35, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24, 36, 62, 4, 0, 0, 0, 0, 56, 35, 62, 4, 0, 0, 0, 0, -200,229, 57, 4, 0, 0, 0, 0, 56,230, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 24, 36, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136, 36, 62, 4, 0, 0, 0, 0,168, 35, 62, 4, 0, 0, 0, 0, -200,229, 57, 4, 0, 0, 0, 0,168,230, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -136, 36, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248, 36, 62, 4, 0, 0, 0, 0, 24, 36, 62, 4, 0, 0, 0, 0, - 56,230, 57, 4, 0, 0, 0, 0,168,230, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -248, 36, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104, 37, 62, 4, 0, 0, 0, 0,136, 36, 62, 4, 0, 0, 0, 0, -248, 67, 10, 3, 0, 0, 0, 0, 24,231, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -104, 37, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216, 37, 62, 4, 0, 0, 0, 0,248, 36, 62, 4, 0, 0, 0, 0, - 24,231, 57, 4, 0, 0, 0, 0,136,231, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -216, 37, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72, 38, 62, 4, 0, 0, 0, 0,104, 37, 62, 4, 0, 0, 0, 0, - 40,227, 57, 4, 0, 0, 0, 0,136,231, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 72, 38, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184, 38, 62, 4, 0, 0, 0, 0,216, 37, 62, 4, 0, 0, 0, 0, -120,228, 57, 4, 0, 0, 0, 0,136,231, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -184, 38, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40, 39, 62, 4, 0, 0, 0, 0, 72, 38, 62, 4, 0, 0, 0, 0, -168,230, 57, 4, 0, 0, 0, 0, 24,231, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 40, 39, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152, 39, 62, 4, 0, 0, 0, 0,184, 38, 62, 4, 0, 0, 0, 0, - 56,230, 57, 4, 0, 0, 0, 0,136,231, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -152, 39, 62, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 39, 62, 4, 0, 0, 0, 0, -248, 67, 10, 3, 0, 0, 0, 0,200,229, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 8, 40, 62, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,216, 43, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152,227, 57, 4, 0, 0, 0, 0, 72,226, 57, 4, 0, 0, 0, 0,184,226, 57, 4, 0, 0, 0, 0, 8,228, 57, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 11, 66, 4, 0, 0, 0, 0,232, 11, 66, 4, 0, 0, 0, 0, -248, 40, 62, 4, 0, 0, 0, 0,104, 42, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248, 40, 62, 4, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,104, 42, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 42, 62, 4, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 40, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160, 92,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 24, 93,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24, 93,102, 3,196, 0, 0, 0, 1, 0, 0, 0, +144, 93,102, 3,160, 92,102, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144, 93,102, 3, +196, 0, 0, 0, 1, 0, 0, 0, 8, 94,102, 3, 24, 93,102, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 8, 94,102, 3,196, 0, 0, 0, 1, 0, 0, 0,128, 94,102, 3,144, 93,102, 3, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128, 94,102, 3,196, 0, 0, 0, 1, 0, 0, 0,248, 94,102, 3, 8, 94,102, 3, + 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248, 94,102, 3,196, 0, 0, 0, 1, 0, 0, 0, +112, 95,102, 3,128, 94,102, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,112, 95,102, 3, +196, 0, 0, 0, 1, 0, 0, 0,232, 95,102, 3,248, 94,102, 3, 0, 0, 0, 0, 20, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,232, 95,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 96, 96,102, 3,112, 95,102, 3, 0, 0, 0, 0,254, 4, 64, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96, 96,102, 3,196, 0, 0, 0, 1, 0, 0, 0,216, 96,102, 3,232, 95,102, 3, + 0, 0, 0, 0, 20, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216, 96,102, 3,196, 0, 0, 0, 1, 0, 0, 0, + 80, 97,102, 3, 96, 96,102, 3, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 80, 97,102, 3, +196, 0, 0, 0, 1, 0, 0, 0,200, 97,102, 3,216, 96,102, 3, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,200, 97,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 64, 98,102, 3, 80, 97,102, 3, 0, 0, 0, 0, 0, 2, 20, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64, 98,102, 3,196, 0, 0, 0, 1, 0, 0, 0,184, 98,102, 3,200, 97,102, 3, + 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184, 98,102, 3,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64, 98,102, 3, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 99,102, 3, +197, 0, 0, 0, 1, 0, 0, 0,176, 99,102, 3, 0, 0, 0, 0, 24, 93,102, 3,144, 93,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,176, 99,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 48,100,102, 3, 48, 99,102, 3, 24, 93,102, 3, +128, 94,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,100,102, 3,197, 0, 0, 0, 1, 0, 0, 0, +176,100,102, 3,176, 99,102, 3,144, 93,102, 3,248, 94,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +176,100,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 48,101,102, 3, 48,100,102, 3,128, 94,102, 3,248, 94,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,101,102, 3,197, 0, 0, 0, 1, 0, 0, 0,176,101,102, 3,176,100,102, 3, + 8, 94,102, 3,232, 95,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,101,102, 3,197, 0, 0, 0, + 1, 0, 0, 0, 48,102,102, 3, 48,101,102, 3,112, 95,102, 3,232, 95,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 48,102,102, 3,197, 0, 0, 0, 1, 0, 0, 0,176,102,102, 3,176,101,102, 3,248, 94,102, 3, 96, 96,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,102,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 48,103,102, 3, + 48,102,102, 3,128, 94,102, 3, 96, 96,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,103,102, 3, +197, 0, 0, 0, 1, 0, 0, 0,176,103,102, 3,176,102,102, 3,112, 95,102, 3, 96, 96,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,176,103,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 48,104,102, 3, 48,103,102, 3,248, 94,102, 3, +232, 95,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,104,102, 3,197, 0, 0, 0, 1, 0, 0, 0, +176,104,102, 3,176,103,102, 3,128, 94,102, 3,216, 96,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +176,104,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 48,105,102, 3, 48,104,102, 3, 96, 96,102, 3, 80, 97,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,105,102, 3,197, 0, 0, 0, 1, 0, 0, 0,176,105,102, 3,176,104,102, 3, +216, 96,102, 3, 80, 97,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,105,102, 3,197, 0, 0, 0, + 1, 0, 0, 0, 48,106,102, 3, 48,105,102, 3,216, 96,102, 3,200, 97,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 48,106,102, 3,197, 0, 0, 0, 1, 0, 0, 0,176,106,102, 3,176,105,102, 3, 80, 97,102, 3,200, 97,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,106,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 48,107,102, 3, + 48,106,102, 3,160, 92,102, 3, 64, 98,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,107,102, 3, +197, 0, 0, 0, 1, 0, 0, 0,176,107,102, 3,176,106,102, 3, 64, 98,102, 3,184, 98,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,176,107,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 48,108,102, 3, 48,107,102, 3, 8, 94,102, 3, +184, 98,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,108,102, 3,197, 0, 0, 0, 1, 0, 0, 0, +176,108,102, 3,176,107,102, 3,112, 95,102, 3,184, 98,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +176,108,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 48,109,102, 3, 48,108,102, 3,200, 97,102, 3, 64, 98,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,109,102, 3,197, 0, 0, 0, 1, 0, 0, 0,176,109,102, 3,176,108,102, 3, + 80, 97,102, 3,184, 98,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,109,102, 3,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 48,109,102, 3,160, 92,102, 3,216, 96,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0, 48,110,102, 3,199, 0, 0, 0, 1, 0, 0, 0,184,113,102, 3, 0, 0, 0, 0,128, 94,102, 3, 24, 93,102, 3, +144, 93,102, 3,248, 94,102, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, + 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 40,179,102, 3, 40,179,102, 3,248,110,102, 3, 88,112,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,110,102, 3,200, 0, 0, 0, + 1, 0, 0, 0, 88,112,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, + 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, +188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 88,112,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248,110,102, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,216, 43, 62, 4, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,200, 48, 62, 4, 0, 0, 0, 0, 8, 40, 62, 4, 0, 0, 0, 0,136,231, 57, 4, 0, 0, 0, 0, -120,228, 57, 4, 0, 0, 0, 0,232,228, 57, 4, 0, 0, 0, 0, 40,227, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,234, 0, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168, 47, 62, 4, 0, 0, 0, 0,168, 47, 62, 4, 0, 0, 0, 0,200, 44, 62, 4, 0, 0, 0, 0, - 56, 46, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200, 44, 62, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 56, 46, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,116, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0,128,190, 67, 0,192, 25, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,234, 0, 26, 0,234, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -234, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56, 46, 62, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200, 44, 62, 4, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, - 50, 51, 74,193,154,209,131, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, - 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, - 4, 0, 0, 4, 8, 0,234, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -234, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,168, 47, 62, 4, 0, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -200, 48, 62, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,216, 53, 62, 4, 0, 0, 0, 0,216, 43, 62, 4, 0, 0, 0, 0, -120,228, 57, 4, 0, 0, 0, 0, 88,229, 57, 4, 0, 0, 0, 0, 8,228, 57, 4, 0, 0, 0, 0,232,228, 57, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,186, 2, 0, 0, 4, 4,234, 0,122, 2, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 52, 62, 4, 0, 0, 0, 0,152, 52, 62, 4, 0, 0, 0, 0, -184, 49, 62, 4, 0, 0, 0, 0, 40, 51, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,184, 49, 62, 4, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 40, 51, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,184,113,102, 3,199, 0, 0, 0, 1, 0, 0, 0, 96,118,102, 3, + 48,110,102, 3,184, 98,102, 3,112, 95,102, 3,232, 95,102, 3, 8, 94,102, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,234, 0, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 64,117,102, 3, + 64,117,102, 3,128,114,102, 3,224,115,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,128,114,102, 3,200, 0, 0, 0, 1, 0, 0, 0,224,115,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,116, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0,128,190, 67, 0,192, 25, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, - 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0,156, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 26, 0,234, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,234, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,115,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +128,114,102, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, 0, 0, 0, 0, + 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, + 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,234, 0, 38, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 64,117,102, 3, +176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 40, 51, 62, 4, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 49, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105, 67, - 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 88, 67, 0,192, 22,196, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, - 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, - 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0, 91, 2,217, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,155, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152, 52, 62, 4, 0, 0, 0, 0, -165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 96,118,102, 3,199, 0, 0, 0, 1, 0, 0, 0, 40,123,102, 3,184,113,102, 3, +112, 95,102, 3, 96, 96,102, 3,248, 94,102, 3,232, 95,102, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, +186, 2, 0, 0, 4, 4,234, 0,122, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,121,102, 3,232,121,102, 3, + 40,119,102, 3,136,120,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 40,119,102, 3,200, 0, 0, 0, 1, 0, 0, 0,136,120,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, + 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0,156, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136,120,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,119,102, 3, + 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 88, 67, 0,192, 22,196, 0, 0, 0, 0, +217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0, 91, 2,217, 0, 91, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,155, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,232,121,102, 3,165, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,216, 53, 62, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104, 1, 66, 4, 0, 0, 0, 0, -200, 48, 62, 4, 0, 0, 0, 0, 24,231, 57, 4, 0, 0, 0, 0,168,230, 57, 4, 0, 0, 0, 0, 56,230, 57, 4, 0, 0, 0, 0, -136,231, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, - 1, 1, 19, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,255, 65, 4, 0, 0, 0, 0, -232,255, 65, 4, 0, 0, 0, 0,200, 54, 62, 4, 0, 0, 0, 0,136, 60, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -200, 54, 62, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56, 56, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 4, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0, 40,123,102, 3,199, 0, 0, 0, 1, 0, 0, 0,224,135,102, 3, 96,118,102, 3, 64, 98,102, 3,200, 97,102, 3, + 80, 97,102, 3,184, 98,102, 3, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 1, 1, 19, 2, + 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,134,102, 3,128,134,102, 3,240,123,102, 3,112,129,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,123,102, 3,200, 0, 0, 0, + 1, 0, 0, 0, 80,125,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0,192, 4, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, + 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0, 19, 2, 26, 0, 19, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 80,125,102, 3,200, 0, 0, 0, 1, 0, 0, 0,176,126,102, 3,240,123,102, 3, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0,250, 0, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 18, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 19, 2, 26, 0, 19, 2, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 56, 56, 62, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,168, 57, 62, 4, 0, 0, 0, 0,200, 54, 62, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,250, 0, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -168, 57, 62, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 24, 59, 62, 4, 0, 0, 0, 0, 56, 56, 62, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,126,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 16,128,102, 3, + 80,125,102, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, + 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0, +102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,128,102, 3, +200, 0, 0, 0, 1, 0, 0, 0,112,129,102, 3,176,126,102, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,184,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,180, 0,130, 1,163, 0,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, + 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 24, 59, 62, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,136, 60, 62, 4, 0, 0, 0, 0,168, 57, 62, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,184,195, 0, 0, 0, 0, -163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,130, 1,163, 0,112, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -136, 60, 62, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 59, 62, 4, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,112,129,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16,128,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 19, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208,130,102, 3, 68, 65, 84, 65, 72, 3, 0, 0,208,130,102, 3,159, 0, 0, 0, 1, 0, 0, 0, + 37,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249,173,116, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0, +221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0, +191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, +223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0, + 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, + 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, + 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, + 80, 25,195, 62,218,249,206, 62, 0,237,196,187, 0, 0, 96,179,234, 2,170,189,191, 98,167, 61, 1,208,111, 62, 0, 0,224, 49, +254,120, 21,194,182, 5, 2, 66, 70,136,213,193,239,214,159,192, 5, 39, 19, 66, 15,174,255,193,217,101,210, 65,219, 40,160, 64, +221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0, +191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, + 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, + 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,252, 65, 4, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, - 56,252, 65, 4, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 37,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,249,173,116, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, - 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, - 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, - 87,126,162,190,228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0, -110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191, -170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190, -222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, 80, 25,195, 62,218,249,206, 62, 0,237,196,187, 0, 0, 96,179, -234, 2,170,189,191, 98,167, 61, 1,208,111, 62, 0, 0,224, 49,254,120, 21,194,182, 5, 2, 66, 70,136,213,193,239,214,159,192, - 5, 39, 19, 66, 15,174,255,193,217,101,210, 65,219, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, - 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, - 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191, -170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190, -222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190, -214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,223, 34, 9, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, +223, 34, 9, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -775,97 +620,80 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, - 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, -232,255, 65, 4, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0,104,233,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,104, 1, 66, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,168, 6, 66, 4, 0, 0, 0, 0, -216, 53, 62, 4, 0, 0, 0, 0,200,229, 57, 4, 0, 0, 0, 0,152,227, 57, 4, 0, 0, 0, 0, 88,229, 57, 4, 0, 0, 0, 0, - 56,230, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, - 16, 16, 20, 4,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 5, 66, 4, 0, 0, 0, 0, - 56, 5, 66, 4, 0, 0, 0, 0, 88, 2, 66, 4, 0, 0, 0, 0,200, 3, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 88, 2, 66, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,200, 3, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, + 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,134,102, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 7, 0,208,160,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,224,135,102, 3, +199, 0, 0, 0, 1, 0, 0, 0,192,140,102, 3, 40,123,102, 3,216, 96,102, 3,128, 94,102, 3, 96, 96,102, 3, 80, 97,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 16, 16, 20, 4,166, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,104,139,102, 3,104,139,102, 3,168,136,102, 3, 8,138,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,136,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 8,138,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -200, 3, 66, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 2, 66, 4, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,110,142,241,195, 55,199,120, 68,240, 80,128,193,136, 2, 4, 68, - 3, 4, 0, 0, 20, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 2, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, -236, 81,184, 61, 10,215, 19, 64, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 20, 4,140, 1, 3, 4,122, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,138,102, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,168,136,102, 3, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, +110,142,241,195, 55,199,120, 68,240, 80,128,193,136, 2, 4, 68, 3, 4, 0, 0, 20, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, + 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,236, 81,184, 61, 10,215, 19, 64, 10, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 0, 4, 0, 0, 20, 4,140, 1, 3, 4,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 19, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 56, 5, 66, 4, 0, 0, 0, 0,177, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,244, 0, 0, 0,104,139,102, 3,177, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 61,181, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 61,181, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,192,140,102, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +224,135,102, 3,160, 92,102, 3,216, 96,102, 3,200, 97,102, 3, 64, 98,102, 3, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, + 0, 0, 0, 0, 19, 1, 0, 0, 6, 6, 0, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,145,102, 3, +168,145,102, 3,136,141,102, 3, 72,144,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,136,141,102, 3,200, 0, 0, 0, 1, 0, 0, 0,232,142,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 2, 26, 0, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,168, 6, 66, 4, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 1, 66, 4, 0, 0, 0, 0,248, 67, 10, 3, 0, 0, 0, 0, -200,229, 57, 4, 0, 0, 0, 0,168,230, 57, 4, 0, 0, 0, 0, 24,231, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 6, 6, 0, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232, 32,127, 4, 0, 0, 0, 0,232, 32,127, 4, 0, 0, 0, 0,152, 7, 66, 4, 0, 0, 0, 0, -120, 10, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152, 7, 66, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 8, 9, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 0, 2, 26, 0, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8, 9, 66, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -120, 10, 66, 4, 0, 0, 0, 0,152, 7, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232,142,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 72,144,102, 3, +136,141,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120, 10, 66, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,144,102, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232,142,102, 3, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0,191, 0, 0,192, 63, 0, 0, 64, 60, 0, 0,125, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 1, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255, 1, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 33, 0, 0,232, 32,127, 4, 0, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 33, 0, 0,168,145,102, 3,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, - 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0, +100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -994,8 +822,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1124,286 +952,278 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,192,179,102, 3,195, 0, 0, 0, 1, 0, 0, 0, +216,198,102, 3,176, 91,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,180,102, 3,216,185,102, 3, 80,186,102, 3, +208,194,102, 3, 80,195,102, 3,176, 73,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0,125,101,170, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,180,102, 3,196, 0, 0, 0, 1, 0, 0, 0, + 40,181,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,181,102, 3, +196, 0, 0, 0, 1, 0, 0, 0,160,181,102, 3,176,180,102, 3, 0, 0, 0, 0, 0, 0,202, 3, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,160,181,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 24,182,102, 3, 40,181,102, 3, 0, 0, 0, 0,136, 6,202, 3, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24,182,102, 3,196, 0, 0, 0, 1, 0, 0, 0,144,182,102, 3,160,181,102, 3, + 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144,182,102, 3,196, 0, 0, 0, 1, 0, 0, 0, + 8,183,102, 3, 24,182,102, 3, 0, 0, 0, 0, 0, 0,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8,183,102, 3, +196, 0, 0, 0, 1, 0, 0, 0,128,183,102, 3,144,182,102, 3, 0, 0, 0, 0,136, 6,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,128,183,102, 3,196, 0, 0, 0, 1, 0, 0, 0,248,183,102, 3, 8,183,102, 3, 0, 0, 0, 0,108, 5, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248,183,102, 3,196, 0, 0, 0, 1, 0, 0, 0,112,184,102, 3,128,183,102, 3, + 0, 0, 0, 0,108, 5,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,112,184,102, 3,196, 0, 0, 0, 1, 0, 0, 0, +232,184,102, 3,248,183,102, 3, 0, 0, 0, 0,108, 5, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232,184,102, 3, +196, 0, 0, 0, 1, 0, 0, 0, 96,185,102, 3,112,184,102, 3, 0, 0, 0, 0,136, 6, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 96,185,102, 3,196, 0, 0, 0, 1, 0, 0, 0,216,185,102, 3,232,184,102, 3, 0, 0, 0, 0, 0, 0, 80, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216,185,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,185,102, 3, + 0, 0, 0, 0,108, 5, 80, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,186,102, 3,197, 0, 0, 0, 1, 0, 0, 0, +208,186,102, 3, 0, 0, 0, 0, 40,181,102, 3,160,181,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +208,186,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80,187,102, 3, 80,186,102, 3, 40,181,102, 3,144,182,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,187,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208,187,102, 3,208,186,102, 3, +160,181,102, 3, 8,183,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,187,102, 3,197, 0, 0, 0, + 1, 0, 0, 0, 80,188,102, 3, 80,187,102, 3,144,182,102, 3, 8,183,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 80,188,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208,188,102, 3,208,187,102, 3,176,180,102, 3,128,183,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,188,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80,189,102, 3, + 80,188,102, 3, 24,182,102, 3,128,183,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,189,102, 3, +197, 0, 0, 0, 1, 0, 0, 0,208,189,102, 3,208,188,102, 3,144,182,102, 3,248,183,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,208,189,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80,190,102, 3, 80,189,102, 3, 8,183,102, 3, +248,183,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,190,102, 3,197, 0, 0, 0, 1, 0, 0, 0, +208,190,102, 3,208,189,102, 3,128,183,102, 3,112,184,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +208,190,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80,191,102, 3, 80,190,102, 3,248,183,102, 3,112,184,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,191,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208,191,102, 3,208,190,102, 3, + 8,183,102, 3,232,184,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,191,102, 3,197, 0, 0, 0, + 1, 0, 0, 0, 80,192,102, 3, 80,191,102, 3, 24,182,102, 3,232,184,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 80,192,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208,192,102, 3,208,191,102, 3,112,184,102, 3,232,184,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,192,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80,193,102, 3, + 80,192,102, 3,176,180,102, 3, 96,185,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,193,102, 3, +197, 0, 0, 0, 1, 0, 0, 0,208,193,102, 3,208,192,102, 3,144,182,102, 3, 96,185,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,208,193,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80,194,102, 3, 80,193,102, 3,248,183,102, 3, +216,185,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,194,102, 3,197, 0, 0, 0, 1, 0, 0, 0, +208,194,102, 3,208,193,102, 3,128,183,102, 3,216,185,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +208,194,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80,194,102, 3, 96,185,102, 3,216,185,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 80,195,102, 3,199, 0, 0, 0, 1, 0, 0, 0,248,204,102, 3, 0, 0, 0, 0, +144,182,102, 3, 40,181,102, 3,160,181,102, 3, 8,183,102, 3, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,176, 3, 0, 0, +202, 3, 0, 0, 7, 7,137, 6, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 8, 0,240,187,240, 2, 96,162,105, 3,120, 62, 83, 3, + 24,196,102, 3,120,197,102, 3, 0, 0, 0, 0, 0, 0, 0, 0,248,106, 83, 3,128,207, 8, 3, 68, 65, 84, 65,248, 0, 0, 0, + 24,196,102, 3,200, 0, 0, 0, 1, 0, 0, 0,120,197,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,147, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,136, 6, 0, 0,176, 3, 0, 0,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +137, 6, 26, 0, 15, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160,189,240, 2,168,103,109, 3,168,103,109, 3, 0, 0, 0, 0, 0, 0, 0, 0,144, 58, 83, 3,144, 90, 78, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,197,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 24,196,102, 3, + 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, +112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 3, 0, 0,202, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,202, 3, 0, 0,202, 3, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,188,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +216, 43, 8, 3, 0,224, 82, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40, 12, 83, 3,200, 0, 0, 0, + 1, 0, 0, 0, 48,132, 78, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, + 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, +149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,193,240, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 48,132, 78, 3,200, 0, 0, 0, 1, 0, 0, 0,216,181,101, 3, 40, 12, 83, 3, 0, 0, 0, 0, 0, 0,112, 67, + 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, + 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, + 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0,149, 3,223, 0,149, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,152,194,240, 2, 0, 0, 0, 0, 0, 0, 0, 0,216, 26, 83, 3,224, 49, 76, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,181,101, 3,200, 0, 0, 0, 1, 0, 0, 0, 64,134, 78, 3, + 48,132, 78, 3, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, + 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, + 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,153, 5, 60, 0,153, 5, + 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 89, 3, 0, 0,148, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,193,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,134, 78, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216,181,101, 3, 0, 0, 0, 0, 0, 0, 96, 67, 0, 0, 85,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 32,179, 68, 0,192, 81,196, 0, 0, 0, 0,136, 5, 0, 0,153, 5, 0, 0, 18, 0, 0, 0, 88, 3, 0, 0, + 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 18, 0, 0, 0, 88, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, + 4, 0, 0, 4, 6, 0,153, 5, 89, 3,153, 5, 71, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0, +136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0,153, 5, 89, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,192,240, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 60, 0, 0, 0,120, 62, 83, 3,168, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,162,105, 3, 40, 12, 83, 3, + 64,134, 78, 3, 5, 0, 0, 0, 0, 0, 0, 0, 64, 23, 8, 3, 0, 0, 0, 0,144, 61, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,184, 48, 83, 3, 1, 0,255,255,255,255, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,248,204,102, 3,199, 0, 0, 0, + 1, 0, 0, 0,136, 14,103, 3, 80,195,102, 3,128,183,102, 3,112,184,102, 3,232,184,102, 3, 24,182,102, 3, 0, 0, 0, 0, +109, 5, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 4, 4, 28, 1, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, + 40,184,240, 2, 40, 7,103, 3,232, 13,103, 3,192,205,102, 3, 32,207,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 88,237, 82, 3, + 8, 87, 78, 3, 68, 65, 84, 65,248, 0, 0, 0,192,205,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 32,207,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,160, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,142, 67, 0, 0, 0, 0, 0, 0,248, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 28, 1, 31, 0, 28, 1, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0,229, 2, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 31, 0, 18, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,187,240, 2,168, 27, 85, 3,168, 27, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, +144,244, 82, 3, 0,188, 77, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,207,102, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,192,205,102, 3, 0, 0, 0, 0, 0, 0,142, 67, 0,128, 86,196, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,133, 67, 0, 64, 57,196, 0, 0, 0, 0, 11, 1, 0, 0, 28, 1, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, + 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, + 6, 0, 28, 1,229, 2, 11, 1,229, 2, 0, 0,216, 47, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, + 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1,229, 2, 19, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,185,240, 2,176,136, 77, 3, +240,126, 78, 3,128,208,102, 3,128, 5,103, 3,208, 34,117, 3, 16,239, 82, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0,128,208,102, 3,198, 0, 0, 0, 1, 0, 0, 0, 40,210,102, 3, 0, 0, 0, 0,216,185,240, 2, 0, 0, 0, 0, + 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,220,255, 11, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 40,210,102, 3,198, 0, 0, 0, + 1, 0, 0, 0,208,211,102, 3,128,208,102, 3,192,138,254, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, +110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, +110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 11, 1, 61, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208,211,102, 3,198, 0, 0, 0, 1, 0, 0, 0,120,213,102, 3, 40,210,102, 3, +216,140,254, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 23, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +120,213,102, 3,198, 0, 0, 0, 1, 0, 0, 0, 32,215,102, 3,208,211,102, 3,240,142,254, 2, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101, +110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254, + 11, 1,203, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32,215,102, 3,198, 0, 0, 0, 1, 0, 0, 0, +200,216,102, 3,120,213,102, 3, 8,145,254, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108, +105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108, +105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254, 11, 1, 58, 0, 20, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,200,216,102, 3,198, 0, 0, 0, 1, 0, 0, 0,112,218,102, 3, 32,215,102, 3, 32,147,254, 2, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 70,117,108,108, 32, 83, 97,109,112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 34,254, 11, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,120, 12, 66, 4, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -184,228,127, 4, 0, 0, 0, 0, 40,225, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 13, 66, 4, 0, 0, 0, 0,104, 18, 66, 4, 0, 0, 0, 0,216, 18, 66, 4, 0, 0, 0, 0, - 72, 26, 66, 4, 0, 0, 0, 0,184, 26, 66, 4, 0, 0, 0, 0,136,137,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,190,177, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,152, 13, 66, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 8, 14, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8, 14, 66, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -120, 14, 66, 4, 0, 0, 0, 0,152, 13, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 4, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,120, 14, 66, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,232, 14, 66, 4, 0, 0, 0, 0, - 8, 14, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 97, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -232, 14, 66, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 88, 15, 66, 4, 0, 0, 0, 0,120, 14, 66, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88, 15, 66, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,200, 15, 66, 4, 0, 0, 0, 0,232, 14, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 70, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200, 15, 66, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 56, 16, 66, 4, 0, 0, 0, 0, 88, 15, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 70, 4, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 56, 16, 66, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,168, 16, 66, 4, 0, 0, 0, 0, -200, 15, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -168, 16, 66, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24, 17, 66, 4, 0, 0, 0, 0, 56, 16, 66, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 70, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24, 17, 66, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,136, 17, 66, 4, 0, 0, 0, 0,168, 16, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 6,124, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136, 17, 66, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -248, 17, 66, 4, 0, 0, 0, 0, 24, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7,124, 3, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,248, 17, 66, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,104, 18, 66, 4, 0, 0, 0, 0, -136, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -104, 18, 66, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 17, 66, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 92, 0, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216, 18, 66, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 72, 19, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 14, 66, 4, 0, 0, 0, 0, -120, 14, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72, 19, 66, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,184, 19, 66, 4, 0, 0, 0, 0,216, 18, 66, 4, 0, 0, 0, 0, 8, 14, 66, 4, 0, 0, 0, 0, - 88, 15, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184, 19, 66, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 40, 20, 66, 4, 0, 0, 0, 0, 72, 19, 66, 4, 0, 0, 0, 0,120, 14, 66, 4, 0, 0, 0, 0, -200, 15, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40, 20, 66, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,152, 20, 66, 4, 0, 0, 0, 0,184, 19, 66, 4, 0, 0, 0, 0, 88, 15, 66, 4, 0, 0, 0, 0, -200, 15, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152, 20, 66, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 8, 21, 66, 4, 0, 0, 0, 0, 40, 20, 66, 4, 0, 0, 0, 0,152, 13, 66, 4, 0, 0, 0, 0, - 56, 16, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8, 21, 66, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,120, 21, 66, 4, 0, 0, 0, 0,152, 20, 66, 4, 0, 0, 0, 0,232, 14, 66, 4, 0, 0, 0, 0, - 56, 16, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120, 21, 66, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,232, 21, 66, 4, 0, 0, 0, 0, 8, 21, 66, 4, 0, 0, 0, 0, 88, 15, 66, 4, 0, 0, 0, 0, -168, 16, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232, 21, 66, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 88, 22, 66, 4, 0, 0, 0, 0,120, 21, 66, 4, 0, 0, 0, 0,200, 15, 66, 4, 0, 0, 0, 0, -168, 16, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88, 22, 66, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,200, 22, 66, 4, 0, 0, 0, 0,232, 21, 66, 4, 0, 0, 0, 0, 56, 16, 66, 4, 0, 0, 0, 0, - 24, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200, 22, 66, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 56, 23, 66, 4, 0, 0, 0, 0, 88, 22, 66, 4, 0, 0, 0, 0,168, 16, 66, 4, 0, 0, 0, 0, - 24, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56, 23, 66, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,168, 23, 66, 4, 0, 0, 0, 0,200, 22, 66, 4, 0, 0, 0, 0,200, 15, 66, 4, 0, 0, 0, 0, -136, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168, 23, 66, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 24, 24, 66, 4, 0, 0, 0, 0, 56, 23, 66, 4, 0, 0, 0, 0,232, 14, 66, 4, 0, 0, 0, 0, -136, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24, 24, 66, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,136, 24, 66, 4, 0, 0, 0, 0,168, 23, 66, 4, 0, 0, 0, 0, 24, 17, 66, 4, 0, 0, 0, 0, -136, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136, 24, 66, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,248, 24, 66, 4, 0, 0, 0, 0, 24, 24, 66, 4, 0, 0, 0, 0,152, 13, 66, 4, 0, 0, 0, 0, -248, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248, 24, 66, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,104, 25, 66, 4, 0, 0, 0, 0,136, 24, 66, 4, 0, 0, 0, 0, 88, 15, 66, 4, 0, 0, 0, 0, -248, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104, 25, 66, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,216, 25, 66, 4, 0, 0, 0, 0,248, 24, 66, 4, 0, 0, 0, 0,168, 16, 66, 4, 0, 0, 0, 0, -104, 18, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216, 25, 66, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 72, 26, 66, 4, 0, 0, 0, 0,104, 25, 66, 4, 0, 0, 0, 0, 56, 16, 66, 4, 0, 0, 0, 0, -104, 18, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72, 26, 66, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 25, 66, 4, 0, 0, 0, 0,248, 17, 66, 4, 0, 0, 0, 0, -104, 18, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184, 26, 66, 4, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,136, 30, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 15, 66, 4, 0, 0, 0, 0, - 8, 14, 66, 4, 0, 0, 0, 0,120, 14, 66, 4, 0, 0, 0, 0,200, 15, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,118, 7, 0, 0, 71, 4, 0, 0, 97, 4, 0, 0, 7, 7,119, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 8, 0, -152,130,240, 2, 0, 0, 0, 0, 40,228,127, 4, 0, 0, 0, 0, 40,228,127, 4, 0, 0, 0, 0,168, 27, 66, 4, 0, 0, 0, 0, - 24, 29, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 51, 5, 88,159,127, 0, 0, -168, 52, 5, 88,159,127, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168, 27, 66, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 24, 29, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,148, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,224,238, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,119, 7, 26, 0,119, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,118, 7, 0, 0, 71, 4, 0, 0, 96, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 7, 26, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168,132,240, 2, 0, 0, 0, 0,248,233, 9, 3, 0, 0, 0, 0,248,233, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 53, 5, 88,159,127, 0, 0, 8, 56, 5, 88,159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24, 29, 66, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168, 27, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 97, 4, 0, 0, 97, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184,131,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,136, 30, 66, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 40,126,127, 4, 0, 0, 0, 0,184, 26, 66, 4, 0, 0, 0, 0, 56, 16, 66, 4, 0, 0, 0, 0, 24, 17, 66, 4, 0, 0, 0, 0, -136, 17, 66, 4, 0, 0, 0, 0,232, 14, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, - 0, 0, 0, 0,123, 3, 0, 0, 4, 4, 70, 1,124, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 56,126,240, 2, 0, 0, 0, 0, -120,118,127, 4, 0, 0, 0, 0,120,125,127, 4, 0, 0, 0, 0,120, 31, 66, 4, 0, 0, 0, 0,232, 32, 66, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 56, 5, 88,159,127, 0, 0,216, 57, 5, 88,159,127, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,120, 31, 66, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,232, 32, 66, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,163, 67, - 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, - 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 70, 1, - 31, 0, 70, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, - 93, 3, 0, 0,123, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 31, 0, 3, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,129,240, 2, 0, 0, 0, 0, -152,246, 9, 3, 0, 0, 0, 0,152,246, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 58, 5, 88,159,127, 0, 0, 56, 61, 5, 88,159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,232, 32, 66, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 31, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,163, 67, 0, 64, 87,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,154, 67, - 0, 64, 87,196, 0, 0, 0, 0, 53, 1, 0, 0, 70, 1, 0, 0, 0, 0, 0, 0, 92, 3, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 52, 1, 0, 0, 0, 0, 0, 0, 92, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 70, 1, - 93, 3, 53, 1, 93, 3, 0, 0, 88,239, 57, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, - 0, 0, 0, 0, 92, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 93, 3, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,127,240, 2, 0, 0, 0, 0, - 88, 82, 53, 4, 0, 0, 0, 0,104,210, 9, 3, 0, 0, 0, 0, 88, 34, 66, 4, 0, 0, 0, 0,216,116,127, 4, 0, 0, 0, 0, -120, 62, 5, 88,159,127, 0, 0,232, 64, 5, 88,159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 88, 34, 66, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,120, 66,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 72,128,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, - 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, - 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255, 53, 1, 36, 0, - 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120, 66,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0, 24, 68,127, 4, 0, 0, 0, 0, 88, 34, 66, 4, 0, 0, 0, 0,200,240, 69, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 53, 1, 61, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 22, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 24, 68,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,184, 69,127, 4, 0, 0, 0, 0, -120, 66,127, 4, 0, 0, 0, 0, 56,246, 69, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 53, 1, 0, 0, - 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184, 69,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0, 88, 71,127, 4, 0, 0, 0, 0, 24, 68,127, 4, 0, 0, 0, 0,152,248, 69, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254, 53, 1,203, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 24, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 88, 71,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,248, 72,127, 4, 0, 0, 0, 0, -184, 69,127, 4, 0, 0, 0, 0, 8,254, 69, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, - 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254, 53, 1, 58, 0, - 20, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248, 72,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0,152, 74,127, 4, 0, 0, 0, 0, 88, 71,127, 4, 0, 0, 0, 0,104, 0, 70, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 70,117,108,108, 32, 83, 97,109,112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254, 53, 1, 0, 0, 20, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,152, 74,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 56, 76,127, 4, 0, 0, 0, 0, -248, 72,127, 4, 0, 0, 0, 0,200,199, 55, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,112,218,102, 3, +198, 0, 0, 0, 1, 0, 0, 0, 24,220,102, 3,200,216,102, 3, 56,149,254, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,253, 53, 1,102, 0, - 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,253, 11, 1,102, 0, + 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56, 76,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0,216, 77,127, 4, 0, 0, 0, 0,152, 74,127, 4, 0, 0, 0, 0,232, 12, 70, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 24,220,102, 3,198, 0, 0, 0, 1, 0, 0, 0,192,221,102, 3, +112,218,102, 3, 80,151,254, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,253, 53, 1,130, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 28, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,253, 11, 1,130, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0,192,221,102, 3,198, 0, 0, 0, 1, 0, 0, 0,104,223,102, 3, 24,220,102, 3,128,155,254, 2, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,242,252, 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,216, 77,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,120, 79,127, 4, 0, 0, 0, 0, - 56, 76,127, 4, 0, 0, 0, 0, 24,156, 55, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97, -110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,252, 53, 1, 0, 0, - 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,104,223,102, 3,198, 0, 0, 0, + 1, 0, 0, 0, 16,225,102, 3,192,221,102, 3,152,157,254, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111, +115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111, +115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115, +105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218,252, 11, 1, 0, 0, 0, 0, 0, 0, + 4, 0, 6, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120, 79,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0, 24, 81,127, 4, 0, 0, 0, 0,216, 77,127, 4, 0, 0, 0, 0,200, 27, 70, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 16,225,102, 3,198, 0, 0, 0, 1, 0, 0, 0,184,226,102, 3,104,223,102, 3, +176,159,254, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218,252, 53, 1, 0, 0, 0, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,252, 11, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +184,226,102, 3,198, 0, 0, 0, 1, 0, 0, 0, 96,228,102, 3, 16,225,102, 3,200,161,254, 2, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 24, 81,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,184, 82,127, 4, 0, 0, 0, 0, -120, 79,127, 4, 0, 0, 0, 0, 40, 30, 70, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,252, 53, 1, 0, 0, - 20, 0, 0, 0, 4, 0, 2, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,252, + 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184, 82,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0, 88, 84,127, 4, 0, 0, 0, 0, 24, 81,127, 4, 0, 0, 0, 0, 40,214, 55, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,252, 53, 1, 0, 0, 0, 0, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 96,228,102, 3,198, 0, 0, 0, 1, 0, 0, 0, + 8,230,102, 3,184,226,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101, +120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101, +120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 88, 84,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,248, 85,127, 4, 0, 0, 0, 0, -184, 82,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95, 99,111,110,116,101,120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95, 99,111,110,116,101,120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41,255, 7, 1,179, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41,255, 7, 1,179, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0, 8,230,102, 3,198, 0, 0, 0, 1, 0, 0, 0,176,231,102, 3, 96,228,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248, 85,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0,152, 87,127, 4, 0, 0, 0, 0, 88, 84,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 77, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102,254, 7, 1,171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0,102,254, 7, 1,171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,152, 87,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 56, 89,127, 4, 0, 0, 0, 0, -248, 85,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,176,231,102, 3, +198, 0, 0, 0, 1, 0, 0, 0, 88,233,102, 3, 8,230,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1413,89 +1233,82 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56, 89,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0,216, 90,127, 4, 0, 0, 0, 0,152, 87,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114,111,112,115, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 88,233,102, 3,198, 0, 0, 0, 1, 0, 0, 0, 0,235,102, 3, +176,231,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114, +111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114, +111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,117,115,116,111,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114,111,112,115, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,253, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 67,117,115,116,111,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0, 0,235,102, 3,198, 0, 0, 0, 1, 0, 0, 0,168,236,102, 3, 88,233,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,253, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 87,254, 7, 1,186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,168,236,102, 3,198, 0, 0, 0, + 1, 0, 0, 0, 80,238,102, 3, 0,235,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105, +109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105, +109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,216, 90,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,120, 92,127, 4, 0, 0, 0, 0, - 56, 89,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,101,118,105,101,119, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,254, 7, 1,186, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,253, 7, 1, 36, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120, 92,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0, 24, 94,127, 4, 0, 0, 0, 0,216, 90,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80,238,102, 3,198, 0, 0, 0, 1, 0, 0, 0,248,239,102, 3,168,236,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 32, 83, 97,109,112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,253, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,252, 7, 1,212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 24, 94,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,184, 95,127, 4, 0, 0, 0, 0, -120, 92,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 32, 83, 97, -109,112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,252, 7, 1,212, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +248,239,102, 3,198, 0, 0, 0, 1, 0, 0, 0,160,241,102, 3, 80,238,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103, +101, 32, 77, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, + 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184, 95,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0, 88, 97,127, 4, 0, 0, 0, 0, 24, 94,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,160,241,102, 3,198, 0, 0, 0, 1, 0, 0, 0, + 72,243,102, 3,248,239,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,108,111,114, +115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,108,111,114, +115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 32, 77, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,254, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0, 72,243,102, 3,198, 0, 0, 0, 1, 0, 0, 0,240,244,102, 3,160,241,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 88, 97,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,248, 98,127, 4, 0, 0, 0, 0, -184, 95,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95, 99,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95, 99,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114,115, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,254, 7, 1, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,161,253, 7, 1,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248, 98,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0,152,100,127, 4, 0, 0, 0, 0, 88, 97,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 67,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161,253, 7, 1,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,152,100,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 56,102,127, 4, 0, 0, 0, 0, -248, 98,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,240,244,102, 3, +198, 0, 0, 0, 1, 0, 0, 0,152,246,102, 3, 72,243,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,119,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,119,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1505,89 +1318,82 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56,102,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0,216,103,127, 4, 0, 0, 0, 0,152,100,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,152,246,102, 3,198, 0, 0, 0, 1, 0, 0, 0, 64,248,102, 3, +240,244,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0, 64,248,102, 3,198, 0, 0, 0, 1, 0, 0, 0,232,249,102, 3,152,246,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,123,253, 7, 1,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,216,103,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,120,105,127, 4, 0, 0, 0, 0, - 56,102,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,111,114,111,110,111,105, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123,253, 7, 1,196, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,232,249,102, 3,198, 0, 0, 0, + 1, 0, 0, 0,144,251,102, 3, 64,248,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112, +111,105,110,116,100,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112, +111,105,110,116,100,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,105,110,116, 32, 68,101,110,115,105,116, +121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,253, 7, 1,179, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120,105,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0, 24,107,127, 4, 0, 0, 0, 0,216,103,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,144,251,102, 3,198, 0, 0, 0, 1, 0, 0, 0, 56,253,102, 3,232,249,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95, +116,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95, +116,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80,111,105,110,116, 32, 68,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,253, 7, 1,179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,253, 7, 1,102, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 24,107,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,184,108,127, 4, 0, 0, 0, 0, -120,105,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95,116,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95,116,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,117,114, 98,117,108,101,110, - 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,253, 7, 1,102, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, + 56,253,102, 3,198, 0, 0, 0, 1, 0, 0, 0,224,254,102, 3,144,251,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77,117,115,103, +114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139,253, + 7, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184,108,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0, 88,110,127, 4, 0, 0, 0, 0, 24,107,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,224,254,102, 3,198, 0, 0, 0, 1, 0, 0, 0, +136, 0,103, 3, 56,253,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,114, 98,108, +101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,114, 98,108, +101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 77,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139,253, 7, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,253, 7, 1,183, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,136, 0,103, 3,198, 0, 0, 0, 1, 0, 0, 0, 48, 2,103, 3,224,254,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 88,110,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,248,111,127, 4, 0, 0, 0, 0, -184,108,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,109, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,109, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,114, 98,108,101, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,253, 7, 1,183, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 77, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248,111,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0,152,113,127, 4, 0, 0, 0, 0, 88,110,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,152,113,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 56,115,127, 4, 0, 0, 0, 0, -248,111,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 48, 2,103, 3, +198, 0, 0, 0, 1, 0, 0, 0,216, 3,103, 3,136, 0,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,100,105,115,116,111,114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,100,105,115,116,111,114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1597,211 +1403,177 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56,115,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0,216,116,127, 4, 0, 0, 0, 0,152,113,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,216, 3,103, 3,198, 0, 0, 0, 1, 0, 0, 0,128, 5,103, 3, + 48, 2,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,254, 7, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,254, 7, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0,128, 5,103, 3,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216, 3,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,183,253, 7, 1,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,216,116,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56,115,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,117, 99, 99,105, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,183,253, 7, 1,136, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,118,127, 4, 0, 0, 0, 0, -165, 0, 0, 0, 1, 0, 0, 0,120,125,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 40, 7,103, 3,165, 0, 0, 0, + 1, 0, 0, 0,232, 13,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 1, 0, 0, 0, 0, 0,248, 59, 38, 4, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,184,119,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 40,121,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, + 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,192,214, 8, 3,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,104, 8,103, 3,200, 0, 0, 0, 1, 0, 0, 0,200, 9,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 9,103, 3,200, 0, 0, 0, 1, 0, 0, 0, 40, 11,103, 3, +104, 8,103, 3, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, + 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0,149, 3,223, 0, +149, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40, 11,103, 3, +200, 0, 0, 0, 1, 0, 0, 0,136, 12,103, 3,200, 9,103, 3, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, + 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, + 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,153, 5, 60, 0,153, 5, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0, +136, 6, 0, 0, 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, + 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,136, 12,103, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 11,103, 3, 0, 0, 0, 0, + 0,128,175, 68, 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0,136, 5, 0, 0, +153, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +135, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 2, 2, 0, 0, 2, 0, 3, 3, 2, 0, 0, 4, 6, 0,153, 5, 89, 3,136, 5, 89, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0,232, 13,103, 3,168, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 40, 7,103, 3,104, 8,103, 3,136, 12,103, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,136, 14,103, 3,199, 0, 0, 0, 1, 0, 0, 0, 80, 15,103, 3,248,204,102, 3,176,180,102, 3, 96,185,102, 3, +216,185,102, 3,128,183,102, 3, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 15, 15,108, 5, + 80, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,147,240, 2,240, 66,105, 3,240, 66,105, 3, 48, 64,105, 3,144, 65,105, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 40, 48, 83, 3, 8,153, 8, 3, 68, 65, 84, 65,248, 0, 0, 0, 48, 64,105, 3,200, 0, 0, 0, + 1, 0, 0, 0,144, 65,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,137, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0,128,173, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, + 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,108, 5, 26, 0,108, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 26, 0, 20, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,149,240, 2,192,138, 77, 3, +192,138, 77, 3, 0, 0, 0, 0, 0, 0, 0, 0,192,239, 82, 3, 72,221, 82, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,144, 65,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48, 64,105, 3, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, + 18, 0, 0, 0, 53, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, + 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,108, 5, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 26, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,108, 5, 54, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,104,148,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 98, 84, 3, 32, 99, 82, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0,240, 66,105, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, + 80, 15,103, 3,199, 0, 0, 0, 1, 0, 0, 0,176, 73,105, 3,136, 14,103, 3,112,184,102, 3,248,183,102, 3, 8,183,102, 3, +232,184,102, 3, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, 5, 3, 0, 0,174, 3, 0, 0, 3, 3, 28, 1,170, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8,145,240, 2,208, 70,105, 3,208, 70,105, 3, 16, 68,105, 3,112, 69,105, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 8,252, 82, 3, 96,100, 82, 3, 68, 65, 84, 65,248, 0, 0, 0, 16, 68,105, 3,200, 0, 0, 0, 1, 0, 0, 0, +112, 69,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,142, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, - 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, - 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, -149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 40,121,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,152,122,127, 4, 0, 0, 0, 0, -184,119,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, - 0, 64,101,196, 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0, -149, 3,223, 0,149, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, - 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,152,122,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 8,124,127, 4, 0, 0, 0, 0, - 40,121,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, - 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, - 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,153, 5, - 60, 0,153, 5, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, - 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, 0, 0, 4, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 8,124,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152,122,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,175, 68, 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, - 0, 64, 86,196, 0, 0, 0, 0,136, 5, 0, 0,153, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 2, 0, 3, 3, 2, 0, 0, 4, 6, 0,153, 5, - 89, 3,136, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, - 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,104, 0, 0, 0,120,125,127, 4, 0, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120,118,127, 4, 0, 0, 0, 0,184,119,127, 4, 0, 0, 0, 0, 8,124,127, 4, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0, 40,126,127, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 24,131,127, 4, 0, 0, 0, 0, -136, 30, 66, 4, 0, 0, 0, 0,152, 13, 66, 4, 0, 0, 0, 0,248, 17, 66, 4, 0, 0, 0, 0,104, 18, 66, 4, 0, 0, 0, 0, - 56, 16, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, - 15, 15, 48, 6, 92, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 84,240, 2, 0, 0, 0, 0,248,129,127, 4, 0, 0, 0, 0, -248,129,127, 4, 0, 0, 0, 0, 24,127,127, 4, 0, 0, 0, 0,136,128,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184, 65, 5, 88,159,127, 0, 0,184, 66, 5, 88,159,127, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 24,127,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,136,128,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,160,137, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 5, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 86,240, 2, 0, 0, 0, 0, 72,161, 62, 4, 0, 0, 0, 0, - 72,161, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 67, 5, 88,159,127, 0, 0, - 24, 70, 5, 88,159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -136,128,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,127,127, 4, 0, 0, 0, 0, - 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 47, 6, 0, 0, 18, 0, 0, 0, 65, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, -205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 48, 6, 66, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 26, 0, 0, 0, 91, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 66, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 85,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 71, 5, 88,159,127, 0, 0, -152, 74, 5, 88,159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, -248,129,127, 4, 0, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, + 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 28, 1, + 26, 0, 28, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0,149, 3, 0, 0, +174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 26, 0, 22, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,146,240, 2,208,140, 77, 3,208,140, 77, 3, + 0, 0, 0, 0, 0, 0, 0, 0,160,217, 76, 3,176,219, 76, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +112, 69,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 68,105, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128,133, 67, 0, 0,252,194, 0, 0, 0, 0, 11, 1, 0, 0, 28, 1, 0, 0, 18, 0, 0, 0, +143, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0, +143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, + 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 28, 1,144, 0, 11, 1,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +109, 5, 0, 0,136, 6, 0, 0, 5, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 28, 1,144, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248,145,240, 2, 40, 52,109, 3, 40, 52,109, 3, 0, 0, 0, 0, 0, 0, 0, 0,184,167, 78, 3, 24,169, 78, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,208, 70,105, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 24,131,127, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -136,137,127, 4, 0, 0, 0, 0, 40,126,127, 4, 0, 0, 0, 0, 24, 17, 66, 4, 0, 0, 0, 0,168, 16, 66, 4, 0, 0, 0, 0, -200, 15, 66, 4, 0, 0, 0, 0,136, 17, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, -125, 3, 0, 0, 69, 4, 0, 0, 3, 3, 70, 1,201, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 81,240, 2, 0, 0, 0, 0, -232,134,127, 4, 0, 0, 0, 0,232,134,127, 4, 0, 0, 0, 0, 8,132,127, 4, 0, 0, 0, 0,120,133,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 75, 5, 88,159,127, 0, 0,104, 76, 5, 88,159,127, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 8,132,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,120,133,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,163, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, - 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 70, 1, - 26, 0, 70, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, - 44, 4, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 26, 0, 7, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 83,240, 2, 0, 0, 0, 0, -184,102, 38, 4, 0, 0, 0, 0,184,102, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 77, 5, 88,159,127, 0, 0,200, 79, 5, 88,159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,120,133,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,132,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,154, 67, - 0, 0, 29,195, 0, 0, 0, 0, 53, 1, 0, 0, 70, 1, 0, 0, 18, 0, 0, 0,174, 0, 0, 0, 0, 0, 0, 0, 52, 1, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 52, 1, 0, 0, 18, 0, 0, 0,174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 70, 1, -175, 0, 53, 1,157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, -125, 3, 0, 0, 43, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1,175, 0, 8, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 82,240, 2, 0, 0, 0, 0, -184, 16, 60, 4, 0, 0, 0, 0,184, 16, 60, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 81, 5, 88,159,127, 0, 0,168, 82, 5, 88,159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 1, 0, 0,232,134,127, 4, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,221, 76, 3, 56,221, 76, 3, 48, 72,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 48, 72,105, 3, +223, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,160, 72,105, 3, 68, 65, 84, 65,168, 0, 0, 0,160, 72,105, 3, +222, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,136,106, 3, 19, 0, 0, 0, 1, 0, 1, 0, 48,136,106, 3, + 20, 0, 0, 0, 1, 0, 1, 0, 48,136,106, 3, 21, 0, 1, 0, 1, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, + 96,158,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 16,165,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 72,247,107, 3, 0, 0, 0, 0, + 1, 0, 1, 0,136,174,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 88, 84,107, 3, 0, 0, 0, 0, 1, 0, 1, 0, 72,170,106, 3, + 0, 0, 0, 0, 1, 0, 1, 0, 16,154,106, 3, 0, 0, 0, 0, 1, 0, 1, 0,208,160,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, + 64,153,106, 3, 21, 0, 0, 0, 1, 0, 1, 0, 48,136,106, 3, 68, 65, 84, 65, 96, 0, 0, 0,176, 73,105, 3,199, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 80, 15,103, 3, 96,185,102, 3,144,182,102, 3,248,183,102, 3,216,185,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0,107, 5, 0, 0, 81, 0, 0, 0,174, 3, 0, 0, 1, 1,108, 5, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, +232,149,240, 2,144,106,105, 3,192,161,105, 3,120, 74,105, 3,128,101,105, 3, 0, 0, 0, 0, 0, 0, 0, 0,200,169, 78, 3, + 72,191, 77, 3, 68, 65, 84, 65,248, 0, 0, 0,120, 74,105, 3,200, 0, 0, 0, 1, 0, 0, 0,216, 75,105, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,173, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,108, 5, 26, 0,108, 5, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 81, 0, 0, 0,106, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 26, 0, 24, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,159,240, 2,144,176,101, 3,144,176,101, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 29, 76, 3,184,201, 82, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216, 75,105, 3,200, 0, 0, 0, + 1, 0, 0, 0, 24, 97,105, 3,120, 74,105, 3, 0, 0, 0, 0, 0, 0, 32, 67, 0, 64, 3,196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 67, 0, 64, 3,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 0, 0, 0, +142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, + 6, 0,160, 0, 13, 2,143, 0, 13, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0, +162, 1, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 13, 2, 25, 0, 5, 0, + 3, 0, 0, 0, 0, 0, 0, 0,160, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,156,240, 2,224,128, 82, 3, +224,128, 82, 3, 56, 77,105, 3,112, 95,105, 3,232,202, 82, 3,232,207, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0, 56, 77,105, 3,198, 0, 0, 0, 1, 0, 0, 0,224, 78,105, 3, 0, 0, 0, 0,200, 81, 4, 3, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 42,254,143, 0,190, 1, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,224, 78,105, 3,198, 0, 0, 0, + 1, 0, 0, 0,136, 80,105, 3, 56, 77,105, 3,232,106, 4, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117,254,143, 0,115, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 66, 53, 4, 0, 0, 0, 0,200, 66, 53, 4, 0, 0, 0, 0, 88, 86, 62, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, - 88, 86, 62, 4, 0, 0, 0, 0,223, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 88,136,127, 4, 0, 0, 0, 0, - 68, 65, 84, 65,224, 0, 0, 0, 88,136,127, 4, 0, 0, 0, 0,222, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -120,209,128, 4, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, -120,209,128, 4, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -200,230,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,136,238,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 88, 66,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,168,249,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -136,159,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,136,244,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -168,226,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,104,233,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -216,225,128, 4, 0, 0, 0, 0, 21, 0, 0, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -136,137,127, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,131,127, 4, 0, 0, 0, 0, -248, 17, 66, 4, 0, 0, 0, 0, 88, 15, 66, 4, 0, 0, 0, 0,168, 16, 66, 4, 0, 0, 0, 0,104, 18, 66, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0, 69, 4, 0, 0, 1, 1, 48, 6,233, 3, 1, 0, - 0, 0, 0, 0, 0, 0, 8, 0,200, 87,240, 2, 0, 0, 0, 0,120,170,127, 4, 0, 0, 0, 0,120,227,127, 4, 0, 0, 0, 0, -120,138,127, 4, 0, 0, 0, 0, 88,165,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 83, 5, 88,159,127, 0, 0,248, 85, 5, 88,159,127, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120,138,127, 4, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,232,139,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 40, 98,240, 2, 0, 0, 0, 0,168,171, 21, 3, 0, 0, 0, 0,168,171, 21, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 86, 5, 88,159,127, 0, 0, 40, 90, 5, 88,159,127, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232,139,127, 4, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,216,160,127, 4, 0, 0, 0, 0,120,138,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 67, - 0, 0, 38,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 0, 38,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 0, 0, 0, 0,151, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0,151, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,152, 2,143, 0,152, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,174, 1, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160, 0,152, 2, 10, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0,160, 0, 50, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232, 94,240, 2, 0, 0, 0, 0,120, 96, 42, 4, 0, 0, 0, 0,120, 96, 42, 4, 0, 0, 0, 0, - 88,141,127, 4, 0, 0, 0, 0, 56,159,127, 4, 0, 0, 0, 0,104, 91, 5, 88,159,127, 0, 0,216, 93, 5, 88,159,127, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 88,141,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0,248,142,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 64, 74, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111, -100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111, -100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,254,143, 0,190, 1, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 11, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,248,142,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,152,144,127, 4, 0, 0, 0, 0, - 88,141,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,114,117,115,104, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117,254,143, 0,115, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,152,144,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0, 56,146,127, 4, 0, 0, 0, 0,248,142,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,136, 80,105, 3,198, 0, 0, 0, 1, 0, 0, 0, 48, 82,105, 3,224, 78,105, 3, + 0,109, 4, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101, 120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101, 120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1810,89 +1582,82 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,252,143, 0,213, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, + 48, 82,105, 3,198, 0, 0, 0, 1, 0, 0, 0,216, 83,105, 3,136, 80,105, 3, 24,111, 4, 3, 0, 0, 0, 0, 86, 73, 69, 87, + 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, + 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,114,111, +107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130,253, +143, 0,195, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 56,146,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,216,147,127, 4, 0, 0, 0, 0, -152,144,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,216, 83,105, 3,198, 0, 0, 0, 1, 0, 0, 0, +128, 85,105, 3, 48, 82,105, 3, 48,113, 4, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, + 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, + 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,253,143, 0,231, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,128, 85,105, 3,198, 0, 0, 0, 1, 0, 0, 0, 40, 87,105, 3,216, 83,105, 3, 72,115, 4, 3, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, + 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, + 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 65,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 58,253,143, 0,171, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 40, 87,105, 3, +198, 0, 0, 0, 1, 0, 0, 0,208, 88,105, 3,128, 85,105, 3, 96,117, 4, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,114,111,107,101, 0, 0, + 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130,253,143, 0,195, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,169,253,143, 0, 36, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,216,147,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0,120,149,127, 4, 0, 0, 0, 0, 56,146,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 99,117, -114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 99,117, -114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 67,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208, 88,105, 3,198, 0, 0, 0, 1, 0, 0, 0,120, 90,105, 3, + 40, 87,105, 3,120,119, 4, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109, +109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109, +109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,253,143, 0,231, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142,253,143, 0,135, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0,120, 90,105, 3,198, 0, 0, 0, 1, 0, 0, 0, 32, 92,105, 3,208, 88,105, 3,144,121, 4, 3, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,173,253,143, 0, 80, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32, 92,105, 3,198, 0, 0, 0, + 1, 0, 0, 0,200, 93,105, 3,120, 90,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,101,105,103,104,116, 32, 84,111,111,108,115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108,255,183, 0,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,120,149,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 24,151,127, 4, 0, 0, 0, 0, -216,147,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101, 97,114, 97,110, - 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252,252,143, 0,233, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 24,151,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0,184,152,127, 4, 0, 0, 0, 0,120,149,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111, -111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111, -111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,169,253,143, 0, 36, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,184,152,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 88,154,127, 4, 0, 0, 0, 0, - 24,151,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,115, 99,117,108,112,116, 95,115,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,115, 99,117,108,112,116, 95,115,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,121,109,109,101,116,114,121, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142,253,143, 0,135, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 88,154,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0,248,155,127, 4, 0, 0, 0, 0,184,152,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,173,253,143, 0, 80, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,248,155,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0,152,157,127, 4, 0, 0, 0, 0, - 88,154,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,101,105,103,104,116, 32, 84, -111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108,255,183, 0,124, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,152,157,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0, 56,159,127, 4, 0, 0, 0, 0,248,155,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,200, 93,105, 3,198, 0, 0, 0, 1, 0, 0, 0,112, 95,105, 3, 32, 92,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97, 105,110,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97, @@ -1902,78 +1667,71 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39,253,183, 0,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 56,159,127, 4, 0, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152,157,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,111,106,101, 99,116, 32, - 80, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157,252,183, 0, 9, 1, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +112, 95,105, 3,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,200, 93,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, + 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, + 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,111,106, +101, 99,116, 32, 80, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157,252, +183, 0, 9, 1, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216,160,127, 4, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,232,163,127, 4, 0, 0, 0, 0,232,139,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 67, - 0, 0,157,195, 0, 0, 0, 0, 0, 0, 0, 0,227,102, 16, 67, 66, 6,157,195, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 0, 0, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 55, 1,143, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,119, 0, 0, 0,173, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 55, 1, 11, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216, 95,240, 2, 0, 0, 0, 0, 72,168, 9, 3, 0, 0, 0, 0, 72,168, 9, 3, 0, 0, 0, 0, - 72,162,127, 4, 0, 0, 0, 0, 72,162,127, 4, 0, 0, 0, 0, 24, 95, 5, 88,159,127, 0, 0,136, 97, 5, 88,159,127, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 72,162,127, 4, 0, 0, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 96,240, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79,112,101,114, 97,116,111,114, 0, 97,105,110,116, 32, 84,111,103,103,108,101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,255,144, 0, 16, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24, 97,105, 3,200, 0, 0, 0, 1, 0, 0, 0, + 32,100,105, 3,216, 75,105, 3, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,157,195, 0, 0, 0, 0, 0, 0, 0, 0,227,102, 16, 67, + 66, 6,157,195, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, + 55, 1,143, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,107, 0, 0, 0, +161, 1, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,107, 0, 0, 0,161, 1, 0, 0,160, 0, 55, 1, 26, 0, 6, 0, 34, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,157,240, 2,152,101,109, 3,152,101,109, 3, +120, 98,105, 3,120, 98,105, 3, 24,209, 0, 3,168,255, 82, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +120, 98,105, 3,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,157,240, 2, 0, 0, 0, 0, 86, 73, 69, 87, + 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, + 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,101,108,101, + 99,116, 32, 97,110,100, 32, 69,120,101, 99,117,116,101, 0,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,255, +144, 0, 16, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,232,163,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 88,165,127, 4, 0, 0, 0, 0, -216,160,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 67, 0,192,115,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,100,105, 3,200, 0, 0, 0, 1, 0, 0, 0, +128,101,105, 3, 24, 97,105, 3, 0, 0, 0, 0, 0, 0, 52, 67, 0,192,115,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,115,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, -207, 3,163, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 47, 6, 0, 0, -119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 89,240, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 88,165,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232,163,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +207, 3,163, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0,107, 5, 0, 0,107, 0, 0, 0, +174, 3, 0, 0,107, 5, 0, 0,107, 5, 0, 0,107, 0, 0, 0,174, 3, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,151,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +128,101,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32,100,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 0, 0, 47, 6, 0, 0, -119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 5,207, 3, 12, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 88,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200,115, 5, 88,159,127, 0, 0,248,114, 5, 88,159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,166,127, 4, 0, 0, 0, 0, - 68, 65, 84, 65,104, 3, 0, 0,200,166,127, 4, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,120,204, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160, 0, 0, 0,107, 5, 0, 0,107, 0, 0, 0,174, 3, 0, 0,160, 0, 0, 0,107, 5, 0, 0,107, 0, 0, 0,174, 3, 0, 0, +204, 4, 68, 3, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, +216,150,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 85, 1, 3, 0, 85, 1, 3, 0, 0, 0, 0, +224,102,105, 3, 68, 65, 84, 65, 72, 3, 0, 0,224,102,105, 3,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92,165,205, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,218,205, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190, 184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,210,111,193, 0, 0,128, 63, 68,239,209, 62, 70,119,105, 63, 192, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,144, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, - 42, 61,228, 62, 0, 0, 0, 0,164, 95, 68, 65,141,120,173,192,225,208,213, 64, 0, 0,128, 63,177,157,229, 62, 64, 74, 36,191, -222,160, 81,191,184,158, 81,191,115, 90,127, 63,248, 96,158, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188,235, 2,183, 63, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,221,161,108, 65,158,210,111, 65,100,240,191, 62,112,116, 85, 63, - 80,185, 70,188, 0, 0, 86,180, 33,195,128,190, 64, 66,248, 61,255,111, 15, 63, 0, 0,150, 52, 88,118,117,194,159,213,216, 65, -229,161, 5,194, 54,255,159,192, 99, 50,114, 66, 41,243,213,193,202,218, 3, 66,219, 0,160, 64, 68,239,209, 62, 51,177,205,190, + 42, 61,228, 62, 0, 0, 0, 0,164, 95, 68, 65,141,120,173,192,225,208,213, 64, 0, 0,128, 63,178,157,229, 62,195, 59, 37,191, +222,160, 81,191,184,158, 81,191,117, 90,127, 63,202, 73,159, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,243, 15,184, 63, +129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,220,161,108, 65,158,210,111, 65,130,240,191, 62,104,116, 85, 63, + 16,183, 70,188, 0, 0, 0,180, 24, 7,128,190,175,215,246, 61, 76,158, 14, 63, 0, 0, 56, 52,230,117,117,194, 58,213,216, 65, +167,161, 5,194,236,254,159,192,240, 49,114, 66,195,242,213,193,140,218, 3, 66,145, 0,160, 64, 68,239,209, 62, 51,177,205,190, 184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,210,111,193, 0, 0,128, 63,177,157,229, 62, 64, 74, 36,191, -222,160, 81,191,184,158, 81,191,115, 90,127, 63,248, 96,158, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188,235, 2,183, 63, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,221,161,108, 65,158,210,111, 65,112,198,184, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,198,184, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112,198,184, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190, -237,203,148,190, 3,236,234,190,158,210,111, 65,222,212, 92, 65, 0, 0, 0, 0, 0, 0, 0, 0,142, 79,168, 58, 0, 0, 0, 0, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,210,111,193, 0, 0,128, 63,178,157,229, 62,195, 59, 37,191, +222,160, 81,191,184,158, 81,191,117, 90,127, 63,202, 73,159, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,243, 15,184, 63, +129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,220,161,108, 65,158,210,111, 65, 86, 68,214, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 68,214, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 68,214, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190, +237,203,148,190, 3,236,234,190,158,210,111, 65,203,189,102, 65, 0, 0, 0, 0, 0, 0, 0, 0,184, 44,195, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1982,143 +1740,116 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 30, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,144,106,105, 3,160, 0, 0, 0, 1, 0, 0, 0,176,110,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,208,160,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 30, 33, 12, 66, 84,152,137, 66,113, 27,126, 66, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 1, 0, 0,120,170,127, 4, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0,216,174,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104,233,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 8, 24, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, + 0, 64,156, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,107,105, 3,200, 0, 0, 0, 1, 0, 0, 0, + 80,109,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 48, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,197, 68, 0, 0,200, 65, + 0,224,197, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, + 26, 0, 48, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0, +118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 24, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 64,156, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,171,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -104,173,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 48, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,197, 68, 0, 0,200, 65, 0,224,197, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104,173,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248,171,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,241, 67, 0,128, 90,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0,224,195, 68, 0, 64,111,196, 0, 0, 0, 0, 31, 6, 0, 0, 48, 6, 0, 0, 18, 0, 0, 0,206, 3, 0, 0, - 0, 0, 0, 0, 30, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 30, 6, 0, 0, 18, 0, 0, 0,206, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, - 0, 0, 0, 4, 6, 0, 48, 6,207, 3, 31, 6,189, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 80,109,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240,107,105, 3, 0, 0, 0, 0, 0,128,241, 67, 0,128, 90,196, + 0, 0, 0, 0, 0, 0, 0, 0, 0,224,195, 68, 0, 64,111,196, 0, 0, 0, 0, 31, 6, 0, 0, 48, 6, 0, 0, 18, 0, 0, 0, +206, 3, 0, 0, 0, 0, 0, 0, 30, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 30, 6, 0, 0, 18, 0, 0, 0, +206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, + 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 48, 6,207, 3, 31, 6,189, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,216,174,127, 4, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, - 40,188,127, 4, 0, 0, 0, 0,120,170,127, 4, 0, 0, 0, 0,248,171,127, 4, 0, 0, 0, 0,104,173,127, 4, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,176,110,105, 3,169, 0, 0, 0, 1, 0, 0, 0,192,122,105, 3,144,106,105, 3, +240,107,105, 3, 80,109,105, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 80, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,112,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 1, 0, 0, 0, - 68, 65, 84, 65, 16, 0, 0, 0,136, 80, 9, 3, 0, 0, 0, 0,223, 0, 0, 0, 1, 0, 0, 0, 93, 0, 0, 0, 93, 0, 0, 0, - 72,176,127, 4, 0, 0, 0, 0, 68, 65, 84, 65,208, 5, 0, 0, 72,176,127, 4, 0, 0, 0, 0,222, 0, 0, 0, 93, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, - 20, 0, 0, 0, 1, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 21, 0, 0, 0, 1, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0,200,230,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,136,238,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 88, 66,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,168,249,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0,136,159,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,136,244,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0,168,226,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,104,233,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0,216,225,128, 4, 0, 0, 0, 0, 30, 0,255,255, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 6, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 8, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 10, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 11, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 12, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 14, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 16, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 18, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 20, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 22, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 24, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 26, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 28, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 7, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 9, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 11, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 13, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 15, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 17, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 19, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 23, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 25, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 27, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 29, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 31, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 33, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104,182,127, 4, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,216,183,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,197, 68, 0, 0,200, 65, 0,224,197, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 16,112,105, 3, +223, 0, 0, 0, 1, 0, 0, 0, 93, 0, 0, 0, 93, 0, 0, 0,128,112,105, 3, 68, 65, 84, 65, 92, 4, 0, 0,128,112,105, 3, +222, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 19, 0, 0, 0, 1, 0, 0, 0, 48,136,106, 3, + 20, 0, 0, 0, 1, 0, 0, 0, 48,136,106, 3, 21, 0, 0, 0, 1, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 1, 0, 0, 0, + 96,158,106, 3, 0, 0, 0, 0, 1, 0, 0, 0, 16,165,106, 3, 0, 0, 0, 0, 1, 0, 0, 0, 72,247,107, 3, 0, 0, 0, 0, + 1, 0, 0, 0,136,174,106, 3, 0, 0, 0, 0, 1, 0, 0, 0, 88, 84,107, 3, 0, 0, 0, 0, 1, 0, 0, 0, 72,170,106, 3, + 0, 0, 0, 0, 1, 0, 0, 0, 16,154,106, 3, 0, 0, 0, 0, 1, 0, 0, 0,208,160,106, 3, 0, 0, 0, 0, 1, 0, 0, 0, + 64,153,106, 3, 30, 0,255,255, 0, 0, 1, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 1, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 31, 0, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 9, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 11, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 31, 0, 12, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 17, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 31, 0, 20, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 25, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 31, 0, 28, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, + 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, + 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, + 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, + 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 4, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 7, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 12, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 15, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 20, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 23, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 28, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 31, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,117,105, 3,200, 0, 0, 0, 1, 0, 0, 0,160,118,105, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,215, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,197, 68, 0, 0,200, 65, 0,224,197, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216,183,127, 4, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 72,185,127, 4, 0, 0, 0, 0,104,182,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160,118,105, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0,120,105, 3, 64,117,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 72,185,127, 4, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,184,186,127, 4, 0, 0, 0, 0,216,183,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 0,120,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 96,121,105, 3,160,118,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 47, 6, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,121,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0,120,105, 3, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 38,192, 0, 0,102, 64, 0,192,179,191, + 0,224, 25, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 0, 0, 0, 0, 0, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,184,186,127, 4, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,185,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 38,192, 0, 0,102, 64, 0,192,179,191, 0,224, 25, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 0, 0, - 0, 0, 0, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 33, 0, 0, 40,188,127, 4, 0, 0, 0, 0, -170, 0, 0, 0, 1, 0, 0, 0,120,227,127, 4, 0, 0, 0, 0,216,174,127, 4, 0, 0, 0, 0,104,182,127, 4, 0, 0, 0, 0, -184,186,127, 4, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0,192,122,105, 3, +170, 0, 0, 0, 1, 0, 0, 0,192,161,105, 3,176,110,105, 3, 64,117,105, 3, 96,121,105, 3, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2379,257 +2110,196 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,184,221,127, 4, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 40,223,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 64,156,105, 3,200, 0, 0, 0, 1, 0, 0, 0,160,157,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 51, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160,157,105, 3,200, 0, 0, 0, 1, 0, 0, 0, + 0,159,105, 3, 64,156,105, 3, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, + 0, 64,101,196, 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0, +149, 3,223, 0,149, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0, +148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 40,223,127, 4, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,152,224,127, 4, 0, 0, 0, 0,184,221,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 67, - 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, - 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, - 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0,149, 3,223, 0,149, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 0,159,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 96,160,105, 3,160,157,105, 3, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, + 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, + 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,153, 5, 60, 0,153, 5, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240, 0, 0, 0,136, 6, 0, 0, 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +153, 5, 60, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,160,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,159,105, 3, + 0, 0, 0, 0, 0,128,175, 68, 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0, +136, 5, 0, 0,153, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 2, 0, 3, 3, 2, 0, 0, 4, 6, 0,153, 5, 89, 3,136, 5, 89, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,224,127, 4, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 8,226,127, 4, 0, 0, 0, 0, 40,223,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,179, 68, - 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, - 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,153, 5, 60, 0,153, 5, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0,192,161,105, 3,168, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,192,122,105, 3, 64,156,105, 3, 96,160,105, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, + 83, 78, 0, 0,140, 0, 0, 0,216,198,102, 3,195, 0, 0, 0, 1, 0, 0, 0,192,214,105, 3,192,179,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 82, 71, 97,109,101, 32, 76,111,103,105, 99, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,200,199,102, 3,232,163,105, 3, 96,164,105, 3, 96,174,105, 3,224,174,105, 3,208,207,105, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,200,199,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 64,200,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64,200,102, 3,196, 0, 0, 0, 1, 0, 0, 0,184,200,102, 3, +200,199,102, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184,200,102, 3,196, 0, 0, 0, + 1, 0, 0, 0, 48,201,102, 3, 64,200,102, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 48,201,102, 3,196, 0, 0, 0, 1, 0, 0, 0,168,201,102, 3,184,200,102, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,168,201,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 32,202,102, 3, 48,201,102, 3, 0, 0, 0, 0, + 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32,202,102, 3,196, 0, 0, 0, 1, 0, 0, 0,152,202,102, 3, +168,201,102, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152,202,102, 3,196, 0, 0, 0, + 1, 0, 0, 0, 16,203,102, 3, 32,202,102, 3, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 16,203,102, 3,196, 0, 0, 0, 1, 0, 0, 0,136,203,102, 3,152,202,102, 3, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,136,203,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 0,204,102, 3, 16,203,102, 3, 0, 0, 0, 0, + 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0,204,102, 3,196, 0, 0, 0, 1, 0, 0, 0,120,204,102, 3, +136,203,102, 3, 0, 0, 0, 0,254, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120,204,102, 3,196, 0, 0, 0, + 1, 0, 0, 0,248,162,105, 3, 0,204,102, 3, 0, 0, 0, 0,124, 3, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +248,162,105, 3,196, 0, 0, 0, 1, 0, 0, 0,112,163,105, 3,120,204,102, 3, 0, 0, 0, 0,124, 3,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,112,163,105, 3,196, 0, 0, 0, 1, 0, 0, 0,232,163,105, 3,248,162,105, 3, 0, 0, 0, 0, +212, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232,163,105, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +112,163,105, 3, 0, 0, 0, 0,212, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,164,105, 3,197, 0, 0, 0, + 1, 0, 0, 0,224,164,105, 3, 0, 0, 0, 0, 64,200,102, 3,184,200,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,224,164,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,165,105, 3, 96,164,105, 3, 64,200,102, 3,168,201,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,165,105, 3,197, 0, 0, 0, 1, 0, 0, 0,224,165,105, 3, +224,164,105, 3,184,200,102, 3, 32,202,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,165,105, 3, +197, 0, 0, 0, 1, 0, 0, 0, 96,166,105, 3, 96,165,105, 3,168,201,102, 3, 32,202,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 96,166,105, 3,197, 0, 0, 0, 1, 0, 0, 0,224,166,105, 3,224,165,105, 3,168,201,102, 3, +152,202,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,166,105, 3,197, 0, 0, 0, 1, 0, 0, 0, + 96,167,105, 3, 96,166,105, 3,152,202,102, 3, 16,203,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 96,167,105, 3,197, 0, 0, 0, 1, 0, 0, 0,224,167,105, 3,224,166,105, 3, 48,201,102, 3,136,203,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,167,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,168,105, 3, 96,167,105, 3, + 16,203,102, 3,136,203,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,168,105, 3,197, 0, 0, 0, + 1, 0, 0, 0,224,168,105, 3,224,167,105, 3,200,199,102, 3,152,202,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,224,168,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,169,105, 3, 96,168,105, 3,200,199,102, 3,136,203,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,169,105, 3,197, 0, 0, 0, 1, 0, 0, 0,224,169,105, 3, +224,168,105, 3, 32,202,102, 3, 0,204,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,169,105, 3, +197, 0, 0, 0, 1, 0, 0, 0, 96,170,105, 3, 96,169,105, 3, 48,201,102, 3, 0,204,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 96,170,105, 3,197, 0, 0, 0, 1, 0, 0, 0,224,170,105, 3,224,169,105, 3, 16,203,102, 3, + 0,204,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,170,105, 3,197, 0, 0, 0, 1, 0, 0, 0, + 96,171,105, 3, 96,170,105, 3,120,204,102, 3,248,162,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 96,171,105, 3,197, 0, 0, 0, 1, 0, 0, 0,224,171,105, 3,224,170,105, 3, 32,202,102, 3,248,162,105, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,171,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,172,105, 3, 96,171,105, 3, + 0,204,102, 3,120,204,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,172,105, 3,197, 0, 0, 0, + 1, 0, 0, 0,224,172,105, 3,224,171,105, 3,152,202,102, 3,112,163,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,224,172,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,173,105, 3, 96,172,105, 3,120,204,102, 3,112,163,105, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,173,105, 3,197, 0, 0, 0, 1, 0, 0, 0,224,173,105, 3, +224,172,105, 3,168,201,102, 3,232,163,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,173,105, 3, +197, 0, 0, 0, 1, 0, 0, 0, 96,174,105, 3, 96,173,105, 3,248,162,105, 3,232,163,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 96,174,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224,173,105, 3,112,163,105, 3, +232,163,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,224,174,105, 3,199, 0, 0, 0, 1, 0, 0, 0, +104,178,105, 3, 0, 0, 0, 0,168,201,102, 3, 64,200,102, 3,184,200,102, 3, 32,202,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, + 40,214,105, 3, 40,214,105, 3,168,175,105, 3, 8,177,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,168,175,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 8,177,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8,226,127, 4, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,224,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,175, 68, - 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0,136, 5, 0, 0,153, 5, 0, 0, - 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, - 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 2, 2, 0, 0, 2, 0, 3, 3, 2, 0, 0, 4, 6, 0,153, 5, 89, 3,136, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,104, 0, 0, 0,120,227,127, 4, 0, 0, 0, 0, -168, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,188,127, 4, 0, 0, 0, 0,184,221,127, 4, 0, 0, 0, 0, - 8,226,127, 4, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,184,228,127, 4, 0, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,200, 30,128, 4, 0, 0, 0, 0,120, 12, 66, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97,109,101, 32, 76,111,103,105, 99, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,229,127, 4, 0, 0, 0, 0,136,235,127, 4, 0, 0, 0, 0, -248,235,127, 4, 0, 0, 0, 0,184,244,127, 4, 0, 0, 0, 0, 40,245,127, 4, 0, 0, 0, 0,216, 23,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -216,229,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72,230,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,230,127, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,184,230,127, 4, 0, 0, 0, 0,216,229,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,230,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 40,231,127, 4, 0, 0, 0, 0, 72,230,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 40,231,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,231,127, 4, 0, 0, 0, 0, -184,230,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -152,231,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8,232,127, 4, 0, 0, 0, 0, 40,231,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8,232,127, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,120,232,127, 4, 0, 0, 0, 0,152,231,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,120,232,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -232,232,127, 4, 0, 0, 0, 0, 8,232,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,232,232,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 88,233,127, 4, 0, 0, 0, 0, -120,232,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 88,233,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,200,233,127, 4, 0, 0, 0, 0,232,232,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200,233,127, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 56,234,127, 4, 0, 0, 0, 0, 88,233,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,234,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -168,234,127, 4, 0, 0, 0, 0,200,233,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 3, 20, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,168,234,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24,235,127, 4, 0, 0, 0, 0, - 56,234,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 3,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 24,235,127, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136,235,127, 4, 0, 0, 0, 0,168,234,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,212, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136,235,127, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,235,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,235,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -104,236,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,230,127, 4, 0, 0, 0, 0,184,230,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,236,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -216,236,127, 4, 0, 0, 0, 0,248,235,127, 4, 0, 0, 0, 0, 72,230,127, 4, 0, 0, 0, 0,152,231,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,236,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 72,237,127, 4, 0, 0, 0, 0,104,236,127, 4, 0, 0, 0, 0,184,230,127, 4, 0, 0, 0, 0, 8,232,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,237,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -184,237,127, 4, 0, 0, 0, 0,216,236,127, 4, 0, 0, 0, 0,152,231,127, 4, 0, 0, 0, 0, 8,232,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,237,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 40,238,127, 4, 0, 0, 0, 0, 72,237,127, 4, 0, 0, 0, 0,152,231,127, 4, 0, 0, 0, 0,120,232,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,238,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -152,238,127, 4, 0, 0, 0, 0,184,237,127, 4, 0, 0, 0, 0,120,232,127, 4, 0, 0, 0, 0,232,232,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,238,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 8,239,127, 4, 0, 0, 0, 0, 40,238,127, 4, 0, 0, 0, 0, 40,231,127, 4, 0, 0, 0, 0, 88,233,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,239,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -120,239,127, 4, 0, 0, 0, 0,152,238,127, 4, 0, 0, 0, 0,232,232,127, 4, 0, 0, 0, 0, 88,233,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,239,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -232,239,127, 4, 0, 0, 0, 0, 8,239,127, 4, 0, 0, 0, 0,216,229,127, 4, 0, 0, 0, 0,120,232,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,239,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 88,240,127, 4, 0, 0, 0, 0,120,239,127, 4, 0, 0, 0, 0,216,229,127, 4, 0, 0, 0, 0, 88,233,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,240,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -200,240,127, 4, 0, 0, 0, 0,232,239,127, 4, 0, 0, 0, 0, 8,232,127, 4, 0, 0, 0, 0,200,233,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,240,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 56,241,127, 4, 0, 0, 0, 0, 88,240,127, 4, 0, 0, 0, 0, 40,231,127, 4, 0, 0, 0, 0,200,233,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,241,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -168,241,127, 4, 0, 0, 0, 0,200,240,127, 4, 0, 0, 0, 0,232,232,127, 4, 0, 0, 0, 0,200,233,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,241,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 24,242,127, 4, 0, 0, 0, 0, 56,241,127, 4, 0, 0, 0, 0, 56,234,127, 4, 0, 0, 0, 0,168,234,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,242,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -136,242,127, 4, 0, 0, 0, 0,168,241,127, 4, 0, 0, 0, 0, 8,232,127, 4, 0, 0, 0, 0,168,234,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,242,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -248,242,127, 4, 0, 0, 0, 0, 24,242,127, 4, 0, 0, 0, 0,200,233,127, 4, 0, 0, 0, 0, 56,234,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,242,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -104,243,127, 4, 0, 0, 0, 0,136,242,127, 4, 0, 0, 0, 0,120,232,127, 4, 0, 0, 0, 0, 24,235,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,243,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -216,243,127, 4, 0, 0, 0, 0,248,242,127, 4, 0, 0, 0, 0, 56,234,127, 4, 0, 0, 0, 0, 24,235,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,243,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 72,244,127, 4, 0, 0, 0, 0,104,243,127, 4, 0, 0, 0, 0,152,231,127, 4, 0, 0, 0, 0,136,235,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,244,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -184,244,127, 4, 0, 0, 0, 0,216,243,127, 4, 0, 0, 0, 0,168,234,127, 4, 0, 0, 0, 0,136,235,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,244,127, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 72,244,127, 4, 0, 0, 0, 0, 24,235,127, 4, 0, 0, 0, 0,136,235,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 40,245,127, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -248,248,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,231,127, 4, 0, 0, 0, 0, 72,230,127, 4, 0, 0, 0, 0, -184,230,127, 4, 0, 0, 0, 0, 8,232,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, -188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56, 30,128, 4, 0, 0, 0, 0, 56, 30,128, 4, 0, 0, 0, 0, 24,246,127, 4, 0, 0, 0, 0,136,247,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 24,246,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,136,247,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, - 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, - 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, -188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,136,247,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24,246,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,177,105, 3,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,168,175,105, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, - 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,248,248,127, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8,254,127, 4, 0, 0, 0, 0, - 40,245,127, 4, 0, 0, 0, 0, 88,233,127, 4, 0, 0, 0, 0,232,232,127, 4, 0, 0, 0, 0,200,233,127, 4, 0, 0, 0, 0, - 40,231,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, - 4, 4,234, 0, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,252,127, 4, 0, 0, 0, 0, -200,252,127, 4, 0, 0, 0, 0,232,249,127, 4, 0, 0, 0, 0, 88,251,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -232,249,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 88,251,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0,245, 0, 0, 0, 19, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 88,251,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,249,127, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 88, 67,254,255,116,195, 0, 0, 0, 0, -217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0,245, 0,217, 0,245, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, +214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, +104,178,105, 3,199, 0, 0, 0, 1, 0, 0, 0, 48,183,105, 3,224,174,105, 3,136,203,102, 3, 16,203,102, 3, 0,204,102, 3, + 48,201,102, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 4, 4,234, 0, 20, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,181,105, 3,240,181,105, 3, 48,179,105, 3,144,180,105, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,179,105, 3,200, 0, 0, 0, 1, 0, 0, 0, +144,180,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, + 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, + 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, + 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0,245, 0, 0, 0, + 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -200,252,127, 4, 0, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144,180,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,179,105, 3, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, + 0, 0, 0, 0, 0, 0, 0, 0,254,255, 88, 67,254,255,116,195, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0, +244, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, +244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0,245, 0,217, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +234, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 8,254,127, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -216, 3,128, 4, 0, 0, 0, 0,248,248,127, 4, 0, 0, 0, 0,216,229,127, 4, 0, 0, 0, 0,120,232,127, 4, 0, 0, 0, 0, -232,232,127, 4, 0, 0, 0, 0, 88,233,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, - 0, 0, 0, 0, 19, 1, 0, 0, 17, 17, 20, 4, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 3,128, 4, 0, 0, 0, 0, 72, 3,128, 4, 0, 0, 0, 0,248,254,127, 4, 0, 0, 0, 0,216, 1,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,248,254,127, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,104, 0,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, - 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, - 26, 0, 20, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,104, 0,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216, 1,128, 4, 0, 0, 0, 0, -248,254,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,122,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, - 0, 0,122,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0, -250, 0,203, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, - 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,250, 0, 0, 0, 4, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,216, 1,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67, 4, 0, 39,195, 0,224,180, 68, - 1, 0,224,194, 0, 0,176, 67, 39, 3, 0, 0, 56, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,250, 70, 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 56, 3, -250, 0, 39, 3,232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, 19, 4, 0, 0, - 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 3,250, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 72, 0, 0, 0, 72, 3,128, 4, 0, 0, 0, 0,178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,216, 3,128, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,136, 10,128, 4, 0, 0, 0, 0, - 8,254,127, 4, 0, 0, 0, 0, 56,234,127, 4, 0, 0, 0, 0,168,234,127, 4, 0, 0, 0, 0, 8,232,127, 4, 0, 0, 0, 0, -200,233,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, - 9, 9,130, 1,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 7,128, 4, 0, 0, 0, 0, -168, 7,128, 4, 0, 0, 0, 0,200, 4,128, 4, 0, 0, 0, 0, 56, 6,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -200, 4,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56, 6,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,209, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,193, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,181, 67, 0, 0,200, 65, 0,128,181, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,130, 1, 26, 0,130, 1, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 56, 6,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 4,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0,126, 86, 5, 68, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,130, 1,140, 1,130, 1,140, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0, -168, 7,128, 4, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,240,181,105, 3,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 48,183,105, 3,199, 0, 0, 0, + 1, 0, 0, 0,176,188,105, 3,104,178,105, 3,200,199,102, 3,152,202,102, 3, 16,203,102, 3,136,203,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 17, 17, 20, 4, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24,188,105, 3, 24,188,105, 3,248,183,105, 3,184,186,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,183,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 88,185,105, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,150, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,185,105, 3,200, 0, 0, 0, + 1, 0, 0, 0,184,186,105, 3,248,183,105, 3, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,122,195, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 75, 67, 0, 0,122,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, +202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, + 6, 0,220, 0,250, 0,203, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, + 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,250, 0, 0, 0, 4, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,184,186,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88,185,105, 3, 0, 0, 0, 0, 0, 0,160, 68, + 0, 0, 0, 0, 0, 0,112, 67, 4, 0, 39,195, 0,224,180, 68, 1, 0,224,194, 0, 0,176, 67, 39, 3, 0, 0, 56, 3, 0, 0, + 18, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, + 18, 0, 0, 0,249, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, + 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 56, 3,250, 0, 39, 3,232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,220, 0, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 3,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 52, 0, 0, 0, 24,188,105, 3,178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,176,188,105, 3,199, 0, 0, 0, + 1, 0, 0, 0, 24,195,105, 3, 48,183,105, 3,120,204,102, 3,248,162,105, 3, 32,202,102, 3, 0,204,102, 3, 0, 0, 0, 0, +125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 9, 9,130, 1,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 56,192,105, 3, 56,192,105, 3,120,189,105, 3,216,190,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,189,105, 3,200, 0, 0, 0, 1, 0, 0, 0,216,190,105, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,209, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,193, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,181, 67, 0, 0,200, 65, 0,128,181, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,130, 1, 26, 0,130, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,190,105, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,120,189,105, 3, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, 0, 0, 0, 0, +131,248, 1, 68, 0, 0, 0, 0,126, 86, 5, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, + 10, 0,130, 1,140, 1,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, + 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1,140, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +124, 2, 0, 0, 56,192,105, 3,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2643,63 +2313,57 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,136, 10,128, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,216, 23,128, 4, 0, 0, 0, 0, -216, 3,128, 4, 0, 0, 0, 0, 24,235,127, 4, 0, 0, 0, 0,136,235,127, 4, 0, 0, 0, 0,168,234,127, 4, 0, 0, 0, 0, - 56,234,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, - 1, 1,167, 2,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 22,128, 4, 0, 0, 0, 0, - 88, 22,128, 4, 0, 0, 0, 0,120, 11,128, 4, 0, 0, 0, 0, 56, 17,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -120, 11,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,232, 12,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 56, 0,192, 41, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,166, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,167, 2, 26, 0,167, 2, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -232, 12,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 88, 14,128, 4, 0, 0, 0, 0,120, 11,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,213, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,140, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 88, 14,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,200, 15,128, 4, 0, 0, 0, 0,232, 12,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0, 47, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 24,195,105, 3,199, 0, 0, 0, 1, 0, 0, 0, +208,207,105, 3,176,188,105, 3,112,163,105, 3,232,163,105, 3,248,162,105, 3,120,204,102, 3, 0, 0, 0, 0,213, 0, 0, 0, +123, 3, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 1, 1,167, 2,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112,206,105, 3,112,206,105, 3,224,195,105, 3, 96,201,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,224,195,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 64,197,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 56, 0,192, 41, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +166, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,167, 2, 26, 0,167, 2, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -200, 15,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56, 17,128, 4, 0, 0, 0, 0, 88, 14,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,197,105, 3,200, 0, 0, 0, 1, 0, 0, 0, +160,198,105, 3,224,195,105, 3, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, +255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, + 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,213, 0, 0, 0, 47, 1, 0, 0, +186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,140, 1, 0, 0, 5, 0, 3, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +160,198,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0,200,105, 3, 64,197,105, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, + 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, +119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, +119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0, 47, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0,200,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 96,201,105, 3,160,198,105, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 23,196, 0, 0, 0, 0, 163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,112, 2,163, 0, 94, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123, 3, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123, 3, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 56, 17,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 15,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,201,105, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0,200,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, + 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 18,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, -168, 18,128, 4, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,202,105, 3, 68, 65, 84, 65, + 72, 3, 0, 0,192,202,105, 3,159, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, @@ -2724,578 +2388,463 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, - 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, - 88, 22,128, 4, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0,104,233,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +112,206,105, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,208,160,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, + 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,208,207,105, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 24,195,105, 3, +152,202,102, 3,168,201,102, 3,232,163,105, 3,112,163,105, 3, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0, +186, 2, 0, 0, 3, 3,212, 0,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,211,105, 3, 88,211,105, 3, +152,208,105, 3,248,209,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +152,208,105, 3,200, 0, 0, 0, 1, 0, 0, 0,248,209,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 83, 67, 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,212, 0, 26, 0,212, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +212, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,216, 23,128, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136, 10,128, 4, 0, 0, 0, 0,120,232,127, 4, 0, 0, 0, 0,152,231,127, 4, 0, 0, 0, 0,136,235,127, 4, 0, 0, 0, 0, - 24,235,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, - 3, 3,212, 0,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 27,128, 4, 0, 0, 0, 0, -168, 27,128, 4, 0, 0, 0, 0,200, 24,128, 4, 0, 0, 0, 0, 56, 26,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -200, 24,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56, 26,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 83, 67, 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,212, 0, 26, 0,212, 0, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 56, 26,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 24,128, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,209,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152,208,105, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 80, 66, 0, 0,119, 67, 0, 0,189,195, 0, 0, 0, 0, 195, 0, 0, 0,212, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,212, 0,140, 1,195, 0,122, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0, 88,211,105, 3,169, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, -168, 27,128, 4, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184,239, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,184,239, 9, 3, 0, 0, 0, 0, -223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 24, 29,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, - 24, 29,128, 4, 0, 0, 0, 0,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, - 19, 0, 0, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, - 21, 0, 1, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,230,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,136,238,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 88, 66,130, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,168,249,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,136,159,129, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,136,244,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,168,226,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,104,233,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,216,225,128, 4, 0, 0, 0, 0, - 83, 78, 0, 0,208, 0, 0, 0,200, 30,128, 4, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,184, 95,128, 4, 0, 0, 0, 0, -184,228,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116, -105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232, 31,128, 4, 0, 0, 0, 0, 8, 38,128, 4, 0, 0, 0, 0,120, 38,128, 4, 0, 0, 0, 0, 24, 48,128, 4, 0, 0, 0, 0, -136, 48,128, 4, 0, 0, 0, 0,120, 88,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232, 31,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 88, 32,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 88, 32,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,200, 32,128, 4, 0, 0, 0, 0, -232, 31,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -200, 32,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 56, 33,128, 4, 0, 0, 0, 0, 88, 32,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56, 33,128, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,168, 33,128, 4, 0, 0, 0, 0,200, 32,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168, 33,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 24, 34,128, 4, 0, 0, 0, 0, 56, 33,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 24, 34,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136, 34,128, 4, 0, 0, 0, 0, -168, 33,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -136, 34,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,248, 34,128, 4, 0, 0, 0, 0, 24, 34,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,244, 3,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248, 34,128, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,104, 35,128, 4, 0, 0, 0, 0,136, 34,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 35,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -216, 35,128, 4, 0, 0, 0, 0,248, 34,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,216, 35,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72, 36,128, 4, 0, 0, 0, 0, -104, 35,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244, 3, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 72, 36,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,184, 36,128, 4, 0, 0, 0, 0,216, 35,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184, 36,128, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 40, 37,128, 4, 0, 0, 0, 0, 72, 36,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 40, 37,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -152, 37,128, 4, 0, 0, 0, 0,184, 36,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244, 3, 12, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,152, 37,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8, 38,128, 4, 0, 0, 0, 0, - 40, 37,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 8, 38,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 37,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120, 38,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,232, 38,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 32,128, 4, 0, 0, 0, 0, -200, 32,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232, 38,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 88, 39,128, 4, 0, 0, 0, 0,120, 38,128, 4, 0, 0, 0, 0, 88, 32,128, 4, 0, 0, 0, 0, -168, 33,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88, 39,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,200, 39,128, 4, 0, 0, 0, 0,232, 38,128, 4, 0, 0, 0, 0,200, 32,128, 4, 0, 0, 0, 0, - 24, 34,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200, 39,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 56, 40,128, 4, 0, 0, 0, 0, 88, 39,128, 4, 0, 0, 0, 0,168, 33,128, 4, 0, 0, 0, 0, - 24, 34,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56, 40,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,168, 40,128, 4, 0, 0, 0, 0,200, 39,128, 4, 0, 0, 0, 0, 24, 34,128, 4, 0, 0, 0, 0, -136, 34,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168, 40,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 24, 41,128, 4, 0, 0, 0, 0, 56, 40,128, 4, 0, 0, 0, 0, 56, 33,128, 4, 0, 0, 0, 0, -248, 34,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24, 41,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,136, 41,128, 4, 0, 0, 0, 0,168, 40,128, 4, 0, 0, 0, 0,232, 31,128, 4, 0, 0, 0, 0, -104, 35,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136, 41,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,248, 41,128, 4, 0, 0, 0, 0, 24, 41,128, 4, 0, 0, 0, 0,168, 33,128, 4, 0, 0, 0, 0, -104, 35,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248, 41,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,104, 42,128, 4, 0, 0, 0, 0,136, 41,128, 4, 0, 0, 0, 0,136, 34,128, 4, 0, 0, 0, 0, -216, 35,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104, 42,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,216, 42,128, 4, 0, 0, 0, 0,248, 41,128, 4, 0, 0, 0, 0,248, 34,128, 4, 0, 0, 0, 0, -216, 35,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216, 42,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 72, 43,128, 4, 0, 0, 0, 0,104, 42,128, 4, 0, 0, 0, 0,232, 31,128, 4, 0, 0, 0, 0, - 72, 36,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72, 43,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,184, 43,128, 4, 0, 0, 0, 0,216, 42,128, 4, 0, 0, 0, 0,248, 34,128, 4, 0, 0, 0, 0, - 72, 36,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184, 43,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 40, 44,128, 4, 0, 0, 0, 0, 72, 43,128, 4, 0, 0, 0, 0,104, 35,128, 4, 0, 0, 0, 0, -184, 36,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40, 44,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,152, 44,128, 4, 0, 0, 0, 0,184, 43,128, 4, 0, 0, 0, 0,216, 35,128, 4, 0, 0, 0, 0, -184, 36,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152, 44,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 8, 45,128, 4, 0, 0, 0, 0, 40, 44,128, 4, 0, 0, 0, 0, 72, 36,128, 4, 0, 0, 0, 0, -184, 36,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8, 45,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,120, 45,128, 4, 0, 0, 0, 0,152, 44,128, 4, 0, 0, 0, 0,248, 34,128, 4, 0, 0, 0, 0, - 40, 37,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120, 45,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,232, 45,128, 4, 0, 0, 0, 0, 8, 45,128, 4, 0, 0, 0, 0,136, 34,128, 4, 0, 0, 0, 0, - 40, 37,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232, 45,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 88, 46,128, 4, 0, 0, 0, 0,120, 45,128, 4, 0, 0, 0, 0, 24, 34,128, 4, 0, 0, 0, 0, -152, 37,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88, 46,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,200, 46,128, 4, 0, 0, 0, 0,232, 45,128, 4, 0, 0, 0, 0, 56, 33,128, 4, 0, 0, 0, 0, -152, 37,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200, 46,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 56, 47,128, 4, 0, 0, 0, 0, 88, 46,128, 4, 0, 0, 0, 0, 40, 37,128, 4, 0, 0, 0, 0, -152, 37,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56, 47,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,168, 47,128, 4, 0, 0, 0, 0,200, 46,128, 4, 0, 0, 0, 0,168, 33,128, 4, 0, 0, 0, 0, - 8, 38,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168, 47,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 24, 48,128, 4, 0, 0, 0, 0, 56, 47,128, 4, 0, 0, 0, 0,136, 34,128, 4, 0, 0, 0, 0, - 8, 38,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24, 48,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 47,128, 4, 0, 0, 0, 0,184, 36,128, 4, 0, 0, 0, 0, - 8, 38,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,136, 48,128, 4, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 88, 52,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 33,128, 4, 0, 0, 0, 0, - 88, 32,128, 4, 0, 0, 0, 0,200, 32,128, 4, 0, 0, 0, 0, 24, 34,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 40, 95,128, 4, 0, 0, 0, 0, 40, 95,128, 4, 0, 0, 0, 0,120, 49,128, 4, 0, 0, 0, 0, -232, 50,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120, 49,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -232, 50,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232, 50,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120, 49,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 88, 52,128, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -104, 57,128, 4, 0, 0, 0, 0,136, 48,128, 4, 0, 0, 0, 0,248, 34,128, 4, 0, 0, 0, 0, 40, 37,128, 4, 0, 0, 0, 0, -152, 37,128, 4, 0, 0, 0, 0, 56, 33,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 11, 2, 0, 0, 4, 4, 10, 1, 12, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40, 56,128, 4, 0, 0, 0, 0, 40, 56,128, 4, 0, 0, 0, 0, 72, 53,128, 4, 0, 0, 0, 0,184, 54,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 72, 53,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,184, 54,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, - 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, - 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, - 31, 0, 10, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, -237, 1, 0, 0, 11, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 31, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,184, 54,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 53,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,132, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255,120, 67, -255,127,246,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 10, 1, -237, 1,249, 0,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,237, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 40, 56,128, 4, 0, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,104, 57,128, 4, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 24, 63,128, 4, 0, 0, 0, 0, 88, 52,128, 4, 0, 0, 0, 0, 72, 36,128, 4, 0, 0, 0, 0, -184, 36,128, 4, 0, 0, 0, 0,216, 35,128, 4, 0, 0, 0, 0,248, 34,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,251, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 61,128, 4, 0, 0, 0, 0, 56, 61,128, 4, 0, 0, 0, 0, 88, 58,128, 4, 0, 0, 0, 0, -200, 59,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88, 58,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -200, 59,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200, 59,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 58,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 67, 0, 0, 0, 0, 0, 0, 48, 65, - 0, 0, 0, 0, 0, 0,245, 67, 0, 0, 0, 0, 0, 0,129, 67,234, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, - 2, 0, 0, 4, 10, 0,251, 1, 2, 1,234, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -249, 1, 0, 0,243, 3, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -251, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 1, 0, 0, 56, 61,128, 4, 0, 0, 0, 0,181, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 24, 63,128, 4, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,104, 76,128, 4, 0, 0, 0, 0,104, 57,128, 4, 0, 0, 0, 0,184, 36,128, 4, 0, 0, 0, 0, - 8, 38,128, 4, 0, 0, 0, 0,136, 34,128, 4, 0, 0, 0, 0,216, 35,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 1, 1,251, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232, 74,128, 4, 0, 0, 0, 0,232, 74,128, 4, 0, 0, 0, 0, 8, 64,128, 4, 0, 0, 0, 0, -200, 69,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8, 64,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -120, 65,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120, 65,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -232, 66,128, 4, 0, 0, 0, 0, 8, 64,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -249, 1, 0, 0,249, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0,132, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232, 66,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 88, 68,128, 4, 0, 0, 0, 0,120, 65,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, - 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88, 68,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -200, 69,128, 4, 0, 0, 0, 0,232, 66,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -243, 3, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200, 69,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 68,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -251, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56, 71,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 56, 71,128, 4, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,240,182, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, - 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, -185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, -178,157,229, 62,242,252, 18,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62, -145,180,109,188,225,188,163, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, -217,236,191, 62, 54,117, 85, 63, 0,247, 70,188, 0,192, 32,182, 15,232,143,190,210,186, 10, 62, 44, 83, 32, 63, 0,192, 24, 54, -215,104, 25,196,133,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,158, 87,135,195,205,209,166, 67,151,254, 71, 66, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, -178,157,229, 62,242,252, 18,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62, -145,180,109,188,225,188,163, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, -138, 93,108, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,232, 74,128, 4, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104,233,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, - 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,104, 76,128, 4, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 24, 82,128, 4, 0, 0, 0, 0, 24, 63,128, 4, 0, 0, 0, 0,232, 31,128, 4, 0, 0, 0, 0, -104, 35,128, 4, 0, 0, 0, 0,184, 36,128, 4, 0, 0, 0, 0, 72, 36,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,248, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 80,128, 4, 0, 0, 0, 0, 56, 80,128, 4, 0, 0, 0, 0, 88, 77,128, 4, 0, 0, 0, 0, -200, 78,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88, 77,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -200, 78,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200, 78,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 77,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0, 65, 67, - 0, 0, 0, 0, 0,128,243, 67, 0, 0, 0, 0, 0, 0,129, 67,231, 1, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, - 2, 0, 0, 4, 10, 0,248, 1, 2, 1,231, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,247, 1, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 1, 0, 0, 56, 80,128, 4, 0, 0, 0, 0,181, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112,121,116,104,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 24, 82,128, 4, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,120, 88,128, 4, 0, 0, 0, 0,104, 76,128, 4, 0, 0, 0, 0, 40, 37,128, 4, 0, 0, 0, 0, -136, 34,128, 4, 0, 0, 0, 0, 24, 34,128, 4, 0, 0, 0, 0,152, 37,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0,186, 2, 0, 0, 3, 3, 10, 1,174, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232, 85,128, 4, 0, 0, 0, 0,232, 85,128, 4, 0, 0, 0, 0, 8, 83,128, 4, 0, 0, 0, 0, -120, 84,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8, 83,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -120, 84,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,149, 67, 0, 0,200, 65, 0,128,149, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 10, 1, 26, 0, 10, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0, 38, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120, 84,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 83,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,121, 67, 0, 0, 2,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, - 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, - 0, 0, 0, 4, 6, 0, 10, 1,148, 0,249, 0,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -245, 3, 0, 0,254, 4, 0, 0, 39, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 1,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,232, 85,128, 4, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 71, 36, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +184,212,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 68, 65, 84, 65, 16, 0, 0, 0, 88, 71, 36, 4, 0, 0, 0, 0,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, - 88, 87,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 88, 87,128, 4, 0, 0, 0, 0,222, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, - 20, 0, 0, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0,120,209,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,200,230,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,136,238,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 88, 66,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,168,249,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,136,159,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,136,244,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,168,226,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,104,233,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,216,225,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,120, 88,128, 4, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 82,128, 4, 0, 0, 0, 0,104, 35,128, 4, 0, 0, 0, 0, -168, 33,128, 4, 0, 0, 0, 0, 8, 38,128, 4, 0, 0, 0, 0,184, 36,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 9, 9,248, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 72, 92,128, 4, 0, 0, 0, 0, 72, 92,128, 4, 0, 0, 0, 0,104, 89,128, 4, 0, 0, 0, 0, -216, 90,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 89,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -216, 90,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 73, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 12, 0, 0, 0,184,212,105, 3,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 40,213,105, 3, + 68, 65, 84, 65,156, 0, 0, 0, 40,213,105, 3,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,136,106, 3, + 19, 0, 0, 0, 1, 0, 1, 0, 48,136,106, 3, 20, 0, 0, 0, 1, 0, 1, 0, 48,136,106, 3, 21, 0, 1, 0, 1, 0, 1, 0, + 48,136,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 96,158,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 16,165,106, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 72,247,107, 3, 0, 0, 0, 0, 1, 0, 1, 0,136,174,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 88, 84,107, 3, + 0, 0, 0, 0, 1, 0, 1, 0, 72,170,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 16,154,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, +208,160,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 64,153,106, 3, 83, 78, 0, 0,140, 0, 0, 0,192,214,105, 3,195, 0, 0, 0, + 1, 0, 0, 0, 88, 23,106, 3,216,198,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116,105,110,103, 0, +103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,215,105, 3, 64,222,105, 3, +184,222,105, 3,184,233,105, 3, 56,234,105, 3, 88, 16,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216, 90,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104, 89,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68, -236,140, 21, 68, 20, 51,102, 68,120, 83, 49, 67, 68,214,212, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, - 0, 0, 0, 4, 10, 0,248, 1,132, 1,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,247, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0, 72, 92,128, 4, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,205,204,204, 61,231, 1, 0, 0,243, 1, 0, 0,122, 1, 0, 0,124, 1, 0, 0,231, 1, 0, 0,243, 1, 0, 0, - 4, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,184, 95,128, 4, 0, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,168,161,128, 4, 0, 0, 0, 0,200, 30,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 96,128, 4, 0, 0, 0, 0,232, 99,128, 4, 0, 0, 0, 0, - 88,100,128, 4, 0, 0, 0, 0,184,104,128, 4, 0, 0, 0, 0, 40,105,128, 4, 0, 0, 0, 0,200,147,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -216, 96,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72, 97,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72, 97,128, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,184, 97,128, 4, 0, 0, 0, 0,216, 96,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184, 97,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 40, 98,128, 4, 0, 0, 0, 0, 72, 97,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 40, 98,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152, 98,128, 4, 0, 0, 0, 0, -184, 97,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -152, 98,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8, 99,128, 4, 0, 0, 0, 0, 40, 98,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8, 99,128, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,120, 99,128, 4, 0, 0, 0, 0,152, 98,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,120, 99,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -232, 99,128, 4, 0, 0, 0, 0, 8, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 2,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,232, 99,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 88,100,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200,100,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 97,128, 4, 0, 0, 0, 0,184, 97,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -200,100,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56,101,128, 4, 0, 0, 0, 0, 88,100,128, 4, 0, 0, 0, 0, - 72, 97,128, 4, 0, 0, 0, 0,152, 98,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 56,101,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168,101,128, 4, 0, 0, 0, 0,200,100,128, 4, 0, 0, 0, 0, -184, 97,128, 4, 0, 0, 0, 0, 8, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -168,101,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24,102,128, 4, 0, 0, 0, 0, 56,101,128, 4, 0, 0, 0, 0, -152, 98,128, 4, 0, 0, 0, 0, 8, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 24,102,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136,102,128, 4, 0, 0, 0, 0,168,101,128, 4, 0, 0, 0, 0, -152, 98,128, 4, 0, 0, 0, 0,120, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -136,102,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248,102,128, 4, 0, 0, 0, 0, 24,102,128, 4, 0, 0, 0, 0, -216, 96,128, 4, 0, 0, 0, 0,232, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -248,102,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104,103,128, 4, 0, 0, 0, 0,136,102,128, 4, 0, 0, 0, 0, -216, 96,128, 4, 0, 0, 0, 0,152, 98,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -104,103,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,103,128, 4, 0, 0, 0, 0,248,102,128, 4, 0, 0, 0, 0, -120, 99,128, 4, 0, 0, 0, 0,232, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -216,103,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,104,128, 4, 0, 0, 0, 0,104,103,128, 4, 0, 0, 0, 0, - 8, 99,128, 4, 0, 0, 0, 0,120, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 72,104,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,104,128, 4, 0, 0, 0, 0,216,103,128, 4, 0, 0, 0, 0, - 40, 98,128, 4, 0, 0, 0, 0,232, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -184,104,128, 4, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,104,128, 4, 0, 0, 0, 0, - 40, 98,128, 4, 0, 0, 0, 0, 8, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 40,105,128, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,248,108,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 98,128, 4, 0, 0, 0, 0, 72, 97,128, 4, 0, 0, 0, 0,184, 97,128, 4, 0, 0, 0, 0, 8, 99,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,161,128, 4, 0, 0, 0, 0, 24,161,128, 4, 0, 0, 0, 0, - 24,106,128, 4, 0, 0, 0, 0,136,107,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24,106,128, 4, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0,136,107,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,107,128, 4, 0, 0, 0, 0, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,106,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,215,105, 3,196, 0, 0, 0, + 1, 0, 0, 0, 40,216,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 40,216,105, 3,196, 0, 0, 0, 1, 0, 0, 0,160,216,105, 3,176,215,105, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,160,216,105, 3,196, 0, 0, 0, 1, 0, 0, 0, 24,217,105, 3, 40,216,105, 3, 0, 0, 0, 0, +254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24,217,105, 3,196, 0, 0, 0, 1, 0, 0, 0,144,217,105, 3, +160,216,105, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144,217,105, 3,196, 0, 0, 0, + 1, 0, 0, 0, 8,218,105, 3, 24,217,105, 3, 0, 0, 0, 0, 0, 0,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 8,218,105, 3,196, 0, 0, 0, 1, 0, 0, 0,128,218,105, 3,144,217,105, 3, 0, 0, 0, 0,254, 4,187, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,128,218,105, 3,196, 0, 0, 0, 1, 0, 0, 0,248,218,105, 3, 8,218,105, 3, 0, 0, 0, 0, +244, 3,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248,218,105, 3,196, 0, 0, 0, 1, 0, 0, 0,112,219,105, 3, +128,218,105, 3, 0, 0, 0, 0,244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,112,219,105, 3,196, 0, 0, 0, + 1, 0, 0, 0,232,219,105, 3,248,218,105, 3, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +232,219,105, 3,196, 0, 0, 0, 1, 0, 0, 0, 96,220,105, 3,112,219,105, 3, 0, 0, 0, 0,244, 3, 28, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 96,220,105, 3,196, 0, 0, 0, 1, 0, 0, 0,216,220,105, 3,232,219,105, 3, 0, 0, 0, 0, +248, 1, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216,220,105, 3,196, 0, 0, 0, 1, 0, 0, 0, 80,221,105, 3, + 96,220,105, 3, 0, 0, 0, 0,248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 80,221,105, 3,196, 0, 0, 0, + 1, 0, 0, 0,200,221,105, 3,216,220,105, 3, 0, 0, 0, 0,244, 3, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +200,221,105, 3,196, 0, 0, 0, 1, 0, 0, 0, 64,222,105, 3, 80,221,105, 3, 0, 0, 0, 0,254, 4, 12, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 64,222,105, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,200,221,105, 3, 0, 0, 0, 0, +248, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184,222,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 56,223,105, 3, + 0, 0, 0, 0, 40,216,105, 3,160,216,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,223,105, 3, +197, 0, 0, 0, 1, 0, 0, 0,184,223,105, 3,184,222,105, 3, 40,216,105, 3,144,217,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,184,223,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 56,224,105, 3, 56,223,105, 3,160,216,105, 3, + 8,218,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,224,105, 3,197, 0, 0, 0, 1, 0, 0, 0, +184,224,105, 3,184,223,105, 3,144,217,105, 3, 8,218,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +184,224,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 56,225,105, 3, 56,224,105, 3, 8,218,105, 3,128,218,105, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,225,105, 3,197, 0, 0, 0, 1, 0, 0, 0,184,225,105, 3,184,224,105, 3, + 24,217,105, 3,248,218,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184,225,105, 3,197, 0, 0, 0, + 1, 0, 0, 0, 56,226,105, 3, 56,225,105, 3,176,215,105, 3,112,219,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 56,226,105, 3,197, 0, 0, 0, 1, 0, 0, 0,184,226,105, 3,184,225,105, 3,144,217,105, 3,112,219,105, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184,226,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 56,227,105, 3, + 56,226,105, 3,128,218,105, 3,232,219,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,227,105, 3, +197, 0, 0, 0, 1, 0, 0, 0,184,227,105, 3,184,226,105, 3,248,218,105, 3,232,219,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,184,227,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 56,228,105, 3, 56,227,105, 3,176,215,105, 3, + 96,220,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,228,105, 3,197, 0, 0, 0, 1, 0, 0, 0, +184,228,105, 3,184,227,105, 3,248,218,105, 3, 96,220,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +184,228,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 56,229,105, 3, 56,228,105, 3,112,219,105, 3,216,220,105, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,229,105, 3,197, 0, 0, 0, 1, 0, 0, 0,184,229,105, 3,184,228,105, 3, +232,219,105, 3,216,220,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184,229,105, 3,197, 0, 0, 0, + 1, 0, 0, 0, 56,230,105, 3, 56,229,105, 3, 96,220,105, 3,216,220,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 56,230,105, 3,197, 0, 0, 0, 1, 0, 0, 0,184,230,105, 3,184,229,105, 3,248,218,105, 3, 80,221,105, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184,230,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 56,231,105, 3, + 56,230,105, 3,128,218,105, 3, 80,221,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,231,105, 3, +197, 0, 0, 0, 1, 0, 0, 0,184,231,105, 3,184,230,105, 3, 8,218,105, 3,200,221,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,184,231,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 56,232,105, 3, 56,231,105, 3, 24,217,105, 3, +200,221,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,232,105, 3,197, 0, 0, 0, 1, 0, 0, 0, +184,232,105, 3,184,231,105, 3, 80,221,105, 3,200,221,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +184,232,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 56,233,105, 3, 56,232,105, 3,144,217,105, 3, 64,222,105, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,233,105, 3,197, 0, 0, 0, 1, 0, 0, 0,184,233,105, 3,184,232,105, 3, +128,218,105, 3, 64,222,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184,233,105, 3,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 56,233,105, 3,216,220,105, 3, 64,222,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0, 56,234,105, 3,199, 0, 0, 0, 1, 0, 0, 0,192,237,105, 3, 0, 0, 0, 0,144,217,105, 3, 40,216,105, 3, +160,216,105, 3, 8,218,105, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, + 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,192, 22,106, 3,192, 22,106, 3, 0,235,105, 3, 96,236,105, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0,235,105, 3,200, 0, 0, 0, + 1, 0, 0, 0, 96,236,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, + 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, +188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 96,236,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,235,105, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,192,237,105, 3,199, 0, 0, 0, 1, 0, 0, 0,136,242,105, 3, + 56,234,105, 3,248,218,105, 3, 80,221,105, 3,200,221,105, 3, 24,217,105, 3, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 11, 2, 0, 0, 4, 4, 10, 1, 12, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,241,105, 3, + 72,241,105, 3,136,238,105, 3,232,239,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,136,238,105, 3,200, 0, 0, 0, 1, 0, 0, 0,232,239,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, 31, 0, 10, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0,237, 1, 0, 0, 11, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232,239,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +136,238,105, 3, 0, 0, 0, 0, 0,128,132, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255,120, 67,255,127,246,195, + 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 10, 1,237, 1,249, 0, +237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 72,241,105, 3, +165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,248,108,128, 4, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,200,147,128, 4, 0, 0, 0, 0, 40,105,128, 4, 0, 0, 0, 0,216, 96,128, 4, 0, 0, 0, 0, -152, 98,128, 4, 0, 0, 0, 0,120, 99,128, 4, 0, 0, 0, 0,232, 99,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 96, 0, 0, 0,136,242,105, 3,199, 0, 0, 0, 1, 0, 0, 0,232,247,105, 3,192,237,105, 3, 96,220,105, 3, +216,220,105, 3,232,219,105, 3,248,218,105, 3, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, + 18, 18,251, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,246,105, 3, 16,246,105, 3, 80,243,105, 3, +176,244,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,243,105, 3, +200, 0, 0, 0, 1, 0, 0, 0,176,244,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0, +243, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, + 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,176,244,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80,243,105, 3, 0, 0, 0, 0, + 0, 0,253, 67, 0, 0, 0, 0, 0, 0, 48, 65, 0, 0, 0, 0, 0, 0,245, 67, 0, 0, 0, 0, 0, 0,129, 67,234, 1, 0, 0, +251, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +233, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,251, 1, 2, 1,234, 1, 2, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0, 16,246,105, 3,181, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,232,247,105, 3,199, 0, 0, 0, + 1, 0, 0, 0,160, 4,106, 3,136,242,105, 3,216,220,105, 3, 64,222,105, 3,128,218,105, 3,232,219,105, 3, 0, 0, 0, 0, +249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 1, 1,251, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 3,106, 3, 64, 3,106, 3,176,248,105, 3, 48,254,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,248,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 16,250,105, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,250,105, 3,200, 0, 0, 0, + 1, 0, 0, 0,112,251,105, 3,176,248,105, 3, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, +142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, + 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,249, 1, 0, 0, + 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,132, 1, 0, 0, 5, 0, + 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,112,251,105, 3,200, 0, 0, 0, 1, 0, 0, 0,208,252,105, 3, 16,250,105, 3, 0, 0, 0, 0, 0, 0, 16, 67, + 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,252,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 48,254,105, 3, +112,251,105, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, + 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0, +104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243, 3, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,254,105, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,252,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0, +243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1,132, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,255,105, 3, + 68, 65, 84, 65, 72, 3, 0, 0,144,255,105, 3,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 42,240,182, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, + 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, + 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, + 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, + 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62,242,252, 18,191,222,160, 81,191, +184,158, 81,191,117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63,129, 63,228,190, + 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, 0,247, 70,188, + 0,192, 32,182, 15,232,143,190,210,186, 10, 62, 44, 83, 32, 63, 0,192, 24, 54,215,104, 25,196,133,132,135, 67, 37, 9,167,195, +136,252, 71,194, 3, 54, 25, 68,158, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, + 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62,242,252, 18,191,222,160, 81,191, +184,158, 81,191,117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63,129, 63,228,190, + 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, + 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,138, 93,108, 59, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 64, 3,106, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,208,160,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,160, 4,106, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 10,106, 3, +232,247,105, 3,176,215,105, 3,112,219,105, 3,216,220,105, 3, 96,220,105, 3, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, + 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,248, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 8,106, 3, + 40, 8,106, 3,104, 5,106, 3,200, 6,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,104, 5,106, 3,200, 0, 0, 0, 1, 0, 0, 0,200, 6,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 6,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +104, 5,106, 3, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0, 65, 67, 0, 0, 0, 0, 0,128,243, 67, 0, 0, 0, 0, + 0, 0,129, 67,231, 1, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,230, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,248, 1, 2, 1,231, 1, + 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0, 40, 8,106, 3, +181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,121,116,104,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, + 0, 10,106, 3,199, 0, 0, 0, 1, 0, 0, 0, 88, 16,106, 3,160, 4,106, 3, 80,221,105, 3,128,218,105, 3, 8,218,105, 3, +200,221,105, 3, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0,186, 2, 0, 0, 3, 3, 10, 1,174, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 13,106, 3,136, 13,106, 3,200, 10,106, 3, 40, 12,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 10,106, 3,200, 0, 0, 0, 1, 0, 0, 0, + 40, 12,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,149, 67, 0, 0,200, 65, + 0,128,149, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, + 26, 0, 10, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0, + 38, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 40, 12,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,200, 10,106, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 67, 0, 0, 2,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0, +147, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, +147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, + 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 10, 1,148, 0,249, 0,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +245, 3, 0, 0,254, 4, 0, 0, 39, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 1,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,136, 13,106, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 14,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,232, 14,106, 3, +223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 88, 15,106, 3, 68, 65, 84, 65,156, 0, 0, 0, 88, 15,106, 3, +222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,136,106, 3, 19, 0, 0, 0, 1, 0, 1, 0, 48,136,106, 3, + 20, 0, 0, 0, 1, 0, 1, 0, 48,136,106, 3, 21, 0, 1, 0, 1, 0, 1, 0, 48,136,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, + 96,158,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 16,165,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 72,247,107, 3, 0, 0, 0, 0, + 1, 0, 1, 0,136,174,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 88, 84,107, 3, 0, 0, 0, 0, 1, 0, 1, 0, 72,170,106, 3, + 0, 0, 0, 0, 1, 0, 1, 0, 16,154,106, 3, 0, 0, 0, 0, 1, 0, 1, 0,208,160,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, + 64,153,106, 3, 68, 65, 84, 65, 96, 0, 0, 0, 88, 16,106, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10,106, 3, +112,219,105, 3,144,217,105, 3, 64,222,105, 3,216,220,105, 3, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0, +186, 2, 0, 0, 9, 9,248, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 19,106, 3,224, 19,106, 3, + 32, 17,106, 3,128, 18,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 32, 17,106, 3,200, 0, 0, 0, 1, 0, 0, 0,128, 18,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 73, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 18,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32, 17,106, 3, + 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,236,140, 21, 68, 20, 51,102, 68,120, 83, 49, 67, 68,214,212, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,248, 1,132, 1,248, 1,132, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0,224, 19,106, 3,172, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,231, 1, 0, 0,243, 1, 0, 0, +122, 1, 0, 0,124, 1, 0, 0,231, 1, 0, 0,243, 1, 0, 0, 4, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 78, 0, 0,140, 0, 0, 0, 88, 23,106, 3,195, 0, 0, 0, 1, 0, 0, 0,200, 88,106, 3,192,214,105, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 82, 85, 86, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 72, 24,106, 3,144, 27,106, 3, 8, 28,106, 3, 8, 33,106, 3,136, 33,106, 3,120, 75,106, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 72, 24,106, 3,196, 0, 0, 0, 1, 0, 0, 0,192, 24,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192, 24,106, 3,196, 0, 0, 0, 1, 0, 0, 0, 56, 25,106, 3, + 72, 24,106, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 56, 25,106, 3,196, 0, 0, 0, + 1, 0, 0, 0,176, 25,106, 3,192, 24,106, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +176, 25,106, 3,196, 0, 0, 0, 1, 0, 0, 0, 40, 26,106, 3, 56, 25,106, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 40, 26,106, 3,196, 0, 0, 0, 1, 0, 0, 0,160, 26,106, 3,176, 25,106, 3, 0, 0, 0, 0, + 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160, 26,106, 3,196, 0, 0, 0, 1, 0, 0, 0, 24, 27,106, 3, + 40, 26,106, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24, 27,106, 3,196, 0, 0, 0, + 1, 0, 0, 0,144, 27,106, 3,160, 26,106, 3, 0, 0, 0, 0,132, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +144, 27,106, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 24, 27,106, 3, 0, 0, 0, 0,132, 2, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 8, 28,106, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 28,106, 3, 0, 0, 0, 0,192, 24,106, 3, + 56, 25,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 28,106, 3,197, 0, 0, 0, 1, 0, 0, 0, + 8, 29,106, 3, 8, 28,106, 3,192, 24,106, 3, 40, 26,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 8, 29,106, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 29,106, 3,136, 28,106, 3, 56, 25,106, 3,160, 26,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 29,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 8, 30,106, 3, 8, 29,106, 3, + 40, 26,106, 3,160, 26,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 30,106, 3,197, 0, 0, 0, + 1, 0, 0, 0,136, 30,106, 3,136, 29,106, 3, 40, 26,106, 3, 24, 27,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,136, 30,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 8, 31,106, 3, 8, 30,106, 3, 72, 24,106, 3,144, 27,106, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 31,106, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 31,106, 3, +136, 30,106, 3, 72, 24,106, 3, 40, 26,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 31,106, 3, +197, 0, 0, 0, 1, 0, 0, 0, 8, 32,106, 3, 8, 31,106, 3, 24, 27,106, 3,144, 27,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 8, 32,106, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 32,106, 3,136, 31,106, 3,160, 26,106, 3, + 24, 27,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 32,106, 3,197, 0, 0, 0, 1, 0, 0, 0, + 8, 33,106, 3, 8, 32,106, 3,176, 25,106, 3,144, 27,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 8, 33,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136, 32,106, 3,176, 25,106, 3,160, 26,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,136, 33,106, 3,199, 0, 0, 0, 1, 0, 0, 0, 16, 37,106, 3, 0, 0, 0, 0, + 40, 26,106, 3,192, 24,106, 3, 56, 25,106, 3,160, 26,106, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, +214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 48, 88,106, 3, 48, 88,106, 3, + 80, 34,106, 3,176, 35,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 80, 34,106, 3,200, 0, 0, 0, 1, 0, 0, 0,176, 35,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176, 35,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80, 34,106, 3, + 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, +112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16, 37,106, 3,199, 0, 0, 0, + 1, 0, 0, 0,120, 75,106, 3,136, 33,106, 3, 72, 24,106, 3, 40, 26,106, 3, 24, 27,106, 3,144, 27,106, 3, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 6, 6,132, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56,114,128, 4, 0, 0, 0, 0, 56,114,128, 4, 0, 0, 0, 0,232,109,128, 4, 0, 0, 0, 0, -200,112,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232,109,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 88,111,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 33, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,132, 2, 26, 0,132, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,248, 41,106, 3,248, 41,106, 3,216, 37,106, 3,152, 40,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216, 37,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 56, 39,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 33, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,132, 2, 26, 0,132, 2, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88,111,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -200,112,128, 4, 0, 0, 0, 0,232,109,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 67, 0, 0, 40,196, 0, 0, 0, 0, - 0, 0, 0, 0,254,255, 74, 67,254, 63, 40,196, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, - 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,220, 0,161, 2,203, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, 0,161, 2, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56, 39,106, 3,200, 0, 0, 0, + 1, 0, 0, 0,152, 40,106, 3,216, 37,106, 3, 0, 0, 0, 0, 0, 0, 91, 67, 0, 0, 40,196, 0, 0, 0, 0, 0, 0, 0, 0, +254,255, 74, 67,254, 63, 40,196, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, +202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, + 6, 0,220, 0,161, 2,203, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, + 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,161, 2, 0, 0, 4, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,152, 40,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56, 39,106, 3, 0, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 67,102,102, 38,190,205,204,148, 63, 51, 51, 13,191,154,153,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1, 0, 0, + 0, 0, 0, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,220, 0, 0, 0,131, 2, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,168, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200,112,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88,111,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, -102,102, 38,190,205,204,148, 63, 51, 51, 13,191,154,153,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1, 0, 0, 0, 0, 0, 0,161, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, 0, 0, 0,131, 2, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 33, 0, 0, 56,114,128, 4, 0, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0,248, 41,106, 3,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, - 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0, +154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3424,8 +2973,9 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3553,65 +3103,53 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,120, 75,106, 3, +199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 37,106, 3,144, 27,106, 3, 24, 27,106, 3,160, 26,106, 3,176, 25,106, 3, + 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 1, 1,122, 2,187, 2, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208, 86,106, 3,208, 86,106, 3, 64, 76,106, 3,192, 81,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64, 76,106, 3,200, 0, 0, 0, 1, 0, 0, 0,160, 77,106, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 30, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,122, 2, 26, 0,122, 2, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160, 77,106, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 79,106, 3, 64, 76,106, 3, 0, 0, 0, 0, 0, 0, 32, 67, 0, 64, 10,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 10,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,160, 0, 41, 2,143, 0, 41, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, + 36, 3, 0, 0,146, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 41, 2, + 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,200,147,128, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248,108,128, 4, 0, 0, 0, 0,232, 99,128, 4, 0, 0, 0, 0,120, 99,128, 4, 0, 0, 0, 0, - 8, 99,128, 4, 0, 0, 0, 0, 40, 98,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0,186, 2, 0, 0, 1, 1,122, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152,159,128, 4, 0, 0, 0, 0,152,159,128, 4, 0, 0, 0, 0,184,148,128, 4, 0, 0, 0, 0,120,154,128, 4, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 0, 79,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 96, 80,106, 3,160, 77,106, 3, 0, 0, 0, 0, + 0, 0, 33, 67, 0, 0,242,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 91, 90,242,194, 0, 0, 0, 0,143, 0, 0, 0, +160, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +142, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,120, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0, 26, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 0, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,184,148,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 40,150,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 30, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, - 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,122, 2, - 26, 0,122, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 2, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 40,150,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,152,151,128, 4, 0, 0, 0, 0, -184,148,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 67, 0, 64, 10,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, - 0, 64, 10,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, - 41, 2,143, 0, 41, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0, -146, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 41, 2, 0, 0, 5, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,152,151,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 8,153,128, 4, 0, 0, 0, 0, - 40,150,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,242,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, - 91, 90,242,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, -120, 0,143, 0,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0, - 26, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 0, 0, 6, 0, - 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 8,153,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,120,154,128, 4, 0, 0, 0, 0, -152,151,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96, 80,106, 3,200, 0, 0, 0, 1, 0, 0, 0, +192, 81,106, 3, 0, 79,106, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 255,191,126,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, - 13, 4,163, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0, - 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 4,163, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, +186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,120,154,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,153,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +192, 81,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96, 80,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 3, 0, 0,254, 4, 0, 0, - 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 37, 3, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +218, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,155,128, 4, 0, 0, 0, 0, - 68, 65, 84, 65,104, 3, 0, 0,232,155,128, 4, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,193,198,198, 63, 0, 0, 0, 0, + 32, 83,106, 3, 68, 65, 84, 65, 72, 3, 0, 0, 32, 83,106, 3,159, 0, 0, 0, 1, 0, 0, 0,193,198,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190, 184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, @@ -3637,563 +3175,451 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 1, 0, 0,152,159,128, 4, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104,233,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,208, 86,106, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,208,160,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, + 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,200, 88,106, 3,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 88, 23,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105,100,101,111, 32, 69,100,105,116,105,110,103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 89,106, 3,224, 94,106, 3, 88, 95,106, 3, +216,103,106, 3, 88,104,106, 3, 16,128,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,168,161,128, 4, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184, 95,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 82, 86,105,100,101,111, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200,162,128, 4, 0, 0, 0, 0,152,167,128, 4, 0, 0, 0, 0, 8,168,128, 4, 0, 0, 0, 0, -120,175,128, 4, 0, 0, 0, 0,232,175,128, 4, 0, 0, 0, 0,248,200,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200,162,128, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 56,163,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,163,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -168,163,128, 4, 0, 0, 0, 0,200,162,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,168,163,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24,164,128, 4, 0, 0, 0, 0, - 56,163,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 24,164,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136,164,128, 4, 0, 0, 0, 0,168,163,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136,164,128, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,248,164,128, 4, 0, 0, 0, 0, 24,164,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248,164,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -104,165,128, 4, 0, 0, 0, 0,136,164,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,104,165,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,216,165,128, 4, 0, 0, 0, 0, -248,164,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -216,165,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72,166,128, 4, 0, 0, 0, 0,104,165,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,166,128, 4, 0, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,184,166,128, 4, 0, 0, 0, 0,216,165,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 52, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,166,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 40,167,128, 4, 0, 0, 0, 0, 72,166,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 40,167,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,167,128, 4, 0, 0, 0, 0, -184,166,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -152,167,128, 4, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,167,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,168,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,120,168,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,163,128, 4, 0, 0, 0, 0, -168,163,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,168,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,232,168,128, 4, 0, 0, 0, 0, 8,168,128, 4, 0, 0, 0, 0, 56,163,128, 4, 0, 0, 0, 0, -136,164,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,168,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 88,169,128, 4, 0, 0, 0, 0,120,168,128, 4, 0, 0, 0, 0,168,163,128, 4, 0, 0, 0, 0, -248,164,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,169,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,200,169,128, 4, 0, 0, 0, 0,232,168,128, 4, 0, 0, 0, 0,136,164,128, 4, 0, 0, 0, 0, -248,164,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,169,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 56,170,128, 4, 0, 0, 0, 0, 88,169,128, 4, 0, 0, 0, 0,248,164,128, 4, 0, 0, 0, 0, -104,165,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,170,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,168,170,128, 4, 0, 0, 0, 0,200,169,128, 4, 0, 0, 0, 0,200,162,128, 4, 0, 0, 0, 0, -216,165,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,170,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 24,171,128, 4, 0, 0, 0, 0, 56,170,128, 4, 0, 0, 0, 0,136,164,128, 4, 0, 0, 0, 0, - 72,166,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,171,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,136,171,128, 4, 0, 0, 0, 0,168,170,128, 4, 0, 0, 0, 0,216,165,128, 4, 0, 0, 0, 0, -184,166,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,171,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,248,171,128, 4, 0, 0, 0, 0, 24,171,128, 4, 0, 0, 0, 0,184,166,128, 4, 0, 0, 0, 0, - 40,167,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,171,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,104,172,128, 4, 0, 0, 0, 0,136,171,128, 4, 0, 0, 0, 0, 72,166,128, 4, 0, 0, 0, 0, - 40,167,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,172,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,216,172,128, 4, 0, 0, 0, 0,248,171,128, 4, 0, 0, 0, 0,104,165,128, 4, 0, 0, 0, 0, -152,167,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,172,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 72,173,128, 4, 0, 0, 0, 0,104,172,128, 4, 0, 0, 0, 0, 24,164,128, 4, 0, 0, 0, 0, -152,167,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,173,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,184,173,128, 4, 0, 0, 0, 0,216,172,128, 4, 0, 0, 0, 0,216,165,128, 4, 0, 0, 0, 0, -152,167,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,173,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 40,174,128, 4, 0, 0, 0, 0, 72,173,128, 4, 0, 0, 0, 0,200,162,128, 4, 0, 0, 0, 0, - 24,164,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,174,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,152,174,128, 4, 0, 0, 0, 0,184,173,128, 4, 0, 0, 0, 0,248,164,128, 4, 0, 0, 0, 0, - 72,166,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,174,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 8,175,128, 4, 0, 0, 0, 0, 40,174,128, 4, 0, 0, 0, 0,104,165,128, 4, 0, 0, 0, 0, - 40,167,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,175,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,120,175,128, 4, 0, 0, 0, 0,152,174,128, 4, 0, 0, 0, 0,136,164,128, 4, 0, 0, 0, 0, -184,166,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,175,128, 4, 0, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,175,128, 4, 0, 0, 0, 0,104,165,128, 4, 0, 0, 0, 0, -184,166,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,232,175,128, 4, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,184,179,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,164,128, 4, 0, 0, 0, 0, - 56,163,128, 4, 0, 0, 0, 0,168,163,128, 4, 0, 0, 0, 0,248,164,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232,208,128, 4, 0, 0, 0, 0,232,208,128, 4, 0, 0, 0, 0,216,176,128, 4, 0, 0, 0, 0, - 72,178,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216,176,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 72,178,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184, 89,106, 3,196, 0, 0, 0, 1, 0, 0, 0, + 48, 90,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 48, 90,106, 3, +196, 0, 0, 0, 1, 0, 0, 0,168, 90,106, 3,184, 89,106, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,168, 90,106, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 91,106, 3, 48, 90,106, 3, 0, 0, 0, 0,254, 4,214, 2, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 91,106, 3,196, 0, 0, 0, 1, 0, 0, 0,152, 91,106, 3,168, 90,106, 3, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152, 91,106, 3,196, 0, 0, 0, 1, 0, 0, 0, + 16, 92,106, 3, 32, 91,106, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 16, 92,106, 3, +196, 0, 0, 0, 1, 0, 0, 0,136, 92,106, 3,152, 91,106, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,136, 92,106, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 93,106, 3, 16, 92,106, 3, 0, 0, 0, 0,254, 4, 84, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 93,106, 3,196, 0, 0, 0, 1, 0, 0, 0,120, 93,106, 3,136, 92,106, 3, + 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120, 93,106, 3,196, 0, 0, 0, 1, 0, 0, 0, +240, 93,106, 3, 0, 93,106, 3, 0, 0, 0, 0, 52, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240, 93,106, 3, +196, 0, 0, 0, 1, 0, 0, 0,104, 94,106, 3,120, 93,106, 3, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,104, 94,106, 3,196, 0, 0, 0, 1, 0, 0, 0,224, 94,106, 3,240, 93,106, 3, 0, 0, 0, 0, 52, 2, 84, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224, 94,106, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104, 94,106, 3, + 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 95,106, 3,197, 0, 0, 0, 1, 0, 0, 0, +216, 95,106, 3, 0, 0, 0, 0, 48, 90,106, 3,168, 90,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +216, 95,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 96,106, 3, 88, 95,106, 3, 48, 90,106, 3,152, 91,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 96,106, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 96,106, 3,216, 95,106, 3, +168, 90,106, 3, 16, 92,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 96,106, 3,197, 0, 0, 0, + 1, 0, 0, 0, 88, 97,106, 3, 88, 96,106, 3,152, 91,106, 3, 16, 92,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 88, 97,106, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 97,106, 3,216, 96,106, 3, 16, 92,106, 3,136, 92,106, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 97,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 98,106, 3, + 88, 97,106, 3,184, 89,106, 3, 0, 93,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 98,106, 3, +197, 0, 0, 0, 1, 0, 0, 0,216, 98,106, 3,216, 97,106, 3,152, 91,106, 3,120, 93,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,216, 98,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 99,106, 3, 88, 98,106, 3, 0, 93,106, 3, +240, 93,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 99,106, 3,197, 0, 0, 0, 1, 0, 0, 0, +216, 99,106, 3,216, 98,106, 3,240, 93,106, 3,104, 94,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +216, 99,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 88,100,106, 3, 88, 99,106, 3,120, 93,106, 3,104, 94,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,100,106, 3,197, 0, 0, 0, 1, 0, 0, 0,216,100,106, 3,216, 99,106, 3, +136, 92,106, 3,224, 94,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,100,106, 3,197, 0, 0, 0, + 1, 0, 0, 0, 88,101,106, 3, 88,100,106, 3, 32, 91,106, 3,224, 94,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 88,101,106, 3,197, 0, 0, 0, 1, 0, 0, 0,216,101,106, 3,216,100,106, 3, 0, 93,106, 3,224, 94,106, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,101,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 88,102,106, 3, + 88,101,106, 3,184, 89,106, 3, 32, 91,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,102,106, 3, +197, 0, 0, 0, 1, 0, 0, 0,216,102,106, 3,216,101,106, 3, 16, 92,106, 3,120, 93,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,216,102,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 88,103,106, 3, 88,102,106, 3,136, 92,106, 3, +104, 94,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,103,106, 3,197, 0, 0, 0, 1, 0, 0, 0, +216,103,106, 3,216,102,106, 3,152, 91,106, 3,240, 93,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +216,103,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88,103,106, 3,136, 92,106, 3,240, 93,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 88,104,106, 3,199, 0, 0, 0, 1, 0, 0, 0,224,107,106, 3, 0, 0, 0, 0, +152, 91,106, 3, 48, 90,106, 3,168, 90,106, 3, 16, 92,106, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, +214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,152,135,106, 3,152,135,106, 3, + 32,105,106, 3,128,106,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 32,105,106, 3,200, 0, 0, 0, 1, 0, 0, 0,128,106,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,106,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32,105,106, 3, + 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, +112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 72,178,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216,176,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,224,107,106, 3,199, 0, 0, 0, + 1, 0, 0, 0,136,112,106, 3, 88,104,106, 3,184, 89,106, 3, 0, 93,106, 3,224, 94,106, 3, 32, 91,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,255, 4, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,104,111,106, 3,104,111,106, 3,168,108,106, 3, 8,110,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,108,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 8,110,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184,179,128, 4, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, -168,184,128, 4, 0, 0, 0, 0,232,175,128, 4, 0, 0, 0, 0,200,162,128, 4, 0, 0, 0, 0,216,165,128, 4, 0, 0, 0, 0, -152,167,128, 4, 0, 0, 0, 0, 24,164,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,255, 4, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136,183,128, 4, 0, 0, 0, 0,136,183,128, 4, 0, 0, 0, 0,168,180,128, 4, 0, 0, 0, 0, 24,182,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,168,180,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 24,182,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, - 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, - 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 24,182,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168,180,128, 4, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, - 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, - 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,255, 4, - 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,110,106, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,168,108,106, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192, +246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, + 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, + 8, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,216, 0, 0, 0,136,183,128, 4, 0, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +188, 0, 0, 0,104,111,106, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,136,112,106, 3,199, 0, 0, 0, 1, 0, 0, 0, + 16,120,106, 3,224,107,106, 3, 0, 93,106, 3,240, 93,106, 3,136, 92,106, 3,224, 94,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 0, 0, 65, 0, 0, 0, 83, 1, 0, 0, 8, 8,255, 4, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208,118,106, 3,208,118,106, 3, 80,113,106, 3,112,117,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 80,113,106, 3,200, 0, 0, 0, 1, 0, 0, 0,176,114,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 96,191, 68, 0, 0,200, 65, 0, 96,191, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,168,184,128, 4, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,152,192,128, 4, 0, 0, 0, 0,184,179,128, 4, 0, 0, 0, 0,216,165,128, 4, 0, 0, 0, 0, -184,166,128, 4, 0, 0, 0, 0,104,165,128, 4, 0, 0, 0, 0,152,167,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 83, 1, 0, 0, 8, 8,255, 4, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88,191,128, 4, 0, 0, 0, 0, 88,191,128, 4, 0, 0, 0, 0,152,185,128, 4, 0, 0, 0, 0, -232,189,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,185,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 8,187,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 96,191, 68, 0, 0,200, 65, 0, 96,191, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,114,106, 3,200, 0, 0, 0, 1, 0, 0, 0, + 16,116,106, 3, 80,113,106, 3, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, + 0, 0,121,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0, +249, 0,203, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4, 0, 0,254, 4, 0, 0, 91, 0, 0, 0, + 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,249, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 16,116,106, 3,200, 0, 0, 0, 1, 0, 0, 0,112,117,106, 3,176,114,106, 3, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, + 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8,187,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -120,188,128, 4, 0, 0, 0, 0,152,185,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,121,195, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,121,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, - 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,220, 0,249, 0,203, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 35, 4, 0, 0,254, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, 0,249, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120,188,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -232,189,128, 4, 0, 0, 0, 0, 8,187,128, 4, 0, 0, 0, 0, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, - 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 83, 1, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,117,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16,116,106, 3, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0, 34, 4, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, + 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232,189,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120,188,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, - 18, 0, 0, 0, 34, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, - 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 8, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 34, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 88,191,128, 4, 0, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,208,118,106, 3,166, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,152,192,128, 4, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0,248,200,128, 4, 0, 0, 0, 0,168,184,128, 4, 0, 0, 0, 0,184,166,128, 4, 0, 0, 0, 0, -136,164,128, 4, 0, 0, 0, 0, 72,166,128, 4, 0, 0, 0, 0, 40,167,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, 2, 2, 52, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 72,199,128, 4, 0, 0, 0, 0, 72,199,128, 4, 0, 0, 0, 0,136,193,128, 4, 0, 0, 0, 0, -216,197,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,193,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -248,194,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 13, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 52, 2, 26, 0, 52, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 52, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0, 16,120,106, 3,199, 0, 0, 0, 1, 0, 0, 0, 16,128,106, 3,136,112,106, 3,240, 93,106, 3,152, 91,106, 3, +120, 93,106, 3,104, 94,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, 2, 2, 52, 2, +102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,126,106, 3, 88,126,106, 3,216,120,106, 3,248,124,106, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,120,106, 3,200, 0, 0, 0, + 1, 0, 0, 0, 56,122,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 13, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, + 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0, 52, 2, 26, 0, 52, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, + 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 56,122,106, 3,200, 0, 0, 0, 1, 0, 0, 0,152,123,106, 3,216,120,106, 3, 0, 0, 0, 0, 0, 0, 72, 67, + 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,157,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, + 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, + 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0, 76, 1,200, 0, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,217, 0, 76, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,194,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -104,196,128, 4, 0, 0, 0, 0,136,193,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,157,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, - 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, - 0, 0, 0, 4, 6, 0,217, 0, 76, 1,200, 0, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,216, 0, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, 0, 76, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104,196,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -216,197,128, 4, 0, 0, 0, 0,248,194,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,123,106, 3,200, 0, 0, 0, 1, 0, 0, 0,248,124,106, 3, + 56,122,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 51, 2, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216,197,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104,196,128, 4, 0, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,124,106, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152,123,106, 3, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, 0, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0, + 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 72,199,128, 4, 0, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,208, 0, 0, 0, 88,126,106, 3,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136,200,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,200,128, 4, 0, 0, 0, 0, - 24, 1, 0, 0, 1, 0, 0, 0,120,209,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,248,200,128, 4, 0, 0, 0, 0, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,192,128, 4, 0, 0, 0, 0, 40,167,128, 4, 0, 0, 0, 0, - 72,166,128, 4, 0, 0, 0, 0,248,164,128, 4, 0, 0, 0, 0,104,165,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144,127,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,144,127,106, 3, 24, 1, 0, 0, 1, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16,128,106, 3,199, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 16,120,106, 3,104, 94,106, 3,120, 93,106, 3, 16, 92,106, 3,136, 92,106, 3, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, 8, 8,202, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168,207,128, 4, 0, 0, 0, 0,168,207,128, 4, 0, 0, 0, 0,232,201,128, 4, 0, 0, 0, 0, - 56,206,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232,201,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 88,203,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 15, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,128, 50, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 64, 50, 68, 0, 0,200, 65, 0, 64, 50, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,202, 2, 26, 0,202, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 88,134,106, 3, 88,134,106, 3,216,128,106, 3,248,132,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,128,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 56,130,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,192, 15, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 50, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 64, 50, 68, 0, 0,200, 65, 0, 64, 50, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,202, 2, 26, 0,202, 2, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88,203,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, -200,204,128, 4, 0, 0, 0, 0,232,201,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,130,106, 3,200, 0, 0, 0, + 1, 0, 0, 0,152,131,106, 3,216,128,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200,204,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 56,206,128, 4, 0, 0, 0, 0, 88,203,128, 4, 0, 0, 0, 0, 0, 0,112,195, 0, 0,112, 67, 0, 0, 7,195, 0, 0, 7, 67, -105, 42,145,196,105, 42,145, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 75, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 4, 0, 0,202, 2, 76, 1,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 53, 2, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 2, 76, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56,206,128, 4, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200,204,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, - 18, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, - 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 8, 0,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,168,207,128, 4, 0, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 0, 0, 8, 6, 0, 0,120,209,128, 4, 0, 0, 0, 0, -157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99,101,110,101, 0,116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,200,215,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,233,128, 4, 0, 0, 0, 0, -200,230,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,217,128, 4, 0, 0, 0, 0, -184,218,128, 4, 0, 0, 0, 0,216,217,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 40,219,128, 4, 0, 0, 0, 0,104, 7, 9, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0,100, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 50, 0,141, 0,128, 7, 56, 4, 8, 0, - 8, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, 90, 0, 1, 0, 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56,225,128, 4, 0, 0, 0, 0, 56,225,128, 4, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 1, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 5, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63, -205,204, 76, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 0, 16, 0, 0, 0,128, 63, 0, 0,128, 63,173, 2, 95, 0,154,153,217, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, 68, 69, 82, 95, - 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63, -102,166,171, 67, 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 34, 60, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104, 68, 10, 3, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205,204, 28, 65, 0, 0, 0, 0, 32, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 5, 0, 60, 0, 5, 0, 1, 0, 5, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4, -205,204,204, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195,245, 28,193, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,200,215,128, 4, 0, 0, 0, 0, - 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120,216,128, 4, 0, 0, 0, 0,120,216,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,120,216,128, 4, 0, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,110,101,116,119,111,114,107, 95,114,101,110,100, -101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40,217,128, 4, 0, 0, 0, 0, 40,217,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0, 40,217,128, 4, 0, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,101,114,118,101,114, 95, 97,100,100,114,101,115,115, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,237, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, - 8,237, 57, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 91,100,101,102, 97,117,108,116, 93, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,216,217,128, 4, 0, 0, 0, 0,133, 0, 0, 0, 1, 0, 0, 0, 72,218,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,200, 2,231, 1,136,238,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0, 72,218,128, 4, 0, 0, 0, 0,133, 0, 0, 0, 1, 0, 0, 0,184,218,128, 4, 0, 0, 0, 0,216,217,128, 4, - 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0,152, 3, 37, 3,136,244,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,184,218,128, 4, 0, 0, 0, 0,133, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,218,128, 4, - 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,157, 0, 72, 2,104,233,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, -184, 1, 0, 0, 40,219,128, 4, 0, 0, 0, 0,153, 0, 0, 0, 1, 0, 0, 0, 40,221,128, 4, 0, 0, 0, 0, 56,222,128, 4, - 0, 0, 0, 0, 72,223,128, 4, 0, 0, 0, 0, 0, 0,128, 63, 1, 0, 1, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, - 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, 32, 0, 32, 0, 32, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,200,224,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 2, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 10,215, 35, 60,205,204,204, 61, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 0,205,204,204, 61,205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, - 72,225,122, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 0, 0, 0, 40,221,128, 4, 0, 0, 0, 0,152, 0, 0, 0, - 1, 0, 0, 0,184,221,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, - 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 56, 0, 0, 0,184,221,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 72,139,130, 4, - 0, 0, 0, 0,136, 77,130, 4, 0, 0, 0, 0,184,186,130, 4, 0, 0, 0, 0,152,143,130, 4, 0, 0, 0, 0,136, 87,130, 4, - 0, 0, 0, 0,248,134,130, 4, 0, 0, 0, 0,200,104,130, 4, 0, 0, 0, 0, 68, 65, 84, 65, 64, 0, 0, 0, 56,222,128, 4, - 0, 0, 0, 0,152, 0, 0, 0, 1, 0, 0, 0,200,222,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 0, 0, 0,200,222,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 72,139,130, 4, 0, 0, 0, 0,136, 77,130, 4, 0, 0, 0, 0,184,186,130, 4, 0, 0, 0, 0,152,143,130, 4, - 0, 0, 0, 0,136, 87,130, 4, 0, 0, 0, 0,248,134,130, 4, 0, 0, 0, 0,200,104,130, 4, 0, 0, 0, 0, 68, 65, 84, 65, -104, 0, 0, 0, 72,223,128, 4, 0, 0, 0, 0,151, 0, 0, 0, 1, 0, 0, 0,248,223,128, 4, 0, 0, 0, 0, 5, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,100,100,128, 1, 0, 0, 0,129, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 82, 43, 8, 67,228,223,255, 63,209, 94,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0, +111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -136, 0, 0, 0,248,223,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 56, 83,130, 4, 0, 0, 0, 0,216, 91,130, 4, - 0, 0, 0, 0,120,100,130, 4, 0, 0, 0, 0,104,113,130, 4, 0, 0, 0, 0,184,117,130, 4, 0, 0, 0, 0, 40,165,130, 4, - 0, 0, 0, 0,200,173,130, 4, 0, 0, 0, 0, 24,178,130, 4, 0, 0, 0, 0, 8,191,130, 4, 0, 0, 0, 0, 8,122,130, 4, - 0, 0, 0, 0, 88,126,130, 4, 0, 0, 0, 0,168,130,130, 4, 0, 0, 0, 0,232,147,130, 4, 0, 0, 0, 0, 56,152,130, 4, - 0, 0, 0, 0,136,156,130, 4, 0, 0, 0, 0,216,160,130, 4, 0, 0, 0, 0, 88,195,130, 4, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0,200,224,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 24,109,130, 4, 0, 0, 0, 0,104,182,130, 4, - 0, 0, 0, 0, 40, 96,130, 4, 0, 0, 0, 0,120,169,130, 4, 0, 0, 0, 0, 68, 65, 84, 65, 88, 0, 0, 0, 56,225,128, 4, - 0, 0, 0, 0,139, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100, -101,114, 76, 97,121,101,114, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 67, 65, 0, 0,136, 0, 0, 0,216,225,128, 4, 0, 0, 0, 0, 29, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97, -109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63,205,204,204, 61, 0, 0,200, 66, 0, 0, 12, 66, -161, 14,234, 64, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 76, 65, 0, 0,216, 1, 0, 0,168,226,128, 4, 0, 0, 0, 0, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 76, 97, -109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,247,255,239, 65, - 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,200,228,128, 4, 0, 0, 0, 0, 2, 0, 0, 0, - 46, 26,128, 63, 25, 4,240, 65, 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 64, 11, 3, 0, 1, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,111, 18,131, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 0, 0, 0,152,131,106, 3,200, 0, 0, 0, 1, 0, 0, 0,248,132,106, 3, 56,130,106, 3, 0, 0,112,195, 0, 0,112, 67, + 0, 0, 7,195, 0, 0, 7, 67,105, 42,145,196,105, 42,145, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, + 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, + 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 4, 0, 0,202, 2, 76, 1,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,202, 2, 76, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,132,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +152,131,106, 3, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, + 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, + 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,202, 2, 76, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 88,134,106, 3, +166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,230,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,200,228,128, 4, - 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63,104,140, 36, 4, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 0, 0,120, 5, 0, 0, 48,136,106, 3,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 67, 83, 99,101,110,101, 0,116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 16,142,106, 3, 0, 0, 0, 0,208,160,106, 3, 96,158,106, 3, 0, 0, 0, 0, 0, 0, 0, 0,144,144,106, 3, +144,145,106, 3,144,144,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,146,106, 3,192, 39, 78, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, + 0, 0, 1, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, + 32, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 50, 0,141, 0,128, 7, 56, 4, 8, 0, 8, 0, 0, 0, 24, 0, 17, 0, + 0, 0, 0, 0, 90, 0, 1, 0, 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 8, 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,152,106, 3, 16,152,106, 3, + 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 47,116,109,112, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 5, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 16, 0, 0, 0,128, 63, 0, 0,128, 63, +173, 2, 95, 0,154,153,217, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 76, 69, 78, 68, 69, 82, 95, 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63,102,166,171, 67, 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,152,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 99, 3, 1, 0, 0, 0, + 1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 32, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 5, 0, 60, 0, 5, 0, + 1, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4, +205,204,204, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0, 16,142,106, 3, 16, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,142,106, 3,192,142,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,192,142,106, 3, 16, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,110,101,116,119,111,114,107, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,143,106, 3,112,143,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,112,143,106, 3, 16, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,101,114,118,101,114, 95, 97,100,100,114,101,115,115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,144,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 32,144,106, 3, 0, 0, 0, 0, 1, 0, 0, 0, + 91,100,101,102, 97,117,108,116, 93, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0,144,144,106, 3,133, 0, 0, 0, 1, 0, 0, 0, + 16,145,106, 3, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,102, 2,162, 1, 16,165,106, 3, 68, 65, 84, 65, + 28, 0, 0, 0, 16,145,106, 3,133, 0, 0, 0, 1, 0, 0, 0,144,145,106, 3,144,144,106, 3, 1, 0, 0, 0, 2, 0, 0, 0, + 0, 4, 0, 0, 25, 3,180, 2, 72,170,106, 3, 68, 65, 84, 65, 28, 0, 0, 0,144,145,106, 3,133, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 16,145,106, 3, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,135, 0,246, 1,208,160,106, 3, 68, 65, 84, 65, +144, 1, 0, 0, 16,146,106, 3,153, 0, 0, 0, 1, 0, 0, 0, 8,148,106, 3, 24,149,106, 3, 40,150,106, 3, 0, 0,128, 63, + 1, 0, 1, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, + 32, 0, 32, 0, 32, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,152,151,106, 3, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 80, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, 50, 0, 10, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, 50, 0, 10, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 10,215, 35, 60,205,204,204, 61, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0,250, 0,205,204,204, 61,205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, 72,225,122, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 44, 0, 0, 0, 8,148,106, 3,152, 0, 0, 0, 1, 0, 0, 0,152,148,106, 3, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 28, 0, 0, 0,152,148,106, 3, 0, 0, 0, 0, 1, 0, 0, 0,128, 76,108, 3,112, 2,108, 3,144,133,108, 3, +176, 81,108, 3, 64, 14,108, 3, 80, 71,108, 3, 0, 35,108, 3, 68, 65, 84, 65, 44, 0, 0, 0, 24,149,106, 3,152, 0, 0, 0, + 1, 0, 0, 0,168,149,106, 3, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0,168,149,106, 3, 0, 0, 0, 0, + 1, 0, 0, 0,128, 76,108, 3,112, 2,108, 3,144,133,108, 3,176, 81,108, 3, 64, 14,108, 3, 80, 71,108, 3, 0, 35,108, 3, + 68, 65, 84, 65, 96, 0, 0, 0, 40,150,106, 3,151, 0, 0, 0, 1, 0, 0, 0,240,150,106, 3, 5, 0, 0, 0, 17, 0, 0, 0, + 0,247, 82, 3,255,100,100,128, 1, 0, 0, 0,129, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 88,114,144, 66, +126,158, 88, 65, 59,205, 69, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 68, 0, 0, 0,240,150,106, 3, + 0, 0, 0, 0, 1, 0, 0, 0, 16, 9,108, 3,112, 19,108, 3,208, 29,108, 3, 96, 45,108, 3,144, 50,108, 3,160,107,108, 3, + 0,118,108, 3, 48,123,108, 3,192,138,108, 3,192, 55,108, 3,240, 60,108, 3, 32, 66,108, 3,224, 86,108, 3, 16, 92,108, 3, + 64, 97,108, 3,112,102,108, 3,240,143,108, 3, 68, 65, 84, 65, 16, 0, 0, 0,152,151,106, 3, 0, 0, 0, 0, 1, 0, 0, 0, + 48, 40,108, 3, 96,128,108, 3,160, 24,108, 3,208,112,108, 3, 68, 65, 84, 65, 72, 0, 0, 0, 16,152,106, 3,139, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 76, 97,121,101,114, 0,114, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 67, 65, 0, 0,104, 0, 0, 0, 64,153,106, 3, 29, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, + 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63, +205,204,204, 61, 0, 0,200, 66, 0, 0, 12, 66,161, 14,234, 64, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0,108, 1, 0, 0, 16,154,106, 3, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,247,255,239, 65, 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,224,155,106, 3, + 2, 0, 0, 0, 46, 26,128, 63, 25, 4,240, 65, 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 11, 3, 0, 1, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,111, 18,131, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,216,157,106, 3, 68, 65, 84, 65, 16, 1, 0, 0,224,155,106, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,243, 4, 53,191, +242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63, 88,157,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,140, 36, 4, 0, 0, 0, 0, 81, 1, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0, 88,230,128, 4, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0, -232, 1, 0, 0,200,230,128, 4, 0, 0, 0, 0,132, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114, 99, 80, 61,114, 99, 80, 61,114, 99, 80, 61, 0, 0, 0, 0,199, 54, 36, 60, -199, 54, 36, 60,199, 54, 36, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0, -128, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 64, 0, 0,200, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 61, 0, 0, 5, 0, 0, 0, 0, 0, 10,215,163, 59, - 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,157,106, 3, 81, 1, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +216,157,106, 3, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0,120, 1, 0, 0, 96,158,106, 3,132, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114, 99, 80, 61,114, 99, 80, 61,114, 99, 80, 61, 0, 0, 0, 0,199, 54, 36, 60,199, 54, 36, 60,199, 54, 36, 60, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0,128, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,160, 64, 0, 0,200, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 0, 0,128, 63,205,204, 76, 61, 0, 0, 5, 0, 0, 0, 0, 0, 10,215,163, 59, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,160,106, 3, 68, 65, 84, 65, 32, 0, 0, 0, + 72,160,106, 3, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0,208,160,106, 3,121, 0, 0, 0, 1, 0, 0, 0, + 16,165,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, + 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,232,128, 4, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,248,232,128, 4, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, -208, 4, 0, 0,104,233,128, 4, 0, 0, 0, 0,121, 0, 0, 0, 1, 0, 0, 0,136,238,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101, -114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,225,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -222,149, 47, 63, 53, 70, 58, 63,222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, - 7,165, 39, 63,149, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 1, 0,128, 63, 1, 0,128, 51, 1, 0, 0,179, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0,128, 63, 1, 0,128, 51, 0, 0, 0, 0, - 2, 0, 0,179, 2, 0, 0,167, 1, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 53, 1, 0, 0, 41, 1, 0,128,168, 0, 0,128, 63, - 0, 0,128, 63,157,190,215, 49,167,170, 4, 52, 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, 33, 69, 15, 51, 0, 0, 0,128, - 73,254, 67, 51,243, 97,106, 49, 0, 0,128, 63, 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, 0, 0,128, 53, 0, 0,128, 63, - 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,187,225, 16, 63, 0, 0,128, 63, -205,204,204, 62,237, 54, 32, 63, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, - 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 79, 66, 0, 0,208, 4, 0, 0,136,238,128, 4, 0, 0, 0, 0,121, 0, 0, 0, 1, 0, 0, 0,136,244,128, 4, - 0, 0, 0, 0,104,233,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, - 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,204, 5, 88, -159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 66,130, 4, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 47, 9, 3, - 0, 0, 0, 0,152,237, 67, 4, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63,222,149, 47, 63, 52, 70, 58, 63,179, 56, 49,188, 0, 0, 0,128, 86,126,162,190,227,251,159, 62, - 56, 53,101, 63, 0, 0, 0,128, 7,165, 39, 63,149, 84, 28,191, 50,247,227, 62, 0, 0, 0,128,110,101,239, 64,151, 62,208,192, - 77,255,170, 64, 0, 0,128, 63, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, 79, 66, 0, 0, - 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63, -169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,243,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 8,189, 5, 88,159,127, 0, 0,200,196, 5, 88,159,127, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0,248, 47, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,152,237, 67, 4, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,152, 0, 0, 0,168,243,128, 4, 0, 0, 0, 0,124, 0, 0, 0, 1, 0, 0, 0, - 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,205,204, 76, 62, - 10,215,163, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 79, 66, 0, 0,208, 4, 0, 0, -136,244,128, 4, 0, 0, 0, 0,121, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,238,128, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,226,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,153,106, 3, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,222,149, 47, 63, 53, 70, 58, 63,222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, + 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,149, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, + 78,255,170, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,125,103,133, 51,176,219,194,178, 0, 0, 0, 0,190, 32, 66, 51, 1, 0,128, 63, +168,200,153, 51, 0, 0, 0, 0, 32,206, 18,179,126,126,149, 50, 1, 0,128, 63, 0, 0, 0, 0,241,251,133, 52,172,182, 27,180, +174,236,252, 51, 0, 0,128, 63, 0, 0,128, 63,157,190,215, 49,167,170, 4, 52, 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, + 33, 69, 15, 51, 0, 0, 0,128, 73,254, 67, 51,243, 97,106, 49, 0, 0,128, 63, 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, + 0, 0,128, 53, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63, +187,225, 16, 63, 0, 0,128, 63,205,204,204, 62,237, 54, 32, 63, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, +220, 3, 0, 0, 16,165,106, 3,121, 0, 0, 0, 1, 0, 0, 0, 72,170,106, 3,208,160,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 66, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,223, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 72,247,107, 3, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 42, 87, 3, 0,237, 98, 3, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,222,149, 47, 63, 52, 70, 58, 63, +179, 56, 49,188, 0, 0, 0,128, 86,126,162,190,227,251,159, 62, 56, 53,101, 63, 0, 0, 0,128, 7,165, 39, 63,149, 84, 28,191, + 50,247,227, 62, 0, 0, 0,128,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, 79, 66, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, + 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,169,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 24,222, 9, 3,152,111, 77, 3, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, 64, 42, 87, 3, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, 0,237, 98, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +144, 0, 0, 0, 80,169,106, 3,124, 0, 0, 0, 1, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,205,204, 76, 62, 10,215,163, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, + 79, 66, 0, 0,220, 3, 0, 0, 72,170,106, 3,121, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16,165,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,154,106, 3, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4204,8 +3630,8 @@ char datatoc_startup_blend[]= { 241,161, 95, 62,164,111, 75, 63, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 1, 0,128, 50, 0, 0, 0,179, 0, 0, 0, 0, 1, 0,128, 50, 1, 0,128, 63, 1, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 39, 1, 0, 0, 52, 1, 0,128, 39, 0, 0,128, 63, 53,236,148,190, + 35,233,134, 49,251,110, 17,179, 0, 0, 0, 0, 49,158,141, 50, 1, 0,128, 63,126,214,237, 50, 0, 0, 0, 0,155,248, 28,178, +199,139, 96,177,254,255,127, 63, 0, 0, 0, 0, 80,136,159,178,192, 4,158,178,209,114,143,179, 0, 0,128, 63, 53,236,148,190, 222,102, 69,191, 37,255, 16, 63, 0, 0, 0,128, 24,134,116, 63, 57,174, 76,190,240,161, 95, 62, 0, 0, 0,128,235, 13, 98,189, 34,194, 26, 63,166,111, 75, 63, 0, 0, 0,128,208, 19, 13, 63,234, 65,102,190, 10, 10,231,192, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 68, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, @@ -4213,42 +3639,34 @@ char datatoc_startup_blend[]= { 229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0,160, 2, 0, 0,136,174,106, 3, 44, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 77, 65, 0, 0, 32, 3, 0, 0,168,249,128, 4, 0, 0, 0, 0, 44, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, - 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 10,215, 35, 60, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 50, 0,205,204, 76, 62, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 2, 0, - 50, 0, 0, 6, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 4, 0, 67, 0, 64, 3, 67, 0, 64, 3, 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61, 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 24,253,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, 0, 0, 8, 0, + 1, 0, 50, 0,205,204, 76, 62, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, + 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, 0, 0,128, 63, + 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 4, 0, 67, 0, 64, 3, 67, 0, 64, 3, + 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61, + 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,144,177,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120,254,128, 4, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111,148, 26, 63,111,148, 26, 63,111,148, 26, 63, -205,204, 76, 61,205,204,204, 61,102,102,166, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, - 24,253,128, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136,159,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,179,106, 3, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,111,148, 26, 63,111,148, 26, 63,111,148, 26, 63,205,204, 76, 61,205,204,204, 61,102,102,166, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,144,177,106, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 88, 84,107, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -4256,9 +3674,9 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 40, 0, 0, 0,120,254,128, 4, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, - 32, 0, 0, 0, 96, 0, 0, 0, 1, 0, 1, 0, 49, 0, 49, 0,232,254,128, 4, 0, 0, 0, 0, 56, 15,129, 4, 0, 0, 0, 0, - 68, 65, 84, 65, 0, 16, 0, 0,232,254,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 0,179,106, 3, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, + 96, 0, 0, 0, 1, 0, 1, 0, 49, 0, 49, 0,136,179,106, 3,240,195,106, 3, 68, 65, 84, 65, 0, 16, 0, 0,136,179,106, 3, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4386,8 +3804,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0, - 56, 15,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0,240,195,106, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5539,150 +4956,19 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0,112, 1, 0, 0,136,159,129, 4, 0, 0, 0, 0, - 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 7, 0, 8, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 1, 0, - 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,161,129, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 72,161,129, 4, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, - 0, 0, 1, 0, 14, 0, 13, 0,184,161,129, 4, 0, 0, 0, 0, 8,178,129, 4, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, -184,161,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 68, 65, 84, 65, 0,144, 0, 0, 8,178,129, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0, + 48, 1, 0, 0, 88, 84,107, 3, 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 7, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 85,107, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,240, 85,107, 3, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, + 96, 0, 0, 0, 0, 0, 1, 0, 14, 0, 13, 0,120, 86,107, 3,224,102,107, 3, 68, 65, 84, 65, 0, 16, 0, 0,120, 86,107, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, @@ -5811,6 +5097,7 @@ char datatoc_startup_blend[]= { 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 68, 65, 84, 65, 0,144, 0, 0,224,102,107, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, @@ -6835,25 +6122,148 @@ char datatoc_startup_blend[]= { 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0,176, 1, 0, 0, 88, 66,130, 4, 0, 0, 0, 0, 54, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0, + 40, 1, 0, 0, 72,247,107, 3, 54, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,130,239, 2, + 32, 0,108, 3, 0, 1,108, 3, 0, 0, 0, 0,144,250,107, 3,112,253,107, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,248,107, 3, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,184,251,107, 3, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,104,254,107, 3, 2, 0, 0, 0, 5, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, + 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 30, 0, 6, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, + 88,130,239, 2, 0, 0, 0, 0, 1, 0, 0, 0,136,174,106, 3, 68, 65, 84, 65, 84, 1, 0, 0,216,248,107, 3, 88, 1, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 89, 38, 4, 0, 0, 0, 0, - 88, 75,130, 4, 0, 0, 0, 0, 24, 76,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 70,130, 4, 0, 0, 0, 0, -200, 72,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 68,130, 4, 0, 0, 0, 0, - 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 71,130, 4, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168, 73,130, 4, 0, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 30, 0, 6, 0, 1, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0, 8, 89, 38, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0,168,249,128, 4, 0, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0, 88, 68,130, 4, 0, 0, 0, 0, - 88, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 70,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,144,250,107, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6861,18 +6271,17 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, 8, 70,130, 4, 0, 0, 0, 0, - 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, 1, 0, 0, 0, - 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191,230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191,253,255,127,191, - 0, 0,128,191, 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, - 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, 1, 0, 0, 0, -245,255,127, 63, 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191,250,255,127,191, - 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73, -230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0, 24, 71,130, 4, 0, 0, 0, 0, 88, 1, 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, +144,250,107, 3, 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, + 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191,230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191, +253,255,127,191, 0, 0,128,191, 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, + 26,182,230, 73, 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, + 1, 0, 0, 0,245,255,127, 63, 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191, +250,255,127,191, 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, + 26,182,230, 73,230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0,184,251,107, 3, 88, 1, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 72,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112,253,107, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6880,1133 +6289,1243 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0,112,253,107, 3, + 57, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, + 0, 0, 35, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65, 84, 1, 0, 0, +104,254,107, 3, 88, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0,200, 72,130, 4, 0, 0, 0, 0, 57, 0, 0, 0, 12, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, - 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65,104, 1, 0, 0,168, 73,130, 4, 0, 0, 0, 0, - 88, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 75,130, 4, 0, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0,108, 3, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 76,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,120, 0, 0, 0, 88, 75,130, 4, 0, 0, 0, 0, - 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, - 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, - 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, - 68, 65, 84, 65, 32, 1, 0, 0, 24, 76,130, 4, 0, 0, 0, 0, 67, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, -136, 77,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, 56, 83,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, 48, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 40, 81,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65,120, 0, 0, 0, 32, 0,108, 3, 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, + 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, 68, 65, 84, 65, 8, 1, 0, 0, 0, 1,108, 3, 67, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,112, 2,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 16, 9,108, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 7,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 16, 1, 0, 0,240, 77,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 40, 81,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,184, 82,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0,184, 82,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, 56, 83,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, -136, 87,130, 4, 0, 0, 0, 0,136, 77,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 66,108,111, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, -120, 85,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, - 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,160, 83,130, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,188, 2,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, -120, 85,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, - 8, 87,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8, 87,130, 4, 0, 0, 0, 0, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, -136, 87,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,216, 91,130, 4, 0, 0, 0, 0, 56, 83,130, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,200, 89,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 16, 1, 0, 0,240, 87,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,200, 89,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 88, 91,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0, 88, 91,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0,216, 91,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, - 40, 96,130, 4, 0, 0, 0, 0,136, 87,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 67,108, 97,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, - 24, 94,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, - 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 64, 92,130, 4, 0, 0, 0, 0, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, - 24, 94,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, -168, 95,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,168, 95,130, 4, 0, 0, 0, 0, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, - 40, 96,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,120,100,130, 4, 0, 0, 0, 0,216, 91,130, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,104, 98,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 16, 1, 0, 0,144, 96,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,104, 98,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,248, 99,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0,248, 99,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0,120,100,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, -200,104,130, 4, 0, 0, 0, 0, 40, 96,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 67,114,101, 97,115,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, -184,102,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, - 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,224,100,130, 4, 0, 0, 0, 0, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, -184,102,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,228, 97,175,190, 50,131,112, 63,218,243,127,191, 10,183,157,188, - 72,104,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72,104,130, 4, 0, 0, 0, 0, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215, 35, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, -200,104,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, 24,109,130, 4, 0, 0, 0, 0,120,100,130, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, 0, 48, 54, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 8,107,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 16, 1, 0, 0, 48,105,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 8,107,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,152,108,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0,152,108,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, 24,109,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, -104,113,130, 4, 0, 0, 0, 0,200,104,130, 4, 0, 0, 0, 0, 88,186, 79, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, - 88,111,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, - 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,128,109,130, 4, 0, 0, 0, 0, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, - 88,111,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, -232,112,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,232,112,130, 4, 0, 0, 0, 0, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, -104,113,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,117,130, 4, 0, 0, 0, 0, 24,109,130, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,105,108,108, 47, 68,101,101,112,101,110, 0, 48, 48, - 49, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,115,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, - 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,208,113,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,115,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, -224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 56,117,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0, 56,117,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0,184,117,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, - 8,122,130, 4, 0, 0, 0, 0,104,113,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 70,108, 97,116,116,101,110, 47, 67,111,110,116,114, 97,115,116, 0, 48, 48, 49, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, -248,119,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, - 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 32,118,130, 4, 0, 0, 0, 0, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, -248,119,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, -136,121,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136,121,130, 4, 0, 0, 0, 0, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, - 8,122,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, 88,126,130, 4, 0, 0, 0, 0,184,117,130, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, 97, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 72,124,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 16, 1, 0, 0,112,122,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 72,124,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, -224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,216,125,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0,216,125,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, 88,126,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, -168,130,130, 4, 0, 0, 0, 0, 8,122,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 73,110,102,108, 97,116,101, 47, 68,101,102,108, 97,116,101, 0, 48, 48, 49, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, -152,128,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, - 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, 68, 65, 84, 65, 16, 1, 0, 0,192,126,130, 4, 0, 0, 0, 0, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, -152,128,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, - 40,130,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40,130,130, 4, 0, 0, 0, 0, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, -168,130,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,248,134,130, 4, 0, 0, 0, 0, 88,126,130, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,232,132,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, - 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 16, 1, 0, 0, 16,131,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,232,132,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, -224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,120,134,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0,120,134,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0,248,134,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, - 72,139,130, 4, 0, 0, 0, 0,168,130,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 76,105,103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, - 56,137,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 96,135,130, 4, 0, 0, 0, 0, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, - 56,137,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, -200,138,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 0, 7,108, 3, 83, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,120, 8,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200,138,130, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,120, 8,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, - 72,139,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,152,143,130, 4, 0, 0, 0, 0,248,134,130, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,136,141,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, + 16, 9,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 64, 14,108, 3,112, 2,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108, +111, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 48, 12,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 16, 1, 0, 0,176,139,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 96,226, 8, 3, 46,105, 46, 99,114,101, 97,115,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 92, 9,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,136,141,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 24,143,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 48, 12,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186,168, 13,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,168, 13,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 64, 14,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,112, 19,108, 3, + 16, 9,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 96, 17,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0, 24,143,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,140, 14,108, 3, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 96, 17,108, 3, 83, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,216, 18,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,216, 18,108, 3, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, +112, 19,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,160, 24,108, 3, 64, 14,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, + 97,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,144, 22,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +112,227, 82, 3, 46,105, 46, 99,108, 97,121, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,188, 19,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,144, 22,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186, 8, 24,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8, 24,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,160, 24,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,208, 29,108, 3, +112, 19,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,192, 27,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,236, 24,108, 3, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,192, 27,108, 3, 83, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56, 29,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56, 29,108, 3, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, +208, 29,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 0, 35,108, 3,160, 24,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,114, +101, 97,115,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,240, 32,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 96,226, 8, 3, 46,105, 46, 99,114,101, 97,115,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 28, 30,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,240, 32,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,228, 97,175,190, 50,131,112, 63,218,243,127,191, + 10,183,157,188,104, 34,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,104, 34,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215, 35, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 0, 35,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 48, 40,108, 3, +208, 29,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, 0, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 32, 38,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 76, 35,108, 3, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 32, 38,108, 3, 83, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,152, 39,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,152, 39,108, 3, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, + 48, 40,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 96, 45,108, 3, 0, 35,108, 3, 75,247,105, 0, 0, 0, 0, 0, 66, 82, 68,114, + 97,119, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 80, 43,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,124, 40,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0, 80, 43,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186,200, 44,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200, 44,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 96, 45,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,144, 50,108, 3, + 48, 40,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,105,108,108, 47, 68,101,101,112,101,110, 0, 48, 48, 49, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,128, 48,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,112,229, 82, 3, 46,105, 46,102,105,108,108, 46,112,110,103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,172, 45,108, 3, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,128, 48,108, 3, 83, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,248, 49,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,248, 49,108, 3, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, +144, 50,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,192, 55,108, 3, 96, 45,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,108, + 97,116,116,101,110, 47, 67,111,110,116,114, 97,115,116, 0, 48, 48, 49, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,176, 53,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 64,233, 8, 3, 46,105, 46,102,108, 97,116,116,101,110, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,220, 50,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,176, 53,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186, 40, 55,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40, 55,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,192, 55,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,240, 60,108, 3, +144, 50,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, 97, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,224, 58,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 64,235, 8, 3, 46,105, 46,103,114, 97, 98, 46,112,110,103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, + 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 12, 56,108, 3, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,224, 58,108, 3, 83, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 88, 60,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 88, 60,108, 3, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, +240, 60,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 32, 66,108, 3,192, 55,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 73,110, +102,108, 97,116,101, 47, 68,101,102,108, 97,116,101, 0, 48, 48, 49, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 64,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +248,103, 83, 3, 46,105, 46,105,110,102,108, 97,116,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, + 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0, 60, 61,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0, 16, 64,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186,136, 65,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136, 65,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 32, 66,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 80, 71,108, 3, +240, 60,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 64, 69,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 64,112, 83, 3, 46,105, 46,108, 97,121,101,114, 46,112,110,103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 20,174,199, 62, 20,174,199, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,108, 66,108, 3, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 64, 69,108, 3, 83, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,184, 70,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,184, 70,108, 3, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, + 80, 71,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,128, 76,108, 3, 32, 66,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105, +103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,112, 74,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,156, 71,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,112, 74,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, + 46,189,194, 61,232, 75,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,232, 75,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0,152,143,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, -232,147,130, 4, 0, 0, 0, 0, 72,139,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 77,117,108,116,105,112,108,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, -216,145,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,128, 76,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,176, 81,108, 3, + 80, 71,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,160, 79,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 0,144,130, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,204, 76,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, -216,145,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, -104,147,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,160, 79,108, 3, 83, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 24, 81,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,104,147,130, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 24, 81,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, -232,147,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, 56,152,130, 4, 0, 0, 0, 0,152,143,130, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 78,117,100,103,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 40,150,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, +176, 81,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,224, 86,108, 3,128, 76,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117, +108,116,105,112,108,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,208, 84,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, - 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 16, 1, 0, 0, 80,148,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 40,150,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, -224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,184,151,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0,184,151,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, 56,152,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, -136,156,130, 4, 0, 0, 0, 0,232,147,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 80,105,110, 99,104, 47, 77, 97,103,110,105,102,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, -120,154,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,252, 81,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,208, 84,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, + 46,189,194, 61, 72, 86,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, - 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, 68, 65, 84, 65, 16, 1, 0, 0,160,152,130, 4, 0, 0, 0, 0, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, -120,154,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, - 8,156,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8,156,130, 4, 0, 0, 0, 0, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, -136,156,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,216,160,130, 4, 0, 0, 0, 0, 56,152,130, 4, 0, 0, 0, 0, - 72,208, 93, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,111,108,105,115,104, 0, 48, 48, 49, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,200,158,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 9, - 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,240,156,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,200,158,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, -224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 88,160,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0, 88,160,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0,216,160,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, - 40,165,130, 4, 0, 0, 0, 0,136,156,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 83, 99,114, 97,112,101, 47, 80,101, 97,107,115, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, - 24,163,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, - 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 64,161,130, 4, 0, 0, 0, 0, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, - 24,163,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, -168,164,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,168,164,130, 4, 0, 0, 0, 0, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, - 40,165,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,120,169,130, 4, 0, 0, 0, 0,216,160,130, 4, 0, 0, 0, 0, - 32,205,112, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83, 99,117,108,112,116, 32, 68,114, 97,119, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,104,167,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, - 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,144,165,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,104,167,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, -224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,248,168,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0,248,168,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0,120,169,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, -200,173,130, 4, 0, 0, 0, 0, 40,165,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 83,109,101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, -184,171,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0,224,169,130, 4, 0, 0, 0, 0, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, -184,171,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, - 72,173,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72,173,130, 4, 0, 0, 0, 0, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, -200,173,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, 24,178,130, 4, 0, 0, 0, 0,120,169,130, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, 0, 48, 48, 49, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 8,176,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, - 0, 0, 0, 0, 5, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 16, 1, 0, 0, 48,174,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 8,176,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, -224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,152,177,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0,152,177,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, 24,178,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, -104,182,130, 4, 0, 0, 0, 0,200,173,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 83,110, 97,107,101, 32, 72,111,111,107, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, - 88,180,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, - 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0,128,178,130, 4, 0, 0, 0, 0, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, - 88,180,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, -232,181,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,232,181,130, 4, 0, 0, 0, 0, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, -104,182,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,186,130, 4, 0, 0, 0, 0, 24,178,130, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,184,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 16, 1, 0, 0,208,182,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,184,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,186,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0, 56,186,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72, 86,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0,184,186,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, - 8,191,130, 4, 0, 0, 0, 0,104,182,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 83,117, 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, -248,188,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,224, 86,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 16, 92,108, 3, +176, 81,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 78,117,100,103,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 90,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,192, 3, 83, 3, 46,105, 46,110,117,100,103,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,187,130, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, + 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 44, 87,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, -248,188,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, -136,190,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 0, 90,108, 3, 83, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,120, 91,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136,190,130, 4, 0, 0, 0, 0, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, - 8,191,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, 88,195,130, 4, 0, 0, 0, 0,184,186,130, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,104,117,109, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 72,193,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 8, - 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 16, 1, 0, 0,112,191,130, 4, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 72,193,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, -224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,216,194,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0,216,194,130, 4, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,240, 1, 0, 0, 88,195,130, 4, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8,191,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 84,119,105,115,116, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, -152,197,130, 4, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, - 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0,192,195,130, 4, 0, 0, 0, 0, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, -152,197,130, 4, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, - 40,199,130, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40,199,130, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,120, 91,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 85, 83, 69, 82, 32, 13, 0, 0, -160, 19,176, 2, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 33, 8, 17, 1, 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, - 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, + 16, 92,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 64, 97,108, 3,224, 86,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,105, +110, 99,104, 47, 77, 97,103,110,105,102,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 48, 95,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85, -115,101,114,115, 47,116,111,110, 47, 68,101,115,107,116,111,112, 47, 0, 45,112,111,119,101,114,112, 99, 47, 98,105,110, 47, 98, -108,101,110,100,101,114, 46, 97,112,112, 47, 67,111,110,116,101,110,116,115, 47, 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 48,173, 8, 3, 46,105, 46,112,105,110, 99,104, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, + 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0, 92, 92,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0, 48, 95,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186,168, 96,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,168, 96,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 64, 97,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,112,102,108, 3, + 16, 92,108, 3, 9,186,107, 0, 0, 0, 0, 0, 66, 82, 80,111,108,105,115,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 96,100,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 64,233, 8, 3, 46,105, 46,102,108, 97,116,116,101,110, 46,112, +110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 9, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,140, 97,108, 3, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 96,100,108, 3, 83, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,216,101,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,216,101,108, 3, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, +112,102,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,160,107,108, 3, 64, 97,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83, 99, +114, 97,112,101, 47, 80,101, 97,107,115, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,144,105,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 40,179, 2, 3, 46,105, 46,115, 99,114, 97,112,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,188,102,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,144,105,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186, 8,107,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8,107,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,160,107,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,208,112,108, 3, +112,102,108, 3,164, 25,110, 0, 0, 0, 0, 0, 66, 82, 83, 99,117,108,112,116, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,192,110,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 48,130, 78, 3, 46,105, 46,100,114, 97,119, 46,112,110,103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0,230,104, 64, 63, 0, 0,128, 63, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,236,107,108, 3, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,192,110,108, 3, 83, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 56,112,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,112,108, 3, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, +208,112,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 0,118,108, 3,160,107,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109, +101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,240,115,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 28,113,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,240,115,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, + 46,189,194, 61,104,117,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,104,117,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 0,118,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 48,123,108, 3, +208,112,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 32,121,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,192,183, 2, 3, 46,105, 46,115,109,111,111,116,104, 46,112,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 5, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, + 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 76,118,108, 3, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 32,121,108, 3, 83, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,152,122,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,152,122,108, 3, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, + 48,123,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 96,128,108, 3, 0,118,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,110, + 97,107,101, 32, 72,111,111,107, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 80,126,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +208, 63, 78, 3, 46,105, 46,115,110, 97,107,101, 95,104,111,111,107, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,124,123,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0, 80,126,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186,200,127,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200,127,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 96,128,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,144,133,108, 3, + 48,123,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,128,131,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,172,128,108, 3, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,128,131,108, 3, 83, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,248,132,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,248,132,108, 3, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, +144,133,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,192,138,108, 3, 96,128,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,117, + 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,176,136,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,220,133,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,176,136,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, + 46,189,194, 61, 40,138,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40,138,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,192,138,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,240,143,108, 3, +144,133,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,104,117,109, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,224,141,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,200, 49, 83, 3, 46,105, 46,116,104,117,109, 98, 46,112,110,103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, + 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 12,139,108, 3, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,224,141,108, 3, 83, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 88,143,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 88,143,108, 3, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, +240,143,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192,138,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,119, +105,115,116, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16,147,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +120, 55, 83, 3, 46,105, 46,116,119,105,115,116, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 60,144,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0, 16,147,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186,136,148,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136,148,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 85, 83, 69, 82,248, 12, 0, 0, 0, 79,235, 1,194, 0, 0, 0, 1, 0, 0, 0, 33, 8, 17, 1, + 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85,115,101,114,115, 47,116,111,110, 47, 68,101,115,107,116,111,112, 47, 0, 45,112, +111,119,101,114,112, 99, 47, 98,105,110, 47, 98,108,101,110,100,101,114, 46, 97,112,112, 47, 67,111,110,116,101,110,116,115, 47, + 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8026,7 +7545,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8046,22 +7565,20 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 35, 0, 0, 0, 2, 0, 94, 1, 8, 0, 0, 0, 3, 0, 0, 0, 56, 52, 39, 1, 0, 0, 0, 0, 2, 0, 2, 0, 0, 8, 0, 0, - 2, 0, 0, 0, 68,172, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0,128, 0, 0, 0, 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0, - 24,213,130, 4, 0, 0, 0, 0, 24,213,130, 4, 0, 0, 0, 0,152,116, 5, 88,159,127, 0, 0,152,116, 5, 88,159,127, 0, 0, -248,117, 5, 88,159,127, 0, 0,248,117, 5, 88,159,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 2, 0, 94, 1, 8, 0, 0, 0, 3, 0, 0, 0, 56, 52, 39, 1, + 0, 0, 0, 0, 2, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0, 68,172, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0,128, 0, 0, 0, + 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0,248,152,109, 3,248,152,109, 3,120,225, 77, 3,120,225, 77, 3,240,226, 77, 3, +240,226, 77, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 2, 0, 25, 0, 1, 0, 20, 0, 20, 0, - 1, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 30, 90,100,191,154,153,153, 62,102,102,102, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 31,250,254, 62, 9, 0, 0, 63,156,153, 25, 63, 0, 0, 0, 0,205,204, 76, 62,205,204, 76, 62,205,204, 76, 62, 0, 0,128, 63, - 44,135, 22, 63, 32,133,235, 62,184,243,125, 62, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,195, 73, 76, 63, 42,135, 86, 63, - 0, 0,128, 63, 0, 0, 0, 0, 1, 43,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 16, 47, 93, 62, 58,180,200,190, - 24, 47, 93,190, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 25, 0, 15, 0,120, 0, 60, 0, 3, 0,128, 0, 0, 0, 0, 0, 0, 0, -144, 31, 15, 0, 6, 0, 25, 0, 8, 0, 10, 0,200, 0, 0, 0,100, 0,100, 0, 0, 0, 0, 0, 2, 0, 1, 0, 10, 0, 50, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 2, 0, 25, 0, 1, 0, + 20, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 30, 90,100,191,154,153,153, 62,102,102,102, 63, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 31,250,254, 62, 9, 0, 0, 63,156,153, 25, 63, 0, 0, 0, 0,205,204, 76, 62,205,204, 76, 62,205,204, 76, 62, + 0, 0,128, 63, 44,135, 22, 63, 32,133,235, 62,184,243,125, 62, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,195, 73, 76, 63, + 42,135, 86, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 43,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 16, 47, 93, 62, + 58,180,200,190, 24, 47, 93,190, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 25, 0, 15, 0,120, 0, 60, 0, 3, 0,128, 0, 0, 0, + 0, 0, 0, 0,144, 31, 15, 0, 6, 0, 25, 0, 8, 0, 10, 0,200, 0, 0, 0,100, 0,100, 0, 0, 0, 0, 0, 2, 0, 1, 0, + 10, 0, 50, 0,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8071,223 +7588,99 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 62, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 29, 0, 0, 24,213,130, 4, 0, 0, 0, 0, -191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,101,102, 97,117,108,116, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255, -100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255, -100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255, -153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, - 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 70, 70, 70,255, - 70, 70, 70,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255, -100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255, -153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255, -153,153,153,255,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, - 70, 70, 70,255,255,255,255,255,255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 63, 63, 63,255, - 86,128,194,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 25, 25, 25,230, - 45, 45, 45,230,100,100,100,255,160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, - 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, 25, 25, 25,255,128,128,128,255, -100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50,180, 80, 80, 80,180, -100,100,100,180,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255,190,190,190,255, -100,100,100,180, 68, 68, 68,255, 0, 0, 0,255,255,255,255,255, 0, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, - 86,128,194,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,115,190, 76,255, 90,166, 51,255, -240,235,100,255,215,211, 75,255,180, 0,255,255,153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 29, 0, 0,248,152,109, 3, +191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, + 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, + 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255,153,153,153,255, 90, 90, 90,255, + 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 86,128,194,255,255,255,255,255, +255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255, + 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, + 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255, 90, 90, 90,255, + 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255,128,128,128,255, + 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255, +255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 63, 63, 63,255, 86,128,194,255,255,255,255,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 25, 25, 25,230, 45, 45, 45,230,100,100,100,255, +160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255,255,255,255,255, +255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, 25, 25, 25,255,128,128,128,255,100,100,100,255, 25, 25, 25,255, + 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50,180, 80, 80, 80,180,100,100,100,180,128,128,128,255, + 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255,190,190,190,255,100,100,100,180, 68, 68, 68,255, + 0, 0, 0,255,255,255,255,255, 0, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,115,190, 76,255, 90,166, 51,255,240,235,100,255,215,211, 75,255, +180, 0,255,255,153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, - 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255,204, 0,153,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, -200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, -240,255, 64,255,240,144,160,255,255,255,255,255, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 76, 76,255, 0, 0, 0, 0, -250,250,250,255, 15, 15, 15,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100,255,140, 25,255,250,250,250,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,130,130,130,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, - 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, -128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, -128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,250,250,250,255,250,250,250,255,250,250,250,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255, +114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, 255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, 255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, -144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255, -124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, 255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, +204, 0,153,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +255,255,255,255, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, 240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 76, 76,255, 0, 0, 0, 0,250,250,250,255, 15, 15, 15,255, 114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, +102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100,255,140, 25,255,250,250,250,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,130,130,130,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, 255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, 200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, 240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, 240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +250,250,250,255,250,250,250,255,250,250,250,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, 255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, - 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, 128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, 128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, - 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, -144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255, -124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, - 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,109, 88,129,255, - 78,152, 62,255, 46,143,143,255,169, 84,124,255,126,126, 80,255,162, 95,111,255,109,145,131,255,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0,255,255,255, 10,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, -200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, -240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255,110,110,110,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,132,132,132,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255, 94, 94, 94,255,172,172,172,255, 17, 27, 60,100, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,195,195,195,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, - 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, -128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, -128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255, 64, 64, 64,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, - 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, -144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,100, 0, 0,255, - 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, - 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, -200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, -240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,255,255,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, - 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, -128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, -128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,155,155,155,160,100,100,100,255,108,105,111,255, -104,106,117,255,105,117,110,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, @@ -8300,8 +7693,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, - 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,173,173,173,255,127,112,112,100, + 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, 255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, @@ -8309,829 +7702,953 @@ char datatoc_startup_blend[]= { 240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, 114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, +102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,109, 88,129,255, 78,152, 62,255, 46,143,143,255, +169, 84,124,255,126,126, 80,255,162, 95,111,255,109,145,131,255,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0,255,255,255, 10,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255,110,110,110,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,132,132,132,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, + 94, 94, 94,255,172,172,172,255, 17, 27, 60,100, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,195,195,195,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, 255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, 200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, 240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,128,255,255,255,255,255,255, 0,170, 0,255, -220, 96, 96,255,220, 96, 96,255, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255, -247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255, -131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255, -240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255, -111,182,171,255, 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0,244,201, 12,255,238,194, 54,255, -243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0,111, 47,106,255,152, 69,190,255, -211, 48,214,255, 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0,141,141,141,255,176,176,176,255, -222,222,222,255, 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, - 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,153,153,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,100, 0, 0,255, 0, 0,200,255,128, 0, 80,255, + 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 68, 78, 65, 49,208,226, 0, 0,168,189, 36, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69, -206, 11, 0, 0, 42,110,101,120,116, 0, 42,112,114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, 0, 42,108, 97, -115,116, 0,120, 0,121, 0,122, 0,119, 0,120,109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, 97,120, 0, 42, -112,111,105,110,116,101,114, 0,103,114,111,117,112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0,115,117, 98,116, -121,112,101, 0,102,108, 97,103, 0,110, 97,109,101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0,100, 97,116, 97, 0,108,101,110, - 0,116,111,116, 97,108,108,101,110, 0, 42,110,101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 50, 52, 93, 0,117, -115, 0,105, 99,111,110, 95,105,100, 0, 42,112,114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, 98,108,111, 99, -107, 0, 42,102,105,108,101,100, 97,116, 97, 0,110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,108,101,112, 97,116,104, 91, 50, - 52, 48, 93, 0,116,111,116, 0,112, 97,100, 0, 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, 93, 0, 99,104, - 97,110,103,101,100, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 95,116,105,109,101,115,116, 97,109,112, 91, 50, 93, 0, 42,114, -101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, 98,108,111, 99,107,116,121,112,101, 0, 97,100,114, 99,111,100,101, 0,110, 97,109, -101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, 42, 98,101,122,116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, 99,116, 0,118, - 97,114,116,121,112,101, 0,116,111,116,118,101,114,116, 0,105,112,111, 0,101,120,116,114, 97,112, 0,114,116, 0, 98,105,116, -109, 97,115,107, 0,115,108,105,100,101, 95,109,105,110, 0,115,108,105,100,101, 95,109, 97,120, 0, 99,117,114,118, 97,108, 0, - 42,100,114,105,118,101,114, 0, 99,117,114,118,101, 0, 99,117,114, 0,115,104,111,119,107,101,121, 0,109,117,116,101,105,112, -111, 0,112,111,115, 0,114,101,108, 97,116,105,118,101, 0,116,111,116,101,108,101,109, 0,112, 97,100, 50, 0, 42,119,101,105, -103,104,116,115, 0,118,103,114,111,117,112, 91, 51, 50, 93, 0,115,108,105,100,101,114,109,105,110, 0,115,108,105,100,101,114, -109, 97,120, 0, 42, 97,100,116, 0, 42,114,101,102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, 0,101,108,101, -109,115,105,122,101, 0, 98,108,111, 99,107, 0, 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101,121, 0,115,108, -117,114,112,104, 0, 42,108,105,110,101, 0, 42,102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101,110,111, 0,115, -116, 97,114,116, 0,101,110,100, 0,112, 97,100, 49, 0,102,108, 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, 0,112, 97,100, - 91, 52, 93, 0, 42,110, 97,109,101, 0,110,108,105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108, 0, 42,115,101, -108,108, 0, 99,117,114, 99, 0,115,101,108, 99, 0,109, 97,114,107,101,114,115, 0, 42,117,110,100,111, 95, 98,117,102, 0,117, -110,100,111, 95,112,111,115, 0,117,110,100,111, 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,109,116,105,109,101, - 0,115,105,122,101, 0,115,101,101,107, 0,112, 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0, 99,108,105,112,115,116, - 97, 0, 99,108,105,112,101,110,100, 0,108,101,110,115, 0,111,114,116,104,111, 95,115, 99, 97,108,101, 0,100,114, 97,119,115, -105,122,101, 0,115,104,105,102,116,120, 0,115,104,105,102,116,121, 0, 89, 70, 95,100,111,102,100,105,115,116, 0, 42,100,111, -102, 95,111, 98, 0,102,114, 97,109,101,110,114, 0,102,114, 97,109,101,115, 0,111,102,102,115,101,116, 0,115,102,114, 97, 0, -102,105,101, 95,105,109, 97, 0, 99,121, 99,108, 0,111,107, 0,109,117,108,116,105, 95,105,110,100,101,120, 0,108, 97,121,101, -114, 0,112, 97,115,115, 0,109,101,110,117,110,114, 0, 42,115, 99,101,110,101, 0,105, 98,117,102,115, 0, 42,103,112,117,116, -101,120,116,117,114,101, 0, 42, 97,110,105,109, 0, 42,114,114, 0, 42,114,101,110,100,101,114,115, 91, 56, 93, 0,114,101,110, -100,101,114, 95,115,108,111,116, 0,108, 97,115,116, 95,114,101,110,100,101,114, 95,115,108,111,116, 0,115,111,117,114, 99,101, - 0,108, 97,115,116,102,114, 97,109,101, 0,116,112, 97,103,101,102,108, 97,103, 0,116,111,116, 98,105,110,100, 0,120,114,101, -112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119,101,110,100, 0, 98,105,110,100, 99,111,100,101, 0, 42,114,101,112, - 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108,101, 0, 42,112,114,101,118,105,101,119, 0,108, 97,115,116,117,112, -100, 97,116,101, 0,108, 97,115,116,117,115,101,100, 0, 97,110,105,109,115,112,101,101,100, 0,103,101,110, 95,120, 0,103,101, -110, 95,121, 0,103,101,110, 95,116,121,112,101, 0, 97,115,112,120, 0, 97,115,112,121, 0,116,101,120, 99,111, 0,109, 97,112, -116,111, 0,109, 97,112,116,111,110,101,103, 0, 98,108,101,110,100,116,121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116, -101,120, 0,117,118,110, 97,109,101, 91, 51, 50, 93, 0,112,114,111,106,120, 0,112,114,111,106,121, 0,112,114,111,106,122, 0, -109, 97,112,112,105,110,103, 0,111,102,115, 91, 51, 93, 0,115,105,122,101, 91, 51, 93, 0,114,111,116, 0,116,101,120,102,108, - 97,103, 0, 99,111,108,111,114,109,111,100,101,108, 0,112,109, 97,112,116,111, 0,112,109, 97,112,116,111,110,101,103, 0,110, -111,114,109, 97,112,115,112, 97, 99,101, 0,119,104,105, 99,104, 95,111,117,116,112,117,116, 0, 98,114,117,115,104, 95,109, 97, -112, 95,109,111,100,101, 0,112, 97,100, 91, 55, 93, 0,114, 0,103, 0, 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111, -108,102, 97, 99, 0,118, 97,114,102, 97, 99, 0,110,111,114,102, 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, - 97, 99, 0, 99,111,108,115,112,101, 99,102, 97, 99, 0,109,105,114,114,102, 97, 99, 0, 97,108,112,104, 97,102, 97, 99, 0,100, -105,102,102,102, 97, 99, 0,115,112,101, 99,102, 97, 99, 0,101,109,105,116,102, 97, 99, 0,104, 97,114,100,102, 97, 99, 0,114, - 97,121,109,105,114,114,102, 97, 99, 0,116,114, 97,110,115,108,102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99,111,108,101,109, -105,116,102, 97, 99, 0, 99,111,108,114,101,102,108,102, 97, 99, 0, 99,111,108,116,114, 97,110,115,102, 97, 99, 0,100,101,110, -115,102, 97, 99, 0,115, 99, 97,116,116,101,114,102, 97, 99, 0,114,101,102,108,102, 97, 99, 0,116,105,109,101,102, 97, 99, 0, -108,101,110,103,116,104,102, 97, 99, 0, 99,108,117,109,112,102, 97, 99, 0,107,105,110,107,102, 97, 99, 0,114,111,117,103,104, -102, 97, 99, 0,112, 97,100,101,110,115,102, 97, 99, 0,108,105,102,101,102, 97, 99, 0,115,105,122,101,102, 97, 99, 0,105,118, -101,108,102, 97, 99, 0,112,118,101,108,102, 97, 99, 0,115,104, 97,100,111,119,102, 97, 99, 0,122,101,110,117,112,102, 97, 99, - 0,122,101,110,100,111,119,110,102, 97, 99, 0, 98,108,101,110,100,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0, 42, -104, 97,110,100,108,101, 0, 42,112,110, 97,109,101, 0, 42,115,116,110, 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97, -114,115, 0, 42,118, 97,114,115,116,114, 0, 42,114,101,115,117,108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, - 93, 0, 40, 42,100,111,105,116, 41, 40, 41, 0, 40, 42,105,110,115,116, 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, - 42, 99, 97,108,108, 98, 97, 99,107, 41, 40, 41, 0,118,101,114,115,105,111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42, -105,109, 97, 0, 42, 99,117, 98,101, 91, 54, 93, 0,105,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, - 93, 91, 51, 93, 0,115,116,121,112,101, 0,118,105,101,119,115, 99, 97,108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101, -114,101,115, 0,100,101,112,116,104, 0,114,101, 99, 97,108, 99, 0,108, 97,115,116,115,105,122,101, 0,102, 97,108,108,111,102, -102, 95,116,121,112,101, 0,102, 97,108,108,111,102,102, 95,115,111,102,116,110,101,115,115, 0,114, 97,100,105,117,115, 0, 99, -111,108,111,114, 95,115,111,117,114, 99,101, 0,116,111,116,112,111,105,110,116,115, 0,112,100,112, 97,100, 0,112,115,121,115, - 0,112,115,121,115, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, - 0, 42,112,111,105,110,116, 95,116,114,101,101, 0, 42,112,111,105,110,116, 95,100, 97,116, 97, 0,110,111,105,115,101, 95,115, -105,122,101, 0,110,111,105,115,101, 95,100,101,112,116,104, 0,110,111,105,115,101, 95,105,110,102,108,117,101,110, 99,101, 0, -110,111,105,115,101, 95, 98, 97,115,105,115, 0,112,100,112, 97,100, 51, 91, 51, 93, 0,110,111,105,115,101, 95,102, 97, 99, 0, -115,112,101,101,100, 95,115, 99, 97,108,101, 0, 42, 99,111, 98, 97, 0,114,101,115,111,108, 91, 51, 93, 0,105,110,116,101,114, -112, 95,116,121,112,101, 0,102,105,108,101, 95,102,111,114,109, 97,116, 0,101,120,116,101,110,100, 0,115,109,111,107,101,100, - 95,116,121,112,101, 0,105,110,116, 95,109,117,108,116,105,112,108,105,101,114, 0,115,116,105,108,108, 95,102,114, 97,109,101, - 0,115,111,117,114, 99,101, 95,112, 97,116,104, 91, 50, 52, 48, 93, 0, 42,100, 97,116, 97,115,101,116, 0, 99, 97, 99,104,101, -100,102,114, 97,109,101, 0,110,111,105,115,101,115,105,122,101, 0,116,117,114, 98,117,108, 0, 98,114,105,103,104,116, 0, 99, -111,110,116,114, 97,115,116, 0,115, 97,116,117,114, 97,116,105,111,110, 0,114,102, 97, 99, 0,103,102, 97, 99, 0, 98,102, 97, - 99, 0,102,105,108,116,101,114,115,105,122,101, 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, 97,114,105,116,121, 0, -109,103, 95,111, 99,116, 97,118,101,115, 0,109,103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97,105,110, 0,100,105,115, -116, 95, 97,109,111,117,110,116, 0,110,115, 95,111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, 0,118,110, 95,119, 50, - 0,118,110, 95,119, 51, 0,118,110, 95,119, 52, 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105,115,116,109, 0,118,110, - 95, 99,111,108,116,121,112,101, 0,110,111,105,115,101,100,101,112,116,104, 0,110,111,105,115,101,116,121,112,101, 0,110,111, -105,115,101, 98, 97,115,105,115, 0,110,111,105,115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, 97,103, 0, 99,114,111, -112,120,109,105,110, 0, 99,114,111,112,121,109,105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114,111,112,121,109, 97,120, - 0,116,101,120,102,105,108,116,101,114, 0, 97,102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101,112,101, 97,116, - 0, 99,104,101, 99,107,101,114,100,105,115,116, 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42,110,111,100,101,116,114, -101,101, 0, 42,112,108,117,103,105,110, 0, 42,101,110,118, 0, 42,112,100, 0, 42,118,100, 0,117,115,101, 95,110,111,100,101, -115, 0,108,111, 99, 91, 51, 93, 0,114,111,116, 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105,110, 91, 51, 93, - 0,109, 97,120, 91, 51, 93, 0,109,111,100,101, 0,116,111,116,101,120, 0,115,104,100,119,114, 0,115,104,100,119,103, 0,115, -104,100,119, 98, 0,115,104,100,119,112, 97,100, 0,101,110,101,114,103,121, 0,100,105,115,116, 0,115,112,111,116,115,105,122, -101, 0,115,112,111,116, 98,108,101,110,100, 0,104, 97,105,110,116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, 42, 99,117,114, -102, 97,108,108,111,102,102, 0,115,104, 97,100,115,112,111,116,115,105,122,101, 0, 98,105, 97,115, 0,115,111,102,116, 0, 99, -111,109,112,114,101,115,115,116,104,114,101,115,104, 0,112, 97,100, 53, 91, 51, 93, 0, 98,117,102,115,105,122,101, 0,115, 97, -109,112, 0, 98,117,102,102,101,114,115, 0,102,105,108,116,101,114,116,121,112,101, 0, 98,117,102,102,108, 97,103, 0, 98,117, -102,116,121,112,101, 0,114, 97,121, 95,115, 97,109,112, 0,114, 97,121, 95,115, 97,109,112,121, 0,114, 97,121, 95,115, 97,109, -112,122, 0,114, 97,121, 95,115, 97,109,112, 95,116,121,112,101, 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, 97,114,101, 97, - 95,115,105,122,101, 0, 97,114,101, 97, 95,115,105,122,101,121, 0, 97,114,101, 97, 95,115,105,122,101,122, 0, 97,100, 97,112, -116, 95,116,104,114,101,115,104, 0,114, 97,121, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0,116,101,120, 97, 99,116, 0, -115,104, 97,100,104, 97,108,111,115,116,101,112, 0,115,117,110, 95,101,102,102,101, 99,116, 95,116,121,112,101, 0,115,107,121, - 98,108,101,110,100,116,121,112,101, 0,104,111,114,105,122,111,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,112,114, -101, 97,100, 0,115,117,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,117,110, 95,115,105,122,101, 0, 98, 97, 99,107, -115, 99, 97,116,116,101,114,101,100, 95,108,105,103,104,116, 0,115,117,110, 95,105,110,116,101,110,115,105,116,121, 0, 97,116, -109, 95,116,117,114, 98,105,100,105,116,121, 0, 97,116,109, 95,105,110,115, 99, 97,116,116,101,114,105,110,103, 95,102, 97, 99, -116,111,114, 0, 97,116,109, 95,101,120,116,105,110, 99,116,105,111,110, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,100,105, -115,116, 97,110, 99,101, 95,102, 97, 99,116,111,114, 0,115,107,121, 98,108,101,110,100,102, 97, 99, 0,115,107,121, 95,101,120, -112,111,115,117,114,101, 0,115,107,121, 95, 99,111,108,111,114,115,112, 97, 99,101, 0,112, 97,100, 52, 91, 54, 93, 0, 42,109, -116,101,120, 91, 49, 56, 93, 0,112,114, 95,116,101,120,116,117,114,101, 0,112, 97,100, 54, 91, 54, 93, 0,100,101,110,115,105, -116,121, 0,101,109,105,115,115,105,111,110, 0,115, 99, 97,116,116,101,114,105,110,103, 0,114,101,102,108,101, 99,116,105,111, -110, 0,101,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,116,114, 97,110,115,109,105,115,115,105,111,110, 95, 99, -111,108, 91, 51, 93, 0,114,101,102,108,101, 99,116,105,111,110, 95, 99,111,108, 91, 51, 93, 0,100,101,110,115,105,116,121, 95, -115, 99, 97,108,101, 0,100,101,112,116,104, 95, 99,117,116,111,102,102, 0, 97,115,121,109,109,101,116,114,121, 0,115,116,101, -112,115,105,122,101, 95,116,121,112,101, 0,115,104, 97,100,101,102,108, 97,103, 0,115,104, 97,100,101, 95,116,121,112,101, 0, -112,114,101, 99, 97, 99,104,101, 95,114,101,115,111,108,117,116,105,111,110, 0,115,116,101,112,115,105,122,101, 0,109,115, 95, -100,105,102,102, 0,109,115, 95,105,110,116,101,110,115,105,116,121, 0,109,115, 95,115,112,114,101, 97,100, 0,109, 97,116,101, -114,105, 97,108, 95,116,121,112,101, 0,115,112,101, 99,114, 0,115,112,101, 99,103, 0,115,112,101, 99, 98, 0,109,105,114,114, - 0,109,105,114,103, 0,109,105,114, 98, 0, 97,109, 98,114, 0, 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, 98, 0,101,109, -105,116, 0, 97,110,103, 0,115,112,101, 99,116,114, 97, 0,114, 97,121, 95,109,105,114,114,111,114, 0, 97,108,112,104, 97, 0, -114,101,102, 0,115,112,101, 99, 0,122,111,102,102,115, 0, 97,100,100, 0,116,114, 97,110,115,108,117, 99,101,110, 99,121, 0, -118,111,108, 0,102,114,101,115,110,101,108, 95,109,105,114, 0,102,114,101,115,110,101,108, 95,109,105,114, 95,105, 0,102,114, -101,115,110,101,108, 95,116,114, 97, 0,102,114,101,115,110,101,108, 95,116,114, 97, 95,105, 0,102,105,108,116,101,114, 0,116, -120, 95,108,105,109,105,116, 0,116,120, 95,102, 97,108,108,111,102,102, 0,114, 97,121, 95,100,101,112,116,104, 0,114, 97,121, - 95,100,101,112,116,104, 95,116,114, 97, 0,104, 97,114, 0,115,101,101,100, 49, 0,115,101,101,100, 50, 0,103,108,111,115,115, - 95,109,105,114, 0,103,108,111,115,115, 95,116,114, 97, 0,115, 97,109,112, 95,103,108,111,115,115, 95,109,105,114, 0,115, 97, -109,112, 95,103,108,111,115,115, 95,116,114, 97, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,109,105,114, 0, 97,100, - 97,112,116, 95,116,104,114,101,115,104, 95,116,114, 97, 0, 97,110,105,115,111, 95,103,108,111,115,115, 95,109,105,114, 0,100, -105,115,116, 95,109,105,114, 0,102, 97,100,101,116,111, 95,109,105,114, 0,115,104, 97,100,101, 95,102,108, 97,103, 0,109,111, -100,101, 95,108, 0,102,108, 97,114,101, 99, 0,115,116, 97,114, 99, 0,108,105,110,101, 99, 0,114,105,110,103, 99, 0,104, 97, -115,105,122,101, 0,102,108, 97,114,101,115,105,122,101, 0,115,117, 98,115,105,122,101, 0,102,108, 97,114,101, 98,111,111,115, -116, 0,115,116,114, 97,110,100, 95,115,116, 97, 0,115,116,114, 97,110,100, 95,101,110,100, 0,115,116,114, 97,110,100, 95,101, - 97,115,101, 0,115,116,114, 97,110,100, 95,115,117,114,102,110,111,114, 0,115,116,114, 97,110,100, 95,109,105,110, 0,115,116, -114, 97,110,100, 95,119,105,100,116,104,102, 97,100,101, 0,115,116,114, 97,110,100, 95,117,118,110, 97,109,101, 91, 51, 50, 93, - 0,115, 98,105, 97,115, 0,108, 98,105, 97,115, 0,115,104, 97,100, 95, 97,108,112,104, 97, 0,115,101,112,116,101,120, 0,114, -103, 98,115,101,108, 0,112,114, 95,116,121,112,101, 0,112,114, 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109,112, 0,109,108, - 95,102,108, 97,103, 0,100,105,102,102, 95,115,104, 97,100,101,114, 0,115,112,101, 99, 95,115,104, 97,100,101,114, 0,114,111, -117,103,104,110,101,115,115, 0,114,101,102,114, 97, 99, 0,112, 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0,100, 97,114,107, -110,101,115,115, 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42,114, 97,109,112, 95,115,112,101, 99, 0,114, 97,109,112,105,110, - 95, 99,111,108, 0,114, 97,109,112,105,110, 95,115,112,101, 99, 0,114, 97,109,112, 98,108,101,110,100, 95, 99,111,108, 0,114, - 97,109,112, 98,108,101,110,100, 95,115,112,101, 99, 0,114, 97,109,112, 95,115,104,111,119, 0,112, 97,100, 51, 0,114, 97,109, -112,102, 97, 99, 95, 99,111,108, 0,114, 97,109,112,102, 97, 99, 95,115,112,101, 99, 0, 42,103,114,111,117,112, 0,102,114,105, - 99,116,105,111,110, 0,102,104, 0,114,101,102,108,101, 99,116, 0,102,104,100,105,115,116, 0,120,121,102,114,105, 99,116, 0, -100,121,110, 97,109,111,100,101, 0,115,115,115, 95,114, 97,100,105,117,115, 91, 51, 93, 0,115,115,115, 95, 99,111,108, 91, 51, - 93, 0,115,115,115, 95,101,114,114,111,114, 0,115,115,115, 95,115, 99, 97,108,101, 0,115,115,115, 95,105,111,114, 0,115,115, -115, 95, 99,111,108,102, 97, 99, 0,115,115,115, 95,116,101,120,102, 97, 99, 0,115,115,115, 95,102,114,111,110,116, 0,115,115, -115, 95, 98, 97, 99,107, 0,115,115,115, 95,102,108, 97,103, 0,115,115,115, 95,112,114,101,115,101,116, 0,109, 97,112,116,111, - 95,116,101,120,116,117,114,101,100, 0,112, 97,100, 52, 0,103,112,117,109, 97,116,101,114,105, 97,108, 0,110, 97,109,101, 91, - 50, 53, 54, 93, 0, 42, 98, 98, 0,105, 49, 0,106, 49, 0,107, 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115,101,108, 99,111, -108, 49, 0,115,101,108, 99,111,108, 50, 0,113,117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,101,120,112,121, 0,101,120,112, -122, 0,114, 97,100, 0,114, 97,100, 50, 0,115, 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,101,108,101,109,115, 0,100,105, -115,112, 0, 42,101,100,105,116,101,108,101,109,115, 0, 42, 42,109, 97,116, 0,102,108, 97,103, 50, 0,116,111,116, 99,111,108, - 0,119,105,114,101,115,105,122,101, 0,114,101,110,100,101,114,115,105,122,101, 0,116,104,114,101,115,104, 0, 42,108, 97,115, -116,101,108,101,109, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,104,116, 0,104, 49, 0,104, - 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104,105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110,114, 0,112,110, -116,115,117, 0,112,110,116,115,118, 0,114,101,115,111,108,117, 0,114,101,115,111,108,118, 0,111,114,100,101,114,117, 0,111, -114,100,101,114,118, 0,102,108, 97,103,117, 0,102,108, 97,103,118, 0, 42,107,110,111,116,115,117, 0, 42,107,110,111,116,115, -118, 0,116,105,108,116, 95,105,110,116,101,114,112, 0,114, 97,100,105,117,115, 95,105,110,116,101,114,112, 0, 99,104, 97,114, -105,100,120, 0,107,101,114,110, 0,104, 0,110,117,114, 98, 0, 42,101,100,105,116,110,117,114, 98, 0, 42, 98,101,118,111, 98, -106, 0, 42,116, 97,112,101,114,111, 98,106, 0, 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,112, 97,116,104, 0, 42, -107,101,121, 0, 98,101,118, 0,100,114, 97,119,102,108, 97,103, 0,116,119,105,115,116, 95,109,111,100,101, 0,112, 97,100, 91, - 50, 93, 0,116,119,105,115,116, 95,115,109,111,111,116,104, 0,115,109, 97,108,108, 99, 97,112,115, 95,115, 99, 97,108,101, 0, -112, 97,116,104,108,101,110, 0, 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0,101,120,116, 50, - 0,114,101,115,111,108,117, 95,114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117, 0, 42,108, 97, -115,116,115,101,108, 0,115,112, 97, 99,101,109,111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101,100,105,115,116, - 0,115,104,101, 97,114, 0,102,115,105,122,101, 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, 0,117,108,104, -101,105,103,104,116, 0,120,111,102, 0,121,111,102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, 0, 42,115,101, -108, 98,111,120,101,115, 0, 42,101,100,105,116,102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, 42,118,102,111, -110,116, 0, 42,118,102,111,110,116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0,115,101,112, 99, -104, 97,114, 0, 99,116,105,109,101, 0,116,111,116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0,115,101,108,115, -116, 97,114,116, 0,115,101,108,101,110,100, 0, 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, 0,101,102,102, -101, 99,116, 0, 42,109,102, 97, 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109,118,101,114,116, - 0, 42,109,101,100,103,101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107,121, 0, 42,116, -101,120, 99,111,109,101,115,104, 0, 42,109,115,101,108,101, 99,116, 0, 42,101,100,105,116, 95,109,101,115,104, 0,118,100, 97, -116, 97, 0,101,100, 97,116, 97, 0,102,100, 97,116, 97, 0,116,111,116,101,100,103,101, 0,116,111,116,102, 97, 99,101, 0,116, -111,116,115,101,108,101, 99,116, 0, 97, 99,116, 95,102, 97, 99,101, 0,101,100,105,116,102,108, 97,103, 0, 99,117, 98,101,109, - 97,112,115,105,122,101, 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98,100,105,118,114, - 0,115,117, 98,115,117,114,102,116,121,112,101, 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,103,101, 0,117,118, 91, 52, - 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, 97,112, 0,118, - 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,119,101,105,103,104,116, - 0,100,101,102, 95,110,114, 0, 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0,110,111, 91, 51, - 93, 0,117,118, 91, 50, 93, 0, 99,111, 91, 50, 93, 0,105,110,100,101,120, 0,102, 0,105, 0,115, 91, 50, 53, 54, 93, 0,116, -111,116,100,105,115,112, 0, 40, 42,100,105,115,112,115, 41, 40, 41, 0,118, 91, 52, 93, 0,109,105,100, 0,118, 91, 50, 93, 0, - 42,102, 97, 99,101,115, 0, 42, 99,111,108,102, 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,118,101,114,116,115, 0,108, -101,118,101,108,115, 0,108,101,118,101,108, 95, 99,111,117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101,119,108,118,108, - 0,101,100,103,101,108,118,108, 0,112,105,110,108,118,108, 0,114,101,110,100,101,114,108,118,108, 0,117,115,101, 95, 99,111, -108, 0, 42,101,100,103,101, 95,102,108, 97,103,115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, 42,118,101,114, -116, 95,109, 97,112, 0, 42,101,100,103,101, 95,109, 97,112, 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42,111,108,100, 95, -101,100,103,101,115, 0,115,116, 97, 99,107,105,110,100,101,120, 0, 42,101,114,114,111,114, 0,109,111,100,105,102,105,101,114, - 0,115,117, 98,100,105,118, 84,121,112,101, 0,114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, 67, 97, 99,104, -101, 0, 42,109, 67, 97, 99,104,101, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,101,110,103,116,104, 0, -114, 97,110,100,111,109,105,122,101, 0,115,101,101,100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116, 97,114,116, 95, 99, 97, -112, 0, 42,101,110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, 95,111, 98, 0, -111,102,102,115,101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115,116, 0,102,105, -116, 95,116,121,112,101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105,115, 0,116,111, -108,101,114, 97,110, 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103,108,101, 0,118, - 97,108,117,101, 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, 0,101, 95,102, -108, 97,103,115, 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, 91, 51, 50, 93, - 0, 42,100,111,109, 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,116,105,109,101, 0, 42,116,101,120,116,117, -114,101, 0,115,116,114,101,110,103,116,104, 0,100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118,101,108, 0,116, -101,120,109, 97,112,112,105,110,103, 0, 42,109, 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101,114, 95,110, 97, -109,101, 91, 51, 50, 93, 0,117,118,108, 97,121,101,114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,116,111,114,115, 91, 49, - 48, 93, 0, 42,105,109, 97,103,101, 0,110,117,109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112,101, 99,116,120, - 0, 97,115,112,101, 99,116,121, 0,115, 99, 97,108,101,120, 0,115, 99, 97,108,101,121, 0,112,101,114, 99,101,110,116, 0,102, - 97, 99,101, 67,111,117,110,116, 0,102, 97, 99, 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99,101,110,116,101, -114, 0,115,116, 97,114,116,120, 0,115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111,119, 0,115,112, -101,101,100, 0,100, 97,109,112, 0,102, 97,108,108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105,102,101,116,105, -109,101, 0,100,101,102,111,114,109,102,108, 97,103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, 0,115,117, 98, -116, 97,114,103,101,116, 91, 51, 50, 93, 0,112, 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116, 91, - 51, 93, 0, 42,105,110,100,101,120, 97,114, 0,116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, 99,108,111,116, -104, 79, 98,106,101, 99,116, 0, 42,115,105,109, 95,112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114,109,115, 0, 42, -112,111,105,110,116, 95, 99, 97, 99,104,101, 0,112,116, 99, 97, 99,104,101,115, 0, 42,120, 0, 42,120,110,101,119, 0, 42,120, -111,108,100, 0, 42, 99,117,114,114,101,110,116, 95,120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, 0, 42, 99,117, -114,114,101,110,116, 95,118, 0, 42,109,102, 97, 99,101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109,102, 97, 99,101, -115, 0, 42, 98,118,104,116,114,101,101, 0, 42,118, 0, 42,100,109, 0, 99,102,114, 97, 0,111,112,101,114, 97,116,105,111,110, - 0,118,101,114,116,101,120, 0,116,111,116,105,110,102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,122,101, 0, 42, 98, -105,110,100,105,110,102,108,117,101,110, 99,101,115, 0, 42, 98,105,110,100,111,102,102,115,101,116,115, 0, 42, 98,105,110,100, - 99, 97,103,101, 99,111,115, 0,116,111,116, 99, 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,100, 0, 42,100,121, -110,105,110,102,108,117,101,110, 99,101,115, 0, 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0,100,121,110,103, -114,105,100,115,105,122,101, 0,100,121,110, 99,101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108,108,119,105,100, -116,104, 0, 98,105,110,100,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42, 98,105,110,100,119,101,105,103,104,116,115, 0, 42, 98, -105,110,100, 99,111,115, 0, 40, 42, 98,105,110,100,102,117,110, 99, 41, 40, 41, 0, 42,112,115,121,115, 0,116,111,116,100,109, -118,101,114,116, 0,116,111,116,100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,111,115,105,116,105,111, -110, 0,114, 97,110,100,111,109, 95,112,111,115,105,116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103,114,111,117,112, - 0,112,114,111,116,101, 99,116, 0,108,118,108, 0,115, 99,117,108,112,116,108,118,108, 0,116,111,116,108,118,108, 0,115,105, -109,112,108,101, 0, 42,102,115,115, 0, 42,116, 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, 0,118,103,114, -111,117,112, 95,110, 97,109,101, 91, 51, 50, 93, 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, 84,121,112,101, - 0,115,104,114,105,110,107, 79,112,116,115, 0,112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, 76,101,118,101, -108,115, 0, 42,111,114,105,103,105,110, 0,102, 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111,114,105,103,105, -110, 79,112,116,115, 0,111,102,102,115,101,116, 95,102, 97, 99, 0, 99,114,101, 97,115,101, 95,105,110,110,101,114, 0, 99,114, -101, 97,115,101, 95,111,117,116,101,114, 0, 99,114,101, 97,115,101, 95,114,105,109, 0, 42,111, 98, 95, 97,120,105,115, 0,115, -116,101,112,115, 0,114,101,110,100,101,114, 95,115,116,101,112,115, 0,105,116,101,114, 0,115, 99,114,101,119, 95,111,102,115, - 0, 97,110,103,108,101, 0,112,110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111,112,110,116,115, -119, 0,116,121,112,101,117, 0,116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, 0,100,117, 0, -100,118, 0,100,119, 0, 42,100,101,102, 0, 42,108, 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, 97,116, 91, 52, - 93, 91, 52, 93, 0, 42,101,100,105,116,108, 97,116,116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99,117,108,112,116, - 0,112, 97,114,116,121,112,101, 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115,117, 98,115,116, -114, 91, 51, 50, 93, 0, 42,116,114, 97, 99,107, 0, 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103,114,111,117,112, - 0, 42,112,114,111,120,121, 95,102,114,111,109, 0, 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, 98, 0, 42,112, -111,115,101, 0, 42,103,112,100, 0, 97,118,115, 0, 42,109,112, 97,116,104, 0, 99,111,110,115,116,114, 97,105,110,116, 67,104, - 97,110,110,101,108,115, 0,100,101,102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115, 0,114,101,115,116,111,114,101, - 95,109,111,100,101, 0, 42,109, 97,116, 98,105,116,115, 0, 97, 99,116, 99,111,108, 0,100,108,111, 99, 91, 51, 93, 0,111,114, -105,103, 91, 51, 93, 0,100,115,105,122,101, 91, 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116, 91, 52, 93, 0, -114,111,116, 65,120,105,115, 91, 51, 93, 0,100,114,111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110,103,108,101, 0, -100,114,111,116, 65,110,103,108,101, 0,111, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105,110,118, 91, 52, - 93, 91, 52, 93, 0,108, 97,121, 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,112,114,111,116,101, - 99,116,102,108, 97,103, 0,116,114, 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102,108, 97,103, 0, -105,112,111,102,108, 97,103, 0,105,112,111,119,105,110, 0,115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105,115,102,108, 97, -103, 0, 98,111,117,110,100,116,121,112,101, 0,100,117,112,111,110, 0,100,117,112,111,102,102, 0,100,117,112,115,116, 97, 0, -100,117,112,101,110,100, 0,115,102, 0,109, 97,115,115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116,105, 97, 0,102, -111,114,109,102, 97, 99,116,111,114, 0,114,100, 97,109,112,105,110,103, 0,109, 97,114,103,105,110, 0,109, 97,120, 95,118,101, -108, 0,109,105,110, 95,118,101,108, 0,109, 95, 99,111,110,116, 97, 99,116, 80,114,111, 99,101,115,115,105,110,103, 84,104,114, -101,115,104,111,108,100, 0,114,111,116,109,111,100,101, 0,100,116, 0,100,116,120, 0,101,109,112,116,121, 95,100,114, 97,119, -116,121,112,101, 0,112, 97,100, 49, 91, 51, 93, 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0,100,117,112,102, - 97, 99,101,115, 99, 97, 0,112,114,111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108,101,114,115, 0, - 97, 99,116,117, 97,116,111,114,115, 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, 97,109,101,102, -108, 97,103, 0,103, 97,109,101,102,108, 97,103, 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97,103, 0, 97,110, -105,115,111,116,114,111,112,105, 99, 70,114,105, 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97,105,110,116,115, - 0,110,108, 97,115,116,114,105,112,115, 0,104,111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115,116,101,109, 0, - 42,115,111,102,116, 0, 42,100,117,112, 95,103,114,111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97,103, 0,114,101, -115,116,114,105, 99,116,102,108, 97,103, 0,115,104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, 0,114,101, 99, - 97,108, 99,111, 0, 98,111,100,121, 95,116,121,112,101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, - 0, 42,100,101,114,105,118,101,100, 68,101,102,111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97,108, 0,108, 97, -115,116, 68, 97,116, 97, 77, 97,115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0,103,112,117,108, - 97,109,112, 0,112, 99, 95,105,100,115, 0, 42,100,117,112,108,105,108,105,115,116, 0, 99,117,114,105,110,100,101,120, 0, 97, - 99,116,105,118,101, 0,111,114,105,103,108, 97,121, 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116,101,100, 0,111, -109, 97,116, 91, 52, 93, 91, 52, 93, 0,111,114, 99,111, 91, 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111,114, 99,101,102, -105,101,108,100, 0,115,104, 97,112,101, 0,116,101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110,107, 95, 97,120, -105,115, 0,122,100,105,114, 0,102, 95,115,116,114,101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95,102,108,111,119, - 0,102, 95,115,105,122,101, 0,102, 95,112,111,119,101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100,105,115,116, 0, -102, 95,112,111,119,101,114, 95,114, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,100, 0,112,100,101,102, 95,100, 97,109, -112, 0,112,100,101,102, 95,114,100, 97,109,112, 0,112,100,101,102, 95,112,101,114,109, 0,112,100,101,102, 95,102,114,105, 99, -116, 0,112,100,101,102, 95,114,102,114,105, 99,116, 0,112,100,101,102, 95,115,116,105, 99,107,110,101,115,115, 0, 97, 98,115, -111,114,112,116,105,111,110, 0,112,100,101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105,102,116, 0,112, -100,101,102, 95,115, 98,111,102,116, 0, 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111,119, 0,107,105, -110,107, 95,102,114,101,113, 0,107,105,110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0,102,114,101,101, - 95,101,110,100, 0,116,101,120, 95,110, 97, 98,108, 97, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0,119,101,105,103, -104,116, 91, 49, 51, 93, 0,103,108,111, 98, 97,108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93, 0,102,114, 97,109, -101, 0,116,111,116,112,111,105,110,116, 0,100, 97,116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,120, 95, 97,114,114, - 97,121, 0, 42,100, 97,116, 97, 91, 56, 93, 0, 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, 0,115,105,109,102,114, 97,109, -101, 0,115,116, 97,114,116,102,114, 97,109,101, 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, 97,109,101, 0, -108, 97,115,116, 95,101,120, 97, 99,116, 0,110, 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,109,101, 91, 54, 52, - 93, 0,105,110,102,111, 91, 54, 52, 93, 0,112, 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97, 99,104,101, 0, 42, -101,100,105,116, 0, 40, 42,102,114,101,101, 95,101,100,105,116, 41, 40, 41, 0,108,105,110, 83,116,105,102,102, 0, 97,110,103, - 83,116,105,102,102, 0,118,111,108,117,109,101, 0,118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,116,101,114, 97,116, -105,111,110,115, 0,100,105,116,101,114, 97,116,105,111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,115, 0,107, 83, 82, - 72, 82, 95, 67, 76, 0,107, 83, 75, 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82, 95, 83, 80, 76, 84, - 95, 67, 76, 0,107, 83, 75, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 86, 67, 70, - 0,107, 68, 80, 0,107, 68, 71, 0,107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77, 84, 0,107, 67, 72, - 82, 0,107, 75, 72, 82, 0,107, 83, 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,108, 97,103,115, 0, -110,117,109, 99,108,117,115,116,101,114,105,116,101,114, 97,116,105,111,110,115, 0,119,101,108,100,105,110,103, 0,116,111,116, -115,112,114,105,110,103, 0, 42, 98,112,111,105,110,116, 0, 42, 98,115,112,114,105,110,103, 0,109,115,103, 95,108,111, 99,107, - 0,109,115,103, 95,118, 97,108,117,101, 0,110,111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71, 95, 77, 97,115,115, - 91, 51, 50, 93, 0,103,114, 97,118, 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, 0,112,104,121, -115,105, 99,115, 95,115,112,101,101,100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114,105, 99,116, 0, -109,105,110,103,111, 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116,103,114,111,117, -112, 0,110, 97,109,101,100, 86, 71, 95, 83,111,102,116,103,111, 97,108, 91, 51, 50, 93, 0,102,117,122,122,121,110,101,115,115, - 0,105,110,115,112,114,105,110,103, 0,105,110,102,114,105, 99,116, 0,110, 97,109,101,100, 86, 71, 95, 83,112,114,105,110,103, - 95, 75, 91, 51, 50, 93, 0,101,102,114, 97, 0,105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115,111,108,118,101, -114,102,108, 97,103,115, 0, 42, 42,107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, 99,111,110,100, -115,112,114,105,110,103, 0, 99,111,108, 98, 97,108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108,115,116,105,102, -102, 0,115, 98, 99, 95,109,111,100,101, 0, 97,101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, 0,109, 97,120, -108,111,111,112,115, 0, 99,104,111,107,101, 0,115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, 99, 0,115,112, -114,105,110,103,112,114,101,108,111, 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116,105,102,102, 0, -105,110,112,117,115,104, 0, 42,112,111,105,110,116, 99, 97, 99,104,101, 0, 42,101,102,102,101, 99,116,111,114, 95,119,101,105, -103,104,116,115, 0,108, 99,111,109, 91, 51, 93, 0,108,114,111,116, 91, 51, 93, 91, 51, 93, 0,108,115, 99, 97,108,101, 91, 51, - 93, 91, 51, 93, 0,112, 97,100, 52, 91, 52, 93, 0, 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,101,100,111, -112,116,105,111,110,115, 0,114,101,115,111,108,117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119,114,101,115,120, -121,122, 0,114,101, 97,108,115,105,122,101, 0,103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114,101,110,100,101, -114, 68,105,115,112,108, 97,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0,118,105,115, 99, -111,115,105,116,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0,103,114, 97,118, -120, 0,103,114, 97,118,121, 0,103,114, 97,118,122, 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, 69,110,100, 0, - 98, 97,107,101, 83,116, 97,114,116, 0, 98, 97,107,101, 69,110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82,101,102,105,110, -101, 0,105,110,105, 86,101,108,120, 0,105,110,105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111,114,103, 77,101, -115,104, 0, 42,109,101,115,104, 83,117,114,102, 97, 99,101, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102,100, 97,116, 97, - 80, 97,116,104, 91, 50, 52, 48, 93, 0, 98, 98, 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, 51, 93, 0,116, -121,112,101, 70,108, 97,103,115, 0,100,111,109, 97,105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117,109,101, 73,110, -105,116, 84,121,112,101, 0,112, 97,114,116, 83,108,105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116,101, 84,114, 97, - 99,101,114,115, 0,103,101,110,101,114, 97,116,101, 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, 99,101, 83,109, -111,111,116,104,105,110,103, 0,115,117,114,102, 97, 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, 99,108,101, 73, -110,102, 83,105,122,101, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70,105,101,108,100, - 83,105,122,101, 0, 42,109,101,115,104, 83,117,114,102, 78,111,114,109, 97,108,115, 0, 99,112,115, 84,105,109,101, 83,116, 97, -114,116, 0, 99,112,115, 84,105,109,101, 69,110,100, 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116,114, 97, 99,116, -102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97,100,105,117,115, - 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99,105,116,121,102, -111,114, 99,101, 82, 97,100,105,117,115, 0,108, 97,115,116,103,111,111,100,102,114, 97,109,101, 0,109,105,115,116,121,112,101, - 0,104,111,114,114, 0,104,111,114,103, 0,104,111,114, 98, 0,104,111,114,107, 0,122,101,110,114, 0,122,101,110,103, 0,122, -101,110, 98, 0,122,101,110,107, 0, 97,109, 98,107, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101, -120,112, 0,114, 97,110,103,101, 0,108,105,110,102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97, - 99,116,105,118,105,116,121, 66,111,120, 82, 97,100,105,117,115, 0,115,107,121,116,121,112,101, 0,111, 99, 99,108,117,115,105, -111,110, 82,101,115, 0,112,104,121,115,105, 99,115, 69,110,103,105,110,101, 0,116,105, 99,114, 97,116,101, 0,109, 97,120,108, -111,103,105, 99,115,116,101,112, 0,112,104,121,115,117, 98,115,116,101,112, 0,109, 97,120,112,104,121,115,116,101,112, 0,109, -105,115,105, 0,109,105,115,116,115,116, 97, 0,109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0,115,116, 97,114, -114, 0,115,116, 97,114,103, 0,115,116, 97,114, 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, 0,115,116, 97, -114,109,105,110,100,105,115,116, 0,115,116, 97,114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105,115,101, 0,100, -111,102,115,116, 97, 0,100,111,102,101,110,100, 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97,111,100,105,115, -116, 0, 97,111,100,105,115,116,102, 97, 99, 0, 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, 97,111,109,111, -100,101, 0, 97,111,115, 97,109,112, 0, 97,111,109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97,100, 97,112,116, - 95,116,104,114,101,115,104, 0, 97,111, 95, 97,100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97,111, 95, 97,112, -112,114,111,120, 95,101,114,114,111,114, 0, 97,111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116,105,111,110, 0, - 97,111, 95,105,110,100,105,114,101, 99,116, 95,101,110,101,114,103,121, 0, 97,111, 95,101,110,118, 95,101,110,101,114,103,121, - 0, 97,111, 95,112, 97,100, 50, 0, 97,111, 95,105,110,100,105,114,101, 99,116, 95, 98,111,117,110, 99,101,115, 0, 97,111, 95, -112, 97,100, 0, 97,111, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, 95,109,101,116, -104,111,100, 0, 97,111, 95, 97,112,112,114,111,120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101,114,101, 0, 42, - 97,111,116, 97, 98,108,101,115, 0,112, 97,100, 91, 51, 93, 0,115,101,108, 99,111,108, 0,115,120, 0,115,121, 0, 42,108,112, - 70,111,114,109, 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, 98, 70,111,114,109, 97,116, 0, 99, 98, 80, 97,114,109,115, - 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108,101,114, 0,100,119, 75,101,121, 70,114, 97,109,101, 69,118, -101,114,121, 0,100,119, 81,117, 97,108,105,116,121, 0,100,119, 66,121,116,101,115, 80,101,114, 83,101, 99,111,110,100, 0,100, -119, 70,108, 97,103,115, 0,100,119, 73,110,116,101,114,108,101, 97,118,101, 69,118,101,114,121, 0, 97,118,105, 99,111,100,101, - 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114,109,115, 0, 42,112, 97,100, 0, 99,100, 83,105,122,101, 0, -113,116, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 99,111,100,101, 99, 84,121,112,101, 0, 99,111,100,101, 99, - 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0, 99,111,100,101, 99, 0, 99,111,100,101, 99, 70,108, 97,103,115, 0, - 99,111,108,111,114, 68,101,112,116,104, 0, 99,111,100,101, 99, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0, -109,105,110, 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 84,101,109,112,111,114, 97,108, 81,117, 97, -108,105,116,121, 0,107,101,121, 70,114, 97,109,101, 82, 97,116,101, 0, 98,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 99, -111,100,101, 99, 84,121,112,101, 0, 97,117,100,105,111, 83, 97,109,112,108,101, 82, 97,116,101, 0, 97,117,100,105,111, 66,105, -116, 68,101,112,116,104, 0, 97,117,100,105,111, 67,104, 97,110,110,101,108,115, 0, 97,117,100,105,111, 67,111,100,101, 99, 70, -108, 97,103,115, 0, 97,117,100,105,111, 66,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 95, 99,111,100,101, 99, 0,118,105, -100,101,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, -109,105,120,114, 97,116,101, 0, 97,117,100,105,111, 95,118,111,108,117,109,101, 0,103,111,112, 95,115,105,122,101, 0,114, 99, - 95,109,105,110, 95,114, 97,116,101, 0,114, 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102,102,101,114, 95, -115,105,122,101, 0,109,117,120, 95,112, 97, 99,107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116,101, 0,109,105, -120,114, 97,116,101, 0,109, 97,105,110, 0,115,112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,111,112,112,108,101, -114, 95,102, 97, 99,116,111,114, 0,100,105,115,116, 97,110, 99,101, 95,109,111,100,101,108, 0, 42,109, 97,116, 95,111,118,101, -114,114,105,100,101, 0, 42,108,105,103,104,116, 95,111,118,101,114,114,105,100,101, 0,108, 97,121, 95,122,109, 97,115,107, 0, -108, 97,121,102,108, 97,103, 0,112, 97,115,115,102,108, 97,103, 0,112, 97,115,115, 95,120,111,114, 0, 42, 97,118,105, 99,111, -100,101, 99,100, 97,116, 97, 0, 42,113,116, 99,111,100,101, 99,100, 97,116, 97, 0,113,116, 99,111,100,101, 99,115,101,116,116, -105,110,103,115, 0,102,102, 99,111,100,101, 99,100, 97,116, 97, 0,115,117, 98,102,114, 97,109,101, 0,112,115,102,114, 97, 0, -112,101,102,114, 97, 0,105,109, 97,103,101,115, 0,102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97,100,115, 0,102,114, - 97,109,101,108,101,110, 0, 98,108,117,114,102, 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101,100,103,101, 66, - 0,102,117,108,108,115, 99,114,101,101,110, 0,120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113,112,108, 97,121, - 0, 97,116,116,114,105, 98, 0,114,116, 50, 0,102,114, 97,109,101, 95,115,116,101,112, 0,115,116,101,114,101,111,109,111,100, -101, 0,100,105,109,101,110,115,105,111,110,115,112,114,101,115,101,116, 0,109, 97,120,105,109,115,105,122,101, 0,120,115, 99, -104, 0,121,115, 99,104, 0,120,112, 97,114,116,115, 0,121,112, 97,114,116,115, 0,119,105,110,112,111,115, 0,112,108, 97,110, -101,115, 0,105,109,116,121,112,101, 0,115,117, 98,105,109,116,121,112,101, 0,113,117, 97,108,105,116,121, 0,100,105,115,112, -108, 97,121,109,111,100,101, 0,114,112, 97,100, 49, 0,114,112, 97,100, 50, 0,115, 99,101,109,111,100,101, 0,114, 97,121,116, -114, 97, 99,101, 95,111,112,116,105,111,110,115, 0,114, 97,121,116,114, 97, 99,101, 95,115,116,114,117, 99,116,117,114,101, 0, -114,101,110,100,101,114,101,114, 0,111, 99,114,101,115, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, 0,102,114,115, - 95,115,101, 99, 0,101,100,103,101,105,110,116, 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100,105,115,112,114, -101, 99,116, 0,108, 97,121,101,114,115, 0, 97, 99,116,108, 97,121, 0,109, 98,108,117,114, 95,115, 97,109,112,108,101,115, 0, -120, 97,115,112, 0,121, 97,115,112, 0,102,114,115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, 0, 99,111,108, -111,114, 95,109,103,116, 95,102,108, 97,103, 0,112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117,101, 0,112,111, -115,116,115, 97,116, 0,100,105,116,104,101,114, 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95,111,115, 97, 0, - 98, 97,107,101, 95,102,105,108,116,101,114, 0, 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102,108, 97,103, 0, - 98, 97,107,101, 95,110,111,114,109, 97,108, 95,115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95,115,112,108,105, -116, 0, 98, 97,107,101, 95,109, 97,120,100,105,115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, 0, 98, 97,107, -101, 95,112, 97,100, 0, 98, 97, 99,107, 98,117,102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0,115,116, 97,109, -112, 0,115,116, 97,109,112, 95,102,111,110,116, 95,105,100, 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, 49, 54, 48, 93, - 0,102,103, 95,115,116, 97,109,112, 91, 52, 93, 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, 0,115,101,113, 95,112,114,101, -118, 95,116,121,112,101, 0,115,101,113, 95,114,101,110,100, 95,116,121,112,101, 0,115,101,113, 95,102,108, 97,103, 0,112, 97, -100, 53, 91, 53, 93, 0,115,105,109,112,108,105,102,121, 95,102,108, 97,103, 0,115,105,109,112,108,105,102,121, 95,115,117, 98, -115,117,114,102, 0,115,105,109,112,108,105,102,121, 95,115,104, 97,100,111,119,115, 97,109,112,108,101,115, 0,115,105,109,112, -108,105,102,121, 95,112, 97,114,116,105, 99,108,101,115, 0,115,105,109,112,108,105,102,121, 95, 97,111,115,115,115, 0, 99,105, -110,101,111,110,119,104,105,116,101, 0, 99,105,110,101,111,110, 98,108, 97, 99,107, 0, 99,105,110,101,111,110,103, 97,109,109, - 97, 0,106,112, 50, 95,112,114,101,115,101,116, 0,106,112, 50, 95,100,101,112,116,104, 0,114,112, 97,100, 51, 0,100,111,109, -101,114,101,115, 0,100,111,109,101,109,111,100,101, 0,100,111,109,101, 97,110,103,108,101, 0,100,111,109,101,116,105,108,116, - 0,100,111,109,101,114,101,115, 98,117,102, 0, 42,100,111,109,101,116,101,120,116, 0,101,110,103,105,110,101, 91, 51, 50, 93, - 0,112, 97,114,116,105, 99,108,101, 95,112,101,114, 99, 0,115,117, 98,115,117,114,102, 95,109, 97,120, 0,115,104, 97,100, 98, -117,102,115, 97,109,112,108,101, 95,109, 97,120, 0, 97,111, 95,101,114,114,111,114, 0,116,105,108,116, 0,114,101,115, 98,117, -102, 0, 42,119, 97,114,112,116,101,120,116, 0, 99,111,108, 91, 51, 93, 0,109, 97,116,109,111,100,101, 0,102,114, 97,109,105, -110,103, 0,114,116, 49, 0,100,111,109,101, 0,115,116,101,114,101,111,102,108, 97,103, 0,101,121,101,115,101,112, 97,114, 97, -116,105,111,110, 0, 42, 99, 97,109,101,114, 97, 0, 42, 42, 98,114,117,115,104,101,115, 0, 97, 99,116,105,118,101, 95, 98,114, -117,115,104, 95,105,110,100,101,120, 0, 98,114,117,115,104, 95, 99,111,117,110,116, 0, 42,112, 97,105,110,116, 95, 99,117,114, -115,111,114, 0,112, 97,105,110,116, 95, 99,117,114,115,111,114, 95, 99,111,108, 91, 52, 93, 0,112, 97,105,110,116, 0,115,101, - 97,109, 95, 98,108,101,101,100, 0,110,111,114,109, 97,108, 95, 97,110,103,108,101, 0,115, 99,114,101,101,110, 95,103,114, 97, - 98, 95,115,105,122,101, 91, 50, 93, 0, 42,112, 97,105,110,116, 99,117,114,115,111,114, 0,105,110,118,101,114,116, 0,116,111, -116,114,101,107,101,121, 0,116,111,116, 97,100,100,107,101,121, 0, 98,114,117,115,104,116,121,112,101, 0, 98,114,117,115,104, - 91, 55, 93, 0,101,109,105,116,116,101,114,100,105,115,116, 0,115,101,108,101, 99,116,109,111,100,101, 0,101,100,105,116,116, -121,112,101, 0,100,114, 97,119, 95,115,116,101,112, 0,102, 97,100,101, 95,102,114, 97,109,101,115, 0,110, 97,109,101, 91, 51, - 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, 93, 0,114, 97,100,105, 97,108, 95,115,121,109,109, 91, 51, 93, 0,108, 97,115,116, - 95,120, 0,108, 97,115,116, 95,121, 0,108, 97,115,116, 95, 97,110,103,108,101, 0,100,114, 97,119, 95, 97,110, 99,104,111,114, -101,100, 0, 97,110, 99,104,111,114,101,100, 95,115,105,122,101, 0, 97,110, 99,104,111,114,101,100, 95,108,111, 99, 97,116,105, -111,110, 91, 51, 93, 0, 97,110, 99,104,111,114,101,100, 95,105,110,105,116,105, 97,108, 95,109,111,117,115,101, 91, 50, 93, 0, -100,114, 97,119, 95,112,114,101,115,115,117,114,101, 0,112,114,101,115,115,117,114,101, 95,118, 97,108,117,101, 0,115,112,101, - 99,105, 97,108, 95,114,111,116, 97,116,105,111,110, 0, 42,118,112, 97,105,110,116, 95,112,114,101,118, 0, 42,119,112, 97,105, -110,116, 95,112,114,101,118, 0, 42,118,112, 97,105,110,116, 0, 42,119,112, 97,105,110,116, 0,118,103,114,111,117,112, 95,119, -101,105,103,104,116, 0, 99,111,114,110,101,114,116,121,112,101, 0,101,100,105,116, 98,117,116,102,108, 97,103, 0,106,111,105, -110,116,114,105,108,105,109,105,116, 0,100,101,103,114, 0,116,117,114,110, 0,101,120,116,114, 95,111,102,102,115, 0,100,111, -117, 98,108,105,109,105,116, 0,110,111,114,109, 97,108,115,105,122,101, 0, 97,117,116,111,109,101,114,103,101, 0,115,101,103, -109,101,110,116,115, 0,114,105,110,103,115, 0,118,101,114,116,105, 99,101,115, 0,117,110,119,114, 97,112,112,101,114, 0,117, -118, 99, 97,108, 99, 95,114, 97,100,105,117,115, 0,117,118, 99, 97,108, 99, 95, 99,117, 98,101,115,105,122,101, 0,117,118, 99, - 97,108, 99, 95,109, 97,114,103,105,110, 0,117,118, 99, 97,108, 99, 95,109, 97,112,100,105,114, 0,117,118, 99, 97,108, 99, 95, -109, 97,112, 97,108,105,103,110, 0,117,118, 99, 97,108, 99, 95,102,108, 97,103, 0,117,118, 95,102,108, 97,103, 0,117,118, 95, -115,101,108,101, 99,116,109,111,100,101, 0,117,118, 95,112, 97,100, 91, 50, 93, 0, 97,117,116,111,105,107, 95, 99,104, 97,105, -110,108,101,110, 0,105,109, 97,112, 97,105,110,116, 0,112, 97,114,116,105, 99,108,101, 0,112,114,111,112,111,114,116,105,111, -110, 97,108, 95,115,105,122,101, 0,115,101,108,101, 99,116, 95,116,104,114,101,115,104, 0, 99,108,101, 97,110, 95,116,104,114, -101,115,104, 0, 97,117,116,111,107,101,121, 95,109,111,100,101, 0, 97,117,116,111,107,101,121, 95,102,108, 97,103, 0,114,101, -116,111,112,111, 95,109,111,100,101, 0,114,101,116,111,112,111, 95,112, 97,105,110,116, 95,116,111,111,108, 0,108,105,110,101, - 95,100,105,118, 0,101,108,108,105,112,115,101, 95,100,105,118, 0,114,101,116,111,112,111, 95,104,111,116,115,112,111,116, 0, -109,117,108,116,105,114,101,115, 95,115,117, 98,100,105,118, 95,116,121,112,101, 0,115,107,103,101,110, 95,114,101,115,111,108, -117,116,105,111,110, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,105,110,116,101,114,110, 97,108, 0,115, -107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,101,120,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,108,101, -110,103,116,104, 95,114, 97,116,105,111, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,108,105,109,105,116, 0,115,107, -103,101,110, 95, 97,110,103,108,101, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 99,111,114,114,101,108, 97,116,105,111, -110, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,115,121,109,109,101,116,114,121, 95,108,105,109,105,116, 0,115,107,103, -101,110, 95,114,101,116, 97,114,103,101,116, 95, 97,110,103,108,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114, -101,116, 97,114,103,101,116, 95,108,101,110,103,116,104, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97, -114,103,101,116, 95,100,105,115,116, 97,110, 99,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,111,112,116,105,111, -110,115, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 95,112, - 97,115,115,101,115, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110,115, 91, 51, 93, 0,115,107,103,101, -110, 95,109,117,108,116,105, 95,108,101,118,101,108, 0, 42,115,107,103,101,110, 95,116,101,109,112,108, 97,116,101, 0, 98,111, -110,101, 95,115,107,101,116, 99,104,105,110,103, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 95, 99,111,110,118, -101,114,116, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110, 95,110,117,109, 98,101,114, 0,115,107,103, -101,110, 95,114,101,116, 97,114,103,101,116, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,114,101,116, 97,114,103, -101,116, 95,114,111,108,108, 0,115,107,103,101,110, 95,115,105,100,101, 95,115,116,114,105,110,103, 91, 56, 93, 0,115,107,103, -101,110, 95,110,117,109, 95,115,116,114,105,110,103, 91, 56, 93, 0,101,100,103,101, 95,109,111,100,101, 0,115,110, 97,112, 95, -109,111,100,101, 0,115,110, 97,112, 95,102,108, 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0,112,114,111,112,111, -114,116,105,111,110, 97,108, 0,112,114,111,112, 95,109,111,100,101, 0, 97,117,116,111, 95,110,111,114,109, 97,108,105,122,101, - 0,105,110,116,112, 97,100, 0,116,111,116,111, 98,106, 0,116,111,116,108, 97,109,112, 0,116,111,116,111, 98,106,115,101,108, - 0,116,111,116, 99,117,114,118,101, 0,116,111,116,109,101,115,104, 0,116,111,116, 97,114,109, 97,116,117,114,101, 0,115, 99, - 97,108,101, 95,108,101,110,103,116,104, 0,115,121,115,116,101,109, 0,103,114, 97,118,105,116,121, 91, 51, 93, 0,113,117,105, - 99,107, 95, 99, 97, 99,104,101, 95,115,116,101,112, 0, 42,119,111,114,108,100, 0, 42,115,101,116, 0, 98, 97,115,101, 0, 42, - 98, 97,115, 97, 99,116, 0, 42,111, 98,101,100,105,116, 0, 99,117,114,115,111,114, 91, 51, 93, 0,116,119, 99,101,110,116, 91, - 51, 93, 0,116,119,109,105,110, 91, 51, 93, 0,116,119,109, 97,120, 91, 51, 93, 0,108, 97,121, 97, 99,116, 0, 42,101,100, 0, - 42,116,111,111,108,115,101,116,116,105,110,103,115, 0, 42,115,116, 97,116,115, 0, 97,117,100,105,111, 0,116,114, 97,110,115, -102,111,114,109, 95,115,112, 97, 99,101,115, 0, 42,115,111,117,110,100, 95,115, 99,101,110,101, 0, 42,115,111,117,110,100, 95, -115, 99,101,110,101, 95,104, 97,110,100,108,101, 0, 42,102,112,115, 95,105,110,102,111, 0, 42,116,104,101, 68, 97,103, 0,100, - 97,103,105,115,118, 97,108,105,100, 0,100, 97,103,102,108, 97,103,115, 0,106,117,109,112,102,114, 97,109,101, 0,112, 97,100, - 53, 0, 97, 99,116,105,118,101, 95,107,101,121,105,110,103,115,101,116, 0,107,101,121,105,110,103,115,101,116,115, 0,103,109, - 0,117,110,105,116, 0,112,104,121,115,105, 99,115, 95,115,101,116,116,105,110,103,115, 0, 98,108,101,110,100, 0,118,105,101, -119, 0,119,105,110,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101, -119,105,110,118, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,105,110,118, - 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116,111, 98, - 91, 52, 93, 91, 52, 93, 0,116,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,122, -102, 97, 99, 0, 99, 97,109,100,120, 0, 99, 97,109,100,121, 0,112,105,120,115,105,122,101, 0, 99, 97,109,122,111,111,109, 0, -118,105,101,119, 98,117,116, 0,116,119,100,114, 97,119,102,108, 97,103, 0,114,102,108, 97,103, 0,118,105,101,119,108,111, 99, -107, 0,112,101,114,115,112, 0, 99,108,105,112, 91, 54, 93, 91, 52, 93, 0, 99,108,105,112, 95,108,111, 99, 97,108, 91, 54, 93, - 91, 52, 93, 0, 42, 99,108,105,112, 98, 98, 0, 42,108,111, 99, 97,108,118,100, 0, 42,114,105, 0, 42,114,101,116,111,112,111, - 95,118,105,101,119, 95,100, 97,116, 97, 0, 42,100,101,112,116,104,115, 0, 42,115,109,115, 0, 42,115,109,111,111,116,104, 95, -116,105,109,101,114, 0,108,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,108,112,101,114,115,112, 0,108,118,105,101,119, 0, -103,114,105,100,118,105,101,119, 0,116,119, 97,110,103,108,101, 91, 51, 93, 0,112, 97,100,102, 0,114,101,103,105,111,110, 98, - 97,115,101, 0,115,112, 97, 99,101,116,121,112,101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, 99,107,104, 97, -110,100,108,101,114, 91, 56, 93, 0,108, 97,121, 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0, 98,103,112, -105, 99, 98, 97,115,101, 0, 42, 98,103,112,105, 99, 0,111, 98, 95, 99,101,110,116,114,101, 95, 98,111,110,101, 91, 51, 50, 93, - 0,100,114, 97,119,116,121,112,101, 0,115, 99,101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0,112,105,118,111,116, - 95,108, 97,115,116, 0,103,114,105,100, 0,110,101, 97,114, 0,102, 97,114, 0,103,114,105,100,108,105,110,101,115, 0,103,114, -105,100,102,108, 97,103, 0,103,114,105,100,115,117, 98,100,105,118, 0,109,111,100,101,115,101,108,101, 99,116, 0,107,101,121, -102,108, 97,103,115, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101, 0,116,119,102,108, 97,103, 0, 99,117,115,116,111, -109,100, 97,116, 97, 95,109, 97,115,107, 0, 97,102,116,101,114,100,114, 97,119, 0,122, 98,117,102, 0,120,114, 97,121, 0,110, -100,111,102,109,111,100,101, 0,110,100,111,102,102,105,108,116,101,114, 0, 42,112,114,111,112,101,114,116,105,101,115, 95,115, -116,111,114, 97,103,101, 0,118,101,114,116, 0,104,111,114, 0,109, 97,115,107, 0,109,105,110, 91, 50, 93, 0,109, 97,120, 91, - 50, 93, 0,109,105,110,122,111,111,109, 0,109, 97,120,122,111,111,109, 0,115, 99,114,111,108,108, 0,115, 99,114,111,108,108, - 95,117,105, 0,107,101,101,112,116,111,116, 0,107,101,101,112,122,111,111,109, 0,107,101,101,112,111,102,115, 0, 97,108,105, -103,110, 0,119,105,110,120, 0,119,105,110,121, 0,111,108,100,119,105,110,120, 0,111,108,100,119,105,110,121, 0, 42,116, 97, - 98, 95,111,102,102,115,101,116, 0,116, 97, 98, 95,110,117,109, 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99,114,101,101,110, - 0,118, 50,100, 0, 42, 97,100,115, 0,103,104,111,115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, 97,112, 0, 99, -117,114,115,111,114, 86, 97,108, 0,109, 97,105,110, 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117,115,101,114, 0, -114,101, 95, 97,108,105,103,110, 0,112,114,101,118,105,101,119, 0,112, 97,116,104,102,108, 97,103, 0,100, 97,116, 97,105, 99, -111,110, 0, 42,112,105,110,105,100, 0,114,101,110,100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104,111,119,110, 0, -122,101, 98,114, 97, 0,122,111,111,109, 0,116,105,116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,102,105, -108,101, 91, 56, 48, 93, 0,114,101,110, 97,109,101,102,105,108,101, 91, 56, 48, 93, 0,115,111,114,116, 0,100,105,115,112,108, - 97,121, 0, 97, 99,116,105,118,101, 95, 98,111,111,107,109, 97,114,107, 0, 97, 99,116,105,118,101, 95,102,105,108,101, 0,115, -101,108,115,116, 97,116,101, 0,102, 95,102,112, 0,102,112, 95,115,116,114, 91, 56, 93, 0,115, 99,114,111,108,108, 95,111,102, -102,115,101,116, 0, 42,112, 97,114, 97,109,115, 0, 42,102,105,108,101,115, 0, 42,102,111,108,100,101,114,115, 95,112,114,101, -118, 0, 42,102,111,108,100,101,114,115, 95,110,101,120,116, 0, 42,111,112, 0, 42,115,109,111,111,116,104,115, 99,114,111,108, -108, 95,116,105,109,101,114, 0, 42,108, 97,121,111,117,116, 0,114,101, 99,101,110,116,110,114, 0, 98,111,111,107,109, 97,114, -107,110,114, 0,115,121,115,116,101,109,110,114, 0,116,114,101,101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97, -114, 99,104, 95,115,116,114,105,110,103, 91, 51, 50, 93, 0,115,101, 97,114, 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, - 95,102,108, 97,103,115, 0,100,111, 95, 0,111,117,116,108,105,110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0, - 42, 99,117,109, 97,112, 0,105,109, 97,110,114, 0, 99,117,114,116,105,108,101, 0,105,109,116,121,112,101,110,114, 0,108,111, - 99,107, 0,112,105,110, 0,100,116, 95,117,118, 0,115,116,105, 99,107,121, 0,100,116, 95,117,118,115,116,114,101,116, 99,104, - 0, 99,117,114,115,111,114, 91, 50, 93, 0, 99,101,110,116,120, 0, 99,101,110,116,121, 0,115, 99,111,112,101,115, 0,115, 97, -109,112,108,101, 95,108,105,110,101, 95,104,105,115,116, 0, 42,116,101,120,116, 0,116,111,112, 0,118,105,101,119,108,105,110, -101,115, 0,108,104,101,105,103,104,116, 0, 99,119,105,100,116,104, 0,108,105,110,101,110,114,115, 95,116,111,116, 0,108,101, -102,116, 0,115,104,111,119,108,105,110,101,110,114,115, 0,116, 97, 98,110,117,109, 98,101,114, 0,115,104,111,119,115,121,110, -116, 97,120, 0,111,118,101,114,119,114,105,116,101, 0,108,105,118,101, 95,101,100,105,116, 0,112,105,120, 95,112,101,114, 95, -108,105,110,101, 0,116,120,116,115, 99,114,111,108,108, 0,116,120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100, -111,112,108,117,103,105,110,115, 0,102,105,110,100,115,116,114, 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99,101,115,116,114, - 91, 50, 53, 54, 93, 0, 42,112,121, 95,100,114, 97,119, 0, 42,112,121, 95,101,118,101,110,116, 0, 42,112,121, 95, 98,117,116, -116,111,110, 0, 42,112,121, 95, 98,114,111,119,115,101,114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,111, 98, - 97,108,100,105, 99,116, 0,108, 97,115,116,115,112, 97, 99,101, 0,115, 99,114,105,112,116,110, 97,109,101, 91, 50, 53, 54, 93, - 0,115, 99,114,105,112,116, 97,114,103, 91, 50, 53, 54, 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,117,116, 95,114,101,102, -115, 0, 42, 97,114,114, 97,121, 0, 99, 97, 99,104,101,115, 0, 99, 97, 99,104,101, 95,100,105,115,112,108, 97,121, 0,114,101, -100,114, 97,119,115, 0, 42,105,100, 0, 97,115,112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, 0,109,121, 0, - 42,101,100,105,116,116,114,101,101, 0,116,114,101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,109,101,110,117, 0, -110,117,109,116,105,108,101,115,120, 0,110,117,109,116,105,108,101,115,121, 0,118,105,101,119,114,101, 99,116, 0, 98,111,111, -107,109, 97,114,107,114,101, 99,116, 0,115, 99,114,111,108,108,112,111,115, 0,115, 99,114,111,108,108,104,101,105,103,104,116, - 0,115, 99,114,111,108,108, 97,114,101, 97, 0,114,101,116,118, 97,108, 0,112,114,118, 95,119, 0,112,114,118, 95,104, 0, 40, - 42,114,101,116,117,114,110,102,117,110, 99, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95,101,118,101,110, -116, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95, 97,114,103,115, 41, 40, 41, 0, 42, 97,114,103, 49, 0, - 42, 97,114,103, 50, 0, 42,109,101,110,117,112, 0, 42,112,117,112,109,101,110,117, 0, 42,105,109,103, 0,108,101,110, 95, 97, -108,108,111, 99, 0, 99,117,114,115,111,114, 0,114,112,116, 95,109, 97,115,107, 0,115, 99,114,111,108,108, 98, 97, 99,107, 0, -104,105,115,116,111,114,121, 0,112,114,111,109,112,116, 91, 50, 53, 54, 93, 0,108, 97,110,103,117, 97,103,101, 91, 51, 50, 93, - 0,115,101,108, 95,115,116, 97,114,116, 0,115,101,108, 95,101,110,100, 0,102,105,108,116,101,114, 91, 54, 52, 93, 0,102,105, -108,101,110, 97,109,101, 91, 50, 53, 54, 93, 0, 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,100, 0,114, 95,116, -111, 95,108, 0,112,111,105,110,116,115, 0,107,101,114,110,105,110,103, 0,105,116, 97,108,105, 99, 0, 98,111,108,100, 0,115, -104, 97,100,111,119, 0,115,104, 97,100,120, 0,115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, 97, 0,115,104, - 97,100,111,119, 99,111,108,111,114, 0,112, 97,110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, 98,101,108, 0, -119,105,100,103,101,116,108, 97, 98,101,108, 0,119,105,100,103,101,116, 0,112, 97,110,101,108,122,111,111,109, 0,109,105,110, -108, 97, 98,101,108, 99,104, 97,114,115, 0,109,105,110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111,108,117,109,110, -115,112, 97, 99,101, 0,116,101,109,112,108, 97,116,101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, 0, 98,117,116, -116,111,110,115,112, 97, 99,101,120, 0, 98,117,116,116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108,115,112, 97, 99, -101, 0,112, 97,110,101,108,111,117,116,101,114, 0,112, 97,100, 91, 49, 93, 0,111,117,116,108,105,110,101, 91, 52, 93, 0,105, -110,110,101,114, 91, 52, 93, 0,105,110,110,101,114, 95,115,101,108, 91, 52, 93, 0,105,116,101,109, 91, 52, 93, 0,116,101,120, -116, 91, 52, 93, 0,116,101,120,116, 95,115,101,108, 91, 52, 93, 0,115,104, 97,100,101,100, 0,115,104, 97,100,101,116,111,112, - 0,115,104, 97,100,101,100,111,119,110, 0, 97,108,112,104, 97, 95, 99,104,101, 99,107, 0,105,110,110,101,114, 95, 97,110,105, -109, 91, 52, 93, 0,105,110,110,101,114, 95, 97,110,105,109, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, - 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101, -110, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 95,115,101,108, 91, 52, 93, 0,119, 99,111,108, 95,114,101, -103,117,108, 97,114, 0,119, 99,111,108, 95,116,111,111,108, 0,119, 99,111,108, 95,116,101,120,116, 0,119, 99,111,108, 95,114, - 97,100,105,111, 0,119, 99,111,108, 95,111,112,116,105,111,110, 0,119, 99,111,108, 95,116,111,103,103,108,101, 0,119, 99,111, -108, 95,110,117,109, 0,119, 99,111,108, 95,110,117,109,115,108,105,100,101,114, 0,119, 99,111,108, 95,109,101,110,117, 0,119, - 99,111,108, 95,112,117,108,108,100,111,119,110, 0,119, 99,111,108, 95,109,101,110,117, 95, 98, 97, 99,107, 0,119, 99,111,108, - 95,109,101,110,117, 95,105,116,101,109, 0,119, 99,111,108, 95, 98,111,120, 0,119, 99,111,108, 95,115, 99,114,111,108,108, 0, -119, 99,111,108, 95,112,114,111,103,114,101,115,115, 0,119, 99,111,108, 95,108,105,115,116, 95,105,116,101,109, 0,119, 99,111, -108, 95,115,116, 97,116,101, 0,105, 99,111,110,102,105,108,101, 91, 56, 48, 93, 0, 98, 97, 99,107, 91, 52, 93, 0,116,105,116, -108,101, 91, 52, 93, 0,116,101,120,116, 95,104,105, 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,104,101, 97,100,101, -114, 95,116,105,116,108,101, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 91, 52, 93, 0,104,101, 97,100,101,114, - 95,116,101,120,116, 95,104,105, 91, 52, 93, 0, 98,117,116,116,111,110, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,105,116, -108,101, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, - 95,104,105, 91, 52, 93, 0,108,105,115,116, 91, 52, 93, 0,108,105,115,116, 95,116,105,116,108,101, 91, 52, 93, 0,108,105,115, -116, 95,116,101,120,116, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,112, 97,110,101,108, 91, - 52, 93, 0,112, 97,110,101,108, 95,116,105,116,108,101, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 91, 52, 93, 0, -112, 97,110,101,108, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93, 0,115,104, 97,100,101, - 50, 91, 52, 93, 0,104,105,108,105,116,101, 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,101, 91, 52, 93, 0,115, -101,108,101, 99,116, 91, 52, 93, 0,108, 97,109,112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, 52, 93, 0,103,114,111,117,112, - 91, 52, 93, 0,103,114,111,117,112, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,111,114,109, 91, 52, 93, - 0,118,101,114,116,101,120, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, - 91, 52, 93, 0,101,100,103,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101, 97,109, 91, 52, 93, 0, -101,100,103,101, 95,115,104, 97,114,112, 91, 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, 93, 0,101,100, -103,101, 95, 99,114,101, 97,115,101, 91, 52, 93, 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101,108,101, 99,116, - 91, 52, 93, 0,102, 97, 99,101, 95,100,111,116, 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0,118,101,114,116,101,120, - 95,110,111,114,109, 97,108, 91, 52, 93, 0, 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110,101, 95,112,111, -115,101, 91, 52, 93, 0,115,116,114,105,112, 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, 52, 93, 0, 99, -102,114, 97,109,101, 91, 52, 93, 0,110,117,114, 98, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,118,108,105,110, -101, 91, 52, 93, 0, 97, 99,116, 95,115,112,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95,117,108,105,110, -101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95,118,108,105,110,101, 91, 52, 93, 0,108, 97,115,116,115,101,108, 95,112, -111,105,110,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,117, -116,111, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,108,105,103, -110, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115, -101,108, 95, 97,117,116,111, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95,118,101, 99,116, 91, 52, 93, 0,104, 97, -110,100,108,101, 95,115,101,108, 95, 97,108,105,103,110, 91, 52, 93, 0,100,115, 95, 99,104, 97,110,110,101,108, 91, 52, 93, 0, -100,115, 95,115,117, 98, 99,104, 97,110,110,101,108, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,111,117,116,112,117,116, 91, - 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,102,111, - 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,101,114,114,111,114, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95, 99,117,114, -115,111,114, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,105,122,101, 0,102, 97, 99,101,100,111,116, 95,115,105,122,101, 0, - 98,112, 97,100, 91, 50, 93, 0,115,121,110,116, 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,120,110, 91, 52, 93, 0,115,121, -110,116, 97,120, 98, 91, 52, 93, 0,115,121,110,116, 97,120,118, 91, 52, 93, 0,115,121,110,116, 97,120, 99, 91, 52, 93, 0,109, -111,118,105,101, 91, 52, 93, 0,105,109, 97,103,101, 91, 52, 93, 0,115, 99,101,110,101, 91, 52, 93, 0, 97,117,100,105,111, 91, - 52, 93, 0,101,102,102,101, 99,116, 91, 52, 93, 0,112,108,117,103,105,110, 91, 52, 93, 0,116,114, 97,110,115,105,116,105,111, -110, 91, 52, 93, 0,109,101,116, 97, 91, 52, 93, 0,101,100,105,116,109,101,115,104, 95, 97, 99,116,105,118,101, 91, 52, 93, 0, -104, 97,110,100,108,101, 95,118,101,114,116,101,120, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115, -101,108,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,105,122,101, 0,104,112, 97,100, - 91, 55, 93, 0,112,114,101,118,105,101,119, 95, 98, 97, 99,107, 91, 52, 93, 0,115,111,108,105,100, 91, 52, 93, 0,116,117,105, - 0,116, 98,117,116,115, 0,116,118, 51,100, 0,116,102,105,108,101, 0,116,105,112,111, 0,116,105,110,102,111, 0,116,115,110, -100, 0,116, 97, 99,116, 0,116,110,108, 97, 0,116,115,101,113, 0,116,105,109, 97, 0,116,105,109, 97,115,101,108, 0,116,101, -120,116, 0,116,111,111,112,115, 0,116,116,105,109,101, 0,116,110,111,100,101, 0,116,108,111,103,105, 99, 0,116,117,115,101, -114,112,114,101,102, 0,116, 99,111,110,115,111,108,101, 0,116, 97,114,109, 91, 50, 48, 93, 0, 97, 99,116,105,118,101, 95,116, -104,101,109,101, 95, 97,114,101, 97, 0,109,111,100,117,108,101, 91, 54, 52, 93, 0,115,112,101, 99, 91, 52, 93, 0,100,117,112, -102,108, 97,103, 0,115, 97,118,101,116,105,109,101, 0,116,101,109,112,100,105,114, 91, 49, 54, 48, 93, 0,102,111,110,116,100, -105,114, 91, 49, 54, 48, 93, 0,114,101,110,100,101,114,100,105,114, 91, 49, 54, 48, 93, 0,116,101,120,116,117,100,105,114, 91, - 49, 54, 48, 93, 0,112,108,117,103,116,101,120,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,115,101,113,100,105,114, 91, - 49, 54, 48, 93, 0,112,121,116,104,111,110,100,105,114, 91, 49, 54, 48, 93, 0,115,111,117,110,100,100,105,114, 91, 49, 54, 48, - 93, 0,105,109, 97,103,101, 95,101,100,105,116,111,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 91, - 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 95,112,114,101,115,101,116, 0,118, 50,100, 95,109,105,110, 95, -103,114,105,100,115,105,122,101, 0,116,105,109,101, 99,111,100,101, 95,115,116,121,108,101, 0,118,101,114,115,105,111,110,115, - 0,100, 98,108, 95, 99,108,105, 99,107, 95,116,105,109,101, 0,103, 97,109,101,102,108, 97,103,115, 0,119,104,101,101,108,108, -105,110,101,115, 99,114,111,108,108, 0,117,105,102,108, 97,103, 0,108, 97,110,103,117, 97,103,101, 0,117,115,101,114,112,114, -101,102, 0,118,105,101,119,122,111,111,109, 0,109,105,120, 98,117,102,115,105,122,101, 0, 97,117,100,105,111,100,101,118,105, - 99,101, 0, 97,117,100,105,111,114, 97,116,101, 0, 97,117,100,105,111,102,111,114,109, 97,116, 0, 97,117,100,105,111, 99,104, - 97,110,110,101,108,115, 0,100,112,105, 0,101,110, 99,111,100,105,110,103, 0,116,114, 97,110,115,111,112,116,115, 0,109,101, -110,117,116,104,114,101,115,104,111,108,100, 49, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 50, 0,116,104,101,109, -101,115, 0,117,105,102,111,110,116,115, 0,117,105,115,116,121,108,101,115, 0,107,101,121,109, 97,112,115, 0, 97,100,100,111, -110,115, 0,107,101,121, 99,111,110,102,105,103,115,116,114, 91, 54, 52, 93, 0,117,110,100,111,115,116,101,112,115, 0,117,110, -100,111,109,101,109,111,114,121, 0,103,112, 95,109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103,112, 95,101,117, 99, -108,105,100,101, 97,110,100,105,115,116, 0,103,112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101,116,116,105,110,103,115, - 0,116, 98, 95,108,101,102,116,109,111,117,115,101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, 0,108,105,103,104, -116, 91, 51, 93, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,115,101,116,116,105,110,103,115, 0,116,119, 95,104,111, -116,115,112,111,116, 0,116,119, 95,102,108, 97,103, 0,116,119, 95,104, 97,110,100,108,101,115,105,122,101, 0,116,119, 95,115, -105,122,101, 0,116,101,120,116,105,109,101,111,117,116, 0,116,101,120, 99,111,108,108,101, 99,116,114, 97,116,101, 0,119,109, -100,114, 97,119,109,101,116,104,111,100, 0,109,101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101,102,101,116, 99, -104,102,114, 97,109,101,115, 0,102,114, 97,109,101,115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95,114,111,116, 95, - 97,110,103,108,101, 0,111, 98, 99,101,110,116,101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114,118,105, 98,114, -105,103,104,116, 0,114,101, 99,101,110,116, 95,102,105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101,119,116,120, 0, -103,108,114,101,115,108,105,109,105,116, 0,110,100,111,102, 95,112, 97,110, 0,110,100,111,102, 95,114,111,116, 97,116,101, 0, - 99,117,114,115,115,105,122,101, 0, 99,111,108,111,114, 95,112,105, 99,107,101,114, 95,116,121,112,101, 0,105,112,111, 95,110, -101,119, 0,107,101,121,104, 97,110,100,108,101,115, 95,110,101,119, 0,115, 99,114, 99, 97,115,116,102,112,115, 0,115, 99,114, - 99, 97,115,116,119, 97,105,116, 0,112,114,111,112,119,105,100,116,104, 0,118,101,114,115,101,109, 97,115,116,101,114, 91, 49, - 54, 48, 93, 0,118,101,114,115,101,117,115,101,114, 91, 49, 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108,105,112, 0, 99, -111, 98, 97, 95,119,101,105,103,104,116, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95, -115,105,122,101, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,117,110,112,114,111,106, -101, 99,116,101,100, 95,114, 97,100,105,117,115, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101, -100, 95, 97,108,112,104, 97, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,111,118,101,114,108, 97,121, 95, 99,111,108, - 91, 51, 93, 0,118,101,114,116, 98, 97,115,101, 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,115,101, 0, 42, -110,101,119,115, 99,101,110,101, 0,102,117,108,108, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0,100,111, 95,114, -101,102,114,101,115,104, 0,100,111, 95,100,114, 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, 97,119, 95,112, - 97,105,110,116, 99,117,114,115,111,114, 0,100,111, 95,100,114, 97,119, 95,100,114, 97,103, 0,115,119, 97,112, 0,109, 97,105, -110,119,105,110, 0,115,117, 98,119,105,110, 97, 99,116,105,118,101, 0, 97,110,105,109,109,111,100,101, 0, 42, 97,110,105,109, -116,105,109,101,114, 0, 42, 99,111,110,116,101,120,116, 0,104, 97,110,100,108,101,114, 91, 56, 93, 0, 42,110,101,119,118, 0, -118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42,116,121,112,101, 0,112, 97,110,101,108,110, 97,109,101, 91, 54, 52, 93, 0, -116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, 97,119,110, 97,109,101, 91, 54, 52, 93, 0,111,102,115,120, 0,111,102, -115,121, 0,115,105,122,101,120, 0,115,105,122,101,121, 0,108, 97, 98,101,108,111,102,115, 0,114,117,110,116,105,109,101, 95, -102,108, 97,103, 0, 99,111,110,116,114,111,108, 0,115,110, 97,112, 0,115,111,114,116,111,114,100,101,114, 0, 42,112, 97,110, -101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101,100, 97,116, 97, 0,108,105,115,116, 95,115, 99,114,111,108,108, 0,108,105, -115,116, 95,115,105,122,101, 0,108,105,115,116, 95,108, 97,115,116, 95,108,101,110, 0,108,105,115,116, 95,103,114,105,112, 95, -115,105,122,101, 0,108,105,115,116, 95,115,101, 97,114, 99,104, 91, 54, 52, 93, 0, 42,118, 51, 0, 42,118, 52, 0, 42,102,117, -108,108, 0, 98,117,116,115,112, 97, 99,101,116,121,112,101, 0,104,101, 97,100,101,114,116,121,112,101, 0,115,112, 97, 99,101, -100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, 0, 97, 99,116,105,111,110,122,111,110,101,115, 0,119,105,110,114, 99,116, - 0,100,114, 97,119,114, 99,116, 0,115,119,105,110,105,100, 0,114,101,103,105,111,110,116,121,112,101, 0, 97,108,105,103,110, -109,101,110,116, 0,100,111, 95,100,114, 97,119, 95,111,118,101,114,108, 97,121, 0,117,105, 98,108,111, 99,107,115, 0,112, 97, -110,101,108,115, 0, 42,104,101, 97,100,101,114,115,116,114, 0, 42,114,101,103,105,111,110,100, 97,116, 97, 0,115,117, 98,118, -115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115,105,111,110, 0,112, 97,100,115, 0,109,105,110,118,101,114,115,105,111, -110, 0,109,105,110,115,117, 98,118,101,114,115,105,111,110, 0, 42, 99,117,114,115, 99,114,101,101,110, 0, 42, 99,117,114,115, - 99,101,110,101, 0,102,105,108,101,102,108, 97,103,115, 0,103,108,111, 98, 97,108,102, 0,102,105,108,101,110, 97,109,101, 91, - 50, 52, 48, 93, 0,110, 97,109,101, 91, 56, 48, 93, 0, 42,105, 98,117,102, 0, 42,105, 98,117,102, 95, 99,111,109,112, 0, 42, -115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0,110,114, 0, 98,111,116,116,111,109, 0,114,105,103,104,116, 0,120,111, -102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93, 0,103, 97,109,109, 97, 91, 51, 93, 0,103, 97,105,110, 91, 51, 93, - 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110,101, 0,115,116, 97,114,116,115,116,105,108,108, 0,101,110,100,115,116,105, -108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0,111,114,120, 0,111,114,121, 0, 42, 99,114,111,112, 0, 42,116,114, 97, -110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, 98, 97,108, 97,110, 99,101, 0, 42,116,115,116,114,105,112,100, 97,116, - 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42,116,115,116,114,105,112, -100, 97,116, 97, 95,101,110,100,115,116,105,108,108, 0, 42,105, 98,117,102, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42, -105, 98,117,102, 95,101,110,100,115,116,105,108,108, 0, 42,105,110,115,116, 97,110, 99,101, 95,112,114,105,118, 97,116,101, 95, -100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42,116,109,112, - 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111,102,115, 0,109, 97, 99,104,105,110,101, 0,115,116, 97,114,116,100,105, -115,112, 0,101,110,100,100,105,115,112, 0,115, 97,116, 0,109,117,108, 0,104, 97,110,100,115,105,122,101, 0, 97,110,105,109, - 95,112,114,101,115,101,101,107, 0, 42,115,116,114,105,112, 0, 42,115, 99,101,110,101, 95, 99, 97,109,101,114, 97, 0,101,102, -102,101, 99,116, 95,102, 97,100,101,114, 0,115,112,101,101,100, 95,102, 97,100,101,114, 0, 42,115,101,113, 49, 0, 42,115,101, -113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42,115,111,117,110,100, 0, 42,115, 99,101,110,101, 95,115, -111,117,110,100, 0,108,101,118,101,108, 0,112, 97,110, 0,115, 99,101,110,101,110,114, 0,109,117,108,116,105, 99, 97,109, 95, -115,111,117,114, 99,101, 0,115,116,114,111, 98,101, 0, 42,101,102,102,101, 99,116,100, 97,116, 97, 0, 97,110,105,109, 95,115, -116, 97,114,116,111,102,115, 0, 97,110,105,109, 95,101,110,100,111,102,115, 0, 98,108,101,110,100, 95,109,111,100,101, 0, 98, -108,101,110,100, 95,111,112, 97, 99,105,116,121, 0, 42,111,108,100, 98, 97,115,101,112, 0, 42,112, 97,114,115,101,113, 0, 42, -115,101,113, 98, 97,115,101,112, 0,109,101,116, 97,115,116, 97, 99,107, 0, 42, 97, 99,116, 95,115,101,113, 0, 97, 99,116, 95, -105,109, 97,103,101,100,105,114, 91, 50, 53, 54, 93, 0, 97, 99,116, 95,115,111,117,110,100,100,105,114, 91, 50, 53, 54, 93, 0, -111,118,101,114, 95,111,102,115, 0,111,118,101,114, 95, 99,102,114, 97, 0,111,118,101,114, 95,102,108, 97,103, 0,111,118,101, -114, 95, 98,111,114,100,101,114, 0,101,100,103,101, 87,105,100,116,104, 0,102,111,114,119, 97,114,100, 0,119,105,112,101,116, -121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109,112, 0,102, 66,111,111,115,116, 0,100, 68,105,115,116, 0,100, 81, -117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0, 83, 99, 97,108,101,120, 73,110,105, 0, 83, 99, 97,108,101,121, 73, -110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, 83, 99, 97,108,101,121, 70,105,110, 0,120, 73,110,105, 0,120, 70,105,110, - 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111,116, 73,110,105, 0,114,111,116, 70,105,110, 0,105,110,116,101,114,112,111, -108, 97,116,105,111,110, 0,117,110,105,102,111,114,109, 95,115, 99, 97,108,101, 0, 42,102,114, 97,109,101, 77, 97,112, 0,103, -108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115,116, 86, 97,108,105,100, 70,114, 97,109,101, 0, 98,117,116,116,121,112, -101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,116,111,116,112, 97,114,116, 0,110,111,114,109,102, 97, 99, 0,111, 98, -102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,120,102, 97, 99, 0,114, 97,110,100,108,105,102,101, 0,102,111,114, 99, -101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,109, 97,120,108,101,110, 0,100,101,102,118,101, 99, 91, 51, 93, 0,109, -117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, 0, 99,104,105,108,100, 91, 52, 93, 0,109, 97,116, 91, 52, 93, 0,116, -101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,115,116, 97,116,105, 99,115,116,101,112, 0,111,109, 97,116, 0,116,105, -109,101,116,101,120, 0,115,112,101,101,100,116,101,120, 0,102,108, 97,103, 50,110,101,103, 0,118,101,114,116,103,114,111,117, -112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, 91, 51, 50, 93, 0,118,103,114,111,117,112,110, 97,109,101, 95,118, 91, - 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102, 97, 99, 0,117,115,101,100, 0,117,115,101,100,101,108,101,109, 0, 42, -112,111,105,110, 0,114,101,115,101,116,100,105,115,116, 0,108, 97,115,116,118, 97,108, 0, 42,109, 97, 0,107,101,121, 0,113, -117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,101,116, 78, 97,109,101, 91, 51, 50, 93, 0,116,111,103,103,108,101, 78, - 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91, 51, 50, 93, 0,109, 97,120,118, 97,108,117,101, 91, 51, 50, 93, 0,100, -101,108, 97,121, 0,100,117,114, 97,116,105,111,110, 0,109, 97,116,101,114,105, 97,108, 78, 97,109,101, 91, 51, 50, 93, 0,100, - 97,109,112,116,105,109,101,114, 0,112,114,111,112,110, 97,109,101, 91, 51, 50, 93, 0,109, 97,116,110, 97,109,101, 91, 51, 50, - 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111,115,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0, 99,111,110,115,116, -114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114,111,109, 79, 98,106,101, 99,116, 0,115,117, 98,106,101, 99,116, 91, 51, 50, - 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116,121,112,101, 0,112,117,108,115,101, 0,102,114,101,113, 0,116,111,116,108, -105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,116, 97,112, 0,106,111,121,105,110,100,101,120, 0, 97,120,105,115, 95,115, -105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, 0,104, 97,116, 0,104, 97,116,102, 0,112,114,101, 99, -105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0, 42,109,121,110,101,119, 0,105,110,112,117,116,115, 0,116,111,116, -115,108,105,110,107,115, 0, 42, 42,115,108,105,110,107,115, 0,118, 97,108,111, 0,115,116, 97,116,101, 95,109, 97,115,107, 0, - 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111,112, 91, 51, 50, 93, 0, 98,108,101,110,100,105,110, 0,112,114,105,111,114, -105,116,121, 0,101,110,100, 95,114,101,115,101,116, 0,115,116,114,105,100,101, 97,120,105,115, 0,115,116,114,105,100,101,108, -101,110,103,116,104, 0,115,110,100,110,114, 0,112, 97,100, 51, 91, 50, 93, 0,112,105,116, 99,104, 0,115,111,117,110,100, 51, - 68, 0,112, 97,100, 54, 91, 49, 93, 0, 42,109,101, 0,108,105,110, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103, - 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108,102,108, 97,103, 0,100,121,110, 95,111,112,101,114, 97,116, -105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,102,111,114, 99,101,114,111,116, 91, 51, 93, 0,108,105,110,101, - 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103,117,108, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, - 0, 42,114,101,102,101,114,101,110, 99,101, 0,109,105,110, 0,109, 97,120, 0,114,111,116,100, 97,109,112, 0,109,105,110,108, -111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, 51, 93, 0,109,105,110,114,111,116, 91, 51, 93, 0,109, 97,120,114,111,116, - 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51, 50, 93, 0, 98,117,116,115,116, 97, 0, 98,117,116,101,110,100, 0,100,105, -115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, 97,114,103, 95, 49, 0,105,110,116, 95, 97,114,103, 95, 50, 0,102, -108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97,116, 95, 97,114,103, 95, 50, 0,116,111, 80,114,111,112, 78, 97,109, -101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, 99,116, 0, 98,111,100,121, 84,121,112,101, 0,102,105,108,101,110, 97,109, -101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97,109,101, 91, 54, 52, 93, 0,105,110,116, 95, 97,114,103, 0,102,108, -111, 97,116, 95, 97,114,103, 0, 42,115,117, 98,116, 97,114,103,101,116, 0,103,111, 0, 97, 99, 99,101,108,108,101,114, 97,116, -105,111,110, 0,109, 97,120,115,112,101,101,100, 0,109, 97,120,114,111,116,115,112,101,101,100, 0,109, 97,120,116,105,108,116, -115,112,101,101,100, 0,116,105,108,116,100, 97,109,112, 0,115,112,101,101,100,100, 97,109,112, 0,109,105,110, 95,103, 97,105, -110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101,102,101,114,101,110, 99,101, 95,100,105,115,116, 97,110, 99,101, 0,109, 97, -120, 95,100,105,115,116, 97,110, 99,101, 0,114,111,108,108,111,102,102, 95,102, 97, 99,116,111,114, 0, 99,111,110,101, 95,105, -110,110,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, - 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42,110,101,119,112, 97, 99,107,101,100,102,105,108,101, 0, 97,116,116,101,110, -117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, 97, 99,104,101, 0, 42,112,108, 97,121, 98, 97, 99,107, - 95,104, 97,110,100,108,101, 0, 42, 97,114,101, 97, 0, 42,108, 97,109,112,114,101,110, 0,103,111, 98,106,101, 99,116, 0,100, -117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 42,112,114,111,112, 0, 99,104,105,108,100, 98, 97,115,101, 0,114,111,108,108, - 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98,111,110,101, 95,109, 97,116, 91, 51, 93, 91, 51, 93, 0, - 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97,105,108, 91, 51, 93, 0, 97,114,109, 95,109, 97,116, 91, - 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0,122,119,105,100,116,104, 0,101, 97,115,101, 49, 0,101, 97,115,101, 50, 0, -114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95,116, 97,105,108, 0, 98,111,110,101, 98, 97,115,101, 0, 99,104, 97,105,110, - 98, 97,115,101, 0, 42,101,100, 98,111, 0, 42, 97, 99,116, 95, 98,111,110,101, 0, 42, 97, 99,116, 95,101,100, 98,111,110,101, - 0, 42,115,107,101,116, 99,104, 0,108, 97,121,101,114, 95,112,114,111,116,101, 99,116,101,100, 0,103,104,111,115,116,101,112, - 0,103,104,111,115,116,115,105,122,101, 0,103,104,111,115,116,116,121,112,101, 0,112, 97,116,104,115,105,122,101, 0,103,104, -111,115,116,115,102, 0,103,104,111,115,116,101,102, 0,112, 97,116,104,115,102, 0,112, 97,116,104,101,102, 0,112, 97,116,104, - 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,111,105,110,116,115, 0,115,116, 97,114,116, 95,102,114, 97,109,101, 0,101,110, -100, 95,102,114, 97,109,101, 0,103,104,111,115,116, 95,115,102, 0,103,104,111,115,116, 95,101,102, 0,103,104,111,115,116, 95, - 98, 99, 0,103,104,111,115,116, 95, 97, 99, 0,103,104,111,115,116, 95,116,121,112,101, 0,103,104,111,115,116, 95,115,116,101, -112, 0,103,104,111,115,116, 95,102,108, 97,103, 0,112, 97,116,104, 95,116,121,112,101, 0,112, 97,116,104, 95,115,116,101,112, - 0,112, 97,116,104, 95,118,105,101,119,102,108, 97,103, 0,112, 97,116,104, 95, 98, 97,107,101,102,108, 97,103, 0,112, 97,116, -104, 95,115,102, 0,112, 97,116,104, 95,101,102, 0,112, 97,116,104, 95, 98, 99, 0,112, 97,116,104, 95, 97, 99, 0, 99,111,110, -115,116,102,108, 97,103, 0,105,107,102,108, 97,103, 0,115,101,108,101, 99,116,102,108, 97,103, 0, 97,103,114,112, 95,105,110, -100,101,120, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105,107,116,114,101,101, 0, 42, 98, 95, 98,111,110,101, 95, -109, 97,116,115, 0, 42,100,117, 97,108, 95,113,117, 97,116, 0, 42, 98, 95, 98,111,110,101, 95,100,117, 97,108, 95,113,117, 97, -116,115, 0,101,117,108, 91, 51, 93, 0, 99,104, 97,110, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,109, 97, -116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, 51, 93, 0,112,111,115,101, 95,116, 97,105,108, 91, 51, - 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105,109,105,116,109, 97,120, 91, 51, 93, 0,115,116,105,102,102,110, -101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, 0,105,107,114,111,116,119,101,105,103,104,116, 0,105,107,108, -105,110,119,101,105,103,104,116, 0, 42, 99,117,115,116,111,109, 0, 42, 99,117,115,116,111,109, 95,116,120, 0, 99,104, 97,110, - 98, 97,115,101, 0, 42, 99,104, 97,110,104, 97,115,104, 0,112,114,111,120,121, 95,108, 97,121,101,114, 0,115,116,114,105,100, -101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, 95,111,102,102,115,101,116, 91, 51, 93, 0, 97,103,114, -111,117,112,115, 0, 97, 99,116,105,118,101, 95,103,114,111,117,112, 0,105,107,115,111,108,118,101,114, 0, 42,105,107,100, 97, -116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,112,114,111,120,121, 95, 97, 99,116, 95, 98,111,110,101, 91, 51, 50, 93, 0,110, -117,109,105,116,101,114, 0,110,117,109,115,116,101,112, 0,109,105,110,115,116,101,112, 0,109, 97,120,115,116,101,112, 0,115, -111,108,118,101,114, 0,102,101,101,100, 98, 97, 99,107, 0,109, 97,120,118,101,108, 0,100, 97,109,112,109, 97,120, 0,100, 97, -109,112,101,112,115, 0, 99,104, 97,110,110,101,108,115, 0, 99,117,115,116,111,109, 67,111,108, 0, 99,115, 0, 99,117,114,118, -101,115, 0,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,109, 97,114,107,101,114, 0, 42,115,111,117,114, 99,101, 0, - 42,102,105,108,116,101,114, 95,103,114,112, 0,102,105,108,116,101,114,102,108, 97,103, 0, 97,100,115, 0,116,105,109,101,115, -108,105,100,101, 0, 42,103,114,112, 0,116,101,109,112, 0,110, 97,109,101, 91, 51, 48, 93, 0,111,119,110,115,112, 97, 99,101, - 0,116, 97,114,115,112, 97, 99,101, 0,101,110,102,111,114, 99,101, 0,104,101, 97,100,116, 97,105,108, 0,108,105,110, 95,101, -114,114,111,114, 0,114,111,116, 95,101,114,114,111,114, 0, 42,116, 97,114, 0,109, 97,116,114,105,120, 91, 52, 93, 91, 52, 93, - 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100,101,114, 0,116, 97,114,110,117,109, 0,116, 97,114,103,101,116,115, 0,105, -116,101,114, 97,116,105,111,110,115, 0,114,111,111,116, 98,111,110,101, 0,109, 97,120, 95,114,111,111,116, 98,111,110,101, 0, - 42,112,111,108,101,116, 97,114, 0,112,111,108,101,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112,111,108,101, 97, -110,103,108,101, 0,111,114,105,101,110,116,119,101,105,103,104,116, 0,103,114, 97, 98,116, 97,114,103,101,116, 91, 51, 93, 0, -110,117,109,112,111,105,110,116,115, 0, 99,104, 97,105,110,108,101,110, 0,120,122, 83, 99, 97,108,101, 77,111,100,101, 0,114, -101,115,101,114,118,101,100, 49, 0,114,101,115,101,114,118,101,100, 50, 0,109,105,110,109, 97,120,102,108, 97,103, 0,115,116, -117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99,107,102,108, 97,103, 0,102,111,108,108,111,119,102,108, 97,103, - 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103,108,101,110,103,116,104, 0, 98,117,108,103,101, 0,112, -105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120, 88, 0, 97,120, 89, 0, 97,120, 90, 0,109,105,110, 76,105,109, -105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54, 93, 0,101,120,116,114, 97, 70,122, 0,105,110,118,109, 97,116, - 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109, 97,112, 91, 51, 93, 0,101,120,112,111, 0,102,114,111,109, 95, -109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91, 51, 93, 0,116,111, 95,109,105,110, 91, 51, 93, 0,116,111, 95, -109, 97,120, 91, 51, 93, 0,114,111,116, 65,120,105,115, 0,122,109,105,110, 0,122,109, 97,120, 0,112, 97,100, 91, 57, 93, 0, - 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, 95, 97,120,105,115, 0,115,116,114,105,100,101, 95, 97, -120,105,115, 0, 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114,116, 0, 97, 99,116,101,110,100, 0, 97, 99,116,111,102, -102,115, 0,115,116,114,105,100,101,108,101,110, 0,115, 99, 97,108,101, 0, 98,108,101,110,100,111,117,116, 0,115,116,114,105, -100,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,111,102,102,115, 95, 98,111,110,101, 91, 51, 50, 93, 0,104, 97,115,105, -110,112,117,116, 0,104, 97,115,111,117,116,112,117,116, 0,100, 97,116, 97,116,121,112,101, 0,115,111, 99,107,101,116,116,121, -112,101, 0, 42,110,101,119, 95,115,111, 99,107, 0,110,115, 0,108,105,109,105,116, 0,115,116, 97, 99,107, 95,105,110,100,101, -120, 0,105,110,116,101,114,110, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 95,101,120,116, 0,108,111, 99,120, 0,108,111, - 99,121, 0,111,119,110, 95,105,110,100,101,120, 0,116,111, 95,105,110,100,101,120, 0, 42,116,111,115,111, 99,107, 0, 42,108, -105,110,107, 0, 42,110,101,119, 95,110,111,100,101, 0,108, 97,115,116,121, 0,111,117,116,112,117,116,115, 0, 42,115,116,111, -114, 97,103,101, 0,109,105,110,105,119,105,100,116,104, 0, 99,117,115,116,111,109, 49, 0, 99,117,115,116,111,109, 50, 0, 99, -117,115,116,111,109, 51, 0, 99,117,115,116,111,109, 52, 0,110,101,101,100, 95,101,120,101, 99, 0,101,120,101, 99, 0, 42,116, -104,114,101, 97,100,100, 97,116, 97, 0,116,111,116,114, 0, 98,117,116,114, 0,112,114,118,114, 0, 42, 98,108,111, 99,107, 0, - 42,116,121,112,101,105,110,102,111, 0, 42,102,114,111,109,110,111,100,101, 0, 42,116,111,110,111,100,101, 0, 42,102,114,111, -109,115,111, 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0, 42,115,116, 97, 99,107, 0, 42,116,104,114,101, 97,100, -115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, 97, 99,107,115,105,122,101, 0, 99,117,114, 95,105,110,100,101,120, 0, 97, -108,108,116,121,112,101,115, 0, 42,111,119,110,116,121,112,101, 0,112, 97,100, 50, 91, 50, 93, 0, 40, 42,112,114,111,103,114, -101,115,115, 41, 40, 41, 0, 40, 42,115,116, 97,116,115, 95,100,114, 97,119, 41, 40, 41, 0, 40, 42,116,101,115,116, 95, 98,114, -101, 97,107, 41, 40, 41, 0, 42,116, 98,104, 0, 42,112,114,104, 0, 42,115,100,104, 0, 99,121, 99,108,105, 99, 0,109,111,118, -105,101, 0,115, 97,109,112,108,101,115, 0,109,105,110,115,112,101,101,100, 0,112,101,114, 99,101,110,116,120, 0,112,101,114, - 99,101,110,116,121, 0, 98,111,107,101,104, 0,103, 97,109,109, 97, 0, 99,117,114,118,101,100, 0,105,109, 97,103,101, 95,105, -110, 95,119,105,100,116,104, 0,105,109, 97,103,101, 95,105,110, 95,104,101,105,103,104,116, 0, 99,101,110,116,101,114, 95,120, - 0, 99,101,110,116,101,114, 95,121, 0,115,112,105,110, 0,119,114, 97,112, 0,115,105,103,109, 97, 95, 99,111,108,111,114, 0, -115,105,103,109, 97, 95,115,112, 97, 99,101, 0,104,117,101, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116,114,101,110,103, -116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, 91, 52, 93, 0, 97,108,103,111,114,105,116,104,109, 0, 99,104, 97,110,110, -101,108, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, 0, 99,111,108,110, 97,109,101, 91, 51, 50, 93, 0, 98,107,116,121,112, -101, 0,114,111,116, 97,116,105,111,110, 0,103, 97,109, 99,111, 0,110,111, 95,122, 98,117,102, 0,102,115,116,111,112, 0,109, - 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, 0, 42,100,105, 99,116, 0, 42,110,111,100,101, 0, 97,110,103,108,101, - 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105,120, 0,116,104,114,101,115,104,111,108,100, 0,102, 97,100,101, 0,109, - 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105,116, 0,115,108,111,112,101, 91, 51, 93, 0,112,111,119,101,114, 91, 51, - 93, 0,108,105,102,116, 95,108,103,103, 91, 51, 93, 0,108,105,109, 99,104, 97,110, 0,117,110,115,112,105,108,108, 0,108,105, -109,115, 99, 97,108,101, 0,117,115,112,105,108,108,114, 0,117,115,112,105,108,108,103, 0,117,115,112,105,108,108, 98, 0,115, -104,111,114,116,121, 0,109,105,110,116, 97, 98,108,101, 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95,105,110, 91, 50, - 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, 42, 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42,112,114,101,109, -117,108,116, 97, 98,108,101, 0,112,114,101,115,101,116, 0, 99,104, 97,110,103,101,100, 95,116,105,109,101,115,116, 97,109,112, - 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, 0,119,104,105,116,101, - 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, 93, 0,120, 95,114,101,115,111,108,117,116, -105,111,110, 0,100, 97,116, 97, 95,114, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,103, 91, 50, 53, 54, 93, 0,100, 97,116, 97, - 95, 98, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,108,117,109, 97, 91, 50, 53, 54, 93, 0,115, 97,109,112,108,101, 95,102,117, -108,108, 0,115, 97,109,112,108,101, 95,108,105,110,101,115, 0, 97, 99, 99,117,114, 97, 99,121, 0,119, 97,118,101,102,114,109, - 95,109,111,100,101, 0,119, 97,118,101,102,114,109, 95, 97,108,112,104, 97, 0,119, 97,118,101,102,114,109, 95,121,102, 97, 99, - 0,119, 97,118,101,102,114,109, 95,104,101,105,103,104,116, 0,118,101, 99,115, 99,111,112,101, 95, 97,108,112,104, 97, 0,118, -101, 99,115, 99,111,112,101, 95,104,101,105,103,104,116, 0,109,105,110,109, 97,120, 91, 51, 93, 91, 50, 93, 0,104,105,115,116, - 0, 42,119, 97,118,101,102,111,114,109, 95, 49, 0, 42,119, 97,118,101,102,111,114,109, 95, 50, 0, 42,119, 97,118,101,102,111, -114,109, 95, 51, 0, 42,118,101, 99,115, 99,111,112,101, 0,119, 97,118,101,102,111,114,109, 95,116,111,116, 0,111,102,102,115, -101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,109,116,101,120, 0, 42,105,109, 97,103,101, 95,105, 99,111,110, 0,110,111,114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,173,173,173,255,127,112,112,100, + 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,255,255,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,155,155,155,160,100,100,100,255,108,105,111,255,104,106,117,255,105,117,110,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100,100,100,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,128,255,255,255,255,255,255, 0,170, 0,255,220, 96, 96,255,220, 96, 96,255, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255,247, 10, 10,255, 0, 0, 0, 0, +247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255,131,239, 29,255, 0, 0, 0, 0, + 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255,240, 93,145,255, 0, 0, 0, 0, + 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255,111,182,171,255, 0, 0, 0, 0, + 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0,244,201, 12,255,238,194, 54,255,243,255, 0,255, 0, 0, 0, 0, + 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0,111, 47,106,255,152, 69,190,255,211, 48,214,255, 0, 0, 0, 0, +108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0,141,141,141,255,176,176,176,255,222,222,222,255, 0, 0, 0, 0, +131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 78, 65, 49,224,226, 0, 0, +232,187,114, 3, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69,206, 11, 0, 0, 42,110,101,120,116, 0, 42,112, +114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, 0, 42,108, 97,115,116, 0,120, 0,121, 0,122, 0,119, 0,120, +109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, 97,120, 0, 42,112,111,105,110,116,101,114, 0,103,114,111,117, +112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0,115,117, 98,116,121,112,101, 0,102,108, 97,103, 0,110, 97,109, +101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0,100, 97,116, 97, 0,108,101,110, 0,116,111,116, 97,108,108,101,110, 0, 42,110, +101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 50, 52, 93, 0,117,115, 0,105, 99,111,110, 95,105,100, 0, 42,112, +114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, 98,108,111, 99,107, 0, 42,102,105,108,101,100, 97,116, 97, 0, +110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,108,101,112, 97,116,104, 91, 50, 52, 48, 93, 0,116,111,116, 0,112, 97,100, 0, + 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 91, 50, 93, 0, 99,104, 97, +110,103,101,100, 95,116,105,109,101,115,116, 97,109,112, 91, 50, 93, 0, 42,114,101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, 98, +108,111, 99,107,116,121,112,101, 0, 97,100,114, 99,111,100,101, 0,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, 42, + 98,101,122,116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, 99,116, 0,118, 97,114,116,121,112,101, 0,116,111,116,118,101, +114,116, 0,105,112,111, 0,101,120,116,114, 97,112, 0,114,116, 0, 98,105,116,109, 97,115,107, 0,115,108,105,100,101, 95,109, +105,110, 0,115,108,105,100,101, 95,109, 97,120, 0, 99,117,114,118, 97,108, 0, 42,100,114,105,118,101,114, 0, 99,117,114,118, +101, 0, 99,117,114, 0,115,104,111,119,107,101,121, 0,109,117,116,101,105,112,111, 0,112,111,115, 0,114,101,108, 97,116,105, +118,101, 0,116,111,116,101,108,101,109, 0,112, 97,100, 50, 0, 42,119,101,105,103,104,116,115, 0,118,103,114,111,117,112, 91, + 51, 50, 93, 0,115,108,105,100,101,114,109,105,110, 0,115,108,105,100,101,114,109, 97,120, 0, 42, 97,100,116, 0, 42,114,101, +102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, 0,101,108,101,109,115,105,122,101, 0, 98,108,111, 99,107, 0, + 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101,121, 0,115,108,117,114,112,104, 0, 42,108,105,110,101, 0, 42, +102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101,110,111, 0,115,116, 97,114,116, 0,101,110,100, 0,112, 97,100, + 49, 0,102,108, 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, 0,112, 97,100, 91, 52, 93, 0, 42,110, 97,109,101, 0,110,108, +105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108, 0, 42,115,101,108,108, 0, 99,117,114, 99, 0,115,101,108, 99, + 0,109, 97,114,107,101,114,115, 0, 42,117,110,100,111, 95, 98,117,102, 0,117,110,100,111, 95,112,111,115, 0,117,110,100,111, + 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,109,116,105,109,101, 0,115,105,122,101, 0,115,101,101,107, 0,112, + 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0, 99,108,105,112,115,116, 97, 0, 99,108,105,112,101,110,100, 0,108,101, +110,115, 0,111,114,116,104,111, 95,115, 99, 97,108,101, 0,100,114, 97,119,115,105,122,101, 0,115,104,105,102,116,120, 0,115, +104,105,102,116,121, 0, 89, 70, 95,100,111,102,100,105,115,116, 0, 42,100,111,102, 95,111, 98, 0,102,114, 97,109,101,110,114, + 0,102,114, 97,109,101,115, 0,111,102,102,115,101,116, 0,115,102,114, 97, 0,102,105,101, 95,105,109, 97, 0, 99,121, 99,108, + 0,111,107, 0,109,117,108,116,105, 95,105,110,100,101,120, 0,108, 97,121,101,114, 0,112, 97,115,115, 0,109,101,110,117,110, +114, 0, 42,115, 99,101,110,101, 0,105, 98,117,102,115, 0, 42,103,112,117,116,101,120,116,117,114,101, 0, 42, 97,110,105,109, + 0, 42,114,114, 0, 42,114,101,110,100,101,114,115, 91, 56, 93, 0,114,101,110,100,101,114, 95,115,108,111,116, 0,108, 97,115, +116, 95,114,101,110,100,101,114, 95,115,108,111,116, 0,115,111,117,114, 99,101, 0,108, 97,115,116,102,114, 97,109,101, 0,116, +112, 97,103,101,102,108, 97,103, 0,116,111,116, 98,105,110,100, 0,120,114,101,112, 0,121,114,101,112, 0,116,119,115,116, 97, + 0,116,119,101,110,100, 0, 98,105,110,100, 99,111,100,101, 0, 42,114,101,112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100, +102,105,108,101, 0, 42,112,114,101,118,105,101,119, 0,108, 97,115,116,117,112,100, 97,116,101, 0,108, 97,115,116,117,115,101, +100, 0, 97,110,105,109,115,112,101,101,100, 0,103,101,110, 95,120, 0,103,101,110, 95,121, 0,103,101,110, 95,116,121,112,101, + 0, 97,115,112,120, 0, 97,115,112,121, 0,116,101,120, 99,111, 0,109, 97,112,116,111, 0,109, 97,112,116,111,110,101,103, 0, + 98,108,101,110,100,116,121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116,101,120, 0,117,118,110, 97,109,101, 91, 51, 50, + 93, 0,112,114,111,106,120, 0,112,114,111,106,121, 0,112,114,111,106,122, 0,109, 97,112,112,105,110,103, 0,111,102,115, 91, + 51, 93, 0,115,105,122,101, 91, 51, 93, 0,114,111,116, 0,116,101,120,102,108, 97,103, 0, 99,111,108,111,114,109,111,100,101, +108, 0,112,109, 97,112,116,111, 0,112,109, 97,112,116,111,110,101,103, 0,110,111,114,109, 97,112,115,112, 97, 99,101, 0,119, +104,105, 99,104, 95,111,117,116,112,117,116, 0, 98,114,117,115,104, 95,109, 97,112, 95,109,111,100,101, 0,112, 97,100, 91, 55, + 93, 0,114, 0,103, 0, 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111,108,102, 97, 99, 0,118, 97,114,102, 97, 99, 0, +110,111,114,102, 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, 0, 99,111,108,115,112,101, 99,102, 97, + 99, 0,109,105,114,114,102, 97, 99, 0, 97,108,112,104, 97,102, 97, 99, 0,100,105,102,102,102, 97, 99, 0,115,112,101, 99,102, + 97, 99, 0,101,109,105,116,102, 97, 99, 0,104, 97,114,100,102, 97, 99, 0,114, 97,121,109,105,114,114,102, 97, 99, 0,116,114, + 97,110,115,108,102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99,111,108,101,109,105,116,102, 97, 99, 0, 99,111,108,114,101,102, +108,102, 97, 99, 0, 99,111,108,116,114, 97,110,115,102, 97, 99, 0,100,101,110,115,102, 97, 99, 0,115, 99, 97,116,116,101,114, +102, 97, 99, 0,114,101,102,108,102, 97, 99, 0,116,105,109,101,102, 97, 99, 0,108,101,110,103,116,104,102, 97, 99, 0, 99,108, +117,109,112,102, 97, 99, 0,107,105,110,107,102, 97, 99, 0,114,111,117,103,104,102, 97, 99, 0,112, 97,100,101,110,115,102, 97, + 99, 0,108,105,102,101,102, 97, 99, 0,115,105,122,101,102, 97, 99, 0,105,118,101,108,102, 97, 99, 0,112,118,101,108,102, 97, + 99, 0,115,104, 97,100,111,119,102, 97, 99, 0,122,101,110,117,112,102, 97, 99, 0,122,101,110,100,111,119,110,102, 97, 99, 0, + 98,108,101,110,100,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0, 42,104, 97,110,100,108,101, 0, 42,112,110, 97,109, +101, 0, 42,115,116,110, 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97,114,115, 0, 42,118, 97,114,115,116,114, 0, 42, +114,101,115,117,108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, 93, 0, 40, 42,100,111,105,116, 41, 40, 41, 0, + 40, 42,105,110,115,116, 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, 42, 99, 97,108,108, 98, 97, 99,107, 41, 40, 41, + 0,118,101,114,115,105,111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42,105,109, 97, 0, 42, 99,117, 98,101, 91, 54, 93, + 0,105,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, 93, 91, 51, 93, 0,115,116,121,112,101, 0,118, +105,101,119,115, 99, 97,108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101,114,101,115, 0,100,101,112,116,104, 0,114,101, + 99, 97,108, 99, 0,108, 97,115,116,115,105,122,101, 0,102, 97,108,108,111,102,102, 95,116,121,112,101, 0,102, 97,108,108,111, +102,102, 95,115,111,102,116,110,101,115,115, 0,114, 97,100,105,117,115, 0, 99,111,108,111,114, 95,115,111,117,114, 99,101, 0, +116,111,116,112,111,105,110,116,115, 0,112,100,112, 97,100, 0,112,115,121,115, 0,112,115,121,115, 95, 99, 97, 99,104,101, 95, +115,112, 97, 99,101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0, 42,112,111,105,110,116, 95,116,114,101,101, + 0, 42,112,111,105,110,116, 95,100, 97,116, 97, 0,110,111,105,115,101, 95,115,105,122,101, 0,110,111,105,115,101, 95,100,101, +112,116,104, 0,110,111,105,115,101, 95,105,110,102,108,117,101,110, 99,101, 0,110,111,105,115,101, 95, 98, 97,115,105,115, 0, +112,100,112, 97,100, 51, 91, 51, 93, 0,110,111,105,115,101, 95,102, 97, 99, 0,115,112,101,101,100, 95,115, 99, 97,108,101, 0, + 42, 99,111, 98, 97, 0,114,101,115,111,108, 91, 51, 93, 0,105,110,116,101,114,112, 95,116,121,112,101, 0,102,105,108,101, 95, +102,111,114,109, 97,116, 0,101,120,116,101,110,100, 0,115,109,111,107,101,100, 95,116,121,112,101, 0,105,110,116, 95,109,117, +108,116,105,112,108,105,101,114, 0,115,116,105,108,108, 95,102,114, 97,109,101, 0,115,111,117,114, 99,101, 95,112, 97,116,104, + 91, 50, 52, 48, 93, 0, 42,100, 97,116, 97,115,101,116, 0, 99, 97, 99,104,101,100,102,114, 97,109,101, 0,110,111,105,115,101, +115,105,122,101, 0,116,117,114, 98,117,108, 0, 98,114,105,103,104,116, 0, 99,111,110,116,114, 97,115,116, 0,115, 97,116,117, +114, 97,116,105,111,110, 0,114,102, 97, 99, 0,103,102, 97, 99, 0, 98,102, 97, 99, 0,102,105,108,116,101,114,115,105,122,101, + 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, 97,114,105,116,121, 0,109,103, 95,111, 99,116, 97,118,101,115, 0,109, +103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97,105,110, 0,100,105,115,116, 95, 97,109,111,117,110,116, 0,110,115, 95, +111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, 0,118,110, 95,119, 50, 0,118,110, 95,119, 51, 0,118,110, 95,119, 52, + 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105,115,116,109, 0,118,110, 95, 99,111,108,116,121,112,101, 0,110,111,105, +115,101,100,101,112,116,104, 0,110,111,105,115,101,116,121,112,101, 0,110,111,105,115,101, 98, 97,115,105,115, 0,110,111,105, +115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, 97,103, 0, 99,114,111,112,120,109,105,110, 0, 99,114,111,112,121,109, +105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114,111,112,121,109, 97,120, 0,116,101,120,102,105,108,116,101,114, 0, 97, +102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101,112,101, 97,116, 0, 99,104,101, 99,107,101,114,100,105,115,116, + 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42,110,111,100,101,116,114,101,101, 0, 42,112,108,117,103,105,110, 0, 42, +101,110,118, 0, 42,112,100, 0, 42,118,100, 0,117,115,101, 95,110,111,100,101,115, 0,108,111, 99, 91, 51, 93, 0,114,111,116, + 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105,110, 91, 51, 93, 0,109, 97,120, 91, 51, 93, 0,109,111,100,101, + 0,116,111,116,101,120, 0,115,104,100,119,114, 0,115,104,100,119,103, 0,115,104,100,119, 98, 0,115,104,100,119,112, 97,100, + 0,101,110,101,114,103,121, 0,100,105,115,116, 0,115,112,111,116,115,105,122,101, 0,115,112,111,116, 98,108,101,110,100, 0, +104, 97,105,110,116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, 42, 99,117,114,102, 97,108,108,111,102,102, 0,115,104, 97,100, +115,112,111,116,115,105,122,101, 0, 98,105, 97,115, 0,115,111,102,116, 0, 99,111,109,112,114,101,115,115,116,104,114,101,115, +104, 0,112, 97,100, 53, 91, 51, 93, 0, 98,117,102,115,105,122,101, 0,115, 97,109,112, 0, 98,117,102,102,101,114,115, 0,102, +105,108,116,101,114,116,121,112,101, 0, 98,117,102,102,108, 97,103, 0, 98,117,102,116,121,112,101, 0,114, 97,121, 95,115, 97, +109,112, 0,114, 97,121, 95,115, 97,109,112,121, 0,114, 97,121, 95,115, 97,109,112,122, 0,114, 97,121, 95,115, 97,109,112, 95, +116,121,112,101, 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, 97,114,101, 97, 95,115,105,122,101, 0, 97,114,101, 97, 95,115, +105,122,101,121, 0, 97,114,101, 97, 95,115,105,122,101,122, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0,114, 97,121, + 95,115, 97,109,112, 95,109,101,116,104,111,100, 0,116,101,120, 97, 99,116, 0,115,104, 97,100,104, 97,108,111,115,116,101,112, + 0,115,117,110, 95,101,102,102,101, 99,116, 95,116,121,112,101, 0,115,107,121, 98,108,101,110,100,116,121,112,101, 0,104,111, +114,105,122,111,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,112,114,101, 97,100, 0,115,117,110, 95, 98,114,105,103, +104,116,110,101,115,115, 0,115,117,110, 95,115,105,122,101, 0, 98, 97, 99,107,115, 99, 97,116,116,101,114,101,100, 95,108,105, +103,104,116, 0,115,117,110, 95,105,110,116,101,110,115,105,116,121, 0, 97,116,109, 95,116,117,114, 98,105,100,105,116,121, 0, + 97,116,109, 95,105,110,115, 99, 97,116,116,101,114,105,110,103, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,101,120,116,105, +110, 99,116,105,111,110, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,100,105,115,116, 97,110, 99,101, 95,102, 97, 99,116,111, +114, 0,115,107,121, 98,108,101,110,100,102, 97, 99, 0,115,107,121, 95,101,120,112,111,115,117,114,101, 0,115,107,121, 95, 99, +111,108,111,114,115,112, 97, 99,101, 0,112, 97,100, 52, 91, 54, 93, 0, 42,109,116,101,120, 91, 49, 56, 93, 0,112,114, 95,116, +101,120,116,117,114,101, 0,112, 97,100, 54, 91, 54, 93, 0,100,101,110,115,105,116,121, 0,101,109,105,115,115,105,111,110, 0, +115, 99, 97,116,116,101,114,105,110,103, 0,114,101,102,108,101, 99,116,105,111,110, 0,101,109,105,115,115,105,111,110, 95, 99, +111,108, 91, 51, 93, 0,116,114, 97,110,115,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,114,101,102,108,101, 99, +116,105,111,110, 95, 99,111,108, 91, 51, 93, 0,100,101,110,115,105,116,121, 95,115, 99, 97,108,101, 0,100,101,112,116,104, 95, + 99,117,116,111,102,102, 0, 97,115,121,109,109,101,116,114,121, 0,115,116,101,112,115,105,122,101, 95,116,121,112,101, 0,115, +104, 97,100,101,102,108, 97,103, 0,115,104, 97,100,101, 95,116,121,112,101, 0,112,114,101, 99, 97, 99,104,101, 95,114,101,115, +111,108,117,116,105,111,110, 0,115,116,101,112,115,105,122,101, 0,109,115, 95,100,105,102,102, 0,109,115, 95,105,110,116,101, +110,115,105,116,121, 0,109,115, 95,115,112,114,101, 97,100, 0,109, 97,116,101,114,105, 97,108, 95,116,121,112,101, 0,115,112, +101, 99,114, 0,115,112,101, 99,103, 0,115,112,101, 99, 98, 0,109,105,114,114, 0,109,105,114,103, 0,109,105,114, 98, 0, 97, +109, 98,114, 0, 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, 98, 0,101,109,105,116, 0, 97,110,103, 0,115,112,101, 99,116, +114, 97, 0,114, 97,121, 95,109,105,114,114,111,114, 0, 97,108,112,104, 97, 0,114,101,102, 0,115,112,101, 99, 0,122,111,102, +102,115, 0, 97,100,100, 0,116,114, 97,110,115,108,117, 99,101,110, 99,121, 0,118,111,108, 0,102,114,101,115,110,101,108, 95, +109,105,114, 0,102,114,101,115,110,101,108, 95,109,105,114, 95,105, 0,102,114,101,115,110,101,108, 95,116,114, 97, 0,102,114, +101,115,110,101,108, 95,116,114, 97, 95,105, 0,102,105,108,116,101,114, 0,116,120, 95,108,105,109,105,116, 0,116,120, 95,102, + 97,108,108,111,102,102, 0,114, 97,121, 95,100,101,112,116,104, 0,114, 97,121, 95,100,101,112,116,104, 95,116,114, 97, 0,104, + 97,114, 0,115,101,101,100, 49, 0,115,101,101,100, 50, 0,103,108,111,115,115, 95,109,105,114, 0,103,108,111,115,115, 95,116, +114, 97, 0,115, 97,109,112, 95,103,108,111,115,115, 95,109,105,114, 0,115, 97,109,112, 95,103,108,111,115,115, 95,116,114, 97, + 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,109,105,114, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,116, +114, 97, 0, 97,110,105,115,111, 95,103,108,111,115,115, 95,109,105,114, 0,100,105,115,116, 95,109,105,114, 0,102, 97,100,101, +116,111, 95,109,105,114, 0,115,104, 97,100,101, 95,102,108, 97,103, 0,109,111,100,101, 95,108, 0,102,108, 97,114,101, 99, 0, +115,116, 97,114, 99, 0,108,105,110,101, 99, 0,114,105,110,103, 99, 0,104, 97,115,105,122,101, 0,102,108, 97,114,101,115,105, +122,101, 0,115,117, 98,115,105,122,101, 0,102,108, 97,114,101, 98,111,111,115,116, 0,115,116,114, 97,110,100, 95,115,116, 97, + 0,115,116,114, 97,110,100, 95,101,110,100, 0,115,116,114, 97,110,100, 95,101, 97,115,101, 0,115,116,114, 97,110,100, 95,115, +117,114,102,110,111,114, 0,115,116,114, 97,110,100, 95,109,105,110, 0,115,116,114, 97,110,100, 95,119,105,100,116,104,102, 97, +100,101, 0,115,116,114, 97,110,100, 95,117,118,110, 97,109,101, 91, 51, 50, 93, 0,115, 98,105, 97,115, 0,108, 98,105, 97,115, + 0,115,104, 97,100, 95, 97,108,112,104, 97, 0,115,101,112,116,101,120, 0,114,103, 98,115,101,108, 0,112,114, 95,116,121,112, +101, 0,112,114, 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109,112, 0,109,108, 95,102,108, 97,103, 0,100,105,102,102, 95,115, +104, 97,100,101,114, 0,115,112,101, 99, 95,115,104, 97,100,101,114, 0,114,111,117,103,104,110,101,115,115, 0,114,101,102,114, + 97, 99, 0,112, 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0,100, 97,114,107,110,101,115,115, 0, 42,114, 97,109,112, 95, 99, +111,108, 0, 42,114, 97,109,112, 95,115,112,101, 99, 0,114, 97,109,112,105,110, 95, 99,111,108, 0,114, 97,109,112,105,110, 95, +115,112,101, 99, 0,114, 97,109,112, 98,108,101,110,100, 95, 99,111,108, 0,114, 97,109,112, 98,108,101,110,100, 95,115,112,101, + 99, 0,114, 97,109,112, 95,115,104,111,119, 0,112, 97,100, 51, 0,114, 97,109,112,102, 97, 99, 95, 99,111,108, 0,114, 97,109, +112,102, 97, 99, 95,115,112,101, 99, 0, 42,103,114,111,117,112, 0,102,114,105, 99,116,105,111,110, 0,102,104, 0,114,101,102, +108,101, 99,116, 0,102,104,100,105,115,116, 0,120,121,102,114,105, 99,116, 0,100,121,110, 97,109,111,100,101, 0,115,115,115, + 95,114, 97,100,105,117,115, 91, 51, 93, 0,115,115,115, 95, 99,111,108, 91, 51, 93, 0,115,115,115, 95,101,114,114,111,114, 0, +115,115,115, 95,115, 99, 97,108,101, 0,115,115,115, 95,105,111,114, 0,115,115,115, 95, 99,111,108,102, 97, 99, 0,115,115,115, + 95,116,101,120,102, 97, 99, 0,115,115,115, 95,102,114,111,110,116, 0,115,115,115, 95, 98, 97, 99,107, 0,115,115,115, 95,102, +108, 97,103, 0,115,115,115, 95,112,114,101,115,101,116, 0,109, 97,112,116,111, 95,116,101,120,116,117,114,101,100, 0,112, 97, +100, 52, 0,103,112,117,109, 97,116,101,114,105, 97,108, 0,110, 97,109,101, 91, 50, 53, 54, 93, 0, 42, 98, 98, 0,105, 49, 0, +106, 49, 0,107, 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115,101,108, 99,111,108, 49, 0,115,101,108, 99,111,108, 50, 0,113, +117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,101,120,112,121, 0,101,120,112,122, 0,114, 97,100, 0,114, 97,100, 50, 0,115, + 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,101,108,101,109,115, 0,100,105,115,112, 0, 42,101,100,105,116,101,108,101,109, +115, 0, 42, 42,109, 97,116, 0,102,108, 97,103, 50, 0,116,111,116, 99,111,108, 0,119,105,114,101,115,105,122,101, 0,114,101, +110,100,101,114,115,105,122,101, 0,116,104,114,101,115,104, 0, 42,108, 97,115,116,101,108,101,109, 0,118,101, 99, 91, 51, 93, + 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,104,116, 0,104, 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104, +105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110,114, 0,112,110,116,115,117, 0,112,110,116,115,118, 0,114,101, +115,111,108,117, 0,114,101,115,111,108,118, 0,111,114,100,101,114,117, 0,111,114,100,101,114,118, 0,102,108, 97,103,117, 0, +102,108, 97,103,118, 0, 42,107,110,111,116,115,117, 0, 42,107,110,111,116,115,118, 0,116,105,108,116, 95,105,110,116,101,114, +112, 0,114, 97,100,105,117,115, 95,105,110,116,101,114,112, 0, 99,104, 97,114,105,100,120, 0,107,101,114,110, 0,104, 0,110, +117,114, 98, 0, 42,101,100,105,116,110,117,114, 98, 0, 42, 98,101,118,111, 98,106, 0, 42,116, 97,112,101,114,111, 98,106, 0, + 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,112, 97,116,104, 0, 42,107,101,121, 0, 98,101,118, 0,100,114, 97,119, +102,108, 97,103, 0,116,119,105,115,116, 95,109,111,100,101, 0,112, 97,100, 91, 50, 93, 0,116,119,105,115,116, 95,115,109,111, +111,116,104, 0,115,109, 97,108,108, 99, 97,112,115, 95,115, 99, 97,108,101, 0,112, 97,116,104,108,101,110, 0, 98,101,118,114, +101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0,101,120,116, 50, 0,114,101,115,111,108,117, 95,114,101,110, 0, +114,101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117, 0, 42,108, 97,115,116,115,101,108, 0,115,112, 97, 99,101,109, +111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101,100,105,115,116, 0,115,104,101, 97,114, 0,102,115,105,122,101, + 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, 0,117,108,104,101,105,103,104,116, 0,120,111,102, 0,121,111, +102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, 0, 42,115,101,108, 98,111,120,101,115, 0, 42,101,100,105,116, +102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, 42,118,102,111,110,116, 0, 42,118,102,111,110,116, 98, 0, 42, +118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0,115,101,112, 99,104, 97,114, 0, 99,116,105,109,101, 0,116,111, +116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0,115,101,108,115,116, 97,114,116, 0,115,101,108,101,110,100, 0, + 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, 0,101,102,102,101, 99,116, 0, 42,109,102, 97, 99,101, 0, 42, +109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109,118,101,114,116, 0, 42,109,101,100,103,101, 0, 42,100,118,101, +114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107,121, 0, 42,116,101,120, 99,111,109,101,115,104, 0, 42,109,115, +101,108,101, 99,116, 0, 42,101,100,105,116, 95,109,101,115,104, 0,118,100, 97,116, 97, 0,101,100, 97,116, 97, 0,102,100, 97, +116, 97, 0,116,111,116,101,100,103,101, 0,116,111,116,102, 97, 99,101, 0,116,111,116,115,101,108,101, 99,116, 0, 97, 99,116, + 95,102, 97, 99,101, 0,101,100,105,116,102,108, 97,103, 0, 99,117, 98,101,109, 97,112,115,105,122,101, 0,115,109,111,111,116, +104,114,101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98,100,105,118,114, 0,115,117, 98,115,117,114,102,116,121,112,101, + 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,103,101, 0,117,118, 91, 52, 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0, +116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, 97,112, 0,118, 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101, +100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,119,101,105,103,104,116, 0,100,101,102, 95,110,114, 0, 42,100,119, 0, +116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0,110,111, 91, 51, 93, 0,117,118, 91, 50, 93, 0, 99,111, 91, 50, + 93, 0,105,110,100,101,120, 0,102, 0,105, 0,115, 91, 50, 53, 54, 93, 0,116,111,116,100,105,115,112, 0, 40, 42,100,105,115, +112,115, 41, 40, 41, 0,118, 91, 52, 93, 0,109,105,100, 0,118, 91, 50, 93, 0, 42,102, 97, 99,101,115, 0, 42, 99,111,108,102, + 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,118,101,114,116,115, 0,108,101,118,101,108,115, 0,108,101,118,101,108, 95, + 99,111,117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101,119,108,118,108, 0,101,100,103,101,108,118,108, 0,112,105,110, +108,118,108, 0,114,101,110,100,101,114,108,118,108, 0,117,115,101, 95, 99,111,108, 0, 42,101,100,103,101, 95,102,108, 97,103, +115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, 42,118,101,114,116, 95,109, 97,112, 0, 42,101,100,103,101, 95, +109, 97,112, 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42,111,108,100, 95,101,100,103,101,115, 0,115,116, 97, 99,107,105, +110,100,101,120, 0, 42,101,114,114,111,114, 0,109,111,100,105,102,105,101,114, 0,115,117, 98,100,105,118, 84,121,112,101, 0, +114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, 67, 97, 99,104,101, 0, 42,109, 67, 97, 99,104,101, 0,100,101, +102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,101,110,103,116,104, 0,114, 97,110,100,111,109,105,122,101, 0,115,101, +101,100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116, 97,114,116, 95, 99, 97,112, 0, 42,101,110,100, 95, 99, 97,112, 0, 42, + 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, 95,111, 98, 0,111,102,102,115,101,116, 91, 51, 93, 0,115, 99, + 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115,116, 0,102,105,116, 95,116,121,112,101, 0,111,102,102,115,101, +116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105,115, 0,116,111,108,101,114, 97,110, 99,101, 0, 42,109,105,114, +114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103,108,101, 0,118, 97,108,117,101, 0,114,101,115, 0,118, 97,108, + 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, 0,101, 95,102,108, 97,103,115, 0, 98,101,118,101,108, 95, 97, +110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, 91, 51, 50, 93, 0, 42,100,111,109, 97,105,110, 0, 42,102,108, +111,119, 0, 42, 99,111,108,108, 0,116,105,109,101, 0, 42,116,101,120,116,117,114,101, 0,115,116,114,101,110,103,116,104, 0, +100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118,101,108, 0,116,101,120,109, 97,112,112,105,110,103, 0, 42,109, + 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101,114, 95,110, 97,109,101, 91, 51, 50, 93, 0,117,118,108, 97,121, +101,114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,116,111,114,115, 91, 49, 48, 93, 0, 42,105,109, 97,103,101, 0,110,117, +109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112,101, 99,116,120, 0, 97,115,112,101, 99,116,121, 0,115, 99, 97, +108,101,120, 0,115, 99, 97,108,101,121, 0,112,101,114, 99,101,110,116, 0,102, 97, 99,101, 67,111,117,110,116, 0,102, 97, 99, + 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99,101,110,116,101,114, 0,115,116, 97,114,116,120, 0,115,116, 97, +114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111,119, 0,115,112,101,101,100, 0,100, 97,109,112, 0,102, 97,108, +108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105,102,101,116,105,109,101, 0,100,101,102,111,114,109,102,108, 97, +103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, 0,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112, + 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116, 91, 51, 93, 0, 42,105,110,100,101,120, 97,114, 0, +116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, 99,108,111,116,104, 79, 98,106,101, 99,116, 0, 42,115,105,109, + 95,112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114,109,115, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 0, +112,116, 99, 97, 99,104,101,115, 0, 42,120, 0, 42,120,110,101,119, 0, 42,120,111,108,100, 0, 42, 99,117,114,114,101,110,116, + 95,120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, 0, 42, 99,117,114,114,101,110,116, 95,118, 0, 42,109,102, 97, + 99,101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109,102, 97, 99,101,115, 0, 42, 98,118,104,116,114,101,101, 0, 42, +118, 0, 42,100,109, 0, 99,102,114, 97, 0,111,112,101,114, 97,116,105,111,110, 0,118,101,114,116,101,120, 0,116,111,116,105, +110,102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,122,101, 0, 42, 98,105,110,100,105,110,102,108,117,101,110, 99,101, +115, 0, 42, 98,105,110,100,111,102,102,115,101,116,115, 0, 42, 98,105,110,100, 99, 97,103,101, 99,111,115, 0,116,111,116, 99, + 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,100, 0, 42,100,121,110,105,110,102,108,117,101,110, 99,101,115, 0, + 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0,100,121,110,103,114,105,100,115,105,122,101, 0,100,121,110, 99, +101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108,108,119,105,100,116,104, 0, 98,105,110,100,109, 97,116, 91, 52, + 93, 91, 52, 93, 0, 42, 98,105,110,100,119,101,105,103,104,116,115, 0, 42, 98,105,110,100, 99,111,115, 0, 40, 42, 98,105,110, +100,102,117,110, 99, 41, 40, 41, 0, 42,112,115,121,115, 0,116,111,116,100,109,118,101,114,116, 0,116,111,116,100,109,101,100, +103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,111,115,105,116,105,111,110, 0,114, 97,110,100,111,109, 95,112,111,115, +105,116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103,114,111,117,112, 0,112,114,111,116,101, 99,116, 0,108,118,108, + 0,115, 99,117,108,112,116,108,118,108, 0,116,111,116,108,118,108, 0,115,105,109,112,108,101, 0, 42,102,115,115, 0, 42,116, + 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, 0,118,103,114,111,117,112, 95,110, 97,109,101, 91, 51, 50, 93, + 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, 84,121,112,101, 0,115,104,114,105,110,107, 79,112,116,115, 0, +112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, 76,101,118,101,108,115, 0, 42,111,114,105,103,105,110, 0,102, + 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111,114,105,103,105,110, 79,112,116,115, 0,111,102,102,115,101,116, + 95,102, 97, 99, 0, 99,114,101, 97,115,101, 95,105,110,110,101,114, 0, 99,114,101, 97,115,101, 95,111,117,116,101,114, 0, 99, +114,101, 97,115,101, 95,114,105,109, 0, 42,111, 98, 95, 97,120,105,115, 0,115,116,101,112,115, 0,114,101,110,100,101,114, 95, +115,116,101,112,115, 0,105,116,101,114, 0,115, 99,114,101,119, 95,111,102,115, 0, 97,110,103,108,101, 0,112,110,116,115,119, + 0,111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111,112,110,116,115,119, 0,116,121,112,101,117, 0,116,121,112,101, +118, 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, 0,100,117, 0,100,118, 0,100,119, 0, 42,100,101,102, 0, 42, +108, 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42,101,100,105,116,108, 97, +116,116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99,117,108,112,116, 0,112, 97,114,116,121,112,101, 0,112, 97,114, + 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115,117, 98,115,116,114, 91, 51, 50, 93, 0, 42,116,114, 97, 99,107, + 0, 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103,114,111,117,112, 0, 42,112,114,111,120,121, 95,102,114,111,109, + 0, 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, 98, 0, 42,112,111,115,101, 0, 42,103,112,100, 0, 97,118,115, + 0, 42,109,112, 97,116,104, 0, 99,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108,115, 0,100,101,102, 98, 97, +115,101, 0,109,111,100,105,102,105,101,114,115, 0,114,101,115,116,111,114,101, 95,109,111,100,101, 0, 42,109, 97,116, 98,105, +116,115, 0, 97, 99,116, 99,111,108, 0,100,108,111, 99, 91, 51, 93, 0,111,114,105,103, 91, 51, 93, 0,100,115,105,122,101, 91, + 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116, 91, 52, 93, 0,114,111,116, 65,120,105,115, 91, 51, 93, 0,100, +114,111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110,103,108,101, 0,100,114,111,116, 65,110,103,108,101, 0,111, 98, +109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105,110,118, 91, 52, 93, 91, 52, 93, 0,108, 97,121, 0, 99,111,108, + 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,112,114,111,116,101, 99,116,102,108, 97,103, 0,116,114, 97, 99,107, +102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102,108, 97,103, 0,105,112,111,102,108, 97,103, 0,105,112,111,119, +105,110, 0,115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105,115,102,108, 97,103, 0, 98,111,117,110,100,116,121,112,101, 0, +100,117,112,111,110, 0,100,117,112,111,102,102, 0,100,117,112,115,116, 97, 0,100,117,112,101,110,100, 0,115,102, 0,109, 97, +115,115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116,105, 97, 0,102,111,114,109,102, 97, 99,116,111,114, 0,114,100, + 97,109,112,105,110,103, 0,109, 97,114,103,105,110, 0,109, 97,120, 95,118,101,108, 0,109,105,110, 95,118,101,108, 0,109, 95, + 99,111,110,116, 97, 99,116, 80,114,111, 99,101,115,115,105,110,103, 84,104,114,101,115,104,111,108,100, 0,114,111,116,109,111, +100,101, 0,100,116, 0,100,116,120, 0,101,109,112,116,121, 95,100,114, 97,119,116,121,112,101, 0,112, 97,100, 49, 91, 51, 93, + 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0,100,117,112,102, 97, 99,101,115, 99, 97, 0,112,114,111,112, 0, +115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108,101,114,115, 0, 97, 99,116,117, 97,116,111,114,115, 0, 98, 98, +115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, 97,109,101,102,108, 97,103, 0,103, 97,109,101,102,108, 97,103, + 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97,103, 0, 97,110,105,115,111,116,114,111,112,105, 99, 70,114,105, + 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97,105,110,116,115, 0,110,108, 97,115,116,114,105,112,115, 0,104, +111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115,116,101,109, 0, 42,115,111,102,116, 0, 42,100,117,112, 95,103, +114,111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97,103, 0,114,101,115,116,114,105, 99,116,102,108, 97,103, 0,115, +104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, 0,114,101, 99, 97,108, 99,111, 0, 98,111,100,121, 95,116,121, +112,101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 42,100,101,114,105,118,101,100, 68,101,102, +111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97,108, 0,108, 97,115,116, 68, 97,116, 97, 77, 97,115,107, 0,115, +116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0,103,112,117,108, 97,109,112, 0,112, 99, 95,105,100,115, 0, 42, +100,117,112,108,105,108,105,115,116, 0, 99,117,114,105,110,100,101,120, 0, 97, 99,116,105,118,101, 0,111,114,105,103,108, 97, +121, 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116,101,100, 0,111,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111,114, + 99,111, 91, 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111,114, 99,101,102,105,101,108,100, 0,115,104, 97,112,101, 0,116, +101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110,107, 95, 97,120,105,115, 0,122,100,105,114, 0,102, 95,115,116, +114,101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95,102,108,111,119, 0,102, 95,115,105,122,101, 0,102, 95,112,111, +119,101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100,105,115,116, 0,102, 95,112,111,119,101,114, 95,114, 0,109, 97, +120,114, 97,100, 0,109,105,110,114, 97,100, 0,112,100,101,102, 95,100, 97,109,112, 0,112,100,101,102, 95,114,100, 97,109,112, + 0,112,100,101,102, 95,112,101,114,109, 0,112,100,101,102, 95,102,114,105, 99,116, 0,112,100,101,102, 95,114,102,114,105, 99, +116, 0,112,100,101,102, 95,115,116,105, 99,107,110,101,115,115, 0, 97, 98,115,111,114,112,116,105,111,110, 0,112,100,101,102, + 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105,102,116, 0,112,100,101,102, 95,115, 98,111,102,116, 0, 99,108, +117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111,119, 0,107,105,110,107, 95,102,114,101,113, 0,107,105,110,107, + 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0,102,114,101,101, 95,101,110,100, 0,116,101,120, 95,110, 97, 98, +108, 97, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0,119,101,105,103,104,116, 91, 49, 51, 93, 0,103,108,111, 98, 97, +108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93, 0,102,114, 97,109,101, 0,116,111,116,112,111,105,110,116, 0,100, + 97,116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,120, 95, 97,114,114, 97,121, 0, 42,100, 97,116, 97, 91, 56, 93, 0, + 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, 0,115,105,109,102,114, 97,109,101, 0,115,116, 97,114,116,102,114, 97,109,101, + 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, 97,109,101, 0,108, 97,115,116, 95,101,120, 97, 99,116, 0,110, + 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,109,101, 91, 54, 52, 93, 0,105,110,102,111, 91, 54, 52, 93, 0,112, + 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97, 99,104,101, 0, 42,101,100,105,116, 0, 40, 42,102,114,101,101, 95, +101,100,105,116, 41, 40, 41, 0,108,105,110, 83,116,105,102,102, 0, 97,110,103, 83,116,105,102,102, 0,118,111,108,117,109,101, + 0,118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,116,101,114, 97,116,105,111,110,115, 0,100,105,116,101,114, 97,116, +105,111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,115, 0,107, 83, 82, 72, 82, 95, 67, 76, 0,107, 83, 75, 72, 82, 95, + 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 75, 95, 83, 80, 76, 84, + 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 86, 67, 70, 0,107, 68, 80, 0,107, 68, 71, 0,107, 76, 70, + 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77, 84, 0,107, 67, 72, 82, 0,107, 75, 72, 82, 0,107, 83, 72, 82, 0, +107, 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,108, 97,103,115, 0,110,117,109, 99,108,117,115,116,101,114,105,116, +101,114, 97,116,105,111,110,115, 0,119,101,108,100,105,110,103, 0,116,111,116,115,112,114,105,110,103, 0, 42, 98,112,111,105, +110,116, 0, 42, 98,115,112,114,105,110,103, 0,109,115,103, 95,108,111, 99,107, 0,109,115,103, 95,118, 97,108,117,101, 0,110, +111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71, 95, 77, 97,115,115, 91, 51, 50, 93, 0,103,114, 97,118, 0,109,101, +100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, 0,112,104,121,115,105, 99,115, 95,115,112,101,101,100, 0,103, +111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114,105, 99,116, 0,109,105,110,103,111, 97,108, 0,109, 97,120,103, +111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116,103,114,111,117,112, 0,110, 97,109,101,100, 86, 71, 95, 83,111, +102,116,103,111, 97,108, 91, 51, 50, 93, 0,102,117,122,122,121,110,101,115,115, 0,105,110,115,112,114,105,110,103, 0,105,110, +102,114,105, 99,116, 0,110, 97,109,101,100, 86, 71, 95, 83,112,114,105,110,103, 95, 75, 91, 51, 50, 93, 0,101,102,114, 97, 0, +105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115,111,108,118,101,114,102,108, 97,103,115, 0, 42, 42,107,101,121, +115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, 99,111,110,100,115,112,114,105,110,103, 0, 99,111,108, 98, 97, +108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108,115,116,105,102,102, 0,115, 98, 99, 95,109,111,100,101, 0, 97, +101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, 0,109, 97,120,108,111,111,112,115, 0, 99,104,111,107,101, 0, +115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, 99, 0,115,112,114,105,110,103,112,114,101,108,111, 97,100, 0, + 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116,105,102,102, 0,105,110,112,117,115,104, 0, 42,112,111,105,110, +116, 99, 97, 99,104,101, 0, 42,101,102,102,101, 99,116,111,114, 95,119,101,105,103,104,116,115, 0,108, 99,111,109, 91, 51, 93, + 0,108,114,111,116, 91, 51, 93, 91, 51, 93, 0,108,115, 99, 97,108,101, 91, 51, 93, 91, 51, 93, 0,112, 97,100, 52, 91, 52, 93, + 0, 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,101,100,111,112,116,105,111,110,115, 0,114,101,115,111,108, +117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119,114,101,115,120,121,122, 0,114,101, 97,108,115,105,122,101, 0, +103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114,101,110,100,101,114, 68,105,115,112,108, 97,121, 77,111,100,101, + 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0,118,105,115, 99,111,115,105,116,121, 77,111,100,101, 0,118,105, +115, 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0,103,114, 97,118,120, 0,103,114, 97,118,121, 0,103,114, 97,118, +122, 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, 69,110,100, 0, 98, 97,107,101, 83,116, 97,114,116, 0, 98, 97, +107,101, 69,110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82,101,102,105,110,101, 0,105,110,105, 86,101,108,120, 0,105,110, +105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111,114,103, 77,101,115,104, 0, 42,109,101,115,104, 83,117,114,102, + 97, 99,101, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102,100, 97,116, 97, 80, 97,116,104, 91, 50, 52, 48, 93, 0, 98, 98, + 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, 51, 93, 0,116,121,112,101, 70,108, 97,103,115, 0,100,111,109, + 97,105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117,109,101, 73,110,105,116, 84,121,112,101, 0,112, 97,114,116, 83, +108,105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116,101, 84,114, 97, 99,101,114,115, 0,103,101,110,101,114, 97,116, +101, 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, 99,101, 83,109,111,111,116,104,105,110,103, 0,115,117,114,102, + 97, 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 83,105,122,101, 0,112, 97,114,116,105, + 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70,105,101,108,100, 83,105,122,101, 0, 42,109,101,115,104, 83,117, +114,102, 78,111,114,109, 97,108,115, 0, 99,112,115, 84,105,109,101, 83,116, 97,114,116, 0, 99,112,115, 84,105,109,101, 69,110, +100, 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 83,116,114,101,110,103,116, +104, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97,100,105,117,115, 0,118,101,108,111, 99,105,116,121,102,111,114, + 99,101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 82, 97,100,105,117,115, 0,108, + 97,115,116,103,111,111,100,102,114, 97,109,101, 0,109,105,115,116,121,112,101, 0,104,111,114,114, 0,104,111,114,103, 0,104, +111,114, 98, 0,104,111,114,107, 0,122,101,110,114, 0,122,101,110,103, 0,122,101,110, 98, 0,122,101,110,107, 0, 97,109, 98, +107, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101,120,112, 0,114, 97,110,103,101, 0,108,105,110, +102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97, 99,116,105,118,105,116,121, 66,111,120, 82, 97, +100,105,117,115, 0,115,107,121,116,121,112,101, 0,111, 99, 99,108,117,115,105,111,110, 82,101,115, 0,112,104,121,115,105, 99, +115, 69,110,103,105,110,101, 0,116,105, 99,114, 97,116,101, 0,109, 97,120,108,111,103,105, 99,115,116,101,112, 0,112,104,121, +115,117, 98,115,116,101,112, 0,109, 97,120,112,104,121,115,116,101,112, 0,109,105,115,105, 0,109,105,115,116,115,116, 97, 0, +109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0,115,116, 97,114,114, 0,115,116, 97,114,103, 0,115,116, 97,114, + 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, 0,115,116, 97,114,109,105,110,100,105,115,116, 0,115,116, 97, +114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105,115,101, 0,100,111,102,115,116, 97, 0,100,111,102,101,110,100, + 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97,111,100,105,115,116, 0, 97,111,100,105,115,116,102, 97, 99, 0, + 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, 97,111,109,111,100,101, 0, 97,111,115, 97,109,112, 0, 97,111, +109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0, 97,111, 95, 97, +100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97,111, 95, 97,112,112,114,111,120, 95,101,114,114,111,114, 0, 97, +111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116,105,111,110, 0, 97,111, 95,105,110,100,105,114,101, 99,116, 95, +101,110,101,114,103,121, 0, 97,111, 95,101,110,118, 95,101,110,101,114,103,121, 0, 97,111, 95,112, 97,100, 50, 0, 97,111, 95, +105,110,100,105,114,101, 99,116, 95, 98,111,117,110, 99,101,115, 0, 97,111, 95,112, 97,100, 0, 97,111, 95,115, 97,109,112, 95, +109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, 95,109,101,116,104,111,100, 0, 97,111, 95, 97,112,112,114,111, +120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101,114,101, 0, 42, 97,111,116, 97, 98,108,101,115, 0,112, 97,100, + 91, 51, 93, 0,115,101,108, 99,111,108, 0,115,120, 0,115,121, 0, 42,108,112, 70,111,114,109, 97,116, 0, 42,108,112, 80, 97, +114,109,115, 0, 99, 98, 70,111,114,109, 97,116, 0, 99, 98, 80, 97,114,109,115, 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99, + 72, 97,110,100,108,101,114, 0,100,119, 75,101,121, 70,114, 97,109,101, 69,118,101,114,121, 0,100,119, 81,117, 97,108,105,116, +121, 0,100,119, 66,121,116,101,115, 80,101,114, 83,101, 99,111,110,100, 0,100,119, 70,108, 97,103,115, 0,100,119, 73,110,116, +101,114,108,101, 97,118,101, 69,118,101,114,121, 0, 97,118,105, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, + 99,100, 80, 97,114,109,115, 0, 42,112, 97,100, 0, 99,100, 83,105,122,101, 0,113,116, 99,111,100,101, 99,110, 97,109,101, 91, + 49, 50, 56, 93, 0, 99,111,100,101, 99, 84,121,112,101, 0, 99,111,100,101, 99, 83,112, 97,116,105, 97,108, 81,117, 97,108,105, +116,121, 0, 99,111,100,101, 99, 0, 99,111,100,101, 99, 70,108, 97,103,115, 0, 99,111,108,111,114, 68,101,112,116,104, 0, 99, +111,100,101, 99, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 83,112, 97,116,105, 97,108, 81,117, + 97,108,105,116,121, 0,109,105,110, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0,107,101,121, 70,114, 97,109, +101, 82, 97,116,101, 0, 98,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 99,111,100,101, 99, 84,121,112,101, 0, 97,117,100, +105,111, 83, 97,109,112,108,101, 82, 97,116,101, 0, 97,117,100,105,111, 66,105,116, 68,101,112,116,104, 0, 97,117,100,105,111, + 67,104, 97,110,110,101,108,115, 0, 97,117,100,105,111, 67,111,100,101, 99, 70,108, 97,103,115, 0, 97,117,100,105,111, 66,105, +116, 82, 97,116,101, 0, 97,117,100,105,111, 95, 99,111,100,101, 99, 0,118,105,100,101,111, 95, 98,105,116,114, 97,116,101, 0, + 97,117,100,105,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95,109,105,120,114, 97,116,101, 0, 97,117,100,105, +111, 95,118,111,108,117,109,101, 0,103,111,112, 95,115,105,122,101, 0,114, 99, 95,109,105,110, 95,114, 97,116,101, 0,114, 99, + 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102,102,101,114, 95,115,105,122,101, 0,109,117,120, 95,112, 97, 99, +107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116,101, 0,109,105,120,114, 97,116,101, 0,109, 97,105,110, 0,115, +112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,111,112,112,108,101,114, 95,102, 97, 99,116,111,114, 0,100,105,115, +116, 97,110, 99,101, 95,109,111,100,101,108, 0, 42,109, 97,116, 95,111,118,101,114,114,105,100,101, 0, 42,108,105,103,104,116, + 95,111,118,101,114,114,105,100,101, 0,108, 97,121, 95,122,109, 97,115,107, 0,108, 97,121,102,108, 97,103, 0,112, 97,115,115, +102,108, 97,103, 0,112, 97,115,115, 95,120,111,114, 0, 42, 97,118,105, 99,111,100,101, 99,100, 97,116, 97, 0, 42,113,116, 99, +111,100,101, 99,100, 97,116, 97, 0,113,116, 99,111,100,101, 99,115,101,116,116,105,110,103,115, 0,102,102, 99,111,100,101, 99, +100, 97,116, 97, 0,115,117, 98,102,114, 97,109,101, 0,112,115,102,114, 97, 0,112,101,102,114, 97, 0,105,109, 97,103,101,115, + 0,102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97,100,115, 0,102,114, 97,109,101,108,101,110, 0, 98,108,117,114,102, + 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101,100,103,101, 66, 0,102,117,108,108,115, 99,114,101,101,110, 0, +120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113,112,108, 97,121, 0, 97,116,116,114,105, 98, 0,114,116, 50, 0, +102,114, 97,109,101, 95,115,116,101,112, 0,115,116,101,114,101,111,109,111,100,101, 0,100,105,109,101,110,115,105,111,110,115, +112,114,101,115,101,116, 0,109, 97,120,105,109,115,105,122,101, 0,120,115, 99,104, 0,121,115, 99,104, 0,120,112, 97,114,116, +115, 0,121,112, 97,114,116,115, 0,119,105,110,112,111,115, 0,112,108, 97,110,101,115, 0,105,109,116,121,112,101, 0,115,117, + 98,105,109,116,121,112,101, 0,113,117, 97,108,105,116,121, 0,100,105,115,112,108, 97,121,109,111,100,101, 0,114,112, 97,100, + 49, 0,114,112, 97,100, 50, 0,115, 99,101,109,111,100,101, 0,114, 97,121,116,114, 97, 99,101, 95,111,112,116,105,111,110,115, + 0,114, 97,121,116,114, 97, 99,101, 95,115,116,114,117, 99,116,117,114,101, 0,114,101,110,100,101,114,101,114, 0,111, 99,114, +101,115, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, 0,102,114,115, 95,115,101, 99, 0,101,100,103,101,105,110,116, + 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100,105,115,112,114,101, 99,116, 0,108, 97,121,101,114,115, 0, 97, + 99,116,108, 97,121, 0,109, 98,108,117,114, 95,115, 97,109,112,108,101,115, 0,120, 97,115,112, 0,121, 97,115,112, 0,102,114, +115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, 0, 99,111,108,111,114, 95,109,103,116, 95,102,108, 97,103, 0, +112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117,101, 0,112,111,115,116,115, 97,116, 0,100,105,116,104,101,114, + 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95,111,115, 97, 0, 98, 97,107,101, 95,102,105,108,116,101,114, 0, + 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102,108, 97,103, 0, 98, 97,107,101, 95,110,111,114,109, 97,108, 95, +115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95,115,112,108,105,116, 0, 98, 97,107,101, 95,109, 97,120,100,105, +115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, 0, 98, 97,107,101, 95,112, 97,100, 0, 98, 97, 99,107, 98,117, +102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0,115,116, 97,109,112, 0,115,116, 97,109,112, 95,102,111,110,116, + 95,105,100, 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, 49, 54, 48, 93, 0,102,103, 95,115,116, 97,109,112, 91, 52, 93, + 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, 0,115,101,113, 95,112,114,101,118, 95,116,121,112,101, 0,115,101,113, 95,114, +101,110,100, 95,116,121,112,101, 0,115,101,113, 95,102,108, 97,103, 0,112, 97,100, 53, 91, 53, 93, 0,115,105,109,112,108,105, +102,121, 95,102,108, 97,103, 0,115,105,109,112,108,105,102,121, 95,115,117, 98,115,117,114,102, 0,115,105,109,112,108,105,102, +121, 95,115,104, 97,100,111,119,115, 97,109,112,108,101,115, 0,115,105,109,112,108,105,102,121, 95,112, 97,114,116,105, 99,108, +101,115, 0,115,105,109,112,108,105,102,121, 95, 97,111,115,115,115, 0, 99,105,110,101,111,110,119,104,105,116,101, 0, 99,105, +110,101,111,110, 98,108, 97, 99,107, 0, 99,105,110,101,111,110,103, 97,109,109, 97, 0,106,112, 50, 95,112,114,101,115,101,116, + 0,106,112, 50, 95,100,101,112,116,104, 0,114,112, 97,100, 51, 0,100,111,109,101,114,101,115, 0,100,111,109,101,109,111,100, +101, 0,100,111,109,101, 97,110,103,108,101, 0,100,111,109,101,116,105,108,116, 0,100,111,109,101,114,101,115, 98,117,102, 0, + 42,100,111,109,101,116,101,120,116, 0,101,110,103,105,110,101, 91, 51, 50, 93, 0,112, 97,114,116,105, 99,108,101, 95,112,101, +114, 99, 0,115,117, 98,115,117,114,102, 95,109, 97,120, 0,115,104, 97,100, 98,117,102,115, 97,109,112,108,101, 95,109, 97,120, + 0, 97,111, 95,101,114,114,111,114, 0,116,105,108,116, 0,114,101,115, 98,117,102, 0, 42,119, 97,114,112,116,101,120,116, 0, + 99,111,108, 91, 51, 93, 0,109, 97,116,109,111,100,101, 0,102,114, 97,109,105,110,103, 0,114,116, 49, 0,100,111,109,101, 0, +115,116,101,114,101,111,102,108, 97,103, 0,101,121,101,115,101,112, 97,114, 97,116,105,111,110, 0, 42, 99, 97,109,101,114, 97, + 0, 42, 42, 98,114,117,115,104,101,115, 0, 97, 99,116,105,118,101, 95, 98,114,117,115,104, 95,105,110,100,101,120, 0, 98,114, +117,115,104, 95, 99,111,117,110,116, 0, 42,112, 97,105,110,116, 95, 99,117,114,115,111,114, 0,112, 97,105,110,116, 95, 99,117, +114,115,111,114, 95, 99,111,108, 91, 52, 93, 0,112, 97,105,110,116, 0,115,101, 97,109, 95, 98,108,101,101,100, 0,110,111,114, +109, 97,108, 95, 97,110,103,108,101, 0,115, 99,114,101,101,110, 95,103,114, 97, 98, 95,115,105,122,101, 91, 50, 93, 0, 42,112, + 97,105,110,116, 99,117,114,115,111,114, 0,105,110,118,101,114,116, 0,116,111,116,114,101,107,101,121, 0,116,111,116, 97,100, +100,107,101,121, 0, 98,114,117,115,104,116,121,112,101, 0, 98,114,117,115,104, 91, 55, 93, 0,101,109,105,116,116,101,114,100, +105,115,116, 0,115,101,108,101, 99,116,109,111,100,101, 0,101,100,105,116,116,121,112,101, 0,100,114, 97,119, 95,115,116,101, +112, 0,102, 97,100,101, 95,102,114, 97,109,101,115, 0,110, 97,109,101, 91, 51, 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, 93, + 0,114, 97,100,105, 97,108, 95,115,121,109,109, 91, 51, 93, 0,108, 97,115,116, 95,120, 0,108, 97,115,116, 95,121, 0,108, 97, +115,116, 95, 97,110,103,108,101, 0,100,114, 97,119, 95, 97,110, 99,104,111,114,101,100, 0, 97,110, 99,104,111,114,101,100, 95, +115,105,122,101, 0, 97,110, 99,104,111,114,101,100, 95,108,111, 99, 97,116,105,111,110, 91, 51, 93, 0, 97,110, 99,104,111,114, +101,100, 95,105,110,105,116,105, 97,108, 95,109,111,117,115,101, 91, 50, 93, 0,100,114, 97,119, 95,112,114,101,115,115,117,114, +101, 0,112,114,101,115,115,117,114,101, 95,118, 97,108,117,101, 0,115,112,101, 99,105, 97,108, 95,114,111,116, 97,116,105,111, +110, 0, 42,118,112, 97,105,110,116, 95,112,114,101,118, 0, 42,119,112, 97,105,110,116, 95,112,114,101,118, 0, 42,118,112, 97, +105,110,116, 0, 42,119,112, 97,105,110,116, 0,118,103,114,111,117,112, 95,119,101,105,103,104,116, 0, 99,111,114,110,101,114, +116,121,112,101, 0,101,100,105,116, 98,117,116,102,108, 97,103, 0,106,111,105,110,116,114,105,108,105,109,105,116, 0,100,101, +103,114, 0,116,117,114,110, 0,101,120,116,114, 95,111,102,102,115, 0,100,111,117, 98,108,105,109,105,116, 0,110,111,114,109, + 97,108,115,105,122,101, 0, 97,117,116,111,109,101,114,103,101, 0,115,101,103,109,101,110,116,115, 0,114,105,110,103,115, 0, +118,101,114,116,105, 99,101,115, 0,117,110,119,114, 97,112,112,101,114, 0,117,118, 99, 97,108, 99, 95,114, 97,100,105,117,115, + 0,117,118, 99, 97,108, 99, 95, 99,117, 98,101,115,105,122,101, 0,117,118, 99, 97,108, 99, 95,109, 97,114,103,105,110, 0,117, +118, 99, 97,108, 99, 95,109, 97,112,100,105,114, 0,117,118, 99, 97,108, 99, 95,109, 97,112, 97,108,105,103,110, 0,117,118, 99, + 97,108, 99, 95,102,108, 97,103, 0,117,118, 95,102,108, 97,103, 0,117,118, 95,115,101,108,101, 99,116,109,111,100,101, 0,117, +118, 95,112, 97,100, 91, 50, 93, 0, 97,117,116,111,105,107, 95, 99,104, 97,105,110,108,101,110, 0,105,109, 97,112, 97,105,110, +116, 0,112, 97,114,116,105, 99,108,101, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 95,115,105,122,101, 0,115,101,108, +101, 99,116, 95,116,104,114,101,115,104, 0, 99,108,101, 97,110, 95,116,104,114,101,115,104, 0, 97,117,116,111,107,101,121, 95, +109,111,100,101, 0, 97,117,116,111,107,101,121, 95,102,108, 97,103, 0,114,101,116,111,112,111, 95,109,111,100,101, 0,114,101, +116,111,112,111, 95,112, 97,105,110,116, 95,116,111,111,108, 0,108,105,110,101, 95,100,105,118, 0,101,108,108,105,112,115,101, + 95,100,105,118, 0,114,101,116,111,112,111, 95,104,111,116,115,112,111,116, 0,109,117,108,116,105,114,101,115, 95,115,117, 98, +100,105,118, 95,116,121,112,101, 0,115,107,103,101,110, 95,114,101,115,111,108,117,116,105,111,110, 0,115,107,103,101,110, 95, +116,104,114,101,115,104,111,108,100, 95,105,110,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111, +108,100, 95,101,120,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,114, 97,116,105,111, 0,115, +107,103,101,110, 95,108,101,110,103,116,104, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 97,110,103,108,101, 95,108,105, +109,105,116, 0,115,107,103,101,110, 95, 99,111,114,114,101,108, 97,116,105,111,110, 95,108,105,109,105,116, 0,115,107,103,101, +110, 95,115,121,109,109,101,116,114,121, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95, + 97,110,103,108,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,108,101,110,103, +116,104, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,100,105,115,116, 97,110, 99, +101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,112,111,115, +116,112,114,111, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 95,112, 97,115,115,101,115, 0,115,107,103,101,110, 95, +115,117, 98,100,105,118,105,115,105,111,110,115, 91, 51, 93, 0,115,107,103,101,110, 95,109,117,108,116,105, 95,108,101,118,101, +108, 0, 42,115,107,103,101,110, 95,116,101,109,112,108, 97,116,101, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, + 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 95, 99,111,110,118,101,114,116, 0,115,107,103,101,110, 95,115,117, + 98,100,105,118,105,115,105,111,110, 95,110,117,109, 98,101,114, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95, +111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,114,111,108,108, 0,115,107,103,101, +110, 95,115,105,100,101, 95,115,116,114,105,110,103, 91, 56, 93, 0,115,107,103,101,110, 95,110,117,109, 95,115,116,114,105,110, +103, 91, 56, 93, 0,101,100,103,101, 95,109,111,100,101, 0,115,110, 97,112, 95,109,111,100,101, 0,115,110, 97,112, 95,102,108, + 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 0,112,114,111,112, + 95,109,111,100,101, 0, 97,117,116,111, 95,110,111,114,109, 97,108,105,122,101, 0,105,110,116,112, 97,100, 0,116,111,116,111, + 98,106, 0,116,111,116,108, 97,109,112, 0,116,111,116,111, 98,106,115,101,108, 0,116,111,116, 99,117,114,118,101, 0,116,111, +116,109,101,115,104, 0,116,111,116, 97,114,109, 97,116,117,114,101, 0,115, 99, 97,108,101, 95,108,101,110,103,116,104, 0,115, +121,115,116,101,109, 0,103,114, 97,118,105,116,121, 91, 51, 93, 0,113,117,105, 99,107, 95, 99, 97, 99,104,101, 95,115,116,101, +112, 0, 42,119,111,114,108,100, 0, 42,115,101,116, 0, 98, 97,115,101, 0, 42, 98, 97,115, 97, 99,116, 0, 42,111, 98,101,100, +105,116, 0, 99,117,114,115,111,114, 91, 51, 93, 0,116,119, 99,101,110,116, 91, 51, 93, 0,116,119,109,105,110, 91, 51, 93, 0, +116,119,109, 97,120, 91, 51, 93, 0,108, 97,121, 97, 99,116, 0, 42,101,100, 0, 42,116,111,111,108,115,101,116,116,105,110,103, +115, 0, 42,115,116, 97,116,115, 0, 97,117,100,105,111, 0,116,114, 97,110,115,102,111,114,109, 95,115,112, 97, 99,101,115, 0, + 42,115,111,117,110,100, 95,115, 99,101,110,101, 0, 42,115,111,117,110,100, 95,115, 99,101,110,101, 95,104, 97,110,100,108,101, + 0, 42,102,112,115, 95,105,110,102,111, 0, 42,116,104,101, 68, 97,103, 0,100, 97,103,105,115,118, 97,108,105,100, 0,100, 97, +103,102,108, 97,103,115, 0,106,117,109,112,102,114, 97,109,101, 0,112, 97,100, 53, 0, 97, 99,116,105,118,101, 95,107,101,121, +105,110,103,115,101,116, 0,107,101,121,105,110,103,115,101,116,115, 0,103,109, 0,117,110,105,116, 0,112,104,121,115,105, 99, +115, 95,115,101,116,116,105,110,103,115, 0, 98,108,101,110,100, 0,118,105,101,119, 0,119,105,110,109, 97,116, 91, 52, 93, 91, + 52, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,105,110,118, 91, 52, 93, 91, 52, 93, 0,112, +101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,105,110,118, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, + 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,116,119,109, 97,116, + 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,122,102, 97, 99, 0, 99, 97,109,100,120, 0, 99, 97, +109,100,121, 0,112,105,120,115,105,122,101, 0, 99, 97,109,122,111,111,109, 0,118,105,101,119, 98,117,116, 0,116,119,100,114, + 97,119,102,108, 97,103, 0,114,102,108, 97,103, 0,118,105,101,119,108,111, 99,107, 0,112,101,114,115,112, 0, 99,108,105,112, + 91, 54, 93, 91, 52, 93, 0, 99,108,105,112, 95,108,111, 99, 97,108, 91, 54, 93, 91, 52, 93, 0, 42, 99,108,105,112, 98, 98, 0, + 42,108,111, 99, 97,108,118,100, 0, 42,114,105, 0, 42,114,101,116,111,112,111, 95,118,105,101,119, 95,100, 97,116, 97, 0, 42, +100,101,112,116,104,115, 0, 42,115,109,115, 0, 42,115,109,111,111,116,104, 95,116,105,109,101,114, 0,108,118,105,101,119,113, +117, 97,116, 91, 52, 93, 0,108,112,101,114,115,112, 0,108,118,105,101,119, 0,103,114,105,100,118,105,101,119, 0,116,119, 97, +110,103,108,101, 91, 51, 93, 0,112, 97,100,102, 0,114,101,103,105,111,110, 98, 97,115,101, 0,115,112, 97, 99,101,116,121,112, +101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, 99,107,104, 97,110,100,108,101,114, 91, 56, 93, 0,108, 97,121, + 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0, 98,103,112,105, 99, 98, 97,115,101, 0, 42, 98,103,112,105, + 99, 0,111, 98, 95, 99,101,110,116,114,101, 95, 98,111,110,101, 91, 51, 50, 93, 0,100,114, 97,119,116,121,112,101, 0,115, 99, +101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0,112,105,118,111,116, 95,108, 97,115,116, 0,103,114,105,100, 0,110, +101, 97,114, 0,102, 97,114, 0,103,114,105,100,108,105,110,101,115, 0,103,114,105,100,102,108, 97,103, 0,103,114,105,100,115, +117, 98,100,105,118, 0,109,111,100,101,115,101,108,101, 99,116, 0,107,101,121,102,108, 97,103,115, 0,116,119,116,121,112,101, + 0,116,119,109,111,100,101, 0,116,119,102,108, 97,103, 0, 99,117,115,116,111,109,100, 97,116, 97, 95,109, 97,115,107, 0, 97, +102,116,101,114,100,114, 97,119, 0,122, 98,117,102, 0,120,114, 97,121, 0,110,100,111,102,109,111,100,101, 0,110,100,111,102, +102,105,108,116,101,114, 0, 42,112,114,111,112,101,114,116,105,101,115, 95,115,116,111,114, 97,103,101, 0,118,101,114,116, 0, +104,111,114, 0,109, 97,115,107, 0,109,105,110, 91, 50, 93, 0,109, 97,120, 91, 50, 93, 0,109,105,110,122,111,111,109, 0,109, + 97,120,122,111,111,109, 0,115, 99,114,111,108,108, 0,115, 99,114,111,108,108, 95,117,105, 0,107,101,101,112,116,111,116, 0, +107,101,101,112,122,111,111,109, 0,107,101,101,112,111,102,115, 0, 97,108,105,103,110, 0,119,105,110,120, 0,119,105,110,121, + 0,111,108,100,119,105,110,120, 0,111,108,100,119,105,110,121, 0, 42,116, 97, 98, 95,111,102,102,115,101,116, 0,116, 97, 98, + 95,110,117,109, 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99,114,101,101,110, 0,118, 50,100, 0, 42, 97,100,115, 0,103,104, +111,115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, 97,112, 0, 99,117,114,115,111,114, 86, 97,108, 0,109, 97,105, +110, 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117,115,101,114, 0,114,101, 95, 97,108,105,103,110, 0,112,114,101, +118,105,101,119, 0,112, 97,116,104,102,108, 97,103, 0,100, 97,116, 97,105, 99,111,110, 0, 42,112,105,110,105,100, 0,114,101, +110,100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104,111,119,110, 0,122,101, 98,114, 97, 0,122,111,111,109, 0,116, +105,116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,102,105,108,101, 91, 56, 48, 93, 0,114,101,110, 97,109, +101,102,105,108,101, 91, 56, 48, 93, 0,115,111,114,116, 0,100,105,115,112,108, 97,121, 0, 97, 99,116,105,118,101, 95, 98,111, +111,107,109, 97,114,107, 0, 97, 99,116,105,118,101, 95,102,105,108,101, 0,115,101,108,115,116, 97,116,101, 0,102, 95,102,112, + 0,102,112, 95,115,116,114, 91, 56, 93, 0,115, 99,114,111,108,108, 95,111,102,102,115,101,116, 0, 42,112, 97,114, 97,109,115, + 0, 42,102,105,108,101,115, 0, 42,102,111,108,100,101,114,115, 95,112,114,101,118, 0, 42,102,111,108,100,101,114,115, 95,110, +101,120,116, 0, 42,111,112, 0, 42,115,109,111,111,116,104,115, 99,114,111,108,108, 95,116,105,109,101,114, 0, 42,108, 97,121, +111,117,116, 0,114,101, 99,101,110,116,110,114, 0, 98,111,111,107,109, 97,114,107,110,114, 0,115,121,115,116,101,109,110,114, + 0,116,114,101,101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97,114, 99,104, 95,115,116,114,105,110,103, 91, 51, + 50, 93, 0,115,101, 97,114, 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, 95,102,108, 97,103,115, 0,100,111, 95, 0,111, +117,116,108,105,110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0, 42, 99,117,109, 97,112, 0,105,109, 97,110,114, + 0, 99,117,114,116,105,108,101, 0,105,109,116,121,112,101,110,114, 0,108,111, 99,107, 0,112,105,110, 0,100,116, 95,117,118, + 0,115,116,105, 99,107,121, 0,100,116, 95,117,118,115,116,114,101,116, 99,104, 0, 99,117,114,115,111,114, 91, 50, 93, 0, 99, +101,110,116,120, 0, 99,101,110,116,121, 0,115, 99,111,112,101,115, 0,115, 97,109,112,108,101, 95,108,105,110,101, 95,104,105, +115,116, 0, 42,116,101,120,116, 0,116,111,112, 0,118,105,101,119,108,105,110,101,115, 0,108,104,101,105,103,104,116, 0, 99, +119,105,100,116,104, 0,108,105,110,101,110,114,115, 95,116,111,116, 0,108,101,102,116, 0,115,104,111,119,108,105,110,101,110, +114,115, 0,116, 97, 98,110,117,109, 98,101,114, 0,115,104,111,119,115,121,110,116, 97,120, 0,111,118,101,114,119,114,105,116, +101, 0,108,105,118,101, 95,101,100,105,116, 0,112,105,120, 95,112,101,114, 95,108,105,110,101, 0,116,120,116,115, 99,114,111, +108,108, 0,116,120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100,111,112,108,117,103,105,110,115, 0,102,105,110, +100,115,116,114, 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99,101,115,116,114, 91, 50, 53, 54, 93, 0, 42,112,121, 95,100,114, + 97,119, 0, 42,112,121, 95,101,118,101,110,116, 0, 42,112,121, 95, 98,117,116,116,111,110, 0, 42,112,121, 95, 98,114,111,119, +115,101,114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,111, 98, 97,108,100,105, 99,116, 0,108, 97,115,116,115, +112, 97, 99,101, 0,115, 99,114,105,112,116,110, 97,109,101, 91, 50, 53, 54, 93, 0,115, 99,114,105,112,116, 97,114,103, 91, 50, + 53, 54, 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,117,116, 95,114,101,102,115, 0, 42, 97,114,114, 97,121, 0, 99, 97, 99, +104,101,115, 0, 99, 97, 99,104,101, 95,100,105,115,112,108, 97,121, 0,114,101,100,114, 97,119,115, 0, 42,105,100, 0, 97,115, +112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, 0,109,121, 0, 42,101,100,105,116,116,114,101,101, 0,116,114, +101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,109,101,110,117, 0,110,117,109,116,105,108,101,115,120, 0,110,117, +109,116,105,108,101,115,121, 0,118,105,101,119,114,101, 99,116, 0, 98,111,111,107,109, 97,114,107,114,101, 99,116, 0,115, 99, +114,111,108,108,112,111,115, 0,115, 99,114,111,108,108,104,101,105,103,104,116, 0,115, 99,114,111,108,108, 97,114,101, 97, 0, +114,101,116,118, 97,108, 0,112,114,118, 95,119, 0,112,114,118, 95,104, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 41, + 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95,101,118,101,110,116, 41, 40, 41, 0, 40, 42,114,101,116,117,114, +110,102,117,110, 99, 95, 97,114,103,115, 41, 40, 41, 0, 42, 97,114,103, 49, 0, 42, 97,114,103, 50, 0, 42,109,101,110,117,112, + 0, 42,112,117,112,109,101,110,117, 0, 42,105,109,103, 0,108,101,110, 95, 97,108,108,111, 99, 0, 99,117,114,115,111,114, 0, +114,112,116, 95,109, 97,115,107, 0,115, 99,114,111,108,108, 98, 97, 99,107, 0,104,105,115,116,111,114,121, 0,112,114,111,109, +112,116, 91, 50, 53, 54, 93, 0,108, 97,110,103,117, 97,103,101, 91, 51, 50, 93, 0,115,101,108, 95,115,116, 97,114,116, 0,115, +101,108, 95,101,110,100, 0,102,105,108,116,101,114, 91, 54, 52, 93, 0,102,105,108,101,110, 97,109,101, 91, 50, 53, 54, 93, 0, + 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,100, 0,114, 95,116,111, 95,108, 0,112,111,105,110,116,115, 0,107, +101,114,110,105,110,103, 0,105,116, 97,108,105, 99, 0, 98,111,108,100, 0,115,104, 97,100,111,119, 0,115,104, 97,100,120, 0, +115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, 97, 0,115,104, 97,100,111,119, 99,111,108,111,114, 0,112, 97, +110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, 98,101,108, 0,119,105,100,103,101,116,108, 97, 98,101,108, 0, +119,105,100,103,101,116, 0,112, 97,110,101,108,122,111,111,109, 0,109,105,110,108, 97, 98,101,108, 99,104, 97,114,115, 0,109, +105,110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111,108,117,109,110,115,112, 97, 99,101, 0,116,101,109,112,108, 97, +116,101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, 0, 98,117,116,116,111,110,115,112, 97, 99,101,120, 0, 98,117, +116,116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108,115,112, 97, 99,101, 0,112, 97,110,101,108,111,117,116,101,114, + 0,112, 97,100, 91, 49, 93, 0,111,117,116,108,105,110,101, 91, 52, 93, 0,105,110,110,101,114, 91, 52, 93, 0,105,110,110,101, +114, 95,115,101,108, 91, 52, 93, 0,105,116,101,109, 91, 52, 93, 0,116,101,120,116, 91, 52, 93, 0,116,101,120,116, 95,115,101, +108, 91, 52, 93, 0,115,104, 97,100,101,100, 0,115,104, 97,100,101,116,111,112, 0,115,104, 97,100,101,100,111,119,110, 0, 97, +108,112,104, 97, 95, 99,104,101, 99,107, 0,105,110,110,101,114, 95, 97,110,105,109, 91, 52, 93, 0,105,110,110,101,114, 95, 97, +110,105,109, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 91, 52, 93, 0,105,110,110,101,114, 95,107,101, +121, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 91, 52, 93, 0,105,110,110,101,114, 95,100, +114,105,118,101,110, 95,115,101,108, 91, 52, 93, 0,119, 99,111,108, 95,114,101,103,117,108, 97,114, 0,119, 99,111,108, 95,116, +111,111,108, 0,119, 99,111,108, 95,116,101,120,116, 0,119, 99,111,108, 95,114, 97,100,105,111, 0,119, 99,111,108, 95,111,112, +116,105,111,110, 0,119, 99,111,108, 95,116,111,103,103,108,101, 0,119, 99,111,108, 95,110,117,109, 0,119, 99,111,108, 95,110, +117,109,115,108,105,100,101,114, 0,119, 99,111,108, 95,109,101,110,117, 0,119, 99,111,108, 95,112,117,108,108,100,111,119,110, + 0,119, 99,111,108, 95,109,101,110,117, 95, 98, 97, 99,107, 0,119, 99,111,108, 95,109,101,110,117, 95,105,116,101,109, 0,119, + 99,111,108, 95, 98,111,120, 0,119, 99,111,108, 95,115, 99,114,111,108,108, 0,119, 99,111,108, 95,112,114,111,103,114,101,115, +115, 0,119, 99,111,108, 95,108,105,115,116, 95,105,116,101,109, 0,119, 99,111,108, 95,115,116, 97,116,101, 0,105, 99,111,110, +102,105,108,101, 91, 56, 48, 93, 0, 98, 97, 99,107, 91, 52, 93, 0,116,105,116,108,101, 91, 52, 93, 0,116,101,120,116, 95,104, +105, 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,105,116,108,101, 91, 52, 93, 0,104, +101, 97,100,101,114, 95,116,101,120,116, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0, + 98,117,116,116,111,110, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,105,116,108,101, 91, 52, 93, 0, 98,117,116,116,111,110, + 95,116,101,120,116, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,108,105,115,116, 91, + 52, 93, 0,108,105,115,116, 95,116,105,116,108,101, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 91, 52, 93, 0,108,105, +115,116, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,112, 97,110,101,108, 91, 52, 93, 0,112, 97,110,101,108, 95,116,105,116, +108,101, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 95,104, +105, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93, 0,115,104, 97,100,101, 50, 91, 52, 93, 0,104,105,108,105,116,101, 91, + 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,101, 91, 52, 93, 0,115,101,108,101, 99,116, 91, 52, 93, 0,108, 97,109, +112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, 52, 93, 0,103,114,111,117,112, 91, 52, 93, 0,103,114,111,117,112, 95, 97, 99, +116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,111,114,109, 91, 52, 93, 0,118,101,114,116,101,120, 91, 52, 93, 0,118, +101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 91, 52, 93, 0,101,100,103,101, 95,115,101,108, +101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101, 97,109, 91, 52, 93, 0,101,100,103,101, 95,115,104, 97,114,112, 91, 52, + 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, 93, 0,101,100,103,101, 95, 99,114,101, 97,115,101, 91, 52, 93, + 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,102, 97, 99,101, 95,100,111,116, + 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0,118,101,114,116,101,120, 95,110,111,114,109, 97,108, 91, 52, 93, 0, 98, +111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110,101, 95,112,111,115,101, 91, 52, 93, 0,115,116,114,105,112, 91, + 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, 52, 93, 0, 99,102,114, 97,109,101, 91, 52, 93, 0,110,117,114, + 98, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,118,108,105,110,101, 91, 52, 93, 0, 97, 99,116, 95,115,112,108, +105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101, +108, 95,118,108,105,110,101, 91, 52, 93, 0,108, 97,115,116,115,101,108, 95,112,111,105,110,116, 91, 52, 93, 0,104, 97,110,100, +108,101, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,117,116,111, 91, 52, 93, 0,104, 97,110,100,108,101, + 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,108,105,103,110, 91, 52, 93, 0,104, 97,110,100,108,101, 95, +115,101,108, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97,117,116,111, 91, 52, 93, 0,104, + 97,110,100,108,101, 95,115,101,108, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97,108,105, +103,110, 91, 52, 93, 0,100,115, 95, 99,104, 97,110,110,101,108, 91, 52, 93, 0,100,115, 95,115,117, 98, 99,104, 97,110,110,101, +108, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,111,117,116,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105, +110,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,102,111, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95, +101,114,114,111,114, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95, 99,117,114,115,111,114, 91, 52, 93, 0,118,101,114,116,101, +120, 95,115,105,122,101, 0,102, 97, 99,101,100,111,116, 95,115,105,122,101, 0, 98,112, 97,100, 91, 50, 93, 0,115,121,110,116, + 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,120,110, 91, 52, 93, 0,115,121,110,116, 97,120, 98, 91, 52, 93, 0,115,121,110, +116, 97,120,118, 91, 52, 93, 0,115,121,110,116, 97,120, 99, 91, 52, 93, 0,109,111,118,105,101, 91, 52, 93, 0,105,109, 97,103, +101, 91, 52, 93, 0,115, 99,101,110,101, 91, 52, 93, 0, 97,117,100,105,111, 91, 52, 93, 0,101,102,102,101, 99,116, 91, 52, 93, + 0,112,108,117,103,105,110, 91, 52, 93, 0,116,114, 97,110,115,105,116,105,111,110, 91, 52, 93, 0,109,101,116, 97, 91, 52, 93, + 0,101,100,105,116,109,101,115,104, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101, +120, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,104, 97,110, +100,108,101, 95,118,101,114,116,101,120, 95,115,105,122,101, 0,104,112, 97,100, 91, 55, 93, 0,112,114,101,118,105,101,119, 95, + 98, 97, 99,107, 91, 52, 93, 0,115,111,108,105,100, 91, 52, 93, 0,116,117,105, 0,116, 98,117,116,115, 0,116,118, 51,100, 0, +116,102,105,108,101, 0,116,105,112,111, 0,116,105,110,102,111, 0,116,115,110,100, 0,116, 97, 99,116, 0,116,110,108, 97, 0, +116,115,101,113, 0,116,105,109, 97, 0,116,105,109, 97,115,101,108, 0,116,101,120,116, 0,116,111,111,112,115, 0,116,116,105, +109,101, 0,116,110,111,100,101, 0,116,108,111,103,105, 99, 0,116,117,115,101,114,112,114,101,102, 0,116, 99,111,110,115,111, +108,101, 0,116, 97,114,109, 91, 50, 48, 93, 0, 97, 99,116,105,118,101, 95,116,104,101,109,101, 95, 97,114,101, 97, 0,109,111, +100,117,108,101, 91, 54, 52, 93, 0,115,112,101, 99, 91, 52, 93, 0,100,117,112,102,108, 97,103, 0,115, 97,118,101,116,105,109, +101, 0,116,101,109,112,100,105,114, 91, 49, 54, 48, 93, 0,102,111,110,116,100,105,114, 91, 49, 54, 48, 93, 0,114,101,110,100, +101,114,100,105,114, 91, 49, 54, 48, 93, 0,116,101,120,116,117,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,116,101,120, +100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,115,101,113,100,105,114, 91, 49, 54, 48, 93, 0,112,121,116,104,111,110,100, +105,114, 91, 49, 54, 48, 93, 0,115,111,117,110,100,100,105,114, 91, 49, 54, 48, 93, 0,105,109, 97,103,101, 95,101,100,105,116, +111,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, + 97,121,101,114, 95,112,114,101,115,101,116, 0,118, 50,100, 95,109,105,110, 95,103,114,105,100,115,105,122,101, 0,116,105,109, +101, 99,111,100,101, 95,115,116,121,108,101, 0,118,101,114,115,105,111,110,115, 0,100, 98,108, 95, 99,108,105, 99,107, 95,116, +105,109,101, 0,103, 97,109,101,102,108, 97,103,115, 0,119,104,101,101,108,108,105,110,101,115, 99,114,111,108,108, 0,117,105, +102,108, 97,103, 0,108, 97,110,103,117, 97,103,101, 0,117,115,101,114,112,114,101,102, 0,118,105,101,119,122,111,111,109, 0, +109,105,120, 98,117,102,115,105,122,101, 0, 97,117,100,105,111,100,101,118,105, 99,101, 0, 97,117,100,105,111,114, 97,116,101, + 0, 97,117,100,105,111,102,111,114,109, 97,116, 0, 97,117,100,105,111, 99,104, 97,110,110,101,108,115, 0,100,112,105, 0,101, +110, 99,111,100,105,110,103, 0,116,114, 97,110,115,111,112,116,115, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 49, + 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 50, 0,116,104,101,109,101,115, 0,117,105,102,111,110,116,115, 0,117, +105,115,116,121,108,101,115, 0,107,101,121,109, 97,112,115, 0, 97,100,100,111,110,115, 0,107,101,121, 99,111,110,102,105,103, +115,116,114, 91, 54, 52, 93, 0,117,110,100,111,115,116,101,112,115, 0,117,110,100,111,109,101,109,111,114,121, 0,103,112, 95, +109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103,112, 95,101,117, 99,108,105,100,101, 97,110,100,105,115,116, 0,103, +112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101,116,116,105,110,103,115, 0,116, 98, 95,108,101,102,116,109,111,117,115, +101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, 0,108,105,103,104,116, 91, 51, 93, 0,115, 99,117,108,112,116, 95, +112, 97,105,110,116, 95,115,101,116,116,105,110,103,115, 0,116,119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108, 97, +103, 0,116,119, 95,104, 97,110,100,108,101,115,105,122,101, 0,116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101,111, +117,116, 0,116,101,120, 99,111,108,108,101, 99,116,114, 97,116,101, 0,119,109,100,114, 97,119,109,101,116,104,111,100, 0,109, +101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101,102,101,116, 99,104,102,114, 97,109,101,115, 0,102,114, 97,109, +101,115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95,114,111,116, 95, 97,110,103,108,101, 0,111, 98, 99,101,110,116, +101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114,118,105, 98,114,105,103,104,116, 0,114,101, 99,101,110,116, 95, +102,105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101,119,116,120, 0,103,108,114,101,115,108,105,109,105,116, 0,110, +100,111,102, 95,112, 97,110, 0,110,100,111,102, 95,114,111,116, 97,116,101, 0, 99,117,114,115,115,105,122,101, 0, 99,111,108, +111,114, 95,112,105, 99,107,101,114, 95,116,121,112,101, 0,105,112,111, 95,110,101,119, 0,107,101,121,104, 97,110,100,108,101, +115, 95,110,101,119, 0,115, 99,114, 99, 97,115,116,102,112,115, 0,115, 99,114, 99, 97,115,116,119, 97,105,116, 0,112,114,111, +112,119,105,100,116,104, 0,118,101,114,115,101,109, 97,115,116,101,114, 91, 49, 54, 48, 93, 0,118,101,114,115,101,117,115,101, +114, 91, 49, 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108,105,112, 0, 99,111, 98, 97, 95,119,101,105,103,104,116, 0,115, + 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,115,105,122,101, 0,115, 99,117,108,112,116, 95, +112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,117,110,112,114,111,106,101, 99,116,101,100, 95,114, 97,100,105,117,115, + 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95, 97,108,112,104, 97, 0,115, 99,117,108, +112,116, 95,112, 97,105,110,116, 95,111,118,101,114,108, 97,121, 95, 99,111,108, 91, 51, 93, 0,118,101,114,116, 98, 97,115,101, + 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,115,101, 0, 42,110,101,119,115, 99,101,110,101, 0,102,117,108, +108, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0,100,111, 95,114,101,102,114,101,115,104, 0,100,111, 95,100,114, + 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, 97,119, 95,112, 97,105,110,116, 99,117,114,115,111,114, 0,100, +111, 95,100,114, 97,119, 95,100,114, 97,103, 0,115,119, 97,112, 0,109, 97,105,110,119,105,110, 0,115,117, 98,119,105,110, 97, + 99,116,105,118,101, 0, 42, 97,110,105,109,116,105,109,101,114, 0, 42, 99,111,110,116,101,120,116, 0,104, 97,110,100,108,101, +114, 91, 56, 93, 0, 42,110,101,119,118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42,116,121,112,101, 0,112, 97,110, +101,108,110, 97,109,101, 91, 54, 52, 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, 97,119,110, 97,109,101, 91, + 54, 52, 93, 0,111,102,115,120, 0,111,102,115,121, 0,115,105,122,101,120, 0,115,105,122,101,121, 0,108, 97, 98,101,108,111, +102,115, 0,114,117,110,116,105,109,101, 95,102,108, 97,103, 0, 99,111,110,116,114,111,108, 0,115,110, 97,112, 0,115,111,114, +116,111,114,100,101,114, 0, 42,112, 97,110,101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101,100, 97,116, 97, 0,108,105,115, +116, 95,115, 99,114,111,108,108, 0,108,105,115,116, 95,115,105,122,101, 0,108,105,115,116, 95,108, 97,115,116, 95,108,101,110, + 0,108,105,115,116, 95,103,114,105,112, 95,115,105,122,101, 0,108,105,115,116, 95,115,101, 97,114, 99,104, 91, 54, 52, 93, 0, + 42,118, 51, 0, 42,118, 52, 0, 42,102,117,108,108, 0, 98,117,116,115,112, 97, 99,101,116,121,112,101, 0,104,101, 97,100,101, +114,116,121,112,101, 0,115,112, 97, 99,101,100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, 0, 97, 99,116,105,111,110,122, +111,110,101,115, 0,119,105,110,114, 99,116, 0,100,114, 97,119,114, 99,116, 0,115,119,105,110,105,100, 0,114,101,103,105,111, +110,116,121,112,101, 0, 97,108,105,103,110,109,101,110,116, 0,100,111, 95,100,114, 97,119, 95,111,118,101,114,108, 97,121, 0, +117,105, 98,108,111, 99,107,115, 0,112, 97,110,101,108,115, 0, 42,104,101, 97,100,101,114,115,116,114, 0, 42,114,101,103,105, +111,110,100, 97,116, 97, 0,115,117, 98,118,115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115,105,111,110, 0,112, 97,100, +115, 0,109,105,110,118,101,114,115,105,111,110, 0,109,105,110,115,117, 98,118,101,114,115,105,111,110, 0, 42, 99,117,114,115, + 99,114,101,101,110, 0, 42, 99,117,114,115, 99,101,110,101, 0,102,105,108,101,102,108, 97,103,115, 0,103,108,111, 98, 97,108, +102, 0,102,105,108,101,110, 97,109,101, 91, 50, 52, 48, 93, 0,110, 97,109,101, 91, 56, 48, 93, 0, 42,105, 98,117,102, 0, 42, +105, 98,117,102, 95, 99,111,109,112, 0, 42,115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0,110,114, 0, 98,111,116,116, +111,109, 0,114,105,103,104,116, 0,120,111,102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93, 0,103, 97,109,109, 97, + 91, 51, 93, 0,103, 97,105,110, 91, 51, 93, 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110,101, 0,115,116, 97,114,116,115, +116,105,108,108, 0,101,110,100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0,111,114,120, 0,111,114,121, + 0, 42, 99,114,111,112, 0, 42,116,114, 97,110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, 98, 97,108, 97,110, 99,101, + 0, 42,116,115,116,114,105,112,100, 97,116, 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,115,116, 97,114,116,115,116, +105,108,108, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,101,110,100,115,116,105,108,108, 0, 42,105, 98,117,102, 95,115, +116, 97,114,116,115,116,105,108,108, 0, 42,105, 98,117,102, 95,101,110,100,115,116,105,108,108, 0, 42,105,110,115,116, 97,110, + 99,101, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, 95,112,114,105,118, 97,116, +101, 95,100, 97,116, 97, 0, 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111,102,115, 0,109, 97, 99,104, +105,110,101, 0,115,116, 97,114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,115, 97,116, 0,109,117,108, 0,104, 97, +110,100,115,105,122,101, 0, 97,110,105,109, 95,112,114,101,115,101,101,107, 0, 42,115,116,114,105,112, 0, 42,115, 99,101,110, +101, 95, 99, 97,109,101,114, 97, 0,101,102,102,101, 99,116, 95,102, 97,100,101,114, 0,115,112,101,101,100, 95,102, 97,100,101, +114, 0, 42,115,101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42,115,111,117, +110,100, 0, 42,115, 99,101,110,101, 95,115,111,117,110,100, 0,108,101,118,101,108, 0,112, 97,110, 0,115, 99,101,110,101,110, +114, 0,109,117,108,116,105, 99, 97,109, 95,115,111,117,114, 99,101, 0,115,116,114,111, 98,101, 0, 42,101,102,102,101, 99,116, +100, 97,116, 97, 0, 97,110,105,109, 95,115,116, 97,114,116,111,102,115, 0, 97,110,105,109, 95,101,110,100,111,102,115, 0, 98, +108,101,110,100, 95,109,111,100,101, 0, 98,108,101,110,100, 95,111,112, 97, 99,105,116,121, 0, 42,111,108,100, 98, 97,115,101, +112, 0, 42,112, 97,114,115,101,113, 0, 42,115,101,113, 98, 97,115,101,112, 0,109,101,116, 97,115,116, 97, 99,107, 0, 42, 97, + 99,116, 95,115,101,113, 0, 97, 99,116, 95,105,109, 97,103,101,100,105,114, 91, 50, 53, 54, 93, 0, 97, 99,116, 95,115,111,117, +110,100,100,105,114, 91, 50, 53, 54, 93, 0,111,118,101,114, 95,111,102,115, 0,111,118,101,114, 95, 99,102,114, 97, 0,111,118, +101,114, 95,102,108, 97,103, 0,111,118,101,114, 95, 98,111,114,100,101,114, 0,101,100,103,101, 87,105,100,116,104, 0,102,111, +114,119, 97,114,100, 0,119,105,112,101,116,121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109,112, 0,102, 66,111,111, +115,116, 0,100, 68,105,115,116, 0,100, 81,117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0, 83, 99, 97,108,101,120, + 73,110,105, 0, 83, 99, 97,108,101,121, 73,110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, 83, 99, 97,108,101,121, 70,105, +110, 0,120, 73,110,105, 0,120, 70,105,110, 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111,116, 73,110,105, 0,114,111,116, + 70,105,110, 0,105,110,116,101,114,112,111,108, 97,116,105,111,110, 0,117,110,105,102,111,114,109, 95,115, 99, 97,108,101, 0, + 42,102,114, 97,109,101, 77, 97,112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115,116, 86, 97,108,105,100, 70, +114, 97,109,101, 0, 98,117,116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,116,111,116,112, 97,114,116, + 0,110,111,114,109,102, 97, 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,120,102, 97, 99, 0,114, 97, +110,100,108,105,102,101, 0,102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,109, 97,120,108,101,110, 0, +100,101,102,118,101, 99, 91, 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, 0, 99,104,105,108,100, 91, + 52, 93, 0,109, 97,116, 91, 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,115,116, 97,116,105, 99,115, +116,101,112, 0,111,109, 97,116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101,120, 0,102,108, 97,103, 50,110, +101,103, 0,118,101,114,116,103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, 91, 51, 50, 93, 0,118,103, +114,111,117,112,110, 97,109,101, 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102, 97, 99, 0,117,115,101,100, + 0,117,115,101,100,101,108,101,109, 0, 42,112,111,105,110, 0,114,101,115,101,116,100,105,115,116, 0,108, 97,115,116,118, 97, +108, 0, 42,109, 97, 0,107,101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,101,116, 78, 97,109,101, 91, + 51, 50, 93, 0,116,111,103,103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91, 51, 50, 93, 0,109, 97,120, +118, 97,108,117,101, 91, 51, 50, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,105,111,110, 0,109, 97,116,101,114,105, 97, +108, 78, 97,109,101, 91, 51, 50, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,114,111,112,110, 97,109,101, 91, 51, 50, 93, + 0,109, 97,116,110, 97,109,101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111,115,101, 99,104, 97,110,110,101, +108, 91, 51, 50, 93, 0, 99,111,110,115,116,114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114,111,109, 79, 98,106,101, 99,116, + 0,115,117, 98,106,101, 99,116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116,121,112,101, 0,112,117,108,115, +101, 0,102,114,101,113, 0,116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,116, 97,112, 0,106,111,121,105, +110,100,101,120, 0, 97,120,105,115, 95,115,105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, 0,104, 97, +116, 0,104, 97,116,102, 0,112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0, 42,109,121,110,101,119, + 0,105,110,112,117,116,115, 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,108,105,110,107,115, 0,118, 97,108,111, 0, +115,116, 97,116,101, 95,109, 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111,112, 91, 51, 50, 93, 0, 98,108, +101,110,100,105,110, 0,112,114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,115,101,116, 0,115,116,114,105,100,101, 97, +120,105,115, 0,115,116,114,105,100,101,108,101,110,103,116,104, 0,115,110,100,110,114, 0,112, 97,100, 51, 91, 50, 93, 0,112, +105,116, 99,104, 0,115,111,117,110,100, 51, 68, 0,112, 97,100, 54, 91, 49, 93, 0, 42,109,101, 0,108,105,110, 86,101,108,111, + 99,105,116,121, 91, 51, 93, 0, 97,110,103, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108,102,108, 97,103, + 0,100,121,110, 95,111,112,101,114, 97,116,105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,102,111,114, 99,101, +114,111,116, 91, 51, 93, 0,108,105,110,101, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103,117,108, 97,114, +118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 42,114,101,102,101,114,101,110, 99,101, 0,109,105,110, 0,109, 97,120, 0,114, +111,116,100, 97,109,112, 0,109,105,110,108,111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, 51, 93, 0,109,105,110,114,111, +116, 91, 51, 93, 0,109, 97,120,114,111,116, 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51, 50, 93, 0, 98,117,116,115,116, + 97, 0, 98,117,116,101,110,100, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, 97,114,103, 95, 49, 0, +105,110,116, 95, 97,114,103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97,116, 95, 97,114,103, 95, + 50, 0,116,111, 80,114,111,112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, 99,116, 0, 98,111,100,121, 84, +121,112,101, 0,102,105,108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97,109,101, 91, 54, 52, 93, + 0,105,110,116, 95, 97,114,103, 0,102,108,111, 97,116, 95, 97,114,103, 0, 42,115,117, 98,116, 97,114,103,101,116, 0,103,111, + 0, 97, 99, 99,101,108,108,101,114, 97,116,105,111,110, 0,109, 97,120,115,112,101,101,100, 0,109, 97,120,114,111,116,115,112, +101,101,100, 0,109, 97,120,116,105,108,116,115,112,101,101,100, 0,116,105,108,116,100, 97,109,112, 0,115,112,101,101,100,100, + 97,109,112, 0,109,105,110, 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101,102,101,114,101,110, 99,101, 95, +100,105,115,116, 97,110, 99,101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,101, 0,114,111,108,108,111,102,102, 95,102, 97, + 99,116,111,114, 0, 99,111,110,101, 95,105,110,110,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, + 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42,110,101,119,112, 97, 99,107,101, +100,102,105,108,101, 0, 97,116,116,101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, 97, 99,104, +101, 0, 42,112,108, 97,121, 98, 97, 99,107, 95,104, 97,110,100,108,101, 0, 42, 97,114,101, 97, 0, 42,108, 97,109,112,114,101, +110, 0,103,111, 98,106,101, 99,116, 0,100,117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 42,112,114,111,112, 0, 99,104,105, +108,100, 98, 97,115,101, 0,114,111,108,108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98,111,110,101, + 95,109, 97,116, 91, 51, 93, 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97,105,108, 91, + 51, 93, 0, 97,114,109, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0,122,119,105,100,116,104, 0,101, + 97,115,101, 49, 0,101, 97,115,101, 50, 0,114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95,116, 97,105,108, 0, 98,111,110, +101, 98, 97,115,101, 0, 99,104, 97,105,110, 98, 97,115,101, 0, 42,101,100, 98,111, 0, 42, 97, 99,116, 95, 98,111,110,101, 0, + 42, 97, 99,116, 95,101,100, 98,111,110,101, 0, 42,115,107,101,116, 99,104, 0,108, 97,121,101,114, 95,112,114,111,116,101, 99, +116,101,100, 0,103,104,111,115,116,101,112, 0,103,104,111,115,116,115,105,122,101, 0,103,104,111,115,116,116,121,112,101, 0, +112, 97,116,104,115,105,122,101, 0,103,104,111,115,116,115,102, 0,103,104,111,115,116,101,102, 0,112, 97,116,104,115,102, 0, +112, 97,116,104,101,102, 0,112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,111,105,110,116,115, 0,115,116, 97, +114,116, 95,102,114, 97,109,101, 0,101,110,100, 95,102,114, 97,109,101, 0,103,104,111,115,116, 95,115,102, 0,103,104,111,115, +116, 95,101,102, 0,103,104,111,115,116, 95, 98, 99, 0,103,104,111,115,116, 95, 97, 99, 0,103,104,111,115,116, 95,116,121,112, +101, 0,103,104,111,115,116, 95,115,116,101,112, 0,103,104,111,115,116, 95,102,108, 97,103, 0,112, 97,116,104, 95,116,121,112, +101, 0,112, 97,116,104, 95,115,116,101,112, 0,112, 97,116,104, 95,118,105,101,119,102,108, 97,103, 0,112, 97,116,104, 95, 98, + 97,107,101,102,108, 97,103, 0,112, 97,116,104, 95,115,102, 0,112, 97,116,104, 95,101,102, 0,112, 97,116,104, 95, 98, 99, 0, +112, 97,116,104, 95, 97, 99, 0, 99,111,110,115,116,102,108, 97,103, 0,105,107,102,108, 97,103, 0,115,101,108,101, 99,116,102, +108, 97,103, 0, 97,103,114,112, 95,105,110,100,101,120, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105,107,116,114, +101,101, 0, 42, 98, 95, 98,111,110,101, 95,109, 97,116,115, 0, 42,100,117, 97,108, 95,113,117, 97,116, 0, 42, 98, 95, 98,111, +110,101, 95,100,117, 97,108, 95,113,117, 97,116,115, 0,101,117,108, 91, 51, 93, 0, 99,104, 97,110, 95,109, 97,116, 91, 52, 93, + 91, 52, 93, 0,112,111,115,101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, 51, 93, 0, +112,111,115,101, 95,116, 97,105,108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105,109,105,116,109, 97, +120, 91, 51, 93, 0,115,116,105,102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, 0,105,107,114,111, +116,119,101,105,103,104,116, 0,105,107,108,105,110,119,101,105,103,104,116, 0, 42, 99,117,115,116,111,109, 0, 42, 99,117,115, +116,111,109, 95,116,120, 0, 99,104, 97,110, 98, 97,115,101, 0, 42, 99,104, 97,110,104, 97,115,104, 0,112,114,111,120,121, 95, +108, 97,121,101,114, 0,115,116,114,105,100,101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, 95,111,102, +102,115,101,116, 91, 51, 93, 0, 97,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,103,114,111,117,112, 0,105,107,115, +111,108,118,101,114, 0, 42,105,107,100, 97,116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,112,114,111,120,121, 95, 97, 99,116, + 95, 98,111,110,101, 91, 51, 50, 93, 0,110,117,109,105,116,101,114, 0,110,117,109,115,116,101,112, 0,109,105,110,115,116,101, +112, 0,109, 97,120,115,116,101,112, 0,115,111,108,118,101,114, 0,102,101,101,100, 98, 97, 99,107, 0,109, 97,120,118,101,108, + 0,100, 97,109,112,109, 97,120, 0,100, 97,109,112,101,112,115, 0, 99,104, 97,110,110,101,108,115, 0, 99,117,115,116,111,109, + 67,111,108, 0, 99,115, 0, 99,117,114,118,101,115, 0,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,109, 97,114,107, +101,114, 0, 42,115,111,117,114, 99,101, 0, 42,102,105,108,116,101,114, 95,103,114,112, 0,102,105,108,116,101,114,102,108, 97, +103, 0, 97,100,115, 0,116,105,109,101,115,108,105,100,101, 0, 42,103,114,112, 0,116,101,109,112, 0,110, 97,109,101, 91, 51, + 48, 93, 0,111,119,110,115,112, 97, 99,101, 0,116, 97,114,115,112, 97, 99,101, 0,101,110,102,111,114, 99,101, 0,104,101, 97, +100,116, 97,105,108, 0,108,105,110, 95,101,114,114,111,114, 0,114,111,116, 95,101,114,114,111,114, 0, 42,116, 97,114, 0,109, + 97,116,114,105,120, 91, 52, 93, 91, 52, 93, 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100,101,114, 0,116, 97,114,110,117, +109, 0,116, 97,114,103,101,116,115, 0,105,116,101,114, 97,116,105,111,110,115, 0,114,111,111,116, 98,111,110,101, 0,109, 97, +120, 95,114,111,111,116, 98,111,110,101, 0, 42,112,111,108,101,116, 97,114, 0,112,111,108,101,115,117, 98,116, 97,114,103,101, +116, 91, 51, 50, 93, 0,112,111,108,101, 97,110,103,108,101, 0,111,114,105,101,110,116,119,101,105,103,104,116, 0,103,114, 97, + 98,116, 97,114,103,101,116, 91, 51, 93, 0,110,117,109,112,111,105,110,116,115, 0, 99,104, 97,105,110,108,101,110, 0,120,122, + 83, 99, 97,108,101, 77,111,100,101, 0,114,101,115,101,114,118,101,100, 49, 0,114,101,115,101,114,118,101,100, 50, 0,109,105, +110,109, 97,120,102,108, 97,103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99,107,102,108, 97,103, + 0,102,111,108,108,111,119,102,108, 97,103, 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103,108,101,110, +103,116,104, 0, 98,117,108,103,101, 0,112,105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120, 88, 0, 97,120, 89, + 0, 97,120, 90, 0,109,105,110, 76,105,109,105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54, 93, 0,101,120,116, +114, 97, 70,122, 0,105,110,118,109, 97,116, 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109, 97,112, 91, 51, 93, + 0,101,120,112,111, 0,102,114,111,109, 95,109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91, 51, 93, 0,116,111, + 95,109,105,110, 91, 51, 93, 0,116,111, 95,109, 97,120, 91, 51, 93, 0,114,111,116, 65,120,105,115, 0,122,109,105,110, 0,122, +109, 97,120, 0,112, 97,100, 91, 57, 93, 0, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, 95, 97,120, +105,115, 0,115,116,114,105,100,101, 95, 97,120,105,115, 0, 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114,116, 0, 97, + 99,116,101,110,100, 0, 97, 99,116,111,102,102,115, 0,115,116,114,105,100,101,108,101,110, 0,115, 99, 97,108,101, 0, 98,108, +101,110,100,111,117,116, 0,115,116,114,105,100,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,111,102,102,115, 95, 98,111, +110,101, 91, 51, 50, 93, 0,104, 97,115,105,110,112,117,116, 0,104, 97,115,111,117,116,112,117,116, 0,100, 97,116, 97,116,121, +112,101, 0,115,111, 99,107,101,116,116,121,112,101, 0, 42,110,101,119, 95,115,111, 99,107, 0,110,115, 0,108,105,109,105,116, + 0,115,116, 97, 99,107, 95,105,110,100,101,120, 0,105,110,116,101,114,110, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 95, +101,120,116, 0,108,111, 99,120, 0,108,111, 99,121, 0,111,119,110, 95,105,110,100,101,120, 0,116,111, 95,105,110,100,101,120, + 0, 42,116,111,115,111, 99,107, 0, 42,108,105,110,107, 0, 42,110,101,119, 95,110,111,100,101, 0,108, 97,115,116,121, 0,111, +117,116,112,117,116,115, 0, 42,115,116,111,114, 97,103,101, 0,109,105,110,105,119,105,100,116,104, 0, 99,117,115,116,111,109, + 49, 0, 99,117,115,116,111,109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117,115,116,111,109, 52, 0,110,101,101,100, 95,101, +120,101, 99, 0,101,120,101, 99, 0, 42,116,104,114,101, 97,100,100, 97,116, 97, 0,116,111,116,114, 0, 98,117,116,114, 0,112, +114,118,114, 0, 42, 98,108,111, 99,107, 0, 42,116,121,112,101,105,110,102,111, 0, 42,102,114,111,109,110,111,100,101, 0, 42, +116,111,110,111,100,101, 0, 42,102,114,111,109,115,111, 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0, 42,115,116, + 97, 99,107, 0, 42,116,104,114,101, 97,100,115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, 97, 99,107,115,105,122,101, 0, + 99,117,114, 95,105,110,100,101,120, 0, 97,108,108,116,121,112,101,115, 0, 42,111,119,110,116,121,112,101, 0,112, 97,100, 50, + 91, 50, 93, 0, 40, 42,112,114,111,103,114,101,115,115, 41, 40, 41, 0, 40, 42,115,116, 97,116,115, 95,100,114, 97,119, 41, 40, + 41, 0, 40, 42,116,101,115,116, 95, 98,114,101, 97,107, 41, 40, 41, 0, 42,116, 98,104, 0, 42,112,114,104, 0, 42,115,100,104, + 0, 99,121, 99,108,105, 99, 0,109,111,118,105,101, 0,115, 97,109,112,108,101,115, 0,109,105,110,115,112,101,101,100, 0,112, +101,114, 99,101,110,116,120, 0,112,101,114, 99,101,110,116,121, 0, 98,111,107,101,104, 0,103, 97,109,109, 97, 0, 99,117,114, +118,101,100, 0,105,109, 97,103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109, 97,103,101, 95,105,110, 95,104,101,105,103, +104,116, 0, 99,101,110,116,101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,115,112,105,110, 0,119,114, 97,112, 0,115, +105,103,109, 97, 95, 99,111,108,111,114, 0,115,105,103,109, 97, 95,115,112, 97, 99,101, 0,104,117,101, 0,116, 49, 0,116, 50, + 0,116, 51, 0,102,115,116,114,101,110,103,116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, 91, 52, 93, 0, 97,108,103,111, +114,105,116,104,109, 0, 99,104, 97,110,110,101,108, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, 0, 99,111,108,110, 97,109, +101, 91, 51, 50, 93, 0, 98,107,116,121,112,101, 0,114,111,116, 97,116,105,111,110, 0,103, 97,109, 99,111, 0,110,111, 95,122, + 98,117,102, 0,102,115,116,111,112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, 0, 42,100,105, 99,116, 0, + 42,110,111,100,101, 0, 97,110,103,108,101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105,120, 0,116,104,114,101,115, +104,111,108,100, 0,102, 97,100,101, 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105,116, 0,115,108,111,112,101, + 91, 51, 93, 0,112,111,119,101,114, 91, 51, 93, 0,108,105,102,116, 95,108,103,103, 91, 51, 93, 0,108,105,109, 99,104, 97,110, + 0,117,110,115,112,105,108,108, 0,108,105,109,115, 99, 97,108,101, 0,117,115,112,105,108,108,114, 0,117,115,112,105,108,108, +103, 0,117,115,112,105,108,108, 98, 0,115,104,111,114,116,121, 0,109,105,110,116, 97, 98,108,101, 0,109, 97,120,116, 97, 98, +108,101, 0,101,120,116, 95,105,110, 91, 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, 42, 99,117,114,118,101, 0, 42, +116, 97, 98,108,101, 0, 42,112,114,101,109,117,108,116, 97, 98,108,101, 0,112,114,101,115,101,116, 0, 99,104, 97,110,103,101, +100, 95,116,105,109,101,115,116, 97,109,112, 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, + 99,107, 91, 51, 93, 0,119,104,105,116,101, 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, + 93, 0,120, 95,114,101,115,111,108,117,116,105,111,110, 0,100, 97,116, 97, 95,114, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95, +103, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95, 98, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,108,117,109, 97, 91, 50, 53, 54, + 93, 0,115, 97,109,112,108,101, 95,102,117,108,108, 0,115, 97,109,112,108,101, 95,108,105,110,101,115, 0, 97, 99, 99,117,114, + 97, 99,121, 0,119, 97,118,101,102,114,109, 95,109,111,100,101, 0,119, 97,118,101,102,114,109, 95, 97,108,112,104, 97, 0,119, + 97,118,101,102,114,109, 95,121,102, 97, 99, 0,119, 97,118,101,102,114,109, 95,104,101,105,103,104,116, 0,118,101, 99,115, 99, +111,112,101, 95, 97,108,112,104, 97, 0,118,101, 99,115, 99,111,112,101, 95,104,101,105,103,104,116, 0,109,105,110,109, 97,120, + 91, 51, 93, 91, 50, 93, 0,104,105,115,116, 0, 42,119, 97,118,101,102,111,114,109, 95, 49, 0, 42,119, 97,118,101,102,111,114, +109, 95, 50, 0, 42,119, 97,118,101,102,111,114,109, 95, 51, 0, 42,118,101, 99,115, 99,111,112,101, 0,119, 97,118,101,102,111, +114,109, 95,116,111,116, 0,111,102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,109,116,101,120, 0, 42,105,109, 97, +103,101, 95,105, 99,111,110, 0,105,109, 97,103,101, 95,105, 99,111,110, 95,112, 97,116,104, 91, 50, 52, 48, 93, 0,110,111,114, 109, 97,108, 95,119,101,105,103,104,116, 0,106,105,116,116,101,114, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95, 114, 97,100,105,117,115, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,102, 97, 99,116,111,114, 0,114, 97,116,101, 0,114,103, 98, 91, 51, 93, 0,115, 99,117,108,112,116, 95,112,108, 97,110,101, 0,112,108, 97,110,101, 95,111,102,102,115,101, @@ -9440,35 +8957,35 @@ char datatoc_startup_blend[]= { 111,108,108,111,119, 76,101, 97,100,101,114, 0, 66,111,105,100, 82,117,108,101, 65,118,101,114, 97,103,101, 83,112,101,101,100, 0, 66,111,105,100, 82,117,108,101, 70,105,103,104,116, 0, 66,111,105,100, 83,116, 97,116,101, 0, 70, 76, 85, 73, 68, 95, 51, 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 0, 0, 0, 84, 76, 69, 78, 1, 0, 1, 0, 2, 0, 2, 0, 4, 0, 4, 0, - 4, 0, 4, 0, 8, 0, 0, 0, 16, 0, 24, 0, 16, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, 12, 0, 24, 0, 16, 0, 16, 0, - 32, 0, 16, 0, 16, 0, 32, 0, 96, 0, 72, 0, 72, 2, 0, 0, 40, 0,144, 0,208, 4,112, 0, 36, 0, 56, 0,112, 0,128, 0, -168, 0, 96, 0, 40, 0, 48, 0,176, 0, 16, 0,136, 0, 40, 0, 8, 6,240, 1, 0, 0, 0, 0, 0, 0, 16, 1,112, 1,120, 1, - 24, 0, 8, 3,200, 0, 0, 0, 88, 0, 40, 1,240, 0,136, 0,216, 1, 64, 1, 80, 0, 88, 0, 32, 3,104, 0, 88, 1, 0, 0, -128, 0,104, 0,208, 0, 80, 0, 8, 0, 16, 0,216, 1, 0, 0, 0, 0, 0, 0,176, 1, 20, 0, 48, 0, 64, 0, 24, 0, 12, 0, - 16, 0, 4, 0, 8, 0, 8, 0, 0, 0, 40, 0,128, 0, 48, 0, 8, 0, 16, 0, 8, 0, 8, 0, 4, 0, 4, 0, 0, 1, 32, 0, - 16, 0, 16, 0, 64, 0, 24, 0, 12, 0, 64, 0, 80, 0,104, 0,120, 0,128, 0, 96, 0,128, 0,160, 0, 96, 0, 88, 0,136, 0, - 88, 0,112, 0, 0, 1, 56, 0,192, 0,184, 0,232, 0, 88, 0,120, 0,136, 0,224, 0,136, 0,248, 0, 80, 0,136, 0, 0, 0, -152, 0, 40, 0, 8, 2,160, 0, 0, 0,120, 0, 0, 0, 0, 0, 96, 0, 8, 0, 8, 0, 48, 1,112, 0,240, 1,104, 0, 96, 0, - 88, 0, 96, 0,200, 1,144, 0,136, 0, 80, 0,136, 0,112, 0, 8, 1, 48, 0, 0, 0,144, 0,176, 0,104, 0, 48, 0, 24, 0, -120, 0,152, 0,120, 1,224, 0,192, 0, 0, 0, 72, 0,168, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,232, 1, 40, 0,184, 0, -152, 0, 64, 0, 64, 0, 24, 0, 88, 0, 0, 4, 64, 0, 24, 0, 16, 0,104, 0, 96, 0, 32, 0,240, 1, 56, 0, 16, 0,168, 0, - 88, 0,104, 0, 64, 0,184, 1, 32, 0, 8, 0, 24, 0, 80, 2, 0, 0, 0, 0, 88, 0,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 48, 1, 56, 0,144, 0, 72, 0,208, 0,240, 0, 40, 0,248, 0,240, 0,200, 1,104, 0, 0, 0,168, 0, 0, 0, 32, 1, - 16, 0, 16, 0, 72, 33,128, 16, 24, 16,216, 0,144, 2,120, 2, 64, 0, 48, 0,216, 0, 32, 1, 72, 0,200, 2, 40, 0,144, 1, -104, 0, 24, 1, 32, 0,232, 0, 32, 0, 32, 0,112, 2,104, 1, 16, 0, 56, 29, 80, 0, 56, 0, 32, 13, 32, 0, 40, 0, 88, 1, - 0, 0, 0, 0,160, 0, 0, 0, 40, 1, 0, 0, 24, 1, 80, 0, 48, 0, 16, 0, 8, 0, 44, 0, 0, 1, 32, 1,200, 1, 32, 1, -136, 1, 32, 0, 12, 0, 24, 0, 52, 0, 16, 0, 24, 0, 24, 0, 32, 0, 72, 1, 0, 0, 64, 0, 64, 0, 48, 0, 8, 0, 48, 0, - 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 72, 0, 72, 0, 96, 0,104, 0, 60, 0,128, 0, 80, 0, 80, 0, - 16, 0, 96, 0, 72, 0, 32, 0, 88, 0, 24, 0, 80, 0,112, 0, 84, 0, 32, 0, 96, 0, 56, 0, 56, 0,112, 0,140, 0, 4, 0, - 24, 0, 16, 0, 8, 0, 88, 0, 40, 0,216, 0, 40, 0, 40, 1,200, 0, 16, 0, 16, 2, 0, 0, 4, 0, 40, 0,120, 0, 0, 1, - 88, 0, 56, 0, 88, 0,128, 0, 80, 0,120, 0, 24, 0, 56, 0, 48, 0, 48, 0, 48, 0, 8, 0, 40, 0, 72, 0, 72, 0, 48, 0, - 48, 0, 24, 0, 56, 0,104, 0, 16, 0,112, 0, 96, 0, 56, 0, 28, 0, 28, 0, 28, 0, 56, 0, 24, 0, 72, 0,168, 0, 40, 0, -144, 0, 56, 0,232, 0, 0, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, 44, 0, 8, 0, 8, 0, 64, 0, - 32, 0, 24, 0, 16, 0, 24, 0, 32, 0, 8, 0, 84, 0, 20, 0, 32, 0, 12, 0, 56, 0, 24, 0, 72, 0,240, 0, 24, 0, 56, 0, - 56, 0, 20, 0, 64, 0, 40, 0, 32, 0,192, 0, 36, 0, 16, 2,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 32, 0, 40, 0, -192, 0, 40, 0, 40, 0, 20, 0, 24, 1,224, 0,168, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0,120, 0, 0, 0,104, 0, 24, 0, - 24, 0, 16, 0, 24, 0, 8, 0, 16, 0, 24, 0, 20, 0, 20, 0, 56, 0, 24, 2, 40, 1, 16, 0,104, 0, 0, 1, 40, 0,200, 0, -104, 0,112, 0,168, 0, 32, 0, 80, 0, 56, 0, 80, 0, 64, 0,104, 0, 72, 0, 64, 0,128, 0, 0, 0, 0, 0, 83, 84, 82, 67, + 4, 0, 4, 0, 8, 0, 0, 0, 8, 0, 12, 0, 8, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, 12, 0, 24, 0, 16, 0, 16, 0, + 32, 0, 16, 0, 16, 0, 20, 0, 76, 0, 52, 0, 40, 2, 0, 0, 32, 0,140, 0,220, 3, 92, 0, 36, 0, 56, 0, 84, 0,112, 0, +124, 0, 56, 0, 24, 0, 40, 0,120, 0, 12, 0,104, 0, 36, 0,120, 5,156, 1, 0, 0, 0, 0, 0, 0, 8, 1, 48, 1, 84, 1, + 24, 0, 8, 3,168, 0, 0, 0, 72, 0, 32, 1,152, 0,132, 0,108, 1, 16, 1, 56, 0, 88, 0,160, 2, 76, 0, 60, 1, 0, 0, +108, 0,104, 0,148, 0, 56, 0, 8, 0, 16, 0, 92, 1, 0, 0, 0, 0, 0, 0, 40, 1, 20, 0, 44, 0, 60, 0, 24, 0, 12, 0, + 12, 0, 4, 0, 8, 0, 8, 0, 0, 0, 28, 0, 84, 0, 32, 0, 8, 0, 12, 0, 8, 0, 8, 0, 4, 0, 4, 0, 0, 1, 32, 0, + 12, 0, 16, 0, 64, 0, 24, 0, 12, 0, 40, 0, 64, 0, 80, 0,100, 0,108, 0, 80, 0,108, 0,128, 0, 76, 0, 72, 0,120, 0, + 72, 0, 84, 0,188, 0, 48, 0,168, 0,160, 0,172, 0, 72, 0,104, 0,116, 0,196, 0,112, 0,224, 0, 64, 0, 92, 0, 0, 0, +144, 0, 32, 0,240, 1,112, 0, 0, 0, 88, 0, 0, 0, 0, 0, 76, 0, 8, 0, 8, 0,244, 0, 88, 0,124, 1, 84, 0, 76, 0, + 72, 0, 72, 0,176, 1,120, 0,116, 0, 64, 0,120, 0, 92, 0,220, 0, 40, 0, 0, 0, 92, 0,148, 0, 72, 0, 48, 0, 20, 0, +120, 0,144, 0, 88, 1,208, 0,180, 0, 0, 0, 68, 0, 92, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,120, 1, 28, 0,176, 0, +144, 0, 64, 0, 60, 0, 24, 0, 72, 0,232, 3, 56, 0, 20, 0, 16, 0,100, 0, 84, 0, 24, 0,184, 2, 44, 0, 16, 0,156, 0, + 80, 0, 96, 0, 44, 0,144, 1, 32, 0, 8, 0, 24, 0, 56, 2, 0, 0, 0, 0, 72, 0, 72, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,248, 0, 40, 0,140, 0, 48, 0,140, 0,208, 0, 24, 0,216, 0,216, 0,200, 1, 60, 0, 0, 0,120, 0, 0, 0,252, 0, + 12, 0, 12, 0, 24, 33,112, 16, 24, 16,192, 0,124, 2, 80, 2, 40, 0, 36, 0,188, 0,244, 0, 52, 0,140, 2, 28, 0,112, 1, + 88, 0, 16, 1, 32, 0,224, 0, 32, 0, 32, 0,112, 2,104, 1, 16, 0, 48, 29, 72, 0, 56, 0,248, 12, 20, 0, 24, 0, 64, 1, + 0, 0, 0, 0, 96, 0, 0, 0,248, 0, 0, 0, 16, 1, 80, 0, 28, 0, 16, 0, 8, 0, 44, 0,252, 0,240, 0,168, 1,216, 0, + 92, 1, 16, 0, 12, 0, 24, 0, 52, 0, 16, 0, 20, 0, 16, 0, 24, 0, 56, 1, 0, 0, 56, 0, 52, 0, 48, 0, 8, 0, 44, 0, + 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 72, 0, 68, 0, 76, 0, 80, 0, 60, 0,128, 0, 76, 0, 60, 0, + 12, 0, 92, 0, 68, 0, 32, 0, 80, 0, 16, 0, 76, 0,108, 0, 84, 0, 28, 0, 96, 0, 56, 0, 56, 0,108, 0,140, 0, 4, 0, + 20, 0, 12, 0, 8, 0, 80, 0, 40, 0,188, 0, 24, 0, 16, 1,144, 0, 16, 0,204, 1, 0, 0, 4, 0, 40, 0,104, 0,216, 0, + 64, 0, 44, 0, 72, 0,116, 0, 60, 0,112, 0, 16, 0, 52, 0, 44, 0, 44, 0, 44, 0, 8, 0, 36, 0, 68, 0, 64, 0, 44, 0, + 44, 0, 20, 0, 52, 0, 96, 0, 12, 0,108, 0, 92, 0, 52, 0, 28, 0, 28, 0, 28, 0, 52, 0, 20, 0, 60, 0,140, 0, 36, 0, +120, 0, 32, 0,180, 0, 0, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, 44, 0, 8, 0, 8, 0, 64, 0, + 32, 0, 24, 0, 8, 0, 24, 0, 32, 0, 8, 0, 84, 0, 20, 0, 32, 0, 12, 0, 44, 0, 20, 0, 68, 0,240, 0, 24, 0, 56, 0, + 52, 0, 20, 0, 64, 0, 28, 0, 20, 0,180, 0, 36, 0,200, 1, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 20, 0, 24, 0, +172, 0, 24, 0, 28, 0, 20, 0,168, 0,148, 0,152, 0, 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 96, 0, 0, 0, 88, 0, 20, 0, + 24, 0, 16, 0, 20, 0, 8, 0, 8, 0, 24, 0, 20, 0, 20, 0, 48, 0,208, 1, 28, 1, 16, 0, 68, 0, 0, 1, 20, 0,160, 0, + 88, 0, 96, 0,152, 0, 20, 0, 56, 0, 48, 0, 68, 0, 56, 0, 92, 0, 64, 0, 56, 0, 96, 0, 0, 0, 0, 0, 83, 84, 82, 67, 153, 1, 0, 0, 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0, 11, 0, 1, 0, 9, 0, 2, 0, 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4, 0, 13, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0, 14, 0, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0, 15, 0, 2, 0, 4, 0, 5, 0, 4, 0, 6, 0, 16, 0, 2, 0, 8, 0, 5, 0, 8, 0, 6, 0, 17, 0, 3, 0, @@ -9860,292 +9377,292 @@ char datatoc_startup_blend[]= { 2, 0,161, 5, 2, 0,162, 5, 55, 0,201, 7, 4, 0,202, 7, 7, 0,203, 7, 7, 0,204, 7, 7, 0,205, 7,219, 0, 21, 0, 27, 0, 31, 0, 12, 0,206, 7, 12, 0,207, 7, 12, 0,208, 7, 12, 0, 19, 6, 46, 0,129, 0, 46, 0,209, 7, 2, 0,210, 7, 2, 0,211, 7, 2, 0,212, 7, 2, 0,213, 7, 2, 0,214, 7, 2, 0,215, 7, 2, 0,216, 7, 2, 0,217, 7, 2, 0,218, 7, - 2, 0,219, 7, 4, 0,220, 7,214, 0,221, 7, 9, 0,222, 7, 2, 0,223, 7, 3, 1, 5, 0, 3, 1, 0, 0, 3, 1, 1, 0, - 3, 1,224, 7, 13, 0,225, 7, 4, 0, 19, 0, 4, 1, 7, 0, 4, 1, 0, 0, 4, 1, 1, 0, 3, 1,226, 7, 3, 1,227, 7, - 2, 0, 28, 5, 2, 0, 19, 0, 4, 0, 37, 0, 5, 1, 25, 0, 5, 1, 0, 0, 5, 1, 1, 0, 6, 1,228, 7, 7, 1,106, 6, - 0, 0,229, 7, 0, 0,230, 7, 0, 0,231, 7, 2, 0,232, 7, 2, 0,233, 7, 2, 0,234, 7, 2, 0,235, 7, 2, 0,236, 7, - 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,237, 7, 2, 0,238, 7, 2, 0,239, 7, 4, 0,240, 7, 5, 1,241, 7, 9, 0,242, 7, - 4, 0,243, 7, 4, 0,244, 7, 4, 0,245, 7, 4, 0,246, 7, 0, 0,247, 7, 8, 1, 22, 0, 8, 1, 0, 0, 8, 1, 1, 0, - 3, 1,226, 7, 3, 1,227, 7, 3, 1,248, 7, 3, 1,249, 7,219, 0,250, 7, 23, 0, 51, 0, 0, 0, 20, 6, 0, 0,251, 7, - 2, 0, 63, 6, 2, 0, 64, 6, 2, 0,252, 7, 2, 0, 37, 0, 2, 0,213, 7, 2, 0,193, 6, 2, 0, 19, 0, 9, 1,228, 7, - 12, 0,253, 7, 12, 0, 19, 6, 12, 0,254, 7, 12, 0,255, 7, 10, 1, 24, 0, 10, 1, 0, 0, 10, 1, 1, 0,217, 0, 71, 6, - 23, 0, 0, 8, 23, 0, 1, 8, 2, 0, 63, 6, 2, 0, 64, 6, 2, 0, 2, 8, 2, 0, 3, 8, 2, 0, 4, 8, 2, 0, 19, 0, - 7, 0, 75, 2, 2, 0,234, 7, 2, 0,235, 7, 2, 0,212, 7, 2, 0, 5, 8, 2, 0,217, 7, 2, 0,179, 4, 11, 1,228, 7, - 12, 0, 6, 8, 12, 0, 7, 8, 12, 0,254, 7, 0, 0, 8, 8, 9, 0, 9, 8, 12, 1, 12, 0, 0, 0, 10, 8, 2, 0, 11, 8, - 2, 0, 12, 8, 2, 0, 13, 8, 2, 0, 14, 8, 2, 0, 15, 5, 2, 0, 10, 5,219, 0, 15, 8, 46, 0, 16, 8, 4, 0, 17, 8, - 4, 0, 18, 8, 0, 0, 19, 8, 13, 1, 1, 0, 0, 0, 20, 8, 14, 1, 8, 0, 57, 0, 21, 8, 57, 0, 22, 8, 14, 1, 23, 8, - 14, 1, 24, 8, 14, 1, 25, 8, 2, 0,124, 0, 2, 0, 19, 0, 4, 0, 26, 8, 15, 1, 4, 0, 4, 0,133, 6, 4, 0, 27, 8, - 4, 0,138, 6, 4, 0, 28, 8, 16, 1, 2, 0, 4, 0, 29, 8, 4, 0, 30, 8, 17, 1, 5, 0, 7, 0, 31, 8, 7, 0, 32, 8, - 7, 0, 33, 8, 4, 0, 19, 0, 4, 0, 37, 0, 18, 1, 6, 0, 0, 0, 34, 8, 0, 0, 90, 6, 49, 0,132, 0, 2, 0,106, 0, + 2, 0,219, 7, 4, 0, 69, 0,214, 0,220, 7, 9, 0,221, 7, 2, 0,222, 7, 3, 1, 5, 0, 3, 1, 0, 0, 3, 1, 1, 0, + 3, 1,223, 7, 13, 0,224, 7, 4, 0, 19, 0, 4, 1, 7, 0, 4, 1, 0, 0, 4, 1, 1, 0, 3, 1,225, 7, 3, 1,226, 7, + 2, 0, 28, 5, 2, 0, 19, 0, 4, 0, 37, 0, 5, 1, 25, 0, 5, 1, 0, 0, 5, 1, 1, 0, 6, 1,227, 7, 7, 1,106, 6, + 0, 0,228, 7, 0, 0,229, 7, 0, 0,230, 7, 2, 0,231, 7, 2, 0,232, 7, 2, 0,233, 7, 2, 0,234, 7, 2, 0,235, 7, + 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,236, 7, 2, 0,237, 7, 2, 0,238, 7, 4, 0,239, 7, 5, 1,240, 7, 9, 0,241, 7, + 4, 0,242, 7, 4, 0,243, 7, 4, 0,244, 7, 4, 0,245, 7, 0, 0,246, 7, 8, 1, 22, 0, 8, 1, 0, 0, 8, 1, 1, 0, + 3, 1,225, 7, 3, 1,226, 7, 3, 1,247, 7, 3, 1,248, 7,219, 0,249, 7, 23, 0, 51, 0, 0, 0, 20, 6, 0, 0,250, 7, + 2, 0, 63, 6, 2, 0, 64, 6, 2, 0,251, 7, 2, 0, 37, 0, 2, 0,213, 7, 2, 0,193, 6, 2, 0, 19, 0, 9, 1,227, 7, + 12, 0,252, 7, 12, 0, 19, 6, 12, 0,253, 7, 12, 0,254, 7, 10, 1, 24, 0, 10, 1, 0, 0, 10, 1, 1, 0,217, 0, 71, 6, + 23, 0,255, 7, 23, 0, 0, 8, 2, 0, 63, 6, 2, 0, 64, 6, 2, 0, 1, 8, 2, 0, 2, 8, 2, 0, 3, 8, 2, 0, 19, 0, + 7, 0, 75, 2, 2, 0,233, 7, 2, 0,234, 7, 2, 0,212, 7, 2, 0, 4, 8, 2, 0,217, 7, 2, 0,179, 4, 11, 1,227, 7, + 12, 0, 5, 8, 12, 0, 6, 8, 12, 0,253, 7, 0, 0, 7, 8, 9, 0, 8, 8, 12, 1, 12, 0, 0, 0, 9, 8, 2, 0, 10, 8, + 2, 0, 11, 8, 2, 0, 12, 8, 2, 0, 13, 8, 2, 0, 15, 5, 2, 0, 10, 5,219, 0, 14, 8, 46, 0, 15, 8, 4, 0, 16, 8, + 4, 0, 17, 8, 0, 0, 18, 8, 13, 1, 1, 0, 0, 0, 19, 8, 14, 1, 8, 0, 57, 0, 20, 8, 57, 0, 21, 8, 14, 1, 22, 8, + 14, 1, 23, 8, 14, 1, 24, 8, 2, 0,124, 0, 2, 0, 19, 0, 4, 0, 25, 8, 15, 1, 4, 0, 4, 0,133, 6, 4, 0, 26, 8, + 4, 0,138, 6, 4, 0, 27, 8, 16, 1, 2, 0, 4, 0, 28, 8, 4, 0, 29, 8, 17, 1, 5, 0, 7, 0, 30, 8, 7, 0, 31, 8, + 7, 0, 32, 8, 4, 0, 19, 0, 4, 0, 37, 0, 18, 1, 6, 0, 0, 0, 33, 8, 0, 0, 90, 6, 49, 0,132, 0, 2, 0,106, 0, 2, 0, 14, 5, 4, 0, 37, 0, 19, 1, 21, 0, 19, 1, 0, 0, 19, 1, 1, 0, 4, 0, 56, 0, 4, 0, 23, 0, 4, 0, 28, 0, - 4, 0, 35, 8, 4, 0, 36, 8, 4, 0, 37, 8, 13, 1, 38, 8, 0, 0, 34, 8, 4, 0, 39, 8, 4, 0, 40, 8, 18, 1, 91, 3, - 15, 1, 41, 8, 16, 1, 42, 8, 17, 1, 43, 8, 14, 1, 44, 8, 14, 1, 45, 8, 14, 1, 46, 8, 57, 0, 47, 8, 57, 0, 48, 8, + 4, 0, 34, 8, 4, 0, 35, 8, 4, 0, 36, 8, 13, 1, 37, 8, 0, 0, 33, 8, 4, 0, 38, 8, 4, 0, 39, 8, 18, 1, 91, 3, + 15, 1, 40, 8, 16, 1, 41, 8, 17, 1, 42, 8, 14, 1, 43, 8, 14, 1, 44, 8, 14, 1, 45, 8, 57, 0, 46, 8, 57, 0, 47, 8, 20, 1, 12, 0, 0, 0,250, 1, 9, 0,220, 0, 0, 0,221, 0, 4, 0,224, 0, 4, 0,232, 0, 9, 0,225, 0, 7, 0,227, 0, - 7, 0,228, 0, 9, 0, 49, 8, 9, 0, 50, 8, 9, 0,229, 0, 9, 0,231, 0, 21, 1, 48, 0, 21, 1, 0, 0, 21, 1, 1, 0, - 9, 0, 51, 8, 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 19, 0, 4, 0, 17, 0, 4, 0, 23, 0, 4, 0, 87, 0, 4, 0, 52, 8, - 4, 0, 53, 8, 4, 0, 36, 8, 4, 0, 37, 8, 4, 0, 54, 8, 4, 0,243, 0, 4, 0, 55, 8, 4, 0, 56, 8, 7, 0, 57, 8, - 7, 0, 37, 0, 7, 0, 58, 8, 7, 0, 59, 8, 4, 0,121, 0, 4, 0, 60, 8, 19, 1, 61, 8, 36, 0, 79, 0, 46, 0,129, 0, - 32, 0, 62, 8, 49, 0,132, 0, 7, 0, 63, 8, 7, 0, 64, 8, 20, 1, 59, 1, 21, 1, 65, 8, 21, 1, 66, 8, 21, 1, 67, 8, - 12, 0, 68, 8, 22, 1, 69, 8, 9, 0, 70, 8, 7, 0,249, 3, 7, 0, 71, 8, 7, 0, 72, 8, 4, 0, 73, 8, 4, 0, 74, 8, - 7, 0, 75, 8, 9, 0, 76, 8, 4, 0, 77, 8, 4, 0, 78, 8, 4, 0, 79, 8, 7, 0, 80, 8, 23, 1, 4, 0, 23, 1, 0, 0, - 23, 1, 1, 0, 12, 0, 81, 8, 21, 1, 82, 8,205, 0, 11, 0, 12, 0, 83, 8, 12, 0, 68, 8, 12, 0, 84, 8, 21, 1, 85, 8, - 0, 0, 86, 8, 0, 0, 87, 8, 4, 0, 88, 8, 4, 0, 89, 8, 4, 0, 90, 8, 4, 0, 37, 0, 24, 0, 91, 8, 24, 1, 4, 0, - 7, 0, 92, 8, 7, 0, 65, 3, 2, 0, 93, 8, 2, 0, 94, 8, 25, 1, 6, 0, 7, 0, 95, 8, 7, 0, 96, 8, 7, 0, 97, 8, - 7, 0, 98, 8, 4, 0, 99, 8, 4, 0,100, 8, 26, 1, 13, 0, 7, 0,101, 8, 7, 0,102, 8, 7, 0,103, 8, 7, 0,104, 8, - 7, 0,105, 8, 7, 0,106, 8, 7, 0,107, 8, 7, 0,108, 8, 7, 0,109, 8, 7, 0,110, 8, 4, 0,226, 2, 4, 0,111, 8, - 4, 0,112, 8, 27, 1, 2, 0, 7, 0, 87, 5, 7, 0, 37, 0, 28, 1, 5, 0, 7, 0,113, 8, 7, 0,114, 8, 4, 0, 90, 0, - 4, 0,182, 2, 4, 0,115, 8, 29, 1, 6, 0, 29, 1, 0, 0, 29, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,116, 8, - 2, 0, 56, 0, 30, 1, 8, 0, 30, 1, 0, 0, 30, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,116, 8, 2, 0, 56, 0, - 7, 0, 23, 0, 7, 0,121, 0, 31, 1, 45, 0, 31, 1, 0, 0, 31, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,116, 8, - 2, 0,239, 0, 2, 0, 35, 4, 2, 0,117, 8, 7, 0,118, 8, 7, 0, 88, 0, 7, 0,239, 2, 4, 0,119, 8, 4, 0, 81, 0, - 4, 0,184, 2, 7, 0,120, 8, 7, 0,121, 8, 7, 0,122, 8, 7, 0,123, 8, 7, 0,124, 8, 7, 0,125, 8, 7, 0,236, 2, - 7, 0, 56, 1, 7, 0,126, 8, 7, 0,127, 8, 7, 0, 37, 0, 7, 0,128, 8, 7, 0,129, 8, 7, 0,130, 8, 2, 0,131, 8, - 2, 0,132, 8, 2, 0,133, 8, 2, 0,134, 8, 2, 0,135, 8, 2, 0,136, 8, 2, 0,137, 8, 2, 0,138, 8, 2, 0, 17, 2, - 2, 0,139, 8, 2, 0, 14, 2, 2, 0,140, 8, 0, 0,141, 8, 0, 0,142, 8, 7, 0,237, 0, 32, 1,143, 8, 67, 0,229, 1, - 33, 1, 16, 0, 33, 1, 0, 0, 33, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,116, 8, 2, 0,239, 0, 7, 0,231, 2, - 7, 0,232, 2, 7, 0,233, 2, 7, 0, 64, 2, 7, 0,234, 2, 7, 0,235, 2, 7, 0,144, 8, 7, 0,236, 2, 7, 0,238, 2, - 7, 0,239, 2,231, 0, 5, 0, 2, 0, 17, 0, 2, 0, 26, 8, 2, 0, 19, 0, 2, 0,145, 8, 27, 0,165, 6,230, 0, 3, 0, - 4, 0, 68, 0, 4, 0,146, 8,231, 0, 2, 0, 34, 1, 7, 0, 34, 1, 0, 0, 34, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 4, 0, 22, 0, 9, 0,147, 8, 35, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0,148, 8, 4, 0,149, 8, + 7, 0,228, 0, 9, 0, 48, 8, 9, 0, 49, 8, 9, 0,229, 0, 9, 0,231, 0, 21, 1, 48, 0, 21, 1, 0, 0, 21, 1, 1, 0, + 9, 0, 50, 8, 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 19, 0, 4, 0, 17, 0, 4, 0, 23, 0, 4, 0, 87, 0, 4, 0, 51, 8, + 4, 0, 52, 8, 4, 0, 35, 8, 4, 0, 36, 8, 4, 0, 53, 8, 4, 0,243, 0, 4, 0, 54, 8, 4, 0, 55, 8, 7, 0, 56, 8, + 7, 0, 37, 0, 7, 0, 57, 8, 7, 0, 58, 8, 4, 0,121, 0, 4, 0, 59, 8, 19, 1, 60, 8, 36, 0, 79, 0, 46, 0,129, 0, + 32, 0, 61, 8, 49, 0,132, 0, 7, 0, 62, 8, 7, 0, 63, 8, 20, 1, 59, 1, 21, 1, 64, 8, 21, 1, 65, 8, 21, 1, 66, 8, + 12, 0, 67, 8, 22, 1, 68, 8, 9, 0, 69, 8, 7, 0,249, 3, 7, 0, 70, 8, 7, 0, 71, 8, 4, 0, 72, 8, 4, 0, 73, 8, + 7, 0, 74, 8, 9, 0, 75, 8, 4, 0, 76, 8, 4, 0, 77, 8, 4, 0, 78, 8, 7, 0, 79, 8, 23, 1, 4, 0, 23, 1, 0, 0, + 23, 1, 1, 0, 12, 0, 80, 8, 21, 1, 81, 8,205, 0, 11, 0, 12, 0, 82, 8, 12, 0, 67, 8, 12, 0, 83, 8, 21, 1, 84, 8, + 0, 0, 85, 8, 0, 0, 86, 8, 4, 0, 87, 8, 4, 0, 88, 8, 4, 0, 89, 8, 4, 0, 37, 0, 24, 0, 90, 8, 24, 1, 4, 0, + 7, 0, 91, 8, 7, 0, 65, 3, 2, 0, 92, 8, 2, 0, 93, 8, 25, 1, 6, 0, 7, 0, 94, 8, 7, 0, 95, 8, 7, 0, 96, 8, + 7, 0, 97, 8, 4, 0, 98, 8, 4, 0, 99, 8, 26, 1, 13, 0, 7, 0,100, 8, 7, 0,101, 8, 7, 0,102, 8, 7, 0,103, 8, + 7, 0,104, 8, 7, 0,105, 8, 7, 0,106, 8, 7, 0,107, 8, 7, 0,108, 8, 7, 0,109, 8, 4, 0,226, 2, 4, 0,110, 8, + 4, 0,111, 8, 27, 1, 2, 0, 7, 0, 87, 5, 7, 0, 37, 0, 28, 1, 5, 0, 7, 0,112, 8, 7, 0,113, 8, 4, 0, 90, 0, + 4, 0,182, 2, 4, 0,114, 8, 29, 1, 6, 0, 29, 1, 0, 0, 29, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,115, 8, + 2, 0, 56, 0, 30, 1, 8, 0, 30, 1, 0, 0, 30, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,115, 8, 2, 0, 56, 0, + 7, 0, 23, 0, 7, 0,121, 0, 31, 1, 45, 0, 31, 1, 0, 0, 31, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,115, 8, + 2, 0,239, 0, 2, 0, 35, 4, 2, 0,116, 8, 7, 0,117, 8, 7, 0, 88, 0, 7, 0,239, 2, 4, 0,118, 8, 4, 0, 81, 0, + 4, 0,184, 2, 7, 0,119, 8, 7, 0,120, 8, 7, 0,121, 8, 7, 0,122, 8, 7, 0,123, 8, 7, 0,124, 8, 7, 0,236, 2, + 7, 0, 56, 1, 7, 0,125, 8, 7, 0,126, 8, 7, 0, 37, 0, 7, 0,127, 8, 7, 0,128, 8, 7, 0,129, 8, 2, 0,130, 8, + 2, 0,131, 8, 2, 0,132, 8, 2, 0,133, 8, 2, 0,134, 8, 2, 0,135, 8, 2, 0,136, 8, 2, 0,137, 8, 2, 0, 17, 2, + 2, 0,138, 8, 2, 0, 14, 2, 2, 0,139, 8, 0, 0,140, 8, 0, 0,141, 8, 7, 0,237, 0, 32, 1,142, 8, 67, 0,229, 1, + 33, 1, 16, 0, 33, 1, 0, 0, 33, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,115, 8, 2, 0,239, 0, 7, 0,231, 2, + 7, 0,232, 2, 7, 0,233, 2, 7, 0, 64, 2, 7, 0,234, 2, 7, 0,235, 2, 7, 0,143, 8, 7, 0,236, 2, 7, 0,238, 2, + 7, 0,239, 2,231, 0, 5, 0, 2, 0, 17, 0, 2, 0, 25, 8, 2, 0, 19, 0, 2, 0,144, 8, 27, 0,165, 6,230, 0, 3, 0, + 4, 0, 68, 0, 4, 0,145, 8,231, 0, 2, 0, 34, 1, 7, 0, 34, 1, 0, 0, 34, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 4, 0, 22, 0, 9, 0,146, 8, 35, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0,147, 8, 4, 0,148, 8, 4, 0, 37, 0, 36, 1, 4, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 89, 0, 2, 0, 69, 0, 37, 1, 4, 0, 0, 0, 20, 0, - 66, 0,150, 8, 7, 0, 76, 1, 7, 0, 37, 0, 38, 1, 6, 0, 2, 0,151, 8, 2, 0,152, 8, 2, 0, 17, 0, 2, 0,153, 8, - 0, 0,154, 8, 0, 0,155, 8, 39, 1, 5, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0,156, 8, 0, 0,157, 8, - 40, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 41, 1, 4, 0, 2, 0,158, 8, 2, 0,159, 8, 2, 0, 19, 0, - 2, 0, 37, 0, 42, 1, 6, 0, 0, 0, 20, 0, 0, 0,160, 8, 2, 0,161, 8, 2, 0,236, 2, 2, 0, 69, 1, 2, 0, 69, 0, + 66, 0,149, 8, 7, 0, 76, 1, 7, 0, 37, 0, 38, 1, 6, 0, 2, 0,150, 8, 2, 0,151, 8, 2, 0, 17, 0, 2, 0,152, 8, + 0, 0,153, 8, 0, 0,154, 8, 39, 1, 5, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0,155, 8, 0, 0,156, 8, + 40, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 41, 1, 4, 0, 2, 0,157, 8, 2, 0,158, 8, 2, 0, 19, 0, + 2, 0, 37, 0, 42, 1, 6, 0, 0, 0, 20, 0, 0, 0,159, 8, 2, 0,160, 8, 2, 0,236, 2, 2, 0, 69, 1, 2, 0, 69, 0, 43, 1, 5, 0, 0, 0, 20, 0, 7, 0, 65, 3, 7, 0,129, 4, 2, 0, 19, 0, 2, 0,196, 2, 44, 1, 3, 0, 0, 0, 20, 0, - 4, 0,184, 2, 4, 0,158, 8, 45, 1, 7, 0, 0, 0, 20, 0, 7, 0,129, 4, 0, 0,162, 8, 0, 0,163, 8, 2, 0, 69, 1, - 2, 0, 89, 0, 4, 0,164, 8, 46, 1, 4, 0, 0, 0,165, 8, 0, 0,166, 8, 4, 0, 17, 0, 7, 0,200, 2, 47, 1, 3, 0, - 32, 0,167, 8, 0, 0,168, 8, 0, 0,169, 8, 48, 1, 18, 0, 48, 1, 0, 0, 48, 1, 1, 0, 2, 0, 17, 0, 2, 0,170, 8, - 2, 0, 19, 0, 2, 0,171, 8, 2, 0,172, 8, 2, 0,173, 8, 2, 0, 89, 0, 2, 0, 69, 0, 0, 0, 20, 0, 9, 0, 2, 0, - 49, 1,174, 8, 32, 0, 44, 0, 2, 0,105, 5, 2, 0, 71, 8, 2, 0,175, 8, 2, 0, 37, 0, 50, 1, 11, 0, 0, 0, 20, 0, - 0, 0, 17, 0, 0, 0,176, 8, 2, 0, 19, 0, 2, 0,196, 2, 2, 0,177, 8, 4, 0,178, 8, 4, 0,179, 8, 4, 0,180, 8, - 4, 0,181, 8, 4, 0,182, 8, 51, 1, 1, 0, 0, 0,183, 8, 52, 1, 4, 0, 42, 0,132, 6, 0, 0,121, 7, 4, 0, 69, 1, - 4, 0, 19, 0, 49, 1, 18, 0, 49, 1, 0, 0, 49, 1, 1, 0, 49, 1,184, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,185, 8, - 2, 0,173, 8, 2, 0,170, 8, 2, 0,186, 8, 2, 0, 69, 0, 2, 0,226, 1, 0, 0, 20, 0, 9, 0, 2, 0, 53, 1,174, 8, - 48, 1,187, 8, 2, 0, 15, 0, 2, 0,188, 8, 4, 0,189, 8, 54, 1, 3, 0, 4, 0,210, 2, 4, 0, 37, 0, 32, 0, 44, 0, - 55, 1, 12, 0,161, 0,190, 8, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,118, 8, 4, 0, 88, 0, 0, 0, 20, 0, 0, 0,191, 8, - 2, 0,192, 8, 2, 0,193, 8, 2, 0,194, 8, 2, 0,195, 8, 7, 0,196, 8, 56, 1, 13, 0, 2, 0, 19, 0, 2, 0,197, 8, - 4, 0, 89, 0, 4, 0, 69, 0, 2, 0,198, 8, 7, 0,249, 3, 7, 0,199, 8, 22, 1, 69, 8, 57, 1,200, 8, 2, 0, 17, 0, - 2, 0,248, 1, 2, 0,233, 5, 2, 0,201, 8, 58, 1, 11, 0, 4, 0,210, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 44, 0, - 80, 0,202, 8, 0, 0, 20, 0, 7, 0,203, 8, 7, 0,204, 8, 7, 0,134, 3, 2, 0,205, 8, 2, 0,206, 8, 59, 1, 5, 0, + 4, 0,184, 2, 4, 0,157, 8, 45, 1, 7, 0, 0, 0, 20, 0, 7, 0,129, 4, 0, 0,161, 8, 0, 0,162, 8, 2, 0, 69, 1, + 2, 0, 89, 0, 4, 0,163, 8, 46, 1, 4, 0, 0, 0,164, 8, 0, 0,165, 8, 4, 0, 17, 0, 7, 0,200, 2, 47, 1, 3, 0, + 32, 0,166, 8, 0, 0,167, 8, 0, 0,168, 8, 48, 1, 18, 0, 48, 1, 0, 0, 48, 1, 1, 0, 2, 0, 17, 0, 2, 0,169, 8, + 2, 0, 19, 0, 2, 0,170, 8, 2, 0,171, 8, 2, 0,172, 8, 2, 0, 89, 0, 2, 0, 69, 0, 0, 0, 20, 0, 9, 0, 2, 0, + 49, 1,173, 8, 32, 0, 44, 0, 2, 0,105, 5, 2, 0, 70, 8, 2, 0,174, 8, 2, 0, 37, 0, 50, 1, 11, 0, 0, 0, 20, 0, + 0, 0, 17, 0, 0, 0,175, 8, 2, 0, 19, 0, 2, 0,196, 2, 2, 0,176, 8, 4, 0,177, 8, 4, 0,178, 8, 4, 0,179, 8, + 4, 0,180, 8, 4, 0,181, 8, 51, 1, 1, 0, 0, 0,182, 8, 52, 1, 4, 0, 42, 0,132, 6, 0, 0,121, 7, 4, 0, 69, 1, + 4, 0, 19, 0, 49, 1, 18, 0, 49, 1, 0, 0, 49, 1, 1, 0, 49, 1,183, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,184, 8, + 2, 0,172, 8, 2, 0,169, 8, 2, 0,185, 8, 2, 0, 69, 0, 2, 0,226, 1, 0, 0, 20, 0, 9, 0, 2, 0, 53, 1,173, 8, + 48, 1,186, 8, 2, 0, 15, 0, 2, 0,187, 8, 4, 0,188, 8, 54, 1, 3, 0, 4, 0,210, 2, 4, 0, 37, 0, 32, 0, 44, 0, + 55, 1, 12, 0,161, 0,189, 8, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,117, 8, 4, 0, 88, 0, 0, 0, 20, 0, 0, 0,190, 8, + 2, 0,191, 8, 2, 0,192, 8, 2, 0,193, 8, 2, 0,194, 8, 7, 0,195, 8, 56, 1, 13, 0, 2, 0, 19, 0, 2, 0,196, 8, + 4, 0, 89, 0, 4, 0, 69, 0, 2, 0,197, 8, 7, 0,249, 3, 7, 0,198, 8, 22, 1, 68, 8, 57, 1,199, 8, 2, 0, 17, 0, + 2, 0,248, 1, 2, 0,233, 5, 2, 0,200, 8, 58, 1, 11, 0, 4, 0,210, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 44, 0, + 80, 0,201, 8, 0, 0, 20, 0, 7, 0,202, 8, 7, 0,203, 8, 7, 0,134, 3, 2, 0,204, 8, 2, 0,205, 8, 59, 1, 5, 0, 2, 0, 17, 0, 2, 0, 89, 0, 4, 0, 37, 0, 46, 0,129, 0, 32, 0, 94, 5, 60, 1, 5, 0, 4, 0, 37, 0, 4, 0, 17, 0, - 0, 0, 20, 0, 0, 0,156, 8, 32, 0, 44, 0, 61, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,170, 8, 2, 0,135, 3, - 7, 0,207, 8, 7, 0,208, 8, 7, 0,179, 4, 7, 0,147, 3, 7, 0,106, 3, 7, 0,109, 3, 7, 0,209, 8, 7, 0,210, 8, - 32, 0,211, 8, 62, 1, 10, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,118, 8, 4, 0, 88, 0, 0, 0, 20, 0, 0, 0,191, 8, - 2, 0, 89, 0, 2, 0, 69, 0, 2, 0,226, 1, 2, 0,248, 1, 63, 1, 8, 0, 32, 0, 44, 0, 7, 0,233, 2, 7, 0,212, 8, - 7, 0,213, 8, 7, 0, 37, 0, 2, 0, 89, 0, 2, 0,196, 2, 7, 0, 69, 0, 64, 1, 12, 0, 2, 0, 17, 0, 2, 0, 69, 1, - 2, 0, 19, 0, 2, 0,236, 2, 2, 0,210, 2, 2, 0,214, 8, 4, 0, 37, 0, 7, 0,215, 8, 7, 0,216, 8, 7, 0,217, 8, - 7, 0,218, 8, 0, 0,219, 8, 65, 1, 9, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,118, 8, 4, 0, 88, 0, 0, 0, 20, 0, - 2, 0,179, 4, 2, 0, 63, 0, 2, 0,220, 8, 2, 0,221, 8, 66, 1, 7, 0, 4, 0,184, 2, 4, 0,222, 8, 4, 0,223, 8, - 4, 0,224, 8, 7, 0,225, 8, 7, 0,226, 8, 0, 0,162, 8, 67, 1, 7, 0, 0, 0,227, 8, 32, 0,228, 8, 0, 0,168, 8, - 2, 0,229, 8, 2, 0, 89, 0, 4, 0, 69, 0, 0, 0,169, 8, 68, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,118, 8, - 4, 0, 88, 0, 0, 0,230, 8, 0, 0,231, 8, 69, 1, 1, 0, 4, 0, 19, 0, 70, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 4, 0,232, 8, 7, 0,233, 8, 42, 0,132, 6, 71, 1, 4, 0, 0, 0, 59, 2, 2, 0, 19, 0, 4, 0, 17, 0, - 32, 0, 44, 0, 72, 1, 2, 0, 4, 0, 17, 0, 4, 0, 52, 6, 73, 1, 6, 0, 0, 0,165, 8, 0, 0,166, 8, 4, 0, 17, 0, - 7, 0, 25, 2, 32, 0, 44, 3, 32, 0,234, 8, 53, 1, 10, 0, 53, 1, 0, 0, 53, 1, 1, 0, 53, 1,184, 8, 2, 0, 17, 0, - 2, 0, 19, 0, 2, 0,170, 8, 2, 0,235, 8, 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 44, 0, 74, 1, 10, 0, 7, 0,134, 3, - 7, 0,236, 8, 7, 0,237, 8, 7, 0,238, 8, 7, 0,239, 8, 4, 0, 19, 0, 7, 0,214, 8, 7, 0,240, 8, 7, 0,241, 8, - 7, 0, 37, 0, 57, 1, 8, 0, 7, 0,242, 8, 7, 0,243, 8, 7, 0,244, 8, 7, 0,245, 8, 7, 0,246, 8, 7, 0,247, 8, - 7, 0,248, 8, 7, 0,249, 8, 22, 1, 16, 0, 27, 0, 31, 0, 0, 0, 34, 0, 43, 0,147, 0, 9, 0,220, 0, 43, 0,250, 8, - 36, 0, 79, 0, 7, 0,249, 3, 7, 0,251, 8, 7, 0,199, 8, 7, 0,242, 8, 7, 0,243, 8, 7, 0,252, 8, 4, 0, 90, 0, - 4, 0, 37, 0, 9, 0,253, 8, 9, 0,254, 8, 75, 1, 15, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, - 7, 0, 21, 6, 8, 1,255, 8,217, 0, 71, 6, 22, 1, 69, 8, 2, 0, 69, 1, 2, 0,197, 8, 2, 0, 79, 2, 2, 0, 80, 2, - 2, 0, 19, 0, 2, 0,122, 6, 4, 0, 69, 0, 76, 1, 6, 0, 76, 1, 0, 0, 76, 1, 1, 0, 32, 0, 44, 0, 9, 0, 0, 9, - 4, 0,244, 0, 4, 0, 37, 0, 67, 0, 4, 0, 27, 0, 31, 0, 12, 0, 1, 9, 4, 0,126, 0, 7, 0, 2, 9, 77, 1, 27, 0, - 77, 1, 0, 0, 77, 1, 1, 0, 26, 0, 3, 9, 77, 1, 38, 0, 12, 0, 4, 9, 0, 0, 20, 0, 7, 0, 5, 9, 7, 0, 6, 9, - 7, 0, 7, 9, 7, 0, 8, 9, 4, 0, 19, 0, 7, 0, 9, 9, 7, 0, 10, 9, 7, 0, 11, 9, 7, 0, 76, 1, 7, 0, 25, 2, - 7, 0, 12, 9, 7, 0,182, 2, 7, 0, 13, 9, 7, 0, 14, 9, 7, 0, 15, 9, 7, 0, 16, 9, 7, 0, 17, 9, 7, 0,169, 0, - 4, 0,126, 0, 2, 0,142, 5, 2, 0,179, 4, 78, 1, 25, 0, 27, 0, 31, 0, 39, 0, 74, 0, 12, 0, 18, 9, 12, 0, 19, 9, - 12, 0, 20, 9, 77, 1, 21, 9, 9, 0, 22, 9, 9, 0, 23, 9, 4, 0, 19, 0, 4, 0, 28, 6, 2, 0,240, 2, 2, 0, 81, 6, - 4, 0, 37, 0, 4, 0,126, 0, 4, 0, 24, 9, 2, 0, 25, 9, 2, 0, 26, 9, 2, 0, 27, 9, 2, 0, 28, 9, 4, 0, 29, 9, - 4, 0, 30, 9, 4, 0, 31, 9, 4, 0, 32, 9, 4, 0, 33, 9, 4, 0, 34, 9, 79, 1, 2, 0, 7, 0,142, 2, 4, 0, 19, 0, -165, 0, 5, 0, 79, 1, 35, 9, 4, 0,182, 2, 4, 0, 36, 9, 4, 0, 37, 9, 4, 0, 19, 0,164, 0, 16, 0, 4, 0, 38, 9, - 4, 0, 39, 9, 4, 0, 40, 9, 4, 0, 41, 9, 2, 0, 42, 9, 2, 0, 43, 9, 2, 0, 44, 9, 2, 0,244, 0, 2, 0, 45, 9, - 2, 0, 46, 9, 2, 0, 47, 9, 2, 0, 48, 9, 4, 0, 49, 9, 4, 0, 50, 9, 4, 0, 51, 9, 4, 0, 52, 9, 80, 1, 44, 0, - 80, 1, 0, 0, 80, 1, 1, 0, 26, 0, 3, 9, 12, 0,161, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0, 53, 9, 2, 0, 54, 9, - 2, 0, 55, 9, 2, 0,120, 3, 2, 0, 56, 9, 4, 0, 62, 2, 4, 0, 31, 9, 4, 0, 32, 9, 77, 1, 57, 9, 80, 1, 38, 0, - 80, 1, 58, 9, 12, 0, 59, 9, 9, 0, 60, 9, 9, 0, 61, 9, 9, 0, 62, 9, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 63, 9, - 7, 0, 4, 2, 7, 0,111, 3, 7, 0,113, 3, 2, 0,143, 3, 2, 0, 37, 0, 7, 0, 64, 9, 7, 0, 65, 9, 7, 0,116, 3, - 7, 0, 66, 9, 7, 0, 67, 9, 7, 0, 68, 9, 7, 0, 69, 9, 7, 0, 70, 9, 7, 0, 71, 9, 7, 0, 72, 9, 7, 0, 73, 9, - 7, 0, 54, 2,165, 0, 99, 3, 32, 0, 74, 9, 80, 1, 75, 9,162, 0, 14, 0, 12, 0, 76, 9, 81, 1, 77, 9, 2, 0, 19, 0, - 2, 0, 78, 9, 7, 0, 91, 2, 7, 0, 79, 9, 7, 0, 80, 9, 12, 0, 81, 9, 4, 0, 82, 9, 4, 0, 83, 9, 9, 0, 84, 9, - 9, 0, 85, 9,164, 0, 98, 3, 0, 0, 86, 9, 82, 1, 1, 0, 4, 0, 83, 9, 83, 1, 12, 0, 4, 0, 83, 9, 7, 0,182, 8, - 2, 0, 87, 9, 2, 0, 88, 9, 7, 0, 89, 9, 7, 0, 90, 9, 2, 0, 91, 9, 2, 0, 19, 0, 7, 0, 92, 9, 7, 0, 93, 9, - 7, 0, 94, 9, 7, 0, 95, 9, 84, 1, 7, 0, 84, 1, 0, 0, 84, 1, 1, 0, 12, 0, 96, 9, 4, 0, 19, 0, 4, 0, 97, 9, - 0, 0,240, 3,254, 0, 98, 9,161, 0, 7, 0, 27, 0, 31, 0, 12, 0, 99, 9, 12, 0, 76, 9, 12, 0,100, 9, 12, 0,100, 0, - 4, 0, 19, 0, 4, 0,101, 9,221, 0, 5, 0, 27, 0,102, 9, 12, 0, 76, 9, 67, 0,103, 9, 4, 0,104, 9, 4, 0, 19, 0, + 0, 0, 20, 0, 0, 0,155, 8, 32, 0, 44, 0, 61, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,169, 8, 2, 0,135, 3, + 7, 0,206, 8, 7, 0,207, 8, 7, 0,179, 4, 7, 0,147, 3, 7, 0,106, 3, 7, 0,109, 3, 7, 0,208, 8, 7, 0,209, 8, + 32, 0,210, 8, 62, 1, 10, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,117, 8, 4, 0, 88, 0, 0, 0, 20, 0, 0, 0,190, 8, + 2, 0, 89, 0, 2, 0, 69, 0, 2, 0,226, 1, 2, 0,248, 1, 63, 1, 8, 0, 32, 0, 44, 0, 7, 0,233, 2, 7, 0,211, 8, + 7, 0,212, 8, 7, 0, 37, 0, 2, 0, 89, 0, 2, 0,196, 2, 7, 0, 69, 0, 64, 1, 12, 0, 2, 0, 17, 0, 2, 0, 69, 1, + 2, 0, 19, 0, 2, 0,236, 2, 2, 0,210, 2, 2, 0,213, 8, 4, 0, 37, 0, 7, 0,214, 8, 7, 0,215, 8, 7, 0,216, 8, + 7, 0,217, 8, 0, 0,218, 8, 65, 1, 9, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,117, 8, 4, 0, 88, 0, 0, 0, 20, 0, + 2, 0,179, 4, 2, 0, 63, 0, 2, 0,219, 8, 2, 0,220, 8, 66, 1, 7, 0, 4, 0,184, 2, 4, 0,221, 8, 4, 0,222, 8, + 4, 0,223, 8, 7, 0,224, 8, 7, 0,225, 8, 0, 0,161, 8, 67, 1, 7, 0, 0, 0,226, 8, 32, 0,227, 8, 0, 0,167, 8, + 2, 0,228, 8, 2, 0, 89, 0, 4, 0, 69, 0, 0, 0,168, 8, 68, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,117, 8, + 4, 0, 88, 0, 0, 0,229, 8, 0, 0,230, 8, 69, 1, 1, 0, 4, 0, 19, 0, 70, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 4, 0,231, 8, 7, 0,232, 8, 42, 0,132, 6, 71, 1, 4, 0, 0, 0, 59, 2, 2, 0, 19, 0, 4, 0, 17, 0, + 32, 0, 44, 0, 72, 1, 2, 0, 4, 0, 17, 0, 4, 0, 52, 6, 73, 1, 6, 0, 0, 0,164, 8, 0, 0,165, 8, 4, 0, 17, 0, + 7, 0, 25, 2, 32, 0, 44, 3, 32, 0,233, 8, 53, 1, 10, 0, 53, 1, 0, 0, 53, 1, 1, 0, 53, 1,183, 8, 2, 0, 17, 0, + 2, 0, 19, 0, 2, 0,169, 8, 2, 0,234, 8, 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 44, 0, 74, 1, 10, 0, 7, 0,134, 3, + 7, 0,235, 8, 7, 0,236, 8, 7, 0,237, 8, 7, 0,238, 8, 4, 0, 19, 0, 7, 0,213, 8, 7, 0,239, 8, 7, 0,240, 8, + 7, 0, 37, 0, 57, 1, 8, 0, 7, 0,241, 8, 7, 0,242, 8, 7, 0,243, 8, 7, 0,244, 8, 7, 0,245, 8, 7, 0,246, 8, + 7, 0,247, 8, 7, 0,248, 8, 22, 1, 16, 0, 27, 0, 31, 0, 0, 0, 34, 0, 43, 0,147, 0, 9, 0,220, 0, 43, 0,249, 8, + 36, 0, 79, 0, 7, 0,249, 3, 7, 0,250, 8, 7, 0,198, 8, 7, 0,241, 8, 7, 0,242, 8, 7, 0,251, 8, 4, 0, 90, 0, + 4, 0, 37, 0, 9, 0,252, 8, 9, 0,253, 8, 75, 1, 15, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, + 7, 0, 21, 6, 8, 1,254, 8,217, 0, 71, 6, 22, 1, 68, 8, 2, 0, 69, 1, 2, 0,196, 8, 2, 0, 79, 2, 2, 0, 80, 2, + 2, 0, 19, 0, 2, 0,122, 6, 4, 0, 69, 0, 76, 1, 6, 0, 76, 1, 0, 0, 76, 1, 1, 0, 32, 0, 44, 0, 9, 0,255, 8, + 4, 0,244, 0, 4, 0, 37, 0, 67, 0, 4, 0, 27, 0, 31, 0, 12, 0, 0, 9, 4, 0,126, 0, 7, 0, 1, 9, 77, 1, 27, 0, + 77, 1, 0, 0, 77, 1, 1, 0, 26, 0, 2, 9, 77, 1, 38, 0, 12, 0, 3, 9, 0, 0, 20, 0, 7, 0, 4, 9, 7, 0, 5, 9, + 7, 0, 6, 9, 7, 0, 7, 9, 4, 0, 19, 0, 7, 0, 8, 9, 7, 0, 9, 9, 7, 0, 10, 9, 7, 0, 76, 1, 7, 0, 25, 2, + 7, 0, 11, 9, 7, 0,182, 2, 7, 0, 12, 9, 7, 0, 13, 9, 7, 0, 14, 9, 7, 0, 15, 9, 7, 0, 16, 9, 7, 0,169, 0, + 4, 0,126, 0, 2, 0,142, 5, 2, 0,179, 4, 78, 1, 25, 0, 27, 0, 31, 0, 39, 0, 74, 0, 12, 0, 17, 9, 12, 0, 18, 9, + 12, 0, 19, 9, 77, 1, 20, 9, 9, 0, 21, 9, 9, 0, 22, 9, 4, 0, 19, 0, 4, 0, 28, 6, 2, 0,240, 2, 2, 0, 81, 6, + 4, 0, 37, 0, 4, 0,126, 0, 4, 0, 23, 9, 2, 0, 24, 9, 2, 0, 25, 9, 2, 0, 26, 9, 2, 0, 27, 9, 4, 0, 28, 9, + 4, 0, 29, 9, 4, 0, 30, 9, 4, 0, 31, 9, 4, 0, 32, 9, 4, 0, 33, 9, 79, 1, 2, 0, 7, 0,142, 2, 4, 0, 19, 0, +165, 0, 5, 0, 79, 1, 34, 9, 4, 0,182, 2, 4, 0, 35, 9, 4, 0, 36, 9, 4, 0, 19, 0,164, 0, 16, 0, 4, 0, 37, 9, + 4, 0, 38, 9, 4, 0, 39, 9, 4, 0, 40, 9, 2, 0, 41, 9, 2, 0, 42, 9, 2, 0, 43, 9, 2, 0,244, 0, 2, 0, 44, 9, + 2, 0, 45, 9, 2, 0, 46, 9, 2, 0, 47, 9, 4, 0, 48, 9, 4, 0, 49, 9, 4, 0, 50, 9, 4, 0, 51, 9, 80, 1, 44, 0, + 80, 1, 0, 0, 80, 1, 1, 0, 26, 0, 2, 9, 12, 0,161, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0, 52, 9, 2, 0, 53, 9, + 2, 0, 54, 9, 2, 0,120, 3, 2, 0, 55, 9, 4, 0, 62, 2, 4, 0, 30, 9, 4, 0, 31, 9, 77, 1, 56, 9, 80, 1, 38, 0, + 80, 1, 57, 9, 12, 0, 58, 9, 9, 0, 59, 9, 9, 0, 60, 9, 9, 0, 61, 9, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 62, 9, + 7, 0, 4, 2, 7, 0,111, 3, 7, 0,113, 3, 2, 0,143, 3, 2, 0, 37, 0, 7, 0, 63, 9, 7, 0, 64, 9, 7, 0,116, 3, + 7, 0, 65, 9, 7, 0, 66, 9, 7, 0, 67, 9, 7, 0, 68, 9, 7, 0, 69, 9, 7, 0, 70, 9, 7, 0, 71, 9, 7, 0, 72, 9, + 7, 0, 54, 2,165, 0, 99, 3, 32, 0, 73, 9, 80, 1, 74, 9,162, 0, 14, 0, 12, 0, 75, 9, 81, 1, 76, 9, 2, 0, 19, 0, + 2, 0, 77, 9, 7, 0, 91, 2, 7, 0, 78, 9, 7, 0, 79, 9, 12, 0, 80, 9, 4, 0, 81, 9, 4, 0, 82, 9, 9, 0, 83, 9, + 9, 0, 84, 9,164, 0, 98, 3, 0, 0, 85, 9, 82, 1, 1, 0, 4, 0, 82, 9, 83, 1, 12, 0, 4, 0, 82, 9, 7, 0,181, 8, + 2, 0, 86, 9, 2, 0, 87, 9, 7, 0, 88, 9, 7, 0, 89, 9, 2, 0, 90, 9, 2, 0, 19, 0, 7, 0, 91, 9, 7, 0, 92, 9, + 7, 0, 93, 9, 7, 0, 94, 9, 84, 1, 7, 0, 84, 1, 0, 0, 84, 1, 1, 0, 12, 0, 95, 9, 4, 0, 19, 0, 4, 0, 96, 9, + 0, 0,240, 3,254, 0, 97, 9,161, 0, 7, 0, 27, 0, 31, 0, 12, 0, 98, 9, 12, 0, 75, 9, 12, 0, 99, 9, 12, 0,100, 0, + 4, 0, 19, 0, 4, 0,100, 9,221, 0, 5, 0, 27, 0,101, 9, 12, 0, 75, 9, 67, 0,102, 9, 4, 0,103, 9, 4, 0, 19, 0, 85, 1, 13, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6, -161, 0, 94, 3,221, 0,105, 9, 0, 0, 69, 1, 0, 0, 74, 6, 2, 0, 19, 0, 7, 0,106, 9, 86, 1, 8, 0, 86, 1, 0, 0, - 86, 1, 1, 0, 84, 1,107, 9, 36, 0, 79, 0, 12, 0,100, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0,108, 9, 87, 1, 5, 0, - 87, 1, 0, 0, 87, 1, 1, 0, 36, 0, 79, 0, 2, 0, 19, 0, 0, 0,109, 9, 88, 1, 14, 0, 88, 1, 0, 0, 88, 1, 1, 0, - 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0,110, 9, 0, 0,111, 9, 0, 0,109, 9, 7, 0,112, 9, 7, 0,113, 9, - 4, 0, 37, 0, 36, 0, 79, 0, 7, 0,114, 9, 7, 0,115, 9, 89, 1, 9, 0, 89, 1, 0, 0, 89, 1, 1, 0, 32, 0,116, 9, - 0, 0,243, 2, 7, 0,117, 9, 2, 0,118, 9, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,119, 9, 90, 1, 7, 0, 42, 0,132, 6, - 26, 0, 3, 9, 4, 0, 19, 0, 4, 0,120, 9, 12, 0,121, 9, 32, 0,116, 9, 0, 0,243, 2, 91, 1, 15, 0, 32, 0,116, 9, - 2, 0,122, 9, 2, 0, 19, 0, 2, 0,123, 9, 2, 0,124, 9, 0, 0,243, 2, 32, 0,125, 9, 0, 0,126, 9, 7, 0,127, 9, - 7, 0, 25, 2, 7, 0,128, 9, 7, 0,129, 9, 2, 0, 17, 0, 2, 0, 69, 1, 7, 0, 76, 1, 92, 1, 6, 0, 32, 0,116, 9, - 7, 0, 35, 9, 2, 0,130, 9, 2, 0,131, 9, 2, 0, 19, 0, 2, 0,132, 9, 93, 1, 6, 0, 32, 0,116, 9, 4, 0,133, 9, - 4, 0,134, 9, 4, 0, 90, 0, 4, 0, 37, 0, 0, 0,243, 2, 94, 1, 4, 0, 32, 0,116, 9, 4, 0, 19, 0, 4, 0,133, 9, - 0, 0,243, 2, 95, 1, 4, 0, 32, 0,116, 9, 4, 0, 19, 0, 4, 0,133, 9, 0, 0,243, 2, 96, 1, 4, 0, 32, 0,116, 9, - 4, 0, 19, 0, 4, 0,133, 9, 0, 0,243, 2, 97, 1, 2, 0, 4, 0, 19, 0, 7, 0,249, 3, 98, 1, 2, 0, 32, 0,116, 9, - 0, 0,243, 2, 99, 1, 10, 0, 32, 0,116, 9, 4, 0,135, 9, 7, 0,120, 0, 4, 0, 19, 0, 2, 0,125, 6, 2, 0,136, 9, - 2, 0, 89, 0, 2, 0, 69, 0, 7, 0,137, 9, 0, 0,243, 2,100, 1, 10, 0, 32, 0,116, 9, 2, 0, 17, 0, 2, 0, 43, 4, - 4, 0, 87, 0, 4, 0, 88, 0, 7, 0,212, 8, 7, 0,213, 8, 4, 0, 37, 0,161, 0,190, 8, 0, 0,243, 2,101, 1, 4, 0, - 32, 0,116, 9, 4, 0,121, 3, 4, 0,138, 9, 0, 0,243, 2,102, 1, 4, 0, 32, 0,116, 9, 4, 0,121, 3, 4, 0, 37, 0, - 0, 0,243, 2,103, 1, 6, 0, 32, 0,116, 9, 7, 0,120, 0, 7, 0, 56, 3, 4, 0,139, 9, 2, 0,121, 3, 2, 0,122, 3, -104, 1, 6, 0, 32, 0,116, 9, 4, 0,140, 9, 4, 0,141, 9, 7, 0,142, 9, 7, 0,143, 9, 0, 0,243, 2,105, 1, 16, 0, - 32, 0,116, 9, 32, 0, 58, 9, 4, 0, 17, 0, 7, 0,144, 9, 7, 0,145, 9, 7, 0,146, 9, 7, 0,147, 9, 7, 0,148, 9, - 7, 0,149, 9, 7, 0,150, 9, 7, 0,151, 9, 7, 0,152, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 89, 0, 2, 0, 69, 0, -106, 1, 3, 0, 32, 0,116, 9, 4, 0, 19, 0, 4, 0, 17, 2,107, 1, 5, 0, 32, 0,116, 9, 4, 0, 19, 0, 4, 0, 37, 0, - 7, 0,153, 9, 0, 0,243, 2,108, 1, 10, 0, 32, 0,116, 9, 0, 0,243, 2, 2, 0,154, 9, 2, 0,155, 9, 0, 0,156, 9, - 0, 0,157, 9, 7, 0,158, 9, 7, 0,159, 9, 7, 0,160, 9, 7, 0,161, 9,109, 1, 5, 0, 32, 0,116, 9, 0, 0,243, 2, - 7, 0,190, 2, 2, 0,162, 9, 2, 0, 19, 0,110, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, - 7, 0,163, 9, 7, 0,164, 9, 2, 0, 19, 0, 2, 0, 17, 2,111, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, - 7, 0, 12, 0, 7, 0,163, 9, 7, 0,164, 9, 2, 0, 19, 0, 2, 0, 17, 2,112, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, - 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,163, 9, 7, 0,164, 9, 2, 0, 19, 0, 2, 0, 17, 2,113, 1, 7, 0, 32, 0,116, 9, +161, 0, 94, 3,221, 0,104, 9, 0, 0, 69, 1, 0, 0, 74, 6, 2, 0, 19, 0, 7, 0,105, 9, 86, 1, 8, 0, 86, 1, 0, 0, + 86, 1, 1, 0, 84, 1,106, 9, 36, 0, 79, 0, 12, 0,100, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0,107, 9, 87, 1, 5, 0, + 87, 1, 0, 0, 87, 1, 1, 0, 36, 0, 79, 0, 2, 0, 19, 0, 0, 0,108, 9, 88, 1, 14, 0, 88, 1, 0, 0, 88, 1, 1, 0, + 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0,109, 9, 0, 0,110, 9, 0, 0,108, 9, 7, 0,111, 9, 7, 0,112, 9, + 4, 0, 37, 0, 36, 0, 79, 0, 7, 0,113, 9, 7, 0,114, 9, 89, 1, 9, 0, 89, 1, 0, 0, 89, 1, 1, 0, 32, 0,115, 9, + 0, 0,243, 2, 7, 0,116, 9, 2, 0,117, 9, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,118, 9, 90, 1, 7, 0, 42, 0,132, 6, + 26, 0, 2, 9, 4, 0, 19, 0, 4, 0,119, 9, 12, 0,120, 9, 32, 0,115, 9, 0, 0,243, 2, 91, 1, 15, 0, 32, 0,115, 9, + 2, 0,121, 9, 2, 0, 19, 0, 2, 0,122, 9, 2, 0,123, 9, 0, 0,243, 2, 32, 0,124, 9, 0, 0,125, 9, 7, 0,126, 9, + 7, 0, 25, 2, 7, 0,127, 9, 7, 0,128, 9, 2, 0, 17, 0, 2, 0, 69, 1, 7, 0, 76, 1, 92, 1, 6, 0, 32, 0,115, 9, + 7, 0, 34, 9, 2, 0,129, 9, 2, 0,130, 9, 2, 0, 19, 0, 2, 0,131, 9, 93, 1, 6, 0, 32, 0,115, 9, 4, 0,132, 9, + 4, 0,133, 9, 4, 0, 90, 0, 4, 0, 37, 0, 0, 0,243, 2, 94, 1, 4, 0, 32, 0,115, 9, 4, 0, 19, 0, 4, 0,132, 9, + 0, 0,243, 2, 95, 1, 4, 0, 32, 0,115, 9, 4, 0, 19, 0, 4, 0,132, 9, 0, 0,243, 2, 96, 1, 4, 0, 32, 0,115, 9, + 4, 0, 19, 0, 4, 0,132, 9, 0, 0,243, 2, 97, 1, 2, 0, 4, 0, 19, 0, 7, 0,249, 3, 98, 1, 2, 0, 32, 0,115, 9, + 0, 0,243, 2, 99, 1, 10, 0, 32, 0,115, 9, 4, 0,134, 9, 7, 0,120, 0, 4, 0, 19, 0, 2, 0,125, 6, 2, 0,135, 9, + 2, 0, 89, 0, 2, 0, 69, 0, 7, 0,136, 9, 0, 0,243, 2,100, 1, 10, 0, 32, 0,115, 9, 2, 0, 17, 0, 2, 0, 43, 4, + 4, 0, 87, 0, 4, 0, 88, 0, 7, 0,211, 8, 7, 0,212, 8, 4, 0, 37, 0,161, 0,189, 8, 0, 0,243, 2,101, 1, 4, 0, + 32, 0,115, 9, 4, 0,121, 3, 4, 0,137, 9, 0, 0,243, 2,102, 1, 4, 0, 32, 0,115, 9, 4, 0,121, 3, 4, 0, 37, 0, + 0, 0,243, 2,103, 1, 6, 0, 32, 0,115, 9, 7, 0,120, 0, 7, 0, 56, 3, 4, 0,138, 9, 2, 0,121, 3, 2, 0,122, 3, +104, 1, 6, 0, 32, 0,115, 9, 4, 0,139, 9, 4, 0,140, 9, 7, 0,141, 9, 7, 0,142, 9, 0, 0,243, 2,105, 1, 16, 0, + 32, 0,115, 9, 32, 0, 57, 9, 4, 0, 17, 0, 7, 0,143, 9, 7, 0,144, 9, 7, 0,145, 9, 7, 0,146, 9, 7, 0,147, 9, + 7, 0,148, 9, 7, 0,149, 9, 7, 0,150, 9, 7, 0,151, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 89, 0, 2, 0, 69, 0, +106, 1, 3, 0, 32, 0,115, 9, 4, 0, 19, 0, 4, 0, 17, 2,107, 1, 5, 0, 32, 0,115, 9, 4, 0, 19, 0, 4, 0, 37, 0, + 7, 0,152, 9, 0, 0,243, 2,108, 1, 10, 0, 32, 0,115, 9, 0, 0,243, 2, 2, 0,153, 9, 2, 0,154, 9, 0, 0,155, 9, + 0, 0,156, 9, 7, 0,157, 9, 7, 0,158, 9, 7, 0,159, 9, 7, 0,160, 9,109, 1, 5, 0, 32, 0,115, 9, 0, 0,243, 2, + 7, 0,190, 2, 2, 0,161, 9, 2, 0, 19, 0,110, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, + 7, 0,162, 9, 7, 0,163, 9, 2, 0, 19, 0, 2, 0, 17, 2,111, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, + 7, 0, 12, 0, 7, 0,162, 9, 7, 0,163, 9, 2, 0, 19, 0, 2, 0, 17, 2,112, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, + 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,162, 9, 7, 0,163, 9, 2, 0, 19, 0, 2, 0, 17, 2,113, 1, 7, 0, 32, 0,115, 9, 0, 0,243, 2, 7, 0, 76, 1, 7, 0, 85, 1, 2, 0, 19, 0, 2, 0, 69, 1, 4, 0, 37, 0,114, 1, 5, 0, 32, 0, 44, 3, - 7, 0, 76, 1, 2, 0, 48, 3, 0, 0, 50, 3, 0, 0,165, 9,115, 1, 10, 0,115, 1, 0, 0,115, 1, 1, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 0, 0,166, 9, 7, 0, 19, 1, 7, 0, 20, 1, 2, 0, 96, 9, 2, 0,167, 9, 32, 0, 44, 0,116, 1, 22, 0, -116, 1, 0, 0,116, 1, 1, 0, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0,168, 9, 2, 0,169, 9, 36, 0, 79, 0,161, 0,190, 8, - 32, 0,161, 0, 7, 0, 87, 0, 7, 0, 88, 0, 7, 0,170, 9, 7, 0,171, 9, 7, 0,172, 9, 7, 0,173, 9, 7, 0,229, 2, - 7, 0,174, 9, 7, 0,192, 8, 7, 0,175, 9, 0, 0,176, 9, 0, 0,177, 9, 12, 0,102, 3,117, 1, 8, 0, 7, 0, 32, 2, - 7, 0,212, 8, 7, 0,213, 8, 9, 0, 2, 0, 2, 0,178, 9, 2, 0,179, 9, 2, 0,180, 9, 2, 0,181, 9,118, 1, 18, 0, -118, 1, 0, 0,118, 1, 1, 0,118, 1,182, 9, 0, 0, 20, 0,117, 1,183, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,184, 9, - 2, 0,185, 9, 2, 0,186, 9, 2, 0,187, 9, 4, 0, 89, 0, 7, 0,188, 9, 7, 0,189, 9, 4, 0,190, 9, 4, 0,191, 9, -118, 1,192, 9,119, 1,193, 9,120, 1, 33, 0,120, 1, 0, 0,120, 1, 1, 0,120, 1,194, 9, 0, 0, 20, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 2, 0, 35, 8, 2, 0, 71, 8, 2, 0,195, 9, 2, 0,128, 0, 2, 0,185, 9, 2, 0, 26, 8, 12, 0,185, 8, - 12, 0,196, 9, 27, 0,165, 6, 9, 0,197, 9, 7, 0,188, 9, 7, 0,189, 9, 7, 0, 64, 2, 7, 0,198, 9, 2, 0,199, 9, - 2, 0,200, 9, 7, 0,201, 9, 7, 0,202, 9, 2, 0,203, 9, 2, 0,204, 9, 9, 0,205, 9, 24, 0,206, 9, 24, 0,207, 9, - 24, 0,208, 9,121, 1,148, 0,122, 1,209, 9,123, 1,210, 9,119, 1, 8, 0,119, 1, 0, 0,119, 1, 1, 0,120, 1,211, 9, -120, 1,212, 9,118, 1,213, 9,118, 1,192, 9, 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 22, 0, 27, 0, 31, 0, 39, 0, 74, 0, -163, 0, 97, 3, 12, 0,214, 9, 12, 0,215, 9,117, 1,216, 9, 12, 0,217, 9, 4, 0, 17, 0, 4, 0,218, 9, 4, 0,219, 9, - 4, 0,220, 9, 4, 0, 19, 0, 4, 0, 37, 0, 12, 0,221, 9,123, 1,222, 9, 4, 0,223, 9, 9, 0,224, 9, 9, 0,225, 9, - 4, 0,226, 9, 9, 0,227, 9, 9, 0,228, 9, 9, 0,229, 9,124, 1, 6, 0, 4, 0,119, 0, 4, 0,121, 0, 4, 0, 26, 8, - 0, 0,230, 9, 0, 0,231, 9, 2, 0, 37, 0,125, 1, 16, 0, 2, 0,234, 7, 2, 0,235, 7, 2, 0,232, 9, 2, 0,237, 8, - 2, 0,233, 9, 2, 0, 67, 0, 7, 0,228, 2, 7, 0,234, 9, 7, 0,235, 9, 2, 0, 91, 1, 0, 0,236, 9, 0, 0,237, 9, - 2, 0,238, 9, 2, 0, 37, 0, 4, 0,239, 9, 4, 0,240, 9,126, 1, 9, 0, 7, 0,241, 9, 7, 0,242, 9, 7, 0,252, 8, - 7, 0, 65, 3, 7, 0,243, 9, 7, 0, 87, 6, 2, 0, 63, 3, 0, 0,244, 9, 0, 0, 37, 0,127, 1, 4, 0, 7, 0,245, 9, - 7, 0,246, 9, 2, 0, 63, 3, 2, 0, 37, 0,128, 1, 3, 0, 7, 0,247, 9, 7, 0, 57, 8, 7, 0, 15, 0,129, 1, 7, 0, + 7, 0, 76, 1, 2, 0, 48, 3, 0, 0, 50, 3, 0, 0,164, 9,115, 1, 10, 0,115, 1, 0, 0,115, 1, 1, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 0, 0,165, 9, 7, 0, 19, 1, 7, 0, 20, 1, 2, 0, 95, 9, 2, 0,166, 9, 32, 0, 44, 0,116, 1, 22, 0, +116, 1, 0, 0,116, 1, 1, 0, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0,167, 9, 2, 0,168, 9, 36, 0, 79, 0,161, 0,189, 8, + 32, 0,161, 0, 7, 0, 87, 0, 7, 0, 88, 0, 7, 0,169, 9, 7, 0,170, 9, 7, 0,171, 9, 7, 0,172, 9, 7, 0,229, 2, + 7, 0,173, 9, 7, 0,191, 8, 7, 0,174, 9, 0, 0,175, 9, 0, 0,176, 9, 12, 0,102, 3,117, 1, 8, 0, 7, 0, 32, 2, + 7, 0,211, 8, 7, 0,212, 8, 9, 0, 2, 0, 2, 0,177, 9, 2, 0,178, 9, 2, 0,179, 9, 2, 0,180, 9,118, 1, 18, 0, +118, 1, 0, 0,118, 1, 1, 0,118, 1,181, 9, 0, 0, 20, 0,117, 1,182, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,183, 9, + 2, 0,184, 9, 2, 0,185, 9, 2, 0,186, 9, 4, 0, 89, 0, 7, 0,187, 9, 7, 0,188, 9, 4, 0,189, 9, 4, 0,190, 9, +118, 1,191, 9,119, 1,192, 9,120, 1, 33, 0,120, 1, 0, 0,120, 1, 1, 0,120, 1,193, 9, 0, 0, 20, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 2, 0, 34, 8, 2, 0, 70, 8, 2, 0,194, 9, 2, 0,128, 0, 2, 0,184, 9, 2, 0, 25, 8, 12, 0,184, 8, + 12, 0,195, 9, 27, 0,165, 6, 9, 0,196, 9, 7, 0,187, 9, 7, 0,188, 9, 7, 0, 64, 2, 7, 0,197, 9, 2, 0,198, 9, + 2, 0,199, 9, 7, 0,200, 9, 7, 0,201, 9, 2, 0,202, 9, 2, 0,203, 9, 9, 0,204, 9, 24, 0,205, 9, 24, 0,206, 9, + 24, 0,207, 9,121, 1,148, 0,122, 1,208, 9,123, 1,209, 9,119, 1, 8, 0,119, 1, 0, 0,119, 1, 1, 0,120, 1,210, 9, +120, 1,211, 9,118, 1,212, 9,118, 1,191, 9, 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 22, 0, 27, 0, 31, 0, 39, 0, 74, 0, +163, 0, 97, 3, 12, 0,213, 9, 12, 0,214, 9,117, 1,215, 9, 12, 0,216, 9, 4, 0, 17, 0, 4, 0,217, 9, 4, 0,218, 9, + 4, 0,219, 9, 4, 0, 19, 0, 4, 0, 37, 0, 12, 0,220, 9,123, 1,221, 9, 4, 0,222, 9, 9, 0,223, 9, 9, 0,224, 9, + 4, 0,225, 9, 9, 0,226, 9, 9, 0,227, 9, 9, 0,228, 9,124, 1, 6, 0, 4, 0,119, 0, 4, 0,121, 0, 4, 0, 25, 8, + 0, 0,229, 9, 0, 0,230, 9, 2, 0, 37, 0,125, 1, 16, 0, 2, 0,233, 7, 2, 0,234, 7, 2, 0,231, 9, 2, 0,236, 8, + 2, 0,232, 9, 2, 0, 67, 0, 7, 0,228, 2, 7, 0,233, 9, 7, 0,234, 9, 2, 0, 91, 1, 0, 0,235, 9, 0, 0,236, 9, + 2, 0,237, 9, 2, 0, 37, 0, 4, 0,238, 9, 4, 0,239, 9,126, 1, 9, 0, 7, 0,240, 9, 7, 0,241, 9, 7, 0,251, 8, + 7, 0, 65, 3, 7, 0,242, 9, 7, 0, 87, 6, 2, 0, 63, 3, 0, 0,243, 9, 0, 0, 37, 0,127, 1, 4, 0, 7, 0,244, 9, + 7, 0,245, 9, 2, 0, 63, 3, 2, 0, 37, 0,128, 1, 3, 0, 7, 0,246, 9, 7, 0, 56, 8, 7, 0, 15, 0,129, 1, 7, 0, 0, 0,250, 1, 2, 0, 12, 5, 2, 0, 13, 5, 2, 0, 14, 5, 2, 0,201, 4, 4, 0,121, 0, 4, 0, 41, 4,130, 1, 9, 0, - 7, 0,248, 9, 7, 0,249, 9, 7, 0,250, 9, 7, 0, 75, 2, 7, 0,251, 9, 7, 0,252, 9, 7, 0,253, 9, 2, 0,254, 9, - 2, 0,255, 9,131, 1, 4, 0, 2, 0, 0, 10, 2, 0, 1, 10, 2, 0, 2, 10, 2, 0, 3, 10,132, 1, 2, 0, 7, 0, 5, 0, - 7, 0, 6, 0,133, 1, 2, 0, 0, 0,163, 0, 0, 0, 4, 10,134, 1, 1, 0, 0, 0, 20, 0,135, 1, 10, 0, 0, 0, 5, 10, - 0, 0, 6, 10, 0, 0, 80, 6, 0, 0, 7, 10, 2, 0,232, 9, 2, 0, 8, 10, 7, 0, 9, 10, 7, 0, 10, 10, 7, 0, 11, 10, - 7, 0,174, 9,136, 1, 2, 0, 9, 0, 12, 10, 9, 0, 13, 10,137, 1, 11, 0, 0, 0, 14, 5, 0, 0, 17, 0, 0, 0, 63, 3, - 0, 0, 65, 3, 0, 0, 14, 10, 0, 0,106, 0, 0, 0, 59, 2, 7, 0, 15, 10, 7, 0, 16, 10, 7, 0, 17, 10, 7, 0, 18, 10, -138, 1, 8, 0, 7, 0,151, 8, 7, 0,120, 0, 7, 0,237, 9, 7, 0,147, 2, 7, 0, 19, 10, 7, 0,233, 0, 7, 0, 20, 10, - 4, 0, 17, 0,139, 1, 4, 0, 2, 0, 21, 10, 2, 0, 22, 10, 2, 0, 23, 10, 2, 0, 37, 0,140, 1, 7, 0, 7, 0, 24, 10, - 7, 0,190, 2, 7, 0, 25, 10, 7, 0, 31, 8, 7, 0, 32, 8, 7, 0, 33, 8, 7, 0, 26, 10,141, 1, 6, 0, 2, 0, 27, 10, - 2, 0, 28, 10, 7, 0, 29, 10, 7, 0, 30, 10, 7, 0, 31, 10, 7, 0, 32, 10,142, 1, 1, 0, 0, 0, 20, 0,143, 1, 4, 0, - 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 19, 0, 2, 0, 33, 10,144, 1, 10, 0, 2, 0,229, 3, 2, 0, 19, 0, 7, 0,129, 4, - 7, 0, 34, 10, 7, 0, 35, 10, 7, 0, 36, 10, 7, 0, 37, 10,143, 1, 38, 10,143, 1, 39, 10,143, 1, 40, 10, 63, 0, 11, 0, - 4, 0, 19, 0, 4, 0, 63, 0, 4, 0, 41, 10, 4, 0, 42, 10, 24, 0, 43, 10, 24, 0, 44, 10,144, 1, 45, 10, 7, 0, 46, 10, - 7, 0, 47, 10, 7, 0, 48, 10, 7, 0, 49, 10,234, 0, 10, 0, 4, 0, 96, 9, 4, 0, 50, 10, 7, 0, 51, 10, 7, 0, 52, 10, - 7, 0, 53, 10, 7, 0, 54, 10, 7, 0, 10, 0, 7, 0, 12, 0, 4, 0, 69, 1, 4, 0,233, 2,233, 0, 18, 0, 4, 0,124, 0, - 4, 0, 55, 10, 4, 0, 56, 10, 7, 0, 57, 10, 4, 0, 58, 10, 7, 0, 59, 10, 7, 0, 60, 10, 4, 0, 61, 10, 7, 0, 62, 10, - 4, 0, 63, 10, 7, 0, 64, 10,234, 0, 65, 10, 7, 0, 66, 10, 7, 0, 67, 10, 7, 0, 68, 10, 7, 0, 69, 10, 4, 0, 70, 10, - 4, 0, 37, 0,145, 1, 4, 0, 47, 0,220, 2, 7, 0, 71, 10, 7, 0,158, 1, 7, 0, 37, 0,194, 0, 31, 0, 27, 0, 31, 0, -145, 1, 72, 10, 63, 0, 38, 10, 51, 0, 73, 10, 47, 0, 74, 10, 7, 0, 75, 10, 2, 0,239, 5, 2, 0, 37, 0, 4, 0,106, 0, - 4, 0, 19, 0, 7, 0, 76, 10, 4, 0, 72, 2, 4, 0, 77, 10, 7, 0, 78, 10, 7, 0, 79, 10, 7, 0, 80, 10, 7, 0,158, 1, - 4, 0, 81, 10, 7, 0, 82, 10, 0, 0, 83, 10, 0, 0, 84, 10, 0, 0, 85, 10, 0, 0,226, 1, 7, 0, 86, 10, 7, 0, 87, 10, - 7, 0, 88, 10, 7, 0, 89, 10, 4, 0, 90, 10, 7, 0, 91, 10, 7, 0, 92, 10, 7, 0, 93, 10,146, 1, 10, 0, 4, 0, 17, 0, - 4, 0,120, 0, 4, 0, 19, 0, 4, 0,183, 3, 4, 0, 94, 10, 4, 0, 95, 10, 4, 0, 96, 10, 0, 0, 92, 0, 0, 0, 20, 0, - 9, 0, 2, 0,147, 1, 1, 0, 0, 0, 19, 8, 91, 0, 7, 0,146, 1, 97, 10, 4, 0, 98, 10, 4, 0, 99, 10, 4, 0,100, 10, - 4, 0, 37, 0, 9, 0,101, 10,147, 1,102, 10,148, 1, 5, 0, 7, 0,142, 2, 7, 0,210, 2, 7, 0, 25, 2, 2, 0,118, 2, - 2, 0, 37, 0,149, 1, 5, 0, 7, 0,142, 2, 7, 0,103, 10, 7, 0,104, 10, 7, 0,105, 10, 7, 0,210, 2,150, 1, 5, 0, - 32, 0,106, 10,151, 1, 22, 0, 7, 0,209, 5, 7, 0,107, 10, 7, 0, 56, 0,152, 1, 7, 0, 4, 0,108, 10, 4, 0,109, 10, - 4, 0,110, 10, 7, 0,111, 10, 7, 0,112, 10, 7, 0,113, 10, 7, 0, 56, 0,153, 1, 8, 0,153, 1, 0, 0,153, 1, 1, 0, - 32, 0, 44, 0, 4, 0,252, 0, 2, 0, 19, 0, 2, 0, 69, 1, 7, 0,210, 2, 7, 0,159, 8,154, 1, 6, 0,154, 1, 0, 0, -154, 1, 1, 0, 32, 0, 44, 0, 2, 0,195, 2, 2, 0, 19, 0, 2, 0,114, 10,155, 1, 17, 0,149, 1,177, 3,149, 1,115, 10, -148, 1,116, 10,149, 1,143, 8,150, 1,117, 10, 4, 0, 81, 0, 7, 0,210, 2, 7, 0,239, 2, 7, 0,118, 10, 4, 0,108, 10, - 4, 0,119, 10, 7, 0,112, 10, 7, 0,113, 10, 7, 0,106, 0, 4, 0,120, 10, 2, 0, 19, 0, 2, 0,121, 10,156, 1, 9, 0, - 7, 0,122, 10, 7, 0,248, 0, 7, 0,123, 10, 7, 0,124, 10, 7, 0,125, 10, 7, 0,126, 10, 7, 0,127, 10, 7, 0,128, 10, - 7, 0,129, 10,157, 1,111, 0, 27, 0, 31, 0, 39, 0, 74, 0,158, 1,130, 10,156, 1,131, 10,172, 0, 63, 4, 4, 0, 19, 0, - 2, 0, 17, 0, 2, 0,154, 9, 2, 0,132, 10, 2, 0,133, 10, 2, 0,143, 3, 2, 0,134, 10, 2, 0,135, 10, 2, 0,136, 10, - 2, 0,137, 10, 2, 0,138, 10, 2, 0,139, 10, 2, 0,140, 10, 2, 0,141, 10, 2, 0,113, 5, 2, 0,142, 10, 2, 0,143, 10, - 2, 0,144, 10, 2, 0,145, 10, 2, 0,146, 10, 2, 0, 14, 2, 2, 0,136, 8, 2, 0,111, 8, 2, 0,147, 10, 2, 0,148, 10, - 2, 0,193, 3, 2, 0,194, 3, 2, 0,149, 10, 2, 0,150, 10, 2, 0,151, 10, 2, 0,152, 10, 7, 0,153, 10, 7, 0,154, 10, - 7, 0,155, 10, 2, 0, 62, 5, 2, 0,156, 10, 7, 0,157, 10, 7, 0,158, 10, 7, 0,159, 10, 7, 0,118, 8, 7, 0, 88, 0, - 7, 0,239, 2, 7, 0,124, 8, 7, 0,160, 10, 7, 0,161, 10, 7, 0,162, 10, 4, 0,119, 8, 4, 0,117, 8, 4, 0,163, 10, - 7, 0,120, 8, 7, 0,121, 8, 7, 0,122, 8, 7, 0,164, 10, 7, 0,165, 10, 7, 0,166, 10, 7, 0,167, 10, 7, 0,168, 10, - 7, 0, 56, 0, 7, 0,169, 10, 7, 0,170, 10, 7, 0,171, 10, 7, 0,172, 10, 7, 0,134, 3, 7, 0,106, 0, 7, 0,173, 10, - 7, 0,174, 10, 7, 0,175, 10, 7, 0,176, 10, 7, 0,177, 10, 7, 0,178, 10, 7, 0,179, 10, 4, 0,180, 10, 4, 0,181, 10, - 7, 0,182, 10, 7, 0,183, 10, 7, 0,184, 10, 7, 0,185, 10, 7, 0,186, 10, 7, 0,207, 0, 7, 0,187, 10, 7, 0,220, 3, - 7, 0,218, 3, 7, 0,219, 3, 7, 0,188, 10, 7, 0,189, 10, 7, 0,190, 10, 7, 0,191, 10, 7, 0,192, 10, 7, 0,193, 10, - 7, 0,194, 10, 7, 0,195, 10, 7, 0,196, 10, 7, 0,197, 10, 7, 0,198, 10, 7, 0,199, 10, 7, 0,200, 10, 4, 0,201, 10, - 4, 0,202, 10, 67, 0,166, 3, 12, 0,203, 10, 67, 0,204, 10, 32, 0,205, 10, 32, 0,206, 10, 36, 0, 79, 0,167, 0, 61, 1, -167, 0,207, 10,147, 0, 44, 0,147, 0, 0, 0,147, 0, 1, 0,157, 1,208, 10,155, 1,209, 10,152, 1, 58, 9,174, 0,245, 3, - 9, 0,246, 3,159, 1,210, 10,159, 1,211, 10, 12, 0,212, 10, 12, 0,213, 10,132, 0,214, 10,140, 0,215, 10,140, 0,216, 10, - 32, 0,217, 10, 32, 0,218, 10, 32, 0, 38, 0, 12, 0,121, 9, 0, 0, 20, 0, 7, 0,237, 0, 7, 0, 10, 3, 7, 0,219, 10, - 4, 0,184, 2, 4, 0, 56, 0, 4, 0, 19, 0, 4, 0,119, 8, 4, 0,220, 10, 4, 0,221, 10, 4, 0,222, 10, 2, 0,244, 0, - 2, 0,223, 10, 2, 0,224, 10, 2, 0,225, 10, 0, 0,226, 10, 2, 0,227, 10, 2, 0,228, 10, 2, 0,229, 10, 9, 0,230, 10, -136, 0, 62, 4, 12, 0,253, 2, 12, 0,231, 10,160, 1,232, 10,161, 1,233, 10, 7, 0,234, 10,134, 0, 37, 0,162, 1,253, 8, - 7, 0, 32, 4, 7, 0,235, 10, 7, 0,236, 10, 7, 0,209, 5, 7, 0,144, 3, 7, 0,134, 3, 7, 0,237, 10, 7, 0, 74, 2, - 7, 0,238, 10, 7, 0,239, 10, 7, 0,240, 10, 7, 0,241, 10, 7, 0,242, 10, 7, 0,243, 10, 7, 0, 33, 4, 7, 0,244, 10, - 7, 0,245, 10, 7, 0,246, 10, 7, 0, 34, 4, 7, 0, 30, 4, 7, 0, 31, 4, 7, 0,247, 10, 7, 0,248, 10, 4, 0,249, 10, - 4, 0, 90, 0, 4, 0,250, 10, 4, 0,251, 10, 2, 0,252, 10, 2, 0,253, 10, 2, 0,254, 10, 2, 0,255, 10, 2, 0, 0, 11, - 2, 0, 1, 11, 2, 0, 2, 11, 2, 0,179, 4,172, 0, 63, 4,135, 0, 9, 0,162, 1, 3, 11, 7, 0, 4, 11, 7, 0, 5, 11, - 7, 0,230, 1, 7, 0, 6, 11, 4, 0, 90, 0, 2, 0, 7, 11, 2, 0, 8, 11, 67, 0,229, 1,163, 1, 4, 0, 7, 0, 5, 0, - 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 9, 11,164, 1, 6, 0,164, 1, 0, 0,164, 1, 1, 0,163, 1, 35, 9, 4, 0,250, 0, - 2, 0, 10, 11, 2, 0, 19, 0,165, 1, 5, 0,165, 1, 0, 0,165, 1, 1, 0, 12, 0, 11, 11, 4, 0, 12, 11, 4, 0, 19, 0, -166, 1, 9, 0,166, 1, 0, 0,166, 1, 1, 0, 12, 0,119, 0,165, 1, 13, 11, 4, 0, 19, 0, 2, 0, 10, 11, 2, 0, 14, 11, - 7, 0, 91, 0, 0, 0, 15, 11,163, 0, 6, 0, 27, 0, 31, 0, 12, 0, 30, 5, 4, 0, 19, 0, 2, 0, 16, 11, 2, 0, 17, 11, - 9, 0, 18, 11,167, 1, 7, 0,167, 1, 0, 0,167, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, 0, 0, 19, 11, - 0, 0, 20, 11,168, 1, 6, 0, 12, 0, 21, 11, 4, 0, 22, 11, 4, 0, 23, 11, 4, 0, 19, 0, 4, 0, 37, 0,214, 0, 24, 11, -169, 1, 3, 0, 7, 0, 87, 5, 7, 0, 25, 11, 7, 0, 26, 11,170, 1, 17, 0, 27, 0, 31, 0,171, 1, 27, 11,171, 1, 28, 11, - 12, 0, 29, 11, 4, 0, 30, 11, 2, 0, 31, 11, 2, 0, 32, 11, 12, 0, 33, 11, 12, 0, 34, 11,168, 1, 35, 11, 12, 0, 36, 11, - 12, 0, 37, 11, 12, 0, 38, 11, 12, 0, 39, 11,172, 1, 40, 11, 12, 0, 41, 11,214, 0, 42, 11,171, 1, 31, 0,171, 1, 0, 0, -171, 1, 1, 0, 9, 0, 43, 11, 4, 0,211, 7, 2, 0, 44, 11, 2, 0, 37, 0,219, 0, 70, 6,219, 0, 45, 11, 0, 0, 46, 11, - 2, 0, 47, 11, 2, 0, 48, 11, 2, 0,234, 7, 2, 0,235, 7, 2, 0, 49, 11, 2, 0, 50, 11, 2, 0,183, 3, 2, 0,193, 6, - 2, 0, 51, 11, 2, 0, 52, 11, 2, 0,223, 9,173, 1, 53, 11,174, 1, 54, 11,175, 1, 55, 11, 4, 0, 56, 11, 4, 0, 57, 11, - 9, 0, 58, 11, 12, 0, 34, 11, 12, 0,254, 7, 12, 0, 59, 11, 12, 0, 60, 11, 12, 0, 61, 11,176, 1, 17, 0,176, 1, 0, 0, -176, 1, 1, 0, 0, 0, 62, 11, 26, 0, 30, 0, 2, 0, 63, 11, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0, 64, 11, 2, 0, 65, 11, - 2, 0, 66, 11, 2, 0, 67, 11, 2, 0, 68, 11, 2, 0, 19, 0, 2, 0, 69, 11, 2, 0, 31, 0, 2, 0, 37, 0,177, 1, 70, 11, -178, 1, 10, 0,178, 1, 0, 0,178, 1, 1, 0, 12, 0, 71, 11, 0, 0, 62, 11, 2, 0, 72, 11, 2, 0, 73, 11, 2, 0, 19, 0, - 2, 0, 74, 11, 4, 0, 75, 11, 9, 0, 76, 11,172, 1, 7, 0,172, 1, 0, 0,172, 1, 1, 0, 0, 0, 62, 11, 0, 0, 77, 11, - 12, 0,159, 7, 4, 0, 78, 11, 4, 0, 19, 0,227, 0, 14, 0,227, 0, 0, 0,227, 0, 1, 0, 0, 0, 62, 11, 26, 0, 30, 0, -179, 1,228, 7, 9, 0, 79, 11, 9, 0, 80, 11,177, 1, 70, 11,168, 1, 81, 11, 12, 0, 82, 11,227, 0, 83, 11, 7, 1,106, 6, - 2, 0, 19, 0, 2, 0,179, 4,180, 1, 8, 0,180, 1, 0, 0,180, 1, 1, 0, 9, 0, 2, 0, 9, 0, 84, 11, 0, 0,240, 3, - 2, 0, 17, 0, 2, 0, 19, 0, 7, 0, 85, 11,181, 1, 5, 0, 7, 0, 86, 11, 4, 0, 87, 11, 4, 0, 88, 11, 4, 0, 69, 1, - 4, 0, 19, 0,182, 1, 6, 0, 7, 0, 89, 11, 7, 0, 90, 11, 7, 0, 91, 11, 7, 0, 92, 11, 4, 0, 17, 0, 4, 0, 19, 0, -183, 1, 5, 0, 7, 0,212, 8, 7, 0,213, 8, 7, 0,210, 2, 2, 0, 28, 2, 2, 0, 29, 2,184, 1, 5, 0,183, 1, 2, 0, - 4, 0, 53, 0, 7, 0, 93, 11, 7, 0,212, 8, 7, 0,213, 8,185, 1, 4, 0, 2, 0, 94, 11, 2, 0, 95, 11, 2, 0, 96, 11, - 2, 0, 97, 11,186, 1, 2, 0, 42, 0,159, 6, 26, 0, 3, 9,187, 1, 3, 0, 24, 0, 98, 11, 4, 0, 19, 0, 4, 0, 37, 0, -188, 1, 6, 0, 7, 0,106, 0, 7, 0,212, 2, 7, 0, 99, 11, 7, 0, 37, 0, 2, 0,243, 0, 2, 0,100, 11,189, 1, 5, 0, - 7, 0,101, 11, 7, 0,120, 0, 7, 0, 36, 9, 7, 0, 37, 9, 4, 0, 19, 0,190, 1, 6, 0, 27, 0,165, 6, 0, 0,102, 11, - 0, 0,103, 11, 2, 0,104, 11, 2, 0, 19, 0, 4, 0,105, 11,191, 1, 7, 0,191, 1, 0, 0,191, 1, 1, 0, 0, 0,240, 3, -190, 1,106, 11, 2, 0,107, 11, 2, 0, 17, 0, 7, 0, 60, 0,192, 1, 7, 0, 12, 0,108, 11, 0, 0,109, 11, 9, 0,110, 11, - 7, 0, 60, 0, 7, 0, 85, 11, 4, 0, 17, 0, 4, 0, 19, 0,193, 1, 3, 0, 7, 0,111, 11, 4, 0, 19, 0, 4, 0, 37, 0, -194, 1, 15, 0,194, 1, 0, 0,194, 1, 1, 0, 84, 1,107, 9,192, 1, 61, 0, 12, 0,102, 3, 35, 0, 49, 0,193, 1,112, 11, - 4, 0, 53, 0, 7, 0, 60, 0, 2, 0, 19, 0, 2, 0, 12, 1, 4, 0,113, 11, 0, 0,102, 11, 4, 0,114, 11, 7, 0,115, 11, -195, 1, 2, 0, 0, 0,116, 11, 0, 0,117, 11,196, 1, 4, 0,196, 1, 0, 0,196, 1, 1, 0,161, 0, 44, 3, 12, 0,118, 11, -197, 1, 24, 0,197, 1, 0, 0,197, 1, 1, 0, 12, 0,119, 11,161, 0,190, 8,196, 1,120, 11, 12, 0,121, 11, 12, 0,102, 3, - 0, 0,240, 3, 7, 0, 85, 11, 7, 0,122, 11, 7, 0, 87, 0, 7, 0, 88, 0, 7, 0,170, 9, 7, 0,171, 9, 7, 0,229, 2, - 7, 0,174, 9, 7, 0,192, 8, 7, 0,175, 9, 2, 0,123, 11, 2, 0,124, 11, 2, 0, 89, 0, 2, 0, 17, 0, 4, 0, 19, 0, - 4, 0, 69, 0,198, 1, 6, 0,198, 1, 0, 0,198, 1, 1, 0, 12, 0,119, 11, 4, 0, 19, 0, 4, 0,146, 2, 0, 0,240, 3, -199, 1, 11, 0,199, 1, 0, 0,199, 1, 1, 0, 27, 0,165, 6, 0, 0,125, 11, 4, 0,105, 11, 2, 0,126, 11, 2, 0, 37, 0, - 0, 0,102, 11, 4, 0,113, 11, 2, 0, 19, 0, 2, 0,127, 11,200, 1, 8, 0,200, 1, 0, 0,200, 1, 1, 0, 12, 0,128, 11, - 0, 0,240, 3, 0, 0,129, 11, 2, 0, 19, 0, 2, 0,127, 11, 4, 0,130, 11,201, 1, 5, 0,201, 1, 0, 0,201, 1, 1, 0, - 0, 0,102, 11, 4, 0,113, 11, 7, 0,200, 2, 39, 0, 12, 0,161, 0, 94, 3,161, 0,131, 11,196, 1,120, 11, 12, 0,132, 11, -197, 1,133, 11, 12, 0,134, 11, 12, 0,135, 11, 4, 0, 19, 0, 4, 0,244, 0, 2, 0,136, 11, 2, 0,137, 11, 7, 0,138, 11, -202, 1, 2, 0, 27, 0, 31, 0, 39, 0, 74, 0,203, 1, 5, 0,203, 1, 0, 0,203, 1, 1, 0, 4, 0, 17, 0, 4, 0, 19, 0, - 0, 0, 20, 0,204, 1, 6, 0,203, 1,139, 11, 32, 0, 44, 0, 4, 0,140, 11, 7, 0,141, 11, 4, 0,142, 11, 4, 0, 96, 9, -205, 1, 3, 0,203, 1,139, 11, 4, 0,140, 11, 7, 0,143, 11,206, 1, 8, 0,203, 1,139, 11, 32, 0, 44, 0, 7, 0, 64, 1, - 7, 0,144, 11, 7, 0, 10, 3, 7, 0,252, 8, 4, 0,140, 11, 4, 0,145, 11,207, 1, 5, 0,203, 1,139, 11, 7, 0,146, 11, - 7, 0, 71, 8, 7, 0,235, 2, 7, 0, 56, 0,208, 1, 3, 0,203, 1,139, 11, 7, 0,252, 8, 7, 0,147, 11,151, 1, 4, 0, - 7, 0,148, 11, 7, 0,175, 10, 2, 0,149, 11, 2, 0, 69, 1,209, 1, 14, 0,209, 1, 0, 0,209, 1, 1, 0, 12, 0,150, 11, - 12, 0,151, 11, 12, 0,152, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0,153, 11, 7, 0,154, 11, 4, 0,142, 11, - 4, 0, 96, 9, 7, 0,249, 3, 7, 0,237, 2,158, 1, 23, 0, 4, 0,140, 11, 4, 0,155, 11, 7, 0,156, 11, 7, 0, 56, 0, - 7, 0,157, 11, 7, 0,233, 2, 7, 0,148, 11, 7, 0,158, 11, 7, 0,212, 2, 7, 0, 57, 10, 7, 0,129, 4, 7, 0,159, 11, - 7, 0,160, 11, 7, 0,161, 11, 7, 0,162, 11, 7, 0,163, 11, 7, 0,164, 11, 7, 0,165, 11, 7, 0,166, 11, 7, 0,167, 11, - 7, 0,168, 11, 7, 0,169, 11, 12, 0,170, 11,120, 0, 36, 0,119, 0,171, 11,210, 1,131, 10, 67, 0,172, 11, 67, 0,204, 10, - 67, 0,173, 11,211, 1,174, 11, 48, 0,162, 0, 48, 0,175, 11, 48, 0,176, 11, 7, 0,177, 11, 7, 0,178, 11, 7, 0,179, 11, - 7, 0,180, 11, 7, 0,181, 11, 7, 0,108, 9, 7, 0,182, 11, 7, 0,158, 1, 7, 0,183, 11, 4, 0,184, 11, 4, 0,185, 11, - 4, 0,186, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0,187, 11, 2, 0,188, 11, 2, 0,189, 11, 4, 0,190, 11, 7, 0,212, 2, - 4, 0,191, 11, 7, 0,192, 11, 4, 0,193, 11, 4, 0,194, 11, 4, 0,195, 11,136, 0,196, 11, 12, 0,197, 11,172, 0, 63, 4, -121, 0, 11, 0,119, 0,171, 11,147, 0, 30, 3, 7, 0,125, 1, 7, 0,108, 9, 7, 0,198, 11, 7, 0,199, 11, 2, 0,200, 11, - 2, 0,201, 11, 2, 0,202, 11, 2, 0, 17, 0, 4, 0, 37, 0,122, 0, 13, 0,119, 0,171, 11,138, 0, 7, 3,140, 0, 9, 3, - 7, 0, 35, 9, 7, 0,203, 11, 7, 0,204, 11, 7, 0, 66, 1, 7, 0,205, 11, 4, 0,130, 9, 4, 0, 5, 3, 2, 0, 17, 0, - 2, 0, 37, 0, 4, 0, 69, 0, 69, 78, 68, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 0,247, 9, 7, 0,248, 9, 7, 0,249, 9, 7, 0, 75, 2, 7, 0,250, 9, 7, 0,251, 9, 7, 0,252, 9, 2, 0,253, 9, + 2, 0,254, 9,131, 1, 4, 0, 2, 0,255, 9, 2, 0, 0, 10, 2, 0, 1, 10, 2, 0, 2, 10,132, 1, 2, 0, 7, 0, 5, 0, + 7, 0, 6, 0,133, 1, 2, 0, 0, 0,163, 0, 0, 0, 3, 10,134, 1, 1, 0, 0, 0, 20, 0,135, 1, 10, 0, 0, 0, 4, 10, + 0, 0, 5, 10, 0, 0, 80, 6, 0, 0, 6, 10, 2, 0,231, 9, 2, 0, 7, 10, 7, 0, 8, 10, 7, 0, 9, 10, 7, 0, 10, 10, + 7, 0,173, 9,136, 1, 2, 0, 9, 0, 11, 10, 9, 0, 12, 10,137, 1, 11, 0, 0, 0, 14, 5, 0, 0, 17, 0, 0, 0, 63, 3, + 0, 0, 65, 3, 0, 0, 13, 10, 0, 0,106, 0, 0, 0, 59, 2, 7, 0, 14, 10, 7, 0, 15, 10, 7, 0, 16, 10, 7, 0, 17, 10, +138, 1, 8, 0, 7, 0,150, 8, 7, 0,120, 0, 7, 0,236, 9, 7, 0,147, 2, 7, 0, 18, 10, 7, 0,233, 0, 7, 0, 19, 10, + 4, 0, 17, 0,139, 1, 4, 0, 2, 0, 20, 10, 2, 0, 21, 10, 2, 0, 22, 10, 2, 0, 37, 0,140, 1, 7, 0, 7, 0, 23, 10, + 7, 0,190, 2, 7, 0, 24, 10, 7, 0, 30, 8, 7, 0, 31, 8, 7, 0, 32, 8, 7, 0, 25, 10,141, 1, 6, 0, 2, 0, 26, 10, + 2, 0, 27, 10, 7, 0, 28, 10, 7, 0, 29, 10, 7, 0, 30, 10, 7, 0, 31, 10,142, 1, 1, 0, 0, 0, 20, 0,143, 1, 4, 0, + 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 19, 0, 2, 0, 32, 10,144, 1, 10, 0, 2, 0,229, 3, 2, 0, 19, 0, 7, 0,129, 4, + 7, 0, 33, 10, 7, 0, 34, 10, 7, 0, 35, 10, 7, 0, 36, 10,143, 1, 37, 10,143, 1, 38, 10,143, 1, 39, 10, 63, 0, 11, 0, + 4, 0, 19, 0, 4, 0, 63, 0, 4, 0, 40, 10, 4, 0, 41, 10, 24, 0, 42, 10, 24, 0, 43, 10,144, 1, 44, 10, 7, 0, 45, 10, + 7, 0, 46, 10, 7, 0, 47, 10, 7, 0, 48, 10,234, 0, 10, 0, 4, 0, 95, 9, 4, 0, 49, 10, 7, 0, 50, 10, 7, 0, 51, 10, + 7, 0, 52, 10, 7, 0, 53, 10, 7, 0, 10, 0, 7, 0, 12, 0, 4, 0, 69, 1, 4, 0,233, 2,233, 0, 18, 0, 4, 0,124, 0, + 4, 0, 54, 10, 4, 0, 55, 10, 7, 0, 56, 10, 4, 0, 57, 10, 7, 0, 58, 10, 7, 0, 59, 10, 4, 0, 60, 10, 7, 0, 61, 10, + 4, 0, 62, 10, 7, 0, 63, 10,234, 0, 64, 10, 7, 0, 65, 10, 7, 0, 66, 10, 7, 0, 67, 10, 7, 0, 68, 10, 4, 0, 69, 10, + 4, 0, 37, 0,145, 1, 4, 0, 47, 0,220, 2, 7, 0, 70, 10, 7, 0,158, 1, 7, 0, 37, 0,194, 0, 32, 0, 27, 0, 31, 0, +145, 1, 71, 10, 63, 0, 37, 10, 51, 0, 72, 10, 47, 0, 73, 10, 0, 0, 74, 10, 7, 0, 75, 10, 2, 0,239, 5, 2, 0, 37, 0, + 4, 0,106, 0, 4, 0, 19, 0, 7, 0, 76, 10, 4, 0, 72, 2, 4, 0, 77, 10, 7, 0, 78, 10, 7, 0, 79, 10, 7, 0, 80, 10, + 7, 0,158, 1, 4, 0, 81, 10, 7, 0, 82, 10, 0, 0, 83, 10, 0, 0, 84, 10, 0, 0, 85, 10, 0, 0,226, 1, 7, 0, 86, 10, + 7, 0, 87, 10, 7, 0, 88, 10, 7, 0, 89, 10, 4, 0, 90, 10, 7, 0, 91, 10, 7, 0, 92, 10, 7, 0, 93, 10,146, 1, 10, 0, + 4, 0, 17, 0, 4, 0,120, 0, 4, 0, 19, 0, 4, 0,183, 3, 4, 0, 94, 10, 4, 0, 95, 10, 4, 0, 96, 10, 0, 0, 92, 0, + 0, 0, 20, 0, 9, 0, 2, 0,147, 1, 1, 0, 0, 0, 18, 8, 91, 0, 7, 0,146, 1, 97, 10, 4, 0, 98, 10, 4, 0, 99, 10, + 4, 0,100, 10, 4, 0, 37, 0, 9, 0,101, 10,147, 1,102, 10,148, 1, 5, 0, 7, 0,142, 2, 7, 0,210, 2, 7, 0, 25, 2, + 2, 0,118, 2, 2, 0, 37, 0,149, 1, 5, 0, 7, 0,142, 2, 7, 0,103, 10, 7, 0,104, 10, 7, 0,105, 10, 7, 0,210, 2, +150, 1, 5, 0, 32, 0,106, 10,151, 1, 22, 0, 7, 0,209, 5, 7, 0,107, 10, 7, 0, 56, 0,152, 1, 7, 0, 4, 0,108, 10, + 4, 0,109, 10, 4, 0,110, 10, 7, 0,111, 10, 7, 0,112, 10, 7, 0,113, 10, 7, 0, 56, 0,153, 1, 8, 0,153, 1, 0, 0, +153, 1, 1, 0, 32, 0, 44, 0, 4, 0,252, 0, 2, 0, 19, 0, 2, 0, 69, 1, 7, 0,210, 2, 7, 0,158, 8,154, 1, 6, 0, +154, 1, 0, 0,154, 1, 1, 0, 32, 0, 44, 0, 2, 0,195, 2, 2, 0, 19, 0, 2, 0,114, 10,155, 1, 17, 0,149, 1,177, 3, +149, 1,115, 10,148, 1,116, 10,149, 1,142, 8,150, 1,117, 10, 4, 0, 81, 0, 7, 0,210, 2, 7, 0,239, 2, 7, 0,118, 10, + 4, 0,108, 10, 4, 0,119, 10, 7, 0,112, 10, 7, 0,113, 10, 7, 0,106, 0, 4, 0,120, 10, 2, 0, 19, 0, 2, 0,121, 10, +156, 1, 9, 0, 7, 0,122, 10, 7, 0,248, 0, 7, 0,123, 10, 7, 0,124, 10, 7, 0,125, 10, 7, 0,126, 10, 7, 0,127, 10, + 7, 0,128, 10, 7, 0,129, 10,157, 1,111, 0, 27, 0, 31, 0, 39, 0, 74, 0,158, 1,130, 10,156, 1,131, 10,172, 0, 63, 4, + 4, 0, 19, 0, 2, 0, 17, 0, 2, 0,153, 9, 2, 0,132, 10, 2, 0,133, 10, 2, 0,143, 3, 2, 0,134, 10, 2, 0,135, 10, + 2, 0,136, 10, 2, 0,137, 10, 2, 0,138, 10, 2, 0,139, 10, 2, 0,140, 10, 2, 0,141, 10, 2, 0,113, 5, 2, 0,142, 10, + 2, 0,143, 10, 2, 0,144, 10, 2, 0,145, 10, 2, 0,146, 10, 2, 0, 14, 2, 2, 0,135, 8, 2, 0,110, 8, 2, 0,147, 10, + 2, 0,148, 10, 2, 0,193, 3, 2, 0,194, 3, 2, 0,149, 10, 2, 0,150, 10, 2, 0,151, 10, 2, 0,152, 10, 7, 0,153, 10, + 7, 0,154, 10, 7, 0,155, 10, 2, 0, 62, 5, 2, 0,156, 10, 7, 0,157, 10, 7, 0,158, 10, 7, 0,159, 10, 7, 0,117, 8, + 7, 0, 88, 0, 7, 0,239, 2, 7, 0,123, 8, 7, 0,160, 10, 7, 0,161, 10, 7, 0,162, 10, 4, 0,118, 8, 4, 0,116, 8, + 4, 0,163, 10, 7, 0,119, 8, 7, 0,120, 8, 7, 0,121, 8, 7, 0,164, 10, 7, 0,165, 10, 7, 0,166, 10, 7, 0,167, 10, + 7, 0,168, 10, 7, 0, 56, 0, 7, 0,169, 10, 7, 0,170, 10, 7, 0,171, 10, 7, 0,172, 10, 7, 0,134, 3, 7, 0,106, 0, + 7, 0,173, 10, 7, 0,174, 10, 7, 0,175, 10, 7, 0,176, 10, 7, 0,177, 10, 7, 0,178, 10, 7, 0,179, 10, 4, 0,180, 10, + 4, 0,181, 10, 7, 0,182, 10, 7, 0,183, 10, 7, 0,184, 10, 7, 0,185, 10, 7, 0,186, 10, 7, 0,207, 0, 7, 0,187, 10, + 7, 0,220, 3, 7, 0,218, 3, 7, 0,219, 3, 7, 0,188, 10, 7, 0,189, 10, 7, 0,190, 10, 7, 0,191, 10, 7, 0,192, 10, + 7, 0,193, 10, 7, 0,194, 10, 7, 0,195, 10, 7, 0,196, 10, 7, 0,197, 10, 7, 0,198, 10, 7, 0,199, 10, 7, 0,200, 10, + 4, 0,201, 10, 4, 0,202, 10, 67, 0,166, 3, 12, 0,203, 10, 67, 0,204, 10, 32, 0,205, 10, 32, 0,206, 10, 36, 0, 79, 0, +167, 0, 61, 1,167, 0,207, 10,147, 0, 44, 0,147, 0, 0, 0,147, 0, 1, 0,157, 1,208, 10,155, 1,209, 10,152, 1, 57, 9, +174, 0,245, 3, 9, 0,246, 3,159, 1,210, 10,159, 1,211, 10, 12, 0,212, 10, 12, 0,213, 10,132, 0,214, 10,140, 0,215, 10, +140, 0,216, 10, 32, 0,217, 10, 32, 0,218, 10, 32, 0, 38, 0, 12, 0,120, 9, 0, 0, 20, 0, 7, 0,237, 0, 7, 0, 10, 3, + 7, 0,219, 10, 4, 0,184, 2, 4, 0, 56, 0, 4, 0, 19, 0, 4, 0,118, 8, 4, 0,220, 10, 4, 0,221, 10, 4, 0,222, 10, + 2, 0,244, 0, 2, 0,223, 10, 2, 0,224, 10, 2, 0,225, 10, 0, 0,226, 10, 2, 0,227, 10, 2, 0,228, 10, 2, 0,229, 10, + 9, 0,230, 10,136, 0, 62, 4, 12, 0,253, 2, 12, 0,231, 10,160, 1,232, 10,161, 1,233, 10, 7, 0,234, 10,134, 0, 37, 0, +162, 1,252, 8, 7, 0, 32, 4, 7, 0,235, 10, 7, 0,236, 10, 7, 0,209, 5, 7, 0,144, 3, 7, 0,134, 3, 7, 0,237, 10, + 7, 0, 74, 2, 7, 0,238, 10, 7, 0,239, 10, 7, 0,240, 10, 7, 0,241, 10, 7, 0,242, 10, 7, 0,243, 10, 7, 0, 33, 4, + 7, 0,244, 10, 7, 0,245, 10, 7, 0,246, 10, 7, 0, 34, 4, 7, 0, 30, 4, 7, 0, 31, 4, 7, 0,247, 10, 7, 0,248, 10, + 4, 0,249, 10, 4, 0, 90, 0, 4, 0,250, 10, 4, 0,251, 10, 2, 0,252, 10, 2, 0,253, 10, 2, 0,254, 10, 2, 0,255, 10, + 2, 0, 0, 11, 2, 0, 1, 11, 2, 0, 2, 11, 2, 0,179, 4,172, 0, 63, 4,135, 0, 9, 0,162, 1, 3, 11, 7, 0, 4, 11, + 7, 0, 5, 11, 7, 0,230, 1, 7, 0, 6, 11, 4, 0, 90, 0, 2, 0, 7, 11, 2, 0, 8, 11, 67, 0,229, 1,163, 1, 4, 0, + 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 9, 11,164, 1, 6, 0,164, 1, 0, 0,164, 1, 1, 0,163, 1, 34, 9, + 4, 0,250, 0, 2, 0, 10, 11, 2, 0, 19, 0,165, 1, 5, 0,165, 1, 0, 0,165, 1, 1, 0, 12, 0, 11, 11, 4, 0, 12, 11, + 4, 0, 19, 0,166, 1, 9, 0,166, 1, 0, 0,166, 1, 1, 0, 12, 0,119, 0,165, 1, 13, 11, 4, 0, 19, 0, 2, 0, 10, 11, + 2, 0, 14, 11, 7, 0, 91, 0, 0, 0, 15, 11,163, 0, 6, 0, 27, 0, 31, 0, 12, 0, 30, 5, 4, 0, 19, 0, 2, 0, 16, 11, + 2, 0, 17, 11, 9, 0, 18, 11,167, 1, 7, 0,167, 1, 0, 0,167, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, + 0, 0, 19, 11, 0, 0, 20, 11,168, 1, 6, 0, 12, 0, 21, 11, 4, 0, 22, 11, 4, 0, 23, 11, 4, 0, 19, 0, 4, 0, 37, 0, +214, 0, 24, 11,169, 1, 3, 0, 7, 0, 87, 5, 7, 0, 25, 11, 7, 0, 26, 11,170, 1, 17, 0, 27, 0, 31, 0,171, 1, 27, 11, +171, 1, 28, 11, 12, 0, 29, 11, 4, 0, 30, 11, 2, 0, 31, 11, 2, 0, 32, 11, 12, 0, 33, 11, 12, 0, 34, 11,168, 1, 35, 11, + 12, 0, 36, 11, 12, 0, 37, 11, 12, 0, 38, 11, 12, 0, 39, 11,172, 1, 40, 11, 12, 0, 41, 11,214, 0, 42, 11,171, 1, 31, 0, +171, 1, 0, 0,171, 1, 1, 0, 9, 0, 43, 11, 4, 0,211, 7, 2, 0, 44, 11, 2, 0, 37, 0,219, 0, 70, 6,219, 0, 45, 11, + 0, 0, 46, 11, 2, 0, 47, 11, 2, 0, 48, 11, 2, 0,233, 7, 2, 0,234, 7, 2, 0, 49, 11, 2, 0, 50, 11, 2, 0,183, 3, + 2, 0,193, 6, 2, 0, 51, 11, 2, 0, 52, 11, 2, 0,222, 9,173, 1, 53, 11,174, 1, 54, 11,175, 1, 55, 11, 4, 0, 56, 11, + 4, 0, 57, 11, 9, 0, 58, 11, 12, 0, 34, 11, 12, 0,253, 7, 12, 0, 59, 11, 12, 0, 60, 11, 12, 0, 61, 11,176, 1, 17, 0, +176, 1, 0, 0,176, 1, 1, 0, 0, 0, 62, 11, 26, 0, 30, 0, 2, 0, 63, 11, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0, 64, 11, + 2, 0, 65, 11, 2, 0, 66, 11, 2, 0, 67, 11, 2, 0, 68, 11, 2, 0, 19, 0, 2, 0, 69, 11, 2, 0, 31, 0, 2, 0, 37, 0, +177, 1, 70, 11,178, 1, 10, 0,178, 1, 0, 0,178, 1, 1, 0, 12, 0, 71, 11, 0, 0, 62, 11, 2, 0, 72, 11, 2, 0, 73, 11, + 2, 0, 19, 0, 2, 0, 74, 11, 4, 0, 75, 11, 9, 0, 76, 11,172, 1, 7, 0,172, 1, 0, 0,172, 1, 1, 0, 0, 0, 62, 11, + 0, 0, 77, 11, 12, 0,159, 7, 4, 0, 78, 11, 4, 0, 19, 0,227, 0, 14, 0,227, 0, 0, 0,227, 0, 1, 0, 0, 0, 62, 11, + 26, 0, 30, 0,179, 1,227, 7, 9, 0, 79, 11, 9, 0, 80, 11,177, 1, 70, 11,168, 1, 81, 11, 12, 0, 82, 11,227, 0, 83, 11, + 7, 1,106, 6, 2, 0, 19, 0, 2, 0,179, 4,180, 1, 8, 0,180, 1, 0, 0,180, 1, 1, 0, 9, 0, 2, 0, 9, 0, 84, 11, + 0, 0,240, 3, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0, 85, 11,181, 1, 5, 0, 7, 0, 86, 11, 4, 0, 87, 11, 4, 0, 88, 11, + 4, 0, 69, 1, 4, 0, 19, 0,182, 1, 6, 0, 7, 0, 89, 11, 7, 0, 90, 11, 7, 0, 91, 11, 7, 0, 92, 11, 4, 0, 17, 0, + 4, 0, 19, 0,183, 1, 5, 0, 7, 0,211, 8, 7, 0,212, 8, 7, 0,210, 2, 2, 0, 28, 2, 2, 0, 29, 2,184, 1, 5, 0, +183, 1, 2, 0, 4, 0, 53, 0, 7, 0, 93, 11, 7, 0,211, 8, 7, 0,212, 8,185, 1, 4, 0, 2, 0, 94, 11, 2, 0, 95, 11, + 2, 0, 96, 11, 2, 0, 97, 11,186, 1, 2, 0, 42, 0,159, 6, 26, 0, 2, 9,187, 1, 3, 0, 24, 0, 98, 11, 4, 0, 19, 0, + 4, 0, 37, 0,188, 1, 6, 0, 7, 0,106, 0, 7, 0,212, 2, 7, 0, 99, 11, 7, 0, 37, 0, 2, 0,243, 0, 2, 0,100, 11, +189, 1, 5, 0, 7, 0,101, 11, 7, 0,120, 0, 7, 0, 35, 9, 7, 0, 36, 9, 4, 0, 19, 0,190, 1, 6, 0, 27, 0,165, 6, + 0, 0,102, 11, 0, 0,103, 11, 2, 0,104, 11, 2, 0, 19, 0, 4, 0,105, 11,191, 1, 7, 0,191, 1, 0, 0,191, 1, 1, 0, + 0, 0,240, 3,190, 1,106, 11, 2, 0,107, 11, 2, 0, 17, 0, 7, 0, 60, 0,192, 1, 7, 0, 12, 0,108, 11, 0, 0,109, 11, + 9, 0,110, 11, 7, 0, 60, 0, 7, 0, 85, 11, 4, 0, 17, 0, 4, 0, 19, 0,193, 1, 3, 0, 7, 0,111, 11, 4, 0, 19, 0, + 4, 0, 37, 0,194, 1, 15, 0,194, 1, 0, 0,194, 1, 1, 0, 84, 1,106, 9,192, 1, 61, 0, 12, 0,102, 3, 35, 0, 49, 0, +193, 1,112, 11, 4, 0, 53, 0, 7, 0, 60, 0, 2, 0, 19, 0, 2, 0, 12, 1, 4, 0,113, 11, 0, 0,102, 11, 4, 0,114, 11, + 7, 0,115, 11,195, 1, 2, 0, 0, 0,116, 11, 0, 0,117, 11,196, 1, 4, 0,196, 1, 0, 0,196, 1, 1, 0,161, 0, 44, 3, + 12, 0,118, 11,197, 1, 24, 0,197, 1, 0, 0,197, 1, 1, 0, 12, 0,119, 11,161, 0,189, 8,196, 1,120, 11, 12, 0,121, 11, + 12, 0,102, 3, 0, 0,240, 3, 7, 0, 85, 11, 7, 0,122, 11, 7, 0, 87, 0, 7, 0, 88, 0, 7, 0,169, 9, 7, 0,170, 9, + 7, 0,229, 2, 7, 0,173, 9, 7, 0,191, 8, 7, 0,174, 9, 2, 0,123, 11, 2, 0,124, 11, 2, 0, 89, 0, 2, 0, 17, 0, + 4, 0, 19, 0, 4, 0, 69, 0,198, 1, 6, 0,198, 1, 0, 0,198, 1, 1, 0, 12, 0,119, 11, 4, 0, 19, 0, 4, 0,146, 2, + 0, 0,240, 3,199, 1, 11, 0,199, 1, 0, 0,199, 1, 1, 0, 27, 0,165, 6, 0, 0,125, 11, 4, 0,105, 11, 2, 0,126, 11, + 2, 0, 37, 0, 0, 0,102, 11, 4, 0,113, 11, 2, 0, 19, 0, 2, 0,127, 11,200, 1, 8, 0,200, 1, 0, 0,200, 1, 1, 0, + 12, 0,128, 11, 0, 0,240, 3, 0, 0,129, 11, 2, 0, 19, 0, 2, 0,127, 11, 4, 0,130, 11,201, 1, 5, 0,201, 1, 0, 0, +201, 1, 1, 0, 0, 0,102, 11, 4, 0,113, 11, 7, 0,200, 2, 39, 0, 12, 0,161, 0, 94, 3,161, 0,131, 11,196, 1,120, 11, + 12, 0,132, 11,197, 1,133, 11, 12, 0,134, 11, 12, 0,135, 11, 4, 0, 19, 0, 4, 0,244, 0, 2, 0,136, 11, 2, 0,137, 11, + 7, 0,138, 11,202, 1, 2, 0, 27, 0, 31, 0, 39, 0, 74, 0,203, 1, 5, 0,203, 1, 0, 0,203, 1, 1, 0, 4, 0, 17, 0, + 4, 0, 19, 0, 0, 0, 20, 0,204, 1, 6, 0,203, 1,139, 11, 32, 0, 44, 0, 4, 0,140, 11, 7, 0,141, 11, 4, 0,142, 11, + 4, 0, 95, 9,205, 1, 3, 0,203, 1,139, 11, 4, 0,140, 11, 7, 0,143, 11,206, 1, 8, 0,203, 1,139, 11, 32, 0, 44, 0, + 7, 0, 64, 1, 7, 0,144, 11, 7, 0, 10, 3, 7, 0,251, 8, 4, 0,140, 11, 4, 0,145, 11,207, 1, 5, 0,203, 1,139, 11, + 7, 0,146, 11, 7, 0, 70, 8, 7, 0,235, 2, 7, 0, 56, 0,208, 1, 3, 0,203, 1,139, 11, 7, 0,251, 8, 7, 0,147, 11, +151, 1, 4, 0, 7, 0,148, 11, 7, 0,175, 10, 2, 0,149, 11, 2, 0, 69, 1,209, 1, 14, 0,209, 1, 0, 0,209, 1, 1, 0, + 12, 0,150, 11, 12, 0,151, 11, 12, 0,152, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0,153, 11, 7, 0,154, 11, + 4, 0,142, 11, 4, 0, 95, 9, 7, 0,249, 3, 7, 0,237, 2,158, 1, 23, 0, 4, 0,140, 11, 4, 0,155, 11, 7, 0,156, 11, + 7, 0, 56, 0, 7, 0,157, 11, 7, 0,233, 2, 7, 0,148, 11, 7, 0,158, 11, 7, 0,212, 2, 7, 0, 56, 10, 7, 0,129, 4, + 7, 0,159, 11, 7, 0,160, 11, 7, 0,161, 11, 7, 0,162, 11, 7, 0,163, 11, 7, 0,164, 11, 7, 0,165, 11, 7, 0,166, 11, + 7, 0,167, 11, 7, 0,168, 11, 7, 0,169, 11, 12, 0,170, 11,120, 0, 36, 0,119, 0,171, 11,210, 1,131, 10, 67, 0,172, 11, + 67, 0,204, 10, 67, 0,173, 11,211, 1,174, 11, 48, 0,162, 0, 48, 0,175, 11, 48, 0,176, 11, 7, 0,177, 11, 7, 0,178, 11, + 7, 0,179, 11, 7, 0,180, 11, 7, 0,181, 11, 7, 0,107, 9, 7, 0,182, 11, 7, 0,158, 1, 7, 0,183, 11, 4, 0,184, 11, + 4, 0,185, 11, 4, 0,186, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0,187, 11, 2, 0,188, 11, 2, 0,189, 11, 4, 0,190, 11, + 7, 0,212, 2, 4, 0,191, 11, 7, 0,192, 11, 4, 0,193, 11, 4, 0,194, 11, 4, 0,195, 11,136, 0,196, 11, 12, 0,197, 11, +172, 0, 63, 4,121, 0, 11, 0,119, 0,171, 11,147, 0, 30, 3, 7, 0,125, 1, 7, 0,107, 9, 7, 0,198, 11, 7, 0,199, 11, + 2, 0,200, 11, 2, 0,201, 11, 2, 0,202, 11, 2, 0, 17, 0, 4, 0, 37, 0,122, 0, 13, 0,119, 0,171, 11,138, 0, 7, 3, +140, 0, 9, 3, 7, 0, 34, 9, 7, 0,203, 11, 7, 0,204, 11, 7, 0, 66, 1, 7, 0,205, 11, 4, 0,129, 9, 4, 0, 5, 3, + 2, 0, 17, 0, 2, 0, 37, 0, 4, 0, 69, 0, 69, 78, 68, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; From d5d343a86b60ad3ec92ca5037b06910ffc2b4cd4 Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Tue, 20 Jul 2010 03:14:21 +0000 Subject: [PATCH 564/674] noise python module back from 2.4x, personal request from ant author Jimmy Haze Changes: /* 2.5 update * Noise.setRandomSeed --> seed_set * Noise.randuvec --> random_unit_vector * Noise.vNoise --> noise_vector * Noise.vTurbulence --> turbulence_vector * Noise.multiFractal --> multi_fractal * Noise.cellNoise --> cell * Noise.cellNoiseV --> cell_vector * Noise.vlNoise --> vl_vector * Noise.heteroTerrain --> hetero_terrain * Noise.hybridMFractal --> hybrid_multi_fractal * Noise.fBm --> fractal * Noise.ridgedMFractal --> ridged_multi_fractal * * Const's * * Noise.NoiseTypes --> types * Noise.DistanceMetrics --> distance_metrics */ --- source/blender/python/generic/mathutils.h | 1 + source/blender/python/generic/noise.c | 760 ++++++++++++++++++++++ source/blender/python/intern/bpy.c | 1 + 3 files changed, 762 insertions(+) create mode 100644 source/blender/python/generic/noise.c diff --git a/source/blender/python/generic/mathutils.h b/source/blender/python/generic/mathutils.h index b03f15a20b1..a86d9286c28 100644 --- a/source/blender/python/generic/mathutils.h +++ b/source/blender/python/generic/mathutils.h @@ -61,6 +61,7 @@ PyObject *BaseMathObject_getWrapped( BaseMathObject *self, void * ); void BaseMathObject_dealloc(BaseMathObject * self); PyObject *Mathutils_Init(void); +PyObject *Noise_Init(void); /* lazy, saves having own header */ PyObject *quat_rotation(PyObject *arg1, PyObject *arg2); diff --git a/source/blender/python/generic/noise.c b/source/blender/python/generic/noise.c new file mode 100644 index 00000000000..168ee65795d --- /dev/null +++ b/source/blender/python/generic/noise.c @@ -0,0 +1,760 @@ +/** + * $Id$ + * + * Blender.Noise BPython module implementation. + * This submodule has functions to generate noise of various types. + * + * ***** 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * This is a new part of Blender. + * + * Contributor(s): eeshlo + * + * ***** END GPL LICENSE BLOCK ***** +*/ + +/************************/ +/* Blender Noise Module */ +/************************/ + +#include <Python.h> +#include "structseq.h" + +#include "BLI_blenlib.h" +#include "DNA_texture_types.h" +/*-----------------------------------------*/ +/* 'mersenne twister' random number generator */ + +/* + A C-program for MT19937, with initialization improved 2002/2/10. + Coded by Takuji Nishimura and Makoto Matsumoto. + This is a faster version by taking Shawn Cokus's optimization, + Matthe Bellew's simplification, Isaku Wada's real version. + + Before using, initialize the state by using init_genrand(seed) + or init_by_array(init_key, key_length). + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Any feedback is very welcome. + http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html + email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space) +*/ + +/* 2.5 update + * Noise.setRandomSeed --> seed_set + * Noise.randuvec --> random_unit_vector + * Noise.vNoise --> noise_vector + * Noise.vTurbulence --> turbulence_vector + * Noise.multiFractal --> multi_fractal + * Noise.cellNoise --> cell + * Noise.cellNoiseV --> cell_vector + * Noise.vlNoise --> vl_vector + * Noise.heteroTerrain --> hetero_terrain + * Noise.hybridMFractal --> hybrid_multi_fractal + * Noise.fBm --> fractal + * Noise.ridgedMFractal --> ridged_multi_fractal + * + * Const's * + * Noise.NoiseTypes --> types + * Noise.DistanceMetrics --> distance_metrics + */ + +/* Period parameters */ +#define N 624 +#define M 397 +#define MATRIX_A 0x9908b0dfUL /* constant vector a */ +#define UMASK 0x80000000UL /* most significant w-r bits */ +#define LMASK 0x7fffffffUL /* least significant r bits */ +#define MIXBITS(u,v) (((u) & UMASK) | ((v) & LMASK)) +#define TWIST(u,v) ((MIXBITS(u,v) >> 1) ^ ((v)&1UL ? MATRIX_A : 0UL)) + +static unsigned long state[N]; /* the array for the state vector */ +static int left = 1; +static int initf = 0; +static unsigned long *next; + +PyObject *Noise_Init(void); + +/* initializes state[N] with a seed */ +static void init_genrand(unsigned long s) +{ + int j; + state[0] = s & 0xffffffffUL; + for(j = 1; j < N; j++) { + state[j] = + (1812433253UL * + (state[j - 1] ^ (state[j - 1] >> 30)) + j); + /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */ + /* In the previous versions, MSBs of the seed affect */ + /* only MSBs of the array state[]. */ + /* 2002/01/09 modified by Makoto Matsumoto */ + state[j] &= 0xffffffffUL; /* for >32 bit machines */ + } + left = 1; + initf = 1; +} + +static void next_state(void) +{ + unsigned long *p = state; + int j; + + /* if init_genrand() has not been called, */ + /* a default initial seed is used */ + if(initf == 0) + init_genrand(5489UL); + + left = N; + next = state; + + for(j = N - M + 1; --j; p++) + *p = p[M] ^ TWIST(p[0], p[1]); + + for(j = M; --j; p++) + *p = p[M - N] ^ TWIST(p[0], p[1]); + + *p = p[M - N] ^ TWIST(p[0], state[0]); +} + +/*------------------------------------------------------------*/ + +static void setRndSeed(int seed) +{ + if(seed == 0) + init_genrand(time(NULL)); + else + init_genrand(seed); +} + +/* float number in range [0, 1) using the mersenne twister rng */ +static float frand() +{ + unsigned long y; + + if(--left == 0) + next_state(); + y = *next++; + + /* Tempering */ + y ^= (y >> 11); + y ^= (y << 7) & 0x9d2c5680UL; + y ^= (y << 15) & 0xefc60000UL; + y ^= (y >> 18); + + return (float) y / 4294967296.f; +} + +/*------------------------------------------------------------*/ + +/* returns random unit vector */ +static void randuvec(float v[3]) +{ + float r; + v[2] = 2.f * frand() - 1.f; + if((r = 1.f - v[2] * v[2]) > 0.f) { + float a = (float)(6.283185307f * frand()); + r = (float)sqrt(r); + v[0] = (float)(r * cos(a)); + v[1] = (float)(r * sin(a)); + } else + v[2] = 1.f; +} + +static PyObject *Noise_random(PyObject * self) +{ + return PyFloat_FromDouble(frand()); +} + +static PyObject *Noise_random_unit_vector(PyObject * self) +{ + float v[3] = {0.0f, 0.0f, 0.0f}; + randuvec(v); + return Py_BuildValue("[fff]", v[0], v[1], v[2]); +} + +/*---------------------------------------------------------------------*/ + +/* Random seed init. Only used for MT random() & randuvec() */ + +static PyObject *Noise_seed_set(PyObject * self, PyObject * args) +{ + int s; + if(!PyArg_ParseTuple(args, "i:seed_set", &s)) + return NULL; + setRndSeed(s); + Py_RETURN_NONE; +} + +/*-------------------------------------------------------------------------*/ + +/* General noise */ + +static PyObject *Noise_noise(PyObject * self, PyObject * args) +{ + float x, y, z; + int nb = 1; + if(!PyArg_ParseTuple(args, "(fff)|i:noise", &x, &y, &z, &nb)) + return NULL; + + return PyFloat_FromDouble((2.0 * BLI_gNoise(1.0, x, y, z, 0, nb) - 1.0)); +} + +/*-------------------------------------------------------------------------*/ + +/* General Vector noise */ + +static void noise_vector(float x, float y, float z, int nb, float v[3]) +{ + /* Simply evaluate noise at 3 different positions */ + v[0] = (float)(2.0 * BLI_gNoise(1.f, x + 9.321f, y - 1.531f, z - 7.951f, 0, + nb) - 1.0); + v[1] = (float)(2.0 * BLI_gNoise(1.f, x, y, z, 0, nb) - 1.0); + v[2] = (float)(2.0 * BLI_gNoise(1.f, x + 6.327f, y + 0.1671f, z - 2.672f, 0, + nb) - 1.0); +} + +static PyObject *Noise_vector(PyObject * self, PyObject * args) +{ + float x, y, z, v[3]; + int nb = 1; + if(!PyArg_ParseTuple(args, "(fff)|i:vector", &x, &y, &z, &nb)) + return NULL; + noise_vector(x, y, z, nb, v); + return Py_BuildValue("[fff]", v[0], v[1], v[2]); +} + +/*---------------------------------------------------------------------------*/ + +/* General turbulence */ + +static float turb(float x, float y, float z, int oct, int hard, int nb, + float ampscale, float freqscale) +{ + float amp, out, t; + int i; + amp = 1.f; + out = (float)(2.0 * BLI_gNoise(1.f, x, y, z, 0, nb) - 1.0); + if(hard) + out = (float)fabs(out); + for(i = 1; i < oct; i++) { + amp *= ampscale; + x *= freqscale; + y *= freqscale; + z *= freqscale; + t = (float)(amp * (2.0 * BLI_gNoise(1.f, x, y, z, 0, nb) - 1.0)); + if(hard) + t = (float)fabs(t); + out += t; + } + return out; +} + +static PyObject *Noise_turbulence(PyObject * self, PyObject * args) +{ + float x, y, z; + int oct, hd, nb = 1; + float as = 0.5, fs = 2.0; + if(!PyArg_ParseTuple(args, "(fff)ii|iff:turbulence", &x, &y, &z, &oct, &hd, &nb, &as, &fs)) + return NULL; + + return PyFloat_FromDouble(turb(x, y, z, oct, hd, nb, as, fs)); +} + +/*--------------------------------------------------------------------------*/ + +/* Turbulence Vector */ + +static void vTurb(float x, float y, float z, int oct, int hard, int nb, + float ampscale, float freqscale, float v[3]) +{ + float amp, t[3]; + int i; + amp = 1.f; + noise_vector(x, y, z, nb, v); + if(hard) { + v[0] = (float)fabs(v[0]); + v[1] = (float)fabs(v[1]); + v[2] = (float)fabs(v[2]); + } + for(i = 1; i < oct; i++) { + amp *= ampscale; + x *= freqscale; + y *= freqscale; + z *= freqscale; + noise_vector(x, y, z, nb, t); + if(hard) { + t[0] = (float)fabs(t[0]); + t[1] = (float)fabs(t[1]); + t[2] = (float)fabs(t[2]); + } + v[0] += amp * t[0]; + v[1] += amp * t[1]; + v[2] += amp * t[2]; + } +} + +static PyObject *Noise_turbulence_vector(PyObject * self, PyObject * args) +{ + float x, y, z, v[3]; + int oct, hd, nb = 1; + float as = 0.5, fs = 2.0; + if(!PyArg_ParseTuple(args, "(fff)ii|iff:turbulence_vector", &x, &y, &z, &oct, &hd, &nb, &as, &fs)) + return NULL; + vTurb(x, y, z, oct, hd, nb, as, fs, v); + return Py_BuildValue("[fff]", v[0], v[1], v[2]); +} + +/*---------------------------------------------------------------------*/ + +/* F. Kenton Musgrave's fractal functions */ + +static PyObject *Noise_fractal(PyObject * self, PyObject * args) +{ + float x, y, z, H, lac, oct; + int nb = 1; + if(!PyArg_ParseTuple(args, "(fff)fff|i:fractal", &x, &y, &z, &H, &lac, &oct, &nb)) + return NULL; + return PyFloat_FromDouble(mg_fBm(x, y, z, H, lac, oct, nb)); +} + +/*------------------------------------------------------------------------*/ + +static PyObject *Noise_multi_fractal(PyObject * self, PyObject * args) +{ + float x, y, z, H, lac, oct; + int nb = 1; + if(!PyArg_ParseTuple(args, "(fff)fff|i:multi_fractal", &x, &y, &z, &H, &lac, &oct, &nb)) + return NULL; + + return PyFloat_FromDouble(mg_MultiFractal(x, y, z, H, lac, oct, nb)); +} + +/*------------------------------------------------------------------------*/ + +static PyObject *Noise_vl_vector(PyObject * self, PyObject * args) +{ + float x, y, z, d; + int nt1 = 1, nt2 = 1; + if(!PyArg_ParseTuple(args, "(fff)f|ii:vl_vector", &x, &y, &z, &d, &nt1, &nt2)) + return NULL; + return PyFloat_FromDouble(mg_VLNoise(x, y, z, d, nt1, nt2)); +} + +/*-------------------------------------------------------------------------*/ + +static PyObject *Noise_hetero_terrain(PyObject * self, PyObject * args) +{ + float x, y, z, H, lac, oct, ofs; + int nb = 1; + if(!PyArg_ParseTuple(args, "(fff)ffff|i:hetero_terrain", &x, &y, &z, &H, &lac, &oct, &ofs, &nb)) + return NULL; + + return PyFloat_FromDouble(mg_HeteroTerrain(x, y, z, H, lac, oct, ofs, nb)); +} + +/*-------------------------------------------------------------------------*/ + +static PyObject *Noise_hybrid_multi_fractal(PyObject * self, PyObject * args) +{ + float x, y, z, H, lac, oct, ofs, gn; + int nb = 1; + if(!PyArg_ParseTuple(args, "(fff)fffff|i:hybrid_multi_fractal", &x, &y, &z, &H, &lac, &oct, &ofs, &gn, &nb)) + return NULL; + + return PyFloat_FromDouble(mg_HybridMultiFractal(x, y, z, H, lac, oct, ofs, gn, nb)); +} + +/*------------------------------------------------------------------------*/ + +static PyObject *Noise_ridged_multi_fractal(PyObject * self, PyObject * args) +{ + float x, y, z, H, lac, oct, ofs, gn; + int nb = 1; + if(!PyArg_ParseTuple(args, "(fff)fffff|i:ridged_multi_fractal", &x, &y, &z, &H, &lac, &oct, &ofs, &gn, &nb)) + return NULL; + return PyFloat_FromDouble(mg_RidgedMultiFractal(x, y, z, H, lac, oct, ofs, gn, nb)); +} + +/*-------------------------------------------------------------------------*/ + +static PyObject *Noise_voronoi(PyObject * self, PyObject * args) +{ + float x, y, z, da[4], pa[12]; + int dtype = 0; + float me = 2.5; /* default minkovsky exponent */ + if(!PyArg_ParseTuple(args, "(fff)|if:voronoi", &x, &y, &z, &dtype, &me)) + return NULL; + voronoi(x, y, z, da, pa, me, dtype); + return Py_BuildValue("[[ffff][[fff][fff][fff][fff]]]", + da[0], da[1], da[2], da[3], + pa[0], pa[1], pa[2], + pa[3], pa[4], pa[5], + pa[6], pa[7], pa[8], pa[9], pa[10], pa[11]); +} + +/*-------------------------------------------------------------------------*/ + +static PyObject *Noise_cell(PyObject * self, PyObject * args) +{ + float x, y, z; + if(!PyArg_ParseTuple(args, "(fff):cell", &x, &y, &z)) + return NULL; + + return PyFloat_FromDouble(cellNoise(x, y, z)); +} + +/*--------------------------------------------------------------------------*/ + +static PyObject *Noise_cell_vector(PyObject * self, PyObject * args) +{ + float x, y, z, ca[3]; + if(!PyArg_ParseTuple(args, "(fff):cell_vector", &x, &y, &z)) + return NULL; + cellNoiseV(x, y, z, ca); + return Py_BuildValue("[fff]", ca[0], ca[1], ca[2]); +} + +/*--------------------------------------------------------------------------*/ +/* For all other Blender modules, this stuff seems to be put in a header file. + This doesn't seem really appropriate to me, so I just put it here, feel free to change it. + In the original module I actually kept the docs stings with the functions themselves, + but I grouped them here so that it can easily be moved to a header if anyone thinks that is necessary. */ + +static char random__doc__[] = "() No arguments.\n\n\ +Returns a random floating point number in the range [0, 1)"; + +static char random_unit_vector__doc__[] = + "() No arguments.\n\nReturns a random unit vector (3-float list)."; + +static char seed_set__doc__[] = "(seed value)\n\n\ +Initializes random number generator.\n\ +if seed is zero, the current time will be used instead."; + +static char noise__doc__[] = "((x,y,z) tuple, [noisetype])\n\n\ +Returns general noise of the optional specified type.\n\ +Optional argument noisetype determines the type of noise, STDPERLIN by default, see NoiseTypes."; + +static char noise_vector__doc__[] = "((x,y,z) tuple, [noisetype])\n\n\ +Returns noise vector (3-float list) of the optional specified type.\ +Optional argument noisetype determines the type of noise, STDPERLIN by default, see NoiseTypes."; + +static char turbulence__doc__[] = + "((x,y,z) tuple, octaves, hard, [noisebasis], [ampscale], [freqscale])\n\n\ +Returns general turbulence value using the optional specified noisebasis function.\n\ +octaves (integer) is the number of noise values added.\n\ +hard (bool), when false (0) returns 'soft' noise, when true (1) returns 'hard' noise (returned value always positive).\n\ +Optional arguments:\n\ +noisebasis determines the type of noise used for the turbulence, STDPERLIN by default, see NoiseTypes.\n\ +ampscale sets the amplitude scale value of the noise frequencies added, 0.5 by default.\n\ +freqscale sets the frequency scale factor, 2.0 by default."; + +static char turbulence_vector__doc__[] = + "((x,y,z) tuple, octaves, hard, [noisebasis], [ampscale], [freqscale])\n\n\ +Returns general turbulence vector (3-float list) using the optional specified noisebasis function.\n\ +octaves (integer) is the number of noise values added.\n\ +hard (bool), when false (0) returns 'soft' noise, when true (1) returns 'hard' noise (returned vector always positive).\n\ +Optional arguments:\n\ +noisebasis determines the type of noise used for the turbulence, STDPERLIN by default, see NoiseTypes.\n\ +ampscale sets the amplitude scale value of the noise frequencies added, 0.5 by default.\n\ +freqscale sets the frequency scale factor, 2.0 by default."; + +static char fractal__doc__[] = + "((x,y,z) tuple, H, lacunarity, octaves, [noisebasis])\n\n\ +Returns Fractal Brownian Motion noise value(fBm).\n\ +H is the fractal increment parameter.\n\ +lacunarity is the gap between successive frequencies.\n\ +octaves is the number of frequencies in the fBm.\n\ +Optional argument noisebasis determines the type of noise used for the turbulence, STDPERLIN by default, see NoiseTypes."; + +static char multi_fractal__doc__[] = + "((x,y,z) tuple, H, lacunarity, octaves, [noisebasis])\n\n\ +Returns Multifractal noise value.\n\ +H determines the highest fractal dimension.\n\ +lacunarity is gap between successive frequencies.\n\ +octaves is the number of frequencies in the fBm.\n\ +Optional argument noisebasis determines the type of noise used for the turbulence, STDPERLIN by default, see NoiseTypes."; + +static char vl_vector__doc__[] = + "((x,y,z) tuple, distortion, [noisetype1], [noisetype2])\n\n\ +Returns Variable Lacunarity Noise value, a distorted variety of noise.\n\ +distortion sets the amount of distortion.\n\ +Optional arguments noisetype1 and noisetype2 set the noisetype to distort and the noisetype used for the distortion respectively.\n\ +See NoiseTypes, both are STDPERLIN by default."; + +static char hetero_terrain__doc__[] = + "((x,y,z) tuple, H, lacunarity, octaves, offset, [noisebasis])\n\n\ +returns Heterogeneous Terrain value\n\ +H determines the fractal dimension of the roughest areas.\n\ +lacunarity is the gap between successive frequencies.\n\ +octaves is the number of frequencies in the fBm.\n\ +offset raises the terrain from 'sea level'.\n\ +Optional argument noisebasis determines the type of noise used for the turbulence, STDPERLIN by default, see NoiseTypes."; + +static char hybrid_multi_fractal__doc__[] = + "((x,y,z) tuple, H, lacunarity, octaves, offset, gain, [noisebasis])\n\n\ +returns Hybrid Multifractal value.\n\ +H determines the fractal dimension of the roughest areas.\n\ +lacunarity is the gap between successive frequencies.\n\ +octaves is the number of frequencies in the fBm.\n\ +offset raises the terrain from 'sea level'.\n\ +gain scales the values.\n\ +Optional argument noisebasis determines the type of noise used for the turbulence, STDPERLIN by default, see NoiseTypes."; + +static char ridged_multi_fractal__doc__[] = + "((x,y,z) tuple, H, lacunarity, octaves, offset, gain [noisebasis])\n\n\ +returns Ridged Multifractal value.\n\ +H determines the fractal dimension of the roughest areas.\n\ +lacunarity is the gap between successive frequencies.\n\ +octaves is the number of frequencies in the fBm.\n\ +offset raises the terrain from 'sea level'.\n\ +gain scales the values.\n\ +Optional argument noisebasis determines the type of noise used for the turbulence, STDPERLIN by default, see NoiseTypes."; + +static char voronoi__doc__[] = + "((x,y,z) tuple, distance_metric, [exponent])\n\n\ +returns a list, containing a list of distances in order of closest feature,\n\ +and a list containing the positions of the four closest features\n\ +Optional arguments:\n\ +distance_metric: see DistanceMetrics, default is DISTANCE\n\ +exponent is only used with MINKOVSKY, default is 2.5."; + +static char cell__doc__[] = "((x,y,z) tuple)\n\n\ +returns cellnoise float value."; + +static char cell_vector__doc__[] = "((x,y,z) tuple)\n\n\ +returns cellnoise vector/point/color (3-float list)."; + +static char Noise__doc__[] = "Blender Noise and Turbulence Module\n\n\ +This module can be used to generate noise of various types.\n\ +This can be used for terrain generation, to create textures,\n\ +make animations more 'animated', object deformation, etc.\n\ +As an example, this code segment when scriptlinked to a framechanged event,\n\ +will make the camera sway randomly about, by changing parameters this can\n\ +look like anything from an earthquake to a very nervous or maybe even drunk cameraman...\n\ +(the camera needs an ipo with at least one Loc & Rot key for this to work!):\n\ +\n\ +\tfrom Blender import Get, Scene, Noise\n\ +\n\ +\t####################################################\n\ +\t# This controls jitter speed\n\ +\tsl = 0.025\n\ +\t# This controls the amount of position jitter\n\ +\tsp = 0.1\n\ +\t# This controls the amount of rotation jitter\n\ +\tsr = 0.25\n\ +\t####################################################\n\ +\n\ +\ttime = Get('curtime')\n\ +\tob = Scene.GetCurrent().getCurrentCamera()\n\ +\tps = (sl*time, sl*time, sl*time)\n\ +\t# To add jitter only when the camera moves, use this next line instead\n\ +\t#ps = (sl*ob.LocX, sl*ob.LocY, sl*ob.LocZ)\n\ +\trv = Noise.turbulence_vector(ps, 3, 0, Noise.NoiseTypes.NEWPERLIN)\n\ +\tob.dloc = (sp*rv[0], sp*rv[1], sp*rv[2])\n\ +\tob.drot = (sr*rv[0], sr*rv[1], sr*rv[2])\n\ +\n"; + +/* Just in case, declarations for a header file */ +/* +static PyObject *Noise_random(PyObject *self); +static PyObject *Noise_random_unit_vector(PyObject *self); +static PyObject *Noise_seed_set(PyObject *self, PyObject *args); +static PyObject *Noise_noise(PyObject *self, PyObject *args); +static PyObject *Noise_vector(PyObject *self, PyObject *args); +static PyObject *Noise_turbulence(PyObject *self, PyObject *args); +static PyObject *Noise_turbulence_vector(PyObject *self, PyObject *args); +static PyObject *Noise_fractal(PyObject *self, PyObject *args); +static PyObject *Noise_multi_fractal(PyObject *self, PyObject *args); +static PyObject *Noise_vl_vector(PyObject *self, PyObject *args); +static PyObject *Noise_hetero_terrain(PyObject *self, PyObject *args); +static PyObject *Noise_hybrid_multi_fractal(PyObject *self, PyObject *args); +static PyObject *Noise_ridged_multi_fractal(PyObject *self, PyObject *args); +static PyObject *Noise_voronoi(PyObject *self, PyObject *args); +static PyObject *Noise_cell(PyObject *self, PyObject *args); +static PyObject *Noise_cell_vector(PyObject *self, PyObject *args); +*/ + +static PyMethodDef NoiseMethods[] = { + {"seed_set", (PyCFunction) Noise_seed_set, METH_VARARGS, seed_set__doc__}, + {"random", (PyCFunction) Noise_random, METH_NOARGS, random__doc__}, + {"random_unit_vector", (PyCFunction) Noise_random_unit_vector, METH_NOARGS, random_unit_vector__doc__}, + {"noise", (PyCFunction) Noise_noise, METH_VARARGS, noise__doc__}, + {"vector", (PyCFunction) Noise_vector, METH_VARARGS, noise_vector__doc__}, + {"turbulence", (PyCFunction) Noise_turbulence, METH_VARARGS, turbulence__doc__}, + {"turbulence_vector", (PyCFunction) Noise_turbulence_vector, METH_VARARGS, turbulence_vector__doc__}, + {"fractal", (PyCFunction) Noise_fractal, METH_VARARGS, fractal__doc__}, + {"multi_fractal", (PyCFunction) Noise_multi_fractal, METH_VARARGS, multi_fractal__doc__}, + {"vl_vector", (PyCFunction) Noise_vl_vector, METH_VARARGS, vl_vector__doc__}, + {"hetero_terrain", (PyCFunction) Noise_hetero_terrain, METH_VARARGS, hetero_terrain__doc__}, + {"hybrid_multi_fractal", (PyCFunction) Noise_hybrid_multi_fractal, METH_VARARGS, hybrid_multi_fractal__doc__}, + {"ridged_multi_fractal", (PyCFunction) Noise_ridged_multi_fractal, METH_VARARGS, ridged_multi_fractal__doc__}, + {"voronoi", (PyCFunction) Noise_voronoi, METH_VARARGS, voronoi__doc__}, + {"cell", (PyCFunction) Noise_cell, METH_VARARGS, cell__doc__}, + {"cell_vector", (PyCFunction) Noise_cell_vector, METH_VARARGS, cell_vector__doc__}, + {NULL, NULL, 0, NULL} +}; + +/*----------------------------------------------------------------------*/ + +static struct PyModuleDef noise_module_def = { + PyModuleDef_HEAD_INIT, + "noise", /* m_name */ + Noise__doc__, /* m_doc */ + 0, /* m_size */ + NoiseMethods, /* m_methods */ + 0, /* m_reload */ + 0, /* m_traverse */ + 0, /* m_clear */ + 0, /* m_free */ +}; + +PyObject *Noise_Init(void) +{ + PyObject *submodule = PyModule_Create(&noise_module_def); + PyDict_SetItemString(PySys_GetObject("modules"), noise_module_def.m_name, submodule); + + /* use current time as seed for random number generator by default */ + setRndSeed(0); + + /* Constant noisetype dictionary */ + if(submodule) { + static PyStructSequence_Field noise_types_fields[] = { + {"BLENDER", ""}, + {"STDPERLIN", ""}, + {"NEWPERLIN", ""}, + {"VORONOI_F1", ""}, + {"VORONOI_F2", ""}, + {"VORONOI_F3", ""}, + {"VORONOI_F4", ""}, + {"VORONOI_F2F1", ""}, + {"VORONOI_CRACKLE", ""}, + {"CELLNOISE", ""}, + {0} + }; + + static PyStructSequence_Desc noise_types_info_desc = { + "noise.types", /* name */ + "Noise type", /* doc */ + noise_types_fields, /* fields */ + (sizeof(noise_types_fields)/sizeof(PyStructSequence_Field)) - 1 + }; + + static PyTypeObject NoiseType; + + PyObject *noise_types; + + int pos = 0; + + PyStructSequence_InitType(&NoiseType, &noise_types_info_desc); + + noise_types = PyStructSequence_New(&NoiseType); + if (noise_types == NULL) { + return NULL; + } + + PyStructSequence_SET_ITEM(noise_types, pos++, PyLong_FromLong(TEX_BLENDER)); + PyStructSequence_SET_ITEM(noise_types, pos++, PyLong_FromLong(TEX_STDPERLIN)); + PyStructSequence_SET_ITEM(noise_types, pos++, PyLong_FromLong(TEX_NEWPERLIN)); + PyStructSequence_SET_ITEM(noise_types, pos++, PyLong_FromLong(TEX_VORONOI_F1)); + PyStructSequence_SET_ITEM(noise_types, pos++, PyLong_FromLong(TEX_VORONOI_F2)); + PyStructSequence_SET_ITEM(noise_types, pos++, PyLong_FromLong(TEX_VORONOI_F3)); + PyStructSequence_SET_ITEM(noise_types, pos++, PyLong_FromLong(TEX_VORONOI_F4)); + PyStructSequence_SET_ITEM(noise_types, pos++, PyLong_FromLong(TEX_VORONOI_F2F1)); + PyStructSequence_SET_ITEM(noise_types, pos++, PyLong_FromLong(TEX_VORONOI_CRACKLE)); + PyStructSequence_SET_ITEM(noise_types, pos++, PyLong_FromLong(TEX_CELLNOISE)); + + PyModule_AddObject(submodule, "types", noise_types); + } + + if(submodule) { + static PyStructSequence_Field distance_metrics_fields[] = { + {"DISTANCE", ""}, + {"DISTANCE_SQUARED", ""}, + {"MANHATTAN", ""}, + {"CHEBYCHEV", ""}, + {"MINKOVSKY_HALF", ""}, + {"MINKOVSKY_FOUR", ""}, + {"MINKOVSKY", ""}, + {0} + }; + + static PyStructSequence_Desc noise_types_info_desc = { + "noise.distance_metrics", /* name */ + "Distance Metrics for noise module.", /* doc */ + distance_metrics_fields, /* fields */ + (sizeof(distance_metrics_fields)/sizeof(PyStructSequence_Field)) - 1 + }; + + static PyTypeObject DistanceMetrics; + + PyObject *distance_metrics; + + int pos = 0; + + PyStructSequence_InitType(&DistanceMetrics, &noise_types_info_desc); + + distance_metrics = PyStructSequence_New(&DistanceMetrics); + if (distance_metrics == NULL) { + return NULL; + } + + PyStructSequence_SET_ITEM(distance_metrics, pos++, PyLong_FromLong(TEX_DISTANCE)); + PyStructSequence_SET_ITEM(distance_metrics, pos++, PyLong_FromLong(TEX_DISTANCE_SQUARED)); + PyStructSequence_SET_ITEM(distance_metrics, pos++, PyLong_FromLong(TEX_MANHATTAN)); + PyStructSequence_SET_ITEM(distance_metrics, pos++, PyLong_FromLong(TEX_CHEBYCHEV)); + PyStructSequence_SET_ITEM(distance_metrics, pos++, PyLong_FromLong(TEX_MINKOVSKY_HALF)); + PyStructSequence_SET_ITEM(distance_metrics, pos++, PyLong_FromLong(TEX_MINKOVSKY_FOUR)); + PyStructSequence_SET_ITEM(distance_metrics, pos++, PyLong_FromLong(TEX_MINKOVSKY)); + + PyModule_AddObject(submodule, "distance_metrics", distance_metrics); + } + + return submodule; +} diff --git a/source/blender/python/intern/bpy.c b/source/blender/python/intern/bpy.c index 15be6174f29..7933c2a1bc7 100644 --- a/source/blender/python/intern/bpy.c +++ b/source/blender/python/intern/bpy.c @@ -149,6 +149,7 @@ void BPy_init_modules( void ) /* stand alone utility modules not related to blender directly */ Geometry_Init(); Mathutils_Init(); + Noise_Init(); BGL_Init(); BLF_Init(); IDProp_Init_Types(); From cbc0e6ad4a85ec703df4772e5ed41e39243f6f05 Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Tue, 20 Jul 2010 05:36:19 +0000 Subject: [PATCH 565/674] * new icons for blob and twist brushes --- release/datafiles/brushicons/blob.png | Bin 0 -> 10703 bytes release/datafiles/brushicons/twist.png | Bin 16906 -> 10889 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 release/datafiles/brushicons/blob.png diff --git a/release/datafiles/brushicons/blob.png b/release/datafiles/brushicons/blob.png new file mode 100644 index 0000000000000000000000000000000000000000..1d63d1e873c5ebb0c1b3ea42404b2538f736ea08 GIT binary patch literal 10703 zcmV;=DKOTFP)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NQ`AS|=J1DgN<AOJ~3K~#9!?R|NeWmi@2TKk-PZ{4nW>bZuVs=B&*%0NFdbSHrX z63Kue1_<~N@Bu*qW%A?6r%yyh_~a=l0uL2u(I)~=kuWMG5HdnYC!HSCb9Ie(I^*7Z zt@p>?`<!ztAqmh*{PZSY)va5%&Ru8iwb$@lzqK3p?b`=W`*<dA^0R06KKNak${=Xf z78g#PIQolkeMj~yVZMFy?t5h_lO##vL@MQ%I!Yyf`I~|;Xti3cRx=1%VGyKJe&uUl z|J0{G)%K?P(qg@~)Tq^>D2l@9(#x-uQlaO+|F_=<0D_3_ec-`nv)QQE5pi<swy_Nx z4jy>8R$FS+>tPsL!4bV}+jnYB^Rs8?=Vlk?=MU_EXku#n%-J(1PdxrRANXw_05mZ% zFjH^e-~;#HvoLpV?^V|vJ$!I#di%;%tCA@40f4k-(pnP(@7TFJm8p_)V(ZjB-@0qv z$S5EP03fZjCL*ns(poby5jE=djhiP12M3wK2LP!QGi$9$Yo(QWXsxxD2OoQ^RPyl| zt=%(up!xRc&wO_M$XFCb&3bKNe)d(bdR6gFR^w~du1}IAPLfngrRlxD{%gyx^o2X_ z@Jk&^$|#On&1S8(bkW6onvL2G*S{!DQ+uUatyZrs)$8?Uy`Cg7Flb_>`42z(QFA5l zp8Fm+bNXbGrePRv-?h85t2+(@;d%A?($eDM`qhIEeCK<<@ciw&E+W!O>G`?2AZXQU zwXW`-*_oM{v!^SSj!LEMGZPVzCT2eL*rQPt9zS|y?fMbV69~NX!aeU9--vhL_W)^P zCap<IDW%j(N-2{#PLd=HTg`e+kT&a~wbn$$L|SXDG!bo{m|$iA@Rd@eS(7Frw{A*n zrL}%^|9-7C5ySafJO7C<d7gLox9^o&%QQ{XB#xpmXx;vXH!LnKJ<|*Q`Ct6i)~Rg_ zs7Y&0nwSWP0nq#4|Nh;e)u=7b{qnE8=SeRlvS(lU>Q~3c$KyDTqA(1@C^FxJD2n1F zPEwglg<knx?|kdiNYre${8EaDM65|Gsic%rrfHHSNt~wXb1%CB5z{oe@|x>|R-?AG z`0<bZ;oaZ9*D7ReZ0z{)<KMpbzB8vz8m|+@Q5=S8nv_bVEfW(xJw2651%Z0{2BI*C zti)jyMPp-Q8%I_>@SX1gfHyKS^7sGnIpKLjE7t&Ut+tdVsn%+IY^;B1C{2<u48tG@ zf?)qc4^}#=tyZhqXfzx3TCKLYFgJJZbXQl;=`&}206-y#0hs#-hWZBvi3orX9eAWv z?$D%@IB7K-wWUQOy=wKEQzssO{OIAK;o)P4ADcaMbl=rCT)MAx(~UO>0MKOqv-U_t zTGRN(iFG4mTB*k#efZ#``%9(L%GGP`z5A|{Cyqb=h1aPxPNL>dzWlY_J^jM-OO>h* z09q5UeGoA-F|)bsy7eQg*Q_J5MopxHAo%>}{$X-zdds%meFMX@Gp7Ln5q$vAN;5M9 zFlhiVg4s)w**a#+Y9{i1|ALG6kfw>P+YUauzq`BJyunDMxbPq%GR~5Si8X0=zuIm@ zt+m#19HmLDJ3F;jTGRRSljr3zIyx%O*R`Hx_rLcye)H;UUZ9jp(=<uqC=BM$&Ajdn zw?Cr@kUj2u;5z`Qv{p)`Ns=T<5=BweYSinmf5RJ|>8;&!-vh*;G}-kbA|e7JM&WtC z^MUt2g+%#<?!4=pnpnFiD5X?NTCYk<6EWbs-}TO?*OAi1AQ^y&%vGdJrA(DnGF3_` zBJ#@>Ap{Y9-wR!K*`;Zk2%#C6G%2l>Or?}*nkGqNE;leZblJYE_FZ*NtJyev`o!zs z@Wv;(wS9Z{#&Mh^aS|s<5~oRQ6m7r9F*EPH;35<P08x0|y#pWmz2AG13ngii#Bm%& zaU8{Q9LI4I$4W{-W+oKkxtHx#Ql)7smC{-fk?_2Cz4L8tw|48Tw_bV0mGx#z2#*<v zNRuv=$`e~A7`WAJF3!&qahfJ+nj~?O#EH3}@NyOV_uO|MqQ?x24?m<pGXs$p!rQ!g zv+(>hO_>2b|G|5|wQ<YVRHlg$I5x5;`K@_g2~h~oo8EbW=Xu8Mc%Dd88OL!HMNt$c zNusoV^x^M@t(I}TVGsnZR?upE@B{C2Izj=6#(_*uO;7LGwPW}0?yeQhW~13`w3^Kz zXoamH41!Z9j}vng1kGl>QLoqQwZ*xaQn}+dfBjdOIloC}Vg?iKd-?`v&YndfWSWLy z(5TlJ7Upkx`G23En>}^>2m?k@IDhVpCKjGwuB^D~ipzcT$IJ}O0QPyMV@18TD3w-H zMqyA}T52?E^K)}ciwmt*u<v;<ICkVvxl&rUZUg~@=li9yux{G=Y3p*CY5UF#x9{8? zN8$Y3Y#6q#x%T>FM-Cl1^w^Cz-`c1xKKAG%6O-G@l@10#Ay9aD&;8%gL;wuTS_88- zLb<@AwbH~ynwWG~cXtp)XHK5*1fDp4Y;<g+Ni+8Ee^?MPFtKK>89<vmB_c4=F`!!t zBC6GD_uqZj-FJSir*GiOtA8R0S^x|P04QwW0UL|R#UmmzFKE(`#VD<(w(q?9+8fWF zK3VOkoIHNas22cy>vI^)n%Tc60w5-`DIXINTlYjnOnv=>`yYNN3|dyd!1;w3C|A3U zkHkzyPG;?1GqFk!tz5O^g6GIIC1T)QB6|s9cR?G}vJh8%Xd;?Ddse0?*^fDYIpleH zjEsy3cs4z3F7nJDmt1=3Ew|h<F}bz7t6P&+Qifr0_|U<-?z-zUpZV<hk!jz)eP93j z*Pr4Yx4q((Z~4Wy0tkfM++AX$lr(|Q<i2s5CMS;{|J7f6&kvo6Je7v-_|lgK2ZtGj zv3YjMA!%#2M9csTz-%Iv?|HO#{mAcs_(M_H`lWZh`$@y-Q$L>EhAz3}l5c(czP|oJ zVzA|x(klC3E2Wf{N^7mmOEwX<TLln>S9;H{{mLs|cFTDX=-O+qec$^(ptV-ggns+T z5(@KUs?t<SrIb`kngqkhrp<OH0Nk)~^Xp#o(?4p?_tv+)T`5fjh?oTwn{7M)Vd^-o zZ6%r&rpjb2N;6<@-@u+rraU2TxcQ|=jvW5xop*iav!69J`wt+{Ti){KG)+8BD1;Lz zlgW78Vim2m(n>4RT1u&uGNGoUTD^GBbAg$Nl~%$pPfhRKw0ZKSFTX90qcCWF{G%Ve z_x=Z-kwBd*R>V;(d?ipIBHJLImpPPGCEC>!T4|}JmRczkVsvbL{rXXJ16rH?XzqlW z5m9(v>1SU3nwPxfCGUCfd&4k#8i7W~Mv^2J%0m<gXwws5CRcJ1nH)%Xo?j~U_VyxT z631~AN~!t=1_y_Rq>?5uXwq6KsgzbSO;f2-DV5Tim{Ewg{lZ&5_`AOsw9Dk1=y=z+ zzU6x*6k_(=nfbXn)B?dIO8@{Szh!1XD3wZGUEL$2V~9vZCJir@%D!KUqF`Ze=IqI1 z6Vtn-l-Yu6rKL=jE7j99O;fu~Uh%S@`uHFJ*>ZvIz5hV~F#1@vW~6Um_~@a7HhUl& za*f<Vh>;EJD;+DewvdhWi87T+YONVCk?Njr{_DiHomq)!wx5(~maWHe6opX~hH)Hj z*|O=-p(AZeCWL419srTKQtsF~y%Q0LSjn{2YAr4<L{Z4Z1N}W|nra3_VL&^r%wkxK zB8s9UNm{Mo?yrA!diO;DprmsORy#?WCQ%qgL95wVsx6%R`8U2XNurN@<YSMYIO%K% zF;78((ZmQw0P=jVr?;=Cx0jiK#nQq|y;k!|C4qtgT=-B15lZ4XilQKBHR|;j-Sm=j zrP8b~EiBA88x5JJQpq$)oO*(wQL8PUyYdA$_@xpv-+ue+(>VOY|MN*7@_ht=3=9O! zfC$EX5x{0OfYd*<`s|qp7yyL_fW)L#j^e~o6ox_AYTa=2t)A}(t!5M_QmQnGMn=as zY@TS;YqRIhe*4a^&CMKFQor!VmwKK+^h_d5%rCs=YTrr&z~&PG&?KF}%)ki1Rz_gf zpeDBMWTuB6ye|wxBaK~%BuSGbiK87CUc4|rPo$G13B#biv@|z6vvc<aOG}IMv$OMa zb6%<PlP`OXQp$!Ktq_F}p6``}=lK9&VmJaAtcSo!<kSUV;wspRf_Zx91x#dunG@UC zJp-`T{OJCNX3x!(O8$#)dAXD-Xf>A>7Z&DcckJA?Wn!{cTM~#Y5QqU05CISc+I+|r z3e1FP1OOsNV6u8*0AO-jbF~h80<q-VA00BpjEKB-ddK9{bVqf?!2^$IO<@?+YfC4O z9i5!ocIdH3_gr#$k|akD9RL*e1JLC8XqSw%30=l+hygP(5zWT{A`m+z0uTT&821fq z-kxJtOhf=dt65#qX}033)oX`_SMPu5p@Rn=9^J61wzPEY*wKxfwwTobE^K>~bD8yE zKxRf{BAe>C%-vNc08S;uHcw&(Dne*RMwc-WB6j!mXd-6r?%8n3<@@3!QBrnxb~!Hx znXAhMVn&;6<&My5%>3XM%8E|zIk_r>^D-)vF8|MHE>-I2k;A1@>E!Waon2jANcGI$ zIf2ZryZY7a^~@t=^4m%U?6Ls3&jedA0TThREtcHcxgeNFL#AC9?K$x9L)w;EE+7E= zi1@Xye%bCHG!nQaH7_w2Ub9<?GjEZ-!u)-n6}4{7f|>dL`-vIY$*DClFD@=U%kV~1 zn>~Ak*|%?>O$(nrk7rlq`fL>F2Pmb><?_${+|OUU=Q(RvuR(!IDVe5c&YXGdz=6O0 zyT5(>@#Ft~0&U&8^^gAelfw6b!S*h+Mr7fYR<Bt*G(3FqbM`2ee)3QL<cnYW@{d~E zkB*L>IC0`B-f{2!4=^G!lC7gHCZ2T&Z8e!DNgStX{MNU<z1eL2(7Vj*?d`4C>reXY z9Xob>{tI73Apk{|#1-qt3@5WsftmQKE3YV*{R0OM{tyC<jg5U@qux3-^~ZnuXC@_p zEM{^M@^j)@Xomq11PbBr+jqq)UUuvG+-2R}-Jkr^KL-b0a;}fIpky-?2fl(yF%g9j z+js7`aQDvhCeT0M@kK;IE|bmH#N?b=nXe0QAp=kzg;5Cq#_M0?`~G<l==R%h2f#L1 z!PU;$7BeN6YxZSjf3~u~%pklszV6lMVcWm#wpTEKCPF|{wiZ{)2xz6#wiV?dRh_}K zMo-lhoz-eb6vaQhh9)N`4aQ?(1zVtJok~@p5a=9kXnUfW7!f_+t8`Sa+<VCnq@m^8 z{-YoJXh*f0E2glmjd%t`&`N762;t;2V3BbLn<lny-?8h`%ddF;^Pe|0HPvc0XJ%%e zcH1vsvW|`ptu%XpM5gm-Ov1E@?bm{D)LKzdVOkRd0ABpu%c|9?DgM{2TR$|s^5W<0 zNuuy0ANhlC+<Dgzuw<;+LWrhH)&(F@XMIOoL2Io@lPbJo>bu<+J*TU)8&RO}>{sCl z&lA4?n%Dm9hd=bY&r~4K^BkmUdYwusC0)l;WiX<4Pn1P}%qv8Mh`oLNJv}`x8_vp1 z1B(mKFO@4DANcLxdPV{vqLIa-&*n+qgw3K?&QQvzF<RLM{`AgW#%1PPkuy-oe2VZ( z<zIdGyPkgAn+r3b=P{DV$~VUlV0K6zFe88vf`QRIgzym8kBpHf190i0cd%|O6AS%P zW$l{PXU@(%l|a{Bcb!toV<fU4W6H4tZNZkx!uOfEv$LyO?NCZ4Q5Z!rF|1y@mMmq+ zISHl6fVFNr7`F}pFT3UD4}SO~PcBebSJ&si@P$gb<IzXHXJ9LrYon_VZBX+(&-4BM zzW$Y~S1D<-wAAxF6e0{-3v=iC28Ip!%x*)aq~oC#HX{+Uc(TAE0N|z<zxc~v{aU%) zAv_-ewASSQR!Wr<+q41%A;kFj_{vo)O*;Wl01AVr2(NVZ^r=Rprj*ncO}7*+t(8_% z$xJ3I;D*ul%LRJ%t6%-D|M|;8c%J7WVn;_605s?viPm=S12ZtJUAMMWDluTeFf_S3 zmjDhQ*l*B8C6!Da)@d+Kl|MB*b<OIP%LS@*R6WlZLI4Or*fhDVySoP&Gh5bqT<1!q zQYw|TrrZ@dS7q>MW|nDs^vJ;^iKR@XbRwkENn_GW^EKYEVRX4bW`~#ttl3m!8#hf% zO;@W`10iKTftmVxyNs#2)`yfTHH1g0q|(Z)_RQ&%hSnfuD$_KBU!_HaQv<doNjy9> z{J!7#U(0L=0Rhlx2$_fpN+o~e=E<q)?VC1F46j^O>8Sd?S1Og2CIh%inWRbLKEU>4 zl$0u!O6fFB8}(X_2B((bk|aqQCrKQqhK~@m){SoTOC7)R?q4bh)LytUARrhJ1`sRN zj#aByZ<(0fI=y4lmI)~hnIlf(*nEnC7Sl9wbP@Z(TB&lm!oXUSOp`Q?(j-n32i1mQ z6gC?5h0d<7QpxY^?0WsrzN)zG(fUAQgXtk!oDmJu2#CObsg%SCvk;zVpiymsb0cSL zSSN8DmCNN_7hW8+n)M|PTCFGwt@)UDL{SvAf@Xbic%4io3eWdTBctQbxp;Sb=rHJ6 z0lv&g4+g_S0HstEhEW*BQQQAf9L0vx8-__7Uw7lp*4F?ca=o^wr0nk>=<e=`!XRih zT8*VJXiZM<5T1u9gz$a8bp4Bd!U9$fngRx70t=jjX=d2C$V7l*c-6X7CypTs6oQD2 zN3pnY5=UVe1TD|=05FO|!wr>ElTz2d<i%kSEH2DftK~cY<;!8KzHR5lUEMvN?~^7# zAw19bN&w(n7|N^+BOuvCh^=oyFbEj}Q+IbywYp+yY0)^IytR-fNfL)a5C*MluDda4 zHPbXT8jHf96|}-2h{7O_BSpM&^|~FqZxRA6U`s3n3SlfEi)9A;MPfpWp96w{5CH+% z0<;LD8#Z-z_Z&WWKx=K?iA=4H$FcFw^?F^(G>)QXvr$`G+PG<pN|RQr)u`2)^~U7Z z>FSEA;R$N3O_qTu5Iq3!IftS#NAm$JjBZxT!HtHLF)%o^=aS187UoYre(c=L86%C7 zs=KFW$L@=QAc*5grb!rv^`)h2u6t2uS9hac4;uBeXHK7d{K)9|)h0V&t)T!3qd=n} zhg_Q&Z$H~Y`@mqOF)%(blSQk$yL%?5rZ-P)wT{EtJ^;+l%p5s;roOaz?F~0|b@#?` zl*Ex{7QnB){Vk6@`aLH`K^jD}*^Lbm0GcgNS)PZsQSW$4S<!6RH-Lzq=b=D$P&0rq z?;KjWa$snvT&Vz4qfw8eu-R-jo6UNoHa|aCZ?uMnhCyq)0@gL#p0jTuR@ZewbhnvH zPvCl3*7ni0Jj_+l0kn=(U__T`nxskC3X(Jln$7vS*^X*8jzXCxTP7z@oj6`wT(o;B z2l7DxIO+~iRtvL3q)lJZ;u_$3(<Vi==rj|sAud4?(Pmakl}qLM`Ps*h9zJ&X;IYGx zUh(|vf*|Pc?{7AnNt(`_JzbC_OVI2Mp+)5x5p3O=f%lFb#ij>~h13=upiQm|;7U3M zW~Jol==kvPsvu|$3_S1Pf&FJrpW3i-)BN1r*)yk?7UzdnuFha^*K^HUW6Y+3#{fho z&H@0V4Q<&n+B(^R>Ew(nH?sm@4gg%KR7&NN(yFtwd)xHRZPU|@X0usatZtctcBI~E z$Z|^Togq9CtS4x<?fhv0#VUgK*%PzU#!SlP^62=6W-Dklo0<z<0nQ8$e7Ex88sbQ9 zPnu=Onq*Mi-OKs~WL=r1!r5P%HVqX7=J~nVR<qe^HBX;Bv3kv#f*#G<fUw4F6h+QG zu(MK=A2|&<Q?cNbYl#q;-eaLa$xJ*e#?5Cp8x5^h|G>bRlgG;CO5PW-vBGF*d3ety zZfk6U?Etyfnx#8H0qrZSV|GW(?JcXG-o7+VCbw;W;@ho;mR+u}5Cpb2$831W?7DT7 z$wQRC(B8xY$3dVXC7o+ai`8o9(D3Tw24L4#a*1@I%>)G_qs(Aji`X^ps9?<0z6CP& zN|sx3u`9^TbLVCb?EfCygd*1f0Qkp_9xXP<GP8%wG3WNaOk^lBR$+N&SNy2r+T_n3 z+5ZR^`g_LB;J$tPmX?-kwc4|-E%f7kFmqpDUw?nU4*>Og{p87$|D}{Cl05tS`^A4L z;y+kB@jq~T^N0KZ-|y?|t5&O>ot+&W)oQh)R4M~-5Cl;a#c|wfwZbrLwOapK6f`_M zeCw^Z-uB9$wxB8G?JZN>nLbE1)Mf!%Z3(sKW@i5BpFaPkFMs9P;)(X{+xPh6k3V$> z_-P+&*RK18U;Ks3_wFl|%9eEPGIPq3m@HRu3}<aAF*<9?nF(XV_Ek!qJ$>pMci#E= zf4<|#qMFgs(ed%|AIXANu3Y)1H^1fDYp-KOk+rM^A|o>+Bco%k0lF&3)XK<~1P6cu z(DXnAqK5(yJOSVVu30zolQ-XT(@igqqwuf)=2Lfn`=0+WTWo4->O;T(k>1{3Av{Jf zt?``tm?2GEEYb>`?3|C7y&3a5ku3m=C_K*t=5nQa+ifp@>8-aMJ9_lPfACTMcT|u! zHa1qP)xIC6;faq;n>Kyw@BZ&?uXts-QW3(#0)XOpe{DHx+pK9D`5^E5=cNMJwlOWM zHSBJM?w+2juGqVxT0MB^@V~WcdV72O`uct_3wqO=-+bFEUMYlcQB|_&abBQUyCKfL z7YHJGdBjC_1Q$xX%uhj~ptGo+?Z$bfJ$v@--nruwfAXhiXU;uawwUL6U%2CoE4sQ2 zo+bc^U8R(vZ5c~8Bh?m_l+}tRiV-tgH_eV5kRwjZ3#M%QSwe{@m0t5Rul)N@f9}A+ zLqGmRad>$6FaPqdIyzRct)U(JHj6@R;}E+i#a@<aw{gZ4v28@#gDdpea`q9~@pebo z$Uo3(&ET3hUVq)*OZNQuE$IF4fB)*WYl#VoQ3%k8;K=)~y8eC@GZ!ZUGd3)nQ4Gsy zp=|81FdgV-L5MSotaDa?Aj~8Q@I@D2I6FW8*rB68HU+)o9q$+&8zW7CEQByLb%X-W zn4t}3XJud8kfMTTCb!Yd(5luMzs@MGNGq{y7t_eKj0oX*zVBnX+}+jH<$0o~r~hN0 z_@f{Qvj*9}pMut|UAuShUMZFESO~!u97lLE1r>1qjE`RA&k?tWEywC}8_H_O%+Tbc zVwod1VZU!+U~GKDiWQyU_}k-~Cigx61?1Q<TFNjC8}-`1{_DSd`X4@<B+0*_g7)p* zYx-coK!Op;YR854B4k>GAh}IXj<R2H*qL?;1H4qov8@@I*=9swfbO2&Et69#R;<V^ zl!%ag6hs<PFrWtj4Am8#rE=wln{Iy5i*ArAJ#^^M-~7#|jvhUB{uQ)-{d(hDnHdPP z#=V`z11MnXxf$j0hq8FTES6C|rfg<F?N-ZNkT&!F?xS$y=FMx@t+UG`gb9~so!F8L z%$tQ_ObJ20=P727Vbi89?|A#$l}zur<Bos){1?uff_&evRLWXuCPpEIol!*0s)V9` z+OXO-)Yp!o6vKR>iR2u2fssk1iI5qD0A}I&+js8n?CfmQJ{JbT%|t=&!@)N8(dAAk zJikQ5&wKvWmtA`4$3O9jV~?LWKNe(q%tClV2ol0J=Mdlt><2F7i`jm&V?0Dp4hHAl z%(mp)^ioj>23XPAIk|1RQmz#HCAr(rPJhXDYneHj=W=XWv$8_?{%c<SGv9ge!B2no zADQ__Qjk(A2t%zDdrTzIEr``lVMdSJasS+q@)<1CW^<3M_wRYkOzaU6p|Hm=2+uT0 zOXc$9)U@xHw5CEND9k?@Hjr}y+Rm%y)ZA>xvTG3l2nO7?ZCXnCxqte?52>IvYu5bM z``$OXb?eOOQ}sr}V>an4<PHeitp}cbhgm+2Wh)}uAl=j3)6?A}Jdq`mN-CvNWsihP zwbqEDx}wwb{H#ezg~BAu8Z;5Jb|huZHuY3RK5oIf+(;P0#N@=@rNwW2^PZ<yP-bZt zTyVk9zv)fW+qWYMW)MPnehGj{YeXWpQ^3m`05$_^@26!fPT>hp2qDUq^3dRLS67#9 z>YEHe80-T)pBYNbz>LJeAk!oX=V#~V&aGU%uCIT<9AB2lyG%=@&2d}o$eiq0a&G2W z6={IRoU|e)-nMn?!}|{`)f-QxAk*J??Q4Jb`WtUhN&}z}hI@vH*wx*=w76jHLTgy2 zAj=+TGa=WHLLpF~K!j>X$Lcj}%9Rd8KoEwa@AAal*&5J;T@E3Hhv-QepE!2-)NyZo z(}YRHvRS#z#k(9cJA^8uZ&H3pft}8_rxzK$5%AdP`latZ@-zy1`E9pd^MY%M*z<f~ z21DTi1c08t!Ohjq6GsmxX=*A(SF0m35Kw{lluvR3u;+Qklm-U}`}+HY@R$e?35s)q zMS_2p7P70ujBTPON|NNj{_l>AZ!DE7Mv>NzfHNwsBl{M(wkl(o=jRaEvlG%(rm2#$ zqoe#ZRr=`Y=)~mKO`A7cKmnXH7Iuu>^Sr^~RRcrA<w}QCsaD$3tMU+U;#8hRBcfr3 ztz0?S+1UwhAf5|AYqk&E!G4y+N~*|0wRdKSe=}!Jb$0duu-3`~v{GhorR;AgBX$~2 zt}KvB?SQhBNs>ls6l~hG@x?dYl%&atlc$~v4?+|G1Xv8=XvjBaxY+aj{(-^%fdODn zl?sC(3R+PdrD>|9LO1>j!emMS0Nq_(0)<kVK?!E#-!nB9Ql8?hgU*QU%ASj1xVn@k zNt&hy9{KLX)DGhW+VgNKq?q}EZ%SuWeaAnQhGZGXVHicNk?xHvI=f$d<Bj15&N=`9 z2|!6iK~&Gb>WV-6i@$zie&mMg(GrH*6C6fBH$ZBbIRJnq-|Ow|?dj<?)3;fvY0ipF z(^M(R%)VfyBnTliWl3gMlu$Mn<FFBXGKaD;O-m&U$BU#=rb)~IvomJ~hgW$nq%u*a z1&f~)XE>Zyn&_yclxdvAaT147&|rp<@l8rf&-c5#`(F1yUK_L;ANqrjHyX_+hIw4B zog62&o5oP#4FA;W3jtUNAo6@4ec!KEJ2GnM!t9wiiZ!ti9ttmS0U0C8dHm)CoOXV< zn~AXe-8fF-D2}3$u?-hov<HCGBu<hvj-x<InM&u0l|3590Z)Yi1}SAKlO#>!Bo33X zl_crDtFMz%dY)&Pe?CB0ckesj_U7+C^w8h^{r@v=)qk?SJy<QE<#)D^AA>uf0MI&V zL`%*GrvyZVQn{nis7s|h-!~-^xZ_>2^t#}uRi>Z9?1&|brfH&5`QI+TVq$X2{8Ffr z=WEaNd|x2zC}<__XenYcQwP?EX*=>E(<DvfBnpxw)CzW8e2F>Yz~my#V3onRbI0zf z$*o`cmv4OEM9~BsWHhsUmh*?eWDW?!%z~J?pdG^)0YpZ`p1y&l#f3PIF-g($is@xm zF*xMMoLgxQnkg)~lu42(nJA?$e9m(>Y}}Hjsnwlf&?}|2C7H!RWA*yc%@f-?SF9lB zI0}PSb76k=*pb6$&zv-b?lcL~G-39)?c6=Qa<%6P-!7g3bBN721N(^8Et@wVId<I7 zsJGeS3(i+yc1(kDL_o$;%+|^eCotI^py5ZmAAtd2Y~z+Qr%x`-&H{q@b#ABG**8Q? zPl#K_Yb1%3GKr(<T^EduZwSMd;Xj&DAbVP29LKTQIceE1_4M?bNM(GxU#hHHy-q82 z<lufOlit3;iEX<EhlWjM=XnAR1n3$9h-@?j%qA50g^fk%B9|FxK?HN#K!5;@WHe*F zHL<ldJF);pn<BD0TD@l7;Lyr5r%uez&ADM$omcT0{F6tpY``PcN~TFNGQM$ibi7fk znT=_^RGOyJp0*N(L9@|l)@#HZMqv`i=IBFn?nx9!3~>2XFB}+JX*_yi*wx}OXlHp) z2-GYDdMwyX?-oubG&PFZQE2(NcB&T9stL)k-~p`#S>wvnXaX~v2e}ZQ=Z%bR7#-gz zrJOl?dVcm?6vrw}bpggVmP3V!P@}%yzJaj~o0`o=hG|<5RiM?EO8#>%-MePpx+IE% zFbJBBIEunJj>0GiTJ_peeQ|zte1kyLh$b1%JYbOxlz}-`Rfw(@1IH(|9>+CE(Q#|Z zSdO8*5+V{A4~<OVwi~!SfFR?{xfH?dDIvt#bt9`*uO)5Ht|D_VQyfKc97~y+gsY>Y zQt9X@mn)v<o9sy`IeTuVQLks!Y?{g>jt7Q@UU1#@UESSEYbB+&1HEN}I1YnzXHF$j zjf{+rkB|5C_Pg#c5F=y<ytuozt6YGPAXAX>LB!51>?>AVrmyV!U0E2iTPn+?A)olL zzSy2yLRLqdceX%y0?8L;_Q|i5E1g|k4nzXikZvO$mP(~{>qpkDA4!s=(Wp1;HKp|0 zb!%6yS|fxPhM_r3$sJZ3#c`ZUB|QJK=U(1FFjTMCX3m__TJ`n~0%?2TO&e)E%Zvdt zx_U7Wa%5mj#s+lm#T{#7Lm3hn>N48ih4VY${CD1LcgleboyH6~U`ByJHuGj8MnIEy zBIa`kHfZGRTi^Ew1_lQP21}(<xl(D=>*h~Pn(B@PkHVnUsMqRCi%}SQUTt<}W_EVA zb47J(+v;Ys)u`8%)(A*>Xev-EoXd6t2@VcKATzW9<T&MMDH@Qu8A2nmoty%+6{ve+ zlwi*MF*#AjcDH8czB=wIW@rm#R8}(!QK<C_{AIf)X_{!QL5TU;*(8awL;aE@3d5jL zTT)70fAddO%9X{1g(zz6+I_*=^<!z85~EUjZuXo~vRYk{dC<&3aDl#G++ubsWKcY3 zKRTqxZ8^^NTIP}wDa)P=Avrrx)oLM2puwFI=AJuVcmb`==c0;id2p4XHAvDa01ONc zMqxO2Zf0(FW@%wQ3>rkVb$Zv<=^arJF3vAB>b0|HP9us^xgwQ{qo~zvG@Fgu;{3)f zlNk-#-FCjk3V>O0l)!lr=cg?Le>txlvLW&eD#j;HB!D};DR*6v&6sfB)~Bp3!a3;H z_7_h8bMsfIquQ~4Y;4`=DA@T3Lc~VBe&+Pa`Pp-|rTMApUAr&5*z<(>rv>I`&mDa9 zdmA@Ty8FopDS0KdtQK?fkpY_-?KG72Fvfu}0D^JN<myCwYKG}kp`ByGqLPdn$<@1< z^~=n>926!|oX4l!+qcogb6C247NE_EvYlb5R#$A;v}M!giIK4l9hC|(C?$20mP+MS ztJjoDes@ow`}~4F+W1ZFTdZx(tT!QYMOSX|WHpl2RfVJr+NL3(Fa~1x5pfPaQq~M{ zRt0TSe$KSpI|FS-n2(xpK1T+HbKw9*7>3P8Jp&tpR;yO8EiBBJD;?!Z#}g>`xkPQ4 zv^`O+Nb<_C@}l`e=3Lr+XQAbgiJwikA-ln@?9Z|h70g;b`3)9!Zu{l}XdCb;?7C%L z-E2jal5^)~n0aY&Aq;~gPFl_S?77o}gDWc?9ffN^;g;HTR6OI`xt`)g#B%dzdyHS< zf`~2)M+8@L*!^m+>00y!*A4DOKq}lJVBuIdD9(DcHU8W3bmsO>L3SXbeZl;T3Y#V- z`}+sNFg*VFk%7U%f#Fr)=H9sdG$6<{#L$*W7kr;V{xIMFh<X2lxJ{>S)GR+_(4_$O zz#4QJ78IOed#f?GTY~m|$Hj=o#d$8^Cu)a_t|&iWh>3W9ZuZ>Svq7r~rr=Ua6dWQf zS8)CjJ`~`q!bZ=cFfSVg%6QKRP>d`tspMkXRG5neDoBoimMjcyA!+%zj>}b@<+N=z zXwyWNj&S=ikoJ>RDpBC7HEV)aaO(Kca=Fq`?JUr9U>U74TQh(8{02Pf3vO!Nc`2I& zGGr6(*3F<r^eIEOT?UZl>6RSKm=!MtFTG3$P^>=knYrcLD_h8XYb+o00wAqxOG~6_ zeA7gpK>)O!IGG2d0+GDUlK(SK^}rMVNs`Py{y*!XU$3iy8MXib002ovPDHLkV1mjn B^7Q}! literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/twist.png b/release/datafiles/brushicons/twist.png index 41b0b5ba856ae377db34b389d62f68275cae79d2..539044276608c90ac0a92033e239fdda78d16019 100644 GIT binary patch delta 10882 zcmV-|Dt*<8gaL_FkYj%o1t2W5y#t#703ZNKL_t(|+U<RLw53;7=id9A@4IiT_i9cm zl~<WVC4mG87(%5`Ab}VZ!Ns6L11-H!Y!RpEYWc&p+D46yjqQLa4vfpGMMTCRLl}ew zWF&-)RjDF1*PHJ2edp|<|2XIS?tPU?NI_8O)i+i3?)1KU?mmBe{O#X9!QH!e!?(J5 z0J!O<o7%_Mf9yCQ0>BN|Y#6<3{7Tn<eDUO$N^g4JQ+96OyuN+%U2pu!x4-_STh^~j z4{_J7U4QUjUL|$EcWh5@&|mIX9q(9V7`R`BH@){m-C<1tP)^L0Q}eT1&KJ?A?SAp0 zrLKsXDWbjUCC`5a00ICcGG$j3m+X4U>fr~vgW;|FmqZPLh$w%%y0;jI-EwMO9QF?E zyX(kmcX=p#76)Jd#%-I{&Ez+6-50Lw-lB=D^ajhl;nC$)rl}|Fyf`i&%^#;6Gz>!j zc=yOXM_2n(WiinyW3}?Nuiar_Pe1nz4}fvFQdiw!9eRJmdb03y)0588#@Xqa$xet| zI3hq84p#eB=vSc%5eX+d<wRLbb;?caW|Q>svFsg=KX~1{Z=Kt^Ah9-s-+#gBCwcp; z-}V_-bRO|am!H4jo&VxD9!O6;{erVz_q;3W$gls?f5>mT`CWgZT-Uwh-NlEx!<vN= zDKPh|Fsy&WFa6~Q0D#KL*>ZBOGqY)Odi`b3diip{df@1ah=Q4_zWEi`0sxUOOxZcN z@vKV$V5L784C}j(4Gq9M_nB|(0|3v%Zrxur6<1D%-qPxzI=tMiaB9Ao`Qlv<eC#V< z2LKAgRSgx_{o(SV{^Gvwuv+T&j~w3rsk@J>*)xAHTmS&Cu@bI03}Usi+FdQ2o1Q59 zbvSxxPp2%VJ0$@4Sogwksjfq>s=I?~{mitPO_t@Bx!H$~FPqs@&N|Ik-J?~A!w?5` zh$54nqO3h4dgo>)I^98aqP2V{H+rNOuK)Pr^&dO_onGi?-+KoD-0-}O4}a;(Cq97) zPojS(yLRpRgV(-Ng_WyV^}=8&gsKiPuv8&Fcx35tclgXFESQ?8ib!B(Rc5*2{h!=_ zY`MLVTUc25k!M^<zI4Sz(V6z;G?<tK0CVIne#)~tVX;396NNJX15h(FWwocBf97+a zbpDOE-81rEMQ6%XBnCArCT2Uco3>7^Lqvb_#c<{5%3v5-j&_I3mF_%kR@Bsh5D>r+ z-u#Md0r0=Q=ffTVOohXM!%#UWhhkz@eCa!r8sp*nzO>lwN0usDt?qO8$1BcSmn^4S z%WuB#Lu)*0-CLA6R1P9ch!U&1zbJ81W3@Wy_XhRqVA!idU=}y^kvoUO7>^%%aAAM* z`m3LG-k0t_u-YHw3rR><2_`Wr$GT7CobS}V<NJ>+v8tMh>YxsF9Ed28TfcEr73;~e zc<NbOzj0{s;PDj?fD$W-Ly470Fb<*?MFMkoP>JgFL<s<e_fwrRM2;feVSVVxk%`i; zo0=fRvp38hUG91S2!lll!zj$6fti0<qe%LliB7R$cDnGs4lz!YqNb{wMYqh&E_QoS z&5Q~0(lfVuKp6B_MK!RnD2qf978MazRW$%0L<KMd1WR6#9C`0z9o5VL03Vy5{P(*p zEG+m(dASXpb$_)py$%3=?|GZd^b|g!oSMD<<BP9**DVi!spw3ebVVn({x^TVe=h*M z{XaeV;V;E{cq;w~@x8xz?a7|TxBcA99xZU4wRPipr*9UO1B<Ksk1Y?X`h@rW<r{ti z0a#R2)vS#~?N`HF-uVuZs1hX%!*C@GmqX;hTt{B&4L@=FeJ^|FrKT!oED}XoG_si4 z&;R*9u8|QsN4{`H=_jVkskwj7<Xquh>3ydt*3V2m|I+g`YaAdV5h5ZWh}m2I^9$F= z$oY;dI<A=X<y1Mb&QHubas~ik4)Iw({F?5d>ej3P2F+gsGgFn{e&uyz7b;3}CHVrW zK<CTJxtYypiwG4{m+pS);?ezqd1X-bf|*)c9e@Ft0-D*&pY_!2kH~)&0H9(941m5f zH95EW38!C(&YQ&JhxgWzgV_G#D`#(<Ry8#ML_~A|itxlUxBegR0DzFl08GV<5luOS zs;A0Cq{4@e9jQVLA;!pGd2m_PzzhKhkr2J3-+0f5BMSg{Q&A2ah7v2`faE4SQ(&qb z<FMPSV!sMeq+$^DAHRR=@N=H984(ESoi}~;w)^*uT&;wP>*TO&751Ge;fS#YgSvNo z`S_8*+^_0E6o%6Ka^DdD<&!so*%=$>Z%1lPk2nk@R>nb<K}BPbIN++!bw3Ukhjr-J zp*yVmgJG|?T2<AZdk(9}d8cnK99?<A_R)%zg9@9mshF}wRb_u)vc!tRAd18&k)?`U zhiG-ca(3aI3%e_aW;zoSWidZ9x!fB9fHz5(5K~cMFhPl?5zTtN9w8E;b4UoH%5f;e z0g;a!raPU&(M8)fec_({0N_;_lvUU`C<ib#sIayW>f_zMcjO&S6a|ZlS`}ib!tvGR z$xc~?=!m?dxtV{dw4x{yg=>wqNUfrx5=4hpU4<}FmUUzVKmhODRHvMt=y*q~gJBc_ z1Oz;9^W0GZFC3IB4Ha{hvV*`<M-I$tFg;O5W=BLs-aAnhu}<Mi?-0Sv0D%xx)k_?5 z-RBtE_z{>{L`2Q3aBiY3)eOLhP({_7BNWko9YrKXknMjP<|qzVVyI)f3QLF_Sy)6g zM;b>+fB;B{L=KZqdq-df0A`42U_L}<)f~}SqKJr!ny9InHTJHS9)bdh8JGd0SvKOw zGlzU!ZfBl(rvJ8od17Y%IY0M17eD8v`LX3-4geqipa1pl&%FPU!p);qK8XI?SjQXw z@qx5ofcSr*8-DiAPyFpk-??q)<xhJ4D^I)d$$$Mbr?3g9wxBi@;86emk8FGNHy^m` zD+liS%Hvi(oN#kR=ag3SZQmZNge2BCT(g0kzv|V$@x{M=>$iOWYp=fIvUAQTo#V8* zX21NG9~g%Ct<~tNtFC&{r5Ega;za-?%4jCa8Y_RU2QdtiCt=MQYG4`E{E?f#{)t=f zsbWk?YRU;-c;#g;f99oTre>;|%v;n{Op~>%ndxu;!@nL_TzQn_5qIs{^+&IJjjA?2 zLQPdADo2$dv65JEtVBdqHC0(nZc~RisOs&T*M}&Wb7zBQHE9v~x6DM<Oho|!e)s*K zK5&10=@GM8as{9o7+Sh1xxxxn3FJy5hX4peL=+G;BmhG6MARv_oN@lrq5IVUi8_uD z(OL@z05pVDiKQe6%~Vu>=|^{&!LR=H2T!g;uIQj@b|$8#30x3z1yVu2q+$a4OI&ru z%n%5%L;jqnyr3wG;jnvX|J|v^SQML{nx231mNqW=VS`j~j{YRStg65L%InPRzrE+f zCoYJ5iCN5srV3)Jh-v`j3UWm;IXgAC&6OSUWid62Dqx^0aoAltytj&?rlQ6QM_0O4 zkcG|b9GK<rm+ob$As`}J@}i~&@ZVqY!+-bLTkm-Az{u>091sB#Ag1IJOu&o?$$5Y0 zOILJ!Sppamf-s^(a$pjM-NT3W)**z*?H@J!#(|}q_bsWYh^gi!WvB{~aC9RC2X@Z3 z&1=m*e-|-{s;nZQqA9;I0R!>{lvBPlN$8rdtsJWEk^2^V!(oW3CZ=k@icujdio)j~ zSiEHW{IrLr9<(GPA|kN+j`jcWpKgCVxeloW;iw!`qDnMjGf@#R1qAXPB9DkF3<)V9 zQQ^A3)a@>HyWJ|Xs74l1jjU{>NNl9$zPfjjRi1spCPP4=<$nFXPkym1-1_OsTOK_8 zh>nrNKsXA=Bq38#6I4@EB!?n`0nkvqIW~=mPU0~1j@5PSuC9t|6=EGZid26gni-o@ zbl^%uCx#!o<Iuei+zl$FciT75PnJbwxopSQ<w1SRo&zUYki=Rfs<0}9u&M&2Qp!>d zV9F{Uk(@7xOF)pi&vjqHD&`Qmj$FrB=VVI7RK$=9btSk0$)9ufh5Pp2wQ<9I$_E@# zr|@%=@U(Nbeffa{C)qL+F=2nm>6D_XnSiRIp+rSOA_P+JkvynK=*PNuc)6RbSer5_ zp(arzvY17H0U(0wkne0e<E$;)PJ8H{J3Tq?$vamTW>!4y?9;!z=ir(JnIwA<QvsFq z*i^wpRRFBD5Q+`}l<T_cFZYL4h~$U_y(a^gv^TpzwWunp!Wyf}3`BordGW9?JE95m zMC6IYxrws4{G4rHY2@SqP?b$tMNFfqsIp12FIAOM+G!wWY8oOB>(HwL0Cc=hP7nbc zk#kZw$KqqDDGrKA6{U)?3bEH+ot~WN4Qm4^93{s@jtZsA7Pj8H?{Kqa9FhW=vT{sy zO!|7s;i@V(fh=Y4$)<li(Nw2Q9z|4Cjm2@1mSSoN_cAl9BUd5zs=5x*I|pW(GV;bl z6^_n7ZDVET0YI}-N0n$ARW+sfIh3lYnTWEgnQ~6u)y%wi699<d2qO!tdP(2IY0mAF zj#>H+(-Y;ej)AipsOGFUx$oIdq2xRuaOeq#w2Tx4%&e79UQ>S~v7B0{nYCrLOU~E~ zj118sqEQ>O%*+Uha>k8-Ar&M5W~y055dmS-?34$9P!Cd)U^$7=@yucT8O?zp*EcDE zrkWoS0Kp8#!fFauZ4F>Zn2LI7-l&Gn6)fck9sxdm-{E|bd^v04z5%o!V584(-k}C+ zYHF;esw|pHtrmYPNk7#9jKn~c7>T_oskZf+87eq4G^KL#dkk+(wb}R1Vs`J|O^EnC zC7^G=ay|2jSN`~K{Y^PJbHej`zxt_9{PFdR-@O0ZyDTm&EbQC2@05OL+s?~h@z#&! z!nvuS>;5VLBp^9y{O8|&!x!Fj!>MlBDNE=jZ~lj~pZb48X%R;r_}cq_^OY-y9(?%Q zCg(Pu`}AvG|2KDi@XfE?fBWaZTM~NJpL}ZTxlc-~dCxCg^B5~-Uv@aukH3U2e(uY* zo_A@w|0h3jQSbPn$M}nnaW$t_+xyPMb=SWw-CsVi=drKmy9GA9{DyyS@Bi7WpZeW1 z`^UPVFa3Yr|2CCVb}EiuckQm9zWR#C-w)mU`G5Jn=WpJy{k#{x>94-!n|E&C`pO@= zeDk`Q1UvxZ*7<dB{`-%gvX!l$ojz@TcJtiKWLYX$9eAZbT<H&bRXDcV`<B=06#li> zT=|R(&WtH>P*sBlb<jPBkH6)gKK(7N3}1Bhvwwf($DUXCBFAZEmB68rx*K8?Q8pEp zT0}+bC|}!u=>1>3{h?zkfw{fV%tYtyuYV~KsDX`ekA$S8;uTDxTh+h*t`B|-v;Toh zE}58K4<^l*VkC#;kUSNso6785p(>)CQh(sW9Zx;?%qoQLus*oleeb8g`ddGF?bJk> zn@4}9sjUfUmYbUCA2ZOYiQ;!(^@3k}=f6A}RCo22SDbs=X$^XUxeWz`lsYYl8MVkS zB7j5iM1^;=6XkO+zjWPXX{K$6w)F940GPq)rW#QNNBHy$7Cv+5$s^s49XqILhdHDS z*^@8Gm(F)wF+sjVu5g5ohzOk{A_7DrD!hL$y`Simb*K%gK{%iVXaQ_Ik;urN+1&Kx zul(2#J)+rT0wjpiHX(U*1^EJf>3r#2iLOAT)TkICD*y!G2tBzd(jN{LDd&h|`3yF| zRkIi~L^InuKl3x!Uik<MLP{VIIgj3xFNi$3!ugVl4iyv5chD6$)&NM|9rDF9u6ch| zJ?tm=ak<;m@x-+)IY8G4Npm`V_LdEopTBT2KSV^%nHd13V%`u<MG?sid<igZrV{JK zyFdW%sF+%R{*$kc)gZ<?b!1uW;8J(%+*GSEU}H_qq+O{VXj1eSUvbI4V=G6N)?lDS zNI(vWfG7b-h=fR(&>ZJoF*z~2X=;D{cIQadROQS|o_pS<&z4Yg93(JQG!@>q?|456 zXB@<9`v&8?nQZTk*FE!L62c5>nVO;i0cfL{h)6zlfXb=$>$aZj%89ZwB^<#_m8Gu4 zfJN0*6wDy1K5%Tfuwl{?hSHQoS)baDc*64x4dAza>e@HG_akGm43Us>=L>(Z(Y|z# z$T{ar-<c{VrhR7$0fYk*0ivmL-Ishz6|I8WFvLUMs7ZO+<s@Zqp*#Rem7{?H{OomC zt+6s7B%-vx%?>Lf5ammlsfJ4GeiB-eyeikd#VEq6QA9LX*<f~XsXt&-Q_FI}F{8^4 zt&y7%;$PkP#gkx+0ASXDGSGikj>a4j$%=`x>|_)bKuwjy%F2<1P-#Nbm7<s!0@!W) zmajN_y{H0aB1+?lkW$wVkrn>npKm%LO8Ta;uWbuA-%$Y-0|P`~Op<d=R<8*>=6cW% zF|x3VC|E*I#Mnp`i14QSjy?074W@{whKSmzHIga3<1@G1vv>bV(+_`xq?8hsStXir z#;;5ekbH^c5D-jNIZKE`9Igxlk8PH!L0}L-1~Nqhyni{KGw%QrFl`7(Xn*^KJ3e>k zeUIp=n+P9OqG~XW%F#03C;*6*pkPs9P%&Xu5w5xFR*|`3a|D(UVjV+>9HXQ%f6t-i zUPLe;#L^cZ_|hGJ_|Jczobq(#g^yS+dsCI%YGD;NVG~YBV-84~R!k$M1k+G)tjw^* zNg@lg)WQm0fB?OML!z7RJ$l_mo4;_^-p|}|_f)6cwq;}KXu|s^p0(|cy$4RVAXDYE zl$iMdNuNvs(1^@L#Q|_C{~VZ_aTp2*t_P|bMFLBR99SZ=g0O!%a0Y0K&H>!GXZ5zP z-#67MC(B~v^kif%yr1jHWTza~;bB{*ViFU&m{(&8sWSwcDGwS|LLy`+v&KrfR^?$` zvsz?{%#kx?EXEjP73wO)$jo9^_bVbS9L>$nm}yEc3hypHW8=wmNYzqbAoX8V5|u_l zv$8X53>t%QFbRLcwZvLDfLXt)rBP}Y5lsXF;TSm#W2i!?g`=vTecsN(IYMMfs*R3l zqVQYhXHQ~fHiBA{yH_y7gj9*4shLA{WDX3F*d!{~Y8F{7*=X+AfvROjoEfly>!2@z z3Pf^5y<WF7x2`Na5jrC8+>Q;iN0z$}x3U)aHCO`;Dp-F~^Jo&3gL0j^pHlaSbxhs5 z)T3)cLiVzvCL)O>BVni#<~D5sSBR*or7%uJg?HOFZ&)j#HUK8P*)*Ye&@?I$(G-Ck zY3ieagkcDSUR9@VAt6x8@Tj3;C9kjP`w7H~oUg=0Ow7d0Arg@%b3~`lbPgOn!Bd-p zYF<-nzOH{&Z~#PMBSMS-8i&0>RVVT`rF4_jlM}K;nP~*Bq97_PB6a8vstxO=`&I3o z!xTdi98uxj-1Ov1f7qIROA(Q*Ov);PAYcj!-%c_UKtPdDhd2n4SqP9QCFE!hy^)zS zuoO*6kWkHxMd}bEOC2I1)-eJUjt~I}fe_E#Ja>O{yP&ihNQP!=$|ek^q5>wZhGkq< zja90^Ax2guLQlv<;;6tBMHBF=jxfa&N0f{!hz#m5)#<RPcTLWPhzO2oc5<RStN_3# z*f~WmOXMbH)8rdDcd1hcUQ?>7RpiJD29Bt3j-8rOs)G;#(G!Yylz{e5p`F4Lp?6e; zK!ks}f2p~DovN*cjWc(Cvuc!D#Z+^@Oxc>|iyBDAlOcH;HDeYQNj=NdVv3Uc5SS|% zaYPw(2NTiKJ48%;EmQN9`w1|XO-^_}ie+X=Dr}ORGF#I$5mi-X%^fR|rvG4uh~7Ij z?Gz3GL=`1lKZ!b`+$?t{YKZ8F5RqA1OH6;McT<|e*12gj^I&SsDy$k+f(eUd=3?q7 zWTI5FnvB4w&p`Cfd7s4t0HB(-KwISBOwA~JDXWmPH?Xl(5&#jm&dngAH<R21YWgqM zG^g^GB@iS1Y@SJFMT!6(Q5-3NGXp~)0yNT`!>bvpqIVfOPzxezhML1d(?AE0(6E0Z zrB+E@sYZo!97u)-qb60`3Rz2wq6QiO1T-K-MMOXaB|yvFadhN}gj7v2C&)Rw#kP3! zDlA;9f~Z2<bZu5J-j!-s)5Mrj!HkGBCjVT!rsdff83chEjaD5?=9^X!0C+VO(UfW= zU0&0h(qw^6SjqpYw!NXTGTBCbqo#jEZEx-FG&^Ktz{CiQNS-?5T)Kv1Gupf6!^hUt zw8KW7sx;sLqsO?mer<Moto(1ESW_zby-R)7rsQdBpV9s1`)RvbC#D2xPm|9a``~7? z3>C=CL{W?)IWAP4w&FxHGV^MbM7VqR?xm%r<>lq?wYJcI?9I&P=jYe2U+;ebU}a@x z|Ni~|UnmbJd1e9q2i`WHbMZNsKWEd~7i~WKqUrf9<UJC_VSn}LL#s!=dGH%w-FNF} zk38_T@5}z?xAS40iKoBh4d*@M`KO(K8JvjMj_AD;GxM{X&p6|vr|<m17mpKuV?BK6 z&M)ox@+WTl$h*U!`~QxBT+x4d<}0ti;^n`%hT+`cY2Bj_Ek1Pr{@XtP;4Pn7{N{bb z)e|RZr`K;@w`Kd5bDwnjg-_XZ*3Qdb@R}=s>Q_56b9Ha!qyOs{9{BPnVm0`F6%Zo5 z?%lVp+p>N9sr2)sZ++wKA9?p<xk!KMXn*PG!Mks{?ZfXp;o^X}ap8Z0r~UZr_uc;a zJ8%4(?<WBv(vSYeUtGBRg`?cU3=n(A4!-Y~uUkI2_wfic3I@ma-u02U{QUQs25nrp z;HTg5#WgBpW?=vN$G?8_2mbu~E0)pYe#MKQ^U~M6{c{i3sE@qm4c~XtdHgl#+#h(} zb-(tuOhOyWJa7KMpMQVt<L~=^%!VFk0p0(lkKJ(1MgX{A*N<Fs^~-lW`B}xplydys zyME{K`iQBrICJy-dD~9AWXI`eZd_Lo8i1G);+OB;_s&m#SyUg#Z-l#d@7}w2@2N7Y z{{374p+kJpRhR$ZMLVVnuLfd<25Or0RAE#U8X^H4S?T`XKYo9zSJmI)M=vZaoORY& z9spP})n(hp^-nx!`}t>_e({d&GZPb&ouc&K6MBaP2F9i=!Yn3|U@T>p)J|a0nxzi0 z4!qbO>^Z!6U}<&F;p0b_Pd%eU{P8O<d&Y%3w#?5s#7yf<y=edhPy{kc`~+-L%~WR^ zz{Yhmzx(PJ^oD=&k3Rg_{YRI+Qw`d+YuArH?a9|%_Qb^h#kR+uT4xz@&C)Ot)igU0 zO`@o@@S3%NK!yd@U>0fQu^-~W#nnBB7xx`q{^sKHp`~t&d17hDmW|JN!dcIG(gpL= z6RO(k1+?AlF`S~s7MhPpR9kI{9nJ6I@oxX^AN#jQ89;w}Od4cBfDQ=}2*;KINV(sM zWJ*L{Nk|KGoP_0!RoDwRQ%fKXCEq|37db;^0H!)K(b+UJy>t7P7$t}VW)bn_<XKxb z467>j-x6MlW(c57Gg{58MItkg1RFX+?q;VqSW7DbFxC0#sq0_-?0!}M(T6{GaB=n9 zb<&vAQZs)9w1&o_hN*{4fQsbQl#EQAsYCPTM1|3@2_r{@nC2Ta1Fn?JQWa9yU5t>7 z2uRTpd2waonR$9<wyuZHA%Ih17#p}6uh-DVF}ei(WlS#5yNuB$EThb6wj8HA<*&Wy z+1)DqkH5RIit&^Ml=>x!IRhga4q;{?nSrKRFff0oWME<<ssczRq=1xlJZ6N`kdgu! zV%w)jOKvq`)ESUg^`1g4W@Zo_IY*ejm8S3g2u>=2a(T|TQ94_L=Zt{G#P*sf{cpYE z+ItQj|Fe&t0`=7`EG%4j=JxZ?IHO@P5fVbfXd)y)LUQR<K$ja(=rECI+O7aJC}XYy zV2pp=wYG52P&92k{oJSQ`mqChzaB%C0QtyV#i)ReD7lk7!DnXUM4ILpgS35!V6gUc zTEw$K9ic(&*UwB|bJ+!*!rwFAlsnmNZf<UVem-juk<*s60%^Asslu9*8b~uc%h1$F zO$m|G44kq9bchvz8nZV0W@B5Pj*v1iUrc}QxOn%>x(y~As$N|UICW(bA;2JT-K(lj zQBF^I%jk7-PNVoSCZlmJvo*C^`(*Y}iJOIDcGX2^Uv<$rZ~fp+2bWeKn~6D3t#3~I zVt{03Mrr>b&xs_K)2K>8bm+;Kq-;DXaWd9Ds|R^_q8UC(oRj%8c5d0e(>bTY8iRjw zsH&bYxBUw<Qw23puqxKe{c3h<a;B3adSV}qq1<EW{95T4prHYd%V;fQFim^B;RU-M zT3mg{jbExBdHmO>Y>dbyQ$<`OrW_VV#xb@OL?UNKKmcG4N+=NkCK1h4s^03#(E*F| zo!R-V+ZJ{bf{Gx52%ARXAfX!cm)U<blb$rSdeiE`%vkK`O8+R~X>(H@2hEWIW-xBe zHqsUwCns8K&d~G(a+^sNk~=g!ZGQGQUv~9JZ@u@^cij6Z8iYuca?(VE12h6q)9ej# zti6ys5s2*sW-=cnBuC`Qd31&I#fBZtRHYfJq$XbKyQ`>j<S-oemJ?O2NeF+Ej7Sv} zQa9e1?SUh!lbv$=T&Mlo3Mt|?{{fD>=**aHbAo2u$I3&@f<k1qt1mtO85i#O(~o{( zsW&)DHQz*eq}1O+q;c1qJ1ePMpN%dpfs!M4o~X#gP;!6>CK86R>Twu?84x8UP09vl zpdu3EaHZc}Oynm{bCrqLC&GW0$HLpj&B~y@{h`(4L(OAP>8FnSA{YlMp&c={h5?9( z4ezyi9ViLfY<9AI;|qUqVavvo7ORcKn|J42HH|qobPG-6US=)ZH&10LDk>NvgCYPp zbj}qWBA4cxGeZ*)LBY&SMWWRG{_4?QRi%?Rnx0o46H@?HR4~zOaVdYX*>hy|VCgT| zGELAL6&j|IwQN>ROD-n~NQj#Cju0(1qg7M)zFYC#2abL6_Inl|fjjS8r8Ldm$E4bc zMg^8wylL1r`)5_fCRNQrHA#UDc^N7I015g@L_t)Xa|L?mTtN*dyyZ$ZW~wS8v8sB< zR(h+0Dnu4h0YJ?SL(qQ|u>e_34HQ6>G&j(#H;kXZ_t*v7=TDoYv{p2049>u?Nx4SZ zHzK73OjHwl?yf^CfB)I942IQXggY!(dO4CvL-EKYouou&l4R8W+jwsxa!5$z(D}qX zZ&F{glusIB8if?rSjS<v?k`oW!7MVXfts}Bf}8>yikcWGU?P8PND>8@_wMe8mcKbs zK55&u15*S*ML=tlQOFvbcH9x7bN3(Ze(vk{-**3lA;eS5q%*^)r3GrsglkDT(pa2Y zA}=&q4v}lPz63;#qKK*?5MZh~(xxW)1dao)Rzs);Rb5wgWEm03MpbU2DI^U-08}6a zR0B0iD!V!eH{O5MfAZOzPn%5VO0?x!BH91}9$4(&w)fy&d-u;wcIKugj~-t+CF!)3 zU{%S-Ct0HRCSggUc1cqrXAjco4rZ5}4^RM5HDE9Tb3g`WkR_%$;;3k>Bn-Lk*MZrv z9t^bMdpBowjHm%D+6agY$qW>np&DWeK&AJ$>^Zt+e)@mX)2CfN|IX?t|MraszjF5j zg-3_3@b27gTRmE2*|A}6%ev{WK5*c%gKFu-Lrr9y#GW@1O(&K#WISkygEnHV7y?4_ z+A6tHOkyO5V3;U7ruh)D#02NSv63(pu0_NoR&`~Fd4tSYL^6{@MJ>^!EZYt#kO2ca zAOau-G(&$!ba=7%*@z{^n{T;!7&s9jCrj@fO?5ikHq2$|J1YPH;c4e?+rQX*==kzu z6_6&^Fe2Y-L%|(C#>v)@8uO7RnhR$EaB2A2&?HqMfK22N9g+fqi3rycDv1MOR)A0q zStQYpSd=x>_nT>X;f64xU}|7M0A%QZ9FjAjBs+g38gzSofa&>-;n)%9$P;<zCOhSp z_3JS6-_SYN2H!I`%#_~kIeh#vYLFPmbT~)jlC?dRB?mP#Y~W33*(<7M4l!B10+J!8 zA~ubE04X{FB>*#F<zQSZM>9cyepQPk_Fu|?MATSRR3!1*8e41VfM9?I4x9t@fUSWi zNx^^C&D%n#;;>(MS9rH^(<Z6==zKcUB(c7nVc{JBY@MB$o7{Hm$ynPD_d%v6Cek>X z=1)6%k<Pto#M2hfmJv@%ctfgLOcGHFksO#qrJVZ;n*`xt$^a0Uhjq;A+ECb}xtFM0 zY1(1rzcY3iK?uMDImoG&19FHMRZrWpeR+TN8245-ZaIDF*x~8P2}DgpB554Lh{)7C zGV=($^Nh{+9y-pVj~>M|aeo_5u;#R|K^Joq(+n~uJI2~d@zlVO0MIl8JxPx&O%)|G zmZ(xo914fXvO1`(Eh1C;W8*VbqY~4`k34ARO8_GR0y;y7<de}M5+Kb^&sCr^^BaGT zANppLf(VO@%MhUfsu6*iIRbEVljTL*x8DBXp+|zAe3J&{2-S#boXw@pxd$zmPut@} zY>XP15WbwrD<Ki8%ek70Nt9Sg9E2EpRTW}vQutKf0AZ8T5t*tY5~893o<OT>Pgnqe zX0jFu(32|?%r`x^apm|?H!&l^>P&xB5hzbo<O6`nCFwhu1bE6h+iu-^P)`=xnnW>c z(6|y=ewZec#xqGU98VPUB`^aw%~VwyXM$!<NV$?&N9KMN26c?032;-hBvb-28u5bx zfWaIP7yyB(CJE*u(Z*?aU?v6;ahSII=&>W4H*c0u1x>_S$kSMPFN_GyPziq>kO6@4 zg{N=4_t0Y7;5ji-9E;_7L^nnMrlM|=xF*<V$JC%#0OQ--kRp*9>5EE8q~<zu6+<0a z)e;PVsYF6FGEhQF{!AO)QbZs{5)@RzHGIlcek7iE@?w!i&4wW!I&^5=)TEj9tDt73 zH}9OoT(G9$K>|pJq8QOk>34r_-`bv&H7=l3wC8*+m0hi?&Z7yC>JMwrZye*0jv=6< zlYGV)7&fAz2j+CxrHB}ULvoH<zybgO6fL(jkWdtfNJN!PoT{iKrnxn%Y&fUHz(_0% z%_v1Bj8vD-0cePvst!#j(2rvt4JY3@Dork4IQ`Cj2T!I!O<ihDm`{KBXTH;@lA31N zGZh@k;Ls9;lrX&Hv7li>r;SbIcxH*JDL+m+@AFaQXq*g`%)pr`A*m6fkqMEgdZXk` z%$trpWOKStp`sSW7oMZ2cP=oisvsg#p0=SJi}NQo7<oGY<DBb&oVjss|M8U*OAQ+( zK5Y&yZFFl5&{{KWLXCe~j&P7p-)&7XbBh!GTvUx)(sk;Q5_%%=js(FBJduDj=#Q!q zs&lAnP7{RIe726a?i!fQOjV<3=~+}m;RADmy3+?Cjk;=@r@nAB%?j2`qvNL8$?mXT z9#m_iSe~fKxnfhbHd2E;W)CAuKaBM`n;K-yHH<QsT=JT>jB9^@)D<bbkpd$c0IDz& zH5izoDxn%!bK;M-0K!=7w83d1k>E?!(mPR&g-_<3wkn^=OO!FM<}{<Wp^(p<M?gRV zJA2FgZTk+V4{1zHSo5HbHAmy++zp%amb4{hTT|NW8U}YdtT0yw4I5l-<kef*Awu## z*r0zbNT{MHn9_eOq$E>tnuhHtU%x%DHkq_G^Z7}Th4&&7y%g+A$qj)~@IYv!g9c-L zZOkV^rXQ%f^Yl&2V*(P*2P<nc`y<I)>)5GZSt1SjZLCpaqf{~t<}{&Bn^6>N^s7w` zl0E~012UJN!n8UCq>Nl9<csnkq*0z582R<q(t%J7oT-1L!EF*R6p2`JiD08{;>jrU z*feAT0I_hmacU9(JRq2g#-M2w$~b@hX6Iq8O|7YnGR)YZ)@xrHzcW%FSbHWV0Hx`4 zLIVN=OW+THrpAC8HSKV0&X0ugY}=atq8XZ@Q6qsSzNWL_6Y7@z^Vo?9V-pk2G<`mP ze4;GcVwHcDs}w^U(O~OjMq1N4#YV-oJrtuMsN{o0nr9#x1*|!W4BBqzc!vRT?U23U z*zum@lP8uK1kGQw)L<DAt|?h45|WV`5fNE7&aBSZNEoe6a@(T^()d(6?*jm;!W`PT zpt+a;J@Je+Xn8tgmNhQ5@qwVx(W-6BcI+ivn=gOmZZ6`egVji|J@z#Jo9||<9>$wr zV@<-G(j%@tz9Z#8sgIke4FC^Y2#h!SlLncLv6RNXlC3?8ZrsG+Vb3(aVEjnCc6tid zoOU->jy9$0SmV#qF$M|XZ7Z7gh>51q$W6}CWK~mGk2j=k)HNJc#Z9A80Z*JaLpVX) zzS(-Md^YmPe4xEE=4)V$badpPVBBlk`2QtgteJk|YTECdmX5ij3a#A7SW^lOYN-wX zW$bfC3B8Ruy^-LOa%x)@*;s>iyf2+y^w|I319$J<{qV89f4_;E@6vlu@i*`hx$5?R Y0dc1yFeFQR!~g&Q07*qoM6N<$f)-Wf^8f$< literal 16906 zcmXt=2Q*v%`^Q67V^!>+D$&-~nzct`)+j=#U3>4nM?-B@t9Ff0RMcJ-MNzaiv1jeQ zH~)Np=lpX{&OO&Txw-C5p6C6%-tSMMG~OtZ5i<}2006SrN^)@A_T7I^AU*(q$8a-v zf!iUlex>#b0H{nLxi-Cz+b1+rQIx}NagPhx=3v~0$VExd9d`ume@{FZd!`TWj}JUv ztI0o@dO!tWA=9~yp#cCOfY)-bw0)+we|Ud>rtA5lNeiXr>2|h}Rm67uPeOUNAnR2d z4F4$!FVNiF=Vj1D(CSp~4%_r+YsT*slX$8x`CkK9xZ|t@GqQ@U{lvU;r7p61#b>2A zvmTpDlVa1ZV&}cR&vZ@xri+a=>y)>&JKu~)G<)w6N_$>&(@{Ww%?dk`m+Zg)-dr8H zd`Xr{^Wo!<vkvm-CdjL+t9#ASeAg-7Kep8BXE0VLQ$8%|_InK%8C>wn{htS~0e~<N zyz6#J{f>FS{r#Y~VOm69@?nbPK!ejhx>*4aKmgdEZ1r7FU(5ZmIF*TqjD>&tRa%-Y z5_sz^bu5nAYh9aVmZ1cwjYJSe-~qr;Bdpqp-(`CDaL>7S>ls;Jw0N8t9zeS^r9<)5 zdN|z;rOnCncVK{r`^{E{-~R8(yVI*OX8&sn0=#|6y^Jy^37>OMq-(9d-rLV;?VX6_ zpu>vW%i5bObn_{zh}cW79wk4A<0c;oQ{heYnrSQ#SB`2C=4iG8v)960iroS#0YVRt z1rjcEyw88%x}m<<5XzlLu?4wY|MSHj&0X%EK>%${o?BZF&*#W7NqwG~R)z@PFqgj6 z?CE-khO1leQ%{S<f#cnvRJ?(0|I~MfKd+d77bXSHHl~z~S1{?_bu-@_rJd$B`V2i| ze9$Cbm7aVu_dx2i(o=Sny2ORebF3cs^T6{qbzzfzN9<0+X0Ls@PgOb32fl-Q(zMm% z<+Fn$v)D9&rs)%NYpbD3t)$40W#}L1<}$?*L0RETzbpEJ`SVq2soOs>jN{JnnPSB3 zfxDAz)be-$_Gq(=ROa*CtLtvZ;>XD2{^>m_?**DejEV1BQJeuS9W5km#jR4~ZB{x4 z@{~P!vn-;?K2AUHyWHl<=Iy<T6OXgkJshZ`BLS2$O26K}$&LATNBVkcK5+BAL}347 zFBk>q$jua~H+%OxGCf6kQm|Z(Me})@(ZJ1=aI4owztMWSb?#SeS%+*#a%JF^u^f;J z@ghap<fbcaIW-*Ma~x&;TjmY|SZGeTW>1SdIU}>nD18_CXTq_5?l#Ujuy*&n2_2S; zZGO^c-Fmz0&vkJy)aPyD)?-tyQ;=-j;BvZs-oqrWaJOhbA9R}XURwS^SC`k_<Q`_v znfdb9p8%*6eFQq4j|ZDd|JZnBXvi@mwUj+cE9u_7_wmb|(TAIJbS4w-E(3W7!GQ&{ z&ECbY|MJI$qk1!)F^f(1&Ik9H@xR!LLFJTtz_pJ4OYMz9_Tv#yo|Nc{-N09xqv`1- zlK~ecY3g#qFnDhRO_EH|ZQcNrwCnM4x)u;-Bn(2Dg8g#Vd~*ogz61lIS#MC%7lZR? zgXW9NEvHVfiSGq!ugU(53F~CryFS`D8GPHTd%J#j+q&CyG>72Q<tQaY{e!WCxuWqy z@SsSLG6(a`&>5+b|K^6GcY=}o;r6klb7OF4^q6j((aqWkLn7rbb3YK0D?(?SQK;Lq za?ia#90ZHxC1vm`c+36o=qM&;Bz|jc>JzwNPxA0yH%XJfpQ6He&~8lb<<G0&Oc`L% zm2mLUJ?6`W?%U&nHP$YZ;K2FbMFhN8xz?}@v3Zi=h;?k<yvk!n=Fm-`b?aL`qi=7D znR|-_f{zBfrS@;<Th5rAKNJ)cG%F0JZBNb4<%qku+^xnL@Iu$v`eh*k>EBAf1}z9P zcw#*PfD(_o`eNY}Rjz2a{r%7<AI<{z@3mg_pJBFgZ+H6$VBmVnbk);zYv%d7lTQi- znq|6pfOJ(I<#ZE$V3-W>6$cr9tHvL7BawRFzSH=4^u|Wi%?EYA9PbVx?99n&Jtarm zRBh&I>#bd-Lu=Jq<8BUSw|`EKr356eWV)`<2+zpK_^Q(f2+P^UoNU#D@_7}^`I6pw z^cl=e&E{w$?#IW+wcM<#6eh!nfsi$iy{&GeT;j*4o~#V<TbG7F4kUG$R#$*@4O6|9 zxaseROSg<tjb08*X=(8bclw)~oAou%iq%c#$J=)&-gCZA*Z(BF@2ZOI>dgIf&MrfB zr>4c9g#;h!ntU7G&aJxaHt|0dF!5PmWpomC+g>nNmwFEoB;|3^>yhKmR(72Cq7Tsk zQpBXIOP&0lzg{ko-WXbN)OEf+dLVs@yMJnk*M9~{jZ})i-Ok<K-qLJ%=;#W~^3oo~ z>^Sbc0_&8e&>8zIk<9zu&d){8oSk0Hos{kEZ2p!3@G7KjPgJ_Et!!xPBM``sp!TyH zvl4JjI!w9$Vs}<pgVj*_e7xXl&gX?h;NqVtM4&N<llWra`DU)EmXW9n34&1*XdYWa zSN?1tN9QeK$y-wG_hf*6PUhWRdF(8BfTu~X1G>q?nXuk13ooQE4=%zRvE<uh9@+2k zLkg24Ocx$VS(3s&+dH2bD&jXd?Q|Wu7efiAg-Kh2wqYJm3cqeP_Jk)$ozq!&tGC`> z<}gja*x6%Nt$j=e`wHq5G-GOf2zd8$`u31ZeXD8Lx9xYv-${q7ik6#<)vYv`ho=S4 zh~K#hCTPB8?@h4)5(L4M2?2qkUXKVOc@@^Lf1Mv_QBhH?DUQcdN5`~CzTflfzA}6f zu=|rbkrK19YG7A8_4B6&f1)<^edtpZ0X~EPMF0Q*p|G!SxgUu%2wSZSR3}|@PDYhX z`p>z|>$cvKliwb6=lI;xd{QmC@_zth$lxOZ{1km41B(Q~a4&_(@sf5V702(*-?=II za@x|6#4J;dBv<-K=#}9l1f>lB54V5+HmI=1fwGP88YZ^GM~NktSr<9FC8=qtxbkgX zRvTRkDr^hy?1Yun1s+9~a`JU(AWl-S#!pI1gU%8aD_SlIVZX1hzm>9Q2@ISWVoxNn zo;!X8#ubQ1%@3c30Go{8vg?59&SnCo!)*9kfq({H(ePEP;^3{D*2Sj&o%&h#)jtQF z*Z6BJr0og?I?w4y!UIY^SLmqZFgFBgREVRLCBJN^Zh2LJ8FCChYY`;^NKaP>mzKWe zbI#xP*Na#S&wE^5MB#3?o;+gtpb)(USDyFo_(=E)Opr{H{<?Gi;IzJF`SwBB&%5py zfvZni?-s74&ws9@#kH-qo~7s-2byC0`^X=QxlE$cu5#$$ex`>3tl70ot{h0m={log z!BN42>guwxYDKK){8{U1Tx;{0<6e3OW`Es0!J+lok6+X`9>mY*>NFCemb3Ln)p&hl zcXx9;njY62(OVGY^t3p&{D|i)FKKtBNx(+>#YKrp;6lA|&`P7T)b;+F)Jda%@X7ms zf6hxVbD<j>MDm($jc*WbGQA}m8?{gD9h(=MUYaMnzOh~Re{625XuY?-E)+X7fAQP7 z0t^mVry`%dR`IT1Y5H9hH+_mZ)fc0uf^qZkth!|bWWv8l`sY+HMfLYfapepO-h0CR zEH}OJd+;5G`Fj6D<LMvfyZQ$SOwu0R({nj}tbnk6#@s8C*aLxqRwZ6TQ3(-YVF9mB zq0%BKQe^Gb!oZ(5JkS3S1c3y~J-1%2xMfFBlqIX&UGM9jF^QG2i<owW*tNCZoipP@ z_*j?My4b8qhzVtHjC!>7U92(=EclsX(o6FpvEd*=Qpav%!z}T@)rp?!5%-H;4QFx7 ztS3oGQ_zO1wW6Z6V)wt%e~VO9v3xYu{f2HOqwfrfIi97(9`TYI%~xP&Bi5*Z*l+9k zu}=UZ9~bC)D^5;Mp!+d`5ahr4i#=7b7RTjYIn^;lVF~yN0mMQT7$VEs%|<tn(>nNl zHg_*8gNmWW;>!B=@YM^T^x1_vVd$NT_e{0#$aqOfPjPObhn-*7S;?MkY+@-0fl!Mh zty`H3Sgs8Ml@h0CXV)x6(QqjgF0Az@<cj(qGT&aLLkjO+LF3}%Z-+iSKL0m=yE4{X z;kPB(dOfk6AaOmrCt?f)K)_rCRQI`%Hl=3k8EE?^bVlV{iJaJUSJ{M4vq}qoqvvUY zYP!_<B@C>bFkaI4B^x~>#R-qa1#Y^Y9u`L^xOjLR@7-=Du(I|CZ!ZV0G=vs$@EK_# z?n421zX&q<cv8M!UPibzqP02A(^Jt~NOrI}0PiCl2t|_O-{FMx-jq-&C$XH3sc9Q8 zDKKwKOiPRIO^z7a_FpAkd_Q+`P%pB}YwsbK7OdBSGcmHeFgXZB0IfEg+8_LhHZqr- zZHb`h0N(>pgn^gY(*OV^j&M+xd)L>!t1<nR>tBtxn9!VEV~!Pp0cn9jVGVS0eg!qj z#SxV?1PN^az&vk)7L|5|?PO&C{Y6ieQfh=A7ufjaSda1TK2@QBo%of*IkXfI@^PK2 zMpzp8Hn40YgaD2Y6<G^&ryU+V`r+52z_GK(sPyzxR<*O_^$8~DHZjo?l)o2vmkE!Q z<416FU%dLVrC$QSJ2k($8$<5P1m6`QjB@q{{?OTzt)()eZ*T=*bavMN`q$82(3yQW z97<cwpRS6#4V`Au`7)7!k1${tcsZ7@7i=Eu+7?O>o&VNqhL==rgqO8P?r?hkPAa)Z z0PA^SsjIJZIK=kYq|xkab#*tnVcP}DKo`C3EG;GF&8NW#2HU9TmrSDkI&MzRFu1pN zE*s~{y=tGQPNntQWtgrpwb#{EXGx5u=R+V0-h#|y^LdF(XNbvZ<TZtOtiY9@OKcgS za=>(x-q!10mGJgY`H;S7>uSeO9|kZr-piMsTsq$fWt=9fVuoFIGz=t))c&S@>anQV zUW8YAjnRldZ?*Vy)KU?A)Q9}CGyQ^jov~)=fc?<mr6DYmed-e>j2%x#+Gzp;145q? znEZJmb=SU33{A-h+#Ee<NcpoOhDwJ0reaH&3&aNAyOB+}-k+|Y^TYnmsI6NLILd9k z*r>P;!F3u|PzaY|MWT!j=L+h2>GC9#G74E*ihKuz;sYQA&}0|@8It_hT&20-3BD5G z6^GHE7mvif&aW?$Qk2!O2qRs*j~Ca5D7ctFPzL;^K$;@><m7bzCe=G&wVL^ES^APB z>|n>)&)r}Rf~)_e=zxpbf@ICE&qcPCpI_OoUj_Y!J)#WrJwBU*5CZTBK=`0%p)5fB z?ppg=yGBE9UF8+GJma!+yl|j?Q9OkXwWX^odfeqOyp%a2HC^o&Ra2g~m)FCG<>$BL zk1<y~XI`G3x?2^LkXPsy_vNWYW{J!9h%!Zw*@lgX>D<8GA%`L(M6HKHsazBb{5io| zEFUX@b*y{84LCv&820llaNgSpdmw>5%7W}Sg21noA_-)Giw&4%zp)IhddZPN-1K;P zdipTzH3(U2C$Fg;OGLKO=YO^o8XB5NW0bbrbUm2(KCE&s2V=oGHX`7&KWO~?8Hm!9 zJG?NKFmz2Uet9ZRp~bjjY->!voPmik4yT$Q6)*a}QIhSyZyx6QIAZkZ-n3VlXYrhi zY_Gt^xn!$H_X&2!BBKa&IJuT97PPc(u-7P^q#S%%ohu<N^x**^A)HX)?>VkyrRQMw z+xuQP8MbPU)YRGwSAEQp^zJ<id`{3t040Si#C{Mw4xB%Fg!ObNb`su<Q|LT-G*5mF zA;sT(fP32k@&a=Zf8@KDOsz}9Mte<nlGAm&8bW`MW~_7k4^e5kEjxA1FCAy9yyv-s z&(uv?*La-Y7ZjL#8&}(Mw0^hRS)I!<mPZ61PdwSeIzD>LP!!7oq+i2HCx>Fwbl1M< zZZkd@HPi=$>#a@bWs$nADYX3+MulU=&;?qU41%eR@u$~eZu3GzX&URYiZ;OJUF(wv z0xvMf$)KfB?_fxZa^Q*m-T5rD)NSPhW(hy93;?9waaL47{OB@NGOlY1Gk3d%#ypn! z_`mNRiF42hQ|u5L?F0<Xw}C~vp)96fhG`%Wh!Hh`xmh((yC$x@!hmK-J{%H&JR(!x zn7Q7LN>VH;?q6}6J)1w9v*7n#`gfonybFb{U|WxAkb~B(*PbFTUwVyLmWhcqebD{p zx7ye(y4JxpZo#jI7?Z$Kz`K?YsMzASnlN5FV$*e!1D3IP01zxXpEFt+*am(TnHu=$ zV~8s)K~Rfkg|_mTa*wB@yrwQ`#bkr2%Ad$a^i^%eUB|)5n)dyh$=vI3OT7WfyJI%# zJCuhQiDGw`Q)7T<2^>MxZ#At`VeEZ8@v2$Vq{T{>KM{_g0Stb{DyQI+$r=d^r*mu8 z^z=l@u?&q(ma`L^a{~jEIo7!OGm-2~R=><5iZ&>f`Ws3&Vq%U4r0@P6&xEZ#=xMmX zJeZrG%jp2$t#nH_oh@*{TqKIjCGiv$yMvCh>s0{pkHxi1CV?z!;ghOfK0g1#>2eKg z?Tk#ETZ`;~%fE?T`|VHcf?P2gS>BI62&E|Wu0sgu;4W<q3oy5SR5G~W)M2`dEVIsO zlD?$}h3YKMy~W{+<&h)#=N2z*&5%z4a_a3vLzQQ9?o3D!loaY=<bT)Jk&Fk#Ym?C( zlDU(~d#n1CQuciZ2qv#dq{)&HL4gl^1t|Ooz~`_WaeyINYTHHdCEr87>Tq=q55t3k z{QUS$zWw1zEhD3Yj?U&pv(OWTJY~fLonzQgu~Ok6$N4JJLp`=P+1%PQ;Y%ElX9O|b z@wxq0+z3RIn19)r8A^ZE5Q0p$0ijUp1Tgkz3t{kH8}KD&t--0o%W>LKB&c?G)PWo} zfjhVXAzhez&;2wQK45WTVxnj)5dN~5{n<wu<729F@<+v*^*0~go+GK@#1HcZh3-SC zk+JTO!ekj`yuxG_vAE~dFkl<5HLE}<kVSd)5#!0qNA2wU$pG8dcRuFHnKw(SR%g4j z>)nzU!MEp~y@tUQY{z@3VFO|G&R+j7!9q&vi>Dlxzb%w}^OktH5pQzn?@Yw=ELbp( zBM}A_%$Ye7h`0I-kBu9BN9r&bJYdM0zbTlQgMN9;&ezH+Uz>X-XeTw%(}1A(0Xeh( zzl}8ORg$cjJG~!yt*yaUR;w|&=ha5I(lFb4h67>^ek=RabC+*o5BmIb=I<`&{AO1T zWsuY`>hSdpJH5)#Tbg_KI!Izj;DdfGQX&mi<>f7J4aK~!_uc&;V*K{EgMCukT5qeR zn{K+w)N`aR5=<_a#{U}3-PU=ls;dVbO`Bw9<d|pO1Mn#jLrY7)mgbj~qRTQ$*E2pT zTZ)TcQASw=+44~&kU*;^vx-Vi{BHhCQn9J$2K<}sAe+8o&IY{#2A`6U<6vRXzq8wq zpu;uhtE8wNy)FXSM|Qckx0>JcK}PmrWD$7=MV5L!Z~q`cz&7kR24Bkol4dXCT@kXb zV>y;e&%XGS4*N^LOXU^Rp0wu|4X5jE_jZYz=4q<n{VQ^*tLvoToBCjZ*0)GNDd&(7 z0ufonnSsvWlcY$n94^^K&*kjiqS14wr|}+Qj0tRJ5m9`*TZ{ph>5BCZlN=})BXxw3 zye97R_UEmHWg8RYgM^$M3fS%FBq=HB&-tsrI0DkLcboL!ZsB*70O056yv-(M-Utv2 zfe@mSyFdUtG$QcvZ(Zkdi4JiLg@Oz|6q)>q1oNF&Sk!m1s!zcd{AS>9mztKQc9%`% zTM^$)r2@^0(V1Xhvpe-b%kv!Zz4P`pY1hN;`-o>HNLxKV7>JG%@UE+7ZWmo{;8kwY z+SnQ_k8Tl2SJg{JZAGBBN=xPG1z|uyBwx=Oou`p{v4CUxpYsd%<Om?NBeL@kuF{*X zn>6`0z}-1L&*l?B4}VOxx0}uIPYH1J2_hGaWkQo3Cr2%tpEn;5&*Hw%8`@pG9`aG` zI9U_%7s3DlJW2Q~nnp=Ye1YzNoX@_Y-2~@Q;fU#cCM!%We@})xrFTo`6wUC5Nm~3Y zi4`d!t@`XwPP~JJlS@Bie0L*wd#~x})L%idV)wVFS!}*4FHp8$4|#*nfdo-JdSZD@ z#2fp$)b2zf?%lJ;33MtdfZvOYLbdv}#%20C`Ss1sb1qu0N3+h8H%S5P#x403tz4)r zeb6u*)z&!i-D_pmxv{m?IRviHO+ykMwmg-^2Y3qLjm|<Yz+7mbediW4%@W{v*7Y<+ z)hw1OYSjMftft=kn_hK1zt{2l)`1T{g|JFWbe_Gz_(N{mQnKzlY=y&C(U>DgHr$wd z%(0tMPsrsiaIa@Ytas(`AW5-%AiGF#RLE#dFpLNWgi))pGkiPgcq`D36`YOLL$U+& z*m8Y)2b1d@oNQc_lwB4ELr?2Y8)#nWmX#{&JoIQX*7!EzoCV@DFG?Quyn&;Jrc)Ym z6S1B101dH9g5<4acS(hDOI~sDixkzZrg%PEj<{sF+-vcVf4@+|<RW3bLmo^p0Q48q zqsIEVYW$j5)6&7OaUStESz<bzv^t~}3c!^#T40;5gGn4n!q@3GzdjA%(iOeZ1RGQn zo|(Z;J5R@T=bQ)SeKrxOvbAxs^!NW@+37huD5!=&$Vc&V-G4F)L-RtPvW)yPD?)E1 zVq^i72fs#DgPfe2;N_tF?J3ub$tcnJv!<rYrY1kCDAG0?Y!OX~-1ZWZU@iGTzhh@_ zr{VgLt8w80d5e^gP@~n!B_=0So6~aL&%)<<z9zfd?Nj`L$o#K%$=#bng%s@o8Re4Y ziJ0)s?QM&^&u4)zvfr>RDd0*<qEg|fbX8XWBOdRK48OjV%v8jqS3o0aYMFRrDZ6#Q z0?pu+F}kTLM<b(_C<_)?NSYR$;2lAdP)sTaN^PnC8I%vAeD)d)<*;ngd_heD`VGs2 zvvZFzdO|H`qSe#}o*;F~^>@Tx;_s779j=w>#?467Rf<Amqs;yJ)MkJ9egK&{1@)g@ zqtO^`epCrV*Hg;ZNjh#6H84<E>ep0L1)(Yg2s(e(pDVp}5sKzQGbcx1=$G3~dvaJ- znmq^_98Wc9@w;i0^+zSQ-eSlxcY&=#*mME_1QyARjA}@Hg9-<YjL><g#j$-VEv0}# zkPRmp8A)NFS4chwGhhRP#+eMM0U}7kO`6$a?ct+BH0J9Kaegg2?9VTPz;K=VvWUk9 z)mDy`+P`0{yoZ4GB;Ed{q&0vdLE$8}U8Fdi)$Zzu7}1u0)j&V1K>w6rf2jt9Oe|5b z@zp25@d3b3*X`=%;`qms3k}ad4iDm_nTR>A4LN!BdIb`NtTmRF7A0-qc!l&`yA}bJ zJYtoW7B{(SQX|@ci>YnPAbg?_>Z<#r0?!HPBw&GnA0mT{tUdR=A6Z*jZT=pTweHX2 zPNn6rM7~qg@<gP-sbgYdRD1`>Lq39VtPQ<|t2rOyAB6#3yW+DY@Bk1bdk=EM7X!iv zOw5i63rV)Mf8_54D@MMK0)zm5GvAYh+M#m7;G0)C=~kxAiStMdIdpnelKFwqw$Jar zuz%)XP4260+Im0@{is@$A1x!11MK+7M@+Fa`T+n!9t<uFVzA`lreE2Wz15l5{<u0~ zJ^y^BPZyait(1GsZ-bx)7rX+WW0)6h>Sk>wgqk(UZGjdRjIK3V9Up}loH|a~S6o&0 zc6YUCXjq<xBY_cuPd{thBY;pmING@7^dilKi~7(gdv?P^ETvc5-g3H<hwC9l7)WkX zbS+l#mMiQXeSs+$i6aA;y~dm^-}tpgC|L*r03QiS)==*Gynp>=(I<x)0Pz=__G|Lz z>jH(Dxe_S>o<fjW;@-4?5Euh1Wyx*M%v_*<1Be*f>=m!m+i6#8=seni8!)PA>3<zb zbh|nfYbJzDD9CM<iofYN%ldg{1D2D~JoX9)K~d<n>G-_{Df1cr6C-gi)QDaz-<p}( zVHWIrku9<2n;fZo5IIv20N~WPq4r{Xk_ri3%Wn<--WqI~_pu_muWlCDE(7c_7%hkF zOAdG%vEhp`bvw0>U>FG=qwtn-+UYZpgCygh!2Hp@-i9L1GM(eyiJ+3aEy@tHN?vjC z$+>Zb$fb**#!Ub~158NPJU2UA?PjyzQylcPPzJO+<xAgHsPUUl<$kv-*gBD41^V9= zBMjZU%Gna@6F4#y2jcgNpd^4cNb=^O^$Sz5Mpq-6<9%Rbrqhq|=H>^czt|;%mTXXP z%wg|VXfkek;qC$|MYRvUNFm1T&HG*%RbcAs^~+t_Xb|+xOLhR6ypJzvN$MQk`}tVq zH1iwqaVWSTIU;Y*7tP!NwM?$!wJ=pOQ0xV-!631eIu0uu1LZgm)^(N@p&1UMV`Ynf zH0!K);Ar5jMD+N!zaw+JJQdC|%d66fvMZ0}yB+hs+hmhIA;M|@ERfsAGu>aRWg36z zh+|ItQuvBEOHDr)(I?=jO+ra&L}eIXyhB*BS`BCWGDMEJ%~fE0HgUGmv5%>~#q+4h zF$3+|Pe(_0)>2n&_<ZhkwV6mW$7l1y(Z%pp@Q(0PK;aYYits8e-71ejqB837dCCK+ zqYL%Bt}CgZqEv9SNqwc^bG0{W1h3w8O7_(VstK!UArMBwq#YhJpSMKN*8XU!2q~1R z=64V!eh9G6Oh;FD{^w5@XLV<m#HVtmvAUcp{%0-xQb9}6TxdP<DvUPg^-=4!O0cu8 zuA(p?<SEr_0ejUq@obbF@|xUSL3h)8cULb07t{6v=>Yt|YafY9+vRasr3NRDZw{lt zpRez1^oaVRwK7n+`5yv=b;0`SZS+k$s+JDq_?<e*W+O%9O~Kr&bU3$b;Q06g$6{LT z&T27x!G~JGdgas17qbcH7;*rFtQm9F#AR*8W^K*pIcsBY-wm8SJN1@0{q-bM*lA~D z_aHzWn5g=6y2`Q6F^vmlR|}(-*TRWJB26>Ckt)hWGbqyKm}=}XMZAl{Mfd+_0eGpp zJ}*zvJ<pO3x_$@p(KYrw>fdQ@=e-`amXZnzT8$T;otd50;-;ZM`W#&%8dc4fFUuc1 z#1P~0lgf^HFhsn+C)?yCakzeljdKVAoaby^8B-HjRXH{lkw7^}I8abjIm9HAHH0IR zMkrFmx>n!wdS>I^gHz+r5}Ez~<~+8HI=FPE>Ta;P=j$8QbY2d#=lxgn9iqWk71zq# zLkbLD=60K5+iAkHKHUkAui{JXK`edIByEP+mV+in5>$K1NcW3LU(vP(Q(?mj)@L6; z6fn|R4Qd+bOf+5wN*-E>6B_o|(lKS!+X`L!f^^j@%e0-{jSV*Np6>|?=S9xCjWw=B z*avUK`y)Ynx3v#QWu4uYQ;B0t*U3r0H5}l;PQWHb7&YLFZ5KC}aTy|T-axqOG0bCO zaBFt91?T>By|p0SI+@}x6L#~G;5@+5!R0V0QdIyGbd!3EX?y!88J;5@eCjXl<Ku++ z!hY@@yd^8kr8B;Da<|;U%!zGj$ioLHai&<}Cdl5LwUZOF8NWUw>FdRMJc4W{qb8?9 zIK6U*nX4_IG;_U~j2lD51-!>|2W_aRs7MI_5#ZsjGIZ?`AOxg?5W)@Kd{k60j!vL! zTdwcv!MzU;b++n~4~Mg-cZ2!@0bx%R$%78_22!`)81xcz+yne14_=UbB5TyGo<jgw z=XA2SH)*k(6&R2jADV12vq>@i#j604>9r{_<mUb>9?$d4ro0O2^h@wBBpSy13j8Vr zf|Mav?ocR5HOb0N&o(yfosMUQ7lAxFS9A?)uk__LMV3u2rsnq~UA`H*Qx&0Yqd_dG zOku5OnS0Z9K@)Y19}*r@QL+<sky@_oEB)8%c^szQqAWZ4x_C=%l{T(|DjSjq26W0$ z5a8QtV>bP7@7lr_ew=VU1q=%w=e6Z!i@(^~-Hn6eY`q_shg>h>)cbWe(J&={v3`*c zpwg0{^WdNbNpWE`A;7KQIMC4qOdJ~u)0i2>qGykB7hL$;{P5&tIVUHpNbh?jD3Og0 z=98mUhA10zE6_Z<m%v9$W5dmr)92~sb^N)A=&6P_Vnh(@N=Lg!{>aDD&Cbissl?Eo zB5Y?vqzk0PUa0*kP|oEsfm9gK)Z+rJf@?XVxi7Bpye0L6Jk`Zg7PD|_BWb$csI-Iu zO020Q7Z<hUD=Um+Q>pbILEPPSU~?oS{zuO2SM@hExFWl;aTIf5RypM|1H%6p-7T0R z*dYbYG?GppW)-K-Pw6OY5@S?+ljSD4`QWE3SB%Pv$1sDmH?fS!V12tM6SSeoHUqt- zuR2m=MFCv2QqzQS6oQ~@Spxr2bII<yz7<&Bca8F~%{qf}QK&Vaky@8I9H0F@-I5t2 zrFjh^GweSM;^j08=YF0oD!fCeN|?W>14_<d3B;;B#pyaVwYUe+6v`SKX1Qmj`Eo?h z2|-G2^vlWNp?m%q>*+VMrw-lr6UL2pTF<rbd#}Plu>Qtm5MW|yz1M2C0wJG-YsOzJ zJL{eGbe%^B)Ktfq7~qQ+KMV(+@TSGuZ)k^Uj=SJLFZ`%k!#tKT2cUO-Bbs3L2~zk9 zObDgQQUO$PlojyY2fXd7H5FLIe`-=HFJj7d&tJAhRhcM+QiUz$yN-PW-oGr8sBOwz z9$K3Fww#Nq8mtWfI1E|<BzVn%3W33(-$8PahX}Q2@VM6qsE(>G&=jr=x&MihI4Xpi z(rnTJT%yf6W_LnY&V8IKUYLyA%YH)zkSW*6Oi#a<hh5Y^9q<r~yRC=Z#-vc)ais_c zcjaw0<=F$ney6~I`7$r_L45t;AG1gX$XPyI+?n9L;vL1-yYB4&?#;3DEitYjA_9dG zcQxf@^7U15cMKxrWx<O3njnH#3(Yx<gm~tv_)(x?L7{A0=RU8^$_Y5eXMZ9JWw!Ba zBMR1dY9cF>O5c3Z#8vNL*z9H_FX7ZbfE$|v{Y*_?lHM5lJDrr);=&pK+-6g0=-{LF zW5CBHW2N!t;&oc)LLB!)K<3{-@*_1KoJ=u#MKlSW+{i>n@j9cmELvLYZ3V}_@2;L1 zjQ=<)_bw99BTd{HElcU0X}|vWXM1~Q_<Xc|#%x1+L^~la?)94r#^!$!WeNftg0Qc1 z-*LnRV?7Y#?p|G@ZFka(n6BT^Z*;?v5tH78Tygiy<Ad}``e`qADws0l$u*S%JD)LO z6h(XC{e5#J9}7WQsag7gYEer|x$IbtSxF>?4kBgvr>g_dlqFI5=}4+A6e!Ce7H`B& zd#G}hVrLm(b~<{|7?8Jlxp*hc6Z-!B`~Q3~9_OaTQ^pGP*w%p5-Dr-kiB;^`sfSVE z$_b;egC;e<v~<1op2~-WN1VELuYP`Bps*mulLNvC_#CS4^TCjE3!*FpRI0qM3iTe! zC&EffOKqF-*E5RjGMvCx5|4#rCytN*!J)0L9kkGfHD6HJ+du#CS*Z@#Q!Qg3<e8Kw zTdx(xbp8N21h^fbZmjP*jDXT*AzfWv<7D1faRGT6+j~1rw@n6h4s#KFqJG<h)dP~A zr`K`?i~Rj40-%ESHSGXdo)ryHSo$fLDvSn3{Y;EfZA9?zpr8>Vt<1qrD<V-R(F*Ui zmS^PP_4Ul;0hK-0X>)V?)G*Dpl#{_SmV`oB?Q!T5Y>?Ms;-vGsy?yDM`E=G%xS8W# z-qBdoQ7cTQd6}Wb?CR3Msj2)4*3<Ox+Fbp5zZOd__$Yx75Bd{K5o-{09}47)(42>9 zL)*a|#F{kurO|m?m7i_(4&MIZC)FD9FdAX;y9ZT1q6G;Z)#<d~gAh<S8Yy?XzR4BU zEJ>|%ZWc`H)lg_$h|W*tvgAOa?Lc`ekBR2bHshw?L8hjzb7w~Kn%5z_k^xR;eo_3l zM-+oJ1qEkwu3JpPM%8x<80WyN%n<>SSHA%O<U4t2295%P!XRN9?U4lRP#KUJQX4U( z-5I%2BFCTk_gT_Lr0lmXoP|c6|2*yQJMCWz>)jo`kQI4{FSW^^cP6TF_OiQHV4y6Q zE?N_~3X=hZQ!6Ggsr_2k<Uwds15JN<)iO03m#rSTU%)7yd}V*DEGm^g@9rWI=5<?~ zI`R9RqOYx;*K_s8pFq1(GjIk@?c!!<fXw4DeUUUu83IB1sLmP-iMg?{k;%!VehVrJ zk;2kM&-lnbwXcgyfId;TvaDwXbsuAl1aMYq*w2dTIMg)`2KQS`MG$`A8Hrv02LF9T zwPuJFB7H(C+xrz3S+oIyDa%gRITjn2Cm*U@KnnR}Wr3Q#R&;$Yet4}0kLt_gvw+&o z+0-Ark%x+y(x=*jBT7N|cndIiS35fy9lp6k*QhGzBo-?zSkv?bn;yyLVU!U0<L|XW z7%LmyPvK~DQA=l<yE!H1Xbef}$^(jFZJrcmSzreQ*O{04owyz=;__hFZ+hZ5@b~+m z0~fM$?D4`u2xA^y<t)CxyrhzZ{DYBtUIjYnWX3xC^{HsgjE1v6sH&s5C_d*R{kIAo zTfP68)2=RJq4-mg?RvB_OA1lg;0bJioPCA3t;gqESy|vs6A#YBwCk(eY9a*0LdJPX z>CIu$U(H3#gco)6e0+U*I(`i;>5u2pT5&y55Lu4Zq^;uJ55T&=hsc0YpEl|oGEKo0 zX5H+~yh4>{wURBff!WzcCEEI0Lel#$3`M+Gw}}Yy(A~UHnO?~8)`@<Hmk>hJAVJ68 zM;#OJZG1n7maP5e<{lB%+3HeM1Im_|;3NO4SWx-y%SXDvbkz*550_}n<`gazY5I4w zcEf`Z`cK5G5pK-M-QWNB`6^v+iWyEmND3E1m$};|GJjD6^kcsE7}3JMf7L{F?%Pt@ zvqZ-&P&A8PI{n*ErVT9Uv<S&4!fw`56(_hqh5--=71pGi!1rZ3<s*VOGr!K;m++Br z?1=@xV>(}3`toH~jLnmf+K&Ik8=6_iPI~CzSyGQSXZQoc%juEIcvXod>=j<Q@C+Qa z=oebVc`vZBtPA~Lp~1oD%5Ng58vU|2YDOY{*ZVzMimR(dk^`Mc92T?HPqj?{kH8j{ zYK}2NsY~9d$k16nl|x<}tpuw)5B~>K;%G<);Dab$3#yF>8I1_SlC7$#?I^|j<8yg* zdt)zUV5+#!sns6`=RGj^ZJVg1=Vk1gZ${BuE0&br^$bGLzF{sOn*A+yEOd8!v#tMQ zC4B7SH9iXfAg>8U##ZxMoHQA*W5LTk$VR8X`$D?&HEupBrKQQkb|?u^QP=H>HkhgA z*y!nLf4reOYf>DGWH@_t=@M(jq6rUs<4o&+ZU~_A$8bh@8~{HO@(BzG{St<v{<oCT zNsyG<Edx@9K;<%u&OAIZ->sR8^FW5m&~O|3zRuXUFEeKwm-*GkOnfd-JsXpu#*;Z) z+w1GEed3v%eL}Y;yg)buyYSQM`l*nC!sXc`G3n;Fx4{FQI6COo@7r-oyrQq9$7;Jf zQFjrs<+QWAD-XQH<eKQu)bF7V+^s=!J3EbYb8U5Xr*bToU8-u>6dhd%K+R<CQ+z-{ zW7LEl01{OQqU1KOb)&a-hSm2e1c*vOkaBZ?pTLvVEKR^Oq>CFGkfG)U1bptX@K8(W z{F9fLqSD!U??ZfUZq|_CU%_%ibf4gIik&Ehdb*XN*2$CZhnxhcr17z|c<s{u<rmD> z(vM{pah|fADxZ*zco0UzwFTnDFkSD2xhVP{mkE0X`qQu0dcHJbJrK9mgbNGu^777% zO=kDh>FMAS4+u>nC@_&dC&Jldo8lNRLp3EbjOL<&weJB>br-Kfd5(%|s;H8)NEAL0 z$L~uEVlFzXt<_VwPW(D7vrO3`_(*oO3St@UUu8PVBr29bAJ(MT#Z~F5<AdhtWr95B zdP?E>^CB*V3TU(r=PKepdfjmimRxqq=r|}NmdD7+j<7?yWkUodM*Wvh>Pb(@O;usa zB%STJ-u_5h`msRGE*dkJ6MA}T$WO!PCWM*{J2FR>vA-k)0DSof^ovevns`jL<o;%% z#!BD6VC7HLd9K1XtcDwgMJ}$Fa5Lp9-KwNC2<FDh60JJwdhgx8$oI;)NH|TIP`B%K zA!^OdXv2dwsi$kXM;TR9BiJ3jy}LQvU^-H(JKtbC@(}q^xgjqky;GSb(Pjz~8<mVZ zM!!6ZZQM8djXlO+U=parKxTG!lgpxn0&kM7z5SLFt5%V%P#L^DB|Kl*m@750{M{Ov zCjgk|U`hR5p3%NjeJGwqI>@t3=wwN6lwRL?bamCLKTDKPSX!3j33wwT8U!-*!I+e# z{`pLkg6kMKd6x_ahVF!uT%b&gLp9ZBl%G=dG|)%~9G}R3IOT{I^Sf{YzT;1CxcTcH zA8(ZMeJM#`B={1WOV;p|qK!nh3w#gM#bfUBZi1H-09hU-ziw=t{1_3D*IkaJh_SVk z3+{9-To>|uHVopJ|7=hz<{Fy3o^N%-=yOe$_cUOc2q1&c(XfAS-boNQP2+kkNlf*a zvMBItGNrl0IuKUEP5@Z=fY}ku*BjePf${D6;jO`3^vcA^njb<&Yiwcw_kJ?PFaNkc z#A!#r?(u9u2rudMaJs-+moVBOcrDZE^71T*+Lup$EQ7psOP@cT0HlxzT+6D$5qHY) zclVzRM}K@$m4nn!a9FUJykq1E>5I6WS1wEm6igalNm^Nta(}}SN1gYUQ-`xtzZ_nM za44ogCM$AVAfoJIOJUSu&**ZtcohQY%aUVO>^i&xx*7;Rx%RVn0x4kH2rUFp+SXg) zDpRMR(~{!g(RuN~v9V6@(Y@f4{rx%Y85J&SDTn_BB$TZTZqg|i)%?a9o(#l?(5P|? z<WaH|E>xxS$YbBlkglcPOVZhUd0qJj|4Zun!eR8MzRUYENmRqpZ1e>b^Mgl*-JTB3 z6qVh$B!>tY))U46@5OnDFnOpZ$D=25)UkZDVOT~)*XO+lb<4sISaSAde83k@Ip-nd zld4jB0r$rKI)~}Ts3`Mpa&J#B3K%;|PO}eXrt~a!Mxv{syu3gljVIaeBtnbxIT;x# z9`3wLi*PBF*j(|I2RUnEn7xb8iu+=?kOw;|Qi5b{q1!Dorf0l$JUa$s*!%S_%Mug3 z7mP!SxQXl)C<3#0^$J7~y7s_$;R>?{XK?F!5+wuVQ_%SR^-Tz0tVl^R|LTVzFrk#E z;k@g6NTDII5d!|Ytfd8~XjiQs0!lRl(Cna)jr0--skZz|q%44-SWAEe0Kmt^M(Haj zrV`0WF3cLIL_AkVr)nA1MhF0)d=C!~G}ENZ@dR|b1j|@!Nh}p2qd965C`7XuCu``C z_~ZPQz+1zIr~>>TcjpgE-s}Z}q#Pu+U^qjBsgf;d_@e+T%S#0nG1za`0Q^^@6T>Xe zB7$TjrH`)%$zfd$FqfB><&PM4cXou;?9*G=@LX{BBpXQjF4mr*9jF4ZTD2Nb?}q`2 zLPFdXB8SJusvY}Q(~M_>mqyd$7~eR*Z6z`%4G}b7#hq~AytMbNHp(#elr$zs8{6o1 zkRYG;4QB+<K3@gpPudSV*hJQqEoYImiO^BpFO%1^jMeM~TMJGRhHCbT(qtJ4S|pZ# z;-5-YQGzy7v+$=$<U0_mi2<l!cAT%D{Yez!5_X;&O5Ec0c+#tj{Ft-W|3_6Qix2=w zSE7u?`xu=+S~`X^u(cT}<+j*KJAR%e_54fyE6$Fpz<4bj6z4eD_j&#kd$OX$`U&U4 zM|UT&sWWlV9>IIR>U9Y6bnrg!Rf=AXj(Q2PwJgl4UKudRU+iP}Rq&U_Cke|q^gTam z98IG3Q%Mk^5lx$G;L?V&h;@I?ZVt7KtqS2+pkKzve`ljCW?8N$6flW0m*t9B)(K-L zz-JF94Y-@RI4Id5!XB9M1^W2ZmfCA>9hY4h=VYXJRC2?CkHKK2bURjx5u6{{NqDLI z%WUc(iH+@fmI+@Ci`B3EEE&X@Y7tM8V+GcJ%r0Hvd0`}g7)n6E3w!^xLF5SdxRBc- zS(7#biV`I4fRJ|JVwAi<d}&}9FKPRr^RRR~g!G<rnynf4k`xhCzsC5n<M~hag4l2< z2|F3bkt_o;IU<(7zYzce!9E?lRrkKCD>r!2>~XdqjVO`hocbY;zu-UD7==5hgg0-p zi<8kNt+o!wc19z3NP&?g-0BnEqfWb*Nn|4J_wL<009Sg%^6DTE*yG#V(B1xiT&sN~ z=2lo;@FZPTfjkZrZE%1_8;{_aw0yH>F;6ekvV&;0o$ppE4<*m0lyl-SxIoZCuuzZ` zC-8$ngo31DKS^Yz9VDNvvH0naZ~IWjy7uPdDqQjLl5dheApoX<NRgXa-~Ekd(hIym zHP<^%PL7P&XRxw@an78B;O6pLe~yUjznKfIS0J>$q}vf$eXZp*06C_-!Zm+>xM*Jd ziO7CyJbUEmz63At$5;;HBDfNeg7vNDXuRQC*9l|T&zqs71ObNA(_;n3Ln02|t`dvV z;^u*xr8=XEv9ebnxv5v8REA0reIhxk{MOH5G7S#Bna2&QhtULTncutlsfUNNZ91c4 zEW{|rYUPu>Nr_%%6zLb`sIgu8{}&Al=s|PUIZg|S@FuG&h>OYqEI<(#sQ;t|lepJ< z`#<0Qi%ZW;r>4ca`1nU5-!-@cHgYiy&Ud&(>%8ZDOO(f2rIz)=`ozTQSfH(zn3rU> zle6>QAFJu517sc}C=A|syc9FQ^X~|2<bLz}w-^#&&BB?bK;Yi(nM!=&hWf>hzy-EF zaH>~rL|aWW+2$-1=o6ohQ3}-GE!il{SI?jSy)O4{l2%sxB_oSI=D;lD1ElROf@Y)! zUgF_zVD0a(_;Mswi4_O_FP{{6cYw>WTkc2hH~^oSA?7T8A}3M1^=Zh_zzeLvo&P!L z$^_%O{m%zHEbiQVg2AQLuhb>ZPWB{~Lz1(NBs(N0lZqdv^{OP!eo1DfBr*~nE;(kZ zpC7XkG@iUVbble`zp|cErd!bo=IbI@0|3;<2rmh*t_bsuAa=FUvtOslzOYB<*DR6d z%iZTSVoQ8T^gQFG=%Efp!RO)M@Awqxt+Pg~RMe1AMHeC%&K}h)uo4oWjlpH@YE(xA zaV*rHSW|-p5qTUB*Du4;9+3zL(BUHdkBajcSL1hdw<la*8`Lqu)<ycu{7w9}qZHR@ zqruC#|7B&@#4nTJ6F+g<!IwoEu4SF;g+**H>KSfnA1}@)NmK$WsA^IhVJn(1{h%wO ze@3yb7b)@a@qN!5+xdCAz?OnjOL+gu-|4BTC-v(hb<1M7J{2DaYHxVm5UbI~uBb~* z(>}pCl4uzqHdPOlA<DF!?7YT|H88B47pC7Rl8EvL!M?LA9?ZBk)-;H;e&;npQ{ShH zlCxXxV!|zF>$Ttq=JArg!7Xtt=ni(-ZLe7-oUA#iYo34U*NGT1OZfZ?2bLVLMF{ie zmnb+ra<J0;!$3T<BG7txXVT$$qH1~(eaaScL35qG@CUE!?aVJ9{=|tYUw@XwcgYdu zV?(6>G=4cM_B{)M9NU7cbmT??-XYTtLTCjep6k#q@-NJb#a+8-R}wgb$dCY~{zhhk zy4kPVeVt42#u|%h&;E4N&$E&@WxC~CTRT|KdoU2eV&(D&W1j=uIuQB+5}NxaP3~8? zHCh8zOMu_Jq|BEy#ix%XsMNiGR#sLf=FM~=Zc=H~i}^P^#?M+>Dq0NRW(b#Cyv*z? ztS+L#dKzhsuKbOM;AWl83{B3o_{Y+*e0qE$qeDX|c4Z4gFp8&(Uk3D3hx}Qag|9R1 z<W!hk-F_hOXM%Sz&pn0j9I>e)`BpsrKL5!9g{#n)3_{bk1fgsqvTvihwT!YQZ*F99 z&WYLxOD{agHfSCrsTj}1f!H+tEvPnG=esQFJ)5bD614_|u;m6__nBO!QVn`E#r+y~ zad2?>E+93Su0cH}SneZ{-eXanUZ+rSFm<bo8@O3#$H&JLm5OktH$8Ra#|4Sap`|SI zSWhGD$!Cz6ot2+c5Gyu^k>Rarmnu{qOaLV-2n@>qS-BFBdJr44NfBBHzz1p|%@k(| z{$?l&6n)|5*TeM;1$k-!fK?6~>%%fRmum04r^E`6&R60n=x-@W?~#3Qn%&H+SuPaz z@ihl7v|cVe>(+xF0&Ws&NZtIQn)f?zjzKlij|he(rVf51eZ<IUFgrh<2&bn5;fKHL zh}6?z!HocYbyu%k*7xl%t^;0<<ZP|KdHN}WLW?E^6bp&~@b<s|={|dBJXL%9(oz24 zswR-B+cu*nyiVqUktsP6;7Fx^QNiXI-1e>%DPzOH$Ti67nCA!=KRCLSI$fM_0%z3N zG9NyJKf0O{J<FQs($k~W=L#e8egqXmFLRb3u?)np3}_9|nAS6%`aSgCOf*u~Lny!g zJ@LNB+*Qn$FiqbmHqp^?@u!488n;3#aGnmAS$6yheMW7X_4MfAd^Y#0Lb0I3mYObH zdkP+=6VW#>Jr#JqkO=|C4P_k-o$q(&2Kh9dZF4L0buleAWpR`@zIA(V`J?&jyxCve z#Ib_;@#8<Ae(9?M^9jVWNajs8Pp~=_ey|^YCtJ6f(nt^^BlhYh??u3%tt>Z<_GIZN zjT8Z((FlW{3eYmvw|x&dPbHP7%3+jjiFh5x_wnqZH+apFpR%p+^=DZgQr!>zrbvpq z+QMch#oCva>D{i!i^u=|{j=duFZ9(!EL2v;E`6WAaj@UIZTT>rJI{*LHwQi&>g;^s zFD>nRX>lDyIpA*2gL=9R>}Ow4j9))`!@RdE736W(-%(Ld(f*p>|Hw<ahu9vl(iUsh zAGvpRbL-;hXk>qL-Dym%rmKTCoSq@>c>K{9<e_gaJ<bvvH=a^j#jW;9^fOf-e;T~K zE{;}&WMT-nx<E8bp!ZQ1`!mwjW~*IYO42|}$uHEFdI-R$bsa(?UaGZGy4|U%O}hHM z-R&77F{AQY`SHd0msWyOJ_iBLcRQI!uRVhJa-TI0N5D5VD7|j1*gC-mtbVFL@g*CM zc4o6_8+(qnXWN>qk4lDVP31sE)HRX6PJDuGeJxj_$5+p=t(`*_<~NtMf6L#1YNFCL zRBl;&(L>DTKQ$%+??8-cX>grVeqwZ`6QRM+!qs8OS7N9Ig#xX)s;DQEFtDlbW@Yi6 zCoed{binie`*~?pth;?8cMN-c|A2Zz{6ocp_tib}f+__fYE_1u_x@O6&yX%(=4v|= z8=xnt?=t5xcPl&-ucpapV5#H^%f9+QyF<R`QEP>PJ6{!7*LkJz1$jtB7i_%yUWIWj zpgRSdyAZ%^R16F$Uy*H$wbKDi>wPjhH8KpmW$&$HyPwup5NIeP8On$SKM**{a`bTz ztXBK@@ug?wzF{qXoxy5LKaeyjp<XTVB889E{1-h*bGzr;mRrxDY@u<pVwIL>gybo3 z#B%WuYQ>YQ_bV%Te3v&Lk`9JmXXq+tPN~FdX8leYAyEcBV_%PitiLH<dtoBwZshHL zr0{~^MMM|bj&4~G1O9{U7e7tMbQ7LW3dRCIhG|3s6=;omtsRz`2;UKfgemt{aiWsn zDfCx4NF^-!WLWAM|9;B#>FI+sS7T0d9#)a#mM>4hPX<4;sM>uHZvWaCOuFb5D%CDe zSH98F*6Z@!E;fg)dU-jir_-=Bf<YemgpqCR-~)YIs>VNrpP--rs$bP7^cL9%``9XO z^&@VM=ozpYyCub=&>-9o4LJYzy8tyirS#<{v3w89DL-@2iT#u>`WmhcP#P|8FANJf zsbY^IRb7(jh=CXRrdwKO&>RWAC=7ejko7RNDQ687o9C<eS;nW0rF>drAnw$8sF_^- zoMq<&A8k&9=g}$;GUb!zBefz;>SFm4PA&U^Z?)BhV%dd2J)~f<Pk_h2#y8z(;q#`k z)_Um!)^JYCZ+zvkrJ=-*9hdK}DDWm{YFS&+yLhxWZp!xMvBN@7;Rs?tS1CN@rP@_| z;K0U*?D##L@ek8sl%a>%JdkZyZ2_Lb*~m~7dgjknWYt8!+%FAC9Ni=|6$UP5^|2%@ zv1dGc&8kw8GCTz_|Nd=Tg6rGg#B7!_j>?=q$pKf9>x0-&{}*lmk^fRDZ8e1a8Pw4A zi=`d4^%@2=DBaD_W*P|Bv@oTr+tJIF=al%q8wSD`E@!MgGG4qnsHPffF3&CqsO+c2 z)u+<1|E|FP$2aVM{-*zL)cS~I!T<KWt+jsvSS(_FOGQx^00000NkvXXu0mjf_4Cap From 99c7b0d5c5b41a1efb8becb6f310d08d0d1620f1 Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Tue, 20 Jul 2010 06:05:25 +0000 Subject: [PATCH 566/674] Attempt #3 for sculpt startup.blend.c Since the icons were renamed had to rename them in startup.blend Issue: now the icon images will show up in image menus --- .../blender/editors/datafiles/startup.blend.c | 2420 ++++++++--------- 1 file changed, 1192 insertions(+), 1228 deletions(-) diff --git a/source/blender/editors/datafiles/startup.blend.c b/source/blender/editors/datafiles/startup.blend.c index 39c8cbd586d..dffb20062ae 100644 --- a/source/blender/editors/datafiles/startup.blend.c +++ b/source/blender/editors/datafiles/startup.blend.c @@ -1,102 +1,102 @@ /* DataToC output of file <startup_blend> */ -int datatoc_startup_blend_size= 309152; +int datatoc_startup_blend_size= 308000; char datatoc_startup_blend[]= { - 66, 76, 69, 78, 68, 69, 82, 95,118, 50, 53, 50, 82, 69, 78, 68, 32, 0, 0, 0,156,231,143, 2, 0, 0, 0, 0, 1, 0, 0, 0, + 66, 76, 69, 78, 68, 69, 82, 95,118, 50, 53, 50, 82, 69, 78, 68, 32, 0, 0, 0, 4,244, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71, 76, 79, 66, 16, 1, 0, 0,188,230,143, 2,201, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 53, 5, 0, 0, 0,250, 0, 0, 0, - 1, 0, 0, 1,192,179,102, 3, 48,136,106, 3, 0, 16, 0, 0,128, 32, 4, 0, 67, 58, 92,116,109,112, 92,115,116, 97,114,116, -117,112, 46, 98,108,101,110,100, 0,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,204,204,204, 87, 77, 0, 0,168, 0, 0, 0,192, 12,102, 3,111, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 71, 76, 79, 66, 16, 1, 0, 0, 4,243, 18, 0,201, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 53, 5, 0, 0, 0,250, 0, 0, 0, + 1, 0, 0, 1,176, 70,255, 2, 88, 79,194, 8, 0, 16, 0, 0,128, 32, 4, 0, 60,109,101,109,111,114,121, 50, 62, 0,145,124, +255,255,255,255,219, 1,145,124, 89,128, 64, 0, 0, 0,198, 2, 8, 0, 0, 0,178,128, 64, 0,168,192,143, 94,196,253, 18, 0, +144, 98,186, 8, 0,224,253,127, 0, 0, 0, 0, 72,243, 18, 0, 56,215,189, 8,176,255, 18, 0,218, 48, 0, 0, 92,108,170, 95, + 24, 34,188, 8,140,243, 18, 0, 88, 67,209, 0,216,175,133, 1, 24, 34,188, 8, 48,215,189, 8,148, 40,188, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 48,215,189, 8,208,134, 1, 0,144, 98,186, 8,196,253, 18, 0,192,243, 18, 0,220, 97,147, 0,120,215,189, 8, + 4,244, 18, 0, 32, 0, 0, 0, 88, 67,209, 0,176,255, 18, 0,232,243, 18, 0,160, 96,147, 0,112,197,255, 2, 4,244, 18, 0, + 32, 0, 0, 0, 82, 69, 78, 68, 32, 0, 0, 0, 4,244, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, 40,244, 18, 0,245,108,147, 0, +112,197,255, 2, 82, 69, 78, 68, 32, 0, 0, 0, 4,244, 18, 0,176, 70,255, 2, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110, +101, 0, 0, 0, 87, 77, 0, 0,168, 0, 0, 0, 24,153,192, 8,111, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 87,105,110, 77, 97,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 13,102, 3,208, 13,102, 3,208, 13,102, 3,208, 13,102, 3, 3, 0, 0, 0, - 1, 0, 0, 0,232,203, 78, 3,232,203, 78, 3, 0, 0, 0, 0, 0, 0, 0, 0, 72, 48, 76, 3, 72, 48, 76, 3, 16, 0, 0, 0, - 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 82, 3, 0,247, 82, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 29,253, 2, 88, 29,253, 2, 88, 29,253, 2,176,153, 77, 3,176,153, 77, 3,176,153, 77, 3, - 68, 65, 84, 65,148, 0, 0, 0,208, 13,102, 3,112, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,129, 4, 3, - 1, 0, 0, 0, 0, 0, 0, 0,192,179,102, 3, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,104,175, 8,128,104,175, 8,128,104,175, 8,128,104,175, 8, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,152,244, 2,144,152,244, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 72,167,226, 2, 72,167,226, 2, 72,167,226, 2,168, 71,245, 2,168, 71,245, 2,168, 71,245, 2, + 68, 65, 84, 65,148, 0, 0, 0,128,104,175, 8,112, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 72,240, 2, + 1, 0, 0, 0, 0, 0, 0, 0,176, 70,255, 2, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,136, 6,202, 3, 0, 0, 0, 0, 1, 0,238, 3, - 0, 0, 1, 0, 0, 0, 0, 0,240,131, 4, 3,208, 11, 8, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,192,222, 78, 3, -240,216, 76, 3, 96,238, 82, 3,192, 9, 8, 3,112, 10, 8, 3, 32, 11, 8, 3, 32, 11, 8, 3, 32, 27, 8, 3, 88, 0, 83, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,200, 14,102, 3,195, 0, 0, 0, 1, 0, 0, 0,176, 91,102, 3, + 0, 0, 1, 0, 0, 0, 0, 0, 24, 67,240, 2,168,149,246, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,192,240,187, 8, + 72,210,189, 8,176, 51,175, 8,184, 18,251, 2,112, 76,174, 8,192,120,169, 8,192,120,169, 8,168,149,246, 2,232,133,239, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,200,114,255, 2,195, 0, 0, 0, 1, 0, 0, 0,112, 31,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,131, 75, 3, 88, 21,102, 3,208, 21,102, 3,208, 35,102, 3, - 80, 36,102, 3,128, 82,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,177,226, 2,120,182,226, 2,144,188,226, 2,200,154,192, 8, + 64, 97,169, 8,224,165,169, 8, 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120,131, 75, 3,196, 0, 0, 0, 1, 0, 0, 0,200,255, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200,255, 9, 3,196, 0, 0, 0, - 1, 0, 0, 0,200, 95, 8, 3,120,131, 75, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -200, 95, 8, 3,196, 0, 0, 0, 1, 0, 0, 0,200,175, 75, 3,200,255, 9, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,200,175, 75, 3,196, 0, 0, 0, 1, 0, 0, 0,144,191, 98, 3,200, 95, 8, 3, 0, 0, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144,191, 98, 3,196, 0, 0, 0, 1, 0, 0, 0,184, 15,102, 3, -200,175, 75, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184, 15,102, 3,196, 0, 0, 0, - 1, 0, 0, 0, 48, 16,102, 3,144,191, 98, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 48, 16,102, 3,196, 0, 0, 0, 1, 0, 0, 0,168, 16,102, 3,184, 15,102, 3, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,168, 16,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 17,102, 3, 48, 16,102, 3, 0, 0, 0, 0, - 32, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 17,102, 3,196, 0, 0, 0, 1, 0, 0, 0,152, 17,102, 3, -168, 16,102, 3, 0, 0, 0, 0, 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152, 17,102, 3,196, 0, 0, 0, - 1, 0, 0, 0, 16, 18,102, 3, 32, 17,102, 3, 0, 0, 0, 0,254, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 16, 18,102, 3,196, 0, 0, 0, 1, 0, 0, 0,136, 18,102, 3,152, 17,102, 3, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,136, 18,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 19,102, 3, 16, 18,102, 3, 0, 0, 0, 0, - 32, 4, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 19,102, 3,196, 0, 0, 0, 1, 0, 0, 0,120, 19,102, 3, -136, 18,102, 3, 0, 0, 0, 0,192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120, 19,102, 3,196, 0, 0, 0, - 1, 0, 0, 0,240, 19,102, 3, 0, 19,102, 3, 0, 0, 0, 0,192, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -240, 19,102, 3,196, 0, 0, 0, 1, 0, 0, 0,104, 20,102, 3,120, 19,102, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,104, 20,102, 3,196, 0, 0, 0, 1, 0, 0, 0,224, 20,102, 3,240, 19,102, 3, 0, 0, 0, 0, -192, 1, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224, 20,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 88, 21,102, 3, -104, 20,102, 3, 0, 0, 0, 0, 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 88, 21,102, 3,196, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,224, 20,102, 3, 0, 0, 0, 0,254, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -208, 21,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 22,102, 3, 0, 0, 0, 0,200, 95, 8, 3,200,255, 9, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 22,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208, 22,102, 3,208, 21,102, 3, -200,255, 9, 3,144,191, 98, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208, 22,102, 3,197, 0, 0, 0, - 1, 0, 0, 0, 80, 23,102, 3, 80, 22,102, 3,200, 95, 8, 3,184, 15,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 80, 23,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208, 23,102, 3,208, 22,102, 3,144,191, 98, 3,184, 15,102, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208, 23,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 24,102, 3, - 80, 23,102, 3,120,131, 75, 3, 48, 16,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 24,102, 3, -197, 0, 0, 0, 1, 0, 0, 0,208, 24,102, 3,208, 23,102, 3,200,175, 75, 3, 48, 16,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,208, 24,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 25,102, 3, 80, 24,102, 3,184, 15,102, 3, -168, 16,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 25,102, 3,197, 0, 0, 0, 1, 0, 0, 0, -208, 25,102, 3,208, 24,102, 3, 48, 16,102, 3, 32, 17,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -208, 25,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 26,102, 3, 80, 25,102, 3,200,175, 75, 3,152, 17,102, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 26,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208, 26,102, 3,208, 25,102, 3, - 32, 17,102, 3,152, 17,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208, 26,102, 3,197, 0, 0, 0, - 1, 0, 0, 0, 80, 27,102, 3, 80, 26,102, 3,120,131, 75, 3, 16, 18,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 80, 27,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208, 27,102, 3,208, 26,102, 3,168, 16,102, 3,136, 18,102, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208, 27,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 28,102, 3, - 80, 27,102, 3, 48, 16,102, 3,136, 18,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 28,102, 3, -197, 0, 0, 0, 1, 0, 0, 0,208, 28,102, 3,208, 27,102, 3, 16, 18,102, 3,136, 18,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,208, 28,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 29,102, 3, 80, 28,102, 3, 16, 18,102, 3, - 0, 19,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 29,102, 3,197, 0, 0, 0, 1, 0, 0, 0, -208, 29,102, 3,208, 28,102, 3,136, 18,102, 3, 0, 19,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -208, 29,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 30,102, 3, 80, 29,102, 3,144,191, 98, 3,120, 19,102, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 30,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208, 30,102, 3,208, 29,102, 3, -168, 16,102, 3,120, 19,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208, 30,102, 3,197, 0, 0, 0, - 1, 0, 0, 0, 80, 31,102, 3, 80, 30,102, 3, 0, 19,102, 3,120, 19,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 80, 31,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208, 31,102, 3,208, 30,102, 3, 16, 18,102, 3,240, 19,102, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208, 31,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 32,102, 3, - 80, 31,102, 3, 0, 19,102, 3,104, 20,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 32,102, 3, -197, 0, 0, 0, 1, 0, 0, 0,208, 32,102, 3,208, 31,102, 3,240, 19,102, 3,104, 20,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,208, 32,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 33,102, 3, 80, 32,102, 3, 32, 17,102, 3, -224, 20,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 33,102, 3,197, 0, 0, 0, 1, 0, 0, 0, -208, 33,102, 3,208, 32,102, 3,168, 16,102, 3,224, 20,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -208, 33,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80, 34,102, 3, 80, 33,102, 3,184, 15,102, 3, 88, 21,102, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 34,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208, 34,102, 3,208, 33,102, 3, -152, 17,102, 3, 88, 21,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208, 34,102, 3,197, 0, 0, 0, - 1, 0, 0, 0, 80, 35,102, 3, 80, 34,102, 3,224, 20,102, 3, 88, 21,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 80, 35,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208, 35,102, 3,208, 34,102, 3,144,191, 98, 3,240, 19,102, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208, 35,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 80, 35,102, 3,120, 19,102, 3,104, 20,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 80, 36,102, 3, -199, 0, 0, 0, 1, 0, 0, 0,216, 39,102, 3, 0, 0, 0, 0,144,191, 98, 3,200,255, 9, 3,200, 95, 8, 3,184, 15,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200,177,226, 2,196, 0, 0, 0, 1, 0, 0, 0,216,189,226, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216,189,226, 2,196, 0, 0, 0, + 1, 0, 0, 0,176,172,226, 2,200,177,226, 2, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +176,172,226, 2,196, 0, 0, 0, 1, 0, 0, 0,128,176,226, 2,216,189,226, 2, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,128,176,226, 2,196, 0, 0, 0, 1, 0, 0, 0,120,194,226, 2,176,172,226, 2, 0, 0, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120,194,226, 2,196, 0, 0, 0, 1, 0, 0, 0, 56,165,226, 2, +128,176,226, 2, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 56,165,226, 2,196, 0, 0, 0, + 1, 0, 0, 0,128,166,226, 2,120,194,226, 2, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +128,166,226, 2,196, 0, 0, 0, 1, 0, 0, 0,144,168,226, 2, 56,165,226, 2, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,144,168,226, 2,196, 0, 0, 0, 1, 0, 0, 0,216,169,226, 2,128,166,226, 2, 0, 0, 0, 0, + 32, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216,169,226, 2,196, 0, 0, 0, 1, 0, 0, 0,160,170,226, 2, +144,168,226, 2, 0, 0, 0, 0, 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,170,226, 2,196, 0, 0, 0, + 1, 0, 0, 0,232,171,226, 2,216,169,226, 2, 0, 0, 0, 0,254, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +232,171,226, 2,196, 0, 0, 0, 1, 0, 0, 0,176,181,226, 2,160,170,226, 2, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,176,181,226, 2,196, 0, 0, 0, 1, 0, 0, 0,112,133,174, 8,232,171,226, 2, 0, 0, 0, 0, + 32, 4, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,112,133,174, 8,196, 0, 0, 0, 1, 0, 0, 0, 40,133,174, 8, +176,181,226, 2, 0, 0, 0, 0,192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,133,174, 8,196, 0, 0, 0, + 1, 0, 0, 0,176,193,226, 2,112,133,174, 8, 0, 0, 0, 0,192, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +176,193,226, 2,196, 0, 0, 0, 1, 0, 0, 0, 88,120,174, 8, 40,133,174, 8, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 88,120,174, 8,196, 0, 0, 0, 1, 0, 0, 0,152,199,226, 2,176,193,226, 2, 0, 0, 0, 0, +192, 1, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152,199,226, 2,196, 0, 0, 0, 1, 0, 0, 0,120,182,226, 2, + 88,120,174, 8, 0, 0, 0, 0, 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120,182,226, 2,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,152,199,226, 2, 0, 0, 0, 0,254, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +144,188,226, 2,197, 0, 0, 0, 1, 0, 0, 0,248,140,174, 8, 0, 0, 0, 0,176,172,226, 2,216,189,226, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,140,174, 8,197, 0, 0, 0, 1, 0, 0, 0, 32,191,226, 2,144,188,226, 2, +216,189,226, 2,120,194,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 32,191,226, 2,197, 0, 0, 0, + 1, 0, 0, 0,104,192,226, 2,248,140,174, 8, 56,165,226, 2,176,172,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,104,192,226, 2,197, 0, 0, 0, 1, 0, 0, 0,192,195,226, 2, 32,191,226, 2, 56,165,226, 2,120,194,226, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192,195,226, 2,197, 0, 0, 0, 1, 0, 0, 0, 8,197,226, 2, +104,192,226, 2,128,166,226, 2,200,177,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,197,226, 2, +197, 0, 0, 0, 1, 0, 0, 0,240,163,226, 2,192,195,226, 2,128,166,226, 2,128,176,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,240,163,226, 2,197, 0, 0, 0, 1, 0, 0, 0, 24,161,226, 2, 8,197,226, 2, 56,165,226, 2, +144,168,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,161,226, 2,197, 0, 0, 0, 1, 0, 0, 0, + 40,162,226, 2,240,163,226, 2,128,166,226, 2,216,169,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 40,162,226, 2,197, 0, 0, 0, 1, 0, 0, 0, 96,161,226, 2, 24,161,226, 2,160,170,226, 2,128,176,226, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,161,226, 2,197, 0, 0, 0, 1, 0, 0, 0,104, 90,174, 8, 40,162,226, 2, +216,169,226, 2,160,170,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104, 90,174, 8,197, 0, 0, 0, + 1, 0, 0, 0, 24, 94,174, 8, 96,161,226, 2,232,171,226, 2,200,177,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 24, 94,174, 8,197, 0, 0, 0, 1, 0, 0, 0,200, 97,174, 8,104, 90,174, 8,144,168,226, 2,176,181,226, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 97,174, 8,197, 0, 0, 0, 1, 0, 0, 0,232,101,174, 8, + 24, 94,174, 8,128,166,226, 2,176,181,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232,101,174, 8, +197, 0, 0, 0, 1, 0, 0, 0,152,105,174, 8,200, 97,174, 8,232,171,226, 2,176,181,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,152,105,174, 8,197, 0, 0, 0, 1, 0, 0, 0, 72,109,174, 8,232,101,174, 8,232,171,226, 2, +112,133,174, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72,109,174, 8,197, 0, 0, 0, 1, 0, 0, 0, +248,112,174, 8,152,105,174, 8,176,181,226, 2,112,133,174, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +248,112,174, 8,197, 0, 0, 0, 1, 0, 0, 0,168,116,174, 8, 72,109,174, 8,120,194,226, 2, 40,133,174, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,116,174, 8,197, 0, 0, 0, 1, 0, 0, 0,232,124,174, 8,248,112,174, 8, +144,168,226, 2, 40,133,174, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232,124,174, 8,197, 0, 0, 0, + 1, 0, 0, 0, 48,125,174, 8,168,116,174, 8, 40,133,174, 8,112,133,174, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 48,125,174, 8,197, 0, 0, 0, 1, 0, 0, 0, 64,142,174, 8,232,124,174, 8,232,171,226, 2,176,193,226, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64,142,174, 8,197, 0, 0, 0, 1, 0, 0, 0, 32, 49,173, 8, + 48,125,174, 8, 88,120,174, 8,112,133,174, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 32, 49,173, 8, +197, 0, 0, 0, 1, 0, 0, 0, 56, 52,175, 8, 64,142,174, 8,176,193,226, 2, 88,120,174, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 56, 52,175, 8,197, 0, 0, 0, 1, 0, 0, 0,104,106,173, 8, 32, 49,173, 8,216,169,226, 2, +152,199,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,106,173, 8,197, 0, 0, 0, 1, 0, 0, 0, + 80,119,173, 8, 56, 52,175, 8,144,168,226, 2,152,199,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 80,119,173, 8,197, 0, 0, 0, 1, 0, 0, 0,240,153,192, 8,104,106,173, 8, 56,165,226, 2,120,182,226, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,240,153,192, 8,197, 0, 0, 0, 1, 0, 0, 0, 56,154,192, 8, 80,119,173, 8, +160,170,226, 2,120,182,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,154,192, 8,197, 0, 0, 0, + 1, 0, 0, 0,128,154,192, 8,240,153,192, 8,120,182,226, 2,152,199,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,128,154,192, 8,197, 0, 0, 0, 1, 0, 0, 0,200,154,192, 8, 56,154,192, 8,176,193,226, 2,120,194,226, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,154,192, 8,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +128,154,192, 8, 88,120,174, 8, 40,133,174, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 64, 97,169, 8, +199, 0, 0, 0, 1, 0, 0, 0, 64, 88,169, 8, 0, 0, 0, 0,120,194,226, 2,216,189,226, 2,176,172,226, 2, 56,165,226, 2, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 0, 0, 24, 91,102, 3, 24, 91,102, 3, 24, 37,102, 3,120, 38,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24, 37,102, 3,200, 0, 0, 0, 1, 0, 0, 0,120, 38,102, 3, + 7, 0, 0, 0, 0, 0, 0, 0, 24,192,192, 8, 24,192,192, 8, 16,155,192, 8, 56,156,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,155,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 56,156,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, @@ -104,8 +104,8 @@ char datatoc_startup_blend[]= { 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120, 38,102, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 24, 37,102, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,156,192, 8, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16,155,192, 8, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, @@ -113,11 +113,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0,216, 39,102, 3,199, 0, 0, 0, 1, 0, 0, 0,160, 44,102, 3, 80, 36,102, 3, 48, 16,102, 3, - 32, 17,102, 3,152, 17,102, 3,200,175, 75, 3, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 51, 1, 0, 0, - 4, 4,222, 0, 52, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 43,102, 3, 96, 43,102, 3,160, 40,102, 3, - 0, 42,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160, 40,102, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 42,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, + 68, 65, 84, 65, 96, 0, 0, 0, 64, 88,169, 8,199, 0, 0, 0, 1, 0, 0, 0,208, 88,169, 8, 64, 97,169, 8,128,166,226, 2, +216,169,226, 2,160,170,226, 2,128,176,226, 2, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 51, 1, 0, 0, + 4, 4,222, 0, 52, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,159,192, 8,176,159,192, 8, 96,157,192, 8, +136,158,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,157,192, 8, +200, 0, 0, 0, 1, 0, 0, 0,136,158,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, @@ -125,7 +125,7 @@ char datatoc_startup_blend[]= { 254, 4, 0, 0, 21, 1, 0, 0, 51, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 0, 42,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,160, 40,102, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,136,158,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,157,192, 8, 0, 0, 0, 0, 0, 0, 94, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 77, 67, 1,128,138,195, 0, 0, 0, 0,205, 0, 0, 0, 222, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 204, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, @@ -133,7 +133,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 96, 43,102, 3,165, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,176,159,192, 8,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -141,11 +141,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -160, 44,102, 3,199, 0, 0, 0, 1, 0, 0, 0, 72, 49,102, 3,216, 39,102, 3,120,131, 75, 3, 16, 18,102, 3,136, 18,102, 3, - 48, 16,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 15, 15, 32, 4, 84, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 48,102, 3, 40, 48,102, 3,104, 45,102, 3,200, 46,102, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104, 45,102, 3,200, 0, 0, 0, 1, 0, 0, 0, -200, 46,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,132, 68, +208, 88,169, 8,199, 0, 0, 0, 1, 0, 0, 0,152, 94,169, 8, 64, 88,169, 8,200,177,226, 2,232,171,226, 2,176,181,226, 2, +128,166,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 15, 15, 32, 4, 84, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,127,172, 8, 96,127,172, 8,184,160,192, 8,224,161,192, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,160,192, 8,200, 0, 0, 0, 1, 0, 0, 0, +224,161,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,132, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 32, 4, @@ -153,7 +153,7 @@ char datatoc_startup_blend[]= { 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -200, 46,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104, 45,102, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, +224,161,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,184,160,192, 8, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 18, 0, 0, 0, 57, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, @@ -161,17 +161,17 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 31, 4, 0, 0, 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 40, 48,102, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 96,127,172, 8,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 72, 49,102, 3, -199, 0, 0, 0, 1, 0, 0, 0,160, 55,102, 3,160, 44,102, 3, 32, 17,102, 3,224, 20,102, 3, 88, 21,102, 3,152, 17,102, 3, + 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,152, 94,169, 8, +199, 0, 0, 0, 1, 0, 0, 0, 40, 95,169, 8,208, 88,169, 8,216,169,226, 2,152,199,226, 2,120,182,226, 2,160,170,226, 2, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 47, 2, 0, 0, 3, 3,222, 0,251, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,208, 52,102, 3,208, 52,102, 3, 16, 50,102, 3,112, 51,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16, 50,102, 3,200, 0, 0, 0, 1, 0, 0, 0,112, 51,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0,120,126,169, 8,120,126,169, 8, 8,163,192, 8, 48,164,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,163,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 48,164,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, @@ -179,8 +179,8 @@ char datatoc_startup_blend[]= { 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 22, 2, 0, 0, 47, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112, 51,102, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 50,102, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,164,192, 8, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8,163,192, 8, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0,100, 66, 0, 0,131, 67, 0, 0, 79,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, @@ -188,26 +188,26 @@ char datatoc_startup_blend[]= { 254, 4, 0, 0, 53, 1, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,252, 0, 0, 0,208, 52,102, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,252, 0, 0, 0,120,126,169, 8,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 54,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,174,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 48, 54,102, 3,223, 0, 0, 0, - 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,160, 54,102, 3, 68, 65, 84, 65,156, 0, 0, 0,160, 54,102, 3,222, 0, 0, 0, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,136,106, 3, 19, 0, 0, 0, 1, 0, 1, 0, 48,136,106, 3, 20, 0, 0, 0, - 1, 0, 1, 0, 48,136,106, 3, 21, 0, 1, 0, 1, 0, 1, 0, 48,136,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 96,158,106, 3, - 0, 0, 0, 0, 1, 0, 1, 0, 16,165,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 72,247,107, 3, 0, 0, 0, 0, 1, 0, 1, 0, -136,174,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 88, 84,107, 3, 0, 0, 0, 0, 1, 0, 1, 0, 72,170,106, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 16,154,106, 3, 0, 0, 0, 0, 1, 0, 1, 0,208,160,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 64,153,106, 3, - 68, 65, 84, 65, 96, 0, 0, 0,160, 55,102, 3,199, 0, 0, 0, 1, 0, 0, 0, 88, 68,102, 3, 72, 49,102, 3, 0, 19,102, 3, -120, 19,102, 3,168, 16,102, 3,136, 18,102, 3, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,186, 2, 0, 0, - 1, 1, 95, 2,102, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 66,102, 3,248, 66,102, 3,104, 56,102, 3, -232, 61,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104, 56,102, 3, -200, 0, 0, 0, 1, 0, 0, 0,200, 57,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,128,174,226, 2,223, 0, 0, 0, + 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,176,115,172, 8, 68, 65, 84, 65,156, 0, 0, 0,176,115,172, 8,222, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 88, 79,194, 8, 19, 0, 0, 0, 1, 0, 1, 0, 88, 79,194, 8, 20, 0, 0, 0, + 1, 0, 1, 0, 88, 79,194, 8, 21, 0, 1, 0, 1, 0, 1, 0, 88, 79,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,128,222,172, 8, + 0, 0, 0, 0, 1, 0, 1, 0,160, 94,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,112,172,195, 8, 0, 0, 0, 0, 1, 0, 1, 0, +128,103,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,176, 10,195, 8, 0, 0, 0, 0, 1, 0, 1, 0,112, 99,194, 8, 0, 0, 0, 0, + 1, 0, 1, 0,168, 88,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,144, 90,194, 8, 0, 0, 0, 0, 1, 0, 1, 0, 16, 88,194, 8, + 68, 65, 84, 65, 96, 0, 0, 0, 40, 95,169, 8,199, 0, 0, 0, 1, 0, 0, 0, 72, 96,169, 8,152, 94,169, 8,112,133,174, 8, + 40,133,174, 8,144,168,226, 2,176,181,226, 2, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,186, 2, 0, 0, + 1, 1, 95, 2,102, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,174,192, 8,152,174,192, 8, 88,165,192, 8, +248,169,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,165,192, 8, +200, 0, 0, 0, 1, 0, 0, 0,128,166,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 23, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, @@ -215,7 +215,7 @@ char datatoc_startup_blend[]= { 31, 4, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,200, 57,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 40, 59,102, 3,104, 56,102, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,128,166,192, 8,200, 0, 0, 0, 1, 0, 0, 0,168,167,192, 8, 88,165,192, 8, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0, 160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, @@ -223,8 +223,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0,193, 1, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 76, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40, 59,102, 3,200, 0, 0, 0, 1, 0, 0, 0, -136, 60,102, 3,200, 57,102, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,167,192, 8,200, 0, 0, 0, 1, 0, 0, 0, +208,168,192, 8,128,166,192, 8, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, @@ -232,7 +232,7 @@ char datatoc_startup_blend[]= { 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -136, 60,102, 3,200, 0, 0, 0, 1, 0, 0, 0,232, 61,102, 3, 40, 59,102, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, +208,168,192, 8,200, 0, 0, 0, 1, 0, 0, 0,248,169,192, 8,168,167,192, 8, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, 147, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, 147, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, @@ -240,7 +240,7 @@ char datatoc_startup_blend[]= { 31, 4, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232, 61,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136, 60,102, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,169,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,168,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -248,7 +248,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 76, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 63,102, 3, 68, 65, 84, 65, 72, 3, 0, 0, 72, 63,102, 3,159, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,171,192, 8, 68, 65, 84, 65, 72, 3, 0, 0, 32,171,192, 8,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,134,144, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, @@ -275,20 +275,20 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 32, 33, 12, 66, - 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248, 66,102, 3,160, 0, 0, 0, 1, 0, 0, 0, + 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,174,192, 8,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0,208,160,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0,144, 90,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, - 88, 68,102, 3,199, 0, 0, 0, 1, 0, 0, 0, 88, 76,102, 3,160, 55,102, 3, 16, 18,102, 3,240, 19,102, 3,104, 20,102, 3, - 0, 19,102, 3, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,255, 0, 0, 0, 2, 2,192, 1,171, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 74,102, 3,160, 74,102, 3, 32, 69,102, 3, 64, 73,102, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 69,102, 3,200, 0, 0, 0, 1, 0, 0, 0, -128, 70,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, + 72, 96,169, 8,199, 0, 0, 0, 1, 0, 0, 0,128,158,169, 8, 40, 95,169, 8,232,171,226, 2,176,193,226, 2, 88,120,174, 8, +112,133,174, 8, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,255, 0, 0, 0, 2, 2,192, 1,171, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 85,175, 8,176, 85,175, 8,192,175,192, 8, 56,179,192, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,175,192, 8,200, 0, 0, 0, 1, 0, 0, 0, +232,176,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, @@ -296,7 +296,7 @@ char datatoc_startup_blend[]= { 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -128, 70,102, 3,200, 0, 0, 0, 1, 0, 0, 0,224, 71,102, 3, 32, 69,102, 3, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, +232,176,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 16,178,192, 8,192,175,192, 8, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,254,194, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, @@ -304,7 +304,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,216, 0, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0,145, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224, 71,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 64, 73,102, 3,128, 70,102, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,178,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 56,179,192, 8,232,176,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -312,8 +312,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64, 73,102, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,224, 71,102, 3, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,179,192, 8,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 16,178,192, 8, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 18, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0,111, 18,131, 58, 111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, @@ -321,19 +321,19 @@ char datatoc_startup_blend[]= { 111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -208, 0, 0, 0,160, 74,102, 3,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208, 0, 0, 0,176, 85,175, 8,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,216, 75,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,216, 75,102, 3, 24, 1, 0, 0, 1, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 88, 76,102, 3,199, 0, 0, 0, 1, 0, 0, 0, -128, 82,102, 3, 88, 68,102, 3,240, 19,102, 3,144,191, 98, 3,120, 19,102, 3,104, 20,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 96,180,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 96,180,192, 8, 24, 1, 0, 0, 1, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,128,158,169, 8,199, 0, 0, 0, 1, 0, 0, 0, +224,165,169, 8, 72, 96,169, 8,176,193,226, 2,120,194,226, 2, 40,133,174, 8, 88,120,174, 8, 0, 0, 0, 0, 0, 0, 0, 0, 191, 1, 0, 0, 1, 1, 0, 0,186, 2, 0, 0, 12, 12,192, 1,186, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64, 81,102, 3, 64, 81,102, 3, 32, 77,102, 3,224, 79,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 32, 77,102, 3,200, 0, 0, 0, 1, 0, 0, 0,128, 78,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 32,184,192, 8, 32,184,192, 8,168,180,192, 8,248,182,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,168,180,192, 8,200, 0, 0, 0, 1, 0, 0, 0,208,181,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 98, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, @@ -341,8 +341,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 78,102, 3,200, 0, 0, 0, 1, 0, 0, 0, -224, 79,102, 3, 32, 77,102, 3, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,181,192, 8,200, 0, 0, 0, 1, 0, 0, 0, +248,182,192, 8,168,180,192, 8, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,199,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,200, 0, @@ -350,7 +350,7 @@ char datatoc_startup_blend[]= { 186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,160, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -224, 79,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 78,102, 3, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194, +248,182,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,181,192, 8, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0,199,195, 0, 0, 0, 0,231, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, 159, 1, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0, 159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0, @@ -358,18 +358,18 @@ char datatoc_startup_blend[]= { 200, 0, 0, 0,191, 1, 0, 0, 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 64, 81,102, 3, 25, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 32,184,192, 8, 25, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,128, 82,102, 3,199, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 88, 76,102, 3,224, 20,102, 3,168, 16,102, 3,184, 15,102, 3, 88, 21,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,224,165,169, 8,199, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,128,158,169, 8,152,199,226, 2,144,168,226, 2, 56,165,226, 2,120,182,226, 2, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 1, 1,222, 0,138, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,184, 89,102, 3,184, 89,102, 3, 72, 83,102, 3,168, 84,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72, 83,102, 3,200, 0, 0, 0, 1, 0, 0, 0,168, 84,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0,240,190,192, 8,240,190,192, 8, 40,185,192, 8, 80,186,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40,185,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 80,186,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 64, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, @@ -377,16 +377,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0, 49, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168, 84,102, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 72, 83,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,186,192, 8,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 40,185,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 86,102, 3, 68, 65, 84, 65, - 72, 3, 0, 0, 8, 86,102, 3,159, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,187,192, 8, 68, 65, 84, 65, + 72, 3, 0, 0,120,187,192, 8,159, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,109,100, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, @@ -413,72 +413,72 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -184, 89,102, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +240,190,192, 8,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,208,160,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,144, 90,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,176, 91,102, 3,195, 0, 0, 0, 1, 0, 0, 0,192,179,102, 3,200, 14,102, 3, + 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,112, 31,255, 2,195, 0, 0, 0, 1, 0, 0, 0,176, 70,255, 2,200,114,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 92,102, 3,184, 98,102, 3, 48, 99,102, 3,176,109,102, 3, 48,110,102, 3, -192,140,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,192,192, 8, 32,196,192, 8,104,196,192, 8, 80,202,192, 8,216,169,169, 8, + 0,225,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160, 92,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 24, 93,102, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24, 93,102, 3,196, 0, 0, 0, 1, 0, 0, 0, -144, 93,102, 3,160, 92,102, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144, 93,102, 3, -196, 0, 0, 0, 1, 0, 0, 0, 8, 94,102, 3, 24, 93,102, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 8, 94,102, 3,196, 0, 0, 0, 1, 0, 0, 0,128, 94,102, 3,144, 93,102, 3, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128, 94,102, 3,196, 0, 0, 0, 1, 0, 0, 0,248, 94,102, 3, 8, 94,102, 3, - 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248, 94,102, 3,196, 0, 0, 0, 1, 0, 0, 0, -112, 95,102, 3,128, 94,102, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,112, 95,102, 3, -196, 0, 0, 0, 1, 0, 0, 0,232, 95,102, 3,248, 94,102, 3, 0, 0, 0, 0, 20, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,232, 95,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 96, 96,102, 3,112, 95,102, 3, 0, 0, 0, 0,254, 4, 64, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96, 96,102, 3,196, 0, 0, 0, 1, 0, 0, 0,216, 96,102, 3,232, 95,102, 3, - 0, 0, 0, 0, 20, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216, 96,102, 3,196, 0, 0, 0, 1, 0, 0, 0, - 80, 97,102, 3, 96, 96,102, 3, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 80, 97,102, 3, -196, 0, 0, 0, 1, 0, 0, 0,200, 97,102, 3,216, 96,102, 3, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,200, 97,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 64, 98,102, 3, 80, 97,102, 3, 0, 0, 0, 0, 0, 2, 20, 1, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64, 98,102, 3,196, 0, 0, 0, 1, 0, 0, 0,184, 98,102, 3,200, 97,102, 3, - 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184, 98,102, 3,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 64, 98,102, 3, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 99,102, 3, -197, 0, 0, 0, 1, 0, 0, 0,176, 99,102, 3, 0, 0, 0, 0, 24, 93,102, 3,144, 93,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,176, 99,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 48,100,102, 3, 48, 99,102, 3, 24, 93,102, 3, -128, 94,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,100,102, 3,197, 0, 0, 0, 1, 0, 0, 0, -176,100,102, 3,176, 99,102, 3,144, 93,102, 3,248, 94,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -176,100,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 48,101,102, 3, 48,100,102, 3,128, 94,102, 3,248, 94,102, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,101,102, 3,197, 0, 0, 0, 1, 0, 0, 0,176,101,102, 3,176,100,102, 3, - 8, 94,102, 3,232, 95,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,101,102, 3,197, 0, 0, 0, - 1, 0, 0, 0, 48,102,102, 3, 48,101,102, 3,112, 95,102, 3,232, 95,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 48,102,102, 3,197, 0, 0, 0, 1, 0, 0, 0,176,102,102, 3,176,101,102, 3,248, 94,102, 3, 96, 96,102, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,102,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 48,103,102, 3, - 48,102,102, 3,128, 94,102, 3, 96, 96,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,103,102, 3, -197, 0, 0, 0, 1, 0, 0, 0,176,103,102, 3,176,102,102, 3,112, 95,102, 3, 96, 96,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,176,103,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 48,104,102, 3, 48,103,102, 3,248, 94,102, 3, -232, 95,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,104,102, 3,197, 0, 0, 0, 1, 0, 0, 0, -176,104,102, 3,176,103,102, 3,128, 94,102, 3,216, 96,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -176,104,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 48,105,102, 3, 48,104,102, 3, 96, 96,102, 3, 80, 97,102, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,105,102, 3,197, 0, 0, 0, 1, 0, 0, 0,176,105,102, 3,176,104,102, 3, -216, 96,102, 3, 80, 97,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,105,102, 3,197, 0, 0, 0, - 1, 0, 0, 0, 48,106,102, 3, 48,105,102, 3,216, 96,102, 3,200, 97,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 48,106,102, 3,197, 0, 0, 0, 1, 0, 0, 0,176,106,102, 3,176,105,102, 3, 80, 97,102, 3,200, 97,102, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,106,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 48,107,102, 3, - 48,106,102, 3,160, 92,102, 3, 64, 98,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,107,102, 3, -197, 0, 0, 0, 1, 0, 0, 0,176,107,102, 3,176,106,102, 3, 64, 98,102, 3,184, 98,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,176,107,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 48,108,102, 3, 48,107,102, 3, 8, 94,102, 3, -184, 98,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,108,102, 3,197, 0, 0, 0, 1, 0, 0, 0, -176,108,102, 3,176,107,102, 3,112, 95,102, 3,184, 98,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -176,108,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 48,109,102, 3, 48,108,102, 3,200, 97,102, 3, 64, 98,102, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,109,102, 3,197, 0, 0, 0, 1, 0, 0, 0,176,109,102, 3,176,108,102, 3, - 80, 97,102, 3,184, 98,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,109,102, 3,197, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 48,109,102, 3,160, 92,102, 3,216, 96,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0, 48,110,102, 3,199, 0, 0, 0, 1, 0, 0, 0,184,113,102, 3, 0, 0, 0, 0,128, 94,102, 3, 24, 93,102, 3, -144, 93,102, 3,248, 94,102, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, - 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 40,179,102, 3, 40,179,102, 3,248,110,102, 3, 88,112,102, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,110,102, 3,200, 0, 0, 0, - 1, 0, 0, 0, 88,112,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120,192,192, 8,196, 0, 0, 0, 1, 0, 0, 0,192,192,192, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192,192,192, 8,196, 0, 0, 0, 1, 0, 0, 0, + 8,193,192, 8,120,192,192, 8, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8,193,192, 8, +196, 0, 0, 0, 1, 0, 0, 0, 80,193,192, 8,192,192,192, 8, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 80,193,192, 8,196, 0, 0, 0, 1, 0, 0, 0,152,193,192, 8, 8,193,192, 8, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152,193,192, 8,196, 0, 0, 0, 1, 0, 0, 0,224,193,192, 8, 80,193,192, 8, + 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224,193,192, 8,196, 0, 0, 0, 1, 0, 0, 0, + 40,194,192, 8,152,193,192, 8, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,194,192, 8, +196, 0, 0, 0, 1, 0, 0, 0,112,194,192, 8,224,193,192, 8, 0, 0, 0, 0, 20, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,112,194,192, 8,196, 0, 0, 0, 1, 0, 0, 0,184,194,192, 8, 40,194,192, 8, 0, 0, 0, 0,254, 4, 64, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184,194,192, 8,196, 0, 0, 0, 1, 0, 0, 0, 0,195,192, 8,112,194,192, 8, + 0, 0, 0, 0, 20, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0,195,192, 8,196, 0, 0, 0, 1, 0, 0, 0, + 72,195,192, 8,184,194,192, 8, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,195,192, 8, +196, 0, 0, 0, 1, 0, 0, 0,144,195,192, 8, 0,195,192, 8, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,144,195,192, 8,196, 0, 0, 0, 1, 0, 0, 0,216,195,192, 8, 72,195,192, 8, 0, 0, 0, 0, 0, 2, 20, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216,195,192, 8,196, 0, 0, 0, 1, 0, 0, 0, 32,196,192, 8,144,195,192, 8, + 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32,196,192, 8,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,216,195,192, 8, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,196,192, 8, +197, 0, 0, 0, 1, 0, 0, 0,176,196,192, 8, 0, 0, 0, 0,192,192,192, 8, 8,193,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,176,196,192, 8,197, 0, 0, 0, 1, 0, 0, 0,248,196,192, 8,104,196,192, 8,192,192,192, 8, +152,193,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,196,192, 8,197, 0, 0, 0, 1, 0, 0, 0, + 64,197,192, 8,176,196,192, 8, 8,193,192, 8,224,193,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 64,197,192, 8,197, 0, 0, 0, 1, 0, 0, 0,136,197,192, 8,248,196,192, 8,152,193,192, 8,224,193,192, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136,197,192, 8,197, 0, 0, 0, 1, 0, 0, 0,208,197,192, 8, 64,197,192, 8, + 80,193,192, 8,112,194,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,197,192, 8,197, 0, 0, 0, + 1, 0, 0, 0, 24,198,192, 8,136,197,192, 8, 40,194,192, 8,112,194,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 24,198,192, 8,197, 0, 0, 0, 1, 0, 0, 0, 96,198,192, 8,208,197,192, 8,224,193,192, 8,184,194,192, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,198,192, 8,197, 0, 0, 0, 1, 0, 0, 0,168,198,192, 8, + 24,198,192, 8,152,193,192, 8,184,194,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,198,192, 8, +197, 0, 0, 0, 1, 0, 0, 0,240,198,192, 8, 96,198,192, 8, 40,194,192, 8,184,194,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,240,198,192, 8,197, 0, 0, 0, 1, 0, 0, 0, 56,199,192, 8,168,198,192, 8,224,193,192, 8, +112,194,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,199,192, 8,197, 0, 0, 0, 1, 0, 0, 0, +128,199,192, 8,240,198,192, 8,152,193,192, 8, 0,195,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +128,199,192, 8,197, 0, 0, 0, 1, 0, 0, 0,200,199,192, 8, 56,199,192, 8,184,194,192, 8, 72,195,192, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,199,192, 8,197, 0, 0, 0, 1, 0, 0, 0, 16,200,192, 8,128,199,192, 8, + 0,195,192, 8, 72,195,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 16,200,192, 8,197, 0, 0, 0, + 1, 0, 0, 0, 88,200,192, 8,200,199,192, 8, 0,195,192, 8,144,195,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 88,200,192, 8,197, 0, 0, 0, 1, 0, 0, 0,160,200,192, 8, 16,200,192, 8, 72,195,192, 8,144,195,192, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,160,200,192, 8,197, 0, 0, 0, 1, 0, 0, 0,232,200,192, 8, + 88,200,192, 8,120,192,192, 8,216,195,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232,200,192, 8, +197, 0, 0, 0, 1, 0, 0, 0, 48,201,192, 8,160,200,192, 8,216,195,192, 8, 32,196,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 48,201,192, 8,197, 0, 0, 0, 1, 0, 0, 0,120,201,192, 8,232,200,192, 8, 80,193,192, 8, + 32,196,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,201,192, 8,197, 0, 0, 0, 1, 0, 0, 0, +192,201,192, 8, 48,201,192, 8, 40,194,192, 8, 32,196,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +192,201,192, 8,197, 0, 0, 0, 1, 0, 0, 0, 8,202,192, 8,120,201,192, 8,144,195,192, 8,216,195,192, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,202,192, 8,197, 0, 0, 0, 1, 0, 0, 0, 80,202,192, 8,192,201,192, 8, + 72,195,192, 8, 32,196,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,202,192, 8,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 8,202,192, 8,120,192,192, 8, 0,195,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,216,169,169, 8,199, 0, 0, 0, 1, 0, 0, 0, 64,174,169, 8, 0, 0, 0, 0,152,193,192, 8,192,192,192, 8, + 8,193,192, 8,224,193,192, 8, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, + 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 80, 6,193, 8, 80, 6,193, 8,152,202,192, 8,192,203,192, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,202,192, 8,200, 0, 0, 0, + 1, 0, 0, 0,192,203,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, @@ -486,7 +486,7 @@ char datatoc_startup_blend[]= { 188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 88,112,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248,110,102, 3, 0, 0, 0, 0, 0,240,109, 69, +248, 0, 0, 0,192,203,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152,202,192, 8, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, @@ -494,11 +494,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,184,113,102, 3,199, 0, 0, 0, 1, 0, 0, 0, 96,118,102, 3, - 48,110,102, 3,184, 98,102, 3,112, 95,102, 3,232, 95,102, 3, 8, 94,102, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,234, 0, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 64,117,102, 3, - 64,117,102, 3,128,114,102, 3,224,115,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,128,114,102, 3,200, 0, 0, 0, 1, 0, 0, 0,224,115,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,116, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 64,174,169, 8,199, 0, 0, 0, 1, 0, 0, 0,160,181,169, 8, +216,169,169, 8, 32,196,192, 8, 40,194,192, 8,112,194,192, 8, 80,193,192, 8, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,234, 0, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16,113,172, 8, + 16,113,172, 8,232,204,192, 8, 16,206,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,232,204,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 16,206,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,116, 68, 0, 0, 0, 0, 0, 0,208, 65, 0,128,190, 67, 0,192, 25, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -506,26 +506,26 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,115,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -128,114,102, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,206,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +232,204,192, 8, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,234, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 64,117,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 16,113,172, 8, 176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 96,118,102, 3,199, 0, 0, 0, 1, 0, 0, 0, 40,123,102, 3,184,113,102, 3, -112, 95,102, 3, 96, 96,102, 3,248, 94,102, 3,232, 95,102, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, -186, 2, 0, 0, 4, 4,234, 0,122, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,121,102, 3,232,121,102, 3, - 40,119,102, 3,136,120,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 40,119,102, 3,200, 0, 0, 0, 1, 0, 0, 0,136,120,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, + 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,160,181,169, 8,199, 0, 0, 0, 1, 0, 0, 0,184, 95,169, 8, 64,174,169, 8, + 40,194,192, 8,184,194,192, 8,224,193,192, 8,112,194,192, 8, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, +186, 2, 0, 0, 4, 4,234, 0,122, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,209,192, 8,136,209,192, 8, + 56,207,192, 8, 96,208,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 56,207,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 96,208,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -533,7 +533,7 @@ char datatoc_startup_blend[]= { 21, 4, 0, 0,254, 4, 0, 0,156, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136,120,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,119,102, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,208,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,207,192, 8, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 88, 67, 0,192, 22,196, 0, 0, 0, 0, 217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -541,7 +541,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,155, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,232,121,102, 3,165, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,136,209,192, 8,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -549,11 +549,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0, 40,123,102, 3,199, 0, 0, 0, 1, 0, 0, 0,224,135,102, 3, 96,118,102, 3, 64, 98,102, 3,200, 97,102, 3, - 80, 97,102, 3,184, 98,102, 3, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 1, 1, 19, 2, - 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,134,102, 3,128,134,102, 3,240,123,102, 3,112,129,102, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,123,102, 3,200, 0, 0, 0, - 1, 0, 0, 0, 80,125,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 96, 0, 0, 0,184, 95,169, 8,199, 0, 0, 0, 1, 0, 0, 0,248,220,192, 8,160,181,169, 8,216,195,192, 8,144,195,192, 8, + 72,195,192, 8, 32,196,192, 8, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 1, 1, 19, 2, + 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,219,192, 8,208,219,192, 8,144,210,192, 8, 48,215,192, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144,210,192, 8,200, 0, 0, 0, + 1, 0, 0, 0,184,211,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 4, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, @@ -561,7 +561,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 80,125,102, 3,200, 0, 0, 0, 1, 0, 0, 0,176,126,102, 3,240,123,102, 3, 0, 0, 0, 0, 0, 0, 15, 67, +248, 0, 0, 0,184,211,192, 8,200, 0, 0, 0, 1, 0, 0, 0,224,212,192, 8,144,210,192, 8, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, @@ -569,16 +569,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,250, 0, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,126,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 16,128,102, 3, - 80,125,102, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,212,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 8,214,192, 8, +184,211,192, 8, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,128,102, 3, -200, 0, 0, 0, 1, 0, 0, 0,112,129,102, 3,176,126,102, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,214,192, 8, +200, 0, 0, 0, 1, 0, 0, 0, 48,215,192, 8,224,212,192, 8, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,184,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, @@ -586,7 +586,7 @@ char datatoc_startup_blend[]= { 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,112,129,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16,128,102, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 48,215,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8,214,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -594,7 +594,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,208,130,102, 3, 68, 65, 84, 65, 72, 3, 0, 0,208,130,102, 3,159, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88,216,192, 8, 68, 65, 84, 65, 72, 3, 0, 0, 88,216,192, 8,159, 0, 0, 0, 1, 0, 0, 0, 37,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249,173,116, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0, 221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0, @@ -621,19 +621,19 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,134,102, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,219,192, 8,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 7, 0,208,160,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 7, 0,144, 90,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,224,135,102, 3, -199, 0, 0, 0, 1, 0, 0, 0,192,140,102, 3, 40,123,102, 3,216, 96,102, 3,128, 94,102, 3, 96, 96,102, 3, 80, 97,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,248,220,192, 8, +199, 0, 0, 0, 1, 0, 0, 0, 0,225,192, 8,184, 95,169, 8, 0,195,192, 8,152,193,192, 8,184,194,192, 8, 72,195,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 16, 16, 20, 4,166, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104,139,102, 3,104,139,102, 3,168,136,102, 3, 8,138,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,136,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 8,138,102, 3, + 0, 0, 0, 0, 0, 0, 0, 0,216,223,192, 8,216,223,192, 8,136,221,192, 8,176,222,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136,221,192, 8,200, 0, 0, 0, 1, 0, 0, 0,176,222,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, @@ -641,8 +641,8 @@ char datatoc_startup_blend[]= { 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,138,102, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,168,136,102, 3, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,222,192, 8, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136,221,192, 8, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 110,142,241,195, 55,199,120, 68,240, 80,128,193,136, 2, 4, 68, 3, 4, 0, 0, 20, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,236, 81,184, 61, 10,215, 19, 64, 10, 0, 0, 0, 0, 0, 3, 0, @@ -650,19 +650,19 @@ char datatoc_startup_blend[]= { 19, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,244, 0, 0, 0,104,139,102, 3,177, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,244, 0, 0, 0,216,223,192, 8,177, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 61,181, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 61,181, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,192,140,102, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -224,135,102, 3,160, 92,102, 3,216, 96,102, 3,200, 97,102, 3, 64, 98,102, 3, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, - 0, 0, 0, 0, 19, 1, 0, 0, 6, 6, 0, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,145,102, 3, -168,145,102, 3,136,141,102, 3, 72,144,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,136,141,102, 3,200, 0, 0, 0, 1, 0, 0, 0,232,142,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 0,225,192, 8,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +248,220,192, 8,120,192,192, 8, 0,195,192, 8,144,195,192, 8,216,195,192, 8, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, + 0, 0, 0, 0, 19, 1, 0, 0, 6, 6, 0, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,229,192, 8, + 8,229,192, 8,144,225,192, 8,224,227,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,144,225,192, 8,200, 0, 0, 0, 1, 0, 0, 0,184,226,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -670,16 +670,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232,142,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 72,144,102, 3, -136,141,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,226,192, 8,200, 0, 0, 0, 1, 0, 0, 0,224,227,192, 8, +144,225,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,144,102, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232,142,102, 3, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,227,192, 8, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,184,226,192, 8, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0,191, 0, 0,192, 63, 0, 0, 64, 60, 0, 0,125, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -687,7 +687,7 @@ char datatoc_startup_blend[]= { 255, 1, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 33, 0, 0,168,145,102, 3,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 33, 0, 0, 8,229,192, 8,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -952,129 +952,93 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,192,179,102, 3,195, 0, 0, 0, 1, 0, 0, 0, -216,198,102, 3,176, 91,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,180,102, 3,216,185,102, 3, 80,186,102, 3, -208,194,102, 3, 80,195,102, 3,176, 73,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0,125,101,170, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,180,102, 3,196, 0, 0, 0, 1, 0, 0, 0, - 40,181,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,181,102, 3, -196, 0, 0, 0, 1, 0, 0, 0,160,181,102, 3,176,180,102, 3, 0, 0, 0, 0, 0, 0,202, 3, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,160,181,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 24,182,102, 3, 40,181,102, 3, 0, 0, 0, 0,136, 6,202, 3, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24,182,102, 3,196, 0, 0, 0, 1, 0, 0, 0,144,182,102, 3,160,181,102, 3, - 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144,182,102, 3,196, 0, 0, 0, 1, 0, 0, 0, - 8,183,102, 3, 24,182,102, 3, 0, 0, 0, 0, 0, 0,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8,183,102, 3, -196, 0, 0, 0, 1, 0, 0, 0,128,183,102, 3,144,182,102, 3, 0, 0, 0, 0,136, 6,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,128,183,102, 3,196, 0, 0, 0, 1, 0, 0, 0,248,183,102, 3, 8,183,102, 3, 0, 0, 0, 0,108, 5, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248,183,102, 3,196, 0, 0, 0, 1, 0, 0, 0,112,184,102, 3,128,183,102, 3, - 0, 0, 0, 0,108, 5,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,112,184,102, 3,196, 0, 0, 0, 1, 0, 0, 0, -232,184,102, 3,248,183,102, 3, 0, 0, 0, 0,108, 5, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232,184,102, 3, -196, 0, 0, 0, 1, 0, 0, 0, 96,185,102, 3,112,184,102, 3, 0, 0, 0, 0,136, 6, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 96,185,102, 3,196, 0, 0, 0, 1, 0, 0, 0,216,185,102, 3,232,184,102, 3, 0, 0, 0, 0, 0, 0, 80, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216,185,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,185,102, 3, - 0, 0, 0, 0,108, 5, 80, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,186,102, 3,197, 0, 0, 0, 1, 0, 0, 0, -208,186,102, 3, 0, 0, 0, 0, 40,181,102, 3,160,181,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -208,186,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80,187,102, 3, 80,186,102, 3, 40,181,102, 3,144,182,102, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,187,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208,187,102, 3,208,186,102, 3, -160,181,102, 3, 8,183,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,187,102, 3,197, 0, 0, 0, - 1, 0, 0, 0, 80,188,102, 3, 80,187,102, 3,144,182,102, 3, 8,183,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 80,188,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208,188,102, 3,208,187,102, 3,176,180,102, 3,128,183,102, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,188,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80,189,102, 3, - 80,188,102, 3, 24,182,102, 3,128,183,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,189,102, 3, -197, 0, 0, 0, 1, 0, 0, 0,208,189,102, 3,208,188,102, 3,144,182,102, 3,248,183,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,208,189,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80,190,102, 3, 80,189,102, 3, 8,183,102, 3, -248,183,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,190,102, 3,197, 0, 0, 0, 1, 0, 0, 0, -208,190,102, 3,208,189,102, 3,128,183,102, 3,112,184,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -208,190,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80,191,102, 3, 80,190,102, 3,248,183,102, 3,112,184,102, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,191,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208,191,102, 3,208,190,102, 3, - 8,183,102, 3,232,184,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,191,102, 3,197, 0, 0, 0, - 1, 0, 0, 0, 80,192,102, 3, 80,191,102, 3, 24,182,102, 3,232,184,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 80,192,102, 3,197, 0, 0, 0, 1, 0, 0, 0,208,192,102, 3,208,191,102, 3,112,184,102, 3,232,184,102, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,192,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80,193,102, 3, - 80,192,102, 3,176,180,102, 3, 96,185,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,193,102, 3, -197, 0, 0, 0, 1, 0, 0, 0,208,193,102, 3,208,192,102, 3,144,182,102, 3, 96,185,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,208,193,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 80,194,102, 3, 80,193,102, 3,248,183,102, 3, -216,185,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,194,102, 3,197, 0, 0, 0, 1, 0, 0, 0, -208,194,102, 3,208,193,102, 3,128,183,102, 3,216,185,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -208,194,102, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80,194,102, 3, 96,185,102, 3,216,185,102, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 80,195,102, 3,199, 0, 0, 0, 1, 0, 0, 0,248,204,102, 3, 0, 0, 0, 0, -144,182,102, 3, 40,181,102, 3,160,181,102, 3, 8,183,102, 3, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,176, 3, 0, 0, -202, 3, 0, 0, 7, 7,137, 6, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 8, 0,240,187,240, 2, 96,162,105, 3,120, 62, 83, 3, - 24,196,102, 3,120,197,102, 3, 0, 0, 0, 0, 0, 0, 0, 0,248,106, 83, 3,128,207, 8, 3, 68, 65, 84, 65,248, 0, 0, 0, - 24,196,102, 3,200, 0, 0, 0, 1, 0, 0, 0,120,197,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,147, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,176, 70,255, 2,195, 0, 0, 0, 1, 0, 0, 0, +112,200,254, 2,112, 31,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 6,193, 8,200, 9,193, 8, 16, 10,193, 8, +216, 14,193, 8, 32, 15,193, 8,160, 80,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 96, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176, 6,193, 8,196, 0, 0, 0, 1, 0, 0, 0, +248, 6,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248, 6,193, 8, +196, 0, 0, 0, 1, 0, 0, 0, 64, 7,193, 8,176, 6,193, 8, 0, 0, 0, 0, 0, 0,202, 3, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 64, 7,193, 8,196, 0, 0, 0, 1, 0, 0, 0,136, 7,193, 8,248, 6,193, 8, 0, 0, 0, 0,136, 6,202, 3, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136, 7,193, 8,196, 0, 0, 0, 1, 0, 0, 0,208, 7,193, 8, 64, 7,193, 8, + 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208, 7,193, 8,196, 0, 0, 0, 1, 0, 0, 0, + 24, 8,193, 8,136, 7,193, 8, 0, 0, 0, 0, 0, 0,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24, 8,193, 8, +196, 0, 0, 0, 1, 0, 0, 0, 96, 8,193, 8,208, 7,193, 8, 0, 0, 0, 0,136, 6,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 96, 8,193, 8,196, 0, 0, 0, 1, 0, 0, 0,168, 8,193, 8, 24, 8,193, 8, 0, 0, 0, 0,108, 5, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168, 8,193, 8,196, 0, 0, 0, 1, 0, 0, 0,240, 8,193, 8, 96, 8,193, 8, + 0, 0, 0, 0,108, 5,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240, 8,193, 8,196, 0, 0, 0, 1, 0, 0, 0, + 56, 9,193, 8,168, 8,193, 8, 0, 0, 0, 0,108, 5, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 56, 9,193, 8, +196, 0, 0, 0, 1, 0, 0, 0,128, 9,193, 8,240, 8,193, 8, 0, 0, 0, 0,136, 6, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,128, 9,193, 8,196, 0, 0, 0, 1, 0, 0, 0,200, 9,193, 8, 56, 9,193, 8, 0, 0, 0, 0, 0, 0, 80, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200, 9,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 9,193, 8, + 0, 0, 0, 0,108, 5, 80, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 16, 10,193, 8,197, 0, 0, 0, 1, 0, 0, 0, + 88, 10,193, 8, 0, 0, 0, 0,248, 6,193, 8, 64, 7,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 88, 10,193, 8,197, 0, 0, 0, 1, 0, 0, 0,160, 10,193, 8, 16, 10,193, 8,248, 6,193, 8,208, 7,193, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,160, 10,193, 8,197, 0, 0, 0, 1, 0, 0, 0,232, 10,193, 8, 88, 10,193, 8, + 64, 7,193, 8, 24, 8,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 10,193, 8,197, 0, 0, 0, + 1, 0, 0, 0, 48, 11,193, 8,160, 10,193, 8,208, 7,193, 8, 24, 8,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 48, 11,193, 8,197, 0, 0, 0, 1, 0, 0, 0,120, 11,193, 8,232, 10,193, 8,176, 6,193, 8, 96, 8,193, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120, 11,193, 8,197, 0, 0, 0, 1, 0, 0, 0,192, 11,193, 8, + 48, 11,193, 8,136, 7,193, 8, 96, 8,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 11,193, 8, +197, 0, 0, 0, 1, 0, 0, 0, 8, 12,193, 8,120, 11,193, 8,208, 7,193, 8,168, 8,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 8, 12,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 80, 12,193, 8,192, 11,193, 8, 24, 8,193, 8, +168, 8,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 12,193, 8,197, 0, 0, 0, 1, 0, 0, 0, +152, 12,193, 8, 8, 12,193, 8, 96, 8,193, 8,240, 8,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +152, 12,193, 8,197, 0, 0, 0, 1, 0, 0, 0,224, 12,193, 8, 80, 12,193, 8,168, 8,193, 8,240, 8,193, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224, 12,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 40, 13,193, 8,152, 12,193, 8, + 24, 8,193, 8, 56, 9,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 13,193, 8,197, 0, 0, 0, + 1, 0, 0, 0,112, 13,193, 8,224, 12,193, 8,136, 7,193, 8, 56, 9,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,112, 13,193, 8,197, 0, 0, 0, 1, 0, 0, 0,184, 13,193, 8, 40, 13,193, 8,240, 8,193, 8, 56, 9,193, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184, 13,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 0, 14,193, 8, +112, 13,193, 8,176, 6,193, 8,128, 9,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0, 14,193, 8, +197, 0, 0, 0, 1, 0, 0, 0, 72, 14,193, 8,184, 13,193, 8,208, 7,193, 8,128, 9,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 72, 14,193, 8,197, 0, 0, 0, 1, 0, 0, 0,144, 14,193, 8, 0, 14,193, 8,168, 8,193, 8, +200, 9,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,144, 14,193, 8,197, 0, 0, 0, 1, 0, 0, 0, +216, 14,193, 8, 72, 14,193, 8, 96, 8,193, 8,200, 9,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +216, 14,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144, 14,193, 8,128, 9,193, 8,200, 9,193, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 32, 15,193, 8,199, 0, 0, 0, 1, 0, 0, 0,160, 22,193, 8, 0, 0, 0, 0, +208, 7,193, 8,248, 6,193, 8, 64, 7,193, 8, 24, 8,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,176, 3, 0, 0, +202, 3, 0, 0, 7, 7,137, 6, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 8, 0,168, 64,227, 2,224,160,193, 8,224,160,193, 8, +176, 15,193, 8,216, 16,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 24,111,173, 8, 56,169,169, 8, 68, 65, 84, 65,248, 0, 0, 0, +176, 15,193, 8,200, 0, 0, 0, 1, 0, 0, 0,216, 16,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,176, 3, 0, 0,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -137, 6, 26, 0, 15, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160,189,240, 2,168,103,109, 3,168,103,109, 3, 0, 0, 0, 0, 0, 0, 0, 0,144, 58, 83, 3,144, 90, 78, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,197,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 24,196,102, 3, +137, 6, 26, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 65,227, 2, 24,137,188, 8, 24,137,188, 8, 0, 0, 0, 0, 0, 0, 0, 0,112, 89,240, 2,200,144,237, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216, 16,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176, 15,193, 8, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, 112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 3, 0, 0,202, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,202, 3, 0, 0,202, 3, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,188,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 43, 8, 3, 0,224, 82, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40, 12, 83, 3,200, 0, 0, 0, - 1, 0, 0, 0, 48,132, 78, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, - 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, -149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,193,240, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 48,132, 78, 3,200, 0, 0, 0, 1, 0, 0, 0,216,181,101, 3, 40, 12, 83, 3, 0, 0, 0, 0, 0, 0,112, 67, - 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, - 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, - 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0,149, 3,223, 0,149, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,152,194,240, 2, 0, 0, 0, 0, 0, 0, 0, 0,216, 26, 83, 3,224, 49, 76, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,181,101, 3,200, 0, 0, 0, 1, 0, 0, 0, 64,134, 78, 3, - 48,132, 78, 3, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, - 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, - 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,153, 5, 60, 0,153, 5, - 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 89, 3, 0, 0,148, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,193,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,134, 78, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216,181,101, 3, 0, 0, 0, 0, 0, 0, 96, 67, 0, 0, 85,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 32,179, 68, 0,192, 81,196, 0, 0, 0, 0,136, 5, 0, 0,153, 5, 0, 0, 18, 0, 0, 0, 88, 3, 0, 0, - 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 18, 0, 0, 0, 88, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, - 4, 0, 0, 4, 6, 0,153, 5, 89, 3,153, 5, 71, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0, -136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0,153, 5, 89, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,192,240, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 60, 0, 0, 0,120, 62, 83, 3,168, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,162,105, 3, 40, 12, 83, 3, - 64,134, 78, 3, 5, 0, 0, 0, 0, 0, 0, 0, 64, 23, 8, 3, 0, 0, 0, 0,144, 61, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,184, 48, 83, 3, 1, 0,255,255,255,255, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,248,204,102, 3,199, 0, 0, 0, - 1, 0, 0, 0,136, 14,103, 3, 80,195,102, 3,128,183,102, 3,112,184,102, 3,232,184,102, 3, 24,182,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 65,227, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,160, 22,193, 8,199, 0, 0, 0, + 1, 0, 0, 0,216, 72,193, 8, 32, 15,193, 8, 96, 8,193, 8,240, 8,193, 8, 56, 9,193, 8,136, 7,193, 8, 0, 0, 0, 0, 109, 5, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 4, 4, 28, 1, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, - 40,184,240, 2, 40, 7,103, 3,232, 13,103, 3,192,205,102, 3, 32,207,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 88,237, 82, 3, - 8, 87, 78, 3, 68, 65, 84, 65,248, 0, 0, 0,192,205,102, 3,200, 0, 0, 0, 1, 0, 0, 0, 32,207,102, 3, 0, 0, 0, 0, +168, 61,227, 2, 48, 67,193, 8,216, 94,186, 8, 48, 23,193, 8, 88, 24,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,152,142,169, 8, +160,186,174, 8, 68, 65, 84, 65,248, 0, 0, 0, 48, 23,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 88, 24,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,142, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 28, 1, 31, 0, 28, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0,229, 2, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 31, 0, 18, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,187,240, 2,168, 27, 85, 3,168, 27, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, -144,244, 82, 3, 0,188, 77, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,207,102, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,192,205,102, 3, 0, 0, 0, 0, 0, 0,142, 67, 0,128, 86,196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 64,227, 2, 40,144,192, 8, 40,144,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, +192,143,237, 2, 32, 34,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88, 24,193, 8,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 48, 23,193, 8, 0, 0, 0, 0, 0, 0,142, 67, 0,128, 86,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,133, 67, 0, 64, 57,196, 0, 0, 0, 0, 11, 1, 0, 0, 28, 1, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, - 6, 0, 28, 1,229, 2, 11, 1,229, 2, 0, 0,216, 47, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, - 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1,229, 2, 19, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,185,240, 2,176,136, 77, 3, -240,126, 78, 3,128,208,102, 3,128, 5,103, 3,208, 34,117, 3, 16,239, 82, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,128,208,102, 3,198, 0, 0, 0, 1, 0, 0, 0, 40,210,102, 3, 0, 0, 0, 0,216,185,240, 2, 0, 0, 0, 0, + 6, 0, 28, 1,229, 2, 11, 1,229, 2, 0, 0,192,217,247, 2, 1, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, + 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1,229, 2, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 62,227, 2,168,207,168, 8, + 56, 30,170, 8,136,253,171, 8,192, 65,193, 8,144,161,241, 2, 40,160,241, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0,136,253,171, 8,198, 0, 0, 0, 1, 0, 0, 0, 24,252,171, 8, 0, 0, 0, 0,248, 62,227, 2, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1084,8 +1048,8 @@ char datatoc_startup_blend[]= { 0, 0,220,255, 11, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 40,210,102, 3,198, 0, 0, 0, - 1, 0, 0, 0,208,211,102, 3,128,208,102, 3,192,138,254, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 24,252,171, 8,198, 0, 0, 0, + 1, 0, 0, 0,168,250,171, 8,136,253,171, 8,248, 44,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, 110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, 110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1095,8 +1059,8 @@ char datatoc_startup_blend[]= { 0, 0, 6, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208,211,102, 3,198, 0, 0, 0, 1, 0, 0, 0,120,213,102, 3, 40,210,102, 3, -216,140,254, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,168,250,171, 8,198, 0, 0, 0, 1, 0, 0, 0, 48,168,250, 2, 24,252,171, 8, +168, 46,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1106,7 +1070,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -120,213,102, 3,198, 0, 0, 0, 1, 0, 0, 0, 32,215,102, 3,208,211,102, 3,240,142,254, 2, 0, 0, 0, 0, 82, 69, 78, 68, + 48,168,250, 2,198, 0, 0, 0, 1, 0, 0, 0,128, 25,193, 8,168,250,171, 8, 88, 48,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1116,8 +1080,8 @@ char datatoc_startup_blend[]= { 11, 1,203, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32,215,102, 3,198, 0, 0, 0, 1, 0, 0, 0, -200,216,102, 3,120,213,102, 3, 8,145,254, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,128, 25,193, 8,198, 0, 0, 0, 1, 0, 0, 0, +240, 26,193, 8, 48,168,250, 2, 8, 50,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108, 105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108, 105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1127,7 +1091,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,200,216,102, 3,198, 0, 0, 0, 1, 0, 0, 0,112,218,102, 3, 32,215,102, 3, 32,147,254, 2, + 68, 65, 84, 65, 64, 1, 0, 0,240, 26,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 96, 28,193, 8,128, 25,193, 8,184, 51,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, @@ -1137,8 +1101,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 34,254, 11, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,112,218,102, 3, -198, 0, 0, 0, 1, 0, 0, 0, 24,220,102, 3,200,216,102, 3, 56,149,254, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 96, 28,193, 8, +198, 0, 0, 0, 1, 0, 0, 0,208, 29,193, 8,240, 26,193, 8,104, 53,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1148,8 +1112,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 24,220,102, 3,198, 0, 0, 0, 1, 0, 0, 0,192,221,102, 3, -112,218,102, 3, 80,151,254, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208, 29,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 64, 31,193, 8, + 96, 28,193, 8, 24, 55,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1159,7 +1123,7 @@ char datatoc_startup_blend[]= { 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,192,221,102, 3,198, 0, 0, 0, 1, 0, 0, 0,104,223,102, 3, 24,220,102, 3,128,155,254, 2, 0, 0, 0, 0, + 64, 1, 0, 0, 64, 31,193, 8,198, 0, 0, 0, 1, 0, 0, 0,176, 32,193, 8,208, 29,193, 8,120, 58,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1169,8 +1133,8 @@ char datatoc_startup_blend[]= { 0, 0,242,252, 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,104,223,102, 3,198, 0, 0, 0, - 1, 0, 0, 0, 16,225,102, 3,192,221,102, 3,152,157,254, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,176, 32,193, 8,198, 0, 0, 0, + 1, 0, 0, 0, 32, 34,193, 8, 64, 31,193, 8, 40, 60,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111, 115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111, 115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1180,8 +1144,8 @@ char datatoc_startup_blend[]= { 4, 0, 6, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 16,225,102, 3,198, 0, 0, 0, 1, 0, 0, 0,184,226,102, 3,104,223,102, 3, -176,159,254, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32, 34,193, 8,198, 0, 0, 0, 1, 0, 0, 0,144, 35,193, 8,176, 32,193, 8, +216, 61,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1191,7 +1155,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -184,226,102, 3,198, 0, 0, 0, 1, 0, 0, 0, 96,228,102, 3, 16,225,102, 3,200,161,254, 2, 0, 0, 0, 0, 82, 69, 78, 68, +144, 35,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 0, 37,193, 8, 32, 34,193, 8,136, 63,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1201,8 +1165,8 @@ char datatoc_startup_blend[]= { 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 96,228,102, 3,198, 0, 0, 0, 1, 0, 0, 0, - 8,230,102, 3,184,226,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 0, 37,193, 8,198, 0, 0, 0, 1, 0, 0, 0, +112, 38,193, 8,144, 35,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101, 120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101, 120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1212,7 +1176,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0, 8,230,102, 3,198, 0, 0, 0, 1, 0, 0, 0,176,231,102, 3, 96,228,102, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,112, 38,193, 8,198, 0, 0, 0, 1, 0, 0, 0,224, 39,193, 8, 0, 37,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1222,8 +1186,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0,102,254, 7, 1,171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,176,231,102, 3, -198, 0, 0, 0, 1, 0, 0, 0, 88,233,102, 3, 8,230,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,224, 39,193, 8, +198, 0, 0, 0, 1, 0, 0, 0, 80, 41,193, 8,112, 38,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1233,8 +1197,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 88,233,102, 3,198, 0, 0, 0, 1, 0, 0, 0, 0,235,102, 3, -176,231,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80, 41,193, 8,198, 0, 0, 0, 1, 0, 0, 0,192, 42,193, 8, +224, 39,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114, 111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114, 111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1244,7 +1208,7 @@ char datatoc_startup_blend[]= { 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 0,235,102, 3,198, 0, 0, 0, 1, 0, 0, 0,168,236,102, 3, 88,233,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 1, 0, 0,192, 42,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 48, 44,193, 8, 80, 41,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1254,8 +1218,8 @@ char datatoc_startup_blend[]= { 0, 0, 87,254, 7, 1,186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,168,236,102, 3,198, 0, 0, 0, - 1, 0, 0, 0, 80,238,102, 3, 0,235,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 48, 44,193, 8,198, 0, 0, 0, + 1, 0, 0, 0,160, 45,193, 8,192, 42,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105, 109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105, 109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1265,7 +1229,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80,238,102, 3,198, 0, 0, 0, 1, 0, 0, 0,248,239,102, 3,168,236,102, 3, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,160, 45,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 16, 47,193, 8, 48, 44,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110, @@ -1276,7 +1240,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -248,239,102, 3,198, 0, 0, 0, 1, 0, 0, 0,160,241,102, 3, 80,238,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 16, 47,193, 8,198, 0, 0, 0, 1, 0, 0, 0,128, 48,193, 8,160, 45,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1286,8 +1250,8 @@ char datatoc_startup_blend[]= { 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,160,241,102, 3,198, 0, 0, 0, 1, 0, 0, 0, - 72,243,102, 3,248,239,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,108,111,114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,128, 48,193, 8,198, 0, 0, 0, 1, 0, 0, 0, +240, 49,193, 8, 16, 47,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,108,111,114, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,108,111,114, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1297,7 +1261,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0, 72,243,102, 3,198, 0, 0, 0, 1, 0, 0, 0,240,244,102, 3,160,241,102, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,240, 49,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 96, 51,193, 8,128, 48,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1307,8 +1271,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0,161,253, 7, 1,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,240,244,102, 3, -198, 0, 0, 0, 1, 0, 0, 0,152,246,102, 3, 72,243,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 96, 51,193, 8, +198, 0, 0, 0, 1, 0, 0, 0,208, 52,193, 8,240, 49,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,119,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,119,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1318,8 +1282,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,152,246,102, 3,198, 0, 0, 0, 1, 0, 0, 0, 64,248,102, 3, -240,244,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208, 52,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 64, 54,193, 8, + 96, 51,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1329,7 +1293,7 @@ char datatoc_startup_blend[]= { 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 64,248,102, 3,198, 0, 0, 0, 1, 0, 0, 0,232,249,102, 3,152,246,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 1, 0, 0, 64, 54,193, 8,198, 0, 0, 0, 1, 0, 0, 0,176, 55,193, 8,208, 52,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1339,8 +1303,8 @@ char datatoc_startup_blend[]= { 0, 0,123,253, 7, 1,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,232,249,102, 3,198, 0, 0, 0, - 1, 0, 0, 0,144,251,102, 3, 64,248,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,176, 55,193, 8,198, 0, 0, 0, + 1, 0, 0, 0, 32, 57,193, 8, 64, 54,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112, 111,105,110,116,100,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112, 111,105,110,116,100,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1350,7 +1314,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,144,251,102, 3,198, 0, 0, 0, 1, 0, 0, 0, 56,253,102, 3,232,249,102, 3, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32, 57,193, 8,198, 0, 0, 0, 1, 0, 0, 0,144, 58,193, 8,176, 55,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95, 116,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95, @@ -1361,7 +1325,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 56,253,102, 3,198, 0, 0, 0, 1, 0, 0, 0,224,254,102, 3,144,251,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, +144, 58,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 0, 60,193, 8, 32, 57,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1371,8 +1335,8 @@ char datatoc_startup_blend[]= { 7, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,224,254,102, 3,198, 0, 0, 0, 1, 0, 0, 0, -136, 0,103, 3, 56,253,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,114, 98,108, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 0, 60,193, 8,198, 0, 0, 0, 1, 0, 0, 0, +112, 61,193, 8,144, 58,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,114, 98,108, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,114, 98,108, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1382,7 +1346,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,136, 0,103, 3,198, 0, 0, 0, 1, 0, 0, 0, 48, 2,103, 3,224,254,102, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,112, 61,193, 8,198, 0, 0, 0, 1, 0, 0, 0,224, 62,193, 8, 0, 60,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1392,8 +1356,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 48, 2,103, 3, -198, 0, 0, 0, 1, 0, 0, 0,216, 3,103, 3,136, 0,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,224, 62,193, 8, +198, 0, 0, 0, 1, 0, 0, 0, 80, 64,193, 8,112, 61,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,100,105,115,116,111,114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,100,105,115,116,111,114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1403,8 +1367,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,216, 3,103, 3,198, 0, 0, 0, 1, 0, 0, 0,128, 5,103, 3, - 48, 2,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80, 64,193, 8,198, 0, 0, 0, 1, 0, 0, 0,192, 65,193, 8, +224, 62,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1414,7 +1378,7 @@ char datatoc_startup_blend[]= { 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,128, 5,103, 3,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216, 3,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 1, 0, 0,192, 65,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80, 64,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1424,15 +1388,15 @@ char datatoc_startup_blend[]= { 0, 0,183,253, 7, 1,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 40, 7,103, 3,165, 0, 0, 0, - 1, 0, 0, 0,232, 13,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 48, 67,193, 8,165, 0, 0, 0, + 1, 0, 0, 0,216, 94,186, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,192,214, 8, 3,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,104, 8,103, 3,200, 0, 0, 0, 1, 0, 0, 0,200, 9,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, + 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,176,209,189, 8,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 56, 68,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 96, 69,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -1440,16 +1404,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 9,103, 3,200, 0, 0, 0, 1, 0, 0, 0, 40, 11,103, 3, -104, 8,103, 3, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96, 69,193, 8,200, 0, 0, 0, 1, 0, 0, 0,136, 70,193, 8, + 56, 68,193, 8, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0,149, 3,223, 0, 149, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40, 11,103, 3, -200, 0, 0, 0, 1, 0, 0, 0,136, 12,103, 3,200, 9,103, 3, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136, 70,193, 8, +200, 0, 0, 0, 1, 0, 0, 0,176, 71,193, 8, 96, 69,193, 8, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, @@ -1457,7 +1421,7 @@ char datatoc_startup_blend[]= { 136, 6, 0, 0, 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,136, 12,103, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 11,103, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,176, 71,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136, 70,193, 8, 0, 0, 0, 0, 0,128,175, 68, 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0,136, 5, 0, 0, 153, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 135, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -1465,189 +1429,189 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0,232, 13,103, 3,168, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 40, 7,103, 3,104, 8,103, 3,136, 12,103, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0,216, 94,186, 8,168, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 48, 67,193, 8, 56, 68,193, 8,176, 71,193, 8, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,136, 14,103, 3,199, 0, 0, 0, 1, 0, 0, 0, 80, 15,103, 3,248,204,102, 3,176,180,102, 3, 96,185,102, 3, -216,185,102, 3,128,183,102, 3, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 15, 15,108, 5, - 80, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,147,240, 2,240, 66,105, 3,240, 66,105, 3, 48, 64,105, 3,144, 65,105, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 40, 48, 83, 3, 8,153, 8, 3, 68, 65, 84, 65,248, 0, 0, 0, 48, 64,105, 3,200, 0, 0, 0, - 1, 0, 0, 0,144, 65,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,137, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 96, 0, 0, 0,216, 72,193, 8,199, 0, 0, 0, 1, 0, 0, 0,184, 75,193, 8,160, 22,193, 8,176, 6,193, 8,128, 9,193, 8, +200, 9,193, 8, 96, 8,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 15, 15,108, 5, + 80, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 32,227, 2, 64, 85,171, 8, 64, 85,171, 8,104, 73,193, 8,144, 74,193, 8, + 0, 0, 0, 0, 0, 0, 0, 0,184,225,174, 8,152,209,174, 8, 68, 65, 84, 65,248, 0, 0, 0,104, 73,193, 8,200, 0, 0, 0, + 1, 0, 0, 0,144, 74,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,137, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,173, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,108, 5, 26, 0,108, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 26, 0, 20, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,149,240, 2,192,138, 77, 3, -192,138, 77, 3, 0, 0, 0, 0, 0, 0, 0, 0,192,239, 82, 3, 72,221, 82, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,144, 65,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48, 64,105, 3, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 26, 0, 5, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 33,227, 2, 88,101,186, 8, + 88,101,186, 8, 0, 0, 0, 0, 0, 0, 0, 0, 40,175,237, 2,192,173,237, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,144, 74,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104, 73,193, 8, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 18, 0, 0, 0, 53, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,108, 5, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 26, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,108, 5, 54, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,104,148,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 98, 84, 3, 32, 99, 82, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0,240, 66,105, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,108, 5, 54, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24, 33,227, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,173,237, 2,112,204,237, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 64, 85,171, 8,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, - 80, 15,103, 3,199, 0, 0, 0, 1, 0, 0, 0,176, 73,105, 3,136, 14,103, 3,112,184,102, 3,248,183,102, 3, 8,183,102, 3, -232,184,102, 3, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, 5, 3, 0, 0,174, 3, 0, 0, 3, 3, 28, 1,170, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8,145,240, 2,208, 70,105, 3,208, 70,105, 3, 16, 68,105, 3,112, 69,105, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 8,252, 82, 3, 96,100, 82, 3, 68, 65, 84, 65,248, 0, 0, 0, 16, 68,105, 3,200, 0, 0, 0, 1, 0, 0, 0, -112, 69,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,142, 67, +184, 75,193, 8,199, 0, 0, 0, 1, 0, 0, 0,160, 80,193, 8,216, 72,193, 8,240, 8,193, 8,168, 8,193, 8, 24, 8,193, 8, + 56, 9,193, 8, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, 5, 3, 0, 0,174, 3, 0, 0, 3, 3, 28, 1,170, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0,120, 30,227, 2,152, 78,193, 8,152, 78,193, 8, 72, 76,193, 8,112, 77,193, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 56,209,174, 8,112,138,169, 8, 68, 65, 84, 65,248, 0, 0, 0, 72, 76,193, 8,200, 0, 0, 0, 1, 0, 0, 0, +112, 77,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,142, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 28, 1, 26, 0, 28, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0,149, 3, 0, 0, -174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 26, 0, 22, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,146,240, 2,208,140, 77, 3,208,140, 77, 3, - 0, 0, 0, 0, 0, 0, 0, 0,160,217, 76, 3,176,219, 76, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -112, 69,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 68,105, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, +174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 26, 0, 7, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 31,227, 2,240,107,186, 8,240,107,186, 8, + 0, 0, 0, 0, 0, 0, 0, 0,248,203,237, 2, 56,236,238, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +112, 77,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72, 76,193, 8, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,133, 67, 0, 0,252,194, 0, 0, 0, 0, 11, 1, 0, 0, 28, 1, 0, 0, 18, 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 28, 1,144, 0, 11, 1,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 5, 0, 0,136, 6, 0, 0, 5, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 28, 1,144, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248,145,240, 2, 40, 52,109, 3, 40, 52,109, 3, 0, 0, 0, 0, 0, 0, 0, 0,184,167, 78, 3, 24,169, 78, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,208, 70,105, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 28, 1,144, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 56, 31,227, 2, 32, 69,174, 8, 32, 69,174, 8, 0, 0, 0, 0, 0, 0, 0, 0,192,235,238, 2,208,234,238, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,152, 78,193, 8,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,221, 76, 3, 56,221, 76, 3, 48, 72,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,189,245, 2, 24,189,245, 2, 64,174,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 48, 72,105, 3, -223, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,160, 72,105, 3, 68, 65, 84, 65,168, 0, 0, 0,160, 72,105, 3, -222, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,136,106, 3, 19, 0, 0, 0, 1, 0, 1, 0, 48,136,106, 3, - 20, 0, 0, 0, 1, 0, 1, 0, 48,136,106, 3, 21, 0, 1, 0, 1, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, - 96,158,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 16,165,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 72,247,107, 3, 0, 0, 0, 0, - 1, 0, 1, 0,136,174,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 88, 84,107, 3, 0, 0, 0, 0, 1, 0, 1, 0, 72,170,106, 3, - 0, 0, 0, 0, 1, 0, 1, 0, 16,154,106, 3, 0, 0, 0, 0, 1, 0, 1, 0,208,160,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, - 64,153,106, 3, 21, 0, 0, 0, 1, 0, 1, 0, 48,136,106, 3, 68, 65, 84, 65, 96, 0, 0, 0,176, 73,105, 3,199, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 80, 15,103, 3, 96,185,102, 3,144,182,102, 3,248,183,102, 3,216,185,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 64,174,226, 2, +223, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,200, 79,193, 8, 68, 65, 84, 65,168, 0, 0, 0,200, 79,193, 8, +222, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 88, 79,194, 8, 19, 0, 0, 0, 1, 0, 1, 0, 88, 79,194, 8, + 20, 0, 0, 0, 1, 0, 1, 0, 88, 79,194, 8, 21, 0, 1, 0, 1, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 1, 0, 1, 0, +128,222,172, 8, 0, 0, 0, 0, 1, 0, 1, 0,160, 94,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,112,172,195, 8, 0, 0, 0, 0, + 1, 0, 1, 0,128,103,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,176, 10,195, 8, 0, 0, 0, 0, 1, 0, 1, 0,112, 99,194, 8, + 0, 0, 0, 0, 1, 0, 1, 0,168, 88,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,144, 90,194, 8, 0, 0, 0, 0, 1, 0, 1, 0, + 16, 88,194, 8, 21, 0, 0, 0, 1, 0, 1, 0, 88, 79,194, 8, 68, 65, 84, 65, 96, 0, 0, 0,160, 80,193, 8,199, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,184, 75,193, 8,128, 9,193, 8,208, 7,193, 8,168, 8,193, 8,200, 9,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 81, 0, 0, 0,174, 3, 0, 0, 1, 1,108, 5, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, -232,149,240, 2,144,106,105, 3,192,161,105, 3,120, 74,105, 3,128,101,105, 3, 0, 0, 0, 0, 0, 0, 0, 0,200,169, 78, 3, - 72,191, 77, 3, 68, 65, 84, 65,248, 0, 0, 0,120, 74,105, 3,200, 0, 0, 0, 1, 0, 0, 0,216, 75,105, 3, 0, 0, 0, 0, + 56, 34,227, 2, 32,109,193, 8,144, 81,186, 8, 48, 81,193, 8,128,104,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,192,201,170, 8, +160,177,241, 2, 68, 65, 84, 65,248, 0, 0, 0, 48, 81,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 88, 82,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,173, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,108, 5, 26, 0,108, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 81, 0, 0, 0,106, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 26, 0, 24, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,159,240, 2,144,176,101, 3,144,176,101, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 29, 76, 3,184,201, 82, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216, 75,105, 3,200, 0, 0, 0, - 1, 0, 0, 0, 24, 97,105, 3,120, 74,105, 3, 0, 0, 0, 0, 0, 0, 32, 67, 0, 64, 3,196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 26, 0, 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 41,227, 2, 64,135,188, 8, 64,135,188, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 32,133,239, 2,120,142,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88, 82,193, 8,200, 0, 0, 0, + 1, 0, 0, 0,192,100,193, 8, 48, 81,193, 8, 0, 0, 0, 0, 0, 0, 32, 67, 0, 64, 3,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 3,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 13, 2,143, 0, 13, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0, -162, 1, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 13, 2, 25, 0, 5, 0, - 3, 0, 0, 0, 0, 0, 0, 0,160, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,156,240, 2,224,128, 82, 3, -224,128, 82, 3, 56, 77,105, 3,112, 95,105, 3,232,202, 82, 3,232,207, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 56, 77,105, 3,198, 0, 0, 0, 1, 0, 0, 0,224, 78,105, 3, 0, 0, 0, 0,200, 81, 4, 3, 0, 0, 0, 0, +162, 1, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 13, 2, 10, 0, 5, 0, + 3, 0, 0, 0, 0, 0, 0, 0,160, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 39,227, 2, 24, 49,175, 8, + 24, 49,175, 8,128, 83,193, 8, 80, 99,193, 8, 0,142,248, 2,112,191,241, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0,128, 83,193, 8,198, 0, 0, 0, 1, 0, 0, 0,240, 84,193, 8, 0, 0, 0, 0,192,185,242, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 42,254,143, 0,190, 1, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 42,254,143, 0,190, 1, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,224, 78,105, 3,198, 0, 0, 0, - 1, 0, 0, 0,136, 80,105, 3, 56, 77,105, 3,232,106, 4, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,240, 84,193, 8,198, 0, 0, 0, + 1, 0, 0, 0, 96, 86,193, 8,128, 83,193, 8, 0,206,242, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, 111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, 111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117,254,143, 0,115, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,136, 80,105, 3,198, 0, 0, 0, 1, 0, 0, 0, 48, 82,105, 3,224, 78,105, 3, - 0,109, 4, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 96, 86,193, 8,198, 0, 0, 0, 1, 0, 0, 0,208, 87,193, 8,240, 84,193, 8, +176,207,242, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101, 120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101, 120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,252,143, 0,213, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,252,143, 0,213, 1, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 48, 82,105, 3,198, 0, 0, 0, 1, 0, 0, 0,216, 83,105, 3,136, 80,105, 3, 24,111, 4, 3, 0, 0, 0, 0, 86, 73, 69, 87, +208, 87,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 64, 89,193, 8, 96, 86,193, 8, 96,209,242, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,114,111, 107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130,253, -143, 0,195, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +143, 0,195, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,216, 83,105, 3,198, 0, 0, 0, 1, 0, 0, 0, -128, 85,105, 3, 48, 82,105, 3, 48,113, 4, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 64, 89,193, 8,198, 0, 0, 0, 1, 0, 0, 0, +176, 90,193, 8,208, 87,193, 8, 16,211,242, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,253,143, 0,231, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,253,143, 0,231, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,128, 85,105, 3,198, 0, 0, 0, 1, 0, 0, 0, 40, 87,105, 3,216, 83,105, 3, 72,115, 4, 3, + 68, 65, 84, 65, 64, 1, 0, 0,176, 90,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 32, 92,193, 8, 64, 89,193, 8,192,212,242, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 58,253,143, 0,171, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 96,253,143, 0,133, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 40, 87,105, 3, -198, 0, 0, 0, 1, 0, 0, 0,208, 88,105, 3,128, 85,105, 3, 96,117, 4, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32, 92,193, 8, +198, 0, 0, 0, 1, 0, 0, 0,144, 93,193, 8,176, 90,193, 8,112,214,242, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,169,253,143, 0, 36, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208, 88,105, 3,198, 0, 0, 0, 1, 0, 0, 0,120, 90,105, 3, - 40, 87,105, 3,120,119, 4, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,144, 93,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 0, 95,193, 8, + 32, 92,193, 8, 32,216,242, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109, 109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109, 109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142,253,143, 0,135, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142,253,143, 0,135, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,120, 90,105, 3,198, 0, 0, 0, 1, 0, 0, 0, 32, 92,105, 3,208, 88,105, 3,144,121, 4, 3, 0, 0, 0, 0, + 64, 1, 0, 0, 0, 95,193, 8,198, 0, 0, 0, 1, 0, 0, 0,112, 96,193, 8,144, 93,193, 8,208,217,242, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,173,253,143, 0, 80, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,173,253,143, 0, 80, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32, 92,105, 3,198, 0, 0, 0, - 1, 0, 0, 0,200, 93,105, 3,120, 90,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,112, 96,193, 8,198, 0, 0, 0, + 1, 0, 0, 0,224, 97,193, 8, 0, 95,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, 111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, 111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1657,7 +1621,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,200, 93,105, 3,198, 0, 0, 0, 1, 0, 0, 0,112, 95,105, 3, 32, 92,105, 3, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,224, 97,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 80, 99,193, 8,112, 96,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97, 105,110,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97, @@ -1668,7 +1632,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -112, 95,105, 3,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,200, 93,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, + 80, 99,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224, 97,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1678,43 +1642,43 @@ char datatoc_startup_blend[]= { 183, 0, 9, 1, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24, 97,105, 3,200, 0, 0, 0, 1, 0, 0, 0, - 32,100,105, 3,216, 75,105, 3, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,157,195, 0, 0, 0, 0, 0, 0, 0, 0,227,102, 16, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,100,193, 8,200, 0, 0, 0, 1, 0, 0, 0, + 88,103,193, 8, 88, 82,193, 8, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,157,195, 0, 0, 0, 0, 0, 0, 0, 0,227,102, 16, 67, 66, 6,157,195, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 55, 1,143, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,107, 0, 0, 0, -161, 1, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,107, 0, 0, 0,161, 1, 0, 0,160, 0, 55, 1, 26, 0, 6, 0, 34, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,157,240, 2,152,101,109, 3,152,101,109, 3, -120, 98,105, 3,120, 98,105, 3, 24,209, 0, 3,168,255, 82, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -120, 98,105, 3,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,157,240, 2, 0, 0, 0, 0, 86, 73, 69, 87, +161, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 55, 1, 11, 0, 6, 0, 34, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 40,227, 2,120,243,173, 8,120,243,173, 8, +232,101,193, 8,232,101,193, 8,248,190,241, 2,200,140,237, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +232,101,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 40,227, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,101,108,101, - 99,116, 32, 97,110,100, 32, 69,120,101, 99,117,116,101, 0,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,101,114, + 97,116,111,114, 0,100, 32, 69,120,101, 99,117,116,101, 0,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,255, 144, 0, 16, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,100,105, 3,200, 0, 0, 0, 1, 0, 0, 0, -128,101,105, 3, 24, 97,105, 3, 0, 0, 0, 0, 0, 0, 52, 67, 0,192,115,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,103,193, 8,200, 0, 0, 0, 1, 0, 0, 0, +128,104,193, 8,192,100,193, 8, 0, 0, 0, 0, 0, 0, 52, 67, 0,192,115,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,115,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, 207, 3,163, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0,107, 5, 0, 0,107, 0, 0, 0, -174, 3, 0, 0,107, 5, 0, 0,107, 5, 0, 0,107, 0, 0, 0,174, 3, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,151,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, +174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 35,227, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -128,101,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32,100,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128,104,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88,103,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0,107, 5, 0, 0,107, 0, 0, 0,174, 3, 0, 0,160, 0, 0, 0,107, 5, 0, 0,107, 0, 0, 0,174, 3, 0, 0, -204, 4, 68, 3, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216,150,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 85, 1, 3, 0, 85, 1, 3, 0, 0, 0, 0, -224,102,105, 3, 68, 65, 84, 65, 72, 3, 0, 0,224,102,105, 3,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, +204, 4, 68, 3, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 34,227, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 74,245, 2, 8, 74,245, 2, 0, 0, 0, 0, +168,105,193, 8, 68, 65, 84, 65, 72, 3, 0, 0,168,105,193, 8,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92,165,205, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,218,205, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190, 184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, @@ -1741,16 +1705,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 30, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,144,106,105, 3,160, 0, 0, 0, 1, 0, 0, 0,176,110,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 32,109,193, 8,160, 0, 0, 0, 1, 0, 0, 0,152,112,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,208,160,106, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,144, 90,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 24, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 64,156, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,107,105, 3,200, 0, 0, 0, 1, 0, 0, 0, - 80,109,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 48, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,110,193, 8,200, 0, 0, 0, 1, 0, 0, 0, +112,111,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 48, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,197, 68, 0, 0,200, 65, 0,224,197, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, @@ -1758,7 +1722,7 @@ char datatoc_startup_blend[]= { 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 80,109,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240,107,105, 3, 0, 0, 0, 0, 0,128,241, 67, 0,128, 90,196, +112,111,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72,110,193, 8, 0, 0, 0, 0, 0,128,241, 67, 0,128, 90,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,195, 68, 0, 64,111,196, 0, 0, 0, 0, 31, 6, 0, 0, 48, 6, 0, 0, 18, 0, 0, 0, 206, 3, 0, 0, 0, 0, 0, 0, 30, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 30, 6, 0, 0, 18, 0, 0, 0, 206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, @@ -1766,22 +1730,22 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,176,110,105, 3,169, 0, 0, 0, 1, 0, 0, 0,192,122,105, 3,144,106,105, 3, -240,107,105, 3, 80,109,105, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,152,112,193, 8,169, 0, 0, 0, 1, 0, 0, 0,248,122,193, 8, 32,109,193, 8, + 72,110,193, 8,112,111,193, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,112,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,177,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 16,112,105, 3, -223, 0, 0, 0, 1, 0, 0, 0, 93, 0, 0, 0, 93, 0, 0, 0,128,112,105, 3, 68, 65, 84, 65, 92, 4, 0, 0,128,112,105, 3, -222, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 19, 0, 0, 0, 1, 0, 0, 0, 48,136,106, 3, - 20, 0, 0, 0, 1, 0, 0, 0, 48,136,106, 3, 21, 0, 0, 0, 1, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 1, 0, 0, 0, - 96,158,106, 3, 0, 0, 0, 0, 1, 0, 0, 0, 16,165,106, 3, 0, 0, 0, 0, 1, 0, 0, 0, 72,247,107, 3, 0, 0, 0, 0, - 1, 0, 0, 0,136,174,106, 3, 0, 0, 0, 0, 1, 0, 0, 0, 88, 84,107, 3, 0, 0, 0, 0, 1, 0, 0, 0, 72,170,106, 3, - 0, 0, 0, 0, 1, 0, 0, 0, 16,154,106, 3, 0, 0, 0, 0, 1, 0, 0, 0,208,160,106, 3, 0, 0, 0, 0, 1, 0, 0, 0, - 64,153,106, 3, 30, 0,255,255, 0, 0, 1, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 8,177,226, 2, +223, 0, 0, 0, 1, 0, 0, 0, 93, 0, 0, 0, 93, 0, 0, 0,200,113,193, 8, 68, 65, 84, 65, 92, 4, 0, 0,200,113,193, 8, +222, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 19, 0, 0, 0, 1, 0, 0, 0, 88, 79,194, 8, + 20, 0, 0, 0, 1, 0, 0, 0, 88, 79,194, 8, 21, 0, 0, 0, 1, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 1, 0, 0, 0, +128,222,172, 8, 0, 0, 0, 0, 1, 0, 0, 0,160, 94,194, 8, 0, 0, 0, 0, 1, 0, 0, 0,112,172,195, 8, 0, 0, 0, 0, + 1, 0, 0, 0,128,103,194, 8, 0, 0, 0, 0, 1, 0, 0, 0,176, 10,195, 8, 0, 0, 0, 0, 1, 0, 0, 0,112, 99,194, 8, + 0, 0, 0, 0, 1, 0, 0, 0,168, 88,194, 8, 0, 0, 0, 0, 1, 0, 0, 0,144, 90,194, 8, 0, 0, 0, 0, 1, 0, 0, 0, + 16, 88,194, 8, 30, 0,255,255, 0, 0, 1, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 9, 0, @@ -1811,7 +1775,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,117,105, 3,200, 0, 0, 0, 1, 0, 0, 0,160,118,105, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,118,193, 8,200, 0, 0, 0, 1, 0, 0, 0,128,119,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,197, 68, 0, 0,200, 65, 0,224,197, 68, 0, 0,200, 65, @@ -1819,8 +1783,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160,118,105, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0,120,105, 3, 64,117,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,119,193, 8,200, 0, 0, 0, + 1, 0, 0, 0,168,120,193, 8, 88,118,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1828,7 +1792,7 @@ char datatoc_startup_blend[]= { 119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 0,120,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 96,121,105, 3,160,118,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, +248, 0, 0, 0,168,120,193, 8,200, 0, 0, 0, 1, 0, 0, 0,208,121,193, 8,128,119,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1836,16 +1800,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 47, 6, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,121,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0,120,105, 3, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 38,192, 0, 0,102, 64, 0,192,179,191, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,121,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +168,120,193, 8, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 38,192, 0, 0,102, 64, 0,192,179,191, 0,224, 25, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 0, 0, 0, 0, 0, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0,192,122,105, 3, -170, 0, 0, 0, 1, 0, 0, 0,192,161,105, 3,176,110,105, 3, 64,117,105, 3, 96,121,105, 3, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0,248,122,193, 8, +170, 0, 0, 0, 1, 0, 0, 0,144, 81,186, 8,152,112,193, 8, 88,118,193, 8,208,121,193, 8, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2110,7 +2074,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 64,156,105, 3,200, 0, 0, 0, 1, 0, 0, 0,160,157,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 64,156,193, 8,200, 0, 0, 0, 1, 0, 0, 0,104,157,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, @@ -2118,8 +2082,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160,157,105, 3,200, 0, 0, 0, 1, 0, 0, 0, - 0,159,105, 3, 64,156,105, 3, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104,157,193, 8,200, 0, 0, 0, 1, 0, 0, 0, +144,158,193, 8, 64,156,193, 8, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0, @@ -2127,7 +2091,7 @@ char datatoc_startup_blend[]= { 148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 0,159,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 96,160,105, 3,160,157,105, 3, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, +144,158,193, 8,200, 0, 0, 0, 1, 0, 0, 0,184,159,193, 8,104,157,193, 8, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -2135,7 +2099,7 @@ char datatoc_startup_blend[]= { 240, 0, 0, 0,136, 6, 0, 0, 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 5, 60, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,160,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,159,105, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,159,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144,158,193, 8, 0, 0, 0, 0, 0,128,175, 68, 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0, 136, 5, 0, 0,153, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2143,65 +2107,65 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0,192,161,105, 3,168, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,192,122,105, 3, 64,156,105, 3, 96,160,105, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0,144, 81,186, 8,168, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,248,122,193, 8, 64,156,193, 8,184,159,193, 8, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, - 83, 78, 0, 0,140, 0, 0, 0,216,198,102, 3,195, 0, 0, 0, 1, 0, 0, 0,192,214,105, 3,192,179,102, 3, 0, 0, 0, 0, + 83, 78, 0, 0,140, 0, 0, 0,112,200,254, 2,195, 0, 0, 0, 1, 0, 0, 0,224,193,254, 2,176, 70,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97,109,101, 32, 76,111,103,105, 99, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200,199,102, 3,232,163,105, 3, 96,164,105, 3, 96,174,105, 3,224,174,105, 3,208,207,105, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64,161,193, 8,232,164,193, 8, 48,165,193, 8,208,170,193, 8, 24,171,193, 8, 64,194,193, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,200,199,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 64,200,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64,200,102, 3,196, 0, 0, 0, 1, 0, 0, 0,184,200,102, 3, -200,199,102, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184,200,102, 3,196, 0, 0, 0, - 1, 0, 0, 0, 48,201,102, 3, 64,200,102, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 48,201,102, 3,196, 0, 0, 0, 1, 0, 0, 0,168,201,102, 3,184,200,102, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,168,201,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 32,202,102, 3, 48,201,102, 3, 0, 0, 0, 0, - 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32,202,102, 3,196, 0, 0, 0, 1, 0, 0, 0,152,202,102, 3, -168,201,102, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152,202,102, 3,196, 0, 0, 0, - 1, 0, 0, 0, 16,203,102, 3, 32,202,102, 3, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 16,203,102, 3,196, 0, 0, 0, 1, 0, 0, 0,136,203,102, 3,152,202,102, 3, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,136,203,102, 3,196, 0, 0, 0, 1, 0, 0, 0, 0,204,102, 3, 16,203,102, 3, 0, 0, 0, 0, - 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0,204,102, 3,196, 0, 0, 0, 1, 0, 0, 0,120,204,102, 3, -136,203,102, 3, 0, 0, 0, 0,254, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120,204,102, 3,196, 0, 0, 0, - 1, 0, 0, 0,248,162,105, 3, 0,204,102, 3, 0, 0, 0, 0,124, 3, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -248,162,105, 3,196, 0, 0, 0, 1, 0, 0, 0,112,163,105, 3,120,204,102, 3, 0, 0, 0, 0,124, 3,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,112,163,105, 3,196, 0, 0, 0, 1, 0, 0, 0,232,163,105, 3,248,162,105, 3, 0, 0, 0, 0, -212, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232,163,105, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -112,163,105, 3, 0, 0, 0, 0,212, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,164,105, 3,197, 0, 0, 0, - 1, 0, 0, 0,224,164,105, 3, 0, 0, 0, 0, 64,200,102, 3,184,200,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,224,164,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,165,105, 3, 96,164,105, 3, 64,200,102, 3,168,201,102, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,165,105, 3,197, 0, 0, 0, 1, 0, 0, 0,224,165,105, 3, -224,164,105, 3,184,200,102, 3, 32,202,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,165,105, 3, -197, 0, 0, 0, 1, 0, 0, 0, 96,166,105, 3, 96,165,105, 3,168,201,102, 3, 32,202,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 96,166,105, 3,197, 0, 0, 0, 1, 0, 0, 0,224,166,105, 3,224,165,105, 3,168,201,102, 3, -152,202,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,166,105, 3,197, 0, 0, 0, 1, 0, 0, 0, - 96,167,105, 3, 96,166,105, 3,152,202,102, 3, 16,203,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 96,167,105, 3,197, 0, 0, 0, 1, 0, 0, 0,224,167,105, 3,224,166,105, 3, 48,201,102, 3,136,203,102, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,167,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,168,105, 3, 96,167,105, 3, - 16,203,102, 3,136,203,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,168,105, 3,197, 0, 0, 0, - 1, 0, 0, 0,224,168,105, 3,224,167,105, 3,200,199,102, 3,152,202,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,224,168,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,169,105, 3, 96,168,105, 3,200,199,102, 3,136,203,102, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,169,105, 3,197, 0, 0, 0, 1, 0, 0, 0,224,169,105, 3, -224,168,105, 3, 32,202,102, 3, 0,204,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,169,105, 3, -197, 0, 0, 0, 1, 0, 0, 0, 96,170,105, 3, 96,169,105, 3, 48,201,102, 3, 0,204,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 96,170,105, 3,197, 0, 0, 0, 1, 0, 0, 0,224,170,105, 3,224,169,105, 3, 16,203,102, 3, - 0,204,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,170,105, 3,197, 0, 0, 0, 1, 0, 0, 0, - 96,171,105, 3, 96,170,105, 3,120,204,102, 3,248,162,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 96,171,105, 3,197, 0, 0, 0, 1, 0, 0, 0,224,171,105, 3,224,170,105, 3, 32,202,102, 3,248,162,105, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,171,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,172,105, 3, 96,171,105, 3, - 0,204,102, 3,120,204,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,172,105, 3,197, 0, 0, 0, - 1, 0, 0, 0,224,172,105, 3,224,171,105, 3,152,202,102, 3,112,163,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,224,172,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,173,105, 3, 96,172,105, 3,120,204,102, 3,112,163,105, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,173,105, 3,197, 0, 0, 0, 1, 0, 0, 0,224,173,105, 3, -224,172,105, 3,168,201,102, 3,232,163,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,173,105, 3, -197, 0, 0, 0, 1, 0, 0, 0, 96,174,105, 3, 96,173,105, 3,248,162,105, 3,232,163,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 96,174,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224,173,105, 3,112,163,105, 3, -232,163,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,224,174,105, 3,199, 0, 0, 0, 1, 0, 0, 0, -104,178,105, 3, 0, 0, 0, 0,168,201,102, 3, 64,200,102, 3,184,200,102, 3, 32,202,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 64,161,193, 8,196, 0, 0, 0, 1, 0, 0, 0,136,161,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,161,193, 8,196, 0, 0, 0, 1, 0, 0, 0,208,161,193, 8, + 64,161,193, 8, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208,161,193, 8,196, 0, 0, 0, + 1, 0, 0, 0, 24,162,193, 8,136,161,193, 8, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 24,162,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 96,162,193, 8,208,161,193, 8, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 96,162,193, 8,196, 0, 0, 0, 1, 0, 0, 0,168,162,193, 8, 24,162,193, 8, 0, 0, 0, 0, + 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,162,193, 8,196, 0, 0, 0, 1, 0, 0, 0,240,162,193, 8, + 96,162,193, 8, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,162,193, 8,196, 0, 0, 0, + 1, 0, 0, 0, 56,163,193, 8,168,162,193, 8, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 56,163,193, 8,196, 0, 0, 0, 1, 0, 0, 0,128,163,193, 8,240,162,193, 8, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,128,163,193, 8,196, 0, 0, 0, 1, 0, 0, 0,200,163,193, 8, 56,163,193, 8, 0, 0, 0, 0, + 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200,163,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 16,164,193, 8, +128,163,193, 8, 0, 0, 0, 0,254, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 16,164,193, 8,196, 0, 0, 0, + 1, 0, 0, 0, 88,164,193, 8,200,163,193, 8, 0, 0, 0, 0,124, 3, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 88,164,193, 8,196, 0, 0, 0, 1, 0, 0, 0,160,164,193, 8, 16,164,193, 8, 0, 0, 0, 0,124, 3,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,160,164,193, 8,196, 0, 0, 0, 1, 0, 0, 0,232,164,193, 8, 88,164,193, 8, 0, 0, 0, 0, +212, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232,164,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +160,164,193, 8, 0, 0, 0, 0,212, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,165,193, 8,197, 0, 0, 0, + 1, 0, 0, 0,120,165,193, 8, 0, 0, 0, 0,136,161,193, 8,208,161,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,120,165,193, 8,197, 0, 0, 0, 1, 0, 0, 0,192,165,193, 8, 48,165,193, 8,136,161,193, 8, 96,162,193, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192,165,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 8,166,193, 8, +120,165,193, 8,208,161,193, 8,168,162,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,166,193, 8, +197, 0, 0, 0, 1, 0, 0, 0, 80,166,193, 8,192,165,193, 8, 96,162,193, 8,168,162,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 80,166,193, 8,197, 0, 0, 0, 1, 0, 0, 0,152,166,193, 8, 8,166,193, 8, 96,162,193, 8, +240,162,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,166,193, 8,197, 0, 0, 0, 1, 0, 0, 0, +224,166,193, 8, 80,166,193, 8,240,162,193, 8, 56,163,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +224,166,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 40,167,193, 8,152,166,193, 8, 24,162,193, 8,128,163,193, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,167,193, 8,197, 0, 0, 0, 1, 0, 0, 0,112,167,193, 8,224,166,193, 8, + 56,163,193, 8,128,163,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,167,193, 8,197, 0, 0, 0, + 1, 0, 0, 0,184,167,193, 8, 40,167,193, 8, 64,161,193, 8,240,162,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,184,167,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 0,168,193, 8,112,167,193, 8, 64,161,193, 8,128,163,193, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0,168,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 72,168,193, 8, +184,167,193, 8,168,162,193, 8,200,163,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72,168,193, 8, +197, 0, 0, 0, 1, 0, 0, 0,144,168,193, 8, 0,168,193, 8, 24,162,193, 8,200,163,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,144,168,193, 8,197, 0, 0, 0, 1, 0, 0, 0,216,168,193, 8, 72,168,193, 8, 56,163,193, 8, +200,163,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,168,193, 8,197, 0, 0, 0, 1, 0, 0, 0, + 32,169,193, 8,144,168,193, 8, 16,164,193, 8, 88,164,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 32,169,193, 8,197, 0, 0, 0, 1, 0, 0, 0,104,169,193, 8,216,168,193, 8,168,162,193, 8, 88,164,193, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,169,193, 8,197, 0, 0, 0, 1, 0, 0, 0,176,169,193, 8, 32,169,193, 8, +200,163,193, 8, 16,164,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,169,193, 8,197, 0, 0, 0, + 1, 0, 0, 0,248,169,193, 8,104,169,193, 8,240,162,193, 8,160,164,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,248,169,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 64,170,193, 8,176,169,193, 8, 16,164,193, 8,160,164,193, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64,170,193, 8,197, 0, 0, 0, 1, 0, 0, 0,136,170,193, 8, +248,169,193, 8, 96,162,193, 8,232,164,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136,170,193, 8, +197, 0, 0, 0, 1, 0, 0, 0,208,170,193, 8, 64,170,193, 8, 88,164,193, 8,232,164,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,208,170,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136,170,193, 8,160,164,193, 8, +232,164,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 24,171,193, 8,199, 0, 0, 0, 1, 0, 0, 0, +168,171,193, 8, 0, 0, 0, 0, 96,162,193, 8,136,161,193, 8,208,161,193, 8,168,162,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, - 40,214,105, 3, 40,214,105, 3,168,175,105, 3, 8,177,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,168,175,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 8,177,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 80,198,193, 8, 80,198,193, 8,120, 21,193, 8, 80, 20,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,120, 21,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 80, 20,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, @@ -2209,8 +2173,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,177,105, 3,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,168,175,105, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 20,193, 8,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,120, 21,193, 8, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, @@ -2218,11 +2182,11 @@ char datatoc_startup_blend[]= { 214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -104,178,105, 3,199, 0, 0, 0, 1, 0, 0, 0, 48,183,105, 3,224,174,105, 3,136,203,102, 3, 16,203,102, 3, 0,204,102, 3, - 48,201,102, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 4, 4,234, 0, 20, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,181,105, 3,240,181,105, 3, 48,179,105, 3,144,180,105, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,179,105, 3,200, 0, 0, 0, 1, 0, 0, 0, -144,180,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, +168,171,193, 8,199, 0, 0, 0, 1, 0, 0, 0, 64,173,193, 8, 24,171,193, 8,128,163,193, 8, 56,163,193, 8,200,163,193, 8, + 24,162,193, 8, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 4, 4,234, 0, 20, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,172,193, 8, 56,172,193, 8, 40, 19,193, 8, 0, 18,193, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40, 19,193, 8,200, 0, 0, 0, 1, 0, 0, 0, + 0, 18,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, @@ -2230,7 +2194,7 @@ char datatoc_startup_blend[]= { 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -144,180,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,179,105, 3, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, + 0, 18,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 19,193, 8, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 88, 67,254,255,116,195, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0, 244, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, @@ -2238,18 +2202,18 @@ char datatoc_startup_blend[]= { 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,240,181,105, 3,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 56,172,193, 8,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 48,183,105, 3,199, 0, 0, 0, - 1, 0, 0, 0,176,188,105, 3,104,178,105, 3,200,199,102, 3,152,202,102, 3, 16,203,102, 3,136,203,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 64,173,193, 8,199, 0, 0, 0, + 1, 0, 0, 0,184,177,193, 8,168,171,193, 8, 64,161,193, 8,240,162,193, 8, 56,163,193, 8,128,163,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 17, 17, 20, 4, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 24,188,105, 3, 24,188,105, 3,248,183,105, 3,184,186,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,183,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 88,185,105, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 80,177,193, 8, 80,177,193, 8,208,173,193, 8, 40,176,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,173,193, 8,200, 0, 0, 0, 1, 0, 0, 0,248,174,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, @@ -2257,8 +2221,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,185,105, 3,200, 0, 0, 0, - 1, 0, 0, 0,184,186,105, 3,248,183,105, 3, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,122,195, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,174,193, 8,200, 0, 0, 0, + 1, 0, 0, 0, 40,176,193, 8,208,173,193, 8, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,122,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,122,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, @@ -2266,7 +2230,7 @@ char datatoc_startup_blend[]= { 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,250, 0, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,184,186,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88,185,105, 3, 0, 0, 0, 0, 0, 0,160, 68, +248, 0, 0, 0, 40,176,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248,174,193, 8, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67, 4, 0, 39,195, 0,224,180, 68, 1, 0,224,194, 0, 0,176, 67, 39, 3, 0, 0, 56, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, @@ -2274,13 +2238,13 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,220, 0, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 3,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 52, 0, 0, 0, 24,188,105, 3,178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 52, 0, 0, 0, 80,177,193, 8,178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,176,188,105, 3,199, 0, 0, 0, - 1, 0, 0, 0, 24,195,105, 3, 48,183,105, 3,120,204,102, 3,248,162,105, 3, 32,202,102, 3, 0,204,102, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,184,177,193, 8,199, 0, 0, 0, + 1, 0, 0, 0, 72,183,193, 8, 64,173,193, 8, 16,164,193, 8, 88,164,193, 8,168,162,193, 8,200,163,193, 8, 0, 0, 0, 0, 125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 9, 9,130, 1,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 56,192,105, 3, 56,192,105, 3,120,189,105, 3,216,190,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,189,105, 3,200, 0, 0, 0, 1, 0, 0, 0,216,190,105, 3, 0, 0, 0, 0, + 0, 0, 0, 0,152,180,193, 8,152,180,193, 8, 72,178,193, 8,112,179,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,178,193, 8,200, 0, 0, 0, 1, 0, 0, 0,112,179,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,193, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,181, 67, 0, 0,200, 65, 0,128,181, 67, 0, 0,200, 65, @@ -2288,8 +2252,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,190,105, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,120,189,105, 3, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,179,193, 8,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 72,178,193, 8, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, 0, 0, 0, 0, 131,248, 1, 68, 0, 0, 0, 0,126, 86, 5, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, @@ -2297,7 +2261,7 @@ char datatoc_startup_blend[]= { 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -124, 2, 0, 0, 56,192,105, 3,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +124, 2, 0, 0,152,180,193, 8,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2317,11 +2281,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 24,195,105, 3,199, 0, 0, 0, 1, 0, 0, 0, -208,207,105, 3,176,188,105, 3,112,163,105, 3,232,163,105, 3,248,162,105, 3,120,204,102, 3, 0, 0, 0, 0,213, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 72,183,193, 8,199, 0, 0, 0, 1, 0, 0, 0, + 64,194,193, 8,184,177,193, 8,160,164,193, 8,232,164,193, 8, 88,164,193, 8, 16,164,193, 8, 0, 0, 0, 0,213, 0, 0, 0, 123, 3, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 1, 1,167, 2,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112,206,105, 3,112,206,105, 3,224,195,105, 3, 96,201,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,224,195,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 64,197,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 24,193,193, 8, 24,193,193, 8,216,183,193, 8,120,188,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,216,183,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0,185,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 56, 0,192, 41, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, @@ -2329,8 +2293,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,197,105, 3,200, 0, 0, 0, 1, 0, 0, 0, -160,198,105, 3,224,195,105, 3, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0,185,193, 8,200, 0, 0, 0, 1, 0, 0, 0, + 40,186,193, 8,216,183,193, 8, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, @@ -2338,7 +2302,7 @@ char datatoc_startup_blend[]= { 186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,140, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -160,198,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0,200,105, 3, 64,197,105, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, + 40,186,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 80,187,193, 8, 0,185,193, 8, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, @@ -2346,7 +2310,7 @@ char datatoc_startup_blend[]= { 213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0, 47, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0,200,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 96,201,105, 3,160,198,105, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,187,193, 8,200, 0, 0, 0, 1, 0, 0, 0,120,188,193, 8, 40,186,193, 8, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 23,196, 0, 0, 0, 0, 163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2354,16 +2318,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123, 3, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,201,105, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0,200,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,188,193, 8,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 80,187,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,202,105, 3, 68, 65, 84, 65, - 72, 3, 0, 0,192,202,105, 3,159, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,189,193, 8, 68, 65, 84, 65, + 72, 3, 0, 0,160,189,193, 8,159, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, @@ -2390,19 +2354,19 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -112,206,105, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 24,193,193, 8,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,208,160,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,144, 90,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,208,207,105, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 24,195,105, 3, -152,202,102, 3,168,201,102, 3,232,163,105, 3,112,163,105, 3, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0, -186, 2, 0, 0, 3, 3,212, 0,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,211,105, 3, 88,211,105, 3, -152,208,105, 3,248,209,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -152,208,105, 3,200, 0, 0, 0, 1, 0, 0, 0,248,209,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 64,194,193, 8,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72,183,193, 8, +240,162,193, 8, 96,162,193, 8,232,164,193, 8,160,164,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0, +186, 2, 0, 0, 3, 3,212, 0,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,197,193, 8, 32,197,193, 8, +208,194,193, 8,248,195,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +208,194,193, 8,200, 0, 0, 0, 1, 0, 0, 0,248,195,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 83, 67, 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -2410,7 +2374,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,209,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152,208,105, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,195,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,194,193, 8, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 80, 66, 0, 0,119, 67, 0, 0,189,195, 0, 0, 0, 0, 195, 0, 0, 0,212, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2418,82 +2382,82 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0, 88,211,105, 3,169, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0, 32,197,193, 8,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184,212,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +200,176,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 68, 65, 84, 65, 12, 0, 0, 0,184,212,105, 3,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 40,213,105, 3, - 68, 65, 84, 65,156, 0, 0, 0, 40,213,105, 3,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,136,106, 3, - 19, 0, 0, 0, 1, 0, 1, 0, 48,136,106, 3, 20, 0, 0, 0, 1, 0, 1, 0, 48,136,106, 3, 21, 0, 1, 0, 1, 0, 1, 0, - 48,136,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 96,158,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 16,165,106, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 72,247,107, 3, 0, 0, 0, 0, 1, 0, 1, 0,136,174,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 88, 84,107, 3, - 0, 0, 0, 0, 1, 0, 1, 0, 72,170,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 16,154,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, -208,160,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 64,153,106, 3, 83, 78, 0, 0,140, 0, 0, 0,192,214,105, 3,195, 0, 0, 0, - 1, 0, 0, 0, 88, 23,106, 3,216,198,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116,105,110,103, 0, -103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,215,105, 3, 64,222,105, 3, -184,222,105, 3,184,233,105, 3, 56,234,105, 3, 88, 16,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 12, 0, 0, 0,200,176,226, 2,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,224, 87,171, 8, + 68, 65, 84, 65,156, 0, 0, 0,224, 87,171, 8,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 88, 79,194, 8, + 19, 0, 0, 0, 1, 0, 1, 0, 88, 79,194, 8, 20, 0, 0, 0, 1, 0, 1, 0, 88, 79,194, 8, 21, 0, 1, 0, 1, 0, 1, 0, + 88, 79,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,128,222,172, 8, 0, 0, 0, 0, 1, 0, 1, 0,160, 94,194, 8, 0, 0, 0, 0, + 1, 0, 1, 0,112,172,195, 8, 0, 0, 0, 0, 1, 0, 1, 0,128,103,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,176, 10,195, 8, + 0, 0, 0, 0, 1, 0, 1, 0,112, 99,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,168, 88,194, 8, 0, 0, 0, 0, 1, 0, 1, 0, +144, 90,194, 8, 0, 0, 0, 0, 1, 0, 1, 0, 16, 88,194, 8, 83, 78, 0, 0,140, 0, 0, 0,224,193,254, 2,195, 0, 0, 0, + 1, 0, 0, 0,128,244,193, 8,112,200,254, 2, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116,105,110,103, 0, +103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,198,193, 8,160,202,193, 8, +232,202,193, 8, 24,209,193, 8, 96,209,193, 8,144,238,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,215,105, 3,196, 0, 0, 0, - 1, 0, 0, 0, 40,216,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 40,216,105, 3,196, 0, 0, 0, 1, 0, 0, 0,160,216,105, 3,176,215,105, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,160,216,105, 3,196, 0, 0, 0, 1, 0, 0, 0, 24,217,105, 3, 40,216,105, 3, 0, 0, 0, 0, -254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24,217,105, 3,196, 0, 0, 0, 1, 0, 0, 0,144,217,105, 3, -160,216,105, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144,217,105, 3,196, 0, 0, 0, - 1, 0, 0, 0, 8,218,105, 3, 24,217,105, 3, 0, 0, 0, 0, 0, 0,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 8,218,105, 3,196, 0, 0, 0, 1, 0, 0, 0,128,218,105, 3,144,217,105, 3, 0, 0, 0, 0,254, 4,187, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,128,218,105, 3,196, 0, 0, 0, 1, 0, 0, 0,248,218,105, 3, 8,218,105, 3, 0, 0, 0, 0, -244, 3,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248,218,105, 3,196, 0, 0, 0, 1, 0, 0, 0,112,219,105, 3, -128,218,105, 3, 0, 0, 0, 0,244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,112,219,105, 3,196, 0, 0, 0, - 1, 0, 0, 0,232,219,105, 3,248,218,105, 3, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -232,219,105, 3,196, 0, 0, 0, 1, 0, 0, 0, 96,220,105, 3,112,219,105, 3, 0, 0, 0, 0,244, 3, 28, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 96,220,105, 3,196, 0, 0, 0, 1, 0, 0, 0,216,220,105, 3,232,219,105, 3, 0, 0, 0, 0, -248, 1, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216,220,105, 3,196, 0, 0, 0, 1, 0, 0, 0, 80,221,105, 3, - 96,220,105, 3, 0, 0, 0, 0,248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 80,221,105, 3,196, 0, 0, 0, - 1, 0, 0, 0,200,221,105, 3,216,220,105, 3, 0, 0, 0, 0,244, 3, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -200,221,105, 3,196, 0, 0, 0, 1, 0, 0, 0, 64,222,105, 3, 80,221,105, 3, 0, 0, 0, 0,254, 4, 12, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 64,222,105, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,200,221,105, 3, 0, 0, 0, 0, -248, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184,222,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 56,223,105, 3, - 0, 0, 0, 0, 40,216,105, 3,160,216,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,223,105, 3, -197, 0, 0, 0, 1, 0, 0, 0,184,223,105, 3,184,222,105, 3, 40,216,105, 3,144,217,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,184,223,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 56,224,105, 3, 56,223,105, 3,160,216,105, 3, - 8,218,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,224,105, 3,197, 0, 0, 0, 1, 0, 0, 0, -184,224,105, 3,184,223,105, 3,144,217,105, 3, 8,218,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -184,224,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 56,225,105, 3, 56,224,105, 3, 8,218,105, 3,128,218,105, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,225,105, 3,197, 0, 0, 0, 1, 0, 0, 0,184,225,105, 3,184,224,105, 3, - 24,217,105, 3,248,218,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184,225,105, 3,197, 0, 0, 0, - 1, 0, 0, 0, 56,226,105, 3, 56,225,105, 3,176,215,105, 3,112,219,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 56,226,105, 3,197, 0, 0, 0, 1, 0, 0, 0,184,226,105, 3,184,225,105, 3,144,217,105, 3,112,219,105, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184,226,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 56,227,105, 3, - 56,226,105, 3,128,218,105, 3,232,219,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,227,105, 3, -197, 0, 0, 0, 1, 0, 0, 0,184,227,105, 3,184,226,105, 3,248,218,105, 3,232,219,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,184,227,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 56,228,105, 3, 56,227,105, 3,176,215,105, 3, - 96,220,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,228,105, 3,197, 0, 0, 0, 1, 0, 0, 0, -184,228,105, 3,184,227,105, 3,248,218,105, 3, 96,220,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -184,228,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 56,229,105, 3, 56,228,105, 3,112,219,105, 3,216,220,105, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,229,105, 3,197, 0, 0, 0, 1, 0, 0, 0,184,229,105, 3,184,228,105, 3, -232,219,105, 3,216,220,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184,229,105, 3,197, 0, 0, 0, - 1, 0, 0, 0, 56,230,105, 3, 56,229,105, 3, 96,220,105, 3,216,220,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 56,230,105, 3,197, 0, 0, 0, 1, 0, 0, 0,184,230,105, 3,184,229,105, 3,248,218,105, 3, 80,221,105, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184,230,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 56,231,105, 3, - 56,230,105, 3,128,218,105, 3, 80,221,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,231,105, 3, -197, 0, 0, 0, 1, 0, 0, 0,184,231,105, 3,184,230,105, 3, 8,218,105, 3,200,221,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,184,231,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 56,232,105, 3, 56,231,105, 3, 24,217,105, 3, -200,221,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,232,105, 3,197, 0, 0, 0, 1, 0, 0, 0, -184,232,105, 3,184,231,105, 3, 80,221,105, 3,200,221,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -184,232,105, 3,197, 0, 0, 0, 1, 0, 0, 0, 56,233,105, 3, 56,232,105, 3,144,217,105, 3, 64,222,105, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,233,105, 3,197, 0, 0, 0, 1, 0, 0, 0,184,233,105, 3,184,232,105, 3, -128,218,105, 3, 64,222,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184,233,105, 3,197, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 56,233,105, 3,216,220,105, 3, 64,222,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0, 56,234,105, 3,199, 0, 0, 0, 1, 0, 0, 0,192,237,105, 3, 0, 0, 0, 0,144,217,105, 3, 40,216,105, 3, -160,216,105, 3, 8,218,105, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, - 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,192, 22,106, 3,192, 22,106, 3, 0,235,105, 3, 96,236,105, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0,235,105, 3,200, 0, 0, 0, - 1, 0, 0, 0, 96,236,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,198,193, 8,196, 0, 0, 0, + 1, 0, 0, 0,248,198,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +248,198,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 64,199,193, 8,176,198,193, 8, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 64,199,193, 8,196, 0, 0, 0, 1, 0, 0, 0,136,199,193, 8,248,198,193, 8, 0, 0, 0, 0, +254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,199,193, 8,196, 0, 0, 0, 1, 0, 0, 0,208,199,193, 8, + 64,199,193, 8, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208,199,193, 8,196, 0, 0, 0, + 1, 0, 0, 0, 24,200,193, 8,136,199,193, 8, 0, 0, 0, 0, 0, 0,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 24,200,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 96,200,193, 8,208,199,193, 8, 0, 0, 0, 0,254, 4,187, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 96,200,193, 8,196, 0, 0, 0, 1, 0, 0, 0,168,200,193, 8, 24,200,193, 8, 0, 0, 0, 0, +244, 3,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,200,193, 8,196, 0, 0, 0, 1, 0, 0, 0,240,200,193, 8, + 96,200,193, 8, 0, 0, 0, 0,244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,200,193, 8,196, 0, 0, 0, + 1, 0, 0, 0, 56,201,193, 8,168,200,193, 8, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 56,201,193, 8,196, 0, 0, 0, 1, 0, 0, 0,128,201,193, 8,240,200,193, 8, 0, 0, 0, 0,244, 3, 28, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,128,201,193, 8,196, 0, 0, 0, 1, 0, 0, 0,200,201,193, 8, 56,201,193, 8, 0, 0, 0, 0, +248, 1, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200,201,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 16,202,193, 8, +128,201,193, 8, 0, 0, 0, 0,248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 16,202,193, 8,196, 0, 0, 0, + 1, 0, 0, 0, 88,202,193, 8,200,201,193, 8, 0, 0, 0, 0,244, 3, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 88,202,193, 8,196, 0, 0, 0, 1, 0, 0, 0,160,202,193, 8, 16,202,193, 8, 0, 0, 0, 0,254, 4, 12, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,160,202,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88,202,193, 8, 0, 0, 0, 0, +248, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232,202,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 48,203,193, 8, + 0, 0, 0, 0,248,198,193, 8, 64,199,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,203,193, 8, +197, 0, 0, 0, 1, 0, 0, 0,120,203,193, 8,232,202,193, 8,248,198,193, 8,208,199,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,120,203,193, 8,197, 0, 0, 0, 1, 0, 0, 0,192,203,193, 8, 48,203,193, 8, 64,199,193, 8, + 24,200,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192,203,193, 8,197, 0, 0, 0, 1, 0, 0, 0, + 8,204,193, 8,120,203,193, 8,208,199,193, 8, 24,200,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 8,204,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 80,204,193, 8,192,203,193, 8, 24,200,193, 8, 96,200,193, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,204,193, 8,197, 0, 0, 0, 1, 0, 0, 0,152,204,193, 8, 8,204,193, 8, +136,199,193, 8,168,200,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,204,193, 8,197, 0, 0, 0, + 1, 0, 0, 0,224,204,193, 8, 80,204,193, 8,176,198,193, 8,240,200,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,224,204,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 40,205,193, 8,152,204,193, 8,208,199,193, 8,240,200,193, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,205,193, 8,197, 0, 0, 0, 1, 0, 0, 0,112,205,193, 8, +224,204,193, 8, 96,200,193, 8, 56,201,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,205,193, 8, +197, 0, 0, 0, 1, 0, 0, 0,184,205,193, 8, 40,205,193, 8,168,200,193, 8, 56,201,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,184,205,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 0,206,193, 8,112,205,193, 8,176,198,193, 8, +128,201,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0,206,193, 8,197, 0, 0, 0, 1, 0, 0, 0, + 72,206,193, 8,184,205,193, 8,168,200,193, 8,128,201,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 72,206,193, 8,197, 0, 0, 0, 1, 0, 0, 0,144,206,193, 8, 0,206,193, 8,240,200,193, 8,200,201,193, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,144,206,193, 8,197, 0, 0, 0, 1, 0, 0, 0,216,206,193, 8, 72,206,193, 8, + 56,201,193, 8,200,201,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,206,193, 8,197, 0, 0, 0, + 1, 0, 0, 0, 32,207,193, 8,144,206,193, 8,128,201,193, 8,200,201,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 32,207,193, 8,197, 0, 0, 0, 1, 0, 0, 0,104,207,193, 8,216,206,193, 8,168,200,193, 8, 16,202,193, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,207,193, 8,197, 0, 0, 0, 1, 0, 0, 0,176,207,193, 8, + 32,207,193, 8, 96,200,193, 8, 16,202,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,207,193, 8, +197, 0, 0, 0, 1, 0, 0, 0,248,207,193, 8,104,207,193, 8, 24,200,193, 8, 88,202,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,248,207,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 64,208,193, 8,176,207,193, 8,136,199,193, 8, + 88,202,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64,208,193, 8,197, 0, 0, 0, 1, 0, 0, 0, +136,208,193, 8,248,207,193, 8, 16,202,193, 8, 88,202,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +136,208,193, 8,197, 0, 0, 0, 1, 0, 0, 0,208,208,193, 8, 64,208,193, 8,208,199,193, 8,160,202,193, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,208,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 24,209,193, 8,136,208,193, 8, + 96,200,193, 8,160,202,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,209,193, 8,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,208,208,193, 8,200,201,193, 8,160,202,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0, 96,209,193, 8,199, 0, 0, 0, 1, 0, 0, 0, 64,212,193, 8, 0, 0, 0, 0,208,199,193, 8,248,198,193, 8, + 64,199,193, 8, 24,200,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, + 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 32,244,193, 8, 32,244,193, 8,240,209,193, 8, 24,211,193, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,209,193, 8,200, 0, 0, 0, + 1, 0, 0, 0, 24,211,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, @@ -2501,7 +2465,7 @@ char datatoc_startup_blend[]= { 188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 96,236,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,235,105, 3, 0, 0, 0, 0, 0,240,109, 69, +248, 0, 0, 0, 24,211,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240,209,193, 8, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, @@ -2509,11 +2473,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,192,237,105, 3,199, 0, 0, 0, 1, 0, 0, 0,136,242,105, 3, - 56,234,105, 3,248,218,105, 3, 80,221,105, 3,200,221,105, 3, 24,217,105, 3, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 11, 2, 0, 0, 4, 4, 10, 1, 12, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,241,105, 3, - 72,241,105, 3,136,238,105, 3,232,239,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,136,238,105, 3,200, 0, 0, 0, 1, 0, 0, 0,232,239,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 64,212,193, 8,199, 0, 0, 0, 1, 0, 0, 0, 40,216,193, 8, + 96,209,193, 8,168,200,193, 8, 16,202,193, 8, 88,202,193, 8,136,199,193, 8, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 11, 2, 0, 0, 4, 4, 10, 1, 12, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,215,193, 8, + 32,215,193, 8,208,212,193, 8,248,213,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,208,212,193, 8,200, 0, 0, 0, 1, 0, 0, 0,248,213,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -2521,15 +2485,15 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0,237, 1, 0, 0, 11, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232,239,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -136,238,105, 3, 0, 0, 0, 0, 0,128,132, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255,120, 67,255,127,246,195, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,213,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +208,212,193, 8, 0, 0, 0, 0, 0,128,132, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255,120, 67,255,127,246,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 10, 1,237, 1,249, 0, 237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 72,241,105, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 32,215,193, 8, 165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2537,11 +2501,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0,136,242,105, 3,199, 0, 0, 0, 1, 0, 0, 0,232,247,105, 3,192,237,105, 3, 96,220,105, 3, -216,220,105, 3,232,219,105, 3,248,218,105, 3, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, - 18, 18,251, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,246,105, 3, 16,246,105, 3, 80,243,105, 3, -176,244,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,243,105, 3, -200, 0, 0, 0, 1, 0, 0, 0,176,244,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, + 68, 65, 84, 65, 96, 0, 0, 0, 40,216,193, 8,199, 0, 0, 0, 1, 0, 0, 0, 8,219,193, 8, 64,212,193, 8,128,201,193, 8, +200,201,193, 8, 56,201,193, 8,168,200,193, 8, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, + 18, 18,251, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,170,241, 2,224,170,241, 2,184,216,193, 8, +224,217,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,216,193, 8, +200, 0, 0, 0, 1, 0, 0, 0,224,217,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, @@ -2549,7 +2513,7 @@ char datatoc_startup_blend[]= { 243, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,176,244,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80,243,105, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,224,217,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,184,216,193, 8, 0, 0, 0, 0, 0, 0,253, 67, 0, 0, 0, 0, 0, 0, 48, 65, 0, 0, 0, 0, 0, 0,245, 67, 0, 0, 0, 0, 0, 0,129, 67,234, 1, 0, 0, 251, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -2557,7 +2521,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0, 16,246,105, 3,181, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0,224,170,241, 2,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2569,11 +2533,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,232,247,105, 3,199, 0, 0, 0, - 1, 0, 0, 0,160, 4,106, 3,136,242,105, 3,216,220,105, 3, 64,222,105, 3,128,218,105, 3,232,219,105, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 8,219,193, 8,199, 0, 0, 0, + 1, 0, 0, 0, 0,230,193, 8, 40,216,193, 8,200,201,193, 8,160,202,193, 8, 96,200,193, 8, 56,201,193, 8, 0, 0, 0, 0, 249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 1, 1,251, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 64, 3,106, 3, 64, 3,106, 3,176,248,105, 3, 48,254,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,248,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 16,250,105, 3, 0, 0, 0, 0, + 0, 0, 0, 0,216,228,193, 8,216,228,193, 8,152,219,193, 8, 56,224,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,219,193, 8,200, 0, 0, 0, 1, 0, 0, 0,192,220,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, @@ -2581,8 +2545,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,250,105, 3,200, 0, 0, 0, - 1, 0, 0, 0,112,251,105, 3,176,248,105, 3, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,220,193, 8,200, 0, 0, 0, + 1, 0, 0, 0,232,221,193, 8,152,219,193, 8, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, @@ -2590,7 +2554,7 @@ char datatoc_startup_blend[]= { 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,132, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,112,251,105, 3,200, 0, 0, 0, 1, 0, 0, 0,208,252,105, 3, 16,250,105, 3, 0, 0, 0, 0, 0, 0, 16, 67, +248, 0, 0, 0,232,221,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 16,223,193, 8,192,220,193, 8, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, @@ -2598,24 +2562,24 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,252,105, 3,200, 0, 0, 0, 1, 0, 0, 0, 48,254,105, 3, -112,251,105, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,223,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 56,224,193, 8, +232,221,193, 8, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0, 104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243, 3, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,254,105, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,252,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,224,193, 8, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16,223,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0, 243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,255,105, 3, - 68, 65, 84, 65, 72, 3, 0, 0,144,255,105, 3,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,225,193, 8, + 68, 65, 84, 65, 72, 3, 0, 0, 96,225,193, 8,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,240,182, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, @@ -2642,19 +2606,19 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 64, 3,106, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 0, 0, 0,216,228,193, 8,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,208,160,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,144, 90,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,160, 4,106, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 10,106, 3, -232,247,105, 3,176,215,105, 3,112,219,105, 3,216,220,105, 3, 96,220,105, 3, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, - 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,248, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 8,106, 3, - 40, 8,106, 3,104, 5,106, 3,200, 6,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,104, 5,106, 3,200, 0, 0, 0, 1, 0, 0, 0,200, 6,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 0,230,193, 8,199, 0, 0, 0, 1, 0, 0, 0,128,234,193, 8, + 8,219,193, 8,176,198,193, 8,240,200,193, 8,200,201,193, 8,128,201,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, + 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,248, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,232,193, 8, +224,232,193, 8,144,230,193, 8,184,231,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,144,230,193, 8,200, 0, 0, 0, 1, 0, 0, 0,184,231,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -2662,15 +2626,15 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 6,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -104, 5,106, 3, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0, 65, 67, 0, 0, 0, 0, 0,128,243, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,231,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +144,230,193, 8, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0, 65, 67, 0, 0, 0, 0, 0,128,243, 67, 0, 0, 0, 0, 0, 0,129, 67,231, 1, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,248, 1, 2, 1,231, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0, 40, 8,106, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0,224,232,193, 8, 181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2683,11 +2647,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,121,116,104,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, - 0, 10,106, 3,199, 0, 0, 0, 1, 0, 0, 0, 88, 16,106, 3,160, 4,106, 3, 80,221,105, 3,128,218,105, 3, 8,218,105, 3, -200,221,105, 3, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0,186, 2, 0, 0, 3, 3, 10, 1,174, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 13,106, 3,136, 13,106, 3,200, 10,106, 3, 40, 12,106, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 10,106, 3,200, 0, 0, 0, 1, 0, 0, 0, - 40, 12,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, +128,234,193, 8,199, 0, 0, 0, 1, 0, 0, 0,144,238,193, 8, 0,230,193, 8, 16,202,193, 8, 96,200,193, 8, 24,200,193, 8, + 88,202,193, 8, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0,186, 2, 0, 0, 3, 3, 10, 1,174, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,237,193, 8, 96,237,193, 8, 16,235,193, 8, 56,236,193, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,235,193, 8,200, 0, 0, 0, 1, 0, 0, 0, + 56,236,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,149, 67, 0, 0,200, 65, 0,128,149, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, @@ -2695,7 +2659,7 @@ char datatoc_startup_blend[]= { 38, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 40, 12,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,200, 10,106, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, + 56,236,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16,235,193, 8, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 67, 0, 0, 2,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, @@ -2703,26 +2667,26 @@ char datatoc_startup_blend[]= { 245, 3, 0, 0,254, 4, 0, 0, 39, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,136, 13,106, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0, 96,237,193, 8,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 14,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,200,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,232, 14,106, 3, -223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 88, 15,106, 3, 68, 65, 84, 65,156, 0, 0, 0, 88, 15,106, 3, -222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,136,106, 3, 19, 0, 0, 0, 1, 0, 1, 0, 48,136,106, 3, - 20, 0, 0, 0, 1, 0, 1, 0, 48,136,106, 3, 21, 0, 1, 0, 1, 0, 1, 0, 48,136,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, - 96,158,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 16,165,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 72,247,107, 3, 0, 0, 0, 0, - 1, 0, 1, 0,136,174,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, 88, 84,107, 3, 0, 0, 0, 0, 1, 0, 1, 0, 72,170,106, 3, - 0, 0, 0, 0, 1, 0, 1, 0, 16,154,106, 3, 0, 0, 0, 0, 1, 0, 1, 0,208,160,106, 3, 0, 0, 0, 0, 1, 0, 1, 0, - 64,153,106, 3, 68, 65, 84, 65, 96, 0, 0, 0, 88, 16,106, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10,106, 3, -112,219,105, 3,144,217,105, 3, 64,222,105, 3,216,220,105, 3, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0, -186, 2, 0, 0, 9, 9,248, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 19,106, 3,224, 19,106, 3, - 32, 17,106, 3,128, 18,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 32, 17,106, 3,200, 0, 0, 0, 1, 0, 0, 0,128, 18,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 73, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 32,200,226, 2, +223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,144, 73,171, 8, 68, 65, 84, 65,156, 0, 0, 0,144, 73,171, 8, +222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 88, 79,194, 8, 19, 0, 0, 0, 1, 0, 1, 0, 88, 79,194, 8, + 20, 0, 0, 0, 1, 0, 1, 0, 88, 79,194, 8, 21, 0, 1, 0, 1, 0, 1, 0, 88, 79,194, 8, 0, 0, 0, 0, 1, 0, 1, 0, +128,222,172, 8, 0, 0, 0, 0, 1, 0, 1, 0,160, 94,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,112,172,195, 8, 0, 0, 0, 0, + 1, 0, 1, 0,128,103,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,176, 10,195, 8, 0, 0, 0, 0, 1, 0, 1, 0,112, 99,194, 8, + 0, 0, 0, 0, 1, 0, 1, 0,168, 88,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,144, 90,194, 8, 0, 0, 0, 0, 1, 0, 1, 0, + 16, 88,194, 8, 68, 65, 84, 65, 96, 0, 0, 0,144,238,193, 8,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128,234,193, 8, +240,200,193, 8,208,199,193, 8,160,202,193, 8,200,201,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0, +186, 2, 0, 0, 9, 9,248, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,241,193, 8,112,241,193, 8, + 32,239,193, 8, 72,240,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 32,239,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 72,240,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 73, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -2730,7 +2694,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 18,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32, 17,106, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,240,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32,239,193, 8, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,236,140, 21, 68, 20, 51,102, 68,120, 83, 49, 67, 68,214,212, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2738,7 +2702,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0,224, 19,106, 3,172, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0,112,241,193, 8,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,231, 1, 0, 0,243, 1, 0, 0, @@ -2759,41 +2723,41 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 78, 0, 0,140, 0, 0, 0, 88, 23,106, 3,195, 0, 0, 0, 1, 0, 0, 0,200, 88,106, 3,192,214,105, 3, 0, 0, 0, 0, + 83, 78, 0, 0,140, 0, 0, 0,128,244,193, 8,195, 0, 0, 0, 1, 0, 0, 0, 32, 46,194, 8,224,193,254, 2, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 72, 24,106, 3,144, 27,106, 3, 8, 28,106, 3, 8, 33,106, 3,136, 33,106, 3,120, 75,106, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64,245,193, 8, 56,247,193, 8,128,247,193, 8, 80,250,193, 8,152,250,193, 8,200, 34,194, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 72, 24,106, 3,196, 0, 0, 0, 1, 0, 0, 0,192, 24,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192, 24,106, 3,196, 0, 0, 0, 1, 0, 0, 0, 56, 25,106, 3, - 72, 24,106, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 56, 25,106, 3,196, 0, 0, 0, - 1, 0, 0, 0,176, 25,106, 3,192, 24,106, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -176, 25,106, 3,196, 0, 0, 0, 1, 0, 0, 0, 40, 26,106, 3, 56, 25,106, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 40, 26,106, 3,196, 0, 0, 0, 1, 0, 0, 0,160, 26,106, 3,176, 25,106, 3, 0, 0, 0, 0, - 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160, 26,106, 3,196, 0, 0, 0, 1, 0, 0, 0, 24, 27,106, 3, - 40, 26,106, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24, 27,106, 3,196, 0, 0, 0, - 1, 0, 0, 0,144, 27,106, 3,160, 26,106, 3, 0, 0, 0, 0,132, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -144, 27,106, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 24, 27,106, 3, 0, 0, 0, 0,132, 2, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 8, 28,106, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 28,106, 3, 0, 0, 0, 0,192, 24,106, 3, - 56, 25,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 28,106, 3,197, 0, 0, 0, 1, 0, 0, 0, - 8, 29,106, 3, 8, 28,106, 3,192, 24,106, 3, 40, 26,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 8, 29,106, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 29,106, 3,136, 28,106, 3, 56, 25,106, 3,160, 26,106, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 29,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 8, 30,106, 3, 8, 29,106, 3, - 40, 26,106, 3,160, 26,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 30,106, 3,197, 0, 0, 0, - 1, 0, 0, 0,136, 30,106, 3,136, 29,106, 3, 40, 26,106, 3, 24, 27,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,136, 30,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 8, 31,106, 3, 8, 30,106, 3, 72, 24,106, 3,144, 27,106, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 31,106, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 31,106, 3, -136, 30,106, 3, 72, 24,106, 3, 40, 26,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 31,106, 3, -197, 0, 0, 0, 1, 0, 0, 0, 8, 32,106, 3, 8, 31,106, 3, 24, 27,106, 3,144, 27,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 8, 32,106, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 32,106, 3,136, 31,106, 3,160, 26,106, 3, - 24, 27,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 32,106, 3,197, 0, 0, 0, 1, 0, 0, 0, - 8, 33,106, 3, 8, 32,106, 3,176, 25,106, 3,144, 27,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 8, 33,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136, 32,106, 3,176, 25,106, 3,160, 26,106, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,136, 33,106, 3,199, 0, 0, 0, 1, 0, 0, 0, 16, 37,106, 3, 0, 0, 0, 0, - 40, 26,106, 3,192, 24,106, 3, 56, 25,106, 3,160, 26,106, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, -214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 48, 88,106, 3, 48, 88,106, 3, - 80, 34,106, 3,176, 35,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 80, 34,106, 3,200, 0, 0, 0, 1, 0, 0, 0,176, 35,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 64,245,193, 8,196, 0, 0, 0, 1, 0, 0, 0,136,245,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,245,193, 8,196, 0, 0, 0, 1, 0, 0, 0,208,245,193, 8, + 64,245,193, 8, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208,245,193, 8,196, 0, 0, 0, + 1, 0, 0, 0, 24,246,193, 8,136,245,193, 8, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 24,246,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 96,246,193, 8,208,245,193, 8, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 96,246,193, 8,196, 0, 0, 0, 1, 0, 0, 0,168,246,193, 8, 24,246,193, 8, 0, 0, 0, 0, + 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,246,193, 8,196, 0, 0, 0, 1, 0, 0, 0,240,246,193, 8, + 96,246,193, 8, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,246,193, 8,196, 0, 0, 0, + 1, 0, 0, 0, 56,247,193, 8,168,246,193, 8, 0, 0, 0, 0,132, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 56,247,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240,246,193, 8, 0, 0, 0, 0,132, 2, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,128,247,193, 8,197, 0, 0, 0, 1, 0, 0, 0,200,247,193, 8, 0, 0, 0, 0,136,245,193, 8, +208,245,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,247,193, 8,197, 0, 0, 0, 1, 0, 0, 0, + 16,248,193, 8,128,247,193, 8,136,245,193, 8, 96,246,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 16,248,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 88,248,193, 8,200,247,193, 8,208,245,193, 8,168,246,193, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,248,193, 8,197, 0, 0, 0, 1, 0, 0, 0,160,248,193, 8, 16,248,193, 8, + 96,246,193, 8,168,246,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,160,248,193, 8,197, 0, 0, 0, + 1, 0, 0, 0,232,248,193, 8, 88,248,193, 8, 96,246,193, 8,240,246,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,232,248,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 48,249,193, 8,160,248,193, 8, 64,245,193, 8, 56,247,193, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,249,193, 8,197, 0, 0, 0, 1, 0, 0, 0,120,249,193, 8, +232,248,193, 8, 64,245,193, 8, 96,246,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,249,193, 8, +197, 0, 0, 0, 1, 0, 0, 0,192,249,193, 8, 48,249,193, 8,240,246,193, 8, 56,247,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,192,249,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 8,250,193, 8,120,249,193, 8,168,246,193, 8, +240,246,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,250,193, 8,197, 0, 0, 0, 1, 0, 0, 0, + 80,250,193, 8,192,249,193, 8, 24,246,193, 8, 56,247,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 80,250,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8,250,193, 8, 24,246,193, 8,168,246,193, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,152,250,193, 8,199, 0, 0, 0, 1, 0, 0, 0,120,253,193, 8, 0, 0, 0, 0, + 96,246,193, 8,136,245,193, 8,208,245,193, 8,168,246,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, +214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,192, 45,194, 8,192, 45,194, 8, + 40,251,193, 8, 80,252,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 40,251,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 80,252,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -2801,7 +2765,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176, 35,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80, 34,106, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,252,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,251,193, 8, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, 112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2809,11 +2773,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16, 37,106, 3,199, 0, 0, 0, - 1, 0, 0, 0,120, 75,106, 3,136, 33,106, 3, 72, 24,106, 3, 40, 26,106, 3, 24, 27,106, 3,144, 27,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,120,253,193, 8,199, 0, 0, 0, + 1, 0, 0, 0,200, 34,194, 8,152,250,193, 8, 64,245,193, 8, 96,246,193, 8,240,246,193, 8, 56,247,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 6, 6,132, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,248, 41,106, 3,248, 41,106, 3,216, 37,106, 3,152, 40,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216, 37,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 56, 39,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0,128, 1,194, 8,128, 1,194, 8, 8,254,193, 8, 88, 0,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,254,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 48,255,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 33, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, @@ -2821,8 +2785,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56, 39,106, 3,200, 0, 0, 0, - 1, 0, 0, 0,152, 40,106, 3,216, 37,106, 3, 0, 0, 0, 0, 0, 0, 91, 67, 0, 0, 40,196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,255,193, 8,200, 0, 0, 0, + 1, 0, 0, 0, 88, 0,194, 8, 8,254,193, 8, 0, 0, 0, 0, 0, 0, 91, 67, 0, 0, 40,196, 0, 0, 0, 0, 0, 0, 0, 0, 254,255, 74, 67,254, 63, 40,196, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, @@ -2830,7 +2794,7 @@ char datatoc_startup_blend[]= { 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,161, 2, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,152, 40,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56, 39,106, 3, 0, 0, 0, 0, 0, 0,128, 67, +248, 0, 0, 0, 88, 0,194, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,255,193, 8, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67,102,102, 38,190,205,204,148, 63, 51, 51, 13,191,154,153,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1, 0, 0, 0, 0, 0, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2838,7 +2802,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,220, 0, 0, 0,131, 2, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0,248, 41,106, 3,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0,128, 1,194, 8,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, @@ -3103,11 +3067,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,120, 75,106, 3, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 37,106, 3,144, 27,106, 3, 24, 27,106, 3,160, 26,106, 3,176, 25,106, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,200, 34,194, 8, +199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120,253,193, 8, 56,247,193, 8,240,246,193, 8,168,246,193, 8, 24,246,193, 8, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 1, 1,122, 2,187, 2, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,208, 86,106, 3,208, 86,106, 3, 64, 76,106, 3,192, 81,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64, 76,106, 3,200, 0, 0, 0, 1, 0, 0, 0,160, 77,106, 3, + 0, 0, 0, 0, 0, 0, 0, 0,152, 44,194, 8,152, 44,194, 8, 88, 35,194, 8,248, 39,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88, 35,194, 8,200, 0, 0, 0, 1, 0, 0, 0,128, 36,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 30, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, @@ -3115,8 +3079,8 @@ char datatoc_startup_blend[]= { 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160, 77,106, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 79,106, 3, 64, 76,106, 3, 0, 0, 0, 0, 0, 0, 32, 67, 0, 64, 10,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 36,194, 8, +200, 0, 0, 0, 1, 0, 0, 0,168, 37,194, 8, 88, 35,194, 8, 0, 0, 0, 0, 0, 0, 32, 67, 0, 64, 10,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 10,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, @@ -3124,7 +3088,7 @@ char datatoc_startup_blend[]= { 36, 3, 0, 0,146, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 41, 2, 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 0, 79,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 96, 80,106, 3,160, 77,106, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,168, 37,194, 8,200, 0, 0, 0, 1, 0, 0, 0,208, 38,194, 8,128, 36,194, 8, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,242,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 91, 90,242,194, 0, 0, 0, 0,143, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, @@ -3132,8 +3096,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0, 26, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 0, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96, 80,106, 3,200, 0, 0, 0, 1, 0, 0, 0, -192, 81,106, 3, 0, 79,106, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208, 38,194, 8,200, 0, 0, 0, 1, 0, 0, 0, +248, 39,194, 8,168, 37,194, 8, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 255,191,126,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, @@ -3141,7 +3105,7 @@ char datatoc_startup_blend[]= { 186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -192, 81,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96, 80,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 39,194, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 38,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3149,7 +3113,7 @@ char datatoc_startup_blend[]= { 37, 3, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 83,106, 3, 68, 65, 84, 65, 72, 3, 0, 0, 32, 83,106, 3,159, 0, 0, 0, 1, 0, 0, 0,193,198,198, 63, 0, 0, 0, 0, + 32, 41,194, 8, 68, 65, 84, 65, 72, 3, 0, 0, 32, 41,194, 8,159, 0, 0, 0, 1, 0, 0, 0,193,198,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190, 184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, @@ -3176,64 +3140,64 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,208, 86,106, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,152, 44,194, 8,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,208,160,106, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,144, 90,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,200, 88,106, 3,195, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 88, 23,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105,100,101,111, 32, 69,100,105,116,105,110,103, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 89,106, 3,224, 94,106, 3, 88, 95,106, 3, -216,103,106, 3, 88,104,106, 3, 16,128,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, 32, 46,194, 8,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,128,244,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105,100,101,111, 32, 69,100,105,116,105,110,103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 46,194, 8,248, 49,194, 8, 64, 50,194, 8, + 8, 55,194, 8, 80, 55,194, 8,192, 72,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184, 89,106, 3,196, 0, 0, 0, 1, 0, 0, 0, - 48, 90,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 48, 90,106, 3, -196, 0, 0, 0, 1, 0, 0, 0,168, 90,106, 3,184, 89,106, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,168, 90,106, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 91,106, 3, 48, 90,106, 3, 0, 0, 0, 0,254, 4,214, 2, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 91,106, 3,196, 0, 0, 0, 1, 0, 0, 0,152, 91,106, 3,168, 90,106, 3, - 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152, 91,106, 3,196, 0, 0, 0, 1, 0, 0, 0, - 16, 92,106, 3, 32, 91,106, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 16, 92,106, 3, -196, 0, 0, 0, 1, 0, 0, 0,136, 92,106, 3,152, 91,106, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,136, 92,106, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 93,106, 3, 16, 92,106, 3, 0, 0, 0, 0,254, 4, 84, 1, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 93,106, 3,196, 0, 0, 0, 1, 0, 0, 0,120, 93,106, 3,136, 92,106, 3, - 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120, 93,106, 3,196, 0, 0, 0, 1, 0, 0, 0, -240, 93,106, 3, 0, 93,106, 3, 0, 0, 0, 0, 52, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240, 93,106, 3, -196, 0, 0, 0, 1, 0, 0, 0,104, 94,106, 3,120, 93,106, 3, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,104, 94,106, 3,196, 0, 0, 0, 1, 0, 0, 0,224, 94,106, 3,240, 93,106, 3, 0, 0, 0, 0, 52, 2, 84, 1, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224, 94,106, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104, 94,106, 3, - 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 95,106, 3,197, 0, 0, 0, 1, 0, 0, 0, -216, 95,106, 3, 0, 0, 0, 0, 48, 90,106, 3,168, 90,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -216, 95,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 96,106, 3, 88, 95,106, 3, 48, 90,106, 3,152, 91,106, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 96,106, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 96,106, 3,216, 95,106, 3, -168, 90,106, 3, 16, 92,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 96,106, 3,197, 0, 0, 0, - 1, 0, 0, 0, 88, 97,106, 3, 88, 96,106, 3,152, 91,106, 3, 16, 92,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 88, 97,106, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 97,106, 3,216, 96,106, 3, 16, 92,106, 3,136, 92,106, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 97,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 98,106, 3, - 88, 97,106, 3,184, 89,106, 3, 0, 93,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 98,106, 3, -197, 0, 0, 0, 1, 0, 0, 0,216, 98,106, 3,216, 97,106, 3,152, 91,106, 3,120, 93,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,216, 98,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 99,106, 3, 88, 98,106, 3, 0, 93,106, 3, -240, 93,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 99,106, 3,197, 0, 0, 0, 1, 0, 0, 0, -216, 99,106, 3,216, 98,106, 3,240, 93,106, 3,104, 94,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -216, 99,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 88,100,106, 3, 88, 99,106, 3,120, 93,106, 3,104, 94,106, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,100,106, 3,197, 0, 0, 0, 1, 0, 0, 0,216,100,106, 3,216, 99,106, 3, -136, 92,106, 3,224, 94,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,100,106, 3,197, 0, 0, 0, - 1, 0, 0, 0, 88,101,106, 3, 88,100,106, 3, 32, 91,106, 3,224, 94,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 88,101,106, 3,197, 0, 0, 0, 1, 0, 0, 0,216,101,106, 3,216,100,106, 3, 0, 93,106, 3,224, 94,106, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,101,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 88,102,106, 3, - 88,101,106, 3,184, 89,106, 3, 32, 91,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,102,106, 3, -197, 0, 0, 0, 1, 0, 0, 0,216,102,106, 3,216,101,106, 3, 16, 92,106, 3,120, 93,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,216,102,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 88,103,106, 3, 88,102,106, 3,136, 92,106, 3, -104, 94,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,103,106, 3,197, 0, 0, 0, 1, 0, 0, 0, -216,103,106, 3,216,102,106, 3,152, 91,106, 3,240, 93,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -216,103,106, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88,103,106, 3,136, 92,106, 3,240, 93,106, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 88,104,106, 3,199, 0, 0, 0, 1, 0, 0, 0,224,107,106, 3, 0, 0, 0, 0, -152, 91,106, 3, 48, 90,106, 3,168, 90,106, 3, 16, 92,106, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, -214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,152,135,106, 3,152,135,106, 3, - 32,105,106, 3,128,106,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 32,105,106, 3,200, 0, 0, 0, 1, 0, 0, 0,128,106,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224, 46,194, 8,196, 0, 0, 0, 1, 0, 0, 0, + 40, 47,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40, 47,194, 8, +196, 0, 0, 0, 1, 0, 0, 0,112, 47,194, 8,224, 46,194, 8, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,112, 47,194, 8,196, 0, 0, 0, 1, 0, 0, 0,184, 47,194, 8, 40, 47,194, 8, 0, 0, 0, 0,254, 4,214, 2, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184, 47,194, 8,196, 0, 0, 0, 1, 0, 0, 0, 0, 48,194, 8,112, 47,194, 8, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 48,194, 8,196, 0, 0, 0, 1, 0, 0, 0, + 72, 48,194, 8,184, 47,194, 8, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72, 48,194, 8, +196, 0, 0, 0, 1, 0, 0, 0,144, 48,194, 8, 0, 48,194, 8, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,144, 48,194, 8,196, 0, 0, 0, 1, 0, 0, 0,216, 48,194, 8, 72, 48,194, 8, 0, 0, 0, 0,254, 4, 84, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216, 48,194, 8,196, 0, 0, 0, 1, 0, 0, 0, 32, 49,194, 8,144, 48,194, 8, + 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 49,194, 8,196, 0, 0, 0, 1, 0, 0, 0, +104, 49,194, 8,216, 48,194, 8, 0, 0, 0, 0, 52, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104, 49,194, 8, +196, 0, 0, 0, 1, 0, 0, 0,176, 49,194, 8, 32, 49,194, 8, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,176, 49,194, 8,196, 0, 0, 0, 1, 0, 0, 0,248, 49,194, 8,104, 49,194, 8, 0, 0, 0, 0, 52, 2, 84, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248, 49,194, 8,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176, 49,194, 8, + 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 50,194, 8,197, 0, 0, 0, 1, 0, 0, 0, +136, 50,194, 8, 0, 0, 0, 0, 40, 47,194, 8,112, 47,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +136, 50,194, 8,197, 0, 0, 0, 1, 0, 0, 0,208, 50,194, 8, 64, 50,194, 8, 40, 47,194, 8, 0, 48,194, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208, 50,194, 8,197, 0, 0, 0, 1, 0, 0, 0, 24, 51,194, 8,136, 50,194, 8, +112, 47,194, 8, 72, 48,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24, 51,194, 8,197, 0, 0, 0, + 1, 0, 0, 0, 96, 51,194, 8,208, 50,194, 8, 0, 48,194, 8, 72, 48,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 96, 51,194, 8,197, 0, 0, 0, 1, 0, 0, 0,168, 51,194, 8, 24, 51,194, 8, 72, 48,194, 8,144, 48,194, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 51,194, 8,197, 0, 0, 0, 1, 0, 0, 0,240, 51,194, 8, + 96, 51,194, 8,224, 46,194, 8,216, 48,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,240, 51,194, 8, +197, 0, 0, 0, 1, 0, 0, 0, 56, 52,194, 8,168, 51,194, 8, 0, 48,194, 8, 32, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 56, 52,194, 8,197, 0, 0, 0, 1, 0, 0, 0,128, 52,194, 8,240, 51,194, 8,216, 48,194, 8, +104, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,128, 52,194, 8,197, 0, 0, 0, 1, 0, 0, 0, +200, 52,194, 8, 56, 52,194, 8,104, 49,194, 8,176, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +200, 52,194, 8,197, 0, 0, 0, 1, 0, 0, 0, 16, 53,194, 8,128, 52,194, 8, 32, 49,194, 8,176, 49,194, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 16, 53,194, 8,197, 0, 0, 0, 1, 0, 0, 0, 88, 53,194, 8,200, 52,194, 8, +144, 48,194, 8,248, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 53,194, 8,197, 0, 0, 0, + 1, 0, 0, 0,160, 53,194, 8, 16, 53,194, 8,184, 47,194, 8,248, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,160, 53,194, 8,197, 0, 0, 0, 1, 0, 0, 0,232, 53,194, 8, 88, 53,194, 8,216, 48,194, 8,248, 49,194, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 53,194, 8,197, 0, 0, 0, 1, 0, 0, 0, 48, 54,194, 8, +160, 53,194, 8,224, 46,194, 8,184, 47,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 54,194, 8, +197, 0, 0, 0, 1, 0, 0, 0,120, 54,194, 8,232, 53,194, 8, 72, 48,194, 8, 32, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,120, 54,194, 8,197, 0, 0, 0, 1, 0, 0, 0,192, 54,194, 8, 48, 54,194, 8,144, 48,194, 8, +176, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 54,194, 8,197, 0, 0, 0, 1, 0, 0, 0, + 8, 55,194, 8,120, 54,194, 8, 0, 48,194, 8,104, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 8, 55,194, 8,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192, 54,194, 8,144, 48,194, 8,104, 49,194, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 80, 55,194, 8,199, 0, 0, 0, 1, 0, 0, 0, 48, 58,194, 8, 0, 0, 0, 0, + 0, 48,194, 8, 40, 47,194, 8,112, 47,194, 8, 72, 48,194, 8, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, +214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,248, 78,194, 8,248, 78,194, 8, +224, 55,194, 8, 8, 57,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +224, 55,194, 8,200, 0, 0, 0, 1, 0, 0, 0, 8, 57,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -3241,7 +3205,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,106,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32,105,106, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8, 57,194, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224, 55,194, 8, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, 112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3249,11 +3213,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,224,107,106, 3,199, 0, 0, 0, - 1, 0, 0, 0,136,112,106, 3, 88,104,106, 3,184, 89,106, 3, 0, 93,106, 3,224, 94,106, 3, 32, 91,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 48, 58,194, 8,199, 0, 0, 0, + 1, 0, 0, 0, 16, 61,194, 8, 80, 55,194, 8,224, 46,194, 8,216, 48,194, 8,248, 49,194, 8,184, 47,194, 8, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,255, 4, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,104,111,106, 3,104,111,106, 3,168,108,106, 3, 8,110,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,108,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 8,110,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0,240, 70,171, 8,240, 70,171, 8,192, 58,194, 8,232, 59,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192, 58,194, 8,200, 0, 0, 0, 1, 0, 0, 0,232, 59,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, @@ -3261,8 +3225,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,110,106, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,168,108,106, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232, 59,194, 8,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,192, 58,194, 8, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192, 246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, @@ -3270,17 +3234,17 @@ char datatoc_startup_blend[]= { 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -188, 0, 0, 0,104,111,106, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +188, 0, 0, 0,240, 70,171, 8,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,136,112,106, 3,199, 0, 0, 0, 1, 0, 0, 0, - 16,120,106, 3,224,107,106, 3, 0, 93,106, 3,240, 93,106, 3,136, 92,106, 3,224, 94,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16, 61,194, 8,199, 0, 0, 0, 1, 0, 0, 0, + 72, 67,194, 8, 48, 58,194, 8,216, 48,194, 8,104, 49,194, 8,144, 48,194, 8,248, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 254, 4, 0, 0, 65, 0, 0, 0, 83, 1, 0, 0, 8, 8,255, 4, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208,118,106, 3,208,118,106, 3, 80,113,106, 3,112,117,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 80,113,106, 3,200, 0, 0, 0, 1, 0, 0, 0,176,114,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 66,194, 8, 64, 66,194, 8,160, 61,194, 8, 24, 65,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,160, 61,194, 8,200, 0, 0, 0, 1, 0, 0, 0,200, 62,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 96,191, 68, 0, 0,200, 65, 0, 96,191, 68, 0, 0,200, 65, 0, 0,128, 63, @@ -3288,8 +3252,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,114,106, 3,200, 0, 0, 0, 1, 0, 0, 0, - 16,116,106, 3, 80,113,106, 3, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 62,194, 8,200, 0, 0, 0, 1, 0, 0, 0, +240, 63,194, 8,160, 61,194, 8, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,121,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0, @@ -3297,7 +3261,7 @@ char datatoc_startup_blend[]= { 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,249, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 16,116,106, 3,200, 0, 0, 0, 1, 0, 0, 0,112,117,106, 3,176,114,106, 3, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, +240, 63,194, 8,200, 0, 0, 0, 1, 0, 0, 0, 24, 65,194, 8,200, 62,194, 8, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, @@ -3305,7 +3269,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 34, 4, 0, 0, 83, 1, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,117,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16,116,106, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24, 65,194, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240, 63,194, 8, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, @@ -3313,7 +3277,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,208,118,106, 3,166, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 64, 66,194, 8,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3321,11 +3285,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0, 16,120,106, 3,199, 0, 0, 0, 1, 0, 0, 0, 16,128,106, 3,136,112,106, 3,240, 93,106, 3,152, 91,106, 3, -120, 93,106, 3,104, 94,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, 2, 2, 52, 2, -102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,126,106, 3, 88,126,106, 3,216,120,106, 3,248,124,106, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,120,106, 3,200, 0, 0, 0, - 1, 0, 0, 0, 56,122,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 96, 0, 0, 0, 72, 67,194, 8,199, 0, 0, 0, 1, 0, 0, 0,192, 72,194, 8, 16, 61,194, 8,104, 49,194, 8, 0, 48,194, 8, + 32, 49,194, 8,176, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, 2, 2, 52, 2, +102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 75,174, 8,112, 75,174, 8,216, 67,194, 8, 80, 71,194, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216, 67,194, 8,200, 0, 0, 0, + 1, 0, 0, 0, 0, 69,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 13, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, @@ -3333,7 +3297,7 @@ char datatoc_startup_blend[]= { 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 56,122,106, 3,200, 0, 0, 0, 1, 0, 0, 0,152,123,106, 3,216,120,106, 3, 0, 0, 0, 0, 0, 0, 72, 67, +248, 0, 0, 0, 0, 69,194, 8,200, 0, 0, 0, 1, 0, 0, 0, 40, 70,194, 8,216, 67,194, 8, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,157,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, @@ -3341,16 +3305,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 76, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,123,106, 3,200, 0, 0, 0, 1, 0, 0, 0,248,124,106, 3, - 56,122,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40, 70,194, 8,200, 0, 0, 0, 1, 0, 0, 0, 80, 71,194, 8, + 0, 69,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,124,106, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152,123,106, 3, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 71,194, 8, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 70,194, 8, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, @@ -3358,19 +3322,19 @@ char datatoc_startup_blend[]= { 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,208, 0, 0, 0, 88,126,106, 3,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,208, 0, 0, 0,112, 75,174, 8,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144,127,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,144,127,106, 3, 24, 1, 0, 0, 1, 0, 0, 0, 48,136,106, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16,128,106, 3,199, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 16,120,106, 3,104, 94,106, 3,120, 93,106, 3, 16, 92,106, 3,136, 92,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,120, 72,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120, 72,194, 8, 24, 1, 0, 0, 1, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,192, 72,194, 8,199, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 72, 67,194, 8,176, 49,194, 8, 32, 49,194, 8, 72, 48,194, 8,144, 48,194, 8, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, 8, 8,202, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88,134,106, 3, 88,134,106, 3,216,128,106, 3,248,132,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,128,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 56,130,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0,240, 77,194, 8,240, 77,194, 8, 80, 73,194, 8,200, 76,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 73,194, 8,200, 0, 0, 0, 1, 0, 0, 0,120, 74,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 15, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 50, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 64, 50, 68, 0, 0,200, 65, 0, 64, 50, 68, 0, 0,200, 65, @@ -3378,8 +3342,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,130,106, 3,200, 0, 0, 0, - 1, 0, 0, 0,152,131,106, 3,216,128,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120, 74,194, 8,200, 0, 0, 0, + 1, 0, 0, 0,160, 75,194, 8, 80, 73,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3387,7 +3351,7 @@ char datatoc_startup_blend[]= { 111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,152,131,106, 3,200, 0, 0, 0, 1, 0, 0, 0,248,132,106, 3, 56,130,106, 3, 0, 0,112,195, 0, 0,112, 67, +248, 0, 0, 0,160, 75,194, 8,200, 0, 0, 0, 1, 0, 0, 0,200, 76,194, 8,120, 74,194, 8, 0, 0,112,195, 0, 0,112, 67, 0, 0, 7,195, 0, 0, 7, 67,105, 42,145,196,105, 42,145, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, @@ -3395,15 +3359,15 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 76, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,132,106, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -152,131,106, 3, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 76,194, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +160, 75,194, 8, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 88,134,106, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,240, 77,194, 8, 166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3411,12 +3375,12 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 67, 0, 0,120, 5, 0, 0, 48,136,106, 3,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 0, 0,120, 5, 0, 0, 88, 79,194, 8,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99,101,110,101, 0,116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 16,142,106, 3, 0, 0, 0, 0,208,160,106, 3, 96,158,106, 3, 0, 0, 0, 0, 0, 0, 0, 0,144,144,106, 3, -144,145,106, 3,144,144,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,104, 98,173, 8, 0, 0, 0, 0,144, 90,194, 8,128,222,172, 8, 0, 0, 0, 0, 0, 0, 0, 0,152,133,239, 2, +160, 0,241, 2,152,133,239, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,146,106, 3,192, 39, 78, 3, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85,194, 8, 8,142,235, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63, @@ -3426,7 +3390,7 @@ char datatoc_startup_blend[]= { 32, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 50, 0,141, 0,128, 7, 56, 4, 8, 0, 8, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, 90, 0, 1, 0, 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,152,106, 3, 16,152,106, 3, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 90,240, 2,120, 90,240, 2, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3449,31 +3413,31 @@ char datatoc_startup_blend[]= { 173, 2, 95, 0,154,153,217, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, 68, 69, 82, 95, 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63,102,166,171, 67, 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,152,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 99, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,165,241, 2, 0, 0, 0, 0, 0, 0, 0, 0,248,208,244, 2, 1, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 32, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 5, 0, 60, 0, 5, 0, 1, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4, 205,204,204, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0, 16,142,106, 3, 16, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,104, 98,173, 8, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,142,106, 3,192,142,106, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,192,142,106, 3, 16, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94,173, 8, 0, 94,173, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0, 0, 94,173, 8, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,110,101,116,119,111,114,107, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,143,106, 3,112,143,106, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,112,143,106, 3, 16, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 94,173, 8,128, 94,173, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,128, 94,173, 8, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,101,114,118,101,114, 95, 97,100,100,114,101,115,115, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,144,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 32,144,106, 3, 0, 0, 0, 0, 1, 0, 0, 0, - 91,100,101,102, 97,117,108,116, 93, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0,144,144,106, 3,133, 0, 0, 0, 1, 0, 0, 0, - 16,145,106, 3, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,102, 2,162, 1, 16,165,106, 3, 68, 65, 84, 65, - 28, 0, 0, 0, 16,145,106, 3,133, 0, 0, 0, 1, 0, 0, 0,144,145,106, 3,144,144,106, 3, 1, 0, 0, 0, 2, 0, 0, 0, - 0, 4, 0, 0, 25, 3,180, 2, 72,170,106, 3, 68, 65, 84, 65, 28, 0, 0, 0,144,145,106, 3,133, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 16,145,106, 3, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,135, 0,246, 1,208,160,106, 3, 68, 65, 84, 65, -144, 1, 0, 0, 16,146,106, 3,153, 0, 0, 0, 1, 0, 0, 0, 8,148,106, 3, 24,149,106, 3, 40,150,106, 3, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,199,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,224,199,226, 2, 0, 0, 0, 0, 1, 0, 0, 0, + 91,100,101,102, 97,117,108,116, 93, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0,152,133,239, 2,133, 0, 0, 0, 1, 0, 0, 0, + 32,130,239, 2, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,102, 2,162, 1,160, 94,194, 8, 68, 65, 84, 65, + 28, 0, 0, 0, 32,130,239, 2,133, 0, 0, 0, 1, 0, 0, 0,160, 0,241, 2,152,133,239, 2, 1, 0, 0, 0, 2, 0, 0, 0, + 0, 4, 0, 0, 25, 3,180, 2,112, 99,194, 8, 68, 65, 84, 65, 28, 0, 0, 0,160, 0,241, 2,133, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 32,130,239, 2, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,135, 0,246, 1,144, 90,194, 8, 68, 65, 84, 65, +144, 1, 0, 0, 0, 85,194, 8,153, 0, 0, 0, 1, 0, 0, 0,192, 86,194, 8, 32, 87,194, 8,128, 87,194, 8, 0, 0,128, 63, 1, 0, 1, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, 32, 0, 32, 0, 32, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,152,151,106, 3, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,192,165,226, 2, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, @@ -3483,32 +3447,32 @@ char datatoc_startup_blend[]= { 0, 0,250, 0,205,204,204, 61,205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, 72,225,122, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 44, 0, 0, 0, 8,148,106, 3,152, 0, 0, 0, 1, 0, 0, 0,152,148,106, 3, 0, 0, 0, 0, 7, 0, 0, 0, + 68, 65, 84, 65, 44, 0, 0, 0,192, 86,194, 8,152, 0, 0, 0, 1, 0, 0, 0, 88, 86,240, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 28, 0, 0, 0,152,148,106, 3, 0, 0, 0, 0, 1, 0, 0, 0,128, 76,108, 3,112, 2,108, 3,144,133,108, 3, -176, 81,108, 3, 64, 14,108, 3, 80, 71,108, 3, 0, 35,108, 3, 68, 65, 84, 65, 44, 0, 0, 0, 24,149,106, 3,152, 0, 0, 0, - 1, 0, 0, 0,168,149,106, 3, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0,168,149,106, 3, 0, 0, 0, 0, - 1, 0, 0, 0,128, 76,108, 3,112, 2,108, 3,144,133,108, 3,176, 81,108, 3, 64, 14,108, 3, 80, 71,108, 3, 0, 35,108, 3, - 68, 65, 84, 65, 96, 0, 0, 0, 40,150,106, 3,151, 0, 0, 0, 1, 0, 0, 0,240,150,106, 3, 5, 0, 0, 0, 17, 0, 0, 0, - 0,247, 82, 3,255,100,100,128, 1, 0, 0, 0,129, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 88,114,144, 66, -126,158, 88, 65, 59,205, 69, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 68, 0, 0, 0,240,150,106, 3, - 0, 0, 0, 0, 1, 0, 0, 0, 16, 9,108, 3,112, 19,108, 3,208, 29,108, 3, 96, 45,108, 3,144, 50,108, 3,160,107,108, 3, - 0,118,108, 3, 48,123,108, 3,192,138,108, 3,192, 55,108, 3,240, 60,108, 3, 32, 66,108, 3,224, 86,108, 3, 16, 92,108, 3, - 64, 97,108, 3,112,102,108, 3,240,143,108, 3, 68, 65, 84, 65, 16, 0, 0, 0,152,151,106, 3, 0, 0, 0, 0, 1, 0, 0, 0, - 48, 40,108, 3, 96,128,108, 3,160, 24,108, 3,208,112,108, 3, 68, 65, 84, 65, 72, 0, 0, 0, 16,152,106, 3,139, 0, 0, 0, + 68, 65, 84, 65, 28, 0, 0, 0, 88, 86,240, 2, 0, 0, 0, 0, 1, 0, 0, 0, 40,240,195, 8, 48,179,195, 8, 0, 34,196, 8, +176,244,195, 8,192,185,195, 8,152,235,195, 8,224,203,195, 8, 68, 65, 84, 65, 44, 0, 0, 0, 32, 87,194, 8,152, 0, 0, 0, + 1, 0, 0, 0,168, 86,240, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0,168, 86,240, 2, 0, 0, 0, 0, + 1, 0, 0, 0, 40,240,195, 8, 48,179,195, 8, 0, 34,196, 8,176,244,195, 8,192,185,195, 8,152,235,195, 8,224,203,195, 8, + 68, 65, 84, 65, 96, 0, 0, 0,128, 87,194, 8,151, 0, 0, 0, 1, 0, 0, 0,216,200,239, 2, 5, 0, 0, 0, 17, 0, 0, 0, +144,152,244, 2,255,100,100,128, 1, 0, 0, 0,129, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,202, 51,179, 66, + 46,217,131, 65,231,171,106, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 68, 0, 0, 0,216,200,239, 2, + 0, 0, 0, 0, 1, 0, 0, 0,120,182,195, 8, 72,190,195, 8, 88,199,195, 8,240,212,195, 8,120,217,195, 8, 88, 11,196, 8, +104, 20,196, 8,240, 24,196, 8,136, 38,196, 8, 0,222,195, 8,136,226,195, 8, 16,231,195, 8, 56,249,195, 8,192,253,195, 8, + 72, 2,196, 8,208, 6,196, 8, 16, 43,196, 8, 68, 65, 84, 65, 16, 0, 0, 0,192,165,226, 2, 0, 0, 0, 0, 1, 0, 0, 0, +104,208,195, 8,120, 29,196, 8,208,194,195, 8,224, 15,196, 8, 68, 65, 84, 65, 72, 0, 0, 0,120, 90,240, 2,139, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 76, 97,121,101,114, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 67, 65, 0, 0,104, 0, 0, 0, 64,153,106, 3, 29, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 67, 65, 0, 0,104, 0, 0, 0, 16, 88,194, 8, 29, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63, 205,204,204, 61, 0, 0,200, 66, 0, 0, 12, 66,161, 14,234, 64, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0,108, 1, 0, 0, 16,154,106, 3, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0,108, 1, 0, 0,168, 88,194, 8, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63,247,255,239, 65, 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,224,155,106, 3, + 0, 0,128, 63,247,255,239, 65, 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 8, 77,255, 2, 2, 0, 0, 0, 46, 26,128, 63, 25, 4,240, 65, 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 11, 3, 0, 1, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111, 18,131, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, @@ -3516,19 +3480,19 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,216,157,106, 3, 68, 65, 84, 65, 16, 1, 0, 0,224,155,106, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,192,140,248, 2, 68, 65, 84, 65, 16, 1, 0, 0, 8, 77,255, 2, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,243, 4, 53,191, -242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63, 88,157,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63, 72, 90,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,157,106, 3, 81, 1, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 90,194, 8, 81, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -216,157,106, 3, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0,120, 1, 0, 0, 96,158,106, 3,132, 0, 0, 0, 1, 0, 0, 0, +192,140,248, 2, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0,120, 1, 0, 0,128,222,172, 8,132, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 99, 80, 61,114, 99, 80, 61,114, 99, 80, 61, 0, 0, 0, 0,199, 54, 36, 60,199, 54, 36, 60,199, 54, 36, 60, 0, 0, 0, 0, @@ -3540,14 +3504,14 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,160,106, 3, 68, 65, 84, 65, 32, 0, 0, 0, - 72,160,106, 3, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0,208,160,106, 3,121, 0, 0, 0, 1, 0, 0, 0, - 16,165,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 60,172, 8, 68, 65, 84, 65, 32, 0, 0, 0, +120, 60,172, 8, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0,144, 90,194, 8,121, 0, 0, 0, 1, 0, 0, 0, +160, 94,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,153,106, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 88,194, 8, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3574,15 +3538,15 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, -220, 3, 0, 0, 16,165,106, 3,121, 0, 0, 0, 1, 0, 0, 0, 72,170,106, 3,208,160,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, +220, 3, 0, 0,160, 94,194, 8,121, 0, 0, 0, 1, 0, 0, 0,112, 99,194, 8,144, 90,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,223, 9, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 72,247,107, 3, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,240,187, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112,172,195, 8, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 42, 87, 3, 0,237, 98, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,142,170, 8,104,222,255, 2, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, @@ -3603,21 +3567,21 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,169,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 24,222, 9, 3,152,111, 77, 3, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, 64, 42, 87, 3, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, 0,237, 98, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -144, 0, 0, 0, 80,169,106, 3,124, 0, 0, 0, 1, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176, 98,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, +232,198,254, 2, 40,208,189, 8, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, 8,142,170, 8, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,104,222,255, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +144, 0, 0, 0,176, 98,194, 8,124, 0, 0, 0, 1, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,205,204, 76, 62, 10,215,163, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, - 79, 66, 0, 0,220, 3, 0, 0, 72,170,106, 3,121, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16,165,106, 3, 0, 0, 0, 0, + 79, 66, 0, 0,220, 3, 0, 0,112, 99,194, 8,121, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,160, 94,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,154,106, 3, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 88,194, 8, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3643,7 +3607,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0,160, 2, 0, 0,136,174,106, 3, 44, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0,160, 2, 0, 0,128,103,194, 8, 44, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -3659,14 +3623,14 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61, 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,144,177,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,104,202,254, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,179,106, 3, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 64, 16,172, 8, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111,148, 26, 63,111,148, 26, 63,111,148, 26, 63,205,204, 76, 61,205,204,204, 61,102,102,166, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,144,177,106, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 84,107, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,104,202,254, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0,176, 10,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -3674,8 +3638,8 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 32, 0, 0, 0, 0,179,106, 3, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, - 96, 0, 0, 0, 1, 0, 1, 0, 49, 0, 49, 0,136,179,106, 3,240,195,106, 3, 68, 65, 84, 65, 0, 16, 0, 0,136,179,106, 3, + 68, 65, 84, 65, 32, 0, 0, 0, 64, 16,172, 8, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, + 96, 0, 0, 0, 1, 0, 1, 0, 49, 0, 49, 0, 80,106,194, 8,128,122,194, 8, 68, 65, 84, 65, 0, 16, 0, 0, 80,106,194, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3804,7 +3768,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0,240,195,106, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0,128,122,194, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4957,7 +4921,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0, - 48, 1, 0, 0, 88, 84,107, 3, 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 1, 0, 0,176, 10,195, 8, 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,128, 63, @@ -4966,9 +4930,9 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 85,107, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,240, 85,107, 3, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, - 96, 0, 0, 0, 0, 0, 1, 0, 14, 0, 13, 0,120, 86,107, 3,224,102,107, 3, 68, 65, 84, 65, 0, 16, 0, 0,120, 86,107, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,228,171, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 8,228,171, 8, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, + 96, 0, 0, 0, 0, 0, 1, 0, 14, 0, 13, 0, 16, 12,195, 8, 64, 28,195, 8, 68, 65, 84, 65, 0, 16, 0, 0, 16, 12,195, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, @@ -5097,7 +5061,7 @@ char datatoc_startup_blend[]= { 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 68, 65, 84, 65, 0,144, 0, 0,224,102,107, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 68, 65, 84, 65, 0,144, 0, 0, 64, 28,195, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, @@ -6250,20 +6214,20 @@ char datatoc_startup_blend[]= { 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0, - 40, 1, 0, 0, 72,247,107, 3, 54, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 40, 1, 0, 0,112,172,195, 8, 54, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,130,239, 2, - 32, 0,108, 3, 0, 1,108, 3, 0, 0, 0, 0,144,250,107, 3,112,253,107, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,248,107, 3, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184,251,107, 3, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,104,254,107, 3, 2, 0, 0, 0, 5, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,223,170, 8, +136,178,195, 8, 48,201,254, 2, 0, 0, 0, 0,200,173,195, 8, 64,176,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,203,254, 2, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,184,174,195, 8, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,177,195, 8, 2, 0, 0, 0, 5, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 30, 0, 6, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, - 88,130,239, 2, 0, 0, 0, 0, 1, 0, 0, 0,136,174,106, 3, 68, 65, 84, 65, 84, 1, 0, 0,216,248,107, 3, 88, 1, 0, 0, +208,223,170, 8, 0, 0, 0, 0, 1, 0, 0, 0,128,103,194, 8, 68, 65, 84, 65, 84, 1, 0, 0,160,203,254, 2, 88, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,144,250,107, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,200,173,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6272,16 +6236,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, -144,250,107, 3, 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, +200,173,195, 8, 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191,230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191, 253,255,127,191, 0, 0,128,191, 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, 1, 0, 0, 0,245,255,127, 63, 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191, 250,255,127,191, 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, - 26,182,230, 73,230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0,184,251,107, 3, 88, 1, 0, 0, 5, 0, 0, 0, + 26,182,230, 73,230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0,184,174,195, 8, 88, 1, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112,253,107, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64,176,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6289,28 +6253,28 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0,112,253,107, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0, 64,176,195, 8, 57, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65, 84, 1, 0, 0, -104,254,107, 3, 88, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,177,195, 8, 88, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0,108, 3, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,178,195, 8, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,201,254, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,120, 0, 0, 0, 32, 0,108, 3, 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65,120, 0, 0, 0,136,178,195, 8, 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, 68, 65, 84, 65, 8, 1, 0, 0, 0, 1,108, 3, 67, 0, 0, 0, 6, 0, 0, 0, + 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, 68, 65, 84, 65, 8, 1, 0, 0, 48,201,254, 2, 67, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6319,10 +6283,10 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,112, 2,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 16, 9,108, 3, + 0, 0, 1, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 48,179,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,120,182,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 7,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 41,255, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -6341,7 +6305,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,188, 2,108, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,124,179,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -6350,21 +6314,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 0, 7,108, 3, 83, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 16, 41,255, 2, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,120, 8,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 24,182,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,120, 8,108, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 24,182,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, - 16, 9,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 64, 14,108, 3,112, 2,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108, -111, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 48, 12,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, +120,182,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,192,185,195, 8, 48,179,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108, +111, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 23, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,224, 30,251, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6373,7 +6337,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 96,226, 8, 3, 46,105, 46, 99,114,101, 97,115,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 98,108,111, 98, 46,112,110,103, 0, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6384,7 +6348,7 @@ char datatoc_startup_blend[]= { 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 92, 9,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,196,182,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6393,21 +6357,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 48, 12,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,224, 30,251, 2, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,168, 13,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114, 97,255,186, 96,185,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,168, 13,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 96,185,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 64, 14,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,112, 19,108, 3, - 16, 9,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,192,185,195, 8, 87, 1, 0, 0, 1, 0, 0, 0, 72,190,195, 8, +120,182,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 96, 17,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,168,188,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -6426,7 +6390,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,140, 14,108, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 12,186,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -6435,21 +6399,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 96, 17,108, 3, 83, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,168,188,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,216, 18,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,232,189,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,216, 18,108, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,232,189,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, -112, 19,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,160, 24,108, 3, 64, 14,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, - 97,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,144, 22,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 72,190,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,208,194,195, 8,192,185,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, + 97,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 24, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 48,193,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6458,7 +6422,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -112,227, 82, 3, 46,105, 46, 99,108, 97,121, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 99,108, 97,121, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6469,7 +6433,7 @@ char datatoc_startup_blend[]= { 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,188, 19,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,148,190,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6478,21 +6442,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,144, 22,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 48,193,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186, 8, 24,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114, 97,255,186,112,194,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8, 24,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,112,194,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,160, 24,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,208, 29,108, 3, -112, 19,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,208,194,195, 8, 87, 1, 0, 0, 1, 0, 0, 0, 88,199,195, 8, + 72,190,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,192, 27,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,184,197,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -6511,7 +6475,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,236, 24,108, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 28,195,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -6520,21 +6484,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,192, 27,108, 3, 83, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,184,197,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56, 29,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,248,198,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56, 29,108, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,248,198,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, -208, 29,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 0, 35,108, 3,160, 24,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,114, -101, 97,115,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,240, 32,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 88,199,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,224,203,195, 8,208,194,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,114, +101, 97,115,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 25, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 64,202,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6543,7 +6507,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 96,226, 8, 3, 46,105, 46, 99,114,101, 97,115,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 99,114,101, 97,115,101, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6554,7 +6518,7 @@ char datatoc_startup_blend[]= { 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 28, 30,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,164,199,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6563,21 +6527,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,240, 32,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 64,202,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,228, 97,175,190, 50,131,112, 63,218,243,127,191, - 10,183,157,188,104, 34,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10,183,157,188,128,203,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,104, 34,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,128,203,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215, 35, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 0, 35,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 48, 40,108, 3, -208, 29,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, 0, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,224,203,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,104,208,195, 8, + 88,199,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, 0, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 32, 38,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,200,206,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -6596,7 +6560,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 76, 35,108, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 44,204,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -6605,21 +6569,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 32, 38,108, 3, 83, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,200,206,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,152, 39,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 8,208,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,152, 39,108, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8,208,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, - 48, 40,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 96, 45,108, 3, 0, 35,108, 3, 75,247,105, 0, 0, 0, 0, 0, 66, 82, 68,114, +104,208,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,240,212,195, 8,224,203,195, 8, 75,247,105, 0, 0, 0, 0, 0, 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 80, 43,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 80,211,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6639,7 +6603,7 @@ char datatoc_startup_blend[]= { 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,124, 40,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,180,208,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6648,21 +6612,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 80, 43,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 80,211,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,200, 44,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114, 97,255,186,144,212,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200, 44,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,144,212,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 96, 45,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,144, 50,108, 3, - 48, 40,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,105,108,108, 47, 68,101,101,112,101,110, 0, 48, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,128, 48,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,240,212,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,120,217,195, 8, +104,208,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,105,108,108, 47, 68,101,101,112,101,110, 0, 48, 48, 49, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,216,215,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -6670,7 +6634,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,112,229, 82, 3, 46,105, 46,102,105,108,108, 46,112,110,103, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,102,105,108,108, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6681,7 +6645,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, - 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,172, 45,108, 3, + 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 60,213,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -6690,21 +6654,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,128, 48,108, 3, 83, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,216,215,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,248, 49,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 24,217,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,248, 49,108, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 24,217,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, -144, 50,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,192, 55,108, 3, 96, 45,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,108, - 97,116,116,101,110, 47, 67,111,110,116,114, 97,115,116, 0, 48, 48, 49, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,176, 53,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, +120,217,195, 8, 87, 1, 0, 0, 1, 0, 0, 0, 0,222,195, 8,240,212,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,108, + 97,116,116,101,110, 47, 67,111,110,116,114, 97,115,116, 0, 48, 48, 49, 0, 0, 2, 0, 0, 3, 27, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 96,220,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6713,7 +6677,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 64,233, 8, 3, 46,105, 46,102,108, 97,116,116,101,110, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,102,108, 97,116,116,101,110, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6724,7 +6688,7 @@ char datatoc_startup_blend[]= { 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,220, 50,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,196,217,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6733,21 +6697,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,176, 53,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 96,220,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186, 40, 55,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114, 97,255,186,160,221,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40, 55,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,160,221,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,192, 55,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,240, 60,108, 3, -144, 50,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, 97, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,224, 58,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 0,222,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,136,226,195, 8, +120,217,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, 97, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 28, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,232,224,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -6755,7 +6719,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 64,235, 8, 3, 46,105, 46,103,114, 97, 98, 46,112,110,103, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,103,114, 97, 98, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6766,7 +6730,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, - 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 12, 56,108, 3, + 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 76,222,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -6775,21 +6739,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,224, 58,108, 3, 83, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,232,224,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 88, 60,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 40,226,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 88, 60,108, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40,226,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, -240, 60,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 32, 66,108, 3,192, 55,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 73,110, -102,108, 97,116,101, 47, 68,101,102,108, 97,116,101, 0, 48, 48, 49, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 64,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, +136,226,195, 8, 87, 1, 0, 0, 1, 0, 0, 0, 16,231,195, 8, 0,222,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 73,110, +102,108, 97,116,101, 47, 68,101,102,108, 97,116,101, 0, 48, 48, 49, 0, 0, 0, 2, 0, 0, 3, 29, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,112,229,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6798,7 +6762,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -248,103, 83, 3, 46,105, 46,105,110,102,108, 97,116,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,105,110,102,108, 97,116,101, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6809,7 +6773,7 @@ char datatoc_startup_blend[]= { 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, - 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0, 60, 61,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0,212,226,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6818,21 +6782,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 16, 64,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,112,229,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,136, 65,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114, 97,255,186,176,230,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136, 65,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,176,230,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 32, 66,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 80, 71,108, 3, -240, 60,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 64, 69,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 16,231,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,152,235,195, 8, +136,226,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 30, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,248,233,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -6840,7 +6804,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 64,112, 83, 3, 46,105, 46,108, 97,121,101,114, 46,112,110,103, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,108, 97,121,101,114, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6851,7 +6815,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, - 20,174,199, 62, 20,174,199, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,108, 66,108, 3, + 20,174,199, 62, 20,174,199, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 92,231,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -6860,21 +6824,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 64, 69,108, 3, 83, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,248,233,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,184, 70,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 56,235,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,184, 70,108, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,235,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, - 80, 71,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,128, 76,108, 3, 32, 66,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105, +152,235,195, 8, 87, 1, 0, 0, 1, 0, 0, 0, 40,240,195, 8, 16,231,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105, 103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,112, 74,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,128,238,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6894,7 +6858,7 @@ char datatoc_startup_blend[]= { 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,156, 71,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,228,235,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6903,21 +6867,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,112, 74,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,128,238,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61,232, 75,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 46,189,194, 61,192,239,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,232, 75,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,192,239,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,128, 76,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,176, 81,108, 3, - 80, 71,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 40,240,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,176,244,195, 8, +152,235,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,160, 79,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16,243,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -6936,7 +6900,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,204, 76,108, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,116,240,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -6945,21 +6909,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,160, 79,108, 3, 83, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 16,243,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 24, 81,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 80,244,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 24, 81,108, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 80,244,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, -176, 81,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,224, 86,108, 3,128, 76,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117, +176,244,195, 8, 87, 1, 0, 0, 1, 0, 0, 0, 56,249,195, 8, 40,240,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117, 108,116,105,112,108,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,208, 84,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,152,247,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6979,7 +6943,7 @@ char datatoc_startup_blend[]= { 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,252, 81,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,252,244,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6988,21 +6952,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,208, 84,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,152,247,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61, 72, 86,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 46,189,194, 61,216,248,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72, 86,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,216,248,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,224, 86,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 16, 92,108, 3, -176, 81,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 78,117,100,103,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 90,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 56,249,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,192,253,195, 8, +176,244,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 78,117,100,103,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 31, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 32,252,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -7010,7 +6974,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,192, 3, 83, 3, 46,105, 46,110,117,100,103,101, 46,112,110,103, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,110,117,100,103,101, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7021,7 +6985,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, - 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 44, 87,108, 3, + 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,132,249,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -7030,21 +6994,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 0, 90,108, 3, 83, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 32,252,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,120, 91,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 96,253,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,120, 91,108, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 96,253,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, - 16, 92,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 64, 97,108, 3,224, 86,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,105, -110, 99,104, 47, 77, 97,103,110,105,102,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 48, 95,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, +192,253,195, 8, 87, 1, 0, 0, 1, 0, 0, 0, 72, 2,196, 8, 56,249,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,105, +110, 99,104, 47, 77, 97,103,110,105,102,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 2, 0, 0, 3, 32, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168, 0,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -7053,7 +7017,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 48,173, 8, 3, 46,105, 46,112,105,110, 99,104, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,112,105,110, 99,104, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7064,7 +7028,7 @@ char datatoc_startup_blend[]= { 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, - 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0, 92, 92,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0, 12,254,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -7073,21 +7037,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 48, 95,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,168, 0,196, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,168, 96,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114, 97,255,186,232, 1,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,168, 96,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,232, 1,196, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 64, 97,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,112,102,108, 3, - 16, 92,108, 3, 9,186,107, 0, 0, 0, 0, 0, 66, 82, 80,111,108,105,115,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 96,100,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 72, 2,196, 8, 87, 1, 0, 0, 1, 0, 0, 0,208, 6,196, 8, +192,253,195, 8, 9,186,107, 0, 0, 0, 0, 0, 66, 82, 80,111,108,105,115,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 33, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 48, 5,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -7095,7 +7059,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 64,233, 8, 3, 46,105, 46,102,108, 97,116,116,101,110, 46,112, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,102,108, 97,116,116,101,110, 46,112,110,103, 0, 110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7106,7 +7070,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 9, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, - 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,140, 97,108, 3, + 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,148, 2,196, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -7115,21 +7079,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 96,100,108, 3, 83, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 48, 5,196, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,216,101,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,112, 6,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,216,101,108, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,112, 6,196, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, -112,102,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,160,107,108, 3, 64, 97,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83, 99, -114, 97,112,101, 47, 80,101, 97,107,115, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,144,105,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, +208, 6,196, 8, 87, 1, 0, 0, 1, 0, 0, 0, 88, 11,196, 8, 72, 2,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83, 99, +114, 97,112,101, 47, 80,101, 97,107,115, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 34, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,184, 9,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -7138,7 +7102,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 40,179, 2, 3, 46,105, 46,115, 99,114, 97,112,101, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,115, 99,114, 97,112,101, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7149,7 +7113,7 @@ char datatoc_startup_blend[]= { 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,188,102,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 28, 7,196, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -7158,21 +7122,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,144,105,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,184, 9,196, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186, 8,107,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114, 97,255,186,248, 10,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8,107,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,248, 10,196, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,160,107,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,208,112,108, 3, -112,102,108, 3,164, 25,110, 0, 0, 0, 0, 0, 66, 82, 83, 99,117,108,112,116, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,192,110,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 88, 11,196, 8, 87, 1, 0, 0, 1, 0, 0, 0,224, 15,196, 8, +208, 6,196, 8,164, 25,110, 0, 0, 0, 0, 0, 66, 82, 83, 99,117,108,112,116, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 22, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 64, 14,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -7180,7 +7144,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 48,130, 78, 3, 46,105, 46,100,114, 97,119, 46,112,110,103, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,100,114, 97,119, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7191,7 +7155,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0,230,104, 64, 63, 0, 0,128, 63, - 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,236,107,108, 3, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,164, 11,196, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -7200,21 +7164,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,192,110,108, 3, 83, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 64, 14,196, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 56,112,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,128, 15,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,112,108, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,128, 15,196, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, -208,112,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 0,118,108, 3,160,107,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109, +224, 15,196, 8, 87, 1, 0, 0, 1, 0, 0, 0,104, 20,196, 8, 88, 11,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109, 101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,240,115,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,200, 18,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -7234,7 +7198,7 @@ char datatoc_startup_blend[]= { 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 28,113,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 44, 16,196, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -7243,21 +7207,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,240,115,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,200, 18,196, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61,104,117,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 46,189,194, 61, 8, 20,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,104,117,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8, 20,196, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 0,118,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 48,123,108, 3, -208,112,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 32,121,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,104, 20,196, 8, 87, 1, 0, 0, 1, 0, 0, 0,240, 24,196, 8, +224, 15,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 35, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 80, 23,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -7265,7 +7229,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,192,183, 2, 3, 46,105, 46,115,109,111,111,116,104, 46,112,110, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,115,109,111,111,116,104, 46,112,110,103, 0,110, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7276,7 +7240,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 5, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, - 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 76,118,108, 3, + 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,180, 20,196, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -7285,21 +7249,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 32,121,108, 3, 83, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 80, 23,196, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,152,122,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,144, 24,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,152,122,108, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,144, 24,196, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, - 48,123,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 96,128,108, 3, 0,118,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,110, - 97,107,101, 32, 72,111,111,107, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 80,126,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, +240, 24,196, 8, 87, 1, 0, 0, 1, 0, 0, 0,120, 29,196, 8,104, 20,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,110, + 97,107,101, 32, 72,111,111,107, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 36, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,216, 27,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -7308,7 +7272,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -208, 63, 78, 3, 46,105, 46,115,110, 97,107,101, 95,104,111,111,107, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,115,110, 97,107,101, 95,104,111,111,107, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7319,7 +7283,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,124,123,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 60, 25,196, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -7328,21 +7292,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 80,126,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,216, 27,196, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,200,127,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114, 97,255,186, 24, 29,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200,127,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 24, 29,196, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 96,128,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,144,133,108, 3, - 48,123,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,120, 29,196, 8, 87, 1, 0, 0, 1, 0, 0, 0, 0, 34,196, 8, +240, 24,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,128,131,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 96, 32,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -7361,7 +7325,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,172,128,108, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,196, 29,196, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -7370,21 +7334,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,128,131,108, 3, 83, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 96, 32,196, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,248,132,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,160, 33,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,248,132,108, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,160, 33,196, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, -144,133,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,192,138,108, 3, 96,128,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,117, + 0, 34,196, 8, 87, 1, 0, 0, 1, 0, 0, 0,136, 38,196, 8,120, 29,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,117, 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,176,136,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,232, 36,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -7404,7 +7368,7 @@ char datatoc_startup_blend[]= { 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,220,133,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 76, 34,196, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -7413,21 +7377,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,176,136,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,232, 36,196, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61, 40,138,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 46,189,194, 61, 40, 38,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40,138,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40, 38,196, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,192,138,108, 3, 87, 1, 0, 0, 1, 0, 0, 0,240,143,108, 3, -144,133,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,104,117,109, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,224,141,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,136, 38,196, 8, 87, 1, 0, 0, 1, 0, 0, 0, 16, 43,196, 8, + 0, 34,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,104,117,109, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 37, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,112, 41,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -7435,7 +7399,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,200, 49, 83, 3, 46,105, 46,116,104,117,109, 98, 46,112,110,103, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,116,104,117,109, 98, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7446,7 +7410,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, - 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 12,139,108, 3, + 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,212, 38,196, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -7455,21 +7419,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,224,141,108, 3, 83, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,112, 41,196, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 88,143,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,176, 42,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 88,143,108, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,176, 42,196, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, -240,143,108, 3, 87, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192,138,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,119, -105,115,116, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16,147,108, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 16, 43,196, 8, 87, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136, 38,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,119, +105,115,116, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 38, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,248, 45,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -7478,7 +7442,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -120, 55, 83, 3, 46,105, 46,116,119,105,115,116, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,116,119,105,115,116, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7489,7 +7453,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 60,144,108, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 92, 43,196, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -7498,18 +7462,18 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 16,147,108, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,248, 45,196, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,136,148,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114, 97,255,186, 56, 47,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136,148,108, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56, 47,196, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 85, 83, 69, 82,248, 12, 0, 0, 0, 79,235, 1,194, 0, 0, 0, 1, 0, 0, 0, 33, 8, 17, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 85, 83, 69, 82,248, 12, 0, 0, 96, 8,134, 1,194, 0, 0, 0, 1, 0, 0, 0, 33, 8, 17, 1, 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7567,8 +7531,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 2, 0, 94, 1, 8, 0, 0, 0, 3, 0, 0, 0, 56, 52, 39, 1, 0, 0, 0, 0, 2, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0, 68,172, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0,128, 0, 0, 0, - 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0,248,152,109, 3,248,152,109, 3,120,225, 77, 3,120,225, 77, 3,240,226, 77, 3, -240,226, 77, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0,192, 60,196, 8,192, 60,196, 8, 80,239,247, 2, 80,239,247, 2,192,143,255, 2, +192,143,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 2, 0, 25, 0, 1, 0, 20, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0, 0, 0, 0, 0, 0, 63, @@ -7613,7 +7577,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 29, 0, 0,248,152,109, 3, + 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 29, 0, 0,192, 60,196, 8, 191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, @@ -7848,7 +7812,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 78, 65, 49,224,226, 0, 0, -232,187,114, 3, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69,206, 11, 0, 0, 42,110,101,120,116, 0, 42,112, +248, 86,243, 2, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69,206, 11, 0, 0, 42,110,101,120,116, 0, 42,112, 114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, 0, 42,108, 97,115,116, 0,120, 0,121, 0,122, 0,119, 0,120, 109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, 97,120, 0, 42,112,111,105,110,116,101,114, 0,103,114,111,117, 112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0,115,117, 98,116,121,112,101, 0,102,108, 97,103, 0,110, 97,109, From ef9357365c057e88d79c0701604cb2175d030520 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Tue, 20 Jul 2010 10:22:49 +0000 Subject: [PATCH 567/674] Workaround #20324: clouds (and other) textures bump mapping generates black faces. Only happens with scons/msvc and SSE enabled for raytracing. Why this happens exactly I don't know, I've tried to look for errors in the code but couldn't find any, the perlin noise code somehow is generating NaN values, but it is getting sane inputs. I suspect this is due to the render module being compiled with /arch:SSE and other parts not. For now I've made only the render_raytrace module compile with SSE, which seems to solve the problem, but is mostly a workaround. --- source/blender/render/SConscript | 33 +++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/source/blender/render/SConscript b/source/blender/render/SConscript index 366f6bd723c..bce24fe38a1 100644 --- a/source/blender/render/SConscript +++ b/source/blender/render/SConscript @@ -8,36 +8,37 @@ incs = 'intern/include #/intern/guardedalloc ../blenlib ../makesdna ../makesrna' incs += ' extern/include ../blenkernel ../radiosity/extern/include ../imbuf' incs += ' ../include ../blenloader ../../../intern/smoke/extern' -cflags = env['CCFLAGS'] -cxxflags = env['CXXFLAGS'] +cflags_raytrace = env['CCFLAGS'] +cxxflags_raytrace = env['CXXFLAGS'] defs = [] +defs_raytrace = [] if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): if env['WITH_BF_RAYOPTIMIZATION']: - cflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] - cxxflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + cflags_raytrace = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + cxxflags_raytrace = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] if env['OURPLATFORM'] == 'win32-mingw': if env['WITH_BF_RAYOPTIMIZATION']: - cflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] - cxxflags = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + cflags_raytrace = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + cxxflags_raytrace = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] if env['OURPLATFORM'] == 'darwin': if env['MACOSX_ARCHITECTURE'] in ('i386', 'x86_64') and env['WITH_BF_RAYOPTIMIZATION']: - cflags = env['CFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] - cxxflags = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + cflags_raytrace = env['CFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + cxxflags_raytrace = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] if env['OURPLATFORM'] == 'linux2': if env['WITH_BF_RAYOPTIMIZATION']: - cflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] - cxxflags = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + cflags_raytrace = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + cxxflags_raytrace = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] incs += ' ../../../extern/binreloc/include' if env['OURPLATFORM'] == 'linuxcross': if env['WITH_BF_RAYOPTIMIZATION']: - cflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] - cxxflags = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + cflags_raytrace = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] + cxxflags_raytrace = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] if env['WITH_BF_QUICKTIME']: defs.append('WITH_QUICKTIME') @@ -53,10 +54,12 @@ if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): # HACK: To fix problem with error 'MMX instruction set not enabled' from mmintrin.h # if env['OURPLATFORM'] == 'linuxcross': - defs.append('__MMX__') + defs.append('__SSE__') + defs_raytrace.append('__MMX__') if env['WITH_BF_RAYOPTIMIZATION']: defs.append('__SSE__') + defs_raytrace.append('__SSE__') -env.BlenderLib ( libname = 'bf_render', sources = sources, includes = Split(incs), defines=defs, libtype='core', priority=145, compileflags=cflags ) -env.BlenderLib ( libname = 'bf_render_raytrace', sources = raysources, includes = Split(incs), defines=defs, libtype='core', priority=145, compileflags=cflags, cxx_compileflags=cxxflags ) +env.BlenderLib ( libname = 'bf_render', sources = sources, includes = Split(incs), defines=defs, libtype='core', priority=145 ) +env.BlenderLib ( libname = 'bf_render_raytrace', sources = raysources, includes = Split(incs), defines=defs_raytrace, libtype='core', priority=145, compileflags=cflags_raytrace, cxx_compileflags=cxxflags_raytrace ) From 75410037fd0d5ec81ef24c70789b9a684ca86f3f Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Tue, 20 Jul 2010 10:41:08 +0000 Subject: [PATCH 568/674] - correct some spelling errors. - remove FreeCamera struct (wasnt used) - remove world color alpha values (not used anywhre). --- intern/ghost/intern/GHOST_EventDragnDrop.h | 2 +- intern/ghost/intern/GHOST_SystemCocoa.h | 4 ++-- intern/ghost/intern/GHOST_SystemCocoa.mm | 2 +- intern/ghost/intern/GHOST_SystemWin32.h | 2 +- intern/iksolver/intern/TNT/vec.h | 2 +- intern/itasc/MovingFrame.cpp | 2 +- intern/string/intern/STR_String.cpp | 8 ++++---- release/scripts/io/export_fbx.py | 2 +- release/scripts/io/import_scene_obj.py | 8 ++++---- .../scripts/modules/rigify/spine_pivot_flex.py | 2 +- source/blender/avi/AVI_avi.h | 2 +- source/blender/blenkernel/BKE_fcurve.h | 2 +- source/blender/blenkernel/intern/action.c | 2 +- source/blender/blenkernel/intern/collision.c | 2 +- source/blender/blenkernel/intern/fmodifier.c | 2 +- source/blender/blenkernel/intern/ipo.c | 2 +- source/blender/blenkernel/intern/softbody.c | 2 +- source/blender/blenlib/intern/math_geom.c | 16 ++++++++-------- source/blender/blenlib/intern/scanfill.c | 2 +- source/blender/blenloader/intern/readfile.c | 2 +- .../blender/editors/interface/interface_icons.c | 1 + source/blender/editors/mesh/editmesh_tools.c | 2 +- source/blender/editors/metaball/mball_edit.c | 2 +- source/blender/editors/object/object_transform.c | 2 +- .../blender/editors/sculpt_paint/paint_stroke.c | 2 +- .../blender/editors/space_logic/logic_window.c | 10 ++-------- source/blender/editors/space_nla/nla_draw.c | 2 +- source/blender/editors/space_text/text_ops.c | 2 +- source/blender/editors/space_view3d/drawobject.c | 2 +- .../blender/editors/space_view3d/view3d_edit.c | 2 +- source/blender/makesdna/DNA_actuator_types.h | 7 ------- source/blender/makesdna/DNA_curve_types.h | 2 +- source/blender/makesdna/DNA_sdna_types.h | 2 +- source/blender/makesdna/DNA_world_types.h | 10 +++++----- source/blender/makesdna/intern/makesdna.c | 6 +++--- source/blender/python/doc/epy/Geometry.py | 2 +- source/blender/python/generic/blf_api.c | 2 +- .../blender/render/intern/raytrace/reorganize.h | 4 ++-- .../blenderplayer/bad_level_call_stubs/stubs.c | 2 +- source/gameengine/GamePlayer/ghost/GPG_ghost.cpp | 2 +- source/gameengine/Ketsji/KX_GameObject.cpp | 2 +- source/gameengine/Network/NG_NetworkScene.cpp | 2 +- source/gameengine/PyDoc/VideoTexture.py | 2 +- 43 files changed, 64 insertions(+), 76 deletions(-) diff --git a/intern/ghost/intern/GHOST_EventDragnDrop.h b/intern/ghost/intern/GHOST_EventDragnDrop.h index ea13a33f889..1fcfddf5349 100644 --- a/intern/ghost/intern/GHOST_EventDragnDrop.h +++ b/intern/ghost/intern/GHOST_EventDragnDrop.h @@ -69,7 +69,7 @@ public: * @param time The time this event was generated. * @param type The type of this event. * @param dataType The type of the drop candidate object - * @param window The window where the event occured + * @param window The window where the event occurred * @param x The x-coordinate of the location the cursor was at at the time of the event. * @param y The y-coordinate of the location the cursor was at at the time of the event. * @param data The "content" dropped in the window diff --git a/intern/ghost/intern/GHOST_SystemCocoa.h b/intern/ghost/intern/GHOST_SystemCocoa.h index 2e7c9b1d037..3ae8ec02dda 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.h +++ b/intern/ghost/intern/GHOST_SystemCocoa.h @@ -155,7 +155,7 @@ public: * @param draggedObjectType The type object concerned (currently array of file names, string, TIFF image) * @param mouseX x mouse coordinate (in cocoa base window coordinates) * @param mouseY y mouse coordinate - * @param window The window on which the event occured + * @param window The window on which the event occurred * @return Indication whether the event was handled. */ GHOST_TSuccess handleDraggingEvent(GHOST_TEventType eventType, GHOST_TDragnDropTypes draggedObjectType, @@ -236,7 +236,7 @@ public: /** * Handles a window event. Called by GHOST_WindowCocoa window delegate * @param eventType The type of window event - * @param window The window on which the event occured + * @param window The window on which the event occurred * @return Indication whether the event was handled. */ GHOST_TSuccess handleWindowEvent(GHOST_TEventType eventType, GHOST_WindowCocoa* window); diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index 6c29b7411fc..bec243fc977 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -1550,7 +1550,7 @@ GHOST_TSuccess GHOST_SystemCocoa::handleMouseEvent(void *eventPtr) NSPoint mousePos = [event locationInWindow]; pushEvent(new GHOST_EventCursor([event timestamp]*1000, GHOST_kEventCursorMove, window, mousePos.x, mousePos.y)); m_cursorDelta_x=0; - m_cursorDelta_y=0; //Mouse motion occured between two cursor warps, so we can reset the delta counter + m_cursorDelta_y=0; //Mouse motion occurred between two cursor warps, so we can reset the delta counter } break; } diff --git a/intern/ghost/intern/GHOST_SystemWin32.h b/intern/ghost/intern/GHOST_SystemWin32.h index 888d9c0ab3e..35b8debf6b4 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.h +++ b/intern/ghost/intern/GHOST_SystemWin32.h @@ -214,7 +214,7 @@ public: * @param draggedObjectType The type object concerned (currently array of file names, string, ?bitmap) * @param mouseX x mouse coordinate (in window coordinates) * @param mouseY y mouse coordinate - * @param window The window on which the event occured + * @param window The window on which the event occurred * @return Indication whether the event was handled. */ static GHOST_TSuccess pushDragDropEvent(GHOST_TEventType eventType, GHOST_TDragnDropTypes draggedObjectType,GHOST_IWindow* window, int mouseX, int mouseY, void* data); diff --git a/intern/iksolver/intern/TNT/vec.h b/intern/iksolver/intern/TNT/vec.h index 1729d83ca10..040097afbd9 100644 --- a/intern/iksolver/intern/TNT/vec.h +++ b/intern/iksolver/intern/TNT/vec.h @@ -416,7 +416,7 @@ void vectoradd( A[i] += B[i]; } -// same with seperate output vector +// same with separate output vector template <class T> void vectoradd( diff --git a/intern/itasc/MovingFrame.cpp b/intern/itasc/MovingFrame.cpp index e923b1fab27..914f950e436 100644 --- a/intern/itasc/MovingFrame.cpp +++ b/intern/itasc/MovingFrame.cpp @@ -52,7 +52,7 @@ void MovingFrame::pushInternalFrame(CacheTS timestamp) } } -// load pose just preceeding timestamp +// load pose just preceding timestamp // return false if no cache position was found bool MovingFrame::popInternalFrame(CacheTS timestamp) { diff --git a/intern/string/intern/STR_String.cpp b/intern/string/intern/STR_String.cpp index d468cd4bdbd..3e035fd7905 100644 --- a/intern/string/intern/STR_String.cpp +++ b/intern/string/intern/STR_String.cpp @@ -359,7 +359,7 @@ int STR_String::Find(char c, int pos) const // -// Find the first occurence of <str> in the string +// Find the first occurrence of <str> in the string // int STR_String::Find(const char *str, int pos) const { @@ -373,7 +373,7 @@ int STR_String::Find(const char *str, int pos) const // -// Find the first occurence of <str> in the string +// Find the first occurrence of <str> in the string // int STR_String::Find(rcSTR_String str, int pos) const { @@ -387,7 +387,7 @@ int STR_String::Find(rcSTR_String str, int pos) const // -// Find the last occurence of <c> in the string +// Find the last occurrence of <c> in the string // int STR_String::RFind(char c) const { @@ -399,7 +399,7 @@ int STR_String::RFind(char c) const // -// Find the first occurence of any character in character set <set> in the string +// Find the first occurrence of any character in character set <set> in the string // int STR_String::FindOneOf(const char *set, int pos) const { diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index 40ef3ea9deb..4911e1d5573 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -3037,7 +3037,7 @@ Takes: {''') # -------------------------------------------- # UI Function - not a part of the exporter. -# this is to seperate the user interface from the rest of the exporter. +# this is to separate the user interface from the rest of the exporter. # from Blender import Draw, Window EVENT_NONE = 0 EVENT_EXIT = 1 diff --git a/release/scripts/io/import_scene_obj.py b/release/scripts/io/import_scene_obj.py index afe82410557..9bbb9124b60 100644 --- a/release/scripts/io/import_scene_obj.py +++ b/release/scripts/io/import_scene_obj.py @@ -506,7 +506,7 @@ def create_materials(filepath, material_libs, unique_materials, unique_material_ def split_mesh(verts_loc, faces, unique_materials, filepath, SPLIT_OB_OR_GROUP, SPLIT_MATERIALS): ''' - Takes vert_loc and faces, and seperates into multiple sets of + Takes vert_loc and faces, and separates into multiple sets of (verts_loc, faces, unique_materials, dataname) ''' @@ -1346,7 +1346,7 @@ def load_obj_ui(filepath, BATCH_LOAD= False): 'Separate objects from obj...',\ ('Object', SPLIT_OBJECTS, 'Import OBJ Objects into Blender Objects'),\ ('Group', SPLIT_GROUPS, 'Import OBJ Groups into Blender Objects'),\ - ('Split Materials', SPLIT_MATERIALS, 'Import each material into a seperate mesh'),\ + ('Split Materials', SPLIT_MATERIALS, 'Import each material into a separate mesh'),\ 'Options...',\ ('Keep Vert Order', KEEP_VERT_ORDER, 'Keep vert and face order, disables some other options.'),\ ('Clamp Scale:', CLAMP_SIZE, 0.0, 1000.0, 'Clamp the size to this maximum (Zero to Disable)'),\ @@ -1432,7 +1432,7 @@ def load_obj_ui(filepath, BATCH_LOAD= False): Draw.BeginAlign() SPLIT_OBJECTS = Draw.Toggle('Object', EVENT_REDRAW, ui_x+9, ui_y+89, 55, 21, SPLIT_OBJECTS.val, 'Import OBJ Objects into Blender Objects', do_split) SPLIT_GROUPS = Draw.Toggle('Group', EVENT_REDRAW, ui_x+64, ui_y+89, 55, 21, SPLIT_GROUPS.val, 'Import OBJ Groups into Blender Objects', do_split) - SPLIT_MATERIALS = Draw.Toggle('Split Materials', EVENT_REDRAW, ui_x+119, ui_y+89, 60, 21, SPLIT_MATERIALS.val, 'Import each material into a seperate mesh', do_split) + SPLIT_MATERIALS = Draw.Toggle('Split Materials', EVENT_REDRAW, ui_x+119, ui_y+89, 60, 21, SPLIT_MATERIALS.val, 'Import each material into a separate mesh', do_split) Draw.EndAlign() # Only used for user feedback @@ -1570,7 +1570,7 @@ class IMPORT_OT_obj(bpy.types.Operator): CREATE_EDGES = BoolProperty(name="Lines as Edges", description="Import lines and faces with 2 verts as edge", default= True) SPLIT_OBJECTS = BoolProperty(name="Object", description="Import OBJ Objects into Blender Objects", default= True) SPLIT_GROUPS = BoolProperty(name="Group", description="Import OBJ Groups into Blender Objects", default= True) - SPLIT_MATERIALS = BoolProperty(name="Split Materials", description="Import each material into a seperate mesh", default= False) + SPLIT_MATERIALS = BoolProperty(name="Split Materials", description="Import each material into a separate mesh", default= False) # old comment: only used for user feedback # disabled this option because in old code a handler for it disabled SPLIT* params, it's not passed to load_obj # KEEP_VERT_ORDER = BoolProperty(name="Keep Vert Order", description="Keep vert and face order, disables split options, enable for morph targets", default= True) diff --git a/release/scripts/modules/rigify/spine_pivot_flex.py b/release/scripts/modules/rigify/spine_pivot_flex.py index d3bab72d9a1..86f2399f7ff 100644 --- a/release/scripts/modules/rigify/spine_pivot_flex.py +++ b/release/scripts/modules/rigify/spine_pivot_flex.py @@ -236,7 +236,7 @@ def main(obj, bone_definition, base_names, options): attr_parent = ex_chain.attr_names[i - 1] + "_e" ebone.parent = getattr(ex_chain, attr_parent) - # intentional! get the parent from the other paralelle chain member + # intentional! get the parent from the other parallel chain member getattr(rv_chain, attr).parent = ebone diff --git a/source/blender/avi/AVI_avi.h b/source/blender/avi/AVI_avi.h index a3115e0543b..2e71bd98309 100644 --- a/source/blender/avi/AVI_avi.h +++ b/source/blender/avi/AVI_avi.h @@ -163,7 +163,7 @@ typedef struct _AviIndex { typedef enum { AVI_FORMAT_RGB24, /* The most basic of forms, 3 bytes per pixel, 1 per r, g, b */ AVI_FORMAT_RGB32, /* The second most basic of forms, 4 bytes per pixel, 1 per r, g, b, alpha */ - AVI_FORMAT_AVI_RGB, /* Same as above, but is in the wierd AVI order (bottom to top, left to right) */ + AVI_FORMAT_AVI_RGB, /* Same as above, but is in the weird AVI order (bottom to top, left to right) */ AVI_FORMAT_MJPEG /* Motion-JPEG */ } AviFormat; diff --git a/source/blender/blenkernel/BKE_fcurve.h b/source/blender/blenkernel/BKE_fcurve.h index 835e2ed80c8..6de0c55af3b 100644 --- a/source/blender/blenkernel/BKE_fcurve.h +++ b/source/blender/blenkernel/BKE_fcurve.h @@ -143,7 +143,7 @@ typedef enum eFMI_Action_Types { typedef enum eFMI_Requirement_Flags { /* modifier requires original data-points (kindof beats the purpose of a modifier stack?) */ FMI_REQUIRES_ORIGINAL_DATA = (1<<0), - /* modifier doesn't require on any preceeding data (i.e. it will generate a curve). + /* modifier doesn't require on any preceding data (i.e. it will generate a curve). * Use in conjunction with FMI_TYPE_GENRATE_CURVE */ FMI_REQUIRES_NOTHING = (1<<1), diff --git a/source/blender/blenkernel/intern/action.c b/source/blender/blenkernel/intern/action.c index 6c8e5c48745..228860c9287 100644 --- a/source/blender/blenkernel/intern/action.c +++ b/source/blender/blenkernel/intern/action.c @@ -301,7 +301,7 @@ void action_groups_add_channel (bAction *act, bActionGroup *agrp, FCurve *fcurve /* firstly, link this F-Curve to the group */ agrp->channels.first = agrp->channels.last = fcurve; - /* step through the groups preceeding this one, finding the F-Curve there to attach this one after */ + /* step through the groups preceding this one, finding the F-Curve there to attach this one after */ for (grp= agrp->prev; grp; grp= grp->prev) { /* if this group has F-Curves, we want weave the given one in right after the last channel there, * but via the Action's list not this group's list diff --git a/source/blender/blenkernel/intern/collision.c b/source/blender/blenkernel/intern/collision.c index 9b49ac9c6ff..54adc648539 100644 --- a/source/blender/blenkernel/intern/collision.c +++ b/source/blender/blenkernel/intern/collision.c @@ -591,7 +591,7 @@ int cloth_collision_response_static ( ClothModifierData *clmd, CollisionModifier return result; } -//Determines collisions on overlap, collisions are writen to collpair[i] and collision+number_collision_found is returned +//Determines collisions on overlap, collisions are written to collpair[i] and collision+number_collision_found is returned CollPair* cloth_collision ( ModifierData *md1, ModifierData *md2, BVHTreeOverlap *overlap, CollPair *collpair ) { ClothModifierData *clmd = ( ClothModifierData * ) md1; diff --git a/source/blender/blenkernel/intern/fmodifier.c b/source/blender/blenkernel/intern/fmodifier.c index 6fcc49f9ec1..3271749643a 100644 --- a/source/blender/blenkernel/intern/fmodifier.c +++ b/source/blender/blenkernel/intern/fmodifier.c @@ -1193,7 +1193,7 @@ short list_has_suitable_fmodifier (ListBase *modifiers, int mtype, short acttype * - this step acts as an optimisation to prevent the F-Curve stack being evaluated * several times by modifiers requesting the time be modified, as the final result * would have required using the modified time - * - modifiers only ever recieve the unmodified time, as subsequent modifiers should be + * - modifiers only ever receive the unmodified time, as subsequent modifiers should be * working on the 'global' result of the modified curve, not some localised segment, * so nevaltime gets set to whatever the last time-modifying modifier likes... * - we start from the end of the stack, as only the last one matters for now diff --git a/source/blender/blenkernel/intern/ipo.c b/source/blender/blenkernel/intern/ipo.c index cd8ab8290e5..64c9bf4bd07 100644 --- a/source/blender/blenkernel/intern/ipo.c +++ b/source/blender/blenkernel/intern/ipo.c @@ -906,7 +906,7 @@ static char *get_rna_access (int blocktype, int adrcode, char actname[], char co *array_index= dummy_index; } - /* append preceeding bits to path */ + /* append preceding bits to path */ if ((actname && actname[0]) && (constname && constname[0])) { /* Constraint in Pose-Channel */ sprintf(buf, "pose.bones[\"%s\"].constraints[\"%s\"]", actname, constname); diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c index b44fe1ad1d0..c82595ee2b2 100644 --- a/source/blender/blenkernel/intern/softbody.c +++ b/source/blender/blenkernel/intern/softbody.c @@ -251,7 +251,7 @@ static float _final_mass(Object *ob,BodyPoint *bp) /******************** for each target object/face the axis aligned bounding box (AABB) is stored -faces paralell to global axes +faces parallel to global axes so only simple "value" in [min,max] ckecks are used float operations still */ diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c index e8fb922ce4d..4d1911e8be8 100644 --- a/source/blender/blenlib/intern/math_geom.c +++ b/source/blender/blenlib/intern/math_geom.c @@ -317,7 +317,7 @@ static short IsectLLPt2Df(float x0,float y0,float x1,float y1, return -1; /*m2 = (float) 1e+10;*/ // close enough to infinity if (fabs(m1-m2) < 0.000001) - return -1; /* paralelle lines */ + return -1; /* parallel lines */ // compute constants @@ -993,14 +993,14 @@ void isect_point_quad_uv_v2(float v0[2], float v1[2], float v2[2], float v3[2], { float x0,y0, x1,y1, wtot, v2d[2], w1, w2; - /* used for paralelle lines */ + /* used for parallel lines */ float pt3d[3], l1[3], l2[3], pt_on_line[3]; /* compute 2 edges of the quad intersection point */ if (IsectLLPt2Df(v0[0],v0[1],v1[0],v1[1], v2[0],v2[1],v3[0],v3[1], &x0,&y0) == 1) { /* the intersection point between the quad-edge intersection and the point in the quad we want the uv's for */ /* should never be paralle !! */ - /*printf("\tnot paralelle 1\n");*/ + /*printf("\tnot parallel 1\n");*/ IsectLLPt2Df(pt[0],pt[1],x0,y0, v0[0],v0[1],v3[0],v3[1], &x1,&y1); /* Get the weights from the new intersection point, to each edge */ @@ -1016,8 +1016,8 @@ void isect_point_quad_uv_v2(float v0[2], float v1[2], float v2[2], float v3[2], /*w2 = w2/wtot;*/ uv[0] = w1/wtot; } else { - /* lines are paralelle, lambda_cp_line_ex is 3d grrr */ - /*printf("\tparalelle1\n");*/ + /* lines are parallel, lambda_cp_line_ex is 3d grrr */ + /*printf("\tparallel1\n");*/ pt3d[0] = pt[0]; pt3d[1] = pt[1]; pt3d[2] = l1[2] = l2[2] = 0.0f; @@ -1043,7 +1043,7 @@ void isect_point_quad_uv_v2(float v0[2], float v1[2], float v2[2], float v3[2], if (IsectLLPt2Df(v0[0],v0[1],v3[0],v3[1], v1[0],v1[1],v2[0],v2[1], &x0,&y0) == 1) { /* was v0,v1 v2,v3 now v0,v3 v1,v2*/ /* never paralle if above was not */ - /*printf("\tnot paralelle2\n");*/ + /*printf("\tnot parallel2\n");*/ IsectLLPt2Df(pt[0],pt[1],x0,y0, v0[0],v0[1],v1[0],v1[1], &x1,&y1);/* was v0,v3 now v0,v1*/ v2d[0] = x1-v0[0]; @@ -1056,8 +1056,8 @@ void isect_point_quad_uv_v2(float v0[2], float v1[2], float v2[2], float v3[2], wtot = w1+w2; uv[1] = w1/wtot; } else { - /* lines are paralelle, lambda_cp_line_ex is 3d grrr */ - /*printf("\tparalelle2\n");*/ + /* lines are parallel, lambda_cp_line_ex is 3d grrr */ + /*printf("\tparallel2\n");*/ pt3d[0] = pt[0]; pt3d[1] = pt[1]; pt3d[2] = l1[2] = l2[2] = 0.0f; diff --git a/source/blender/blenlib/intern/scanfill.c b/source/blender/blenlib/intern/scanfill.c index 92a50ac06c7..7896ebdd263 100644 --- a/source/blender/blenlib/intern/scanfill.c +++ b/source/blender/blenlib/intern/scanfill.c @@ -138,7 +138,7 @@ struct mem_elements { static void *new_mem_element(int size) { int blocksize= 16384; - static int offs= 0; /* the current free adress */ + static int offs= 0; /* the current free address */ static struct mem_elements *cur= 0; static ListBase lb= {0, 0}; void *adr; diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 675ccb152d2..d3bf136c529 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -155,7 +155,7 @@ #include <errno.h> /* - Remark: still a weak point is the newadress() function, that doesnt solve reading from + Remark: still a weak point is the newaddress() function, that doesnt solve reading from multiple files at the same time (added remark: oh, i thought that was solved? will look at that... (ton) diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c index c6fafce0ffd..4e6732ee885 100644 --- a/source/blender/editors/interface/interface_icons.c +++ b/source/blender/editors/interface/interface_icons.c @@ -52,6 +52,7 @@ #include "BKE_global.h" #include "BKE_image.h" #include "BKE_icons.h" +#include "BKE_brush.h" #include "BKE_utildefines.h" #include "IMB_imbuf.h" diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index ca9b0ff67f7..52e1b3636ea 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -3417,7 +3417,7 @@ void join_triangles(EditMesh *em) efaa= (EVPtr *)eed->tmp.p; v1 = v2 = v3 = v4 = NULL; givequadverts(efaa[0], efaa[1], &v1, &v2, &v3, &v4, vindex); - if((v1 && v2 && v3 && v4) && (exist_face(em, v1, v2, v3, v4)==0)){ /*exist_face is very slow! Needs to be adressed.*/ + if((v1 && v2 && v3 && v4) && (exist_face(em, v1, v2, v3, v4)==0)){ /*exist_face is very slow! Needs to be addressed.*/ /*flag for delete*/ eed->f1 |= T2QDELETE; /*create new quad and select*/ diff --git a/source/blender/editors/metaball/mball_edit.c b/source/blender/editors/metaball/mball_edit.c index 11534f57f75..4a199622990 100644 --- a/source/blender/editors/metaball/mball_edit.c +++ b/source/blender/editors/metaball/mball_edit.c @@ -550,7 +550,7 @@ int mouse_mball(bContext *C, short mval[2], int extend) if(ml==startelem) break; } - /* When some metaelem was found, then it is neccessary to select or + /* When some metaelem was found, then it is necessary to select or * deselet it. */ if(act) { if(extend==0) { diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index 22f054bc180..66a9dab572a 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -1017,7 +1017,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); } - /* Warn if any errors occured */ + /* Warn if any errors occurred */ if (tot_lib_error+tot_multiuser_arm_error) { BKE_reportf(op->reports, RPT_WARNING, "%i Object(s) Not Centered, %i Changed:",tot_lib_error+tot_multiuser_arm_error, tot_change); if (tot_lib_error) diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c index 7b8d7c4b7ef..81f471481fb 100644 --- a/source/blender/editors/sculpt_paint/paint_stroke.c +++ b/source/blender/editors/sculpt_paint/paint_stroke.c @@ -69,7 +69,7 @@ typedef struct PaintStroke { float last_mouse_position[2]; - /* Set whether any stroke step has yet occured + /* Set whether any stroke step has yet occurred e.g. in sculpt mode, stroke doesn't start until cursor passes over the mesh */ int stroke_started; diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index c4a42d89758..98422ec2d9f 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -1610,7 +1610,7 @@ static short draw_sensorbuttons(Object *ob, bSensor *sens, uiBlock *block, short str = "Type %t|Up Axis %x1 |Down Axis %x3|Left Axis %x2|Right Axis %x0"; uiDefButI(block, MENU, B_REDR, str, xco+10 + 0.6 * (width-20), yco-68, 0.4 * (width-20), 19, &joy->axisf, 2.0, 31, 0, 0, - "The direction of the axis, use 'All Events' to recieve events on any direction"); + "The direction of the axis, use 'All Events' to receive events on any direction"); } } else if (joy->type == SENS_JOY_HAT) @@ -1623,7 +1623,7 @@ static short draw_sensorbuttons(Object *ob, bSensor *sens, uiBlock *block, short str = "Direction%t|Up%x1|Down%x4|Left%x8|Right%x2|%l|Up/Right%x3|Down/Left%x12|Up/Left%x9|Down/Right%x6"; uiDefButI(block, MENU, 0, str, xco+10 + 0.6 * (width-20), yco-68, 0.4 * (width-20), 19, &joy->hatf, 2.0, 31, 0, 0, - "The direction of the hat, use 'All Events' to recieve events on any direction"); + "The direction of the hat, use 'All Events' to receive events on any direction"); } } else { /* (joy->type == SENS_JOY_AXIS_SINGLE)*/ @@ -3174,12 +3174,6 @@ static int is_sensor_linked(uiBlock *block, bSensor *sens) return 0; } -/* never used, see CVS 1.134 for the code */ -/* static FreeCamera *new_freecamera(void) */ - -/* never used, see CVS 1.120 for the code */ -/* static uiBlock *freecamera_menu(void) */ - /* Sensors code */ static void draw_sensor_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *logic_ptr) diff --git a/source/blender/editors/space_nla/nla_draw.c b/source/blender/editors/space_nla/nla_draw.c index 2314b5ddcfa..049337d688c 100644 --- a/source/blender/editors/space_nla/nla_draw.c +++ b/source/blender/editors/space_nla/nla_draw.c @@ -705,7 +705,7 @@ static void draw_nla_channel_list_gl (bAnimContext *ac, ListBase *anim_data, Vie offset += 7 * indent; - /* only on top two corners, to show that this channel sits on top of the preceeding ones */ + /* only on top two corners, to show that this channel sits on top of the preceding ones */ uiSetRoundBox((1|2)); /* draw slightly shifted up vertically to look like it has more separtion from other channels, diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c index a684c4dce0e..91fb616a63f 100644 --- a/source/blender/editors/space_text/text_ops.c +++ b/source/blender/editors/space_text/text_ops.c @@ -1020,7 +1020,7 @@ static int convert_whitespace_exec(bContext *C, wmOperator *op) tmp = text->lines.first; - //first convert to all space, this make it alot easier to convert to tabs because there is no mixtures of ' ' && '\t' + //first convert to all space, this make it a lot easier to convert to tabs because there is no mixtures of ' ' && '\t' while(tmp) { text_check_line = tmp->line; number = flatten_string(st, &fs, text_check_line)+1; diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index f7c36103e5b..f5a14079682 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -907,7 +907,7 @@ static void draw_transp_spot_volume(Lamp *la, float x, float z) draw_spot_cone(la, x, z); - /* draw front side lightening */ + /* draw front side lighting */ glCullFace(GL_BACK); glBlendFunc(GL_ONE, GL_ONE); diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 9a58536d029..b07704cbf69 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -2880,7 +2880,7 @@ void viewmoveNDOF(Scene *scene, ARegion *ar, View3D *v3d, int mode) /*---------------------------------------------------- * record how much time has passed. clamp at 10 Hz - * pretend the previous frame occured at the clamped time + * pretend the previous frame occurred at the clamped time */ // now = PIL_check_seconds_timer(); // frametime = (now - prevTime); diff --git a/source/blender/makesdna/DNA_actuator_types.h b/source/blender/makesdna/DNA_actuator_types.h index 03200b784b4..7c9a37072af 100644 --- a/source/blender/makesdna/DNA_actuator_types.h +++ b/source/blender/makesdna/DNA_actuator_types.h @@ -236,13 +236,6 @@ typedef struct bActuator { } bActuator; -typedef struct FreeCamera { - float mass, accelleration; - float maxspeed, maxrotspeed, maxtiltspeed; - int flag; - float rotdamp, tiltdamp, speeddamp, pad; -} FreeCamera; - /* objectactuator->flag */ #define ACT_FORCE_LOCAL 1 #define ACT_TORQUE_LOCAL 2 diff --git a/source/blender/makesdna/DNA_curve_types.h b/source/blender/makesdna/DNA_curve_types.h index d27ab8f125d..609c3a87dab 100644 --- a/source/blender/makesdna/DNA_curve_types.h +++ b/source/blender/makesdna/DNA_curve_types.h @@ -328,7 +328,7 @@ typedef enum eBezTriple_KeyframeType { #define CU_CHINFO_BOLD (1<<0) #define CU_CHINFO_ITALIC (1<<1) #define CU_CHINFO_UNDERLINE (1<<2) -#define CU_CHINFO_WRAP (1<<3) /* wordwrap occured here */ +#define CU_CHINFO_WRAP (1<<3) /* wordwrap occurred here */ #define CU_CHINFO_SMALLCAPS (1<<4) #define CU_CHINFO_SMALLCAPS_CHECK (1<<5) /* set at runtime, checks if case switching is needed */ diff --git a/source/blender/makesdna/DNA_sdna_types.h b/source/blender/makesdna/DNA_sdna_types.h index 9b486e2851d..f2bdfeff9dd 100644 --- a/source/blender/makesdna/DNA_sdna_types.h +++ b/source/blender/makesdna/DNA_sdna_types.h @@ -47,7 +47,7 @@ typedef struct SDNA { short *typelens; /* type lengths */ int nr_structs; /* number of struct types */ - short **structs; /* sp= structs[a] is the adress of a struct definintion + short **structs; /* sp= structs[a] is the address of a struct definintion sp[0] is struct type number, sp[1] amount of members (sp[2], sp[3]), (sp[4], sp[5]), .. are the member diff --git a/source/blender/makesdna/DNA_world_types.h b/source/blender/makesdna/DNA_world_types.h index 66d31467c4a..42c80f4b8b5 100644 --- a/source/blender/makesdna/DNA_world_types.h +++ b/source/blender/makesdna/DNA_world_types.h @@ -52,11 +52,11 @@ typedef struct World { short colormodel, totex; short texact, mistype; - - /* TODO - hork, zenk and ambk are not used, should remove at some point (Campbell) */ - float horr, horg, horb, hork; - float zenr, zeng, zenb, zenk; - float ambr, ambg, ambb, ambk; + + float horr, horg, horb; + float zenr, zeng, zenb; + float ambr, ambg, ambb; + float pad2; unsigned int fastcol; diff --git a/source/blender/makesdna/intern/makesdna.c b/source/blender/makesdna/intern/makesdna.c index fc5307000e3..15c6bbd202c 100644 --- a/source/blender/makesdna/intern/makesdna.c +++ b/source/blender/makesdna/intern/makesdna.c @@ -138,11 +138,11 @@ int maxdata= 500000, maxnr= 50000; int nr_names=0; int nr_types=0; int nr_structs=0; -char **names, *namedata; /* at adress names[a] is string a */ -char **types, *typedata; /* at adress types[a] is string a */ +char **names, *namedata; /* at address names[a] is string a */ +char **types, *typedata; /* at address types[a] is string a */ short *typelens; /* at typelens[a] is de length of type a */ short *alphalens; /* contains sizes as they are calculated on the DEC Alpha (64 bits) */ -short **structs, *structdata; /* at sp= structs[a] is the first adress of a struct definition +short **structs, *structdata; /* at sp= structs[a] is the first address of a struct definition sp[0] is type number sp[1] is amount of elements sp[2] sp[3] is typenr, namenr (etc) */ diff --git a/source/blender/python/doc/epy/Geometry.py b/source/blender/python/doc/epy/Geometry.py index 717c147b215..f8752a135c3 100644 --- a/source/blender/python/doc/epy/Geometry.py +++ b/source/blender/python/doc/epy/Geometry.py @@ -90,7 +90,7 @@ def LineIntersect(vec1, vec2, vec3, vec4): def PolyFill(polylines): """ Takes a list of polylines and calculates triangles that would fill in the polylines. - Multiple lines can be used to make holes inside a polyline, or fill in 2 seperate lines at once. + Multiple lines can be used to make holes inside a polyline, or fill in 2 separate lines at once. @type polylines: List of lists containing vectors, each representing a closed polyline. @rtype: list @return: a list if tuples each a tuple of 3 ints representing a triangle indexing the points given. diff --git a/source/blender/python/generic/blf_api.c b/source/blender/python/generic/blf_api.c index db3ce06554e..9e4ce1f057d 100644 --- a/source/blender/python/generic/blf_api.c +++ b/source/blender/python/generic/blf_api.c @@ -153,7 +153,7 @@ static PyObject *py_blf_draw(PyObject *self, PyObject *args) static char py_blf_dimensions_doc[] = ".. function:: dimensions(fontid, text)\n" "\n" -" Return the width and hight of the text.\n" +" Return the width and height of the text.\n" "\n" " :arg fontid: The id of the typeface as returned by :func:`blf.load`, for default font use 0.\n" " :type fontid: int\n" diff --git a/source/blender/render/intern/raytrace/reorganize.h b/source/blender/render/intern/raytrace/reorganize.h index 92667d8de62..7ef7296945c 100644 --- a/source/blender/render/intern/raytrace/reorganize.h +++ b/source/blender/render/intern/raytrace/reorganize.h @@ -269,7 +269,7 @@ void pushdown(Node *parent) /* * BVH refit - * reajust nodes BB (useful if nodes childs where modified) + * readjust nodes BB (useful if nodes childs where modified) */ template<class Node> float bvh_refit(Node *node) @@ -295,7 +295,7 @@ float bvh_refit(Node *node) /* - * this finds the best way to packing a tree acording to a given test cost function + * this finds the best way to packing a tree according to a given test cost function * with the purpose to reduce the expected cost (eg.: number of BB tests). */ #include <vector> diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c index 4599f8ff17b..735258220cb 100644 --- a/source/blenderplayer/bad_level_call_stubs/stubs.c +++ b/source/blenderplayer/bad_level_call_stubs/stubs.c @@ -156,7 +156,7 @@ void object_test_constraints (struct Object *owner){} void ED_object_parent(struct Object *ob, struct Object *par, int type, const char *substr){} void ED_object_constraint_set_active(struct Object *ob, struct bConstraint *con){} void ED_node_composit_default(struct Scene *sce){} -void *ED_region_draw_cb_activate(struct ARegionType *art, void(*draw)(const struct bContext *, struct ARegion *, void *), void *custumdata, int type){return 0;} /* XXX this one looks wierd */ +void *ED_region_draw_cb_activate(struct ARegionType *art, void(*draw)(const struct bContext *, struct ARegion *, void *), void *custumdata, int type){return 0;} /* XXX this one looks weird */ void *ED_region_draw_cb_customdata(void *handle){return 0;} /* XXX This one looks wrong also */ void ED_region_draw_cb_exit(struct ARegionType *art, void *handle){} diff --git a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp index b7ed8666325..9cdee2a340c 100644 --- a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp +++ b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp @@ -660,7 +660,7 @@ int main(int argc, char** argv) system->getMainDisplayDimensions(fullScreenWidth, fullScreenHeight); // process first batch of events. If the user // drops a file on top off the blenderplayer icon, we - // recieve an event with the filename + // receive an event with the filename system->processEvents(0); diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp b/source/gameengine/Ketsji/KX_GameObject.cpp index ecfacb8f9bb..e44aac2699c 100644 --- a/source/gameengine/Ketsji/KX_GameObject.cpp +++ b/source/gameengine/Ketsji/KX_GameObject.cpp @@ -846,7 +846,7 @@ void KX_GameObject::AlignAxisToVect(const MT_Vector3& dir, int axis, float fac) { case 0: //x axis ori.setValue(orimat[0][2], orimat[1][2], orimat[2][2]); //pivot axis - if (MT_abs(vect.dot(ori)) > 1.0-3.0*MT_EPSILON) //is the vector paralell to the pivot? + if (MT_abs(vect.dot(ori)) > 1.0-3.0*MT_EPSILON) //is the vector parallel to the pivot? ori.setValue(orimat[0][1], orimat[1][1], orimat[2][1]); //change the pivot! if (fac == 1.0) { x = vect; diff --git a/source/gameengine/Network/NG_NetworkScene.cpp b/source/gameengine/Network/NG_NetworkScene.cpp index 355ebe5c475..976ce0d367e 100644 --- a/source/gameengine/Network/NG_NetworkScene.cpp +++ b/source/gameengine/Network/NG_NetworkScene.cpp @@ -187,7 +187,7 @@ vector<NG_NetworkMessage*> NG_NetworkScene::FindMessages( if (!notfound) notfound = (subject.IsEmpty() ? notfound : m_messagesBySubject[subject] == NULL); if (notfound) { - // it's definately NOT in the scene, so stop looking + // it's definitely NOT in the scene, so stop looking } else { // narrow phase // possibly it's there, but maybe not (false hit) if (to.IsEmpty()) { diff --git a/source/gameengine/PyDoc/VideoTexture.py b/source/gameengine/PyDoc/VideoTexture.py index 186d621557f..c74bd4f0f16 100644 --- a/source/gameengine/PyDoc/VideoTexture.py +++ b/source/gameengine/PyDoc/VideoTexture.py @@ -64,7 +64,7 @@ Example:: """ def getLastError(): """ - Returns the description of the last error that occured in a VideoTexture function. + Returns the description of the last error that occurred in a VideoTexture function. @rtype: string """ From fe4c55008ef40589fc30780c5b6eebd3bcc73822 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Tue, 20 Jul 2010 11:00:29 +0000 Subject: [PATCH 569/674] Fix #22921: error FBX exporting armature without animation data. --- release/scripts/io/export_fbx.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index 4911e1d5573..6469a59c8ff 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -2940,7 +2940,8 @@ Takes: {''') # end action loop. set original actions # do this after every loop incase actions effect eachother. for my_bone in ob_arms: - my_bone.blenObject.animation_data.action = my_bone.blenAction + if my_bone.blenObject.animation_data: + my_bone.blenObject.animation_data.action = my_bone.blenAction file.write('\n}') From b8ba541b90b3b287033703477490859feaf39e44 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Tue, 20 Jul 2010 11:06:26 +0000 Subject: [PATCH 570/674] Fix #22895: file browser now also filters .mts .m2v .m2t .avs as movies. --- source/blender/editors/space_file/filelist.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c index 70ef857699a..f31b8a4b05f 100644 --- a/source/blender/editors/space_file/filelist.c +++ b/source/blender/editors/space_file/filelist.c @@ -869,11 +869,15 @@ void filelist_setfiletypes(struct FileList* filelist, short has_quicktime) || BLI_testextensie(file->relname, ".movie") || BLI_testextensie(file->relname, ".mp4") || BLI_testextensie(file->relname, ".m4v") + || BLI_testextensie(file->relname, ".m2v") + || BLI_testextensie(file->relname, ".m2t") + || BLI_testextensie(file->relname, ".mts") || BLI_testextensie(file->relname, ".mv") + || BLI_testextensie(file->relname, ".avs") || BLI_testextensie(file->relname, ".wmv") || BLI_testextensie(file->relname, ".ogv") - || BLI_testextensie(file->relname, ".mpeg") || BLI_testextensie(file->relname, ".dv") + || BLI_testextensie(file->relname, ".mpeg") || BLI_testextensie(file->relname, ".mpg") || BLI_testextensie(file->relname, ".mpg2") || BLI_testextensie(file->relname, ".vob") @@ -929,7 +933,11 @@ void filelist_setfiletypes(struct FileList* filelist, short has_quicktime) || BLI_testextensie(file->relname, ".movie") || BLI_testextensie(file->relname, ".mp4") || BLI_testextensie(file->relname, ".m4v") + || BLI_testextensie(file->relname, ".m2v") + || BLI_testextensie(file->relname, ".m2t") + || BLI_testextensie(file->relname, ".mts") || BLI_testextensie(file->relname, ".mv") + || BLI_testextensie(file->relname, ".avs") || BLI_testextensie(file->relname, ".wmv") || BLI_testextensie(file->relname, ".ogv") || BLI_testextensie(file->relname, ".dv") From c547323f1c1aaa94d4b3a3159508138f58404608 Mon Sep 17 00:00:00 2001 From: Joshua Leung <aligorith@gmail.com> Date: Tue, 20 Jul 2010 11:17:47 +0000 Subject: [PATCH 571/674] Bugfix: The infamous "bone properties/constraints disappearing after renaming bones" bug This was simply caused by the lookup hash-table not being updated to be aware of the new name. Now the hashes are updated, so the name lookups (used for UI drawing among other things) works ok again after renaming bones. This closes (open) reports: 22882, 21801 and the closed/duplicate reports: 22067, 22670, 22384, 22665 --- source/blender/editors/armature/editarmature.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index b0c45616f1c..0cf6ce3656e 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -5479,8 +5479,17 @@ void ED_armature_bone_rename(bArmature *arm, char *oldnamep, char *newnamep) /* Rename the pose channel, if it exists */ if (ob->pose) { bPoseChannel *pchan = get_pose_channel(ob->pose, oldname); - if (pchan) + if (pchan) { BLI_strncpy(pchan->name, newname, MAXBONENAME); + + if (ob->pose->chanhash) { + GHash *gh = ob->pose->chanhash; + + /* remove the old hash entry, and replace with the new name */ + BLI_ghash_remove(gh, oldname, NULL, NULL); + BLI_ghash_insert(gh, pchan->name, pchan); + } + } } /* Update any object constraints to use the new bone name */ From d8792465e08313d7ca11ea6f821886330f499540 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Tue, 20 Jul 2010 11:18:29 +0000 Subject: [PATCH 572/674] Fix for python error in material panel. --- release/scripts/ui/properties_material.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/release/scripts/ui/properties_material.py b/release/scripts/ui/properties_material.py index 57488a57b89..8d379491983 100644 --- a/release/scripts/ui/properties_material.py +++ b/release/scripts/ui/properties_material.py @@ -118,7 +118,8 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel): if ob: split.template_ID(ob, "active_material", new="material.new") row = split.row() - row.prop(mat, "use_nodes", icon="NODETREE", text="") + if mat: + row.prop(mat, "use_nodes", icon="NODETREE", text="") if slot: row.prop(slot, "link", text="") From b618a335f5e7b5b3d291aa0cba8be232b79e9a4e Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Tue, 20 Jul 2010 11:32:30 +0000 Subject: [PATCH 573/674] * Made the default sculpt icons an internal part of the executable * Default icons can be selected from a menu * Option to make a custom icon from a file is present but the UI is disabled because of a mysterious crash * New startup.blend that has the appropriate icons selected --- release/scripts/ui/space_view3d_toolbar.py | 7 +- source/blender/blenkernel/BKE_brush.h | 2 +- source/blender/blenkernel/intern/brush.c | 153 +- source/blender/blenkernel/intern/icons.c | 7 + source/blender/blenloader/intern/readfile.c | 9 +- source/blender/editors/datafiles/blob.png.c | 341 + source/blender/editors/datafiles/clay.png.c | 356 + source/blender/editors/datafiles/crease.png.c | 276 + source/blender/editors/datafiles/draw.png.c | 361 + source/blender/editors/datafiles/fill.png.c | 534 + .../blender/editors/datafiles/flatten.png.c | 291 + source/blender/editors/datafiles/grab.png.c | 258 + .../blender/editors/datafiles/inflate.png.c | 283 + source/blender/editors/datafiles/layer.png.c | 350 + source/blender/editors/datafiles/nudge.png.c | 569 + source/blender/editors/datafiles/pinch.png.c | 315 + source/blender/editors/datafiles/scrape.png.c | 414 + source/blender/editors/datafiles/smooth.png.c | 520 + .../editors/datafiles/snake_hook.png.c | 310 + .../blender/editors/datafiles/startup.blend.c | 17223 ++++++++-------- source/blender/editors/datafiles/thumb.png.c | 291 + source/blender/editors/datafiles/twist.png.c | 347 + .../editors/interface/interface_icons.c | 11 +- .../blender/editors/render/render_preview.c | 14 + source/blender/makesdna/DNA_brush_types.h | 28 +- source/blender/makesrna/intern/rna_brush.c | 71 +- 26 files changed, 14657 insertions(+), 8684 deletions(-) create mode 100644 source/blender/editors/datafiles/blob.png.c create mode 100644 source/blender/editors/datafiles/clay.png.c create mode 100644 source/blender/editors/datafiles/crease.png.c create mode 100644 source/blender/editors/datafiles/draw.png.c create mode 100644 source/blender/editors/datafiles/fill.png.c create mode 100644 source/blender/editors/datafiles/flatten.png.c create mode 100644 source/blender/editors/datafiles/grab.png.c create mode 100644 source/blender/editors/datafiles/inflate.png.c create mode 100644 source/blender/editors/datafiles/layer.png.c create mode 100644 source/blender/editors/datafiles/nudge.png.c create mode 100644 source/blender/editors/datafiles/pinch.png.c create mode 100644 source/blender/editors/datafiles/scrape.png.c create mode 100644 source/blender/editors/datafiles/smooth.png.c create mode 100644 source/blender/editors/datafiles/snake_hook.png.c create mode 100644 source/blender/editors/datafiles/thumb.png.c create mode 100644 source/blender/editors/datafiles/twist.png.c diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index 51fe070d0c5..9bdfd3c5d15 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -1124,9 +1124,10 @@ class VIEW3D_PT_tools_brush_appearance(PaintPanel): col.label(text="Icon:") row = col.row(align=True) - row.template_ID(brush, "image_icon") - row = col.row(align=True) - row.prop(brush, "image_icon_path", text="") + row.prop(brush, "icon", text="") + + #row = col.row(align=True) + #row.prop(brush, "icon_filepath", text="") # ********** default tools for weightpaint **************** diff --git a/source/blender/blenkernel/BKE_brush.h b/source/blender/blenkernel/BKE_brush.h index a2168d2a888..75fdb719a62 100644 --- a/source/blender/blenkernel/BKE_brush.h +++ b/source/blender/blenkernel/BKE_brush.h @@ -45,7 +45,7 @@ void make_local_brush(struct Brush *brush); void free_brush(struct Brush *brush); /* image icon function */ -struct Image *get_brush_icon(struct Brush *brush); +struct ImBuf *get_brush_icon(struct Brush *brush); /* brush library operations used by different paint panels */ int brush_set_nr(struct Brush **current_brush, int nr, const char *name); diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index cea9ba32160..dcc96e65988 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -104,7 +104,7 @@ Brush *add_brush(const char *name) /* brush appearance */ - brush->image_icon= NULL; + brush->icon_imbuf= get_brush_icon(brush); brush->add_col[0]= 1.00; /* add mode color is light red */ brush->add_col[1]= 0.39; @@ -132,6 +132,8 @@ Brush *copy_brush(Brush *brush) if(brush->mtex.tex) id_us_plus((ID*)brush->mtex.tex); + IMB_refImBuf(brushn->icon_imbuf); + brushn->curve= curvemapping_copy(brush->curve); /* enable fake user by default */ @@ -146,7 +148,13 @@ Brush *copy_brush(Brush *brush) /* not brush itself */ void free_brush(Brush *brush) { - if(brush->mtex.tex) brush->mtex.tex->id.us--; + if (brush->mtex.tex) + brush->mtex.tex->id.us--; + + if (brush->icon==BRUSH_ICON_FILE && brush->icon_imbuf) + IMB_freeImBuf(brush->icon_imbuf); + + BKE_previewimg_free(&(brush->preview)); curvemapping_free(brush->curve); } @@ -176,7 +184,7 @@ void make_local_brush(Brush *brush) if(scene->id.lib) lib= 1; else local= 1; } - + if(local && lib==0) { brush->id.lib= 0; brush->id.flag= LIB_LOCAL; @@ -204,34 +212,137 @@ void make_local_brush(Brush *brush) } /* image icon function */ -Image* get_brush_icon(Brush *brush) +ImBuf* get_brush_icon(Brush *brush) { + extern char datatoc_blob_png; + extern char datatoc_clay_png; + extern char datatoc_crease_png; + extern char datatoc_draw_png; + extern char datatoc_fill_png; + extern char datatoc_flatten_png; + extern char datatoc_grab_png; + extern char datatoc_inflate_png; + extern char datatoc_layer_png; + extern char datatoc_nudge_png; + extern char datatoc_pinch_png; + extern char datatoc_scrape_png; + extern char datatoc_smooth_png; + extern char datatoc_snake_hook_png; + extern char datatoc_thumb_png; + extern char datatoc_twist_png; - if (!(brush->image_icon) && brush->image_icon_path[0]) { - // first use the path directly to try and load the file - brush->image_icon= BKE_add_image_file(brush->image_icon_path, 1); + extern int datatoc_blob_png_size; + extern int datatoc_clay_png_size; + extern int datatoc_crease_png_size; + extern int datatoc_draw_png_size; + extern int datatoc_fill_png_size; + extern int datatoc_flatten_png_size; + extern int datatoc_grab_png_size; + extern int datatoc_inflate_png_size; + extern int datatoc_layer_png_size; + extern int datatoc_nudge_png_size; + extern int datatoc_pinch_png_size; + extern int datatoc_scrape_png_size; + extern int datatoc_smooth_png_size; + extern int datatoc_snake_hook_png_size; + extern int datatoc_thumb_png_size; + extern int datatoc_twist_png_size; - // otherwise lets try to find it in other directories - if (!(brush->image_icon)) { - char path[240]; - char *folder; - - folder= BLI_get_folder(BLENDER_DATAFILES, "brushicons"); + void *icon_data[]= { + 0, + &datatoc_blob_png, + &datatoc_clay_png, + &datatoc_crease_png, + &datatoc_draw_png, + &datatoc_fill_png, + &datatoc_flatten_png, + &datatoc_grab_png, + &datatoc_inflate_png, + &datatoc_layer_png, + &datatoc_nudge_png, + &datatoc_pinch_png, + &datatoc_scrape_png, + &datatoc_smooth_png, + &datatoc_snake_hook_png, + &datatoc_thumb_png, + &datatoc_twist_png, + }; - path[0] = 0; + size_t icon_size[]= { + 0, + datatoc_blob_png_size, + datatoc_clay_png_size, + datatoc_crease_png_size, + datatoc_draw_png_size, + datatoc_fill_png_size, + datatoc_flatten_png_size, + datatoc_grab_png_size, + datatoc_inflate_png_size, + datatoc_layer_png_size, + datatoc_nudge_png_size, + datatoc_pinch_png_size, + datatoc_scrape_png_size, + datatoc_smooth_png_size, + datatoc_snake_hook_png_size, + datatoc_thumb_png_size, + datatoc_twist_png_size, + }; - BLI_make_file_string(G.sce, path, folder, brush->image_icon_path); + static ImBuf *icon_imbuf[BRUSH_ICON_COUNT]= { 0 }; - if (path[0]) - brush->image_icon= BKE_add_image_file(path, 1); + static const int flags = IB_rect|IB_multilayer|IB_metadata; + + static const int default_icon = BRUSH_ICON_DRAW; + + char path[240]; + char *folder; + + if (!(brush->icon_imbuf)) { + if (brush->icon==BRUSH_ICON_FILE) { + + if (brush->icon_filepath[0]) { + // first use the path directly to try and load the file + + BLI_strncpy(path, brush->icon_filepath, sizeof(brush->icon_filepath)); + BLI_path_abs(path, G.sce); + + brush->icon_imbuf= IMB_loadiffname(path, flags); + + // otherwise lets try to find it in other directories + if (!(brush->icon_imbuf)) { + folder= BLI_get_folder(BLENDER_DATAFILES, "brushicons"); + + path[0]= 0; + + BLI_make_file_string(G.sce, path, folder, brush->icon_filepath); + + if (path[0]) + brush->icon_imbuf= IMB_loadiffname(path, flags); + } + } + + // if all else fails use a default image + if (!(brush->icon_imbuf)) { + if (!icon_imbuf[default_icon]) + icon_imbuf[default_icon]= IMB_ibImageFromMemory(icon_data[default_icon], icon_size[default_icon], flags); + + brush->icon_imbuf= icon_imbuf[default_icon]; + } + } + else { + if (!icon_imbuf[brush->icon]) + icon_imbuf[brush->icon]= IMB_ibImageFromMemory(icon_data[brush->icon], icon_size[brush->icon], flags); + + brush->icon_imbuf= icon_imbuf[brush->icon]; } - // remove user count so image isn't saved on exit - if (brush->image_icon) - id_us_min((ID*)(brush->image_icon)); + BKE_icon_changed(BKE_icon_getid(&(brush->id))); } - return brush->image_icon; + if (!(brush->icon_imbuf)) + printf("get_brush_icon: unable to resolve brush icon imbuf\n"); + + return brush->icon_imbuf; } /* Library Operations */ diff --git a/source/blender/blenkernel/intern/icons.c b/source/blender/blenkernel/intern/icons.c index ad2c857be75..c1e00e091e8 100644 --- a/source/blender/blenkernel/intern/icons.c +++ b/source/blender/blenkernel/intern/icons.c @@ -177,6 +177,9 @@ void BKE_previewimg_free_id(ID *id) } else if (GS(id->name) == ID_IM) { Image *img = (Image*)id; BKE_previewimg_free(&img->preview); + } else if (GS(id->name) == ID_BR) { + Brush *br = (Brush*)br; + BKE_previewimg_free(&br->preview); } } @@ -204,6 +207,10 @@ PreviewImage* BKE_previewimg_get(ID *id) Image *img = (Image*)id; if (!img->preview) img->preview = BKE_previewimg_create(); prv_img = img->preview; + } else if (GS(id->name) == ID_BR) { + Brush *br = (Brush*)id; + if (!br->preview) br->preview = BKE_previewimg_create(); + prv_img = br->preview; } return prv_img; diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index d3bf136c529..06a0eb32a92 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -1541,9 +1541,8 @@ static void lib_link_brush(FileData *fd, Main *main) brush->mtex.tex= newlibadr_us(fd, brush->id.lib, brush->mtex.tex); brush->clone.image= newlibadr_us(fd, brush->id.lib, brush->clone.image); - // Image icons not saved if only used as an icon, - // but if it used elsewhere in the file it will have been saved - brush->image_icon= newlibadr_us(fd, brush->id.lib, brush->image_icon); + brush->preview=0; + brush->icon_imbuf=0; } } } @@ -10984,10 +10983,6 @@ static void do_versions(FileData *fd, Library *lib, Main *main) for (brush= main->brush.first; brush; brush= brush->id.next) { /* Sanity Check */ - // brush icon loaded but not the path - //if (brush->image_icon && !(brush->image_icon_path[0])) - // BLI_strncpy(brush->image_icon_path, brush->image_icon->name, sizeof(brush->image_icon_path)); - // infinite number of dabs if (brush->spacing == 0) brush->spacing = 10; diff --git a/source/blender/editors/datafiles/blob.png.c b/source/blender/editors/datafiles/blob.png.c new file mode 100644 index 00000000000..16dc958f7d3 --- /dev/null +++ b/source/blender/editors/datafiles/blob.png.c @@ -0,0 +1,341 @@ +/* DataToC output of file <blob_png> */ + +int datatoc_blob_png_size= 10703; +char datatoc_blob_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, + 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, 11,252, + 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, + 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, 20, 5, 32, 44,179,189, 3,155, 0, 0, 32, 0, + 73, 68, 65, 84,120,218,237,125,121,152,101, 87, 85,239, 90,251,156,123,111,221,174,121,234,185,134,158,170,186,186,122,202, 64, + 63, 50,116, 39,129, 4, 18,201,128, 33, 6, 8,248, 16,240, 1, 65, 1,101,242,227,201,167, 79, 68, 69,248,228, 41, 40, 2, 15, + 21,103,209, 39, 2, 79,145, 48, 42, 36, 16, 50, 66, 72, 39,157, 30,211,115,117,141,119, 58,227,222,123,173,247,199,222,251,156, +115, 43, 33, 9,208, 74,252,244, 38, 95,213,173, 91,183,206, 93,103,237,181,215,240, 91,191,181, 27,247,237,219, 7, 79,251,120, + 38,111,242,179,103,247, 62,248, 93,153,202, 32,104,213, 22, 23, 78,157, 56,250,139,111,125, 71,246, 43, 97,190,125,243,238,123, +101, 42,147, 36, 73,226, 68, 42,229,151, 58, 74, 37,127,249,155,130, 48,104,181, 90,173, 86, 51, 8, 90, 97, 16,164, 82,126,229, +107, 95,255,212,167, 62,213,246,166,250,210, 98,189,182,212,168,213,162, 40,138,194,232,210,203,175,148, 82,161,231,191,255,183, +223, 7, 0,130,136,238,125,224,193,102,179,217,168,215, 17,113,114,235,182,177, 13, 27, 14, 30,120,184, 86, 91,106,212,235, 97, + 24, 90,193, 17,189,109,219,119,106, 77,243,179,103,231,231,102, 23,230,231, 15,236,127,104, 98,106,251,204,217, 51, 39, 79, 60, +254, 59, 31,248,109, 31, 0, 52, 49, 49, 48, 83,111,223,224, 3,247,223,179, 48,119,110,239, 85,215, 28, 61,124,112,106,122,251, +202, 85,171,146, 40,242, 1,128,180,102,210, 90, 19, 3,239,216,185, 59,149,169,146,114, 98,235,212, 61,223,186,107,221,200, 40, + 32, 8, 0, 32,173,180, 38, 34,173,149,210, 90, 51, 49, 17, 53,234,245,141,155, 39, 6, 7, 7,153,193, 7, 0,169, 20, 51,107, +173, 73,107,165,149,121,104,173,181,150, 7, 31,123,172, 84,242,241, 25,173,221, 51,121,160,249,246,233,207,124,118,253,200, 88, + 20, 69,205,122,109, 97,126,246, 85,175,122, 85,241, 77, 86,227,107,214,174, 79,146, 36, 78,146, 84, 74,165,233,189,191,254,107, +203,175,244,133, 59,238,240, 75, 29, 74,202, 40,142, 90,205,102,173,182,116,209,197,123,154,141,218, 13,215,191, 40, 77, 83,123, +165, 90,173, 86,175, 45,213,235,245,102,189,158, 36, 49, 48,104, 98,165,249, 15, 63,250, 81,115, 37,239,158,251, 30, 56,115,250, +100,146,166, 97, 24,110,223,181,187,179,171, 59, 14, 3,225,121,245,250,210,210,226,226,250,213,131, 15,124,231,123,190,240,252, +237,187, 46, 34,210, 74,233,249,185,185, 32,104,213,106,181,174,238,158,217,153,153,153,179,167, 43,149,142, 74,165,236, 51, 19, + 17,144, 38,102, 62,244,216,163, 81, 20, 30, 63,122,100,237,250, 17,207, 19, 8,188,243,194, 61,239, 25,223,136,119,223,247, 0, +105, 98, 38,173, 73, 74, 41,165,212, 74, 74, 41,147, 56, 78,146, 36, 12, 91,205,122, 77,144, 54,235,161,181,214, 68,196, 68, 90, +107,173, 52, 17,109,158,152, 96,102, 0,240,149, 82,164, 89,147, 38, 34,183,110, 74,107,165,181,126,116,255,126,173, 53, 17,195, +249, 90, 59,255,137, 47,121,158,119,247,183,239,149, 90,203, 52, 77,211, 36,142,162, 48,104,221,254,134, 55, 44, 46, 45, 61,211, + 11,253,249, 95,252,213,214,169,109, 12,168, 73,107, 77,154,152, 8,136, 1,208,251,224,255,254,221,160,213,168, 45,206,253,242, +175,188,231, 73, 47, 36,178,103, 95,249,234, 87,199,198,199,227, 56,142,162, 48, 12,195, 40, 50,223,131, 40,138,226, 36, 78, 82, +153, 74,133, 94,249, 93,239,124,235,211, 72,212,108,182,252, 82,138,136, 68,172, 73, 43,169,164,148, 82,166,105,146, 36, 73,156, +166,233,115, 47,187, 2, 17,211, 52,185,242,154,235,131, 86,163,182,180,248,241,143,253,225,221,223,190,215, 42,100,108,108,236, +248,241,227,223,190,247,190, 51,167, 78, 26,175, 19,197, 81, 28,134,105,154,148, 74,165, 45, 19, 19, 61, 61, 61,149, 74, 5,129, +122,250, 6,162, 48,136,172,196, 97, 20, 69, 99, 99, 99, 27, 71, 86, 61,240,157,239, 1,128, 55, 50, 50,242,247,255,240, 57,225, +121, 67, 43,215, 0,112,173,182,148, 38,169,214,106,124,108,172,127,104, 40, 77,146, 48, 12,195, 32, 8,130, 96,255, 67, 15, 86, + 58,170,173, 86,171,217,104, 52, 27,245, 90,173,182,184, 48, 55,119,238,116, 87, 87,207,233, 51,103,125, 0, 64, 33,136, 1,152, +251, 7,134,250, 7, 6,137, 8,128, 15, 29,120,164, 84,238,208,164,147, 56,105, 53, 27,181,165, 69, 34,189,106,245,154, 83, 39, + 30,127,252,232,225,161,225,225, 99,135, 31,155, 61,115,116,223,213, 55, 92,186,175,116,211,141, 55, 8, 0,208,100,254,179,246, + 72, 68, 90,211,248,198,137,117, 35, 99, 90,169,199, 30,125,248,224,163,251, 75,165,210,202,213,107,238,189,251,174,147, 39,142, + 63,255,133,215,169, 52, 78,162,230, 79,190,252,181,221, 61,253,194,243, 75,149,170, 15, 0, 90, 19,176,125, 16, 49, 51, 49,179, +185,236,186,245, 35,171,215,172, 35,178, 70, 77,164,131, 32,248,252,231,254, 97,114,106,122,203,182,221,125, 3,195,179, 51,167, + 1, 0, 17,125, 0,208, 74, 51, 51, 3, 48,105, 0, 48,130,217, 75,146,217, 58,102,203,106, 38,242,125,255,130,139,247,144,166, +137,173,219, 14, 62,186,191,187,187,219,188,193, 72,164,184,240, 32, 34, 50,206,146,136,137, 53,105,119,191,218,110, 68,173,181, +214,113, 28,165, 73,172, 59, 59,181, 86, 90,211,249,243,147,231,229, 49, 58, 58, 42,206,215,181,158,100,247,191,247, 55,126,243, +234,107, 94,160,148, 74,211, 52, 73,226, 40, 12,230,207,205,188,238, 13,183, 63,163, 8,144, 61,238,123,224, 59, 0,168,180, 86, + 74,165, 73,146, 36, 73, 18, 69, 81,212,106,212,235,175,127,195, 27,158,233,173,221,115,223, 3,196,160, 52,217,245, 33, 34, 34, + 2, 34, 70,225,121,191,243,129,247, 63,133, 68,249,133,238,188,235,155,154, 88,187, 40, 40,165, 84, 74, 90,175, 74, 74, 19, 49, +224,187,223,245,206,167,215,145,210,196, 32, 25,128,136,204, 85,164, 76,165, 76,149, 84, 50, 85, 74, 41, 34,242,203, 21, 33, 4, + 17,125,223, 11, 93,118,217,165,105,154, 8,161, 25,152, 52, 41,173,149, 76,165,148,105,154, 38, 73, 98, 46, 55, 48, 56,116,217, +190,171,246, 93,117, 77,171,217, 56,123,250,196,235,223,240,198, 39,185,181,125,123,247,198,113,156, 36,113, 18, 39, 73, 18,167, + 73,108, 20,109,191,199, 49, 51,239,188,224, 34, 20, 2, 0, 81,120,221,189, 3, 31,250,189,223,123,146, 11, 37,105,146,196,113, + 28, 69,113, 28,197,113, 28,199,113, 18,199, 74, 74, 64,102, 38, 20,226,185,151,237, 85, 82,165,105, 42,149,210, 90, 17,145,240, +188,119,189,243,109,109,183,118,235,173,183, 94,121,197,149,245,102, 75, 8,143, 25,136, 72,147, 46,149,202, 19, 91, 38, 24,184, +213,108, 46,206,207, 18,113,154, 38,105,154, 36,113,146,196,137,185,160,240,114, 21,251,247,220,119, 31,162,199, 12,139, 15, 63, +164, 64, 51, 3,145, 22,194,219,188,121,179,240,252, 52, 77,153, 1, 61,255,193,123,191,181,113,203,214, 84,166,137, 17, 56, 54, +178, 39,249,173,121, 94, 9, 81, 8,207,155,222,121,129,231,121,198,237,120,158, 72, 83, 25,199,113, 20, 69, 81, 20, 38, 73,162, +180,126,244,225,239,134,173,150,113,188, 97, 16, 4,173, 86,208,106,124,240, 3,239,115, 58, 66, 1,136,198,129, 76, 78, 77, 79, +239,216,181, 99,247,238,238,174, 21,205,102,163,217,108,180,154,205, 32,104,133,173, 32, 12,130, 83, 39,143, 19,115, 20, 4,205, +102,189, 81,175,215,235,181,197,185,153, 82,185,227, 55,127,253, 87,152, 57,191, 73,102, 98, 6, 19,237,123,250, 6,103,206,158, + 69, 33,100,154,134, 97,208,168,215, 23, 22,230,111,121,249,127,159,159,155, 61,117,252, 8, 3, 70, 81, 56,127,238,140, 38, 22, +158, 95,174,172,184,234,138,203,125,243,199,204, 12,204, 0,246,121,165, 99, 69,189,182, 40,149, 86, 82, 70, 97, 80, 91, 90,106, + 52,106,243,115,115, 75,139, 11,173, 86,176,239,121, 47, 56,118,228, 80,185, 82, 90,183,110, 4, 1,132,231,251,165,178,176,110, +218,250,105,235,114,153,105,251,206, 11,183,239,220, 29, 71,225,252,220,108, 24,182,174,185,246,250, 99, 71, 14, 29, 57,244,216, +141, 55,223,218,168, 45, 62,246,232, 35, 19,147,219,202,149, 14, 6, 64, 33, 80,120,120,207,253,223,209, 68, 0, 12,204, 90, 3, +179, 54, 66,185,192,162,181,210,196, 68,154,152,116, 87,119,119, 16, 69,103, 78,158,240, 4,158, 56,126,108,116,108,163, 73, 51, +246,239,127, 88, 16, 49, 48,177,102,173, 25, 64,155, 59, 37, 34, 48,210, 49,160, 91, 10, 34,170,213,106,247,223,125,215,221,119, +126,173,167,111,224,202,171,127, 34, 8, 90, 0, 12, 8, 0, 40,108,224, 1, 27,139,200,197, 35, 34, 50, 47,104,210,144,197, 40, +173,167,182,239,188,250,218, 27,207,158, 62, 89,237,168,156, 60,126,204,168, 23, 0,124,235,115, 24,204,154,217,191, 39, 2, 32, + 38,178, 41, 31, 19, 17, 91,247, 68, 68, 76,125,253,131,251, 31,126, 40, 12, 90, 86,191,192,249,133, 24, 40, 87,187,141,143,196, + 76, 70, 78,102,237, 94, 51,177, 74, 15,173, 92,181,227,130,231,200, 52, 37, 98,224, 92, 34,123, 9, 98,119, 65, 27,212,178, 16, + 87,124,104, 34,154, 61,123, 86,166, 41,217,143, 57,127, 57,228,121,121,140,140,140, 8,120, 54, 61,108, 46,242,204, 31,151, 92, +122,233, 45,183,220, 50, 49,185,181,187,171, 91,147, 86, 82,134, 97,112,248,208,193,187,238,186,235, 51,159,249,236,249,145,105, +223,190,125, 95,255,250,215,159,226, 29,183,189,226,149,111,249,197,183, 2, 8,132,220,220, 93, 98,163,148, 52,129,207,228,190, +113,154, 38, 39,143, 31,255,213, 95,123,207, 15,157,137, 60,149,134,238,248,210,151, 6, 7,135, 25,133,177,121,118,201, 33,105, +107,182, 68,204, 0, 12,192,108, 34,148,239,121,180,118,253,200,239,127,248, 67, 81,216,250,165,119,189,251, 73,195,232, 83, 63, +158,220,134, 46,185,228,146,111,125,251,190,190,254, 65, 98,176,229,151,210, 42,251, 95, 43,165,148,150, 74,107,173,204, 75, 54, + 17,182, 91, 5, 16,133, 87,122,207,175,253,202, 43, 94,118,203,121, 16,232,218,107,175,125,223,251, 63,160,181, 86,210,132,126, +251,200, 18, 10,243, 99,170,210, 84, 74,165,148, 84, 74,154, 4,195,200,166,205,118, 38, 0,220,176,113,243,235, 94,243,211, 63, +106,206,247,214,183,189, 93, 41, 77, 4,136,152, 5, 20,155,109, 59,255, 97,234, 56,173,109, 37,154, 21,166,202,100, 44, 74, 51, + 96,111,223,192,158, 75,166, 60, 33,110,184,249,165, 71,142, 28,254,230,157,119,125,230,179,159, 53, 53,251, 15, 32,208, 91,222, +242,230, 52, 77, 60, 77, 40,132, 19, 40,147,201,120,220, 98, 21,173,181,210, 74, 43,210, 90, 74,169,148, 50,161,166,163, 90,189, +120,207,115,129,153,136,149, 86,194, 47, 79, 77,239,220,180,121,242,165, 47,191, 45,142,163, 48,104,125,252,163, 31,189,247,254, + 7,158,145, 64,157, 43, 86,196, 81, 44,124, 37, 80, 32, 34,219, 32,158,151, 57,148, 85, 37,218,213, 19, 90,105,169,165,150, 90, + 41, 20, 98,116,108,124,253,250, 81,115, 3, 90,155,253,104,238,132,153, 17, 81,120, 94,233,103, 94,253,154,151,188,228, 37,239, +121,239,123,195, 48,122, 26,129, 70,199, 70,146, 36, 22,202, 67, 20, 8,104,211, 19, 96, 38, 87,114, 17,153, 28, 72,120,158, 95, + 42,245,246,246, 34, 98, 18,199,113, 20, 74,169,250, 6, 6, 7,135,134,164,146, 38, 48,104,210, 90, 41,169,148, 86, 50, 77, 83, +169, 82, 41,149,210,154,152, 81,136,183,253,194, 91, 62,248,187,191, 23,180,203,228,155,232,120,215,183,190,229,123, 37, 20, 98, +246,220,153,249,185, 57,212, 2,193, 36, 75, 0, 0, 38,191,101,102, 64, 40,149, 74, 93, 93,221, 35,163, 99,136, 72, 68, 38, 13, + 47,149,202,190, 95,138,162, 96, 97,110,230,236,201, 99, 19,211,187,164,148,217,130,106,165,165, 76,149, 43,213,211, 52, 77, 83, +187, 77, 94,241,178,159,250,248, 31,255,217,114,129,238,189,255, 65, 0, 48,250, 88,181,102,164,111, 96,248,232,161,131, 54,123, + 32, 27,114,141,220, 66,136,145, 13,235, 43, 29, 43,180,182,144,141,245,137, 50,149, 74,106,173, 25, 48,145,234,158,111,254,235, +196,182,157, 89,137,104,182,159,148,105,150,173,199,113, 20,133, 81, 20,134,113, 28,110,217,178,233,208,161, 35,109, 75, 38,132, +103,238, 30, 0,145,185, 82,238,216, 58,189, 19, 17,136, 88,201,180,213,106, 45, 46, 46, 68, 81,200,196, 3,253, 61,105,154,106, + 6, 68, 97, 64, 59,173,204, 98, 88,140, 34,138,162, 36, 73, 90,173,224,238,175,127,117,122,247, 69, 0,160,164,115, 10, 86, 59, + 73,154, 38, 81, 24, 69, 65,171,217, 88,170, 45,156,251,249, 55,190, 49, 73,162,143,124,228, 99,143,159, 56,233,108, 8, 49, 79, + 65,129,209,196, 8, 70, 0,242,124,175,167,183,175,167,183,151,153,128,197,210,194, 76,189, 86,243, 74, 37,129,130, 1, 92,248, + 80, 6, 17, 74,226, 56,138,162, 32,104, 53,234,245, 23,221,244,146,114,165,210,172, 47, 45, 44,204, 55, 27, 13,153,166, 82,201, + 52, 73,156,122,130,160, 81,171, 45,158,187,242, 5, 55,248,165, 18, 51,223,126,251,235,211, 56,252,195,255,243, 73, 31,242,125, + 4,128, 12, 12, 4,204,128, 8,198,124, 17,192,102, 53,128,212, 63,180,250,236,153, 7, 24, 0,133, 7,128,196,164, 85,142,226, +196, 81, 20,134, 65,216,106,221,112,243,173,158,239, 7,173,102, 20, 39, 82,170, 52,137, 70, 70,199, 55,108,158,104,212,107,179, +231,206,126,251,206,175,205,205, 28, 87, 82,191,240,198,151,122,158, 64,244, 76, 34, 76,204, 47,188,230,106,223, 74, 3,192,230, + 19, 0,208, 36,157,192,204,192, 8,192, 86, 70, 96,214,160, 38,182,237,100,166,135, 30,188, 47, 12, 67, 35,141, 93,136, 36, 73, +147, 36,137,163, 29, 23, 94,188, 48, 63, 79,164,147, 36, 9,195,160,190,180, 52, 55, 59,179,115,247, 5, 75, 75,139,243,179,179, +243,115,115, 94,169,242,147, 47,123,141, 82,202,134, 27,173, 16,133, 16,158,239,149,132,231,249, 0, 96, 98, 56, 2, 24,172,135, +192, 73,228,212, 5, 96,226, 42,216,138,130,121,122,231, 5, 76,100,130,153, 19,219,216, 61, 3,176,214,252,232,254,135,102,207, +205,148, 74,254,139,111,121,185,148, 42,104, 53,151, 22, 23, 22,230,103,119,236,220,181,101, 98,178, 86, 91, 18,136, 44, 16,136, + 1, 17, 16, 1, 16, 5,218,124,200, 21, 10,204,132,104, 4, 0, 34, 70, 96,178,122, 98, 0, 96,114, 90,115,181, 14,123, 2,177, +228,219, 31, 29, 50,196,140,136,188,117,122,199,228,212,116, 71,117,197,193, 3,143,104, 77, 97, 24,212,107, 75, 39,143, 29,157, +156,218,118,232,177, 71,247, 92,114,121,146, 36, 71, 15, 29, 0, 20,246, 3,208,228,249,104,151,140,180, 9, 93,198,110,136, 1, + 51, 49, 17,205,199, 0, 34, 16, 59, 37, 2, 16, 0, 48, 24,247, 13,108,222,158, 99, 86, 76, 68, 0, 65,171, 89, 93,209,105,182, +226,170,213,107,135,134, 87,239,127,232,161,131, 7, 30, 30,221,176,169,182,180,116,236,216,209,141,155,182,152,213, 0, 46,108, +123,147,115,153,245, 96, 64,102, 70,100, 34,155,234,184,204,221, 85, 38, 0, 78, 37,196, 54, 79, 98, 6, 42, 66,104, 70, 70,151, + 49, 17, 34,118,247,244,104, 34,102,238,238,217,112,201,229,251,226, 36, 81, 82,118,118,118, 57, 47, 7,153,171,203, 5, 98, 70, +155,108,229,142,208,106,204,252,224, 22,202,138, 78,238, 57,185, 42,131,243, 50, 42,147, 46,255,207,104, 46, 85,234,232,145,195, +165, 82,233,228,241, 99,157, 93, 93, 92, 72,245,204,223, 57,129,204,173,187,250,213,236,245,204, 35,100,242,219, 74, 5,236,178, + 0,184,207, 4, 91, 48, 1, 19, 1,176, 45,150,220,218,185, 32,152, 71, 67,166, 93, 23,237, 57,240,240, 67,218,150, 89, 46, 32, + 0,251,136,248,181,175,126,217,238, 31, 52, 18,184, 37, 53, 47, 49, 23, 94,179, 91,137, 51,111,145,189,194,252,125,158, 21,181, +110,205,130,153,249,254,251,137, 25,216,201,169, 53, 49, 47, 46, 46, 61,203,240, 70, 83,155, 61,123,132,217,183,111,159, 77, 11, +159, 61,143,103, 87,229,250,108, 20,232, 7, 40,165,203,229,242,207,253,220,207, 95,188,231, 57,107, 87,175, 65,129, 74, 41,153, +166,103,206,156,121,236,192,129,191,253,187,191,125,252,241,227,255,126, 2,109,221,186,245,143,254,248,147,194,247,129,193,246, + 46,180, 70,100,225,149, 86,175, 89, 59, 52, 60,124,241,115,246, 40,149,126,242, 79,254,228,139, 95,250,242,143, 90,219,143,142, +142,158, 56,113,226, 41,222,113,239,253, 15, 48, 34, 50,146,173,163, 45, 38,158,117, 8,109, 53,153, 38, 73, 28,167,105,252,214, +183,189,189,217,108,253,208,187,204,235,237,237,173,215,235, 79,250,235, 29, 59,118,124,254, 11, 95, 68, 33, 0, 69,150,196, 21, +235,198, 12, 39,179, 79,129,153,248,170, 43,175, 40,151,253, 3, 7, 14,254, 16, 2,141,141,141,125, 95,163,222, 58, 53,245,199, +127,250,103, 38, 37,128, 44,102,114, 17,242,115,226, 89,104,135, 1, 16, 4, 10,225,239,219,119,197, 43, 94,118,235,249,220,101, +221,221,221,159,252,211, 63, 7, 7, 93,114,174,143,182,160,100, 51, 20, 7,190,130, 73, 49, 17,133, 16,219,119,238,184,112,247, +206,243, 38,208, 63,223,241, 69, 68, 65, 46,147,205,214,196,228,156, 89,153,175, 11,112, 33, 3, 80, 30,133, 81, 8,255,198,235, + 95,228,251,254,121, 16,232,246,219,111, 7,192, 54, 88,193,213,206,217, 22, 51, 37,151,107,246,101,101,127,182,178,192,204, 32, +188, 55,190,238,213,231, 97,219,191,236,182, 87, 48,128, 38, 66, 64, 83,182, 22, 87,202, 8,104,165,211,182, 21,229, 32, 85,157, +193,180, 70, 79,213, 21,157,213,106, 71, 20,197, 63,188,134, 38, 39, 39, 13,198, 99, 97, 5, 91,160,103,157, 74, 85,160, 16,232, + 28,110,104,123,162,153, 24, 17, 61,223,171,116, 84,175,220,123,201, 15,164,161,229,219,254,163, 31,251,104, 71,181,154, 43,166, +176,173,141,120, 6, 68,208, 74,107, 42, 8,225,228, 51, 96,145,113, 7,155, 38,182,110,223,177,235,210,203,175,120,254,243,159, + 55, 53, 53,213,106, 53,103,102,102,158,118,219, 47, 95,178,142,142, 14,173, 52,123,128, 68,166,243,104, 76,194,180,137,237,215, +130,111,212, 90, 81, 81, 97, 90, 19, 3, 0, 94,252,220,203,170,213,170, 41,254,215,172, 91, 63, 52,188,242,226,231,236, 73,162, +240, 35, 31,249,131,111,220,121,215, 15,176,100,172,217, 66,136,166, 74,214, 5, 32, 81,103,125, 71, 91, 65,107,173, 72,147, 42, +188, 98,234,187,221, 23, 61,167,171,179, 27, 81,160,240,236, 87,225, 9,207, 19,190,255,154,215,254,236,135, 63,244,187,207, 84, + 32,207,243, 28,164,105,122,157, 74, 41, 37, 93,199, 83,101, 48,162,118, 79,148, 69,127,204, 43, 68,132,136,189,125,253, 61, 61, + 61, 46, 27,206,202, 76, 3,139, 11,207, 47,149, 43, 29, 31,248,237,223,122, 70, 2, 33,162,145,197,162,207,230, 73,222,132,205, +162, 87,206, 80,202,168, 49, 90,217, 6,254,244,206, 93,198,101,230, 91,145, 51, 80,199,124,138,240, 75,229, 95,125,247,187,158, +126,219,155, 11, 51,160,231, 49,146,200,202, 55,199, 16, 96,118, 72, 30, 48, 35,128, 16,130,129,209, 60,132,240, 16,215,143,140, +145, 38, 3,112,233,162,119,176,110, 44, 19, 11,253, 82,101,237,154,213,103,206,206, 60,149, 64,215, 93,119,157, 82,202, 99, 36, +178, 31, 99,202,177, 2,109,193,150,202,194,247,153,185,179,179,171, 90,237, 80, 74, 38, 81, 24, 69, 49, 49,172, 94,187,150, 44, +101,200, 57, 9,165,200,128,181,110, 59, 24,183, 14, 0, 47,187,229,230, 15,126,248, 35, 79, 46, 80, 87, 87,215,231,191,240,133, + 74,185,227,209, 71,190,103, 96, 43,151,107,163,171, 15,109, 80,243, 60,207,243,253,254,190,254,149,171, 87, 41,105,178,180,212, +243, 60, 20, 34, 12, 90, 11,115,231,250, 6,134, 13,249,204,110, 67,165,164,227,161, 21, 54, 35, 17,179,120,178,192, 34, 0,224, +166, 23,191,248,203, 95,253, 90,185,220, 33, 60, 31, 1,180,214,228,254, 86, 74,149, 19,219,180, 2, 4, 33,196,248,248,248,202, + 85, 43, 77, 59, 1, 80, 0, 10,131,167, 8,175,116,246,244,169, 70,163,166,148,212, 22, 77,183, 20, 45,173,149, 86, 82,201, 76, + 38, 43,224,134,209,245,203, 5,122,245,171, 95,253,174,255,249,203, 66,120,158,231, 33, 98, 71, 71, 21, 0, 52,232, 28,137,214, +118,239, 3, 51, 48,172, 93,183,182, 84, 42, 49, 96,193, 48, 52,185, 58,151, 0, 14, 31,216,111,208, 68, 37,149, 76, 29,214,105, + 48, 78,149, 63, 53, 59,117,205,234,149,203, 5,170,116, 84, 61,207, 23, 66, 0, 8, 64,216, 52,185,173,187,187, 7, 25, 51, 91, +214,121, 92,231, 74,165, 82, 42,149,181,166,220, 21, 57, 87,101,240,104,102,150,105,122,244,200,193, 36,137,165, 76,165,116, 34, +164,210, 73, 99,210, 75,243, 53,222,176, 97,116,185, 64,102,135,152, 6,172,217, 84, 99, 27, 55, 77, 76, 77, 87,171, 85, 3, 33, +101, 62,129,153,250,122,187,140,169,186,214,135,148, 42, 53,132, 71,169,164,210,202,172,246,204,233,147,134,214, 32,101, 42,211, + 52,131, 95,165, 69,132, 83, 3,182, 37, 73, 60, 60, 52,252,190,223,248, 95,203,108, 8, 1, 1,208,104, 8,153,136, 9, 74, 37, +127,227,230,201,169,233,237,155, 54, 79, 12,175, 92, 85,233,168,250,190, 87, 42,149,149, 38, 3,184, 74,153,164, 73,226, 62,192, +246, 99,148,148, 42,149, 74,233, 52, 77, 27,245, 90,142, 6,167,150,224,146, 36, 73, 26, 39, 73, 28,167,134,143, 16,180,214,141, +110,244, 75, 29,191,242,238, 95, 42, 8,212, 94,184, 50, 32, 32, 24, 16, 6, 16, 43,213,142, 85,171, 87,111,153,152,220, 58,189, + 99,211,150, 9, 41, 13,153, 35, 78,226,216,124,138,129, 22,211, 52,113,116, 17,251,193, 90,169,114,185,194,192, 90,147, 76,147, + 52,141,210, 36, 78, 19, 7,213,134, 97, 20, 54, 26,245,133,206,174,174, 82,201,239,236,236,122,253,207,190,170,184,237,209,250, + 64, 98,131,233, 33, 90,156, 17, 13,210, 8,136,192,126,169,148,196, 9,179, 16,158,103,160, 81,109,129,115, 35,103,108, 88, 39, +113, 28,149,203,229, 93, 23, 94, 28,180,154,245, 37, 14, 90,173, 40, 10,173,249,152,119, 68, 81, 20,181,130,102,125,112,120,157, + 76, 37, 10,207,247, 75, 35,163,227,207,185,120,119,123,232, 48,232, 89, 1,190,204, 72, 15, 6,195, 67, 0,165, 84, 20,134, 81, + 24,197, 81,219,255, 81, 28,197,134,210, 27,134, 73, 28, 95,119,227,205,214,215, 0, 34,114,189,182,168,164,236,239, 31,232,238, +238,137,194, 32,104, 53, 90,141,165, 48,104, 77, 78,239, 16,158,135, 40,132,240,125,191,116,253,139,126,194, 2, 86, 14,154, 2, + 6,100, 2, 11,156,131,105,102,216,184,200, 68,128, 98,120,213,186, 83, 39,142, 33, 10, 20,130,136,141, 71,177,184,112, 18, 71, + 97, 24, 4, 45,207,243, 0, 48,138, 66,195, 13,149, 82,147, 82,215,190,228,197, 97, 16, 44, 46,204, 87,171,229, 59,255,229,203, + 97,171,190,109,231,197, 93,221, 61,158,239,147, 38, 64, 33, 60,207,247, 74, 0,224, 91, 24,202,172, 12, 35, 32,217, 68,136,173, +111, 65, 48, 8, 25, 2, 83,119,119, 79,181,186, 98,105,105,209, 56,158,188,181,144, 38, 73, 18,135, 65, 16, 6,173,107,174,187, + 49,104, 53,211, 52, 53, 26,139,194,160, 21,180,194, 32,136,194, 32,142, 35, 69,188,114,245,186, 29,187,111, 18, 2, 45, 96, 75, + 44, 4, 10, 97, 44, 33,139,101, 6,251, 69, 98, 66,139,159, 3,130,129, 16, 1, 1,217, 2,180, 8,163, 27, 54,117,118,247, 28, + 62,120, 64,107,109,221,137, 76,173,141,199,177,241,206,245,122, 93,202, 52,142,162,102,179, 81, 91, 90,218,184,105,139, 74,147, + 86,171,213,168,213,154,245,198,228,214,233,234,138,170,225, 9,106,173, 77,150,129, 40, 16, 61, 0,240, 57,135,162, 49, 71,243, + 1, 44,140,110, 86,203,193,141,134,148, 49, 48, 56,180,231,146,203, 23, 22,230, 79, 62,126,236,220,204, 25, 35,141,146,170,187, +167,103,199,238,139,130, 32,136,227, 72,166, 73, 24,134,245,165,165,107,174,123, 81,103, 87,119,163, 94, 15, 26,245,179,103, 78, +159,124,252,200,232,248,213, 38, 59, 96,173,161, 0, 9,163, 64,163, 33,135, 92,155, 24,111, 63,219, 66,251,192, 96,165, 49, 48, + 62, 48,147, 69,171,187,187,123, 38,167,166, 55, 79,108,181,142,195,217, 62, 0,204,206,204, 28, 57,123,166,190,180,120,237, 13, + 55,117,117,247,198,113,148,196,145,102, 22,192,175,189,253, 45,143, 61,250, 61, 39, 70, 65, 26, 68,179,217,141, 13, 17, 0,154, + 45, 79, 89,158,135,182, 81,239,120, 74, 89,209,108,216, 55,128,136,158,231,161, 64,118, 80, 51,128, 48,239, 28, 90,185,114, 96, +104,168, 92,169, 0, 83,163, 81,143,163,176,217,108, 54,155,205,122,163, 54, 63, 63, 87,111,180,134,134,134, 65,107,187, 2,214, + 53,219,158,179,111, 33, 86,215,117, 65,116,183,153, 75, 79,224,122, 88,214,246,209,181, 60,204, 85,208, 1,180,142, 84, 96, 68, +151,105,154,164, 73,216, 10,146, 52, 9,154,205,249,185,217,142,106, 53,142, 66,153, 38, 91, 38, 39, 79,157, 56, 94, 91, 92,180, +123, 41, 7,242, 65, 0, 56,234, 14, 80, 86, 11,179, 67,164, 77, 95,209,226, 26,224,122,211, 38, 69,181,232, 52, 19,176, 33, 46, + 65, 17,209,102, 86, 74,149, 75,229,249,249,217,199,143, 30, 62,118,248,224,177,195,143, 94,241,252,235,130, 32,232,239,239,111, + 54,155, 73,154,206,156, 61, 93,144, 36, 75,208,236, 13,161, 69,229, 25, 17,108,221,153,129,247,142, 29,197,166, 7,139,133,212, + 22, 29,160, 77,174, 11,224, 74, 58, 6,102,165,228,232,232,248,240,240,170, 32,104, 13, 12, 60,239,224,129,253,103, 78,159,218, +176,113,211,252,220,220,217, 51,167,151, 22,231,135, 86,174,206, 96,112,215,115,205, 90, 99,204,166,129,199, 0, 68, 38,206, 2, + 0,163, 13,109,217, 50,218, 58,217,129,233,228,140, 43, 55,179, 2, 96, 14, 0, 92,169, 84, 74,229,146,210,170,179,179,123,219, +244,206,109,211,211,141,102,179, 89, 91,172,110,153,130,118,164,222,105,200,114, 74,236,157, 33, 60, 17,172, 39,104,183,237,252, +105, 1,197, 42,130,246,217, 19,179,210,198, 76,202,229,242,232,248,134,102, 43,104, 53,155,154, 11, 93, 1,206, 12, 15,124,183, +242,224, 26,226, 72,110, 79,154,101,200,154,100, 80,220,221,203,250, 5,100, 93,153,165,194,217, 95,154, 54, 13, 21, 4,230,249, +185,217, 86,179,217,106, 53, 79,159, 60,177,122,205,154,130, 30,205,218,128,176,198,108, 20, 69,206, 61,176,179, 82,147, 31, 57, + 13, 57, 83,177,224,148,107,137, 16,152,222, 99,161, 64,201, 76, 60, 43,198,205,103, 55, 27, 13,173, 85,255,192,192,153,147,199, +202,229, 74,222, 23,177,177,194,104,104,121,120,207, 37,110,107,108,130,237, 0,185,214,154,165, 59, 64, 1,237, 43,172, 99,118, + 71,204,237, 45,171,158,222,190, 52, 77, 38,183,109,127,226,219,173,134,150, 93,174,176, 16, 4,182, 55,199,108,120,200,236,186, +117,148,201, 67,148,191,208,222,196, 3,199, 65,160, 34, 37,157,107, 75,139,213,106,231,208,240,234,226, 6, 96,215, 86,114,137, +116,161,205, 4, 5, 35,163,204, 96, 92,139,216, 53,238,168, 96,204,212,190, 5, 50,246, 74,150, 91,113,177, 43,200,204,115,231, +102, 14,236,255, 30,219,132, 34,215, 0, 0,248,199,142, 30, 45, 54,199, 50,179,135,204, 49,231,246,190, 76,100, 40, 50, 86, 97, +121,102, 87,252,168,226,218,228,207, 30,217,255, 8, 23,250,123,198,205,224,190,125,251,150,150,150,106,181,218,179,173, 45,244, +227,125, 48,115, 95, 95, 95,127,127,191, 15, 0,245,122,253,228,201,147,255,165,148, 39,146, 60,251,251,251,197,127, 41,226, 63, + 88, 59,241, 63,112,123,243,135,252, 0,223,239,235,235,171, 86,171,157,157,157, 29, 29,213,106,181,163, 84, 42, 3,112, 16, 4, + 81, 20,197,113,220,106,181,194, 48,108,181, 90,255, 89, 20, 52, 60, 60,124,235,173,183,222,246,202,159,182,160, 41,228,237, 45, + 83,220,153, 62, 72, 54,212,102, 1, 90,109, 9,181,231,102,102,254,233,159, 62,255,165, 47,127,229,217,226,137,246,237,219,247, +248,227,143, 63,117, 7,248,105, 31,107,215,174,251,133, 95,252,133,203,247,238, 43,149,202,150,116,237, 50,115,202,146,152, 44, + 87,113, 12,103,109, 41, 49, 58,107,202,153, 9, 99,195,246, 85, 74,157, 61,125,234, 27,119,222,249,249,127,190,227,199,162,154, +209,209,209,241,241,241, 31,201,130, 86,174, 92,249,166, 55,191,229,218,107,175, 99, 68,145,181,172, 5, 34, 35, 51, 35, 35,163, + 99,174, 1,186, 42,199,212,202,200,150, 4, 7,128, 2,208,244, 64, 4,162,135, 2, 16, 60, 1,224, 1,174, 89, 55,242,147, 55, +223,114,211, 77, 47,142,163,240,175,255,230, 83,119,127,251,158,255, 48, 91,108,106,106,234, 67,191,255,145,222,222, 94, 33, 60, + 70, 48,173,241,156,250,152, 33, 77, 92, 44,210, 10,156,236,156,143,152,189, 25,243, 58,145, 45, 0,139, 40, 60,207, 3,230,114, +165,122,219,109, 47,127,233,173,183, 28, 59,122,244,195,127,240, 81,254,119, 84,144, 55, 54, 54, 86,171,213,190, 31,167,225,137, +143, 77,155, 54,125,234,239,254,239,109,175,120,101,185, 82, 17,194,195, 2,128,226,120,127,109, 57,106,219,172,105, 27,249, 32, +239,250,231,165, 2,216,182, 49, 45,171, 53,236,110,133,238,158,158,171,174,216,187,162, 90, 61,120,232,240,191,181,106,122,123, +123,251,250,250,126, 48, 11,122,211,155,223,124,219, 43, 94, 41,132,111, 81, 85,178,232,113, 94,160, 88,187, 33,206,190, 23, 8, + 34,121,121,196, 69,118, 4, 23, 74,187,204, 79, 65,161,160,179,168,158,237,198,121,165, 61,123,246,236,222,185,227, 19,127,242, +167,103,103,206, 61, 91,182,152,231,121, 95,184,227,139, 43,186,186, 12,158, 38, 0,137, 93,165,148,161,109, 25, 75, 54, 35,213, + 22,149,148,213,138, 38,138, 17, 51, 91, 55,205,142, 28,144, 35, 78,203, 11,166,108,251, 89, 66,137, 40,149, 94,243, 51,175,252, +251, 79,127,238,192,193, 67, 63,254, 68,113,120,120,248, 47,255,242,175, 58, 58, 86,176,173,161, 29,251, 54,139, 66,108,227, 16, +187, 39,197, 94,150,105,183,113,198, 20,177,109, 68,219,131, 43,244,217,114,246, 17,217,241,118, 71,215,200, 63,208,106,205,224, +154, 55, 94,127,221,222, 75,246,252,248, 45,232,253,239,127,255,234,181,107,137, 9,137, 81, 8,208,136,224,200,251,174,186,254, +126, 21, 51, 23, 39, 2, 51, 54, 44,155, 81, 12,203,104,161,108,236,176, 48, 29,232,102, 65,136, 51,138,172,115, 86,128, 32,204, + 36, 9,240, 69, 23, 95, 56, 59, 63,255,216,161,163, 63, 54, 5,189,227, 29,239, 24, 29, 27, 35, 77,128, 44,132, 48, 52,117,132, + 2,206,152,161, 13,102,103,101, 95,219,144,162,130,103, 38,183,209,204,208,170,214, 25,191,206, 40,174, 72, 43,177,108, 23,211, +200,181,140, 8,225,121,190,239, 99,185,220,221,213,213,229,121,162,167,167,255, 99,159,248,163, 32, 8,179, 6,217,191,159,130, +214,174, 93,187,119,239, 94, 41,149,240, 88, 8,193, 22, 28, 71,120, 50, 5, 21,112,254,140,143, 94,228,207, 17,183,135, 45,199, +234,115, 27,202,106,199,204,208,228,163, 98,153, 35, 55, 97,191,111, 96, 96,108,124,195,138, 21,157,224,248,219,227,155, 38,247, + 61,255, 5,228,216, 49, 90,202, 48, 12, 27,245,218,191,254,235,191,124,250, 31, 62,155, 36,201,191,161,130,246,237,221,107,250, + 96,192, 64,130, 17,201,106,199,133,246, 34,100, 90,132, 32,185, 77, 79,142,178, 95,112,216,153,118, 10, 3,188, 84,200,177,173, + 25,153,217,102, 68, 96,128,238,158,222, 45,147, 83, 43, 86,172,200, 45,148,136,144,124, 20, 68, 26, 81, 48,160, 7, 0, 12,213, + 21,157,165,114,229,134,155,110,126,209,139,110,144, 42, 61,116,232,208,223,252,205,167,142, 30, 61,118,254, 21,180,126,253,122, +227, 91,153, 25, 8,179,198,189,157,197, 3, 40, 96,234,185, 25,229,241,135,178,120,191, 44,150, 81, 62,166,108,102, 64,237, 86, +203, 92,144, 54,243,254,238,163,112,227,230,205,107,215,173,179,203, 35,132, 9,151,102,157,216,146, 12,204,155,133, 97, 76, 9, + 65,190,231, 41,102,143, 97,211,166, 45,239,120,251,219,149, 76,239,184,227,142,127,252,252, 23,206,155,130,124,223,175, 84,202, + 90,105, 38, 70, 33,132,157, 81, 68,204,170,132,162,126,218,176,218, 54,212,215,142,161, 20,195,124,161,137,228, 28,119,129,145, + 73,164,137,144, 25,132, 0,102,225,249,219,119,238,238,236,236,108,211, 62, 23, 6,193,205, 68, 65,238,195,193, 54,246,209,229, + 78, 40, 60,191, 68,196,207,123,254,213,151, 93,122,233,199, 63,241,137, 99,143,159, 56, 63, 22,100,122,204, 66,120, 66, 8, 18, +194, 54,231, 16,224, 9,236, 7, 46,228,139,217,126,179, 99, 60, 68, 79, 14, 6,231,221,204,182,228,219,244, 82, 81, 8, 6, 88, +209,217, 57,185,109,186, 82,174, 20,251, 37,185,219,207, 78,127,201,117,107,153, 57,153,231,114,108, 89,179,178, 66,248,254,107, + 94,253, 51,223,121,240,193, 79,127,246, 31,153,249, 71, 82,144, 82, 42, 8, 67,173, 20,123, 76, 36,208, 45,136,213, 78, 97, 70, +143,219,113,255,220,144,242, 25, 44,211,102,115,143,172,247,239,121,204, 76,236, 17, 17,161,176,199, 48, 8,207, 52, 73, 75,229, +242,228,212,180,239,151,180,166, 66, 36, 40,204, 63, 25, 54,144,115, 2,218,206,171,230,212,220,108,199,178,107, 17, 0, 8, 6, +220,182,109, 90, 74,249,185,127,250,194, 15,169,160, 53,107,214,252,214,251,222, 55,185,117,235,204,233, 83,245, 70,195, 99, 54, +233, 43,228, 14, 8,219,173, 7,158,124,135, 89, 62,141,101, 43, 34,218, 32,221,211,219,211,211,221, 35, 60,145, 37,146, 74, 42, +165, 82,101,143,132, 74,181,214,136,162,186,162,211,243,252,172, 73, 74,133,194, 36,203, 26, 52, 17,179,118, 36,101,205, 54,245, + 84, 69, 62,110,193,186,220, 72, 24,194,196,228,196,222,165,197,111,124,243,158,167, 87, 80,102,105, 23, 92,112,193,207,191,233, + 77,211,219,183, 35, 10,102, 16, 66,120,126, 9,128, 73,107, 68, 34,182, 83,192,203, 27, 0, 54, 3,106,239,167,101, 44, 78,225, + 9, 79, 8, 33,202,149,242,208,224,112, 87, 87,151,109,234,155, 12, 64, 24,236, 3, 60,159, 25, 74,204,192,140,196,192, 32,211, + 36, 9,231,103,231,231,206,173, 92,189,174,175,127,192, 28, 95,150,199,187, 76, 75,164,205,113, 91,236,200,156,236, 88,114,110, +230, 88, 21,105,128,198,156,180, 34, 38,222,182,117,235,195,251, 15, 44,213, 27, 79,165, 32,211,223,120,237,107,127,246,250, 27, +111, 80, 74, 3,160, 16,134,123,134,136,216,213,221,189,180,184, 96,237, 66,107, 88,166, 32,203, 30,104, 51, 33,215,143, 66, 33, + 80,160, 64,132,106, 71,199,234, 53,107,202,149, 14, 68, 64, 16,134,162,239,242,196,220,217, 26,208,131, 93, 14, 33,132,135,232, + 73, 25,159, 56,118,248,212,113,111,124,211,132, 73,196,178, 89,185,204,197,187, 28, 51, 59,132, 42,163,111, 82,126, 72,129,157, +206,182,167, 23, 25,189, 17,240,216,232,250,165,239, 61,242, 52, 10,122,249,109,183, 93,243,130,107,137,216,243,124, 96, 6, 67, +225, 1, 4,128,158,190,193,205,213,206, 19, 71, 15, 39,105,106, 42, 69, 87,171, 35, 50, 16, 80,129,247,148, 79,114, 2,176,231, +121,198,148, 6, 7, 7,251,250,251,132,240,152, 8, 16, 9,138,115,130, 69,130,127,150, 22,178,171,195,140,109,162, 38, 74,146, +228,192,254,239,142,140,111, 44,149, 43, 70,145,214,142,128, 51, 42,173, 35,251, 22,184,182, 42, 99,152,231,231, 16,216,179, 19, +210, 84,166,169,146,178,163,163,252, 52, 85,250,232,232,232,196,228,214, 77,155, 55, 91, 64, 1,156, 51, 22,118,140,220,243,188, +193,225, 85, 3, 67,195,229, 74,135, 84,169, 86,218,210,171,242, 16,111,226, 84,158, 69, 35,162, 97,134,173, 92, 57,216,217,217, + 9,110, 32,158, 11, 64,107,182, 15,220,193,126,150,196, 74,170,200, 66,181,119,102,136,127, 51,103, 78,117,118,246, 0,176,214, +202, 2,180, 82,102,111,165,236,111, 40, 35,118, 26, 78,174, 44,144, 74,237,128,178,148, 73,146, 70,105, 20,108,218,180,241,197, + 55,221,148,164,201,137,147,167,158, 10, 15, 66, 20, 0, 4, 88, 12,225,104,200, 55,102,184,216,243,252,254,129,193,254,129, 1, + 96, 78,149, 10,131, 32, 10, 90, 81, 28,165,105,170,164, 66, 55,254, 10,194,100, 74, 0, 0,221, 93, 93, 2,133, 82,154, 65, 9, +102,227,223, 51, 53, 22, 82,158,226,172,131,206,136,237,202,158,139, 97,184,186,148, 38, 73,154,166, 7, 30,249,238,196,212, 14, +227, 4,218,243,112, 42,164,152,249,129,111, 74,103, 84,125,199, 63,149,134,100, 25,199, 97, 24, 69,173,145,238,141, 43, 58,187, + 95,124,227,141,225, 7,206, 58, 0, 0, 9, 64, 73, 68, 65, 84,207,191,234,138, 63,251,139,191,126, 98,126,228,134,234,209, 18, +134,218, 19, 28, 70, 64, 55, 64,106,152, 57, 0,128, 37,223,235,237,237,237,233,233, 53,211,183, 89,169,105,206,138, 76,211, 84, + 41,201,204,190, 96,165, 36, 8, 33, 52,101, 73,102, 86,148, 80, 54, 22,227,176, 17,123, 50,135,178, 49, 77, 75, 37, 11,199,139, +164, 82,166, 73,204, 0,179, 51,103, 6,135, 87,121, 46,164, 50, 81,166, 5,139,159, 20,103, 56,156, 85,154,232,168,164,148,105, +156,196,113, 18,135, 81,208, 96,134,145,241, 77, 74, 74,207,247,187,187,251, 94,247, 63, 94, 27,180, 26, 31,250,131,143, 55, 26, +205, 39,134,121, 92,174,157, 28, 39,182,155,198, 80,225, 12,255,212,233, 11, 1, 88, 8, 32,242,124, 31,125,223,175, 86, 59, 50, +106,232,194,236,153, 56,138, 53,177, 16, 30, 10, 47,111, 1, 25, 35,202,121,252,230, 4,156,118,126,183,155,137,176,252,221, 56, + 78,226, 40,142,162,145,177, 13, 23, 92,180, 7,128,211, 36, 78,146, 52,142,163, 64, 74,153, 74,231,137,149, 61, 26,198, 1, 79, +133, 1, 6, 41,101, 42,147, 36, 77,227, 36, 14,147,176,149, 36,233,190,171,175,147, 82,122,158,103,152,127, 62, 64, 87,119,239, + 59,223,246,230,239, 62,244,208,223,253,253,255, 51,110,213,127,178,190, 61, 88, 45,160,229,119,182,143, 31,131, 59,160, 0,208, + 58,105, 68, 75,206, 7,167, 4, 68,132, 82,185,163,209,168, 75,165, 60,223, 55, 37, 18,184,227, 93,178,244,186,224,167, 85,166, +159,194,236,136, 37,138,166,105,162, 82,249,223, 46,191, 98, 98,114,202,252, 82,168,146,231,107,207,243,124, 95, 32,235, 40,104, + 37,238,104, 41, 98, 50, 83, 7,214,135,105, 59,242, 33,211, 36, 77,227, 36, 10,146, 36,212, 10,118, 93,124,137, 57,226,192,228, + 34,204, 96,149,193,184,115,199,238,169,201,173, 95,249,151,111,124,223, 68,209, 4, 28,100, 52,179,124,150,243,135,192,100, 14, + 8,195,204,130,152,185,160, 29,195, 24, 1, 68, 70,196,158,190,129,165,197,133, 56,142, 49, 73,209,243,138,233,101, 86, 49, 56, +228,199,156, 91,105, 14,154, 41, 44,185,148, 73,146, 40,153, 40,165, 46,124,206,115, 55,108,220,146,166,169,213,157, 97,208, 43, +165,181, 37,153,197, 65, 99,245,250,209,205, 19,219, 58, 87,172, 32,230, 56, 10,131, 86,115, 97,126,246,216,145,195,103,207,156, + 52,132,238, 52, 9,210, 52, 97,246,183,237,220, 61,188,114,181,231, 9,223, 46,158, 1,115,136,205, 56, 3,251,136,213, 45,155, + 55, 31, 57,118,220,207,168,183,217,225, 11,206, 87, 96,118, 76,131,113, 68, 64,198, 82,204,214,202, 15, 39, 48,217, 29,160,225, + 71,187, 31,129, 1, 96,108,227,150, 51,167, 79, 46,204,206, 2,130,249,117,110,167,217,217, 55, 68, 76, 79,136, 91,198,107, 36, +137,148, 50,137,163,233, 93, 23,140,140,111, 8,195,150,225, 63,154, 81, 32,123, 90, 97, 28,199,177,217, 57,105,217, 47,245,244, +244,154, 72,101,124,187, 95,170,172, 90,189, 78, 43,117,228,224,126, 41,147,222,190,193,137,109,187, 6,135,134, 77,101,231,121, + 2, 13, 4,232, 26, 2,136,108, 52, 4,204, 38, 20,248,133,141, 69,232, 34,151, 25,104, 65, 4,115,219, 64,128, 0,140,100, 52, + 99,189, 53,177,181, 53, 59,178, 0, 69,155, 34,178, 58, 90,189,102,221,224,208,202, 51,167, 78,204,207,205,185, 97, 87,157, 87, +241, 25,252,147, 71,176,108,192, 35,213, 74,166, 73, 50, 50,190,113,116,116,188, 81,171,153,141,105,189, 84,154,166,210,158,182, + 18,134, 65,179,209,104,214,107,196, 28, 70, 97, 18,199,230,232, 67,115,238, 73, 20, 71, 12,112,249, 85, 47, 28, 24, 90,105, 60, +122, 97,216,213,226, 49,104,103,121, 80, 8,212, 44, 4,122, 44,216, 76,239, 22, 78, 38, 52, 53,138,217, 81,104,249,184,118,170, + 22,209,170, 9,201,176,224, 1,173, 5, 89,227,202,211,104, 2, 51,155, 7,185, 16,158,231,141,140,110, 24, 29,223, 40,165,156, + 57,123,122,126,246, 92, 20,199, 42, 77,117, 1,198, 55,150, 67,133,137, 80,163,190,222,190,129,177, 13,155,154,205, 70,134,105, + 91, 15, 85,160,213,151, 74,254,115, 47,221,187,102,221,186, 36,138,130, 48, 8,154,141, 56,138,194, 56,142,194, 40, 8, 90,245, +218, 82,125,113,126,116,124,131, 64,212,136, 38, 25,206, 60, 96,145, 13,148,129, 57, 86, 85,136,174, 22, 3,199, 39,181, 30,199, + 53, 72,209,113,107,201, 88,142,161,188, 18, 34, 18, 25, 15,141, 76,224,182, 27,184, 60,128, 32,227,204,185, 20,193,236, 41, 33, +196,218,117, 35,171, 86,175, 37,109,206,174, 34,115, 48, 83, 28, 69,113, 28, 75,153,154,132,171,163,163, 82,233,232, 40,151, 43, +158,231,155,236, 73, 41, 57,123,110,166, 81,175,103,213,108,154,202, 36,142, 7,134,134, 94,112,221,245, 93,221,221, 74,107, 37, +165,182, 3,189,101,130, 56, 14,131,115,103, 78, 37, 82,141,140,140,142,143,143,247,244,246,187,238, 47, 16, 35,100, 7,188,184, +187,182,171, 92,128,144, 32, 83,144,241, 65,196,206, 44,236, 43, 86, 91,166,175,236,250, 93, 89, 24,178, 91, 42,203,165, 33,159, +248,176,190,216,158, 91, 66, 86, 71,156,119,182, 64,120, 2,201, 23,101,246,201,175,148, 43,157, 93, 93, 14, 68, 2,215,144,110, + 35, 30,150, 74,165,117,235, 71,214,173, 31, 73,146,164,209,168, 55,235, 53,165,244,218,117,107, 87,174, 90, 35,132, 23,134,161, + 57, 76,201, 29, 86, 27,197,113,156, 74, 37, 60,255,178,231, 94,222, 63, 48, 84,175,215,102,206,156,210, 90,245,246, 13, 2,105, +123,224, 77, 27,105, 60,203,140, 1, 51,186,122, 49, 15,114,100, 96, 75,198, 6,116,238,197, 29,107, 99, 67, 25, 18, 24,234, 50, +218,222,133,243, 59,224,252,119,222,108,119,202,129, 12,157,198, 12, 57, 96, 70,129, 64, 54,243,102, 34, 70, 64,147,119, 34,230, +115, 7, 54,104,228,236, 91,223,247, 7, 6, 6, 7, 6, 6, 75,165, 82,185, 82,105,212,235,230, 79, 76,154,234,142, 5,143,194, +160,213,168,215,234, 75,139, 81, 24,122, 94,109,118,102,102,118,118,182,115, 69,117,106,219,234,102,179,213,168,215,149,214, 8, + 72,121,104, 42, 80, 43,156,203,118, 3, 9, 14, 14, 68, 32, 51,180, 1,228, 56,229,104, 41, 26,144,185, 25, 66, 35,177,157,156, + 2,180, 21,168,123, 98,148, 96,206,252, 49, 57, 81,198,118,183,102,230,190, 58,238, 42,102,104, 11,101, 84, 86, 51, 11, 81,168, +245, 10,252,101,187, 38,105,154,104,173, 65,136,249,217,217, 36,137,178, 67,253,146, 36, 10,195,160, 81, 91, 82, 74, 93,127,243, + 79, 85,202,149,197,133,133, 40,106,237,218,125,193,218,245, 99,105,154, 18,163, 82,122,110,246,156, 82,178, 90, 93,145,121,208, +204, 65,112,129,190, 95,220, 98,118, 43,100, 80, 60,103, 63, 58,164,199,109, 57,206,246, 90,230,146, 17, 41,203,158, 12, 33, 57, + 59, 80,213,106, 33, 75,160,193,157, 18,230,158, 59, 94,120, 1,173,205,231,162,138,108,121,112,149,161, 53, 72,210, 41, 0, 12, + 12, 14, 70, 97, 56,119,110,102,110,118,102,105, 97, 62, 12, 26, 68,180,117,122,215,214,233, 29, 81, 16, 46,206, 47, 52,234,181, +179,103, 78, 35,138, 82,185, 34,149,138,163,168,213,108, 52,155,141,218,226,252,198, 45,147, 25, 13,218,221,118,190,197, 10,128, + 89,113,148,192,121, 17,231,167, 45, 3,127, 57,175, 28,178, 33,242, 12, 42,198, 39, 78, 36,128, 59,189, 41,119, 93,144,205,152, +112,222,214,167,172, 45,194, 57,232,214,246, 23, 79, 0,115,243, 87,168,163,218,177,126,108,108,221,232, 40,216,249, 8, 66,196, + 70,189,126,230,244,201,249,217,115,181,165,249,169,233, 93,187, 47,188,216,243,132,249,167, 5,230,103,207, 29,124,244,123, 27, + 55, 79,186,251,201, 8, 41,121, 37,180,172, 22,115,242,145, 1,155, 25,237, 52,148,245, 48,198,129, 48, 0,130,113,205,228,234, + 68,123,106,134,233, 83,161,157, 99,194,162,146,140, 26,201,213,187,152,245,203,204,188, 28, 20, 38, 81,156,199,167,220,219,183, +209,196,115, 88,186,125, 22,160,205,137,178,157, 97,168, 86, 87,108,216,180,101,211,230,137,145,177, 13, 29,149, 10, 49, 40, 37, +117,146,150, 74,229, 85,171,215,148, 74,126,119, 79,159,251,252,130, 62,218,248, 77,237, 91,172,109,205,172, 55, 33,114, 69, 87, +110,241,100, 53,146,213, 85,133,164, 11,218,166, 33,160, 48, 6, 98,247, 17,113, 14, 62, 82,214, 12,113, 86, 5,109, 83,126,206, +180,219, 59, 3,109, 70,152,143,154,112, 62, 71, 6,133,115,225, 0, 69, 24,134,205, 70, 61, 3, 27,130, 86,171, 86,175, 45, 44, +204,151, 43, 29,229, 74,199, 19, 40,247,185, 68,109,152,180, 61, 81,173, 72,242,202,176,242,162,249, 67,230, 92,218,125,103,161, +229,144,137,159, 77,183, 33,187,193,174,236,207,178, 17, 21,204, 90, 62,249, 13, 22,118,110,251,230, 2,104, 27,240, 41,236,186, +101, 93,221,108, 69,148,146,115,231,102,152,121,105,113, 33, 12,131, 36, 78, 90,205,250,236,185,211,131,131, 43, 43, 29, 29,133, +107, 64,225,150,218,116, 84, 60,227,219,185,158,226, 68,196,114,243,103,123,140, 95,225,130,136, 46, 11, 71, 4, 87,114,216,253, +106,175,233, 90,244, 5,215, 13,238, 68, 64, 42,220, 33, 96,225, 88, 55, 40,206,122,180, 53,254,219,242,116,230,246, 78, 65,118, + 32,162,125,193,252,139, 10,155, 38, 38,251,251, 7,194, 48, 60,254,248,145,129,193,193,129,225, 85,224,230,222,184,253, 52, 32, +200, 52,196,208,150, 73, 23,124,159, 65,254, 48,223,255,136,121,255,130,184, 77,167,110,212, 44, 63,100,208,165, 0,246,192, 26, +116, 25, 22, 20,156, 97,123,171, 49,183, 91,130,246,125,199,197,136,198,197,121, 46,224, 39,106,135,139,174, 40, 63, 95,136,137, +120,126,110,246,220,217,179, 65,171, 9,166,224, 82, 74, 20, 28, 34, 44, 87,112,254, 17, 62, 20,224,171,194, 70,207,162, 48, 47, + 27, 5,202,120,207, 8, 80,140, 44, 46,169,228, 98,218, 84,152,139, 5, 42, 72,142,128,150, 44, 12,109, 33,105,249,184,142,203, + 85,157,229,180,109, 53,104,211, 68,150,142,112,251, 49,144,246,147, 85, 42, 81,224,170, 53,107,130, 86,112,234,248,209,114,185, +210, 81,237, 44,208,115, 96, 25,173, 50, 91, 51,127,249,252, 6, 60,233, 11,110,106,221,121, 41,155, 4, 50,100, 19,238,214,205, +160, 69,244, 41, 67,182, 93, 6,144,229,233,150, 28,204,152, 21, 47, 5, 47,189, 76, 7, 80,172, 62,242,153,185,229,219, 43, 91, +200,124,107, 44, 31,243, 2, 32,173,107, 75, 75,164,105,124,211, 68,158, 65, 0,180,157, 56,153, 7,163, 2,145,188,205,146,255, + 51, 78,245,192, 19,255, 73,146,204, 62,254, 63,235,161, 95,175,171,129, 25,182, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/clay.png.c b/source/blender/editors/datafiles/clay.png.c new file mode 100644 index 00000000000..aea212639e7 --- /dev/null +++ b/source/blender/editors/datafiles/clay.png.c @@ -0,0 +1,356 @@ +/* DataToC output of file <clay_png> */ + +int datatoc_clay_png_size= 11181; +char datatoc_clay_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, + 72, 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, + 11,252, 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, + 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, 19, 0, 34, 11,191,157, 46, 32, 0, 0, + 32, 0, 73, 68, 65, 84,120,218,237,124,121,180,165, 89, 85,223,222,251,156,239,251,238,240,134,122,245,170,138,174, 30,170,233, +102, 38,180, 52, 99, 55, 8,149, 6, 20, 73, 34,194, 66,151, 65, 3,100,153,232, 10, 70,212, 37, 6, 21, 39,156, 34, 70,113, 32, + 49, 70, 48,113,105, 52, 14,145,128, 64,148, 8, 34,208, 42,131, 49, 34,202,104, 47,160,231,234,174,170, 55,222,123,191,239, 59, +211,222,249, 99,159,243,221,251, 26,154,201, 86,219,181,188,221,245, 94,189, 87,247,221,119,238, 62,251,236,253,219,191,253,219, + 7,207,158, 61, 11,159,245,241,185, 60,201, 50,243,187,223,247,255,186,118,190,115,225,238,170,110,166,107,107,198, 84,255,243, +215,127,229, 53,175,253,133,225, 73, 4, 0, 93,215, 34,153,205,227, 39,187,174,221,189,120,113,118,176,243,143,111,184,225, 85, + 63,241, 99, 71,158,132, 0, 68,212,212, 13, 25,107,108,181,190,185,125,234, 1,167, 31,117,205,181,191,243,187,191,123,242,228, +137,252,164,209,120,188,182, 54,117,190,159, 78,215,154,209,104, 60,158, 76,214, 54,108, 61,222,221,221,251,230,151,124, 83,126, +146, 53,228,156, 79,193,247, 93,219, 52,141,247,174,235,186,187,206,221,177,191,183,183,183,187,251,210,111,125,137, 5,128,196, +192,204,128,166,235,250,115,119,126, 24, 16, 71,163,145,173,170,174,107,173,173,214,214,215, 9, 0,246,247,119, 47, 94,188,112, +254,238,187,206,221,121,251,221,119,157,243,174, 55,198,108,110, 30,139, 49, 34,226,124,118, 96, 1,224,206, 59,110,223,185,112, + 33, 4,239,156, 67,132,233,218,250,169, 7,156,222,223,223, 93,204,231,139,197,252,216,214,182, 5,128, 11,119,223,197,204,136, + 24, 67, 16,145,186,174, 15, 14,246,239, 62,119,238,226,249,187, 78, 94,114,233,120, 60,182, 0, 80, 85, 53, 18, 6,239,157,115, +179,131, 61, 0,169,155,209,185,219,111,221,218,222, 62,117,201,233,221,139, 23,240,115,218,187,207,229,129,239,251,211,247,187, +222,205, 14,247, 47,156, 63,119,242,212,233,209,120, 50, 59,220,127,238,115,190, 98,245, 73, 52, 95,204, 67, 12,163,233,218,230, +177, 19,123,123,187,251,187, 23, 64,248,135, 95,241,242, 35,175,244,142, 27,255,152,153,235,186,158,207,102, 23,207,223,117,252, +196,201,233,116,218,119, 11, 16, 89, 44,230, 95,249,149, 95, 5, 0, 68, 68, 27, 27, 27,134,136,136,234,166,153, 78,215,234,102, +180,113,108,187,237,221,221,119,159,255,214,151,188, 24, 0,236,168,169,152,147,247,254,226,249, 59,167,107, 27, 34,226,156, 59, + 60, 56,184,112,254,194,254,254,126,223,117, 0, 96,145,172,247,129, 69,198,211,245,115,231,206,221,252,201, 79,140, 70,147,186, +105, 66,240,174,239, 71,163, 49, 0,224,239,191,227,198,190,239, 22,243,249,197, 11,231,239, 62,119,167,181,118,251,228,169,227, +219, 39,118,119, 46,222,113,235, 45, 72,212, 45, 14,237,238,206,197,115,119,220,222,182,109, 8, 94, 68,172,173,142,111,111,111, +110,110,222,121,251,109, 93,215, 18, 81,221,140,232,174, 59,239,152,205, 14, 17, 65, 68, 92,223, 3, 0, 34,221,113,251,109, 23, + 47,220,125,219,205, 55,157,190,236,138,102, 52,177,204, 60,158, 76, 16,177,239,186,249,236,112, 62,159,133,224,231,243,217,199, + 63,250,129, 27,158,249,156,190,239,231,179, 67,184,175,246,206,234,167,167, 63,253,233, 63,248, 67, 63, 50, 95,204,247,119, 47, +112,146,201,116,173,170,107, 99,173, 49, 22, 17,254,224,247,223,246,202, 87,190,242,179,248,192, 83,158,242,148, 87,254,248, 79, +137, 48, 11, 51, 75,138,190,239,250,110, 49, 95,204, 15,183,182, 79, 86,117, 61, 26,141,235,186, 73,209,127,242,227, 55,237,238, + 92,248,246,151,125,215,189,174, 40,198, 32, 34, 34,130,136,214,214,147,169, 69,196, 16,227,108, 54,107,154, 38,120, 7,128, 41, +134,245,141,205,205, 99, 91,191,249,235,191,118,225,226,197,151,124,243,183,124,154, 23, 10, 33,128, 72, 85,215, 77,211, 16, 81, +223,247,117,221, 76,167,211,197,124, 94, 85,245,116,125, 99, 52, 26, 19, 34, 16, 10,139,247,253,250,177,237,215,191,225,183, 23, +243,249,238,206,249, 55,189,241,141,111,127,199,187,242, 11,109,109,109, 1, 8,199,200, 34,237, 98,182,191,187, 91, 53, 13, 34, +141,198,227,209,104, 84,215, 13, 33, 9, 8, 10,196, 24,103,135,243,195,131,189,182,109,231,135,135,231,239,190,243,193, 15,186, +234,228,246,241,223,120,221, 27, 44,104,104, 18,100,192,196,140,100,215, 54,142,245, 93,235, 92, 47,156,250,158,156,115, 33, 4, +231,156,115,142,136, 82,138,206, 57,215,119,139,197, 60,134, 96,140,121,200,195, 31, 1,240, 6, 11, 0,174,247,204, 73, 68, 82, +226, 24,252, 98,177,152,207, 14, 15, 14,246,231,135, 7, 33, 4, 68, 28,141, 39,227,241,164,170,171,170, 26,143,198, 99,231,156, +119,222,123,111,235,102,205, 90, 34,122,241,191,126,161, 5,128,189,221,139,109,219,182,109,235,157, 11,193,135,160,209,199,121, +215,139,240,104, 52, 49,214,214,163,102, 58, 93,155, 78,167, 33, 4, 78,236,189,235,251,150,200,136,192,236,224, 96,243,248, 41, + 11, 0, 23, 47, 92,152,207,103, 93,187,136, 49, 33,162, 8,167,148,130,247, 49, 38, 34, 34, 99, 54, 55,143, 29,223, 62, 97, 43, +219, 46, 22,123,187, 59,179,195,253,253,253,221,217,254,190,128, 92,118,197, 3,141, 49,174,239, 44, 0,236,238,238,196,224, 1, +160,170, 42,230,232,125,242,206,117,109, 27,130, 71, 68, 52,116,120,176,223,117, 29,115,234,218,118,111,119,103,111,231,194,173, +159,248,200, 99,175,187,225,196,169, 7, 48,115,223,247, 49, 70, 11, 0,136,104,140, 21, 16, 16, 1,192,186,174,173,181, 85, 93, +139, 72, 93, 55,198,152,221,221,157,115,183,221, 12,136, 41,165,217,254,206,195,175,121,220,163, 31,247, 68,102,118,125,223, 46, + 22,251,123,187,231,239,186,237,190,139,147,247,201,227,204,153, 51,116, 95,189, 86, 62,253,127,252,158,247,118,109,215, 46,102, + 59, 23,238,154,110,108,141, 70, 35,107,107, 50,134,136, 82, 12, 47,122,225, 11, 46, 92,184,240, 89, 78,255,159,190,255, 47, 98, +140, 49,198, 16,188,119,174, 93, 44,246,119,207, 79,215, 54, 71,147, 73, 85, 85,214,214,100, 40,134,112,254,220, 29, 47,124,209, +139, 62,211, 91,243,222,123, 31,152, 19, 2, 90, 91,141, 39,147,205,173, 19, 33,248,190, 93,196, 16,152,163, 37, 51,157, 78, 54, +143, 29,251,169, 87,253, 56, 17,222,219,107,153,127,241,194, 23,165,148,132,153, 69, 16, 17,201, 32, 98, 74,201, 7, 31,188,247, +190,143,193,117,237, 34,198,152, 82,188,254,137,143,255,216, 77, 55, 29, 30,206,238,241, 42,155,155,155, 68,100,136, 8, 17, 1, + 0,144,140, 49,198, 86,100, 12,179, 0,128,181, 13,160, 73, 12, 2,176,125,226,212,195, 30,121,205,247,126,207,203,159,252,164, +235, 62,141,141,110,252,163,247,198, 20, 75, 84,179, 0,224,157,155,207,103,179,195, 3, 99,204,100,186, 54, 30, 79,234,186, 22, +225,224,157, 8,131,136,136,196, 16,230,243,195,175,249,218, 23,172,216, 40,250, 16,130, 48, 87, 85,165,126, 12,136,117, 93, 87, + 85,109,140,169,170,170,105,154,186,105, 70,227,201,250,198,177,201,116,157,108, 29, 98, 90,116,253,124,209,253,240, 15,190, 98, +153,146, 43, 91, 77,167,211,245,141,141,241,120, 76, 4,125,215,113,138,136, 88,215, 53,145,169,170,202, 88,139, 0, 34, 2, 72, + 72, 38,132,208,182,237, 98, 62, 63, 60,216,159,207,231,223,246,205,223,152,253,104, 50,153,128,128, 72,138,193,199,152,186,118, + 30, 66,212,247,104,173,205,175, 2,250,134, 82,215,182,243,249,108,177, 88,116, 93,183, 88, 44,218,118,145, 66, 40, 14, 41,137, +153,137, 12, 0,178,200,104, 50,233,118, 46, 58,215, 85, 85,221, 52, 99, 97,137, 49, 2,128, 8,120,239, 14, 14,246, 23,243,185, +115,189,247, 46,120,159, 66, 32,202,103,195, 18, 25, 36,147, 18, 39,102, 16, 32, 52,147,233,186,235, 59,239,122, 0, 8, 49,164, +196, 10,142,124,240,214,216, 16, 66, 12,209, 59,175,200,170,170,235, 83, 39,182, 1,192, 10, 96, 74, 41,165,196, 44, 2,162,127, + 15, 33,206, 22,173,191,184, 27, 98, 64, 68,181,148,238, 3, 0,164,148, 98,138, 2, 98,235,186,170,235, 23,190,224,107,127,235, +245,111,180, 33,132,152, 18,167, 36, 34, 41, 70,239, 93,223,117,179,217,225,225,254, 94,215,117,204, 92,215,141, 0, 52, 68,214, + 86, 77,211, 8, 39, 17,225,148, 64,112, 60,158,128, 8, 19, 49,179,237,123,231,189, 75, 49,198, 24,125,112,125,215,119,237, 98, + 62,159,119,109,219,247, 29,145,177,198, 42, 0,174,234,106, 52, 26,121,239, 68, 36, 49,199, 24,201, 16, 89, 74,222, 61,244, 33, + 87, 91,215,119,109,219,182,237,162,235,218,160, 15,239,189,115, 49, 37,102, 54,198, 26,107,109, 85,141, 70,227,201,100, 90,215, +141, 48,199, 20,131,247, 41, 69, 68, 27, 82, 34,196,147, 39, 78,218,182,107,219,197,252,240,240,176,235, 22,193, 7,230,148, 82, +226,148, 56, 37, 68,163, 6,154, 78,167,235,155,155,163,102,228, 92,239,250, 62,120,239,250, 78, 68,230,243,217,177,173,109,199, +201, 86, 53,181,139,197, 98,177,232,187,214, 59,175, 7,133,144, 4, 32,165,196,204,128,104,140, 25, 79,166, 85, 85,133,224,103, +179,195,174,235,186,197, 34,134,112,254,220,237,205,104, 60, 93, 91, 27,141, 38,100,140,157, 29, 28,180,237,162,239, 59, 17, 49, +198, 2,160,128,112, 74, 49, 70, 97,102,182,160, 39,107, 54,243,206,205,102,135,243,217, 97,219, 46,110,191,245,166,211,151, 93, +125,242,228, 37,198,154,170,105, 16,209,250,224, 83, 74,100,172, 53, 36, 2, 49,134, 24,131,247, 46,120, 23, 83, 18,145,118,220, +238,237,237, 33,130,247,126,118,120,176,115,241,194,206,221,119,110,108,158, 56,115,213,213,205,104,236,250, 30, 1, 56,177, 37, + 34, 91, 89,195,130,136,128, 64, 68,194,236,208,197,152,156,235, 92,215,166, 20,187,182,181,214,134,224, 15,246,247, 14,246,118, + 15,246,119,158,242,180,127, 50,157,174, 59,239, 98, 12,125,223,119, 93,107,133, 89, 88, 88, 24, 24, 68, 88,193,230,218,218,250, +104, 52, 54,214, 84, 85, 45,194,119,222,113, 91, 59, 63, 4,164,190, 93,236,158,191,243, 43,254,249,215,137,176,238,111,219, 46, +246,118, 47,182,243,125,184, 95,229,181, 43,174,184,130,224,254,244, 64, 68,251,105,255, 97,109,109, 58, 30,143, 47, 92,184,184, +250,205,201,100,242,168,107, 30,117,226,196,201, 43, 46,191,220, 88,187,187,179,115,199, 29,119,124,240,131, 31,220,219,219,187, + 15,215,100, 69, 4, 0,126,254,181,175,189,246, 49,143, 19, 1, 78, 41,166,200, 41,133, 16,162,158,221,190,223,223,185, 96,170, +122,178,182, 94,215,141,173, 42, 67,198, 24, 67,198, 32,162, 49,132,136,204,192,156,156,235,103, 7,251,223,240, 13, 95,223,182, +221, 95,107, 65,127,242,103, 31,224,148,152,153, 89, 68, 4,128,136,192, 86, 72,100,200, 88, 91,213,117, 51, 10,222, 59,223,207, + 14,219,205,205,227,104, 5, 16, 4,196,144, 97, 68, 99, 76, 85, 25,196,170,110,154,186,174,127,249,151,255,251,206,197,139,139, +249,225,183,191,236, 59,191, 64, 68,211,181, 45, 51, 35, 32, 32,136, 0,128, 0, 0, 34,160, 33,139, 53,145, 53,198, 26, 91, 25, +107, 67, 8,138, 35,153,211,104,212, 76,167, 27, 70, 44, 33,146, 37, 50, 68, 2, 82, 85, 77, 51, 26, 79,198,237,226,240, 71,127, +228, 7,172,173,127,224,135,126,248,243, 50,152, 5,128, 98, 25, 65, 1, 69, 35, 0, 0, 32, 8, 68, 6,136, 8, 9, 1, 17, 64, +152, 37,165, 4, 72,198, 26,102, 92,180, 11, 67, 6,137, 16,128,153, 21,239, 35,192,104, 52,190,244,178, 51,222,245,183,124,242, +166, 31,124,197,247,213, 77,243,159,127,238,231,255,234,175,110,250, 92, 23,100,140,145,188, 89, 64,192, 26,105, 1, 9, 17, 17, + 81,191, 15, 34,108,217,218,164, 5,173,136, 16, 17, 34,145,181,214, 90, 67,134,136, 68, 51, 58, 51,167, 40, 34,147,233,116,107, +251, 4, 17, 34,226,207,252,204,171, 17,229,227, 31,255,196,251,222,247,222,183,188,229,255, 92,188,184,243, 89, 44,196,172, 96, + 13, 0,128, 16,145,200, 24, 99,140, 1, 0, 17,209, 4, 96,141,229,170,170,121, 36,210, 9, 51, 17, 25, 99,171,170,174,170,186, +170, 42,107, 45, 25,131, 8,160,235, 98, 78,156,244, 19,167,152, 88,152,227,149, 87, 94,117,217,229, 87, 60,251,217,207,117,174, +111, 23,243,119,189,235,157,191,246,235,191,121, 79,232,120,230,204,153,179, 55, 60,141, 89, 0,193, 24, 83,215,117, 93, 55,117, +221,212,117,109,140, 85, 24, 25, 67, 96, 17, 64, 64,200,251, 41, 34,198, 24,173, 53,171,186,174,234,218, 26, 67, 68, 72, 4,136, +198, 90,181, 28,145, 17,128,196, 28,130,119, 62,244,125,223,119,221,162, 93,204,231,179,217,236,112,125,186,246,132,199, 63,230, +195, 31,249, 72,239,220, 0, 65, 45, 0, 76,215,214, 0,128,144, 8, 17, 9, 69, 68, 56,113,138,204,236,189,111,219, 69,140,145, +144,136,140, 8, 35,128, 53, 22, 42,161,188, 93,214,218,138,136,128, 16, 0, 53,184,233, 46, 51,115,136,209, 57,215,247,109,223, +247,222,251,224,189,178, 31,237, 98,190,152,207,218,197,162,239,219, 23,124,205, 87,191,237,237,239,248,216, 77, 31, 95,110, 89, +101,140,128, 8, 51, 51, 67, 2, 64,202,158,144,146,158,190,224, 92,140,129,140, 53,198, 20, 7, 50, 85,149,109, 0, 32,194, 12, + 64,122, 50,244,117, 99, 76, 33,184,190,235,251,190,115,125,239,189,139, 49,166, 24, 67,240,125,175,150,106, 93,223,197, 24,172, +173,191,228,233, 79, 59,178, 32,230, 4, 0, 72, 68, 96, 88,178, 47,233,255,136, 84, 55, 35, 50,198,185,222,117,109,183,232,140, + 49,182,174,173,181,154,135,131,119, 62, 32, 8,176, 40,125, 33,194,138, 95,180,164, 9, 33,134, 24, 66, 74, 73, 97, 87,240, 46, +120, 31, 67,212, 99,164, 96,121, 60,153, 30, 61,101,182, 18, 97, 17, 72,249, 53, 21, 65,234, 27, 22, 22, 97,253,201,102,140,198, +198, 16,218,174,227,180,208,221, 41,103,130,213,114,186,107,122,216, 0,209, 26,203,156,132,165, 44, 48,132, 24, 99,140, 2,130, + 68, 68,134,144,170,186, 30,141, 39,255,242,133,207,255,229, 95,249,141,188,160,148,152, 57,233,187,147,229, 3,132, 37, 50,167, + 24, 83,208,226, 40,120,231,250,190,115,174, 15, 62,196, 24, 82, 74, 25,141,145,177, 85,101,173, 53, 70,233, 55, 99,140, 49,214, + 90,107, 69,196, 67, 31, 98,200,182,139, 49,113, 2, 1,107, 43, 24,131,112, 50,100, 16,224,212,201, 75, 78,158, 56, 46, 34, 22, + 0,156,235, 83, 74, 44,172, 39, 54, 27, 94, 18, 39, 78, 49,133, 24,188,115, 74, 70, 56,231, 92,223, 59,215, 43,250,212,130,196, +144,181,181, 37, 34, 38, 84,228, 79,164,249,196,214,117,131,136,156, 18,162,227,225,145,152,133, 1,177,110, 70, 68,168,142,149, + 82,122,254, 87,127,213, 27,222,244,187, 74,170,244, 33,134, 24, 99,138, 41, 37,133,235, 49, 69, 13, 32, 41,197,168,251, 31, 66, +136, 33,120,239, 83, 12,222,123,245, 52,107, 45, 24, 64, 45, 54,137,180, 18,179, 85, 85, 85,117,211, 52, 85, 85,167,164,165,139, + 48,171,129, 98,140,129, 83, 2, 69,185,130,128,164,181,224,104, 52,185,254,137,143,179,202,118, 43, 48,119,206,121,231,242,137, + 40,101, 4,231,248, 38,137, 83,118, 23,102, 68, 36, 18, 61, 9,134,168,170,171,186,105,148,164,210, 20, 91, 85,149, 49,150, 57, +117,157, 15,193,199,168,160,222, 43,255, 67, 68, 32,210,133,150, 0,109, 93,143, 38,107, 49, 56, 99,109, 85, 55, 22, 0,218, 54, + 47,200, 43,140, 15, 33,165,164,150, 5, 61,201, 26, 21,202,187, 28,182, 85, 55, 8,137,172,173, 70,163,241,100, 58, 25,141,198, +117, 93,147,181, 40, 16, 98,232,187,174,107, 23, 74, 60,245,125,223,183,173, 15, 94,152, 23,139, 89, 12, 97, 50,153, 54,107,235, +227,241, 84,132, 29, 0, 32, 24, 99, 45, 0, 44,230,115, 31, 92,112, 33, 4, 23,124, 96, 73,154,205,136, 0,192, 20, 15, 7,100, + 6, 0, 86, 82, 42,165,156,130, 17,203,154,114,132, 76, 41,121,221, 92, 37,222,186,174,107,219,118,177,104, 23, 11,239,221, 98, +126,120,176,123,190,110, 38,219,167, 78,111,108,110,142, 39,107,198,152,224,157,158, 86, 50, 70, 23, 52, 11, 33,196, 24, 82,212, +162, 5, 40,167, 85, 16, 97, 0, 13,153,172, 79, 80,250, 65, 52,213, 16, 35,162, 49, 38,198,216,247, 29, 11, 35, 18,136, 36,230, + 20, 67,240,190,119,174,239,218,174, 93,116,109,215,119,139,221, 11,231,186,118,118,233,153,135,156,124,192,165,211,181,181,186, +174, 17, 49,135, 92, 17, 76, 41,159, 50, 1,208,163,139, 21,105,116, 65, 66, 4,212, 40,148, 82, 2, 9,217,155, 66,240,193,235, +202,132, 25, 16,172,177,174,239,188,243,174,239,172,173,200, 16, 0,112, 98, 45,130,250,174,235,218,182,235, 22,174,109,119, 46, +222, 49, 93, 63,246,200,107,159,180,181,189, 61, 26,141,137, 72,125, 60, 7,157,148,188,247, 49, 4, 91, 86, 64, 4, 25,129,136, + 0, 48, 48,176,128, 32,128, 49,132,212, 24, 99,163, 49,198, 88,242, 85,140,158,147, 0,138, 46, 60,197,120,120,176,119,176,183, +131,132,214, 86,198, 88, 17,137, 41, 4,239, 53, 70,244,237,108,118,176,251,248, 39, 63, 99,243,216, 86,211, 52,198, 88,102,214, + 60, 50,120,174,235,186,249,236,112,118,184,111, 17,241,131, 31,252, 75, 41, 81,241, 72, 5, 80,254, 90,162, 48,228,229,102,139, +106,125,138,132, 74, 15, 33, 71, 62,156, 31,204, 14, 15,124,223, 49, 71,102,209, 51,127,217,153,171, 47,191,234,225,139,174, 59, + 56,156,241,234, 35,197,184, 2,222,163,247, 93,215,223,207,248, 70,173,205,238, 63,139, 57,123,246, 44,173,236,204,253,226,113, +255,170, 92,239,143, 11,250,244,165,244,246,246,246,238,238,238,145, 67, 7,240,136, 71, 60,226,146,211,167,207, 92,113,197,177, +173,173,118,209,222,121,231, 29, 55,223,124,243,135, 62,244,161,191,169, 5, 93,122,233,101, 47,255,238,239,126,204, 99, 31,167, +205, 15,223,247,222,187,195,253, 29, 36,211,140,198,198, 86, 74,171, 34, 25, 45, 75,148, 12,214,240,120,120,176,255,147,175,122, +213,123,223,251,222,251,128,111, 56,115,230,204, 98,177,248,157,183,252, 30, 32,106,208, 76,133, 82, 47,164,250,236,240,112,127, +109,125,107, 60, 30,219, 92,238,216,130,194, 8, 0,137,128, 89,148, 44,191,241, 93,239,252,153, 87,255,199,191,214, 41,123,241, + 55,254,219,183,188,245,237, 72,182,236, 15, 34, 25, 34, 99,172,181, 85, 93, 53,205,100,109,125,235,248, 9,215, 47, 20, 31,102, + 40, 41,146, 25, 99, 84,186,220,214,117, 51,154, 76,159,244,228,167,188,230, 53,255,101,109,109,250,133, 59, 53,230, 26, 35,149, +122, 26, 50,224,167, 12, 66,171,170,174, 71,227,245,141, 99,237,226, 48,122, 87, 16, 52, 43, 30, 1, 0, 4, 36, 67,214, 86, 77, + 61,154, 76, 38,163,209,248,199, 94,249,163,215, 95,247,132, 47,112, 65,137,147, 66,111,230, 56, 0,217,188, 82, 99,140,173,140, +173, 42, 91, 85,117, 51,153,110,120,239,246, 46,222,157, 98, 84, 24,169,245, 46, 34, 16,146,181,182,174,171,209,104, 52, 26,141, + 16,225,171,190,242,121,223,242, 77, 47,254,130, 22,148, 83,110, 74, 81,193,160,112, 46,244, 9, 17,149,143,177, 85, 85,168,221, +166, 30, 77,103,179,131,217,254, 94, 12, 94, 56, 41, 62, 65, 16,144,196,156, 88,152,136,172,177,193,247,151, 94,122,217,119,125, +199, 75, 63,239, 5, 9, 75,102,131, 57, 9,107, 33,196, 90,121, 98,134,168,121,239,140, 49,138, 76,200, 84,104,108,215,245,179, +195,195,131,189,221,253,221,157,221,157,243, 23, 47,156,223,219,219,109, 23, 11, 17, 24,141,167,205,104,226, 92,187,181,117,252, +251,190,231,229,159,103, 96,204,229, 47, 2,162, 96,249, 2, 65, 0, 51,255,161, 5,148, 49, 90,183,107,197,166, 85, 62,145, 33, + 91,137, 64,140, 28, 98,116,125,239,189, 87, 33,201, 37,167, 47,219, 62,113, 42,133,112,252,248,246, 79,252,135, 87,126, 94, 78, +189,124,104, 98,211,211, 70, 43, 88,141, 74,181,165,117,123, 41, 9,149,178, 33, 50,214, 86,149,181,149,181,149,177, 86, 15,232, +104, 60,185,244,242, 43, 31,250,200,107,142,111,111,141,198,227,159,254,201,159,248, 92, 3, 35,106, 13,205, 32, 40,194, 2, 0, + 40,130,185, 3,166,121,151,181,189,144,201,141, 21,120, 68,132,100,140,181,134,200, 32,228, 42, 87, 31,144, 9, 36, 28,143,199, + 39, 79,157, 70,128, 55,188,254,127,253,217,159,189,255,173,111,123,235,251,222,247, 39,159,145, 99, 4, 96,102, 0, 24, 56, 43, +132,188, 33, 72,136, 0,204, 40,162,149, 47, 17, 25, 67,164, 52,153,238,178, 89,122,152, 37, 66, 16, 72, 28, 83,140,194, 92, 58, +195, 0, 0, 2, 50, 26,143,175,187,254,250,199, 63,225, 9,222,247,127,116,227, 31,190,250, 63,253,236,189,248,208,192,122,101, +222,147,243, 98,136, 12, 41, 69, 3,197,149,140,181,150,172,213,165,228, 80,173,223,181,149, 86, 29,182,170,234,102, 52, 26, 79, + 70,147,105,211,140,171,122,100,108,133,100, 0, 48,177, 68,230, 24, 83,140,252,232,107,175,253,233,159,122,213,208,224, 58,178, + 32,214,170, 38,198, 82,106,233,155, 54,182,178,186, 25,186, 71, 89, 59, 67,198,154, 92,192,231,160,160, 95,150,239,144,209,239, + 85,182,170,108,221, 24,107,145,140, 8,164,196, 49,166,224,131,243,174,239, 93,239, 92,240,225,251,191,251, 59, 63,173,133,212, +133,169,178,182,174,234,186, 30,105,123,210, 26,107,136, 10,109,148, 64,148, 98,163, 97, 53,136,164, 62,100, 52,181,149, 66, 14, + 53,168,146,209,143, 90,202,133, 24,115,203,170,119,202, 26, 57,239,122,231,254,205,215,127,221, 61, 23, 68,198,228, 66,124, 52, + 26,141, 71,117, 83, 91,107,141, 33, 4, 73, 41,250, 16,130,119, 41, 38,237,186,170,200,160, 80, 28,132,148,255, 66, 72, 80, 90, +206,186,161, 90, 93,169, 39,100, 82, 32,132,140, 35,188,215, 0, 17, 66,104,154,250,234,171,174, 60,178, 32, 99, 76,211, 52, 77, +211, 84, 85,101,140,201, 86, 73, 49, 70, 37, 62,122,231,186,224,251, 24, 99, 57, 62,128, 68,217,203,200,168,227,175,226, 96,205, +188,154,238, 98,202,160, 33,248, 16,188, 47, 11,243,193,123,223,247,222,251,232,195, 63,253,178,103, 30, 57,101,132,104,140, 1, + 4, 2, 20,145,148,162,158,106, 22, 73,234, 93, 62,176,176, 49, 76,198,104, 66, 69, 0,107,141, 26, 8,145,244, 16, 65, 38,143, + 69,233,119, 22, 86,244,162,146, 18,181, 77,212, 2,185, 44, 43,165,200,194,134,170,209,168,233,123, 87, 0,154, 54,220, 5, 88, +162, 54,101, 17, 49, 87,105, 0,218,214,240,157, 75, 49, 26, 91, 17, 17, 39,214,115,103,200, 32, 96,161,203, 24, 16,181,190, 86, +238, 45,134,208,187,190,239,123,175,236, 86,136, 3,163, 18,243, 35,113, 98,237, 99, 76, 38,147,149, 5, 9, 8, 39, 37,240,141, +209,176,148,153, 57, 4, 52,182,106, 70,227,196,220, 45,230, 33, 6,107, 43, 34,131, 72,214, 90, 50,148, 77, 1,156, 35, 89,169, + 42, 83, 74,222,251,190,107,189,119,234, 43, 41, 51, 77, 49,198,200,156, 56, 67, 23,101,223,232,178, 75, 79,239,238,238, 13, 16, + 86, 16,128,140, 65, 36, 86,118, 65,223, 35,106,203, 3,200,216,166, 25,139, 72,223,181, 49,248,170,170, 81, 11,120,230,152, 34, + 36, 6,204, 76,121, 33,143, 88,237,160,219,148, 98, 92,109,229,106,180, 27,192, 58, 17, 25, 91, 61,236,161, 15,254,203, 15,126, +184,164, 14, 68, 50, 54,159,139, 21,144,166,105, 68,191, 64,194,170,174, 1,145, 99,140, 49,184,190,143, 38,154,204, 9,131,128, +164,196, 74, 30, 42, 5,200,137, 51,226, 22, 30,186, 76,137, 89, 41,175,196, 67, 18,215,188,103,175,190,250, 65, 43, 32, 31, 81, +129,232,192,164,150, 38, 85, 73, 90,249, 59, 0,128, 44,144, 88, 98,140,226,131,158, 44, 17, 80,158, 85, 65,192,224, 84, 49, 50, + 25,131, 3, 53,192,138,114,152, 83,210,124, 98, 12,113,202, 45,140,186,174,143, 84, 29,153,103, 40, 60,115,225, 98,139, 62, 66, + 35, 99, 74, 81,207,171,115,193,251,236,147,169,172,148,200, 26, 83, 74, 17, 13,217, 57,116,139,176, 98, 4, 22,102, 73, 69, 69, +167, 49, 63,229,240, 73,230, 81,143,124,216, 7, 63,252,177,220,192,211,182, 82,177, 4,103, 78, 70, 6, 83, 39,230, 20, 99, 8, + 49,122,231, 52,166,121,239, 57, 69,197,225,154,105,196, 90,229,227, 6, 24,103,141, 37, 99, 64, 36,132,144,125,128, 33,191, 87, + 68, 99, 44, 40,193,133, 0, 0, 79,125,242,245,121, 65,204,146, 18, 31,101,168,243, 35,163,219, 24,189,247,193,103, 98,184,239, +123,165,172,149,108, 68, 34, 16,237,111,152, 21,214, 6,149, 89, 51,182,210,190,209,192,166,107,196, 7, 1, 21,147,114,138, 32, +146, 82, 50,182, 94, 95,155, 0,128, 21,230, 24, 67,110,185,151,204,207,146,113,109, 82,217,136,243,222, 59,223, 59,215,187,224, +189,243, 46,134,160, 71,157,136,176, 66, 17, 97, 16, 83, 66,182,230, 56,133, 74,204, 6, 17,151, 46, 89,220, 65,247,215, 90,203, +204, 34, 9,137,158,251,229,207,188,229,206, 93,203,194, 26,178,138,161,180,209,149, 41,174,162,194,210, 20,228,135,147, 28, 99, +150, 30, 13, 73,131, 32,227, 20, 50,134,180, 79, 99,140,177,150, 98,196, 28, 24,178, 31,232,185,203,128,203, 88,223, 45,180, 51, +182,190,113, 92,238,216,177,204, 28, 98,224,152, 35,169,254, 97, 86, 18, 61,169, 26, 38,134, 48,172,174, 84, 1, 89,225,153, 1, +157, 26, 38,183,171,169,112,231, 85,222, 44, 16, 89, 70, 42,173, 38,132,140,106, 67,162, 32,165,232,201,152,241,100, 2, 0,150, + 19,167,160,242, 24,237,103, 21, 58, 54, 37,133, 74,156,202,202,180, 90, 74, 92,200, 96, 64,212,142,172, 54, 23,173, 49, 70,235, +202,170,174,117, 77, 26, 34,135,142, 66, 42, 17, 82,125, 57,197, 32,234,127,204,166,172,222, 50,167, 2, 14,156,235,157,247, 46, +248,144, 56,234,207,107, 44, 80,167,202, 65, 54, 7, 37,212,192,159,219,161,214, 86, 85, 85,215,165, 31, 89, 55,214, 86,136, 24, + 57, 36, 77, 97, 37,124, 39,221,107,130,224, 61, 51, 91,107, 43, 91, 39, 83,105,114, 4, 0, 91,148,153, 81, 29, 37,120,239, 67, + 72, 49, 22, 11,203,145,188, 32,171, 4, 40,230,146, 9,209,100, 42,160,110, 70,163,186,170,109, 93, 17, 82,140,193,251, 16, 99, +228,178,243, 49,196,148, 18, 34, 6,239, 98, 8,182,170, 84, 87,196,156, 56, 69, 44, 22,226, 12, 12, 66,254,156, 50,244, 73, 67, + 22, 81,212, 63,160, 29, 61, 95, 3, 65, 75,132,214,216,186,110,154,166,169,235,218,218,138,144, 18, 39,237,103,149, 22, 89, 12, +193,171,188, 56, 4,223,119,173, 49,166, 25,141,181,135,156, 82, 26,104, 95,155,146,178,225,185, 31,166, 69,190, 38,124,133, 94, + 34,130, 40,200,165,101,158, 45, 36, 67,135, 53,215,183,214, 24, 99,145, 72, 68, 50,151,227,156,243,126, 16, 92,133, 16,152, 83, +240,110,118,120, 0, 0,235,155, 91, 77, 51,170, 71, 35, 67,100,173, 85, 7, 0, 0, 27, 83,116,189,139,218, 20, 11, 62,198,164, + 1, 99, 40, 98,151,198, 24,226, 55,103,228,176,164,216, 74,187, 58,165, 20, 33,113,140,170, 26,241,174,215,198,175,207, 94,225, + 15,246,118,156,235,182,142,159,154,174,173,141, 39,147,166,170, 19, 39, 99,109,249,141, 96, 83, 76, 42,188,211,230,104,233,117, + 80,201,147,229,207, 50, 86, 38,245,107, 68,100, 98,109, 22,105, 48,243,206, 41,184, 83,146, 94, 37, 98,125,175, 66, 49, 23,188, + 59,220,223,157, 29,238,108,109,159,222, 60,190,189,182,190, 49, 26,141,136, 12, 7, 33, 50,198,100, 80,101,181, 79, 50,116,199, + 16,134,194, 26,114,203, 53,183,119,243,217,103,142,154,250, 84,146,101,173,229,148, 98,136,222, 59,141, 8, 82, 50,177,243,174, +215,102, 71,219, 58,215,207,103,135,123, 59,119,173,109,108,159, 56,117,201,198,230,214,120, 60,214, 85, 32, 2, 33,114, 41,226, +109,241, 9, 64, 84, 1, 78, 46, 11,151,138,135, 35, 41, 95,137,161,164, 63,204,108, 17,209, 88,107,173, 3, 0, 99, 60, 2,106, +244, 82, 31,234,186,182, 91, 44,250,190,237,218,197,254,206, 93,100,171, 7, 92,122,197,177,227,219,227,201,180,178, 86, 51,119, +110,199,169,140, 16,192, 14, 71,151,180, 70,214, 62, 76, 78, 73,196, 76, 9,163, 4, 73,197,129, 52,195,165,196, 32, 66, 38,164, + 20, 53, 76,166, 20,201, 24, 66,146,188,101,190,239,251,174, 93,104,127,126,126,176,215,117,237,213, 15,189,230,248,137,147,147, +233,180,178, 21, 8,164,172,239,200, 13, 56, 31, 66, 6,249,170, 35,129, 34,219,128,225,136,231, 90,215,136, 8,179, 73,108, 12, +153,132, 49, 21, 24,174,209, 69,157,171,106,234,202, 86,170,126,208, 45,235,250,206,117,109,223,119,125,183, 56, 60,216, 57,243, +192,135, 61,224,244,165,107,235, 27,117, 93,131,150, 52, 25,178,197, 16,131,247,174,107, 23, 75, 90, 24, 1, 17,144,145, 17,115, +155,172,236, 35, 0,160, 49, 6,170, 90, 9, 24, 36,178, 85, 37, 44, 74, 23, 1,115, 74,177,239, 23,125,223, 26, 50,166,170,180, + 13,173,199,182,239,123,239,186,249,225,206,201, 75, 46,191,234, 33, 15, 31,143,199, 85, 93, 3, 64,226, 33, 41, 5, 31,130, 10, +168,103, 7,251, 10, 63, 36, 21, 31, 17,144, 82, 97, 73,105, 39,150,115, 77,104, 43,171, 29, 49, 53, 42,101,225, 23, 2,131,247, +110, 54, 59, 56,216,219,139,135, 94,247, 63,113, 74, 49,184,190, 95, 44,246,215, 55,182,159,240,164, 27,170,202,234, 11,199, 2, +245, 99,140, 33, 68,239, 92,223,182,237, 98,214,181, 51, 0,176, 23, 46,156,207,253, 94,144, 21,234,126, 72,228,234,188,146,139, + 28,197,252,152,217, 53, 85, 16, 81,169, 21, 19,154,206,167,197,252, 48,134,144,253, 45,198,181,141,173,173, 83,151,223,114,203, + 45, 49,134,196, 67,103,187, 28,145,210,123, 15,222,135,208, 3, 0,158, 61,123,118,111,111,111,127,127,255,254,214, 22,250,187, +125,136,200,177, 99,199,182,182,182, 44, 0, 28, 28, 28,220,118,219,109,255, 96,148, 79, 21,121,110,109,109,209, 63, 24,226,239, + 89, 59,241, 31, 12,244,247,236, 97, 63,243, 63,175,175,175, 63,235, 89,207,122,250, 51,158,113,213, 85, 87, 3, 64, 74, 81,117, + 87,179,217,225,141, 55,190,235,246,219,110,159, 76,166,211,181,233,100, 50, 61,182,117,236,138, 43,174,184,228, 1,151,104,230, +204,194, 22, 44,176,118, 41, 96, 93, 21,111,228,130,237,163, 31,249,200, 7, 62,240,129,247,188,231,221,159,252,228,205,247,187, + 72,116,246,236,217,155,111,190,249,214, 91,111,213,175,175,189,246,218,175,126,254,243,175,121,212, 23,157, 60,121,138, 65,184, +112,111,165, 24,207,244,151,214, 89,202,131,247,237,162,109, 23, 0, 88,143,198, 90, 28,170, 34,150, 10, 81,164, 31,112,137, 67, + 75,139, 73,217,100, 0, 21, 5,101,118,131, 83, 12,225,174,115,231, 62,252,161, 15,189,249,205,111,250,248, 39, 62,249,119,101, +154, 51,103,206, 60,240,129, 15,196,167, 62,245,169,125,223,127,201,151, 60,243, 57,207,123,158, 53, 54, 49, 67,233, 53,175,176, +123,188,252,192,204, 25,231, 13,136, 95,165,110,174,107,231, 41,166,170, 25, 53,205,200,168,153,136,140, 49, 75, 57, 79, 1, 43, +128,218,130,200,237,117, 37, 80, 6,222,175, 84,184,222,123, 31, 92,191,179,115,241,151,126,233,151,222,255,231, 31,208, 66,242, +111,217, 64,230,204,153, 51,207,121,238,243,190,252, 57,207, 85, 46, 83,123, 36,247, 16, 47,101, 49,152, 34,254, 92,200,230,247, + 89, 88, 15,237, 70,143,170,186, 65,144,174,155,171, 10, 76,189,100,224,210, 20,232, 13,198, 40, 47,137, 74,130,228,151,194, 50, +122, 64, 6, 13, 34, 98, 85,213,215, 62,230,218, 47,123,230,151, 62,229,201, 79,250,232, 71, 63, 54,155,205,254,118, 12,180,185, +185,121,236,216,177, 76,190,198,152, 6, 38,175, 88,103,104, 93, 12, 90,228,242,134,200, 16,138, 16,129,182,235, 9, 85, 36,152, +155,233,182,170,234, 38,165,212,181,115,230, 84,213,245,116,186,142, 68, 34, 68, 66, 68,152,152,181,161,204, 12,218,109, 43,234, +246, 82, 42, 3, 26, 35,198, 26, 74,198,144, 33,212,174,105,154,174,175,127,199,203, 94, 26, 66,124,247,187,223,253,250,223,126, +211,223, 94,144,142,105, 41,248, 95,129,146,131,243,148,230, 14, 34,136, 82, 11, 0, 8, 42,245, 96,212, 6, 21, 35, 25, 50,145, + 19,165,220, 4,101, 99,173, 30,201,217,108,198,209,219,186,110,234, 81,221, 52,100, 12,162,100, 78, 86, 8, 0, 76,254, 80,218, +241, 8,144,187,207, 34,201,198, 44,102,175,172,247,189,239, 57,197,235,174,123,226,245,215, 95,247,209,143,125,236,183, 94,247, +250,217,108,254, 55,110, 32,109,210,137,114, 79,159, 90,112,148,254,253, 10, 91, 38,160,155, 45, 2,153, 26, 68, 68,196,132, 58, + 60, 0, 49, 1, 68,201,209, 23, 44, 17,216, 10, 64, 66,140, 33, 6, 16, 64,132, 60,214, 57, 30, 3, 8, 33, 8, 11,131, 65,137, + 26,247, 84,215, 60,208,109, 0,168,172, 92, 12, 65, 21,211,198, 86, 15,121,208,131,191,255,123,191,231,240, 96,255,213, 63,251, +115,159, 58,231,122, 95, 26, 40, 11,129,177,136,214,239,241, 20,150, 35,186, 74,214, 25,138,161,138, 37, 16, 33,206,179, 40,128, + 0,105, 8,183,192, 40, 8, 56,180, 16, 16, 68, 15,151, 38,180,200,146, 22, 29, 32, 18,102, 58, 1,135,118,228,209,178, 8, 0, +172,181,227,201,180,110,154,201,100, 58, 59,220,219,223,219,177, 85, 13,136,235,155,199,126,232, 7, 94,209,117,221,207,191,230, +181,183,220,122,219,223,136,129, 72, 57, 15,193, 79,173,216,238, 97,175, 44, 53, 85,189, 67,142,183,152,197, 33, 34,196, 0, 4, +144,103,138, 4,137,129,151, 63,174,157, 79,196, 28,241,139,148, 36, 39,123,202,253,173,204, 14,229,201, 2, 25, 98, 57, 26, 91, + 25, 11, 32,245,120, 60,217, 56,182,117,250,242, 43,251,174, 61, 60,216,243,206,167,148,166,107,107, 47,123,217,191,115,125,255, +171,191,250, 63,222,255,129,191,184,175,129,226, 74,147, 66,253, 95, 35,142, 8,136, 50,108,156, 89, 87, 80, 65, 71,126, 59, 56, + 84,117,250,166,152, 0, 69,136,200, 48,137, 33, 98, 98,212,159,102, 89,118,185,192, 24, 88, 38, 49, 34, 67,102, 41,199, 41,155, +146,219, 99,153,209,144,149, 3,190, 52,217,120, 60, 57,190,125,178,124, 67,152,147,115,238,219, 94,250,109,139,249,226,191,254, +183, 95,252,240, 71, 62,146, 82,244, 62,220, 7, 6,194, 97,103, 97,233,225,185,137,200, 75, 82, 72,178, 88, 97, 9,143,151,241, + 9, 0, 8,136, 81,136, 72,128, 13,145, 16, 25, 67,194,204,132,200, 2,160,179, 4, 43, 71, 83, 27,141, 6,179,204,197,100,253, + 8, 29,225,126,178, 55,149,126, 70,201, 29,178, 66, 18,229,173, 50,214,214, 77,179,190,190,113,226,132,252,200,191,255, 97,145, + 60,242,210,247,125,187,152,125,232, 67, 31,121,221,235, 94,247,201,155,111,249,130,130,116,118,235, 12, 17, 21, 8,221, 99,199, +178, 70,136,142, 40,176, 6, 83, 50, 75,142, 85,152,117,231, 66,198, 24,129, 1, 58,164, 40, 72,176, 66, 50, 99,193, 80,218, 72, + 83, 87,162, 34, 10, 66,194, 37,181, 57,116, 55,153, 11, 22, 57, 2,215,242, 27,208, 79, 8,128,229, 7, 0, 5,176,170,155,117, + 99,159,240,196, 39, 62,250,218,199,112,138, 23, 47, 94,120,243,155,222,252,142,119,221,248,121,101, 49, 73, 41,102, 18,143,143, + 56,180, 34,223, 44,172,164,172,121, 93,201,198,195,234,147, 18,123, 74, 62, 34, 24, 18, 81,182,214, 8,136, 64, 4,200,251,191, + 34,171,203,253, 61, 99,138,149, 76, 1,220,116,100, 7,192, 12, 43, 82,254,117,104,142, 75, 33,241,185,232, 58,203,188,214, 17, +158,112, 24,213,138, 33, 52,205,248,217, 95,241,236, 47,123,230,151,190,235,198,119,253,222,219,254, 96,181,111,244, 25,178,216, +160, 51,205,138, 51, 69, 36,131, 69, 86,172, 99, 86,189, 71, 68,152,137, 57, 14,203, 5, 17, 85,106, 32, 17, 10,152, 18,111, 0, + 65,123, 92,197,121,178,132, 76, 49,115, 54,147,106,158, 74,219,166,156,158,252,155,176,104,163, 0, 69, 16, 36, 49, 18,229,129, + 60,157, 55, 21, 29, 41,205, 13,226,124,145,193, 82, 98,162, 74,156,224,189, 15,206, 57,239, 31,251,216,199, 94,243,168,127,244, +214,183,189,253,207,255,226,131,159, 53,139,105,188,144, 65, 81,153, 21, 92, 5,252, 15,140,239,112,242, 7,159, 31,122, 29,131, + 26,163,104, 50, 96,217,157, 48, 68, 66, 96, 44, 64, 28,124,112,120,104, 85, 65, 88, 36, 16,195, 32,102, 22, 30,107, 67,144,134, + 6, 51,228,127, 34, 80,145, 12, 0, 51,228, 85,164,196,203, 78,117,212, 38, 84,204,189,244, 16, 66,136,222,133,220, 10,116,222, +249, 24,195,211,110, 56,245, 9,220, 77, 0, 0, 11, 30, 73, 68, 65, 84,123,249,101,151,254,239,183,188,245, 51, 25,104,144,126, + 44,235,237,124,136,224,136,183,228, 8,174, 18, 73,157, 12, 74, 49,250, 16, 3,199, 50,144,178, 60,122,178, 2, 18,242, 16,141, + 30,150,226, 65,104,244,152,169, 16,145,150, 98, 68, 88,245, 29, 0, 68,100,102, 66, 82,128, 90, 52, 40, 42,173,225, 84,222,127, +204,122,229, 60, 14, 55,232,129,226,224, 62,249, 62, 21,175, 50, 47,253, 41, 17,185,250,234,171,190,225, 95,189,240, 23,126,241, + 87,238,221,131,140,169,235, 58,147, 53,184, 90, 69,230, 33, 50, 97, 30, 36,101,203,246,127,226, 48,236, 76, 8,138, 53,245,160, +232, 17,201,157, 17,109,125,194,178,217,165, 5, 41, 46,133, 51,165,186, 32,194,101,117,188,138, 78, 65,139, 28,144,101,192,206, + 94,146,155,201, 62,132,168,237,246,200, 75,133,212, 74,252, 89,106, 1,189,119,106, 44,157,248,210, 66,115,212,140,158,113,195, + 83,223,254,206, 63,188,151, 52,159,243, 60, 74,102,103,150,104,141,203,157, 70,136, 88, 90, 49, 32,144,163,226,176,120, 17, 86, +221, 71,140, 88,238,177,161, 85,217, 82, 25,142, 71, 90,234, 29,169,112, 68,148,249, 2,102, 25, 78,214, 17,128,177, 68,212,131, + 50, 35,150,160,171, 31,139,194, 34, 14, 82, 89, 53, 80,121,166, 14,157,170, 93,130, 78, 99,114, 74, 80, 2, 62,146,121,224,149, +103,214,215,166,179,249,226, 94, 24,197,172,123, 27,252, 87,241, 50, 18, 82, 25,255, 7, 36,200,170,187, 98, 25, 21,119,100, 40, +141,222, 7, 31, 67, 16,241,136, 67,182, 38, 56, 10,239, 12, 13,234,221, 50,127, 36, 44,140, 64,200,130,171,149,224, 61,230, 89, +178, 10,122, 41,132,137,131, 74,103,144,199,172,204,191,103,170,111,152, 54, 45,151,207,168, 6,143,243,200, 39,171, 59, 35,145, +153,174,173, 77,167,247,102, 32, 17,144, 36, 34, 40, 42,133,211,171, 6, 64, 20, 35, 3, 22, 75,231,231,114, 81, 89, 8,104,232, +168,180,117, 77,182,138,198,135,160,194, 3, 30,244, 40, 69,144,187, 18,151,145,164,104,202,114,179, 59, 21, 96,161,246, 63, 90, +229,228,115, 61, 88, 34, 79, 68,198, 65, 86,147,231,129, 53,199,171, 19,229,231, 71,181,137, 42, 68, 56,159, 10, 30,164,199, 26, + 15,141,177, 85, 93, 63,252, 33, 15,190,235,238,243,247,226, 65, 56, 4,229, 12,173,139,118, 1, 69,150,184, 49,139,178,116,108, +114,229, 13,168, 30, 89, 59,235,100,141,173, 26,221,188,124,151, 3, 51, 35,146,112,201, 95, 9,137, 16, 48, 18, 13, 82,145, 1, +112, 14,133, 24, 15,194, 27,201, 35,180, 71,252,169, 96, 31, 30,230,202, 83,254, 78,226,172, 6, 27, 98, 16, 23,139, 97, 62, 24, + 88,196, 86, 58,162, 98,201,218,186,170,191,232,209,215,188,243,143,222,253,105, 99, 16,145, 49,229,246,138, 35,194,201,229, 36, + 2, 44,205,164,243, 38,165, 52, 41,231,146, 7,108, 73,198, 34, 38, 84, 13,113,105,122,115,140, 73, 35,220,192,191, 14,226,234, + 12,228,117,144, 5, 84,180,207,203,209,245,101,249, 42,172,146,143, 66,223, 14,250,190,162,223, 20, 62, 34, 32,211,255,211, 32, +113, 82, 28, 75, 68, 74,243, 33,149,201, 1, 99,172,181,235, 27,155, 95,252,164, 39,252,241,123,254,239,167, 22,171,144,147,206, +106,173,152, 83, 70, 97,168,139,156,110, 69,162,179,180,223, 48,163, 52, 92, 60, 80, 70, 11,138,148, 46, 49, 75,145,133,173,156, +160,165,224,247,104, 19,158, 74, 93, 2, 71, 50, 89,230, 84,150, 40,146, 72,146, 32,162, 14,122,220, 99, 61,131,246,106, 73, 5, + 18, 33, 27, 50,108,152, 25,120, 25, 14,141, 33, 67, 22,235,199, 92,251,152, 15,125,248,163,251, 7,179,123,196, 32, 24,232,249, + 21,239, 1, 88,157,255,205,145,249,136, 52, 23, 4,100, 69,240, 59,196,197,101,126, 85,190,171,200,183,211,114, 51, 87, 75,124, + 37, 39, 53, 22,153, 1,179, 47,241, 42,226,138, 6,145, 86,113, 44, 2, 48, 97, 74, 9, 4, 24,121, 69,161,121,180,250, 24, 20, +196,160,196,142, 1, 11,200, 9, 10,250, 24,118,101, 60,158,124,241,147,174,251,189,183,189, 35,150, 6,129, 29,100,224,217, 95, +150, 27, 42,131,251,172, 6,205,165,119, 21, 53,211, 16, 41, 7,116, 63,148, 62, 25,227,167, 24, 67, 28,124,138, 75, 35,169, 8, +159,242, 12,188, 33,202,204,181, 49, 8, 96,136,132, 69, 59,155, 5,158,229,145,163,172, 94,213,113, 36, 22,196, 24,152,145,115, + 49, 88,234, 86,190, 71,140, 0,206,232, 94, 85,149, 69, 74, 15, 84,196,250, 42, 32,123,224,149, 87,254,179,103, 61,253,141,191, +243,182,149, 90,172, 44,125, 85,243, 34, 71,173,181, 44, 23,243,129, 7, 21,123, 22, 88,146, 82,138,249, 50,135,108, 30,253, 52, + 12, 0,100, 39, 90,221, 79, 89, 2, 72, 67, 0,156,161, 18,138, 72, 30,195, 66, 65,201,244, 37,194,114,183,243,156,164, 49,198, +152,148, 18,128,176,177,204,156, 48,201,234,226,151,199, 77, 68,152, 81,111,247,160,108, 72, 91,233,116,138,102, 36,221,101, 97, + 70, 50,151, 95,126,197, 23, 95,247,216, 79,220,122,215,210, 64, 49,134,162, 17, 26, 26, 62, 75, 15, 26,226, 17,172,254,190,156, + 49,242,117, 20,249, 0,149,218,112,152,135, 72,197,100,171,231, 43, 19,176,195,123,206,193, 87,131,157, 2, 9, 42,121, 6,134, +225, 39, 42, 77, 33,213,234,235,200, 95, 46,211,150,168,234,232, 99,165,184,215, 77, 97, 0, 18, 20, 68,202,243,131, 54,165, 16, + 99, 64, 64, 13,147,198, 16,218,209, 35, 30,241,136,206,151, 43, 16, 84,204, 52, 84,244, 57,176, 45,243, 70, 78, 91,171, 92,194, + 81, 74, 33,195,179,114,131,202,112,218, 18, 39,133,254, 69,127,155, 15,114, 9, 61, 58,210,119,164,127,130,121,116,109,217,133, + 53,134, 72,203, 54,181,205,112,171,138, 14,250,112,140, 90,168,136,172,132,207, 37, 15, 50,164, 52,205,188, 2,128, 76, 72,168, +243, 20,138,243, 76,138, 33,166,160, 44,148,206,203,174,173,111, 92,117,229,153,243, 59,251, 43, 6, 82, 15, 75,137,143,124, 74, + 57, 66, 41,242, 26,112,202, 17, 71, 42, 86, 43, 10,203, 21,217, 22,175, 56, 38, 15,105,123, 57, 66,133, 75, 18,174, 12,208,101, +230,204, 26, 75,102,153,101,140,177, 38,203,178,243, 95, 84, 86, 11,136, 82, 54,118,233, 55,194, 43,123, 21,143, 94,143, 66, 68, +148, 71,166, 98,130,162,163,101, 22,192,164,113,205, 88, 2,168,117,164, 97,121,196,242, 53, 82, 41,199,163,124,191,197,224, 11, + 5,140, 29,241, 93, 37,153,143,246,169,151,190, 87, 28,173,108, 44,172,180, 84, 33, 51,148,184,202, 57, 13,252, 98,246, 17,253, +156,207,148, 49,100,109,238,187, 26,210,246, 64, 76,161,228,202,196, 50,236, 75,202,240, 71, 49,162,170,115, 7, 69, 40,128,190, + 67, 40, 11, 82,250,174,170,154, 20, 2, 14, 83,169,150, 12, 45, 13,148,197,183,131, 12,125,232,184, 39,189, 79, 39, 67,174,229, + 81, 91,210,156, 75,175, 88,189,150, 72, 68,247, 8,100,213,247, 75,105,139, 90,144, 22,122,103,184,118, 71,135, 97,135,249, 74, + 53,146, 53,165,199,175,230, 83, 44, 44, 34, 90,113,168, 22, 94,195,224, 50,129, 22,138, 44,133,229, 13, 72,122,251, 87,214,237, +231, 81, 75,139,198,234, 30,136, 73, 30, 80, 36,225, 64,153, 27, 3,229,246,165, 84,110,203,225, 52,220, 44, 84,174,128,185, 71, +246, 89,118,168,203, 68, 23, 46, 11,220,149,192, 94, 0,225, 74,220, 95,161,211,112, 41, 77, 26,244,208,122,160,244,186,180,170, +170,213, 80,198,216, 66, 60,230,218,127,224,233, 66, 25,104,204, 53,125,222,204,200, 49, 19, 28, 41, 6, 61, 95, 74, 69,132,224, + 83, 12, 41, 49, 32, 88, 91, 25, 83, 83,249,117,100,140, 36, 18,128, 20,113,133,120,160, 35, 6,138, 49,106,161,183,164,157, 98, +138, 41,202, 50,184, 14,239, 29,202, 16,100,190,136, 77,212,227,181, 75,168,168,124, 25,125,151,232, 22, 80,111,154, 1, 4, 20, +100, 0, 83,176,141,100,199,206,215, 55,229,137, 15,141,196,122,250, 52, 25, 47,213, 55,229,126,134,124, 7, 87, 8, 41,198, 20, +226, 48,127, 25,243, 52, 6,139,128,222,242, 18,188, 23, 97, 50,182,105, 26,189, 93,162,214, 41, 80,107, 65, 32, 1,152,178,133, + 3, 34, 93, 26,200, 59,183,228, 3,202, 17, 27, 38,145, 87, 83,207, 48,131,144,235,126, 45,175,180,161,160, 99, 37, 74,183, 74, + 26,132,188, 67, 60, 2, 94,246,111,213,172,165,106, 88,225,122,151,244,107,102,221, 6,228,180, 82,207, 15, 15, 29,199,241,195, +200, 67,182, 78, 8,153,110,140,209,247,125,223, 45, 98,244,128,212, 52,227,166, 25, 53,163,241,104, 52,174,234,166,174, 43, 99, +173,142,183,169,227, 16,161,210,248, 3,124,207, 6,114,206,197, 20, 37,199,231,161, 44, 24,178,227, 10,135,190,236, 89, 97,161, +137,135,194, 62,159,180,149,129,175, 85, 24, 82, 26,249,185, 65, 68,218, 35, 18, 50, 71, 9, 32, 97,144,196, 12, 41, 13, 24,117, +249, 58, 3,130, 24,168, 84,101,134,188,143,101,112, 43,198,200, 41, 15, 73,170,254, 90,152,235,209,116, 58, 93,159, 76,215, 71, +227,113, 51, 26,213, 85, 99,171,202, 24, 67,136, 2,144,146,234,233,213, 46,156,119,118,105, 32,253, 5,105,200,244, 60,160,228, +130,102, 5,100, 40, 32, 11,131, 36, 67,138, 84, 74, 86, 86,240,125, 62,149,204, 75,116, 53,156, 81, 69,178,133, 94, 69,164,196, + 76, 67, 11, 32,196,168, 48, 61,175, 88,175,158, 40,175, 81,118,176, 16, 66, 33,150,251,155, 66,240, 62,134, 16, 83, 72, 49,122, +231,250,110, 62,159,237,251,174,165,170, 90,223,216,222,216,216, 26,175,173,143,199,227,186,174,171,186,214,144,143, 68,106,245, + 44,117, 2,224,210, 32, 24, 26,223, 67, 45, 22, 89, 3,141, 6,226,101, 91, 2,151,109,134,229,165,143, 80,176,217,167, 99, 36, + 82, 90,169,210, 50,222, 94,233,183, 9, 43, 15,143, 68,194, 75,223, 46, 0,128,153,217, 86, 75,100, 60,140,121,103, 98,168,196, +160, 50,101,149,133,241,193,151, 97,187, 16, 92,223,182,179,118,182, 31, 99, 24, 79, 55,143,109,159,218,216,220,154, 78,167,205, +104, 92,110, 2, 49,122,164,121, 37,110,148,179,190,236,216,100,209,196, 0, 98, 17, 81,115, 18, 34, 17, 49,144,145,225,135, 16, +148, 99, 94, 17,202, 13,119,194, 9,179, 16, 49, 51,174,228,124, 89, 14, 25,175, 16, 95,185,200, 24,230, 49,200, 24,162,104, 99, + 21, 35,167, 84, 37, 78, 41, 89,107,131,241, 67,147, 99,160,199,164, 76, 69,106, 8,136,229,254, 70,141, 56,106, 25,157,200,232, + 22, 7,109, 59, 35,164,173, 19,167,143,109, 63, 96, 99, 99,115, 60,153, 52, 77, 99,109,165, 45, 92,132, 50,179, 90,198,169,138, +203,200, 64, 75,100,210,186, 24,168,176,137,132, 36,134, 33, 81,185,183, 87, 64,168,152, 38,151, 60, 26, 20,244,198, 4, 34, 22, + 33, 22,102, 70,100,198, 36, 0, 38,243,219, 56, 68,217,193,159,148, 9,206, 45,110, 4, 42, 32,205, 91, 91,249,186,170,245, 70, + 16, 91,146,186, 89, 42, 42, 86, 39, 41,211,112,163, 97,177,139,146,246,222, 59,223,119,139, 3,215,187,201,218,250,169, 75,174, +216, 60,118,124, 50, 93, 27,141,199,117, 93,107,153,162,164,214,128,239,115, 28, 72,203, 38, 44,151,121,221, 16,124,136, 97, 73, +152,105,204, 20, 32, 29,188,213,168, 44, 32, 36,164, 54,210,217,199,124, 82,150,146,129,124, 75,109,230,247,133,136, 40,165, 92, + 6,198, 24,149,251, 99, 98, 76,148, 48, 25, 49, 60, 48,219, 43, 60, 65,202, 87, 38, 59, 85,124, 82,233, 71,107, 17, 34, 75,118, +142,121, 21,128, 68, 29, 34, 85, 12, 20, 92,183,104,219, 25,139, 92,118,229,131, 78, 93,114,217,120,178,214, 52, 77, 93,213,166, +178,164,251,170,231,119,217,240,224,161,121,198, 37,232,231, 81,123,239,189,235,156,235,151,132,153, 20, 37,226,192, 9, 65,209, + 73,161,138, 1, 80,128, 65, 86,254, 91,153, 60, 28,116, 67, 48,116,171,133,133,140, 45,248, 91, 61, 89, 27, 75, 43,116,215,242, + 4, 9,115,241,138,224, 67,231, 18, 39, 16, 89, 17, 16, 33, 64,185,126, 60,147, 7, 49,166,200, 57,215, 59,215, 45,124,112,199, +183, 79, 63,232,161,143,220, 60,190, 61, 92,132, 91,186, 50,122, 85, 20,175, 28,121, 53, 76,204, 29,128,252, 58,222, 7, 31,156, +243,174,119,125, 27, 92, 55, 4,233, 50,147, 92, 56,141,123,232, 21, 63,117, 22,102,184, 64,117,192,204, 71,199, 64, 8,141, 32, +161, 8,193, 82, 1,186,172, 42,238, 65, 12,210,138, 80, 68,209,139,235,251,182,157, 47,230,179,190, 91, 4,239, 56, 95, 6,149, +117,178, 44,185,169, 28,163,143,209, 35,226,246, 37,151, 95,245,160,135,159, 60,117,106, 60,158,232, 96,232,145, 98, 16, 64, 86, + 11,232,114,185,128,246, 20, 53,148,101,148,160, 87,106,120, 31,130,215,198, 28,158, 61,123,118, 64, 40,127, 71,115, 71,159,126, +210,230,190,121,161,191,222,203, 34,226,255, 7,169,229,123,123, 99,138,172,155, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/crease.png.c b/source/blender/editors/datafiles/crease.png.c new file mode 100644 index 00000000000..f785c005628 --- /dev/null +++ b/source/blender/editors/datafiles/crease.png.c @@ -0,0 +1,276 @@ +/* DataToC output of file <crease_png> */ + +int datatoc_crease_png_size= 8638; +char datatoc_crease_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, 1, 26, +253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, 11,252, 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, 0, + 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, 73, + 77, 69, 7,218, 7, 19, 0, 34, 11,191,157, 46, 32, 0, 0, 32, 0, 73, 68, 65, 84,120,218,237,124,123,176, 94, 85,149,231, 90, +251,156,239,251,238, 35, 9,185,201, 21, 18,146, 92, 8,175, 16,222, 33,128, 17, 67, 2, 9,208, 64,112,108, 64, 64, 48, 60,180, + 7, 31,211,182, 53,229,148, 35,106, 73,183,218,218,227,163,160,171,213,174,153,170,238, 46,103,108, 25,176,117,236,154,106,219, +105,167,102, 70,171,193,215, 48, 83,128, 53, 37, 53, 22, 56, 13,140,216,218, 36,185, 55,247,251,206, 57,123,239,181,214,252,177, +246,222,103,159,239, 94,148,240,176,113,202, 3,185,207,239,158,111,159,181,215,227,183,126,107,173,141,187,118,237,130, 95,120, + 61,159, 23,149,204,252,192,183,190, 35, 34, 76,236,201,143,134,195, 67, 7,159,189,229,150, 91,242, 23, 25, 0, 64, 44,136,197, + 58, 91, 85, 85, 85,141,172,117,159,250,196,199,199, 95,228,188,179, 77, 83, 85,117, 85,141,154,198, 90,107,157,247,239,122,199, + 29,221, 23, 57,103,109,227,156,245,206,123,239, 70,195,197,127,248,135,159,253,147, 55,220,244,149,175,124,229, 51,127,116,119, +124,145,109,156,115,222,123, 34,242,206,253,253, 79,126,124,253, 77,183,162, 41,122,253,193,204,218,117,127,120,247, 39, 13, 0, +120,231,136, 8, 68,136,104,126,254,208, 13,111,186,157,153, 1, 13, 11,120, 34, 98, 49, 0,224,137,152,200, 57,119,232,192,179, +175,190,240, 34,242,158,136,132,217, 57,231,172,117,206,151, 0, 80, 87,213,225,133,133,133,133,249,157,187, 46, 70, 99,156,243, +222,251,166,105,154,186,174,170,202, 90, 87, 2, 64,175,223, 91,191, 97,195,153,231,108, 19, 0,219, 52, 68,100,235,166,170,134, +163,225,176,174,107,231,108, 9, 0,211,211, 43, 7, 19, 19,214, 90, 34, 34, 34,103,109, 93,143, 22, 15, 47,142, 70,195,166,169, +157,181,248,188,246,238,249, 92,248,237,239,124,151,152,137, 89, 88,154,166, 89,152, 63,244,236,207,254,254,237,239,248,103,221, +109, 49,165, 0,122, 79, 85, 85, 87,163, 81,211, 52,206,211,239,125,240, 3, 29, 45, 32, 34,103, 93, 83,215,182,105,170,186,178, +141,245,222, 75,247,237,140,179,182,105, 26,235,156,117,142, 60, 89,219,204, 31, 58,184,247,242, 43,255,250,107,255,233, 11,127, +254,121,125, 81,113,243,155,246, 91,107,189,183,222, 59,239,220,252,161,131,151, 93,177,143, 89,156,119, 34,112,233,222, 61, 43, + 38,251,198,121, 71,228,137,136,153,155,198,254,248,233, 39, 89, 68, 0, 16, 13, 51, 51,241,214,211, 78, 55,204,172, 50,172, 70, +213,211, 79,254,159, 27,111,121,139,119,164, 63,180,214, 54,214, 18,113,217,212,245,226,225,133,133,133,133,209,112,120,245, 53, +215,121,231,136,188,181,182,174,171,186,170,109,211,120,239, 75, 99,204,202,149,171,230,142,223, 60, 61,189,162,169, 27,242,228, +188,171, 70,195,209,112, 52, 26, 13, 27,219, 56,231,202,193,196, 68,175,215, 47,138,178,170, 42,239, 61,145,111,234,122, 56, 92, + 92, 92, 92,172,235,218, 54,214, 57, 7, 47,213,222,149,249, 55,123,246,236,121,239,123,239, 28, 12, 38, 4,132,153,137,188,115, +206,217,230,221,239,126,247, 19, 79,252,232, 23,219,239,183,190,243, 16, 8, 51, 48, 19,176, 48, 51, 9,139,243,236, 61, 57,235, +235,218,126,240,174,223,173,134,195,225,226,194,251, 62,240, 65,239,253,115,175, 8,129, 89,136,216, 19, 17,121,239, 61,121, 79, +222, 91,103,189,247,174,177,206, 58, 34, 2, 52, 31,252,192,251,230, 15,252,244,238, 79,255,155,165, 55,138, 38,238, 92, 99,173, +109,154,166,174,109, 93, 55, 77,221, 52,141,179,206, 89,215,216,166,170,235,209,104,184,184,120,120,126,254,208, 81, 51,179,159, +252,248,199,214,172,153, 89,102, 69,206, 90, 79, 94,151, 66,222, 17, 17, 49,145, 39, 98,242,222,217,166, 94, 92, 56,180, 48,127, +232,154,235,111,114,206, 53,117,237,156,253,220,191,253,188,109,154,170, 26,141, 22, 15,223,115,207, 61,143,253,239, 31,150,186, + 34,125,162,160, 85, 76,204,204,204,222,249,166,174, 15, 60,251,236,197,123, 47,155,156,156,246,228, 17,141, 41, 74, 36, 66, 67, +128, 8,104,176, 40,222,246,182,183, 45, 30,158, 47, 1,192,147,103, 10,127, 44, 2,194,194, 68,214, 54,135, 15, 31,254,233, 79, +158,185,246,250, 55, 10, 64,248,189,136, 90, 16,179,120, 79,206, 57,231,188,250,165, 18, 0,188,243,222, 91,103,131, 27,178, 77, + 51, 26, 46, 46,204,207,159,191,227,194, 11,119,238, 38, 10, 55, 9, 79,236,157,181,182,169,235,166,169,109,211, 52, 77,163, 30, + 70,111,164, 38,233,137,120,208, 31,172, 95,119,236,218,217,217,162, 48,196, 98,109,163,235, 96,102,242, 94, 61,111, 93,215,213, +104, 84,215, 85, 93, 87,186, 39,222,251, 18, 0, 6, 19, 19,131,137,201,178, 44,250,253, 65,127, 48, 48,133, 33,102,107, 29, 11, +199,187,144,250,108,103,109,221,212, 77,173, 31, 42, 93,148, 62, 75, 9, 0,166, 44, 12, 22, 69, 97, 4,192, 90, 11, 0, 34,204, + 44, 18,158, 40, 56,117,235,172,179,214, 54,182,105,106,107,195, 71,231,156,174,243,165,243,147, 47,201, 53, 55, 55,103, 94,170, +123,181,214,191,113,227,198,223,121,215,187,118,236,216, 1, 65,107,200, 89,231,189,123,232,161,239,125,232, 67, 31,249,197, 17, +224,190,251,238,223, 52, 55, 39, 0, 34, 0, 32, 34,144, 54,219, 58,219,212, 77, 83, 87,163,209,240,217,159,253,228, 61,239,125, +255,207,123,180,205, 39,158,132, 69,129,198, 32, 32, 51, 50,179,247,228,189,119,222,107, 48,116,222, 51,115,127, 48,249,251, 31, +190,235,231,172,200, 0, 34,128, 17, 65, 6, 97, 86,255,161,161,214,122,231,188,119, 76,228,189, 23, 17, 99,202,223,186,253,230, +231,148,145, 8,112,208, 23, 86,111,164, 6,236,189,143,134, 68,204, 44, 0,128,184,110,253,134,231, 92, 81,144, 72,250,235,246, +114, 68,196,172,183, 38,242,158, 60,145,231, 59,110,189, 97,249, 27,169, 41,198,143,158,201,135, 32, 22,162, 18,249, 16,122,234, +209,104,180,184,184,184,115,207,111,220,122,235,254,101,118,237,155, 15,124,219, 57, 23,125,172, 58,166,112, 83,239,189,122,175, +197,195, 11, 7, 15, 30,216,123,217, 21,189,126,223, 59,215,212,117, 93,143, 70,139,135,111,123,243,111,181,187,150,214, 66,228, + 53,112,234, 63, 22, 97, 22, 98,182, 77,115,248,240,194,117, 55,220,188, 98,213, 81,136, 6, 0, 76, 81,148,189,193,196,212,244, +159,253,233,159,124,246,211,247,132, 71, 75,142,134,136,153,136, 85,145,132,133,213,232, 93, 85,141, 78, 63,107, 27,154, 2, 1, +209, 24, 64, 3,168, 87, 81,148, 37, 96,249,241, 63,248,136,136, 24,166,136, 72,152, 68,152,133, 89,132, 69, 68,152,136,154,186, + 62,120,224,192,150, 83,183,130,134,123, 64, 68, 3,128, 0,192, 34,204, 0, 0, 34,120,201,238,139, 12,197,187, 0, 8, 11,160, + 4,237,246,158,154,166, 89, 88, 56,116,211, 45,111,102, 1, 22, 9,110, 22,245,143,129,152, 73,130,102, 32,162, 17,125,144,248, + 50,125, 48, 79,212, 52,245,225,249, 67, 69, 81, 2,162,168,179, 14,239, 1, 34,162,210,224, 76,203,140,222,166,213, 72, 34,239, + 92, 53, 26,205, 31, 58,120,224,192,179, 87, 94,253,122,197,149, 28, 99, 67,124,109,186, 66,200, 40, 85, 23, 3,254,244,214, 54, +174,174,171,195, 11,243,195,197,197, 27,110,218, 31,221,164,222, 69,109,153,244, 95, 52, 3, 98,102, 0, 41,137, 72, 93,186,250, +208,166,105,108,211, 76, 77, 77, 95,113,213, 62, 6, 96, 79, 44, 76, 76,194, 18,212,219, 59,189,124,128,214,158,136, 68,164, 20, + 17, 0, 65,192,162, 40,166,166,166,214,174,157, 93,127,236,134,137,137, 1, 51,122,213, 44, 97, 81,100,224,157,174, 60,126,178, +228, 83, 60,149, 18, 17,203,162, 44, 38, 11, 83, 20, 83,147,211, 43, 86,174,236,245,122, 44, 66,228,146, 88,152,245, 46,222,218, +198, 89,167,200, 74, 49, 89, 16,182,112, 89, 20,133, 49, 6,209,244,251,253,254, 96, 0, 8, 26,187,219,187, 80,176, 56,103,173, + 6, 80,231,172, 62, 95,146,185,136,148,104, 10, 3, 96, 10, 99,140, 1, 1,242, 36, 2, 34, 44, 65,186, 28,227,171,110,135,109, + 26,235,157,243, 46, 72, 71,157,178,176,148, 6, 16, 16, 0, 80, 4,136, 9, 24, 68,194, 38, 11,115,176, 67,231,124, 8,213,141, +115,154,255, 56,197, 81,193,182, 68,224, 21, 21,215, 54,109,218,100,224,149,116,169, 71,120,101, 93,109,188, 94,177, 98,197,103, + 62,251,217,205,155, 79, 48, 6,213, 71, 2, 34, 8, 32, 0,171, 11, 18, 17, 0,102, 22,144, 20, 47, 20, 72,123,239,172,109,108, + 93,223,127,255,125,127,243,159,255,203,139, 90, 16, 51,127,231,123, 15, 5, 39, 7,160, 97, 16,132, 17, 64, 20,113, 2,130,122, +181, 8, 9, 98, 48, 37,239,188, 6, 61,231, 61,145, 8,154,107,174,189,110,223,213, 87,219,186,250,189, 15,127,116,113, 56,124, +129, 18, 66, 52,136,128, 2, 12, 12, 8, 34, 32,128,193, 72, 4, 88, 72,162,249,231,171,225, 36, 34,239, 67,164, 39, 34, 98, 17, + 17, 52,119,222,249,158,166, 26,126,228, 99,159, 60,210, 5,181, 58, 20,156, 58,131,218,124,112, 26,106,150,193, 33, 70,183, 24, +160,167,186,199,176,172,144, 41, 8,139, 0,162, 49,166, 40,123,131,247,191,247, 95,108, 62,110,211, 17, 47, 72, 67, 33, 37,199, + 67, 62,130,225,176,168, 4, 76,226,255,222,147,139,222,204, 51, 49,197, 56,173,145, 53, 70,106, 4, 48,175,127,221,190,215, 92, +176,237,200, 22,164, 34, 81,208, 16,119,130, 56,166, 91, 9, 49, 17, 41, 52, 10, 0, 33, 97, 32,239, 93, 10, 43, 62,178, 58,138, +232,235,166,110,154,250,164,205,115,235,143,153, 61, 2, 29,138, 16,132,163, 87,101, 97, 98, 17, 69, 54, 73,123,146,211, 21,144, +152,201,133,199,112,206,105, 72,112,214, 90,107,155,170,106,108,179,234,168,163, 46,191,226, 42, 37,185,110,190,253,237,154, 4, + 9,249,251,190,248,197,175,126,245,107,206,185,231, 94, 80,140, 1, 89,100,103, 25,251, 34, 68,123,201,175, 16, 18,188,247,206, + 69, 30,105,104,176,120,221,181,215, 3, 72,212, 45, 22, 17, 64, 83,148,189,137, 73, 67,222,223,124,243,254, 27,174,191,193, 90, +235,109,243,195, 31,254,240,227,159,186,251,185, 22, 68, 9, 95,104, 60, 35, 34,145,152,145, 50,131,162,103,209, 40, 21, 96,161, + 39,239,156,109,108, 51, 28, 46, 46, 30, 94,184,254,166, 91,202,178, 84,204,136, 6,208, 8,178, 8, 10,162, 65, 44,140, 1, 41, +160, 8,160, 9, 1,240,196,147, 79,249,204,167,255,208,217,230,145, 71, 30,249,220,191,187, 23, 0,138,185,185,185, 93,187, 47, +225, 86, 66, 29, 0,164,114,201,193, 85, 0,149,204, 68,236,189,183,182, 81,232,227,156,123,227,254, 55,131, 41, 20,195,113,120, + 61,132,255,130, 15, 9,127, 78, 42,221,240, 46, 76,196,107,102,102,118,237,188,112, 56, 26,150, 0,144,173, 32,124,134, 40,132, +112,131,236,182,208, 38, 7,174,105,234,106, 56, 92,152, 63,180,122,102,205,158,203,175, 96, 17,228, 16,230, 65, 98,112, 2, 4, +196,128, 54,213,128,132, 33,224, 35, 97,145,224,186, 4, 0,113,253,186,245, 37, 0, 72, 80, 77, 17,137,224, 67, 4,132, 49,190, + 16, 32,253, 88,151, 66,214, 54,202, 44, 46,204, 31,188, 96,199,107,143, 63,225,164, 4,199, 69,128, 35, 62,143,127, 31, 87, 19, +124,189,120,138,232,200,123,245, 20, 28,215, 84,106, 54, 30,111,128, 81,111, 57,221, 46, 71, 52, 1,205,216,102, 84, 13,135,135, + 23, 71,195,225, 27,247,223,134,104,244, 14,113, 61,105,103,226, 13, 90,160,220, 66,223,100,218,196, 17,230,137,128,136,110, 89, +216,209,104,225,212,218,150, 36, 10, 68,151, 98,171,106, 84,141, 70, 77, 83,239,222,115,217,209,199, 28, 35,130, 65,174, 44,196, +220,221,107, 17, 14, 25, 73, 22,139,131, 63, 11,105, 31, 17,249,248, 10,102,137, 86,150,129,109, 74, 95, 82,250,121, 12, 25,150, + 60, 1,200,238, 61,151,174, 58,234, 40, 4, 16, 6, 17, 98, 17,150, 96,131,154,119,196, 84,138, 2, 1,146,185,122,189,185,243, +142, 60,169,223,143,206, 33,152, 81, 80,234,200,152,198, 85, 4, 47,192, 32, 82, 20, 69,175, 44, 87,173, 94,125,204, 49,235,142, + 62,250,104, 68, 99, 12,106,118,164,158,162,189,178,173,226,140, 77, 35, 69,174, 33, 48, 58,175,161, 80,189,191, 39, 34, 31,128, +114, 90,144,218,131, 49,136, 88, 24, 52, 69, 89,192, 0, 10, 83,148,189,114, 98, 98,114, 98, 98, 98, 48,152, 40,123,165, 9,116, +128,120,226,108, 83,130, 69,165, 60, 73, 68, 84, 50,204, 45, 96,114, 41, 76, 59, 27, 2, 81,136,137,196,121,216, 98, 46, 1,192, +152,162, 44, 1,160, 4, 17, 68, 52, 69, 97,140,233,245,122,101,217, 43,123,189,162, 40,208, 24, 17, 32, 17, 17,223, 46,165,149, + 11, 72,164,169, 36,229,210,233, 10, 81, 57,172, 74,213,199, 57, 71,222, 39,205,138,209,147,130,132,138,162, 80, 68,132,136,198, + 24, 93, 80, 81, 20, 69, 81,232,163,227,216, 10, 0,152, 89, 33,100, 22, 70, 82, 4,140,230,163, 91,226, 35, 63,171, 68,130, 11, +236,133,254, 66, 21, 40,154, 91,220, 50,205,128,208,160, 1,131,138,214, 0, 68,132,152, 80, 16, 12, 74,124,251,184, 8, 22,105, +151, 19,227, 93,174,200, 1,150,248, 60, 61, 13, 59, 20,100,148,168,151,232, 1,130,214,150,136,248,224,131,127, 27,244, 8, 16, + 17,131,131,133,228, 93, 21,204, 6,111,221, 46, 44,174, 78, 63,235,126,129,162, 93,110, 63,228, 30, 36,248,163,150,199, 76,233, +185,194, 10, 94, 92, 28,190,194,248, 70,205,205, 94, 57,139,217,181,107,151, 9,187,243,138,185, 94,113,137,226,175, 23,116, 68, +133, 47,189, 86,175, 94,189,113,227,198, 75,246,236, 57,111,251,246,205, 39,156,192,204,170,103,234,245, 34,166, 33, 34, 22, 38, +239,221,226,226,225,127,127,239,125,255,237, 27,223, 24,190,160, 84,117,156,111,152,155,155,123,242,201, 39, 1,224,214, 91,111, +189,227,173,111,101, 22,131,200, 29,247, 19,192,149, 32,128, 64, 0, 42,204,209,203,106, 61,196, 58,219,212,245,232,109,111,255, +237, 23,105,101,229,190,125,251,110,188,233,166,126,111, 64,204,136, 96, 16, 16, 1, 89,153, 6, 6, 65, 4, 96, 96, 0, 68, 0, + 22, 6, 65,133,204,209,227, 73,192, 28,104,140, 41,255,248, 51,127,244,245,175,127,253, 47,255,227, 95,189,112, 29,218,184,105, +110, 48,152, 0,196,162, 48,136, 70, 41, 91, 84, 6, 4, 13, 96,130,235,146,177,150,156,130, 79, 98, 7,149,173, 16,192, 93,187, +118,189,229,182,253, 47, 82,169, 13, 32, 10, 24, 68, 4,196,192, 52,164, 28, 59,198, 78, 69, 10, 41,103, 34,110,211, 72,133,184, + 65, 88,136,167,108,217,114,227, 27,174,121,161, 11, 66,221, 36, 37,131, 0,179,164,137, 33,172, 39,214, 28, 3,162, 76,240,133, +210,174, 41,120,229, 4,235,205,233,167,159,177,243,194, 11, 94,168,132, 68, 80, 48, 75,163, 68,178, 92,153, 2, 42,230, 40,151, + 22,169, 75, 74,231, 68,152, 36,149, 49, 85,163, 46,185,120,247, 96,208,127, 33, 11, 18, 68,129, 0, 40, 56,112, 65, 90, 34,144, +140,238, 38,102, 10, 75, 32, 34, 9,178, 10,175, 20, 86,188,171, 54,137,104,180, 2,241,207,223,249,246, 35, 95,144, 22,205, 4, + 67,118, 23,245,183,205, 64, 98,214,156,148,153,133, 69, 19, 19, 74,249,165, 72, 94,131,128, 80,212, 16,129, 29,231,159,251, 2, +182, 12, 82,221,133, 59,171, 97,205, 44,219,165,168,250, 16, 39,133, 86,196, 19,228, 41, 16,133, 11,113,101,120,254,246,179,143, +108, 65,145, 74, 8,201, 99, 39,185, 31,175, 53,113, 44,215,132, 61, 74, 82,108, 95, 41,113, 99,133, 98,165,211,239, 56,239,172, + 35,219,178,140, 65,200,101,211,190,107, 91,114,226,136, 13,187,104, 58,114, 6, 33,163, 83,134,205, 89,167,253, 42,199,111, 90, +127, 4,177,172, 77,194,211,106,226,163, 75, 78, 66,180,136,115,140, 34,210,181,112, 68,236, 94,171, 24,182,110,172,173,133,121, +199,206,221,236,221,218, 99, 79,124,248,225,135, 31,124,240, 91,207, 35,184,198,140,179,229, 62, 34, 87,150, 86, 25,127,210, 73, + 9, 91,199, 19,189, 67, 40,208,219,166,169,106, 17, 62,231,188, 11, 54,111, 62, 65,179,176, 13,115, 39,236,221,187,247,119,222, +249,219,243,135, 14,126,232,195, 31,253,241, 51,207,252,156, 34,110,198, 12, 48, 67,150,255,229, 41, 24,164,196, 20,218,111, 56, + 83, 35, 34,114,206, 91, 91,215, 85,181, 97,195,166,243,119,188, 38,241,114, 34,128,198, 20, 69,217,235, 79, 28, 53,179,246, 19, +159,248, 87, 77, 93,127,225, 11,247,254,215,111,124,115,249, 98,240,114, 10, 36, 73,108,146, 68,147, 75, 8, 58, 26,164,233,191, +109,234,166,170,206,223,113,225,107,118,238, 2,229,207,160,229,137, 76, 81,152,162, 40,203, 94,217, 27,244, 7, 19,251,111,217, +255,175,255,248,211,219,207,221,182,156,149,113,178,247,164,188,109, 24,139,218,157,210,158,214, 73,196, 24,167,105,160,173,235, +234,236,237, 23,108, 62,225,164, 88,154, 69, 72, 81, 9, 67,228, 54, 69, 97, 76, 81,148,101, 81,148, 69,175,255,150, 55,223,254, + 7, 31,253,208, 18, 43,107,181,149, 5,100,233,165,174,138,133, 51,138, 61,176, 83,186, 91,206,217,186, 26,173,219,176,233,212, +173,167,169, 56, 2,106,192, 80, 68,139,159, 48, 57,113, 52,198,160, 49, 69, 49, 57, 57,125,247, 39, 63,182,116,203, 50,155,206, +210,191,160, 48, 42,250,200,236, 65,210,117, 14,194,105,154,198, 89,187,235,226, 61,162, 85,154, 84,108,138, 43, 72,121, 40,164, +229, 97,145,100,198,130, 31,251,200, 93,250,142,109, 33, 56, 55,126,201, 72,181, 44, 67,205,232, 75, 9, 44, 7,121,111,109, 83, +141,134, 87,190,254, 90,132, 78, 70, 21, 68, 3, 49, 9,238, 48,123, 90, 83,137,191, 0, 68, 44,238,122,255,123, 84,135, 64, 18, +243,149,171,171,114,159,105, 9, 32, 49,208,133,239, 67, 21,219,218,186,174, 86,174, 58,106,245,234,153, 36,193, 32, 36,133, 87, +152,150,135,113, 49, 16,111, 31,158, 85,127,110,138, 66, 99, 89, 32, 52, 33,227,156, 98,177, 76, 31, 5, 37,162,164,204,182, 66, +163, 83,211, 52,163,197,225, 85,175,187, 6, 4,219, 93,141,245,251, 32, 33,108, 87, 19,165, 29,241, 31, 75, 90,165, 6, 86,147, + 59,234,140, 57,149, 68,238, 50, 48, 2,230,194, 73, 45, 83, 77, 93,143,134,139,103,158,115, 46, 24, 20,225,148, 15, 36,142, 66, +239,145,111,101,122, 47,206,116, 35,145,200,173, 82,199,189,234,250, 62,125,188,196, 79, 67,146, 13, 57,165,204,171,145,247,254, +236,115,183, 99, 64,154,208,241, 86, 81,147,179,149,180, 28, 87, 40, 25, 36, 3,137,187, 93, 6, 45,131, 86,123, 16, 37,254, 0, + 64, 36,214,244, 68,219, 9,180, 1,180,174,235,170,170, 70,163,209, 53,111,120,163, 50,194, 32,208, 65, 68,137,182,129,246,121, + 83, 89,128,133,146,243, 72,130, 80, 49,149,146,101, 94, 57,189, 45,233,158,146, 50, 13,239,180,243,184,105,234,106, 84, 13,135, +167,158,126,230, 96,114, 34, 3,118,144, 91, 5,100,218,145, 12, 35,145, 70, 36,169,206,212,218,118, 43,161, 84, 69,232,216, 63, +100,101,141,232,111, 66,163,221,226,226,202, 85,171,206,217,118,174,146,105, 16, 95, 14,203,249,213, 78, 80,202,124,112, 90, 75, + 96,254, 99,180, 31,131, 53, 89,121, 44, 0, 47, 74, 61, 31, 77, 93, 85,163, 81, 85, 85,166, 44, 47,191,234,106, 81, 13,209,142, + 20,200, 35,176,164, 98, 68, 44, 28,228,245, 90,238, 22,121, 24,146,242,106,180,143,191, 84,166,146,242,228,203, 71, 26,223, 90, +107,155,186,169,107,107,237,212,212,244, 21,251,174, 78,174, 92,223, 45, 49,195, 73,181,219,199,215,124, 50,131,114,109,181, 73, + 24,160, 19, 30,202, 16, 9, 82,147,135, 79,237, 82,148, 90,203, 83,225, 87, 68,102,143, 62,122,247,238, 75, 40,186,180,229, 89, +226, 92,230,109, 22, 71, 73,230, 33,111, 32,202, 54,142, 19, 64,147, 54, 1, 35,146, 78,127, 80,184, 0,196, 24, 51,152,152, 56, +238,248,205, 39,158,124,114, 40,229,235,106, 98,129, 15, 98,188, 75,217,211,120,141, 50,207, 93,136,218,141,137, 74,164,107, 42, +115,252,165,205,170,137,142, 45,138, 2, 17,203,178, 44,138,114,229,202, 85,155,230,230, 38, 39, 38, 64, 64, 16, 68, 64, 55, 33, +112,214,201, 87,229,218, 27, 31, 50, 86,124,162,236,179,228, 51, 67,233,156, 89, 89,198, 9, 35, 22, 69, 1,198, 96, 9, 37, 34, +150,189,222,228,228,228,170, 85,171,167,166,167, 10, 83,136, 54,125,101,214,194, 93,168,148,173, 39, 75,187,227,122,210,111, 36, +214,237,186, 59,206,237,130,148,195, 7, 0,131, 70,160, 48,104, 76, 97,250,253,137,201,201,137,137,201,201,158, 22, 24,208,164, + 90,214, 56, 90,234,172,134,132,133,219,188,219,135,242, 74,236,136,111, 51,167, 49,252,174,142, 81,151,194, 0, 70,215,132,136, +136,101, 81,244,250,253, 94,175,223, 31, 12,202,178, 52,104, 32,134,104, 9,157,202, 17,217,118, 49, 73,108,179,139,213,130, 88, +127,247,177,200,207,109, 79,224, 88,254, 18,244,186, 84,166, 9, 17,149, 34,195, 80,229, 40,203, 94,217, 43,123,133, 41, 16, 81, +130,105,114, 23, 44,113,114,199, 44,157, 36,147, 58, 5,134,208,123,144,138, 50, 18,147,184, 49,170, 63,232, 16, 34,232,102, 1, +136,214, 94,140, 41,138,178, 40,203,158, 49, 5, 96, 52, 28,173,126,130, 38,241,250, 19, 65, 68,117,107, 89, 2, 78,169,220,225, +189,231, 80, 51,243,173,111, 11,149,180,142, 7,206, 16, 23,148, 17,141, 7,202,194,152, 66,113, 56, 34, 38,236, 12, 8, 75, 4, +220, 13, 47, 89, 13, 81, 98,157,140,219,142,153,152, 16,197,134, 84, 78, 44, 75,150,123,114,178, 50, 69,190,128, 96,194,238,161, +154, 18, 24,147,252,213, 82,253,205,205, 60, 75,242, 37,172, 35,224,237,214,234,169,109,138,236,176, 7,121,170, 19,116, 72,205, + 71,243,149,208, 86, 37,194, 0,168,132,112,162, 88, 98, 52, 15,124, 89,196, 71,237,106,242, 98, 25,121, 31,140, 43,197,161,176, +178, 60, 67,239, 60, 89,148,144, 54,157,162, 6, 74, 4, 1, 65, 1, 81, 53,207, 97, 72, 11, 70, 2,246,137,132,137, 36,215, 18, +140, 57, 73, 38,244,240,196,229, 80, 96,155, 2, 69,218,250, 32,206, 22,244,228,147, 79,194, 3, 15, 64, 94, 39,139,217, 84,196, +122, 25, 92, 74,160, 11,198,154, 40,198,176,134,180,221, 52,156, 37,220,233,235,236, 5, 45, 95,193, 12, 0,184,107,215,174,131, + 7, 15, 30, 58,116,232,149, 86, 22,250,199,189, 68,100,245,234,213, 51, 51, 51, 37, 0,204,207,207, 63,245,212, 83,191, 22,202, +210, 38,207,153,153, 25,243,107, 65,252,138, 85,239,126, 45,160, 95,177,171,124,145,127,223,239,247, 55,110,220,120,210, 73, 39, +189,234, 85,175,154,158,158, 94,179,102,205,236,236,236,236,171,102, 87,174, 88, 57, 24,244,203,178,215,118,100,164,174, 50,102, +107,109, 85, 85, 79, 60,254,248,211,255,247,233,103,158,249,201,119,191,251,221,159,254,244,103,191,122, 2,154,158,158, 62,119, +251,246,173,167,158,186,101,203,150, 53,107,214,172,158, 89,115,212,170, 85,101,175,215, 97,126, 88,150, 13,127,109,199, 74, 74, + 27, 67,149,148,153,165,236, 13, 38, 39,167, 87,175, 94,115,206,185,219,133,249,246,219,223, 2,129,153,241,213,104,244,212, 83, + 79,125,255,251,223,255,171,175,126,173,170,170, 87,132,128,152,121,237,236,236,220,220,220,171, 95,253,234, 75, 47,189,244,152, + 99,214, 21, 69,161, 80, 1,209,180, 4, 77,124,116,108,121,240,192,189, 33,132, 94,249,216,238, 40, 0,168,141, 90, 2, 28,193, +139,194, 39,148,172, 77, 83, 57, 37, 64, 96, 2, 34, 97,193, 94,127,112,220,113,155, 55,108,220,116,217,101,151,131,240, 19, 63, +250,209, 95,124,233,203,143, 63,254,196, 63, 90, 44,219,185,115,231,149, 87, 94,181,247,210,203, 82, 50,147, 24,102,142,221,153, +204, 58, 30, 16,149, 2, 17, 19,213, 6,130,145, 89,139,194, 17, 64,140, 77,253, 49,193,134,140,122,162, 48,123, 74,177, 45, 58, +245, 40, 83,219,101,149, 58, 5,181, 71,204, 63,250,232,163,127,126,239,253,207, 53,255,251,114, 92,115,115,115,199, 31,127,188, +137,140, 58, 2,160, 65,205,160, 35,200, 71, 29, 25, 16,237, 36, 12,210, 66,131,208, 82,125, 58,114,147,100, 23,180,131, 98,225, +113,172,185, 52,212,176,219,110,246, 44,241,136, 85, 92, 78, 85,232,152, 84, 24, 3,130,167,157,118,250, 71, 63,252,187,239,124, +199, 29,147,147, 19,191,252, 40, 22, 42, 17, 49,249,193,212, 83, 32, 32, 40, 38, 90, 84, 48,166,118,178, 67,116,230, 91,136, 37, +146, 46,156, 77, 14,143,181, 39, 82, 70, 61,105, 82, 79, 73,136,145, 99,226,110, 81, 35,230, 89,136,104, 80, 0,215,173, 63,246, +125,255,242,221,151, 95,122,201, 47,215, 73,107,201,131,163,117, 41,219,160, 9,162, 32, 35, 3,163,104, 89, 33, 99, 50, 17, 80, +217,178, 80,142,232,122,228, 84, 33, 73,125,151,129, 67, 16,161,192, 1,164,174,118,201, 91, 7,243, 33,132,160,151, 33, 7, 51, +128,108,140, 17, 46, 95,179, 99,199,246,109,103,221,247,197,175,252,232,239,158,252,229,225,160, 72,216, 99,232,134, 9,126, 70, + 64, 71,131, 58, 73,101, 74,255, 36,159,205,203, 88,195,150,137,138, 41,117,219,193, 34, 45,169, 23,186, 37, 2, 33, 20,211,198, +196, 11,115, 42,207, 5, 55,128,202,131, 24, 83,148,253,137,155,110,188,238,202,203,247,252,146,194,124,244,176,173,156, 66,201, + 40,122,151, 54,151, 31, 99, 62,218,248,157,243, 32,161,170, 19, 72,199,164, 29, 16,198, 6, 18,185,192, 99,205, 8, 44, 97,104, +128,133, 57,104,113, 12,129,169, 0,105, 0, 89, 71, 49,206, 60,227,140, 77, 27,215,127,254,222, 47, 87,117,253,114,106,144, 64, +151,207,133,216,221, 2,146,166,177,163,219, 96,145, 14,163, 67, 25,109,215,165, 48, 83,155, 74,250,149,132,145, 84,157, 79,109, + 11,240,173,175, 14,149, 7,210,141,226,220, 91,103, 29, 11, 41,155, 4,192,233,233, 85,111,186,241,218,169,151,205,115,155, 84, +171, 12, 96, 23,114, 62,140, 59, 42,145, 21, 43,242, 50, 69, 91,178,143,210,144,246, 97, 89,114, 27,204, 98, 61,136,228,229,157, +150, 91,138, 93, 20,121, 25, 36,109, 9,100,195, 55, 74,212, 51,115,191,223,219,127,227,111,246,122,229,203,167, 65, 99,228,146, +180,143,190,204, 46,231,205,130,196,227,244, 96, 59,228,211,109, 15,227,246,177,226,251, 68, 6,153, 83,231,190,144, 48, 73, 62, +248,145,134,219,245, 59,223,206, 26, 18,121, 98,239,136, 66, 45,232,154,125,123,203,178,120,249,124, 80,222, 41,144, 55,192, 64, +172, 78, 67, 44,135,132,122,223,210, 82, 97, 59,194, 51,254, 85, 40,242,182, 41, 7,100,157, 63,169, 63,139, 34, 90, 24, 3, 11, +173,231, 39,142, 67, 55,249,248,131,174,191, 87,154, 45, 39, 29,255,191, 30,123,252,165, 23, 80, 2, 29,144, 22,158,149, 7,150, +169,153, 66, 56, 55,128, 99,175, 91, 43,196,177, 63, 81,212,148,245, 18,228, 37, 97,233,118, 4, 5,132,153, 43, 76,170, 70,180, + 35, 24, 97,232, 1, 1,103,214,206,110,221,122,250,218,217,181,104,140,118, 80,222,194,236,188,243, 90,120,173,171,167,159,122, +250, 75, 95,254, 15,143, 60,242,232, 75, 32,160,229,202,146,227,227, 61,241, 97,151, 87,156,172, 26,174,165,125,110, 41, 98, 16, +232,116, 37, 44, 41, 70, 72,236,248,139, 39,115, 36, 43,210, 67,122,156,119, 76,222,123, 94,177, 98,197, 9, 39,157,188,113,211, +220,228,196, 4,133, 57, 20,101,196,131,251, 54,113,242,177,215,159, 56,117,235,170, 59,239, 60, 89,149,115, 52, 26,253,224,177, + 31, 60,244,208,255,120,240, 91,223, 38,226, 35, 55, 49,142, 72,164,211,190,197,153,105, 64, 28,141,140, 86, 2, 17, 11,142,205, +189, 64,219, 68, 32, 89,163, 75,183, 3, 41, 5,245,232,245,242, 58,115, 24,158,245,206, 91, 61,107,167,223,239,157,114,202,153, +167,108,221, 90, 20, 70,229, 73, 97, 89,144, 53, 77, 64,108,219, 2, 99, 16, 16, 13, 25,131,133,150,191,167, 87, 20,231,158,187, +253,172, 51,207,190,253,182,219, 68,228,192,129,103,239,187,255, 47,126,240,216, 99,163, 81,245,252, 52,168, 27,176, 58, 6, 22, +129, 50,116,154,153, 24, 0, 56,252, 10,194,199,100, 60, 8, 28, 17,204,248,172, 78,222, 80,147,151, 23,212,191,112,156,168,114, +214, 89,235,189,237,245, 6,231,239,184,112,227,166, 77,138, 96,153, 25, 81, 0, 89, 75, 29, 25,144,132,188,129, 11, 12, 24, 41, + 24,192,132, 57,124,131,136, 72, 6,177,208, 77,152,153, 89,251,214, 59,254, 41, 51, 9,211,195, 15, 63,242,167,159,251, 60, 17, +253, 2, 31, 20,167,231, 51,221,145,113, 51,137,253, 85, 93,229, 8,169,127,236,171, 0, 1,134,212,109,210,241, 63,185,137,133, +210,126, 42,155,235,137, 24,169, 11,179,241,222,159,118,198,153,103,158,181, 13, 77, 24,191,132,216,154, 37,136,136, 40, 98, 16, + 5,209,132,253,209, 18, 17,100,237, 91,104, 64, 85,138,217, 24, 16, 0,131, 32, 80, 6,204,105, 12,120,207,128,103,158,117,246, + 61,159, 58,163,174,171,111,254,237, 3, 95,253,235,191, 89, 78, 64,208,182,191, 64,215,181, 4,255,155,199,163,220,211, 72,222, +230,147, 59,161,108,234,172,213,160,113,245, 1,142,105, 8,233,177, 68, 78, 15, 62,113,182,153,156, 94,113,209,197,123, 87,175, + 94, 29,186,239, 67, 42,136, 25,158, 86, 57, 24, 68,150, 32, 26, 12,111, 21,186,246, 33, 73, 84,115, 4,131,134, 64, 84,166,104, + 10, 20, 65, 99,144, 11, 99,132, 68,250,253,193,197,187,119,239,190,104,231, 35,143, 62,250,197, 47,253,165,115, 46,239, 19, 10, +193, 43,153, 91, 59,112, 12,153,107,137,154, 16, 11,174,201, 51, 98,234,200,144,148,166, 4, 30, 13, 66, 81,178,197,160,169, 53, + 82, 98, 61, 49, 12,168, 90,107,155,186,170,235,234,216, 13,155,118,239,185,204, 24,148,152, 24, 6, 50, 1,218,118,177,216,146, +135, 16, 69, 37,161,167, 77, 64, 80, 37,138, 8, 97, 10, 70,201,137,144,246,182,124, 95,168,112, 11, 2, 27, 53, 67, 6, 56,109, +235,105,119,125,224,148,239,253,247,135, 30,250,159,143, 38, 19,227,214,102,100,108,194, 59, 83,143, 40,130,152,188,118, 21,165, + 75, 57,114,120,162,196, 69,119, 3,151, 48,229,167,224, 88,219, 52,117,221,212,174,105,206,217,126,193,233,103,156,149, 49, 77, +157,246,190,172, 91, 52, 74, 8, 49,172,168,109,219, 84, 66,130, 59,127,154,215, 96,219, 59,167,174,128,182,153, 19,141, 1, 54, +219,183,109, 91, 51,179,246,137,191,123,170,140, 33,166,157, 93,239, 0, 61,233, 84,230,153, 25, 59, 57, 44,130,112,104,140, 73, +243,147, 81, 46, 29, 78, 58,245,151,197, 99,217,130, 55,182, 78,135,153,234,122,228,173,187,224,181, 23,157,124,242, 22, 78,141, + 63,241,137, 18,181,146,201, 9, 1,131,130,161,206,228, 32, 46, 33,135, 59,157,124, 29, 96, 55,110,242,173, 57, 72,180, 83, 25, + 67,210,208,117, 61,208, 29,164,213, 47, 48,211, 34,148,200,202, 10, 48,102,205,174,217,160,233,210, 58,121,130,124,222,121,157, +244, 82, 80,103,208,236,251,205,235, 86,175,158,225,104,242,136, 97,136, 22, 0,186, 86,191,124,129, 0,130, 54,117,127, 33,157, + 32,196, 89, 59,226, 50,157,216,146,111, 65,176,220,178, 19,158, 51, 68,215,198,167, 40,193,216,229, 25,230,150, 90,134,164,181, + 44, 12,248,176,155,138,164, 83,152, 56, 29, 21, 18,237,170,105,234,166,174, 87,174, 90,117,201,165,191, 49, 53, 53,197, 0, 24, + 35,150,238, 66, 7, 46,116, 84, 67,198, 98, 60, 2,114,110, 80,157,237,129, 28,229, 69,220, 39,221,134,169,132,249,195,211,100, + 26, 36,237,219,117,176, 93,167,175, 3,152,117,135, 36,113,210,200,113,147, 56, 51,177,204,141,165,132, 55, 27, 30,111, 3,121, +211,212,182,174, 79, 60,101,203,142, 11, 47,146,232,236, 89,229, 2,220,157,116,206, 78, 45,107, 91,160, 91,209,128, 78, 2, 38, + 71,153,137, 40,159,181,151,252, 48,140,246, 55, 48,214, 15, 29, 29, 46, 38, 19,107,241, 74,132,164, 2, 29,144, 42, 58,125,151, +157,174,150,253,209, 50, 6,213, 33,140,226, 9, 59, 62,157,249,216,212,181,181,141, 41,138,139, 47,189,252,216, 13, 27, 89,195, + 56,115, 42, 19,128,192,210,174,186,164,236,249, 68, 64,103, 90, 34, 71, 17,217,135,241,105,240, 68, 90,118,217, 5, 30, 75, 35, + 83,195,116,103, 60, 52, 27,133,200,195, 19,179, 72,135, 58,138,223, 69,172,147,119, 11,101,173,161,225,252, 14, 82, 4,168,193, +220, 90,103,155,141,115,199,189,246,162,221,198, 20,234,212, 89, 24, 17,227,137, 10,201,120, 36, 15, 65,227,177,179,213, 20,232, +136,165,237,250,225,238, 8, 83, 54, 76,148,248,186,177, 41,149,113, 61,138, 38,150, 24,207,165, 13,207, 93,100,216, 57,120,160, + 61, 15, 5, 88,251,177,169,229,164,211, 9, 17, 46, 28, 70,231,244, 4, 57, 63, 53, 61,125,241,222,203,214,206,206, 98, 40, 34, +182,174, 63, 79,224, 58,146,234, 0,250,165,125,110,156,207, 69,229,131, 85,220,161,244,178,246,197,120,186, 11,119,127,152,208, +176,140,167, 26,193, 36,199, 49, 75,135, 75,140,183, 4,233,164,111,233, 52,134, 48,156,152, 6,201, 2, 95, 19, 78,135, 16,230, +193,228,196,121, 23,237, 62,246,216, 99,195,185, 36,129, 5,111,217,149,180, 91,136,109,160,200,246, 9, 96,108,176, 36,155,153, +234,178,116,113,170,182,211,138, 76, 75, 94,148, 53, 36,135, 3,194,210, 1,140,177,109,114,140, 47,203, 94,157, 83,235,217,124, +162,116, 25,156,156, 52, 76,237,128,241, 0, 69,229,192, 68,100,229,170,149,219,206,219, 49,187,118, 77,200,218,196, 8,182,216, +188,157,156,128,212,109, 44,169, 79, 52, 2,101,201, 39, 89,198, 70, 4,184, 61,254,167,109,151,164, 88, 86,137, 45,139,138,221, +117,244, 64,194, 81,129, 93, 82, 56,119, 94,210, 77, 86,187,175,203,107, 84,162, 92,123, 70,189, 10, 47,223,142,201, 68, 20,162, + 41,234,232,120, 89,172,157, 61,102,203,214,173, 43, 87,172, 12,240, 0, 99, 78,194, 89, 65, 36,139, 88,220,197,166,144,250,241, +151,233, 62, 36, 25, 63, 13, 46,202, 70, 66, 19,103, 58,102, 36,157, 1, 20,186,255, 91,233,196, 9,220, 49,181,224,142, 6, 65, + 62, 31, 33, 93, 2, 89,132,128, 59,118,222,126, 25, 39,160,140, 49,128, 80, 20, 69,175, 7,104,176, 87,246,166, 86,172, 88,183, +110,253,218,217, 89,108, 65, 27,182, 29, 12, 75,130, 84, 14, 41, 82, 32,235,224,195,124,174,173, 37,207, 57, 52,165,135,137, 7, +202,123,250,147, 98,231,236, 45,197,249,233,206, 96, 68,231,220, 29, 14, 81, 39,215, 32,200, 59, 71, 51, 56, 12, 24,186, 25,194, +217,177, 70, 16, 81,140, 20, 82,168, 70, 24, 3,198, 20,225, 84,188,193, 96,106,122,122,106,106,106, 98, 48,208, 51,110, 64, 4, +208, 8,102,160, 32, 59,227,166,253,168,167,142, 9,234, 16, 86, 64,243,152,199,111,150,206,252,108,219,160,154,205,130, 36, 39, +216, 25,114, 79, 61, 17,209, 17,229,243,230,156,171, 76,244,166,249, 12,254, 88,127, 16,134,158, 21, 0, 3,192,166, 48, 97,250, +212,100,105, 17,166,115,113, 11, 83, 20,189,178,236,245,251,253, 94,191,236,247,202, 50, 30,107, 26, 7, 33, 81,101,147,151, 17, +151,232, 75, 68,170, 1,233,197,246,152,206, 84, 95,167, 53, 63, 97,188,236,168,212,118, 78, 59, 54, 62, 43,119, 43,109,245, 69, +141,171,115, 62, 66,183, 95, 63,213, 34, 56, 27,253,203,230, 35, 2,207,100, 76,145,104,193, 12,224,107, 71, 67, 24,241, 52,166, + 40,139,162, 40,139,162, 44,203,178, 40,139,194, 20,166, 48, 6, 13, 26,132, 56,132,185,180, 80,210,201,167,150,228, 86,157, 19, +126,199,102,190, 58,147,154,227,241,129,219, 49,136,142, 55,140, 37, 40, 10,131, 71, 28,142,176,212,163,101,115, 95,194,220,157, +233,230, 78, 39,121,171, 20,169,203, 94, 98, 7, 80,160,151, 16, 16,208, 20,133, 78, 14,171, 56,116,138,194,232, 57,184, 38, 28, + 50,161,153, 19, 3, 0, 80,242,110, 29,152,135,154,244,162, 30,239, 6, 2,193,178, 98, 96,151,108,251, 98,213,164, 99, 90,227, + 97, 84, 3,101,178,172,204,239,100, 17,150, 82, 20,203,146, 85, 78, 39,196,117,142,153,227, 22, 84,119, 4, 20,135, 54, 0,226, + 23,237, 24,179,158,105,102,208, 24, 85,148,162, 48, 70, 71, 59,116, 68,149,227,172,168,166, 83,121, 53, 95,198,226, 84, 6, 3, +187,179,137,178, 12, 53, 25,216,187,206,161,114,157, 80, 27, 14, 47,163, 28,139,181,126, 90, 72, 40,117,205,183,101, 80, 72, 38, +198,203, 64,153,246, 40,131,204,196,162, 10, 64, 59,148, 0,237, 80,137,142,149,160,126,105,176,208,137, 14,108,143,164,205,216, +160,113,130,126,201,127, 89, 76,232,204, 91,102,146, 89, 26,208,187,216, 39,216, 72, 26, 48,146,110, 9,151,121, 25, 20,146,220, +121, 50,199, 76,226,157,230,128,238,209, 5, 65,131, 32,204,179, 72, 56,144, 69,226,196,126,233, 42, 0, 0, 1, 47, 73, 68, 65, + 84,240, 50, 66, 26,116,209, 99,203, 77, 28,213, 69, 22, 70,198,100, 26, 99, 97,176,227,131,211, 99, 35, 66, 0,204,129, 17, 8, +244, 91, 42,166,117,218, 61, 37,153,231, 88,251, 94, 14,130,194, 17, 39, 89,129, 59,248,233,204,250,114, 49,181,125, 3,237,237, +184,155,242,103, 46, 51,105,144,170, 15, 98, 71,129,162,154, 32,166,137,234,182, 13,145,219, 65,228,238,136,195,216, 23,249, 92, + 14,104,128,207,138, 32,188,132,206, 15,119,111, 45, 43, 39, 42, 36, 15, 64,122,126,249, 50, 25, 41,141, 31,192,154,131,236,116, +214, 68, 54, 28,218, 30,213,210,157,137,202,163,152, 50,235,122,114,142, 65, 3,113, 16, 9,116, 2, 72,249, 43,140, 40,185, 53, +192,101,132, 35,161, 71, 13,198, 7,133,198,212, 41,171,122,200,242,197,126, 25,247, 62, 36, 75,210,156, 37, 14, 91,146,250,100, + 58,215, 25, 19,150,110, 3, 75,118,138, 74,219,222, 19,142,219,105, 91,240, 12,104,188,146, 84, 49, 81,235,202,186,113,178,166, +205, 56, 18, 24, 90,210, 52,108,101,109,176, 99,206, 37,235, 37,135,238, 33,173,169,127,111,153,254,171,188, 49,150,219,105,233, + 36,135,244,216,148, 60,110, 27,184, 41,235, 38,149,101,204,103,156, 67,130,118,134, 50,197, 49, 77, 19,118,237,218,149, 39, 62, +255, 63, 76,233,140,171,246,139, 26,248,249,127,255,206,139,124, 90,242,130,113, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/draw.png.c b/source/blender/editors/datafiles/draw.png.c new file mode 100644 index 00000000000..f87c5fc18c7 --- /dev/null +++ b/source/blender/editors/datafiles/draw.png.c @@ -0,0 +1,361 @@ +/* DataToC output of file <draw_png> */ + +int datatoc_draw_png_size= 11349; +char datatoc_draw_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 96, 0, + 0, 0, 96, 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, 11,252, 97, 5, 0, 0, 0, 6, + 98, 75, 71, 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, + 40,155,120, 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, 19, 1, 10, 6,157,179,150, 0, 0, 0, 32, 0, 73, 68, 65, 84,120,218, +237,125,123,188,229, 87, 85,223, 90,107,239,253,123,156,115,238,185,247,206,157,201, 76, 50,201,100,242, 32,145,144,132,164, 36, + 20,101, 8,150,106,228,163, 86, 63, 40,213, 63, 90, 21,173,181, 86, 84, 84, 42, 69,139, 4, 16,141,248, 4, 65,173,173,162,104, + 1,181, 22, 84,108,245,211,250,128, 42,124, 16, 42, 16, 2, 24, 18,242, 32,153,100,158,247,113, 94,191,215,222,123,173,254,177, +247,239,119,126,231, 78,128, 20,241,211,248,249,120, 38, 51,115,239,220,115,207,221,103,237,245,252,174,239, 90,193,219,110,187, + 13, 62,231,227,137, 60, 73, 3,192, 79,253,244, 79, 63,251,196,115,189,247,222,251,170, 42,235,186,210,218,252,214, 91,223,242, +155,255,229,109,225, 73,120,226,196,137,159,123,195, 27,103,243,197,163, 39, 31,153, 78,246,156,181, 2,112,205, 23, 93,167, 8, + 31,249,244, 3,223,254,237,255, 26, 0, 8, 0,172,115,103,207,156, 46, 22,139, 99,199,175,184,238,250, 27,159,114,205, 83,183, + 14,108, 86, 85,117,238,204,169, 55,254,252,235,227,143, 67,162, 75, 47, 59,118,241,197, 71,157,115,198, 96,146, 36, 15,127,250, +211,119,223,245,161,217,222,238,250,198,214,107,238,120,133, 6, 0,239, 61,179, 79,210, 36,205,178, 71, 30,126,232,209,147,143, + 60,252,224, 3, 59,219,103,111,123,222,237,197, 98,174, 76,162, 1,192, 57,199,158, 21,249, 83,167, 30,126,255,123,255,119, 49, +159, 63,229,169,215,221,244,140, 91,155,186, 98,102, 17,208, 0,224, 26,203,194,139,217, 84,107,115,197, 21,199,143, 92,114, 89, + 85,215, 77,221, 88,231,157,243,222,123, 29, 14,206,222, 63,122,242,225,181,245,205,195,151, 28,115,206,149,139,153, 8, 58,103, +157,179,206, 58, 13, 0, 77, 93,123,239,183, 14, 29,254,216, 93, 31,202, 7,195,245,205,205,196,164,101, 49, 43, 22, 11,107, 93, + 93,215, 26, 0,234,186, 10,146,188,226,234,107,103,147,189,123,238,190,235,224, 69, 71, 70,227,117, 97, 46, 22,243,166,174,240, + 9,221,221, 19,121, 32, 0,188,239,253, 31, 0, 16,239,125, 85,219,170, 44, 64,100,111,251,220, 55,125,203,183, 44,159,244,193, + 15,221,213, 84,229,249,237,237,179,103, 78,151,101,233,189,223,218, 58,120,252,170,171, 63,240,222, 63, 87, 68,223,255,210,151, +197,187,219,155, 76,207,157, 57,155, 15, 6,215, 93,127,195, 83,175,187,254,248,149, 87,105, 68, 1, 26,173,109,220,249,218, 59, + 0, 64,123,246, 27,155,155,107,227,117,239, 29, 34,102,105,186, 88, 44, 30,124,224,254,191,185,251, 35, 95,252,156,231, 37,217, + 8, 0,240,189,127,245, 65,239,152,217, 15,178,116, 50,157, 61,242,240, 67, 39, 31,121,228,145, 7, 63,117,237,211,110, 92, 27, +143,231,179,201,249, 51,167,180,179,158,217,103, 89, 90, 84,245,199,238,254,200, 61, 31,191,123, 52, 26, 63,247,203,158,111,173, +173,202,130,153,145,148,118,206,178,247,103,247,118,117,154, 30, 60,120,209, 45,183, 62,115,180,190,105,155,198, 57,231,188,115, +206, 51,179,182,214,178,119,128,120,250,228,201,209,120,156,101,105, 89, 22,139,217, 76,144,172,117,206, 90,231,156,110,234,218, +179,103,239,157,115,247,124,252,163, 27,155, 91,195,209, 72, 39,233,238,249,211, 2,166,177, 77, 83,215, 58, 92, 28, 51, 15,134, +195,203,142, 95,117,223,223,124,156,133, 15, 30, 58,172,211,225,206,153,147,141,199,166,169,225, 11,117,119,122,223,231,119,220, +241,170, 47,191,253,118,231, 28, 51,123,239,189,119,206, 90,239,253, 31,253,143, 63,252,143,191,252,159, 63,155, 14,156, 56,113, +226,103, 95,255, 6, 65, 18, 97, 97, 97,150,162, 40,202,178,168,202,210, 54,141,181,141,247, 94, 68, 6,195,225,230,230,150, 82, +234,177, 71, 31, 18,231,191,231, 37,223, 55,159,207,247,159, 8, 81, 33,194,246,246,222, 98,177,152, 78, 39,243,217,212, 59, 7, + 0, 74,107,163,141, 78, 12, 17, 13,242,193,120,125, 61, 73, 18,165,213, 61, 31,251,232,155,222,248,198,170,170, 22,243,201, 75, +127,240,229,203, 23, 18, 16,102, 24, 12, 7,164,212,250,198, 70, 98, 18, 1,241,222,139,247, 94, 88, 88,134,163, 33, 33, 88,107, +183,207,157, 61,125,234,177,135, 30,124,224,220,233,135,159,253, 79,158,159,229,163,159,250,201,159,120,239, 95,188,231,247,222, +245, 71, 26, 0,156,103, 96, 38, 82,121,158,139,176,103,175, 72,229,169, 70, 61,104,234,102, 49,159,159, 57,117,106, 54,155,237, +238,236,156, 63,119,250,220,153, 83,229, 98,254, 37, 95,250,101, 34, 2,136, 74,233, 91,158,249,172,107,175,121,138, 6, 0,239, +188, 8,139, 8, 51, 43,165, 82,163,149, 78, 39,123,187,103,207, 62,120,254,220,185,189,157,157,249,108, 82,150,101, 93,149,131, +225,232,166, 91,158, 53, 28, 14,157,115,214, 90, 14,158, 4, 80,153, 52,188,144, 19, 16,102, 22, 17,103,107,167,140,231,114, 50, +217,219,221,222,190,255,147,159, 24,140,198,215,221,240,244,193,112, 40, 44,241, 30, 93,112, 7,206,123,102,207,204, 2,193, 47, + 89,103,227,203,136, 20,243, 89, 85,149, 89, 62, 80, 90, 95,114,233,101,135,143, 28,177,182,177, 77, 93, 21,115,165,147,248, 50, + 46,168,133,115,206,122,231,188,119, 46,248,174,166,174, 69, 68,132, 89, 68,105,237, 61, 63,248,169,123, 77,146,102,249, 32, 73, + 18,109,180, 78,114, 16,118,206, 85,101, 81, 21, 51,210, 41,179, 56,231,156,117,141,181,182,105,172,181,225,133, 42, 22, 1, 17, + 47, 34,204, 38, 73, 46,185,236,242, 98,177,120,232,129,251, 22,179,105,146,102,195,209, 90, 62, 24,102, 89,166,180, 54,233,176, +174,171, 98,182,199, 64, 44,208, 84, 85, 93,215, 77, 19,125, 96, 45, 65,218, 65,224,204, 44,130,136,151, 95,121,117,208,238,186, +170, 30, 61,249,176,176,207,135,163, 60, 27,104, 99,116, 58,172,202,249,100,251, 44,153, 65, 93, 87, 85, 89,124,225,252,228, 23, +228,113,236,216, 49,250, 66,189,214,138,245, 95,125,245,213,191,254,150,183, 56,231, 69,196, 51,179, 15,122,103,109, 93,191,228, +251,190,255,209, 71, 31,253, 28, 17, 0, 0,222,255,129, 15,136, 96, 16,183,247, 30, 16,157, 13,138,210,120,231, 4, 64,107, 93, + 87,229,108,178,243, 45, 47,250,182,199,125,107,248,193,191,254,144, 0, 10, 3,128, 32, 81, 85, 86,243,197,172, 42,203,186,174, +108, 99,157,115,158,189, 34,218,220, 58, 56, 26,141,202, 69,177,183,115,166,170,202,239,248, 55,223,181, 95, 70, 68, 26,129,128, +176,177,205,246,249,243,167, 79, 63,118,230,212,169,179,103, 78,111,159, 63,191,183,187, 51,157,236,205,103,179,162, 40,216,179, +214,102,188,177,169,147, 60, 73, 7,191,244, 11,111,218,119, 40, 2, 68, 1, 41,230,211,189,189,189,221,221,157,157,157,237,233, +116, 82,149, 37, 51, 43,173, 7,163,209,250,250,198,120,188,190,177,177, 49, 24, 12,210, 52, 73,210,244,158,143,127,212,164,233, + 27,127,254,245,121,150, 45,133, 45, 34,136,192, 44,206, 90,219, 52, 8, 48, 26,141,214, 55, 54,215,214,198, 74, 41,102, 14,118, + 57, 30,175, 49, 75, 81, 44, 22,179, 89, 89, 22,136,202,152,228,181,175,125,245,191,251,193,151,139, 72,120, 33, 96,150, 44, 31, + 0,210,112, 52, 74,146,140, 16, 61,123, 97, 14, 78,214,152, 36,207, 76,211, 52, 69, 81,156, 63,119,238,212,169, 71,103,211,137, +181, 13, 18, 42,101,126,244,213,175,124,197, 43, 95, 13, 0, 36,194,204, 66,132, 89,150, 15, 6, 3, 34,228, 96, 45, 0,249, 96, + 48, 24, 36,105,154,148,181,221,222,222,126,236,177,199, 30, 61,249,240,233,199, 30,173,171, 2, 4, 68,136,136,180, 54,255,254, +165,223, 27,223,154, 8,179,128,176, 23,129,240, 42,195,225, 0,132,189,151,178,225,249,124,123,177,152, 79, 39,147,157,243,231, +206,156, 57,181,123,238,204,145, 75,142,155, 36,177,206, 10, 0,146, 74,243,129,181, 86, 51, 11,179, 0,136, 8,136, 48, 8, 12, +243,140,148, 46,138,114,178,183, 51,157,236, 77,167,211,233,100, 50,157,236,237,110,159, 47, 22,179,141, 3,135,158,118,227,205, + 44, 12, 34, 0,136, 0,136,234, 75,111,123,182,102,225,224,137,130,143, 28, 13,135, 0, 80,150,229,246,249,179,231,206,158,217, + 62,127,126, 58,217, 43, 22,243,170, 42,133,249,248, 85,215, 92,113,229,213,158, 89, 60,251, 86, 2,136,136,168,116,240,149, 34, + 44,194, 72,170, 88,204, 77,154,205,103,179,157,237,237,199, 78,158, 60,119,246,148,119,206, 36,233,145, 75, 46, 61,118,249, 21, +105,154,122,239,227, 15,246, 16, 44, 65, 0, 0, 65, 11, 51,179, 15,175,148, 40, 44,235,138, 1,157,119, 74, 41, 68, 97,230,107, +158,122,253,197,151, 28, 69, 66,239,124,124,149, 40, 14,110,253,179,196,244, 39, 92,179,136, 52, 34,197, 98,225, 60, 3, 64, 62, + 24, 28, 61,122,236,192,230,230,145,163,151,249,168, 76, 62,132,113,238,180,139,133, 89, 98, 82, 26,190, 16,205,213,185,197,108, +102,173, 51, 73, 98,146,100,253,192,129,209,120,173, 44, 22,204, 94,105,227,189, 48,115,120,157,222, 75, 51, 51,131,136,102,246, +236,195,197,139, 48, 51,200,206,246,249,193,104,148, 36,169, 82, 74,105,147,145,178,182,177,117, 85,150,133,210, 9,139,120,239, +185, 59,151,247,236,153, 69,116, 72, 60,162,183, 22, 25,173,173,239,108,111, 47, 22,243,124, 48, 76,211, 76,107,173,180, 66, 64, +101,146, 68,164,152, 79,189,103, 84,166, 31,222,130,224,122,111, 45, 30,137, 15, 95,124,244,161,251,239,155,236,237, 38,105,150, +231,131, 44,207,141, 73,148, 82, 34,104,210,220, 45,102,197,108,199, 36, 3,142, 81,210,133, 87,208,206,121,102, 47, 2,194, 30, + 0,152, 25, 0, 46, 59,126,229,153, 83,143, 61,250,200,167, 17, 49,203, 7,163,181,181,124, 48, 52,198, 16,162, 54,153,106,236, +124,114, 94, 39,163,246, 80, 78, 88,180,119,182, 59, 17,183,167, 18,230,173,131,135,198,235, 27, 59,219,231, 31, 59,249, 80, 89, +204,135,163,181,193,112,148,166, 25, 18, 41,109,148,206,102,147,115,202, 12,156,179,161, 20,233,223, 90,212, 76,246,225, 78, 89, + 68,214, 55, 54,134,195,235,207,159, 63, 59,221,221,105,234,122, 56, 90, 75,210, 20,145,148, 73,148, 50, 85, 49,103, 1,219, 52, +204, 30,158, 84,113,237,178,203, 46, 35,120, 50, 61, 16, 81, 63,241,103,223,124,243,205,151, 95,126,249, 21, 87, 92,145,229, 25, + 33, 89,219,204,231,243,251,239,191,255,161,135, 30,250,228, 39,239,253, 59,137,215,225,113,237,181,215,254,202,155,223,140, 64, + 49, 6, 11, 8,136,176, 4, 93,109,157,134, 0,128, 72, 72,135, 25, 98,124,103,102,231,156,173,203,162,174,235, 23,127,247,247, +204,231,139,207,243, 64,175,122,245,107,190,242,171,190, 74, 36,158,128, 1, 48,166, 93, 30,137, 68,192, 1,123,107,157,115,206, +123,246,209, 42,130, 71,145,112, 74, 16, 68,212, 58,201,178, 52,203,215, 0,224,109,111,255,157,221,157,115, 32, 34,194,111,125, +235, 91,255,215,159,252,217, 19,186,181, 19, 39, 78,188,254,231,223, 36,241, 44, 40, 33,146,176, 7, 84, 77, 83, 91,219,212, 85, + 93,215,149,181,214,197, 3, 57,246,225, 87,116,169, 33,244, 0, 34, 41, 53, 28,142,214,214,214,178, 60, 79,146,148,136,188,119, +139,217,236,177,147,159, 30,173,173,133, 32,126,223,125,159,252,233,159,125,195,103,201,213, 34,208, 32,158, 1, 81, 0,234, 98, +225, 28, 91,231,154,166,169,235,170,105,154,186,170,154,166,118,214,250,152,160, 74,136, 27, 33, 0, 33, 0, 32,130, 8, 0, 16, +145, 86, 74, 41,157,166, 89,112,135,222, 59, 34,117,216,187, 71, 31,254,244,218,250,186, 73,179,107,174,125,234, 47,188,233,141, +182,169,126,248, 21,175, 44,138,242, 51, 92,153, 96, 80, 23,111,109, 99, 93, 93,215,117, 93, 55, 77, 83,215,117, 93, 87,182,105, +156,117, 2,162, 72, 37, 73,162,148, 50, 73,146,152,196, 24, 99,146, 68,107, 29, 78, 21, 14,150, 15, 70,131,193,128,136, 8,145, + 69,156, 19,103, 27,231, 60, 16,221,253,225, 15, 94,127,211, 45, 74,155, 16, 75,239,252,177,215,214,117,245,202, 87,189,166,170, +234,253, 7, 10,117, 26, 34, 0,146, 82, 26,201, 18, 41,165,180, 49,172,181,166, 53, 74,210, 52,207,243, 52, 73,145, 40, 92,110, + 20, 21,139, 0, 51, 11, 11, 19, 98,150, 15,242, 52, 17,182,158,169,241, 92,215,117, 81, 44,102,211,233,222,238,246,238,206,118, + 89,150,239,123,247, 31, 61,235,185,207, 71, 34, 36,165,180, 49, 34,175,122,229,143,212,213,226,142,215,220,185,122,160, 46,255, + 64, 72,210, 60, 73,179, 96, 71,109, 16,110, 77, 43,212, 41,241, 27, 0, 68,144,208,232, 84, 41, 2,240,132, 36, 64,117, 99,173, +179, 77, 93, 87,101, 89, 20,197, 98, 49,159, 78,246,246,118,182,119,119,207, 47,230,211, 52,205,154,186, 54, 73, 66, 68,140, 68, +164,180, 73, 68,228, 85, 63,242,195, 63,250,227,175,243,222,199, 3, 49,135,159, 5, 0, 28,149, 27,130, 45, 11, 10, 48, 0, 68, + 51, 7, 4, 52, 70, 27, 69,222, 59, 84, 4, 64,236,217,123,239, 28, 91, 91, 53,141,181, 77, 93,215,117, 89,150,101,177, 88, 20, +139,249,116, 58,155, 77, 22,211,105, 85,204,148,214,151, 95,117,109,146,164,210,230, 64,128,132, 24,133,245, 67, 47,123,233,111, +253,246,239,212,214, 71, 9, 9,112,240, 53, 8, 33,107, 67, 17, 1, 96,223, 30, 48, 73, 19,173, 72,216,147, 78, 66,246, 99,171, +160,101, 85,211, 4,184,163,174,235,170,174,170,170,170,202,178, 40, 22,139,178, 88, 84,229,162,174, 42, 0,222,216,186,232,170, +107,190,104,109,188, 30, 98, 93,248,161, 8,128, 33,207, 67,165,180,126,225,215,191,224,163,119,127, 34, 72,200,119,230,219, 62, +153,131,228, 16,197,152,212,104, 18,102, 34,237, 0,203,178, 44,203,162, 40,138,170, 44,202,178,172,171,170, 42,203,186,174,131, +123,104,154,166,169,171,186, 42,157,115,236,189,210,250,162, 35, 71,143, 30,187,124, 99, 99, 19, 32, 36,148, 49,146, 7,221,109, +189, 13, 32, 18,145,222, 88, 95,215,225,158,226, 13,133,167, 1, 4,125, 1,128, 52,205,188,179,206, 41,165,117,221,212,101, 89, + 22,139,249,108, 58,157,207,103,243,249,108, 62,155,149, 69, 81, 87, 85, 23,244, 69,132,136,210, 44, 63, 56, 30, 31,188,232,240, +120,188,174,141,129,144, 24,178,231,182,196,109,211,157,165,219, 15,121, 44, 16,234,120,112,239, 1, 80,128, 33, 74, 72, 68, 64, + 27,221, 84,165,247, 94,155,196, 58,103,173, 45,203, 34, 72,104, 62,155,237,238,108,239,238,156,175,171,146,148,206,243,193,218, +120,125,188,190,177, 54, 30,143,214,214,140, 54, 65,251,218,218,186, 45,178, 57,126,224, 37, 38,155,193,173, 5, 13, 14, 90,218, +130,171, 34, 32, 12,157,117,129,160,128, 48, 47,230,115, 1, 49,206, 41,165, 93,176, 2,173,243,193, 64, 88, 80, 88,161,160, 82, +151, 92,122,249,250,198, 38, 34,138,116, 80, 72, 0, 13,164,119, 10,233,103,148,241,242,218, 52,184,203,197, 64, 36,232, 16, 51, + 51,116,199, 1, 1, 1, 6,225,134,171,170,116,206,145, 82,109,218, 8, 74,169, 44,203,141, 49,195,209,232,224, 69,135,189,119, +236,125, 49,219, 83, 90, 39,105, 14,128,126, 25, 82,246, 9,168,251,200,183,162,138,229, 10,119, 79, 0, 9, 18,114,204,109, 64, +104,207,197, 2, 0, 64, 74, 23,211, 9,123,214, 38, 9,110,154,148, 66, 68, 34,149,164, 42, 73,210,248,102,189,243,222, 55,117, +197,222,121,239, 4, 80,105,195, 33, 65,104,243,198, 86, 88, 33, 45, 8,248,208, 50, 61,111, 79, 12,241,202,186,107,148,120, 99, +241, 47,165,244,112, 52,222, 62,119,118, 62,159, 17, 41, 99,140, 54,137, 54,154, 72, 41, 34, 36,138,241,140,148, 34, 34,165,188, + 55,228,157,243,174,169, 42,231, 26,239,189,214, 9,144,146,158, 24,226,121, 90, 52,210,123, 23,138,133,152,230,199, 3,121, 97, + 16, 92,250, 36,100, 17, 0, 6, 17,173,245,214,161,139,102,147,189,237,237,243,211, 73,131, 68, 74, 41, 99,140,210, 90, 41,173, +181, 81, 74, 41,165,144,144,144, 32,184, 21, 84, 38,205, 72,107, 87,215,141,109,156,173,189,103,101, 18,164, 80,231,176, 72,155, +194,248,136,127, 5, 55,193,204,177, 25,176,148, 80, 23, 52,218,144, 18, 62, 25,174,141,179,193,112, 62,155,237,108,159,155,236, +238,122,239, 0, 64,107,163,147, 36, 49, 70, 27,163,181, 49, 73, 18,228, 68, 68, 65,199, 81, 27,131, 4, 72,210,212, 77, 89,120, +103, 81,167,164, 84,168, 8, 34, 54, 23,235, 61,239,189,151,112, 32,239,156,244, 20,104,169, 73,237,213,117, 73,207, 96, 56,204, +243,220, 93,236,131, 59,218,219,217,217,221, 62, 7,194, 20, 51,128, 36, 77, 51, 99, 18,109,140,214, 58,156, 44,160,181, 74, 39, + 0, 40,128, 77, 93, 88,219, 40,157, 2, 82, 43, 34, 27, 14,230,156,237, 73,104,229, 28,171,226,233, 78,217, 59, 89,150,229, 73, +154,110, 30, 56,200,236,155,186, 46,138, 98,111,231,252, 98, 62, 91,204,103,218,152, 36, 73,141, 73, 76,146,104,181, 60,150, 0, + 42,147,104, 22, 22,168,171,185,243,172,116,186,132,181,157,245,206, 49,123,141,136, 31,252,171,247,115,235,162,187, 88, 14, 49, +176,183,159,202, 74,156,239,157,125, 41, 87, 97,182,214,214,213,174,247, 14, 17, 16,149, 82,138, 20, 17, 41, 68, 68,192,232, 80, +216, 59,103,157,109,172,173,149,206, 36,160, 36,236,189,247, 69, 89, 61,201,240,198, 80,155, 61,121, 14,115,219,109,183, 81,151, +128, 62, 73, 30, 79,174,202,245,201,120,160, 39, 90, 74, 31, 57,114,228,218,107,175,189,230,154,107,182,182,182,180,214,204, 92, +149,229,233, 51,167,239,191,255,254,187,238,186,107, 95,229,240,119,114,160,131, 7, 15, 62,231, 57,207,121,209,183,126,219,129, + 3, 7, 90, 60,179,107,107,180,217, 67,248,203,135,254,132,191,247,147,159,124,219,219,223,126,239, 39,239, 45,202,242, 11,121, +160, 59,239,188,243, 57,207,125, 46, 2,177, 8,181, 9, 62, 42, 1,230, 80,190,161, 0, 17,117,213, 54,139,132, 96,249,180, 27, +158,254,163,215, 93, 95, 85,133,179,205,187,222,245,174,183,189,253,183, 63, 31, 0,228,216,177, 99, 15, 63,252, 48, 0, 60,253, +166,155,126,252,199,239,220, 58,120,168,115,140, 1,162, 5, 0,246, 30, 0, 4, 49,132,236,144,241,196,144,221,226, 84,241,216, + 74, 33, 34,123, 63,159, 77,188,107, 78, 62,242,200,157,175,251,169,201,100,242,196,205, 30,143, 30, 61,186,190,177,241,107,191, +254, 22, 17, 65,164, 21,111,205,204, 32, 0,212, 6, 66,239,172,117, 1, 99,112,158,189, 99,105,193,134,246, 52, 73,146, 36, 73, +170, 20,121,207,229, 98, 54,217,219, 81, 74,149,197,252,229, 63,244,138,201,116,250,132, 14,116,231, 79,188,238,121,255,244,203, + 16, 16, 8, 65, 4, 4, 25, 25, 4, 20, 41,207,236,156,107,154,198,218,198, 54, 54,132, 27,231, 67,247,204,119,232,105, 44,179, + 0,180, 49,195,225, 40,207, 7, 38, 73, 8,209, 57, 59,159, 77,207,159,125, 44, 31,140,108, 83,127,234, 83,247,189,238, 39,127, +230,115, 30, 72, 7,144, 0, 16,132, 49,192,206,226, 69,105, 93, 59,103,235,186,105,234,186,170, 3,216,224,218,211, 4,248, 85, +218, 68, 29, 98, 21, 75, 34,226, 51,207,194, 33, 99, 75,149, 22,129,166,105,118,206,157, 30,141,215,175,186,234, 41,191,248,166, + 55,188,236,229,255, 97, 95,247,246, 66,165, 70, 68, 98, 0, 36, 17, 6, 68,244,222,213, 77,211,180,104, 67, 93, 87, 77, 83, 7, +164,148,157,227,160,195,171,249, 10, 34, 34,145, 49, 73,128,151,128, 80,107, 77, 72, 0, 50, 28,173, 77, 39,187,136,164,141, 1, +128,215,253,196,143,189,227, 29,239,252,211, 63,123,247,103,118,140, 24,203,100, 16, 32,194, 98, 62,173,235, 58, 20,230,225,191, +178, 88,148, 69, 89,151,101, 93, 85,117,211, 4,152,200, 59, 23,106, 74, 68, 12,233, 24, 17,133,212, 49, 73,146, 52, 73, 77,146, +104, 99,180, 49, 73,146, 12, 6,163,251,239,253, 4,145, 34,165,148, 50, 95,251, 53, 95,243,253, 47,121,241,103,245,212, 24,209, +148,166,174,156,231, 58, 96, 66,161, 52,174,171,186,174,109, 83,135, 20, 51, 8, 67, 27, 99,210, 52,201,178, 60,207, 7,163,209, +218,120,188, 54, 30,143, 70,107,195,209,104, 56, 90, 27, 12,135,105,154, 26,173,187,188, 17, 16,179,124, 24,176, 34, 34,165,141, +185,252,242,227, 47,123,233, 75, 62,163, 31, 98, 1, 68, 64,128,144,215,134, 12,215, 89,235,172,243,206,177,103, 1,192, 22,140, +210, 70, 37, 38, 53,137, 49, 38, 73, 76,130,138, 98,112, 22, 80, 90,141,215,215,141,209, 1,110, 18, 97,103,173,179,150,217, 51, +192,195, 15,222,127,249,149,215, 4,204, 67,233,228,240,197,151,124,251,183,126,243,175,252,218,111, 92,112, 32,137,247,222,186, + 31,232, 42,234,240,230,180, 49,169, 74,141, 49,249, 96,144,166, 89,146,166,198, 36,225,173,139,180,165, 58,251, 80,178, 25,173, + 91, 76, 80, 2, 6, 87,215, 85, 89,148,182,174, 31,123,248,129, 99, 87, 92, 77,132,236,145,136,180,210, 87, 95,115,205, 11,190, +246,171,223,249,251,127,248, 56,158, 58,148, 97,161,236, 34,165, 66,197,131,136, 25,228,198,152, 44,203,178, 44,215,198,132,178, + 36,184, 39,137, 8, 78,112,153,168,141, 94, 91, 91, 99,111, 1,144, 69,172,117, 85, 85, 46,230,243,197, 98, 81, 22,243,178, 44, +155,166,217,217, 62,127, 96,235, 96, 0, 97, 0, 73,107,115,235, 45,183,252,197, 95,190,239,252,246,206, 82,135, 58, 1,129,136, +210, 38,203,178,225,112, 52, 94, 95,223,216, 56,112,232,208, 69, 71, 46,190,228,240,225,139,215, 55, 54, 77,154, 96, 27, 70, 4, + 64, 48,128, 87, 34, 34,164, 84, 62, 24,140,134, 57,123,199, 12,214,249,170,174, 23,139,197,108, 54,157,207,103,211,201,100, 58, +157,150,139, 5,139,204,167,147,216,103, 67,164,240, 80,250,123, 94,252,157,253,156,140,186, 16,193, 0, 0,162,148, 78,211, 52, +207,243,193,112,152, 15, 6, 90,155, 94, 5,210, 22, 72, 34, 32,128,128, 70,155, 60,207, 7, 89,162, 9,152,129, 25, 26,107,203, +178, 92,204,230, 1, 27,153, 78, 38,179,233,116, 62,155,149,101, 33,194, 45,236, 20,204, 40, 20,192,138, 72,255,192, 75,254,237, +138, 14, 33,132,231,134,218,183,211,159, 37,192, 26,143, 0,192, 32, 32, 64, 74, 37,198,128,176,136, 67, 2, 0, 29, 2,156,179, + 17,187,138,136,213,124, 62,155, 77,167,211,221, 98, 49,181, 77,169,116, 50, 28,173, 9, 11, 0, 70,164, 3, 17, 35,152,188,118, +205,213, 87,222,251,169, 7,226,149, 9, 75, 56, 19, 68,104, 8, 68, 16,145, 5, 2, 98,194, 16,139, 88, 81,164, 7,131, 60, 75, + 20,161, 40,173,149,202, 88,200, 90, 91, 87,117,177,152, 47, 22,139,197,124, 54,157, 78, 38,147, 73,232,141, 78,247,118, 23,179, + 89, 89, 20,158,253,198,230,161,181,245,117, 36,140, 17, 27,219, 35, 17,145,210, 47,248,218,175,238,148, 90, 4, 33,194, 66, 61, + 4,164,189,197, 86,199, 16,178, 52, 83, 8, 44, 94,155,212, 7, 2, 71,136,116, 77, 99,109,235,217,171,170,172,202,170, 44, 23, +243,249,124, 62, 43, 22,179,178,152,123,231,178,124,116,201,101,199, 34,192,184,191,223,130,136,164,117,114,235, 51,110,106,205, + 94,152, 1,151,118,223,254, 83,231, 5,136,212, 32,207,188,107,144,180, 66, 29,184, 36,117, 83,133, 48,215, 52,117,192, 24,171, +186,174,203,178,138,144,231,188, 42, 22, 85, 85, 58,107,147, 44,187,228,210,203, 15,108, 29,236, 52,160,187,181,229,161,148, 58, +241,236,103,253,159, 15,127, 92, 11,128, 48, 4,132, 10,160, 3,130,161,213, 96, 86, 74,229,121,238, 93,163,117, 2,136, 77, 99, +155,186, 42,171,170,174,202,170,174,154, 64,247,171,235,186,170, 2,232, 89,150,101, 85, 22, 77, 93,214,117, 35,236,211,124,112, +241, 37,151, 30,189,236,152, 49, 73, 64,128, 4, 98,158, 37,173,248,131,148,180, 78,218, 43, 19, 1,108,113,200,213,226, 20,145, +178, 44,115,182,238, 78, 83, 87,101,224,100,149,101, 89, 85,101, 93,150, 85, 85,197,164,160,174, 26, 27,194, 78,197,236, 9, 49, + 93, 27, 31, 62,124,201, 37, 71, 47, 77,210, 52, 68,228,214,195, 0, 98, 43, 36,196,160,226, 20, 12, 36,128,101,192, 75, 71,205, +140, 93,150,150,101,169,183, 13, 41, 37,136,206,186,186,174,138,162, 88, 44,102,101, 81, 44, 22,139, 98,177,168,170,170,174, 74, +107,155,166,174, 3,183,206,218, 6, 0,146, 36, 93, 91,223,184,232,240,197, 7,182,182,148,214, 17,116,111,177,129,128,107, 2, + 66,139, 36, 64, 11, 17,131,142, 70,221,235,127,181, 23, 39, 74,105, 68,112,204,168, 52, 59,111,173,173,171,170,170,138, 98, 81, +204,103,179,217,124, 90,204,231, 85, 85,133,208, 43,194,222,123, 68, 12,205,227,205,173,173,173,131,135,242,124,128,132,210,117, +217,162, 51,139,102,182,132, 58,131,131, 9, 7, 10,210,193, 21,180, 3,186, 3, 53,117,141, 8, 33,117, 14,250, 91, 87, 85,192, +134,103,147,189,197,124,110,109,195,204, 8,168,180,202,243, 65, 62, 24,142,199,235,235,155,155,163,209,154, 82,212,117,132,165, +135,203, 45, 59, 90,109,171, 34, 98,119, 8, 81, 66,161,245,178,124,106,144, 21,162, 8, 59,219,144, 50, 2,145, 14, 24, 83, 86, +102,239, 93, 83,215,129, 34,153,164,217, 96, 48, 92, 27,175,175,173,175,143,199,227, 60,207,145, 40,160, 28,242,184, 15, 8, 80, + 48,203, 10,128, 2, 32,216,139,246, 29, 2,212,126,162, 0,188,115,214, 58,197,162, 32, 9, 7, 1, 64,165,149, 49, 38,116, 26, + 72, 81,150, 15, 14, 29, 62,178,117,240,208,120, 60,214, 38, 9,183,206,192,125,140,188,197,198,187,232, 39,208,131, 49,165,223, + 52, 13,220, 22,110,213,120, 5,169, 66, 12, 30,143, 69, 11, 4,159, 0, 68,168,180, 78,179,108, 96,135,227,141,141, 36, 73,198, + 7,182, 46,190,248,210, 36, 77,187,206,172,172, 30, 69, 62,163,148,150,127, 66,104, 54, 8, 47,205,126,121,144,246, 84, 30,192, +123,103,109,227,156,243, 70, 72,145,176, 32,146, 86,202, 36,201,112,180, 70, 72,118,173,210, 90, 11,123, 69,228, 34, 60,205, 33, +212,180,121, 82, 7,101,237, 63, 13,175,170, 85,140, 39,129,143,212, 3,242, 96,121, 52,102,246,108, 27, 43, 0,158, 69,107, 67, + 68, 2, 66, 72, 33, 65, 83, 90,123,151,179,243, 77, 93,122,111,141, 73,181, 73,162, 98,244,181,119, 41,138,149, 83,197, 30,207, + 42, 90,216, 93, 89,204, 63,150, 54, 31, 58,122, 8,109,221, 35,194,172,180, 6, 64, 64, 8,229,169, 82, 74,140,241,161, 73,237, +156,109, 42,219, 84,136,164,147,212,123, 23,120, 87, 43, 96,254,178,231,194,157,245, 69, 1, 44,139,152, 86,135,224,130, 43,235, + 58, 71, 77,211, 56,231, 60,167,218, 27,165, 20, 81,200,233,128,136,128,136, 72,177, 82,164,116, 56,150,247,206, 46, 26, 68, 34, +109,218,118, 69,200,116, 99, 27,161,227,135, 68, 70, 78,175, 59, 20,117, 40,246, 17, 49,252,201,129,181,215, 38,109,146, 36,233, +124, 62,183,182,177,206, 37, 73,162,141, 81, 20,187, 11, 49,205, 67, 36, 84,162,160,245,254,100,155,198, 57,203, 77, 77, 74, 35, +233,246,174,160,109,253,116, 4, 49,232, 65, 40,194,177,135, 6, 26,132, 25, 56,164, 94,173, 6, 44, 33,106,147, 36, 73,146,206, +166, 37, 55,181,109,154, 36, 73,149,209, 74,233,208, 87, 32,234, 60, 62, 16,169,144, 16,106,147, 8, 0, 55,117, 83, 23, 72, 10, + 64,145,210, 44,158, 91,121, 68, 87,198,221,221,197,223, 33,193,208, 18, 10, 81,216, 15,150,119,127, 12,134,195,178, 44,138,249, +204,130,109,154,198, 24,163,181, 86, 58, 94, 31, 41, 69,136,225, 84, 1,114, 8,173,109, 49, 34, 34,214,214,222, 87, 74, 39, 72, + 90, 90,121,180,232,146,239, 14,215, 53,178, 58,142, 93, 84,106, 70, 70,193, 96,181, 32, 16,226, 63,145, 26,175,111,216,166, 89, +204,103, 13, 87,181, 82, 74, 27,173,117,128,235,149,210,161,102, 13, 0, 65,204,235, 48, 20, 95,204,204,226,185, 41, 11, 32,210, + 38,237,105,115,255,112,220,181,210, 98,232,136,158, 99,213, 76, 97,233,186,197,152,100, 99,243,128,243,126, 62,221,243, 77, 13, + 0, 74,105,109,140, 49, 70,107,163, 77,144,150, 14, 77, 14,128,216,195, 65, 84,164, 52,105, 38,102,107, 43,103,173, 74, 50,136, + 30,101,213, 2,219, 94, 94,203,139,244,188,255,186, 96,217, 62, 11, 78, 33, 73,211,173,173, 45, 69,180,179,125,174,170,170, 0, +119, 24,147,152,196, 24,157,104,163,181, 73,180,214, 74, 41, 34,133,132,225, 80, 72,138,148, 86,138,157,243,222, 85,174,176, 38, + 25,196, 11,235,122,104, 49,204,176,136,239,204,222, 71,151,136,109, 53, 4, 44, 93, 9,210,218,166, 54,201,198,129, 45,165,245, +100,119,103,178,183,219, 84,101, 83, 87,164,148, 49, 38, 73, 50,147, 36,198, 36,161,109, 21, 46,177,205, 43, 8,149, 82, 70,123, +175,197,214,101, 49, 53, 73,222,111, 48,118, 26,205, 62,132,142, 62,174,194,251,250, 65,253, 47,177, 0, 16,209,218,120, 61, 77, +179,193,104, 52,157,236, 77,118,119,235,170,180, 77,221,212, 77,146, 36, 73, 26,143,165, 77,212,173, 8, 54,132, 67,105,237,189, +231,166,168,188, 87, 38,139,161, 32, 52,207,186,126,226, 62,199,120, 97,135,234,194, 51,137,136,214,102,125,125, 51,207, 7,227, +241,250,116, 58,157,236,109, 91, 91,135, 65, 5,147,166, 38, 73,147, 36,209,218,104,173, 66,219, 69, 68, 0, 9, 73,147,242,164, + 77, 83, 21,236, 25,149,105,155,192, 45, 30,231,125,239, 64, 43,241, 21, 86, 78,214,217, 97,123,160,224, 63,148,210,131,225, 90, +154,229,107,227,241,116,111,111, 58,217,109,108, 19,102, 61,216,123, 99,156,211, 90,107, 67,138,176,197,123, 66, 51,146,148,169, +203,133, 74, 6, 2,200, 34, 1,165, 12,210,106,205,190, 45, 89,247, 55,203, 58, 70,193,227,228, 15,209, 84, 17, 41, 77,179, 3, + 91, 7,179,124, 48,217,219, 13,249, 53, 51,123,159, 24,147, 8,115,128,177, 48,204,109, 0, 34, 42, 34,141,164,170, 98,106,210, + 97,119, 99,161,197, 8, 0,250,209,147, 39,185, 77,113,165,107,146,245,187,102,189,191, 59, 26,194,210, 22,151, 22,201,222,115, +224, 27,137, 48, 34,117,158,179,141, 51, 8, 16,179, 77,231,172,107,106,129,109, 82, 42,176,181,132,125, 24, 10,193,219,110,187, +109,119,119,119,111,111,239,201,214, 22,250,255,251, 16,145,141,141,141,205,205, 77, 13, 0,147,201,228,145, 71, 30,249, 7,161, + 92, 72,242,220,220,220,164,127, 16,196,223,179,118,226, 63, 8,232,239,217, 67,255,237, 95, 98,109,109,237,196,137, 19,215,223, +112,195, 77, 55,221,116,248,240,225,214,126,187, 0, 20,129, 38,110, 17,185,182,250,216,151,117, 8,123,255,137, 79,124,226,222, +123,239,189,247,190,251, 62,252,225,143, 88,107,255,158, 9,136,136,190,252,246,219,191,248, 75,190,228,154,167, 92,115,232,208, +161,124,144, 67,108,175,116,144, 83,139,169,244,249, 41,109,228, 85, 72, 65, 50, 4, 0, 34, 10,128, 85,247, 77, 17, 34,186,245, +153,255,248,150, 91,159,233,156, 67,132, 48, 28,226,217, 79, 39,147, 83,167, 78, 63,244,224,131, 31,248,224, 7,239,250,232,221, + 79, 34, 1, 29, 63,126,252, 25,207,120,198, 55,191,232, 69, 71, 46,190, 56,240,255,100, 95, 36,140,125,195, 8,248,139, 72, 44, + 53, 64, 16, 16, 65, 32,212,105,128,161,251,213, 1, 24, 65,120,212,125,220,149,166, 32,128,160, 52,133,239, 81, 58, 3,132,124, + 48, 62,116,228,232,211,110,184,241,246,231, 63,223, 57, 11, 34,206,186,143,220,245,145, 63,127,247,123,238,255,212,253, 79,164, +169,252,133, 20,208,209,163, 71, 95,121,199,171,110,190,249,230,144, 43,198,126, 24,119,229, 59, 68, 8, 64, 68,136,128,133, 48, +112,170, 25,145, 90,182, 18, 32,138,239,120,147,203,249, 21,150, 94, 49,182, 10, 59, 46,197, 22,236, 17,145, 8, 49,176,178, 66, +194,171,181, 73,210, 60, 52,234,155,186,186,241,233, 55,221,120,195,141, 72, 36,236,157,119,127,252,199,255,243,119,255,219, 59, +246,119, 7,190, 32,193,254, 57,207,121, 78, 85, 85, 95,247,245, 47,188,245,214,103,142, 55,198,194,208, 94, 58, 6, 78,188,136, + 32,196,191, 58, 90, 1, 17, 17, 97,236,198, 44,105,137, 29, 87,146, 59,190,195,146, 31, 34,125,210,105,132,196,161,195,173,123, +192, 48, 96, 72,185,149,210, 74,235, 68,107,173,141, 86,164,144, 66,221, 9,222,123,231,154,166,170, 23,139, 89, 85, 46,178, 60, + 15,229,134,115,238,204,153,211,239,126,247,123,254,228, 79,255,252,111, 47,154, 99,199,142, 29, 63,126, 28, 79,156, 56,241,149, + 95,245,207,110,255,138,219, 91,233, 35,196, 62, 86, 44, 96,161,237,145,176,103, 34, 36,165,195,164,167,247, 28, 89,135,206,133, + 25,205,254,124, 23,183, 53,205,178,106, 95, 82,163,151,101, 84, 31, 22,235,154,226,208,182,218,147, 36, 77,210, 88, 6,107,109, + 66,177, 16,250, 54, 44,226,157,107,154,186, 42,139,233,100,215,214,229,112,109, 61,136,222, 59, 7, 34,101, 81,188,243,247,127, +255, 47,254,242,125,206,185,191,141,128,116, 11,229, 43, 22, 9, 77, 16, 68, 1, 17, 20,144, 80,176, 80,160,247,121, 36,242, 44, +141,173, 2,217,144,189,111,201, 31, 97, 10,198,245, 20,200,119,152, 70, 31, 76,236, 66,216,190,218, 15,164,215, 85,128, 88,177, + 73,146,232, 14,239, 19, 16, 16, 4, 8,253, 89, 36, 2, 17,214, 90,105, 29,112,160,249,108,178,187,125, 62, 31, 12,179, 60, 71, + 64, 47,146, 15, 71,223,240, 13,223,248,207, 95,248, 66,219, 84,191,244,203,191,114,207,231, 59,178,164,187, 99, 17,182,238, 52, +152,151, 8,130, 32, 98, 89, 22, 97, 66, 40,216, 76, 39,148,118,182,220,133,143, 34,199,183,141,220,251,197,209,135, 6,162,162, +194, 42, 55, 64,176, 69,223, 0, 81,136, 16, 16, 9, 9, 81, 17, 17, 97,176,183,128,242, 68, 1, 49, 7, 12, 42,128, 54,158,253, +246,185,179,117, 85,109, 28,216, 2,239, 24,192, 32,122, 79,128,244,221, 47,254, 46,231,236,221, 31,251,216,175,190,249, 45,159, +175,147,198,182, 93, 21, 0, 66, 9, 51, 66,182, 44, 75,223, 18,167, 60, 7,177, 4,197,105, 5, 20, 63,115,113,134,255, 2,227, +233, 58,188,203, 10,167, 67,138,130,211,111, 17, 92,192,229, 28,143,214, 42, 73,211,196, 36,105,154,166,105,150, 36, 75,176,137, + 58, 43, 99, 6, 0,142,228,109,109, 76, 58, 24,142,118,206,157,157,207,167,151, 94,126, 37, 88,203, 4, 42,254, 40, 68,196, 27, +111,184,225,231,126,230, 39,239,185,231,158,223,248,205,183,149, 85,245,255, 28,197,164, 11,200, 0, 68,196,222,213,117,237, 89, +122,147,158, 29, 9,123,169, 56,206,187,192,240,237, 28,112, 80,132,150,170, 28,116,147,144,144, 72,117, 84, 30, 34, 12,138, 16, +160, 16,236, 30, 81,125,227, 0, 76,146,164,105,154,182,216, 96,252,230,208, 13,245,237,220, 65, 60, 19,251, 0,176, 41,109,118, +182,207,231,131,225,230,129,131,200, 32, 8,164,128, 1, 8, 64, 35,122,239,175,189,246,139,126,244, 53,175,124,232,193,135,222, +252,150,223,124,220,129,173,199,157,223,138, 13,171, 8, 47, 3, 9,179,243,190, 29,190,135, 14, 34,141,142, 57,254,118,158,125, +108, 79, 34,118, 40, 98,136,203,154,148,210,129,175,172, 84,176,141, 22, 52, 38, 2, 4, 66,138,169,210, 10,109,163,103,142, 68, +148, 36, 38,207,115, 69, 74, 80, 98,107, 24,164,195, 70,173, 13,252,128, 58,126, 80, 55,214, 90,231,157,247,238,129,123, 63,241, +180,167,223,154,102, 89,152, 16, 32,138, 93, 72,165, 16, 0,156,133,203,143, 31,191,227, 21, 63,244,192,253,247,255,242,175,190, +229, 9,106, 80,200,244, 66,110, 39,125,142, 1, 34,119,126, 42,186, 40, 34, 98, 82,164, 16, 41,208, 68,144, 66, 84, 14,248,121, +196,171,149, 86,132,132,109, 55, 23, 87,166,122,122,238,136, 65,176,157,159,138,226, 38,173, 85,154,101,105,150, 18, 2,179, 13, + 57,168,180, 83, 66, 45, 79, 62,200,167, 14,195, 55,145,138, 86, 85,214,218,233,222,238,223,220,253,215,215, 94,127,115,154,229, + 24,232, 67,136, 68,196, 44,132, 74,105, 64, 68, 7,120,197, 85, 87,189,230,142, 31,126,231,239,189,235,195,119,221,253, 57, 4, + 36, 0,204,136, 40,216,182,199,137,148, 54,128, 68,129, 66,163,156,247, 74,155,174,128, 10,178,164, 72,141, 10, 19, 0, 33, 6, + 99,244, 98, 75,127,220, 57,108, 12, 91, 15,130, 52, 36, 82,107,130,228,130,228, 67,199,196, 36,137,209, 10,132,197, 89, 7, 81, +190,145,206, 26, 66,166,181, 77,171, 63, 77, 59,189, 86,182,252,129,166,174, 5, 96,178,183,187,125,254,220,225, 35,151, 40, 29, + 3, 17, 18,130, 32, 18, 18,144,136, 34, 37, 0, 96, 18,252,186, 23,188,224, 43,190,252,121, 63,247,198, 95,170,235,230,241, 5, + 20, 69, 18, 38, 73, 66,159, 12, 65, 32,178,255,148, 82, 34,105, 32,238,247, 32, 79,192,158,223, 13,201, 53, 6,122, 6,153,118, + 70, 93, 0, 0, 11,198, 73, 68, 65, 84,246,184, 25,136,253, 97,182,158,116, 36,230,162, 24,205, 83,107, 77, 20,148, 55,228,158, + 81,110,204,194,226,195,102,151,200,204,179,214, 89,219,116,195,125,113,158,110, 81,149, 69, 81, 20,101, 49, 15,155,168,180, 49, + 77, 93,123,231, 72,169,158,110,162,244, 88, 65,136, 18, 24,121,131,209,248,101, 63,240,189,111,125,251,127,125,224,161, 79, 63, +174, 15, 10,195,126,193,210, 34,169, 33,188,215, 72, 17, 1, 1, 65,173, 85,152,236,108,195,157,136, 96,219,151,141,211, 94,130, + 93,217, 26, 97,229,182,122,141, 76, 4, 36,210,237,233,226,108, 71, 60, 58,183,236, 55, 98, 17, 8,219, 27,218,141, 55, 62,144, +128,227,170, 26,219,216,198,134,209,190,192,202,169,138,170,172,234,170,168,170,210,214,165,117, 22, 17,179,124,148,164,169, 0, + 98,119, 38,192, 46, 8,133, 68, 66, 4, 73, 72, 68, 17,137, 50,233,191,252, 23,223,120,247,221, 31,127,231, 31,252,247,199,247, + 65,220, 50, 79, 0,195, 96, 18, 0, 50, 0,114,156,119, 13, 4,162, 37, 21,140,121,105, 67, 32, 32,216,249,146,126,237, 26, 24, +101, 33, 90,117,205, 60,223, 94, 34, 9, 98,219,161, 16,241,178, 28,164,106,183, 79,133,209,111,239,156, 13,203,169,218,237, 59, + 77, 83,135,137,228,170, 42,155,186,170,235,202,214,181,109, 42,231, 29,138,100,195,209,198,129,131,227,245, 13,173, 53, 68,174, + 24, 70, 14, 51,198,207,163,188,144, 0, 37, 68, 85, 17,121,218,117, 79, 77,179,244,119,223,241, 7, 93,254,173,151,252, 59,233, +184, 59,128,192, 0, 24, 10,112, 64, 16, 22,196,104, 25,161, 72, 7,224,110,138, 38, 26, 29, 47, 53, 6, 0, 34, 41, 87, 17, 0, + 8,123, 16, 70, 82,161,151, 32,164,195, 55,249,174, 28,241,203, 89,169,229, 7,109,206, 21,213,198, 6,227,138,206,167,174,235, +166,142,220, 50,103, 27,219,212, 97,172, 73,145,202,135,195, 67,135, 46, 62,112,232,162, 60, 31, 42,173, 58,114, 18, 17,120,223, + 86, 83, 75,122, 82, 40,177,163,185, 49,169, 43,143, 31,255,142,111,251,166, 95,252, 79,191, 22, 57, 12,157, 27,229,168, 58, 45, +125, 9, 56,128, 23,216,242,207, 66, 56,235, 13,174, 71,231,139, 75,239,133, 65, 42, 70,107, 68, 96,118, 0,140,168,208, 36,145, + 66, 17,106, 88,207, 18, 50,114,207,222, 89,191,172,235,186, 81, 55,142,217,103,107, 89,174,167, 62,145,235,110,173,179,181,181, +214,219, 38,164,169,138, 84,146,165,195,181,241,214,193,195, 7,182,182,242,193, 0,145, 32,188, 49, 1,137,221,107,132, 56,109, + 29, 75, 41, 89,114, 39, 41,148,128,172,120,109,109,252,157,255,234,155,255,244, 61,239,147, 48,174, 9,171, 60,129, 96, 41, 24, +181, 34,124, 17,123,233,113,164,171,181,150, 7, 44, 28,124,139, 54,218, 40, 37,194,236, 29,144, 82,202, 32, 82, 28,200,228, 94, +150, 25, 31,182,151,119, 46, 21,198,123, 27, 63,183,182,245,203,157, 6, 53, 65, 82, 97,135, 95, 24, 73, 8,180,171, 52, 27, 12, + 71,163,241,250,230,230,230,214,104, 60, 54,198, 32, 96,104, 16,183,212,185, 96, 17, 34,203, 17,111,145,125,209, 38, 66, 58, 68, + 74,175,141,215,111,249, 71, 55,157, 60,117, 70,183, 62,180,125,243,193,169,162,112, 12, 57, 24,233,166,130,209,126, 91,186,125, +155,215,133, 24,100,140,214,204,206,251, 6, 81, 41,147, 32,146,136,184, 78, 43,194,123,116,237, 62,133, 32, 32,231, 93, 55,245, +103,109, 40,232, 98,229, 27,191,182,116,207,221, 30,177, 80,177,135, 58, 67, 41,157,228, 73,150, 15,198,235,155,235, 27,155,163, +181,145, 49, 9, 17,245, 97, 38,236,200, 37,128, 61, 72,165,155,227,107,249,214,216, 18,240,162, 58, 81, 75,198, 91, 42, 9, 75, +112,203, 81,153,184, 83,150, 46,143, 89,202, 17, 25, 17, 68, 80,107,149, 36, 9,162, 56, 87,135, 9,133, 16,156,124,251, 94,163, +101,216,166,117, 35,193, 58,130,207,109, 58,117,242,173, 77,113,171, 81, 1, 48,241,109,221,215,173,166, 0, 0,165,117,162, 77, +146,102,195,193,112, 52, 30,175,173,141,179,124, 16,136,231, 29, 23,105,201,168,235,100, 33,203, 65,198,150,132,222,149,139, 45, + 79, 57, 40, 20, 34, 80, 28,176, 91, 58,105,230,142,242, 26,129, 32,232, 49,183, 17,187,118, 56, 4,150, 5, 17,133,156, 57, 96, +122,132, 10, 73,181, 83, 66, 62,184,143, 54,103,169,235,166,177,117, 29, 92, 72,240, 35, 77,211,116,170,225, 90,213,104,107,153, +184,242, 38,210, 65, 36, 44,163, 82,164,148,209, 58,201,210,124, 48, 28, 14, 70,249,112,152,231, 3, 99,140, 82,203,249,168, 37, +185,160,243, 27, 45, 8, 37, 75,106,254,146, 29,222, 1, 10, 75, 48, 50, 74,106, 69,131,218,111, 71, 89,146,190,123,195,227,161, + 30, 16, 94,122,159, 64, 18, 52, 90, 57,215,120,231,136, 72, 16, 88, 4,188, 23,145, 40,157,232, 77,227,190,146,118, 67, 71, 21, +184,186,117, 93, 91,107,131,130, 4,120, 13,162, 41,192,178,200, 71,212,202, 40,173,147, 36, 73,210, 52,207, 6,217, 96, 48, 24, + 12,146, 36, 53, 70,135, 42,151,133, 81, 96, 21, 85,105,149,190, 7, 86, 10, 64, 88,177,213, 50,224, 90, 22, 27,244,152,247, 45, +220, 27, 81,176, 94,152,151, 62, 47,144, 35,160, 8, 45,213, 7, 59,133,100, 14,101, 13, 4,216,193,218,198,217,166,205, 41, 56, + 88, 96,240,188, 54,228,117,182, 53,172, 88, 87, 86, 85, 89,150,101, 89, 85, 69, 93,215,174,169, 3,126, 20, 23, 32, 40, 29, 65, + 31, 82, 58, 73, 76,192, 58,178, 44, 44,119, 9, 11, 10, 21,169,128, 86, 49, 95, 64,251, 90,150,187, 43, 4,205,152,183,181, 84, +186, 30, 65,178, 75,145,151,210,234, 91,221,190,106,126,255, 50,137,248, 83, 49,228,202, 75,220,143, 69, 66, 9,194,206,217,166, +246,236, 1, 64, 9, 16, 49, 32, 5,196,154,195,186, 46,137,236,181,200,245,143,179, 26, 68,161, 36,119, 54,140, 97,135,141, 6, +121,158,167,249, 32,203,226,106,172, 52, 77,181, 49, 97,190, 7,169, 55,185, 28,192,236,149, 55,198,171,108,157,222, 34,138,110, + 5, 71,252, 23,232,129, 84,189,192,125,129,128, 59, 93, 90,209, 32, 94,142, 74, 8,180,201, 38, 4,141,236,125, 1, 99,233, 40, +206,219,166,105,152, 61, 18, 49,139, 82, 10, 73,245, 41,163, 8, 64, 24,214,108,153,214, 65, 4,129, 51,139, 35,132, 36, 73,144, +104, 48, 92, 91, 95,223, 24,141,199,249, 96, 96,180, 9, 56, 81, 40,111, 90, 64, 82,194,152,220, 5, 32,246,138, 46,244,160,186, + 62, 19,122, 73, 5,231,142, 88,212, 49, 54,185, 99, 34,247,189, 58,119,185,229,138, 6,245, 10,240, 40, 42, 89,146,116, 4, 91, +242,126,200,170,187,218,136,217, 67, 88,118, 20, 55, 13, 80, 75, 55, 14, 67, 94,164,148, 2, 17, 48, 9, 66, 28,122, 51,218,100, + 89,106,109, 13, 44, 74,171,192,255, 30, 12,135,198, 36, 29, 84,184,140, 50, 45, 88,213, 49, 5, 87,109,106,229,157,237,163,104, +239,223, 3,176,106,131, 32,251,168, 79,157, 24,177,207,224,214, 29,127,140,151, 93,209,149,190, 96,175,245, 25,171, 48,239, 37, +154,152,181,129,248, 27,141, 39,206,242,199, 49,194, 86,101, 34, 37, 15, 49,178,209,125,150,229,126, 24,234,172, 88,214,249,166, + 42,132,147,148,148, 10,184,124,139,139,131,244,169,213,189,165, 2,171, 28,254,207, 70,245,234,217, 28,195,231, 32,148, 75,183, +158,177, 51, 69,221, 25, 5,243,138,137, 45,185, 93, 75,161,197,111,195,152,150, 6, 88,207, 5,183, 78, 20, 40,185,113,223, 65, +155, 83, 66,151, 76, 18,162,136,104,173, 89, 12,175, 48,113,227, 62, 22,107, 27,104, 98,197, 79, 68,136, 42, 20, 77,225,115,110, +217,140,125,244,177, 93,119,246, 56, 12, 84,238, 8,219,221,187,223,207,110,135,199,213,184,190,243, 94,201,131, 62,131, 68, 58, +155,195,126,218, 9, 34, 0,132, 68,204,236,108, 35, 65, 83,108,196, 90, 41,190, 67,236,101,241, 24, 90, 17, 8,130,130,138,116, +139,151, 45,199,187, 91,169,113, 59,108,237,132, 25, 80, 16, 9, 81, 5, 28, 39, 24, 44,175,188,149,214, 11,115, 39,177,229,222, +170,126,115,165,123, 90, 59, 16,192,253,225,247,238, 69, 65, 86,154, 83, 49, 15,138, 49, 7, 87, 68,211, 73,168,243, 88, 93,132, +107, 81, 71,173,181,137,252,113,142,195,190, 74, 41,165,116, 23,180,250,120,124, 91,248, 4,164,140, 0, 5, 5, 69,129, 8,129, +112,219,203, 97,234, 52, 43,182,115,152,165, 9,192,147, 5, 64,162,112, 55, 1,141,235, 20,135,123,241,234,194,225,131,246, 61, +119,211, 36, 75,170,125,123, 69,220, 13, 5,112,140,233,210,243, 65,237,172, 69,175,139,119, 33, 99, 99,191,118, 33, 82,146,166, +109,189,105,189,231, 22,192,215, 42, 12,189,168, 0, 93, 35,117,104, 44, 46, 25,241,171,172, 72, 12,123,117, 3,172,200,204,136, + 28, 9,215, 20,185,176, 97,143, 17, 91,219,210,214, 81, 41,141,168,186,112,183,127, 83, 11,175,204,180,180, 2, 1,190,112,148, +164,219,124,217, 77,229, 74, 79,131,186,103, 96,155, 69, 75, 15, 78, 95,186, 18,108, 65,159, 56,169, 28,223,100,154,231, 0,176, + 88,204,156, 43,157,115, 17,107, 33,213, 53,118,130,247,198,182,231, 19,161, 5,164,182, 75,216, 45,219,235,117, 20, 17, 16, 72, +132,195,119, 49,162, 66,194, 72, 2,247, 1, 44, 97,246,222, 54,225,109, 40,147, 16,169, 94,163,191, 93, 81,215,115,207, 93, 6, + 2,113, 12,170, 91,227, 41,126,149,220,222, 45,243,130,222,150, 60, 94, 78,181,244, 93,116, 79, 97,160,191,243,177, 99,232,138, + 32, 96,146,102,168,148,214,166, 88,204,171,170,242,206,177,212, 97,106, 98,201,209, 32, 21,210, 68, 84,138, 90,157, 10, 13,179, +168, 87,203,113,139,190,106,181,113, 1,137, 0, 65, 35, 32, 33, 19,162,243,158,188,247, 32, 1, 46,104, 0, 17, 73, 19, 82,200, + 87, 47,200, 26,165,219, 35,219, 55, 40,238, 51, 44,186,177,132,118,140,108,213, 7, 45,233,245, 61,161,244, 51,207,149, 32, 7, +176,210, 73, 22,173,244, 96, 56,210,218,152,164, 40, 22,243,186,170,172,109, 68,154,184,136, 32,136, 2, 85,235,155,218,212, 58, +238,222,162,214,175,183, 61,179, 22,160,109, 89,223,189,208,213, 54, 37, 1, 9, 0, 61, 32, 1,178,247,222, 91,182, 54,142, 28, +144, 38,165,151,140,105,142,227,142, 75, 91,107,199,105,132,187,249,173, 56, 6,212,114, 9,188,244,125, 80,231,151, 0, 97, 9, + 46, 7, 72, 8, 99,153,218,161,101, 1,141, 70, 4, 94,253,119, 68, 52, 73, 26, 38,221,170, 69,177, 40, 22, 85, 85,218,166,182, + 77,195,221,202,227,214,143, 99, 59,118,210,174, 76,136,146,194,158,176, 66,131, 30, 3,140,133, 43,236,159, 16, 55,149,214,128, + 8, 30,176,221, 76,224,189,243,182,113, 82, 11,160,210, 9, 41,213, 91,132,210,250,151, 22, 57, 89,142,215,200, 50,139,232,207, +217,244,157,180, 95,118, 32,122,230, 35,176,132, 14,250,176, 64,111,190, 82, 86,225, 2, 65,196, 36, 73,181,210,249,112,216, 52, + 77,177,152, 47, 22,243,186, 44, 27,219, 44,215, 1,199,236, 6, 91,225,232,118,168, 94, 71, 40, 59,184,246, 96,140,234,113, 67, + 97,204, 56, 66, 49,195,200,180,236, 91,160,247, 14,216, 55,213, 28,144, 72, 27,165,140,180,100, 36,217, 55, 75, 19,215,128, 44, +195, 26, 47,247, 10,175,104, 16,203,202, 82,195, 85,212,109,245, 11,242,120,214,118,161,241,145, 82,105,150,153, 36, 25,141,215, +109,211, 84, 85, 89, 44,230, 85, 89, 52,117, 99,157,101,239,156, 11,153,116,112, 68, 49, 63, 80,237,148, 78,224, 79,133,228,179, + 83,173, 24,230, 90, 81,117, 59,189, 34,229,138, 64, 84,232, 41,160, 19, 12, 37,145,179, 53,145, 38,149,132, 5, 40,189,133,125, + 75,103,180,178, 20,143,123, 4,149,190,128,186,137,141,254,123, 70,196, 54,195,142,195, 64, 1,235,237,125, 9, 91, 82, 98,175, + 64,234, 75, 11,128, 72,165, 89,106, 18, 51, 26,173, 49,123,107,109, 85, 85,101, 48,192,186,113, 46, 96,207,214, 54, 77,103, 95, +173,164,150, 10,165,180, 34,165, 58, 49,133, 40,216, 75, 16, 90,240,129, 84,104,196,171,200, 5, 67, 17,112,174,225,166, 18, 80, + 73,146, 9, 66,107, 81,113, 14,170,167, 80, 97,189, 33,123,246,226,125, 55,187,218,213,223,188, 47,116, 44,185,187, 43, 62,121, +165,124,238, 42, 93,150,213, 58, 69, 86,212,109,185,247, 82,169, 4,201, 36,201,104,180, 22,122, 27, 97,160,186,174,235,248, 63, + 37, 9,211,178,206,161,237,100, 21, 54, 3,234,182,226, 11,117, 11,182,179, 96,221, 4,100,191, 0, 84, 68, 34,162, 69,117, 25, +143, 19, 87,151,174, 38, 74,148, 73,226, 40,244,234,108, 38,199, 21,239, 62,174, 97, 92,241, 65, 97, 49,102,251, 30, 47,100, 55, + 1,226, 62, 59,234,131, 68,203,116,251,130, 89,156,149,165,118,251, 6,229, 16,148,210,131,225, 48,207, 7,204,236,156, 13, 3, +232, 85,232, 2,218,166,219,141, 78,138,108,204,168,116,183,225,174,157,197,108, 19,171,150, 20,223, 70,141,208,132, 87,162, 64, + 4, 84,248,119, 91, 91,187,112,174, 65,101, 8,169,183, 21,169,219,180, 24,247,155,178,247,225,206,117,196,124,150, 21, 62, 66, + 95,151,250, 0,230, 74,117,182, 34, 23,232,117, 16, 87, 8, 45,112,193,175,253,131, 96,221,118, 5,212,198, 40,173,211, 44, 31, +250,246,255,148, 17, 87, 57, 55,129,220,202,236,208, 57,165,136, 72,183, 99, 86,145,103,212,149,126,173,255,110,253, 40, 41, 18, + 17,165, 68,132,148, 48, 51, 48,187,166,244, 82,106,147, 19, 81,111,176,143,133,189,116, 20, 66, 31, 9, 71,120,219,109,183,201, + 5, 20,232, 39,195,164,205,147,228, 24,255, 23,101,110,253,130,218,250, 28,224, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/fill.png.c b/source/blender/editors/datafiles/fill.png.c new file mode 100644 index 00000000000..010cd5ca278 --- /dev/null +++ b/source/blender/editors/datafiles/fill.png.c @@ -0,0 +1,534 @@ +/* DataToC output of file <fill_png> */ + +int datatoc_fill_png_size= 16892; +char datatoc_fill_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, + 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, 11,252, 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, + 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7, +116, 73, 77, 69, 7,218, 7, 19, 0, 34, 12, 33,249,187,131, 0, 0, 32, 0, 73, 68, 65, 84,120,218,236,188,119,144,101,217,121, + 31,118,206,185,231,230,252, 82,231,158,188,121, 54, 47, 22, 27,176,136, 4, 68,144, 4, 8,154,169,192,146,138,182, 44,148,196, +114,209, 42,209,170,146, 44,217,170,178,252,135,139,150,108, 73,150, 92,101,131,162, 77,194, 4,109, 70,145, 6, 72, 0,139,184, +187,216, 93,108,158,217,221,217,137,221,211,233,245,235,151,110, 78, 39,250,143,251,122, 22, 18, 19, 68,211, 37,200,165, 91, 83, + 93,175,167, 95,223, 62,247,203,223,239,247,125, 15, 62,245,212, 83,224,207,188,254,141, 55,253,200, 71, 30,251,163,239,193,183, + 94,237, 92,121,249, 11,159,251,236,169,179,235,255,248, 31,253,195, 34, 26, 29,238,110,255,214,175, 63,253,203, 95,122, 6, 0, +128,165,148, 47,125,229,127, 91, 61,115,255, 23, 63,247,191, 62,242,196,131,253, 19,231,155, 50,221,187,113,245, 11,191,243,204, + 7, 63,252,240,223,250,175,255,230, 91, 47,189,128,164,148, 27,183, 63,242,135,191,246,217,251,223,115,239,218,109,143, 50, 90, + 15,175, 95,252,195,223,123,238,135, 63,245,254, 39,127,248, 39, 38,251,215,176,138,149,141,205, 77,191, 25,158, 58,187,126,242, +252, 7,234, 50, 74, 71, 55, 76,215,123,224,145,187, 79,221,251,100,124,120, 37,141,162,167,191,248, 2,134, 16,186,174,125,238, +225,143, 54, 69, 68,171, 20, 0,168, 96, 13, 2, 36, 57,141, 39,163,195,253,241, 97,148, 33, 0,192,195, 31,250,161, 38,159,113, + 82,125,251, 43, 95,129,138, 34, 57, 91, 58,253,192,222,229, 23, 9,161,191,242,175,158,249,153,159,254, 48, 2, 82, 82, 82,209, +166,186,250,198,119, 46,191,117,243, 91, 79,191, 40,165,216,190,248,117, 70,217,231,127,245, 75, 31,127,252,252,131, 31,252, 17, + 4, 0, 32,101, 66,203,248, 43, 95,124,225, 61, 79,158,255,201,207,252,117,172,234,164, 33,219,215,246,128,148, 63,240, 35, 31, +209, 77, 15, 1, 0,104, 93,188,240,205,231,187, 61,239,222, 71,159, 16,156,206, 70,251,117, 89,125,238,247,158,251,212,143,127, +112,233,204, 67, 55,223,252, 6, 2, 0, 84, 69,124,225,181, 43,247, 61,124, 7, 84,240,246,197,103, 73, 67,126,237, 87,191,252, +241, 39,206,223,247,196, 71, 56,169, 47,188,244, 38,252,158,116,247,189, 92,112,161,184,171, 47, 95,126,233, 43,219,215,246, 30, +121,223,163,154,233,214,197,252,139,191,241,229,171, 55, 71,159,255,234,183, 1, 0,240,202,107, 95,242,186,155, 47,127,229,255, +204,210,226,125,159,248,116,157, 71,180, 78,127,245,127,250,101,203, 54,222,255,177,247,134, 75, 27,207,124,233,105,236,247, 79, +188,245,220,239,102,105,254,161,255,232, 63, 41,179,153, 20,244, 55,126,233,215,188,192,249,209,191,252,147,118,184,118,241,185, + 47,178,134,225,209,245,151,247,182, 14, 63,244, 99,159,174,138,185, 96,205,107,207,124,237,147,159,254, 4,169, 50,127,112,250, +202, 75, 95, 98,132,125,241,249,139,202,131,167,150,223,251,161,167,116,203,101, 77,245,198,183,191,126,199, 3,247, 67, 41,156, +112,121,120,253, 85,210,208,127,241, 47,255,239, 31,249,192,131,232,236,237,155,225,202, 57, 82,101,243,225,181,213,181, 37,193, + 40, 68,184,204,102,148,210, 23,190,245,218,221,235,131, 31,248,177, 79,161, 51,247, 63,149,207,135,164, 46,126,235, 87,191,248, +250, 43,239,236, 94,187,230,247, 55,179,249, 52,137,178, 23,223,222,254,196, 79,125,196, 27,156,194,101,114, 36, 56,123,249, 91, +207,234,134,246,193,143,255,128,219,223,220,121,243, 89, 74,217,191,248,229, 47,126,250,147,239, 59,243,224, 71,162,253,203,136, +214,121,149,207, 95,121,241,210,195,143,223, 99,249, 75,195,171, 47, 17, 66,159,125,250,229, 7, 79,175, 62,254, 3, 31, 69, 72, +121,254,171, 95, 69, 77,149,191,244,236,107,157,190,127,238,158,251,164,160,121,146,205,167,201,119,222,185,249,177, 79,190,207, +235,111,190,254,245,223,110,106, 2,254,162,116,135,255,232,127,253,230,231,254,249, 3,247,221, 61,222,125,251,237,215,222,137, +102,137,162,192,222,160, 23,158, 60,183,236,163,166,169,154,170, 46,242,234,127,252,236,239,124,243,165,183,254,152, 27,189,231, +161,123,255,241, 63,248, 27,103,238,125,146, 81,114,225, 91,191,255,213,223,254,191, 44,219,188,253,158, 51, 27,119, 62, 42, 24, +163, 77,201,105,205,104, 61, 58, 56,124,225,155,175, 29, 77,146,135, 79,109,126,236, 61,247,218,142,249,243,255,221,191, 92,220, + 72, 8,241,202,211,255,251,218, 29,143, 74,198, 94,255,198,239, 28,236,142, 92,207,126,232,241, 7, 86,111,123,140,147,138, 54, + 21,231, 68, 10,182,115,245,205,103,190,252,114,154, 21, 27, 39,150, 30,251,192, 3, 39,206,221,105,119, 86, 5, 37,127,112,199, +137, 44,205,139,188,198, 82,130,181,219, 31,217,122,245,203,151,223,186,142, 85,229,174,123,111, 59,117,223, 7,145,130,171,108, + 46, 57,227,156,142,119,223,169,203,202,241,236,229,141,193,123, 78, 46,223,245,200, 19,118,176, 2, 33,218,187,244, 76, 26, 39, +156,243,170,108,254,224,233,151,224,147, 79, 62,249,115, 63,246,104,153, 87,171,155, 75,183,221,255, 4, 21,200,208, 85,206,168, + 20,172,206,102,111,124,231,229,123, 30,186, 79, 81,176, 16, 66, 10,142,176,102,122,125, 70,170,241,238,101, 70, 57, 33,244,226, +171,151,191,242,202,229, 51,161,135, 1,132, 66,200,243, 15,221,189,126,231, 19,130, 19, 88,164,140,148,130,177,189,171, 23,116, +211, 56,255,208,253, 16, 66, 33,184,144, 28,171, 70,119,253,174,189,119,158,105,202,154,115,145,165,197,239,255,238,183,134, 89, +249,161,251,206, 61,246,129, 7, 48,144,224,161, 39,159,228,208, 40,147,177, 20, 92, 8, 78,202,228,197,111, 60,119,227,218,222, + 3,143,220,121, 74,215, 52,221,196,154,237,133, 43, 77, 17,109,191,241, 53,198, 25,103,124,103,123,248,235,191,255,220,138,107, +255,212, 15, 61,254,192, 99, 15,245, 79,220,135, 1,144,166,219,173,139,152, 53,141, 20, 34,153,238,127,253, 15,159, 63, 28, 78, + 79,156, 92, 9, 59,126, 85, 84,186, 21,116,215,239, 60,184,242,124, 85, 20, 92, 8, 82, 55, 47, 62,123,225,155, 23,174,189,231, +236,198, 19, 31,120,240,142,135,159,112,187, 27, 66, 48, 12, 0,200,231, 67, 41,165,148, 98,122,184,255,181, 63,124, 49,207,138, + 59,239, 57,125,255, 35,119,110,220,249, 56, 41,115,136,208,141, 55,190,202, 40, 23,130, 39, 81,254,187,191,253,141,105, 89,127, +252,241,123,223,243,196,189, 39,239,121, 66,119, 66, 90,231,175,126,237, 95, 97, 0, 0,169,115, 32,229,244,104,252,141, 47,127, +167, 44,154, 59,207,159,190,239,225,187, 86, 78,223, 95, 23,113,147,207, 38,195, 61, 41, 37, 99,124,231,198,193,111,252,193, 11, +171,158,253,227, 63,244,248,253,239,185,111,233,244,131, 24, 27,217,116,239,165,175,127, 57,141,243,246, 70,229,108, 18,125,235, +171, 47,151, 69,115,231, 61,167,238,190,239, 92,111,253,246,186, 76,242,249, 48,154,205, 5,231,148,176, 87, 94,120,235,155, 23, +174, 61,114,102,253,189, 79,221,127,231, 3, 15,121, 75,167, 33, 4,251,151,159,187,248,202,155,117, 77, 40,161,127,113,113,242, + 47,228,218,220,220, 68,127,202,143, 79,110, 44,191,239,209,251,254,237, 2,247,173,203, 52,141, 55,191,243, 37, 78,155,183, 95, +122,102,103,235,128, 52,164,211, 15, 9,229,143,125,224,241,166, 76,155,186,170,203,102, 62,141,127,230, 23,254,177,148,242,187, + 79,244,175,221,232,226,203, 95, 11,130, 32,157,238,188,254,236,179,209, 60, 89, 94,235, 47,175, 14, 6,167,238,227, 36,103,180, +102, 77,221, 20,201,219, 23,175,189,249,218,149,121, 94,125,245,181,183, 70,179,248,223,188,209, 43, 95,249,165,149,115,143, 66, + 8,198,219,111, 92,120,233,149,178,168, 87,214, 7,103,207, 63, 96,135,235,180,138, 57,109, 56, 35,121, 52,122,233,217,215, 46, +189,181, 13,164, 92, 89,237,250,161,251,183,255,135, 95,165,140, 47,110,244,233,159,250,212,223,252,217,143,109,220,253, 20, 0, + 96,116,253,149, 11,223,121,149, 82,186,186,185,116,246,222,199, 76,175, 71,202, 68,112,202, 41,201,227,195,231,158,254,246,213, +119,118, 12, 93, 59,117,219,250,233,115, 27, 75,235,235,182,191,116,112,253,205,157,173,131,151, 47,237,225, 95,248,107, 63,178, +118,219, 99, 18,202,217,206,219, 23, 95,126,141, 49,182,126, 98,229,236,125,143,153,110,159,148, 49,144, 2, 8, 81,103,179, 23, +191,249,157,107,151,119, 29,199,188,243,252,153,219,238, 62,211, 63,113, 23, 66,120,186,251,118,154, 22,134,169, 99, 21,227,245, +219,222, 43, 32,200, 38,187, 23, 95,122,145, 52,100,109, 99,233,236,125,143, 1,108,210, 38, 19,130, 11,193,235, 34,122,253, 59, +175, 92,189,180, 99, 24,250,189, 15,221,126,238,174, 51,131, 19,247, 73, 0,178,201, 78, 52,139, 16,130, 82,130,249, 52,193, 0, +130, 38,155, 95,120,238, 27, 69, 86,246,151,187,167,238,126, 16, 27, 30, 2,156,211, 70, 74,193,234,226,234,197,139,103,110, 59, +177,121,106,237,250, 59,219,103,110, 63,181,122,238,189,148, 84,172,206,167,135,123, 0, 0, 32,193,141, 43, 59,163,180,192,156, +214, 23,191,253,229,104,158,134, 93,255,244, 29,119,133,203,103, 73,157,209,186,145,146,115, 90, 95,185,240,202,230,153, 77, 85, +183,133,224, 15,134,193,254,206,104,229, 44,193, 88, 61,216,185, 36,165, 4, 64, 30, 29, 78, 95,184,116, 83,195, 26,190,250,242, +211, 71,195,169,227, 90, 39,206,158,232,159, 56,207, 89, 77,235, 66, 10,206, 57,221,187,122,209,245, 28,195,242,165, 20, 0, 72, +168,153,119, 62,248, 48,214,140,253,119,190,205, 24, 19, 82,102, 73,241,205,103, 47, 64, 8,151, 58, 62,186,121, 99, 31, 99,101, +117, 99,105,229,204, 67, 82,138,166,136,165,224,130,211,232,240,122,211,144,254,234,134,132, 64, 74, 33,129, 68, 72,113,194,213, +233,205, 11, 77, 93, 11, 33,104, 67, 95,126,225,237,113, 89,159,223, 24, 44,175,247, 49,101,124,117, 99,176,118,246,190, 52,142, + 76, 83, 19,156,113,198,234,124, 54,159,204,151, 87, 87, 37,132, 80, 48, 41, 5,148, 32,232,159,204, 38, 59,121, 58,151, 66, 8, + 46,110, 92,221,125,125,123,120,166,227,221,255,200,157,251, 57, 64, 97,232,173,159, 58,163, 89,190,101, 25,156, 81,193, 25,167, +213,149,139,111, 26,134, 6,160, 4,156, 74, 46, 33,128,166,219,149, 64, 68, 71, 55, 5, 23, 66,136,249, 52,249,198,243,111,122, +186,122,254,190, 51,103,239, 58,107, 58, 33, 90, 89, 31,132, 43,103,129, 20,180,169, 36,167,130,209,209,206,181,139,175, 93,185, +114,105, 59, 79, 18, 70, 27, 0,129,110, 7, 78,119,125,124,243, 34,231, 92, 8, 81, 87,205,119,158,189,144, 19,122,223,109,155, +183,223,125,186,183,126,167,162,234,184,191,126, 27,231,140,148,169, 20, 92, 10, 81,166,147, 55, 94,190, 20,207,179,160,227,189, +242,210,213, 78,199, 58,125,118,253,228,210,169,201,206,197,166,174, 5, 23,156,241,235,151,119, 47,236, 31,221,181,220,189,227, +252,233,245,179,119,155,110, 23, 0,128, 33,214,105,153, 72,206,164, 16,140, 54, 87,223,190,186,123,243,208,118,204,229,229,238, +169,219, 54,155,154,158, 58,255,100,157, 71,121, 60, 21, 92,114, 33, 38,227,232,235,207, 95, 12, 52,237,174,243,103, 78,159, 59, +233, 15, 78, 32,168,208,186,192, 8, 2, 66, 27, 41,133, 20, 34, 26,239, 95,126,235, 6,231,114,117, 99,176,113,106,117,253,246, + 71, 57,163, 72, 81,102,195,107,130, 11,206, 89, 85, 54, 47, 62,123, 33, 39,236,169,251,206,158,185,125,179,183,113, 23, 86, 13, + 70,155,217,104, 23, 55,197,156,115, 1,128, 96,164,186,122,105,123, 54, 77,187, 93,111,227,196,242, 96,227, 28, 68,138,106,104, +227,237,215, 41, 33,130, 75,206,197,181,119,182, 47,238, 29,221,181,218,187,237,174, 83,107,167,239, 48,221, 46, 0,114,186,243, +102, 22,231,152, 51, 34,132,144, 82,206,142,198, 91,215,246,177,130, 86,214,251, 43,235, 75,150, 63,104,202,132,147, 42, 79, 98, +206,133,224, 98,122, 52,251,198,243,111,117, 12,237,174,123, 78,159, 60,187,225, 15, 54, 33, 84,234, 60,186,250,214,219,140,115, + 36, 88,195, 41, 33,117,113,237,242, 78, 18,231, 65,199, 93, 89,235, 7,131, 77, 90, 23,170,110,205,134, 55, 24, 99,130,139,178, +168, 94,120,246, 98, 78,217,249,219, 79,156, 57,183,209,223,184, 83, 81, 77, 33,200,246, 91,223,142,231,169, 20, 18, 51, 74,133, + 20,179,201,108,103,235, 64,193,202,210, 74,183, 55,232,234,166, 71,105,157, 13,247,234,186,225, 66,114,202,174,190,115,243,205, +253,241,221,171,189,219,238, 60,185,122,234,180,233,118,161,148,179,225,181,189,173, 3,198,184,144, 2,113, 70,155,186,217,186, +186, 23,199, 69, 16, 56,131,229,174,215, 93,106,234, 2, 33, 20,207, 38,156,113,193,248,124, 18, 63,243,157,119, 66, 67,187,227, +174, 83,155,167, 87,188,254, 73,128,148,186, 76,174, 94,120,163, 44, 27,193,133, 20, 18,124, 95,229,181,141,141, 13, 4,190,159, + 46, 8, 33,254,222,223,253,225,247, 63,250, 87,126,250, 19,247,159,191, 67,210,114, 58, 58, 24, 31, 78,162,121,154,167,101, 83, + 19, 33,196,239,125,235,213,215,175,221,108,223,249,139,255,213,223, 56,127,251,186,170,160, 40,206, 47, 93,217,121,250,185,215, +159,123,229,237,239,245, 76, 79, 61,245,212, 51,207, 60,243, 39,253,248,239,252,194,207,125,230,175,254, 12, 0, 16, 2, 88, 23, +243,195,237,183, 71, 7,147,100,158,214,117,131, 32,178, 28,195,245, 29, 85,197,142,107, 5, 75, 27, 65,119,169,105,147, 32, 99, +130,211,246, 5,165,164,200,203,233, 81,116, 52,156,204,167,105, 89,214, 95,125,253,157,183,183,247,254,164, 74,228,143,145, 80, +183, 19,220,115,231,185,207,127,238,179,109,129, 32, 56,139, 70,215, 15,110, 92,153, 28, 69, 69, 94, 10, 41, 13, 93, 95, 90,235, +117,186,129,223, 93,182,252, 62,210,108, 40, 24,163, 21,231, 84,193, 42,132, 16, 66,133, 35,196,104, 51,159, 70,187,219, 7,195, +221,241,124,158,150,132, 34, 8,177,130, 62,116,223,237, 31,125,232,174,207,126,241, 91,121, 85,255,137,253,140,174,107, 47,126, +253, 55, 73, 58,132,216,222,184,237, 33, 32, 37,128,144,209,122,178,251,214,254,214,141,249, 52,105, 42, 2, 16,240,124, 39,236, +249,157, 94,199,239,159,176,252, 37,164, 96, 70, 74, 78, 27, 33, 69, 43, 69, 9, 16,128,168, 46,231,163,253,131,155,215, 15,134, +123,227, 52, 45, 24, 23,134,174,174, 45,117,252,208, 11, 58,174,227, 89,182,109,253,165, 79,190,207, 48,205, 6,232,156, 84,162, + 41,247,247,142,190,244,205, 87, 94,186, 58,196, 66,136,203, 47,127, 33,157,237,211,124,118,226,238,247, 3, 8, 1, 0,156, 54, +211,221, 75,187, 55, 46,207, 39, 73,211, 16,132, 20, 55,176,195,142,215, 29,244,195,149,115,150,215,231, 66, 8, 90,211, 42, 19, + 82, 72, 41,129, 20, 0, 72, 41,120,157,207, 71,251,187,215,223,217, 29,238, 31,101, 89, 37,132, 52, 77,189,215,247,251,203,221, + 78,223, 15, 59,190,227,251,150,215,215, 12, 23, 0,200,121, 51,217,187, 18,231,105, 81,212,186,166,254,224,251, 31, 94, 89, 27, + 97, 0, 64, 30, 31,157,184,251,253, 82, 2, 0,164,228, 60, 58,218,218,189,114, 97,114, 52,175,202, 6, 66,224,184,118,216,241, +122,203, 75,193,202, 89, 59, 88,170,139, 66,112,202, 73, 37, 56, 7, 64, 0,201,129, 20,130,243,186,136,198,251, 59,215,175,236, +238,223, 28, 37,113, 46,164,176,109,115,105,165, 51, 88,233, 5,161,211, 95, 30,248,253, 13,211,237, 1,132, 4, 99, 16,193,249, +193,149,104, 58,174,203,134,115,129,177, 2,128,202, 40, 99,148, 97, 41,193,198, 29,143, 75, 41,165,148,101, 50,222,187,242,202, +225,254,184,200, 75, 41,164,105,233, 65,232,245,150,123,157,149,115, 78,103, 53,141,102, 64, 8, 8, 88, 91,163, 72, 41,218,156, + 67,202,116, 54,218,137,163, 4, 0,168, 40,168,105, 26,195,212,252,208, 89, 90,233,173,159, 88,238, 45, 15,188,222,166,233,245, + 32, 84, 24,169, 85,213, 72,163,155,243,163,155, 85, 89, 51,198, 32,132, 72, 65,146,177, 36,206,183,175,238,237, 14, 35, 12, 32, + 0, 82,210, 42, 63,220,122,109,255,230,110, 60,207, 24, 99,154,166,122,190,211,237,119,186,107, 39,253,254, 73,168,168,138,162, + 90,182, 85, 23, 49,144, 66, 8,209,126,229,180, 78, 38,123,123, 55,247, 12, 83, 95, 90, 25, 40, 88, 93,219, 92,127,224,189,247, +113, 70,227, 89, 12, 32,220, 56,115,167,215,223, 68,138, 70,234, 76, 55, 77, 70,138,163, 27,175,228,105,194, 24,149, 82, 66, 0, + 36,144,117, 89,239,239, 30,189,245,214,246,126, 94,114,164, 98, 8, 64, 52,188,122,243,242,197,201, 56,170,170, 90, 65,200,243, +157, 78,207,239, 45,175,133, 43,103, 12,183, 91,229,153, 6, 97,149, 37,130, 11, 0,132, 20, 66, 74, 33, 56, 43,211,201,193,205, +237,104,154,156,190,237,132,229,133, 16, 41, 0, 0, 41,132, 2, 36,198,250, 96,205, 70, 16, 9, 78, 47, 60,251,133,251,159,250, +164,170,155,179,131,119,210,217,144, 54,132, 11, 1, 36, 4, 82,112, 38,226, 89,122,229,237,237,139, 91,195, 82,112, 75, 81, 52, + 93,199, 0,192,183, 94,126, 33,137,115, 46,132, 97,104, 65,232,245, 6,221,206,218, 89,183,187, 94, 87,165,228, 12, 73,218,148, +149, 4, 18,136, 86, 71,156,214,197,236,240,230,206,214, 65,127,169,115,247,131,247, 42,170, 6, 0,132, 0, 72,201, 1,144, 64, + 2,128, 32,130, 10,214, 76,205,244,239,127,255, 39,170,108,150,140,110, 84,101, 46,184, 16,178,213,179,168,202,122,184, 55,190, +248,198,181, 27,243, 20, 66,184,106,153, 39,214,250,177, 84, 48,128, 96, 62, 75,145,130, 60,223,233,246,130,222,202,106,176,124, +198,176,195,166, 42, 84, 5, 85,217, 92, 74, 1,100,235, 76, 66,112, 90,198, 71, 7,187,187, 82,130,219,239, 62,167,154, 54, 82, + 48, 60, 62, 44, 16, 92, 72, 9, 0, 64, 72, 81, 52, 51, 88, 58, 45,133,136, 14,174,228,241,132, 49, 42,132,104,159,136, 49,158, + 68,217,245,203, 55, 95,191,180, 51,167,212, 65,232,100, 63, 60,113,122,229,196,233,213, 75, 59, 51, 12, 0, 48, 12,221, 11,156, +222,160,211, 93, 57,229,116,215,234,170,226,140, 10, 86,115,193,164,148,173,142,128, 20,164, 41,230,163,189,233,209, 44,232,120, +186,161, 43,170, 10, 33,144, 66, 0, 0, 4,144, 80, 74, 1, 33, 4, 16, 41,216,244,122, 94,111, 61,157,236, 37,147,155,117, 89, + 74, 33,132, 20,173,120,154,154, 28, 29, 78,222,124,253,218,165,131, 9,147,114,213, 54, 79,109, 12, 78,156, 94, 61,113,102,189, +211,239,239,229, 42, 6, 18, 12, 86,186,221, 65, 47, 92, 57, 99, 56, 29,210, 52, 42,134, 85, 54, 5, 82,130,214,143,164, 20,130, +215,217,236,224,230,206,141,171,187, 85, 89,159,187,243, 68,127,169,219,118, 21, 8, 97,136, 16, 4, 0, 32, 5, 35,140, 53,195, +237,110, 0, 0,198, 55, 47, 20,241,164, 45,130,218,167, 18, 92,228, 89,181,179,189,255,218,171,215,246,178, 92, 87,148,219,122, +193,169, 83,171,235,167, 86, 86,215, 7,253,181, 51,118,103, 69,187, 52,199, 0,200,213,205, 13,167,119, 66, 8, 32, 24, 19,164, + 96,130, 75, 41,128,148,160, 85, 55, 35,233,236,112,251,218,206,214,181,189,233, 36,134, 0,170,154,186,191, 31,217,150,182,186, +222, 13,187,161, 97,217,138,102,171,134,131, 53, 83,183,188,186,136,146,241,205,186, 44,164,224, 66,200,182,254,163,148,197,179, +228,202,165,237, 87, 47,237,164,132,118, 12,237,204, 90,255,228,153,213,181,205,229,229,245,149, 96,249,140,229,245, 20,172, 67, +164, 96, 0,128,219, 63, 89, 22,133,105, 89,117, 62,109, 3, 18,144,242,248, 48,229,116,116,112,253,242,206,206,246, 48,141, 11, + 8,161, 31,216,166,169,119,250, 94,150, 86, 87,175, 12, 1, 56,116,108,237,212,153,213,179, 15, 60,133,176,150, 28,109,231,209, +136, 18, 42,229,194,168,132, 20,117,213, 28, 29,206,222,124,253,202,219,251, 19, 33,193,166,239,156, 62,185,188,121,122,117,109, + 99,105,176,182,233,245, 79,232,118,128,148,214, 73, 57, 6, 0,112, 70, 85,140,154, 34, 94, 52,220,199,217,160, 46,147,209,193, +225,245,119,118, 14,246,142,138,162,214, 52,220,237,250,131,213,238,202,106,127,176,186,228,247, 55, 12,167, 3, 21,204, 73,173, +219, 65, 83,196,179,131,203, 85,150,112, 33,132, 16, 64, 0, 33, 5,231, 60, 79,203,157,173,131,215, 94,191,182,151,230,134,162, +156, 27,132, 39, 79,175,110,158, 92, 89,217, 24,116, 87, 79,187,225, 26, 54,109,132, 20, 41, 68, 83, 38,121,116,136, 1, 0,172, + 41, 4, 39, 66, 2,120, 44, 28, 32, 68, 85,196,195,221,195,235,151,111, 14, 15,166, 77, 67, 77, 83,239,245,131,229,213,222,242, + 90,111,176,186,230, 15, 78,234,118,192, 72,195, 41,209, 76, 55,155,236, 38,211,221,166,170, 91, 1,183,206, 77, 9,155,207,146, +171,111,111,191,126,121, 39, 37, 52, 52,180,179,235,131, 19,167, 87,215, 55,151,151,214,150, 58, 43,103, 44,127,128, 53, 3, 64, + 36, 57, 47,179,233,193,181,215,102,227, 49, 6, 0,112, 90, 46,158, 9, 2,208,154,112,145, 30,236, 28, 94,187,178,115,116, 56, + 35,132,217,182,209, 31,132, 43,107,253,165,213,222, 96,117,205,237,109,170,186, 93, 23,177,130,117, 5,171,243,131,203,121, 52, +166,148,181, 33, 83, 2,217,246, 93,163,225,180,245, 38, 41,229, 9,223, 61,117,106,121,243,228,202,202,250, 96,105,109,205, 27, +156, 52,156,142,130, 53, 0, 0,167,164,136,134, 59, 87, 94, 31,237, 79,234,138, 96, 0, 0,163, 68, 10, 41,193,194,116,234, 34, + 63,216, 61,186,126,101,231,104, 52,167,132, 57,174,209, 31,116,150,215,250,203,171,189,254,234,154,211, 89, 67, 88, 43,179,185, +110, 58,156, 53,243,131, 27, 69,154,112,198, 91,217, 10, 41, 5, 23, 89, 90,236,108, 29,188,254,198,245,131, 44, 55, 20,124,122, + 16,158, 60,189,178,126, 98,121,101,117,208, 91,221,116, 58,235,154,229, 34,132,165, 20,156, 52,209,232,250,206,213, 75,211,163, +168,110,136, 20,178,181, 33, 34,219,243, 8, 94, 85,229,112,119,124,253,234,238,228,104, 78, 8,115, 28,179, 55, 8,151,215,122, + 75, 43,221,238,210,178,237, 47, 67,168, 84,121,164,155,110, 83, 38,241,120,187,204, 75, 33,218, 39,145, 66, 8, 74, 88, 52, 79, +174, 92,186,249,250,149,221,156,208,142,161,159, 93,239,183,246,187,180,218, 15,151, 79, 89,193, 64,213,108, 0,161, 16,156, 86, +217,120,231,173,221,173,157, 56, 74, 40,229,109, 99,220,170,140,180,186,175,171,230,112,255,232,250,213,189,241,104, 78, 41,179, +109,163,215, 15,150, 87,122,253,165,110,103,208,183,131, 1,128,176, 41, 34,213,244,234,108, 22, 79,246,234,162,106,147, 65,235, +154, 77,221, 28, 29,206,222,186,112,253,210,193, 68, 72,185,233,187,167, 79, 46,111,156, 92, 89, 89,239,247, 87,150,252,193, 9, +195,238, 98, 77, 7, 0, 8, 70,171,108, 58,188,126, 97,184, 63,206,211,130,115,206, 89, 27, 35, 36,134, 16,126,229,185,183, 36, + 0,156,242, 60, 43,230,211, 36,207, 75,198,132,166, 97, 34, 16, 43,104,122,152,236,101, 84,223,203,145,178,199, 25, 81, 84,141, +147,166, 46, 19, 74,152, 4,199,122,150,146, 81,158, 38,249,104, 52,155, 21, 53, 82,244,208,210,213,208, 77, 16, 22, 81, 57,101, +115,125,204, 21, 45,106, 67,168, 16,156,148,105, 50, 27,231, 89, 73, 41,107, 35, 21,144, 64, 8, 49, 73,170,239, 51,188,177,237, +205,190,127, 14,243,212, 83, 79, 33, 8,225,247,149,128,190,191, 58,215, 63,158,214,249, 94, 46, 69, 81,222,247,232,121,203, 52, +158,253,206,197, 44, 47,255, 29, 28,200, 52,244,191,247, 95,124,230,209,135,239, 95, 91,238, 36,179,225,248, 96, 52, 29, 71,105, +156, 63,126,251, 73, 70,232,193, 36,250,236,239,125,189,125,231, 39,127,240, 3, 63,253,137, 39, 7, 29,151, 54,116,239,112,242, +242, 27, 87,126,231, 75,207, 79,163,244,123,109,165, 55, 55, 55,119,119,119,255,148,119, 60,254,232,131,191,242,191,252,247,109, + 93, 90,166,147,209,238,245,241,225, 52,158,167, 85,217,112,206, 33,128,166,109,120,161, 35,165,252,226,243,151,255,155,191,251, +215,203,116,198, 56, 21,140, 49, 70, 25,227,140, 80, 66,104, 93,145,203,215,118,254,249,255,241,197,209, 52,254,211,141,250,207, +144,208,205,119,158, 7, 0, 74, 8, 5, 35,209,225,245,131,237,155,211, 73, 84,100, 5, 99,194,178, 12, 47,116, 52, 93, 51, 45, +195,243,157,149,179, 15, 62,242,254, 15, 18, 82, 33,172,169, 8,113,164, 64, 4, 17, 98, 82,136, 38, 43, 38,163, 25,203,155,159, +249,208, 99,140,243,127,250,219, 95,249,243,168,236,231, 62,243, 87,254,238,223,254,121, 9, 32, 0,146,213,213,120,231,173,131, +221,189,104,154,212, 85, 3, 33,234,246,220,160,235,217,182,101,251,158,110,117,131,193,122, 83,198, 0,200,182,192, 18, 28, 34, + 0,164, 16, 53,173,102,147,120,239,230,240,104, 56, 75,210,178,162, 76, 8,241,233, 15, 63,254,249,175, 61,255,111,113,160,219, +207,172,255,253,255,242,239,124,224,253,143, 67,132,160, 4, 77, 25, 31, 94,127, 99,184,127, 24, 71, 25,105, 40,214, 84,215,181, +186,253, 48,236,117,157,112, 25, 27,158, 97, 57, 77,153, 0, 0, 17, 68, 18, 33, 40, 21, 36,165, 96,164, 44,242,195,189,241,206, +214,112, 60,154,165, 69,205,133,208, 20,164, 25,170,174,169,127,249, 7,158,252,220,211,207,253,217, 7,250,131,223,252,159, 29, + 84,157,184,231, 41, 85, 55, 0, 0, 82,202, 50,155, 12,175,191, 62,218,159,164, 73,198, 40, 51, 12,205, 13, 28,223,119,123, 43, + 43, 94,111, 19, 40,134,174,107,164,202,164,148, 80, 74, 9, 17, 4, 8, 66,193, 56,205,226,104,127,103,184,115,227, 96, 50,142, +139,170, 1, 82,186,166,238, 7,142,174,107,166,109,156, 54,180, 78, 63,248,167,159,255,194,159,120,160,127,242,139,255,224, 67, +143,221,149, 76, 15, 78,156,255, 32,198, 90,219, 83,150,233,228,224,234,171,163,131, 73,150, 22,156, 9,221,208,252,192,237,244, +194,176,191,236,246, 54, 5,196,134,174,147, 42, 3, 64, 66, 0, 36,132, 64, 2, 0, 32,167, 36,157, 79,118,182, 14,118,183,134, +211, 73, 84,213, 4, 35,104,219, 86,208,241,252,192,246, 2,215,113, 45,195, 50,238, 60,127,246,199,126,252,163, 37,131,152,231, +179,113,116,253,198,222,223,255,103,191, 14, 0,128,167, 79,159,254,194,111,253, 82,157, 28, 84,233,108,227,238, 15,168,154, 6, + 36, 0, 64, 22,241,209,222,149, 87,143,134,227, 44, 43, 4,151,154,174,122,158,221, 29,116, 58,203,155, 94,111,147, 9,160,235, + 58,169, 50, 41,120, 75,111, 74, 33,132, 96,180, 41,226,201,112,251,218,238,238,141,131,233, 52,169, 27,162, 40, 74,224,219,157, +158,223,118, 90,158,239,216,158,107,121, 61,172,154, 8, 43,201,120,247,104, 56, 74,162,172, 42,235,186,108,126,251,197,235,248, +231,127,238,103,155,120,159,148,201,250, 93, 79,105,154, 46,161, 4, 64,150,201,244,224,218,107, 71,195,113,158,149, 82, 72,221, +208, 60,223, 14,123, 65,103,229,132,223, 63,201,152, 48, 12,157, 84,217,162, 57,105,243, 61, 16,156,212,233,108,180,187,181,191, +187, 53,156, 78, 19, 66,168,138,177,239,219, 75,107,189, 32,244,250, 75,161,235,123,182,215, 53,221, 46, 68, 10,194,106, 54,221, +137,231, 17, 33, 20, 41, 72,213, 84, 41,165, 4, 0, 55, 69, 76,155,114,229,182,199,116,221, 4, 0, 64, 9,235, 34, 58,188,241, +250,209,112, 92,228,165, 16, 82,215, 53,207,119, 58,253,176,179,114,210,235,109, 50, 46, 76,203,106,202,180, 61, 77,219,188, 1, + 32, 57,105,210,249,225,222,214,254,206,214,193,108,146, 16, 66, 85, 21, 7,161, 59, 88,233,118,251,225, 96,185,227,119,122,150, +191,164,219,190, 96, 84,193, 90, 17, 13,227,233,184,169, 27, 32, 1, 86, 20,129,133,224, 8, 0,128, 37,103,157,245,187,117,211, +106,169, 34, 82,167,135, 55,222, 24, 29, 28,101,105,201,185,212, 52,236,250,118,167, 31,116, 86, 78,250,131, 77,198,128,101, 59, +237,105, 22, 85,153,144, 64, 74, 78,155, 60, 58,220,191,121,176,179, 61,156,141,147,134, 80, 85,197,157,174,183,180,218,239,244, +252,222,160,211, 25, 44,219,157, 85,205,244, 88, 83,171,186, 85,165,147,104,114, 80, 87, 13,144, 18, 33, 40, 16,132, 16, 52, 53, +133, 0, 96, 43, 88,182,253, 46,144, 16, 64,192, 72, 57,190,121,113,180, 55, 76,227,156,115,174,170,170,227,217, 97, 39,232, 44, +111,250,253, 77,164,232,166,134, 73,149, 9,206,142, 59, 73, 33,128,224,140, 20,241,209,112,255,240, 96,239,104, 62, 77,235,134, + 96,140, 92,207, 26, 44,119,251, 75, 97,167, 23,118, 6, 43, 86,176,100, 88, 62,107,106,205,176,154, 50,142,198, 59,117, 85, 73, + 41, 33,132,109,185,209,212,100, 54,142, 0, 0, 24,171, 26,148, 82, 66, 40, 72, 51,221,187, 52,220,217, 75,146,140, 81,134,177, + 98,187,102,216,241, 58,203,107, 94,239,132,170, 59, 82,114, 90, 23,130,145, 22,123, 0,173,202, 24, 45,147,241,100,116,132, 85, +101,253,196,114,150, 20,140, 49,211, 52,186,253,160,211, 11,250,203,221,160,191,238,118, 86, 84,211,165, 77,169, 26, 22, 37,117, +124,180, 85,151,165,224, 18, 66,216, 34,136,148,208,217, 36,190,185, 55, 1,160,197,169, 33,148,156, 70,163,107,195,155, 91,241, + 60,165, 13, 83, 20,197,114,204, 32,244,194,193,138,215,219, 52,108,191,200, 83, 21, 99,206,154,133,166,128,144, 82, 8,193,170, +124, 54, 62, 56,160,132,134, 29, 63, 8,188,229,181,193,225,193,116,119,107,127,176,220,233,246,131,160,183,226,117,215, 53,211, +165,164,194,170, 33,165, 76,199, 91,101,150,113,198, 1, 88,176,192,140,241,120,158,238,238, 30, 29,230, 5, 80,108, 44, 37, 16, +130,101,211,189,195,237,171,209, 52,105,106, 2, 17, 52, 45,195, 15,220, 78,175,231,247, 55, 13,167, 19,205,142, 92, 47, 32, 85, +190, 64, 66,142,129,162,186,136, 39, 7,251,241, 60,221, 56,189,166,233,134,162, 96, 9,228,201,211,198,218,198, 96,127,239,200, +239,118,156,112, 85,179, 60, 78, 27, 8,145,130,113,116,120,163, 72,231,140, 49,121,124, 28,193,121,158, 22,251,187, 71,187,243, +148, 45, 2,163,148, 85, 58, 61,188,121,105, 54,137,171,170, 1, 64, 26,134,225, 5,118,216, 11,189,254, 9,211,235,167,241,212, + 11, 58,164,200,164,224,224,184,247,146, 82,144, 42,155,143,246,199, 71,179,229,213,190,101,123, 8, 99, 8,144,144, 2, 33,140, +176,122,250,236,137, 56,138, 13, 55,214, 76, 87, 8,174, 25,118, 54,221, 43,162, 17, 37, 20, 72, 0,164, 68, 0, 80, 33,202,178, + 62,220,159,108, 13,167, 21,231, 42, 66, 13, 0,152,145,106,124,243,173,201,209,172,200, 43, 41,133,110,232,174,103,133,157,192, +239,159,176,131, 37,218,212,126,208,109,202, 84, 8,118, 11,207,147, 82,176,166, 72, 38, 7,163,131,177,237, 88,157,254, 0, 97, + 13, 32, 4,165, 68,178, 13,215, 16, 42,234, 96,117, 51,159, 13,129, 96,189,205, 59,203,100,156,206,246,155,186,106, 9, 91, 0, +128,144,160,169,201,244, 40,218,190, 57,138,106,130, 16,236, 25,122,209, 72, 84, 36, 71, 71,135,227, 60, 45, 57,231, 88, 85,109, +199,244, 67,207,239,175, 58,225, 50, 64,138,170,234,164,202, 57, 35, 45, 24,210,254,227,180,206,162,209,193,222, 8,171,202,198, +169, 77,164,106, 16, 42,139, 8, 9,110, 33,122, 10, 86,245,254,250, 57,175,183, 70,202, 52,155,236, 54,101,222, 66, 51,237,123, + 40,101,241, 60,189,121, 99,184,159,230, 18,128, 64, 83,151,186, 62, 0, 0,229,105,158, 70, 57,163, 84, 81, 20,203, 50,188,192, + 9,122, 75, 78,103, 13,235, 22, 35, 53,103, 53,163,245, 2,213,147, 66, 72, 33, 57,173,178,217,104,239, 80, 8,177,126, 98, 13, +107, 38, 2, 10,132, 45,152, 11,160,104,195, 25,104, 79,164,153, 14, 82,112, 54,221,173,138,132,115, 33, 5, 0, 18, 72, 9, 56, +227, 89, 90,236,109,143,182,142,102, 76, 74, 11,227,101,223, 93, 89,237, 74, 0, 80, 93, 53, 77,211, 0, 8, 13, 83,115,125, 59, +232,116,220,206,154,110,249,241,116,164, 40, 10,109,170, 69, 68,150,162,157, 4,170,203,120,122, 56, 44,242, 98,243,244,134,225, +248, 8, 33,128,128, 92,160,238, 66, 2, 1, 32,128, 16, 33,172,106,166,167, 26, 78, 17, 29,150,233,140, 51, 6,110,225, 78, 92, + 84,101, 61, 58,152, 92,223, 29,101,148, 97, 8,151, 93,107,105, 57, 92, 94,235, 3, 9, 16,163, 92, 74,160,105,170,227,218,126, +232,185,221, 53,221,233, 20,105,236,133,221,150,126, 7, 66, 72,193,219,211,208,166,136,199,135,121, 86,174,108, 44,233,166,133, + 16,146, 0, 44,128,226,133,201, 75, 4,160,162, 40,134, 29,152, 94,175,136, 71, 69, 60,162,164,121, 23,202, 16,162,105,154,217, + 36,218,190,113, 48,206, 43, 4, 96,223, 50,150, 6,193,242,218,160, 55, 8, 1, 0, 72, 2,137, 49,182, 29,211, 11, 28,175,179, +108,122,125, 9,164,229,122,180,202, 5,167, 64, 10, 41,120,155,178, 56,107,138,232, 40,141,179,160,227,155,150,133,160,210, 34, + 74, 18, 0, 40, 23,186,128, 8, 66,132, 20,213,112,194,213, 58,143,242,217, 65, 83, 87,199,237, 63, 0, 18, 48,198,211, 56,223, +217, 58,188, 57,141,185,148,190,142, 87,122,193,202, 90,127,105,181, 27,246,186, 0, 72,140, 16,180,108,195,245, 29,175,211,181, +195,101,172, 25,164,174, 5,108, 90, 67, 6,199, 25, 75, 48, 86,103,243,201,209, 84, 81, 21, 5, 35, 8, 17,128, 0, 74, 1, 0, +148, 64,182,192, 18, 0, 0, 66, 69, 81, 13,127,112,138,145, 42,159,237,215,101, 38,249, 45, 52, 66,114, 33,138,188, 28,238,141, +183,118,143, 42,198, 45,140, 87, 66,111,176, 28, 46,173,244,130,110,224,245, 54, 0, 0, 72,197,216,113, 45, 63,240,220,112, 69, + 51,221,116, 62, 81, 20,200, 72,117, 92,226,112, 41,133,224,188,169,210,217,248,104,116, 48,169,139, 26, 2, 8, 90, 91, 16, 92, + 72, 46,133,132, 82, 0, 0, 16, 66, 10,214,156,112, 21, 42, 74, 54,219,171,178, 57,231,108,113, 22, 33,165,144,164, 34,211,113, +180,181, 53,156, 86,141, 2,209,192,177,150,150, 58,253,229,110,216, 11,188,112,201,176, 3, 0, 0, 86,117,213,245,109, 39, 92, + 54,156,176, 44,114,199, 11,142,211,167, 92,132, 65, 33, 24,169,178,249,228,112,239,232,104, 52, 21, 66,216,174,141, 85,140, 56, + 65, 64,131, 16, 33,132, 36,128, 72, 81, 16,214, 76, 39,212, 45, 55,155, 31, 22,201,132, 30,163, 60,237,173, 40,161, 73,146,238, +108, 13,247,102,169, 0, 96, 96,232,203,131,160,191,220,233,245, 67, 47, 12, 45,127,160,234,182, 4, 0,235,154,234, 6, 29,211, +235, 9, 9, 76,203,166, 85, 46, 56, 59,230,191, 4,144, 82,112, 90,101,179,163,195,241,104, 56, 77,230, 57, 66, 8,171,218, 18, + 99,157,110,128, 53,128,176, 42, 37, 82, 20, 5,169,134,170, 91,186, 29,214,121, 82, 68, 67, 82,151, 11,236, 84, 74, 32, 37, 99, +188, 40,170,131,221,201,214,222,164,226,194, 81,149,229,174, 59, 88,238,244, 6, 97,216, 11,156,112, 69, 51, 61, 69,213, 0, 0, + 88, 51,116,203, 31,168,154,217,212,149,100,148,211, 70,182, 8,234, 49, 39, 71,170,108, 54,153, 30,238, 79,230,179,180,174,155, + 50,175,242,188, 44,111, 52, 89, 90, 46,175,245, 29,199, 70,134,174,104,166,170,219,170, 97, 75,193,243,104,191, 46,178, 54, 72, +220,210, 87, 83, 55,211,163,249,246,214,193,172,174, 85, 4,151, 61,123,176,212,233, 14, 58,157,110,224,117,150, 13,167,131, 53, + 3, 66, 4, 0,192,170, 97,105,166, 27,205,198,126,216, 37, 85,218, 34,168,224,216, 73, 25,169,179,249,100,180, 63,153,142,163, +170,172,165, 4, 16, 33,172,192,154,240,253,253,249,108,154,118,186,110,183,231,123,129, 23, 44,157,196,184,147, 39,163, 42,157, +115, 78, 23,135, 17, 82, 8, 73, 40, 77,230,217,206,214,225,238, 44, 5, 0,116, 77, 99,105, 16,246,150, 58,221,158,239,117,187, +166, 63, 80,117, 27, 33,101,209,117, 96,213, 4, 0,250, 97,151,214,109,250, 4,239,214,166,156, 86,121, 52, 62,154, 29, 29,206, +210,164,224, 92,152,166,102,219,134,237,152, 30, 86,226,184,164,140,207,102, 25,132,112,245,212, 57,183,187, 81,101,179, 50, 30, + 83,218, 72, 46,165, 20, 45, 49,196, 25, 47,179,234, 96,111,188,181, 63,174, 56,119, 84,188,220,245,122, 75, 97,183, 31, 4,221, +192, 9, 86, 52,211, 67, 88,133, 0, 74, 41, 0, 0, 88,193,106,153,167,134, 97, 8, 70,133,148, 16, 28,187,186, 20,180,206,163, +217,124, 52,156, 70,243,148, 16,138,177, 98, 59,182, 23,184, 94,224,116,186,193,201, 51,184, 21,193,192, 53, 0, 0, 32, 0, 73, + 68, 65, 84,169,106,211,113,123,235,103,109,127,137,209,170,136, 15,155, 42, 63, 70, 29, 91,142, 79,214,117, 51, 62,154,111,109, + 29, 76,203, 26, 67,212, 42,171, 55, 8,195,174,231,134,203,134, 19, 98, 85, 71, 16, 74, 41, 89, 83, 66, 0,112, 89,100,150,109, +147, 42, 95,240, 44, 82, 66, 32,165,148,156,145, 34,141, 39,163,217,116, 28, 87, 85, 13, 32, 48,109,221, 11,236, 32,116,253,192, + 13,250, 43, 78,184,162, 26, 14, 99, 68, 81, 84, 0,100, 62, 63,172,243,152, 51,254,174,229, 8, 73, 9,141,163,108,103,123,184, + 59, 75, 37,144, 93, 75, 91, 26,132,221, 65, 24,118,125, 63,236,153, 94, 79,213,173, 86, 89,130,179, 34, 25, 3, 0,144,105,217, +164, 46,229,130,112,105,169, 49, 33, 56, 35, 85, 22, 77,226,241,104,158,165, 57, 99, 66,215, 53,215, 93,156,198, 11, 2,219, 31, +232,118, 0, 32,144, 66,168,154, 81, 38,147, 42,157, 16, 66,110, 21,255, 82, 74,206,121,150, 21,195,221,163,173,189,113,195,185, +173,226,149,174,223, 27,132,221,158, 31,132,190, 21, 44,233,166,135, 20, 21, 64,216, 86, 87,209,104, 11, 0,136, 91,106,236, 56, + 3, 44,158,141,179, 38, 79,147,201,209, 60,154,167, 77, 67, 21, 5, 89,182,225, 5,142, 23, 56,110,224,216,126, 95, 51, 93, 41, + 37,169, 74,221,114, 72,157, 21,241, 97, 83,151,173,142,142, 79, 35,170,170,153, 30,205,183,182,135,179,170,198, 8, 45,123, 78, +127, 16,118,251, 65,208,241,221,112,201,112, 66, 69,211, 1,132, 82, 74, 78, 73, 54,223,159,140,166, 0, 0, 44, 56, 21,156, 75, + 32,161, 92,152, 15,144,162, 41,139,249, 52,153, 78,162, 34,175,164,148,134,161,185,174,229,249,142,231, 59,142, 23,234,118, 8, + 21, 76,235, 82,193, 24, 0, 80, 68,163, 42, 79,216,119, 43,139, 11, 74, 72, 18,165, 59, 91,135,123,179, 84, 0, 56, 48,245,165, + 65,208, 27,132,157,174,239,133, 97,171, 44, 8, 23, 12, 80,157,207,103,135, 59, 89, 82, 0, 8,208, 34, 81, 75, 33, 36,147,156, + 3,201, 25,169,243, 52,155,142,163, 36,206, 73,195, 20, 69,177,109,211,243,109,207,183, 29,207, 49,221, 46,214, 12,206, 8,103, + 4,171, 70,157, 78,139,116, 66,201,194,207, 91,230,144, 49,158,167,213,254,238,120,107,127, 82, 51,238, 96,101,185,235,245, 6, +157, 78, 47,240, 59,158, 19, 44,233,150,167, 96, 29, 64, 8,164,164, 77, 17, 31,109,207, 39, 73, 93,214, 0, 0, 44,133, 0,146, + 47,218, 79, 41,165,224,117, 93,204,103,201,108, 22, 87,101, 13,128, 52,116,213,241, 76,199,115,108,215,182,188, 80, 51, 93, 9, + 32,169,114, 77,183, 24,173,242,248,176,169,170, 91,170, 2, 2, 8, 41,235,170, 25, 31,205,182,183,134,179,170,193, 8, 46,123, + 78,191,109, 66, 58,174, 27, 14,116, 39,196,154, 1, 32,132, 64,114, 78,202,104, 52, 25,141,242,188, 96,156,183, 69,190, 16,124, +209,148,180,206,149,167,197,108, 18,165,113, 65, 8,197, 24, 91,182,225,184,182,227, 89,142,107, 27,118,128, 20,149,145, 26, 0, +137, 20, 37,155, 29,214, 69,198, 25,107,179, 68,203,134,146,134,196,243,116,103,107,184, 23,181,158,101, 14,150,194, 94, 63, 12, +187,158, 23,132,166,215, 83, 13, 27, 34, 5, 2, 33,185,104,138,100,118,184,157,204,211,166,166,109,149,135,165,148, 66, 48, 0, + 1, 20, 64, 72,209, 84, 85, 60, 75,230,179,180, 44,106, 41,129,166,171,150, 99,186,174,237, 56,150,233,120, 88, 51,165, 20,180, + 46, 52,203, 35,101, 82, 38, 19,210,144,118,244,131, 75,177,200, 89,105,121,176,119,180,125, 48,173, 25,119, 53,117,165,235,247, +251, 65,216,245,189,192,179,131,129,102,122,138,162, 65, 9,133, 20,156, 84,201,100,103, 58,158,151,101,221,150,128,237,129,132, + 20,162, 45, 40, 24,165, 89, 86,204,166,113,154,228,140, 49, 5, 43,166,101, 56,174,101,187,150,229,152,186,233, 41,138, 74,155, + 18, 33, 4,129, 40,226,163,186, 42, 5,231, 92,138,182,179, 17, 66,212,101, 61, 30, 71, 91,219,135,179,170, 81, 17, 90,246,157, +222, 82,208,233, 7, 65,232,122, 65,215,112, 66,172, 26, 16, 66, 9,132,224,180, 72,198,211,225,126,150,228,140,178, 54, 94, 44, +250, 50,113,156, 49,154,186,137,103,233,124,154,180,226,209,117,213,118, 76,199,181, 45,199, 52, 44, 87,209, 45, 46, 56,167,141, +102,121, 77, 17,151, 69,204, 40,227, 45,115,210,114, 83, 13,141,163,108,119,251,112, 63,202, 0, 0, 93,203, 24, 12,130, 94, 63, + 12, 59,158, 23,248,166,215, 83,117, 27, 41, 88, 74, 0, 0, 39,101, 58, 31,109, 71,243,180,174,155, 69, 34, 22, 2, 0,128,133, + 20,109, 10, 99,140, 23, 11,241, 20,132, 48, 85, 85, 76,211,112, 92,203,118, 12,203, 50,116,211, 69, 72, 97,164, 70, 10, 6,130, +151,201,132, 84, 13,231,139,182, 70,112,201, 57, 47,242,242,240, 96,178,125, 48,105, 56,119, 84,117,185,235,117,251, 97,216,241, +252,192,181,252,190,110,249, 10,214,164, 4, 0, 10, 70,234,108,186, 55, 61,154, 20,121,185,168,215,197, 66,101,168,237,254, 4, + 23,164,110,226, 40,139,102, 73, 85,213, 0, 0, 77, 87,109,199,180, 29,211,178, 77,195,182,177,102, 72, 33, 56,105, 20,172,213, + 69, 84, 21, 57,165,183,170, 65, 33, 4,111,106, 50,155, 38, 59, 55, 71,243,186,193, 16, 45,251,118,175, 31,118,187, 94, 16,186, + 78, 16,154, 78, 71,209, 12, 8, 33,128, 82, 50, 90, 37,227,201,225,126, 26, 23,148, 48,177, 24,191,144, 66, 8, 8, 0,190,190, + 55,105, 59,135,166, 38,243,121,146, 68, 89, 93, 81,136, 96, 89,137, 42, 42,103,124,186, 51,175,140,155,177,170,239, 11,193,129, + 4, 72,193,117, 17, 55,117, 45,223,173,221, 1,231,162,169,155,233, 56, 62, 76,106,174,232,154,170, 84, 88, 31, 22, 52,223,143, +246, 82, 98,238, 21,170,113,136, 20, 13, 66, 32, 37,224,180, 41,147,113, 28,197,117,213,220,154, 6,105,115,223, 98, 40, 46,138, +162, 56,142,191,223,104,161,127,183,151,148, 50, 8,130, 48, 12, 49, 0, 32, 73,146,189,189,189,255, 32,148, 63, 58,228, 25,134, + 33,250, 15,130,248,247,140,223,252,255, 9,223,250, 61, 50,162,129,239,134,129,119,234,196,218, 3,231,111, 63,177, 62, 56,119, + 98, 89, 85,100, 93, 86,121, 94,214,101, 93, 85, 77, 83, 55,156,137,162,172,223,217, 62,120,246,213, 75,251,227, 89, 85,147, 63, +201,224,187,161,103, 91,134,101,234, 8, 66,198,120, 81,213, 85, 77,146,172, 96,140,255,251, 33,160,187,239, 56,243,153,255,248, +167, 63,246,225, 39, 5,151, 8, 43, 16, 66, 41, 56,163, 85,153,206,139, 44, 42,210, 98,180,191, 95, 23,117, 85, 18,210, 16, 66, + 41,103,156, 83, 46,128, 16, 28,156, 90,234,157,254,225,167, 16,132,148,138,225, 56,250,252,211,207,101, 69, 5, 0,248,137, 31, +253,216,127,254,215,126, 74,195, 66, 50,194, 57,227,188, 5, 98,196,241,213,118, 71,156, 49, 70, 40, 31, 29,205,191,241,194,133, +175,189,112, 49,201,138,191,176, 72,244,212, 83, 79,221,188,121,243, 79,167,164,255,148,235,161, 7,238,249, 91,255,217,127,250, +240, 67,247,170,170,182, 88,237,146, 64, 74, 65,235,178,202, 38, 89, 52,205,146, 52,207,202,170,172,155,138, 52,132, 48,202,133, + 16, 64, 2, 69, 65, 88,197, 88, 85, 16,130, 72, 81, 76, 83, 51, 45,211, 52,117, 77, 87, 21,221,246,251,107,166,105,113, 86,211, +166,108,201,184, 5, 22, 45,132,120,183, 82,225,139,246,145,115,198, 56, 37,180,105,104, 93,214, 85,217,212, 85,221,212, 36, 78, +139,107, 59,195, 47,189,120, 49,254,115,201,107,115,115,243,228,201,147,127, 78, 11, 58,127,207, 29,191,248,223,254,189,123,238, +190,131, 49,142, 16, 90,172,188, 73,201, 24,105,242, 40,159,143,146,104,154,165, 69,153, 87,117,213,144,134, 50,198,132,144, 16, + 66,221,208,116, 93,213, 13,205, 48, 52, 85,215, 84, 21,171,154,170,170, 24,171,154,162,106,166, 55,112,195, 62,167, 13, 35, 21, +167,149,224, 2, 33, 12, 32,146, 72, 17, 82, 0, 46, 4, 18, 80,112, 36,133, 20,156, 11,196, 25,147,140, 55, 13, 41,243, 42, 75, +139, 52,206, 23,127,180, 38,132, 48, 66,153,165,168, 63,250,216,131, 0,130, 23,223,185,113,121,119,248,255,185,139,233,186,246, +207,254,209, 63,252,248, 95,250,136, 4, 0, 34, 8, 0,196, 90, 75,208, 51, 70,202, 50, 25,167,179,195, 52, 74,242,172, 44,139, +170,105, 8, 35,140,115, 1, 0, 80,176,162,171,216, 52, 13,199, 53, 13,203,208, 84, 85, 51,116,221, 48, 85,195, 86,117, 11, 41, +134,102,121, 24, 99, 70, 42,214,148, 66,176,150,149,128, 8, 0, 9,128,132, 64, 64, 4, 17,128, 2,112, 46, 33,228,140, 8,206, + 73, 93, 23, 69,149, 39,121, 28,101, 73,148,229, 73, 81,148,117,221, 16, 66, 57,227, 92, 72, 41, 0,132, 82, 42, 8, 73, 32, 31, +187,243,204,163,119,156,121,250,213,183,134,179,232, 47, 82, 64,239,123,236,193, 79,253,224, 19,203, 29,167, 55, 88, 57,115,247, +195,166,229,112, 33, 90,238, 15, 2, 0, 32,224,140,145, 42,201,163, 81, 58, 27,165,113, 90,228, 85, 93,213,164,166,140,243, 91, + 38,163,105,170,102,104,134,169,155,166,110,217,134,229,250,186, 29,232,166,139, 53,139,113,169,235, 38,132,146,145,154, 54,185, + 16, 2, 0,137, 32, 20,168,229,219, 17,148,176,133,153, 65,203,103, 72, 78,234,170,174,202, 60,205,147, 40,139,231,105, 26,231, +121, 86, 86,101, 83, 55,148, 50,198,219, 22, 74, 81, 84,140, 84,140, 49, 86,212,246, 27, 4, 21, 69,249,171,235,253,183,183,246, +127,231,155, 47,253,191, 18,208,163,143,220,255,153,159,253,201, 71,239,191,173,202,102,121, 26,235, 78,111,253,220, 3,120,193, +226, 3, 5, 35, 0, 0, 16,146,115, 82, 23,113, 62, 59, 72,102, 71, 89,146, 23, 69,217, 84,132, 16,202,185,104, 9, 93, 77, 83, +117, 67, 51, 76,189,253,106, 88,150,229,120,186, 29,234,150,167,168, 38, 23, 18,169,170, 9, 33, 37,149, 96, 20, 72,113, 28,193, + 32,144,139, 23, 8, 32, 1, 4, 4, 72, 2,198, 89, 67,235,162,204,179, 44, 41,226, 40,141,102, 11,209,212, 53, 33,132, 82,206, +129, 4, 8, 33, 29, 43,170,138,117, 93,181,108, 67, 55, 52,140,177,170, 98, 85, 87, 13, 67, 83,176,130, 20,116,199, 61,167,127, +242, 83, 31,152,199,217,239, 62,253,194,206,112, 90, 55, 76, 85,149,126,215,239,248, 54,105,216,120, 22,237, 13, 39, 81, 90,180, +197,244, 66, 64,237,171, 51,167, 79,252,202,103,255, 73, 63,180,202,116, 74,171, 44,153,238, 99,221, 61,251,224, 71,177,170,201, +182, 11,129, 0, 2, 9,132,100,140,212, 69,148,207,246,227,233, 81,154,228, 85, 81,181,107,197,139,246, 14, 33,172, 42,186,174, +234,134,110,217,166,229,152,166,229,232,182,111,216,129,102,186, 88, 51, 72, 67,177,102,168, 82, 48,210, 16, 78, 90, 28, 19,194, + 91,204, 43, 0,139, 81, 13,185,128, 74, 89, 67,171,188,200,178, 52, 78,231,179, 36,154,165,121,154,231, 89, 89, 85,132, 80,198, +133,104,233,126, 93, 83,117, 93, 53, 76,205,178, 12, 85,215,116, 67,179, 29,203,180,116, 77, 87,117, 93, 85, 53, 77, 85,177,166, +105,170, 97, 98,205,130, 8, 63,249,193, 15, 65, 4, 41, 41,139,116,150, 37,121,153,151, 85, 89, 55, 53,169, 27, 74, 9,141,227, +236, 15, 95,186, 34,165,132, 79, 62,249,228, 71, 63,252,190,159,249,137,143,147, 42,169,178, 57,109, 10,206,136,102,134, 75, 39, +207, 99, 77,111,149,185,144,141, 20,156,209, 99,209,140,210, 36, 43,243,186,174, 27, 74, 91,132, 10, 32, 5,169, 24,171,186,106, + 26,154, 97, 25,150,109, 90,142,107,184,161, 97,119,116,211, 83, 84,189,174,107,195, 48, 0, 16,140,212,130,179,150,197, 2,199, +125,106, 11,255,221, 98,210,132, 96,156, 18, 82,229,101,158, 36, 81, 18, 77,147,249, 44, 78,227,162,200,203,170, 34,140,113,206, + 57,128, 80, 65, 72,215, 85,211, 92, 40,195, 48, 53,195,208, 44,199, 50, 45, 93, 55,116, 93,215, 52, 93,215, 12, 75, 51, 28,172, + 91, 72, 81,165,148, 8, 33, 0, 17,107,202, 50,157, 20, 73, 84, 20, 85, 83, 53, 13,161,140,114,198, 24,103,156, 49,193, 57,123, +251,230,244,205,221, 25, 6, 0, 88,154,204,103,187,164, 46, 56, 35,138,106, 47,159,121, 68, 55,109,176, 96,190,160,108,199,152, + 57, 37,101,154,205, 15,226,201, 48,141,147, 34,171,234,186,161,132,113, 46, 32, 4, 8, 41,170,170,168,186,106, 24,186,105, 25, +150,109,152,142,103, 58,161,238,132,186,233, 41,170,209, 84, 21,194,194, 52, 77, 70, 42,193,105, 27,107, 90, 68, 30, 8, 9, 22, + 11, 23, 11,142, 71, 8, 46, 88, 67,234,188,204,226, 52, 78,231,211,116, 62,141,227, 40, 43,242,178, 42, 27,198,184, 16, 2, 66, +168,105,170,170,169,166,169,217,182,233,250,142,229, 24,134,161,219,142,105,217,150,110,106,154,110,104,186,165, 26,142,102,216, + 8,107, 16,162,246,183, 16, 82, 24,171,171,116, 92, 36,179,178, 40,155,154, 80, 66,185, 16, 8, 34,172, 72, 0, 49,130, 8, 33, +206, 57,108,231,222,219, 25,243,138, 53, 5, 68,120,112,250,188,101, 7, 18, 74, 32,143,131, 48, 4,146, 51, 90,231,121,116,152, + 76,246,147,121,156,103,101, 85, 53,180,141, 53, 64,182,229, 76,235, 80,166,101,152,182, 97, 59,158,233,118, 13, 39,212, 76,175, + 37, 0, 25, 37,166,109, 51, 82, 19, 82, 73, 33, 90, 51,105, 77, 6, 2, 41,129, 56,158,233, 21, 64,114,206, 8,173,243, 50, 79, +210, 40,142,102,233,124, 26, 39, 81,150,101,101, 85,214,132,176,246, 73, 84, 21, 27,134,102,217,134,101,155,142,107, 89,142,105, + 24, 90,139,237,153,182,173,155,142,102,186, 88,183,177,110, 42,138,218, 2,205, 16, 65, 77, 53, 24, 39, 85, 54, 43,146, 73,157, +103,117,221, 80,202, 56, 23, 45,113, 46,145,128, 0, 41, 0, 0, 5, 8, 41, 36, 61, 70,168, 90, 26, 59, 88,189,203,246, 58,173, +189,220,226,184,129,224,172,169,138,100,146, 78,118,227,249, 44, 75,139,186,172,155,134,114,198, 37,144, 16, 34,172, 98, 93, 83, +117, 67, 51,109,211,178, 77,203,117, 77,167,107, 56,161,110,121,170,110, 53,117,221, 84,165, 97, 59,140, 52,164,202,165, 96,183, +136, 37,120, 76, 92,139,133,164,132,148, 66, 48, 66,155,178, 46,162, 44, 78,163, 89, 50,159, 38,113,148,102, 73, 81, 85,117,211, +180,250, 0, 42, 86,116, 93, 51, 77,221, 11, 28,215,119, 28,215,212,116,205, 48,117,219,181, 44,203,210, 45, 87,179,124,253,150, + 55, 9,206, 25,129, 8,181, 68, 89, 83,196, 69,114, 84,102,113, 83, 55,148, 18,206,132,108,131, 38,132, 2, 65, 8, 16, 2,160, +173, 67, 73, 77,242,172, 44,203, 26, 2,128,165, 4,126,127,211,241,187,242, 56,157, 2, 9, 37,144,130, 52, 85, 54, 75,167,123, +241,244, 40, 75,243, 50,175,235,154, 48,198,164,144, 16, 65,172, 96, 77,195,250, 34,115, 91,182,235,152,110,215,112, 59,186,229, +171,186, 5, 0, 72,227,185,235, 5, 82, 74, 90,101,156,177,118, 21, 99,177, 2,241, 46,255, 38, 23,156, 58,167,180, 41,155, 50, + 41,210, 56, 79,139,178,168,242,188,170,170,186, 44,235,182,228,147, 18, 96,172,168, 42, 54, 12,221,180,117,199,177,252,142,231, +122,150,105, 25,150, 99,218,142,123, 92, 55,152, 88, 51, 21,172,181, 43,218, 0, 66,213,176, 1, 0,164,202,170,116, 92,166,179, +186, 44, 41, 89,148, 32,139,208, 42,129,132,173,171, 0,198, 57,105, 88,158, 21,241, 60,141,102,105,146,150,183,210,252, 34,103, + 64, 40,164, 0,130, 19, 82, 38,217,124, 24, 79,134,105,156,182,225,134,209, 54,220, 64,165,205,163,134,102, 90,186,105,153,182, +107, 91,110,104,186, 61,221,246, 85,221, 65, 88, 45,178, 88, 55, 44, 55,232,112, 82,115, 70, 90,150,255, 22,217, 10,165, 20,199, +107, 61, 0, 72,193, 25,163, 21, 41,211, 60,141,179, 36,163, 13,213,116,181,211, 15,123, 75, 93, 0, 36, 99, 34,142,210,131,221, +201,124, 50,111, 25, 22,211, 50,108,215,116, 92,219,241,108,207,179,109,207, 51,157,176,157,152, 80,117, 19, 41,154, 16,156,209, + 90, 10,161,234, 38, 82, 48, 35, 85,149, 78,203,116, 82,151, 89, 83, 55,188, 21,141, 4,173,159, 64, 4,165,108,105,125, 73, 9, + 45,203, 42,137,242,249, 36, 30, 79,147, 89, 89,165, 28, 2,168,181, 11,128,173,140,218, 49,151,162,140,143,146,201,254,108, 58, +171,138,186, 42,107, 74, 40,231, 92, 2,128, 20,164,170, 88,211, 85,195,212, 77,203,176, 28,203,118,125,211,237, 25, 78,160, 25, +158,162, 25,180,174,138, 44,241,194, 30,163, 53, 45,179,150,193,105, 39, 42,222,149,200, 98,138, 79, 74, 41, 56,109, 72,157,149, +105,148, 70,113,150,150, 82, 74, 63,116, 45,219, 68,138, 2, 33,132, 8, 65, 0, 93,223,221,216, 92,105, 33,212,163,241,188, 72, +203, 32,116, 28,207,118, 92,219,242, 58,150,211,213,109,191,117, 40, 32, 37,163, 53,103, 12,171,170, 98, 24,130,179, 42,159,151, +241, 81,149,199,164,174, 24, 99,156, 47,150, 15,224,187,167, 1, 0, 72,198, 88, 93, 53,121, 90,206,103,241,248, 40, 26, 71,121, +212, 52, 84, 74,129,212,119, 99,144, 20,130,145,186,206,231,217,116, 55,158, 78,210,164, 40,139,186,105, 8,103, 76, 8,137, 16, +196, 88,209,116, 77, 55, 52,203,210, 45,219,178, 28,199,116,187,166,219,209, 90,159,130, 48,139,103,142,231,219,170, 79,170,156, +115,210, 18,252, 82,182,171,111, 18, 72, 32, 97,235,243,237, 88, 4,101, 77, 81,229,113, 26,197,113,148,212, 85, 99,154, 70,111, +169, 99, 90, 22, 84, 48,130, 8, 34,180, 88, 41,148, 64, 10,161, 74,161, 25,166,227,123, 66,240,166,170,147, 36, 79,179,218,239, +219,186, 19,170,186, 5,145,194, 25, 21,180,129,138, 98, 88, 46,128,128, 84,121,149, 77,171,116, 90, 87, 57, 37,132, 51,126,107, +106,106,225, 47, 45, 15, 38, 4,161,180,204,235, 36,202, 38, 71,243,163,113, 60,206,138,130,113, 1, 36, 4, 8, 73, 8, 96, 43, + 32,206,154, 34, 78,103, 7,241,228, 32,141,210, 60,111, 83, 56, 21, 92, 64, 8,177,138, 85, 85,209, 13,221, 52, 13,211,214,109, +219, 54,189,208,112, 58,134, 29,170,166,163, 40,106,145,197, 8, 41,158,223,161,164,226,172,145, 98, 65, 35,130, 69,230,190,229, + 77, 18, 2,201, 57,227,164,106,170, 52, 75,162,100, 22,103, 89, 33, 5, 8,187,126,119,169,167,106, 6, 66, 10,108,165, 3,222, +221, 87, 1, 8, 73, 41,161, 88,220, 80,213, 76,199,239, 64, 8,103,195,221,139, 47,191,186,121,230,212,202,198, 89,213,176,177, +110, 33,140, 57,169,235,124, 94,102,211,166,136,105,211,180,229,210,177,143, 31,227,205, 0,182,139, 92, 77,211,228,105, 57,159, +198, 71,163,249,104,154,204,234,134,112, 1, 16,192, 0,154, 24, 49,168, 16, 14, 48, 4,160, 46,162,201,238,219,209,116,154,165, + 69, 89,212,132, 16,206,132,148,178, 45,252, 52, 93, 53, 44,221,180, 12,203, 50,109,215, 55,220,174,225, 4,186,233, 41,154, 41, + 56,139,103, 99, 63,236,114, 70,155, 50, 21, 98,193,105, 66, 40,143, 83,184, 4,183, 86,176,132, 96,172,161,117, 94,166, 81, 28, + 69, 73,148, 49,202, 12, 83,239, 45,117, 93, 63, 68, 88, 93,140,176,200,182,209,128,240,248,137, 32,128, 18, 10,136, 0,144, 16, + 64, 8, 33, 68, 80, 65, 88, 93,218,236, 44,109,158,169,203,148,115, 98,234, 61, 0,100,147,205,203,108, 90,231,115, 82,151,140, +182,224,145,252,174,207,216,185,181,203, 37, 72, 67,202,178, 73,162,116,122, 20,141, 70,243, 81,146,103,148,113, 41, 21, 8, 53, +132, 92, 21, 7,150,145, 8,148,100, 4, 3, 0,243,120, 54, 58, 48,242,172,108,170,166,221, 80,131, 16, 96,220,230, 41,205,176, + 12,219, 54, 45,199,177,188,208,116,186,154,229,171,134, 5,129,146, 70, 83,219,241,188, 32,164, 77,217, 6, 99,112,108, 48,237, +108,238,241,194,146, 4, 82, 8,206, 40, 41,155, 34, 73,227, 40,154, 38, 85, 81,169,134,218, 95,238, 6,157,142,102,182, 83, 3, +237,182,141,132, 0,181,180,104,235, 95,237, 99, 65, 0,193, 45,249, 32, 69, 65, 24, 97, 77,193,154,162, 26,150,215, 67, 88,231, +164,170,243,168,202,166, 77,153, 82,210,112,206, 23,227,129,139,117, 70,112,188, 90, 38, 25,227, 77,221, 20, 89, 57,159, 38, 71, +135,179,195, 73, 52, 45,234, 90, 8, 0,128, 10,161,165,226,192,208,124,199, 10, 66,135,103, 4,100, 4, 3, 0,202,162, 74,230, + 89,211, 16,182,104,249,224,113, 48, 54, 76,219,176,109,203,242,124,211,237,154,118,168,154, 14, 86,205,166, 46,154,186,114,253, +144, 83, 66, 72, 41, 4,147, 66, 44,158,231,214,185,142, 69, 35,165, 96,180,161, 85, 86,164, 81, 60, 79,146, 40,149, 82,118, 7, + 29, 63,244,116,203, 86, 20, 13, 34, 4,225, 98,242,178, 21,133, 20, 16, 0,177, 24,159, 23,109,179, 35, 37, 0, 16, 66,132, 16, + 68, 10,196,170,130, 53, 85,183,117,203,147, 82, 52, 85, 90,165,179,186,136, 73, 93,112,198,196, 49,155,121,139, 16,111, 77,135, +115, 78, 8,171,203, 58,137,243,233,120,126, 56,156,141,162, 44,110, 8,151, 18, 66,104, 32,228,233,106,104,155,158,111, 7,129, + 27,116,189,116, 24,203, 97,140, 1, 4,132,208,170,170,219, 44,142,177,162,105,170,110,106,134,105,216,182,105,187,182,225,118, + 76,167,163, 91, 62,214, 45, 8,225,124,122, 24,116,122, 24,171,180, 41, 56, 37,114, 49, 20, 41,192,162, 54, 22, 18,220, 26, 56, +151,146, 51, 74,202, 58,143,211, 56,206,210,156, 52,212,118,237, 78, 63, 48, 45, 27, 41,154,162, 96,208,146,137,176,157,231, 19, + 2,182,222, 41,142, 5, 13, 22,245, 7, 88,248, 22, 66, 88, 81, 13,221, 14, 52,203, 71,138,202,154,162,202,102,117, 62,107,170, +156,145,134,243, 99, 43, 62, 54,153,182, 95,226, 66,112,198, 73, 67,243,188,140,102,233,209,225,244,112, 52, 31,231, 85,201,152, + 4, 0, 67,104,170,184, 99,234,129,107,251,129, 19,116, 92, 63,244,130,192,217, 79, 27, 32, 65,187, 27,201,133,248,174,166,193, + 52, 44,203,176, 28,211,114, 92,203,237,233, 78,168, 25,142,162, 26, 77, 85, 16, 90,251, 97,143,145,134, 51, 34, 57,107,245, 4, +143, 7, 67,142, 69, 35,219,105, 93, 70, 9,169,210, 50,139,146, 56, 35, 13, 81, 85,236,122,142,105,155,170,170, 35,164, 30,231, + 41, 8, 96, 27,167,128,148, 0, 74,177, 24,125,129, 18,180, 9, 16, 44,198,189, 17, 82, 32,194,170, 97, 91,193,178,170,153,156, +147, 42,157,212,217,172, 46, 99,218, 84,183, 12, 7,252,235,210, 57,158, 55, 97, 85,213,100,105, 62, 27,199,163,225,116, 56,141, +231, 85, 67,133,132, 16, 24, 8,185,186,214,113, 12,223,119,130,208, 11, 58,110,208,241, 92,207,182, 29,203, 58,136, 1,144,120, +241, 49, 40, 88, 81, 53,220, 46,159, 88,150,105, 57,150,233, 6,166,211,213, 45, 31,235, 54,128, 48,153, 79,188, 32, 84, 85,149, +214,133,224, 84, 10,126, 28,101,110,233, 76,130,119,167, 68, 24,107,170,186,140,243, 36, 41,242, 10, 66,224,122, 54,198, 10,198, +170,130, 20,132, 80,139, 15,182, 40, 71,251,203, 16, 30, 3, 28,112, 17, 52,224,187, 65, 89,129, 72, 81,176,102, 56,161,233,245, + 17, 68,164, 74,171,108, 86, 23, 17,169,114, 74,137, 20,239,110,140, 2,249,238,185,164,148,156,241,166,161, 85, 81,197,243,116, +124, 56, 63, 28,205, 70,113,158, 81,202,165,196, 16, 90, 42, 14, 77, 61,244,108, 47,112,194,142, 23,118,125, 63,116, 29,215, 50, + 45,203,241,187,186, 57, 95,212, 65, 10, 86, 76, 75,211,244,214,112, 12,203,113, 77,183,163,219,161,110,186,138,102,144,166,174, +171,210, 11, 66, 70, 27, 65, 27,177, 24,184, 90, 36,225,197, 72,182, 16,139, 71, 21,156, 51, 66,155,188, 76,227, 36, 74,211, 36, + 23, 92,216,174,133, 80, 59,146, 42,219,209,127, 41,165, 0, 28, 66,180,248,148,146, 54,124, 9, 1, 91, 4,161, 29, 90,133, 80, + 65, 8, 64,164, 96, 85, 53, 29,211,233,170,134,205, 41, 41,242,184,202,167,164, 76,105, 83,114,206, 91,124,238,187,162,222,226, + 59, 33,218, 10,144,228,105, 49,159, 38,163,225,116,120, 52,159, 22, 85, 37, 4, 4, 64, 71,200,213,181,174, 99,250,254, 98, 54, +204,239,184, 65,232,121,190, 99, 88,142,110,133,150,215, 81,180, 27,237,124, 7, 80, 85,108, 57,182,105, 26,182, 99, 90,174,111, + 56, 29,221, 14, 84,221, 6, 16,166,209,204,241, 2,199,113, 72,157, 11, 70,191,107,191, 6,128,119, 77,166,157,133,106, 63, 92, +163,108,202, 52,143,147,104,158, 68,179, 36, 77,114, 69, 65, 66, 10, 21, 43,150, 99, 74,137,164,224, 66, 32, 8, 36, 66, 10,144, + 2, 64,180,200, 80,162,197,204,224,194,167, 80,187, 20,135, 21, 77, 55,172, 54,226, 40,164, 76,171,108, 94, 23,115, 82, 21,148, + 54,146,139, 5, 72,210,170, 75, 44,108, 16, 72,201,185,160,116, 17,143, 39,163,249,225,225,244,112,154,196, 53, 33, 82, 40, 16, + 26,138, 18,154,122,199,179,253,192,246, 67, 47, 8, 92, 55,112, 92,207,118, 3,215,118,187,134,237,107,166,167,234,166,162,104, +178,181, 32, 77,215, 60,207, 54,109,203,114, 66,221, 13,117,211,199,154,217,212, 37, 33,141,235, 5,140,214,156, 53,178, 45,183, +128,132,199, 62,181, 8, 56,139,246, 74, 10, 78,104, 83,214,121,146, 68,201,124, 22,207, 39,113, 18,231,101, 89, 35, 4,185,144, +140,114,187,176, 92,207,178,108, 83, 74,169, 40,138, 68, 28, 34, 5, 34,212, 46,195, 1, 8,165,132, 16, 1, 4, 49, 68, 10, 66, + 24, 41,170,162,233,186,229,169,186, 45,165,168,146, 73,149,207,234, 34,101,164, 98,148,222, 26,228, 56, 94,117, 63, 78,229,162, +117, 43, 82, 22,117, 28,165, 71,195,233,112, 56, 27, 37,121, 78,153, 4, 82, 69,208, 81,213,142,109,134,190, 19,132,142, 31,186, + 94,224,122,190,237,248,182,227,122,166, 27,234,118,168, 27,174,162,233, 24,107, 8, 31,227, 65,186,174, 58,190,103,216,129,225, +116, 84,195, 65, 10, 78,230, 19,199, 15, 85, 85, 37,117,206, 25,249,174,196,112,236, 91,224,221, 15, 40,104,187,170,166,206,202, + 52,141,163,100, 54,137,163,105, 18,199,121, 85, 86,164, 97,109,204, 1, 0, 20, 37,153,207, 51,203,212, 92,223,118, 92, 75, 55, +116, 85, 85,145,162, 32,132,129, 2, 1, 68, 10,194, 16, 97,132, 85, 5,171, 80,193, 24,235, 88,183, 20,172, 51, 82, 85,217,172, +201,163,166,206, 24,165,226,184, 50,190,229, 80,199,146, 18, 66, 72,206,120, 85, 53,121, 86,206,167,209,232, 96, 58, 60,138,198, +121,217,112, 1, 33,208, 21,197,215,181,174,107, 6,161, 23, 4,142, 31,122, 94,224,184,158,253,255, 52,118,101, 59,142,228, 70, +144, 87, 93, 60,234, 80,143, 97, 24, 48,224, 63,217,255,255, 16, 79,171, 53, 82,221, 7,111,210, 15, 44, 73, 61,126,216,221, 22, +208,221, 15, 2, 36,164,146,153,145, 17, 25, 20,111, 24, 19,109,197, 47, 57,171,179,130,145,172,128,136, 64,132, 19, 37, 70, 0, +136,121, 89,177,250, 71, 78, 91, 82, 82, 16,193, 60, 62,234,246, 35, 56,227,173,142,225,213,170,158,180,223,247,244, 73,240,216, + 40,125, 44,235,188,140,195, 60,220,167,177,159,151,121,151,135,182,206,129, 8, 32,132,214,122,163, 13, 68, 80, 43,188,174,250, +254, 88,243, 12, 87, 52,231,188,226,130, 82, 86, 21, 85,153, 23, 37,202, 16, 66, 0, 65, 4, 17, 38,164, 32, 57, 69, 8,155, 99, +150, 91,175,143,217,170,195, 57, 23,227,183,101, 81,240, 91,241,241, 62, 56, 99, 15,169,151,105,123,220,134,207,159,143,107, 63, +141,202,184, 0, 16,132, 52,195, 93, 85, 94, 26,214,116,162,237,234,166,227,117,195, 69,205,184,224,180,190, 20,188, 75, 42, 11, + 38, 57, 68, 56,161,138, 87,128, 64,218, 4, 71, 89,169,246, 13, 34, 92, 55,157,211, 71,240, 38,156, 3,103, 4,240,221,174,224, + 59,143, 66,112,206,154, 67,238,203, 58, 46,125, 63, 13,143,105, 26,214,109, 61,148, 52, 73, 47, 79,196, 72, 89,230,121,158, 81, + 90, 34,136,180,113,218,120,169,156, 84,118, 28, 15,130,135, 44, 39, 69, 78, 42, 90, 48, 94,118,151,182,251,231,191,185,248,200, + 10,234,189,149,107,175,182, 65,203,213, 26, 21,220,247, 70, 5, 94,236, 82, 76, 91,239, 62, 24,101,246, 93, 78,195,114,187,246, +215,107,255, 53,109,155,117, 33, 70,130, 32,207,179, 15, 86,117, 29,111, 91,209, 92,234,166,229,162,230,162,102,188,174,171,250, + 82,208, 46, 47, 57,201,203, 52,238, 0,248, 84, 65,227,147, 81, 68,164,192, 89,126,236, 11,201, 11,130,137, 85,155, 63,235,241, + 89,245, 78,218,248, 5,222,146,111,194, 26,173,118,185, 45,211,184, 12,247,121,232,167,121,218,246, 77,106,109,188,255, 70,140, +242,146, 11,202,107,198, 57,165,172, 36, 25,113,206, 29,187, 86,218, 6,231, 33, 66, 89, 70,152, 40,127,252,227,199,199,191,254, +195,187,127,225,188, 4, 49, 26,185,202,173,215,251,100,212,238,172, 77,247,203,156,222,153, 84,110,194, 57,173,197, 16,172,117, + 74,233,109, 57,250,199,116,251,124,124,222,198,251, 38,149,119, 0,194, 2,227,182,204, 46,130,117, 23,113,110, 50, 55, 92, 52, +140,215,156,214, 13,229, 63,114, 90,103, 37, 35, 89,129, 48, 1, 16, 2,128, 18,253,224,189, 13,222,194,151, 46, 54, 13,143,166, +251, 17,188,117,122, 15,193,129, 87, 64,206, 9,224,196,180, 47, 26,208, 90,101,213,190, 45,235, 52, 44,253,125, 28,250,121,153, +143, 99,151,198,184, 24, 35, 66,248, 84, 96, 88,197, 69, 37, 4,227,130,241,186,162,140, 86,140, 22, 21,199, 57,197, 36, 71, 8, + 35, 76, 48,206, 35, 68, 16,227, 44,171, 80,150, 5,107,244, 62,202,109,208,199,236,140,118,214,197,231,236, 2,190,131,235, 24, + 67, 56,167, 7, 41,213, 50,109,247,219,248,245,243,113,237,167, 65, 25, 31, 2,130,176,194,228, 66,203, 75,203,218,238,140,142, +104,184,168, 41,175, 57,173, 79,214, 60, 43, 40, 38, 57,196, 4, 2, 24, 79,200, 26,131, 53, 70,173, 86,110,103, 6,121,239,154, +246,226,140,124, 17,128, 79, 42,230,153, 49,239, 71,210,126,180,150,219,182,172, 99, 63,247,247,105, 28,150,117, 62,164, 84,214, + 58, 0, 0, 33,168, 44,242,146,150,140, 87, 92, 80, 33, 40, 19,148,215,148,113,198, 68, 91,242,143,156, 10,146, 87, 73,129, 9, +206, 56,103, 16, 34, 89, 81, 65,132,157,218,228, 58,168,109, 48,106,115,198,120,127,242,109,225, 73, 86,196,111, 63,206,122,163, +205,190,203,169, 95,110, 95,253,245, 58,124, 77,235,102, 93,136,128, 32, 36,242,236,131, 85,151,142,183,151,186,238,120,211, 8, +209, 50, 46, 24, 23,130,138,143, 34,137,116, 69,133,113, 6, 16, 78, 56, 21, 70, 16,162,247, 86,235,125,218,199,235,177, 62,129, + 34, 66,200,233,195, 89,157, 6,171, 51,135,207,146, 12, 32,248,118,236,163,119, 70, 41,185,109,243, 54,244,243,144,162,179, 28, + 82, 26,239, 29, 0, 32,203,112, 81, 20, 21, 43, 56,163,188,166, 92, 80, 46, 40, 19,140, 11, 70, 69, 87,176, 75, 65, 5,206, 75, +132,136,247,222, 91, 29,188,197, 89, 65,242, 18,132,168,183, 65,110,131,218, 39,171, 14,231,236,183, 5,238,247,193, 6, 32,196, + 8,210,125, 47, 74,153,109,217,135,251,244,117,125,124,126,141,247, 93,170, 16, 32, 0, 37, 65, 77,145,255,168, 89,219,137,230, + 52, 8, 48, 81, 51, 94,115, 38,154, 68,242,229, 37,199, 89,129, 73, 6, 33,138, 16,194, 51, 37,189, 51, 82,109,227,210,255,156, + 30,183, 99,151,167,133, 53, 56,227,172,244,222,191,228,205, 87,116, 82, 10,133,240, 4,238, 90,170, 99, 95,151,125,184,207, 67, + 63,142,195,146,196, 95,231, 2,132, 48,203,112, 89, 22,148,149, 76, 80, 33, 42, 81, 51, 38, 40,231,140, 9, 86,137, 75,193,218, +188, 20, 56, 43, 0, 64,206,106,103, 84,140, 49, 43, 42, 76,138,224,140,222, 38,185,245, 90, 46, 70,235,224,125,240,225, 61,118, +130,120, 94,200, 21,207,141, 92,107,173,220,213, 60,109,247,219,240,117,237, 63, 31,243,172,141, 9, 1, 67, 72, 51,114,169,202, + 75,195,218, 11,111,218,186,233,206,122,204,106,198, 68, 87,242,174,168,106, 82, 48,156, 23, 8,145,211,212,251,132, 42, 78, 31, +114,237,231,254,191,227,253,177,206,155, 86,230,201, 40, 6, 23,188,123, 79, 84,239,142, 14,222,208,221,123,103,149, 58,142,101, +218,134,126, 58, 53,153,229, 44,201, 16,194, 60, 39,101, 89,176, 84,146,207,170, 92, 49, 65,153,168, 43,222, 37,104,142, 73, 30, + 1, 8, 70, 57,171, 16,194, 89, 73, 33, 34,206,236,106, 29,228, 54,164,193, 42,221,146,246,106,154,224,197,105,251,152,174,231, + 54,218,236,219,217,173, 62,175,253,109,217, 55, 99, 35, 0, 25,130,117,158,127,240,170,235,120,211,138,166,123,213, 99,198, 57, +167,245, 37, 29,171, 44,167,232,236,229,233, 88,165,118,108,141,218,142,249,215,252,248, 57, 62,134,117, 61,212,161,156,115,111, +109, 62, 25,233,158,250, 6, 56,181,241, 23,236, 9,206, 26,163,228,177,190,163,179,110,235, 97,180,245,222, 35,136,178,156,148, + 85,193,121,197, 56,229, 53, 21,130,242,154, 49, 65, 25, 23, 37,239,210,196,139, 72, 22,162,119, 90,123,103, 49,201, 72, 81, 1, + 8,237, 49, 31,169, 91,201,195,189,169,156,239, 3,240,217, 27,124, 8,206, 56,165,244,186, 30,195,125,252,250,236,175,191,198, +251, 38,117,154,173, 48,238,202,252,163,102,109,199,219,132, 0, 79,152, 67,153,168, 43,113, 73,162, 11,201, 75,140, 51,136,113, +162, 11, 32,136,209, 7,239,180,150,235, 62, 93,167,251,117, 26,230,125, 61,164,210,206,184,115,249,255,233,203,114,103,124, 96, +132, 1, 4,144, 32, 94, 72,194,185, 51, 90, 29,199, 50,239,195, 99,238,251,105, 30,215,125,147, 90,153, 16, 34,130, 40,207, 73, + 89, 21,140, 83, 46, 42, 81,211,228,165, 96,156, 81,206, 43,126,201,169, 32, 57,197, 8,121,231,188, 85,222, 89,146, 23, 36, 47, + 99,240,230, 88,229,246,208,199,162,149,242,206,199,144, 22,122,146, 84, 15, 35, 72, 64,228,180, 15,105,237,164, 84,235,180,222, +111,227,245,243,113,237,151, 73, 27, 23, 34, 70,144, 18,124,161, 85,215,208,180, 70,159, 18, 71, 36,229, 67, 52,233, 88,101, 37, + 71, 89,142,113, 6, 33,138,175, 59, 6,157,243, 86,233,125,218,134,207,241,241,107, 30,151, 99,151, 74,153,196,255,164, 51,244, +204, 32,255,156, 66,195,155,219, 14, 1, 68,239,156, 51,234, 80, 75,170,202,143,121, 26,215,125, 63,140,180, 62, 4,132,224, 51, + 58, 21, 23, 85,242,152, 48, 65, 25,163,148,179,146,167,117,142, 10, 66,232,156,245, 86,133, 16, 72, 86,146,172, 8,206,232, 99, + 82,235,160,228,102,181,246, 62,156,209,241, 33, 49, 29, 47, 78, 48,132,232,189,211,202,238,155, 28,135,249,215,215,112,189, 14, +183,101,219,173, 15, 49,230, 9, 4, 10,218,181,188,233, 68,219, 10,209, 48,209,112, 33, 40, 21,140,242,238,164,207,139, 10,227, +252, 68, 58, 39, 1,229, 19,153, 39,151,126,237,127, 78,253,144,214, 84,140,177,206,251,211, 52, 9,158, 25,148, 56,227,111,176, +231,133, 36,189,181, 70, 73,189,206,251,216, 79,125, 63,207,195,186,109,210,156,106, 63,204,114, 82,156,209,161,188,102, 92, 84, +140, 83,198,171,138,179,103, 73,206, 35,128,193, 25,103, 52, 0, 1,103, 37, 38,153,183, 74,109,147,218, 6, 45,119,107,173,247, +111,223,219, 55,254, 24,156, 20,178,181, 74,153,117, 57,250,251,116,187, 62, 62,127, 77,253, 46,181, 15, 0,130,146,224,174,204, + 47, 34, 29, 43,241,251,177,226,137, 5,205, 42, 78,178, 50, 21,157,231,199,158, 6, 36, 99,212,118, 44,247,249,241, 57,245,211, +182,238,242, 80,214,158, 55, 30, 62,155,210, 43,131, 82,111,120, 9, 0, 73, 99, 77,149, 75,234,196,167,244,253, 60, 15,203,190, + 43,165, 76, 8, 1, 33,148,165,170,204, 18,222,169, 24,175, 24,167,148, 87,148,241,146, 54,121,201, 48,201, 1,128,222, 25,111, + 84,140,145, 20, 37, 38,196, 25,169,247, 81,110,163, 86,210, 25,235,211,218, 24,136, 48,177,137, 39,227, 26, 1,136,222, 7,107, +172, 60,244, 60,175,247,219,120,187,246,159,253, 50, 43,227,226,179, 91,209,178,107, 88,219,213, 77,203,155,150,243,154, 9, 65, +153, 96, 76,212, 37,239,114,154, 38,207, 18, 98,114, 58,199, 1, 0,167,208,173,244,177,236,227,117,234,111,243,184,166, 69,202, +228, 61,249,206,103,131,239, 11, 84, 33,250, 24,222,234, 72,240,206, 89,167,164, 89,151,109, 28,230,225, 49,207,227,186,109, 50, + 45, 17,156, 39,171, 44, 40,171, 24, 79,246, 36,250,180,190,208,156,114, 82,178,228, 81,115,206,120,171, 65, 4,164,168, 48,202, +156,150,106, 27,228, 62, 25,245,252,184,192, 11,220,156, 19,121,122,111,206, 57,163,237,177,203,105, 88,127,125,245,215,175,254, +107,218,119,231,124, 4, 57, 66, 34,207, 46,188,186,156, 48,231, 89,113, 56,101,130, 81,222, 20,172,203,169,200,138, 10,227, 2, + 98,146,184, 4,248,162, 58,147, 62, 58, 92,231,254,177,204,219,177, 43,173,140,127,169,174,241,237,137,249,109,195, 44,248,115, + 54, 75, 81,147,158, 10,119, 0, 0, 1, 97, 73, 68, 65, 84,118,214,105,165,215,101, 31,135,121,120, 44,243,184,110,219, 97,140, +123, 69,167, 40,114,202, 74,158, 74,143,160, 60,185,130,170, 42,175, 88, 94,112,242,138,142,209, 16, 0, 92, 84, 16, 33,171,119, +189, 15,114,155,141,214,175,100, 6,223,166,187, 23,105,225,156,215,202,236,235, 49,244,211,237, 58,124,222,198,251,126, 40, 23, + 0, 0, 37, 70,109, 89,124,212,180,237, 68,219,242, 58, 21,157,154,114,206,168, 96, 21,107, 11,214,228,165,192,121,137, 73,210, + 75, 96,186,237, 40,233,234, 86,237,114,125, 44,253,117, 26,198,117, 57,212,161,141, 61, 69,192,211,163,248,252,125,238,189,189, +151, 23,210,224, 14,211,136,238,149,212,219,122,140,195, 60, 62,115,199,104,235, 67, 68, 8,230, 25, 46,203,156,241,146,215,148, + 37,160,204, 43,202, 43,202,170,138,241,156,214,201, 88,237,157,245,206, 0, 0,178,162,132, 24, 59,125,168,125, 80,219, 98,140, +182,169,131, 62, 73,165,111,168, 52, 38, 11,165, 58,244,178,238,253,125,186,254,124, 92, 31,211, 32,181,241, 1, 35, 88, 17,114, +169,138,143,150, 53, 93,221,180,188,110,121,157, 58,166, 72, 29,179, 45,104,147,149,140,100, 37,194,217,171,232, 36,136,235,157, + 54,114, 61,166,219,244,184,205,105, 35, 67,106,235, 92,112,175,235, 24, 99,120,157,172,248,114,212, 1,248,199, 31,127,188, 56, +167,255,255,138, 15, 8,254,196, 33, 21,127,251,243,219,127,127,255, 43, 68,254,228, 89,240,181,175,248,187, 77,233, 47, 95, 61, +254,197, 11,195,191,243, 70,224,211,255,240, 63,105,223,243,224, 10,178,220,221, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/flatten.png.c b/source/blender/editors/datafiles/flatten.png.c new file mode 100644 index 00000000000..6c82baec5dc --- /dev/null +++ b/source/blender/editors/datafiles/flatten.png.c @@ -0,0 +1,291 @@ +/* DataToC output of file <flatten_png> */ + +int datatoc_flatten_png_size= 9114; +char datatoc_flatten_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, + 0, 0, 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, 11,252, 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, + 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, + 0, 7,116, 73, 77, 69, 7,218, 7, 19, 0, 34, 12, 33,249,187,131, 0, 0, 32, 0, 73, 68, 65, 84,120,218,237,125,121,176,165, + 87,113,223,175,251,124,247,190, 89,222, 44, 26, 52,131,144, 52, 35,246, 29,155, 29,140,164, 17, 20, 24, 12, 9, 24,108,150, 56, +198, 24, 85,217, 18, 18,184, 92,177, 42,148, 77, 2,146,192,142, 67,197, 46,178,176, 99,138,148,169, 74, 48,149,160,120, 9, 78, + 88, 21,177, 8, 36, 52, 90,144, 70, 27, 90,162,145, 70,219,236,111,222,125,247,222,239,156,254,229,143, 62,231,124,223,125,243, +102, 24, 9,129, 69,202, 87,175,230,189,121,115,239,247,157,175, 79,159,238, 95,119,255,186, 37,219,183,111,199,143,125, 29,207, +155, 26, 51,187,125,231,119,174,251,206, 87, 83, 59, 53, 99,138,113,105, 52,249,224,199,255,234,142,187,239,175,111, 82, 2,195, + 85,243,128,137, 8, 4,162, 58, 92, 61,184,240, 61,255,236,211, 23,159, 87,223, 20,182,109,219,246,132,117, 75, 34,194, 68, 26, + 33, 80, 81, 85, 0,242,218, 51,158,255,119,151,254, 0,128, 10, 32, 2, 0, 18, 68, 84, 0,136,136,134,102, 48, 28,204,173, 26, +126,250,226,119, 3,104, 0,168,170, 6,141, 45,168, 52, 3, 0, 21,145,160, 24, 52, 0, 62,243,161,119, 43,128, 39, 63,251,249, + 42, 26,130,138,223,201, 47,172,170, 65, 67,208,225,176,105, 0,140, 15,239, 75, 41, 1, 8, 33,128, 64,132,193,252,125, 65,131, +136, 40,128,241,226,161,141, 27,215,129, 16,129,170,168,138,136,132, 32,180, 68, 80, 68, 26, 64,198,163,165, 24,147, 0,162,106, + 52, 81,136,177,109, 13, 16, 8,255,247,151,191,215, 0, 88, 60,188,148,146,197, 24,151, 70,147,209,226,210,250,141,243,131,225, + 64,140, 42,114,197,183,175,155,154,201,113,237,221,241,188,228,142, 27, 47,167,165,107, 46,251,123, 51, 75,137,211,233,116,188, + 52,249,221,247,127,108,230, 77,187,126,116,245,213,151, 94,146,146, 89,178,148, 44,165, 20,219, 52, 25, 79,191,119,237, 45,127, +241,223,190,146, 55, 24, 22,105, 4, 64,130,194, 16, 66, 51,108, 86,173,158,251,165,231, 62,229,147, 23,230, 61,214, 56, 25,105, + 8, 34, 34, 2,133, 2, 16, 32, 52, 58,156, 27, 14, 6,225,147, 23,190, 11, 64, 19,227, 68,131, 8, 26,146,180, 68, 64, 85, 73, + 54, 77, 32,243,230,203,206,203, 47,185,243,230, 31, 2,136, 49,198, 54,165,148, 72, 0, 32, 25,167,209,104, 42, 65,167, 75,135, + 78,222,122, 42,128,188, 81, 26, 68,178,194, 72, 16, 85, 37, 83, 51, 25, 29, 76, 41,182,109,108,154, 16, 52, 88,136,201, 40, 10, + 26, 72, 2,248,202, 55,119, 52,163,197, 37, 51,155, 27, 14, 82, 50, 8, 20, 74,101,140,201,204, 84,212,104,139,163, 73,179,120, +120, 68, 50,198, 52, 29,183,163,209,120, 50,158,108,121,220,137,170, 66,202,173, 55,221,185,235,174,251,219,148,240, 72,237, 93, +227,223,214,172, 94,245,189,175,253, 87, 17, 34,165, 59,110,185,121,188,116, 24,132,153,165,152,110,186,253,158, 15,125,236, 11, + 63, 94, 7, 78, 63,227,140, 47,252,231,255, 64,242,202,175, 95,210,136, 36,146, 32, 19, 65, 26, 64, 99, 74,201, 21, 50,181,150, +146,157,123,209,199,143,190, 34,145, 29,223,248, 31, 3, 13, 20,136, 25,141, 16, 33, 1, 35,128,160, 42, 34, 26,148,141,197,148, + 62,251,199,239,137, 41,209,248,174,139, 63,185,252, 66, 54,157,136, 8, 68,224,251,234,138, 5,138, 10, 8,136, 40,169, 0, 69, + 52, 72, 10, 33,196,148, 98,250,244,197,231, 3, 60,231,194, 79,100,125, 19, 32, 78, 71, 42,162, 42, 33, 4,205, 7, 59,171, 1, +136,172, 12, 34,126,150, 7, 77, 24, 12,154,225,220,112, 56, 55, 8, 77,243,153, 15,157,191,102,245, 42, 0, 10, 32,182, 19, 13, + 65, 85, 67,208,166, 9, 65, 27, 13,170,170, 34,208, 0, 74, 94,166, 95, 75, 84, 67, 19,180,145, 16,116, 56, 12,131,193,224,163, + 31, 56,231,233, 79, 60, 77, 1,180,227,133,211,158,252,212, 20, 19, 96, 34, 8, 1,170, 18,154, 16,154,160,162, 65,202,234,208, +173, 46,104, 8, 33,248, 51, 52, 33,188,239, 93,191,214, 0,152, 44, 30, 48, 75,143, 61,121,203,158, 7,246,166,148, 84, 85, 85, + 0,131, 4,138, 32, 37,163,128,249, 49, 1,138, 42,141, 52,131,136,138, 2,112, 3, 39, 75,139,135,141,164,113,245,234,185, 24, +227,210,210, 52,111,148,208, 40, 84, 13, 68, 50, 3,141,160,153,144,137, 70, 26,140, 38, 34,162,242,197, 47, 93,214, 0, 24, 45, + 46, 17, 66, 75, 70, 90, 50,166, 52,153,164,233,180,157, 95,191, 86, 4, 34, 66,154,138,152, 8, 8, 34, 17, 16, 17, 4, 40,244, +219, 95,223,177, 48,158, 68,179, 6,192,225,133,145, 31, 62,146, 61, 13, 76, 15,220,187, 55,197, 52,157,182, 41,166,148,204,204, + 82,178,118,218,166,104,211,105, 59, 30, 79,199, 75,147,209,184, 93,154,198, 81, 27, 31, 57, 59,249,136,188,182,109,219,166,143, +212,181,242,233,127,203, 27, 95,243,193,247,189, 39, 78,167,139,135, 15,221,121,243,141, 33, 4,154,197,148,226, 52,126,232, 19, + 95,188,245,206,221, 63,254,244,223,246,195,203, 52, 52,164,105, 24,236,184,244,111, 72, 10,132,164, 25, 45,165,148,172,109,219, + 20,109,113,113,233,247,254,205, 95, 28,227,209,228,238,219,174, 54, 75,128, 92,125,233, 95,155, 25, 0, 26,205,204, 0, 38, 35, +105,201,218, 54,186,247,184,245,174,123,255,221,103, 47, 89, 89, 70, 34, 42, 34, 87,125,227, 75, 66, 87, 25,186, 42,136,229,211, + 0,149,166, 9, 77, 19,154, 65,120,234,105, 39,187,219, 56,242,165,174,114, 65,149,126,158, 4,116,147, 86,206,106, 40, 71,171, +105,154,166, 9, 33,132, 79, 92,248,174, 77, 27,230,151, 95,200, 44, 45,236,187, 31,200,159, 19,138, 95, 77, 32, 32,220, 78, 5, + 17, 7, 13,161, 9,205, 32, 52, 33,252,233, 31,252,214,139,159,243,148,217, 11,197,118,255, 3,247,160, 28,112, 10,253,121, 8, + 80,233,199,189,119,228,125,105, 65, 69,127,231,205,191,252,148,211, 78,233, 93, 40,181, 89, 20, 42, 0, 52,123, 83,170, 80, 32, +125,211,161,128, 4,213, 32,218,104,211, 4, 17, 92,240,206, 95,237, 95, 40,206,111,120, 12, 0, 17, 13, 33,136,102,115,232, 54, +111,198, 12,169, 6,113,104,164,161,209,102,208, 52,141,124,234,162,243, 11,192,179, 56, 92,181,202,141, 95,190,115,190, 24,139, + 1,154,189,158, 58,230,146, 16, 52, 52,218, 52,250,194,231, 60,189, 60, 26, 77, 51,128,130,255,160,170,254,161,229,139, 18,209, +238, 95, 37,132, 16, 26, 61,255, 55, 94, 13, 64, 83, 59,141,237, 36,165, 4, 80,139, 54,136, 64, 84, 84,225,184,178,191,180,252, +216,110, 70, 69, 84, 67, 8,178,229,132, 13,106,113,106,105,242,196,167, 61,211,140, 0,243, 51,170,168,170,168, 66,160, 10, 71, +162,221,181, 84, 33,160, 80,213,111,164, 27,215,205, 55,169, 29, 39, 75, 52,139, 49,133, 80,228, 36,170, 98, 16, 82,164,248, 52, + 33,217,191,150, 38, 71, 62, 26, 2, 53,168,182,237, 56, 78,199,177, 29, 63,238,228, 45,180,124, 62, 84,125,183,125, 7,178, 30, + 72, 39, 36,145, 89,217, 49, 37,141,211,113,108, 39,237,116,218,182,237,250, 13,243,142,224, 0, 8, 84, 85,144,101,150,127, 5, +129, 64,204, 44,165,212,223,210, 16,180,105,167,173,145, 52, 51, 99, 74,105, 56, 28, 76,219, 54, 4,133, 8, 8,113,143, 45,166, +128, 17,110,211,153, 40,238, 8, 72, 8,190,253,173,107, 29,253, 69, 51,186,233, 72,102,150, 18,140,212,124,115,241, 35, 7, 49, +128, 25,111, 10,132,249, 63, 17, 9,114,112, 97, 68,162,105, 39,109, 34, 65,152, 37, 51, 90,178, 24, 83,187, 52, 1,176,122,237, +106,144,249,228, 37,138,128, 52,208,111, 65, 18,139,163,165, 43, 47,191, 33,153, 25,165,153, 76, 91, 26,125,153, 52, 75,201, 82, + 76, 41,166,182,141,135, 14, 30,158,140,167,243,235, 86,175, 93, 63,175,170,102, 38, 84, 19, 3, 48,153,180,215, 92,113, 99,219, +198, 73,219, 70,163, 81,154,118,218,166,100, 32, 8,184,172,252, 66, 41, 37, 26, 85,245,208,129,197,125,123, 14,154,209,239,209, + 78, 99, 27,227,116,210,210, 56,157,198,105,178,169,195,207, 71,149, 95,219,186,117,171,226,209,244,242, 88,107,229,215, 73, 91, + 54,253,234,107,207,122,198, 83,182,157,122,210,137,243,107,230,134,195, 64, 98,225,240,120,255,254,133,123,239,223,123,251,174, +251,190,125,197, 15,111,250,209,157,143,248,154,242,130,182,158,250,184, 75,191,252, 95,140, 36, 32,204,240,243,254,187,239,184, +239,206, 31, 97, 50, 58, 60, 25, 65, 68, 64, 51, 89, 59,144, 39,159,250,152, 39,159,178,233, 85, 47,126, 58,137,148, 82,140,201, +104, 76,136, 41,189,247,207,254,242,224,194,225,159,104, 65,201,108,215,143,174, 50, 51,210,130,251, 87,209, 43,191,246,165,102, + 48, 32, 25,154,224, 7,211,151,170, 10, 18, 6, 1,161,162, 36, 33, 65, 84,204,104,106, 26,244, 35,127,120,182, 71,144, 49,165, + 63,250,200,231, 15, 29, 30, 61, 28, 9,169, 6,210,163, 61,220,121,227,142, 3,247,221, 53, 24, 14,114,204, 71,230,224, 28, 98, +102, 16, 41,232, 48,227,149, 98, 74,161, 18,204,104, 38, 74, 85,181, 16,228,207,223,251, 78, 51,144,118,241,199,191,120,239,131, +251, 30,202,150,185,217, 20,236,252,254, 55,198,139,135,220, 22,250, 13, 33, 98, 52,146, 30,142,228, 31, 28, 28, 72,142, 88,131, +170, 1, 32, 69, 77, 25,104, 52, 85,210, 44,209,204, 44,201, 69,239,121,155, 3,220,247,252,241,103,146, 39, 41,126,204,130,204, + 72,139,211,201,210,226, 65, 55,232, 6, 8,144,111,131,140,150,136,158,173,151,238, 92, 24, 89, 62,165, 34,142, 63, 72,170,170, +165, 36, 26,104, 73,204,104, 98, 31,251,192, 57, 34,242,169,191,250,202,142,157,183, 29,107, 65,180, 72,179,125,247,254, 95,247, + 21,142,150, 44, 71,107,112,155, 74, 80, 4, 48,152, 64, 76,216, 67, 4, 46, 39, 58, 88, 35, 77, 68,130, 24, 41,166, 34, 98,102, +170, 98,137,102, 30, 76,218,185,111,123, 53,128,207, 93,242,205,239, 93,115,211, 74,136, 15, 72,169, 77,177, 29,143, 22, 4, 57, +126,103,193, 8,217,147, 21,159,230,216, 4,130, 30,102,234, 96,133,123, 84,247,209,142, 19, 53,116, 8,175,130, 60, 21, 21,200, +217,111,124,197,167, 63,120,126,208,229,134, 80, 1, 88,140,150,218,185, 53,235, 28,173, 57,152,145,242, 86, 41,191,113,255,234, +112, 46,227, 85, 46,195, 75,218,161, 67,213,144, 63,231,128, 76, 28, 44,250,178, 66, 80, 13, 10,200,199, 63,112,238,187,127,243, +159, 46, 95, 16, 45, 90,138,107,215,109, 40, 23,205,104, 44,104, 80, 13,170, 5,183,105,150, 74,134, 50, 88, 17,200,161, 11, 86, +203,229, 84,160, 65, 58,112,231,144,184,113, 60,171,207,125,250,105, 31,191,240,252, 89, 9,165, 8, 75,205,160,241,107,169,170, + 4,136,138, 4, 4, 69, 21,143,138,170,104, 65, 53, 25, 40, 45,147, 83,127, 7,243, 46,107, 1,106,245,193, 68, 67,144, 16,130, + 35,207, 16,194,220, 48,124,246, 79,126,175, 91, 80,138,211,148,166,169,157,156,242,196,167,151,187,101, 52, 4, 17, 85,212,173, + 20,173, 48, 23,249,225, 5,162, 43,139,170,175, 91, 29, 76,150,154,147, 82,207, 82,132, 32,170,162, 65, 47,254,253,179,147,135, +195, 22, 39,102, 4, 48, 28, 52,107,230,215,141, 14, 31, 86,101,145,189, 63,164,159,123, 35, 65,168,209,132, 66, 51, 81, 8,212, +140, 65,213,140,196,172,170,163, 59,134,102,230,151,163,250, 37, 20, 2,199,163,244,120, 71,248,164,173, 27,159,118,218,201,141, + 75,200, 35, 59, 18,155, 54,111, 86,213,133,131, 7,242,241, 18, 55,199, 32,225,219, 4,165, 82,104,128,239,159,153, 10, 72, 95, +180, 2,168,247, 94,182, 38,127, 38,133, 16,160,155,171,236, 54, 25,130,144, 66,162,105, 6, 13,128,212,142,205,220,177,146,228, +252,252,234,185,185,193, 3,247,221, 31, 66,240,171, 23,111,235,139,115,237,241,127, 0, 85, 96, 2,208, 68, 5, 52,203,193, 65, +183, 44,130, 25,197, 66, 85, 65,154,153, 27, 14, 19,235, 97,100,138, 32,182,109, 3, 32, 78,199,201, 23, 84,226, 87,146, 39,110, +222,244,192,253,123, 85, 85,212, 67,146,172,239,110, 47, 13,210, 25, 71,117,227,108, 16,120,212,195,178,172,146, 22, 83,130,254, +204,254, 45,107,152,205,236,240,129,131, 75,131, 65,211, 0,104,219,169,153, 21,175, 14,130, 30, 57,108,220, 48, 31, 83, 26,141, +198, 38,156,141, 17, 28,140, 80,202, 53, 13, 84, 40, 65, 55,173,121, 89,126,181,124, 89, 95, 72,246,202,174,133,117, 53, 36, 7, +195,193, 55, 47,251,174, 80, 27, 64,226,180, 53, 22, 35,157,151, 38,158, 50,176,100,195,193, 32,165,228, 14,203, 93, 1, 4, 32, +144,227, 9, 16,208,124,107,223, 29,161,229,237,119,140, 32, 16, 35, 93,162, 42,106, 48,165, 66,115,184, 65,114,113,113,233, 91, +255,235,251,110,220, 26, 0,211,182,166,176,243,134,121,192,231, 50,166,209,104,150, 44, 26, 1, 12,230, 6,197, 36, 58, 42,200, + 46,143,200, 16,193,213, 70,202,163, 67, 4,102, 57,140, 1, 64, 40,114,189,193, 31,236, 27, 95,189,210,140, 41,223,204, 23, 52, +153,246,178,159, 21,240,148,147, 78, 88,126,209, 82, 90, 26,141,205, 44,198, 36, 34,107,231, 87, 15,231,134,240, 40,208,186, 43, +212, 51, 37, 2, 71, 84, 2,192,213, 92,132,100, 51,108,118,124,255,134,195, 11,163,148,140,228, 52,165,104,140,164,145,190,160, +182,202,166,250,120,228,200,200,195, 35,171,209,155,165,186,184,184,111,207,212,115,120, 94, 63,176,152,131, 86, 17,184,219, 82, + 21, 75,214, 78,227,120, 60,153, 44, 77, 61, 47,108,100,140,201,191, 38,109,156,198, 20,205,218,148, 34,153,160,141, 8,190,115, +205, 29,245,120, 18, 51, 66,167,213, 45, 97, 81, 82,150, 48,174,190,234,143,229, 49,202,111, 45,203,152,229,132,177, 19,182, 89, + 74, 76,100, 50, 68,147,196,144, 8,106,120,148,229, 27, 61, 54,123,244, 44,102,251,246,237,122,164,153,255,135,125, 61,186, 34, +215, 71,227,130,142, 26, 74,191,252,244,231,191,106,251,139,182,157,186,229,132,245,107,231,215,204, 1,108, 35,247,237, 59,180, +119,255,194,221,187, 31,184,226,218, 91,190,254,237, 43, 65, 62,242,225,253,182,109,219,238,186,235, 46,255,203,147,159,120,218, +191,254,151,231,188,244,133,191, 24,219, 8, 26,105,177,157, 30,216,183,247,193,221,119,123, 80,225, 38,217,253, 82, 74, 6,179, +105,107, 95,250,234,229,223,185,106,231,254, 67,135, 31, 17,165,150,173, 91,183,238,218,181,235, 51,255,241, 79,206, 58,243,165, +162, 66, 51, 41, 46,225,218,239,126,189,198, 33, 21, 65, 87, 51, 83,141,100,108,141,180,148,236, 7, 59,111,255,212, 23,254,254, + 39, 93,208, 69,255,234,130,119,190,253,205, 70, 74,182,141, 4,112,112,239, 3,183, 95,255,131, 92, 63, 67,231,186,221,209,185, + 1, 44, 86,142,102,158,168,180, 20, 41,194, 27,110,221,245,145,191,252,155,135,127,236, 31,115,226,102, 13,131, 16, 26,245,216, + 36, 52,123,238,223,125,231,141, 59, 66, 19,114, 74, 79,220,133,103, 8,154,145, 90, 77,241,170,151,231, 60, 31,174, 34,242,140, + 39,157,250,153, 15,190,251,181,219, 95,240, 48, 79,153, 87, 17, 50,206, 14, 77, 59,157,238,190,245,186,238,150,217,115,118, 1, +164,195,142,153,208, 66,187, 11,120, 16, 38,130, 55,189,242,197,159,186,232,188,117,107, 87, 63,244, 99,159,113,129,250,237,111, +184,252, 43, 30, 87,104, 70, 35,236,105, 15,133,236,193, 97,150, 32,194, 11, 39,185,114, 23, 74,172, 41,130, 63,127,239,217,239, + 59,231,205, 15,217, 14,137,199,126, 34, 55, 94,117,153, 20,114,132,195,122, 47,224, 87,168, 68, 82,178,103,205,160, 17, 51,123, +231, 18,146, 76,151, 16, 21,193,182,199,109,254,212, 69,231,173,159, 95,243, 16, 22, 68,143,119, 52, 44, 30,220, 43, 71, 4,126, + 52,230,202, 76,142, 63,178, 76, 51,210, 40, 95,200,177,155,150,101, 5, 13,234, 17, 53, 4, 31,190,224, 29,103,190,224,153, 15, + 65, 66, 0,118,223,118,131,170, 22,108,186,204, 90,249,177,135, 44, 47,126,104, 73,217, 75, 89, 19,106,144,234,252, 17, 15,247, + 85,229,237,175, 63,235,253,231,189,245, 56, 22,196, 92,115,219,123,223, 46, 71,119, 68, 5,205, 61, 0, 89,203,234,229,220,101, +173, 42,225, 72,222, 33,143,110, 21, 46,163,172,230, 89, 63,113,242,150, 77, 31,125,255, 57, 63, 86, 66,164, 25,192,241,232,112, + 63, 23, 85,133,228, 55,247,148, 71,142, 30, 75,192, 80, 3, 99,144,240, 18, 74, 81,114, 85,148, 36,138,230, 0, 28,162, 34, 77, +208, 79, 95,124,254,177, 22,212,225,248,148,170,169, 97, 9,193,250, 9, 13,143,113,178, 29,234,133,243, 93,192,238, 71,163,230, + 4,106,205, 75,131,132,146,232,129,154,241,147, 23,189,235, 24, 91,230, 36, 9,243, 18, 73,201, 15,116,152, 84,125, 91, 43,239, + 73,170, 82,205,214,114, 72,215,110, 22,125,202, 57, 47,207,194, 72,200,123,167,240, 12,230,199, 63,112,238,209, 37,148, 18,205, + 74,164,237,161,138,118, 59,162, 57,131,230, 33,141,116,236, 2, 46,139,222,187,252,169,103,181, 4, 90, 44,130, 23,207,242,185, + 83, 85, 69,144,240,251,239,120,253, 81,116,136,137,102, 34, 89,228, 69, 22,213, 89,176, 99,245, 64,152,205,226,209,113,166,135, +148,121,199, 58, 43, 37, 42,189, 44,161,136,242, 89, 79,218,250,138,151,252,194, 17, 18, 50, 58,208,232,233, 4,253, 66, 53, 87, + 68, 97,221,164,154, 28, 88, 49, 79,213,255,117, 94,142,162,158,128, 89, 81,137, 8,126,227,117,103,172, 40, 33,163, 37,209,146, +160,118,195, 81,107,185, 53,230,244, 18,153,244, 66,183,149, 43,179, 58, 83,138,150, 42,156, 82,183, 13, 90, 51,170, 34,242,177, + 89,101, 82,150, 72,176, 25,206,229,124,158,171, 93,201,122, 85,211,232,250,147,253, 27,176, 98,110,106, 70,199, 89,247,186,166, +219,164, 91,100, 46, 0, 96,110, 48, 56,105,243,166,254, 41,203,105,130, 85,171,215,118,186, 34,185,136, 80,125, 65,245, 17,229, +146,203, 43,177, 43,100,168,170,204, 80,119, 45,155,170,186, 60,175, 32,252,233, 31,188,189,207,134, 36,153, 64, 91,187,254,132, + 34,106, 64, 81,140,126, 47, 39,216, 61, 98,190,195, 49,178,139, 53,107,214,219, 59, 87, 5, 20,203,169,170,121,117, 52,190,242, +244, 23,244,236,144,153,165,180,113,243,150,234, 13, 50, 67, 79,196, 61, 75, 61,110, 21, 24,249,185, 6, 69, 69,115, 4,126,140, +189, 43,217,119,116, 15,136,140,164, 28,149, 42,222,252,234, 95,202, 81,135,243, 79, 0, 10, 52,198,182,105, 6, 93, 17, 3,134, +154,248, 20,117, 7,239, 87,112,199,239,153,150, 99,132,154,213,177, 84, 91, 79, 90, 89,167,235, 67, 78,122,174, 93, 21,182, 62, +246, 49, 36,149,100,225, 63,182, 91, 78,222, 54,195,209, 42,167, 42, 3, 71, 65, 63,171, 91,110,121, 44,237,174,246, 33, 95, 7, +156, 49, 1, 61, 13, 55,242,165,207,125, 14, 68,148, 48,166,104, 22, 45,165,245, 27, 55,229,188, 75,193,171,254, 28,157,110,229, + 53,186, 2, 85, 14,109,190,227,138, 58, 46,189, 77,130, 43, 67,183,126, 86,136, 32, 34,207,122,218, 54, 16, 10,203, 74, 77,139, +180,184,122,205,218,156, 16,235,174,184,108, 11,164,122, 52,100, 7,236,224,145, 71,219,187,153,181, 10,107,230,181,226, 95,255, +113,203,166,117,110,135,140, 22, 45, 70, 75, 49,165,118,243, 73, 39,121, 86,203,173, 65, 41,241, 72, 65, 53,162, 66, 17, 42, 10, +149, 67,181,212, 64,228,232,190,132,189, 44,190, 64,165,240, 20,122,251, 46,210, 52, 10, 80, 73, 75,209, 83, 88,173,165,152, 98, +187,225,132,141, 57,205, 84, 72, 78,249,241,242,163, 20, 24,225,150,151,153,129,228,201,255,126, 94,112,185, 75,233,130, 2,212, +148,126,221,129,108, 18,178,132,152,204,162,215,132,204,226,252,252, 26, 23, 82,255,249,106,110,187,131,180, 80, 21, 80,233,161, + 20,169,162, 92,166,242,253,196,185,211, 13,115,234,186,186,164,222,251,151,198, 17, 16,245,144,211,183,204, 82,107,177, 77, 41, + 62,246,164,205, 30, 38,179, 39,168, 14, 95,139,171,183,195, 92, 41,113, 90,193,221, 51, 85, 22,151,165, 59, 36,120, 57, 21, 37, + 37,216,143,239, 0,220,124,235,221, 89, 66, 41,182,102,209,147,151,254, 50,179,249,117,107,242, 74, 56, 35,249,190, 66, 86,116, + 40,153,168,238,190, 58,195, 94, 17,106,169, 30,129, 25,243, 89,129,164,203,106,146,161, 9,119,237,186,167, 51,140,121,209, 48, +150, 79, 14, 6,131,160, 33,153, 65,103, 64,116, 86,133,142,217,227,122, 15, 67, 87,252,112, 40, 71,230, 93, 50,243,116,110,150, +119,101,215,244,245, 44,182,113, 48, 8,136,104, 60,113, 81,146,167, 64,225,202,208,108,245,154,185,209,226, 56,199,175, 61,181, +160, 43, 56, 77,144, 45, 47, 4, 90,181, 52,215,251, 41,130,156,210, 47, 73,113, 23,204,242,213, 16, 20, 94,117,245, 45,254,233, +134,132,165,196, 98,124, 56,155,195,159, 27, 54,147,105,235, 1,117, 13,131,188,202,225, 38, 65,213, 13, 71, 23, 95,103, 24, 80, +158, 47,151, 59,114,166, 89, 76,142,168,219, 11,134,195,225,238,123,247,246,124,153,175,223,114, 50,198,186,188, 50,147, 49, 87, +128, 74,108, 93, 50,217,168,250,197, 26, 69, 90,169,125,116,135, 64,178, 64, 11,196,203,130,236,178, 23, 12, 26,190,252, 63,191, +171,170,140, 9, 64,147,115, 97,117,207, 8,163,129,190,172,124,109,231,108,106, 19,122, 54,166,240,181,164,150,247, 89, 3,238, +188, 12,214,152, 42, 31,254, 98, 64,197,203,255, 94, 65,187,226,242, 27,104,157,149,105,156,226, 91,243,248,156,125,117, 21, 5, +227,116,218, 14,231, 6, 26, 2,235,206,101,106, 72,118, 40, 4,141, 86,194,164, 44,243,172, 87,206, 39,173, 96,212,109,100, 35, +215,237,184,101,225,208, 98, 42, 10,159,123, 90, 82, 76, 57, 14, 44, 11,245, 37, 91, 87,127,201,229,183,165,197,113, 74,182,102, +126,181, 6,205,170,109,230, 38,201,216,197,100,197,128, 33, 23,211, 10, 44,207,153,157, 28,112,203,119, 46,189,186,157, 38, 43, +246,206,192,188,101,189, 34, 95,177, 88,179, 66,234, 21, 40,104,102, 7,246, 29, 50,179,225,220, 96,126,221, 90, 21,201,201, 25, + 37, 76,125,171,123,204, 62,163,115, 90,186,220,160,104,192,254,189,135,118, 94,119,155, 39, 41,163, 89,178, 82,111, 19, 52, 52, +198,152,186,247,207,108, 92, 41, 6, 38, 47,153,101, 57,121,156, 50, 58, 60, 62,116,224, 48,141,195,185,225,170, 53,171,230,230, + 6,218,104,117, 91, 16, 17, 24, 41, 96,175,182, 70,236,223,119,224,182,155,239,242,231, 79,201,205, 49, 73, 38, 50,145,190, 32, + 75, 49,117, 49,107, 87,252,241, 12,103,150,191, 23,111, 28,204,117, 69, 83, 17, 10,150, 70,227,195, 11,139, 41,210,204,220, 20, + 5, 39,230,135, 0,160,109,227,116, 58, 93, 26, 77,218, 54, 90,162, 87,211, 98,246, 11, 89,234,137, 76,198, 68,246, 78, 89, 15, + 24, 87, 60, 84,210, 16,174,215, 89,145,172,152, 92,160,223, 75, 32,161, 17,165,228,213, 19,105,218, 90,154, 56,205,210, 18, 61, +210,179,148,104, 76,209, 98, 76,150, 44,153, 37,163, 17, 46, 30, 55, 80,205,174,251, 15, 20,132,200, 42,163, 76,103,238, 10,101, +224,108, 73,108,230,151,182,252,151,203, 30,134,200, 28, 80, 51, 23,177,211, 56,105,134,104, 72, 94, 44, 19,205,231,115,251,246, +237,251,247,239, 63,112,224,192,163,173, 44,244, 15,251, 34,185,113,227,198, 19, 78, 56,161, 1,112,240,224,193, 93,187,118,253, +163, 80,142,140, 4, 78, 56,225, 4,253, 71, 65,252,156,149, 19,127,110,202,155,199,243, 10, 65,215,174, 89, 61, 28, 52,131, 38, +132,160,206,179,129,163, 86,178,141, 49, 37,139,201,218,182, 93,154, 76,219, 54,253,255, 44,160, 87,189,252, 37,167,191,228,121, +255,228, 85,103, 52,141,103,123, 29, 60,167, 2,242, 12, 20, 51,140, 70, 75,163,133,133,165,209, 98, 59,157, 88, 74, 51, 70, 15, + 72,238, 48, 8,213,102,247,158, 3, 87,223,112,235, 77,183,237,254,225,205,183,165,148,126,158, 4,180,126,221,218,179,223,254, +235, 47,125,209,243,158,244,132,109, 27, 54,204,139,136, 35, 32,233,128,146,137,234,100,188,180,239,190,221,135, 15, 30,152, 78, +198,150, 98, 77,168, 84, 26, 81, 8, 57, 23,204,194, 24, 87, 17, 34,184,251, 61,117,243,250, 83,206,122,254,235,206,124, 30,205, +123, 53, 25,147, 61,176,247,224,125, 15,238,191,230,166, 59,119,236,252,209,226,104,252,168, 48,213,103,158,121,230,158, 7, 31, +220,176,126,245,239,252,246,219,206,124,217,139,135,115,115,189,242, 11,103,242, 95,160,168,142, 22, 22,118,221,122,253,161,253, + 15, 54,205, 96, 25, 50,168,136,163, 3,140, 20,194, 60,246,183, 28, 81,214, 64,205, 57, 82, 21, 31,163,135, 77,115,224,105,102, +223,189,230,230,255,115,229,245,253,110,245,159,217,107,219,182,109,143,127,252,227,229,140, 51,206,120,235,175,189,238,141,175, +255,101, 38,214,253,238, 90, 4, 10,192, 86,109,246,222,123,215,109,215,255, 32,151,205, 43,177,128, 66, 33,141, 53,199, 88, 72, + 94,165,188, 96,165,102, 92,139,201, 46,178, 28,248, 73, 13,107,208, 11, 51,156,146,231,132,190, 76, 23,132,236,216,121,199,231, + 46,249,218,116,218,254, 44, 5,212, 56, 97, 86,181, 49,166,162, 42,236, 39,230, 84,117,207,253,247,220,113,195, 15, 20, 28, 12, + 27,239,245,235, 18,142, 94, 16, 82,176,240, 1,171,104,100, 38,134, 46, 21, 99,228,119,247,211, 72,154, 89,142, 80, 9, 14,121, + 67, 80, 51,168,152,151, 81,105, 74,242, 5,207,124,194, 11,158,249,187, 36,247,236, 63,244,205, 43,174,255,218,229,215,254,140, +108, 80, 73, 52,169,231, 54, 59,221, 17,141,237,244,135,151,127,181, 29,143,188,110, 83,143, 16,209, 53, 88,138, 8,204,179, 67, + 93, 31,129, 27,163,124,104,252,223,102,123, 11,142, 76,218, 74,230, 97,138,155, 41, 17,146, 89, 94, 84,102, 67, 69,138, 96,243, +166,245,111,121,205,233,111,251,149,211, 71,147,233,223,126,243,202,111, 93,181,115,242, 83, 83,171,166, 20,159, 43,211, 49,127, + 83,213,133,253,123,110,222,113,153, 0, 26,180, 20, 52,201, 82, 68,224,178,244,243,108,145,163,112, 31,104, 89, 84,200,141,104, + 69,203,114, 72,219,203,132,123, 65, 57, 83,147, 44,191,133, 52,102,193,145, 66,152, 43, 21,205, 8,225,234,185,225,155, 95,253, +178,183,188,230,101, 36, 62,255,183,151,126,103,199,141, 63, 53, 47,230,228, 85,230, 28,156, 54,205,190, 7,238,185,229,170,111, + 53, 77,147, 11, 9,236, 82,249,210,171, 90,116, 86,217, 58, 3,132,101,186, 83, 58,102,115,170, 22,221,167,114,147,145,153,167, +254,106, 17,187,208,141,189,166,230,105, 1, 79,201, 57,253, 89, 84,205, 47, 16, 66,206, 66,189,227, 13,103,189,227, 13, 47, 63, +176,176,248,217,255,254,245, 91,238,188,231, 17, 22, 80,201,114,101, 55,189,120,112,239,109,215, 94,222, 52, 77, 54, 19, 44,185, +212, 21,107, 6, 57,159, 89,184,209, 89, 5,204, 71, 36, 8,176, 98,166,213, 43,122, 43,253,165, 87,127,202,199, 93,250,193,186, +103, 53, 73, 41,169,189,154, 48, 3,128, 13,235,214, 92,240,206, 55,152,217,183,175,186,241,146,175,127,127, 52,158, 60, 50, 2, +242, 27, 11, 8,131,209,118,223,118, 35, 73, 47, 55, 72,205,237,246,116,167,146, 83, 86,178, 44, 46,105,116, 57, 29, 89, 86, 46, + 91,161,234, 81, 74, 75, 94, 22, 20,205, 76,117, 86, 86,128,159,251, 34, 32,154, 33, 32, 59,208,156,239, 6,187, 76,180,202,246, + 23, 62,107,251,139,158,117,232,240,232,223,127,254,239,238,185,127,239, 79, 38,160,156, 5, 51,215,147,201,232,240,194,129, 61, +203, 49, 14,102,121, 59,179, 59,109,176,206,184,172, 32,147,156,146,150, 21,184, 72,232,209,191, 5,165,211,142,229, 44,231, 34, +174,231,194, 50,225, 76, 0,170, 22, 31,224,167,207,106, 6,188,228,125, 5, 4,231,215,174,254,192,121,111, 77,228, 23,190,252, +173,203,174,188,225, 97, 6,171,149,123,237, 90, 60, 90,216,223,182,147,202,176,207,118, 39, 19, 27, 51,223,229, 72, 46, 67, 53, +189,226,101, 62,138, 20, 18, 95,150, 29,164, 95, 22,155,169, 10,151,182,175,110,246, 72,105,146,114, 35,164,121,128,145,183,110, +193, 9, 82,133, 35,161,149,238, 38,193,185, 83,153,158, 36,148, 32,206,242,195, 63,127,221,153,159,186,248,188, 87,253,210, 47, + 62,172,104,222, 43, 51,150,204, 18,105,227,209, 66, 71,202,235,109,116,149,209, 74, 86, 40,179,226,170,179,135, 8, 51, 98, 2, +103,120, 43,153,229,183,162,152, 42,235,176, 47, 54,148,217, 1,165, 21,170,163, 0,149,169, 72,206, 4,116, 82, 82,230, 37, 21, + 98, 66,102, 64,122, 61,228, 45,191,242,178,143,190,255,156,199,159,178,229, 33, 28, 49, 39,188,210, 18,153,220,212,197,118, 34, +165,200,221,213,179, 73,151, 81, 69,137,172,100,175,210, 73, 32,189, 10,107,129,133,234, 24,137,181, 12, 85, 12,249, 49,138,195, + 86,218, 43,234, 10, 60,119,156, 89,138,213,225,177,131,170,121, 9,154,113,174,116,249,214,130, 82,115,199,139, 12,180,249,163, +115,126,125,239,254,133, 63,251,220, 95,239, 59,184,112,156, 26, 68, 90,242, 34, 1,188,250, 86,170, 97, 93, 41, 93,179,167,232, + 26, 21,139, 75,118,105,246,233, 0,153, 58, 67,168,143,195,240,153, 63,157,185, 61, 86, 55, 92,223,120,207,168, 82,199, 59,168, +212,168, 90,230, 71, 25,251, 32,133,214, 86, 57,166,133,201, 35,133,147,163, 4,101,211,134,245, 31,190,224, 29,239,124,211, 43, +143,211, 6,177, 14, 32, 96, 74,205, 96,216, 31, 61, 81, 28,173,183,221,233, 12, 45, 80,122, 67, 10,132, 21,148,215,114,124,221, +114,113, 19, 44, 93,101,234,216,185,206,206, 42,245,250,241,164, 55,188, 72, 58, 18, 4, 10, 41,178,207,217, 82, 55, 80, 78,164, +206,135, 46,116,252, 41, 85,144,124,217,115,159,246,111, 47,248,237, 19, 79,216,112, 60, 26,100,158,220, 49, 75,115,171, 86, 75, +105, 47, 82, 21, 85,138,176,216, 69, 84, 98,242, 50,219,161,149, 44,145, 89, 60,232,211,213, 40, 71,152,175,227,144, 81, 21,116, +167, 80,153,166,152,249, 20,200, 34,201,213,194,124,111,169, 68,155,174,247, 53,115,220,178,236, 80, 78, 42, 54,173, 95,251,225, + 11,126,235, 69,191,240,180, 99,107,144,121,156, 35, 72, 96, 26,204,173,214,208,244,200, 43,149,174,198,186, 4,233, 17,234,102, + 84, 9,160,178,139, 75,123, 92,207,254,120,172,163,181,231, 30,227,196,213,170,115,134,102, 69,137,122, 36,173, 18, 15, 86,205, +170, 12,192,186,226, 60, 58, 47,147, 77,125,120, 85, 74,118,238, 91, 94,249,155,111,120,249, 49,114,210,185,121,205, 83, 51,161, +105,134,171, 86, 99,150,136, 11,169,100,252,142, 56,178,172,101,182, 78, 37,169,172,189, 30, 29,180,116,152, 9,107,165,245, 33, + 21, 24,250,108, 72,214,254,209,142,221, 55,195, 60, 68, 49, 86,210, 27,235, 82, 57,248,213, 84, 85, 59, 69,200, 43, 95,242,236, +127,113,246,155,142,126,196, 74,135, 31,205, 66,208, 53,107,215,205,112,179,250,100, 26,167,234,149,113, 68, 42, 71,176, 80,138, + 25, 46, 84, 53, 41,152,193,217,123,146,103,171,101,102,226,241,104,210,202, 92,177,142,156,211, 99,215,106,161,254,150,189, 97, +183,125, 82,249,230,218,123,158,140,159, 0,121,246, 19, 79,249, 79, 23,158,191,108,240, 79,233,151,181, 4,167,170,128, 36,215, + 63,102,243,140, 98, 11, 51, 39,185,112, 98, 85, 74,207,237, 44, 67,175,110,114,105, 47,239, 8,184, 5, 45,184, 29,245, 65, 5, + 42, 42, 62,173,233, 33,137,169,111,197, 43,118,213,106,197, 43, 69, 48, 15,143,240,227,168, 53,107, 81,209,147, 8, 50,239, 84, +179,221,154, 95,213,252,225,185,111,157, 27, 14,151, 9, 40,193,137, 93,153,182, 24,215,206,175, 95,179, 62,243,205,252,105,171, + 58, 84,187,139,210,139,210,115,183, 51,120,175,167,237, 61, 75,149,137,180, 90,248,148,146,131, 88, 45,188,112, 62,180, 67, 87, + 25,154,253, 5, 86, 75,217,243, 36, 84, 45,158, 94,122, 93, 1,217, 26, 65,132,162, 20,200,179,158,124,202,219, 94,247,138,122, +144,243,145, 54, 38,179,196, 20,105,145, 41,198,118,114,202,105, 79, 10,205,112, 69,208, 92, 56, 67,245,246,149, 17,135, 66,176, +173,198,178,227,237,206, 60, 15,234,174,102, 74,189,183, 1,103, 85,125,120,135,174, 0,215, 30, 54,239, 92, 71,177,167,172,179, +192,234,216,176, 89, 87,195, 20,227, 89, 47,125,246, 43, 94,248,156, 78, 64, 62,237,200,193,116,254,178,152, 98,123,242,105, 79, +146, 98, 20,203, 2, 58, 6, 82,165,253,244, 6, 80,117,153,218, 28,201, 21,203,141, 35,226, 7,146, 46, 77, 15, 87,221,131, 59, + 86, 88, 22,175, 29,191, 42,177,199,173, 93, 54,208,170,199,250,235,209, 80, 81,209,130,214, 51, 74, 96,213,128,207,126,198, 83, +158,250,248, 83,200,234,230, 61, 16,171,236,155,148, 44,197,166,209, 45, 39,111, 45,164, 28,150, 52,161, 1,254,229,232,127, 38, +102,170,179, 56,178,203, 16,122, 68,222,243, 38, 57,133, 34, 29,235,188,230, 52, 43,103, 84,241,176,136, 20,165,209,191, 59, 87, + 93,219,128,160,223,202, 80,140,145,171,124,135,239,252,208, 89,226, 19,183,109,241, 20, 96, 69,210,137,201,233,156,209, 98,235, + 63,164,216,206,205, 13, 79,121,252, 19, 58, 58,149,129, 20, 51,152,229,193, 14,146,135,211,172, 68, 43,117, 38,103,241,232,206, +210, 45, 99,235, 52,111, 95,111, 86, 2, 68,157,151,221,115,226,224,113,247,166,118, 14,244, 72,114,167,102,146, 62, 53, 51,224, +186, 55,179, 27, 19,226,215, 80, 5, 4,107, 87, 13,154, 65, 3, 48,107,144, 31, 49,179,104, 22,253,136,249, 87,138,173,128,143, +219,186, 85, 53, 88,143, 23, 84, 82, 17,181,167,173, 54,113,118, 64, 55, 79, 5, 20,205,104,165,128, 46,255,128,214, 24, 88,114, + 67,133,128, 96, 77,114,204, 0,159,135, 36,163,153,162, 75,183, 75, 94,203,146,154, 65,158,181, 77,200,227,242, 50, 36,135,143, + 99, 46, 54,200,204, 82,107,214, 50, 69,118, 26,212,166, 76, 17,142, 42, 60,233,228,147,154, 65,227,231,207, 63, 97, 51,212,174, +206, 84, 85,208, 81,178,180,210,117, 37,168, 39,188,164,100, 45,178, 55, 19,143,251,197,247,203,149,105,198,163, 29, 23,119,137, +153,195,169, 5,200,104, 23,161,118, 77, 59, 57, 61, 37, 71,140, 37,236,177, 65, 69, 16,147,181, 49, 2,210,100, 27,148,162, 21, + 98, 87,159,110,214, 39,192,109, 62,113,211,194,225,197,133,131, 11,137, 86,179, 17,203,202,170, 43, 5, 83, 53,221,160,222, 55, +101,165,228, 33, 61, 78,165,239,123,110, 1, 81,136, 41, 64, 83, 8, 59,195, 81,105,180,203,220,234, 50, 33,230,107,136,154,153, +244,104,124,189, 52,240, 81, 3, 26,191,126, 8,250,224,190,131,180,132, 48,104,178, 19,179, 72,122,149, 24, 93,191,227,108, 69, + 25,192,234, 53,115, 77, 19,246,237,217, 15,241,131, 13, 31,186,147,249,226,114,180,116,106,119,220, 75, 22,169,240,188, 29, 56, +250, 76, 30,192, 58, 66, 49,132,185,180,193, 46, 47,222, 79,134,160,180, 29,247, 26, 9, 10, 77, 61, 15, 41,236, 6, 91,148,249, + 34,117,239,121, 84, 53, 20,129,106,184,230,186,155, 6, 77,211,250,148, 17,163, 89,138, 52,246, 62, 94, 91,141,251, 73,253,108, +125, 30,115,226,198,197,197,165,241,210,180, 70,245, 52,206, 36,216,142, 60, 23,157,252, 42, 91,217,107,172, 90,105,193, 40,243, + 85,165,112,160,107,227, 99, 53,112,110, 18, 36, 3, 49, 45,177, 48,234,148,216,217,218,127, 41, 62,185, 14,230, 66, 55,133, 71, +239,196, 17, 12,135,131,203,175,184, 49,197, 36, 18,192, 60,227,204, 44, 38, 43,204,253, 25, 17,117, 26,212, 39,192, 98,213,170, +225, 96, 48, 88, 92, 92, 34, 13, 93,198, 25,203, 6, 48,117, 89,199, 94, 24,239,208,153,165,246, 85,102,148,229,138, 55,107, 87, + 90, 33,176,247, 92,100, 45,195,186,161,205,116, 77, 96,118,202,137, 85,242,118,145,142, 83,203,197,188,114,185,178,116,152,199, +153,222,125,207,131,119,239,126, 48,228,161,115,104,188,234,100,206,100,119,116,103, 40,147, 7,242,252,239,218,113,211, 53, 9, + 24, 65,172, 89, 53, 76,198,201,116, 90,215,233,211, 5,235,188,166,126, 79, 43,202, 8,240, 25,170,114,111,254, 31, 75, 8, 92, + 16, 77,135,146,235, 40,167,126,189,187,140,101,200,215,200, 99,235,250, 12,147,202,147,149, 94, 94,118, 69,235,174, 32,216, 52, +205,161,131,139,151,127,111, 39,123,198,170, 41, 25, 87, 51,103,163,116,231,115,230, 12,231,212,126,215, 99,128,210, 72,193,225, +160,161, 49,209,204, 80,151, 94,162, 10,239,176,206,117,247,126,146, 25, 34,214, 39,129,160,118,198,195,132, 98,254,131,136, 25, +139,231, 7,105, 69,130,102,168, 3,117, 72, 43, 83,159,152,155, 73,170, 35, 39,168,244,254,155, 62,255,164,194,141, 90,110, 24, + 14,135, 55,237,188, 99,231,205,119,105,144, 88, 6, 22,214, 35,198,148, 82,175,183,103,249,120,161,220,231,184,142, 0, 0, 3, + 11, 73, 68, 65, 84, 62,247, 7,125,230,113, 71, 77,182, 10,112, 86,166, 39,228,117, 64, 53, 79, 60, 98, 78,221, 19, 60,162,218, +150,199, 63,228, 73,143,165, 91,222, 19,250,165, 66, 87,165,108, 44, 39,113,182,110,231,195,216,187, 60,121, 6, 1, 96,111, 92, + 48, 65, 80,131, 90,178,203, 46,221,113,240,208, 98,163,210,205,197, 98,167, 65,149,176, 46, 82,166,213,118,173,251, 62,136,140, +121, 47,251,109, 82,245,184, 87,251,110,165, 11,174,105,130, 55, 82,212,228,244,242,243, 14,245,195, 92,167, 79,148, 94,248,124, + 19, 17,113, 2,145,143,118,119,153, 24,152, 11, 75,142, 21,172,212,112,217,163, 23,148,170, 97,142, 51, 40,125, 10, 14, 43, 69, +197,125,132,132, 29, 87,236,220,179,247,160,111,103, 42,221, 52, 44, 26,210, 0,176,172, 65,179,201,226,242,119,163,101, 17,160, +158,243,153,145, 90,121, 42,175,101,201,251, 73,156,142, 91,227,148,164, 6, 29, 14,155,208, 52,253,244, 22,188,137, 35,151, 55, +164, 22,215,251,253, 56,116, 44, 67, 99,175,178, 83, 99,230, 58,116,129,157,120,178,136, 80,166,190,149,202,126, 41,191,148, 70, +105,111,249, 26, 45,142,175,191,230,150, 67, 7, 23, 61,225,144,219, 70,188,140, 90, 29, 83,181, 65,253,206, 62, 0,125, 75,212, + 65,197,217,241, 94, 92, 54, 68,235,136,230,156,194,117, 77,211,113, 30, 9, 24,154,193,112, 56,104, 6,170, 33,248,160, 63,233, +170,104,165,225,160,196,252, 62,113, 32,211, 26,228,200,242,153,102,162,146, 21, 2, 69,206,232,214,167, 40,255, 63,136,242, 44, +222,238, 20, 99,220,125,247,131,119,222,126,183,247, 62,168,106,244, 22, 22,255, 31, 23,100, 46, 96,177,246,146, 53,200, 82,118, +243, 43, 84,242,170, 82,177, 54, 53,150,158,186,238,123,105,143, 48,235,249,185,146,199,173,125, 58,109, 59, 25,143,198, 41,119, + 73, 64,131,206,205, 13,231, 86, 13,194,160, 41,169,203, 82, 90, 47,189,124,253, 82, 98,159,220, 87,181,188, 34, 80, 88,133, 26, +197, 95, 74, 25,134, 34, 58, 26, 45,221,117,199,238,253,123, 14, 85, 44, 66, 48, 38, 75,201,162,165,148,204,136,220,134, 2, 38, + 34,101,128, 85,143,152, 37,239, 72,146, 89, 19, 61, 43,172,250,199, 12,130,156,113,106,197, 46,117,205,175, 85,106,214,141, 40, +244,251,196, 54,182,147,246,224, 1, 3,153,138,100,125, 52, 74, 25,200,218,132, 70,155, 16,180, 9, 77, 41,117,213,243,212,139, +105, 1,136,134, 60,150,164,109,219,241,210,100,113, 97,105,113,113, 52, 30, 77,166,211,232,241, 35,152,231, 97,230, 65,220,165, +157,166,116,212, 88, 34,140,236,254, 4,179, 6,145, 76, 49, 19, 38,251, 94,108, 5,142, 66,117,249,172, 74, 85,108,245, 76,159, + 97, 29,234, 89, 4,104, 51,198,189,223, 42,228,139, 14, 42, 62,137,143,102, 49, 2, 49,150,225,124, 85,228, 93,243, 24,140,149, + 29,203, 62,207,179, 90,144,222,120, 73, 15, 27,115,166, 43,229,249,236, 41,101,209,120,147,151,231,187,204,114,206, 48, 58,241, + 72,123, 26,148, 45, 84, 47, 72,157,253, 99,230, 59,143, 20, 22,123,220, 50,235,224,190,145, 51,255, 58, 27, 10, 9,178, 9,233, + 37,186,114,222, 21,165,197, 19,200, 76,197,106, 6,105,150,233,162,102,133,171,229, 52,165,146,213,235, 43,175, 15, 44,180,108, +100,147,153, 37, 38, 75,230,138, 83, 36,226,237, 97,137,244,144,221, 64,171, 17,222,246,237,219,151,117, 55, 63,148, 20,222, 79, +153,196,253,179,188,252, 74, 55, 19,242,255, 1,146, 88, 89, 21,105,223,207, 0, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/grab.png.c b/source/blender/editors/datafiles/grab.png.c new file mode 100644 index 00000000000..44c86d98a09 --- /dev/null +++ b/source/blender/editors/datafiles/grab.png.c @@ -0,0 +1,258 @@ +/* DataToC output of file <grab_png> */ + +int datatoc_grab_png_size= 8045; +char datatoc_grab_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, + 72, 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, + 11,252, 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, + 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, 19, 0, 34, 12, 33,249,187,131, 0, 0, + 30,234, 73, 68, 65, 84,120,218,237,124,125,172,101, 87,117,223, 90,251,156,123,239,251,152,153, 55,227,177,141,191,102, 28, 59, + 20,140, 13, 24, 40,196, 37,197, 19,104,176,160, 6,183,196,164,161,145, 16, 20, 37,117, 74, 83,210, 34,100,250, 71,171, 68,164, +165,129, 22, 40,144,180,170, 84,137,164, 74, 84, 41,130,202,106, 11, 77,128, 54,208,164,168, 13,148, 80, 64,184, 96,199, 54,195, +120, 62, 60,239,235,126,157,115,246,199,250,232, 31,123,239,115,206,125,243,236,121,246, 60,240, 80,113,244,230,206,125,239,157, +183,239, 58,107,175,189,246, 90,191,245, 91, 27, 79,156, 56, 1, 23,189,246,114,147,121,234, 95,191,247,179,155, 0, 80,238,250, +187,255,251,192, 3,190,153,255,249, 55,190,240,230,215, 29, 77, 55, 13,203,210, 19, 45, 13, 7, 95,252,232, 63, 61,114,236,133, +202, 52, 57,247,240,169,147,223,250,202, 67,223,141,127, 83,138,232,127,255,216,251, 7, 75,171,131,229,181,162, 28, 54,227, 39, +102, 27,143,158, 59,247,248,195,167,207,127,245,161,147,233, 38, 0, 64, 80,114, 21,185, 74,200,187,249,198,246,108,118,102,115, +114,114,125,235,212,198,118,119, 19,185, 42,184, 25, 5, 31,152,107,235, 55,231,213,250,100,246,196,214,116,105,121, 5, 96, 59, +221, 20,252,220, 57,107,125,104,124,168,172, 27,207,235,113,213, 76,170,250,235,143,157,206, 42, 64,160, 96, 61,145, 13, 84, 59, + 95, 57, 95, 89,223,248, 64, 34, 11,122, 10, 36,158,216, 19, 5, 34,231,131, 15,196, 44,133, 49,119, 60,247,250,238, 38, 23,200, + 19, 7, 98,159,190,136,133, 11, 99,124,160,120, 19,238,105,238, 46,245, 58,114,221,205,239,253,220,214,238,191,123,241,115,111, +250,206,127,250,244,151, 62,246,190,247,253,205,215, 37,101,150, 69,161,170, 44,114,203,177,235, 62,249,225,143, 12, 87,214,220, +108,227,244, 55, 63,247,237, 83,167,191,244,224, 35,233,166, 63,249,248,251,177, 24,140, 86,214,202,209, 42, 40, 79,206, 60, 52, + 62,247,237,147, 79,108, 62,120,242,236,185,237,105,186, 9, 77,161, 28,220,124,203,206, 54,200,206,230,179,205,243,227,217,227, + 27,227, 63, 63,179,254,141, 83,231,211, 77, 28, 28,185, 25,185,138,152,156,167,105, 99,207, 79,102, 79,140,167, 79, 76,102,173, +148, 37,135, 38,216,121,227,189,243,161,118, 97, 90, 55,147,170, 30, 87, 77, 32,234,166,133,125,229,137, 66,160,198,135,218,249, +185,245,181,245, 46, 80,129,157,101,155, 16, 92, 32,118,204,158,216, 17, 57, 31, 2,177, 42,148,101,209,221,228, 2,249, 64,129, + 40, 16,135, 64,129, 57, 16, 35,192,160, 40,158,222,146,218,203,101, 46,241,239,223,251,135,155,183,189,246, 45,207, 68,162,215, +255,165,151,127,229,223,126,252,191,252,234,125, 0,240, 43,255,225,145, 78,221, 23,253,203,255,250,155, 31,185,225,198,231,153, +162, 32, 91,219,233,250,124,227,209, 83,143,254,159,199, 55,183,239,187,235,142,223,126,251,237,221, 64,162,250,197, 15,222, 15, + 8,198,148,102,184, 60, 88, 58, 56, 88, 58, 56, 24,173, 22,195, 37, 99, 74, 85,102,111,235,173,211,205,244,124, 61, 57, 59,153, +215, 27,211,234,220,246,244,209,179,235,255,251,225,147,179,249,188, 39,145,194,242,161,231, 0, 2, 0, 98, 49, 48,197, 64,133, +131,157,249,102, 44, 33,144,159,251,106,220,212,211,202,186, 73,213,108,206,171,245,241,236,212,250,248,193,147,103, 30, 60,179, +217, 23,188, 4, 0, 17, 18,241,194, 12, 34, 42,172,202, 32,204,236,153,130, 39,182,157,133, 53,155,211,234,220,120,242,189,245, +205, 11, 53, 80, 2, 0, 7, 43,193,114,104,136, 3,139, 48, 11,139, 16, 75, 96,246,196,214,133,202,185,121,227,198,243,122,115, + 58,223,152,204,167,149,253,214,233,141, 11, 6, 66, 96, 95, 83,168,137, 40,176, 16,113, 96, 14,204,148,253,134,245,161,178,110, +222,184, 89,227,230,214,213, 46, 32,130,168,238, 34, 17,185, 42, 72, 28, 66, 2, 69,195, 21, 31,200, 51, 59, 79,214,123,235,131, + 13,193, 19,147, 40, 0, 24, 99, 6,101,217, 95, 69,217,117, 17, 7, 34, 23, 87, 64,252, 98, 14,204,158,200, 19, 57, 74,142, 77, + 68, 16, 97, 80,152, 65, 89,188,232,134, 43,119,177,108, 23,130, 11,193, 7,118, 68,158,217, 19,251, 64, 62,144, 15,113, 44,246, +196,129,133,152, 69, 20, 17, 11, 52,170,186, 60, 26,246, 7,250,193,248,201, 61, 95,199,143, 31, 55,151, 62,202,219,126,235,143, + 46,117,136,193,104, 57,238,202,199,143, 31, 47,159,241, 40,247,255,225,121, 52,229,135,223,112,237, 94, 87,255,194, 28, 35,254, +209,111,126,176, 12,213,231,255,244, 79,223,247,250,171,223,243,233,179, 28,220,211, 27,232, 63,126,232, 55,110,121,254,139, 57, +184,102,251,236,214,246,119,111,184,114,237,222, 59,110,251,240, 27,175,221,171, 63,186,245,198, 27, 62,245,145,143,150,163, 85, + 21,118,243,237,122,251,244,100,253,177,115,219,211,211, 27,219, 91,211,106, 97,137, 32,226,160, 44, 84,149, 88, 84,213, 32, 30, + 92, 89,122,207,207,189,241,158,215,188,126,116,240,104, 57, 28,169, 72,176,115, 55,223,170,183, 79, 79,199, 79,108, 76,230,103, +183, 38,223, 91,223, 94,159,206, 23, 6,250,226, 7,238, 87, 80, 68, 99,202, 97, 57, 90, 29, 44, 31, 26, 44, 29, 40, 71,203,166, + 24, 34, 34,185, 58,216,202,205, 54,155,201,153,217,108,188, 53,175,207, 79,102, 79,108,207, 78,157,223, 58, 95,249,133,129,150, + 14, 94, 41, 42, 16, 7, 26, 44,153,193,200,152, 66,153,153,107, 38, 34, 95,133,106,187,153,158,155, 85,213,164,106,182,103,245, +230,172, 58, 55,158,158,217,154,172,143,167,139,143, 86,148, 40,140,128, 0, 32, 76, 0, 16, 56,128,170, 8,179,111,130,157,186, +249,102,109,221,188,113,211,218,142,235,122,123, 86,109, 76,230,186,155, 27, 81, 80, 85,101, 21, 86,116, 12, 0,113, 24,242,236, +235,224,230,181, 75,254,104,222,184, 89,101, 39,181, 29,207, 43, 46, 6, 23, 12, 36,194, 28,148, 9,148, 69, 24, 85, 88, 24, 36, + 48,185, 64,226,136, 26,231,107,231,231,214,205,173,155, 53,110, 86,219,218,133,239, 92,232, 33, 69, 24,152,132,156,176, 23,118, +194, 34, 42, 44,202,204,129,217,249,180,225, 55,206,213,206,215,206, 87,214, 95,248, 92, 0, 80,170,144,176, 23,246, 28, 44, 11, +199, 33,136,133, 68, 2,177,243,193,250,208,184, 80,123,106,156,111,156,183,222, 15,203,114,183,129,152,132,131,144, 99,102, 98, +142, 62, 63,190, 6, 98, 71,100, 67,112, 68, 62,144, 11,100, 3, 5,226,209,112,176,203,234, 17, 14,194,158,133, 73,149, 68, 72, +132,184,231,106,163,159, 12,105, 35, 96, 22, 81, 64, 52,187, 14,228,133,131,176,170, 8,139,178, 8,137, 18, 11,145, 4,150,232, +191,137, 41, 14, 34,170,136, 0, 42,187, 15,196, 34,172, 66, 44, 34,194,162, 34,194, 34, 36,194,196, 36,233, 73, 89, 52,234,216, + 32, 18,243, 46, 3, 49,145,136,198, 79,139, 18,197, 47, 17, 33, 85, 98, 17, 81, 17, 81, 21, 80, 64,196,194, 24,222,109,214, 12, +139, 16, 51,139, 38,225, 69, 89, 52, 13, 29,101,100,102, 85, 81, 85, 80,131, 80, 22, 6, 84,143, 30, 92,221, 57, 16, 69,213,176, +180,178,228,247,202,209,160, 20,146,122, 20, 0, 17, 17, 13,226, 95,184,230,240, 5, 3, 49,147, 72,188, 53,169, 70,211,112,212, + 31, 93, 84, 84, 65, 21, 17, 17, 49,176, 60,147,180,236, 7,118, 29, 59,118,204,192,229,116,225,174,166,254, 3,190,110,127,195, +223,186,255,179, 91, 79, 35, 54,254, 62, 93,119,189,235, 67, 47,189,231, 29, 0,200,228,255,197,235,174,120,150, 5,122,215, 39, + 31, 94, 62,116, 5, 40,252,175,223,255,232, 31,127,226,215,119,198,161,223,143,235,237,119,223,245,142, 55,221,251,156,171,174, + 17, 97, 14,214,215, 19, 59, 93,159,143,207,109, 78,231, 39,207,111,253,179,183,189,104,222,216,131, 87, 94, 55,219, 56,179, 75, + 96,124,233,215,176, 44,223,121,239, 61,127,251,103,127,174, 28, 29, 48,197, 0, 64,132,136,130,117,243, 45,223, 76,253,124,179, +153,111,205, 26, 55,173,235,173, 89,189, 53,175, 95,125,235,141,159,253,250, 35, 23, 74,243,204, 5,186,227, 5,207,253,165,159, +249,235, 47,127,225,237,197,232, 64, 57, 92, 66, 99, 64, 85, 69,132,131,119, 21,185, 58,216,121,104, 38,190,222,110,108, 93, 91, + 95, 89, 55,107,236,120, 94,111,204,170, 51, 27,227,179,155, 19, 83, 20,176, 24,235,119,121,218,103,126,245,190, 46,167, 80, 64, +131,160, 80, 24, 52,166, 40, 7,163,114,184, 60, 88, 58, 80, 14, 87,138,225, 74, 57, 92, 42,202,145, 25, 12,141, 41, 0, 75, 99, + 64, 85,148, 3,123, 98,114,236, 45,185, 42,184,121,104,166,193, 78,173, 11, 77, 8,181,117,181,243,179,198, 77,170,102,123, 86, + 61, 49,158,157, 92,223, 50, 69,233,156,219,245, 81, 75, 80, 56,114,229, 49,141, 59, 20, 34, 96, 97, 76,129,166, 48,197, 0,139, + 65, 81,148, 88, 14,140, 25,152,162, 68, 99,208, 20, 8, 8,170,194, 65,197,147,196,205,217, 83,104,216, 53,228,230,193,206,188, +111,172, 39, 23, 66,204,239,106,235,231,214,206, 26,187, 61,111,214, 39,179,179,155,147, 89,109,191,125,118,235,201,116, 95, 2, + 64, 57, 92,102, 85,108,125, 19, 22, 6, 11, 48,198, 24,163,136, 40,170, 64, 44,140,136, 0, 8,160,170,162,194,202,196, 28, 36, + 56, 14, 13,249,154, 93,229,201,187,152, 15,133, 24,109,132,198,250,185,115,243,198,197,156,243,252,246,116, 92,213, 78,240, 41, +140,161, 4, 0, 64, 99, 64, 84,211, 78,140,202,130, 2,106, 84, 8, 16, 5, 98, 48, 8, 16,111,136,251, 48,135,168, 27, 14, 13, +145, 99, 22,159,195,148, 24,169, 88,231,235, 28,150, 77,106, 59,158,213,155,211,249,184,110, 14,173,174,124,229,145,211, 23, 19, + 72, 85, 69, 84, 68, 65, 84, 85, 84, 1, 20,226, 63, 16, 80, 4,144, 36, 77,212, 77,156, 41, 14,204, 66,194,196,154,147, 86,118, +129,172,167,198,251,198,133,198,249,202,250,153,181,179,218, 78,234,102,214, 88, 68,124,232,220,214, 83, 47,151, 18, 0, 84, 88, +132, 84, 24,148, 53, 5, 9,162,202,160,162, 34,209,110, 65,147,172,241, 85,114,168, 66, 81,166, 8,244, 69,245,248, 96,227,148, + 57, 55,143, 17,112,109, 43,235, 61,241,129,209,112, 82, 53, 23, 23, 72,132,132, 73,133, 64, 72,132,132, 89,133, 52, 69, 10,233, + 18, 1,133, 36, 74, 82,166,164,184,130,152, 91, 68,209,250, 16,101,170,157,175, 93,168, 93,168,156,175,188,183, 33, 20,136,223, + 58,187,117, 81,135,146, 52,164, 81, 38,246,241,141,168,136,198,200, 12,146, 4, 89,186, 54,152,139,129, 33, 9, 7, 18,226,148, +210, 59, 34, 27,200,134,224, 66,176,158,108, 8,206, 7,239, 73, 88,150,134,131,198,249, 61, 9, 36,236,149, 73,201,171,132, 24, + 99,169, 66, 12,251,162, 52,172, 42, 81, 14,150, 52,157, 57,138, 35,102, 98, 14,209,168,137, 60,177, 11,228, 66,124, 13, 62, 80, + 96, 33, 85, 64, 40,138,114,215, 20, 97, 23,112, 70,153,132,189, 72, 16,142, 79,174, 73, 2,137,162,168,112, 12,255,180, 11,119, +185, 53, 32, 33, 78, 0, 74, 52, 35,162,148, 48,196, 71,138, 66, 20,104, 16,247,180, 7, 36, 13, 9,249, 24, 8,179,128, 72,154, +160, 24,198,102,249, 58, 67, 78,193,119, 43, 77,126,211, 15,132, 69, 85, 52,174, 83, 48,136,140, 32,194,136,120, 81, 37, 25, 0, +136,121, 16, 75,146,134, 69, 88,211,103, 11, 71, 81,226, 15, 23, 2,111, 18, 78,241, 50, 51,179, 80, 43,110, 94,140, 0, 0, 8, +136, 80, 24, 44,208, 16,203, 45, 55, 92,189, 39, 13, 49, 75,212, 68,178,152,100,197,144, 68, 73,249, 72,171, 33,205,194, 41,101, +249,168, 63,191,121,105, 34,128, 65, 44,140, 41,140,225, 66,152,101,117, 96, 46,170, 36, 3, 0,221,179,230,149, 44,162, 44, 76, + 61,173, 72,155, 51,228,169,229,156,129,177,168,196,220,135,133, 99,118,158, 63, 51,230, 40,113,119, 68, 68,102,121,193,197,148, + 20, 53,164,241, 17, 69, 65, 64,132,149, 69, 20, 32,155,112, 92,113,210,218, 80, 76,186,122,153,141, 80, 50, 56,101,142,235, 34, +249,117, 80,141,251, 95, 76,122, 84,245,192,176,184,136, 64, 8,240, 63,190,187, 30,159, 41, 13,147, 7,147,252,109,235, 31,163, +219,150,180,167,137,104,187, 30,227,132,130,168, 97, 65, 86,195, 88,114, 33,140,194,133,128,106,193,130,170,162,138,136,183, 61, +111,117,102,119,143, 61,214,214,214, 46, 51,188, 49,230,102,151,143, 48, 39, 78,156, 48,184, 71,135,245,131,186, 46,175,204,245, +114, 17,232,250,219,238,104,115,232,103, 95,160, 95,252,196,151,111,126,197,107, 53,195, 78,207,166, 64, 47,190,251,109,247,127, +110,243,138,235,111,254,147,223,121,255,179,156, 74, 23,229,240, 61,159, 62, 11,136,160,208, 71,189,159, 29,129,126,230,215,126, +247,185, 63,249,134,152, 56,156,252,218, 31,115,240,207,178, 81,127,245,129,127,131,168, 49, 41,253,253,127,248,166,239, 75,110, +255,164,245,149,178,252,224, 47,255,226,157, 47,186,141,131,109,198,103,215,183,183,222,255,201,207,127,253, 27, 95,250,119,127, +247, 53,111,255,215, 95,252,221,191,127,215,190,229,246, 79,125, 93,125,197,145,127,249,238,119,221,126,203, 11, 77, 57, 20,114, +228, 42, 14, 78, 65, 7,101,241,119, 94,255,147, 95,126,232,228,111,255,183, 47,255,206, 59,127,234,252, 35,223,252,190, 11,244, + 11,247,220,253,238,183,190,117,176,124, 8, 16, 85,136,156, 13,118,230,235,109, 59, 59,223,212, 85,109,157, 11,225,192,104,112, +245,218,193, 93,165,217, 55,129,174,189,242,138, 7, 62,240, 79, 14, 29,189,174, 40, 71,136,168,202, 28, 28,249,154,234,153,171, +183,237,124,189,174,231,211,198, 77, 27, 59,169,154,218,250,107,214, 86,206,247, 24, 5,251, 41,208,199,254,193, 59, 79,188,226, +149, 75,171,107,166, 28, 26, 68, 81, 17,114, 20, 28,185, 42,212, 83, 95,143, 93,181, 89, 59, 59,175,221,172,177,179,218,206, 26, + 59,105,108, 81, 14,158, 50,149,126,218,166, 90,188,227,238,187,222,113,207, 27, 15, 29,190,186, 24, 46,155,162,140, 69, 98,166, +192,228,217, 55,193, 86,100,167,190,158,184,122, 92, 59, 87, 91, 63,183,110, 86,187, 73,109, 39, 85, 51,158,215,214, 63,105,130, + 86,170,106, 97, 76, 81, 24, 80, 0,140,105, 97,194,182,211, 29,133, 25, 13,202,149,209,232,206, 23,223,242, 75,247,220,117,244, +138,107,203,229,181,193,210,138, 41, 71, 69, 81, 0,162,170, 10,179, 80, 96,114,236,155, 96,231,212,204,124, 51,118,118,158, 51, +124, 55,107,146,134, 38,243,102, 92, 53,115,251,228, 2,189,237,175,252,196, 43,111, 60,170,125,192, 10, 83, 17,193, 20,131,193, +112,105, 48, 90, 45, 71,171,229,112,165, 24, 46,151,195, 37, 83, 14,141, 41, 77, 81, 2, 26, 85,128, 8, 55, 80, 16,178,228,154, +224,230,100,231,190,153,120, 87, 55,177, 4,100,253,220,250,170,113,243,198, 78, 43,187, 61,175,107,235,206,142,231, 79, 42,208, +112,184,116, 96,117, 13,162,126, 98,229,192,148,166, 40,177, 28, 20,197,168, 24, 12, 77, 49, 50,131, 97, 81, 12, 77, 89, 98, 49, + 64, 99, 0,141,170,130, 6, 21, 17, 38, 97,207,222,145,175,201,213,100,103,222, 78,156,247,206,251,198, 83, 42,107, 57, 55,119, +110,214,184,105,211, 76,106, 91, 26, 67,187,129,121,121, 66,202,225, 96,233, 64,130,207,192, 68,152,204,152, 65,252,120,147,190, + 74, 99, 10, 68, 3, 49,215, 7, 17, 85,136,137, 9, 5, 14, 13,123, 75,190, 34, 59,247,118,230, 67,176, 33,196,106, 91,227,125, +237,124, 99,125,149, 43,138, 85, 99,245,201, 45, 26, 0, 74, 52,165, 41, 71, 25,218, 55,128,104, 76, 97,138, 18,176, 68, 44, 16, + 77,139,153, 25, 1,192, 88, 11, 82, 21, 22,102, 33,207, 20, 17,180,134,236, 60,184,202, 19, 57, 31,108, 32,235, 67,227,124,227, + 66,227, 35,148, 22,230,214,205, 27, 27, 88,206,108,111, 63,165, 64,136,104,138,182,214, 0,104, 16, 13, 0, 2, 42,128,130,178, + 10,128, 42, 8,230,242, 86,204, 51, 72,153,152, 28,147, 99, 87,147,175,200, 55, 46, 66, 68,145, 82, 20, 66,130,210, 34,207,204, +249,202,186,202,249,209,160,156, 55,238,169,193, 6,196,180,215, 1, 42, 40,138, 42,130, 50, 10,196,194, 20, 26, 6,200, 80, 65, +196,134, 98, 54,198, 94,130,231, 80,147,175, 41,248, 16,137, 21,129, 60,145,247, 17,148, 33,231, 67,227, 67,227,124, 92,252,158, +248,224,202,242, 69, 19, 69, 4, 4, 80, 0, 17, 65, 68, 81, 64, 16, 49, 6, 85,149, 81, 81, 13,182,170,209,152,100, 51,169,132, + 56, 95, 18, 26,138, 64, 12,115, 32,246, 28,129, 24,242,129,188, 15, 81, 38,235,169,113,193,134,128, 10, 15, 94, 80,250,221,165, + 54,173, 2, 10, 10,160, 40,162, 0, 10, 2,128, 59,160,210,156, 65, 74, 2,215,216, 51,121, 97, 31,193,151, 88, 15,205,229,213, +200,103, 73,232,140,163, 8,242,145, 15, 52, 40,139,139, 98, 86,209, 83, 43, 38, 88,161,205,202,179, 95, 82, 73,224,103, 76, 92, + 35,188, 17,151, 58,115,172,177, 18, 73, 96,162,150,102, 19, 25, 49,129,114,249, 56, 56, 10, 46, 16,139, 46,141, 6, 23,133, 99, +202, 8,193, 2, 8,100,148, 12, 53, 42,109, 33,159,142,248, 43,168,136, 80,188,145, 50, 40, 67, 73, 61, 29,107,177, 99, 58, 82, +170, 71, 7, 34, 5,240,178, 7, 4, 45,205, 81,134, 83,162, 14,226,194, 86,149,136,115,170,228,237, 4, 52,237, 45, 18,235,207, + 26, 75,243,137, 17,197, 28, 18, 71,138, 2,137, 15, 89, 91, 68,196, 82, 26,124,124,123,190, 7,124, 40, 42, 67, 25, 84,128, 89, +149, 52,163, 83, 73,154, 8, 45,100, 64, 56,190,230, 98,177, 18, 51, 9, 39,162, 86,180, 39, 98, 79,146,138,246,169,116,207, 44, + 50, 40,204,120,182, 23,129, 32, 62,117,212, 13,129, 80, 2,101,133, 21, 50,244, 33,173, 52,144,200, 15, 25, 86,139,245,120,162, +244,217,145, 76, 69,194, 9,105,140, 82,138, 0,192,174, 20,132,221,119,251, 56, 53, 18,129,243,196, 38,136,248,144,136,102,152, + 63,130,213, 10,137, 38,144, 57, 25, 45, 16, 27, 33, 47,138, 2,197, 73, 36,137, 98, 49,139,170, 58,214, 61, 9, 4, 93,193, 32, + 66, 81,148,225,158, 12, 2,181, 8,117, 6,135, 59,244, 51, 11,145, 20, 19,191, 36,179, 45, 18,231, 66, 68,212, 32, 86,158,247, +136,194, 38,251, 85, 77, 0,126,146, 48, 1,248,202, 34,173,221,168,104,198, 67, 85,242, 71,182,239, 51,136,214,209, 17,226,195, + 41,168, 49, 56,175,220, 30,167, 44,174, 35, 6, 97, 16, 86, 0, 81,145,108, 61, 59,117,211, 74,163,105,217,199,210, 2,101, 66, + 67,114, 4,153, 46,145,181, 11, 6, 49, 48,239,117,202,116, 1,105,133, 22,213,203, 53, 24,200, 76,142, 92, 84, 80, 97,238, 0, + 90,201, 44,148, 22,129, 84,214, 14,141, 5, 69, 0, 52, 6,141,217,243,148,101, 27,138,115,164, 73, 31,113,226, 68, 57, 3,140, + 73, 26,101,238,102, 45,163,156, 45, 39, 70, 37,253, 5,180, 94, 31, 50,251,106, 79,248,144,170,128, 80,156, 22,141, 97, 53,128, +198, 32, 67, 19,196,153,191,226, 22,220,250,198,182, 16, 19, 39, 17, 50,206,222,121, 44,200,232,185,170, 14,246,166,161, 84,198, + 85, 73,142,184,251,252, 60, 96,222, 62, 52,227,173,209,232,187,122, 67,170, 89,165,173, 16,210, 75, 10,208, 35, 38, 12, 0,176, +182,178,180, 39,129, 68,163,249,117, 15,157,252,146,198, 72,172, 67,230,123,181,179, 84, 85,145,172,216,254, 10,144, 12, 49,167, +128, 15, 49,194,152,135, 87, 71,123,211, 80,164, 43, 33,228,226, 38, 10,180,168, 52,104, 23,118, 68, 17, 65,242,207,115, 65, 77, +219,204,169,181, 27,109,235,201, 25,204,143, 5,140, 61, 98,140,218,243,197,237,107,222,188, 32, 46, 58, 88, 64,208,147, 28,201, +143,231, 39,129, 60,205, 10,185, 14, 20,165, 65, 68, 64,100,145,195, 7, 86,246, 98,212,105, 79,111, 45, 64,164,191,121,117,179, +211, 77, 25,128,100,228, 95, 58,251, 74,186,137,102,151, 43, 10,128, 49,145, 65, 84,213,227, 87, 28,218, 83,248, 17, 13, 85, 20, + 90, 63,212, 70, 27,209,214,119,108,245,218, 26,182, 46,252,182, 21, 26,186,213,142, 8,216, 22,217,151, 6,229, 30, 55, 87, 21, +129, 68, 14,139,190, 39, 70, 36,162,186,224,178,219,121, 76,114,100,195,234,166, 44,191, 73,147,134, 8, 49,217,139,105,132,168, + 96,107, 97, 79, 62,101,144,164,137,182, 9, 89, 44,233,102,176,175,131,228,156, 36,251,115, 17, 1, 16, 5,238,205, 42,180, 70, +148, 23, 89, 86, 18,172, 46,141, 46,102, 67,208, 69,132,109, 13, 47, 89, 73,210, 92,183,218,251,166, 45,162, 29,243, 64,211,163, +180, 90,132, 76, 68, 0, 84,232,149,167,110,188,106,237,162, 70,157, 22, 81,122,250,152, 21,138, 0,196,159,180, 17, 35,104,252, +201, 14, 27,135,150, 13,209,174, 11, 88, 88,255,138, 0,208,166, 48,135, 46,166,161,242,212,184,206,163,129, 36, 95,221,149,204, +122,159,221,250,158,174,106,214,149, 68, 69, 89, 81,196,176,160,168, 97, 44,184, 24,196, 98,153,150,138, 34, 70,101, 32, 26,105, + 38,199,142,193,174, 21,159,196, 60, 57,113,226,196,246,246,246,120, 60,190,220,202, 66,207,238,165,170,135, 15, 31, 62,114,228, + 72, 9, 0,147,201,228,212,169, 83, 63, 82,202,142, 11, 17,143, 28, 57, 98,126,164,136, 31,178,250,230,179,109, 53,230,208,213, + 55,252, 72, 65, 59,175, 3, 71,175,121,245,125,191,126,255,103,183,174,121,254, 75,167,231, 31,127,150,139,137,151,207, 53, 88, + 94,125,243,251,254,253,177,151,188, 10, 20, 55, 79, 62,248,175,222,242,188,122,188,241, 3,173, 37, 94,158,215,241, 23,191,234, +167,126,225,215,174,125,193,203, 32,102, 53, 10,143,125,229,243,159,250,199,111,249, 62, 86,238,126, 40,156,203,241,151,220,249, +218, 95,254,192,209, 99,207,203, 5, 20,136, 29, 33,159,249,141,251, 30,252,194,167,246,179,112,247, 67,119, 93,117,211,173,111, +249,231, 15, 44,175, 93,133,170, 41,249, 81, 5, 68, 13,225,247,222,253,250,179, 15,125,237,162,120,249,255, 23,142,118,101,233, +150, 99,215, 29, 92, 26,148, 6, 69,116, 99, 58,255,246,227,231, 93, 8, 0,176,254,216,131,191,245, 55,158,127,213,205,183,253, +252,135,254,243,104,117, 45,102, 96,231,190,243,181,223,251,149,187, 84,101, 47, 5,133, 31,178,235,185,215, 95,123,235,143,223, +124,226, 37,183,191,234, 37,183, 31, 88, 61,136,166, 96, 97, 9, 94,216,147,111,200,213,161, 25,187,102, 90,187, 80, 91, 55,174, +234, 63,123,236,204, 3,255,243, 27,235,143,126,235,227,247,222,252, 99,127,241, 53,127,237, 31,125,226,225, 47,125,230, 15, 62, +252,247,246,136,227, 93,222,190, 3,160, 44,203,227,207,185,234,157,111,126,211, 79,255,196, 29,195,165, 3, 88,148,198, 20, 0, + 24,177, 50, 38, 98,246, 66,158,189, 37, 95,147,175,131,157,120, 87,251, 64, 62, 4, 79,172, 10, 63,118,229,145,183,222,249,210, +135,206,109,253,193, 87, 31,252,238, 87,191,240,241,123,111,218,187, 0,151,169,130,126,254,181,175,190,251, 47,191,242,166,227, + 55, 29, 62,116,184, 28,142, 0, 11, 52, 38, 86, 23, 99,237, 69, 57, 48, 17,147, 87,114, 20, 44,251, 38,210, 4, 66,168, 83, 29, +204, 83, 19, 66, 99,195,220,249,198, 57, 79,188, 84,192, 45,215, 30,253,246,217,205,167, 37,201,101,161,160,107,143, 30,121,197, + 11,110,121,237, 29,175,120,249,173,183, 30, 94, 59,138,229, 16,208, 20, 69, 25, 65,165,132,182,112, 68,190,131, 16, 9,249, 92, + 83,181,228, 27, 10, 53,251,218, 7, 31, 2,249,182,246,236,125, 29,168,182,174,106,220,180,182,179,198,214,214, 47, 45, 45,173, +174,172, 84,117,125, 89, 43,104,121, 52, 60,124,224,192,221,175,124,249,207,190,230,196,117,207,185,206, 12, 87,140, 41,139,193, + 8,141, 65, 52,128, 24, 1, 37,133, 72, 76,206,124,237,174,153,197,113,112, 18, 28, 83,195,190,166,224, 2,199,179, 59,226, 49, + 31,193,231,130,124,108,151,152, 53,110, 90, 53,227,170,153, 54,214,123, 39, 34,151,151, 5, 29, 62,176,250,211, 47,187,237,213, + 47,121,209, 77,215, 93,127,248,240, 21,171,171,135,138,193,168, 40,135, 16, 25, 28,133,129, 88,245, 64, 76, 90, 17,134, 72,252, + 79,229,101, 74,124,146,224,133,189, 4,199, 73, 53, 13,113, 8,148, 74,188, 33, 87,118,163,118, 92, 72,237, 54,149,117, 51,235, + 38,117, 51,174,234,202,250,192,218, 88,251,244, 20,164,170, 47,251,241, 99,127,245,133,199, 7,104, 6,101,177, 20, 11,143, 17, +130, 67, 8,204, 34,226, 3,139,170, 11,164,160,204,130,104,136, 25, 17,134,101,105, 16, 86,150, 70, 43,163,209, 21, 7, 15, 28, + 90, 93, 61,124,232,224,149,107,107,203, 75, 43,229,112,169, 24, 44,153,114,132, 69, 89,148, 67, 83,148,104, 74, 52,133, 49, 6, + 18, 86,157,122,175, 32,117,245,136,170, 0,167, 94, 35,142,218, 33, 47, 28, 34, 33, 64,130, 99,178, 18, 28,145,101,226, 32, 28, +136, 57, 23,192, 19, 75,128,200,250,216, 29, 21,233, 19, 97,110,179,249, 84, 86, 85, 55, 42,251,116, 39,184, 84,128,219,111,186, +254,206,155,175,222, 89,208, 71,192,132, 44,199,111, 98, 65,160,192,162, 0, 44, 76, 81,160, 41,208, 12,138,162, 68, 51,192,162, + 64, 83, 22, 69, 25,223,152,162, 68, 44,208,164,102,128,200,103, 65, 52,237,112, 29, 38,216, 21,222, 89, 83, 61,149,242,106, 10, +177,191,132,131, 23,178, 28, 44,115,232, 74,167,162, 68, 28,152, 2,245, 56, 20, 68,214,167,245, 85,197, 70,191,218, 78,234,102, + 90, 91, 98,134, 98,176, 61,171,158,182,130, 0,160, 28, 44, 45,173, 94,209, 86,199, 16, 90,144, 52, 34,202, 6, 17,193, 24, 68, +131,145,196, 20, 21,132, 6,177,192,162,192,184,197, 24,147,222,160, 1, 52,198, 20,136,168,128,136,168,201,173, 8,100, 20, 53, + 97,181,210,182,238,177, 40,229, 5, 21,132,130, 68,171, 33,207,100,133,124,219,253, 31,105, 19,212, 53,218, 39,243,113,129, 2, +165,230,186,218,167, 70,182,202,218, 89,237,102,181,179, 62,172, 29, 60,248,213, 71, 30,127, 6, 46,162, 4, 5, 44, 7,197,112, + 73,164,237, 73,140,255,226, 33, 57, 24, 57, 86,185,139,189, 83, 68,182,139, 86, 59, 89,149, 9,178,228,216,175, 46, 28,145,114, +205,133,173, 88, 79,200,116,141,228,131, 41,182, 55,106,103, 56,142,201, 9,133, 68,110, 97,166,246,144, 5,230, 86, 65,137, 96, +194,145, 78, 66, 46,132,198,147,245, 81, 59,110,214,184,121, 99, 27,239,135,131,193,247, 54,198,252, 52,221,115,103, 65,136,133, + 41, 6,136,209,128, 22,214, 24, 66, 34,161, 1,160, 65,163,198,180,223, 66,215, 54, 41, 32,177,168,162,209,100, 0, 88,219,182, + 74, 72,149,196, 92, 72, 74, 28, 5,137, 36, 23, 14,170,172, 76, 76, 65, 37,106,199, 9,249, 88,101,207, 60, 18, 97, 81,166,124, + 4, 5, 51,145,120, 38,202,172,150,220,192,150, 26, 51, 27, 31,230,214, 85,141,171,172,107,124, 48,198, 8,192,250,100,254,204, + 54,153, 50, 23, 65,140,162,166, 39,148, 88, 69, 74, 96, 90,230, 50, 70,118,165,130, 10,128,137,197, 12, 52, 38,118, 68, 25, 52, +146, 22, 36,232, 78,197, 40,244,234, 17,137, 79, 34,170, 26,251, 13, 89, 36,196,198,195,212, 4, 42,156,186,162, 56,243, 36, 88, + 56, 58,157, 72, 32,145,180,109,197, 14,191, 64,228, 3, 71,178, 86,166,182,249,218,250,202,249,198,123, 85, 88, 25, 13, 30,122, + 98,251,153,153, 79,127,155,143, 15,143, 8,169,226, 10,144,190, 67, 80, 85,142, 55,168, 32,128,129,200,145, 67,100, 73, 37, 93, +206, 0, 2,102,157,166,146,120,174, 11,101,151,204,185,215,140,218,206,216,220, 31, 75, 93, 31, 86,219, 92, 40, 18,233, 9,129, +153,123,103,143,180,175,113,107,119,158, 29,133,200,253,171, 83,171,168,119, 62,136,192,176, 52, 13, 20, 79, 77, 73,220,107, 28, +164, 8,152,171, 91,201, 6, 68, 34,163, 33,106, 48,173,154,164, 8,108,249, 0,176, 80, 46,210,174, 91,184, 45,148,165, 14,181, +124, 32,141,138, 10,137, 16,196, 61, 43, 21,179, 68, 69, 41, 53, 99, 50,245,232, 52,196, 18, 36,241,163, 66, 98, 33,137,239,197, + 62, 46, 5, 62,100, 29, 89, 23,226, 78, 79,194,133, 49,197, 96,248,205,199, 78, 95, 74, 28, 87,182,171, 1, 59, 42, 68,222,106, + 16, 32,183, 92,182,197, 82,192,254,127,138,169,180, 11,105,109, 73,178,188, 24,176,162,170,228,218,112,102,106,165, 72,167,173, +240, 71,226, 65,108,221,139,212, 8,226,244,202,204,113,137, 81,118,207,137,160,149,220, 51,185,220,247, 28, 41,155, 54,157,228, + 69,196, 12,128,163, 97,249,248,230,228, 18, 3,221,178, 91, 18,157,179,200,204, 5,129,196,135, 73, 70, 17,123,220,251,206,165, +251,227,222,210,202,181,213,104, 53,145,131,209, 85,147,117,177, 96,220,182, 58, 70,214, 15,247,187,191, 51,143, 45, 55,205, 50, + 83,164,249, 17,133,216,243,156, 73,182, 46,219,145, 39, 14,204,162, 90, 22,133,168, 25,215,110, 63, 20, 4, 29, 87, 66, 65, 50, +161, 35, 82, 36, 0, 85, 20, 0, 58,134,103, 94, 62,137, 58,145,119,168,174, 46, 47,208,145,115, 0, 58,162, 67,159, 53, 18,107, +235,192, 57,136, 78, 45,160,154, 14,221,225,190,123,102,141, 62, 40,196, 83,144,162,247, 9,236,219,198,231,192,222,147, 39,138, +145, 17,139, 34,226,176, 48, 91,214,135, 39, 39,176, 63, 13, 5,105,199,153, 16, 0, 5,137, 79, 40,152,137, 84, 57,132, 17, 85, + 69,200,171, 6, 34, 83, 22, 58,230, 78,207,154, 20,178, 25,197,241,165, 95, 89,143, 41, 87,164, 72,118, 13,242,185, 77, 54, 17, +248,114,100, 24, 73,190,220,182,130,119, 76,205,184,202, 56,169,198, 83,164,108,138,170,148, 69,177,178,186,242,103, 39, 31,187, +244, 92, 50, 47,177, 68,121, 77, 90,136,110, 53,211, 42,162,127,149, 24,224, 73, 62,163, 33, 83,153,211,226,234,104, 66, 61,155, +132,182, 97, 23,250, 77,186,137,220,210,210, 13,165,127, 10, 20, 75,236, 26, 94, 88, 98, 34,185, 51, 62, 25,142, 39, 74,244,218, + 16,149, 69,137,161,168,138,198, 12, 74,115,102, 92,239, 75,178, 29,151, 88, 58, 15, 66,115, 67,116,203,183,105,125, 7, 44, 50, +183,180,167, 14,109, 9, 56,189,149, 6,153, 41, 18,211, 45,232,233, 53, 17,146, 4,164,245,211,169,217, 92,120,193, 1,101,254, +172, 68,111, 29,151, 88,235,179, 53,176,120,106,237, 75, 83,103,185,106, 89, 20,195,225,232,228,247, 30,223, 55, 5,105,203, 64, + 2,105, 57,127, 32,220,197,117, 29, 71,168,231,108,210, 62,215,177, 94, 22,237, 72, 59,166, 33,128, 72,199,105,218, 65,103,235, + 72,180,204,209,142,162, 31,105, 79, 6, 75, 17, 16, 73,123, 2, 68,246, 77,156,200,208, 18,143,152,148,116, 68,152,193,185, 11, +162,186,127, 22,148, 25,254, 93, 44, 23, 77, 38, 55,168,107,251,120,157, 67,207,235, 82,251,250,202,111,114, 79, 69, 10, 19,163, + 57, 73, 38,245,102,107,106,137,198,194,153,144,220,158,105, 38,241,136,135, 54,255,106, 13, 42, 49,179,243, 73,110,137,217,158, +143, 43, 3,131,102, 80,150, 27,211, 70,247, 81, 65, 45, 5, 89, 69, 64, 89, 85, 65, 88,148, 33,138,221, 90,132,244, 20,209, 87, + 16, 68, 94, 90, 75,192,234, 49,169,186, 29,189,231,131,160,199, 91, 19,237, 24,198,137,209, 44,172,210,242,123,169,119,174, 1, + 39,174,169,178, 42,119, 39,215,101,230,162, 2, 36,208,193,120, 98,216,167,171, 76,248,140,136, 68,237, 72, 60,165,134, 53,158, + 90,145,142,234,203,100, 64, 93, 92, 62,253, 39, 95, 52,168, 86,230, 54,124,208, 11,136,162,241,193,184,117, 67,153,105,157,218, + 29,210,129,121,221,241, 15,153, 0,205, 57,164,236,113, 58,115, 80,159, 88,172, 42,251,167,160, 24,227, 68,130,187, 70, 29,197, + 55,241,184, 28, 5,136, 13, 65,189,173, 42,175, 17,104, 41,212, 49,218,217,161,178, 78,119,249,152,164,236,213,218, 86,135, 72, +244,206,129, 34, 36,141, 40,244, 76,166, 59,191,131,219,131, 53, 22,248,144, 11,232, 67,196, 91, 84,116, 63, 21, 20,139, 6,217, + 55,147,182,204, 82,200,241, 93,247, 77,118, 71,210,174, 44,216, 65, 26,236, 44, 8, 22,131,230,158, 41,181,116,230, 54, 2,234, + 36,104, 25,218,210,181, 29,236, 36,253,102,162,116, 14,185, 58,240, 37,149,210,246,143, 77,216, 58,105, 78,199, 65,165, 51,111, +250, 43, 8,178,163,129, 69,154,102,219,187,208,134,127,176,131,245,221,210,114, 85, 46, 32,157,119, 58,234, 90, 65,186,243, 84, + 22,104,174, 11, 36,223, 54,112, 91,168, 46, 38, 60, 34,125,254,202,104,176, 95, 10, 50,201, 30,152, 19, 42,220,211, 75,231, 83, + 23, 44, 38,247, 32,166, 7,128,158, 99,210, 5,238,123,159, 9,222,139,163,210, 99,199,182,162,222, 81, 46,173, 26,165, 11,237, + 51, 53, 92,122, 1, 88,175,191, 32,162,195, 45,184,137,152, 90, 38,142,172,174,152,125,226,164, 26, 72,217, 18,165,254,148, 5, + 95, 2,121,193, 67, 62, 55,171,147, 79, 85, 21, 53,167, 94,216,182,176,244, 40,214, 34,139, 13, 23, 11,111,122, 39, 17,101, 51, + 17,145, 69,101,246,119,128, 69,202,119,162,175,228,202, 66,215,248,160, 32,170,195, 2,175, 90, 59,176,175, 22,148,143,147,138, + 84,237,238,169,122, 12,255,174, 81,170,157, 71, 78,191,144,236,119,186, 59,187,130, 78, 78,124,243,189, 59,168,251, 93,254, 33, +189,195,212, 18, 53,187,205,229, 90,160,160, 93, 84,109,171, 3,230,119,128,136, 96, 64, 85,137,249,166,171, 14,239,159,130,160, +199, 80, 7,237,123,150,206, 28,180,163,119,199, 12,164,211, 96, 86,113,127,167,207,198,176, 16, 49, 94,120,114, 82, 34,174,119, +227,195, 5, 43,171,159, 3,107,223,144, 16,219, 51,157,192, 24,211,150,150,210,159, 50,223,124,205,209,125,116,210,201,178,211, +174,212,182, 58,180, 45,100,121,155,111, 59, 86,226,137,189,189,134,128,246,222,244, 76,253,113,118, 16,250,115, 83, 72, 58,238, + 46, 38,129, 45,149,191, 83, 51,162,118,219, 97, 91,205, 76,170,137,135, 24, 27, 4, 99, 48, 54, 19, 42,166, 99, 32, 21,128, 85, + 15, 47, 15,151, 71,131,198,133, 75,181,160,232,104, 88,186, 94,186,222, 36,182, 30,185,127, 67,151,133,239,136, 3, 83, 16,216, +107,231, 72,171, 15,250,187, 53,116,141, 59,208, 51,194,252, 19, 1, 76, 3,182,163,236,240, 65,154,131, 66,204,149,169,222,114, +139, 93, 24,170, 90, 24,188,234,130, 67,155,159,217, 18,235,186,141,114,108,154,155,175, 68, 58,173,117, 25,194,194,247,253, 80, +165,215,184, 1,189,118, 10,209, 29, 45, 67,253, 46,143,197, 93, 60,194, 32,186,120,231,194, 81,103,139,177, 97,139,144,183,197, +108,104,171, 81,162,215, 28, 62,112,137,219, 89,116,210,144,207,194, 4,233,247,205, 40, 72, 23,254, 44,100,164,189, 46,173,228, + 65,219,168, 47,118,228, 73,215,233,181,176, 3, 74,191,171, 74, 22,246, 53, 88,216, 25,122, 86, 41, 11, 71,192, 45, 58,162,158, + 51,202, 77, 60,109, 31, 95, 52,199,235,142,174, 93,250, 54,223,206,115,182,161,188,210,242, 83, 66,182, 44,136, 97,139, 74,119, + 86, 96,215,238,215,158,117, 42,253,246,183, 5,251, 74,237,105, 11, 46,188,181,151,206,112,186, 4,165, 85,142,228,226, 99,187, +202,186, 88, 17,119,144,210,218, 75, 20,142, 29, 57,176, 31, 75, 76, 85, 1,165, 13, 83,243, 97, 7, 49,204, 89,124, 78, 0,221, + 1, 28,102, 83,234,218,130, 51,228, 42,169, 63, 95, 22,252, 79, 14,181, 35,174,152,140,180,139,185, 65,251,122,203, 38, 12,105, + 31, 88, 72,151,115, 61, 5, 80,251,197,202,238,189,170,168, 94,121,232,153,120,162,174, 29, 74,247, 11, 59,217,141, 97,184,111, +127,129,151,244, 89,170,250,204,250,189,254, 31,131,117, 74, 17, 84, 89, 65,223, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/inflate.png.c b/source/blender/editors/datafiles/inflate.png.c new file mode 100644 index 00000000000..cd6f11877c7 --- /dev/null +++ b/source/blender/editors/datafiles/inflate.png.c @@ -0,0 +1,283 @@ +/* DataToC output of file <inflate_png> */ + +int datatoc_inflate_png_size= 8840; +char datatoc_inflate_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, + 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, + 65, 0, 0,177,143, 11,252, 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, + 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, 19, 0, 34, 12, 33, +249,187,131, 0, 0, 32, 0, 73, 68, 65, 84,120,218,237,125,105,180,101, 87,113, 94,213,222,231,220,233, 13,253,222,107,117, 75, +173,110,181,100, 13, 72, 50, 72, 13,200,203, 96, 57,180,137, 72, 20, 47, 7,219, 66, 3,131, 77,134, 31,128, 18,201, 32, 44, 44, +203,204, 34,194, 16, 20, 67, 48,150, 77,178, 48,136,197,138, 77,176, 96,101,145,193, 33,113, 86,236, 8, 7,107, 0,164,196, 78, +188,146, 56, 72,104, 86,143,111,184,247, 76,123,239,170,252,168, 61,157,251,154,150,132, 21, 71, 56, 92,129,250,246,123,247,158, + 83,167,118, 85,237,170,175,190,218,194,131, 7, 15,194,211,190,158,201,135,138,185,191, 47, 45, 45,253,219,175,252,222,116,186, +249,232,195, 15,189,233,205,111, 73, 31,250,218,221,119, 59, 71,206,210,112, 84, 22,197,176,105, 59, 6, 53, 89, 92,254,149,219, + 62,242, 11,191,120, 51, 0, 20, 68,132,186, 80, 64,101,169,141,233,172,107,219,182,109,219,166,109, 91, 99,157, 92, 73, 1, 0, + 0, 50,128, 46,138,141,141,141,173,173,205,173,205,141,173,205,205,173,205,205,205,205,205, 79,254,198,237,254,118, 76, 0, 4, + 77,211,212,245,172,169,219,182,237,166,211,141,227, 71,143, 62,249,216,195,167,158,186,251, 31,125,228, 67, 10, 0,152,136,152, +140, 49,107, 59,119, 43,173, 14, 31,122,226,137,199, 30,125,248,161,111,117, 93, 61, 26, 47,168, 98, 80, 0, 0,177,115,206, 17, +145,181,118,101,199,218,232,130,241,116,186,117,222,249, 23,106,173,219,166,241,183,115,225, 69,206, 57,114,128, 56, 26,141,181, +210, 93,215, 18, 17, 17, 21, 0, 96,173,115,206, 89,107,156,115,206, 89,178,214, 57,249,159,127, 21, 0, 96,140,113,206, 58,235, + 44, 57,178,198, 58,107,141,181,214, 89,107,173,181,206, 58,124, 70,107,247, 76, 94, 56,247,247,187,239,253,122, 93, 87, 27,199, +143, 93,113,197, 21,233, 67, 47,121,233, 75,127,237,246, 95, 23, 5, 44, 45,175, 88,231,170,217,108,115, 99,253,240,161, 39,223, +252,230, 55,203,135,244,151,255,213,191, 70, 86,128,170,174,166,170, 40,187,174,171,235,122, 86, 77,183, 54, 55, 95,120,193, 11, +190,246, 71,119, 3,128, 98, 70, 70, 0,196,166,174,101,213,166,211,205,173,205,205,233,214,214,230,198,241, 95,249,200,135,228, + 67,192, 12, 68,110,215,105,123,143, 30, 57,114,236,232,225,163, 71,142, 28, 61,114,228,208, 83, 79, 60,250,208,255, 26,142, 23, +222,126,253, 91, 20, 51, 51, 59, 34,106,154,102,231,174,221, 27,235,235, 79, 61,241,248, 99,143,124,251,145, 7,255,199, 43,255, +198, 21,136,106,215,105,123,241, 15,255,232, 94,231,200, 89,235,156, 53,214, 88, 99,102,179, 89, 53,155, 34, 34, 17, 85,179,233, +116,107, 67,137, 90, 41, 45, 2, 21, 69, 57, 89, 88,208,186, 32, 34, 38, 98,226,194,175,171,115,198,134,207,145,113,214, 57,103, +157,181,206,145,115, 84, 24, 99, 28, 57,138,159,176,198, 47,152,117,214, 57,107,173,115, 14,158,171,181, 83,240, 28,189,122,254, +171,148,186,230,154,107,174,253,123,215,146, 35, 34, 90, 89,219,169, 84,225,136,172,181, 93,215,117,109,211,212,117, 85,205,182, + 54,215,175,187,238,122,107,109,239, 66, 68,116,247, 61,247, 17, 51, 48, 48,147, 99, 6,230,114, 82, 0, 40, 6,101, 29, 57,103, +141, 49,214, 24, 99,140,232,134, 25, 62,252,161, 95, 62,252,212, 99,183,125,244, 19,189, 71, 67, 93,160,214,168, 20, 40,165,116, + 49,158, 44, 28, 61,124,184,170,102,213,108, 54,155, 77,103, 51,121, 51,147, 55,149,127,213, 93,103, 62,254,209,219,122,143,198, + 12,192,192, 98,237,204,206,185,225,120,114,236,232, 81,165, 53, 0, 16,145, 49,198,152,174,109,218,166,169,155,186,154,110,109, +109,172, 31, 59,252,228,227,103,159,123,254, 39, 62,254,177,106,186,249, 75,239,185, 69, 46,196,204,192,204, 68,196,204, 77,211, + 12,134,227,213,157,250,201, 39, 30,171,166, 51, 49,175,174,107,229, 66,179,233,214,230,198,241,163,135, 30,155, 76, 22,180, 46, +152,169, 28, 77,110,189,229,189, 5, 0, 56, 34, 32,242, 23, 2, 38,231, 28, 91, 38,218,181,235, 84,179, 98,170,106,182,190,126, +188, 51,157, 49, 93,215,181,186, 40,246,238,255,129,139, 94,252, 67,147,201,132,153,186,174, 67, 84,186,148,184,228,156, 92, 7, +152,136,153,200,145, 99, 34,199, 68,192, 52, 26, 13,119,237,218,189,182,118, 10, 57, 43,198, 75,142,156,179,214, 90,103, 28, 19, + 19, 51, 51, 72, 88, 50,162, 11, 38, 34,185, 20,177, 99,199,142,136,153,156, 35, 34, 38,231, 63,224,136, 40,248, 3,201, 85,179, +248, 6,204,196,142,136,137, 29, 16,136, 72,204, 44, 17,148,153,157,179,114, 27,231,172,115, 68,222, 87, 68,176, 16, 3,173,237, +136, 9, 8,136, 69, 40,241,118,175,123, 34, 71,142, 28, 59,114,196, 68, 78, 28,208, 58,107,140, 13, 33,246, 57,141,147,207,201, +107,255,254,253,207,153,211,254,223,241,254,237,175, 59,191,248,165,211,247,158,225,172, 13,190, 63,251,192, 45,239,255,147,255, +246,223,159,102, 43, 25, 14,135,159,254,244,167,247,236,217, 67, 68,142,220, 41,187,246, 48,176,115,212,117,157,233,218,166,174, +197, 69,214,143, 29,121,219,219,111,156,211, 17, 2,192,157, 95,250,226,105,167,157,142,128,204, 44, 22,224, 28, 45, 45,239, 64, +165,153,201, 90,107,140,233,218,182,105,154,166,158, 85,179,217,214,230,198,147,143, 63,242,193, 15,223,150, 95,168,184,231,190, +175, 19, 49, 3, 48, 49, 19, 33,128, 42,180,210, 68,204, 24,172, 88, 34,180, 55,104, 34, 98, 30, 12,199,243,202, 70, 85, 32, 42, + 68, 4,133,136, 74,235, 98, 52, 26,145, 35, 31,201,140,233, 58, 99,173,181,198,154,174,147,208,230,172,117,228, 94,119,229, 79, +246,148,141,136,136,200,196, 0,136,200, 74,235,166,174,218,174,149, 31, 16,145, 13, 97, 36, 4,128,174,237,186,174,109, 23, 22, + 38, 90,107,231,178, 36,136, 25, 88,212,206,204, 12, 74, 23, 77,211, 52, 77,221, 54, 77,219, 52,109,219, 54, 77, 35, 42,106,219, + 86,126, 40, 1,238, 99, 31,189,109,117,101,135,191, 16, 51, 0, 2, 34, 16, 17, 1, 16,145, 46, 74,211,117,117, 85,213,213,172, +174,171,186,170,155,166,105,234,166,109,154,186,170,234,170,170,102,179,217,116,171,174, 42, 93,148,239,126,215, 59, 17, 81, 36, +146,240,232, 31, 85,194,196,242,202,106,211,212, 85, 53,171,170, 89, 85, 77,171, 89,140,223,211,217,108,107,107,107, 99,227,248, +225,189,103,158,163, 80,233,162,252,224, 7,222,199,204, 5, 51, 51, 19,203,245, 36, 66,119,102, 52, 26, 47, 46,237, 56,114,248, +169,174,235,172, 87,121,219,212,117, 85, 85,211,173,205,245, 99,135, 55,214,143, 29,248,161,151, 35, 42,165,148, 46,202,203, 94, +249,138,130,153, 1,152, 73,210,188, 16,185, 29, 47, 44, 46, 18,185,195,135, 14,205,166, 91,117, 93, 55, 77, 93,207,170,217,108, + 58,221, 60, 94,207, 54, 47,122,233,203,119,172,172, 1, 0, 32, 42,165, 81, 21, 34, 17, 51,131, 15,153, 12,204, 62, 14,141, 70, +227, 93,167,158, 58,158,140,215,143, 31,223,220, 88,103, 98,165,213,202,218,218,234,202,234,142,149, 21,165,181,179, 86,182, 31, + 68, 44,152,217, 57, 47,146, 68, 50, 17,138,136,136,169, 44,138,165,165,229,209,112,184,186,186,102, 76,231, 28, 33,130, 82,138, +153,173,181,254,206,113,167, 5,112,156, 94, 94, 28, 32, 6, 98,102, 70, 68,173,139,209, 72,149,101,233, 66,148,245, 87, 73,171, +132, 5, 17, 59, 71, 94,211,226,108,142,152,217,129, 11,145,151,200, 63, 55, 75, 82, 29, 5,143, 47, 0, 46, 56, 62, 78,120, 36, + 9,216,217, 35, 58,246, 59,139,127,222,248,255,248, 37, 6, 40,124,184, 39, 34, 96,246,187, 90,184,166,139,235, 64,254, 86,254, +203,196,204, 46, 94,145,153,153, 11,114, 46,126,215, 63, 0,113,184, 6, 57,231,124,110,199, 68,228, 28,115, 18, 39, 60, 55, 17, + 3,115,225,136,156, 35, 31,136,124, 56, 10,247,116,142,153,228,214,254,102,228,228, 73, 37,190,196,135,141, 18, 81, 16,135, 28, + 17, 36,125, 16, 51, 57,158,191,127,220,252,194, 38, 76,204, 12,207,171,125,237,140, 51,206, 80,240,124,122, 33,226,243, 75,160, +167,223,102,159,225,235,188,243,206,123,231,187,222,117,214,153,103,185,224,207,214,116,191,243,133,223,249,237,207,127,254, 89, + 43,233,224,193,131,119,221,117,215,119, 33,196,103,238,248,236,139, 46,186, 24, 0,197, 7, 37, 21,115,142,200, 23,168,146,223, +119,166,107,235,186,217, 88, 63,250,243, 55,222,244, 76, 82,163,121, 13, 93,114,201, 37,111,187,225,134,125,123,247,149,131, 1, +199,240,211, 11, 59,188,188,188,162,180, 70, 80,128, 64,196,200, 68,140,128, 8,128,232,191, 1,192,146,156, 40, 64, 85, 20,229, +226,210,202,237,183,127,162,154,110,221,252,206,247,112,220,173, 78,184,100, 68,116,207,189,247, 17,177, 92,196,223, 31, 64, 82, + 9, 9,225, 41,235, 97, 55, 28, 77, 0, 21, 51, 50, 16,135,253, 38,166,203,206,231,188, 36, 81,201,145,163,144,130, 51,163,210, +229, 45,239,123,239,191,251,202,239,126,237,158,175,159, 44,231, 67,165,149,214,160, 52,162, 66, 84,168, 80,201, 54,133,136,168, +148,210,186, 40,134,195,145,237, 26, 68, 29,227,190, 11,214, 34, 85,168,228,200,178, 84,130, 45, 88, 43,197,172,252,202, 74, 78, + 14, 0,127,229, 21,175, 24,141,134, 39, 21, 8, 21,160, 82,128,168, 20, 2, 32, 40, 41,240, 17, 20, 0,104,173, 7,131, 1, 16, +117, 93, 23,234,190,206,164, 87,215,117,157, 53,157,233,186,174,109,229,141, 79,167,252,159,242, 97,219, 25, 99,140,136,107,223, +248,186, 43, 79,234,101,136, 64, 4,136, 12, 36,102,128,160, 8, 8, 17, 16, 21, 42,133,168,228, 62, 12,168,180, 21,229, 69,227, +242, 91, 21,249,114,223, 69,141, 89, 95,179,118,157, 23,183,107,219,182,105,187,166,233,186,246,215,127,237, 19,166,107,110,185, +245,151,215,215, 55,182, 9,228,115, 59,246, 50,249,164, 13, 72,172,143,136,136,203,225, 72, 41,221,212, 53,106, 45, 2,121,155, +139, 62, 22,234, 36,231,215,206, 4,145,124, 46,212,181,109, 83,215,117, 61,173,102,211,217,230,113, 64,212,229,224,253,239,125, +143, 49,237,175,254,234,237,143, 61,241,100, 86, 17, 3,139, 48, 68,128,136,132, 12, 36, 78,130, 68, 68,136,206, 89,165,212,242, +202,218,250,177,163,117, 93,133, 85,150, 82, 90,242, 3,142,234,241, 66, 25, 99, 67,238,106,186, 78, 96,187,166,154, 86,179,233, +214,198,225, 83, 78,221,107,140, 41,203, 82, 23,192,204,111,123,219,245,117, 93,221,242, 15, 62,156, 74,116, 4, 34,242, 14,198, +196,200, 0, 8, 4,196,192, 64, 96,217, 34,162,214,122,101,109,173,216, 42,183, 54, 55,154,186,246,187,232,118, 13,249, 18,215, + 26,107,252,106,181, 93,219,212, 77, 61,171,102, 91,179,173,227,109,231,206,223,117,154,242, 62,196, 74, 23,154,104, 56,156,188, +255,125,239,190,239,222,123,243, 82, 31, 0,125,254,200,200, 36,122, 99,144,178,148,195, 94, 51,158, 44, 20,229,160,154,205,166, +211,173,186,154,117, 93, 39,185,127, 64,135,228, 31,193, 61, 58, 73,233, 69,154,122,182,213,182,213,100,188,240,131, 7, 14,156, +122,218,233,101, 57, 0,100, 36, 84, 74,161,210, 74,185,178, 40,118,239, 62, 53, 8, 36,165,140, 88, 5,249, 36,155, 33,230,101, + 30,118,145, 16,165, 16, 39, 11, 11,131,225,160, 91, 90,106,234,186,174,170,170,154, 53,174,178,214,118, 93, 43, 94,214,117,157, +237, 58, 99, 58,107, 12, 57, 59, 24,142, 87,215,118,175,172,173,173,172,172, 78, 22, 22,202,178,244,249,141, 55, 96, 31, 95, 80, +105, 47, 16,249,212, 47,132, 69, 73,115,189, 16, 64,204, 49, 90,250,156, 25, 8, 17,135,131, 65,161,245,120, 60, 94,222,177, 35, + 68, 0, 47,132,181, 86,114, 29, 89,107, 93, 20,101, 81, 40,173, 37, 5, 6,102, 34, 7, 0, 24,242, 96, 14,101,167, 8, 36,249, + 99,140,233,156, 12, 42,104,204, 11, 2,178,182, 33, 93,245,197,152, 42,203, 82,194,213, 56, 37,167, 33,113,100,138, 95,144, 43, +147,207,154,153,153, 9,226,175, 68, 30, 44,196,175, 33, 24,181,104, 1, 68, 76,175,150, 96,186, 0,209,178,124,150, 29,158, 67, + 62, 43, 17, 13,148, 82,132,160, 64, 60,133, 72, 76, 83,240,168,144,244,230,137,121,168,198, 68, 42, 17,200, 63,134,188, 23,253, + 17,203, 82, 81, 88,178,240,131,244,196,243,217, 62, 51, 49, 1, 67, 82, 78,239, 55,196,153, 48, 89,197, 68, 28, 51,117, 6, 14, + 75,198,146,229,251,154,200,171,141, 67,229,199, 98, 73, 4,105,255, 79, 58, 10, 69, 34, 37, 11,147,236,220,215, 7, 20,227,185, +247, 31,142,133,134, 0, 71, 94, 86, 34, 6,129,193, 36,141,137, 38, 29,149, 24,108, 57, 74,227,101, 6,150,252, 93, 44,140, 73, +234,186, 32, 3,199,202, 35,160,125, 1, 59, 36,255, 25,169, 24,130,149,197, 42, 64,190,233,145, 66,111, 56,193,214,162,103, 5, + 75,138, 5,105, 20,152,227, 87, 2, 56,152, 23, 77,178,114, 81,168,124,189,136,152, 64,204,222, 69,251, 79, 38, 32, 26, 34, 34, + 7,208,187, 41,202,211,123,239,207,252,189,159,181,249,171, 65, 84, 13, 5,185, 92,192, 85, 93, 16,200,197, 34, 50,214, 66, 2, + 27,114,172,139,128, 10, 68,252,234, 93,127,192, 30,222, 13,209, 49,127, 19,131, 1,243,220,191, 99, 50,151,201, 10, 73,209, 73, +254,104,118, 62,196,100, 43, 75,121,185,187,190,190,249, 60,195, 27,165, 54,123,254, 8,115,240,224, 65, 37,153,205,243,231,245, +188, 43, 20,191, 47,208,247,156, 64,207, 77,109,127,221,245,215, 93,125,245, 53,146,115, 89, 99,156,179, 15, 61,244,208,173,183, +222,122,232,208,225,191, 80,129,174,187,254,250, 55,190,241,111,163, 82, 1,131, 34, 68, 11,168,208,170, 51,207,252,129, 79,126, +242,159,152,174,253,147, 63,254,175, 31,252,208, 63,124,230,215,212, 59,118,236,216,216,216,120,182,162, 28, 56,112,224,223,252, +238, 87, 14,188,248,165,168,149, 47,154, 48,107,195,133, 36,129,152, 87, 87,215, 94,253, 55,127,226,161, 7, 31,124,234,208,161, +167,189,236,153,103,158,249, 29, 53,164,181, 62,247,220,115,175,188,234,202,203, 46,187, 76, 41, 21,179, 62, 38,158, 44, 44, 12, +199, 19, 70,229,171, 55, 65, 25, 72, 10, 39,145, 13, 89, 18,101, 68, 84, 10,149,190,246,218,107, 31,248,230, 55, 62,245,153,207, + 62,235, 37,187,233,166,155, 46,189,244,210, 83,118,237, 98, 6, 71, 78, 58, 33,204, 12, 8, 64, 4,192,147,165,241,112, 48, 70, +165,194,134,135,178,119, 33, 34,132,234, 37,219, 3, 17, 1, 0, 81,235,226,194, 23,190,240, 13,175,187,250,243, 95,248,226,211, + 8, 68, 68,101, 89,254,220, 91,127,238,154,107, 94,235,136,125, 73,202,140, 8, 26, 81,242, 16,191, 26,136, 10,177, 44,135,160, + 84, 72,207, 41,150, 7, 60,143, 82, 75,214,196, 4, 40,165,176, 82,250,226,139, 15,252,251,255,240, 31,143, 30, 61,118, 50,183, +191,238,250,235,255,224, 63,125,245,181,175,125, 3,162,214,186, 80, 74,131, 96, 32,168,100, 9, 84,168, 81, 10,165,203,114, 0, +210, 61,162,136, 18,251,173,218, 69, 60,153, 67,182,229, 19,201,136,114, 3, 0,254,253,183,188,233,105,226, 16, 51, 40,173, 81, + 33, 32, 34, 2, 3, 40, 20, 77,163, 82,136,128,128,168,148, 42,138,194, 57,227, 17, 41, 73, 94, 67, 74, 69,169,221,154,146, 29, + 23,254, 22, 16,110, 15,207,163, 82, 23,188,224,188,147, 9,132,136, 10,149,152,160,148,236, 12, 10, 17, 1,129, 89, 73,107, 68, +107, 93,150, 37,135,206, 90, 68, 59,228,198, 46, 38,126,210, 89, 77,194,248, 15,177,243,169,155, 44,239, 95,127,213,193,147, 27, + 53,178, 66,223,255, 96, 36, 69, 72, 0,140, 0, 28,245,164,139, 98,182,181,206, 12,206,145,247, 33, 95, 8,164,222, 72,232, 93, + 7, 24,205,133,198,175,115, 46,207, 19,153,165, 58,253,206, 91,135, 96,133,136,136,194, 33, 10,113,133, 1, 17, 16, 1,181,214, + 90, 85,213,204,249,254,180, 75, 18, 36,140,193, 70,172, 33, 96,123, 66,241,200, 97, 26,255, 99,114,116,214,254,189, 39,219,203, + 88, 90,112, 28,123,168, 12,192,160, 20, 48, 3,162, 18, 95, 35, 97,177, 56,143,177,102,239, 69, 12,223,198, 12,104,149,179,129, +136, 98, 29,185,240,113,223, 22,183,215, 92,249,211,175,127,221,213, 39,129,244, 48,114,172,124,146,236,193,159, 16,229, 24, 16, +149, 39, 36, 57, 1, 15,131, 44,254,246, 94, 8,255,179,112,247, 12,125, 52, 54,125,219, 26,107,126,228,101, 47,191,241,134,235, + 79,162, 33, 96,228, 76,184,244,146,146,190, 24, 12, 60,204, 98, 76, 16,204, 56, 97, 79,137,136,129,101,224,127, 96,157, 49,198, +203,104, 19,189,202,152,206,154, 22, 16, 85, 81,236, 59, 99,255,187,110,126,199,137, 4, 2, 64,223,122, 77,189,111, 6, 32,140, +237, 88, 28, 12, 71, 68, 46,192,225, 9,247,180,198,100,224,157, 13, 40,172, 23, 81,126,110,173,177,157,177,198,216,174,179,166, +107,219,102,121,105, 85,161, 46,138,114,117,109,231,205,191,240,246,237, 75, 6,130, 9, 49, 0, 17, 96,216,146, 66,125, 76,196, + 52, 24,140, 10, 93,202, 35,250,123, 8,104,103,140, 49, 93,176, 43, 19,212, 32,130,202,175, 4,137, 21,168,166,109,219,166,173, +167, 11, 75,203,128,128, 74, 21, 69,185,182,182,243,239,252,236,235, 51,129, 2, 64, 35,181, 33, 98, 4,108,216, 51, 58,152,137, + 72, 41, 53,154, 76, 0,192, 24,103,163,114,130, 40,210,232, 13,152,113, 39, 8, 99,103, 58, 43,205, 5,223, 30,111,218,186,110, +234, 89, 85,213, 66, 70, 66, 84,168,180,210,197,249, 23, 92,240,163,151,190, 44,203, 24, 89, 80, 94,193,244,252,190,142,128, 1, + 15, 33,129,136,134,195,209,112, 52,102, 38,143,213,181,157,233, 76,215,182,166,107,173, 7,171, 4, 60,238, 4,200, 11,127,182, + 93,219,181, 77,211, 54,117,219, 84, 77,181, 85,148, 99,244,123,174,236, 74, 90,235,226,199, 47,255,107,101, 89, 48,179,130,164, + 30,239,255,161,166,103, 89, 57, 38, 79,152, 81, 90,143, 23, 22,134,163,145,116,129, 3, 40, 46,146,180,166,107, 77,215, 10,164, +231,165, 17, 96,186,109,218,182,105,155,170,169,171,170,218,106,155,110,121,199,114, 81, 14,100,175, 68, 68, 84, 8, 10,149,210, + 55,191,227, 6, 0, 40, 60, 46,230,195,160,108,136,136, 0,140, 57,178,224, 63, 82, 22,229,194,194, 34, 57, 55,155, 77, 5,235, +236,199,105,202,220,202,154,128,192, 10,129,164,174,166,109, 61, 35,128, 61,251,206, 28, 12,134,168, 16, 72,156, 90,186, 25,186, + 40, 7, 17,176,146,181, 2,102, 68, 8,125,152, 72, 48, 96, 70, 0,199, 62, 51, 41,202,114,178,184,200,204, 83,154,218,214,223, + 62,180,189,189, 99, 57,107, 67, 95,161,237,218,166,109,170,186,154, 54,245,148,153,247,159,121,206,218,206, 93, 69, 89, 34, 42, + 6, 39, 74, 10,168,167, 6,128,194,103, 83, 17,121,165, 24,126, 34,212, 9,236,193, 97,143, 12,151,229, 96,188,176, 32, 54, 57, +163, 25, 24,235,156,243, 78,111,141,243, 6, 47, 38,213,182,109,221, 54,141, 53,237,112, 56,222,185,251,244,211,247,158,177,176, +184,164,181, 78, 77, 42,191,175, 43, 73,250,138,196,187,241, 80,103, 0, 29, 57,110, 36, 30,187,102,138,215,224,178, 44, 97, 60, + 65, 84,170,208,149, 46,176,158, 17,145, 53,150,137,173,135,171, 61, 33, 21, 65, 13, 71,227,229,229,213,229,149,149,213,181,157, + 75,203,203,131,225, 80, 43, 21, 49, 97,224,100,223,222,134,196,195, 25, 16,145, 50,158,129,199,216, 56, 98,194, 9,124, 97, 73, +186,135,163,161, 82, 88, 20,197,112, 56, 24, 54,163,166,174,219,182,233,218, 65,215,117,118, 96, 70,206, 50, 3, 42, 53, 24, 12, + 70,163,209,120, 50, 25,141, 70,101, 57, 64, 68,136, 6,145,222, 72, 11, 48, 52, 95, 56, 42, 38, 6, 68,134,158, 41, 37, 92, 55, + 96, 63,194,249, 41, 75, 65,162, 7,195,114, 52, 30,123,106,143, 49,206, 57,185,134, 82, 88, 20,186, 40, 74, 93, 20, 90, 41, 64, + 79, 48,228,200,206,153,207,135, 18,184,155,173,151,207,221,189, 64, 20,190,156,178,103,191,163,176, 66, 5, 90,139,194, 10, 93, +186,193, 48,165, 40,226, 38, 62, 15, 86,161, 78,138,207, 26,180,222, 23,170,136,200, 25,179,240,143,188, 26, 41, 0,252,192, 89, + 18, 16, 21,157, 60,145, 37,229, 6, 0, 40, 10,201, 47, 41, 80, 46, 34, 86, 26, 49,179, 8,176, 97,190,123,179, 68, 66,140, 94, + 22,133, 22,177, 60, 38,156,221,222, 11, 64, 61, 0, 30, 60,140,238, 85, 7, 74, 33, 49,162,214, 10,165,165,132,132,164, 60,108, + 76,177, 57, 28, 46,149,172, 51, 25,119,138, 67,126,177,162,182,146,199,115,170, 17,121,174, 63, 29, 22, 51, 98,136, 94,219, 24, +194, 61, 10,136,223, 7,111,189, 9, 98, 20,162,135,105,202,146, 73,100,204,212, 17, 20,197, 16,128, 88,232,225,194,113, 85, 19, + 50,138, 32,113, 62,217,106,170, 27, 99, 67, 39,126, 1,164, 25,145,115,126, 66,107, 33, 24, 73,106, 42,144,247, 57,142,158,239, +187, 28,220,235,189,244, 58, 49, 81,106, 10,253,135,232, 41,153, 47, 64,232,137,198,240,193,201,134, 68,142, 34,129,185,208, 19, + 54,117,113, 32,127,144,244,204, 20,160,221, 20,226, 51, 4, 27,130,121,109, 91,234,176, 55,102,189, 37,128,228, 50,133,100,101, +148,109, 98,196,169, 85,230,165,137,245,114,208,115,240, 52,217,252,146, 58,114,204, 63, 48,219, 32,123,148, 28,114,135,185,118, + 16, 71, 13, 17,164,123, 80,114,197,208, 97,136, 87,163,100, 76,253,167, 14,237,105, 72, 11,145,223, 29, 50,165, 36,246, 92,214, +199,232, 45, 89,104, 10, 0,228,160,123, 90,178,216,109,201,168,129, 61,105, 82,187, 49,220,168,239,148,112, 2, 52, 34,107, 79, + 69, 47, 12,253, 50,246, 45,195,244, 16, 20, 35,122,188, 28,197, 62, 72,112,221,116, 7,239, 51,222, 21,192, 55,135,152, 35, 33, +177, 39, 57,244,217, 45,148,169, 88,238, 90, 4, 30, 59,197, 14,107,220, 51,164,169, 3, 0, 4, 4, 73,171,220,179,151,204, 19, +100,233,145,193, 65,106, 70, 66,111,105, 78,208,247,203,148, 36, 54,196, 41, 46,199,213,227, 16, 74,105,206, 92,122, 75, 70, 30, + 4,137,194,164, 30, 85,192, 70,224,132, 50, 80,182,158,189, 27,136, 64,190,189,149,236, 42,236, 59, 24,148,148, 20, 74,148, 25, + 90,118,201, 12,182,202,212,233,187,162,125, 44, 43,110, 63,114, 27,202,205, 44,198,161,185, 14, 83,200,145,210,102,152,158, 96, +206,248, 51, 12, 15,104,206, 41,146,187,246,174,192,169, 93, 77,208,135,221, 0,160,120,248,161,135, 50, 18, 41,115,255, 95, 89, +131,108,238,175, 61, 34, 4,164,127, 40, 17, 14,250, 45,179,108,203, 79,157,207,160, 52,143,120,121, 14,218,241,227,199,215,215, +215,159,111,109,161,255,183, 47,102, 94, 89, 89, 89, 93, 93, 45, 0, 96, 99, 99,227,145, 71, 30,249,190, 82,182,147, 60, 87, 87, + 87,213,247, 21,241, 61,214, 44,251,190,130,190,175,160,191, 92,175,226,249, 41,214,218,218,234,190,125,251, 70,195,209,104, 60, + 6,224,182,237,170,217,236,201,167,158, 60,124,248,200,255, 95, 10,218,121,202, 41,231,157,123,238, 43, 14,254,216,229,151, 95, +190,184,184, 40, 25,146,179,142,209,207,133,101, 51, 24,169, 25, 38,195, 97,135,158,122,242,174,187,190,122,207,189,247, 62,242, +200,163,115,211,174,223,219, 10,210, 90, 95,117,245,213,111,255,249, 27, 11,173,137, 1, 17, 51,110, 20, 33,176,210,200, 76,172, +164,193,141,138,144, 1,149,135,214, 28, 32, 50,128, 98,216,125,234,158,215, 92,121,229,171,127,242,167,156, 53, 68,246,254,111, + 62,240,155,159,185,163,170,170,231,169,130,138,162,216,183,111,239,238,221,187,151,150,150, 39,147,201,112, 56,152, 76, 38, 11, + 11, 11, 17, 70, 36,162,211,246,156,254, 87, 47,123,213,226,226, 34, 17, 72,147, 95,197, 94, 58, 32, 50, 33, 42, 6, 22,141, 97, + 64,106, 4, 8,101,148,182,157, 2,100, 68,133,138,145, 25,149,246, 93, 73,167, 46,126,241,139, 63,254,143, 63, 86, 87,179,187, +239,190,251, 11,119,126, 41,193,146,127, 1, 10, 82, 74,237,221,187,119,207,158, 61,231,156,115,206,133, 23, 94,120,230, 89,103, +237, 63,227, 12, 93, 20, 49,191, 39, 63, 58,150, 0,190,188,162, 71,196,201,100, 82, 14,134, 50, 10,201,136, 74,163,148, 82,128, + 42,107,249, 40,144, 82, 33,193,104,152,193, 33, 17,215,192,152,201,249,110, 90, 64,219,153,121, 48, 26,255,200,165, 63,250,178, +151,253,240, 3,247,223,255,219,255,252,206,206,152,231, 64, 65,249,184,135,244,229,207, 57,231,156,171,174,186,234,242,203, 47, +215, 69,225,235,123, 41, 68, 82, 9, 36, 18, 10, 97, 94, 43,237,149, 18, 91,163, 24, 10,218,209,176, 28, 12,199,168, 20, 42, 37, +173,255,216,128, 75, 0,210,137,166, 88,114, 64, 37,175,250, 34, 74,146, 17, 64, 3,182,141, 74,128,105,114,238, 7, 95,244,162, +247,189,231,220,127,241,229,127,249,141,111, 62,240,231, 82, 16, 51,175,172,174,254,216, 43, 95,121,197, 21, 87,172,172,174, 78, + 38, 19, 0, 36, 34, 96, 16,202, 11,166, 6,117,104,186,132,117,244,125, 35, 89,116, 65, 55,125,239,139, 1, 80, 1,140,138, 66, +151, 37,162, 66, 64, 72,208,102, 62, 89, 3,125,100,171,167, 42, 8, 99,192, 57,141, 55, 85,186,137, 99,158,136,169, 30, 83, 65, + 84,170, 64, 93,252,244, 79,189,250,135, 47,121,201, 39, 63,117,199,119, 31, 49,247,239,223,255,154,215,188,230,245,111,248,153, +165,229, 29,131,193,208,183,210,148,192,223,232,167, 96,149, 63,158, 68, 41,209, 86,124, 3, 10,195,100,146,146, 47,121, 58,134, + 80, 70,148, 46, 81, 41,223, 85,142,235,207,240,157,208,229, 84, 82,247,138,234, 56, 62,152,246, 51,142,124,227, 52,125,233, 40, +253, 90,134, 31,153, 28,141, 70,163, 11,206, 63,231, 79,255,244,127,154,103,185,211,237,216,177, 99,101,101,197, 79, 3, 41,165, +101,200, 38,244, 25,149, 31,157,150,105, 11,105, 48, 34,128,124, 64, 1,131, 2, 64,165, 20,248, 81, 38, 81,140, 42,138, 98, 48, + 24, 32,176,181, 6, 81,205, 19,204, 51,218, 76,218,186,243, 62,100,120, 54,249,169, 11, 3,168,142,226,208, 39,197, 97,206,108, +210, 50, 13, 96,102, 32, 70, 36,247,227,234,202,218, 79,252,248,171,254,124,153, 52,122, 95, 17, 54, 10, 0,130, 12,173, 33,176, +152,139,194,248, 97,228,224,123, 28, 67, 36,134,217,136,210, 89, 83,205,182,242, 81,188,200, 47,207,168, 69,185, 45, 8, 61, 37, +157,161, 32, 83,186, 94, 71,142, 60,159, 38, 17,109, 60,237, 38, 12,178,185,248,135,231, 42,185,196, 90, 15, 35,182,176,111,239, +222, 75, 94,114,209,119,187,139, 33, 34,160, 31, 0, 66, 86, 36,243,100,140, 4,128,138, 49, 68, 65, 21,126, 2,132,140,190, 17, +232, 45, 78,152, 78,138,137,182,182,214,153, 65, 17,163,163,208,220, 86,152,168, 54,189,110, 22,193, 60,162, 28,231,124,101, 92, + 32, 12,252, 70,147,241, 42,138,227, 71,241, 96,140, 56, 30, 69,225,140,140, 64, 97,242,254,120,201,129,139,190,121,255, 31,243, +119,185,205, 35, 0, 73,183, 81, 33, 18,112,212, 64,136,195,242, 6, 88,116,226,163,107,162, 38, 42,165, 53, 34,116,166, 53,198, +104, 85, 56,103, 25, 88,177, 70, 36, 84, 10,101,172, 49, 98,114, 57, 70, 76,113,120,133, 32,167,245, 51, 59, 25,240,150,243, 76, +146, 57,134, 35, 68, 82, 86, 29,108, 45,158,185,224,136, 28,229, 39,240, 56, 34,235,220,205,239,120,235,239,255,225,221,247,221, +247,141,103,158, 37, 21, 25, 60, 20, 27,109,201,121,160,223,203,100, 0, 78, 84, 25,206, 8, 27,158, 85,233, 44, 1,163,117, 78, +218,109,132,164,180, 70, 34,244, 57, 11,200, 34,112, 15,187,229, 20, 58, 40, 64,195, 68,189, 81,255,100, 64, 46, 11, 93,156,230, + 68,179,201, 58,225, 76,249,161, 76,233,205, 27,227,172, 33,226,174,235,254,214,207,254,204,235, 95,123,245,183,190,245,224,167, + 62,253,217,166,105,158, 85,162, 24,244,146, 78,145,240, 59,187,231, 27,202, 92, 94, 68,205,115, 98, 65,248,134,112,109,140,233, + 44, 88,197,140, 74, 41, 38, 81, 95,100,145,229, 89, 16,229,173,184,222, 62, 70,253,105, 10,241, 41,142,195, 40, 49, 24,101,103, +207, 36, 5,185, 48,160,233,201,100,158,226,212, 18,147,214, 5, 49,156,125,246,217, 31,254,224, 7,142, 28, 57,114,199,231,254, +217,227,143, 63,241,140, 20, 68, 28,227, 10,199,180, 6, 78,196, 55,224,152,200, 18,129, 82,113,191,246,236,129,193, 80,104, 85, + 10, 9,253,164, 46, 74,160,135,156,192, 48,223,132,137,227, 49,114, 18, 2, 37, 35,114, 57, 55, 50, 41,168,231, 99, 94, 71, 54, +178, 95,172, 39, 86,153, 48, 0,216,154,182, 46, 7, 35, 6,165,148,134, 2,200,185,181,157, 59,111,188,225,173,199,142, 29,253, +141,127,250,155,115,147,172,243, 10,242,197, 15, 3, 98, 78, 56, 9,209,201,191, 65, 2, 10,221,110,111,111,144, 58, 21, 10, 0, +148,214,131,225,200, 90,219,212,149,117, 14,201,249,116, 1, 20, 42,152, 59, 86,230, 36,249,115,190,155,115,110, 60,233,141,216, +148,203,200,164,150, 92,154,207,180,214,216, 48,191,218,117, 77,219, 84,117, 93,173,172,238, 34,114,194, 82,246,102,129,110,101, +101,245,151,110,186,241,225,111, 63,124,199,231,126,171,222,230,116, 5,228,101,143,159, 22,143,229, 35, 8,167, 9,129,133, 17, +236, 63, 36, 25,117,226, 36,120, 74,143,184, 82, 57, 24,140,104, 66,204,109, 35, 52, 55, 10, 52,151, 72, 61, 71,200, 91,198,112, + 2,245,100,126,230, 79,212,201, 99, 80,136, 61,121,244, 9, 19,253, 18,131,188,115,181,166, 53,157,169,219,186,106,234,233,194, +226,138, 82,104,173, 45,139, 82,116,196, 12, 10,160, 40,193, 90,220,183,127,255,123,223,253,139,247, 63,240, 95,238,252,210,151, + 79,232, 98,190, 51,135,158, 95,138,161,248,244,190, 19, 8,239, 40,123,151, 31, 54, 67,244, 60, 57, 31,173, 61,147,184, 28, 12, +198,204, 8,208, 52,181, 49,134,200,113,100,153, 96,242,210, 84, 74,101,109,110, 74,163,121, 25, 41,155,243, 12,217,101, 1,200, +159,163, 21,167,229, 93,118,234,129, 53, 93,215, 54, 93, 91,181, 77, 5, 80,236,220,181,203,145, 11,100, 90,201,221,148, 3, 70, +102,173, 11, 0,116, 14, 15, 92,124,241, 11,206, 61,247,142,207,253,214,227,249,144,118,210, 16,138,165,136,118, 88, 54,159,244, +198,243,105, 24, 66, 26,192,196, 33, 75,242,244, 34,165, 20,251, 9,215, 1,200, 17, 2,109,211, 54,141,181,198, 57,202, 41, 27, + 8,114,153,208,156,101, 72,211,147,180,173,218,240,201,140,228,147, 78,146, 30,226,224, 85,105, 20,219,248,232,220,117,198,180, + 93,215,152,182, 50, 93,219, 25, 90, 88, 24,141,198, 11, 90,151,222,223, 81,216, 48, 82, 34, 49, 48, 43,165,152, 53,107, 30,142, + 38,111,121,211,223,253,223,127,246,103,191,247,251,255, 57, 84,243,158, 64,201,236, 29,202, 15,251, 35,202,154, 34,162,160, 16, +200, 64, 41, 18, 49, 51, 50,250,142, 48,167, 66,222, 23, 37, 80,148,165,167,144,106,221,182, 77,215,118, 98, 77,146,247, 1,204, + 57, 87,136,211,148,230, 11,120, 62,237,118,113,131,247, 41, 96, 48,158,200, 15, 22,237, 88,211,153,174,238,218,218, 24,227, 28, +148,131,114,247,105,123,151,150, 87, 7,131,129, 82,218, 91,177,192, 76,178, 53,161, 98,100,153, 97, 47, 10,109, 29,159,125,206, +185,151,235,242,193,111, 63, 90, 64,162, 49, 33,147,199,116,100,206,158,179, 42, 62,235,238,114,228,140, 33, 32, 49,137,163,137, + 37,196,189, 28,125,180, 81,101, 57, 80, 82,135, 20,173,144, 59, 1,140,181,222, 69, 98,183,151,121,155,237,164,115,127,122, 1, + 40, 35,207, 91,202, 78, 21,112,214, 90,219, 25, 35,179,234,181, 49,157,179, 14, 0,150,150,151,118,239,217,127,202,238, 83, 23, + 22, 23, 7,131,129,150,179, 2, 19,253, 16, 37,162, 70,202,164, 67,242,197, 41,170,140, 27, 40,112,167,183, 25, 22,205,250, 55, + 50,221,227,149,205,224,245,136,222,148, 66,150,148,246,236,237,245,158, 86, 37, 14,148,214, 69, 89,150, 93, 25,134,221, 91,107, +140, 53, 76, 28,131, 74,218,207,211, 97,103, 33,127,102,151,198, 14,178,188, 80, 40,245, 94, 59,214, 24,107, 90,107, 59, 34,171, +148,158, 44, 47,237, 88, 61,101,101,237,148,229,229, 29,147,133,197,225,112,168,180, 14, 5, 66,204, 55, 48, 36,177, 40,147, 34, +168, 52, 50,171, 0, 89,244,131,180,108, 88,128,129,125,128, 97,110, 61, 96,133, 97,166, 35,152, 83,176, 32, 10,164, 16,140, 65, + 41, 47,186, 64,202,145,178, 44,149, 82, 69, 81,150,101, 57, 28, 14,133,250,221,117,129,166, 14,192,108,137,216,111,225,158,100, +236, 40,219,173,182,219, 78, 56, 97,213, 17, 91, 0, 40, 6,195,241,100,113, 56, 26,143, 23, 22, 23, 22,150, 38,139,139,227,241, +120, 56, 28,233,162, 40,180,246,181,182,231,168, 65,130,165, 60,170,139, 1,118, 83, 82,109,230, 49, 8,152, 9, 16,137, 17,146, +225,248,160,228,171,179,100, 89, 20, 6,181,132,231, 24, 82, 3, 79,180, 74,199,204,228, 6,197,158,206,168,177,240,243, 68,101, + 89, 90,107, 71,145, 76,108, 60, 51, 53, 28,145, 98,201, 90, 75,214, 89,229,156,141,121, 25, 3, 3, 20,158,140, 78, 69, 72, 90, +149, 86,170, 40,202, 98, 48, 24, 14, 6,131,225,112, 56, 28,150,131, 65, 89, 10,171, 53,204, 55,245,104, 42,137,206,159,147,110, + 61,146, 27,106,163, 2, 34,183, 48, 83, 13,137,174, 0,189,210, 66,172,102, 2,150,128, 45,161, 91, 24,161, 12,132,137,143, 72, + 33, 98, 33,244,152,102,152, 41, 11, 21, 42,212, 2, 68, 17, 81, 89,148,142,156,115,163,254,188, 76,122,227,108, 28,236, 33,150, +195,193,122, 79,164,148, 86, 90, 41,173, 11,165,197, 86,148,214,133, 28,185, 3, 74,133,218, 26,122, 12,213,185,250, 32,203,141, +179,124, 36, 38,138,158, 13, 37, 41, 33, 65,208, 81,120,195,130,195, 34,160,223,156,101, 95, 71, 8,227,128,217,172,133, 79, 13, +197,204,252,239,227, 17,168,137,100,233,121,194, 74,249, 93, 68, 9,207,188,215, 2,227,136,246, 80, 63, 63,226, 48,177, 20,200, +223, 30,179, 65,165,148,224, 43,115, 41, 59, 70,198, 26,251, 44,175,119, 82,224,156,226, 50, 70,119,218,230,179,202,193, 7,160, +109, 58, 2,137, 56, 64, 97, 28,135, 82,201,234, 23,149,114,226, 50, 16,134,107, 49, 16, 16,114,130, 7, 32, 48, 89, 49,244, 39, +180, 70, 34,242,100,103,214, 84,164,211, 67,182, 49,174, 82,185,187,141,215, 3, 89,138,203, 57,133,143, 18, 36, 65, 57, 46,206, +208,187, 82,168,204,251, 46,230,123, 48, 94, 29,114, 3, 98,198, 72, 65,166,144, 46,147, 28,100,195, 49,123,130,185,160, 19,131, + 90,188,117,100,206, 17, 80, 72, 51,243,179, 29,146,128,152, 97, 70, 74,118, 27, 66, 86,190,216,211,115,167, 85, 36, 30, 89,164, +142,249,138, 40,193, 14, 89, 31, 10,125,190, 14, 39,240, 50,238, 55,119, 56,205,210, 41, 72, 52,102,144, 58, 58,112,255, 32,167, + 36, 66, 56,143, 81,120,186, 28, 44, 60, 30,164, 1, 61, 62,166, 16,200, 41, 18, 64,163,147,245, 9,172,105, 33,123,185,130,152, + 43,132, 38, 9,128,159, 67,148,130,198,167, 44,113, 74,209,207,182,114,178,160,108,131,232,207, 84,132,231,199, 62, 81, 55,227, +115,207, 5,239,120, 30, 84, 70, 95, 21,241, 56,244,120, 56, 66, 66, 28,146,135,156,187,152,115,198,179, 81,138,220,132, 18,108, + 24,232,166,169,185, 24, 42,143,222,136, 64,230,239, 20,177,145,180, 83, 98,118,206, 80,114,103,206,197,202,152,140,233, 52,148, +140,140, 74,193, 96,209, 7,110,206, 56,206,105, 4, 0,242, 68, 49,111,135, 98,204,253,179,156,168,199, 58,239,205,119, 5,180, + 76, 2,115,214,223,233,149,163,161,173, 24, 9,217,146, 95,165, 33,154, 94, 20, 73, 45,179,160,130, 94,155,176,215,191,245, 24, +104,239, 80,150, 30,147, 60,242,197,227, 56, 35,165,240, 22,181,205, 81,150, 92, 73, 42, 89, 16,164,209,221,236, 99,249,188, 11, +100,163, 49,158, 6,237,207,248,242,133,102,144,139,194, 49, 55,105, 99,141,234,167,224,129, 32,243, 52,136,137,123, 13,225, 25, + 56, 27, 50,242,131, 89,144,181,179, 33,210,117,227,149,251,186,203,225, 38,244,124,221, 88, 34, 81,127, 22,162,215,182,164,172, + 85, 55,103, 65, 49,127, 9, 53,123, 56,154, 42, 79, 98, 60, 37, 26,250, 81,150,146,240, 94, 20,159,170, 50,201,249, 59,201, 26, + 48,108,106,208, 63,158, 43,156, 84, 20, 76,133,178,232, 10, 0,132,126,112, 13, 32, 30,230,147, 71,225,121,171,153, 39, 54,103, +251, 1, 71,182, 52, 72, 45, 9, 60,215,211,205,237, 32,219,230,123, 31, 73,229, 40,132,105, 77,136,129, 57, 57, 73, 38, 96, 62, +197,146,175, 95,156, 28, 20,157, 83,156,198,137,147, 15,222,127, 48,153, 15,231,207,221,127, 67,153,227, 66,111,220, 97,110,251, +239, 77, 31,196,103,164,124, 19,139,115, 1, 3,219,202, 57, 0, 0, 1,249, 73, 68, 65, 84,115, 12,128, 94, 28, 42, 18,232, 32, + 71,246,205,105, 30, 48,197, 68,240,154,147, 21, 68, 70,102, 66,255,103,132, 62, 72,178,113,159, 37,138, 24,136,241,154, 24, 30, + 72,254, 59, 9, 8,125,112, 17,230,182,254, 24,253, 57,163,135,111, 55, 30,198, 62, 56,153, 2, 88,127, 20,103,174,239,154, 15, + 16,204, 13,162,246, 93, 44,134, 27, 10,147, 86, 18, 90, 0,253,233,120, 24,183,100, 15,106, 97, 24,153,200,167, 57, 51,151,203, + 54,145, 48, 6,214,219,200,227, 33,206, 25, 97, 36,115,132, 44,116,179,120,101,239, 72, 14,200,102,100,252,168, 66,222,106,203, + 79,164,234,197,104,218, 54,144,209,155,139,201,155,117,125, 23,139, 99, 10,121,126,154, 86, 38,128,209,217, 16, 0, 65,111,114, + 27,160,151,185, 97, 86,183,166,141, 1,251,230, 63,127,234, 86,102,217,105,102, 42,168,155,122,211, 24,243,227, 16,253,153,174, +124, 98, 36,111,222, 18,244, 14, 34,227, 56,161,177,157, 70,145,237, 90, 69,188, 50,113,122,234, 60,213,160,176,149,139,201, 96, +120,211,155,117, 39, 9, 50, 40,245,132, 63,144, 22,195,242, 99,140,233,224,177,181, 12,191,133, 92, 77,156,141, 51, 97, 88, 36, +142,217, 74,172,137, 17,182, 41, 40,157, 30,152,107, 58,212,207, 49, 2, 1,159,104, 11,235, 85,120,185, 37,199, 68,145,146,245, +102, 94, 30,197,241, 14,213, 27, 70,202, 34, 44, 39,195,202,142,176,139,249,221,188,139, 37,167, 38,134, 57,237,228,189,164,232, +176,144,209,128, 32,140, 89,205, 79,101,245, 39,248, 78,176,183,165, 32, 29,173, 7,120,126,228, 44,139,200,185, 5, 9,182,137, + 89,214,198,121, 61,195,219,160,215,109, 39,213, 65, 56,215, 51, 85,174,217,126, 13, 39, 58,204,142,251,121, 89,182,240,212, 27, +236,235,101,230,249,182,149,156, 49, 61, 97,252,239,184, 36,207,232,239, 76,233, 8, 75,158, 3,124, 79, 16,189, 67,144,206,138, +236, 94,174, 12,121, 29,229,147, 31,232,231,248,249,147,245, 53, 49, 7, 56, 60,157,118, 32,191, 85,118,107,216,118, 28, 32,247, +206, 26,133, 30, 53, 45, 33, 21, 89,197,144,219, 81,186,126,126, 20,117, 62, 98, 69,144,143,231,226,193,131, 7,121,238, 9,255, + 82,142,238,244,200,132,207, 98,224,231,255, 0,194, 7,103,207, 35,149,125,120, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/layer.png.c b/source/blender/editors/datafiles/layer.png.c new file mode 100644 index 00000000000..6006067bf76 --- /dev/null +++ b/source/blender/editors/datafiles/layer.png.c @@ -0,0 +1,350 @@ +/* DataToC output of file <layer_png> */ + +int datatoc_layer_png_size= 11004; +char datatoc_layer_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, + 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, 11,252, 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, + 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7, +116, 73, 77, 69, 7,218, 7, 19, 0, 34, 12, 33,249,187,131, 0, 0, 32, 0, 73, 68, 65, 84,120,218,237,124,121,148,157, 85,149, +239,222,251,251,238, 80,247,214,148, 16, 8, 9,169, 74,128, 12, 12, 50,147, 0, 33, 19,196, 16,230,214,238, 70,177,105,158,246, + 3,108,129,110,251,169,175,187,159,218, 46,150, 52,168,207,126,168,111,105,171, 79, 5, 91,105, 27, 65, 68, 69, 25, 18, 18,134, + 0, 33, 33, 68,134, 8, 25, 0, 67,134, 74, 85,165, 82,211,173,123,235,222,251,125,223,217,251,253,177,207, 57,223, 87, 1,149, +135,244,106,124,171,111,214, 74,106,165,238,112,238, 62,123,239,179,247,239,247,219, 7,151, 44, 89, 2,191,243,241,102,158, 20, +250,159, 86,175, 89, 43, 44, 73, 18, 69,205,102,125,188,250,103, 87, 92,153, 62,137,153,215,111,220, 20,199,137, 49, 9,155,196, + 72, 46,204, 73,177,212,118,222,146,133, 66,240,208,163,235,237, 59,177, 17, 64, 4, 64, 17, 36,196,190,253,251,147, 36,185,252, + 67, 87,143,143,141,164, 79, 18, 16, 97, 22, 17, 65,108, 52, 26,173,109,109,204,108, 76, 2, 56,249,107, 95,253,106,173, 90, 9, + 1,128,133, 89, 24, 68, 64, 36,138,162, 48,204,177, 48, 0, 24, 30,167, 32, 8,115,121, 2, 0, 54, 44, 44, 34,114,219,215,191, +146,207,231,145,168,163,189,181,217,108, 32, 16, 0, 32, 34, 1, 0, 51, 11,243,215,110,185,249, 3, 31,186, 6, 17,139,197, 98, +111,239,128, 8,130,136, 8, 0, 98,232,159,244,193, 15,255,181, 8, 0,194,208,224, 1, 65,102, 54,134, 89, 68, 94,125,121,135, +190, 83,242,197, 27, 63, 5, 0, 0,210, 94, 46,176, 17, 96, 97,102,102, 35, 0, 83, 14, 61, 44, 4,128, 36, 54, 31,249,111,127, + 47, 34, 0,176,183,167, 95, 68,140, 49,198, 24, 54, 50, 58, 60, 44, 34,248,166,246,238,205, 60,208,255,244,208,218,135,147, 56, +142,163,168,217,172,239,216,190,245,211,255,112, 67,186,119, 27,158,126,198, 24, 19, 39,137,126,155, 32,148, 60,192,166,245, 79, +156,183,108,225,234, 71,215,123, 47, 64,102, 0, 1, 6, 4, 64,164,240,107,183,220,120,229, 85, 31,105,212,199, 17,100,213,163, + 79, 1, 0, 62,241,212, 70, 99,152,141, 97, 99, 88,228,139, 55,126,242,195,127,253, 9, 19,155,196, 36, 99, 99,149, 70,189,246, +243,123,239, 37,102, 17,221, 21,196,255,249,217, 79, 94,247,177, 79, 98, 16,228, 10,249, 40,138,137, 40, 12,194, 21, 43, 86,224, +163,143, 63,197, 38, 97,145,193,129,253,133, 66, 1, 16, 69,100,172, 50,106,140,137,162,168, 81, 31,111,212,107, 33,115, 98,152, + 1, 64, 0,144, 8, 0,226, 56, 18, 65, 17, 16,102, 0, 32, 10,200, 24, 35, 34, 95,252,236, 39,139,197,162, 0,180,181,181, 53, + 26,117, 17,102, 54, 44, 2, 0, 35,195, 67,184,106,205, 35,194,102,188, 94, 71, 64, 68, 24, 27,171, 8,179,126, 86, 18,199, 61, +123,118, 33, 34, 37,137,185,229,166,207, 48,179, 8,151, 91, 10,194,194,186,113,204, 44,210, 82, 42, 25, 54,240,118,237, 93,248, +155,126,177,250,161, 53, 81,179, 97,140, 73,146,184, 86, 29,251,240, 95, 94,219,104, 52,126,155, 15, 44, 94,188,120,246,156, 57, + 87, 93,117,181, 0, 8,139, 97, 17, 17, 22,195,204, 98,216,176, 49, 38,209,127,140, 73,216,152, 56,106, 54,155,245,171,174,254, +203,131,222, 40,232,238,238,254,244, 63,220, 32, 0,194, 8,132, 40, 2, 8, 8, 8, 96,227, 4, 0,145, 48,138,162,111,125,245, +150,205, 27,215, 79,153,122,248,120,173, 74, 73, 99,246,145,221,175,190,182, 39, 93,209,162, 69,139,190,240,197, 47,129, 6, 24, +179, 17, 17, 99, 68,132, 69,152, 13,136,236,235,217,251,131,219,190,249, 95,175,253, 27, 4, 48,108,132, 57, 73,226, 36, 78, 74, +229,242,224,129,253, 81, 51,170, 85, 71,110,184,241,243, 65,119,119,247,242, 21, 43, 1,132, 89, 88, 88,140, 8,136, 0, 0, 8, + 27,190,229,230,207,156,181,228,220,249,103,157, 29,132, 33, 34, 5, 65, 16,134, 57,102, 97,230,102,179,161, 75, 15,130,220,210, +197,103, 19, 0,168, 75, 24,147, 48, 51,235, 55, 18,249,250,151,190,176,119,247,174,235, 62,241,169, 48, 12,131, 32, 32,162, 92, + 46, 87, 42,151,199,199,199, 19,147, 32, 34, 32, 34, 17, 34, 33, 81,144,203,135, 0,160, 14, 39,204, 32, 2,136,108,204, 63,253, +227,167,175,255,248, 39,213, 67, 5, 0, 0,219,218,202,125,189,125, 60,198,136,128,130, 2, 8, 2,204,106, 70, 34, 10, 52, 87, + 26,177,182,149, 90,181,250,163,127,189,237,250, 79,124, 10,209, 6, 53, 34,150, 90, 90,250,246,237, 19, 64, 0, 22, 1,102,209, +184,211,220,130,136, 15,175,186, 63, 4,128,196, 24, 68, 17,134,151,182, 60, 31,132,225,101, 87,124, 8,236,251, 66, 24,134, 2, +216,215,223, 39,106, 51, 17, 54,134, 13, 51, 27, 54, 70,243,222,200,240,208,105,103, 44,212, 36,104, 16,224,209, 53,171,230, 30, +247,174,206,206, 73,134,133, 16, 0,160, 84,110, 29, 25, 26,140,162,136,129,109,198, 19,177,145,193, 34, 34,123,118,239,108,109, +109,215, 40, 38, 0, 48,108,214,174,186,127,238,113, 39,180,183,119, 48, 11,136, 24,230,150, 82,249,192,192,254,102,179,105,216, +254, 49,198, 36,113,162,251, 34, 44,219,183,189,216,214,222, 41, 34,198,112, 98,146,183, 47, 79,190, 45,143,238,238,110,122,187, +222,235,141,163,127,249,242,229, 31,255,248, 39,152,141, 73, 18,195,230,203, 95,254,242, 19, 79, 60,249,102, 79, 0,125,204,156, + 53,235,219,223,185, 21,244, 92,210,115, 39, 73,140, 73,146, 36, 78,226,232,218,107,175,175,140,141,189,225, 87, 67, 0,120,242, +169,167,132, 69, 4, 24,192, 36, 6,192,158,109,156,176, 97,221,166,196,190, 99, 18, 55, 26,141,235,174,255,171,122,189,126,240, + 27,109,220,180,217, 57, 8,235, 49,111,196, 0,179, 49,194,250, 46,108,196, 48, 51, 15,244,247,221,245,175,223, 69, 66, 0,200, +133,225,125,107,214,101,223, 40, 68, 34, 4,224, 56,209,112, 16,112,161, 4,130, 72,136, 16, 0, 24,130,127,249,198,255,174, 85, +171,115,142, 61,110,246,156,121, 47,189,248,252,158,157, 59, 15, 54, 54, 34, 26,195, 0,128, 32, 2,128, 34, 34, 32, 0,136, 40, +130,136,192, 8, 95,249,220,103, 91,219,218,174,188,250, 58,102, 99,146,248,180,249, 11,143, 58,242,232,254,193,225,231,182,108, + 77,141,253,212,211,155, 93,244, 11,107, 70,241, 33, 32, 44,204,255,235,166,207,156,185,104,217,187, 78, 60,217,136, 97,163, 59, + 25,199, 81,211, 24,137,162, 70,179, 81,255, 31,159,250, 76,119,119, 55, 49,139,205, 99,104, 51,137, 0,160,219,206, 47,125,238, +134,243, 47,253,147, 19, 79, 57, 29,137, 8,131,128,130, 32, 12, 59, 58, 39, 35,133,128, 16, 4, 97, 46,151,191,249,198, 27,212, +143, 68,211,163,126, 37, 6,151, 32, 17,126,112,235, 55, 79, 63,115,209,145, 71,207,214, 61, 37, 66,102,106, 43,151,250,251,250, + 17, 41, 8, 66, 97, 70, 10,130, 92,254,220,101, 75, 72, 4,180,146,210,250, 12, 88,244, 59,239,126,237,181, 90,181,122,250,153, +103, 35, 34, 34, 18, 5,128,212,209,209, 62,176,127, 64, 15, 4, 0, 0, 36,251, 8, 2, 18, 17, 22,112, 37,128,125,151, 36, 73, +126,248,189,111,253,249, 85,215, 34, 0, 0, 33, 34, 16,116,118, 78,238,239, 31, 32, 34, 0, 76,223, 75,203, 15,164, 80,132, 1, + 52, 67, 50, 0, 48, 0, 48,255,211,141,159,186, 78,147, 36, 34, 2, 8, 99,177,165,124, 96,160, 31, 64, 68,252,235,173, 5,244, +105,100, 19,166,251, 11, 65,214,174,186,255,210,247, 93, 17,134,161, 15, 31, 10, 2, 17, 19,199, 9,160, 77,226, 98,119,199,101, + 99, 64, 98, 91,236, 49,136, 0,115, 28,199,207,110, 90, 63,115,214, 81, 54, 93, 35, 2, 64,185, 84, 24, 30, 28, 68,183, 8, 17, + 1,253,124,212,220,143,113, 18,147,183, 14,139, 48,194,151, 63,119,195,135, 63,250,183,234,226,250,104,107,239,220, 63, 48,232, +178,184,216,213,176,190,202, 26,180,217,168,135,234,118, 8, 34,130,189, 61,123, 22,156,189, 52, 8, 2, 97, 64, 4, 65, 32,196, + 36,137, 57, 97, 22, 16, 0,102,221, 22,173,188,237, 39, 13, 29, 24, 8,195, 28,169, 19,235,198,253,224,182,111,156, 58,255, 44, + 23,115, 0, 34,229, 82, 97,160,191,151, 81,180,118,215,242,221, 46, 69, 4, 0, 94,248,229,166, 66, 75, 17, 1,212,216, 34,194, + 27,158,120,236,125, 87, 94,141, 32,206,147, 36,159, 47,140,140, 86, 25, 4,133, 5,152, 25, 50, 86, 96, 17, 25,175, 86,103, 30, + 53, 7, 4, 5,128, 68,244,168,145, 39, 31,125,232,144, 41, 83, 68,163,151, 89, 68, 90, 10, 52, 62, 94,211, 5,232,135, 49,219, + 18,129, 69, 64, 32,138, 34,111, 59,210, 95,172,190,239,167, 87, 92,117,173,245, 4,102, 65, 44,183,182,246,246, 31, 96,102,212, + 21, 24,125,119,107, 32, 16,217,190,117, 11,161, 86, 63, 34, 2,164,241,254,226,179,207,180,182,182, 50, 11, 8, 11, 34,136,112, +220, 76,162, 4,196,150, 59,122, 80,107,134, 80,243, 28, 62,125,134, 0,176,126, 77,102,120, 71,157,107, 93, 93, 93, 4,239,164, + 7,106, 67,246, 22, 30,231,156,123,206, 41, 39,159,130,132, 99,149,202, 99,143, 61,182,125,251,142,127,223,243,250,245,143,247, +189,255,242,171,175,185,198, 24,163,238,103, 29, 74, 64,132, 47,188,240, 34,117,160, 36, 73,132,153, 77,242,189,239,127,127,213, +234, 53,111,209, 72, 75,150, 44, 89,183, 46, 61, 47,143, 63,254,248, 21,231,157,183,114,229,249,165, 82, 11, 0, 24, 35, 90,140, +217,188, 39, 44,172,237,129, 13, 33,237,114,220,143, 26, 58, 70,171,117,147, 24, 99,226, 56,138,254,241,166,207,189,182,107,215, +155, 44,141, 66,102,222,176,113,147, 49,198,102,102,119,192, 25, 22, 97,193, 64, 64,244,252,117,185,144,132, 69, 16, 24,144, 0, + 24,137,144, 53,127, 32, 34, 9, 50, 18,137, 48,113, 64,100,134,250, 6,159,124,108,237, 49, 71,119,205,153, 53, 29, 17,131, 92, +248,192, 67,235,126,247,150, 81, 16, 10,145,134,161,198,158,162, 19, 66,136,204,130, 32, 40, 32,246,220, 17, 0, 4, 20, 65, 64, + 0, 32, 66, 22, 8, 72,132, 69, 80,152, 9, 33, 78, 30,127,100,237,139,207,255, 18, 17,197, 54, 71, 54,199,155, 56, 89,185,108, + 97,173,222,120, 98,227, 47,127,219,130, 16, 17, 1,133, 89, 75,103,212, 77, 66, 4,102, 32, 2, 17, 20,116,103, 48,218,127,180, + 17, 67, 0, 33, 65, 1, 68, 18, 30, 60, 48,124,251,119,190,142,136,108,204,137,167,158,126,220, 9, 39, 17,146, 45,234,147, 36, + 73,162,209,161, 3,235, 30,121,184,220, 82, 40,149, 90,198,199,235,191,113, 65, 2,160,165, 56, 10,234,129,167,231, 22,160,226, + 1,174,221, 2,151,196, 81, 64,144, 72,152, 9, 73,144,185,175,167,231,142,239,125, 11, 0,230, 28,115,220,153,139,150, 5, 33, +137,173,135, 88, 68,200,112, 24,134, 57,147,203, 77, 45,188,231,178,203,155,205,250,244,174, 89, 39,158, 50, 31,133,227, 36, 26, +175,213,110,184,241,230, 9, 11,138,227, 68,132, 17,116, 99,172,157,245, 12, 97, 0,241, 39, 42,128,100,138, 96,221,181,161,193, + 3,223,254,218, 45, 65, 16, 46, 95,121,241,172,163,103, 19,145,186,183,186,154, 16,137, 8, 17,139, 4, 28,112,161, 88, 20, 32, +170,141,157,126,198,217,204,198, 24, 8,194, 92,169,220,250,249,155, 62, 91,171, 86,110,250,194, 45, 62,236, 5, 0,152, 5,237, +206,128,226, 80,246, 88, 23, 65, 17,214,162, 18,197,215, 31,113, 20,127,227, 43, 95,104, 54, 26,231,174,188,100,222,177,199,187, +144, 0, 0, 9, 2, 20, 17,242,133, 65, 16,150,203,229,161,193,193,102, 35, 22, 96, 68, 66, 2,154,152,121,202,109, 29, 55,222, +240, 15, 15, 60,184, 58,212, 29,113, 62,131, 54,198, 93,217, 39,126,135, 52,140, 88, 4, 81,152, 31, 93,253,192, 51, 27,159,156, + 61,247,216,229,231, 95,140, 1, 58,211,105, 56,234,203,136,136, 17,131, 82,169,101,104,104,232,192,192,128,128, 80, 64,204, 90, +249, 88, 16,128, 72, 0,132, 41, 32,146, 48, 39,199, 28,123, 76,232, 34, 0, 0,116,219, 17, 52,227,185,250,199,218, 79,221, 24, +160, 86, 29,251,250, 45,159, 71,194,171,174,255, 88,161, 80,180,165, 22, 9, 48, 50, 50, 1,169, 73, 3,164,114,107, 91,117,172, +182,127,255, 0,176, 70, 1,104, 10, 65, 4, 2, 52,182, 40, 67, 64, 66,100, 36, 68, 9, 16, 41,116, 59,195,153,234, 9, 24, 24, + 1, 89, 45,230,190, 59,139, 60,254,240,234, 13, 79, 60,186,228,220,149,239, 58,249, 20, 4, 20, 68, 68,155,160,236, 78,128, 32, + 82,177, 84, 6,224,253,253, 3,204, 6, 0,180,120,178,155, 45, 8,128, 44,108,139,119,177, 49,139, 72,136, 98,207, 50,201, 60, + 82,215, 65,240,174, 3, 0, 81, 20,125,237,150,207,197, 81,243,234,235, 63, 86, 40,182,216,250, 76,247, 17, 81, 16, 73, 4,144, +130,128, 90, 91,139,195, 35,213,234,216,152,186,129, 15, 82,223, 17,178, 8, 2, 10, 88,232, 12,220,134,107, 9,111,209, 78,205, +253,152,137, 35,214,102, 8, 64, 68, 14, 12,236,191,237,235, 95,158, 53,123,238, 5,151,254, 73, 16,144,111, 52,209,237, 35,138, + 0, 81,169, 92, 22, 78,122,123, 7,140, 73,180, 67, 99, 0, 16, 70, 4, 97,176, 37,145,136, 0, 48,176,171,193,221,206,161,226, +179,206, 66,204, 6, 0, 1,193,110, 19, 51, 32,170, 39, 61,245,248,163, 79, 60,178,250,146, 63,253,179,174,153, 71, 18,189,174, +237, 69, 4, 16,164,160, 92,110,105, 54,227,225,161, 3, 44, 44,169,251,249, 46,196,174, 70,107, 78, 16,219, 13,218,183, 35, 0, +193,241,122,245,229,237, 91, 29, 30,172,189,162, 97, 13, 34,141, 53, 97,254,225,237,183,238,121,237,215,127,113,237,199,202,229, +178,111,194, 37,179, 40, 1,200,231,138, 45, 5, 26, 26,169,140,143,215,192,162, 53,236,176,204, 76,113,224,189, 34,205,108,206, + 63, 25,158,124,236,145, 57,243,230,117,205,156, 21,166,190,204,246, 73, 8,192,130, 38, 73,190,249,149, 47, 52, 27,141, 15,127, +244,239,242,249,124, 26,139, 96, 83, 34, 34, 8, 64,185,181,149, 36,233, 31, 24,140,227,216,103,116, 6,180, 31, 11,204,118,115, + 88,220,251,107, 94,241,171,169,213,198,246,237,217,117,252,137, 39,107, 96, 89, 64, 77,219, 33, 97,107,217,168,217,248,234, 23, +111,204,229,242,215,252,213, 39,114,185,156,166, 73,240,128, 22, 48, 8, 3, 64, 91, 91, 7,176,233,239, 27,136,163,216, 30, 65, + 34,236,156, 5,116,115,210,125, 98,118, 25, 31, 68,195, 13, 94,125,121, 91,179,217, 56,228,176,169,152, 77,147, 90,192,216,243, +155,165,222,104,124,253,150,155,167, 29, 49,227,210, 63,253, 51, 12, 2, 1, 64, 20,177, 21,128,195, 16, 16, 91,219, 90,227,168, +121,224,192,254,180,253, 21, 16, 16, 20,180, 77,190, 43,153, 92,217, 36,146,177,145, 8,111,221,242,220,180,174,110, 16, 97,195, + 62, 26, 29,207, 1, 34, 44, 0,216,104, 54,254,249,159,110,154, 49,243,200,139,222,251, 62, 36, 74,179, 56,128, 88,231, 19, 66, + 42,151,138,205, 70, 52, 56,168, 73, 79,187, 62,240, 61,185,110,145,100,118, 10, 28, 34,170,182, 54, 73,210,219,179,231,136,238, + 89,204,153, 95, 11,136, 72,104,183,204, 48, 32,214, 27,227,223,248,210,231,167,119,117, 95,248,158,203, 0, 80,139, 67,139,177, +128, 77, 75, 1, 5,197,124, 56, 94,111,142,140,140,128,127, 51,125,182,186,159, 67, 30,188,121,188, 85, 88, 0, 64,198,107,213, +250,248,120,123, 71,167,164, 16,137,150, 97, 44, 34, 33, 34, 62,249,248, 58, 17, 96, 54, 27,159,124,172,208,210, 58,117,198,145, +207,108,122,218, 67,160,217, 7, 17,133, 97,192, 12,245,241,154, 59, 91, 50,127,233,127,137, 61,120,252, 70,166,231, 16, 72, 28, + 69, 90,152,167, 9,217,110, 39, 11,115,165, 50,246, 14,195, 27,181, 55,123,231, 44,102,201,146, 37,244,134, 91,243, 31,248,120, +103,117,174,239,196, 5,189,149, 86,122,230,204,153, 43, 86,172,152, 52,169,147,141,217,182,125,251,125,247,221,255,118,182,247, +221,221,221,187,119,239,126, 51, 79,157, 58,117,234, 77, 55,223, 60, 99,198, 12, 79,185,184,182,149, 65,120,195,134, 13,119,252, +240,206,189,123,123,126, 79,167,126,179, 22,122,112,245, 67,168, 25, 15,128, 40, 0, 17,214,110, 14, 8,145,141, 49,243, 23,156, + 49,127,254,130, 36, 73, 70, 71,134,255,230, 99,159, 80, 16,234,237,223,178, 32,160,155,110,254,194,130, 51, 22,176, 97, 0, 17, + 36, 95, 74, 32, 3, 4, 0,204,232, 80, 85,102, 19, 34, 77, 58,100,202,191,220,118,107, 20, 55,239,191,239,254,187,238,190,231, +247,218,178,201,147, 39,159,122,234,169,151,254,209,165,167,156,124,170, 97, 22, 97,192,208,214,197, 19, 78, 0,123,118,138, 71, + 26,236, 89,161,140,186, 97,182,240, 56,136,220,255,192, 3,119,252,240,174, 55,191,101,216,213,213, 85,173, 86,239,188,235,174, + 82,185,156,105, 78, 21, 80, 68,102,241,213,150, 63, 38,153,197,254, 94, 9, 41, 97, 99,220,241, 46, 44, 74,134, 89,118,219,242, +145, 27, 55,110,248, 63,223,186,245, 77,249,208,181,215, 94,183,244,156,115, 80,143,108,180, 53,128, 30,241,130, 66,168, 94, 34, + 0, 2,132,246, 23, 4,192,202,104,248,130,132,132, 25, 1, 72, 80, 40, 16, 97,164,192, 36,201,230,141,235,119,108,223, 26, 53, + 26, 2,114,241,121,203,122,246, 15, 62,251,220,150,223,225, 67, 2, 16, 4,129,216,174, 85, 16,209,176, 48, 51, 32, 18, 35, 35, +219, 30,223,225, 13,128,104, 33,116,209, 94, 11, 21, 3,209,206, 74,187,148, 56,225,141,235,215, 61,187,105, 3, 81,224, 32,120, +140,162,232,208,142,214, 99,231, 30,189,117,199,171,191,109, 65,168,141,164, 45,147, 81,129,116,173,132, 20,240, 5,230,131,136, + 45, 11, 24, 41,152,141, 2, 4, 34, 64,168, 24, 17, 12, 14, 13,220,249,253,239, 8, 11, 81,144,169, 1,108,155,211, 53,237,176, +109, 47,239, 20,225,223, 18,101,202, 57, 8, 16,178, 97,163,221,143,184,222,217, 86, 85,114, 48,219,134,164, 85,172,254,128,136, + 66, 32, 70,158,127,246,153,199, 31, 94,173, 77,106,107,123,219, 9, 39,157,218,209, 57, 9, 64, 70,135,135, 54,109,120, 82,129, +167,227,143,157,243,171,151,182,255,214,176, 71, 68, 0,101, 86,181, 53,211, 18, 17, 37,219,197,248,127, 29,135,132,200,182,111, + 69, 18, 50,156,172,190,255,167,219, 95,122, 17, 0,218, 58, 58, 22,159,187,162,189,163, 67, 29,222,152,164, 88, 44, 94,120,233, +123, 87, 63,240,139, 40,138,186,167, 29,250, 91, 23,132, 64, 0,137, 97,195,140,130,140,108,219, 99, 17,246,100,133,135,247,181, + 57, 23,237,224,212,137, 0, 1,146, 36,185,251,142,239,247,246,236, 5,128,249,103, 45,154,119,236,187,136,236,238, 59,146, 6, + 19,164, 21, 23, 92,252,216,218,213,181,106,213,247,153, 34,242, 6, 22, 74,146, 68,251, 84, 1, 65,176,161,228,155, 12, 73, 73, + 81,133, 65, 80,127,239,123,144, 36, 73,238,248,254,119, 6,250,251, 65,248,189,151, 95,217,222,209,137, 8,204, 76,100, 5, 67, + 6, 12, 33,132,128,136,184,116,249,202,173, 91,158,187,102,246,241,199, 30, 51, 87,132,227,102,115,245,154, 53, 15, 63,178,110, +130, 44,138, 29,119,167, 77,131, 91, 60,107,235, 9, 34,128,170,169,177,171, 1, 77, 18, 8, 34,104, 76,114,231,237,183, 29,216, +223, 95, 40,230,255,244, 3, 31, 42, 20,139,202, 69, 40,114, 69,174,153, 67,219,170, 96, 91, 91,199,105,103, 46,173,215,107,198, + 24, 99,132,194,240,221,203,207, 57, 48,112,224,133, 95,189,228,202, 15,177,161,108,215,227,112, 41, 1,228, 20,129,112,192,143, + 69, 7, 80, 8, 0,200, 24,243,179, 31,221,209,223,219, 83,110,109,189,252,131,215,148,202,101, 34, 2, 37,246,116, 1, 68, 72, + 68, 65, 16, 4, 65, 16,134,147,167, 28, 58, 94,175, 71, 81, 19, 17,131,192, 17,128, 65,254,178,203,254,164,189,189,205, 46, 72, + 50, 30,155, 54,200,138,126, 32,138, 66, 56,234,236,168, 75, 70, 1, 33, 32, 22, 94,247,200, 67, 59, 95,221, 81, 46,183, 94,118, +197, 95,228,115, 5,103, 5, 85,100,232,191,246,135, 92, 46, 95,110,109, 31, 30, 26, 2, 0, 36,139, 43, 16, 5, 68,132, 68,185, + 48,255,183, 31,255,232, 65, 5, 26,106, 76, 42, 10,235,181, 42,232,250, 50,237,253, 45, 69, 44,200,194, 91,158,221,188,121,195, +147,133, 66,254,178, 63,255,139,124,190, 64,132, 78,152,132, 46,235, 16, 2, 6, 20,148, 74,165, 92, 62, 63, 58, 50,194,118,251, +220,186,237,154,213,138,185,191,255,239, 31,213,190, 76, 44,112,230, 92, 85, 15, 40, 64, 16,197, 81,220, 70, 50,162,174, 26,128, + 7,250,251, 31,252,249, 61,249,124,254, 3, 31,250, 72,161, 80, 20, 16, 20, 2, 18, 20,155,190, 28,252, 15,197, 98, 49, 49,102, +172, 50,172,123,109,119, 65, 9, 87, 11, 84, 17, 19, 17, 81,107,107,187,239,237, 17,145, 61, 82,101,219,119,107, 30,135, 17, 59, +100, 26, 65,234,227,227,183,127,231,159, 1,224,253, 31,188,166, 88, 44, 42,134, 41,100, 33, 8, 68, 32,235, 63, 84, 42,183,138, + 64,101,116, 68,129,119,180, 98, 65, 72,151,131,238, 69, 72, 72,129,117,106,187, 33, 54,176, 83, 4, 77,195, 76,151,226, 17, 63, + 99,204,191,124,251,171,204,252,158,247, 93,209,222,214, 78, 68, 40, 40, 36, 36,228, 82, 14, 41,253, 95, 42,149, 9,113,116,116, + 68, 83,173,160,254, 26, 38,210,209, 22,176, 2, 11, 88, 89, 11,185,109,242,173, 56, 40, 35,136,236,154, 79, 84, 14,149,121,237, +170,251,170,149,202,153,139,206,153,222, 53, 19, 17, 5, 16, 72, 8, 72, 41,127,149, 8, 17, 82,177,165, 20, 4, 56, 52, 52,168, +174,137,132, 14,203, 16,143,116, 73,138,123, 90, 16,205, 70,153,207,201, 30,137,210,213,128, 98,184,206,169, 89,100, 95,207,158, +103, 55, 61, 53,229,176,195, 78, 58,237,244,128, 52, 90,196,234, 42, 20,124, 38, 32, 12,242,249, 92, 62,164,193,161, 97, 99,216, +166,119,212, 98, 5, 9, 73, 82, 88, 39,205,188,232, 88,112,210,101, 56,101, 3, 56,182,216,229, 31,113,120,169, 72,179,209,184, +227,123,223, 14,195,240, 61,239,187, 50, 8,115,226,219,125,113,137,140, 4, 0,131, 32, 40,149,138,149,177,154, 73, 18,171,236, + 68,173, 16, 92,210,151, 12,214,228,253, 83,207,105,151, 24,173, 33,245,112, 5, 79,172,103,108,198,108,126,244,131,239,154, 36, +249,227, 15,124,176,144,207,147,171,141,108, 26, 86,131, 11, 17, 81,185, 84,170, 55,226,122,125,220,125,172,160, 63,122, 50,102, +225, 12,228,153,145, 9,128,202, 73, 21,231,100,235, 52, 30,179,116,251, 45,204,219, 94,220,210,219,179,231,140,179,151, 30,122, +216, 84,208,116, 44,174,198, 68, 4,155, 66,161, 92, 46, 27,147,140,140, 12, 75,154,217, 81, 82,250,198,126, 69,177, 21,134,199, +132,209,213, 28, 64,154,123,237,106, 44, 84,105,163, 95,177, 79, 96,110, 52, 27, 63,191,251,142, 98,177,229,148,249,103,162, 10, +119,148, 43, 83,197,175,221, 8,105,105,105, 9, 73,134,135, 71,152, 89, 99, 42,179, 81,146,110,145,213, 19, 88,224, 28,211,213, +160,221, 50, 15,119, 57, 88, 19,213,139,244, 41,134,249,206,219,111, 5,132,247,255,151,171,194, 48, 60, 24, 19,118, 72,113, 16, +134,133,124, 80,169,214,227, 56, 6, 65,165,216, 52, 34, 68, 15,100,207,170, 88,195,243, 4,104, 25,236,202,200, 97,123,182,142, + 6,199,119,136,133,249,100,247,174,157,253,251,122,230, 47, 92, 82,110,109,243, 59,125, 16,183, 13,136,229,214,214, 36,129,177, +177, 74,234, 58,232, 58, 6,176,111,152,113,205, 84,131, 98,255, 19, 81,101,177,161,111,183,108,185,228, 29, 8, 45,224,117,215, +237,183,230, 11,133,211, 22, 44,212,196,245,250,135, 8,180,148, 74,146, 52, 7,135, 70, 82,165, 70,234,244,146,241, 70, 79,121, +121,100,211, 22,167, 32,178,249,233,245, 90, 17,131,101,196,152, 83,236, 17,109,208, 61,188,250, 62, 0,120,239,229, 87,134, 97, +136, 8,242, 6,171,145, 48, 12, 2,228,218,120, 51,137, 99,204, 48, 56,142,106, 67,145, 12,126,119, 16, 9,224, 92,234,213, 87, +118,180,182,182, 2, 8,137,210,134, 14,103,101, 75,111, 0, 51, 84, 70, 71,158,219,180,225,200,163,231, 78,158, 60, 69,220, 25, + 52,129, 87, 20, 33,162, 98,177,104,140,140, 85,199, 64,233, 18,176, 26, 50, 79,175,251,213,128,182,158,218,111,185,210, 13, 16, + 43,163, 35,227, 99,149,195,167,207,112, 44,131,197,204,193, 42,191, 4, 5,128, 57,185,235, 95,191, 27,132,225,185,231, 95, 68, + 68,106, 30,123, 46,102,190, 99,161, 80, 4,137, 71, 71, 71,213, 5, 81,196,135,132,235, 95, 38,110,153,203,131,172,100, 55, 72, +146, 36, 59,182,189,216, 53,235, 40, 45,121, 73,153, 0, 20,171,138,241,177,176,103,247,174,145,161,193, 37,203,207,207,231, 11, +106, 49,141, 98,246,239, 46, 66, 68, 1,113,163,201, 81, 20,217, 74, 69, 99,221,238,147,103,188, 50,120, 57, 90,211,144,128,114, +206, 91,158,125,230,232, 57,243, 16, 9,124, 30, 74,183,214,146, 1,144,196,209,143,127,240,221, 66,161, 56,239,184, 19, 20,219, +112, 93,179,248,101, 1, 98, 75,169,108, 88,198, 42,163,169,230, 10, 56,117,217, 20, 23, 22, 86,210,212,209, 67,162,141, 12,194, +254,190,222,174, 89, 71, 17, 5,222,236,182,252, 64, 47, 27, 6, 17,225, 23,158,219, 44, 34, 23,190,231,178, 32, 12, 88,224, 96, +155,139, 0, 72, 24,230, 36,105,212,106,117, 99,140,139, 20,119,140, 74,202, 99,123,190, 33, 5,236,213,153, 16,146, 56,169,140, +142,228,194, 92,182,245, 35,199, 81, 0,186,254, 62,142,227,181,247,223,219,222,209,113,216,212,105, 40,130, 32, 46, 22,211,200, + 34,196, 66, 33,103, 24,235,227,227,142, 93, 17, 65, 37,113,108,103,146,238,153, 3,210,125, 83,170, 41,106,251, 75, 47, 28, 58, +117, 26, 96, 54,133,171,232,139, 69, 64, 24, 80,241,148,199, 31,121, 8, 16, 47,250,227,203, 49,176,165,130, 76,116, 32, 68,200, + 23, 10, 96,226,202, 88,197,136, 1,208,214, 81, 73, 75,116, 60, 34, 59, 99,176,164, 75, 78,137,212,202,232,200,225,211,142, 0, +204,118,197,105,145,175, 20,151,136, 64,179,217,120,118,211,250,233, 51,186, 90, 91,219, 50,137, 22,197, 45, 75, 80, 16, 3, 2, +137, 12, 68,205, 8, 60,219,193,182,133, 4,229,161,220,230,176,213,102,100,202, 81,196,132,121, 96,127, 95,152,203, 99,166, 40, + 82, 11,146, 58, 32, 91, 13, 30,175, 91,243, 32,179, 44, 63,255, 82,237, 96,192,198, 23,248, 26, 6, 5, 10,197, 2, 34, 87, 70, + 43, 89,114,153,145, 45, 17,100, 63, 94,252,215, 17, 86, 58,134,253, 49,208,179,123,215,148, 67,167, 34,102, 56, 74,103, 57, 74, +153, 89,145, 70,125,252,165, 23,158, 61,114,246,220, 82,185,156, 70,137, 74, 83, 28,185,132, 68, 4, 18, 39, 24,199,145, 26,196, + 38, 58, 65,246, 41,250, 32,106,204,185,143,110, 77, 28, 69,133,124, 1,136, 28,129, 37, 25,122, 88, 43, 70, 22, 4, 17,150, 77, + 79, 61, 41, 34, 11,151, 44,183,197, 50,164,234, 77,187,101, 34, 45, 45, 37, 66, 25, 29, 29, 86,161, 29,170,249,196, 54,222,160, + 0, 36, 59,247,201,150, 87, 98, 21,127,187, 95,251,117,177, 84,202,196,136, 11, 74,235,212,154, 21, 64,162,168,249,204, 83,235, + 14,155, 54,189,181,173, 85,205, 97, 93,129, 83,250,156,136, 8, 76, 61,226, 36, 78,108,209,142,172, 29, 5, 90, 93,174,117, 26, +127, 42, 58,238, 21, 5, 80, 16,235,227,181,201,135, 76, 65,177, 88,207, 4,119,103, 1,128,112,207,174, 93,235, 5, 0,164,119, +223, 94,198,112,210,161,211,159,217,180,233,141, 25, 25,196,124, 62,143,192,181, 90, 93,161,217,140,136, 39,163,205,144, 12,101, +150,249,163,255,123, 96,160,175,173,173, 35,195, 75, 59, 6, 84,157, 76, 53,104,195,195,195, 35, 35, 35,239, 52, 90,232, 63,246, + 33, 34,157,157,157,147, 38, 77, 10, 1, 96,116,116,116,207,158, 61,255,105,148,215, 23,194,147, 38, 77,162,255, 52,196, 31, 24, +157,248,159, 6,250, 3,123,132,255,222, 31, 48,109,218,180,203, 47,191,124,209,162, 69, 65, 16, 76, 64,237, 93,141,109, 76, 34, +204, 81, 51,218,244,204,211,143, 60,186,238,133, 23,182,252,127,110,160,206,206,206, 43, 63,248,193,249,167,207, 63,108,234, 84, + 29, 18, 74,117, 89,105,209, 99, 91, 23, 17, 33, 10, 68, 36,204,229,151, 44, 61,103,241,146,101, 78,191,200, 99, 99,149,158,158, +222, 29, 59,118, 60,181, 97,195,171,175,254,250, 15,219, 64,136,120,214,194,133, 31,185,246,250,174, 25, 51,226, 56, 18,112,147, +165, 10,115,102,160,230,180,138,204, 84, 40, 34, 2, 66,118,190, 66,107, 79, 12,218, 59, 38,181,181,119,206,157, 55,239,162,139, + 46, 84,200,186, 86,171,109,124,122,211,250,245,235,119,190,246, 90,173, 54,254,142, 51, 16, 34,118,118,118,158,120,210,137,243, +230,206,237,234,234,158, 59,111,238,148, 67, 14, 1, 10,130, 32,103, 73, 63, 34, 99, 12, 6, 1, 89, 60, 27, 72,137, 55,215, 27, +104, 35,103,187,127, 0,143, 68,105, 19, 3, 34,164,144,169,173,215,148,204, 36, 8, 2, 45, 90,203,173,109,203,150, 45, 91,186, +116,137,202,253,147, 36,121,104,205,154,123,126,252,211,230, 91, 21, 43,188, 69, 3,117,116,116, 92,114,233, 37,103, 44, 56,227, +144, 41, 83, 38, 79, 62,164, 92, 46,123,229, 98,170,210, 21, 1, 12,188,200, 76,249, 3, 0, 84,165,188, 18, 15, 22, 59, 23,199, +213, 40, 10,203, 96,137,101, 78, 21,173,110, 44, 1,144,156,122,159, 73,231,119,212,241, 8,109, 83,164, 19, 99, 58,199, 30,132, +185, 11, 47,184,240,194,243, 47, 96,225,177,202,216,142, 87, 94,190,231,199, 63,221,219,211,243,246, 26, 8, 23, 47, 94, 92, 42, +149,206,191,224,130,249, 11, 22, 4, 65,160, 67,147,110,193,144,206,180,165,213,185,229,208, 83,224,192, 37, 23, 43, 63,240, 24, +141, 29,151,102, 59,252,120,112,104, 77,148, 36,171, 67, 1,192,235,194, 47,163,173,179, 3, 45,238, 69,156, 36,201,120,109,124, +116,116,168, 50, 50, 92,173, 86,163,102, 51, 8,130, 92, 46,247,244,230, 95,110,219,254,242,192,192,129,223,199, 52,221,221,221, +179,102,205, 10, 69,100,201,210,101,103, 45, 92,228,122, 83,160,208,221,223,144, 98,247,156,106,176, 89, 84,116, 14, 2, 66, 2, + 2, 40,200,100, 73, 39,118,136,169, 71, 78,145, 72, 28,149,100,101,244, 86, 30, 76, 40,108,145,115, 64, 1, 33, 10, 52, 31, 17, +170,177, 20,216, 97, 59,111,131,130, 18, 24,230, 36, 54,195, 67,131,219,182,110,217,185, 99, 91,179,217,180, 60,207,196, 62,169, + 24,226,201,199,205, 9,131, 99, 6,134, 43,155,159,219,242,122,194,251,255, 45,196, 52, 64, 12, 51, 42, 95,230,192,126, 71, 42, + 50,160,157,243, 67,203, 31,144,141, 11, 29, 59,209,249, 90,116, 16,149,183,141,117,192,131,148, 20,152,210,244, 58,237,104,211, +144,117, 70, 66,151,122,148,216,181, 99,152, 18, 53,163, 87, 94,222,254,194,230,141, 35,195,195,150,185, 71,248, 77,232,180,146, + 28,204, 60,185,189,188,114,217,194,231, 94,122,185,175,127,255,239,153,131,208,178,164,152,194,198, 44,198,234,140, 83,192, 21, + 29,217,160,122, 24, 37, 97, 39,124, 67,200, 6,102,214, 40, 46, 6,213, 44, 78, 98,142,150,198,133,236,132,170,229,176, 24, 56, +137,147, 61,187, 94,219,188,113,125,111,207,110, 37,140,193,115, 64, 2,185,124,174, 88, 44,230, 11,133, 48, 12,153, 57,106, 54, + 27,245,241,102, 20,147, 99, 25,116, 35, 78, 60,230,232, 56,142, 7,135,134,223,178,129,148, 81, 82, 36,217,110,186,194, 39, 46, +133,122,217, 5, 32,128,168, 96,201, 77, 23,167,208,231,193,238, 66,158,137, 66, 64,134, 44,191,238, 12,150,101,218, 44,178,166, + 32,137,169, 86,107,207, 63,251,204,179, 79,175,183,100, 18, 90,169, 70, 91, 71,219,172,163,231, 29,113, 68,119, 75,169,133,130, + 64,175, 4,177, 74, 51, 99, 68,140, 73,146,190,190,222, 23,159,127,174,217,108,218,165, 19,156,252,174, 99,214,174,123,234,173, + 26, 8, 83,231, 96, 54, 96, 37,242,142, 95,115,155,107,221,192,207,232, 56,132, 48, 13, 39,182, 4,157,227,190, 88,188,102,197, +126,115,116,248, 91,154,162,116, 50, 69, 7,137, 5,128,141, 25, 30, 30,124,108,237,170, 61,175,237, 20, 55,187, 1, 40, 71,206, +158, 51,239,152, 19, 58, 38, 77,242,156, 88, 22, 81,210, 20, 64, 20, 48, 27, 10,194, 35,102,116, 79,155, 54,125,100,100,104,243, +211, 27,155,141, 6, 2,134,200,199,204,155,179,109,251,203,111, 53,196, 16, 81,192, 36,137,184,179,124, 98,200,184, 84, 97, 69, + 93,233,137,101, 37, 67,142, 64,247,252,108,202,243, 90,122,193,166, 43, 75, 16, 59,205, 26,184, 65, 16, 1, 49,198,244,237,235, + 89,183,118, 85,239,190, 61, 90, 94,139,200,225,211,143, 56,225,228,211, 14,157, 58,205,210, 79,153,131,207, 73,217, 17, 68,116, +240, 80,136, 89, 2, 97,102, 98, 9,194, 67,166, 76, 93,113,254,197, 81,212,220,242,252,179,251,246,238,153,122, 72,199, 54,128, + 82,169, 52,111,222,220,238,174,174, 98,161, 24, 39,209,224,224,208,214,109,219,246,239, 31,248, 29, 6, 74,226, 88, 28, 45,145, + 94,247,225,212, 76, 90, 22,179,203,170,224,179,136,203, 52, 12,158,168,178, 82, 30, 55, 88, 9,246,188,115,179,137,206,164, 46, +116, 5, 4,192,152,164,191,175,119,205,131,247,238,223,183, 79, 47, 78, 9,115,185,227, 78, 56,249,184,227, 79, 44,180, 20, 9, +201,235,115,172,101,156, 40, 14, 2,107, 71,244, 76,142,102,120, 34,150,128,152,153,185, 24, 4, 11,206, 90,220,222,217, 73, 20, +190,255,138,225, 56,142,188, 98, 87,152,153,205,202, 21,203,153,205,154,135, 31,121,244,177, 39,222,216, 64, 58,139, 98, 12,123, + 2,223,139,203,172,147, 75, 74, 22,171, 97, 28,157, 2,170,252,212,191, 5,209, 15, 66, 41,155,162, 71,161, 53,176,120,112,214, + 10, 22, 20,217, 28, 30, 30,122,232,254,159,245,236,222,165,152,110,177,165,229,140,179,151,117,205,156,149,203,229,124, 37,137, +153,180,143,132, 58,153, 1, 46,184,201, 22, 22, 2, 64, 44,172, 7, 31,137, 64, 32,109,237,157,141, 70,189, 94,175, 87, 70,199, + 84, 10,139,104,165, 94, 8,200, 78, 0,147, 36,120,222,187,151,159,187,116,241, 63,127,243, 59,253, 19,189,201,207,255,217,147, +221, 43, 23,180,210,245, 25,198, 75,191,210,177,136,140, 68, 6, 93,198,181,195,103,110,147,245, 89,144,190, 63,184,215, 33,179, + 25, 27, 29,125,252,145,213,219, 94,220,162,250,128,246,246,142, 51, 22, 45,235,154, 57, 43, 12,115,206,139,179, 5, 21,130,136, + 45, 2,192,198,107,154, 0, 29, 26, 31, 0, 34, 97,190,144, 39, 10,107,181,170,234, 23,180,142, 67,177, 51,116,204,132, 8, 12, + 6,149,138, 3, 8, 67,100, 54,129,192, 95, 93,247,151,175,188,250,234, 15,238,248, 81,146, 36,226,199,110, 92,234, 96, 55,204, +226, 34, 76,183, 92,255, 81,137, 30,166, 74, 29,165,158, 82, 10, 56, 99, 23, 79,170,219, 2,216,221,137,100,133, 99, 44,205,102, +227,185, 95,110,122,124,237, 42,253,164, 82,169,124,198,226,101, 51,103, 29,149,203,229, 0,179,169, 70,101, 45,144, 37,237,209, +245,116,158, 7,180,158, 14, 24,134, 97, 46,159, 79, 18, 83, 29,171, 36, 38,177,154, 80,235,202,164,157,161,234,203, 68, 84,193, +104,149,140,226, 52,183,196, 56,251,232,217, 55,124,250,239,254,237,135, 63,170, 84,199, 33, 59,210,234, 15, 96, 13,101, 13,115, +101, 79,172,239,120, 9,179,187, 50,197,158,252,254, 22, 21,155, 84, 84, 90,100,247, 88,231,136,221,237, 42,146,196,201,222,221, +187, 86,253,226,158,202,232, 8, 0,132, 97,120,246,210,119, 31, 53,103,110, 62,159,119,170, 42, 96,176, 92,182,157,189,148, 84, + 44,195,204, 7, 85,132, 4,136,136,133, 98,145,136,162, 40, 26, 29, 29, 53,186,249,118,160,210,138, 39,173,243, 18,130,149,178, +233, 40, 39, 16, 49, 51, 9,130, 78,217, 26, 8,130, 16, 77,130,239,127,255,101, 59,119,190,246,235,215,246,132, 89, 14, 55,229, +175, 29, 45,163, 53,178,165,202,197,170,201, 92,225, 15, 44,108, 11, 90, 61, 76,156,153,156,120,205, 73, 28,109, 1,193, 99, 99, +163, 15,221,119,239, 43, 59,182, 18,145, 8,191,235,228,211, 79,157,127, 86,169, 84,178,210,175,140, 81,245,220, 23,178, 10,114, + 85, 30,138,168, 30, 72,178,183, 70, 21,138,197, 64, 77, 51, 50,154, 36, 49,103,218, 10,255, 52, 87,121, 19, 8,251, 5,185, 10, +140,136,216,102, 57, 36, 66, 97, 4, 10, 1, 13,168, 28, 47,204,136, 68, 68,211,133, 94,233,225,206, 35,100, 45,249, 57,157,166, + 75,143,111,116,122, 25,144,116,250, 61,195,156,248,194, 47,142,162,237, 91,127,181,246,193,159, 71,205, 38, 17, 77,159,209,181, +248,156,243, 58, 39, 77, 86,198,212,110, 11,137,213, 63, 89,102, 29, 84,226, 39, 86,102, 47,104,197,182,168, 4,102,190, 80,200, +133, 20,199,201,232,232,104,212,108, 58,103,119,213, 62,138,115,196,140, 16,194, 73,227,157, 2,178, 19, 49, 0, 0, 10,109, 73, + 68, 65, 84,238, 14,157,237,208,247,116, 72,132, 70,128, 72, 75,211, 48,203,141,219, 92, 12, 30,175, 17, 68, 65, 64, 22, 39,166, +246, 58, 49,203,193,131, 83, 73, 0, 48,167, 68,108,166,173, 48,198,140, 12, 15,221,255,147,187,246,245,236, 65,196, 32, 12,206, + 57,239,226, 35,143, 58, 58, 8,115, 68,100,231,164,201,215,161, 78,154,237, 52, 95, 62,253,145,138, 4, 8, 16,161, 88, 40, 6, + 33, 49,243,232,232, 88,179,209,240,184,146,173, 76, 88, 4,129,132, 24,217,213,107, 30,146, 66,175,176,118,172,180,164,226, 73, + 4, 39, 27, 36,239,128,169, 7, 49, 79,168,105,108,174, 81,138, 27,192,235, 42,237, 91,217,233,123,193, 76,163, 37, 86,156, 96, +139,101, 6, 72,162,104,235,139, 47,172,125,224,222, 56,142,137,104,222,113, 39, 44, 88,184,184, 92,110, 69, 34,127,216,217, 34, + 58,245, 14,219,250,162,235, 71,208,182,106,128,132,185, 92,174, 80, 44, 8,155,122,189, 89,171, 85,245,172, 17,171,155,113,208, +165,187,241,199, 74,137, 93,172,191,174,145, 6, 34, 96,182,122,149, 84,176,142, 2,254, 82, 35,127, 51,131, 71, 33,124, 33,167, + 82, 74,159, 26, 16, 17, 24,210,150,221,159, 14, 62,111,185,139, 7,116,123,140, 72,101,100,120,213,125, 63,221,249,202, 14, 68, + 44,151,203,231,156,127,201,140,174,238, 32, 8,237, 18, 85, 51,231,143, 56,251,117,172, 74,215, 98, 10,226, 52,113, 72, 97, 24, + 22, 11, 69,128, 36,137,147,202, 88, 37,142, 34,197, 23,172,248,223,197,186,189, 4, 79,208,159, 12, 94,183,207, 19, 43,124, 4, +208,107, 40, 39, 42,230,156,184,201,117,231,225, 65, 24,149,102, 83,239, 96, 54, 13, 43, 88,165,130, 98, 72,101, 13, 86, 17,155, +233,223, 53, 91, 37, 73,178,107,231,175, 31,248,217,143,198,199,107, 65, 16,204, 59,238,132, 51, 22, 45, 45,151,202,118, 92, 23, +252, 4, 79, 42,162,244, 83, 42,206,105,220, 55, 4, 66,194, 66,161, 80,200,135, 81, 28, 55, 26, 81,173, 58,166, 58, 90,223,250, +166, 17, 4,254,110, 3,119, 43, 64,122, 61,153,144, 54,225, 2,175, 31,101, 57,104,248,223,181,159, 56, 33, 7,185,105,125,235, +132, 30, 57, 86,165, 39,248,192,211,139, 6,192, 10,137,157, 98,196,190,140, 69, 26,141,250, 99,107, 30,124, 97,243,211,128, 24, +230,242, 43, 46,188,180,123,230,145, 65, 24,162,171, 68, 49,213, 3, 30, 52,138, 1,238,110, 19,209,177, 26, 36,202,233, 35,144, +122, 51, 30, 27,171,196, 81,147,189, 39,100,234, 79,155,174, 60, 92, 7, 8,238,206, 2,116,211, 57,156,118,138,146,213,244,166, + 83, 14,233, 68, 73,186,166, 48,163,111,149, 20,104,113, 86, 87,132, 16, 61,140,110,103, 93,216, 43, 30, 83, 89, 30,179, 17, 30, + 58,112,224,254,159,221,221,183,111, 47, 32,118,205, 58,106,233,185, 43,219, 58,218,137,130, 84, 36,143, 41,162,228, 79,218,131, + 85,221, 42, 87, 37, 42,182,148, 2, 18, 22,169,142, 71,149,202, 40, 27,149,216, 8, 30,132, 50,249, 57, 51,143,194,217,178,128, +179,122, 49,100, 7, 47,100,127,149,185, 38, 77, 82,172, 13, 61,198,145,173,131, 36,157,113,113,250,109,244, 62, 99, 59,118,132, +244, 42,157,212,123, 68,196, 36,201, 43, 47,111,251,197,143,239, 84,202,225,140,197, 75, 79, 58,101, 65, 46,151,211,234, 62, 51, +188, 3, 7, 25, 5,101, 66,157,169,183,242,132, 97, 88, 44, 22, 17,146, 40,230,106,181,218,104, 52,196,222, 36,236,212,128,200, + 25, 57,143, 11,119, 64, 47, 45, 99, 97,132,236,206, 75, 70,121,199, 19,198,172, 4, 60,116,225,199,176, 38, 92, 57, 0, 25,213, +176,157, 7, 5,127,200, 35,248,252,196,174,157,130,204,145, 15, 32, 34,205, 70,125,195,147,235,158,121,234,113,102,110,107,107, + 63,247,130, 75, 14,159,118,132, 3, 40,178, 37,219, 27,133, 62,166, 51, 10,130,136, 68,133, 98, 75, 46, 64,230, 56, 74,100,116, +116, 36,137, 19,239,202, 41,129,164,192,128,237,104,192, 75, 50,197,129,118,104,239, 51,201, 72,209,253,221, 43,153,128,242,165, + 73, 38,143, 34, 58,153,211, 65, 33,150, 94, 43,145,114, 59,105, 47,227, 80, 12,127,251,160, 34, 60,204,213,177,177, 7,238,253, +241,206, 87,182, 3,224, 17,221, 51,151,175,188,164,173,189,221, 87,128,111, 82,117,164, 11, 11,131,176,216,210, 66,146, 48, 75, +181,214, 24,175,213, 84,208,153,230,133, 20,134, 20,204, 64, 79, 58,144, 35,190,101,242,194,175, 9,222, 98,125,137, 37, 13, 45, +191, 72,251,150, 74, 54, 49,143,142, 12,247,245,238,203,212, 65,214, 99,188, 33, 28, 91,229,248, 48,241,106,108, 61, 3, 17, 4, +132, 19,211,215,219,243,139,159,220, 57, 58, 60, 76, 20,156,118,230,162,147, 79, 91, 80, 40, 20,236, 89,237, 94,242, 59, 77,164, + 29, 83, 24,230,139,197, 2, 74, 20, 37, 48, 86, 29,107, 54, 27,108, 88,235, 54,175,117,247, 41, 62,189,143, 67,178, 18,113,223, + 53, 91,112, 33,171, 38,119,108,230, 68, 86, 42,157, 78,176,159,208,108, 52,182,191,244,171,222,125, 61, 97,190,152,194, 29,224, +210,141,173, 20, 61, 72,161, 23,240, 58,195,249, 74,135, 25,216,152,157,191,126,229,190,123,238,140,162, 38, 5,193,210,229,231, +207,158,119,108, 46,151,199, 12, 9,147, 29,253,248, 77,150, 18,145, 32, 8, 90, 90, 74,194, 9, 74, 60,222, 52,213, 74, 37, 73, + 98,119, 57, 13,166, 23, 99,161,184,177, 18, 15, 28,104, 68,161,248, 49, 92, 73,121, 60,201, 10,237, 37,211, 34,189,158, 95,176, +142, 99,246,247,247,189,180,229,249,195, 14,159,122,202,233,243,247,245,246,215,246,236, 13,125,126,102,244, 99,199,142,195,179, + 13,138,250, 42,122, 20, 67,152,227, 40,222,252,244,250, 39, 30,121, 72, 68, 90,219,219,207,187,232,189, 83,167, 78,163, 64, 21, +216, 98, 95,237, 43, 28,129,172,194, 22, 39, 34,182, 65, 24,182,180,180, 16, 24, 3, 92,171,155,177, 74,197, 24,147, 94, 34,102, +155, 63,214,105, 54,197,123, 57,173,135, 57,147, 9,189, 73,188, 10, 51,149, 3, 64,170, 71, 22, 63, 41,152,246, 5, 34,205,122, +253, 87, 91,158, 19, 54,199,157,112, 82, 24, 6,174, 65, 75, 91, 13,189,211,212, 97, 46, 30,227,212,198, 44,179,107,194,220,104, +212, 55, 60,254,232, 47,159, 94, 15, 0, 83, 15,159,126,238,202,139, 59, 39, 79,118, 66, 93, 69,233, 60,113, 33,236,102, 11,210, +142, 49,109, 9, 48,151,203, 21, 91, 74, 73, 60, 46, 16, 86,107, 13,189,181, 18,252,133, 46,233,237,218,152,166, 63,237,157,173, + 27,160,248, 54, 90,252, 45, 91,246,197,233,221, 70,226, 46,254, 98,155,163,125, 35,134, 8,198,152,225,193,193, 87,118,188, 52, +125,198,140,150,150, 86,112,247,239,103, 16, 69,223, 75,129,187,214,197,198, 9,131,207,215,202,148, 25, 51, 94,175,173,254,197, +207, 94,222,246, 34, 0,204, 60,106,246,185,231, 93,212, 82, 42, 89,235,100,207,111, 47, 76, 32, 59,153,236,221,202,250, 14, 81, + 62,159, 15,131, 32,224,168,105,176, 86,171, 52,155, 13,102,255,137,168,172,170, 38, 99,203, 94,235, 12,164, 13, 44, 85, 69,103, +245, 70,110, 6,215, 15, 34,184,157,102,175,127, 6,127,207,159,237,111,226, 40,122,121,199, 75,194,230,232, 57,199, 40,150, 34, + 14,169,200, 30,243,217,161, 10, 1,135, 52, 91,125,183,235,178, 12,243,200,232,240,170,123,239,233,217,179,139,136, 78, 56,101, +254,233,103,158, 93, 40, 20,236,205,224, 14, 77, 68,156,112,132,251,185,119,109,100,245,171, 19, 81,161,216, 18, 18, 50,199,245, +152, 42,149, 74, 28, 71, 98,239, 4, 18,246,119,197, 34, 59, 24,134,221, 12,139,147, 25, 75, 6, 13,158,160,159,206, 64, 64,162, +170,116,192,140,144, 28, 83,124, 79,234,227,181, 87,119,108,237,156, 60,165,164, 87, 93,233,176, 10,103,231,184,210, 94,204, 41, +157,208,147,159,108,169, 42, 1, 97,100,225,145,225,161,251,126,114, 87,127,111, 15, 17,158,116,218,153,167, 46, 56, 43,159,207, + 91, 76, 20,125,197,152, 50,179,214, 88,105, 43, 32,206, 58, 65,177,165, 36, 28, 1, 80, 51,230,106,101, 36, 49,137,176,117,121, +241, 19,101,182,229,212,149,160,139,120,247, 11,100,118,163, 76,217, 86,210,222,177,229,110, 83, 78,107, 96,151, 6,181,157, 53, +108, 14,244,247,233,109, 75, 65, 16,184,139,158,178,173, 72, 22,180,183,209, 40, 86, 8,238,219, 25,151,118, 12,155, 3,251,251, +127,122,215,237,213, 74, 5, 0, 22,157,179,114,222,113,199,135, 97, 14,221, 20,155, 21,227,103,178, 79, 22, 26,245,213, 2, 2, + 80, 16, 20,139, 45, 1,154, 88,164,222, 76, 42,163,163,108, 12,123, 53,132,255, 26,206,214, 22, 0,100, 6,112, 55, 61,104, 47, +202, 62,183,112,170, 20,215,229, 10,163,155, 4,182,167, 61,106, 83,107,183, 42, 73,226,158, 61,187,141, 73,186,143,156,109,163, +195,245, 32, 25,102,216,122, 99, 26, 98,236, 48,123, 76,143, 85, 16, 17,147,112,239,190,158, 7,239,189,187, 86,173,134,249,252, +217, 75,223, 61,123,222,177,158,120, 96,207,135,120,184,195, 90,202,187,149,187, 27, 17, 49, 8,194, 82,185,204,241,184,161,160, +222,136,106,181,154, 18,185,153, 51, 55,237, 9, 17,213,115,208,194,254,118,252, 79,255,114,183,176,101,202, 31,246, 99,220,122, +242,187, 41, 74,182, 21, 11, 10, 50, 48,196,113,180, 99,235,139,157,147, 39,119,116,116, 90, 87,200, 94, 81,151,177, 14,102, 88, + 13,189,159,217,146,196,246, 60, 68,212,155,222,251,251,250,238,251,201, 15,171,149, 10, 18, 45, 92,250,238,217,243,142, 85,198, + 74,145,145,236, 4,153,100, 10,103,111, 44,123,195, 32, 96, 16,134,133, 66, 1,185,153, 48, 54,198,235, 90, 37,123,172, 73,132, +221, 88,200, 65,113,101, 15,123,206,148,133, 46,243, 74,230,123,165, 67,184,110,176,212, 94, 59,152,182, 26, 12,213,234,216,190, + 61,187,166, 78,159,145, 11, 67,255,194, 12, 86,154, 54,119, 62,251,167,167,152, 61,145, 37,237, 65,141, 49, 61,123,119,255,252, +238,127,139,154,205, 48, 12,206,185,224,143,186,103, 29, 21, 6, 65, 58,231,137,169, 40, 3,237,173, 20,246,255,213,179,210,214, + 60, 12, 91, 90, 74, 98,234,145, 9,234,245,250,248,248,184,135,189, 5,217, 14,177, 91,210, 94,128,209, 86, 39,153, 82, 23, 93, +165,227, 8, 55,219,124,122, 62,215, 95, 64,226, 7, 57,217,179, 44, 0, 34, 50, 86, 25,217,183,119,207,161,135, 79, 11, 40,176, +185, 67, 38, 82,217,110,186, 68, 50,135, 99,232,243,158,100,165, 37, 34,204,188,111,239,158, 85,247,254, 56,106, 54,115,249,252, +217,231,172,232,234,158, 21, 6,129,187,209,212,126,127, 15, 45, 74, 6,238, 1, 15, 54, 2, 16, 81, 46,204, 21,242,121, 48, 77, +150, 96,108,108,172,209,104,168,112,196,190, 66,208,247, 79,122,137, 28, 58, 86, 73,192, 93, 74,113,112, 87,145,185,207, 45,123, +250,218, 34, 21,109, 91, 97, 89, 42,100, 99,250,122,123,162,168,121,248,244, 25, 62, 35,102,156,113, 66,227,237, 7, 90,210,102, + 21, 44,238,236, 59, 88, 96,230,129,253,125, 15,252,236,238,218, 88, 5, 9,207, 92,124,238,145, 71,207, 13,195,156,123, 19,116, +168, 37, 99,118,216, 46, 3,137, 91,248, 2, 41, 23,134,249,124,142, 48,105,198, 92,171,141, 55, 26,117,102, 70,127, 82,161, 56, +182, 71,193, 37,155,140,211, 57,101,196,204,224,219,132, 31, 32,189, 19, 22, 51, 19,151,104, 79,118,167,180, 49,198,236,239,221, +199,198,116,118, 78, 78, 69, 41, 19,152,174,223,244,152,168,180, 71, 55, 8,207,194,251,251,123,127,126,247, 29,227,213, 49, 34, + 90,186,226,162, 57,243,142, 85,236,194, 93,227,159, 41,191, 37, 51,202,154,129, 81,244,122,140,124, 46, 87,108,105, 65,137, 19, +166, 90,173,166,176,142, 45,106, 17,252,113,128, 41,194,136,238,162, 70,183, 5,191, 67, 62, 55,113, 70,218,235, 80,108,179,140, +134,147,221, 59, 95, 5,128,182,142, 78, 36,202,150,106, 50, 1,136,193,131,132,202,222, 64,184,100,201,146,172,163,102, 40, 55, + 60, 56,181,255, 97, 78,236,252,158, 47,255,191, 39,161, 67,133,199, 85, 52, 66, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/nudge.png.c b/source/blender/editors/datafiles/nudge.png.c new file mode 100644 index 00000000000..2fa29ad78b4 --- /dev/null +++ b/source/blender/editors/datafiles/nudge.png.c @@ -0,0 +1,569 @@ +/* DataToC output of file <nudge_png> */ + +int datatoc_nudge_png_size= 18012; +char datatoc_nudge_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, + 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, 11,252, 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, + 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7, +116, 73, 77, 69, 7,218, 7, 19, 0, 34, 13, 86,254,139, 21, 0, 0, 32, 0, 73, 68, 65, 84,120,218,236,188,119,148,101, 87,121, + 39,186,211, 73, 55,223, 91,183,110,229,220, 85,213, 57, 7,169,213,234,110,229,156,144, 72, 2, 4, 38, 24,108,108,210,140, 13, + 14,204,216,248,225,240, 30,158,121,126, 12,140, 77, 50, 24, 99, 68, 6, 9,229,208, 45,169,165, 78,234, 92,221,213, 85,213,149, +235,230,116,206, 61,249,156, 29,222, 31, 37, 99,204, 56,224, 49,246, 48,239,241,173, 85,107,213, 93,181,215, 94,223,253,237,111, +127,241,183, 11,238,223,191, 31,252,179,242,211, 44, 34, 63,254,225,183, 30,184,169,167,183,175, 82,175,127,226,171, 63,248,201, + 69, 51,143, 63,245,248,247,254,226,234, 61, 7,229, 72, 58,127,249,165, 14, 37,253,197, 95,123,211,232,200,248,254, 15,255,254, +234, 34,220,215,215,103,207,191,186,109,116,184,115,100,251,247,191,247,229,147,211, 11, 81, 85,206,165,226, 93,131,155,187, 85, +159, 10,184, 84,105, 16, 8,209,221,183,220, 39, 71,146, 95,255,155,207,164, 99,145,237,163,253, 99,189,221,209, 76,255,161, 67, +143, 40,146,180,174, 43, 19,145,215, 19, 33,120,105,225, 44, 33, 82,161,161,191,249,193, 95,211, 87, 46,213,170, 75,105, 45,209, + 82,146,157,170,235, 83,250,177, 55,221,137, 0,132, 2,224, 15,126,246,235, 15,222,114, 19,245, 44, 74,131, 84, 34,203, 66,239, +216,169,115,199, 47, 47, 96,132,190,115,248,101, 4, 0, 0,114,236, 7,159,251,171,158,117,251,142,189,244,131,182,254, 77,145, + 84,238,249, 23,159, 34,204,191,180, 92,218,177,166,127,165,218, 36, 64,136, 53, 91, 14, 22, 46, 30,250,225, 43, 39,222,247,190, +223,241, 90,181, 83,167, 94, 80,100,105, 32,151,233,107, 79,191, 58,179,120,213,250, 33, 60, 48, 48, 48,117,242,217,129, 92,234, +154, 61, 7,245,252,165,106,254,242,240,240, 70,230,183,106, 45,203,176,221, 98,195, 88,211,157, 67, 66,136,223,252,200, 31,124, +246,209,195,140, 6,146, 22, 63,116,110,114,102,230, 60, 16,224,228,244,162, 31,208,166,229, 92,152,207,195,159,234,236,126, 26, +129, 63,250,237,218,109,155,118,116,199,215, 12, 15, 55,155,205,143,255,245, 99, 63,185,104,250,135,143, 79,156,124,178,165, 87, +215,111,220,179, 52,123, 14, 2,208, 63,188,249,170,247,253, 7,198,249,107,139, 46,127,255,251,156,133,197, 43, 39, 13,163,246, +228,201,139,131,185,204,214, 53,253,174, 31, 42,178, 28,143,167, 14,252,198, 31, 3, 0,208,217,163,143,156, 62,242,125, 17,218, +195,235,246, 98,132,246,172, 91,243,210,133, 43, 17, 85, 94,108,133,199, 39, 46, 62,249,137,247, 3, 0,144,130, 65,127,119, 15, + 34,234,123,127,239, 63,191,247,161, 95, 78,118,172,217, 48,216,205, 56,223,183,253,170,138,222,122,244,149, 51,255,237,125,247, +163, 76, 50,253,167,223,124, 52,221, 53,254,231, 31,255, 79, 78,109,209,243,221,115,115,203, 77,203,153,188,116, 50,100,236,154, +141, 35,187,119, 92, 75,122, 55,221,252, 94,159, 70,219, 7,168,103,190,120,228,241,114,211,124,243,189,111, 42,205,159, 62,125, +101,137,115, 49,179, 82,249,222,203, 95, 36,140,211,193, 13,215,254,240,219,159,213,100,114,113,161,248, 43,111,123,103,113,238, +172, 16,160,164,155,153, 88,228,249,243,211, 31,186,239, 70,140,140,165, 11, 19,175, 62,248,150, 15,125,241, 91,223,248,232,175, +255,230, 35,143, 61,252,200,177,115, 99,189,157, 47, 93,152, 89,174, 53,119,142, 14,124,227,197, 87,241,215,254,236,243, 86,249, +138, 89,158,185,227,166,187, 14, 29,122,228,170,117,107,206, 92, 89,234,205,166, 91,174,183,190,191,251,198, 93,219,158, 63, 61, + 1,126, 86,103,135,192,207, 72,254,238,254,170,138,124,236, 75,159,179,189,224, 91,223,251,234, 93,183,221,191, 60,117, 60, 25, +143,182,183,247, 53,106,203,186,237, 2, 1,186,178,105, 32, 69,111,250,232,159,252,195, 27,113,206,103,158,120, 70, 80,255,175, +191,250,103,152, 40,198,242,201,219,246,238, 30, 24,217, 16, 21,182,169,151,124,187,230,135, 52,174, 42, 16, 66,221,180, 95,184, +120,254,211, 31,120,199,114, 33,223, 52,173,207, 63,117,244,199, 55,194,253,253,253,162,112,190,179, 45, 51,152,203,174,204,157, + 25,221,118,107,121,113,226,169,231,159,200, 87, 42,235,215,109,131, 8,203, 72,212,140, 86, 64, 89,119, 71,151,110,232,179, 13, +119, 91,127,110, 98,126,249, 55, 94,119, 67, 46,161,157,154,203,255, 45, 70, 16,222,121,215, 67, 83, 23,143, 19, 73,105, 75,181, + 29,122,250,111,186, 7, 54,184, 65,248,226,249, 73,223,170, 66,193,212, 72,114,176,111,200, 15,105,188,125,112,247,248,208,158, +238,232,214,205, 87,221,186, 99,195,228,114,137,113,241,169, 95,186,235,137,255,227,195,175, 97,116,225,196, 15,251, 58,115, 68, +141,157,186,112,234,209, 99,231, 31, 63,121,225,255,254,228,103,244,229,139, 16, 75,245,194, 84,199,192,198,226,210,101,199, 15, + 48,145,235,166,117,210,128,163,102,163,208, 48, 40,101, 1,101, 64,128, 90,189,114,242,243,127,134, 7, 6, 6, 39,167,166,190, +121,248,196,254,157,219, 55,108,186,122,247,154,206,123,239,124, 80, 8,134,136,242,236,115,223,221,126,245,109, 95,254,250, 23, +183,174, 93, 59,191,178,162, 48, 43,164,244,153, 35,199,226,146, 56, 54, 95, 86,177,200, 38, 98, 99,189,157, 95,120,242,200,206, +129, 12, 1, 0,252,246,123,126,185,115,112,179,224, 92, 0,209, 17,223, 91,153, 57,254,210,233,147,182,227,191,227, 93,191,249, +209,223,251,200, 39, 63,246, 7,159,249,252,167,222,245,166, 95,122,228,137,111,239, 89, 59,212,153, 78,148, 26,186,101, 52, 82, +237, 3,189,217,212,151,159,121,229,142, 93, 27,255,243, 87,127, 0,247,237,219,247,153,247,190, 99,226,204,225,153, 66,181,222, +178,178,137,216, 45,251, 15,182, 13,110,255,253, 63,254,232,251,223,240,250,100,231,216,231,191,242,233,183,221,251,134, 71,158, +126,100, 77, 79, 46,162,202,199, 39,231,243,117,189, 45, 17,107,180,236,133, 74,125,227, 96,247,171,211,139,247,239,219,142, 7, + 6, 6,107,243,231, 71,186,115, 55,220,246,246,171,118, 31,188, 56,113,124,114,118,182, 55, 33, 31,220,127, 75,104, 55,255,235, +151,191,240,250,107,119,186, 86,237,243, 79,190,116, 96,243,168,227,133,231, 23,139,126, 24,182,108,215,116,253, 61,227, 67, 47, + 94,184,178,117,184, 23, 34,128,251,251,251,119,247,165,254,234,185,227,196, 41,202,110,113,124,100,124,108,112,136,250,102, 97, +241,242,127,251,222,147,119,236,218, 24,211,228,201,165, 98, 87, 38, 25, 83,148, 66, 67,119, 60, 31, 2, 80, 55, 29,140,209,254, + 77, 99,211, 43,197, 84, 34,114,110,118,229,103,231, 39,127, 38,210,223,223,255, 51,187,180,255, 6,183,255,199,229, 55, 31,184, +217,178, 90,185, 92, 71,119,123,214,116, 92,199,104, 60,118,110,246,216,197,153,159, 42,148, 60,252,201, 79,140, 15, 14, 60,241, +196, 55,186,218,218, 54,108,220,121,230,204,145, 13,107, 55, 59, 70,201,176,108,221,118,115,137, 24, 36,248,238, 79,124,238,159, +194,232,165, 47,253,229,244, 15,159, 24, 27, 93,251,213,111,124,241,117,175,255,149, 48,244, 37, 57,178,255,230,183, 4, 86,205, +118, 61, 0, 64, 42, 26,161,130, 31,186,184,120,234,175,190,248,145,251,174,255, 7,247,194, 87,158,120, 58, 22,141, 87, 43,203, +207, 60,241,245,119,188,243,163,207, 61,246,165,253, 55, 63, 8, 1,168,205,158,224,156, 65, 40, 66,198,101,130, 57, 23, 3,217, + 68,103, 71,255, 72, 71, 38, 70,216,241,233,165, 31,223, 37,153, 76, 18, 8, 64, 62, 63,123,244,200, 99,111,124,240,131,135, 30, +251,226, 77,119,189,167,190,112,234,252,197,179,151, 87, 74,186,229, 38,163,218,193,205, 99, 94, 16,198, 35,234,124,185,246,244, +195,127,181,161,191,115, 65,247,190,250,225,183, 70, 20,249,254, 63,254,210,223,129, 93,175,228,159,120,242, 91,239,122,215, 71, +143, 62,243,213,253, 55,189,169,177,112,234,220,197,179, 39,166,230,127,245,193,135,124,171, 65, 67,119,185,184, 34, 4,136,198, +146,107, 16,236, 74, 39,251,135,183, 40, 80, 52, 45,167,102, 90,219, 71,122, 79,207,174,188,246,213,124,125,249, 67,239,255,221, +115, 71,190,213,223, 51,200,105, 48, 61,125,174, 80,215,111,191,106,231,215,159,124,178, 88, 41, 37, 53, 18, 81,148,116, 34, 6, +145, 20,137,183,125,255,228,133,173,235, 54,133, 86,249,236,236, 50,198,104,169,166,127,229, 63,190,235, 43,207,190,146, 76, 38, +201,111,188,247,195, 75,231,158, 70, 16,202,209, 84,126,113,162,175,119, 88, 38,248,255,249,238,227,119,239,217,188,126,124, 35, +243,173,229, 98, 33, 17,141, 52,205, 86,103,188,125,109, 91,228,235,143,127, 31,169, 90, 58, 30,181, 61, 63, 34,161, 76,255,150, +215, 12,146,250,118,161, 94,239,104,239,110, 20,103,122,135,182, 94,184, 60,241,153, 71, 95,120,207, 93,183,236,187,229,161,208, +179,213,100, 23, 0, 16, 98, 41, 8, 67,206,195, 68, 44,122,250,210,229,172,140, 18, 17,213,241,131, 84, 84,107,149,174,188,253, +142, 27, 34,170,138,230,166,142,119,164,226, 0,162,104,188,237, 11,223,250,218,127,127,236,197, 79,127,252,247,219,218,114, 78, +179, 80,173,151,137, 18,185, 82,172, 72,106, 60, 30, 79, 57,122, 9, 99,180, 97,160,123,251,248, 24,130,208,245,195, 76, 60,106, + 27,101,219, 15, 30,216,187, 5, 69, 20, 57,150,236,248,225,145, 35, 31,253,243,175,228,107,205, 71,190,244, 77,163, 56, 21,107, +235, 39,146, 58,149,175, 32, 44,215, 91,182, 20, 73,181,229,250,203, 13, 29, 2,209,221,150,140,168,154, 79,105, 72, 89,111, 91, +186,229,122,203,243,115,150,227, 96,141,224,191,126,230,133,186, 97,126,241,191,126, 49, 11,154,169, 84, 54,150, 27,198,146,210, + 92, 58, 95,172, 85,199,214,110,115, 27, 75,129,239,228,186,135,167,102, 46, 2, 0,129, 16,221,237,237, 83,139, 75,134,237,110, + 26,238,157, 89, 41,247,182,165, 95, 93,105,160, 55,222,114,235,151,255,244,207,175,223, 58,238,181,170,219, 15,190, 73, 73,180, + 99,162,212,151,206,127,247,240,139,119,221,251,238,191,250,155, 63,223,125,245,173, 79,159, 56,237,182, 42, 16, 0,221,118, 8, +198,129,107, 56, 94,208,150,136, 17, 4, 79, 76, 45,108, 31, 27,200,197, 85,220, 19,131,187,246, 92,183,110,227, 30, 44,169, 0, +128,208, 53, 79,191,248,173, 23,207,156,127,195,157,247,217,122, 5,241,160,183,127,172, 35,138, 46, 77, 95,138, 71,180,229, 90, + 51, 25,141, 40, 4,207, 20, 42,125,237,153,249, 82,109,165,222,140,170,114,119,207, 32,122,215,187, 63,198,104,200,195,192,172, + 45,189,122,232,107, 95,123,248, 47, 46, 45,149,222,120,247, 27, 35,241,236,163,207, 62,126,245,245, 15,124,249,225, 47,244, 13, +111,190,176, 80, 72, 69, 53,219,245, 17, 2,181,150, 37,132,104,152,246,241,169,249,109, 35,253,223,123,229,108,190, 92, 36,152, + 72, 87, 78,254, 96,114, 97,121,177,210,224,130,111, 30,236,217,119,203, 67,149,249,179,223,125,252,219,111,127,232,131,245,249, +211,221,153,132,221, 92,129, 16,168,178,196,132,128, 16,150,155, 45, 47, 8, 23,202, 13, 1, 64, 34,162,190,243,230,189, 95, 63, + 49,141, 99, 94,254,212,212,124,205,180,134, 58,179,247,222,126,255,216,214,235,191,250,149, 79,121,142,126,219,173,111, 8,221, +214, 23,190,253,205,187,246, 31,152, 95,154,145, 8,110, 79,196, 22,203,245, 76, 44, 58, 87,170,214, 90,182,110,217,155, 6,123, +158, 59,115,121,172,183,195,164,128, 84,117,115,188,175,235,192,190, 27, 82, 61,235,106,243,103,126,247,119,126,237,125,183, 31, +232, 27,219,197,104,112,254,244,225, 92, 42, 14, 32,156,201, 87,214,247,119, 59,126, 16,143,168,110, 16,150,155,166, 23,132,189, +217,180, 31,134, 31,126,221,141, 95,126,230, 21,143, 68,240, 87,254,232, 79, 54,237,184, 33,112,244,223,255, 47,159,172,215, 75, +111,191,237,186,182,174,113,206,194,102,225,210,215, 15,159,184,121,219,122, 25,179,195,231,166,215,245,119, 26,182,235,133, 84, +183,157,138, 97, 14,230, 50,170, 44,133,140,127,237,249, 19,215,111, 29, 47,152, 62, 41,207,157,254,220,163,207, 18,130,223,124, +112, 87, 54,221, 38, 41,113,175, 85, 9, 28,253,229,139, 51,157,233,132, 34, 19,199,245,170,134,233, 5, 97,195,114,108,215, 91, +172,212, 1, 0, 23,230, 11,111,189,126,247,159,124,243,169,157,227,131, 83, 43,101,195,161,224,231, 42,174,245,245,245, 33,240, +243, 36, 16,194,159, 47,133,254,209, 48,251,211, 72, 60, 26,237,200,102, 60,223,175, 53, 13,207,247,255, 61, 20, 74,197,163,227, +189,221,123, 55,173,223, 58, 58,176, 60, 63, 93, 54,204,145,174,206,241,241,141, 90, 36, 90, 89,156,172,234, 58, 7, 80,194, 88, + 34, 24, 33, 8, 0,144, 16,146, 84,173,166, 27, 61,233,196,167, 31,127,229,185,179,147,255, 90,133,246,110,218,240,217,143,255, +158, 42,203, 0, 34, 38,248,228,233,231,143,156, 57,221,169,134,235,199, 54,111,223,178,239,242,153,167,106,186,193,237,122,170, +123, 40, 22, 73,140, 64,232,181, 42,158, 89, 11, 66,159,113, 46,132, 16, 2,248, 97,232,121,254,229, 66,237,147,191,252,208,199, +133, 36, 67,254,171,255,229, 51,103,175, 44,254, 11,204,104,255,254,253,175,188,124,100,250,177,167,152, 0, 0, 8, 30,250,165, +106,233,240,179,223, 14, 66,118,215, 77,119,100,122,215, 45, 79, 60, 63, 53, 55,215,209,150, 94,191,231, 46, 8,145,224,212,110, +228,125,179,230,219, 77, 63,240,130,144, 50,193,129, 16,171,185,145, 16, 64, 8, 1, 17,172,232,102, 58,215, 23,248,238,150, 77, +187,207,157,124,246,242, 74,241,107, 47,158, 93,172, 52,254,217,228, 17,238,219,183,239, 47,127,235,119, 5, 0, 60,244,107,245, +210, 51, 79,125, 43,162, 41,119,223,243, 78,162,198,102, 78, 62,178, 84,170,140,141,140,245,174,189, 6, 64,104, 22,103,170,249, +201,134,105, 25,182,235,248, 1,227, 66, 38, 56, 19,143,102, 98,209, 90,203, 84, 37, 41,162,202, 16, 66,198,185,235,135, 0, 0, +130, 81,153, 70,218, 53,220,219,209,121,228,213, 99,142,231,185, 1,189, 97,219,134, 88, 42,247,240, 51,207,127,250,209,195,255, +160, 66, 4, 0,192, 67,207,104, 53,159,124,242, 97, 32,224,253,247, 61,164, 37,218,151, 47, 60,187,144,207,119,182,103,111,184, +235,221,212,119,234,243,167,138,133,249, 82,179, 85,105,182,202,122,171,105, 57,189,109,169,173,107,250,101, 73,210, 77,235,114, +179,133, 16, 94,215,151, 56,117,101,105,219, 72, 95, 68, 83, 35,178, 84,183,156, 83, 51, 75,227,189,185,190, 53, 59, 95, 58,243, +234,174,177,129,199, 79, 92,112,131, 48, 95,173,105,134,177,101,160,227, 77,215,110, 63,116, 97,166,172,155, 63,153,241,245,247, + 15,196,173,197,103, 94, 60,116,243,213, 87, 95,115,227, 27,205,242,236,196,233,231, 28,215,217,180,237, 96, 91,207,186, 86,105, +186, 48,115, 98, 33,191, 60,181, 82,158, 43, 85,239,186,238,134,157, 27, 55,247, 38, 72, 44,162, 6,148,105,146,212,219,158,109, + 79,197,251, 58,115,150,235, 14,118,100, 95,186, 48,179,118,120, 68,139,103,163,138,148,212,200,153,197,210,145, 51,103,223,118, +223,155, 31, 59,118,124,251, 96,103,169,217,210, 29, 87,149,164,134,233,184,126, 16,137, 37,100,140,220, 32, 8, 40,251, 81,230, +136, 7, 6, 6, 7,163,240,237, 15,125, 80,139, 36,102,207, 60,185, 92, 88,206, 37,147, 3, 99,187, 89,232, 54,151,207,231, 11, + 75,147,203,165,206,246,220,190,189, 55,117, 68,196,209,243,231,159,120,229,216,217,249,149, 84, 44,210,221,150,210, 20, 89, 0, +161,169,145,114,189,214,217,209, 11, 68,216,178,157,116, 60, 18, 75,247, 64,132, 17,247, 10,117,253,234,209, 62,195,118,214,247, +245, 44, 23, 86,178,169,120,189,101,123, 97, 24,132,204,114,253, 66,165,250,241, 7,111,255,200, 59,127,117, 93, 6, 62,121,250, +242,107, 10,245,247,247,253,230,187,126,189,190,120,110,230,242,171, 1,101,189,185,246, 88,166,199, 51, 10,205,234,114,205, 48, +135,215,108,234,239,232, 40,151, 11,143,191,248,226, 19, 39, 47,204, 20,202,239,184,233,154,215,221,241,230,177,241, 45,241,120, + 74,139,165,180, 72, 66, 82, 98,181,122, 89, 38, 88, 34, 36, 12, 41, 23,188,173, 99,128,135,190,103,213, 33,224,213, 16,125,237, +169,231,239,187,229,174, 67,211,115,221, 17, 34, 0, 48,108, 47,160,204,241,125, 8,192,114,181,177, 99,195,198,182, 88,244,200, +204, 98, 67,215,147,201, 36, 1, 0,174, 92,124,174,212,208, 53, 89,206, 36, 98, 16, 97, 79,207, 43,241, 92, 46,217, 21,204, 95, +120,242,240,179,147,203,197,217, 98, 85, 0,240,169, 15,188,191,103,108,183,107,148, 2, 91, 23, 62, 44, 45, 77,196, 19,217,120, + 91, 47, 0, 80,183,221,100,130,105, 90, 36,164, 52,142, 99, 8,162,208, 51,109, 63,148, 8,169,186,114, 91, 76, 97,190,185,187, +175,189, 92, 46, 40, 68, 2, 0,184,126,192, 24, 79,198,180,206,116, 66, 47, 94,246,252, 96,207,248,208, 95,254,250, 91, 30, 62, +114,138, 0, 8,116,211, 76,199, 34,209,104, 92,141,102, 33, 66,115,115, 23, 79, 30, 59, 63, 91,172, 20,155,173,154, 97,255,218, +189, 55,125,226,183,254, 36,240,204,250,220, 73,163,112,153, 40, 49, 73,141, 7,174, 81,110, 26,138, 26,195,146,194, 89, 56, 83, +168,172, 31, 93,171,198, 50,249,250,233, 53,107, 54, 8, 1, 26,245,162,227, 5, 16,161,249,133,197,209,238, 92,169,180,210,145, +201,190, 58,113,169, 43, 19,103,140,121, 97, 8, 32,232, 72, 37,134, 58,219, 60,207,189,180, 84, 90,206,231,213, 68,103, 38,153, + 32, 0, 0, 85,150, 45,215, 63, 54, 57,119,118,110,165,106, 88,182,231,165,162,218,239,188,235,237,107, 54, 95,103, 84,230,243, +211,199,244,252, 37, 53,222,158, 29,218, 9, 17,226, 92,132,142,145,159,191, 48, 91,168,109,223,117, 35, 38,202,197,179, 71,162, +138, 76, 0, 15,104,216,114,188, 68,186,211,110,230,203,186,169,201,178,224,162, 94, 92,222,213,181, 54, 95, 42,172, 31, 25, 91, +210,173,100, 84, 13, 25,103, 92,196, 53,173, 63,151, 73, 69,163,249,154,113,116,114, 46, 78, 96,232,181, 46,204, 45, 18, 8,225, + 31,126,227, 9,207, 15,118,142,141,124,236,189,239,239, 26,220, 88, 93,158,188,116,238, 69,238,181,236,250,114, 36,158, 29,219, +117, 15,132, 16, 64, 8,132, 96,161,111, 85,166, 39, 38,207,158,155, 91,190,255,134, 27,181,120,182,190, 50,249,216,137,179, 31, +120,240,173,146, 18,121,236,233,239, 31,216,182, 25, 66,124,249,202, 37, 63, 8,219, 19,177,124, 93, 39, 8,200,132, 52, 91, 6, + 11,157,134,233, 58,158,207,133,208,100,169,175, 61,149,137, 71,117,203, 57,122,121,182, 97,218,111,189, 97,207,169,115,167,154, + 46, 37,130,243, 79,125,232,131, 47, 30,125,161,101,219,161,211, 12,156, 86,166,107,100, 95,215,168, 0, 2, 10, 46,128,128, 0, +114,198,188, 86,181, 52,119,106,102, 57,191, 80,174, 43, 18,121,247, 91,222,171, 37,218,207,190,242,189,111, 29, 62,246,145,135, + 30,210,146, 29, 19,103, 14, 83,206,251, 71,182, 45, 76,159,200,215,140,206, 76, 66, 83,164,186,105,199, 53, 5, 99,100,153,190, +107, 27,182,169,187, 65, 90,147,165,100, 68,107,139,199,116,211, 57, 49,179,176, 80,174,109, 29,233,147, 9,254,204,163,135,111, +221,127, 13, 1, 0,116, 12,111,187,171, 99,152,115, 38, 41, 17, 8, 32,167, 33, 0, 64, 8, 17,122, 86,171,124, 37,191, 60,179, + 84,109, 54, 76,155, 50, 30,211,212, 7,110,185,173,109,112,155, 85, 95,254,196,255,249,219,107,251, 58,254,224, 99,159,228,140, +206,156,126,250,229, 11, 23,223,253,134,183,185,102,229,232,197,169,100, 52,146,138, 70,132, 16,134,237,166, 98, 81, 4,145,237, + 5, 13,203, 25,238,204, 81,198,219,227,209,152,170,228,235,250,197,197,124,185,105,118,183,165,214,246,118,126,251,165, 83,183, +237, 88, 31,141, 37, 8, 0,128,250,142,172,197, 25, 13,252, 86,213,170, 45,214,106,249,170,222,170, 25, 86,211,114,252, 48,148, + 8, 73,199, 34,187,215,174, 89,179,229, 6, 37,150,182,170,243,127,242,167,191,155,142,105,191,254,214,135, 82,157, 99,161,103, + 94, 58,245,212, 83,167, 38,222,113,231,237, 2,136,243, 19,167,203, 77,115,164,171, 61, 17, 81,253,144,250, 33, 77,104, 42, 66, +160,229,184, 85,221,204, 38, 99,148,178,154, 97,205,151,106,197,134, 97, 58, 94, 54, 25,223, 58,210,251,242,165, 89,198,193, 45, +187,183,126,244,235,207, 16, 0,225,212,201, 31, 46, 87,107, 13,211,105, 57,158,227,249,148,113,140, 81, 50,170,245,182,167,199, +250,122,122,198,175, 81,162,105, 26,216,103, 95,121,244, 27,135,143,239, 93, 63,252,142, 59,111, 75,245,172, 7, 16,154,181,133, + 51,167, 95, 56, 50, 49,251,198,131,187,181,120,123,101,249,226,201,153,133,246, 84, 44,174, 41, 16,130,128, 50, 8,128, 44, 17, + 33, 64,195,116,138, 77,195, 15, 67,203,245, 77,199, 51, 93, 47,160,180, 35,157,216, 56,216,115,118,118,185, 97,218, 31,121,221, + 77,191,241, 23,223, 72,229, 58, 9, 4,240,145, 99,103, 41,101, 4,163,100, 68, 27,236,108, 27,234,204, 13, 14,111,138,117,172, +193,146, 66, 61,115,234,244, 51,223,121,241,132, 34,227,235, 55,143,255,198, 91, 30,136,182, 13, 34, 73,166,158,101,148,103,142, +158,159,184,184, 84,184,115,247,166, 76,174,207, 53,138, 51, 43,165,169,229,210, 59,110,218,139, 17,246, 67, 22, 82, 26, 85,101, +199,243, 41, 99, 65, 72,139,141, 86, 64,169,229,250, 94, 16, 74, 4,247,182,167, 7,114,109, 39,166, 22, 34,138,244,161,251,110, +252,240,231,190,181,105,176,135,171, 26, 1, 64,108, 25,234, 25,238,238,232, 26,218, 22,205,246, 98, 44,115,206,172,202,236,115, + 79,124,229,153, 83,151,100, 9, 31,220, 60,246,208, 77, 87,199, 51,189, 82, 36,133, 16,230, 52,240,204,106, 57, 63,125,228,226, +108,190,166, 95,191,117,188, 51,147,161,158, 85,175, 87,102, 11, 85,140, 80, 50,170, 9, 33, 44,215, 11, 66, 26,215,180,211,115, +249, 92, 58,209,145, 78, 20,234,186, 42, 75,132,224,222, 68,180,171, 45,233,250,225, 15,143,159,191,123,207,230,181,253, 93,255, +225,243,223,222, 61, 62,136, 32, 88, 48, 45,184,111,223,190,175,252,206,127, 10,125, 71, 47,205,156, 57,115,236,217,179,151, 27, +150,179,174,175,107,247,248, 64,111, 54, 19,137,103,137, 26, 67,136, 8, 33, 4, 11, 25,243,125,187,185, 82,174, 30,185,116,165, +105, 57,123,215,141,172,233,105,215, 36,137, 11, 49, 95,170, 61,121,234, 82, 79, 91,242,218,141,163,148,241,186,105, 11, 33,116, +203,157, 43, 85, 49, 70,130, 11,219, 11, 48, 70, 9, 77,173,155,246,114,181,177,101,184,247, 45,183,220,244,190, 63,253,239,227, +189, 29,233, 88,164,218, 50, 21, 34, 45,152, 20, 94,123,237,181,221, 42,208, 45, 71, 8,144,142, 71,218,147, 49, 85,150, 36,140, + 49, 66, 24, 65,136, 32,132, 16, 8, 32,132, 16, 66, 80,206, 77,215, 91,169,234,110, 16,116,166,147,109,137,168, 34, 73, 16, 0, + 46, 68,173,101, 93, 41, 84,134, 58,218, 18, 81,141, 49,238, 7,212, 9,130,128, 50, 63,164,140,115,130, 80, 68,149, 37,140,163, +170,162, 72,100, 58, 95, 94,170, 52, 18, 17,173, 35, 29,135, 0, 58, 65, 96,187,190, 19,132, 72,214,126,206,250,141,171,181,217, +207,143, 50,251,247,239, 71, 16,194,159, 43,128,126,238, 10,197, 95, 40,244,191,157, 66,255,147,181, 61, 66,168,163, 45, 19,213, + 84,211,118, 42,141,166, 16,226,127,129, 66,191,116,243, 53,217,152, 26, 4, 62,163, 44, 26, 81,179,185,238,184, 42, 1,192, 3, +202, 77,215,119,109, 51, 34,145,186, 19,252,233,119,158,254, 87,117,100,250,251,251,151,150,150,254,193,191,141,116,119,174, 27, +232, 57,176,125,115,123, 84, 58,115,241, 98, 84, 85,214,142,172,233, 31, 26,243,244,242,202,202,130, 19, 80,140,144, 44, 17,130, +208,234,144, 65, 85, 36,135, 33, 30,122, 4, 75,239,251,236,195, 94, 16,254, 79,248,161,159, 84, 8, 66,120,235,213,187,255,175, + 15,126, 32,240, 28, 73,139, 79, 77, 28,123,249,204,233,120, 68,185,110,239,117, 74,162,189, 54,119,186, 80,171, 69, 20,185,167, +179, 43, 18,207,122,102,205,117, 77, 47, 8,253,144, 58,126,192, 1, 72,104, 74, 66, 83,141, 64,116,165, 19,255,241,139,223, 57, + 57, 53,255, 47, 85,232,239, 29,217,215,255,240,147,219, 55,110,102,148, 34,140, 77, 55,120,252,145,175, 52, 77,231,134, 61,187, +251,198,118,183,202,211, 19, 39,159, 81, 37,188,109,219, 53, 88, 82, 17,198,161,103, 33,140, 9,198,138, 4,100, 66, 98,170,194, + 4,215, 45,247,236, 92,254,134, 29, 91, 45,138, 63,247, 91, 31,125,250,133,167, 63,250,151,223,253, 23,233,132,147,201,164, 97, + 24,183,238,189,250,169,207,125,169, 51,215,137, 16, 22, 0, 44, 94, 57,247,216, 83,223,141,200,210, 3,247,190, 53,215, 59, 62, +115,250,169,217,197,185,193,222,254,177,173, 55,202,145, 4, 66,200,170,206,155,245, 37,219,177,221, 32, 12, 41, 11, 25,163,156, + 11, 14, 20, 73,234, 72,197, 95,188, 56,189, 97,116,124,126,101,225,154, 61, 7, 55,117, 72,133,134, 81,106,154, 63,141, 54, 3, + 3, 3, 56,158, 72,124,242, 87,222,251,193,183,191, 71, 8, 1,132, 96,140, 77,158,121,238,208,177, 87,214,246,117,221,126,223, + 47, 3, 32, 94,125,241, 59, 45,219,217,177, 99,127,186,115, 77, 36,209,230, 91,186,171,151,104, 96,115, 22,114,206,129, 0, 0, + 10, 4, 17,130, 16, 64, 40,128, 64, 16,118,167, 19, 63, 60,113,250,182,107,111, 40,149,151,134,122,250, 24,243, 71, 59, 82,103, +231, 11, 63,149, 66,191,243,190,247,221,117,221,205, 16, 64, 22, 58,182,239, 79, 28,127,236,228,197, 75,123, 55,174,187,234,198, + 7,237,198,202,169,163,143,115, 33,174, 62,112,191,146,200, 74,178,106, 86,230,173,234,156,103,213, 24, 13, 48, 66, 24, 33,159, + 82,198, 56, 66, 16, 33,136, 33, 4, 0,112, 1, 16,134, 93,137,216,197, 98,133, 7,110,103,174, 59,180, 42, 16,192,117, 61,185, +249,170,225,250,193, 63,173, 16,145,101, 21, 2, 16, 56,134, 29,210,133,137, 23,206,205,204,238,223,190,109,253, 85,119,183, 10, + 83,231, 78,191,128, 17,220,117,240,141,152,200,161,107,214,150,206, 85,107, 37,221,118, 77,199, 11, 40,133, 16,198, 53, 53,155, +140, 97,140,116,219, 77, 70, 53,153, 96, 4, 1, 23,212,241,130,152,166,158,157,156,189,254,254,183, 28,122,229,185,205,253,189, +199,175, 20,210, 81,245,147,111,185,117,243,186, 77,181,122,233, 61,159,254, 90,185, 97,252, 99,126, 72, 4,158, 25,114,176, 50, +249,202,201,139,147,251, 54,111, 88,191,231,174, 86,233,202,196,185,151, 48, 70, 59,174,125, 29,150, 20, 79, 47, 87, 22, 78,151, +234,141,170, 97,214, 12,203,176, 61, 55, 8, 1, 16,154, 34,199, 84,121,164, 59,151,141, 71,139,205, 86,111,123, 90, 38, 24, 66, +232, 7, 97,177,174,239, 30,237,155, 93,156,209,180,184, 68, 72, 86, 35, 30, 7,166,235, 89, 70, 37,166, 42,239,190, 97,207,167, +126,112,200,255,135,252, 2, 18, 52, 4,144,228,167,143, 29, 57,123,118,215,248,200,250,171,238,177,170, 11,211, 23,142,112, 1, + 54,239,188,153,200, 17,183, 81, 40,207,159, 44,212,234,133,134,145,175,233, 75,213,166,233,122,219, 71,251,111,220,190,254,154, +245,195,185,100,194,114,253,154,233, 68, 21,217,176, 29,140,145, 42, 75,137,168,102,121, 1, 68,240,225,231, 94,188,122,203,142, +211, 87,230, 55, 12,245, 94,154, 95,145, 8, 46, 55,154,165, 90, 45,161,201,155,122,115,255, 8,101, 2,128,234,202,229, 39, 95, +121,101,235,112,255,182,253,175,119, 91,149,185, 75, 47,187, 65,176,118,124,179,150,204,186,122,177,190,116,174,210, 52,106,134, + 89,106, 24,134,237,188,245,142, 59,114,237,221,190, 99,112,234,115, 78,123,218, 29,195, 50, 13,219,201,196,163, 71, 39,231,186, +210, 41, 69, 75, 96,226, 12,119,102,127,112,244,252,166,238,172,128,168,233,120, 35,237,137,181,125,157, 11,165,122, 50,170, 57, +126,232,248, 65, 42,149,138,170, 85,219,251, 73,147,194, 7,182,109, 62,122,244, 80,127, 46,115,227,237, 15, 81,223, 93,186,116, +184,209,178,122, 59, 58,115, 67,219,125,171,161, 23, 46, 85,155,205,138,222,154, 47,213,251, 59,178,111,126,221,219, 60, 61, 63, +115,101, 34, 95,204, 27,173,166, 4, 25, 70, 0, 33,168, 41,178, 23,132,140,115, 85,150, 18,169, 14, 72,100,196, 3,211,245,182, + 12,245, 46,234,206,250,190, 30,219,210, 9, 70,203,181,102, 34,162,113, 33, 12,219,169, 54,154, 7,182,172,203,215,117,203,245, +255,222, 45, 75, 68, 72, 71, 76,190,255,158,183, 33, 34,151,166,143,148, 26,205, 84, 84,235, 94,179,147, 83,223, 44, 95,169, 55, +106,165,102,107,182, 84,187, 99,223,190,117,235,182, 77,156,123,225,204,149,249,201,229,178,238,122, 50,193, 8,193,168, 34,187, + 65, 16,141,196,161, 96,201,104,116,169, 92,235,237, 25,192, 88, 18, 44, 64,128,122, 76, 28,191, 52,189,127,231,213, 39, 46, 78, +180,199, 34, 45,199, 93,173, 66, 45,215,111, 57,222, 64, 71,219,111,191,245, 13,215,142,119,253,240,228,165,213,240, 60, 48, 48, +128, 16,130,247, 92,127,163, 18, 75, 55,150,206, 21,107, 53,153,144,142,174, 97,193,153, 93, 95, 54,140, 90,213,176, 12,219,121, +203,221, 15,196, 99,241,147, 39, 15,159,156, 90, 60, 63,183,130, 16,220, 60,208, 61,210,149,205,196,162, 16, 65,130,137,227, 58, +178, 68, 18,137,100,205,180, 33,194, 88, 82, 48,145,227,154, 54,103, 50,221,178,177,164, 22,124, 44, 17,156,142, 71,188, 32, 92, +197,146, 96,124,105,177, 16, 73,230, 70,215,108,220, 56, 50,240,119, 54,180,113,104, 32, 55,184,213,172,204, 23,139, 11, 66,136, +246, 84,146, 40, 49,175, 85,182,244, 98,195,180,101, 66,110,189,241,222, 86,101,246,204,212,212,249,249,252, 98,165,177,121,168, +231,142,221, 91,163,201,118, 8, 4,103,129, 96,161, 26, 81,150,242, 11,241,142, 78, 34,105, 33,101, 16, 66,136, 8, 0, 0, 99, +164, 51,220,166, 32,192,130,181,109, 90, 64,105, 84, 85, 12,219,245,130,112,213,117, 45,149, 27,190,221,136,166,186,118,141, 15, +157,155,121, 45,234,145,100,110,208,183, 27,229,165,139,174, 31,166,162, 17, 45,214, 22,184,134,219,170, 52, 45, 55,155,206,180, +247,140,151, 23,206,158,157, 93, 60, 63,151, 95,172, 54,118,141, 14,188,249,182, 59,162,217,129,208,179, 66,215,192, 92, 19, 60, + 20, 0,218, 94,136,176,140, 37, 25, 10, 0, 32,130, 8, 9, 78,185, 16, 65,171, 49,146,203, 52,235,133,117,189, 61,167, 47, 79, + 70, 85, 89,194, 56,160, 44,228, 12, 1, 24,215,148, 90,181,208,147,232,232, 80,209,143, 93,123, 70, 27, 43, 19,186,101,171,178, + 20,143,197, 4,167,190, 89,245, 2,191,175,111, 52,211,222, 55,123,249,228,209,201, 43, 39,166, 22,166,243,229, 61, 99, 3,239, +124,243, 47,101, 6,183, 65, 68, 2,215,240,173, 6, 34, 50,146, 34, 68, 82,108,207, 23, 0, 64, 36, 65, 4, 16,194, 0, 64, 26, +250,156,113,230,218,201,168,118,105,118, 54,158,238,104,134, 16, 65, 68, 8, 9, 41, 99, 76, 64, 8,147, 81,173,214,172, 83,223, +138,170,210,103,223,251,186,119,222,188, 87, 0,128,124,171, 94,111,212, 32,130,241,136,138, 16, 14, 61, 19, 73,114,231,192,230, + 48,112,206,156, 63,241,194,133,233,227,151, 23,166,242,229, 91,118,110,124,239,187, 62,162,165,186, 91,197, 25,175, 85,229,161, + 95,174, 20, 32, 34, 88,146, 57, 99,126, 24, 0,193, 1, 68, 64, 0,132,136, 16,220, 15, 60, 46, 4, 15,125,130,209,196,220, 2, + 38,170,225, 6, 66, 8, 12, 33,227,156, 49, 6, 17, 76, 69, 53,132,144,111,214, 60, 63,236, 72,167, 94,127,205, 86, 33, 4,113, +109, 35,136, 68,162,138,162,200, 18,132, 68, 75,182, 35, 73, 93,153, 63,119,106,122,113,186, 80, 89, 40,215,155,166,253,177, 55, +221,121,237,205,111,243,172,134, 85,152,146, 35,105,136,144,224,172,222,178,135, 17,130,136,184,142, 73,185, 96, 52,100,212, 71, + 8, 1,132,121,224,120, 65,200,185, 16,140,114,206, 11,181, 6,128,130,200, 50,227, 28, 66,192, 56,167, 92, 16,132, 50,241,168, + 76,136,107,213,171,134, 25,112,212,215, 53, 6,192, 5, 18, 50,166, 74,114, 76, 83,101, 45, 35,107, 73,203, 40,189,122,105,114, + 98,161,176, 82,107,150,155,173,182, 68,228,107,127,244,199,233,238,177,210,228, 97, 76, 20, 53,145, 69, 68,225,140,249,110,203, +246,124,132, 37, 8,209,114,113, 69,147, 36,193,169, 99,183, 52, 89, 66, 8,133,142,238, 5, 20, 33, 8, 32, 98, 0,184,126, 32, + 56,143,104,145,144,185, 92, 8,202, 57, 19, 76, 37, 82, 38, 30,149, 8, 54,108,183,172,155, 45,207, 67,152,172, 78, 72, 80, 60, +162,170,209, 52,103,225,153,179, 71, 95,185, 60,183, 82,211, 27,166,237, 5,225, 7, 30,184,235,166,219,223,106,233,229,217,227, +223, 76,119,172, 81, 98,109,136,200, 0, 0, 26,120,245,102, 29, 35,184,250,241,202, 74,126,176,179, 3, 17,165, 82,175,167, 19, +113, 0,161,221,106,120, 33,141, 42,114, 64,169, 16, 64, 0,193, 89,152,136, 70,124,195,228,140,115,206,129,128, 81, 85, 73, 69, + 53, 4, 97,177,217,106, 88, 14, 11, 2,223,105, 1, 0, 8, 4,192,241,131, 43,133,203, 39,167, 23,230, 75, 53,195,241,130,144, +222,182,107,211,187,222,241, 97, 36,201, 83,199,191, 31,139, 68,115,131, 59,136, 22, 67, 8, 67,128, 24, 13,124,179,182, 88,169, +119,183,181, 33,132, 57, 11, 75,205,214,238, 13,235,212, 88,118, 97,226,210,248,208, 16, 16, 64,183, 90,140, 49,130,145,227,249, + 2, 0,140, 16,103,129, 36,168,233, 7, 84, 8, 38,196, 42, 10, 81, 77, 9, 40, 91,174, 53, 29, 63, 76,197, 35,133,252, 44, 4, +144,204, 20, 42, 51, 87,102, 42,186,105,185,126, 64,233, 27, 14,236,190,239,117,239,210,162,201, 43,167,159,246,237, 70,247,240, + 86, 53,158, 69, 68,134, 16, 1, 8, 5,167,161,103,230,243, 87, 10,117,227,234, 29,123, 33,150,234, 43,147,148,241,246,142,126, + 34,199,138, 13,253,224,213,125, 52,244,154,150, 3, 33, 36, 24,121, 65, 8, 1,148, 8,102, 65, 0,104,224,248, 62, 68, 8, 10, + 40,203, 56, 29,139, 40,132, 24,142,187, 92,109, 42, 18, 73, 69,213,195,231,167, 0, 4,164,172,155, 78,163, 30, 83,200,187,239, +185,227,166,155,239,103,140, 93, 62,115,216,104,228,199,214,110,143,143,237,194,146, 2, 33, 18, 64, 64, 8, 5,231,190, 99, 22, +231,207, 94, 92, 40,100,227,209,116,215,168, 16,224,240,171, 39,187, 51,113, 46,160, 99,214, 4, 16,106, 60,219,200, 95,118,188, + 32, 25,213, 16,132, 94, 16, 34, 4,101,140,105,232,176,192,117,252, 80,149,101,140, 97, 92, 85,226,154,202, 5, 47, 54,140,154, + 97, 14,230, 50, 64,136, 99,147,115,160,125,128,236, 24, 31,121,251,109, 31,140,101,251,141,234,242,147,143,124,129, 32,178,125, +219, 85, 99,155,247, 97, 73, 1, 16, 9,193, 1,128, 8, 2, 78,169,107, 84, 86,102,142, 95,152,207,215, 76,235,193, 59,239,193, +146, 82,156, 59, 55,185, 88,252,181, 7, 31,148,213,232,233, 51,175,140,247,118, 1, 1, 11,165, 60,101, 92, 38,132, 11, 17, 80, +134, 32,196, 24,211,192,133,140, 57,126,160,200,178, 66,164,100, 52, 34, 75,164,229,248,139,149,134, 31,210,209,158,142,138,110, +186, 94,168, 10, 64,186,187,135, 39, 47, 30, 63,121,233, 43, 27, 6,122,175, 61,112,175,150,104, 71, 8,115, 8,225,107,131, 75, + 4, 32,160,190,211, 42,205,204,205, 78, 92, 41, 84,203,122,235,186,173,235,219,250, 55, 81, 71,255,203,239,125,119,211, 80, 79, + 58, 55, 40,168,119,126, 33,255,224,109,119,178,208, 89,169,235, 24, 35, 85, 38,140,243,144,177,213,179, 11, 66, 31, 33,232,248, + 97, 38, 46,162,170, 28,143, 40,140,243,149,106,179,212, 48, 52, 69,238,202, 36,206,206, 46, 15,119,101,243, 64,160, 87, 78,190, +236, 5,244, 61,239,248,192,129,219,223,169, 37, 59, 0,128, 92,112,193,168,224, 92, 8,192, 89, 96, 85, 23,230,207, 61,243,234, +217,227,151, 22,139, 13,211,218, 61, 62,180,105,239,189, 64,240,111,127,247, 43, 4,163,123,238,122, 11, 38,100,110,234, 85, 77, +150,226,233, 92,171,158,111, 90,142, 68,176, 42, 75,148,113,198, 56,132, 16, 35,228, 7, 20, 0, 24, 80,138, 49,138,105,170,132, +113,211,180,231, 74, 85,219, 11,186,210, 9,140,208,153,217,229,155,119,108, 0, 0,144,253,251,111,217,187,123,143,239,180, 4, +180, 48,145,132, 0, 16, 8, 1, 32, 99,129,171,151,107,203, 19,139,165, 74,169, 97,152,158,255, 66,154,160, 0, 0, 32, 0, 73, + 68, 65, 84, 15, 33,216, 53, 62,180,227,218, 7, 32,196, 47, 61,253,213, 75, 75,133,247,189,238, 94, 37,154,242,205,218, 11,103, +207,239, 30, 31,134, 8,231,139,139, 1,101, 10, 33, 4,227,144,113, 14, 4,130, 16, 99,228, 5, 33,231, 28, 35,132, 33,146, 9, +118,253, 96,161,210, 44,235, 45,140, 96, 95,123,166,164,155,134,227,142,244,246,130,179, 43,132,134, 1, 0, 64,137,196, 0, 64, + 64,112,193,194,192,179,157,198,114,181, 52, 95,168, 55,203, 77,211,116, 61, 0, 64, 76,147,119,140,141,174,217,126, 51, 34,234, +185,151,191,251,196,137,243, 15,222,112, 77,207,218,171,169,239, 92,185,120,212,246,130,145,145,205,212,179, 22, 43, 13, 9, 33, + 69,150, 16,132,140, 50, 40, 0, 4,128, 32,100,251, 65,200, 89, 92, 83,184, 16,142, 31,180, 28,119,169, 82,247, 2,218,145, 74, +164, 98,145, 87, 46,205,110, 28,232, 90,101,126, 19, 40, 24,132, 16, 32, 41,116, 90, 78,179,160, 87, 23,106,141, 90,213, 48,235, +134,109,186, 62, 7, 34,166,202, 61,109,169, 45,155,118,103, 7, 54, 3, 0, 78,189,240,205,111,189,112,236,254,107,182,173,219, +117, 27, 11,125,171,190,116,100,226,242,198,129,110, 89,139,235,165,153,124,205,200,165, 98, 42, 33, 2, 8,202,249,106, 79, 4, + 35,104,187,126, 16, 50, 85,150, 28, 63,108, 57,110,181,101,233,150,131, 49,234,201, 38,221, 32,156, 43, 86,223,127,247,117, 47, +159,191,128, 32, 36, 88,214, 56, 13,106,139,231,170,165,249,138, 97, 53, 76, 71,183, 29,215, 11, 56, 16,154, 44,119,167,226,227, +253, 61, 67, 27,246, 43,241,182,208, 49,159,125,242,107, 47, 93,156,121, 96,223,142, 77,187,110, 1,156, 7,142, 62, 53,121, 74, +183,157, 13,195, 59, 57,163,213, 70,173,214, 50,199,122,114,178, 68, 24,227,156, 11, 8,161, 0,128, 96,220,114,220, 32,164, 92, + 0,211,117,109, 47,104,154, 54,227, 60, 27,143,101,147,241, 75,139,133, 76, 34, 54,144,107,251,244, 35,135,226,253, 99,196, 40, +205, 28, 63, 52, 93, 49, 44,195,118, 45,215,243, 66, 10, 4, 80, 21, 41,151,136, 14,117,180,141,142,239, 72,118,143, 35, 68,154, + 43,147,127,243,200,183, 13,199,123,227,129, 93, 35,235,174,193,146, 28,250, 86,125,229,210,241,203,243,163,221, 29,241,116, 87, +232,181, 42, 77,195,241,195, 68, 68, 37, 4,211,213, 0, 1, 0, 16,130, 96,100,216,110,200, 88,200,168,237, 5,166,235, 5,148, +169,178,212,211,150, 10, 41,155, 90, 41,191,241,192,206, 83, 87, 22, 35, 50, 17, 0,144,185,124,209, 36,204,241,195,128, 82, 0, +128,166, 72,217,120,172, 63,151, 30, 25, 28,109, 31,220, 74,212, 56, 11,220,139,175, 62,250,240,161,151,251,219, 51,247,237,221, +218, 51,180, 85,210,162, 52,240,236,250,242,133, 43, 87, 12,199,189, 97,235, 90,132,136,109,148,202,134,137, 17,210, 20, 25, 67, + 24, 80, 10,128,128, 16, 50, 33,100,130,155,150, 11, 33,244, 2,234, 5, 65, 16, 50,140, 80, 54, 17,203, 38, 99, 19, 11,133,182, + 68,116,195, 64,215,199,190,244,253, 53,221,217,138, 0,196,114, 61, 2, 67, 46, 68, 68,150,219, 18,209,254, 92,102,184,111,160, + 99,120,187, 28,205, 0, 32,140,226,229,103, 14, 61,113,108,106, 97,239,186,225,109,107, 6, 50, 61,107,165, 72,146,211,208,179, +234, 43,203,211,103,231, 86, 70, 58,219,211,169, 12,163,190, 97, 26, 21,221, 76,197, 52,140, 17,132,144, 50, 46, 4,192, 8, 82, +198, 8,198,186,237,168,178, 20,132, 97,200, 56,130, 32,174,105, 61,217,180,105,123, 75,149,198, 59,111,217,251,252,217,169,100, + 68,237,207,101, 42, 77, 64,184, 16,138, 34,181, 39, 98, 3,237,153,225,190,254,246,225,237,114, 52, 13, 33,244, 45,253,210,169, +167, 30, 57,122,154,113,113,215,158,205, 35, 61,221,241,246, 33, 73,137, 11, 70, 67,207,210,139, 51, 23,230, 11, 97, 72, 71,186, +179,146,172,176,192,105,217,110, 69, 55,199,123, 59, 94, 27,254, 49, 14, 4, 80, 37,201, 15, 41,132,176,101,123, 0,192,144,114, + 4, 97, 76, 83,186,219, 82, 49, 85,126,254,220,212,230,225,222,254, 92,219,167,127,112,104,231,216, 64,203,246, 0,212, 72, 91, + 60,118,205, 72,110, 96,112, 60,211,187, 94,142, 36, 32, 64,161,111, 45, 93, 58,242,196,209,227,151,150, 75,219,134,122,119,175, + 29,202,101, 59,213,100, 39,145, 85,193, 40,165,158, 93, 95,158, 45, 86,166,243,149,193,142,182, 76, 44,202, 57,103,129,165, 59, + 94,195,180,187,210, 73, 33, 4,227, 60,164,140, 11,209,158,138,181,108,151,114,142, 17, 10, 41, 69, 8,198,101,181, 35,157, 72, + 69,181, 51,115,203, 18,198,111, 56,176,235,143, 31,126,124,253, 64,119, 79, 91,250,165,137, 25,212, 57, 68,214, 12,141,238, 60, +120, 27,150, 53, 0, 68,232,182,242, 51, 39,159, 62,122,244,204,236, 74,103, 38,241,186,189, 91,135,187,114,177, 84,167,164, 37, + 32,194, 44, 12, 4, 15,125,187, 89,170, 85, 38,151, 75, 16,130,254, 92, 90,150, 8, 15,221,192,247, 45,215,179, 92, 63, 25,211, + 86, 35, 70, 72, 41,101,188, 51,157, 92,172, 52,227, 17, 37, 21,211,188,144,166,162, 90, 71, 58,129, 33,186,176,144, 47,212,244, +223,122,243, 93, 47,156,159,178, 28,127,164,171,125,185,218, 72,199, 34, 6, 0, 68,141,103, 17, 38,174, 81, 90,186,124,236,249, +211,231,207,204,173, 36, 52,245,250,173,107,215,245,119,101,146, 41, 57,154,193, 68, 21,156,113, 74, 57,243, 89,224,182,244,202, +108,177,154,175, 53,251,115,153,116, 44, 2, 0,160, 97,224, 82,106, 58,126,200,185, 68, 48,227, 2, 80,238, 6, 97, 64,153, 38, + 75,115,229,250, 0, 73, 67,136, 86,109,171,162,155, 11,229,186,227, 7,191,251,150,123, 46, 47,229,191,253,210,169, 27,183,174, +211, 20,105,161, 92,167,140,195, 24, 32, 86,125,233,212, 11, 75,199, 46,207, 94, 92, 44, 98, 4,119,143, 13,108, 24,232,105, 75, + 68,163,170,130, 37, 85, 48,198,184,195, 5, 19,212,167,161,231,251, 94,161, 97,204, 22, 42, 8,194,174, 76, 82,150, 36, 46, 4, +227, 34, 8, 66, 55, 8, 49,132,156, 3, 46,184,224,194,116, 60,198, 57,229,188, 35, 21, 55,108,151, 11, 97,123,126,163,101, 49, + 46, 54, 12,116,221,125,213,214,207, 63,241,226,201,233,197,187,174,218,236, 6,116,105,165, 44, 75,164, 98, 52,211,237, 0,222, +125,227, 1,225,123, 94, 16, 40,178,212,145, 78, 36, 34,154, 76, 86,135,101, 8,175, 14,203, 32, 16, 66, 0, 1, 24, 23, 65, 24, + 86, 91, 86,190,166,199, 53,181, 51,147,140,107, 10, 70, 72, 0,225, 5,116,185,210, 88,174, 53,175, 90, 55, 44, 56, 23, 96,149, + 16, 10,130, 48, 12, 40, 3, 16, 40,146,164, 73,146, 44,145, 68, 68,181, 92,255,244,236, 18,101,108,172,167,195,176,221,168,170, +232,182,195,185,104, 57, 94, 44,219, 1,247,239,223,223,108, 54,117, 93,255,121, 27, 11,253,175, 21, 33, 68, 42,149, 74,167,211, + 4, 0, 96, 24,198,242,242,242, 47, 64,249, 31, 73,158,233,116, 26,253, 2,136,255,205,134,101,191, 0,232, 23, 0,253, 2,160, +255, 95, 9,249,183,219, 58, 22,137,100, 98, 90, 91, 34,214,211,158,233, 76, 37,210, 49, 45,170, 72, 64, 8, 26, 4, 1, 13, 41, +165, 66, 8,136, 16,198, 88, 34, 68,150,100, 6, 68,203,241, 29,159, 46, 85, 27,165, 70,211,112,252,122,203, 54, 29,231,255, 11, + 0, 65, 0, 0,132, 0,128, 7,111, 62,184,111,188,191,217,168,214, 90,118, 16, 82,132, 96, 68,145,210,177,104, 91, 58,149,206, +118,196, 98, 41, 9,242,208, 49, 45,179,233,250,126, 64, 41,125,173,176, 5,171,156, 41,210,158,146, 8,129,210,168,203, 97,163, +101,249,174, 21,147,112, 91, 34,166,168,234,151,158, 61,249,204,169, 9,202,216,191,119,176,223,191,127,255,194,194,194, 63, 70, + 33,248, 9,105, 75,196,239, 59,176,111,203,232,112, 46,149,136, 41,114, 50,149, 38, 68, 54,205,198,242,210,236,114,177,216, 52, + 45, 1, 96, 58,166, 14,247,246,166, 50,157,106,188, 45, 30,141,249,102,213,168, 23,245,150,238,250, 1,227,130, 96,164, 74, 68, + 83,100, 85, 81, 9, 33, 8, 66, 32,184,224,156, 11,206, 57,103, 66, 8, 33,248,106,195, 86, 8, 1, 0,130, 16, 33,196, 4,176, +252, 48,161,144,136,166, 78,230,235,127,244,141,199, 43,186,249,111, 13, 77,127,127,255,224,224, 32,249,167, 51,165,157,235,214, + 94,191,123,215,125,215, 93,151, 74,166, 56, 99,148, 81,140, 8,194,196,243,221,114, 97,110,226,252,137,249, 66,222, 13, 88, 76, +149,250, 59, 59,175,222,190, 39,147,235, 7, 88, 2,212,107,150,102, 75,115,103,230,253, 0, 66, 16, 85,213, 92, 91,123, 34,213, +161, 68, 18, 66, 0, 70, 3, 78,125,206, 25, 16, 76, 48,202, 89,192,105,192, 89,200, 56, 99, 92, 48,206, 66,202, 61, 26, 58, 94, + 96,121,190, 23, 80,130, 81, 71, 42,222,155, 78,105,209, 68,195,246,198,123,187, 31,253,195,223, 14, 41,251,204,247, 30,253,206, +145, 83, 65, 72,255,189, 45, 40, 21,143,125,252, 61,239,190,227,192, 13, 16,225,213,163,132, 16, 66, 8, 57,163, 65, 72, 27,213, +229,185,203, 39,167,151,243, 94, 64,163,170, 50,216,217,190,113,211,158, 88,166, 23, 99, 28,122,102,105,254,116,169, 82,118,130, + 0, 35,146,137,199,186,186,135, 18,157,107,104, 24,112, 22,200, 74, 84, 8, 30,186, 45,223,106, 4, 78, 51,240, 29,202, 24,227, +156, 49, 46,192,107,246,242,163, 71, 33, 16, 2, 8,128, 0, 64, 0, 65, 41,211,109,247, 74,169, 46, 43,234, 13,219,183, 37, 83, +237, 51, 75,243,163, 99, 91, 36,132, 29,163,116,241,242,217, 35,211, 43,223,122,225,196,143,207, 71,127,198, 22,244, 35, 10,210, +239,190,231,221, 15,222,121,175,172,168,156, 49, 0, 4,132, 8, 8,206, 89,200, 5,104,181,244,202,252,185,137,169,139, 53,195, + 34, 24,117,183, 37, 55,109,220,209,217,191,129,200, 26, 11,253,218,210,249,252,202, 21,221,116, 56, 0,233, 88,100,120,205,166, + 76,247, 24, 13, 3, 34, 41, 68,209, 8, 13,125, 71,247, 90,149,192, 53,168,103,210,192, 9, 41, 99,124,117,212, 33, 94,123,184, + 3,192,223,251, 17, 0, 0,176,218,164, 39,152,180, 37, 98,153,120,180,229,184,143,189,252,114, 34,157,189, 99,223, 65,179, 81, + 44,214,171,235,199,183,110,219,118,160, 59, 59, 57,152, 77, 6,190,127,113,169,244,248,169,201,213,230,214,207,204,130,174,189, +246, 90,230,218, 31,122,224,129, 93,219,246,176,191,213, 21, 0,193,105, 0,132,112, 3,218, 50, 42,149,133,137,137,233,203,150, + 23,196, 53,101,180,191,119,221,198,189,241,246, 1, 33,128,103,148, 10,115,103,138,149,162,237, 5, 10,193,157,185,142,222,145, +237, 74, 44,195, 25,149,181, 24, 0, 32,116, 91,129,107,133,158,197, 66,151,135,190, 16, 92,112,202, 89,200,105, 64,105, 16, 82, + 26,210, 85,148,196,143, 46, 53,248,219, 55,215,175,153,149, 0, 2, 8, 0, 4, 4, 16, 64, 72, 25,155, 43,214, 10, 14,127,240, +166, 27, 41,101,199, 47,158,187,102,243, 86, 89,137, 52,138,211,199, 38,103, 41,163,142,227,214, 45,231, 74,169,113,124,102,217, + 15,130,127,189, 5,193,125,251,246, 61,112,221, 13,119, 93,179,143,115, 1, 17,226,140,178,192,133, 8, 91,158,223,106,150, 43, +139, 23, 46,205,206,249, 33, 77,199, 34,235,134, 6,214,108,190, 78,137,101, 4,103, 86,109,177, 56,119,182,220,108,184,126, 24, + 81,164,222,174,222,238,209, 61,144,200, 16, 34, 34,201,161,103,251,102,221, 51, 43,190,173,123,174,233,133, 33,165,175,249,151, +213,222, 48, 65, 72, 38,132, 16, 68, 48, 6, 64, 56,126,184,202, 8, 35, 24, 17,140, 49,132,171, 79,212, 0,128,171,240, 49,198, +153,224, 16, 66,130, 48, 66, 48, 95,107,156,202,235,239,184,253,246,168, 68,126,248,202, 75,187,199,199,218, 82,153,114,225,202, + 75,151,230, 52,130, 24,231,134,237, 38, 35, 90, 71, 38,177, 88,107, 45,214,140,166,105, 79, 45, 23, 43,186,249, 47, 50,174,191, +187, 98,156, 81, 33, 4, 0, 34,176,117, 44,201,110, 16, 6,110,125,241,242,137, 75,243, 11, 94, 24,102,226,209,221, 27,215, 15, +111,220,175, 68, 83,156,134,173,210, 76,121,241, 66,165,169,123, 97, 24,145,200,218,145,209,174, 53,187,177,164, 0, 0, 1,103, +190,163,183,154, 5, 91, 47, 90,142,101,185,190,227, 7,142, 31,184,126,232,135,161, 23,210,144, 50,202,216,107,113, 29, 33,137, +224,152,170, 36,163,106, 42, 26, 73, 68, 53,193, 69,181,101, 49, 46, 82, 81, 85, 33,146, 68, 16,128, 16, 35,204,133, 64, 16,114, + 42, 92, 63, 8, 41,143,105, 74, 95, 46, 11, 32,250,222,161,231,223,116,235,157, 55, 95,181,239,185,227, 47,239, 28,233,203,164, +115, 91, 7,156,199,207, 78,183, 37,147,153, 88,132, 11, 16, 82,182,127,253, 80, 38,219, 67,228, 88,232,232, 75,249,249, 39,207, + 78, 63,114,252, 66,203,241,254, 5,156,179,254,254,254,245, 67,195,107, 58,115,140, 6, 33,227,182,101,148,230,207, 29, 57,250, +252, 66,169, 18,211,228,237,227, 99, 87,239,187,187,107,100, 59, 66,200,170, 46, 21,102,142, 46, 45, 76, 53, 90,166,132, 97,111, +103,207,216,214,235,219,122, 55, 64,136, 56, 13,189, 86,165, 85,154,110, 20,167,106,181, 66, 77, 55,170, 45,187,222,178,234, 45, +187,106,216,245,150, 85,107, 89,117,211, 54,108,215,246,124, 33, 0,132,144, 11, 33, 56,160,140,187, 65, 96,216, 94,189,229, 48, + 46,186, 50, 9,137,224,197,114,131, 50,166,201,146, 76, 48, 33,152, 96,132, 17, 34, 8, 35,132,252, 48, 92,169,233,130,139,222, +108,186,161,235, 51,133,210,246,117, 27,219,162,218, 51,231, 38,123, 98, 56, 30,141,196, 36, 60, 49,183, 84,110, 57, 93,233,120, + 68,150,252,144,134,158, 69, 61,221,245, 44,202,133,140, 17, 34,146,132, 68,205,252,231,243,207,100, 50,153, 74,165, 8, 0, 64, + 48, 10, 32,106, 52, 74,174, 81, 62,118,234,104,189,101,199, 52,121,203, 72,255,250,205,215, 36,114,195,130, 83,187,190,210,204, + 79, 86,106, 69,219, 13, 32, 2,157,153, 84,215,224,230,120,199, 16, 16, 48,116,205,192,214, 29,163,104,235, 37,211,113, 44,215, +179,188,192,118,125,211,245, 45,207, 51, 29,207,241, 3, 77,145,215,246,117, 15,245,118,247,116,245, 75,146,194, 5, 23,140,113, + 22,178,192, 9, 3,215,245,220,150,227, 90,174, 7, 33, 40, 54, 90,169,152,182,105,168,251,226, 66,193,241,130,225,174,108, 92, + 82, 49,145, 1,128,156,133,178,132, 37, 66, 16,132, 39,103, 22,155,182,179,125,164,239,219, 71,207, 29,187,112,102,239,214,221, + 7,215, 25,135,103, 22, 15, 12,180,117,101,146,187,198,250,207,204,174, 76, 46, 21, 55, 14,118, 71, 53, 37,160, 52,176,104, 72, +153, 19, 4,148,243,246,136,100,229, 58,214, 50, 62, 83,110,254, 52,105, 39, 1, 0,216,182,169,151, 23, 78, 28,125,110,182, 84, + 37, 24,175,233,204,110,221,178, 43, 55,176, 9, 34,236,155,117,163,124,165, 94, 89,212, 45,151,113, 30,213,228,142,142,190, 76, +239,122, 73,141, 49,223, 11, 29,195,107, 85,156, 86,209,180,109,219,243, 77,215,183, 28, 79,183, 93,195,113, 91,182,219,158,140, +222,124,213,206,145,209,173, 0, 0,207,172,217,122, 89,175, 45, 9, 14, 16, 20, 24, 35,132, 37,140, 9, 68, 72, 83,100, 85, 38, +157,153,180, 31, 4,166,235, 10, 33,108, 47, 88, 63,216,115,252,242,220,124,169,182,174,191, 75,214, 20,136, 85, 0, 56,161, 33, + 33, 54, 70,112,215,216,192,145, 75,115,170,162,220,180,121,244,145,163,199, 71,122,251,251,134, 54,174,111,181,206, 21,234, 27, +187, 51, 93,153,148, 23,210,133, 82,125,169,210, 64, 16,101,147, 81,140,113, 16, 82,215, 15,189, 32,148, 9,193,126,115,120,100, + 13, 80, 11,147,115,255,124,122,140, 7, 6, 6,228,176, 53,113,225,116,177,161,119,164,227,215,110,217,188,253,170,219, 18,185, + 1, 22,248,173,234,124,101,225, 92,185, 90, 52, 29, 15, 99,212,158,140,119,245,173, 77,228, 70, 32, 66,161,219,114,141,162, 93, + 95, 50,155, 37,195,178, 13,199,109, 90, 78,177, 97, 20, 26, 6, 4, 98,199,250,181,183, 30,188,121,203,134,237,152,123,197,229, +203,139, 11,211, 87,150,230,103, 11,165,249, 98,117,169, 82, 43, 27,173,166,233,216,158, 23, 6, 1, 66, 66,194, 36,164, 52, 8, + 67,137,144,120, 44, 1, 1, 39, 8, 73, 68,138, 40,210,228,114, 41,161, 41,169, 68, 82, 82, 98,152, 40, 8, 75, 8, 97, 12,132, +132,160, 42, 73, 19,203,149,117,189, 29,129,239, 21,117,107,108,112, 56, 25,139, 79,173, 44, 19,206,226,154,130, 49, 6, 0,248, +148,250, 97,184, 26, 25, 67,198, 87,137, 83,171,237,123, 55, 12,239,222, 54,246,190,219,175,121,253,190,237,187,198,250,101, 66, +150,106, 58, 99,252,127,188, 98,120, 96,112, 48,180,173,132, 4,182,175, 25, 60,184,239,166,158,209,157, 0, 17, 79, 47, 55,150, +207,151,139,115, 77,211,166,156, 71, 85, 37,215,214,150,233, 26, 83, 98, 25,206, 2,223,110,184, 70,201, 49, 10,166,101,182, 28, +175, 97, 58,197, 70,171,105,217, 61,237,217,155,174,222,183, 99,199,190,100, 44,214, 40,205, 78,207, 92,152, 92, 88,188, 82,168, + 92, 94, 41, 47,148,235,134,229, 8, 0, 98,170,146,138, 70,146, 81, 53, 34, 43,178,132,129,128, 8, 1, 69,150, 86, 31,161, 72, +152, 68,180,152,224,148, 96, 28,141, 68,106,186, 97,123,126, 87, 91, 70,141, 36, 17,145, 33,194, 2, 64, 32, 24,224, 20, 35, 88, +119, 66, 6, 96,111, 58,122,114,102, 97,253, 96,127, 50,209, 6, 3,251,116,190,214, 17, 37, 4, 99,136,160, 16, 34,160,140,114, + 14, 0,224,156,135, 33,243, 66,234,135, 52,164, 84,183, 28, 85,150,183,173, 25,236, 25,220, 52,208, 59,184,169, 59,217, 22,215, + 46,175,148,127,156, 94,253,183, 62, 72,136,206,116,226,158,171, 54, 15,172,219,139,137, 18,184,150, 93, 91,108, 86, 22,116,219, + 9,194, 16, 99,146,136, 40,201,100,155,150,236, 68,136, 4,182, 30,186,173,192,109,122,158,107,121,126,203,118,155,182, 35, 33, +180,123,227,250,246,174, 53, 66,112,215, 40,205, 93,124,121,165,222, 44, 53, 91, 53,195,106,152,182,229,250,138,132,123,219,211, +227, 61,157, 61,217, 84, 76, 83, 37, 34, 65,132,128,224, 66,240,213,220, 71,146, 35, 17, 64, 90,245, 26, 16,102, 71, 71, 82,102, + 33, 16, 76, 82,163,153, 68,180, 84,215, 93,223, 75, 64,132,177,196, 33,194,156, 50,136, 17,130,138, 68,218, 85,184,228,194,158, + 56,193, 64, 92,152,186,116,240,234,235,134,250, 6,206, 45, 23,102, 43,198,112,123, 50, 34, 75,137,136,202, 5,247, 3,234,248, + 1,193,136, 50,190,250,158, 28, 33, 40, 33, 48,189, 92, 44,214,234,153, 78,170,198,178,185, 62,121,167,105, 78,213,237,199, 94, + 58,254,147, 62, 72, 8, 49,190,118,203,208,198,253,156, 81,187, 89,108, 85,174, 52,155,117,219,243,185, 16,170, 34, 39, 34,106, + 44,158,145,180,180, 96,212,247, 76,234, 91,129,103,185,126,216,114, 61, 63, 8, 18,209,232,248,216, 38, 53,154, 14, 92,163, 94, +184, 92,169, 55, 10, 13,189,216, 48,170,134, 85,111,217,166,235,201, 18,222, 56,208,189,103,124,168,183,187, 63,146,200, 66, 44, + 11,193, 5, 11, 5,163, 66, 48,193,153,224, 20, 8, 1, 17, 81, 37, 13,212,170,150,235,167, 3, 79,146,100, 78, 3, 44,105, 81, + 69,225, 2, 4, 65, 0, 16,132, 8, 35, 8, 89, 8,133,224,130, 11,136, 96, 50, 22, 89,106,209,186, 3,250, 82,209,151, 39,103, +174,222,180, 85,142,164,182,245,180, 29, 94,104,100, 29, 87,149,101, 77,145, 3, 74, 25,227,148, 50,198, 56, 19,130, 50,190,154, + 52, 68, 20, 73,183,220,115,243, 43,131,189, 3, 68, 77, 96, 73,237,234,232, 25,205,174, 0,136,128,224, 63,233,164, 17,150,104, +224,218,141,188, 94,153,215, 45,203, 15, 41,130, 48,166,200,177,136,166, 69, 18,152,168, 44,176, 89,224,132,190,227, 83, 26,132, + 33, 0,176,187,163, 59,150,234, 4, 0,184,102,117,185, 56, 87, 53,204, 98,163, 85,108,232, 21,221,212,109,183,229,184, 18, 38, + 59, 70,251,110,216,190,185,111,104,131,154,236, 64, 68, 5,128, 83,223, 13,220, 86, 24,250,130,115,132, 9,194, 10, 0, 92, 8, + 1, 33,196,130, 35,132, 45,219,113, 93, 71,142,167, 32,162, 8, 73, 4, 19, 0, 1,227, 28, 66, 4, 17, 20, 28, 0,193, 57,245, + 41,231,156, 9, 69,150,152, 93,183,218,122, 58,211,137,195, 19,179, 75,249,249, 53,163, 91,122,186,251,181,185, 66,205, 65, 93, +132, 72, 8, 43, 68,242, 48,117,121,184, 90,215,172,118, 87, 16,130,170, 36,167,227,208,114,189,124, 41,175,198, 50,146, 26, 67, + 24,182,169,232,205,183, 28, 44,229,151,167, 10,213, 82,211, 88, 37, 60,172,190,214,180, 91,133,169, 70, 61,111,186, 94,200,152, +132,113, 68,145,163,170, 34, 73, 26, 16, 32,244, 77, 78,125, 74, 25, 0, 32, 18, 77,100,147, 93, 8, 75,129,163,215,138,211,149, +134, 81,214, 91, 21,221,172,183,236,202,107,174,215,151, 8, 62,184,121,236,230,171,247,118, 15,109,150,163,105,136, 80,232,217, +190, 85, 95, 45,217,125, 71, 55,235,203, 66,128, 68,166, 75,142,164, 16,146,128, 0, 0, 64, 78, 61,215,247, 93,159, 10, 1, 0, +224, 16, 98,128, 49,231, 12, 2,136, 16,132,136, 64,136,160,224,140,250, 97,232,135,148, 50,193, 49, 66,190,101,152,180, 55,171, + 72, 9, 77, 62, 55, 51, 59, 50,188, 78,142, 36,215,228,210, 83,229,102, 91,200, 48,134, 24, 35, 66, 16, 8, 5,229,140, 51,193, + 24, 91, 37, 50,168, 18,209, 20, 41,174,170, 1, 13,156, 86, 69,101,212,119, 76, 8,145,140,225,123,110,222,147,138, 70,235,166, +253,212,116,105,177,229, 19, 0,161,215,170,212,106,158,237,249, 66, 8, 77,146, 52, 69, 86,100, 9, 99, 34,128, 96,204,135, 16, + 75, 90, 58,162, 37,177,164, 80,207,210,171, 11,229,122,173,220, 52, 43,134, 89, 53,172, 70,203,214,109,199,176, 93,219, 15, 58, + 83,241, 55, 30,220,125,253,181, 55,167, 59,135,177,164, 5,158,217, 42, 93, 97,161,135,136, 12, 49,134, 16, 3, 0,161, 16, 94, + 72, 13,203,145,148,136, 26,207, 66,136, 87, 75, 10,234,182,154,150, 19,132, 33,196,132,115,134,137, 34,132,112,131, 0, 2,160, + 40, 42, 66, 4, 0,200, 56, 13,125,203, 11,130,128,210, 85,254, 8,134,192,242, 2, 16, 21, 29,233,196,149,124,201,119, 45, 34, +199,186,115,185, 11,197,134,227, 7, 81, 85, 94,237,195, 1, 1, 25,227,175,249, 32, 0, 16,134, 10, 33,154, 44,101, 18, 81,130, + 48,245, 29,159,211,150,213,210,109,199,176,124, 89, 86, 51,221, 99, 9,223,234,169,152, 11, 45,159, 0, 0,220, 32,240,130, 16, + 66,168, 74,146, 42, 75, 50, 33, 88, 82,136,164, 34, 73,197, 82, 4, 97, 18, 6,118,163,178, 80,172, 86,139, 13,163,212,108,213, + 77,219,116,188,150,227, 26,142,103,187,190, 76,208,190,141,163,247, 28,188,110,104,124,167, 20, 77,179,208, 55,171,243,110, 51, +143, 37, 77,210,226,146, 22, 67, 88, 2, 0, 10, 33, 24,247, 88,232,217,174,167,219,110,142, 82,132, 8, 88, 5, 8,138,106,189, + 92, 49,204, 76, 44,162,200, 42,163,129, 28,205, 4,190,221,114, 60, 66,144, 22, 73, 64,132, 4, 0,204,119, 60,167,229, 5, 33, +101, 28, 33, 8, 0, 20, 0, 52,117,131,107,106, 91, 60, 58,185, 84,178, 44, 35,153,137, 68,148,136,162,200, 45,215,150, 37,194, +133, 16, 0,112,193, 25,231,148,177, 85,251,148, 48,142,106, 74, 58, 26, 73, 69, 53, 69,146, 40,163,126, 16, 84, 13,179,220, 52, +189, 0,216, 84, 96, 34, 19, 57,171,168,218,223,181, 92, 37, 66,100,130, 20, 73, 34,114,132,200, 17, 76, 20,128, 80,224,219,229, +242,210,114,185,182, 84,109, 86,116,179,229,120,166,235, 57,174,239,132,161, 31,132, 18,193,187,199,135,239, 57,120, 96,116,227, + 94, 73,141,113,206,140,210, 21,125,242,144, 36,105,106, 60, 27, 73,247, 96,162, 32, 76, 0,194,171,163, 92, 70,125,230, 59,102, +171, 81, 53,108, 74,169,162,198, 16,145,129, 0, 0,130,192,181,230, 87, 86, 92, 47,136,181,183,201,178,194,131,128, 72, 90,173, +146,111,154, 78, 54, 25,139,198, 82,171,255, 84,196,183,235,166,235,175,158, 37, 66, 4, 66, 16,134,180,213,168,243,206,158,184, +166,134,140, 26,166,145, 72,182, 75, 4,167, 83,233,226, 92, 37, 17, 81,129, 16,171, 29,149, 85,150,173,224, 28, 35,164,201, 82, + 34,162,166, 98, 90, 92,211, 8, 70,126, 72, 91,142,187, 82,211, 43,134,169,219,190,209,106, 1, 32, 56, 13,131, 32,120, 13, 32, + 9,163,168, 42, 19,132, 16, 38,156,133,205, 70,185,216,104, 46, 86,234,133,154, 94, 55,109,203,245,221, 32,244, 67,234,135, 33, +101,188, 51, 21,191,253,170,173, 7,174,185,161,163,103, 20,171,209,208,181,170, 75, 23,204,250,178, 34,145, 72,162, 35,221,181, +142,200, 26,194, 18,196,100,149, 0, 10,132, 16,130, 51, 26, 80,223,177,244, 82,161,222,168,183,172,158,108, 42,154,204, 65,132, +133, 0, 16,128, 90,101,121,161, 92,149, 8,201,101,210, 80, 48, 73, 77, 8, 33,242,149,138, 79,105,174,173, 77, 81, 99, 0,128, +192, 53,245, 86,211,246,124,202,184, 44, 17,140, 96, 32,132, 31,134,142,227, 8,209,163, 42, 18, 66,168,101,154,156,133, 24, 65, + 5, 10,221,246,252,128, 34, 4, 41,231,140, 9,198,133,224, 28, 66, 36, 75, 36,174,169,169, 72, 36, 25,209, 84,153,112, 33, 28, +223, 47, 54,140,229,106,195,116,124,153,192,136, 44,113, 22,154,205,114,165,217,132,171, 0, 25,182, 55,189, 82, 54, 93,175,222, +178,171,134,213,104, 89,166,231,251, 1,245, 41, 13, 66, 10,128,232, 72,197,247,111, 89,191,111,199,158,145,209, 13,106,188,131, +243,208,106, 20, 22, 38, 95,182,154,197,104, 36,150,204,116,117, 13,110, 37, 74, 4, 97, 9, 34, 12, 17, 2, 0,174,182,118, 4, + 16,130, 51, 22, 4,161, 99, 24,149,249,229,114,105,161, 92,135, 16,244,117,247,105,241, 12, 68, 18,132,192, 55,235,151,102, 38, + 91,142, 55,210,153,205,181,119, 9, 65,149, 88, 86,111,148,150, 42, 53, 77,150,122, 58,123,144,164, 8,206, 77,189,172,155,182, +227,135, 4, 35,130, 16,193,136,113,238, 6,148,115, 10, 16,148, 48,146, 48,182, 93,135, 81, 31, 8, 78, 0,167, 88,118,124, 95, +145, 37,198,216,107, 61, 57, 8, 36,130,163,170,146,136,106,137,136,170, 41, 50, 68,192,245,195,170,110, 46,150, 27,149,166,201, + 56, 31,237,233,104, 75, 68, 3,179, 58, 53, 63,187, 84,183,128,164, 17, 8,225,229,229,210,244,116,203, 11, 67, 63,100,148, 49, +202, 24,193,168, 51,147,188,106,195,218, 3,123,246,229,122,215, 97, 69,227, 44,244,204,122,126,110,162, 84,120, 20, 19,148,203, +180,103,218,251,186,250,215, 33, 73, 69, 88, 66,171,198,242,183,252, 16, 8,225,107,221,119, 26,132,174,229, 52, 11,181,202,226, + 74,181,177, 84,109,134,148,110, 31, 27,238, 25,220, 72,148, 8, 16,128,250,246,212,229, 87, 47, 46,149, 84, 89,218, 56, 50, 28, + 77,100,105,224, 1, 8,174,204, 79, 55, 45,103,199,232, 96, 58,219, 3, 33,246,172, 90,181, 86, 50, 28, 23, 0, 40, 19, 44, 17, +132, 33,242, 67,230, 6,225, 42, 37, 6, 35, 76, 48,246,124,159,133, 30,224,148,249,142,237, 5,142, 79, 32, 68,171, 29, 93, 4, + 33, 34, 36, 42, 75,201,136,150,140,106,154, 42, 35, 4,189,144,214, 91,246, 82,181, 89,104,232, 78, 16,100,147,209,141,131, 61, + 17, 25, 23,171,165, 23, 47,204, 4, 76, 2, 18, 32, 0, 0, 63, 12, 85,193, 7,218,211,235,135, 6,183,109,217,213,217, 51,162, +197, 82, 8,147,192, 49, 42,203,151,143,190,240, 45,163,213,138,169, 82,103,123, 46,219, 49,216,209,123, 11, 81,162, 16, 19,132, +241,143,205, 29,197,143, 58,130, 66, 8,193, 57,103, 97,232,152,182, 94,208,171, 75,165,166, 94,172, 25, 21,195,148, 8,222, 57, + 62,188,126,203,126, 37,222, 6, 4, 8, 28,227,204,169,195,207,158, 58, 79, 48,222,189,110, 77,223,232,142,192,209,213,120,219, +210,204,233,201,165, 66,123, 34, 58, 62,182, 1, 73, 42, 11,156, 74,113,174,106, 88, 1,101,138, 36, 73, 24, 43,132, 0, 8, 61, + 63,240, 3, 26,215,100, 4, 32, 66, 80, 34,216, 15, 67, 26,184, 0, 8, 30,120, 45, 67,119, 98,146, 44, 17,198, 5, 4,128, 16, + 44, 99, 28,143,170,201,168, 26, 85,100,140,160, 23,208,134,105, 47, 85, 26, 43,181,166,233,120,255,111, 43, 87,214, 28,199,113, +223,251,154,233, 57,119,246, 94, 96,113, 16,132, 72, 16,188, 68, 93, 54, 35,201,162, 21,217,169,114, 94, 82,202, 71, 74,190, 68, +222, 92,137,147,202, 99,242,148,164, 44, 71, 78, 34, 71,138,100,145,145, 40, 30, 22, 9, 18, 4,136,197, 98, 15,236,238,236,220, +211,103, 30, 6,164,101, 85,165,242,146,183,185,170,107,106,106,186,251,255,255, 93,148, 24, 59,253, 94,191, 85, 79, 11,246,219, +111,159, 61, 57,153, 52,123,107, 5, 0, 68, 43,245,231,127,250,225,135,183,222,151, 82,100,203,201,100,116,120,231,243, 95, 14, +199, 67,165,228, 74,171,189,185,190,117,253,250, 77,219,239, 96,211,134,136, 0, 84,253, 36,213,236, 1, 74,171,223, 99,164, 26, +104,160,148, 20,162,204,202,100, 22,207,142,230,243,201, 52,140, 79,163,100, 30,167, 5, 19,189,134,255,131,107,215,207, 93,186, +137, 45, 7, 40,157, 46, 6,159,126,250,209,111,238,239, 57,150,121,235,198,213,215,222,122, 95,113,110,251,237,249,232,233,231, + 15,126, 39,149,126,125,119,215, 15, 86,181,146,203,233,225, 96, 58,139,243,210, 36,152, 96, 68, 13,195, 32,164,228, 60,103,156, + 75, 65, 13, 23, 86,156, 26, 70, 76, 72,193, 50, 0, 32, 2,128,149, 69, 86, 50,207, 50, 1,128,152, 96, 3, 16,219, 52, 2,215, +113, 41, 69, 8, 21, 37, 95, 36,217,209,116,113, 60, 11,195, 36, 3, 16,246, 91,193,214, 74,155, 32,248,100, 56,253,237,227, 67, +207,162, 23,250,237,251,211,140, 64, 8, 31,124,243,217,232,225, 39, 81, 86,186,150,117,113,163,127,249,226,149, 63,122,247,103, +196,174, 65, 68, 32,128, 21, 40,172,207, 40,134, 10, 42,150, 21,245, 0,206,194, 17,148,150,156,151,105, 25,207,146,197, 48, 92, +140,231,113,182, 72,179, 40, 45,178,146,149,156,123, 22,125,253,194,185,203,215,223,246, 58, 91, 8, 34,193,178,193,222,157,127, +249,205, 39,251,163,211,173,110,235, 39, 55,223,218,190,250,174,146,130, 24,118, 52, 61,248,244,206,151,147,101,252,131,157,237, +245,205, 29, 13, 64, 17,207, 6,163,225,100, 25, 3, 13,108,106, 26, 6,177, 76, 2, 17, 20, 74,103, 37,147, 82, 81,147, 32, 8, + 43,149, 56, 23,178,228, 2, 0, 8, 17,164,166, 81,148, 76, 42,109, 16,100, 67, 98, 24,196,181,168, 67, 13,132, 96, 94,176, 69, +154, 13, 78, 23, 39,243,229, 50,205,165,210,237,154,187,213,107,249, 14,157, 70,201,151,143, 15, 22,113,250,103,111,223,160,245, +214,189,105, 70, 52, 0,189,206,202,135,239,221,242,155,171,216,180,129, 6, 74,114, 41,185,228, 28, 66, 1, 16,130, 0,126, 39, +186,180,250, 42, 64, 43,173, 36,147,162,224,233, 50, 15, 71, 81, 56, 90,196, 73,152,102,113, 86,100, 5, 43, 56, 87, 74, 75,173, + 93,106, 94,219, 90,219,217,185,209,232, 95,194,166,173,149,136,198, 79, 63,253,175,127,253,228,222,158,101, 26, 63,190,126,233, +157,183, 63, 8, 58, 91, 74, 9,140, 64, 52,121,246,197,157,207,246, 71,211,157,181,222,245,221,107,132,122,146,231,211,209,193, +225,120,150,228,101,224,218,148, 16,219, 32,148, 16,160,180,144,178,224, 66,105,109, 25, 70, 5,104, 96,132,184,144, 5, 23, 90, + 43,173,117,203,115,164,214, 82,105, 27, 35,106, 16,106, 26,212, 32, 90,131, 40, 43,194, 36, 59,153, 47, 71, 97,148, 22, 76, 72, + 85,115,172,141, 78,163, 19,120, 5, 19,247, 14,134, 79,134,211,203, 27, 43,111, 95,190,240,205, 76, 0, 13, 8,208,218,111,244, +144, 97,103, 89,100, 10, 70, 8,133, 8, 99,108, 84,156, 2,212, 26, 0,173, 43,230, 74,201,106, 6,177, 44,204,227,211, 52,158, + 71, 73,188, 76,139, 40, 47,178,162, 44, 24,231, 82,106, 13, 48, 66, 24,163,150,111,159,239,247, 54,207, 95,173,117, 95,193,166, +165,181,206, 22,195,123, 95,125,242,171,219, 95,103, 37,187,180,222,125,231,198,171,231,175,252, 8,155,182,150, 66, 9, 22,141, +246,190,248,250,246,189,131,225,102,167,241,214,149,203, 78,125, 85, 43, 30,159, 30, 30,141,199,147, 48, 50, 8,177,169, 65, 77, + 98,153, 4, 99,200,165,226, 66, 86,210, 85,203, 36, 85,185,140, 17, 98, 66,228, 37, 83, 74, 75,169, 91,129,151,149,188,146, 35, + 99,136,128, 6, 5, 99, 5, 23,203, 52, 63, 93, 38,167, 81,146,149, 76,107,237, 90,116,173, 21,172, 52, 3, 13,192,227,193,248, +238,211, 65,224, 88, 31,188,182, 91,175,183,178,163, 61, 0,171, 58,200, 48, 29,215, 7, 16, 66,132, 17,194, 0, 66,173,180, 86, + 82, 10,174,120, 33,202,148,229,113,153, 45,242, 36, 76,179, 36, 41,202, 36,103,105,201,178,162,172, 76,208, 74,107, 8,161, 73, +176, 99,153, 46,165, 43,141, 96,125,109,179,221,191, 68,253, 54, 50, 76, 45,101,182, 24, 62,186,255,217,191,221,249,102,188, 76, + 94, 89,109,191,113,113,251,210,213,155,110,107, 67,107,165, 56,227, 69,188, 56,217,187,243,224,238,189,103,199,221, 70,237,205, +221,139,141,222,182, 82,178,140,198,163,201,232,249,116,145,230,229, 74,211,114, 40,165, 6, 49, 13, 67, 3, 32,149, 18, 82, 9, + 37, 33,128,212, 48,170,162, 2, 35, 88,112,145, 22, 76,107,197,165,112, 76, 19, 65, 4, 1,100, 66, 10,169,180,214, 37, 23, 73, + 94, 46,211,108,153,229, 5, 19, 0, 0,135, 26,189,122,109,181, 25,152, 24, 63,159,204,191,122,122,164,180,186,117,253,226,197, +141,245,209,244,228,235, 39, 7, 16, 88, 4, 0, 0, 49, 54, 45, 79, 67,160,164, 20,101,198,146, 89, 30,159,150,201, 44,205,146, +172,200,211,156,165,140, 21, 37,203, 74, 81,112,198,184,224, 82, 41,165, 1,208, 24, 33,203, 52,108,211,172, 57,180, 83,243, 87, +122, 43,141,149, 29, 59,232, 97,147, 66, 8, 37,231,225,224,225,195,251, 95,254,199,189, 71, 81, 86,188,210,239,252,232,218,206, +246,133,107, 65,119, 27, 25, 84, 9, 38,121,201,178,229,236,248,219,187,123,123,247, 15, 79, 90, 53,247,205,139, 91,189,213,109, + 8, 33, 47,162,197,236,100,112, 26,142, 22, 17, 70,168,230, 88,182,105,152, 6, 49, 48, 86, 26,200, 51,202, 17, 84,165, 77,181, + 67, 16,140,210,146,199,121,161, 53, 40,185,132, 8, 98,132,184,146, 44, 23, 82, 41,198,101,206,120, 90,148, 89,121, 22,241,230, + 80,163, 91, 15,214,218,117,155,154,195,121,244,213,147,163,164, 40,223,185,188,253,195,221,237,188, 72,255,250,163,207, 38, 28, + 89,117,139, 0, 0,128,210,233,124, 16, 78, 14,162,112, 18,167, 73,154,151, 89,201,115,198, 11,206, 75,198, 25,127, 97,148,215, +186,154,234, 38,193,174, 67,125,139, 6,174,213,174,249,157,238, 90,208,217,180,106, 93,108,216, 16, 33, 45,121, 17,158, 28, 63, +187,255,229,131,251,119,247, 7,166, 97,236,174,119,119, 55, 86,214,214,182,189,246, 57,195,246, 33,132,146, 21,146, 23, 69, 52, + 25, 15,159,220,219,127,254,237, 96,212,244,156,215,183, 55,214,251,231,176,105, 9,158,167,225,120,188, 8,143,103,225, 50,201, + 55, 58,141,192,181, 77, 66, 76, 66, 32, 4, 66, 84, 94, 7, 93,173,141, 4, 33, 13, 52, 0,144, 96, 92,148,105,148,101, 16,160, +156,113, 41,149,144,146, 75,201,132,228, 66,150,140, 23, 47,154,129, 10, 15,234,212,107,253,102,224, 80,115, 52, 95,222, 59, 56, + 14,211,226,173,157,115,239,191,186,163,148,250,249, 71,159, 30,159,134,181,118, 87, 1, 64, 0,132,251,143,255,251,227,201,131, +172,100, 47,171,103, 46,164, 80, 74, 42, 5, 52,168,202, 48,147, 96,106, 26,158,101,214, 28,171,225, 57,205, 32,104,182, 87,189, +214, 57,211,109, 96,131, 66, 8,149,146,101, 60,157, 30, 63,126,248,232,193,237, 39,135,139, 36,235, 55,131,247,174, 93, 60,215, +107,181,219,171, 78, 99,205,180,107, 8, 19, 45, 5,151, 92, 20,105, 22, 30,159,156, 60,191,119, 48,220, 31, 77, 27,158,115,125, +171,191,190,210, 55,172,154, 18,188, 76, 23,139,112, 54, 14,163,209, 98, 41,148,106,214, 92,223,182, 8, 70, 6, 66, 74,233,151, + 77, 57,174, 2,109, 32, 80, 10, 0,173, 13,130, 11,198,195, 36, 39, 24, 51, 33, 25, 23,165, 16, 37, 23,140,139,146, 11, 86,177, +184, 90, 19,140, 93,203,108,215,188, 94,195,119,168,113, 50, 95, 62, 60, 60, 73,139,242,141, 11, 27, 31,220,184, 68, 48,254,187, +143, 63, 63, 24,157,174, 52, 2,236, 88, 17, 0, 4, 2, 56, 93, 38, 58,139, 42, 41, 65,213,218, 85,107,158,105, 96,203, 52, 92, +106,214, 28, 59,112,157,102,205,109,214,219,126,123,211,174,117, 49,117, 16, 38,103,100, 97, 60,155, 29, 63,220,219,223,251,250, +233,209, 96, 4,206, 97, 47, 0, 0, 5,193, 73, 68, 65, 84, 22,250, 54,125,101,181,253,254,245,157,110,195,175,213,123,150,223, + 53,108, 31, 97, 3, 0, 32, 5, 83,188, 40,211, 48,153, 31, 31, 77, 38,191,123, 62, 60, 58, 13, 27,158,115,117,179,191,209,235, + 82,167,174,180, 84,101,158, 68,211, 89,156,142, 23,209,233, 50,105,250, 78,167,230,153, 6,169, 2, 46,197, 11,208, 75,107,109, + 98, 2, 1,228, 82, 85, 23, 8,194, 66,169, 48,201, 45,211,144, 82,113, 37, 75, 33, 25, 23,140, 11, 46,165, 82, 26, 35, 68, 49, +114, 45,218,170,185,173,154,103, 96,124, 52, 13,191, 29,140,148, 82, 55,119,183,110, 93,223,129, 0,252,213, 63,253,251,112, 30, +173,183,234, 43,205, 32, 67, 86, 84,156, 85,210, 34,147,188,202, 85,161, 38,177, 13,211,181,205,192,177, 3,215,106,250,110,163, +222,245, 91,125,187,214, 33,212, 71,134, 9, 33, 2, 64, 43,206,139,112, 56, 61,222,123,122,184,127,255, 96,240,124,186,192, 16, +110,116,154, 63,125,109,119,181, 25,212, 61,223,174,181, 76,183, 97,152, 14,196, 38,132, 80, 73,174,165, 16,101,150, 39,147,229, +124,124, 56,157, 61, 58, 26, 79,194,164,233, 59,151, 55,122,235,157,166,227,248, 16,106,197,242, 50, 11,163, 36,155,199,233, 52, + 76,146,162,188,180,209, 11, 60,251,133, 64, 75,115, 33,133,146, 82, 43, 0, 0, 53, 9, 33, 56,201, 75, 46, 4, 23,170,162,173, +195, 52,247,149,210, 0, 8, 41, 69, 5,182, 42,133, 32, 36, 6, 49, 8,241,109,218,240,220,186,103, 11, 41, 31, 15,198,251,163, + 83,199, 50,223,123,117,231,135,151,182, 78,163,228,231,191,252, 44,206,138,237,213, 86,175, 30,248, 54, 29, 78, 83, 64, 28, 82, + 97, 29, 77,151,250,206, 25, 11,220,240,107,141, 70,219,107,174, 82,175,103, 88, 14,194, 6, 64, 16,104,168,149, 16, 69,146, 46, +134,227,227, 39, 79, 14, 15, 31, 30,157,156,204,151, 0,192,213,102,240,246,238,249,181,118,163,233,187,142,227, 81,167, 65,168, +143, 77, 10, 17, 6, 16,105,197,165, 84, 74,150, 60,143,243,104,124, 26, 46,159, 79,102,123, 39,147,121,148,182,124,247, 66,191, +187,218,170, 59,182, 5, 33,146,162, 84,188, 76,243,116,153,229,243, 56, 59,141, 18, 8, 96,191, 25, 88,134,169,180,130, 16, 74, +165, 25, 23,252,133,208,138, 26, 36,112,237,105,156,165, 5,171,218,209,154, 99,157,204,151, 21, 62,161,180,174,182, 87,106, 16, + 3, 99,155,154, 53,215, 14, 28,203, 36,120,158,100,143,142,198,147, 48,218,232, 52,127,250,250,238,229,205,213,187,251,131,191, +253,248,115, 74,200,213,115,253,186,231,212, 28,235,238,254, 81,130, 40,242, 28,162,129,222, 94,105,255,100,119,195,175,175, 56, +205,190,233,212,177,105, 65,136,207, 26, 78, 37, 5,203,242,229,100, 62,122,250,236,232,240,219,163,225,193,100, 30,165, 5, 53, +200, 90,171,241,238,149, 11,253,118,189,233, 57,174,237, 24,118,141, 80, 31, 27, 38,194, 4, 0,172,181,214,130, 3,173,149,230, +146,149, 34,143,226,120, 54, 9,163,195,201,236, 96, 52,139,179,162,225, 59, 91, 43,237,213, 70,205,163,180,178,219, 42,174, 4, +203,211,188,136,178, 34, 76,179,101,154, 53,124,183, 93,243, 16,132, 66,106,140,129,148,170,202, 14,209, 90, 75,165, 49,194,171, +141,224,201,201,248,116,217,178,169, 81,249,190, 2,215,201, 75,134, 17,172,168, 31,131, 96,135,154, 53,199,114,168, 1, 0,140, +179,226,209,209,248,112, 58, 39, 8,190,255,234,206, 31,223,184,108,154,244,111,126,245,159, 95, 60, 58,216,232,212,215,219, 13, +223,178, 28,203,188,189,119, 32,164,178,124,175, 4,128, 0,173,123,155, 87,207,191,121, 11, 0, 4, 33,208, 90, 41, 33, 56,139, +179,197,201,108,124,120, 56, 28, 60, 26,156, 28,142,231,139, 36,131, 16, 52,125,239, 92,183,181,209,110,244, 26,181,192,177,108, +219, 49, 45,143, 84,243, 8, 19, 8, 17, 4, 64, 73, 1, 20,215, 90,105, 45,148,148,146,103,188,136,163, 36, 25, 45,162,231,147, +249,225,100,158,149,172,233, 57, 27,157,230, 74,163,230,218, 20, 97,164,164,168, 4, 20, 37, 23,105, 81,198,121, 17,101,121,206, +248,229, 70,205,166,166,172, 76,162, 18,104, 45,139,146, 87, 63, 11, 23, 66, 3,221,240,157,118,234,239, 13, 39, 91,189,166,144, + 74, 43,109,155, 6, 70, 8,104, 69, 77,195,183, 44,223,161, 6, 33, 37,227,199,179,229,120, 30, 77,227, 68, 8,249,234,249,254, +207,110,190,177,214,237,125,242,213,215,127,255,235,207,165, 82, 55, 47,109, 85,198, 22, 41,213,237,199,135,182,101, 58, 20,205, + 74,142, 41,168, 4, 84,130,167, 97, 17,159, 38,225,100,122,122, 50, 24,143,159,141,103, 71,211,197, 60,201,148,210,158,109,246, + 26,181,107, 91,253,213,102,208,244, 93,215,162,150,105, 24,134,133, 12, 27, 17, 19, 97, 82, 81, 37, 90, 48,165, 53, 56, 67,239, +164,150, 82,201, 82, 10,198, 88,190, 76,139,113, 24, 31, 78,102, 71,211, 69,193,120,211,115,251,237,122,183,238,187, 22, 37, 24, +105,165,133,150, 0, 0,165,116,193,121, 86,242,172, 96, 73, 94,106, 0,218,129,135, 32,146,213, 50, 12, 0, 82, 48, 99, 76, 42, + 13, 33,168, 42,105, 4, 97,183,238, 47,146,236,249,100, 30,120,182,148, 90,202, 51,105, 22,203,138, 56, 43,197,169, 44,153,168, +146, 40,234,174,253, 39,175, 95,126,231,218, 46, 34,230,175,111,127,245,151,191,248,199,140,241,157,126,119,187,223, 89,166,185, + 75,205,211, 48, 30, 46,162,102,205, 77,139,242,120,177, 4, 78,224, 86,219,252,225,211,111,254,121,244,224,100, 17, 77, 22,113, +152,102, 5, 19, 24, 65,207,182,174,108,174,172, 53,235,173,192,243,109,139, 26,196, 32,184, 66,170,170,132, 10,160,149, 18, 69, +149, 64,116,230,143,209, 10,168,179, 15,164,148,226, 74,114, 46,151,105, 49, 89,198,207,167,179,193, 52,228, 66,212, 61,103,181, + 89,235, 4,158,103,153, 6,198, 90, 3,169, 84,133, 14, 72,165, 74, 46, 75, 46, 42,118,152, 32,232, 91, 84,105,169, 36,148, 82, + 74,173, 49, 68, 66,200, 40, 47, 48, 68, 76,158,149, 54, 90,107,151,154, 74, 41,165, 52, 65,136, 58, 22, 23,178,224,188,178, 21, + 55,168,211, 9,188,141,110,163, 27,248, 76,200,111,158, 13,254,226, 23,255, 48, 90, 68, 4,227,237,149,214,149,115,253, 89,148, + 68, 89, 30, 56,214,100, 25,115, 33, 9, 70,243, 56,205, 11,150,230,204,177, 95,104, 20, 95,168,202,254,160, 41,253,142, 18,238, +255, 67, 36,252,114,240,255,107,216,151, 15,195,151,194,197,239,223,253, 95,206,254,240,213,191,119, 4,127, 47, 96,123,105,120, + 2, 47,145,155,239, 13, 6,191, 99,138,250, 31,245, 66, 74,165,201, 66, 82,179, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/pinch.png.c b/source/blender/editors/datafiles/pinch.png.c new file mode 100644 index 00000000000..23111e38e50 --- /dev/null +++ b/source/blender/editors/datafiles/pinch.png.c @@ -0,0 +1,315 @@ +/* DataToC output of file <pinch_png> */ + +int datatoc_pinch_png_size= 9880; +char datatoc_pinch_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, + 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, 11,252, 97, 5, 0, 0, 0, 6, 98, 75, 71, + 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, + 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, 19, 0, 34, 13, 86,254,139, 21, 0, 0, 32, 0, 73, 68, 65, 84,120,218,237,125,123, +176,157, 87,117,223,111,173,189,191,115,206,125, 72, 87, 87, 47, 75,178,101,249,141, 33, 2,130, 99, 28, 90, 7, 37,128,199, 64, + 33,113, 9, 36,132, 50,161,201,180, 60,146, 50,204,100,146,190, 8,109, 82,154, 97, 38, 52,153,105,233,144, 25, 50,165, 33, 77, + 11, 56,198,216, 6, 3, 54, 54, 24,219,216, 84,198,182,252,144, 45, 75,178, 44, 99,203,242, 67,207, 43,233,234,222,115,190,111, +175,213, 63,214,218,251,251,206,181, 13, 46,113, 7,211,201,177, 70,247,156,163,115,191,179,191,181,215, 94,143,223,250,173,101, +218,178,101, 11,126,228,227,133,124, 40,138,200,158,237,183, 74, 51,172,135, 11,163,133,227,195,147,115,245,104, 72,192, 91,222, +251,111,143,207, 47,216,135, 88,129,170, 55, 8, 85, 63,196, 94,168,250,177, 63, 49,152, 94, 62,152,158,185,233,154, 79,127,226, +119,127,195, 63, 4, 0, 80, 2, 56,132, 16,171,222, 96, 42, 86,131, 16,171, 71,119,238,233, 79,244,255,228, 67,239, 6, 16, 1, +168, 42, 56,112,136,177, 55,224, 80,197, 94,186,254,138, 43, 99, 12, 33,112,213,171, 62,250,155,151, 69, 0,204,172, 34,204, 1, +213, 96,219, 45,215,170,234,202,213, 51,195,197, 26,139,195, 20,155,254,160,138,246,165, 76,116,199,183,191,202,161,138, 85,148, +148, 2, 51, 51,217,213,125, 77,177,215,191,227,134,171, 99,213,163, 64, 76,196,204, 28, 66, 8, 28, 99, 84, 85, 73, 18,206,216, +180,233, 20, 28, 10, 33, 16, 19, 19, 17,179, 2, 16, 73, 73, 70,163,122, 97,126,241,228,201, 69, 86,128,152, 84, 21, 10, 16, 1, +144,148,234,186, 25,141,234,209,176,174, 71, 77, 83, 55, 49, 75,213,254, 89,154,186, 25,141,234,225,226,104, 52,172,135,139,195, +209,112, 52, 28,214,244,130,246,238,133, 60,104,207,253,183,168, 74, 83, 47,214,139, 39,134, 39,143,141, 22,231,235,225,168, 63, + 57,249,186,127,244, 59,229, 67,225, 95,253,193, 71, 0, 40, 0, 21,168, 16,135,254, 96, 34,132,106,125, 21,214,174, 92,254,224, +222, 39, 0, 48, 84, 1,101, 34,219,150,170, 55,201,161,199, 33, 76, 47,155,188,112,243, 57, 31,125,223,101, 0,162,106, 3, 19, + 97,232, 85, 61,226,208,128,227,183,174,186,178,215,175, 82,147, 38, 38,251,155,207,216, 24,161, 68, 68, 76, 65,131,238,123,242, +192, 83,187,238, 78, 77,154,154,154, 88, 92, 28, 14, 69,170, 42,190,249,162,205, 17,196, 4,132, 94,127,219,141, 95, 7, 16, 3, +139,104, 8, 28, 2,135, 24,152, 41, 4,142, 33,132,239, 94,123,121, 85, 85, 68, 4, 2, 33, 68,149,212, 48, 7,102,230,212,136, +170,134,229, 39, 15,174, 89, 59,203,204, 0, 49, 19, 1, 34, 10,213,166, 73,139, 11,163,147,243,139, 39,231, 23,249,236,243, 54, +130, 73, 85,137, 64,128,168, 74,146,209,168,174,135,245,104, 88,215,117, 83,215, 41, 50,179,239, 28,161,105,146,109,220,112,113, + 52, 90, 28,141,134,163,122, 84,215,117,131, 23,107,239,138,166,224, 55,222,249,214,127,247, 7, 31,144,148, 36,213,169,169,155, +122,161,169,135,163,225,176, 30,141, 14, 30, 60,246,225, 63,250,139, 67, 71,142,255,176, 11, 37,145,199,118,221,169,154, 82,106, + 84,154,212, 52,210,140, 36,141,154,209, 32, 53,195,222, 96,164,146, 86,172, 90,115,221, 23,255, 92, 84, 53,165, 53,155, 54,127, +230, 19,127,250,201,207,127,237, 57, 86, 68, 33,144, 0, 34, 9,204, 68, 96, 86, 9, 28, 34, 0,162,160,154, 84,132,236,227, 61, + 58,118,240,177,153, 21,203,254,244, 35,239, 77, 77, 26, 14,235,255,240,217, 43, 59,183, 38, 73, 69, 64, 32,102,214, 0, 0, 68, +196, 65, 82,163, 42,118, 33, 85, 81,213, 71, 30,218,185,231,193,221,147, 83, 3, 64, 83, 96, 98,250,227,247,191,235,240,193, 99, +159,186,234,155, 17,128, 66,137, 1, 97, 34,213, 16,237,116, 50,171, 70, 1,112,228,200,220,246,219,111, 14, 33,136, 72,211,164, +169,101,147, 41,137, 36,129, 38, 85, 85,213, 21,179,211, 31,121,199, 37, 17, 0, 19,169, 18, 40, 17, 49, 35,129, 88,184,218,118, +243, 53, 68, 0, 72, 85,166,167, 39,146, 72,106, 18, 51, 17,129, 40, 37, 64, 85, 34,162, 42, 98,104,250,253,190, 9,130, 21, 74, +136,223,187,233,107,149, 44, 16, 51,129, 98, 8,118,198, 68,137, 84, 88, 85, 3,139,130,153, 67, 80,133, 6, 68,213, 70, 85, 69, +149, 8, 17,192,241,227,115, 91,175,187,122, 48,209, 15, 33, 80, 96,144, 42,136,137, 84, 65, 4, 82,101, 91,116, 67, 33, 64, 53, +152,229, 76,154, 82,147,154,186,105,154,148,204,118,173,214, 35, 83, 83, 3, 38,178,173, 33,102, 2,152, 25, 68, 76, 4, 37,168, +139, 91, 68, 82, 74,169, 78,245,168,169, 71,173,233, 26, 14,235,168,192, 96,208, 83,144,221, 61,129, 84,148,131, 89, 6, 36,209, +166, 73,146,164,105,252,155,235,186,110,234, 52, 26,214,195,225,104, 52,172, 71,195,122, 52,106,106,179,129, 68,246,189,240,141, + 39, 18,255,114,145,148,154, 36,210,164,228,215,146,166,110,234, 81, 61, 26, 53,163,225,104,104, 79, 70,245,176,110, 94, 60, 59, +249,162, 60, 78, 63,253,116,126,177,174,229,167,127,253,186, 53, 95,250,171, 63,155, 89,177, 76,154, 70,154, 58, 53,139,245,104, +216,140,134,195,225,104, 52, 28,125,250,115, 95,189,246,166, 59,126,164, 7,248, 14,136, 85, 85, 69, 36, 53,154,234,166, 25,165, +122,152,154,197,102, 52, 76,205, 72, 68,164,105, 68,100,114,217,204,247,191,127,207,239,126,236,211,207,121,107,225, 95,254,254, + 71, 64,204, 28, 24,164, 80, 34,216,198, 3,128, 42, 49,113,136, 85,175, 87,245,251,146,210, 57,231,111,222, 56, 25, 84,177,119, +255, 51,221, 11,205,204,204, 68, 14, 1,170, 73, 0, 2, 17, 3,196,129, 69,152, 40, 16, 71, 54, 79, 4,144,106,136,189,122,241, +196,133, 23, 95, 4,209, 55,189,118,243, 31,254,197, 23,187,215, 98, 34, 82,128,178, 93, 87, 34, 85, 59,127, 33,196,138, 67,143, + 57, 4, 98,230, 64,196, 68,180,103,199,174,170,138, 33,240,127,252,208,187,171, 24,218, 11,153,111, 3, 84, 85,137,136,137,137, + 67, 8, 49,132, 24, 98, 21, 98,197,177, 66,136, 20, 2,136, 57,246,142, 30,158, 11, 49,196, 24, 99,228,143,253,246, 59,102,166, + 38,115, 20,164, 2, 21, 95, 63,152,216,110, 42,112,136, 28,170, 80,245, 98,236,197,216, 11,177, 87, 13, 38,175,191,242,218,126, +191, 98, 38,102,226, 16, 98, 8, 31,126,215,165,190,107,251, 30,190, 75,147, 40, 84, 53, 73, 74,182,121, 42, 73,196, 13,163,125, +238, 91, 87, 93, 35,146,136, 8, 80, 17,149,148,154, 38, 53,117, 26, 14,235,185,163,199,191,180,245,193, 72,128,154, 72,149,136, + 72,149,152, 73,148, 57, 48, 88, 57,132,171, 63,247,185, 53,107, 87, 44, 91, 62,145,146, 52, 77,178,211,175,170, 28,192,162, 33, +112, 85, 85, 23,158,119,102,132, 27, 10, 16,145,192, 54, 78, 41, 80, 12,241,166,107,174,152,156,232,157,182,113,141,168,166,148, + 20, 96, 85, 85,149, 32,172,100,174, 34, 4,142, 49,196,192,209, 93, 40, 67, 4,204,182,101,241,214,107, 46, 95,182,108, 98,249, +178, 9, 0, 34,162, 73,137,148, 73,153, 73,153,136,152, 72, 56,144, 42,155,233, 96,230, 72, 68,182,229, 4, 40,120,207, 67,219, +231,158,124,100,102,102, 90,205, 92,155, 67, 33, 85,166, 68, 32, 88,208, 1, 97,102, 69, 34, 5,212,222,117,123,196, 32,238, 85, +183, 93,251,133, 24,130,123,122, 85,201, 38,211,140, 20, 51, 11, 43,137,121, 45, 85, 1, 84, 85,212, 84, 54,130,152, 8,183,124, +227,235, 92, 31,137, 49,128,204,186, 65,137, 8, 10, 5, 17,192,102,191,137,137,212, 60,149,112,131, 36,170, 34, 42,170, 0, 56, +196,234, 83, 31,251, 40,134,135,178,201,238, 60, 20, 12, 2,179,105,190,221, 21, 49, 19,145,170,170,168, 36, 17, 17, 21, 81,213, + 80, 29,120,252,103, 94,125,110, 21,131,125,194,111,131,148, 64,196, 76, 74, 32,133,154,196, 84, 85, 36,105,211,164,212,164,218, + 66,141,186,169, 71,205,209,133,154,167,151, 77, 84,189, 8,102, 82,168,201, 60,159, 65,115, 5,228, 1,164,170,136,136,166,148, + 36,165,148, 36, 53, 77, 74,146,108, 81,170,188,114,213, 12,149, 60, 32,223,145,218, 1, 84, 85,133, 8,252,119, 83, 74,117,146, + 36,230,117, 69, 52, 53, 73,146,164, 36,170,136,253, 65, 15, 38, 30, 85, 34, 22, 17,230,192,128, 42,137,152, 81,179, 5, 72,211, + 72,147, 47,151, 82,106,106, 95, 81, 74, 34, 42, 49,132, 0,179, 35,158, 48,152,139,133, 9,210,215,210, 72, 42,151,179,171,248, + 37, 83,106, 82, 74,162,170,145, 3,131,160, 68,230, 88,225,145, 38,220,169, 38,105,143,152, 57,232,148,234, 58,165,166, 92, 93, +236, 74,120, 73,249,181,141, 27, 55, 50, 94, 74, 15, 63,178, 63,228,177,122,213,204,107,126,230,220,215,188,242,220,153,229, 83, + 83, 19,253, 65,175, 2, 97,254,228,194,137, 19, 39,143,159, 56,121,255,142, 71,119, 62,178,239,209,125, 79,191,136,107,138,170, + 10,224,180, 13,167,124,253,138,191,172,122,189,192, 44,238,199,224, 6, 91, 85, 82, 99, 86, 92,165, 73,169,134,152, 70, 54,191, +250, 54, 49,189, 78, 73, 84,164,105,146,249,212, 71,159,120,230,143,254,252,111,158, 58,112,228,199, 92,208, 15,118,110, 85,181, +160, 80, 96,225,174,154, 97, 16, 73, 13, 84,136,153,205,173, 36,166, 16, 53, 53,196,129, 67, 82, 73,209, 84,215,127, 93, 85,161, +154, 54, 47,159,254,242,127,255,248,212,138,181,189,254,228,227,187,183, 95,254,197,235, 63,251,213,239,188,224, 5, 1,177,234, +167,148, 84,133, 17, 84, 44,202,135,186, 39, 8,170,156,207, 32,177,101, 8,217,246, 10, 88, 41,155,217,174, 38, 0, 32,212,139, +243,163,133, 99, 27,207,123,229,165,151,158, 88,183,114,166, 55,232, 19,225,207,254,230,171,199, 50, 58,241,188, 33,150, 89, 97, + 55, 66,230,149, 24, 16,119, 12, 10, 37, 34,133,197,170, 4, 16,136,137, 3, 0,102, 49,155,101,251,110, 11,179,229,152, 33, 38, +138, 39,143, 62,211,159,152,232,247,123,189, 42, 42,244,223,252,214,101, 34, 42, 73,254,253, 95, 94,241, 67, 98, 62, 37,178,112, + 68, 61,176, 2,204,220, 90,188, 4,115, 66,162, 68, 26, 2,169, 38, 33, 82,102,136,138,237,178,133,243,170,170,106,226, 81, 5, +136, 37,213,203,214,108,218,113,205,141,189,126, 21,171,168,162,162, 74, 73, 64,244,241, 15,254,122,106,210,127,253,219,235, 14, + 31,159, 95,186, 32, 85,133, 10, 65, 4, 10,109, 99, 36,128, 3, 67, 84, 33, 0, 19,155, 76, 82,130, 82, 32, 21, 17,176,146,170, +106, 50,175, 0,181,188,208,238, 71, 85,100,110,110,254,134,175,124, 54, 4,142, 85,176,251, 14, 64, 34,144,144, 16, 0,253,240, +175,189,121,113, 97,248,159,175,184,126,212, 52, 29, 9,185, 10,123, 68, 3, 37, 98, 18, 81, 64,149, 2,137,128, 65, 74, 2, 2, + 36,144, 71, 34,156,213, 31,168,242,174,153,110,163, 30, 53, 55,127,253,218,212, 40, 7, 30, 76,244,221,165, 64, 33, 80, 8, 43, +231, 69, 3, 74,131, 9,252,222,175,191,229,232,220,252,103,190,118, 83, 71, 66,134, 62,152, 19, 97,182, 28, 15,112, 69, 0, 24, + 36, 76,172,230, 36, 85, 8, 65, 85, 45, 1,178,124,106,126,126,225,123,223,188, 94,155, 97,213,175,136,120, 98,114,210,240, 33, + 69, 62,178,170, 66, 66,202,196,194,170, 74, 20, 60,243, 10,210,171,150, 47,155,248,208,219,223,248,205, 7, 30,201,209, 21,204, +197,219,150, 65,109,125,176,188, 84,125, 93,164, 34, 66, 12, 85,243,226,124,244,216,137,219,175,253,242,236,170, 25,102, 2,116, +197,138, 9,145,190, 39, 14, 73, 84, 84, 2, 75, 18,101, 37, 81, 73, 66, 68, 34, 66,137,192,204, 16,128, 52, 4, 0, 49,114,138, + 97,208,175, 46, 56,103, 83,108, 15,134,136,144, 39,211, 4,242,133, 89,212, 66, 12, 21, 34,138,189,222,193,103, 14,108,187,249, +186, 21, 43,150,155,242,158,178,126,117, 86, 66, 17, 40, 51,105, 14, 28,132,148, 68, 29,207,129, 64, 73, 84, 73, 45,202, 83,102, + 86,128, 33,170, 30,185,197, 24,152,185,227, 58,242, 65, 34,129, 80, 22,155,130,152,171,222,224,246,111, 92, 21,208,152, 33, 88, +181,106,133,109, 52, 17,196, 2, 71,130,128, 88, 32,109, 6, 75, 76, 36,148, 60,192, 50, 32, 9,204, 44, 0, 9, 2, 84, 24,164, + 66, 14, 33, 17, 12,107,244,240,211,238, 18,204, 80, 85,114,148,105, 52, 74,119,222,120,117,191,223, 35, 80, 21, 64,176,152, 82, + 1, 21, 16,131, 84, 96,193, 10, 65,153, 57, 65, 73,114,172, 79, 4, 86, 82, 38, 74, 30, 64, 51,147,138,130, 1, 16,105, 74,212, +181,238,154, 99,160,152, 1, 74, 54,189,230, 64,135, 15, 31,190,243,250, 47, 79, 45,155,100,230,254,160, 79,190,226,130,100, 18, + 64, 12, 85,201, 38,185,132,170,118,195, 46, 32, 75, 31, 52, 3,168,100, 73,158, 64, 72, 41,219, 22,143, 67,237,132,231,184, 26, + 32,102,128, 36,201,103, 62,241,241,151,191,226, 12, 14, 60, 57, 61,153,197,132,188, 59,157,151,182, 45, 12,133, 66,149, 13,219, + 36,130, 50,145,144,197,140, 68,194, 32, 16,131, 85, 21, 16,245, 92,201,147, 65, 81,149,164,146,227,105, 15, 97, 85, 35, 1, 71, + 15, 60,241,223,254,211,127, 57,243,236, 83, 95,177,249, 76, 38,246,208,218,112, 93, 17, 38, 86, 86,183,231,228, 33,170,171,152, +105,155, 18, 88, 72, 13,119, 98, 17, 97, 82, 9,204,162, 0, 68,139, 94,185, 44, 84,196,162, 79, 17,105, 35,124, 81, 17, 1, 52, +108,218,180,233,192,246,123,206, 60,231,180, 85,171, 87,144, 47, 7, 14,211, 0,228, 97,186,173, 79,137, 88, 29, 48, 53,185,193, +126,195,101,103, 54, 11,237,134, 64,115, 88,239, 0,141,166,198,158,120, 20,157, 26, 95,156, 5,196,199,134, 18, 1,156,186,241, +148,101,203,167,216, 48, 87, 87,121,136,154, 89, 26, 87, 32, 85,102,130, 42,152,203, 89, 16, 85, 40,212,110, 62,137,231, 71,201, + 48, 74,179, 72,234, 33,115,202, 1,182,201, 38, 63,207,121,135, 2, 26, 21,152,158,158, 12,129, 91,157,161,188, 59,118, 30, 68, + 64, 76, 12,219, 28, 95,112, 62, 28, 98,255,249, 86,136,228, 60, 71,218,191,165,236,142, 1, 97, 37,103,232,138,202, 69,168, 26, +205, 80,122,102, 72,202, 32,215, 97, 82,162,110, 40, 1,102,219, 15,147, 72, 22,137,228,115, 34,174, 34,157,117,228, 39,150,135, + 53, 46,145,166,105, 44,191,203, 73, 72,155,150,168,104, 4,192, 33,128, 60,219, 5, 20, 96,144, 90,145, 68, 85,153,217,160, 71, +117,181, 83, 91, 77, 89, 73,251, 92, 92, 98,101,203,252,190,187,226, 73,226,169, 79,155, 30,149,172, 81,196, 78,217,189,143, 60, +221, 38,174, 89, 93, 8, 93,219, 99,206,218, 36,147, 83, 73,136, 8, 90,227,150,101,166,238, 73,180,251,112,217, 37,180, 55, 34, +229,111,181,163,150, 68, 79, 38,188,196,240, 70,203,205, 94, 58,139,217,178,101, 11, 63, 7, 94,241, 19,125,188,180, 50,215,151, +226,130,126, 68, 42,253,218,159, 61,255,172, 77, 27, 94,126,206,233,147, 19,253,233,169, 65, 21,195,194,194,112, 97,113,120,236, +248,252,190, 39, 15,236,216,253,216, 29,247,238,250,127,184,160, 24,195,207,110, 62,255,183,223,123,217, 27,183, 92, 36, 2,145, +198, 14,169,170,165,173,102,101,107, 17,131,120,154, 38, 73,106, 26, 21,173,235,230,150,255,125,255, 85,215,223,190,235,209,253, + 47,206,130, 62,250,251, 31,120,223,123,222, 65, 28,114,196, 47, 65, 36,160,103,222,200,114,106,226,134, 67, 72,137, 57, 5, 9, +137,154,192,146,180,138, 41,165, 80,197, 75,126,241,130, 75, 94,255, 26, 5, 82,146,255,113,229,141, 95,248,202,205, 63, 38, 0, +242,201, 63,249,195,119, 94,118,169,122,128,211,245,147,185,114,102, 72,177, 97,199,169, 17, 73,146,106, 73,141,106,146,100,117, + 53,119,102,102,157,137,169, 55, 24,196,106,112,244,224,193,207,125,225, 27,255,243, 43,223,249,191, 58,246,225,151,223,254,214, +151,159,127, 46,135,216,130,145,212,134,124,157,160, 80, 75,216, 81,222,203,128,187, 85,221, 99,136, 49,132, 64,196, 34, 41,132, +222,170, 13,103, 93,116,193,249, 23,156,185,238,222, 7,247,254,240,124,190, 60, 54,109,218, 20,137,152, 67, 48,185, 8, 18, 81, + 80,241,148,193,162,126, 37, 2, 49, 81, 80, 82,166, 0, 86, 81,101, 46,113,207, 24, 64, 89,170,227,146, 70,243, 71,246,175,220, +240,178, 87, 93, 52,124,251, 93, 59,215,172,153,253,196, 95, 95,213, 36,249,209,199,158,136,136,130, 69,253,204,172, 4,199,108, + 41,199,105, 84,240, 89,134,191,201,234, 47,131,177, 14, 80,254, 48, 19, 5, 14, 85,168, 6,196,225,240,147,187, 79, 61,231, 85, + 34, 18, 2,255,241,251,127,237,159, 93,246,134, 23, 96,135,168, 36, 45, 4, 16, 19, 59,192, 97,238,191,120, 90,143, 68, 74,138, +195, 32, 34,182, 53,181,127, 24,129,217,185, 19,196,145, 57, 52,163,197,201,137,126,136,204,129,206, 60,117,237, 39,254,197,123, +166, 39, 6, 63,218, 48,230,192,213, 3,120, 3,102,140, 81,209, 89, 25, 90,240,155,136, 40,112,126,184, 12, 51,220,239,107, 34, + 34,102, 73,205,196, 68,223, 94, 4,102,168,252,235,127,122,217,133, 47, 63,251,135, 44,136, 90,124,186,171, 7, 5,216, 35,127, + 65,174, 76,140,172,200, 68,246,199,191,158,179,156,145,115, 2, 77, 77, 61, 26,246,251,189, 24, 99, 8,158,128, 51,225, 87,182, +252,220,251,127,249,141,207,183, 32,237,220, 59, 90,244,169, 77,199,104,108,155,136,152, 25, 28,172,194,212,217, 32, 6, 51,152, +236,143, 26, 70, 68, 97,215,125,119,199, 94,176,130, 84, 8,108,171,102,194,105,235, 87,125,224, 87,222,240,220, 91,150,115, 71, +133,106,174,198,105, 27,190,154, 72, 40, 87,154, 57, 16, 49,187,234,176,169, 14,136,193, 1, 84,196,100,105,106,154, 94,121,234, +206,251,118,196, 24,137, 77,168, 28, 66, 96, 14,196,204, 68,235,215,204,254,243,183,253,210,115, 75, 40, 99,114,121,175,180,200, +134, 75, 49,199,144, 60,246,141, 51, 73,133,252, 77, 33, 47,221,151, 37, 41, 77,205,110,184,225, 75,151,171,192, 5,227, 57,175, +137,210, 43, 82,167,172, 94,241,155,151,252,195,241, 5,101,140,176,108,149,125, 21,217,175, 22, 41,217,119,219,154,202,177,178, +122, 40, 71,175, 30,134,200, 33, 48, 71, 85,141,253,233,235, 46,255,226,201,249,197, 88, 5, 14, 33,216, 57,117,187,155, 41, 16, + 76, 49,240,134,181,179,175, 61,239,204,174, 47,115,132, 16,228,224,162,225,141,142,112, 89, 82,172, 4, 73, 68, 65,145,152,130, +128,140, 99, 97,124,140,140,120,121,188, 13, 96,207, 67, 59, 31,126, 96, 87, 8,220,235, 85, 86,247, 32, 34,130, 64, 36, 87,235, + 8, 74,162, 76,172, 85, 85, 93,252,202,243,118, 63,241,244,209,249,147,249,216,103, 52,206,109,144, 82,123,198,188,182, 12,152, +212,178,249, 97,211, 24, 23, 85,100, 14, 28, 98,136,131,199,246,254,224,250, 47, 93,253,216,158,189, 19,147,253, 94,191, 10, 85, + 8,129,221,154,229, 4,152, 28,202, 37, 38,178,210,112,175, 23,223,243,134,215,181,192,185,217, 31, 2,137, 10,188,176, 5,175, + 54, 19,145,230,194,160,167, 68, 6,168,185,149, 32,143, 91,122,247,108,221,250,216,206, 29,147,211, 19,211,203,167,138, 82,166, +148, 60, 85, 49,224, 38,131,197, 29,127, 73,166,233,253, 94,124,199, 47, 92,120, 8,136, 84,116, 86,197,234,117,230, 58,197,234, +137, 66, 32, 85,101, 34,129,146,182,198,192, 33,107, 5,223,119,199,247,159,216,253,224,204,202,153, 85,107,102, 85, 33, 42, 80, + 52, 41, 1, 10, 4, 17, 9,196, 9,106,216, 72, 54,247,134,195,219,145,112,205, 60,101,197,244,193,185,228, 24,163,230, 4,153, + 44, 35, 52,101, 2, 9,219,155, 2,144, 20,204,193,153, 46,213, 13,215,124,165,207,139,177,138,107,214,173, 46,169, 26, 9,139, +104, 12, 33,137, 48, 43, 84, 5, 8, 12, 17,219, 10, 7,142, 50,152, 97, 88, 22, 89,133, 30, 72,177, 4, 24,226,187, 84,242,122, +131, 27, 5,148,209,112,114,128,161,234, 15,110,249,198,181, 58, 58,182,124,178, 7,244, 13, 95, 55,144,209,150,204,140, 36, 6, + 22, 41, 49, 83, 74,206, 13, 3, 41,105,177, 33, 16,119,142,238,225, 13, 0, 45,184,134, 59, 79,241,163, 66, 4, 17,205, 88, 35, +140,230, 8,142,247,220,254,221,209,177,167,251, 33,208, 96,160, 14, 70,152, 57,101,135, 3, 12,233, 35, 82,127, 9,175, 74,216, +193,135,136,171, 79,198,162,179,164, 12, 59,136,121, 61, 32, 15, 94, 61, 42, 83, 45,208, 35, 1, 26, 98,181,109,235,214,122,110, + 63, 7,142, 85,116,213, 44,184,132, 42, 84, 58, 37,109,247,180, 89, 30, 84, 46,231, 88,168,175, 40, 31,138, 44,167, 78,144, 79, +230,222,225, 78, 72,213, 1, 6, 16, 51,239,217,185,251,192, 35,247,199, 42,112,224,178,159, 25, 60,202,159, 36, 38, 41,110,208, +235, 54,228, 26,227,247, 72, 4, 17,151, 24,131,149,100, 73, 96,215,205, 58,152, 72, 32,234,251,156,183,106, 56,170,183,126,243, +202,233,169,126,213,143,112, 12,132,224, 0, 43, 72,196, 0, 45, 34, 77, 73,137, 12, 98, 83, 64,202,173,163,227, 20,179, 92,200, + 66,210,241,149,248,209,139,173,253, 83,182, 50,134,221, 61,113,216,250,157, 27,185,158,155,158,238,119, 64, 71,167, 66, 88, 69, + 95,216,106, 34, 25, 20, 53,194,152,241, 54, 60,196,132,162,108, 22, 64,196, 12,145,236, 58,115,229,175, 91,112, 43, 56,117,190, +158, 2, 68,243,243, 39,239,191,249,218, 16, 25, 76,101,237,121,107, 51, 47,128,136, 76,162,108,154, 10, 17, 47, 75,229,186, 91, +177, 90,110,170, 57,151, 40, 50, 40,239,200, 78, 94,145,235,144, 69, 27, 46,214,106, 80,221,242,245,175,208,232, 40, 7,143,101, +205,163, 65,161, 25,245, 51, 93, 85,136,111,128,170, 85,105,124,189, 12, 36,223, 72, 15,236,216, 62, 75, 74, 4, 22, 36,171, 60, +180, 24,146, 5,135,118, 5, 70,222, 15,230, 48, 28,214,159,255,212, 39,211,201,195,174,173, 29,141,211, 66,133,206,134,157,193, +118,176,149, 72, 65,170,229,132, 83, 27,128, 3, 37,190,117, 79,159, 47,163,218, 69,241,181, 85,106,179, 2, 33,196,135,238,217, +122,223,109,183,174, 91,191,134,152,252,174,221,169,105, 23,147,224,142,223, 45,130, 45, 6,184, 4,229,153,255,231,165, 10,171, + 42, 16,224,245, 71,237,174,201,131, 6,147, 80,180,156,230,214,107,255,118,215,246,135,206, 58,231, 52,183,154,165,118,150, 53, +171, 5,246, 75, 85,130,178,129,207, 37, 72, 21, 55, 74,201,107, 41,146, 89, 58, 90,206,147,139, 36, 3,183,190, 20, 95, 29, 0, +112, 83,215, 55, 93,241, 87,119,221,126,215,166, 51,215, 83,134,193,139, 37,113,183,219, 41,105,184, 9,227, 54,109,115,179,134, +236,160,156, 29, 90,238,192,239, 98, 9,248, 40, 2, 93,242,128, 2,136, 15,109,187, 99, 98,184,120,238,203, 78,143, 49, 80,135, + 34, 3,234,218, 44,245,131,222,205,136,188, 82, 46,102,183,178, 45,182,178,155,182,216,169, 85,176,178, 96, 90,116,219,241,207, +177,141, 3,192, 71, 14, 29,159, 93,185,124,114,122, 2, 68, 0,117, 75,240,157,117,103, 82,151, 39,107,109,158, 68,134, 33,147, +170,149, 35, 93, 59,202, 6,149,125,145, 2, 97,136,136, 10, 32, 16,237,110,156,159, 33,174,122, 97,118,229, 50,143,122,139,216, +129, 49, 17,181, 5,116, 43,205,106,166,237, 43,216,244,153,168,115,122, 51, 55, 34,215,120, 50, 58, 98,128, 48, 20,218, 86,127, + 92,108,134,113, 3,136,189,170,234,247,123, 28, 76,232,214, 27, 64,224,165, 80,104, 7,191,206,117,190, 76,116,204,220,167,124, +134, 5,154, 75, 79,154,161,244, 86, 54,185, 2, 81, 86,216,194,220,102,135,170, 94, 21,171, 88,140, 7, 88, 11, 74,222,234,147, + 27, 10, 33,116,178,165, 12,161,231,114, 7,188,140, 80, 54,194, 1,242,182, 4,145,151,213, 22, 33, 84, 10,211,196, 41, 27,198, +168,107, 97,123, 21, 34, 86,234,236, 87,121, 65,218, 69,245,187,187,163,237, 66,114,217,165, 43,137,188, 8, 53, 44,110,188,110, +132, 22,212,183, 45,179, 20,204,190,217,171, 43, 96,183,113,228, 96, 67,113,119, 86, 94,149,220, 32,161, 29, 73,136,168, 2,173, +140,140,157,233,148,159,178, 83,229, 81,222,247,109, 53,131, 0, 32,102,163, 2, 37, 49,184,200, 3, 23,245,128, 86,225,117,160, + 28,184,121,125,180, 35,237,252, 52,111,129,221,183,223,120,106,203, 26,157, 83, 38,232,252,174,148, 67,111,174,195, 67, 46,109, +195,125, 5,108,227, 60, 87,233, 0,101, 29,139, 82,214,209,170,106,187, 23, 42, 99, 91,150,212,235,118,121,251, 82,174, 30,105, +231, 29,128, 98,139,159, 88, 68,202, 96,180,208, 84,201, 21, 61, 25,209,156,174, 26,115, 64,199,202,100, 42,229, 47,163, 75,182, + 27,229, 39, 42,101,237,150,206,118,251, 97,131,168,250,130,168,132,187, 0,148,148,141,217,160, 86,248, 47,118,200,255, 88,222, + 37, 93,107,215,249,150,148,141,138,189,239, 48,110, 6,115,219,181,182,139,213,142,165, 2, 40, 62,121,248,196,182,221, 79,122, +200,159,195,169,238, 41, 43, 46, 92, 75,169,172,252,236,152,144,226,144, 74,205, 81, 91, 27,132,103, 73,177,221,212, 82, 15, 53, +230, 22,109,217,178,229,200,145, 35, 71,143, 30,125,169,149,133,126,178, 15, 85, 93,177, 98,197,236,236,108, 4, 48, 55, 55,247, +248,227,143,255,189, 80,158, 77,242,156,157,157,229,191, 23,196, 79, 89, 57,241,167,172,188,249, 99,105, 38, 66, 8, 85,140, 6, +250, 26,146,102,102,175, 73,233,255,115, 1,205,206, 44,251,197,139,127,238, 21,231,159,121,193,230,151,157,118,234, 41,193,201, + 61, 6,101, 26,107, 82,243,223, 41,123,206, 84,194,141,194,175, 40, 84, 15,163,247,207,205,205,223,187,227,145, 29,123,246,109, +221,246,208,193, 35,199,126, 10, 4,116,206, 89,167,191,249, 77, 23,191,246, 53,175, 92,191,110,237,105,235,215,132, 24,205,185, +138, 36, 56,131,215, 76,189,100,103,107,205, 29,170, 42,176, 4,199,159,104,167,217, 81,116,140,208,227,229, 89,136, 78, 79, 79, +174,223,176,250,210, 95,186,208,136, 45,246,145,197,225,232,192,161,163, 79, 60,117,232,222, 29,123,239,188,111,247,254,103, 14, +255,100, 76,245,235, 95,255,250,147,243,199,215,175, 93,241,143,223,118,201,235,126,254,130,137,193,192,130, 96,203,138,199,242, +141, 76,207,201,175, 68,187,113,163,165,124,200, 33, 77, 17,135,197, 27, 72,240,240, 39,105, 55,171,135,135, 77,206,116,119,206, +108,139,200, 59, 60,196, 20, 67, 0, 81, 83,167,131,135,142,222,120,235,221,183,223,245,224,222,199,159, 62,254,194,138,202, 63, +222,227,244,211, 79, 63,227,140, 51,162,170,190,239,159,188,243,178,183,189,169,228, 95,172,158,197, 27, 45, 17,100, 11,135, 5, +175,160,160, 42, 78, 93, 85, 81,163,181,170,168,146, 26,135,215,152,156, 66, 8, 76, 42,198,172, 85,101, 69, 98, 18, 40,137, 8, +192,202,106,228, 88, 4,151,115,102,180,129,160, 34, 74,109,132, 7, 67, 61, 3,243,212,242,169, 21,171,215,157,183,249,213,191, + 35,105, 97,254,232,220,161, 67,251,247, 61,243,191,174,190,233,219,119,108,119, 90,213,139,126,196, 20,224, 16, 67,236,185,122, +183,169,170, 90,251,154,113, 20,200,159,104,102,119, 10, 21,254, 61,121, 73, 5, 90, 18, 71,203, 20, 4, 2,107, 86,131, 8,236, +137, 18,131, 21, 2, 17, 13,185,135,168, 91,217, 53,112, 40,116, 17,151,124,138, 21, 77, 61,108,234, 81,172,250,131,169, 21,179, +235,206, 90,181,254,156,181,167, 61,179,124,102,217,235,206, 63,107,238,232,137, 39,142,204,221,112,231,246, 23, 87,173, 98, 41, +198,112, 6, 88,168, 77,248,237,172,229, 34,172,107, 84,174,153,147, 66,172,186, 33, 68, 65, 33, 48,198, 62,140, 8,172,214, 32, +200, 74,234,210,177, 78, 3, 67,243,124,160,129,122,149, 80, 11, 20, 55,142, 88,143, 39, 23, 45,250,163, 11, 39, 14, 47,206, 31, + 29, 44, 91, 57,123,202, 89,175,156, 89,245,204, 83,135,158,121,230,193,243, 54,174,219,124,246,198, 24,195,161, 99,243, 55,220, +113,223,142,189, 79,168,234,139, 32, 32, 34, 16, 7,104,242,178, 2,137,118, 22, 70,234,146,112,168, 65, 29,170,202,121, 45, 8, + 44, 36,206, 76,181,234, 66,254,105, 84,126,199,191,140, 96,238,232, 57,219,201, 37,167,209, 63,203, 52, 62,235,133,162,240,110, +141, 20, 2, 85, 29,206, 31,109, 22, 79,174, 60,245,220,141,103,109,122,224,158, 93, 85,140,177,138,129,121,237,202,229,239,125, +203,197, 0, 53, 41, 93,254,205,239, 61,184,119,223,223,209,139, 17, 89, 77, 78,189,252,235,132,236, 82,187,179, 35, 35, 74,185, +232,105,124,157,150, 17,236, 29, 37, 25, 27, 80,237, 0,143,249,247,137,160,156, 33,118, 2,132, 56, 44,213,149,231, 19, 19,181, +180, 27, 71, 59,188,189,144, 37,141,234,197,249, 88,245, 38, 39, 6, 85, 21, 66,198,111,172,125, 55, 6,126,207, 91, 46, 38, 96, +238,196,201,207, 95,119,219, 19, 7, 14,255,248,110,222,165,130, 92, 22,104,241, 77, 47, 22,228,134, 19, 42, 12, 97, 42, 88,190, +116, 0,244,194, 13, 81, 87, 23,151, 35, 49, 72,160, 12,101, 82, 41, 71,185,212, 91,116,236, 28,117, 0,177, 92, 17,200,245,247, + 92,169,245,108,157, 1, 28,124,242,169,193, 68,223,152, 84, 86,156, 70, 78,238,137, 84, 69,103,166, 39, 63,248,206, 75, 82,147, +182,110,127,248,134, 59,238, 79, 47,216,162,199,231,214,106,152,254,119, 72, 23,237,130,149,168,219, 31,133, 92,143,113, 89, 88, + 5,205, 0,105, 51, 73, 68,156, 97, 80, 98, 27,133,160,118, 74,115,223, 16,193, 26,154,203,238,180,224,115,174,106,160, 16,206, +178,193, 82,104, 74,245,228,204,154, 67, 79,239,127,122,255,211, 85, 47,134,192, 28,216,160, 35,115,126,102,226, 4,106, 13, 38, + 20,194, 63,120,213,121, 63,191,249,156,199,246, 31,188,226,166,173, 39, 22, 22, 95,184,128, 60,242,104, 75, 9,228,229,101, 63, + 47,185, 45,135, 8, 38,253,194, 2,104,195, 3, 85,182, 82, 80,203, 50,202,112, 49,172,120,166, 10,205,214,217,218, 22, 20, 80, +134,159,109,165,214,175,121,176, 69,212, 61,133, 70,251,178,253, 75,169,158,154, 93, 63, 92, 92,184,251,187,223, 29, 46, 14, 99, +229, 83,114,138, 90,107, 32, 3,193, 45, 32, 73, 34,230, 65, 1, 58,125,195,154,223,123,247, 91, 15,205,157,248,226,141,183, 47, +105, 32,123, 78, 1,185, 58, 82,113, 94,230, 95, 36, 87, 39,160, 54,128,133,188, 33,128, 69,196, 82, 45,223,114,133,245,201,136, +112, 62, 5, 12, 21, 82,136, 88,255,111,128, 42,121,239,182,118, 91, 32, 41,135, 10, 46, 36,116, 72, 27,185, 93,110,137,207,151, +212, 48,199,229,171, 78,125,244,161,237, 59,238,121, 96, 97, 97,200, 28, 10, 65,170, 88, 70, 23,179,178,136,130, 17,136, 29,121, +166, 64, 44, 20,121,213,138,233, 15, 94,246,198,253, 7,142,124,254, 91,223,171,155,244,252, 2,242, 3,212,130,115,176,124,202, +171,109, 25, 39,183,144,198,172, 53,179,151,163, 33,196, 36, 34,185, 18, 33, 45,179, 7,129, 88,189,123,219, 66,109, 10,153, 20, + 97, 98, 45,167, 74, 58,231,166,195,167,234,170,183,253, 76,137, 56, 76, 78,207, 62,249,232,158,219,110,188,121,254,196,130, 49, +118,109,178, 8,185,159,180,222,242, 82,239, 70,135,152, 1,111, 73, 18,114, 48, 23,113,195,154,149, 31,249,213, 75,239,223,243, +248,141,119, 63, 32,207, 10, 11,198, 52,168,236,161,251, 98,167,212,120, 75, 13,178,239, 22,199,104, 11,231,198,235,202, 76,240, +134, 52,235,234, 42,196, 2,159,109, 65,197,126, 81,167, 24, 78, 94, 75,106,139, 75,109,123, 96,107,182, 5,138,222,196,244,145, +131,207,236,184,251,142, 35,135,230, 36, 37, 34,138, 49,112,185,211, 22,161, 85, 5, 19,180,176,215, 60,188, 16,120,144, 42, 96, +102, 83,129, 16,216, 62,243,170,179, 55,158,119,218,186,107,183,222,251,232, 83, 7,158,199, 6, 1, 68, 10,209,210, 97, 66,121, +194,145,189,206,158,206,152, 68, 74, 48, 73,121, 85,156,205,144,216, 15, 8, 40, 16,140, 70,163, 25,249,167, 14,207, 78, 59,229, + 90,237,248,174,165, 27,200, 33, 46, 46, 46, 62,190,103,239, 19,143, 60, 50,127,252,132,209,224, 98, 12,228,211, 18, 44, 32,202, +198,221, 89, 22,110, 77,213,249, 13, 76,240, 1, 20,217,122,122, 29,212, 38,130, 33,114,225, 6,188,253,117,175,222,187,255,224, +117,119,222, 87,220, 92, 44, 16,183, 51,216, 76, 38,109, 96, 75, 12, 47, 85,230, 74,166, 26,109, 65,209,126,150,201, 38, 76,104, +113,177,118, 36,115, 83, 99,238,221,109, 97, 0,103,122,181, 7,136, 10,227,149, 1, 90, 92, 88,120,102,255,147,187,239,187,231, +196,177, 99,253,193, 32,132, 16, 2, 79, 78, 77,118, 34, 45, 47,205,120,199,100,158,153,144,177,134,252,161,194, 90,113,153,104, + 41,144,138,151,167,137, 4,198, 7,141, 21,247, 17,207,218,176,250,183, 46,253,133, 47,221,250,125,203,189, 98,199, 8, 82,233, +145, 82,251,207,212, 73, 75, 64, 82,104, 44,153, 80, 32, 78, 71, 17, 17,235,173, 22,107,166,182,110, 96,175,170,139,157, 32,103, +180,100, 38, 79,135, 61, 98,204, 60, 94, 88, 24, 61,112,247, 93,251,118,237,236,245,170,254,160,226,200,253,126,156, 56,101,181, + 15, 73, 50, 11,146,164,116, 46,122,177,214, 61, 40,137,183,126,149,102, 38, 63,216,172, 44, 16, 23,156,183, 16,147, 66,189,248, +175, 86,154, 85, 86, 86, 14, 28,180,138, 58,232, 85,239,122,253, 69,251, 79,142, 78,104, 62, 98, 37, 46,244, 64,208,200, 37,146, +163, 68,207,200,109, 10, 9, 76, 10, 22, 20,219,239,100,119,230,100, 19,245, 34,173, 19,246, 60, 4,245,183, 60, 20,102,102,142, +113,223,163,251, 30,222,126,255,201, 99,135, 2,201, 96, 98, 16, 98, 88,183, 97,181,118, 66, 71, 83,142, 96,160, 8, 52, 82,244, +210,141,177,172, 40,148,250, 24, 49,135, 12,149, 88,251,157, 49, 93,132,164,112,159,114, 16,235, 34,102,134, 10,132,192,196,202, +162, 76,129, 89, 3, 87, 49, 40,116,162,233,157,176,222, 63,228,169, 89,153, 52,208,209,201,174, 33,101,182, 29,243, 39, 30,255, +145, 26,123,202, 13,121, 38,170,250,176,152, 14,165,138,137, 67,168,155,116,240,233, 3,123,119,238, 56,184,111,239,138,217,233, +170,215, 27, 4, 12, 86, 78,119,183,169,216, 20, 21,207,110,148, 52, 55,218, 43, 11,107,112,169,120,216, 33, 57,201, 81,120,151, +175,177,153,156, 77,196, 66, 66,106, 92, 11,231,132,100, 99,132,164,206, 13,164,150,216,201,196, 26,153,153,164, 75,126, 35, 51, +179,206, 66,242,195, 45,157,198,113,228, 88,217, 40,145, 57,172, 83,101,133,128,193, 46, 75,235,117, 86,181,254,104, 24, 9,127, +238,232,209,187,110,187, 5,195, 99, 19, 19, 3, 14, 28,128,117, 27, 86,163,205, 99,197, 54,220, 90,160,179, 30,171,187,159,108, +164, 74,239,106,209,115, 21,205,173, 1, 32, 19, 25,231, 92, 91,139,245,241,140,210, 37,229, 23, 81, 8,169, 88,164,175,109,237, +214,233,221, 42,204, 29,186, 34, 50,165,211,236,173,104,135,239,210, 33, 0,117,243,234,241, 4,197, 12,142,150,123, 99,238, 85, +189,131, 7, 14,238,190,255,238,250,196, 28,161,137, 85, 92,214, 39,244,167, 58,160,143, 31,186, 76,202,133, 72,241,246, 93, 35, +149,169,238,158,117, 8, 10, 97, 80, 75, 74,211,110,171,150,192, 34,255,166, 40, 58,195,107,236,252,251,189, 42,105,167, 17,194, +237,169,169,138,245, 9,140,185,249,220,162,233,188,207,226,159, 41,119,106, 42,145,169,166,106,235, 59,218, 8,132,168,170,170, +147,243, 11, 79,252, 96,239, 99, 59,183,247,163,196, 94,143,129,254, 32, 0, 1, 57, 16, 29,111, 50,112, 58,175,138,218, 8, 35, + 51,115,236,176,174,249, 4, 45, 49,136,115,244, 40, 31, 33,100, 95,130, 14, 75, 9, 93, 90,170,199, 31,222,194, 89, 88, 84,217, +202, 83,203,216,131,228,103, 29,114,101, 39, 14,242, 9, 5, 68, 45, 59,216,163, 90,178,245,162,228,141,173, 49,226,220,190, 31, +134,139,139,247,220,126,139, 12,143,218,136,201,233,201, 88,170,250, 57,232,247, 14,238,150, 15,159,223, 68, 62,140,206, 15, 80, + 55,192, 70, 70,130, 74, 73,221,209,114, 42, 41,235,172, 81,184, 10,108,144,161,134, 18,106,230,184,181,205, 34, 45, 96,241, 20, + 79,198, 2,117, 63,199,153, 41,138, 49, 13,114, 38,146, 13, 62,107, 53,213,103, 12,138,213, 24, 37,235, 14,135, 80,245, 6,187, +119, 60,184,255,225,237,172,117,140, 28,137,208,239,217,198,218, 28,144, 12, 30,105,230,193, 81,185, 71,195, 36, 61, 91, 50,219, +215,198,211,121,210,137,182,116, 67,219, 84, 23, 52,149, 35, 10, 15,206,178,202,251, 72, 50,143, 93,213,134,186, 20,205, 18,103, +133, 43,196,246,188, 37,185,182, 88,101, 9, 92,233, 57,202, 62,133,176,101,231,179,116, 56, 88,208, 14, 64, 99, 8,117,147, 30, +219,179,107,223,195, 15, 68,170, 67,136,189, 64,160, 64, 90, 80, 32,202,208, 98,230,188,186, 97,202,249, 94,154,154, 15, 41, 0, + 0, 6, 9, 73, 68, 65, 84,217, 78, 29,107,142,179,163,150, 67,164,188, 23, 30, 16, 3, 45, 11,144,196, 25,145,121,140,105, 86, + 24,111, 34, 39,178,224,141, 24, 98,120, 1, 41,196,189, 71, 14,155,164, 3,129,151,249, 54, 58, 30,199,211, 24,162,152,209,247, +156, 99,101,250, 73,113,113, 2,218,187,123,215,174,187,110,157, 89, 54, 9,166,126, 36, 32,162,164,172,228,243, 50, 11, 51, 14, +220,181,230,148, 89,187,118, 91,166,149,197,239,101, 98,173,207,221,117,138, 51,160,176,236,128, 90,194,139,123,156,194,136, 86, + 44,137, 93,145,167,139,104, 65, 81,252,150,144,141, 51,186,124,193,238, 1, 83, 64,159, 5,138,199, 18,165,168,163,163,140, 60, + 3,130, 3,115,140,247,223,121,231,206,187,111,159, 93, 49, 21, 3, 47, 95, 54,137, 22,157, 54,104,158,218,200,184,237, 69,107, + 49, 82, 90,178, 39, 12, 71,132,124,102, 17, 21,108,204, 91, 69, 50,238, 98, 94, 63, 3,220, 45,163, 30,153, 20,221,190,118, 21, +210, 22, 32,105,161, 54,205,164, 96, 45,138,108, 57, 66,219,146, 42,186,148,156,220, 2, 89,157, 72,218,134, 99, 24,128, 79,196, +251, 31,219,123,251, 13,215,203,226,241,181,235, 86,173,154,157,118,255,104,199,153,199,116, 35,139,164,228,181,185,101,144,150, + 6,232,237,145, 99,176,114,174,106,184, 71,102,243, 14,197,172,163,228,155,217,177,101,113,249,165, 73,199,246,199,148, 54,119, +145, 0, 12,167, 68,187, 27, 20, 29, 35,200, 89,113, 79,159,205, 0, 46, 53, 75,167, 75,151,153, 79,196, 32, 58, 57,127,124,231, +182,173,183, 93,255,173, 85,107,103, 79, 89,191,154,103, 86, 41,101,185,208, 56,199,170,133,140,157,208, 72,109, 64, 11,166, 49, +136,154,115, 54, 92,224,118,180,209,137,230,217, 70, 68, 98,236,107,111, 18, 26,219,134, 37, 49, 88,246,214, 25, 1,106, 21, 23, +212, 33,255,102,244,198,230,226,150, 17, 77,237,204, 13,109, 9,177, 45, 69,182,101,111,251,100,152,208, 52,114,252,232, 83,219, +110,185,241,238,173,219,167,167, 7,103,158,125,218,228,244,128, 10, 55, 1,173,239,163,220, 0,147,141,174,150, 65, 73,109, 3, +194, 56,217,218,199, 53, 22, 35, 1,109, 39, 62,161,141,193,115,197,195,125,149,118,139, 61, 34,101,170,137, 59, 47, 31,129,164, +121,214, 72, 54,240, 93,232,191,220,174, 64, 84,138,246, 56, 43, 79,180,203,141,237,144,152,219, 92,199,105,156, 71,159,126,236, +219, 87,254,245,246,109, 59, 69,244,148,245, 43,215,172, 93,217, 31,244,172,155,174,205,209,168,147,209,242, 56, 38,173,221,202, +222, 82,233,160,219, 46,150,251, 6, 12, 67, 65, 17,133, 90,232,239,247,218, 54, 63,117, 58,213,168, 19,236,160,237,114, 27,107, +184,149, 78, 49,195, 25, 2,153,148, 9,237, 78, 31,201,242,145,150, 79,185,148,219, 94, 58, 18,136,104,251,182, 7, 14, 78,198, +126,191, 90,189,118,118,197,236,242, 94,191,151,193,111,237,204,171,234, 22,239, 58, 53,161,204,198,207, 1,126,110,119, 35, 94, +218,209,211,225, 58,151,222,106,227,177, 90, 6,200,170, 98, 95, 85,154,208,198, 65, 52, 67, 20,198,106, 45,232,212,165, 13, 40, +238,240,229, 11,109, 92, 51,215,214, 21,164,149,133,100,104,169, 52,241,118,186, 73,218, 35, 6, 76, 78, 13,102, 87, 46, 91, 62, + 51,221,235, 87,206,188, 55,174,187,215,110,180,244,218,228, 14,185,238, 92,188, 37, 21,163,142,157,176, 4,166,227, 65, 41,183, + 67,162,160, 39,153,185,128,210,252,209,137, 88, 58, 22, 83, 59, 65, 75, 75, 92,109,155, 28, 92, 54, 29, 25,117,105,210, 6,125, +119,232,235, 99, 77, 0,250,156,143, 44,160,170, 87,205,204, 76, 79, 78, 77,246,250,222,205,157,239, 73, 57,171, 56, 59,131,131, +218, 28,251,249,248,161,109,172,140,210,158, 83,144,127,205,227,128, 60,242,167, 12,209,169, 27,180, 49, 67,177,132,209,171, 24, + 51, 23,210,157,129, 51,126, 76, 68,116,137, 54,249, 40,159,194,187,111,155, 18,178,117, 26, 27,170, 35, 57,164,142, 0,122,253, +106, 98,114,208,235, 71,107,174,110,139, 2,110,157,213, 6,151,229,156,136, 72,127,136, 96,218,154,115, 6,163, 75, 30,199,249, +128,218,104, 34, 41, 93,242,222,126,171, 50, 54,212, 82, 48,110, 67,203,220,169,142,136,100, 73, 43, 83,151,117,189,164, 51,161, +101,223,119, 4,215, 97,220, 47,149, 82,182, 65, 10,196,200, 85, 63, 6,147, 14,229, 22,203, 98,100,132,212,218,104,144,161, 33, +106, 61,118, 46, 43,146, 71,240,252,108, 74, 6,181,125, 3,146,123,191,156, 36, 82,134,255,102,156, 76, 50, 78,102, 70,215, 45, + 45, 58,139,150,108, 41,178,135, 22,233, 28, 49,180, 70,216,159,161, 35,164,150,215,223, 74, 10, 69, 94, 45,133,188, 45,241,152, + 6,217,132,108,107, 72, 30, 51, 21,173,139,160,118,132, 22,200, 5,145, 51, 81,116,122,173, 59,211, 28, 92,229, 50, 20,155,163, +254, 82,248,242,148, 94,198,233,241, 94,156,147, 76,238,243,177,205, 89, 89, 44,231,236,152,161,174,195,234,134,127,173,129,110, +197,209,233,152,208,246,103,153, 2,215,189,142,205,213,204, 71,204, 70, 77, 48, 81, 55,252, 35,203,252,178,173,245,144,215,250, +245,178,115,246,233,119,221,104,182,245,233, 68,206,230,204,246, 76,203,136,148, 37, 45, 4,101,134,179,116, 6,199, 97,105, 47, + 1,208, 74, 69,150,132, 46,109, 87, 68, 57, 56,249,206,225,138,161, 40,227,196,198, 78,162,116, 53,172, 29,141, 87,218,198, 98, + 33, 1,230,144, 35,123, 78,171,218, 80,139,182,180,120,179, 33, 21,121, 14, 44,149,241,242,185,153, 28,109, 69,182,168,134,131, +194,210, 90, 94,148,249,149,109,151, 12,156,180,104,191,152,181, 6,214,106,230, 19,131, 59,154, 87,142, 97,105,191,200,236,200, +182, 25, 75,203,136,188, 78, 91,214,216, 64, 54,237,176, 76, 11,225,178, 27, 73,151,158, 71,199,211, 58,179,122, 72, 59,253, 80, + 30, 71,179,163, 11, 37,245,111,235, 48,100, 37, 58,233, 12,113, 17,255, 76,183,113, 22, 99, 61, 39,121, 74, 91,231, 13,255, 95, +181,136, 79, 99,109, 83, 36,201,229,176,150,241,153, 79,154,116,219,207,242,129, 26,107,216,106, 91,164,202,191, 64,159,163,225, +167,125,210,106, 16,151, 25, 34, 29, 78, 78, 39,111, 47,150, 38,143,139, 40, 53, 87,255,151, 66,146, 41,217,102,105,182,134,116, +186, 83,199,228,210, 61, 74,173, 71, 71, 91, 6, 44,235, 5,150, 72,103, 44,128,105, 91,153,208,157,210,215,117, 91, 99,150,184, + 99,125,164, 29,141, 87,250,178,218, 14, 56,160,140,209,183,185, 42,108,181, 70, 31,166,232, 13,117, 25,219,112,230, 9,113, 75, +145, 26, 7,152,219,126, 46,109,199,220, 20, 73,116,129,169, 78,223,100,121, 1, 25,239, 66, 30,115, 94, 80,116, 84,208, 63, 41, + 75, 13, 81,105, 29,203, 42, 33,101, 43, 48,246, 1,140, 75, 22,227, 77,162,218,233, 53, 38,218,178,101, 75, 23,125,199,223,149, +244,248, 66,184,217, 63, 53,151, 36,210,255, 3, 51, 1,167, 61,222, 14,125, 55, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/scrape.png.c b/source/blender/editors/datafiles/scrape.png.c new file mode 100644 index 00000000000..b67bfa15984 --- /dev/null +++ b/source/blender/editors/datafiles/scrape.png.c @@ -0,0 +1,414 @@ +/* DataToC output of file <scrape_png> */ + +int datatoc_scrape_png_size= 13055; +char datatoc_scrape_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, 1, 26,253, +208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, 11,252, 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, 0, 0, +249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, 73, 77, + 69, 7,218, 7, 19, 0, 34, 13, 86,254,139, 21, 0, 0, 32, 0, 73, 68, 65, 84,120,218,237,189,121,176,101,233, 81, 31,152,153, +223,114,206,185,219, 91,170,170,107,233,234,234, 77,106, 36, 33,129, 6,144,196,210,116, 32, 1,178, 65, 4, 2, 2, 44, 6,205, + 48, 2,198, 33, 19,158, 8,140,151, 48, 12, 99,198, 6, 19, 30,121,108, 6,135, 61, 16,120, 38,128,177,153,177,197,226,177, 25, + 16, 98,179,144, 52, 32, 33,181, 90,162,213,123,181,106,223,222,114,223,187,235, 89,190, 37,115,254,248,206,185,247,150, 36, 27, + 97,107,236,118,132,111, 85,191,122,203,125,231,126, 55, 79,126,249,101,254,126,191,204,198,199, 30,123, 12,254,196,199,231,242, + 36, 29,153, 95,248,216,123,150,199, 55,163, 15,183,111,222,217,222, 29, 61,255,194,181, 59,251,227,255,225, 39,127,113,245, 36, + 2,128,254,246,217,209,233, 71,122, 91,167,230,147,197,123,255,229, 7, 71,253,226,145, 7,207,255,242, 63,250,225,255,227, 93, + 63,216, 94, 9, 1, 94,248,232,111,207,231,203,247,252,223, 31,120,221, 87,189,230, 77,223,248,229, 89,145, 19, 34, 71,238,109, +157,184,249,169,143,127,253,215,127,179, 6,128, 51, 15,191, 58, 94,124,242, 75, 94,255,202, 7, 95,118,126,184,181,109,139,161, +206,122,197,240,132,205,122, 31,250,205,119,255,249,111,127,179,186,112,225,254,251,122,238, 99, 31,126,234,117,143,126,209,112, +107,219,230,131,172,183, 53,216, 62,173,116,118,241,241,223, 9, 49,250,198,105, 0,185,247,254, 51,103,207,223, 51, 24,237,144, + 54, 72, 74,103,133,201, 7, 79,252,222, 47,223,188,182, 7, 8,117,213, 16, 0,140,182,119, 71, 59,219,136,136, 0,164, 84,127, +251,244,165, 39,126,171,105,252,246,137, 81, 12,177,174,156, 6, 0,102, 6, 32, 36, 2, 82,194,241,131,255,242,159, 28,236, 31, + 41,173,141,214, 33, 68, 34,212, 0, 0, 32,136, 36, 32, 16,253,244,104,175, 63,236, 11,192,222,237,113,185,172,170,101,237,156, + 39, 0,136,193,199,224, 67, 83, 47, 38, 71,243,217,210, 53, 78, 68,182,182, 7, 28,153, 69,110,223, 62,194,207,233,222,125, 46, + 15,188,252,201,223, 47,103,123,203,201, 1,128,252,226,207,253,250,104,216,251,178,175,120,245,183,188,243,199, 55,159, 68,118, +176, 51, 58,253,176, 29,156,138,145, 51,163, 94,254,138, 11,206,185, 95,253,233,255,254,159,253,212, 95, 59,125, 98,171,189,119, +215, 62,249,190,249,116,241,252,211,151,175, 94,190,253, 53,111,126,253,104,103,168,141,225, 24, 17,241,195, 31,252,205,235,207, +252,225, 99,223,254, 87,241,250,197,199,159,248,253, 95,155,140,167,131, 81,255,220,125,103,242,254,150,182, 61,147, 15,134,187, +231, 94,252,216,111,221,185,117,120, 60,158,210, 71,126,231, 95, 60,249,248,115,121,145,221,123,225, 92,214, 27,153,188,159, 15, +118,183, 78,221, 95,207, 15,174, 95,185, 19, 92,168,171, 70, 63,244,242,135, 50,107,238,185,247,140, 49, 57,146, 82,202,228,253, +173,197,209,205, 63,124,239,175, 55,141, 43,203,154,148, 34,219,223, 62,125,254,156, 86, 86, 16, 0, 32,239,239,112,112,207,126, +244,131, 87,175,220,178,153, 65,132,199,159,120, 65,187,106, 78,132,128, 64,128, 72,180,119,229,201, 79,124,228,147, 33,196,243, +247,157,190,118,249,206,137, 83, 91, 15,156, 63, 69,194, 17, 0, 5, 1, 16, 92, 57,155, 79,167,103,239, 61,149,231,118, 58, 93, +246, 7,249,165,139, 55,132, 69,123, 87, 19, 17, 68,244,193, 47,230,139,186,108,156, 11, 69, 47,247, 62, 78,142,103, 89,102, 38, +147, 57,124,190,238,157, 22,145,167,158,120,255,246,246,142, 72,228, 24, 57,120,225,128, 8,161, 94,248,102, 89,151,179,255,231, +221,239,249, 31,255,183, 95,249,156, 46,212,183, 82, 30, 93,111,150,147,186,156,186,186,246, 33,120, 23,110,223,216,251,192,251, + 62, 97, 12,189,242,213, 15,253,237,191,240,182,222, 32, 63,119,254,180,128, 56, 23,254,198,255,242,139,215,110, 31,124,186, 51, + 61,250,232,163,127,255,135,223,230,157,231,200, 28,249,198,245, 59, 31,122,255, 39,238,123,224,204, 43, 94,253,208,193,254,241, +112,212,223,218, 30, 40,173, 1, 64,132, 57,114, 12,236, 99,116,181,115,206,239,223, 57,250, 43,127,239, 23,218, 21, 1,192,169, +251, 95, 27,125, 93, 30,223,220,191,125,107, 54,153,111,239, 12,179,220, 50,243,203,190,224, 66,150,231,202, 88,165, 12, 41,141, + 68,136,132,164, 77, 62, 80,202,154,188, 47,236, 79,158,218, 17,142, 63,244,247,254,137, 6,192,107,207,124,200, 59,255,228,199, +159,159, 28,205, 31,120,248,222,175,120,236,181,131, 81, 63, 43,114, 99, 11,101,172,210,153,210, 70,153, 76,153,220,230, 67, 84, +122,124,227,185,195, 59,215, 92,217,204,102, 11, 66,137, 2, 63,252,125,223,166, 1,224,120, 60,109,106,167,149,190,240,192,217, +135, 31,185,208, 27,244,149,182,164, 52,146, 86,202, 40,155,105,219,179,249,192,246, 70, 32,114,251,133, 15,125,234,249, 75,229, +178, 82,138,124,136, 68,196,204, 72,168, 1,228, 11,223,240,104, 53, 59,120,240,145, 57, 34,146, 50, 74, 43, 16, 68, 36, 68, 0, + 4, 82, 58,239,111,155,188,239,154,250,240,218,211, 31,250,192, 71, 79,158,218, 9, 33,214, 85, 19, 35, 51,243,193,222,177, 49, + 90, 3, 64, 61, 59, 12,174,209,202, 36,215, 5, 22,160,116, 33,165,109, 94, 12, 78,140,175, 63,245,194, 83,207, 79, 39,115, 68, + 24, 14,250,222,135,253, 59, 71,231,206,159,138,145,151,139,114, 56,234,141, 15, 38, 26, 0, 66,112, 0, 0, 8,237, 42,128, 0, + 16, 64, 56,250,197,209,237, 59, 87,158, 47,151,149, 8, 11,128,107,124, 93, 59, 0, 24,109,245,103,147,197,157, 91,227,237,221, + 33, 2,228, 69,174, 1,128, 99, 0, 1, 68, 0, 16, 17, 0, 9, 0,208, 52,206,213, 77,211, 52,174,241, 28,217,102,118,247,132, + 10, 62,206,166,139,178,172, 67,136, 28,185, 63, 40, 14,246,142,202,178, 25, 12,122, 26, 0,235,114,137, 0,136, 8,136, 32, 18, +153,163, 15,222, 7,239, 67, 12, 49,132, 24, 99,140,129, 67, 8, 33, 68, 99,116, 81,100, 77,227,154,218, 11, 72,150,219,178,108, +246, 15,143, 63,127,113,242,243,242,184,112,225, 2,125,190,174,165, 31,122,240,254, 15,189,255, 55, 67,240, 49, 6,137,193,251, + 70,107, 29,154,210, 55,139,232,155,235, 47, 62,255, 13,239,248,209,207,229, 66,234,143, 63,252,155,213,252,176,158, 29, 44,143, +110,204, 15,175,149,211, 59,229,116,111,122,120,243, 3,239,125,255, 35, 95,248,202,139,207, 60,191,173,236, 79,252,200,247,126, +203,215,190,225,217, 23,175,239, 31, 77, 63,235, 85,182,182,182,240,234, 51, 31, 12,174,105,170, 89,179, 60,106,170,165,119,222, +251,176, 92, 84, 31,251,240,211,207, 92,186,249,198,175,250,162,217,116,225,157,191,239,193,179, 54,203,152,217, 59,255,142, 31, +250, 7,159,105, 35,188,115,229,147, 81,162, 68,142,193,213,203,217,114,126, 12, 97, 49,190,125,231, 19,143, 63,115,235,230,225, +133, 7,207,158, 59,127, 15, 42, 18, 22, 34, 66,132, 24, 57,132, 48, 57, 94,252,197, 31,255,217,187, 46,244,177,247,254,140,115, + 77,240, 65, 68,202,101,245,177, 15, 63,125,249,202,237,111,125,219,215,141,247,143,130,143, 39,239,217,205,114,131, 68, 32,194, + 44, 49,198, 16, 98, 8,161,169,125, 93, 54,223,255, 55,127,186,241, 33, 93, 72, 35, 81,112,161,105, 92, 8,126,114,180, 88, 46, + 43, 77,234,201,199,159,123,249, 43, 47, 12,134,131,188,103,181, 54,136,132,132,194, 44, 44,128,160,181,217, 62,243,240,232,228, +249,143,191,233,141,207, 63,249,177,111,125,231,223, 6, 0,189,115,239,171,182,207,113,179, 56,154, 30, 92,155,207,202,162,200, +206,158,179,103,239, 61, 57, 24,246,251,131,194,216, 76,153, 54,164, 32, 33,130, 82, 38, 51, 89,159, 99, 0,192,195,219,151, 23, +211,229,207,252,232, 59,255,206,207,191, 71,107, 99, 35,243,209,254,141,201,120,106,140, 57,117,207,110,111, 88,156, 58,189,219, + 31,244,178,188, 80, 38, 87,218,144,182,164,140, 82, 90,103, 61,219, 27,101,249, 96,124,253,147, 79,252,222, 47,151,139,154, 52, + 89,163,191,225,209, 47,209, 47,126,252,125,136,184,119,123,252,212,199, 47,110,239, 14,239,123,224,236,206,238,168,232, 23, 54, + 47,180,201, 72, 91,173, 51,210, 86,155, 76,103, 61,147,247,155,114,126,233,201, 63,144,216,212,149,243,222,199, 16,157,243,214, +106,154, 28,205, 15,247,143,143, 15,167,206,121,165,213,246,206,176,151,214,162, 45,165, 80,173,116,186, 74,214,219, 34,210,121, +127,107, 56, 26,148,203,250,214,173,177,205, 76,100, 6,128,249,172,212,218, 40,142,108,172, 62,125,246,196, 3, 15,221, 59, 24, + 13,109,158, 19,105, 36, 69,164,136, 52,105,163,180, 53, 89, 79,105, 83,206,246,159,127,252, 3,135, 7, 71, 28,101,119,167,255, +244, 39, 47, 63,252,178,123, 17,157,205,180,126,224,229, 95, 80, 45,142,251,163,222,185, 11,178,181, 61,178, 69, 15, 73,181, 33, + 5, 1, 0, 20,146, 50, 86,155, 44, 6,183,127,229,233,233,100,222, 84,158,153, 17,225,236,153,221, 63,250,240, 51,175,121,205, +131, 0,168,251, 59,103,149,237,145,210, 49, 6,165, 12, 34, 17, 32, 32, 34, 34, 8, 32, 34,153, 60,235,111,251,166, 22,224,139, +207,190,152,231,153,177,186,169, 93,112,129, 69, 30,122,240,204, 71, 63,242,172, 12,134, 20,124, 29,220, 18,144,148, 50,128,132, + 0,105, 33,237, 86, 52,182, 55, 58, 17, 92,189, 24, 95,123,230, 15,223, 59, 26,245,231,179,229,116,178, 24,109, 13,180, 53, 34, + 64,132,231,206,238,206,103, 75, 29,154,101,244, 14, 65,128,218,107, 72, 10,223, 72,164,180, 49,189,122,118,112,241,143, 63,116, +235,250,190,115,222, 24,109,172, 41,122,217,165,139,215, 47, 60,120, 46,132,224,156, 88,107, 93, 8, 58, 6,199,194,128, 4, 0, +136, 2, 64, 41,236,166,232,191,152,220,186,115,237,202,173,235,251, 85,213,196, 40, 49,114,140, 81,107, 61,218, 30, 92,124,238, +234,217,123, 79, 41, 69,164,176,200, 44,113, 12,237, 91, 65, 20, 1, 68,193,246, 24, 96,239,202,229,116, 12,136,219,187,163,162, +200,148,198, 24, 99, 93,185,229,162, 4,128,162,103,111, 94,219,139, 49, 2,128, 82,138, 68, 24, 64, 68,164,141,255, 0, 32, 2, +194,193, 55,174, 90,186,166, 17, 22,109,212,246,238,104, 48,232, 41,165,152,197,249,224, 26,175,148,138,204,123,183,143, 92, 19, + 0, 68, 75, 12,194, 12,136, 44, 76,136,194,194,192,194, 49,120, 87, 87,117,211,248, 16, 66,140,204, 44, 89,110, 69,100, 54, 93, +132,208,190, 71,107,244,193,100,193,204, 41,173,107,210,251, 66,164,152,146,120,225,224,156,115,222, 53, 46,184, 16, 67,140, 33, +166,223, 84, 74,245,122, 69, 8, 49, 70, 22, 1, 64,208, 90, 77,103,101, 96,210,222, 59, 17, 64, 4, 68, 2, 0, 97,142,145,189, +243, 33,108,156,107,233, 66,129, 67,136,204,108,141, 22,150,200, 17,137,172, 53,211, 69,233, 35,193, 75,234, 92,187,239,190,251, + 8, 94, 74, 15,196,182,214,106, 31,175,251,178,215,126,215,219,190,237,181,175,249,194,251, 31,184, 80,228,153,164,231, 0, 8, + 8,136,128, 8,128, 72,186, 25, 28, 57,134,189, 59,183,222,243, 27,191,254, 99, 63,249, 79, 63,143,107,210,145,249,206,181,167, + 0,144,153,129, 35,115,224,224, 57, 86,229,100, 18,131, 23, 14, 2,160,116, 70, 74,165, 10,112,178,127,253,185,167, 47,126,201, +151,127,169,111,170, 56,159,188,234,194,233, 31,249,111,222,122,249,214,225,238,185,221, 95,250,245, 15,236,143,167,255,190, 11, + 66,128,197,248,102,140, 94, 98,136,193,197,224,162,175,163,119,157, 7,114,202,225, 68, 36, 70,118,141, 59, 26, 79,175, 93,188, +246,129,223,251, 8, 88,243,231,222,246,166, 16,184, 63, 40,206,238,140,154, 73,245, 55,255,187,239, 58,121,106, 11, 24,152, 99, +140, 2, 32, 79,189,112,245,231,126,229,119,247,198,147, 63,197,130, 0,128,108, 31, 69,136, 8, 73, 17, 34, 71, 23, 92, 19,220, +210,215, 75, 87,205,131,111, 98,136, 33, 4,142,209,251,224, 27,207, 34, 86,171,178,106,126,237,221,191,119,250,204,137,211,231, + 78,156, 62,119,146,163,136,200,236,120,174,180,178,153,213, 70, 33,194,107,191,240,225,159,122,229,131,204, 18, 3, 59,215,252, +236, 63,255,173,143, 62,245,226,159,188, 32, 55,223,143, 49, 8, 71,142,161, 45,223, 73, 3,160,119,213,100,124,244,226, 11,215, +174, 95,185,253, 95,190,243,123, 16,101,186,127,181,169,221,137, 83,219, 90, 43, 64, 28, 12,123, 59, 39, 70, 69,191, 48, 70, 19, +117,251, 67, 68,160,253, 35, 2, 44, 2, 44,145,217,102,250, 7,191,239, 91, 99,140,190, 9,207, 94,188,242, 63,255,194,175,125, +118,191,126,244,209, 71,255,254, 15,253,185,224,125, 10, 47, 41, 60,165,212,165, 46,155,131,189,241,245,171,123,123,251,199,129, +121,212, 47,238, 61,127,234,204,249,123,178,220, 18, 97, 58, 1,140, 53, 90, 43, 66, 18, 20, 74,197, 44, 32, 8, 51, 11, 0, 48, +139,136,176, 8, 72, 10,221, 82,215, 62, 50,245, 71, 59,247,156,127, 96,231,196,201,247,253,206,123,254,194, 95,125, 87,221,184, + 85,130,165, 1, 96,231,204, 67,174,154,187,102, 25,154,202, 55,206,135,232,156,103,199,141,243,141,243,128,208,203,173, 54,122, + 48,236,229,253,156, 8,139, 34,203, 10,107,173, 37, 69, 74, 41, 82, 10,145,136, 8, 17,211,137, 40,136, 40, 32,194,105,155, 18, +105, 34,133, 90, 43,157, 41,157, 41, 99, 8,105,118,112,245,133,203,127,188,165,249, 23,254,238, 15, 84,203,230, 93, 63,251, 43, +207, 93,189,213,221,178,166,170,235, 50,250, 64, 58, 31,110,157,201,138, 33,251,102,178,127, 53,198,216,235,231,219,187,195,225, + 86,191, 40,178,209,214, 96, 48,234,247,251, 69, 94,100,218,104,165,181, 82, 26, 73, 83, 58,210, 72,117,149,101,187, 50, 34, 69, +100,218,117, 24, 75,202, 16, 41, 99,243,122,126,116,124,231,226,236,248,200, 53, 62,196,120, 60,158,231,185,253,203,223,251,214, +106, 89,255,175,255,226, 3, 26, 0,184, 89,102,121, 65,197,208,251,102,124,243,242,213, 43,183,198,123, 71, 54, 51,189,126,174, +181, 62,125,250,132,201,108, 94,216,188,200,178,204,106,107,116, 90,138,210,164, 52,145, 66,165, 8, 53, 18, 33,169,148, 2, 33, + 41, 82, 70,117, 73,149, 82, 6, 8,217,187,233,222,165,163,219, 87,102,211, 69, 83, 57, 31,130,176, 0,192,104,212,243, 62, 78, + 38,139,221,157,209,215,127,229, 23,107, 0,188,118,233, 50, 0,176, 72,112,254,248,104,118,231,246,120, 54, 89, 32,225,206,238, +232,244,153, 19, 91, 59,163,162,159, 89,107,149, 86, 90,107,165, 13,146,194,180, 20,164,100, 33, 68,133, 74,165, 21,144,210,164, +172,182, 25,233,140, 72, 5, 95, 7,223,152,172,103,178,158,206,250,135, 7, 83,165,176,232,231, 80,214,222, 5,239, 3, 71,142, + 49,142,134,189,163,241,132, 57,221, 50,231, 18,182,229, 93,112, 46, 16, 97,158,103,189, 65,126,207,153,221, 83,103, 78, 12,134, +133,177, 86,105, 77, 74, 35, 18,145, 2, 36, 36,234,110,147, 34,210,221, 58,140,210, 70,233, 76,217, 92,155, 76, 68, 56,122, 9, +205,226,224,242,193,237, 27,243,201,162,113,142, 89, 2,192,108,186,184,121,227,240,225,151,223,139,136, 77,221, 48,139,176,228, +153, 13,110,166, 1,224,228, 61,187,174,241, 62,165, 21,154,122,253,140, 72, 13, 71,253,209,246, 48,239,229, 90, 91, 82, 10, 19, +104,132, 8, 68, 8,132, 68, 72, 4,128,216, 45,142,148, 81,198, 42,109,181,201, 81, 27,142,190, 94, 76,142,239,188,112,120,251, +206,108,178,168,170,198,251, 0, 34,109,102,129,120,250,244,206,209,225,244,202,165,219, 15, 60,116, 54,207, 12, 51, 35, 81, 11, + 25,156,123,217, 23, 71,239,188,171,220,114,218,212,203,224, 61, 34,146,214, 90,105,210, 38,185, 42, 32,162, 32, 16,160, 16, 80, + 10,222, 64, 4, 41,143, 34,165,148,177,198,246,116, 86, 0,169,224,234,114,118, 56,190,254,220, 98, 62,151,148,120, 17,166, 40, +144,194,138,136, 8, 0,128,220,123,254,228,241,120,122,245,202,222, 67, 15,159,179, 86,137,136, 78, 41,167,128, 32, 8,105, 99, +179,194,216, 12, 68, 4,145,218,165, 80,151, 12, 10, 8, 2,166,165,164,108, 14,145,148, 54,185, 41,134, 89,111, 4, 2,174,174, +180,177, 40, 2,190, 86, 74,113,140, 55,175,239,237,221, 26,159, 60,189, 51, 26,246, 99,140,206,249,224, 67, 12,156, 30,192, 80, + 20,217, 3, 15,158,185,115,107,220, 52,174, 33,163, 1,192, 55,165,119, 85,244,142,163, 23, 0, 68, 2, 74,201, 53, 1, 96,178, +115, 2, 38,218, 15, 41,222, 16,145, 54, 38,239,103,253,109,109,114, 95, 47,203,233,222,248,230,167,198,227,227,114, 94,122, 31, + 0,144, 20,246,251,197,131, 47, 59,191,152,149, 47, 62,127, 53,239,101,231,206,159,206,243, 22,111, 8, 33,132, 24, 68, 68, 17, +109,239, 12,198,135,211,195,163,185, 6,128,224,235,232, 29,199,144, 82,217,116,120, 8, 8, 17,164,251, 2,128, 32,128,132,128, + 8,128,148,188, 0, 21, 2, 70,239,150,227, 27,179,195,155, 7,251,135,147,163,121, 85,214,174,243, 21, 74,222, 69,164,181,202, +114,115,225,193,179, 85,229, 47,191,120, 35,134,120,250,220, 73,107, 53, 34,136,136,120, 65, 68,165,213,112,216, 27, 44, 19, 64, + 29,188, 72, 20, 88, 91, 66, 68,136,168, 93,141,128, 16, 36, 12, 10, 1, 5, 16, 16,153, 25, 98,229,235,232, 93, 85,151,203,114, + 89,185,218, 35, 2, 41, 82, 76, 28, 89, 88, 98, 20,230, 0,128, 33, 4,132,180, 37,112,103,119, 84,215,238,230,181, 61, 17,217, + 57, 49,178,198, 96,138,166,136, 90, 43,107, 76, 2, 1, 35,136, 32,200,234,254,180, 39, 37,130,136, 32, 17, 10, 38, 7, 18, 4, +144,200, 81, 56,134, 24,124,240,206,123,239,125, 32,162,188,151,153, 76, 23, 46, 4, 31,154,198,213,181,243, 46,165,245, 12, 0, +192, 2, 8,201,224,132, 48, 26,245, 23,139,106,239,214, 88,107,213,235,231, 68, 20, 99, 20,233, 50, 70,142,145,153,219, 90, 42, +249,119,242, 88, 17, 32, 98, 97, 20, 4, 70,129, 0, 1, 68, 56, 6,207, 49, 4, 31,210, 35,182,167,114,114,118,210, 70,147, 34, + 99,141,107,124, 83,187, 4, 94, 49, 8,135,180,187, 34,136, 48,136,181,154,163, 93, 46,203,249,188,204, 50,107,173, 22, 0, 78, +187,140,163,111,183, 97,187, 16, 4,110,235, 52,224, 8, 0, 32,192,192,194, 41,121,229, 24, 66, 7,141,197,148,205,166, 71,100, + 1,145, 24, 89,152, 1,192, 88,173, 20,121, 23,234,186,113,206,167, 36, 66, 68,210, 83,153, 37,165, 12, 77, 19,102,243,133, 53, +198, 26,195,204,105,151,213, 44, 9,150,219,248,179,225, 79,233, 50, 18, 57, 50,199, 16, 98,228,200,204, 49,198,152, 46,207, 49, + 69, 23,150,200,237, 43, 50,167,127, 5, 0,172, 53, 68,212,160, 3, 31, 98,136,235, 76,157,128,148,202,172, 14, 49, 46,171,198, +185, 16, 2,104, 68,252,157, 63,124, 70, 36,149,191,171,231,182,119, 60, 69,157,148,107,125,198, 3, 54, 62,131,238, 59,188, 74, +131,238,122, 90, 90, 98,247,214,186,101, 11, 71, 14, 33,122, 47,141, 7,118,193, 9,190,196,240,198, 84,155,189,116, 22,243,216, + 99,143, 81, 91,209,191,100, 30, 47,173,202,245,165,184,160,187, 74,233,239,126,251,119,252,153, 55,191,233,149, 95,240,240,233, +123, 78,111,226, 87,146,206,182,182,130, 96,142, 81, 36, 86,203,229, 83, 79,126,252,111,253, 79, 63,253,201,231,175,124, 62, 23, +132,136,239,252,111,191,251,111,253,232, 95,143,145,161,123,201, 24,188, 72,170,135, 2,199,160,148, 1, 20,142,142,189, 99,246, +236, 93,228,200,193,221,123, 34,255, 75,255,245, 55,253,227,255,243, 55,255,232,217, 79,125,190, 22,164,126,226,199,126,228,251, +223,249, 14, 4, 4,137, 32, 81,162,103,223, 68, 87, 69,183,244,245, 60,184, 37,114, 76, 63, 98,102, 87,205, 47, 61,243,199,182, + 24, 16, 6, 87, 45,166, 71,147,155,215,246,108,148,183,127,231,159,201,140,126,254,210,205,127,207,213,220,127,255,253, 90,162, +111, 22,199, 28, 29, 7,207,209,199,224, 98,104,162,111, 56,184, 24,163,164,204, 18, 80,132, 99, 12,229,178, 60, 62,156,252,191, +255,250,151,190,249,237,111,203,148,113,222,139,136,214,234,163, 31,122,234, 47,190,227,155,255,252,119,254, 89,231,252,254,225, +228,163,127,124,241,231,126,245,119,254, 29, 45,244,230, 55, 61,250,240,133,123,162,111,216, 55,193, 85,190, 41,163, 43,131,171, +189,115,222,187, 24, 98, 12,193, 57,231, 26, 87,215,205, 98, 94,141, 15, 38,251,119,142,126,247,119, 63,120,230,244,142, 82,176, +152,151,174,241,150,240,217,167, 46,157, 62,119,130,136, 50,107, 30,186,239,204,183,189,249, 43,223,250,181,175,223, 63,154, 92, +191,125,248,167,178,144,122,203, 55,124,221, 43, 95,241,114,165, 45,146, 74, 80,174,180, 80,208, 26,244, 16,145, 24, 99,240,177, +174,234,233,241,252,120, 60, 43, 27,247,236,179,151,209,135,193,176,175, 53,229,185,237, 15,138,249,100, 33, 8, 54, 51, 68, 68, +132, 68,248,101,175,121,249, 91,191,246, 13, 95,242,170,135,222,255,209,167,218,227,251, 79,188,101, 44,192, 66,136,100,242, 60, +235,109, 11,115, 12, 77,240, 85,168,151,174,154,251,166, 12, 33,196, 16, 36, 21,231,136, 0,160,181,202,181, 34,162,233,100,209, + 31, 20,219,187, 35, 17, 96,102, 4, 32, 69,193, 71, 99, 81, 41, 66, 84, 68,162, 20, 61,120,225,236,207,255,157, 31,248,212,213, +219, 63,246,211,239,254,147,119,153, 49, 89,209,223, 2,224, 22, 31, 3, 33,165, 81, 25, 80, 57,163, 13,162, 79,220,179, 91, 45, +142, 92, 53, 47, 23,203,166,110, 76,102,138, 94,182, 21, 88, 25, 26,109,245,243, 94,150,247, 50, 99, 76, 58,141, 69,160, 75,114, +169,251,142, 32, 18, 43,124,228,161,123,127,225,239,252,192,123, 63,248,196, 63,127,207, 7,255,109, 11,170, 23, 71,147,219, 47, + 36, 44, 38,129,196,128, 72,168, 35,135,106, 49,185,113,229,230,197,231,174,124,225,235, 95,255,200,171, 94,105,243,195,166,105, +122,189,124,180, 61,176,153,205,114,179,189,187, 53,218,238,219,204,166, 66,167,187,207,237, 7,144,182,224, 65, 20,102,140,200, +128,248,141, 95,243,165,111,122,253,171,255,242,223,253,249, 69, 89,127,118,167,126,211, 87,189,246,252,169,162, 46,103, 77, 57, +175,203,101,181, 92,214,213,178, 92,204, 22,179,227,227,131,227,219, 55, 14,246,110, 31,125,226, 35, 79, 62,249, 71,143, 91, 11, + 54, 51,194,172,180,234, 15,123, 91, 59,163,173,157, 65,111, 80,152,204, 26,163,181,214,186,173,181,149,210, 74, 39,154,163,173, + 35,219,172,185,125, 73,173,222,244,134,215,156,221,222,122,226,185,203,159,197,169,223,244,213, 95,118,225,236, 78,240,193,251, + 54, 17, 12, 62, 56,231,155,202,205,230,229,209,193,228,120, 60,171, 26,207,194,203,233, 2, 1,179, 60,203,138,172,215,207,251, +131, 34,239,101, 54, 45,198,168, 4, 65, 40, 77, 90,173, 30,105,141, 74, 27,109,173, 41,138,204, 88,163, 76, 94, 12,134,247,191, +252,149,111,126,235, 91,191,239,187,191,237,120,255,214,211, 47, 92,189,203,169,149, 82,218,104,230,152,202,173,148,232,197,132, +222,185, 16, 98, 4, 0,163, 41, 51, 26, 73, 57, 23,152, 57, 47,172,205,173,209,233, 21,245,170, 44, 74,204,244, 93, 89, 27,180, + 20, 3, 17,105,155, 23,195,147,197,240,132, 45,134,218,102,205,252,200,207,238,124,207,119,124,221,155,191,252,139,190,239, 71, +254,225,218,135,108,111,123,176,115,206,215,115,223, 84,174,169, 99, 8,222,133,148,122, 10, 11, 2, 26,171,123,136, 69, 47, 27, +142,122, 69, 47, 51, 86,219,204, 36,195, 40,173,144,136,148,106,203,180, 84,207, 74, 34, 60, 4, 68, 0, 1, 73, 33, 42, 82, 74, +233, 12,145,124,179, 96, 14,126,127, 58,190,115,101, 54,153, 85,101,157, 89,243, 15,254,250,247,254,192,187,126,174, 93, 16,105, +155, 15, 79,229,195,147,194, 49,186,202,213,179,122, 49, 41, 23,139, 16,130, 82,100,172,206,139,172, 40,176, 55,200,183,118,134, +253, 65,145,231,153,181,214,180,128,149, 66,210, 45, 90,170, 40,169,143, 16, 87,188, 9, 38,120, 68,105, 75,202,146,210, 28, 3, +146,238,141, 78,202, 96,151,133,239,220,254, 88,112,129, 57, 14, 6,189, 31,255,254,183,253,141,159,121, 55, 0,232,208, 84,211, +131, 43,190, 41, 65, 68,101,253, 94,127,123,120,106, 75,103, 7,206, 57,109,151, 89,110, 71,163,126,242,226,209,214,160, 63,232, +229, 69,102,140,214,198, 16,105,165, 40, 65, 82,136,148, 44,129,173, 30,129, 0,137,148, 34,165,149,182,202,100,164, 50, 36, 50, + 38, 67,224,233,254,229,227, 59, 87,231,179,121,102,204,244,120,110,181, 66,132, 19, 39,183,255,202,119,189,229, 35,215,231,218, +228,189,147,247,126,129, 0,186,102, 57, 31,223,188,118,241,201,170,172,251,253, 34,132,168,136,138, 34, 75, 46,217, 31, 20,237, +106,172,209,214, 40,165, 73,107,162,100, 33,133, 45,204,168, 16, 21, 16, 34,166,165, 24, 82, 86,153, 76,155, 76,105,139,136,229, +228,206,209,205,231,143,199, 71,229,178,246,206,139,200,112,216, 91,204, 74, 82,100,140,122,240,129,179, 31,185, 62,211,213,236, +224,248,214,243,164,173, 8,184,114, 86,151,213,245, 43,119,124,227,251,131,194,230,214, 88, 83,244,139, 44,183,121,145,229,185, +181,214,104,173, 73,107,165,116,226, 48, 91, 40,109, 13,230,165,219,167,137, 12,105,163,148, 38,165, 1, 32,134,166, 89, 28, 31, +223,186,120, 52, 62, 42,231,149,115, 46, 21,113, 0,144, 23,118, 60,158,142, 70, 3, 54, 44, 0,186, 90, 46,199,123,183, 8, 49, + 50,151,139,106,255,206,209,100, 60,171,202,102,185,172,118, 79,108,109,109, 15,122,253, 60, 47, 50,107,141, 49, 70,155,110, 53, + 74, 39, 87,109,241,188, 22, 87, 76,214,210,201,105, 18,248, 23,131, 47,167,251,147,189, 43,203,249,162,101, 62, 91,208, 98, 13, + 65,247,123,197,237,155, 7,167,207,236, 0,128,118,206, 47,230, 37, 2, 68,230,114, 89,149,139,170,105,156,247,193, 6, 35, 34, + 54,179, 69,145,217,204,182,171, 81,170,229,135,177,133, 56,147, 35,167,123,135,221,106,148,206,148,201,148, 54,194, 28,164,233, +143, 78,109,159,186,223,215,243,219,151, 62,241,201, 39,158, 61,127,254, 36,128, 52,181,112, 20, 22,142, 49,138,200,104,212,187, +244,226, 45, 4,208, 28, 57,221,206, 24,185,169,125, 8, 17, 68,148, 34, 99, 84, 81,228,189, 94,110, 51,107,173, 73, 24, 35, 41, +221,110,242,116,154, 39,228, 2, 85, 27,144,149, 86,202, 40,109,149,177,218, 88, 1,228,232,140,201, 36,250,227,155,207, 28, 31, +220, 92,204, 22, 39, 79, 14, 47, 62,127,237,204,185,147, 54,179, 34,142, 57,166,154, 17, 0, 71, 91,125,128,177, 78,248,171, 68, +230,200, 34,140,136,198, 26,155,225,104,107, 48,218,238,231,189,204, 88,163,141,161,149,175,180,182, 33, 74,235, 82,132,132, 43, +103,106,215,164, 44,146,146, 24, 16,161,154,237,143,111,190,112,124,120,188, 92, 86, 49, 68, 17, 56,117,207,206,222,237,195, 44, +207,118,118, 6, 20,168,139, 16, 96,180, 2, 0,173, 52,105,173, 24, 81, 16,180,214,121,145, 1,136,177,102,247,228,246,104,123, +152,229,153,177,150, 58, 16, 24, 16, 33,125,132,187, 62, 65, 34,213,194,177, 38,193,146,194,204,190,153,141,175, 30, 92,191,116, + 60,158,148,203, 38,132,192,204,132, 72, 68,219,219,131,201,100,113,229,202,226,220,217, 19,164,136, 66, 71,170, 3,232, 60,207, + 70, 91,131,116,126,165, 19,176,215,207,139, 94,190,181, 61,232,245, 11,155,101,164,116,107,152,246,119,186,180,168,253, 8, 93, +224, 65, 76,144, 62, 18, 8, 71,223,204,199, 55, 14,111, 94,158, 28, 77,151,203,202, 53,129, 99, 4,128, 8, 72,196,128,216,235, +229, 77,237,158,123,238,250,195, 15,159, 37,165, 40,196,118, 65,197, 96,116,226,158, 51,222,213, 77, 93,213,101, 85,215,153, 8, +100,153,205,139,204, 90, 75,202,160, 82,105,115,180, 76,188,172, 74,221, 53, 56,145,110,158,106, 81, 91, 37, 32, 49, 70,239,235, +224, 67,140, 45,236,154,192, 6, 0,136, 49,137,159,160,215,203,203, 69,245,220,211, 87, 30,124,217,189,237,225, 7,160,181,237, +245,182,206,196, 80,155,106, 97,236, 52,107, 26,102, 81,138,180,214,164, 12, 81, 2,132,147, 93, 64, 18, 22, 11, 27,229,119,218, +199,109, 68,206,149,182,204,220, 84,139,233,222,165,163,253, 27, 33, 68,107,141,119, 62,248,200, 8,169,200, 18,110,211, 37, 16, + 24,110,245,203,101,125,229, 83, 55, 79,159,217, 77, 76, 3, 33, 18,166, 35, 73, 25,109,115,155,229, 89,150,105,147,252,134, 82, + 10,144,128, 79,144, 86,130,209, 1,127, 45,109, 75,148, 50,140, 66,153, 44,120,231,155, 82,105,219,219, 58, 21,124,120,254,153, +203,227,195,137,210, 74, 27,165,148, 74, 33, 40,189, 39, 22, 97, 78,248,235,104, 49,175,238,220, 30, 55,141, 7, 0, 18, 16,142, + 62,209,171, 0,128, 74,145, 82, 74, 41, 36, 74,233,104,119,111,218, 66,118, 37, 55,107,153, 39,210,202, 88,147, 13,148,201,124, + 83, 49, 71, 99,243,232, 22,213,116, 47,203,204,217,243,167, 14, 15, 38, 87, 47,221, 2,196,188,151,101,185, 81, 90, 17, 33,117, + 5,177,136, 24,171, 78,156, 24,237, 29, 76,166,211, 5, 0,104,225, 24,131,143,177, 73,176, 48, 9, 50, 38,159,167, 21, 84,222, +242,209,132, 40, 40, 40,157, 35, 39,212, 60, 51,121, 95,219, 44, 6, 39, 28,124, 53, 63,220,191,116,124,112, 80, 85, 77, 12,172, + 73,221,123,225,244,173,235,251,151, 95,188,249,192, 67,231,138, 34, 39,242,174,105,156, 0, 49, 68,137,201,210, 54, 51,219,195, +254,237,131, 73, 90, 16,199,224, 36, 4,225,216, 38,249, 68, 29,115,208,214, 26,201, 72,237,109, 19,130, 4,239, 19,145,210,100, +114,210, 54,250,166,169,166,211,189,203,135,119,238, 76, 39,179,166,114,204,140,136, 90, 43, 68, 58,117,122, 23, 96,124,233,197, + 27,231,238,187,103, 52,234,139,136,136,111, 26,183,174, 11, 16,139, 94, 6,179, 5, 0,105,225, 40, 28,152, 67,114,182,214,117, + 91, 58, 97,211,119, 91, 7,134, 85,122,136,138, 72, 17,160,175, 23,245,236,224,240,214,229,195,253,163,249,108,217, 52, 46,198, +136,128,138,208,107,149,242,255, 19, 39,183, 21,169, 91,215,246,234, 83,219,187,187, 35,173, 41, 70, 37, 73,249, 3,130,132,198, +168, 97,145, 65,229,180,136,112,140, 9, 27, 68, 68,128, 86, 44,211,137,185,113,133,230,119, 10,156,246,145, 0,226,166,156,214, +203,163,241,222,173,241,193,241, 98, 94,214,181,231, 24, 19,238, 30, 17, 21, 11,107, 81,138,136,104,107,103, 32, 32,135,119,142, + 92,227,119,118,135, 74, 81, 80,132,145,177,227, 31,243,220, 2, 56, 45,194,194,177,141, 41, 32,105, 53, 34,130,107,229, 78, 75, +112, 72,183,219,219, 18,135, 67,108, 92,104,170,249,228,104, 62, 93,212,149, 11, 62, 66,183,167,153,153,136, 98,228,150,167, 38, + 17,128, 94, 47,247,163, 48, 25,207,130,243, 91,187, 35,130,238, 4, 66, 32, 34, 99, 76, 43, 31, 6, 96,129, 13,156,186, 91, 8, + 0,118,100,242, 42, 2,182,223,109, 75,129,224, 92, 93, 6, 31,136,200,102,186, 5,237, 33,161,232,192, 44,136,109, 49,158,110, +181,136,228,133,245, 62,159, 78, 22,145,121, 56,236, 67, 39, 52, 74,113, 62, 1, 86,169,180,227,149,187,136, 72,171,174, 5, 73, +112,242, 42, 74,183, 76, 60,131, 72,228,232,131,107,188,247, 44,162,140, 46,138, 92,145, 82, 68,117,237, 86, 90,161,100,172, 78, +198,211,238,142, 60,183,174,113,243,233,146, 35, 23,189,124, 69,158,165,119,171, 91, 71, 7, 20,225,100,143, 68,116, 36,150,163, +245, 36,192,116,225, 36, 85, 18,137,194, 33,120, 23, 66,224,200, 32,146,170,122, 99, 13, 18,146,162,166,118,174,241, 94,130, 36, +198,110, 77, 86,164, 96, 15, 54,179,206,249,249,172, 12, 33,218,204, 66,202, 64, 4, 86,183, 76, 86, 71,229,106,163, 35,172,190, +132,213, 59,144,244, 10, 28, 82, 95, 66,108,197, 7,146, 94, 18, 9,149, 82, 54, 51,237,147, 27, 8, 62,128, 96, 71, 33,174, 68, + 54,172, 8,173, 53, 75, 87, 47,230,101,230,163, 49, 74,186,147, 78,167, 3, 6,145, 69, 48,229, 67, 45,107,150, 22,178,254, 32, +192,192, 32,194, 33,134, 68, 5,197, 24, 56,173, 71,184, 59,164, 64, 16, 81, 27,221, 58,127, 91, 51, 98,148,150,123,232,234,126, + 72, 26,132,170,242, 49, 86,121,158, 41, 69,201, 5,181,136,128, 68, 22, 64, 88, 57,112, 90, 3, 32, 34,164, 75, 36,101,154, 72, +194, 36, 98,108,133, 96, 41,197,105,185,141,216,129,162, 34,136,144,106, 58,102,142, 81, 56,114, 75, 84, 8,176, 64,187,124, 16, +165, 21, 0,212,181, 19,129, 44, 51,233, 70,105,145,152, 86,222,121, 75,119,124, 98,247, 94, 90,255,106, 95, 56,134,176, 90, 82, + 76,188, 75,235,191,237,194, 88,218,189, 79, 68,214,154,116,176,179,243,128, 41,193,104,151,157, 94, 73, 41, 18,128,186,113,201, + 11,211,209, 33, 49, 6, 4, 92, 49,216, 41, 28, 65,199, 14, 3, 64,187, 26,225, 24, 34,199,181,188,173, 35,154,184,101, 82,184, + 53, 18,199,150,104, 1, 68,173,149,136,105, 41,223,141,141,204,192, 72,168,136, 8,209,135,216, 56,111,140, 74, 22,226,216, 82, +144,184, 10, 9,171,220, 2,164, 69,121, 56, 65, 16, 44,156,108, 19,185,149,126,117,165, 76, 90, 14,119,171, 73,220, 90, 43, 73, + 68,208, 74, 49,177,144, 48,175, 94,137, 16, 89,105,165,136, 28,196,164, 26,110, 45,196, 44, 41,228,180,171,185,107,147, 65,187, +158,200, 44, 18, 99,203,216,117, 38, 91,221,201, 20, 9, 87,247,110,195, 90,204,145, 25, 16, 72,147, 18, 37, 18,145, 82,198, 39, +233, 8,210, 90,129,243,145,217,249, 0, 0,250, 83,215, 15, 87,233, 35,108, 28, 14, 41,243, 88,239,214,206, 97,147,119, 67,187, +165,224, 46,232,101, 77,144,113,251, 78, 58, 20,141,185,251,170,125, 3,233, 77,182, 88,106,227, 33, 68, 0, 96, 0,194,199, 30, +123,236,248,248,120, 50,153,188,212,104,161,255,184, 15, 17,217,222,222,222,217,217,209, 0, 48,157, 78,175, 95,191,254,159,141, +242,153, 34,207,157,157, 29,250,207,134,248, 79,140, 78,124, 73,211,155,159,245,145, 89, 51, 26, 13,243, 60, 31, 13, 7,253,126, +111,119,103,123,119,103,251,236,233, 83,163,173,225,214,214, 48,179,214, 26, 75,132,214,102,233,228,222, 16, 33, 0, 32, 44, 23, +203, 24,185,105,220,108, 62,155, 76,166,215,111,222,186,126,227,206,100, 58,157,207,151,179,217,252,120, 58,255, 79,192, 64,178, +193, 98,189,238, 75,191,248,251,222,241,246, 55,127,253, 27,141,201,148, 74,101, 61,164,140,173,211,198,119,154,155, 54,150, 73, +247,175,180, 63,133,164, 67, 17,230,152,206, 49,225, 40,194,235,231, 36, 6,206,187,166,154,207,142,246,110, 92,189,253,175,126, +235,195,191,244,219,127,240, 18, 53, 16, 51,191,237,219,191,249,237,111,251,150,147, 39,119, 83,158,143,109, 73,223,202,168,211, +201,223,217,144, 87,169, 8,180,199,108, 92, 37,112,176,145,147, 51,199,232, 27, 87, 47,170,197, 84, 68, 6,195, 33,199,192, 73, +141, 44,204,193,249,166, 46,151,229,241,120, 58, 57,154,189,226,222,123,222,249, 77,111,124,239,227, 79, 93,189,115,240,146, 51, +144, 0, 60,248,224, 3,103, 78,159,230, 24, 5, 34, 75,228, 24,161,203,117, 68,162,196,200, 18, 37,182,181,127,122,147, 41,177, + 78,126, 1, 45,120,223, 74,250, 58, 87,226, 24,131,111,170,229,124, 49, 57,158,237,221, 62, 60,220,159,126,249, 27, 31, 61,119, +254, 52,187,154, 99,244,222,213, 85, 93, 46,170,166,118, 33,178, 66,252,234,215, 60,242, 29,223,240,232,155,191,246,203, 82,194, + 55,159,151, 47, 92,186,241,220,165,155,207,125,234,250,237,253,227,163,233,188,113,254, 63,130,129, 16, 32,212,203,106,126,216, + 82,155,109,225,192, 9, 33,150, 24, 68,152, 99, 16, 14, 49, 70,225, 40,235,202, 98, 93, 20,172, 78,198, 4, 86,180,236,117,136, +174,113,203,101, 53, 61,154,207,142,231,179,201,252,151,126,225, 87,162, 82,223,255,151,190,215,216, 30, 84,101,170,156,148,166, + 44, 51,121,158, 1,192,228,206,209, 63,251,197,223,250,179,111,249,202,193,160, 40,138,236,213,175,120,224, 85,143,220,223, 73, +201, 90,215, 93, 44,170,247,127,244,169,223,248,253,199,103,139,242, 63, 88, 12, 98,225, 0, 27,212, 95,122,247,157,100, 53, 10, + 71,230,100,157,110,177,221,159,180, 43,215, 10, 53,105,139, 54,102,246, 62, 52,181,171,150, 77, 85,214,117,237,131,143, 44, 82, + 85,245,187,126,226, 31,109, 15,122,175,120,228,190,211,103, 79, 8, 66,150,103,131, 97, 36, 34,231,242, 84,254, 62,241,161,167, +144,112,107,123,184,123,106,171,215, 47,180, 86,237,166, 23, 82, 32,163, 81,239,138,219, 28,255, 0, 0, 18,112, 73, 68, 65, 84, +155,222,244,186,183,188,241,117, 32, 18, 66, 60,154, 46, 94,188,114,235,183,255,224,227, 47, 94,187,243,255,215, 22, 51,121,191, +216, 58,157, 4,140,109, 76,109, 45,146, 10,100,199, 33,245,156,120,230,192,209,167,104,210,138,243,218, 2,154, 59,213, 92, 27, +183,219,203,164, 18, 41, 74,130,226, 52,145, 70, 68,162,166,118, 23,159,187,182,127,107,124,226,212, 86,127, 88,244, 6, 69,209, +207, 87,198, 79, 70, 39, 66, 87, 59,142,146,101, 70, 91,173,149, 34,213,218,105,117, 48,144,162,211,167,118,238, 57,185,253,134, +255,226, 21, 8, 16, 66,248,228,243,215,222,247,145, 39,159,121,241,186,235,170,169,207,195, 22,115, 77,185,156,141,187,170,102, + 83, 41,152,190,161,128,180,202,114,211,202,204, 9,132,153,125,112,117, 8,181, 4,207,193,199,216,196, 16,152, 35,135, 86,100, +153, 72, 48, 21, 18, 51, 76, 70,107,155,153, 24, 34, 18,130,128,214,100,173, 73,192, 22, 71,201, 11,109,140, 73, 52, 1,124,250, +174, 93, 81, 22,184, 82,132,175,208, 52,233, 16, 37,173,133, 89,148, 86, 95,250, 69, 47,123,237,171, 30, 18,225, 24,249,242,181, +219,255,251,175,254,238,254,120,202,159,139,216,228,223,214,126, 67,202, 40,197,155, 39, 49,179,180,250, 89,236, 86,149,218, 12, +187, 82,150, 81,152,171,197,244,248, 96,127,124, 48,245, 81,125,241, 27,190,124, 56, 26,184,166,140,174,242,205,178,169, 22,245, +178, 20, 1,235, 66,222,203, 66, 8, 34,108,180,138, 9, 34, 86, 42, 43,108,175,151, 23,131, 34,207,173,177,214, 24, 69, 41,171, + 64,218,100, 7,218,190,153,213,109,219,100, 86, 96,125, 67, 69, 68,117, 72,144, 82,148,234,247, 71, 30,190,240,174,191,246,142, + 24,226,225,209,244,189, 31,252,248,191,254,200, 39,255, 29, 13,212, 44,143,166, 7,151, 18,103,215, 54,206, 36, 64, 73, 58, 63, +234,228,229,144,126, 16,163,119,161,169,155,197,188,156, 28,207,142,199,179,233,100,254,196, 31, 62,190, 92,214, 23, 30,190,239, +101,175,120,224,220,249,179,189,126,110, 11,201, 66, 8, 62, 75, 93,144,198,154,224, 3, 0, 32,145,177, 42,203,179, 44,207, 50, +107,180, 81,164,168, 67, 96, 87,226, 91,217,196,237, 86, 9, 87,247, 17, 87, 10, 30,222, 80, 55, 37, 51, 49, 39, 84,144,152, 68, + 24,149,162, 51,103, 78,252, 87,223,242,198,239,124,203, 87,143,143,102,191,246,190,143,124,232,201, 23,254, 20, 21,217,163,143, + 62,250,141, 95,243, 69, 95,247, 21,175,228,187,180,189, 29, 80,208,202, 44, 86, 73,161, 48,115, 12, 49,201,144,231,179,229,244, +120, 49,155,204,103,211,114, 89,214, 46, 68, 68, 52, 90, 13,250,249,238,238,240,228,217, 19,163, 81, 95, 27,205, 44, 29,216, 7, +136,144,122, 80,180,214, 70, 39,177, 10, 37,214,118, 5, 39,180,240, 84,123, 92,220,229, 69, 43,112,163,101,107, 24,214,120, 70, +130,143, 25, 58,248, 39,198, 16,121, 29, 36,219,188,197, 53,161,105,220,100, 94,255,252,191,250,189, 59,135,227, 52, 23,225,179, + 62, 46, 92,184,240,192, 3, 15,104, 88, 97,206,208,106,173, 35,183,238,211, 66,203, 27,192, 74, 11, 83, 69,110, 26, 95,149, 77, + 85, 54, 77,237,156, 15, 33,198,182, 57, 22,128, 16, 98,140,139, 69, 5,123,199,174,118,253, 65, 47, 43,172, 53, 38,177,194,233, +161, 84,250,175,109, 27,104, 55,214, 6, 56,182,198,202, 58,227,220,237, 65,114,215, 70,235,236, 7,157,154, 75, 41,165,173, 49, +166,167,108,161, 77, 78, 38,211, 38, 51, 89, 97,108, 78,202, 0,176,175,202,239,252,158,183, 47, 38,119, 38,135,251, 23, 95,184, +250, 35, 63,249, 79,199,147,249,191,113,139,233,172, 40,250, 59,222, 55,177,149, 46, 38,253,120,135, 20,118, 0,231,234,126,197, +200,233,111, 18,185, 35,160, 34,234,228, 49,100,140,206, 50,147,247,242, 44,183, 73, 77,164,136,148, 86,198,106,165,148,210,164, + 18, 99,157, 68, 86, 45,185,158, 90, 51, 40,213,206,107,118, 25, 19, 76,182,102, 45, 89, 90, 0,183,251,126, 71, 84,181,177, 50, +153, 39, 13, 7,201,181, 45,140,237, 41,155, 43,157, 41,173, 81, 32,184,186, 44,247,170,249, 97, 57, 63,170,150,101, 93, 55,193, +133, 83, 39,182,254,225,143,190,115,111,255,232, 31,191,251,183,159,189,124,227,179, 24, 40,239,239, 12, 79, 61, 24,130,227,232, + 87,127,163,119, 28,154, 14,157,247, 33,196, 24,130,247, 1, 92, 16,230, 86, 20, 68,168,136,180, 81, 89,102,181, 86, 72,168,181, +182, 86,101, 69,214,235,229, 69, 47,207,114,155, 21, 89,150, 25, 99,140,177, 90,117,108, 89, 43, 56, 72,158,211,110, 46,162,214, +137,168,107,168,199,110,195,193, 93, 48,231,154,254,134,149, 81,144, 8, 80, 17, 17,180, 50, 42, 4, 17,223, 84,213,108,236,189, + 71,101,149, 54, 89, 62, 80,198, 70, 87,207, 38,147,201,248,200,213, 77,234,175, 78,233,197,238,214,224, 7,223,241,205,139,217, +242,103,126,249,183, 47, 94,187,125,151,129,234,229,116,118,116,131, 5, 20, 41, 84, 70,105,107,108, 63,235,107, 36, 66, 16,142, + 49,134, 38,250,202,215,139,166, 90, 84,101, 89, 45,171, 24,217, 56,101,173, 14,153,101, 22,173,148,128, 36,241, 90,214, 53,231, +217,204,218,204,216,204,152, 36, 6,211,109, 48,238, 4, 97,173,248, 42,125,178,174, 1,113, 85, 12,174, 80,114,132, 13,116,122, +227, 71,157,212, 68, 37,161,135, 38,165,128, 90,166, 59, 85,149,218,100,218,102, 68, 42, 6,231,171,121,189,152,132,122,162,137, +251,253, 28, 65,198,227,105, 93,186, 94, 97, 83,162,174, 20,245, 6,189, 31,120,251, 91, 14,198,211,159,250,191,126, 35, 69, 24, + 45, 0,121,127,123,116,242,254, 24,124, 12, 46,248,198, 55, 75, 87, 45, 93,181,116,174,138,145, 17, 80,219, 44,203, 11,109,173, +178,189, 44,114,240,193, 52, 65, 27, 99,109, 96, 6,165,137, 89, 8, 81, 25,101,140,182,214,102,185,177,169, 77,196,104,109,148, +210,186,141, 59, 68,216,110, 46, 66, 84,144,252,135,168,107,118,218,176, 14, 34, 66, 59, 84,161, 27, 70,176,242, 47,194,212,114, +212,138,165, 90,197, 75, 43,236, 74,242, 41, 34, 36,146, 24,125,189, 88,142, 15,202,233, 65,185,152,214, 85,229, 26,231,125, 8, + 33,166, 83,186,151,103,214,232,197,188,172, 43,215, 27, 20,136,160, 21,161,213,167, 78,109,255,232, 59,191,227,201, 75,251,151, + 14, 23, 26, 1,124,179,112,229, 49,162, 82, 74,171,188,151,229,253,222,144, 99,112, 77, 57, 45,103,135,211,227,201,248,224,104, + 49, 95,198,200, 73,123, 70, 68, 9,198, 39,165,178, 28,109,102, 40,253,178, 81,218,104, 99,181,214,218,152, 86,222,169,136, 72, + 41,165, 90,109, 81,219, 48, 71, 68, 27,221,131,136,169, 21,171,221, 92, 73, 30,176,106, 56, 76,217,215, 90,222,130, 73,253,167, + 80,165, 46, 85,221,105,185, 84,234,149, 20, 14,161, 94, 54,229,164,154,143,203,249,113,181, 92, 54,117,227,155, 52,237, 36, 50, +179,240, 70, 92, 71, 24, 12,122,121,145, 45,102,101, 89, 53, 59,219, 3, 68,157,216,245,126, 63,151,195,133, 6,192,114,118, 52, +190,241, 60, 0,162,106,215,196,204,193,123, 87, 55,203,101, 53,157,204,103,147,197, 98, 94, 54,141,151, 40,164, 41,207,147, 76, +198,104,163,141, 73, 93,165, 73,243,170,148,209, 73, 23,152, 98, 13,181,255,180,199, 85,171, 28, 68, 2, 90,185, 76,183,203,144, +146, 67, 37,178,131,136,210, 40,142,244,157,238,119,219, 6,227,164,181,131,213, 78, 4,136,190,113,181,103,239, 98,116, 28, 3, + 71, 31,234,178,169,166,245,178,106, 26,231,156,143, 33,134,216,146, 51,156, 74,159,246,112,108,139,209,162,151, 25,163, 38,199, +243, 24,121,231,196, 86,242,209, 46, 81,172,155,233,100,190,145,153,129,176,132, 24, 92,237,150,203,106, 62, 91, 46,102,101, 89, + 54, 77,227, 56,178,214, 42,248,150,242, 78,199, 69,150,228,104, 70,107,157, 12,178, 62,206,215,210, 52, 76,159,168,141, 16,131, +157, 94,109,181,185,214,198, 66, 34, 74, 38,107, 55,224,170,149,184,211, 72,146, 66, 66,129,164, 73,114,105, 50, 0, 32, 42, 83, + 40, 11,174, 42, 23,203,241,209,254,216, 55,110, 48, 44,108,102, 3, 5,244, 33, 32, 66,136, 64,107,126,170,107,155,130,148,240, +245,250,121, 93,187,235, 87,110,159, 56,181,147,132,204,169, 59, 50,212,181,235, 82,158,174,186, 15,209, 53,190,174, 92, 83,123, +239, 67,240,137,250,110, 65, 49, 34,210, 70,217,204, 22,121,150,229, 86,183, 42,229,181,117,186,206,219,238,157,175,186, 98,161, + 51, 71,187,131,168,213,161, 67,107, 11,192,245,175,175, 84,136,157, 56, 82,119, 17, 71, 1, 98, 26, 68,197, 49, 32, 81,150, 15, + 85, 43,213,172, 93, 53, 71,241,253,194,224,201,173,229, 98,121,116, 56, 61,220,159,110,237, 12,182,183, 7,153,214, 33,132,232, + 99,136,145, 99,234, 50, 76,181, 1,119,246, 2,173,213,246,206, 96,122, 60, 61, 60,156, 98, 7,119, 64,244, 65, 64, 68, 80, 86, +244,168,143, 33,132, 24,146,254, 0,149, 34, 17, 77, 10,172,181,189,126,222,235, 23,131, 65,111, 48,236, 37,121,118,123, 66,117, + 27, 10, 96,181, 41,218, 28, 89,218,169, 99,152,132,244, 29,119, 75,173, 43,117, 58,191,228,107, 93,156,218, 8,195, 74,119,157, +215,173, 40, 48,177,218, 8,168,148, 22, 14,190,158, 45,150,199,229,124, 92, 45,102,117, 85,187,110,226,138,176, 88,163, 79,159, +217,110, 26,127,245,210,173,178,246,231,206,157,232,245,115,171, 40,248, 16, 2,180,241,168,163,215, 91, 65, 22, 81,209,203,139, +194,194,180,214,237,137,169,148, 48, 99,139,185, 2, 50,182, 50, 52,133,198, 40,102, 67, 68, 34,172,181,206,138,172,223, 47,250, +195,162, 63,232, 21, 69,222,101, 55,154,212, 58,237,235,210,188, 46,163,129,174,146, 72,103,211,134,180, 7, 9,211,235,164,167, +164, 44, 6,210,201,141,186,149, 70, 37,225,106, 59,203,137,160, 3, 51, 69, 66,104,202,102,121, 92,206, 14,151,169,216,169, 93, +154,149,149,122, 35, 91, 93, 6, 66, 10,186,187, 39, 70,195, 16,167,199,179, 43,151,110, 15,183,250,167, 78,109, 41, 69, 27,253, +139,177, 83,110, 96,123,154, 80, 23,131,140,213,253, 94,222,246,194,198,182, 47, 43,237, 20, 64,212,154,108,102, 56, 10, 42,204, +172,105,147,192,126,158,101,182, 29,135, 64, 73,189,221,101,104, 43, 28,123,245,121,234, 55, 95, 65, 22,132,176,230,222,215, 95, +181, 98, 49, 76, 26,108,149,182, 18,170,182,107, 31, 73,165, 81, 67,194,145,131,115,213,162, 94, 30,149,211,131,229,124, 86, 46, +235,186,106, 86,205,223,145, 25, 54, 96,155,110, 45,109,228, 27, 12,123,121,145,205,231,203,103,159,190, 90, 20,246,244,233, 29, +155, 27,133, 10, 0, 4, 35, 9,137,112, 39,164,107, 99,144,244,250,189,221,147, 59, 33,229,149, 49,166, 49, 98,193,199, 16,130, +119,173,200, 5, 1,148, 86,198,104,155, 89, 99,181,177,166, 21,222,183,103, 10,201,218, 54,152,244, 60, 29, 6, 64, 40, 32, 29, +210,213, 41, 84,161, 67, 34,147,114,139,214, 94,213,157,119,216, 6, 29,133,164, 17, 41,201, 50,152, 99,116,141,171,102,213, 98, +188,156, 30,148,139, 69,185,172,155,198,121,151,218,143,227, 74,183,112, 87, 55,236, 93, 21, 30, 8, 75,191, 87,216,179,122, 49, +171,158,125,250,114, 94,100,231,238, 61,153, 23, 25, 1, 10,174, 58,121, 55, 50,105,219,219, 26,158,186, 47,198, 40, 49,164, 41, + 49, 33, 52,193, 55,193,121,239, 67,108, 11,209, 36,105,165,213, 60, 15, 74,103, 19,181,186, 96, 4,220, 16,136, 80,187,154,187, + 36, 8, 27, 32,206,167,233, 0, 16, 86, 25, 16,162,106,131, 78, 55,118, 2, 59,233, 27,115, 12,222,123, 87, 54,174, 12,105,198, + 18,161,210, 74, 5, 21, 21, 83, 36, 66, 22,148,187,193,162,110,196,136,172,219,189, 59,237, 19, 21,253,252,204,185, 19,179,201, +226,153,167, 47, 15, 7,189,123, 78,239,216,220, 2,175, 78,183, 21, 96,166,140,201,250, 42, 1,242, 49,168,224, 41, 52, 74, 55, +218, 56, 19, 60,115, 76,253,214, 93, 42,187,121, 24, 99, 23, 98, 1,215,194, 92,236, 4,106, 8, 40, 36,216,226,220,119, 97,132, +107,254,123,237, 57, 74, 43,101, 73,107,210,182,155, 73,169, 18, 59, 18,163,231, 16, 98,112,190, 41,171,217,193,228,224,214,248, +112, 82, 46, 43, 34, 44,138, 60,165,175,109,184,243, 33,129, 50,112, 23, 76,212,118,118,222, 69, 1,138, 32,162, 53,122,123,123, + 96,172,158, 28, 47,158,123,246,234,238,238,112,107,107,160,141,130, 52,216,102,147, 89,149,149,168, 70, 98,210, 87, 18, 41, 80, +105,248,192,221,144, 37, 81,183,155, 72, 86,133,100, 11,222, 32,116,214,106,229, 97,216,178, 0, 68, 73,222, 35,107,253,119,123, +232, 19,162, 78,147,240,180,206,200,100, 74, 27, 68, 18, 97,223,212,204, 1, 1, 72, 25,157,103, 8,253, 96,115, 69, 10,137,180, + 49,199,227,201,248, 96,178,127,251, 86, 12,177, 63, 40, 6,163,158, 49, 9,186,101,142,173, 88,168, 19,182, 36, 2, 6,101,147, +227, 20, 16, 22, 64, 36,165,138, 34, 35,162,204,234,163,227,197,209,241, 98,119,123, 80,244,108,194,249, 90, 86, 35, 6, 31,163, +151, 24, 91, 76,158,131, 36,193, 41,174,149,201, 29,180,152, 74,101, 90,207,177,128, 86,254,133,120, 87, 35,238,166,246,105,237, + 60,130,119,105,173, 49,141, 40,201,180,201,148,201,181,201,144,148, 8, 7,239, 56,134, 84, 86, 72, 12,174,156, 52,203,227,122, + 49,169,171,133,175, 27, 31,124,240, 81, 43,218, 61, 57,234, 15,138,197,172,156, 28, 79,199,135, 19,173,212,214,206, 96,184, 53, +180,185, 5,128, 52,229, 37,132,184, 26,219,193,188,130,221, 58, 92, 87, 36,165,117,214,104, 25, 20,136,120, 60, 89,220, 58, 56, +222,234, 21, 46,172,104, 31,142,146, 72,139, 24,132, 91,198,162,211, 39,109,236,156, 86,203,185, 50, 23,174, 0,209,150, 41,234, + 62, 89, 99, 21,155,130,190,212, 77,152, 70,179,117,217,141,210, 70,153, 92,155, 92,217, 92,105, 11, 34, 49,161, 46,193, 7, 87, + 53,203, 73,189, 60, 42,231,243,170,172,234, 52, 6, 46,141,143,216,208, 1, 43,196,225,168,151, 23,166, 92,214,179,233,226,240, + 96,122,184, 63, 25,110, 13,118, 78, 12,139, 94,174,181,210,154, 67, 55,210, 42, 85, 27, 32,200,119, 43,172,210,253, 82,138,108, +102, 71,195,158,136, 28, 46,150, 37, 43, 0, 76, 6,226,200,142,147,251,180,252,215,122,130, 94, 11,201,172,212,255,237,112, 62, +252,140, 56,251,105, 20, 98,107, 17,162, 86, 69,220,129,134,221, 33,133,148,230,254,164, 25, 64, 32, 18, 92,197,190,118,245,178, + 94, 28,151,243,241,114,190,168,202,170,174, 92,154,163,211,141,125, 88,163, 32, 68, 72,137, 9, 66, 20,132,148,178, 14,134,253, +229,162, 44, 23,229,124,186,200,114, 59,218, 30, 12,134, 61,165,149, 37, 19,163,194, 16, 2, 70, 76, 19, 63,165,187,175,178,158, + 21,168, 20, 90,107, 6,253,156, 89,230,101,232, 12, 36,177,163,186, 2,180, 36, 87, 43,230,107, 79,227,212,156, 10, 43,229, 52, +224,122, 87,221,101,170,116,144,183,254,210, 29,252,233, 61,117,225, 8, 1, 9, 72, 1, 33, 8,138,112, 58, 52,163,171, 93, 61, +175, 23,199,203,249, 98,185, 40,235,170,105,106,231,156, 15, 62,182,131, 2, 87,122,110,104,245,193,136, 72, 20, 58,200,164,181, +122, 81,216, 44, 51,253, 97,175, 90,214,229,162,218,187,117,120,168,213,112,216, 31,108,245,172, 49, 68,164, 21,132,164,237,149, + 40,146,172,155,154, 81, 36,229,135,137,146,234, 23, 49,247, 50,141,188, 26,198, 28,219, 14,128, 36, 37,110,247, 39,118, 54,161, +118,160, 6, 8, 10, 34,225, 42,214,194,154,147,105,245,208,105,100, 75, 74,127, 16,112, 37,188, 94,109, 73, 72,137, 28, 83,192, + 8, 78, 18,197,214,148,243,170,172,170,101, 93, 85,181,107, 92,138, 51, 45,170,187,202,106, 54, 68,215,204,178, 42, 99, 16,145, +136,137, 86,224, 36, 88,163,212,176,176,153,169,150,245,114, 89, 29,141,167,211,201,188,232,231,131, 65,209,158,119, 4, 36, 36, + 34,194, 68,212,150, 83, 93, 54, 73, 90, 43,155, 25,173, 3, 0,235, 77,173,230, 74, 55,189,210, 37,175,183,206, 70, 24, 90,241, + 13, 27, 54,105,219, 68, 9, 73, 86, 8, 41,110,144,128,157,226,185, 37,181, 87,163, 71,162, 15,222,185,166,118,181,107,154,198, +123,159,100,232,132,160, 8, 65,168,213,219, 72,186, 37, 2,128,204,105, 45, 44,146, 62, 71, 34,100, 70, 68,134, 85, 26, 10,152, + 20,217,121,145, 41, 77,117,229,170,178,153, 30,207, 23,179,178,232,229, 69, 47, 51, 70,175,182, 61,183, 37, 15,227, 26,167, 76, +205,158, 93,169,177,154,252,146,132,160,120, 23, 71,183,166,234, 48,229,199,237,251, 92, 29, 81,109, 11, 69,218, 92,146,118,146, + 0, 17, 66,183, 73, 5, 58, 5,118,138,140,169,156,145, 16, 99,228, 52,126,199, 7, 22, 38, 84,218, 72, 18,190, 38,117,120, 88, +205,138,142, 41,123, 75,195, 64, 65, 0,147,182, 59, 97,247,204,235,102,173,141, 17, 81,237, 93,208, 74,229, 69, 70,138,234,146, +154,218,205, 38,243,114, 81,229, 69,150, 21,214,104,213,201,250, 87, 29, 16, 93,244, 87, 27,181, 88,146, 99,108,108,242, 21, 91, +185,238,176,217,156, 77,213,237, 47, 89,137,201,164, 59,159, 54, 9,209, 54,117, 76,130,121, 94,113,182,177,157,102, 25, 35,175, + 74, 27,102, 17, 73,110,143, 6, 73,145,214,154,141, 78,214, 73,102, 74,147,184, 83,168,102, 94, 15,198,129,117,163,252,221,199, + 5,110,166,240,162, 21,101,185, 69,196,110,216,145,175,202,212, 61,157,170,188,164, 39, 88,141, 25, 92, 39, 35,122,131,142,227, + 13,183, 89, 77,144,109,139,136,205, 72,140,107,243,116, 1, 28, 87, 68, 76, 23,113, 56, 53, 11,164, 31,112, 43,233,111, 85,201, + 49, 73, 26, 90, 26,174,229, 20,101, 45, 53, 71, 68, 18, 66,101,136, 20,147, 54, 58, 70,142,173,153, 66,178,212,106,202, 84,226, +155, 65,144,129,219, 60,235,179, 48,241,146, 80,115,173, 21,228, 6, 16,188, 15, 77,227,154,198,107, 77,198,166, 6, 97,236, 10, + 26, 89, 17,182,155, 30,212,169,180, 87,198,235, 54,210, 93,187,108, 51, 79, 79,138,179, 14,236, 73,203, 0,192,100, 20,236,154, + 9,186,169, 71,237, 92,163,142,156, 76,189, 79,188, 30, 34,181,161,206, 19, 94, 15,134,104,177,233, 85, 90,169, 80, 43,181,242, + 44,102,225, 8, 76, 44, 2,192, 45, 37,196,194,169,186, 17,102,196, 21, 79,157, 74,104, 36, 69, 70,171,100,216, 52, 55,171,105, +188, 78,189,127, 68,169,108, 72,245, 4,172, 74, 13, 89,171,234,160,189, 88,154, 35, 6,210, 2,183,128,192,109, 50, 35, 93, 86, +211,238, 43, 1, 72,205, 39,235, 10,113, 51,161,111,251,119,187, 78,152,216,154,104, 67,163,191,234,172,104,203,245,141,193, 83, +176,174, 10, 16, 81, 18,144,152, 38,114,248,160,144, 66,171, 35,137,237,161,182, 82,217,243, 26,230,129, 77, 94, 63, 37,153,137, + 87, 81,138, 98,196, 16,216,135,232, 92,208, 90, 25,211, 98,162,233,148,148,181, 7,117, 45, 13,176, 89, 55,164,196,183,195,156, + 82,243, 71, 26,202,182,142,208,237, 24,173, 77, 30,120,205,159, 39, 42, 27, 90, 94,124,221,248,210, 50,181,145, 55,122, 71,215, +240, 48,127,250,248, 45,185, 43,223, 77, 12,172, 82, 6, 81, 17, 70, 69, 62, 16,250,200, 33, 4,160,118, 54,109,187,173, 97, 99, +138,199, 93,195,189, 88,186, 62, 69, 69,164, 56, 70, 9,145, 99,140, 62,144, 53,122, 37, 93, 77, 48, 64,151, 7,133,192,119, 43, + 49, 25,187,220,185, 11,120, 93,106,212, 89,230, 51,180,251, 27,130,217, 21, 40, 35, 9,130,227, 78,118,198,194,210,181, 6,173, + 39,142,241,186,245, 34,253,234, 42,112,180,178, 55, 94, 13, 43,150,213,203, 35,161, 66, 5,128,138, 40,106,162,116, 42,134, 40, + 49, 53,141, 9,240,221,192, 71, 82,132,172, 24, 31,108,135,172,178,194,200,208,246,160,176,116,252, 38,166,215,106,255, 23, 55, +177,107,129,219, 80, 88,224, 58,142,200,202, 74,184,169,220, 89,107, 7, 54,133, 23,188, 14, 37,171,237,179,234,108,145,181,233, +218,112,184,222,223,119,207,103, 3,184,123,164, 27,111,188,202,166, 24, 38,193,220,164,180, 70,196,152,238,104, 4,142, 49, 85, +218,201,166,159, 41,204,130,196,195,145, 34, 21,149, 38,241, 44, 81,146, 18,147,141, 38, 66, 90, 25, 8, 69, 36,198,176,114,138, +181, 49,112,163,103,245,179,212, 91,119, 59, 78, 39, 63, 89,233, 64, 96,189,131, 90,157, 8,183, 42,106, 97, 16, 96,248,204,169, +118,155, 80, 68,178, 8,127,218,247,187,231,119,133,249,102,143,183, 0,128, 34, 66,221, 22, 67,204,105,146,186,116,119,191, 3, + 94, 16,185,133,231,136,148, 40,173,146,156,165, 29, 33,141,192,204,138,136,163,108, 36,138,252, 25, 27,125,157,213,108,218,104, +195,117,100,131,120, 91,205,235,105,207, 93,216,220, 61,171, 93,211,254,104,221,204, 4, 43, 67,180, 77, 89,119,171,109, 58,202, + 74, 86,187,182,237,128,227, 78, 7,153, 22,147, 88,186,174, 28, 0, 17,108,105, 21, 32,194, 24, 5, 49, 10, 3, 51, 2, 69, 6, + 0, 38, 68, 38, 68, 33, 20, 33,165,132, 35, 70, 68, 2, 8, 32, 28, 37, 2, 40, 74,157,128,136,143, 61,246,216, 93,150,121,105, + 53,220,252,135,191, 6,222,189, 13,229,255, 3,105, 65,234, 37,157, 34,125,171, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/smooth.png.c b/source/blender/editors/datafiles/smooth.png.c new file mode 100644 index 00000000000..bb54061b172 --- /dev/null +++ b/source/blender/editors/datafiles/smooth.png.c @@ -0,0 +1,520 @@ +/* DataToC output of file <smooth_png> */ + +int datatoc_smooth_png_size= 16428; +char datatoc_smooth_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, + 73, 72, 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177, +143, 11,252, 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, + 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, 19, 0, 34, 13, 86,254,139, 21, 0, + 0, 32, 0, 73, 68, 65, 84,120,218,236,188,119,124, 92,247,117, 39,250,107,183, 78, 31, 12, 48,131, 54,232,133,189, 87,129, 20, +213,169, 94, 28, 57,142,101, 59, 94,103, 99,167, 56,137,157,178,155,141,119, 55, 78, 54,222, 36, 78, 98, 39,246,102,159, 21,199, + 69,242,202, 77,178,122,165, 68, 82,164, 72,138,189, 1, 4, 65,130,232, 29,152, 94,111,249,149,247,199,189, 51,128,100, 39,235, +228,249,237,250,125,222, 94,138, 36, 0, 94,205,156, 57,247,212,239,249,158, 31,220,187,119, 47,248,159, 94, 43,111,106,106,136, +254,196,123,112, 75, 75,203,143, 30,255,195,142, 72,205, 31,255,225,191,233, 91,223,181,181, 51,254,245,111, 63,222, 29, 68,175, +190,115,126,249,166,230,230,184, 15, 75,119,222,127,219,235,207, 30,232,232,141, 55,198, 99, 70,126, 49, 28, 9, 62,112,235,246, +221,107,187, 94, 63,126, 1, 0,128, 0, 4, 15,252,210,163,253,103,206,212,212, 6,101, 69,214, 61, 94, 33, 4,196,208,235,211, +219, 58,155,254,254, 63,126, 18, 0, 64, 32, 0, 8,226,238,213, 29,217,116, 6, 65, 4, 0, 7, 0, 64, 8, 17,130,182,101,119, +116, 55,127,229,143,126, 21, 9, 0,178, 75,227,138, 30,240,135, 66,170,166, 66, 0, 56, 99,220,102,178, 44,109,187,237,193,254, +139, 35, 51,211, 11, 8, 8, 33, 73, 10, 23, 28, 17, 2, 17,134, 16, 2, 0,186,183,221,117,226,240,121,211, 40,173, 89,215,214, +217, 29, 71, 0, 0,219, 50, 56,181, 33,128,130,115,203,178, 32,132,175,127,239,155,143,126,242, 83, 39, 94,123, 62,159, 47,239, +255,208, 39, 16, 0,128,217,101,193, 40,181,140, 98, 62, 15, 1,120,245,185, 35,227,179,233, 82,102,250,153,195,253,173, 93, 93, +223,127,252, 43,176,175,175,239, 47,127,239, 17, 74,153,101, 90,132,224, 88,199,122,219, 44, 82,179, 48,112,233, 58, 98,230,197, +161,133,144, 66, 9, 0,176, 84, 44, 83,202, 20, 69,242,248,253,102,126,241, 71, 79, 62,191,121,231, 26, 72,141,129,254,145, 79, +252,230,199,125,161, 6,248, 83, 61,187,159,230,130, 0,128,107,231, 14, 28,124,254, 71,107,183,172, 78,205, 47,217,148,198,154, +162,127,253,213,239,191,112,240,212,242, 77,207,255,227,159,153,197,194,209,131,103, 63,240,225,219,137, 36, 9, 33, 16, 70,133, + 92,113,113, 62,245,203,255,254,203,238, 3,222,183,177,107,227, 77, 55,155,249, 4, 64, 48, 20, 9, 65,136, 56,231, 8, 65, 69, +145, 30,188,117, 27,182,249,192,232, 52,209, 60,170, 63, 20, 90,189,161, 75, 8,193, 41,133, 8, 33, 0, 17, 66,156,113, 76,200, + 39, 62,241,192, 67,247,239, 35,225,112,192, 44,230,252,161, 26,106,155, 66,112,219,178, 40,165, 0,130,186,198,250, 64,164,233, +248,145,211,132,150, 81,199,186, 77,140, 26, 8, 33,132, 9, 0, 16, 66, 40, 41,114, 77,172,205, 27,172,251,250,255,245, 84,223, +205, 59,234,226,109,132, 51,202,108, 83,112, 6, 33,100,212,182, 45,187,117,205,110, 73,243,254,238,175,125,250,163, 31,186,235, +232,107,175, 94,159,205, 19,106, 22, 25,165, 64, 48,179, 92, 42, 21,203,157,155,247,253,201,239,254, 97, 93,109,176, 33, 18, 50, + 74,165,169,241,217,182,134, 8,254,216,195, 55, 91,166, 81, 46,150,202,165,114,231,198,155,110, 92, 58,142, 0,120,228,195,143, + 28, 57,124,242,194,249,107,136,224,228, 98, 6,149, 75, 70,169, 80, 42, 21,203,109,107,183, 79, 95,191,240,196,183, 95, 9, 4, + 60, 95,253,235,199,255,244,239,190,188,107,251,170,223,249,220,239,215, 52,214,129,159,213,179, 35, 43,191,249,240,163,247,121, + 36,254,173, 31,188,241, 27,159,252,216,154, 58,165,119,235, 46,143, 6, 19,115, 51,221,235,183,125,233,111,190,242,223,158,124, +241,159,179,129,189,123,247,126,245,191,126, 54,183, 56,201,185,109, 51, 24,142, 54, 77, 76,204,111,217,185, 11, 33,116,244,229, +239, 99,140, 11,249,226,134,109, 27, 56, 99,233,100, 50,149,204, 22,114,197, 27, 99,179,127,249,205,231,222, 31, 8,154,155,227, + 49,197,154,159, 89,220,178,239, 46, 90, 76,188,240,212, 11,115,227, 19, 65, 63,131, 80, 4,195,126, 93,151,194,145, 32,181, 44, +106, 91, 8, 67, 77, 83, 60, 30,173, 62, 90,115,255,190,109,183,108, 89,115,101,120, 34, 91, 44,187, 47, 20,143,183,172,110, 10, +220,255,209, 95, 53, 10,233,197,233,201,218,104, 40, 90, 31, 97,156, 81,163, 40, 4, 69, 8, 35,140, 33,172,218, 48, 4, 64, 32, +132, 20, 85,174,169, 13,238,191,101,235,142, 85, 29, 58, 38, 87, 39,102, 9, 0,162, 54, 22, 73,207,143, 42,186, 55,218, 28, 55, +139, 89, 74,105,229,255, 67, 0, 8,206, 24, 23,130,115,225,188,132, 36, 73,156,139,114,217, 88,154, 79,221,114,223,253, 13,109, + 93,175, 30,189,252,193,219,119, 19, 0, 64,231,170, 30,140,177,109,150, 32, 68, 68,209, 49,161, 92,112,193, 57,227, 76,112, 33, +132,224,148,113,206, 53,175, 87, 82, 52,106, 91,254,144,242,228, 95,124,253, 83,191,246,208, 43, 47,189, 42, 51,107, 67,107, 84, +215, 21, 4, 0,144,117,191, 16,140, 81,139, 51, 42,132, 16, 8, 65,136,160, 19,125,132, 0, 0, 72,178, 20,172,141,169,154,119, +240,124,127, 62,147,141,182,111,216,183,111,243,231,190,240,100,103,188,110,219,190,125,251, 31,190, 77,214, 20, 4, 0, 96,102, +153,218, 38,163, 38,163, 54, 16, 28,112,198,153,237,152,169,105, 24,154,199, 31,235,216,148, 75,167,190,250,213,239,238,188,253, + 46,219,178,254,254,139,127,217,208,222,251,185,207,126,240,155,255,227,213,169,145,145,169,145,177, 99,103,175,226,120, 60,126, +251,174,110, 70, 45, 70,109,198,108,106,153,166, 97,148,139,101,163,108, 40,170, 28,142,198,231,167, 39,190,253, 15, 63,216,182, + 99, 77, 67,173,143, 16,145, 75,167, 89,201,232, 92,213, 57, 59, 62,121,207, 61, 55,189,242,234,137,165,217,165,142,120, 12,199, +227, 45, 55,111,105, 55, 13,203, 52, 12,163,236,252,103, 17, 9,247,238,188,167,166,169, 7, 19,249,181,103, 94,100,150,117,190, +127,172,181,165,254,137,127,124,182,156, 43, 53,182,196, 52, 5,188,241,218,201,233,137,185,223,253, 47, 95, 88,191,117,253,229, +147,167, 9, 0,160, 92, 50, 56, 23,156,115,206, 57,130,104,195,222,251,168,109,228,151,198, 5, 34, 23,143, 29,158, 75, 21,103, +150, 82,127,250,249,223,249,219,191,248,218, 47, 60,122,171,238,213,254,230,239,159,109,143,199,186,187,154, 94, 60,116, 46,253, +153,223,217,189,123,221,120,218,252,217,197,201,159,201, 21,143,199,209,207,234,181,150, 95,200,235,209,142,191,240,119,206,215, + 39, 95,254,111,159,125,116,255, 59, 47,252,247, 31,254,253,127,254,216, 99,143,190,252,173, 63,249,169, 50,192,189,183,223,244, +103,255,225, 87, 11,197, 50,132,104,184,255,202,205, 15, 60, 58,118,249,157,133,133, 84, 38,153, 59,122,114,240,211,191,253, 88, + 48, 18, 29, 60,119,250,218,240,212,127,250,202, 83,255,212, 71,195, 1,191,247, 59, 95,255,219,177,171,151, 66, 33,223,181, 43, + 35,190,128,214,182,122,171,172,200, 13, 45,237,153,228,124,123, 75, 84, 81,144,162,170,138,130,252, 94,237,238,190,205,119,238, +222,240,202,145,115,239,123,161, 64, 32,128,159,255,218,231,154,123, 55,223,184,116, 78,247,104,170,166,190,246,252, 17, 90,154, + 47,102,147,156,149, 52, 85,241, 7,189,170,166, 50,219, 20,140, 99,140,136, 68, 8,193,119,238,222,208, 22,171, 61, 53, 48,188, +242,133, 16, 86,253, 35, 23,143, 98, 9, 27,134, 49, 63, 53,171,107,138,101,209,134,214, 22,127, 56,166,251,188,146, 44, 1, 1, + 56,231, 2, 8,136,161,162,200,186, 71, 11,133,253, 27,214,180,255,197,111, 63,246,158,192,214,183,182, 77,213,228,141,125,183, + 45, 78,141,229,115, 69,159, 95,151, 21, 9, 66,134, 0, 5, 0, 64,136, 97,245,121, 8, 80,173, 70,100, 69,150, 85,105,123, 79, +251,193,211,253,238, 71,251,253,223,254, 88,164,190, 49, 80, 27,183, 10,243,132, 96, 77, 87, 61, 30, 77, 82, 36,140, 16,198, 8, +162,106, 80, 3, 66, 8, 46, 56, 23, 66,112,129, 9,246,250,116, 85,147, 59,194,161,227, 3,195,129, 64, 0,175,107,170,213, 84, + 88,223,210,205,169,129, 33,147,100, 34, 43,146, 44,203,152, 96,132, 16, 0, 64,112, 33, 0,119,196, 1, 0, 48,198, 13,195,180, + 45,138, 16,170,173,171, 89,191,101,109,123,180, 62,111, 81,210,222, 21, 39, 18, 54, 10, 25, 34,171,138,238, 69,132,112,198, 32, +132, 0, 66, 8, 33, 99, 76, 0,193,185, 0, 92, 0, 0, 16, 66, 4, 99, 85,149,147, 75, 25,106,211, 64,164,177,100,129,203, 87, + 71,246,221,180,153,148, 75,229,186,250, 26,219, 44, 10, 46,176, 36, 3, 33, 24,102, 66, 8, 8, 4, 99, 12, 8,193,185,224,140, + 11,225,190,144,172, 72, 77,221, 27, 86,235,254,196,236,232,212,248, 28, 22,165,117,171,218,115,169, 36, 90,189,105, 77,160,166, + 94,112,202, 57, 5, 0, 34, 68, 16, 66, 8, 33, 8,145,163, 90, 8, 4, 23, 2, 2, 16,170,107, 84, 61,222,153,201,249, 98, 38, + 57,120,250,240, 23,254,235,227,161, 0, 58,248,214, 89, 59,159,157,155, 77, 32,205, 91,131,136,204, 25,229,130,185,137, 2, 98, +136, 32, 0,192, 81, 52,132,144, 96, 84,211,208, 26,138,117,252,240,137, 23, 77,211, 82,189,222, 96,125,215,174,117,173, 77, 93, + 27, 62,244,209,251,238,255,197,123, 52,143,142, 0,128, 64,112,193, 25,224,206, 51, 1, 16, 8, 8,160,168, 92, 0, 8, 85,247, + 80,219,188,240,246,203, 15,124,224,150,185,233, 68, 38,145,120,233,135, 79, 79,205, 36,177,236,121,243,192,137,241,225,225,197, +133, 4,226,220,230,140,114,206, 56,163, 66,112, 1, 4,128, 80, 8,193, 25,181,109,155, 82, 74,109,166,106, 62, 85, 15,248,194, +161,246,205,183,231,144,250,249, 47,124,205, 35,227,223,254,163,223,155,155,158,249,248,111,125,166,125,253, 77, 45, 45, 49,194, +169,205, 57, 21,156,113, 46, 32, 16, 64,112,247, 69, 44,155, 82, 42,201, 82, 32,214,232,171,105,254,242,231, 62,111, 99,244,137, + 96, 48,234,129,159,124,108,255,236,204,226, 91,207, 63, 93, 91,223,232,245,200, 47, 60,249, 84,190, 96,193,203,135,159, 96,140, + 1,224,124, 14, 46, 56, 99,148,154,166,105, 91, 54, 0,160,161,173,183, 84, 54,206, 28,126, 91,146, 8, 23, 32, 90, 95,219,208, +210, 56, 53, 54,229, 15,250,226,221,155,190,249, 55,127,119,250,250,212, 39, 31,187,243,187,175,156,193,255,246,195,251, 25,179, +157,143,198,108,219,182, 44,211,180,108,203, 6, 0,134,106,107, 37, 69,255,209,147, 79,111,216,210, 51, 51, 53,191,251,230,157, +133, 92, 46,151,206, 60,241,189, 3, 1, 93, 97,102,186,189,187, 89,148,140,203,131, 83,254,160,135,216,166,201,220,208, 47, 56, +231,140, 50,198, 24,231, 60, 22,111,173,107,223, 60,116,250,141, 29, 55,173, 93,181,227,238,169,137,121, 1, 0, 66,248,196,233, +171,146, 68,168,105, 94, 27, 24,153,152,207,213, 5, 20,171, 84,164,140,195, 99, 63,250,107,202, 56,175,228,101,206,133, 16,162, +169,163,219, 23,105, 45,166,103, 32,145,207,190,125,104,232,202, 88, 58,153,251,232,167, 62, 56,112,238, 82,106, 41,179,126, 75, +239,248,200,180,164,144, 61,251,239, 53, 45,154, 73, 46,124,231,169,151,144,101, 83,106, 83,106,217,148, 82, 74, 25, 99,172,169, +189,179,148, 75,140, 93, 62,114,253,210,185,114,118,241,251,175,190,171,200,228,142,123,118, 94, 56,125,126,106, 98,254, 67,191, +249,155, 92,136,108,174,104, 26, 54,132, 34, 24,169, 83,117,127,215,170,118,252,145,135,246, 49,198, 25,227,156, 9,198,120,109, +180,166,161,103,151,224,180,161,107,155, 16,246,215,191,253,138, 71,176, 98,217,160,101,107,110,102,105,213,218,182, 51, 71,143, +157, 56, 51,180,118,117, 75, 42,149,123,254,217, 55,144,153,188,113,245,218,235,199, 47,131,159,171,188,214,220,220,140,192,207, +211, 5, 33,252,151, 9,244, 43, 31,125,248, 43,127,248,137, 7,111,218, 12, 0,184,109, 95,223,183,254,234,247, 21,130,239,223, +191,239,103, 41,211,222,189,123,143, 30, 61, 10, 0,208, 84, 21, 64, 80, 46, 27, 24,227,115,111,125,155, 72, 50,145, 61,103,143, + 30,106,110,107, 30,188, 52,180,102, 99, 47, 34, 26, 51,115,227, 35,211, 75,243,233,155,247,247, 93, 62,115, 57,149,204,198, 87, +175,221,186,107, 39,130, 80,112, 94,200, 46, 14, 93,188,240,187,127,246,245,233,133,228,191,186, 18,113, 5, 66, 8, 29,123,245, +137,185,177,107,241,158,141,153,197,241,158, 45,251,152, 85,190,124,252,128,164,106,186,174, 54,180,175,149, 60,161,114,102,126, +113,226, 42,130,200, 27,174, 57,243,206,105, 89, 34,165,146, 49, 63,155,232, 93,223,189, 97,199, 14,102,155, 66,112,179,148,203, +101,210,185, 76, 62,159, 45,153,166, 5, 0,152,154, 79,124,249,137,151,138,101,227,167, 21,168,175,175,239,223,125,124,127, 48, +164, 73,178, 58, 63,187, 16, 8,250,230,103, 22,155, 90,155, 5, 51, 15,188,114,124,113, 49,211,220, 84, 27,170,241,215,212,133, +182,222,124,231,141,203,167,230,102, 23, 59,186, 91,140,178, 97, 26, 22, 66, 72, 81,100, 73,145, 36, 66,136, 44, 67, 8, 57, 99, +148,218,182, 69, 45,203,178, 76,203, 50,109,211,180, 44,211, 54, 12,219, 44, 27, 79,188,120,228,194,208,232, 63, 47, 16,142,199, + 91,238,232, 91,219,212,181,193, 27,137, 23,115, 25,171, 92,106,237,234, 48,203,249,134,246, 53, 13, 77,225,133,233,249,196, 82, +150, 81,214,216, 28, 85, 20,160,233, 74, 91,239, 58, 89, 81,101,153, 40, 10, 81, 20, 25, 17,132, 32, 20, 64, 8,198, 25,165,140, +115, 32,132, 0, 2, 2,128, 49,198, 4, 75,146, 36, 43,146,162, 72,138, 34,109, 90,221,126,199,206,245,123, 55,173, 58,122,126, +144,115,241,227, 2, 5, 2, 1, 28,143,199,239,218,179,246,157, 55, 14,101,150,166,125, 62,141, 83,179,190, 99,221,204,232,240, +244,216,200,141,161, 81,206,185,166, 41,170,166, 48,198,108,203, 36, 4, 67,192,132,224, 0, 8, 88,185,156, 76,186,220, 53, 1, + 1, 5,132, 8, 57,249, 30, 97,132, 49,150, 8,150, 36, 73, 81, 36, 85,149, 21, 85,185,109,251,186, 61,155, 86, 49,155,141,207, + 45,189, 79, 32, 2, 32,156, 24,158,184,237,129,251, 2,209, 86,206, 40,179,141,197,241,126, 69,149, 40,165,145,186, 80, 48,228, +227,156, 67, 4, 9,145, 8,193, 70,217, 20, 34, 67, 36, 66, 8,129, 8, 1, 8, 48, 70,156, 59, 30,235,164, 81, 1, 1, 20, 72, + 0, 46,156, 10, 10, 8, 8, 48, 2, 16, 72, 8, 17, 9, 43,170,226,241, 9, 70,253,229,146,241,193,128,231,150,173,107,174, 92, +159,248,225,219,167, 87,244,196, 66,180,173, 89, 47, 16,185,126,225, 88,247,166, 62, 65, 97, 32,210, 32,201,146,199,155, 55, 13, +211,182, 40, 99, 46, 90,132, 49, 70, 24, 97,132,156, 60, 14,133,112, 10, 4, 8,133,211,134,137, 74, 55,230, 42,203,173,136,160, + 83,153, 49,198,132,112,164,196,178, 78, 20, 77,246,248,180, 72, 93, 40,218, 16,233,140, 55, 44,228,114,223,122,241,109, 33, 4, + 1, 0, 46, 78,221, 96, 86,174,190,165,211, 54,203,132, 40, 68,214, 85, 79, 8, 97, 34,203, 37, 74,109,198,184,112,158,119,245, + 13,160,219, 11, 58,239, 85, 45, 49,160, 83,120, 0,225,254, 27, 0, 8, 33, 33, 4, 20, 80, 8, 97,155,180, 84, 46, 51,202, 9, +193,235,118,236, 48, 75,249,114, 33,171, 40,202,182,219,183, 14, 95, 62, 55, 51, 58,210, 22,139,204, 26,144, 0, 8, 50,201,108, + 33, 87, 42,229,115,245,241, 22,205, 23,225,156, 67,136, 48,145,133, 2, 16,182, 57,103,156,115, 87, 5, 28, 2, 4,128, 0, 16, + 2,167, 71, 22,192, 49, 98,183, 42, 20, 66,188, 39,240, 34, 72, 32,148, 36,224,241,122, 52, 95, 72, 86,189,140,218,133, 50, 31, +186,112,254,198,141,233, 83,151, 71, 67,186, 60, 50,247,181,143, 61,184, 39, 87,176,182,239,217, 50, 56,107, 18, 32, 64, 83,107, +189,170,169,186,215, 79, 36,141, 81, 27,112,198, 24, 5, 0, 33,132, 1, 1,144, 35,196, 57, 23, 2, 2, 33,176, 83, 28,115, 71, + 68,224,138, 34,132, 83, 94,114,238,116,226, 16, 34,136, 32, 66, 0, 99, 34,132, 96,140, 42,154,174,104,222,197,201, 27, 55,134, +198, 0,128, 35, 35,211,254,250,216, 31,127,238,147,239, 28,120, 59, 85,178,175, 14, 77, 50,219,238, 89,219, 57,114,229, 50, 1, + 64, 52,181,175, 18, 66, 0, 8, 1, 4,130, 81, 33,184, 83, 97,137,202,199, 20, 8, 64,206, 33,128, 16, 0, 46, 56, 0,208, 81, + 18, 16, 16, 66,199,158,157, 86, 0, 98,130,116,111, 32,210,188, 74,210,124,227, 3, 71,143,190,113,194,227, 81, 39,199,230,183, +221,180,110,122,252,157,233,153,165, 15,253,242,125, 47, 63,123,232,194,120,226,254,120, 61, 66,240,225, 95,249,181,141, 55, 13, + 36,103,198,166,103, 18, 47, 61,115, 32,105,114, 28,143,199, 31,186,103, 47,128, 0,186, 85, 52, 7,156,113,193, 1,119,170,105, + 33, 0, 0, 80, 32, 8,133,107, 33,162,218,140,136,229,114, 25, 34, 4, 9,193,146, 44,235,190, 26,132,241,244,213, 83, 35, 67, + 99, 62,191,103, 33, 81, 88,179,161,125,247,254, 71, 54,244,237,211,176, 97,216, 48, 24, 14, 54,134,244, 88, 44,152, 75,167,147, +115, 19, 10,225, 2,240,174,238,214,222, 53,109, 37, 6, 8, 0, 64, 56, 53,172, 99, 3, 78, 97, 12,132, 16, 28, 0, 14,128, 0, + 64, 64, 0, 1,224,149,119, 23,156,115, 23,237,112,190, 17, 2, 0,136, 49,242, 4, 34,225,134,238, 66,102,225,226,137,183, 85, + 89,234,236,109,215,189,222, 72,116,230, 59, 79,190, 54, 63,189,120,117,120,186,185, 62,114,125,116,118,235,166,174,123, 63,252, +209,212,210,226,179, 79,126,247,248,192,216,183,190,241, 87,154,175,102,126,108,160,255,228,224,216,200, 12,142,199,227,247,221, +190,205,233, 48,128,211, 55,113, 46, 56,135,194,145, 9, 56,237,139,163, 44,206, 57, 99,148, 51,202, 40,171, 84,151, 2, 64,128, + 16, 84, 52,175, 47, 92, 95, 72, 77, 31,125,237, 77,127, 40,248,198,193, 75, 91, 54,119,106,190,154, 96, 77,221,158,189,155, 79, +157,187,190,117, 83,123,115, 60,234,213,149,245, 27,123,230, 39,110, 20, 50, 75,175, 31,185,248,225, 7,111, 62,249,246,241,151, +127,244,226,109, 15, 62,210,217,211, 62, 48, 48, 72, 0, 0,156,154,140, 59,149,185,168,186, 12,115, 11,126,183,224,230,140, 9, +193, 42,114, 80,167, 68, 37, 18, 14,132,163,161,134, 30,203, 44, 91,165,172, 96,236,212,145, 19, 75,139,169, 53,155, 86,253,250, +111, 60, 58,112,238,210,248,216, 25, 89,149, 41,128, 15, 63,114,103,160, 38,122,224,249,103,135,174, 79,245,174,238, 88,187,251, + 14,106, 91,219,206, 93,107,105,139, 37, 22, 19, 35,179,137, 63,254,247,255, 9, 80,186,227,174, 59, 96, 95, 95,223, 87, 63,255, +113, 87, 14,176, 28,220, 28, 49,156, 28,229,150,255,140,113,198, 25,227,130,115, 8, 33,145,176,162,170,186, 63,148, 89,154, 47, + 21,205,167,254,199,107,221, 29,141,197,162,209,222,209, 88, 42, 26,150,205, 54,110,233, 45,149,202,161,154, 64,203,234,157, 63, +250,198,215, 95,127,231,242,239,125,230, 99,197,244, 98, 32,228,159, 28,159, 63,112,224, 84, 71, 71,195,187,151, 70,246,109,237, +225, 66,152, 20, 79, 76,206,102, 44,134,227,241,248,157,187,123, 24,165,220,125, 22,148, 51,155, 81,198,168, 77, 45,219,182,109, +106, 83,203,178,109,219,102, 54,163,148, 65, 0, 52,143, 22,142, 53,213, 52,246,248, 35, 77, 8,203,212, 50, 82,137,132,109,218, +119, 63,178,223,239, 87, 74,133,210,250, 45,189,107,183,108, 40, 23,178, 61,155,111,114,156,223,171,195,144,223, 71, 75, 57, 73, +194,163, 35,211,187,110,237,179,139,249,158,158,150,225,209,217,206,150,232,249,254, 49, 90, 42, 69, 67,190,162,205, 8, 0,208, +178,108,193, 5,175, 68, 20, 39,200,113, 33,128, 99,219, 78, 55,206, 5, 0, 0, 99, 20,174,173, 13, 53,116, 41,122,160,148, 77, + 72,222, 80, 98,122,232, 59,143, 63,253,145, 79, 62,186,245,182,135,174, 13, 13,157, 63,117,101,195,150, 94,217, 91, 75, 41, 55, + 76,246,214,243, 47, 60,247,230, 73, 89,215,125, 88,196, 35,193, 77, 15,239, 75, 39, 51,151,250, 71, 21, 73,122,225,208,185,187, +118,175,189,251,142, 93,178,132,183,109, 2,253, 3, 35, 30,159, 10,210, 69, 2, 0,160,182,107, 19,194,137,198, 92,188,239,130, + 16, 40,170,210,216,185,206,162, 64,247,120,231, 70, 47,214, 54,247, 36,103, 70, 98,170, 55,214,177,165,163,231,196, 23,191,248, +205,173,107,219, 37,137,212, 55,213,125,231,233, 67, 31,188,207, 96,140, 31, 63,209,223,211,217,212, 89, 27,188,239,225,125, 77, + 29,171, 32, 2, 99,131,151,146,137,108,200,167, 29,127,119,224, 15, 62,253,193,181,187,239, 80, 61, 1, 39,134,216,166, 49,114, +229,130,125,232, 8,236,235,219,243,249, 95,191,155, 11, 46,120,213,114, 28,109, 1, 46, 4,132, 64,150,165, 88,115,139, 47,210, + 82, 72,207, 44, 78,143,235, 30,141, 72, 42,131,210,245,129,161, 99,231, 71,253, 10,158, 24,157,240,123,212,246,182,134,211,253, + 35, 15,237,223, 57, 49, 58, 99, 90,244,236,181,137,219,183,175, 41, 22,203,251, 31,220, 23,168,107,186,114,238,220,115,207, 29, +106,111,142,110,217,190,218, 48,236, 77,125, 55,223,232, 63,155,207, 22,166,166, 22,175,140,206, 19, 89,181,153,197, 40, 3,146, + 10,247,236,217,179,111,107,151,227, 78,160,146,177,221, 12, 5, 0,198,200, 23, 12,122, 66, 13, 16, 66,219, 50,169,101,228,178, + 57, 77,197,138,230, 27, 30,184,220, 63, 60,227,213,100,131, 50,175, 71,207,101,243, 97,175,222,218, 90, 63, 59,187,228, 81,101, +127,192,219,177,110,227,204,232, 80, 56, 82,115,229,226,144,224, 92,146, 73, 40, 28,168,169,171, 41, 21, 10,167,206, 14,105,132, + 40, 10, 17, 0,250,189,234,240,244, 18,198, 72, 35, 24, 74,242,207, 25,222,232,244,102, 63, 63,194,236,221,187, 23,193,101,132, +235,231,226,250,249,234, 92,255,197, 2,121, 60,250,207,151, 64,135,127,244,119,159,186,239, 22,137, 96, 0,192,151,191,248,249, +223,255,216,131, 0,128, 80,192,247,255,174, 64,154,166, 1, 0,250,223,125,225,204,129,111,168,178,212, 88, 95, 7, 0,136,213, +213, 12,188,251, 98, 98,110,198,239,211,191,250,185, 79, 13, 95,120,235,214,155,182,118,182, 55, 14,158,122,241, 63,126,250, 35, + 87,206, 29,186,120,248,137,255,254,231,127,240,255, 92, 32, 28, 8, 4,178,217, 44, 0,224, 23, 30,218, 63, 56,116, 3, 0,240, +149,255,242,155,127,251, 55,127, 86,206,204,149, 75,165, 13,173,245,191,250,145,187,239,219,183,237,131,143,220,155,156,155, 48, +203, 38, 0, 98,205,198,158,185,177,225,139, 39, 79,143, 12, 79,237,185,251,254,174,158, 46, 9, 3, 73,245, 43, 32,191,170, 49, +250,214,201,203,255,106,105, 90, 90, 90, 96, 60, 30,159,156,156, 4, 0,188,251,242,227, 62,191,127, 41,107, 73,162,212,127,246, + 98,160, 38,226,209,241, 80,255,200,222, 59,118, 34,162, 6,163,241,133,177,129,196,124, 18, 19,148,207,151, 1, 16,139,243,201, +197,185,148,201,249,109,119,110,239,222,120, 19, 66, 48,187, 56,190, 56, 59, 59, 55,189,152,202,228, 22, 82,185,239,190,124,116, +230, 95,136, 58,236,221,187,215,213,208,246,205,107,111,217,177,118, 46, 97, 53,198,124,144,104, 91,246,222, 1,121,174,152, 47, + 6,195,254,150,158,245,129,186, 22,136, 20, 65, 11,150, 81,142,119,245, 36, 22, 23, 24,101, 16, 64,140, 81, 46, 83,188,229,190, +123,172,114,142, 90, 37,206, 24, 4, 12, 19,172, 72, 82,192,163,237,217,188,250,129, 91,183,205, 39, 50,179,139,169,159, 94, 67, +216,231,243,157, 60,244,204,125,119,236,206,103, 82, 62, 77, 24, 54,128,118,142, 35,249,228,225,163,173, 61,189, 62,191,247,212, +145,119,218,215,108,212,116, 47,150,148, 96, 36,230,175,107, 43,103,103,243,185,130,215,239,241,248,244,112, 77, 32,155, 90,208, +117,130, 16, 6, 66,112,193, 16, 4,152, 96, 66, 92,128,121, 99,111,219,254,155, 54,157,185, 50, 82, 42,155, 63,149, 64,127,244, + 7,191, 21,213,141,196,220,180, 39,220, 60, 55, 49,234,245,233, 75,115, 11, 94,175,148, 73, 36, 95,127,238,224,240,149, 17, 69, +149,102, 70, 6,101,108, 2, 8, 78, 30,124, 43,159,156, 82, 20, 9, 19,130, 48,242,249, 60,145,186, 80, 32,232,195, 8, 11,193, + 24,179,157, 90, 27, 65, 8, 17, 68, 24, 99,140,156,225,194,158,205,189, 91,122,218,143,158, 31,252,159, 11,180,123, 83, 23, 97, + 86,231,198,157,245,241,246,171,231,207, 34,192,203, 38,143, 53, 52,212, 53, 53, 38, 23,230,231,230, 83,204,162, 62,191, 71,150, +161, 85,202, 17,130, 67, 53, 65, 76, 8, 33, 88,150, 36,247, 45, 49, 2, 0, 10,206, 56, 99, 78,251,228, 0,222,200, 5, 34, 32, + 66, 8, 66,168,169,242,173,219,214,222,152,156, 79,231,139,255,140, 64, 68, 8,212,218,213, 86,211,208,150, 92,152,102, 28,214, + 54,212,151,242,121,136,177,166,250,195,145,160, 54,177,232, 64,198,254,144,223,227,245,214,212, 55, 74,178,110, 25,121,171, 92, +180,169, 37,152, 16, 64, 8, 46, 4,116,170, 23,183, 70,128, 8, 33,196, 17, 70, 4, 16,119, 34,224, 32, 15, 16,254,198,135,246, +159,188,112,237,153, 67, 39,255,201, 1,188, 77,109,155,225,233,235, 23, 47,159, 61,143, 17, 19, 92,248, 34, 77,185,196, 92, 54, +123, 61,147,204, 42,138, 4, 0, 48,203, 86, 38,153, 81, 85, 85,214, 36, 0, 4, 66, 18,145,100, 33, 56, 3, 76,184,149,184,128, + 78,187, 8, 4,128, 0, 10,128, 16,194, 88, 0, 1,129, 4,100, 87, 32, 8, 17,128, 16,238,218,220,211,209, 84,247,151,255,196, + 56, 31, 63,242,240, 3,118, 98,122,240,210,149,125,247,238, 47,101, 19,225,218,154,124, 54,159,207,102,230,102, 22, 45,147, 34, +132, 20, 85, 82, 84, 5, 33, 4, 33, 64,144, 11,193, 57,167,156, 51, 0, 4, 0,110,106, 70, 46,120, 42, 0,132, 80,192,202, 52, + 10, 64,232, 66, 20, 8, 66,132, 16, 70, 8, 97, 4, 33,146, 36,124,211,154,174,183,127,204,164, 90, 90, 90,240,170,150,152, 87, + 65, 62,191,222,218,213, 27,105,104, 14, 68,154,199,175,245, 83, 74,169, 69, 17, 66,178, 44,105,186,162,235,170,172,202, 68,194, + 8, 65, 32,152,112,176, 7, 33,160, 43, 17,172,130,186,142,182,150,139,188, 10,136, 85,133,182, 48, 70, 68,194, 24, 33, 0,192, + 77,107,187,223, 39, 83, 75, 75, 11,222,181,101,237,214, 77,221,219,110,187,223, 27,174,103,204,178,140,188,145, 75, 56,239, 68, + 8,150,100, 73, 81,101, 69, 83,100, 69,150,100,130, 49,118, 84, 5, 0, 68,192, 17, 5, 58,237,155,131,188,172,224, 31, 84,135, +118, 14,110, 34, 32, 0, 16, 35, 66, 48, 33,146, 36, 19,140,137,101,217, 59,122,219,143, 94, 28, 90, 41, 16, 10,134, 3, 0, 73, + 71, 95,126,154, 81, 83, 86,188,186,191, 46, 92, 27,241,120, 53,175, 95,247,250,116,175, 79,247,120,117, 77, 87, 21, 85,114, 66, +139,112,223, 86, 8,224,168,200,181, 97, 81,177,221,202, 76,183,162, 51, 88, 45,141,129, 3, 60,202, 10,209, 61, 90, 32,232,173, +137, 4, 36, 73,250,119, 31,190,207, 81,152,107, 67,247,222,187,127, 85, 79, 71, 77, 93, 93,185,152, 13, 70, 26,203,185, 69,206, + 41, 4, 12, 0,136, 48,196, 24, 19,137, 16,137, 72, 18, 33, 14,138,137, 49, 66,176,106,166, 14, 56,227,232, 65, 64,232, 24, 22, + 88,161, 31, 23, 1, 96, 92, 84, 26, 9,132, 16,198, 24, 0,168,104,178,166,107, 92,128,237,221,173,151, 70,167, 76,203,142,199, +227,184,189, 46,172,176, 98,102,105, 49,222,222, 37,169, 30, 34,107,130, 83,206,108, 32, 56,114, 33, 75, 71,207, 21, 97,170,129, + 5, 33, 87, 23,194,197, 66, 42,189,119, 5, 27,113,140,137, 11,206, 5, 99,220,182, 40,167, 14,227,128, 19,130, 17,130,177,198, +198, 66, 33,223,209,213,108,148,141, 95,124,240,246,176,172, 38,202,148,196, 26,235, 34,117, 53,117,245,117,170, 63, 12, 33,180, +205, 18, 0, 0, 19, 69, 82,108, 0, 0, 66,180,130,215,129, 74, 64, 65, 78, 78,112,148,193, 93, 28, 24, 84,128, 71,192, 43,222, + 6, 5, 4, 14, 78, 3,185, 16,194,182,109,211,180,128, 0,209,134,218,214,222,245,111,191,252, 74, 36, 26, 93,183,237, 38,197, + 27,153,155,203, 82,179, 8, 85, 13, 0, 3,223,186,103,103, 80, 67,229, 82, 17,178,146,164,120, 4,183, 5, 99, 66, 80, 23, 24, +114, 81, 95, 8, 33,114, 45,186, 2, 2, 67,136, 28,152,107,197, 28,147, 87, 92,189,242,183,243, 16, 33,132, 8,202, 50, 49,202, +102, 49, 95, 14, 4,125, 67,151, 7,238,254,208,199,223, 61,116,184,165,107,245,119,191,254,248, 51,175,157, 76,206, 44,238,237, + 91,119,254,218, 12,201,166, 82, 5, 31, 10,134,124,140, 90,204, 46, 35, 76,132,224, 0, 34, 8, 49,194, 68, 0, 32, 56, 19, 28, + 85, 13, 19, 64, 0, 33,128, 16, 57,166,227, 88,141,168,244,221, 0, 56, 63, 3, 64, 0,136,128, 0, 16, 67,199, 85, 67,154, 47, +220,210, 67,202,101, 35,181,152,108,105, 83, 62,243,235,159,241,169,202,119,159, 63, 82, 31,246,127,244,193,190,124,174,184,117, +239, 45,255,248,210, 25, 2, 0,240,250, 61,254,160, 95,213,189,130, 51,238, 64, 85, 2, 0, 4, 17,194, 2, 8, 1,160,128,188, +210, 83, 87, 32, 52,238, 26,139, 27,110,170, 48,142, 0, 64,112, 23,238, 19,110, 67, 67, 48, 81,189, 33,111, 48, 70,100, 85, 55, + 10,186,174, 13,158, 63,127,223,254,190,112,109,195,212,196, 68, 52, 36,223,152, 92, 50,242,197,129,119,143, 2, 0,137,199,167, + 71,234, 66, 30,175,135, 72,170, 3,103, 2,206,129, 16, 64, 32,224, 68,123, 7,118,173,128, 53, 14, 22, 81, 81,151,211,112, 59, +152,132,147,213,132, 83, 23, 67,247,217, 34,219,166,140, 51, 8, 97,102,113,244,250,229, 43,233, 84, 30, 0,240,189,151,142,125, +241, 11,191,149,152,159,187, 62, 48,212, 95, 54, 0,128, 55,223,182,181, 88, 50, 1, 4,200, 23, 8,132,106,107, 85,111,136, 40, +154,235, 21,130, 87,240,188, 10, 56, 13, 16, 68,200,125, 90, 85,170,131, 27,134,144,123,155,224,142,209,200,178,236,143, 68, 3, +145, 6, 69,247,201,154,183, 92, 50,178,169,156,172,120,222, 61,124,114, 98,124,110,195,214,213,178, 76, 32,132,102,185, 72,100, + 89,214,181,222, 85, 45, 22, 0,169,197,212,139,175,159,128, 0, 16, 76, 20, 89, 11, 66,232,194,158, 21,105,220, 64,134, 32,228, + 0, 2, 4,132, 16, 16, 65, 39, 63, 57, 62,199,221, 76,193,171, 9, 11, 64, 32, 75, 36, 88,215, 26,136,181, 27,133,212,225,231, +126, 80, 42,217, 83, 19,243,173,237, 13,249,108, 97,224,242,240,195, 31,188,109,113,118,241,213,183, 47, 17,140, 37, 73,138,182, +244,254,214,182,219,250, 79, 30,172,171,175,185,113,109, 58,234,211, 83,121, 78, 28, 55,114,124,216, 65,154, 65, 21,216,123, 63, +163, 70,192, 74,129, 33, 32,130,128, 11, 33, 32, 66,144,115, 4,161, 64, 8, 66, 32, 41,154,230,175,129, 0, 10, 70, 35,177,232, +137,163, 23, 99, 13,145, 77, 59, 55,132,163,205,219,111,191, 55, 95, 40,157, 58,120,160,161,169,225,131,247,183, 32,140, 21,205, +151, 89, 24, 87,101, 76,195,209,123,127, 97,245,248,200,204,224, 83,111, 34,224,184,140, 75, 67,224,174, 44, 21, 47,230,239, 69, +230, 65,165,239,134, 96,133, 73, 1, 1, 0, 64, 24, 33, 66, 32,132,140,154,201,169,254,193,211,239,204, 77,205,109,217,177, 38, +151, 45,248,195, 49,127, 93, 59,150,148,167,255,225, 31,239,120,232,225,169,137,233,114,217,156,157,156,185,116,236,192,226,244, +216,149,171,147,117, 33,197, 44, 22,106,130, 10, 16,128,184, 65, 95, 8, 46,152, 16, 28, 86,236, 19,186, 74,169, 68,192, 74,188, +113,126,204, 43,183, 57, 34, 67, 8, 49, 33,178,234, 65, 88, 42,231, 83,233,165,185,124,190,216,208, 20,173,141,213, 66,193,102, + 38,167, 2,145,230, 63,254,195, 63,254,192,253,125,255,246, 87, 62,179,177,167, 53,157,204,237,184,227, 30, 69,213,127,248,228, + 83,107, 87, 53,166,211, 57,102,154, 47,190,112, 12, 66, 64, 28,210,134,168,162,230, 46,134, 47, 68,101,120,192, 43, 5,142,168, +128,161, 14,165,207, 37, 11,112,225, 84,103, 8, 97, 95,184, 65,245,213, 94, 63,247, 86, 38,149,141,214, 71, 66, 53, 97,136,165, +139,231,174, 25, 86,255,169,183, 79, 68, 67,190,163,135,206, 60,114,199,182, 96, 77,120,237,206, 91,143,188,248,236, 11,111,157, +189,243,150,237, 27,110,186,155, 90,197,231,158,250, 62, 87, 85,144, 47, 34, 55, 5,114, 86,241,103, 7, 93,228,208, 25, 48, 0, +225,200, 35,150, 17, 72, 46, 56,103,140,113,230,140,101,220, 63, 5,103, 8, 19,193,108, 0,196,224,229, 27,221,155,247,197,186, +118, 70,226,235,239,253,232,199, 44,202, 15,157, 31,174, 13,251,226,241,186,124, 54,191,251,142,253, 70,102,250,214,135, 30,217, +182,186,125,223, 29,123, 16,145, 57,192,225,186,134, 88,208, 39, 0,192,119,222,186,187,171, 53, 6, 42, 50, 57, 53, 50, 0, 66, + 64, 55,220, 65, 55, 71, 1, 23, 1,101,148, 81, 86,193, 66,133, 51, 71,147, 21, 89,247,215, 42,186,239,218,249,163,233,100,118, +102, 46, 19,208,108, 97,231, 56,179,100,100,173, 90,221,126,229, 92,255,253, 15,237,227, 14,194,108,100,205,114,254,141,151, 15, + 50, 32,102,198, 38, 78, 30,122, 11, 33,188,251,246,219,162, 97,252,214,187, 87,136,243, 46, 14,106, 14, 4, 7,130,187,227, 11, +225,152, 78,197,118, 57,115,112,124,198, 28,205, 56, 60, 74,164,106,154,226,241,171,158,176, 30,168, 45,229,147,215,174,140, 78, + 76, 46,245, 79,204,124,224,195, 15,120, 2, 53,179, 99, 87, 82,137,236,183,191,255,230,167,126,249,158,147,103,110, 32, 40,152, + 69, 49,193, 63,248,193,155,109, 93,237,241,168,190,102,235,118,179,152, 26,188,112,229,185,167, 95, 8,215,132, 33, 0, 4, 8, +206, 57, 5,110,152,229,208, 73, 28, 78, 43,225,136, 86,249, 39,198, 24,163,148,187,116, 21,142, 16,146,100, 57, 84,223,169, 5, +234, 50, 11, 99,197,236, 66, 49,155,154, 24,157,219,255,208,190,135,117, 45,151,152,125,243,133, 3,144,200,138,130, 30,184,239, +206,214,222,245,181,141, 45,223,121,242, 5, 11,144, 71,122,214,254,231,191,190,117,102,244,234,245,203, 23,103, 71,175,252,224, +153, 35,169,146,177,177,187,169,174, 37, 46,198,150,136,243, 24, 42, 90, 17,149,105, 37,119,134, 28,142,153,187, 86, 67, 41, 99, +156, 49,151,158, 10, 32,144, 21,149, 72, 50,198,228,217, 39,190, 23, 14,251,203,101,179, 88, 54, 10,249,226,211, 79, 31,186,239, +222,157, 88,194,123,110,221,162,121,253,151, 79,159,207, 38,231, 31,255,218, 15,238,185,187, 79, 34,192, 40,228, 20, 79,248,240, + 75,111, 44, 38,178,233,124,105,169, 80,254,252, 31, 60,246,246,219,231,236,204, 18,132,144,112,206, 4,179,133,155, 49,151, 7, + 11,238,172,165, 50,252, 97,180, 98,200,156, 11, 32, 16, 66, 88,194, 16,161,228,236,181, 66,246,108, 34,149,167, 54,227, 66,180, +181,213,207, 76,204,244,118,212, 95, 56,125,229,150,253,187,231,167,231, 58, 87,135, 54,238,238,251,243, 63,249,146, 26, 8,122, + 61, 18, 4, 96,236,218,245,115, 79, 60,147, 46,150,139, 5,131,113,254,240,173,155,159,249,222, 27, 80, 81, 22, 23, 82, 0,200, + 68,112,206,168, 13, 86, 86,157, 85,188,154, 59, 77, 15,119, 70, 28,206, 23, 2, 0, 73, 34,154,174,107,190, 32,145,117,106, 21, +175, 30,191, 20, 8, 7,253, 94,181,171,167,153, 49, 81,204, 23, 91, 59,155, 34, 13,173, 51, 99,215, 5,231, 99,215,134, 10,249, + 2,241,133,214,117, 68,253, 53,209,244,226,172,105,148,239,121,228, 22,163, 84,182, 76,251,200,193, 51, 99,227,243, 37,129, 64, + 38,183,111,239,134,167, 14, 15, 58, 2, 49, 8, 1, 0,156,115,119,134,236,146,142, 29,235,117,120, 74,204, 85,151, 36, 75,190, +128,223, 27,110, 84, 60, 97, 70, 77, 76,148,182,206,134, 84, 34,221,222,217, 52, 59,157, 80, 20,210,220, 18, 85, 85,173,148, 75, +215, 53,117, 68, 98,166,162,249,128,224,195,195,115,209,186, 64,118,105,238,141, 87,222,253,133, 15,223,169,121,131,199, 14,158, + 81, 52,217, 22,216,163,162,235,211, 11,141,126,223,197,243,215, 33, 0,174, 13, 45, 3,231, 98,121,232,225,142, 81,133,112, 52, + 37, 4, 64, 8,234,186,230, 13, 53,122, 66, 13, 0,145,249,107, 87, 50,137,165, 72,172, 97,231, 94,169,103,251,254,204,252,232, +223,252,217, 87, 62,177,170, 77,210,188, 64,136,114, 33, 53, 55, 53, 63,116,125,178,148, 47,158,191, 49, 31, 10,104,140,178,185, +100,246,185,239,191,213,213,221,196, 40,157,154,201,231,139, 86,215,186,214,201,133,100, 32,160,103,115, 37, 0, 0,169,204,194, +170,179,178, 21, 23, 95, 30, 42, 82, 18,154, 0, 0, 31,157, 73, 68, 65, 84, 25, 58, 79, 82,209,212, 64, 93,139, 30,140, 2, 0, +202,153,249,154,250,246, 75,167, 47, 92, 58, 59,248, 75,159,254,204,244,196,248,229, 19, 71, 55,172,109, 27,184,120,253,222,143, +236,153,184,114,124, 97,102,225,165, 67, 23, 11,229,178, 42, 41, 65, 96,215, 55, 70, 34,117, 53,173,205,209,134,218,192,165,161, +201,197, 68,230,147, 31,191,183,108, 48, 8, 25, 21, 64,211,149, 66,209, 0,128, 19,193, 5, 99,110, 39,202,185,171,164, 74,126, +128, 66, 56,178, 2,132,145,207,239,107,234,221, 33, 0, 68,146,106, 27, 69,213, 27, 22,128,111,218,185,245,149,167, 95, 61,248, +204,119, 46,156,191,174,122,189,150, 81, 42,229, 74,119,126, 32,243,210,179, 7,155,155,234, 90, 67, 26,245,202,107, 54,118, 9, + 46,106,234,194,179,211, 11,217, 76,174,187,163, 65,130,232, 19, 31,217,191,241,230, 7, 40,181,178, 75, 51,159,223,121,203,129, +231,158,247,120,180, 43,151,166,201,114, 66,250,177, 33, 80,133, 38, 10, 48, 70,225, 72, 36,214,185,213,178,172,204,220, 53, 34, +169,158, 64,141, 37,136,162,121,106, 26,187,174,140,206,150, 10,229, 85,171, 90, 60, 30,237,133,183,206,116,196,194,215,206,159, +152, 94,204, 52,214, 71,114,217, 98,115, 75,172,107,245,170, 80,180,101,122,228,146,170, 42, 5,142,230,102,150, 90,155, 34,141, +173,109, 88, 86,137,162,169,158,128,224,252,238, 71,127,241,210,241, 3,226,226,180,171,161,101,126,194,143,141,167, 8,193,129, +144,191,166,177,107,110,248,140, 36,203,229,124, 54,151,201, 7,195,193, 66,190, 88,219,208, 52,116,169,191,104,211, 76,201, 88, +154, 79,249,123,226,183,110, 95,189,102, 99,207,252,236,162,101, 51, 33,128,174,171,183,220,115,107,180, 99, 99, 41,151, 24, 25, + 26,187,113,125, 74,193,184, 41, 30,237, 94,219,237, 11,214,228, 19,147, 68,210, 36, 69, 53, 74,133,254,115,103, 46, 93,157, 6, + 64, 16,183,173, 92, 65,153, 88,105, 64, 8, 35, 95,192, 23,105,234,129, 16,219, 86,217, 50,202,146, 34,123, 3,190,154,166,238, +167,190,252, 13, 85,186,156, 74, 46,121, 8,217,189,115,205, 75, 7,206, 0, 8,101,153, 28,122,237,132,128, 16, 67, 80, 40, 20, +215,110,234, 82,116,111, 98,226,234,227, 95,253,150, 95, 83,252, 65, 47, 99,124,215,237,183, 47, 76,141,142, 12, 13,204,140,207, + 12, 13, 79, 47,149, 40, 2, 0, 99,156,203,229, 32,132,248,230, 93,155,154, 99, 33,224, 62,159,106, 14,117,204, 88, 40,178,220, +208,190,218, 87,219,130, 37, 69,245,248,161, 96,177,246,205, 64,240, 80,172,131,152,179, 19,147,139,138,230,179,140,210,220, 76, + 50,105,152,119,236,219,212,218,221,122,240,248,101, 93,198, 91, 54,116,182,180, 53,168,186,146, 77, 44,253,245,151,158, 44, 88, +118, 32, 20,156,156, 89,188,117,223,230,115,239,158,125,253,205,211,103,206, 12,142, 45, 21, 27,253,106,223,142,222,104,200, 3, + 0, 28,159, 93,178, 4, 33,227,179, 41,177, 44,201,123,166,101, 16, 64, 85, 83,250,167,138,170,111, 72, 8, 97, 91,102, 49,155, + 4,224, 66, 62,157,168,111, 25,124,249,133,195, 22, 99,170,174, 16,132, 77,211, 18, 12, 29,120,119,200,239,213,211, 38, 15, 10, +156, 22, 74,185,168,100, 39,102, 49,198,146,170,251, 3, 30,131,131,214,222,206,193,233,212,149,107,179,182, 37, 56,150,144, 97, + 46, 24,250,153,103, 79, 88, 0, 98,206, 8, 66, 0, 8,184,119,239,222,116, 58,157,201,100,126,222,198, 66,255,123, 47, 33, 68, + 48, 24, 12,133, 66, 4, 0,144,205,102,167,166,166,254,143, 82,126,156,228, 25, 10,133,208,255, 81,196,255,199,230,155,255, 63, + 82, 80, 93,109,205,187,111,254,224, 31,254,244, 55,110,223,178, 86,150,222,179,175,135, 49,110,140,213,198,106, 67, 63,255, 10, + 34,255,154, 73,127,223,142,230,250,240, 11,175, 30, 41, 20, 75,255,212, 61,186,166,254,213,231,127,195, 76, 77,154,166,213,213, + 24,237,136, 69,230, 82,217, 55,206, 95,121,249,233,111,136,226, 92, 75,207,166,129, 51,167, 38, 71, 70,198, 22,179,183,221,251, + 96,173,102,124,233,239,158,120,230,205, 19, 16,194,251,238,190,189,161,214,255,210,235,111,207,254,107,233,207, 63,227, 72,180, +119,239,222,241,241,113,103,224,250,207, 92,191,245,201, 15,239,185,105,199,233,243,131,143, 60,120,151, 79, 87, 11,217, 36, 18, + 6,103,226,237, 99,231, 10, 20,109,238,109,122,233,229,131,223,127,229,216,186,117,171,255,246,139,159, 67,102,174,152, 75,201, + 18, 76, 37, 50,201,165,204,236,212, 34, 0,226,206, 71,238,169,107,234,152,189,113,121,122,124, 34,159, 47, 3, 1,102,103,151, + 26,227,177, 29,183,220,134, 36,175,170,233, 4, 9,219, 44, 89, 70,145,217, 86,185,152,158, 25,159,156,154,152,251,210, 19, 47, +141,205, 44,252,239,218,120,107,109,109,253, 9, 10,234,108,109,252,222,227,127,106, 83, 42,233,145,161,193,254,191,248,202,147, + 95,248,147,255, 16,192,121,137, 32, 69,247, 10, 78,109,179, 28,140,182, 77,143, 92, 29, 27,158, 72, 44,164,186, 87,181,214,214, +215, 44,206, 37, 33,130,109,221, 93,249, 92, 46,151,206,248,131,126,192,237, 84, 50,107, 25,182,109,209, 92,174,216, 24,143,122, +125,122, 38,153, 77, 37,179,165,146, 97, 25,214,194, 66, 42,109,129,123,238,218, 29, 12,233, 30,127,168,190,165, 75, 86,188, 0, + 66,219, 44,149,114, 75,133,204,124, 54,149,202,101, 10,139,243,169,119, 47, 93, 31, 24,158,204,228, 11,249, 98, 57,145,206,253, +175, 84,208, 79,112,177,143,124,224, 14,211,164,217,116,186,115, 85,116,251,206,155,158,218,176,193,235, 15, 83,219, 22, 0, 50, + 46, 84, 85,153,185,113,233,252,137,119, 36, 9,107,186, 26,174, 13, 66,130, 67,117,141,181,205,221,178,234,245, 4, 99, 66,240, +217,209,126, 97,166, 11, 57, 91,146, 36, 85, 85,253, 65, 31,165,108,122,124,182, 92, 44, 51,206, 33,130, 18, 33, 66, 22, 1,191, +215, 74,100, 15,188,254,206, 93,119,108, 11, 71,106, 50, 11,227, 8, 19, 73,214, 1, 0,148, 89, 68, 82,125, 1,191, 68, 36, 85, + 87,106,163,161,219,251, 54,152,101,211,178, 41, 0, 80, 34, 24, 66, 56,181,144,252,254, 43,239, 12, 79,204,254, 47,138, 65, 91, + 55,111,248,244,167, 30, 91,219,213,100,155,198,226,204,180,223,175, 28, 61,240, 86, 32,210,180,105,215,246,201,161,115,177,120, +167,224, 84,146,100, 78,129,199,235, 13,135,125,190, 96, 48, 26,239,205,167, 19, 51,227,195, 38, 69,145,166,230, 92, 54, 91, 42, +100, 60,222, 64,172,185,171,144,154, 1, 96, 86,213, 52,127, 77,212, 19,106, 48,242,169, 98,161, 56, 59,181,168,106,178,207,239, +161, 58, 99,148,123,124,122, 32,236, 53,202,214,228,196, 28,150, 73, 93, 52,162,122, 60, 66, 48, 8,145,195, 45,197, 88, 86, 52, + 14, 17,148,101, 89,211, 85,219,166,150,233, 16, 24, 25,103, 60, 30,139,252,254,191,121, 80, 8, 65, 41, 91, 72,102,142,157,187, +122,248,204,192,207, 62, 6,237,217,179, 7, 8,254,233, 95,190,191,214, 7, 13, 10,117, 77,241,248, 67,134, 37,184,145,206,101, + 11,209,198, 6,155, 75, 11,147,215, 61,186,236,241,135,194,209,166,217,177,161,171,253,195,227,195, 51, 22,101,161,144,183, 54, + 26, 38,132,112,193,169,101, 71,154, 90, 59, 86,245, 4,130, 65, 89,243,113,206,178,137,217,124,174,168,233,158, 96, 77,216, 46, +231,146,115,227,185,108,193, 52, 76, 46,132,179, 14,232,226,239, 0, 32,140, 36, 66, 20, 77, 81, 84,149,200, 50,198, 82,133,170, + 77, 25,163,204, 89,157,178, 25,165,140, 81,106, 87,127, 70,157,229, 8, 70, 41,231,140,219,148, 9,198, 77,203, 58,124,122,224, +232,185,193,108,161,244,179,137, 65,125,125,125, 15,221,123,235,246, 85,245,170,238, 67,208,146, 21, 15,181, 12,201, 23, 61,246, +250,107,126, 15,150, 36,226,245,123,210,169,130, 36,145,218, 88, 56, 16, 10, 90,166,145, 92, 74,141, 12, 77,140,141,206,228, 11, +101, 8,160,215,163, 6, 2, 94,175, 95,247,250,117,127,208, 27,169, 13,251,131, 1,179,108,164, 18,233, 82,169, 44,203,146,238, +213, 36, 89,198, 24,137,202,112,211, 25,216, 56,147,105,103,185,162,186,132,177, 98, 93,212, 65, 60, 65,101,231, 77,112,230,252, + 18,204,193, 55, 43, 95, 56, 8, 26,165,140, 49, 78, 41,181,109, 74, 41, 99, 22, 59, 61,112,227,185, 67,167,172,234, 98,251,191, + 74, 65, 56, 30,111, 9,171, 60,172,195,114, 62,109,150, 75,129,186,120,164,185, 7, 2, 62, 49, 50, 82, 40,150, 21, 25, 75, 50, +209,116, 5, 0,228,241,168,254, 72,131, 39, 24,139,181,116, 55, 52,215, 75,200, 46, 23,203,166, 97, 83,202, 41,165,156, 9, 89, +150, 84, 77,149, 21, 9, 65,128, 32, 32, 50, 9,134, 2,117, 13,245,254,112, 68,211, 53, 34, 75,206,176,150, 56, 35,100,140, 49, +118,121,129, 16,192, 42,212, 2,248, 50, 0,196, 29,216, 94, 44,207, 11, 43,179, 85,103,220, 11, 17,114, 23, 58, 16, 70, 24, 19, +130, 17,198,152, 16, 76, 48,198, 4, 53, 68,195,183,109, 91,187,107, 67, 15, 65,104,116,102,241, 95,170,160, 64, 32, 16, 12, 6, + 9, 0, 66,241,248, 26, 90,219,151, 22,147,193,134, 78, 89,247,141, 14,156,206,101,243, 62, 77, 72, 80,246,132,106,219,122,123, +252, 53, 13,115, 99, 87,139,153,249,114, 62,169,232,118, 54, 49, 49, 61, 58,185, 56,151, 96,140,203, 50,225,156, 35,140, 17, 65, + 0, 66, 69, 85,188, 62,175,238,243, 99, 66,124, 88, 34,178, 6, 33, 22,130,113, 78,145,109, 49, 98, 49,219,230,140, 50, 78, 43, +163, 29,151, 86, 80,161,111, 3, 14,185, 75, 25, 89,193,127,173,176, 17, 42, 52, 22,192, 57, 68,238,192, 76, 8,136, 57,230,136, + 49,206, 25, 34, 18,102,148, 51,137, 81, 74, 36,155, 82,153, 73, 10,217,191,119,243,157, 59, 55,140, 76,205, 63,127,228,204, 66, + 42,251, 47, 14,210,170, 66, 4,132,118, 57,251,206,107, 47,123,189,218,182,190,237,185,164,153, 47,218, 18, 18,220,204, 21, 51, +243,186, 47, 72, 25, 40,151, 76,193,147,182, 61,159, 76,100, 50,233,188,101, 81, 69,145, 92, 17, 33, 68, 16, 90,134,149, 88, 76, + 89,166,237, 11,228,188, 62, 93,213, 53, 89,213, 49, 81, 28,222,133,227, 47, 8, 33, 33, 16, 6, 68, 64,103, 29,196,109,157,225, +138,161, 87,117,171, 8, 32,232, 78, 50, 43,187, 9,208, 57, 58, 6, 65, 36, 0,132, 72, 64, 1,185, 64, 16,114,132, 16,228, 28, + 11,206, 57,198,156,115, 76, 24,103, 18,161,140, 73, 22,145,101,102, 89,118, 79, 71,227,103,155,163,166, 97,125,247,245, 99,215, + 38,231,126, 90,158, 96, 60,222,210, 28, 13,104,220, 72, 37, 50, 16,112,193,121,177,144,109, 95,189,182,103,253,166, 64, 64,243, +120, 84,111,160, 86, 64, 60, 63, 49,204,168,109,154,118, 46, 91, 52, 74, 38,231, 2, 99, 36,201,146,170,200,170,166,104,186,170, +233,138,162,202,178, 44, 33,140, 28, 76,153,113,198,109,155, 83,147,217, 22,163,150,224,182,131,114, 3,103, 33,164,202, 5, 1, +206,160,125,153,234,180, 76, 26,169,146, 34,224,251,251,236,149,108, 18,119, 67, 9, 57, 28, 41,136,156, 37, 42, 12, 9,193,132, + 32, 66, 8, 33,152, 72, 68, 34,142, 19,162,245,157,241,189, 27,123,107,252,190,193,241,153,159,194,197, 32,200,166,178,105,159, + 4, 49,138,212, 6, 66,145,154,166,142,222, 96,172, 93,112, 30,172,151,100,213, 35, 24,159, 25, 62, 71,205, 18,150, 8, 51, 41, +193, 88,213,101, 73, 38,156,113,103,105,216,137, 15, 8, 33, 76,156, 16, 64, 48, 70, 66, 0, 70,185, 13,169, 16, 2, 99,230,240, +150, 16,130,206, 64,169, 66,157,113, 60,200,177,194,229, 15, 94,229, 4,184,200,125, 5, 58, 91, 65,250, 89,113,171,203, 16, 66, +128, 11, 0, 4,198, 64, 8, 33,144, 64, 2, 10, 1,132, 32, 66,114,143, 12,161,148, 83,219,214, 44,219, 40,155,229,146,185,113, + 85,219,218,142,166,254,225,169,231,223, 57,203, 42,182,252,147, 92, 76, 0,205,163, 54,183, 55,214, 52,117, 25,165,178,166, 98, + 79, 40,134, 37,217, 54, 74,212, 42, 67,136,152,101,248,130, 53,156, 25,150,105, 74,196,182,101, 66,169,236, 14, 59,170, 0,123, +133, 20, 2, 43, 81,211,137,192, 96, 25, 79,230, 8, 1,206,221,109, 52, 80, 33, 91, 57, 62, 35, 92, 75,168, 80,232,224, 50, 67, +107,153, 19, 85,209,148, 27,209,157, 31, 34, 8,185, 27,168, 28, 67,171, 42,247,125,248, 95, 69, 12,133, 81,106,233,106, 89, 55, +139,249, 82, 54, 91, 92,213,214,208, 19,191,127,120,106,246, 71, 71,207,254,196, 45, 73, 28,143,199, 55,109,232, 13,250,188,201, +233,177,228,194,108,122,105, 17, 67,203,227, 15, 99, 76,100, 89,171, 76, 14,109, 8, 5, 66,128, 56,107,152,132, 96,130, 36, 9, + 19,137, 72, 50,145, 36, 34,201,146, 44, 73, 82,133,232, 36, 17,140, 37,151,240,230,166,240,138, 31, 84, 63, 54,114,191, 4, 2, +190, 39, 71, 57,204,132,101, 23,116,121, 63, 21,206,152, 88, 86,220,123,140, 11,128, 42,112,189, 98, 3,176, 26,216,161,243,228, +176,147, 63, 9, 34, 18,145,101, 73, 86, 36, 34, 17,211, 48, 85, 76,246,110,232,137,199, 34, 3,163,211, 63,158,197, 64,217,176, +187,214,110, 65,152,207, 12, 15, 46, 76, 79,143, 94,189, 70,109,218,178,106, 43,145, 53, 12,161, 96,148, 40,186, 34, 24, 70,196, + 38,101, 98,155,212,166,140, 73,206, 96,179, 50,182, 18,203,143,217,181, 18, 4,145,195,236,172,236, 48, 86, 89, 35,160,106, 48, +239,245,155, 31,247, 44,238,108, 51, 58,123,169, 64,188, 79,119,142, 65, 85, 13,207, 37,192, 84,102,209,238,186,158,179,133, 8, + 17,130, 16, 35, 4, 32,132,144, 16,162,168,138, 28, 9, 9, 46, 16, 38, 68, 82,230,167,103,109,202,214,216,180,111,231,122,226, +209,230, 18,153,129,129,225, 35, 23,110, 0, 0,112,188,165, 37,164,136,236,212,141,209,193, 65, 8,121,123,111,215,234,173,123, +107, 26,218, 5,103, 8, 98,231,163,137,202,230, 29, 88,222,170,117,169,104,216, 41,109,156,135,227, 80,228,136,243, 27, 57,229, +137,115,146,133,195,194, 90,177,234,249,158,133,207,229,218,176, 66, 11,117,171, 34, 8,160,179,170,234, 18,235, 96,245,174,101, +146,142, 88,233, 65,206, 25, 10,156,218,148,218,212, 61, 98,194,162,150, 69, 1, 0, 62,159,215, 23, 12, 34, 4, 41,165,129, 80, + 40, 80, 19,131, 24, 22,115, 5, 89, 85, 33,132,103, 47,220, 88,154, 93,168,111,109, 89,191,190, 39, 26,246,251,100,121,253,134, + 85, 55, 38, 22, 9, 16,162,185,163,115,215,182, 46, 74, 45,193,153, 81,202,205,142, 92,244,134,106, 53, 95, 4,170,144,115,202, +169,201, 25, 5, 64, 32, 68, 48,150, 43, 53, 48,226,140, 49,196,222, 99,207, 43,246, 71,151, 67, 0, 66,208,177, 11, 33,170,133, +178, 75,166,113,249,141, 16,112, 46, 32, 4, 85, 6, 45, 0,220, 73,234,206,193, 32, 80, 56,244,159, 10,139,205,173, 1, 92,157, + 33, 8, 4,196, 43,108,208,169, 12,108,155,218, 22,133, 8, 50,198, 53, 93,109,106,111, 39,178,186, 48, 57, 86, 27,171,203,166, + 11,153, 84,170, 88,200,215, 53,180, 54,237,218,134, 37, 57,151,152, 61,123,238,202,181,241,212,194,169,193,241,161,235, 23,175, + 77, 82, 33, 2,129, 0,132,128, 0, 8,231, 38,198,250, 65,158,115, 65, 36,162,234,138,199,171, 51,106, 49,219, 20,254, 8, 34, +178,203, 75,113,114, 51,132, 8, 97, 65,132, 96,142, 19, 97,103, 64,253,158, 21,189, 21,249,185, 82,222, 33, 0, 0, 70,206, 71, + 20, 16,186, 36, 98,215,167, 92,150,146, 67, 10,224,192,173,170,129,179,167, 42, 56, 88,201,106, 91,102, 45, 85,184,126, 78, 85, + 33, 4,196, 2, 11,137, 56,252, 76,136, 16,231,162,144,203, 39,151,178,195, 87,111,152,101, 35,181,148,226, 76,108,218,189, 35, + 88, 27, 31,190, 49,123,234,208, 41, 14,229,181,221, 83,243,137,151, 47, 14,222, 88, 74, 21, 91, 98,225,250,250, 90,179, 96,154, + 38,191,189,111,221,246,190,173,199, 47,207, 78,188,124,152, 0, 0, 24,227, 8, 99, 73, 70,138, 34,235, 94, 77,247,234,170,238, + 33,146,194, 57, 3,212,170, 50,208,220,221, 90, 8, 33,196, 0, 9, 0, 32,130, 92,112, 6, 33,170,206,244,151,205, 99, 69, 79, + 85, 77, 70,206, 0,219,157, 29, 87,180,195,223,203, 11, 88,166,216, 85, 41,135,239,173,128,156, 20,230,110,129, 59, 92, 78, 1, + 1,134, 24, 99, 73, 86, 37,205,167,232,126, 73,241, 18, 89, 65, 8, 3, 1,247, 61,140, 32, 4,156,217, 83,195, 3,231,142,157, +250,198,215,190,155, 43,149, 17,130, 33,175,246,210,155, 19, 5,195,238,142,199,238,191,117, 27, 68,112,116, 60,193,136,229,175, +173, 93,187,101,189,226,139, 80, 58,225,166,121, 89,145,125,126,143, 44, 75,138, 42,171,154, 34,171,170, 36,169, 85,234, 0, 16, + 78,127,233,228, 82,225,242,171, 32,130, 8,184, 76, 75,167,171, 4, 2, 32, 0, 57, 23, 8, 9, 33,208,123,204, 72, 0, 71, 19, +112,133, 30,151,123,210, 74,150,174, 18, 76, 92, 10,137,224, 14,227, 12,172, 72,115,208, 89,155, 23,213, 83,204, 28, 90, 34,224, +206,107, 51, 40, 56,183, 76,139,154,165,180, 97,149,139,197, 66,190,152, 47, 24,101,211, 52,172, 76, 58,215, 63, 48,220,179,161, +247,209, 95,250,160, 36,107, 70, 49,147, 94,156, 29, 25,186, 54, 61,151, 25,188, 50, 54,151, 44,180, 54,213, 48, 74,189,154,116, +173,255, 42, 4, 67,227,163, 11, 0, 66, 2,128, 8,132,252, 13,205, 49, 0, 32,198, 24, 75, 18, 34, 10, 38, 50,194,196,101, 32, +187,203,225,188, 66,155, 20, 0, 32, 8,152, 0, 14, 17,207, 97,186, 67, 55,157, 32, 12, 93,190,251, 74, 59,130, 80, 8, 14,151, + 79,109, 88,193, 29,118, 92, 76, 84, 99,145,251,110,160,186, 24, 95, 77, 67, 8, 97, 4, 17, 70,208,225,105, 19, 39, 71, 50, 70, + 45,163, 76, 41,197,146,230, 11, 55, 41,158, 32,163,214,220,216,224,249,119, 47,100, 51,249, 96,200, 31,174, 9,104,186,106, 25, +214,187,103,134,110,204, 36, 58,215,173,154, 26, 58,139, 8, 25,187, 49,181, 52,159,156,156,203,166, 50,185,157, 27, 59, 90,219, +234, 71,198, 22,219, 91,163, 93,221,141,138,170, 14, 15, 77,200, 30, 63, 16, 75, 4, 0,160,168, 30,111,176,206,165, 30, 66,135, + 87, 10,161, 19, 27, 43,188, 15,224, 54, 83, 43,216, 59, 16, 0,238,230,145, 21, 84, 88, 71, 95,192, 9, 37, 21, 62,152,168, 82, +242, 93, 75,170,112, 48, 87,148, 62,130,243,101,250, 31, 20, 2, 56, 27, 61, 8, 98, 66, 84,221,171,249,106,100, 45, 0, 17,178, +202,249, 66,122, 33,157, 88, 42, 21, 75,178, 44,115,206,199,134, 39,151, 22,210,245, 13,145,104,195, 12, 33,100,110,102,241,204, +217,107,217,146,249,209, 95,186,163,125, 85, 47,181,204,201,209,177,147, 87, 70,211, 20,202,138, 76, 0,247, 6,195,146,162,237, +104,238, 42,151,202, 23,207, 95,153, 27, 27,193, 4, 45, 45,100, 4,181,134,174, 78,140, 12, 79, 47,166,243, 68, 34, 80,211, 33, + 4, 4, 0,128, 48, 33,178,234,146, 15,161, 27,252, 4,172, 36, 17, 46, 42,140,211,138, 51,188,143,228,233,208, 95,161, 0, 43, +138, 97, 0,185,203,151, 94,225, 80, 78,197,135, 28, 70,124,165, 65, 21,208,173,251, 16,114,206, 86, 88,222,188, 64, 24, 19, 73, +210, 60, 33, 61, 88,167,251, 34, 88, 82,132, 16, 16, 17,129, 20,131,233,103,142,191, 12, 1,199, 4, 21,114, 37,143, 79,175,137, +134,163,141,245, 78, 21,116,247,189, 17,206, 97, 48, 82,147, 73, 38, 78, 31, 59,119,242,236,144, 33,233,160, 84,220,189,182,181, +181, 49, 92,206,103,189,193,186, 64, 36, 30,196,164,182,177,147, 51, 10, 0,180,202,185,209,161,203, 4, 90,249, 92, 49,145, 40, +141, 93, 31, 31,158, 77,185,221,188, 0, 46,137,126,121,103,188, 74, 61,118, 1,153, 21,167, 48, 56, 22,241,190,232, 9,151, 99, +196,114,253,230,240,132,223,207,154,117, 91, 13, 88,161,173,175,248, 91, 56, 37,129,163,114,228, 36, 36, 34, 19, 89, 33, 68,230, +212,178, 74,217, 82,110, 49,155,152, 95,154, 95,154, 24,157,201,102,178,121,131,249, 52, 57, 18,241,181,117, 53,119,175, 91,167, +249, 35,170, 30,108,219,168, 49,219,162, 86,113,232,226,185,147, 71,223,189,249,182,155,238,251,240, 99,239,188,117,144,217,118, + 56, 32,203,138,196,133, 72,205, 77,204, 79, 12,155,101,131, 82,139, 81,190,184,144,130,170,190,251,230, 61, 8, 17, 33,120, 15, +224,123,238,184,245,165, 55,142,191,240,198, 59,164,242,161,160, 88,177,252, 1,132,224,192,165,146,187,170, 1,130,243,101,143, + 19,203,169, 87,192, 21,150, 36, 86,168, 9,252, 24,167,120, 25,246, 17, 66,172, 0,201, 42,218,118,214, 64, 0, 0,208,105,110, +157,246,156, 81,211, 44,102,203,116, 49,151,154, 79, 37,211,153, 84,206, 40,153,225, 72,112,243,174,141,245,173,189,229, 98,110, +224,220, 57,203,178,100,205,231, 9,198,108,163,100,102, 19, 23,207,156, 30,190, 60,176,247,246,190, 15,125,252,177, 35, 7, 15, +255,249,151,190, 29,141, 53,116,212,168,118,125,141,207,239, 97, 76,132,235,162,129, 72,131, 55, 24, 86, 53,239,240,224,149,249, +197,124, 44,168, 78, 95,235,183, 44,219, 1,115, 39, 39,231,207, 94,153,130, 16,146,202,158, 10,171,242,109,151, 17, 61,231,223, +184,128, 64, 8, 32,160, 67,197,173, 44,141,172,168, 15,129,128,220,221,242, 1,110,227,202, 57,175,106,105, 69, 25,185,146,255, + 12,222, 87,100, 58, 5, 19,132, 78,245,175,203,154, 95, 82, 60, 92,112,179,148,205,103,230,153,109,151,138, 69,106,217,178, 76, +188, 62,221,235,213, 5,179, 38,175, 93, 72,167,114,115, 83,115,227, 35,179,147,163, 51, 91,118,111, 70, 68,155,158, 90,122,243, +205, 35,235,123,154,158,249,238, 11,215,167,151, 8, 70,171, 91, 98,155, 54,118,204, 47,149,202, 37,179,163,183,179,190,165, 45, + 57, 63,243,206,129,131, 71, 78, 13,104, 94,207,103, 63,243,171,119,127,240, 49,128, 48, 0,162,144, 89, 58,243,246,193,183,223, + 62,103, 81, 90, 2,114,197,197, 92, 70,144,203, 10,130,162, 18, 45, 93,255,168, 44,219, 3, 1, 43, 11,255,213,228,235, 80,115, + 87,172, 31,185,229, 1, 4,192,101,241, 86,188,178, 74, 86,175,114,181, 4,120, 79,233, 4,128,147, 21, 0, 18, 2, 97, 73,214, +252,154, 55, 68,100,205,178,138,195,231,142,156,123,247,146,172, 72,107, 55,246,180, 53,183,170,158,160,164,120,176,172, 64, 68, +102, 71, 7,223,120,243,204,200,212, 2, 69,112,233,165, 35, 83,139,233,156, 65,247,223,188, 57,232,149, 85, 85,246,168,114, 83, + 75,204, 40,155, 61,155,119,220,217,189, 22, 33,124,241,216,155,135, 94, 62, 48, 56, 56, 60,181,148,107,169,175,185,243,206, 93, +129, 80,141,131,196,216,102,105,232,252,201,179,103,174, 74, 8, 88, 0, 54, 70,124,153,169, 20,236,235,235,123,120,255, 77,119, +223,182,173,162, 35, 0,156,170,103,153,185, 84,125,236, 0, 0,215,203,170, 21,176,155,155,150, 17,136,234,141,110,198,118,168, +198, 85,146,234,202,215, 91,134, 19, 43,125, 9, 66, 16, 97, 44,201,170, 30,136,168,158, 16,103,150, 81,204,204, 79, 78, 96,140, +162, 45, 61, 39, 14, 29,181,205,210,237, 15,220, 71,169,133, 32, 34,178,142,137, 44, 32,148, 36, 69,112,251,252,201,227,207, 60, +119, 96, 98,102,169, 61, 22,238,219,182, 10, 97, 84, 42, 25,153,116, 30, 2,184,115,207, 70, 69, 83,138,249,162, 81, 54, 26,219, +218, 67,209,214,254, 11, 23,203,101,171,187,183,221,227,243, 25, 37,195, 52,202,140,163,142, 53, 27, 48,198, 16, 2,179,156,191, +118,225,212,203, 7,142,157, 25,154, 33,149,144,204, 42, 6, 84, 57,223,195,161,223, 47,135, 26, 0, 86, 84,182,213, 19, 72,220, +164,199,171, 78, 7,224,242,238, 71,245,128,146, 42,173,142, 87, 48,151,106,247, 15,157, 22, 23, 34, 68, 48, 33,138, 46,235,126, + 89,245, 17, 89, 21,156,165,230, 71, 7,206, 93, 30,190, 54, 21, 8,249,205, 99, 3,103,251,175,121,189,158,237,123,247, 4,107, +106, 1, 4,130,179, 98,118,193, 44,166, 1, 0,136,200, 11, 51, 51,109,109,109,191,243,217,223,244,120,117,203, 52, 11,217, 12, + 70, 48,157, 88,154, 26, 25, 81, 52,197, 1, 93,146,137,220, 27, 7,127, 56, 52,190,208, 84, 27,136,215,133,206,189,115, 76, 85, +101,191,223, 99,153,182, 81, 54, 58,187,143,199, 26, 34,217,188, 73,100, 93,208, 98, 50,153,131, 21, 23,227,206,126,205,242, 25, + 17, 43, 41,193, 0, 84, 15,235,169,162,165, 43,208, 13,119,230,224, 84,189,238,110, 91,149,255,238,208,135,171,223,138,149,251, + 76, 16, 19,172,168,154,234, 9,200, 90,128,200,170,115, 6, 15, 81, 84,140, 37, 33,120, 62,187, 48, 55, 53,149, 88,204, 48,139, +218,150, 97, 26,180, 39, 94,183,125,251, 26,110,165,146, 51,233, 84, 34,157, 74,102, 77,139,150,138,102, 34,153,185, 52, 52, 22, +168,141,222,178,181,109,234,234,217,116, 58, 63, 62, 54,215,209,217,116,236,228,149,128,174,230, 45, 17, 10,122, 35,177, 26,211, +162,186,207,251,216, 47,255, 98, 93, 67,188,152, 79,165, 23,166, 91, 87,109, 6,130,230, 83, 75,131, 23, 47,158,124,231,226,225, + 35,151,230,178, 5, 10,128, 46, 17,141,224,174, 13,171, 71, 23,243,149,114,153, 83, 7,215, 89, 94, 98, 4,149,211, 67, 43,219, +108,213,216,186,188,220, 34,192,138,188, 86,161,167,186,170, 97, 21,170,245,123,227,143,179, 80, 1, 17, 66, 80, 81, 84, 79,160, + 86, 15, 68,101,221,143,136,148, 93,156,188,113,249,180,109,217,154,174, 10,206,115,217, 66,255,133,235,179,115,169,173,219,123, +111,127,248, 17,198,196,245,129, 75,205,173,241,217,241,145,139,231,134,146,169, 92, 36, 18,174,143,133,218,187, 26,118,223,178, +243,163,145,198,145,171,151,251,207,245,239,184,237, 94, 77,215, 7,207,158,248,238,179, 7, 91,234, 66,249, 92,222,171,105, 53, +177,218,250,142, 94, 34,169,154, 55,108,151,210,135, 94,122,241,212,169,129,173,155,123,198,135, 71,231,166,151,250,135,167, 82, +133,178, 44,201,183,236, 90,243,145,117, 29, 75, 11,169,215, 14, 95,124, 96,255,182,193,201,106, 29, 36, 56,163,180, 26, 57,151, +145,153,229, 52,237,122, 30,172,134,152,170,129,129,170,102,196,242, 90, 73,133,178,187,226, 39, 21, 96,182,114, 58, 27,198, 24, + 17, 73, 8, 81,204,204, 23,210, 51,138, 22,152, 25,189,254,220,211, 7, 77,147,182,198,163,138, 42,101, 50,133,197,100,206,163, +202,197, 92,233,251,255,240,205,165, 84, 14, 66, 20,171, 13, 72, 24,199,162,193, 59,238,221, 35, 17, 98, 91, 22,179, 45,219,200, + 21, 82,144, 89,102, 54,149, 57,241,250, 11, 87, 6,199, 47,142,204, 54, 68,130,155, 55,118,250, 2,222, 82,177, 60, 51, 57,227, + 11,215, 5,194,181,253,199,223, 60,252,214,137,177,137,121,136,208, 43,111,158,193, 4, 39,139,229,160, 87,223,185,190, 99,251, +142, 53,169,165,204,235,111,156,218,178,169,187,189,185,246, 31,190,119,208,226, 16, 42, 26,236,235,235,187,239,214, 77,119,238, + 89, 43,248,143, 23, 45,142,127,173,192,179,150,157,208, 93, 91,123, 15,202,185,140,230, 45,195,122, 46,216, 86,129,217, 48,193, + 4, 19, 34, 75,152,200, 68, 82, 16, 33,102, 33,187, 56,191,148, 76,230,242,185,130, 81, 50,174, 93,155,106,111,175,111,109,171, +183, 45, 26,137, 69, 16,130,139,243, 73, 70, 41, 70,200, 27,208, 17, 66,178,162,122,189,218,220,204, 82,177,104,122,189,106, 56, + 18,240, 7,131, 88, 82,210,137,196,169,227, 23, 46, 79,166,103,166,102, 30,188,255,182, 71, 31,123,108,116,240,226,141,254,243, +171,215,117,167,147,153,161,254, 17, 76,112, 36, 26,178,109, 22, 8,121,235, 98,181, 99,163,179,175,189,126, 50, 94, 23,144, 21, + 41,157, 45,230, 75, 70,216,167,115, 89,159, 77,228,226, 33,213,163, 75,211, 89,115,120,161,226, 98,140, 82,241,147, 32,235,149, + 70,244, 62, 82,174, 88, 65,202,119,247,186,150, 79,147,226,206,225,197,213, 13, 79, 66,136,164, 72,178,162,201,154, 79, 82,117, + 76,148,234, 49,152,146,226,181, 44,186, 52,159, 44, 23,203,201,116, 49, 91, 54, 60,126,127,172,181,125,116,240,106, 48,228,191, + 54, 56,146,203,228,227,173, 13, 30,159,238,245,123, 60,190, 26,162,232,133, 76,162,165, 83, 7, 2,164,150,150, 44,211,202,166, +211, 68,146, 49,198, 91,182,173, 46, 89, 3, 59,123, 99, 33,141,191,249,253,111, 70,235, 35, 53,145,240,161, 55, 78, 54, 52,214, +116,244, 52,251, 3, 94, 89, 85,166, 39,230,179,201,156, 44, 75, 1,159, 18, 13,251,188,126, 79,109, 93,200,163,231,198,167, 22, +134, 22,178, 29, 97, 22,247,147,128, 79, 21, 2,228,243,165,101, 23,227,148,185,112, 15,120, 63, 4,186,114,239,123,197, 82,104, +245,183,219,115,187,220,234,234,238,166,147,209, 16, 68, 16,202,138,164,234, 30,213, 19, 80,244,128,164,250, 36, 69, 71, 88,162, +212, 50, 75, 57,106,149, 44,163, 8, 17,232, 94,219,213, 88, 40,228, 50,249,135, 30,189, 75,245,120, 33,132,188,171,125,224,226, +208,208,149,177,206,158,120, 40, 18,212,116, 29, 97, 66,153,109,101, 23, 85,221,231, 11, 55,153,229,130,191,182,137, 16,217,182, +202,185,228, 98, 54,185, 52, 53, 62, 51,187,144,177,132, 84, 87,139, 53, 77, 41, 22, 74,243,179,137,107,195, 83, 75, 75,153,117, + 27, 58, 20,221, 39,105,210,212, 92,118,113,114, 26,223,152,190, 49,155,150, 4, 51, 24, 68, 0, 88, 54, 37, 24, 5, 49,204,230, +138, 18, 33,249, 66,185, 80,182,100,143, 23, 0, 70, 0,128,156, 11, 46, 24,103, 64, 0,238,194,155,213,195,188,196,123,177, 66, + 33, 64, 21,148, 88,241,139,115, 87,185, 46,130, 47,220,221,121,140,144,170,169,186,207,175,249,194,146,234,151, 85, 47,150, 85, + 70,173,114, 49,131, 48, 41,229, 18, 75, 51, 99, 55,174, 77, 88,166, 93, 23, 13,203,138,212,177,102,157,191,182, 25, 33,137, 83, + 43,155,201, 12, 95,159, 18, 24, 5,195,254, 76, 42, 87,215,210, 43, 41,158, 66,122, 14, 19, 85, 8,118,227,210,177,153,153,228, +200,216,226,249,225, 9, 1,184,166,233,156,211, 98,209,224,134,105,228,115, 13, 65, 18,107,136, 40,170,210,216, 28, 61, 63, 48, +150,203, 22,198,134,167,114,233,252,212, 92,114,120,114, 65, 87,101, 93, 83, 31,189,123,251,217,179, 67,165, 98,185, 92,146,234, +155,107, 77,195, 94, 72,231, 9, 33, 77, 13, 53, 92, 8,184,148, 73,219,116, 69, 37,205, 28,208,203, 1, 50,248, 74,244,116,197, +185, 80,203,155,197,213,161,121, 53,181, 85,230,200,238,113, 8, 24, 99, 69,149,189,193, 26,127,164, 89,245,134,145, 36, 67,128, +128,224,166, 81, 48,242, 73, 7,111,242, 71, 26, 49,193,229,178,253,214,203, 71,109,203,234,187,125, 55,145,228,203, 39,142,188, +116,224,100, 50,155,175, 11,120,154,235, 2, 16,226,177, 27,211,249,124,209,162,112,235,205,119, 80,202, 78, 31, 62,122,117,112, +162,182, 46,104, 51,208, 63, 60,217, 89, 27,148,100,204,152,104,109,105, 2, 0, 36, 19,185,198,230,218,150,182, 70,143, 79, 79, + 45,165, 23,230,147,132, 96, 44,145,166,120, 52, 24,242,207,165,138, 17,159,103, 77,111,115,123,103, 83, 48, 82,187,239,174,186, +112, 36, 20,170,107,162,182,157, 90,152,185, 54,120,245,226,185,107,165,146,225,243,123, 66, 65,111, 38, 89,117, 49,103,147,144, +175, 4,222,197,123,202,195, 21, 45,234,123, 10,164, 21,119, 59,128, 5, 70, 72, 86,100,143, 63,224,175,105,212, 3,209,124, 62, + 87, 46,151, 11,153, 33,136,176, 47,210,164,106,126, 65,237, 66,122,190,174,101,189, 0, 66,152,101, 44,105,241,142,174,214,206, +177,193,193,177,235,195, 63,148, 32, 10, 4,189,183,108,235,204,231, 75,186,174,234, 94, 79, 42,149, 61,117,122, 48,160,201, 4, +210,137,171,103, 18, 11,139, 23, 6,198,202,197,114, 71, 71, 3, 68,176, 51, 22,206,164, 11, 68,194, 29,157,141, 53,145,128,166, +105, 91,118,109, 84,117,143, 81,202, 51, 74, 21, 85,174,141,134,205,115,215,188,138,196, 24, 27,186, 50, 86, 72,166,123, 59, 27, +118,237,219,217,182,110, 55,145, 20, 7,244, 7, 64,216,102, 89, 86,180, 96,109,108,235,174, 93,133,108,242,226,153,129, 8,160, + 37, 41, 61, 51,178, 80,181,160, 21,123, 70,239,211,200,202, 51,198,150,145,173, 21,237,130, 0, 8, 65, 68,176, 36, 75, 30,175, +199, 95,211,168, 7, 99,165, 92, 50,179, 48,170,251,107,202,229,114, 49,179,100,148,141,196,236,152,166,235, 68,146, 10,185, 34, +128, 67,145,166, 78, 68,136, 55, 88, 87,132,136, 82,154, 40,150, 25, 23,205, 33,159,224,124,232,202, 88, 33, 95,138,212,133,115, +185, 66,201,176,118,239, 88, 29,142,132,124,126, 93, 34,128, 96,108,218, 44,236,243,112,206,203, 69,203,182,236,142,174,198,205, + 59,214,181,173,218,168,249, 35, 16,203,182, 81, 88,156,188,186, 48,179, 56, 60, 52,145, 73,231,153, 0, 72,209, 59, 90,106, 18, + 75,217, 82,217,188,243,238, 93,237,171,122,253,181,173,182, 81,178, 77,131,200, 42, 38, 50, 68, 72, 82,180, 64,109, 99, 64,112, +206, 41, 53,141, 72,125,211,149,179,103,146, 20,131, 27,174,130, 0,175, 30,136,247,222,124,245,254,195,215, 68,165,109, 93,113, +200, 9,194, 80,150,101,221,171,123,252, 97,213, 87,131, 37,181,144,156, 74,207, 79, 81,198, 10,233, 57, 8,160,224, 76,146,112, + 46, 87,192,146,238, 9, 4, 7, 47,223, 72, 95,184, 17, 8, 92,144, 8,145, 36, 52,122, 99,242,252,229,145, 2,165, 62,175,183, +189,179, 9, 1, 48, 57,185, 96, 88, 76, 81,229,206,104,211,236,244,210,204,228,252,210, 98,186, 80, 44, 3, 0, 71,167, 23,103, + 19,217,218,158,184,105,216,217,116,190,171,183,101,253,230,213,245,109,171, 20,111, 8, 66,100, 21,147,163, 3,231,207,188,123, +158,217, 44,153,202,199, 26, 34,109,237,245,111,190,121,174,177,181,190,189,167,211, 52,205, 98, 62, 47,107, 65,106,228,179, 75, +147,249, 76,182, 88, 52, 76,195, 46, 27,118, 54, 95, 44, 83, 0, 24,103,150,109, 24, 70, 33,155,193,222, 26,172, 84,232, 47,238, +130,238,178,243,172,200,235,239,241, 36, 80,237,194, 93, 24, 17,253,223,157,156, 59,115,211, 64, 16,199,239,228, 59, 89,167,135, + 95,242,200, 82, 28,143,226,100,130, 33,192,164, 96, 24,168,252, 49,169,104,232,233,232,248, 16, 12, 5,140, 69,130,137,140, 35, +219,138, 29,203, 47, 89,175,147,142, 2, 18,203, 25,104,104,119,103,103,171,221,226,255,219,255,114, 28,199, 17, 81,168,212, 53, + 69,109,242,164, 12, 33,151,166, 49, 46, 18,169, 82,245, 87, 75,150, 49,158, 16, 69, 81,139, 98,185,186, 93, 33,158,200,149,134, +113,232, 44, 22, 23, 87, 99,207,113,151, 16, 0, 9,177,211, 35, 35,244, 3, 73, 38,136,131,253,159,238,133,123, 43, 21,184,115, +153,152, 39,173, 34, 17, 6,125,103, 60,154,173,131, 56,133,192, 91,249, 47, 31,155,237,182, 65, 19, 42,151,196,102, 75,139,162, +192,182, 62,205,103,203,175,214,224,115,207,222, 70,137, 86,150,206, 59,230,217,179,163, 31,223, 71,180,165,189,126,245,196,155, +175,182,126, 32, 41,178,123, 61,126,247,230,237,112, 50, 47,201,132,102, 44, 8,147,138, 88, 60,110, 27,130, 40, 96,150,133, 73, +146, 80,202, 32,139, 83, 54,248,102,101,188,244, 71,114,253,189,150,255,102, 66,186, 95,197,187,161,203, 51,239, 2, 7,138, 2, + 95, 81,235,114,245, 64, 40,105, 8, 97, 6, 0, 98, 34,226, 69,165,110, 2,198,194,205,156,102, 28,194, 56,165,201,204,177,181, +214,105, 1,243, 5,204, 79, 39, 83,123, 56, 93,134, 49, 86,228, 5,194,235,205, 58,163, 20, 47, 54, 81,127, 68,163,152,240,232, +164,213, 48,154,245,186,209, 44, 18,101,226,184,160,118, 80, 93, 77,116, 93,229,207,142,158,191,120,218,108,119,252,141,119,213, +235, 9,130, 32, 43,114, 24, 70,151,150,109,125,177,245,178,168, 52,106, 25,132,163,217,210,243,195, 71, 29,243,208, 52,130,109, + 48,189,241, 62,188,255,104, 13,221,136,102, 34, 42,168, 37,233,118,177,142, 98,122,172,171,186, 94,227, 49,114,174,111, 46,157, +105, 2,113,146, 50, 22,248, 18,199, 40,205, 24,140, 1,224, 96,183,219,221, 39, 49,255,227, 29, 2,251, 74,245, 63,124, 85,112, +119,123, 0,246,142, 17,114,255, 99,239,227, 44,159,124,136,137,246,250,176, 60,199,125, 64,177,247, 52,206, 59, 78,157,163,154, + 44, 47, 5,239,254,198,220,213, 67, 8,127, 1,199,251, 38, 31,206, 72,110,197, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/snake_hook.png.c b/source/blender/editors/datafiles/snake_hook.png.c new file mode 100644 index 00000000000..44d3efab779 --- /dev/null +++ b/source/blender/editors/datafiles/snake_hook.png.c @@ -0,0 +1,310 @@ +/* DataToC output of file <snake_hook_png> */ + +int datatoc_snake_hook_png_size= 9710; +char datatoc_snake_hook_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, + 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, 11, +252, 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13, +215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, 19, 0, 34, 13, 86,254,139, 21, 0, 0, 32, + 0, 73, 68, 65, 84,120,218,237,125,121,148, 94,215, 81,103, 85,221,251,222,183,244, 42,201,218,172,104,177,101, 91,138,109, 57, +222, 29, 39, 70,100, 51, 38, 38, 9, 4,226, 16,114, 8, 57,129, 9, 14,204, 73, 96,128, 51,204,144, 48,115,102, 6,206, 0, 51, +135,129, 48, 33, 76, 32, 48, 11,153, 0, 19,150,236,100,199, 24, 59,142, 29,219,177,108,217,178, 45,217, 86, 75,109,181,186,213, +219,215,223,246,222,189, 85, 53,127,220,251,150,150, 37, 91, 94, 2, 6,242,157, 62,173,175,191,229,190,122,117,171,234,214,173, +223,175,174,112,239,222,189,240,140,143, 51,249,144,217,190,125,251,225,195,135,239,248,208,127,222, 62,153, 92,177,115,203, 74, +230,103,151, 86, 78, 61,210, 15, 93,123,113,248,243, 13,151,239,254,185, 55, 85, 99,223,124,253, 85, 0,128,123,247,238, 77, 86, +230, 54,140,166, 31,191,245,190,211, 93,206, 2,192, 67,211,115,111,255,225,215, 94,117,254,142,109, 27,214,118,135,153,247,242, + 91,159,189,237,129,199,143,172,250,208, 45,127,244,199,204, 46,239,119,178,222, 82,127,241,232,226,226,236,251,110,188,118,113, +229,101,143,207, 46,252,222, 95,223, 14, 0, 36, 34, 72, 6,145,140,109,152,164,217,104, 79, 78,140,142,109, 90, 59,177,121,237, +248,121,155,214,189,239, 13,215, 1, 0, 1,128,170,170,138,170, 32,168, 34, 33, 25, 2, 48,198,180,154,141,241,118,235, 45,215, +238, 33, 0, 80,206,197,101,226,134, 62, 31,138, 27,120, 55,244, 44, 44, 34, 34,134,112,188,221,180, 0,224,134, 61,206,135,110, +216,245,195,142,235, 47,230,206,103,206,231,206, 59,207,158,197, 16, 90, 0,200,251,203, 62, 31,184, 97, 39,239, 45, 12, 6,253, +126,150, 15,157, 27,230,110,232,156,115,222,179,224, 25,205,221,153, 60, 76,248,231,163,239,125,219, 5,155,207,122,205, 37,231, +255,237,131,143,157,250,131, 31,251,249, 31, 93, 55, 49, 6, 0,198,152,183, 95,119,233,158, 29,103,135,215,223,254,250,215, 87, + 31,250,173,127,241, 3,136, 88,255, 90,163,217,172,255,137, 0,240,137, 95,124,215,241,165, 78,187,145,182,155,105,111,144,119, +179,225,251, 62,242,151,171, 62,116,231, 71,127,119,237,217, 23, 12,123, 75,110,208, 25,118,102, 87,230, 15,159,232,244,102, 23, + 59,189, 44,127,255, 31,127, 46, 10,254,175,223,243, 51,160, 12,160,160, 34,194, 8,154,128,107, 88,171,160, 87,159,191,245,192, +241,229,110,191, 79,100, 12,168,170,176,170, 2, 34,162, 65, 68, 34,108, 36, 73, 43, 77,222,114,213, 46, 0,176,236,114,246,153, +248,220,187,129,228, 3,206,251,158,197,139, 48, 11, 0,164,214,188,241,138,221,214,103, 61,246,185, 31,246,252,176,227, 6,203, + 46,235,230,206,231,142,115,239, 29,139, 42, 52,210,196,186,254,178,247,153, 31,118,243,254,114,214, 95,236,103,249, 32,207, 7, +121, 62,204, 93,238,188,243, 30,207,208,165,206,228, 97, 79,250,251, 91,127,242,241,193,252,225,249,153,199,190,120,223, 35, 31, +252,212,223, 60,151,129,110,255,224,127,186,245,238,111,252,194,175,124,224,200,252, 98,187,221,110, 25,252,254,171, 94,122,214, +248,104, 51, 77, 62,244,249,219, 79,247,253,175,125,228,127,188,250, 39,111,174, 6,106, 54, 26,119, 63,112,239, 45,251, 30,253, +242, 3,135, 0, 0, 96,161,252,232, 69,231,108,251,129,171, 47,106, 55,146, 45,235, 38,207,217,180,110,114,164,221,233,103,119, + 28, 56,244,177, 91,191,229, 60,135, 81,170,129, 46, 63,111,107, 98,205,133,219, 54,121,230, 47,238, 59, 88,191,230,254,199,167, +246, 63,126,198,183,246,190,239,187,238,252, 93, 87, 94,113,185,188, 85,245, 87,145, 68,216,103,189,188, 55,215,237,245, 58,253, + 97,167, 55,200,188, 71, 64, 64,232, 13,178, 95, 42, 76,108,213, 64, 34,242,240,167, 63, 75,100, 85,152,133, 85,156,120, 47, 62, +119,105, 59,105,180, 27, 35,221,177,193,202,250, 97, 55,115,110,152,187,126,230, 44,209,111,188,243,141,131, 60, 95, 88,233,253, +246,103,254,174,114,184,109,219,182,253,208,107,174, 7, 64, 5, 32, 4, 16, 81, 21, 80, 5, 21, 85, 5, 80, 80, 68, 80, 84, 54, + 68,134,200, 26, 74,173, 77,140, 73, 19,123,245,249,219, 46,220,178,225,241,217,197, 65,238, 44, 0,168,136, 40, 3,123, 17, 47, +236,132,157,112, 46,236,132,189,176, 87,201,133,115, 17, 96, 81,209, 48,184, 34,162, 69, 76,173,105, 55,211,239,187,124,215,209, +249,101, 11, 0,156, 15, 84,152,217, 43,123,102, 39, 62, 23,159,249,124,200,110,232,243,158,207,122,222, 59,231,189,243,222,133, + 88, 37,234, 89, 88, 85, 21, 8,177,217, 72, 38, 71, 91, 22, 0,242,193,138, 10, 11,123, 21,199, 46,103,159,139, 31,250,124,192, +121,207,251,220, 57,159,123,206,189,207, 61,135,208,151,121,159,251, 16, 0, 61,179,168,130, 53,100, 1, 32,239, 45,170,178,120, + 47,156,137,207, 56, 31,178, 27, 56,142,129,210,121,239,152,227, 40,222,231,142,179, 48, 92,136,167,222, 59,239, 69,244,133,139, +147, 47,200, 99,219,182,109,244, 66,141,181,202,251,175,184,240,162, 63,122,255, 47,204, 79,237, 59, 62, 63,255,147,191,251,103, +157,254,240,204, 7,170,194,245,129,191,250,171, 71,238,250,204,161,153,185,185,165,110,230,125, 98, 8, 0,127,237, 47,190,122, +134,183, 22,151,146,245, 19,163, 87,109,162,191,190,123,255, 39,191,126,223,129, 35, 51, 79,206, 47,207,175,244, 60,243,107,246, +156,127,247, 99, 71, 69,245,116, 67,188,237,186, 75, 31,152,154,153,152,152,136,127,127,225, 63,188,231, 63,252,200, 13,231,173, +159,172,127,232, 85,151, 94,252,150,151, 95,252, 19,175,189,234,253, 55,189,238,169, 67,220,242, 59,191,126,214,228,120, 41, 81, +212,209, 66,183,191,220, 27, 76,140,143,193,220, 82,249,209,191,249,214, 3,136,120,195,203,118,118, 6,217,187,175,191,250,156, + 77,103,109, 89, 59,105,140,121,116,122,230,107,251, 31,251,238,247,254,226, 41,148,157,231, 62,177, 54,165,147,111, 65, 85,255, +250, 91, 49, 60,217, 36,241,206,157,238, 30,169, 84,250,100,187,181,235, 37, 27,137, 78,107, 16, 79, 51, 74, 45,212,166,201,214, + 13,107,214,140,183, 47,223,185, 93, 17, 54, 77,142, 89, 67,131,220,229,158, 69, 65,152,231,251,131,127,251, 63, 63,253,204,211, +127,199,127,255, 85,219, 26, 23, 22, 36, 2, 85,246,121,222, 95, 26,118,231, 59,131, 97,167, 55,236, 14,135, 97, 1, 85,213, 15, +127,254,246,135,167,103, 79, 49,253,223,115,197,158, 79,126,240, 67,227,155,207,111,140, 76, 38,205, 17, 74,154,104, 19, 34,131, +198, 24,155,166, 36,205,212, 52, 19,107,136, 28, 75,238,249,146,237,155,175,221,189,253,246,135,167, 68,164, 28,104, 98, 98,194, +124,246,195,191,111,155,109, 0, 97, 97, 16, 65, 68,141, 86, 19, 82, 48, 32,101, 66, 48,198, 36,134, 12, 81,120,247,138,115,207, +222,185,101,211,125,143, 29, 45, 7, 34,219,104, 17, 25, 0, 34, 66, 36,131,132, 72, 4,136, 72,134, 76, 66,182, 73,105, 43, 73, +108, 35,177,173, 70,210,110,164,163,173,230,104,171, 49,222,110,157, 61,222,126,215,107,174,172,102,141, 76, 2, 68,136,168, 81, + 97,136,225, 7, 9,209, 32,145,161,240, 64, 66,180,134, 82,107, 26,137,109,166, 73, 35, 77, 38, 70,218,111,189,118, 79,109,250, + 69, 65, 5, 20, 68, 69,133, 85, 88, 65, 64, 21, 64, 0, 84, 20, 65, 85, 21, 84, 65, 1, 0, 1, 1, 49, 14, 74, 35,173,198,171, + 94,186, 3, 0, 44, 8,131,178, 8,131,176,134,129,148, 53,134,125, 81,102, 21, 39, 34, 34,162, 33,123,213, 98, 64, 68, 34, 74, +173, 93, 51, 62, 50, 42,185,149,184,156,177,178, 19,239,148,125,248,173,226,196,231,194,185,178, 11,235, 7,179,138,196, 31,208, + 40,156, 53,212,176,118,253,152,181,226,115, 13,233, 46, 59,101, 47, 46, 99,118,226, 51,118, 25,251, 76,124,198,222,177, 8,139, +176, 74,120, 34, 33,169, 86, 5,208,112,143,137, 1, 43,236,132, 89,197, 43,123,246, 78, 56, 23,151,177,203,196, 13,197, 13,216, + 13, 88,196,179,120, 22,102, 97, 81, 22,245, 34, 44, 26,135,140,153, 30, 88,206,135, 18, 37,202,197, 59,225,156,243,140,253,144, +243,129,207,251,206,115,238,189,103,102, 22,207, 28,126,152,197, 11,123,225, 48, 20,168, 34,146,101,159, 9,179,132,183,124, 38, + 62,103, 55,100, 23, 71,113,204, 65, 28,199,236,226,111,118,204,204,197,109, 74,140,122,150,243,129,132,213,145, 29,187,140,253, +144,221, 48,108, 20,124, 28,136,115, 31,214, 56,118, 94,226,235,190, 28, 75, 69, 5,148,224, 69,181,174,109,221,186,149,224,197, +244, 64,196, 23,151, 64,167,200,214,203,199, 67,159,254,156,235,204, 45, 61,249,208,114,103,190, 55,204, 7, 89,158,123,246, 18, +108, 82,102, 22, 59,255,229, 47,191,246,247, 36,208,167,126,227, 87,206,106,240,253,183,254,233,145, 19, 75, 51,139,157, 19,203, + 43, 75,221, 65, 63,203,152,213, 88,106, 37, 73,187,153,182,210,244,189, 55,190, 50, 77,236, 19,179,139,127,254,245,125,207, 71, +130,157, 91,183, 93,189,251,156,143,127,233,150, 83, 11,244,225,159,254, 97,211, 61,114,207,193,185, 7,167,142,237,123, 98,250, +200,236,194, 82,198,157,254,176, 88, 12,192, 90,179,231,156,237,107, 91, 73, 43,129, 86,154,182,211,228, 61, 55,188,188,221, 72, + 31,122,242,196,231,191,249,224,153,203,241,139, 63,254, 19,187,214,192,135, 62,245,229,187, 31, 61,124,232,200,212,105, 53,180, +121,205,232,209, 19,139, 83,179, 11,143, 31,159,159,239,244, 14, 47,116, 79, 94,178, 61,223,251,104,220, 63,111,219,180,241,162, +179,215,244,134, 89, 98,204,186,118,227, 61, 55,188,252,172,241,209,117, 99, 35,125,214,143,126,233, 27,211,115,243, 44,170,170, + 68,100,141,185,116,215,121,191,249,190,127,185, 56,115,232,171,119,221,245,205, 67,199,126,253, 15, 63,122, 6, 57,223, 5,231, +118,251,217, 32,203, 89,181,145,216, 70, 98,158,254, 46,167,102,142, 79,205, 28, 15,207, 55,174, 25,223,177,126,205,104,106, 18, + 99,172,161, 61, 91,214, 94,182,245, 44, 64, 16,209,254, 96, 56, 16, 60, 50, 55,119,221,123,126,134,189,123, 22, 54,180,118,180, +233, 85,140,161,118,154,172, 31, 31,117,206, 51,216,251, 15, 63,121, 38, 83,112,124,177,115,124,177,243, 2, 27,245,161,153,121, +131, 52,214,106,160,142,183, 26,233,134,201,177,157,155,135,187,183,172,255,171,187,246, 51,203, 88,171, 49, 49,218,222,182,110, +242,165,219, 55,141, 52, 26,205, 52,201, 29,175, 12,179,153,165,149,253, 79, 76, 47,174,244, 86, 6,153,103,126, 33, 5,218, 48, + 57,186,110,172,221, 72, 83, 17,246, 28, 87, 5, 34,122,247,235,191, 11, 17, 67,229, 68,133,153, 57,103,206,115, 55, 44,170, 67, + 55, 92,178, 19, 0,168,168,173,120, 85, 17,126,114, 97,229,207,239,120,224,224,244,241,231, 40,208, 47,189,227,173, 55, 93,127, +125,115,116, 29, 26,171, 18,150, 79, 14,137, 68, 92,127,133,133, 61,251, 92,125,238,243, 1,187, 33,231,189,220,229,206,251,204, +115,238,217,249,176,219, 98,102,102,150,245,227,237,155,175,191,154, 16,189,104,183, 63,252,127,119, 62,116,224,240,209,103, 22, + 72, 68,246,125,252, 99,182,209,182,105,139,140, 1, 68, 17, 86,246, 34, 68, 66, 42, 70,133, 17, 89,213, 42,123, 68,131,100, 4, + 9,136,200, 38, 38, 73,140,203, 82, 55,108,122,231,153,189,136,243,236, 61, 59,150,220,185,204,179,243,156, 51,131, 74,171,145, +188,253, 21, 23, 15,175,188,160, 59,204,191,250,224, 19, 15, 60,126,244,233, 52,212, 26, 91,171,136, 0,168, 34,161,252, 7, 0, +132,164, 4,130,136,136,138, 40,194, 33,127, 70, 80,178, 73, 72,175, 0, 0,144,144, 12, 82, 70, 62, 51,194,134,136,173, 73, 89, +210,196, 52, 67,134,224, 57,143,155, 84,182,134, 26,105,242,134,203, 47,120,237, 69, 59, 58,253,236,255,252,237,189,222,251, 83, + 8, 68, 73,170, 10, 8, 32, 42,160,128,192,136, 70, 85,148,149, 0, 21, 81, 1,139, 92, 17, 17, 8,136,136, 12,168,130, 81, 80, + 85, 82, 99, 1, 1,192,103,209,146, 16, 67, 42, 72,200,132,104,136,172, 53,222,179,245,156, 59,111,136, 26,214, 54,147,228, 61, +223,115,205, 98,183,127,203,195, 71,143, 30,159, 91,181,139, 65, 34, 4, 0, 84, 4, 4,208,176, 11,130, 80, 99, 8,213, 82, 8, +197, 12, 5, 85,136,137, 51,134,197, 25,138,203, 67, 97,245,229, 70, 4, 1, 16,129, 16,137,208, 32, 26,162,196, 80,106, 77, 98, +141, 49,100,173,105, 36,118,162,221,124,245,238,173,223,119,217,174,114,247,100,161, 40,210, 70, 41, 84, 64, 5, 84, 69, 24, 68, + 64, 89, 69, 64,130, 81,139,134,172, 57, 36,206, 42, 42, 12, 42,160,162, 26, 50, 83, 1,192, 80,142, 9, 63,113, 84,128,112, 31, + 65,212,160,179, 80,159,177,198, 52, 18, 59, 49,210,250,222, 75,207, 63,222,233,207,102,106, 1, 64, 57, 94, 0,130, 62, 68, 85, + 89, 85, 64, 68,132, 85, 5,152, 37,184,155,176,176, 7,241, 90, 20, 96,148, 93,116, 61,113, 18, 43, 78, 26,179,219, 66, 44,145, +234,169,130,130, 42, 2, 16, 2, 33, 25, 67,137, 49,137, 53, 35,205,116,189, 72,107,188,105, 1, 64,216, 73, 44, 53, 5,129,164, +216, 57, 72,244,127,101,101, 22,241,225, 55,176, 99,246, 18,165,113,194,153,114, 30, 50, 99, 81, 21, 9,201,247,201,185,188, 40, +212,126, 52, 88, 45, 1, 16, 81, 98, 77,194,166,153, 38,185, 26, 11, 0,226,243,104, 42, 16,117,163,170,194, 28,182, 69,160, 34, +226,133, 25,148, 37,200, 17,170, 92,222,171,228,226,115,102, 39,133, 4, 33,156,214,158,104,177, 57, 8,194, 5,161, 43,141, 41, + 0, 34, 0, 34, 17, 25, 34, 3,100, 1,128,125, 46, 34,193,108, 75,173, 4, 37,133,173, 86, 57, 83, 69, 26,159,139,120,241,161, +230,198,197, 92,170,136,120,102,174, 11, 39,225, 59,202, 44,204,241,251, 44,234, 89, 89,148,181,216, 37,168, 34,104,112,141,160, +161, 76, 68,138, 29, 28,171,106, 16, 66,153, 85, 89, 37,236, 84,124,216, 44, 85,229, 63,169,116, 16,231, 85, 68, 68, 61, 51, 23, +179, 22, 74,220, 18,159, 48,179,122,150,248, 1,102,102, 17,133,194,224, 0, 17, 80,193, 2, 0,103, 3, 41, 76, 48,250, 87,161, + 30,101,175,226, 37,136, 34, 62,110, 3, 53,234, 35,236, 93, 10,245, 20,243, 18,182,110, 44,162,197,150,174, 80, 88,185,201, 11, + 50,213, 53, 26,189, 0,192, 34,226,231,239,185,183, 40,155,134,127, 69, 65,161, 48, 71, 80,145,224,255,113, 3,172, 82,110,134, +163,111, 71,243, 43,158, 23, 55, 39,170,160,209,210, 11,247, 13,175, 23,198, 4, 44,200, 66, 34,150,213, 48, 90,135,230, 69, 86, +111, 12,123,179, 23,143, 48,123,247,238,165,147,240,161,127,240,199,139,110,163,248, 29,129,158,243, 86, 58,177,246, 87,222,251, +222, 55,190,226,154,126,231, 68,127,233,248,160,123,162,159,101, 11, 43,131, 15,125,254,182,123, 14, 78,125,251, 4, 50, 19, 19, + 19,203,203,203, 39,189,250,214, 27,110,248,196,127,253,205,141,105, 54, 55,181,111,118,102,106,126,105,126, 97,165,215,233, 13, + 29,243, 37,219, 55,239,189,112,231,225, 19,203, 11, 43,189, 23, 92,154,237,219,183,159, 66, 67, 63,125,211, 91,110,126,243, 27, +143,238,255,242,236,194,194,194, 74,127,101, 48,236,103,249, 48,247, 44, 2, 0, 68,152, 24,243,182, 87, 94, 50,219,233,126,228, + 11,119,124,219,167, 44, 49,230,230, 55,125,239,204,163,119, 76,205, 46, 28, 91, 88,158, 89,234, 44,174,244, 58,253, 97,230, 60, + 2, 52, 18,219,106,164,237, 70,218, 76,147,145, 70,250, 51,111,184,238, 79,110,219,247, 60,247,135, 63,250,250,235,255,244, 75, + 95,115, 69,114,125,178, 64,183,252,214,127, 60, 49,117,223,212,236,194,161, 99,115,135,102,230,158,152,153,239,244, 7, 8,104, + 19,147, 24,155, 90,147,218,193,104,179, 57,210, 76,251,141,198, 72, 51,253,145,235, 94,246,224,244,137, 47,222,243,208,115, 16, +101,247, 57,231,252,252,155, 95,251,179,191,247, 49, 87, 75,245, 87, 9, 52,210, 76,243,238,220,204,252,210,244,252,226,193, 99, +179,247, 63,254,100,206,114,116,177, 91,255,194,248, 72,251,202,243,118,232,112,200, 34,142,125,219, 37,187,207, 94,183,107,211, +117, 31,249,202,157, 89,150,159,169,229, 18,125,238,191,253,250, 39, 63,247, 23, 63,245,219,127,116,210,102,119,149, 81,191,242, +194,157,151,159,187,249,248, 98,231,240,236,226, 35, 71,143, 15,157, 59,120,124,177, 94,183, 7,128,204,185,199,143,207,129,105, +141,183,155,160,194,170,222,115, 98,233, 85, 23,157,123,193,150, 77, 7,166,103,159,126, 55,189,125,243,230,143,254,242,191,249, +238,243,206,250,131, 79,126,246,207,110,191,239, 36,160,232,100,163,254,254,107,246,244,178,188,151,229,253, 97, 54,200,157, 52, +218,117,152,185,254, 56, 56, 61,125,112,122,250,181,151,237, 25, 17, 39,162,142,101,144,187, 53,163,173, 15,220,244,186,241, 86, +243,214, 71,167, 63,125,251, 61,161,192, 29,244,209,110, 54,126,246, 71,110,186,241,234,203,239,184,243,171,127,241,153, 79,124, +126,223, 99,139,203,157,103, 54,234, 77, 19, 35, 89,238,114,231, 69,213, 26,234,245,158, 97, 10,190,114,239,253,173, 70,250,202, +221,231, 52, 45,230,222,246, 51, 55,223,233,141,183, 90,187, 55,142, 95,251,163, 55,142,181, 27,173, 52, 37,162,220,243,137,229, +149, 35,199, 14,254,234, 71,238,184,111,122,241,241,233,153, 51,245, 50,239,189,103, 81, 5, 67,212, 74,211,230,240,153, 49,193, + 65,150,127,249,190,135,173, 49,231,110, 90,187,245,172,181,232,179,185, 36, 53,179,100, 13, 25, 66, 85,200,189, 31,122, 93, 28, +228, 79,204, 45,157, 88, 92,122,118,110,207,170, 10, 64,132,105, 98,198, 90,141,137,204,157,161,145,122,230, 71,166,231, 30,153, +158, 43,203,187,173,102, 43,119, 57, 63,101,167,252,236,214, 50, 13,104,184, 53,173, 52,157, 24,105,181, 82,243, 28, 99,139,234, + 96,208,127, 14,210,156, 44,144,136, 26,196,166,181, 35,173,198,154,209,246,230, 53, 19,151,236,252,251, 78,223,158, 18,169,173, +105, 55,211, 73,225,132,104,164,217,152, 24,105, 13, 29, 63, 50,245,100,187,217, 24,109, 54,206, 26, 31,189,104,219,198,141,147, + 99, 99, 35,109, 81,237, 13,242,229,254,224,192,209,227, 71,231, 22,186,131,108,101, 48,124,129, 5, 66,196,102,154, 36,198,164, +214, 76,180,217, 51,111,223,176,246,146,115,182,136,104,171,145,142,181,155,137, 53, 6, 81, 84, 61, 75,238,125,168,177,189,234, +194,115, 0,226,214,172, 55,204,239, 63, 58,247,191,190,252,117, 56, 61, 18,253, 44, 4, 26,109, 53, 38, 71, 90, 0, 88,236,153, +128, 16,201,152, 0, 57, 66,224,104, 48,123,145,204,121, 68, 8, 4, 5,231,139,210, 17,226, 72, 51,185,122,231,217, 87,158,243, +230,161,243,223,120,228,200, 39,110,187,247,185, 11,132,136, 27,214,174, 31, 93,187, 21,141, 41,118,186,177,206, 18, 42, 4, 34, + 94,189, 99, 63,244,249,160,145,245,114,103, 51,231,135,222,231,206, 15,115,159, 59,207,204,193, 45, 16, 33,181,230,187, 46,220, +241,138, 93, 91, 31, 57, 54,255,191,191,122, 87,255,140, 87,149, 40, 80,146,216, 91, 63,248,107,163,235,182,216,198, 8, 2, 48, +123,149,176,211,101, 21, 47, 42, 97,207,170,198,163,177, 68, 41,219,148,178,190, 53,131,148,109,110,125, 51,225,204, 57,199, 28, + 88, 86, 44,202,194, 34, 64, 4, 59, 55,174,125,255, 77,175,155,237,244,127,251,204,120, 78,166,217,110,255,254,207,253,212, 47, +255,228, 79,141,172,221,146,182,199, 77,210, 0, 50,136, 20,240, 96,136, 64, 43, 96,168, 9,104, 40, 82, 5,133, 6, 93, 8, 33, + 18,162,181,198, 32, 25, 34, 99, 40,212,219, 0, 32,108,112, 1,160,153,152, 43,119,190, 36,105, 52, 14, 31,159,127,250, 4,205, +252,251,155,223,125,221, 21,215, 36,173, 49,147, 52,144, 72, 3, 73, 45,212,166, 32,226,161, 8, 16, 49,224, 80, 90, 84,137,111, +197, 98,153, 4, 17, 12, 5, 70, 34,153,128, 63,151, 95, 80, 80, 0,131,184,126,188,125,241,142, 45,223,122,124, 90, 79, 99,242, +219,183,111,183,148, 52,108,163,133, 72, 0, 34, 44, 0,170, 34,160,138, 68, 5,248, 14,136,138,164,168, 2,100, 80, 4,208, 18, + 49,144, 85, 35, 4, 98, 84, 65,135, 0, 38, 34,228, 8, 65, 30,131,104, 12, 25, 79,185,243,200,168, 0, 45, 85, 85,189,249,250, +171,255,242,155,143, 28, 59,113,234,101,219, 18, 89, 36, 75,136,160, 8, 8, 42,138,136,138, 4, 32,164, 36,168, 8, 40, 72,136, +130,136,177,164, 73, 8, 66, 64, 6,201,160, 88,178,172,154,168, 58,107,168,162, 59, 36, 0, 17,185, 39, 68, 68,231, 1, 0,210, + 88, 14,122,243,149,187, 14,158,232,126,241,155,247,159, 34, 82, 35, 17,133,161,137, 40,208, 8, 3, 41, 0, 81, 99, 41, 52, 76, + 26,134, 43, 0, 18, 34, 1, 25, 66,131,100,200, 24, 68, 75,198, 26, 99, 16,203,202, 33, 89, 34,107, 76, 98, 77, 98, 41,181,182, + 97, 77, 98, 77,106, 76,106,109,187,145,180, 27,233,206,117, 35, 63,112,221,229,167, 18, 40, 8,129, 20, 46, 73,136, 74,168, 24, + 3, 27, 22,107, 92, 81,120,133,162,222, 74, 97,114, 0, 9,136, 32,148, 89,139, 66, 44, 81,168,136, 97,188, 87, 66,107,109,106, +141, 53,148, 88,178,134, 66,110,190,190,153,252,224, 43, 47,127,234, 90, 22,198,213,192,148, 0, 0, 84,197,147, 88, 70,209,168, + 79, 70,108,131,187, 81,128,238,177, 34, 88, 20,223, 69, 42,249, 22, 20,171,213,166,224, 93, 24,162, 70, 98,198, 82,124,221,158, +243, 87, 11, 20,111,157, 10, 15, 42, 84, 82, 22,166,195,243,224, 42,197, 31,171,168, 49, 88,200, 23,191, 88, 13, 83,148,178,227, + 7, 40,152, 8, 6,150, 9,146,161,196,152,181,163,205,171,206,219,250,148,213, 94, 11, 54, 94,193,245, 40, 24, 46, 2, 32,160, +133,136,225, 42,165,184,160, 8,101,125, 91,244,164,145, 78, 82, 39,128, 22,165,118, 34, 52,132,150,200, 32, 37,214,108, 24,107, +191,100,221,100, 33,144, 2,196, 10,117,212,135,150, 4,149, 80, 97, 6, 8,117, 52,141, 68,197,200, 85, 44, 42,105, 82,137, 32, +149,130, 74, 24, 64,139,202,249,106,206, 81, 40,243,163, 49,100,141,105, 54,236,249, 27,215,148, 75, 71, 89,170, 83, 0, 17, 21, + 16, 45,107,214,160, 2, 18,175, 29,158, 7,177, 66, 81, 16,180,168,101, 43, 43,115,197,124, 41,176,153, 82,188,146, 95, 19,149, +133, 16, 2, 2, 81,144,201,182, 26,233, 85, 59,183, 0,128, 45,169,153, 88, 84, 1, 3,163, 56,214, 24, 69, 35,247,166,170,128, +179,150,112,130,134, 82, 63,131,114, 57,223, 82,215,204,106,189,151, 58, 12,168, 82, 88,145, 8,209, 34, 38,150, 70,154,169, 0, +144,130,138, 10, 22, 21,106, 84,133, 80,133,133,242,170, 26,197, 42, 81,142, 98,109, 81, 97, 80, 46,212, 35,170, 42, 0,229,165, + 37,252,121,146,126,160,122, 94,218, 19, 25,178,100, 26,214,104,208, 80,132,201, 68,160, 44,149, 22,176,139,138,128,248, 85,162, +196, 10,191,143,191,153,149, 3, 26, 14,171,170,179, 5,237, 94,106, 58, 42, 37,211, 24, 89, 48,194, 69,136, 68,104,137, 0,192, +198,213, 20, 2, 48, 82,204,139, 8, 20, 85,104,173,128, 78, 31,202,214, 42,129, 58, 85,200,164, 94, 85,184, 16,167,224, 60,197, +129,180,224,211, 70, 11,131, 56,107, 82, 51,246, 8,174, 5,129, 64, 99, 13, 58,168, 39,120, 88, 5, 45, 48,171,122, 16,137, 18, +104,160, 99, 69,153, 34,238, 33, 21, 30, 37, 82,248, 94, 81, 9,151,162,176, 29,102, 80, 20,107,174, 23, 67, 73,136, 85, 84,104, + 72,148, 89, 64, 81, 11, 13, 73,229, 56,113,226,216, 67,201, 12, 99, 47,226, 85, 92,172,234,199,162,126,224,222,199, 2,249,106, + 16, 40,186,165, 74, 85,101,151, 10,159,171, 34,108,136,159,182,240, 20, 13,188,184,232, 71,133,205, 70,113,217,171,122,225, 0, + 14,123,229, 92,124,144,201,115,128, 25, 84, 57,214,231, 69,180, 82,146,172,130,202, 66,184,144,232,122, 82,154, 83, 48,245, 24, +207, 45,168, 10,123,192,154, 13, 73,136, 55, 1,125,143, 22, 45,149,245, 20,172, 57,246, 92,104,165, 64, 57, 64, 74, 0,112, 21, +144, 80,199, 24, 75, 92,161,130, 28, 85, 43, 21,217, 50, 57, 44,125,173, 12, 60, 34, 53,105,162,146,156,122, 23, 25,107,165,101, + 20,244,184,120,165,112, 59,133, 52, 28,132, 43,180, 87,130,163, 39,249, 96, 25, 68,109, 80, 3,148,211, 90,243,240, 96,209, 26, + 97,252, 18, 66,244, 34, 62,160, 93, 42,186, 26, 10,170,161,175, 82,224,163, 1, 13,148,136,211,106,193, 59, 44,161,153,114,209, + 10, 34,217, 96,170,170, 2, 97, 53,170,144, 77, 95,155, 41, 14,252,120, 21, 23,144,167, 96,168, 37,178, 84, 2, 83,117, 88,147, +163, 86,162,160, 26,229, 14, 26,149, 26, 92,180,138,187,105,227,181,227,194, 4,197,124,197,153, 18, 97, 8,128,102,160, 58, 86, + 48,101,136,208,133,149, 68,172, 73,185,240,171,128,151, 85,115, 20,241, 53, 9, 46, 22,182,188,149, 76, 53,252,218, 30,156, 57, + 30, 86,162, 58, 80, 95,174,172, 5, 32, 44, 85, 28,174, 47, 88, 80,123, 46, 80, 5,214,136, 91,174, 50,234,194,247,161, 50,106, + 65, 22, 35,138,172,196,104,217, 38, 16,250,189, 22, 23, 23,151,150,150, 94,108,176,208, 63,236, 67, 85, 39, 39, 39,215,172, 89, + 99, 1, 96,121,121,249,200,145, 35,223, 81,202, 83, 73,158,107,214,172,161,239, 40,226, 31, 25,122,247, 29, 5,253, 35,123,216, +231,231,165,112,217,174, 11, 94,125,249,165, 87,236,218,185,121,162, 45,110,224,135,221, 44,207,230,123,131,187, 31,157,218,127, +100,230,235, 15, 61, 54, 60,227,194,226, 63, 17, 5, 93,182,251,165,255,234,157,239,186,108,247, 46, 11,156,247,151,179,238,146, + 27, 46,187, 97,215,173,204, 6, 58,165, 99,110, 91,124,197, 5, 91,175, 62,111,203, 59,246, 94,198, 44,253, 60,159,158, 95,190, +239,137, 99,183, 60,112,112,152,187,127,178, 10,250,233,183,190,245,231,222,249,174, 97,191, 51,236,204, 46, 61,118,103,191,187, + 48,200,178,129,243, 89,238,189,231, 60,246,105, 68,130, 80,153,218,132,220, 97,178,221,220,123,225,142, 87,238,222,158,229,126, +255,209,217,191,121,224,224, 82,183,255, 79, 71, 65,151,239,186,224, 15,254,221, 7, 72,220,220, 99,223, 92, 89,156,233,244,251, +221, 65,214, 27,102,253, 44, 31,100,110,152,187,216, 78,233,124, 96,194,134, 18, 81,168,236, 25, 67,134,200, 18, 26, 99,194,239, + 11,206, 94,119,193,230,181, 89,238, 31,158, 89,248,234,190, 71,114,231, 95, 12,138, 64, 60, 53, 44,243,204, 10,122,239,155,111, +252,137,239,127, 99,255,196, 99,221,229,185,197,110,119,169, 55, 88,238, 14,150,251,131,229,110,191,211,207, 86, 6,195,238, 96, + 56,200, 93,230,156,231,152,159, 7, 82,162, 49,161,197,214,164, 54, 73, 19,147, 90,147, 24,155, 88,147,196,162,172,217,125,246, +186,221,155,175, 93, 25,230,247, 60,113,236,222,111, 39,141,228,105, 30, 63,255, 99,239,188,112,203,228,190,135, 30,252,195, 47, +220,122, 74, 84,237, 25, 20,244, 99,175,187,246,109,123,175, 92, 60,246,240,242,202,202, 98,183, 63,191,210, 91,232,244, 78,116, +186,115,203,221,185,229,149,197,110,127,152,231, 2,168, 74, 98, 76, 47,203, 29, 11,146, 69, 66, 67, 4,222,173, 25,107,143,165, + 58,218,178,153,119, 4,121, 98, 77,154,196,222,129,196, 24,107, 77,106,108, 51, 49,123,119,111,223,187,123,219, 82, 47,251,218, +254, 67, 83,179, 11,223,110,165,156,187,117,219,219,190,231,181,223,189,103,215, 29,119,222,114,219,125,183,127,248,207,166,250, +195,236,185,184,216,142,141,235,110,122,197,158,110,103,182, 59,200, 22,123,253,249,229,222,137, 78,119,118,169,243,228, 66,231, +216,252,210,202, 96,216,106,183, 87, 52,153, 61,113, 90, 84,103,190, 70, 17,152, 28, 27,189,104,251,182, 22,161,243,222, 26, 72, +140, 49,222, 12,209, 91,131,214,154,212,218,241, 86,122,211,181,123, 8,209,171,126,229,254,199,246, 63, 49,205,171,153, 20,207, +231, 97,136, 94,115,205,213, 31,248,241,119, 13, 22,166,190,126,207, 55, 14, 60,124,207,255,253,236,103,158,152,153,123, 94, 49, +232, 77,215,236, 65,208,149,193,176,211,207, 58,221, 97,167, 63, 88,234,245, 23, 86,250, 11, 43,189, 97,238, 70,199,199,247, 63, +241,228,153,139,184,180,210,189,237,129, 7, 1, 96,180,213,218,189,125,235,186, 17, 99,189,179, 6,173, 24,195,156, 57,215, 31, + 26,107,168,145,218,102,146,188,254,210,243,222,124,213, 75,173, 49,221, 97,246,224,209,217,187, 14, 77,207,204, 47, 62, 91,165, + 92,117,209, 69,239,120,195,141, 23,109,123,137,244, 79, 60,118,248,208, 35, 83, 71, 62,248,135,191,243,224,244,252,161, 99,115, +103, 30,248,158, 78, 65,215,236,218, 49,200,252, 48,119,131, 60, 31, 56,151, 57,159, 59,118, 44,162, 58, 58, 58, 50,215,127,142, + 11,118,119, 48,248,230,129, 71, 0,160,217,104,236,216,120,214,150, 53, 99, 13,163, 69, 20,167, 97,238, 86, 40, 51, 20,218, 77, + 77,171,153, 94,186, 99,243, 43,118,109,107, 55, 26,173,212, 38,214, 42,153,165,238, 96,224, 92,150, 51,171,230,206,141,180, 91, +227,237,145,145, 86,123,253,218, 53,235,198,199, 84,164,219, 93,153,155,159,155, 62, 49,247,232,253,183,253,221,173, 43,115, 43, +195, 39,230, 22, 15,207, 45,202,179,111,125, 57,173,130,182,110, 92, 15,236,115, 70, 23, 26,250, 89, 2, 46,157, 24,106, 38,118, +232,188, 53,230,121,154,253, 48,203, 14, 76, 77, 31,152, 2, 0, 24,105,181,182,174,159,220, 48,218, 76,136,210,196,132,133, 15, + 41, 0,190,161,116, 77,101,128,183,198, 36, 6,145, 76,128,138,186, 43,203, 75, 75,139,206,249,161,115,253,204, 13,115,223, 25, + 12, 6, 98,166,230, 22,142, 47,118,156,123, 94,153,215,105, 21,180, 99,195, 26, 22, 1,192,144,212, 32,162, 33, 76,172,105,164, + 73,187,145, 58,230, 54,242, 11, 24, 56,123,131,193,129,169,193,129, 98,201,181, 68,214,154, 13,103,173, 91, 55, 49,142,226, 71, +155,105,106,140,112,198,236, 2,206, 20,208, 75, 64,200,157,239, 12,156, 87, 60, 54, 59, 59, 24,102, 2,224,253, 11,153, 55,156, + 86, 65,173, 36, 97,137,181,217, 0,103, 37,214, 54, 19, 51,210, 72,188,111,138, 42, 66,182,118,124,100,161,243,194,211, 41, 65, + 53,244, 6, 79, 77, 31,155,154, 62,246, 34, 77, 20,135,206,169,106, 4,220,201,164,214, 54, 18,230, 70, 26,206,231, 8,136, 50, + 33, 62, 12,180,212, 89,249,231,184, 89, 93, 25, 58, 22,177,198, 88,162, 70, 98, 0, 18, 68, 48, 68,137,181,205, 70, 58,218,114, + 19, 35,205, 53,195,145,179, 38,199,190, 53, 53, 55, 61, 55,255,207, 78, 65,199,151, 58,225,240, 2, 36, 74,132, 18,107, 26,214, +182,210,196,177,120, 31, 32, 31,241,204,142,229,226,109,155,135, 94,142,175,244, 59, 67,222,188,113,195,100, 10, 19,205,100,227, +196,104,187,145, 36,134, 8, 67,127, 24,134, 94,245, 18,125, 88, 5,121, 70,204, 5, 50,230,149,254,176, 59,204, 79, 44,119, 79, +116,251, 83,115, 75, 79, 46,118,142, 28, 63,241, 98, 84, 80, 98, 76,146,152,102,154, 36,134, 16, 83, 81,141, 93,249, 69,169, 61, +146,110, 2,152, 12, 37,135,168,132, 39,137, 74,118, 78,104, 69,193, 10, 22,136, 24, 76,137, 84,133,200, 3, 96, 0,214,180,155, +107,218,205,173,107,199, 1, 99,153, 61,224,146, 44,220,207,253,254, 35,115,247, 28, 60,242,228,194,210,114,111,240, 15,172,160, +239,122,233,142,117, 99,163,237,102, 43,105,180,209,164, 17,164,138,128, 85,129, 32, 3, 66,128, 69,209, 68,158, 71,160, 43, 41, + 4,244, 2,152, 69,125,209,134,230, 2, 80, 34, 44,142,197, 51, 7, 2,111,216,223,198, 86,165,136,195, 70,162, 72, 36,140, 32, + 16, 34, 26, 59,222,178, 87,159,183,229,229,231,191, 36, 32, 59, 89,238,102,150,251, 95,184,247,225, 3, 71,142,253,125, 43,232, +221,223,123,221, 59,174,127,117,115,108,109,218, 26, 55,182,129, 68,177,105, 50,186, 69,193,158, 8,168, 95,157, 30, 0, 5,134, + 90, 67, 68,139,166,175,112,212,147, 19,206,132, 67,167, 84, 56, 12,163,104, 59, 99,241, 42,204,234, 11, 88, 82, 68, 88,184,214, +210, 8, 0,224,139,205,119, 51, 77,207, 89,159,190,251,250,171, 69,164,159,185,163,243,203,251, 14, 31,251,198, 35,135,159, 51, + 89,242, 52, 10, 42,192,233,241,118,235,117, 87,190,236,221,111,188,113,243,198,205,148,180,109,179,109,109,130, 38,137,103,190, + 68,140,187,250, 1,169,240,165,178,195, 43,252, 9,165,130, 84, 84, 24,197,170,120, 48,105, 1, 93, 55,133,157, 97,167,236,146, + 96, 82, 1, 66, 99,137,192, 39,115,160,107,132,115,173,152, 99,131, 94,233,146,162, 42, 2, 18, 96,124, 0, 64,108, 38,246,220, +141,107,183,173,159,188,225,210,243,123,195,252,224,236,242, 29, 15, 63,126,124, 97,249, 5, 80,144, 0,188,243,134, 87,191,233, +218,107,108,163,157, 36, 77, 74,154,198,166,198, 90,192,208,214, 11,128,193,173, 4, 8,149, 3, 93, 36, 88,126, 60, 14, 7,136, + 80,226, 43, 16, 88,147, 42, 32, 0, 68,161,169,153, 16, 1,145,129, 9, 0, 9,133, 67,140, 50, 66,150,200,171,122, 98, 39, 34, +214,152, 8,131,138,137,100, 22, 14, 64,118,108,181,244,149,166,130,125,161, 40,176,176, 20,161,158, 16, 83,107, 77,139, 46,222, + 98, 47,216, 56, 57,116,126,161,239, 62,117,231,190,149,231, 17,176, 44,168, 78,172,217, 56, 58,177, 17,200,144,177,129,149, 23, +220, 71,132, 75,206,142,106, 69, 58, 64, 0, 5, 4, 80, 68, 3,168,168,162,132,145, 80, 66,136, 85,212, 13, 13,214, 22,196, 43, + 42, 25, 80, 4,144,192,107, 3, 65, 36, 36, 37, 18, 38,131, 68,226,133,153, 16, 69, 85, 80,132,208,136, 10, 81, 8,231,137, 45, +123, 47,109,108,148,141, 77,169,204, 74,193, 15, 75, 0, 23, 12,165, 96, 3, 81, 43,181,246,199, 95,125, 69,230,248,232, 82,239, + 75,247, 30,200,242,252,185,196, 32,178,137,105, 52, 99, 88, 36,132,178,133, 57, 50, 48, 52,112,196,194, 47, 0, 80, 50, 20,104, + 53, 49,164, 18,137, 42,138, 42,160,160, 0, 69, 42,157, 4,238,155, 2, 25, 4,136,237,210, 20,118,112,150, 0,227,184,136,194, +164, 72,136, 62,112, 74, 16,137, 84, 5, 11,103, 38, 85, 69, 18, 49,130,162,202,140,162,196, 38, 24, 17,121, 81, 49,194, 90, 54, +207,162,136, 18, 34, 41, 25, 35,150,217,121,178,134,119,174, 55,219, 95,115, 69,207,201, 93,135,166,247, 63,113,244, 89, 42,136, +136,140,141,190,131, 8, 4, 10, 26,201,156, 24,163, 48,162, 34, 5,122,158, 18, 72,232,102, 38, 21,193,208,212,174,160,132, 40, + 18, 1,108, 84, 13,180, 69, 84, 68, 4,210,216,155,175, 0,160, 97,185,163,144, 35, 48,104,120, 27, 20, 81,144, 12,163, 42,139, + 40,146, 34, 0,138, 80,224,111, 3, 10,170,136, 4, 43, 35, 22, 33, 20, 33, 18, 17, 37, 22, 49, 40,162,106,162,113,161, 81,101, + 70, 66,178, 70, 18, 54,158,217, 89, 49,214,239,221,189,245,154,115, 55,205, 15,229, 43,247, 29,232,246,250,103,182,138, 33, 17, + 26, 1,168, 56,164, 37, 21, 18, 81, 37, 26,142,160, 70,190,103, 48,143, 64, 95, 86, 0, 4,137,230,132, 5,137, 57,174,207, 69, + 79,113,197, 41, 3, 81, 68, 2,210, 64, 52, 6, 82, 16, 85,138,220, 70, 84, 0,163, 42, 64, 33, 75,136,108, 96, 4, 17,164, 48, + 28,161, 40,138,162, 65, 22, 33, 16, 68, 98, 9, 61,241, 65,113,200, 68, 33,101, 35, 36, 18, 97,193,162,139,159, 45,161, 51, 38, + 49, 38,181,254, 7,175,220,221,101,184,243,224,209,163, 51,179,207,160, 32, 12,135,137, 21,116,107, 84, 12,190, 21,110, 14, 73, + 69, 0,131,149, 32,134,211, 27, 74,158,131, 98, 69, 72, 12, 95,170, 29, 47, 16, 86, 24, 4,144, 34,168, 7,130,177, 70,251, 66, + 84, 8, 12, 99, 5, 13, 10, 80, 0, 50, 0, 18, 62, 67, 10,197,105,181, 80,200, 16,143, 75, 16, 0, 66, 6, 34, 17,160,168, 56, + 16, 5, 3, 40, 74,145,186, 38,200,128, 8, 28,101, 8,215,228,200, 72, 36,180,206, 95,119,238,166,254,246, 77,223,120,244,240, +233,150, 60, 11,165,197, 72, 56, 41,130, 0, 5, 20, 9, 84,112, 53, 37, 24, 1, 67, 13, 20, 11,246, 76,145, 1,213,149, 20,119, + 13, 21,103, 87, 11,178,187, 22,148,247,232,135, 90,176,176, 35, 73, 63,184,181, 98,168, 33, 32, 2, 10,104,136,124, 82, 75,109, +180,184, 80,121, 78, 5, 20,190, 27,153,205,138,132, 6, 0, 4, 13, 5,103, 22, 69, 84, 66, 81, 68, 68, 67, 36, 10,106, 40, 21, + 11, 45, 53, 57, 95,187,243,236,249,141,107,239,126,108,250,169,253, 19, 4,165,103,161, 66,113,242, 27,170, 40, 2, 86,233,159, + 2,104,144, 82, 65,163,123, 5, 59,128,178,241, 61,176,131,181,236, 17,208,146,213, 92, 81,201, 74,245, 86,124, 92,173,232,120, + 5,255, 45,132,247,177,193,103, 43, 0, 0, 5, 95, 73, 68, 65, 84, 58, 87,118, 53,143,183,198,221,171, 77, 94,204,228,177,104, +163,192,162,189, 37,244, 1, 68, 30,107,224,220, 83,104, 88, 48,104,201, 36,134, 90,141,116,221, 88,235,186, 93, 91, 95,182, 99, +243,169, 20, 84,209,155,139, 14,127, 8,135,232,213,184,179,165,178, 34,119, 89,203,204,176, 34,121, 7,194, 98,141,113, 27,148, + 85, 35, 74,106,113, 18,107, 28, 11, 84,169, 84,177,172, 58, 30, 32,174,147,171,249,226, 21,101,170,166,178,154,109, 33,172, 38, + 34, 71, 61, 33, 22,135, 81, 64,160, 32, 23,187, 69, 42,224, 41,211, 72,108,187,209,216, 56, 49,114,237,249, 47, 25,105, 54,138, +109, 66,116,177,130, 22, 23,214,177,120,132, 96,136, 71, 90,158,139, 16, 24,204,101, 54, 4,117,242,118,113,128, 8, 68,246, 88, + 45,111, 42,121,197, 34,165,102,235,239,150, 20,108, 85,142, 52,215,242,152,146,168,238,146, 63,172,245,155,127,138,125,197,207, +214,169,250,117,166,104,209,137,163,161, 71,128,202, 83, 98,136, 44,169, 16,169, 53,162, 9,180,224,178,237, 27,142, 46, 13,124, + 93, 65, 21,157, 50,220, 47,198,134, 26, 9, 79,227,107,129, 87, 29, 24,248, 2, 53, 51, 9,183,131, 5, 99, 14, 87, 29,235,194, + 53,115,227,218,139, 82,144,173, 3,107,157, 1, 34, 15, 91, 74, 75, 69,168, 14,247, 8,147,160,117, 86, 99, 21, 2, 11, 47,215, +234,211,225,138,133,121, 98,173, 83, 65, 17, 98, 91, 12,162, 65, 18, 82, 34,177,198,136,106, 42, 70, 19, 85,208,173,147,232, 91, +227,133,130,180, 60,134, 24, 42,141, 20,145, 65,160,166, 5,168,121,156, 74,233, 41,165, 41,149,199,130, 20, 27, 87, 9,103,150, +172,218,181,133,211,111,164,224, 25, 11,139, 6, 58, 61, 23,228,249, 82,241,165, 41, 66, 65, 51, 44,156,182, 10,117, 53, 89,107, +102, 85,183,161,178, 27, 10,107, 73, 10, 34, 16,130, 96, 60,202,135, 69, 13,145, 24,181, 74,169, 90, 21, 69, 67, 26, 20,164,229, + 25,226,101,168,128,210,191, 64,171,158, 8,128, 98, 63, 10,213,161, 36,113,239, 30, 75, 28, 82, 57, 17,148,180,107, 40,119,182, +193, 70, 84,149, 65,188, 4,221, 5, 78,184, 50,112,113, 70, 78, 73, 61, 47, 38, 69,162,174,160,100, 91,171,104,125, 30,101,245, +137, 39, 10,101, 91,197, 42,127,172,175, 5, 69, 84,138, 15, 67, 36, 34,100,208, 8, 89, 82,182,134, 9,125, 97, 65,161,118, 19, + 72,249,241, 80, 21,168, 8,242, 10, 1, 72, 0, 21, 17,172, 25,145,150,109, 29, 69,251, 64,176, 17, 4, 45, 61, 43,108,116, 3, + 75,183,222,226, 1, 42,202, 62,246, 60, 4,198,177, 74,169, 16,145, 64,133,175, 71,100, 56,249,244,151,208, 97,162,178,122, 57, + 57,185, 65,167,234,211,137, 30, 80,133,168, 90, 95, 68, 17,191, 37, 4,111,181,198,184, 72,255, 47, 44, 72, 10, 59, 45, 12, 8, + 42,135,170,116,165, 18,109,188,240, 41,169, 76,190, 8,189, 34,171,206,223, 9, 31,102, 88,125,102, 81, 85, 48, 82, 95, 4,105, + 45,252,168, 76, 46, 74, 47, 43, 93, 12,100,149,118, 86,135,157,162,201, 96, 85, 51, 70, 28, 4,138,223, 90,207, 44,234,246, 84, + 59,121, 12, 73, 98,133, 52, 40, 72,148,185,214,250, 19, 55,243, 85,244,131,250,130, 85,246, 28, 21,161, 7, 42,101,197, 46,150, +208, 78, 16, 21, 81,107,184, 80,169, 83,213,227, 41,186,202, 5,111, 90,106,102,162, 21,159, 58,118, 50, 64,173,123, 71,171,144, + 84,118, 26,212,249,252,213, 97, 67,213,209, 93,181,114, 95,153, 89, 84,126,135, 80,229, 5, 85,250, 84,158,111, 22,248,231, 33, +145,144,144,173,105,113, 32, 28, 70,207, 82,149, 16,195, 99,232, 45,196, 67, 40,155, 30,162,189, 99,108, 8,224, 48, 50,134,154, +114,116,186,112,238,150,132,179, 0,161,138, 44, 80,133,152, 72, 47,175, 34, 78,101, 62, 18, 59,139, 74,149, 5,146,120, 17,240, + 32,246, 96, 20, 5, 62, 89,101,116,186, 90, 85, 90,245,131,105,185, 81,210,226,172,187, 88,247, 42, 44, 40,172, 44, 80,105, 85, +160,222,157, 86,209,216,107,145,160, 56,202, 42, 6,238,106, 57,151,122, 69,177,236, 43,171,124,170, 52,168,202, 71,164,234, 96, +129,147,243, 69,173,242,171,178,201,163,230, 95, 80, 29,159, 38,197, 97, 95,145, 66,175,245,102,150, 42,183, 42,131, 83,108, 82, + 41,251, 24,203, 90, 59, 20, 37,246, 66, 65,194,190, 12,108,229, 46,171,136,223, 85,176,131, 85,203,185,212, 66, 15,212, 18, 60, +174,222, 42,151,240, 74, 71, 92,111, 33,136,179, 42,181,100, 33,174, 88, 18,151,246,147,148, 85, 59,126,171,254, 98,165,184,242, +124,182, 74, 53,133, 88,197,101, 89,171, 68, 84,235,183, 93,219, 44,174,218,172,134,126,141,226, 88,147,226,236, 58, 41,147,195, +114, 69, 47, 50, 20,145, 34,105, 22, 44, 26,107,226, 52,151,139,151,114,140, 68, 82,116,117, 20,170, 41, 64,163, 50,196,196,124, + 89,194,233,224,181,213,170,232,111, 4, 41,144,166,242,182, 99,143, 26,172,234, 10,171, 29, 16, 88,154, 46, 84,111,137,232,170, +119, 65, 86,157,127,182, 42, 0, 67,177, 81,143,203,188,136, 15,120, 14,212,218,203, 86,175,143,213,188,214, 28, 42,162,129,241, +102,235,141,154,162, 80, 54,188, 84, 39, 28,174,218, 24,172, 14,180,245, 38, 74,144, 58,126, 82, 5,148,184,219, 91,237,128,177, + 19,171,122, 75, 66, 67, 85,169,187,208,174, 82, 52, 25, 61,101, 5,148, 58,242, 80,182,149, 22,219,188,224, 98, 44,222,157,188, +186,195,170,148,190, 90,203,164,238, 89, 28,227, 1,148, 73, 80, 21, 98,138, 99,236,138,133, 35, 30,116, 87, 0, 31,171, 85,115, +178, 6, 33,224, 22,162, 39,171,163,102, 62,171, 66,204, 42,115,168,159,136, 87,244, 6,201,170, 86, 68,168, 59,102, 61, 98,215, + 79,206,212,202,197, 64,124, 45, 86,149, 41, 23,212,118, 24,229,255,135, 82,198, 23, 89,213,162, 20,219, 41, 57,230,185, 0, 90, + 79,106,180,200, 38,139,151,226, 90, 43,161,114, 32, 69,203,235, 73, 43,125,245,149, 82, 35, 90, 11,183,181,251,132,170, 33, 78, + 98, 32,174,204,164,182,210,151,189,115,197,149,106,151, 3,168,183, 85,197,117,127,239,222,189, 79,169, 27,156, 89, 95,212,139, +160,123, 10, 95,216, 47, 61,229, 29, 84,253,255,247,125,202,160,216,217,116,216, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/startup.blend.c b/source/blender/editors/datafiles/startup.blend.c index dffb20062ae..6685e279549 100644 --- a/source/blender/editors/datafiles/startup.blend.c +++ b/source/blender/editors/datafiles/startup.blend.c @@ -1,102 +1,483 @@ /* DataToC output of file <startup_blend> */ -int datatoc_startup_blend_size= 308000; +int datatoc_startup_blend_size= 308360; char datatoc_startup_blend[]= { - - 66, 76, 69, 78, 68, 69, 82, 95,118, 50, 53, 50, 82, 69, 78, 68, 32, 0, 0, 0, 4,244, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71, 76, 79, 66, 16, 1, 0, 0, 4,243, 18, 0,201, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 53, 5, 0, 0, 0,250, 0, 0, 0, - 1, 0, 0, 1,176, 70,255, 2, 88, 79,194, 8, 0, 16, 0, 0,128, 32, 4, 0, 60,109,101,109,111,114,121, 50, 62, 0,145,124, -255,255,255,255,219, 1,145,124, 89,128, 64, 0, 0, 0,198, 2, 8, 0, 0, 0,178,128, 64, 0,168,192,143, 94,196,253, 18, 0, -144, 98,186, 8, 0,224,253,127, 0, 0, 0, 0, 72,243, 18, 0, 56,215,189, 8,176,255, 18, 0,218, 48, 0, 0, 92,108,170, 95, - 24, 34,188, 8,140,243, 18, 0, 88, 67,209, 0,216,175,133, 1, 24, 34,188, 8, 48,215,189, 8,148, 40,188, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 48,215,189, 8,208,134, 1, 0,144, 98,186, 8,196,253, 18, 0,192,243, 18, 0,220, 97,147, 0,120,215,189, 8, - 4,244, 18, 0, 32, 0, 0, 0, 88, 67,209, 0,176,255, 18, 0,232,243, 18, 0,160, 96,147, 0,112,197,255, 2, 4,244, 18, 0, - 32, 0, 0, 0, 82, 69, 78, 68, 32, 0, 0, 0, 4,244, 18, 0, 0, 0, 0, 0, 1, 0, 0, 0, 40,244, 18, 0,245,108,147, 0, -112,197,255, 2, 82, 69, 78, 68, 32, 0, 0, 0, 4,244, 18, 0,176, 70,255, 2, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110, -101, 0, 0, 0, 87, 77, 0, 0,168, 0, 0, 0, 24,153,192, 8,111, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 87,105,110, 77, 97,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,104,175, 8,128,104,175, 8,128,104,175, 8,128,104,175, 8, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,152,244, 2,144,152,244, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 72,167,226, 2, 72,167,226, 2, 72,167,226, 2,168, 71,245, 2,168, 71,245, 2,168, 71,245, 2, - 68, 65, 84, 65,148, 0, 0, 0,128,104,175, 8,112, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 72,240, 2, - 1, 0, 0, 0, 0, 0, 0, 0,176, 70,255, 2, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,136, 6,202, 3, 0, 0, 0, 0, 1, 0,238, 3, - 0, 0, 1, 0, 0, 0, 0, 0, 24, 67,240, 2,168,149,246, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,192,240,187, 8, - 72,210,189, 8,176, 51,175, 8,184, 18,251, 2,112, 76,174, 8,192,120,169, 8,192,120,169, 8,168,149,246, 2,232,133,239, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,200,114,255, 2,195, 0, 0, 0, 1, 0, 0, 0,112, 31,255, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,177,226, 2,120,182,226, 2,144,188,226, 2,200,154,192, 8, - 64, 97,169, 8,224,165,169, 8, 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 76, 69, 78, 68, 69, 82, 95, +118, 50, 53, 50, 82, 69, 78, 68, 32, 0, 0, 0,156,231,146, 2, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, + 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 76, 79, 66, 16, 1, 0, 0, +188,230,146, 2,201, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 53, 5, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1,216, 91, 9, 3, + 48, 0, 11, 3, 0, 16, 0, 0,128, 32, 4, 0, 67, 58, 92, 68,111, 99,117,109,101,110,116,115, 32, 97,110,100, 32, 83,101,116, +116,105,110,103,115, 92, 80,104,111,101,110,105,120, 92, 65,112,112,108,105, 99, 97,116,105,111,110, 32, 68, 97,116, 97, 92, 66, +108,101,110,100,101,114, 32, 70,111,117,110,100, 97,116,105,111,110, 92, 66,108,101,110,100,101,114, 92, 50, 46, 53, 50, 92, 99, +111,110,102,105,103, 92,115,116, 97,114,116,117,112, 46, 98,108,101,110,100, 0,204,204,204,204,204,204,204,204,204,204,204,204, +204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, +204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, +204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, +204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, 87, 77, 0, 0, +168, 0, 0, 0,120,178, 8, 3,111, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 87, 77, 87,105,110, 77, 97,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,136,179, 8, 3,136,179, 8, 3,136,179, 8, 3,136,179, 8, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,178, 88, 3,176,178, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 24, 71, 3, 8, 24, 71, 3, 8, 24, 71, 3, 8, 25, 71, 3, 8, 25, 71, 3, 8, 25, 71, 3, 68, 65, 84, 65,148, 0, 0, 0, +136,179, 8, 3,112, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 25, 71, 3, 1, 0, 0, 0, 0, 0, 0, 0, +216, 91, 9, 3, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,136, 6,202, 3, 0, 0, 0, 0, 1, 0,238, 3, 0, 0, 1, 0, 0, 0, 0, 0, + 8, 28, 71, 3,232,131, 7, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,248,253, 88, 3, 8,193, 89, 3, 8,193, 89, 3, + 72,128, 7, 3,192,129, 7, 3, 56,131, 7, 3, 56,131, 7, 3,232,131, 7, 3, 64, 72, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 78, 0, 0,140, 0, 0, 0,128,180, 8, 3,195, 0, 0, 0, 1, 0, 0, 0,192, 3, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112,181, 8, 3,104,189, 8, 3,224,189, 8, 3,224,203, 8, 3, 96,204, 8, 3,144,250, 8, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200,177,226, 2,196, 0, 0, 0, 1, 0, 0, 0,216,189,226, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216,189,226, 2,196, 0, 0, 0, - 1, 0, 0, 0,176,172,226, 2,200,177,226, 2, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -176,172,226, 2,196, 0, 0, 0, 1, 0, 0, 0,128,176,226, 2,216,189,226, 2, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,128,176,226, 2,196, 0, 0, 0, 1, 0, 0, 0,120,194,226, 2,176,172,226, 2, 0, 0, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120,194,226, 2,196, 0, 0, 0, 1, 0, 0, 0, 56,165,226, 2, -128,176,226, 2, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 56,165,226, 2,196, 0, 0, 0, - 1, 0, 0, 0,128,166,226, 2,120,194,226, 2, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -128,166,226, 2,196, 0, 0, 0, 1, 0, 0, 0,144,168,226, 2, 56,165,226, 2, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,144,168,226, 2,196, 0, 0, 0, 1, 0, 0, 0,216,169,226, 2,128,166,226, 2, 0, 0, 0, 0, - 32, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216,169,226, 2,196, 0, 0, 0, 1, 0, 0, 0,160,170,226, 2, -144,168,226, 2, 0, 0, 0, 0, 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,170,226, 2,196, 0, 0, 0, - 1, 0, 0, 0,232,171,226, 2,216,169,226, 2, 0, 0, 0, 0,254, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -232,171,226, 2,196, 0, 0, 0, 1, 0, 0, 0,176,181,226, 2,160,170,226, 2, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,176,181,226, 2,196, 0, 0, 0, 1, 0, 0, 0,112,133,174, 8,232,171,226, 2, 0, 0, 0, 0, - 32, 4, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,112,133,174, 8,196, 0, 0, 0, 1, 0, 0, 0, 40,133,174, 8, -176,181,226, 2, 0, 0, 0, 0,192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,133,174, 8,196, 0, 0, 0, - 1, 0, 0, 0,176,193,226, 2,112,133,174, 8, 0, 0, 0, 0,192, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -176,193,226, 2,196, 0, 0, 0, 1, 0, 0, 0, 88,120,174, 8, 40,133,174, 8, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 88,120,174, 8,196, 0, 0, 0, 1, 0, 0, 0,152,199,226, 2,176,193,226, 2, 0, 0, 0, 0, -192, 1, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152,199,226, 2,196, 0, 0, 0, 1, 0, 0, 0,120,182,226, 2, - 88,120,174, 8, 0, 0, 0, 0, 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120,182,226, 2,196, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,152,199,226, 2, 0, 0, 0, 0,254, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -144,188,226, 2,197, 0, 0, 0, 1, 0, 0, 0,248,140,174, 8, 0, 0, 0, 0,176,172,226, 2,216,189,226, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,140,174, 8,197, 0, 0, 0, 1, 0, 0, 0, 32,191,226, 2,144,188,226, 2, -216,189,226, 2,120,194,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 32,191,226, 2,197, 0, 0, 0, - 1, 0, 0, 0,104,192,226, 2,248,140,174, 8, 56,165,226, 2,176,172,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,104,192,226, 2,197, 0, 0, 0, 1, 0, 0, 0,192,195,226, 2, 32,191,226, 2, 56,165,226, 2,120,194,226, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192,195,226, 2,197, 0, 0, 0, 1, 0, 0, 0, 8,197,226, 2, -104,192,226, 2,128,166,226, 2,200,177,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,197,226, 2, -197, 0, 0, 0, 1, 0, 0, 0,240,163,226, 2,192,195,226, 2,128,166,226, 2,128,176,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,240,163,226, 2,197, 0, 0, 0, 1, 0, 0, 0, 24,161,226, 2, 8,197,226, 2, 56,165,226, 2, -144,168,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,161,226, 2,197, 0, 0, 0, 1, 0, 0, 0, - 40,162,226, 2,240,163,226, 2,128,166,226, 2,216,169,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 40,162,226, 2,197, 0, 0, 0, 1, 0, 0, 0, 96,161,226, 2, 24,161,226, 2,160,170,226, 2,128,176,226, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,161,226, 2,197, 0, 0, 0, 1, 0, 0, 0,104, 90,174, 8, 40,162,226, 2, -216,169,226, 2,160,170,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104, 90,174, 8,197, 0, 0, 0, - 1, 0, 0, 0, 24, 94,174, 8, 96,161,226, 2,232,171,226, 2,200,177,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 24, 94,174, 8,197, 0, 0, 0, 1, 0, 0, 0,200, 97,174, 8,104, 90,174, 8,144,168,226, 2,176,181,226, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 97,174, 8,197, 0, 0, 0, 1, 0, 0, 0,232,101,174, 8, - 24, 94,174, 8,128,166,226, 2,176,181,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232,101,174, 8, -197, 0, 0, 0, 1, 0, 0, 0,152,105,174, 8,200, 97,174, 8,232,171,226, 2,176,181,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,152,105,174, 8,197, 0, 0, 0, 1, 0, 0, 0, 72,109,174, 8,232,101,174, 8,232,171,226, 2, -112,133,174, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72,109,174, 8,197, 0, 0, 0, 1, 0, 0, 0, -248,112,174, 8,152,105,174, 8,176,181,226, 2,112,133,174, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -248,112,174, 8,197, 0, 0, 0, 1, 0, 0, 0,168,116,174, 8, 72,109,174, 8,120,194,226, 2, 40,133,174, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,116,174, 8,197, 0, 0, 0, 1, 0, 0, 0,232,124,174, 8,248,112,174, 8, -144,168,226, 2, 40,133,174, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232,124,174, 8,197, 0, 0, 0, - 1, 0, 0, 0, 48,125,174, 8,168,116,174, 8, 40,133,174, 8,112,133,174, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 48,125,174, 8,197, 0, 0, 0, 1, 0, 0, 0, 64,142,174, 8,232,124,174, 8,232,171,226, 2,176,193,226, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64,142,174, 8,197, 0, 0, 0, 1, 0, 0, 0, 32, 49,173, 8, - 48,125,174, 8, 88,120,174, 8,112,133,174, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 32, 49,173, 8, -197, 0, 0, 0, 1, 0, 0, 0, 56, 52,175, 8, 64,142,174, 8,176,193,226, 2, 88,120,174, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 56, 52,175, 8,197, 0, 0, 0, 1, 0, 0, 0,104,106,173, 8, 32, 49,173, 8,216,169,226, 2, -152,199,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,106,173, 8,197, 0, 0, 0, 1, 0, 0, 0, - 80,119,173, 8, 56, 52,175, 8,144,168,226, 2,152,199,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 80,119,173, 8,197, 0, 0, 0, 1, 0, 0, 0,240,153,192, 8,104,106,173, 8, 56,165,226, 2,120,182,226, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,240,153,192, 8,197, 0, 0, 0, 1, 0, 0, 0, 56,154,192, 8, 80,119,173, 8, -160,170,226, 2,120,182,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,154,192, 8,197, 0, 0, 0, - 1, 0, 0, 0,128,154,192, 8,240,153,192, 8,120,182,226, 2,152,199,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,128,154,192, 8,197, 0, 0, 0, 1, 0, 0, 0,200,154,192, 8, 56,154,192, 8,176,193,226, 2,120,194,226, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,154,192, 8,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -128,154,192, 8, 88,120,174, 8, 40,133,174, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 64, 97,169, 8, -199, 0, 0, 0, 1, 0, 0, 0, 64, 88,169, 8, 0, 0, 0, 0,120,194,226, 2,216,189,226, 2,176,172,226, 2, 56,165,226, 2, + 68, 65, 84, 65, 20, 0, 0, 0,112,181, 8, 3,196, 0, 0, 0, 1, 0, 0, 0,232,181, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232,181, 8, 3,196, 0, 0, 0, 1, 0, 0, 0, 96,182, 8, 3, +112,181, 8, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96,182, 8, 3,196, 0, 0, 0, + 1, 0, 0, 0,216,182, 8, 3,232,181, 8, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +216,182, 8, 3,196, 0, 0, 0, 1, 0, 0, 0, 80,183, 8, 3, 96,182, 8, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 80,183, 8, 3,196, 0, 0, 0, 1, 0, 0, 0,200,183, 8, 3,216,182, 8, 3, 0, 0, 0, 0, + 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200,183, 8, 3,196, 0, 0, 0, 1, 0, 0, 0, 64,184, 8, 3, + 80,183, 8, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64,184, 8, 3,196, 0, 0, 0, + 1, 0, 0, 0,184,184, 8, 3,200,183, 8, 3, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +184,184, 8, 3,196, 0, 0, 0, 1, 0, 0, 0, 48,185, 8, 3, 64,184, 8, 3, 0, 0, 0, 0, 32, 4,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 48,185, 8, 3,196, 0, 0, 0, 1, 0, 0, 0,168,185, 8, 3,184,184, 8, 3, 0, 0, 0, 0, + 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,185, 8, 3,196, 0, 0, 0, 1, 0, 0, 0, 32,186, 8, 3, + 48,185, 8, 3, 0, 0, 0, 0,254, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32,186, 8, 3,196, 0, 0, 0, + 1, 0, 0, 0,152,186, 8, 3,168,185, 8, 3, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +152,186, 8, 3,196, 0, 0, 0, 1, 0, 0, 0, 16,187, 8, 3, 32,186, 8, 3, 0, 0, 0, 0, 32, 4, 84, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 16,187, 8, 3,196, 0, 0, 0, 1, 0, 0, 0,136,187, 8, 3,152,186, 8, 3, 0, 0, 0, 0, +192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,187, 8, 3,196, 0, 0, 0, 1, 0, 0, 0, 0,188, 8, 3, + 16,187, 8, 3, 0, 0, 0, 0,192, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0,188, 8, 3,196, 0, 0, 0, + 1, 0, 0, 0,120,188, 8, 3,136,187, 8, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +120,188, 8, 3,196, 0, 0, 0, 1, 0, 0, 0,240,188, 8, 3, 0,188, 8, 3, 0, 0, 0, 0,192, 1, 0, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,240,188, 8, 3,196, 0, 0, 0, 1, 0, 0, 0,104,189, 8, 3,120,188, 8, 3, 0, 0, 0, 0, + 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,189, 8, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +240,188, 8, 3, 0, 0, 0, 0,254, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,189, 8, 3,197, 0, 0, 0, + 1, 0, 0, 0, 96,190, 8, 3, 0, 0, 0, 0,232,181, 8, 3, 96,182, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 96,190, 8, 3,197, 0, 0, 0, 1, 0, 0, 0,224,190, 8, 3,224,189, 8, 3,232,181, 8, 3, 80,183, 8, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,190, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,191, 8, 3, + 96,190, 8, 3, 96,182, 8, 3,200,183, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,191, 8, 3, +197, 0, 0, 0, 1, 0, 0, 0,224,191, 8, 3,224,190, 8, 3, 80,183, 8, 3,200,183, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,224,191, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,192, 8, 3, 96,191, 8, 3,112,181, 8, 3, + 64,184, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,192, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, +224,192, 8, 3,224,191, 8, 3,216,182, 8, 3, 64,184, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +224,192, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,193, 8, 3, 96,192, 8, 3,200,183, 8, 3,184,184, 8, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,193, 8, 3,197, 0, 0, 0, 1, 0, 0, 0,224,193, 8, 3,224,192, 8, 3, + 64,184, 8, 3, 48,185, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,193, 8, 3,197, 0, 0, 0, + 1, 0, 0, 0, 96,194, 8, 3, 96,193, 8, 3,216,182, 8, 3,168,185, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 96,194, 8, 3,197, 0, 0, 0, 1, 0, 0, 0,224,194, 8, 3,224,193, 8, 3, 48,185, 8, 3,168,185, 8, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,194, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,195, 8, 3, + 96,194, 8, 3,112,181, 8, 3, 32,186, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,195, 8, 3, +197, 0, 0, 0, 1, 0, 0, 0,224,195, 8, 3,224,194, 8, 3,184,184, 8, 3,152,186, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,224,195, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,196, 8, 3, 96,195, 8, 3, 64,184, 8, 3, +152,186, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,196, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, +224,196, 8, 3,224,195, 8, 3, 32,186, 8, 3,152,186, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +224,196, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,197, 8, 3, 96,196, 8, 3, 32,186, 8, 3, 16,187, 8, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,197, 8, 3,197, 0, 0, 0, 1, 0, 0, 0,224,197, 8, 3,224,196, 8, 3, +152,186, 8, 3, 16,187, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,197, 8, 3,197, 0, 0, 0, + 1, 0, 0, 0, 96,198, 8, 3, 96,197, 8, 3, 80,183, 8, 3,136,187, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 96,198, 8, 3,197, 0, 0, 0, 1, 0, 0, 0,224,198, 8, 3,224,197, 8, 3,184,184, 8, 3,136,187, 8, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,198, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,199, 8, 3, + 96,198, 8, 3, 16,187, 8, 3,136,187, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,199, 8, 3, +197, 0, 0, 0, 1, 0, 0, 0,224,199, 8, 3,224,198, 8, 3, 32,186, 8, 3, 0,188, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,224,199, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,200, 8, 3, 96,199, 8, 3, 16,187, 8, 3, +120,188, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,200, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, +224,200, 8, 3,224,199, 8, 3, 0,188, 8, 3,120,188, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +224,200, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,201, 8, 3, 96,200, 8, 3, 48,185, 8, 3,240,188, 8, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,201, 8, 3,197, 0, 0, 0, 1, 0, 0, 0,224,201, 8, 3,224,200, 8, 3, +184,184, 8, 3,240,188, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,201, 8, 3,197, 0, 0, 0, + 1, 0, 0, 0, 96,202, 8, 3, 96,201, 8, 3,200,183, 8, 3,104,189, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 96,202, 8, 3,197, 0, 0, 0, 1, 0, 0, 0,224,202, 8, 3,224,201, 8, 3,168,185, 8, 3,104,189, 8, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,202, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,203, 8, 3, + 96,202, 8, 3,240,188, 8, 3,104,189, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,203, 8, 3, +197, 0, 0, 0, 1, 0, 0, 0,224,203, 8, 3,224,202, 8, 3, 80,183, 8, 3, 0,188, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,224,203, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,203, 8, 3,136,187, 8, 3, +120,188, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 96,204, 8, 3,199, 0, 0, 0, 1, 0, 0, 0, +232,207, 8, 3, 0, 0, 0, 0, 80,183, 8, 3,232,181, 8, 3, 96,182, 8, 3,200,183, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, + 40, 3, 9, 3, 40, 3, 9, 3, 40,205, 8, 3,136,206, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 40,205, 8, 3,200, 0, 0, 0, 1, 0, 0, 0,136,206, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136,206, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 40,205, 8, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, + 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, + 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, +214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, +232,207, 8, 3,199, 0, 0, 0, 1, 0, 0, 0,176,212, 8, 3, 96,204, 8, 3, 64,184, 8, 3, 48,185, 8, 3,168,185, 8, 3, +216,182, 8, 3, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 51, 1, 0, 0, 4, 4,222, 0, 52, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,211, 8, 3,112,211, 8, 3,176,208, 8, 3, 16,210, 8, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,208, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, + 16,210, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 94, 67, + 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, + 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, + 31, 0,222, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, + 51, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 16,210, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,208, 8, 3, 0, 0, 0, 0, 0, 0, 94, 67, 0, 64, 80,196, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 77, 67, 1,128,138,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0, + 20, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, + 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,222, 0, 21, 1,205, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +222, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,112,211, 8, 3,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,176,212, 8, 3,199, 0, 0, 0, + 1, 0, 0, 0, 88,217, 8, 3,232,207, 8, 3,112,181, 8, 3, 32,186, 8, 3,152,186, 8, 3, 64,184, 8, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 15, 15, 32, 4, 84, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 56,216, 8, 3, 56,216, 8, 3,120,213, 8, 3,216,214, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,213, 8, 3,200, 0, 0, 0, 1, 0, 0, 0,216,214, 8, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,132, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 32, 4, 26, 0, 32, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,214, 8, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,120,213, 8, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192, +246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 18, 0, 0, 0, 57, 0, 0, 0, 0, 0,128, 63, + 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, + 8, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, + 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 58, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +188, 0, 0, 0, 56,216, 8, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 88,217, 8, 3,199, 0, 0, 0, 1, 0, 0, 0, +176,223, 8, 3,176,212, 8, 3, 48,185, 8, 3,240,188, 8, 3,104,189, 8, 3,168,185, 8, 3, 0, 0, 0, 0, 33, 4, 0, 0, +254, 4, 0, 0, 53, 1, 0, 0, 47, 2, 0, 0, 3, 3,222, 0,251, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +224,220, 8, 3,224,220, 8, 3, 32,218, 8, 3,128,219, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 32,218, 8, 3,200, 0, 0, 0, 1, 0, 0, 0,128,219, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +221, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, 26, 0,222, 0, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 22, 2, 0, 0, 47, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,219, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 32,218, 8, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0,100, 66, 0, 0,131, 67, + 0, 0, 79,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,222, 0, +225, 0,205, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, + 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,225, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0, +224,220, 8, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64,222, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 64,222, 8, 3,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, + 13, 0, 0, 0,176,222, 8, 3, 68, 65, 84, 65,156, 0, 0, 0,176,222, 8, 3,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 48, 0, 11, 3, 19, 0, 0, 0, 1, 0, 1, 0, 48, 0, 11, 3, 20, 0, 0, 0, 1, 0, 1, 0, 48, 0, 11, 3, + 21, 0, 1, 0, 1, 0, 1, 0, 48, 0, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,240, 22, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0, +152, 29, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,160,112, 12, 3, 0, 0, 0, 0, 1, 0, 1, 0,224, 39, 11, 3, 0, 0, 0, 0, + 1, 0, 1, 0,176,205, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,160, 35, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,160, 18, 11, 3, + 0, 0, 0, 0, 1, 0, 1, 0, 88, 25, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,208, 17, 11, 3, 68, 65, 84, 65, 96, 0, 0, 0, +176,223, 8, 3,199, 0, 0, 0, 1, 0, 0, 0,104,236, 8, 3, 88,217, 8, 3, 16,187, 8, 3,136,187, 8, 3,184,184, 8, 3, +152,186, 8, 3, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,186, 2, 0, 0, 1, 1, 95, 2,102, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,235, 8, 3, 8,235, 8, 3,120,224, 8, 3,248,229, 8, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,224, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, +216,225, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 23, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 95, 2, + 26, 0, 95, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0, +110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +216,225, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, 56,227, 8, 3,120,224, 8, 3, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, + 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, + 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +193, 1, 0, 0,193, 1, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 76, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,227, 8, 3,200, 0, 0, 0, 1, 0, 0, 0,152,228, 8, 3,216,225, 8, 3, + 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,228, 8, 3,200, 0, 0, 0, + 1, 0, 0, 0,248,229, 8, 3, 56,227, 8, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0, +162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, + 6, 0,180, 0,148, 3,163, 0,130, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 31, 4, 0, 0, +111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,248,229, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152,228, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 95, 2, 76, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 88,231, 8, 3, 68, 65, 84, 65, 72, 3, 0, 0, 88,231, 8, 3,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,134,144, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, + 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188, +166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, + 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, + 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62, +215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62,145,180,109,188, +243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, 99,240,191, 62, +110,116, 85, 63, 80,185, 70,188, 0, 0, 82,180,206, 44,182,190,198,158, 47, 62, 36,239, 74, 63, 0, 0, 8,179, 67,108,117,194, +183,204,216, 65,104,156, 5,194,212,247,159,192,235, 62,114, 66, 59,254,213,193,157,225, 3, 66, 55, 8,160, 64, 68,239,209, 62, + 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188, +166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62, +215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62,145,180,109,188, +243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65,255,189, 88, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, + 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,234,108, 69, 59, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 32, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,235, 8, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, + 88, 25, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,104,236, 8, 3,199, 0, 0, 0, + 1, 0, 0, 0,104,244, 8, 3,176,223, 8, 3, 32,186, 8, 3, 0,188, 8, 3,120,188, 8, 3, 16,187, 8, 3, 0, 0, 0, 0, + 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,255, 0, 0, 0, 2, 2,192, 1,171, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,176,242, 8, 3,176,242, 8, 3, 48,237, 8, 3, 80,241, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,237, 8, 3,200, 0, 0, 0, 1, 0, 0, 0,144,238, 8, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144,238, 8, 3,200, 0, 0, 0, + 1, 0, 0, 0,240,239, 8, 3, 48,237, 8, 3, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 72, 67, 0, 0,254,194, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, +199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, + 6, 0,217, 0,145, 0,200, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, +111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0,145, 0, 0, 0, 2, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,240,239, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, 80,241, 8, 3,144,238, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,191, 1, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,241, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +240,239, 8, 3, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, + 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, + 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,231, 0,145, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,176,242, 8, 3, +164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,243, 8, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +232,243, 8, 3, 24, 1, 0, 0, 1, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,104,244, 8, 3,199, 0, 0, 0, 1, 0, 0, 0,144,250, 8, 3,104,236, 8, 3, + 0,188, 8, 3, 80,183, 8, 3,136,187, 8, 3,120,188, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0, +186, 2, 0, 0, 12, 12,192, 1,186, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,249, 8, 3, 80,249, 8, 3, + 48,245, 8, 3,240,247, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 48,245, 8, 3,200, 0, 0, 0, 1, 0, 0, 0,144,246, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 98, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144,246, 8, 3,200, 0, 0, 0, 1, 0, 0, 0,240,247, 8, 3, 48,245, 8, 3, + 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,199,195, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,200, 0,160, 1,200, 0,142, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,160, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,247, 8, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,144,246, 8, 3, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 32,193, + 0, 0,104, 68, 0, 0,199,195, 0, 0, 0, 0,231, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, +230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 4, + 4, 0,248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0, 0, 0,191, 1, 0, 0, + 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 0,160, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +216, 0, 0, 0, 80,249, 8, 3, 25, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 2, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,144,250, 8, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +104,244, 8, 3,240,188, 8, 3,184,184, 8, 3,200,183, 8, 3,104,189, 8, 3, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, + 49, 2, 0, 0,186, 2, 0, 0, 1, 1,222, 0,138, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 1, 9, 3, +200, 1, 9, 3, 88,251, 8, 3,184,252, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 88,251, 8, 3,200, 0, 0, 0, 1, 0, 0, 0,184,252, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 64, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, + 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,132, 1, 24, 0,132, 1, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0, 49, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,252, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 88,251, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,254, 8, 3, 68, 65, 84, 65, 72, 3, 0, 0, 24,254, 8, 3, +159, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,109,100, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, +149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, +152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, + 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, + 77,255,170, 64, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191,142,164,206, 63,250,192,142, 63, +180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, 81, 21, 64,191,119, 24,172,191, +216, 49, 49, 65,152, 9, 52, 65,231, 70,158, 62, 24,234,167, 62,160,206,159,187, 0, 0,170,180,243, 26,182,189,252, 74,179, 61, +195,111,128, 62, 0, 0,124, 51,211,120, 21,194,144, 5, 2, 66, 10,136,213,193,193,214,159,192,219, 38, 19, 66,196,173,255,193, +158,101,210, 65,173, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, +149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, +152, 9, 52,193, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191,142,164,206, 63,250,192,142, 63, +180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, 81, 21, 64,191,119, 24,172,191, +216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190, 0, 0, 32, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 13,133, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 1, 9, 3,160, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 88, 25, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0, +140, 0, 0, 0,192, 3, 9, 3,195, 0, 0, 0, 1, 0, 0, 0,216, 91, 9, 3,128,180, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,176, 4, 9, 3,200, 10, 9, 3, 64, 11, 9, 3,200, 21, 9, 3, 72, 22, 9, 3,216, 52, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,176, 4, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, 40, 5, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40, 5, 9, 3,196, 0, 0, 0, 1, 0, 0, 0,160, 5, 9, 3,176, 4, 9, 3, + 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160, 5, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, + 24, 6, 9, 3, 40, 5, 9, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24, 6, 9, 3, +196, 0, 0, 0, 1, 0, 0, 0,144, 6, 9, 3,160, 5, 9, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,144, 6, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, 8, 7, 9, 3, 24, 6, 9, 3, 0, 0, 0, 0, 0, 0,187, 2, + 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8, 7, 9, 3,196, 0, 0, 0, 1, 0, 0, 0,128, 7, 9, 3,144, 6, 9, 3, + 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128, 7, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, +248, 7, 9, 3, 8, 7, 9, 3, 0, 0, 0, 0, 20, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248, 7, 9, 3, +196, 0, 0, 0, 1, 0, 0, 0,112, 8, 9, 3,128, 7, 9, 3, 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,112, 8, 9, 3,196, 0, 0, 0, 1, 0, 0, 0,232, 8, 9, 3,248, 7, 9, 3, 0, 0, 0, 0, 20, 4,187, 2, + 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232, 8, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, 96, 9, 9, 3,112, 8, 9, 3, + 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96, 9, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, +216, 9, 9, 3,232, 8, 9, 3, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216, 9, 9, 3, +196, 0, 0, 0, 1, 0, 0, 0, 80, 10, 9, 3, 96, 9, 9, 3, 0, 0, 0, 0, 0, 2, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 80, 10, 9, 3,196, 0, 0, 0, 1, 0, 0, 0,200, 10, 9, 3,216, 9, 9, 3, 0, 0, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200, 10, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80, 10, 9, 3, + 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 11, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, +192, 11, 9, 3, 0, 0, 0, 0, 40, 5, 9, 3,160, 5, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +192, 11, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 12, 9, 3, 64, 11, 9, 3, 40, 5, 9, 3,144, 6, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 12, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 12, 9, 3,192, 11, 9, 3, +160, 5, 9, 3, 8, 7, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 12, 9, 3,197, 0, 0, 0, + 1, 0, 0, 0, 64, 13, 9, 3, 64, 12, 9, 3,144, 6, 9, 3, 8, 7, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 64, 13, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 13, 9, 3,192, 12, 9, 3, 24, 6, 9, 3,248, 7, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 13, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 14, 9, 3, + 64, 13, 9, 3,128, 7, 9, 3,248, 7, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 14, 9, 3, +197, 0, 0, 0, 1, 0, 0, 0,192, 14, 9, 3,192, 13, 9, 3, 8, 7, 9, 3,112, 8, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,192, 14, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 15, 9, 3, 64, 14, 9, 3,144, 6, 9, 3, +112, 8, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 15, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, +192, 15, 9, 3,192, 14, 9, 3,128, 7, 9, 3,112, 8, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +192, 15, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, 72, 16, 9, 3, 64, 15, 9, 3, 8, 7, 9, 3,248, 7, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 16, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,200, 16, 9, 3,192, 15, 9, 3, +144, 6, 9, 3,232, 8, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 16, 9, 3,197, 0, 0, 0, + 1, 0, 0, 0, 72, 17, 9, 3, 72, 16, 9, 3,112, 8, 9, 3, 96, 9, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 72, 17, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,200, 17, 9, 3,200, 16, 9, 3,232, 8, 9, 3, 96, 9, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 17, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, 72, 18, 9, 3, + 72, 17, 9, 3,232, 8, 9, 3,216, 9, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 18, 9, 3, +197, 0, 0, 0, 1, 0, 0, 0,200, 18, 9, 3,200, 17, 9, 3, 96, 9, 9, 3,216, 9, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,200, 18, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, 72, 19, 9, 3, 72, 18, 9, 3,176, 4, 9, 3, + 80, 10, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 19, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, +200, 19, 9, 3,200, 18, 9, 3, 80, 10, 9, 3,200, 10, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +200, 19, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, 72, 20, 9, 3, 72, 19, 9, 3, 24, 6, 9, 3,200, 10, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 20, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,200, 20, 9, 3,200, 19, 9, 3, +128, 7, 9, 3,200, 10, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 20, 9, 3,197, 0, 0, 0, + 1, 0, 0, 0, 72, 21, 9, 3, 72, 20, 9, 3,216, 9, 9, 3, 80, 10, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 72, 21, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,200, 21, 9, 3,200, 20, 9, 3, 96, 9, 9, 3,200, 10, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 21, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 72, 21, 9, 3,176, 4, 9, 3,232, 8, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 72, 22, 9, 3, +199, 0, 0, 0, 1, 0, 0, 0,208, 25, 9, 3, 0, 0, 0, 0,144, 6, 9, 3, 40, 5, 9, 3,160, 5, 9, 3, 8, 7, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 0, 0, 24,192,192, 8, 24,192,192, 8, 16,155,192, 8, 56,156,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,155,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 56,156,192, 8, + 7, 0, 0, 0, 0, 0, 0, 0, 64, 91, 9, 3, 64, 91, 9, 3, 16, 23, 9, 3,112, 24, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16, 23, 9, 3,200, 0, 0, 0, 1, 0, 0, 0,112, 24, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, @@ -104,8 +485,8 @@ char datatoc_startup_blend[]= { 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,156,192, 8, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16,155,192, 8, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112, 24, 9, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 23, 9, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, @@ -113,27 +494,2006 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0, 64, 88,169, 8,199, 0, 0, 0, 1, 0, 0, 0,208, 88,169, 8, 64, 97,169, 8,128,166,226, 2, -216,169,226, 2,160,170,226, 2,128,176,226, 2, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 51, 1, 0, 0, - 4, 4,222, 0, 52, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,159,192, 8,176,159,192, 8, 96,157,192, 8, -136,158,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,157,192, 8, -200, 0, 0, 0, 1, 0, 0, 0,136,158,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 55, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, - 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,222, 0, 31, 0,222, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0, -254, 4, 0, 0, 21, 1, 0, 0, 51, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 31, 0, + 68, 65, 84, 65, 96, 0, 0, 0,208, 25, 9, 3,199, 0, 0, 0, 1, 0, 0, 0,120, 30, 9, 3, 72, 22, 9, 3,200, 10, 9, 3, +128, 7, 9, 3,248, 7, 9, 3, 24, 6, 9, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, + 15, 15,234, 0, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 88, 29, 9, 3, 88, 29, 9, 3,152, 26, 9, 3, +248, 27, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152, 26, 9, 3, +200, 0, 0, 0, 1, 0, 0, 0,248, 27, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,116, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0,128,190, 67, 0,192, 25, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,234, 0, 26, 0,234, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 26, 0, + 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,248, 27, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152, 26, 9, 3, 0, 0, 64,192, + 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +233, 0, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, + 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,234, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 88, 29, 9, 3,176, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,120, 30, 9, 3,199, 0, 0, 0, 1, 0, 0, 0, 64, 35, 9, 3,208, 25, 9, 3,128, 7, 9, 3,112, 8, 9, 3, + 8, 7, 9, 3,248, 7, 9, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,186, 2, 0, 0, 4, 4,234, 0, +122, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 9, 3, 0, 34, 9, 3, 64, 31, 9, 3,160, 32, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64, 31, 9, 3,200, 0, 0, 0, + 1, 0, 0, 0,160, 32, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, + 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, + 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, +156, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,160, 32, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 31, 9, 3, 0, 0, 0, 0, 0, 0,105, 67, + 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 88, 67, 0,192, 22,196, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, + 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, + 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0, 91, 2,217, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,155, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,234, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 0, 34, 9, 3,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 64, 35, 9, 3, +199, 0, 0, 0, 1, 0, 0, 0,248, 47, 9, 3,120, 30, 9, 3, 80, 10, 9, 3,216, 9, 9, 3, 96, 9, 9, 3,200, 10, 9, 3, + 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 1, 1, 19, 2, 20, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,152, 46, 9, 3,152, 46, 9, 3, 8, 36, 9, 3,136, 41, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8, 36, 9, 3,200, 0, 0, 0, 1, 0, 0, 0,104, 37, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 4, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 19, 2, 26, 0, 19, 2, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104, 37, 9, 3, +200, 0, 0, 0, 1, 0, 0, 0,200, 38, 9, 3, 8, 36, 9, 3, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, + 1, 2, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,250, 0, + 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,200, 38, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 40, 40, 9, 3,104, 37, 9, 3, 0, 0, 0, 0, + 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0, +160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40, 40, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, +136, 41, 9, 3,200, 38, 9, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0, 0,184,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, +130, 1,163, 0,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, + 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +136, 41, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 40, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 19, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +232, 42, 9, 3, 68, 65, 84, 65, 72, 3, 0, 0,232, 42, 9, 3,159, 0, 0, 0, 1, 0, 0, 0, 37,101,230, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249,173,116, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, + 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, + 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63, +192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, + 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191, +244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, + 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, 80, 25,195, 62,218,249,206, 62, + 0,237,196,187, 0, 0, 96,179,234, 2,170,189,191, 98,167, 61, 1,208,111, 62, 0, 0,224, 49,254,120, 21,194,182, 5, 2, 66, + 70,136,213,193,239,214,159,192, 5, 39, 19, 66, 15,174,255,193,217,101,210, 65,219, 40,160, 64,221,149, 47, 63, 85,126,162,190, + 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, + 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191, +244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, + 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, + 44, 8, 90,190, 2, 35,171,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,223, 34, 9, 59, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190, +237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,152, 46, 9, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 88, 25, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, + 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,248, 47, 9, 3,199, 0, 0, 0, 1, 0, 0, 0, +216, 52, 9, 3, 64, 35, 9, 3,232, 8, 9, 3,144, 6, 9, 3,112, 8, 9, 3, 96, 9, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 19, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 16, 16, 20, 4,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 51, 9, 3,128, 51, 9, 3,192, 48, 9, 3, 32, 50, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,192, 48, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 32, 50, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 50, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,192, 48, 9, 3, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,110,142,241,195, 55,199,120, 68, +240, 80,128,193,136, 2, 4, 68, 3, 4, 0, 0, 20, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,250, 70, 0, 0,250, 70,236, 81,184, 61, 10,215, 19, 64, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 20, 4, +140, 1, 3, 4,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 47, 1, 0, 0, +186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,244, 0, 0, 0, +128, 51, 9, 3,177, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 19, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 61,181, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 96, 0, 0, 0,216, 52, 9, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248, 47, 9, 3,176, 4, 9, 3, +232, 8, 9, 3,216, 9, 9, 3, 80, 10, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, + 6, 6, 0, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 57, 9, 3,192, 57, 9, 3,160, 53, 9, 3, + 96, 56, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160, 53, 9, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 55, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0, 0, 2, 26, 0, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 26, 0, + 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 0, 55, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 96, 56, 9, 3,160, 53, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96, 56, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 55, 9, 3, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0,191, 0, 0,192, 63, + 0, 0, 64, 60, 0, 0,125, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 26, 0, 0, 0, + 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0, +192, 57, 9, 3,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62, +100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,216, 91, 9, 3,195, 0, 0, 0, 1, 0, 0, 0,216, 20, 10, 3,192, 3, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 92, 9, 3,240, 97, 9, 3,104, 98, 9, 3,232,106, 9, 3,104,107, 9, 3, +144,187, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,117,170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200, 92, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, 64, 93, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64, 93, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, +184, 93, 9, 3,200, 92, 9, 3, 0, 0, 0, 0, 0, 0,202, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184, 93, 9, 3, +196, 0, 0, 0, 1, 0, 0, 0, 48, 94, 9, 3, 64, 93, 9, 3, 0, 0, 0, 0,136, 6,202, 3, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 48, 94, 9, 3,196, 0, 0, 0, 1, 0, 0, 0,168, 94, 9, 3,184, 93, 9, 3, 0, 0, 0, 0,136, 6, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168, 94, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 95, 9, 3, 48, 94, 9, 3, + 0, 0, 0, 0, 0, 0,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 95, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, +152, 95, 9, 3,168, 94, 9, 3, 0, 0, 0, 0,136, 6,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152, 95, 9, 3, +196, 0, 0, 0, 1, 0, 0, 0, 16, 96, 9, 3, 32, 95, 9, 3, 0, 0, 0, 0,108, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 16, 96, 9, 3,196, 0, 0, 0, 1, 0, 0, 0,136, 96, 9, 3,152, 95, 9, 3, 0, 0, 0, 0,108, 5,175, 3, + 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136, 96, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 97, 9, 3, 16, 96, 9, 3, + 0, 0, 0, 0,108, 5, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 97, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, +120, 97, 9, 3,136, 96, 9, 3, 0, 0, 0, 0,136, 6, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120, 97, 9, 3, +196, 0, 0, 0, 1, 0, 0, 0,240, 97, 9, 3, 0, 97, 9, 3, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,240, 97, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120, 97, 9, 3, 0, 0, 0, 0,108, 5, 80, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104, 98, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 98, 9, 3, 0, 0, 0, 0, + 64, 93, 9, 3,184, 93, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 98, 9, 3,197, 0, 0, 0, + 1, 0, 0, 0,104, 99, 9, 3,104, 98, 9, 3, 64, 93, 9, 3,168, 94, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,104, 99, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 99, 9, 3,232, 98, 9, 3,184, 93, 9, 3, 32, 95, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 99, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,104,100, 9, 3, +104, 99, 9, 3,168, 94, 9, 3, 32, 95, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,100, 9, 3, +197, 0, 0, 0, 1, 0, 0, 0,232,100, 9, 3,232, 99, 9, 3,200, 92, 9, 3,152, 95, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,232,100, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,104,101, 9, 3,104,100, 9, 3, 48, 94, 9, 3, +152, 95, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,101, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, +232,101, 9, 3,232,100, 9, 3,168, 94, 9, 3, 16, 96, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +232,101, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,104,102, 9, 3,104,101, 9, 3, 32, 95, 9, 3, 16, 96, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,102, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,232,102, 9, 3,232,101, 9, 3, +152, 95, 9, 3,136, 96, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232,102, 9, 3,197, 0, 0, 0, + 1, 0, 0, 0,104,103, 9, 3,104,102, 9, 3, 16, 96, 9, 3,136, 96, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,104,103, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,232,103, 9, 3,232,102, 9, 3, 32, 95, 9, 3, 0, 97, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232,103, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,104,104, 9, 3, +104,103, 9, 3, 48, 94, 9, 3, 0, 97, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,104, 9, 3, +197, 0, 0, 0, 1, 0, 0, 0,232,104, 9, 3,232,103, 9, 3,136, 96, 9, 3, 0, 97, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,232,104, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,104,105, 9, 3,104,104, 9, 3,200, 92, 9, 3, +120, 97, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,105, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, +232,105, 9, 3,232,104, 9, 3,168, 94, 9, 3,120, 97, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +232,105, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,104,106, 9, 3,104,105, 9, 3, 16, 96, 9, 3,240, 97, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,106, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,232,106, 9, 3,232,105, 9, 3, +152, 95, 9, 3,240, 97, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232,106, 9, 3,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,104,106, 9, 3,120, 97, 9, 3,240, 97, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,104,107, 9, 3,199, 0, 0, 0, 1, 0, 0, 0,240,110, 9, 3, 0, 0, 0, 0,168, 94, 9, 3, 64, 93, 9, 3, +184, 93, 9, 3, 32, 95, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,176, 3, 0, 0,202, 3, 0, 0, 7, 7,137, 6, + 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 8, 0,240,187,243, 2, 64, 20, 10, 3, 64, 20, 10, 3, 48,108, 9, 3,144,109, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0,128,127, 1, 3,112, 2,243, 2, 68, 65, 84, 65,248, 0, 0, 0, 48,108, 9, 3,200, 0, 0, 0, + 1, 0, 0, 0,144,109, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, + 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, +176, 3, 0, 0,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, 2, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,189,243, 2,104,218,102, 3, +104,218,102, 3, 0, 0, 0, 0, 0, 0, 0, 0,152,134, 7, 3, 0,139, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,144,109, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,108, 9, 3, 0, 0, 0, 0, 0,240,109, 69, + 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, + 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, + 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 3, 0, 0,202, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,224,188,243, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,240,110, 9, 3,199, 0, 0, 0, 1, 0, 0, 0,128,176, 9, 3, +104,107, 9, 3,152, 95, 9, 3,136, 96, 9, 3, 0, 97, 9, 3, 48, 94, 9, 3, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, + 0, 0, 0, 0, 3, 3, 0, 0, 4, 4, 28, 1, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 40,184,243, 2, 32,169, 9, 3, +224,175, 9, 3,184,111, 9, 3, 24,113, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 80,220,242, 2,104,132, 7, 3, 68, 65, 84, 65, +248, 0, 0, 0,184,111, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 24,113, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,142, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 28, 1, 31, 0, 28, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0,229, 2, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 28, 1, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48,187,243, 2, 32, 87,102, 3, 32, 87,102, 3, 0, 0, 0, 0, 0, 0, 0, 0,224,141, 7, 3, 72,144, 8, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24,113, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +184,111, 9, 3, 0, 0, 0, 0, 0, 0,142, 67, 0,128, 86,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,133, 67, 0, 64, 57,196, + 0, 0, 0, 0, 11, 1, 0, 0, 28, 1, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 28, 1,229, 2, 11, 1, +229, 2, 0, 0,232,192, 88, 3, 1, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1,229, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,185,243, 2, 8, 46,106, 3,192, 68,102, 3,120,114, 9, 3, +120,167, 9, 3,120,145, 8, 3, 24,149, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,120,114, 9, 3, +198, 0, 0, 0, 1, 0, 0, 0, 32,116, 9, 3, 0, 0, 0, 0,216,185,243, 2, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, + 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, + 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255, 11, 1, 36, 0, + 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32,116, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,200,117, 9, 3, +120,114, 9, 3, 0,140, 1, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 11, 1, 61, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0,200,117, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,112,119, 9, 3, 32,116, 9, 3, 24,142, 1, 3, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,111,255, 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,112,119, 9, 3,198, 0, 0, 0, + 1, 0, 0, 0, 24,121, 9, 3,200,117, 9, 3, 48,144, 1, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105, +109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105, +109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254, 11, 1,203, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 24,121, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,192,122, 9, 3,112,119, 9, 3, + 72,146, 1, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254, 11, 1, 58, 0, 20, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +192,122, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,104,124, 9, 3, 24,121, 9, 3, 96,148, 1, 3, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,117,108,108, + 32, 83, 97,109,112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254, + 11, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,104,124, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, + 16,126, 9, 3,192,122, 9, 3,120,150, 1, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,253, 11, 1,102, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0, 16,126, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,184,127, 9, 3,104,124, 9, 3,144,152, 1, 3, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 10,253, 11, 1,130, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,184,127, 9, 3, +198, 0, 0, 0, 1, 0, 0, 0, 96,129, 9, 3, 16,126, 9, 3,192,156, 1, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97, +110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,252, 11, 1, 0, 0, + 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 96,129, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 8,131, 9, 3, +184,127, 9, 3,216,158, 1, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101, +115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101, +115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218,252, 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, + 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0, 8,131, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,176,132, 9, 3, 96,129, 9, 3,240,160, 1, 3, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,194,252, 11, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,176,132, 9, 3,198, 0, 0, 0, + 1, 0, 0, 0, 88,134, 9, 3, 8,131, 9, 3, 8,163, 1, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97, +107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97, +107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,252, 11, 1, 0, 0, 0, 0, 0, 0, + 4, 0, 7, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 88,134, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 0,136, 9, 3,176,132, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,116,101,120,116,117, +114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,116,101,120,116,117, +114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41,255, 7, 1,179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, + 0,136, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,168,137, 9, 3, 88,134, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,112,112, +105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102,254, + 7, 1,171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,168,137, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, + 80,139, 9, 3, 0,136, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117, +101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117, +101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,253, 7, 1, 36, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0, 80,139, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,248,140, 9, 3,168,137, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114,111,112,115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114,111,112,115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67,117,115,116,111,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 18,253, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,248,140, 9, 3, +198, 0, 0, 0, 1, 0, 0, 0,160,142, 9, 3, 80,139, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,101,118,105,101,119, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,254, 7, 1,186, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,160,142, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 72,144, 9, 3, +248,140, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,253, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0, 72,144, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,240,145, 9, 3,160,142, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 73,109, 97,103,101, 32, 83, 97,109,112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84,252, 7, 1,212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,240,145, 9, 3,198, 0, 0, 0, + 1, 0, 0, 0,152,147, 9, 3, 72,144, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105, +109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105, +109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 32, 77, 97,112,112,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 7, 1, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,152,147, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 64,149, 9, 3,240,145, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,254, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, + 64,149, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,232,150, 9, 3,152,147, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,108,111,117, +100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161,253, + 7, 1,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,232,150, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, +144,152, 9, 3, 64,149, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,119,111,111,100, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,119,111,111,100, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139,253, 7, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,144,152, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 56,154, 9, 3,232,150, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 56,154, 9, 3, +198, 0, 0, 0, 1, 0, 0, 0,224,155, 9, 3,144,152, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,111,114,111,110,111,105, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123,253, 7, 1,196, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,224,155, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,136,157, 9, 3, + 56,154, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115, +105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115, +105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,105,110,116, 32, 68,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,253, 7, 1,179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0,136,157, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 48,159, 9, 3,224,155, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95,116,117,114, 98,117,108,101,110, + 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95,116,117,114, 98,117,108,101,110, + 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 14,253, 7, 1,102, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 48,159, 9, 3,198, 0, 0, 0, + 1, 0, 0, 0,216,160, 9, 3,136,157, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, +117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, +117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77,117,115,103,114, 97,118,101, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139,253, 7, 1,180, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,216,160, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,128,162, 9, 3, 48,159, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,253, 7, 1,183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +128,162, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 40,164, 9, 3,216,160, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,103,105, + 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,254, + 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 40,164, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, +208,165, 9, 3,128,162, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,100,105,115,116,111, +114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,100,105,115,116,111, +114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,116,111,114,116,101,100, 32, 78,111,105,115,101, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211,253, 7, 1,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,208,165, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,120,167, 9, 3, 40,164, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2,254, 7, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,120,167, 9, 3, +198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,165, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,117, 99, 99,105, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,183,253, 7, 1,136, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 32,169, 9, 3,165, 0, 0, 0, 1, 0, 0, 0,224,175, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, + 0, 0, 0, 0, 32,133, 89, 3,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,170, 9, 3, +200, 0, 0, 0, 1, 0, 0, 0,192,171, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,136,158,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,157,192, 8, 0, 0, 0, 0, - 0, 0, 94, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 77, 67, 1,128,138,195, 0, 0, 0, 0,205, 0, 0, 0, -222, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,222, 0, 21, 1,205, 0, 21, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,192,171, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 32,173, 9, 3, 96,170, 9, 3, 0, 0, 0, 0, + 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, 0, 0, 0, 0,223, 0, 0, 0, +240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0,149, 3,223, 0,149, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,176,159,192, 8,165, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,173, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, +128,174, 9, 3,192,171, 9, 3, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, + 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, + 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,153, 5, + 60, 0,153, 5, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 89, 3, 0, 0, +148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, 0, 0, 4, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +128,174, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32,173, 9, 3, 0, 0, 0, 0, 0,128,175, 68, 0, 0,137,195, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0,136, 5, 0, 0,153, 5, 0, 0, 0, 0, 0, 0, + 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, + 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, + 2, 0, 3, 3, 2, 0, 0, 4, 6, 0,153, 5, 89, 3,136, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0,224,175, 9, 3,168, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32,169, 9, 3, + 96,170, 9, 3,128,174, 9, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,128,176, 9, 3, +199, 0, 0, 0, 1, 0, 0, 0, 40,181, 9, 3,240,110, 9, 3,200, 92, 9, 3,120, 97, 9, 3,240, 97, 9, 3,152, 95, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 15, 15,108, 5, 80, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0,120,147,243, 2, 8,180, 9, 3, 8,180, 9, 3, 72,177, 9, 3,168,178, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, +248,132, 7, 3,176,139, 7, 3, 68, 65, 84, 65,248, 0, 0, 0, 72,177, 9, 3,200, 0, 0, 0, 1, 0, 0, 0,168,178, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128,137, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,173, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,108, 5, 26, 0,108, 5, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 26, 0, 5, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,149,243, 2, 8,224, 90, 3, 8,224, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0,248,151, 8, 3, 8,154, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,178, 9, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72,177, 9, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, +112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 18, 0, 0, 0, 53, 0, 0, 0, + 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, + 4, 0, 0, 4, 8, 0,108, 5, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +107, 5, 0, 0, 26, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 54, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,148,243, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,155, 8, 3, 80,160, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,188, 0, 0, 0, 8,180, 9, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 40,181, 9, 3,199, 0, 0, 0, + 1, 0, 0, 0,144,187, 9, 3,128,176, 9, 3,136, 96, 9, 3, 16, 96, 9, 3, 32, 95, 9, 3, 0, 97, 9, 3, 0, 0, 0, 0, +109, 5, 0, 0,136, 6, 0, 0, 5, 3, 0, 0,174, 3, 0, 0, 3, 3, 28, 1,170, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8,145,243, 2,176,184, 9, 3,176,184, 9, 3,240,181, 9, 3, 80,183, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 64,140, 7, 3, +200,149, 8, 3, 68, 65, 84, 65,248, 0, 0, 0,240,181, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 80,183, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,142, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 28, 1, 26, 0, 28, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 26, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,146,243, 2,240,113,101, 3,240,113,101, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 48,163, 8, 3, 64,165, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,183, 9, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,240,181, 9, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,133, 67, 0, 0,252,194, 0, 0, 0, 0, 11, 1, 0, 0, 28, 1, 0, 0, 18, 0, 0, 0,143, 0, 0, 0, 0, 0, 0, 0, + 10, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0,143, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, + 6, 0, 28, 1,144, 0, 11, 1,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, + 5, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1,144, 0, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,145,243, 2, 40,250,105, 3, + 40,250,105, 3, 0, 0, 0, 0, 0, 0, 0, 0,112,166, 8, 3,152,168, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +252, 0, 0, 0,176,184, 9, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 56,208,101, 3, 56,208,101, 3, 16,186, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 16,186, 9, 3,223, 0, 0, 0, 1, 0, 0, 0, + 14, 0, 0, 0, 14, 0, 0, 0,128,186, 9, 3, 68, 65, 84, 65,168, 0, 0, 0,128,186, 9, 3,222, 0, 0, 0, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 48, 0, 11, 3, 19, 0, 0, 0, 1, 0, 1, 0, 48, 0, 11, 3, 20, 0, 0, 0, 1, 0, 1, 0, + 48, 0, 11, 3, 21, 0, 1, 0, 1, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,240, 22, 11, 3, 0, 0, 0, 0, + 1, 0, 1, 0,152, 29, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,160,112, 12, 3, 0, 0, 0, 0, 1, 0, 1, 0,224, 39, 11, 3, + 0, 0, 0, 0, 1, 0, 1, 0,176,205, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,160, 35, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0, +160, 18, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0, 88, 25, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,208, 17, 11, 3, 21, 0, 0, 0, + 1, 0, 1, 0, 48, 0, 11, 3, 68, 65, 84, 65, 96, 0, 0, 0,144,187, 9, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 40,181, 9, 3,120, 97, 9, 3,168, 94, 9, 3, 16, 96, 9, 3,240, 97, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, + 81, 0, 0, 0,174, 3, 0, 0, 1, 1,108, 5, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0,232,149,243, 2,112,220, 9, 3, +160, 19, 10, 3, 88,188, 9, 3, 96,215, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 88,150, 8, 3,104,253, 88, 3, 68, 65, 84, 65, +248, 0, 0, 0, 88,188, 9, 3,200, 0, 0, 0, 1, 0, 0, 0,184,189, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,173, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,108, 5, 26, 0,108, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 81, 0, 0, 0,106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,108, 5, 26, 0, 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 56,159,243, 2,232, 60,104, 3,232, 60,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, 40,173, 8, 3, 16, 65, 1, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,189, 9, 3,200, 0, 0, 0, 1, 0, 0, 0,248,210, 9, 3, + 88,188, 9, 3, 0, 0, 0, 0, 0, 0, 32, 67, 0, 0, 27,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 0, 27,196, + 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,107, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,107, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,108, 2,143, 0, +108, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0, 67, 1, 0, 0,174, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,108, 2, 10, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, +160, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,156,243, 2, 64, 30,243, 2, 64, 30,243, 2, 24,191, 9, 3, + 80,209, 9, 3, 64, 66, 1, 3, 80, 68, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 24,191, 9, 3, +198, 0, 0, 0, 1, 0, 0, 0,192,192, 9, 3, 0, 0, 0, 0,136, 83, 7, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84, +111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,254,143, 0,190, 1, + 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,192,192, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,104,194, 9, 3, + 24,191, 9, 3,168,108, 7, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115, +104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115, +104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117,254,143, 0,115, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0,104,194, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 16,196, 9, 3,192,192, 9, 3,192,110, 7, 3, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101,120,116,117,114,101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101,120,116,117,114,101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,136,252,143, 0,213, 1, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 16,196, 9, 3,198, 0, 0, 0, + 1, 0, 0, 0,184,197, 9, 3,104,194, 9, 3,216,112, 7, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,114,111,107,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130,253,143, 0,195, 0, 0, 0, 0, 0, + 4, 0, 4, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,184,197, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 96,199, 9, 3, 16,196, 9, 3, +240,114, 7, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 99,117, +114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 99,117, +114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,253,143, 0,231, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, + 96,199, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 8,201, 9, 3,184,197, 9, 3, 8,117, 7, 3, 0, 0, 0, 0, 86, 73, 69, 87, + 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, + 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101, + 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76,253, +143, 0,153, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 8,201, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, +176,202, 9, 3, 96,199, 9, 3, 32,119, 7, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, + 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, + 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,169,253,143, 0, 36, 0, 0, 0, 0, 0, 4, 0, 4, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,176,202, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 88,204, 9, 3, 8,201, 9, 3, 56,121, 7, 3, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109,109,101,116,114,121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109,109,101,116,114,121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,142,253,143, 0,135, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 88,204, 9, 3, +198, 0, 0, 0, 1, 0, 0, 0, 0,206, 9, 3,176,202, 9, 3, 80,123, 7, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,173,253,143, 0, 80, 0, + 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 0,206, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,168,207, 9, 3, + 88,204, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103, +104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103, +104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,101,105,103,104,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108,255,183, 0,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0,168,207, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 80,209, 9, 3, 0,206, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 95,111,112,116,105, +111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 95,111,112,116,105, +111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 39,253,183, 0,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80,209, 9, 3,198, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,168,207, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,111,106,101, 99,116, 32, 80, 97,105,110, +116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157,252,183, 0, 9, 1, 20, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,210, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 0,214, 9, 3,184,189, 9, 3, + 0, 0, 0, 0, 0, 0, 33, 67, 0, 0, 90,195, 0, 0, 0, 0, 0, 0, 0, 0,227,102, 16, 67, 24, 30, 90,195, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,216, 0,143, 0,216, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,107, 0, 0, 0, 66, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,216, 0, 11, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,157,243, 2,224,208,114, 3,224,208,114, 3, 88,212, 9, 3, 88,212, 9, 3, +128, 69, 1, 3,144, 71, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 88,212, 9, 3,198, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,157,243, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97, +115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97, +115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,101,114, 97,116,111,114, 0,100, 32, 69, +120,101, 99,117,116,101, 0,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,255,144, 0, 16, 0, 0, 0, 0, 0, + 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0,214, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 96,215, 9, 3,248,210, 9, 3, + 0, 0, 0, 0, 0, 0, 52, 67, 0,192,115,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,115,196, 0, 0, 0, 0, +163, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,207, 3,163, 0,207, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0,107, 5, 0, 0,107, 0, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,151,243, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,215, 9, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0,214, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 0, 0,107, 5, 0, 0, +107, 0, 0, 0,174, 3, 0, 0,160, 0, 0, 0,107, 5, 0, 0,107, 0, 0, 0,174, 3, 0, 0,204, 4, 68, 3, 12, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,150,243, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,100, 1, 3,224, 99, 1, 3, 0, 0, 0, 0,192,216, 9, 3, 68, 65, 84, 65, + 72, 3, 0, 0,192,216, 9, 3,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 92,165,205, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0,218,205, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,158,210,111,193, 0, 0,128, 63, 68,239,209, 62, 70,119,105, 63,192, 84, 89,188, 0, 0, 0, 0, + 53,177,205,190,144, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 42, 61,228, 62, 0, 0, 0, 0, +164, 95, 68, 65,141,120,173,192,225,208,213, 64, 0, 0,128, 63,178,157,229, 62,195, 59, 37,191,222,160, 81,191,184,158, 81,191, +117, 90,127, 63,202, 73,159, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,243, 15,184, 63,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0,220,161,108, 65,158,210,111, 65,130,240,191, 62,104,116, 85, 63, 16,183, 70,188, 0, 0, 0,180, + 24, 7,128,190,175,215,246, 61, 76,158, 14, 63, 0, 0, 56, 52,230,117,117,194, 58,213,216, 65,167,161, 5,194,236,254,159,192, +240, 49,114, 66,195,242,213,193,140,218, 3, 66,145, 0,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,158,210,111,193, 0, 0,128, 63,178,157,229, 62,195, 59, 37,191,222,160, 81,191,184,158, 81,191, +117, 90,127, 63,202, 73,159, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,243, 15,184, 63,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0,220,161,108, 65,158,210,111, 65, 86, 68,214, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 68,214, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 68,214, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, +158,210,111, 65,203,189,102, 65, 0, 0, 0, 0, 0, 0, 0, 0,184, 44,195, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 30, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +112,220, 9, 3,160, 0, 0, 0, 1, 0, 0, 0,144,224, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 88, 25, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 24, + 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 64,156, 69, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,221, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 48,223, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,192, 48, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,197, 68, 0, 0,200, 65, 0,224,197, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,223, 9, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,208,221, 9, 3, 0, 0, 0, 0, 0,128,241, 67, 0,128, 90,196, 0, 0, 0, 0, 0, 0, 0, 0, + 0,224,195, 68, 0, 64,111,196, 0, 0, 0, 0, 31, 6, 0, 0, 48, 6, 0, 0, 18, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, + 30, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 30, 6, 0, 0, 18, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, + 6, 0, 48, 6,207, 3, 31, 6,189, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, +119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,207, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +252, 0, 0, 0,144,224, 9, 3,169, 0, 0, 0, 1, 0, 0, 0,160,236, 9, 3,112,220, 9, 3,208,221, 9, 3, 48,223, 9, 3, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,225, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 11, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,240,225, 9, 3,223, 0, 0, 0, 1, 0, 0, 0, + 93, 0, 0, 0, 93, 0, 0, 0, 96,226, 9, 3, 68, 65, 84, 65, 92, 4, 0, 0, 96,226, 9, 3,222, 0, 0, 0, 93, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 11, 3, 19, 0, 0, 0, 1, 0, 0, 0, 48, 0, 11, 3, 20, 0, 0, 0, 1, 0, 0, 0, + 48, 0, 11, 3, 21, 0, 0, 0, 1, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0,240, 22, 11, 3, 0, 0, 0, 0, + 1, 0, 0, 0,152, 29, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0,160,112, 12, 3, 0, 0, 0, 0, 1, 0, 0, 0,224, 39, 11, 3, + 0, 0, 0, 0, 1, 0, 0, 0,176,205, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0,160, 35, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, +160, 18, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, 88, 25, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0,208, 17, 11, 3, 30, 0,255,255, + 0, 0, 1, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 31, 0, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 7, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 31, 0, 10, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 11, 0, 0, 0, 1, 0, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 15, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 31, 0, 18, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 23, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 31, 0, 26, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, + 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, + 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, + 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, + 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, + 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 2, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 10, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 13, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 18, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 26, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 29, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 32,231, 9, 3,200, 0, 0, 0, 1, 0, 0, 0,128,232, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,197, 68, 0, 0,200, 65, 0,224,197, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,232, 9, 3,200, 0, 0, 0, 1, 0, 0, 0,224,233, 9, 3, + 32,231, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,233, 9, 3, +200, 0, 0, 0, 1, 0, 0, 0, 64,235, 9, 3,128,232, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, + 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 7, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 64,235, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224,233, 9, 3, 0, 0, 0, 0, + 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 38,192, 0, 0,102, 64, 0,192,179,191, 0,224, 25, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 6, 0, 0, 0, 0, 0, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0,160,236, 9, 3,170, 0, 0, 0, 1, 0, 0, 0, +160, 19, 10, 3,144,224, 9, 3, 32,231, 9, 3, 64,235, 9, 3, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, + 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 32, 14, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,128, 15, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 15, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,224, 16, 10, 3, 32, 14, 10, 3, + 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, 0, 0, 0, 0, +223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0,149, 3,223, 0,149, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224, 16, 10, 3,200, 0, 0, 0, + 1, 0, 0, 0, 64, 18, 10, 3,128, 15, 10, 3, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, + 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,179, 68, + 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,153, 5, 60, 0,153, 5, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, + 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, 0, 0, 4, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 64, 18, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224, 16, 10, 3, 0, 0, 0, 0, 0,128,175, 68, + 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0,136, 5, 0, 0,153, 5, 0, 0, + 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, + 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 2, 2, 0, 0, 2, 0, 3, 3, 2, 0, 0, 4, 6, 0,153, 5, 89, 3,136, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0,160, 19, 10, 3,168, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +160,236, 9, 3, 32, 14, 10, 3, 64, 18, 10, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, +216, 20, 10, 3,195, 0, 0, 0, 1, 0, 0, 0,184, 78, 10, 3,216, 91, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97, +109,101, 32, 76,111,103,105, 99, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +200, 21, 10, 3,224, 27, 10, 3, 88, 28, 10, 3, 88, 38, 10, 3,216, 38, 10, 3,200, 71, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +200, 21, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 64, 22, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 64, 22, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,184, 22, 10, 3,200, 21, 10, 3, 0, 0, 0, 0, + 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184, 22, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 48, 23, 10, 3, + 64, 22, 10, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 48, 23, 10, 3,196, 0, 0, 0, + 1, 0, 0, 0,168, 23, 10, 3,184, 22, 10, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +168, 23, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 24, 10, 3, 48, 23, 10, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 32, 24, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,152, 24, 10, 3,168, 23, 10, 3, 0, 0, 0, 0, +254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152, 24, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 16, 25, 10, 3, + 32, 24, 10, 3, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 16, 25, 10, 3,196, 0, 0, 0, + 1, 0, 0, 0,136, 25, 10, 3,152, 24, 10, 3, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +136, 25, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 26, 10, 3, 16, 25, 10, 3, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 0, 26, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,120, 26, 10, 3,136, 25, 10, 3, 0, 0, 0, 0, +254, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120, 26, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,240, 26, 10, 3, + 0, 26, 10, 3, 0, 0, 0, 0,124, 3, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240, 26, 10, 3,196, 0, 0, 0, + 1, 0, 0, 0,104, 27, 10, 3,120, 26, 10, 3, 0, 0, 0, 0,124, 3,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +104, 27, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,224, 27, 10, 3,240, 26, 10, 3, 0, 0, 0, 0,212, 0, 20, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,224, 27, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104, 27, 10, 3, 0, 0, 0, 0, +212, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 28, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 28, 10, 3, + 0, 0, 0, 0, 64, 22, 10, 3,184, 22, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 28, 10, 3, +197, 0, 0, 0, 1, 0, 0, 0, 88, 29, 10, 3, 88, 28, 10, 3, 64, 22, 10, 3,168, 23, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 88, 29, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 29, 10, 3,216, 28, 10, 3,184, 22, 10, 3, + 32, 24, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 29, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, + 88, 30, 10, 3, 88, 29, 10, 3,168, 23, 10, 3, 32, 24, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 88, 30, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 30, 10, 3,216, 29, 10, 3,168, 23, 10, 3,152, 24, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 30, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 31, 10, 3, 88, 30, 10, 3, +152, 24, 10, 3, 16, 25, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 31, 10, 3,197, 0, 0, 0, + 1, 0, 0, 0,216, 31, 10, 3,216, 30, 10, 3, 48, 23, 10, 3,136, 25, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,216, 31, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 32, 10, 3, 88, 31, 10, 3, 16, 25, 10, 3,136, 25, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 32, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 32, 10, 3, +216, 31, 10, 3,200, 21, 10, 3,152, 24, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 32, 10, 3, +197, 0, 0, 0, 1, 0, 0, 0, 88, 33, 10, 3, 88, 32, 10, 3,200, 21, 10, 3,136, 25, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 88, 33, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 33, 10, 3,216, 32, 10, 3, 32, 24, 10, 3, + 0, 26, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 33, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, + 88, 34, 10, 3, 88, 33, 10, 3, 48, 23, 10, 3, 0, 26, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 88, 34, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 34, 10, 3,216, 33, 10, 3, 16, 25, 10, 3, 0, 26, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 34, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 35, 10, 3, 88, 34, 10, 3, +120, 26, 10, 3,240, 26, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 35, 10, 3,197, 0, 0, 0, + 1, 0, 0, 0,216, 35, 10, 3,216, 34, 10, 3, 32, 24, 10, 3,240, 26, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,216, 35, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 36, 10, 3, 88, 35, 10, 3, 0, 26, 10, 3,120, 26, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 36, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 36, 10, 3, +216, 35, 10, 3,152, 24, 10, 3,104, 27, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 36, 10, 3, +197, 0, 0, 0, 1, 0, 0, 0, 88, 37, 10, 3, 88, 36, 10, 3,120, 26, 10, 3,104, 27, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 88, 37, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 37, 10, 3,216, 36, 10, 3,168, 23, 10, 3, +224, 27, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 37, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, + 88, 38, 10, 3, 88, 37, 10, 3,240, 26, 10, 3,224, 27, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 88, 38, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216, 37, 10, 3,104, 27, 10, 3,224, 27, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,216, 38, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 96, 42, 10, 3, 0, 0, 0, 0, +168, 23, 10, 3, 64, 22, 10, 3,184, 22, 10, 3, 32, 24, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, +214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 32, 78, 10, 3, 32, 78, 10, 3, +160, 39, 10, 3, 0, 41, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +160, 39, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 41, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0, 41, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,160, 39, 10, 3, + 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, +112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 96, 42, 10, 3,199, 0, 0, 0, + 1, 0, 0, 0, 40, 47, 10, 3,216, 38, 10, 3,136, 25, 10, 3, 16, 25, 10, 3, 0, 26, 10, 3, 48, 23, 10, 3, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 4, 4,234, 0, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,232, 45, 10, 3,232, 45, 10, 3, 40, 43, 10, 3,136, 44, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40, 43, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,136, 44, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0,245, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136, 44, 10, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 40, 43, 10, 3, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, +254,255, 88, 67,254,255,116,195, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, + 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, + 6, 0,234, 0,245, 0,217, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0,245, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +216, 0, 0, 0,232, 45, 10, 3,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0, +160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 40, 47, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,168, 52, 10, 3, + 96, 42, 10, 3,200, 21, 10, 3,152, 24, 10, 3, 16, 25, 10, 3,136, 25, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, + 0, 0, 0, 0, 19, 1, 0, 0, 17, 17, 20, 4, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 52, 10, 3, + 16, 52, 10, 3,240, 47, 10, 3,176, 50, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,240, 47, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 80, 49, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 49, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,176, 50, 10, 3, +240, 47, 10, 3, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,122,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,122,195, + 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,250, 0,203, 0, +250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,250, 0, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176, 50, 10, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80, 49, 10, 3, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67, + 4, 0, 39,195, 0,224,180, 68, 1, 0,224,194, 0, 0,176, 67, 39, 3, 0, 0, 56, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, + 0, 0, 0, 0, 38, 3, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 0, 4, 0, 0, 56, 3,250, 0, 39, 3,232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, + 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 3,250, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 52, 0, 0, 0, 16, 52, 10, 3,178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,168, 52, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 16, 59, 10, 3, + 40, 47, 10, 3,120, 26, 10, 3,240, 26, 10, 3, 32, 24, 10, 3, 0, 26, 10, 3, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, + 21, 1, 0, 0,186, 2, 0, 0, 9, 9,130, 1,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 56, 10, 3, + 48, 56, 10, 3,112, 53, 10, 3,208, 54, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,112, 53, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,208, 54, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,193, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,181, 67, 0, 0,200, 65, 0,128,181, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,130, 1, 26, 0,130, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,130, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208, 54, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +112, 53, 10, 3, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0, +126, 86, 5, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,130, 1,140, 1,130, 1, +140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0, 48, 56, 10, 3, +172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16, 59, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,200, 71, 10, 3,168, 52, 10, 3, +104, 27, 10, 3,224, 27, 10, 3,240, 26, 10, 3,120, 26, 10, 3, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, +186, 2, 0, 0, 1, 1,167, 2,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 70, 10, 3,104, 70, 10, 3, +216, 59, 10, 3, 88, 65, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +216, 59, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 56, 61, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 56, 0,192, 41, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 2, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,167, 2, 26, 0,167, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +167, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56, 61, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,152, 62, 10, 3,216, 59, 10, 3, + 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,213, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,140, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152, 62, 10, 3,200, 0, 0, 0, + 1, 0, 0, 0,248, 63, 10, 3, 56, 61, 10, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0, +231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, +142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, + 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, + 47, 1, 0, 0, 47, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, + 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,248, 63, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 88, 65, 10, 3,152, 62, 10, 3, 0, 0, 0, 0, 0, 0, 35, 67, + 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 23,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, + 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,112, 2,163, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,123, 3, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88, 65, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +248, 63, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 66, 10, 3, 68, 65, 84, 65, 72, 3, 0, 0,184, 66, 10, 3, +159, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63,149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126,177,113, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65,214,211,111, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 63,156, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104, 70, 10, 3,160, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 88, 25, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,200, 71, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 59, 10, 3,152, 24, 10, 3,168, 23, 10, 3, +224, 27, 10, 3,104, 27, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 3, 3,212, 0, +166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 75, 10, 3, 80, 75, 10, 3,144, 72, 10, 3,240, 73, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144, 72, 10, 3,200, 0, 0, 0, + 1, 0, 0, 0,240, 73, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 83, 67, + 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,212, 0, 26, 0,212, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, + 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,240, 73, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144, 72, 10, 3, 0, 0, 0, 0, 0,128,131, 67, + 0, 0,228,194, 0, 0, 0, 0, 0, 0, 80, 66, 0, 0,119, 67, 0, 0,189,195, 0, 0, 0, 0,195, 0, 0, 0,212, 0, 0, 0, + 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, + 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,212, 0,140, 1,195, 0,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,212, 0,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0, 80, 75, 10, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 76, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, +176, 76, 10, 3,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 32, 77, 10, 3, 68, 65, 84, 65,156, 0, 0, 0, + 32, 77, 10, 3,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 0, 11, 3, 19, 0, 0, 0, 1, 0, 1, 0, + 48, 0, 11, 3, 20, 0, 0, 0, 1, 0, 1, 0, 48, 0, 11, 3, 21, 0, 1, 0, 1, 0, 1, 0, 48, 0, 11, 3, 0, 0, 0, 0, + 1, 0, 1, 0,240, 22, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,152, 29, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,160,112, 12, 3, + 0, 0, 0, 0, 1, 0, 1, 0,224, 39, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,176,205, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0, +160, 35, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,160, 18, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0, 88, 25, 11, 3, 0, 0, 0, 0, + 1, 0, 1, 0,208, 17, 11, 3, 83, 78, 0, 0,140, 0, 0, 0,184, 78, 10, 3,195, 0, 0, 0, 1, 0, 0, 0, 80,143, 10, 3, +216, 20, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 79, 10, 3, 56, 86, 10, 3,176, 86, 10, 3,176, 97, 10, 3, + 48, 98, 10, 3, 80,136, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168, 79, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 80, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 80, 10, 3,196, 0, 0, 0, + 1, 0, 0, 0,152, 80, 10, 3,168, 79, 10, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +152, 80, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 16, 81, 10, 3, 32, 80, 10, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 16, 81, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,136, 81, 10, 3,152, 80, 10, 3, 0, 0, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136, 81, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 82, 10, 3, + 16, 81, 10, 3, 0, 0, 0, 0, 0, 0,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 82, 10, 3,196, 0, 0, 0, + 1, 0, 0, 0,120, 82, 10, 3,136, 81, 10, 3, 0, 0, 0, 0,254, 4,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +120, 82, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,240, 82, 10, 3, 0, 82, 10, 3, 0, 0, 0, 0,244, 3,187, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,240, 82, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,104, 83, 10, 3,120, 82, 10, 3, 0, 0, 0, 0, +244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104, 83, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,224, 83, 10, 3, +240, 82, 10, 3, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224, 83, 10, 3,196, 0, 0, 0, + 1, 0, 0, 0, 88, 84, 10, 3,104, 83, 10, 3, 0, 0, 0, 0,244, 3, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 88, 84, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,208, 84, 10, 3,224, 83, 10, 3, 0, 0, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,208, 84, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 72, 85, 10, 3, 88, 84, 10, 3, 0, 0, 0, 0, +248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72, 85, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,192, 85, 10, 3, +208, 84, 10, 3, 0, 0, 0, 0,244, 3, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192, 85, 10, 3,196, 0, 0, 0, + 1, 0, 0, 0, 56, 86, 10, 3, 72, 85, 10, 3, 0, 0, 0, 0,254, 4, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 56, 86, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192, 85, 10, 3, 0, 0, 0, 0,248, 1,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,176, 86, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 48, 87, 10, 3, 0, 0, 0, 0, 32, 80, 10, 3, +152, 80, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 87, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, +176, 87, 10, 3,176, 86, 10, 3, 32, 80, 10, 3,136, 81, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +176, 87, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 48, 88, 10, 3, 48, 87, 10, 3,152, 80, 10, 3, 0, 82, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 88, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,176, 88, 10, 3,176, 87, 10, 3, +136, 81, 10, 3, 0, 82, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176, 88, 10, 3,197, 0, 0, 0, + 1, 0, 0, 0, 48, 89, 10, 3, 48, 88, 10, 3, 0, 82, 10, 3,120, 82, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 48, 89, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,176, 89, 10, 3,176, 88, 10, 3, 16, 81, 10, 3,240, 82, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176, 89, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 48, 90, 10, 3, + 48, 89, 10, 3,168, 79, 10, 3,104, 83, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 90, 10, 3, +197, 0, 0, 0, 1, 0, 0, 0,176, 90, 10, 3,176, 89, 10, 3,136, 81, 10, 3,104, 83, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,176, 90, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 48, 91, 10, 3, 48, 90, 10, 3,120, 82, 10, 3, +224, 83, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 91, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, +176, 91, 10, 3,176, 90, 10, 3,240, 82, 10, 3,224, 83, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +176, 91, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 48, 92, 10, 3, 48, 91, 10, 3,168, 79, 10, 3, 88, 84, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 92, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,176, 92, 10, 3,176, 91, 10, 3, +240, 82, 10, 3, 88, 84, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176, 92, 10, 3,197, 0, 0, 0, + 1, 0, 0, 0, 48, 93, 10, 3, 48, 92, 10, 3,104, 83, 10, 3,208, 84, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 48, 93, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,176, 93, 10, 3,176, 92, 10, 3,224, 83, 10, 3,208, 84, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176, 93, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 48, 94, 10, 3, + 48, 93, 10, 3, 88, 84, 10, 3,208, 84, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 94, 10, 3, +197, 0, 0, 0, 1, 0, 0, 0,176, 94, 10, 3,176, 93, 10, 3,240, 82, 10, 3, 72, 85, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,176, 94, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 48, 95, 10, 3, 48, 94, 10, 3,120, 82, 10, 3, + 72, 85, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 95, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, +176, 95, 10, 3,176, 94, 10, 3, 0, 82, 10, 3,192, 85, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +176, 95, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 48, 96, 10, 3, 48, 95, 10, 3, 16, 81, 10, 3,192, 85, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 96, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,176, 96, 10, 3,176, 95, 10, 3, + 72, 85, 10, 3,192, 85, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176, 96, 10, 3,197, 0, 0, 0, + 1, 0, 0, 0, 48, 97, 10, 3, 48, 96, 10, 3,136, 81, 10, 3, 56, 86, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 48, 97, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,176, 97, 10, 3,176, 96, 10, 3,120, 82, 10, 3, 56, 86, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176, 97, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 48, 97, 10, 3,208, 84, 10, 3, 56, 86, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 48, 98, 10, 3, +199, 0, 0, 0, 1, 0, 0, 0,184,101, 10, 3, 0, 0, 0, 0,136, 81, 10, 3, 32, 80, 10, 3,152, 80, 10, 3, 0, 82, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0,184,142, 10, 3,184,142, 10, 3,248, 98, 10, 3, 88,100, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248, 98, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 88,100, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,100, 10, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248, 98, 10, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 96, 0, 0, 0,184,101, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,128,106, 10, 3, 48, 98, 10, 3,240, 82, 10, 3, + 72, 85, 10, 3,192, 85, 10, 3, 16, 81, 10, 3, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, + 4, 4, 10, 1, 12, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,105, 10, 3, 64,105, 10, 3,128,102, 10, 3, +224,103, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,102, 10, 3, +200, 0, 0, 0, 1, 0, 0, 0,224,103, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0, 10, 1, 31, 0, 10, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0, +254, 4, 0, 0,237, 1, 0, 0, 11, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 31, 0, + 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,224,103, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128,102, 10, 3, 0, 0, 0, 0, + 0,128,132, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255,120, 67,255,127,246,195, 0, 0, 0, 0,249, 0, 0, 0, + 10, 1, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +248, 0, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 10, 1,237, 1,249, 0,237, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 64,105, 10, 3,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -141,344 +2501,263 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -208, 88,169, 8,199, 0, 0, 0, 1, 0, 0, 0,152, 94,169, 8, 64, 88,169, 8,200,177,226, 2,232,171,226, 2,176,181,226, 2, -128,166,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 15, 15, 32, 4, 84, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,127,172, 8, 96,127,172, 8,184,160,192, 8,224,161,192, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,160,192, 8,200, 0, 0, 0, 1, 0, 0, 0, -224,161,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,132, 68, +128,106, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,224,111, 10, 3,184,101, 10, 3, 88, 84, 10, 3,208, 84, 10, 3,224, 83, 10, 3, +240, 82, 10, 3, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,251, 1, 28, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,110, 10, 3, 8,110, 10, 3, 72,107, 10, 3,168,108, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,107, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, +168,108, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, - 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 32, 4, - 26, 0, 32, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, + 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, + 26, 0,251, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -224,161,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,184,160,192, 8, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, - 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 18, 0, 0, 0, - 57, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, - 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 4, 0, 0, 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +168,108, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72,107, 10, 3, 0, 0, 0, 0, 0, 0,253, 67, 0, 0, 0, 0, + 0, 0, 48, 65, 0, 0, 0, 0, 0, 0,245, 67, 0, 0, 0, 0, 0, 0,129, 67,234, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 1, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, + 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,251, 1, 2, 1,234, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +249, 1, 0, 0,243, 3, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +251, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 96,127,172, 8,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0, 8,110, 10, 3,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,152, 94,169, 8, -199, 0, 0, 0, 1, 0, 0, 0, 40, 95,169, 8,208, 88,169, 8,216,169,226, 2,152,199,226, 2,120,182,226, 2,160,170,226, 2, - 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 47, 2, 0, 0, 3, 3,222, 0,251, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120,126,169, 8,120,126,169, 8, 8,163,192, 8, 48,164,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,163,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 48,164,192, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 94, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, 26, 0,222, 0, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 22, 2, 0, 0, 47, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,164,192, 8, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8,163,192, 8, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, - 0, 0,100, 66, 0, 0,131, 67, 0, 0, 79,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, - 0, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, - 0, 0, 0, 4, 6, 0,222, 0,225, 0,205, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0, -254, 4, 0, 0, 53, 1, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,225, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,252, 0, 0, 0,120,126,169, 8,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,174,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,224,111, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,152,124, 10, 3, +128,106, 10, 3,208, 84, 10, 3, 56, 86, 10, 3,120, 82, 10, 3,224, 83, 10, 3, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, + 29, 1, 0, 0,186, 2, 0, 0, 1, 1,251, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,123, 10, 3, + 56,123, 10, 3,168,112, 10, 3, 40,118, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,168,112, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 8,114, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,128,174,226, 2,223, 0, 0, 0, - 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,176,115,172, 8, 68, 65, 84, 65,156, 0, 0, 0,176,115,172, 8,222, 0, 0, 0, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 88, 79,194, 8, 19, 0, 0, 0, 1, 0, 1, 0, 88, 79,194, 8, 20, 0, 0, 0, - 1, 0, 1, 0, 88, 79,194, 8, 21, 0, 1, 0, 1, 0, 1, 0, 88, 79,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,128,222,172, 8, - 0, 0, 0, 0, 1, 0, 1, 0,160, 94,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,112,172,195, 8, 0, 0, 0, 0, 1, 0, 1, 0, -128,103,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,176, 10,195, 8, 0, 0, 0, 0, 1, 0, 1, 0,112, 99,194, 8, 0, 0, 0, 0, - 1, 0, 1, 0,168, 88,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,144, 90,194, 8, 0, 0, 0, 0, 1, 0, 1, 0, 16, 88,194, 8, - 68, 65, 84, 65, 96, 0, 0, 0, 40, 95,169, 8,199, 0, 0, 0, 1, 0, 0, 0, 72, 96,169, 8,152, 94,169, 8,112,133,174, 8, - 40,133,174, 8,144,168,226, 2,176,181,226, 2, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,186, 2, 0, 0, - 1, 1, 95, 2,102, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,174,192, 8,152,174,192, 8, 88,165,192, 8, -248,169,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,165,192, 8, -200, 0, 0, 0, 1, 0, 0, 0,128,166,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,192, 23, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 95, 2, 26, 0, 95, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, - 31, 4, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 26, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,114, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,104,115, 10, 3, +168,112, 10, 3, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, + 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, + 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,249, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,132, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104,115, 10, 3, +200, 0, 0, 0, 1, 0, 0, 0,200,116, 10, 3, 8,114, 10, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, + 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0, +243, 3, 0, 0, 55, 1, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,200,116, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 40,118, 10, 3,104,115, 10, 3, 0, 0, 0, 0, + 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0, +180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,243, 3, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40,118, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,200,116, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0, +186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,119, 10, 3, 68, 65, 84, 65, 72, 3, 0, 0, +136,119, 10, 3,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 42,240,182, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, + 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63, +143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190, +142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65, +111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62,242,252, 18,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, + 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, + 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, 0,247, 70,188, 0,192, 32,182, 15,232,143,190, +210,186, 10, 62, 44, 83, 32, 63, 0,192, 24, 54,215,104, 25,196,133,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68, +158, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63, +143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62,242,252, 18,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, + 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, + 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65, +214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,138, 93,108, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,123, 10, 3, +160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 88, 25, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, + 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 96, 0, 0, 0,152,124, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,248,129, 10, 3,224,111, 10, 3,168, 79, 10, 3, +104, 83, 10, 3,208, 84, 10, 3, 88, 84, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, + 18, 18,248, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,128, 10, 3, 32,128, 10, 3, 96,125, 10, 3, +192,126, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,125, 10, 3, +200, 0, 0, 0, 1, 0, 0, 0,192,126, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,128,166,192, 8,200, 0, 0, 0, 1, 0, 0, 0,168,167,192, 8, 88,165,192, 8, 0, 0, 0, 0, - 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0, -160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0,193, 1, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 76, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,192,126, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,125, 10, 3, 0, 0, 0, 0, + 0,128,251, 67, 0, 0, 0, 0, 0, 0, 65, 67, 0, 0, 0, 0, 0,128,243, 67, 0, 0, 0, 0, 0, 0,129, 67,231, 1, 0, 0, +248, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +230, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,248, 1, 2, 1,231, 1, 2, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,167,192, 8,200, 0, 0, 0, 1, 0, 0, 0, -208,168,192, 8,128,166,192, 8, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, - 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, -120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -208,168,192, 8,200, 0, 0, 0, 1, 0, 0, 0,248,169,192, 8,168,167,192, 8, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, -147, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, -147, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,148, 3,163, 0,130, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 4, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,169,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,168,192, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 76, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,171,192, 8, 68, 65, 84, 65, 72, 3, 0, 0, 32,171,192, 8,159, 0, 0, 0, - 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,134,144, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, - 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, - 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, - 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, - 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, - 0, 0,128, 63,178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, - 35, 44,185, 62,145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65, -214,211,111, 65, 99,240,191, 62,110,116, 85, 63, 80,185, 70,188, 0, 0, 82,180,206, 44,182,190,198,158, 47, 62, 36,239, 74, 63, - 0, 0, 8,179, 67,108,117,194,183,204,216, 65,104,156, 5,194,212,247,159,192,235, 62,114, 66, 59,254,213,193,157,225, 3, 66, - 55, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, - 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, - 0, 0,128, 63,178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, - 35, 44,185, 62,145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65, -214,211,111, 65,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, - 0, 0, 0, 0,234,108, 69, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0, 32,128, 10, 3,181, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 32, 33, 12, 66, - 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,174,192, 8,160, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0,144, 90,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, - 72, 96,169, 8,199, 0, 0, 0, 1, 0, 0, 0,128,158,169, 8, 40, 95,169, 8,232,171,226, 2,176,193,226, 2, 88,120,174, 8, -112,133,174, 8, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,255, 0, 0, 0, 2, 2,192, 1,171, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 85,175, 8,176, 85,175, 8,192,175,192, 8, 56,179,192, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,175,192, 8,200, 0, 0, 0, 1, 0, 0, 0, -232,176,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, - 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, - 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112,121,116,104,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,248,129, 10, 3,199, 0, 0, 0, + 1, 0, 0, 0, 80,136, 10, 3,152,124, 10, 3, 72, 85, 10, 3,120, 82, 10, 3, 0, 82, 10, 3,192, 85, 10, 3, 0, 0, 0, 0, +245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0,186, 2, 0, 0, 3, 3, 10, 1,174, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128,133, 10, 3,128,133, 10, 3,192,130, 10, 3, 32,132, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,130, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 32,132, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -232,176,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 16,178,192, 8,192,175,192, 8, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,254,194, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, - 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0,145, 0,200, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,216, 0, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, 0,145, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,149, 67, 0, 0,200, 65, 0,128,149, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, 26, 0, 10, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0, 38, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,178,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 56,179,192, 8,232,176,192, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,179,192, 8,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 16,178,192, 8, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, - 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 18, 0, 0, 0, -230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0,111, 18,131, 58, -111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, - 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0,191, 1, 0, 0, -111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 0,145, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,132, 10, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,192,130, 10, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,121, 67, 0, 0, 2,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0, +248, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, + 6, 0, 10, 1,148, 0,249, 0,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, + 39, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -208, 0, 0, 0,176, 85,175, 8,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +252, 0, 0, 0,128,133, 10, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,134, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,224,134, 10, 3,223, 0, 0, 0, 1, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0, 80,135, 10, 3, 68, 65, 84, 65,156, 0, 0, 0, 80,135, 10, 3,222, 0, 0, 0, 13, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 48, 0, 11, 3, 19, 0, 0, 0, 1, 0, 1, 0, 48, 0, 11, 3, 20, 0, 0, 0, 1, 0, 1, 0, + 48, 0, 11, 3, 21, 0, 1, 0, 1, 0, 1, 0, 48, 0, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,240, 22, 11, 3, 0, 0, 0, 0, + 1, 0, 1, 0,152, 29, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,160,112, 12, 3, 0, 0, 0, 0, 1, 0, 1, 0,224, 39, 11, 3, + 0, 0, 0, 0, 1, 0, 1, 0,176,205, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,160, 35, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0, +160, 18, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0, 88, 25, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,208, 17, 11, 3, 68, 65, 84, 65, + 96, 0, 0, 0, 80,136, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248,129, 10, 3,104, 83, 10, 3,136, 81, 10, 3, + 56, 86, 10, 3,208, 84, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 9, 9,248, 1, +158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,139, 10, 3,216,139, 10, 3, 24,137, 10, 3,120,138, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24,137, 10, 3,200, 0, 0, 0, + 1, 0, 0, 0,120,138, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 73, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, + 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, + 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,120,138, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 24,137, 10, 3, 0, 0, 0, 0, 0,224,189, 68, + 0, 0, 0, 0, 0,192, 22, 68,236,140, 21, 68, 20, 51,102, 68,120, 83, 49, 67, 68,214,212, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, + 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, + 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,248, 1,132, 1,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 96,180,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 96,180,192, 8, 24, 1, 0, 0, 1, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,128,158,169, 8,199, 0, 0, 0, 1, 0, 0, 0, -224,165,169, 8, 72, 96,169, 8,176,193,226, 2,120,194,226, 2, 40,133,174, 8, 88,120,174, 8, 0, 0, 0, 0, 0, 0, 0, 0, -191, 1, 0, 0, 1, 1, 0, 0,186, 2, 0, 0, 12, 12,192, 1,186, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32,184,192, 8, 32,184,192, 8,168,180,192, 8,248,182,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,168,180,192, 8,200, 0, 0, 0, 1, 0, 0, 0,208,181,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0,192, 98, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,181,192, 8,200, 0, 0, 0, 1, 0, 0, 0, -248,182,192, 8,168,180,192, 8, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, - 0, 0,199,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,200, 0, -160, 1,200, 0,142, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 27, 1, 0, 0, -186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,160, 1, 0, 0, 2, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -248,182,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,181,192, 8, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194, - 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0,199,195, 0, 0, 0, 0,231, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, -159, 1, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0, -159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0, - 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0,191, 1, 0, 0, 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 32,184,192, 8, 25, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,224,165,169, 8,199, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,128,158,169, 8,152,199,226, 2,144,168,226, 2, 56,165,226, 2,120,182,226, 2, 0, 0, 0, 0, - 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 1, 1,222, 0,138, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240,190,192, 8,240,190,192, 8, 40,185,192, 8, 80,186,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40,185,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 80,186,192, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 64, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,132, 1, 24, 0,132, 1, 24, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0, 49, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,186,192, 8,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 40,185,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, - 49, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,138, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,187,192, 8, 68, 65, 84, 65, - 72, 3, 0, 0,120,187,192, 8,159, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,216,109,100, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, - 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, - 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, - 87,126,162,190,228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0, -110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191, -142,164,206, 63,250,192,142, 63,180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, - 81, 21, 64,191,119, 24,172,191,216, 49, 49, 65,152, 9, 52, 65,231, 70,158, 62, 24,234,167, 62,160,206,159,187, 0, 0,170,180, -243, 26,182,189,252, 74,179, 61,195,111,128, 62, 0, 0,124, 51,211,120, 21,194,144, 5, 2, 66, 10,136,213,193,193,214,159,192, -219, 38, 19, 66,196,173,255,193,158,101,210, 65,173, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, - 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, - 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191, -142,164,206, 63,250,192,142, 63,180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, - 81, 21, 64,191,119, 24,172,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190, - 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 13,133, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0,216,139, 10, 3,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,231, 1, 0, 0,243, 1, 0, 0,122, 1, 0, 0,124, 1, 0, 0, +231, 1, 0, 0,243, 1, 0, 0, 4, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 7, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -240,190,192, 8,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,144, 90,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, - 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,112, 31,255, 2,195, 0, 0, 0, 1, 0, 0, 0,176, 70,255, 2,200,114,255, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,192,192, 8, 32,196,192, 8,104,196,192, 8, 80,202,192, 8,216,169,169, 8, - 0,225,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120,192,192, 8,196, 0, 0, 0, 1, 0, 0, 0,192,192,192, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192,192,192, 8,196, 0, 0, 0, 1, 0, 0, 0, - 8,193,192, 8,120,192,192, 8, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8,193,192, 8, -196, 0, 0, 0, 1, 0, 0, 0, 80,193,192, 8,192,192,192, 8, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 80,193,192, 8,196, 0, 0, 0, 1, 0, 0, 0,152,193,192, 8, 8,193,192, 8, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152,193,192, 8,196, 0, 0, 0, 1, 0, 0, 0,224,193,192, 8, 80,193,192, 8, - 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224,193,192, 8,196, 0, 0, 0, 1, 0, 0, 0, - 40,194,192, 8,152,193,192, 8, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,194,192, 8, -196, 0, 0, 0, 1, 0, 0, 0,112,194,192, 8,224,193,192, 8, 0, 0, 0, 0, 20, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,112,194,192, 8,196, 0, 0, 0, 1, 0, 0, 0,184,194,192, 8, 40,194,192, 8, 0, 0, 0, 0,254, 4, 64, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184,194,192, 8,196, 0, 0, 0, 1, 0, 0, 0, 0,195,192, 8,112,194,192, 8, - 0, 0, 0, 0, 20, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0,195,192, 8,196, 0, 0, 0, 1, 0, 0, 0, - 72,195,192, 8,184,194,192, 8, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,195,192, 8, -196, 0, 0, 0, 1, 0, 0, 0,144,195,192, 8, 0,195,192, 8, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,144,195,192, 8,196, 0, 0, 0, 1, 0, 0, 0,216,195,192, 8, 72,195,192, 8, 0, 0, 0, 0, 0, 2, 20, 1, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216,195,192, 8,196, 0, 0, 0, 1, 0, 0, 0, 32,196,192, 8,144,195,192, 8, - 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32,196,192, 8,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,216,195,192, 8, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,196,192, 8, -197, 0, 0, 0, 1, 0, 0, 0,176,196,192, 8, 0, 0, 0, 0,192,192,192, 8, 8,193,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,176,196,192, 8,197, 0, 0, 0, 1, 0, 0, 0,248,196,192, 8,104,196,192, 8,192,192,192, 8, -152,193,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,196,192, 8,197, 0, 0, 0, 1, 0, 0, 0, - 64,197,192, 8,176,196,192, 8, 8,193,192, 8,224,193,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 64,197,192, 8,197, 0, 0, 0, 1, 0, 0, 0,136,197,192, 8,248,196,192, 8,152,193,192, 8,224,193,192, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136,197,192, 8,197, 0, 0, 0, 1, 0, 0, 0,208,197,192, 8, 64,197,192, 8, - 80,193,192, 8,112,194,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,197,192, 8,197, 0, 0, 0, - 1, 0, 0, 0, 24,198,192, 8,136,197,192, 8, 40,194,192, 8,112,194,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 24,198,192, 8,197, 0, 0, 0, 1, 0, 0, 0, 96,198,192, 8,208,197,192, 8,224,193,192, 8,184,194,192, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,198,192, 8,197, 0, 0, 0, 1, 0, 0, 0,168,198,192, 8, - 24,198,192, 8,152,193,192, 8,184,194,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,198,192, 8, -197, 0, 0, 0, 1, 0, 0, 0,240,198,192, 8, 96,198,192, 8, 40,194,192, 8,184,194,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,240,198,192, 8,197, 0, 0, 0, 1, 0, 0, 0, 56,199,192, 8,168,198,192, 8,224,193,192, 8, -112,194,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,199,192, 8,197, 0, 0, 0, 1, 0, 0, 0, -128,199,192, 8,240,198,192, 8,152,193,192, 8, 0,195,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -128,199,192, 8,197, 0, 0, 0, 1, 0, 0, 0,200,199,192, 8, 56,199,192, 8,184,194,192, 8, 72,195,192, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,199,192, 8,197, 0, 0, 0, 1, 0, 0, 0, 16,200,192, 8,128,199,192, 8, - 0,195,192, 8, 72,195,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 16,200,192, 8,197, 0, 0, 0, - 1, 0, 0, 0, 88,200,192, 8,200,199,192, 8, 0,195,192, 8,144,195,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 88,200,192, 8,197, 0, 0, 0, 1, 0, 0, 0,160,200,192, 8, 16,200,192, 8, 72,195,192, 8,144,195,192, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,160,200,192, 8,197, 0, 0, 0, 1, 0, 0, 0,232,200,192, 8, - 88,200,192, 8,120,192,192, 8,216,195,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232,200,192, 8, -197, 0, 0, 0, 1, 0, 0, 0, 48,201,192, 8,160,200,192, 8,216,195,192, 8, 32,196,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 48,201,192, 8,197, 0, 0, 0, 1, 0, 0, 0,120,201,192, 8,232,200,192, 8, 80,193,192, 8, - 32,196,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,201,192, 8,197, 0, 0, 0, 1, 0, 0, 0, -192,201,192, 8, 48,201,192, 8, 40,194,192, 8, 32,196,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -192,201,192, 8,197, 0, 0, 0, 1, 0, 0, 0, 8,202,192, 8,120,201,192, 8,144,195,192, 8,216,195,192, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,202,192, 8,197, 0, 0, 0, 1, 0, 0, 0, 80,202,192, 8,192,201,192, 8, - 72,195,192, 8, 32,196,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,202,192, 8,197, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 8,202,192, 8,120,192,192, 8, 0,195,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,216,169,169, 8,199, 0, 0, 0, 1, 0, 0, 0, 64,174,169, 8, 0, 0, 0, 0,152,193,192, 8,192,192,192, 8, - 8,193,192, 8,224,193,192, 8, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, - 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 80, 6,193, 8, 80, 6,193, 8,152,202,192, 8,192,203,192, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,202,192, 8,200, 0, 0, 0, - 1, 0, 0, 0,192,203,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, + 80,143, 10, 3,195, 0, 0, 0, 1, 0, 0, 0,200,208, 10, 3,184, 78, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86, + 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72,144, 10, 3,144,147, 10, 3, 8,148, 10, 3, 8,153, 10, 3,136,153, 10, 3,120,195, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 72,144, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,192,144, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,192,144, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 56,145, 10, 3, 72,144, 10, 3, 0, 0, 0, 0, + 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 56,145, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,176,145, 10, 3, +192,144, 10, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,145, 10, 3,196, 0, 0, 0, + 1, 0, 0, 0, 40,146, 10, 3, 56,145, 10, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 40,146, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,160,146, 10, 3,176,145, 10, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,160,146, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 24,147, 10, 3, 40,146, 10, 3, 0, 0, 0, 0, +254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24,147, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,144,147, 10, 3, +160,146, 10, 3, 0, 0, 0, 0,132, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144,147, 10, 3,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 24,147, 10, 3, 0, 0, 0, 0,132, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 8,148, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,136,148, 10, 3, 0, 0, 0, 0,192,144, 10, 3, 56,145, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136,148, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 8,149, 10, 3, 8,148, 10, 3, +192,144, 10, 3, 40,146, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,149, 10, 3,197, 0, 0, 0, + 1, 0, 0, 0,136,149, 10, 3,136,148, 10, 3, 56,145, 10, 3,160,146, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,136,149, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 8,150, 10, 3, 8,149, 10, 3, 40,146, 10, 3,160,146, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,150, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,136,150, 10, 3, +136,149, 10, 3, 40,146, 10, 3, 24,147, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136,150, 10, 3, +197, 0, 0, 0, 1, 0, 0, 0, 8,151, 10, 3, 8,150, 10, 3, 72,144, 10, 3,144,147, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 8,151, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,136,151, 10, 3,136,150, 10, 3, 72,144, 10, 3, + 40,146, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136,151, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, + 8,152, 10, 3, 8,151, 10, 3, 24,147, 10, 3,144,147, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 8,152, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,136,152, 10, 3,136,151, 10, 3,160,146, 10, 3, 24,147, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136,152, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 8,153, 10, 3, 8,152, 10, 3, +176,145, 10, 3,144,147, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,153, 10, 3,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,136,152, 10, 3,176,145, 10, 3,160,146, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,136,153, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 16,157, 10, 3, 0, 0, 0, 0, 40,146, 10, 3,192,144, 10, 3, + 56,145, 10, 3,160,146, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, + 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 48,208, 10, 3, 48,208, 10, 3, 80,154, 10, 3,176,155, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,154, 10, 3,200, 0, 0, 0, + 1, 0, 0, 0,176,155, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, @@ -486,7 +2765,7 @@ char datatoc_startup_blend[]= { 188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,192,203,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152,202,192, 8, 0, 0, 0, 0, 0,240,109, 69, +248, 0, 0, 0,176,155, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80,154, 10, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, @@ -494,204 +2773,40 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 64,174,169, 8,199, 0, 0, 0, 1, 0, 0, 0,160,181,169, 8, -216,169,169, 8, 32,196,192, 8, 40,194,192, 8,112,194,192, 8, 80,193,192, 8, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,234, 0, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16,113,172, 8, - 16,113,172, 8,232,204,192, 8, 16,206,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,232,204,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 16,206,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,116, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0,128,190, 67, 0,192, 25, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 26, 0,234, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,234, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16,157, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,120,195, 10, 3, +136,153, 10, 3, 72,144, 10, 3, 40,146, 10, 3, 24,147, 10, 3,144,147, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, + 0, 0, 0, 0,186, 2, 0, 0, 6, 6,132, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,161, 10, 3, +248,161, 10, 3,216,157, 10, 3,152,160, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,216,157, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 56,159, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 33, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,132, 2, 26, 0,132, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,132, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,206,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -232,204,192, 8, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, 0, 0, 0, 0, - 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, - 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,234, 0, 38, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,159, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,152,160, 10, 3, +216,157, 10, 3, 0, 0, 0, 0, 0, 0, 91, 67, 0, 0, 40,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 74, 67,254, 63, 40,196, + 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,161, 2,203, 0, +161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,161, 2, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 16,113,172, 8, -176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,160, 10, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,159, 10, 3, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, +102,102, 38,190,205,204,148, 63, 51, 51, 13,191,154,153,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1, 0, 0, 0, 0, 0, 0,161, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, +131, 2, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,160,181,169, 8,199, 0, 0, 0, 1, 0, 0, 0,184, 95,169, 8, 64,174,169, 8, - 40,194,192, 8,184,194,192, 8,224,193,192, 8,112,194,192, 8, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, -186, 2, 0, 0, 4, 4,234, 0,122, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,209,192, 8,136,209,192, 8, - 56,207,192, 8, 96,208,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 56,207,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 96,208,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, - 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 4, 0, 0,254, 4, 0, 0,156, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,208,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,207,192, 8, - 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 88, 67, 0,192, 22,196, 0, 0, 0, 0, -217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0, 91, 2,217, 0, 91, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,155, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,136,209,192, 8,165, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,184, 95,169, 8,199, 0, 0, 0, 1, 0, 0, 0,248,220,192, 8,160,181,169, 8,216,195,192, 8,144,195,192, 8, - 72,195,192, 8, 32,196,192, 8, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 1, 1, 19, 2, - 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,219,192, 8,208,219,192, 8,144,210,192, 8, 48,215,192, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144,210,192, 8,200, 0, 0, 0, - 1, 0, 0, 0,184,211,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0,192, 4, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, - 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0, 19, 2, 26, 0, 19, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,184,211,192, 8,200, 0, 0, 0, 1, 0, 0, 0,224,212,192, 8,144,210,192, 8, 0, 0, 0, 0, 0, 0, 15, 67, - 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0,250, 0, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,212,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 8,214,192, 8, -184,211,192, 8, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, - 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,214,192, 8, -200, 0, 0, 0, 1, 0, 0, 0, 48,215,192, 8,224,212,192, 8, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,184,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,180, 0,130, 1,163, 0,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, - 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 48,215,192, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8,214,192, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 19, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88,216,192, 8, 68, 65, 84, 65, 72, 3, 0, 0, 88,216,192, 8,159, 0, 0, 0, 1, 0, 0, 0, - 37,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249,173,116, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0, -221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0, -191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, -223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0, - 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, - 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, - 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, - 80, 25,195, 62,218,249,206, 62, 0,237,196,187, 0, 0, 96,179,234, 2,170,189,191, 98,167, 61, 1,208,111, 62, 0, 0,224, 49, -254,120, 21,194,182, 5, 2, 66, 70,136,213,193,239,214,159,192, 5, 39, 19, 66, 15,174,255,193,217,101,210, 65,219, 40,160, 64, -221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0, -191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, - 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, - 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, -223, 34, 9, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,219,192, 8,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 7, 0,144, 90,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,248,220,192, 8, -199, 0, 0, 0, 1, 0, 0, 0, 0,225,192, 8,184, 95,169, 8, 0,195,192, 8,152,193,192, 8,184,194,192, 8, 72,195,192, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 16, 16, 20, 4,166, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216,223,192, 8,216,223,192, 8,136,221,192, 8,176,222,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136,221,192, 8,200, 0, 0, 0, 1, 0, 0, 0,176,222,192, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,222,192, 8, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136,221,192, 8, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, -110,142,241,195, 55,199,120, 68,240, 80,128,193,136, 2, 4, 68, 3, 4, 0, 0, 20, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, - 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,236, 81,184, 61, 10,215, 19, 64, 10, 0, 0, 0, 0, 0, 3, 0, - 0, 0, 0, 4, 0, 0, 20, 4,140, 1, 3, 4,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,140, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,244, 0, 0, 0,216,223,192, 8,177, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 61,181, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 0,225,192, 8,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -248,220,192, 8,120,192,192, 8, 0,195,192, 8,144,195,192, 8,216,195,192, 8, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, - 0, 0, 0, 0, 19, 1, 0, 0, 6, 6, 0, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,229,192, 8, - 8,229,192, 8,144,225,192, 8,224,227,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,144,225,192, 8,200, 0, 0, 0, 1, 0, 0, 0,184,226,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 2, 26, 0, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,226,192, 8,200, 0, 0, 0, 1, 0, 0, 0,224,227,192, 8, -144,225,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,227,192, 8, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,184,226,192, 8, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0,191, 0, 0,192, 63, 0, 0, 64, 60, 0, 0,125, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,250, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 1, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,250, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 33, 0, 0, 8,229,192, 8,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 33, 0, 0,248,161, 10, 3,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0, 100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -952,1512 +3067,137 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,176, 70,255, 2,195, 0, 0, 0, 1, 0, 0, 0, -112,200,254, 2,112, 31,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 6,193, 8,200, 9,193, 8, 16, 10,193, 8, -216, 14,193, 8, 32, 15,193, 8,160, 80,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 96, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176, 6,193, 8,196, 0, 0, 0, 1, 0, 0, 0, -248, 6,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248, 6,193, 8, -196, 0, 0, 0, 1, 0, 0, 0, 64, 7,193, 8,176, 6,193, 8, 0, 0, 0, 0, 0, 0,202, 3, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 64, 7,193, 8,196, 0, 0, 0, 1, 0, 0, 0,136, 7,193, 8,248, 6,193, 8, 0, 0, 0, 0,136, 6,202, 3, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136, 7,193, 8,196, 0, 0, 0, 1, 0, 0, 0,208, 7,193, 8, 64, 7,193, 8, - 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208, 7,193, 8,196, 0, 0, 0, 1, 0, 0, 0, - 24, 8,193, 8,136, 7,193, 8, 0, 0, 0, 0, 0, 0,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24, 8,193, 8, -196, 0, 0, 0, 1, 0, 0, 0, 96, 8,193, 8,208, 7,193, 8, 0, 0, 0, 0,136, 6,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 96, 8,193, 8,196, 0, 0, 0, 1, 0, 0, 0,168, 8,193, 8, 24, 8,193, 8, 0, 0, 0, 0,108, 5, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168, 8,193, 8,196, 0, 0, 0, 1, 0, 0, 0,240, 8,193, 8, 96, 8,193, 8, - 0, 0, 0, 0,108, 5,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240, 8,193, 8,196, 0, 0, 0, 1, 0, 0, 0, - 56, 9,193, 8,168, 8,193, 8, 0, 0, 0, 0,108, 5, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 56, 9,193, 8, -196, 0, 0, 0, 1, 0, 0, 0,128, 9,193, 8,240, 8,193, 8, 0, 0, 0, 0,136, 6, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,128, 9,193, 8,196, 0, 0, 0, 1, 0, 0, 0,200, 9,193, 8, 56, 9,193, 8, 0, 0, 0, 0, 0, 0, 80, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200, 9,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 9,193, 8, - 0, 0, 0, 0,108, 5, 80, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 16, 10,193, 8,197, 0, 0, 0, 1, 0, 0, 0, - 88, 10,193, 8, 0, 0, 0, 0,248, 6,193, 8, 64, 7,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 88, 10,193, 8,197, 0, 0, 0, 1, 0, 0, 0,160, 10,193, 8, 16, 10,193, 8,248, 6,193, 8,208, 7,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,160, 10,193, 8,197, 0, 0, 0, 1, 0, 0, 0,232, 10,193, 8, 88, 10,193, 8, - 64, 7,193, 8, 24, 8,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 10,193, 8,197, 0, 0, 0, - 1, 0, 0, 0, 48, 11,193, 8,160, 10,193, 8,208, 7,193, 8, 24, 8,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 48, 11,193, 8,197, 0, 0, 0, 1, 0, 0, 0,120, 11,193, 8,232, 10,193, 8,176, 6,193, 8, 96, 8,193, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120, 11,193, 8,197, 0, 0, 0, 1, 0, 0, 0,192, 11,193, 8, - 48, 11,193, 8,136, 7,193, 8, 96, 8,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 11,193, 8, -197, 0, 0, 0, 1, 0, 0, 0, 8, 12,193, 8,120, 11,193, 8,208, 7,193, 8,168, 8,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 8, 12,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 80, 12,193, 8,192, 11,193, 8, 24, 8,193, 8, -168, 8,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 12,193, 8,197, 0, 0, 0, 1, 0, 0, 0, -152, 12,193, 8, 8, 12,193, 8, 96, 8,193, 8,240, 8,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -152, 12,193, 8,197, 0, 0, 0, 1, 0, 0, 0,224, 12,193, 8, 80, 12,193, 8,168, 8,193, 8,240, 8,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224, 12,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 40, 13,193, 8,152, 12,193, 8, - 24, 8,193, 8, 56, 9,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 13,193, 8,197, 0, 0, 0, - 1, 0, 0, 0,112, 13,193, 8,224, 12,193, 8,136, 7,193, 8, 56, 9,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,112, 13,193, 8,197, 0, 0, 0, 1, 0, 0, 0,184, 13,193, 8, 40, 13,193, 8,240, 8,193, 8, 56, 9,193, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184, 13,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 0, 14,193, 8, -112, 13,193, 8,176, 6,193, 8,128, 9,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0, 14,193, 8, -197, 0, 0, 0, 1, 0, 0, 0, 72, 14,193, 8,184, 13,193, 8,208, 7,193, 8,128, 9,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 72, 14,193, 8,197, 0, 0, 0, 1, 0, 0, 0,144, 14,193, 8, 0, 14,193, 8,168, 8,193, 8, -200, 9,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,144, 14,193, 8,197, 0, 0, 0, 1, 0, 0, 0, -216, 14,193, 8, 72, 14,193, 8, 96, 8,193, 8,200, 9,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -216, 14,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144, 14,193, 8,128, 9,193, 8,200, 9,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 32, 15,193, 8,199, 0, 0, 0, 1, 0, 0, 0,160, 22,193, 8, 0, 0, 0, 0, -208, 7,193, 8,248, 6,193, 8, 64, 7,193, 8, 24, 8,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,176, 3, 0, 0, -202, 3, 0, 0, 7, 7,137, 6, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 8, 0,168, 64,227, 2,224,160,193, 8,224,160,193, 8, -176, 15,193, 8,216, 16,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 24,111,173, 8, 56,169,169, 8, 68, 65, 84, 65,248, 0, 0, 0, -176, 15,193, 8,200, 0, 0, 0, 1, 0, 0, 0,216, 16,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,147, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,136, 6, 0, 0,176, 3, 0, 0,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -137, 6, 26, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 65,227, 2, 24,137,188, 8, 24,137,188, 8, 0, 0, 0, 0, 0, 0, 0, 0,112, 89,240, 2,200,144,237, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216, 16,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176, 15,193, 8, - 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, -112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 3, 0, 0,202, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 65,227, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,160, 22,193, 8,199, 0, 0, 0, - 1, 0, 0, 0,216, 72,193, 8, 32, 15,193, 8, 96, 8,193, 8,240, 8,193, 8, 56, 9,193, 8,136, 7,193, 8, 0, 0, 0, 0, -109, 5, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 4, 4, 28, 1, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, -168, 61,227, 2, 48, 67,193, 8,216, 94,186, 8, 48, 23,193, 8, 88, 24,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,152,142,169, 8, -160,186,174, 8, 68, 65, 84, 65,248, 0, 0, 0, 48, 23,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 88, 24,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,160, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,142, 67, 0, 0, 0, 0, 0, 0,248, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 28, 1, 31, 0, 28, 1, 31, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0,229, 2, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 64,227, 2, 40,144,192, 8, 40,144,192, 8, 0, 0, 0, 0, 0, 0, 0, 0, -192,143,237, 2, 32, 34,240, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88, 24,193, 8,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 48, 23,193, 8, 0, 0, 0, 0, 0, 0,142, 67, 0,128, 86,196, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128,133, 67, 0, 64, 57,196, 0, 0, 0, 0, 11, 1, 0, 0, 28, 1, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, - 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, - 6, 0, 28, 1,229, 2, 11, 1,229, 2, 0, 0,192,217,247, 2, 1, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, - 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1,229, 2, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 62,227, 2,168,207,168, 8, - 56, 30,170, 8,136,253,171, 8,192, 65,193, 8,144,161,241, 2, 40,160,241, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,136,253,171, 8,198, 0, 0, 0, 1, 0, 0, 0, 24,252,171, 8, 0, 0, 0, 0,248, 62,227, 2, 0, 0, 0, 0, - 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,220,255, 11, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 24,252,171, 8,198, 0, 0, 0, - 1, 0, 0, 0,168,250,171, 8,136,253,171, 8,248, 44,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, -110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, -110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 11, 1, 61, 0, 0, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,168,250,171, 8,198, 0, 0, 0, 1, 0, 0, 0, 48,168,250, 2, 24,252,171, 8, -168, 46,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 23, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 48,168,250, 2,198, 0, 0, 0, 1, 0, 0, 0,128, 25,193, 8,168,250,171, 8, 88, 48,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101, -110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254, - 11, 1,203, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,128, 25,193, 8,198, 0, 0, 0, 1, 0, 0, 0, -240, 26,193, 8, 48,168,250, 2, 8, 50,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108, -105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108, -105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254, 11, 1, 58, 0, 20, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,240, 26,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 96, 28,193, 8,128, 25,193, 8,184, 51,236, 2, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 70,117,108,108, 32, 83, 97,109,112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 34,254, 11, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 96, 28,193, 8, -198, 0, 0, 0, 1, 0, 0, 0,208, 29,193, 8,240, 26,193, 8,104, 53,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,253, 11, 1,102, 0, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208, 29,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 64, 31,193, 8, - 96, 28,193, 8, 24, 55,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,253, 11, 1,130, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 64, 31,193, 8,198, 0, 0, 0, 1, 0, 0, 0,176, 32,193, 8,208, 29,193, 8,120, 58,236, 2, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,242,252, 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,176, 32,193, 8,198, 0, 0, 0, - 1, 0, 0, 0, 32, 34,193, 8, 64, 31,193, 8, 40, 60,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111, -115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111, -115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115, -105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218,252, 11, 1, 0, 0, 0, 0, 0, 0, - 4, 0, 6, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32, 34,193, 8,198, 0, 0, 0, 1, 0, 0, 0,144, 35,193, 8,176, 32,193, 8, -216, 61,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,252, 11, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 31, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -144, 35,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 0, 37,193, 8, 32, 34,193, 8,136, 63,236, 2, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,252, - 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 0, 37,193, 8,198, 0, 0, 0, 1, 0, 0, 0, -112, 38,193, 8,144, 35,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101, -120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101, -120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41,255, 7, 1,179, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,112, 38,193, 8,198, 0, 0, 0, 1, 0, 0, 0,224, 39,193, 8, 0, 37,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 77, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,102,254, 7, 1,171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,224, 39,193, 8, -198, 0, 0, 0, 1, 0, 0, 0, 80, 41,193, 8,112, 38,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,110,102,108,117,101,110, 99, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,253, 7, 1, 36, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80, 41,193, 8,198, 0, 0, 0, 1, 0, 0, 0,192, 42,193, 8, -224, 39,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114, -111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114, -111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,117,115,116,111,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,253, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,192, 42,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 48, 44,193, 8, 80, 41,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 87,254, 7, 1,186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 48, 44,193, 8,198, 0, 0, 0, - 1, 0, 0, 0,160, 45,193, 8,192, 42,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105, -109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105, -109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,253, 7, 1, 36, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,160, 45,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 16, 47,193, 8, 48, 44,193, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 32, 83, 97,109,112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,252, 7, 1,212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 16, 47,193, 8,198, 0, 0, 0, 1, 0, 0, 0,128, 48,193, 8,160, 45,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103, -101, 32, 77, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, - 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,128, 48,193, 8,198, 0, 0, 0, 1, 0, 0, 0, -240, 49,193, 8, 16, 47,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,108,111,114, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,108,111,114, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,254, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,240, 49,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 96, 51,193, 8,128, 48,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 67,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,161,253, 7, 1,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 96, 51,193, 8, -198, 0, 0, 0, 1, 0, 0, 0,208, 52,193, 8,240, 49,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,119,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,119,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,111,100, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139,253, 7, 1,180, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208, 52,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 64, 54,193, 8, - 96, 51,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 64, 54,193, 8,198, 0, 0, 0, 1, 0, 0, 0,176, 55,193, 8,208, 52,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,123,253, 7, 1,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,176, 55,193, 8,198, 0, 0, 0, - 1, 0, 0, 0, 32, 57,193, 8, 64, 54,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112, -111,105,110,116,100,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112, -111,105,110,116,100,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,105,110,116, 32, 68,101,110,115,105,116, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,253, 7, 1,179, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32, 57,193, 8,198, 0, 0, 0, 1, 0, 0, 0,144, 58,193, 8,176, 55,193, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95, -116,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95, -116,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,253, 7, 1,102, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -144, 58,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 0, 60,193, 8, 32, 57,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77,117,115,103, -114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139,253, - 7, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 0, 60,193, 8,198, 0, 0, 0, 1, 0, 0, 0, -112, 61,193, 8,144, 58,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,114, 98,108, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,114, 98,108, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,253, 7, 1,183, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,112, 61,193, 8,198, 0, 0, 0, 1, 0, 0, 0,224, 62,193, 8, 0, 60,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 77, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,224, 62,193, 8, -198, 0, 0, 0, 1, 0, 0, 0, 80, 64,193, 8,112, 61,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,100,105,115,116,111,114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,100,105,115,116,111,114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,116,111,114,116,101, -100, 32, 78,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211,253, 7, 1,108, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80, 64,193, 8,198, 0, 0, 0, 1, 0, 0, 0,192, 65,193, 8, -224, 62,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,254, 7, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,192, 65,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80, 64,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,183,253, 7, 1,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 48, 67,193, 8,165, 0, 0, 0, - 1, 0, 0, 0,216, 94,186, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,176,209,189, 8,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 56, 68,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 96, 69,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96, 69,193, 8,200, 0, 0, 0, 1, 0, 0, 0,136, 70,193, 8, - 56, 68,193, 8, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, - 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0,149, 3,223, 0, -149, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136, 70,193, 8, -200, 0, 0, 0, 1, 0, 0, 0,176, 71,193, 8, 96, 69,193, 8, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, - 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, - 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,153, 5, 60, 0,153, 5, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0, -136, 6, 0, 0, 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, - 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,176, 71,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136, 70,193, 8, 0, 0, 0, 0, - 0,128,175, 68, 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0,136, 5, 0, 0, -153, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -135, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 2, 2, 0, 0, 2, 0, 3, 3, 2, 0, 0, 4, 6, 0,153, 5, 89, 3,136, 5, 89, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0,216, 94,186, 8,168, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 48, 67,193, 8, 56, 68,193, 8,176, 71,193, 8, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,216, 72,193, 8,199, 0, 0, 0, 1, 0, 0, 0,184, 75,193, 8,160, 22,193, 8,176, 6,193, 8,128, 9,193, 8, -200, 9,193, 8, 96, 8,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 15, 15,108, 5, - 80, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 32,227, 2, 64, 85,171, 8, 64, 85,171, 8,104, 73,193, 8,144, 74,193, 8, - 0, 0, 0, 0, 0, 0, 0, 0,184,225,174, 8,152,209,174, 8, 68, 65, 84, 65,248, 0, 0, 0,104, 73,193, 8,200, 0, 0, 0, - 1, 0, 0, 0,144, 74,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,137, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0,128,173, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, - 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,108, 5, 26, 0,108, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 26, 0, 5, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 33,227, 2, 88,101,186, 8, - 88,101,186, 8, 0, 0, 0, 0, 0, 0, 0, 0, 40,175,237, 2,192,173,237, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,144, 74,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104, 73,193, 8, 0, 0, 64,192, 0, 0,126, 67, - 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, - 18, 0, 0, 0, 53, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, - 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,108, 5, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 26, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,108, 5, 54, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 24, 33,227, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,173,237, 2,112,204,237, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 64, 85,171, 8,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -184, 75,193, 8,199, 0, 0, 0, 1, 0, 0, 0,160, 80,193, 8,216, 72,193, 8,240, 8,193, 8,168, 8,193, 8, 24, 8,193, 8, - 56, 9,193, 8, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, 5, 3, 0, 0,174, 3, 0, 0, 3, 3, 28, 1,170, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120, 30,227, 2,152, 78,193, 8,152, 78,193, 8, 72, 76,193, 8,112, 77,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 56,209,174, 8,112,138,169, 8, 68, 65, 84, 65,248, 0, 0, 0, 72, 76,193, 8,200, 0, 0, 0, 1, 0, 0, 0, -112, 77,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,142, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, - 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 28, 1, - 26, 0, 28, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0,149, 3, 0, 0, -174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 26, 0, 7, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 31,227, 2,240,107,186, 8,240,107,186, 8, - 0, 0, 0, 0, 0, 0, 0, 0,248,203,237, 2, 56,236,238, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -112, 77,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72, 76,193, 8, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128,133, 67, 0, 0,252,194, 0, 0, 0, 0, 11, 1, 0, 0, 28, 1, 0, 0, 18, 0, 0, 0, -143, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0, -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, - 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 28, 1,144, 0, 11, 1,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 5, 0, 0,136, 6, 0, 0, 5, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 28, 1,144, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56, 31,227, 2, 32, 69,174, 8, 32, 69,174, 8, 0, 0, 0, 0, 0, 0, 0, 0,192,235,238, 2,208,234,238, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,152, 78,193, 8,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,189,245, 2, 24,189,245, 2, 64,174,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 64,174,226, 2, -223, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,200, 79,193, 8, 68, 65, 84, 65,168, 0, 0, 0,200, 79,193, 8, -222, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 88, 79,194, 8, 19, 0, 0, 0, 1, 0, 1, 0, 88, 79,194, 8, - 20, 0, 0, 0, 1, 0, 1, 0, 88, 79,194, 8, 21, 0, 1, 0, 1, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 1, 0, 1, 0, -128,222,172, 8, 0, 0, 0, 0, 1, 0, 1, 0,160, 94,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,112,172,195, 8, 0, 0, 0, 0, - 1, 0, 1, 0,128,103,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,176, 10,195, 8, 0, 0, 0, 0, 1, 0, 1, 0,112, 99,194, 8, - 0, 0, 0, 0, 1, 0, 1, 0,168, 88,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,144, 90,194, 8, 0, 0, 0, 0, 1, 0, 1, 0, - 16, 88,194, 8, 21, 0, 0, 0, 1, 0, 1, 0, 88, 79,194, 8, 68, 65, 84, 65, 96, 0, 0, 0,160, 80,193, 8,199, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,184, 75,193, 8,128, 9,193, 8,208, 7,193, 8,168, 8,193, 8,200, 9,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0,107, 5, 0, 0, 81, 0, 0, 0,174, 3, 0, 0, 1, 1,108, 5, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, - 56, 34,227, 2, 32,109,193, 8,144, 81,186, 8, 48, 81,193, 8,128,104,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,192,201,170, 8, -160,177,241, 2, 68, 65, 84, 65,248, 0, 0, 0, 48, 81,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 88, 82,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,173, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,108, 5, 26, 0,108, 5, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 81, 0, 0, 0,106, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 26, 0, 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 41,227, 2, 64,135,188, 8, 64,135,188, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 32,133,239, 2,120,142,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88, 82,193, 8,200, 0, 0, 0, - 1, 0, 0, 0,192,100,193, 8, 48, 81,193, 8, 0, 0, 0, 0, 0, 0, 32, 67, 0, 64, 3,196, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15, 67, 0, 64, 3,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, - 6, 0,160, 0, 13, 2,143, 0, 13, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0, -162, 1, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 13, 2, 10, 0, 5, 0, - 3, 0, 0, 0, 0, 0, 0, 0,160, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 39,227, 2, 24, 49,175, 8, - 24, 49,175, 8,128, 83,193, 8, 80, 99,193, 8, 0,142,248, 2,112,191,241, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,128, 83,193, 8,198, 0, 0, 0, 1, 0, 0, 0,240, 84,193, 8, 0, 0, 0, 0,192,185,242, 2, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 42,254,143, 0,190, 1, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,240, 84,193, 8,198, 0, 0, 0, - 1, 0, 0, 0, 96, 86,193, 8,128, 83,193, 8, 0,206,242, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117,254,143, 0,115, 1, 0, 0, 0, 0, - 0, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 96, 86,193, 8,198, 0, 0, 0, 1, 0, 0, 0,208, 87,193, 8,240, 84,193, 8, -176,207,242, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101, -120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101, -120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,252,143, 0,213, 1, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -208, 87,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 64, 89,193, 8, 96, 86,193, 8, 96,209,242, 2, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,114,111, -107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130,253, -143, 0,195, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 64, 89,193, 8,198, 0, 0, 0, 1, 0, 0, 0, -176, 90,193, 8,208, 87,193, 8, 16,211,242, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, - 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, - 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,253,143, 0,231, 0, 0, 0, 0, 0, 4, 0, 4, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,176, 90,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 32, 92,193, 8, 64, 89,193, 8,192,212,242, 2, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, - 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, - 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 65,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 96,253,143, 0,133, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32, 92,193, 8, -198, 0, 0, 0, 1, 0, 0, 0,144, 93,193, 8,176, 90,193, 8,112,214,242, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,169,253,143, 0, 36, 0, - 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,144, 93,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 0, 95,193, 8, - 32, 92,193, 8, 32,216,242, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109, -109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109, -109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142,253,143, 0,135, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, - 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 0, 95,193, 8,198, 0, 0, 0, 1, 0, 0, 0,112, 96,193, 8,144, 93,193, 8,208,217,242, 2, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,173,253,143, 0, 80, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,112, 96,193, 8,198, 0, 0, 0, - 1, 0, 0, 0,224, 97,193, 8, 0, 95,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,101,105,103,104,116, 32, 84,111,111,108,115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108,255,183, 0,124, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,224, 97,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 80, 99,193, 8,112, 96,193, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97, -105,110,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97, -105,110,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39,253,183, 0,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 80, 99,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224, 97,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,111,106, -101, 99,116, 32, 80, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157,252, -183, 0, 9, 1, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,100,193, 8,200, 0, 0, 0, 1, 0, 0, 0, - 88,103,193, 8, 88, 82,193, 8, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,157,195, 0, 0, 0, 0, 0, 0, 0, 0,227,102, 16, 67, - 66, 6,157,195, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,120,195, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 16,157, 10, 3,144,147, 10, 3, 24,147, 10, 3,160,146, 10, 3,176,145, 10, 3, 0, 0, 0, 0,133, 2, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 1, 1,122, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208,206, 10, 3,208,206, 10, 3, 64,196, 10, 3,192,201, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 64,196, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,160,197, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 30, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +121, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,122, 2, 26, 0,122, 2, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,122, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160,197, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, + 0,199, 10, 3, 64,196, 10, 3, 0, 0, 0, 0, 0, 0, 32, 67, 0, 64, 10,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 64, 10,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, - 55, 1,143, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,107, 0, 0, 0, -161, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 55, 1, 11, 0, 6, 0, 34, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 40,227, 2,120,243,173, 8,120,243,173, 8, -232,101,193, 8,232,101,193, 8,248,190,241, 2,200,140,237, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -232,101,193, 8,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 40,227, 2, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,101,114, - 97,116,111,114, 0,100, 32, 69,120,101, 99,117,116,101, 0,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,255, -144, 0, 16, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,103,193, 8,200, 0, 0, 0, 1, 0, 0, 0, -128,104,193, 8,192,100,193, 8, 0, 0, 0, 0, 0, 0, 52, 67, 0,192,115,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, - 0,192,115,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, -207, 3,163, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0,107, 5, 0, 0,107, 0, 0, 0, -174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 35,227, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -128,104,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88,103,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 0, 0, 0,107, 5, 0, 0,107, 0, 0, 0,174, 3, 0, 0,160, 0, 0, 0,107, 5, 0, 0,107, 0, 0, 0,174, 3, 0, 0, -204, 4, 68, 3, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 34,227, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 74,245, 2, 8, 74,245, 2, 0, 0, 0, 0, -168,105,193, 8, 68, 65, 84, 65, 72, 3, 0, 0,168,105,193, 8,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92,165,205, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,218,205, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,210,111,193, 0, 0,128, 63, 68,239,209, 62, 70,119,105, 63, -192, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,144, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, - 42, 61,228, 62, 0, 0, 0, 0,164, 95, 68, 65,141,120,173,192,225,208,213, 64, 0, 0,128, 63,178,157,229, 62,195, 59, 37,191, -222,160, 81,191,184,158, 81,191,117, 90,127, 63,202, 73,159, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,243, 15,184, 63, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,220,161,108, 65,158,210,111, 65,130,240,191, 62,104,116, 85, 63, - 16,183, 70,188, 0, 0, 0,180, 24, 7,128,190,175,215,246, 61, 76,158, 14, 63, 0, 0, 56, 52,230,117,117,194, 58,213,216, 65, -167,161, 5,194,236,254,159,192,240, 49,114, 66,195,242,213,193,140,218, 3, 66,145, 0,160, 64, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,210,111,193, 0, 0,128, 63,178,157,229, 62,195, 59, 37,191, -222,160, 81,191,184,158, 81,191,117, 90,127, 63,202, 73,159, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,243, 15,184, 63, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,220,161,108, 65,158,210,111, 65, 86, 68,214, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 68,214, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 68,214, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190, -237,203,148,190, 3,236,234,190,158,210,111, 65,203,189,102, 65, 0, 0, 0, 0, 0, 0, 0, 0,184, 44,195, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 30, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 32,109,193, 8,160, 0, 0, 0, 1, 0, 0, 0,152,112,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,144, 90,194, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 8, 24, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, - 0, 64,156, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,110,193, 8,200, 0, 0, 0, 1, 0, 0, 0, -112,111,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 48, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,197, 68, 0, 0,200, 65, - 0,224,197, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, - 26, 0, 48, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, + 41, 2,143, 0, 41, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0,146, 0, 0, 0, +186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 41, 2, 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -112,111,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72,110,193, 8, 0, 0, 0, 0, 0,128,241, 67, 0,128, 90,196, - 0, 0, 0, 0, 0, 0, 0, 0, 0,224,195, 68, 0, 64,111,196, 0, 0, 0, 0, 31, 6, 0, 0, 48, 6, 0, 0, 18, 0, 0, 0, -206, 3, 0, 0, 0, 0, 0, 0, 30, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 30, 6, 0, 0, 18, 0, 0, 0, -206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, - 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 48, 6,207, 3, 31, 6,189, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 6,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,152,112,193, 8,169, 0, 0, 0, 1, 0, 0, 0,248,122,193, 8, 32,109,193, 8, - 72,110,193, 8,112,111,193, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,177,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 8,177,226, 2, -223, 0, 0, 0, 1, 0, 0, 0, 93, 0, 0, 0, 93, 0, 0, 0,200,113,193, 8, 68, 65, 84, 65, 92, 4, 0, 0,200,113,193, 8, -222, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 19, 0, 0, 0, 1, 0, 0, 0, 88, 79,194, 8, - 20, 0, 0, 0, 1, 0, 0, 0, 88, 79,194, 8, 21, 0, 0, 0, 1, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 1, 0, 0, 0, -128,222,172, 8, 0, 0, 0, 0, 1, 0, 0, 0,160, 94,194, 8, 0, 0, 0, 0, 1, 0, 0, 0,112,172,195, 8, 0, 0, 0, 0, - 1, 0, 0, 0,128,103,194, 8, 0, 0, 0, 0, 1, 0, 0, 0,176, 10,195, 8, 0, 0, 0, 0, 1, 0, 0, 0,112, 99,194, 8, - 0, 0, 0, 0, 1, 0, 0, 0,168, 88,194, 8, 0, 0, 0, 0, 1, 0, 0, 0,144, 90,194, 8, 0, 0, 0, 0, 1, 0, 0, 0, - 16, 88,194, 8, 30, 0,255,255, 0, 0, 1, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 31, 0, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 9, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 11, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 31, 0, 12, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 17, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 31, 0, 20, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 25, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 31, 0, 28, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, - 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, - 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, - 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, - 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, - 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, - 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 4, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 7, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 12, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 15, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 20, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 23, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 28, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 31, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,118,193, 8,200, 0, 0, 0, 1, 0, 0, 0,128,119,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,215, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,197, 68, 0, 0,200, 65, 0,224,197, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,119,193, 8,200, 0, 0, 0, - 1, 0, 0, 0,168,120,193, 8, 88,118,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,168,120,193, 8,200, 0, 0, 0, 1, 0, 0, 0,208,121,193, 8,128,119,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 47, 6, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,121,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -168,120,193, 8, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 38,192, 0, 0,102, 64, 0,192,179,191, - 0,224, 25, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 0, 0, 0, 0, 0, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0,248,122,193, 8, -170, 0, 0, 0, 1, 0, 0, 0,144, 81,186, 8,152,112,193, 8, 88,118,193, 8,208,121,193, 8, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 64,156,193, 8,200, 0, 0, 0, 1, 0, 0, 0,104,157,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 51, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104,157,193, 8,200, 0, 0, 0, 1, 0, 0, 0, -144,158,193, 8, 64,156,193, 8, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, - 0, 64,101,196, 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0, -149, 3,223, 0,149, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0, -148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -144,158,193, 8,200, 0, 0, 0, 1, 0, 0, 0,184,159,193, 8,104,157,193, 8, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, - 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, - 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,153, 5, 60, 0,153, 5, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 0, 0, 0,136, 6, 0, 0, 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 5, 60, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,159,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144,158,193, 8, - 0, 0, 0, 0, 0,128,175, 68, 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0, -136, 5, 0, 0,153, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 2, 0, 3, 3, 2, 0, 0, 4, 6, 0,153, 5, 89, 3,136, 5, 89, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0,144, 81,186, 8,168, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,248,122,193, 8, 64,156,193, 8,184,159,193, 8, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, - 83, 78, 0, 0,140, 0, 0, 0,112,200,254, 2,195, 0, 0, 0, 1, 0, 0, 0,224,193,254, 2,176, 70,255, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 82, 71, 97,109,101, 32, 76,111,103,105, 99, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64,161,193, 8,232,164,193, 8, 48,165,193, 8,208,170,193, 8, 24,171,193, 8, 64,194,193, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 64,161,193, 8,196, 0, 0, 0, 1, 0, 0, 0,136,161,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,161,193, 8,196, 0, 0, 0, 1, 0, 0, 0,208,161,193, 8, - 64,161,193, 8, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208,161,193, 8,196, 0, 0, 0, - 1, 0, 0, 0, 24,162,193, 8,136,161,193, 8, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 24,162,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 96,162,193, 8,208,161,193, 8, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 96,162,193, 8,196, 0, 0, 0, 1, 0, 0, 0,168,162,193, 8, 24,162,193, 8, 0, 0, 0, 0, - 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,162,193, 8,196, 0, 0, 0, 1, 0, 0, 0,240,162,193, 8, - 96,162,193, 8, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,162,193, 8,196, 0, 0, 0, - 1, 0, 0, 0, 56,163,193, 8,168,162,193, 8, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 56,163,193, 8,196, 0, 0, 0, 1, 0, 0, 0,128,163,193, 8,240,162,193, 8, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,128,163,193, 8,196, 0, 0, 0, 1, 0, 0, 0,200,163,193, 8, 56,163,193, 8, 0, 0, 0, 0, - 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200,163,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 16,164,193, 8, -128,163,193, 8, 0, 0, 0, 0,254, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 16,164,193, 8,196, 0, 0, 0, - 1, 0, 0, 0, 88,164,193, 8,200,163,193, 8, 0, 0, 0, 0,124, 3, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 88,164,193, 8,196, 0, 0, 0, 1, 0, 0, 0,160,164,193, 8, 16,164,193, 8, 0, 0, 0, 0,124, 3,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,160,164,193, 8,196, 0, 0, 0, 1, 0, 0, 0,232,164,193, 8, 88,164,193, 8, 0, 0, 0, 0, -212, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232,164,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -160,164,193, 8, 0, 0, 0, 0,212, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,165,193, 8,197, 0, 0, 0, - 1, 0, 0, 0,120,165,193, 8, 0, 0, 0, 0,136,161,193, 8,208,161,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,120,165,193, 8,197, 0, 0, 0, 1, 0, 0, 0,192,165,193, 8, 48,165,193, 8,136,161,193, 8, 96,162,193, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192,165,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 8,166,193, 8, -120,165,193, 8,208,161,193, 8,168,162,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,166,193, 8, -197, 0, 0, 0, 1, 0, 0, 0, 80,166,193, 8,192,165,193, 8, 96,162,193, 8,168,162,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 80,166,193, 8,197, 0, 0, 0, 1, 0, 0, 0,152,166,193, 8, 8,166,193, 8, 96,162,193, 8, -240,162,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,166,193, 8,197, 0, 0, 0, 1, 0, 0, 0, -224,166,193, 8, 80,166,193, 8,240,162,193, 8, 56,163,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -224,166,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 40,167,193, 8,152,166,193, 8, 24,162,193, 8,128,163,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,167,193, 8,197, 0, 0, 0, 1, 0, 0, 0,112,167,193, 8,224,166,193, 8, - 56,163,193, 8,128,163,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,167,193, 8,197, 0, 0, 0, - 1, 0, 0, 0,184,167,193, 8, 40,167,193, 8, 64,161,193, 8,240,162,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,184,167,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 0,168,193, 8,112,167,193, 8, 64,161,193, 8,128,163,193, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0,168,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 72,168,193, 8, -184,167,193, 8,168,162,193, 8,200,163,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72,168,193, 8, -197, 0, 0, 0, 1, 0, 0, 0,144,168,193, 8, 0,168,193, 8, 24,162,193, 8,200,163,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,144,168,193, 8,197, 0, 0, 0, 1, 0, 0, 0,216,168,193, 8, 72,168,193, 8, 56,163,193, 8, -200,163,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,168,193, 8,197, 0, 0, 0, 1, 0, 0, 0, - 32,169,193, 8,144,168,193, 8, 16,164,193, 8, 88,164,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 32,169,193, 8,197, 0, 0, 0, 1, 0, 0, 0,104,169,193, 8,216,168,193, 8,168,162,193, 8, 88,164,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,169,193, 8,197, 0, 0, 0, 1, 0, 0, 0,176,169,193, 8, 32,169,193, 8, -200,163,193, 8, 16,164,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,169,193, 8,197, 0, 0, 0, - 1, 0, 0, 0,248,169,193, 8,104,169,193, 8,240,162,193, 8,160,164,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,248,169,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 64,170,193, 8,176,169,193, 8, 16,164,193, 8,160,164,193, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64,170,193, 8,197, 0, 0, 0, 1, 0, 0, 0,136,170,193, 8, -248,169,193, 8, 96,162,193, 8,232,164,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136,170,193, 8, -197, 0, 0, 0, 1, 0, 0, 0,208,170,193, 8, 64,170,193, 8, 88,164,193, 8,232,164,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,208,170,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136,170,193, 8,160,164,193, 8, -232,164,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 24,171,193, 8,199, 0, 0, 0, 1, 0, 0, 0, -168,171,193, 8, 0, 0, 0, 0, 96,162,193, 8,136,161,193, 8,208,161,193, 8,168,162,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, - 80,198,193, 8, 80,198,193, 8,120, 21,193, 8, 80, 20,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,120, 21,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 80, 20,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 20,193, 8,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,120, 21,193, 8, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, - 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, - 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, -214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -168,171,193, 8,199, 0, 0, 0, 1, 0, 0, 0, 64,173,193, 8, 24,171,193, 8,128,163,193, 8, 56,163,193, 8,200,163,193, 8, - 24,162,193, 8, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 4, 4,234, 0, 20, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,172,193, 8, 56,172,193, 8, 40, 19,193, 8, 0, 18,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40, 19,193, 8,200, 0, 0, 0, 1, 0, 0, 0, - 0, 18,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, - 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, - 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, - 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0,245, 0, 0, 0, - 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 0, 18,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 19,193, 8, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, - 0, 0, 0, 0, 0, 0, 0, 0,254,255, 88, 67,254,255,116,195, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0, -244, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, -244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0,245, 0,217, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -234, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 56,172,193, 8,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 64,173,193, 8,199, 0, 0, 0, - 1, 0, 0, 0,184,177,193, 8,168,171,193, 8, 64,161,193, 8,240,162,193, 8, 56,163,193, 8,128,163,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 17, 17, 20, 4, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80,177,193, 8, 80,177,193, 8,208,173,193, 8, 40,176,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,173,193, 8,200, 0, 0, 0, 1, 0, 0, 0,248,174,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,150, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,174,193, 8,200, 0, 0, 0, - 1, 0, 0, 0, 40,176,193, 8,208,173,193, 8, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,122,195, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 75, 67, 0, 0,122,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, - 6, 0,220, 0,250, 0,203, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, - 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,250, 0, 0, 0, 4, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 40,176,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248,174,193, 8, 0, 0, 0, 0, 0, 0,160, 68, - 0, 0, 0, 0, 0, 0,112, 67, 4, 0, 39,195, 0,224,180, 68, 1, 0,224,194, 0, 0,176, 67, 39, 3, 0, 0, 56, 3, 0, 0, - 18, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, - 18, 0, 0, 0,249, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, - 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 56, 3,250, 0, 39, 3,232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,220, 0, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 56, 3,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 52, 0, 0, 0, 80,177,193, 8,178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,184,177,193, 8,199, 0, 0, 0, - 1, 0, 0, 0, 72,183,193, 8, 64,173,193, 8, 16,164,193, 8, 88,164,193, 8,168,162,193, 8,200,163,193, 8, 0, 0, 0, 0, -125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 9, 9,130, 1,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,152,180,193, 8,152,180,193, 8, 72,178,193, 8,112,179,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,178,193, 8,200, 0, 0, 0, 1, 0, 0, 0,112,179,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,209, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,193, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,181, 67, 0, 0,200, 65, 0,128,181, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,130, 1, 26, 0,130, 1, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,179,193, 8,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 72,178,193, 8, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, 0, 0, 0, 0, -131,248, 1, 68, 0, 0, 0, 0,126, 86, 5, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, - 10, 0,130, 1,140, 1,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, - 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1,140, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -124, 2, 0, 0,152,180,193, 8,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 72,183,193, 8,199, 0, 0, 0, 1, 0, 0, 0, - 64,194,193, 8,184,177,193, 8,160,164,193, 8,232,164,193, 8, 88,164,193, 8, 16,164,193, 8, 0, 0, 0, 0,213, 0, 0, 0, -123, 3, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 1, 1,167, 2,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24,193,193, 8, 24,193,193, 8,216,183,193, 8,120,188,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,216,183,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0,185,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 56, 0,192, 41, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,167, 2, 26, 0,167, 2, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0,185,193, 8,200, 0, 0, 0, 1, 0, 0, 0, - 40,186,193, 8,216,183,193, 8, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, -255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, - 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,213, 0, 0, 0, 47, 1, 0, 0, -186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,140, 1, 0, 0, 5, 0, 3, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 40,186,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 80,187,193, 8, 0,185,193, 8, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, - 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, -119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0, 47, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,187,193, 8,200, 0, 0, 0, 1, 0, 0, 0,120,188,193, 8, 40,186,193, 8, - 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 23,196, 0, 0, 0, 0, -163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,112, 2,163, 0, 94, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123, 3, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, + 0,199, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 96,200, 10, 3,160,197, 10, 3, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,242,194, + 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 91, 90,242,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, +119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, +119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +133, 2, 0, 0, 36, 3, 0, 0, 26, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160, 0,120, 0, 0, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,200, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,192,201, 10, 3, 0,199, 10, 3, + 0, 0, 0, 0, 0, 0, 35, 67, 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,255,191,126,196, 0, 0, 0, 0, +163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, 13, 4,163, 0,251, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,188,193, 8,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 80,187,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, - 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2,140, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,189,193, 8, 68, 65, 84, 65, - 72, 3, 0, 0,160,189,193, 8,159, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,126,177,113, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 6, 63,156, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,201, 10, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 96,200, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 3, 0, 0,254, 4, 0, 0, + 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,203, 10, 3, 68, 65, 84, 65, + 72, 3, 0, 0, 32,203, 10, 3,159, 0, 0, 0, 1, 0, 0, 0,193,198,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,160, 84, 89,188, 0, 0, 0, 0, + 52,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, +188,173, 54, 64,136, 95,161,191,147,231,198, 63, 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191, +130, 71,181, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0,101, 98, 82, 64, 0, 25, 95, 64,101, 47,135, 62,134, 86, 22, 63, 32,243, 11,188, 0, 0,160,179, +195, 15,188,190,132, 75, 53, 62,216,125, 81, 63, 0, 0,192,179,115, 77,100,193, 17,173,201, 64,181,148,248,192,202,247,159,192, +233, 74, 87, 65,247, 46,190,192, 88,106,234, 64, 44, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191, +130, 71,181, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0,101, 98, 82, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, - 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 24,193,193, 8,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 25, 95, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0,116, 16, 50, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +208,206, 10, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,144, 90,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 88, 25, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 64,194,193, 8,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72,183,193, 8, -240,162,193, 8, 96,162,193, 8,232,164,193, 8,160,164,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0, -186, 2, 0, 0, 3, 3,212, 0,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,197,193, 8, 32,197,193, 8, -208,194,193, 8,248,195,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -208,194,193, 8,200, 0, 0, 0, 1, 0, 0, 0,248,195,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 83, 67, 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,212, 0, 26, 0,212, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,200,208, 10, 3,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80,143, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105,100,101,111, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,209, 10, 3,224,214, 10, 3, 88,215, 10, 3,216,223, 10, 3, 88,224, 10, 3, + 16,248, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,195,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,194,193, 8, - 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 80, 66, 0, 0,119, 67, 0, 0,189,195, 0, 0, 0, 0, -195, 0, 0, 0,212, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,194, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,212, 0,140, 1,195, 0,122, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0, 32,197,193, 8,169, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200,176,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 68, 65, 84, 65, 12, 0, 0, 0,200,176,226, 2,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,224, 87,171, 8, - 68, 65, 84, 65,156, 0, 0, 0,224, 87,171, 8,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 88, 79,194, 8, - 19, 0, 0, 0, 1, 0, 1, 0, 88, 79,194, 8, 20, 0, 0, 0, 1, 0, 1, 0, 88, 79,194, 8, 21, 0, 1, 0, 1, 0, 1, 0, - 88, 79,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,128,222,172, 8, 0, 0, 0, 0, 1, 0, 1, 0,160, 94,194, 8, 0, 0, 0, 0, - 1, 0, 1, 0,112,172,195, 8, 0, 0, 0, 0, 1, 0, 1, 0,128,103,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,176, 10,195, 8, - 0, 0, 0, 0, 1, 0, 1, 0,112, 99,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,168, 88,194, 8, 0, 0, 0, 0, 1, 0, 1, 0, -144, 90,194, 8, 0, 0, 0, 0, 1, 0, 1, 0, 16, 88,194, 8, 83, 78, 0, 0,140, 0, 0, 0,224,193,254, 2,195, 0, 0, 0, - 1, 0, 0, 0,128,244,193, 8,112,200,254, 2, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116,105,110,103, 0, -103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,198,193, 8,160,202,193, 8, -232,202,193, 8, 24,209,193, 8, 96,209,193, 8,144,238,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,198,193, 8,196, 0, 0, 0, - 1, 0, 0, 0,248,198,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -248,198,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 64,199,193, 8,176,198,193, 8, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 64,199,193, 8,196, 0, 0, 0, 1, 0, 0, 0,136,199,193, 8,248,198,193, 8, 0, 0, 0, 0, -254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,199,193, 8,196, 0, 0, 0, 1, 0, 0, 0,208,199,193, 8, - 64,199,193, 8, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208,199,193, 8,196, 0, 0, 0, - 1, 0, 0, 0, 24,200,193, 8,136,199,193, 8, 0, 0, 0, 0, 0, 0,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 24,200,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 96,200,193, 8,208,199,193, 8, 0, 0, 0, 0,254, 4,187, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 96,200,193, 8,196, 0, 0, 0, 1, 0, 0, 0,168,200,193, 8, 24,200,193, 8, 0, 0, 0, 0, -244, 3,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,200,193, 8,196, 0, 0, 0, 1, 0, 0, 0,240,200,193, 8, - 96,200,193, 8, 0, 0, 0, 0,244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,200,193, 8,196, 0, 0, 0, - 1, 0, 0, 0, 56,201,193, 8,168,200,193, 8, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 56,201,193, 8,196, 0, 0, 0, 1, 0, 0, 0,128,201,193, 8,240,200,193, 8, 0, 0, 0, 0,244, 3, 28, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,128,201,193, 8,196, 0, 0, 0, 1, 0, 0, 0,200,201,193, 8, 56,201,193, 8, 0, 0, 0, 0, -248, 1, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200,201,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 16,202,193, 8, -128,201,193, 8, 0, 0, 0, 0,248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 16,202,193, 8,196, 0, 0, 0, - 1, 0, 0, 0, 88,202,193, 8,200,201,193, 8, 0, 0, 0, 0,244, 3, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 88,202,193, 8,196, 0, 0, 0, 1, 0, 0, 0,160,202,193, 8, 16,202,193, 8, 0, 0, 0, 0,254, 4, 12, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,160,202,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88,202,193, 8, 0, 0, 0, 0, -248, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232,202,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 48,203,193, 8, - 0, 0, 0, 0,248,198,193, 8, 64,199,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,203,193, 8, -197, 0, 0, 0, 1, 0, 0, 0,120,203,193, 8,232,202,193, 8,248,198,193, 8,208,199,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,120,203,193, 8,197, 0, 0, 0, 1, 0, 0, 0,192,203,193, 8, 48,203,193, 8, 64,199,193, 8, - 24,200,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192,203,193, 8,197, 0, 0, 0, 1, 0, 0, 0, - 8,204,193, 8,120,203,193, 8,208,199,193, 8, 24,200,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 8,204,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 80,204,193, 8,192,203,193, 8, 24,200,193, 8, 96,200,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,204,193, 8,197, 0, 0, 0, 1, 0, 0, 0,152,204,193, 8, 8,204,193, 8, -136,199,193, 8,168,200,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,204,193, 8,197, 0, 0, 0, - 1, 0, 0, 0,224,204,193, 8, 80,204,193, 8,176,198,193, 8,240,200,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,224,204,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 40,205,193, 8,152,204,193, 8,208,199,193, 8,240,200,193, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,205,193, 8,197, 0, 0, 0, 1, 0, 0, 0,112,205,193, 8, -224,204,193, 8, 96,200,193, 8, 56,201,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,205,193, 8, -197, 0, 0, 0, 1, 0, 0, 0,184,205,193, 8, 40,205,193, 8,168,200,193, 8, 56,201,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,184,205,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 0,206,193, 8,112,205,193, 8,176,198,193, 8, -128,201,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0,206,193, 8,197, 0, 0, 0, 1, 0, 0, 0, - 72,206,193, 8,184,205,193, 8,168,200,193, 8,128,201,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 72,206,193, 8,197, 0, 0, 0, 1, 0, 0, 0,144,206,193, 8, 0,206,193, 8,240,200,193, 8,200,201,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,144,206,193, 8,197, 0, 0, 0, 1, 0, 0, 0,216,206,193, 8, 72,206,193, 8, - 56,201,193, 8,200,201,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,206,193, 8,197, 0, 0, 0, - 1, 0, 0, 0, 32,207,193, 8,144,206,193, 8,128,201,193, 8,200,201,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 32,207,193, 8,197, 0, 0, 0, 1, 0, 0, 0,104,207,193, 8,216,206,193, 8,168,200,193, 8, 16,202,193, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,207,193, 8,197, 0, 0, 0, 1, 0, 0, 0,176,207,193, 8, - 32,207,193, 8, 96,200,193, 8, 16,202,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,207,193, 8, -197, 0, 0, 0, 1, 0, 0, 0,248,207,193, 8,104,207,193, 8, 24,200,193, 8, 88,202,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,248,207,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 64,208,193, 8,176,207,193, 8,136,199,193, 8, - 88,202,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64,208,193, 8,197, 0, 0, 0, 1, 0, 0, 0, -136,208,193, 8,248,207,193, 8, 16,202,193, 8, 88,202,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -136,208,193, 8,197, 0, 0, 0, 1, 0, 0, 0,208,208,193, 8, 64,208,193, 8,208,199,193, 8,160,202,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,208,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 24,209,193, 8,136,208,193, 8, - 96,200,193, 8,160,202,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,209,193, 8,197, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,208,208,193, 8,200,201,193, 8,160,202,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0, 96,209,193, 8,199, 0, 0, 0, 1, 0, 0, 0, 64,212,193, 8, 0, 0, 0, 0,208,199,193, 8,248,198,193, 8, - 64,199,193, 8, 24,200,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, - 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 32,244,193, 8, 32,244,193, 8,240,209,193, 8, 24,211,193, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,209,193, 8,200, 0, 0, 0, - 1, 0, 0, 0, 24,211,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184,209, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 48,210, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 48,210, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, +168,210, 10, 3,184,209, 10, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,210, 10, 3, +196, 0, 0, 0, 1, 0, 0, 0, 32,211, 10, 3, 48,210, 10, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 32,211, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,152,211, 10, 3,168,210, 10, 3, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152,211, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 16,212, 10, 3, 32,211, 10, 3, + 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 16,212, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, +136,212, 10, 3,152,211, 10, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,212, 10, 3, +196, 0, 0, 0, 1, 0, 0, 0, 0,213, 10, 3, 16,212, 10, 3, 0, 0, 0, 0,254, 4, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 0,213, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,120,213, 10, 3,136,212, 10, 3, 0, 0, 0, 0, 0, 0, 64, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120,213, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,240,213, 10, 3, 0,213, 10, 3, + 0, 0, 0, 0, 52, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,213, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, +104,214, 10, 3,120,213, 10, 3, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,214, 10, 3, +196, 0, 0, 0, 1, 0, 0, 0,224,214, 10, 3,240,213, 10, 3, 0, 0, 0, 0, 52, 2, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,224,214, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104,214, 10, 3, 0, 0, 0, 0,254, 4, 64, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,215, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216,215, 10, 3, 0, 0, 0, 0, + 48,210, 10, 3,168,210, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,215, 10, 3,197, 0, 0, 0, + 1, 0, 0, 0, 88,216, 10, 3, 88,215, 10, 3, 48,210, 10, 3,152,211, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 88,216, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216,216, 10, 3,216,215, 10, 3,168,210, 10, 3, 16,212, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,216, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88,217, 10, 3, + 88,216, 10, 3,152,211, 10, 3, 16,212, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,217, 10, 3, +197, 0, 0, 0, 1, 0, 0, 0,216,217, 10, 3,216,216, 10, 3, 16,212, 10, 3,136,212, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,216,217, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88,218, 10, 3, 88,217, 10, 3,184,209, 10, 3, + 0,213, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,218, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, +216,218, 10, 3,216,217, 10, 3,152,211, 10, 3,120,213, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +216,218, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88,219, 10, 3, 88,218, 10, 3, 0,213, 10, 3,240,213, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,219, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216,219, 10, 3,216,218, 10, 3, +240,213, 10, 3,104,214, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,219, 10, 3,197, 0, 0, 0, + 1, 0, 0, 0, 88,220, 10, 3, 88,219, 10, 3,120,213, 10, 3,104,214, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 88,220, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216,220, 10, 3,216,219, 10, 3,136,212, 10, 3,224,214, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,220, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88,221, 10, 3, + 88,220, 10, 3, 32,211, 10, 3,224,214, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,221, 10, 3, +197, 0, 0, 0, 1, 0, 0, 0,216,221, 10, 3,216,220, 10, 3, 0,213, 10, 3,224,214, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,216,221, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88,222, 10, 3, 88,221, 10, 3,184,209, 10, 3, + 32,211, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,222, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, +216,222, 10, 3,216,221, 10, 3, 16,212, 10, 3,120,213, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +216,222, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88,223, 10, 3, 88,222, 10, 3,136,212, 10, 3,104,214, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,223, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216,223, 10, 3,216,222, 10, 3, +152,211, 10, 3,240,213, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,223, 10, 3,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 88,223, 10, 3,136,212, 10, 3,240,213, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0, 88,224, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,224,227, 10, 3, 0, 0, 0, 0,152,211, 10, 3, 48,210, 10, 3, +168,210, 10, 3, 16,212, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, + 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,152,255, 10, 3,152,255, 10, 3, 32,225, 10, 3,128,226, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,225, 10, 3,200, 0, 0, 0, + 1, 0, 0, 0,128,226, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, @@ -2465,7 +3205,7 @@ char datatoc_startup_blend[]= { 188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 24,211,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240,209,193, 8, 0, 0, 0, 0, 0,240,109, 69, +248, 0, 0, 0,128,226, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32,225, 10, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, @@ -2473,3828 +3213,3088 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 64,212,193, 8,199, 0, 0, 0, 1, 0, 0, 0, 40,216,193, 8, - 96,209,193, 8,168,200,193, 8, 16,202,193, 8, 88,202,193, 8,136,199,193, 8, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 11, 2, 0, 0, 4, 4, 10, 1, 12, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,215,193, 8, - 32,215,193, 8,208,212,193, 8,248,213,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,208,212,193, 8,200, 0, 0, 0, 1, 0, 0, 0,248,213,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, - 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, 31, 0, 10, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0,237, 1, 0, 0, 11, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,213,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -208,212,193, 8, 0, 0, 0, 0, 0,128,132, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255,120, 67,255,127,246,195, - 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 10, 1,237, 1,249, 0, -237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 32,215,193, 8, -165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0, 40,216,193, 8,199, 0, 0, 0, 1, 0, 0, 0, 8,219,193, 8, 64,212,193, 8,128,201,193, 8, -200,201,193, 8, 56,201,193, 8,168,200,193, 8, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, - 18, 18,251, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,170,241, 2,224,170,241, 2,184,216,193, 8, -224,217,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,216,193, 8, -200, 0, 0, 0, 1, 0, 0, 0,224,217,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0, -243, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,224,217,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,184,216,193, 8, 0, 0, 0, 0, - 0, 0,253, 67, 0, 0, 0, 0, 0, 0, 48, 65, 0, 0, 0, 0, 0, 0,245, 67, 0, 0, 0, 0, 0, 0,129, 67,234, 1, 0, 0, -251, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -233, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,251, 1, 2, 1,234, 1, 2, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0,224,170,241, 2,181, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 8,219,193, 8,199, 0, 0, 0, - 1, 0, 0, 0, 0,230,193, 8, 40,216,193, 8,200,201,193, 8,160,202,193, 8, 96,200,193, 8, 56,201,193, 8, 0, 0, 0, 0, -249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 1, 1,251, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,216,228,193, 8,216,228,193, 8,152,219,193, 8, 56,224,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,219,193, 8,200, 0, 0, 0, 1, 0, 0, 0,192,220,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,220,193, 8,200, 0, 0, 0, - 1, 0, 0, 0,232,221,193, 8,152,219,193, 8, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, - 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,249, 1, 0, 0, - 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,132, 1, 0, 0, 5, 0, - 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,232,221,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 16,223,193, 8,192,220,193, 8, 0, 0, 0, 0, 0, 0, 16, 67, - 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,223,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 56,224,193, 8, -232,221,193, 8, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, - 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0, -104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243, 3, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,224,193, 8, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16,223,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0, -243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1,132, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,225,193, 8, - 68, 65, 84, 65, 72, 3, 0, 0, 96,225,193, 8,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 42,240,182, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, - 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, - 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, - 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, - 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62,242,252, 18,191,222,160, 81,191, -184,158, 81,191,117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63,129, 63,228,190, - 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, 0,247, 70,188, - 0,192, 32,182, 15,232,143,190,210,186, 10, 62, 44, 83, 32, 63, 0,192, 24, 54,215,104, 25,196,133,132,135, 67, 37, 9,167,195, -136,252, 71,194, 3, 54, 25, 68,158, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, - 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62,242,252, 18,191,222,160, 81,191, -184,158, 81,191,117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63,129, 63,228,190, - 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, - 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,138, 93,108, 59, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,216,228,193, 8,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,144, 90,194, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 0,230,193, 8,199, 0, 0, 0, 1, 0, 0, 0,128,234,193, 8, - 8,219,193, 8,176,198,193, 8,240,200,193, 8,200,201,193, 8,128,201,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, - 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,248, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,232,193, 8, -224,232,193, 8,144,230,193, 8,184,231,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,144,230,193, 8,200, 0, 0, 0, 1, 0, 0, 0,184,231,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,231,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -144,230,193, 8, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0, 65, 67, 0, 0, 0, 0, 0,128,243, 67, 0, 0, 0, 0, - 0, 0,129, 67,231, 1, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,230, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,248, 1, 2, 1,231, 1, - 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0,224,232,193, 8, -181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,121,116,104,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -128,234,193, 8,199, 0, 0, 0, 1, 0, 0, 0,144,238,193, 8, 0,230,193, 8, 16,202,193, 8, 96,200,193, 8, 24,200,193, 8, - 88,202,193, 8, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0,186, 2, 0, 0, 3, 3, 10, 1,174, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,237,193, 8, 96,237,193, 8, 16,235,193, 8, 56,236,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,235,193, 8,200, 0, 0, 0, 1, 0, 0, 0, - 56,236,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,149, 67, 0, 0,200, 65, - 0,128,149, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, - 26, 0, 10, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0, - 38, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 56,236,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16,235,193, 8, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 67, 0, 0, 2,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, - 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 10, 1,148, 0,249, 0,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -245, 3, 0, 0,254, 4, 0, 0, 39, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 1,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0, 96,237,193, 8,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,200,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 32,200,226, 2, -223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,144, 73,171, 8, 68, 65, 84, 65,156, 0, 0, 0,144, 73,171, 8, -222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 88, 79,194, 8, 19, 0, 0, 0, 1, 0, 1, 0, 88, 79,194, 8, - 20, 0, 0, 0, 1, 0, 1, 0, 88, 79,194, 8, 21, 0, 1, 0, 1, 0, 1, 0, 88, 79,194, 8, 0, 0, 0, 0, 1, 0, 1, 0, -128,222,172, 8, 0, 0, 0, 0, 1, 0, 1, 0,160, 94,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,112,172,195, 8, 0, 0, 0, 0, - 1, 0, 1, 0,128,103,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,176, 10,195, 8, 0, 0, 0, 0, 1, 0, 1, 0,112, 99,194, 8, - 0, 0, 0, 0, 1, 0, 1, 0,168, 88,194, 8, 0, 0, 0, 0, 1, 0, 1, 0,144, 90,194, 8, 0, 0, 0, 0, 1, 0, 1, 0, - 16, 88,194, 8, 68, 65, 84, 65, 96, 0, 0, 0,144,238,193, 8,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128,234,193, 8, -240,200,193, 8,208,199,193, 8,160,202,193, 8,200,201,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0, -186, 2, 0, 0, 9, 9,248, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,241,193, 8,112,241,193, 8, - 32,239,193, 8, 72,240,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 32,239,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 72,240,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 73, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,240,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32,239,193, 8, - 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,236,140, 21, 68, 20, 51,102, 68,120, 83, 49, 67, 68,214,212, 67, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,248, 1,132, 1,248, 1,132, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0,112,241,193, 8,172, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,231, 1, 0, 0,243, 1, 0, 0, -122, 1, 0, 0,124, 1, 0, 0,231, 1, 0, 0,243, 1, 0, 0, 4, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 78, 0, 0,140, 0, 0, 0,128,244,193, 8,195, 0, 0, 0, 1, 0, 0, 0, 32, 46,194, 8,224,193,254, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 82, 85, 86, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64,245,193, 8, 56,247,193, 8,128,247,193, 8, 80,250,193, 8,152,250,193, 8,200, 34,194, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 64,245,193, 8,196, 0, 0, 0, 1, 0, 0, 0,136,245,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,245,193, 8,196, 0, 0, 0, 1, 0, 0, 0,208,245,193, 8, - 64,245,193, 8, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208,245,193, 8,196, 0, 0, 0, - 1, 0, 0, 0, 24,246,193, 8,136,245,193, 8, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 24,246,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 96,246,193, 8,208,245,193, 8, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 96,246,193, 8,196, 0, 0, 0, 1, 0, 0, 0,168,246,193, 8, 24,246,193, 8, 0, 0, 0, 0, - 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,246,193, 8,196, 0, 0, 0, 1, 0, 0, 0,240,246,193, 8, - 96,246,193, 8, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,246,193, 8,196, 0, 0, 0, - 1, 0, 0, 0, 56,247,193, 8,168,246,193, 8, 0, 0, 0, 0,132, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 56,247,193, 8,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240,246,193, 8, 0, 0, 0, 0,132, 2, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,128,247,193, 8,197, 0, 0, 0, 1, 0, 0, 0,200,247,193, 8, 0, 0, 0, 0,136,245,193, 8, -208,245,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,247,193, 8,197, 0, 0, 0, 1, 0, 0, 0, - 16,248,193, 8,128,247,193, 8,136,245,193, 8, 96,246,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 16,248,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 88,248,193, 8,200,247,193, 8,208,245,193, 8,168,246,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,248,193, 8,197, 0, 0, 0, 1, 0, 0, 0,160,248,193, 8, 16,248,193, 8, - 96,246,193, 8,168,246,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,160,248,193, 8,197, 0, 0, 0, - 1, 0, 0, 0,232,248,193, 8, 88,248,193, 8, 96,246,193, 8,240,246,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,232,248,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 48,249,193, 8,160,248,193, 8, 64,245,193, 8, 56,247,193, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,249,193, 8,197, 0, 0, 0, 1, 0, 0, 0,120,249,193, 8, -232,248,193, 8, 64,245,193, 8, 96,246,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,249,193, 8, -197, 0, 0, 0, 1, 0, 0, 0,192,249,193, 8, 48,249,193, 8,240,246,193, 8, 56,247,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,192,249,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 8,250,193, 8,120,249,193, 8,168,246,193, 8, -240,246,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,250,193, 8,197, 0, 0, 0, 1, 0, 0, 0, - 80,250,193, 8,192,249,193, 8, 24,246,193, 8, 56,247,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 80,250,193, 8,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8,250,193, 8, 24,246,193, 8,168,246,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,152,250,193, 8,199, 0, 0, 0, 1, 0, 0, 0,120,253,193, 8, 0, 0, 0, 0, - 96,246,193, 8,136,245,193, 8,208,245,193, 8,168,246,193, 8, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, -214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,192, 45,194, 8,192, 45,194, 8, - 40,251,193, 8, 80,252,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 40,251,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 80,252,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,224,227, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,136,232, 10, 3, + 88,224, 10, 3,184,209, 10, 3, 0,213, 10, 3,224,214, 10, 3, 32,211, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,255, 4, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,231, 10, 3, +104,231, 10, 3,168,228, 10, 3, 8,230, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,168,228, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 8,230, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,230, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +168,228, 10, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, + 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, + 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,255, 4, 38, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0,104,231, 10, 3, +176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,136,232, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 16,240, 10, 3,224,227, 10, 3, + 0,213, 10, 3,240,213, 10, 3,136,212, 10, 3,224,214, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, + 83, 1, 0, 0, 8, 8,255, 4, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,238, 10, 3,208,238, 10, 3, + 80,233, 10, 3,112,237, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 80,233, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,176,234, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 96,191, 68, 0, 0,200, 65, 0, 96,191, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,252,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,251,193, 8, - 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, -112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,234, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 16,236, 10, 3, 80,233, 10, 3, + 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,121,195, 0, 0, 0, 0, +203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,249, 0,203, 0,249, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4, 0, 0,254, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,249, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,120,253,193, 8,199, 0, 0, 0, - 1, 0, 0, 0,200, 34,194, 8,152,250,193, 8, 64,245,193, 8, 96,246,193, 8,240,246,193, 8, 56,247,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 6, 6,132, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128, 1,194, 8,128, 1,194, 8, 8,254,193, 8, 88, 0,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,254,193, 8,200, 0, 0, 0, 1, 0, 0, 0, 48,255,193, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 33, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,236, 10, 3,200, 0, 0, 0, + 1, 0, 0, 0,112,237, 10, 3,176,234, 10, 3, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, + 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,132, 2, 26, 0,132, 2, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,255,193, 8,200, 0, 0, 0, - 1, 0, 0, 0, 88, 0,194, 8, 8,254,193, 8, 0, 0, 0, 0, 0, 0, 91, 67, 0, 0, 40,196, 0, 0, 0, 0, 0, 0, 0, 0, -254,255, 74, 67,254, 63, 40,196, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, - 6, 0,220, 0,161, 2,203, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, - 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,161, 2, 0, 0, 4, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, + 83, 1, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 88, 0,194, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,255,193, 8, 0, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 67,102,102, 38,190,205,204,148, 63, 51, 51, 13,191,154,153,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1, 0, 0, - 0, 0, 0, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 0, 0, 0,112,237, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16,236, 10, 3, 0, 0, 0, 0, 0, 0,122, 67, + 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, + 18, 0, 0, 0,248, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66, +105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,220, 0, 0, 0,131, 2, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,168, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,208,238, 10, 3,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0,128, 1,194, 8,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0, -154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,200, 34,194, 8, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120,253,193, 8, 56,247,193, 8,240,246,193, 8,168,246,193, 8, 24,246,193, 8, - 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 1, 1,122, 2,187, 2, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 44,194, 8,152, 44,194, 8, 88, 35,194, 8,248, 39,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88, 35,194, 8,200, 0, 0, 0, 1, 0, 0, 0,128, 36,194, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 30, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16,240, 10, 3, +199, 0, 0, 0, 1, 0, 0, 0, 16,248, 10, 3,136,232, 10, 3,240,213, 10, 3,152,211, 10, 3,120,213, 10, 3,104,214, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, 2, 2, 52, 2,102, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88,246, 10, 3, 88,246, 10, 3,216,240, 10, 3,248,244, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,240, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 56,242, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 13, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,122, 2, 26, 0,122, 2, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 52, 2, 26, 0, 52, 2, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 36,194, 8, -200, 0, 0, 0, 1, 0, 0, 0,168, 37,194, 8, 88, 35,194, 8, 0, 0, 0, 0, 0, 0, 32, 67, 0, 64, 10,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 10,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,160, 0, 41, 2,143, 0, 41, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, - 36, 3, 0, 0,146, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 41, 2, - 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,242, 10, 3, +200, 0, 0, 0, 1, 0, 0, 0,152,243, 10, 3,216,240, 10, 3, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,157,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, + 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, + 0, 0, 0, 4, 6, 0,217, 0, 76, 1,200, 0, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +216, 0, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 76, 1, + 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,168, 37,194, 8,200, 0, 0, 0, 1, 0, 0, 0,208, 38,194, 8,128, 36,194, 8, 0, 0, 0, 0, - 0, 0, 33, 67, 0, 0,242,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 91, 90,242,194, 0, 0, 0, 0,143, 0, 0, 0, -160, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,120, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0, 26, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 0, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208, 38,194, 8,200, 0, 0, 0, 1, 0, 0, 0, -248, 39,194, 8,168, 37,194, 8, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, -255,191,126,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, - 13, 4,163, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, -186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -248, 39,194, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 38,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,152,243, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,248,244, 10, 3, 56,242, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 37, 3, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 41,194, 8, 68, 65, 84, 65, 72, 3, 0, 0, 32, 41,194, 8,159, 0, 0, 0, 1, 0, 0, 0,193,198,198, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63, -160, 84, 89,188, 0, 0, 0, 0, 52,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, - 43, 61,228, 62, 0, 0, 0, 0,188,173, 54, 64,136, 95,161,191,147,231,198, 63, 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, - 48,180, 81,191,184,158, 81,191,130, 71,181, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188,206,156,122, 63, -138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,101, 98, 82, 64, 0, 25, 95, 64,101, 47,135, 62,134, 86, 22, 63, - 32,243, 11,188, 0, 0,160,179,195, 15,188,190,132, 75, 53, 62,216,125, 81, 63, 0, 0,192,179,115, 77,100,193, 17,173,201, 64, -181,148,248,192,202,247,159,192,233, 74, 87, 65,247, 46,190,192, 88,106,234, 64, 44, 8,160, 64, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, - 48,180, 81,191,184,158, 81,191,130, 71,181, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188,206,156,122, 63, -138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,101, 98, 82, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,244, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,152,243, 10, 3, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, + 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0,111, 18,131, 58,111, 18,131, 58, + 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 91, 1, + 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0, 51, 2, 0, 0,111, 1, 0, 0, +186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190, -237,203,148,190, 3,236,234,190, 0, 25, 95, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0,116, 16, 50, 59, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, + 88,246, 10, 3,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144,247, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,144,247, 10, 3, 24, 1, 0, 0, 1, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16,248, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 16,240, 10, 3,104,214, 10, 3,120,213, 10, 3, 16,212, 10, 3,136,212, 10, 3, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, + 85, 1, 0, 0,186, 2, 0, 0, 8, 8,202, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,254, 10, 3, + 88,254, 10, 3,216,248, 10, 3,248,252, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,216,248, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 56,250, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 15, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 50, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 64, 50, 68, 0, 0,200, 65, 0, 64, 50, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,202, 2, 26, 0,202, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,202, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,152, 44,194, 8,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,144, 90,194, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, - 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, 32, 46,194, 8,195, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,128,244,193, 8, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105,100,101,111, 32, 69,100,105,116,105,110,103, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 46,194, 8,248, 49,194, 8, 64, 50,194, 8, - 8, 55,194, 8, 80, 55,194, 8,192, 72,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224, 46,194, 8,196, 0, 0, 0, 1, 0, 0, 0, - 40, 47,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40, 47,194, 8, -196, 0, 0, 0, 1, 0, 0, 0,112, 47,194, 8,224, 46,194, 8, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,112, 47,194, 8,196, 0, 0, 0, 1, 0, 0, 0,184, 47,194, 8, 40, 47,194, 8, 0, 0, 0, 0,254, 4,214, 2, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184, 47,194, 8,196, 0, 0, 0, 1, 0, 0, 0, 0, 48,194, 8,112, 47,194, 8, - 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 48,194, 8,196, 0, 0, 0, 1, 0, 0, 0, - 72, 48,194, 8,184, 47,194, 8, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72, 48,194, 8, -196, 0, 0, 0, 1, 0, 0, 0,144, 48,194, 8, 0, 48,194, 8, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,144, 48,194, 8,196, 0, 0, 0, 1, 0, 0, 0,216, 48,194, 8, 72, 48,194, 8, 0, 0, 0, 0,254, 4, 84, 1, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216, 48,194, 8,196, 0, 0, 0, 1, 0, 0, 0, 32, 49,194, 8,144, 48,194, 8, - 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 49,194, 8,196, 0, 0, 0, 1, 0, 0, 0, -104, 49,194, 8,216, 48,194, 8, 0, 0, 0, 0, 52, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104, 49,194, 8, -196, 0, 0, 0, 1, 0, 0, 0,176, 49,194, 8, 32, 49,194, 8, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,176, 49,194, 8,196, 0, 0, 0, 1, 0, 0, 0,248, 49,194, 8,104, 49,194, 8, 0, 0, 0, 0, 52, 2, 84, 1, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248, 49,194, 8,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176, 49,194, 8, - 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 50,194, 8,197, 0, 0, 0, 1, 0, 0, 0, -136, 50,194, 8, 0, 0, 0, 0, 40, 47,194, 8,112, 47,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -136, 50,194, 8,197, 0, 0, 0, 1, 0, 0, 0,208, 50,194, 8, 64, 50,194, 8, 40, 47,194, 8, 0, 48,194, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208, 50,194, 8,197, 0, 0, 0, 1, 0, 0, 0, 24, 51,194, 8,136, 50,194, 8, -112, 47,194, 8, 72, 48,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24, 51,194, 8,197, 0, 0, 0, - 1, 0, 0, 0, 96, 51,194, 8,208, 50,194, 8, 0, 48,194, 8, 72, 48,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 96, 51,194, 8,197, 0, 0, 0, 1, 0, 0, 0,168, 51,194, 8, 24, 51,194, 8, 72, 48,194, 8,144, 48,194, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 51,194, 8,197, 0, 0, 0, 1, 0, 0, 0,240, 51,194, 8, - 96, 51,194, 8,224, 46,194, 8,216, 48,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,240, 51,194, 8, -197, 0, 0, 0, 1, 0, 0, 0, 56, 52,194, 8,168, 51,194, 8, 0, 48,194, 8, 32, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 56, 52,194, 8,197, 0, 0, 0, 1, 0, 0, 0,128, 52,194, 8,240, 51,194, 8,216, 48,194, 8, -104, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,128, 52,194, 8,197, 0, 0, 0, 1, 0, 0, 0, -200, 52,194, 8, 56, 52,194, 8,104, 49,194, 8,176, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -200, 52,194, 8,197, 0, 0, 0, 1, 0, 0, 0, 16, 53,194, 8,128, 52,194, 8, 32, 49,194, 8,176, 49,194, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 16, 53,194, 8,197, 0, 0, 0, 1, 0, 0, 0, 88, 53,194, 8,200, 52,194, 8, -144, 48,194, 8,248, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 53,194, 8,197, 0, 0, 0, - 1, 0, 0, 0,160, 53,194, 8, 16, 53,194, 8,184, 47,194, 8,248, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,160, 53,194, 8,197, 0, 0, 0, 1, 0, 0, 0,232, 53,194, 8, 88, 53,194, 8,216, 48,194, 8,248, 49,194, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 53,194, 8,197, 0, 0, 0, 1, 0, 0, 0, 48, 54,194, 8, -160, 53,194, 8,224, 46,194, 8,184, 47,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 54,194, 8, -197, 0, 0, 0, 1, 0, 0, 0,120, 54,194, 8,232, 53,194, 8, 72, 48,194, 8, 32, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,120, 54,194, 8,197, 0, 0, 0, 1, 0, 0, 0,192, 54,194, 8, 48, 54,194, 8,144, 48,194, 8, -176, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 54,194, 8,197, 0, 0, 0, 1, 0, 0, 0, - 8, 55,194, 8,120, 54,194, 8, 0, 48,194, 8,104, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 8, 55,194, 8,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192, 54,194, 8,144, 48,194, 8,104, 49,194, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 80, 55,194, 8,199, 0, 0, 0, 1, 0, 0, 0, 48, 58,194, 8, 0, 0, 0, 0, - 0, 48,194, 8, 40, 47,194, 8,112, 47,194, 8, 72, 48,194, 8, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, -214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,248, 78,194, 8,248, 78,194, 8, -224, 55,194, 8, 8, 57,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -224, 55,194, 8,200, 0, 0, 0, 1, 0, 0, 0, 8, 57,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8, 57,194, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224, 55,194, 8, - 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, -112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 48, 58,194, 8,199, 0, 0, 0, - 1, 0, 0, 0, 16, 61,194, 8, 80, 55,194, 8,224, 46,194, 8,216, 48,194, 8,248, 49,194, 8,184, 47,194, 8, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,255, 4, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240, 70,171, 8,240, 70,171, 8,192, 58,194, 8,232, 59,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192, 58,194, 8,200, 0, 0, 0, 1, 0, 0, 0,232, 59,194, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232, 59,194, 8,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,192, 58,194, 8, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192, -246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, - 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, - 8, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, - 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 38, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -188, 0, 0, 0,240, 70,171, 8,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,250, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,152,251, 10, 3, +216,248, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16, 61,194, 8,199, 0, 0, 0, 1, 0, 0, 0, - 72, 67,194, 8, 48, 58,194, 8,216, 48,194, 8,104, 49,194, 8,144, 48,194, 8,248, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 0, 0, 65, 0, 0, 0, 83, 1, 0, 0, 8, 8,255, 4, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64, 66,194, 8, 64, 66,194, 8,160, 61,194, 8, 24, 65,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,160, 61,194, 8,200, 0, 0, 0, 1, 0, 0, 0,200, 62,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 64, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 96,191, 68, 0, 0,200, 65, 0, 96,191, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 62,194, 8,200, 0, 0, 0, 1, 0, 0, 0, -240, 63,194, 8,160, 61,194, 8, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, - 0, 0,121,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0, -249, 0,203, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4, 0, 0,254, 4, 0, 0, 91, 0, 0, 0, - 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,249, 0, 0, 0, 4, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -240, 63,194, 8,200, 0, 0, 0, 1, 0, 0, 0, 24, 65,194, 8,200, 62,194, 8, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, - 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 34, 4, 0, 0, 83, 1, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24, 65,194, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240, 63,194, 8, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0, 34, 4, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, - 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 64, 66,194, 8,166, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0, 72, 67,194, 8,199, 0, 0, 0, 1, 0, 0, 0,192, 72,194, 8, 16, 61,194, 8,104, 49,194, 8, 0, 48,194, 8, - 32, 49,194, 8,176, 49,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, 2, 2, 52, 2, -102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 75,174, 8,112, 75,174, 8,216, 67,194, 8, 80, 71,194, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216, 67,194, 8,200, 0, 0, 0, - 1, 0, 0, 0, 0, 69,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 13, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, - 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0, 52, 2, 26, 0, 52, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, - 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 0, 69,194, 8,200, 0, 0, 0, 1, 0, 0, 0, 40, 70,194, 8,216, 67,194, 8, 0, 0, 0, 0, 0, 0, 72, 67, - 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,157,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, - 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, - 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0, 76, 1,200, 0, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,217, 0, 76, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40, 70,194, 8,200, 0, 0, 0, 1, 0, 0, 0, 80, 71,194, 8, - 0, 69,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 71,194, 8, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 70,194, 8, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, - 18, 0, 0, 0, 90, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, -111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0, - 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 1, 76, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,251, 10, 3, +200, 0, 0, 0, 1, 0, 0, 0,248,252, 10, 3, 56,250, 10, 3, 0, 0,112,195, 0, 0,112, 67, 0, 0, 7,195, 0, 0, 7, 67, +105, 42,145,196,105, 42,145, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 75, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 4, 0, 0,202, 2, 76, 1,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0, +254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 76, 1, + 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,248,252, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152,251, 10, 3, 0, 0, 0, 0, + 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, + 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, +201, 2, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, + 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,208, 0, 0, 0,112, 75,174, 8,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 88,254, 10, 3,166, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120, 72,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120, 72,194, 8, 24, 1, 0, 0, 1, 0, 0, 0, 88, 79,194, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,192, 72,194, 8,199, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 72, 67,194, 8,176, 49,194, 8, 32, 49,194, 8, 72, 48,194, 8,144, 48,194, 8, 0, 0, 0, 0, - 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, 8, 8,202, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240, 77,194, 8,240, 77,194, 8, 80, 73,194, 8,200, 76,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 73,194, 8,200, 0, 0, 0, 1, 0, 0, 0,120, 74,194, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0,192, 15, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 50, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 64, 50, 68, 0, 0,200, 65, 0, 64, 50, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,202, 2, 26, 0,202, 2, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120, 74,194, 8,200, 0, 0, 0, - 1, 0, 0, 0,160, 75,194, 8, 80, 73,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0, -111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,160, 75,194, 8,200, 0, 0, 0, 1, 0, 0, 0,200, 76,194, 8,120, 74,194, 8, 0, 0,112,195, 0, 0,112, 67, - 0, 0, 7,195, 0, 0, 7, 67,105, 42,145,196,105, 42,145, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, - 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 4, 0, 0,202, 2, 76, 1,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,202, 2, 76, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 76,194, 8,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -160, 75,194, 8, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, - 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, - 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,202, 2, 76, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,240, 77,194, 8, -166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 67, 0, 0,120, 5, 0, 0, 88, 79,194, 8,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 67, 83, 99,101,110,101, 0,116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,104, 98,173, 8, 0, 0, 0, 0,144, 90,194, 8,128,222,172, 8, 0, 0, 0, 0, 0, 0, 0, 0,152,133,239, 2, -160, 0,241, 2,152,133,239, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85,194, 8, 8,142,235, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, - 0, 0, 1, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, - 32, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 50, 0,141, 0,128, 7, 56, 4, 8, 0, 8, 0, 0, 0, 24, 0, 17, 0, - 0, 0, 0, 0, 90, 0, 1, 0, 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 8, 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 90,240, 2,120, 90,240, 2, - 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 47,116,109,112, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 5, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 16, 0, 0, 0,128, 63, 0, 0,128, 63, -173, 2, 95, 0,154,153,217, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 76, 69, 78, 68, 69, 82, 95, 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63,102,166,171, 67, 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,165,241, 2, 0, 0, 0, 0, 0, 0, 0, 0,248,208,244, 2, 1, 0, 0, 0, - 1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 32, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 5, 0, 60, 0, 5, 0, - 1, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4, -205,204,204, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,104, 98,173, 8, 16, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94,173, 8, 0, 94,173, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0, 0, 94,173, 8, 16, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,110,101,116,119,111,114,107, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 94,173, 8,128, 94,173, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,128, 94,173, 8, 16, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,101,114,118,101,114, 95, 97,100,100,114,101,115,115, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,199,226, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,224,199,226, 2, 0, 0, 0, 0, 1, 0, 0, 0, - 91,100,101,102, 97,117,108,116, 93, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0,152,133,239, 2,133, 0, 0, 0, 1, 0, 0, 0, - 32,130,239, 2, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,102, 2,162, 1,160, 94,194, 8, 68, 65, 84, 65, - 28, 0, 0, 0, 32,130,239, 2,133, 0, 0, 0, 1, 0, 0, 0,160, 0,241, 2,152,133,239, 2, 1, 0, 0, 0, 2, 0, 0, 0, - 0, 4, 0, 0, 25, 3,180, 2,112, 99,194, 8, 68, 65, 84, 65, 28, 0, 0, 0,160, 0,241, 2,133, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 32,130,239, 2, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,135, 0,246, 1,144, 90,194, 8, 68, 65, 84, 65, -144, 1, 0, 0, 0, 85,194, 8,153, 0, 0, 0, 1, 0, 0, 0,192, 86,194, 8, 32, 87,194, 8,128, 87,194, 8, 0, 0,128, 63, - 1, 0, 1, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, - 32, 0, 32, 0, 32, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,192,165,226, 2, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 80, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, 50, 0, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, 50, 0, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 10,215, 35, 60,205,204,204, 61, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0,250, 0,205,204,204, 61,205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, 72,225,122, 63,205,204,204, 61, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 44, 0, 0, 0,192, 86,194, 8,152, 0, 0, 0, 1, 0, 0, 0, 88, 86,240, 2, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 28, 0, 0, 0, 88, 86,240, 2, 0, 0, 0, 0, 1, 0, 0, 0, 40,240,195, 8, 48,179,195, 8, 0, 34,196, 8, -176,244,195, 8,192,185,195, 8,152,235,195, 8,224,203,195, 8, 68, 65, 84, 65, 44, 0, 0, 0, 32, 87,194, 8,152, 0, 0, 0, - 1, 0, 0, 0,168, 86,240, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0,168, 86,240, 2, 0, 0, 0, 0, - 1, 0, 0, 0, 40,240,195, 8, 48,179,195, 8, 0, 34,196, 8,176,244,195, 8,192,185,195, 8,152,235,195, 8,224,203,195, 8, - 68, 65, 84, 65, 96, 0, 0, 0,128, 87,194, 8,151, 0, 0, 0, 1, 0, 0, 0,216,200,239, 2, 5, 0, 0, 0, 17, 0, 0, 0, -144,152,244, 2,255,100,100,128, 1, 0, 0, 0,129, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,202, 51,179, 66, - 46,217,131, 65,231,171,106, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 68, 0, 0, 0,216,200,239, 2, - 0, 0, 0, 0, 1, 0, 0, 0,120,182,195, 8, 72,190,195, 8, 88,199,195, 8,240,212,195, 8,120,217,195, 8, 88, 11,196, 8, -104, 20,196, 8,240, 24,196, 8,136, 38,196, 8, 0,222,195, 8,136,226,195, 8, 16,231,195, 8, 56,249,195, 8,192,253,195, 8, - 72, 2,196, 8,208, 6,196, 8, 16, 43,196, 8, 68, 65, 84, 65, 16, 0, 0, 0,192,165,226, 2, 0, 0, 0, 0, 1, 0, 0, 0, -104,208,195, 8,120, 29,196, 8,208,194,195, 8,224, 15,196, 8, 68, 65, 84, 65, 72, 0, 0, 0,120, 90,240, 2,139, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 76, 97,121,101,114, 0,114, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 67, 65, 0, 0,104, 0, 0, 0, 16, 88,194, 8, 29, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, - 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63, -205,204,204, 61, 0, 0,200, 66, 0, 0, 12, 66,161, 14,234, 64, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0,108, 1, 0, 0,168, 88,194, 8, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63,247,255,239, 65, 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 8, 77,255, 2, - 2, 0, 0, 0, 46, 26,128, 63, 25, 4,240, 65, 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64, 11, 3, 0, 1, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,111, 18,131, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,192,140,248, 2, 68, 65, 84, 65, 16, 1, 0, 0, 8, 77,255, 2, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,243, 4, 53,191, -242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63, 72, 90,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 90,194, 8, 81, 1, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -192,140,248, 2, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0,120, 1, 0, 0,128,222,172, 8,132, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, 99, 80, 61,114, 99, 80, 61,114, 99, 80, 61, 0, 0, 0, 0,199, 54, 36, 60,199, 54, 36, 60,199, 54, 36, 60, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0,128, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,160, 64, 0, 0,200, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 0, 0,128, 63,205,204, 76, 61, 0, 0, 5, 0, 0, 0, 0, 0, 10,215,163, 59, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 60,172, 8, 68, 65, 84, 65, 32, 0, 0, 0, -120, 60,172, 8, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0,144, 90,194, 8,121, 0, 0, 0, 1, 0, 0, 0, -160, 94,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, - 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 88,194, 8, 0, 0, 0, 0, - 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, - 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,222,149, 47, 63, 53, 70, 58, 63,222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, - 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,149, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, - 78,255,170, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,125,103,133, 51,176,219,194,178, 0, 0, 0, 0,190, 32, 66, 51, 1, 0,128, 63, -168,200,153, 51, 0, 0, 0, 0, 32,206, 18,179,126,126,149, 50, 1, 0,128, 63, 0, 0, 0, 0,241,251,133, 52,172,182, 27,180, -174,236,252, 51, 0, 0,128, 63, 0, 0,128, 63,157,190,215, 49,167,170, 4, 52, 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, - 33, 69, 15, 51, 0, 0, 0,128, 73,254, 67, 51,243, 97,106, 49, 0, 0,128, 63, 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, - 0, 0,128, 53, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63, -187,225, 16, 63, 0, 0,128, 63,205,204,204, 62,237, 54, 32, 63, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, -220, 3, 0, 0,160, 94,194, 8,121, 0, 0, 0, 1, 0, 0, 0,112, 99,194, 8,144, 90,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 79, 66, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 0, 0,120, 5, 0, 0, + 48, 0, 11, 3,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99, +101,110,101, 0,116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 6, 11, 3, + 0, 0, 0, 0, 88, 25, 11, 3,240, 22, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,144, 8, 11, 3,144, 9, 11, 3,144, 8, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,240,187, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112,172,195, 8, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 10, 11, 3,192,250,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,142,170, 8,104,222,255, 2, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,222,149, 47, 63, 52, 70, 58, 63, -179, 56, 49,188, 0, 0, 0,128, 86,126,162,190,227,251,159, 62, 56, 53,101, 63, 0, 0, 0,128, 7,165, 39, 63,149, 84, 28,191, - 50,247,227, 62, 0, 0, 0,128,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, 79, 66, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, - 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, +250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 6, 0, 50, 0,141, 0,128, 7, 56, 4, 8, 0, 8, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, 90, 0, 1, 0, + 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 11, 3, 16, 16, 11, 3, 0, 0, 1, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 5, 0, 2, 0, 1, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 98, 97, 99,107, 98,117, +102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,116,109,112, 92, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 5, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 16, 0, 0, 0,128, 63, 0, 0,128, 63,173, 2, 95, 0,154,153,217, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, + 68, 69, 82, 95, 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, + 0, 0,128, 63,102,166,171, 67, 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,160, 16, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 88,127, 12, 3, 1, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, + 0, 0, 0, 0, 32, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 5, 0, 60, 0, 5, 0, 1, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0, +180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4,205,204,204, 61, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0, 16, 6, 11, 3, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 6, 11, 3,192, 6, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,192, 6, 11, 3, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0,110,101,116,119,111,114,107, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 7, 11, 3,112, 7, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,112, 7, 11, 3, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,115,101,114,118,101,114, 95, 97,100,100,114,101,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 8, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 10, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 32, 8, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, 91,100,101,102, 97,117,108,116, + 93, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0,144, 8, 11, 3,133, 0, 0, 0, 1, 0, 0, 0, 16, 9, 11, 3, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,102, 2,162, 1,152, 29, 11, 3, 68, 65, 84, 65, 28, 0, 0, 0, 16, 9, 11, 3, +133, 0, 0, 0, 1, 0, 0, 0,144, 9, 11, 3,144, 8, 11, 3, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 25, 3,180, 2, +160, 35, 11, 3, 68, 65, 84, 65, 28, 0, 0, 0,144, 9, 11, 3,133, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 9, 11, 3, + 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,135, 0,246, 1, 88, 25, 11, 3, 68, 65, 84, 65,144, 1, 0, 0, 16, 10, 11, 3, +153, 0, 0, 0, 1, 0, 0, 0, 8, 12, 11, 3, 24, 13, 11, 3, 40, 14, 11, 3, 0, 0,128, 63, 1, 0, 1, 0,205,204, 76, 63, + 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, 32, 0, 32, 0, 32, 0, 1, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152, 15, 11, 3, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 2, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, + 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, + 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, + 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, + 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 10,215, 35, 60,205,204,204, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 0,205,204,204, 61, +205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, 72,225,122, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 44, 0, 0, 0, + 8, 12, 11, 3,152, 0, 0, 0, 1, 0, 0, 0,152, 12, 11, 3, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, + 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0, +152, 12, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0,176,198, 12, 3, 48,124, 12, 3,136, 0, 71, 3,232,203, 12, 3, 16,136, 12, 3, +120,193, 12, 3,240,156, 12, 3, 68, 65, 84, 65, 44, 0, 0, 0, 24, 13, 11, 3,152, 0, 0, 0, 1, 0, 0, 0,168, 13, 11, 3, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0,168, 13, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0,176,198, 12, 3, + 48,124, 12, 3,136, 0, 71, 3,232,203, 12, 3, 16,136, 12, 3,120,193, 12, 3,240,156, 12, 3, 68, 65, 84, 65, 96, 0, 0, 0, + 40, 14, 11, 3,151, 0, 0, 0, 1, 0, 0, 0,240, 14, 11, 3, 5, 0, 0, 0, 17, 0, 0, 0,176,178, 88, 3,255,100,100,128, + 1, 0, 0, 0,129, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,128,130,169, 66,134, 78,144, 65, 74,254,199,188, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 68, 0, 0, 0,240, 14, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, +216,130, 12, 3, 72,141, 12, 3,184,151, 12, 3, 96,167, 12, 3,152,172, 12, 3, 0,230, 12, 3,112,240, 12, 3,168,245, 12, 3, +192, 5, 71, 3,208,177, 12, 3, 8,183, 12, 3, 64,188, 12, 3, 32,209, 12, 3, 88,214, 12, 3,144,219, 12, 3,200,224, 12, 3, +248, 10, 71, 3, 68, 65, 84, 65, 16, 0, 0, 0,152, 15, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, 40,162, 12, 3,224,250, 12, 3, +128,146, 12, 3, 56,235, 12, 3, 68, 65, 84, 65, 72, 0, 0, 0, 16, 16, 11, 3,139, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82,101,110,100,101,114, 76, 97,121,101,114, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 67, 65, 0, 0,104, 0, 0, 0,208, 17, 11, 3, 29, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63,205,204,204, 61, 0, 0,200, 66, + 0, 0, 12, 66,161, 14,234, 64, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 65, 0, 0,108, 1, 0, 0,160, 18, 11, 3, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 76, 65, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,247,255,239, 65, + 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,112, 20, 11, 3, 2, 0, 0, 0, 46, 26,128, 63, + 25, 4,240, 65, 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 11, 3, 0, 1, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +111, 18,131, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 22, 11, 3, + 68, 65, 84, 65, 16, 1, 0, 0,112, 20, 11, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63,242, 4, 53,191, +243, 4, 53, 63,232, 21, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 21, 11, 3, 81, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 22, 11, 3, 19, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 87, 79, 0, 0,120, 1, 0, 0,240, 22, 11, 3,132, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114, 99, 80, 61,114, 99, 80, 61, +114, 99, 80, 61, 0, 0, 0, 0,199, 54, 36, 60,199, 54, 36, 60,199, 54, 36, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, +205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0,128, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 64, + 0, 0,200, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, + 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 61, + 0, 0, 5, 0, 0, 0, 0, 0, 10,215,163, 59, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 24, 11, 3, 68, 65, 84, 65, 32, 0, 0, 0,208, 24, 11, 3, 19, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0, 88, 25, 11, 3,121, 0, 0, 0, 1, 0, 0, 0,152, 29, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 17, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, + 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, + 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +222,149, 47, 63, 53, 70, 58, 63,222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, + 7,165, 39, 63,149, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63,125,103,133, 51,176,219,194,178, 0, 0, 0, 0,190, 32, 66, 51, 1, 0,128, 63,168,200,153, 51, 0, 0, 0, 0, + 32,206, 18,179,126,126,149, 50, 1, 0,128, 63, 0, 0, 0, 0,241,251,133, 52,172,182, 27,180,174,236,252, 51, 0, 0,128, 63, + 0, 0,128, 63,157,190,215, 49,167,170, 4, 52, 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, 33, 69, 15, 51, 0, 0, 0,128, + 73,254, 67, 51,243, 97,106, 49, 0, 0,128, 63, 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, 0, 0,128, 53, 0, 0,128, 63, + 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,187,225, 16, 63, 0, 0,128, 63, +205,204,204, 62,237, 54, 32, 63, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, + 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -176, 98,194, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -232,198,254, 2, 40,208,189, 8, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, 8,142,170, 8, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,104,222,255, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -144, 0, 0, 0,176, 98,194, 8,124, 0, 0, 0, 1, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,205,204, 76, 62, 10,215,163, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, - 79, 66, 0, 0,220, 3, 0, 0,112, 99,194, 8,121, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,160, 94,194, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 88,194, 8, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, - 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,229,123, 38, 63, 87, 43, 98, 61,229,229,238, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54,236,148,190, - 25,134,116, 63,236, 13, 98,189, 0, 0, 0, 0,221,102, 69,191, 57,174, 76,190, 34,194, 26, 63, 0, 0, 0, 0, 37,255, 16, 63, -241,161, 95, 62,164,111, 75, 63, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 35,233,134, 49,251,110, 17,179, 0, 0, 0, 0, 49,158,141, 50, 1, 0,128, 63,126,214,237, 50, 0, 0, 0, 0,155,248, 28,178, -199,139, 96,177,254,255,127, 63, 0, 0, 0, 0, 80,136,159,178,192, 4,158,178,209,114,143,179, 0, 0,128, 63, 53,236,148,190, -222,102, 69,191, 37,255, 16, 63, 0, 0, 0,128, 24,134,116, 63, 57,174, 76,190,240,161, 95, 62, 0, 0, 0,128,235, 13, 98,189, - 34,194, 26, 63,166,111, 75, 63, 0, 0, 0,128,208, 19, 13, 63,234, 65,102,190, 10, 10,231,192, 0, 0,128, 63, 1, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 68, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62, -229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0,160, 2, 0, 0,128,103,194, 8, 44, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, 0, 0, 8, 0, - 1, 0, 50, 0,205,204, 76, 62, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, - 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, 0, 0,128, 63, - 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 4, 0, 67, 0, 64, 3, 67, 0, 64, 3, - 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61, - 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,104,202,254, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64, 16,172, 8, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,111,148, 26, 63,111,148, 26, 63,111,148, 26, 63,205,204, 76, 61,205,204,204, 61,102,102,166, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,104,202,254, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0,176, 10,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 32, 0, 0, 0, 64, 16,172, 8, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, - 96, 0, 0, 0, 1, 0, 1, 0, 49, 0, 49, 0, 80,106,194, 8,128,122,194, 8, 68, 65, 84, 65, 0, 16, 0, 0, 80,106,194, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0,152, 29, 11, 3, +121, 0, 0, 0, 1, 0, 0, 0,160, 35, 11, 3, 88, 25, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112, +104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0,128,122,194, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0, - 48, 1, 0, 0,176, 10,195, 8, 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 7, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,228,171, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 8,228,171, 8, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, - 96, 0, 0, 0, 0, 0, 1, 0, 14, 0, 13, 0, 16, 12,195, 8, 64, 28,195, 8, 68, 65, 84, 65, 0, 16, 0, 0, 16, 12,195, 8, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 68, 65, 84, 65, 0,144, 0, 0, 64, 28,195, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0, - 40, 1, 0, 0,112,172,195, 8, 54, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 77, 69, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,223,170, 8, -136,178,195, 8, 48,201,254, 2, 0, 0, 0, 0,200,173,195, 8, 64,176,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,203,254, 2, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184,174,195, 8, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,177,195, 8, 2, 0, 0, 0, 5, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, - 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 67, 0, 0, 0, 30, 0, 6, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, -208,223,170, 8, 0, 0, 0, 0, 1, 0, 0, 0,128,103,194, 8, 68, 65, 84, 65, 84, 1, 0, 0,160,203,254, 2, 88, 1, 0, 0, - 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,200,173,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, -200,173,195, 8, 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, - 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191,230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191, -253,255,127,191, 0, 0,128,191, 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, - 26,182,230, 73, 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, - 1, 0, 0, 0,245,255,127, 63, 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191, -250,255,127,191, 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, - 26,182,230, 73,230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0,184,174,195, 8, 88, 1, 0, 0, 5, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64,176,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0, 64,176,195, 8, - 57, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 35, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, - 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65, 84, 1, 0, 0, - 0,177,195, 8, 88, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,178,195, 8, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,201,254, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,120, 0, 0, 0,136,178,195, 8, 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, - 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, 68, 65, 84, 65, 8, 1, 0, 0, 48,201,254, 2, 67, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 26, 71, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160,112, 12, 3, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 33, 11, 3, 64, 34, 11, 3, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,222,149, 47, 63, 52, 70, 58, 63,179, 56, 49,188, 0, 0, 0,128, + 86,126,162,190,227,251,159, 62, 56, 53,101, 63, 0, 0, 0,128, 7,165, 39, 63,149, 84, 28,191, 50,247,227, 62, 0, 0, 0,128, +110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, + 0, 0, 68, 0, 79, 66, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, + 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 64, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 34, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 15,243, 2,136,246, 88, 3, + 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,216, 33, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 4, 0, 0, 0, 64, 34, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0,168, 34, 11, 3, +124, 0, 0, 0, 1, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +205,204,204, 61,205,204, 76, 62, 10,215,163, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0, +160, 35, 11, 3,121, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152, 29, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97, +109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,160, 18, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229,123, 38, 63, + 87, 43, 98, 61,229,229,238, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54,236,148,190, 25,134,116, 63,236, 13, 98,189, + 0, 0, 0, 0,221,102, 69,191, 57,174, 76,190, 34,194, 26, 63, 0, 0, 0, 0, 37,255, 16, 63,241,161, 95, 62,164,111, 75, 63, + 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 35,233,134, 49,251,110, 17,179, + 0, 0, 0, 0, 49,158,141, 50, 1, 0,128, 63,126,214,237, 50, 0, 0, 0, 0,155,248, 28,178,199,139, 96,177,254,255,127, 63, + 0, 0, 0, 0, 80,136,159,178,192, 4,158,178,209,114,143,179, 0, 0,128, 63, 53,236,148,190,222,102, 69,191, 37,255, 16, 63, + 0, 0, 0,128, 24,134,116, 63, 57,174, 76,190,240,161, 95, 62, 0, 0, 0,128,235, 13, 98,189, 34,194, 26, 63,166,111, 75, 63, + 0, 0, 0,128,208, 19, 13, 63,234, 65,102,190, 10, 10,231,192, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 5, 0, 1, 0, 0, 0, 68, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, + 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0, +143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0,160, 2, 0, 0,224, 39, 11, 3, 44, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63, +205,204, 76, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +205,204, 76, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 50, 0,205,204, 76, 62, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 18, 0, 10,215,163, 59, + 10,215,163, 59, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 4, 0, 67, 0, 64, 3, 67, 0, 64, 3, 1, 0, 4, 0, 12, 0, 4, 0, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61, 0, 0, 0, 63,205,204,204, 61, +205,204,204, 61, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63,232, 42, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 44, 11, 3, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +111,148, 26, 63,111,148, 26, 63,111,148, 26, 63,205,204, 76, 61,205,204,204, 61,102,102,166, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 8, 1, 0, 0,232, 42, 11, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,205, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0, + 88, 44, 11, 3, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 1, 0, 1, 0, + 49, 0, 49, 0,224, 44, 11, 3, 72, 61, 11, 3, 68, 65, 84, 65, 0, 16, 0, 0,224, 44, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 0,144, 0, 0, 72, 61, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0, 48, 1, 0, 0,176,205, 11, 3, + 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 84,101,120, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 62, 0, 0,160, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +205,204,204, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 72,207, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 72,207, 11, 3, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, + 14, 0, 13, 0,208,207, 11, 3, 56,224, 11, 3, 68, 65, 84, 65, 0, 16, 0, 0,208,207, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 68, 65, 84, 65, 0,144, 0, 0, 56,224, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0, 40, 1, 0, 0,160,112, 12, 3, + 54, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 67,117, 98,101, 0,112, +104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,114, 12, 3,224,121, 12, 3,192,122, 12, 3, + 0, 0, 0, 0, 80,116, 12, 3, 48,119, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,152,114, 12, 3, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +120,117, 12, 3, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,120, 12, 3, + 2, 0, 0, 0, 5, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, 0, 0, 0, 0, 4, 0,128, 63, + 4, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 30, 0, 6, 0, + 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, 48,114, 12, 3, 0, 0, 0, 0, + 1, 0, 0, 0,224, 39, 11, 3, 68, 65, 84, 65, 84, 1, 0, 0,152,114, 12, 3, 88, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,116, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, 80,116, 12, 3, 60, 0, 0, 0, + 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, 1, 0, 0, 0, 0, 0,128, 63, + 0, 0,128,191, 0, 0,128,191,230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191,253,255,127,191, 0, 0,128,191, + 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, 26,182,255,127, + 1, 0, 0, 0, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, 1, 0, 0, 0,245,255,127, 63, + 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191,250,255,127,191, 0, 0,128, 63, + 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73,230, 73,255,127, + 1, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0,120,117, 12, 3, 88, 1, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,119, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0, 48,119, 12, 3, 57, 0, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, + 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65, 84, 1, 0, 0, 40,120, 12, 3, 88, 1, 0, 0, + 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,224,121, 12, 3, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192,122, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,120, 0, 0, 0, +224,121, 12, 3, 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, + 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, + 6, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 2, 68, 65, 84, 65, 8, 1, 0, 0,192,122, 12, 3, 67, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 48,179,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,120,182,195, 8, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 16, 41,255, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 66, 82, 0, 0,196, 2, 0, 0, 48,124, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0,216,130, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,200,128, 12, 3, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6302,10 +6302,53 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,124,179,195, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, +124,124, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,200,128, 12, 3, + 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 64,130, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, + 64,130, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, + 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, +196, 2, 0, 0,216,130, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, 16,136, 12, 3, 48,124, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 66,108,111, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 23, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0,134, 12, 3, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 32,243,242, 2, 1, 0, 0, 0, 0, 0, 0, 0,248, 60,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 36,131, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -6314,21 +6357,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 16, 41,255, 2, 83, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 0,134, 12, 3, 83, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 24,182,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,120,135, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 24,182,195, 8, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, -120,182,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,192,185,195, 8, 48,179,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108, -111, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 23, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,224, 30,251, 2, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,120,135, 12, 3, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, + 16,136, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, 72,141, 12, 3,216,130, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108, +117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 56,139, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6337,177 +6380,136 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 98,108,111, 98, 46,112,110,103, 0, 46,112,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,196,182,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 92,136, 12, 3, 32, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,224, 30,251, 2, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186, 96,185,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 56,139, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,176,140, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,176,140, 12, 3, 81, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, + 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 72,141, 12, 3, + 87, 1, 0, 0, 1, 0, 0, 0,128,146, 12, 3, 16,136, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, 97,121, 0, 48, + 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 24, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,112,144, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 72, 26,104, 3, + 2, 0, 0, 0, 0, 0, 0, 0,248, 62,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, + 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,148,141, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,112,144, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186,232,145, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,232,145, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,128,146, 12, 3, 87, 1, 0, 0, + 1, 0, 0, 0,184,151, 12, 3, 72,141, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,149, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 96,185,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,192,185,195, 8, 87, 1, 0, 0, 1, 0, 0, 0, 72,190,195, 8, -120,182,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,168,188,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,204,146, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,168,149, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, + 14,215,126,191, 46,189,194, 61, 32,151, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 12,186,195, 8, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 32,151, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,184,151, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, +240,156, 12, 3,128,146, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,114,101, 97,115,101, 0, 48, 48, 49, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 25, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0,224,154, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,168,188,195, 8, 83, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,232,189,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,232,189,195, 8, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, - 72,190,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,208,194,195, 8,192,185,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, - 97,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 24, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 48,193,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 99,108, 97,121, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,148,190,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 48,193,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,112,194,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,112,194,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,208,194,195, 8, 87, 1, 0, 0, 1, 0, 0, 0, 88,199,195, 8, - 72,190,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,184,197,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 28,195,195, 8, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,184,197,195, 8, 83, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,248,198,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,248,198,195, 8, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, - 88,199,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,224,203,195, 8,208,194,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,114, -101, 97,115,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 25, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 64,202,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 99,114,101, 97,115,101, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,168, 69,106, 3, 3, 0, 0, 0, 0, 0, 0, 0, +200, 79, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6518,7 +6520,7 @@ char datatoc_startup_blend[]= { 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,164,199,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 4,152, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6527,21 +6529,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 64,202,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,224,154, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,228, 97,175,190, 50,131,112, 63,218,243,127,191, - 10,183,157,188,128,203,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10,183,157,188, 88,156, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,128,203,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 88,156, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215, 35, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,224,203,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,104,208,195, 8, - 88,199,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, 0, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,240,156, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, 40,162, 12, 3, +184,151, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, 0, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,200,206,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24,160, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -6557,84 +6559,128 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 44,204,195, 8, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 8, 1, 0, 0, 60,157, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, + 16, 1, 0, 0, 24,160, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, +144,161, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0,144,161, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 40,162, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, 96,167, 12, 3,240,156, 12, 3, + 75,247,105, 0, 0, 0, 0, 0, 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, + 80,165, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,200,206,195, 8, 83, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 8,208,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8,208,195, 8, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, -104,208,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,240,212,195, 8,224,203,195, 8, 75,247,105, 0, 0, 0, 0, 0, 66, 82, 68,114, - 97,119, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 80,211,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, + 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, + 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, + 8, 1, 0, 0,116,162, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, + 80,165, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, + 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,200,166, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,180,208,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,200,166, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, +215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 0, 0,196, 2, 0, 0, 96,167, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0,152,172, 12, 3, 40,162, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 70,105,108,108, 47, 68,101,101,112,101,110, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, + 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,136,170, 12, 3, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 80,211,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,144,212,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63,232,227,103, 3, 5, 0, 0, 0, 0, 0, 0, 0,152,232, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,144,212,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,240,212,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,120,217,195, 8, -104,208,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,105,108,108, 47, 68,101,101,112,101,110, 0, 48, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,216,215,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, + 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, +172,167, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,102,105,108,108, 46,112,110,103, 0,110,103, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,136,170, 12, 3, + 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 0,172, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, + 0,172, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, + 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, +196, 2, 0, 0,152,172, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0,208,177, 12, 3, 96,167, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 70,108, 97,116,116,101,110, 47, 67,111,110,116,114, 97,115,116, 0, 48, 48, 49, 0, 0, 2, 0, 0, 3, 27, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,192,175, 12, 3, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 75,104, 3, 6, 0, 0, 0, 0, 0, 0, 0, 0, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6644,8 +6690,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, - 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 60,213,195, 8, + 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,228,172, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -6654,21 +6700,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,216,215,195, 8, 83, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,192,175, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 24,217,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 56,177, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 24,217,195, 8, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,177, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, -120,217,195, 8, 87, 1, 0, 0, 1, 0, 0, 0, 0,222,195, 8,240,212,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,108, - 97,116,116,101,110, 47, 67,111,110,116,114, 97,115,116, 0, 48, 48, 49, 0, 0, 2, 0, 0, 3, 27, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 96,220,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, +208,177, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, 8,183, 12, 3,152,172, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, + 97, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 28, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,248,180, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6677,176 +6723,135 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,102,108, 97,116,116,101,110, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88,236,105, 3, 7, 0, 0, 0, 0, 0, 0, 0,248, 31, 91, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,196,217,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, + 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 28,178, 12, 3, 32, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 96,220,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,160,221,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,248,180, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, +224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,112,182, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,160,221,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 0,222,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,136,226,195, 8, -120,217,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, 97, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 28, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,232,224,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,112,182, 12, 3, 81, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63, +143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 8,183, 12, 3, + 87, 1, 0, 0, 1, 0, 0, 0, 64,188, 12, 3,208,177, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 73,110,102,108, 97,116, +101, 47, 68,101,102,108, 97,116,101, 0, 48, 48, 49, 0, 0, 0, 2, 0, 0, 3, 29, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 48,186, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 56, 32,106, 3, + 8, 0, 0, 0, 0, 0, 0, 0, 24,252,101, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, + 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0, 84,183, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,103,114, 97, 98, 46,112,110,103, 0,110,103, 0, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 48,186, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186,168,187, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,168,187, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 64,188, 12, 3, 87, 1, 0, 0, + 1, 0, 0, 0,120,193, 12, 3, 8,183, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 30, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,104,191, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, - 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 76,222,195, 8, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,232,224,195, 8, 83, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 40,226,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 40,212,103, 3, 9, 0, 0, 0, + 0, 0, 0, 0,136, 87, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40,226,195, 8, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, -136,226,195, 8, 87, 1, 0, 0, 1, 0, 0, 0, 16,231,195, 8, 0,222,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 73,110, -102,108, 97,116,101, 47, 68,101,102,108, 97,116,101, 0, 48, 48, 49, 0, 0, 0, 2, 0, 0, 3, 29, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,112,229,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,140,188, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,105,110,102,108, 97,116,101, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,104,191, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186, +224,255,127,191,114, 97,255,186,224,192, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, - 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0,212,226,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,112,229,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,176,230,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,176,230,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 16,231,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,152,235,195, 8, -136,226,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 30, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,248,233,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,108, 97,121,101,114, 46,112,110,103, 0,110,103, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, - 20,174,199, 62, 20,174,199, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 92,231,195, 8, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,248,233,195, 8, 83, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 56,235,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,235,195, 8, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, -152,235,195, 8, 87, 1, 0, 0, 1, 0, 0, 0, 40,240,195, 8, 16,231,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105, -103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,128,238,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,224,192, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,120,193, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, +176,198, 12, 3, 64,188, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105,103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0,160,196, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6858,7 +6863,7 @@ char datatoc_startup_blend[]= { 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,228,235,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,196,193, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6867,21 +6872,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,128,238,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,160,196, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61,192,239,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 46,189,194, 61, 24,198, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,192,239,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 24,198, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 40,240,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,176,244,195, 8, -152,235,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,176,198, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0,232,203, 12, 3, +120,193, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 16,243,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,216,201, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -6897,84 +6902,128 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,116,240,195, 8, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 8, 1, 0, 0,252,198, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, + 16, 1, 0, 0,216,201, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, + 80,203, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 80,203, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,232,203, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, 32,209, 12, 3,176,198, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117,108,116,105,112,108,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, + 16,207, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 16,243,195, 8, 83, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 80,244,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 80,244,195, 8, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, -176,244,195, 8, 87, 1, 0, 0, 1, 0, 0, 0, 56,249,195, 8, 40,240,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117, -108,116,105,112,108,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,152,247,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, + 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 8, 1, 0, 0, 52,204, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, + 16,207, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, + 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,136,208, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,252,244,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,136,208, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 0, 0,196, 2, 0, 0, 32,209, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, 88,214, 12, 3,232,203, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 78,117,100,103,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, + 31, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 72,212, 12, 3, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,152,247,195, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61,216,248,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63,112, 12, 91, 3, 10, 0, 0, 0, 0, 0, 0, 0, 56, 91, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,216,248,195, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 56,249,195, 8, 87, 1, 0, 0, 1, 0, 0, 0,192,253,195, 8, -176,244,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 78,117,100,103,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 31, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 32,252,195, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, + 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, +108,209, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,110,117,100,103,101, 46,112,110,103, 0,110,103, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 72,212, 12, 3, + 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,192,213, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, +192,213, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, + 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, +196, 2, 0, 0, 88,214, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0,144,219, 12, 3, 32,209, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 80,105,110, 99,104, 47, 77, 97,103,110,105,102,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 2, 0, 0, 3, 32, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,128,217, 12, 3, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,200,166,101, 3, 11, 0, 0, 0, 0, 0, 0, 0,232, 94, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6984,8 +7033,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, - 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,132,249,195, 8, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, + 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0,164,214, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -6994,21 +7043,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 32,252,195, 8, 83, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,128,217, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 96,253,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,248,218, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 96,253,195, 8, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,248,218, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, -192,253,195, 8, 87, 1, 0, 0, 1, 0, 0, 0, 72, 2,196, 8, 56,249,195, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,105, -110, 99,104, 47, 77, 97,103,110,105,102,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 2, 0, 0, 3, 32, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168, 0,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, +144,219, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0,200,224, 12, 3, 88,214, 12, 3, 9,186,107, 0, 0, 0, 0, 0, 66, 82, 80,111, +108,105,115,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 33, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,184,222, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -7017,176 +7066,135 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,112,105,110, 99,104, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 75,104, 3, 6, 0, 0, 0, 0, 0, 0, 0,216,208,101, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, - 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0, 12,254,195, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 9, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, + 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,220,219, 12, 3, 32, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,168, 0,196, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,232, 1,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,184,222, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, +224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 48,224, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,232, 1,196, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 72, 2,196, 8, 87, 1, 0, 0, 1, 0, 0, 0,208, 6,196, 8, -192,253,195, 8, 9,186,107, 0, 0, 0, 0, 0, 66, 82, 80,111,108,105,115,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 33, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 48, 5,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 48,224, 12, 3, 81, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63, +143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,200,224, 12, 3, + 87, 1, 0, 0, 1, 0, 0, 0, 0,230, 12, 3,144,219, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83, 99,114, 97,112,101, + 47, 80,101, 97,107,115, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 34, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,240,227, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,168,220,105, 3, + 12, 0, 0, 0, 0, 0, 0, 0,136,212,101, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, + 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 20,225, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,102,108, 97,116,116,101,110, 46,112,110,103, 0, -110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,240,227, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186,104,229, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,104,229, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 0,230, 12, 3, 87, 1, 0, 0, + 1, 0, 0, 0, 56,235, 12, 3,200,224, 12, 3,164, 25,110, 0, 0, 0, 0, 0, 66, 82, 83, 99,117,108,112,116, 68,114, 97,119, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 22, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 40,233, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 9, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, - 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,148, 2,196, 8, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 48, 5,196, 8, 83, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,112, 6,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,144,101,104, 3, 4, 0, 0, 0, + 0, 0, 0, 0, 64, 17, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,112, 6,196, 8, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, -208, 6,196, 8, 87, 1, 0, 0, 1, 0, 0, 0, 88, 11,196, 8, 72, 2,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83, 99, -114, 97,112,101, 47, 80,101, 97,107,115, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 34, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,184, 9,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0,230,104, 64, 63, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, + 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 76,230, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,115, 99,114, 97,112,101, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 40,233, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186, +224,255,127,191,114, 97,255,186,160,234, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 28, 7,196, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,184, 9,196, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,248, 10,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,248, 10,196, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, 88, 11,196, 8, 87, 1, 0, 0, 1, 0, 0, 0,224, 15,196, 8, -208, 6,196, 8,164, 25,110, 0, 0, 0, 0, 0, 66, 82, 83, 99,117,108,112,116, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 22, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 64, 14,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,100,114, 97,119, 46,112,110,103, 0,110,103, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0,230,104, 64, 63, 0, 0,128, 63, - 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,164, 11,196, 8, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 64, 14,196, 8, 83, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,128, 15,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,128, 15,196, 8, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, -224, 15,196, 8, 87, 1, 0, 0, 1, 0, 0, 0,104, 20,196, 8, 88, 11,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109, -101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,200, 18,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,160,234, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 56,235, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, +112,240, 12, 3, 0,230, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0, 96,238, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7198,7 +7206,7 @@ char datatoc_startup_blend[]= { 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 44, 16,196, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,132,235, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -7207,21 +7215,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,200, 18,196, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 96,238, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61, 8, 20,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 46,189,194, 61,216,239, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8, 20,196, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,216,239, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,104, 20,196, 8, 87, 1, 0, 0, 1, 0, 0, 0,240, 24,196, 8, -224, 15,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,112,240, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0,168,245, 12, 3, + 56,235, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 35, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 80, 23,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,152,243, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -7229,92 +7237,136 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,115,109,111,111,116,104, 46,112,110,103, 0,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,248,176,101, 3, 13, 0, 0, 0, 0, 0, 0, 0, 88, 24,114, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 5, 0, 0, 0, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, - 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,180, 20,196, 8, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, + 0, 0, 0, 0, 5, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 8, 1, 0, 0,188,240, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, + 16, 1, 0, 0,152,243, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, + 16,245, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 16,245, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,168,245, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0,224,250, 12, 3,112,240, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,110, 97,107,101, 32, 72,111,111,107, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 3, 36, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +208,248, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 80, 23,196, 8, 83, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,144, 24,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,200, 4, 90, 3, 14, 0, 0, 0, 0, 0, 0, 0, 96,253,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,144, 24,196, 8, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, -240, 24,196, 8, 87, 1, 0, 0, 1, 0, 0, 0,120, 29,196, 8,104, 20,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,110, - 97,107,101, 32, 72,111,111,107, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 36, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,216, 27,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, + 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 8, 1, 0, 0,244,245, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,115,110, 97,107,101, 95,104,111,111,107, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, +208,248, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, + 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 72,250, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 60, 25,196, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0, 72,250, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, +215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 0, 0,196, 2, 0, 0,224,250, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0,136, 0, 71, 3,168,245, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 8,254, 12, 3, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,216, 27,196, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186, 24, 29,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 24, 29,196, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,120, 29,196, 8, 87, 1, 0, 0, 1, 0, 0, 0, 0, 34,196, 8, -240, 24,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 96, 32,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, + 44,251, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 8,254, 12, 3, + 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,128,255, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, +128,255, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, + 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, +196, 2, 0, 0,136, 0, 71, 3, 87, 1, 0, 0, 1, 0, 0, 0,192, 5, 71, 3,224,250, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 83,117, 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,176, 3, 71, 3, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7324,8 +7376,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,196, 29,196, 8, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,212, 0, 71, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -7334,21 +7386,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 96, 32,196, 8, 83, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,176, 3, 71, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,160, 33,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 40, 5, 71, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,160, 33,196, 8, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40, 5, 71, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, - 0, 34,196, 8, 87, 1, 0, 0, 1, 0, 0, 0,136, 38,196, 8,120, 29,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,117, - 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,232, 36,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, +192, 5, 71, 3, 87, 1, 0, 0, 1, 0, 0, 0,248, 10, 71, 3,136, 0, 71, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,104, +117,109, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 37, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,232, 8, 71, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -7357,6 +7409,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +168,149,107, 3, 15, 0, 0, 0, 0, 0, 0, 0,176,255,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7364,132 +7417,109 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 76, 34,196, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, + 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 12, 6, 71, 3, 32, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,232, 36,196, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61, 40, 38,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,232, 8, 71, 3, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, +224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 96, 10, 71, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40, 38,196, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0,136, 38,196, 8, 87, 1, 0, 0, 1, 0, 0, 0, 16, 43,196, 8, - 0, 34,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,104,117,109, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 37, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,112, 41,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 96, 10, 71, 3, 81, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63, +143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,248, 10, 71, 3, + 87, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192, 5, 71, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,119,105,115,116, 0, + 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 38, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 32, 14, 71, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 72,170,105, 3, + 16, 0, 0, 0, 0, 0, 0, 0, 40,255,242, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 68, 11, 71, 3, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,116,104,117,109, 98, 46,112,110,103, 0,110,103, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 32, 14, 71, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186,152, 15, 71, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,152, 15, 71, 3, 81, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 85, 83, 69, 82,248, 12, 0, 0, 0,201,238, 1,194, 0, 0, 0, + 1, 0, 0, 0, 33, 8, 17, 1, 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, - 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,212, 38,196, 8, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,112, 41,196, 8, 83, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,176, 42,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85,115,101,114,115, 47,116,111,110, 47, 68,101,115, +107,116,111,112, 47, 0, 45,112,111,119,101,114,112, 99, 47, 98,105,110, 47, 98,108,101,110,100,101,114, 46, 97,112,112, 47, 67, +111,110,116,101,110,116,115, 47, 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,176, 42,196, 8, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,184, 2, 0, 0, - 16, 43,196, 8, 87, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136, 38,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,119, -105,115,116, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 38, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,248, 45,196, 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,116,119,105,115,116, 46,112,110,103, 0,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 92, 43,196, 8, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,248, 45,196, 8, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186, 56, 47,196, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56, 47,196, 8, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 85, 83, 69, 82,248, 12, 0, 0, 96, 8,134, 1,194, 0, 0, 0, 1, 0, 0, 0, 33, 8, 17, 1, - 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85,115,101,114,115, 47,116,111,110, 47, 68,101,115,107,116,111,112, 47, 0, 45,112, -111,119,101,114,112, 99, 47, 98,105,110, 47, 98,108,101,110,100,101,114, 46, 97,112,112, 47, 67,111,110,116,101,110,116,115, 47, - 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7509,8 +7539,20 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 2, 0, 94, 1, 8, 0, 0, 0, + 3, 0, 0, 0, 56, 52, 39, 1, 0, 0, 0, 0, 2, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0, 68,172, 0, 0, 36, 0, 0, 0, + 2, 0, 0, 0,128, 0, 0, 0, 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0,144, 29, 71, 3,144, 29, 71, 3, 64,101, 1, 3, + 64,101, 1, 3,232,125, 1, 3,232,125, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, + 1, 0, 2, 0, 25, 0, 1, 0, 20, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 30, 90,100,191,154,153,153, 62,102,102,102, 63, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31,250,254, 62, 9, 0, 0, 63,156,153, 25, 63, 0, 0, 0, 0,205,204, 76, 62, +205,204, 76, 62,205,204, 76, 62, 0, 0,128, 63, 44,135, 22, 63, 32,133,235, 62,184,243,125, 62, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,195, 73, 76, 63, 42,135, 86, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 43,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 16, 47, 93, 62, 58,180,200,190, 24, 47, 93,190, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 25, 0, 15, 0,120, 0, + 60, 0, 3, 0,128, 0, 0, 0, 0, 0, 0, 0,144, 31, 15, 0, 6, 0, 25, 0, 8, 0, 10, 0,200, 0, 0, 0,100, 0,100, 0, + 0, 0, 0, 0, 2, 0, 1, 0, 10, 0, 50, 0,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7520,40 +7562,9 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 2, 0, 94, 1, 8, 0, 0, 0, 3, 0, 0, 0, 56, 52, 39, 1, - 0, 0, 0, 0, 2, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0, 68,172, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0,128, 0, 0, 0, - 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0,192, 60,196, 8,192, 60,196, 8, 80,239,247, 2, 80,239,247, 2,192,143,255, 2, -192,143,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 2, 0, 25, 0, 1, 0, - 20, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 30, 90,100,191,154,153,153, 62,102,102,102, 63, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 31,250,254, 62, 9, 0, 0, 63,156,153, 25, 63, 0, 0, 0, 0,205,204, 76, 62,205,204, 76, 62,205,204, 76, 62, - 0, 0,128, 63, 44,135, 22, 63, 32,133,235, 62,184,243,125, 62, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,195, 73, 76, 63, - 42,135, 86, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 43,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 16, 47, 93, 62, - 58,180,200,190, 24, 47, 93,190, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 25, 0, 15, 0,120, 0, 60, 0, 3, 0,128, 0, 0, 0, - 0, 0, 0, 0,144, 31, 15, 0, 6, 0, 25, 0, 8, 0, 10, 0,200, 0, 0, 0,100, 0,100, 0, 0, 0, 0, 0, 2, 0, 1, 0, - 10, 0, 50, 0,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, @@ -7575,180 +7586,33 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 29, 0, 0,192, 60,196, 8, -191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, - 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, - 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255,153,153,153,255, 90, 90, 90,255, - 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 86,128,194,255,255,255,255,255, -255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255, - 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, - 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255, 90, 90, 90,255, - 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255,128,128,128,255, - 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255, -255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 63, 63, 63,255, 86,128,194,255,255,255,255,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 25, 25, 25,230, 45, 45, 45,230,100,100,100,255, -160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255,255,255,255,255, -255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, 25, 25, 25,255,128,128,128,255,100,100,100,255, 25, 25, 25,255, - 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50,180, 80, 80, 80,180,100,100,100,180,128,128,128,255, - 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255,190,190,190,255,100,100,100,180, 68, 68, 68,255, - 0, 0, 0,255,255,255,255,255, 0, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,115,190, 76,255, 90,166, 51,255,240,235,100,255,215,211, 75,255, -180, 0,255,255,153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 29, 0, 0,144, 29, 71, 3,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,101,102, 97,117,108,116, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255, +100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255, +100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255, +153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, + 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 70, 70, 70,255, + 70, 70, 70,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255, +100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255, +153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255, +153,153,153,255,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, + 70, 70, 70,255,255,255,255,255,255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 63, 63, 63,255, + 86,128,194,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 25, 25, 25,230, + 45, 45, 45,230,100,100,100,255,160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, + 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, 25, 25, 25,255,128,128,128,255, +100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50,180, 80, 80, 80,180, +100,100,100,180,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255,190,190,190,255, +100,100,100,180, 68, 68, 68,255, 0, 0, 0,255,255,255,255,255, 0, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, + 86,128,194,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,115,190, 76,255, 90,166, 51,255, +240,235,100,255,215,211, 75,255,180, 0,255,255,153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, - 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, -144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, - 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, -204, 0,153,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, -255,255,255,255, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 76, 76,255, 0, 0, 0, 0,250,250,250,255, 15, 15, 15,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100,255,140, 25,255,250,250,250,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,130,130,130,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, -200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, -240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -250,250,250,255,250,250,250,255,250,250,250,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, - 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, -128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, -128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, - 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, -144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,173,173,173,255,127,112,112,100, - 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, -200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, -240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, - 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255, -128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, -128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, - 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, -144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,109, 88,129,255, 78,152, 62,255, 46,143,143,255, -169, 84,124,255,126,126, 80,255,162, 95,111,255,109,145,131,255,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0,255,255,255,255,255,130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 0,255,255,255, 10,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255,110,110,110,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,132,132,132,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, - 94, 94, 94,255,172,172,172,255, 17, 27, 60,100, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,195,195,195,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, -200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, -240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,153,153,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, - 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, -128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, -128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,100, 0, 0,255, 0, 0,200,255,128, 0, 80,255, - 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, - 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, -144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,173,173,173,255,127,112,112,100, - 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, 255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, @@ -7760,18 +7624,108 @@ char datatoc_startup_blend[]= { 114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,255,255,255,219, 37, 18,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255,204, 0,153,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255,255,255,255,255, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 76, 76,255, 0, 0, 0, 0, +250,250,250,255, 15, 15, 15,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100,255,140, 25,255,250,250,250,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,130,130,130,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,250,250,250,255,250,250,250,255,250,250,250,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255, +124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, 255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, 200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, 240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, 240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,155,155,155,160,100,100,100,255,108,105,111,255,104,106,117,255,105,117,110,255, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100,100,100,255, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255, +124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,109, 88,129,255, + 78,152, 62,255, 46,143,143,255,169, 84,124,255,126,126, 80,255,162, 95,111,255,109,145,131,255,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0,255,255,255, 10,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255,110,110,110,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,132,132,132,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255, 94, 94, 94,255,172,172,172,255, 17, 27, 60,100, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,195,195,195,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, 255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, 128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, @@ -7779,7 +7733,52 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255, 64, 64, 64,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,100, 0, 0,255, + 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,255,255,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,155,155,155,160,100,100,100,255,108,105,111,255, +104,106,117,255,105,117,110,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, @@ -7790,7 +7789,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, @@ -7798,1835 +7797,1847 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,128,255,255,255,255,255,255, 0,170, 0,255,220, 96, 96,255,220, 96, 96,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255,247, 10, 10,255, 0, 0, 0, 0, -247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255,131,239, 29,255, 0, 0, 0, 0, - 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255,240, 93,145,255, 0, 0, 0, 0, - 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255,111,182,171,255, 0, 0, 0, 0, - 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0,244,201, 12,255,238,194, 54,255,243,255, 0,255, 0, 0, 0, 0, - 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0,111, 47,106,255,152, 69,190,255,211, 48,214,255, 0, 0, 0, 0, -108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0,141,141,141,255,176,176,176,255,222,222,222,255, 0, 0, 0, 0, -131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,128,255,255,255,255,255,255, 0,170, 0,255, +220, 96, 96,255,220, 96, 96,255, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255, +247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255, +131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255, +240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255, +111,182,171,255, 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0,244,201, 12,255,238,194, 54,255, +243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0,111, 47,106,255,152, 69,190,255, +211, 48,214,255, 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0,141,141,141,255,176,176,176,255, +222,222,222,255, 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, + 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 78, 65, 49,224,226, 0, 0, -248, 86,243, 2, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69,206, 11, 0, 0, 42,110,101,120,116, 0, 42,112, -114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, 0, 42,108, 97,115,116, 0,120, 0,121, 0,122, 0,119, 0,120, -109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, 97,120, 0, 42,112,111,105,110,116,101,114, 0,103,114,111,117, -112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0,115,117, 98,116,121,112,101, 0,102,108, 97,103, 0,110, 97,109, -101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0,100, 97,116, 97, 0,108,101,110, 0,116,111,116, 97,108,108,101,110, 0, 42,110, -101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 50, 52, 93, 0,117,115, 0,105, 99,111,110, 95,105,100, 0, 42,112, -114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, 98,108,111, 99,107, 0, 42,102,105,108,101,100, 97,116, 97, 0, -110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,108,101,112, 97,116,104, 91, 50, 52, 48, 93, 0,116,111,116, 0,112, 97,100, 0, - 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 91, 50, 93, 0, 99,104, 97, -110,103,101,100, 95,116,105,109,101,115,116, 97,109,112, 91, 50, 93, 0, 42,114,101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, 98, -108,111, 99,107,116,121,112,101, 0, 97,100,114, 99,111,100,101, 0,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, 42, - 98,101,122,116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, 99,116, 0,118, 97,114,116,121,112,101, 0,116,111,116,118,101, -114,116, 0,105,112,111, 0,101,120,116,114, 97,112, 0,114,116, 0, 98,105,116,109, 97,115,107, 0,115,108,105,100,101, 95,109, -105,110, 0,115,108,105,100,101, 95,109, 97,120, 0, 99,117,114,118, 97,108, 0, 42,100,114,105,118,101,114, 0, 99,117,114,118, -101, 0, 99,117,114, 0,115,104,111,119,107,101,121, 0,109,117,116,101,105,112,111, 0,112,111,115, 0,114,101,108, 97,116,105, -118,101, 0,116,111,116,101,108,101,109, 0,112, 97,100, 50, 0, 42,119,101,105,103,104,116,115, 0,118,103,114,111,117,112, 91, - 51, 50, 93, 0,115,108,105,100,101,114,109,105,110, 0,115,108,105,100,101,114,109, 97,120, 0, 42, 97,100,116, 0, 42,114,101, -102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, 0,101,108,101,109,115,105,122,101, 0, 98,108,111, 99,107, 0, - 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101,121, 0,115,108,117,114,112,104, 0, 42,108,105,110,101, 0, 42, -102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101,110,111, 0,115,116, 97,114,116, 0,101,110,100, 0,112, 97,100, - 49, 0,102,108, 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, 0,112, 97,100, 91, 52, 93, 0, 42,110, 97,109,101, 0,110,108, -105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108, 0, 42,115,101,108,108, 0, 99,117,114, 99, 0,115,101,108, 99, - 0,109, 97,114,107,101,114,115, 0, 42,117,110,100,111, 95, 98,117,102, 0,117,110,100,111, 95,112,111,115, 0,117,110,100,111, - 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,109,116,105,109,101, 0,115,105,122,101, 0,115,101,101,107, 0,112, - 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0, 99,108,105,112,115,116, 97, 0, 99,108,105,112,101,110,100, 0,108,101, -110,115, 0,111,114,116,104,111, 95,115, 99, 97,108,101, 0,100,114, 97,119,115,105,122,101, 0,115,104,105,102,116,120, 0,115, -104,105,102,116,121, 0, 89, 70, 95,100,111,102,100,105,115,116, 0, 42,100,111,102, 95,111, 98, 0,102,114, 97,109,101,110,114, - 0,102,114, 97,109,101,115, 0,111,102,102,115,101,116, 0,115,102,114, 97, 0,102,105,101, 95,105,109, 97, 0, 99,121, 99,108, - 0,111,107, 0,109,117,108,116,105, 95,105,110,100,101,120, 0,108, 97,121,101,114, 0,112, 97,115,115, 0,109,101,110,117,110, -114, 0, 42,115, 99,101,110,101, 0,105, 98,117,102,115, 0, 42,103,112,117,116,101,120,116,117,114,101, 0, 42, 97,110,105,109, - 0, 42,114,114, 0, 42,114,101,110,100,101,114,115, 91, 56, 93, 0,114,101,110,100,101,114, 95,115,108,111,116, 0,108, 97,115, -116, 95,114,101,110,100,101,114, 95,115,108,111,116, 0,115,111,117,114, 99,101, 0,108, 97,115,116,102,114, 97,109,101, 0,116, -112, 97,103,101,102,108, 97,103, 0,116,111,116, 98,105,110,100, 0,120,114,101,112, 0,121,114,101,112, 0,116,119,115,116, 97, - 0,116,119,101,110,100, 0, 98,105,110,100, 99,111,100,101, 0, 42,114,101,112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100, -102,105,108,101, 0, 42,112,114,101,118,105,101,119, 0,108, 97,115,116,117,112,100, 97,116,101, 0,108, 97,115,116,117,115,101, -100, 0, 97,110,105,109,115,112,101,101,100, 0,103,101,110, 95,120, 0,103,101,110, 95,121, 0,103,101,110, 95,116,121,112,101, - 0, 97,115,112,120, 0, 97,115,112,121, 0,116,101,120, 99,111, 0,109, 97,112,116,111, 0,109, 97,112,116,111,110,101,103, 0, - 98,108,101,110,100,116,121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116,101,120, 0,117,118,110, 97,109,101, 91, 51, 50, - 93, 0,112,114,111,106,120, 0,112,114,111,106,121, 0,112,114,111,106,122, 0,109, 97,112,112,105,110,103, 0,111,102,115, 91, - 51, 93, 0,115,105,122,101, 91, 51, 93, 0,114,111,116, 0,116,101,120,102,108, 97,103, 0, 99,111,108,111,114,109,111,100,101, -108, 0,112,109, 97,112,116,111, 0,112,109, 97,112,116,111,110,101,103, 0,110,111,114,109, 97,112,115,112, 97, 99,101, 0,119, -104,105, 99,104, 95,111,117,116,112,117,116, 0, 98,114,117,115,104, 95,109, 97,112, 95,109,111,100,101, 0,112, 97,100, 91, 55, - 93, 0,114, 0,103, 0, 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111,108,102, 97, 99, 0,118, 97,114,102, 97, 99, 0, -110,111,114,102, 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, 0, 99,111,108,115,112,101, 99,102, 97, - 99, 0,109,105,114,114,102, 97, 99, 0, 97,108,112,104, 97,102, 97, 99, 0,100,105,102,102,102, 97, 99, 0,115,112,101, 99,102, - 97, 99, 0,101,109,105,116,102, 97, 99, 0,104, 97,114,100,102, 97, 99, 0,114, 97,121,109,105,114,114,102, 97, 99, 0,116,114, - 97,110,115,108,102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99,111,108,101,109,105,116,102, 97, 99, 0, 99,111,108,114,101,102, -108,102, 97, 99, 0, 99,111,108,116,114, 97,110,115,102, 97, 99, 0,100,101,110,115,102, 97, 99, 0,115, 99, 97,116,116,101,114, -102, 97, 99, 0,114,101,102,108,102, 97, 99, 0,116,105,109,101,102, 97, 99, 0,108,101,110,103,116,104,102, 97, 99, 0, 99,108, -117,109,112,102, 97, 99, 0,107,105,110,107,102, 97, 99, 0,114,111,117,103,104,102, 97, 99, 0,112, 97,100,101,110,115,102, 97, - 99, 0,108,105,102,101,102, 97, 99, 0,115,105,122,101,102, 97, 99, 0,105,118,101,108,102, 97, 99, 0,112,118,101,108,102, 97, - 99, 0,115,104, 97,100,111,119,102, 97, 99, 0,122,101,110,117,112,102, 97, 99, 0,122,101,110,100,111,119,110,102, 97, 99, 0, - 98,108,101,110,100,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0, 42,104, 97,110,100,108,101, 0, 42,112,110, 97,109, -101, 0, 42,115,116,110, 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97,114,115, 0, 42,118, 97,114,115,116,114, 0, 42, -114,101,115,117,108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, 93, 0, 40, 42,100,111,105,116, 41, 40, 41, 0, - 40, 42,105,110,115,116, 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, 42, 99, 97,108,108, 98, 97, 99,107, 41, 40, 41, - 0,118,101,114,115,105,111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42,105,109, 97, 0, 42, 99,117, 98,101, 91, 54, 93, - 0,105,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, 93, 91, 51, 93, 0,115,116,121,112,101, 0,118, -105,101,119,115, 99, 97,108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101,114,101,115, 0,100,101,112,116,104, 0,114,101, - 99, 97,108, 99, 0,108, 97,115,116,115,105,122,101, 0,102, 97,108,108,111,102,102, 95,116,121,112,101, 0,102, 97,108,108,111, -102,102, 95,115,111,102,116,110,101,115,115, 0,114, 97,100,105,117,115, 0, 99,111,108,111,114, 95,115,111,117,114, 99,101, 0, -116,111,116,112,111,105,110,116,115, 0,112,100,112, 97,100, 0,112,115,121,115, 0,112,115,121,115, 95, 99, 97, 99,104,101, 95, -115,112, 97, 99,101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0, 42,112,111,105,110,116, 95,116,114,101,101, - 0, 42,112,111,105,110,116, 95,100, 97,116, 97, 0,110,111,105,115,101, 95,115,105,122,101, 0,110,111,105,115,101, 95,100,101, -112,116,104, 0,110,111,105,115,101, 95,105,110,102,108,117,101,110, 99,101, 0,110,111,105,115,101, 95, 98, 97,115,105,115, 0, -112,100,112, 97,100, 51, 91, 51, 93, 0,110,111,105,115,101, 95,102, 97, 99, 0,115,112,101,101,100, 95,115, 99, 97,108,101, 0, - 42, 99,111, 98, 97, 0,114,101,115,111,108, 91, 51, 93, 0,105,110,116,101,114,112, 95,116,121,112,101, 0,102,105,108,101, 95, -102,111,114,109, 97,116, 0,101,120,116,101,110,100, 0,115,109,111,107,101,100, 95,116,121,112,101, 0,105,110,116, 95,109,117, -108,116,105,112,108,105,101,114, 0,115,116,105,108,108, 95,102,114, 97,109,101, 0,115,111,117,114, 99,101, 95,112, 97,116,104, - 91, 50, 52, 48, 93, 0, 42,100, 97,116, 97,115,101,116, 0, 99, 97, 99,104,101,100,102,114, 97,109,101, 0,110,111,105,115,101, -115,105,122,101, 0,116,117,114, 98,117,108, 0, 98,114,105,103,104,116, 0, 99,111,110,116,114, 97,115,116, 0,115, 97,116,117, -114, 97,116,105,111,110, 0,114,102, 97, 99, 0,103,102, 97, 99, 0, 98,102, 97, 99, 0,102,105,108,116,101,114,115,105,122,101, - 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, 97,114,105,116,121, 0,109,103, 95,111, 99,116, 97,118,101,115, 0,109, -103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97,105,110, 0,100,105,115,116, 95, 97,109,111,117,110,116, 0,110,115, 95, -111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, 0,118,110, 95,119, 50, 0,118,110, 95,119, 51, 0,118,110, 95,119, 52, - 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105,115,116,109, 0,118,110, 95, 99,111,108,116,121,112,101, 0,110,111,105, -115,101,100,101,112,116,104, 0,110,111,105,115,101,116,121,112,101, 0,110,111,105,115,101, 98, 97,115,105,115, 0,110,111,105, -115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, 97,103, 0, 99,114,111,112,120,109,105,110, 0, 99,114,111,112,121,109, -105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114,111,112,121,109, 97,120, 0,116,101,120,102,105,108,116,101,114, 0, 97, -102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101,112,101, 97,116, 0, 99,104,101, 99,107,101,114,100,105,115,116, - 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42,110,111,100,101,116,114,101,101, 0, 42,112,108,117,103,105,110, 0, 42, -101,110,118, 0, 42,112,100, 0, 42,118,100, 0,117,115,101, 95,110,111,100,101,115, 0,108,111, 99, 91, 51, 93, 0,114,111,116, - 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105,110, 91, 51, 93, 0,109, 97,120, 91, 51, 93, 0,109,111,100,101, - 0,116,111,116,101,120, 0,115,104,100,119,114, 0,115,104,100,119,103, 0,115,104,100,119, 98, 0,115,104,100,119,112, 97,100, - 0,101,110,101,114,103,121, 0,100,105,115,116, 0,115,112,111,116,115,105,122,101, 0,115,112,111,116, 98,108,101,110,100, 0, -104, 97,105,110,116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, 42, 99,117,114,102, 97,108,108,111,102,102, 0,115,104, 97,100, -115,112,111,116,115,105,122,101, 0, 98,105, 97,115, 0,115,111,102,116, 0, 99,111,109,112,114,101,115,115,116,104,114,101,115, -104, 0,112, 97,100, 53, 91, 51, 93, 0, 98,117,102,115,105,122,101, 0,115, 97,109,112, 0, 98,117,102,102,101,114,115, 0,102, -105,108,116,101,114,116,121,112,101, 0, 98,117,102,102,108, 97,103, 0, 98,117,102,116,121,112,101, 0,114, 97,121, 95,115, 97, -109,112, 0,114, 97,121, 95,115, 97,109,112,121, 0,114, 97,121, 95,115, 97,109,112,122, 0,114, 97,121, 95,115, 97,109,112, 95, -116,121,112,101, 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, 97,114,101, 97, 95,115,105,122,101, 0, 97,114,101, 97, 95,115, -105,122,101,121, 0, 97,114,101, 97, 95,115,105,122,101,122, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0,114, 97,121, - 95,115, 97,109,112, 95,109,101,116,104,111,100, 0,116,101,120, 97, 99,116, 0,115,104, 97,100,104, 97,108,111,115,116,101,112, - 0,115,117,110, 95,101,102,102,101, 99,116, 95,116,121,112,101, 0,115,107,121, 98,108,101,110,100,116,121,112,101, 0,104,111, -114,105,122,111,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,112,114,101, 97,100, 0,115,117,110, 95, 98,114,105,103, -104,116,110,101,115,115, 0,115,117,110, 95,115,105,122,101, 0, 98, 97, 99,107,115, 99, 97,116,116,101,114,101,100, 95,108,105, -103,104,116, 0,115,117,110, 95,105,110,116,101,110,115,105,116,121, 0, 97,116,109, 95,116,117,114, 98,105,100,105,116,121, 0, - 97,116,109, 95,105,110,115, 99, 97,116,116,101,114,105,110,103, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,101,120,116,105, -110, 99,116,105,111,110, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,100,105,115,116, 97,110, 99,101, 95,102, 97, 99,116,111, -114, 0,115,107,121, 98,108,101,110,100,102, 97, 99, 0,115,107,121, 95,101,120,112,111,115,117,114,101, 0,115,107,121, 95, 99, -111,108,111,114,115,112, 97, 99,101, 0,112, 97,100, 52, 91, 54, 93, 0, 42,109,116,101,120, 91, 49, 56, 93, 0,112,114, 95,116, -101,120,116,117,114,101, 0,112, 97,100, 54, 91, 54, 93, 0,100,101,110,115,105,116,121, 0,101,109,105,115,115,105,111,110, 0, -115, 99, 97,116,116,101,114,105,110,103, 0,114,101,102,108,101, 99,116,105,111,110, 0,101,109,105,115,115,105,111,110, 95, 99, -111,108, 91, 51, 93, 0,116,114, 97,110,115,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,114,101,102,108,101, 99, -116,105,111,110, 95, 99,111,108, 91, 51, 93, 0,100,101,110,115,105,116,121, 95,115, 99, 97,108,101, 0,100,101,112,116,104, 95, - 99,117,116,111,102,102, 0, 97,115,121,109,109,101,116,114,121, 0,115,116,101,112,115,105,122,101, 95,116,121,112,101, 0,115, -104, 97,100,101,102,108, 97,103, 0,115,104, 97,100,101, 95,116,121,112,101, 0,112,114,101, 99, 97, 99,104,101, 95,114,101,115, -111,108,117,116,105,111,110, 0,115,116,101,112,115,105,122,101, 0,109,115, 95,100,105,102,102, 0,109,115, 95,105,110,116,101, -110,115,105,116,121, 0,109,115, 95,115,112,114,101, 97,100, 0,109, 97,116,101,114,105, 97,108, 95,116,121,112,101, 0,115,112, -101, 99,114, 0,115,112,101, 99,103, 0,115,112,101, 99, 98, 0,109,105,114,114, 0,109,105,114,103, 0,109,105,114, 98, 0, 97, -109, 98,114, 0, 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, 98, 0,101,109,105,116, 0, 97,110,103, 0,115,112,101, 99,116, -114, 97, 0,114, 97,121, 95,109,105,114,114,111,114, 0, 97,108,112,104, 97, 0,114,101,102, 0,115,112,101, 99, 0,122,111,102, -102,115, 0, 97,100,100, 0,116,114, 97,110,115,108,117, 99,101,110, 99,121, 0,118,111,108, 0,102,114,101,115,110,101,108, 95, -109,105,114, 0,102,114,101,115,110,101,108, 95,109,105,114, 95,105, 0,102,114,101,115,110,101,108, 95,116,114, 97, 0,102,114, -101,115,110,101,108, 95,116,114, 97, 95,105, 0,102,105,108,116,101,114, 0,116,120, 95,108,105,109,105,116, 0,116,120, 95,102, - 97,108,108,111,102,102, 0,114, 97,121, 95,100,101,112,116,104, 0,114, 97,121, 95,100,101,112,116,104, 95,116,114, 97, 0,104, - 97,114, 0,115,101,101,100, 49, 0,115,101,101,100, 50, 0,103,108,111,115,115, 95,109,105,114, 0,103,108,111,115,115, 95,116, -114, 97, 0,115, 97,109,112, 95,103,108,111,115,115, 95,109,105,114, 0,115, 97,109,112, 95,103,108,111,115,115, 95,116,114, 97, - 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,109,105,114, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,116, -114, 97, 0, 97,110,105,115,111, 95,103,108,111,115,115, 95,109,105,114, 0,100,105,115,116, 95,109,105,114, 0,102, 97,100,101, -116,111, 95,109,105,114, 0,115,104, 97,100,101, 95,102,108, 97,103, 0,109,111,100,101, 95,108, 0,102,108, 97,114,101, 99, 0, -115,116, 97,114, 99, 0,108,105,110,101, 99, 0,114,105,110,103, 99, 0,104, 97,115,105,122,101, 0,102,108, 97,114,101,115,105, -122,101, 0,115,117, 98,115,105,122,101, 0,102,108, 97,114,101, 98,111,111,115,116, 0,115,116,114, 97,110,100, 95,115,116, 97, - 0,115,116,114, 97,110,100, 95,101,110,100, 0,115,116,114, 97,110,100, 95,101, 97,115,101, 0,115,116,114, 97,110,100, 95,115, -117,114,102,110,111,114, 0,115,116,114, 97,110,100, 95,109,105,110, 0,115,116,114, 97,110,100, 95,119,105,100,116,104,102, 97, -100,101, 0,115,116,114, 97,110,100, 95,117,118,110, 97,109,101, 91, 51, 50, 93, 0,115, 98,105, 97,115, 0,108, 98,105, 97,115, - 0,115,104, 97,100, 95, 97,108,112,104, 97, 0,115,101,112,116,101,120, 0,114,103, 98,115,101,108, 0,112,114, 95,116,121,112, -101, 0,112,114, 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109,112, 0,109,108, 95,102,108, 97,103, 0,100,105,102,102, 95,115, -104, 97,100,101,114, 0,115,112,101, 99, 95,115,104, 97,100,101,114, 0,114,111,117,103,104,110,101,115,115, 0,114,101,102,114, - 97, 99, 0,112, 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0,100, 97,114,107,110,101,115,115, 0, 42,114, 97,109,112, 95, 99, -111,108, 0, 42,114, 97,109,112, 95,115,112,101, 99, 0,114, 97,109,112,105,110, 95, 99,111,108, 0,114, 97,109,112,105,110, 95, -115,112,101, 99, 0,114, 97,109,112, 98,108,101,110,100, 95, 99,111,108, 0,114, 97,109,112, 98,108,101,110,100, 95,115,112,101, - 99, 0,114, 97,109,112, 95,115,104,111,119, 0,112, 97,100, 51, 0,114, 97,109,112,102, 97, 99, 95, 99,111,108, 0,114, 97,109, -112,102, 97, 99, 95,115,112,101, 99, 0, 42,103,114,111,117,112, 0,102,114,105, 99,116,105,111,110, 0,102,104, 0,114,101,102, -108,101, 99,116, 0,102,104,100,105,115,116, 0,120,121,102,114,105, 99,116, 0,100,121,110, 97,109,111,100,101, 0,115,115,115, - 95,114, 97,100,105,117,115, 91, 51, 93, 0,115,115,115, 95, 99,111,108, 91, 51, 93, 0,115,115,115, 95,101,114,114,111,114, 0, -115,115,115, 95,115, 99, 97,108,101, 0,115,115,115, 95,105,111,114, 0,115,115,115, 95, 99,111,108,102, 97, 99, 0,115,115,115, - 95,116,101,120,102, 97, 99, 0,115,115,115, 95,102,114,111,110,116, 0,115,115,115, 95, 98, 97, 99,107, 0,115,115,115, 95,102, -108, 97,103, 0,115,115,115, 95,112,114,101,115,101,116, 0,109, 97,112,116,111, 95,116,101,120,116,117,114,101,100, 0,112, 97, -100, 52, 0,103,112,117,109, 97,116,101,114,105, 97,108, 0,110, 97,109,101, 91, 50, 53, 54, 93, 0, 42, 98, 98, 0,105, 49, 0, -106, 49, 0,107, 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115,101,108, 99,111,108, 49, 0,115,101,108, 99,111,108, 50, 0,113, -117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,101,120,112,121, 0,101,120,112,122, 0,114, 97,100, 0,114, 97,100, 50, 0,115, - 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,101,108,101,109,115, 0,100,105,115,112, 0, 42,101,100,105,116,101,108,101,109, -115, 0, 42, 42,109, 97,116, 0,102,108, 97,103, 50, 0,116,111,116, 99,111,108, 0,119,105,114,101,115,105,122,101, 0,114,101, -110,100,101,114,115,105,122,101, 0,116,104,114,101,115,104, 0, 42,108, 97,115,116,101,108,101,109, 0,118,101, 99, 91, 51, 93, - 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,104,116, 0,104, 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104, -105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110,114, 0,112,110,116,115,117, 0,112,110,116,115,118, 0,114,101, -115,111,108,117, 0,114,101,115,111,108,118, 0,111,114,100,101,114,117, 0,111,114,100,101,114,118, 0,102,108, 97,103,117, 0, -102,108, 97,103,118, 0, 42,107,110,111,116,115,117, 0, 42,107,110,111,116,115,118, 0,116,105,108,116, 95,105,110,116,101,114, -112, 0,114, 97,100,105,117,115, 95,105,110,116,101,114,112, 0, 99,104, 97,114,105,100,120, 0,107,101,114,110, 0,104, 0,110, -117,114, 98, 0, 42,101,100,105,116,110,117,114, 98, 0, 42, 98,101,118,111, 98,106, 0, 42,116, 97,112,101,114,111, 98,106, 0, - 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,112, 97,116,104, 0, 42,107,101,121, 0, 98,101,118, 0,100,114, 97,119, -102,108, 97,103, 0,116,119,105,115,116, 95,109,111,100,101, 0,112, 97,100, 91, 50, 93, 0,116,119,105,115,116, 95,115,109,111, -111,116,104, 0,115,109, 97,108,108, 99, 97,112,115, 95,115, 99, 97,108,101, 0,112, 97,116,104,108,101,110, 0, 98,101,118,114, -101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0,101,120,116, 50, 0,114,101,115,111,108,117, 95,114,101,110, 0, -114,101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117, 0, 42,108, 97,115,116,115,101,108, 0,115,112, 97, 99,101,109, -111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101,100,105,115,116, 0,115,104,101, 97,114, 0,102,115,105,122,101, - 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, 0,117,108,104,101,105,103,104,116, 0,120,111,102, 0,121,111, -102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, 0, 42,115,101,108, 98,111,120,101,115, 0, 42,101,100,105,116, -102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, 42,118,102,111,110,116, 0, 42,118,102,111,110,116, 98, 0, 42, -118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0,115,101,112, 99,104, 97,114, 0, 99,116,105,109,101, 0,116,111, -116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0,115,101,108,115,116, 97,114,116, 0,115,101,108,101,110,100, 0, - 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, 0,101,102,102,101, 99,116, 0, 42,109,102, 97, 99,101, 0, 42, -109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109,118,101,114,116, 0, 42,109,101,100,103,101, 0, 42,100,118,101, -114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107,121, 0, 42,116,101,120, 99,111,109,101,115,104, 0, 42,109,115, -101,108,101, 99,116, 0, 42,101,100,105,116, 95,109,101,115,104, 0,118,100, 97,116, 97, 0,101,100, 97,116, 97, 0,102,100, 97, -116, 97, 0,116,111,116,101,100,103,101, 0,116,111,116,102, 97, 99,101, 0,116,111,116,115,101,108,101, 99,116, 0, 97, 99,116, - 95,102, 97, 99,101, 0,101,100,105,116,102,108, 97,103, 0, 99,117, 98,101,109, 97,112,115,105,122,101, 0,115,109,111,111,116, -104,114,101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98,100,105,118,114, 0,115,117, 98,115,117,114,102,116,121,112,101, - 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,103,101, 0,117,118, 91, 52, 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0, -116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, 97,112, 0,118, 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101, -100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,119,101,105,103,104,116, 0,100,101,102, 95,110,114, 0, 42,100,119, 0, -116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0,110,111, 91, 51, 93, 0,117,118, 91, 50, 93, 0, 99,111, 91, 50, - 93, 0,105,110,100,101,120, 0,102, 0,105, 0,115, 91, 50, 53, 54, 93, 0,116,111,116,100,105,115,112, 0, 40, 42,100,105,115, -112,115, 41, 40, 41, 0,118, 91, 52, 93, 0,109,105,100, 0,118, 91, 50, 93, 0, 42,102, 97, 99,101,115, 0, 42, 99,111,108,102, - 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,118,101,114,116,115, 0,108,101,118,101,108,115, 0,108,101,118,101,108, 95, - 99,111,117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101,119,108,118,108, 0,101,100,103,101,108,118,108, 0,112,105,110, -108,118,108, 0,114,101,110,100,101,114,108,118,108, 0,117,115,101, 95, 99,111,108, 0, 42,101,100,103,101, 95,102,108, 97,103, -115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, 42,118,101,114,116, 95,109, 97,112, 0, 42,101,100,103,101, 95, -109, 97,112, 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42,111,108,100, 95,101,100,103,101,115, 0,115,116, 97, 99,107,105, -110,100,101,120, 0, 42,101,114,114,111,114, 0,109,111,100,105,102,105,101,114, 0,115,117, 98,100,105,118, 84,121,112,101, 0, -114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, 67, 97, 99,104,101, 0, 42,109, 67, 97, 99,104,101, 0,100,101, -102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,101,110,103,116,104, 0,114, 97,110,100,111,109,105,122,101, 0,115,101, -101,100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116, 97,114,116, 95, 99, 97,112, 0, 42,101,110,100, 95, 99, 97,112, 0, 42, - 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, 95,111, 98, 0,111,102,102,115,101,116, 91, 51, 93, 0,115, 99, - 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115,116, 0,102,105,116, 95,116,121,112,101, 0,111,102,102,115,101, -116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105,115, 0,116,111,108,101,114, 97,110, 99,101, 0, 42,109,105,114, -114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103,108,101, 0,118, 97,108,117,101, 0,114,101,115, 0,118, 97,108, - 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, 0,101, 95,102,108, 97,103,115, 0, 98,101,118,101,108, 95, 97, -110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, 91, 51, 50, 93, 0, 42,100,111,109, 97,105,110, 0, 42,102,108, -111,119, 0, 42, 99,111,108,108, 0,116,105,109,101, 0, 42,116,101,120,116,117,114,101, 0,115,116,114,101,110,103,116,104, 0, -100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118,101,108, 0,116,101,120,109, 97,112,112,105,110,103, 0, 42,109, - 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101,114, 95,110, 97,109,101, 91, 51, 50, 93, 0,117,118,108, 97,121, -101,114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,116,111,114,115, 91, 49, 48, 93, 0, 42,105,109, 97,103,101, 0,110,117, -109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112,101, 99,116,120, 0, 97,115,112,101, 99,116,121, 0,115, 99, 97, -108,101,120, 0,115, 99, 97,108,101,121, 0,112,101,114, 99,101,110,116, 0,102, 97, 99,101, 67,111,117,110,116, 0,102, 97, 99, - 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99,101,110,116,101,114, 0,115,116, 97,114,116,120, 0,115,116, 97, -114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111,119, 0,115,112,101,101,100, 0,100, 97,109,112, 0,102, 97,108, -108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105,102,101,116,105,109,101, 0,100,101,102,111,114,109,102,108, 97, -103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, 0,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112, - 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116, 91, 51, 93, 0, 42,105,110,100,101,120, 97,114, 0, -116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, 99,108,111,116,104, 79, 98,106,101, 99,116, 0, 42,115,105,109, - 95,112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114,109,115, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 0, -112,116, 99, 97, 99,104,101,115, 0, 42,120, 0, 42,120,110,101,119, 0, 42,120,111,108,100, 0, 42, 99,117,114,114,101,110,116, - 95,120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, 0, 42, 99,117,114,114,101,110,116, 95,118, 0, 42,109,102, 97, - 99,101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109,102, 97, 99,101,115, 0, 42, 98,118,104,116,114,101,101, 0, 42, -118, 0, 42,100,109, 0, 99,102,114, 97, 0,111,112,101,114, 97,116,105,111,110, 0,118,101,114,116,101,120, 0,116,111,116,105, -110,102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,122,101, 0, 42, 98,105,110,100,105,110,102,108,117,101,110, 99,101, -115, 0, 42, 98,105,110,100,111,102,102,115,101,116,115, 0, 42, 98,105,110,100, 99, 97,103,101, 99,111,115, 0,116,111,116, 99, - 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,100, 0, 42,100,121,110,105,110,102,108,117,101,110, 99,101,115, 0, - 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0,100,121,110,103,114,105,100,115,105,122,101, 0,100,121,110, 99, -101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108,108,119,105,100,116,104, 0, 98,105,110,100,109, 97,116, 91, 52, - 93, 91, 52, 93, 0, 42, 98,105,110,100,119,101,105,103,104,116,115, 0, 42, 98,105,110,100, 99,111,115, 0, 40, 42, 98,105,110, -100,102,117,110, 99, 41, 40, 41, 0, 42,112,115,121,115, 0,116,111,116,100,109,118,101,114,116, 0,116,111,116,100,109,101,100, -103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,111,115,105,116,105,111,110, 0,114, 97,110,100,111,109, 95,112,111,115, -105,116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103,114,111,117,112, 0,112,114,111,116,101, 99,116, 0,108,118,108, - 0,115, 99,117,108,112,116,108,118,108, 0,116,111,116,108,118,108, 0,115,105,109,112,108,101, 0, 42,102,115,115, 0, 42,116, - 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, 0,118,103,114,111,117,112, 95,110, 97,109,101, 91, 51, 50, 93, - 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, 84,121,112,101, 0,115,104,114,105,110,107, 79,112,116,115, 0, -112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, 76,101,118,101,108,115, 0, 42,111,114,105,103,105,110, 0,102, - 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111,114,105,103,105,110, 79,112,116,115, 0,111,102,102,115,101,116, - 95,102, 97, 99, 0, 99,114,101, 97,115,101, 95,105,110,110,101,114, 0, 99,114,101, 97,115,101, 95,111,117,116,101,114, 0, 99, -114,101, 97,115,101, 95,114,105,109, 0, 42,111, 98, 95, 97,120,105,115, 0,115,116,101,112,115, 0,114,101,110,100,101,114, 95, -115,116,101,112,115, 0,105,116,101,114, 0,115, 99,114,101,119, 95,111,102,115, 0, 97,110,103,108,101, 0,112,110,116,115,119, - 0,111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111,112,110,116,115,119, 0,116,121,112,101,117, 0,116,121,112,101, -118, 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, 0,100,117, 0,100,118, 0,100,119, 0, 42,100,101,102, 0, 42, -108, 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42,101,100,105,116,108, 97, -116,116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99,117,108,112,116, 0,112, 97,114,116,121,112,101, 0,112, 97,114, - 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115,117, 98,115,116,114, 91, 51, 50, 93, 0, 42,116,114, 97, 99,107, - 0, 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103,114,111,117,112, 0, 42,112,114,111,120,121, 95,102,114,111,109, - 0, 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, 98, 0, 42,112,111,115,101, 0, 42,103,112,100, 0, 97,118,115, - 0, 42,109,112, 97,116,104, 0, 99,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108,115, 0,100,101,102, 98, 97, -115,101, 0,109,111,100,105,102,105,101,114,115, 0,114,101,115,116,111,114,101, 95,109,111,100,101, 0, 42,109, 97,116, 98,105, -116,115, 0, 97, 99,116, 99,111,108, 0,100,108,111, 99, 91, 51, 93, 0,111,114,105,103, 91, 51, 93, 0,100,115,105,122,101, 91, - 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116, 91, 52, 93, 0,114,111,116, 65,120,105,115, 91, 51, 93, 0,100, -114,111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110,103,108,101, 0,100,114,111,116, 65,110,103,108,101, 0,111, 98, -109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105,110,118, 91, 52, 93, 91, 52, 93, 0,108, 97,121, 0, 99,111,108, - 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,112,114,111,116,101, 99,116,102,108, 97,103, 0,116,114, 97, 99,107, -102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102,108, 97,103, 0,105,112,111,102,108, 97,103, 0,105,112,111,119, -105,110, 0,115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105,115,102,108, 97,103, 0, 98,111,117,110,100,116,121,112,101, 0, -100,117,112,111,110, 0,100,117,112,111,102,102, 0,100,117,112,115,116, 97, 0,100,117,112,101,110,100, 0,115,102, 0,109, 97, -115,115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116,105, 97, 0,102,111,114,109,102, 97, 99,116,111,114, 0,114,100, - 97,109,112,105,110,103, 0,109, 97,114,103,105,110, 0,109, 97,120, 95,118,101,108, 0,109,105,110, 95,118,101,108, 0,109, 95, - 99,111,110,116, 97, 99,116, 80,114,111, 99,101,115,115,105,110,103, 84,104,114,101,115,104,111,108,100, 0,114,111,116,109,111, -100,101, 0,100,116, 0,100,116,120, 0,101,109,112,116,121, 95,100,114, 97,119,116,121,112,101, 0,112, 97,100, 49, 91, 51, 93, - 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0,100,117,112,102, 97, 99,101,115, 99, 97, 0,112,114,111,112, 0, -115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108,101,114,115, 0, 97, 99,116,117, 97,116,111,114,115, 0, 98, 98, -115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, 97,109,101,102,108, 97,103, 0,103, 97,109,101,102,108, 97,103, - 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97,103, 0, 97,110,105,115,111,116,114,111,112,105, 99, 70,114,105, - 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97,105,110,116,115, 0,110,108, 97,115,116,114,105,112,115, 0,104, -111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115,116,101,109, 0, 42,115,111,102,116, 0, 42,100,117,112, 95,103, -114,111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97,103, 0,114,101,115,116,114,105, 99,116,102,108, 97,103, 0,115, -104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, 0,114,101, 99, 97,108, 99,111, 0, 98,111,100,121, 95,116,121, -112,101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 42,100,101,114,105,118,101,100, 68,101,102, -111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97,108, 0,108, 97,115,116, 68, 97,116, 97, 77, 97,115,107, 0,115, -116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0,103,112,117,108, 97,109,112, 0,112, 99, 95,105,100,115, 0, 42, -100,117,112,108,105,108,105,115,116, 0, 99,117,114,105,110,100,101,120, 0, 97, 99,116,105,118,101, 0,111,114,105,103,108, 97, -121, 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116,101,100, 0,111,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111,114, - 99,111, 91, 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111,114, 99,101,102,105,101,108,100, 0,115,104, 97,112,101, 0,116, -101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110,107, 95, 97,120,105,115, 0,122,100,105,114, 0,102, 95,115,116, -114,101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95,102,108,111,119, 0,102, 95,115,105,122,101, 0,102, 95,112,111, -119,101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100,105,115,116, 0,102, 95,112,111,119,101,114, 95,114, 0,109, 97, -120,114, 97,100, 0,109,105,110,114, 97,100, 0,112,100,101,102, 95,100, 97,109,112, 0,112,100,101,102, 95,114,100, 97,109,112, - 0,112,100,101,102, 95,112,101,114,109, 0,112,100,101,102, 95,102,114,105, 99,116, 0,112,100,101,102, 95,114,102,114,105, 99, -116, 0,112,100,101,102, 95,115,116,105, 99,107,110,101,115,115, 0, 97, 98,115,111,114,112,116,105,111,110, 0,112,100,101,102, - 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105,102,116, 0,112,100,101,102, 95,115, 98,111,102,116, 0, 99,108, -117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111,119, 0,107,105,110,107, 95,102,114,101,113, 0,107,105,110,107, - 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0,102,114,101,101, 95,101,110,100, 0,116,101,120, 95,110, 97, 98, -108, 97, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0,119,101,105,103,104,116, 91, 49, 51, 93, 0,103,108,111, 98, 97, -108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93, 0,102,114, 97,109,101, 0,116,111,116,112,111,105,110,116, 0,100, - 97,116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,120, 95, 97,114,114, 97,121, 0, 42,100, 97,116, 97, 91, 56, 93, 0, - 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, 0,115,105,109,102,114, 97,109,101, 0,115,116, 97,114,116,102,114, 97,109,101, - 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, 97,109,101, 0,108, 97,115,116, 95,101,120, 97, 99,116, 0,110, - 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,109,101, 91, 54, 52, 93, 0,105,110,102,111, 91, 54, 52, 93, 0,112, - 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97, 99,104,101, 0, 42,101,100,105,116, 0, 40, 42,102,114,101,101, 95, -101,100,105,116, 41, 40, 41, 0,108,105,110, 83,116,105,102,102, 0, 97,110,103, 83,116,105,102,102, 0,118,111,108,117,109,101, - 0,118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,116,101,114, 97,116,105,111,110,115, 0,100,105,116,101,114, 97,116, -105,111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,115, 0,107, 83, 82, 72, 82, 95, 67, 76, 0,107, 83, 75, 72, 82, 95, - 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 75, 95, 83, 80, 76, 84, - 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 86, 67, 70, 0,107, 68, 80, 0,107, 68, 71, 0,107, 76, 70, - 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77, 84, 0,107, 67, 72, 82, 0,107, 75, 72, 82, 0,107, 83, 72, 82, 0, -107, 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,108, 97,103,115, 0,110,117,109, 99,108,117,115,116,101,114,105,116, -101,114, 97,116,105,111,110,115, 0,119,101,108,100,105,110,103, 0,116,111,116,115,112,114,105,110,103, 0, 42, 98,112,111,105, -110,116, 0, 42, 98,115,112,114,105,110,103, 0,109,115,103, 95,108,111, 99,107, 0,109,115,103, 95,118, 97,108,117,101, 0,110, -111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71, 95, 77, 97,115,115, 91, 51, 50, 93, 0,103,114, 97,118, 0,109,101, -100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, 0,112,104,121,115,105, 99,115, 95,115,112,101,101,100, 0,103, -111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114,105, 99,116, 0,109,105,110,103,111, 97,108, 0,109, 97,120,103, -111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116,103,114,111,117,112, 0,110, 97,109,101,100, 86, 71, 95, 83,111, -102,116,103,111, 97,108, 91, 51, 50, 93, 0,102,117,122,122,121,110,101,115,115, 0,105,110,115,112,114,105,110,103, 0,105,110, -102,114,105, 99,116, 0,110, 97,109,101,100, 86, 71, 95, 83,112,114,105,110,103, 95, 75, 91, 51, 50, 93, 0,101,102,114, 97, 0, -105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115,111,108,118,101,114,102,108, 97,103,115, 0, 42, 42,107,101,121, -115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, 99,111,110,100,115,112,114,105,110,103, 0, 99,111,108, 98, 97, -108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108,115,116,105,102,102, 0,115, 98, 99, 95,109,111,100,101, 0, 97, -101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, 0,109, 97,120,108,111,111,112,115, 0, 99,104,111,107,101, 0, -115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, 99, 0,115,112,114,105,110,103,112,114,101,108,111, 97,100, 0, - 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116,105,102,102, 0,105,110,112,117,115,104, 0, 42,112,111,105,110, -116, 99, 97, 99,104,101, 0, 42,101,102,102,101, 99,116,111,114, 95,119,101,105,103,104,116,115, 0,108, 99,111,109, 91, 51, 93, - 0,108,114,111,116, 91, 51, 93, 91, 51, 93, 0,108,115, 99, 97,108,101, 91, 51, 93, 91, 51, 93, 0,112, 97,100, 52, 91, 52, 93, - 0, 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,101,100,111,112,116,105,111,110,115, 0,114,101,115,111,108, -117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119,114,101,115,120,121,122, 0,114,101, 97,108,115,105,122,101, 0, -103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114,101,110,100,101,114, 68,105,115,112,108, 97,121, 77,111,100,101, - 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0,118,105,115, 99,111,115,105,116,121, 77,111,100,101, 0,118,105, -115, 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0,103,114, 97,118,120, 0,103,114, 97,118,121, 0,103,114, 97,118, -122, 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, 69,110,100, 0, 98, 97,107,101, 83,116, 97,114,116, 0, 98, 97, -107,101, 69,110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82,101,102,105,110,101, 0,105,110,105, 86,101,108,120, 0,105,110, -105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111,114,103, 77,101,115,104, 0, 42,109,101,115,104, 83,117,114,102, - 97, 99,101, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102,100, 97,116, 97, 80, 97,116,104, 91, 50, 52, 48, 93, 0, 98, 98, - 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, 51, 93, 0,116,121,112,101, 70,108, 97,103,115, 0,100,111,109, - 97,105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117,109,101, 73,110,105,116, 84,121,112,101, 0,112, 97,114,116, 83, -108,105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116,101, 84,114, 97, 99,101,114,115, 0,103,101,110,101,114, 97,116, -101, 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, 99,101, 83,109,111,111,116,104,105,110,103, 0,115,117,114,102, - 97, 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 83,105,122,101, 0,112, 97,114,116,105, - 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70,105,101,108,100, 83,105,122,101, 0, 42,109,101,115,104, 83,117, -114,102, 78,111,114,109, 97,108,115, 0, 99,112,115, 84,105,109,101, 83,116, 97,114,116, 0, 99,112,115, 84,105,109,101, 69,110, -100, 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 83,116,114,101,110,103,116, -104, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97,100,105,117,115, 0,118,101,108,111, 99,105,116,121,102,111,114, - 99,101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 82, 97,100,105,117,115, 0,108, - 97,115,116,103,111,111,100,102,114, 97,109,101, 0,109,105,115,116,121,112,101, 0,104,111,114,114, 0,104,111,114,103, 0,104, -111,114, 98, 0,104,111,114,107, 0,122,101,110,114, 0,122,101,110,103, 0,122,101,110, 98, 0,122,101,110,107, 0, 97,109, 98, -107, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101,120,112, 0,114, 97,110,103,101, 0,108,105,110, -102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97, 99,116,105,118,105,116,121, 66,111,120, 82, 97, -100,105,117,115, 0,115,107,121,116,121,112,101, 0,111, 99, 99,108,117,115,105,111,110, 82,101,115, 0,112,104,121,115,105, 99, -115, 69,110,103,105,110,101, 0,116,105, 99,114, 97,116,101, 0,109, 97,120,108,111,103,105, 99,115,116,101,112, 0,112,104,121, -115,117, 98,115,116,101,112, 0,109, 97,120,112,104,121,115,116,101,112, 0,109,105,115,105, 0,109,105,115,116,115,116, 97, 0, -109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0,115,116, 97,114,114, 0,115,116, 97,114,103, 0,115,116, 97,114, - 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, 0,115,116, 97,114,109,105,110,100,105,115,116, 0,115,116, 97, -114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105,115,101, 0,100,111,102,115,116, 97, 0,100,111,102,101,110,100, - 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97,111,100,105,115,116, 0, 97,111,100,105,115,116,102, 97, 99, 0, - 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, 97,111,109,111,100,101, 0, 97,111,115, 97,109,112, 0, 97,111, -109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0, 97,111, 95, 97, -100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97,111, 95, 97,112,112,114,111,120, 95,101,114,114,111,114, 0, 97, -111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116,105,111,110, 0, 97,111, 95,105,110,100,105,114,101, 99,116, 95, -101,110,101,114,103,121, 0, 97,111, 95,101,110,118, 95,101,110,101,114,103,121, 0, 97,111, 95,112, 97,100, 50, 0, 97,111, 95, -105,110,100,105,114,101, 99,116, 95, 98,111,117,110, 99,101,115, 0, 97,111, 95,112, 97,100, 0, 97,111, 95,115, 97,109,112, 95, -109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, 95,109,101,116,104,111,100, 0, 97,111, 95, 97,112,112,114,111, -120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101,114,101, 0, 42, 97,111,116, 97, 98,108,101,115, 0,112, 97,100, - 91, 51, 93, 0,115,101,108, 99,111,108, 0,115,120, 0,115,121, 0, 42,108,112, 70,111,114,109, 97,116, 0, 42,108,112, 80, 97, -114,109,115, 0, 99, 98, 70,111,114,109, 97,116, 0, 99, 98, 80, 97,114,109,115, 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99, - 72, 97,110,100,108,101,114, 0,100,119, 75,101,121, 70,114, 97,109,101, 69,118,101,114,121, 0,100,119, 81,117, 97,108,105,116, -121, 0,100,119, 66,121,116,101,115, 80,101,114, 83,101, 99,111,110,100, 0,100,119, 70,108, 97,103,115, 0,100,119, 73,110,116, -101,114,108,101, 97,118,101, 69,118,101,114,121, 0, 97,118,105, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, - 99,100, 80, 97,114,109,115, 0, 42,112, 97,100, 0, 99,100, 83,105,122,101, 0,113,116, 99,111,100,101, 99,110, 97,109,101, 91, - 49, 50, 56, 93, 0, 99,111,100,101, 99, 84,121,112,101, 0, 99,111,100,101, 99, 83,112, 97,116,105, 97,108, 81,117, 97,108,105, -116,121, 0, 99,111,100,101, 99, 0, 99,111,100,101, 99, 70,108, 97,103,115, 0, 99,111,108,111,114, 68,101,112,116,104, 0, 99, -111,100,101, 99, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 83,112, 97,116,105, 97,108, 81,117, - 97,108,105,116,121, 0,109,105,110, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0,107,101,121, 70,114, 97,109, -101, 82, 97,116,101, 0, 98,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 99,111,100,101, 99, 84,121,112,101, 0, 97,117,100, -105,111, 83, 97,109,112,108,101, 82, 97,116,101, 0, 97,117,100,105,111, 66,105,116, 68,101,112,116,104, 0, 97,117,100,105,111, - 67,104, 97,110,110,101,108,115, 0, 97,117,100,105,111, 67,111,100,101, 99, 70,108, 97,103,115, 0, 97,117,100,105,111, 66,105, -116, 82, 97,116,101, 0, 97,117,100,105,111, 95, 99,111,100,101, 99, 0,118,105,100,101,111, 95, 98,105,116,114, 97,116,101, 0, - 97,117,100,105,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95,109,105,120,114, 97,116,101, 0, 97,117,100,105, -111, 95,118,111,108,117,109,101, 0,103,111,112, 95,115,105,122,101, 0,114, 99, 95,109,105,110, 95,114, 97,116,101, 0,114, 99, - 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102,102,101,114, 95,115,105,122,101, 0,109,117,120, 95,112, 97, 99, -107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116,101, 0,109,105,120,114, 97,116,101, 0,109, 97,105,110, 0,115, -112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,111,112,112,108,101,114, 95,102, 97, 99,116,111,114, 0,100,105,115, -116, 97,110, 99,101, 95,109,111,100,101,108, 0, 42,109, 97,116, 95,111,118,101,114,114,105,100,101, 0, 42,108,105,103,104,116, - 95,111,118,101,114,114,105,100,101, 0,108, 97,121, 95,122,109, 97,115,107, 0,108, 97,121,102,108, 97,103, 0,112, 97,115,115, -102,108, 97,103, 0,112, 97,115,115, 95,120,111,114, 0, 42, 97,118,105, 99,111,100,101, 99,100, 97,116, 97, 0, 42,113,116, 99, -111,100,101, 99,100, 97,116, 97, 0,113,116, 99,111,100,101, 99,115,101,116,116,105,110,103,115, 0,102,102, 99,111,100,101, 99, -100, 97,116, 97, 0,115,117, 98,102,114, 97,109,101, 0,112,115,102,114, 97, 0,112,101,102,114, 97, 0,105,109, 97,103,101,115, - 0,102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97,100,115, 0,102,114, 97,109,101,108,101,110, 0, 98,108,117,114,102, - 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101,100,103,101, 66, 0,102,117,108,108,115, 99,114,101,101,110, 0, -120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113,112,108, 97,121, 0, 97,116,116,114,105, 98, 0,114,116, 50, 0, -102,114, 97,109,101, 95,115,116,101,112, 0,115,116,101,114,101,111,109,111,100,101, 0,100,105,109,101,110,115,105,111,110,115, -112,114,101,115,101,116, 0,109, 97,120,105,109,115,105,122,101, 0,120,115, 99,104, 0,121,115, 99,104, 0,120,112, 97,114,116, -115, 0,121,112, 97,114,116,115, 0,119,105,110,112,111,115, 0,112,108, 97,110,101,115, 0,105,109,116,121,112,101, 0,115,117, - 98,105,109,116,121,112,101, 0,113,117, 97,108,105,116,121, 0,100,105,115,112,108, 97,121,109,111,100,101, 0,114,112, 97,100, - 49, 0,114,112, 97,100, 50, 0,115, 99,101,109,111,100,101, 0,114, 97,121,116,114, 97, 99,101, 95,111,112,116,105,111,110,115, - 0,114, 97,121,116,114, 97, 99,101, 95,115,116,114,117, 99,116,117,114,101, 0,114,101,110,100,101,114,101,114, 0,111, 99,114, -101,115, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, 0,102,114,115, 95,115,101, 99, 0,101,100,103,101,105,110,116, - 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100,105,115,112,114,101, 99,116, 0,108, 97,121,101,114,115, 0, 97, - 99,116,108, 97,121, 0,109, 98,108,117,114, 95,115, 97,109,112,108,101,115, 0,120, 97,115,112, 0,121, 97,115,112, 0,102,114, -115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, 0, 99,111,108,111,114, 95,109,103,116, 95,102,108, 97,103, 0, -112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117,101, 0,112,111,115,116,115, 97,116, 0,100,105,116,104,101,114, - 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95,111,115, 97, 0, 98, 97,107,101, 95,102,105,108,116,101,114, 0, - 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102,108, 97,103, 0, 98, 97,107,101, 95,110,111,114,109, 97,108, 95, -115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95,115,112,108,105,116, 0, 98, 97,107,101, 95,109, 97,120,100,105, -115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, 0, 98, 97,107,101, 95,112, 97,100, 0, 98, 97, 99,107, 98,117, -102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0,115,116, 97,109,112, 0,115,116, 97,109,112, 95,102,111,110,116, - 95,105,100, 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, 49, 54, 48, 93, 0,102,103, 95,115,116, 97,109,112, 91, 52, 93, - 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, 0,115,101,113, 95,112,114,101,118, 95,116,121,112,101, 0,115,101,113, 95,114, -101,110,100, 95,116,121,112,101, 0,115,101,113, 95,102,108, 97,103, 0,112, 97,100, 53, 91, 53, 93, 0,115,105,109,112,108,105, -102,121, 95,102,108, 97,103, 0,115,105,109,112,108,105,102,121, 95,115,117, 98,115,117,114,102, 0,115,105,109,112,108,105,102, -121, 95,115,104, 97,100,111,119,115, 97,109,112,108,101,115, 0,115,105,109,112,108,105,102,121, 95,112, 97,114,116,105, 99,108, -101,115, 0,115,105,109,112,108,105,102,121, 95, 97,111,115,115,115, 0, 99,105,110,101,111,110,119,104,105,116,101, 0, 99,105, -110,101,111,110, 98,108, 97, 99,107, 0, 99,105,110,101,111,110,103, 97,109,109, 97, 0,106,112, 50, 95,112,114,101,115,101,116, - 0,106,112, 50, 95,100,101,112,116,104, 0,114,112, 97,100, 51, 0,100,111,109,101,114,101,115, 0,100,111,109,101,109,111,100, -101, 0,100,111,109,101, 97,110,103,108,101, 0,100,111,109,101,116,105,108,116, 0,100,111,109,101,114,101,115, 98,117,102, 0, - 42,100,111,109,101,116,101,120,116, 0,101,110,103,105,110,101, 91, 51, 50, 93, 0,112, 97,114,116,105, 99,108,101, 95,112,101, -114, 99, 0,115,117, 98,115,117,114,102, 95,109, 97,120, 0,115,104, 97,100, 98,117,102,115, 97,109,112,108,101, 95,109, 97,120, - 0, 97,111, 95,101,114,114,111,114, 0,116,105,108,116, 0,114,101,115, 98,117,102, 0, 42,119, 97,114,112,116,101,120,116, 0, - 99,111,108, 91, 51, 93, 0,109, 97,116,109,111,100,101, 0,102,114, 97,109,105,110,103, 0,114,116, 49, 0,100,111,109,101, 0, -115,116,101,114,101,111,102,108, 97,103, 0,101,121,101,115,101,112, 97,114, 97,116,105,111,110, 0, 42, 99, 97,109,101,114, 97, - 0, 42, 42, 98,114,117,115,104,101,115, 0, 97, 99,116,105,118,101, 95, 98,114,117,115,104, 95,105,110,100,101,120, 0, 98,114, -117,115,104, 95, 99,111,117,110,116, 0, 42,112, 97,105,110,116, 95, 99,117,114,115,111,114, 0,112, 97,105,110,116, 95, 99,117, -114,115,111,114, 95, 99,111,108, 91, 52, 93, 0,112, 97,105,110,116, 0,115,101, 97,109, 95, 98,108,101,101,100, 0,110,111,114, -109, 97,108, 95, 97,110,103,108,101, 0,115, 99,114,101,101,110, 95,103,114, 97, 98, 95,115,105,122,101, 91, 50, 93, 0, 42,112, - 97,105,110,116, 99,117,114,115,111,114, 0,105,110,118,101,114,116, 0,116,111,116,114,101,107,101,121, 0,116,111,116, 97,100, -100,107,101,121, 0, 98,114,117,115,104,116,121,112,101, 0, 98,114,117,115,104, 91, 55, 93, 0,101,109,105,116,116,101,114,100, -105,115,116, 0,115,101,108,101, 99,116,109,111,100,101, 0,101,100,105,116,116,121,112,101, 0,100,114, 97,119, 95,115,116,101, -112, 0,102, 97,100,101, 95,102,114, 97,109,101,115, 0,110, 97,109,101, 91, 51, 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, 93, - 0,114, 97,100,105, 97,108, 95,115,121,109,109, 91, 51, 93, 0,108, 97,115,116, 95,120, 0,108, 97,115,116, 95,121, 0,108, 97, -115,116, 95, 97,110,103,108,101, 0,100,114, 97,119, 95, 97,110, 99,104,111,114,101,100, 0, 97,110, 99,104,111,114,101,100, 95, -115,105,122,101, 0, 97,110, 99,104,111,114,101,100, 95,108,111, 99, 97,116,105,111,110, 91, 51, 93, 0, 97,110, 99,104,111,114, -101,100, 95,105,110,105,116,105, 97,108, 95,109,111,117,115,101, 91, 50, 93, 0,100,114, 97,119, 95,112,114,101,115,115,117,114, -101, 0,112,114,101,115,115,117,114,101, 95,118, 97,108,117,101, 0,115,112,101, 99,105, 97,108, 95,114,111,116, 97,116,105,111, -110, 0, 42,118,112, 97,105,110,116, 95,112,114,101,118, 0, 42,119,112, 97,105,110,116, 95,112,114,101,118, 0, 42,118,112, 97, -105,110,116, 0, 42,119,112, 97,105,110,116, 0,118,103,114,111,117,112, 95,119,101,105,103,104,116, 0, 99,111,114,110,101,114, -116,121,112,101, 0,101,100,105,116, 98,117,116,102,108, 97,103, 0,106,111,105,110,116,114,105,108,105,109,105,116, 0,100,101, -103,114, 0,116,117,114,110, 0,101,120,116,114, 95,111,102,102,115, 0,100,111,117, 98,108,105,109,105,116, 0,110,111,114,109, - 97,108,115,105,122,101, 0, 97,117,116,111,109,101,114,103,101, 0,115,101,103,109,101,110,116,115, 0,114,105,110,103,115, 0, -118,101,114,116,105, 99,101,115, 0,117,110,119,114, 97,112,112,101,114, 0,117,118, 99, 97,108, 99, 95,114, 97,100,105,117,115, - 0,117,118, 99, 97,108, 99, 95, 99,117, 98,101,115,105,122,101, 0,117,118, 99, 97,108, 99, 95,109, 97,114,103,105,110, 0,117, -118, 99, 97,108, 99, 95,109, 97,112,100,105,114, 0,117,118, 99, 97,108, 99, 95,109, 97,112, 97,108,105,103,110, 0,117,118, 99, - 97,108, 99, 95,102,108, 97,103, 0,117,118, 95,102,108, 97,103, 0,117,118, 95,115,101,108,101, 99,116,109,111,100,101, 0,117, -118, 95,112, 97,100, 91, 50, 93, 0, 97,117,116,111,105,107, 95, 99,104, 97,105,110,108,101,110, 0,105,109, 97,112, 97,105,110, -116, 0,112, 97,114,116,105, 99,108,101, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 95,115,105,122,101, 0,115,101,108, -101, 99,116, 95,116,104,114,101,115,104, 0, 99,108,101, 97,110, 95,116,104,114,101,115,104, 0, 97,117,116,111,107,101,121, 95, -109,111,100,101, 0, 97,117,116,111,107,101,121, 95,102,108, 97,103, 0,114,101,116,111,112,111, 95,109,111,100,101, 0,114,101, -116,111,112,111, 95,112, 97,105,110,116, 95,116,111,111,108, 0,108,105,110,101, 95,100,105,118, 0,101,108,108,105,112,115,101, - 95,100,105,118, 0,114,101,116,111,112,111, 95,104,111,116,115,112,111,116, 0,109,117,108,116,105,114,101,115, 95,115,117, 98, -100,105,118, 95,116,121,112,101, 0,115,107,103,101,110, 95,114,101,115,111,108,117,116,105,111,110, 0,115,107,103,101,110, 95, -116,104,114,101,115,104,111,108,100, 95,105,110,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111, -108,100, 95,101,120,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,114, 97,116,105,111, 0,115, -107,103,101,110, 95,108,101,110,103,116,104, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 97,110,103,108,101, 95,108,105, -109,105,116, 0,115,107,103,101,110, 95, 99,111,114,114,101,108, 97,116,105,111,110, 95,108,105,109,105,116, 0,115,107,103,101, -110, 95,115,121,109,109,101,116,114,121, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95, - 97,110,103,108,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,108,101,110,103, -116,104, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,100,105,115,116, 97,110, 99, -101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,112,111,115, -116,112,114,111, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 95,112, 97,115,115,101,115, 0,115,107,103,101,110, 95, -115,117, 98,100,105,118,105,115,105,111,110,115, 91, 51, 93, 0,115,107,103,101,110, 95,109,117,108,116,105, 95,108,101,118,101, -108, 0, 42,115,107,103,101,110, 95,116,101,109,112,108, 97,116,101, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, - 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 95, 99,111,110,118,101,114,116, 0,115,107,103,101,110, 95,115,117, - 98,100,105,118,105,115,105,111,110, 95,110,117,109, 98,101,114, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95, -111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,114,111,108,108, 0,115,107,103,101, -110, 95,115,105,100,101, 95,115,116,114,105,110,103, 91, 56, 93, 0,115,107,103,101,110, 95,110,117,109, 95,115,116,114,105,110, -103, 91, 56, 93, 0,101,100,103,101, 95,109,111,100,101, 0,115,110, 97,112, 95,109,111,100,101, 0,115,110, 97,112, 95,102,108, - 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 0,112,114,111,112, - 95,109,111,100,101, 0, 97,117,116,111, 95,110,111,114,109, 97,108,105,122,101, 0,105,110,116,112, 97,100, 0,116,111,116,111, - 98,106, 0,116,111,116,108, 97,109,112, 0,116,111,116,111, 98,106,115,101,108, 0,116,111,116, 99,117,114,118,101, 0,116,111, -116,109,101,115,104, 0,116,111,116, 97,114,109, 97,116,117,114,101, 0,115, 99, 97,108,101, 95,108,101,110,103,116,104, 0,115, -121,115,116,101,109, 0,103,114, 97,118,105,116,121, 91, 51, 93, 0,113,117,105, 99,107, 95, 99, 97, 99,104,101, 95,115,116,101, -112, 0, 42,119,111,114,108,100, 0, 42,115,101,116, 0, 98, 97,115,101, 0, 42, 98, 97,115, 97, 99,116, 0, 42,111, 98,101,100, -105,116, 0, 99,117,114,115,111,114, 91, 51, 93, 0,116,119, 99,101,110,116, 91, 51, 93, 0,116,119,109,105,110, 91, 51, 93, 0, -116,119,109, 97,120, 91, 51, 93, 0,108, 97,121, 97, 99,116, 0, 42,101,100, 0, 42,116,111,111,108,115,101,116,116,105,110,103, -115, 0, 42,115,116, 97,116,115, 0, 97,117,100,105,111, 0,116,114, 97,110,115,102,111,114,109, 95,115,112, 97, 99,101,115, 0, - 42,115,111,117,110,100, 95,115, 99,101,110,101, 0, 42,115,111,117,110,100, 95,115, 99,101,110,101, 95,104, 97,110,100,108,101, - 0, 42,102,112,115, 95,105,110,102,111, 0, 42,116,104,101, 68, 97,103, 0,100, 97,103,105,115,118, 97,108,105,100, 0,100, 97, -103,102,108, 97,103,115, 0,106,117,109,112,102,114, 97,109,101, 0,112, 97,100, 53, 0, 97, 99,116,105,118,101, 95,107,101,121, -105,110,103,115,101,116, 0,107,101,121,105,110,103,115,101,116,115, 0,103,109, 0,117,110,105,116, 0,112,104,121,115,105, 99, -115, 95,115,101,116,116,105,110,103,115, 0, 98,108,101,110,100, 0,118,105,101,119, 0,119,105,110,109, 97,116, 91, 52, 93, 91, - 52, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,105,110,118, 91, 52, 93, 91, 52, 93, 0,112, -101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,105,110,118, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, - 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,116,119,109, 97,116, - 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,122,102, 97, 99, 0, 99, 97,109,100,120, 0, 99, 97, -109,100,121, 0,112,105,120,115,105,122,101, 0, 99, 97,109,122,111,111,109, 0,118,105,101,119, 98,117,116, 0,116,119,100,114, - 97,119,102,108, 97,103, 0,114,102,108, 97,103, 0,118,105,101,119,108,111, 99,107, 0,112,101,114,115,112, 0, 99,108,105,112, - 91, 54, 93, 91, 52, 93, 0, 99,108,105,112, 95,108,111, 99, 97,108, 91, 54, 93, 91, 52, 93, 0, 42, 99,108,105,112, 98, 98, 0, - 42,108,111, 99, 97,108,118,100, 0, 42,114,105, 0, 42,114,101,116,111,112,111, 95,118,105,101,119, 95,100, 97,116, 97, 0, 42, -100,101,112,116,104,115, 0, 42,115,109,115, 0, 42,115,109,111,111,116,104, 95,116,105,109,101,114, 0,108,118,105,101,119,113, -117, 97,116, 91, 52, 93, 0,108,112,101,114,115,112, 0,108,118,105,101,119, 0,103,114,105,100,118,105,101,119, 0,116,119, 97, -110,103,108,101, 91, 51, 93, 0,112, 97,100,102, 0,114,101,103,105,111,110, 98, 97,115,101, 0,115,112, 97, 99,101,116,121,112, -101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, 99,107,104, 97,110,100,108,101,114, 91, 56, 93, 0,108, 97,121, - 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0, 98,103,112,105, 99, 98, 97,115,101, 0, 42, 98,103,112,105, - 99, 0,111, 98, 95, 99,101,110,116,114,101, 95, 98,111,110,101, 91, 51, 50, 93, 0,100,114, 97,119,116,121,112,101, 0,115, 99, -101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0,112,105,118,111,116, 95,108, 97,115,116, 0,103,114,105,100, 0,110, -101, 97,114, 0,102, 97,114, 0,103,114,105,100,108,105,110,101,115, 0,103,114,105,100,102,108, 97,103, 0,103,114,105,100,115, -117, 98,100,105,118, 0,109,111,100,101,115,101,108,101, 99,116, 0,107,101,121,102,108, 97,103,115, 0,116,119,116,121,112,101, - 0,116,119,109,111,100,101, 0,116,119,102,108, 97,103, 0, 99,117,115,116,111,109,100, 97,116, 97, 95,109, 97,115,107, 0, 97, -102,116,101,114,100,114, 97,119, 0,122, 98,117,102, 0,120,114, 97,121, 0,110,100,111,102,109,111,100,101, 0,110,100,111,102, -102,105,108,116,101,114, 0, 42,112,114,111,112,101,114,116,105,101,115, 95,115,116,111,114, 97,103,101, 0,118,101,114,116, 0, -104,111,114, 0,109, 97,115,107, 0,109,105,110, 91, 50, 93, 0,109, 97,120, 91, 50, 93, 0,109,105,110,122,111,111,109, 0,109, - 97,120,122,111,111,109, 0,115, 99,114,111,108,108, 0,115, 99,114,111,108,108, 95,117,105, 0,107,101,101,112,116,111,116, 0, -107,101,101,112,122,111,111,109, 0,107,101,101,112,111,102,115, 0, 97,108,105,103,110, 0,119,105,110,120, 0,119,105,110,121, - 0,111,108,100,119,105,110,120, 0,111,108,100,119,105,110,121, 0, 42,116, 97, 98, 95,111,102,102,115,101,116, 0,116, 97, 98, - 95,110,117,109, 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99,114,101,101,110, 0,118, 50,100, 0, 42, 97,100,115, 0,103,104, -111,115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, 97,112, 0, 99,117,114,115,111,114, 86, 97,108, 0,109, 97,105, -110, 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117,115,101,114, 0,114,101, 95, 97,108,105,103,110, 0,112,114,101, -118,105,101,119, 0,112, 97,116,104,102,108, 97,103, 0,100, 97,116, 97,105, 99,111,110, 0, 42,112,105,110,105,100, 0,114,101, -110,100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104,111,119,110, 0,122,101, 98,114, 97, 0,122,111,111,109, 0,116, -105,116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,102,105,108,101, 91, 56, 48, 93, 0,114,101,110, 97,109, -101,102,105,108,101, 91, 56, 48, 93, 0,115,111,114,116, 0,100,105,115,112,108, 97,121, 0, 97, 99,116,105,118,101, 95, 98,111, -111,107,109, 97,114,107, 0, 97, 99,116,105,118,101, 95,102,105,108,101, 0,115,101,108,115,116, 97,116,101, 0,102, 95,102,112, - 0,102,112, 95,115,116,114, 91, 56, 93, 0,115, 99,114,111,108,108, 95,111,102,102,115,101,116, 0, 42,112, 97,114, 97,109,115, - 0, 42,102,105,108,101,115, 0, 42,102,111,108,100,101,114,115, 95,112,114,101,118, 0, 42,102,111,108,100,101,114,115, 95,110, -101,120,116, 0, 42,111,112, 0, 42,115,109,111,111,116,104,115, 99,114,111,108,108, 95,116,105,109,101,114, 0, 42,108, 97,121, -111,117,116, 0,114,101, 99,101,110,116,110,114, 0, 98,111,111,107,109, 97,114,107,110,114, 0,115,121,115,116,101,109,110,114, - 0,116,114,101,101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97,114, 99,104, 95,115,116,114,105,110,103, 91, 51, - 50, 93, 0,115,101, 97,114, 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, 95,102,108, 97,103,115, 0,100,111, 95, 0,111, -117,116,108,105,110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0, 42, 99,117,109, 97,112, 0,105,109, 97,110,114, - 0, 99,117,114,116,105,108,101, 0,105,109,116,121,112,101,110,114, 0,108,111, 99,107, 0,112,105,110, 0,100,116, 95,117,118, - 0,115,116,105, 99,107,121, 0,100,116, 95,117,118,115,116,114,101,116, 99,104, 0, 99,117,114,115,111,114, 91, 50, 93, 0, 99, -101,110,116,120, 0, 99,101,110,116,121, 0,115, 99,111,112,101,115, 0,115, 97,109,112,108,101, 95,108,105,110,101, 95,104,105, -115,116, 0, 42,116,101,120,116, 0,116,111,112, 0,118,105,101,119,108,105,110,101,115, 0,108,104,101,105,103,104,116, 0, 99, -119,105,100,116,104, 0,108,105,110,101,110,114,115, 95,116,111,116, 0,108,101,102,116, 0,115,104,111,119,108,105,110,101,110, -114,115, 0,116, 97, 98,110,117,109, 98,101,114, 0,115,104,111,119,115,121,110,116, 97,120, 0,111,118,101,114,119,114,105,116, -101, 0,108,105,118,101, 95,101,100,105,116, 0,112,105,120, 95,112,101,114, 95,108,105,110,101, 0,116,120,116,115, 99,114,111, -108,108, 0,116,120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100,111,112,108,117,103,105,110,115, 0,102,105,110, -100,115,116,114, 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99,101,115,116,114, 91, 50, 53, 54, 93, 0, 42,112,121, 95,100,114, - 97,119, 0, 42,112,121, 95,101,118,101,110,116, 0, 42,112,121, 95, 98,117,116,116,111,110, 0, 42,112,121, 95, 98,114,111,119, -115,101,114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,111, 98, 97,108,100,105, 99,116, 0,108, 97,115,116,115, -112, 97, 99,101, 0,115, 99,114,105,112,116,110, 97,109,101, 91, 50, 53, 54, 93, 0,115, 99,114,105,112,116, 97,114,103, 91, 50, - 53, 54, 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,117,116, 95,114,101,102,115, 0, 42, 97,114,114, 97,121, 0, 99, 97, 99, -104,101,115, 0, 99, 97, 99,104,101, 95,100,105,115,112,108, 97,121, 0,114,101,100,114, 97,119,115, 0, 42,105,100, 0, 97,115, -112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, 0,109,121, 0, 42,101,100,105,116,116,114,101,101, 0,116,114, -101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,109,101,110,117, 0,110,117,109,116,105,108,101,115,120, 0,110,117, -109,116,105,108,101,115,121, 0,118,105,101,119,114,101, 99,116, 0, 98,111,111,107,109, 97,114,107,114,101, 99,116, 0,115, 99, -114,111,108,108,112,111,115, 0,115, 99,114,111,108,108,104,101,105,103,104,116, 0,115, 99,114,111,108,108, 97,114,101, 97, 0, -114,101,116,118, 97,108, 0,112,114,118, 95,119, 0,112,114,118, 95,104, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 41, - 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95,101,118,101,110,116, 41, 40, 41, 0, 40, 42,114,101,116,117,114, -110,102,117,110, 99, 95, 97,114,103,115, 41, 40, 41, 0, 42, 97,114,103, 49, 0, 42, 97,114,103, 50, 0, 42,109,101,110,117,112, - 0, 42,112,117,112,109,101,110,117, 0, 42,105,109,103, 0,108,101,110, 95, 97,108,108,111, 99, 0, 99,117,114,115,111,114, 0, -114,112,116, 95,109, 97,115,107, 0,115, 99,114,111,108,108, 98, 97, 99,107, 0,104,105,115,116,111,114,121, 0,112,114,111,109, -112,116, 91, 50, 53, 54, 93, 0,108, 97,110,103,117, 97,103,101, 91, 51, 50, 93, 0,115,101,108, 95,115,116, 97,114,116, 0,115, -101,108, 95,101,110,100, 0,102,105,108,116,101,114, 91, 54, 52, 93, 0,102,105,108,101,110, 97,109,101, 91, 50, 53, 54, 93, 0, - 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,100, 0,114, 95,116,111, 95,108, 0,112,111,105,110,116,115, 0,107, -101,114,110,105,110,103, 0,105,116, 97,108,105, 99, 0, 98,111,108,100, 0,115,104, 97,100,111,119, 0,115,104, 97,100,120, 0, -115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, 97, 0,115,104, 97,100,111,119, 99,111,108,111,114, 0,112, 97, -110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, 98,101,108, 0,119,105,100,103,101,116,108, 97, 98,101,108, 0, -119,105,100,103,101,116, 0,112, 97,110,101,108,122,111,111,109, 0,109,105,110,108, 97, 98,101,108, 99,104, 97,114,115, 0,109, -105,110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111,108,117,109,110,115,112, 97, 99,101, 0,116,101,109,112,108, 97, -116,101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, 0, 98,117,116,116,111,110,115,112, 97, 99,101,120, 0, 98,117, -116,116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108,115,112, 97, 99,101, 0,112, 97,110,101,108,111,117,116,101,114, - 0,112, 97,100, 91, 49, 93, 0,111,117,116,108,105,110,101, 91, 52, 93, 0,105,110,110,101,114, 91, 52, 93, 0,105,110,110,101, -114, 95,115,101,108, 91, 52, 93, 0,105,116,101,109, 91, 52, 93, 0,116,101,120,116, 91, 52, 93, 0,116,101,120,116, 95,115,101, -108, 91, 52, 93, 0,115,104, 97,100,101,100, 0,115,104, 97,100,101,116,111,112, 0,115,104, 97,100,101,100,111,119,110, 0, 97, -108,112,104, 97, 95, 99,104,101, 99,107, 0,105,110,110,101,114, 95, 97,110,105,109, 91, 52, 93, 0,105,110,110,101,114, 95, 97, -110,105,109, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 91, 52, 93, 0,105,110,110,101,114, 95,107,101, -121, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 91, 52, 93, 0,105,110,110,101,114, 95,100, -114,105,118,101,110, 95,115,101,108, 91, 52, 93, 0,119, 99,111,108, 95,114,101,103,117,108, 97,114, 0,119, 99,111,108, 95,116, -111,111,108, 0,119, 99,111,108, 95,116,101,120,116, 0,119, 99,111,108, 95,114, 97,100,105,111, 0,119, 99,111,108, 95,111,112, -116,105,111,110, 0,119, 99,111,108, 95,116,111,103,103,108,101, 0,119, 99,111,108, 95,110,117,109, 0,119, 99,111,108, 95,110, -117,109,115,108,105,100,101,114, 0,119, 99,111,108, 95,109,101,110,117, 0,119, 99,111,108, 95,112,117,108,108,100,111,119,110, - 0,119, 99,111,108, 95,109,101,110,117, 95, 98, 97, 99,107, 0,119, 99,111,108, 95,109,101,110,117, 95,105,116,101,109, 0,119, - 99,111,108, 95, 98,111,120, 0,119, 99,111,108, 95,115, 99,114,111,108,108, 0,119, 99,111,108, 95,112,114,111,103,114,101,115, -115, 0,119, 99,111,108, 95,108,105,115,116, 95,105,116,101,109, 0,119, 99,111,108, 95,115,116, 97,116,101, 0,105, 99,111,110, -102,105,108,101, 91, 56, 48, 93, 0, 98, 97, 99,107, 91, 52, 93, 0,116,105,116,108,101, 91, 52, 93, 0,116,101,120,116, 95,104, -105, 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,105,116,108,101, 91, 52, 93, 0,104, -101, 97,100,101,114, 95,116,101,120,116, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0, - 98,117,116,116,111,110, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,105,116,108,101, 91, 52, 93, 0, 98,117,116,116,111,110, - 95,116,101,120,116, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,108,105,115,116, 91, - 52, 93, 0,108,105,115,116, 95,116,105,116,108,101, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 91, 52, 93, 0,108,105, -115,116, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,112, 97,110,101,108, 91, 52, 93, 0,112, 97,110,101,108, 95,116,105,116, -108,101, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 95,104, -105, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93, 0,115,104, 97,100,101, 50, 91, 52, 93, 0,104,105,108,105,116,101, 91, - 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,101, 91, 52, 93, 0,115,101,108,101, 99,116, 91, 52, 93, 0,108, 97,109, -112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, 52, 93, 0,103,114,111,117,112, 91, 52, 93, 0,103,114,111,117,112, 95, 97, 99, -116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,111,114,109, 91, 52, 93, 0,118,101,114,116,101,120, 91, 52, 93, 0,118, -101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 91, 52, 93, 0,101,100,103,101, 95,115,101,108, -101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101, 97,109, 91, 52, 93, 0,101,100,103,101, 95,115,104, 97,114,112, 91, 52, - 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, 93, 0,101,100,103,101, 95, 99,114,101, 97,115,101, 91, 52, 93, - 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,102, 97, 99,101, 95,100,111,116, - 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0,118,101,114,116,101,120, 95,110,111,114,109, 97,108, 91, 52, 93, 0, 98, -111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110,101, 95,112,111,115,101, 91, 52, 93, 0,115,116,114,105,112, 91, - 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, 52, 93, 0, 99,102,114, 97,109,101, 91, 52, 93, 0,110,117,114, - 98, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,118,108,105,110,101, 91, 52, 93, 0, 97, 99,116, 95,115,112,108, -105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101, -108, 95,118,108,105,110,101, 91, 52, 93, 0,108, 97,115,116,115,101,108, 95,112,111,105,110,116, 91, 52, 93, 0,104, 97,110,100, -108,101, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,117,116,111, 91, 52, 93, 0,104, 97,110,100,108,101, - 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,108,105,103,110, 91, 52, 93, 0,104, 97,110,100,108,101, 95, -115,101,108, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97,117,116,111, 91, 52, 93, 0,104, - 97,110,100,108,101, 95,115,101,108, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97,108,105, -103,110, 91, 52, 93, 0,100,115, 95, 99,104, 97,110,110,101,108, 91, 52, 93, 0,100,115, 95,115,117, 98, 99,104, 97,110,110,101, -108, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,111,117,116,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105, -110,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,102,111, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95, -101,114,114,111,114, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95, 99,117,114,115,111,114, 91, 52, 93, 0,118,101,114,116,101, -120, 95,115,105,122,101, 0,102, 97, 99,101,100,111,116, 95,115,105,122,101, 0, 98,112, 97,100, 91, 50, 93, 0,115,121,110,116, - 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,120,110, 91, 52, 93, 0,115,121,110,116, 97,120, 98, 91, 52, 93, 0,115,121,110, -116, 97,120,118, 91, 52, 93, 0,115,121,110,116, 97,120, 99, 91, 52, 93, 0,109,111,118,105,101, 91, 52, 93, 0,105,109, 97,103, -101, 91, 52, 93, 0,115, 99,101,110,101, 91, 52, 93, 0, 97,117,100,105,111, 91, 52, 93, 0,101,102,102,101, 99,116, 91, 52, 93, - 0,112,108,117,103,105,110, 91, 52, 93, 0,116,114, 97,110,115,105,116,105,111,110, 91, 52, 93, 0,109,101,116, 97, 91, 52, 93, - 0,101,100,105,116,109,101,115,104, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101, -120, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,104, 97,110, -100,108,101, 95,118,101,114,116,101,120, 95,115,105,122,101, 0,104,112, 97,100, 91, 55, 93, 0,112,114,101,118,105,101,119, 95, - 98, 97, 99,107, 91, 52, 93, 0,115,111,108,105,100, 91, 52, 93, 0,116,117,105, 0,116, 98,117,116,115, 0,116,118, 51,100, 0, -116,102,105,108,101, 0,116,105,112,111, 0,116,105,110,102,111, 0,116,115,110,100, 0,116, 97, 99,116, 0,116,110,108, 97, 0, -116,115,101,113, 0,116,105,109, 97, 0,116,105,109, 97,115,101,108, 0,116,101,120,116, 0,116,111,111,112,115, 0,116,116,105, -109,101, 0,116,110,111,100,101, 0,116,108,111,103,105, 99, 0,116,117,115,101,114,112,114,101,102, 0,116, 99,111,110,115,111, -108,101, 0,116, 97,114,109, 91, 50, 48, 93, 0, 97, 99,116,105,118,101, 95,116,104,101,109,101, 95, 97,114,101, 97, 0,109,111, -100,117,108,101, 91, 54, 52, 93, 0,115,112,101, 99, 91, 52, 93, 0,100,117,112,102,108, 97,103, 0,115, 97,118,101,116,105,109, -101, 0,116,101,109,112,100,105,114, 91, 49, 54, 48, 93, 0,102,111,110,116,100,105,114, 91, 49, 54, 48, 93, 0,114,101,110,100, -101,114,100,105,114, 91, 49, 54, 48, 93, 0,116,101,120,116,117,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,116,101,120, -100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,115,101,113,100,105,114, 91, 49, 54, 48, 93, 0,112,121,116,104,111,110,100, -105,114, 91, 49, 54, 48, 93, 0,115,111,117,110,100,100,105,114, 91, 49, 54, 48, 93, 0,105,109, 97,103,101, 95,101,100,105,116, -111,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, - 97,121,101,114, 95,112,114,101,115,101,116, 0,118, 50,100, 95,109,105,110, 95,103,114,105,100,115,105,122,101, 0,116,105,109, -101, 99,111,100,101, 95,115,116,121,108,101, 0,118,101,114,115,105,111,110,115, 0,100, 98,108, 95, 99,108,105, 99,107, 95,116, -105,109,101, 0,103, 97,109,101,102,108, 97,103,115, 0,119,104,101,101,108,108,105,110,101,115, 99,114,111,108,108, 0,117,105, -102,108, 97,103, 0,108, 97,110,103,117, 97,103,101, 0,117,115,101,114,112,114,101,102, 0,118,105,101,119,122,111,111,109, 0, -109,105,120, 98,117,102,115,105,122,101, 0, 97,117,100,105,111,100,101,118,105, 99,101, 0, 97,117,100,105,111,114, 97,116,101, - 0, 97,117,100,105,111,102,111,114,109, 97,116, 0, 97,117,100,105,111, 99,104, 97,110,110,101,108,115, 0,100,112,105, 0,101, -110, 99,111,100,105,110,103, 0,116,114, 97,110,115,111,112,116,115, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 49, - 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 50, 0,116,104,101,109,101,115, 0,117,105,102,111,110,116,115, 0,117, -105,115,116,121,108,101,115, 0,107,101,121,109, 97,112,115, 0, 97,100,100,111,110,115, 0,107,101,121, 99,111,110,102,105,103, -115,116,114, 91, 54, 52, 93, 0,117,110,100,111,115,116,101,112,115, 0,117,110,100,111,109,101,109,111,114,121, 0,103,112, 95, -109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103,112, 95,101,117, 99,108,105,100,101, 97,110,100,105,115,116, 0,103, -112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101,116,116,105,110,103,115, 0,116, 98, 95,108,101,102,116,109,111,117,115, -101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, 0,108,105,103,104,116, 91, 51, 93, 0,115, 99,117,108,112,116, 95, -112, 97,105,110,116, 95,115,101,116,116,105,110,103,115, 0,116,119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108, 97, -103, 0,116,119, 95,104, 97,110,100,108,101,115,105,122,101, 0,116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101,111, -117,116, 0,116,101,120, 99,111,108,108,101, 99,116,114, 97,116,101, 0,119,109,100,114, 97,119,109,101,116,104,111,100, 0,109, -101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101,102,101,116, 99,104,102,114, 97,109,101,115, 0,102,114, 97,109, -101,115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95,114,111,116, 95, 97,110,103,108,101, 0,111, 98, 99,101,110,116, -101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114,118,105, 98,114,105,103,104,116, 0,114,101, 99,101,110,116, 95, -102,105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101,119,116,120, 0,103,108,114,101,115,108,105,109,105,116, 0,110, -100,111,102, 95,112, 97,110, 0,110,100,111,102, 95,114,111,116, 97,116,101, 0, 99,117,114,115,115,105,122,101, 0, 99,111,108, -111,114, 95,112,105, 99,107,101,114, 95,116,121,112,101, 0,105,112,111, 95,110,101,119, 0,107,101,121,104, 97,110,100,108,101, -115, 95,110,101,119, 0,115, 99,114, 99, 97,115,116,102,112,115, 0,115, 99,114, 99, 97,115,116,119, 97,105,116, 0,112,114,111, -112,119,105,100,116,104, 0,118,101,114,115,101,109, 97,115,116,101,114, 91, 49, 54, 48, 93, 0,118,101,114,115,101,117,115,101, -114, 91, 49, 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108,105,112, 0, 99,111, 98, 97, 95,119,101,105,103,104,116, 0,115, - 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,115,105,122,101, 0,115, 99,117,108,112,116, 95, -112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,117,110,112,114,111,106,101, 99,116,101,100, 95,114, 97,100,105,117,115, - 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95, 97,108,112,104, 97, 0,115, 99,117,108, -112,116, 95,112, 97,105,110,116, 95,111,118,101,114,108, 97,121, 95, 99,111,108, 91, 51, 93, 0,118,101,114,116, 98, 97,115,101, - 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,115,101, 0, 42,110,101,119,115, 99,101,110,101, 0,102,117,108, -108, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0,100,111, 95,114,101,102,114,101,115,104, 0,100,111, 95,100,114, - 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, 97,119, 95,112, 97,105,110,116, 99,117,114,115,111,114, 0,100, -111, 95,100,114, 97,119, 95,100,114, 97,103, 0,115,119, 97,112, 0,109, 97,105,110,119,105,110, 0,115,117, 98,119,105,110, 97, - 99,116,105,118,101, 0, 42, 97,110,105,109,116,105,109,101,114, 0, 42, 99,111,110,116,101,120,116, 0,104, 97,110,100,108,101, -114, 91, 56, 93, 0, 42,110,101,119,118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42,116,121,112,101, 0,112, 97,110, -101,108,110, 97,109,101, 91, 54, 52, 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, 97,119,110, 97,109,101, 91, - 54, 52, 93, 0,111,102,115,120, 0,111,102,115,121, 0,115,105,122,101,120, 0,115,105,122,101,121, 0,108, 97, 98,101,108,111, -102,115, 0,114,117,110,116,105,109,101, 95,102,108, 97,103, 0, 99,111,110,116,114,111,108, 0,115,110, 97,112, 0,115,111,114, -116,111,114,100,101,114, 0, 42,112, 97,110,101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101,100, 97,116, 97, 0,108,105,115, -116, 95,115, 99,114,111,108,108, 0,108,105,115,116, 95,115,105,122,101, 0,108,105,115,116, 95,108, 97,115,116, 95,108,101,110, - 0,108,105,115,116, 95,103,114,105,112, 95,115,105,122,101, 0,108,105,115,116, 95,115,101, 97,114, 99,104, 91, 54, 52, 93, 0, - 42,118, 51, 0, 42,118, 52, 0, 42,102,117,108,108, 0, 98,117,116,115,112, 97, 99,101,116,121,112,101, 0,104,101, 97,100,101, -114,116,121,112,101, 0,115,112, 97, 99,101,100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, 0, 97, 99,116,105,111,110,122, -111,110,101,115, 0,119,105,110,114, 99,116, 0,100,114, 97,119,114, 99,116, 0,115,119,105,110,105,100, 0,114,101,103,105,111, -110,116,121,112,101, 0, 97,108,105,103,110,109,101,110,116, 0,100,111, 95,100,114, 97,119, 95,111,118,101,114,108, 97,121, 0, -117,105, 98,108,111, 99,107,115, 0,112, 97,110,101,108,115, 0, 42,104,101, 97,100,101,114,115,116,114, 0, 42,114,101,103,105, -111,110,100, 97,116, 97, 0,115,117, 98,118,115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115,105,111,110, 0,112, 97,100, -115, 0,109,105,110,118,101,114,115,105,111,110, 0,109,105,110,115,117, 98,118,101,114,115,105,111,110, 0, 42, 99,117,114,115, - 99,114,101,101,110, 0, 42, 99,117,114,115, 99,101,110,101, 0,102,105,108,101,102,108, 97,103,115, 0,103,108,111, 98, 97,108, -102, 0,102,105,108,101,110, 97,109,101, 91, 50, 52, 48, 93, 0,110, 97,109,101, 91, 56, 48, 93, 0, 42,105, 98,117,102, 0, 42, -105, 98,117,102, 95, 99,111,109,112, 0, 42,115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0,110,114, 0, 98,111,116,116, -111,109, 0,114,105,103,104,116, 0,120,111,102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93, 0,103, 97,109,109, 97, - 91, 51, 93, 0,103, 97,105,110, 91, 51, 93, 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110,101, 0,115,116, 97,114,116,115, -116,105,108,108, 0,101,110,100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0,111,114,120, 0,111,114,121, - 0, 42, 99,114,111,112, 0, 42,116,114, 97,110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, 98, 97,108, 97,110, 99,101, - 0, 42,116,115,116,114,105,112,100, 97,116, 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,115,116, 97,114,116,115,116, -105,108,108, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,101,110,100,115,116,105,108,108, 0, 42,105, 98,117,102, 95,115, -116, 97,114,116,115,116,105,108,108, 0, 42,105, 98,117,102, 95,101,110,100,115,116,105,108,108, 0, 42,105,110,115,116, 97,110, - 99,101, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, 95,112,114,105,118, 97,116, -101, 95,100, 97,116, 97, 0, 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111,102,115, 0,109, 97, 99,104, -105,110,101, 0,115,116, 97,114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,115, 97,116, 0,109,117,108, 0,104, 97, -110,100,115,105,122,101, 0, 97,110,105,109, 95,112,114,101,115,101,101,107, 0, 42,115,116,114,105,112, 0, 42,115, 99,101,110, -101, 95, 99, 97,109,101,114, 97, 0,101,102,102,101, 99,116, 95,102, 97,100,101,114, 0,115,112,101,101,100, 95,102, 97,100,101, -114, 0, 42,115,101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42,115,111,117, -110,100, 0, 42,115, 99,101,110,101, 95,115,111,117,110,100, 0,108,101,118,101,108, 0,112, 97,110, 0,115, 99,101,110,101,110, -114, 0,109,117,108,116,105, 99, 97,109, 95,115,111,117,114, 99,101, 0,115,116,114,111, 98,101, 0, 42,101,102,102,101, 99,116, -100, 97,116, 97, 0, 97,110,105,109, 95,115,116, 97,114,116,111,102,115, 0, 97,110,105,109, 95,101,110,100,111,102,115, 0, 98, -108,101,110,100, 95,109,111,100,101, 0, 98,108,101,110,100, 95,111,112, 97, 99,105,116,121, 0, 42,111,108,100, 98, 97,115,101, -112, 0, 42,112, 97,114,115,101,113, 0, 42,115,101,113, 98, 97,115,101,112, 0,109,101,116, 97,115,116, 97, 99,107, 0, 42, 97, - 99,116, 95,115,101,113, 0, 97, 99,116, 95,105,109, 97,103,101,100,105,114, 91, 50, 53, 54, 93, 0, 97, 99,116, 95,115,111,117, -110,100,100,105,114, 91, 50, 53, 54, 93, 0,111,118,101,114, 95,111,102,115, 0,111,118,101,114, 95, 99,102,114, 97, 0,111,118, -101,114, 95,102,108, 97,103, 0,111,118,101,114, 95, 98,111,114,100,101,114, 0,101,100,103,101, 87,105,100,116,104, 0,102,111, -114,119, 97,114,100, 0,119,105,112,101,116,121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109,112, 0,102, 66,111,111, -115,116, 0,100, 68,105,115,116, 0,100, 81,117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0, 83, 99, 97,108,101,120, - 73,110,105, 0, 83, 99, 97,108,101,121, 73,110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, 83, 99, 97,108,101,121, 70,105, -110, 0,120, 73,110,105, 0,120, 70,105,110, 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111,116, 73,110,105, 0,114,111,116, - 70,105,110, 0,105,110,116,101,114,112,111,108, 97,116,105,111,110, 0,117,110,105,102,111,114,109, 95,115, 99, 97,108,101, 0, - 42,102,114, 97,109,101, 77, 97,112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115,116, 86, 97,108,105,100, 70, -114, 97,109,101, 0, 98,117,116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,116,111,116,112, 97,114,116, - 0,110,111,114,109,102, 97, 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,120,102, 97, 99, 0,114, 97, -110,100,108,105,102,101, 0,102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,109, 97,120,108,101,110, 0, -100,101,102,118,101, 99, 91, 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, 0, 99,104,105,108,100, 91, - 52, 93, 0,109, 97,116, 91, 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,115,116, 97,116,105, 99,115, -116,101,112, 0,111,109, 97,116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101,120, 0,102,108, 97,103, 50,110, -101,103, 0,118,101,114,116,103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, 91, 51, 50, 93, 0,118,103, -114,111,117,112,110, 97,109,101, 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102, 97, 99, 0,117,115,101,100, - 0,117,115,101,100,101,108,101,109, 0, 42,112,111,105,110, 0,114,101,115,101,116,100,105,115,116, 0,108, 97,115,116,118, 97, -108, 0, 42,109, 97, 0,107,101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,101,116, 78, 97,109,101, 91, - 51, 50, 93, 0,116,111,103,103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91, 51, 50, 93, 0,109, 97,120, -118, 97,108,117,101, 91, 51, 50, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,105,111,110, 0,109, 97,116,101,114,105, 97, -108, 78, 97,109,101, 91, 51, 50, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,114,111,112,110, 97,109,101, 91, 51, 50, 93, - 0,109, 97,116,110, 97,109,101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111,115,101, 99,104, 97,110,110,101, -108, 91, 51, 50, 93, 0, 99,111,110,115,116,114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114,111,109, 79, 98,106,101, 99,116, - 0,115,117, 98,106,101, 99,116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116,121,112,101, 0,112,117,108,115, -101, 0,102,114,101,113, 0,116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,116, 97,112, 0,106,111,121,105, -110,100,101,120, 0, 97,120,105,115, 95,115,105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, 0,104, 97, -116, 0,104, 97,116,102, 0,112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0, 42,109,121,110,101,119, - 0,105,110,112,117,116,115, 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,108,105,110,107,115, 0,118, 97,108,111, 0, -115,116, 97,116,101, 95,109, 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111,112, 91, 51, 50, 93, 0, 98,108, -101,110,100,105,110, 0,112,114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,115,101,116, 0,115,116,114,105,100,101, 97, -120,105,115, 0,115,116,114,105,100,101,108,101,110,103,116,104, 0,115,110,100,110,114, 0,112, 97,100, 51, 91, 50, 93, 0,112, -105,116, 99,104, 0,115,111,117,110,100, 51, 68, 0,112, 97,100, 54, 91, 49, 93, 0, 42,109,101, 0,108,105,110, 86,101,108,111, - 99,105,116,121, 91, 51, 93, 0, 97,110,103, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108,102,108, 97,103, - 0,100,121,110, 95,111,112,101,114, 97,116,105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,102,111,114, 99,101, -114,111,116, 91, 51, 93, 0,108,105,110,101, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103,117,108, 97,114, -118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 42,114,101,102,101,114,101,110, 99,101, 0,109,105,110, 0,109, 97,120, 0,114, -111,116,100, 97,109,112, 0,109,105,110,108,111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, 51, 93, 0,109,105,110,114,111, -116, 91, 51, 93, 0,109, 97,120,114,111,116, 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51, 50, 93, 0, 98,117,116,115,116, - 97, 0, 98,117,116,101,110,100, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, 97,114,103, 95, 49, 0, -105,110,116, 95, 97,114,103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97,116, 95, 97,114,103, 95, - 50, 0,116,111, 80,114,111,112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, 99,116, 0, 98,111,100,121, 84, -121,112,101, 0,102,105,108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97,109,101, 91, 54, 52, 93, - 0,105,110,116, 95, 97,114,103, 0,102,108,111, 97,116, 95, 97,114,103, 0, 42,115,117, 98,116, 97,114,103,101,116, 0,103,111, - 0, 97, 99, 99,101,108,108,101,114, 97,116,105,111,110, 0,109, 97,120,115,112,101,101,100, 0,109, 97,120,114,111,116,115,112, -101,101,100, 0,109, 97,120,116,105,108,116,115,112,101,101,100, 0,116,105,108,116,100, 97,109,112, 0,115,112,101,101,100,100, - 97,109,112, 0,109,105,110, 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101,102,101,114,101,110, 99,101, 95, -100,105,115,116, 97,110, 99,101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,101, 0,114,111,108,108,111,102,102, 95,102, 97, - 99,116,111,114, 0, 99,111,110,101, 95,105,110,110,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, - 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42,110,101,119,112, 97, 99,107,101, -100,102,105,108,101, 0, 97,116,116,101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, 97, 99,104, -101, 0, 42,112,108, 97,121, 98, 97, 99,107, 95,104, 97,110,100,108,101, 0, 42, 97,114,101, 97, 0, 42,108, 97,109,112,114,101, -110, 0,103,111, 98,106,101, 99,116, 0,100,117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 42,112,114,111,112, 0, 99,104,105, -108,100, 98, 97,115,101, 0,114,111,108,108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98,111,110,101, - 95,109, 97,116, 91, 51, 93, 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97,105,108, 91, - 51, 93, 0, 97,114,109, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0,122,119,105,100,116,104, 0,101, - 97,115,101, 49, 0,101, 97,115,101, 50, 0,114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95,116, 97,105,108, 0, 98,111,110, -101, 98, 97,115,101, 0, 99,104, 97,105,110, 98, 97,115,101, 0, 42,101,100, 98,111, 0, 42, 97, 99,116, 95, 98,111,110,101, 0, - 42, 97, 99,116, 95,101,100, 98,111,110,101, 0, 42,115,107,101,116, 99,104, 0,108, 97,121,101,114, 95,112,114,111,116,101, 99, -116,101,100, 0,103,104,111,115,116,101,112, 0,103,104,111,115,116,115,105,122,101, 0,103,104,111,115,116,116,121,112,101, 0, -112, 97,116,104,115,105,122,101, 0,103,104,111,115,116,115,102, 0,103,104,111,115,116,101,102, 0,112, 97,116,104,115,102, 0, -112, 97,116,104,101,102, 0,112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,111,105,110,116,115, 0,115,116, 97, -114,116, 95,102,114, 97,109,101, 0,101,110,100, 95,102,114, 97,109,101, 0,103,104,111,115,116, 95,115,102, 0,103,104,111,115, -116, 95,101,102, 0,103,104,111,115,116, 95, 98, 99, 0,103,104,111,115,116, 95, 97, 99, 0,103,104,111,115,116, 95,116,121,112, -101, 0,103,104,111,115,116, 95,115,116,101,112, 0,103,104,111,115,116, 95,102,108, 97,103, 0,112, 97,116,104, 95,116,121,112, -101, 0,112, 97,116,104, 95,115,116,101,112, 0,112, 97,116,104, 95,118,105,101,119,102,108, 97,103, 0,112, 97,116,104, 95, 98, - 97,107,101,102,108, 97,103, 0,112, 97,116,104, 95,115,102, 0,112, 97,116,104, 95,101,102, 0,112, 97,116,104, 95, 98, 99, 0, -112, 97,116,104, 95, 97, 99, 0, 99,111,110,115,116,102,108, 97,103, 0,105,107,102,108, 97,103, 0,115,101,108,101, 99,116,102, -108, 97,103, 0, 97,103,114,112, 95,105,110,100,101,120, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105,107,116,114, -101,101, 0, 42, 98, 95, 98,111,110,101, 95,109, 97,116,115, 0, 42,100,117, 97,108, 95,113,117, 97,116, 0, 42, 98, 95, 98,111, -110,101, 95,100,117, 97,108, 95,113,117, 97,116,115, 0,101,117,108, 91, 51, 93, 0, 99,104, 97,110, 95,109, 97,116, 91, 52, 93, - 91, 52, 93, 0,112,111,115,101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, 51, 93, 0, -112,111,115,101, 95,116, 97,105,108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105,109,105,116,109, 97, -120, 91, 51, 93, 0,115,116,105,102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, 0,105,107,114,111, -116,119,101,105,103,104,116, 0,105,107,108,105,110,119,101,105,103,104,116, 0, 42, 99,117,115,116,111,109, 0, 42, 99,117,115, -116,111,109, 95,116,120, 0, 99,104, 97,110, 98, 97,115,101, 0, 42, 99,104, 97,110,104, 97,115,104, 0,112,114,111,120,121, 95, -108, 97,121,101,114, 0,115,116,114,105,100,101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, 95,111,102, -102,115,101,116, 91, 51, 93, 0, 97,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,103,114,111,117,112, 0,105,107,115, -111,108,118,101,114, 0, 42,105,107,100, 97,116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,112,114,111,120,121, 95, 97, 99,116, - 95, 98,111,110,101, 91, 51, 50, 93, 0,110,117,109,105,116,101,114, 0,110,117,109,115,116,101,112, 0,109,105,110,115,116,101, -112, 0,109, 97,120,115,116,101,112, 0,115,111,108,118,101,114, 0,102,101,101,100, 98, 97, 99,107, 0,109, 97,120,118,101,108, - 0,100, 97,109,112,109, 97,120, 0,100, 97,109,112,101,112,115, 0, 99,104, 97,110,110,101,108,115, 0, 99,117,115,116,111,109, - 67,111,108, 0, 99,115, 0, 99,117,114,118,101,115, 0,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,109, 97,114,107, -101,114, 0, 42,115,111,117,114, 99,101, 0, 42,102,105,108,116,101,114, 95,103,114,112, 0,102,105,108,116,101,114,102,108, 97, -103, 0, 97,100,115, 0,116,105,109,101,115,108,105,100,101, 0, 42,103,114,112, 0,116,101,109,112, 0,110, 97,109,101, 91, 51, - 48, 93, 0,111,119,110,115,112, 97, 99,101, 0,116, 97,114,115,112, 97, 99,101, 0,101,110,102,111,114, 99,101, 0,104,101, 97, -100,116, 97,105,108, 0,108,105,110, 95,101,114,114,111,114, 0,114,111,116, 95,101,114,114,111,114, 0, 42,116, 97,114, 0,109, - 97,116,114,105,120, 91, 52, 93, 91, 52, 93, 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100,101,114, 0,116, 97,114,110,117, -109, 0,116, 97,114,103,101,116,115, 0,105,116,101,114, 97,116,105,111,110,115, 0,114,111,111,116, 98,111,110,101, 0,109, 97, -120, 95,114,111,111,116, 98,111,110,101, 0, 42,112,111,108,101,116, 97,114, 0,112,111,108,101,115,117, 98,116, 97,114,103,101, -116, 91, 51, 50, 93, 0,112,111,108,101, 97,110,103,108,101, 0,111,114,105,101,110,116,119,101,105,103,104,116, 0,103,114, 97, - 98,116, 97,114,103,101,116, 91, 51, 93, 0,110,117,109,112,111,105,110,116,115, 0, 99,104, 97,105,110,108,101,110, 0,120,122, - 83, 99, 97,108,101, 77,111,100,101, 0,114,101,115,101,114,118,101,100, 49, 0,114,101,115,101,114,118,101,100, 50, 0,109,105, -110,109, 97,120,102,108, 97,103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99,107,102,108, 97,103, - 0,102,111,108,108,111,119,102,108, 97,103, 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103,108,101,110, -103,116,104, 0, 98,117,108,103,101, 0,112,105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120, 88, 0, 97,120, 89, - 0, 97,120, 90, 0,109,105,110, 76,105,109,105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54, 93, 0,101,120,116, -114, 97, 70,122, 0,105,110,118,109, 97,116, 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109, 97,112, 91, 51, 93, - 0,101,120,112,111, 0,102,114,111,109, 95,109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91, 51, 93, 0,116,111, - 95,109,105,110, 91, 51, 93, 0,116,111, 95,109, 97,120, 91, 51, 93, 0,114,111,116, 65,120,105,115, 0,122,109,105,110, 0,122, -109, 97,120, 0,112, 97,100, 91, 57, 93, 0, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, 95, 97,120, -105,115, 0,115,116,114,105,100,101, 95, 97,120,105,115, 0, 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114,116, 0, 97, - 99,116,101,110,100, 0, 97, 99,116,111,102,102,115, 0,115,116,114,105,100,101,108,101,110, 0,115, 99, 97,108,101, 0, 98,108, -101,110,100,111,117,116, 0,115,116,114,105,100,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,111,102,102,115, 95, 98,111, -110,101, 91, 51, 50, 93, 0,104, 97,115,105,110,112,117,116, 0,104, 97,115,111,117,116,112,117,116, 0,100, 97,116, 97,116,121, -112,101, 0,115,111, 99,107,101,116,116,121,112,101, 0, 42,110,101,119, 95,115,111, 99,107, 0,110,115, 0,108,105,109,105,116, - 0,115,116, 97, 99,107, 95,105,110,100,101,120, 0,105,110,116,101,114,110, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 95, -101,120,116, 0,108,111, 99,120, 0,108,111, 99,121, 0,111,119,110, 95,105,110,100,101,120, 0,116,111, 95,105,110,100,101,120, - 0, 42,116,111,115,111, 99,107, 0, 42,108,105,110,107, 0, 42,110,101,119, 95,110,111,100,101, 0,108, 97,115,116,121, 0,111, -117,116,112,117,116,115, 0, 42,115,116,111,114, 97,103,101, 0,109,105,110,105,119,105,100,116,104, 0, 99,117,115,116,111,109, - 49, 0, 99,117,115,116,111,109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117,115,116,111,109, 52, 0,110,101,101,100, 95,101, -120,101, 99, 0,101,120,101, 99, 0, 42,116,104,114,101, 97,100,100, 97,116, 97, 0,116,111,116,114, 0, 98,117,116,114, 0,112, -114,118,114, 0, 42, 98,108,111, 99,107, 0, 42,116,121,112,101,105,110,102,111, 0, 42,102,114,111,109,110,111,100,101, 0, 42, -116,111,110,111,100,101, 0, 42,102,114,111,109,115,111, 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0, 42,115,116, - 97, 99,107, 0, 42,116,104,114,101, 97,100,115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, 97, 99,107,115,105,122,101, 0, - 99,117,114, 95,105,110,100,101,120, 0, 97,108,108,116,121,112,101,115, 0, 42,111,119,110,116,121,112,101, 0,112, 97,100, 50, - 91, 50, 93, 0, 40, 42,112,114,111,103,114,101,115,115, 41, 40, 41, 0, 40, 42,115,116, 97,116,115, 95,100,114, 97,119, 41, 40, - 41, 0, 40, 42,116,101,115,116, 95, 98,114,101, 97,107, 41, 40, 41, 0, 42,116, 98,104, 0, 42,112,114,104, 0, 42,115,100,104, - 0, 99,121, 99,108,105, 99, 0,109,111,118,105,101, 0,115, 97,109,112,108,101,115, 0,109,105,110,115,112,101,101,100, 0,112, -101,114, 99,101,110,116,120, 0,112,101,114, 99,101,110,116,121, 0, 98,111,107,101,104, 0,103, 97,109,109, 97, 0, 99,117,114, -118,101,100, 0,105,109, 97,103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109, 97,103,101, 95,105,110, 95,104,101,105,103, -104,116, 0, 99,101,110,116,101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,115,112,105,110, 0,119,114, 97,112, 0,115, -105,103,109, 97, 95, 99,111,108,111,114, 0,115,105,103,109, 97, 95,115,112, 97, 99,101, 0,104,117,101, 0,116, 49, 0,116, 50, - 0,116, 51, 0,102,115,116,114,101,110,103,116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, 91, 52, 93, 0, 97,108,103,111, -114,105,116,104,109, 0, 99,104, 97,110,110,101,108, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, 0, 99,111,108,110, 97,109, -101, 91, 51, 50, 93, 0, 98,107,116,121,112,101, 0,114,111,116, 97,116,105,111,110, 0,103, 97,109, 99,111, 0,110,111, 95,122, - 98,117,102, 0,102,115,116,111,112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, 0, 42,100,105, 99,116, 0, - 42,110,111,100,101, 0, 97,110,103,108,101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105,120, 0,116,104,114,101,115, -104,111,108,100, 0,102, 97,100,101, 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105,116, 0,115,108,111,112,101, - 91, 51, 93, 0,112,111,119,101,114, 91, 51, 93, 0,108,105,102,116, 95,108,103,103, 91, 51, 93, 0,108,105,109, 99,104, 97,110, - 0,117,110,115,112,105,108,108, 0,108,105,109,115, 99, 97,108,101, 0,117,115,112,105,108,108,114, 0,117,115,112,105,108,108, -103, 0,117,115,112,105,108,108, 98, 0,115,104,111,114,116,121, 0,109,105,110,116, 97, 98,108,101, 0,109, 97,120,116, 97, 98, -108,101, 0,101,120,116, 95,105,110, 91, 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, 42, 99,117,114,118,101, 0, 42, -116, 97, 98,108,101, 0, 42,112,114,101,109,117,108,116, 97, 98,108,101, 0,112,114,101,115,101,116, 0, 99,104, 97,110,103,101, -100, 95,116,105,109,101,115,116, 97,109,112, 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, - 99,107, 91, 51, 93, 0,119,104,105,116,101, 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, - 93, 0,120, 95,114,101,115,111,108,117,116,105,111,110, 0,100, 97,116, 97, 95,114, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95, -103, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95, 98, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,108,117,109, 97, 91, 50, 53, 54, - 93, 0,115, 97,109,112,108,101, 95,102,117,108,108, 0,115, 97,109,112,108,101, 95,108,105,110,101,115, 0, 97, 99, 99,117,114, - 97, 99,121, 0,119, 97,118,101,102,114,109, 95,109,111,100,101, 0,119, 97,118,101,102,114,109, 95, 97,108,112,104, 97, 0,119, - 97,118,101,102,114,109, 95,121,102, 97, 99, 0,119, 97,118,101,102,114,109, 95,104,101,105,103,104,116, 0,118,101, 99,115, 99, -111,112,101, 95, 97,108,112,104, 97, 0,118,101, 99,115, 99,111,112,101, 95,104,101,105,103,104,116, 0,109,105,110,109, 97,120, - 91, 51, 93, 91, 50, 93, 0,104,105,115,116, 0, 42,119, 97,118,101,102,111,114,109, 95, 49, 0, 42,119, 97,118,101,102,111,114, -109, 95, 50, 0, 42,119, 97,118,101,102,111,114,109, 95, 51, 0, 42,118,101, 99,115, 99,111,112,101, 0,119, 97,118,101,102,111, -114,109, 95,116,111,116, 0,111,102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,109,116,101,120, 0, 42,105,109, 97, -103,101, 95,105, 99,111,110, 0,105,109, 97,103,101, 95,105, 99,111,110, 95,112, 97,116,104, 91, 50, 52, 48, 93, 0,110,111,114, -109, 97,108, 95,119,101,105,103,104,116, 0,106,105,116,116,101,114, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95, -114, 97,100,105,117,115, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,102, 97, 99,116,111,114, 0,114, 97,116,101, - 0,114,103, 98, 91, 51, 93, 0,115, 99,117,108,112,116, 95,112,108, 97,110,101, 0,112,108, 97,110,101, 95,111,102,102,115,101, -116, 0,115, 99,117,108,112,116, 95,116,111,111,108, 0,118,101,114,116,101,120,112, 97,105,110,116, 95,116,111,111,108, 0,105, -109, 97,103,101,112, 97,105,110,116, 95,116,111,111,108, 0, 97,117,116,111,115,109,111,111,116,104, 95,102, 97, 99,116,111,114, - 0, 99,114,101, 97,115,101, 95,112,105,110, 99,104, 95,102, 97, 99,116,111,114, 0,112,108, 97,110,101, 95,116,114,105,109, 0, -116,101,120,116,117,114,101, 95,115, 97,109,112,108,101, 95, 98,105, 97,115, 0,116,101,120,116,117,114,101, 95,111,118,101,114, -108, 97,121, 95, 97,108,112,104, 97, 0,117,110,112,114,111,106,101, 99,116,101,100, 95,114, 97,100,105,117,115, 0, 97,100,100, - 95, 99,111,108, 91, 51, 93, 0,115,117, 98, 95, 99,111,108, 91, 51, 93, 0, 97, 99,116,105,118,101, 95,114,110,100, 0, 97, 99, -116,105,118,101, 95, 99,108,111,110,101, 0, 97, 99,116,105,118,101, 95,109, 97,115,107, 0, 42,108, 97,121,101,114,115, 0,116, -111,116,108, 97,121,101,114, 0,109, 97,120,108, 97,121,101,114, 0,116,111,116,115,105,122,101, 0, 42,112,111,111,108, 0, 42, -101,120,116,101,114,110, 97,108, 0,118,101,108, 91, 51, 93, 0,114,111,116, 91, 52, 93, 0, 97,118,101, 91, 51, 93, 0, 42,103, -114,111,117,110,100, 0,119, 97,110,100,101,114, 91, 51, 93, 0,110,117,109, 0,112, 97,114,101,110,116, 0,112, 97, 91, 52, 93, - 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0,102,111,102,102,115,101,116, 0,114,116, 91, 50, 93, 0,112,114,101,118, 95, -115,116, 97,116,101, 0, 42,104, 97,105,114, 0, 42, 98,111,105,100, 0,100,105,101,116,105,109,101, 0,110,117,109, 95,100,109, - 99, 97, 99,104,101, 0,104, 97,105,114, 95,105,110,100,101,120, 0, 97,108,105,118,101, 0,115,112,114,105,110,103, 95,107, 0, -114,101,115,116, 95,108,101,110,103,116,104, 0,118,105,115, 99,111,115,105,116,121, 95,111,109,101,103, 97, 0,118,105,115, 99, -111,115,105,116,121, 95, 98,101,116, 97, 0,115,116,105,102,102,110,101,115,115, 95,107, 0,115,116,105,102,102,110,101,115,115, - 95,107,110,101, 97,114, 0,114,101,115,116, 95,100,101,110,115,105,116,121, 0, 98,117,111,121, 97,110, 99,121, 0, 42, 98,111, -105,100,115, 0, 42,102,108,117,105,100, 0,100,105,115,116,114, 0,112,104,121,115,116,121,112,101, 0, 97,118,101,109,111,100, -101, 0,114,101, 97, 99,116,101,118,101,110,116, 0,100,114, 97,119, 0,100,114, 97,119, 95, 97,115, 0,100,114, 97,119, 95,115, -105,122,101, 0, 99,104,105,108,100,116,121,112,101, 0,114,101,110, 95, 97,115, 0,115,117, 98,102,114, 97,109,101,115, 0,114, -101,110, 95,115,116,101,112, 0,104, 97,105,114, 95,115,116,101,112, 0,107,101,121,115, 95,115,116,101,112, 0, 97,100, 97,112, -116, 95, 97,110,103,108,101, 0, 97,100, 97,112,116, 95,112,105,120, 0,114,111,116,102,114,111,109, 0,105,110,116,101,103,114, - 97,116,111,114, 0, 98, 98, 95, 97,108,105,103,110, 0, 98, 98, 95,117,118, 95,115,112,108,105,116, 0, 98, 98, 95, 97,110,105, -109, 0, 98, 98, 95,115,112,108,105,116, 95,111,102,102,115,101,116, 0, 98, 98, 95,116,105,108,116, 0, 98, 98, 95,114, 97,110, -100, 95,116,105,108,116, 0, 98, 98, 95,111,102,102,115,101,116, 91, 50, 93, 0,115,105,109,112,108,105,102,121, 95,114,101,102, -115,105,122,101, 0,115,105,109,112,108,105,102,121, 95,114, 97,116,101, 0,115,105,109,112,108,105,102,121, 95,116,114, 97,110, -115,105,116,105,111,110, 0,115,105,109,112,108,105,102,121, 95,118,105,101,119,112,111,114,116, 0,116,105,109,101,116,119,101, - 97,107, 0,106,105,116,102, 97, 99, 0,101,102,102, 95,104, 97,105,114, 0,103,114,105,100, 95,114,101,115, 0,112, 97,114,116, -102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116, 97,110,112,104, 97,115,101, 0,114,101, 97, 99,116,102, 97, 99, 0,111, 98, 95, -118,101,108, 91, 51, 93, 0, 97,118,101,102, 97, 99, 0,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,114,111,116,102, 97, - 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,115,105,122,101, 0,114,101, 97, 99,116,115,104, 97, -112,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97,103,102, 97, 99, 0, 98,114,111,119,110,102, 97, 99, 0,100, 97,109,112,102, - 97, 99, 0,114, 97,110,100,108,101,110,103,116,104, 0, 99,104,105,108,100, 95,110, 98,114, 0,114,101,110, 95, 99,104,105,108, -100, 95,110, 98,114, 0,112, 97,114,101,110,116,115, 0, 99,104,105,108,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,110, -100,115,105,122,101, 0, 99,104,105,108,100,114, 97,100, 0, 99,104,105,108,100,102,108, 97,116, 0, 99,108,117,109,112,112,111, -119, 0,114,111,117,103,104, 49, 0,114,111,117,103,104, 49, 95,115,105,122,101, 0,114,111,117,103,104, 50, 0,114,111,117,103, -104, 50, 95,115,105,122,101, 0,114,111,117,103,104, 50, 95,116,104,114,101,115, 0,114,111,117,103,104, 95,101,110,100, 0,114, -111,117,103,104, 95,101,110,100, 95,115,104, 97,112,101, 0, 99,108,101,110,103,116,104, 0, 99,108,101,110,103,116,104, 95,116, -104,114,101,115, 0, 98,114, 97,110, 99,104, 95,116,104,114,101,115, 0,100,114, 97,119, 95,108,105,110,101, 91, 50, 93, 0,112, - 97,116,104, 95,115,116, 97,114,116, 0,112, 97,116,104, 95,101,110,100, 0,116,114, 97,105,108, 95, 99,111,117,110,116, 0,107, -101,121,101,100, 95,108,111,111,112,115, 0,100,117,112,108,105,119,101,105,103,104,116,115, 0, 42,101,102,102, 95,103,114,111, -117,112, 0, 42,100,117,112, 95,111, 98, 0, 42, 98, 98, 95,111, 98, 0, 42,112,100, 50, 0, 42,112, 97,114,116, 0, 42,112, 97, -114,116,105, 99,108,101,115, 0, 42, 42,112, 97,116,104, 99, 97, 99,104,101, 0, 42, 42, 99,104,105,108,100, 99, 97, 99,104,101, - 0,112, 97,116,104, 99, 97, 99,104,101, 98,117,102,115, 0, 99,104,105,108,100, 99, 97, 99,104,101, 98,117,102,115, 0, 42, 99, -108,109,100, 0, 42,104, 97,105,114, 95,105,110, 95,100,109, 0, 42,104, 97,105,114, 95,111,117,116, 95,100,109, 0, 42,116, 97, -114,103,101,116, 95,111, 98, 0, 42,108, 97,116,116,105, 99,101, 0,116,114,101,101, 95,102,114, 97,109,101, 0,116,111,116, 99, -104,105,108,100, 0,116,111,116, 99, 97, 99,104,101,100, 0,116,111,116, 99,104,105,108,100, 99, 97, 99,104,101, 0,116, 97,114, -103,101,116, 95,112,115,121,115, 0,116,111,116,107,101,121,101,100, 0, 98, 97,107,101,115,112, 97, 99,101, 0, 98, 98, 95,117, -118,110, 97,109,101, 91, 51, 93, 91, 51, 50, 93, 0,118,103,114,111,117,112, 91, 49, 50, 93, 0,118,103, 95,110,101,103, 0,114, -116, 51, 0, 42,114,101,110,100,101,114,100, 97,116, 97, 0, 42,101,102,102,101, 99,116,111,114,115, 0, 42,116,114,101,101, 0, - 42,112,100,100, 0, 42,102,114, 97,110,100, 0, 67,100,105,115, 0, 67,118,105, 0,115,116,114,117, 99,116,117,114, 97,108, 0, - 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98,101,110,100, 0,109, 97,120, 95,115,116,114,117, 99,116, 0,109, 97,120, 95, -115,104,101, 97,114, 0, 97,118,103, 95,115,112,114,105,110,103, 95,108,101,110, 0,116,105,109,101,115, 99, 97,108,101, 0,101, -102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108,101, 0,101,102,102, 95,119,105,110,100, 95,115, 99, 97,108,101, 0,115,105, -109, 95,116,105,109,101, 95,111,108,100, 0,118,101,108,111, 99,105,116,121, 95,115,109,111,111,116,104, 0, 99,111,108,108,105, -100,101,114, 95,102,114,105, 99,116,105,111,110, 0,115,116,101,112,115, 80,101,114, 70,114, 97,109,101, 0,112,114,101,114,111, -108,108, 0,109, 97,120,115,112,114,105,110,103,108,101,110, 0,115,111,108,118,101,114, 95,116,121,112,101, 0,118,103,114,111, -117,112, 95, 98,101,110,100, 0,118,103,114,111,117,112, 95,109, 97,115,115, 0,118,103,114,111,117,112, 95,115,116,114,117, 99, -116, 0,115,104, 97,112,101,107,101,121, 95,114,101,115,116, 0,112,114,101,115,101,116,115, 0,114,101,115,101,116, 0, 42, 99, -111,108,108,105,115,105,111,110, 95,108,105,115,116, 0,101,112,115,105,108,111,110, 0,115,101,108,102, 95,102,114,105, 99,116, -105,111,110, 0,115,101,108,102,101,112,115,105,108,111,110, 0,115,101,108,102, 95,108,111,111,112, 95, 99,111,117,110,116, 0, -108,111,111,112, 95, 99,111,117,110,116, 0,112,114,101,115,115,117,114,101, 0,116,104,105, 99,107,110,101,115,115, 0,115,116, -114,111,107,101,115, 0,102,114, 97,109,101,110,117,109, 0, 42, 97, 99,116,102,114, 97,109,101, 0,103,115,116,101,112, 0,105, -110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102,101,114, 95,115,105,122,101, 0,115, 98,117,102,102,101,114, 95,115,102, -108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, 42,116,121,112,101,115,116,114, 0, 42,109,101,115,115, 97,103,101, 0,108, -105,115,116, 0,112,114,105,110,116,108,101,118,101,108, 0,115,116,111,114,101,108,101,118,101,108, 0, 42,114,101,112,111,114, -116,116,105,109,101,114, 0,103,114,101,121,115, 99, 97,108,101, 0,119,105,100,116,104,102, 97, 99, 0, 42,119,105,110,100,114, - 97,119, 97, 98,108,101, 0, 42,119,105,110, 97, 99,116,105,118,101, 0,119,105,110,100,111,119,115, 0,105,110,105,116,105, 97, -108,105,122,101,100, 0,102,105,108,101, 95,115, 97,118,101,100, 0,111,112, 95,117,110,100,111, 95,100,101,112,116,104, 0,111, -112,101,114, 97,116,111,114,115, 0,113,117,101,117,101, 0,114,101,112,111,114,116,115, 0,106,111, 98,115, 0,112, 97,105,110, -116, 99,117,114,115,111,114,115, 0,100,114, 97,103,115, 0,107,101,121, 99,111,110,102,105,103,115, 0, 42,100,101,102, 97,117, -108,116, 99,111,110,102, 0,116,105,109,101,114,115, 0, 42, 97,117,116,111,115, 97,118,101,116,105,109,101,114, 0, 42,103,104, -111,115,116,119,105,110, 0,103,114, 97, 98, 99,117,114,115,111,114, 0, 42,110,101,119,115, 99,114,101,101,110, 0,115, 99,114, -101,101,110,110, 97,109,101, 91, 51, 50, 93, 0,112,111,115,120, 0,112,111,115,121, 0,119,105,110,100,111,119,115,116, 97,116, -101, 0,109,111,110,105,116,111,114, 0,108, 97,115,116, 99,117,114,115,111,114, 0, 97,100,100,109,111,117,115,101,109,111,118, -101, 0, 42,101,118,101,110,116,115,116, 97,116,101, 0, 42, 99,117,114,115,119,105,110, 0, 42,116,119,101, 97,107, 0,100,114, - 97,119,109,101,116,104,111,100, 0,100,114, 97,119,102, 97,105,108, 0, 42,100,114, 97,119,100, 97,116, 97, 0,109,111,100, 97, -108,104, 97,110,100,108,101,114,115, 0,115,117, 98,119,105,110,100,111,119,115, 0,103,101,115,116,117,114,101, 0,105,100,110, - 97,109,101, 91, 54, 52, 93, 0,112,114,111,112,118, 97,108,117,101, 0,115,104,105,102,116, 0, 99,116,114,108, 0, 97,108,116, - 0,111,115,107,101,121, 0,107,101,121,109,111,100,105,102,105,101,114, 0,109, 97,112,116,121,112,101, 0, 42,112,116,114, 0, -105,116,101,109,115, 0,115,112, 97, 99,101,105,100, 0,114,101,103,105,111,110,105,100, 0,107,109,105, 95,105,100, 0, 40, 42, -112,111,108,108, 41, 40, 41, 0, 42,109,111,100, 97,108, 95,105,116,101,109,115, 0, 98, 97,115,101,110, 97,109,101, 91, 54, 52, - 93, 0, 97, 99,116,107,101,121,109, 97,112, 0, 42, 99,117,115,116,111,109,100, 97,116, 97, 0, 42,112,121, 95,105,110,115,116, - 97,110, 99,101, 0, 42,114,101,112,111,114,116,115, 0,109, 97, 99,114,111, 0, 42,111,112,109, 0, 42,101,100, 97,116, 97, 0, -105,110,102,108,117,101,110, 99,101, 0, 42, 99,111,101,102,102,105, 99,105,101,110,116,115, 0, 97,114,114, 97,121,115,105,122, -101, 0,112,111,108,121, 95,111,114,100,101,114, 0, 97,109,112,108,105,116,117,100,101, 0,112,104, 97,115,101, 95,109,117,108, -116,105,112,108,105,101,114, 0,112,104, 97,115,101, 95,111,102,102,115,101,116, 0,118, 97,108,117,101, 95,111,102,102,115,101, -116, 0,109,105,100,118, 97,108, 0, 98,101,102,111,114,101, 95,109,111,100,101, 0, 97,102,116,101,114, 95,109,111,100,101, 0, - 98,101,102,111,114,101, 95, 99,121, 99,108,101,115, 0, 97,102,116,101,114, 95, 99,121, 99,108,101,115, 0,114,101, 99,116, 0, -112,104, 97,115,101, 0,109,111,100,105,102,105, 99, 97,116,105,111,110, 0,115,116,101,112, 95,115,105,122,101, 0, 42,114,110, - 97, 95,112, 97,116,104, 0,112, 99,104, 97,110, 95,110, 97,109,101, 91, 51, 50, 93, 0,116,114, 97,110,115, 67,104, 97,110, 0, -105,100,116,121,112,101, 0,116, 97,114,103,101,116,115, 91, 56, 93, 0,110,117,109, 95,116, 97,114,103,101,116,115, 0,118, 97, -114,105, 97, 98,108,101,115, 0,101,120,112,114,101,115,115,105,111,110, 91, 50, 53, 54, 93, 0, 42,101,120,112,114, 95, 99,111, -109,112, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, 0, 97,114,114, 97,121, 95,105,110,100,101,120, 0, 99,111,108,111,114, - 95,109,111,100,101, 0, 99,111,108,111,114, 91, 51, 93, 0,102,114,111,109, 91, 49, 50, 56, 93, 0,116,111, 91, 49, 50, 56, 93, - 0,109, 97,112,112,105,110,103,115, 0,115,116,114,105,112,115, 0, 42,114,101,109, 97,112, 0,102, 99,117,114,118,101,115, 0, -115,116,114,105,112, 95,116,105,109,101, 0, 98,108,101,110,100,109,111,100,101, 0,101,120,116,101,110,100,109,111,100,101, 0, -103,114,111,117,112, 91, 54, 52, 93, 0,103,114,111,117,112,109,111,100,101, 0,107,101,121,105,110,103,102,108, 97,103, 0,112, - 97,116,104,115, 0,116,121,112,101,105,110,102,111, 91, 54, 52, 93, 0, 97, 99,116,105,118,101, 95,112, 97,116,104, 0, 42,116, -109,112, 97, 99,116, 0,110,108, 97, 95,116,114, 97, 99,107,115, 0, 42, 97, 99,116,115,116,114,105,112, 0,100,114,105,118,101, -114,115, 0,111,118,101,114,114,105,100,101,115, 0, 97, 99,116, 95, 98,108,101,110,100,109,111,100,101, 0, 97, 99,116, 95,101, -120,116,101,110,100,109,111,100,101, 0, 97, 99,116, 95,105,110,102,108,117,101,110, 99,101, 0,114,117,108,101, 0,111,112,116, -105,111,110,115, 0,102,101, 97,114, 95,102, 97, 99,116,111,114, 0,115,105,103,110, 97,108, 95,105,100, 0,108,111,111,107, 95, - 97,104,101, 97,100, 0,111,108,111, 99, 91, 51, 93, 0,113,117,101,117,101, 95,115,105,122,101, 0,119, 97,110,100,101,114, 0, -102,108,101,101, 95,100,105,115,116, 97,110, 99,101, 0,104,101, 97,108,116,104, 0,115,116, 97,116,101, 95,105,100, 0,114,117, -108,101,115, 0, 99,111,110,100,105,116,105,111,110,115, 0, 97, 99,116,105,111,110,115, 0,114,117,108,101,115,101,116, 95,116, -121,112,101, 0,114,117,108,101, 95,102,117,122,122,105,110,101,115,115, 0,108, 97,115,116, 95,115,116, 97,116,101, 95,105,100, - 0,108, 97,110,100,105,110,103, 95,115,109,111,111,116,104,110,101,115,115, 0, 98, 97,110,107,105,110,103, 0, 97,103,103,114, -101,115,115,105,111,110, 0, 97,105,114, 95,109,105,110, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95,115,112,101, -101,100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, 99, 0, 97,105,114, 95,109, 97,120, 95, 97,118,101, 0, 97,105,114, 95,112, -101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,106,117,109,112, 95,115,112,101,101,100, 0,108, 97, -110,100, 95,109, 97,120, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95, 97, 99, 99, 0,108, 97,110,100, 95,109, - 97,120, 95, 97,118,101, 0,108, 97,110,100, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95, -115,116,105, 99,107, 95,102,111,114, 99,101, 0,115,116, 97,116,101,115, 0, 42,115,109,100, 0, 42,102,108,117,105,100, 95,103, -114,111,117,112, 0, 42, 99,111,108,108, 95,103,114,111,117,112, 0, 42,119,116, 0, 42,116,101,120, 95,119,116, 0, 42,116,101, -120, 95,115,104, 97,100,111,119, 0, 42,115,104, 97,100,111,119, 0,112, 48, 91, 51, 93, 0,112, 49, 91, 51, 93, 0,100,120, 0, -111,109,101,103, 97, 0,116,101,109,112, 65,109, 98, 0, 98,101,116, 97, 0,114,101,115, 91, 51, 93, 0, 97,109,112,108,105,102, -121, 0,109, 97,120,114,101,115, 0,118,105,101,119,115,101,116,116,105,110,103,115, 0,110,111,105,115,101, 0,100,105,115,115, - 95,112,101,114, 99,101,110,116, 0,100,105,115,115, 95,115,112,101,101,100, 0,114,101,115, 95,119,116, 91, 51, 93, 0,100,120, - 95,119,116, 0,118, 51,100,110,117,109, 0, 99, 97, 99,104,101, 95, 99,111,109,112, 0, 99, 97, 99,104,101, 95,104,105,103,104, - 95, 99,111,109,112, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 91, 50, 93, 0,112,116, 99, 97, 99,104,101,115, 91, 50, - 93, 0,118,101,108,111, 99,105,116,121, 91, 51, 93, 0,118,103,114,112, 95,104,101, 97,116, 95,115, 99, 97,108,101, 91, 50, 93, - 0,118,103,114,111,117,112, 95,102,108,111,119, 0,118,103,114,111,117,112, 95,100,101,110,115,105,116,121, 0,118,103,114,111, -117,112, 95,104,101, 97,116, 0, 42,112,111,105,110,116,115, 95,111,108,100, 0, 42,118,101,108, 0,109, 97,116, 95,111,108,100, - 91, 52, 93, 91, 52, 93, 0, 0, 84, 89, 80, 69,212, 1, 0, 0, 99,104, 97,114, 0,117, 99,104, 97,114, 0,115,104,111,114,116, - 0,117,115,104,111,114,116, 0,105,110,116, 0,108,111,110,103, 0,117,108,111,110,103, 0,102,108,111, 97,116, 0,100,111,117, - 98,108,101, 0,118,111,105,100, 0, 76,105,110,107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76,105,115,116, 66, 97,115,101, 0, -118,101, 99, 50,115, 0,118,101, 99, 50,102, 0,118,101, 99, 50,105, 0,118,101, 99, 50,100, 0,118,101, 99, 51,105, 0,118,101, - 99, 51,102, 0,118,101, 99, 51,100, 0,118,101, 99, 52,105, 0,118,101, 99, 52,102, 0,118,101, 99, 52,100, 0,114, 99,116,105, - 0,114, 99,116,102, 0, 73, 68, 80,114,111,112,101,114,116,121, 68, 97,116, 97, 0, 73, 68, 80,114,111,112,101,114,116,121, 0, - 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70,105,108,101, 68, 97,116, 97, 0, 80,114,101,118,105,101,119, 73,109, 97,103,101, - 0, 73,112,111, 68,114,105,118,101,114, 0, 79, 98,106,101, 99,116, 0, 73,112,111, 67,117,114,118,101, 0, 66, 80,111,105,110, -116, 0, 66,101,122, 84,114,105,112,108,101, 0, 73,112,111, 0, 75,101,121, 66,108,111, 99,107, 0, 75,101,121, 0, 65,110,105, -109, 68, 97,116, 97, 0, 84,101,120,116, 76,105,110,101, 0, 84,101,120,116, 77, 97,114,107,101,114, 0, 84,101,120,116, 0, 80, - 97, 99,107,101,100, 70,105,108,101, 0, 67, 97,109,101,114, 97, 0, 73,109, 97,103,101, 85,115,101,114, 0, 83, 99,101,110,101, - 0, 73,109, 97,103,101, 0, 71, 80, 85, 84,101,120,116,117,114,101, 0, 97,110,105,109, 0, 82,101,110,100,101,114, 82,101,115, -117,108,116, 0, 77, 84,101,120, 0, 84,101,120, 0, 80,108,117,103,105,110, 84,101,120, 0, 67, 66, 68, 97,116, 97, 0, 67,111, -108,111,114, 66, 97,110,100, 0, 69,110,118, 77, 97,112, 0, 73,109, 66,117,102, 0, 80,111,105,110,116, 68,101,110,115,105,116, -121, 0, 86,111,120,101,108, 68, 97,116, 97, 0, 98, 78,111,100,101, 84,114,101,101, 0, 84,101,120, 77, 97,112,112,105,110,103, - 0, 76, 97,109,112, 0, 67,117,114,118,101, 77, 97,112,112,105,110,103, 0, 87, 97,118,101, 0, 86,111,108,117,109,101, 83,101, -116,116,105,110,103,115, 0, 77, 97,116,101,114,105, 97,108, 0, 71,114,111,117,112, 0, 86, 70,111,110,116, 0, 86, 70,111,110, -116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108,101,109, 0, 66,111,117,110,100, 66,111,120, 0, 77,101,116, 97, 66, 97,108,108, - 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110,102,111, 0, 84,101,120,116, 66,111,120, 0, 67,117,114,118,101, 0, 80, 97,116, -104, 0, 83,101,108, 66,111,120, 0, 69,100,105,116, 70,111,110,116, 0, 77,101,115,104, 0, 77, 70, 97, 99,101, 0, 77, 84, 70, - 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86,101,114,116, 0, 77, 69,100,103,101, 0, 77, 68,101,102,111,114,109, 86,101,114, -116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99,107,121, 0, 77, 83,101,108,101, 99,116, 0, 69,100,105,116, 77,101,115,104, 0, - 67,117,115,116,111,109, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 0, 80, 97,114,116,105, 97,108, 86,105,115,105, 98, -105,108,105,116,121, 0, 77, 68,101,102,111,114,109, 87,101,105,103,104,116, 0, 77, 84,101,120, 80,111,108,121, 0, 77, 76,111, -111,112, 85, 86, 0, 77, 76,111,111,112, 67,111,108, 0, 77, 70,108,111, 97,116, 80,114,111,112,101,114,116,121, 0, 77, 73,110, -116, 80,114,111,112,101,114,116,121, 0, 77, 83,116,114,105,110,103, 80,114,111,112,101,114,116,121, 0, 79,114,105,103, 83,112, - 97, 99,101, 70, 97, 99,101, 0, 77, 68,105,115,112,115, 0, 77,117,108,116,105,114,101,115, 67,111,108, 0, 77,117,108,116,105, -114,101,115, 67,111,108, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, - 69,100,103,101, 0, 77,117,108,116,105,114,101,115, 76,101,118,101,108, 0, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, - 83,117, 98,115,117,114,102, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 77,111,100,105,102, -105,101,114, 68, 97,116, 97, 0, 67,117,114,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,117,105,108,100, 77, -111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 97,115,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114,114, - 97,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,105,114,114,111,114, 77,111,100,105,102,105,101,114, 68, 97,116, - 97, 0, 69,100,103,101, 83,112,108,105,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,101,118,101,108, 77,111,100, -105,102,105,101,114, 68, 97,116, 97, 0, 66, 77,101,115,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107, -101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 68,111,109, 97,105,110, 83,101,116,116,105,110,103, -115, 0, 83,109,111,107,101, 70,108,111,119, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 67,111,108,108, 83,101,116, -116,105,110,103,115, 0, 68,105,115,112,108, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 85, 86, 80,114,111, -106,101, 99,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101, 99,105,109, 97,116,101, 77,111,100,105,102,105,101, -114, 68, 97,116, 97, 0, 83,109,111,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67, 97,115,116, 77,111,100, -105,102,105,101,114, 68, 97,116, 97, 0, 87, 97,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114,109, 97,116, -117,114,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 72,111,111,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, - 0, 83,111,102,116, 98,111,100,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 77,111,100,105,102, -105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 0, 67,108,111,116,104, 83,105,109, 83,101,116,116,105,110,103,115, 0, 67, -108,111,116,104, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 80,111,105,110,116, 67, 97, 99,104,101, 0, 67,111,108,108, -105,115,105,111,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 86, 72, 84,114,101,101, 0, 83,117,114,102, 97, 99, -101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101,114,105,118,101,100, 77,101,115,104, 0, 66, 86, 72, 84,114,101, -101, 70,114,111,109, 77,101,115,104, 0, 66,111,111,108,101, 97,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 68, -101,102, 73,110,102,108,117,101,110, 99,101, 0, 77, 68,101,102, 67,101,108,108, 0, 77,101,115,104, 68,101,102,111,114,109, 77, -111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 77,111,100,105,102,105, -101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 0, 80, 97,114,116,105, 99,108,101, 73,110, -115,116, 97,110, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,120,112,108,111,100,101, 77,111,100,105,102,105, -101,114, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105, -100,115,105,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 83,101,116,116,105,110,103, -115, 0, 83,104,114,105,110,107,119,114, 97,112, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,105,109,112,108,101, 68, -101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,104, 97,112,101, 75,101,121, 77,111,100,105,102,105, -101,114, 68, 97,116, 97, 0, 83,111,108,105,100,105,102,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83, 99,114,101, -119, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 0, 98, 68,101,102,111,114,109, 71,114,111, -117,112, 0, 83, 99,117,108,112,116, 83,101,115,115,105,111,110, 0, 98, 65, 99,116,105,111,110, 0, 98, 80,111,115,101, 0, 98, - 71, 80,100, 97,116, 97, 0, 98, 65,110,105,109, 86,105,122, 83,101,116,116,105,110,103,115, 0, 98, 77,111,116,105,111,110, 80, - 97,116,104, 0, 66,117,108,108,101,116, 83,111,102,116, 66,111,100,121, 0, 80, 97,114,116, 68,101,102,108,101, 99,116, 0, 83, -111,102,116, 66,111,100,121, 0, 79, 98, 72,111,111,107, 0, 68,117,112,108,105, 79, 98,106,101, 99,116, 0, 82, 78, 71, 0, 69, -102,102,101, 99,116,111,114, 87,101,105,103,104,116,115, 0, 80, 84, 67, 97, 99,104,101, 77,101,109, 0, 80, 84, 67, 97, 99,104, -101, 69,100,105,116, 0, 83, 66, 86,101,114,116,101,120, 0, 66,111,100,121, 80,111,105,110,116, 0, 66,111,100,121, 83,112,114, -105,110,103, 0, 83, 66, 83, 99,114, 97,116, 99,104, 0, 87,111,114,108,100, 0, 66, 97,115,101, 0, 65,118,105, 67,111,100,101, - 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105, -109,101, 67,111,100,101, 99, 83,101,116,116,105,110,103,115, 0, 70, 70, 77,112,101,103, 67,111,100,101, 99, 68, 97,116, 97, 0, - 65,117,100,105,111, 68, 97,116, 97, 0, 83, 99,101,110,101, 82,101,110,100,101,114, 76, 97,121,101,114, 0, 82,101,110,100,101, -114, 68, 97,116, 97, 0, 82,101,110,100,101,114, 80,114,111,102,105,108,101, 0, 71, 97,109,101, 68,111,109,101, 0, 71, 97,109, -101, 70,114, 97,109,105,110,103, 0, 71, 97,109,101, 68, 97,116, 97, 0, 84,105,109,101, 77, 97,114,107,101,114, 0, 80, 97,105, -110,116, 0, 66,114,117,115,104, 0, 73,109, 97,103,101, 80, 97,105,110,116, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116, -105, 99,108,101, 66,114,117,115,104, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 69,100,105,116, 83,101,116,116,105,110, -103,115, 0, 84,114, 97,110,115,102,111,114,109, 79,114,105,101,110,116, 97,116,105,111,110, 0, 83, 99,117,108,112,116, 0, 86, - 80, 97,105,110,116, 0, 84,111,111,108, 83,101,116,116,105,110,103,115, 0, 98, 83,116, 97,116,115, 0, 85,110,105,116, 83,101, -116,116,105,110,103,115, 0, 80,104,121,115,105, 99,115, 83,101,116,116,105,110,103,115, 0, 69,100,105,116,105,110,103, 0, 83, - 99,101,110,101, 83,116, 97,116,115, 0, 68, 97,103, 70,111,114,101,115,116, 0, 66, 71,112,105, 99, 0, 82,101,103,105,111,110, - 86,105,101,119, 51, 68, 0, 82,101,110,100,101,114, 73,110,102,111, 0, 82,101,116,111,112,111, 86,105,101,119, 68, 97,116, 97, - 0, 86,105,101,119, 68,101,112,116,104,115, 0, 83,109,111,111,116,104, 86,105,101,119, 83,116,111,114,101, 0,119,109, 84,105, -109,101,114, 0, 86,105,101,119, 51, 68, 0, 83,112, 97, 99,101, 76,105,110,107, 0, 86,105,101,119, 50, 68, 0, 83,112, 97, 99, -101, 73,110,102,111, 0, 98, 83, 99,114,101,101,110, 0, 83,112, 97, 99,101, 73,112,111, 0, 98, 68,111,112,101, 83,104,101,101, -116, 0, 83,112, 97, 99,101, 66,117,116,115, 0, 83,112, 97, 99,101, 83,101,113, 0, 70,105,108,101, 83,101,108,101, 99,116, 80, - 97,114, 97,109,115, 0, 83,112, 97, 99,101, 70,105,108,101, 0, 70,105,108,101, 76,105,115,116, 0,119,109, 79,112,101,114, 97, -116,111,114, 0, 70,105,108,101, 76, 97,121,111,117,116, 0, 83,112, 97, 99,101, 79,111,112,115, 0, 84,114,101,101, 83,116,111, -114,101, 0, 84,114,101,101, 83,116,111,114,101, 69,108,101,109, 0, 83,112, 97, 99,101, 73,109, 97,103,101, 0, 83, 99,111,112, -101,115, 0, 72,105,115,116,111,103,114, 97,109, 0, 83,112, 97, 99,101, 78,108, 97, 0, 83,112, 97, 99,101, 84,101,120,116, 0, - 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 84,105,109,101, 67, 97, 99,104, -101, 0, 83,112, 97, 99,101, 84,105,109,101, 0, 83,112, 97, 99,101, 78,111,100,101, 0, 83,112, 97, 99,101, 76,111,103,105, 99, - 0, 83,112, 97, 99,101, 73,109, 97, 83,101,108, 0, 67,111,110,115,111,108,101, 76,105,110,101, 0, 83,112, 97, 99,101, 67,111, -110,115,111,108,101, 0, 83,112, 97, 99,101, 85,115,101,114, 80,114,101,102, 0,117,105, 70,111,110,116, 0,117,105, 70,111,110, -116, 83,116,121,108,101, 0,117,105, 83,116,121,108,101, 0,117,105, 87,105,100,103,101,116, 67,111,108,111,114,115, 0,117,105, - 87,105,100,103,101,116, 83,116, 97,116,101, 67,111,108,111,114,115, 0, 84,104,101,109,101, 85, 73, 0, 84,104,101,109,101, 83, -112, 97, 99,101, 0, 84,104,101,109,101, 87,105,114,101, 67,111,108,111,114, 0, 98, 84,104,101,109,101, 0, 98, 65,100,100,111, -110, 0, 83,111,108,105,100, 76,105,103,104,116, 0, 85,115,101,114, 68,101,102, 0, 83, 99,114, 86,101,114,116, 0, 83, 99,114, - 69,100,103,101, 0, 80, 97,110,101,108, 0, 80, 97,110,101,108, 84,121,112,101, 0,117,105, 76, 97,121,111,117,116, 0, 83, 99, -114, 65,114,101, 97, 0, 83,112, 97, 99,101, 84,121,112,101, 0, 65, 82,101,103,105,111,110, 0, 65, 82,101,103,105,111,110, 84, -121,112,101, 0, 70,105,108,101, 71,108,111, 98, 97,108, 0, 83,116,114,105,112, 69,108,101,109, 0, 84, 83,116,114,105,112, 69, -108,101,109, 0, 83,116,114,105,112, 67,114,111,112, 0, 83,116,114,105,112, 84,114, 97,110,115,102,111,114,109, 0, 83,116,114, -105,112, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 83,116,114,105,112, 80,114,111,120,121, 0, 83,116,114,105,112, 0, - 80,108,117,103,105,110, 83,101,113, 0, 83,101,113,117,101,110, 99,101, 0, 98, 83,111,117,110,100, 0, 77,101,116, 97, 83,116, - 97, 99,107, 0, 87,105,112,101, 86, 97,114,115, 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, 97,110,115,102,111,114,109, 86, - 97,114,115, 0, 83,111,108,105,100, 67,111,108,111,114, 86, 97,114,115, 0, 83,112,101,101,100, 67,111,110,116,114,111,108, 86, - 97,114,115, 0, 69,102,102,101, 99,116, 0, 66,117,105,108,100, 69,102,102, 0, 80, 97,114,116, 69,102,102, 0, 80, 97,114,116, -105, 99,108,101, 0, 87, 97,118,101, 69,102,102, 0, 98, 80,114,111,112,101,114,116,121, 0, 98, 78,101, 97,114, 83,101,110,115, -111,114, 0, 98, 77,111,117,115,101, 83,101,110,115,111,114, 0, 98, 84,111,117, 99,104, 83,101,110,115,111,114, 0, 98, 75,101, -121, 98,111, 97,114,100, 83,101,110,115,111,114, 0, 98, 80,114,111,112,101,114,116,121, 83,101,110,115,111,114, 0, 98, 65, 99, -116,117, 97,116,111,114, 83,101,110,115,111,114, 0, 98, 68,101,108, 97,121, 83,101,110,115,111,114, 0, 98, 67,111,108,108,105, -115,105,111,110, 83,101,110,115,111,114, 0, 98, 82, 97,100, 97,114, 83,101,110,115,111,114, 0, 98, 82, 97,110,100,111,109, 83, -101,110,115,111,114, 0, 98, 82, 97,121, 83,101,110,115,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 83,101,110,115,111,114, - 0, 98, 77,101,115,115, 97,103,101, 83,101,110,115,111,114, 0, 98, 83,101,110,115,111,114, 0, 98, 67,111,110,116,114,111,108, -108,101,114, 0, 98, 74,111,121,115,116,105, 99,107, 83,101,110,115,111,114, 0, 98, 69,120,112,114,101,115,115,105,111,110, 67, -111,110,116, 0, 98, 80,121,116,104,111,110, 67,111,110,116, 0, 98, 65, 99,116,117, 97,116,111,114, 0, 98, 65,100,100, 79, 98, -106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 65, 99,116,105,111,110, 65, 99,116,117, 97,116,111,114, 0, 98, 83,111, -117,110,100, 65, 99,116,117, 97,116,111,114, 0, 83,111,117,110,100, 51, 68, 0, 98, 69,100,105,116, 79, 98,106,101, 99,116, 65, - 99,116,117, 97,116,111,114, 0, 98, 83, 99,101,110,101, 65, 99,116,117, 97,116,111,114, 0, 98, 80,114,111,112,101,114,116,121, - 65, 99,116,117, 97,116,111,114, 0, 98, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 73,112,111, 65, 99,116, -117, 97,116,111,114, 0, 98, 67, 97,109,101,114, 97, 65, 99,116,117, 97,116,111,114, 0, 98, 67,111,110,115,116,114, 97,105,110, -116, 65, 99,116,117, 97,116,111,114, 0, 98, 71,114,111,117,112, 65, 99,116,117, 97,116,111,114, 0, 98, 82, 97,110,100,111,109, - 65, 99,116,117, 97,116,111,114, 0, 98, 77,101,115,115, 97,103,101, 65, 99,116,117, 97,116,111,114, 0, 98, 71, 97,109,101, 65, - 99,116,117, 97,116,111,114, 0, 98, 86,105,115,105, 98,105,108,105,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 84,119,111, - 68, 70,105,108,116,101,114, 65, 99,116,117, 97,116,111,114, 0, 98, 80, 97,114,101,110,116, 65, 99,116,117, 97,116,111,114, 0, - 98, 83,116, 97,116,101, 65, 99,116,117, 97,116,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 65, 99,116,117, 97,116,111,114, - 0, 70,114,101,101, 67, 97,109,101,114, 97, 0, 83,112, 97, 99,101, 83,111,117,110,100, 0, 71,114,111,117,112, 79, 98,106,101, - 99,116, 0, 66,111,110,101, 0, 98, 65,114,109, 97,116,117,114,101, 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 86,101,114, -116, 0, 98, 80,111,115,101, 67,104, 97,110,110,101,108, 0, 71, 72, 97,115,104, 0, 98, 73, 75, 80, 97,114, 97,109, 0, 98, 73, -116, 97,115, 99, 0, 98, 65, 99,116,105,111,110, 71,114,111,117,112, 0, 83,112, 97, 99,101, 65, 99,116,105,111,110, 0, 98, 65, - 99,116,105,111,110, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108, 0, - 98, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 84, 97,114,103,101,116, 0, 98, 80, -121,116,104,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 75,105,110,101,109, 97,116,105, 99, 67,111,110,115,116,114, - 97,105,110,116, 0, 98, 83,112,108,105,110,101, 73, 75, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97, 99,107, 84, -111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110, -116, 0, 98, 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,107, -101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83, 97,109,101, 86,111,108,117,109,101, 67,111,110,115,116,114, 97,105,110, -116, 0, 98, 84,114, 97,110,115, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 77,105,110, 77, 97,120, 67,111, -110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99,107, - 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68, 97,109,112, 84,114, 97, 99,107, 67,111,110,115,116,114, - 97,105,110,116, 0, 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,116,114,101, -116, 99,104, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,105,103,105,100, 66,111,100,121, 74,111,105,110,116, 67, -111,110,115,116,114, 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,104, -105,108,100, 79,102, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115,102,111,114,109, 67,111,110,115,116,114, - 97,105,110,116, 0, 98, 80,105,118,111,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 76,105,109,105,116, 67, -111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83, -105,122,101, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68,105,115,116, 76,105,109,105,116, 67,111,110, -115,116,114, 97,105,110,116, 0, 98, 83,104,114,105,110,107,119,114, 97,112, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, - 99,116,105,111,110, 77,111,100,105,102,105,101,114, 0, 98, 65, 99,116,105,111,110, 83,116,114,105,112, 0, 98, 78,111,100,101, - 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 0, 98, 78,111,100,101, 76,105,110,107, 0, 98, 78,111,100, -101, 0, 98, 78,111,100,101, 80,114,101,118,105,101,119, 0,117,105, 66,108,111, 99,107, 0, 98, 78,111,100,101, 84,121,112,101, - 0, 78,111,100,101, 73,109, 97,103,101, 65,110,105,109, 0, 78,111,100,101, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, - 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 66,105,108, 97,116,101,114, 97,108, 66,108,117,114, 68, 97,116, 97, 0, - 78,111,100,101, 72,117,101, 83, 97,116, 0, 78,111,100,101, 73,109, 97,103,101, 70,105,108,101, 0, 78,111,100,101, 67,104,114, -111,109, 97, 0, 78,111,100,101, 84,119,111, 88, 89,115, 0, 78,111,100,101, 84,119,111, 70,108,111, 97,116,115, 0, 78,111,100, -101, 71,101,111,109,101,116,114,121, 0, 78,111,100,101, 86,101,114,116,101,120, 67,111,108, 0, 78,111,100,101, 68,101,102,111, - 99,117,115, 0, 78,111,100,101, 83, 99,114,105,112,116, 68,105, 99,116, 0, 78,111,100,101, 71,108, 97,114,101, 0, 78,111,100, -101, 84,111,110,101,109, 97,112, 0, 78,111,100,101, 76,101,110,115, 68,105,115,116, 0, 78,111,100,101, 67,111,108,111,114, 66, - 97,108, 97,110, 99,101, 0, 78,111,100,101, 67,111,108,111,114,115,112,105,108,108, 0, 84,101,120, 78,111,100,101, 79,117,116, -112,117,116, 0, 67,117,114,118,101, 77, 97,112, 80,111,105,110,116, 0, 67,117,114,118,101, 77, 97,112, 0, 66,114,117,115,104, - 67,108,111,110,101, 0, 67,117,115,116,111,109, 68, 97,116, 97, 76, 97,121,101,114, 0, 67,117,115,116,111,109, 68, 97,116, 97, - 69,120,116,101,114,110, 97,108, 0, 72, 97,105,114, 75,101,121, 0, 80, 97,114,116,105, 99,108,101, 75,101,121, 0, 66,111,105, -100, 80, 97,114,116,105, 99,108,101, 0, 66,111,105,100, 68, 97,116, 97, 0, 67,104,105,108,100, 80, 97,114,116,105, 99,108,101, - 0, 80, 97,114,116,105, 99,108,101, 84, 97,114,103,101,116, 0, 80, 97,114,116,105, 99,108,101, 68,117,112,108,105, 87,101,105, -103,104,116, 0, 80, 97,114,116,105, 99,108,101, 68, 97,116, 97, 0, 83, 80, 72, 70,108,117,105,100, 83,101,116,116,105,110,103, -115, 0, 80, 97,114,116,105, 99,108,101, 83,101,116,116,105,110,103,115, 0, 66,111,105,100, 83,101,116,116,105,110,103,115, 0, - 80, 97,114,116,105, 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 75, 68, 84,114,101,101, 0, 80, 97,114,116,105, 99,108,101, - 68,114, 97,119, 68, 97,116, 97, 0, 76,105,110,107, 78,111,100,101, 0, 98, 71, 80, 68,115,112,111,105,110,116, 0, 98, 71, 80, - 68,115,116,114,111,107,101, 0, 98, 71, 80, 68,102,114, 97,109,101, 0, 98, 71, 80, 68,108, 97,121,101,114, 0, 82,101,112,111, -114,116, 0, 82,101,112,111,114,116, 76,105,115,116, 0, 82,101,112,111,114,116, 84,105,109,101,114, 73,110,102,111, 0,119,109, - 87,105,110,100,111,119, 77, 97,110, 97,103,101,114, 0,119,109, 87,105,110,100,111,119, 0,119,109, 75,101,121, 67,111,110,102, -105,103, 0,119,109, 69,118,101,110,116, 0,119,109, 83,117, 98, 87,105,110,100,111,119, 0,119,109, 71,101,115,116,117,114,101, - 0,119,109, 75,101,121, 77, 97,112, 73,116,101,109, 0, 80,111,105,110,116,101,114, 82, 78, 65, 0,119,109, 75,101,121, 77, 97, -112, 0,119,109, 79,112,101,114, 97,116,111,114, 84,121,112,101, 0, 70, 77,111,100,105,102,105,101,114, 0, 70, 77,111,100, 95, - 71,101,110,101,114, 97,116,111,114, 0, 70, 77,111,100, 95, 70,117,110, 99,116,105,111,110, 71,101,110,101,114, 97,116,111,114, - 0, 70, 67, 77, 95, 69,110,118,101,108,111,112,101, 68, 97,116, 97, 0, 70, 77,111,100, 95, 69,110,118,101,108,111,112,101, 0, - 70, 77,111,100, 95, 67,121, 99,108,101,115, 0, 70, 77,111,100, 95, 80,121,116,104,111,110, 0, 70, 77,111,100, 95, 76,105,109, -105,116,115, 0, 70, 77,111,100, 95, 78,111,105,115,101, 0, 70, 77,111,100, 95, 83,116,101,112,112,101,100, 0, 68,114,105,118, -101,114, 84, 97,114,103,101,116, 0, 68,114,105,118,101,114, 86, 97,114, 0, 67,104, 97,110,110,101,108, 68,114,105,118,101,114, - 0, 70, 80,111,105,110,116, 0, 70, 67,117,114,118,101, 0, 65,110,105,109, 77, 97,112, 80, 97,105,114, 0, 65,110,105,109, 77, - 97,112,112,101,114, 0, 78,108, 97, 83,116,114,105,112, 0, 78,108, 97, 84,114, 97, 99,107, 0, 75, 83, 95, 80, 97,116,104, 0, - 75,101,121,105,110,103, 83,101,116, 0, 65,110,105,109, 79,118,101,114,114,105,100,101, 0, 73,100, 65,100,116, 84,101,109,112, -108, 97,116,101, 0, 66,111,105,100, 82,117,108,101, 0, 66,111,105,100, 82,117,108,101, 71,111, 97,108, 65,118,111,105,100, 0, - 66,111,105,100, 82,117,108,101, 65,118,111,105,100, 67,111,108,108,105,115,105,111,110, 0, 66,111,105,100, 82,117,108,101, 70, -111,108,108,111,119, 76,101, 97,100,101,114, 0, 66,111,105,100, 82,117,108,101, 65,118,101,114, 97,103,101, 83,112,101,101,100, - 0, 66,111,105,100, 82,117,108,101, 70,105,103,104,116, 0, 66,111,105,100, 83,116, 97,116,101, 0, 70, 76, 85, 73, 68, 95, 51, - 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 0, 0, 0, 84, 76, 69, 78, 1, 0, 1, 0, 2, 0, 2, 0, 4, 0, 4, 0, - 4, 0, 4, 0, 8, 0, 0, 0, 8, 0, 12, 0, 8, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, 12, 0, 24, 0, 16, 0, 16, 0, - 32, 0, 16, 0, 16, 0, 20, 0, 76, 0, 52, 0, 40, 2, 0, 0, 32, 0,140, 0,220, 3, 92, 0, 36, 0, 56, 0, 84, 0,112, 0, -124, 0, 56, 0, 24, 0, 40, 0,120, 0, 12, 0,104, 0, 36, 0,120, 5,156, 1, 0, 0, 0, 0, 0, 0, 8, 1, 48, 1, 84, 1, - 24, 0, 8, 3,168, 0, 0, 0, 72, 0, 32, 1,152, 0,132, 0,108, 1, 16, 1, 56, 0, 88, 0,160, 2, 76, 0, 60, 1, 0, 0, -108, 0,104, 0,148, 0, 56, 0, 8, 0, 16, 0, 92, 1, 0, 0, 0, 0, 0, 0, 40, 1, 20, 0, 44, 0, 60, 0, 24, 0, 12, 0, - 12, 0, 4, 0, 8, 0, 8, 0, 0, 0, 28, 0, 84, 0, 32, 0, 8, 0, 12, 0, 8, 0, 8, 0, 4, 0, 4, 0, 0, 1, 32, 0, - 12, 0, 16, 0, 64, 0, 24, 0, 12, 0, 40, 0, 64, 0, 80, 0,100, 0,108, 0, 80, 0,108, 0,128, 0, 76, 0, 72, 0,120, 0, - 72, 0, 84, 0,188, 0, 48, 0,168, 0,160, 0,172, 0, 72, 0,104, 0,116, 0,196, 0,112, 0,224, 0, 64, 0, 92, 0, 0, 0, -144, 0, 32, 0,240, 1,112, 0, 0, 0, 88, 0, 0, 0, 0, 0, 76, 0, 8, 0, 8, 0,244, 0, 88, 0,124, 1, 84, 0, 76, 0, - 72, 0, 72, 0,176, 1,120, 0,116, 0, 64, 0,120, 0, 92, 0,220, 0, 40, 0, 0, 0, 92, 0,148, 0, 72, 0, 48, 0, 20, 0, -120, 0,144, 0, 88, 1,208, 0,180, 0, 0, 0, 68, 0, 92, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,120, 1, 28, 0,176, 0, -144, 0, 64, 0, 60, 0, 24, 0, 72, 0,232, 3, 56, 0, 20, 0, 16, 0,100, 0, 84, 0, 24, 0,184, 2, 44, 0, 16, 0,156, 0, - 80, 0, 96, 0, 44, 0,144, 1, 32, 0, 8, 0, 24, 0, 56, 2, 0, 0, 0, 0, 72, 0, 72, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,248, 0, 40, 0,140, 0, 48, 0,140, 0,208, 0, 24, 0,216, 0,216, 0,200, 1, 60, 0, 0, 0,120, 0, 0, 0,252, 0, - 12, 0, 12, 0, 24, 33,112, 16, 24, 16,192, 0,124, 2, 80, 2, 40, 0, 36, 0,188, 0,244, 0, 52, 0,140, 2, 28, 0,112, 1, - 88, 0, 16, 1, 32, 0,224, 0, 32, 0, 32, 0,112, 2,104, 1, 16, 0, 48, 29, 72, 0, 56, 0,248, 12, 20, 0, 24, 0, 64, 1, - 0, 0, 0, 0, 96, 0, 0, 0,248, 0, 0, 0, 16, 1, 80, 0, 28, 0, 16, 0, 8, 0, 44, 0,252, 0,240, 0,168, 1,216, 0, - 92, 1, 16, 0, 12, 0, 24, 0, 52, 0, 16, 0, 20, 0, 16, 0, 24, 0, 56, 1, 0, 0, 56, 0, 52, 0, 48, 0, 8, 0, 44, 0, - 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 72, 0, 68, 0, 76, 0, 80, 0, 60, 0,128, 0, 76, 0, 60, 0, - 12, 0, 92, 0, 68, 0, 32, 0, 80, 0, 16, 0, 76, 0,108, 0, 84, 0, 28, 0, 96, 0, 56, 0, 56, 0,108, 0,140, 0, 4, 0, - 20, 0, 12, 0, 8, 0, 80, 0, 40, 0,188, 0, 24, 0, 16, 1,144, 0, 16, 0,204, 1, 0, 0, 4, 0, 40, 0,104, 0,216, 0, - 64, 0, 44, 0, 72, 0,116, 0, 60, 0,112, 0, 16, 0, 52, 0, 44, 0, 44, 0, 44, 0, 8, 0, 36, 0, 68, 0, 64, 0, 44, 0, - 44, 0, 20, 0, 52, 0, 96, 0, 12, 0,108, 0, 92, 0, 52, 0, 28, 0, 28, 0, 28, 0, 52, 0, 20, 0, 60, 0,140, 0, 36, 0, -120, 0, 32, 0,180, 0, 0, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, 44, 0, 8, 0, 8, 0, 64, 0, - 32, 0, 24, 0, 8, 0, 24, 0, 32, 0, 8, 0, 84, 0, 20, 0, 32, 0, 12, 0, 44, 0, 20, 0, 68, 0,240, 0, 24, 0, 56, 0, - 52, 0, 20, 0, 64, 0, 28, 0, 20, 0,180, 0, 36, 0,200, 1, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 20, 0, 24, 0, -172, 0, 24, 0, 28, 0, 20, 0,168, 0,148, 0,152, 0, 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 96, 0, 0, 0, 88, 0, 20, 0, - 24, 0, 16, 0, 20, 0, 8, 0, 8, 0, 24, 0, 20, 0, 20, 0, 48, 0,208, 1, 28, 1, 16, 0, 68, 0, 0, 1, 20, 0,160, 0, - 88, 0, 96, 0,152, 0, 20, 0, 56, 0, 48, 0, 68, 0, 56, 0, 92, 0, 64, 0, 56, 0, 96, 0, 0, 0, 0, 0, 83, 84, 82, 67, -153, 1, 0, 0, 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0, 11, 0, 1, 0, 9, 0, 2, 0, - 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4, 0, 13, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0, 14, 0, 2, 0, 7, 0, 5, 0, - 7, 0, 6, 0, 15, 0, 2, 0, 4, 0, 5, 0, 4, 0, 6, 0, 16, 0, 2, 0, 8, 0, 5, 0, 8, 0, 6, 0, 17, 0, 3, 0, - 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 18, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 19, 0, 3, 0, - 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 20, 0, 4, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 4, 0, 8, 0, - 21, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 8, 0, 22, 0, 4, 0, 8, 0, 5, 0, 8, 0, 6, 0, - 8, 0, 7, 0, 8, 0, 8, 0, 23, 0, 4, 0, 4, 0, 9, 0, 4, 0, 10, 0, 4, 0, 11, 0, 4, 0, 12, 0, 24, 0, 4, 0, - 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 25, 0, 4, 0, 9, 0, 13, 0, 12, 0, 14, 0, 4, 0, 15, 0, - 4, 0, 16, 0, 26, 0, 10, 0, 26, 0, 0, 0, 26, 0, 1, 0, 0, 0, 17, 0, 0, 0, 18, 0, 2, 0, 19, 0, 0, 0, 20, 0, - 4, 0, 21, 0, 25, 0, 22, 0, 4, 0, 23, 0, 4, 0, 24, 0, 27, 0, 9, 0, 9, 0, 0, 0, 9, 0, 1, 0, 27, 0, 25, 0, - 28, 0, 26, 0, 0, 0, 27, 0, 2, 0, 28, 0, 2, 0, 19, 0, 4, 0, 29, 0, 26, 0, 30, 0, 28, 0, 8, 0, 27, 0, 31, 0, - 27, 0, 32, 0, 29, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 4, 0, 36, 0, 4, 0, 37, 0, 28, 0, 38, 0, 30, 0, 5, 0, - 4, 0, 39, 0, 4, 0, 40, 0, 2, 0, 41, 0, 2, 0, 42, 0, 4, 0, 43, 0, 31, 0, 6, 0, 32, 0, 44, 0, 2, 0, 45, 0, - 2, 0, 46, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 47, 0, 33, 0, 21, 0, 33, 0, 0, 0, 33, 0, 1, 0, 34, 0, 48, 0, - 35, 0, 49, 0, 24, 0, 50, 0, 24, 0, 51, 0, 2, 0, 45, 0, 2, 0, 46, 0, 2, 0, 52, 0, 2, 0, 53, 0, 2, 0, 54, 0, - 2, 0, 55, 0, 2, 0, 19, 0, 2, 0, 56, 0, 7, 0, 11, 0, 7, 0, 12, 0, 4, 0, 57, 0, 7, 0, 58, 0, 7, 0, 59, 0, - 7, 0, 60, 0, 31, 0, 61, 0, 36, 0, 7, 0, 27, 0, 31, 0, 12, 0, 62, 0, 24, 0, 63, 0, 2, 0, 45, 0, 2, 0, 64, 0, - 2, 0, 65, 0, 2, 0, 37, 0, 37, 0, 16, 0, 37, 0, 0, 0, 37, 0, 1, 0, 7, 0, 66, 0, 7, 0, 60, 0, 2, 0, 17, 0, - 2, 0, 46, 0, 2, 0, 67, 0, 2, 0, 19, 0, 4, 0, 68, 0, 4, 0, 69, 0, 9, 0, 2, 0, 7, 0, 70, 0, 0, 0, 20, 0, - 0, 0, 71, 0, 7, 0, 72, 0, 7, 0, 73, 0, 38, 0, 13, 0, 27, 0, 31, 0, 39, 0, 74, 0, 37, 0, 75, 0, 0, 0, 76, 0, - 4, 0, 77, 0, 7, 0, 60, 0, 12, 0, 78, 0, 36, 0, 79, 0, 27, 0, 80, 0, 2, 0, 17, 0, 2, 0, 81, 0, 2, 0, 82, 0, - 2, 0, 19, 0, 40, 0, 6, 0, 40, 0, 0, 0, 40, 0, 1, 0, 0, 0, 83, 0, 0, 0, 84, 0, 4, 0, 23, 0, 4, 0, 85, 0, - 41, 0, 10, 0, 41, 0, 0, 0, 41, 0, 1, 0, 4, 0, 86, 0, 4, 0, 87, 0, 4, 0, 88, 0, 4, 0, 89, 0, 4, 0, 14, 0, - 4, 0, 90, 0, 0, 0, 91, 0, 0, 0, 92, 0, 42, 0, 15, 0, 27, 0, 31, 0, 0, 0, 93, 0, 4, 0, 90, 0, 4, 0, 94, 0, - 12, 0, 95, 0, 40, 0, 96, 0, 40, 0, 97, 0, 4, 0, 98, 0, 4, 0, 99, 0, 12, 0,100, 0, 0, 0,101, 0, 4, 0,102, 0, - 4, 0,103, 0, 9, 0,104, 0, 8, 0,105, 0, 43, 0, 3, 0, 4, 0,106, 0, 4, 0,107, 0, 9, 0, 2, 0, 44, 0, 15, 0, - 27, 0, 31, 0, 39, 0, 74, 0, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,108, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0,111, 0, - 7, 0,112, 0, 7, 0,113, 0, 7, 0,114, 0, 7, 0,115, 0, 7, 0,116, 0, 36, 0, 79, 0, 32, 0,117, 0, 45, 0, 13, 0, - 4, 0,118, 0, 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, 2, 0,122, 0, 2, 0,123, 0, 2, 0, 19, 0, 2, 0,124, 0, - 2, 0,125, 0, 2, 0,126, 0, 2, 0,127, 0, 2, 0,128, 0, 46, 0,129, 0, 47, 0, 32, 0, 27, 0, 31, 0, 0, 0, 34, 0, - 12, 0,130, 0, 48, 0,131, 0, 49, 0,132, 0, 50, 0,133, 0, 50, 0,134, 0, 2, 0,135, 0, 2, 0,136, 0, 2, 0,124, 0, - 2, 0, 19, 0, 2, 0,137, 0, 2, 0, 17, 0, 4, 0,138, 0, 2, 0,139, 0, 2, 0,140, 0, 2, 0,141, 0, 2, 0,142, 0, - 2, 0,143, 0, 2, 0,144, 0, 4, 0,145, 0, 4, 0,146, 0, 43, 0,147, 0, 30, 0,148, 0, 7, 0,149, 0, 4, 0,150, 0, - 2, 0,151, 0, 2, 0,152, 0, 2, 0,153, 0, 2, 0,154, 0, 7, 0,155, 0, 7, 0,156, 0, 51, 0, 63, 0, 2, 0,157, 0, - 2, 0,158, 0, 2, 0,159, 0, 2, 0,160, 0, 32, 0,161, 0, 52, 0,162, 0, 0, 0,163, 0, 0, 0,164, 0, 0, 0,165, 0, - 0, 0,166, 0, 0, 0,167, 0, 7, 0,168, 0, 7, 0,169, 0, 7, 0,170, 0, 2, 0,171, 0, 2, 0,172, 0, 2, 0,173, 0, - 2, 0,174, 0, 2, 0,175, 0, 2, 0,176, 0, 0, 0,177, 0, 0, 0,178, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, - 7, 0,182, 0, 7, 0,183, 0, 7, 0, 56, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0,186, 0, 7, 0,187, 0, 7, 0,188, 0, - 7, 0,189, 0, 7, 0,190, 0, 7, 0,191, 0, 7, 0,192, 0, 7, 0,193, 0, 7, 0,194, 0, 7, 0,195, 0, 7, 0,196, 0, - 7, 0,197, 0, 7, 0,198, 0, 7, 0,199, 0, 7, 0,200, 0, 7, 0,201, 0, 7, 0,202, 0, 7, 0,203, 0, 7, 0,204, 0, - 7, 0,205, 0, 7, 0,206, 0, 7, 0,207, 0, 7, 0,208, 0, 7, 0,209, 0, 7, 0,210, 0, 7, 0,211, 0, 7, 0,212, 0, - 7, 0,213, 0, 7, 0,214, 0, 7, 0,215, 0, 7, 0,216, 0, 7, 0,217, 0, 7, 0,218, 0, 53, 0, 15, 0, 0, 0,219, 0, - 9, 0,220, 0, 0, 0,221, 0, 0, 0,222, 0, 4, 0,223, 0, 4, 0,224, 0, 9, 0,225, 0, 7, 0,226, 0, 7, 0,227, 0, - 7, 0,228, 0, 4, 0,229, 0, 9, 0,230, 0, 9, 0,231, 0, 4, 0,232, 0, 4, 0, 37, 0, 54, 0, 6, 0, 7, 0,179, 0, - 7, 0,180, 0, 7, 0,181, 0, 7, 0,233, 0, 7, 0, 66, 0, 4, 0, 63, 0, 55, 0, 5, 0, 2, 0, 19, 0, 2, 0, 36, 0, - 2, 0, 63, 0, 2, 0,234, 0, 54, 0,228, 0, 56, 0, 17, 0, 32, 0,161, 0, 47, 0,235, 0, 57, 0,236, 0, 7, 0,237, 0, - 7, 0,238, 0, 2, 0, 17, 0, 2, 0,239, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0,240, 0, 4, 0,241, 0, 2, 0,242, 0, - 2, 0,243, 0, 4, 0,124, 0, 4, 0,138, 0, 2, 0,244, 0, 2, 0,245, 0, 58, 0, 22, 0, 2, 0, 19, 0, 2, 0,246, 0, - 7, 0,247, 0, 7, 0,248, 0, 2, 0,137, 0, 2, 0,249, 0, 4, 0,250, 0, 4, 0,251, 0, 32, 0,161, 0, 4, 0,252, 0, - 2, 0,253, 0, 2, 0,254, 0, 9, 0,255, 0, 7, 0, 0, 1, 7, 0, 1, 1, 2, 0, 2, 1, 2, 0, 3, 1, 2, 0, 4, 1, - 2, 0, 5, 1, 7, 0, 6, 1, 7, 0, 7, 1, 55, 0, 8, 1, 59, 0, 13, 0, 4, 0, 9, 1, 4, 0, 10, 1, 2, 0, 11, 1, - 2, 0, 19, 0, 2, 0, 12, 1, 2, 0, 13, 1, 32, 0,161, 0, 7, 0, 14, 1, 4, 0, 15, 1, 0, 0, 16, 1, 7, 0, 17, 1, - 4, 0, 18, 1, 4, 0,124, 0, 52, 0, 63, 0, 27, 0, 31, 0, 39, 0, 74, 0, 7, 0, 19, 1, 7, 0, 20, 1, 7, 0, 21, 1, - 7, 0, 22, 1, 7, 0, 23, 1, 7, 0, 24, 1, 7, 0, 25, 1, 7, 0, 26, 1, 7, 0, 27, 1, 7, 0, 69, 0, 7, 0, 28, 1, - 7, 0, 29, 1, 7, 0, 30, 1, 7, 0, 31, 1, 7, 0, 32, 1, 7, 0, 33, 1, 7, 0, 34, 1, 7, 0, 35, 1, 7, 0, 36, 1, - 7, 0, 37, 1, 7, 0, 38, 1, 7, 0, 39, 1, 2, 0, 40, 1, 2, 0, 41, 1, 2, 0, 42, 1, 2, 0, 43, 1, 2, 0, 44, 1, - 2, 0, 45, 1, 2, 0, 46, 1, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,239, 0, 7, 0, 47, 1, 7, 0, 48, 1, 7, 0, 49, 1, - 7, 0, 50, 1, 4, 0, 51, 1, 4, 0, 52, 1, 2, 0, 53, 1, 2, 0, 54, 1, 2, 0, 12, 1, 2, 0,122, 0, 4, 0, 23, 0, - 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, 7, 0, 55, 1, 7, 0, 56, 1, 7, 0, 89, 0, 45, 0, 57, 1, 60, 0, 58, 1, - 36, 0, 79, 0, 47, 0,235, 0, 53, 0, 59, 1, 55, 0, 8, 1, 56, 0, 60, 1, 30, 0,148, 0, 58, 0, 61, 1, 59, 0, 62, 1, - 0, 0, 63, 1, 0, 0,178, 0, 61, 0, 8, 0, 7, 0, 64, 1, 7, 0, 65, 1, 7, 0,169, 0, 4, 0, 19, 0, 7, 0, 66, 1, - 7, 0, 67, 1, 7, 0, 68, 1, 32, 0, 44, 0, 62, 0, 72, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0, 17, 0, 2, 0, 19, 0, - 4, 0, 69, 1, 2, 0,172, 0, 2, 0, 70, 1, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,182, 0, 7, 0, 71, 1, - 7, 0, 72, 1, 7, 0, 73, 1, 7, 0, 74, 1, 7, 0, 75, 1, 7, 0, 76, 1, 7, 0, 77, 1, 7, 0, 78, 1, 7, 0, 79, 1, - 7, 0, 80, 1, 7, 0, 81, 1, 63, 0, 82, 1, 2, 0,246, 0, 2, 0, 69, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0, 83, 1, - 7, 0, 84, 1, 7, 0, 85, 1, 7, 0, 86, 1, 7, 0, 87, 1, 2, 0, 88, 1, 2, 0, 89, 1, 2, 0, 90, 1, 2, 0, 91, 1, - 0, 0, 92, 1, 0, 0, 93, 1, 2, 0, 94, 1, 2, 0, 95, 1, 2, 0, 96, 1, 2, 0, 97, 1, 2, 0, 98, 1, 7, 0, 99, 1, - 7, 0,100, 1, 7, 0,101, 1, 7, 0,102, 1, 2, 0,103, 1, 2, 0, 89, 0, 2, 0,104, 1, 2, 0,105, 1, 2, 0,106, 1, - 2, 0,107, 1, 7, 0,108, 1, 7, 0,109, 1, 7, 0,110, 1, 7, 0,111, 1, 7, 0,112, 1, 7, 0,113, 1, 7, 0,114, 1, - 7, 0,115, 1, 7, 0,116, 1, 7, 0,117, 1, 7, 0,118, 1, 7, 0,119, 1, 2, 0,120, 1, 0, 0,121, 1, 36, 0, 79, 0, - 51, 0,122, 1, 2, 0,123, 1, 0, 0,124, 1, 30, 0,148, 0, 64, 0, 2, 0, 27, 0, 31, 0, 36, 0, 79, 0, 65, 0, 18, 0, - 7, 0,125, 1, 7, 0,126, 1, 7, 0,127, 1, 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, 7, 0,131, 1, 7, 0,132, 1, - 7, 0,133, 1, 7, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 2, 0,137, 1, 2, 0,138, 1, 7, 0,139, 1, 7, 0,140, 1, - 7, 0,141, 1, 7, 0,142, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0,143, 1, 2, 0, 19, 0, 7, 0,179, 0, - 7, 0,180, 0, 7, 0,181, 0, 7, 0,144, 1, 7, 0,145, 1, 7, 0,146, 1, 7, 0,147, 1, 7, 0,148, 1, 7, 0,149, 1, - 7, 0,150, 1, 7, 0,151, 1, 7, 0,152, 1, 7, 0,153, 1, 7, 0,154, 1, 7, 0,155, 1, 7, 0,156, 1, 7, 0,157, 1, - 7, 0,158, 1, 7, 0,159, 1, 7, 0,160, 1, 7, 0,161, 1, 7, 0,162, 1, 7, 0,163, 1, 65, 0,164, 1, 7, 0,165, 1, - 7, 0,166, 1, 7, 0,167, 1, 7, 0,168, 1, 7, 0,169, 1, 7, 0,170, 1, 7, 0,171, 1, 2, 0,172, 1, 2, 0,173, 1, - 2, 0,174, 1, 0, 0,175, 1, 0, 0,176, 1, 7, 0,177, 1, 7, 0,178, 1, 2, 0,179, 1, 2, 0,180, 1, 7, 0,181, 1, - 7, 0,182, 1, 7, 0,183, 1, 7, 0,184, 1, 2, 0,185, 1, 2, 0,186, 1, 4, 0, 69, 1, 4, 0,187, 1, 2, 0,188, 1, - 2, 0,189, 1, 2, 0,190, 1, 2, 0,191, 1, 7, 0,192, 1, 7, 0,193, 1, 7, 0,194, 1, 7, 0,195, 1, 7, 0,196, 1, - 7, 0,197, 1, 7, 0,198, 1, 7, 0,199, 1, 7, 0,200, 1, 7, 0,201, 1, 0, 0,202, 1, 7, 0,203, 1, 7, 0,204, 1, - 7, 0,205, 1, 4, 0,206, 1, 0, 0,207, 1, 0, 0,104, 1, 0, 0,208, 1, 0, 0, 63, 1, 2, 0,209, 1, 2, 0,210, 1, - 2, 0,123, 1, 2, 0,211, 1, 2, 0,212, 1, 2, 0,213, 1, 7, 0,214, 1, 7, 0,215, 1, 7, 0,216, 1, 7, 0,217, 1, - 7, 0,218, 1, 2, 0,157, 0, 2, 0,158, 0, 55, 0,219, 1, 55, 0,220, 1, 0, 0,221, 1, 0, 0,222, 1, 0, 0,223, 1, - 0, 0,224, 1, 2, 0,225, 1, 2, 0,226, 1, 7, 0,227, 1, 7, 0,228, 1, 51, 0,122, 1, 60, 0, 58, 1, 36, 0, 79, 0, - 67, 0,229, 1, 30, 0,148, 0, 7, 0,230, 1, 7, 0,231, 1, 7, 0,232, 1, 7, 0,233, 1, 7, 0,234, 1, 2, 0,235, 1, - 2, 0, 69, 0, 7, 0,236, 1, 7, 0,237, 1, 7, 0,238, 1, 7, 0,239, 1, 7, 0,240, 1, 7, 0,241, 1, 7, 0,242, 1, - 7, 0,243, 1, 7, 0,244, 1, 2, 0,245, 1, 2, 0,246, 1, 4, 0,247, 1, 4, 0,248, 1, 12, 0,249, 1, 68, 0, 4, 0, - 27, 0, 31, 0, 0, 0,250, 1, 69, 0, 2, 0, 43, 0,147, 0, 70, 0, 26, 0, 70, 0, 0, 0, 70, 0, 1, 0, 71, 0,251, 1, - 4, 0,252, 1, 4, 0,253, 1, 4, 0,254, 1, 4, 0,255, 1, 4, 0, 0, 2, 4, 0, 1, 2, 2, 0, 17, 0, 2, 0, 19, 0, - 2, 0, 2, 2, 2, 0, 3, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 4, 2, 7, 0, 5, 2, 7, 0, 6, 2, - 7, 0, 7, 2, 7, 0, 8, 2, 7, 0, 9, 2, 7, 0, 10, 2, 7, 0, 23, 0, 7, 0, 11, 2, 7, 0, 12, 2, 72, 0, 20, 0, - 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 13, 2, 12, 0, 14, 2, 12, 0, 15, 2, 36, 0, 79, 0, 66, 0, 16, 2, - 0, 0, 19, 0, 0, 0, 17, 2, 2, 0, 18, 2, 2, 0,171, 0, 2, 0, 37, 0, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, - 7, 0, 19, 2, 7, 0, 20, 2, 7, 0, 21, 2, 70, 0, 22, 2, 35, 0, 11, 0, 7, 0, 23, 2, 7, 0, 24, 2, 7, 0, 25, 2, - 7, 0,248, 0, 2, 0, 54, 0, 0, 0, 26, 2, 0, 0, 27, 2, 0, 0, 28, 2, 0, 0, 29, 2, 0, 0, 30, 2, 0, 0, 31, 2, - 34, 0, 7, 0, 7, 0, 32, 2, 7, 0, 24, 2, 7, 0, 25, 2, 2, 0, 28, 2, 2, 0, 31, 2, 7, 0,248, 0, 7, 0, 37, 0, - 73, 0, 21, 0, 73, 0, 0, 0, 73, 0, 1, 0, 2, 0, 17, 0, 2, 0, 33, 2, 2, 0, 31, 2, 2, 0, 19, 0, 2, 0, 34, 2, - 2, 0, 35, 2, 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 38, 2, 2, 0, 39, 2, 2, 0, 40, 2, 2, 0, 41, 2, 7, 0, 42, 2, - 7, 0, 43, 2, 34, 0, 48, 0, 35, 0, 49, 0, 2, 0, 44, 2, 2, 0, 45, 2, 4, 0, 46, 2, 74, 0, 5, 0, 2, 0, 47, 2, - 2, 0, 33, 2, 0, 0, 19, 0, 0, 0, 37, 0, 2, 0, 69, 0, 75, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 8, 0, - 7, 0, 48, 2, 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 49, 2, 12, 0, 14, 2, 12, 0, 50, 2, - 32, 0, 51, 2, 32, 0, 52, 2, 32, 0, 53, 2, 36, 0, 79, 0, 77, 0, 54, 2, 38, 0, 55, 2, 66, 0, 16, 2, 12, 0, 56, 2, - 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 2, 0,171, 0, 2, 0, 89, 0, 2, 0, 57, 2, 2, 0, 58, 2, 2, 0, 59, 2, - 7, 0, 60, 2, 7, 0, 61, 2, 2, 0, 62, 2, 2, 0, 18, 2, 2, 0, 19, 0, 2, 0, 63, 2, 7, 0, 64, 2, 7, 0, 65, 2, - 7, 0, 66, 2, 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 67, 2, 2, 0, 68, 2, 4, 0, 69, 2, 9, 0, 70, 2, 2, 0, 23, 0, - 2, 0, 95, 0, 2, 0, 66, 0, 2, 0, 71, 2, 7, 0, 72, 2, 7, 0, 73, 2, 7, 0, 74, 2, 7, 0, 75, 2, 7, 0, 76, 2, - 7, 0, 77, 2, 7, 0, 78, 2, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0, 81, 2, 0, 0, 82, 2, 78, 0, 83, 2, 79, 0, 84, 2, - 0, 0, 85, 2, 68, 0, 86, 2, 68, 0, 87, 2, 68, 0, 88, 2, 68, 0, 89, 2, 4, 0, 90, 2, 7, 0, 91, 2, 4, 0, 92, 2, - 4, 0, 93, 2, 75, 0, 94, 2, 4, 0, 95, 2, 4, 0, 96, 2, 74, 0, 97, 2, 74, 0, 98, 2, 80, 0, 41, 0, 27, 0, 31, 0, - 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 99, 2, 36, 0, 79, 0, 38, 0, 55, 2, 66, 0, 16, 2, 81, 0,100, 2, 82, 0,101, 2, - 83, 0,102, 2, 84, 0,103, 2, 85, 0,104, 2, 86, 0,105, 2, 87, 0,106, 2, 88, 0,107, 2, 80, 0,108, 2, 89, 0,109, 2, - 90, 0,110, 2, 91, 0,111, 2, 91, 0,112, 2, 91, 0,113, 2, 4, 0, 53, 0, 4, 0,114, 2, 4, 0,115, 2, 4, 0,116, 2, - 4, 0,117, 2, 2, 0,171, 0, 2, 0,118, 2, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 7, 0,119, 2, 4, 0, 57, 2, - 2, 0,120, 2, 2, 0, 19, 0, 2, 0,121, 2, 2, 0,122, 2, 2, 0, 18, 2, 2, 0,123, 2, 92, 0,124, 2, 93, 0,125, 2, - 83, 0, 8, 0, 9, 0,126, 2, 7, 0,127, 2, 4, 0,128, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, 2, 0,130, 2, - 2, 0,131, 2, 81, 0, 7, 0, 4, 0,132, 2, 4, 0,133, 2, 4, 0,134, 2, 4, 0,135, 2, 2, 0, 33, 2, 0, 0,136, 2, - 0, 0, 19, 0, 85, 0, 5, 0, 4, 0,132, 2, 4, 0,133, 2, 0, 0,137, 2, 0, 0,138, 2, 2, 0, 19, 0, 94, 0, 2, 0, - 4, 0,139, 2, 7, 0, 25, 2, 86, 0, 3, 0, 94, 0,140, 2, 4, 0,141, 2, 4, 0, 19, 0, 84, 0, 6, 0, 7, 0,142, 2, - 2, 0,143, 2, 2, 0, 33, 2, 0, 0, 19, 0, 0, 0,138, 2, 0, 0, 59, 2, 87, 0, 4, 0, 0, 0,233, 0, 0, 0,179, 0, - 0, 0,180, 0, 0, 0,181, 0, 95, 0, 6, 0, 47, 0,126, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, 2, 0,130, 2, - 2, 0,131, 2, 96, 0, 1, 0, 7, 0,144, 2, 97, 0, 5, 0, 0, 0,233, 0, 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, - 4, 0, 37, 0, 88, 0, 1, 0, 7, 0,145, 2, 89, 0, 2, 0, 4, 0,146, 2, 4, 0, 17, 0, 82, 0, 7, 0, 7, 0,127, 2, - 47, 0,126, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, 2, 0,130, 2, 2, 0,131, 2, 98, 0, 1, 0, 7, 0,147, 2, - 99, 0, 1, 0, 4, 0,148, 2,100, 0, 1, 0, 0, 0,149, 2,101, 0, 1, 0, 7, 0,127, 2,102, 0, 3, 0, 4, 0,150, 2, - 0, 0, 92, 0, 7, 0,151, 2,103, 0, 4, 0, 7, 0,233, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0,104, 0, 1, 0, -103, 0,128, 2,105, 0, 5, 0, 4, 0,152, 2, 4, 0,153, 2, 0, 0, 19, 0, 0, 0, 33, 2, 0, 0, 59, 2,106, 0, 2, 0, - 4, 0,154, 2, 4, 0,153, 2,107, 0, 10, 0,107, 0, 0, 0,107, 0, 1, 0,105, 0,155, 2,104, 0,156, 2,106, 0,157, 2, - 4, 0, 53, 0, 4, 0,115, 2, 4, 0,114, 2, 4, 0, 37, 0, 84, 0,158, 2, 92, 0, 14, 0, 12, 0,159, 2, 84, 0,158, 2, - 0, 0,160, 2, 0, 0,161, 2, 0, 0,162, 2, 0, 0,163, 2, 0, 0,164, 2, 0, 0,165, 2, 0, 0,166, 2, 0, 0, 19, 0, - 91, 0,111, 2, 91, 0,113, 2, 2, 0,167, 2, 0, 0,168, 2, 93, 0, 8, 0, 4, 0,169, 2, 4, 0,170, 2, 81, 0,171, 2, - 85, 0,172, 2, 4, 0,115, 2, 4, 0,114, 2, 4, 0, 53, 0, 4, 0, 37, 0,108, 0, 9, 0,108, 0, 0, 0,108, 0, 1, 0, - 4, 0, 17, 0, 4, 0, 69, 1, 4, 0,173, 2, 4, 0, 37, 0, 0, 0, 20, 0, 46, 0,129, 0, 0, 0,174, 2,109, 0, 7, 0, -108, 0,175, 2, 2, 0,176, 2, 2, 0,159, 2, 2, 0,177, 2, 2, 0, 90, 0, 9, 0,178, 2, 9, 0,179, 2,110, 0, 3, 0, -108, 0,175, 2, 32, 0,161, 0, 0, 0, 20, 0,111, 0, 5, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0, 20, 0, 2, 0,180, 2, - 0, 0,181, 2,112, 0, 5, 0,108, 0,175, 2, 7, 0, 87, 0, 7, 0,182, 2, 4, 0,183, 2, 4, 0,184, 2,113, 0, 5, 0, -108, 0,175, 2, 32, 0,185, 2, 0, 0, 71, 0, 4, 0, 69, 1, 4, 0, 19, 0,114, 0, 13, 0,108, 0,175, 2, 32, 0,186, 2, - 32, 0,187, 2, 32, 0,188, 2, 32, 0,189, 2, 7, 0,190, 2, 7, 0,191, 2, 7, 0,182, 2, 7, 0,192, 2, 4, 0,193, 2, - 4, 0,194, 2, 4, 0, 90, 0, 4, 0,195, 2,115, 0, 5, 0,108, 0,175, 2, 2, 0,196, 2, 2, 0, 19, 0, 7, 0,197, 2, - 32, 0,198, 2,116, 0, 3, 0,108, 0,175, 2, 7, 0,199, 2, 4, 0, 90, 0,117, 0, 10, 0,108, 0,175, 2, 7, 0,200, 2, - 4, 0,201, 2, 4, 0, 37, 0, 2, 0, 90, 0, 2, 0,202, 2, 2, 0,203, 2, 2, 0,204, 2, 7, 0,205, 2, 0, 0,206, 2, -118, 0, 3, 0,108, 0,175, 2, 7, 0, 37, 0, 4, 0, 17, 0,119, 0, 6, 0,108, 0,175, 2,120, 0,207, 2,121, 0,208, 2, -122, 0,209, 2, 7, 0,210, 2, 4, 0, 17, 0,123, 0, 11, 0,108, 0,175, 2, 52, 0,211, 2, 7, 0,212, 2, 4, 0,213, 2, - 0, 0,206, 2, 7, 0,214, 2, 4, 0,215, 2, 32, 0,216, 2, 0, 0,217, 2, 4, 0,218, 2, 4, 0, 37, 0,124, 0, 12, 0, -108, 0,175, 2, 32, 0,219, 2, 47, 0,220, 2, 4, 0, 90, 0, 4, 0,221, 2, 7, 0,222, 2, 7, 0,223, 2, 7, 0,224, 2, - 7, 0,225, 2, 0, 0,217, 2, 4, 0,218, 2, 4, 0, 37, 0,125, 0, 3, 0,108, 0,175, 2, 7, 0,226, 2, 4, 0,227, 2, -126, 0, 5, 0,108, 0,175, 2, 7, 0,228, 2, 0, 0,206, 2, 2, 0, 19, 0, 2, 0,229, 2,127, 0, 8, 0,108, 0,175, 2, - 32, 0,161, 0, 7, 0,228, 2, 7, 0,248, 0, 7, 0,106, 0, 0, 0,206, 2, 2, 0, 19, 0, 2, 0, 17, 0,128, 0, 21, 0, -108, 0,175, 2, 32, 0,230, 2, 0, 0,206, 2, 52, 0,211, 2, 32, 0,216, 2, 2, 0, 19, 0, 2, 0, 37, 0, 7, 0,231, 2, - 7, 0,232, 2, 7, 0,233, 2, 7, 0, 64, 2, 7, 0,234, 2, 7, 0,235, 2, 7, 0,236, 2, 7, 0,237, 2, 4, 0,215, 2, - 4, 0,218, 2, 0, 0,217, 2, 7, 0,238, 2, 7, 0,239, 2, 7, 0, 89, 0,129, 0, 7, 0,108, 0,175, 2, 2, 0,240, 2, - 2, 0,241, 2, 4, 0, 69, 0, 32, 0,161, 0, 7, 0,242, 2, 0, 0,206, 2,130, 0, 10, 0,108, 0,175, 2, 32, 0,161, 0, - 0, 0,243, 2, 7, 0,244, 2, 7, 0,245, 2, 7, 0,237, 2, 4, 0,246, 2, 4, 0,247, 2, 7, 0,248, 2, 0, 0, 20, 0, -131, 0, 1, 0,108, 0,175, 2,132, 0, 7, 0,108, 0,175, 2, 46, 0,129, 0,133, 0,249, 2,134, 0,250, 2,135, 0,251, 2, -136, 0,252, 2, 12, 0,253, 2,137, 0, 13, 0,108, 0,175, 2, 84, 0,254, 2, 84, 0,255, 2, 84, 0, 0, 3, 84, 0, 1, 3, - 84, 0, 2, 3, 84, 0, 3, 3, 81, 0, 4, 3, 4, 0, 5, 3, 4, 0, 6, 3, 7, 0,210, 2, 7, 0, 37, 0,138, 0, 7, 3, -139, 0, 7, 0,108, 0,175, 2, 84, 0,254, 2, 84, 0, 8, 3,140, 0, 9, 3,141, 0, 7, 3, 4, 0, 10, 3, 4, 0, 5, 3, -142, 0, 4, 0,108, 0,175, 2, 32, 0,161, 0, 4, 0, 11, 3, 4, 0, 37, 0,143, 0, 2, 0, 4, 0, 12, 3, 7, 0, 25, 2, -144, 0, 2, 0, 4, 0,120, 0, 4, 0, 13, 3,145, 0, 24, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0,206, 2, 2, 0, 14, 3, - 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 37, 0,143, 0, 15, 3, 4, 0, 16, 3, 7, 0, 17, 3, 4, 0, 53, 0, 4, 0, 18, 3, -144, 0, 19, 3,143, 0, 20, 3, 4, 0, 21, 3, 4, 0, 22, 3, 4, 0, 23, 3, 4, 0, 13, 3, 7, 0, 24, 3, 7, 0, 25, 3, - 7, 0, 26, 3, 7, 0, 27, 3, 7, 0, 28, 3, 9, 0, 29, 3,146, 0, 8, 0,108, 0,175, 2,147, 0, 30, 3,140, 0, 9, 3, - 4, 0, 31, 3, 4, 0, 32, 3, 4, 0, 33, 3, 2, 0, 19, 0, 2, 0, 56, 0,148, 0, 8, 0,108, 0,175, 2, 32, 0, 44, 0, - 2, 0,252, 0, 2, 0, 19, 0, 2, 0,196, 2, 2, 0, 56, 0, 7, 0, 34, 3, 7, 0, 35, 3,149, 0, 5, 0,108, 0,175, 2, - 4, 0, 36, 3, 2, 0, 19, 0, 2, 0, 37, 3, 7, 0, 38, 3,150, 0, 8, 0,108, 0,175, 2, 0, 0, 39, 3, 0, 0, 40, 3, - 0, 0,165, 2, 0, 0, 41, 3, 0, 0, 42, 3, 0, 0, 90, 0, 0, 0, 59, 2,151, 0, 3, 0,108, 0,175, 2,152, 0, 43, 3, -136, 0,252, 2,153, 0, 10, 0,108, 0,175, 2, 32, 0, 44, 3, 32, 0, 45, 3, 0, 0, 46, 3, 7, 0, 47, 3, 2, 0, 48, 3, - 2, 0, 49, 3, 0, 0, 50, 3, 0, 0, 51, 3, 0, 0,181, 2,154, 0, 9, 0,108, 0,175, 2, 32, 0, 52, 3, 0, 0, 46, 3, - 7, 0, 53, 3, 7, 0, 54, 3, 0, 0, 69, 1, 0, 0,196, 2, 0, 0, 55, 3, 0, 0, 37, 0,155, 0, 1, 0,108, 0,175, 2, -156, 0, 8, 0,108, 0,175, 2, 0, 0,206, 2, 7, 0,120, 0, 7, 0, 56, 3, 7, 0, 57, 3, 7, 0, 58, 3, 7, 0, 59, 3, - 4, 0, 19, 0,157, 0, 9, 0,108, 0,175, 2, 32, 0, 60, 3, 4, 0, 61, 3, 4, 0, 62, 3, 4, 0, 63, 3, 7, 0, 64, 3, - 7, 0, 65, 3, 2, 0,196, 2, 2, 0, 19, 0,158, 0, 28, 0, 27, 0, 31, 0, 2, 0, 34, 2, 2, 0, 35, 2, 2, 0, 66, 3, - 2, 0, 19, 0, 2, 0, 67, 3, 2, 0, 68, 3, 2, 0, 69, 3, 2, 0, 69, 0, 0, 0, 70, 3, 0, 0, 71, 3, 0, 0, 72, 3, - 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 73, 3, 7, 0, 74, 3, 7, 0, 75, 3, 7, 0, 76, 3, 7, 0, 77, 3, 7, 0, 78, 3, - 34, 0, 79, 3, 36, 0, 79, 0, 38, 0, 55, 2, 86, 0,105, 2, 0, 0, 71, 0, 7, 0, 80, 3, 7, 0, 81, 3,158, 0, 82, 3, -159, 0, 3, 0,159, 0, 0, 0,159, 0, 1, 0, 0, 0, 20, 0, 71, 0, 3, 0, 7, 0, 83, 3, 4, 0, 19, 0, 4, 0, 37, 0, - 32, 0,126, 0, 27, 0, 31, 0, 39, 0, 74, 0,160, 0, 84, 3, 2, 0, 17, 0, 2, 0, 85, 3, 4, 0, 86, 3, 4, 0, 87, 3, - 4, 0, 88, 3, 0, 0, 89, 3, 32, 0, 38, 0, 32, 0, 90, 3, 32, 0, 91, 3, 32, 0, 92, 3, 32, 0, 93, 3, 36, 0, 79, 0, - 77, 0, 54, 2, 71, 0,251, 1,161, 0, 94, 3,161, 0, 95, 3,162, 0, 96, 3, 9, 0, 2, 0,163, 0, 97, 3,164, 0, 98, 3, -165, 0, 99, 3, 12, 0,100, 3, 12, 0, 99, 2, 12, 0, 14, 2, 12, 0,101, 3, 12, 0,102, 3, 4, 0, 69, 1, 4, 0,103, 3, - 66, 0, 16, 2, 0, 0,104, 3, 4, 0, 18, 2, 4, 0,105, 3, 7, 0, 64, 1, 7, 0,106, 3, 7, 0,107, 3, 7, 0,169, 0, - 7, 0,108, 3, 7, 0, 65, 1, 7, 0,109, 3, 7, 0, 4, 2, 7, 0,110, 3, 7, 0,111, 3, 7, 0,112, 3, 7, 0,113, 3, - 7, 0,114, 3, 7, 0,115, 3, 7, 0,244, 2, 7, 0,116, 3, 7, 0,237, 0, 4, 0,117, 3, 2, 0, 19, 0, 2, 0,118, 3, - 2, 0,119, 3, 2, 0,120, 3, 2, 0,121, 3, 2, 0,122, 3, 2, 0,123, 3, 2, 0,124, 3, 2, 0,125, 3, 2, 0,126, 3, - 2, 0,127, 3, 2, 0,128, 3, 4, 0,129, 3, 4, 0,130, 3, 4, 0,131, 3, 4, 0,132, 3, 7, 0,133, 3, 7, 0, 91, 2, - 7, 0,134, 3, 7, 0,135, 3, 7, 0,136, 3, 7, 0,137, 3, 7, 0,138, 3, 7, 0,212, 0, 7, 0,139, 3, 7, 0,140, 3, - 7, 0,141, 3, 7, 0,142, 3, 2, 0,143, 3, 0, 0,144, 3, 0, 0,145, 3, 0, 0,146, 3, 0, 0,147, 3, 7, 0,148, 3, - 7, 0,149, 3, 12, 0,150, 3, 12, 0,151, 3, 12, 0,152, 3, 12, 0,153, 3, 7, 0,154, 3, 2, 0,146, 2, 2, 0,155, 3, - 7, 0,128, 2, 4, 0,156, 3, 4, 0,157, 3,166, 0,158, 3, 2, 0,159, 3, 2, 0,244, 0, 7, 0,160, 3, 12, 0,161, 3, - 12, 0,162, 3, 12, 0,163, 3, 12, 0,164, 3,167, 0, 61, 1,168, 0,165, 3, 67, 0,166, 3, 2, 0,167, 3, 2, 0,168, 3, - 2, 0,169, 3, 2, 0,170, 3, 7, 0,120, 2, 2, 0,171, 3, 2, 0,172, 3,152, 0,173, 3,140, 0,174, 3,140, 0,175, 3, - 4, 0,176, 3, 4, 0,177, 3, 4, 0,178, 3, 4, 0, 69, 0, 12, 0,179, 3, 12, 0,180, 3, 12, 0,181, 3,169, 0, 14, 0, -169, 0, 0, 0,169, 0, 1, 0, 32, 0, 38, 0, 7, 0,244, 2, 7, 0, 66, 1, 7, 0,245, 2, 7, 0,237, 2, 0, 0, 20, 0, - 4, 0,246, 2, 4, 0,247, 2, 4, 0,182, 3, 2, 0, 17, 0, 2, 0,183, 3, 7, 0,248, 2,170, 0, 12, 0,170, 0, 0, 0, -170, 0, 1, 0, 32, 0, 44, 0, 4, 0,184, 3, 4, 0,146, 2, 4, 0,185, 3, 4, 0, 17, 0, 4, 0,186, 3, 7, 0, 66, 1, - 7, 0,187, 3, 7, 0,188, 3, 7, 0,144, 2,167, 0, 40, 0, 4, 0, 19, 0, 2, 0,189, 3, 2, 0,190, 3, 2, 0,237, 2, - 2, 0,191, 3, 2, 0,192, 3, 2, 0,193, 3, 2, 0,194, 3, 2, 0,195, 3, 7, 0,196, 3, 7, 0,197, 3, 7, 0,198, 3, - 7, 0,199, 3, 7, 0,200, 3, 7, 0,201, 3, 7, 0,202, 3, 7, 0,203, 3, 7, 0,204, 3, 7, 0,205, 3, 7, 0,206, 3, - 7, 0,207, 3, 7, 0,208, 3, 7, 0,209, 3, 7, 0,210, 3, 7, 0,211, 3, 7, 0,212, 3, 7, 0,213, 3, 7, 0,214, 3, - 7, 0,215, 3, 7, 0,216, 3, 7, 0,217, 3, 7, 0,218, 3, 7, 0,219, 3, 7, 0,220, 3, 7, 0,221, 3, 7, 0,222, 3, - 52, 0,162, 0,171, 0,223, 3, 7, 0,224, 3, 4, 0,184, 2,172, 0, 5, 0, 67, 0,229, 1, 7, 0,225, 3, 7, 0,226, 3, - 2, 0, 19, 0, 2, 0,227, 3,173, 0, 9, 0,173, 0, 0, 0,173, 0, 1, 0, 4, 0,228, 3, 4, 0,229, 3, 4, 0,230, 3, - 4, 0, 19, 0, 4, 0,231, 3, 9, 0,232, 3, 9, 0,233, 3,136, 0, 19, 0,136, 0, 0, 0,136, 0, 1, 0, 4, 0, 19, 0, - 4, 0,234, 3, 4, 0,235, 3, 4, 0,236, 3, 4, 0,237, 3, 4, 0,238, 3, 4, 0,239, 3, 4, 0,229, 3, 4, 0,146, 2, - 4, 0, 56, 0, 0, 0,240, 3, 0, 0,241, 3, 0, 0,242, 3, 0, 0,243, 3, 12, 0,244, 3,174, 0,245, 3, 9, 0,246, 3, -175, 0, 1, 0, 7, 0, 32, 2,166, 0, 30, 0, 4, 0, 19, 0, 7, 0,247, 3, 7, 0,248, 3, 7, 0,249, 3, 4, 0,250, 3, - 4, 0,251, 3, 4, 0,252, 3, 4, 0,253, 3, 7, 0,254, 3, 7, 0,255, 3, 7, 0, 0, 4, 7, 0, 1, 4, 7, 0, 2, 4, - 7, 0, 3, 4, 7, 0, 4, 4, 7, 0, 5, 4, 7, 0, 6, 4, 7, 0, 7, 4, 7, 0, 8, 4, 7, 0, 9, 4, 7, 0, 10, 4, - 7, 0, 11, 4, 7, 0, 12, 4, 7, 0, 13, 4, 7, 0, 14, 4, 7, 0, 15, 4, 4, 0, 16, 4, 4, 0, 17, 4, 7, 0, 18, 4, - 7, 0,139, 3,168, 0, 54, 0, 4, 0,229, 3, 4, 0, 19, 4,176, 0, 20, 4,177, 0, 21, 4, 0, 0, 37, 0, 0, 0, 22, 4, - 2, 0, 23, 4, 7, 0, 24, 4, 0, 0, 25, 4, 7, 0, 26, 4, 7, 0, 27, 4, 7, 0, 28, 4, 7, 0, 29, 4, 7, 0, 30, 4, - 7, 0, 31, 4, 7, 0, 32, 4, 7, 0, 33, 4, 7, 0, 34, 4, 2, 0, 35, 4, 0, 0, 36, 4, 2, 0, 37, 4, 7, 0, 38, 4, - 7, 0, 39, 4, 0, 0, 40, 4, 4, 0,121, 0, 4, 0, 41, 4, 4, 0, 42, 4, 2, 0, 43, 4, 2, 0, 44, 4,175, 0, 45, 4, - 4, 0, 46, 4, 4, 0, 81, 0, 7, 0, 47, 4, 7, 0, 48, 4, 7, 0, 49, 4, 7, 0, 50, 4, 2, 0, 51, 4, 2, 0, 52, 4, - 2, 0, 53, 4, 2, 0, 54, 4, 2, 0, 55, 4, 2, 0, 56, 4, 2, 0, 57, 4, 2, 0, 58, 4,178, 0, 59, 4, 7, 0, 60, 4, - 7, 0, 61, 4,136, 0, 62, 4, 12, 0,253, 2,172, 0, 63, 4, 7, 0, 64, 4, 7, 0, 65, 4, 7, 0, 66, 4, 0, 0, 67, 4, -152, 0, 51, 0,151, 0, 68, 4, 2, 0, 17, 0, 2, 0, 69, 4, 2, 0, 70, 4, 2, 0, 71, 4, 7, 0, 72, 4, 2, 0, 73, 4, - 2, 0, 74, 4, 7, 0, 75, 4, 2, 0, 76, 4, 2, 0, 77, 4, 7, 0, 78, 4, 7, 0, 79, 4, 7, 0, 80, 4, 7, 0, 81, 4, - 7, 0, 82, 4, 4, 0, 83, 4, 4, 0, 84, 4, 7, 0, 85, 4, 4, 0, 86, 4, 7, 0, 87, 4, 7, 0, 88, 4, 7, 0, 89, 4, - 80, 0, 90, 4, 80, 0, 91, 4, 80, 0, 92, 4, 0, 0, 93, 4, 7, 0, 94, 4, 7, 0, 95, 4, 36, 0, 79, 0, 2, 0, 96, 4, - 0, 0, 97, 4, 0, 0, 98, 4, 7, 0, 99, 4, 4, 0,100, 4, 7, 0,101, 4, 7, 0,102, 4, 4, 0,103, 4, 4, 0, 19, 0, - 7, 0,104, 4, 7, 0,105, 4, 7, 0,106, 4, 84, 0,107, 4, 7, 0,108, 4, 7, 0,109, 4, 7, 0,110, 4, 7, 0,111, 4, - 7, 0,112, 4, 7, 0,113, 4, 7, 0,114, 4, 4, 0,115, 4,179, 0, 78, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0,172, 0, - 2, 0, 70, 1, 2, 0,104, 1, 2, 0,116, 4, 7, 0,117, 4, 7, 0,118, 4, 7, 0,119, 4, 7, 0,120, 4, 7, 0,121, 4, - 7, 0,122, 4, 7, 0,123, 4, 7, 0,124, 4, 7, 0,150, 1, 7, 0,152, 1, 7, 0,151, 1, 7, 0,125, 4, 4, 0,126, 4, - 7, 0,127, 4, 7, 0,128, 4, 7, 0,129, 4, 7, 0,130, 4, 7, 0,131, 4, 7, 0,132, 4, 7, 0,133, 4, 2, 0,134, 4, - 2, 0, 69, 1, 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4, 2, 0,138, 4, 2, 0,139, 4, 2, 0,140, 4, 7, 0,141, 4, - 7, 0,142, 4, 7, 0,143, 4, 7, 0,144, 4, 7, 0,145, 4, 7, 0,146, 4, 7, 0,147, 4, 7, 0,148, 4, 7, 0,149, 4, - 7, 0,150, 4, 7, 0,151, 4, 7, 0,152, 4, 2, 0,153, 4, 2, 0,154, 4, 2, 0,155, 4, 2, 0,156, 4, 7, 0,157, 4, - 7, 0,158, 4, 7, 0,159, 4, 7, 0,160, 4, 2, 0,161, 4, 2, 0,162, 4, 2, 0,163, 4, 2, 0,164, 4, 7, 0,165, 4, - 7, 0,166, 4, 7, 0,167, 4, 7, 0,168, 4, 7, 0,169, 4, 7, 0,170, 4, 7, 0,171, 4, 2, 0,172, 4, 2, 0,173, 4, - 2, 0,174, 4, 2, 0,175, 4, 2, 0,176, 4, 2, 0, 19, 0, 7, 0,177, 4, 7, 0,178, 4, 36, 0, 79, 0, 51, 0,122, 1, - 2, 0,123, 1, 2, 0,179, 4, 30, 0,148, 0,180, 0, 8, 0,180, 0, 0, 0,180, 0, 1, 0, 4, 0,117, 3, 4, 0,180, 4, - 4, 0, 19, 0, 2, 0,181, 4, 2, 0,182, 4, 32, 0,161, 0,181, 0, 13, 0, 9, 0,183, 4, 9, 0,184, 4, 4, 0,185, 4, - 4, 0,186, 4, 4, 0,187, 4, 4, 0,188, 4, 4, 0,189, 4, 4, 0,190, 4, 4, 0,191, 4, 4, 0,192, 4, 4, 0,193, 4, - 4, 0, 37, 0, 0, 0,194, 4,182, 0, 5, 0, 9, 0,195, 4, 9, 0,196, 4, 4, 0,197, 4, 4, 0, 69, 0, 0, 0,198, 4, -183, 0, 17, 0, 4, 0,199, 4, 4, 0,200, 4, 4, 0,201, 4, 4, 0,202, 4, 4, 0,203, 4, 4, 0,204, 4, 4, 0,205, 4, - 4, 0,206, 4, 4, 0,207, 4, 4, 0,208, 4, 4, 0,209, 4, 4, 0,210, 4, 2, 0,211, 4, 2, 0,212, 4, 4, 0,213, 4, - 4, 0,214, 4, 4, 0, 89, 0,184, 0, 15, 0, 4, 0, 17, 0, 4, 0,201, 4, 4, 0,215, 4, 4, 0,216, 4, 4, 0,217, 4, - 4, 0,218, 4, 7, 0,219, 4, 4, 0,220, 4, 4, 0, 90, 0, 4, 0,221, 4, 4, 0,222, 4, 4, 0,223, 4, 4, 0,224, 4, - 4, 0,225, 4, 26, 0, 30, 0,185, 0, 7, 0, 4, 0,226, 4, 7, 0,227, 4, 7, 0,228, 4, 7, 0,229, 4, 4, 0,230, 4, - 2, 0, 19, 0, 2, 0, 37, 0,186, 0, 11, 0,186, 0, 0, 0,186, 0, 1, 0, 0, 0, 20, 0, 66, 0,231, 4, 67, 0,232, 4, - 4, 0,117, 3, 4, 0,233, 4, 4, 0,234, 4, 4, 0, 37, 0, 4, 0,235, 4, 4, 0,236, 4,187, 0,111, 0,181, 0,237, 4, -182, 0,238, 4,183, 0,239, 4,184, 0,240, 4, 4, 0, 10, 3, 4, 0,121, 0, 4, 0, 41, 4, 7, 0,241, 4, 4, 0,242, 4, - 4, 0,243, 4, 4, 0,244, 4, 4, 0,245, 4, 2, 0, 19, 0, 2, 0,246, 4, 7, 0,247, 4, 7, 0,248, 4, 7, 0,249, 4, - 7, 0,250, 4, 7, 0,251, 4, 2, 0,252, 4, 2, 0,253, 4, 2, 0,254, 4, 2, 0,255, 4, 2, 0,243, 0, 2, 0, 0, 5, - 2, 0, 1, 5, 2, 0, 2, 5, 2, 0, 3, 5, 2, 0, 4, 5, 2, 0, 91, 1, 2, 0,106, 0, 2, 0, 5, 5, 2, 0, 6, 5, - 2, 0, 7, 5, 2, 0, 8, 5, 2, 0, 9, 5, 2, 0, 10, 5, 2, 0, 11, 5, 2, 0, 12, 5, 2, 0, 13, 5, 2, 0, 92, 1, - 2, 0, 14, 5, 2, 0, 15, 5, 2, 0, 16, 5, 2, 0, 17, 5, 4, 0, 18, 5, 4, 0, 69, 1, 4, 0, 19, 5, 2, 0, 20, 5, - 2, 0, 21, 5, 2, 0, 22, 5, 2, 0,248, 1, 2, 0, 23, 5, 2, 0, 24, 5, 2, 0, 25, 5, 2, 0, 26, 5, 24, 0, 27, 5, - 24, 0, 28, 5, 23, 0, 29, 5, 12, 0, 30, 5, 2, 0, 31, 5, 2, 0, 32, 5, 7, 0, 33, 5, 7, 0, 34, 5, 7, 0, 35, 5, - 7, 0, 36, 5, 4, 0, 37, 5, 7, 0, 38, 5, 7, 0, 39, 5, 7, 0, 40, 5, 7, 0, 41, 5, 2, 0, 42, 5, 2, 0, 43, 5, - 2, 0, 44, 5, 2, 0, 45, 5, 2, 0, 46, 5, 2, 0, 47, 5, 7, 0, 48, 5, 7, 0, 49, 5, 7, 0, 50, 5, 0, 0, 51, 5, - 0, 0, 52, 5, 4, 0, 53, 5, 2, 0, 54, 5, 2, 0,226, 1, 0, 0, 55, 5, 7, 0, 56, 5, 7, 0, 57, 5, 0, 0, 58, 5, - 0, 0, 59, 5, 0, 0, 60, 5, 0, 0, 61, 5, 4, 0, 62, 5, 2, 0, 63, 5, 2, 0, 64, 5, 7, 0, 65, 5, 7, 0, 66, 5, - 2, 0, 67, 5, 2, 0, 68, 5, 7, 0, 69, 5, 2, 0, 70, 5, 2, 0, 71, 5, 4, 0, 72, 5, 2, 0, 73, 5, 2, 0, 74, 5, - 2, 0, 75, 5, 2, 0, 76, 5, 7, 0, 77, 5, 7, 0, 69, 0, 42, 0, 78, 5, 0, 0, 79, 5,188, 0, 9, 0,188, 0, 0, 0, -188, 0, 1, 0, 0, 0, 20, 0, 2, 0, 80, 5, 2, 0, 81, 5, 2, 0, 82, 5, 2, 0, 89, 0, 7, 0, 83, 5, 7, 0, 69, 0, -189, 0, 7, 0, 2, 0,201, 2, 2, 0, 69, 1, 2, 0, 65, 3, 2, 0, 84, 5, 7, 0, 85, 5, 7, 0, 69, 0, 42, 0, 86, 5, -190, 0, 5, 0, 7, 0, 87, 5, 0, 0, 17, 0, 0, 0, 89, 0, 0, 0, 69, 0, 0, 0,226, 1,191, 0, 28, 0, 7, 0,132, 4, - 7, 0,133, 4, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0, 88, 5, 2, 0,179, 4, 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4, - 2, 0,138, 4, 2, 0,139, 4, 2, 0,140, 4,190, 0, 89, 5, 2, 0,252, 4, 2, 0,253, 4, 2, 0,254, 4, 2, 0,255, 4, - 2, 0,243, 0, 2, 0, 0, 5, 2, 0, 90, 5, 2, 0, 1, 5,189, 0, 91, 5, 2, 0, 92, 5, 2, 0, 3, 5, 2, 0, 6, 5, - 2, 0, 7, 5, 7, 0, 93, 5, 7, 0, 89, 0,192, 0, 6, 0,192, 0, 0, 0,192, 0, 1, 0, 4, 0,228, 3, 0, 0,240, 3, - 4, 0, 19, 0, 32, 0, 94, 5,193, 0, 6, 0,194, 0, 95, 5, 4, 0, 96, 5, 4, 0, 97, 5, 9, 0, 98, 5, 0, 0, 99, 5, - 4, 0, 90, 0,195, 0, 8, 0,193, 0,100, 5, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0,101, 5, 2, 0,102, 5, 2, 0,103, 5, - 4, 0, 89, 0, 9, 0,104, 5,196, 0, 6, 0, 2, 0,106, 0, 2, 0,234, 3, 2, 0,105, 5, 2, 0,195, 2, 4, 0, 19, 0, - 7, 0,212, 2,197, 0, 14, 0, 2, 0, 19, 0, 2, 0,106, 5, 2, 0,107, 5, 2, 0,108, 5,196, 0,109, 5, 9, 0,104, 5, - 7, 0,110, 5, 7, 0, 56, 0, 4, 0,111, 5, 4, 0,112, 5, 4, 0,113, 5, 4, 0,114, 5, 46, 0,129, 0, 32, 0,161, 0, -198, 0, 4, 0,198, 0, 0, 0,198, 0, 1, 0, 0, 0,115, 5, 7, 0,116, 5,199, 0, 14, 0,193, 0,100, 5, 4, 0, 90, 0, - 4, 0,117, 5, 7, 0,118, 5, 7, 0,119, 5, 7, 0,120, 5, 4, 0,121, 5, 4, 0,122, 5, 7, 0,123, 5, 7, 0,124, 5, - 4, 0,125, 5, 7, 0,126, 5, 7, 0,127, 5, 4, 0, 37, 0,200, 0, 7, 0,193, 0,100, 5, 2, 0, 19, 0, 2, 0, 37, 0, - 4, 0, 36, 0, 4, 0,128, 5, 86, 0,129, 5, 9, 0,104, 5,201, 0, 74, 0,200, 0,130, 5,200, 0,131, 5,199, 0, 84, 3, - 7, 0,132, 5, 2, 0,133, 5, 2, 0,134, 5, 7, 0,135, 5, 7, 0,136, 5, 2, 0,234, 3, 2, 0,137, 5, 7, 0,138, 5, - 7, 0,139, 5, 7, 0,140, 5, 2, 0,141, 5, 2, 0,111, 5, 2, 0,142, 5, 2, 0,143, 5, 2, 0,144, 5, 2, 0,145, 5, - 7, 0,146, 5, 7, 0,147, 5, 7, 0,148, 5, 2, 0,149, 5, 2, 0,150, 5, 2, 0,151, 5, 2, 0,152, 5, 2, 0,153, 5, - 2, 0,154, 5, 2, 0,155, 5,195, 0,156, 5,197, 0,157, 5, 7, 0,158, 5, 7, 0,159, 5, 7, 0,160, 5, 2, 0,161, 5, - 2, 0,162, 5, 0, 0,163, 5, 0, 0,164, 5, 0, 0,165, 5, 0, 0,166, 5, 0, 0,167, 5, 0, 0,168, 5, 2, 0,169, 5, - 7, 0,170, 5, 7, 0,171, 5, 7, 0,172, 5, 7, 0,173, 5, 7, 0,174, 5, 7, 0,175, 5, 7, 0,176, 5, 7, 0,177, 5, - 7, 0,178, 5, 7, 0,179, 5, 2, 0,180, 5, 0, 0,181, 5, 0, 0,182, 5, 0, 0,183, 5, 0, 0,184, 5, 32, 0,185, 5, - 0, 0,186, 5, 0, 0,187, 5, 0, 0,188, 5, 0, 0,189, 5, 0, 0,190, 5, 0, 0,191, 5, 0, 0,192, 5, 0, 0,193, 5, - 2, 0,194, 5, 2, 0,195, 5, 2, 0,196, 5, 2, 0,197, 5, 2, 0,198, 5, 4, 0,199, 5, 4, 0,200, 5,202, 0, 8, 0, - 4, 0,201, 5, 4, 0,202, 5, 4, 0,203, 5, 4, 0,204, 5, 4, 0,205, 5, 4, 0,206, 5, 4, 0, 53, 0, 4, 0,115, 2, -203, 0, 3, 0, 7, 0,207, 5, 2, 0,208, 5, 2, 0, 19, 0,204, 0, 4, 0, 7, 0,209, 5, 4, 0, 19, 0, 4, 0,210, 5, - 4, 0, 56, 0, 46, 0, 42, 0, 27, 0, 31, 0, 39, 0, 74, 0, 32, 0, 94, 5,179, 0,211, 5, 46, 0,212, 5, 47, 0,235, 0, - 12, 0,213, 5,180, 0,214, 5, 32, 0,215, 5, 7, 0,216, 5, 7, 0,217, 5, 7, 0,218, 5, 7, 0,219, 5, 4, 0,117, 3, - 4, 0,220, 5, 4, 0, 89, 0, 2, 0, 19, 0, 2, 0, 63, 1, 60, 0, 58, 1,205, 0,221, 5,201, 0,222, 5,206, 0,223, 5, -187, 0,179, 0,185, 0,224, 5, 12, 0,100, 0, 12, 0,225, 5, 9, 0,226, 5, 9, 0,227, 5, 9, 0,228, 5,207, 0,229, 5, - 2, 0,230, 5, 2, 0,231, 5, 2, 0,244, 0, 2, 0,232, 5, 4, 0,233, 5, 4, 0,234, 5, 12, 0,235, 5,190, 0, 89, 5, -191, 0,236, 5,203, 0,237, 5,163, 0, 97, 3,204, 0,238, 5,208, 0, 11, 0,208, 0, 0, 0,208, 0, 1, 0, 47, 0,235, 0, - 45, 0, 57, 1, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0,106, 0, 7, 0,239, 5, 2, 0,240, 5, 2, 0, 19, 0, 7, 0, 69, 0, -209, 0, 39, 0, 7, 0,241, 5, 7, 0,242, 5, 7, 0,243, 5, 7, 0,244, 5, 7, 0,245, 5, 7, 0,246, 5, 7, 0,247, 5, - 7, 0,248, 5, 7, 0,249, 5, 7, 0, 76, 1, 7, 0,250, 5, 7, 0,251, 5, 7, 0,252, 5, 7, 0,253, 5, 7, 0,168, 0, - 2, 0,254, 5, 2, 0,255, 5, 2, 0, 0, 6, 2, 0, 37, 0, 2, 0, 1, 6, 2, 0, 2, 6, 2, 0, 3, 6, 2, 0,240, 5, - 7, 0, 4, 6, 7, 0, 5, 6, 71, 0, 6, 6,163, 0, 97, 3,209, 0, 7, 6,210, 0, 8, 6,211, 0, 9, 6,212, 0, 10, 6, -213, 0, 11, 6,214, 0, 12, 6, 7, 0, 13, 6, 2, 0, 14, 6, 2, 0, 15, 6, 7, 0, 16, 6, 7, 0, 17, 6, 7, 0, 18, 6, -215, 0, 55, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 7, 0,249, 5, - 7, 0, 76, 1, 7, 0, 89, 0, 4, 0, 23, 6, 2, 0, 3, 6, 2, 0,240, 5, 32, 0, 94, 5, 32, 0, 24, 6, 12, 0, 25, 6, -208, 0, 26, 6,215, 0, 7, 6, 0, 0, 27, 6, 4, 0,117, 3, 4, 0,220, 5, 2, 0, 28, 6, 2, 0, 69, 0, 2, 0, 29, 6, - 2, 0, 30, 6, 2, 0,226, 1, 2, 0, 19, 0, 2, 0, 17, 2, 2, 0, 31, 6, 7, 0,111, 0, 7, 0, 32, 6, 7, 0, 16, 6, - 7, 0, 18, 6, 7, 0, 33, 6, 7, 0, 34, 6, 7, 0,168, 0, 7, 0,216, 5, 2, 0, 35, 6, 2, 0,248, 1, 2, 0, 36, 6, - 2, 0, 37, 6, 2, 0, 38, 6, 2, 0, 39, 6, 2, 0, 40, 6, 2, 0, 41, 6, 2, 0, 42, 6, 2, 0, 0, 6, 4, 0, 43, 6, - 12, 0, 44, 6, 2, 0, 45, 6, 2, 0,129, 2, 2, 0, 46, 6, 0, 0, 47, 6, 0, 0, 48, 6, 9, 0, 49, 6,163, 0, 97, 3, -217, 0, 24, 0, 24, 0, 36, 0, 24, 0, 63, 0, 23, 0, 50, 6, 23, 0, 51, 6, 23, 0, 52, 6, 7, 0, 53, 6, 7, 0, 54, 6, - 7, 0, 55, 6, 7, 0, 56, 6, 2, 0, 57, 6, 2, 0, 58, 6, 2, 0, 59, 6, 2, 0, 60, 6, 2, 0, 61, 6, 2, 0, 19, 0, - 2, 0, 62, 6, 2, 0, 63, 6, 2, 0, 64, 6, 2, 0, 65, 6, 2, 0, 66, 6, 2, 0, 30, 6, 7, 0, 67, 6, 4, 0, 68, 6, - 4, 0, 69, 6,216, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, -218, 0, 8, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,219, 0, 70, 6, - 46, 0,129, 0,220, 0, 14, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, -217, 0, 71, 6,221, 0, 72, 6, 12, 0, 73, 6, 2, 0, 69, 1, 2, 0, 74, 6, 4, 0, 19, 0, 7, 0, 75, 6, 4, 0, 30, 6, -222, 0, 20, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,210, 0, 8, 6, -217, 0, 71, 6, 2, 0, 76, 6, 2, 0, 77, 6, 2, 0, 78, 6, 2, 0, 79, 6, 2, 0, 62, 6, 2, 0, 80, 6, 0, 0, 19, 0, - 0, 0,179, 4, 9, 0, 54, 2, 4, 0, 81, 6, 4, 0, 82, 6, 27, 0, 83, 6,223, 0, 18, 0,216, 0, 0, 0,216, 0, 1, 0, - 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6, 7, 0, 79, 2, 7, 0, 80, 2, 2, 0, 76, 6, - 2, 0, 84, 6, 2, 0, 85, 6, 2, 0, 86, 6, 4, 0, 19, 0, 7, 0, 87, 6, 4, 0,240, 5, 4, 0, 37, 0,163, 0, 97, 3, -224, 0, 15, 0, 0, 0, 88, 6, 0, 0, 89, 6, 0, 0, 90, 6, 0, 0, 91, 6, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 92, 6, - 2, 0, 93, 6, 2, 0,169, 1, 2, 0, 94, 6, 4, 0, 95, 6, 4, 0, 96, 6, 2, 0, 97, 6, 2, 0, 37, 0, 0, 0, 98, 6, -225, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 4, 0, 99, 6,224, 0,100, 6,226, 0,101, 6, - 12, 0,102, 6, 12, 0,103, 6,227, 0,104, 6,214, 0,105, 6,228, 0,106, 6, 2, 0,107, 6, 2, 0,108, 6, 2, 0,109, 6, - 2, 0, 69, 0,229, 0, 17, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, -217, 0, 71, 6, 12, 0,110, 6,230, 0,111, 6, 0, 0,112, 6,231, 0,113, 6, 4, 0,114, 6, 4, 0,115, 6, 2, 0, 19, 0, - 2, 0,116, 6, 2, 0,117, 6, 2, 0, 37, 0,232, 0, 32, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, - 7, 0, 21, 6, 2, 0, 22, 6, 47, 0,220, 2, 45, 0, 57, 1, 63, 0,118, 6, 2, 0,128, 0, 2, 0,119, 6, 2, 0, 69, 0, - 2, 0,120, 6, 4, 0, 19, 0, 2, 0,121, 6, 2, 0,122, 6, 2, 0,123, 6, 2, 0,226, 1, 0, 0,124, 6, 0, 0,125, 6, - 0, 0,126, 6, 0, 0, 30, 6, 7, 0,127, 6, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0, 87, 6, 7, 0,248, 1, 7, 0,128, 6, - 7, 0,129, 6,163, 0, 97, 3,233, 0,130, 6,234, 0,131, 6,235, 0, 11, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, - 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 2, 0, 74, 6, 2, 0, 19, 0, 4, 0, 37, 0,221, 0, 72, 6,217, 0, 71, 6, -236, 0, 27, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 42, 0,132, 6, - 4, 0,133, 6, 4, 0,134, 6, 2, 0, 90, 0, 2, 0,128, 0, 2, 0,135, 6, 0, 0,136, 6, 0, 0,137, 6, 4, 0,138, 6, - 4, 0,139, 6, 4, 0,140, 6, 4, 0,141, 6, 2, 0,142, 6, 2, 0,143, 6, 7, 0,144, 6, 23, 0,145, 6, 23, 0,146, 6, - 4, 0,147, 6, 4, 0,148, 6, 0, 0,149, 6, 0, 0,150, 6,237, 0, 10, 0, 27, 0, 31, 0, 9, 0,151, 6, 9, 0,152, 6, - 9, 0,153, 6, 9, 0,154, 6, 9, 0,155, 6, 4, 0, 90, 0, 4, 0,156, 6, 0, 0,157, 6, 0, 0,158, 6,238, 0, 10, 0, -216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6,237, 0,159, 6, 2, 0, 90, 0, 2, 0,128, 0, - 4, 0, 89, 0, 9, 0,160, 6,239, 0, 9, 0,239, 0, 0, 0,239, 0, 1, 0, 4, 0, 17, 0, 4, 0, 19, 0, 7, 0,161, 6, - 4, 0, 23, 0, 4, 0,236, 3, 4, 0,237, 3, 4, 0,124, 0,240, 0, 11, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, - 4, 0, 20, 6, 7, 0, 21, 6,217, 0, 71, 6, 12, 0,162, 6, 4, 0,163, 6, 4, 0, 37, 0, 4, 0, 19, 0, 4, 0,164, 6, -241, 0, 25, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6, - 27, 0,165, 6, 27, 0, 80, 0, 2, 0, 19, 0, 2, 0,128, 0, 7, 0,166, 6, 9, 0,167, 6, 7, 0, 79, 2, 7, 0, 80, 2, - 7, 0, 87, 6, 7, 0, 18, 6, 7, 0,168, 6, 7, 0,169, 6, 60, 0, 58, 1, 60, 0,170, 6, 4, 0,171, 6, 2, 0,172, 6, - 2, 0, 37, 0,163, 0, 97, 3,242, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, - 2, 0, 22, 6, 2, 0, 19, 0, 2, 0,126, 3, 4, 0, 37, 0,163, 0, 97, 3,243, 0, 42, 0,216, 0, 0, 0,216, 0, 1, 0, - 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6,226, 0,101, 6, 0, 0, 88, 6, 0, 0, 89, 6, - 0, 0, 90, 6, 2, 0, 17, 0, 2, 0,173, 6, 2, 0, 19, 0, 2, 0, 92, 6, 9, 0,167, 6, 4, 0, 95, 6, 4, 0,174, 6, - 4, 0,175, 6, 4, 0, 96, 6, 23, 0,176, 6, 23, 0,177, 6, 7, 0,178, 6, 7, 0,179, 6, 7, 0,180, 6, 7, 0,166, 6, - 2, 0,181, 6, 2, 0,234, 0, 2, 0,169, 1, 2, 0, 94, 6, 2, 0, 37, 0, 2, 0, 89, 0, 2, 0,182, 6, 2, 0,183, 6, - 9, 0,184, 6, 9, 0,185, 6, 9, 0,186, 6, 9, 0,187, 6, 9, 0,188, 6, 2, 0,189, 6, 0, 0,190, 6, 57, 0,191, 6, -244, 0, 7, 0,244, 0, 0, 0,244, 0, 1, 0, 4, 0,192, 6, 4, 0, 23, 0, 0, 0, 83, 0, 4, 0,193, 6, 4, 0, 17, 0, -245, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 4, 0, 17, 0, - 4, 0,194, 6, 4, 0, 19, 0, 4, 0,135, 6, 12, 0,195, 6, 12, 0,196, 6, 0, 0,197, 6, 0, 0,198, 6, 4, 0,199, 6, - 4, 0,200, 6,246, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 4, 0, 37, 0, 0, 0,201, 6, -247, 0, 7, 0,247, 0, 0, 0,247, 0, 1, 0, 0, 0,202, 6, 2, 0,203, 6, 2, 0,204, 6, 2, 0,205, 6, 2, 0, 37, 0, -248, 0, 12, 0, 2, 0,204, 6, 2, 0,206, 6, 2, 0,207, 6, 0, 0,181, 2, 2, 0,208, 6, 2, 0,209, 6, 2, 0,210, 6, - 2, 0,211, 6, 2, 0,212, 6, 2, 0, 62, 6, 7, 0,213, 6, 7, 0,214, 6,249, 0, 18, 0,249, 0, 0, 0,249, 0, 1, 0, - 0, 0,240, 3,248, 0,215, 6,248, 0,216, 6,248, 0,217, 6,248, 0,218, 6, 7, 0,219, 6, 2, 0,220, 6, 2, 0,221, 6, - 2, 0,222, 6, 2, 0,223, 6, 2, 0,224, 6, 2, 0,225, 6, 2, 0,226, 6, 2, 0,227, 6, 2, 0,228, 6, 2, 0,229, 6, -250, 0, 10, 0, 0, 0,230, 6, 0, 0,231, 6, 0, 0,232, 6, 0, 0,233, 6, 0, 0,234, 6, 0, 0,235, 6, 2, 0,236, 6, - 2, 0,237, 6, 2, 0,238, 6, 2, 0,239, 6,251, 0, 8, 0, 0, 0,240, 6, 0, 0,241, 6, 0, 0,242, 6, 0, 0,243, 6, - 0, 0,244, 6, 0, 0,245, 6, 7, 0,239, 5, 7, 0, 37, 0,252, 0, 18, 0,250, 0,246, 6,250, 0,247, 6,250, 0,248, 6, -250, 0,249, 6,250, 0,250, 6,250, 0,251, 6,250, 0,252, 6,250, 0,253, 6,250, 0,254, 6,250, 0,255, 6,250, 0, 0, 7, -250, 0, 1, 7,250, 0, 2, 7,250, 0, 3, 7,250, 0, 4, 7,250, 0, 5, 7,251, 0, 6, 7, 0, 0, 7, 7,253, 0, 92, 0, - 0, 0, 8, 7, 0, 0, 9, 7, 0, 0,234, 6, 0, 0, 10, 7, 0, 0, 11, 7, 0, 0, 12, 7, 0, 0, 13, 7, 0, 0, 14, 7, - 0, 0, 15, 7, 0, 0, 16, 7, 0, 0, 17, 7, 0, 0, 18, 7, 0, 0, 19, 7, 0, 0, 20, 7, 0, 0, 21, 7, 0, 0, 22, 7, - 0, 0, 23, 7, 0, 0, 24, 7, 0, 0, 25, 7, 0, 0, 26, 7, 0, 0, 27, 7, 0, 0, 28, 7, 0, 0, 29, 7, 0, 0, 30, 7, - 0, 0, 31, 7, 0, 0, 32, 7, 0, 0, 33, 7, 0, 0, 34, 7, 0, 0, 35, 7, 0, 0, 36, 7, 0, 0, 37, 7, 0, 0, 38, 7, - 0, 0, 39, 7, 0, 0, 40, 7, 0, 0, 41, 7, 0, 0, 42, 7, 0, 0, 43, 7, 0, 0, 44, 7, 0, 0, 45, 7, 0, 0, 46, 7, - 0, 0, 47, 7, 0, 0, 48, 7, 0, 0, 49, 7, 0, 0, 50, 7, 0, 0, 51, 7, 0, 0, 52, 7, 0, 0, 53, 7, 0, 0, 54, 7, - 0, 0, 55, 7, 0, 0, 56, 7, 0, 0, 57, 7, 0, 0, 58, 7, 0, 0, 59, 7, 0, 0, 60, 7, 0, 0, 61, 7, 0, 0, 62, 7, - 0, 0, 63, 7, 0, 0, 64, 7, 0, 0, 65, 7, 0, 0, 66, 7, 0, 0, 67, 7, 0, 0, 68, 7, 0, 0, 69, 7, 0, 0, 70, 7, - 0, 0, 71, 7, 0, 0, 72, 7, 0, 0, 73, 7, 0, 0, 74, 7, 0, 0, 75, 7, 0, 0, 76, 7, 0, 0, 77, 7, 0, 0, 78, 7, - 0, 0, 79, 7, 0, 0, 80, 7, 0, 0, 81, 7, 0, 0, 82, 7, 0, 0, 83, 7, 0, 0, 84, 7, 0, 0, 85, 7, 0, 0, 86, 7, - 0, 0, 87, 7, 0, 0, 88, 7, 0, 0, 89, 7, 0, 0, 90, 7, 0, 0, 91, 7, 0, 0, 92, 7, 0, 0, 93, 7, 0, 0, 94, 7, - 0, 0, 95, 7, 0, 0, 96, 7, 0, 0, 97, 7, 0, 0, 98, 7,254, 0, 5, 0, 0, 0, 99, 7, 0, 0, 32, 7, 0, 0, 34, 7, - 2, 0, 19, 0, 2, 0, 37, 0,255, 0, 25, 0,255, 0, 0, 0,255, 0, 1, 0, 0, 0, 20, 0,252, 0,100, 7,253, 0,101, 7, -253, 0,102, 7,253, 0,103, 7,253, 0,104, 7,253, 0,105, 7,253, 0,106, 7,253, 0,107, 7,253, 0,108, 7,253, 0,109, 7, -253, 0,110, 7,253, 0,111, 7,253, 0,112, 7,253, 0,113, 7,253, 0,114, 7,253, 0,115, 7,253, 0,116, 7,253, 0,117, 7, -253, 0,118, 7,254, 0,119, 7, 4, 0,120, 7, 4, 0, 37, 0, 0, 1, 3, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0,121, 7, - 1, 1, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,128, 2, 7, 0,122, 7, 7, 0, 32, 2, 2, 1, 88, 0, 4, 0, 19, 0, - 4, 0,123, 7, 4, 0,124, 7, 0, 0,125, 7, 0, 0,126, 7, 0, 0,127, 7, 0, 0,128, 7, 0, 0,129, 7, 0, 0,130, 7, - 0, 0,131, 7, 0, 0,132, 7, 0, 0,133, 7, 0, 0,134, 7, 4, 0,135, 7, 2, 0,136, 7, 2, 0,137, 7, 2, 0,138, 7, - 2, 0,139, 7, 4, 0,140, 7, 4, 0,141, 7, 4, 0,142, 7, 4, 0,143, 7, 2, 0,144, 7, 2, 0,145, 7, 4, 0,146, 7, - 4, 0,147, 7, 4, 0,148, 7, 4, 0,149, 7, 4, 0,150, 7, 4, 0,195, 6, 4, 0,151, 7, 2, 0,152, 7, 2, 0,153, 7, - 2, 0,154, 7, 2, 0,155, 7, 12, 0,156, 7, 12, 0,157, 7, 12, 0,158, 7, 12, 0,159, 7, 12, 0,160, 7, 0, 0,161, 7, - 2, 0,162, 7, 2, 0,163, 7, 2, 0,164, 7, 2, 0,165, 7, 2, 0,166, 7, 2, 0,167, 7, 2, 0,168, 7, 2, 0,169, 7, - 1, 1,170, 7, 2, 0,171, 7, 2, 0,172, 7, 2, 0,173, 7, 2, 0,174, 7, 2, 0,175, 7, 2, 0,176, 7, 2, 0,177, 7, - 2, 0,178, 7, 4, 0,179, 7, 4, 0,180, 7, 2, 0,181, 7, 2, 0,182, 7, 2, 0,183, 7, 2, 0,184, 7, 2, 0,185, 7, - 2, 0,186, 7, 2, 0,187, 7, 2, 0,188, 7, 2, 0,189, 7, 2, 0,190, 7, 2, 0,191, 7, 2, 0,192, 7, 2, 0,193, 7, - 2, 0,194, 7, 2, 0,195, 7, 2, 0,196, 7, 2, 0,197, 7, 2, 0,179, 4, 0, 0,198, 7, 0, 0,199, 7, 7, 0,200, 7, - 2, 0,161, 5, 2, 0,162, 5, 55, 0,201, 7, 4, 0,202, 7, 7, 0,203, 7, 7, 0,204, 7, 7, 0,205, 7,219, 0, 21, 0, - 27, 0, 31, 0, 12, 0,206, 7, 12, 0,207, 7, 12, 0,208, 7, 12, 0, 19, 6, 46, 0,129, 0, 46, 0,209, 7, 2, 0,210, 7, - 2, 0,211, 7, 2, 0,212, 7, 2, 0,213, 7, 2, 0,214, 7, 2, 0,215, 7, 2, 0,216, 7, 2, 0,217, 7, 2, 0,218, 7, - 2, 0,219, 7, 4, 0, 69, 0,214, 0,220, 7, 9, 0,221, 7, 2, 0,222, 7, 3, 1, 5, 0, 3, 1, 0, 0, 3, 1, 1, 0, - 3, 1,223, 7, 13, 0,224, 7, 4, 0, 19, 0, 4, 1, 7, 0, 4, 1, 0, 0, 4, 1, 1, 0, 3, 1,225, 7, 3, 1,226, 7, - 2, 0, 28, 5, 2, 0, 19, 0, 4, 0, 37, 0, 5, 1, 25, 0, 5, 1, 0, 0, 5, 1, 1, 0, 6, 1,227, 7, 7, 1,106, 6, - 0, 0,228, 7, 0, 0,229, 7, 0, 0,230, 7, 2, 0,231, 7, 2, 0,232, 7, 2, 0,233, 7, 2, 0,234, 7, 2, 0,235, 7, - 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,236, 7, 2, 0,237, 7, 2, 0,238, 7, 4, 0,239, 7, 5, 1,240, 7, 9, 0,241, 7, - 4, 0,242, 7, 4, 0,243, 7, 4, 0,244, 7, 4, 0,245, 7, 0, 0,246, 7, 8, 1, 22, 0, 8, 1, 0, 0, 8, 1, 1, 0, - 3, 1,225, 7, 3, 1,226, 7, 3, 1,247, 7, 3, 1,248, 7,219, 0,249, 7, 23, 0, 51, 0, 0, 0, 20, 6, 0, 0,250, 7, - 2, 0, 63, 6, 2, 0, 64, 6, 2, 0,251, 7, 2, 0, 37, 0, 2, 0,213, 7, 2, 0,193, 6, 2, 0, 19, 0, 9, 1,227, 7, - 12, 0,252, 7, 12, 0, 19, 6, 12, 0,253, 7, 12, 0,254, 7, 10, 1, 24, 0, 10, 1, 0, 0, 10, 1, 1, 0,217, 0, 71, 6, - 23, 0,255, 7, 23, 0, 0, 8, 2, 0, 63, 6, 2, 0, 64, 6, 2, 0, 1, 8, 2, 0, 2, 8, 2, 0, 3, 8, 2, 0, 19, 0, - 7, 0, 75, 2, 2, 0,233, 7, 2, 0,234, 7, 2, 0,212, 7, 2, 0, 4, 8, 2, 0,217, 7, 2, 0,179, 4, 11, 1,227, 7, - 12, 0, 5, 8, 12, 0, 6, 8, 12, 0,253, 7, 0, 0, 7, 8, 9, 0, 8, 8, 12, 1, 12, 0, 0, 0, 9, 8, 2, 0, 10, 8, - 2, 0, 11, 8, 2, 0, 12, 8, 2, 0, 13, 8, 2, 0, 15, 5, 2, 0, 10, 5,219, 0, 14, 8, 46, 0, 15, 8, 4, 0, 16, 8, - 4, 0, 17, 8, 0, 0, 18, 8, 13, 1, 1, 0, 0, 0, 19, 8, 14, 1, 8, 0, 57, 0, 20, 8, 57, 0, 21, 8, 14, 1, 22, 8, - 14, 1, 23, 8, 14, 1, 24, 8, 2, 0,124, 0, 2, 0, 19, 0, 4, 0, 25, 8, 15, 1, 4, 0, 4, 0,133, 6, 4, 0, 26, 8, - 4, 0,138, 6, 4, 0, 27, 8, 16, 1, 2, 0, 4, 0, 28, 8, 4, 0, 29, 8, 17, 1, 5, 0, 7, 0, 30, 8, 7, 0, 31, 8, - 7, 0, 32, 8, 4, 0, 19, 0, 4, 0, 37, 0, 18, 1, 6, 0, 0, 0, 33, 8, 0, 0, 90, 6, 49, 0,132, 0, 2, 0,106, 0, - 2, 0, 14, 5, 4, 0, 37, 0, 19, 1, 21, 0, 19, 1, 0, 0, 19, 1, 1, 0, 4, 0, 56, 0, 4, 0, 23, 0, 4, 0, 28, 0, - 4, 0, 34, 8, 4, 0, 35, 8, 4, 0, 36, 8, 13, 1, 37, 8, 0, 0, 33, 8, 4, 0, 38, 8, 4, 0, 39, 8, 18, 1, 91, 3, - 15, 1, 40, 8, 16, 1, 41, 8, 17, 1, 42, 8, 14, 1, 43, 8, 14, 1, 44, 8, 14, 1, 45, 8, 57, 0, 46, 8, 57, 0, 47, 8, - 20, 1, 12, 0, 0, 0,250, 1, 9, 0,220, 0, 0, 0,221, 0, 4, 0,224, 0, 4, 0,232, 0, 9, 0,225, 0, 7, 0,227, 0, - 7, 0,228, 0, 9, 0, 48, 8, 9, 0, 49, 8, 9, 0,229, 0, 9, 0,231, 0, 21, 1, 48, 0, 21, 1, 0, 0, 21, 1, 1, 0, - 9, 0, 50, 8, 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 19, 0, 4, 0, 17, 0, 4, 0, 23, 0, 4, 0, 87, 0, 4, 0, 51, 8, - 4, 0, 52, 8, 4, 0, 35, 8, 4, 0, 36, 8, 4, 0, 53, 8, 4, 0,243, 0, 4, 0, 54, 8, 4, 0, 55, 8, 7, 0, 56, 8, - 7, 0, 37, 0, 7, 0, 57, 8, 7, 0, 58, 8, 4, 0,121, 0, 4, 0, 59, 8, 19, 1, 60, 8, 36, 0, 79, 0, 46, 0,129, 0, - 32, 0, 61, 8, 49, 0,132, 0, 7, 0, 62, 8, 7, 0, 63, 8, 20, 1, 59, 1, 21, 1, 64, 8, 21, 1, 65, 8, 21, 1, 66, 8, - 12, 0, 67, 8, 22, 1, 68, 8, 9, 0, 69, 8, 7, 0,249, 3, 7, 0, 70, 8, 7, 0, 71, 8, 4, 0, 72, 8, 4, 0, 73, 8, - 7, 0, 74, 8, 9, 0, 75, 8, 4, 0, 76, 8, 4, 0, 77, 8, 4, 0, 78, 8, 7, 0, 79, 8, 23, 1, 4, 0, 23, 1, 0, 0, - 23, 1, 1, 0, 12, 0, 80, 8, 21, 1, 81, 8,205, 0, 11, 0, 12, 0, 82, 8, 12, 0, 67, 8, 12, 0, 83, 8, 21, 1, 84, 8, - 0, 0, 85, 8, 0, 0, 86, 8, 4, 0, 87, 8, 4, 0, 88, 8, 4, 0, 89, 8, 4, 0, 37, 0, 24, 0, 90, 8, 24, 1, 4, 0, - 7, 0, 91, 8, 7, 0, 65, 3, 2, 0, 92, 8, 2, 0, 93, 8, 25, 1, 6, 0, 7, 0, 94, 8, 7, 0, 95, 8, 7, 0, 96, 8, - 7, 0, 97, 8, 4, 0, 98, 8, 4, 0, 99, 8, 26, 1, 13, 0, 7, 0,100, 8, 7, 0,101, 8, 7, 0,102, 8, 7, 0,103, 8, - 7, 0,104, 8, 7, 0,105, 8, 7, 0,106, 8, 7, 0,107, 8, 7, 0,108, 8, 7, 0,109, 8, 4, 0,226, 2, 4, 0,110, 8, - 4, 0,111, 8, 27, 1, 2, 0, 7, 0, 87, 5, 7, 0, 37, 0, 28, 1, 5, 0, 7, 0,112, 8, 7, 0,113, 8, 4, 0, 90, 0, - 4, 0,182, 2, 4, 0,114, 8, 29, 1, 6, 0, 29, 1, 0, 0, 29, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,115, 8, - 2, 0, 56, 0, 30, 1, 8, 0, 30, 1, 0, 0, 30, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,115, 8, 2, 0, 56, 0, - 7, 0, 23, 0, 7, 0,121, 0, 31, 1, 45, 0, 31, 1, 0, 0, 31, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,115, 8, - 2, 0,239, 0, 2, 0, 35, 4, 2, 0,116, 8, 7, 0,117, 8, 7, 0, 88, 0, 7, 0,239, 2, 4, 0,118, 8, 4, 0, 81, 0, - 4, 0,184, 2, 7, 0,119, 8, 7, 0,120, 8, 7, 0,121, 8, 7, 0,122, 8, 7, 0,123, 8, 7, 0,124, 8, 7, 0,236, 2, - 7, 0, 56, 1, 7, 0,125, 8, 7, 0,126, 8, 7, 0, 37, 0, 7, 0,127, 8, 7, 0,128, 8, 7, 0,129, 8, 2, 0,130, 8, - 2, 0,131, 8, 2, 0,132, 8, 2, 0,133, 8, 2, 0,134, 8, 2, 0,135, 8, 2, 0,136, 8, 2, 0,137, 8, 2, 0, 17, 2, - 2, 0,138, 8, 2, 0, 14, 2, 2, 0,139, 8, 0, 0,140, 8, 0, 0,141, 8, 7, 0,237, 0, 32, 1,142, 8, 67, 0,229, 1, - 33, 1, 16, 0, 33, 1, 0, 0, 33, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,115, 8, 2, 0,239, 0, 7, 0,231, 2, - 7, 0,232, 2, 7, 0,233, 2, 7, 0, 64, 2, 7, 0,234, 2, 7, 0,235, 2, 7, 0,143, 8, 7, 0,236, 2, 7, 0,238, 2, - 7, 0,239, 2,231, 0, 5, 0, 2, 0, 17, 0, 2, 0, 25, 8, 2, 0, 19, 0, 2, 0,144, 8, 27, 0,165, 6,230, 0, 3, 0, - 4, 0, 68, 0, 4, 0,145, 8,231, 0, 2, 0, 34, 1, 7, 0, 34, 1, 0, 0, 34, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 4, 0, 22, 0, 9, 0,146, 8, 35, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0,147, 8, 4, 0,148, 8, - 4, 0, 37, 0, 36, 1, 4, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 89, 0, 2, 0, 69, 0, 37, 1, 4, 0, 0, 0, 20, 0, - 66, 0,149, 8, 7, 0, 76, 1, 7, 0, 37, 0, 38, 1, 6, 0, 2, 0,150, 8, 2, 0,151, 8, 2, 0, 17, 0, 2, 0,152, 8, - 0, 0,153, 8, 0, 0,154, 8, 39, 1, 5, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0,155, 8, 0, 0,156, 8, - 40, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 41, 1, 4, 0, 2, 0,157, 8, 2, 0,158, 8, 2, 0, 19, 0, - 2, 0, 37, 0, 42, 1, 6, 0, 0, 0, 20, 0, 0, 0,159, 8, 2, 0,160, 8, 2, 0,236, 2, 2, 0, 69, 1, 2, 0, 69, 0, - 43, 1, 5, 0, 0, 0, 20, 0, 7, 0, 65, 3, 7, 0,129, 4, 2, 0, 19, 0, 2, 0,196, 2, 44, 1, 3, 0, 0, 0, 20, 0, - 4, 0,184, 2, 4, 0,157, 8, 45, 1, 7, 0, 0, 0, 20, 0, 7, 0,129, 4, 0, 0,161, 8, 0, 0,162, 8, 2, 0, 69, 1, - 2, 0, 89, 0, 4, 0,163, 8, 46, 1, 4, 0, 0, 0,164, 8, 0, 0,165, 8, 4, 0, 17, 0, 7, 0,200, 2, 47, 1, 3, 0, - 32, 0,166, 8, 0, 0,167, 8, 0, 0,168, 8, 48, 1, 18, 0, 48, 1, 0, 0, 48, 1, 1, 0, 2, 0, 17, 0, 2, 0,169, 8, - 2, 0, 19, 0, 2, 0,170, 8, 2, 0,171, 8, 2, 0,172, 8, 2, 0, 89, 0, 2, 0, 69, 0, 0, 0, 20, 0, 9, 0, 2, 0, - 49, 1,173, 8, 32, 0, 44, 0, 2, 0,105, 5, 2, 0, 70, 8, 2, 0,174, 8, 2, 0, 37, 0, 50, 1, 11, 0, 0, 0, 20, 0, - 0, 0, 17, 0, 0, 0,175, 8, 2, 0, 19, 0, 2, 0,196, 2, 2, 0,176, 8, 4, 0,177, 8, 4, 0,178, 8, 4, 0,179, 8, - 4, 0,180, 8, 4, 0,181, 8, 51, 1, 1, 0, 0, 0,182, 8, 52, 1, 4, 0, 42, 0,132, 6, 0, 0,121, 7, 4, 0, 69, 1, - 4, 0, 19, 0, 49, 1, 18, 0, 49, 1, 0, 0, 49, 1, 1, 0, 49, 1,183, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,184, 8, - 2, 0,172, 8, 2, 0,169, 8, 2, 0,185, 8, 2, 0, 69, 0, 2, 0,226, 1, 0, 0, 20, 0, 9, 0, 2, 0, 53, 1,173, 8, - 48, 1,186, 8, 2, 0, 15, 0, 2, 0,187, 8, 4, 0,188, 8, 54, 1, 3, 0, 4, 0,210, 2, 4, 0, 37, 0, 32, 0, 44, 0, - 55, 1, 12, 0,161, 0,189, 8, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,117, 8, 4, 0, 88, 0, 0, 0, 20, 0, 0, 0,190, 8, - 2, 0,191, 8, 2, 0,192, 8, 2, 0,193, 8, 2, 0,194, 8, 7, 0,195, 8, 56, 1, 13, 0, 2, 0, 19, 0, 2, 0,196, 8, - 4, 0, 89, 0, 4, 0, 69, 0, 2, 0,197, 8, 7, 0,249, 3, 7, 0,198, 8, 22, 1, 68, 8, 57, 1,199, 8, 2, 0, 17, 0, - 2, 0,248, 1, 2, 0,233, 5, 2, 0,200, 8, 58, 1, 11, 0, 4, 0,210, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 44, 0, - 80, 0,201, 8, 0, 0, 20, 0, 7, 0,202, 8, 7, 0,203, 8, 7, 0,134, 3, 2, 0,204, 8, 2, 0,205, 8, 59, 1, 5, 0, - 2, 0, 17, 0, 2, 0, 89, 0, 4, 0, 37, 0, 46, 0,129, 0, 32, 0, 94, 5, 60, 1, 5, 0, 4, 0, 37, 0, 4, 0, 17, 0, - 0, 0, 20, 0, 0, 0,155, 8, 32, 0, 44, 0, 61, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,169, 8, 2, 0,135, 3, - 7, 0,206, 8, 7, 0,207, 8, 7, 0,179, 4, 7, 0,147, 3, 7, 0,106, 3, 7, 0,109, 3, 7, 0,208, 8, 7, 0,209, 8, - 32, 0,210, 8, 62, 1, 10, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,117, 8, 4, 0, 88, 0, 0, 0, 20, 0, 0, 0,190, 8, - 2, 0, 89, 0, 2, 0, 69, 0, 2, 0,226, 1, 2, 0,248, 1, 63, 1, 8, 0, 32, 0, 44, 0, 7, 0,233, 2, 7, 0,211, 8, - 7, 0,212, 8, 7, 0, 37, 0, 2, 0, 89, 0, 2, 0,196, 2, 7, 0, 69, 0, 64, 1, 12, 0, 2, 0, 17, 0, 2, 0, 69, 1, - 2, 0, 19, 0, 2, 0,236, 2, 2, 0,210, 2, 2, 0,213, 8, 4, 0, 37, 0, 7, 0,214, 8, 7, 0,215, 8, 7, 0,216, 8, - 7, 0,217, 8, 0, 0,218, 8, 65, 1, 9, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,117, 8, 4, 0, 88, 0, 0, 0, 20, 0, - 2, 0,179, 4, 2, 0, 63, 0, 2, 0,219, 8, 2, 0,220, 8, 66, 1, 7, 0, 4, 0,184, 2, 4, 0,221, 8, 4, 0,222, 8, - 4, 0,223, 8, 7, 0,224, 8, 7, 0,225, 8, 0, 0,161, 8, 67, 1, 7, 0, 0, 0,226, 8, 32, 0,227, 8, 0, 0,167, 8, - 2, 0,228, 8, 2, 0, 89, 0, 4, 0, 69, 0, 0, 0,168, 8, 68, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,117, 8, - 4, 0, 88, 0, 0, 0,229, 8, 0, 0,230, 8, 69, 1, 1, 0, 4, 0, 19, 0, 70, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 4, 0,231, 8, 7, 0,232, 8, 42, 0,132, 6, 71, 1, 4, 0, 0, 0, 59, 2, 2, 0, 19, 0, 4, 0, 17, 0, - 32, 0, 44, 0, 72, 1, 2, 0, 4, 0, 17, 0, 4, 0, 52, 6, 73, 1, 6, 0, 0, 0,164, 8, 0, 0,165, 8, 4, 0, 17, 0, - 7, 0, 25, 2, 32, 0, 44, 3, 32, 0,233, 8, 53, 1, 10, 0, 53, 1, 0, 0, 53, 1, 1, 0, 53, 1,183, 8, 2, 0, 17, 0, - 2, 0, 19, 0, 2, 0,169, 8, 2, 0,234, 8, 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 44, 0, 74, 1, 10, 0, 7, 0,134, 3, - 7, 0,235, 8, 7, 0,236, 8, 7, 0,237, 8, 7, 0,238, 8, 4, 0, 19, 0, 7, 0,213, 8, 7, 0,239, 8, 7, 0,240, 8, - 7, 0, 37, 0, 57, 1, 8, 0, 7, 0,241, 8, 7, 0,242, 8, 7, 0,243, 8, 7, 0,244, 8, 7, 0,245, 8, 7, 0,246, 8, - 7, 0,247, 8, 7, 0,248, 8, 22, 1, 16, 0, 27, 0, 31, 0, 0, 0, 34, 0, 43, 0,147, 0, 9, 0,220, 0, 43, 0,249, 8, - 36, 0, 79, 0, 7, 0,249, 3, 7, 0,250, 8, 7, 0,198, 8, 7, 0,241, 8, 7, 0,242, 8, 7, 0,251, 8, 4, 0, 90, 0, - 4, 0, 37, 0, 9, 0,252, 8, 9, 0,253, 8, 75, 1, 15, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, - 7, 0, 21, 6, 8, 1,254, 8,217, 0, 71, 6, 22, 1, 68, 8, 2, 0, 69, 1, 2, 0,196, 8, 2, 0, 79, 2, 2, 0, 80, 2, - 2, 0, 19, 0, 2, 0,122, 6, 4, 0, 69, 0, 76, 1, 6, 0, 76, 1, 0, 0, 76, 1, 1, 0, 32, 0, 44, 0, 9, 0,255, 8, - 4, 0,244, 0, 4, 0, 37, 0, 67, 0, 4, 0, 27, 0, 31, 0, 12, 0, 0, 9, 4, 0,126, 0, 7, 0, 1, 9, 77, 1, 27, 0, - 77, 1, 0, 0, 77, 1, 1, 0, 26, 0, 2, 9, 77, 1, 38, 0, 12, 0, 3, 9, 0, 0, 20, 0, 7, 0, 4, 9, 7, 0, 5, 9, - 7, 0, 6, 9, 7, 0, 7, 9, 4, 0, 19, 0, 7, 0, 8, 9, 7, 0, 9, 9, 7, 0, 10, 9, 7, 0, 76, 1, 7, 0, 25, 2, - 7, 0, 11, 9, 7, 0,182, 2, 7, 0, 12, 9, 7, 0, 13, 9, 7, 0, 14, 9, 7, 0, 15, 9, 7, 0, 16, 9, 7, 0,169, 0, - 4, 0,126, 0, 2, 0,142, 5, 2, 0,179, 4, 78, 1, 25, 0, 27, 0, 31, 0, 39, 0, 74, 0, 12, 0, 17, 9, 12, 0, 18, 9, - 12, 0, 19, 9, 77, 1, 20, 9, 9, 0, 21, 9, 9, 0, 22, 9, 4, 0, 19, 0, 4, 0, 28, 6, 2, 0,240, 2, 2, 0, 81, 6, - 4, 0, 37, 0, 4, 0,126, 0, 4, 0, 23, 9, 2, 0, 24, 9, 2, 0, 25, 9, 2, 0, 26, 9, 2, 0, 27, 9, 4, 0, 28, 9, - 4, 0, 29, 9, 4, 0, 30, 9, 4, 0, 31, 9, 4, 0, 32, 9, 4, 0, 33, 9, 79, 1, 2, 0, 7, 0,142, 2, 4, 0, 19, 0, -165, 0, 5, 0, 79, 1, 34, 9, 4, 0,182, 2, 4, 0, 35, 9, 4, 0, 36, 9, 4, 0, 19, 0,164, 0, 16, 0, 4, 0, 37, 9, - 4, 0, 38, 9, 4, 0, 39, 9, 4, 0, 40, 9, 2, 0, 41, 9, 2, 0, 42, 9, 2, 0, 43, 9, 2, 0,244, 0, 2, 0, 44, 9, - 2, 0, 45, 9, 2, 0, 46, 9, 2, 0, 47, 9, 4, 0, 48, 9, 4, 0, 49, 9, 4, 0, 50, 9, 4, 0, 51, 9, 80, 1, 44, 0, - 80, 1, 0, 0, 80, 1, 1, 0, 26, 0, 2, 9, 12, 0,161, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0, 52, 9, 2, 0, 53, 9, - 2, 0, 54, 9, 2, 0,120, 3, 2, 0, 55, 9, 4, 0, 62, 2, 4, 0, 30, 9, 4, 0, 31, 9, 77, 1, 56, 9, 80, 1, 38, 0, - 80, 1, 57, 9, 12, 0, 58, 9, 9, 0, 59, 9, 9, 0, 60, 9, 9, 0, 61, 9, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 62, 9, - 7, 0, 4, 2, 7, 0,111, 3, 7, 0,113, 3, 2, 0,143, 3, 2, 0, 37, 0, 7, 0, 63, 9, 7, 0, 64, 9, 7, 0,116, 3, - 7, 0, 65, 9, 7, 0, 66, 9, 7, 0, 67, 9, 7, 0, 68, 9, 7, 0, 69, 9, 7, 0, 70, 9, 7, 0, 71, 9, 7, 0, 72, 9, - 7, 0, 54, 2,165, 0, 99, 3, 32, 0, 73, 9, 80, 1, 74, 9,162, 0, 14, 0, 12, 0, 75, 9, 81, 1, 76, 9, 2, 0, 19, 0, - 2, 0, 77, 9, 7, 0, 91, 2, 7, 0, 78, 9, 7, 0, 79, 9, 12, 0, 80, 9, 4, 0, 81, 9, 4, 0, 82, 9, 9, 0, 83, 9, - 9, 0, 84, 9,164, 0, 98, 3, 0, 0, 85, 9, 82, 1, 1, 0, 4, 0, 82, 9, 83, 1, 12, 0, 4, 0, 82, 9, 7, 0,181, 8, - 2, 0, 86, 9, 2, 0, 87, 9, 7, 0, 88, 9, 7, 0, 89, 9, 2, 0, 90, 9, 2, 0, 19, 0, 7, 0, 91, 9, 7, 0, 92, 9, - 7, 0, 93, 9, 7, 0, 94, 9, 84, 1, 7, 0, 84, 1, 0, 0, 84, 1, 1, 0, 12, 0, 95, 9, 4, 0, 19, 0, 4, 0, 96, 9, - 0, 0,240, 3,254, 0, 97, 9,161, 0, 7, 0, 27, 0, 31, 0, 12, 0, 98, 9, 12, 0, 75, 9, 12, 0, 99, 9, 12, 0,100, 0, - 4, 0, 19, 0, 4, 0,100, 9,221, 0, 5, 0, 27, 0,101, 9, 12, 0, 75, 9, 67, 0,102, 9, 4, 0,103, 9, 4, 0, 19, 0, - 85, 1, 13, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6, -161, 0, 94, 3,221, 0,104, 9, 0, 0, 69, 1, 0, 0, 74, 6, 2, 0, 19, 0, 7, 0,105, 9, 86, 1, 8, 0, 86, 1, 0, 0, - 86, 1, 1, 0, 84, 1,106, 9, 36, 0, 79, 0, 12, 0,100, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0,107, 9, 87, 1, 5, 0, - 87, 1, 0, 0, 87, 1, 1, 0, 36, 0, 79, 0, 2, 0, 19, 0, 0, 0,108, 9, 88, 1, 14, 0, 88, 1, 0, 0, 88, 1, 1, 0, - 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0,109, 9, 0, 0,110, 9, 0, 0,108, 9, 7, 0,111, 9, 7, 0,112, 9, - 4, 0, 37, 0, 36, 0, 79, 0, 7, 0,113, 9, 7, 0,114, 9, 89, 1, 9, 0, 89, 1, 0, 0, 89, 1, 1, 0, 32, 0,115, 9, - 0, 0,243, 2, 7, 0,116, 9, 2, 0,117, 9, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,118, 9, 90, 1, 7, 0, 42, 0,132, 6, - 26, 0, 2, 9, 4, 0, 19, 0, 4, 0,119, 9, 12, 0,120, 9, 32, 0,115, 9, 0, 0,243, 2, 91, 1, 15, 0, 32, 0,115, 9, - 2, 0,121, 9, 2, 0, 19, 0, 2, 0,122, 9, 2, 0,123, 9, 0, 0,243, 2, 32, 0,124, 9, 0, 0,125, 9, 7, 0,126, 9, - 7, 0, 25, 2, 7, 0,127, 9, 7, 0,128, 9, 2, 0, 17, 0, 2, 0, 69, 1, 7, 0, 76, 1, 92, 1, 6, 0, 32, 0,115, 9, - 7, 0, 34, 9, 2, 0,129, 9, 2, 0,130, 9, 2, 0, 19, 0, 2, 0,131, 9, 93, 1, 6, 0, 32, 0,115, 9, 4, 0,132, 9, - 4, 0,133, 9, 4, 0, 90, 0, 4, 0, 37, 0, 0, 0,243, 2, 94, 1, 4, 0, 32, 0,115, 9, 4, 0, 19, 0, 4, 0,132, 9, - 0, 0,243, 2, 95, 1, 4, 0, 32, 0,115, 9, 4, 0, 19, 0, 4, 0,132, 9, 0, 0,243, 2, 96, 1, 4, 0, 32, 0,115, 9, - 4, 0, 19, 0, 4, 0,132, 9, 0, 0,243, 2, 97, 1, 2, 0, 4, 0, 19, 0, 7, 0,249, 3, 98, 1, 2, 0, 32, 0,115, 9, - 0, 0,243, 2, 99, 1, 10, 0, 32, 0,115, 9, 4, 0,134, 9, 7, 0,120, 0, 4, 0, 19, 0, 2, 0,125, 6, 2, 0,135, 9, - 2, 0, 89, 0, 2, 0, 69, 0, 7, 0,136, 9, 0, 0,243, 2,100, 1, 10, 0, 32, 0,115, 9, 2, 0, 17, 0, 2, 0, 43, 4, - 4, 0, 87, 0, 4, 0, 88, 0, 7, 0,211, 8, 7, 0,212, 8, 4, 0, 37, 0,161, 0,189, 8, 0, 0,243, 2,101, 1, 4, 0, - 32, 0,115, 9, 4, 0,121, 3, 4, 0,137, 9, 0, 0,243, 2,102, 1, 4, 0, 32, 0,115, 9, 4, 0,121, 3, 4, 0, 37, 0, - 0, 0,243, 2,103, 1, 6, 0, 32, 0,115, 9, 7, 0,120, 0, 7, 0, 56, 3, 4, 0,138, 9, 2, 0,121, 3, 2, 0,122, 3, -104, 1, 6, 0, 32, 0,115, 9, 4, 0,139, 9, 4, 0,140, 9, 7, 0,141, 9, 7, 0,142, 9, 0, 0,243, 2,105, 1, 16, 0, - 32, 0,115, 9, 32, 0, 57, 9, 4, 0, 17, 0, 7, 0,143, 9, 7, 0,144, 9, 7, 0,145, 9, 7, 0,146, 9, 7, 0,147, 9, - 7, 0,148, 9, 7, 0,149, 9, 7, 0,150, 9, 7, 0,151, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 89, 0, 2, 0, 69, 0, -106, 1, 3, 0, 32, 0,115, 9, 4, 0, 19, 0, 4, 0, 17, 2,107, 1, 5, 0, 32, 0,115, 9, 4, 0, 19, 0, 4, 0, 37, 0, - 7, 0,152, 9, 0, 0,243, 2,108, 1, 10, 0, 32, 0,115, 9, 0, 0,243, 2, 2, 0,153, 9, 2, 0,154, 9, 0, 0,155, 9, - 0, 0,156, 9, 7, 0,157, 9, 7, 0,158, 9, 7, 0,159, 9, 7, 0,160, 9,109, 1, 5, 0, 32, 0,115, 9, 0, 0,243, 2, - 7, 0,190, 2, 2, 0,161, 9, 2, 0, 19, 0,110, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, - 7, 0,162, 9, 7, 0,163, 9, 2, 0, 19, 0, 2, 0, 17, 2,111, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, - 7, 0, 12, 0, 7, 0,162, 9, 7, 0,163, 9, 2, 0, 19, 0, 2, 0, 17, 2,112, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, - 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,162, 9, 7, 0,163, 9, 2, 0, 19, 0, 2, 0, 17, 2,113, 1, 7, 0, 32, 0,115, 9, - 0, 0,243, 2, 7, 0, 76, 1, 7, 0, 85, 1, 2, 0, 19, 0, 2, 0, 69, 1, 4, 0, 37, 0,114, 1, 5, 0, 32, 0, 44, 3, - 7, 0, 76, 1, 2, 0, 48, 3, 0, 0, 50, 3, 0, 0,164, 9,115, 1, 10, 0,115, 1, 0, 0,115, 1, 1, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 0, 0,165, 9, 7, 0, 19, 1, 7, 0, 20, 1, 2, 0, 95, 9, 2, 0,166, 9, 32, 0, 44, 0,116, 1, 22, 0, -116, 1, 0, 0,116, 1, 1, 0, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0,167, 9, 2, 0,168, 9, 36, 0, 79, 0,161, 0,189, 8, - 32, 0,161, 0, 7, 0, 87, 0, 7, 0, 88, 0, 7, 0,169, 9, 7, 0,170, 9, 7, 0,171, 9, 7, 0,172, 9, 7, 0,229, 2, - 7, 0,173, 9, 7, 0,191, 8, 7, 0,174, 9, 0, 0,175, 9, 0, 0,176, 9, 12, 0,102, 3,117, 1, 8, 0, 7, 0, 32, 2, - 7, 0,211, 8, 7, 0,212, 8, 9, 0, 2, 0, 2, 0,177, 9, 2, 0,178, 9, 2, 0,179, 9, 2, 0,180, 9,118, 1, 18, 0, -118, 1, 0, 0,118, 1, 1, 0,118, 1,181, 9, 0, 0, 20, 0,117, 1,182, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,183, 9, - 2, 0,184, 9, 2, 0,185, 9, 2, 0,186, 9, 4, 0, 89, 0, 7, 0,187, 9, 7, 0,188, 9, 4, 0,189, 9, 4, 0,190, 9, -118, 1,191, 9,119, 1,192, 9,120, 1, 33, 0,120, 1, 0, 0,120, 1, 1, 0,120, 1,193, 9, 0, 0, 20, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 2, 0, 34, 8, 2, 0, 70, 8, 2, 0,194, 9, 2, 0,128, 0, 2, 0,184, 9, 2, 0, 25, 8, 12, 0,184, 8, - 12, 0,195, 9, 27, 0,165, 6, 9, 0,196, 9, 7, 0,187, 9, 7, 0,188, 9, 7, 0, 64, 2, 7, 0,197, 9, 2, 0,198, 9, - 2, 0,199, 9, 7, 0,200, 9, 7, 0,201, 9, 2, 0,202, 9, 2, 0,203, 9, 9, 0,204, 9, 24, 0,205, 9, 24, 0,206, 9, - 24, 0,207, 9,121, 1,148, 0,122, 1,208, 9,123, 1,209, 9,119, 1, 8, 0,119, 1, 0, 0,119, 1, 1, 0,120, 1,210, 9, -120, 1,211, 9,118, 1,212, 9,118, 1,191, 9, 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 22, 0, 27, 0, 31, 0, 39, 0, 74, 0, -163, 0, 97, 3, 12, 0,213, 9, 12, 0,214, 9,117, 1,215, 9, 12, 0,216, 9, 4, 0, 17, 0, 4, 0,217, 9, 4, 0,218, 9, - 4, 0,219, 9, 4, 0, 19, 0, 4, 0, 37, 0, 12, 0,220, 9,123, 1,221, 9, 4, 0,222, 9, 9, 0,223, 9, 9, 0,224, 9, - 4, 0,225, 9, 9, 0,226, 9, 9, 0,227, 9, 9, 0,228, 9,124, 1, 6, 0, 4, 0,119, 0, 4, 0,121, 0, 4, 0, 25, 8, - 0, 0,229, 9, 0, 0,230, 9, 2, 0, 37, 0,125, 1, 16, 0, 2, 0,233, 7, 2, 0,234, 7, 2, 0,231, 9, 2, 0,236, 8, - 2, 0,232, 9, 2, 0, 67, 0, 7, 0,228, 2, 7, 0,233, 9, 7, 0,234, 9, 2, 0, 91, 1, 0, 0,235, 9, 0, 0,236, 9, - 2, 0,237, 9, 2, 0, 37, 0, 4, 0,238, 9, 4, 0,239, 9,126, 1, 9, 0, 7, 0,240, 9, 7, 0,241, 9, 7, 0,251, 8, - 7, 0, 65, 3, 7, 0,242, 9, 7, 0, 87, 6, 2, 0, 63, 3, 0, 0,243, 9, 0, 0, 37, 0,127, 1, 4, 0, 7, 0,244, 9, - 7, 0,245, 9, 2, 0, 63, 3, 2, 0, 37, 0,128, 1, 3, 0, 7, 0,246, 9, 7, 0, 56, 8, 7, 0, 15, 0,129, 1, 7, 0, - 0, 0,250, 1, 2, 0, 12, 5, 2, 0, 13, 5, 2, 0, 14, 5, 2, 0,201, 4, 4, 0,121, 0, 4, 0, 41, 4,130, 1, 9, 0, - 7, 0,247, 9, 7, 0,248, 9, 7, 0,249, 9, 7, 0, 75, 2, 7, 0,250, 9, 7, 0,251, 9, 7, 0,252, 9, 2, 0,253, 9, - 2, 0,254, 9,131, 1, 4, 0, 2, 0,255, 9, 2, 0, 0, 10, 2, 0, 1, 10, 2, 0, 2, 10,132, 1, 2, 0, 7, 0, 5, 0, - 7, 0, 6, 0,133, 1, 2, 0, 0, 0,163, 0, 0, 0, 3, 10,134, 1, 1, 0, 0, 0, 20, 0,135, 1, 10, 0, 0, 0, 4, 10, - 0, 0, 5, 10, 0, 0, 80, 6, 0, 0, 6, 10, 2, 0,231, 9, 2, 0, 7, 10, 7, 0, 8, 10, 7, 0, 9, 10, 7, 0, 10, 10, - 7, 0,173, 9,136, 1, 2, 0, 9, 0, 11, 10, 9, 0, 12, 10,137, 1, 11, 0, 0, 0, 14, 5, 0, 0, 17, 0, 0, 0, 63, 3, - 0, 0, 65, 3, 0, 0, 13, 10, 0, 0,106, 0, 0, 0, 59, 2, 7, 0, 14, 10, 7, 0, 15, 10, 7, 0, 16, 10, 7, 0, 17, 10, -138, 1, 8, 0, 7, 0,150, 8, 7, 0,120, 0, 7, 0,236, 9, 7, 0,147, 2, 7, 0, 18, 10, 7, 0,233, 0, 7, 0, 19, 10, - 4, 0, 17, 0,139, 1, 4, 0, 2, 0, 20, 10, 2, 0, 21, 10, 2, 0, 22, 10, 2, 0, 37, 0,140, 1, 7, 0, 7, 0, 23, 10, - 7, 0,190, 2, 7, 0, 24, 10, 7, 0, 30, 8, 7, 0, 31, 8, 7, 0, 32, 8, 7, 0, 25, 10,141, 1, 6, 0, 2, 0, 26, 10, - 2, 0, 27, 10, 7, 0, 28, 10, 7, 0, 29, 10, 7, 0, 30, 10, 7, 0, 31, 10,142, 1, 1, 0, 0, 0, 20, 0,143, 1, 4, 0, - 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 19, 0, 2, 0, 32, 10,144, 1, 10, 0, 2, 0,229, 3, 2, 0, 19, 0, 7, 0,129, 4, - 7, 0, 33, 10, 7, 0, 34, 10, 7, 0, 35, 10, 7, 0, 36, 10,143, 1, 37, 10,143, 1, 38, 10,143, 1, 39, 10, 63, 0, 11, 0, - 4, 0, 19, 0, 4, 0, 63, 0, 4, 0, 40, 10, 4, 0, 41, 10, 24, 0, 42, 10, 24, 0, 43, 10,144, 1, 44, 10, 7, 0, 45, 10, - 7, 0, 46, 10, 7, 0, 47, 10, 7, 0, 48, 10,234, 0, 10, 0, 4, 0, 95, 9, 4, 0, 49, 10, 7, 0, 50, 10, 7, 0, 51, 10, - 7, 0, 52, 10, 7, 0, 53, 10, 7, 0, 10, 0, 7, 0, 12, 0, 4, 0, 69, 1, 4, 0,233, 2,233, 0, 18, 0, 4, 0,124, 0, - 4, 0, 54, 10, 4, 0, 55, 10, 7, 0, 56, 10, 4, 0, 57, 10, 7, 0, 58, 10, 7, 0, 59, 10, 4, 0, 60, 10, 7, 0, 61, 10, - 4, 0, 62, 10, 7, 0, 63, 10,234, 0, 64, 10, 7, 0, 65, 10, 7, 0, 66, 10, 7, 0, 67, 10, 7, 0, 68, 10, 4, 0, 69, 10, - 4, 0, 37, 0,145, 1, 4, 0, 47, 0,220, 2, 7, 0, 70, 10, 7, 0,158, 1, 7, 0, 37, 0,194, 0, 32, 0, 27, 0, 31, 0, -145, 1, 71, 10, 63, 0, 37, 10, 51, 0, 72, 10, 47, 0, 73, 10, 0, 0, 74, 10, 7, 0, 75, 10, 2, 0,239, 5, 2, 0, 37, 0, - 4, 0,106, 0, 4, 0, 19, 0, 7, 0, 76, 10, 4, 0, 72, 2, 4, 0, 77, 10, 7, 0, 78, 10, 7, 0, 79, 10, 7, 0, 80, 10, - 7, 0,158, 1, 4, 0, 81, 10, 7, 0, 82, 10, 0, 0, 83, 10, 0, 0, 84, 10, 0, 0, 85, 10, 0, 0,226, 1, 7, 0, 86, 10, - 7, 0, 87, 10, 7, 0, 88, 10, 7, 0, 89, 10, 4, 0, 90, 10, 7, 0, 91, 10, 7, 0, 92, 10, 7, 0, 93, 10,146, 1, 10, 0, - 4, 0, 17, 0, 4, 0,120, 0, 4, 0, 19, 0, 4, 0,183, 3, 4, 0, 94, 10, 4, 0, 95, 10, 4, 0, 96, 10, 0, 0, 92, 0, - 0, 0, 20, 0, 9, 0, 2, 0,147, 1, 1, 0, 0, 0, 18, 8, 91, 0, 7, 0,146, 1, 97, 10, 4, 0, 98, 10, 4, 0, 99, 10, - 4, 0,100, 10, 4, 0, 37, 0, 9, 0,101, 10,147, 1,102, 10,148, 1, 5, 0, 7, 0,142, 2, 7, 0,210, 2, 7, 0, 25, 2, - 2, 0,118, 2, 2, 0, 37, 0,149, 1, 5, 0, 7, 0,142, 2, 7, 0,103, 10, 7, 0,104, 10, 7, 0,105, 10, 7, 0,210, 2, -150, 1, 5, 0, 32, 0,106, 10,151, 1, 22, 0, 7, 0,209, 5, 7, 0,107, 10, 7, 0, 56, 0,152, 1, 7, 0, 4, 0,108, 10, - 4, 0,109, 10, 4, 0,110, 10, 7, 0,111, 10, 7, 0,112, 10, 7, 0,113, 10, 7, 0, 56, 0,153, 1, 8, 0,153, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 68, 78, 65, 49,248,226, 0, 0,216,190,116, 3, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69,208, 11, 0, 0, + 42,110,101,120,116, 0, 42,112,114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, 0, 42,108, 97,115,116, 0,120, + 0,121, 0,122, 0,119, 0,120,109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, 97,120, 0, 42,112,111,105,110, +116,101,114, 0,103,114,111,117,112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0,115,117, 98,116,121,112,101, 0, +102,108, 97,103, 0,110, 97,109,101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0,100, 97,116, 97, 0,108,101,110, 0,116,111,116, + 97,108,108,101,110, 0, 42,110,101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 50, 52, 93, 0,117,115, 0,105, 99, +111,110, 95,105,100, 0, 42,112,114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, 98,108,111, 99,107, 0, 42,102, +105,108,101,100, 97,116, 97, 0,110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,108,101,112, 97,116,104, 91, 50, 52, 48, 93, 0, +116,111,116, 0,112, 97,100, 0, 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, 93, 0, 99,104, 97,110,103,101, +100, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 95,116,105,109,101,115,116, 97,109,112, 91, 50, 93, 0, 42,114,101, 99,116, 91, + 50, 93, 0, 42,111, 98, 0, 98,108,111, 99,107,116,121,112,101, 0, 97,100,114, 99,111,100,101, 0,110, 97,109,101, 91, 49, 50, + 56, 93, 0, 42, 98,112, 0, 42, 98,101,122,116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, 99,116, 0,118, 97,114,116,121, +112,101, 0,116,111,116,118,101,114,116, 0,105,112,111, 0,101,120,116,114, 97,112, 0,114,116, 0, 98,105,116,109, 97,115,107, + 0,115,108,105,100,101, 95,109,105,110, 0,115,108,105,100,101, 95,109, 97,120, 0, 99,117,114,118, 97,108, 0, 42,100,114,105, +118,101,114, 0, 99,117,114,118,101, 0, 99,117,114, 0,115,104,111,119,107,101,121, 0,109,117,116,101,105,112,111, 0,112,111, +115, 0,114,101,108, 97,116,105,118,101, 0,116,111,116,101,108,101,109, 0,112, 97,100, 50, 0, 42,119,101,105,103,104,116,115, + 0,118,103,114,111,117,112, 91, 51, 50, 93, 0,115,108,105,100,101,114,109,105,110, 0,115,108,105,100,101,114,109, 97,120, 0, + 42, 97,100,116, 0, 42,114,101,102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, 0,101,108,101,109,115,105,122, +101, 0, 98,108,111, 99,107, 0, 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101,121, 0,115,108,117,114,112,104, + 0, 42,108,105,110,101, 0, 42,102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101,110,111, 0,115,116, 97,114,116, + 0,101,110,100, 0,112, 97,100, 49, 0,102,108, 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, 0,112, 97,100, 91, 52, 93, 0, + 42,110, 97,109,101, 0,110,108,105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108, 0, 42,115,101,108,108, 0, 99, +117,114, 99, 0,115,101,108, 99, 0,109, 97,114,107,101,114,115, 0, 42,117,110,100,111, 95, 98,117,102, 0,117,110,100,111, 95, +112,111,115, 0,117,110,100,111, 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,109,116,105,109,101, 0,115,105,122, +101, 0,115,101,101,107, 0,112, 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0, 99,108,105,112,115,116, 97, 0, 99,108, +105,112,101,110,100, 0,108,101,110,115, 0,111,114,116,104,111, 95,115, 99, 97,108,101, 0,100,114, 97,119,115,105,122,101, 0, +115,104,105,102,116,120, 0,115,104,105,102,116,121, 0, 89, 70, 95,100,111,102,100,105,115,116, 0, 42,100,111,102, 95,111, 98, + 0,102,114, 97,109,101,110,114, 0,102,114, 97,109,101,115, 0,111,102,102,115,101,116, 0,115,102,114, 97, 0,102,105,101, 95, +105,109, 97, 0, 99,121, 99,108, 0,111,107, 0,109,117,108,116,105, 95,105,110,100,101,120, 0,108, 97,121,101,114, 0,112, 97, +115,115, 0,109,101,110,117,110,114, 0, 42,115, 99,101,110,101, 0,105, 98,117,102,115, 0, 42,103,112,117,116,101,120,116,117, +114,101, 0, 42, 97,110,105,109, 0, 42,114,114, 0, 42,114,101,110,100,101,114,115, 91, 56, 93, 0,114,101,110,100,101,114, 95, +115,108,111,116, 0,108, 97,115,116, 95,114,101,110,100,101,114, 95,115,108,111,116, 0,115,111,117,114, 99,101, 0,108, 97,115, +116,102,114, 97,109,101, 0,116,112, 97,103,101,102,108, 97,103, 0,116,111,116, 98,105,110,100, 0,120,114,101,112, 0,121,114, +101,112, 0,116,119,115,116, 97, 0,116,119,101,110,100, 0, 98,105,110,100, 99,111,100,101, 0, 42,114,101,112, 98,105,110,100, + 0, 42,112, 97, 99,107,101,100,102,105,108,101, 0, 42,112,114,101,118,105,101,119, 0,108, 97,115,116,117,112,100, 97,116,101, + 0,108, 97,115,116,117,115,101,100, 0, 97,110,105,109,115,112,101,101,100, 0,103,101,110, 95,120, 0,103,101,110, 95,121, 0, +103,101,110, 95,116,121,112,101, 0, 97,115,112,120, 0, 97,115,112,121, 0,116,101,120, 99,111, 0,109, 97,112,116,111, 0,109, + 97,112,116,111,110,101,103, 0, 98,108,101,110,100,116,121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116,101,120, 0,117, +118,110, 97,109,101, 91, 51, 50, 93, 0,112,114,111,106,120, 0,112,114,111,106,121, 0,112,114,111,106,122, 0,109, 97,112,112, +105,110,103, 0,111,102,115, 91, 51, 93, 0,115,105,122,101, 91, 51, 93, 0,114,111,116, 0,116,101,120,102,108, 97,103, 0, 99, +111,108,111,114,109,111,100,101,108, 0,112,109, 97,112,116,111, 0,112,109, 97,112,116,111,110,101,103, 0,110,111,114,109, 97, +112,115,112, 97, 99,101, 0,119,104,105, 99,104, 95,111,117,116,112,117,116, 0, 98,114,117,115,104, 95,109, 97,112, 95,109,111, +100,101, 0,112, 97,100, 91, 55, 93, 0,114, 0,103, 0, 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111,108,102, 97, 99, + 0,118, 97,114,102, 97, 99, 0,110,111,114,102, 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, 0, 99, +111,108,115,112,101, 99,102, 97, 99, 0,109,105,114,114,102, 97, 99, 0, 97,108,112,104, 97,102, 97, 99, 0,100,105,102,102,102, + 97, 99, 0,115,112,101, 99,102, 97, 99, 0,101,109,105,116,102, 97, 99, 0,104, 97,114,100,102, 97, 99, 0,114, 97,121,109,105, +114,114,102, 97, 99, 0,116,114, 97,110,115,108,102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99,111,108,101,109,105,116,102, 97, + 99, 0, 99,111,108,114,101,102,108,102, 97, 99, 0, 99,111,108,116,114, 97,110,115,102, 97, 99, 0,100,101,110,115,102, 97, 99, + 0,115, 99, 97,116,116,101,114,102, 97, 99, 0,114,101,102,108,102, 97, 99, 0,116,105,109,101,102, 97, 99, 0,108,101,110,103, +116,104,102, 97, 99, 0, 99,108,117,109,112,102, 97, 99, 0,107,105,110,107,102, 97, 99, 0,114,111,117,103,104,102, 97, 99, 0, +112, 97,100,101,110,115,102, 97, 99, 0,108,105,102,101,102, 97, 99, 0,115,105,122,101,102, 97, 99, 0,105,118,101,108,102, 97, + 99, 0,112,118,101,108,102, 97, 99, 0,115,104, 97,100,111,119,102, 97, 99, 0,122,101,110,117,112,102, 97, 99, 0,122,101,110, +100,111,119,110,102, 97, 99, 0, 98,108,101,110,100,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0, 42,104, 97,110,100, +108,101, 0, 42,112,110, 97,109,101, 0, 42,115,116,110, 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97,114,115, 0, 42, +118, 97,114,115,116,114, 0, 42,114,101,115,117,108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, 93, 0, 40, 42, +100,111,105,116, 41, 40, 41, 0, 40, 42,105,110,115,116, 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, 42, 99, 97,108, +108, 98, 97, 99,107, 41, 40, 41, 0,118,101,114,115,105,111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42,105,109, 97, 0, + 42, 99,117, 98,101, 91, 54, 93, 0,105,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, 93, 91, 51, 93, + 0,115,116,121,112,101, 0,118,105,101,119,115, 99, 97,108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101,114,101,115, 0, +100,101,112,116,104, 0,114,101, 99, 97,108, 99, 0,108, 97,115,116,115,105,122,101, 0,102, 97,108,108,111,102,102, 95,116,121, +112,101, 0,102, 97,108,108,111,102,102, 95,115,111,102,116,110,101,115,115, 0,114, 97,100,105,117,115, 0, 99,111,108,111,114, + 95,115,111,117,114, 99,101, 0,116,111,116,112,111,105,110,116,115, 0,112,100,112, 97,100, 0,112,115,121,115, 0,112,115,121, +115, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0, 42,112,111, +105,110,116, 95,116,114,101,101, 0, 42,112,111,105,110,116, 95,100, 97,116, 97, 0,110,111,105,115,101, 95,115,105,122,101, 0, +110,111,105,115,101, 95,100,101,112,116,104, 0,110,111,105,115,101, 95,105,110,102,108,117,101,110, 99,101, 0,110,111,105,115, +101, 95, 98, 97,115,105,115, 0,112,100,112, 97,100, 51, 91, 51, 93, 0,110,111,105,115,101, 95,102, 97, 99, 0,115,112,101,101, +100, 95,115, 99, 97,108,101, 0, 42, 99,111, 98, 97, 0,114,101,115,111,108, 91, 51, 93, 0,105,110,116,101,114,112, 95,116,121, +112,101, 0,102,105,108,101, 95,102,111,114,109, 97,116, 0,101,120,116,101,110,100, 0,115,109,111,107,101,100, 95,116,121,112, +101, 0,105,110,116, 95,109,117,108,116,105,112,108,105,101,114, 0,115,116,105,108,108, 95,102,114, 97,109,101, 0,115,111,117, +114, 99,101, 95,112, 97,116,104, 91, 50, 52, 48, 93, 0, 42,100, 97,116, 97,115,101,116, 0, 99, 97, 99,104,101,100,102,114, 97, +109,101, 0,110,111,105,115,101,115,105,122,101, 0,116,117,114, 98,117,108, 0, 98,114,105,103,104,116, 0, 99,111,110,116,114, + 97,115,116, 0,115, 97,116,117,114, 97,116,105,111,110, 0,114,102, 97, 99, 0,103,102, 97, 99, 0, 98,102, 97, 99, 0,102,105, +108,116,101,114,115,105,122,101, 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, 97,114,105,116,121, 0,109,103, 95,111, + 99,116, 97,118,101,115, 0,109,103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97,105,110, 0,100,105,115,116, 95, 97,109, +111,117,110,116, 0,110,115, 95,111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, 0,118,110, 95,119, 50, 0,118,110, 95, +119, 51, 0,118,110, 95,119, 52, 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105,115,116,109, 0,118,110, 95, 99,111,108, +116,121,112,101, 0,110,111,105,115,101,100,101,112,116,104, 0,110,111,105,115,101,116,121,112,101, 0,110,111,105,115,101, 98, + 97,115,105,115, 0,110,111,105,115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, 97,103, 0, 99,114,111,112,120,109,105, +110, 0, 99,114,111,112,121,109,105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114,111,112,121,109, 97,120, 0,116,101,120, +102,105,108,116,101,114, 0, 97,102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101,112,101, 97,116, 0, 99,104,101, + 99,107,101,114,100,105,115,116, 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42,110,111,100,101,116,114,101,101, 0, 42, +112,108,117,103,105,110, 0, 42,101,110,118, 0, 42,112,100, 0, 42,118,100, 0,117,115,101, 95,110,111,100,101,115, 0,108,111, + 99, 91, 51, 93, 0,114,111,116, 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105,110, 91, 51, 93, 0,109, 97,120, + 91, 51, 93, 0,109,111,100,101, 0,116,111,116,101,120, 0,115,104,100,119,114, 0,115,104,100,119,103, 0,115,104,100,119, 98, + 0,115,104,100,119,112, 97,100, 0,101,110,101,114,103,121, 0,100,105,115,116, 0,115,112,111,116,115,105,122,101, 0,115,112, +111,116, 98,108,101,110,100, 0,104, 97,105,110,116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, 42, 99,117,114,102, 97,108,108, +111,102,102, 0,115,104, 97,100,115,112,111,116,115,105,122,101, 0, 98,105, 97,115, 0,115,111,102,116, 0, 99,111,109,112,114, +101,115,115,116,104,114,101,115,104, 0,112, 97,100, 53, 91, 51, 93, 0, 98,117,102,115,105,122,101, 0,115, 97,109,112, 0, 98, +117,102,102,101,114,115, 0,102,105,108,116,101,114,116,121,112,101, 0, 98,117,102,102,108, 97,103, 0, 98,117,102,116,121,112, +101, 0,114, 97,121, 95,115, 97,109,112, 0,114, 97,121, 95,115, 97,109,112,121, 0,114, 97,121, 95,115, 97,109,112,122, 0,114, + 97,121, 95,115, 97,109,112, 95,116,121,112,101, 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, 97,114,101, 97, 95,115,105,122, +101, 0, 97,114,101, 97, 95,115,105,122,101,121, 0, 97,114,101, 97, 95,115,105,122,101,122, 0, 97,100, 97,112,116, 95,116,104, +114,101,115,104, 0,114, 97,121, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0,116,101,120, 97, 99,116, 0,115,104, 97,100, +104, 97,108,111,115,116,101,112, 0,115,117,110, 95,101,102,102,101, 99,116, 95,116,121,112,101, 0,115,107,121, 98,108,101,110, +100,116,121,112,101, 0,104,111,114,105,122,111,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,112,114,101, 97,100, 0, +115,117,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,117,110, 95,115,105,122,101, 0, 98, 97, 99,107,115, 99, 97,116, +116,101,114,101,100, 95,108,105,103,104,116, 0,115,117,110, 95,105,110,116,101,110,115,105,116,121, 0, 97,116,109, 95,116,117, +114, 98,105,100,105,116,121, 0, 97,116,109, 95,105,110,115, 99, 97,116,116,101,114,105,110,103, 95,102, 97, 99,116,111,114, 0, + 97,116,109, 95,101,120,116,105,110, 99,116,105,111,110, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,100,105,115,116, 97,110, + 99,101, 95,102, 97, 99,116,111,114, 0,115,107,121, 98,108,101,110,100,102, 97, 99, 0,115,107,121, 95,101,120,112,111,115,117, +114,101, 0,115,107,121, 95, 99,111,108,111,114,115,112, 97, 99,101, 0,112, 97,100, 52, 91, 54, 93, 0, 42,109,116,101,120, 91, + 49, 56, 93, 0,112,114, 95,116,101,120,116,117,114,101, 0,112, 97,100, 54, 91, 54, 93, 0,100,101,110,115,105,116,121, 0,101, +109,105,115,115,105,111,110, 0,115, 99, 97,116,116,101,114,105,110,103, 0,114,101,102,108,101, 99,116,105,111,110, 0,101,109, +105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,116,114, 97,110,115,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, + 93, 0,114,101,102,108,101, 99,116,105,111,110, 95, 99,111,108, 91, 51, 93, 0,100,101,110,115,105,116,121, 95,115, 99, 97,108, +101, 0,100,101,112,116,104, 95, 99,117,116,111,102,102, 0, 97,115,121,109,109,101,116,114,121, 0,115,116,101,112,115,105,122, +101, 95,116,121,112,101, 0,115,104, 97,100,101,102,108, 97,103, 0,115,104, 97,100,101, 95,116,121,112,101, 0,112,114,101, 99, + 97, 99,104,101, 95,114,101,115,111,108,117,116,105,111,110, 0,115,116,101,112,115,105,122,101, 0,109,115, 95,100,105,102,102, + 0,109,115, 95,105,110,116,101,110,115,105,116,121, 0,109,115, 95,115,112,114,101, 97,100, 0,109, 97,116,101,114,105, 97,108, + 95,116,121,112,101, 0,115,112,101, 99,114, 0,115,112,101, 99,103, 0,115,112,101, 99, 98, 0,109,105,114,114, 0,109,105,114, +103, 0,109,105,114, 98, 0, 97,109, 98,114, 0, 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, 98, 0,101,109,105,116, 0, 97, +110,103, 0,115,112,101, 99,116,114, 97, 0,114, 97,121, 95,109,105,114,114,111,114, 0, 97,108,112,104, 97, 0,114,101,102, 0, +115,112,101, 99, 0,122,111,102,102,115, 0, 97,100,100, 0,116,114, 97,110,115,108,117, 99,101,110, 99,121, 0,118,111,108, 0, +102,114,101,115,110,101,108, 95,109,105,114, 0,102,114,101,115,110,101,108, 95,109,105,114, 95,105, 0,102,114,101,115,110,101, +108, 95,116,114, 97, 0,102,114,101,115,110,101,108, 95,116,114, 97, 95,105, 0,102,105,108,116,101,114, 0,116,120, 95,108,105, +109,105,116, 0,116,120, 95,102, 97,108,108,111,102,102, 0,114, 97,121, 95,100,101,112,116,104, 0,114, 97,121, 95,100,101,112, +116,104, 95,116,114, 97, 0,104, 97,114, 0,115,101,101,100, 49, 0,115,101,101,100, 50, 0,103,108,111,115,115, 95,109,105,114, + 0,103,108,111,115,115, 95,116,114, 97, 0,115, 97,109,112, 95,103,108,111,115,115, 95,109,105,114, 0,115, 97,109,112, 95,103, +108,111,115,115, 95,116,114, 97, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,109,105,114, 0, 97,100, 97,112,116, 95, +116,104,114,101,115,104, 95,116,114, 97, 0, 97,110,105,115,111, 95,103,108,111,115,115, 95,109,105,114, 0,100,105,115,116, 95, +109,105,114, 0,102, 97,100,101,116,111, 95,109,105,114, 0,115,104, 97,100,101, 95,102,108, 97,103, 0,109,111,100,101, 95,108, + 0,102,108, 97,114,101, 99, 0,115,116, 97,114, 99, 0,108,105,110,101, 99, 0,114,105,110,103, 99, 0,104, 97,115,105,122,101, + 0,102,108, 97,114,101,115,105,122,101, 0,115,117, 98,115,105,122,101, 0,102,108, 97,114,101, 98,111,111,115,116, 0,115,116, +114, 97,110,100, 95,115,116, 97, 0,115,116,114, 97,110,100, 95,101,110,100, 0,115,116,114, 97,110,100, 95,101, 97,115,101, 0, +115,116,114, 97,110,100, 95,115,117,114,102,110,111,114, 0,115,116,114, 97,110,100, 95,109,105,110, 0,115,116,114, 97,110,100, + 95,119,105,100,116,104,102, 97,100,101, 0,115,116,114, 97,110,100, 95,117,118,110, 97,109,101, 91, 51, 50, 93, 0,115, 98,105, + 97,115, 0,108, 98,105, 97,115, 0,115,104, 97,100, 95, 97,108,112,104, 97, 0,115,101,112,116,101,120, 0,114,103, 98,115,101, +108, 0,112,114, 95,116,121,112,101, 0,112,114, 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109,112, 0,109,108, 95,102,108, 97, +103, 0,100,105,102,102, 95,115,104, 97,100,101,114, 0,115,112,101, 99, 95,115,104, 97,100,101,114, 0,114,111,117,103,104,110, +101,115,115, 0,114,101,102,114, 97, 99, 0,112, 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0,100, 97,114,107,110,101,115,115, + 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42,114, 97,109,112, 95,115,112,101, 99, 0,114, 97,109,112,105,110, 95, 99,111,108, + 0,114, 97,109,112,105,110, 95,115,112,101, 99, 0,114, 97,109,112, 98,108,101,110,100, 95, 99,111,108, 0,114, 97,109,112, 98, +108,101,110,100, 95,115,112,101, 99, 0,114, 97,109,112, 95,115,104,111,119, 0,112, 97,100, 51, 0,114, 97,109,112,102, 97, 99, + 95, 99,111,108, 0,114, 97,109,112,102, 97, 99, 95,115,112,101, 99, 0, 42,103,114,111,117,112, 0,102,114,105, 99,116,105,111, +110, 0,102,104, 0,114,101,102,108,101, 99,116, 0,102,104,100,105,115,116, 0,120,121,102,114,105, 99,116, 0,100,121,110, 97, +109,111,100,101, 0,115,115,115, 95,114, 97,100,105,117,115, 91, 51, 93, 0,115,115,115, 95, 99,111,108, 91, 51, 93, 0,115,115, +115, 95,101,114,114,111,114, 0,115,115,115, 95,115, 99, 97,108,101, 0,115,115,115, 95,105,111,114, 0,115,115,115, 95, 99,111, +108,102, 97, 99, 0,115,115,115, 95,116,101,120,102, 97, 99, 0,115,115,115, 95,102,114,111,110,116, 0,115,115,115, 95, 98, 97, + 99,107, 0,115,115,115, 95,102,108, 97,103, 0,115,115,115, 95,112,114,101,115,101,116, 0,109, 97,112,116,111, 95,116,101,120, +116,117,114,101,100, 0,112, 97,100, 52, 0,103,112,117,109, 97,116,101,114,105, 97,108, 0,110, 97,109,101, 91, 50, 53, 54, 93, + 0, 42, 98, 98, 0,105, 49, 0,106, 49, 0,107, 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115,101,108, 99,111,108, 49, 0,115, +101,108, 99,111,108, 50, 0,113,117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,101,120,112,121, 0,101,120,112,122, 0,114, 97, +100, 0,114, 97,100, 50, 0,115, 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,101,108,101,109,115, 0,100,105,115,112, 0, 42, +101,100,105,116,101,108,101,109,115, 0, 42, 42,109, 97,116, 0,102,108, 97,103, 50, 0,116,111,116, 99,111,108, 0,119,105,114, +101,115,105,122,101, 0,114,101,110,100,101,114,115,105,122,101, 0,116,104,114,101,115,104, 0, 42,108, 97,115,116,101,108,101, +109, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,104,116, 0,104, 49, 0,104, 50, 0,102, 49, + 0,102, 50, 0,102, 51, 0,104,105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110,114, 0,112,110,116,115,117, 0, +112,110,116,115,118, 0,114,101,115,111,108,117, 0,114,101,115,111,108,118, 0,111,114,100,101,114,117, 0,111,114,100,101,114, +118, 0,102,108, 97,103,117, 0,102,108, 97,103,118, 0, 42,107,110,111,116,115,117, 0, 42,107,110,111,116,115,118, 0,116,105, +108,116, 95,105,110,116,101,114,112, 0,114, 97,100,105,117,115, 95,105,110,116,101,114,112, 0, 99,104, 97,114,105,100,120, 0, +107,101,114,110, 0,104, 0,110,117,114, 98, 0, 42,101,100,105,116,110,117,114, 98, 0, 42, 98,101,118,111, 98,106, 0, 42,116, + 97,112,101,114,111, 98,106, 0, 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,112, 97,116,104, 0, 42,107,101,121, 0, + 98,101,118, 0,100,114, 97,119,102,108, 97,103, 0,116,119,105,115,116, 95,109,111,100,101, 0,112, 97,100, 91, 50, 93, 0,116, +119,105,115,116, 95,115,109,111,111,116,104, 0,115,109, 97,108,108, 99, 97,112,115, 95,115, 99, 97,108,101, 0,112, 97,116,104, +108,101,110, 0, 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0,101,120,116, 50, 0,114,101,115, +111,108,117, 95,114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117, 0, 42,108, 97,115,116,115,101, +108, 0,115,112, 97, 99,101,109,111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101,100,105,115,116, 0,115,104,101, + 97,114, 0,102,115,105,122,101, 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, 0,117,108,104,101,105,103,104, +116, 0,120,111,102, 0,121,111,102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, 0, 42,115,101,108, 98,111,120, +101,115, 0, 42,101,100,105,116,102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, 42,118,102,111,110,116, 0, 42, +118,102,111,110,116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0,115,101,112, 99,104, 97,114, 0, + 99,116,105,109,101, 0,116,111,116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0,115,101,108,115,116, 97,114,116, + 0,115,101,108,101,110,100, 0, 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, 0,101,102,102,101, 99,116, 0, + 42,109,102, 97, 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109,118,101,114,116, 0, 42,109,101, +100,103,101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107,121, 0, 42,116,101,120, 99,111, +109,101,115,104, 0, 42,109,115,101,108,101, 99,116, 0, 42,101,100,105,116, 95,109,101,115,104, 0,118,100, 97,116, 97, 0,101, +100, 97,116, 97, 0,102,100, 97,116, 97, 0,116,111,116,101,100,103,101, 0,116,111,116,102, 97, 99,101, 0,116,111,116,115,101, +108,101, 99,116, 0, 97, 99,116, 95,102, 97, 99,101, 0,101,100,105,116,102,108, 97,103, 0, 99,117, 98,101,109, 97,112,115,105, +122,101, 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98,100,105,118,114, 0,115,117, 98, +115,117,114,102,116,121,112,101, 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,103,101, 0,117,118, 91, 52, 93, 91, 50, 93, + 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, 97,112, 0,118, 49, 0,118, 50, + 0,118, 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,119,101,105,103,104,116, 0,100,101,102, + 95,110,114, 0, 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0,110,111, 91, 51, 93, 0,117,118, + 91, 50, 93, 0, 99,111, 91, 50, 93, 0,105,110,100,101,120, 0,102, 0,105, 0,115, 91, 50, 53, 54, 93, 0,116,111,116,100,105, +115,112, 0, 40, 42,100,105,115,112,115, 41, 40, 41, 0,118, 91, 52, 93, 0,109,105,100, 0,118, 91, 50, 93, 0, 42,102, 97, 99, +101,115, 0, 42, 99,111,108,102, 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,118,101,114,116,115, 0,108,101,118,101,108, +115, 0,108,101,118,101,108, 95, 99,111,117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101,119,108,118,108, 0,101,100,103, +101,108,118,108, 0,112,105,110,108,118,108, 0,114,101,110,100,101,114,108,118,108, 0,117,115,101, 95, 99,111,108, 0, 42,101, +100,103,101, 95,102,108, 97,103,115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, 42,118,101,114,116, 95,109, 97, +112, 0, 42,101,100,103,101, 95,109, 97,112, 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42,111,108,100, 95,101,100,103,101, +115, 0,115,116, 97, 99,107,105,110,100,101,120, 0, 42,101,114,114,111,114, 0,109,111,100,105,102,105,101,114, 0,115,117, 98, +100,105,118, 84,121,112,101, 0,114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, 67, 97, 99,104,101, 0, 42,109, + 67, 97, 99,104,101, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,101,110,103,116,104, 0,114, 97,110,100, +111,109,105,122,101, 0,115,101,101,100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116, 97,114,116, 95, 99, 97,112, 0, 42,101, +110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, 95,111, 98, 0,111,102,102,115, +101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115,116, 0,102,105,116, 95,116,121, +112,101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105,115, 0,116,111,108,101,114, 97, +110, 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103,108,101, 0,118, 97,108,117,101, + 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, 0,101, 95,102,108, 97,103,115, + 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, 91, 51, 50, 93, 0, 42,100,111, +109, 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,116,105,109,101, 0, 42,116,101,120,116,117,114,101, 0,115, +116,114,101,110,103,116,104, 0,100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118,101,108, 0,116,101,120,109, 97, +112,112,105,110,103, 0, 42,109, 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101,114, 95,110, 97,109,101, 91, 51, + 50, 93, 0,117,118,108, 97,121,101,114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,116,111,114,115, 91, 49, 48, 93, 0, 42, +105,109, 97,103,101, 0,110,117,109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112,101, 99,116,120, 0, 97,115,112, +101, 99,116,121, 0,115, 99, 97,108,101,120, 0,115, 99, 97,108,101,121, 0,112,101,114, 99,101,110,116, 0,102, 97, 99,101, 67, +111,117,110,116, 0,102, 97, 99, 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99,101,110,116,101,114, 0,115,116, + 97,114,116,120, 0,115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111,119, 0,115,112,101,101,100, 0, +100, 97,109,112, 0,102, 97,108,108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105,102,101,116,105,109,101, 0,100, +101,102,111,114,109,102,108, 97,103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, 0,115,117, 98,116, 97,114,103, +101,116, 91, 51, 50, 93, 0,112, 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116, 91, 51, 93, 0, 42, +105,110,100,101,120, 97,114, 0,116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, 99,108,111,116,104, 79, 98,106, +101, 99,116, 0, 42,115,105,109, 95,112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114,109,115, 0, 42,112,111,105,110, +116, 95, 99, 97, 99,104,101, 0,112,116, 99, 97, 99,104,101,115, 0, 42,120, 0, 42,120,110,101,119, 0, 42,120,111,108,100, 0, + 42, 99,117,114,114,101,110,116, 95,120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, 0, 42, 99,117,114,114,101,110, +116, 95,118, 0, 42,109,102, 97, 99,101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109,102, 97, 99,101,115, 0, 42, 98, +118,104,116,114,101,101, 0, 42,118, 0, 42,100,109, 0, 99,102,114, 97, 0,111,112,101,114, 97,116,105,111,110, 0,118,101,114, +116,101,120, 0,116,111,116,105,110,102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,122,101, 0, 42, 98,105,110,100,105, +110,102,108,117,101,110, 99,101,115, 0, 42, 98,105,110,100,111,102,102,115,101,116,115, 0, 42, 98,105,110,100, 99, 97,103,101, + 99,111,115, 0,116,111,116, 99, 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,100, 0, 42,100,121,110,105,110,102, +108,117,101,110, 99,101,115, 0, 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0,100,121,110,103,114,105,100,115, +105,122,101, 0,100,121,110, 99,101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108,108,119,105,100,116,104, 0, 98, +105,110,100,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42, 98,105,110,100,119,101,105,103,104,116,115, 0, 42, 98,105,110,100, 99, +111,115, 0, 40, 42, 98,105,110,100,102,117,110, 99, 41, 40, 41, 0, 42,112,115,121,115, 0,116,111,116,100,109,118,101,114,116, + 0,116,111,116,100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,111,115,105,116,105,111,110, 0,114, 97, +110,100,111,109, 95,112,111,115,105,116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103,114,111,117,112, 0,112,114,111, +116,101, 99,116, 0,108,118,108, 0,115, 99,117,108,112,116,108,118,108, 0,116,111,116,108,118,108, 0,115,105,109,112,108,101, + 0, 42,102,115,115, 0, 42,116, 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, 0,118,103,114,111,117,112, 95, +110, 97,109,101, 91, 51, 50, 93, 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, 84,121,112,101, 0,115,104,114, +105,110,107, 79,112,116,115, 0,112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, 76,101,118,101,108,115, 0, 42, +111,114,105,103,105,110, 0,102, 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111,114,105,103,105,110, 79,112,116, +115, 0,111,102,102,115,101,116, 95,102, 97, 99, 0, 99,114,101, 97,115,101, 95,105,110,110,101,114, 0, 99,114,101, 97,115,101, + 95,111,117,116,101,114, 0, 99,114,101, 97,115,101, 95,114,105,109, 0, 42,111, 98, 95, 97,120,105,115, 0,115,116,101,112,115, + 0,114,101,110,100,101,114, 95,115,116,101,112,115, 0,105,116,101,114, 0,115, 99,114,101,119, 95,111,102,115, 0, 97,110,103, +108,101, 0,112,110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111,112,110,116,115,119, 0,116,121, +112,101,117, 0,116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, 0,100,117, 0,100,118, 0,100, +119, 0, 42,100,101,102, 0, 42,108, 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, 97,116, 91, 52, 93, 91, 52, 93, + 0, 42,101,100,105,116,108, 97,116,116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99,117,108,112,116, 0,112, 97,114, +116,121,112,101, 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115,117, 98,115,116,114, 91, 51, 50, + 93, 0, 42,116,114, 97, 99,107, 0, 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103,114,111,117,112, 0, 42,112,114, +111,120,121, 95,102,114,111,109, 0, 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, 98, 0, 42,112,111,115,101, 0, + 42,103,112,100, 0, 97,118,115, 0, 42,109,112, 97,116,104, 0, 99,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101, +108,115, 0,100,101,102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115, 0,114,101,115,116,111,114,101, 95,109,111,100, +101, 0, 42,109, 97,116, 98,105,116,115, 0, 97, 99,116, 99,111,108, 0,100,108,111, 99, 91, 51, 93, 0,111,114,105,103, 91, 51, + 93, 0,100,115,105,122,101, 91, 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116, 91, 52, 93, 0,114,111,116, 65, +120,105,115, 91, 51, 93, 0,100,114,111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110,103,108,101, 0,100,114,111,116, + 65,110,103,108,101, 0,111, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105,110,118, 91, 52, 93, 91, 52, 93, + 0,108, 97,121, 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,112,114,111,116,101, 99,116,102,108, + 97,103, 0,116,114, 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102,108, 97,103, 0,105,112,111,102, +108, 97,103, 0,105,112,111,119,105,110, 0,115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105,115,102,108, 97,103, 0, 98,111, +117,110,100,116,121,112,101, 0,100,117,112,111,110, 0,100,117,112,111,102,102, 0,100,117,112,115,116, 97, 0,100,117,112,101, +110,100, 0,115,102, 0,109, 97,115,115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116,105, 97, 0,102,111,114,109,102, + 97, 99,116,111,114, 0,114,100, 97,109,112,105,110,103, 0,109, 97,114,103,105,110, 0,109, 97,120, 95,118,101,108, 0,109,105, +110, 95,118,101,108, 0,109, 95, 99,111,110,116, 97, 99,116, 80,114,111, 99,101,115,115,105,110,103, 84,104,114,101,115,104,111, +108,100, 0,114,111,116,109,111,100,101, 0,100,116, 0,100,116,120, 0,101,109,112,116,121, 95,100,114, 97,119,116,121,112,101, + 0,112, 97,100, 49, 91, 51, 93, 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0,100,117,112,102, 97, 99,101,115, + 99, 97, 0,112,114,111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108,101,114,115, 0, 97, 99,116,117, + 97,116,111,114,115, 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, 97,109,101,102,108, 97,103, 0, +103, 97,109,101,102,108, 97,103, 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97,103, 0, 97,110,105,115,111,116, +114,111,112,105, 99, 70,114,105, 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97,105,110,116,115, 0,110,108, 97, +115,116,114,105,112,115, 0,104,111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115,116,101,109, 0, 42,115,111,102, +116, 0, 42,100,117,112, 95,103,114,111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97,103, 0,114,101,115,116,114,105, + 99,116,102,108, 97,103, 0,115,104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, 0,114,101, 99, 97,108, 99,111, + 0, 98,111,100,121, 95,116,121,112,101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 42,100,101, +114,105,118,101,100, 68,101,102,111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97,108, 0,108, 97,115,116, 68, 97, +116, 97, 77, 97,115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0,103,112,117,108, 97,109,112, 0, +112, 99, 95,105,100,115, 0, 42,100,117,112,108,105,108,105,115,116, 0, 99,117,114,105,110,100,101,120, 0, 97, 99,116,105,118, +101, 0,111,114,105,103,108, 97,121, 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116,101,100, 0,111,109, 97,116, 91, + 52, 93, 91, 52, 93, 0,111,114, 99,111, 91, 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111,114, 99,101,102,105,101,108,100, + 0,115,104, 97,112,101, 0,116,101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110,107, 95, 97,120,105,115, 0,122, +100,105,114, 0,102, 95,115,116,114,101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95,102,108,111,119, 0,102, 95,115, +105,122,101, 0,102, 95,112,111,119,101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100,105,115,116, 0,102, 95,112,111, +119,101,114, 95,114, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,100, 0,112,100,101,102, 95,100, 97,109,112, 0,112,100, +101,102, 95,114,100, 97,109,112, 0,112,100,101,102, 95,112,101,114,109, 0,112,100,101,102, 95,102,114,105, 99,116, 0,112,100, +101,102, 95,114,102,114,105, 99,116, 0,112,100,101,102, 95,115,116,105, 99,107,110,101,115,115, 0, 97, 98,115,111,114,112,116, +105,111,110, 0,112,100,101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105,102,116, 0,112,100,101,102, 95, +115, 98,111,102,116, 0, 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111,119, 0,107,105,110,107, 95,102, +114,101,113, 0,107,105,110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0,102,114,101,101, 95,101,110,100, + 0,116,101,120, 95,110, 97, 98,108, 97, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0,119,101,105,103,104,116, 91, 49, + 51, 93, 0,103,108,111, 98, 97,108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93, 0,102,114, 97,109,101, 0,116,111, +116,112,111,105,110,116, 0,100, 97,116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,120, 95, 97,114,114, 97,121, 0, 42, +100, 97,116, 97, 91, 56, 93, 0, 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, 0,115,105,109,102,114, 97,109,101, 0,115,116, + 97,114,116,102,114, 97,109,101, 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, 97,109,101, 0,108, 97,115,116, + 95,101,120, 97, 99,116, 0,110, 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,109,101, 91, 54, 52, 93, 0,105,110, +102,111, 91, 54, 52, 93, 0,112, 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97, 99,104,101, 0, 42,101,100,105,116, + 0, 40, 42,102,114,101,101, 95,101,100,105,116, 41, 40, 41, 0,108,105,110, 83,116,105,102,102, 0, 97,110,103, 83,116,105,102, +102, 0,118,111,108,117,109,101, 0,118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,116,101,114, 97,116,105,111,110,115, + 0,100,105,116,101,114, 97,116,105,111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,115, 0,107, 83, 82, 72, 82, 95, 67, + 76, 0,107, 83, 75, 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82, 95, 83, 80, 76, 84, 95, 67, 76, 0, +107, 83, 75, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 86, 67, 70, 0,107, 68, 80, + 0,107, 68, 71, 0,107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77, 84, 0,107, 67, 72, 82, 0,107, 75, + 72, 82, 0,107, 83, 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,108, 97,103,115, 0,110,117,109, 99, +108,117,115,116,101,114,105,116,101,114, 97,116,105,111,110,115, 0,119,101,108,100,105,110,103, 0,116,111,116,115,112,114,105, +110,103, 0, 42, 98,112,111,105,110,116, 0, 42, 98,115,112,114,105,110,103, 0,109,115,103, 95,108,111, 99,107, 0,109,115,103, + 95,118, 97,108,117,101, 0,110,111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71, 95, 77, 97,115,115, 91, 51, 50, 93, + 0,103,114, 97,118, 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, 0,112,104,121,115,105, 99,115, + 95,115,112,101,101,100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114,105, 99,116, 0,109,105,110,103, +111, 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116,103,114,111,117,112, 0,110, 97, +109,101,100, 86, 71, 95, 83,111,102,116,103,111, 97,108, 91, 51, 50, 93, 0,102,117,122,122,121,110,101,115,115, 0,105,110,115, +112,114,105,110,103, 0,105,110,102,114,105, 99,116, 0,110, 97,109,101,100, 86, 71, 95, 83,112,114,105,110,103, 95, 75, 91, 51, + 50, 93, 0,101,102,114, 97, 0,105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115,111,108,118,101,114,102,108, 97, +103,115, 0, 42, 42,107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, 99,111,110,100,115,112,114,105, +110,103, 0, 99,111,108, 98, 97,108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108,115,116,105,102,102, 0,115, 98, + 99, 95,109,111,100,101, 0, 97,101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, 0,109, 97,120,108,111,111,112, +115, 0, 99,104,111,107,101, 0,115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, 99, 0,115,112,114,105,110,103, +112,114,101,108,111, 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116,105,102,102, 0,105,110,112,117, +115,104, 0, 42,112,111,105,110,116, 99, 97, 99,104,101, 0, 42,101,102,102,101, 99,116,111,114, 95,119,101,105,103,104,116,115, + 0,108, 99,111,109, 91, 51, 93, 0,108,114,111,116, 91, 51, 93, 91, 51, 93, 0,108,115, 99, 97,108,101, 91, 51, 93, 91, 51, 93, + 0,112, 97,100, 52, 91, 52, 93, 0, 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,101,100,111,112,116,105,111, +110,115, 0,114,101,115,111,108,117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119,114,101,115,120,121,122, 0,114, +101, 97,108,115,105,122,101, 0,103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114,101,110,100,101,114, 68,105,115, +112,108, 97,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0,118,105,115, 99,111,115,105,116, +121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0,103,114, 97,118,120, 0,103,114, + 97,118,121, 0,103,114, 97,118,122, 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, 69,110,100, 0, 98, 97,107,101, + 83,116, 97,114,116, 0, 98, 97,107,101, 69,110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82,101,102,105,110,101, 0,105,110, +105, 86,101,108,120, 0,105,110,105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111,114,103, 77,101,115,104, 0, 42, +109,101,115,104, 83,117,114,102, 97, 99,101, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102,100, 97,116, 97, 80, 97,116,104, + 91, 50, 52, 48, 93, 0, 98, 98, 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, 51, 93, 0,116,121,112,101, 70, +108, 97,103,115, 0,100,111,109, 97,105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117,109,101, 73,110,105,116, 84,121, +112,101, 0,112, 97,114,116, 83,108,105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116,101, 84,114, 97, 99,101,114,115, + 0,103,101,110,101,114, 97,116,101, 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, 99,101, 83,109,111,111,116,104, +105,110,103, 0,115,117,114,102, 97, 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 83,105, +122,101, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70,105,101,108,100, 83,105,122,101, + 0, 42,109,101,115,104, 83,117,114,102, 78,111,114,109, 97,108,115, 0, 99,112,115, 84,105,109,101, 83,116, 97,114,116, 0, 99, +112,115, 84,105,109,101, 69,110,100, 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116,114, 97, 99,116,102,111,114, 99, +101, 83,116,114,101,110,103,116,104, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97,100,105,117,115, 0,118,101,108, +111, 99,105,116,121,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, + 82, 97,100,105,117,115, 0,108, 97,115,116,103,111,111,100,102,114, 97,109,101, 0,109,105,115,116,121,112,101, 0,104,111,114, +114, 0,104,111,114,103, 0,104,111,114, 98, 0,104,111,114,107, 0,122,101,110,114, 0,122,101,110,103, 0,122,101,110, 98, 0, +122,101,110,107, 0, 97,109, 98,107, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101,120,112, 0,114, + 97,110,103,101, 0,108,105,110,102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97, 99,116,105,118, +105,116,121, 66,111,120, 82, 97,100,105,117,115, 0,115,107,121,116,121,112,101, 0,111, 99, 99,108,117,115,105,111,110, 82,101, +115, 0,112,104,121,115,105, 99,115, 69,110,103,105,110,101, 0,116,105, 99,114, 97,116,101, 0,109, 97,120,108,111,103,105, 99, +115,116,101,112, 0,112,104,121,115,117, 98,115,116,101,112, 0,109, 97,120,112,104,121,115,116,101,112, 0,109,105,115,105, 0, +109,105,115,116,115,116, 97, 0,109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0,115,116, 97,114,114, 0,115,116, + 97,114,103, 0,115,116, 97,114, 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, 0,115,116, 97,114,109,105,110, +100,105,115,116, 0,115,116, 97,114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105,115,101, 0,100,111,102,115,116, + 97, 0,100,111,102,101,110,100, 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97,111,100,105,115,116, 0, 97,111, +100,105,115,116,102, 97, 99, 0, 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, 97,111,109,111,100,101, 0, 97, +111,115, 97,109,112, 0, 97,111,109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97,100, 97,112,116, 95,116,104,114, +101,115,104, 0, 97,111, 95, 97,100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97,111, 95, 97,112,112,114,111,120, + 95,101,114,114,111,114, 0, 97,111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116,105,111,110, 0, 97,111, 95,105, +110,100,105,114,101, 99,116, 95,101,110,101,114,103,121, 0, 97,111, 95,101,110,118, 95,101,110,101,114,103,121, 0, 97,111, 95, +112, 97,100, 50, 0, 97,111, 95,105,110,100,105,114,101, 99,116, 95, 98,111,117,110, 99,101,115, 0, 97,111, 95,112, 97,100, 0, + 97,111, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, 95,109,101,116,104,111,100, 0, + 97,111, 95, 97,112,112,114,111,120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101,114,101, 0, 42, 97,111,116, 97, + 98,108,101,115, 0,112, 97,100, 91, 51, 93, 0,115,101,108, 99,111,108, 0,115,120, 0,115,121, 0, 42,108,112, 70,111,114,109, + 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, 98, 70,111,114,109, 97,116, 0, 99, 98, 80, 97,114,109,115, 0,102, 99, 99, + 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108,101,114, 0,100,119, 75,101,121, 70,114, 97,109,101, 69,118,101,114,121, 0, +100,119, 81,117, 97,108,105,116,121, 0,100,119, 66,121,116,101,115, 80,101,114, 83,101, 99,111,110,100, 0,100,119, 70,108, 97, +103,115, 0,100,119, 73,110,116,101,114,108,101, 97,118,101, 69,118,101,114,121, 0, 97,118,105, 99,111,100,101, 99,110, 97,109, +101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114,109,115, 0, 42,112, 97,100, 0, 99,100, 83,105,122,101, 0,113,116, 99,111, +100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 99,111,100,101, 99, 84,121,112,101, 0, 99,111,100,101, 99, 83,112, 97,116, +105, 97,108, 81,117, 97,108,105,116,121, 0, 99,111,100,101, 99, 0, 99,111,100,101, 99, 70,108, 97,103,115, 0, 99,111,108,111, +114, 68,101,112,116,104, 0, 99,111,100,101, 99, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 83, +112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, + 0,107,101,121, 70,114, 97,109,101, 82, 97,116,101, 0, 98,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 99,111,100,101, 99, + 84,121,112,101, 0, 97,117,100,105,111, 83, 97,109,112,108,101, 82, 97,116,101, 0, 97,117,100,105,111, 66,105,116, 68,101,112, +116,104, 0, 97,117,100,105,111, 67,104, 97,110,110,101,108,115, 0, 97,117,100,105,111, 67,111,100,101, 99, 70,108, 97,103,115, + 0, 97,117,100,105,111, 66,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 95, 99,111,100,101, 99, 0,118,105,100,101,111, 95, + 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95,109,105,120,114, + 97,116,101, 0, 97,117,100,105,111, 95,118,111,108,117,109,101, 0,103,111,112, 95,115,105,122,101, 0,114, 99, 95,109,105,110, + 95,114, 97,116,101, 0,114, 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102,102,101,114, 95,115,105,122,101, + 0,109,117,120, 95,112, 97, 99,107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116,101, 0,109,105,120,114, 97,116, +101, 0,109, 97,105,110, 0,115,112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,111,112,112,108,101,114, 95,102, 97, + 99,116,111,114, 0,100,105,115,116, 97,110, 99,101, 95,109,111,100,101,108, 0, 42,109, 97,116, 95,111,118,101,114,114,105,100, +101, 0, 42,108,105,103,104,116, 95,111,118,101,114,114,105,100,101, 0,108, 97,121, 95,122,109, 97,115,107, 0,108, 97,121,102, +108, 97,103, 0,112, 97,115,115,102,108, 97,103, 0,112, 97,115,115, 95,120,111,114, 0, 42, 97,118,105, 99,111,100,101, 99,100, + 97,116, 97, 0, 42,113,116, 99,111,100,101, 99,100, 97,116, 97, 0,113,116, 99,111,100,101, 99,115,101,116,116,105,110,103,115, + 0,102,102, 99,111,100,101, 99,100, 97,116, 97, 0,115,117, 98,102,114, 97,109,101, 0,112,115,102,114, 97, 0,112,101,102,114, + 97, 0,105,109, 97,103,101,115, 0,102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97,100,115, 0,102,114, 97,109,101,108, +101,110, 0, 98,108,117,114,102, 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101,100,103,101, 66, 0,102,117,108, +108,115, 99,114,101,101,110, 0,120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113,112,108, 97,121, 0, 97,116,116, +114,105, 98, 0,114,116, 50, 0,102,114, 97,109,101, 95,115,116,101,112, 0,115,116,101,114,101,111,109,111,100,101, 0,100,105, +109,101,110,115,105,111,110,115,112,114,101,115,101,116, 0,109, 97,120,105,109,115,105,122,101, 0,120,115, 99,104, 0,121,115, + 99,104, 0,120,112, 97,114,116,115, 0,121,112, 97,114,116,115, 0,119,105,110,112,111,115, 0,112,108, 97,110,101,115, 0,105, +109,116,121,112,101, 0,115,117, 98,105,109,116,121,112,101, 0,113,117, 97,108,105,116,121, 0,100,105,115,112,108, 97,121,109, +111,100,101, 0,114,112, 97,100, 49, 0,114,112, 97,100, 50, 0,115, 99,101,109,111,100,101, 0,114, 97,121,116,114, 97, 99,101, + 95,111,112,116,105,111,110,115, 0,114, 97,121,116,114, 97, 99,101, 95,115,116,114,117, 99,116,117,114,101, 0,114,101,110,100, +101,114,101,114, 0,111, 99,114,101,115, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, 0,102,114,115, 95,115,101, 99, + 0,101,100,103,101,105,110,116, 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100,105,115,112,114,101, 99,116, 0, +108, 97,121,101,114,115, 0, 97, 99,116,108, 97,121, 0,109, 98,108,117,114, 95,115, 97,109,112,108,101,115, 0,120, 97,115,112, + 0,121, 97,115,112, 0,102,114,115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, 0, 99,111,108,111,114, 95,109, +103,116, 95,102,108, 97,103, 0,112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117,101, 0,112,111,115,116,115, 97, +116, 0,100,105,116,104,101,114, 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95,111,115, 97, 0, 98, 97,107,101, + 95,102,105,108,116,101,114, 0, 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102,108, 97,103, 0, 98, 97,107,101, + 95,110,111,114,109, 97,108, 95,115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95,115,112,108,105,116, 0, 98, 97, +107,101, 95,109, 97,120,100,105,115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, 0, 98, 97,107,101, 95,112, 97, +100, 0, 98, 97, 99,107, 98,117,102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0,115,116, 97,109,112, 0,115,116, + 97,109,112, 95,102,111,110,116, 95,105,100, 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, 49, 54, 48, 93, 0,102,103, 95, +115,116, 97,109,112, 91, 52, 93, 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, 0,115,101,113, 95,112,114,101,118, 95,116,121, +112,101, 0,115,101,113, 95,114,101,110,100, 95,116,121,112,101, 0,115,101,113, 95,102,108, 97,103, 0,112, 97,100, 53, 91, 53, + 93, 0,115,105,109,112,108,105,102,121, 95,102,108, 97,103, 0,115,105,109,112,108,105,102,121, 95,115,117, 98,115,117,114,102, + 0,115,105,109,112,108,105,102,121, 95,115,104, 97,100,111,119,115, 97,109,112,108,101,115, 0,115,105,109,112,108,105,102,121, + 95,112, 97,114,116,105, 99,108,101,115, 0,115,105,109,112,108,105,102,121, 95, 97,111,115,115,115, 0, 99,105,110,101,111,110, +119,104,105,116,101, 0, 99,105,110,101,111,110, 98,108, 97, 99,107, 0, 99,105,110,101,111,110,103, 97,109,109, 97, 0,106,112, + 50, 95,112,114,101,115,101,116, 0,106,112, 50, 95,100,101,112,116,104, 0,114,112, 97,100, 51, 0,100,111,109,101,114,101,115, + 0,100,111,109,101,109,111,100,101, 0,100,111,109,101, 97,110,103,108,101, 0,100,111,109,101,116,105,108,116, 0,100,111,109, +101,114,101,115, 98,117,102, 0, 42,100,111,109,101,116,101,120,116, 0,101,110,103,105,110,101, 91, 51, 50, 93, 0,112, 97,114, +116,105, 99,108,101, 95,112,101,114, 99, 0,115,117, 98,115,117,114,102, 95,109, 97,120, 0,115,104, 97,100, 98,117,102,115, 97, +109,112,108,101, 95,109, 97,120, 0, 97,111, 95,101,114,114,111,114, 0,116,105,108,116, 0,114,101,115, 98,117,102, 0, 42,119, + 97,114,112,116,101,120,116, 0, 99,111,108, 91, 51, 93, 0,109, 97,116,109,111,100,101, 0,102,114, 97,109,105,110,103, 0,114, +116, 49, 0,100,111,109,101, 0,115,116,101,114,101,111,102,108, 97,103, 0,101,121,101,115,101,112, 97,114, 97,116,105,111,110, + 0, 42, 99, 97,109,101,114, 97, 0, 42, 42, 98,114,117,115,104,101,115, 0, 97, 99,116,105,118,101, 95, 98,114,117,115,104, 95, +105,110,100,101,120, 0, 98,114,117,115,104, 95, 99,111,117,110,116, 0, 42,112, 97,105,110,116, 95, 99,117,114,115,111,114, 0, +112, 97,105,110,116, 95, 99,117,114,115,111,114, 95, 99,111,108, 91, 52, 93, 0,112, 97,105,110,116, 0,115,101, 97,109, 95, 98, +108,101,101,100, 0,110,111,114,109, 97,108, 95, 97,110,103,108,101, 0,115, 99,114,101,101,110, 95,103,114, 97, 98, 95,115,105, +122,101, 91, 50, 93, 0, 42,112, 97,105,110,116, 99,117,114,115,111,114, 0,105,110,118,101,114,116, 0,116,111,116,114,101,107, +101,121, 0,116,111,116, 97,100,100,107,101,121, 0, 98,114,117,115,104,116,121,112,101, 0, 98,114,117,115,104, 91, 55, 93, 0, +101,109,105,116,116,101,114,100,105,115,116, 0,115,101,108,101, 99,116,109,111,100,101, 0,101,100,105,116,116,121,112,101, 0, +100,114, 97,119, 95,115,116,101,112, 0,102, 97,100,101, 95,102,114, 97,109,101,115, 0,110, 97,109,101, 91, 51, 54, 93, 0,109, + 97,116, 91, 51, 93, 91, 51, 93, 0,114, 97,100,105, 97,108, 95,115,121,109,109, 91, 51, 93, 0,108, 97,115,116, 95,120, 0,108, + 97,115,116, 95,121, 0,108, 97,115,116, 95, 97,110,103,108,101, 0,100,114, 97,119, 95, 97,110, 99,104,111,114,101,100, 0, 97, +110, 99,104,111,114,101,100, 95,115,105,122,101, 0, 97,110, 99,104,111,114,101,100, 95,108,111, 99, 97,116,105,111,110, 91, 51, + 93, 0, 97,110, 99,104,111,114,101,100, 95,105,110,105,116,105, 97,108, 95,109,111,117,115,101, 91, 50, 93, 0,100,114, 97,119, + 95,112,114,101,115,115,117,114,101, 0,112,114,101,115,115,117,114,101, 95,118, 97,108,117,101, 0,115,112,101, 99,105, 97,108, + 95,114,111,116, 97,116,105,111,110, 0, 42,118,112, 97,105,110,116, 95,112,114,101,118, 0, 42,119,112, 97,105,110,116, 95,112, +114,101,118, 0, 42,118,112, 97,105,110,116, 0, 42,119,112, 97,105,110,116, 0,118,103,114,111,117,112, 95,119,101,105,103,104, +116, 0, 99,111,114,110,101,114,116,121,112,101, 0,101,100,105,116, 98,117,116,102,108, 97,103, 0,106,111,105,110,116,114,105, +108,105,109,105,116, 0,100,101,103,114, 0,116,117,114,110, 0,101,120,116,114, 95,111,102,102,115, 0,100,111,117, 98,108,105, +109,105,116, 0,110,111,114,109, 97,108,115,105,122,101, 0, 97,117,116,111,109,101,114,103,101, 0,115,101,103,109,101,110,116, +115, 0,114,105,110,103,115, 0,118,101,114,116,105, 99,101,115, 0,117,110,119,114, 97,112,112,101,114, 0,117,118, 99, 97,108, + 99, 95,114, 97,100,105,117,115, 0,117,118, 99, 97,108, 99, 95, 99,117, 98,101,115,105,122,101, 0,117,118, 99, 97,108, 99, 95, +109, 97,114,103,105,110, 0,117,118, 99, 97,108, 99, 95,109, 97,112,100,105,114, 0,117,118, 99, 97,108, 99, 95,109, 97,112, 97, +108,105,103,110, 0,117,118, 99, 97,108, 99, 95,102,108, 97,103, 0,117,118, 95,102,108, 97,103, 0,117,118, 95,115,101,108,101, + 99,116,109,111,100,101, 0,117,118, 95,112, 97,100, 91, 50, 93, 0, 97,117,116,111,105,107, 95, 99,104, 97,105,110,108,101,110, + 0,105,109, 97,112, 97,105,110,116, 0,112, 97,114,116,105, 99,108,101, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 95, +115,105,122,101, 0,115,101,108,101, 99,116, 95,116,104,114,101,115,104, 0, 99,108,101, 97,110, 95,116,104,114,101,115,104, 0, + 97,117,116,111,107,101,121, 95,109,111,100,101, 0, 97,117,116,111,107,101,121, 95,102,108, 97,103, 0,114,101,116,111,112,111, + 95,109,111,100,101, 0,114,101,116,111,112,111, 95,112, 97,105,110,116, 95,116,111,111,108, 0,108,105,110,101, 95,100,105,118, + 0,101,108,108,105,112,115,101, 95,100,105,118, 0,114,101,116,111,112,111, 95,104,111,116,115,112,111,116, 0,109,117,108,116, +105,114,101,115, 95,115,117, 98,100,105,118, 95,116,121,112,101, 0,115,107,103,101,110, 95,114,101,115,111,108,117,116,105,111, +110, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,105,110,116,101,114,110, 97,108, 0,115,107,103,101,110, + 95,116,104,114,101,115,104,111,108,100, 95,101,120,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,108,101,110,103,116,104, + 95,114, 97,116,105,111, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, + 97,110,103,108,101, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 99,111,114,114,101,108, 97,116,105,111,110, 95,108,105, +109,105,116, 0,115,107,103,101,110, 95,115,121,109,109,101,116,114,121, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,114, +101,116, 97,114,103,101,116, 95, 97,110,103,108,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114, +103,101,116, 95,108,101,110,103,116,104, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, + 95,100,105,115,116, 97,110, 99,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,111,112,116,105,111,110,115, 0,115, +107,103,101,110, 95,112,111,115,116,112,114,111, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 95,112, 97,115,115,101, +115, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110,115, 91, 51, 93, 0,115,107,103,101,110, 95,109,117, +108,116,105, 95,108,101,118,101,108, 0, 42,115,107,103,101,110, 95,116,101,109,112,108, 97,116,101, 0, 98,111,110,101, 95,115, +107,101,116, 99,104,105,110,103, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 95, 99,111,110,118,101,114,116, 0, +115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110, 95,110,117,109, 98,101,114, 0,115,107,103,101,110, 95,114, +101,116, 97,114,103,101,116, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,114, +111,108,108, 0,115,107,103,101,110, 95,115,105,100,101, 95,115,116,114,105,110,103, 91, 56, 93, 0,115,107,103,101,110, 95,110, +117,109, 95,115,116,114,105,110,103, 91, 56, 93, 0,101,100,103,101, 95,109,111,100,101, 0,115,110, 97,112, 95,109,111,100,101, + 0,115,110, 97,112, 95,102,108, 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0,112,114,111,112,111,114,116,105,111, +110, 97,108, 0,112,114,111,112, 95,109,111,100,101, 0, 97,117,116,111, 95,110,111,114,109, 97,108,105,122,101, 0,105,110,116, +112, 97,100, 0,116,111,116,111, 98,106, 0,116,111,116,108, 97,109,112, 0,116,111,116,111, 98,106,115,101,108, 0,116,111,116, + 99,117,114,118,101, 0,116,111,116,109,101,115,104, 0,116,111,116, 97,114,109, 97,116,117,114,101, 0,115, 99, 97,108,101, 95, +108,101,110,103,116,104, 0,115,121,115,116,101,109, 0,103,114, 97,118,105,116,121, 91, 51, 93, 0,113,117,105, 99,107, 95, 99, + 97, 99,104,101, 95,115,116,101,112, 0, 42,119,111,114,108,100, 0, 42,115,101,116, 0, 98, 97,115,101, 0, 42, 98, 97,115, 97, + 99,116, 0, 42,111, 98,101,100,105,116, 0, 99,117,114,115,111,114, 91, 51, 93, 0,116,119, 99,101,110,116, 91, 51, 93, 0,116, +119,109,105,110, 91, 51, 93, 0,116,119,109, 97,120, 91, 51, 93, 0,108, 97,121, 97, 99,116, 0, 42,101,100, 0, 42,116,111,111, +108,115,101,116,116,105,110,103,115, 0, 42,115,116, 97,116,115, 0, 97,117,100,105,111, 0,116,114, 97,110,115,102,111,114,109, + 95,115,112, 97, 99,101,115, 0, 42,115,111,117,110,100, 95,115, 99,101,110,101, 0, 42,115,111,117,110,100, 95,115, 99,101,110, +101, 95,104, 97,110,100,108,101, 0, 42,102,112,115, 95,105,110,102,111, 0, 42,116,104,101, 68, 97,103, 0,100, 97,103,105,115, +118, 97,108,105,100, 0,100, 97,103,102,108, 97,103,115, 0,106,117,109,112,102,114, 97,109,101, 0,112, 97,100, 53, 0, 97, 99, +116,105,118,101, 95,107,101,121,105,110,103,115,101,116, 0,107,101,121,105,110,103,115,101,116,115, 0,103,109, 0,117,110,105, +116, 0,112,104,121,115,105, 99,115, 95,115,101,116,116,105,110,103,115, 0, 98,108,101,110,100, 0,118,105,101,119, 0,119,105, +110,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,105,110,118, + 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,105,110,118, 91, 52, 93, 91, + 52, 93, 0,118,105,101,119,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116,111, 98, 91, 52, 93, 91, + 52, 93, 0,116,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,122,102, 97, 99, 0, + 99, 97,109,100,120, 0, 99, 97,109,100,121, 0,112,105,120,115,105,122,101, 0, 99, 97,109,122,111,111,109, 0,118,105,101,119, + 98,117,116, 0,116,119,100,114, 97,119,102,108, 97,103, 0,114,102,108, 97,103, 0,118,105,101,119,108,111, 99,107, 0,112,101, +114,115,112, 0, 99,108,105,112, 91, 54, 93, 91, 52, 93, 0, 99,108,105,112, 95,108,111, 99, 97,108, 91, 54, 93, 91, 52, 93, 0, + 42, 99,108,105,112, 98, 98, 0, 42,108,111, 99, 97,108,118,100, 0, 42,114,105, 0, 42,114,101,116,111,112,111, 95,118,105,101, +119, 95,100, 97,116, 97, 0, 42,100,101,112,116,104,115, 0, 42,115,109,115, 0, 42,115,109,111,111,116,104, 95,116,105,109,101, +114, 0,108,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,108,112,101,114,115,112, 0,108,118,105,101,119, 0,103,114,105,100, +118,105,101,119, 0,116,119, 97,110,103,108,101, 91, 51, 93, 0,112, 97,100,102, 0,114,101,103,105,111,110, 98, 97,115,101, 0, +115,112, 97, 99,101,116,121,112,101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, 99,107,104, 97,110,100,108,101, +114, 91, 56, 93, 0,108, 97,121, 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0, 98,103,112,105, 99, 98, 97, +115,101, 0, 42, 98,103,112,105, 99, 0,111, 98, 95, 99,101,110,116,114,101, 95, 98,111,110,101, 91, 51, 50, 93, 0,100,114, 97, +119,116,121,112,101, 0,115, 99,101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0,112,105,118,111,116, 95,108, 97,115, +116, 0,103,114,105,100, 0,110,101, 97,114, 0,102, 97,114, 0,103,114,105,100,108,105,110,101,115, 0,103,114,105,100,102,108, + 97,103, 0,103,114,105,100,115,117, 98,100,105,118, 0,109,111,100,101,115,101,108,101, 99,116, 0,107,101,121,102,108, 97,103, +115, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101, 0,116,119,102,108, 97,103, 0, 99,117,115,116,111,109,100, 97,116, + 97, 95,109, 97,115,107, 0, 97,102,116,101,114,100,114, 97,119, 0,122, 98,117,102, 0,120,114, 97,121, 0,110,100,111,102,109, +111,100,101, 0,110,100,111,102,102,105,108,116,101,114, 0, 42,112,114,111,112,101,114,116,105,101,115, 95,115,116,111,114, 97, +103,101, 0,118,101,114,116, 0,104,111,114, 0,109, 97,115,107, 0,109,105,110, 91, 50, 93, 0,109, 97,120, 91, 50, 93, 0,109, +105,110,122,111,111,109, 0,109, 97,120,122,111,111,109, 0,115, 99,114,111,108,108, 0,115, 99,114,111,108,108, 95,117,105, 0, +107,101,101,112,116,111,116, 0,107,101,101,112,122,111,111,109, 0,107,101,101,112,111,102,115, 0, 97,108,105,103,110, 0,119, +105,110,120, 0,119,105,110,121, 0,111,108,100,119,105,110,120, 0,111,108,100,119,105,110,121, 0, 42,116, 97, 98, 95,111,102, +102,115,101,116, 0,116, 97, 98, 95,110,117,109, 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99,114,101,101,110, 0,118, 50,100, + 0, 42, 97,100,115, 0,103,104,111,115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, 97,112, 0, 99,117,114,115,111, +114, 86, 97,108, 0,109, 97,105,110, 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117,115,101,114, 0,114,101, 95, 97, +108,105,103,110, 0,112,114,101,118,105,101,119, 0,112, 97,116,104,102,108, 97,103, 0,100, 97,116, 97,105, 99,111,110, 0, 42, +112,105,110,105,100, 0,114,101,110,100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104,111,119,110, 0,122,101, 98,114, + 97, 0,122,111,111,109, 0,116,105,116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,102,105,108,101, 91, 56, + 48, 93, 0,114,101,110, 97,109,101,102,105,108,101, 91, 56, 48, 93, 0,115,111,114,116, 0,100,105,115,112,108, 97,121, 0, 97, + 99,116,105,118,101, 95, 98,111,111,107,109, 97,114,107, 0, 97, 99,116,105,118,101, 95,102,105,108,101, 0,115,101,108,115,116, + 97,116,101, 0,102, 95,102,112, 0,102,112, 95,115,116,114, 91, 56, 93, 0,115, 99,114,111,108,108, 95,111,102,102,115,101,116, + 0, 42,112, 97,114, 97,109,115, 0, 42,102,105,108,101,115, 0, 42,102,111,108,100,101,114,115, 95,112,114,101,118, 0, 42,102, +111,108,100,101,114,115, 95,110,101,120,116, 0, 42,111,112, 0, 42,115,109,111,111,116,104,115, 99,114,111,108,108, 95,116,105, +109,101,114, 0, 42,108, 97,121,111,117,116, 0,114,101, 99,101,110,116,110,114, 0, 98,111,111,107,109, 97,114,107,110,114, 0, +115,121,115,116,101,109,110,114, 0,116,114,101,101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97,114, 99,104, 95, +115,116,114,105,110,103, 91, 51, 50, 93, 0,115,101, 97,114, 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, 95,102,108, 97, +103,115, 0,100,111, 95, 0,111,117,116,108,105,110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0, 42, 99,117,109, + 97,112, 0,105,109, 97,110,114, 0, 99,117,114,116,105,108,101, 0,105,109,116,121,112,101,110,114, 0,108,111, 99,107, 0,112, +105,110, 0,100,116, 95,117,118, 0,115,116,105, 99,107,121, 0,100,116, 95,117,118,115,116,114,101,116, 99,104, 0, 99,117,114, +115,111,114, 91, 50, 93, 0, 99,101,110,116,120, 0, 99,101,110,116,121, 0,115, 99,111,112,101,115, 0,115, 97,109,112,108,101, + 95,108,105,110,101, 95,104,105,115,116, 0, 42,116,101,120,116, 0,116,111,112, 0,118,105,101,119,108,105,110,101,115, 0,108, +104,101,105,103,104,116, 0, 99,119,105,100,116,104, 0,108,105,110,101,110,114,115, 95,116,111,116, 0,108,101,102,116, 0,115, +104,111,119,108,105,110,101,110,114,115, 0,116, 97, 98,110,117,109, 98,101,114, 0,115,104,111,119,115,121,110,116, 97,120, 0, +111,118,101,114,119,114,105,116,101, 0,108,105,118,101, 95,101,100,105,116, 0,112,105,120, 95,112,101,114, 95,108,105,110,101, + 0,116,120,116,115, 99,114,111,108,108, 0,116,120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100,111,112,108,117, +103,105,110,115, 0,102,105,110,100,115,116,114, 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99,101,115,116,114, 91, 50, 53, 54, + 93, 0, 42,112,121, 95,100,114, 97,119, 0, 42,112,121, 95,101,118,101,110,116, 0, 42,112,121, 95, 98,117,116,116,111,110, 0, + 42,112,121, 95, 98,114,111,119,115,101,114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,111, 98, 97,108,100,105, + 99,116, 0,108, 97,115,116,115,112, 97, 99,101, 0,115, 99,114,105,112,116,110, 97,109,101, 91, 50, 53, 54, 93, 0,115, 99,114, +105,112,116, 97,114,103, 91, 50, 53, 54, 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,117,116, 95,114,101,102,115, 0, 42, 97, +114,114, 97,121, 0, 99, 97, 99,104,101,115, 0, 99, 97, 99,104,101, 95,100,105,115,112,108, 97,121, 0,114,101,100,114, 97,119, +115, 0, 42,105,100, 0, 97,115,112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, 0,109,121, 0, 42,101,100,105, +116,116,114,101,101, 0,116,114,101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,109,101,110,117, 0,110,117,109,116, +105,108,101,115,120, 0,110,117,109,116,105,108,101,115,121, 0,118,105,101,119,114,101, 99,116, 0, 98,111,111,107,109, 97,114, +107,114,101, 99,116, 0,115, 99,114,111,108,108,112,111,115, 0,115, 99,114,111,108,108,104,101,105,103,104,116, 0,115, 99,114, +111,108,108, 97,114,101, 97, 0,114,101,116,118, 97,108, 0,112,114,118, 95,119, 0,112,114,118, 95,104, 0, 40, 42,114,101,116, +117,114,110,102,117,110, 99, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95,101,118,101,110,116, 41, 40, 41, + 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95, 97,114,103,115, 41, 40, 41, 0, 42, 97,114,103, 49, 0, 42, 97,114,103, + 50, 0, 42,109,101,110,117,112, 0, 42,112,117,112,109,101,110,117, 0, 42,105,109,103, 0,108,101,110, 95, 97,108,108,111, 99, + 0, 99,117,114,115,111,114, 0,114,112,116, 95,109, 97,115,107, 0,115, 99,114,111,108,108, 98, 97, 99,107, 0,104,105,115,116, +111,114,121, 0,112,114,111,109,112,116, 91, 50, 53, 54, 93, 0,108, 97,110,103,117, 97,103,101, 91, 51, 50, 93, 0,115,101,108, + 95,115,116, 97,114,116, 0,115,101,108, 95,101,110,100, 0,102,105,108,116,101,114, 91, 54, 52, 93, 0,102,105,108,101,110, 97, +109,101, 91, 50, 53, 54, 93, 0, 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,100, 0,114, 95,116,111, 95,108, 0, +112,111,105,110,116,115, 0,107,101,114,110,105,110,103, 0,105,116, 97,108,105, 99, 0, 98,111,108,100, 0,115,104, 97,100,111, +119, 0,115,104, 97,100,120, 0,115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, 97, 0,115,104, 97,100,111,119, + 99,111,108,111,114, 0,112, 97,110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, 98,101,108, 0,119,105,100,103, +101,116,108, 97, 98,101,108, 0,119,105,100,103,101,116, 0,112, 97,110,101,108,122,111,111,109, 0,109,105,110,108, 97, 98,101, +108, 99,104, 97,114,115, 0,109,105,110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111,108,117,109,110,115,112, 97, 99, +101, 0,116,101,109,112,108, 97,116,101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, 0, 98,117,116,116,111,110,115, +112, 97, 99,101,120, 0, 98,117,116,116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108,115,112, 97, 99,101, 0,112, 97, +110,101,108,111,117,116,101,114, 0,112, 97,100, 91, 49, 93, 0,111,117,116,108,105,110,101, 91, 52, 93, 0,105,110,110,101,114, + 91, 52, 93, 0,105,110,110,101,114, 95,115,101,108, 91, 52, 93, 0,105,116,101,109, 91, 52, 93, 0,116,101,120,116, 91, 52, 93, + 0,116,101,120,116, 95,115,101,108, 91, 52, 93, 0,115,104, 97,100,101,100, 0,115,104, 97,100,101,116,111,112, 0,115,104, 97, +100,101,100,111,119,110, 0, 97,108,112,104, 97, 95, 99,104,101, 99,107, 0,105,110,110,101,114, 95, 97,110,105,109, 91, 52, 93, + 0,105,110,110,101,114, 95, 97,110,105,109, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 91, 52, 93, 0, +105,110,110,101,114, 95,107,101,121, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 91, 52, 93, + 0,105,110,110,101,114, 95,100,114,105,118,101,110, 95,115,101,108, 91, 52, 93, 0,119, 99,111,108, 95,114,101,103,117,108, 97, +114, 0,119, 99,111,108, 95,116,111,111,108, 0,119, 99,111,108, 95,116,101,120,116, 0,119, 99,111,108, 95,114, 97,100,105,111, + 0,119, 99,111,108, 95,111,112,116,105,111,110, 0,119, 99,111,108, 95,116,111,103,103,108,101, 0,119, 99,111,108, 95,110,117, +109, 0,119, 99,111,108, 95,110,117,109,115,108,105,100,101,114, 0,119, 99,111,108, 95,109,101,110,117, 0,119, 99,111,108, 95, +112,117,108,108,100,111,119,110, 0,119, 99,111,108, 95,109,101,110,117, 95, 98, 97, 99,107, 0,119, 99,111,108, 95,109,101,110, +117, 95,105,116,101,109, 0,119, 99,111,108, 95, 98,111,120, 0,119, 99,111,108, 95,115, 99,114,111,108,108, 0,119, 99,111,108, + 95,112,114,111,103,114,101,115,115, 0,119, 99,111,108, 95,108,105,115,116, 95,105,116,101,109, 0,119, 99,111,108, 95,115,116, + 97,116,101, 0,105, 99,111,110,102,105,108,101, 91, 56, 48, 93, 0, 98, 97, 99,107, 91, 52, 93, 0,116,105,116,108,101, 91, 52, + 93, 0,116,101,120,116, 95,104,105, 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,105, +116,108,101, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120, +116, 95,104,105, 91, 52, 93, 0, 98,117,116,116,111,110, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,105,116,108,101, 91, 52, + 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 95,104,105, 91, + 52, 93, 0,108,105,115,116, 91, 52, 93, 0,108,105,115,116, 95,116,105,116,108,101, 91, 52, 93, 0,108,105,115,116, 95,116,101, +120,116, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,112, 97,110,101,108, 91, 52, 93, 0,112, + 97,110,101,108, 95,116,105,116,108,101, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 91, 52, 93, 0,112, 97,110,101, +108, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93, 0,115,104, 97,100,101, 50, 91, 52, 93, + 0,104,105,108,105,116,101, 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,101, 91, 52, 93, 0,115,101,108,101, 99, +116, 91, 52, 93, 0,108, 97,109,112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, 52, 93, 0,103,114,111,117,112, 91, 52, 93, 0, +103,114,111,117,112, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,111,114,109, 91, 52, 93, 0,118,101,114, +116,101,120, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 91, 52, 93, 0, +101,100,103,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101, 97,109, 91, 52, 93, 0,101,100,103,101, + 95,115,104, 97,114,112, 91, 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, 93, 0,101,100,103,101, 95, 99, +114,101, 97,115,101, 91, 52, 93, 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0, +102, 97, 99,101, 95,100,111,116, 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0,118,101,114,116,101,120, 95,110,111,114, +109, 97,108, 91, 52, 93, 0, 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110,101, 95,112,111,115,101, 91, 52, + 93, 0,115,116,114,105,112, 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, 52, 93, 0, 99,102,114, 97,109, +101, 91, 52, 93, 0,110,117,114, 98, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,118,108,105,110,101, 91, 52, 93, + 0, 97, 99,116, 95,115,112,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95,117,108,105,110,101, 91, 52, 93, + 0,110,117,114, 98, 95,115,101,108, 95,118,108,105,110,101, 91, 52, 93, 0,108, 97,115,116,115,101,108, 95,112,111,105,110,116, + 91, 52, 93, 0,104, 97,110,100,108,101, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,117,116,111, 91, 52, + 93, 0,104, 97,110,100,108,101, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,108,105,103,110, 91, 52, 93, + 0,104, 97,110,100,108,101, 95,115,101,108, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97, +117,116,111, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, + 95,115,101,108, 95, 97,108,105,103,110, 91, 52, 93, 0,100,115, 95, 99,104, 97,110,110,101,108, 91, 52, 93, 0,100,115, 95,115, +117, 98, 99,104, 97,110,110,101,108, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,111,117,116,112,117,116, 91, 52, 93, 0, 99, +111,110,115,111,108,101, 95,105,110,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,102,111, 91, 52, 93, 0, + 99,111,110,115,111,108,101, 95,101,114,114,111,114, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95, 99,117,114,115,111,114, 91, + 52, 93, 0,118,101,114,116,101,120, 95,115,105,122,101, 0,102, 97, 99,101,100,111,116, 95,115,105,122,101, 0, 98,112, 97,100, + 91, 50, 93, 0,115,121,110,116, 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,120,110, 91, 52, 93, 0,115,121,110,116, 97,120, + 98, 91, 52, 93, 0,115,121,110,116, 97,120,118, 91, 52, 93, 0,115,121,110,116, 97,120, 99, 91, 52, 93, 0,109,111,118,105,101, + 91, 52, 93, 0,105,109, 97,103,101, 91, 52, 93, 0,115, 99,101,110,101, 91, 52, 93, 0, 97,117,100,105,111, 91, 52, 93, 0,101, +102,102,101, 99,116, 91, 52, 93, 0,112,108,117,103,105,110, 91, 52, 93, 0,116,114, 97,110,115,105,116,105,111,110, 91, 52, 93, + 0,109,101,116, 97, 91, 52, 93, 0,101,100,105,116,109,101,115,104, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,104, 97,110,100, +108,101, 95,118,101,114,116,101,120, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,101,108,101, 99, +116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,105,122,101, 0,104,112, 97,100, 91, 55, 93, 0, +112,114,101,118,105,101,119, 95, 98, 97, 99,107, 91, 52, 93, 0,115,111,108,105,100, 91, 52, 93, 0,116,117,105, 0,116, 98,117, +116,115, 0,116,118, 51,100, 0,116,102,105,108,101, 0,116,105,112,111, 0,116,105,110,102,111, 0,116,115,110,100, 0,116, 97, + 99,116, 0,116,110,108, 97, 0,116,115,101,113, 0,116,105,109, 97, 0,116,105,109, 97,115,101,108, 0,116,101,120,116, 0,116, +111,111,112,115, 0,116,116,105,109,101, 0,116,110,111,100,101, 0,116,108,111,103,105, 99, 0,116,117,115,101,114,112,114,101, +102, 0,116, 99,111,110,115,111,108,101, 0,116, 97,114,109, 91, 50, 48, 93, 0, 97, 99,116,105,118,101, 95,116,104,101,109,101, + 95, 97,114,101, 97, 0,109,111,100,117,108,101, 91, 54, 52, 93, 0,115,112,101, 99, 91, 52, 93, 0,100,117,112,102,108, 97,103, + 0,115, 97,118,101,116,105,109,101, 0,116,101,109,112,100,105,114, 91, 49, 54, 48, 93, 0,102,111,110,116,100,105,114, 91, 49, + 54, 48, 93, 0,114,101,110,100,101,114,100,105,114, 91, 49, 54, 48, 93, 0,116,101,120,116,117,100,105,114, 91, 49, 54, 48, 93, + 0,112,108,117,103,116,101,120,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,115,101,113,100,105,114, 91, 49, 54, 48, 93, + 0,112,121,116,104,111,110,100,105,114, 91, 49, 54, 48, 93, 0,115,111,117,110,100,100,105,114, 91, 49, 54, 48, 93, 0,105,109, + 97,103,101, 95,101,100,105,116,111,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 91, 50, 52, 48, 93, + 0, 97,110,105,109, 95,112,108, 97,121,101,114, 95,112,114,101,115,101,116, 0,118, 50,100, 95,109,105,110, 95,103,114,105,100, +115,105,122,101, 0,116,105,109,101, 99,111,100,101, 95,115,116,121,108,101, 0,118,101,114,115,105,111,110,115, 0,100, 98,108, + 95, 99,108,105, 99,107, 95,116,105,109,101, 0,103, 97,109,101,102,108, 97,103,115, 0,119,104,101,101,108,108,105,110,101,115, + 99,114,111,108,108, 0,117,105,102,108, 97,103, 0,108, 97,110,103,117, 97,103,101, 0,117,115,101,114,112,114,101,102, 0,118, +105,101,119,122,111,111,109, 0,109,105,120, 98,117,102,115,105,122,101, 0, 97,117,100,105,111,100,101,118,105, 99,101, 0, 97, +117,100,105,111,114, 97,116,101, 0, 97,117,100,105,111,102,111,114,109, 97,116, 0, 97,117,100,105,111, 99,104, 97,110,110,101, +108,115, 0,100,112,105, 0,101,110, 99,111,100,105,110,103, 0,116,114, 97,110,115,111,112,116,115, 0,109,101,110,117,116,104, +114,101,115,104,111,108,100, 49, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 50, 0,116,104,101,109,101,115, 0,117, +105,102,111,110,116,115, 0,117,105,115,116,121,108,101,115, 0,107,101,121,109, 97,112,115, 0, 97,100,100,111,110,115, 0,107, +101,121, 99,111,110,102,105,103,115,116,114, 91, 54, 52, 93, 0,117,110,100,111,115,116,101,112,115, 0,117,110,100,111,109,101, +109,111,114,121, 0,103,112, 95,109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103,112, 95,101,117, 99,108,105,100,101, + 97,110,100,105,115,116, 0,103,112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101,116,116,105,110,103,115, 0,116, 98, 95, +108,101,102,116,109,111,117,115,101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, 0,108,105,103,104,116, 91, 51, 93, + 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,115,101,116,116,105,110,103,115, 0,116,119, 95,104,111,116,115,112,111, +116, 0,116,119, 95,102,108, 97,103, 0,116,119, 95,104, 97,110,100,108,101,115,105,122,101, 0,116,119, 95,115,105,122,101, 0, +116,101,120,116,105,109,101,111,117,116, 0,116,101,120, 99,111,108,108,101, 99,116,114, 97,116,101, 0,119,109,100,114, 97,119, +109,101,116,104,111,100, 0,109,101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101,102,101,116, 99,104,102,114, 97, +109,101,115, 0,102,114, 97,109,101,115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95,114,111,116, 95, 97,110,103,108, +101, 0,111, 98, 99,101,110,116,101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114,118,105, 98,114,105,103,104,116, + 0,114,101, 99,101,110,116, 95,102,105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101,119,116,120, 0,103,108,114,101, +115,108,105,109,105,116, 0,110,100,111,102, 95,112, 97,110, 0,110,100,111,102, 95,114,111,116, 97,116,101, 0, 99,117,114,115, +115,105,122,101, 0, 99,111,108,111,114, 95,112,105, 99,107,101,114, 95,116,121,112,101, 0,105,112,111, 95,110,101,119, 0,107, +101,121,104, 97,110,100,108,101,115, 95,110,101,119, 0,115, 99,114, 99, 97,115,116,102,112,115, 0,115, 99,114, 99, 97,115,116, +119, 97,105,116, 0,112,114,111,112,119,105,100,116,104, 0,118,101,114,115,101,109, 97,115,116,101,114, 91, 49, 54, 48, 93, 0, +118,101,114,115,101,117,115,101,114, 91, 49, 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108,105,112, 0, 99,111, 98, 97, 95, +119,101,105,103,104,116, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,115,105,122,101, + 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,117,110,112,114,111,106,101, 99,116,101, +100, 95,114, 97,100,105,117,115, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95, 97,108, +112,104, 97, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,111,118,101,114,108, 97,121, 95, 99,111,108, 91, 51, 93, 0, +118,101,114,116, 98, 97,115,101, 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,115,101, 0, 42,110,101,119,115, + 99,101,110,101, 0,102,117,108,108, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0,100,111, 95,114,101,102,114,101, +115,104, 0,100,111, 95,100,114, 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, 97,119, 95,112, 97,105,110,116, + 99,117,114,115,111,114, 0,100,111, 95,100,114, 97,119, 95,100,114, 97,103, 0,115,119, 97,112, 0,109, 97,105,110,119,105,110, + 0,115,117, 98,119,105,110, 97, 99,116,105,118,101, 0, 42, 97,110,105,109,116,105,109,101,114, 0, 42, 99,111,110,116,101,120, +116, 0,104, 97,110,100,108,101,114, 91, 56, 93, 0, 42,110,101,119,118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42, +116,121,112,101, 0,112, 97,110,101,108,110, 97,109,101, 91, 54, 52, 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100, +114, 97,119,110, 97,109,101, 91, 54, 52, 93, 0,111,102,115,120, 0,111,102,115,121, 0,115,105,122,101,120, 0,115,105,122,101, +121, 0,108, 97, 98,101,108,111,102,115, 0,114,117,110,116,105,109,101, 95,102,108, 97,103, 0, 99,111,110,116,114,111,108, 0, +115,110, 97,112, 0,115,111,114,116,111,114,100,101,114, 0, 42,112, 97,110,101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101, +100, 97,116, 97, 0,108,105,115,116, 95,115, 99,114,111,108,108, 0,108,105,115,116, 95,115,105,122,101, 0,108,105,115,116, 95, +108, 97,115,116, 95,108,101,110, 0,108,105,115,116, 95,103,114,105,112, 95,115,105,122,101, 0,108,105,115,116, 95,115,101, 97, +114, 99,104, 91, 54, 52, 93, 0, 42,118, 51, 0, 42,118, 52, 0, 42,102,117,108,108, 0, 98,117,116,115,112, 97, 99,101,116,121, +112,101, 0,104,101, 97,100,101,114,116,121,112,101, 0,115,112, 97, 99,101,100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, + 0, 97, 99,116,105,111,110,122,111,110,101,115, 0,119,105,110,114, 99,116, 0,100,114, 97,119,114, 99,116, 0,115,119,105,110, +105,100, 0,114,101,103,105,111,110,116,121,112,101, 0, 97,108,105,103,110,109,101,110,116, 0,100,111, 95,100,114, 97,119, 95, +111,118,101,114,108, 97,121, 0,117,105, 98,108,111, 99,107,115, 0,112, 97,110,101,108,115, 0, 42,104,101, 97,100,101,114,115, +116,114, 0, 42,114,101,103,105,111,110,100, 97,116, 97, 0,115,117, 98,118,115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114, +115,105,111,110, 0,112, 97,100,115, 0,109,105,110,118,101,114,115,105,111,110, 0,109,105,110,115,117, 98,118,101,114,115,105, +111,110, 0, 42, 99,117,114,115, 99,114,101,101,110, 0, 42, 99,117,114,115, 99,101,110,101, 0,102,105,108,101,102,108, 97,103, +115, 0,103,108,111, 98, 97,108,102, 0,102,105,108,101,110, 97,109,101, 91, 50, 52, 48, 93, 0,110, 97,109,101, 91, 56, 48, 93, + 0, 42,105, 98,117,102, 0, 42,105, 98,117,102, 95, 99,111,109,112, 0, 42,115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, + 0,110,114, 0, 98,111,116,116,111,109, 0,114,105,103,104,116, 0,120,111,102,115, 0,121,111,102,115, 0,108,105,102,116, 91, + 51, 93, 0,103, 97,109,109, 97, 91, 51, 93, 0,103, 97,105,110, 91, 51, 93, 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110, +101, 0,115,116, 97,114,116,115,116,105,108,108, 0,101,110,100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, + 0,111,114,120, 0,111,114,121, 0, 42, 99,114,111,112, 0, 42,116,114, 97,110,115,102,111,114,109, 0, 42, 99,111,108,111,114, + 95, 98, 97,108, 97,110, 99,101, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, + 95,115,116, 97,114,116,115,116,105,108,108, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,101,110,100,115,116,105,108,108, + 0, 42,105, 98,117,102, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42,105, 98,117,102, 95,101,110,100,115,116,105,108,108, + 0, 42,105,110,115,116, 97,110, 99,101, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110, +116, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100, +111,102,115, 0,109, 97, 99,104,105,110,101, 0,115,116, 97,114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,115, 97, +116, 0,109,117,108, 0,104, 97,110,100,115,105,122,101, 0, 97,110,105,109, 95,112,114,101,115,101,101,107, 0, 42,115,116,114, +105,112, 0, 42,115, 99,101,110,101, 95, 99, 97,109,101,114, 97, 0,101,102,102,101, 99,116, 95,102, 97,100,101,114, 0,115,112, +101,101,100, 95,102, 97,100,101,114, 0, 42,115,101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, + 97,115,101, 0, 42,115,111,117,110,100, 0, 42,115, 99,101,110,101, 95,115,111,117,110,100, 0,108,101,118,101,108, 0,112, 97, +110, 0,115, 99,101,110,101,110,114, 0,109,117,108,116,105, 99, 97,109, 95,115,111,117,114, 99,101, 0,115,116,114,111, 98,101, + 0, 42,101,102,102,101, 99,116,100, 97,116, 97, 0, 97,110,105,109, 95,115,116, 97,114,116,111,102,115, 0, 97,110,105,109, 95, +101,110,100,111,102,115, 0, 98,108,101,110,100, 95,109,111,100,101, 0, 98,108,101,110,100, 95,111,112, 97, 99,105,116,121, 0, + 42,111,108,100, 98, 97,115,101,112, 0, 42,112, 97,114,115,101,113, 0, 42,115,101,113, 98, 97,115,101,112, 0,109,101,116, 97, +115,116, 97, 99,107, 0, 42, 97, 99,116, 95,115,101,113, 0, 97, 99,116, 95,105,109, 97,103,101,100,105,114, 91, 50, 53, 54, 93, + 0, 97, 99,116, 95,115,111,117,110,100,100,105,114, 91, 50, 53, 54, 93, 0,111,118,101,114, 95,111,102,115, 0,111,118,101,114, + 95, 99,102,114, 97, 0,111,118,101,114, 95,102,108, 97,103, 0,111,118,101,114, 95, 98,111,114,100,101,114, 0,101,100,103,101, + 87,105,100,116,104, 0,102,111,114,119, 97,114,100, 0,119,105,112,101,116,121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, + 97,109,112, 0,102, 66,111,111,115,116, 0,100, 68,105,115,116, 0,100, 81,117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109, +112, 0, 83, 99, 97,108,101,120, 73,110,105, 0, 83, 99, 97,108,101,121, 73,110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, + 83, 99, 97,108,101,121, 70,105,110, 0,120, 73,110,105, 0,120, 70,105,110, 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111, +116, 73,110,105, 0,114,111,116, 70,105,110, 0,105,110,116,101,114,112,111,108, 97,116,105,111,110, 0,117,110,105,102,111,114, +109, 95,115, 99, 97,108,101, 0, 42,102,114, 97,109,101, 77, 97,112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97, +115,116, 86, 97,108,105,100, 70,114, 97,109,101, 0, 98,117,116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97, + 0,116,111,116,112, 97,114,116, 0,110,111,114,109,102, 97, 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116, +101,120,102, 97, 99, 0,114, 97,110,100,108,105,102,101, 0,102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, + 0,109, 97,120,108,101,110, 0,100,101,102,118,101, 99, 91, 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, + 93, 0, 99,104,105,108,100, 91, 52, 93, 0,109, 97,116, 91, 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116, + 0,115,116, 97,116,105, 99,115,116,101,112, 0,111,109, 97,116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101, +120, 0,102,108, 97,103, 50,110,101,103, 0,118,101,114,116,103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109, +101, 91, 51, 50, 93, 0,118,103,114,111,117,112,110, 97,109,101, 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110, +102, 97, 99, 0,117,115,101,100, 0,117,115,101,100,101,108,101,109, 0, 42,112,111,105,110, 0,114,101,115,101,116,100,105,115, +116, 0,108, 97,115,116,118, 97,108, 0, 42,109, 97, 0,107,101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114, +103,101,116, 78, 97,109,101, 91, 51, 50, 93, 0,116,111,103,103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, + 91, 51, 50, 93, 0,109, 97,120,118, 97,108,117,101, 91, 51, 50, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,105,111,110, + 0,109, 97,116,101,114,105, 97,108, 78, 97,109,101, 91, 51, 50, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,114,111,112, +110, 97,109,101, 91, 51, 50, 93, 0,109, 97,116,110, 97,109,101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111, +115,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0, 99,111,110,115,116,114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114, +111,109, 79, 98,106,101, 99,116, 0,115,117, 98,106,101, 99,116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116, +121,112,101, 0,112,117,108,115,101, 0,102,114,101,113, 0,116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0, +116, 97,112, 0,106,111,121,105,110,100,101,120, 0, 97,120,105,115, 95,115,105,110,103,108,101, 0, 97,120,105,115,102, 0, 98, +117,116,116,111,110, 0,104, 97,116, 0,104, 97,116,102, 0,112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, + 93, 0, 42,109,121,110,101,119, 0,105,110,112,117,116,115, 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,108,105,110, +107,115, 0,118, 97,108,111, 0,115,116, 97,116,101, 95,109, 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111, +112, 91, 51, 50, 93, 0, 98,108,101,110,100,105,110, 0,112,114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,115,101,116, + 0,115,116,114,105,100,101, 97,120,105,115, 0,115,116,114,105,100,101,108,101,110,103,116,104, 0,115,110,100,110,114, 0,112, + 97,100, 51, 91, 50, 93, 0,112,105,116, 99,104, 0,115,111,117,110,100, 51, 68, 0,112, 97,100, 54, 91, 49, 93, 0, 42,109,101, + 0,108,105,110, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108, +111, 99, 97,108,102,108, 97,103, 0,100,121,110, 95,111,112,101,114, 97,116,105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, + 51, 93, 0,102,111,114, 99,101,114,111,116, 91, 51, 93, 0,108,105,110,101, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, + 0, 97,110,103,117,108, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 42,114,101,102,101,114,101,110, 99,101, 0,109, +105,110, 0,109, 97,120, 0,114,111,116,100, 97,109,112, 0,109,105,110,108,111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, + 51, 93, 0,109,105,110,114,111,116, 91, 51, 93, 0,109, 97,120,114,111,116, 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51, + 50, 93, 0, 98,117,116,115,116, 97, 0, 98,117,116,101,110,100, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110, +116, 95, 97,114,103, 95, 49, 0,105,110,116, 95, 97,114,103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108, +111, 97,116, 95, 97,114,103, 95, 50, 0,116,111, 80,114,111,112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, + 99,116, 0, 98,111,100,121, 84,121,112,101, 0,102,105,108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105, +110, 97,109,101, 91, 54, 52, 93, 0,105,110,116, 95, 97,114,103, 0,102,108,111, 97,116, 95, 97,114,103, 0, 42,115,117, 98,116, + 97,114,103,101,116, 0,103,111, 0, 97, 99, 99,101,108,108,101,114, 97,116,105,111,110, 0,109, 97,120,115,112,101,101,100, 0, +109, 97,120,114,111,116,115,112,101,101,100, 0,109, 97,120,116,105,108,116,115,112,101,101,100, 0,116,105,108,116,100, 97,109, +112, 0,115,112,101,101,100,100, 97,109,112, 0,109,105,110, 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101, +102,101,114,101,110, 99,101, 95,100,105,115,116, 97,110, 99,101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,101, 0,114,111, +108,108,111,102,102, 95,102, 97, 99,116,111,114, 0, 99,111,110,101, 95,105,110,110,101,114, 95, 97,110,103,108,101, 0, 99,111, +110,101, 95,111,117,116,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42, +110,101,119,112, 97, 99,107,101,100,102,105,108,101, 0, 97,116,116,101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, + 99,101, 0, 42, 99, 97, 99,104,101, 0, 42,112,108, 97,121, 98, 97, 99,107, 95,104, 97,110,100,108,101, 0, 42, 97,114,101, 97, + 0, 42,108, 97,109,112,114,101,110, 0,103,111, 98,106,101, 99,116, 0,100,117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 42, +112,114,111,112, 0, 99,104,105,108,100, 98, 97,115,101, 0,114,111,108,108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, + 91, 51, 93, 0, 98,111,110,101, 95,109, 97,116, 91, 51, 93, 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97, +114,109, 95,116, 97,105,108, 91, 51, 93, 0, 97,114,109, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0, +122,119,105,100,116,104, 0,101, 97,115,101, 49, 0,101, 97,115,101, 50, 0,114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95, +116, 97,105,108, 0, 98,111,110,101, 98, 97,115,101, 0, 99,104, 97,105,110, 98, 97,115,101, 0, 42,101,100, 98,111, 0, 42, 97, + 99,116, 95, 98,111,110,101, 0, 42, 97, 99,116, 95,101,100, 98,111,110,101, 0, 42,115,107,101,116, 99,104, 0,108, 97,121,101, +114, 95,112,114,111,116,101, 99,116,101,100, 0,103,104,111,115,116,101,112, 0,103,104,111,115,116,115,105,122,101, 0,103,104, +111,115,116,116,121,112,101, 0,112, 97,116,104,115,105,122,101, 0,103,104,111,115,116,115,102, 0,103,104,111,115,116,101,102, + 0,112, 97,116,104,115,102, 0,112, 97,116,104,101,102, 0,112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,111, +105,110,116,115, 0,115,116, 97,114,116, 95,102,114, 97,109,101, 0,101,110,100, 95,102,114, 97,109,101, 0,103,104,111,115,116, + 95,115,102, 0,103,104,111,115,116, 95,101,102, 0,103,104,111,115,116, 95, 98, 99, 0,103,104,111,115,116, 95, 97, 99, 0,103, +104,111,115,116, 95,116,121,112,101, 0,103,104,111,115,116, 95,115,116,101,112, 0,103,104,111,115,116, 95,102,108, 97,103, 0, +112, 97,116,104, 95,116,121,112,101, 0,112, 97,116,104, 95,115,116,101,112, 0,112, 97,116,104, 95,118,105,101,119,102,108, 97, +103, 0,112, 97,116,104, 95, 98, 97,107,101,102,108, 97,103, 0,112, 97,116,104, 95,115,102, 0,112, 97,116,104, 95,101,102, 0, +112, 97,116,104, 95, 98, 99, 0,112, 97,116,104, 95, 97, 99, 0, 99,111,110,115,116,102,108, 97,103, 0,105,107,102,108, 97,103, + 0,115,101,108,101, 99,116,102,108, 97,103, 0, 97,103,114,112, 95,105,110,100,101,120, 0, 42, 98,111,110,101, 0, 42, 99,104, +105,108,100, 0,105,107,116,114,101,101, 0, 42, 98, 95, 98,111,110,101, 95,109, 97,116,115, 0, 42,100,117, 97,108, 95,113,117, + 97,116, 0, 42, 98, 95, 98,111,110,101, 95,100,117, 97,108, 95,113,117, 97,116,115, 0,101,117,108, 91, 51, 93, 0, 99,104, 97, +110, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95, +104,101, 97,100, 91, 51, 93, 0,112,111,115,101, 95,116, 97,105,108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, + 0,108,105,109,105,116,109, 97,120, 91, 51, 93, 0,115,116,105,102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101, +116, 99,104, 0,105,107,114,111,116,119,101,105,103,104,116, 0,105,107,108,105,110,119,101,105,103,104,116, 0, 42, 99,117,115, +116,111,109, 0, 42, 99,117,115,116,111,109, 95,116,120, 0, 99,104, 97,110, 98, 97,115,101, 0, 42, 99,104, 97,110,104, 97,115, +104, 0,112,114,111,120,121, 95,108, 97,121,101,114, 0,115,116,114,105,100,101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 99, +121, 99,108,105, 99, 95,111,102,102,115,101,116, 91, 51, 93, 0, 97,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,103, +114,111,117,112, 0,105,107,115,111,108,118,101,114, 0, 42,105,107,100, 97,116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,112, +114,111,120,121, 95, 97, 99,116, 95, 98,111,110,101, 91, 51, 50, 93, 0,110,117,109,105,116,101,114, 0,110,117,109,115,116,101, +112, 0,109,105,110,115,116,101,112, 0,109, 97,120,115,116,101,112, 0,115,111,108,118,101,114, 0,102,101,101,100, 98, 97, 99, +107, 0,109, 97,120,118,101,108, 0,100, 97,109,112,109, 97,120, 0,100, 97,109,112,101,112,115, 0, 99,104, 97,110,110,101,108, +115, 0, 99,117,115,116,111,109, 67,111,108, 0, 99,115, 0, 99,117,114,118,101,115, 0,103,114,111,117,112,115, 0, 97, 99,116, +105,118,101, 95,109, 97,114,107,101,114, 0, 42,115,111,117,114, 99,101, 0, 42,102,105,108,116,101,114, 95,103,114,112, 0,102, +105,108,116,101,114,102,108, 97,103, 0, 97,100,115, 0,116,105,109,101,115,108,105,100,101, 0, 42,103,114,112, 0,116,101,109, +112, 0,110, 97,109,101, 91, 51, 48, 93, 0,111,119,110,115,112, 97, 99,101, 0,116, 97,114,115,112, 97, 99,101, 0,101,110,102, +111,114, 99,101, 0,104,101, 97,100,116, 97,105,108, 0,108,105,110, 95,101,114,114,111,114, 0,114,111,116, 95,101,114,114,111, +114, 0, 42,116, 97,114, 0,109, 97,116,114,105,120, 91, 52, 93, 91, 52, 93, 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100, +101,114, 0,116, 97,114,110,117,109, 0,116, 97,114,103,101,116,115, 0,105,116,101,114, 97,116,105,111,110,115, 0,114,111,111, +116, 98,111,110,101, 0,109, 97,120, 95,114,111,111,116, 98,111,110,101, 0, 42,112,111,108,101,116, 97,114, 0,112,111,108,101, +115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112,111,108,101, 97,110,103,108,101, 0,111,114,105,101,110,116,119,101, +105,103,104,116, 0,103,114, 97, 98,116, 97,114,103,101,116, 91, 51, 93, 0,110,117,109,112,111,105,110,116,115, 0, 99,104, 97, +105,110,108,101,110, 0,120,122, 83, 99, 97,108,101, 77,111,100,101, 0,114,101,115,101,114,118,101,100, 49, 0,114,101,115,101, +114,118,101,100, 50, 0,109,105,110,109, 97,120,102,108, 97,103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0, +108,111, 99,107,102,108, 97,103, 0,102,111,108,108,111,119,102,108, 97,103, 0,118,111,108,109,111,100,101, 0,112,108, 97,110, +101, 0,111,114,103,108,101,110,103,116,104, 0, 98,117,108,103,101, 0,112,105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, + 0, 97,120, 88, 0, 97,120, 89, 0, 97,120, 90, 0,109,105,110, 76,105,109,105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105, +116, 91, 54, 93, 0,101,120,116,114, 97, 70,122, 0,105,110,118,109, 97,116, 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116, +111, 0,109, 97,112, 91, 51, 93, 0,101,120,112,111, 0,102,114,111,109, 95,109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, + 97,120, 91, 51, 93, 0,116,111, 95,109,105,110, 91, 51, 93, 0,116,111, 95,109, 97,120, 91, 51, 93, 0,114,111,116, 65,120,105, +115, 0,122,109,105,110, 0,122,109, 97,120, 0,112, 97,100, 91, 57, 93, 0, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,110, +111, 95,114,111,116, 95, 97,120,105,115, 0,115,116,114,105,100,101, 95, 97,120,105,115, 0, 99,117,114,109,111,100, 0, 97, 99, +116,115,116, 97,114,116, 0, 97, 99,116,101,110,100, 0, 97, 99,116,111,102,102,115, 0,115,116,114,105,100,101,108,101,110, 0, +115, 99, 97,108,101, 0, 98,108,101,110,100,111,117,116, 0,115,116,114,105,100,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, + 0,111,102,102,115, 95, 98,111,110,101, 91, 51, 50, 93, 0,104, 97,115,105,110,112,117,116, 0,104, 97,115,111,117,116,112,117, +116, 0,100, 97,116, 97,116,121,112,101, 0,115,111, 99,107,101,116,116,121,112,101, 0, 42,110,101,119, 95,115,111, 99,107, 0, +110,115, 0,108,105,109,105,116, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 0,105,110,116,101,114,110, 0,115,116, 97, 99, +107, 95,105,110,100,101,120, 95,101,120,116, 0,108,111, 99,120, 0,108,111, 99,121, 0,111,119,110, 95,105,110,100,101,120, 0, +116,111, 95,105,110,100,101,120, 0, 42,116,111,115,111, 99,107, 0, 42,108,105,110,107, 0, 42,110,101,119, 95,110,111,100,101, + 0,108, 97,115,116,121, 0,111,117,116,112,117,116,115, 0, 42,115,116,111,114, 97,103,101, 0,109,105,110,105,119,105,100,116, +104, 0, 99,117,115,116,111,109, 49, 0, 99,117,115,116,111,109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117,115,116,111,109, + 52, 0,110,101,101,100, 95,101,120,101, 99, 0,101,120,101, 99, 0, 42,116,104,114,101, 97,100,100, 97,116, 97, 0,116,111,116, +114, 0, 98,117,116,114, 0,112,114,118,114, 0, 42, 98,108,111, 99,107, 0, 42,116,121,112,101,105,110,102,111, 0, 42,102,114, +111,109,110,111,100,101, 0, 42,116,111,110,111,100,101, 0, 42,102,114,111,109,115,111, 99,107, 0,110,111,100,101,115, 0,108, +105,110,107,115, 0, 42,115,116, 97, 99,107, 0, 42,116,104,114,101, 97,100,115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, + 97, 99,107,115,105,122,101, 0, 99,117,114, 95,105,110,100,101,120, 0, 97,108,108,116,121,112,101,115, 0, 42,111,119,110,116, +121,112,101, 0,112, 97,100, 50, 91, 50, 93, 0, 40, 42,112,114,111,103,114,101,115,115, 41, 40, 41, 0, 40, 42,115,116, 97,116, +115, 95,100,114, 97,119, 41, 40, 41, 0, 40, 42,116,101,115,116, 95, 98,114,101, 97,107, 41, 40, 41, 0, 42,116, 98,104, 0, 42, +112,114,104, 0, 42,115,100,104, 0, 99,121, 99,108,105, 99, 0,109,111,118,105,101, 0,115, 97,109,112,108,101,115, 0,109,105, +110,115,112,101,101,100, 0,112,101,114, 99,101,110,116,120, 0,112,101,114, 99,101,110,116,121, 0, 98,111,107,101,104, 0,103, + 97,109,109, 97, 0, 99,117,114,118,101,100, 0,105,109, 97,103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109, 97,103,101, + 95,105,110, 95,104,101,105,103,104,116, 0, 99,101,110,116,101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,115,112,105, +110, 0,119,114, 97,112, 0,115,105,103,109, 97, 95, 99,111,108,111,114, 0,115,105,103,109, 97, 95,115,112, 97, 99,101, 0,104, +117,101, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116,114,101,110,103,116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, + 91, 52, 93, 0, 97,108,103,111,114,105,116,104,109, 0, 99,104, 97,110,110,101,108, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, + 50, 0, 99,111,108,110, 97,109,101, 91, 51, 50, 93, 0, 98,107,116,121,112,101, 0,114,111,116, 97,116,105,111,110, 0,103, 97, +109, 99,111, 0,110,111, 95,122, 98,117,102, 0,102,115,116,111,112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115, +104, 0, 42,100,105, 99,116, 0, 42,110,111,100,101, 0, 97,110,103,108,101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109, +105,120, 0,116,104,114,101,115,104,111,108,100, 0,102, 97,100,101, 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102, +105,116, 0,115,108,111,112,101, 91, 51, 93, 0,112,111,119,101,114, 91, 51, 93, 0,108,105,102,116, 95,108,103,103, 91, 51, 93, + 0,108,105,109, 99,104, 97,110, 0,117,110,115,112,105,108,108, 0,108,105,109,115, 99, 97,108,101, 0,117,115,112,105,108,108, +114, 0,117,115,112,105,108,108,103, 0,117,115,112,105,108,108, 98, 0,115,104,111,114,116,121, 0,109,105,110,116, 97, 98,108, +101, 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95,105,110, 91, 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, + 42, 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42,112,114,101,109,117,108,116, 97, 98,108,101, 0,112,114,101,115,101, +116, 0, 99,104, 97,110,103,101,100, 95,116,105,109,101,115,116, 97,109,112, 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99, +109, 91, 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, 0,119,104,105,116,101, 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0, +115, 97,109,112,108,101, 91, 51, 93, 0,120, 95,114,101,115,111,108,117,116,105,111,110, 0,100, 97,116, 97, 95,114, 91, 50, 53, + 54, 93, 0,100, 97,116, 97, 95,103, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95, 98, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95, +108,117,109, 97, 91, 50, 53, 54, 93, 0,115, 97,109,112,108,101, 95,102,117,108,108, 0,115, 97,109,112,108,101, 95,108,105,110, +101,115, 0, 97, 99, 99,117,114, 97, 99,121, 0,119, 97,118,101,102,114,109, 95,109,111,100,101, 0,119, 97,118,101,102,114,109, + 95, 97,108,112,104, 97, 0,119, 97,118,101,102,114,109, 95,121,102, 97, 99, 0,119, 97,118,101,102,114,109, 95,104,101,105,103, +104,116, 0,118,101, 99,115, 99,111,112,101, 95, 97,108,112,104, 97, 0,118,101, 99,115, 99,111,112,101, 95,104,101,105,103,104, +116, 0,109,105,110,109, 97,120, 91, 51, 93, 91, 50, 93, 0,104,105,115,116, 0, 42,119, 97,118,101,102,111,114,109, 95, 49, 0, + 42,119, 97,118,101,102,111,114,109, 95, 50, 0, 42,119, 97,118,101,102,111,114,109, 95, 51, 0, 42,118,101, 99,115, 99,111,112, +101, 0,119, 97,118,101,102,111,114,109, 95,116,111,116, 0,111,102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,109, +116,101,120, 0, 42,105, 99,111,110, 95,105,109, 98,117,102, 0,105, 99,111,110, 0,112, 97,100, 50, 91, 55, 93, 0,105, 99,111, +110, 95,102,105,108,101,112, 97,116,104, 91, 50, 52, 48, 93, 0,110,111,114,109, 97,108, 95,119,101,105,103,104,116, 0,106,105, +116,116,101,114, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,114, 97,100,105,117,115, 0,115,109,111,111,116,104, + 95,115,116,114,111,107,101, 95,102, 97, 99,116,111,114, 0,114, 97,116,101, 0,114,103, 98, 91, 51, 93, 0,115, 99,117,108,112, +116, 95,112,108, 97,110,101, 0,112,108, 97,110,101, 95,111,102,102,115,101,116, 0,115, 99,117,108,112,116, 95,116,111,111,108, + 0,118,101,114,116,101,120,112, 97,105,110,116, 95,116,111,111,108, 0,105,109, 97,103,101,112, 97,105,110,116, 95,116,111,111, +108, 0, 97,117,116,111,115,109,111,111,116,104, 95,102, 97, 99,116,111,114, 0, 99,114,101, 97,115,101, 95,112,105,110, 99,104, + 95,102, 97, 99,116,111,114, 0,112,108, 97,110,101, 95,116,114,105,109, 0,116,101,120,116,117,114,101, 95,115, 97,109,112,108, +101, 95, 98,105, 97,115, 0,116,101,120,116,117,114,101, 95,111,118,101,114,108, 97,121, 95, 97,108,112,104, 97, 0,117,110,112, +114,111,106,101, 99,116,101,100, 95,114, 97,100,105,117,115, 0, 97,100,100, 95, 99,111,108, 91, 51, 93, 0,115,117, 98, 95, 99, +111,108, 91, 51, 93, 0, 97, 99,116,105,118,101, 95,114,110,100, 0, 97, 99,116,105,118,101, 95, 99,108,111,110,101, 0, 97, 99, +116,105,118,101, 95,109, 97,115,107, 0, 42,108, 97,121,101,114,115, 0,116,111,116,108, 97,121,101,114, 0,109, 97,120,108, 97, +121,101,114, 0,116,111,116,115,105,122,101, 0, 42,112,111,111,108, 0, 42,101,120,116,101,114,110, 97,108, 0,118,101,108, 91, + 51, 93, 0,114,111,116, 91, 52, 93, 0, 97,118,101, 91, 51, 93, 0, 42,103,114,111,117,110,100, 0,119, 97,110,100,101,114, 91, + 51, 93, 0,110,117,109, 0,112, 97,114,101,110,116, 0,112, 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0, +102,111,102,102,115,101,116, 0,114,116, 91, 50, 93, 0,112,114,101,118, 95,115,116, 97,116,101, 0, 42,104, 97,105,114, 0, 42, + 98,111,105,100, 0,100,105,101,116,105,109,101, 0,110,117,109, 95,100,109, 99, 97, 99,104,101, 0,104, 97,105,114, 95,105,110, +100,101,120, 0, 97,108,105,118,101, 0,115,112,114,105,110,103, 95,107, 0,114,101,115,116, 95,108,101,110,103,116,104, 0,118, +105,115, 99,111,115,105,116,121, 95,111,109,101,103, 97, 0,118,105,115, 99,111,115,105,116,121, 95, 98,101,116, 97, 0,115,116, +105,102,102,110,101,115,115, 95,107, 0,115,116,105,102,102,110,101,115,115, 95,107,110,101, 97,114, 0,114,101,115,116, 95,100, +101,110,115,105,116,121, 0, 98,117,111,121, 97,110, 99,121, 0, 42, 98,111,105,100,115, 0, 42,102,108,117,105,100, 0,100,105, +115,116,114, 0,112,104,121,115,116,121,112,101, 0, 97,118,101,109,111,100,101, 0,114,101, 97, 99,116,101,118,101,110,116, 0, +100,114, 97,119, 0,100,114, 97,119, 95, 97,115, 0,100,114, 97,119, 95,115,105,122,101, 0, 99,104,105,108,100,116,121,112,101, + 0,114,101,110, 95, 97,115, 0,115,117, 98,102,114, 97,109,101,115, 0,114,101,110, 95,115,116,101,112, 0,104, 97,105,114, 95, +115,116,101,112, 0,107,101,121,115, 95,115,116,101,112, 0, 97,100, 97,112,116, 95, 97,110,103,108,101, 0, 97,100, 97,112,116, + 95,112,105,120, 0,114,111,116,102,114,111,109, 0,105,110,116,101,103,114, 97,116,111,114, 0, 98, 98, 95, 97,108,105,103,110, + 0, 98, 98, 95,117,118, 95,115,112,108,105,116, 0, 98, 98, 95, 97,110,105,109, 0, 98, 98, 95,115,112,108,105,116, 95,111,102, +102,115,101,116, 0, 98, 98, 95,116,105,108,116, 0, 98, 98, 95,114, 97,110,100, 95,116,105,108,116, 0, 98, 98, 95,111,102,102, +115,101,116, 91, 50, 93, 0,115,105,109,112,108,105,102,121, 95,114,101,102,115,105,122,101, 0,115,105,109,112,108,105,102,121, + 95,114, 97,116,101, 0,115,105,109,112,108,105,102,121, 95,116,114, 97,110,115,105,116,105,111,110, 0,115,105,109,112,108,105, +102,121, 95,118,105,101,119,112,111,114,116, 0,116,105,109,101,116,119,101, 97,107, 0,106,105,116,102, 97, 99, 0,101,102,102, + 95,104, 97,105,114, 0,103,114,105,100, 95,114,101,115, 0,112, 97,114,116,102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116, 97, +110,112,104, 97,115,101, 0,114,101, 97, 99,116,102, 97, 99, 0,111, 98, 95,118,101,108, 91, 51, 93, 0, 97,118,101,102, 97, 99, + 0,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,114,111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, + 99, 0,114, 97,110,100,115,105,122,101, 0,114,101, 97, 99,116,115,104, 97,112,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97, +103,102, 97, 99, 0, 98,114,111,119,110,102, 97, 99, 0,100, 97,109,112,102, 97, 99, 0,114, 97,110,100,108,101,110,103,116,104, + 0, 99,104,105,108,100, 95,110, 98,114, 0,114,101,110, 95, 99,104,105,108,100, 95,110, 98,114, 0,112, 97,114,101,110,116,115, + 0, 99,104,105,108,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,110,100,115,105,122,101, 0, 99,104,105,108,100,114, 97, +100, 0, 99,104,105,108,100,102,108, 97,116, 0, 99,108,117,109,112,112,111,119, 0,114,111,117,103,104, 49, 0,114,111,117,103, +104, 49, 95,115,105,122,101, 0,114,111,117,103,104, 50, 0,114,111,117,103,104, 50, 95,115,105,122,101, 0,114,111,117,103,104, + 50, 95,116,104,114,101,115, 0,114,111,117,103,104, 95,101,110,100, 0,114,111,117,103,104, 95,101,110,100, 95,115,104, 97,112, +101, 0, 99,108,101,110,103,116,104, 0, 99,108,101,110,103,116,104, 95,116,104,114,101,115, 0, 98,114, 97,110, 99,104, 95,116, +104,114,101,115, 0,100,114, 97,119, 95,108,105,110,101, 91, 50, 93, 0,112, 97,116,104, 95,115,116, 97,114,116, 0,112, 97,116, +104, 95,101,110,100, 0,116,114, 97,105,108, 95, 99,111,117,110,116, 0,107,101,121,101,100, 95,108,111,111,112,115, 0,100,117, +112,108,105,119,101,105,103,104,116,115, 0, 42,101,102,102, 95,103,114,111,117,112, 0, 42,100,117,112, 95,111, 98, 0, 42, 98, + 98, 95,111, 98, 0, 42,112,100, 50, 0, 42,112, 97,114,116, 0, 42,112, 97,114,116,105, 99,108,101,115, 0, 42, 42,112, 97,116, +104, 99, 97, 99,104,101, 0, 42, 42, 99,104,105,108,100, 99, 97, 99,104,101, 0,112, 97,116,104, 99, 97, 99,104,101, 98,117,102, +115, 0, 99,104,105,108,100, 99, 97, 99,104,101, 98,117,102,115, 0, 42, 99,108,109,100, 0, 42,104, 97,105,114, 95,105,110, 95, +100,109, 0, 42,104, 97,105,114, 95,111,117,116, 95,100,109, 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42,108, 97,116,116, +105, 99,101, 0,116,114,101,101, 95,102,114, 97,109,101, 0,116,111,116, 99,104,105,108,100, 0,116,111,116, 99, 97, 99,104,101, +100, 0,116,111,116, 99,104,105,108,100, 99, 97, 99,104,101, 0,116, 97,114,103,101,116, 95,112,115,121,115, 0,116,111,116,107, +101,121,101,100, 0, 98, 97,107,101,115,112, 97, 99,101, 0, 98, 98, 95,117,118,110, 97,109,101, 91, 51, 93, 91, 51, 50, 93, 0, +118,103,114,111,117,112, 91, 49, 50, 93, 0,118,103, 95,110,101,103, 0,114,116, 51, 0, 42,114,101,110,100,101,114,100, 97,116, + 97, 0, 42,101,102,102,101, 99,116,111,114,115, 0, 42,116,114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97,110,100, 0, 67, +100,105,115, 0, 67,118,105, 0,115,116,114,117, 99,116,117,114, 97,108, 0, 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98, +101,110,100, 0,109, 97,120, 95,115,116,114,117, 99,116, 0,109, 97,120, 95,115,104,101, 97,114, 0, 97,118,103, 95,115,112,114, +105,110,103, 95,108,101,110, 0,116,105,109,101,115, 99, 97,108,101, 0,101,102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108, +101, 0,101,102,102, 95,119,105,110,100, 95,115, 99, 97,108,101, 0,115,105,109, 95,116,105,109,101, 95,111,108,100, 0,118,101, +108,111, 99,105,116,121, 95,115,109,111,111,116,104, 0, 99,111,108,108,105,100,101,114, 95,102,114,105, 99,116,105,111,110, 0, +115,116,101,112,115, 80,101,114, 70,114, 97,109,101, 0,112,114,101,114,111,108,108, 0,109, 97,120,115,112,114,105,110,103,108, +101,110, 0,115,111,108,118,101,114, 95,116,121,112,101, 0,118,103,114,111,117,112, 95, 98,101,110,100, 0,118,103,114,111,117, +112, 95,109, 97,115,115, 0,118,103,114,111,117,112, 95,115,116,114,117, 99,116, 0,115,104, 97,112,101,107,101,121, 95,114,101, +115,116, 0,112,114,101,115,101,116,115, 0,114,101,115,101,116, 0, 42, 99,111,108,108,105,115,105,111,110, 95,108,105,115,116, + 0,101,112,115,105,108,111,110, 0,115,101,108,102, 95,102,114,105, 99,116,105,111,110, 0,115,101,108,102,101,112,115,105,108, +111,110, 0,115,101,108,102, 95,108,111,111,112, 95, 99,111,117,110,116, 0,108,111,111,112, 95, 99,111,117,110,116, 0,112,114, +101,115,115,117,114,101, 0,116,104,105, 99,107,110,101,115,115, 0,115,116,114,111,107,101,115, 0,102,114, 97,109,101,110,117, +109, 0, 42, 97, 99,116,102,114, 97,109,101, 0,103,115,116,101,112, 0,105,110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102, +102,101,114, 95,115,105,122,101, 0,115, 98,117,102,102,101,114, 95,115,102,108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, + 42,116,121,112,101,115,116,114, 0, 42,109,101,115,115, 97,103,101, 0,108,105,115,116, 0,112,114,105,110,116,108,101,118,101, +108, 0,115,116,111,114,101,108,101,118,101,108, 0, 42,114,101,112,111,114,116,116,105,109,101,114, 0,103,114,101,121,115, 99, + 97,108,101, 0,119,105,100,116,104,102, 97, 99, 0, 42,119,105,110,100,114, 97,119, 97, 98,108,101, 0, 42,119,105,110, 97, 99, +116,105,118,101, 0,119,105,110,100,111,119,115, 0,105,110,105,116,105, 97,108,105,122,101,100, 0,102,105,108,101, 95,115, 97, +118,101,100, 0,111,112, 95,117,110,100,111, 95,100,101,112,116,104, 0,111,112,101,114, 97,116,111,114,115, 0,113,117,101,117, +101, 0,114,101,112,111,114,116,115, 0,106,111, 98,115, 0,112, 97,105,110,116, 99,117,114,115,111,114,115, 0,100,114, 97,103, +115, 0,107,101,121, 99,111,110,102,105,103,115, 0, 42,100,101,102, 97,117,108,116, 99,111,110,102, 0,116,105,109,101,114,115, + 0, 42, 97,117,116,111,115, 97,118,101,116,105,109,101,114, 0, 42,103,104,111,115,116,119,105,110, 0,103,114, 97, 98, 99,117, +114,115,111,114, 0, 42,110,101,119,115, 99,114,101,101,110, 0,115, 99,114,101,101,110,110, 97,109,101, 91, 51, 50, 93, 0,112, +111,115,120, 0,112,111,115,121, 0,119,105,110,100,111,119,115,116, 97,116,101, 0,109,111,110,105,116,111,114, 0,108, 97,115, +116, 99,117,114,115,111,114, 0, 97,100,100,109,111,117,115,101,109,111,118,101, 0, 42,101,118,101,110,116,115,116, 97,116,101, + 0, 42, 99,117,114,115,119,105,110, 0, 42,116,119,101, 97,107, 0,100,114, 97,119,109,101,116,104,111,100, 0,100,114, 97,119, +102, 97,105,108, 0, 42,100,114, 97,119,100, 97,116, 97, 0,109,111,100, 97,108,104, 97,110,100,108,101,114,115, 0,115,117, 98, +119,105,110,100,111,119,115, 0,103,101,115,116,117,114,101, 0,105,100,110, 97,109,101, 91, 54, 52, 93, 0,112,114,111,112,118, + 97,108,117,101, 0,115,104,105,102,116, 0, 99,116,114,108, 0, 97,108,116, 0,111,115,107,101,121, 0,107,101,121,109,111,100, +105,102,105,101,114, 0,109, 97,112,116,121,112,101, 0, 42,112,116,114, 0,105,116,101,109,115, 0,115,112, 97, 99,101,105,100, + 0,114,101,103,105,111,110,105,100, 0,107,109,105, 95,105,100, 0, 40, 42,112,111,108,108, 41, 40, 41, 0, 42,109,111,100, 97, +108, 95,105,116,101,109,115, 0, 98, 97,115,101,110, 97,109,101, 91, 54, 52, 93, 0, 97, 99,116,107,101,121,109, 97,112, 0, 42, + 99,117,115,116,111,109,100, 97,116, 97, 0, 42,112,121, 95,105,110,115,116, 97,110, 99,101, 0, 42,114,101,112,111,114,116,115, + 0,109, 97, 99,114,111, 0, 42,111,112,109, 0, 42,101,100, 97,116, 97, 0,105,110,102,108,117,101,110, 99,101, 0, 42, 99,111, +101,102,102,105, 99,105,101,110,116,115, 0, 97,114,114, 97,121,115,105,122,101, 0,112,111,108,121, 95,111,114,100,101,114, 0, + 97,109,112,108,105,116,117,100,101, 0,112,104, 97,115,101, 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, 97,115,101, + 95,111,102,102,115,101,116, 0,118, 97,108,117,101, 95,111,102,102,115,101,116, 0,109,105,100,118, 97,108, 0, 98,101,102,111, +114,101, 95,109,111,100,101, 0, 97,102,116,101,114, 95,109,111,100,101, 0, 98,101,102,111,114,101, 95, 99,121, 99,108,101,115, + 0, 97,102,116,101,114, 95, 99,121, 99,108,101,115, 0,114,101, 99,116, 0,112,104, 97,115,101, 0,109,111,100,105,102,105, 99, + 97,116,105,111,110, 0,115,116,101,112, 95,115,105,122,101, 0, 42,114,110, 97, 95,112, 97,116,104, 0,112, 99,104, 97,110, 95, +110, 97,109,101, 91, 51, 50, 93, 0,116,114, 97,110,115, 67,104, 97,110, 0,105,100,116,121,112,101, 0,116, 97,114,103,101,116, +115, 91, 56, 93, 0,110,117,109, 95,116, 97,114,103,101,116,115, 0,118, 97,114,105, 97, 98,108,101,115, 0,101,120,112,114,101, +115,115,105,111,110, 91, 50, 53, 54, 93, 0, 42,101,120,112,114, 95, 99,111,109,112, 0,118,101, 99, 91, 50, 93, 0, 42,102,112, +116, 0, 97,114,114, 97,121, 95,105,110,100,101,120, 0, 99,111,108,111,114, 95,109,111,100,101, 0, 99,111,108,111,114, 91, 51, + 93, 0,102,114,111,109, 91, 49, 50, 56, 93, 0,116,111, 91, 49, 50, 56, 93, 0,109, 97,112,112,105,110,103,115, 0,115,116,114, +105,112,115, 0, 42,114,101,109, 97,112, 0,102, 99,117,114,118,101,115, 0,115,116,114,105,112, 95,116,105,109,101, 0, 98,108, +101,110,100,109,111,100,101, 0,101,120,116,101,110,100,109,111,100,101, 0,103,114,111,117,112, 91, 54, 52, 93, 0,103,114,111, +117,112,109,111,100,101, 0,107,101,121,105,110,103,102,108, 97,103, 0,112, 97,116,104,115, 0,116,121,112,101,105,110,102,111, + 91, 54, 52, 93, 0, 97, 99,116,105,118,101, 95,112, 97,116,104, 0, 42,116,109,112, 97, 99,116, 0,110,108, 97, 95,116,114, 97, + 99,107,115, 0, 42, 97, 99,116,115,116,114,105,112, 0,100,114,105,118,101,114,115, 0,111,118,101,114,114,105,100,101,115, 0, + 97, 99,116, 95, 98,108,101,110,100,109,111,100,101, 0, 97, 99,116, 95,101,120,116,101,110,100,109,111,100,101, 0, 97, 99,116, + 95,105,110,102,108,117,101,110, 99,101, 0,114,117,108,101, 0,111,112,116,105,111,110,115, 0,102,101, 97,114, 95,102, 97, 99, +116,111,114, 0,115,105,103,110, 97,108, 95,105,100, 0,108,111,111,107, 95, 97,104,101, 97,100, 0,111,108,111, 99, 91, 51, 93, + 0,113,117,101,117,101, 95,115,105,122,101, 0,119, 97,110,100,101,114, 0,102,108,101,101, 95,100,105,115,116, 97,110, 99,101, + 0,104,101, 97,108,116,104, 0,115,116, 97,116,101, 95,105,100, 0,114,117,108,101,115, 0, 99,111,110,100,105,116,105,111,110, +115, 0, 97, 99,116,105,111,110,115, 0,114,117,108,101,115,101,116, 95,116,121,112,101, 0,114,117,108,101, 95,102,117,122,122, +105,110,101,115,115, 0,108, 97,115,116, 95,115,116, 97,116,101, 95,105,100, 0,108, 97,110,100,105,110,103, 95,115,109,111,111, +116,104,110,101,115,115, 0, 98, 97,110,107,105,110,103, 0, 97,103,103,114,101,115,115,105,111,110, 0, 97,105,114, 95,109,105, +110, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, + 99, 0, 97,105,114, 95,109, 97,120, 95, 97,118,101, 0, 97,105,114, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, + 0,108, 97,110,100, 95,106,117,109,112, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95,115,112,101,101,100, 0, +108, 97,110,100, 95,109, 97,120, 95, 97, 99, 99, 0,108, 97,110,100, 95,109, 97,120, 95, 97,118,101, 0,108, 97,110,100, 95,112, +101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,115,116,105, 99,107, 95,102,111,114, 99,101, 0,115, +116, 97,116,101,115, 0, 42,115,109,100, 0, 42,102,108,117,105,100, 95,103,114,111,117,112, 0, 42, 99,111,108,108, 95,103,114, +111,117,112, 0, 42,119,116, 0, 42,116,101,120, 95,119,116, 0, 42,116,101,120, 95,115,104, 97,100,111,119, 0, 42,115,104, 97, +100,111,119, 0,112, 48, 91, 51, 93, 0,112, 49, 91, 51, 93, 0,100,120, 0,111,109,101,103, 97, 0,116,101,109,112, 65,109, 98, + 0, 98,101,116, 97, 0,114,101,115, 91, 51, 93, 0, 97,109,112,108,105,102,121, 0,109, 97,120,114,101,115, 0,118,105,101,119, +115,101,116,116,105,110,103,115, 0,110,111,105,115,101, 0,100,105,115,115, 95,112,101,114, 99,101,110,116, 0,100,105,115,115, + 95,115,112,101,101,100, 0,114,101,115, 95,119,116, 91, 51, 93, 0,100,120, 95,119,116, 0,118, 51,100,110,117,109, 0, 99, 97, + 99,104,101, 95, 99,111,109,112, 0, 99, 97, 99,104,101, 95,104,105,103,104, 95, 99,111,109,112, 0, 42,112,111,105,110,116, 95, + 99, 97, 99,104,101, 91, 50, 93, 0,112,116, 99, 97, 99,104,101,115, 91, 50, 93, 0,118,101,108,111, 99,105,116,121, 91, 51, 93, + 0,118,103,114,112, 95,104,101, 97,116, 95,115, 99, 97,108,101, 91, 50, 93, 0,118,103,114,111,117,112, 95,102,108,111,119, 0, +118,103,114,111,117,112, 95,100,101,110,115,105,116,121, 0,118,103,114,111,117,112, 95,104,101, 97,116, 0, 42,112,111,105,110, +116,115, 95,111,108,100, 0, 42,118,101,108, 0,109, 97,116, 95,111,108,100, 91, 52, 93, 91, 52, 93, 0, 0, 0, 84, 89, 80, 69, +212, 1, 0, 0, 99,104, 97,114, 0,117, 99,104, 97,114, 0,115,104,111,114,116, 0,117,115,104,111,114,116, 0,105,110,116, 0, +108,111,110,103, 0,117,108,111,110,103, 0,102,108,111, 97,116, 0,100,111,117, 98,108,101, 0,118,111,105,100, 0, 76,105,110, +107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76,105,115,116, 66, 97,115,101, 0,118,101, 99, 50,115, 0,118,101, 99, 50,102, 0, +118,101, 99, 50,105, 0,118,101, 99, 50,100, 0,118,101, 99, 51,105, 0,118,101, 99, 51,102, 0,118,101, 99, 51,100, 0,118,101, + 99, 52,105, 0,118,101, 99, 52,102, 0,118,101, 99, 52,100, 0,114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, 80,114,111,112, +101,114,116,121, 68, 97,116, 97, 0, 73, 68, 80,114,111,112,101,114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70, +105,108,101, 68, 97,116, 97, 0, 80,114,101,118,105,101,119, 73,109, 97,103,101, 0, 73,112,111, 68,114,105,118,101,114, 0, 79, + 98,106,101, 99,116, 0, 73,112,111, 67,117,114,118,101, 0, 66, 80,111,105,110,116, 0, 66,101,122, 84,114,105,112,108,101, 0, + 73,112,111, 0, 75,101,121, 66,108,111, 99,107, 0, 75,101,121, 0, 65,110,105,109, 68, 97,116, 97, 0, 84,101,120,116, 76,105, +110,101, 0, 84,101,120,116, 77, 97,114,107,101,114, 0, 84,101,120,116, 0, 80, 97, 99,107,101,100, 70,105,108,101, 0, 67, 97, +109,101,114, 97, 0, 73,109, 97,103,101, 85,115,101,114, 0, 83, 99,101,110,101, 0, 73,109, 97,103,101, 0, 71, 80, 85, 84,101, +120,116,117,114,101, 0, 97,110,105,109, 0, 82,101,110,100,101,114, 82,101,115,117,108,116, 0, 77, 84,101,120, 0, 84,101,120, + 0, 80,108,117,103,105,110, 84,101,120, 0, 67, 66, 68, 97,116, 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, 69,110,118, 77, + 97,112, 0, 73,109, 66,117,102, 0, 80,111,105,110,116, 68,101,110,115,105,116,121, 0, 86,111,120,101,108, 68, 97,116, 97, 0, + 98, 78,111,100,101, 84,114,101,101, 0, 84,101,120, 77, 97,112,112,105,110,103, 0, 76, 97,109,112, 0, 67,117,114,118,101, 77, + 97,112,112,105,110,103, 0, 87, 97,118,101, 0, 86,111,108,117,109,101, 83,101,116,116,105,110,103,115, 0, 77, 97,116,101,114, +105, 97,108, 0, 71,114,111,117,112, 0, 86, 70,111,110,116, 0, 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108, +101,109, 0, 66,111,117,110,100, 66,111,120, 0, 77,101,116, 97, 66, 97,108,108, 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110, +102,111, 0, 84,101,120,116, 66,111,120, 0, 67,117,114,118,101, 0, 80, 97,116,104, 0, 83,101,108, 66,111,120, 0, 69,100,105, +116, 70,111,110,116, 0, 77,101,115,104, 0, 77, 70, 97, 99,101, 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86, +101,114,116, 0, 77, 69,100,103,101, 0, 77, 68,101,102,111,114,109, 86,101,114,116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99, +107,121, 0, 77, 83,101,108,101, 99,116, 0, 69,100,105,116, 77,101,115,104, 0, 67,117,115,116,111,109, 68, 97,116, 97, 0, 77, +117,108,116,105,114,101,115, 0, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 0, 77, 68,101,102,111,114, +109, 87,101,105,103,104,116, 0, 77, 84,101,120, 80,111,108,121, 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111,111,112, 67,111, +108, 0, 77, 70,108,111, 97,116, 80,114,111,112,101,114,116,121, 0, 77, 73,110,116, 80,114,111,112,101,114,116,121, 0, 77, 83, +116,114,105,110,103, 80,114,111,112,101,114,116,121, 0, 79,114,105,103, 83,112, 97, 99,101, 70, 97, 99,101, 0, 77, 68,105,115, +112,115, 0, 77,117,108,116,105,114,101,115, 67,111,108, 0, 77,117,108,116,105,114,101,115, 67,111,108, 70, 97, 99,101, 0, 77, +117,108,116,105,114,101,115, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 69,100,103,101, 0, 77,117,108,116,105,114,101, +115, 76,101,118,101,108, 0, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,105,102, +105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,114,118, +101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,117,105,108,100, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, + 77, 97,115,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114,114, 97,121, 77,111,100,105,102,105,101,114, 68, 97, +116, 97, 0, 77,105,114,114,111,114, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,100,103,101, 83,112,108,105,116, 77, +111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,101,118,101,108, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 77, +101,115,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 77,111,100,105,102,105,101,114, 68, 97,116, + 97, 0, 83,109,111,107,101, 68,111,109, 97,105,110, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 70,108,111,119, 83, +101,116,116,105,110,103,115, 0, 83,109,111,107,101, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 68,105,115,112,108, 97, + 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 85, 86, 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,114, + 68, 97,116, 97, 0, 68,101, 99,105,109, 97,116,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,104, + 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67, 97,115,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87, 97, +118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114,109, 97,116,117,114,101, 77,111,100,105,102,105,101,114, 68, + 97,116, 97, 0, 72,111,111,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,100, +105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116, +104, 0, 67,108,111,116,104, 83,105,109, 83,101,116,116,105,110,103,115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,116, +105,110,103,115, 0, 80,111,105,110,116, 67, 97, 99,104,101, 0, 67,111,108,108,105,115,105,111,110, 77,111,100,105,102,105,101, +114, 68, 97,116, 97, 0, 66, 86, 72, 84,114,101,101, 0, 83,117,114,102, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, + 97, 0, 68,101,114,105,118,101,100, 77,101,115,104, 0, 66, 86, 72, 84,114,101,101, 70,114,111,109, 77,101,115,104, 0, 66,111, +111,108,101, 97,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101, 0, + 77, 68,101,102, 67,101,108,108, 0, 77,101,115,104, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, + 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, + 99,108,101, 83,121,115,116,101,109, 0, 80, 97,114,116,105, 99,108,101, 73,110,115,116, 97,110, 99,101, 77,111,100,105,102,105, +101,114, 68, 97,116, 97, 0, 69,120,112,108,111,100,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,117,108,116,105, +114,101,115, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 77,111,100,105,102,105,101,114, + 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 83,104,114,105,110,107,119,114, 97,112, + 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,105,109,112,108,101, 68,101,102,111,114,109, 77,111,100,105,102,105,101, +114, 68, 97,116, 97, 0, 83,104, 97,112,101, 75,101,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,108,105,100, +105,102,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83, 99,114,101,119, 77,111,100,105,102,105,101,114, 68, 97,116, + 97, 0, 76, 97,116,116,105, 99,101, 0, 98, 68,101,102,111,114,109, 71,114,111,117,112, 0, 83, 99,117,108,112,116, 83,101,115, +115,105,111,110, 0, 98, 65, 99,116,105,111,110, 0, 98, 80,111,115,101, 0, 98, 71, 80,100, 97,116, 97, 0, 98, 65,110,105,109, + 86,105,122, 83,101,116,116,105,110,103,115, 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 0, 66,117,108,108,101,116, 83,111, +102,116, 66,111,100,121, 0, 80, 97,114,116, 68,101,102,108,101, 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 79, 98, 72,111, +111,107, 0, 68,117,112,108,105, 79, 98,106,101, 99,116, 0, 82, 78, 71, 0, 69,102,102,101, 99,116,111,114, 87,101,105,103,104, +116,115, 0, 80, 84, 67, 97, 99,104,101, 77,101,109, 0, 80, 84, 67, 97, 99,104,101, 69,100,105,116, 0, 83, 66, 86,101,114,116, +101,120, 0, 66,111,100,121, 80,111,105,110,116, 0, 66,111,100,121, 83,112,114,105,110,103, 0, 83, 66, 83, 99,114, 97,116, 99, +104, 0, 87,111,114,108,100, 0, 66, 97,115,101, 0, 65,118,105, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116, +105,109,101, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 83,101,116,116,105, +110,103,115, 0, 70, 70, 77,112,101,103, 67,111,100,101, 99, 68, 97,116, 97, 0, 65,117,100,105,111, 68, 97,116, 97, 0, 83, 99, +101,110,101, 82,101,110,100,101,114, 76, 97,121,101,114, 0, 82,101,110,100,101,114, 68, 97,116, 97, 0, 82,101,110,100,101,114, + 80,114,111,102,105,108,101, 0, 71, 97,109,101, 68,111,109,101, 0, 71, 97,109,101, 70,114, 97,109,105,110,103, 0, 71, 97,109, +101, 68, 97,116, 97, 0, 84,105,109,101, 77, 97,114,107,101,114, 0, 80, 97,105,110,116, 0, 66,114,117,115,104, 0, 73,109, 97, +103,101, 80, 97,105,110,116, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 66,114,117,115,104, 68, 97,116, + 97, 0, 80, 97,114,116,105, 99,108,101, 69,100,105,116, 83,101,116,116,105,110,103,115, 0, 84,114, 97,110,115,102,111,114,109, + 79,114,105,101,110,116, 97,116,105,111,110, 0, 83, 99,117,108,112,116, 0, 86, 80, 97,105,110,116, 0, 84,111,111,108, 83,101, +116,116,105,110,103,115, 0, 98, 83,116, 97,116,115, 0, 85,110,105,116, 83,101,116,116,105,110,103,115, 0, 80,104,121,115,105, + 99,115, 83,101,116,116,105,110,103,115, 0, 69,100,105,116,105,110,103, 0, 83, 99,101,110,101, 83,116, 97,116,115, 0, 68, 97, +103, 70,111,114,101,115,116, 0, 66, 71,112,105, 99, 0, 82,101,103,105,111,110, 86,105,101,119, 51, 68, 0, 82,101,110,100,101, +114, 73,110,102,111, 0, 82,101,116,111,112,111, 86,105,101,119, 68, 97,116, 97, 0, 86,105,101,119, 68,101,112,116,104,115, 0, + 83,109,111,111,116,104, 86,105,101,119, 83,116,111,114,101, 0,119,109, 84,105,109,101,114, 0, 86,105,101,119, 51, 68, 0, 83, +112, 97, 99,101, 76,105,110,107, 0, 86,105,101,119, 50, 68, 0, 83,112, 97, 99,101, 73,110,102,111, 0, 98, 83, 99,114,101,101, +110, 0, 83,112, 97, 99,101, 73,112,111, 0, 98, 68,111,112,101, 83,104,101,101,116, 0, 83,112, 97, 99,101, 66,117,116,115, 0, + 83,112, 97, 99,101, 83,101,113, 0, 70,105,108,101, 83,101,108,101, 99,116, 80, 97,114, 97,109,115, 0, 83,112, 97, 99,101, 70, +105,108,101, 0, 70,105,108,101, 76,105,115,116, 0,119,109, 79,112,101,114, 97,116,111,114, 0, 70,105,108,101, 76, 97,121,111, +117,116, 0, 83,112, 97, 99,101, 79,111,112,115, 0, 84,114,101,101, 83,116,111,114,101, 0, 84,114,101,101, 83,116,111,114,101, + 69,108,101,109, 0, 83,112, 97, 99,101, 73,109, 97,103,101, 0, 83, 99,111,112,101,115, 0, 72,105,115,116,111,103,114, 97,109, + 0, 83,112, 97, 99,101, 78,108, 97, 0, 83,112, 97, 99,101, 84,101,120,116, 0, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, + 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 84,105,109,101, 67, 97, 99,104,101, 0, 83,112, 97, 99,101, 84,105,109,101, 0, + 83,112, 97, 99,101, 78,111,100,101, 0, 83,112, 97, 99,101, 76,111,103,105, 99, 0, 83,112, 97, 99,101, 73,109, 97, 83,101,108, + 0, 67,111,110,115,111,108,101, 76,105,110,101, 0, 83,112, 97, 99,101, 67,111,110,115,111,108,101, 0, 83,112, 97, 99,101, 85, +115,101,114, 80,114,101,102, 0,117,105, 70,111,110,116, 0,117,105, 70,111,110,116, 83,116,121,108,101, 0,117,105, 83,116,121, +108,101, 0,117,105, 87,105,100,103,101,116, 67,111,108,111,114,115, 0,117,105, 87,105,100,103,101,116, 83,116, 97,116,101, 67, +111,108,111,114,115, 0, 84,104,101,109,101, 85, 73, 0, 84,104,101,109,101, 83,112, 97, 99,101, 0, 84,104,101,109,101, 87,105, +114,101, 67,111,108,111,114, 0, 98, 84,104,101,109,101, 0, 98, 65,100,100,111,110, 0, 83,111,108,105,100, 76,105,103,104,116, + 0, 85,115,101,114, 68,101,102, 0, 83, 99,114, 86,101,114,116, 0, 83, 99,114, 69,100,103,101, 0, 80, 97,110,101,108, 0, 80, + 97,110,101,108, 84,121,112,101, 0,117,105, 76, 97,121,111,117,116, 0, 83, 99,114, 65,114,101, 97, 0, 83,112, 97, 99,101, 84, +121,112,101, 0, 65, 82,101,103,105,111,110, 0, 65, 82,101,103,105,111,110, 84,121,112,101, 0, 70,105,108,101, 71,108,111, 98, + 97,108, 0, 83,116,114,105,112, 69,108,101,109, 0, 84, 83,116,114,105,112, 69,108,101,109, 0, 83,116,114,105,112, 67,114,111, +112, 0, 83,116,114,105,112, 84,114, 97,110,115,102,111,114,109, 0, 83,116,114,105,112, 67,111,108,111,114, 66, 97,108, 97,110, + 99,101, 0, 83,116,114,105,112, 80,114,111,120,121, 0, 83,116,114,105,112, 0, 80,108,117,103,105,110, 83,101,113, 0, 83,101, +113,117,101,110, 99,101, 0, 98, 83,111,117,110,100, 0, 77,101,116, 97, 83,116, 97, 99,107, 0, 87,105,112,101, 86, 97,114,115, + 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, 97,110,115,102,111,114,109, 86, 97,114,115, 0, 83,111,108,105,100, 67,111,108, +111,114, 86, 97,114,115, 0, 83,112,101,101,100, 67,111,110,116,114,111,108, 86, 97,114,115, 0, 69,102,102,101, 99,116, 0, 66, +117,105,108,100, 69,102,102, 0, 80, 97,114,116, 69,102,102, 0, 80, 97,114,116,105, 99,108,101, 0, 87, 97,118,101, 69,102,102, + 0, 98, 80,114,111,112,101,114,116,121, 0, 98, 78,101, 97,114, 83,101,110,115,111,114, 0, 98, 77,111,117,115,101, 83,101,110, +115,111,114, 0, 98, 84,111,117, 99,104, 83,101,110,115,111,114, 0, 98, 75,101,121, 98,111, 97,114,100, 83,101,110,115,111,114, + 0, 98, 80,114,111,112,101,114,116,121, 83,101,110,115,111,114, 0, 98, 65, 99,116,117, 97,116,111,114, 83,101,110,115,111,114, + 0, 98, 68,101,108, 97,121, 83,101,110,115,111,114, 0, 98, 67,111,108,108,105,115,105,111,110, 83,101,110,115,111,114, 0, 98, + 82, 97,100, 97,114, 83,101,110,115,111,114, 0, 98, 82, 97,110,100,111,109, 83,101,110,115,111,114, 0, 98, 82, 97,121, 83,101, +110,115,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 83,101,110,115,111,114, 0, 98, 77,101,115,115, 97,103,101, 83,101,110, +115,111,114, 0, 98, 83,101,110,115,111,114, 0, 98, 67,111,110,116,114,111,108,108,101,114, 0, 98, 74,111,121,115,116,105, 99, +107, 83,101,110,115,111,114, 0, 98, 69,120,112,114,101,115,115,105,111,110, 67,111,110,116, 0, 98, 80,121,116,104,111,110, 67, +111,110,116, 0, 98, 65, 99,116,117, 97,116,111,114, 0, 98, 65,100,100, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, + 0, 98, 65, 99,116,105,111,110, 65, 99,116,117, 97,116,111,114, 0, 98, 83,111,117,110,100, 65, 99,116,117, 97,116,111,114, 0, + 83,111,117,110,100, 51, 68, 0, 98, 69,100,105,116, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83, 99,101, +110,101, 65, 99,116,117, 97,116,111,114, 0, 98, 80,114,111,112,101,114,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 79, 98, +106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 73,112,111, 65, 99,116,117, 97,116,111,114, 0, 98, 67, 97,109,101,114, + 97, 65, 99,116,117, 97,116,111,114, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 71, +114,111,117,112, 65, 99,116,117, 97,116,111,114, 0, 98, 82, 97,110,100,111,109, 65, 99,116,117, 97,116,111,114, 0, 98, 77,101, +115,115, 97,103,101, 65, 99,116,117, 97,116,111,114, 0, 98, 71, 97,109,101, 65, 99,116,117, 97,116,111,114, 0, 98, 86,105,115, +105, 98,105,108,105,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 84,119,111, 68, 70,105,108,116,101,114, 65, 99,116,117, 97, +116,111,114, 0, 98, 80, 97,114,101,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83,116, 97,116,101, 65, 99,116,117, 97,116, +111,114, 0, 98, 65,114,109, 97,116,117,114,101, 65, 99,116,117, 97,116,111,114, 0, 70,114,101,101, 67, 97,109,101,114, 97, 0, + 83,112, 97, 99,101, 83,111,117,110,100, 0, 71,114,111,117,112, 79, 98,106,101, 99,116, 0, 66,111,110,101, 0, 98, 65,114,109, + 97,116,117,114,101, 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 86,101,114,116, 0, 98, 80,111,115,101, 67,104, 97,110,110, +101,108, 0, 71, 72, 97,115,104, 0, 98, 73, 75, 80, 97,114, 97,109, 0, 98, 73,116, 97,115, 99, 0, 98, 65, 99,116,105,111,110, + 71,114,111,117,112, 0, 83,112, 97, 99,101, 65, 99,116,105,111,110, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110,101,108, + 0, 98, 67,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 0, + 98, 67,111,110,115,116,114, 97,105,110,116, 84, 97,114,103,101,116, 0, 98, 80,121,116,104,111,110, 67,111,110,115,116,114, 97, +105,110,116, 0, 98, 75,105,110,101,109, 97,116,105, 99, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,112,108,105,110,101, + 73, 75, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97, 99,107, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, + 98, 82,111,116, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,105,107, +101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, + 98, 83, 97,109,101, 86,111,108,117,109,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115, 76,105,107,101, + 67,111,110,115,116,114, 97,105,110,116, 0, 98, 77,105,110, 77, 97,120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99, +116,105,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99,107, 84,114, 97, 99,107, 67,111,110,115,116,114, 97, +105,110,116, 0, 98, 68, 97,109,112, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, + 80, 97,116,104, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,116,114,101,116, 99,104, 84,111, 67,111,110,115,116,114, 97, +105,110,116, 0, 98, 82,105,103,105,100, 66,111,100,121, 74,111,105,110,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67, +108, 97,109,112, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,104,105,108,100, 79,102, 67,111,110,115,116,114, 97, +105,110,116, 0, 98, 84,114, 97,110,115,102,111,114,109, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 80,105,118,111,116, 67, +111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82, +111,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,109,105,116, 67,111,110,115, +116,114, 97,105,110,116, 0, 98, 68,105,115,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,104,114, +105,110,107,119,114, 97,112, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 77,111,100,105,102,105,101, +114, 0, 98, 65, 99,116,105,111,110, 83,116,114,105,112, 0, 98, 78,111,100,101, 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83, +111, 99,107,101,116, 0, 98, 78,111,100,101, 76,105,110,107, 0, 98, 78,111,100,101, 0, 98, 78,111,100,101, 80,114,101,118,105, +101,119, 0,117,105, 66,108,111, 99,107, 0, 98, 78,111,100,101, 84,121,112,101, 0, 78,111,100,101, 73,109, 97,103,101, 65,110, +105,109, 0, 78,111,100,101, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111, +100,101, 66,105,108, 97,116,101,114, 97,108, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 72,117,101, 83, 97,116, 0, 78, +111,100,101, 73,109, 97,103,101, 70,105,108,101, 0, 78,111,100,101, 67,104,114,111,109, 97, 0, 78,111,100,101, 84,119,111, 88, + 89,115, 0, 78,111,100,101, 84,119,111, 70,108,111, 97,116,115, 0, 78,111,100,101, 71,101,111,109,101,116,114,121, 0, 78,111, +100,101, 86,101,114,116,101,120, 67,111,108, 0, 78,111,100,101, 68,101,102,111, 99,117,115, 0, 78,111,100,101, 83, 99,114,105, +112,116, 68,105, 99,116, 0, 78,111,100,101, 71,108, 97,114,101, 0, 78,111,100,101, 84,111,110,101,109, 97,112, 0, 78,111,100, +101, 76,101,110,115, 68,105,115,116, 0, 78,111,100,101, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 78,111,100,101, 67, +111,108,111,114,115,112,105,108,108, 0, 84,101,120, 78,111,100,101, 79,117,116,112,117,116, 0, 67,117,114,118,101, 77, 97,112, + 80,111,105,110,116, 0, 67,117,114,118,101, 77, 97,112, 0, 66,114,117,115,104, 67,108,111,110,101, 0, 67,117,115,116,111,109, + 68, 97,116, 97, 76, 97,121,101,114, 0, 67,117,115,116,111,109, 68, 97,116, 97, 69,120,116,101,114,110, 97,108, 0, 72, 97,105, +114, 75,101,121, 0, 80, 97,114,116,105, 99,108,101, 75,101,121, 0, 66,111,105,100, 80, 97,114,116,105, 99,108,101, 0, 66,111, +105,100, 68, 97,116, 97, 0, 67,104,105,108,100, 80, 97,114,116,105, 99,108,101, 0, 80, 97,114,116,105, 99,108,101, 84, 97,114, +103,101,116, 0, 80, 97,114,116,105, 99,108,101, 68,117,112,108,105, 87,101,105,103,104,116, 0, 80, 97,114,116,105, 99,108,101, + 68, 97,116, 97, 0, 83, 80, 72, 70,108,117,105,100, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 83,101, +116,116,105,110,103,115, 0, 66,111,105,100, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 67, 97, 99,104, +101, 75,101,121, 0, 75, 68, 84,114,101,101, 0, 80, 97,114,116,105, 99,108,101, 68,114, 97,119, 68, 97,116, 97, 0, 76,105,110, +107, 78,111,100,101, 0, 98, 71, 80, 68,115,112,111,105,110,116, 0, 98, 71, 80, 68,115,116,114,111,107,101, 0, 98, 71, 80, 68, +102,114, 97,109,101, 0, 98, 71, 80, 68,108, 97,121,101,114, 0, 82,101,112,111,114,116, 0, 82,101,112,111,114,116, 76,105,115, +116, 0, 82,101,112,111,114,116, 84,105,109,101,114, 73,110,102,111, 0,119,109, 87,105,110,100,111,119, 77, 97,110, 97,103,101, +114, 0,119,109, 87,105,110,100,111,119, 0,119,109, 75,101,121, 67,111,110,102,105,103, 0,119,109, 69,118,101,110,116, 0,119, +109, 83,117, 98, 87,105,110,100,111,119, 0,119,109, 71,101,115,116,117,114,101, 0,119,109, 75,101,121, 77, 97,112, 73,116,101, +109, 0, 80,111,105,110,116,101,114, 82, 78, 65, 0,119,109, 75,101,121, 77, 97,112, 0,119,109, 79,112,101,114, 97,116,111,114, + 84,121,112,101, 0, 70, 77,111,100,105,102,105,101,114, 0, 70, 77,111,100, 95, 71,101,110,101,114, 97,116,111,114, 0, 70, 77, +111,100, 95, 70,117,110, 99,116,105,111,110, 71,101,110,101,114, 97,116,111,114, 0, 70, 67, 77, 95, 69,110,118,101,108,111,112, +101, 68, 97,116, 97, 0, 70, 77,111,100, 95, 69,110,118,101,108,111,112,101, 0, 70, 77,111,100, 95, 67,121, 99,108,101,115, 0, + 70, 77,111,100, 95, 80,121,116,104,111,110, 0, 70, 77,111,100, 95, 76,105,109,105,116,115, 0, 70, 77,111,100, 95, 78,111,105, +115,101, 0, 70, 77,111,100, 95, 83,116,101,112,112,101,100, 0, 68,114,105,118,101,114, 84, 97,114,103,101,116, 0, 68,114,105, +118,101,114, 86, 97,114, 0, 67,104, 97,110,110,101,108, 68,114,105,118,101,114, 0, 70, 80,111,105,110,116, 0, 70, 67,117,114, +118,101, 0, 65,110,105,109, 77, 97,112, 80, 97,105,114, 0, 65,110,105,109, 77, 97,112,112,101,114, 0, 78,108, 97, 83,116,114, +105,112, 0, 78,108, 97, 84,114, 97, 99,107, 0, 75, 83, 95, 80, 97,116,104, 0, 75,101,121,105,110,103, 83,101,116, 0, 65,110, +105,109, 79,118,101,114,114,105,100,101, 0, 73,100, 65,100,116, 84,101,109,112,108, 97,116,101, 0, 66,111,105,100, 82,117,108, +101, 0, 66,111,105,100, 82,117,108,101, 71,111, 97,108, 65,118,111,105,100, 0, 66,111,105,100, 82,117,108,101, 65,118,111,105, +100, 67,111,108,108,105,115,105,111,110, 0, 66,111,105,100, 82,117,108,101, 70,111,108,108,111,119, 76,101, 97,100,101,114, 0, + 66,111,105,100, 82,117,108,101, 65,118,101,114, 97,103,101, 83,112,101,101,100, 0, 66,111,105,100, 82,117,108,101, 70,105,103, +104,116, 0, 66,111,105,100, 83,116, 97,116,101, 0, 70, 76, 85, 73, 68, 95, 51, 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, + 69, 0, 0, 0, 84, 76, 69, 78, 1, 0, 1, 0, 2, 0, 2, 0, 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 0, 0, 8, 0, 12, 0, + 8, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, 12, 0, 24, 0, 16, 0, 16, 0, 32, 0, 16, 0, 16, 0, 20, 0, 76, 0, 52, 0, + 40, 2, 0, 0, 32, 0,140, 0,220, 3, 92, 0, 36, 0, 56, 0, 84, 0,112, 0,124, 0, 56, 0, 24, 0, 40, 0,120, 0, 12, 0, +104, 0, 36, 0,120, 5,156, 1, 0, 0, 0, 0, 0, 0, 8, 1, 48, 1, 84, 1, 24, 0, 8, 3,168, 0, 0, 0, 72, 0, 32, 1, +152, 0,132, 0,108, 1, 16, 1, 56, 0, 88, 0,160, 2, 76, 0, 60, 1, 0, 0,108, 0,104, 0,148, 0, 56, 0, 8, 0, 16, 0, + 92, 1, 0, 0, 0, 0, 0, 0, 40, 1, 20, 0, 44, 0, 60, 0, 24, 0, 12, 0, 12, 0, 4, 0, 8, 0, 8, 0, 0, 0, 28, 0, + 84, 0, 32, 0, 8, 0, 12, 0, 8, 0, 8, 0, 4, 0, 4, 0, 0, 1, 32, 0, 12, 0, 16, 0, 64, 0, 24, 0, 12, 0, 40, 0, + 64, 0, 80, 0,100, 0,108, 0, 80, 0,108, 0,128, 0, 76, 0, 72, 0,120, 0, 72, 0, 84, 0,188, 0, 48, 0,168, 0,160, 0, +172, 0, 72, 0,104, 0,116, 0,196, 0,112, 0,224, 0, 64, 0, 92, 0, 0, 0,144, 0, 32, 0,240, 1,112, 0, 0, 0, 88, 0, + 0, 0, 0, 0, 76, 0, 8, 0, 8, 0,244, 0, 88, 0,124, 1, 84, 0, 76, 0, 72, 0, 72, 0,176, 1,120, 0,116, 0, 64, 0, +120, 0, 92, 0,220, 0, 40, 0, 0, 0, 92, 0,148, 0, 72, 0, 48, 0, 20, 0,120, 0,144, 0, 88, 1,208, 0,180, 0, 0, 0, + 68, 0, 92, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,120, 1, 28, 0,176, 0,144, 0, 64, 0, 60, 0, 24, 0, 72, 0,232, 3, + 56, 0, 20, 0, 16, 0,100, 0, 84, 0, 24, 0,196, 2, 44, 0, 16, 0,156, 0, 80, 0, 96, 0, 44, 0,144, 1, 32, 0, 8, 0, + 24, 0, 56, 2, 0, 0, 0, 0, 72, 0, 72, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 0, 40, 0,140, 0, 48, 0,140, 0, +208, 0, 24, 0,216, 0,216, 0,200, 1, 60, 0, 0, 0,120, 0, 0, 0,252, 0, 12, 0, 12, 0, 24, 33,112, 16, 24, 16,192, 0, +124, 2, 80, 2, 40, 0, 36, 0,188, 0,244, 0, 52, 0,140, 2, 28, 0,112, 1, 88, 0, 16, 1, 32, 0,224, 0, 32, 0, 32, 0, +112, 2,104, 1, 16, 0, 48, 29, 72, 0, 56, 0,248, 12, 20, 0, 24, 0, 64, 1, 0, 0, 0, 0, 96, 0, 0, 0,248, 0, 0, 0, + 16, 1, 80, 0, 28, 0, 16, 0, 8, 0, 44, 0,252, 0,240, 0,168, 1,216, 0, 92, 1, 16, 0, 12, 0, 24, 0, 52, 0, 16, 0, + 20, 0, 16, 0, 24, 0, 56, 1, 0, 0, 56, 0, 52, 0, 48, 0, 8, 0, 44, 0, 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, + 40, 0,108, 0, 72, 0, 68, 0, 76, 0, 80, 0, 60, 0,128, 0, 76, 0, 60, 0, 12, 0, 92, 0, 68, 0, 32, 0, 80, 0, 16, 0, + 76, 0,108, 0, 84, 0, 28, 0, 96, 0, 56, 0, 56, 0,108, 0,140, 0, 4, 0, 20, 0, 12, 0, 8, 0, 80, 0, 40, 0,188, 0, + 24, 0, 16, 1,144, 0, 16, 0,204, 1, 0, 0, 4, 0, 40, 0,104, 0,216, 0, 64, 0, 44, 0, 72, 0,116, 0, 60, 0,112, 0, + 16, 0, 52, 0, 44, 0, 44, 0, 44, 0, 8, 0, 36, 0, 68, 0, 64, 0, 44, 0, 44, 0, 20, 0, 52, 0, 96, 0, 12, 0,108, 0, + 92, 0, 52, 0, 28, 0, 28, 0, 28, 0, 52, 0, 20, 0, 60, 0,140, 0, 36, 0,120, 0, 32, 0,180, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, 44, 0, 8, 0, 8, 0, 64, 0, 32, 0, 24, 0, 8, 0, 24, 0, 32, 0, 8, 0, + 84, 0, 20, 0, 32, 0, 12, 0, 44, 0, 20, 0, 68, 0,240, 0, 24, 0, 56, 0, 52, 0, 20, 0, 64, 0, 28, 0, 20, 0,180, 0, + 36, 0,200, 1, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 20, 0, 24, 0,172, 0, 24, 0, 28, 0, 20, 0,168, 0,148, 0, +152, 0, 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 96, 0, 0, 0, 88, 0, 20, 0, 24, 0, 16, 0, 20, 0, 8, 0, 8, 0, 24, 0, + 20, 0, 20, 0, 48, 0,208, 1, 28, 1, 16, 0, 68, 0, 0, 1, 20, 0,160, 0, 88, 0, 96, 0,152, 0, 20, 0, 56, 0, 48, 0, + 68, 0, 56, 0, 92, 0, 64, 0, 56, 0, 96, 0, 0, 0, 0, 0, 83, 84, 82, 67,153, 1, 0, 0, 10, 0, 2, 0, 10, 0, 0, 0, + 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0, 11, 0, 1, 0, 9, 0, 2, 0, 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4, 0, + 13, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0, 14, 0, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0, 15, 0, 2, 0, 4, 0, 5, 0, + 4, 0, 6, 0, 16, 0, 2, 0, 8, 0, 5, 0, 8, 0, 6, 0, 17, 0, 3, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, + 18, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 19, 0, 3, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, + 20, 0, 4, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 4, 0, 8, 0, 21, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, + 7, 0, 7, 0, 7, 0, 8, 0, 22, 0, 4, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 8, 0, 8, 0, 23, 0, 4, 0, + 4, 0, 9, 0, 4, 0, 10, 0, 4, 0, 11, 0, 4, 0, 12, 0, 24, 0, 4, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, + 7, 0, 12, 0, 25, 0, 4, 0, 9, 0, 13, 0, 12, 0, 14, 0, 4, 0, 15, 0, 4, 0, 16, 0, 26, 0, 10, 0, 26, 0, 0, 0, + 26, 0, 1, 0, 0, 0, 17, 0, 0, 0, 18, 0, 2, 0, 19, 0, 0, 0, 20, 0, 4, 0, 21, 0, 25, 0, 22, 0, 4, 0, 23, 0, + 4, 0, 24, 0, 27, 0, 9, 0, 9, 0, 0, 0, 9, 0, 1, 0, 27, 0, 25, 0, 28, 0, 26, 0, 0, 0, 27, 0, 2, 0, 28, 0, + 2, 0, 19, 0, 4, 0, 29, 0, 26, 0, 30, 0, 28, 0, 8, 0, 27, 0, 31, 0, 27, 0, 32, 0, 29, 0, 33, 0, 0, 0, 34, 0, + 0, 0, 35, 0, 4, 0, 36, 0, 4, 0, 37, 0, 28, 0, 38, 0, 30, 0, 5, 0, 4, 0, 39, 0, 4, 0, 40, 0, 2, 0, 41, 0, + 2, 0, 42, 0, 4, 0, 43, 0, 31, 0, 6, 0, 32, 0, 44, 0, 2, 0, 45, 0, 2, 0, 46, 0, 2, 0, 17, 0, 2, 0, 19, 0, + 0, 0, 47, 0, 33, 0, 21, 0, 33, 0, 0, 0, 33, 0, 1, 0, 34, 0, 48, 0, 35, 0, 49, 0, 24, 0, 50, 0, 24, 0, 51, 0, + 2, 0, 45, 0, 2, 0, 46, 0, 2, 0, 52, 0, 2, 0, 53, 0, 2, 0, 54, 0, 2, 0, 55, 0, 2, 0, 19, 0, 2, 0, 56, 0, + 7, 0, 11, 0, 7, 0, 12, 0, 4, 0, 57, 0, 7, 0, 58, 0, 7, 0, 59, 0, 7, 0, 60, 0, 31, 0, 61, 0, 36, 0, 7, 0, + 27, 0, 31, 0, 12, 0, 62, 0, 24, 0, 63, 0, 2, 0, 45, 0, 2, 0, 64, 0, 2, 0, 65, 0, 2, 0, 37, 0, 37, 0, 16, 0, + 37, 0, 0, 0, 37, 0, 1, 0, 7, 0, 66, 0, 7, 0, 60, 0, 2, 0, 17, 0, 2, 0, 46, 0, 2, 0, 67, 0, 2, 0, 19, 0, + 4, 0, 68, 0, 4, 0, 69, 0, 9, 0, 2, 0, 7, 0, 70, 0, 0, 0, 20, 0, 0, 0, 71, 0, 7, 0, 72, 0, 7, 0, 73, 0, + 38, 0, 13, 0, 27, 0, 31, 0, 39, 0, 74, 0, 37, 0, 75, 0, 0, 0, 76, 0, 4, 0, 77, 0, 7, 0, 60, 0, 12, 0, 78, 0, + 36, 0, 79, 0, 27, 0, 80, 0, 2, 0, 17, 0, 2, 0, 81, 0, 2, 0, 82, 0, 2, 0, 19, 0, 40, 0, 6, 0, 40, 0, 0, 0, + 40, 0, 1, 0, 0, 0, 83, 0, 0, 0, 84, 0, 4, 0, 23, 0, 4, 0, 85, 0, 41, 0, 10, 0, 41, 0, 0, 0, 41, 0, 1, 0, + 4, 0, 86, 0, 4, 0, 87, 0, 4, 0, 88, 0, 4, 0, 89, 0, 4, 0, 14, 0, 4, 0, 90, 0, 0, 0, 91, 0, 0, 0, 92, 0, + 42, 0, 15, 0, 27, 0, 31, 0, 0, 0, 93, 0, 4, 0, 90, 0, 4, 0, 94, 0, 12, 0, 95, 0, 40, 0, 96, 0, 40, 0, 97, 0, + 4, 0, 98, 0, 4, 0, 99, 0, 12, 0,100, 0, 0, 0,101, 0, 4, 0,102, 0, 4, 0,103, 0, 9, 0,104, 0, 8, 0,105, 0, + 43, 0, 3, 0, 4, 0,106, 0, 4, 0,107, 0, 9, 0, 2, 0, 44, 0, 15, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 7, 0,108, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0,111, 0, 7, 0,112, 0, 7, 0,113, 0, 7, 0,114, 0, + 7, 0,115, 0, 7, 0,116, 0, 36, 0, 79, 0, 32, 0,117, 0, 45, 0, 13, 0, 4, 0,118, 0, 4, 0,119, 0, 4, 0,120, 0, + 4, 0,121, 0, 2, 0,122, 0, 2, 0,123, 0, 2, 0, 19, 0, 2, 0,124, 0, 2, 0,125, 0, 2, 0,126, 0, 2, 0,127, 0, + 2, 0,128, 0, 46, 0,129, 0, 47, 0, 32, 0, 27, 0, 31, 0, 0, 0, 34, 0, 12, 0,130, 0, 48, 0,131, 0, 49, 0,132, 0, + 50, 0,133, 0, 50, 0,134, 0, 2, 0,135, 0, 2, 0,136, 0, 2, 0,124, 0, 2, 0, 19, 0, 2, 0,137, 0, 2, 0, 17, 0, + 4, 0,138, 0, 2, 0,139, 0, 2, 0,140, 0, 2, 0,141, 0, 2, 0,142, 0, 2, 0,143, 0, 2, 0,144, 0, 4, 0,145, 0, + 4, 0,146, 0, 43, 0,147, 0, 30, 0,148, 0, 7, 0,149, 0, 4, 0,150, 0, 2, 0,151, 0, 2, 0,152, 0, 2, 0,153, 0, + 2, 0,154, 0, 7, 0,155, 0, 7, 0,156, 0, 51, 0, 63, 0, 2, 0,157, 0, 2, 0,158, 0, 2, 0,159, 0, 2, 0,160, 0, + 32, 0,161, 0, 52, 0,162, 0, 0, 0,163, 0, 0, 0,164, 0, 0, 0,165, 0, 0, 0,166, 0, 0, 0,167, 0, 7, 0,168, 0, + 7, 0,169, 0, 7, 0,170, 0, 2, 0,171, 0, 2, 0,172, 0, 2, 0,173, 0, 2, 0,174, 0, 2, 0,175, 0, 2, 0,176, 0, + 0, 0,177, 0, 0, 0,178, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0, 56, 0, + 7, 0,184, 0, 7, 0,185, 0, 7, 0,186, 0, 7, 0,187, 0, 7, 0,188, 0, 7, 0,189, 0, 7, 0,190, 0, 7, 0,191, 0, + 7, 0,192, 0, 7, 0,193, 0, 7, 0,194, 0, 7, 0,195, 0, 7, 0,196, 0, 7, 0,197, 0, 7, 0,198, 0, 7, 0,199, 0, + 7, 0,200, 0, 7, 0,201, 0, 7, 0,202, 0, 7, 0,203, 0, 7, 0,204, 0, 7, 0,205, 0, 7, 0,206, 0, 7, 0,207, 0, + 7, 0,208, 0, 7, 0,209, 0, 7, 0,210, 0, 7, 0,211, 0, 7, 0,212, 0, 7, 0,213, 0, 7, 0,214, 0, 7, 0,215, 0, + 7, 0,216, 0, 7, 0,217, 0, 7, 0,218, 0, 53, 0, 15, 0, 0, 0,219, 0, 9, 0,220, 0, 0, 0,221, 0, 0, 0,222, 0, + 4, 0,223, 0, 4, 0,224, 0, 9, 0,225, 0, 7, 0,226, 0, 7, 0,227, 0, 7, 0,228, 0, 4, 0,229, 0, 9, 0,230, 0, + 9, 0,231, 0, 4, 0,232, 0, 4, 0, 37, 0, 54, 0, 6, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,233, 0, + 7, 0, 66, 0, 4, 0, 63, 0, 55, 0, 5, 0, 2, 0, 19, 0, 2, 0, 36, 0, 2, 0, 63, 0, 2, 0,234, 0, 54, 0,228, 0, + 56, 0, 17, 0, 32, 0,161, 0, 47, 0,235, 0, 57, 0,236, 0, 7, 0,237, 0, 7, 0,238, 0, 2, 0, 17, 0, 2, 0,239, 0, + 7, 0,109, 0, 7, 0,110, 0, 7, 0,240, 0, 4, 0,241, 0, 2, 0,242, 0, 2, 0,243, 0, 4, 0,124, 0, 4, 0,138, 0, + 2, 0,244, 0, 2, 0,245, 0, 58, 0, 22, 0, 2, 0, 19, 0, 2, 0,246, 0, 7, 0,247, 0, 7, 0,248, 0, 2, 0,137, 0, + 2, 0,249, 0, 4, 0,250, 0, 4, 0,251, 0, 32, 0,161, 0, 4, 0,252, 0, 2, 0,253, 0, 2, 0,254, 0, 9, 0,255, 0, + 7, 0, 0, 1, 7, 0, 1, 1, 2, 0, 2, 1, 2, 0, 3, 1, 2, 0, 4, 1, 2, 0, 5, 1, 7, 0, 6, 1, 7, 0, 7, 1, + 55, 0, 8, 1, 59, 0, 13, 0, 4, 0, 9, 1, 4, 0, 10, 1, 2, 0, 11, 1, 2, 0, 19, 0, 2, 0, 12, 1, 2, 0, 13, 1, + 32, 0,161, 0, 7, 0, 14, 1, 4, 0, 15, 1, 0, 0, 16, 1, 7, 0, 17, 1, 4, 0, 18, 1, 4, 0,124, 0, 52, 0, 63, 0, + 27, 0, 31, 0, 39, 0, 74, 0, 7, 0, 19, 1, 7, 0, 20, 1, 7, 0, 21, 1, 7, 0, 22, 1, 7, 0, 23, 1, 7, 0, 24, 1, + 7, 0, 25, 1, 7, 0, 26, 1, 7, 0, 27, 1, 7, 0, 69, 0, 7, 0, 28, 1, 7, 0, 29, 1, 7, 0, 30, 1, 7, 0, 31, 1, + 7, 0, 32, 1, 7, 0, 33, 1, 7, 0, 34, 1, 7, 0, 35, 1, 7, 0, 36, 1, 7, 0, 37, 1, 7, 0, 38, 1, 7, 0, 39, 1, + 2, 0, 40, 1, 2, 0, 41, 1, 2, 0, 42, 1, 2, 0, 43, 1, 2, 0, 44, 1, 2, 0, 45, 1, 2, 0, 46, 1, 2, 0, 19, 0, + 2, 0, 17, 0, 2, 0,239, 0, 7, 0, 47, 1, 7, 0, 48, 1, 7, 0, 49, 1, 7, 0, 50, 1, 4, 0, 51, 1, 4, 0, 52, 1, + 2, 0, 53, 1, 2, 0, 54, 1, 2, 0, 12, 1, 2, 0,122, 0, 4, 0, 23, 0, 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, + 7, 0, 55, 1, 7, 0, 56, 1, 7, 0, 89, 0, 45, 0, 57, 1, 60, 0, 58, 1, 36, 0, 79, 0, 47, 0,235, 0, 53, 0, 59, 1, + 55, 0, 8, 1, 56, 0, 60, 1, 30, 0,148, 0, 58, 0, 61, 1, 59, 0, 62, 1, 0, 0, 63, 1, 0, 0,178, 0, 61, 0, 8, 0, + 7, 0, 64, 1, 7, 0, 65, 1, 7, 0,169, 0, 4, 0, 19, 0, 7, 0, 66, 1, 7, 0, 67, 1, 7, 0, 68, 1, 32, 0, 44, 0, + 62, 0, 72, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 69, 1, 2, 0,172, 0, 2, 0, 70, 1, + 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,182, 0, 7, 0, 71, 1, 7, 0, 72, 1, 7, 0, 73, 1, 7, 0, 74, 1, + 7, 0, 75, 1, 7, 0, 76, 1, 7, 0, 77, 1, 7, 0, 78, 1, 7, 0, 79, 1, 7, 0, 80, 1, 7, 0, 81, 1, 63, 0, 82, 1, + 2, 0,246, 0, 2, 0, 69, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0, 83, 1, 7, 0, 84, 1, 7, 0, 85, 1, 7, 0, 86, 1, + 7, 0, 87, 1, 2, 0, 88, 1, 2, 0, 89, 1, 2, 0, 90, 1, 2, 0, 91, 1, 0, 0, 92, 1, 0, 0, 93, 1, 2, 0, 94, 1, + 2, 0, 95, 1, 2, 0, 96, 1, 2, 0, 97, 1, 2, 0, 98, 1, 7, 0, 99, 1, 7, 0,100, 1, 7, 0,101, 1, 7, 0,102, 1, + 2, 0,103, 1, 2, 0, 89, 0, 2, 0,104, 1, 2, 0,105, 1, 2, 0,106, 1, 2, 0,107, 1, 7, 0,108, 1, 7, 0,109, 1, + 7, 0,110, 1, 7, 0,111, 1, 7, 0,112, 1, 7, 0,113, 1, 7, 0,114, 1, 7, 0,115, 1, 7, 0,116, 1, 7, 0,117, 1, + 7, 0,118, 1, 7, 0,119, 1, 2, 0,120, 1, 0, 0,121, 1, 36, 0, 79, 0, 51, 0,122, 1, 2, 0,123, 1, 0, 0,124, 1, + 30, 0,148, 0, 64, 0, 2, 0, 27, 0, 31, 0, 36, 0, 79, 0, 65, 0, 18, 0, 7, 0,125, 1, 7, 0,126, 1, 7, 0,127, 1, + 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, 7, 0,131, 1, 7, 0,132, 1, 7, 0,133, 1, 7, 0,134, 1, 2, 0,135, 1, + 2, 0,136, 1, 2, 0,137, 1, 2, 0,138, 1, 7, 0,139, 1, 7, 0,140, 1, 7, 0,141, 1, 7, 0,142, 1, 66, 0,124, 0, + 27, 0, 31, 0, 39, 0, 74, 0, 2, 0,143, 1, 2, 0, 19, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,144, 1, + 7, 0,145, 1, 7, 0,146, 1, 7, 0,147, 1, 7, 0,148, 1, 7, 0,149, 1, 7, 0,150, 1, 7, 0,151, 1, 7, 0,152, 1, + 7, 0,153, 1, 7, 0,154, 1, 7, 0,155, 1, 7, 0,156, 1, 7, 0,157, 1, 7, 0,158, 1, 7, 0,159, 1, 7, 0,160, 1, + 7, 0,161, 1, 7, 0,162, 1, 7, 0,163, 1, 65, 0,164, 1, 7, 0,165, 1, 7, 0,166, 1, 7, 0,167, 1, 7, 0,168, 1, + 7, 0,169, 1, 7, 0,170, 1, 7, 0,171, 1, 2, 0,172, 1, 2, 0,173, 1, 2, 0,174, 1, 0, 0,175, 1, 0, 0,176, 1, + 7, 0,177, 1, 7, 0,178, 1, 2, 0,179, 1, 2, 0,180, 1, 7, 0,181, 1, 7, 0,182, 1, 7, 0,183, 1, 7, 0,184, 1, + 2, 0,185, 1, 2, 0,186, 1, 4, 0, 69, 1, 4, 0,187, 1, 2, 0,188, 1, 2, 0,189, 1, 2, 0,190, 1, 2, 0,191, 1, + 7, 0,192, 1, 7, 0,193, 1, 7, 0,194, 1, 7, 0,195, 1, 7, 0,196, 1, 7, 0,197, 1, 7, 0,198, 1, 7, 0,199, 1, + 7, 0,200, 1, 7, 0,201, 1, 0, 0,202, 1, 7, 0,203, 1, 7, 0,204, 1, 7, 0,205, 1, 4, 0,206, 1, 0, 0,207, 1, + 0, 0,104, 1, 0, 0,208, 1, 0, 0, 63, 1, 2, 0,209, 1, 2, 0,210, 1, 2, 0,123, 1, 2, 0,211, 1, 2, 0,212, 1, + 2, 0,213, 1, 7, 0,214, 1, 7, 0,215, 1, 7, 0,216, 1, 7, 0,217, 1, 7, 0,218, 1, 2, 0,157, 0, 2, 0,158, 0, + 55, 0,219, 1, 55, 0,220, 1, 0, 0,221, 1, 0, 0,222, 1, 0, 0,223, 1, 0, 0,224, 1, 2, 0,225, 1, 2, 0,226, 1, + 7, 0,227, 1, 7, 0,228, 1, 51, 0,122, 1, 60, 0, 58, 1, 36, 0, 79, 0, 67, 0,229, 1, 30, 0,148, 0, 7, 0,230, 1, + 7, 0,231, 1, 7, 0,232, 1, 7, 0,233, 1, 7, 0,234, 1, 2, 0,235, 1, 2, 0, 69, 0, 7, 0,236, 1, 7, 0,237, 1, + 7, 0,238, 1, 7, 0,239, 1, 7, 0,240, 1, 7, 0,241, 1, 7, 0,242, 1, 7, 0,243, 1, 7, 0,244, 1, 2, 0,245, 1, + 2, 0,246, 1, 4, 0,247, 1, 4, 0,248, 1, 12, 0,249, 1, 68, 0, 4, 0, 27, 0, 31, 0, 0, 0,250, 1, 69, 0, 2, 0, + 43, 0,147, 0, 70, 0, 26, 0, 70, 0, 0, 0, 70, 0, 1, 0, 71, 0,251, 1, 4, 0,252, 1, 4, 0,253, 1, 4, 0,254, 1, + 4, 0,255, 1, 4, 0, 0, 2, 4, 0, 1, 2, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 2, 2, 2, 0, 3, 2, 7, 0, 5, 0, + 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 4, 2, 7, 0, 5, 2, 7, 0, 6, 2, 7, 0, 7, 2, 7, 0, 8, 2, 7, 0, 9, 2, + 7, 0, 10, 2, 7, 0, 23, 0, 7, 0, 11, 2, 7, 0, 12, 2, 72, 0, 20, 0, 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, + 12, 0, 13, 2, 12, 0, 14, 2, 12, 0, 15, 2, 36, 0, 79, 0, 66, 0, 16, 2, 0, 0, 19, 0, 0, 0, 17, 2, 2, 0, 18, 2, + 2, 0,171, 0, 2, 0, 37, 0, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 7, 0, 19, 2, 7, 0, 20, 2, 7, 0, 21, 2, + 70, 0, 22, 2, 35, 0, 11, 0, 7, 0, 23, 2, 7, 0, 24, 2, 7, 0, 25, 2, 7, 0,248, 0, 2, 0, 54, 0, 0, 0, 26, 2, + 0, 0, 27, 2, 0, 0, 28, 2, 0, 0, 29, 2, 0, 0, 30, 2, 0, 0, 31, 2, 34, 0, 7, 0, 7, 0, 32, 2, 7, 0, 24, 2, + 7, 0, 25, 2, 2, 0, 28, 2, 2, 0, 31, 2, 7, 0,248, 0, 7, 0, 37, 0, 73, 0, 21, 0, 73, 0, 0, 0, 73, 0, 1, 0, + 2, 0, 17, 0, 2, 0, 33, 2, 2, 0, 31, 2, 2, 0, 19, 0, 2, 0, 34, 2, 2, 0, 35, 2, 2, 0, 36, 2, 2, 0, 37, 2, + 2, 0, 38, 2, 2, 0, 39, 2, 2, 0, 40, 2, 2, 0, 41, 2, 7, 0, 42, 2, 7, 0, 43, 2, 34, 0, 48, 0, 35, 0, 49, 0, + 2, 0, 44, 2, 2, 0, 45, 2, 4, 0, 46, 2, 74, 0, 5, 0, 2, 0, 47, 2, 2, 0, 33, 2, 0, 0, 19, 0, 0, 0, 37, 0, + 2, 0, 69, 0, 75, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 8, 0, 7, 0, 48, 2, 76, 0, 68, 0, 27, 0, 31, 0, + 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 49, 2, 12, 0, 14, 2, 12, 0, 50, 2, 32, 0, 51, 2, 32, 0, 52, 2, 32, 0, 53, 2, + 36, 0, 79, 0, 77, 0, 54, 2, 38, 0, 55, 2, 66, 0, 16, 2, 12, 0, 56, 2, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, + 2, 0,171, 0, 2, 0, 89, 0, 2, 0, 57, 2, 2, 0, 58, 2, 2, 0, 59, 2, 7, 0, 60, 2, 7, 0, 61, 2, 2, 0, 62, 2, + 2, 0, 18, 2, 2, 0, 19, 0, 2, 0, 63, 2, 7, 0, 64, 2, 7, 0, 65, 2, 7, 0, 66, 2, 2, 0, 36, 2, 2, 0, 37, 2, + 2, 0, 67, 2, 2, 0, 68, 2, 4, 0, 69, 2, 9, 0, 70, 2, 2, 0, 23, 0, 2, 0, 95, 0, 2, 0, 66, 0, 2, 0, 71, 2, + 7, 0, 72, 2, 7, 0, 73, 2, 7, 0, 74, 2, 7, 0, 75, 2, 7, 0, 76, 2, 7, 0, 77, 2, 7, 0, 78, 2, 7, 0, 79, 2, + 7, 0, 80, 2, 7, 0, 81, 2, 0, 0, 82, 2, 78, 0, 83, 2, 79, 0, 84, 2, 0, 0, 85, 2, 68, 0, 86, 2, 68, 0, 87, 2, + 68, 0, 88, 2, 68, 0, 89, 2, 4, 0, 90, 2, 7, 0, 91, 2, 4, 0, 92, 2, 4, 0, 93, 2, 75, 0, 94, 2, 4, 0, 95, 2, + 4, 0, 96, 2, 74, 0, 97, 2, 74, 0, 98, 2, 80, 0, 41, 0, 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 99, 2, + 36, 0, 79, 0, 38, 0, 55, 2, 66, 0, 16, 2, 81, 0,100, 2, 82, 0,101, 2, 83, 0,102, 2, 84, 0,103, 2, 85, 0,104, 2, + 86, 0,105, 2, 87, 0,106, 2, 88, 0,107, 2, 80, 0,108, 2, 89, 0,109, 2, 90, 0,110, 2, 91, 0,111, 2, 91, 0,112, 2, + 91, 0,113, 2, 4, 0, 53, 0, 4, 0,114, 2, 4, 0,115, 2, 4, 0,116, 2, 4, 0,117, 2, 2, 0,171, 0, 2, 0,118, 2, + 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 7, 0,119, 2, 4, 0, 57, 2, 2, 0,120, 2, 2, 0, 19, 0, 2, 0,121, 2, + 2, 0,122, 2, 2, 0, 18, 2, 2, 0,123, 2, 92, 0,124, 2, 93, 0,125, 2, 83, 0, 8, 0, 9, 0,126, 2, 7, 0,127, 2, + 4, 0,128, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, 2, 0,130, 2, 2, 0,131, 2, 81, 0, 7, 0, 4, 0,132, 2, + 4, 0,133, 2, 4, 0,134, 2, 4, 0,135, 2, 2, 0, 33, 2, 0, 0,136, 2, 0, 0, 19, 0, 85, 0, 5, 0, 4, 0,132, 2, + 4, 0,133, 2, 0, 0,137, 2, 0, 0,138, 2, 2, 0, 19, 0, 94, 0, 2, 0, 4, 0,139, 2, 7, 0, 25, 2, 86, 0, 3, 0, + 94, 0,140, 2, 4, 0,141, 2, 4, 0, 19, 0, 84, 0, 6, 0, 7, 0,142, 2, 2, 0,143, 2, 2, 0, 33, 2, 0, 0, 19, 0, + 0, 0,138, 2, 0, 0, 59, 2, 87, 0, 4, 0, 0, 0,233, 0, 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 95, 0, 6, 0, + 47, 0,126, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, 2, 0,130, 2, 2, 0,131, 2, 96, 0, 1, 0, 7, 0,144, 2, + 97, 0, 5, 0, 0, 0,233, 0, 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 4, 0, 37, 0, 88, 0, 1, 0, 7, 0,145, 2, + 89, 0, 2, 0, 4, 0,146, 2, 4, 0, 17, 0, 82, 0, 7, 0, 7, 0,127, 2, 47, 0,126, 2, 0, 0, 19, 0, 0, 0,129, 2, + 2, 0, 69, 1, 2, 0,130, 2, 2, 0,131, 2, 98, 0, 1, 0, 7, 0,147, 2, 99, 0, 1, 0, 4, 0,148, 2,100, 0, 1, 0, + 0, 0,149, 2,101, 0, 1, 0, 7, 0,127, 2,102, 0, 3, 0, 4, 0,150, 2, 0, 0, 92, 0, 7, 0,151, 2,103, 0, 4, 0, + 7, 0,233, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0,104, 0, 1, 0,103, 0,128, 2,105, 0, 5, 0, 4, 0,152, 2, + 4, 0,153, 2, 0, 0, 19, 0, 0, 0, 33, 2, 0, 0, 59, 2,106, 0, 2, 0, 4, 0,154, 2, 4, 0,153, 2,107, 0, 10, 0, +107, 0, 0, 0,107, 0, 1, 0,105, 0,155, 2,104, 0,156, 2,106, 0,157, 2, 4, 0, 53, 0, 4, 0,115, 2, 4, 0,114, 2, + 4, 0, 37, 0, 84, 0,158, 2, 92, 0, 14, 0, 12, 0,159, 2, 84, 0,158, 2, 0, 0,160, 2, 0, 0,161, 2, 0, 0,162, 2, + 0, 0,163, 2, 0, 0,164, 2, 0, 0,165, 2, 0, 0,166, 2, 0, 0, 19, 0, 91, 0,111, 2, 91, 0,113, 2, 2, 0,167, 2, + 0, 0,168, 2, 93, 0, 8, 0, 4, 0,169, 2, 4, 0,170, 2, 81, 0,171, 2, 85, 0,172, 2, 4, 0,115, 2, 4, 0,114, 2, + 4, 0, 53, 0, 4, 0, 37, 0,108, 0, 9, 0,108, 0, 0, 0,108, 0, 1, 0, 4, 0, 17, 0, 4, 0, 69, 1, 4, 0,173, 2, + 4, 0, 37, 0, 0, 0, 20, 0, 46, 0,129, 0, 0, 0,174, 2,109, 0, 7, 0,108, 0,175, 2, 2, 0,176, 2, 2, 0,159, 2, + 2, 0,177, 2, 2, 0, 90, 0, 9, 0,178, 2, 9, 0,179, 2,110, 0, 3, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0, 20, 0, +111, 0, 5, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0, 20, 0, 2, 0,180, 2, 0, 0,181, 2,112, 0, 5, 0,108, 0,175, 2, + 7, 0, 87, 0, 7, 0,182, 2, 4, 0,183, 2, 4, 0,184, 2,113, 0, 5, 0,108, 0,175, 2, 32, 0,185, 2, 0, 0, 71, 0, + 4, 0, 69, 1, 4, 0, 19, 0,114, 0, 13, 0,108, 0,175, 2, 32, 0,186, 2, 32, 0,187, 2, 32, 0,188, 2, 32, 0,189, 2, + 7, 0,190, 2, 7, 0,191, 2, 7, 0,182, 2, 7, 0,192, 2, 4, 0,193, 2, 4, 0,194, 2, 4, 0, 90, 0, 4, 0,195, 2, +115, 0, 5, 0,108, 0,175, 2, 2, 0,196, 2, 2, 0, 19, 0, 7, 0,197, 2, 32, 0,198, 2,116, 0, 3, 0,108, 0,175, 2, + 7, 0,199, 2, 4, 0, 90, 0,117, 0, 10, 0,108, 0,175, 2, 7, 0,200, 2, 4, 0,201, 2, 4, 0, 37, 0, 2, 0, 90, 0, + 2, 0,202, 2, 2, 0,203, 2, 2, 0,204, 2, 7, 0,205, 2, 0, 0,206, 2,118, 0, 3, 0,108, 0,175, 2, 7, 0, 37, 0, + 4, 0, 17, 0,119, 0, 6, 0,108, 0,175, 2,120, 0,207, 2,121, 0,208, 2,122, 0,209, 2, 7, 0,210, 2, 4, 0, 17, 0, +123, 0, 11, 0,108, 0,175, 2, 52, 0,211, 2, 7, 0,212, 2, 4, 0,213, 2, 0, 0,206, 2, 7, 0,214, 2, 4, 0,215, 2, + 32, 0,216, 2, 0, 0,217, 2, 4, 0,218, 2, 4, 0, 37, 0,124, 0, 12, 0,108, 0,175, 2, 32, 0,219, 2, 47, 0,220, 2, + 4, 0, 90, 0, 4, 0,221, 2, 7, 0,222, 2, 7, 0,223, 2, 7, 0,224, 2, 7, 0,225, 2, 0, 0,217, 2, 4, 0,218, 2, + 4, 0, 37, 0,125, 0, 3, 0,108, 0,175, 2, 7, 0,226, 2, 4, 0,227, 2,126, 0, 5, 0,108, 0,175, 2, 7, 0,228, 2, + 0, 0,206, 2, 2, 0, 19, 0, 2, 0,229, 2,127, 0, 8, 0,108, 0,175, 2, 32, 0,161, 0, 7, 0,228, 2, 7, 0,248, 0, + 7, 0,106, 0, 0, 0,206, 2, 2, 0, 19, 0, 2, 0, 17, 0,128, 0, 21, 0,108, 0,175, 2, 32, 0,230, 2, 0, 0,206, 2, + 52, 0,211, 2, 32, 0,216, 2, 2, 0, 19, 0, 2, 0, 37, 0, 7, 0,231, 2, 7, 0,232, 2, 7, 0,233, 2, 7, 0, 64, 2, + 7, 0,234, 2, 7, 0,235, 2, 7, 0,236, 2, 7, 0,237, 2, 4, 0,215, 2, 4, 0,218, 2, 0, 0,217, 2, 7, 0,238, 2, + 7, 0,239, 2, 7, 0, 89, 0,129, 0, 7, 0,108, 0,175, 2, 2, 0,240, 2, 2, 0,241, 2, 4, 0, 69, 0, 32, 0,161, 0, + 7, 0,242, 2, 0, 0,206, 2,130, 0, 10, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0,243, 2, 7, 0,244, 2, 7, 0,245, 2, + 7, 0,237, 2, 4, 0,246, 2, 4, 0,247, 2, 7, 0,248, 2, 0, 0, 20, 0,131, 0, 1, 0,108, 0,175, 2,132, 0, 7, 0, +108, 0,175, 2, 46, 0,129, 0,133, 0,249, 2,134, 0,250, 2,135, 0,251, 2,136, 0,252, 2, 12, 0,253, 2,137, 0, 13, 0, +108, 0,175, 2, 84, 0,254, 2, 84, 0,255, 2, 84, 0, 0, 3, 84, 0, 1, 3, 84, 0, 2, 3, 84, 0, 3, 3, 81, 0, 4, 3, + 4, 0, 5, 3, 4, 0, 6, 3, 7, 0,210, 2, 7, 0, 37, 0,138, 0, 7, 3,139, 0, 7, 0,108, 0,175, 2, 84, 0,254, 2, + 84, 0, 8, 3,140, 0, 9, 3,141, 0, 7, 3, 4, 0, 10, 3, 4, 0, 5, 3,142, 0, 4, 0,108, 0,175, 2, 32, 0,161, 0, + 4, 0, 11, 3, 4, 0, 37, 0,143, 0, 2, 0, 4, 0, 12, 3, 7, 0, 25, 2,144, 0, 2, 0, 4, 0,120, 0, 4, 0, 13, 3, +145, 0, 24, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0,206, 2, 2, 0, 14, 3, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 37, 0, +143, 0, 15, 3, 4, 0, 16, 3, 7, 0, 17, 3, 4, 0, 53, 0, 4, 0, 18, 3,144, 0, 19, 3,143, 0, 20, 3, 4, 0, 21, 3, + 4, 0, 22, 3, 4, 0, 23, 3, 4, 0, 13, 3, 7, 0, 24, 3, 7, 0, 25, 3, 7, 0, 26, 3, 7, 0, 27, 3, 7, 0, 28, 3, + 9, 0, 29, 3,146, 0, 8, 0,108, 0,175, 2,147, 0, 30, 3,140, 0, 9, 3, 4, 0, 31, 3, 4, 0, 32, 3, 4, 0, 33, 3, + 2, 0, 19, 0, 2, 0, 56, 0,148, 0, 8, 0,108, 0,175, 2, 32, 0, 44, 0, 2, 0,252, 0, 2, 0, 19, 0, 2, 0,196, 2, + 2, 0, 56, 0, 7, 0, 34, 3, 7, 0, 35, 3,149, 0, 5, 0,108, 0,175, 2, 4, 0, 36, 3, 2, 0, 19, 0, 2, 0, 37, 3, + 7, 0, 38, 3,150, 0, 8, 0,108, 0,175, 2, 0, 0, 39, 3, 0, 0, 40, 3, 0, 0,165, 2, 0, 0, 41, 3, 0, 0, 42, 3, + 0, 0, 90, 0, 0, 0, 59, 2,151, 0, 3, 0,108, 0,175, 2,152, 0, 43, 3,136, 0,252, 2,153, 0, 10, 0,108, 0,175, 2, + 32, 0, 44, 3, 32, 0, 45, 3, 0, 0, 46, 3, 7, 0, 47, 3, 2, 0, 48, 3, 2, 0, 49, 3, 0, 0, 50, 3, 0, 0, 51, 3, + 0, 0,181, 2,154, 0, 9, 0,108, 0,175, 2, 32, 0, 52, 3, 0, 0, 46, 3, 7, 0, 53, 3, 7, 0, 54, 3, 0, 0, 69, 1, + 0, 0,196, 2, 0, 0, 55, 3, 0, 0, 37, 0,155, 0, 1, 0,108, 0,175, 2,156, 0, 8, 0,108, 0,175, 2, 0, 0,206, 2, + 7, 0,120, 0, 7, 0, 56, 3, 7, 0, 57, 3, 7, 0, 58, 3, 7, 0, 59, 3, 4, 0, 19, 0,157, 0, 9, 0,108, 0,175, 2, + 32, 0, 60, 3, 4, 0, 61, 3, 4, 0, 62, 3, 4, 0, 63, 3, 7, 0, 64, 3, 7, 0, 65, 3, 2, 0,196, 2, 2, 0, 19, 0, +158, 0, 28, 0, 27, 0, 31, 0, 2, 0, 34, 2, 2, 0, 35, 2, 2, 0, 66, 3, 2, 0, 19, 0, 2, 0, 67, 3, 2, 0, 68, 3, + 2, 0, 69, 3, 2, 0, 69, 0, 0, 0, 70, 3, 0, 0, 71, 3, 0, 0, 72, 3, 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 73, 3, + 7, 0, 74, 3, 7, 0, 75, 3, 7, 0, 76, 3, 7, 0, 77, 3, 7, 0, 78, 3, 34, 0, 79, 3, 36, 0, 79, 0, 38, 0, 55, 2, + 86, 0,105, 2, 0, 0, 71, 0, 7, 0, 80, 3, 7, 0, 81, 3,158, 0, 82, 3,159, 0, 3, 0,159, 0, 0, 0,159, 0, 1, 0, + 0, 0, 20, 0, 71, 0, 3, 0, 7, 0, 83, 3, 4, 0, 19, 0, 4, 0, 37, 0, 32, 0,126, 0, 27, 0, 31, 0, 39, 0, 74, 0, +160, 0, 84, 3, 2, 0, 17, 0, 2, 0, 85, 3, 4, 0, 86, 3, 4, 0, 87, 3, 4, 0, 88, 3, 0, 0, 89, 3, 32, 0, 38, 0, + 32, 0, 90, 3, 32, 0, 91, 3, 32, 0, 92, 3, 32, 0, 93, 3, 36, 0, 79, 0, 77, 0, 54, 2, 71, 0,251, 1,161, 0, 94, 3, +161, 0, 95, 3,162, 0, 96, 3, 9, 0, 2, 0,163, 0, 97, 3,164, 0, 98, 3,165, 0, 99, 3, 12, 0,100, 3, 12, 0, 99, 2, + 12, 0, 14, 2, 12, 0,101, 3, 12, 0,102, 3, 4, 0, 69, 1, 4, 0,103, 3, 66, 0, 16, 2, 0, 0,104, 3, 4, 0, 18, 2, + 4, 0,105, 3, 7, 0, 64, 1, 7, 0,106, 3, 7, 0,107, 3, 7, 0,169, 0, 7, 0,108, 3, 7, 0, 65, 1, 7, 0,109, 3, + 7, 0, 4, 2, 7, 0,110, 3, 7, 0,111, 3, 7, 0,112, 3, 7, 0,113, 3, 7, 0,114, 3, 7, 0,115, 3, 7, 0,244, 2, + 7, 0,116, 3, 7, 0,237, 0, 4, 0,117, 3, 2, 0, 19, 0, 2, 0,118, 3, 2, 0,119, 3, 2, 0,120, 3, 2, 0,121, 3, + 2, 0,122, 3, 2, 0,123, 3, 2, 0,124, 3, 2, 0,125, 3, 2, 0,126, 3, 2, 0,127, 3, 2, 0,128, 3, 4, 0,129, 3, + 4, 0,130, 3, 4, 0,131, 3, 4, 0,132, 3, 7, 0,133, 3, 7, 0, 91, 2, 7, 0,134, 3, 7, 0,135, 3, 7, 0,136, 3, + 7, 0,137, 3, 7, 0,138, 3, 7, 0,212, 0, 7, 0,139, 3, 7, 0,140, 3, 7, 0,141, 3, 7, 0,142, 3, 2, 0,143, 3, + 0, 0,144, 3, 0, 0,145, 3, 0, 0,146, 3, 0, 0,147, 3, 7, 0,148, 3, 7, 0,149, 3, 12, 0,150, 3, 12, 0,151, 3, + 12, 0,152, 3, 12, 0,153, 3, 7, 0,154, 3, 2, 0,146, 2, 2, 0,155, 3, 7, 0,128, 2, 4, 0,156, 3, 4, 0,157, 3, +166, 0,158, 3, 2, 0,159, 3, 2, 0,244, 0, 7, 0,160, 3, 12, 0,161, 3, 12, 0,162, 3, 12, 0,163, 3, 12, 0,164, 3, +167, 0, 61, 1,168, 0,165, 3, 67, 0,166, 3, 2, 0,167, 3, 2, 0,168, 3, 2, 0,169, 3, 2, 0,170, 3, 7, 0,120, 2, + 2, 0,171, 3, 2, 0,172, 3,152, 0,173, 3,140, 0,174, 3,140, 0,175, 3, 4, 0,176, 3, 4, 0,177, 3, 4, 0,178, 3, + 4, 0, 69, 0, 12, 0,179, 3, 12, 0,180, 3, 12, 0,181, 3,169, 0, 14, 0,169, 0, 0, 0,169, 0, 1, 0, 32, 0, 38, 0, + 7, 0,244, 2, 7, 0, 66, 1, 7, 0,245, 2, 7, 0,237, 2, 0, 0, 20, 0, 4, 0,246, 2, 4, 0,247, 2, 4, 0,182, 3, + 2, 0, 17, 0, 2, 0,183, 3, 7, 0,248, 2,170, 0, 12, 0,170, 0, 0, 0,170, 0, 1, 0, 32, 0, 44, 0, 4, 0,184, 3, + 4, 0,146, 2, 4, 0,185, 3, 4, 0, 17, 0, 4, 0,186, 3, 7, 0, 66, 1, 7, 0,187, 3, 7, 0,188, 3, 7, 0,144, 2, +167, 0, 40, 0, 4, 0, 19, 0, 2, 0,189, 3, 2, 0,190, 3, 2, 0,237, 2, 2, 0,191, 3, 2, 0,192, 3, 2, 0,193, 3, + 2, 0,194, 3, 2, 0,195, 3, 7, 0,196, 3, 7, 0,197, 3, 7, 0,198, 3, 7, 0,199, 3, 7, 0,200, 3, 7, 0,201, 3, + 7, 0,202, 3, 7, 0,203, 3, 7, 0,204, 3, 7, 0,205, 3, 7, 0,206, 3, 7, 0,207, 3, 7, 0,208, 3, 7, 0,209, 3, + 7, 0,210, 3, 7, 0,211, 3, 7, 0,212, 3, 7, 0,213, 3, 7, 0,214, 3, 7, 0,215, 3, 7, 0,216, 3, 7, 0,217, 3, + 7, 0,218, 3, 7, 0,219, 3, 7, 0,220, 3, 7, 0,221, 3, 7, 0,222, 3, 52, 0,162, 0,171, 0,223, 3, 7, 0,224, 3, + 4, 0,184, 2,172, 0, 5, 0, 67, 0,229, 1, 7, 0,225, 3, 7, 0,226, 3, 2, 0, 19, 0, 2, 0,227, 3,173, 0, 9, 0, +173, 0, 0, 0,173, 0, 1, 0, 4, 0,228, 3, 4, 0,229, 3, 4, 0,230, 3, 4, 0, 19, 0, 4, 0,231, 3, 9, 0,232, 3, + 9, 0,233, 3,136, 0, 19, 0,136, 0, 0, 0,136, 0, 1, 0, 4, 0, 19, 0, 4, 0,234, 3, 4, 0,235, 3, 4, 0,236, 3, + 4, 0,237, 3, 4, 0,238, 3, 4, 0,239, 3, 4, 0,229, 3, 4, 0,146, 2, 4, 0, 56, 0, 0, 0,240, 3, 0, 0,241, 3, + 0, 0,242, 3, 0, 0,243, 3, 12, 0,244, 3,174, 0,245, 3, 9, 0,246, 3,175, 0, 1, 0, 7, 0, 32, 2,166, 0, 30, 0, + 4, 0, 19, 0, 7, 0,247, 3, 7, 0,248, 3, 7, 0,249, 3, 4, 0,250, 3, 4, 0,251, 3, 4, 0,252, 3, 4, 0,253, 3, + 7, 0,254, 3, 7, 0,255, 3, 7, 0, 0, 4, 7, 0, 1, 4, 7, 0, 2, 4, 7, 0, 3, 4, 7, 0, 4, 4, 7, 0, 5, 4, + 7, 0, 6, 4, 7, 0, 7, 4, 7, 0, 8, 4, 7, 0, 9, 4, 7, 0, 10, 4, 7, 0, 11, 4, 7, 0, 12, 4, 7, 0, 13, 4, + 7, 0, 14, 4, 7, 0, 15, 4, 4, 0, 16, 4, 4, 0, 17, 4, 7, 0, 18, 4, 7, 0,139, 3,168, 0, 54, 0, 4, 0,229, 3, + 4, 0, 19, 4,176, 0, 20, 4,177, 0, 21, 4, 0, 0, 37, 0, 0, 0, 22, 4, 2, 0, 23, 4, 7, 0, 24, 4, 0, 0, 25, 4, + 7, 0, 26, 4, 7, 0, 27, 4, 7, 0, 28, 4, 7, 0, 29, 4, 7, 0, 30, 4, 7, 0, 31, 4, 7, 0, 32, 4, 7, 0, 33, 4, + 7, 0, 34, 4, 2, 0, 35, 4, 0, 0, 36, 4, 2, 0, 37, 4, 7, 0, 38, 4, 7, 0, 39, 4, 0, 0, 40, 4, 4, 0,121, 0, + 4, 0, 41, 4, 4, 0, 42, 4, 2, 0, 43, 4, 2, 0, 44, 4,175, 0, 45, 4, 4, 0, 46, 4, 4, 0, 81, 0, 7, 0, 47, 4, + 7, 0, 48, 4, 7, 0, 49, 4, 7, 0, 50, 4, 2, 0, 51, 4, 2, 0, 52, 4, 2, 0, 53, 4, 2, 0, 54, 4, 2, 0, 55, 4, + 2, 0, 56, 4, 2, 0, 57, 4, 2, 0, 58, 4,178, 0, 59, 4, 7, 0, 60, 4, 7, 0, 61, 4,136, 0, 62, 4, 12, 0,253, 2, +172, 0, 63, 4, 7, 0, 64, 4, 7, 0, 65, 4, 7, 0, 66, 4, 0, 0, 67, 4,152, 0, 51, 0,151, 0, 68, 4, 2, 0, 17, 0, + 2, 0, 69, 4, 2, 0, 70, 4, 2, 0, 71, 4, 7, 0, 72, 4, 2, 0, 73, 4, 2, 0, 74, 4, 7, 0, 75, 4, 2, 0, 76, 4, + 2, 0, 77, 4, 7, 0, 78, 4, 7, 0, 79, 4, 7, 0, 80, 4, 7, 0, 81, 4, 7, 0, 82, 4, 4, 0, 83, 4, 4, 0, 84, 4, + 7, 0, 85, 4, 4, 0, 86, 4, 7, 0, 87, 4, 7, 0, 88, 4, 7, 0, 89, 4, 80, 0, 90, 4, 80, 0, 91, 4, 80, 0, 92, 4, + 0, 0, 93, 4, 7, 0, 94, 4, 7, 0, 95, 4, 36, 0, 79, 0, 2, 0, 96, 4, 0, 0, 97, 4, 0, 0, 98, 4, 7, 0, 99, 4, + 4, 0,100, 4, 7, 0,101, 4, 7, 0,102, 4, 4, 0,103, 4, 4, 0, 19, 0, 7, 0,104, 4, 7, 0,105, 4, 7, 0,106, 4, + 84, 0,107, 4, 7, 0,108, 4, 7, 0,109, 4, 7, 0,110, 4, 7, 0,111, 4, 7, 0,112, 4, 7, 0,113, 4, 7, 0,114, 4, + 4, 0,115, 4,179, 0, 78, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0,172, 0, 2, 0, 70, 1, 2, 0,104, 1, 2, 0,116, 4, + 7, 0,117, 4, 7, 0,118, 4, 7, 0,119, 4, 7, 0,120, 4, 7, 0,121, 4, 7, 0,122, 4, 7, 0,123, 4, 7, 0,124, 4, + 7, 0,150, 1, 7, 0,152, 1, 7, 0,151, 1, 7, 0,125, 4, 4, 0,126, 4, 7, 0,127, 4, 7, 0,128, 4, 7, 0,129, 4, + 7, 0,130, 4, 7, 0,131, 4, 7, 0,132, 4, 7, 0,133, 4, 2, 0,134, 4, 2, 0, 69, 1, 2, 0,135, 4, 2, 0,136, 4, + 2, 0,137, 4, 2, 0,138, 4, 2, 0,139, 4, 2, 0,140, 4, 7, 0,141, 4, 7, 0,142, 4, 7, 0,143, 4, 7, 0,144, 4, + 7, 0,145, 4, 7, 0,146, 4, 7, 0,147, 4, 7, 0,148, 4, 7, 0,149, 4, 7, 0,150, 4, 7, 0,151, 4, 7, 0,152, 4, + 2, 0,153, 4, 2, 0,154, 4, 2, 0,155, 4, 2, 0,156, 4, 7, 0,157, 4, 7, 0,158, 4, 7, 0,159, 4, 7, 0,160, 4, + 2, 0,161, 4, 2, 0,162, 4, 2, 0,163, 4, 2, 0,164, 4, 7, 0,165, 4, 7, 0,166, 4, 7, 0,167, 4, 7, 0,168, 4, + 7, 0,169, 4, 7, 0,170, 4, 7, 0,171, 4, 2, 0,172, 4, 2, 0,173, 4, 2, 0,174, 4, 2, 0,175, 4, 2, 0,176, 4, + 2, 0, 19, 0, 7, 0,177, 4, 7, 0,178, 4, 36, 0, 79, 0, 51, 0,122, 1, 2, 0,123, 1, 2, 0,179, 4, 30, 0,148, 0, +180, 0, 8, 0,180, 0, 0, 0,180, 0, 1, 0, 4, 0,117, 3, 4, 0,180, 4, 4, 0, 19, 0, 2, 0,181, 4, 2, 0,182, 4, + 32, 0,161, 0,181, 0, 13, 0, 9, 0,183, 4, 9, 0,184, 4, 4, 0,185, 4, 4, 0,186, 4, 4, 0,187, 4, 4, 0,188, 4, + 4, 0,189, 4, 4, 0,190, 4, 4, 0,191, 4, 4, 0,192, 4, 4, 0,193, 4, 4, 0, 37, 0, 0, 0,194, 4,182, 0, 5, 0, + 9, 0,195, 4, 9, 0,196, 4, 4, 0,197, 4, 4, 0, 69, 0, 0, 0,198, 4,183, 0, 17, 0, 4, 0,199, 4, 4, 0,200, 4, + 4, 0,201, 4, 4, 0,202, 4, 4, 0,203, 4, 4, 0,204, 4, 4, 0,205, 4, 4, 0,206, 4, 4, 0,207, 4, 4, 0,208, 4, + 4, 0,209, 4, 4, 0,210, 4, 2, 0,211, 4, 2, 0,212, 4, 4, 0,213, 4, 4, 0,214, 4, 4, 0, 89, 0,184, 0, 15, 0, + 4, 0, 17, 0, 4, 0,201, 4, 4, 0,215, 4, 4, 0,216, 4, 4, 0,217, 4, 4, 0,218, 4, 7, 0,219, 4, 4, 0,220, 4, + 4, 0, 90, 0, 4, 0,221, 4, 4, 0,222, 4, 4, 0,223, 4, 4, 0,224, 4, 4, 0,225, 4, 26, 0, 30, 0,185, 0, 7, 0, + 4, 0,226, 4, 7, 0,227, 4, 7, 0,228, 4, 7, 0,229, 4, 4, 0,230, 4, 2, 0, 19, 0, 2, 0, 37, 0,186, 0, 11, 0, +186, 0, 0, 0,186, 0, 1, 0, 0, 0, 20, 0, 66, 0,231, 4, 67, 0,232, 4, 4, 0,117, 3, 4, 0,233, 4, 4, 0,234, 4, + 4, 0, 37, 0, 4, 0,235, 4, 4, 0,236, 4,187, 0,111, 0,181, 0,237, 4,182, 0,238, 4,183, 0,239, 4,184, 0,240, 4, + 4, 0, 10, 3, 4, 0,121, 0, 4, 0, 41, 4, 7, 0,241, 4, 4, 0,242, 4, 4, 0,243, 4, 4, 0,244, 4, 4, 0,245, 4, + 2, 0, 19, 0, 2, 0,246, 4, 7, 0,247, 4, 7, 0,248, 4, 7, 0,249, 4, 7, 0,250, 4, 7, 0,251, 4, 2, 0,252, 4, + 2, 0,253, 4, 2, 0,254, 4, 2, 0,255, 4, 2, 0,243, 0, 2, 0, 0, 5, 2, 0, 1, 5, 2, 0, 2, 5, 2, 0, 3, 5, + 2, 0, 4, 5, 2, 0, 91, 1, 2, 0,106, 0, 2, 0, 5, 5, 2, 0, 6, 5, 2, 0, 7, 5, 2, 0, 8, 5, 2, 0, 9, 5, + 2, 0, 10, 5, 2, 0, 11, 5, 2, 0, 12, 5, 2, 0, 13, 5, 2, 0, 92, 1, 2, 0, 14, 5, 2, 0, 15, 5, 2, 0, 16, 5, + 2, 0, 17, 5, 4, 0, 18, 5, 4, 0, 69, 1, 4, 0, 19, 5, 2, 0, 20, 5, 2, 0, 21, 5, 2, 0, 22, 5, 2, 0,248, 1, + 2, 0, 23, 5, 2, 0, 24, 5, 2, 0, 25, 5, 2, 0, 26, 5, 24, 0, 27, 5, 24, 0, 28, 5, 23, 0, 29, 5, 12, 0, 30, 5, + 2, 0, 31, 5, 2, 0, 32, 5, 7, 0, 33, 5, 7, 0, 34, 5, 7, 0, 35, 5, 7, 0, 36, 5, 4, 0, 37, 5, 7, 0, 38, 5, + 7, 0, 39, 5, 7, 0, 40, 5, 7, 0, 41, 5, 2, 0, 42, 5, 2, 0, 43, 5, 2, 0, 44, 5, 2, 0, 45, 5, 2, 0, 46, 5, + 2, 0, 47, 5, 7, 0, 48, 5, 7, 0, 49, 5, 7, 0, 50, 5, 0, 0, 51, 5, 0, 0, 52, 5, 4, 0, 53, 5, 2, 0, 54, 5, + 2, 0,226, 1, 0, 0, 55, 5, 7, 0, 56, 5, 7, 0, 57, 5, 0, 0, 58, 5, 0, 0, 59, 5, 0, 0, 60, 5, 0, 0, 61, 5, + 4, 0, 62, 5, 2, 0, 63, 5, 2, 0, 64, 5, 7, 0, 65, 5, 7, 0, 66, 5, 2, 0, 67, 5, 2, 0, 68, 5, 7, 0, 69, 5, + 2, 0, 70, 5, 2, 0, 71, 5, 4, 0, 72, 5, 2, 0, 73, 5, 2, 0, 74, 5, 2, 0, 75, 5, 2, 0, 76, 5, 7, 0, 77, 5, + 7, 0, 69, 0, 42, 0, 78, 5, 0, 0, 79, 5,188, 0, 9, 0,188, 0, 0, 0,188, 0, 1, 0, 0, 0, 20, 0, 2, 0, 80, 5, + 2, 0, 81, 5, 2, 0, 82, 5, 2, 0, 89, 0, 7, 0, 83, 5, 7, 0, 69, 0,189, 0, 7, 0, 2, 0,201, 2, 2, 0, 69, 1, + 2, 0, 65, 3, 2, 0, 84, 5, 7, 0, 85, 5, 7, 0, 69, 0, 42, 0, 86, 5,190, 0, 5, 0, 7, 0, 87, 5, 0, 0, 17, 0, + 0, 0, 89, 0, 0, 0, 69, 0, 0, 0,226, 1,191, 0, 28, 0, 7, 0,132, 4, 7, 0,133, 4, 2, 0, 69, 1, 2, 0, 19, 0, + 2, 0, 88, 5, 2, 0,179, 4, 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4, 2, 0,138, 4, 2, 0,139, 4, 2, 0,140, 4, +190, 0, 89, 5, 2, 0,252, 4, 2, 0,253, 4, 2, 0,254, 4, 2, 0,255, 4, 2, 0,243, 0, 2, 0, 0, 5, 2, 0, 90, 5, + 2, 0, 1, 5,189, 0, 91, 5, 2, 0, 92, 5, 2, 0, 3, 5, 2, 0, 6, 5, 2, 0, 7, 5, 7, 0, 93, 5, 7, 0, 89, 0, +192, 0, 6, 0,192, 0, 0, 0,192, 0, 1, 0, 4, 0,228, 3, 0, 0,240, 3, 4, 0, 19, 0, 32, 0, 94, 5,193, 0, 6, 0, +194, 0, 95, 5, 4, 0, 96, 5, 4, 0, 97, 5, 9, 0, 98, 5, 0, 0, 99, 5, 4, 0, 90, 0,195, 0, 8, 0,193, 0,100, 5, + 2, 0, 19, 0, 2, 0, 37, 0, 2, 0,101, 5, 2, 0,102, 5, 2, 0,103, 5, 4, 0, 89, 0, 9, 0,104, 5,196, 0, 6, 0, + 2, 0,106, 0, 2, 0,234, 3, 2, 0,105, 5, 2, 0,195, 2, 4, 0, 19, 0, 7, 0,212, 2,197, 0, 14, 0, 2, 0, 19, 0, + 2, 0,106, 5, 2, 0,107, 5, 2, 0,108, 5,196, 0,109, 5, 9, 0,104, 5, 7, 0,110, 5, 7, 0, 56, 0, 4, 0,111, 5, + 4, 0,112, 5, 4, 0,113, 5, 4, 0,114, 5, 46, 0,129, 0, 32, 0,161, 0,198, 0, 4, 0,198, 0, 0, 0,198, 0, 1, 0, + 0, 0,115, 5, 7, 0,116, 5,199, 0, 14, 0,193, 0,100, 5, 4, 0, 90, 0, 4, 0,117, 5, 7, 0,118, 5, 7, 0,119, 5, + 7, 0,120, 5, 4, 0,121, 5, 4, 0,122, 5, 7, 0,123, 5, 7, 0,124, 5, 4, 0,125, 5, 7, 0,126, 5, 7, 0,127, 5, + 4, 0, 37, 0,200, 0, 7, 0,193, 0,100, 5, 2, 0, 19, 0, 2, 0, 37, 0, 4, 0, 36, 0, 4, 0,128, 5, 86, 0,129, 5, + 9, 0,104, 5,201, 0, 74, 0,200, 0,130, 5,200, 0,131, 5,199, 0, 84, 3, 7, 0,132, 5, 2, 0,133, 5, 2, 0,134, 5, + 7, 0,135, 5, 7, 0,136, 5, 2, 0,234, 3, 2, 0,137, 5, 7, 0,138, 5, 7, 0,139, 5, 7, 0,140, 5, 2, 0,141, 5, + 2, 0,111, 5, 2, 0,142, 5, 2, 0,143, 5, 2, 0,144, 5, 2, 0,145, 5, 7, 0,146, 5, 7, 0,147, 5, 7, 0,148, 5, + 2, 0,149, 5, 2, 0,150, 5, 2, 0,151, 5, 2, 0,152, 5, 2, 0,153, 5, 2, 0,154, 5, 2, 0,155, 5,195, 0,156, 5, +197, 0,157, 5, 7, 0,158, 5, 7, 0,159, 5, 7, 0,160, 5, 2, 0,161, 5, 2, 0,162, 5, 0, 0,163, 5, 0, 0,164, 5, + 0, 0,165, 5, 0, 0,166, 5, 0, 0,167, 5, 0, 0,168, 5, 2, 0,169, 5, 7, 0,170, 5, 7, 0,171, 5, 7, 0,172, 5, + 7, 0,173, 5, 7, 0,174, 5, 7, 0,175, 5, 7, 0,176, 5, 7, 0,177, 5, 7, 0,178, 5, 7, 0,179, 5, 2, 0,180, 5, + 0, 0,181, 5, 0, 0,182, 5, 0, 0,183, 5, 0, 0,184, 5, 32, 0,185, 5, 0, 0,186, 5, 0, 0,187, 5, 0, 0,188, 5, + 0, 0,189, 5, 0, 0,190, 5, 0, 0,191, 5, 0, 0,192, 5, 0, 0,193, 5, 2, 0,194, 5, 2, 0,195, 5, 2, 0,196, 5, + 2, 0,197, 5, 2, 0,198, 5, 4, 0,199, 5, 4, 0,200, 5,202, 0, 8, 0, 4, 0,201, 5, 4, 0,202, 5, 4, 0,203, 5, + 4, 0,204, 5, 4, 0,205, 5, 4, 0,206, 5, 4, 0, 53, 0, 4, 0,115, 2,203, 0, 3, 0, 7, 0,207, 5, 2, 0,208, 5, + 2, 0, 19, 0,204, 0, 4, 0, 7, 0,209, 5, 4, 0, 19, 0, 4, 0,210, 5, 4, 0, 56, 0, 46, 0, 42, 0, 27, 0, 31, 0, + 39, 0, 74, 0, 32, 0, 94, 5,179, 0,211, 5, 46, 0,212, 5, 47, 0,235, 0, 12, 0,213, 5,180, 0,214, 5, 32, 0,215, 5, + 7, 0,216, 5, 7, 0,217, 5, 7, 0,218, 5, 7, 0,219, 5, 4, 0,117, 3, 4, 0,220, 5, 4, 0, 89, 0, 2, 0, 19, 0, + 2, 0, 63, 1, 60, 0, 58, 1,205, 0,221, 5,201, 0,222, 5,206, 0,223, 5,187, 0,179, 0,185, 0,224, 5, 12, 0,100, 0, + 12, 0,225, 5, 9, 0,226, 5, 9, 0,227, 5, 9, 0,228, 5,207, 0,229, 5, 2, 0,230, 5, 2, 0,231, 5, 2, 0,244, 0, + 2, 0,232, 5, 4, 0,233, 5, 4, 0,234, 5, 12, 0,235, 5,190, 0, 89, 5,191, 0,236, 5,203, 0,237, 5,163, 0, 97, 3, +204, 0,238, 5,208, 0, 11, 0,208, 0, 0, 0,208, 0, 1, 0, 47, 0,235, 0, 45, 0, 57, 1, 7, 0, 79, 2, 7, 0, 80, 2, + 7, 0,106, 0, 7, 0,239, 5, 2, 0,240, 5, 2, 0, 19, 0, 7, 0, 69, 0,209, 0, 39, 0, 7, 0,241, 5, 7, 0,242, 5, + 7, 0,243, 5, 7, 0,244, 5, 7, 0,245, 5, 7, 0,246, 5, 7, 0,247, 5, 7, 0,248, 5, 7, 0,249, 5, 7, 0, 76, 1, + 7, 0,250, 5, 7, 0,251, 5, 7, 0,252, 5, 7, 0,253, 5, 7, 0,168, 0, 2, 0,254, 5, 2, 0,255, 5, 2, 0, 0, 6, + 2, 0, 37, 0, 2, 0, 1, 6, 2, 0, 2, 6, 2, 0, 3, 6, 2, 0,240, 5, 7, 0, 4, 6, 7, 0, 5, 6, 71, 0, 6, 6, +163, 0, 97, 3,209, 0, 7, 6,210, 0, 8, 6,211, 0, 9, 6,212, 0, 10, 6,213, 0, 11, 6,214, 0, 12, 6, 7, 0, 13, 6, + 2, 0, 14, 6, 2, 0, 15, 6, 7, 0, 16, 6, 7, 0, 17, 6, 7, 0, 18, 6,215, 0, 55, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 7, 0,249, 5, 7, 0, 76, 1, 7, 0, 89, 0, 4, 0, 23, 6, + 2, 0, 3, 6, 2, 0,240, 5, 32, 0, 94, 5, 32, 0, 24, 6, 12, 0, 25, 6,208, 0, 26, 6,215, 0, 7, 6, 0, 0, 27, 6, + 4, 0,117, 3, 4, 0,220, 5, 2, 0, 28, 6, 2, 0, 69, 0, 2, 0, 29, 6, 2, 0, 30, 6, 2, 0,226, 1, 2, 0, 19, 0, + 2, 0, 17, 2, 2, 0, 31, 6, 7, 0,111, 0, 7, 0, 32, 6, 7, 0, 16, 6, 7, 0, 18, 6, 7, 0, 33, 6, 7, 0, 34, 6, + 7, 0,168, 0, 7, 0,216, 5, 2, 0, 35, 6, 2, 0,248, 1, 2, 0, 36, 6, 2, 0, 37, 6, 2, 0, 38, 6, 2, 0, 39, 6, + 2, 0, 40, 6, 2, 0, 41, 6, 2, 0, 42, 6, 2, 0, 0, 6, 4, 0, 43, 6, 12, 0, 44, 6, 2, 0, 45, 6, 2, 0,129, 2, + 2, 0, 46, 6, 0, 0, 47, 6, 0, 0, 48, 6, 9, 0, 49, 6,163, 0, 97, 3,217, 0, 24, 0, 24, 0, 36, 0, 24, 0, 63, 0, + 23, 0, 50, 6, 23, 0, 51, 6, 23, 0, 52, 6, 7, 0, 53, 6, 7, 0, 54, 6, 7, 0, 55, 6, 7, 0, 56, 6, 2, 0, 57, 6, + 2, 0, 58, 6, 2, 0, 59, 6, 2, 0, 60, 6, 2, 0, 61, 6, 2, 0, 19, 0, 2, 0, 62, 6, 2, 0, 63, 6, 2, 0, 64, 6, + 2, 0, 65, 6, 2, 0, 66, 6, 2, 0, 30, 6, 7, 0, 67, 6, 4, 0, 68, 6, 4, 0, 69, 6,216, 0, 6, 0,216, 0, 0, 0, +216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,218, 0, 8, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,219, 0, 70, 6, 46, 0,129, 0,220, 0, 14, 0,216, 0, 0, 0, +216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6,221, 0, 72, 6, 12, 0, 73, 6, + 2, 0, 69, 1, 2, 0, 74, 6, 4, 0, 19, 0, 7, 0, 75, 6, 4, 0, 30, 6,222, 0, 20, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,210, 0, 8, 6,217, 0, 71, 6, 2, 0, 76, 6, 2, 0, 77, 6, + 2, 0, 78, 6, 2, 0, 79, 6, 2, 0, 62, 6, 2, 0, 80, 6, 0, 0, 19, 0, 0, 0,179, 4, 9, 0, 54, 2, 4, 0, 81, 6, + 4, 0, 82, 6, 27, 0, 83, 6,223, 0, 18, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, + 2, 0, 22, 6,217, 0, 71, 6, 7, 0, 79, 2, 7, 0, 80, 2, 2, 0, 76, 6, 2, 0, 84, 6, 2, 0, 85, 6, 2, 0, 86, 6, + 4, 0, 19, 0, 7, 0, 87, 6, 4, 0,240, 5, 4, 0, 37, 0,163, 0, 97, 3,224, 0, 15, 0, 0, 0, 88, 6, 0, 0, 89, 6, + 0, 0, 90, 6, 0, 0, 91, 6, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 92, 6, 2, 0, 93, 6, 2, 0,169, 1, 2, 0, 94, 6, + 4, 0, 95, 6, 4, 0, 96, 6, 2, 0, 97, 6, 2, 0, 37, 0, 0, 0, 98, 6,225, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 19, 6, 4, 0, 20, 6, 4, 0, 99, 6,224, 0,100, 6,226, 0,101, 6, 12, 0,102, 6, 12, 0,103, 6,227, 0,104, 6, +214, 0,105, 6,228, 0,106, 6, 2, 0,107, 6, 2, 0,108, 6, 2, 0,109, 6, 2, 0, 69, 0,229, 0, 17, 0,216, 0, 0, 0, +216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6, 12, 0,110, 6,230, 0,111, 6, + 0, 0,112, 6,231, 0,113, 6, 4, 0,114, 6, 4, 0,115, 6, 2, 0, 19, 0, 2, 0,116, 6, 2, 0,117, 6, 2, 0, 37, 0, +232, 0, 32, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 47, 0,220, 2, + 45, 0, 57, 1, 63, 0,118, 6, 2, 0,128, 0, 2, 0,119, 6, 2, 0, 69, 0, 2, 0,120, 6, 4, 0, 19, 0, 2, 0,121, 6, + 2, 0,122, 6, 2, 0,123, 6, 2, 0,226, 1, 0, 0,124, 6, 0, 0,125, 6, 0, 0,126, 6, 0, 0, 30, 6, 7, 0,127, 6, + 7, 0, 79, 2, 7, 0, 80, 2, 7, 0, 87, 6, 7, 0,248, 1, 7, 0,128, 6, 7, 0,129, 6,163, 0, 97, 3,233, 0,130, 6, +234, 0,131, 6,235, 0, 11, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, + 2, 0, 74, 6, 2, 0, 19, 0, 4, 0, 37, 0,221, 0, 72, 6,217, 0, 71, 6,236, 0, 27, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 42, 0,132, 6, 4, 0,133, 6, 4, 0,134, 6, 2, 0, 90, 0, + 2, 0,128, 0, 2, 0,135, 6, 0, 0,136, 6, 0, 0,137, 6, 4, 0,138, 6, 4, 0,139, 6, 4, 0,140, 6, 4, 0,141, 6, + 2, 0,142, 6, 2, 0,143, 6, 7, 0,144, 6, 23, 0,145, 6, 23, 0,146, 6, 4, 0,147, 6, 4, 0,148, 6, 0, 0,149, 6, + 0, 0,150, 6,237, 0, 10, 0, 27, 0, 31, 0, 9, 0,151, 6, 9, 0,152, 6, 9, 0,153, 6, 9, 0,154, 6, 9, 0,155, 6, + 4, 0, 90, 0, 4, 0,156, 6, 0, 0,157, 6, 0, 0,158, 6,238, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, + 4, 0, 20, 6, 7, 0, 21, 6,237, 0,159, 6, 2, 0, 90, 0, 2, 0,128, 0, 4, 0, 89, 0, 9, 0,160, 6,239, 0, 9, 0, +239, 0, 0, 0,239, 0, 1, 0, 4, 0, 17, 0, 4, 0, 19, 0, 7, 0,161, 6, 4, 0, 23, 0, 4, 0,236, 3, 4, 0,237, 3, + 4, 0,124, 0,240, 0, 11, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6,217, 0, 71, 6, + 12, 0,162, 6, 4, 0,163, 6, 4, 0, 37, 0, 4, 0, 19, 0, 4, 0,164, 6,241, 0, 25, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6, 27, 0,165, 6, 27, 0, 80, 0, 2, 0, 19, 0, + 2, 0,128, 0, 7, 0,166, 6, 9, 0,167, 6, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0, 87, 6, 7, 0, 18, 6, 7, 0,168, 6, + 7, 0,169, 6, 60, 0, 58, 1, 60, 0,170, 6, 4, 0,171, 6, 2, 0,172, 6, 2, 0, 37, 0,163, 0, 97, 3,242, 0, 10, 0, +216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 2, 0, 19, 0, 2, 0,126, 3, + 4, 0, 37, 0,163, 0, 97, 3,243, 0, 42, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, + 2, 0, 22, 6,217, 0, 71, 6,226, 0,101, 6, 0, 0, 88, 6, 0, 0, 89, 6, 0, 0, 90, 6, 2, 0, 17, 0, 2, 0,173, 6, + 2, 0, 19, 0, 2, 0, 92, 6, 9, 0,167, 6, 4, 0, 95, 6, 4, 0,174, 6, 4, 0,175, 6, 4, 0, 96, 6, 23, 0,176, 6, + 23, 0,177, 6, 7, 0,178, 6, 7, 0,179, 6, 7, 0,180, 6, 7, 0,166, 6, 2, 0,181, 6, 2, 0,234, 0, 2, 0,169, 1, + 2, 0, 94, 6, 2, 0, 37, 0, 2, 0, 89, 0, 2, 0,182, 6, 2, 0,183, 6, 9, 0,184, 6, 9, 0,185, 6, 9, 0,186, 6, + 9, 0,187, 6, 9, 0,188, 6, 2, 0,189, 6, 0, 0,190, 6, 57, 0,191, 6,244, 0, 7, 0,244, 0, 0, 0,244, 0, 1, 0, + 4, 0,192, 6, 4, 0, 23, 0, 0, 0, 83, 0, 4, 0,193, 6, 4, 0, 17, 0,245, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 4, 0, 17, 0, 4, 0,194, 6, 4, 0, 19, 0, 4, 0,135, 6, + 12, 0,195, 6, 12, 0,196, 6, 0, 0,197, 6, 0, 0,198, 6, 4, 0,199, 6, 4, 0,200, 6,246, 0, 6, 0,216, 0, 0, 0, +216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 4, 0, 37, 0, 0, 0,201, 6,247, 0, 7, 0,247, 0, 0, 0,247, 0, 1, 0, + 0, 0,202, 6, 2, 0,203, 6, 2, 0,204, 6, 2, 0,205, 6, 2, 0, 37, 0,248, 0, 12, 0, 2, 0,204, 6, 2, 0,206, 6, + 2, 0,207, 6, 0, 0,181, 2, 2, 0,208, 6, 2, 0,209, 6, 2, 0,210, 6, 2, 0,211, 6, 2, 0,212, 6, 2, 0, 62, 6, + 7, 0,213, 6, 7, 0,214, 6,249, 0, 18, 0,249, 0, 0, 0,249, 0, 1, 0, 0, 0,240, 3,248, 0,215, 6,248, 0,216, 6, +248, 0,217, 6,248, 0,218, 6, 7, 0,219, 6, 2, 0,220, 6, 2, 0,221, 6, 2, 0,222, 6, 2, 0,223, 6, 2, 0,224, 6, + 2, 0,225, 6, 2, 0,226, 6, 2, 0,227, 6, 2, 0,228, 6, 2, 0,229, 6,250, 0, 10, 0, 0, 0,230, 6, 0, 0,231, 6, + 0, 0,232, 6, 0, 0,233, 6, 0, 0,234, 6, 0, 0,235, 6, 2, 0,236, 6, 2, 0,237, 6, 2, 0,238, 6, 2, 0,239, 6, +251, 0, 8, 0, 0, 0,240, 6, 0, 0,241, 6, 0, 0,242, 6, 0, 0,243, 6, 0, 0,244, 6, 0, 0,245, 6, 7, 0,239, 5, + 7, 0, 37, 0,252, 0, 18, 0,250, 0,246, 6,250, 0,247, 6,250, 0,248, 6,250, 0,249, 6,250, 0,250, 6,250, 0,251, 6, +250, 0,252, 6,250, 0,253, 6,250, 0,254, 6,250, 0,255, 6,250, 0, 0, 7,250, 0, 1, 7,250, 0, 2, 7,250, 0, 3, 7, +250, 0, 4, 7,250, 0, 5, 7,251, 0, 6, 7, 0, 0, 7, 7,253, 0, 92, 0, 0, 0, 8, 7, 0, 0, 9, 7, 0, 0,234, 6, + 0, 0, 10, 7, 0, 0, 11, 7, 0, 0, 12, 7, 0, 0, 13, 7, 0, 0, 14, 7, 0, 0, 15, 7, 0, 0, 16, 7, 0, 0, 17, 7, + 0, 0, 18, 7, 0, 0, 19, 7, 0, 0, 20, 7, 0, 0, 21, 7, 0, 0, 22, 7, 0, 0, 23, 7, 0, 0, 24, 7, 0, 0, 25, 7, + 0, 0, 26, 7, 0, 0, 27, 7, 0, 0, 28, 7, 0, 0, 29, 7, 0, 0, 30, 7, 0, 0, 31, 7, 0, 0, 32, 7, 0, 0, 33, 7, + 0, 0, 34, 7, 0, 0, 35, 7, 0, 0, 36, 7, 0, 0, 37, 7, 0, 0, 38, 7, 0, 0, 39, 7, 0, 0, 40, 7, 0, 0, 41, 7, + 0, 0, 42, 7, 0, 0, 43, 7, 0, 0, 44, 7, 0, 0, 45, 7, 0, 0, 46, 7, 0, 0, 47, 7, 0, 0, 48, 7, 0, 0, 49, 7, + 0, 0, 50, 7, 0, 0, 51, 7, 0, 0, 52, 7, 0, 0, 53, 7, 0, 0, 54, 7, 0, 0, 55, 7, 0, 0, 56, 7, 0, 0, 57, 7, + 0, 0, 58, 7, 0, 0, 59, 7, 0, 0, 60, 7, 0, 0, 61, 7, 0, 0, 62, 7, 0, 0, 63, 7, 0, 0, 64, 7, 0, 0, 65, 7, + 0, 0, 66, 7, 0, 0, 67, 7, 0, 0, 68, 7, 0, 0, 69, 7, 0, 0, 70, 7, 0, 0, 71, 7, 0, 0, 72, 7, 0, 0, 73, 7, + 0, 0, 74, 7, 0, 0, 75, 7, 0, 0, 76, 7, 0, 0, 77, 7, 0, 0, 78, 7, 0, 0, 79, 7, 0, 0, 80, 7, 0, 0, 81, 7, + 0, 0, 82, 7, 0, 0, 83, 7, 0, 0, 84, 7, 0, 0, 85, 7, 0, 0, 86, 7, 0, 0, 87, 7, 0, 0, 88, 7, 0, 0, 89, 7, + 0, 0, 90, 7, 0, 0, 91, 7, 0, 0, 92, 7, 0, 0, 93, 7, 0, 0, 94, 7, 0, 0, 95, 7, 0, 0, 96, 7, 0, 0, 97, 7, + 0, 0, 98, 7,254, 0, 5, 0, 0, 0, 99, 7, 0, 0, 32, 7, 0, 0, 34, 7, 2, 0, 19, 0, 2, 0, 37, 0,255, 0, 25, 0, +255, 0, 0, 0,255, 0, 1, 0, 0, 0, 20, 0,252, 0,100, 7,253, 0,101, 7,253, 0,102, 7,253, 0,103, 7,253, 0,104, 7, +253, 0,105, 7,253, 0,106, 7,253, 0,107, 7,253, 0,108, 7,253, 0,109, 7,253, 0,110, 7,253, 0,111, 7,253, 0,112, 7, +253, 0,113, 7,253, 0,114, 7,253, 0,115, 7,253, 0,116, 7,253, 0,117, 7,253, 0,118, 7,254, 0,119, 7, 4, 0,120, 7, + 4, 0, 37, 0, 0, 1, 3, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0,121, 7, 1, 1, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, + 7, 0,128, 2, 7, 0,122, 7, 7, 0, 32, 2, 2, 1, 88, 0, 4, 0, 19, 0, 4, 0,123, 7, 4, 0,124, 7, 0, 0,125, 7, + 0, 0,126, 7, 0, 0,127, 7, 0, 0,128, 7, 0, 0,129, 7, 0, 0,130, 7, 0, 0,131, 7, 0, 0,132, 7, 0, 0,133, 7, + 0, 0,134, 7, 4, 0,135, 7, 2, 0,136, 7, 2, 0,137, 7, 2, 0,138, 7, 2, 0,139, 7, 4, 0,140, 7, 4, 0,141, 7, + 4, 0,142, 7, 4, 0,143, 7, 2, 0,144, 7, 2, 0,145, 7, 4, 0,146, 7, 4, 0,147, 7, 4, 0,148, 7, 4, 0,149, 7, + 4, 0,150, 7, 4, 0,195, 6, 4, 0,151, 7, 2, 0,152, 7, 2, 0,153, 7, 2, 0,154, 7, 2, 0,155, 7, 12, 0,156, 7, + 12, 0,157, 7, 12, 0,158, 7, 12, 0,159, 7, 12, 0,160, 7, 0, 0,161, 7, 2, 0,162, 7, 2, 0,163, 7, 2, 0,164, 7, + 2, 0,165, 7, 2, 0,166, 7, 2, 0,167, 7, 2, 0,168, 7, 2, 0,169, 7, 1, 1,170, 7, 2, 0,171, 7, 2, 0,172, 7, + 2, 0,173, 7, 2, 0,174, 7, 2, 0,175, 7, 2, 0,176, 7, 2, 0,177, 7, 2, 0,178, 7, 4, 0,179, 7, 4, 0,180, 7, + 2, 0,181, 7, 2, 0,182, 7, 2, 0,183, 7, 2, 0,184, 7, 2, 0,185, 7, 2, 0,186, 7, 2, 0,187, 7, 2, 0,188, 7, + 2, 0,189, 7, 2, 0,190, 7, 2, 0,191, 7, 2, 0,192, 7, 2, 0,193, 7, 2, 0,194, 7, 2, 0,195, 7, 2, 0,196, 7, + 2, 0,197, 7, 2, 0,179, 4, 0, 0,198, 7, 0, 0,199, 7, 7, 0,200, 7, 2, 0,161, 5, 2, 0,162, 5, 55, 0,201, 7, + 4, 0,202, 7, 7, 0,203, 7, 7, 0,204, 7, 7, 0,205, 7,219, 0, 21, 0, 27, 0, 31, 0, 12, 0,206, 7, 12, 0,207, 7, + 12, 0,208, 7, 12, 0, 19, 6, 46, 0,129, 0, 46, 0,209, 7, 2, 0,210, 7, 2, 0,211, 7, 2, 0,212, 7, 2, 0,213, 7, + 2, 0,214, 7, 2, 0,215, 7, 2, 0,216, 7, 2, 0,217, 7, 2, 0,218, 7, 2, 0,219, 7, 4, 0, 69, 0,214, 0,220, 7, + 9, 0,221, 7, 2, 0,222, 7, 3, 1, 5, 0, 3, 1, 0, 0, 3, 1, 1, 0, 3, 1,223, 7, 13, 0,224, 7, 4, 0, 19, 0, + 4, 1, 7, 0, 4, 1, 0, 0, 4, 1, 1, 0, 3, 1,225, 7, 3, 1,226, 7, 2, 0, 28, 5, 2, 0, 19, 0, 4, 0, 37, 0, + 5, 1, 25, 0, 5, 1, 0, 0, 5, 1, 1, 0, 6, 1,227, 7, 7, 1,106, 6, 0, 0,228, 7, 0, 0,229, 7, 0, 0,230, 7, + 2, 0,231, 7, 2, 0,232, 7, 2, 0,233, 7, 2, 0,234, 7, 2, 0,235, 7, 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,236, 7, + 2, 0,237, 7, 2, 0,238, 7, 4, 0,239, 7, 5, 1,240, 7, 9, 0,241, 7, 4, 0,242, 7, 4, 0,243, 7, 4, 0,244, 7, + 4, 0,245, 7, 0, 0,246, 7, 8, 1, 22, 0, 8, 1, 0, 0, 8, 1, 1, 0, 3, 1,225, 7, 3, 1,226, 7, 3, 1,247, 7, + 3, 1,248, 7,219, 0,249, 7, 23, 0, 51, 0, 0, 0, 20, 6, 0, 0,250, 7, 2, 0, 63, 6, 2, 0, 64, 6, 2, 0,251, 7, + 2, 0, 37, 0, 2, 0,213, 7, 2, 0,193, 6, 2, 0, 19, 0, 9, 1,227, 7, 12, 0,252, 7, 12, 0, 19, 6, 12, 0,253, 7, + 12, 0,254, 7, 10, 1, 24, 0, 10, 1, 0, 0, 10, 1, 1, 0,217, 0, 71, 6, 23, 0,255, 7, 23, 0, 0, 8, 2, 0, 63, 6, + 2, 0, 64, 6, 2, 0, 1, 8, 2, 0, 2, 8, 2, 0, 3, 8, 2, 0, 19, 0, 7, 0, 75, 2, 2, 0,233, 7, 2, 0,234, 7, + 2, 0,212, 7, 2, 0, 4, 8, 2, 0,217, 7, 2, 0,179, 4, 11, 1,227, 7, 12, 0, 5, 8, 12, 0, 6, 8, 12, 0,253, 7, + 0, 0, 7, 8, 9, 0, 8, 8, 12, 1, 12, 0, 0, 0, 9, 8, 2, 0, 10, 8, 2, 0, 11, 8, 2, 0, 12, 8, 2, 0, 13, 8, + 2, 0, 15, 5, 2, 0, 10, 5,219, 0, 14, 8, 46, 0, 15, 8, 4, 0, 16, 8, 4, 0, 17, 8, 0, 0, 18, 8, 13, 1, 1, 0, + 0, 0, 19, 8, 14, 1, 8, 0, 57, 0, 20, 8, 57, 0, 21, 8, 14, 1, 22, 8, 14, 1, 23, 8, 14, 1, 24, 8, 2, 0,124, 0, + 2, 0, 19, 0, 4, 0, 25, 8, 15, 1, 4, 0, 4, 0,133, 6, 4, 0, 26, 8, 4, 0,138, 6, 4, 0, 27, 8, 16, 1, 2, 0, + 4, 0, 28, 8, 4, 0, 29, 8, 17, 1, 5, 0, 7, 0, 30, 8, 7, 0, 31, 8, 7, 0, 32, 8, 4, 0, 19, 0, 4, 0, 37, 0, + 18, 1, 6, 0, 0, 0, 33, 8, 0, 0, 90, 6, 49, 0,132, 0, 2, 0,106, 0, 2, 0, 14, 5, 4, 0, 37, 0, 19, 1, 21, 0, + 19, 1, 0, 0, 19, 1, 1, 0, 4, 0, 56, 0, 4, 0, 23, 0, 4, 0, 28, 0, 4, 0, 34, 8, 4, 0, 35, 8, 4, 0, 36, 8, + 13, 1, 37, 8, 0, 0, 33, 8, 4, 0, 38, 8, 4, 0, 39, 8, 18, 1, 91, 3, 15, 1, 40, 8, 16, 1, 41, 8, 17, 1, 42, 8, + 14, 1, 43, 8, 14, 1, 44, 8, 14, 1, 45, 8, 57, 0, 46, 8, 57, 0, 47, 8, 20, 1, 12, 0, 0, 0,250, 1, 9, 0,220, 0, + 0, 0,221, 0, 4, 0,224, 0, 4, 0,232, 0, 9, 0,225, 0, 7, 0,227, 0, 7, 0,228, 0, 9, 0, 48, 8, 9, 0, 49, 8, + 9, 0,229, 0, 9, 0,231, 0, 21, 1, 48, 0, 21, 1, 0, 0, 21, 1, 1, 0, 9, 0, 50, 8, 9, 0, 26, 0, 0, 0, 27, 0, + 4, 0, 19, 0, 4, 0, 17, 0, 4, 0, 23, 0, 4, 0, 87, 0, 4, 0, 51, 8, 4, 0, 52, 8, 4, 0, 35, 8, 4, 0, 36, 8, + 4, 0, 53, 8, 4, 0,243, 0, 4, 0, 54, 8, 4, 0, 55, 8, 7, 0, 56, 8, 7, 0, 37, 0, 7, 0, 57, 8, 7, 0, 58, 8, + 4, 0,121, 0, 4, 0, 59, 8, 19, 1, 60, 8, 36, 0, 79, 0, 46, 0,129, 0, 32, 0, 61, 8, 49, 0,132, 0, 7, 0, 62, 8, + 7, 0, 63, 8, 20, 1, 59, 1, 21, 1, 64, 8, 21, 1, 65, 8, 21, 1, 66, 8, 12, 0, 67, 8, 22, 1, 68, 8, 9, 0, 69, 8, + 7, 0,249, 3, 7, 0, 70, 8, 7, 0, 71, 8, 4, 0, 72, 8, 4, 0, 73, 8, 7, 0, 74, 8, 9, 0, 75, 8, 4, 0, 76, 8, + 4, 0, 77, 8, 4, 0, 78, 8, 7, 0, 79, 8, 23, 1, 4, 0, 23, 1, 0, 0, 23, 1, 1, 0, 12, 0, 80, 8, 21, 1, 81, 8, +205, 0, 11, 0, 12, 0, 82, 8, 12, 0, 67, 8, 12, 0, 83, 8, 21, 1, 84, 8, 0, 0, 85, 8, 0, 0, 86, 8, 4, 0, 87, 8, + 4, 0, 88, 8, 4, 0, 89, 8, 4, 0, 37, 0, 24, 0, 90, 8, 24, 1, 4, 0, 7, 0, 91, 8, 7, 0, 65, 3, 2, 0, 92, 8, + 2, 0, 93, 8, 25, 1, 6, 0, 7, 0, 94, 8, 7, 0, 95, 8, 7, 0, 96, 8, 7, 0, 97, 8, 4, 0, 98, 8, 4, 0, 99, 8, + 26, 1, 13, 0, 7, 0,100, 8, 7, 0,101, 8, 7, 0,102, 8, 7, 0,103, 8, 7, 0,104, 8, 7, 0,105, 8, 7, 0,106, 8, + 7, 0,107, 8, 7, 0,108, 8, 7, 0,109, 8, 4, 0,226, 2, 4, 0,110, 8, 4, 0,111, 8, 27, 1, 2, 0, 7, 0, 87, 5, + 7, 0, 37, 0, 28, 1, 5, 0, 7, 0,112, 8, 7, 0,113, 8, 4, 0, 90, 0, 4, 0,182, 2, 4, 0,114, 8, 29, 1, 6, 0, + 29, 1, 0, 0, 29, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,115, 8, 2, 0, 56, 0, 30, 1, 8, 0, 30, 1, 0, 0, + 30, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,115, 8, 2, 0, 56, 0, 7, 0, 23, 0, 7, 0,121, 0, 31, 1, 45, 0, + 31, 1, 0, 0, 31, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,115, 8, 2, 0,239, 0, 2, 0, 35, 4, 2, 0,116, 8, + 7, 0,117, 8, 7, 0, 88, 0, 7, 0,239, 2, 4, 0,118, 8, 4, 0, 81, 0, 4, 0,184, 2, 7, 0,119, 8, 7, 0,120, 8, + 7, 0,121, 8, 7, 0,122, 8, 7, 0,123, 8, 7, 0,124, 8, 7, 0,236, 2, 7, 0, 56, 1, 7, 0,125, 8, 7, 0,126, 8, + 7, 0, 37, 0, 7, 0,127, 8, 7, 0,128, 8, 7, 0,129, 8, 2, 0,130, 8, 2, 0,131, 8, 2, 0,132, 8, 2, 0,133, 8, + 2, 0,134, 8, 2, 0,135, 8, 2, 0,136, 8, 2, 0,137, 8, 2, 0, 17, 2, 2, 0,138, 8, 2, 0, 14, 2, 2, 0,139, 8, + 0, 0,140, 8, 0, 0,141, 8, 7, 0,237, 0, 32, 1,142, 8, 67, 0,229, 1, 33, 1, 16, 0, 33, 1, 0, 0, 33, 1, 1, 0, + 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,115, 8, 2, 0,239, 0, 7, 0,231, 2, 7, 0,232, 2, 7, 0,233, 2, 7, 0, 64, 2, + 7, 0,234, 2, 7, 0,235, 2, 7, 0,143, 8, 7, 0,236, 2, 7, 0,238, 2, 7, 0,239, 2,231, 0, 5, 0, 2, 0, 17, 0, + 2, 0, 25, 8, 2, 0, 19, 0, 2, 0,144, 8, 27, 0,165, 6,230, 0, 3, 0, 4, 0, 68, 0, 4, 0,145, 8,231, 0, 2, 0, + 34, 1, 7, 0, 34, 1, 0, 0, 34, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, 9, 0,146, 8, + 35, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0,147, 8, 4, 0,148, 8, 4, 0, 37, 0, 36, 1, 4, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 2, 0, 89, 0, 2, 0, 69, 0, 37, 1, 4, 0, 0, 0, 20, 0, 66, 0,149, 8, 7, 0, 76, 1, 7, 0, 37, 0, + 38, 1, 6, 0, 2, 0,150, 8, 2, 0,151, 8, 2, 0, 17, 0, 2, 0,152, 8, 0, 0,153, 8, 0, 0,154, 8, 39, 1, 5, 0, + 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0,155, 8, 0, 0,156, 8, 40, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, + 0, 0, 20, 0, 41, 1, 4, 0, 2, 0,157, 8, 2, 0,158, 8, 2, 0, 19, 0, 2, 0, 37, 0, 42, 1, 6, 0, 0, 0, 20, 0, + 0, 0,159, 8, 2, 0,160, 8, 2, 0,236, 2, 2, 0, 69, 1, 2, 0, 69, 0, 43, 1, 5, 0, 0, 0, 20, 0, 7, 0, 65, 3, + 7, 0,129, 4, 2, 0, 19, 0, 2, 0,196, 2, 44, 1, 3, 0, 0, 0, 20, 0, 4, 0,184, 2, 4, 0,157, 8, 45, 1, 7, 0, + 0, 0, 20, 0, 7, 0,129, 4, 0, 0,161, 8, 0, 0,162, 8, 2, 0, 69, 1, 2, 0, 89, 0, 4, 0,163, 8, 46, 1, 4, 0, + 0, 0,164, 8, 0, 0,165, 8, 4, 0, 17, 0, 7, 0,200, 2, 47, 1, 3, 0, 32, 0,166, 8, 0, 0,167, 8, 0, 0,168, 8, + 48, 1, 18, 0, 48, 1, 0, 0, 48, 1, 1, 0, 2, 0, 17, 0, 2, 0,169, 8, 2, 0, 19, 0, 2, 0,170, 8, 2, 0,171, 8, + 2, 0,172, 8, 2, 0, 89, 0, 2, 0, 69, 0, 0, 0, 20, 0, 9, 0, 2, 0, 49, 1,173, 8, 32, 0, 44, 0, 2, 0,105, 5, + 2, 0, 70, 8, 2, 0,174, 8, 2, 0, 37, 0, 50, 1, 11, 0, 0, 0, 20, 0, 0, 0, 17, 0, 0, 0,175, 8, 2, 0, 19, 0, + 2, 0,196, 2, 2, 0,176, 8, 4, 0,177, 8, 4, 0,178, 8, 4, 0,179, 8, 4, 0,180, 8, 4, 0,181, 8, 51, 1, 1, 0, + 0, 0,182, 8, 52, 1, 4, 0, 42, 0,132, 6, 0, 0,121, 7, 4, 0, 69, 1, 4, 0, 19, 0, 49, 1, 18, 0, 49, 1, 0, 0, + 49, 1, 1, 0, 49, 1,183, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,184, 8, 2, 0,172, 8, 2, 0,169, 8, 2, 0,185, 8, + 2, 0, 69, 0, 2, 0,226, 1, 0, 0, 20, 0, 9, 0, 2, 0, 53, 1,173, 8, 48, 1,186, 8, 2, 0, 15, 0, 2, 0,187, 8, + 4, 0,188, 8, 54, 1, 3, 0, 4, 0,210, 2, 4, 0, 37, 0, 32, 0, 44, 0, 55, 1, 12, 0,161, 0,189, 8, 2, 0, 17, 0, + 2, 0, 19, 0, 4, 0,117, 8, 4, 0, 88, 0, 0, 0, 20, 0, 0, 0,190, 8, 2, 0,191, 8, 2, 0,192, 8, 2, 0,193, 8, + 2, 0,194, 8, 7, 0,195, 8, 56, 1, 13, 0, 2, 0, 19, 0, 2, 0,196, 8, 4, 0, 89, 0, 4, 0, 69, 0, 2, 0,197, 8, + 7, 0,249, 3, 7, 0,198, 8, 22, 1, 68, 8, 57, 1,199, 8, 2, 0, 17, 0, 2, 0,248, 1, 2, 0,233, 5, 2, 0,200, 8, + 58, 1, 11, 0, 4, 0,210, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 44, 0, 80, 0,201, 8, 0, 0, 20, 0, 7, 0,202, 8, + 7, 0,203, 8, 7, 0,134, 3, 2, 0,204, 8, 2, 0,205, 8, 59, 1, 5, 0, 2, 0, 17, 0, 2, 0, 89, 0, 4, 0, 37, 0, + 46, 0,129, 0, 32, 0, 94, 5, 60, 1, 5, 0, 4, 0, 37, 0, 4, 0, 17, 0, 0, 0, 20, 0, 0, 0,155, 8, 32, 0, 44, 0, + 61, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,169, 8, 2, 0,135, 3, 7, 0,206, 8, 7, 0,207, 8, 7, 0,179, 4, + 7, 0,147, 3, 7, 0,106, 3, 7, 0,109, 3, 7, 0,208, 8, 7, 0,209, 8, 32, 0,210, 8, 62, 1, 10, 0, 2, 0, 19, 0, + 2, 0, 17, 0, 4, 0,117, 8, 4, 0, 88, 0, 0, 0, 20, 0, 0, 0,190, 8, 2, 0, 89, 0, 2, 0, 69, 0, 2, 0,226, 1, + 2, 0,248, 1, 63, 1, 8, 0, 32, 0, 44, 0, 7, 0,233, 2, 7, 0,211, 8, 7, 0,212, 8, 7, 0, 37, 0, 2, 0, 89, 0, + 2, 0,196, 2, 7, 0, 69, 0, 64, 1, 12, 0, 2, 0, 17, 0, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0,236, 2, 2, 0,210, 2, + 2, 0,213, 8, 4, 0, 37, 0, 7, 0,214, 8, 7, 0,215, 8, 7, 0,216, 8, 7, 0,217, 8, 0, 0,218, 8, 65, 1, 9, 0, + 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,117, 8, 4, 0, 88, 0, 0, 0, 20, 0, 2, 0,179, 4, 2, 0, 63, 0, 2, 0,219, 8, + 2, 0,220, 8, 66, 1, 7, 0, 4, 0,184, 2, 4, 0,221, 8, 4, 0,222, 8, 4, 0,223, 8, 7, 0,224, 8, 7, 0,225, 8, + 0, 0,161, 8, 67, 1, 7, 0, 0, 0,226, 8, 32, 0,227, 8, 0, 0,167, 8, 2, 0,228, 8, 2, 0, 89, 0, 4, 0, 69, 0, + 0, 0,168, 8, 68, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,117, 8, 4, 0, 88, 0, 0, 0,229, 8, 0, 0,230, 8, + 69, 1, 1, 0, 4, 0, 19, 0, 70, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,231, 8, 7, 0,232, 8, + 42, 0,132, 6, 71, 1, 4, 0, 0, 0, 59, 2, 2, 0, 19, 0, 4, 0, 17, 0, 32, 0, 44, 0, 72, 1, 2, 0, 4, 0, 17, 0, + 4, 0, 52, 6, 73, 1, 6, 0, 0, 0,164, 8, 0, 0,165, 8, 4, 0, 17, 0, 7, 0, 25, 2, 32, 0, 44, 3, 32, 0,233, 8, + 53, 1, 10, 0, 53, 1, 0, 0, 53, 1, 1, 0, 53, 1,183, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,169, 8, 2, 0,234, 8, + 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 44, 0, 74, 1, 10, 0, 7, 0,134, 3, 7, 0,235, 8, 7, 0,236, 8, 7, 0,237, 8, + 7, 0,238, 8, 4, 0, 19, 0, 7, 0,213, 8, 7, 0,239, 8, 7, 0,240, 8, 7, 0, 37, 0, 57, 1, 8, 0, 7, 0,241, 8, + 7, 0,242, 8, 7, 0,243, 8, 7, 0,244, 8, 7, 0,245, 8, 7, 0,246, 8, 7, 0,247, 8, 7, 0,248, 8, 22, 1, 16, 0, + 27, 0, 31, 0, 0, 0, 34, 0, 43, 0,147, 0, 9, 0,220, 0, 43, 0,249, 8, 36, 0, 79, 0, 7, 0,249, 3, 7, 0,250, 8, + 7, 0,198, 8, 7, 0,241, 8, 7, 0,242, 8, 7, 0,251, 8, 4, 0, 90, 0, 4, 0, 37, 0, 9, 0,252, 8, 9, 0,253, 8, + 75, 1, 15, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 8, 1,254, 8,217, 0, 71, 6, + 22, 1, 68, 8, 2, 0, 69, 1, 2, 0,196, 8, 2, 0, 79, 2, 2, 0, 80, 2, 2, 0, 19, 0, 2, 0,122, 6, 4, 0, 69, 0, + 76, 1, 6, 0, 76, 1, 0, 0, 76, 1, 1, 0, 32, 0, 44, 0, 9, 0,255, 8, 4, 0,244, 0, 4, 0, 37, 0, 67, 0, 4, 0, + 27, 0, 31, 0, 12, 0, 0, 9, 4, 0,126, 0, 7, 0, 1, 9, 77, 1, 27, 0, 77, 1, 0, 0, 77, 1, 1, 0, 26, 0, 2, 9, + 77, 1, 38, 0, 12, 0, 3, 9, 0, 0, 20, 0, 7, 0, 4, 9, 7, 0, 5, 9, 7, 0, 6, 9, 7, 0, 7, 9, 4, 0, 19, 0, + 7, 0, 8, 9, 7, 0, 9, 9, 7, 0, 10, 9, 7, 0, 76, 1, 7, 0, 25, 2, 7, 0, 11, 9, 7, 0,182, 2, 7, 0, 12, 9, + 7, 0, 13, 9, 7, 0, 14, 9, 7, 0, 15, 9, 7, 0, 16, 9, 7, 0,169, 0, 4, 0,126, 0, 2, 0,142, 5, 2, 0,179, 4, + 78, 1, 25, 0, 27, 0, 31, 0, 39, 0, 74, 0, 12, 0, 17, 9, 12, 0, 18, 9, 12, 0, 19, 9, 77, 1, 20, 9, 9, 0, 21, 9, + 9, 0, 22, 9, 4, 0, 19, 0, 4, 0, 28, 6, 2, 0,240, 2, 2, 0, 81, 6, 4, 0, 37, 0, 4, 0,126, 0, 4, 0, 23, 9, + 2, 0, 24, 9, 2, 0, 25, 9, 2, 0, 26, 9, 2, 0, 27, 9, 4, 0, 28, 9, 4, 0, 29, 9, 4, 0, 30, 9, 4, 0, 31, 9, + 4, 0, 32, 9, 4, 0, 33, 9, 79, 1, 2, 0, 7, 0,142, 2, 4, 0, 19, 0,165, 0, 5, 0, 79, 1, 34, 9, 4, 0,182, 2, + 4, 0, 35, 9, 4, 0, 36, 9, 4, 0, 19, 0,164, 0, 16, 0, 4, 0, 37, 9, 4, 0, 38, 9, 4, 0, 39, 9, 4, 0, 40, 9, + 2, 0, 41, 9, 2, 0, 42, 9, 2, 0, 43, 9, 2, 0,244, 0, 2, 0, 44, 9, 2, 0, 45, 9, 2, 0, 46, 9, 2, 0, 47, 9, + 4, 0, 48, 9, 4, 0, 49, 9, 4, 0, 50, 9, 4, 0, 51, 9, 80, 1, 44, 0, 80, 1, 0, 0, 80, 1, 1, 0, 26, 0, 2, 9, + 12, 0,161, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0, 52, 9, 2, 0, 53, 9, 2, 0, 54, 9, 2, 0,120, 3, 2, 0, 55, 9, + 4, 0, 62, 2, 4, 0, 30, 9, 4, 0, 31, 9, 77, 1, 56, 9, 80, 1, 38, 0, 80, 1, 57, 9, 12, 0, 58, 9, 9, 0, 59, 9, + 9, 0, 60, 9, 9, 0, 61, 9, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 62, 9, 7, 0, 4, 2, 7, 0,111, 3, 7, 0,113, 3, + 2, 0,143, 3, 2, 0, 37, 0, 7, 0, 63, 9, 7, 0, 64, 9, 7, 0,116, 3, 7, 0, 65, 9, 7, 0, 66, 9, 7, 0, 67, 9, + 7, 0, 68, 9, 7, 0, 69, 9, 7, 0, 70, 9, 7, 0, 71, 9, 7, 0, 72, 9, 7, 0, 54, 2,165, 0, 99, 3, 32, 0, 73, 9, + 80, 1, 74, 9,162, 0, 14, 0, 12, 0, 75, 9, 81, 1, 76, 9, 2, 0, 19, 0, 2, 0, 77, 9, 7, 0, 91, 2, 7, 0, 78, 9, + 7, 0, 79, 9, 12, 0, 80, 9, 4, 0, 81, 9, 4, 0, 82, 9, 9, 0, 83, 9, 9, 0, 84, 9,164, 0, 98, 3, 0, 0, 85, 9, + 82, 1, 1, 0, 4, 0, 82, 9, 83, 1, 12, 0, 4, 0, 82, 9, 7, 0,181, 8, 2, 0, 86, 9, 2, 0, 87, 9, 7, 0, 88, 9, + 7, 0, 89, 9, 2, 0, 90, 9, 2, 0, 19, 0, 7, 0, 91, 9, 7, 0, 92, 9, 7, 0, 93, 9, 7, 0, 94, 9, 84, 1, 7, 0, + 84, 1, 0, 0, 84, 1, 1, 0, 12, 0, 95, 9, 4, 0, 19, 0, 4, 0, 96, 9, 0, 0,240, 3,254, 0, 97, 9,161, 0, 7, 0, + 27, 0, 31, 0, 12, 0, 98, 9, 12, 0, 75, 9, 12, 0, 99, 9, 12, 0,100, 0, 4, 0, 19, 0, 4, 0,100, 9,221, 0, 5, 0, + 27, 0,101, 9, 12, 0, 75, 9, 67, 0,102, 9, 4, 0,103, 9, 4, 0, 19, 0, 85, 1, 13, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6,161, 0, 94, 3,221, 0,104, 9, 0, 0, 69, 1, + 0, 0, 74, 6, 2, 0, 19, 0, 7, 0,105, 9, 86, 1, 8, 0, 86, 1, 0, 0, 86, 1, 1, 0, 84, 1,106, 9, 36, 0, 79, 0, + 12, 0,100, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0,107, 9, 87, 1, 5, 0, 87, 1, 0, 0, 87, 1, 1, 0, 36, 0, 79, 0, + 2, 0, 19, 0, 0, 0,108, 9, 88, 1, 14, 0, 88, 1, 0, 0, 88, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, + 0, 0,109, 9, 0, 0,110, 9, 0, 0,108, 9, 7, 0,111, 9, 7, 0,112, 9, 4, 0, 37, 0, 36, 0, 79, 0, 7, 0,113, 9, + 7, 0,114, 9, 89, 1, 9, 0, 89, 1, 0, 0, 89, 1, 1, 0, 32, 0,115, 9, 0, 0,243, 2, 7, 0,116, 9, 2, 0,117, 9, + 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,118, 9, 90, 1, 7, 0, 42, 0,132, 6, 26, 0, 2, 9, 4, 0, 19, 0, 4, 0,119, 9, + 12, 0,120, 9, 32, 0,115, 9, 0, 0,243, 2, 91, 1, 15, 0, 32, 0,115, 9, 2, 0,121, 9, 2, 0, 19, 0, 2, 0,122, 9, + 2, 0,123, 9, 0, 0,243, 2, 32, 0,124, 9, 0, 0,125, 9, 7, 0,126, 9, 7, 0, 25, 2, 7, 0,127, 9, 7, 0,128, 9, + 2, 0, 17, 0, 2, 0, 69, 1, 7, 0, 76, 1, 92, 1, 6, 0, 32, 0,115, 9, 7, 0, 34, 9, 2, 0,129, 9, 2, 0,130, 9, + 2, 0, 19, 0, 2, 0,131, 9, 93, 1, 6, 0, 32, 0,115, 9, 4, 0,132, 9, 4, 0,133, 9, 4, 0, 90, 0, 4, 0, 37, 0, + 0, 0,243, 2, 94, 1, 4, 0, 32, 0,115, 9, 4, 0, 19, 0, 4, 0,132, 9, 0, 0,243, 2, 95, 1, 4, 0, 32, 0,115, 9, + 4, 0, 19, 0, 4, 0,132, 9, 0, 0,243, 2, 96, 1, 4, 0, 32, 0,115, 9, 4, 0, 19, 0, 4, 0,132, 9, 0, 0,243, 2, + 97, 1, 2, 0, 4, 0, 19, 0, 7, 0,249, 3, 98, 1, 2, 0, 32, 0,115, 9, 0, 0,243, 2, 99, 1, 10, 0, 32, 0,115, 9, + 4, 0,134, 9, 7, 0,120, 0, 4, 0, 19, 0, 2, 0,125, 6, 2, 0,135, 9, 2, 0, 89, 0, 2, 0, 69, 0, 7, 0,136, 9, + 0, 0,243, 2,100, 1, 10, 0, 32, 0,115, 9, 2, 0, 17, 0, 2, 0, 43, 4, 4, 0, 87, 0, 4, 0, 88, 0, 7, 0,211, 8, + 7, 0,212, 8, 4, 0, 37, 0,161, 0,189, 8, 0, 0,243, 2,101, 1, 4, 0, 32, 0,115, 9, 4, 0,121, 3, 4, 0,137, 9, + 0, 0,243, 2,102, 1, 4, 0, 32, 0,115, 9, 4, 0,121, 3, 4, 0, 37, 0, 0, 0,243, 2,103, 1, 6, 0, 32, 0,115, 9, + 7, 0,120, 0, 7, 0, 56, 3, 4, 0,138, 9, 2, 0,121, 3, 2, 0,122, 3,104, 1, 6, 0, 32, 0,115, 9, 4, 0,139, 9, + 4, 0,140, 9, 7, 0,141, 9, 7, 0,142, 9, 0, 0,243, 2,105, 1, 16, 0, 32, 0,115, 9, 32, 0, 57, 9, 4, 0, 17, 0, + 7, 0,143, 9, 7, 0,144, 9, 7, 0,145, 9, 7, 0,146, 9, 7, 0,147, 9, 7, 0,148, 9, 7, 0,149, 9, 7, 0,150, 9, + 7, 0,151, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 89, 0, 2, 0, 69, 0,106, 1, 3, 0, 32, 0,115, 9, 4, 0, 19, 0, + 4, 0, 17, 2,107, 1, 5, 0, 32, 0,115, 9, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,152, 9, 0, 0,243, 2,108, 1, 10, 0, + 32, 0,115, 9, 0, 0,243, 2, 2, 0,153, 9, 2, 0,154, 9, 0, 0,155, 9, 0, 0,156, 9, 7, 0,157, 9, 7, 0,158, 9, + 7, 0,159, 9, 7, 0,160, 9,109, 1, 5, 0, 32, 0,115, 9, 0, 0,243, 2, 7, 0,190, 2, 2, 0,161, 9, 2, 0, 19, 0, +110, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,162, 9, 7, 0,163, 9, 2, 0, 19, 0, + 2, 0, 17, 2,111, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,162, 9, 7, 0,163, 9, + 2, 0, 19, 0, 2, 0, 17, 2,112, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,162, 9, + 7, 0,163, 9, 2, 0, 19, 0, 2, 0, 17, 2,113, 1, 7, 0, 32, 0,115, 9, 0, 0,243, 2, 7, 0, 76, 1, 7, 0, 85, 1, + 2, 0, 19, 0, 2, 0, 69, 1, 4, 0, 37, 0,114, 1, 5, 0, 32, 0, 44, 3, 7, 0, 76, 1, 2, 0, 48, 3, 0, 0, 50, 3, + 0, 0,164, 9,115, 1, 10, 0,115, 1, 0, 0,115, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0,165, 9, 7, 0, 19, 1, + 7, 0, 20, 1, 2, 0, 95, 9, 2, 0,166, 9, 32, 0, 44, 0,116, 1, 22, 0,116, 1, 0, 0,116, 1, 1, 0, 2, 0, 19, 0, + 2, 0, 69, 1, 2, 0,167, 9, 2, 0,168, 9, 36, 0, 79, 0,161, 0,189, 8, 32, 0,161, 0, 7, 0, 87, 0, 7, 0, 88, 0, + 7, 0,169, 9, 7, 0,170, 9, 7, 0,171, 9, 7, 0,172, 9, 7, 0,229, 2, 7, 0,173, 9, 7, 0,191, 8, 7, 0,174, 9, + 0, 0,175, 9, 0, 0,176, 9, 12, 0,102, 3,117, 1, 8, 0, 7, 0, 32, 2, 7, 0,211, 8, 7, 0,212, 8, 9, 0, 2, 0, + 2, 0,177, 9, 2, 0,178, 9, 2, 0,179, 9, 2, 0,180, 9,118, 1, 18, 0,118, 1, 0, 0,118, 1, 1, 0,118, 1,181, 9, + 0, 0, 20, 0,117, 1,182, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,183, 9, 2, 0,184, 9, 2, 0,185, 9, 2, 0,186, 9, + 4, 0, 89, 0, 7, 0,187, 9, 7, 0,188, 9, 4, 0,189, 9, 4, 0,190, 9,118, 1,191, 9,119, 1,192, 9,120, 1, 33, 0, +120, 1, 0, 0,120, 1, 1, 0,120, 1,193, 9, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 34, 8, 2, 0, 70, 8, + 2, 0,194, 9, 2, 0,128, 0, 2, 0,184, 9, 2, 0, 25, 8, 12, 0,184, 8, 12, 0,195, 9, 27, 0,165, 6, 9, 0,196, 9, + 7, 0,187, 9, 7, 0,188, 9, 7, 0, 64, 2, 7, 0,197, 9, 2, 0,198, 9, 2, 0,199, 9, 7, 0,200, 9, 7, 0,201, 9, + 2, 0,202, 9, 2, 0,203, 9, 9, 0,204, 9, 24, 0,205, 9, 24, 0,206, 9, 24, 0,207, 9,121, 1,148, 0,122, 1,208, 9, +123, 1,209, 9,119, 1, 8, 0,119, 1, 0, 0,119, 1, 1, 0,120, 1,210, 9,120, 1,211, 9,118, 1,212, 9,118, 1,191, 9, + 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 22, 0, 27, 0, 31, 0, 39, 0, 74, 0,163, 0, 97, 3, 12, 0,213, 9, 12, 0,214, 9, +117, 1,215, 9, 12, 0,216, 9, 4, 0, 17, 0, 4, 0,217, 9, 4, 0,218, 9, 4, 0,219, 9, 4, 0, 19, 0, 4, 0, 37, 0, + 12, 0,220, 9,123, 1,221, 9, 4, 0,222, 9, 9, 0,223, 9, 9, 0,224, 9, 4, 0,225, 9, 9, 0,226, 9, 9, 0,227, 9, + 9, 0,228, 9,124, 1, 6, 0, 4, 0,119, 0, 4, 0,121, 0, 4, 0, 25, 8, 0, 0,229, 9, 0, 0,230, 9, 2, 0, 37, 0, +125, 1, 16, 0, 2, 0,233, 7, 2, 0,234, 7, 2, 0,231, 9, 2, 0,236, 8, 2, 0,232, 9, 2, 0, 67, 0, 7, 0,228, 2, + 7, 0,233, 9, 7, 0,234, 9, 2, 0, 91, 1, 0, 0,235, 9, 0, 0,236, 9, 2, 0,237, 9, 2, 0, 37, 0, 4, 0,238, 9, + 4, 0,239, 9,126, 1, 9, 0, 7, 0,240, 9, 7, 0,241, 9, 7, 0,251, 8, 7, 0, 65, 3, 7, 0,242, 9, 7, 0, 87, 6, + 2, 0, 63, 3, 0, 0,243, 9, 0, 0, 37, 0,127, 1, 4, 0, 7, 0,244, 9, 7, 0,245, 9, 2, 0, 63, 3, 2, 0, 37, 0, +128, 1, 3, 0, 7, 0,246, 9, 7, 0, 56, 8, 7, 0, 15, 0,129, 1, 7, 0, 0, 0,250, 1, 2, 0, 12, 5, 2, 0, 13, 5, + 2, 0, 14, 5, 2, 0,201, 4, 4, 0,121, 0, 4, 0, 41, 4,130, 1, 9, 0, 7, 0,247, 9, 7, 0,248, 9, 7, 0,249, 9, + 7, 0, 75, 2, 7, 0,250, 9, 7, 0,251, 9, 7, 0,252, 9, 2, 0,253, 9, 2, 0,254, 9,131, 1, 4, 0, 2, 0,255, 9, + 2, 0, 0, 10, 2, 0, 1, 10, 2, 0, 2, 10,132, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,133, 1, 2, 0, 0, 0,163, 0, + 0, 0, 3, 10,134, 1, 1, 0, 0, 0, 20, 0,135, 1, 10, 0, 0, 0, 4, 10, 0, 0, 5, 10, 0, 0, 80, 6, 0, 0, 6, 10, + 2, 0,231, 9, 2, 0, 7, 10, 7, 0, 8, 10, 7, 0, 9, 10, 7, 0, 10, 10, 7, 0,173, 9,136, 1, 2, 0, 9, 0, 11, 10, + 9, 0, 12, 10,137, 1, 11, 0, 0, 0, 14, 5, 0, 0, 17, 0, 0, 0, 63, 3, 0, 0, 65, 3, 0, 0, 13, 10, 0, 0,106, 0, + 0, 0, 59, 2, 7, 0, 14, 10, 7, 0, 15, 10, 7, 0, 16, 10, 7, 0, 17, 10,138, 1, 8, 0, 7, 0,150, 8, 7, 0,120, 0, + 7, 0,236, 9, 7, 0,147, 2, 7, 0, 18, 10, 7, 0,233, 0, 7, 0, 19, 10, 4, 0, 17, 0,139, 1, 4, 0, 2, 0, 20, 10, + 2, 0, 21, 10, 2, 0, 22, 10, 2, 0, 37, 0,140, 1, 7, 0, 7, 0, 23, 10, 7, 0,190, 2, 7, 0, 24, 10, 7, 0, 30, 8, + 7, 0, 31, 8, 7, 0, 32, 8, 7, 0, 25, 10,141, 1, 6, 0, 2, 0, 26, 10, 2, 0, 27, 10, 7, 0, 28, 10, 7, 0, 29, 10, + 7, 0, 30, 10, 7, 0, 31, 10,142, 1, 1, 0, 0, 0, 20, 0,143, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 19, 0, + 2, 0, 32, 10,144, 1, 10, 0, 2, 0,229, 3, 2, 0, 19, 0, 7, 0,129, 4, 7, 0, 33, 10, 7, 0, 34, 10, 7, 0, 35, 10, + 7, 0, 36, 10,143, 1, 37, 10,143, 1, 38, 10,143, 1, 39, 10, 63, 0, 11, 0, 4, 0, 19, 0, 4, 0, 63, 0, 4, 0, 40, 10, + 4, 0, 41, 10, 24, 0, 42, 10, 24, 0, 43, 10,144, 1, 44, 10, 7, 0, 45, 10, 7, 0, 46, 10, 7, 0, 47, 10, 7, 0, 48, 10, +234, 0, 10, 0, 4, 0, 95, 9, 4, 0, 49, 10, 7, 0, 50, 10, 7, 0, 51, 10, 7, 0, 52, 10, 7, 0, 53, 10, 7, 0, 10, 0, + 7, 0, 12, 0, 4, 0, 69, 1, 4, 0,233, 2,233, 0, 18, 0, 4, 0,124, 0, 4, 0, 54, 10, 4, 0, 55, 10, 7, 0, 56, 10, + 4, 0, 57, 10, 7, 0, 58, 10, 7, 0, 59, 10, 4, 0, 60, 10, 7, 0, 61, 10, 4, 0, 62, 10, 7, 0, 63, 10,234, 0, 64, 10, + 7, 0, 65, 10, 7, 0, 66, 10, 7, 0, 67, 10, 7, 0, 68, 10, 4, 0, 69, 10, 4, 0, 37, 0,145, 1, 4, 0, 47, 0,220, 2, + 7, 0, 70, 10, 7, 0,158, 1, 7, 0, 37, 0,194, 0, 35, 0, 27, 0, 31, 0,145, 1, 71, 10, 63, 0, 37, 10, 51, 0, 72, 10, + 57, 0, 73, 10, 0, 0, 74, 10, 0, 0, 75, 10, 30, 0,148, 0, 0, 0, 76, 10, 7, 0, 77, 10, 2, 0,239, 5, 2, 0, 37, 0, + 4, 0,106, 0, 4, 0, 19, 0, 7, 0, 78, 10, 4, 0, 72, 2, 4, 0, 79, 10, 7, 0, 80, 10, 7, 0, 81, 10, 7, 0, 82, 10, + 7, 0,158, 1, 4, 0, 83, 10, 7, 0, 84, 10, 0, 0, 85, 10, 0, 0, 86, 10, 0, 0, 87, 10, 0, 0,226, 1, 7, 0, 88, 10, + 7, 0, 89, 10, 7, 0, 90, 10, 7, 0, 91, 10, 4, 0, 92, 10, 7, 0, 93, 10, 7, 0, 94, 10, 7, 0, 95, 10,146, 1, 10, 0, + 4, 0, 17, 0, 4, 0,120, 0, 4, 0, 19, 0, 4, 0,183, 3, 4, 0, 96, 10, 4, 0, 97, 10, 4, 0, 98, 10, 0, 0, 92, 0, + 0, 0, 20, 0, 9, 0, 2, 0,147, 1, 1, 0, 0, 0, 18, 8, 91, 0, 7, 0,146, 1, 99, 10, 4, 0,100, 10, 4, 0,101, 10, + 4, 0,102, 10, 4, 0, 37, 0, 9, 0,103, 10,147, 1,104, 10,148, 1, 5, 0, 7, 0,142, 2, 7, 0,210, 2, 7, 0, 25, 2, + 2, 0,118, 2, 2, 0, 37, 0,149, 1, 5, 0, 7, 0,142, 2, 7, 0,105, 10, 7, 0,106, 10, 7, 0,107, 10, 7, 0,210, 2, +150, 1, 5, 0, 32, 0,108, 10,151, 1, 22, 0, 7, 0,209, 5, 7, 0,109, 10, 7, 0, 56, 0,152, 1, 7, 0, 4, 0,110, 10, + 4, 0,111, 10, 4, 0,112, 10, 7, 0,113, 10, 7, 0,114, 10, 7, 0,115, 10, 7, 0, 56, 0,153, 1, 8, 0,153, 1, 0, 0, 153, 1, 1, 0, 32, 0, 44, 0, 4, 0,252, 0, 2, 0, 19, 0, 2, 0, 69, 1, 7, 0,210, 2, 7, 0,158, 8,154, 1, 6, 0, -154, 1, 0, 0,154, 1, 1, 0, 32, 0, 44, 0, 2, 0,195, 2, 2, 0, 19, 0, 2, 0,114, 10,155, 1, 17, 0,149, 1,177, 3, -149, 1,115, 10,148, 1,116, 10,149, 1,142, 8,150, 1,117, 10, 4, 0, 81, 0, 7, 0,210, 2, 7, 0,239, 2, 7, 0,118, 10, - 4, 0,108, 10, 4, 0,119, 10, 7, 0,112, 10, 7, 0,113, 10, 7, 0,106, 0, 4, 0,120, 10, 2, 0, 19, 0, 2, 0,121, 10, -156, 1, 9, 0, 7, 0,122, 10, 7, 0,248, 0, 7, 0,123, 10, 7, 0,124, 10, 7, 0,125, 10, 7, 0,126, 10, 7, 0,127, 10, - 7, 0,128, 10, 7, 0,129, 10,157, 1,111, 0, 27, 0, 31, 0, 39, 0, 74, 0,158, 1,130, 10,156, 1,131, 10,172, 0, 63, 4, - 4, 0, 19, 0, 2, 0, 17, 0, 2, 0,153, 9, 2, 0,132, 10, 2, 0,133, 10, 2, 0,143, 3, 2, 0,134, 10, 2, 0,135, 10, - 2, 0,136, 10, 2, 0,137, 10, 2, 0,138, 10, 2, 0,139, 10, 2, 0,140, 10, 2, 0,141, 10, 2, 0,113, 5, 2, 0,142, 10, - 2, 0,143, 10, 2, 0,144, 10, 2, 0,145, 10, 2, 0,146, 10, 2, 0, 14, 2, 2, 0,135, 8, 2, 0,110, 8, 2, 0,147, 10, - 2, 0,148, 10, 2, 0,193, 3, 2, 0,194, 3, 2, 0,149, 10, 2, 0,150, 10, 2, 0,151, 10, 2, 0,152, 10, 7, 0,153, 10, - 7, 0,154, 10, 7, 0,155, 10, 2, 0, 62, 5, 2, 0,156, 10, 7, 0,157, 10, 7, 0,158, 10, 7, 0,159, 10, 7, 0,117, 8, - 7, 0, 88, 0, 7, 0,239, 2, 7, 0,123, 8, 7, 0,160, 10, 7, 0,161, 10, 7, 0,162, 10, 4, 0,118, 8, 4, 0,116, 8, - 4, 0,163, 10, 7, 0,119, 8, 7, 0,120, 8, 7, 0,121, 8, 7, 0,164, 10, 7, 0,165, 10, 7, 0,166, 10, 7, 0,167, 10, - 7, 0,168, 10, 7, 0, 56, 0, 7, 0,169, 10, 7, 0,170, 10, 7, 0,171, 10, 7, 0,172, 10, 7, 0,134, 3, 7, 0,106, 0, - 7, 0,173, 10, 7, 0,174, 10, 7, 0,175, 10, 7, 0,176, 10, 7, 0,177, 10, 7, 0,178, 10, 7, 0,179, 10, 4, 0,180, 10, - 4, 0,181, 10, 7, 0,182, 10, 7, 0,183, 10, 7, 0,184, 10, 7, 0,185, 10, 7, 0,186, 10, 7, 0,207, 0, 7, 0,187, 10, - 7, 0,220, 3, 7, 0,218, 3, 7, 0,219, 3, 7, 0,188, 10, 7, 0,189, 10, 7, 0,190, 10, 7, 0,191, 10, 7, 0,192, 10, - 7, 0,193, 10, 7, 0,194, 10, 7, 0,195, 10, 7, 0,196, 10, 7, 0,197, 10, 7, 0,198, 10, 7, 0,199, 10, 7, 0,200, 10, - 4, 0,201, 10, 4, 0,202, 10, 67, 0,166, 3, 12, 0,203, 10, 67, 0,204, 10, 32, 0,205, 10, 32, 0,206, 10, 36, 0, 79, 0, -167, 0, 61, 1,167, 0,207, 10,147, 0, 44, 0,147, 0, 0, 0,147, 0, 1, 0,157, 1,208, 10,155, 1,209, 10,152, 1, 57, 9, -174, 0,245, 3, 9, 0,246, 3,159, 1,210, 10,159, 1,211, 10, 12, 0,212, 10, 12, 0,213, 10,132, 0,214, 10,140, 0,215, 10, -140, 0,216, 10, 32, 0,217, 10, 32, 0,218, 10, 32, 0, 38, 0, 12, 0,120, 9, 0, 0, 20, 0, 7, 0,237, 0, 7, 0, 10, 3, - 7, 0,219, 10, 4, 0,184, 2, 4, 0, 56, 0, 4, 0, 19, 0, 4, 0,118, 8, 4, 0,220, 10, 4, 0,221, 10, 4, 0,222, 10, - 2, 0,244, 0, 2, 0,223, 10, 2, 0,224, 10, 2, 0,225, 10, 0, 0,226, 10, 2, 0,227, 10, 2, 0,228, 10, 2, 0,229, 10, - 9, 0,230, 10,136, 0, 62, 4, 12, 0,253, 2, 12, 0,231, 10,160, 1,232, 10,161, 1,233, 10, 7, 0,234, 10,134, 0, 37, 0, -162, 1,252, 8, 7, 0, 32, 4, 7, 0,235, 10, 7, 0,236, 10, 7, 0,209, 5, 7, 0,144, 3, 7, 0,134, 3, 7, 0,237, 10, - 7, 0, 74, 2, 7, 0,238, 10, 7, 0,239, 10, 7, 0,240, 10, 7, 0,241, 10, 7, 0,242, 10, 7, 0,243, 10, 7, 0, 33, 4, - 7, 0,244, 10, 7, 0,245, 10, 7, 0,246, 10, 7, 0, 34, 4, 7, 0, 30, 4, 7, 0, 31, 4, 7, 0,247, 10, 7, 0,248, 10, - 4, 0,249, 10, 4, 0, 90, 0, 4, 0,250, 10, 4, 0,251, 10, 2, 0,252, 10, 2, 0,253, 10, 2, 0,254, 10, 2, 0,255, 10, - 2, 0, 0, 11, 2, 0, 1, 11, 2, 0, 2, 11, 2, 0,179, 4,172, 0, 63, 4,135, 0, 9, 0,162, 1, 3, 11, 7, 0, 4, 11, - 7, 0, 5, 11, 7, 0,230, 1, 7, 0, 6, 11, 4, 0, 90, 0, 2, 0, 7, 11, 2, 0, 8, 11, 67, 0,229, 1,163, 1, 4, 0, - 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 9, 11,164, 1, 6, 0,164, 1, 0, 0,164, 1, 1, 0,163, 1, 34, 9, - 4, 0,250, 0, 2, 0, 10, 11, 2, 0, 19, 0,165, 1, 5, 0,165, 1, 0, 0,165, 1, 1, 0, 12, 0, 11, 11, 4, 0, 12, 11, - 4, 0, 19, 0,166, 1, 9, 0,166, 1, 0, 0,166, 1, 1, 0, 12, 0,119, 0,165, 1, 13, 11, 4, 0, 19, 0, 2, 0, 10, 11, - 2, 0, 14, 11, 7, 0, 91, 0, 0, 0, 15, 11,163, 0, 6, 0, 27, 0, 31, 0, 12, 0, 30, 5, 4, 0, 19, 0, 2, 0, 16, 11, - 2, 0, 17, 11, 9, 0, 18, 11,167, 1, 7, 0,167, 1, 0, 0,167, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, - 0, 0, 19, 11, 0, 0, 20, 11,168, 1, 6, 0, 12, 0, 21, 11, 4, 0, 22, 11, 4, 0, 23, 11, 4, 0, 19, 0, 4, 0, 37, 0, -214, 0, 24, 11,169, 1, 3, 0, 7, 0, 87, 5, 7, 0, 25, 11, 7, 0, 26, 11,170, 1, 17, 0, 27, 0, 31, 0,171, 1, 27, 11, -171, 1, 28, 11, 12, 0, 29, 11, 4, 0, 30, 11, 2, 0, 31, 11, 2, 0, 32, 11, 12, 0, 33, 11, 12, 0, 34, 11,168, 1, 35, 11, - 12, 0, 36, 11, 12, 0, 37, 11, 12, 0, 38, 11, 12, 0, 39, 11,172, 1, 40, 11, 12, 0, 41, 11,214, 0, 42, 11,171, 1, 31, 0, -171, 1, 0, 0,171, 1, 1, 0, 9, 0, 43, 11, 4, 0,211, 7, 2, 0, 44, 11, 2, 0, 37, 0,219, 0, 70, 6,219, 0, 45, 11, - 0, 0, 46, 11, 2, 0, 47, 11, 2, 0, 48, 11, 2, 0,233, 7, 2, 0,234, 7, 2, 0, 49, 11, 2, 0, 50, 11, 2, 0,183, 3, - 2, 0,193, 6, 2, 0, 51, 11, 2, 0, 52, 11, 2, 0,222, 9,173, 1, 53, 11,174, 1, 54, 11,175, 1, 55, 11, 4, 0, 56, 11, - 4, 0, 57, 11, 9, 0, 58, 11, 12, 0, 34, 11, 12, 0,253, 7, 12, 0, 59, 11, 12, 0, 60, 11, 12, 0, 61, 11,176, 1, 17, 0, -176, 1, 0, 0,176, 1, 1, 0, 0, 0, 62, 11, 26, 0, 30, 0, 2, 0, 63, 11, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0, 64, 11, - 2, 0, 65, 11, 2, 0, 66, 11, 2, 0, 67, 11, 2, 0, 68, 11, 2, 0, 19, 0, 2, 0, 69, 11, 2, 0, 31, 0, 2, 0, 37, 0, -177, 1, 70, 11,178, 1, 10, 0,178, 1, 0, 0,178, 1, 1, 0, 12, 0, 71, 11, 0, 0, 62, 11, 2, 0, 72, 11, 2, 0, 73, 11, - 2, 0, 19, 0, 2, 0, 74, 11, 4, 0, 75, 11, 9, 0, 76, 11,172, 1, 7, 0,172, 1, 0, 0,172, 1, 1, 0, 0, 0, 62, 11, - 0, 0, 77, 11, 12, 0,159, 7, 4, 0, 78, 11, 4, 0, 19, 0,227, 0, 14, 0,227, 0, 0, 0,227, 0, 1, 0, 0, 0, 62, 11, - 26, 0, 30, 0,179, 1,227, 7, 9, 0, 79, 11, 9, 0, 80, 11,177, 1, 70, 11,168, 1, 81, 11, 12, 0, 82, 11,227, 0, 83, 11, - 7, 1,106, 6, 2, 0, 19, 0, 2, 0,179, 4,180, 1, 8, 0,180, 1, 0, 0,180, 1, 1, 0, 9, 0, 2, 0, 9, 0, 84, 11, - 0, 0,240, 3, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0, 85, 11,181, 1, 5, 0, 7, 0, 86, 11, 4, 0, 87, 11, 4, 0, 88, 11, - 4, 0, 69, 1, 4, 0, 19, 0,182, 1, 6, 0, 7, 0, 89, 11, 7, 0, 90, 11, 7, 0, 91, 11, 7, 0, 92, 11, 4, 0, 17, 0, +154, 1, 0, 0,154, 1, 1, 0, 32, 0, 44, 0, 2, 0,195, 2, 2, 0, 19, 0, 2, 0,116, 10,155, 1, 17, 0,149, 1,177, 3, +149, 1,117, 10,148, 1,118, 10,149, 1,142, 8,150, 1,119, 10, 4, 0, 81, 0, 7, 0,210, 2, 7, 0,239, 2, 7, 0,120, 10, + 4, 0,110, 10, 4, 0,121, 10, 7, 0,114, 10, 7, 0,115, 10, 7, 0,106, 0, 4, 0,122, 10, 2, 0, 19, 0, 2, 0,123, 10, +156, 1, 9, 0, 7, 0,124, 10, 7, 0,248, 0, 7, 0,125, 10, 7, 0,126, 10, 7, 0,127, 10, 7, 0,128, 10, 7, 0,129, 10, + 7, 0,130, 10, 7, 0,131, 10,157, 1,111, 0, 27, 0, 31, 0, 39, 0, 74, 0,158, 1,132, 10,156, 1,133, 10,172, 0, 63, 4, + 4, 0, 19, 0, 2, 0, 17, 0, 2, 0,153, 9, 2, 0,134, 10, 2, 0,135, 10, 2, 0,143, 3, 2, 0,136, 10, 2, 0,137, 10, + 2, 0,138, 10, 2, 0,139, 10, 2, 0,140, 10, 2, 0,141, 10, 2, 0,142, 10, 2, 0,143, 10, 2, 0,113, 5, 2, 0,144, 10, + 2, 0,145, 10, 2, 0,146, 10, 2, 0,147, 10, 2, 0,148, 10, 2, 0, 14, 2, 2, 0,135, 8, 2, 0,110, 8, 2, 0,149, 10, + 2, 0,150, 10, 2, 0,193, 3, 2, 0,194, 3, 2, 0,151, 10, 2, 0,152, 10, 2, 0,153, 10, 2, 0,154, 10, 7, 0,155, 10, + 7, 0,156, 10, 7, 0,157, 10, 2, 0, 62, 5, 2, 0,158, 10, 7, 0,159, 10, 7, 0,160, 10, 7, 0,161, 10, 7, 0,117, 8, + 7, 0, 88, 0, 7, 0,239, 2, 7, 0,123, 8, 7, 0,162, 10, 7, 0,163, 10, 7, 0,164, 10, 4, 0,118, 8, 4, 0,116, 8, + 4, 0,165, 10, 7, 0,119, 8, 7, 0,120, 8, 7, 0,121, 8, 7, 0,166, 10, 7, 0,167, 10, 7, 0,168, 10, 7, 0,169, 10, + 7, 0,170, 10, 7, 0, 56, 0, 7, 0,171, 10, 7, 0,172, 10, 7, 0,173, 10, 7, 0,174, 10, 7, 0,134, 3, 7, 0,106, 0, + 7, 0,175, 10, 7, 0,176, 10, 7, 0,177, 10, 7, 0,178, 10, 7, 0,179, 10, 7, 0,180, 10, 7, 0,181, 10, 4, 0,182, 10, + 4, 0,183, 10, 7, 0,184, 10, 7, 0,185, 10, 7, 0,186, 10, 7, 0,187, 10, 7, 0,188, 10, 7, 0,207, 0, 7, 0,189, 10, + 7, 0,220, 3, 7, 0,218, 3, 7, 0,219, 3, 7, 0,190, 10, 7, 0,191, 10, 7, 0,192, 10, 7, 0,193, 10, 7, 0,194, 10, + 7, 0,195, 10, 7, 0,196, 10, 7, 0,197, 10, 7, 0,198, 10, 7, 0,199, 10, 7, 0,200, 10, 7, 0,201, 10, 7, 0,202, 10, + 4, 0,203, 10, 4, 0,204, 10, 67, 0,166, 3, 12, 0,205, 10, 67, 0,206, 10, 32, 0,207, 10, 32, 0,208, 10, 36, 0, 79, 0, +167, 0, 61, 1,167, 0,209, 10,147, 0, 44, 0,147, 0, 0, 0,147, 0, 1, 0,157, 1,210, 10,155, 1,211, 10,152, 1, 57, 9, +174, 0,245, 3, 9, 0,246, 3,159, 1,212, 10,159, 1,213, 10, 12, 0,214, 10, 12, 0,215, 10,132, 0,216, 10,140, 0,217, 10, +140, 0,218, 10, 32, 0,219, 10, 32, 0,220, 10, 32, 0, 38, 0, 12, 0,120, 9, 0, 0, 20, 0, 7, 0,237, 0, 7, 0, 10, 3, + 7, 0,221, 10, 4, 0,184, 2, 4, 0, 56, 0, 4, 0, 19, 0, 4, 0,118, 8, 4, 0,222, 10, 4, 0,223, 10, 4, 0,224, 10, + 2, 0,244, 0, 2, 0,225, 10, 2, 0,226, 10, 2, 0,227, 10, 0, 0,228, 10, 2, 0,229, 10, 2, 0,230, 10, 2, 0,231, 10, + 9, 0,232, 10,136, 0, 62, 4, 12, 0,253, 2, 12, 0,233, 10,160, 1,234, 10,161, 1,235, 10, 7, 0,236, 10,134, 0, 37, 0, +162, 1,252, 8, 7, 0, 32, 4, 7, 0,237, 10, 7, 0,238, 10, 7, 0,209, 5, 7, 0,144, 3, 7, 0,134, 3, 7, 0,239, 10, + 7, 0, 74, 2, 7, 0,240, 10, 7, 0,241, 10, 7, 0,242, 10, 7, 0,243, 10, 7, 0,244, 10, 7, 0,245, 10, 7, 0, 33, 4, + 7, 0,246, 10, 7, 0,247, 10, 7, 0,248, 10, 7, 0, 34, 4, 7, 0, 30, 4, 7, 0, 31, 4, 7, 0,249, 10, 7, 0,250, 10, + 4, 0,251, 10, 4, 0, 90, 0, 4, 0,252, 10, 4, 0,253, 10, 2, 0,254, 10, 2, 0,255, 10, 2, 0, 0, 11, 2, 0, 1, 11, + 2, 0, 2, 11, 2, 0, 3, 11, 2, 0, 4, 11, 2, 0,179, 4,172, 0, 63, 4,135, 0, 9, 0,162, 1, 5, 11, 7, 0, 6, 11, + 7, 0, 7, 11, 7, 0,230, 1, 7, 0, 8, 11, 4, 0, 90, 0, 2, 0, 9, 11, 2, 0, 10, 11, 67, 0,229, 1,163, 1, 4, 0, + 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 11, 11,164, 1, 6, 0,164, 1, 0, 0,164, 1, 1, 0,163, 1, 34, 9, + 4, 0,250, 0, 2, 0, 12, 11, 2, 0, 19, 0,165, 1, 5, 0,165, 1, 0, 0,165, 1, 1, 0, 12, 0, 13, 11, 4, 0, 14, 11, + 4, 0, 19, 0,166, 1, 9, 0,166, 1, 0, 0,166, 1, 1, 0, 12, 0,119, 0,165, 1, 15, 11, 4, 0, 19, 0, 2, 0, 12, 11, + 2, 0, 16, 11, 7, 0, 91, 0, 0, 0, 17, 11,163, 0, 6, 0, 27, 0, 31, 0, 12, 0, 30, 5, 4, 0, 19, 0, 2, 0, 18, 11, + 2, 0, 19, 11, 9, 0, 20, 11,167, 1, 7, 0,167, 1, 0, 0,167, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, + 0, 0, 21, 11, 0, 0, 22, 11,168, 1, 6, 0, 12, 0, 23, 11, 4, 0, 24, 11, 4, 0, 25, 11, 4, 0, 19, 0, 4, 0, 37, 0, +214, 0, 26, 11,169, 1, 3, 0, 7, 0, 87, 5, 7, 0, 27, 11, 7, 0, 28, 11,170, 1, 17, 0, 27, 0, 31, 0,171, 1, 29, 11, +171, 1, 30, 11, 12, 0, 31, 11, 4, 0, 32, 11, 2, 0, 33, 11, 2, 0, 34, 11, 12, 0, 35, 11, 12, 0, 36, 11,168, 1, 37, 11, + 12, 0, 38, 11, 12, 0, 39, 11, 12, 0, 40, 11, 12, 0, 41, 11,172, 1, 42, 11, 12, 0, 43, 11,214, 0, 44, 11,171, 1, 31, 0, +171, 1, 0, 0,171, 1, 1, 0, 9, 0, 45, 11, 4, 0,211, 7, 2, 0, 46, 11, 2, 0, 37, 0,219, 0, 70, 6,219, 0, 47, 11, + 0, 0, 48, 11, 2, 0, 49, 11, 2, 0, 50, 11, 2, 0,233, 7, 2, 0,234, 7, 2, 0, 51, 11, 2, 0, 52, 11, 2, 0,183, 3, + 2, 0,193, 6, 2, 0, 53, 11, 2, 0, 54, 11, 2, 0,222, 9,173, 1, 55, 11,174, 1, 56, 11,175, 1, 57, 11, 4, 0, 58, 11, + 4, 0, 59, 11, 9, 0, 60, 11, 12, 0, 36, 11, 12, 0,253, 7, 12, 0, 61, 11, 12, 0, 62, 11, 12, 0, 63, 11,176, 1, 17, 0, +176, 1, 0, 0,176, 1, 1, 0, 0, 0, 64, 11, 26, 0, 30, 0, 2, 0, 65, 11, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0, 66, 11, + 2, 0, 67, 11, 2, 0, 68, 11, 2, 0, 69, 11, 2, 0, 70, 11, 2, 0, 19, 0, 2, 0, 71, 11, 2, 0, 31, 0, 2, 0, 37, 0, +177, 1, 72, 11,178, 1, 10, 0,178, 1, 0, 0,178, 1, 1, 0, 12, 0, 73, 11, 0, 0, 64, 11, 2, 0, 74, 11, 2, 0, 75, 11, + 2, 0, 19, 0, 2, 0, 76, 11, 4, 0, 77, 11, 9, 0, 78, 11,172, 1, 7, 0,172, 1, 0, 0,172, 1, 1, 0, 0, 0, 64, 11, + 0, 0, 79, 11, 12, 0,159, 7, 4, 0, 80, 11, 4, 0, 19, 0,227, 0, 14, 0,227, 0, 0, 0,227, 0, 1, 0, 0, 0, 64, 11, + 26, 0, 30, 0,179, 1,227, 7, 9, 0, 81, 11, 9, 0, 82, 11,177, 1, 72, 11,168, 1, 83, 11, 12, 0, 84, 11,227, 0, 85, 11, + 7, 1,106, 6, 2, 0, 19, 0, 2, 0,179, 4,180, 1, 8, 0,180, 1, 0, 0,180, 1, 1, 0, 9, 0, 2, 0, 9, 0, 86, 11, + 0, 0,240, 3, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0, 87, 11,181, 1, 5, 0, 7, 0, 88, 11, 4, 0, 89, 11, 4, 0, 90, 11, + 4, 0, 69, 1, 4, 0, 19, 0,182, 1, 6, 0, 7, 0, 91, 11, 7, 0, 92, 11, 7, 0, 93, 11, 7, 0, 94, 11, 4, 0, 17, 0, 4, 0, 19, 0,183, 1, 5, 0, 7, 0,211, 8, 7, 0,212, 8, 7, 0,210, 2, 2, 0, 28, 2, 2, 0, 29, 2,184, 1, 5, 0, -183, 1, 2, 0, 4, 0, 53, 0, 7, 0, 93, 11, 7, 0,211, 8, 7, 0,212, 8,185, 1, 4, 0, 2, 0, 94, 11, 2, 0, 95, 11, - 2, 0, 96, 11, 2, 0, 97, 11,186, 1, 2, 0, 42, 0,159, 6, 26, 0, 2, 9,187, 1, 3, 0, 24, 0, 98, 11, 4, 0, 19, 0, - 4, 0, 37, 0,188, 1, 6, 0, 7, 0,106, 0, 7, 0,212, 2, 7, 0, 99, 11, 7, 0, 37, 0, 2, 0,243, 0, 2, 0,100, 11, -189, 1, 5, 0, 7, 0,101, 11, 7, 0,120, 0, 7, 0, 35, 9, 7, 0, 36, 9, 4, 0, 19, 0,190, 1, 6, 0, 27, 0,165, 6, - 0, 0,102, 11, 0, 0,103, 11, 2, 0,104, 11, 2, 0, 19, 0, 4, 0,105, 11,191, 1, 7, 0,191, 1, 0, 0,191, 1, 1, 0, - 0, 0,240, 3,190, 1,106, 11, 2, 0,107, 11, 2, 0, 17, 0, 7, 0, 60, 0,192, 1, 7, 0, 12, 0,108, 11, 0, 0,109, 11, - 9, 0,110, 11, 7, 0, 60, 0, 7, 0, 85, 11, 4, 0, 17, 0, 4, 0, 19, 0,193, 1, 3, 0, 7, 0,111, 11, 4, 0, 19, 0, +183, 1, 2, 0, 4, 0, 53, 0, 7, 0, 95, 11, 7, 0,211, 8, 7, 0,212, 8,185, 1, 4, 0, 2, 0, 96, 11, 2, 0, 97, 11, + 2, 0, 98, 11, 2, 0, 99, 11,186, 1, 2, 0, 42, 0,159, 6, 26, 0, 2, 9,187, 1, 3, 0, 24, 0,100, 11, 4, 0, 19, 0, + 4, 0, 37, 0,188, 1, 6, 0, 7, 0,106, 0, 7, 0,212, 2, 7, 0,101, 11, 7, 0, 37, 0, 2, 0,243, 0, 2, 0,102, 11, +189, 1, 5, 0, 7, 0,103, 11, 7, 0,120, 0, 7, 0, 35, 9, 7, 0, 36, 9, 4, 0, 19, 0,190, 1, 6, 0, 27, 0,165, 6, + 0, 0,104, 11, 0, 0,105, 11, 2, 0,106, 11, 2, 0, 19, 0, 4, 0,107, 11,191, 1, 7, 0,191, 1, 0, 0,191, 1, 1, 0, + 0, 0,240, 3,190, 1,108, 11, 2, 0,109, 11, 2, 0, 17, 0, 7, 0, 60, 0,192, 1, 7, 0, 12, 0,110, 11, 0, 0,111, 11, + 9, 0,112, 11, 7, 0, 60, 0, 7, 0, 87, 11, 4, 0, 17, 0, 4, 0, 19, 0,193, 1, 3, 0, 7, 0,113, 11, 4, 0, 19, 0, 4, 0, 37, 0,194, 1, 15, 0,194, 1, 0, 0,194, 1, 1, 0, 84, 1,106, 9,192, 1, 61, 0, 12, 0,102, 3, 35, 0, 49, 0, -193, 1,112, 11, 4, 0, 53, 0, 7, 0, 60, 0, 2, 0, 19, 0, 2, 0, 12, 1, 4, 0,113, 11, 0, 0,102, 11, 4, 0,114, 11, - 7, 0,115, 11,195, 1, 2, 0, 0, 0,116, 11, 0, 0,117, 11,196, 1, 4, 0,196, 1, 0, 0,196, 1, 1, 0,161, 0, 44, 3, - 12, 0,118, 11,197, 1, 24, 0,197, 1, 0, 0,197, 1, 1, 0, 12, 0,119, 11,161, 0,189, 8,196, 1,120, 11, 12, 0,121, 11, - 12, 0,102, 3, 0, 0,240, 3, 7, 0, 85, 11, 7, 0,122, 11, 7, 0, 87, 0, 7, 0, 88, 0, 7, 0,169, 9, 7, 0,170, 9, - 7, 0,229, 2, 7, 0,173, 9, 7, 0,191, 8, 7, 0,174, 9, 2, 0,123, 11, 2, 0,124, 11, 2, 0, 89, 0, 2, 0, 17, 0, - 4, 0, 19, 0, 4, 0, 69, 0,198, 1, 6, 0,198, 1, 0, 0,198, 1, 1, 0, 12, 0,119, 11, 4, 0, 19, 0, 4, 0,146, 2, - 0, 0,240, 3,199, 1, 11, 0,199, 1, 0, 0,199, 1, 1, 0, 27, 0,165, 6, 0, 0,125, 11, 4, 0,105, 11, 2, 0,126, 11, - 2, 0, 37, 0, 0, 0,102, 11, 4, 0,113, 11, 2, 0, 19, 0, 2, 0,127, 11,200, 1, 8, 0,200, 1, 0, 0,200, 1, 1, 0, - 12, 0,128, 11, 0, 0,240, 3, 0, 0,129, 11, 2, 0, 19, 0, 2, 0,127, 11, 4, 0,130, 11,201, 1, 5, 0,201, 1, 0, 0, -201, 1, 1, 0, 0, 0,102, 11, 4, 0,113, 11, 7, 0,200, 2, 39, 0, 12, 0,161, 0, 94, 3,161, 0,131, 11,196, 1,120, 11, - 12, 0,132, 11,197, 1,133, 11, 12, 0,134, 11, 12, 0,135, 11, 4, 0, 19, 0, 4, 0,244, 0, 2, 0,136, 11, 2, 0,137, 11, - 7, 0,138, 11,202, 1, 2, 0, 27, 0, 31, 0, 39, 0, 74, 0,203, 1, 5, 0,203, 1, 0, 0,203, 1, 1, 0, 4, 0, 17, 0, - 4, 0, 19, 0, 0, 0, 20, 0,204, 1, 6, 0,203, 1,139, 11, 32, 0, 44, 0, 4, 0,140, 11, 7, 0,141, 11, 4, 0,142, 11, - 4, 0, 95, 9,205, 1, 3, 0,203, 1,139, 11, 4, 0,140, 11, 7, 0,143, 11,206, 1, 8, 0,203, 1,139, 11, 32, 0, 44, 0, - 7, 0, 64, 1, 7, 0,144, 11, 7, 0, 10, 3, 7, 0,251, 8, 4, 0,140, 11, 4, 0,145, 11,207, 1, 5, 0,203, 1,139, 11, - 7, 0,146, 11, 7, 0, 70, 8, 7, 0,235, 2, 7, 0, 56, 0,208, 1, 3, 0,203, 1,139, 11, 7, 0,251, 8, 7, 0,147, 11, -151, 1, 4, 0, 7, 0,148, 11, 7, 0,175, 10, 2, 0,149, 11, 2, 0, 69, 1,209, 1, 14, 0,209, 1, 0, 0,209, 1, 1, 0, - 12, 0,150, 11, 12, 0,151, 11, 12, 0,152, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0,153, 11, 7, 0,154, 11, - 4, 0,142, 11, 4, 0, 95, 9, 7, 0,249, 3, 7, 0,237, 2,158, 1, 23, 0, 4, 0,140, 11, 4, 0,155, 11, 7, 0,156, 11, - 7, 0, 56, 0, 7, 0,157, 11, 7, 0,233, 2, 7, 0,148, 11, 7, 0,158, 11, 7, 0,212, 2, 7, 0, 56, 10, 7, 0,129, 4, - 7, 0,159, 11, 7, 0,160, 11, 7, 0,161, 11, 7, 0,162, 11, 7, 0,163, 11, 7, 0,164, 11, 7, 0,165, 11, 7, 0,166, 11, - 7, 0,167, 11, 7, 0,168, 11, 7, 0,169, 11, 12, 0,170, 11,120, 0, 36, 0,119, 0,171, 11,210, 1,131, 10, 67, 0,172, 11, - 67, 0,204, 10, 67, 0,173, 11,211, 1,174, 11, 48, 0,162, 0, 48, 0,175, 11, 48, 0,176, 11, 7, 0,177, 11, 7, 0,178, 11, - 7, 0,179, 11, 7, 0,180, 11, 7, 0,181, 11, 7, 0,107, 9, 7, 0,182, 11, 7, 0,158, 1, 7, 0,183, 11, 4, 0,184, 11, - 4, 0,185, 11, 4, 0,186, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0,187, 11, 2, 0,188, 11, 2, 0,189, 11, 4, 0,190, 11, - 7, 0,212, 2, 4, 0,191, 11, 7, 0,192, 11, 4, 0,193, 11, 4, 0,194, 11, 4, 0,195, 11,136, 0,196, 11, 12, 0,197, 11, -172, 0, 63, 4,121, 0, 11, 0,119, 0,171, 11,147, 0, 30, 3, 7, 0,125, 1, 7, 0,107, 9, 7, 0,198, 11, 7, 0,199, 11, - 2, 0,200, 11, 2, 0,201, 11, 2, 0,202, 11, 2, 0, 17, 0, 4, 0, 37, 0,122, 0, 13, 0,119, 0,171, 11,138, 0, 7, 3, -140, 0, 9, 3, 7, 0, 34, 9, 7, 0,203, 11, 7, 0,204, 11, 7, 0, 66, 1, 7, 0,205, 11, 4, 0,129, 9, 4, 0, 5, 3, +193, 1,114, 11, 4, 0, 53, 0, 7, 0, 60, 0, 2, 0, 19, 0, 2, 0, 12, 1, 4, 0,115, 11, 0, 0,104, 11, 4, 0,116, 11, + 7, 0,117, 11,195, 1, 2, 0, 0, 0,118, 11, 0, 0,119, 11,196, 1, 4, 0,196, 1, 0, 0,196, 1, 1, 0,161, 0, 44, 3, + 12, 0,120, 11,197, 1, 24, 0,197, 1, 0, 0,197, 1, 1, 0, 12, 0,121, 11,161, 0,189, 8,196, 1,122, 11, 12, 0,123, 11, + 12, 0,102, 3, 0, 0,240, 3, 7, 0, 87, 11, 7, 0,124, 11, 7, 0, 87, 0, 7, 0, 88, 0, 7, 0,169, 9, 7, 0,170, 9, + 7, 0,229, 2, 7, 0,173, 9, 7, 0,191, 8, 7, 0,174, 9, 2, 0,125, 11, 2, 0,126, 11, 2, 0, 89, 0, 2, 0, 17, 0, + 4, 0, 19, 0, 4, 0, 69, 0,198, 1, 6, 0,198, 1, 0, 0,198, 1, 1, 0, 12, 0,121, 11, 4, 0, 19, 0, 4, 0,146, 2, + 0, 0,240, 3,199, 1, 11, 0,199, 1, 0, 0,199, 1, 1, 0, 27, 0,165, 6, 0, 0,127, 11, 4, 0,107, 11, 2, 0,128, 11, + 2, 0, 37, 0, 0, 0,104, 11, 4, 0,115, 11, 2, 0, 19, 0, 2, 0,129, 11,200, 1, 8, 0,200, 1, 0, 0,200, 1, 1, 0, + 12, 0,130, 11, 0, 0,240, 3, 0, 0,131, 11, 2, 0, 19, 0, 2, 0,129, 11, 4, 0,132, 11,201, 1, 5, 0,201, 1, 0, 0, +201, 1, 1, 0, 0, 0,104, 11, 4, 0,115, 11, 7, 0,200, 2, 39, 0, 12, 0,161, 0, 94, 3,161, 0,133, 11,196, 1,122, 11, + 12, 0,134, 11,197, 1,135, 11, 12, 0,136, 11, 12, 0,137, 11, 4, 0, 19, 0, 4, 0,244, 0, 2, 0,138, 11, 2, 0,139, 11, + 7, 0,140, 11,202, 1, 2, 0, 27, 0, 31, 0, 39, 0, 74, 0,203, 1, 5, 0,203, 1, 0, 0,203, 1, 1, 0, 4, 0, 17, 0, + 4, 0, 19, 0, 0, 0, 20, 0,204, 1, 6, 0,203, 1,141, 11, 32, 0, 44, 0, 4, 0,142, 11, 7, 0,143, 11, 4, 0,144, 11, + 4, 0, 95, 9,205, 1, 3, 0,203, 1,141, 11, 4, 0,142, 11, 7, 0,145, 11,206, 1, 8, 0,203, 1,141, 11, 32, 0, 44, 0, + 7, 0, 64, 1, 7, 0,146, 11, 7, 0, 10, 3, 7, 0,251, 8, 4, 0,142, 11, 4, 0,147, 11,207, 1, 5, 0,203, 1,141, 11, + 7, 0,148, 11, 7, 0, 70, 8, 7, 0,235, 2, 7, 0, 56, 0,208, 1, 3, 0,203, 1,141, 11, 7, 0,251, 8, 7, 0,149, 11, +151, 1, 4, 0, 7, 0,150, 11, 7, 0,177, 10, 2, 0,151, 11, 2, 0, 69, 1,209, 1, 14, 0,209, 1, 0, 0,209, 1, 1, 0, + 12, 0,152, 11, 12, 0,153, 11, 12, 0,154, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0,155, 11, 7, 0,156, 11, + 4, 0,144, 11, 4, 0, 95, 9, 7, 0,249, 3, 7, 0,237, 2,158, 1, 23, 0, 4, 0,142, 11, 4, 0,157, 11, 7, 0,158, 11, + 7, 0, 56, 0, 7, 0,159, 11, 7, 0,233, 2, 7, 0,150, 11, 7, 0,160, 11, 7, 0,212, 2, 7, 0, 56, 10, 7, 0,129, 4, + 7, 0,161, 11, 7, 0,162, 11, 7, 0,163, 11, 7, 0,164, 11, 7, 0,165, 11, 7, 0,166, 11, 7, 0,167, 11, 7, 0,168, 11, + 7, 0,169, 11, 7, 0,170, 11, 7, 0,171, 11, 12, 0,172, 11,120, 0, 36, 0,119, 0,173, 11,210, 1,133, 10, 67, 0,174, 11, + 67, 0,206, 10, 67, 0,175, 11,211, 1,176, 11, 48, 0,162, 0, 48, 0,177, 11, 48, 0,178, 11, 7, 0,179, 11, 7, 0,180, 11, + 7, 0,181, 11, 7, 0,182, 11, 7, 0,183, 11, 7, 0,107, 9, 7, 0,184, 11, 7, 0,158, 1, 7, 0,185, 11, 4, 0,186, 11, + 4, 0,187, 11, 4, 0,188, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0,189, 11, 2, 0,190, 11, 2, 0,191, 11, 4, 0,192, 11, + 7, 0,212, 2, 4, 0,193, 11, 7, 0,194, 11, 4, 0,195, 11, 4, 0,196, 11, 4, 0,197, 11,136, 0,198, 11, 12, 0,199, 11, +172, 0, 63, 4,121, 0, 11, 0,119, 0,173, 11,147, 0, 30, 3, 7, 0,125, 1, 7, 0,107, 9, 7, 0,200, 11, 7, 0,201, 11, + 2, 0,202, 11, 2, 0,203, 11, 2, 0,204, 11, 2, 0, 17, 0, 4, 0, 37, 0,122, 0, 13, 0,119, 0,173, 11,138, 0, 7, 3, +140, 0, 9, 3, 7, 0, 34, 9, 7, 0,205, 11, 7, 0,206, 11, 7, 0, 66, 1, 7, 0,207, 11, 4, 0,129, 9, 4, 0, 5, 3, 2, 0, 17, 0, 2, 0, 37, 0, 4, 0, 69, 0, 69, 78, 68, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; diff --git a/source/blender/editors/datafiles/thumb.png.c b/source/blender/editors/datafiles/thumb.png.c new file mode 100644 index 00000000000..132ee0788fa --- /dev/null +++ b/source/blender/editors/datafiles/thumb.png.c @@ -0,0 +1,291 @@ +/* DataToC output of file <thumb_png> */ + +int datatoc_thumb_png_size= 9098; +char datatoc_thumb_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, + 0, 13, 73, 72, 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, + 0,177,143, 11,252, 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89, +115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, 19, 0, 34, 14,207,247,218, +175, 0, 0, 32, 0, 73, 68, 65, 84,120,218,237,124,123,208, 93, 87,117,223, 90,107,239,115,206,189,223,251, 37,125,210,103, 75, +223,167,151,223, 22, 66,182,121,197, 22,114, 18, 8, 49,133, 16, 48, 73, 27,167, 6,146, 97, 74, 27, 90, 72, 39,227,166,195, 36, +105, 59,147,153, 38, 77, 66,167,147, 87, 73,219, 60, 11,100,218, 48,147, 54,208,192,132,242, 10, 73, 1, 27,131,177,141, 9,150, +173,135, 45,217,178,164,239,253,221,123,206,222,107,173,254,177,247, 62,231,220, 79,178,229, 39, 54, 25,238, 92, 93,157,239,222, +115,207, 93,103,237,245, 94,191,181,241,208,161, 67,112,209,199,211, 57,137,234,163,183,188, 54,158,125,199,167,206,109, 58,201, +214, 71,119,252,232,225, 27,119, 79,220,127,252,212,175,190,126,106,211, 73,102,126,126,254,216,177, 99,255,233,125,239,190,230, +229,135,119,205,239, 91, 63,119, 98,231,204,196,125,143,156,102,150,230, 74, 34,242,141, 63,253,136,205,187, 72, 6,200,188,230, +134,155, 58,249,151, 10,107, 86,251,213, 31,126,230,206,134,166,172, 51,204,190,220, 88, 62,221, 95, 61,195,174,191,111,110,235, +203,247,238,156, 25, 29,122,231,205,215,183, 9, 87, 21, 81, 97,118,125,223, 95,101,225,137,225,238,229, 59,182,111,155, 28,189, +253,240,117,145,112,246, 78,216,137,175,216, 87,204, 37,139, 42, 64,102,104,235,196, 24,179,190,253, 53,215, 18, 0,112,213,231, +170,199,174, 39,213, 58, 59,199, 34,158, 89, 84, 17, 49,207,237, 80,145, 91, 0,240,229,154,239,175,187,222,138,235,175, 86,222, + 85,206, 59,207,222,179,103, 97, 17, 66,180, 0,224, 54,150, 93,185,230, 54,150,250, 85, 85, 58, 46, 61, 59,207, 21,179,243,222, +179, 48, 11, 62,173,181,123,102,143,159, 56,116, 29, 0, 28,252,145,119, 63,213, 73,247,254,233,135,255,249, 45,223, 55, 57, 58, +116,253, 91,255,233,230,181, 11,255,221,247,103,255,211,218,124,223,182,201, 17,170,134,151, 30,254,218,195, 39, 7, 78,186,231, +163,255,253,189,255,240, 39,108, 94,168, 10, 32,206,118,252,218, 70,127,207,236,212,221,173,243,204,251,223,241,211, 34,236,250, +107,229,250,146,219, 88, 1,245,163, 29,131,128,187,182, 76, 92, 54,183,229,222,227,143, 1, 0, 33, 0,128,138,176,248,202, 85, +235,190, 90,207, 50,123,201,204,196,158,185, 45,147, 35,221,183,189,234, 26, 0,176,204, 78,188, 19,239,132,157,250, 74, 88,132, +133,136,198,135,135,182, 77,248,202,249,195, 87, 45,144, 84,125,113,125,118, 61,174,214,125,181,225,153,153, 89, 68, 0, 52,179, +102,164, 91, 76,142, 14, 91, 87,174,251,106,195,247, 87, 93,111,197,185,190, 99,174,152, 43,207,206,179,103, 81, 85, 66,180,213, +198,178, 47,215, 93,127,165,236,175,151,206,151,206, 87,142, 43,239,157,103,207,236, 88, 68, 4,158,175,181,163,231,107,229,237, +249,111,253,245,111,124,224,129,135, 31,252,234,183,143,247, 42,255,251,255,247, 43, 0,240,179,255,235,145,172,232,254,234, 15, + 77, 63,197,133,240,208,161, 67,159,255,252,231, 27, 10, 9,239,250,111,191, 75, 54,247,190,252,204,231, 62,126,234,236,202,242, + 70,175,114,252, 71,159,187,235,169, 41,194, 67,135, 14,189,251,198, 3,151,239,218, 87, 12, 79, 20,195, 19,182,232, 34, 0,187, +178,234,175,185,222,234,210,169, 7,238, 61,242,208,233,197,149, 39, 86,215,202,202,123,129, 63,254,236,157, 23,188,144,217,177, + 99,199,123,222,126, 91,222, 29, 37,178,202,206,149,235,174,191,238,202,117,118,125,241, 21,153,108,203,248,240,150,209,206,104, +167, 83,100, 86, 85,175,217,185,109,255,252,246,110,167,120,228,204,210,102, 30, 25, 91,136,120,118,149,170,138,175,216, 85,194, + 21, 87, 61,239,122, 82,245,184,234, 21,153,221, 62, 53, 54, 54,212,217, 54, 53,126,102,101,237,236,202, 90,145,217,203,183, 79, +247,171,234,163, 95,188,167,185,144,136, 87,246, 32,172,236, 85, 88,197, 43, 59, 97,167,236,153, 43,246,142, 69, 68,213, 26, 26, + 42,242, 45,227,163,195,157, 98,121,109, 99,181,215, 95, 90,239,223,118,211,203,151,214,215, 63,254,213,191,179, 0, 32,174, 20, +246,194, 94,124, 37,190, 98, 95,138,235,179, 43,197,245,196,245, 88,132, 89,194,181, 68, 21, 1, 44,209, 80,167, 64, 68, 36, 50, +132, 0,122,203,193,203, 44, 0,248,170,167,222,177, 56,113, 78,124,233, 93, 95, 92,223,187, 30,187,158,247,226,216,123, 22,239, +213,113,176, 85,220,190,168, 33,202,179,172,155, 7,251,214, 95,101,231, 84, 28,251,138, 93,159, 93,159, 93, 47,104,148, 19,246, + 94, 60,139,243,222,177,120,230,202,115,229,217, 51,123,150, 96, 0, 85, 69, 85, 45, 0,150,107,231, 84, 28,187, 74,124,201, 92, +121,207,172,226,189,120, 17,207,226, 37,126,199,121, 31,108, 99,229,125,229,124,208, 53,231,217,177,248, 23,198, 78, 62,135,199, +206,157, 59,159, 55,165,189,200,133,206,183,207,207,224,241,239,223,241,166,177,225,161,198, 97,127,234,220, 91,255,221,135, 47, +122,107, 23,120,247,129, 63,255,243,127,253,182, 31,120,247,235, 94,217, 92,235,147,103,207,143, 13, 54, 93, 8, 55,189,245,187, + 63,243, 99,215,237,127,213,226,217,147,159,187,251,107,167,151, 86, 43,231,255,240,179,119,141,204,108, 95, 59,115,234,153, 49, +251,218,189,151, 23,163,211, 91,119, 92,113,205,252,220, 37, 83,227, 67, 69,254,174,239,191, 94,215, 23, 47,202, 16, 83, 31,109, +155,154,248,194,127,254,173,209,173,187,178, 98, 24,201, 76, 77,109,115,235,167, 89,196,121,190,108,110,230,192,194,220,215,142, +158,124,178,171,140,143,143,227,158,185,217, 15,255,226,191,178,221,209, 98,120,162, 24, 26, 67,147,169, 56,223,223,112,253,213, +114,109,241,129,251,191,252,200,153,165,211,203,171,171, 27,125,207,252,145, 47,222, 83, 86,238,130,183,102, 62,255,123, 31,178, +157, 17,155,119,137, 44,128, 40,179, 48,107,136, 83,216,141, 14,117,165,234, 17, 33,139, 56,230,171,119,108,187,102,199,236, 61, +199, 30, 59,159, 34,155, 15,141, 50,179, 10,131,178,175,156,170, 42,179,138, 99,239, 68, 4,209, 92,186,101,138, 16, 50, 99,140, +161,165,213, 13, 4,184,253,240,193, 63,250,236, 87, 55, 11, 36,153,220,144, 69, 50, 0,168,194,236, 74,239,122,174,220,240,253, + 53,174,122,194, 14,128, 38,199,134,167,199,134,119,206, 76,206,140,143,116,139,204, 16,221,126,248, 32,209,192, 66, 17, 34, 42, + 34, 34, 2,168,170,130, 42, 4, 35,199, 21,187,158,184,158,136, 35,192,225, 78, 49, 50,212,153,155,158,152, 26, 29, 30,237,118, + 12,209,109, 55, 29,184,114,225,210, 1,155,141,170,170, 10,160,160,170, 42,162,170,194,233,233, 89, 85, 84, 9,177,176, 86, 10, +217, 58, 62,138,136,134,104,105,125,227,229, 59,102,148,253, 3, 39, 30, 3, 0, 27, 66, 68, 21, 9,102, 15,210, 83, 85, 84, 88, + 69, 18,169,128, 8,134,168,200,179,241,225,110,248,225,179, 43,235,215,238,216,114,122,121, 21, 0, 72,153, 85, 88,162,205,103, + 21, 22,246, 42,193, 11,176, 4, 19,152, 30, 33,202,201,141, 25, 42,242,161,162, 24, 27,234,100,198,188,102,239, 14, 17,177, 34, + 78,197,131,120, 21, 22,241,194, 78,197,135,181, 23,169,194,157,166, 39, 40,168, 2, 0,130, 49,100,141,201,243,172,155,231,165, +243,123,183, 77, 91, 97,175,236,133,157,120,167,236,148,157,248, 74,188, 83,174,212, 59, 81, 21, 17, 81, 16, 81,137,156, 84, 80, + 0, 5, 34, 48,136,214, 80,102,140, 81,178,234, 43, 97,207, 62,196, 89, 21,251, 74,184, 18, 46,217,149, 44,193,188,107,112, 28, + 34,225, 86, 85, 90,119,138, 8, 68, 72,136,150,189, 99,239,132, 43,102,167,174, 20, 95,138, 47,217,245, 89, 60,199,111, 50,139, +178,138,168,134,171,132,117, 12,175, 26, 34, 8, 0, 43,174, 47,222,137, 56,113,129,156, 62,187, 30,251,138, 69,131,183, 9,212, + 48,107, 60,144,244, 86, 32, 44,188, 2, 90,239,251,236,157,122,199, 92,137, 47,185,234,121, 95,177,136, 99,241,202,204,226, 69, + 19,105,245, 83, 89, 85, 68, 89, 34,141, 0,106,185,236, 49, 59,241,149,114,197,174,244,236, 35,107, 88,194, 85, 68,194,181,152, + 85, 61,107,112,223,137, 88,102,141,164,193, 75,202,175,237,216,177,131,224,165,244, 64,196,151, 22, 65,207, 67,180, 62, 61,127, +249, 29,159, 60,123,203,207,253,230, 11, 24,245,159,255,248,210,135, 62,120,250,209, 7,191,116,255,183, 22,215, 54, 42,207,255, +251,206,111, 62,182,184, 18, 62, 58,123,236, 91,191,250, 67,211,239,250,221, 47,220,241,201,179,128, 8, 0,223,254,155, 79,124, +226,215,126,166, 92, 91,126,161, 8,250,129, 3,151,151,139,143,204,239,187,110,246,146,125,127,251,229,207, 61,190,184,242,182, + 87, 94, 93, 49, 51,203,201,197,181,191,188,251, 1, 0,248,253,247,220, 84,215, 31, 62,253,219, 63,255,172,169,185, 64, 58,115, +254,227,147,255,246,159, 77,206,238,182, 89,129, 38,163,188,123,228, 27,159, 63,114,234,244,202, 70,127,117,163,223,171,156,103, +102,209, 39,214,250, 31,255,202,189,207, 75,240, 24,203, 35, 79,118,198,103,126,253, 23,167,182,239, 45, 70,167,243,238,168,201, + 58, 0, 48, 57,115,233,165,219,182, 83,181, 98,141, 41, 50,107, 13,129, 66, 55, 55, 47, 91,152, 59,176,176,125,108,120,232,216, + 19,139,207,154,160,241,241,241,129, 37,123,253,193,171,127,246,237,111,154,156,216,146, 15,143,231, 67, 19, 89, 49, 68, 54,195, +224,122,153, 85,188,120,199, 84,117,136,174,216,127,227,206,197, 71,143, 30,127,232,220,234,198, 90,191,191,209,175,214,250, 85, +191,114,251,182, 77,237,153,157, 84,128, 71, 22,215,255,234,238,111, 62, 27, 25, 18,145,175,254,193,135, 0, 17,208,144, 49,104, +172,161, 12,109, 70,198,134, 74, 79, 16, 85, 0,128,232, 40, 16,144,136,108,119,108,118,223,190,145,245,197,147, 39,207,156, 89, +237,245,215,122,213, 90,175,191, 94, 86,189,178,170, 60,239,156, 26,121,215,205,215, 43,232, 87, 30, 58,117,223,177,147,207, 76, +168,139,177,105, 21, 13, 63,136,170,138,168,226, 69, 69, 33,185, 42,133,232,109, 36,133, 4, 42, 0,128,100,186,163, 51,243,121, +103, 99,125,249,204,202,218,122,191,187, 81,150,107,189,114,173, 95,246, 74, 87, 58,231, 69, 95,177,231,146, 27,118,207,177,240, +103,238, 59,246,200,153,115, 79,139,160, 44,239, 42,139,132, 16, 6, 20,133, 85, 85,196, 67,140,110, 84, 36, 4,132, 42,202, 32, + 82,147, 21, 41, 67,211,233,116,103,137, 54,202,106,173,215, 31,237,118,123,149, 91,235,245, 87,123,253, 94,233,250,206, 57,207, + 68,248,131,251,119, 11, 47, 56,209,143,124,225,238,139, 16, 68,100, 4,128, 4, 68, 17,149, 21, 9,148, 81, 65, 84, 33, 36,176, +194, 34, 30, 84, 98,184, 34, 62,228,208,194, 94,197, 9, 87,202, 12, 8, 69,102,137,186,121,230, 58,185, 29, 46,178,241,225,238, +106,175,191,214, 43,123, 85, 85, 86,190,116,222, 3, 18,233,237,135, 15, 58,207,159,190,239,232,233,197,229,167,178, 67, 10,128, + 16, 34, 80,141,111,196, 35, 85, 21, 76,124, 10,175,202, 78,216, 43, 59,241,165,176,171,227, 37, 4,200,173, 69, 4, 66, 52,214, +228,214, 14,119,138,245, 94,185, 94, 86,125, 87, 85, 21,247,157, 43, 29, 83, 70,175,223,191,187,114,124,228,137,149,187,190,125, +116, 51, 65, 33,122, 5, 17, 5, 5, 16, 80,137, 33, 30,196, 56, 52, 44, 86, 19,244,133,248, 72, 66, 88,212, 4, 51, 77,188, 5, +104, 13, 1, 0, 90, 69,204, 66,208,218, 43,109, 47,243, 69,101, 43,207,165,243, 27,101,137, 25,238,219, 58,190, 99,226,202,187, + 30,126,236,196,153,197, 54, 65,241,199, 64,235, 98,128,168, 48,212,252, 16, 6,145, 16,228,130,112, 56, 80, 77, 5,143, 68,166, +170, 42,130,106,237,185, 17, 17, 9,193, 18,169, 53, 8,133, 49, 38, 51, 84, 57,206,172,201, 44,245, 74,167,160, 67, 88,220,176, +123,251,229,115, 83,159,255,230,177, 80, 48, 0,101, 14, 34, 12, 73,143, 66,121, 48,253,188,151, 80,111,209, 40, 64, 49,234, 14, +225,183,138, 40, 72,124,141,153, 66,136,125, 35,187, 32, 36, 37, 64, 8,153, 33,200, 44, 32, 2, 6,122,137, 16, 55,170, 42,215, +108, 68,225,230,171,118,173,155, 78, 32,200, 69, 30,132, 24, 90, 25, 36, 44, 10,171,120,169, 67,127,102, 17,151,194,240, 42, 70, +242, 18,126, 59,174, 51, 11, 72,204, 94,162, 88, 53, 97, 51, 98, 32, 35, 4,227, 44, 98, 13,102,214, 20,154,105,186, 25, 71,198, + 2, 64,248, 61,145, 32, 61, 41,126, 22, 86,150,200,143,112, 66,208, 47,246,202,149,176,139, 57, 79,124, 13, 95,144,200,158,250, +153, 36, 64, 91,111,214, 4, 18, 32, 17, 26, 66, 99,200, 10,177, 33,131,100, 1, 64,124, 21, 66,121, 80, 85,101, 97, 6, 21,142, +153, 81,204,108,148, 93, 84,120,239, 84,189,136,176,138, 10,164,100, 9, 88, 53,150,163, 0, 36,165, 21,225,206, 68,129,165,201, +168, 18,173,218, 44,106, 35,117,177,206, 95,178, 68, 41,142,119, 37, 12,226, 67,194, 38,204, 42, 73,201,195, 10, 54,130,162,162, +194,113,213,218,127, 70,237, 96, 17, 73, 41, 65,164, 50,100, 46,146,210,210,148,234, 38, 3,131, 22, 0,216,149, 34, 94,155,172, + 85, 84,147, 44, 7, 3, 24, 8,138, 43, 18, 50,181,102,117, 56, 81,195, 41,137, 11,233, 13,135,196, 41, 81,230, 89, 99,250, 35, + 42,172,137,110,173,179, 81, 81, 5, 84, 11,128, 92,245,162,122, 71, 27, 19,114,149, 64,147,211,120,145,182, 6,133,188, 89, 5, +106,202,164,254,136,181,197,161, 84,170, 12, 36,250,118, 50,165,202,170,161, 64, 24,188,129,168, 42,168, 69,132, 79,221,115,159, +138, 2, 72,210,138,152,160, 71,126, 66,253,218,252, 89,191,132,111,136,106,180,232,154, 28,113,252, 62, 4,238,197, 36, 90, 55, +173, 32,176, 24, 22,100, 37, 70,203, 70, 60,218,151, 88,189, 49,228,102, 47, 29, 98, 14, 29, 58, 68,136,248,247, 42, 47,251, 30, + 65,223, 93, 4,189,241,142,223, 25,223, 54,255,252, 23,246,159,203,215,127,238, 19,143,223,241,169,115,157,145,137,231, 77,203, + 46,158,219, 2,252,201, 29,239,126,255,155, 15,223,120,245,222,243, 63,253,181, 91,102, 1,224, 95,124,236,161,247,125,236,225, + 75,175,121,245,119, 98,201,182, 77, 77, 92,247,234, 91, 22,182,140, 95,191,123,251,123, 94,255,170,155,175,221,183,233,132,223, +120,211, 28, 0, 20, 35,227, 63,241,235,127,113,199,167,206, 45, 28, 60,252, 92, 8, 50,227,227,227,203,203, 79, 85, 27,248,229, +127,252,198,157, 59,118,143, 22,102,105,101,177,172,252, 88, 55, 63,176,107, 46,207,139, 71,207,198,198,160,176, 63,122,215,103, +246,191,225, 39, 67, 74,105,178,226, 91, 95,248,243,103, 71,205,252,252,252,197, 9,122,223,155, 94,155,219,108,250,210, 43,253, +242,163, 27,101, 37,162, 94,100,203,104,247,218,249,237, 15, 61,190, 88,121, 15, 0,171, 79, 60,154,117,134, 46,185,234, 21, 75, +143, 29,251,240,191,188,229, 89,179,103,126,126,254, 34, 75, 54, 58,212, 45,242, 66,216,151,235,231, 46,123,217,225,185,233,137, +137,209,161,177,110, 55,179, 38,179,230,214, 87, 95,115,248,154, 40, 88,159,253,189, 95, 90, 58,117,244, 67,239, 56,248,194,202, +208,117,123, 46,237, 12, 79,100,157, 17,241, 37,128, 94,125,213,117, 91,198, 71,198,135, 59,227, 67,221, 78,102, 13,209,238,217, +201,119,220,124, 93,145,103, 0,240,161,119, 94,247,220,133,250, 34, 75,246, 31,126,234, 45,211, 91,231,179,238,152,201, 58, 42, +146,229, 67,163, 5,173,174,175, 40, 40, 33, 73, 10, 60,174,217,177,117,199,214,153,191,123,244,244,115,164,230, 34, 50,116,245, +194,165,239,120,243,143, 22,195,147,182,232, 26,155, 35, 89, 0,205,187,163, 93,168, 54,250, 61, 5, 32, 66, 80, 16, 21, 64,236, +102,102,255,194,220,177, 51,203,253, 11,181,159,158, 62, 65, 23, 40,233, 13, 21,249,117,151,239,249,229,127,242, 83, 19,211,151, +218,162, 64, 32, 34, 84, 85, 36, 6, 4, 5,157,154,219,183,203,149,199, 30, 59, 77,136,132,104,136,214,203,210, 3,160,232, 91, +110,184,242,232,185,213,207,126,253, 91,207, 79,209,243, 55,223,123,251,254,189,251,186,163, 83, 89,119,172, 24, 26, 55,121, 97, +208, 40,136,170, 40,179, 0, 16, 89, 69, 54,182,152,153,187,140,197,227,153, 69, 10, 68, 17,246,250,101,201, 2,204, 11, 83, 35, +183,191,246,186,143,124,241,235,206,251,103, 67,144,103,121,239, 91,222,112,219,235, 14,155,188, 75, 38, 55, 89, 97,243,142,201, +187,100, 45, 34, 1, 33,128, 69,101, 80, 5, 33, 64, 68, 34, 32, 34, 91, 76,207,238, 18, 17, 12, 76, 66, 52,136, 88, 86, 21,128, + 23, 65,212,219, 14,189,236, 91, 39,207,253,237, 3, 15, 63, 99,161,254,192, 79,223,126,235,205,135,109, 62,108,242,174,205, 58, + 38, 43,208,228,100, 44, 2,214,181, 42, 72,205, 48, 80, 9, 9, 36,168, 0, 64,158,101,192, 37,171,214, 89,105,138,187, 1, 20, +167, 71, 59,251, 23,230,238, 59,113, 90, 82,186,255,180,100,136,108,110,139, 33, 0, 4,164,144,111, 67, 40,229, 9,160, 10, 74, + 11,197,197,172, 34, 16,250,125,160,136,104,178,206,212,196,180,170, 18,128, 33, 36, 66, 66, 48,132,253,202, 59, 96, 86, 52, 10, +183,221,116,224, 75, 71, 78, 62,112,226,212,211, 93, 50, 50, 25,217, 78, 44, 32, 42, 32, 40,128, 42, 51,160, 72,200, 41, 99, 59, + 48,100,109, 34,236,235, 20, 15, 0, 77, 86, 76,140,142, 40, 0, 34, 25, 34, 67, 68,225,190, 42,168, 60, 48, 9, 10,190,114,207, +220,158,173, 19, 31,191,235,155, 79,143, 32, 50,198,102,161, 8, 4, 80,103, 52,162, 45,238, 55, 89, 81,200,254, 82, 18, 7,170, +138, 68, 54, 31,235, 22,170, 26,150,205, 24, 36, 12, 84,185,202, 51,131,168,194,204,232,208,109, 55, 29,248,216,151,239,239,149, +213, 69, 8, 66, 34, 34,163, 64,161,250,161,164,164, 34, 26,179, 44, 85,142,237, 83, 17, 17, 78, 7,177, 9, 26, 42,107, 8,100, +140, 25, 46,114, 85, 13, 50, 30, 95, 16, 13,249,126,229, 60, 51, 17, 90, 52,111,123,229,213, 95,248,246,163,199, 78,157,126,106, +181, 71, 64, 2, 21, 64, 2, 85, 66, 80,197,192, 22, 4, 81, 21, 8,201, 93,200, 54,153, 65, 88, 52,148,102, 66,205,132, 85, 69, + 1, 12, 81, 39,207, 68, 21, 66, 61,143, 48, 20,246, 16,161, 95,161,243, 76, 8, 64,116,211,190, 75,246,110,155,249,244,221,247, + 63,185, 47,139,250,129,161,254, 16, 58,212,177,234, 24,215,176,110, 48,135, 18, 91,232,128,199,254, 62,136,135, 96, 20, 16, 12, + 81,110,109, 97,109,145,219,161, 34,159, 24,238, 14,119,138,110,145, 15, 21,121,145,153, 64,156, 53,180,125,180,120,243,171,247, + 63,133,115, 85, 8,109,119,128,230, 25, 84, 9,131, 60, 65,170, 80,164, 66, 79, 40, 23, 71,202,124, 44, 84,168, 2,128, 33,204, + 66,175,217,154, 78,158,141, 15,119,134,139,162,147,219,110,145,119, 66, 31, 2,192, 16,141,101,230,214,215,236,127,114,111, 31, +126,114, 48, 97,212,196,161,244, 47,200,184,164,228,159, 85, 20,148, 67, 1,180,174,244, 0, 0, 17,217,134,166,124,164, 91, 12, + 21,121, 39,203, 58, 69,222,201, 50,107, 12, 32, 18, 81, 70,248, 35,175,184,234, 66, 4,213,235, 83, 23, 84,131,213,139, 69, 27, + 85, 84, 76, 53, 28,141, 26, 23,126, 95, 52,125, 15, 0, 20, 49,149, 96, 33,250, 56, 99,172,161, 34,179, 97,225, 58,153,237, 20, +121,183,200,114, 67, 0,106,173,233,100,246, 31, 92,127,229, 5, 56,132,218,148,117, 49,150, 48,106, 3, 8, 88, 87, 65, 34, 4, + 64, 1, 20, 21,180,117,142,170,130,132,187, 64, 13,229, 58,162,128,234,178,100,114,107,187, 69, 86,228,182,176,166,147,101,157, + 60, 43,178, 76, 21,172, 49, 29,107,222,112,224,178,205, 50,164,170,168,128,162, 0, 18,126, 47,217,201,186,192, 34, 45, 25, 10, + 28,148, 26,155,161,173,206, 76,253, 63,166, 50,103,168, 34,102,214, 22, 54,203, 51,155, 89,211,201,179,194,218,142, 53, 8,144, +103,182,147,219,239,191,102,119, 67, 80, 42,244,132, 31, 14,213,243,184,110,113,117, 98, 37, 41,214, 90, 33, 86,174, 2,123, 2, +161, 65,201,146,177, 79, 56,143, 84, 56, 4, 34, 50,132,153, 53,185, 53,185,181,214, 80,167,176,121,102, 51, 99, 16,160,176,182, +155,103, 55,236,221,209, 42,156,139, 52,186, 19,129, 1, 18,127, 50, 21,175, 98,141, 86, 21, 52, 52, 98,234,210,101, 52,231,146, +234,171,155, 89, 6, 0,160,132, 72, 68,134,200, 26,101, 49,170, 80,100, 89, 93, 74, 43,172,153, 28, 46,118,205, 78, 5,161, 78, +197,218, 96, 6, 65, 84, 56,150,228, 85, 68, 20,161,109,138, 88,146, 9, 0,101, 85,129, 36,234,181,216,183,244,161, 41,176, 2, + 0,130, 18, 33, 17, 26, 67,245, 58,102,153, 13,180,102,198,204,207,140, 69, 45, 11, 77,133, 88,103,147,228, 40, 66,119,161,230, + 7, 8,136,128, 50, 36,240, 71,170, 59, 38,180, 75,162, 40, 22, 6,163,129,213, 1,148, 0,196,224, 41, 82, 70,100,137,172, 49, +198,144, 53,148,147, 85, 0, 27,251, 2, 53,234, 39,149, 62,211,129,196,130,100, 42,170,198, 26,109,160,181,105,185, 68, 14, 53, +118,160, 6,211, 12, 6, 67, 33,112, 34, 64,130, 16,171, 80, 8,130,173, 49,198,112,224, 80,114,230, 3,109,151,200, 33, 77, 61, + 6,168, 91, 31,161, 86,220,212,193,227, 2, 73,124,213,218, 60, 52,210, 84,115,178, 49,180, 65, 9, 9, 17,130, 79, 33,138, 13, + 36, 27, 76, 72,236, 56, 5, 34, 84, 84, 67, 47, 38,112,194,167,242, 57,215,181,253, 32, 76, 81,238, 84, 3, 70,166,221,220, 72, + 13,144, 16, 56, 68, 35, 6,181, 57,133, 16,120, 69,219, 64,105, 53, 19, 92, 75,124,210,112, 78, 77, 76, 81,142,112,161, 72, 74, +116,248,109,106, 6, 30, 18, 73,169,123,103,129, 86,128,218,180, 71, 14, 97,160, 47,152,121,108,140, 86,248, 7, 54,208, 17, 20, + 93,153, 67,163, 66, 57,182,195,132,155,190, 88,130,131, 57, 17,142,191, 23,144,232,173,198, 69, 98, 82, 34, 47, 26, 46, 24,160, +189, 17, 51,168, 59, 88,233, 37, 44, 89,146, 27, 8, 87,102, 31,242,158, 36, 46, 9,162,166,177,105, 20,106,236,161,207, 18,241, +101,181,109,141,138, 6,233, 83,221, 36,106, 45, 58, 20, 90, 14,161,182, 92, 86, 85, 98, 35,161,150,161, 22, 78, 47, 50, 41,244, + 24,184,238,188, 72,224, 64,221, 78, 24, 92,187,218,247, 54,212,200, 96, 4,147,208,108,218, 16,147,200,179,161,215, 28,237, 97, +144,232,212, 5, 7, 21, 73, 93, 41,229,176, 82, 81,128, 7,251, 95,160,109,219,170,173, 14, 69, 3,168,139,212, 67,171,125,150, + 16,139,208, 54,237, 54,234, 84, 92, 35, 81,136, 82, 12,202,161,121,168,226,106, 61,111,186,113,210,178, 63,209,221, 36,106, 0, + 3, 35,147, 83,132,205,178, 95,103, 49,186, 73,190, 2, 65,177,123, 26,205,157,138,168,250,212, 11,247, 17,142, 40,172, 9,164, + 87, 31,164,227,216,104,225,122,237, 68,107, 73,111,119,236,218, 43, 42, 77,250,217,102,149, 38, 25,242, 46,217,235,160, 95, 97, +201, 92,221, 53,107, 4,165,213, 24,108,173, 29,180,126, 58,182, 96,155, 94,103,125, 90, 10, 24,154, 11, 52, 81, 31, 52, 28, 2, + 17, 85,151, 90,190,131,173, 59,241, 50,176,228,161,245, 12, 44,237,251,134,214, 57, 65,185, 80, 6,160,157,205, 71,210, 58,185, +181,112, 3,107,102, 31,124,252,140, 10, 43, 72,242, 33,245, 57, 2,122,129, 78, 89, 18, 89,208,193,150, 89, 91,158,234,119,218, +242,219,234,240, 73,232, 37,138, 16,139,245, 74,130,134, 77,230,129, 35,194,106,113,113,113,105,105,233,165,214, 22,122,113, 31, +170, 58, 49, 49, 49, 57, 57,105, 1, 96,121,121,249,196,137, 19,223, 99,202,249, 32,207,201,201, 73,250, 30, 35,190,203,186,119, +223, 99,208,247, 24,244,244, 30, 35, 83,179, 1,184,244, 18,127,188,104, 36,174,157,123,188, 59, 62,125,219, 7,255,143,205,138, +135,238,252,244,255,251,232, 7, 87, 30, 63,241,247,153, 65,134,104,118,114, 44,183,118,189,172,150,214, 54,158, 78,203,165,183, +124,246,191,252,212, 43,246,190,250,135,223,250,111,254,228,192, 27,223, 25,222,188,243, 99,191,115,223, 95,253,233,227, 71,190, + 1, 79,187, 19,241,194,250,178, 67,135, 14, 29, 61,122,244,248,241,227,207,229, 42, 69,150,253,197,127,252,181, 49, 43,247,220, +243, 55,143,156, 89, 94,235,245, 43,207, 94,228,161,211,203,159,187,247,219, 23,109,229, 33,210,155, 63,240, 95, 47,191,233,205, + 49, 73, 84, 13, 7,167, 30,184,235, 47, 63,248,190, 39, 30,190,255, 69, 97,205,206,157, 59, 23, 22, 22,158, 31, 6,253,248,107, +175,127,255,173,111,153,220,249,178,213, 51,199,255,238,254,191, 61,121,118,121,113,109, 99,189, 95, 57,239,189,136, 42, 84,158, + 31, 91, 94,251,242,183, 79, 44,174,174, 63,217, 69,134, 39,183,220,254, 91,159, 25,157,153,107,135,107,129, 83, 42,252,177, 95, +250,201, 35, 95,250,228,119,158, 65,102,126,126,126,105,105,233,169, 17, 4, 79,253,152, 30, 27,249,133, 31,123, 93, 70,136,160, + 67,227,219,102,182,238,200,120, 13,148, 13, 34, 17, 17, 66, 24,114, 31, 31, 42,174,152,219,242,242,221,115,123,183,111,233, 85, +110,105,189,183,233, 58,174,191,113,231,159,253,118,185,190,178,235,250, 31,168, 89, 3,136,199,191,254,215, 31,122,199,193,197, + 71,143,124,135, 37,104,124,124,124, 98, 98,226,121, 96,208,207,223,250,131,123,182, 77,231,121, 7, 0, 84,188,205,187, 83,219, +247,140,229,164,126, 29, 0,195,108,157, 33, 76,209, 41,230,214, 44,108,157,124,217,174,185,107,119,110, 91, 43,221,242,122,175, +109,108, 78,126,243,206, 47,254,241,175,204, 93,121,195,228, 37,187,153,221,199,126,225, 31,125,225, 15,126,249, 69, 81,177,192, +160,231,106,164, 23,102,167, 47,191,100, 75,222, 25,177,157, 81, 50, 57,251, 10,122, 75,134,135, 39,102,247, 92, 53, 54,115,242, +232,189,167,206,156, 93,222,232,247,171,170,244,190,172,194,180,118, 68,238, 18,226,107,175, 90, 56,116,229,124,207,249,111, 28, + 63,125,255,241,166, 23,251, 63, 62,240,246,209,153,185,213, 51, 39, 95,116, 35,253,156, 36, 8, 17,111,125,205,129,215, 92,181, +175, 51, 50,147,117, 70,109,103,200,216, 2,201,134, 82,128,201, 58, 99, 83,219,199,135,187, 86,251, 1,138, 97,141,201,172, 13, + 67,183, 88,215,133, 1, 51,107, 46,153, 26, 61,176,176,253,138, 29,219,156,232,217,149,117, 0,168, 54, 86, 95, 92,214, 60, 15, + 42,118,235,247,189,252, 61,111,126, 93, 62,178, 37,239, 78,216, 98,200,100, 29,147, 21,148, 21,198,100, 72, 70, 65, 17, 32,239, +142,142, 79,108, 29,201,128,148,195,160,109,104,232,101,214, 24, 34,131, 4,161,125,137,136,136,150,112,199,244,248,129,133,237, +215,204,111, 95,238, 87,171,189,254,139,232,235,159,189,138,229,121,254,227,223,127,227, 59,111,249,225,169,137, 73, 52,153, 33, +139,241,102, 41,180, 87, 66, 37, 8, 67, 11, 64, 56,203,113,106,110,223,240,196,236,242,153,227,167,207, 45,174,246,250,253,202, + 85,206, 23,153,175, 88,156,243,149, 79,251,200,164, 50, 88,102,240,230,171,118, 41,236, 42, 61,223,249,240,169, 7, 31,121,236, + 37, 26, 40,110,157, 24,187,110,223,194,238,185,217,253,187, 23,174, 88,152, 31,234,142,216,206,136, 41,134,108,222, 37, 99, 3, + 6, 6, 99,133, 89,155, 62, 70, 40,152, 33, 41, 50, 33, 10, 34, 49, 20, 67,227,211,219, 47, 27, 25, 59,183,116,238,212,185,149, +213,181,126, 85, 86,174,242,190,202,172,243,222,249,172, 12, 59, 73, 48, 51, 99,172,247,169,118, 51,115,227,190, 75,111,220,119, +233,122,197,119, 63,252,232,131, 39, 79,127,231, 25,212, 8,241,232, 80,119,126,118,230, 71,111,188,254,240,254,171,135,134,134, +208,228,136,198,100, 5,145, 37,155,135,167,177, 25, 25,139, 20, 32, 25,148,188,113,171, 4, 46,130,200,194,169,227,174,138,164, + 0, 22, 21, 76, 6,197,200,204, 76, 49, 60, 50,122,102,121,233,236,242,250,198, 70,233, 74,231,194,158, 54,133,183, 97,251,155, +202,123,199,204, 28,219, 62,161, 84, 56, 82,152, 27,175,216,121,227,229, 59,215,157,255,220,189, 71,158, 88, 94,211,239,136,250, + 89, 81,248,201,215,189,246,245,215, 94,217, 29, 26, 38, 50,136, 9, 52,133, 81,107, 2,232, 6,201,164, 3, 2, 68, 0, 9,173, +105,136,248,135,129, 94, 97,236,100,214, 3,131, 74, 0, 18, 58,116,100, 12, 64,167, 51,186,197, 22,195, 35,107,231, 86,214, 86, +194,236,103,218,247, 39,168,155,141, 59,157, 4,129,210,212,211, 82, 85,132,225,204,190,241,224,101, 34,184,230,220,167,191,254, +224,210,218,250, 11, 44, 65,170,227,227,211,147, 51,115,169, 63,139, 72,209,104, 2, 80, 48, 43, 1,251, 3,128,161,107, 14, 1, +132,131, 20,206,110, 23, 42, 83,139,163,105,225,135,254, 52, 0, 0,214,163,248, 64,104,173,237,224,200,116,150, 15, 13,119,150, + 87, 55, 54,214,251, 85,233, 92, 45, 65, 97,227,150,202,115,229,216, 51, 59,207,126, 96, 12, 31,137,116, 52,183,111,185,225, 74, + 5,125, 98,165,247, 55,223, 58,186,180,182,241, 66,217, 32,178,153, 45,186,173, 62,127,148, 2,172, 39,134, 98,208, 47, 32, 40, +168, 77,103,173,221,101,131, 6,122, 21,186,252,113, 50,173, 6,207, 72,221, 40, 79, 46,158,172,201, 58,157, 33,204,178,124,184, +179,177,222,175, 54,202,170,116,222,179,117,158, 75,199,206,251, 50,227, 36, 86, 97, 15, 28, 78,173,239,128, 44, 1, 80,216, 58, + 54,244, 35, 55, 92, 41,162, 71, 78, 47,125,245,200,137,231,130,226,124, 18, 6, 25,107,108,193, 42,117, 63, 47,128, 90,106, 96, + 11,168, 6,173, 18, 12, 51,148,218,150,153,150, 94, 53, 77,135,216,249,175,155,139,145, 71, 13,250,161,169, 72, 25,163, 90, 20, +136,134, 76, 39,207, 54, 74,215,175,170,202,113,158,177, 99,219,241, 92, 57,174,156,175, 77,184,247, 28,182, 13, 10,173, 54,150, + 48,216, 9,134,112,223,236,228,222,217,137,202,241, 61, 39, 6,194,206,231,202, 32, 68, 34,155, 65,108,221, 70, 49,160,180, 27, + 73,224, 21, 32, 40, 8,134,110, 50, 40,198, 62,160, 34, 66,221,214,106,183,150,218,179, 76, 0, 65,124,106, 68, 95,187,243, 30, +182,173, 64, 68,178, 54, 11, 88,158,194,154,210,185,210,121,199,226, 44,119, 50,169,124,220, 51,169,244,222, 57,118, 97, 23, 38, +207, 94, 24, 17,155,171, 40,168, 98,145,227,245,187,183, 31, 92,216,182,212,171,238, 60,242,232, 99,231,150,158, 59,131, 16,137, + 2, 80,146, 0, 20, 4,195,125,163, 82, 61,161,170, 10, 74, 10, 2,160,152, 76, 38, 70, 36, 97, 51,240, 5,173,102, 84,187,177, +213,192,176,164,198,213,112,195,172, 8,150, 66, 32, 50,160,121,102, 67,216, 93,121,118,236,157, 23,107, 77,193,198,101,153, 99, + 95, 58, 95, 86,190,242,236,172,247,108,146,222, 33,167,145,242,176,158,100,116,106,184,248,193,107,118, 9,192, 3,143, 47,125, +253,193, 99,237,141, 11,159,105, 28,132, 41,232, 71, 5, 69,192,104, 42,194,150,130, 0,113,128,156, 34, 80, 41, 58,239,228,216, + 17, 84,133, 35,198, 81, 89,235,182,189, 52, 35,223, 53, 35, 82,211,149, 19,246, 40, 54,116, 65, 2, 60, 50, 0,195,212, 16,170, + 53,136,104, 8, 13,137,103,102, 67,214, 72, 46,166,200,178, 42,243,165, 15,123,222,121,207,236,188, 97,149,196, 41,101,145,192, + 38, 2, 36,163,170,112,213,236,196,229, 91,198,214,156,124,246,190,135, 87,215,214,158, 57,131, 16, 16, 80,234,144, 47,140, 17, +215, 27, 7, 5,143,166, 26,118,231, 1, 0, 1, 12, 55,131, 80, 59, 95,168,251,168,208,112, 65, 48,182,119,185, 6,106, 69,172, +172, 8,212,216,164,122,156,183, 65, 64, 40, 0, 18,134,189, 9, 77, 24, 99,102, 33, 34, 17, 17, 75, 98, 13,230,108, 59,153,143, + 91, 3,214, 91,159,137,225,120, 16,182,161,137,234, 27,176, 63,227, 68,111, 60,176,167, 20,253,202,145,147,143, 60,126,230, 89, + 68,210,105,249,106,200,107,148,174,184,127, 27, 34, 6, 4, 32,160,168,214,160,131, 6, 15, 80, 71,210, 45,232,210, 32,119,154, +253,144, 26,172, 68,152, 11,143,211,225,241,103,177,193,244, 37,112,127, 88, 60, 9,225, 6,161, 33, 53, 68,214,218,220, 70, 30, + 85, 33, 89,177,196,172,181, 33, 15, 96,182,152,234,169, 34,162, 33,253,190,189,115,229,194,182,111,156, 56,125,228,212, 19, 23, + 45,236, 14,164, 26, 24,108, 93,194, 58, 97,130,253,212,228, 70,164,138, 0,212,104,169, 22,158,165,134,145, 0, 68,148, 12, 54, +188,171,221,153, 70,241,105,176,216, 65,227,218, 60,110,163,193, 52,206,194, 19, 24, 32, 16, 65, 99, 80,132, 65, 16, 13, 49, 26, + 68, 99, 40,243,156,123, 19,182,192,243,196,150,136, 85,211, 30,125,234,153,189,136, 2, 16, 2,106, 8,223,240,224,252,236,213, +151, 76, 31, 59,187,122,207,195,143, 62, 69, 80,110,107, 15, 13, 45, 84, 88, 91,112, 32, 56,120, 80,132,136,236, 68,108,112,185, + 3,207, 22,244, 45, 28,203, 0, 86, 66,161,129, 8,213,152,161, 6,242, 5,136, 42, 18,194, 81,109,144, 67, 24,192, 86,225,246, + 20, 81, 0,194, 86, 98,168,138, 72,200, 65,202, 40,192,249, 44,147,115,228,140, 48,179, 33,202, 36, 88,113, 10,251,180, 86,158, + 5, 52,104, 92,136,242,118,207,140, 93, 58, 49,124,244,220,218,125, 71, 31,125, 10, 9,170,189,187,164,200, 38, 80,154, 16, 90, +160,160, 34,160, 13, 74,184,193, 34,214,184, 68,109, 97, 82, 19, 52,119, 0, 45,219, 48,171, 57, 51,200, 81, 75, 98,180,165,176, + 33, 28,132,182,190,161, 34,164,242,136,106,216,246, 68, 65, 12, 80,192,176, 7,200,168,241,236, 13, 25,102,207, 72,136,214,144, +103, 49, 68,198, 24,239,185,242,172,170,134,144,130,238, 34,238,158, 25,221, 62,182,247,158,227,167, 79, 47,173, 60,137,138,105, +216, 45, 3,106, 48, 45, 38,220, 72, 61,182,141, 13,168, 45,222,191, 36, 70,212,160, 93,109, 1,183,130, 42, 66, 27, 99,213,240, + 78, 90, 81, 82, 27, 17, 26,192,228, 56,176,155, 71, 99, 35,195,230,109,218,148,111, 65, 65,129,130, 52, 32, 66,144,172,112,200, + 1,148, 41,158,132, 89, 8,209, 24, 50,204,129,137, 33,125, 97, 84, 3,212,177,232, 16, 17,240,224,194,214,141,114,234, 43, 71, + 78,246,170,106,128, 65, 53,250, 70, 2, 52, 27, 84, 37, 72,181, 64, 90,202,232,235,181,133,165, 14,113,163,138,130,160, 38,102, +165, 60, 35,150,132,226,236, 64,120,159,161, 5, 44,106, 28, 89,130,202, 2, 70, 9, 78, 40,198, 56,234, 19,205,227,160, 33,104, +236,102,218, 88, 46,101,143,168, 68, 38, 70,115,128, 28, 49,153, 36, 72, 34, 20,148, 17,125,152,227,112,222,123, 20, 32, 52, 74, +121, 22, 37,243,213,251, 46,121, 98,173,255,141, 99,167,194, 42,215, 42, 22,240,190, 42,160, 40,141, 99,138,137,133, 10, 4,244, +123, 11, 99, 94, 79,243,107,130, 94,182,118, 6,104,237,222, 87, 3,153, 85, 65,227,102, 29,113,203,142, 40,142, 81, 91,235,109, +244, 68, 18,147, 90, 74, 9,208, 88, 51, 29,200, 27, 49, 33, 66, 21,163, 69, 15,222,138, 80, 65,169,117, 86, 52,183,138, 96, 17, + 57,110,132,226,189,103, 81, 66, 21,178, 4, 96,128,114,156, 29,165,177, 43,118,174, 98, 23,195,110,209, 16, 49,106,130,245,246, + 5, 80, 35, 68,219, 73, 67, 13, 5,100,104, 5,202,173,251,151, 54,143, 6,249,213, 98, 95, 68, 54,135,188, 12, 20, 33,102,102, +117,200,144, 28,105, 11,121, 13, 45,156, 94, 29, 89,192, 32,108,125, 64,172,162,162, 97,180,237,138, 4, 38,212, 21, 8, 90,187, +100, 68,102,121, 4, 96, 85, 36, 69, 2,178, 10, 29, 80, 91, 20, 50,168, 98,162, 45,193,105,204,106, 26, 12, 80, 5, 72,254, 56, + 97,189,181, 45, 44, 17,197, 27,211,119,142,188,171,177,225, 49, 83,101, 80, 78,199,117,174, 87, 59, 54,136,147, 89,141,183,219, +132, 15, 31,200,148, 55, 97, 64,181,150, 38, 12,153,126,212,187, 16,106,106, 12, 24, 48,132, 14, 68, 72, 66, 68, 96, 84,213,132, +178, 30, 54,144, 14, 99,132, 72,146,155,111, 76, 3,194, 0,144, 24, 90,137, 21,180, 3,229,246, 16, 69, 0,186,139,192, 32, 44, + 29,234,116,180, 78,226,211, 86, 30, 90, 15,206, 68, 70,196,200, 51, 77,137,161,182,210,230,182,215,108,113,173, 29,150,104, 91, +146, 90, 5, 96,104, 11, 25, 98,170,206, 32, 80,208, 67, 66, 2, 36, 37, 82, 37, 85,131,170,132, 22, 12, 0, 42, 72, 68,147, 67, +218,194,172, 53,217,211, 64,139,161, 13,234,173, 13,144,164,215,100,110,195, 6, 40,205,104,135, 72, 51,229,144,152, 37, 3,239, + 52,170, 91,163,170, 5,106, 12,124, 27,127,169, 3,210, 4, 13,172, 57, 5, 17,208,150,178,198, 38,212,115, 18,208, 66, 98,107, +189,177, 81,204,102, 4,227,172, 26, 33, 9, 1,106,152, 19,131, 24, 42, 37, 21,107,240,177,168, 42, 49,217, 75,140, 80, 21, 16, + 28,136, 95,194, 71,181,185,141,154,122, 0,245,192, 0, 0, 2,251, 73, 68, 65, 84, 5, 16,124, 86,154,106,104,164, 70, 65,106, +163,211,108,224, 35,218,216, 23, 77,116,132, 76, 99, 0, 43, 15,144,120, 8,137, 5, 3, 27,192, 36,178, 34,103,164, 29,114, 13, +236, 25, 3, 77, 20,219, 12, 76,164,153, 57, 4, 2, 32, 68,129,102, 92, 17, 90, 42,198, 17,171, 27, 36,157,107,179, 32,245,254, +180,237, 0, 79,131, 1,106, 56,146,166, 44, 6,236, 78, 45, 47, 41, 29,131, 1,128,238, 32, 26,184,149,200, 73,226,194, 38, 21, + 27, 28, 31,104,237,255,163, 50,144, 17,214, 46,175,197,153, 90, 39,234,218,239,133, 26,161, 81, 19,235, 32,171,150, 32,137,192, +246, 22,217, 18,135,200,210,178,166,173,127, 82,160,168,109,121, 73,158,123,147,102, 13, 84, 54, 0, 67, 65,168, 61, 30, 4, 97, +158, 42, 69,220,225,134, 68, 54,107,123,237,182,100,147,224,180, 96,211, 82,103,128,105,216, 32, 70,107,205, 80, 11,198,203, 98, +107,183, 90,104,219,252,243,222, 74, 18, 36,202, 94, 64, 99,241,176, 38, 48,213, 52, 82,249,189,237,179, 82,245, 11, 6,103,206, +130, 66,105,152,190,229, 88,247, 8, 69,146, 24,240, 64, 93,140,148,148, 20,183, 66,161,118,112, 93,255, 25,203,152, 77, 28, 52, + 40, 77, 82,139, 56, 12,204, 26,180, 49,234,210,250,146, 8, 12, 0,210,117,160,112,188,137, 73,141,155, 15, 64,250, 68,136, 12, + 0,213,245, 60,220,187, 4,171,172,210,216,154,182,243,226,166, 14,208,214,142,129,131,122,234, 76,106,163, 42, 73, 69,164,205, +136, 36, 26, 33,225,169,199, 23, 68, 55,113,109, 96,135, 55,105,205,207, 52, 3, 91,218, 6,230, 67, 43,205, 1,109,217,244,214, +244, 98,154, 60, 12,163,232,173,219,105,124,121, 12,145, 55, 43,218,249, 82,195,233, 52,142, 99,202, 0,231,141, 10,212,142, 6, +154, 65,169, 1, 61,130,129,113,137, 20, 88, 55,100, 13, 76,236,192,249, 3, 26,173, 73,141,129, 96,165, 53,240, 10,178,105, 36, +170,101,242,181, 53,208, 9,181, 13,130, 48,205, 44,173,185,221, 84,105,199,104, 41, 90,227, 50,173,202, 97, 26,165, 23, 17, 65, +168,119, 56,211, 52,130, 27, 92, 85,168,154,132,141, 11,176,214,185,116,130,138,132,184, 7, 68, 2,223, 32, 49,164,169,198,139, + 14, 88, 37, 25,152,152, 27, 16,156,214, 0, 77, 51, 5,217,244,124, 7, 69,104,224,139, 45,185,106, 13,152,130, 13,219,186, 11, +187,129, 32, 16, 6, 38, 63, 6,203,239, 45, 6,213, 60, 2,229, 88,191,111, 12,123,187, 73, 22,228, 28,218,187,141, 55, 21,178, + 86,236, 9,237, 48,172, 30, 80,106, 2,107,105, 21,151,218,190, 44, 14,210, 52, 99,135,131, 31,165, 17,191, 40,113, 48, 48,130, + 36, 58,216,138,105,139,116,203,139, 57, 9,229,212,232,158, 90, 49,116,171, 24,168, 3, 41,232,192,160, 83,109, 59, 0, 46,176, + 69, 93,138,114, 96, 64,249, 47,156, 73,108,118, 79, 77, 87, 68,234, 90,193,192,144, 90,173, 29, 45,181,109, 20,173, 45, 54,155, + 38,181, 54,205,255, 36,115, 62,176,120, 54, 56, 24, 16, 7, 10, 77,107,172, 73,217, 67, 18,159,118, 57,213,122, 63, 78, 73,236, +104, 68,180,101,224, 90, 26,212, 74,169, 66,181, 22, 54,111,251,215,200,116, 99,171, 90,150, 40,197,102, 3, 5,217, 77,243, 80, +146,196, 73,146, 14, 15, 76,170, 53,179,108, 23, 26, 98,211,218, 79, 65,237,196,235,202, 33, 30, 58,116, 72,117,176, 38,251, 93, + 53, 22,133,207,215, 55, 46,244, 54,170,254,127,136, 44, 69, 54,247,214,151,234, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/twist.png.c b/source/blender/editors/datafiles/twist.png.c new file mode 100644 index 00000000000..ee5f6a105ba --- /dev/null +++ b/source/blender/editors/datafiles/twist.png.c @@ -0,0 +1,347 @@ +/* DataToC output of file <twist_png> */ + +int datatoc_twist_png_size= 10889; +char datatoc_twist_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, + 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, + 0, 0,177,143, 11,252, 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, + 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, 20, 5, 32, 44,179,189, + 3,155, 0, 0, 32, 0, 73, 68, 65, 84,120,218,237,125,121,180,165, 87, 85,231,222,251,156,239,187,111,172,247,106, 78, 42,149, + 87,153, 67, 37,129, 4, 8, 24, 66,165, 80, 32,129, 24, 20,193,197,160, 66, 3, 45,189, 80,108, 17,167,232,106,249,195,181,218, + 70,141,141,141,237,128, 40, 14,140,203,169, 69, 68,198, 32, 67, 24,132, 5,100, 36,132,140, 85,169, 34, 53,215,155,238,244,125, +231,236,161,255, 56,231,251,238,125,149, 74, 72, 65, 80,232,213, 55, 85,245,238,244,190,123,238, 62,123,252,237,223, 62,193,221, +187,119,195,183,186,121, 0,184,233,166,155,218,199,215,127,236, 56, 32, 2,192, 13,215,108, 24,189,107,252, 74,215,127,124,241, +228,151, 74,111,122,222, 83,118,110,223,188,190,125,242, 93,111,252,201,183,191,254,165, 91,214,175, 75, 15,113,215,174, 93,127, +240, 95, 94, 37,117,191,119,108, 79,111,208, 95,238, 87, 29,239, 88,100, 24,184, 95,133, 55,189,247, 67,221, 97, 77, 0, 80, 78, +204,148, 83,243,179, 91,206, 23,209,167,237,126,241,161,165,174,136,153, 41,162,189,233, 37,207, 5, 0, 2, 0, 36, 50,101, 87, + 20,151,236,122,201,234,225, 7,186,131,225,173,251,151, 68, 13,129,136, 40,127,187,186,183, 24,135,221,114,106, 93, 28,246, 14, +236,187,235,200,106,119,121, 40,123, 22, 7, 95,255,198,109,155,214,205,228, 55,113,221, 23,174,235,222,162,137,172,244, 6,203, +189,225,209,229, 85,166,169, 39,236,188, 56, 46, 31,205, 31,167, 28, 52, 12, 66,255,120,247,200, 61, 71, 87,251, 83,101, 49,209, + 41, 99,181,242,181,175,221, 97, 96, 79, 63,247, 12, 15,128,113,184, 82, 87,221, 97, 29,122,195,122,178,240,115,211,147,206,209, +198,217,233,153,201, 78,136, 92, 56, 34, 64, 24, 14, 86,251, 85,232, 87,161, 10, 17, 9, 39, 59,229, 68, 89, 76,117,202, 77,235, +102,147,244,241,177,236, 29,142, 63,120,221,187,111,157,219,186, 32,177, 54,131,223,127,193,233, 39,121,251,171,223,246, 25, 87, +116, 30,241, 74,151,159,191,224,157,255,226, 55, 30, 72, 79, 61,253,130,179, 94,247,188, 43,234,200,175,255,211,127,200,111,186, +249, 93,127,161, 92,215,189,227,221,197,135,186,195,154,133, 17, 41, 48,247,171, 48,172,195, 47,253,229, 7, 0,128,202,201,217, +114,114,174, 51,179,105,114,122,253,101,207,122,249,114,191,122,224,232,138,136,130,153,170,190,249, 21,215, 2, 0,145, 47, 76, +217, 57,183,241,172, 75, 1, 96,165, 63, 24, 12,235,187,143, 13, 13,192, 59,247,153,111,236, 3, 0,207,195,110,221, 95, 52, 21, + 87, 78,134,222,210,234,160, 58,188,220,173,112,106,190,152,249,226, 93, 15,124,236, 43, 95, 7, 0, 10,195, 85, 13, 21,215,253, +225,242,161,254,226,190,238,176, 90,234,246,143, 28,222,255,169,187,143,171,217, 51, 47, 92, 0, 0,175,177, 18,174, 56, 12, 98, +181,178,218, 93, 45,156,155,158, 40,251,117, 56,122,104, 79,167, 44,166, 59, 37, 0,248, 88,247,194,112,169,174, 67,175,170,187, +131,106,253,204,180,153, 77,150,229,150,185,217,135,142, 47,155,217, 83,206, 58,205, 87,221,163, 85,136,195, 16, 7,117,136, 34, +147,157,162,172, 61, 34,122,231,102, 38, 58,221, 65,117,162,181,124, 39, 55,122,164, 23,174,255,248,226,245, 31, 59,254,157, 94, +232,103,223,123, 7, 0,220,240,188,141, 15,127,233,202, 39, 62,129, 8, 79,162, 39,187,118,237,250,131,215,190, 82,133,149,171, + 88,245,194, 96, 41,132,170, 14, 49,176, 84, 33, 62,120,100,233,112,119,248,204, 39, 44,152,154,168,138, 72, 96,101, 85,102,185, +225,253,159,220,127,108,185,189,144, 91, 88, 88,248,145,103, 92, 73,190,116,197, 68,209,153,246,229, 52,152,152, 4, 0,115,228, + 46,126,202,179, 58, 97,177, 63, 12, 19,133, 51, 0, 3, 80, 51, 51,101,181,167,157,127,230,115,159,116,254,141,183,221, 51,242, + 95, 69,103,202, 84, 36, 6, 53, 43, 38,102, 59,179,155,182, 78,173, 67, 68,242,197,112,229,232,202, 96, 24, 89,142,118,135,203, +149,238, 60,109, 86,212,212,128, 16, 16,192, 16,222,252,138,107, 1,240,191,189,231,195, 30, 0, 76,133,195,128,195, 80, 57, 40, +135, 98, 98, 86,124,233, 59,147, 26,227,225,251,190,180,216,237, 71,150, 42, 90,173,238,115,247,199, 43,206, 90,151, 44,167, 91, +203,111,190,239, 67,107, 60,106,221, 91,148, 56, 84, 14, 34, 76,136, 18,171,186,191, 40,113, 82, 99,181, 58,232,247, 6,245,234, + 96,216,171, 66, 96, 22, 55,245,145, 59,135,195, 24,143, 31,122,112, 97,243,250,171,159,116,222,151,238, 63,176,218, 31,228, 11, + 73, 72, 87, 9, 38, 49, 42,199,186, 79,228,156,239,212,189,227,251,143, 44,177,170,154,137,234,160, 14,117, 28,136, 40,144, 91, +191,113, 83, 21,235,201,178,120,234, 89, 91,191,113,104,241,224,241, 21, 15,128, 18, 43,137, 67,137,149, 72, 48, 14,162, 22, 69, + 2,115,119, 80,137,234,244, 68, 9, 0,133,247, 83,157, 50, 68,142, 34,221, 97,125,232,200,145,137,210,175,155,154, 32,196,179, + 55,204, 30, 93,238,122, 0, 8,131, 69, 9,195, 40,204,162,129,153, 89,163, 72,250,157,137, 78,177, 97,118,186,240,190, 14, 49, + 78,148,162,166,170,155, 69,183,204,205, 46,118,123, 81,205,140, 9,241,210, 51,183,122, 64, 24,244, 87, 69, 53,176,176, 40,139, + 68, 17, 22, 21, 17, 86, 85, 53, 0, 32, 68, 5, 48, 3, 4, 75, 94,145, 28,121,239, 98, 29,213,204, 0, 0, 31,155,159,252,247, +187, 45, 44, 44,248, 71,121,185, 13,157,117,127,181, 51,189, 14, 0,126,239,121,155,204,244, 20, 62,161,156,154,189,254,227,139, +175,123,215, 45, 15,127,169,232, 76,158,116, 69, 39,183,254, 55,190,127, 47, 0,188,253, 63, 61,249,225, 47,197,122,120, 42,254, + 8,241,189,191,120,237,201,158,198,183,253,220,203, 30, 45,112,157,181,117,227,121,167,111, 22,149, 3,139,171,251,143, 45, 15, +170,250,132,247,253,229, 27,126, 2, 1, 88, 84, 84,213,172,141, 68,237, 87,195, 91,222,249, 14,145,168, 18, 37, 12,195,112, 37, + 12,151, 67,228,192, 92, 71, 94,234, 13, 63,113,251,125, 47,123,230,165,166, 42,102, 44, 18, 69, 89, 52,178,152,217,207,255,249, + 63,174,145, 17, 58, 71,190,112, 69,233, 39,166,203,169,185,206,228, 92,225, 93,233,125,167, 40,214,207, 76, 61,255,210,243, 52, +107, 28, 32, 34, 17, 34, 34, 32,136,217, 91,254,243, 11,215,200,200,249,142, 43, 58,174,152,244,229, 84, 57,177,206, 79,204, 58, +114, 6, 0, 96, 14,241, 89, 63,252,154,238,160,234,214,172, 0, 6,205, 95, 3, 51, 83,149,223,126,229,117, 99, 23, 42, 74,114, + 37,249, 2,169, 64,231,203,201,185,153,205,103,139, 8, 21, 83,151,238,126,233,226,209,253,129,121,101, 80,245,130,153, 90, 90, + 29,128, 1,152, 2,154,217,203,159,245,212,236,143,200, 21, 0,160, 98, 6, 12,128,190, 51, 53, 57,183,249, 9,167, 95,136,206, +155,196,227,135,247,214,145,131,216,254,227, 43,103,111,156, 86, 53, 53, 0, 68, 68,116, 0,138,240,196, 51,183,254, 31,239, 0, +128,144,200, 0, 76,197,140, 17, 77, 57,132,170,167,202, 68,164,194,135,142, 29,169, 66, 12, 33,198,200, 95,121,112, 89,213,192, + 12, 1, 8,145, 16,189,163,223,120,207,135, 35, 11, 0,120, 83, 81, 14, 28,134, 18, 43,225,128,228, 38, 59, 83, 96,170, 28,227, +176,219,171, 98,191, 10, 81,164, 98, 16,245, 31,191,235,240,115,158,176, 25, 17, 8,233,157, 55,125,245,182,251,247,141, 92,173, +132,138,235,228,176,107, 21,246,157, 41,225,136,177, 6,131,186,119,124,249,248,145,192,220,175,234, 65, 20,134,210,251,114,223, + 16,255,229,147, 55,129,217, 25, 27,231,111, 71,106, 77,143, 56, 12, 36, 86,198, 65,149, 65, 69, 99,144, 56,224,170,207,117, 63, + 14, 22,135,117,232,215,161, 59,172,251,131, 97,175,183, 90, 85,213,157,123, 14,171,200,121,167,111, 46, 28, 93,121,193,246,209, +138,148,131, 10,155,177,169,152,178, 69, 85,101, 95,178,196,138,195, 32,138,196, 40,145,165,138, 92,135,104,117,192,114,118,225, +156, 11,187, 43,135,102, 58, 19, 19,101, 49, 63, 51,185,220, 27, 2,128, 55, 73,151, 16, 83, 81, 97, 48, 65,137,166, 17,205,122, +189, 30, 33, 18,161,115, 72, 8,162,202,113, 40,195, 1,145,143, 28,166, 59,157,194,209, 69,219, 54,125,225,158,253, 0,224, 85, + 25,148, 85,216, 56, 40, 7, 48, 53,168,176,182, 16,234,227,221,190,119,228, 29, 77, 20, 5,139,138, 90, 21, 98,168,194,241,213, +229,201, 78, 89,133,232,136,188,163,185,153,169,180,162, 40, 18,133,107,141,181, 72,173,162,162, 18, 68,135, 85, 93,133, 48, 81, +150,117,100, 4, 64, 0,239,220, 84,167,156,158,232,120, 71,171,131, 97, 20, 1, 4, 4, 60,111,243,220, 81, 1, 47, 28,148, 43, + 13, 21,115,149,178,131,192, 82, 71, 14,204,106, 48, 61, 81, 70,102, 71, 68, 68,222, 59, 81, 21,177, 78,225, 74,239, 16,193,204, + 0,129, 16, 84,213, 75, 28,114,221,231, 24,218,248, 17,152, 89, 68, 68,205,172,112,110,162, 44,213, 12,192,136, 80, 69,213,155, + 35, 20,209,126, 29, 69, 36, 69,144,237, 27,230, 40, 14, 87, 98,168, 99,186, 10, 75,136, 28, 89, 88, 68, 52, 71, 26, 71, 72,128, + 0, 72,136, 68, 14,147, 78,123, 71, 96, 6, 0,102,136,104, 96, 62, 68,102,213, 28,209, 88,162,136,136,138,154,168,169,153, 53, +246,174,150, 30,130, 2,136, 25,152, 1,162, 89, 54,226,199, 51,135,124, 92,110,103,158,121,166,255,182,127,121, 98,102,254, 57, + 63,247, 59, 23, 63,231,165,249,177,229, 96, 14, 0, 31,254,159,255,245,238,207,188,255,145,194,205,163, 85, 62,136,254,219, 88, +199, 27,254,241,129,180, 95,128,248,161, 27,126,246,206, 79,252,237, 73,223,185,109,231,229, 79,122,254, 43, 79,187,240,201,127, +253, 51,167,176, 9,167,182,160, 54, 21,224, 80,255,254,143,108,123,244, 55, 31,184,235, 43, 7,238,250,202,227, 86, 62,156,112, +115, 69,231,148, 86,243,109,223, 30,171,132, 36,214, 55, 92,179,129,156,191,234,213,191,241,197,191,125,235,183,124,255,107,175, +190,226,178,115,206, 40,157,227,180,185,102,191,252,151, 31, 24,134,248,173,213,232,170,171,174,122,209,165, 23,236,122,226, 69, + 0, 36,202,104, 38,202, 26, 43,174, 7, 49, 12,146, 39, 97,205, 25,106, 96, 25,212,252,145,155,191,254,137, 91,239,169, 98, 76, + 73,106,202, 9, 94,120,229,101, 47,127,230,165,102,166,102,170,154,204, 91,212, 84, 76,147,181,171,153,233,111,255,195,191, 30, + 88, 92,121,148,228, 17,119,237,218,245, 71,175,123,141,170, 54, 62, 66, 77, 85, 37, 42, 71,149, 32,177,146, 88,113,172, 68, 68, + 84, 53, 85, 89, 77,110, 83,135, 56,168,234,237,155,215,135, 40,152,115,103,131,102, 53,105, 17,249,183,204, 68,213, 76, 69, 1, + 1,126,247,253,159, 62,112,124,233, 17,179, 89,114, 5,160, 26, 24, 90,186, 41,185,194, 10, 85, 9,228, 74, 34,135, 0, 8, 67, + 68, 20, 16, 53, 36, 0, 66,244, 68,212, 41,183,156,113,254,210,161,251,213, 0,137, 58,142, 16,209, 90, 11, 6, 0, 52,132, 84, +137,165, 36, 8,205, 84, 84,127,233, 71,119,153,193,175,254,245, 7, 79,174, 67,174,232,160,106,118, 38,166,166, 9, 92, 16,114, + 5, 82, 65,190,164, 98, 2,250, 75, 92,117,197,204, 16, 8,177, 67,254,156,167,188,160, 40,138,225,176,123,104,255,221,169,198, + 88, 20,155,158,154,158,242,150, 54, 46,249, 97,131, 84,112,142,254, 36,191,172,170,191,253,202,235,204,236,191,189,231,195, 39, + 46,136,124,137, 89,204,134,166, 10, 98,170,136,106, 0,228, 10,114, 69, 49, 57, 59, 53,183,205,149, 29,242,101, 49, 53,139, 42, + 96,160, 42,113,216, 93, 58,188,183,138,162,166,162,198, 10, 71, 87,186, 85,144,133,205,235, 28,152,229,239,151,238,101,169, 33, + 32, 34, 90,242,162,166, 6,240,223, 95,241,195,127,247,217, 91,239,120,240,192,200,236,137, 28, 16, 1, 18, 32,166,228, 18, 76, +192,140, 8,201,121,231, 75, 87,116,124, 89, 2, 24, 18,130, 48,162, 67,114, 96, 18,134,221,195,135,246,214, 33,132,200,237, 31, + 53,251,198,129,165,155,247, 45,169,168,136,169,230, 37,101,168, 10,145,112,116, 35, 4, 7,118,206,182,205,107,205, 62,127, 23, + 49,137,170,172, 34,160,162, 41,191, 49, 1, 3,242, 5,148, 83,190, 51, 73,232,154,175,173, 28,170,238,145,251, 22,123,195, 97, +136,170, 38,166,106,192,138, 81, 33, 42,138,194,231, 31, 88,188,100,251,252,180,135,166, 30,180, 36, 34, 34, 34,176,251,142,245, +255,240,159,110, 60,185, 14,169, 4,225,168, 28, 84,162, 74, 52, 97, 51, 81, 17, 48, 5, 4,242, 29, 34,143,136, 42, 12, 9, 41, + 32, 81,225,186,191,212,237, 46,117,187,221, 42,178,168, 70, 22, 81,141,172,108,164, 72,108,164,230,190,186,119,145, 85,158,125, +193, 38, 67, 64,160,229,126,253,190, 79,126,177, 44,220,250,233,201, 91, 30, 60,252,136,142,145,195, 64, 56, 10,199, 36, 33, 83, + 81, 19, 84, 83, 83, 36,135, 34,130, 1,208, 80,188, 57, 54,141,136, 78,226, 48,244,142,213,117,236,174,174,138,106, 21, 98, 29, + 57,138, 84, 33,154, 25,155, 83,116,224, 74, 67, 39,134, 31,186,227,208,189, 15,220, 13, 42,165,119,219, 55,207, 79,150, 69,100, +185,108,199,214,229, 65,125,203,158, 3, 39, 89,144,196, 90, 36,170,176, 42,131,176,170, 2,164, 82,202, 82, 13, 96,202, 42, 30, +145,156, 47,136, 75, 64,144,186,207,117, 95,193, 42,230, 16,185,142, 92,199, 88,231,100, 74,197, 84,196,144, 10,117, 37,184, 2, +201,159,115,246,133,251,246,222,181,113,195,124,202, 7, 28, 81,167,240,115,147,240,180,115,182,125,249,129, 3, 39,217, 50, 19, + 49, 97,200,233,148,162,170,153,128,170,162,161, 68, 69, 66, 34, 4, 82,239,145, 60,168, 72,232,199,186,119,120,185,155,172, 88, +155, 50, 41,161, 38, 81, 36,178,152, 69,128, 1, 32,130,235,144,239,108, 59,227,172, 45,219, 78,123,232,158, 59, 61, 57,239,201, + 59, 87, 22,102, 86, 60,237,236,211,191,188,231,224,154, 5,153, 36,123, 16, 83, 1,149,244,216, 84,193, 68, 85, 0,172,181, 16, +138, 14, 0,148,235,186,234, 47,247,135, 85,136,228,136, 4,189, 39, 3,151,180, 55,187, 64,181,168, 42,170,194, 26,171,202, 12, + 68,101,121,241,176, 48, 59,162, 9,243, 68,228,137,196,185,137,178,184,252,156,109, 95,105,228,228, 1, 80,149, 77, 89, 69, 76, +163,169,168,178, 73,178, 47, 85,149, 81,218,105, 32,102,106, 26, 34, 15,235,208,171, 2, 0,116,188, 79, 78, 16, 1, 28,145,115, + 82, 56,199,226, 99,169, 41, 14,138, 72, 21,165,138,177, 10,177,215, 93,157,158,156,232, 13,107, 3, 40, 28, 37,199, 68,142, 10, +165,203, 22,182,222,186,239,112,179,101, 28,146, 2,153,178,114, 76,117, 76,250,122,201,225,170, 42, 55,129, 44,101,240,201,166, + 60,209, 84,167, 76, 30, 69, 84, 84,141,197,113,145,150, 98,106, 9,247, 50, 51,171, 35, 87, 33,246,170,186, 14,209, 59, 7,102, +154, 50,242,198, 67, 21,142,206, 63,109, 99,101,230, 1, 64,179, 82, 71,149,104, 26, 85, 53,165,248, 57,148,170,169,153,136,178, +170,153,114, 78,221,213,204,188,119, 19, 0,136,224, 8, 35, 11,171,122, 73,223,195,105,206,237,147,142, 89,250, 14,211, 19,229, +176,142,129,179, 26,168,230,172, 55,185,239,217, 78,161,228, 60, 32,112,232, 9,135,180,140, 20, 4,204,172,149, 79, 94, 83, 35, +177,156, 90,168,153,181,101,181, 75,206,216, 12,140, 12,209, 33,162, 81, 27,179,204,204, 8,137,114,198,141,128, 33, 21, 36, 0, +102,170, 89, 69, 17, 1, 97,211,236,148, 7,128, 80, 15, 82,146, 96, 57,137,209,241,204, 97,252, 25,205,129, 32,215, 55, 41,128, +166,154, 31, 17, 0,193, 12,198,194,106, 10, 86,109, 13, 96, 72,152,138,122,105,222,168,134,205, 21, 44,229, 7, 30, 1, 62,125, +223,225,124,145,124, 57,107,226,190, 1,180, 31, 96,163,207,111,222,161, 6,106,106,106,172,166,170, 44,154, 74,173, 22, 43, 73, + 63,213, 0,140,196, 64,148, 24,137,189, 40,169,182,245,154, 25, 42, 56, 51, 52,165,114,242,123, 12,111, 76,181,217,247,206, 98, +118,239,222, 77,136,248, 61, 37,160,111,191,114, 61,243,137, 87,254,248,111,253, 77, 57, 57,115,194,243,123,191,250,169, 79,252, +241,245,139,223,188,255,219,187, 44, 46, 44, 44,236,219,183,239,148,126,103,219,206,203, 95,241,214,143,229,194,185,169,160,235, +254, 42, 0, 36, 32, 57,105,252,231,223,125,195, 23,222,115,195,169,110,217, 41, 75,232, 37,111,254,135,179,159,250, 67,105, 17, + 71, 30,248,218,251,127,243,149, 43,135, 30,124,248,219, 38,231, 54,158,251,244,107, 94,255, 55,119,125,240,205,175,221,127,251, +231,191, 91, 18,122,213,159,124,106,235,185, 79, 74,171,121,207, 47, 92,243, 24, 43,101, 95,118, 56,212,143,191,132, 46,126,238, +203,182,158,119,105,186,255, 39, 63,113, 81,239,248,161,199,248,139,143,113, 53,167, 86,219,251,206,196,117,215,191, 45,221, 95, + 62,176,231,177,175,230,187, 5, 54,188,252,134,127,110,239,255,217,171,159,250,221, 51,251,199,186,160, 47,253,221,255, 54,149, + 83,118, 42,142, 94,119,237,174,159,190,250,138,199,223, 15,221,251,249,127,249,189,231,111,222,176,253,188, 23,190,233,175,190, +229,155,119,110,223,250,202, 31,186,124,243,186,153, 4, 60, 0,226,214,249,117,111,254,251,143,159,178,149,173,159,157, 62,109, +126,118,243,220,204,100, 89, 42, 88, 29,120,165, 63, 92,233, 15,122, 85, 56,182,218,251,150,215,234, 20,254,181,215, 92,249,140, + 11,206,140, 41,113, 80, 85,131, 6,117,208, 61,135,143,191,229,159, 62,253, 45,173, 12, 95,116,245,179,127,229,199,158, 87,248, + 34,199,105,101,149,192,161,146,186, 27, 98, 20, 81, 54, 21,150, 90, 68, 69,235, 40, 95,219,127,232,253, 95,188,253,161, 99, 43, +129,185,189,208,204, 68,231,237,175,127, 41, 17,168,129,141,112,143,132,164,164,226, 21, 76,161, 91,213,191,254,174, 15,126, 11, +179,255,129, 75, 46,153,152, 94, 15, 38,205,151, 98, 36,135,228,144, 60, 21,169,155,202,236, 92,161, 42,162,157, 82,127,224,194, + 29, 79, 61,247,204, 42,132,238,176, 62,184,220,125,239,167,191,250, 91, 63,121,237,212, 68,153,155, 71,166,169,173, 9,104,150, +155,154,233, 31, 51,208,169,137,226,119, 95,245,130, 95,123,231,191, 60, 26, 84,119,245,149, 87,156,123,218,105, 13,122,130,185, + 13, 5,132,148, 58, 45,136, 25,181,200, 47, 34,128, 67,240, 68,133,119,179, 19,229,115, 47,191,116,221,100,105,166,109,136,182, +244,241,102, 0,152,193,233,166, 26, 81, 5, 71,248,244, 11, 22, 62,115,231,201, 35,221,142, 29, 59,168,105,135, 57,164, 12,217, +147, 47,200,151,206,119, 92, 49, 65,190, 67,174,112,132,142,136, 8,157, 35, 34, 2, 68, 34, 42,188, 47,189,159,232,148,117,168, + 13,169, 65, 56,160, 5,104, 1,108, 60,145,200,200,158,217,220,244,228,175,252,216, 15, 61,162,217, 99, 2, 36,136,210, 54, 33, +121,116, 5,249, 2,125,233,124,233, 92,137,174, 64,164,212,168, 24, 33, 43, 0, 4,224, 8, 61,185, 40,210, 31, 14, 21, 41,231, +136, 99,249, 12, 54,192, 85,179, 24, 51, 68, 51,219, 58, 63,243, 51,215, 94,249, 8, 11, 66, 74, 32, 16, 57,143,222,147, 47,136, + 60,185,194,249,146,138, 14, 21, 19,206,119,208, 21, 56,214, 0, 72,221, 29,242,197, 51,174,121, 85, 61,236, 39,248,113,185,219, +211,241,196,181, 45, 57, 64,215, 8, 73,115, 58,125,246,150, 13,151,159,191,112, 50, 63, 68, 68,206,153, 25, 0,165, 98,222, 16, + 77, 69, 17,201, 12,124, 9, 48,109,166, 18,235,196,187, 64, 0,239,168,152, 90,127,254,147,175,142,213, 32,198, 58,117,100, 89, +236,224, 82,119,235,220, 84,171, 49, 96, 99, 77,205,164, 93,169, 30,104, 82,244, 23, 95,113,201,190, 99, 43, 71,150,214, 96,160, + 68, 72, 64, 14,137,128, 40, 1, 72,136,132, 72,152,208, 28,231, 93, 49, 57, 49,187,105,106,253,118,231, 72,213, 84,229,204, 75, +158,123,222,165,207,150, 80,115, 28, 36, 48, 84, 52, 21,222,182,239,120, 63, 9,103, 28,196,107,251, 6,227,187,153,108,239,141, +215, 61,243, 97, 18,194, 12,106,153,154,162, 0, 1,104,163,153,136, 72, 62,117,128,202,169,245,235,182,158,235,202,137,178, 51, + 37, 28,193, 76,149,165,174,196,128, 69,213, 84, 20,204, 32,170, 62,112,108,184,176, 97,210, 18,134,210,148, 68, 89,159,218,142, +120,194,243, 12, 13,224,183,126,234,218, 55,189,247, 35, 99,177, 12,145,144,114,231, 11,176,209,190,116,143,200, 57,231, 75,223, +153, 42, 38,166,125,103, 10, 1,132, 3, 18, 1,162,169,114,221,151,124, 75, 21,173,130,218, 48,196, 67,221,168, 73,121,218,229, + 36,101,111,161, 60, 0, 74,149,163,129, 1,252,236,117, 87,173,177, 50, 32, 36,162,180,191,205, 14, 43, 34, 16,229, 75,152,169, +134, 74,234,126, 18, 90,146,188, 42,215,189,197, 40,194,170, 81, 68, 52, 87,217, 96,118,112,169, 63, 96, 83, 83,203,114,193, 49, +163,203, 14,173,145,155, 17,226, 95,221,248,197,147, 96,140, 0, 96,214,128, 50,208, 86,142,198, 28, 17,201,138,137,178,236,100, + 20, 21, 64, 77,149,195,202,202,145,132, 80,105, 66,211,149,162,152, 24, 2,216,109,251,150,175, 56,123,189,168, 2,102, 34, 74, +227,137,144, 82,215, 15,145, 21,254,224,159,111, 58, 33, 74,250,166,177,175,109, 11, 55,223, 81, 1, 21, 3, 3, 68, 95, 76,146, +115, 77, 86,175, 9, 60,230,122,208, 15, 49,178,176,138, 40, 88, 66, 79,196,216, 72, 21,136,240,166,251,142, 61,243,156, 13,166, +136,168,134,136,218,168, 53,146, 41,188,227, 51,183,220,179,119,255, 73,211, 15,131,164,148, 18,149, 89, 37,154,113,198,175, 76, + 16,144,124,137,228, 16, 16, 76, 85, 57, 75,136, 67, 28,174, 12, 3,143,109,150,170, 65, 96, 16, 64, 6, 50, 69, 3,188,127, 57, +158, 51,239, 0, 18, 48,109, 8, 72,104,127,251,133, 59, 62,119,231,125,143,232,169,155, 8, 31, 85,162,106, 48,141,202,209, 50, +222, 40, 0,136,148,160, 96, 81, 97, 80, 49, 97, 85, 17,174,185,234, 86,145,185, 97,115, 4,150, 16, 98, 29, 67,136, 28,163,164, + 50,127,207,161,229, 94, 68, 48, 32,196,210, 23, 31,248,210, 29,127,248,207,159,156,242,116,229,133,143, 88, 46,123, 83,149,220, +106, 97, 21, 54, 97, 19, 78, 72, 99, 14, 72,154, 86, 76, 35,165, 4,211, 80,113,172,204,176,197, 73, 34, 11,179,212,194, 10, 94, +128, 0,189,130, 67,162,155,238, 61,122,221, 69,155,191,112,215,222,207,220,113,247, 84,167,220,182,101, 99,233,104,194,251, 39, +158,181,237,142,189, 7, 78,182, 32, 83,229,180,148,152,249, 0, 73,159, 76, 1,208,136,204, 68,197, 1,112, 42,255, 28,152,154, +113, 24, 10, 7,174, 7,170, 26, 69, 2, 75,136, 28, 88, 34,179,130,176, 57,112, 6,104,138,206, 1,220,184,103,245,182,175,223, + 55,213, 41, 39,203, 98,227,244,100,100, 46,188,159,235,200,100,167, 28,214,225, 97, 91,166, 98, 18, 19,186,152, 87, 99, 10,169, + 51, 4,154, 41, 15, 26, 85, 66, 34,100, 40,179,198, 74,185, 86,229, 97, 93,179, 90,100,137,204,145, 51,101, 44,198, 24, 99, 21, +234, 42,196,200,204, 98, 86,247, 43, 34, 44, 28,205,205,206,152,105, 74, 47, 10,239, 46, 62, 99,227,201,116, 72,213, 82, 95, 32, +245, 95, 84, 18,149, 70, 65,179,178, 51,107, 12, 26,131,112, 48, 9,194,181,196, 90, 56,128, 89,191,170,165, 81,106, 22, 17, 77, + 4, 2,225, 24, 57, 12, 99,168, 66,168,133,163,170,158,125,222,206,194, 57, 66,100, 73,170,141,142,104,162,240, 91,230,103, 79, + 98,101, 54,130, 90,147,187, 87, 48,195,132, 84,137,161,169,153, 67,117,100, 14, 12,144,216, 36, 42,215,106, 22, 89, 45,217,104, +238,216,129,170,101, 70,156, 25,176,128,235,160, 47,129, 10, 68,114, 68,189, 94,183, 51,183,174, 44, 60, 17, 58, 34,239,220,142, + 13,179, 71,150,187, 15,183,178, 22,248, 53, 88, 3, 13, 42, 88, 82,243,104, 18,148,131,114,157,186,159, 82,247,135,117, 76,221, +186,212,163,107, 66, 66,246,178,162, 38, 34,137, 36, 35, 97,168, 18,230, 54,109, 1, 87,136,168,169,165, 48, 78, 68,133,119,219, + 54,111, 88, 43,161, 54, 0, 38,188,217, 52,161,120,208, 52, 42, 17,209, 20,129, 28,105,234,163,129,132, 97, 8,131, 94, 85,167, +110, 33, 33, 80,202,240,168,161, 98, 37,175,175,233,251, 9,196,138,156,175,196, 68, 76,204,196,204, 33, 18,145, 39,115, 68,167, +207,116, 14, 28, 61,193, 83,155,130,106, 94, 83,106,190,174, 85,112, 0, 68, 97, 35, 66,140, 0, 26,135,189, 65, 85, 39,242, 54, +165,116,147,212,147, 19,178, 68,153,105, 4,174,162, 32, 42, 44, 34,117,232, 14,170, 13,235,166,251, 85,237,157,195, 20, 67, 17, + 28, 81,225,221,220,244,228, 74,127,216,154,125, 75, 17,145,172, 76,202, 42,130, 32, 96, 10, 9,223, 78, 50, 19, 64, 64,145, 80, +135, 56, 8,145, 89, 8,144, 40, 37,228,104, 14,189,145,153, 51,176, 20, 77, 73,144, 80,205,140, 69,234, 16, 35, 75, 29, 34, 33, +214, 49, 2, 20,142, 16, 1, 9,129, 16,207,221, 60,119,115,187,160,180, 26, 72,134,102,106,202, 38, 12,166,162, 2, 38,173,134, +101, 92, 86,141, 85,170,192, 33, 70, 86, 37, 66, 79,200, 68,226,168,192, 20, 69, 19,240,171,142, 48,197, 19, 71,148,140, 43,136, + 12,234, 48,213,233,176,168,119, 77,206,133,136, 8,142,104,118,114,162, 59,172, 0,192, 39,216, 57, 69, 46, 75,228, 38,101,211, +228, 27, 57,119,169, 83, 7, 94, 83,170,170, 85,228,200, 10, 6,142,168,112,142,157,154, 81,170,131, 16, 1,209, 19,138,119,148, +128,246, 78,161,157,194, 19,161,119, 84,133, 64,132,185,127,169,185,127,157,170,173,133,141, 51,119,126,179,106,148, 90,197, 84, +115,191, 76,217,154,230,139, 26, 72,198,147, 33,121, 26, 53, 99, 22, 22, 73, 61,203,212, 98,138,146,251, 16,152, 43, 24,113, 68, + 25,116, 7, 19,209,210, 59, 68, 76,124, 45, 83,243,148,251, 9, 48,150, 77, 78,120, 63,138,101,102, 73, 42,108,146,156, 50, 91, +211, 52, 17, 85, 85,101,205, 29, 43,145,166,255, 96,134,136,222, 59, 53,237, 20, 14, 0, 68, 21, 37, 91, 63,137, 58,162,220, 44, +119, 38,106,136,232,136, 16,145, 89, 91, 75, 76,169,119, 83,154,194,214,185,105, 51,243, 96,106,204, 42,172, 26, 85,130, 9,139, +101,230, 98,234, 40,100,162, 84,179,154,140,192,167,207, 64,244,206,121,159,197, 3, 0,160,154,182, 64, 91,228,223, 76,205, 40, +123, 41,171,144,179, 55,176,177, 84, 18, 0, 17,183,206,205, 32,162, 55,147,220, 4,106,250, 47,214, 52,167,242,150, 37, 16, 35, +253,108,158, 73,101, 69,138, 0, 30, 81, 28, 41,128, 51, 3, 67, 32, 2, 52,210,156,195,171, 25,170,162,119, 25, 58, 80, 11, 34, +106,134,154,195, 66,211, 64, 7,143,208,176, 34,165, 86, 73, 93,169, 70,133,115, 28, 72,134, 7,163, 38, 85,219, 10, 89, 75,139, +162, 6, 26, 0, 4, 52, 32, 68, 69, 68, 64, 5, 37, 64,203,221,113,116,228,136,132, 84, 77, 49, 39,200, 57,187,197,182,120,243, + 42, 44, 92,171,130,168, 66,219,116,109, 86, 48,222,149,106, 87,211,196,152, 81,193,140,136, 52, 38,255, 92,187,166,229,217, 24, + 25, 4,129, 26,141, 86, 29, 75,230,155, 86, 16, 0,120, 53, 21,209,148,106, 36, 93, 94,211,155,210,100,129, 77, 88,201,255,170, +182,189,161,177, 50,217, 70,125,163,166, 68,109,111,237,238, 52, 59,100, 99,192,196, 8,140, 72,158, 58,227, 92,186,134, 99, 51, +218,187,230,195,199,214,212,180,195, 70,157,170, 52,224, 0,163,199,184,182,126,109,118,122,172,252,111,159, 88, 83, 42,249,189, + 75,125,213,166,228,105,107,159,209,253,230,251,105,187, 89, 39,166, 4,105, 79,147,207, 28,251,224,102,179, 12, 21,200,204, 68, + 81,140, 34, 57, 46, 84,157,182,226, 68, 51, 50,243,106,148, 68,184,123,247,238,165,165,165,229,229,229,239,181,182,208,127,236, +205,204,230,231,231,215,175, 95,239, 1, 96,101,101,101,255,254,253,255, 95, 40, 15, 39,121,102, 1,253, 7,222, 54,159,115,241, + 57,151, 63,103,211,217, 23,109, 62,251,162,233,249, 45,228, 61, 18,197, 97,127,245,232, 67,171, 71,190,121,240, 27, 95,221,119, +235,103,143, 60,240,181,239,203,254,230,183,243, 97,157,137,167,191,228, 13,231, 61,227,249,167,157,127, 25,156,136,215,142,232, +189, 19, 51,243,179,155,207, 56,227,162,167,239,252,193, 23,143, 19,126, 99, 61,124,232,206, 47,237,249,242, 39,110,251,200,187, +195,160,251,255,142,128, 92,209,121,230, 43,175,191,226,229,191,184,134,225,220,224,105,221,163, 15, 45, 62,116,255,254,219, 62, +255,224, 45,159, 89,252,230,125,195,213, 19, 39,104,167,215,111, 94,183,101,251,150,115,159,116,250,133, 79,217,116,214,206,203, + 94,240,154, 43,127,234, 87, 59, 51,115,117,111,229,163,255,235, 23, 30,248,242, 39, 98, 53,248,126, 21, 16, 34,189,238,221,183, +174,219,178,125,252,169,244,243,163,111,125,227,237, 31,121,247, 99,185, 72,127,233,104,127,233,232,193,187,111,185,237,195,239, + 60,225,226,128,184,113,225,130,167,253,248,235,247,221,254,249, 59,111,252,155,239, 39, 1, 33,210,143,254,198, 95, 92,184,251, +133,163,220,194, 12, 16,123,199, 14,190,239,151,175, 91, 62,184,247,241, 8, 52, 10, 6,199,246,222,245,145,183,252,252,247,153, + 6,109, 92,184,224,167,223,241,197, 53, 42, 99,102, 96,255,250,199,191,126,243, 7,254,252,251, 43,150,209,227,126,197,139,159, +243,210,215,188,253,115, 15,215,168,143,188,229, 13,223,119,210,121,252, 53,232,220, 31,120,222,117,191,246,182, 76, 66, 27,203, + 60,111,254,192,159,127,237,227,239,251,126,204,134, 30,103, 1,221,255,165,143,221,112,205, 70, 0,184, 96,215,143, 92,114,245, +203,119, 60,249, 89,197,196,148,114,252,220,187,126,231,241,250,136,169,178, 56,115,243,252,121,219, 78,187,100,199,233,103,110, + 92, 87, 16, 26,128,152, 17,226,151,239,221,247,206, 79,126, 89, 84, 31,199,111,132,187,119,239,222,187,119,239,169, 50,171,254, +253, 92, 0,161, 67,124,209, 85,151,255,224, 69, 59,166, 10,175, 6, 98,134, 6,106,154,244, 84, 97, 84, 20, 26, 34, 1, 28, 89, +233,254,222, 63,126,170, 87,213,223,225, 71, 47, 44, 44,156,117,214, 89, 30, 0, 88, 50,213,101,219,198,245, 79, 60,103,251,249, +103,156,126,241,142,237, 51, 19, 19,147,157,162,244,222, 19,122,135, 4, 6,198,166, 44,194, 44, 38,146, 96, 44,101,150,212, 78, + 96,209,154,165, 14,177, 14,188,216, 31,236, 57,188,120, 96,105,117,207,225,227, 71,151, 79, 61,163, 67,252,241, 43, 47,123,198, +133, 59,182,204,207, 56,196, 76,235, 76,189,105, 0, 4, 80, 4, 50, 74,252, 4,108, 82,205, 84,103, 26,192,198,117, 51,191,251, +234, 23,244,134,241,143, 62,252,217,253, 71,151,190, 83, 13,218,181,107,215,143, 62,237,201,215, 92,246,196,196,255,197,182,199, +158, 90,103, 25,114,205,210, 48, 17,213, 52, 59, 16, 77,162,168,180,240,154,181,128, 64,134, 5,214, 96, 22,105,228,177, 31,226, +193,197,213, 61,135, 23,247, 29, 93,254,230,226,242,161,165,110,140,121, 98,105,199,150,141,207,120,194, 89,207,121,210, 5,243, +211, 19,170,218,234, 5,180,221,236, 49,156,162,197, 22,154,143, 72, 84, 91,109,137, 29,205,239,225,241,110,255,237, 31,251,183, + 71, 25, 64,122, 76, 26,100, 64,128, 14, 9, 17, 8,199,150, 1, 72,185,223,137,100, 74, 68, 94, 73, 72, 11,115,156,132,229,140, + 85,216, 11, 55, 83, 75, 32, 13, 37,223, 64, 19, 23, 57, 67,101, 0,166, 58, 51,209,217, 52, 51,189,115,251,150, 24, 37,136, 4, +102, 17,241,229,228, 89, 91, 54, 12,171, 42,245,223, 18, 94,137,102, 8,160, 77, 51, 90,205,172, 69, 34, 51,143, 4, 27, 58, 66, +238,102,167, 55, 88, 75, 43, 1, 48,213,249,233,169,235, 95,252,236,126, 85,255,209,135, 63,119,112,113,245,219,117,210,152,211, + 82, 51, 4,180,134,198,162,134,169,135, 76,128,138,228,212,148,140, 76,156,169, 67,243,230, 68,133,209,177, 9, 35, 71,132,152, +230, 27, 52, 3,174,148,204, 82, 21, 82,215, 93,140,144,140, 8, 72,209, 17,121,113,101,225,153,121,122,102,182,174,135,206, 33, +128, 83, 97, 24, 27,184, 26,175,215,208,198, 49,186, 4,253,101, 76, 46,207,187,140,209, 38, 44,163,204,105,182, 28,167, 58,229, +175,189,232,217,221, 42,252,143,191,187,177,138,241,148, 5,148,250, 37,137, 57, 3, 35, 26, 14, 97,102, 33,153,129,166, 89, 48, + 48,167,100, 96, 98, 34,170, 2, 72, 38,164,128,148,117, 60,102,132,211,144,146, 2, 25, 98,219,167, 71, 75,110, 53, 97,212, 25, +144, 86,245,158, 66, 45,102,102, 16, 29, 57, 71,152,190,149,166,239,253, 8, 78, 42,129,114,121,206,183, 81, 58, 91,131,231,140, +128,197,196,246,154, 40,253,111,189,226,218,123, 14, 30,255,179,143,158, 2,245,213, 45, 44, 44, 92,120,230,246,243,207, 56,163, + 97, 49, 17, 18, 66,195,104, 34, 36, 64, 66,114,233, 85, 64,151, 27, 80,232, 48,145,103,218,174, 0, 52, 40, 99,174, 2, 96,140, +221,181,182,112,207, 80, 52,109, 60,253,220,167,236,250,177, 3,123,191, 30, 67,149, 0,249,200, 92,197,168,128,142, 40,185,147, + 60,193,103,102,227, 68,154,230, 24,131,180,125,136, 96,176,246,115, 90,196,179, 65, 29,161, 65,236,215,207, 76, 94,115,217, 5, +157,194,223, 51,222,148, 59,217,109,110,110,110,126,126, 62,107, 16,145,211,150,180, 2,105,183, 19,169,194,154,147, 26, 72, 51, + 59,203,208,212, 72, 77, 9,145,210, 12,156,178, 3,116,136, 21,128, 26,179, 54,251,102, 99, 91,158,142,144, 50, 48, 95, 76,238, +184,120,247,204,186, 13, 38, 28,170, 94, 93, 13, 56,117,101, 18, 33,192, 32,112,221,171,170, 78, 81, 78, 79,120,203,232,117,114, + 78,163,248, 49, 38,163,113, 45,179, 53,181, 90,251,100,246, 81,137,155,133, 98,118,213, 69,103, 95,117,209, 57,111,253,224, 77, + 7,151, 86, 31,155,137, 57, 79,173,111, 78,251, 98,128,100,102, 70,105,255, 32,207,137, 36,150,211,168, 74, 65,116,232,201,151, +164,108, 60, 41,113, 50,214, 61,171, 7,121,120,162, 25, 62, 73,156,147,249, 51,118,110,217,190,211, 57,167,194, 26,131,114,168, +170,158, 48,183,253, 11, 51, 83, 5, 53, 80,176, 42,214,203,253,106,118,106,114,166,147, 34,122, 98, 31,141,161,220, 99,232,252, + 90,233, 24,160,161, 1,142,203,104, 45, 99, 48, 77,123,188,225, 5,187, 30, 90, 92,125,199,141, 95,170, 30,121,252,215,167,108, +140,200, 37, 83, 69, 92, 35,166, 28, 22, 70,198, 49,182, 20, 68, 34,103, 70, 64, 0, 96, 14, 74, 40, 17, 0, 38, 17,205, 84,170, +222,234,202,209, 1,139,243,157,217,249,173,219, 22,118, 18,130,138, 32,130, 8,155, 70,225, 32,161, 26,244,151,217, 52,147,158, + 52,181,122,211,234,193,204, 88,236,232, 74,255, 40,225,105,115, 83, 29, 7,205,145, 1,102, 48,110,205, 54,210, 22, 27, 39, 39, + 90,107,206,208,244, 4,114,155, 73, 21,146, 59, 52, 60,109,126,246, 55, 95,118,245, 71,111,189,247,211,119,220,251, 40, 26,132, + 72,148,114,210, 68,132, 3, 52, 2, 80,211,236, 13,113,172,189,144, 59, 17,136,237, 4,102, 50, 31, 36, 36, 71,228,201,121,116, +133,243,197,134, 29,205, 84,165, 25,170,164, 38, 94,234,187,171,168,114,228, 48, 28,246,150, 19, 85,173, 73, 8,146,140, 72, 21, + 20, 82, 55,222,152,237,129, 35,171,147,157,114,251, 92,167,253,218, 10, 41,226, 54,255, 1,142,187,232,204,152,109,115,130,102, +219,199,202, 67,204,130, 66,100,181,171, 47, 61,255, 25, 23,238,248,211,143,126, 97,169, 55, 56, 73, 53,223, 68,121,164,212,223, + 66,164,113,215,155, 59, 43,169, 91,159,141, 46, 45,129,146, 35,119,158,168,200,196, 80,114,128, 8, 38, 18,134,177,234,113, 24, +130, 25, 16, 37, 37, 77,202, 6,102,160, 34, 18,227,112,165,223, 93, 76,228, 39, 78,115,149,137,215, 39,194,150,199,194,219,198, +205,202,160,190,253,161,213,227, 67,205, 99, 79,233,167,142,251, 34, 24, 7, 42,161, 29, 49,182,134, 1,136,136, 13,239,181,121, + 29, 40, 9,218,108,118,178,124,227, 11,127,112, 97,203,198,147, 22,171,141,196,155,119,231, 92, 53,141, 57, 54,116, 11, 77,227, + 94,102, 45,219, 55, 79,101, 41, 42, 42, 24, 34,131, 34, 0, 56,116,206, 21, 29, 34,151,230,154, 51, 67, 19, 16, 65,193,204, 76, + 69,162,212,253,254,234,209, 94, 85,165,147, 55,154,158, 87, 30, 19, 83, 0, 85, 84, 48,209,108,113, 41,177,217,115,100,245, 96, +233, 47,216, 50, 77,208, 26, 21, 26,166,145,181,108, 86, 77, 75, 46, 39, 9, 72,136,154,245,142, 16, 45, 53,163, 85, 83,247,190, + 91,241,221, 7,142,125,242,246,123, 22, 31,129, 59,239, 91,165, 52,205,221,199,164,218,137, 70, 5,150, 88,188,105,216, 54,251, +103, 85,197, 38, 85,205, 65, 53, 73,129, 13,121, 25, 42, 0, 0, 9,250, 73, 68, 65, 84,156,115, 5,122,231, 92, 65, 13, 39,188, +229, 74, 54,102,170, 42, 34,177,170,122,199, 86,122,171,131, 42, 68, 22, 81, 1, 64,205, 13, 67,208, 20,177, 0, 89, 77, 13, 20, + 64,148, 52, 55,208,173, 55,140,159,191,247,216, 5,219,231, 79,155,164,180, 86, 52,107, 12,206,192,176, 73,185, 70,217, 55, 34, +165, 4, 76, 84, 19,123,238,174, 67, 43,127,255,217,175, 12,134,213, 99,132, 59, 44, 87,122, 57,146, 72, 67,241,200, 36,157,164, + 68,102,146,100,212,254,219,120,111, 34,114, 72, 72,228,208,249,196, 60,111, 82, 95,179,148, 79, 26, 98, 26,133, 20,214, 88,199, + 97,183,238, 47, 85,172,193, 44, 50,171,129,154,180,228,130,156, 2, 27,138,154, 24, 40, 96, 34,108, 72, 18, 5,152,247,238,238, +135,150,191, 57, 81, 62,105,219,180, 3, 83, 4, 64, 69, 64,107,147, 81,200, 26,155,118,220, 17,162,115,247, 31,237,126,238,235, +247,223,118,255,131, 33,196, 83,203,164, 51,195,168,165, 5,106,203,132,107, 73, 57,210, 88,156, 90, 34, 47, 52, 89, 14,145,107, +184,190, 4, 68,141,162,136,170, 33, 16, 96,170, 57,210,166, 38,249, 4,142, 3,174, 86, 67,168, 6, 85, 93, 87,117,100, 25, 17, +201, 70, 85,110,162, 41, 36, 13, 66, 0, 84, 32, 5, 84, 3, 53, 74, 42,187, 58, 8, 55,222,213,127,242,217,155, 79,155, 76,231, + 74,180,229, 89, 34,218, 0, 1, 30, 88,236,222,182,247,224, 93,123,247,207, 76,118,230,166, 38,143, 30, 95, 57, 37,233,180,148, + 96, 85,201,199, 39, 89,162,247, 38, 97, 73,162,118, 73, 83, 34,103, 15,210,232, 14,102,151,156, 15, 80, 0, 80, 53, 96, 48, 2, +115, 64, 6,102,144, 37,166, 57,226,168,104,172, 36, 12,185,238,215,129,217,176, 30, 12,180,225,123, 55,103,117,140,168, 1, 44, +218, 8,136, 12,201, 12, 20,156,161, 26, 98, 10, 64,165,247,183,236, 57,186,101,126,250,210,211,167, 93, 62,255,206,234, 40,255, +246,141, 7,191,114,247, 3,133, 71,135,174,240,238,220,109, 91, 61, 90,100,217,177, 97,110,203,186,233,175, 62,112,224,177,131, +106,233,196, 67, 77,100,156,196,158, 55, 17, 77, 39,150, 52,100, 60,104,136,131, 54, 98,173, 24, 2, 66,242,218, 42,185, 82, 76, + 98, 36,135, 96,152, 40, 59,166,249, 16,177,196, 4,231,192,177,146, 48, 20,174, 69,196, 36, 86,117,101,136,121,131,204, 88, 68, + 50,147, 67, 69, 45,209,164, 44,219, 14, 41,144, 1, 3, 58, 32, 2, 32, 5, 52, 67, 71,116,120,177,247,217,136, 37,198,155,111, +185,121, 24, 56, 17, 33, 39, 75,239, 28, 77,117, 58,219, 54,204,101,233, 59, 43, 0, 0,225,105,231,110,219,191,216,123,232,248, +242, 99, 21,144, 38,215, 48, 34,223,106, 67,193, 29, 63,198,201,214,144, 26,243,145, 38,154, 11,103, 1,112,105,248,217,208, 36, + 85, 33,128, 76,228, 16, 29,146, 2,130,137, 8,215, 18, 42,137, 3, 97, 86,128, 80, 13, 89, 36,209,142, 88,148, 53,211,247,155, +105,121,225,134, 48,162, 96,106, 96, 64, 0,100,232,128, 28,146, 51,160, 36, 59, 36, 26,116,123,125,128,233,249,141,225,216, 17, +231,200, 19,121,231, 38, 59,229,150,245,235, 48,243,223,208, 57,215, 6,223, 51, 55,204,148,222,237, 57,124,252, 49,106,144, 24, +199,116, 56, 71,227,146,181, 61,149, 37, 7, 53, 51,108,224, 77,104,217, 43,170,102, 14, 49, 89,189, 2,146, 33,167, 34, 54,141, +125, 0, 41, 58, 1, 37, 0, 51, 97,229, 96, 92, 43, 71, 51, 65,128,126, 85,139, 36,246, 95,202,128, 68,212, 88, 84, 84, 36,241, +218, 26, 91,107,232,128, 96,128, 6, 14,156, 3,244,128,173,129, 39, 73,193,214,205,219, 66,168,226,176, 95,120, 87,120,183,113, +211, 38,169,251,232,124, 58,211, 36,177,190,156, 97,225, 29, 0,108,157,157,152,155,220,118,235,201, 88,219, 15,247, 65,166, 38, + 38,210, 56,154,230, 79, 59,122,145,206,189,105,196,211, 22,207,150, 17, 79, 74,120, 67,170, 89, 76, 18, 81, 10,145, 28,152, 67, +165,156,251, 10,155, 4,225, 96,202, 0, 16,152,135,117,204,234,218, 80,216,164,185,151,168, 91,105,218, 97,228,191, 51,118, 24, + 65, 8,192, 3, 57,200,169,150, 3,114,136, 24, 85, 79,219,178,125,121,245, 24,247, 86, 54,110, 57,125,233,216,225,233,201, 9, + 68, 77, 67, 34,105, 28,194,136,200,212, 59, 50,243, 8,188,243,140,205,247, 30, 58,206,162,143, 30,197, 52,113,127, 27, 78,176, +230,180,176, 65, 23,115, 19,211, 12, 50, 38, 59,198,218, 74,241,212,192,144, 0,208, 52, 3, 61, 73,143, 44, 77, 21, 37, 51,150, +168, 82, 75, 28, 10,135,200,178, 58,168,173, 45, 34, 83,250, 99,227, 51, 85,163, 18,211,198,143, 60,104,230, 75, 0, 35, 2, 2, + 58, 67,135,228,147,209, 33, 18, 32,205, 78,207, 85,160, 51,243, 27,142, 31,250,102,148,130, 8,139,140,203, 16,161, 1,170, 17, +129,153, 57, 2,112,115,147,229, 69,219,183,222,254,224,161, 71,130,158,124,147, 6,229, 8,213,136,105,156,205,165,205,185, 7, + 45,151, 79,219,227, 68,108,140, 26,152, 16,190,156,201, 43, 33, 17,170,203,185,154,138, 73,148, 88, 73, 28,132, 24,122, 85, 21, + 98,108, 82,248, 84,222, 0, 97,147,210, 17,153,170, 34, 18,162,162, 1,158, 64,171,107, 79, 88, 0,128,102,178, 22, 9,208,147, + 43, 18,204, 55, 61,183,113,229,248, 81, 55, 49, 35,194,234, 76, 84, 17, 40, 79, 84,228, 3,128,200, 37,233, 59,152, 4,120,202, + 57,219,110,221,123, 80, 79, 22,218,154, 68, 49,107,208,184, 18, 89,126,152, 38,147,198, 51, 73, 48, 28, 79, 20,243, 37, 48, 3, + 55,205, 84, 85, 26,103,130,102, 78, 72,185,146, 88, 71,230,126, 21, 6,117,140,162, 9,112, 83,179, 36, 84, 2, 50, 26,241,131, + 1,128,193, 28, 16, 24, 0,129,169, 38, 9,230, 34,209,198,105,119, 96, 38, 6, 17,113,152,182,251,232,177, 35,155, 55,111,150, + 80, 5, 77,196, 90,200,211, 88,121, 47,140, 8,205, 80, 9, 29,144, 1,128,241,133,167,111,188,247,208, 98,219,224, 57, 49, 81, + 28,139,229,121, 68, 55, 69,255,166,162,110,146,184, 38,216,103,199,212,160, 87, 0,227,219,220,144, 34,145, 26,233,139, 74, 72, +164,230, 58,114, 21, 67, 29, 89,213, 18, 12,128,169, 68, 66, 52, 50, 80, 66, 74,254, 76, 27,221, 82, 68, 32, 69, 18, 20, 84,194, + 53,124,202, 84,126, 36,158,119,242, 98,145, 69,205,134, 33, 30, 58,116,104,221,212,164,153,245,171,160,102,165, 55,239,156,195, + 92,176,166,225, 65, 2, 72,135,162, 24,209, 76,233,119,110,223,218,158,147, 53, 46,160, 84,180,231,124, 45,149, 93,173,171,206, +163, 9,144,234, 15,107,207,111, 28,227,144,142, 33,160,163,147,124,198, 24, 24, 54,162,161, 7,230,116,216,165,136, 24,130, 67, +114,142, 90,192, 2, 0, 0, 20, 45,183, 52,144, 80, 20,137, 72, 68,149, 76,156,170,168, 36,166,185, 53,171,108, 56,167,196,192, + 72, 44, 12,205, 40, 69, 37,140, 84,151,206, 1,104,136,156,170, 14, 77, 39,208,143, 99, 30, 13, 39,223, 57, 42, 77, 46, 94, 56, +253,206,125, 7, 79,166, 65, 77, 93,106, 77,152, 79,248,103,190,211,168,146,154,102,216, 51, 21, 28,201,224,208, 18,132,148, 48, +188,228,177,160, 97, 66,167,141, 77,228,120,102,137,170, 41, 63, 78, 58,239,243, 81,228,104,156, 12,148,204,192,153, 41, 33,169, + 17,162,145, 9,145,168,122,163,228, 77,204,155,142, 60,100,115,186, 79,161,162, 22,197, 23,158,163,168,119, 46, 48,171,170, 32, + 34, 82,158,182,161, 28,139,243, 39, 54, 24,121, 59, 0,227,156,235,128,156,185,113,110,255,241,149, 19, 75, 13, 27, 37, 62,109, + 14, 45,109,116,107, 13,208, 90, 51,108, 66,141, 90,142,112,144, 78,223,109, 77, 49,115,139, 19,253, 92, 84,141, 91,210,117,234, +145, 18,122, 34,240,142, 4,193, 12, 60,145,128, 52,232,143,170, 17,170,115,168,106, 78, 19,132,214,124,182,142,183,238, 26,152, +205, 76, 85,163,104,233, 89, 84, 67,225, 3,115,130,186,211, 7, 33,141,186,106,154,167,190,112, 52,205, 10,214, 76,163,227,166, +217,201,238,176, 94, 30, 84,107,163, 88,158,168,201,185, 98, 83,181, 54, 82,131, 60,102, 15, 35, 74, 63,140,245, 57,155, 26,100, +204, 53,140, 50,151, 92,242,154,182,140,107,128,212, 21, 41,188,145, 2, 35, 26, 0,170, 48, 18, 53, 24,152,161, 42,161, 26, 88, +115,226,143,182, 0,194, 88,235,180,193,105, 33,145,224, 75,213,210, 59, 81,141,133, 79,230,156,182, 42,159,201, 75,148, 49,175, +230, 52,163,182,161,144,207,156, 71, 64, 64, 2, 59,123,203,252,109,251, 14,167, 15,105, 76, 76, 88,243,160,141, 53, 71,227,229, +220, 13,155,243,150,180, 37,101, 91, 83,218,235, 26, 6,119, 58,172, 48, 87, 6, 13, 27, 92,109,228,213, 91,217, 33, 66,242, 62, +216,160,127, 44, 72,168,162, 40,152,210, 45,164, 36, 83,112,154,134,237, 40, 95,191, 61,176, 54,153,180, 54,243,249, 73,144,133, +247, 34, 18,189, 20,236, 75,201, 13,129, 81,240, 64,104,164,131, 6, 99,125,109,204, 39, 66,166, 31,168,186,243,244, 77,203, 99, + 2, 18,205, 7, 43,107, 51,251, 35,201, 91,235,216,169, 95, 89, 34, 13,249,109,172, 81, 99,163, 84, 50, 13,230, 52,161, 78,155, + 81, 20,107,244,171, 77, 13,146, 62, 3,129, 3, 50,151,159,194,180, 58, 5,164,140, 92, 38,228,139,242, 32,164, 81,158, 27, 24, +249,245,214,210,129, 80, 13,156,169,164,193,109, 18, 47, 20,137, 88,114,137, 96,163,110,226,201, 40,243,216, 52,100, 1, 0,177, +112,184,113,106, 18, 0, 60, 32,152,138,198,160,105, 20,202, 56,127,253,102,231, 97,173, 77,173,169,140, 50,204,216,160,214,107, + 95, 26,191, 51, 82, 31, 88,123, 38, 37, 0,165,233,116, 66, 3, 2, 3, 75,224, 15,128,166,198,128, 26, 53,237,112,108,206,143, +132,241,108,219,154,254,162, 25,154,161, 81, 35,129, 38,190,166,179,224, 19,234,150,253,243,216,137, 8, 99, 19, 19,205, 52,125, + 62,126,124,162, 44,218, 98,149,149,171, 20, 67, 27,209, 96,235,100, 70, 90,211, 58,197, 70,197,181, 61, 20,163, 33,168,228,131, + 68,154,103, 32, 25, 5,172, 57,138, 12,218,110,231,120,135, 1,113,237,144,189,225,216,241,158,227,147, 39,150, 24, 4,205, 95, +179,212, 96, 25, 17,174, 41, 89, 40, 18,146,145, 26, 17, 17, 89, 54,206,172,206,216, 72, 24,173, 77,114,219,163, 7,210,248, 84, + 59,239, 3, 0,170,194, 28,218,184,160,185,152, 0, 61,241,140, 53,104,121, 58, 99,150, 53, 46,181,241,129,160,209,209,170,109, +203,118,236, 37, 91,155, 47,229,110, 46,226,168,131,213, 72,176, 61,246, 52,255,155,239,102,172, 30,198,155, 95, 99, 77,194,156, +210, 35,174, 61,190, 35,229, 64,169,143,155,168, 13, 0, 15, 91, 8,140, 55,250,147, 6,153,140,177,148,198,190,146,173, 61,138, +110,220,196,224, 97,207, 52,190, 96,252, 72,187,118,122, 10,214,156,118, 55, 86,142, 54,165,234, 88,227,207,210, 49, 6, 9,224, +109, 43,154,246,136,137,166,208,200, 77,206,209,100, 85, 83, 88,143, 55,164,109,212, 53, 28, 85,197, 77,163, 81, 1, 79,156, 55, + 67, 56, 65,220,190,217,173,124, 54,242,200,124,160,189, 51,230,107, 96,141,116,116,228,160, 96,220,107,218,248,255, 37, 97,172, +153,126,226,106,218,239,156,150,142,185,163, 10,173,220,199, 88, 83, 10, 13,106,169, 13,255,101,236,115, 70, 9,189,141, 57,189, +145,224,146,114,106, 91, 21,217, 88,131,118,188, 47,157, 93,244,216,255,223, 3,119,239,222,253,240,177,189,127,191,137,154,239, +210,123, 79,241, 55,240, 17,185,234,246,127, 1,113,167, 34, 48, 36, 75,123,196, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c index 4e6732ee885..b0dd3aac61d 100644 --- a/source/blender/editors/interface/interface_icons.c +++ b/source/blender/editors/interface/interface_icons.c @@ -975,20 +975,11 @@ int ui_id_icon_get(bContext *C, ID *id, int preview) case ID_IM: /* fall through */ case ID_WO: /* fall through */ case ID_LA: /* fall through */ + case ID_BR: /* fall through */ iconid= BKE_icon_getid(id); /* checks if not exists, or changed */ ui_id_icon_render(C, id, preview); break; - case ID_BR: - { /* use the image in the brush as the icon */ - /* XXX redundancy here can be reduced be rewriting this switch as an if */ - ID* ima_id = (ID*)get_brush_icon((Brush*)id); - id = ima_id ? ima_id : id; - iconid= BKE_icon_getid(id); - /* checks if not exists, or changed */ - ui_id_icon_render(C, id, preview); - } - break; default: break; } diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index ae2462b95f8..8f0c10c0b30 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -69,6 +69,7 @@ #include "BKE_world.h" #include "BKE_texture.h" #include "BKE_utildefines.h" +#include "BKE_brush.h" #include "IMB_imbuf.h" #include "IMB_imbuf_types.h" @@ -1069,6 +1070,19 @@ static void icon_preview_startjob(void *customdata, short *stop, short *do_updat *do_update= 1; } + else if(idtype == ID_BR) { + Brush *br= (Brush*)id; + + br->icon_imbuf= get_brush_icon(br); + + if(!(br->icon_imbuf) || !(br->icon_imbuf->rect)) + return; + + memset(sp->pr_rect, 0x888888, sp->sizex*sp->sizey*sizeof(unsigned int)); + icon_copy_rect(br->icon_imbuf, sp->sizex, sp->sizey, sp->pr_rect); + + *do_update= 1; + } else { /* re-use shader job */ shader_preview_startjob(customdata, stop, do_update); diff --git a/source/blender/makesdna/DNA_brush_types.h b/source/blender/makesdna/DNA_brush_types.h index 5fdc3e6dc5c..01f9ddbe5f1 100644 --- a/source/blender/makesdna/DNA_brush_types.h +++ b/source/blender/makesdna/DNA_brush_types.h @@ -53,8 +53,12 @@ typedef struct Brush { struct BrushClone clone; struct CurveMapping *curve; /* falloff curve */ struct MTex mtex; - struct Image *image_icon; - char image_icon_path[240]; + + struct ImBuf *icon_imbuf; + char icon; + char pad2[7]; + PreviewImage *preview; + char icon_filepath[240]; float normal_weight; @@ -143,6 +147,26 @@ typedef struct Brush { #define SCULPT_TOOL_BLOB 17 #define SCULPT_TOOL_CLAY_TUBES 18 +/* Internal Icons */ +#define BRUSH_ICON_FILE 0 +#define BRUSH_ICON_BLOB 1 +#define BRUSH_ICON_CLAY 2 +#define BRUSH_ICON_CREASE 3 +#define BRUSH_ICON_DRAW 4 +#define BRUSH_ICON_FILL 5 +#define BRUSH_ICON_FLATTEN 6 +#define BRUSH_ICON_GRAB 7 +#define BRUSH_ICON_INFLATE 8 +#define BRUSH_ICON_LAYER 9 +#define BRUSH_ICON_NUDGE 10 +#define BRUSH_ICON_PINCH 11 +#define BRUSH_ICON_SCRAPE 12 +#define BRUSH_ICON_SMOOTH 13 +#define BRUSH_ICON_SNAKE_HOOK 14 +#define BRUSH_ICON_THUMB 15 +#define BRUSH_ICON_TWIST 16 +#define BRUSH_ICON_COUNT 17 + /* ImagePaintSettings.tool */ #define PAINT_TOOL_DRAW 0 #define PAINT_TOOL_SOFTEN 1 diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c index 22f61c3efcd..b73b5f22141 100644 --- a/source/blender/makesrna/intern/rna_brush.c +++ b/source/blender/makesrna/intern/rna_brush.c @@ -43,6 +43,8 @@ #include "MEM_guardedalloc.h" #include "BKE_texture.h" +#include "BKE_brush.h" +#include "BKE_icons.h" #include "WM_api.h" @@ -104,32 +106,15 @@ static int rna_Brush_is_imapaint_brush(Brush *me, bContext *C) return 0; } -static void rna_Brush_image_icon_update(Main *bmain, Scene *scene, PointerRNA *ptr) +static void rna_Brush_icon_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Brush *br= (Brush*)ptr->data; - if (br->image_icon) { - // store path to external image so it can be reloaded later - BLI_strncpy(br->image_icon_path, br->image_icon->name, sizeof(br->image_icon_path)); + if (br->icon==BRUSH_ICON_FILE && br->icon_imbuf) + IMB_freeImBuf(br->icon_imbuf); - // setting or loading image_icon bumps its user count - // we do not want writefile to save the image if a brush is the only user, - // so decrement the user count by one - id_us_min((ID*)(br->image_icon)); - } - else { - memset(br->image_icon_path, 0, sizeof(br->image_icon_path)); - } - - WM_main_add_notifier(NC_BRUSH|NA_EDITED, br); -} - -static void rna_Brush_image_icon_path_update(Main *bmain, Scene *scene, PointerRNA *ptr) -{ - Brush *br= (Brush*)ptr->data; - - if (br->image_icon) - br->image_icon = NULL; + br->icon_imbuf= NULL; + br->icon_imbuf= get_brush_icon(br); WM_main_add_notifier(NC_BRUSH|NA_EDITED, br); } @@ -274,6 +259,26 @@ static void rna_def_brush(BlenderRNA *brna) {SCULPT_DISP_DIR_Z, "Z", 0, "Z Plane", ""}, {0, NULL, 0, NULL, NULL}}; + static EnumPropertyItem brush_icon_items[] = { + //{BRUSH_ICON_FILE, "FILE", 0, "File", ""}, + {BRUSH_ICON_BLOB, "BLOB", 0, "Blob", ""}, + {BRUSH_ICON_CREASE, "CREASE", 0, "Crease", ""}, + {BRUSH_ICON_CLAY, "CLAY", 0, "Clay", ""}, + {BRUSH_ICON_DRAW, "DRAW", 0, "Draw", ""}, + {BRUSH_ICON_FILL, "FILL", 0, "Fill", ""}, + {BRUSH_ICON_FLATTEN, "FLATTEN", 0, "Flatten", ""}, + {BRUSH_ICON_GRAB, "GRAB", 0, "Grab", ""}, + {BRUSH_ICON_INFLATE, "INFLATE", 0, "Inflate", ""}, + {BRUSH_ICON_LAYER, "LAYER", 0, "Layer", ""}, + {BRUSH_ICON_NUDGE, "NUDGE", 0, "Nudge", ""}, + {BRUSH_ICON_PINCH, "PINCH", 0, "Pinch", ""}, + {BRUSH_ICON_TWIST, "TWIST", 0, "Twist", ""}, + {BRUSH_ICON_SCRAPE, "SCRAPE", 0, "Scrape", ""}, + {BRUSH_ICON_SMOOTH, "SMOOTH", 0, "Smooth", ""}, + {BRUSH_ICON_SNAKE_HOOK, "SNAKE_HOOK", 0, "Snake Hook", ""}, + {BRUSH_ICON_THUMB, "THUMB", 0, "Thumb", ""}, + {0, NULL, 0, NULL, NULL}}; + FunctionRNA *func; PropertyRNA *parm; @@ -336,7 +341,12 @@ static void rna_def_brush(BlenderRNA *brna) RNA_def_property_enum_items(prop, prop_flip_direction_items); RNA_def_property_ui_text(prop, "Direction", ""); RNA_def_property_update(prop, 0, "rna_Brush_update"); - + + prop= RNA_def_property(srna, "icon", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_items(prop, brush_icon_items); + RNA_def_property_ui_text(prop, "Brush Icon", ""); + RNA_def_property_update(prop, 0, "rna_Brush_icon_update"); + prop= RNA_def_property(srna, "stroke_method", PROP_ENUM, PROP_NONE); RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); RNA_def_property_enum_items(prop, brush_stroke_method_items); @@ -667,17 +677,10 @@ static void rna_def_brush(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Subract Color", "Color of cursor when subtracting"); RNA_def_property_update(prop, 0, "rna_Brush_update"); - prop= RNA_def_property(srna, "image_icon", PROP_POINTER, PROP_NONE); - RNA_def_property_pointer_sdna(prop, NULL, "image_icon"); - RNA_def_property_struct_type(prop, "Image"); - RNA_def_property_flag(prop, PROP_EDITABLE); - RNA_def_property_ui_text(prop, "Image Icon", ""); - RNA_def_property_update(prop, 0, "rna_Brush_image_icon_update"); - - prop= RNA_def_property(srna, "image_icon_path", PROP_STRING, PROP_FILEPATH); - RNA_def_property_string_sdna(prop, NULL, "image_icon_path"); - RNA_def_property_ui_text(prop, "Image Icon Filepath", "File path for brush icon"); - RNA_def_property_update(prop, 0, "rna_Brush_image_icon_path_update"); + prop= RNA_def_property(srna, "icon_filepath", PROP_STRING, PROP_FILEPATH); + RNA_def_property_string_sdna(prop, NULL, "icon_filepath"); + RNA_def_property_ui_text(prop, "Brush Icon Filepath", "File path to brush icon"); + RNA_def_property_update(prop, 0, "rna_Brush_icon_update"); /* clone tool */ prop= RNA_def_property(srna, "clone_image", PROP_POINTER, PROP_NONE); From 8621c71c4c875a8e7e74fb2c3c66c0fd99c2c476 Mon Sep 17 00:00:00 2001 From: Joshua Leung <aligorith@gmail.com> Date: Tue, 20 Jul 2010 11:54:17 +0000 Subject: [PATCH 574/674] Bugfix #22917: Translating numerically doesn't allow animation I've made most operators which change the current frame are now undoable. This has the following benefits: - it brings these into line with simply changing the frame number directly - as in this bug report, using the operator tweaking/redo capabilities was causing problems, as the lack of an undo for the frame change mean that changing the operator properties (in this case to do numeric input for transforms, which is a bit of a creative if inefficient use of the available tools) would cause the current frame to reset to the previous frame, making it seem impossible to tweak the operator settings Notes: - screen.frame_offset() operator has been left alone, since I expect that undo pushes on this one would be truly annoying while on the others it's probably ok/wanted. This is because with this operator, animators usually end up stepping through their animations vs one-off jumps/scrubbing-sessions --- source/blender/editors/animation/anim_ops.c | 2 +- source/blender/editors/screen/screen_ops.c | 4 ++-- source/blender/editors/space_graph/graph_ops.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/animation/anim_ops.c b/source/blender/editors/animation/anim_ops.c index 11ba3cfffed..9570fd64433 100644 --- a/source/blender/editors/animation/anim_ops.c +++ b/source/blender/editors/animation/anim_ops.c @@ -163,7 +163,7 @@ void ANIM_OT_change_frame(wmOperatorType *ot) ot->poll= change_frame_poll; /* flags */ - ot->flag= OPTYPE_BLOCKING; + ot->flag= OPTYPE_BLOCKING|OPTYPE_UNDO; /* rna */ RNA_def_int(ot->srna, "frame", 0, MINAFRAME, MAXFRAME, "Frame", "", MINAFRAME, MAXFRAME); diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 9ccfec43341..dd910f8ba9a 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -1554,7 +1554,7 @@ static void SCREEN_OT_frame_jump(wmOperatorType *ot) ot->exec= frame_jump_exec; ot->poll= ED_operator_screenactive; - ot->flag= 0; + ot->flag= OPTYPE_UNDO; /* rna */ RNA_def_boolean(ot->srna, "end", 0, "Last Frame", "Jump to the last frame of the frame range."); @@ -1633,7 +1633,7 @@ static void SCREEN_OT_keyframe_jump(wmOperatorType *ot) ot->exec= keyframe_jump_exec; ot->poll= ED_operator_screenactive; - ot->flag= 0; + ot->flag= OPTYPE_UNDO; /* rna */ RNA_def_boolean(ot->srna, "next", 1, "Next Keyframe", ""); diff --git a/source/blender/editors/space_graph/graph_ops.c b/source/blender/editors/space_graph/graph_ops.c index 282e9d2658b..5648eff17f0 100644 --- a/source/blender/editors/space_graph/graph_ops.c +++ b/source/blender/editors/space_graph/graph_ops.c @@ -174,7 +174,7 @@ void GRAPH_OT_cursor_set(wmOperatorType *ot) ot->poll= ED_operator_ipo_active; /* flags */ - ot->flag= OPTYPE_BLOCKING; + ot->flag= OPTYPE_BLOCKING|OPTYPE_UNDO; /* rna */ RNA_def_int(ot->srna, "frame", 0, MINAFRAME, MAXFRAME, "Frame", "", MINAFRAME, MAXFRAME); From faeec3b147a4869007bd1dbe8ca95fc1d5b7ed59 Mon Sep 17 00:00:00 2001 From: Luca Bonavita <mindrones@gmail.com> Date: Tue, 20 Jul 2010 12:20:55 +0000 Subject: [PATCH 575/674] == 3D: background image == Doesn't visualize size and x, y position of the background Image in camera view (reviewed by brecht before committing) --- release/scripts/ui/space_view3d.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 3ad945cd19d..c5d74d397e8 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -2147,10 +2147,11 @@ class VIEW3D_PT_background_image(bpy.types.Panel): box.template_image(bg, "image", bg.image_user, compact=True) box.prop(bg, "transparency", slider=True) - box.prop(bg, "size") - row = box.row(align=True) - row.prop(bg, "offset_x", text="X") - row.prop(bg, "offset_y", text="Y") + if bg.view_axis != 'CAMERA': + box.prop(bg, "size") + row = box.row(align=True) + row.prop(bg, "offset_x", text="X") + row.prop(bg, "offset_y", text="Y") class VIEW3D_PT_transform_orientations(bpy.types.Panel): From f9e9e90a0293e4251528ceaaf7e7b000d7c05874 Mon Sep 17 00:00:00 2001 From: Peter Schlaile <peter@schlaile.de> Date: Tue, 20 Jul 2010 12:22:45 +0000 Subject: [PATCH 576/674] == Sequencer == Cutting effect strips (esp multicam) didn't free endstill tstripdata. Doesn't sound like much of a problem, but those can get big on large timelines. So every cut eating 3 MB of memory doesn't leave much room for editing decisions :) --- source/blender/blenkernel/intern/sequencer.c | 4 ++-- source/blender/editors/space_sequencer/sequencer_edit.c | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index f631e42e05a..94aa2c62f1a 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -1142,7 +1142,7 @@ static TStripElem *give_tstripelem(Sequence *seq, int cfra) Strip * s = seq->strip; if (cfra < seq->start) { se = s->tstripdata_startstill; - if (seq->startstill > s->startstill) { + if (seq->startstill != s->startstill) { free_tstripdata(s->startstill, s->tstripdata_startstill); se = 0; @@ -1159,7 +1159,7 @@ static TStripElem *give_tstripelem(Sequence *seq, int cfra) } else if (cfra > seq->start + seq->len-1) { se = s->tstripdata_endstill; - if (seq->endstill > s->endstill) { + if (seq->endstill != s->endstill) { free_tstripdata(s->endstill, s->tstripdata_endstill); se = 0; diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 1b9b793ebdd..5d258ea0054 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -789,6 +789,7 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence * seq, int cutframe) reload_sequence_new_file(scene, seq, FALSE); calc_sequence(scene, seq); + new_tstripdata(seq); if (!skip_dup) { /* Duplicate AFTER the first change */ @@ -828,6 +829,7 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence * seq, int cutframe) reload_sequence_new_file(scene, seqn, FALSE); calc_sequence(scene, seqn); + new_tstripdata(seqn); } return seqn; } @@ -878,6 +880,7 @@ static Sequence *cut_seq_soft(Scene *scene, Sequence * seq, int cutframe) } calc_sequence(scene, seq); + new_tstripdata(seq); if (!skip_dup) { /* Duplicate AFTER the first change */ @@ -913,6 +916,7 @@ static Sequence *cut_seq_soft(Scene *scene, Sequence * seq, int cutframe) } calc_sequence(scene, seqn); + new_tstripdata(seqn); } return seqn; } From beb98c9e0c17234572d152937cd7ca72f9240b59 Mon Sep 17 00:00:00 2001 From: Joshua Leung <aligorith@gmail.com> Date: Tue, 20 Jul 2010 12:37:42 +0000 Subject: [PATCH 577/674] Bugfix #22872: invert zoom direction doesn't work The setting for this (IMO it should really be on by default, for reasons I've outlined recently) was not exposed at all. The setting that was shown was a new(?) option in 2.5 which dealt with Ctrl-MMB drag zoom. --- release/scripts/ui/space_userpref.py | 7 ++--- source/blender/makesrna/intern/rna_userdef.c | 28 ++++++++++---------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index ac1b11282f3..2429f6e472c 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -352,7 +352,7 @@ class USERPREF_PT_edit(bpy.types.Panel): col.prop(edit, "duplicate_lamp", text="Lamp") col.prop(edit, "duplicate_material", text="Material") col.prop(edit, "duplicate_texture", text="Texture") - col.prop(edit, "duplicate_fcurve", text="F-Curve") + #col.prop(edit, "duplicate_fcurve", text="F-Curve") col.prop(edit, "duplicate_action", text="Action") col.prop(edit, "duplicate_particle", text="Particle") @@ -778,8 +778,9 @@ class USERPREF_PT_input(InputKeyMapPanel): #col.separator() - #sub = col.column() - #sub.label(text="Mouse Wheel:") + sub = col.column() + sub.label(text="Mouse Wheel:") + sub.prop(inputs, "wheel_invert_zoom", text="Invert Wheel Zoom Direction") #sub.prop(view, "wheel_scroll_lines", text="Scroll Lines") col.separator() diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 32d69e48adf..36c6b9b0a10 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -1989,20 +1989,6 @@ static void rna_def_userdef_view(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Mini Axis Brightness", "The brightness of the icon"); RNA_def_property_update(prop, 0, "rna_userdef_update"); - /* middle mouse button */ - prop= RNA_def_property(srna, "use_middle_mouse_paste", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_MMB_PASTE); - RNA_def_property_ui_text(prop, "Middle Mouse Paste", "In text window, paste with middle mouse button instead of panning"); - - prop= RNA_def_property(srna, "wheel_invert_zoom", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_WHEELZOOMDIR); - RNA_def_property_ui_text(prop, "Wheel Invert Zoom", "Swap the Mouse Wheel zoom direction"); - - prop= RNA_def_property(srna, "wheel_scroll_lines", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "wheellinescroll"); - RNA_def_property_range(prop, 0, 32); - RNA_def_property_ui_text(prop, "Wheel Scroll Lines", "The number of lines scrolled at a time with the mouse wheel"); - prop= RNA_def_property(srna, "smooth_view", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "smooth_viewtx"); RNA_def_property_range(prop, 0, 1000); @@ -2672,6 +2658,20 @@ static void rna_def_userdef_input(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_NONUMPAD); RNA_def_property_ui_text(prop, "Emulate Numpad", "Causes the 1 to 0 keys to act as the numpad (useful for laptops)"); + /* middle mouse button */ + prop= RNA_def_property(srna, "use_middle_mouse_paste", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_MMB_PASTE); + RNA_def_property_ui_text(prop, "Middle Mouse Paste", "In text window, paste with middle mouse button instead of panning"); + + prop= RNA_def_property(srna, "wheel_invert_zoom", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_WHEELZOOMDIR); + RNA_def_property_ui_text(prop, "Wheel Invert Zoom", "Swap the Mouse Wheel zoom direction"); + + prop= RNA_def_property(srna, "wheel_scroll_lines", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "wheellinescroll"); + RNA_def_property_range(prop, 0, 32); + RNA_def_property_ui_text(prop, "Wheel Scroll Lines", "The number of lines scrolled at a time with the mouse wheel"); + /* U.keymaps - custom keymaps that have been edited from default configs */ prop= RNA_def_property(srna, "edited_keymaps", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "keymaps", NULL); From 2800c2f0f99bb0c823e65f08fa5dad99ebbe373b Mon Sep 17 00:00:00 2001 From: Peter Schlaile <peter@schlaile.de> Date: Tue, 20 Jul 2010 13:15:25 +0000 Subject: [PATCH 578/674] Fixed linking order for datafiles in scons (introduced with Rev 30531) (blenkernel references the icon data files and had lower priority...) --- source/blender/editors/datafiles/SConscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/datafiles/SConscript b/source/blender/editors/datafiles/SConscript index 8fb2ed6888e..99acd52806e 100644 --- a/source/blender/editors/datafiles/SConscript +++ b/source/blender/editors/datafiles/SConscript @@ -6,4 +6,4 @@ sources = env.Glob('*.c') incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf' incs += ' #/intern/guardedalloc' -env.BlenderLib ( 'bf_editor_datafiles', sources, Split(incs), [], libtype=['core'], priority=[135] ) +env.BlenderLib ( 'bf_editor_datafiles', sources, Split(incs), [], libtype=['core'], priority=[235] ) From a1494105657e0cc428b6e9163df500d0fe5b3176 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Tue, 20 Jul 2010 13:32:42 +0000 Subject: [PATCH 579/674] Fix #22910: displacement mapping not working with use alpha for image texture. --- source/blender/render/intern/source/texture.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/source/blender/render/intern/source/texture.c b/source/blender/render/intern/source/texture.c index e982c1a12a7..5938b64dedf 100644 --- a/source/blender/render/intern/source/texture.c +++ b/source/blender/render/intern/source/texture.c @@ -1762,7 +1762,7 @@ void do_material_tex(ShadeInput *shi) // NOTE: test for shi->obr->ob here, since vlr/obr/obi can be 'fake' when called from fastshade(), another reason to move it.. // NOTE: shi->v1 is NULL when called from displace_render_vert, assigning verts in this case is not trivial because the shi quad face side is not know. if ((mtex->texflag & MTEX_NEW_BUMP) && shi->obr && shi->obr->ob && shi->v1) { - if(mtex->mapto & (MAP_NORM|MAP_DISPLACE|MAP_WARP) && !((tex->type==TEX_IMAGE) && (tex->imaflag & TEX_NORMALMAP))) { + if(mtex->mapto & (MAP_NORM|MAP_WARP) && !((tex->type==TEX_IMAGE) && (tex->imaflag & TEX_NORMALMAP))) { MTFace* tf = RE_vlakren_get_tface(shi->obr, shi->vlr, i, NULL, 0); int j1 = shi->i1, j2 = shi->i2, j3 = shi->i3; @@ -1833,7 +1833,7 @@ void do_material_tex(ShadeInput *shi) else continue; // can happen when texco defines disappear and it renders old files /* the pointer defines if bumping happens */ - if(mtex->mapto & (MAP_NORM|MAP_DISPLACE|MAP_WARP)) { + if(mtex->mapto & (MAP_NORM|MAP_WARP)) { texres.nor= norvec; norvec[0]= norvec[1]= norvec[2]= 0.0; } @@ -2219,8 +2219,7 @@ void do_material_tex(ShadeInput *shi) } if(rgbnor & TEX_RGB) { - if(texres.talpha) texres.tin= texres.ta; - else texres.tin= (0.35f*texres.tr+0.45f*texres.tg+0.2f*texres.tb); + texres.tin= (0.35f*texres.tr+0.45f*texres.tg+0.2f*texres.tb); } factt= (0.5f-texres.tin)*mtex->dispfac*stencilTin; facmm= 1.0f-factt; From 886ce5a35101ea8bfef9c02745a94b1ab017f12f Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Tue, 20 Jul 2010 13:42:27 +0000 Subject: [PATCH 580/674] * can use file for brush icon * fixed memory leaks * moved some of the brush icon code around * the update of the icon after a change is more responsive --- release/scripts/ui/space_view3d_toolbar.py | 4 +- source/blender/blenkernel/intern/brush.c | 144 +----------------- source/blender/blenloader/intern/readfile.c | 6 +- .../blender/editors/render/render_preview.c | 135 +++++++++++++++- source/blender/makesrna/intern/rna_brush.c | 9 +- 5 files changed, 149 insertions(+), 149 deletions(-) diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index 9bdfd3c5d15..dabd26f6aad 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -1126,8 +1126,8 @@ class VIEW3D_PT_tools_brush_appearance(PaintPanel): row = col.row(align=True) row.prop(brush, "icon", text="") - #row = col.row(align=True) - #row.prop(brush, "icon_filepath", text="") + row = col.row(align=True) + row.prop(brush, "icon_filepath", text="") # ********** default tools for weightpaint **************** diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index dcc96e65988..8e3cc0751b5 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -104,8 +104,6 @@ Brush *add_brush(const char *name) /* brush appearance */ - brush->icon_imbuf= get_brush_icon(brush); - brush->add_col[0]= 1.00; /* add mode color is light red */ brush->add_col[1]= 0.39; brush->add_col[2]= 0.39; @@ -130,9 +128,11 @@ Brush *copy_brush(Brush *brush) brushn= copy_libblock(brush); - if(brush->mtex.tex) id_us_plus((ID*)brush->mtex.tex); + if (brush->mtex.tex) + id_us_plus((ID*)brush->mtex.tex); - IMB_refImBuf(brushn->icon_imbuf); + if (brush->icon_imbuf) + brushn->icon_imbuf= IMB_dupImBuf(brush->icon_imbuf); brushn->curve= curvemapping_copy(brush->curve); @@ -151,7 +151,7 @@ void free_brush(Brush *brush) if (brush->mtex.tex) brush->mtex.tex->id.us--; - if (brush->icon==BRUSH_ICON_FILE && brush->icon_imbuf) + if (brush->icon_imbuf) IMB_freeImBuf(brush->icon_imbuf); BKE_previewimg_free(&(brush->preview)); @@ -211,140 +211,6 @@ void make_local_brush(Brush *brush) } } -/* image icon function */ -ImBuf* get_brush_icon(Brush *brush) -{ - extern char datatoc_blob_png; - extern char datatoc_clay_png; - extern char datatoc_crease_png; - extern char datatoc_draw_png; - extern char datatoc_fill_png; - extern char datatoc_flatten_png; - extern char datatoc_grab_png; - extern char datatoc_inflate_png; - extern char datatoc_layer_png; - extern char datatoc_nudge_png; - extern char datatoc_pinch_png; - extern char datatoc_scrape_png; - extern char datatoc_smooth_png; - extern char datatoc_snake_hook_png; - extern char datatoc_thumb_png; - extern char datatoc_twist_png; - - extern int datatoc_blob_png_size; - extern int datatoc_clay_png_size; - extern int datatoc_crease_png_size; - extern int datatoc_draw_png_size; - extern int datatoc_fill_png_size; - extern int datatoc_flatten_png_size; - extern int datatoc_grab_png_size; - extern int datatoc_inflate_png_size; - extern int datatoc_layer_png_size; - extern int datatoc_nudge_png_size; - extern int datatoc_pinch_png_size; - extern int datatoc_scrape_png_size; - extern int datatoc_smooth_png_size; - extern int datatoc_snake_hook_png_size; - extern int datatoc_thumb_png_size; - extern int datatoc_twist_png_size; - - void *icon_data[]= { - 0, - &datatoc_blob_png, - &datatoc_clay_png, - &datatoc_crease_png, - &datatoc_draw_png, - &datatoc_fill_png, - &datatoc_flatten_png, - &datatoc_grab_png, - &datatoc_inflate_png, - &datatoc_layer_png, - &datatoc_nudge_png, - &datatoc_pinch_png, - &datatoc_scrape_png, - &datatoc_smooth_png, - &datatoc_snake_hook_png, - &datatoc_thumb_png, - &datatoc_twist_png, - }; - - size_t icon_size[]= { - 0, - datatoc_blob_png_size, - datatoc_clay_png_size, - datatoc_crease_png_size, - datatoc_draw_png_size, - datatoc_fill_png_size, - datatoc_flatten_png_size, - datatoc_grab_png_size, - datatoc_inflate_png_size, - datatoc_layer_png_size, - datatoc_nudge_png_size, - datatoc_pinch_png_size, - datatoc_scrape_png_size, - datatoc_smooth_png_size, - datatoc_snake_hook_png_size, - datatoc_thumb_png_size, - datatoc_twist_png_size, - }; - - static ImBuf *icon_imbuf[BRUSH_ICON_COUNT]= { 0 }; - - static const int flags = IB_rect|IB_multilayer|IB_metadata; - - static const int default_icon = BRUSH_ICON_DRAW; - - char path[240]; - char *folder; - - if (!(brush->icon_imbuf)) { - if (brush->icon==BRUSH_ICON_FILE) { - - if (brush->icon_filepath[0]) { - // first use the path directly to try and load the file - - BLI_strncpy(path, brush->icon_filepath, sizeof(brush->icon_filepath)); - BLI_path_abs(path, G.sce); - - brush->icon_imbuf= IMB_loadiffname(path, flags); - - // otherwise lets try to find it in other directories - if (!(brush->icon_imbuf)) { - folder= BLI_get_folder(BLENDER_DATAFILES, "brushicons"); - - path[0]= 0; - - BLI_make_file_string(G.sce, path, folder, brush->icon_filepath); - - if (path[0]) - brush->icon_imbuf= IMB_loadiffname(path, flags); - } - } - - // if all else fails use a default image - if (!(brush->icon_imbuf)) { - if (!icon_imbuf[default_icon]) - icon_imbuf[default_icon]= IMB_ibImageFromMemory(icon_data[default_icon], icon_size[default_icon], flags); - - brush->icon_imbuf= icon_imbuf[default_icon]; - } - } - else { - if (!icon_imbuf[brush->icon]) - icon_imbuf[brush->icon]= IMB_ibImageFromMemory(icon_data[brush->icon], icon_size[brush->icon], flags); - - brush->icon_imbuf= icon_imbuf[brush->icon]; - } - - BKE_icon_changed(BKE_icon_getid(&(brush->id))); - } - - if (!(brush->icon_imbuf)) - printf("get_brush_icon: unable to resolve brush icon imbuf\n"); - - return brush->icon_imbuf; -} - /* Library Operations */ int brush_set_nr(Brush **current_brush, int nr, const char *name) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 06a0eb32a92..de2a3cd47cc 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -1540,9 +1540,6 @@ static void lib_link_brush(FileData *fd, Main *main) brush->mtex.tex= newlibadr_us(fd, brush->id.lib, brush->mtex.tex); brush->clone.image= newlibadr_us(fd, brush->id.lib, brush->clone.image); - - brush->preview=0; - brush->icon_imbuf=0; } } } @@ -1557,6 +1554,9 @@ static void direct_link_brush(FileData *fd, Brush *brush) direct_link_curvemapping(fd, brush->curve); else brush_curve_preset(brush, CURVE_PRESET_SHARP); + + brush->preview= NULL; + brush->icon_imbuf= NULL; } static void direct_link_script(FileData *fd, Script *script) diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 8f0c10c0b30..236d40cc2ce 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -101,6 +101,131 @@ static int qtest() {return 0;} /* XXX */ +ImBuf* get_brush_icon(Brush *brush) +{ + extern char datatoc_blob_png; + extern char datatoc_clay_png; + extern char datatoc_crease_png; + extern char datatoc_draw_png; + extern char datatoc_fill_png; + extern char datatoc_flatten_png; + extern char datatoc_grab_png; + extern char datatoc_inflate_png; + extern char datatoc_layer_png; + extern char datatoc_nudge_png; + extern char datatoc_pinch_png; + extern char datatoc_scrape_png; + extern char datatoc_smooth_png; + extern char datatoc_snake_hook_png; + extern char datatoc_thumb_png; + extern char datatoc_twist_png; + + extern int datatoc_blob_png_size; + extern int datatoc_clay_png_size; + extern int datatoc_crease_png_size; + extern int datatoc_draw_png_size; + extern int datatoc_fill_png_size; + extern int datatoc_flatten_png_size; + extern int datatoc_grab_png_size; + extern int datatoc_inflate_png_size; + extern int datatoc_layer_png_size; + extern int datatoc_nudge_png_size; + extern int datatoc_pinch_png_size; + extern int datatoc_scrape_png_size; + extern int datatoc_smooth_png_size; + extern int datatoc_snake_hook_png_size; + extern int datatoc_thumb_png_size; + extern int datatoc_twist_png_size; + + void *icon_data[]= { + 0, + &datatoc_blob_png, + &datatoc_clay_png, + &datatoc_crease_png, + &datatoc_draw_png, + &datatoc_fill_png, + &datatoc_flatten_png, + &datatoc_grab_png, + &datatoc_inflate_png, + &datatoc_layer_png, + &datatoc_nudge_png, + &datatoc_pinch_png, + &datatoc_scrape_png, + &datatoc_smooth_png, + &datatoc_snake_hook_png, + &datatoc_thumb_png, + &datatoc_twist_png, + }; + + size_t icon_size[]= { + 0, + datatoc_blob_png_size, + datatoc_clay_png_size, + datatoc_crease_png_size, + datatoc_draw_png_size, + datatoc_fill_png_size, + datatoc_flatten_png_size, + datatoc_grab_png_size, + datatoc_inflate_png_size, + datatoc_layer_png_size, + datatoc_nudge_png_size, + datatoc_pinch_png_size, + datatoc_scrape_png_size, + datatoc_smooth_png_size, + datatoc_snake_hook_png_size, + datatoc_thumb_png_size, + datatoc_twist_png_size, + }; + + static const int flags = IB_rect|IB_multilayer|IB_metadata; + + static const int default_icon = BRUSH_ICON_DRAW; + + char path[240]; + char *folder; + + if (!(brush->icon_imbuf)) { + if (brush->icon==BRUSH_ICON_FILE) { + + if (brush->icon_filepath[0]) { + // first use the path directly to try and load the file + + BLI_strncpy(path, brush->icon_filepath, sizeof(brush->icon_filepath)); + BLI_path_abs(path, G.sce); + + brush->icon_imbuf= IMB_loadiffname(path, flags); + + // otherwise lets try to find it in other directories + if (!(brush->icon_imbuf)) { + folder= BLI_get_folder(BLENDER_DATAFILES, "brushicons"); + + path[0]= 0; + + BLI_make_file_string(G.sce, path, folder, brush->icon_filepath); + + if (path[0]) + brush->icon_imbuf= IMB_loadiffname(path, flags); + } + } + + // if all else fails use a default image + if (!(brush->icon_imbuf)) + brush->icon_imbuf= IMB_ibImageFromMemory(icon_data[default_icon], icon_size[default_icon], flags); + } + else { + if (!(brush->icon_imbuf)) + brush->icon_imbuf= IMB_ibImageFromMemory(icon_data[brush->icon], icon_size[brush->icon], flags); + } + + BKE_icon_changed(BKE_icon_getid(&(brush->id))); + } + + if (!(brush->icon_imbuf)) + printf("get_brush_icon: unable to resolve brush icon imbuf\n"); + + return brush->icon_imbuf; +} + typedef struct ShaderPreview { /* from wmJob */ void *owner; @@ -1114,6 +1239,14 @@ static void common_preview_startjob(void *customdata, short *stop, short *do_upd shader_preview_startjob(customdata, stop, do_update); } +static void common_preview_endjob(void *customdata) +{ + ShaderPreview *sp= customdata; + + if(sp->id && GS(sp->id->name) == ID_BR) + WM_main_add_notifier(NC_BRUSH|NA_EDITED, sp->id); +} + /* exported functions */ void ED_preview_icon_job(const bContext *C, void *owner, ID *id, unsigned int *rect, int sizex, int sizey) @@ -1136,7 +1269,7 @@ void ED_preview_icon_job(const bContext *C, void *owner, ID *id, unsigned int *r /* setup job */ WM_jobs_customdata(steve, sp, shader_preview_free); WM_jobs_timer(steve, 0.1, NC_MATERIAL, NC_MATERIAL); - WM_jobs_callbacks(steve, common_preview_startjob, NULL, NULL, NULL); + WM_jobs_callbacks(steve, common_preview_startjob, NULL, NULL, common_preview_endjob); WM_jobs_start(CTX_wm_manager(C), steve); } diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c index b73b5f22141..bc71a862f4b 100644 --- a/source/blender/makesrna/intern/rna_brush.c +++ b/source/blender/makesrna/intern/rna_brush.c @@ -110,11 +110,12 @@ static void rna_Brush_icon_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Brush *br= (Brush*)ptr->data; - if (br->icon==BRUSH_ICON_FILE && br->icon_imbuf) + if (br->icon_imbuf) { IMB_freeImBuf(br->icon_imbuf); + br->icon_imbuf= NULL; + } - br->icon_imbuf= NULL; - br->icon_imbuf= get_brush_icon(br); + BKE_icon_changed(BKE_icon_getid(&(br->id))); WM_main_add_notifier(NC_BRUSH|NA_EDITED, br); } @@ -260,7 +261,7 @@ static void rna_def_brush(BlenderRNA *brna) {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem brush_icon_items[] = { - //{BRUSH_ICON_FILE, "FILE", 0, "File", ""}, + {BRUSH_ICON_FILE, "FILE", 0, "Use Image File", ""}, {BRUSH_ICON_BLOB, "BLOB", 0, "Blob", ""}, {BRUSH_ICON_CREASE, "CREASE", 0, "Crease", ""}, {BRUSH_ICON_CLAY, "CLAY", 0, "Clay", ""}, From e8d45a8c4022a6bc02099da93e24c8afaff2af44 Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Tue, 20 Jul 2010 13:43:09 +0000 Subject: [PATCH 581/674] * typo fix --- source/blender/makesrna/intern/rna_brush.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c index bc71a862f4b..c6f77c9fce2 100644 --- a/source/blender/makesrna/intern/rna_brush.c +++ b/source/blender/makesrna/intern/rna_brush.c @@ -261,7 +261,7 @@ static void rna_def_brush(BlenderRNA *brna) {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem brush_icon_items[] = { - {BRUSH_ICON_FILE, "FILE", 0, "Use Image File", ""}, + {BRUSH_ICON_FILE, "FILE", 0, "Use An Image File", ""}, {BRUSH_ICON_BLOB, "BLOB", 0, "Blob", ""}, {BRUSH_ICON_CREASE, "CREASE", 0, "Crease", ""}, {BRUSH_ICON_CLAY, "CLAY", 0, "Clay", ""}, From 1f6d178b730ee3e8666a191cb5229e35e94dfcaa Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Tue, 20 Jul 2010 16:42:23 +0000 Subject: [PATCH 582/674] 2.5 Beta splash screen. --- source/blender/editors/datafiles/splash.png.c | 12169 ++++++++-------- 1 file changed, 5785 insertions(+), 6384 deletions(-) diff --git a/source/blender/editors/datafiles/splash.png.c b/source/blender/editors/datafiles/splash.png.c index 589fc124f4d..e374742c8da 100644 --- a/source/blender/editors/datafiles/splash.png.c +++ b/source/blender/editors/datafiles/splash.png.c @@ -1,6389 +1,5790 @@ /* DataToC output of file <splash_png> */ -int datatoc_splash_png_size= 204235; +int datatoc_splash_png_size= 185087; 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, 0, 25,116, 69, 88,116, 83,111, -102,116,119, 97,114,101, 0, 65,100,111, 98,101, 32, 73,109, 97,103,101, 82,101, 97,100,121,113,201,101, 60, 0, 3, 29,109, 73, - 68, 65, 84,120,218,236,189, 9,184,101,215, 85, 30,184,214, 62,247, 85,149, 74,150, 69,201,182, 36,207,182,108, 3, 14, 6,227, -148, 12,105, 51,180, 2,229, 38, 76, 25, 32, 18, 31,233, 4, 58, 12, 82, 66,210, 29,147,175, 45, 41,157,116, 67,186, 25, 44,165, -137, 51, 0,253, 89, 33, 77,103,160, 33,150, 29,135,208, 31, 9,113, 57, 56,216, 38, 9,184,130, 13, 4, 27, 27,201, 50, 6,100, - 89,182,202,146,165, 26,222,123,119,175, 62,195, 26,254,181,239,173,170, 87, 85,239,149, 84,230,108,125, 87, 85,245,222,189,231, -158, 97,239,189,166,255,255, 23,139, 8,205, 99, 30,243,152,199, 60,230, 49,143,203,127,148,249, 22,204, 99, 30,243,152,199, 60, -230, 49, 27,245,121,204, 99, 30,243,152,199, 60,230, 49, 27,245,121,204, 99, 30,243,152,199, 60,230, 49, 27,245,121,204, 99, 30, -243,152,199, 60,230, 49, 27,245,121,204, 99, 30,243,152,199, 60,102,163, 62,143,121,204, 99, 30,243,152,199, 60,158,242, 99,113, -166, 95, 48,243, 94,124,159, 29,116,127,255,122, 65, 41, 84,106,165,223,237,255,126, 66,127,183,107,252,186,153,170, 55,143,121, -204, 99, 30,243,152,141,250,222,141,193,104,115, 41,124,195,223,248,230, 47,250,129,155,191,244,197, 95,181, 88,112,247,175,223, -251,209,119,127,255,207,188,239,127,223,220,174,199,118,219,176,207, 99, 30,243,152,199, 60,230,241,135,105,240,153, 34,218, 61, -136,212,135, 3,238,251, 43, 95,247,121,255,240, 71,191,245, 21,223, 45,199,159, 32,186,234,106,226,103, 93, 67,191,248,190,143, -222,255,221, 63,246,174,191,113,223,131,159,121, 91,255,158,109, 11,182,231, 72,125, 30,243,152,199, 60,230, 49,143,157,143, 75, - 89, 83, 31,140,250,254, 43,182,158,184,138, 30,124,128, 78, 62,248, 49, 58,241, 59, 31,160, 19, 31,250, 48,253,241, 47,120,222, - 13,191,244,195,127,234,159,124,253,171,159,255,183,250,247, 28, 82,131,206,243,227,153,199, 60,230, 49,143,121,204,227,169,105, -212, 71,195,254,198,119,252,222, 79,252,216,175,126,242,125, 7, 15, 29,160, 69,199, 84, 31,126,144, 78,124,240,191,210,179,175, -216, 56,240,175,255,215,111,248,223,254,230,183,124,241, 63, 98,166,151,205,134,125, 30,243,152,199, 60,230, 49,143,243, 52,178, -151, 56,253,126,160,127,125, 78,255,250,130,191,244,229,215,190,238, 71,190,238,121, 95,191,127,155,232,228,233, 45, 42,251,123, - 35,255,194,151,210,190,107,159, 69,111,123,247, 7,127,227,123,126,252, 93,119,124,252,248,201,127,215,191,183,210, 5,164,226, -231,244,251, 60,230, 49,143,121,204, 99, 54,234,123,103,212,209,176, 95,221,191,158,247,229, 47,189,234,219,255,249,183,222,240, - 93, 47,188, 98,113,224,196,137, 45,162,174,163,242,156, 23,209,129,231, 63,159,238,251,131, 79, 61,118,219,143,190,243,135,223, -241,190,223,255,241,254,189,159, 49, 91,189, 27, 70,125,143,174,109,248,206,195, 52,149, 15,134,113,127,255, 61,247,127, 54, 79, -158, 63,108,215, 59, 15,120,246,119,223,148,159,253,237,239,188,255,114,254,158,167,248, 58,155, 39,220, 60,158,178, 70,221,198, -144,246,127,122,255,186,238,250,167, 47,254,228,191,248,246,151,252,245, 47,191,254,202,235, 79,157, 92,142,129, 57, 95,247, 60, -186,226, 5, 47,166, 77,169,244, 63,255,228,123,254,233, 63,252,217,223, 24,106,237, 31,163,243, 64,199,159, 99, 33,220,160,175, -157,140,227,253,189, 56,182,195,239,124,123,255,199, 17,253,231,157,253,231,238,250, 44,223,108, 62, 43,174, 87,157,147, 35,106, - 60, 14,195,175,134,231, 62, 24,145,123,251,107, 59,190, 11,223,211, 30,159,118,123, 14, 94,132,193, 28,175,183, 55,154,199,119, -248,217,252,236,111,127,231,158, 60,251, 75,245, 61,151,208, 17, 58,251, 60, 91,115,255,103,163, 62,143,243, 25, 23, 74,105, 43, - 52,165,197,175,122,198,211, 54,190,240, 25, 87, 46,158, 81, 37,188, 0,214,255,245, 27, 17,139,253,132,237,231,254,219,225,187, - 15,110, 45,229,228,247,254,252, 39,254,237,223,251,211,207,255,211,175,185,246,202,207,217,220,234, 63,113,252, 83,116,234,224, -211,104,227, 25,215,209, 63,184,237,166,111, 59,252,210,235, 62,239,117,111,250,165,215,127,250,241,205,119,211,238,208,222,110, -238, 95,111, 56, 79, 79,249,222,254,117,180,191,164,123,230,105,243, 89,147,101,184, 89, 95,103,114,240,204,152,188,169,127,255, - 61,234,184, 92,140,113, 31,190,243,237, 23,240,185,163,253,235,181,187,108, 96, 6,195,242,222,230,199,131,193,188,115,158, 29, -187,110,200,119, 62,207,238,190,233, 30,117, 94,142,207,119,111, 30,151,202,168,143,124,243, 43,247,119,135,127,224,107, 95,248, - 67,223,250,202,107,111,186,250,138,141,125,149,203,100,176, 75,153, 94,253,223,121,209,165,127, 15,127,114,215,197,191,121,250, - 93, 31,155,203,150,112,221, 94, 44,168,192,113,182,151, 91, 84, 79, 50,125,251,107, 95,241,165,175,122,233,179,222,250,157,111, - 60,250,125,239,253,208,195, 63,217,127,255,105,186,244,124,246,113, 97,246,155,251,240,231, 45,187, 17,185,205,227, 73, 29,239, - 61,207,247,223, 58,108,190,253,243,191,101, 47,162,230, 39, 97,220,124,134,107,156,141,250, 83, 97,158,221,125,211, 45,189, 97, - 63, 54,223,190,121, 92,170, 72,253, 89,119,127,227,139,223,248, 61,175,121,238, 87,108,158,168, 36,149,169, 43, 60, 5,240,194, -211,171,255, 59, 87,158, 76,239,240, 26,126, 63,196,246,181,255, 71,167,233,253, 50,253,174,235,255,177, 40,220,121,154,137,237, -115, 66,181,255,251,233, 19,155,244, 69, 47,188,246, 89,111,255,161,111,250,209,239,249,241, 95,124,217, 79,255,251, 15,253,112, -255,219,135,105,247,196,106,142,158,229,119, 71,214,252,251,237,253,185,190,118, 54,236,159, 53,227,152,102, 98,142,245,207,244, -168, 70,242,135,244, 89,223, 10,115, 96,136,180,222,220,255,238,198, 93,122,246, 67, 84,182,147, 26,241, 94,204,179, 91,215,252, -236, 80,111, 76,110,238,141,201,189,243,148,216,227,121,118,251, 59,143, 66,198,100,253, 60,187,251,166, 27,231,136,125, 30,151, - 36, 82,223,191, 81,110,248,134,151, 31,122,181, 60,177, 69, 91,167,250,160,185,214,201, 72,123,102,221,226,121, 14,187,219, 21, - 42,207,184, 86,141,123, 29,131,116,170,154,197, 31, 63,167, 22,190,212,201,240, 15,209,252, 80, 98,239,166, 67,108,158,222,162, -171,247,237, 43,255,239,237, 95,247,189,175,254,188,235,191,240,111,252,196,123,110, 63,189,181,124,223,110, 24,246,254,220,207, -154,218,212,232,252, 13, 20,233,179,195,186, 8,239,154,167,208,101, 61, 6,163,122,207,186,200, 91,141,246,176, 1,223,219, 63, -255, 55,129, 17,188, 97, 23,159,253,189,230, 68, 92,202,161, 41,225,195,141, 83,123, 4, 34,248,217,168,239,197, 60, 91, 19,121, -171,209,158,230,217,221, 55,237,213, 60,155,199, 31,162,113, 33, 60,245,110,115,171,126,234,103,126,253,225,255,204,229, 52, 93, -185,111, 73, 87, 94, 65,116,240,128,232,171,198,223,247, 87, 58, 80, 54,123,227,188,213,123, 2, 7, 39, 35, 95,235,248,202,224, -143,254, 61,245, 84,255, 58,217,239, 56,253,159, 67,118,125,248,183,108,234,251,165,127,127,165,173,101,165,237,211, 75,250,222, -111,126,245,145,183,223,253,205,255,234, 69,215, 61,253,155,212,236,239, 41,223,190,223,120,135, 69,247,218, 38, 98,186,121,158, - 62,151,245, 24, 50, 45,183,237, 36,149, 62,188,175,137,168,239,184,204,175,253,230, 38,122, 68,156,200,205, 26, 61,206, 99,183, -230,217,237,239,188,109, 39,169,244,225,125,159,101,243,108, 30,151, 73,164, 62,132,197,159,186,227,103, 31,248,190,159,255,205, - 79,126,211,203,175,191,226,133, 67, 34,189, 14, 86,119,154,154,189, 13,158, 76,246,137,205, 90, 94,245,130,171,254,200,119,127, -229, 75,111, 56,176, 56, 80,234, 96,160,135,154,250, 16, 91, 15,134,125,243,113,226,142,169, 60,255,149, 84,158,245, 82,226,167, - 95, 79,124,224,233,212, 91,110,170, 79, 60, 76,242,153, 7,169, 62,252,161,254,223,189,177,231, 43,250,239, 93,210,178, 63,112, -125,124,147,190,226, 21, 47,120,193, 47,220,253,205,255,248, 79,220,249, 47,187,143, 60,248,232, 91, 41,192,123,123,101,216,239, -239,175,234, 94,240,164, 15,239,198,113,215, 32,162,143,237, 18,210, 26, 17,254, 23, 68, 55,219,141, 99, 92,138,235,109,206,115, - 71,199,187,128, 8,249, 30, 10,112,229,161, 1,104,119, 25,215,214, 49,245, 62, 68,144, 67,148,120, 63,220,195, 61,139, 16, 27, -196,253,177,139, 77, 47,247,199,203,115,244, 2, 40,111, 23,195, 2,216,129,161,190,184,121, 54,157,219, 92, 91,159,199,158, 26, -245, 33, 41,254, 68,255,250,192,127,184,239,241, 55,246,175, 43, 52, 90,110,199, 51,190,246,139,174,253,206,111,186,241,197,207, - 62, 88,246,149,237, 49,165,222, 91,243, 83,167, 72, 78,247, 31, 95, 62, 65,221,231,126, 5, 45,110,252,115,212,189,248,143,157, - 49,133, 32,143, 60, 64,219,247,189,131,150, 31,125, 79,239, 0,236, 27,235,236, 67,201,126,243,196, 38,125,238,115,158,113,245, -191,250,219,127,234,199,190,250,245,111,126,228,147,143,158,250,247,180,247, 13, 97,118,133, 35,171,134,237, 86,141,152, 14,175, -249,253,253, 20,169,225,227,103, 56,198, 27,224,179, 67, 26,247, 30, 56,238,173,212, 32,109,245,152,119,237, 4,189,223,191,247, - 86,141, 18,110, 56,223,243,218,139,235, 61,203,181,222,161,199,197, 13,121,215,145,226, 16,209,226,184, 44,163,217,161,102,222, -156,251,189,240,231, 29, 23,107,212,251,227,231,103,117,251, 59,239, 81,195,123,135, 62,255, 67,205,251,143,142,243,242, 60,140, -159,102, 18,214,207,243,201, 57, 25,142,119,207, 89, 62,123, 68, 95,135,207,228,156,235,113, 44,109,126, 41,235,218,159, 21,243, -108, 30, 79,222,184,144,180,245, 16, 13, 15, 57,242, 97,162, 63, 68, 19,127,252,163,253,235,119,245,245, 81,102,186,242,238,155, - 63,247,251,127,254,182, 47,254, 11, 47, 60,184,239,202,237,229,146,228,212, 19, 84, 31,249, 4,213,227, 31,239, 35,244,199,104, -223,215,220, 78,251,111,254, 7,107, 13,122,242,116,175,121, 17,109,188,250, 59,105,227, 75,255,242,104,208,137,151,147,221, 30, - 13,251, 22,125,209,203,158,253,204, 55,254,229,155,238,238,127,248, 2,218,123, 89, 89, 92, 96, 23,180,208,123, 99, 52,108, 38, -247,169, 55,126,166,104,255, 6,253,253,123,149,122,181,110, 28,134,205,233,144,190,239,237,148,107,255,237, 49,223,164,245,225, - 51, 26,223,254,245,230,225,125,103, 57,198,112,252,183,171, 81,189, 84,215,187,238, 90,239, 83, 67, 49,111,122,231, 55, 48,245, -142,188,104, 52,130, 55,104,132,120, 33, 35, 63,171,233, 56,239, 93,227,124,217,152,128,167,119,223,180,163, 84,179, 30,239,220, -243,124,170, 79,159, 41, 75,241,102,253,243,108,215,104,115,242,190,139,184, 23,243,152,199,101, 17,169,147, 70,195, 91,250, 34, - 48,166,221, 11,159,121,224, 27,223,244,173,159,127,215,215,124,238, 51, 95,118,250,100,165,229,178,127,203,233,147, 68,219, 91, -131,212, 13,241, 6,209,254, 63,243,195,212,189,226,235,253, 96,143,157, 60, 77,191,240,190, 7,232, 23,222,255, 0, 61,242,248, - 73,218,232,152, 94,254,156,107,232, 79,222,248, 82,250,163, 47,121,246,116,224,231,191,154,120,223, 85,180,245,238, 31, 33,218, -183,152, 78,161,143,252,183, 31, 63, 77,127,254,171, 95,241,170,127,254,142, 15,126,231, 47,252,234, 3, 63, 72,123, 68,119, 83, - 35,118,115, 19, 17,158,239, 49,110,214, 13,165,245,204,143,130,147,128,209,236, 13, 20, 72,251, 99,231,112, 54,222, 12,155,220, -189,224,241, 31,110,206,251,214, 33, 50, 62,131, 80,204, 27,104, 21, 43,128,199,186, 25,162,155, 55, 63, 73,215,123, 72, 55,245, - 67,224, 92, 29,131,207,239,213, 56,114,142,136,234, 98,230,213,174,151, 95,206, 96, 16,111,104,141,186, 59,207,183,191,243,254, -254,247,199,224, 92, 6,163,119,219, 46, 56,193,248,172,214,205, 37,159,123,253,247, 31, 63, 83,132,125, 65,243,188,143,182,207, - 33, 86,115,191,190,142, 54,198,252, 8,124,199, 33,117, 58,110,188, 68,106,118,123, 50,207,230, 49, 27,245,243, 25,150,242,190, -250,107, 95,113,205,247,222,115,203,231,221,254,188,167, 93,113,197,201, 39,250,232,124,217,219,215,173,211,250, 77, 29,241,246, - 19,180,241,101,223,149, 12,250,127,250,240,131,244,250,159,122, 23,221,255,201,207,208,129,253, 27,180,177, 40, 84,250,163,189, -255, 99,143,208, 91,254,227, 7,233, 27,111,124, 9,253,175, 55,127, 5, 29,236,127, 87,174,251,124, 90,188,226, 22,218,254,181, -159, 36,186,234,186,241,107,199, 34,186, 48,253,237,111,123,205,119,253,187,247, 62,240,150, 62,152,255, 77,154, 74, 4,187,109, -208,219,232,245,158,243, 60,198, 13,122, 12,220, 80,110, 91, 83,219,189, 75,163,219, 55,235,134, 98,223,125,227, 89, 14,127, 7, -108,114,183,181, 70, 65,191,251,205,176,137,222, 49,136,169,224,251, 52,229,126,107,179,153,220,210,212,209,241,220,142, 60, 73, -215,123, 7, 28,239, 78, 5, 49,182,207,106,175, 35,220,221, 50,188,111, 94, 23,189,106, 57, 98,184,174,123,118, 89,122, 23,175, -225,248, 26,234,218,189, 48, 71,110,222, 5,163,126, 71,154, 75,217, 40,222,213, 27,202, 35,205, 61, 24, 34,236,163,103, 49,158, -121,158, 55,105,113,117, 90,242, 60,191,251,166,117,233,243,187, 52, 75,113,236, 44, 14,208,173,234,228,226,156,124,237, 37,216, -147,243, 60,235,207, 93, 94, 63, 27,170,121,236,124, 92, 44,106,220, 12,250,139, 95,247, 85,207,253,177,183,125,251,203,191,239, -217,251,247, 93,113,226,244, 22,201,246,137, 17,240, 54,214,209, 59, 30,237, 44, 63,243,249,180,248,146,111,243, 15,127,248,227, -199,233,219,126,236, 23,232, 55, 30,124,140,100,223, 1,218, 26,106,230, 27,251,105,223, 21, 7,232,202,167, 93, 73, 7,174,188, -146,222,250,159,127,135,126,232,173,239,241,207,116, 47,253,227,196, 7,251,232,125,121, 98,250,246,254, 10,182, 55,183,232, 85, - 47,185,246,250, 47,121,249,245, 95, 67, 78,130, 59, 47,131,123,199, 89, 94, 67,164,241, 72,179,216,110,187, 0,160,213,155,154, -232,242,198, 51, 29, 67,127,142,104,251,195,106,116,207, 54, 6,181,187,181,162, 56,106, 24,238,108, 34,158, 35,103,216, 48,205, - 96,190,118,157, 65,129,115,123, 50,175,247,126, 61,222,189,107,142,181,235, 81,238, 48, 15, 46,198,161, 59, 71,228,185,110, 88, - 13,250, 62,253,238,221, 26,183,158,227, 26,240,103,135,212,176, 93,236,152,230,210, 26, 67,173,117,244,215,158,101, 30,174,159, -231,183,191,243,150,117,117,110,253,142,179,206,243, 33,114,239, 95,119,158, 11,141,174, 25,131, 91, 48,130, 86,167, 97,207,134, -150, 32,246, 98,158,205, 99, 54,234, 59, 54,232,124,205,149,139, 35, 63,243, 63,124,222,219,222,248, 13, 47,250,239,135,100,252, -233,186, 53,209,209,134,218,247, 70,127,248, 5,143, 47,161, 77,234, 62,247, 43,137,159,246, 76, 63,192,157, 63,245, 30,250,240, -239, 61, 74,143,110, 51, 61,248,248, 54,125,236,209, 77,250,157, 79,158,236,163,246,147,116,252, 84, 31,233, 47, 22,116,245,213, - 79,163,127,245, 43, 31,166,163,239,255,136, 90,245, 5,117, 55,124, 37,201, 99, 15,143,220,247, 33,165, 63,104,220,236,187, 98, - 31,125,203, 77,159, 55, 44,224,167,211,249,215,214,223,112,150,215,145,102,145,189,246,124,165, 98, 65, 91,220, 47,253, 92,198, - 71,211,207,247,156, 37, 45,215,142,219,206,113,188,163, 77, 42,239, 6, 56,191, 86,194,242,174,179,157,223,154,115,187,212,215, -123,215,165, 18,254,209,107,121, 67, 19,165,239,198,102,107, 66, 36,119,194,235, 94, 90,197,106,188,225,108, 56,136,243, 48, 24, -135,155,103,124,239, 26, 67,118,188,249,249,110,208, 54,239, 58, 27,208, 76,141, 43,222,207, 91,207, 65,169,187,237, 28,198,248, -140,243,252,188, 55,184,213, 99,237, 25,141, 85,159,207, 27,154, 40,125, 54,234,243,184, 36, 70,221, 20,101,158,246, 21, 47,185, -234,175,191,231,175,124,193, 91,190,229,229,215,188,242,196,137,229, 64, 56,235, 13,250,214,116,212, 62, 58, 31,232,106,188, 24, -254, 44,227,159,229, 57,175,240,131,124,228,161, 79,211,191,121,223,239, 18, 29,188, 98,162,185, 13, 98, 51,253,159,203,254,195, -159, 57,189,164,143, 60,124,130,238,255,196, 9,218, 18,166,218,255,252, 29,191,241,209, 56,129,103,190,148,228,228, 99,253,223, -182,245,108,164,255,107,165,207,127,222, 53, 47,233,255,245,108,218, 59,192,220,205, 26, 69,158,111,138, 23, 13,212,241,243, 48, - 10, 71,119,184,161, 28,219, 97,154,246,216, 25,206,233, 72, 99, 96,119,114,126,247, 62, 73,215,123,255,165,210,223,215, 18, 2, -106,181, 31,167,139, 75, 73, 31, 87,227,253,146,254, 26,110,212,204,202, 93,240, 26,254,125,141,190,231,120, 50,116,147,227,181, - 91, 81,250,177,179, 68,170,247,238,102,116,186, 67,195,116,239,154,117,182,126,158,239,172,174,125,236, 60,156,225,243, 57,183, - 61, 41,237,232, 61,222,205,121, 54,143, 63,196,227,124,107,234,150,110,127,206,119,252,177,103,125,255,143,127,227, 11,191,123, -163,118, 3, 31,189, 55,200,253,143,165,142,246,117,144,135,149, 33,229, 94, 88, 85,229,164, 55,234,251,168, 28,122,129, 31,232, -129,135, 31,163,147, 67,187,213,167,239, 15, 63,193,224,109,131,129, 23,161, 79, 63,190, 69, 91,155,219,244,188,171, 23,244,153, - 83, 91,113, 18, 99, 61,189,119, 4, 78,159, 32,190,226,170,254, 99,131, 81,223,166, 23, 95,119,213,181,251,247,117,215,159,222, - 92,126,224, 60,175,235,108,122,215, 8,156, 57,164,222,244,205,231, 41, 19,123,228, 12, 27, 14,157, 43,186, 70,145,158,179,112, -163,119, 90, 10,184,255, 44,215,120, 94,199,106,207,237, 18, 94,239, 37, 1, 14,169,227,214,214,188,239,188, 24,110,186,126,118, - 39, 98, 55, 3,206, 96,120, 14,239,109,178, 73, 23,164,244,166,145,239,205, 59,113,200,148,179,126, 28,174,123,248,220,133,114, -214,119, 54,151,250,136,184,255, 78,218,129,241,188,216,121,126,182, 12,198, 13, 59,152,203,187,142,130,215,103,179, 58,207,102, -221,247,121, 92, 2,163, 62, 70,191, 87, 29,232, 94,243,119,190,254,121,119,223,118,248, 89, 95,182,185, 73,116,106, 99,146,124, -149,101,111,184,183, 42,237,219, 87,232,209,229,178, 94, 49, 88,230,161,161, 75, 7, 31,150,109, 63,216,181, 87, 31,164,110,223, - 6, 45, 7,164,219,168, 23, 47,106,212,245,207,225,103,125,132,255, 68,111,248, 63,122,234, 20,237,127, 37,156,170, 44,251, 87, -111,228,183, 79,245, 14,192,211,123, 71, 98,208,159,175,116,205,149, 27, 7,175, 62,184,239,208, 39, 54, 79,158, 87, 6, 98, 39, - 45, 67,181,182,105, 20, 42,163,213,220,184,195,175,192,205,224, 6,173,211, 95,200, 56,116,150, 8,240, 98,198, 5, 25, 97,125, -239,225, 75,124,189,123,190,217,169, 65,127,123,115, 29,183, 93,202, 14,125,131, 3,208,159,199,157, 20, 41,217,225, 62,222,188, - 14, 71,176,195, 12,211,161, 29,102, 89,134,113, 15,237, 2,103,253, 34,230,210,145, 51,124,231,174,148, 92,128,231,254,164, 82, - 34,245, 60, 86,231,217,156,118,159,199, 30, 27,117, 75,101,111,124,254,117, 7,254,220, 79,125,203,139,239,250,163,215, 30,188, -246,228, 16,157,239, 95, 76, 6,189, 55,230,139,193,160, 95,209,209,223,124,199,239,191,255,133,159,179,239,115,190,251,240,179, - 94,120,106,136,218, 45, 90,223,218,162,250,201,223,161,242,252, 87,143, 7,123,249,115,159, 65, 95,250,178,107,233,151, 63,240, -112,127, 22,139,201,136, 23, 53,232,166, 11, 87,167,207,158,122,228, 9,122,217,245,177,246,228,177, 63,232,163,244,199, 72, 78, -127, 14,177,118,140,145,106, 78,193,152,252,223,245,244,187, 70, 79, 4,155,236, 8,230,218,225, 70,127,168,137,138,111,120, 10, -207,137,227,187,240,222,203,233,122,119, 98,208,239,124,146, 90,238,162,186, 24, 93,196,125,108,185,233,231,138,100, 81,136,102, -224,172, 31,185, 0,101,180,221,154, 75,187,109, 72,205, 33,127, 82,245, 13,206, 96,208,239,156, 13,250, 60,246,218,168, 91,186, -253,218, 91,190,248,154,215,255,253,175,123,222,255,116,253,129,141,125, 39,122, 99,203, 7,167, 16, 92,122,227,126,160, 55,168, -167,246, 17,253,143, 63,247,209,159,187,231, 61,159,120,219, 63,190,229, 69,183,143,105,248,225,211,157, 54,120, 89, 20,146,135, -126,211, 15, 92,122, 99,255,183,254,204,141,244,117,191,245,255,245,225,126, 31,117,239,223,167,221,221,212,168,143, 17,124,255, -191,199, 79,208,171,254,200,115,233, 47,252,183, 95,224,159,173,159,248, 64,191,249,110, 17, 47, 55,167, 55,246,198,182,244, 95, -248,200,227,167, 78, 62,118, 98,243, 51,123, 24, 61,221,165,234,102,184, 89,158,239, 34, 52,110,236, 94, 27,220,167,202,184,220, -174,183,221,104,239,217, 73, 38,103,143,230,219,241,126,190,237, 36,130, 61,155,241,184,161,201,196, 28,238,127,118,190,153,147, - 97,158, 31,189,220, 55, 59, 48,164,200,202,184, 71,179, 4,247,175, 75,121, 43, 34,253, 13,151,100,158,157,157, 83, 63,143,121, - 92,180, 81, 31, 11,221,139,142, 63,247, 7,255,196,115,254,254,235,255,155,235,191,102,123,155,232, 68,111,156,121,127, 25, 35, - 99, 57,185,164, 43, 23, 76, 15,156,222, 62,245, 23,255,249, 71,126,226,157, 31,122,236,167, 6, 43,251,187,143,110, 61, 68, 44, -159, 47, 30,169,247, 63, 61,112,144,150, 15,188,155, 22,199, 31, 32, 62,244,162,241, 11,190,246, 85, 47,162,123,254,242, 31,167, -215,253,227,119,209,137, 79,159,238,223,179,127, 66,180, 15, 31,220,236, 13,253,137,147,244, 71, 63,255, 58,122,203,235,191,158, -174, 60,176, 49,157,213,214, 73, 90,254,214, 91,137,247,237,159, 16,246, 99,234,125, 57,214,225,239,251,248,167, 31, 62,181,185, -124,152,246, 86, 89, 14, 59, 90, 93, 8, 8,231, 73, 51, 18, 79,210,184,108,174, 87, 81,230,173, 65,127,178, 1, 75, 23,235,216, -180,160,179, 11,201,156, 12, 77, 94,238,252, 44,104, 3,122,107, 99,208, 95,251,100,212,174, 85,237,174, 53,232, 51, 48,110, 30, -187, 50,202, 57,140,250,181,111,248,186,231,254,216,237, 95,118,253,215,156,234, 13,250,214,193, 5,241, 21,221, 24, 64,211,137, -222,160, 31,232,232, 23,255,224,137,135,110,250,241, 15,126, 95,111,208,255,175,254,167, 15,244,175,223,255,237, 79,158,250,237, - 17, 36,183, 84,208,211, 96,168,135, 20,251,246,227,180,245,238, 55,166, 47,249,238,175,254, 2,250,143, 63,252,103,233,117,223, -240,133,244,226,107,246,211,129, 62, 2,127, 90, 89,210,107, 94,246, 76,250,209,239,249, 42,250,165, 31,188,153, 94,124,221,213, -254,254,237, 95,253, 9,146, 79, 63, 48,242,217, 69, 65,120,180,189, 28, 65,121,191,253,123,199, 7,136,252,195,180,135,141, 93, - 46,112,236, 38, 26,247,169,116,126, 71, 46,211,235, 61,147, 65,191,245, 41,102,208,119,203,144, 93,236, 56, 68, 23, 70,231,186, -208,185,180, 87,134, 22,175,225,174, 29, 26,244, 93, 45, 29, 53,237, 85,103,131, 62,143, 75, 26,169,211,243, 15,237,187,233, 47, -126,225, 53, 95,189,121,170,183,145, 79,219,232,163, 99, 38,217, 20,234,122, 11,191,255,202,142,254,217,251, 63,245,193,191,250, -150, 7,254,206, 99, 39,151,239,234,223,254, 41,154, 26,189, 28,248,165,251, 62,243, 43, 15,126,102,235, 59,158,121,112, 99,177, - 20, 9, 18,220, 21, 7,251, 48,254,151,104,251, 61,127,143, 22, 95,246, 58,255,158, 47,122,225, 51,233,141,223,241,149,244,195, -127, 97,155, 62,254,200, 19,180,111, 99, 65,207,185,230,202,149,243, 89,254,214,207,210,246,175,255,179, 49,234, 31,189,142,210, - 59, 24,203,218, 7,236,117,236,235,254,214,119,221, 55,168,212,124,102,143,141,250,133, 44,242,148, 66, 29,234,182,151,138,103, -189,195,113, 63,156,223,142, 16,190,103,209,164,191, 28,174,247,114, 50,232, 23,108,236,180,121, 11,206,215, 59,207,243, 24,119, -192,247, 15,247,231,124, 75, 77,135,119,120,158,135,119, 57, 59,177,147,243, 57,118, 1,247,127, 54,232,243,184,172,141,250,226, - 69,215,236,127,217,161,253, 29,157, 28,216,100, 67,212,221, 71,231,251,170, 80,221,207,244,250, 95,248,216,209,255,243,237, 15, - 14, 97,247,127,213, 69,248,132, 26,211,238, 15, 62,189,249, 43,111,253,192,241,247,253,213, 47,189,246,198,237, 83,203,222, 25, - 40,154,134,239, 35,246,131, 87,209,242,215,255, 41,201,201, 79,210,226, 53,175, 35, 62, 24, 98, 52, 7,122, 99,254, 34,136,202, -125, 12, 41,247,255,242,147,180,253,190,255,135,120,168,189,247,198,156,134,148,123, 31,173,211,214,246,168,113,243,174,223,126, -240,227,191,252, 91, 15, 13,169,241,211,123,101,212,155, 22,159,231,179, 49, 28,109, 22,243,158,181,182,188,192,113, 20,162,152, -161, 97,202,145, 29, 40,230, 29,185,140,175,247,178, 48,232,107, 84,245,206, 23,155,144,245, 2,206,179,102,219,212,227,135, 90, -252, 13,231,169,127,126,104,135, 32,187,118, 46,221,251,148,184,255,147,140,237, 13,187,116,172,217,160,207,227,146,140,179,165, -223,187,223,122,232,228,135,126,111,115,185,125,240, 96, 71, 7,183,150, 52, 96,227, 30,239,170,252,249, 55,223,255,211,189, 65, -255,254,254, 61,239,239, 95,159, 84,131,174,237,211,198, 38, 47, 15,253,253,255,240,208,189,143,246,159, 89,244, 47,218,170, 19, -106, 78, 69,105,232,202,171,168,222,247,111,104,243,173,223, 70,203,255,250, 86,146,199,126,127,253, 66,120,226,225,254,125, 71, -105,243,109,223, 65,219,191,246,143,122,171,127, 96, 84,148, 35, 69,225,113,217, 32, 30, 64,118,157,208, 15,252,204,175,189,173, -255,200,239,232,247,239,186, 81, 7,222,242,121,111, 62, 74, 67,194,205,240,142,115, 68,186,151,122,180, 74,102,119,236,224, 94, -220,113, 25, 95,239,153, 12,250, 49, 58,187,102,193, 57,157,190, 70, 98,248, 72,115,207,206,119,190,189,161,137, 94,119,108,236, -128,182,229, 70,228, 2,231, 5, 53,206,217,249,142, 59,118,112,158,248,158,163,123,216, 56,229,248, 78, 35,112, 61,175, 93, 1, -200,173, 49,232, 23, 53,207,230, 49,143, 11, 53,234,244,169,199,183,127,245, 91,126,250, 35,119,189,249, 67,159,254,208, 59, 62, -126,226,161, 31, 61,246,240,177, 47,255,135, 31,252,219,247, 30,123,228,239,208,212,250,114, 72,185,159,164,220, 64,101,248,251, -201,223,121,248,212,191,249,193,127,255,241,183,111,244,145,190, 60,190, 61,210,222,198, 28, 60,235,235,224,211,137,182, 31,165, -173,119,255, 80,111,220,255, 28,109,254,235,219,104,251,221,119,211,246,127,250, 7,180,253,203, 63, 66,155, 63,255,215,104,243, - 45,223, 74, 91, 71,239,236, 63,255, 64,239, 8, 92, 61,137,210, 24, 4,174, 22,146,211, 76, 27, 7, 10,253,147,163,191,253, 91, -255,238,191,252,254, 79,211,148,122,223,218,237,232, 92, 35,166, 65, 8,228,112,179, 65,156,207, 70,137, 94,249,212,249, 9, 54, -253,157, 24,138,189,154, 4,154, 26,199, 40,238,200,153,164, 73,129,242,117,232,114,189,222,179, 24,244,215, 94,100,153,192,218, -117,218, 11,231,203, 64,129,124,251, 78,148,225,160,141, 46,222,227,243,149,198,189,249, 98,163,223, 93,146,141, 61,114,166, 54, -168,107,208,232,180,199, 25, 29,188,150, 91,207,212, 82,245, 12,116,179,221, 52,232,175,253, 44, 0, 29,206,227, 41, 58,206,150, -126, 31,140,227, 35,255,241,254,207,252,223,253,107,152,224, 87,169, 17,255,120,255,122,180,127, 61,174,239,105,101,197,172,223, -250,199,127,228, 29, 15,190,241, 85,207, 63,248,226,111,125,229, 51, 94,122,242,177, 77,226,167,239, 35,218, 95, 38,165,185,225, - 99, 27,125,164,221,191, 70, 4,251,167,222, 79,219,159, 56,230,135,227,210,159,218,162,127,255,149, 79,107, 86, 73,255,218, 92, -246, 31,185,130, 14,236,223, 71,199, 62,252,208,241,191,246,143,254,243,221, 26,165,183, 14,198, 78, 55,248, 11,105,213,122,219, -249,108,178,170,150, 54, 24,186, 55, 53,134,110, 72, 77,174,211,171,182,212,167,109, 44,123,237,217,223, 67,185, 29,230,173,106, -132,239,129,115, 59, 66,129, 32,190, 95, 29,155,195,151,219,245,234,117,173,139, 58,223,124, 30, 83,225,222, 11,224,174, 31, 81, -135,201,218,125,222,223,220, 7,107,107,219, 26,207, 99, 23,192, 32,192,235,187,255, 34, 80,222,247,194,249, 12,156,245,155,215, -116,119, 59,215,103,111,213, 84,246,153,230,146,207,193, 11,228,195,159,207,181,220, 10,243,241,189, 67, 23, 55,138, 86,192, 38, - 44,133,231,117,239, 5, 58, 51,150,190, 95, 63,207,178,130,222,185,206,121,230,174,207, 99, 87,140,250, 82, 13,247,182, 26,241, -162, 63, 59,173,175, 37,157,185,111,249,240,153,199,171,200,111,252,165,159,249,200, 15, 60,227,202,197, 15,254,119, 47,189,250, -185,167, 30,221,236, 93,131,222,144, 31,232,130,191, 62, 89,112,162,125, 7,206,206, 67, 27, 69,105,250,255,157, 94, 82,237, 29, -132, 43,158,125, 29,125,224,193,227,143,223,114,215,127,184,235,209, 39,182,222, 5, 78,198, 94,143, 99,106,208,207,123,147, 28, -140, 0, 8,216, 28,194,141,254,201,158, 8,202,137,190, 69, 35,148, 27,154,200,179, 29,195, 6,120, 11,157, 35, 61,249, 84,190, -222, 53,227,124,163,178,139, 49, 62, 55,208,206, 83,217,247,156,175,131,163, 17,232,225,139,137,210, 33, 90, 95, 39, 27,123,239, -121,172,149,163, 20,109,139,223,112,142,251,185,167,142,171,202,209,162,163,105,206,207,173,103,201, 54, 93, 40,242,255,169, 48, -207,230,241,135,112,148,115,152,209,193, 56, 63,161,155,248,208,126,244,211,253,235,132,254, 92,206,241,217,193,240, 63,250,216, -201,229, 59,255,204, 61, 31,250, 95,254,217,175,125,234,131, 7,246, 21,218,120,108,139,234,163,189,237, 29, 16,245,122, 20, 30, -254,227, 53, 47,253,111,116, 31, 54,251,104,254,177,109,226,227,167,233,138, 67,159, 67,239,188,255,209,143,127,205,247, 29,253, -190,251, 31,122,252, 95,234,185,157,160,189, 67,189, 31,213,205,245, 22,109,196,113, 49,250,223,195,113,110,212,227,237, 36,210, -191, 87, 55,151, 61,247,214,181, 41,204,141,231,248,174,225, 94,236,248, 30, 60,149,175,247, 18, 15,171,163,238,116,238, 12,247, - 97, 40, 7,220,118, 1, 37,129,155,215, 56, 6, 23, 27,225,250,177,207,209, 69,173, 53,164, 99,103, 67, 58, 51,200,111,108,114, -211,191,239,146,164,164,161,165,234,253,231,156,227,179,186,219, 60, 46,195,193,103, 74, 55, 50,239,138,126,203, 32, 59,119, 80, -189,221, 47,248,139,175,185,246,187,254,143,175,125,238,159,124,238,213,251, 22,219,167,133,182,135,182,172,125,212,206,139, 50, - 69,238, 5,190,115, 56,175, 65, 91,102,187,183,211,167,150,212,109, 85,218,216, 96,122,172,255,217, 15,189,235,145, 95,252,187, - 63,119,223,155,182,150,245, 87, 41,168,116,219,201,171, 56, 75, 26,117,151,174,109, 87,134,166,130, 91,239,125, 76,109, 95, 64, -207,246,221, 60, 47, 75,135,163, 88,199,209, 29,118,131,187,236,174,247, 73,122,238, 55,208, 42, 54, 97,108,250,242, 84,166, 0, -158, 35, 75,240,118,200,196,220,137,136,123,205, 32, 28,105,158,251,209, 39,171,190,172,233,241,195,205,249, 28,219, 67,160,222, -133,206,149,217, 82,205,227, 41, 99,212,205,176, 31,232, 95, 3, 87,237,250, 23, 92,179,255,171,110,253,138,107,255,244,183, 31, -126,230,151, 60,239,170,141,141, 65, 26,118, 56,135,218,127, 95,133,175, 28,100,224, 75,255,115, 86,142,251,167, 78, 45,235,191, -120,255, 35,191,241,166,247,124,226,231,126,253, 99, 79,252,124,255,211,223,211,204,193,201,214,160, 95, 78, 70,125, 30,243,248, -172,114, 86,206, 98,212,231, 49, 27,245,121,236,253, 88, 92,130,239, 24,146,231,150,178, 63,245,187,143,156,126,203,223,250,217, -143,189,251,239,190,227,193, 47,254,146, 23, 61,237, 75,254,236, 43,175,121,245, 43,159,123,240,217,135,246,119, 87, 94,185,224, -125,139,194,165, 15,206,229,196,178,110, 62,186, 89, 79,124,248, 19, 39, 31,190,247,125,143,252,151, 95,190,255,241, 95,249,131, - 79,111, 14, 81,204,192,127, 27,154,169, 15, 53,244, 61,227,164,207, 99, 30,243,152,199, 60,230, 49, 27,245, 51, 56,155,253,107, -211, 12,251, 96,144, 31,121,124,251, 15,254,237,111,126,250, 93,253,235,154,254,223,215, 29,220, 95,158,113, 96, 81,158,190,209, -241,190,237, 42,219,167,182,229, 51, 39, 78, 47, 63,213, 59,169,159,160, 41,197,254,152, 58, 7, 79,208,185,129,122,243,152,199, - 60,230, 49,143,121,204, 70,125,143, 13,251,200, 97, 87,163, 60, 68,218, 67,250,252,161,254,117,223,137,211,117,209,191, 58,120, -255, 16,129,111,233,107, 83, 63,179, 61, 27,243,121,204, 99, 30,243,152,199, 60,158,124,163,222, 26,119,163,199, 13, 5,238, 2, -127,162, 81, 23,248,115, 54,228,243,152,199, 60,230, 49,143,121, 60,197,140,122,107,224,205,112, 19,229,150,169,179, 17,159,199, - 60,230, 49,143,121,204, 99, 55,140,250,147,132,184,156, 13,249, 60,230,113,121,143,129,211,110,212,196, 99,243,237,152,199, 60, - 46,237,224,153, 46, 49,143,121,204, 99, 30,243,152,199,103,199, 40,243, 45,152,199, 60,230, 49,143,121,204, 99, 54,234,243,152, -199, 60,230, 49,143,121,204, 99, 54,234,243,152,199, 60,230, 49,143,121,204, 99, 54,234,243,152,199, 60,230, 49,143,121,204, 99, - 54,234,243,152,199, 60,230, 49,143,121,204, 70,125, 30,243,152,199, 60,230, 49,143,121, 60,229,199,226,203, 14,127,249,200,105, - 43, 92,168, 20,109,137,198, 50,117, 50, 19, 82, 57, 24, 38,251,103, 98,146,247, 63, 44,180, 74, 46,159, 62, 54,124, 70,244,151, -147,166, 12,235,159,162,159, 24,223, 39,170, 60,195,211,187, 86, 41,118,241,111,118,109, 26, 38,109,196,174,223, 51,117,106,213, -238,235,227,223,135, 3,251,161,152,244, 61,250, 57,137, 99, 11, 51,173,244,108, 75,215, 56,125,150, 36,206,157,253,251, 89, 15, - 39,112,110, 2,239, 43,254, 51,198, 3,234, 29,176,195,142,191, 27,186,213,145,158, 51,199, 59,147, 30,143,255, 78,224,239,249, -196,135,243,152,158,147, 62, 67,189, 55,178,246,194,252,241,250,119,137,254,127, 60,142,216, 79,194,247, 99,189,108,246,251,171, -159,100,129, 39, 20,231, 48,252, 87,216,238, 24,143,231, 36, 50, 93,127,149,169,219, 46,235, 9,248,251,196,167, 87,124,111,153, -158,238, 56,165,244, 30, 72, 29,230,142,244,199,153,186,249,225,147,236,202, 32,194, 80,188, 35, 31, 83,204, 21,210,115, 26,126, -184,148,144, 51, 28,206,167,235,191,160, 12,191,215,185, 88,117,210, 47,251,239, 26,214, 71,167,247,106, 60,215,113,254, 79,127, - 14,223,103,243,143,241, 61,210,222, 99, 34,184, 27, 49, 7,244,190,250,122,211,103, 21,107,134,210, 12, 43, 58,139,134,249, 91, -116,210, 8, 60,199, 88, 20,250,121,157, 15,130,235, 90, 68,103,230,244, 60,236,190,139, 79, 49,209, 53, 67,240,251,233,220,252, -189,122,226,211,239,245,189,172,175,161,123,114,149,241, 25, 23,102,159,125, 2,243,186,234, 92, 24, 78,107,252,187,192,115,215, - 27, 34,253,131, 30,158,195, 82,127,191,212, 47,175,112, 67, 36,118,133,241,252, 42,254,160,185,119, 62, 31,216,158, 41,251, 92, - 37, 61,231,113, 62,226,106,133,133,201,120, 92,125,128,204,120,220,216, 23,200,183, 84,134, 85, 79,249,196,154,231,230,123, 18, -115, 28,143,113, 71,144,118, 25,251, 94,138,123, 66,177,207, 72,172, 87,189, 52, 95,131,220,236,176,184, 67,216,123,112, 82, 84, - 93,215, 85,159,193,248, 30,184,119,176,217,164, 97,251,239,180,119,192, 74,104,182,116,138, 37, 48,205, 77,145,124,203,216,206, -205,148,203,236,186, 38,225, 81,219,227,237, 90,137, 4,254,148, 52,199,241,185,250,254,232,166,133,253,235,198,115,238,111,230, - 48,135,139,206, 73,246,103,100,231,133,119,114,250,158, 56,199, 56,207,241, 29, 85,215, 77,157,238, 93,126, 8,186, 25,136,221, - 39,209,121,192,107,182,252,120, 62,248,172, 22,217,160,219,188, 10,227,158, 62, 44, 48,169,117, 75,242, 7, 32,226,155, 51,249, - 3,167,213, 9,140, 22, 74, 98,194,227,147, 98,203, 33,152, 97,162,180, 15, 77, 70, 7,118,124, 22, 56, 27,156, 36,246, 75,191, -239, 18,198, 12, 22,137,200,234,164,105, 23, 77,108,199,240, 5, 18,134,212,222,104,199, 42,110, 26,237,196,107,108,214,112,155, -216, 38, 4, 79,134,196, 39,173,253,158, 5,254, 14,150,142,153,214,117,144,101, 48, 25,163,115, 6,207,140,209, 56,235,255, 43, -126,142,115,250,134, 97, 46,136, 59, 38,122, 20,150,244,104,197,157, 13,155,128,146,159, 89, 63,191, 22,220, 56,117,130, 27, 80, -193,125,107,186, 62, 48,136, 29,199, 38, 87, 56, 12,200,176, 80,151,186,160,211,181,234, 6, 98,198,132,193, 9,173,163, 81, 47, -212,245, 63,221, 24,223,163,102,102,216,120,185,234,137,137, 26,207,233,186, 55, 96,205,143,139,187,216, 83, 70, 67, 63, 24,137, -162,198, 32,206,149,196, 54, 88, 74,107,102,188, 36,137,249,128,142, 15,131,249,225,100,138,100,101,126,134,127, 25, 75,191,250, - 28, 36, 10,143, 60,230,197,244,243,226,134, 93,124, 74,135, 99, 41,234,216,185,145, 55,195,172,127,247,249, 62, 28,143,197, 55, - 85,189,125,227,231, 23,157,206,166,254, 25, 9,108,128,195, 87,143,207,168, 63,203,170,247, 96,116,162, 6, 71,141,101,124, 70, -230, 12, 87,158, 2, 4,174, 60,254,174,168, 23,180,148, 28,112,132, 67, 16, 78,147, 8,220,107, 14,163,203, 44,104, 83,199,187, - 85,235,180, 32, 11,231,109,192,230,115,236, 23, 53,238,171,221, 55,120, 14,196,178,178,229,177,175, 23, 73,235, 88, 56,187,239, -213,238,107,114,253, 98,111, 98,162, 21, 47, 69, 40,156, 51, 55, 48, 50, 57,172,195, 76, 24,142, 96, 6, 45,246, 58, 48,216,212, - 56,119,246,123,137,223, 78,159, 21,253,121,126, 95,118,150, 24,130,152,112, 78, 4,182, 76,105, 54, 86,150, 53, 27,175,128, 50, -184,196,254, 84, 99,114,170, 67, 79,186, 15,180,198, 62,230,109, 37, 56,239,244, 85,225, 44, 69,112,225,187,185,206, 19,221, 55, -212,137, 55, 71,190,221,124,195, 33,215,199, 32,211,185, 78,206, 6,249,119,143,115,188,155,246, 42,233,154,128,205,246, 89,136, -246, 88, 98,175,229,216, 36,146, 61, 30,191,161,214,241,179,195,255, 23,165,176,123,110,165, 20,194,233, 36, 48,111, 71, 47, 75, -208,224, 83,114,143, 91,131,202,226,211, 12, 2, 76,120,244,104,148,241,115,248,112, 25, 38,134,164,103,176,250,252, 25, 12,141, -197,101,220, 60, 59,243,192, 56,187,236, 5,139, 17, 16, 9, 90,244, 39,232, 45,226, 82,144,213,240,126,184,159,165,153, 92, 30, -203,195,198, 43,201,105,178,251,144, 61,229,194,173,115,193,144,113,128,251, 37,152,173,136,239,100,120, 95,225,200, 6, 20,142, - 37,183,178,129,241,100, 96,109,153,115,202,100, 72,242, 40, 69,141,123,236,163, 28,243,195, 38,167, 71, 28,156,188,112,187,127, - 85,239, 71,129,223,143, 81,121, 19,217,226,121,248, 70, 33,147, 57,234,250,121, 59,254, 93,224, 62, 37, 7, 10,156, 1, 48,172, -104, 96,109,130,244, 38,218, 55,148, 58,156,221, 16,189,219,247,143,206, 5,251,115,152,238, 95, 68, 83, 5,238,231,104,224, 41, -126,215,161,163,148,214,141,172,108, 14,204,197, 55, 70, 94,227,107,166,117,169,215, 25,134,135,194,152,233,245,143,191,109,140, -119, 60, 74, 78,155,161,109, 38, 17, 93,112,108,146, 30,217,135,177, 23, 61,126,181, 89, 55, 94,252,176,153,113, 90, 45,163,203, - 10,199, 45,130, 65,206, 52,121,171,125,253,120,191,166,251, 89,221,237,236,157,165,206,162,157,233,147, 27,122,126, 12,207,175, - 74, 60,219,149, 4, 87,147, 1,227,198, 73,234,250, 77,118,112, 42, 24,182, 55, 17, 73, 71,178,235, 95,170,186,181, 80, 14, 40, - 10,172, 67,139,180,196, 50, 26, 50, 57, 51,147,195,202,227, 60,151, 20,111,209,116, 95, 52,123,217, 58,237,133, 96, 79,173,248, -123,140,104, 57, 12,182, 25, 60, 48,202,152, 9, 21, 48,238,126, 14, 2, 89, 27,248,157, 88,230, 65,154,125, 15, 51, 22,238, 64, -163,195,178,154,108, 36,207, 6, 82, 24, 37,145,118,219,247, 8,187,216,252,194, 12,147,228,243,146,106,142, 85, 56, 28, 85,150, -112,111,117, 13, 23, 78,251, 45, 53, 6, 28,141, 55,169, 3,111,182,132, 57,246, 50,134, 12,182, 69,213,150, 5, 28,231,113,149, - 49,163,180,172, 97,228,253,126, 87,113, 7, 58,219, 64, 78,247, 65, 32, 47,199, 12,171,157, 37, 69,230,195,218,174,144,173, 94, - 20,184, 64,155, 98,131,199, 26,155,139,110,214, 26, 29, 79, 49, 0,187,193,176, 3, 69,148, 38, 43,233,241, 48,188,106,124,106, -108,104,110,200,212, 50, 51,230,177, 96, 54, 88,186,145, 53,156, 77, 81, 44,155,183,167,209,135, 26, 20,255, 17,156,207,100,236, -112, 29,228,236,130, 27, 87, 14, 87, 47,210, 32,182, 65,174,139,226,155,180,182, 70,154, 53, 61, 20,114, 15,159, 5, 82,176, 80, -218,224,182, 76,193, 28,145,152,196,218,245, 84,144,230, 98,205,185, 19,209, 8,134,241,222,169, 81, 43,156, 50, 20,118,255, 10, -184,153,204,217, 51,102, 76, 9,193,164, 19,129, 20, 49,135,225,133,105,152,178, 9, 12,199, 23, 72, 7, 23,119, 0, 56, 69,211, -118,150, 37,127, 90,231,140,221,185, 49,220,155, 54, 45, 48,118,195,117,117,227,247,151, 40, 23, 80, 68,103,113, 68,184, 70,157, - 3, 21,114, 23, 67, 44, 95,212,105,233, 10,107, 65,197, 34,115,245,218,213,120,155, 51,103,206,119,193,247,132,233, 12, 67,143, - 70, 70, 36,151, 26, 56, 28, 53, 18, 88, 71, 41, 82, 99,207,185,242,184,221, 67,182, 44, 21,120, 24, 28,203, 72,161,231, 8,111, -250,123, 50,196,162,169, 76,198,247,176, 27,133,136,226, 57,140,187,222,222, 33,115,210,105, 52, 30,145,149, 26,184, 50, 57,114, - 34, 77,170, 97,216,140,224, 25, 22,221,123,134, 59, 86,237,169, 12, 14,134,206,245,186,146,200,183, 53, 18,169,119,243,243,151, -169,252,196, 41, 83, 42, 77,134,119,124,142, 16,118,187,115,100,137,125, 77, 7, 20,219,165,173, 12, 5, 89,168,194,217,144, 77, - 27,126,153,230,132, 62, 91, 72,244,249,140, 27,239,183, 6, 22,197,253, 43,105, 2,243,216,127,184,241,179,101,197,218,114,206, -166,233,125, 19,176,248,246,119, 81, 67,148,162, 74, 8, 59, 43,126, 31, 58,250,220, 62, 69, 74, 6, 93, 56,175,123, 43, 5,180, -233,228,200,222,197,131,177,223, 47,209,241, 5,135,197, 83,239, 77,246,218, 3, 44, 42,201, 9,182,204, 99,172,165, 40, 7,132, - 49,167,100,212,219,247, 82, 74,201,151, 53,251,255, 52,255,134,140, 31, 87,141,200, 9, 50, 57,195, 62, 82,214,167,134, 33, 23, - 4, 78, 21,222, 96,142,108, 24,100,112, 45,184, 50,103,103, 81, 56, 71,205,195,173,232, 10,120,168, 66,145,124, 98,140,178,167, -213,192,201, 0,115, 68,194,196, 43, 81,168,111, 13, 37, 60,101,129, 52,155, 71,200, 77,105,134,121,117, 2,141,229, 2,136, 68, - 69, 96,193,106,164, 73,140, 11,162,172,250, 10,152,130, 55,195,194,148,235, 43, 77, 93,179,164,243,136, 40,126, 74, 9,194, 6, -170,147,175, 27, 83,156,145, 58,182, 7,230, 89, 0, 76,236,149,105, 97,217,121, 12,155,236,184,184,139, 46,190, 66,238, 61, 70, -202, 95,220,136,216,195,182,148, 19, 75,212,130, 24, 34,127,223,212, 56,188, 1,187,254, 2,179, 54,162,123,115, 64, 20,131, 32, -225, 32,165,103,228,233,239, 48,190,177, 52, 75, 78, 51,115, 78,151,162,113, 47, 66, 77,153, 71,235,155,120,221,240, 28, 58,153, -210,178, 4, 53,237, 66, 80,199, 5,231,178,112,202,229,128,179, 18, 89, 7, 75, 51,122, 52, 78,150, 86,159,158,203, 66,207,163, - 88,228,174, 24, 20,143,210,201,106,237, 83, 73,165, 88, 20,103,231, 39,120, 78,154, 81,225,108,156,160,162,183,130,239,224,180, - 75,114,206,202,123, 61, 55,140,176,173,130, 97,179,169, 44, 9,129, 17, 27,228,228, 26,248,103,224, 24, 44,144, 97,146,168,209, -143,243, 21,106,197, 98, 62,166,104, 74, 93,166,103, 80, 97,166,216,249, 87,216,200,164,194, 78, 9,207,190, 43,134,193,224, 28, -129,233,170, 17, 41,250,239, 26, 43,124, 40,171,232, 4, 31, 82,159,246, 92,198, 84,168, 93, 11, 24, 99,150, 92, 59,183, 77,188, -106,100, 91,154,108,130, 27, 99, 2,195,204,240, 30,116,190, 74,137, 44, 81,137,249, 45,128, 35, 24,174,205,157, 82, 72, 15,139, -228,148, 62,227,186, 45, 77,101, 94, 34,136, 32, 89, 13,241, 69,247,163, 42, 24,177, 7, 46, 69, 96,191, 10,103,111, 93,109, 28, -231,169,192,116, 99, 48,226,109,169, 32, 48, 23,246, 63,143,250, 61,211, 35, 9,121,132,206, 73,197, 32, 81, 2,127,226,126, 34, - 56,111,145, 89, 44,190,190,132,172,172,201, 41, 34, 71,131,206, 24,136, 17,135,125,210,231, 80, 88, 34, 53,143,129,138,167,221, - 4, 12, 46,141,198,188,154, 67,211,133,109,178,183, 21,199, 43,173,150,209, 8,237, 71,141,185,225,115, 79,116,245,212,240,232, -198, 57, 90, 35,253,185,176,186,164, 27,119,191,200,236,245, 71, 68,139, 73,171,180,203,164,136, 7,103, 29,167, 84, 50,231, 9, - 33, 12,222,159,120, 29,220, 38,169,195, 24, 82,109, 87,255,110,168, 41,161,214, 53,246,205, 56,101,142,113,255,147, 12, 80, 41, -232,105, 83,118, 24, 56, 69, 3,156, 82, 91, 98,233,153, 2, 94,175,166,214, 28,188,149,192, 82, 76, 57, 73,142, 48,186,254,111, - 93, 89, 73,191,155,129, 71,224, 70, 74,239,235,239,113,162,238, 91, 83,127, 75,152,142,113,179, 43,185,204,193, 43, 21, 12,207, - 42, 88,242,150,225, 89, 89, 68, 94,210,166,214,150, 18,204,104,113,204,129, 38,211,225,155,150,101, 52,244, 2,221, 91,206,110, -190, 71,236, 29,100, 43,208,147, 22,187,119,220,148, 78, 36, 47,106, 75,253,217,117, 5,234, 64,220,227, 40,234,176, 21, 77,173, -118, 35,254, 4,140,183, 70,232, 5, 34,242,130, 6, 94,196, 61,127, 78,128,201, 56,134,164,123, 32,107, 82, 64,195, 23, 86,200, - 57, 97,210, 87, 50,184,105, 0,255,233,130,239,108,222,168,147,215,217, 17,164,122,164, 84,245, 58, 45,189,105, 78,230,180, 17, -139, 59,147,211, 86, 2, 53,118,116, 8, 36,167, 91, 69, 8,162,137, 41,242,245,244,169, 58, 13, 83, 54, 76,103, 72, 97,127, 54, -182, 23, 21, 12, 2,166,208,125,204, 32, 86,157, 79, 2, 37, 34,139,230, 11,236, 87, 34,185, 22,222, 89, 9, 4,162,196, 12,226, -130,115,119,252,137,228,242, 46,163, 81,194,116,172,174, 9,230,198,191,154,230,135,101,137, 24, 2, 34,204,106,141, 64, 64, 50, - 71, 98,114,114,204,249,242, 0,137, 37,213, 87, 5,246,179,182,156,110,166, 16, 83,211, 67,246,164, 86,168,135,235, 69,212, 53, -233,120, 2,227,215, 64,107, 51,166, 39,239,230,171,165,106, 40, 97, 32,162,164,194,206,103,153, 10,241,107,147, 6, 60,199,105, -223, 44,238, 32,101, 0,172,225, 86,248, 12,217,193, 48,232, 77,233,146, 41,165,210, 89, 56,239,151, 5,174,219,239, 55, 96,179, -212,225,173,122, 35,108,189,133, 19, 11, 40, 39,155,231, 16,216,162, 93, 98,205,136, 76, 54,153, 61, 48, 35,116,194, 0,211, 80, -205,161, 54,160, 98,157,246,232,133, 45,224, 10,105,218,132,210,100, 52, 58,250,160,121,125,238,217,128,104,133, 27,208,157, 80, -147,122,101, 79,149,121,125,152, 48,221,175,199,226,240,192, 48, 83, 32,224,104, 8, 71,234,150, 97, 2,120,157,147, 17,184, 53, -149, 22, 4, 82,236, 81,255, 66,116,175,109,100,188,130, 90,143, 8,118,213, 41,102,132,180, 83,142,198,170,192,125, 5,112,160, -213, 0,171, 4, 80,131,160,254,107, 0,144,194,232,113,138,130,150,166, 25,225, 95,167,145,102,160, 52, 5, 48,214, 96,236,168, -137,242,192, 89,192,115, 14, 67, 33, 9,215, 16,169,250, 72,162,217,220,169, 2,169, 46,189, 38,195,109, 48, 0,213,108, 99, 55, - 99, 92, 32,106,199,249,133, 27,100,199,232, 16,134, 49,181,133, 26,191,159, 28,150,113,126, 49, 32,243, 75,227,161, 67,244, 55, - 45, 40,241,164,157,221,139, 14, 54, 47,223, 52,172,102,206, 17,133, 21,221,112,212, 57,247,107, 43, 80, 63, 12, 32, 78, 56, 68, - 57, 58,111,192, 30, 88,107,131, 84,162, 88,253, 89,162,230, 61,221, 31, 43, 81, 77,169,116,115, 44,170,103, 16, 74, 68,213,122, -225,149,197, 29,217,201, 0, 27,128,114, 58,195, 49,186, 67, 99, 37, 16, 69,154,115, 33,158, 75, 25,235,152, 75, 70,244,111, 48, - 30,170,215,225,217, 81,230, 14,137,211, 96,128,137, 87,139,224, 86,218, 99,214,182,146, 17, 49,143,251,214,184, 6, 58, 63,199, -170,207, 61,230, 16, 0,164, 34, 15, 26,224, 47,150, 12,239, 2, 28,209,228,223,135, 67,194,250,240,121, 77, 54,210,192,198,146, - 88, 22, 78,223,112, 87, 2, 89, 30,211,181,151,126, 35,214,210,132,197, 41, 77,118, 34,130, 24,210, 50,137, 4, 99, 70,215,168, - 95, 15,248,228,213,144,234, 99, 42, 88,178,247,162,142, 30,154,109, 65, 39, 5, 35,113, 48,142,109,128,185, 66, 85, 49, 67, 14, -243,166,182, 44, 5,110,114,168,186,159,113, 97,207,136,133,227, 16, 14, 83,251,243,246, 41,100, 6, 74, 32,127, 87,210,232, 88, -246, 77,123,182, 36,188, 74,193,140,100, 19, 37,153,243, 90, 43,172, 75, 4,228, 73,100,118, 45, 96, 41,148,113, 63, 81, 91,103, -159,135, 35,144,119, 41,144,199, 54,246, 66,102,151,144,165,247, 21, 16, 61,101,197,234,180, 70, 24,162, 18,243,234, 83,106, 2, -235, 58,176,230, 74,138,122,128,234,226,155,166,214,213,106, 51,217, 24,234,235,162,145, 92,129,135,100, 57, 22, 17,159,172,204, -145, 38, 36, 72,211, 23, 77,111, 79,105,147,140,128, 23,143,196,162,150, 85, 74,190, 14, 96, 49,120, 58,135, 82, 36, 31,121, 98, - 79,183, 11,162,193,201, 35, 4,187,110,105,192,109,136,190,198, 61, 91,180, 6,107, 70,205,162, 97, 1,195, 88, 0,156, 24,115, -106, 50, 7, 75, 69,225, 70, 93,136, 82, 70,133, 20, 81,206, 45, 32,208, 83, 73,146, 60, 98,191, 38, 48,174,150, 93,106,169,111, -182, 56, 58, 78, 60, 8,175,235, 14,143,165, 32, 40, 9, 29, 33, 18, 44,222,171,113, 81,195, 84,216,157,163,201, 25, 16, 77,129, -149,148,150,102,141,190,166, 20, 55, 43,208,211, 12,136,126, 54, 2,110,189,215,172,181,227,233,107,187,142, 61, 90,137, 58,174, - 56,192,174, 51, 58,137, 71,225,122, 93, 14,168, 25,230,110, 25, 83,243,108,105, 58, 45, 31, 20, 68, 2,115,170,238,233,253,176, -147, 43,193,230, 72,204, 14, 52, 48, 2, 78, 36,214,228,217, 61,119,134, 40,121,169, 0,194,194,156, 0, 57, 78, 31, 29,140, 59, - 87, 63,230, 18, 92,121, 95, 0,117,186,211, 27, 93, 73,128, 49, 86,131, 63, 45,231,162,231, 84,192,136,151, 49, 59, 49,172,219, - 42,144, 92,129, 20,205,144, 22, 23, 71, 37,103,194,103, 98, 85,104, 38,174,232, 92, 90,208, 84,155,246,154, 63, 75,206,192,177, -213, 95, 99,173, 14,255,218,178,247, 58,118, 96,218,243,138,214,186,209, 73,136, 52,103, 0,181,136,195, 25,163,222,121,136, 4, -101,206,230,149, 6,123,194, 92,146,129, 64, 50, 85,193, 77, 93,191,179,106, 20, 91,189, 62, 26, 70,219,172,202,132,254,135,122, - 42, 82, 14, 57,211,108,199,121, 61,188,106, 85,119, 78, 2,251,144, 64, 29, 88, 54, 5, 70, 79,115,141, 2,120,151,228,112,227, -121, 50,166,208, 17,225,158,163,215, 64,189,175, 98, 15,176,174,205, 80,214, 96, 94,165,135, 6,131,136, 82, 90, 60,131, 96,129, - 58,218,100,140,253, 30, 87,201,199,133,160, 40,147,125,193, 14,217,156, 7, 67, 62,101,253,244, 58, 75,209, 61,196,102,100, 25, - 29,110,204,224, 90,109,220, 50, 94, 69,231,231, 82, 51, 99,198, 52, 50,251, 84, 36, 50,216,195, 70, 52, 57, 18,101,220, 79,150, -106,220, 23,206, 55, 47,211, 54, 84, 74, 84,187, 17,111,236,188, 92,182,104,172, 36, 80,211,116,103, 75, 70,193, 91,148, 89,192, -235,109, 96,235,211, 67,140,132,162,123,157, 64,235,170,146,211,194, 14,246, 25, 83,106,101, 60,183,174,161,169,173,162,231, 97, -147, 67,220, 5, 11, 0,187, 32, 85,196,185,110, 59,188,107, 9,165, 4, 75, 93, 91, 68,140,245,241, 66,136, 4,141,122, 76,251, -221, 9,180, 5,155,142,164,146,129,128,115, 21, 84,175,201,232, 20,224,185, 34, 79, 57, 60,237,194,171,209, 31, 65, 58, 74, 52, -210, 49, 32, 24,166,171, 45,226,152, 82,203,178,226,157, 91,165,192,241, 18, 2,153, 30,142, 58,120,181,180,235, 0, 30,177, 26, - 42,208, 71, 44, 19,192, 80,202, 40,138,226, 52,132,121, 74,201, 26, 56,205,129,106, 80,118,209,235, 93,104, 54,104,201,147, 83, -233, 53, 84, 7,231,229,224,162,211,141,104,187,143, 52,221,155,214,250,172, 59,176, 84,220,192, 48, 96, 59, 74,131,176, 47, 8, -212,202,148,144, 84,126, 89, 5,255,181, 78, 83,161,228,158, 10, 37, 13, 4,230,182,166,162,165, 52, 42, 9,217,108,153, 17,187, -111,162, 40,127, 51,212,200,121,183,243,169, 37, 12,171,165,250, 82, 41, 14, 1, 94, 94,229,230,148,221,234, 40, 64, 76, 86,219, -180,140,224, 84, 14,224,224,252,121,129,148, 87, 25, 56,138,243,177,103,238,148, 58,168, 55, 10, 56,241, 85,162,238, 94, 45, 82, -243,140, 92, 73, 96,241, 41,179,210,112,247, 25, 0,173, 16, 20, 84, 10,218, 17, 98, 53, 10,212,117,141,214,104,169,114, 6,140, - 3, 97, 68, 13,215, 92,213,168, 12,127, 43, 94,106,171,126, 30, 85, 16, 20, 88,162,254,205,145,186,182,232, 94,146,193, 23, 0, -164,182, 98, 9, 88, 22,108,172,101,179, 7, 50,101, 70, 68,203,109,183, 52,103, 69, 92,147, 6, 89,142, 45, 18,172,201,115, 42, -103,250, 61, 46, 37,167,249, 89,146,241, 46,220,102,175, 50,184,140,145,190,138,107,172, 16,148, 59,162,204, 20,249,243, 72,195, - 11,170, 41, 88,198, 88, 50,144, 77,212,112, 27,143,158, 69, 60,235,231,193,165,239,207, 60,101, 89, 25,168,192, 33, 78, 18,207, -207, 74, 33, 85,241, 64,253,255,182,244, 1, 15, 24, 21, 67,188,219,164,173,186, 70,170, 34,236,141, 65, 48,166,223, 59, 46, 30, -221,224, 70,230,117,118,216, 44, 29,167, 1,209,232,178,165, 68, 73, 54,114,150, 86, 47,224,193, 5,136, 45,170,136,150, 70,116, - 47,185,106,109, 26,144,139, 82,193,248, 58, 48,132,129,244, 66,224,148,160, 95,108, 6, 76,143,167,128, 52,140,228, 43,166,215, - 37, 3, 34, 8, 0, 19,200,220,183,168,161,168,161,112, 35,168, 27, 46,210, 14,208,235,207,117,166,184, 71,190, 88, 56,248,151, - 9,203,156, 22,223, 68, 65,140, 8, 77, 82,221,201,193,118, 21,232, 28,232,125,115, 60,175, 82, 56, 34,121,155, 7, 37, 68, 53, -204,201, 27, 54,233, 5, 68,187,211, 36,171,186, 97, 14,148, 35, 67,127,199,245,111,203,228,112, 85,219, 14, 52,216,241,114,195, - 32, 18,163, 40,245, 2, 78, 72,135,243,173, 4,128,207,178, 27,139,148, 69,178,180, 40, 80,229,120,224,107, 14, 60,244,233,188, - 12,180, 85,160,124, 51,206, 49,189, 71,204, 19,168,106,255, 96,236,198,227, 83,166,217,113,160,222, 11, 8,104,148,148,150,151, -184,255,176,233, 21,230, 44, 90, 4,233, 68,145, 0, 20,226, 94,154, 32,114,236,112,187,241,119,219,117, 9,217,142,225, 25,118, -206,225,237,156,253,193, 32,104, 36,145,166, 21, 73,184, 16,155,161, 53, 17,226,160, 30, 11,155,152, 25,180, 40, 37, 73,142,108, -134,181, 40,145, 93,169, 6,230,246,239,116,206, 66,195,243,102,199,208, 36,254,140,129, 64, 97,222, 10,148,153,108, 83, 21, 72, - 83, 24,206, 1,179, 23,219, 85,130,255,139, 25, 52,201,130, 17,200,113, 47,137,179, 60,165, 56, 11,148, 80, 70,148,177, 81,239, - 10,240, 41,252, 51,211,220, 50,102, 9, 98, 22, 48, 0,112, 62, 51, 79,223, 58,214,190, 53,250, 50,195, 92, 56,156,129, 42, 1, -182,115,202,154, 70,246,108, 70, 66,163,224,162, 6,166,141,184, 83, 56,209, 96, 49, 37,237, 83,146, 82,179, 83, 68,203, 43,185, -119,214,115, 95, 4, 43, 24, 64,195,144, 41,229,112,251,152, 57,131,131, 0, 0,202,148, 29,136, 21,173, 19,225,140,225,106,153, - 33,190,103, 67,202,190,193, 14, 85,194,108, 76, 56,116,152,129,137, 76, 38, 39,129, 23, 14,175,169,201,200, 67,160,161,108,135, -209, 30, 89, 54, 25, 84,130, 12,131, 85,212,238, 77,152,144,222, 64,107, 0, 60, 36,210, 22, 60, 57,215, 46,236, 4, 40, 65,172, -171, 15,118,105,169, 0,161,193,246, 44, 54,186, 46,140, 34, 3,130,123, 48, 88, 30,253,150,100, 28, 25,235,114,190, 89, 51, 76, -248,168,185, 22,168,247, 86,137,197, 95, 52, 85, 84, 7,210, 60,136,134,116, 86,235,102,106, 12, 91,127,244, 46, 12,169,165, 55, -208, 11, 54, 49,130,142, 86,244, 97, 48,121,146, 60, 70,219, 46, 13, 53,137, 25,114,100,218, 51, 3,141,143, 37,170,200,238,121, - 5, 16,138,129,206, 97,136,211,186, 2, 38,137, 69,195, 14,138, 1,254,120, 42,210, 3,138, 91,116,143, 31,193, 65,154,154,166, - 48, 86,163, 66, 22, 77,142,217,152,130,238, 88, 51, 43,150,106,210, 77,171,144, 71,174,104, 68,138, 34,246, 55,116, 46, 44, 13, - 61,218,143, 83,189, 49, 57, 53,138,136,104,132, 87,194,145,216,208, 13,142,128,227,239, 17,167, 11,151, 72,176, 20,116, 1, 44, - 33,125, 60,156,203, 6,164, 44, 43, 5,122,188,227,136, 12,167,107,159,190,223, 40,103, 38,140, 50,122,205, 69, 28,145,187,232, -255,190, 49,214, 91, 39,241,155,241, 59,235, 68, 93,219, 26, 22,209, 40,214, 0, 4, 48,141,200,188,102, 95, 48, 91, 65,137,147, - 62,166,254,181, 20, 82,184,161,188, 8, 8,232, 64,184,209,150, 87,156,162,196,188, 30,144,132, 42,130,186, 33,109,240,130,194, -207, 55,148, 54,130, 61, 53,246, 54, 37, 51,243,238,101, 2,101, 97, 42, 19,105,106,184,150, 24,208,241,226,120,117,173,204,179, - 4,135, 29,132,122,204, 70,150,138,142,186, 33,172, 45,202, 45,171, 26, 15,156,179, 0, 81,198, 43, 64,173,148, 21,196,167,229, -182, 44, 19,179,212,181,159,140,130, 12, 37,132, 8, 38, 42, 82,222,120,114, 8,106,230, 19, 58,238,131,146,113, 98, 40,183, 77, -115, 96, 16,214, 89, 88, 6, 83,168, 1, 70, 33, 70, 37, 11, 74, 5,248,117,226, 50, 91, 38,101,188,140,126, 87, 95, 42,243,127, - 73, 1, 30, 52, 44, 64,161, 0, 32, 18,102, 90, 56, 59,144, 1, 12,105,197,184, 40,171,196, 49, 37,128,100,149,200,170, 58, 64, -214, 49, 4, 37,202, 24,173, 6,146, 3,131, 75,148, 95, 27, 67, 77, 43,101,196,196, 64,139,138, 75,163, 5,194,140,146, 88,224, - 57, 52, 92,239,150,190,140,224,103, 2, 26,158,149, 95, 70, 39, 16,116, 15,136,179, 19,224, 41,118, 88,187, 30,171,115,147,208, -213, 64,208,246, 11,211,116, 41, 37,241,155,140,113, 61,125,157, 57,192,195, 62, 58,130, 25,181,164,168, 89, 26,203, 48, 17,100, -202, 28,251,160,107,111, 40,255, 77,217,129,234, 2, 74,139, 33,154,145,132,122,167, 0,180, 16,114, 18, 33,205,164,155, 42, 99, -125,164, 68,234, 83,132, 87, 56,164,164, 27, 51, 65,218,200, 34,212,142,197, 35, 48, 55,192,131, 2,153,184,204,146, 59, 26,152, -234, 53,144,122, 17,240,204, 26,138, 94, 82,159,227, 21, 66, 99,166, 13,113, 0,189, 36, 69, 81, 25,112,193,171,133,119,247,164, - 71, 73, 81,137,180, 74,251,149,104, 72, 45, 77,202, 73,144,129, 27, 89,219, 72,227, 58,242,147, 25, 0, 52,224, 52, 97,234, 54, - 30, 86,186,175,120,237,142,204,133,109,107,161,128, 52, 3,127,237,227, 73,166,115,171,223, 57, 7,145,151, 69,255,222,173, 58, - 69,232, 83,217,163,172, 56, 30,251, 0, 24,103,124,211,165, 1,165,152, 28,141,188,193,161,110,134,180, 38,214,205,183, 80, 32, - 73, 43, 69, 54,161,148, 44, 19,234, 94, 49,141, 28, 77, 53,222,253,185, 90,136,110, 66, 72, 60,100, 14, 2,152, 85, 58, 30,223, - 35,181, 38,177, 23,166, 76,181, 43,118, 63, 96,243,198,159,101,208, 96,240, 81, 45, 61, 95, 5,152,222, 40, 26,209, 72,216, 58, - 91,192,210, 73,132,140, 59, 67,232,139,211, 15, 71,100, 21,242,124, 37,180, 20,166,107,162, 44, 27,172, 0,177, 42, 13,147, 70, -203, 43,146, 68,103,106,192,142, 36,202, 77,228,104,223, 41,187, 82,165,137,169, 70,197, 44, 90,225,198, 87,201,226, 83, 85, 40, -161,168, 5,106,187,220,176, 3, 8, 36, 78, 61, 67, 8,145,147, 69,111, 5,138, 87, 5, 36,121,188, 6,168,179,180, 2, 93, 73, - 28,116, 90,147, 81, 22,216, 59, 44,183,192,128, 76, 46,109,125, 22,121,208, 72,197,100,201,249, 54,225, 68, 5,181,210, 77, 85, - 33,195,174, 83,236, 67, 85,108, 2,212,246,151, 80,158, 27, 29,171,130, 34, 80, 5, 34,111,110,192, 12,226, 64,181, 40, 1,138, - 43,249,185, 90,160,144,227, 33, 66, 22, 27, 0,115, 32,152,211,178,135, 88, 83,220, 92, 64, 70,181, 21,157, 90, 9,167, 37, 9, -199, 33, 75, 41,105,124,175, 32,243, 36,201, 24,103, 52,136, 64, 89,132, 83,116, 78, 18,216, 16,209,192, 8,245, 18, 86, 20, 80, -157, 7, 47, 0, 1,130,140, 78,137,108, 78,176, 6, 80,203, 74,180,212, 8,242, 62, 45,149, 77, 69,179, 60,155, 92,131,222, 93, - 20, 99, 33,160, 72, 25,138,141, 17, 48, 88, 80, 80, 52, 35,186,224,210,173,168,232, 44, 5, 80,213, 38,126, 1, 8, 62,210,232, -194, 40,216,148, 36, 46, 56, 16,214, 43, 56,234,156,166,119, 20,162, 84,175, 23, 13,187,102,208,128,244, 86,116,173, 69,142,201, -197,112,209, 73,130,208,210,255,130, 17, 94,195, 59, 55,113, 25, 51, 18, 54,121,145, 2,209,128,220,164, 1,118, 24,162,124, 76, - 75,193, 2, 46,148, 65,115, 40,202,144,167,185,100,212,166, 1, 42, 40,138,116,133, 66, 35, 91, 0,180, 83,146,254, 48,143, 41, - 99,198,201,201, 0, 90, 76,245, 49,142,122, 42,164,164,189,122,203,192, 59,230,201, 73, 25,254,126,176, 76,139, 96, 99, 52,232, -197,235,116, 75,240,248,247,117, 81,107, 55, 14,238, 80,243,217, 2,222, 48, 3, 11,149, 20, 0,181,209,177,215,127, 55, 10,195, -166, 88, 82, 57,195, 0,150, 62,161, 75,200,201, 46, 0, 40, 57,165, 30, 5, 12,172, 56, 16,199,234,166, 62,129,134, 19,174, 33, -246,130, 32,157, 66,173,214, 59,164,209, 36,244,195,113, 35,143, 58, 57,235,249, 87, 16,105,162,182, 34,217, 4, 84, 5,194, 39, -129, 53, 38,206,217, 78, 10, 92, 9,116, 19,231, 72, 14,112, 67,174,114,113, 32,143, 36,225,111,224, 1,155,242, 92,147, 6,197, -232, 95,198, 52,191, 56, 90, 90,128, 79, 39,133, 18,248, 77, 72, 32,226,111,121,210, 28, 0,193,148, 34,150,140,153,147, 41, 43, -215, 74,157, 22, 48,204,145,158,111,176,208,133, 60, 69,143,207, 47,107,115,176, 70,199, 89, 48, 37,145,181, 0,232, 91, 97,234, - 20,247,191, 80, 51, 34,107, 72, 8, 53,250,226, 20,218,233, 46, 21,172, 72,121,115, 92,170,127,207, 20,201,141,233,254,113,109, - 23, 23,183,177, 0,222,128, 85,196,220,100,122,216, 17, 15,168,200,150,203, 43,130, 25,240, 70,201, 44,171, 2, 82,163, 16,137, -193, 82, 73, 84, 61,206,217, 38,202, 96, 79, 2,177, 29,228,154,155,248, 14, 3,117,176, 21,211, 9, 57,114, 20,169,145,204, 34, - 1,229,183,160, 2, 2, 91,200,179, 83, 28,202,115,210,158,103, 56,201,157,123, 96, 5,246,125, 78, 58, 1,228, 24,143,170,223, - 81,147, 96,168, 35,223, 9,128,110, 44,192, 10,145, 96, 42, 0,133, 45,148,117, 56,199,165,206,143, 87, 55,111, 25,207,115, 49, -214,114, 11, 39, 0,200,240,179,106,104, 72, 16,228,168, 28, 41,181,162, 0, 43,134, 72,158, 17,124, 65,109, 58,145,136,207,196, - 86,129,136,195, 37, 20,161, 78,198,171, 22,209, 63, 27,224,183,216,240,167, 90,176, 78, 86, 6,217, 68,151,163,148,188,176,129, -147,139,155, 66,113,222, 34,212, 97, 65, 52, 1, 27,200, 20,206,109, 56,186,204, 58,214,250, 90, 8,155, 80, 1,189, 98,135,227, - 71,251, 20, 67,114,199, 4,103,255,126, 75, 98, 90, 67, 20, 73,138,127, 90, 95,113, 17, 20,130, 72, 81,109, 24, 77, 17,182,165, -163, 59,189, 7, 29, 71, 9,198, 1,100, 83,184, 57,213,124,244,189, 75,125, 62, 54, 17,247, 73,120,198,126,143,244, 81,141, 17, -121, 25,106,213,177,185,143, 92,111,173, 15, 85, 80,200, 27,126,191, 81,108,193, 85, 55,222, 94,179,132,247, 14,115,182, 43,224, -120,137, 4,251, 65, 12,172, 36,176,192,139, 99, 16, 88,211,111, 35, 66,123, 76,193,218, 26,152,194,162, 73,118,182,142,127, 31, -163,241, 98, 72,123, 43, 39, 76,145,236,160, 41, 80, 20,177,159,203,123,202,203,183,101,204, 29,240,114,217,227, 69,211,163,110, -155,119,184, 12, 76, 2, 45,198, 54, 82, 76, 95, 31,177, 62, 57, 39, 29,141, 91, 60,149,220,121,148, 83, 0, 16, 42,205,122,170, - 88,103,166, 86,112,133, 18,238, 69, 26,220, 74, 75,179, 66,223, 77, 32,202,172, 76, 80,210,106,165,164, 81, 1,142, 93, 33,145, - 37, 55,157, 41,134,127, 25,217, 53, 12,197, 50, 78, 58, 54,147,209,237, 34,189,109, 37, 65,230,100,188,186,100,192,128, 11, 14, -217, 12,151,178,165, 53, 74,146,198, 86,193,107,131,136,223,249,196, 73,183,187,186, 35,229,234,149, 78,133, 18,136, 50,217, 51, -145,194,185,111, 74,213,123, 81,206,212,240, 67, 76,162,152, 39,240,163, 59, 3, 0,128, 92,145,163,110,241,222,156,231, 73, 35, -149,154, 24, 53, 68,185, 95,135, 68, 23, 5,226,220, 72, 6, 69,116,114,119, 41, 81,130,120, 24, 55, 55,250,141, 2,165,180, 34, -103, 77,170,189,149, 87,118, 5,186, 26, 40,146,146, 24, 73, 97, 67, 4, 88, 17,230, 48, 10, 38,125,149,185, 85,129,243, 63,237, -195, 1, 50,119,225,117,100,168, 36, 65, 32,197,119, 41,150,194,215, 84,205,165, 56,201,160, 7, 85,101, 21, 40, 19,133, 61, 92, - 44, 37,116,152,145,136, 88, 40, 60,113,227,117,150,148, 40,206, 96, 11,211,212, 45, 58,235,184, 80,211, 95, 64,178,192, 9,208, - 47,108,195,198, 19, 76, 92, 81,192,194, 58, 55, 93, 12,240,160,160,150, 2,169,108,221,168, 37, 59, 57,147,193,233,112,193, 86, -136,174,166,141,180,166,135, 22,228,254,174,148, 4, 26, 49, 48, 97,210,126, 46,228,155, 67,214,234,143,137,108, 64,190, 49,213, - 6,212,177,165,160, 64,207, 84,235, 69,154,133,167,223,213,229,171, 64,157,152,140, 35,131, 78,117,174, 91, 21,164,222,105,180, -178, 80,197,174,253, 67, 74, 93,211,215,251,251,205,111,248,251, 88,227,209,251,177,173, 19,110, 41,197,233,124,251, 53,187, 51, -130,122,116, 2,119,138, 80,158,234,149,117, 4,115, 89,250,100,152, 67, 11,182,242, 66,113, 99, 55,124,118, 57,162,212,130,225, - 16,202,111, 37, 34,102, 75, 63,119,156,144,177, 17, 73, 84, 5, 26,150,209, 97,224,146, 50,104,192, 91,149, 64, 65,107,234,172, - 84,243,118,151,238,164,117,150,134,210,140, 4, 47, 34, 21,110, 77,105,202,162,191,226,210, 65, 62,106,181,179, 26, 49,254,172, -100, 21, 62,233, 18,194,187,112, 86,211, 98, 9,177, 2,177, 77,222, 13, 74, 77,221,192,200,128,167,240,111,225, 0,173, 22,236, -164,161,153,138,202, 89,179,206,128,100,165,137,204,106,219,139,169, 74,208, 74,155,102, 30,216, 4, 17, 32,118,154,206,205,106, -116, 85,157,205, 37, 56, 19,222,100, 5,140,253, 98, 40,145, 72,142,138,196, 27,148,212, 70,248, 9, 64,149, 10, 96, 51, 85,186, - 2,169,221,156,101,181,245, 55,148,102,100, 85,109, 5, 37, 85, 57,115,143, 49,244, 29,241, 21,165,237,165, 0, 90,233, 2,200, - 31, 4, 48,174, 83,121,163,134,209, 2,106,109,168,179, 31,236,163, 18, 64, 47,124, 30, 18,204,146, 10, 44, 7,204, 52, 22,206, -133, 82, 15,188, 18, 61,150, 82,115, 42,156,223, 45,136, 13,244,113, 34,248,145,140, 89,104,179,135,153, 98, 22, 14, 0,102, 77, -147, 34,104, 78,140,172,211,234, 78,126,105,164,234,171,179, 47,188, 76, 53, 69, 0, 32, 24,195,169, 12, 16, 21, 10, 73,153, 35, -210,192, 67,150,168, 67, 47,233, 44,121, 37,139, 77, 30, 89,187,208,208,120, 78,208,151,129,178, 6,132,151, 5, 91,237,126, 4, -234, 89, 45, 95, 51, 62,139,146, 82, 41,156,210,196,158,190,230,160,168, 20,230,246, 52,115,109,176,152, 2,215, 20,221, 84,104, - 32, 50, 44,220,237,193, 92,177,202, 93, 72,166,116,229,180, 68,208,230,152,162,123,155,213,164,195,249,224,212, 93, 39,113,202, - 19,121,159,129, 18,146,193, 57,232, 73, 44,146,230, 51, 56, 45,246,123,142,116,147,192,121,145, 58, 24,203,228, 53,199,247, 47, - 82,207,133, 44,162, 50, 24,247,109,201, 13, 84, 38, 16, 77,150,224, 36, 0,100,133,112,133, 56,103,155,176,233,136,228, 26,249, - 36, 2, 83,146, 76,231,112,158, 91, 18,216,147,229,178,142, 52,178,233, 57, 87,165, 28, 77, 5,168, 97,242,142, 75,130,205, 35, -229, 49, 82,181,134, 50,195, 23,110,142,167,186,212, 72,168,140, 27,106, 71,236, 93,209, 44, 2,223, 18,241,136,198, 40, 77, 12, -155, 76,213, 54,167, 5,133, 40, 44,130,177, 58, 22,160, 73, 29,172, 54, 78,157,234,212, 58, 66, 1, 25,142, 8, 31,213,178,106, -177, 40,160,115,136, 89,124,182, 75, 37, 24,151,231,181,212, 60,126, 15, 53, 82,200,204, 77,177,135, 83,186, 91, 10,138,185,168, - 65, 73,155,149, 57,105, 21, 74, 63,213, 65, 50,150, 55, 42,234,204,180,210,198,216,171, 32, 40, 88,193,162,176, 57,180,160, 0, - 49, 86,161,212,158, 18,203, 20, 78,137,235,108,110, 69, 36, 47,102,236,133, 0, 37,140,233,119,129,141, 74,175,177,178,131,218, - 70,166, 2, 75, 19,245, 69, 93,220,149,198,188,214,104,142,113,201, 28,231, 6,205, 45, 6, 96, 45, 40, 96, 35, 78, 99,179, 53, -180, 20,216, 56,155, 44,131,165,186, 75,206, 72, 67, 29, 55,158,117, 71, 40,150, 5,116, 59,111, 11,106, 81,121, 77, 77, 73,170, - 55,219,145,182,187, 85,224, 8, 64, 93,173,112,219, 14,183,250,196, 17,160,184, 5, 29, 17,106,233,202,251, 95, 1,102, 54,212, - 54, 94,215,146,186,181,164,208, 55, 88, 48,130,106,133,224, 11, 16, 57,157,239,159, 69, 65, 60, 10, 47,136,137,144, 53, 25,145, -120,142,168,161,207, 73, 18, 25,196,208, 82,250, 98, 2,127,187,168,176, 49, 15, 40,132,167,114,230,201,173,105,116,121,171, 32, -219,106,134,213,166,117,181,198,104,177,199, 58,179, 37,185,122, 21,116, 29, 36,219, 93,137,192, 35,149,138, 21, 71,226,112, 83, -165,102, 46,200,100,196,101,204, 88,141, 53,117,231, 79, 35, 95, 24,170, 73,157,214, 78, 83, 93, 8,123, 51, 67,106,202,110,120, -109,248,214, 21, 80,167,236, 26,209,160,150,228, 77, 17,196,105,106,158, 94, 7,163, 60, 81, 85, 86,235, 62,145, 90,175,190,105, - 79,233,149,168,111,154, 46,116,161, 16, 9, 17,132,148,147, 25,209, 80,225, 18,232, 30, 38, 98,124, 67, 16,141,209,107, 41,160, -160, 68, 96, 0,176,110, 86, 97, 14, 23,231,206,178,131, 6, 59, 14, 4,183, 29,107, 97, 96, 58,158,156,133, 14,188,229, 5,179, - 59, 56, 29, 35, 55,120,170, 27, 87,104, 57,187,109,105,219,106, 70, 96,122,206, 75, 85, 63,171, 92, 61, 13, 78,218,187, 90,234, -244,174,174, 96, 10, 22, 80,186,253, 25, 45,164, 52,169,168,152,141,216,202,176,131,150,130,203,218,116, 70,162,136,252, 88, 23, -134, 71,160,144,147,101, 88,240,236,168,223, 0,171,141,233,240, 36,106, 19,104, 84,140, 90,204, 0,141, 96, 59,225,196, 89,157, -234,215,177,139,118,194, 64,167,162,164, 84,133,202,138,216,169, 9,219,146, 34, 35, 72,154, 94,156,222,247, 27, 0, 75, 12, 26, - 4, 65,163, 9, 93,126, 67,121, 59,109,207,158,174,160, 92,174, 33,221,213, 65,113, 0, 21, 36, 17,125, 29,144, 71, 71,219, 74, - 35,173, 90,114, 64, 71,186,112,240,191,163,186,158, 41, 63,214, 84, 73,236, 25, 98,235, 93, 50, 6, 6,123, 77,190,128, 66,113, -169, 12, 34, 59,156,129,180, 77,100,105, 6,181,195,134, 65,208, 12,138, 25, 49, 4,121,159,153,132,131,216, 55,200,237, 26,200, -115,195,154, 45,160,105, 70,230,108, 75, 18,173, 79,210,162, 45,190,138,178,114,219,176, 23,213, 20,161, 73, 82,129,116, 31,140, -115,154, 27,123, 40, 8, 2,104, 87, 20,221, 56,233,209, 51,116,108, 91,145,196,165, 70,145, 13, 91,109,227,117,165,134, 64, 25, -241, 43, 32,125, 61, 61,207,178, 18, 49,167, 78,139,107, 48, 12,173,138, 93,139,119,162,100,218,129, 27, 33, 77,247, 55, 14,137, -231,202,171, 29,234, 76,153,212, 28,188, 81, 31, 65, 2,239, 19, 74,161,209, 15,190, 64, 22,197,235,219, 82,147, 16, 87,176, 67, - 98, 82, 84,232,153,193,209, 2,199, 5,169, 3, 15, 34,107,202, 3, 72,159,195,246,220, 65, 15, 37,199,110, 5, 46, 10,101,139, - 85, 1,122, 10, 60, 93, 61,108, 5, 24,193, 32,247,215,180,206,100,104,114,128, 84, 1,247,170,135,109,191,174,158, 47, 72,140, -250, 99,243,226, 75,110, 49,135,173,249,218,206, 71,150,178, 43,133, 0, 48, 22, 92,239, 17, 0, 40,226, 66, 29,174,152, 71,209, - 77, 75,192, 75, 92,210,100, 68, 77,184, 98, 1,242,150, 73,193,142,178,166,180, 55,237, 40,145,154,234, 40, 64, 26, 2, 29,177, - 48,146, 35, 77, 89,219,181,118,170,133,189,148,224, 12, 51, 20, 61,151, 16,109, 21,229,210, 71, 95,108, 67,255,178,223, 39,214, - 73, 59, 78,220, 90, 93,200,100, 20,184, 40,152,213,200,207, 71, 84,190,115, 2,142, 21,239, 58,229,114,167,150,165,224, 64,163, -155, 1,232, 58, 78,212, 13,139, 26,150, 35, 61,167,122,171, 85, 82,164,126, 17,228,181, 6, 93,165, 67,157,229,196, 99,141,198, - 47,133,115,141, 41,199, 29,224,168,170,192,145, 95,179,131, 86, 74,146,243,100, 72,243,121,111,112,138,243,228,166,149,239, 10, -132, 7, 26, 76, 8, 68,227, 24,128,182,109,163,151,169, 37, 35, 37,161,144, 80,219, 42, 32,158,212, 53,145,107, 56,202,212,182, - 62, 6,241, 32,172, 56, 23, 94,128,207, 32, 62, 5, 6, 38,194, 36, 83, 90, 35,234, 42, 8,164, 28, 74, 49,213, 29, 71, 1,167, -145,217,116, 30,130,143,156,219, 45,247, 27,105,101, 55,102,197,219,176, 98, 83, 15, 74,252,219,174,105,227, 57,105, 31,228,172, - 90,116, 1,172, 41,171,150, 1, 86,185,161,204, 82, 8, 12,171, 56,245,168, 85,195,172, 43,117,135,216, 11,176,219,152,245,214, - 0, 54,122,148,198, 82, 30, 28,128,113,133,163, 99, 26, 33,176, 75,146, 2, 26, 2,222,164,233, 48, 23,181,253, 44,106, 37, 77, -132, 45, 88, 71, 0,166, 70, 33, 94,225,110, 83,210, 46, 96,175,253, 11, 0,107, 19, 5, 18, 93, 6,206, 20,230,117,252,113,230, -213,212, 52,202,144, 99,253,158,241,251,219,213, 38,107,174,141, 32,211,139,101, 84,115,138,161,195, 37,182,109,157, 34,237, 58, - 81,219, 80, 59, 68,196,245, 75,120, 52,232,156,130, 80,107,175, 61, 5,252, 81, 38, 99, 40,221, 90,149,176,166,242, 4,130, 68, - 97, 79,151,220,213,180, 90,137, 76,163,111,111,182, 84,194, 17, 39,136,246, 13,100, 55, 1,134, 75, 60,232, 72,235,173,182,236, - 75,209, 21,103,121, 67, 19,171,111,189,194, 86, 33, 75, 0, 13,203, 18, 34, 41,132,244, 45,148,167, 53,144, 12, 71, 83, 5, 1, -238, 98,210, 46,112,142,189,170, 51, 25, 42, 89,235,158, 21,178, 41,168, 96, 23, 37, 90, 9,234, 0,148, 24,194,176, 75,122,127, -103, 53,238, 46, 64, 54,219,154, 70, 91,234,166, 84, 56,183,105, 45, 46,104,194, 9, 73, 27,233,221, 50,165,226, 71, 35, 40,208, -191, 36, 54,156,142, 10,200, 81, 22, 5, 21, 9,229,224,112, 50,122, 11, 7,175,161, 36,171, 0,223, 90, 38,225, 23, 70,196, 62, -110,102, 83, 19, 8,108,248, 99,226, 48,117,168,153,143,159, 45,227,217, 14,148,183, 33, 69, 95,192,216,111,148,206,107,130, 11, -192, 14, 44,149,159, 59, 69, 38, 77,177, 66,176,247, 60, 1, 90, 89, 82,127,242, 21,128,141, 88,121, 1,168,111, 94,191,139,187, -222,149,232, 7,110,247,177,122,235, 94, 44, 69, 69,218, 20, 83,114,130,120, 16,147, 57, 6, 16, 16, 81,150,102, 21, 44,198,154, -163, 81,161, 11,154,132,252,139,115, 87,205,105,146, 80, 36,115,168,119,202,132, 22,175,241,135,224, 76, 72, 84,146, 43, 1, 70, - 25,131,185, 64,195, 38,153,116, 34, 8,149,245,138,235, 71, 48,120,122,131,163,199, 93,201,181, 97,167,193, 41,201,149,179, 96, - 72,234,165, 94, 84, 76, 10,234,218,210, 8,162, 72,211,173, 78, 82,203, 92,108, 56, 69,222, 64,195,143,207, 17, 1, 23,108,254, - 36,172,206, 61,123, 38,178,211,245, 82,177, 67, 26, 1, 88,182,230,174,104,174, 39, 95, 27, 7, 18,178,187, 85,123,196,123, 94, - 70, 80, 78, 59, 59, 47,150,235, 88, 32, 88,143,215,115,219,169,101,180, 36,114, 52, 26, 53, 94,163, 19, 31,153,212, 2,233,125, - 44, 1, 54,190,177, 58,107,156,244, 61,180, 90, 0,221,228,115, 54, 1, 21,219, 82,139,224, 70, 85, 49, 3,165, 27, 72,159, 81, - 52, 87,154,200,163,231,203, 10,236, 19,200, 12, 71, 6,145, 80,119, 61,112,175,233,217,134,200,211, 16,177, 75,194, 50, 68,177, -136,147,131, 35,137,201, 64,161,227,143, 14, 31, 6, 71, 41, 18,151, 36,144, 70, 32,154,196, 64,212, 23,160,227, 76,148, 73,141, -254, 7, 27, 86,141,146,104,229,183,169,173, 43,186, 85, 35,197, 81,109,231,162, 32, 9,135,195,195,192, 39, 16, 31,204,169,111, -110,184,144, 32, 43,146,196, 50,132,178, 38,187, 3,191,124,130, 77, 2, 18, 46, 54,162, 27,239,178, 74,244, 92, 87,157,237, 9, - 4, 36, 41, 59,107, 41, 97, 79, 19, 23,137,118,145,147, 92,152,162, 15, 81,238, 48, 80,225,134, 52,239, 40,119,112, 43,140, 28, -226, 80, 19,234,138,214,214, 5, 59,152,178, 82, 78, 76,183, 55,106,137, 21,120,215, 76, 33,215, 89,200,142, 53,137,174, 88,204, - 33,181, 56,219,192,238,255,190,182,198,165, 72,216, 13,142,122, 82, 89, 83, 39, 67,240,147,219,135, 18,134, 29,145,230, 5,116, - 6,204, 73, 40,192, 53, 71,192,163, 40,180,112,164,131, 0,162, 56, 52,225,139,235,181,119,133, 1, 15, 17,247,166,131,180,108, -150, 60,129, 30,223, 0,244, 51,175,118, 41,153, 6, 24, 70,161,246,142,132, 34,210,181,116,128,141, 19, 92,164,199,203, 76, 19, -215,119, 91, 40, 37, 27, 13, 80, 40, 0,236,100,104, 41,199,168, 87,192,226, 70, 71, 32,237, 9, 97, 95,234,164,230,115,181,184, - 10,134, 58, 76, 93,136,214, 80, 3, 92,149,134, 59, 75, 32, 1,140, 10, 88,133,155,104, 21,120,119,230, 60, 20,201,209, 68,153, -114, 22,195, 90, 91,202,210,157,144,132,113, 80,214, 31, 3, 12, 94,156,190, 97,199, 5, 96,106,106, 23, 13, 44,148, 0,124,167, -242, 74, 11,180, 67,234,101,146,238, 68,204, 2, 5,144,169, 16,116, 16,162,192, 5, 24, 67,195, 82,254, 94, 15, 69,122,149, 59, -244,209,162,213,165,141,189, 67, 86, 24, 4, 84,182, 64,116, 17, 70,184,149,114, 31,137,209, 89, 7, 46,126,112,102, 97, 91,230, -117, 88,237, 48, 2,222,237, 26,105,194, 14, 76,139,230, 84,137,210,139,209, 50,164,216,145,134,197, 73, 98,139,146, 82,155,117, - 83, 19, 72, 95,175,164,217, 81,158, 90,208,108, 4,119,157,192, 33, 8,231,165,172, 66,201, 32, 75,139, 59,188, 0, 93,172,131, - 72,123, 98,143,101,167, 59, 26,125,114,104,177,251, 53,130,214,131,228,136, 95,224,134,174, 0,172, 11, 71, 19, 29,202, 45,161, - 9,187,176,249,253,196, 8, 20,179,134,184, 61, 76,185,114,203,216, 44,177, 53, 46, 89,183,183, 58,189, 44, 83,103, 64, 60,182, -190,236,188, 82,176,160,209, 14, 21, 1,160, 26,231,186, 78,225, 85, 90, 7,197, 68,202,160, 14, 73, 30,165, 25,230, 2,147,117, - 81, 90, 46, 47, 68, 93, 69, 82,182,106,124, 71,215, 41,103, 30, 34, 32,137,227, 38,110,165,214,130, 67,176, 67, 32,178,175, 14, -108, 50, 3,110,189,176,215,128,169, 33, 37, 11, 32, 41, 75, 88, 21,168, 37,121,255, 92,136,168,129,135,111,147, 96, 97,218,250, - 26, 98, 20, 4, 22,234, 57,110, 37,106, 15,143, 2, 46, 89,194, 16, 1, 78,210,226, 84,166, 5, 4, 29,187, 56,129, 42, 98, 51, -232, 10,100, 62,192,155, 53,157,121,144, 12, 25, 15,186,237, 28, 90, 6,100,235, 36,227, 26, 40,170,170,188,240, 2,252,108,144, - 75, 21,113, 42,157,101, 14,196, 35, 91, 73,148,168, 2,189,202,173,134,187,212, 55,116,154,238,180,186,118, 53, 9, 77, 49,193, -156, 2, 66, 29, 50,129,177,212, 97, 18, 77,103, 21,137, 29,160,170, 84,108, 81,145,203,220,255, 15,234,231,222, 94,149, 82,183, -168, 80,186, 2,101, 65,106, 53,141,154, 14, 79, 2,169,213,110, 93,195, 36, 1,145, 18, 74,242,170,104,224, 81,187, 63,201,176, -242, 42,235, 65,210,102, 4, 70,210, 56,254,134,203,240,106,204, 18,196, 71, 4,132,120, 36,156, 20, 41, 38,152, 63,221,109,228, -187, 67, 36,110,108, 21,239,198, 88,206,192,137,198,222, 16, 48, 65,167, 84,181,228,180,161, 68, 86,174,242, 36, 38, 99, 6, 27, -169, 66,172,153, 62,161,232,106,215,162,162,221,217,129,156,118,133,212,172, 52,234,105,222, 16, 6,203,149,188, 42,104,229, 77, -150,160,127, 66,139, 11, 88,169,170, 74,195,143,163,117,247,138,154,110,115,208,192,138,161, 11, 94,227,222,163,166, 71,166,177, - 67,185, 76, 90,144, 32,175, 70,206,222,181,142,179,122, 27, 24, 57,105,168,157, 9,163,208, 84,236,165,161, 55,147,112,171, 16, - 0, 12, 10,166, 4,185,178,103, 47,145, 85,242,158, 5, 80, 90,100,130,246,185,148,211,214,152,253,144,198,185, 17, 8,112,124, - 95, 40,185,239, 68,248,147,109, 96,178,166,153,151,126,113,213,108,238, 8,108, 27,152, 69, 53, 38, 64, 53, 42, 47, 69, 83,180, - 49, 89, 81,170, 73, 97, 65, 43,243, 92,127,183,204,222, 66, 0, 25,200,112, 97,169, 15, 56,120,101, 72,127, 49,133,161,120,160, - 42,155, 89,154,102,247,176, 72, 11,151, 38,146,228,240,242,176, 85, 34, 27, 34, 91, 1, 78, 85,141,172, 69, 73,237,108, 47, 74, -148, 2, 62, 96,226, 75,106,135, 27, 7, 50,112,163, 10, 87, 0,121, 88,176, 71,111, 68, 62, 5, 59,139, 81,164, 6,197,165,252, -196,121,216,211,241,187,212,122, 80,156, 75, 77,185,169,136,132,188,172,101, 47,140,143,110, 9,224,226,148, 44, 78, 42,221, 12, - 97,142, 69,178, 40,241, 57,214, 17,171, 52,237,101, 21,108,228, 29,205, 34, 27,129,205, 75,188, 78,195, 83, 63,230,224,210,150, -212, 6,215, 42,170, 92,197,107,222, 14, 82, 19,173,227,235, 61,233,188,129, 5,234,242, 7,199,178,170,198,190,101,110,172, 79, -240,112,239,182,128,170,100, 17,192,112,126,219, 38,162, 83,171,179, 46, 12, 57, 63, 70,246,154, 26, 54,240, 98,167,200,252,225, -248,131,194, 92,199, 89,239,156, 28,217, 30,101, 13,246, 58, 51,132,152, 92,178, 50, 84,106,231, 40, 77,202, 49,218,118,138, 75, - 54,150,201,176, 91,126,147,201,187,134, 57,111,190, 73,189,122, 83, 18,130,182,161,194,216, 76, 44,211,133,188,156, 17,125,140, -139,172,107,110,161,153,158, 49, 26,152, 80,255,134,158, 52,117, 58,130,250, 53,131, 70, 56, 11,226, 16,194,185,148, 34,161,177, -190, 86, 81,140,147, 24,147, 36, 30,116, 68,200,149,114, 15,135,160, 67,132,152, 14, 27,173, 19,129,220, 66, 43, 14, 73,106,138, -195, 33, 60, 19, 25, 94,214, 14,110,154,206, 68, 3,175,215,145,244, 17, 44,170, 47,146, 3, 22,148, 22,110,155,251,172, 68,229, -133,172, 61,115, 74,185,147,172,148,146, 37,129,207, 74,162, 23, 26,221, 45, 99, 20, 40, 1, 61,169, 97,107,144,164,164, 18,148, -252, 48,224,105,120,234,112, 94, 35, 65,149,173,177, 81,241, 50,172,173,243,109,194, 52,120,195,142,192, 70,245,168, 14,152,100, -166, 65,255,128, 25,212,240, 0,128,206,197, 5,125, 4,234,244,222,103, 4,105,158,201, 65,192,206,146,153,255, 79, 77, 95, 47, -203, 58, 90, 38,185,115, 10, 25, 8,135,149, 16,143, 50,163, 91, 9,208,117, 50,149,104,135,210,214, 64,229,221,238, 15,184, 93, - 35,160, 30,245, 49, 40,120,239,185, 61,108,151, 16,241, 5, 0,204, 5,104,169, 35, 93,185, 86,160, 47,180, 93,212, 96, 50,162, -215,105, 29,207,108,179, 40,156, 25, 17,158,250,195,118,170,165, 75,117,208,176,143, 28,136, 3, 22, 80,151,155,156,134,125,101, - 50,129, 82, 48,189,132, 90,221,128,190,205,218,109, 94,227, 52, 69,178,210, 68,226,130, 84,184,149, 8, 55, 54,199, 36, 9,153, - 80,198,160, 44,199,185,145,135, 80,116, 84, 74,158,219, 96,156, 70,222,187,138,236,152,124, 46,163, 80, 72, 86,201, 66,193,203, -138, 81, 58,228, 47,177,189,102, 18, 84, 78, 84,166, 22,104, 40,208,197, 45,138, 42,158,236,146, 73, 5,206, 48, 10, 81, 47,171, - 46,158,129, 90, 89, 44, 18,114,149, 46, 11,107, 15,173,134,160,206,106, 7,137,104,136, 0,177,133,101,105, 48,166, 89,140,162, - 50,236,168,212,165, 57, 63, 10,134, 43, 50,181, 18, 93, 40, 45,206,232,242, 67, 20, 63,124,182, 27,192,102, 92, 29, 80,212,129, - 72,140,213, 98,139, 16,244, 60,199,188, 25, 37,190, 41,185,177, 43,174, 24, 17,189, 9, 36,117, 41, 52,158,209,164,233, 0, 27, -153,149, 2,180,179, 87,110,252, 66,160, 57,221,110,200,209,236,198, 5,144, 76,170, 25,153, 24, 40,228,212, 58,165, 13, 22, 76, - 18,181, 68,180, 44, 86, 27, 62, 76, 83,150,195,156, 98, 74, 73,194,159, 66,171, 88, 27,195,102, 72, 34,187, 68, 17, 23,168, 89, -193, 60, 23,108,177,211,212,152, 89,233, 73,134,198,158,230,175,149,120,194,104, 72, 34,172,139, 54, 42,194,158,238,213, 51,130, -210,128, 46,217,231, 73,202,136, 8,172,112,236,163,144,186,188, 97,228, 73,105,223, 49,131,220, 53,251, 47, 74,116, 83,206,161, -185, 67, 84, 82, 37, 67,168,161,224, 39, 42, 92,170, 12, 81, 99,188, 13,187,176,242, 38,128,144, 40,166,167, 43,185, 41,143, 69, -175,214,200,201,193, 94,172,117,235,170, 0,197,100,208, 41, 53, 93, 65,218,155,183, 95,133,108,163, 64,214,213,154,127,141,199, -173,161, 6,186, 68,251, 0,165,130,192,181,240, 90,245, 89, 33, 99, 18, 69,182,217, 21, 37, 57, 24, 32,157, 83,108, 11, 56,107, -185, 69, 44,246,159,119,230,151,106,125,140, 70, 87,166, 38, 45, 3, 11,104,208,200, 88, 40, 34,191, 74,150,146,141,214,215, 8, -160,147, 36,108,100,251, 42, 99,249,135,173,245,170, 68, 1,185,180, 20, 8,104,116, 82, 96,227, 27, 35,116, 0, 72,120, 11, 58, -142,222,232, 29,168, 99, 85,201,185,228,130,145, 50,219,201,169, 60,101, 18, 94,152,248,119,194,171,117, 19,148, 58, 36,240, 54, - 61, 21, 99,244, 77, 64,211,231,198,142,171,242, 80,184,248, 34,189, 25,160,157, 86,112,195,143,218,128,124, 24,168, 18,110,144, -109,114,170,146,154,101, 56,170,222,117, 75,235, 21,161, 68,143, 67,204,124,165, 44,234,211, 10, 78, 20,228,215, 66, 52,134,136, -217,146,168, 48,208,122,208,145,246,181, 97, 41, 96,159,117,213, 97,183, 90, 99, 67, 97,221,134,244, 17,118,180,196,108, 12, 39, - 84,182, 68,244,169, 27,106, 41,173,244, 51, 39,145,148, 37, 68, 23, 24, 17, 59,154,187, 80, 52, 48, 33,107,244,177, 28,189,227, -197,120,126, 1, 24, 66,137,228,162,253,143,151,112,206,214,226,144,145,235,203,145,159, 96, 45, 63, 88,166, 72, 68, 1,132,144, -183, 21,108, 29,172,226, 35, 38,149,199,152,130,110,250,131, 71, 36, 28,124,113, 19,219,242,251, 38, 13, 41, 6,154,149, 76,209, -141,180,157, 10,154,206,154,146,211, 37,158, 62,175, 80,179,148,212,246, 20, 51,196, 34, 88,229,166, 53,180, 0,147, 61,228, 44, - 78,226,248, 29,241, 86,197, 29, 2, 87, 27,112,149,107, 15,152,228,174, 62,191,237, 17,160,105,156,224, 10, 37, 29,101,148,100, - 72,178,207, 91, 7, 47, 37,252,193, 52, 7, 10,236, 39, 72,113,244, 44, 14,175, 70, 62,133, 51,226, 97,154, 87,225,200,181,185, -244, 54,165,142, 93, 20, 49, 53,141, 53,105,143, 44,181,156, 81, 97,253, 84,125, 95,215,214,136, 97, 83,240,189,169,172,225,245, - 11,229, 61,146, 99,109, 88,175, 6,111,127,140, 11, 92, 23,254, 66, 27, 33, 85,111, 80, 67, 9,161, 77, 10, 36, 12, 5, 69, 2, -189,137, 36,225,229, 1, 24, 19, 58,245,129,104,168,170,235, 32, 73,167, 80,188,179, 36, 37,165,144, 0,167,226,117, 10,175, 35, -215, 21,111,225,141, 77,154,202,136,163, 42,222,239,129, 27,213,194,144, 14, 6, 38, 24,208,209,150, 32, 49,222,141, 74,149, 76, -203, 82, 53, 27,105, 76, 11, 89,209,127, 33, 23, 20, 19, 84, 99, 75, 83,169, 74, 9, 92, 8,143,201,251,161,209,208, 34,131,162, - 32,109,195,202,229, 29, 82, 81,157,170,238, 84,220,104, 42, 41, 49, 72,193, 80,197,250,155,175,130,120, 80, 18,181, 0, 2, 61, -128, 10,170,179,219, 84,130,112,147,118, 58, 0, 10,229, 52,185, 73,228,209,215,210, 70,188,180,162,184,148,116,132,120, 53,114, - 41,156, 29,136, 20, 39,224, 66,212,141, 98,105,116, 10,201,177,137, 80,147, 2, 34,123,175,164,126,206, 85,166,122,139, 71,163, - 32, 96, 96,155, 92, 5, 84, 42, 55, 81,142,178,181,167, 58, 52, 80,150,108,230, 49,120,229,227,171, 50,232, 18, 67, 37,148,163, -249, 68,162, 23,130, 64,137, 35, 99,189, 22,142,106, 88,146, 54, 60,214, 20, 83, 65, 93,117,160, 24, 26, 96,145,152,128, 91, 46, - 9,164, 71,208, 62,212, 13, 23,182,216,177,250, 48,229,254,235, 5,242,104,213,211,235,226, 14,139,121, 8,131, 55,189,173, 95, -214,113,208,231,208,185, 73, 14, 91, 5, 81,149,193,184, 88,234, 28, 29, 63, 44, 2, 50, 34,109, 41, 96,214, 94,231,229,169,149, -109,234,164,144,149,174, 28,224,131,156, 97,219,238,107,220, 27, 97, 80,192, 66, 99, 92,114,196,200,148,213, 57,189, 93,103, 44, - 84,172,217, 0, 71,184, 41,129,101,130, 83,220, 41,108, 70,211, 10, 87,181,198, 4, 84, 4, 75, 20, 22,167,141,113,185,212,249, - 87,180,135, 0,108,154, 20,125, 17, 10, 40,216, 85,215,238, 14, 26,145,203, 42, 67,230,111,201,128, 29,226,117,173,155,165,117, -213, 19,160, 44, 90,118, 54,148, 45, 43, 53, 2,115, 70, 24, 58,209,129,119,212,246, 8, 79,165,115,106,154,133,168, 1, 45, 18, - 45, 68,195,105,151, 4,218,194,236, 9,234, 58, 24,142,130,104, 21,233, 95, 52,122, 68,224, 43,182,134,118, 0, 58, 69,203, 98, -111,163, 48, 68,177, 35, 47,191,122, 89,104, 4,184, 57,101,169,120,166,143,147,176, 87,236, 17, 33,218, 67, 46, 77,205,200, 46, - 41, 83, 38,110,132,117,118,216,147, 92,220, 9,199, 8,127,156, 55, 29, 37, 69,212,164, 61, 65,148,186, 28, 22,237,217,144,130, - 68,205,115, 23, 47, 89,180, 51, 67,188,191, 67,203,162, 42, 82, 97,253, 78, 13,164,198,185,219, 5,106, 31, 57, 40,169, 73,146, -119, 86,132,210, 5,226, 65, 24,232,150, 26, 64, 47,186, 2,194, 25, 20,139,136,139, 64,255, 98,237, 52,197, 5,184,211, 97, 96, -205, 51,140, 94,178, 19, 40,206, 38,111,117,106, 24, 2,202,184, 65, 53,115,162, 0, 36,145,143,246,125, 0,162,226, 84,111,226, -148,121, 46,205,182, 24,218,246, 17,113,181,248, 1,163,122,181,101,136, 2, 94, 67,244,152,143,201,100,237, 16, 37,121,150,226, -221,118, 4, 55,228, 20, 89,163, 70, 48, 78, 19, 0, 79, 9, 59,141, 2,181, 48,132, 18,134,112,181,226,133, 58,220,166, 2,199, -156, 54, 46,236, 33, 77,192,199, 22,144, 37,180, 58,173,233,112, 11, 8,112,148,142, 50, 32, 18,121,174,232, 21,115,212, 97, 75, -163,169, 76, 77, 84, 47, 34,233,126, 13,235,107, 9,233, 49,230, 96, 46,160,132, 38, 67,234,205,235,105,133, 83,201,198, 88, 50, - 75,158,122, 86, 23,237,238, 53,234, 29, 44,227,185,142,148, 46, 47, 82,215,116, 79,185,113,126,173,241, 74,245,217, 86, 83, 79, - 4, 2,230,132, 52,132, 70,169, 32,100,227,120, 16, 5,232, 16,128,228, 18,178, 17,107,141,168,135, 43, 1, 91,230,108,138,204, -241, 2, 74,119,142,152,198,103,169,122,249,194,169,116,230,232,208, 42,169,121, 3,227,198,131,224,168,108,233,193, 64,178, 43, -172,113, 35, 64, 22,192,138,112, 30,173, 3, 32, 42,173,153,225, 48,124,202,254,141, 41,210, 49,202, 15, 74,176, 82, 35,195,106, - 27,118,213,118,152,203, 26,130, 38, 53,213, 34,114, 52,100,221,178, 86,145,239,177,103,150,149, 22,160, 77,166,201, 5,122, 50, -187,168, 45, 35,226,130,182,205,125, 52, 38, 9,231,204,170, 4, 24,229,139,138,117,102,166, 12, 88,213, 70, 70,165, 4,200,202, -230,118,105, 4,123,176,159,188,172,201, 68, 20, 9,204, 12,129, 70,197, 88,122, 74, 82,175,176,135, 33, 21, 0,155,147,112,133, - 78,124, 89,140,135, 41, 99,155,186,146,131,178,101,229, 92, 87, 39, 75,113,103,144, 43,182,218,197,242,104, 41, 37, 57,170, 37, -250,242,129,126,189,140,148,101,223,247,167,102, 32,163,193, 95,234, 70,104, 17,121,193, 78,134,172,245,113,207, 14,117, 20,205, - 94, 38,167,114,185, 12,149, 65,187,103,214, 14,192,203, 72,222,213,177, 11,118, 23,166,186,160, 49, 89,144,241, 6, 54, 85,225, -116,163,163,175,110,238,148,196, 70, 11,131,154, 92, 65, 35,161, 48,251, 2, 37, 70,102,168,217,214, 16, 55,119,195, 81, 35, 61, -136,208,139, 17, 78, 14,177, 35, 83, 6, 27, 21,208,123, 94, 74, 54,216,184,139, 8,182,171,163,200,181, 57, 48,146,179,120, 2, -166,107,144, 7,159, 50,103, 73,180, 38,228, 29,107, 13, 47,156,188,127,185,237,193,210,176, 20, 93,214, 96,154, 24, 6, 16, 67, - 58, 18, 56, 13,174, 91,158, 8, 31, 33,167,152, 67,174, 44, 83,153, 35, 15,208,146,135, 90, 89,129, 13,222, 22,121, 69,112, 16, -227, 70,219, 63,227, 5,173,185,158, 12, 84,113,199, 12, 20,132, 70,158, 58, 25,232, 78, 18, 32,200, 84,161, 10, 33,111, 94,114, -205,197, 1,117,214, 78, 86,235,165, 28, 45, 77, 69,213, 4,171, 69, 38, 53,250,193, 99,107,225,232, 79, 61,101, 99,120, 57,116, -135, 83, 97,148, 33,128,238,138, 58, 17,120,255,216,209,233,169, 49, 37, 40,224, 69,239, 0, 40,242, 36, 71, 80,144,139,229,187, - 10, 83,164,203, 17, 56,196,141,163,215,182, 29, 97,170, 73,130, 35,187,134, 32,112,161,105,251,226, 81, 56,136, 71,217,230,169, - 58,252,102,195, 75, 18,139, 2,186, 43,148,109, 24,248,228,196,180,166, 45, 10, 3, 85, 41,131, 81, 42,228, 89, 36,160, 23, 19, - 93,185, 68, 54,102,148, 45, 94, 20,213,125,200,192,193,137,245, 82, 21,241, 62,213, 47,151, 74, 5,170, 80,111, 26,190,125, 0, - 69,110,214,234,142,167, 55, 30, 2,213, 67, 95,123, 43, 13,150,101,165,223,124,234,216,215,168,222, 36, 46, 54,231, 29, 78, 56, -244, 57, 88, 36,255,190, 97, 87,120,205, 25,105,149,144,161, 28,139, 5,106, 80,153, 29,192, 49,237,197,222,200, 40,128,123,157, - 81, 15, 57, 82,229,145,201,228,196, 77, 98,192,249,176,107,207,214,152,147, 34, 43,115,125,152, 51, 75,221, 91, 58, 77,246,212, - 18,167,236,107, 10, 90, 27, 27, 93,178, 48,238, 25, 48,239, 42, 37,163, 63,238,149,218,164, 71, 85,161, 85,228,165,193,109, 17, -121,127, 0,107, 72,229,108, 22, 93, 7, 83,214,163, 78,118, 68,215,220, 66, 83,237, 21, 12,168,253,181,106, 0, 55, 4, 51, 3, - 13,181, 72,211, 95, 30, 30, 81, 85,103,127,188,107,202,115, 28,230,245, 88, 79,231, 46,130,205, 10,125, 0,148,110, 60, 49,177, -181,116, 61,178,120,164,225,230,228, 12,173,181,182, 46,163,254,129, 26,200, 14,100,239,152,104,133,182,193,160, 84, 22,117,111, -114,170, 90, 55, 78, 24,149, 50, 77, 53, 85, 85, 76, 43, 17,197,186,132,104,201,219,148, 72, 76,228, 22, 88, 67, 16,169,213,149, -205,222,196,108, 98,211, 48,142,165,213, 32,145, 42, 33, 13,219, 30, 15,151, 5,115,128,214,194,171,189,182, 5,234, 38,129,156, -172,121,251, 5,128,148,241,167, 25,132, 54,180,191,105,162,184, 49,150, 36,214,176, 86,219,127, 5, 72, 13, 41,120,147,129,137, - 46,118, 41, 16,138,150,180, 21,138,236, 18,116, 42, 65,165,173, 42, 32,232, 18,123,191,161, 61,173,171,145, 33,134, 49,189, 90, - 65, 59,194, 28, 5, 95,184, 46,107, 30, 98, 40, 67, 69,187, 72,167,221,230,196,209,183, 8,216,196, 20, 21, 51, 62, 39,118, 81, - 18, 97, 9, 74,202, 64, 88, 51,244,123,210,130,153, 34,244, 14,250,164,103, 48,216,106,212,137, 34, 72,176, 83, 69,175,101,138, -214,142,147, 94, 2, 62,171, 2,108, 5,101, 90,128,120,144,139, 75,164, 85,193, 9, 28,151,219, 57, 66,166,137, 33,107,197, 4, -242,169,161,207, 0,162,224,169, 44, 80,106,200,105, 98,153,170, 32,160, 78, 90,158,116, 73, 40,229,172,244, 22,202,114, 81, 75, -151,164,108, 55,214,188, 93, 59,130, 51, 95, 75,132, 80,115,199, 33,148, 40,245, 11,153, 11, 1, 71, 61, 48, 41,253,198, 60,164, -102, 75,180,148, 29,230,145,211,106, 17, 97, 46, 77,247, 57,145, 52,199, 16, 12,192,137,248, 72, 73,108,136, 65, 57,134,161, 73, - 7, 55,170,110,204,141,219, 35,146,250,103,184,150,126, 67,213, 21,161, 21,131, 59,174,193, 18,234, 32,140,105, 99, 47, 65,169, - 51,202, 40,141,154, 53,228, 3,224, 39, 33, 11,174,247,162, 67,134, 7,124,206,155,120, 49,167,242, 84,231,242,246,210, 0,156, -115, 9, 1,187,216, 37,249,100, 83,115,147,136, 90,189,206, 93,226,250,151, 12, 82,186,146,177, 14,198, 43, 95,104,118,121, 48, -248, 93, 97,232,190,166,105, 70,197, 39, 24,216,113, 97,237,153, 53, 91,103,142,163, 55, 86, 2, 59, 54,176, 62, 58, 46, 80,187, - 0, 92,138,144, 11,200,176,102, 6, 44,154, 46,188, 84, 76,199,164,102, 71, 42,252, 38,203, 26,241,182,237,201,181,132, 50,105, -195, 68,171, 86,190,131,210, 82,153,106,234,156,228, 77, 9,210, 33, 70,201,240, 72, 24, 38,181, 61,129, 78,117,200, 23,218,188, - 3, 65,163, 94,191,164, 72,205,135,186, 85,238,105,158,106,226,196, 77, 59,212, 80, 58,106,133, 85, 4,218, 10,177, 34, 93, 3, -113,205, 99,154, 53, 35,222, 27,242, 55, 46, 16,247, 74,145, 95,204,141, 32, 66, 24, 4,239, 48, 71,216,221, 10, 10, 78, 65, 0, -181,130,185,247,117,102,206,230,153, 57, 35,217, 77,201,205, 5, 34,156, 23, 9,168,106, 84,219,146,144,111,172,176, 97, 84, 9, -198, 2,166,235,163, 6,134,216, 98,114,222,246,164, 67, 80, 67,223,220, 64, 42, 53,234,238,152, 83,102,165,120,121,106, 21,232, - 39, 76,156,106,226, 25, 65, 29,124, 88,116, 72, 82,212, 2,217,101,166,232, 33,205,144, 65, 96,124, 14,170, 96,199,168, 88,200, - 97,108, 13, 40, 55, 81,219,162, 1, 78, 41,141,162,149,202,139, 57,154,181,132,102, 52,187,241, 9,206,174,155,116, 7, 56,160, -180, 71,160,186, 27,112,124, 42, 67, 49,104,171,155, 69,205,221,168, 10,208, 74, 57,177, 50, 86,116,182, 89,160, 59,156, 58,197, - 5,149, 27, 21,211,128, 89, 54,160, 85,178, 4, 88, 52,116,197, 41, 49, 5,176, 53,104,206,104, 49, 62,224,204, 25,110,106,207, -210,220,148, 17, 45,172, 88,141,109,125,134, 93,177,150,147,209,157,205,107,147,112,196, 17,161,172, 81, 28, 1,104,107, 82, 16, - 43, 74,207,148,136,158, 16,167,161, 80,118,164, 91,186,210, 37,229, 14,115,180,210,137,143,179,229, 2,167, 92,176,222,106,160, - 45,239,163, 32,169, 41,202, 74,205, 94, 34,173,202,107,196,100, 24,106,228, 98,152,149, 66, 40,216, 1,221, 14,121,133,213,148, -192,180, 72,237, 3,133, 77,110, 13, 50, 53,218,238,164, 20, 64,204, 86,105, 84,193,169,117,111,131,127,130, 18,154,239, 81, 85, -159, 15,212, 57, 22, 5, 36,197,245,199, 75, 0, 64, 58,192,184,145,104, 34,154,122, 26,120,137, 65, 49, 27,197, 51, 69, 19, 68, -121, 95,183, 1,248, 37,214,227, 87,159, 39, 78,241, 52,135,176, 68,249,215,203, 60,154,117, 93,106,219, 21,103, 16, 85,176, 25, -218, 80, 75, 0,132, 92,120, 67,131,157, 58,254, 94,170, 50, 78,198,140, 35,141, 89,209, 82,235, 74,194,114, 50, 43, 83,144, 80, - 22,170,231,160, 17,212,226, 96,183,152,186,105, 1,197, 98,179, 63,218,233, 90, 93, 72,222, 14,178, 1, 40,120, 51, 22, 11, 16, -114, 49, 35, 35,156,211,190, 2, 70,145, 81,161,204,249,238, 37, 23,138,147,209, 99, 7,152,213, 6,174,190,148,220,246,142, 90, - 46,106, 80,115, 99,115, 84,186, 4,118,146,194,174,108,188, 2,224,149, 84,203,146,198,171, 70, 61,234,180, 72,210, 20, 14,218, - 30,183,210, 89,168, 0,149, 56,172, 21,228, 92,155, 58, 30, 99, 95,105, 10,220,130, 68, 63, 97,147, 83,228, 6,216,212,110, 48, -201, 9, 0,165, 33,119,196, 76, 68, 72, 35,129,165,166,159,178, 67, 22, 78,152,221,255,226, 13, 88, 98,110,121,100,160, 26,247, -168, 50, 71, 96, 28,185, 81, 22, 99, 88,188,130, 17,131,221, 17,163,134,129, 28,108, 74,237,214, 80,160,116, 54,135, 53,240,209, -202,208,232, 4, 44, 57,228, 88, 11,234, 53,104, 90, 28,109,178, 44, 19, 80,141,128, 82,200,145,183,116, 67, 88, 41,107, 35, 52, - 25,217, 85,154, 19, 5, 56, 52, 53,230, 88, 41, 9, 4,210,157, 53,242,104,121, 59, 65,183,137,210,134, 71,230, 77, 84, 87,152, -252,254, 24, 74,122,188, 29, 2,152,149,101, 68,237, 77, 46, 28, 34, 69,110,174,137, 83, 74,217, 30,188,224, 42,215,125,161,235, -247, 36,225,166,111,132,253,179,227,105,147, 29,240, 29,166, 57,111, 25, 50,208, 87, 23, 46, 0, 96, 2, 71, 84, 51, 4,227,251, - 59, 74,157,229, 28,124,212,137, 99, 72,242, 26, 33,119,106, 81, 70,181,234,190, 80,185, 6,198, 2,247, 18, 23,208, 18,239,201, - 64,112, 63,133,146, 60,188,239,145,200, 71, 55,160, 27,178,148,220, 65, 43, 33,216, 20,125,198, 37,233, 40, 8,100, 29, 13, 95, -147,226, 63, 33,106, 92, 80,226, 70,227,131, 17,135, 46,200,212, 0,161, 44,211,247, 48, 60, 11,118,238,203, 44,219,132,239, 41, - 96, 52, 69, 64,134,185,138,103, 73, 93,179, 31, 16,237, 2, 96,234,208,165, 23, 23,163, 50,199,199, 76,185,173,255,209,160, 43, - 87,221,218, 63, 91, 54,199,198,130, 23, 84,155,174,125,100, 98, 88, 0, 90,174,214, 4,107, 64,159,215,105, 30, 14,248,148,225, -191,141,174, 3, 1,180,162, 1, 76,231,115,170,170,122, 25,171,110,133,116,147,113, 47, 32,238, 53,234,191,155, 44,108,225,160, -175,154,220,186, 6, 38,131, 35, 50,246, 83,231,241, 31,228, 66, 35,214,237,102,172,109, 22,214, 54,156, 52,166, 49, 22,140,117, -106,114,125,113,171,157, 99,234,142,215,116,222,169, 18,169,238, 66,232,177, 0,109,133,179,225, 65, 5,187,210,248,249,227,185, - 67,123, 88,105, 27, 23,160, 58,156, 79,126,242, 5,133,114,149, 45, 63, 52,137, 36,184,106, 23,121,247, 47,110,144,196,169,219, - 83, 42,163, 97,157, 20,144,146,212, 26,118,224,239,179, 62, 96, 75,227,144, 1,145, 25, 91,208, 55,140,120, 74,169,216,208,124, - 15, 0, 19,243, 42, 25,143,144, 79,107, 17,145,115,158, 65,192, 71,176, 73, 71,120,247,216,211,219,240, 14, 33,143,153,121,189, -222,203, 92,123,175, 35,253,174,170,188,110,161,104,104,227,140, 3,134,214,140, 9, 85,205,201,128, 9, 84,252, 12, 16,103,155, -249,232,132, 26, 47,223,210,214,195, 53, 45,131, 34,132,202, 88, 67,141,189, 26, 85,141,141,105, 32, 78, 49, 73,165, 17, 22,200, - 14,129, 51, 34, 2,101, 27,110,161, 15,110,240,130, 81, 22,104,137,146, 54,118,204,200, 0,143,219,192,111, 5, 53,223, 45, 2, -138,198, 24, 12, 29,171,226,120,144,161, 50, 60,135,176,175,145,209, 1, 16,142,178, 14,168,162,141,249,213,117,142,168, 81, 5, -155, 78,115,212,118, 85,173, 2,243, 7,157,213,144,193, 19, 53,220,196,185,191,180, 85, 16,198,231, 81, 76, 11, 72, 70, 35, 46, - 78,105,139, 66,108,139, 98,151,164,117, 95,189,174,234,211,216, 13, 36, 52, 49,129,246,179,162,160,225,165,119, 93,139,122, 40, -163,146,139,139,201, 96,102,179,128,210, 90, 86,134, 99,213,199,119,189,127,115, 80, 85, 36,163,104, 10, 74,160,230,222,118, 63, -115,233,235,134,254, 20,101,120,134, 12, 35, 72,142, 26,155, 9,186,242,149, 38,219, 96, 14, 65, 1, 38, 77,197,138, 11,102,131, - 4, 75,121,144, 25,224,226, 45,171,151, 88,238,160,234, 29, 43,161,162, 26,189, 55, 42,121,198, 12, 81,224,225,172, 2, 45,151, - 3,212, 37, 16, 40,214, 81,189, 66,139, 20,188,140, 32, 80, 32, 2,132,128, 34, 11,255,152,118, 65, 96, 12, 34,227, 66, 10, 32, -174,168, 59,220, 59, 10,203,241,175,195,183,110,140, 25,192, 13, 87,140, 51,172, 11,187,182, 69,204, 73,107, 81, 61,150, 61,120, - 98, 66, 77,114,176, 58,183,203, 84,143, 47, 26,104,104, 66,159,182, 89,188, 93,247, 2,133,230,163,255,121,240, 70, 55,202,164, -139,182,175, 76, 27,241,240,229,155,138, 54, 45,154, 98,119, 61, 94,174, 48, 73, 27,115,101, 17, 60, 52,110, 41, 9, 43, 27,170, -110,164, 19, 60,116, 47,176, 67, 14, 32,254,196, 43,123,154, 61,104,218,159, 66, 29,182,107,194,240,133, 34, 65,151,190, 64,121, -165,129,131, 57, 57,248,189, 22, 25, 50,131,160,129,131,222,178,146, 93, 80,152, 2, 9,159,227,121,160, 46, 1,167,152, 1,228, - 24,181, 36, 94,161, 86,129,103,145,196,153, 86,120,203,173,238, 0,170,143, 1, 2, 63,124, 34,113, 4,182, 72,109,181, 40,160, - 69,104,192,218,177, 78,200,130, 45, 49,161,105, 13, 92, 79, 7, 16,176,101,141,244,103, 5,170,210, 20,201,229,150,133,216,248, -199,187,181,141,180, 37,140, 52, 65,112,200,230,129, 33, 99, 91,153, 76, 59, 47,141,180,184, 70,164, 83,152, 18,176,178,186,112, - 57, 65,218, 77, 49, 27, 21,178, 14, 34,148, 10, 85,197, 28,154, 66,168,166,106, 40,229, 2,104, 96,143,222, 68,114,227, 13,137, -122,233,132,182, 47,193, 48, 16, 40,207, 16, 67,215, 47,120,230, 73, 72,137,147, 86,183, 57, 11, 94,155, 76,148,173, 2,254, 35, -131,234, 29,112,213, 17,125,137, 92,108, 9,231,117,104,246,195, 13,157, 72,164, 2,255,188, 1,147,182,101, 5, 10,106, 35,215, -208, 15, 16,138,172,138, 0, 0,175, 37,218,121,159,171,194, 78, 5, 98, 75,171, 18, 74,153, 70,187, 77,103,129,212,182,193,202, -132, 65, 90, 42, 53, 18, 27,243, 4, 29,218,120, 16,146,158, 1,246, 54, 96,142,190,226,145, 30,182,118,203,236, 89,192,212,121, - 77, 26,181, 55, 16,241, 97, 20, 75, 50, 53,202, 74, 73,252,138,214, 96,244,189,205,174,100,106, 27,183,137, 6,162,200, 8, 38, -197, 66, 0,252, 85,105,217,188,105,174, 47,193,217,168,156,251,142,196,179,215,200, 84,116,205,165,132, 38, 64, 66,177,196, 7, -236,170, 72,170,201, 74,185,214, 68, 13,164,201,164, 50,176,132, 10,246,158,176,114,162, 40,198,135,162,243,218, 36,222, 53, 49, -104, 58, 46,186, 63,200, 8,160,139,160,102,234,110, 56,106,111,140,239,208, 96,161,154,126,213, 52, 23,151,154,118, 55, 76,210, - 20,117,151,160, 46,171,175,178,220,220,234, 63,183,169,153,176,120, 88, 2,218, 0, 11, 4,112, 25,149, 1, 5, 88,172,135, 56, - 1, 18,187, 96, 39,170, 81,112, 68,124,115, 42, 32,251,215,206,161,210,136,137, 88,203, 82, 51,238,214, 56,192,248,165, 27,221, - 20, 37,109,169,216,128,165,163,237,223, 85, 36,215,165, 93, 65, 43, 0, 84, 37,101, 14,244,225, 49,224,195,148,175, 41, 85,117, -197,245,241,142,142, 74, 41,171, 94, 27, 76, 4,108,221, 26,218,233, 28, 53, 85,130,148, 16, 55,186,224,128, 42, 23, 20, 28, 17, - 74,245,204, 68, 18,178, 86,165,137,186,215, 50,153, 27,174,253,154,117,156, 69,120,224,218, 42, 53,231,140,206, 11, 52, 72, 76, - 17,128, 64, 59, 65, 20,188,201,170,104, 34, 38, 33, 60,165,174, 25, 28, 36,143, 1,172, 21, 38, 10, 70,164,166,191,236, 26, 7, -168,216,229,206,225,152,201, 50, 90,101,112,240, 59,148,214,116,208, 29,166,203, 53, 58, 17, 0,237, 24,154,148,213,183, 22,110, -132, 31,132, 64, 88, 47,169, 12,242,202,134,194,160,150,136,148, 27,161,220, 22, 51, 59,185,204, 32, 55, 27,178, 63, 78,173,113, -131,203,209,211, 32,182, 40,197, 41,128,190,123, 42,223,152,188,172,193, 99, 25,112, 34, 28, 5,140,168,175, 98,253,156, 27, 57, -209,102,125, 20, 14,232,199, 26, 69, 44, 11,241, 56,251,202,137,170,179,178,226,204,129,231,128,233, 89,100, 43,132, 89,155,112, - 70,220, 49,148,232,115, 47,210,106, 84, 8,148, 2,106,112,144, 5,180, 49,212, 56, 11,114, 11,120,133,154,227,128, 96, 84,137, -227,102,255, 33,220,139, 32,218,110,213,221, 76,179,194, 17,242,212,128, 97,236, 86, 74,198, 0, 69,123,246,234,157,217,170, 83, -247, 4,245, 98,162,141,171,243,251, 97, 14, 66, 7,206,152,191, 89,228, 3,231,175, 8, 52,240,146, 6,253,111, 96,225, 2,130, - 37, 8, 50, 45, 1, 46,100,237,217,204,128,195,144,102, 31,241,100, 72, 93,250,253, 28,211,219,250,172,157,231,205,205,197, 86, - 73,148,227, 41, 2, 71,234,176, 36, 64,116, 21, 40, 37, 55,194, 65, 21,210,188,117,140,204,167,142,150,211, 90,156,100, 96, 71, -233,215, 78,193,120, 91,219, 0,188,155, 64,120,130, 29, 0, 61,144,172,161, 7,211,128,116,151,152,133,193,118,185,218,251,192, -178, 58,139, 5,151,148, 18, 44,144,234, 49, 3,222, 49,170, 30,105,103, 48, 14, 21,176, 80,136, 3,250, 16, 76,144,138, 34, 0, -144,186, 20, 77,253, 27, 0,207,110,148,101, 19, 55, 53, 74,219, 22,227,148,162, 90, 82, 86, 45, 34, 64, 69, 38,121, 70, 73,140, - 62, 64, 75,162,110,175,228, 70, 4, 77,185, 91,154,110,221, 66,156,208,168,210,164,237,241,255,161, 51,220,240, 88, 11,123,173, - 37, 26,127,148, 88, 44, 92, 96, 51, 19,175,159,112,118, 97, 86,106,167,142,210,117,187, 26,189,175, 9, 22,118,110,231, 8,208, - 97, 97,192, 9,132,167,143,252, 87, 89,145, 26, 65, 68,177, 36,164, 44,181,202,123,203,172, 49,205,137,249, 75,222,185, 40,241, -188, 5,202, 40, 5, 0,126, 32,211, 88, 52,123,105,117, 96,211,125,239,152, 67,254, 81,255, 95,188, 77,166,165,157, 17,248, 70, -222, 43, 25,147, 31, 12, 25, 23,159, 59, 13, 37,146, 87,234,226,145,138, 76, 87, 9,189,150,163,119, 7,190,167,128,118, 2, 55, -224, 54,113,105, 78,108,223, 40,141, 98, 99, 20,125,129, 62,198,152,169,137,118,160, 94,223,213,212,120,229, 53, 60,107,225,166, - 71,182,117,225, 66, 96, 87, 49, 20, 83,158, 25,130, 10,139,113, 61, 81, 55, 5, 70,201, 48,223, 77,151,217,219,191,150,112, 36, - 57, 55,143, 74,116, 51,206,174, 42,179, 57,254,156, 5,160,136,114,107,209,180,152, 81, 78, 54,248,191, 75,138, 62, 8,174, 86, -200,211,142, 55, 64, 25,138, 20,199,223, 84,169, 43, 34, 59, 94,102, 40, 37,107, 52,112,238, 81, 49,149, 41,171,179,121, 68, 50, - 83,129, 0, 25, 79,208, 57,206, 24, 42,181, 97, 5, 36, 81, 57, 23,123,178,253, 37,211,236,156,118, 8,172, 75,103, 14, 36,164, - 16,234,122, 72,163, 40, 40,144,161, 89,197, 40,105,200, 26,232,110,193, 93, 76,127, 39, 40,151, 26, 29, 16, 29, 96,232,101,168, - 12,125,198, 64, 83, 24,136,191, 28,122, 10,149, 90, 45,136,245,250, 2, 2, 25, 22, 33,105, 48, 1,129, 41,218,230,154,101,136, -137,179,202,233,246,182,107,185, 87, 17, 96, 93,112, 52, 26,170,226, 58, 3, 75, 13,166,170,151,122,154, 70, 59, 72,157,115, 61, - 25,189, 75,154,101, 92,152,158, 45, 74,129, 22,239, 70,131,157,118, 40,137,190, 24,205,118, 97,138, 79,102,180,121, 42,185,117, -132, 32, 43,113,213, 39, 94, 35, 37,136,233,171,228,220, 81,150, 57,205, 41,101,117, 34, 36,154, 72, 76,128, 14, 48,130,204,192, - 53, 70, 48, 72,198, 73,250,132,224,213,120, 55,129, 73,160,199, 55,158, 11,178,132,218,137, 44, 89, 26, 42, 69,231, 9, 37,236, - 94, 31, 0, 12, 77,176, 95, 74,114,170, 50,207,111, 77,123,101,252,158,166, 20,210,106, 23,184,204,103, 13,137, 80,107, 91,107, - 65, 76,213,246,172,246,128, 10,166,120, 65, 13, 7, 37,114,205,232,228,164, 77,205, 39,171,158,122, 7, 72,221, 80,163,131, 6, - 39,208, 41, 9, 53,150, 11,234,108, 83,166, 96, 22, 68,189, 66, 67,224,142,214,107,252, 35,159, 90, 32,149,236, 27, 23, 87, 34, - 16, 76,106, 83,198,238,168,164, 62,201, 81, 38, 14,141,104, 73,207,159, 83, 87, 67,148, 57, 86,170, 77,137,148,176, 83,203,134, - 74,157,148, 70,138,184,205, 32, 65, 29,213, 82,250, 28,117, 71, 99, 82, 50, 56,107, 25,164, 26,198, 4, 42, 77,169,227,197,208, - 34, 24,249,241,204,203,204,241,134,190,230,212,162,173, 13, 92,153,218, 82,195, 28,146, 85,209,150,149,210, 82,114, 96, 40,181, - 99, 21, 89,181, 40, 34,205,222, 2,206, 98, 22,197,200, 10,144, 85, 69,123,114,135, 53, 78,109, 22, 69,107,191, 86,119, 39, 84, - 59,100,202,205,122, 24,130, 3,110, 36, 93, 65,119, 84, 98,145,230, 84,171, 64,241, 14,178, 4,233,162,221, 91, 43,158,157,100, - 66,249,224,154, 17, 7,109, 27, 82,160,202, 72, 82,182, 12, 28, 76, 27, 98, 16,167,101,156,240, 36,120,125,134,156, 79,177, 9, -160, 5, 37,225,172, 4, 91,172,233, 63,107,162,166, 74,205, 40,103,215,240,135,253,215,157, 59, 11,120, 26,200, 7, 85,212,126, -215, 54,189, 8, 8, 22,192,176, 16, 65,118,132, 67,240,138, 76,155, 62, 48, 65, 21, 5,144,240, 28, 43,116, 51, 20, 45, 75,152, -242,196,178,186, 3,128, 77,138,176,207, 3,106,206, 35, 49, 92, 70,208, 47,130,192,220,223, 14,122, 75, 86, 52,225, 72,255,233, -166, 25,109, 13, 67,128, 97, 56,223, 45,173,151,137,228,126,183, 8,117,203, 90,230,156,152, 96, 94, 43, 17, 78, 80,126,130,102, -247,190, 33, 99, 61,201, 82,179,154, 66, 42, 41,221, 37, 41, 98, 64,129,143,196,164,229,156, 70, 22,252, 94,232, 97,204, 40,244, - 1,157,190,218,173, 39,127, 75, 86, 78, 50, 71, 67,160,155, 20, 34,188, 57,137, 26,212, 96, 11,184, 29, 90, 77,189,183,185, 75, - 1,202,140, 87, 34,107,171, 83, 28, 79,201,210, 88,172,176,227,188,169, 2, 23, 25,121,226,148,187,154,153, 12, 85,234, 33, 2, -105,216, 2,200,118,110,244, 74,221,116, 2,192, 16,159, 51, 99,218,221, 34, 79,144,234, 12, 25, 92, 40,201,160,152, 74, 83, 30, -105,235,184, 83,160, 85,225,235,101,229, 59, 90, 16, 82,145, 12, 70,244,110,127, 46,148, 38,107,106,154,121,205,101, 77, 8,142, -232,169, 17,130,154,144,248, 53, 9,125, 75, 41,112,221, 93,172, 50,208,151,159, 54,211, 18,209,178,212,166,178,106,209,137, 82, - 19, 75, 35, 77, 75,188, 90,108, 5, 73, 71, 1, 36,186,235, 23, 24,195, 5, 56,238, 14,172,172,148, 49, 53,178, 34,171, 49,125, -183,210,219, 24,128, 73,210,168,151, 9,174, 69, 21, 55, 18,201,162, 82,148,244, 36, 36,177, 14, 64,229,105, 37, 11,197,224,201, - 87,104,105,166, 36, 90,143,118,184, 67,157,248, 44,147, 29, 88,160, 0,224,209, 10,123, 0, 50, 92, 18,134,105,154,135, 53,101, - 20,184,201,132,228,244, 34, 37,186,174,117, 38, 99,104,127,203, 88, 82,107, 88, 69, 12,169,110,178,242, 43, 0,151, 11,103,176, - 39, 65,127, 8, 1,156, 15, 39,217,194,166,190, 77,156, 29, 68, 51,136,235,162,123,161, 76, 59,196,214,151,141, 64, 83,126,110, - 1,174, 44,176,199,102,149, 82, 1,208,153,178, 24, 42,116,135,108,130,188, 42,156, 2,136,232, 69, 49,237,169, 53,201,137,115, - 0,135, 45, 43,101,133, 52,206, 82, 81, 29,234,181, 12,148,204, 21,241,176,220, 6,183,149, 45,247,253,125, 48,234,214, 11,124, -234, 61, 93,160,182,216, 0,109, 36, 43,169, 17,133,247,131, 45,245, 88, 48,145,152,251, 17,175,171, 76, 39,204,151,132, 74, 21, -139,248,137, 22,116,253, 80,104, 3, 61,124, 48, 38,182, 65,150, 96, 73,196,239, 18,135,131,193,176, 73, 35,167,159,141,149,160, -214,115,165, 44,182, 65,153,162,154, 22,109,154, 62, 89,100, 35,165,152,160,159,121, 43, 89,145, 37, 99,115,253,172, 18, 65,186, -122,162, 63,132,134,172, 82,182,176,159, 53,110,130, 90, 51, 50, 73,210, 54,115, 16,128,171,136,184,163, 79,122, 32,198,153,179, - 10,149,181,240,228, 21,100, 44, 96, 28, 40, 11, 24, 89,216, 88, 48, 67, 34, 17,229,152, 64, 75,138,178,245,253,206,115,199,148, - 61,246, 24,214, 86,154,177,185,229, 68, 91,214, 29,104, 12,177, 35,133,195, 81, 40, 66,169,189,111,234, 40, 5,124,122,198, 46, -132, 46, 69, 25,250, 10, 12, 42,100,165,227,228,248, 88,115, 35, 97, 4,200, 85,167, 84,174,212,104, 75,161,181, 37,110, 80,184, - 27,163,143, 82, 35, 2,119,222,191, 68,237, 27,148,249,194,200,114,206,146,152,193, 84,176,158,167, 76,193,105,174, 30,213,168, -217, 43,220,248,132,209,181, 71, 24,123,113, 79,198, 94,184, 1,218,129, 28,179, 69,174, 2, 53, 80, 65,176, 16,202, 53,167,159, - 7, 48,133,219,140, 28,103, 32,223,120,175,189, 28, 27,105,112, 6,161, 33,113,150,138,205,135, 14, 48, 16,141, 60,177, 64,169, - 79,162,182, 37,210,228, 86, 32,207,234, 32, 74,110,123,143,131, 42, 70,195, 50,146, 54,122, 39,114,169,106,156,242,220,116, 63, -100,230,148,210, 15, 3,205,137, 57,225, 29,212, 24, 48, 22, 37,131,230, 36,225, 40,176, 60,199,185,253,172, 97,153, 64,219, 32, -169, 16,218,125,238, 76,241,208,238, 75,151, 52, 67, 4,180,245, 61,115, 66, 33,157, 75,208, 80,203,156,177,105,223,211,192,147, -167, 18, 47, 2,234,138,150,146, 58,230, 20,208, 21,204,110, 58, 86, 40,148,146, 4, 65,174, 78,241,100, 7,221,110,209, 4,138, - 51, 13,126,107, 53,205, 77, 15, 66, 3,112, 59,222,141,185, 41, 32,145,207,201, 74,193, 68, 24,121,253, 27, 4, 45, 64, 21,136, -164, 74,131, 80,163,108,160,252,146,181,144, 43,244, 78, 20, 54, 52,188, 81, 86,130,170, 81, 97, 3,207,122,206,188,194, 49,207, -147, 85,128,110,130,111,229, 84,151,108, 83, 67, 37, 73,118,154,139,186,206,219, 13,220, 64,164, 68, 18, 22, 55, 29, 39, 20,234, -164, 81,207,192,235,106,140, 40,183,157,153,100, 13,146, 45, 34,134, 42, 17, 9,183,137,125,110,106,251, 72,235, 98,137,200, 28, -181,151, 25, 55, 23, 80,126,227, 84, 5,226, 84, 15, 23,173, 61, 87, 68, 95,131,138, 81,113, 96,144,248, 4,230, 70,123,153, 37, -163,111, 11,150, 12, 18, 10,191, 2,144, 77, 64, 3, 26,105,124, 12, 20, 58, 0,192,161,160, 13,161,108,101,179,153,178,172,208, - 34,177,176,103, 89,168, 9,208, 39,141, 19,162,142,166,234, 60, 59,183,187,144,211,204, 24,202, 19,228,220,111, 2,245, 45,104, -144, 83, 96,205,144,104,235, 85,200, 11, 26, 87,149, 57,218, 72, 6, 78, 62,100,156, 11,246, 23,231, 22, 32,157, 90, 18, 39,240, - 82, 5, 94,183,160, 0, 73, 6,184,133,194, 87,219, 87, 76, 64, 24, 37, 39, 86, 40, 25, 42,113,231,197,178,121,117,116, 12,150, -126,238, 44,152, 17,107, 86, 9,164,239, 44,181,137, 34, 0, 73,173, 16, 65,158, 8, 32,101,180,138, 37,240, 4,160, 99,190,162, -211,136, 13,124, 4,219, 74, 11,160,182,105, 69, 49, 78,132, 65, 31,163,117, 24,155,102,221, 4,209, 51, 7,254, 1, 37,224, 11, - 17,232,122,228,178,149, 55, 90,225,160, 24, 11,200,232, 26,115, 36,129,236, 26, 93,123,220,119, 10,101, 26, 43,212,232, 40,218, -170,106,211,157,130,206,180, 94, 90, 87, 92, 0, 5, 57,234,166, 30,202,146,186, 2,187,238, 0, 26,116,110, 11,163,178,170,210, -148,202,137,117, 34,194,218,250,114,198,130,213,172, 53,250,159,228,131,101,236, 64, 89,181, 71, 64,213,140,161,205, 29, 11,102, - 55,124, 15, 80,138, 45,116,120, 91, 26, 88,153, 20,172, 93, 39,113,156, 65,126,119,104,164, 82,188, 45,237,180,127, 12, 26,241, - 75, 9, 22,205, 0,238, 43,141, 0, 89,167, 89,182,165,139, 17,233, 62,100, 58,240,206,226, 97, 16,131, 18, 47,103,154, 32,146, - 57,146,139,125,227,164, 40,238, 89,140,252, 97,136,208, 58,120,174,157, 70,201, 99,203, 56, 9,112, 69, 69,177,116,168, 49,132, - 10, 83, 81,230,105, 77,188,214, 68, 21, 3,152,161,215, 49, 5,234,123,148,213,213,214,210, 50, 40,211,229, 28,101,143,109,130, - 93, 15, 91,214, 85, 70, 35,221,201,171,240, 9, 89,217,115, 86,251,247, 69,172,194, 41, 58, 95, 35,236,154,165, 96,129,160,105, -205,238, 77,226,181, 80, 89,201, 44, 96,121,160, 98,196,201,161,234, 39,196,169, 46,100,247, 27,251,244, 18, 73,114,100, 18,128, -206,162,103,224,128, 50, 90, 13,247,180, 5,250,120, 75, 70,152, 51,240,209,165, 81,228, 67,240, 22, 56, 28, 8, 76,243,186, 96, - 35,197,202, 13,101,107, 5, 68, 2, 29,227, 16, 43,192,141,142,129, 99, 5, 26, 70,115,177,251, 0,109, 32,167, 62,202, 2,233, -117,134,212, 36,136, 91, 64,214, 32, 20,179, 74, 40,214, 49,102,127,114, 93, 82, 76,117,112, 18,196, 30, 69, 44, 16,212,129,180, - 21,145, 10,206,167,109,182, 28, 32, 76, 3,154, 53,243,203,212, 58, 88, 0,181,236,247, 66, 82,218,148,215,116,180,178,121, 93, - 32,165,110,250, 18,168, 26,232, 64,173,138, 50,160, 28,142, 66, 69,192,152,221,200, 66,169,153, 65,106, 0,178, 42,210,106, 94, -139,165,132,171,149,142, 42,161,242, 20,100,183, 1, 10, 85, 34,192,136,116, 48, 0,143,168, 68,112, 2,206,115, 71,145,234,100, -206,202,113,227, 60,169,198,157,142, 10, 5,150, 12, 56,245,191,205, 77,143,154,244,138,102, 17, 48,216, 9, 57,218, 82, 64, 53, - 17,128, 62, 21,218,203, 34,108,155, 25,203,211,156,106,225, 5,231,111, 89, 93, 79, 4,242,174,214, 36,102,108, 0,132, 89, 89, -149,133, 85,237,218,118, 65,158, 81,216, 70,132, 87,114,237,190, 47, 22,118,117, 65,193, 18,152, 83,249, 74, 40, 57,130,232,145, -105, 8,176,138,195, 96, 80,102,171,206,180, 85, 58, 43,215,234,242,236,216, 43, 56,227,254,185, 0, 12,192,126,154,212, 83,139, - 26,225,177,157,179, 26,101, 82,167,167,176, 5,102, 66,167,105, 91,117, 25,166,189,114,250, 92, 22,152, 10,100,127, 94,170,157, -119, 43,100,199,243, 68,223,251,226,141, 38,164,100,113,161, 17,253, 94, 0,225, 96,202, 65,142, 42, 94,169,235,146,183,140,179, -237,111, 42,250, 11,120,203,121, 98, 74, 18, 8, 73,190,125,243, 48, 57,109,208,236, 53, 94, 10,100, 45,183, 30, 50, 32, 39,177, - 38,137,105,115,240,110, 11, 73, 66, 41,123,123, 20, 41,192,209,228,236,168,186,131, 60, 25, 73,108,239, 24,123, 1, 39,138, 88, -214,196, 78,213,143,104,151,151,186,174,101, 16, 78,180, 75, 12, 97,146,149,205,221,180,150, 89,107, 66, 46,140, 18, 15, 75,123, -162, 57,179,192,104, 81, 35,162,152,160,113, 78, 43,254, 96,252, 95,129,250, 58, 18, 88, 61,133, 23,116, 40, 54,218, 8, 56, 79, - 30, 85, 16, 67, 23, 51, 25,179, 59,163,238,129,162,156, 93, 77, 10, 0, 57,169,166,189,230,185, 99, 7, 98, 2, 76, 8, 3,226, - 55,241,139,165, 77,177, 54,202,124, 18,109,129, 71,193, 49, 67,212,139,105, 19,196,179, 29,249,169,192,207,157,228, 57, 83,115, - 71,221,252, 48,107,208,112,177, 53,162, 49,102,131,112,168,131, 81, 75,113, 2, 68,183,161,193,144,233,196, 56, 87, 85, 8, 99, -165,214,234,194, 53, 9,111,156, 80,207,168,184,200, 34,192,150,200,126,101, 97,202, 84, 42,138,190,232, 4,189,237, 37,157, 59, -224, 19, 82, 35,111,139, 64, 74,126, 62,141,225,193,146,151, 27, 19,230,180, 55,118,196,169, 14,139, 45, 90, 3,255,149,165,205, -132,172,129, 6, 39,198, 71, 76, 16, 81,135, 20, 17,237,208, 13,206, 28,119,108, 25,224, 10,154,148, 80,212, 94,202,100,228,235, - 7, 85, 21,155,255, 16, 58, 29,156,245,231,205,169,228, 38, 11, 52, 70,220, 53,122,173,219,218,149, 38,187,183,154, 41, 51,193, -169,210,136,135, 73, 40,152, 89,183, 55,239,169, 94,210,126, 32, 69, 92,208, 39, 36,141, 25, 58,124, 81,202,242, 56,216, 2,155, - 36,129,218,103,100, 70,200, 65,149, 85, 13,188, 51, 35, 40, 73,241, 5,160, 84,131,136,225,222, 44, 70, 5, 57, 90,173, 71,131, -131,205,169,245,238,212, 51, 96,136,208,183,209, 41,211,239,217,174, 83,220,188, 53,170, 74,202,164,179,129, 18,226,208,213,178, - 66,163, 24,129,118,178,212, 0,116, 85,231, 42,217, 30, 65,124, 13, 98,137,125,175, 48, 65, 37,113, 7,100, 84,199,220, 40,218, -198, 80,211, 13,150,174,236,152,128,179, 78, 13, 98,179,209,188,237,212,160,151,232, 90,134, 46,135, 20, 64,120,138, 56, 76, 63, -225,110, 76, 5, 8, 34, 42, 20,204,128,184, 1,218,137,166,198,190,129,221,145, 92,239, 68,148,120, 97,232,102,204, 12,186,229, - 0,111, 40, 32,205,169,217, 11,207,192,184,148,169,120,115,137,136, 84, 80,135,190,145,102,132,236,122,105,116,162,155, 46,221, - 83,141,164,138, 43,146, 53,156, 13, 93,239,146, 84,222,236,188,144,134, 39,128,202,156,132,226, 10,246,161, 27,255, 93,107,142, -104, 25,184,252,209, 63,185, 81, 95,114,205,121,201,148, 65, 84,168,176, 72, 72,203, 54,133, 5,218, 28,194,102, 10,186,205,145, -238, 46, 89,195,154, 32,165,213,144,224,162,219, 85, 28,215, 19,213,188,138,124, 70, 96,151,131,231, 4,174, 99,140,242, 38,185, -197, 78,130, 65, 49,105,197, 71,157,223,188,254,162, 81, 53,114,207,139, 25, 30,231, 18, 87, 64, 40, 55, 37,133,237,168,233, 82, -137, 6,158, 92,217,229,126, 11, 99,155, 69,149,222,115,174, 54,118,205,182,110, 59,156, 50, 42,108,245, 52, 87, 80,211, 79, 20, -187, 83,106, 88,107,133, 82,132,254, 92, 64, 80, 74, 56,117,161, 2, 59,163,224,186,178,166,254, 27,216, 0, 52,139,174,120,199, - 37, 0, 88,192, 39,101,206, 29,148,216,121,247, 29,204,181,232,226, 33,224,124, 32,186, 29, 83,222,209,174,152, 3,128, 75,178, -226, 52,142,173, 89,165, 57, 38,180, 18, 38,200,106, 13,223, 95, 5,122, 55,192,254, 34,107,200,236,220, 80,171, 68, 27, 33,165, -214,144,212, 86,240, 10, 60,175,112, 76, 77,175,223, 90,171, 70,180,108,160, 45, 84,168, 35,151,176,149,166,165, 88, 7, 17, 58, -175,192, 57, 67, 24,103,178, 7, 37, 99, 58,254,127,186,222, 44,214,186, 45,187,239, 26, 99,174,189, 79,243,245,183,239,202,213, -223, 42,199,109, 57,196, 22, 78, 28, 39, 16, 64,142,128, 32,144, 72, 68,128, 72,121, 0, 30,224, 33, 18, 47,188,241,200, 19,111, - 72, 72,145,120, 64, 81, 64, 40, 36, 36, 2,146,216,142, 19, 57, 78,202,177,203,198,213, 87,185,110,221,106,110,127,191,251,245, -237,105,246,154,131, 53,231, 28,205,127,172,125,110, 69, 55,247,250, 59,231, 59,103,239,181,215,154,115,142, 49,254,255,223,191, -172,100,112, 94,173,115,132, 54,145, 81,209,224, 97, 44,235,226, 60, 19,174,120,221,221, 4,136, 14, 33, 98,154,162, 99,230, 7, -143, 56, 86,131,133,141, 61,138,149, 32,137,116,160,175,169, 3, 98, 72,231,221,182, 46,181, 42,124, 54, 92,186,192,129,190,117, -157,203,200, 45,183, 13,186,167,223, 41, 46,214,186, 25, 70, 31,180,187, 97,222, 85, 61, 32,193,225,180, 64, 62, 59, 7,168, 75, -112,100,210,127, 54, 99, 43, 70,103,245,165, 51, 63, 26, 45,175,214,152,251,111, 58, 0,126, 51,133, 40,193,143,255,197, 23,101, - 78,194,174, 0, 82, 84,225,212, 82, 75,243, 97,104,183, 13,180,174, 93,172, 66, 23,177, 89,241, 20,107, 39,254,194, 65,202, 18, -202,237, 59, 89,101, 40, 36, 21, 32,234,217, 42,249, 38,221, 46, 70, 45,152, 5, 31,109, 42,225,181, 60,174,186,157, 99, 55,175, -197,125, 57, 27, 24,111, 62,171,224,247, 20,156,208,142,179,118, 80, 18,102,185, 29, 71,194,226, 36, 40, 14,139,205,151, 57, 42, -242, 12, 11,130,220,110,150, 36,226, 19, 65,161, 69,188,254,162,155,130,115,213, 53, 11, 60, 44, 63, 18, 51, 87,175,170,196,219, -180,136,148, 44, 41, 17, 44, 87,214,200,174,183,184, 83,171,248, 4, 54,244,194,214, 26, 35, 31, 39,132, 66, 62, 47, 57,188,151, -156,183,210, 27, 9,173,172,107, 16, 93, 99,251,129,112, 14,172,224, 56, 85,119, 17,139,206,228,138, 30,236, 38, 56, 90, 50, 56, - 22, 10, 69, 86,121,216,249, 50,164, 37, 87,161, 86,204,216,255, 49,101,201, 7,199, 2,226, 98, 69,195,145,150,149,159, 47, 85, - 95, 37,134, 64,144,177, 59, 42,189, 41, 44,131, 2, 26, 5, 59, 11, 77,188, 2,139, 8, 0,103, 10,168,112,145, 61, 80,247,124, -148,146,188,233,240,184,116,133,120,241, 62,103,154,161,234,125, 36,171,176,146,117,107,206,132, 71,238,142,100,129,174, 21,123, -177,161, 39,163,145, 30,168,212, 71, 1,119, 73,160,170, 35, 88, 37, 68, 91, 43,229,186,123,138,141,156, 88,124,145,183, 77,145, -210,129,135,247, 42,183,228, 61, 53,106, 25,172, 9, 30,133,187, 10,110,103,176, 52, 57,167, 64,120,213, 10,167,236,231, 95, 11, -213,116, 84,227,220,122,160,190,217,168,181,160,134, 73,194,238,234,218,152, 50,185,208,173, 20, 94, 1, 61,226,253,142, 67, 40, -152,129,211,189, 47, 73,182, 46, 21,138, 46, 9, 63, 57, 83,104,130, 58,192,165,232,102,220,115,200,197, 69, 97, 6,167,178,140, -138,105, 50,151,203,152, 33, 23, 5,209,228,252,132, 70,120,155,151, 53,189, 38, 21,252,102, 42, 17,230,178,108, 88,231,187, 97, -207,108,240,152, 73,195,159, 42, 34,147,109,141,102, 16, 29,167, 28, 8,197, 82,123,228,176,142,212,140, 6,201, 4,222,251,241, -185,118, 97, 92,143,202, 37,141,102,157, 84, 63, 83,161,101, 47,125, 19,239,238, 20, 41,206,172, 48, 81,105, 71,183,159, 45, 47, -126,170, 4,153,216,181,207,254, 74, 17, 77,217,137,185,162, 61, 40, 99, 79, 42,160,132, 15,170, 19,144, 22,147,183, 48, 83,163, -114,235,189, 66,227,186,192, 66,103, 63,111, 45,237,192,244, 52,145,140, 41, 21,225,253,197,189, 70, 53,199,117,109, 59, 11,179, -174, 92,176, 81, 35,227, 60,158, 73, 12,136, 64,230,111,204, 98, 24, 72, 76,206, 47, 94,249, 40, 61, 70,212,148,190, 41,210,179, - 66, 10,156, 68,104, 5,182, 30, 9,105, 71,209,224,199, 25,187,172, 68, 64,169,133,205, 81,129,161,118, 98,108,102, 49, 35,239, -163, 21, 0,153,176,228, 57,243, 4,162,157,181, 0, 49, 16,167, 2,139, 79,246,137,123,156, 34,132,126, 48,116, 8,216,124,250, -194,105,195, 68, 53,246,122, 30,137, 26,139,128,191, 72,186, 23, 59,138, 17, 54,233,232, 10, 6,255,157,156,184,104, 98, 21,241, -185, 91,127,248, 10, 90,124, 24, 70, 28,124,225,103,237,206, 13,220,160, 48,171,184, 96, 75,211, 90,151, 65,180,111, 42,249,132, - 60, 88,185, 1,246,181, 6,156,212,205,233,239,112,158,237,241,202, 43,237,109,222,245,115, 37,200, 20, 40,177,241,175,162,130, -133,131,167, 31,145,172,165, 71, 94,242,138, 82, 73,142, 10,229,252, 81,242,106, 92, 66, 65, 7,131,115,102,182, 77, 57, 94,152, - 65,207,202,144, 79,142,118, 57,246, 17, 29, 91,214, 60, 69, 75, 56,130, 52,138, 23, 61,214, 10, 23, 36, 89, 48,226,141, 32, 6, - 22,230,222,206,247,119,215,137, 10, 7,107,221, 59,176,150,244, 94,246, 49,181,236,159,119,177,248,157,209, 93, 41,184, 81, 24, - 71,124, 30,138,107, 68,169,150,176,133,142, 14,249,212, 53, 24, 24,240,224,179,123, 11, 2, 98,222,131, 18,173, 33, 92, 5, 78, -105,188, 90, 98, 81,116, 87,244, 52, 84,245, 89,169, 42, 58, 43,233,198, 84,162,167, 89, 20,219, 54, 55, 89, 26,217, 72,228,195, -112,173, 78,113,211,206,113, 75,228,171, 32,148,181,156, 51,209,207,228,176, 17,131,220,245,131,130,186,218, 27, 97,219,237,134, - 14,131,245, 51, 62,187,121, 30, 66,184, 18,203,126,181,144,158,185,134,218, 67, 99, 91,107,157,161,187,200, 48,146,156,149, 80, -105,126,117,189, 71,218,109, 48,233,209,179,223, 39,243, 0, 17, 53,214, 59,107, 4,107, 87,206, 23,184,254, 3, 83, 91, 58,213, -171,244,142,200,166,229,204,118, 20,109,251, 69,118,129,170,122, 66, 65,165, 87,152,208, 9,154, 30,108,244, 66,239,113, 28, 62, -166,114, 90,139,189, 8,126, 7, 39,206,120,158,254, 97, 75, 72, 64, 69, 47,249,238,129, 22, 24, 76, 95,179,150, 47,188,155, 24, - 10, 80, 40,169,146,253,198,194,154, 36, 49, 47, 86, 98,185,149, 39, 87,144, 88, 39,146,103,246,130,250,129,252,123, 5,117,220, - 16,226,225, 66, 56,178,240, 14, 78,215,107, 61, 59,195,113, 68,220, 6,144,142,133,234,122,184, 4,253, 49, 40, 81,245,120,194, - 23, 64, 96,250,169,114,149,200,135, 33, 33,193, 79, 69,238,193, 58,228, 33, 8,103, 6, 6, 50,224, 76,161, 21,181,141, 98,124, -129,138,244,204, 7,144, 52,168, 9, 29, 6, 71, 7,133,131,220, 86, 72,246, 52,204, 19, 69, 84,176,255, 99,115,100, 85,198, 15, - 17, 75,129,168, 88,134, 89,106,241, 3, 4,107,143,223, 99,130,129,233,141,243, 86,194,235,227,137,119,246,164,155,240, 44,207, -143, 67,205,159,179,179,221, 86,184,182,190,165, 11,159,113, 48,153, 88, 30, 44,120,156,243, 74,114, 24, 92, 12, 51,242,131, 9, -238,255, 69,219,249, 46, 20, 36,224,129,103, 19, 41,103,158,140,174, 15, 53, 63,107,218, 58,225, 89,226, 62,174, 21,186, 77,146, -216, 8, 99, 93,130, 7,219,206, 74,109,253, 40, 4, 10,116,208,171,152, 35,163, 68,151, 71, 32, 30, 53, 90,165,209,253, 98,136, -124, 78,121,230,140,115, 86,128, 43,219, 65, 94, 38,183, 90, 38,140,175,183, 96, 57, 84,252,122,192,115, 14,168, 39,184,169, 48, -160,224,252, 67,156, 62,207,110,121,140,167,135,205,214,165, 85,103,243, 71,163,168,141, 25, 29, 23, 40,144, 13, 11, 86,255,251, - 5, 86,103,140, 90, 5,196,109, 36, 40, 6, 67,161, 29, 34, 10, 5, 95, 97, 83, 48, 60, 10, 97, 51, 5,146,232,150, 77,107,217, - 92,173, 93, 62,233,104,201,198, 13,253,159,101,131, 61, 71,207, 59,219,179, 82, 60,214,151, 75,160,107,125,212,162,135,211,131, -205,198, 51, 18, 4,194, 96,104,154,226,126, 44,131,114, 74,243, 32,186,219,231, 91,107,180,136,139,147, 16,173,195,166,247,120, - 29,237,232, 9,174, 91,159,133,175, 51, 25, 38, 21,195,169, 16,111,228,172,107, 46,123, 63, 48,128, 69,115,218,244,244,194,222, -117, 56,171, 59,141,138,155,180, 98, 42, 90,149,201,126,113,157,224,249,178, 39, 91,146,117, 56, 3,175, 88,197, 28,173,123,230, - 21, 29, 14,230, 9,133, 81,173, 78, 78,195, 98,252,123,224,115,174,208,106,226,189, 62, 44,175, 92,103, 24, 7, 75,145,190, 68, -104, 3,179, 83,105,137,237, 53,107, 49, 50, 23, 25, 83, 11, 72, 86, 52,183,120,144, 9,197, 49, 48, 51, 41,120,136,101, 73,169, - 92,177, 17,129,230, 1,206, 85,174,134, 93,161, 71, 11, 3, 94, 80, 71, 25, 5, 46,104,154,227,195,123,114,200, 76, 17,247,112, - 26,131, 47, 85, 86, 18,155, 71, 65,150,180,109, 48,201, 85, 0,115,184,238,189,172, 32, 40, 41, 0,242,208,113,131,228,252,103, - 94, 29,166,214, 49,180,152,103,189, 39,195, 76, 2,232,232, 28,236,185, 39,152, 33,161, 42,111,228,134, 78,182,174, 66, 88,127, -236, 84, 77, 57,235, 26, 43,101,251,161,162,248, 99,183, 5, 81,206,183,102, 14, 35,172, 51,241, 67, 32,106,115,201,181,251,195, -157, 43,133,188,162, 26,123, 39,204,249, 77, 17, 14,158,119, 86, 91,207,120,237, 67, 48,217,219,227, 74, 90,225, 42,201,218,181, -111, 55,203,120, 55,118, 81,102,102, 82,131,106, 16,190,166, 96,162, 42,161, 76,230,117,116,113,204,181, 25,244, 45,222, 37,235, -111,114,210,195,218, 80, 53,114,179, 55,105,135, 75,224,103,182,234, 71, 42,175,196,244,251, 40, 32, 73, 66, 84,217, 91, 47,176, - 42,101, 71,143, 10,140,215,128, 69,193, 6,224,153,252, 80, 95, 74, 73, 88,218,128,250, 84,181, 11,199,172,223, 64, 83, 99,195, - 82, 97,102,111,181,110, 18, 65,179,226, 38,160,226, 87,182,180, 58,209, 54, 46,180,170, 35, 7,221,158,208,105, 56, 44,236,125, - 87, 72,155,116,101,126, 70, 54,219,168,178,232,129, 4, 1,118,235, 3,107,191,167,244,112, 95,245, 94,147, 26,148,202, 98,172, -119, 19,238, 10, 71, 1, 68, 17,172,213,143, 39,203,102,110, 60, 1, 31,159,200,236,247, 9, 10,181, 35, 85, 80, 84, 96,199,157, -215,209, 59,108, 27, 30,120, 36, 6, 98, 38, 15,213,250,120,206, 99,230,110,255, 27, 44,247,225, 31, 55,110,123,142,243,208, 13, - 93,139,173,229,170,118, 85,188,217,233, 80, 87, 72, 16,120,213, 90,242,226,169,130,197,249, 21,182,166, 15, 41, 62,248,170,122, -232,218,114,200,152,182,174,233, 32,183,161,171,165,109,167,105, 48,214,227, 47,128, 45,180, 52, 26, 20, 37,141,139,143, 92, 93, - 16,112,185, 51,141,115,175, 8, 43, 66, 14,110,154,183,174,132, 61,159,189,112, 48,150, 93,121,139, 98, 38, 87, 66, 34, 33,206, - 0, 22,171, 86,128,228,121, 51,195, 33,131, 49, 54, 82,162,219,144, 84,222,116,145, 13, 3,225, 55,171,204,104,247,193,218, 98, - 20, 1,179, 44, 57, 17, 64, 40,139,248,226,224, 80, 66,161, 11,237,119,179, 59,133,181, 47,128, 12,101,149,141, 45,123, 83, 14, - 73, 40,206,125, 55,112, 28,144,152, 43,164, 17,174,125,180,121, 51, 69, 93, 1, 35, 15, 64,225, 38,147,221, 87, 20, 74,106,191, - 97, 45, 99,192, 98, 82, 25,233,115,113,176, 9,101, 61,108,192,146,240, 61,126,175,136,195, 65, 96, 40, 45, 43,133,172, 30,164, - 11,115,174,235, 57, 70, 4, 49,219,215,120,207, 2, 27,125,137,215, 10,160,214, 85,107,146,163, 42, 5,184, 10, 90,143, 80,108, - 52, 44,104, 56,191,102,135, 90,216,251,177, 84, 54,247,166, 11, 92, 31, 0,130, 48,151,232, 40, 24,159, 29,218,195,177, 49, 49, -216,137,116,206, 93,241,176, 41, 73, 41,207, 32,244,243, 3,184, 7,166, 8,161,147, 62,176,162, 37,162, 83, 91, 11,209,238, 41, - 31, 70,151,142, 64, 70, 13, 71, 60,101,213, 57,254, 9,174,194, 98, 77,171, 49,211,108,213,101, 93, 10,145,165, 98,106,243, 79, -225,228,207, 76,157,137,200,156,128,231,187,112, 28,148,139, 9,121, 65,160, 42,241, 59,157,188, 41, 49, 82,137,240,151, 81,110, -249,114, 8,194, 50,226,176,167,166, 4,121,208, 36, 21, 24,111,141, 31,184, 89, 5,193,172, 34,165, 77,187, 81,145,116,201, 62, -178, 41, 53,251,210,201,179,215,193,210,181, 84,164, 67, 43,161, 93,131, 58, 42,208, 30,184,212, 14, 35,109,173,175, 53, 2,169, - 84,119,193,166, 79,226, 12,108, 50,222, 73, 98,125, 23, 61, 36,170, 71, 28,163,161,199,172,120,142,231, 64,162,163, 90,171,142, -129, 39, 53,244,118, 1,158, 10,167, 37,148,228, 99,190, 60,154, 20, 21,220, 64, 78,116, 43,227,254,154,149,113, 96,107, 18,153, - 21,183, 12, 95,186,137,247, 88,103,253,162, 57, 19, 54,138,156,108,143,237, 27,104,217,131,178,181,238, 64,209,121,190,135, 40, - 25, 29,179, 93, 83,158,253,243,113,122,232,100, 27,177,173,149,250, 28,104, 43, 95, 33, 5, 64,183, 23,237,117,176,119,165, 38, -129, 41,169, 62,123,155,246, 32,216,188, 40,156, 83, 33, 35,229,181,252, 29,218, 35,200,249,165, 4,217,216,223, 76, 18,206,148, - 87,226, 59, 61,245,165,106,138, 57,197,180,230,181, 58,188,240,169, 50,210, 52,110, 66,250,155,219,174,120, 15,193, 30,139,112, - 1,216, 62,136,240,100, 69, 42, 2, 42,216, 10, 59,237,162, 39,143, 33, 4, 5, 24,102, 21,251, 34, 40,113,242, 90,171,253, 48, - 71, 58,218,158,144,249, 4,152, 78,243, 36, 51,103, 66,148,112,182,239, 8, 99,139, 44,183,170, 19,238,147, 4,236, 46, 12,185, - 50,234,219, 46, 25,207,187,230,175,187,112,131, 34,150,114, 4,171, 20,168, 46, 65,181,219, 31,226,178,114, 44, 33,192,166,181, -165,138,255,185,172, 22, 63, 15,112,112,133,237,120, 24,125,174, 24,153, 67,128, 55,206, 8,122, 36,211, 21, 14, 53,173,207,206, -117, 3, 41,172, 45, 51, 93, 88, 8, 68, 70,105, 44,194,208,130, 94, 85,228,136,130, 65,103,131, 95,107, 19, 22, 85,107,173,142, -131, 85, 41, 28,211,185, 18,168,226,190,104,105, 11,178, 47,130,182,193, 79, 37,219,147,170,142, 84,172,253, 42,115, 18, 48,153, -139,197,253,249, 18, 86, 36,180, 72,114, 5, 50,227, 42, 25, 5, 91,176,204,249,148,153, 83, 89,227,235,108, 86, 80,247, 18,155, -189,177,116,237, 96,191,191, 83, 2, 24,199,224,214,102,170,237,117,111,178, 72,192, 34,113,221, 21, 82, 16, 98, 50, 54, 43,115, - 53,216,134,173, 89,210, 67, 28,201,113,136, 30, 85,152, 85,156, 69,241,161, 35,208, 29, 59, 26, 82, 67,183, 81,194, 90,225,246, - 51,177,182, 34,101, 20,171,109, 18,235,145, 38,123,250,150, 85,219,218,230,109,107,182,132,250, 93,210,220,217, 72,145, 72,149, - 4, 85,121,153, 96,148, 54,238,155,254,222, 74, 25,221,142,110,107,134,176,159, 50,245,235, 97,243, 92,195,246, 82, 58,220, 75, -178,234, 22, 66,135, 69,241, 67, 80,209,174,214,192,193, 46,155, 96,221,244,131, 65, 66,206,154,111,192,116, 23,160, 97,154,220, - 15,110,215,181,118,241,103,219, 27,183,155,152,233, 8,208, 13,205, 57,210, 54,230,185, 86,239,120,184,224,216,244, 25,100, 97, -181,227,129,111,135,128,158, 99, 2, 4, 74,209,200,241, 41,109, 72,186,222,110, 38, 24, 63,219, 40,172,120,107,189,234,137,161, -162, 83,165, 11, 46, 71,198,233,174,171,216, 41, 35,123,157, 33, 49,222, 87, 81,181,187,145,230,250, 87,102,234,127,183,204,154, -179,190,252,179,105, 39,165,173, 68,102, 55, 99,201,199, 4, 0,126, 73, 1, 18, 34,112,113, 25, 98, 24,247,243, 58, 64, 24,196, - 43, 74, 27,120,170,147, 93,163,164, 3, 70, 86, 39, 83, 18,156,212, 68,173,130,164, 40,217, 23,133, 69,170,164, 36, 76,162, 37, -195,241, 30, 61,180, 36, 37,105, 82,116, 18,166, 23,161,217, 14,135,158, 53, 24,208,166,236,181,121,244,202, 23,158,229,240, 8, -190,147,125, 81, 83, 74, 27,138, 44,247, 80,201, 67,213, 10,246, 51,145,172, 41,112, 7,113,137, 57, 25, 65,116,109, 20,155,170, - 34,109,138, 74, 41,110,140,139, 86, 63, 39,124,118, 84,178,182, 41, 77,250, 48,137,251,186,219,102,185,229,141,218, 5, 45,211, - 62,218,188, 19,193,235, 80, 69,168,189,247,153, 48, 25,176,132,117, 12,187, 30, 37,131, 77, 38,136, 80,244, 98, 78,215,221, 9, -218, 93,198,205,176,205,112,204,215,163,130,159,176, 61,198, 28,233,128,112, 96, 52, 21, 55,113,142,220,148, 21,200, 35,173,137, -184, 96,241, 16,195,147, 86,184,238, 73, 86,111,188, 3,132,108, 86,186, 81,196,115, 41, 64,186, 43,185,165, 13, 89, 10, 99,163, - 44,142, 20,230, 18, 54, 69, 28,171, 57, 56,165,112, 78, 94,235,155,139, 86,246,234,139,118,183, 5,195, 66,142,211,252, 20,213, - 10,243,122, 37,144,245,121, 46, 84,195, 12, 76,241,216,140, 89, 91,204, 64, 43, 99,206,132,178, 34,137, 83, 46,188, 26, 25,216, -179,104, 27,176, 85,225, 41, 60,188,104, 64, 75, 85,130,162,110,222, 22, 39, 7,232, 89, 23,114,129,152,184,106,171,214, 19,231, - 4, 84,224, 83, 58, 63,239, 1,161,193,195, 50, 14,161, 38,228, 43, 97,173,100, 61,177,140, 3,171,104,164,167,126,174,150, 11, - 80,131,248, 87,109,132,209,227,228,180,131, 0,157, 10, 49, 54, 65,141, 5, 91, 52, 71, 28, 27, 31,130, 23,202,179, 51, 96,205, -170,146,104,146,177,118,169, 93,179,209,212,220, 30, 88,116,100, 36, 96, 21, 4,171, 52,131, 27,203, 44,117, 94, 24,148, 30, 72, -211,151,174, 10,192, 35,221,176,163,157, 61,254,172, 91,215,150, 53,104,211,196,128, 14, 12,170,105,212, 16,221, 8,241,156,132, - 73, 36, 51,198, 84,127, 81, 64,124, 44, 41,129, 52,214,240,145,138,184,211, 63,153,244,190,157,163, 35,204, 58,116, 1,189,204, - 92,119, 3,248,214,186, 52, 64,239, 11, 43,244,120, 63, 83,127,169,147, 54, 28,106, 15,112,177,128,224,246, 27, 55,219,214,155, -183,129,190,159, 24,225,157, 64,182, 6, 23,129, 25,105, 62, 93, 33, 4,179, 48,170,211,205, 63,184,154, 95, 85,242,182,163,172, - 8, 71, 18,103,135,156,114,132, 71, 2,118,135,173, 15,133, 57,250,243, 42,106,169, 41, 76,222, 39, 71,165, 96,174, 96,178,213, - 96,254, 53, 39,161, 21, 37, 68, 41, 59, 42,150,147, 37,207, 65, 3,149, 82,100, 36, 6, 44,236,241, 53,132,128,194, 21,215,104, - 42, 43,205,130,227, 54,197, 63, 96,194, 32,150, 53, 45,135, 96, 76, 11, 51,162, 10,194,184, 16, 82,114, 98,226,217, 34, 34, 2, -237, 61,247,232,115, 82,187,218, 24,161,219, 41, 74,113, 17, 93,228,130,143,135,172,128,162,186,120,235,114,188,222, 9,197,120, - 20,121,194,133, 11,188,191,226,236,121, 59,169, 22, 10,247, 3, 23,176,202,171,218,183, 43,100, 11,188, 78,244, 42,195,121,146, - 41, 19,200, 44,162,149, 33,149,110, 84,236,163, 31,239, 7, 76, 72,183, 16,156,207,195,184, 41,177, 12, 24, 5,148, 28,182, 54, -166,124,160,166,240,176,150, 77, 25,255,152,144, 73,133, 65,110,109,179,227,144, 14,253,121, 83, 98, 99,181, 86,161, 80, 18, 58, -150,178,117,177,210, 26,136,227,225, 76, 85, 2,242,214,238,147,106,132, 12,233, 45, 66, 42,144,162,103,207,149,110,234, 81,209, - 73, 34,133,249,223,183,215, 63, 1,113, 14, 4,101,118,227, 70,113, 16,252,107,118,212,141,248, 72,195,211,230,170,100,103,173, - 68,152, 77,130,221,232, 38,213,239,159, 82,117, 86,201, 29,227, 41,218, 70, 29,243,218,162,130, 58, 1,156,145,120,206, 69,213, -188, 5, 65,210, 97, 1,104,141,134,235,136, 57, 74, 96,141,234, 22, 67,100,184,231, 48, 4,155, 19, 37, 16, 12,193, 44,216, 54, -192,162, 60, 83,235, 44,246, 54,245,164, 8,212, 89,163,134,167,113,176, 30, 34,171,113, 8,152,109,243,183, 50,202,172, 81,214, - 17,208,245,197,241, 5,181, 4, 8, 7,116, 9,108, 73,159, 69,162,173, 13, 93, 91, 49,111,113, 69, 93, 78, 73,236, 3,175,253, -203, 56, 20,185, 80,185, 86, 7,207,196,119, 25,179, 93, 93, 90,125,230, 61, 67, 97,192,129, 84, 69,113, 44,140,200, 68,153,253, -184,238,133,106, 78, 87,160, 54, 30,168, 1,146, 18,181, 6,146, 89, 32,205,117, 37, 43, 33, 33,232, 57,138,118, 34, 45, 39, 37, -162,123,195, 42, 37,170,205,233, 66, 57,158,188,171,105,239,161,172, 4,102,125, 52, 97, 99, 68, 99, 65,130,213,124, 51,208,176, -234, 3, 4,156, 35,115, 37, 48, 26, 93,144,239, 41,209,242,134, 57,217, 16, 21,137,191, 41, 36, 24, 37,101,106,145, 12, 55,192, -246, 50,173, 30, 76,166,149,231,147, 50, 54,114, 21,103, 26,121,224, 54,187,175,177, 25, 11,206,246, 47, 64,181,114,254,125,180, - 54,224,229,142, 19,248,176,163, 69,110,194, 37, 65, 13,157, 48,229,165, 95,242,184,161, 64,203, 91, 95, 83, 33,240, 65,162,119, -214, 1, 43, 10,151,169,197,121,238,158,232, 36,113,115,153,242,178,119, 12,101,176,249,189,161,193, 65, 80, 11,162,159,184, 47, -154, 36, 35, 49, 81,100,136,235,144,183,170,101,108,232, 83, 41,224, 69,151, 62,247, 52, 8,129,147,200,120,110, 16, 69,221,204, - 53, 64, 65, 31,242,201,213,178,113, 66, 53,157,135,171,246, 96,230, 88, 38,125,192, 70,167,144,166,141,181,197, 67,229,111,135, -166,194, 6, 74, 10, 78,244,216,171, 3, 30, 50, 14, 37,213, 23,213,137, 87, 8, 77,139, 39, 78,149,152,110,250, 34,145,250,180, - 82, 14,187, 83,192,218, 1, 4,109, 74,251,172,172, 27,208,174, 97,111,235, 13,168, 76,183,201, 72, 44,194,166, 82,239, 11,246, - 52,170, 1,110,223,191,153,124, 35, 20, 16,234, 5, 68,166,117, 93, 38, 53,232,110,128,205, 30,149, 40,233,194,209, 22, 25,163, -254,117,206,182, 24, 20,105,210,205,177,198,120,195, 54,208, 90,225,160, 75,218, 17, 96,111, 33,251, 67,109, 64, 67,235, 16,110, - 96,246,111, 30, 96, 65,158,125, 94,139, 92, 68,104,254,250, 58, 42, 97,193,246,177, 17,198,236,119, 88,241,210, 43,209,141,118, - 17,106, 28,238,203, 6,226, 96,135, 42,157, 76,101,223,223,111, 81,187,220,168,220,135,146, 89, 23,214,126,125,244,165,111, 70, -155,190,139,187, 52,132,100,140,200, 74, 56, 1, 84, 21, 78, 23, 72, 17, 93, 76,232, 2, 99,240, 3, 84,181,218,213,234, 15,200, -216,215, 11,108,154, 56,198, 20,127,125,237, 90,177, 50,218,135,117, 89, 63, 19, 64,219,117,252,107,173,100,125, 80, 11, 30,153, - 28,142,164, 93, 66, 35, 40, 74, 28, 12, 59, 10, 65, 56,119, 69, 76, 24,187, 73,188,160, 81, 69, 55, 32, 75,173,123,129, 88,169, -133, 9, 93, 71,235, 60,120, 69, 12, 5,206,134, 35,197, 34,241, 10,246,195,176,245,190,209,174,143,222,215,133, 87,208,144,222, - 33,172, 96, 17,164, 36, 10, 12,195,129,234, 38,164,250, 30,102,227, 92, 1, 58,102,215, 57,148, 81,149, 79,214,218,169,163, 45, -215, 69,148, 53, 7, 59,219,148,169, 10,132,141, 73,128,134,184, 39,196, 85, 15,245,178, 77,126, 51,136, 57,187,248,192,156,112, -196,121,198, 1, 68, 37, 87, 56,154,202, 83,208,167, 25, 81,137,190, 34,155, 45, 33, 69,199, 73,182, 62,129,101, 10, 29, 50, 33, - 46,149,149,249, 70, 32, 58, 18, 61,162,232, 27,151,125, 58, 13, 38,186, 73,136,102,152, 5,110, 30, 33,208,205,132, 42,156,130, - 77, 30,188, 9,129, 52, 9,113, 27,132,175,217, 37, 44, 87, 34, 16,159, 82,245, 4,108, 66,177, 42, 9,178, 83, 32,235,218,178, -126,209,191, 28,175,171,230,166, 10,122,147, 45, 24,133,135,106,211,149,245,186,209,250,195,135, 1, 35, 28,124,100,131,151,109, -240,154,192, 9,146, 33,245,104,130, 81,197,164,222,117, 19,194, 77,173,245,181,101,157, 93,179,251,101,207,197,114,131, 3,126, - 49,242, 6, 74,104,115, 39,246,175,123,197, 48,141, 83,243, 72, 20, 12,225,141,161,109, 11,140,116,250,102,167,186, 17, 31,173, - 38,247, 66, 84,214,166,254,246,108,115,138, 14, 16, 59,210,122, 26, 21,179, 31,112,234,126, 50, 92,153,252,243,104,129, 21,193, -115, 82,117,250,102, 2,251, 87,238,172,184, 74,217,231,226,236,126,234,182,216,142,195, 78, 25,129, 96,246,155,167,177, 73,240, -196,225,247,238,158,213, 18, 54,187,246,222,102,101,190, 79,218,121, 48,118,183,109,124,203,170, 59,155, 87,184, 66, 69,214, 99, - 94,167, 62, 70, 97,100,115,167,220,109,248,223, 12, 48,136, 46, 5,102,136, 68,102, 24,127, 48,232,108, 37,229, 19, 16,104, 14, -172,219,196, 90,201, 56, 8,198, 4,143,122,224,147, 18, 52,163,102,209, 45, 0,248,176,245,168, 87,206,125, 51,154, 92,144,196, -180,241,251,185,138,164,152,233, 17,123,101,237,218, 26, 22,171,246,185,168, 26, 59,154,123,203,159,237,106,208,212,218,231,101, - 66, 41,200, 10, 31, 75,100, 29,179, 89,123,211, 69,215,205, 74, 48, 14, 49,114,160,182,208, 85, 99,208, 15, 47,243, 16,142, 9, -229,156,119,137,240,239,209, 77, 97,112,207, 79, 54, 26,105, 23, 98,183,234, 42, 69, 7,182, 40, 36,165, 29, 72,250,199, 63, 91, - 65, 0,163, 94, 36, 70, 85,242,152,210, 62,162,218, 20,191, 71, 88, 15,186, 21, 32, 28,109,175,153, 13,134,211, 30,149, 57, 8, -129,110,105,229,188, 79,136, 3,185, 16,246, 34,238, 45,199,130,107,195, 83,210,234,217,120,164,221, 19,166,180,247,226,196,214, -108, 90,105, 15, 96, 12,210,174,199,160,182,205,161,222,234, 34, 79, 11, 91, 81,154, 28,179,219,216,132, 80,184, 58, 14, 73,181, - 91,226,192, 85,208, 59, 64, 37, 70,161,133, 67, 68,169,247,184,232, 13, 81, 96, 51, 12,179,227,114,231,182, 67,185, 2,106,108, -205,218, 20,157,197,149, 2, 74,237, 85,133,104,235, 95, 89,249,232, 66,113,171,155, 14,135,175, 18, 49,135,196,184, 41,137,163, - 35,217,103, 39, 5,132,117,130, 26, 1,232, 28,200,126,126,138,208, 42, 44, 85,128, 96,148, 65, 24, 92, 97,230,231, 34,181,104, - 45,167, 8, 65, 66,228,164,172,128, 12,228, 98, 37,111,191,111,178,127,213,216,209, 72, 50, 50,241,150,120, 92, 97,219,236, 70, - 69, 93, 18, 33, 13,169, 92,122,128, 2, 17, 80, 1, 45, 66,133, 39, 76,148,123, 93,248, 2,211, 17,250, 75, 33, 0,196, 18,198, -102,132,151,116,221,237,104,213, 85, 10, 90, 87, 5,209, 32,230, 42, 91,107, 76,199,102, 46, 68,153,216,178,134, 21,145, 88, 71, - 71,104, 28, 48,198, 90,176, 85,239, 47,131,152,138, 49, 22, 16, 68, 60,230, 79, 47, 83, 40,120,123,247,118,226, 20,239, 29, 17, -171,106, 15,153, 20, 43,170,227,158,182, 1, 78, 37, 90,250,120, 10, 31,214, 30,192,211,130, 48,179, 32,151,189,192, 20,180,108, -178, 13,178,144,143,125, 24,170,173,126, 8, 41, 83,160, 73,173, 45, 94, 86,176,152, 13,199,181,158,192,238,103,155,176,181,183, -171,129,162,244, 64,214, 46, 76,123,192, 61, 63, 61,178,230,141, 66,199, 90,156,151,173,166, 73, 1, 86,211,159,131,185,134,205, - 83, 66,140,233,209,153, 58,107, 22,157, 27,123,137,128,217,236, 74, 31,243, 67, 46,115,130, 1,201, 42,148,199, 62, 55, 89,139, - 84,237,189, 56,198,122,242,202,211, 69,147,225,223,140,131,122,149, 32,164,185,112,179,228,188,116, 99,152,218,181,105,247,203, -188,131,150,126, 89,233,114, 74, 7,255, 52,212,167,141, 50,120, 58,232,215,161,214,221,168,190,218,231, 53, 85, 31,145,141,195, -189,249,168,171,199,201, 9, 58,121,116,243,240,208, 36,187,157,224,176, 62, 87, 81,255, 51,210, 50,194,234, 88,245,180,107,160, -156, 22,175, 91, 10,224,139, 11,116, 86,173, 50, 47, 49, 50, 41,171,184, 94,244,181,143, 80,161,113, 32, 68, 16,142,232, 70,236, -226,191, 73,187,201, 29,173,186,139,214,187,160,233, 70,215,160,246, 12, 86,162,217,100, 99, 16,193,170,177,104,254, 60, 21, 25, - 35, 12,140,116,141,235, 27,136,223, 10, 22, 65, 81, 59,160,200, 72, 72, 75, 96,164,222, 21,152,225,217,168,105,108,234, 26, 43, - 0,169, 97,174,137, 17,235,108, 77,159,156, 53, 82, 60, 81,177,171,236,193,141, 19,156,164, 28,195, 45,192,151,200,220, 22,232, - 46,170,214,198,199,140, 84, 66, 88,137,232,241,202,126, 8,104, 5,212, 80, 21, 50,136, 84, 64, 12,177,206, 67,155, 10,228, 71, - 67,123, 51, 80,131,156,196, 93,177,217,129,224,140,101,181,105,235,108,200, 79,217, 0,171,199,116, 34,244, 66,211,138,172,181, - 26,216, 51,115, 8,250, 60, 27, 28, 95,107, 68,159, 74,226, 88, 51,102,155,186,194,148,112,106,205, 0,200, 84,170, 83, 18, 2, - 79,226, 45,247, 20, 30, 81,130,199, 34,144, 40,132, 74,127,130,179, 26,121,101, 92,114, 30,180,181,122,221, 98,163, 85,105,138, -102, 29,167,183,170,215,123,226,225,157, 44, 48,179,182,195,219, 70,207,133,197,211,250, 40, 41,188, 5, 41, 89,168, 11, 40,170, -186,111,115,187,105,156, 82, 45, 39,216,113,241,237,129, 44,195,122,225,116,182, 82,250,125, 36, 43,234,125, 41,188, 90, 92,216, - 43, 52,242,123, 79, 64,205,173, 69, 32,103, 50,252,164, 81,140,163,114,155,198,226,166, 11,162, 20,116, 15,228, 57, 38,166, 70, - 49,140, 74,236,192,231, 97, 22, 5,114,164, 11,218,167,172,221, 56,173, 56,182, 43, 16,140, 64, 51, 41,197, 0,140,159, 57,233, -236, 60, 34, 46,241,160, 19, 73,108, 5,137,116, 84, 18,149,207,172,129, 5,162, 91,205, 26,196,189,109,172,115,105,120,239,237, -115,236, 80, 11, 21, 89,133,152,212, 54,215, 26,156, 9,201, 30, 93,111,107,249,181,138,195,158, 51,174,129,111, 48,236, 82,104, - 11, 19,176,171, 86, 8,255, 97,111,175,118,234,153, 29, 95, 11,150, 98, 51,164,122,105,119,130, 15,162,130,229, 21, 43, 28,219, -217, 2,157, 7, 19, 27, 18,132,126, 56, 47, 93, 97, 39,166,147, 81, 5,252,104,133,235,230,132,243,233, 85, 3,195, 28,130,147, -241, 6,252, 71,215,100, 57,179, 3,140, 0, 3,191,233, 41,186,167,191, 29, 30,160,155,214,158,151,170,218, 6,210,248, 79, 46, -145,222, 70, 96, 57, 36,132,103, 21,128,226,208,232,102,249, 28,219, 5,114,195, 19,223,239,207, 89,198,104,196,188,226,192,186, -247, 81, 99,251,187,187,217, 21,228,165,112,178,252,149, 41,148,252,189,114, 87, 27,151, 29, 72,134, 48, 84,122, 53,236, 24,237, -136, 86, 28, 29,154, 42, 94, 45,215, 46, 10, 27,115,239, 34, 41,181, 2, 41, 36, 62,122,237,247, 79, 43,160,218,193, 87,176, 90, - 94, 29, 50, 25,178, 4, 36,242, 45, 4,245, 30, 8, 86, 50,236,183,123,233, 5,248, 26, 26,197,219,239,231, 26,106,118,102,208, -109,217,136,165,228, 0, 40, 9, 91,171,104, 7,175, 91, 0,219,215,235,156, 71, 44, 41,161,180, 52,161,220, 52, 78, 46,164, 39, - 77,216, 96,121, 5,139,225,146,103,169,198, 9, 39, 1,133, 48,175,178,153,121, 21, 87,178,246, 77, 99, 30,139, 69, 27,226, 66, -147,124,222, 4,113,172,226, 23,141, 32,141, 45,251, 36, 33,137,141, 87, 57,190,230, 51, 46,241,161,162, 82,143, 25,213,178, 64, - 28,130, 74,194, 55, 47,187, 41, 0, 88, 33,104,213, 4,154,151, 0,193,173, 10,136,129,204, 82, 33, 24,252, 97,130,178,200, 24, -183, 19,105,130,179, 96,147,129,130, 49, 80, 24,208,183,186, 64,215,181, 47,220,207, 85,156,200,118, 5,196, 73, 12,222,232,146, -218,214,250,145,110, 1,139,105,106,243, 41, 20,241, 27,189, 97,251,173, 45, 2,144,151,162,222,239, 80, 99, 50,228,132,179, 42, -191,109, 20,130, 91,183, 76,118, 72, 40, 94, 89, 49,102,124, 20, 93, 60,213,223,221,103,125, 46, 61,166,240,139,178, 10, 16, 41, - 28, 30,156,170, 60,142, 3,161,109,144, 43,120,137, 43,176,153,221,186,196,171,251, 32, 17, 13, 41,127,191,207, 79, 75,217, 11, -245, 40,133,247, 20,244,177, 40,112,192,123, 28,172, 98, 85, 6,103,173, 7,175, 96, 61, 98, 89,212,129, 58, 29, 36,201,154, 20, -217, 30,211,235,227, 50,113, 64,134,111,152,150,238, 70,192,110,199,212, 58,175,250, 96,179,235,237,124, 61, 90, 90, 21, 43, 35, -235,186,129, 66,138,126,110,197, 90,235, 20,126,105,102,138,148, 68,235, 12, 20, 75, 8,132,244, 47,155,151, 35,147, 66,159, 1, -239, 94,244, 54,250,168,164, 75,201,160, 29,118, 63, 51, 28,172, 13, 57, 88, 85, 72,216,198,143,106,133, 11, 43,159,185,131, 74, -172,107, 27, 78, 73,120,163,240,176,241, 68,113,129, 89,239, 22,244,247,184, 9, 5,190, 61,147,117, 3,154, 14, 2,117, 60,193, - 33, 80,217,236, 82,125,225,247,208, 17, 21,144,182, 17, 65,239,128, 77,227,123,171, 90,248,108,188, 97, 98,201,177,209,139,175, -117,193,150,111,221, 30,219,240,107,255, 57,189, 85,207,234,249, 70,134,189,136,195, 87,138,106, 38, 12,100,206,122,128, 21, 61, - 52,213,106,144,158, 73, 59, 92,236, 86, 51, 39,168,149,226,221,149,109, 35,241, 89,139, 0, 99,183, 61, 21,110,220,119,243, 60, -251,236,189, 23, 15,106,247, 20,198, 53, 50, 44,218,209,245, 1,138, 35,141, 3,133, 39,162,217,181, 4,239,211,136,122,229, 0, -234,232,202,191,105,252,120,189,127,200,177,202,235, 49,180,117, 45,139, 23, 44, 12,227,141, 1,180,153, 18, 70,151, 65,160,205, -144,109,191,124, 50,179, 87, 67, 67,109, 29, 54, 4,222, 99, 13, 95, 16,123,170, 25,177, 12, 84,155,178,162,170,153, 80,166, 40, -122, 17, 83,205,176, 90,147,149,193, 3, 45, 93, 9,229, 88, 41, 98,189, 64,221, 24,116,177,125,190, 59,187,175,158, 51,109, 76, - 96, 54,158,215,212,120,192,101, 29, 61, 41, 43,239,113,174,214,236,253, 87, 89, 7,215, 0, 35, 27,211,228,160, 46, 55,154, 95, -202,228, 6,245, 39, 99,148, 44,101,149, 47, 51, 82,213,132,202, 42, 16, 57, 70, 43,182, 32, 86, 13, 76,152, 20,242,176,194,211, - 2,197,168,152, 29,103,249,123, 91, 98,183, 8,118, 81, 28,187, 85, 65, 65, 10,236,158, 82,219, 56, 39, 5,176,218,198, 82, 64, -248, 87,152, 35, 85,205,138, 92,173,198, 10, 84, 26, 49,214,225, 11,194,124,128,206, 86,134, 2,184, 56,253, 42,179,206, 3,185, - 72, 30,234,227,134, 69, 6,189, 0, 72,178, 45, 53, 78, 16,251,105,239,133, 35,195,220,148,246, 65,242,131, 17, 3, 28, 10,146, -143,155, 57,111,240, 12,179, 78,206, 17,141,222, 53, 90,113,184, 25,201,103,253,122, 78,206, 24,231, 74, 43,207,124,176,188, 13, - 37, 85,124,174,203, 17, 81, 91,121,173,139,245,247, 37,240, 26, 61, 94,147,141, 55, 1,144, 28,197,198,246,235,147, 2, 83, 56, - 58,204,211,228,179,239,238,181, 5, 92,105,242,119, 42,219, 91, 0,254,232,119,184, 68, 62,122,116, 57, 33,174,173,196, 34, 90, - 69,128,200, 24,131,178,138,138, 80, 10, 0, 72, 87,120, 84, 84,227,234, 70,118, 62,247,197,184, 56,104,131, 2,137, 26,208,129, -192,203,212, 89,187, 79,220,231,212, 93, 76,167, 7,143,254,223,162,249,224, 78,206, 28,255,111,204,184, 71,139,187, 32, 7, 68, -108, 99, 12, 75,154, 37, 60, 26,156,203,121, 34, 46,150,211,119, 59,145, 31,106,194,237, 82,156, 11,192,138,112, 13, 18,221,248, -125,211,102,138,184,217, 58,174, 67,175,192,219, 38, 63, 71, 80, 85, 31, 35,180,247,185,219,197,117,175,226,218, 4,242, 61,103, -211,175,199,188,107,239,115,227, 97, 66,189,154,159,107, 28,178,121, 8,218,230,221,232,202,204,117,176,209,217, 58, 27, 38,192, -174, 17,206,213,219,240, 86,105,206, 58,158,176,131, 26, 87, 63,123,216, 24,162,127,127,141,125,197,227,170,189,193, 91,146,144, -111,192, 99, 34,227, 99, 3,222,116,209,131, 93,193,160, 31,208,183,136,117, 88,171,145,200, 37, 66, 94, 0,103,222,237,188, 27, -208, 78,248,215, 57,181,223, 17,187,185, 57,152,134, 29,160,163, 59, 65,136, 52,133, 76, 57,181, 92,189, 85,154,192, 43,213, 79, - 54, 12, 98, 16,175, 32, 37, 82,189,176,221,103, 54, 40, 33,220,236, 97, 35, 66, 44, 45,195,129, 3,219,180,107,207, 53,248, 0, -153,177,222,183, 69, 74, 63,198, 25, 99, 30,117, 49,175,121,118, 30, 31,166,128,106,190,164,153,114, 93, 37,129,197, 7,103,148, -179,220, 18,247,235,100,166,233,106,204,139,234,179,181,162,176,132,252,230,130, 73, 93, 82, 66, 18,129,186,187, 64, 23, 35,200, -108,133,203,138, 14,144, 3,119,216,219, 62,197, 59, 3, 56, 49,240,197,161,138,118, 81, 98,129,107, 93, 30,123, 77, 83, 9, 17, -222, 30,112,196, 14, 42,197, 54, 17,214,141,123, 10, 63,188,182,217,172,250, 44, 37,130, 93,250, 58, 32, 97, 54,231,178,194,148, -218,198, 65,209,149,240,121, 56,173, 90, 25,156,124,138,107,150,108,188,232,194,169,229,150,224, 48,192,246, 38,244, 74,151, 85, -186, 88,129,164,172, 18,177,189,172,194,212, 49, 59,215, 3, 18, 8,196,246,137,119,140,142,153, 68,159,227,224,132,166, 40, 34, - 23,117, 78,112, 32,237, 65, 22, 48,127,100,196, 55,227,156,151, 2,216, 2,223,231,130,170, 2, 94,125, 86,161, 30,115,142, 74, - 53,213,151, 19,184,176,103,175,237,244, 62,156,213,141,175, 78,206, 23,144,181,248, 78,255,142,103, 19,232,245,108,162, 60,145, -200, 88,112, 68,170,147,237,196, 15, 67, 54,147, 45, 17,100, 49, 14, 92,166,154, 15,116,138, 35, 75, 25,209,178,142, 79,157, 20, -173, 93,252, 0,154,102,128,160,230, 30, 66, 74, 93,255, 74, 20, 10,237, 71, 84, 9,122, 99, 7,188, 84,157,193,151, 16, 17, 79, -211, 70,215, 46,113,241, 20, 3,141,206,194, 67, 92,100, 89,204,198,169,218, 7, 61, 57,217,193,181,181,193,121,155, 99, 72,227, -144, 60, 15,231, 89,149,136,190,182,207,185, 26, 73, 80,220,141, 17,127,215,188,229,170, 20,175, 49,251, 29,191,103,231,163,185, -121,214,246,191,222, 19,109,254, 30,218,150,226, 45,233,121,183, 11, 78, 2,136, 20,227,128, 57,235, 8,103,214,103,113, 26, 66, -184, 18,210,105,140,101, 30,215, 21, 68,133, 66,106,251,227,248,204, 44,167,220,242, 27,128,190,105, 33, 77, 62, 86, 50, 81,170, -217, 51, 57, 88, 43, 67, 72, 41, 41, 58,218,128, 99,166,244, 23,179, 97, 23,139, 37, 96,152,239,107, 50,164,118, 77, 70,245, 62, - 43, 55,165,130,230, 77, 53, 7,192, 84,233,154,168,221,233,211,177,157,148,161,172,109, 85,219,164, 15,164,104,110,107,209, 69, -116, 20, 93,138,195, 75,229,176, 85,143, 53, 87,212, 18,115,227, 52, 43, 54,122, 86, 5,143, 38, 42,145,177,111, 45,136,120,180, -215, 33,208,178,231,228,255, 75, 84, 60,104, 19,251, 3,205,154,128, 83, 98,145, 17,137,156,107, 15,177, 23,129, 4, 31,222,235, - 90,120,107, 73,178,106,158, 1,236, 32, 50, 90, 91, 46,116,130,228, 53,108,237, 7,220,166, 56,226,208, 55, 85,152,255, 9, 48, -209,109,225, 19,245,169, 34,143,157, 86,249,212,178, 90,172, 99,142, 84,246, 91,206, 24,232, 96,232, 4,102, 16,167, 21,104,125, -114,228,139, 23, 74,148, 43,219, 40, 39,115,173,235,131, 92, 24,223,190,109, 6,148, 82,246,130,153,110, 39, 87, 21,200,249,230, - 98, 63, 39,130, 30,132, 99, 44, 19, 22, 10, 89,229, 67, 91,198,252,190, 95, 81,192,230, 18,237,255, 53, 29,145, 97,190, 14,128, - 23,243, 74, 67,197,237,144,162,137,163, 99,161,167, 64, 54,255, 31,144,215, 68,157,215, 92, 70,183,166,216, 38, 70, 32, 54,195, -136, 93, 75,172,163,224,186, 71,135,133,215,142,204, 24,117, 73,182,115, 98, 65,107, 22, 56,193,138, 85,144,122, 87, 32, 93, 78, -171, 81,101,231,230,192, 31,155,181,110,247,108, 69, 2,201,128, 99,227, 25,202,225,126, 93, 54, 20,157, 38,206,247, 33,242,210, - 49, 19,160,185, 11, 24,146,211, 72, 66,125, 76, 18, 66,193,186,202, 16, 88,139, 50,199,204,187,194,117, 2, 78,134,227,109, 57, - 3,163, 55, 67, 65, 79,154,132, 38,110,213,164, 52,178,114,134, 70, 74,125, 24, 84, 63,166, 64, 49, 71,142, 59,104, 32,108,153, - 45, 25,112, 53, 14, 67,164,133,128,250,207, 39, 69,123, 75,248,196, 89,225, 53,211,196,201,168, 80, 37,171,230,171, 70,145, 38, - 55,175,194,102,252,222,168,112,253,205,217, 84,141,166, 87, 67, 20,216, 90,233, 59,163,223, 53,133,246,214,219,240, 49, 13,148, -136,109, 22, 19, 27, 71,241,100, 99, 70,171,234, 69,131, 90,236,115, 48,241, 31,219,200,152,198,248, 36,170, 86,241,136,216,208, - 82, 76,206,102, 24,211,157, 50, 66, 94, 28, 11, 44,250, 58, 43, 80,254,198,104, 33,242,212, 99,206,221,206, 64, 50,230,148,203, - 97,165,186, 3,160,125,161,152,191, 86,175, 73,133,232,219, 93, 75,123,107,123,173, 58,115,108,173,174,186,114, 78,102, 23, 37, - 64,210, 54,221, 3,197, 65, 66,141,145, 99,172,160,133, 80, 85,109, 73,247,176, 28, 44, 23,230,244,228,100, 41,243,183, 52, 29, -180, 63,220,234,102, 20, 22, 35, 43,102, 54, 64,105,196,135, 24,145,178, 73,112,196,200,222,134,120, 77,100, 98, 59, 83, 61,148, -117,198,175, 22,240,102, 11,168,207,189,101, 14,185,220, 99,167, 38,218,167,182,139,110, 16,161, 14,103,104, 78, 35, 69,203, 69, -125, 32, 59,155,214,173, 78,184, 49, 83,178,148, 83,153,226, 96, 16, 17,181,240, 19,189, 11,160,167,125, 63, 73, 15,209,226,166, -132,152,170,192,166, 34,160, 63,168, 66, 73,177,137, 97,107,147,207,154, 9, 98, 13,107,136,181, 68, 18, 80,199, 22, 33, 95, 12, -146,181,192,132, 89,150,237,108, 76,242, 2,193, 36,121, 3,181, 57,104,241,153,112,129,223,171,200, 83,142,108,110, 46, 96,169, - 19, 78,194, 42,187,129, 89,243,136, 17,183, 59,102,247, 37, 54, 35, 51,142, 10,165,202,220, 57,123, 98,240, 14,201, 34, 49, 14, -240,141, 29,152,188,221,238, 92,133,146,108,151,182,185,247, 91,206,105,112, 81, 17,148,149,216,193, 15,174,137,171, 91,224, 48, -170,142, 1,237,122, 20,155, 31, 98, 44,105, 90,136, 49,183,158,147, 21, 7,103,221,104, 5, 93, 13,108, 98,148,134,233, 20, 2, -121,235, 8,203,135, 32, 26, 19,230,133, 14,160,132,210, 31,230,253,200,138,112,229,112, 9, 65, 79,252,187, 4,123, 28, 88, 15, -118,111, 85, 64,209,146,112,234,212, 21,202,121,234,104,194,193,255,141,104, 76, 73,252,122, 63,128,184,223,186,248,204,116, 8, -226, 40, 11,126,197, 8,101,213,243,230,101, 50,186,226,198, 91,123,109, 67,179,195,155, 85,231, 14,123, 16,181, 63, 89, 87, 7, -108, 98,181, 66, 6,129, 77, 28,204,134,101, 29, 22, 63, 92, 79,158, 7,225,132, 50,207, 64, 24, 27,160, 71,211, 82, 68,189,218, -193, 37,220, 30,209, 21, 48,209, 95,124,150,113, 31, 87,115, 60,184,121,218, 58, 4,165,207,232,197,219,245,250,222, 13, 44,100, -197,153, 89,234,219,253, 82,213, 78,167, 66, 60,251,157,237,128, 52, 83,248,194,197,146,202, 60,131,161,120, 53, 27,158,253,112, - 27,181,107, 52,121, 17, 89,193, 57,162,218, 10, 23,104, 7,219,127,166,217,153,245,165,179, 5,170,119, 35, 68, 0,131,229,235, - 3,185, 80,114, 28,102,120,149, 76, 55,121, 46, 60,129, 77,186,127, 94,101,116, 90, 54,205, 49, 99,157, 7,125,175, 21,238, 69, -195, 39, 91, 21,131, 25,133, 49,138, 84, 59, 93,119,247, 20,119, 84,244,246,187,204,103,221, 86,186, 45,154,201, 42,227,133,110, - 45,208,189,187,108,170, 39, 68,111, 96, 99,138,181, 68,246,100,232,222, 74,215,197,172, 48, 39,239,165, 34,170, 32, 16,196, 46, - 26,110,222, 89, 76, 96, 11, 69, 1,172, 97,153, 24, 42, 15,108, 27,179,218, 9,106,226,126,115, 58,113,199,129, 66,214, 64, 25, - 80,202, 78,133,247,196, 13,198,138, 70,207,187, 9,155, 92, 96, 37, 74, 37,115, 56, 69,180,192,135,112,140,252,228, 91,197, 22, -147,128, 27, 97,226, 12, 23,180,155, 68,119, 33,113,180, 57,192, 46, 86,185,180, 27, 98, 91,216, 71, 73, 72, 55,235,110,185,169, - 68,172,174, 88,123, 47,232, 95,238,245,149, 76,151,139,150,176,105, 0, 52, 53,139, 71, 59,168,207,201, 27, 20,101, 59,249,166, -205,112, 29,217,152,229, 37,242,145, 93, 92, 86, 2, 33,202,179,138,193,166, 24, 87, 68,224, 11,164, 72,169,223,181, 9,120, 98, -166,133, 56,109,142,208, 14,157,213,219, 65,207,231,191, 30,166, 2, 92,247,194, 40,155, 6,113,156,182,231,148,170, 86,124,166, - 14, 55, 46,248,221,165,144,147,204,144, 19,239, 17,222,118, 61, 11,104, 31,192,195,142, 97, 68,142, 10, 37,132, 41,144,218,105, - 80,228,102,135,225,124,175, 39,226, 32,160,125,115, 45, 9,118,142,130,170,133,252, 44,140,205, 75, 23,208, 57, 94,159,216,172, - 2,145,205,186,243,120,213,168,237, 97,118,168,136, 17,182,176,186, 42, 49,159,156, 98, 19,100,224,147, 48,166, 11, 10, 60,159, - 32,194,156,128,197,143,125, 92, 76,142, 99,160,100,101, 92,109,116,205,236, 65,236,183,162,130,101,172, 18,235, 47,191, 85, 97, - 27,179,176,233,166,163,100, 52,211, 1, 76,206,194,210, 53,208,108,122,101,252, 76, 95,234,186, 46,164, 64, 7,146,193,207,173, -152,108,195,157, 82, 92,144,234,161, 35,129,140,150, 96,189, 66,158,123, 73, 7,248, 10, 44,115,127, 30, 75,241,106,115,144, 4, -237,115,178, 98,102,118,139,227, 8,103,105, 63, 96,214,129,234,212,175, 71,221,137, 90,239, 70,245, 60, 24, 29, 59,218,157,159, -249, 1,124, 82,219,106,157,107, 26,213,186, 35,162,134, 8, 41,216, 34,165, 59, 74, 77,145,111, 44,232,241,109,147,190,247,234, - 72, 88, 44,178, 48,198,214, 70, 26, 82, 45,104, 72,215,110, 30, 7,143,134,199,222,205, 51, 96,194, 77,128, 57, 14, 24,157,218, -167,180,200, 30,196, 90, 67, 8, 88,245, 96, 96,201,147,198,232, 16, 40, 52, 12,250, 52,220, 12,179,146,255,180,194, 55, 34,106, -137,121,123,196,238, 86,255,252,145,187,177,217, 76,227,244, 51, 54,241,229,107,187,185,163, 62, 75,149, 8,222,176,106, 9, 32, - 11,224, 54, 72,180, 54,239,204, 20, 83,205,136,183,109, 29,236, 34,120, 90,151,128,173,176,172, 54,207, 64,173, 50,240, 99,125, -230, 40, 25,214,206,128,121, 53,205,108, 97,251,128,160,229, 45,102,235,128,184, 83,215,186, 25,118,111,240,173, 39,111,223, 72, -178,229,224,204,207,172,126, 5,218,181, 85, 25,193, 27,171, 84,251,169, 94,252,103, 91, 50,211, 24,165,241, 56, 44, 89, 14, 8, -180, 71,153, 32,189,147,242, 98, 99,205,158,137, 35,200, 99,163,155,232,176,143, 96, 86,112,120,120,189, 67, 81, 67, 76,199, 94, -226,143,150, 98,255, 29, 7,218, 15, 61,215,193,127, 59,145,151, 16,252, 52,209, 12,250, 90,141,166, 70,106,195,105, 27,250,116, -208,248,238, 91, 31,223, 68,155,155, 35,112,194,253,183,186,136, 52, 91, 75,171,118, 54,131,168,230, 80, 34, 67,147,246,170, 69, -171,160,118,255,130,141,164, 42, 4,194,232,121, 46,156, 51, 70, 60,224, 5,114,107,222,176,171, 5, 14,173,193,212, 23, 56,117, -135,128, 30, 82, 2, 73,163,113, 81, 57, 47, 33,232,100, 80,155,226,140, 86, 64,100, 87,113,184, 51,129,127,215, 99, 27, 57,111, - 62, 20,138,119,139, 10, 70,226, 33,164,202,131,206,130, 87,193, 33, 97, 79, 99,128,191,176,183, 36,203, 74,236, 89,178,184,207, -227,194,160,219, 70, 16,159, 76,156, 2,215,217,230,251,150,134, 38, 51,152,215, 36,197, 49,143,234,125,142,180, 58, 96,117,123, - 60,180, 80,210,217,228,144, 17, 3, 10,173, 56, 20, 73,184, 74,174,178, 31, 11,244,178, 22,110,135, 80,239,252,252,124,180,185, - 85, 60, 53,107,207, 53, 70, 98, 1,150, 98, 47, 72,217, 85,250, 93,208,213,212,236, 74,154, 74, 61, 19,216,104,253,120, 81, 60, -241,152, 44,181, 44, 14, 79, 53,188,238, 90,172, 4,187,220,202,146, 18,213, 53,210,228,156, 79,129,136, 90,197,228, 42,243,192, -186,139,110, 49, 67,208, 88, 29,228,188, 14,235, 89, 9,147,251, 90, 33,241, 26,139,137, 67,219,255, 59,223,185,248,208, 73,192, - 59, 45, 2,250, 70,172,208,177,217,194,106, 44,191, 19,186,190, 85,146,107, 67, 36,208,187,227,106, 71,196,112,115, 14, 24,203, -140, 74,206, 70, 65, 80, 22,187,143, 6, 36, 75, 37, 11,153,139,229,150,207,102, 71, 51,219,100,113, 71, 77,255,124, 38, 13, 37, -210, 17, 75, 1,148,119,183, 2, 58,127, 99,210,253,105, 56,128, 68, 15, 56, 77, 20,218, 65, 72,186, 55,246,251, 69, 15,122, 93, - 20, 72,102, 57,183,248,102,163, 71,178,119,101,120,149, 3,187,217, 42, 51,180,104, 91, 99,187, 44,162, 27,109,155,216,226, 45, -142,252, 28, 98,178, 9,222, 20, 49,173, 42,112,142, 42, 93, 2,178, 95,156,165,206,105,222, 78, 54,150,131,121,129,128, 96,194, -149,153,100, 45,214,129,198, 43, 98,226, 8,241,240, 16,244,102, 38,187, 81,129,195,121,205,214, 26,134, 89,101,234, 52,200, 42, - 21, 70,198,124,170, 85, 25,109, 79,153, 97,115, 45, 48,195, 21,244,120, 19,148,196,170,198,110, 85,115,237,109, 42,125, 14,166, -104, 57, 78,133,227,102,146,136, 28, 45,202, 14,142,170, 75, 32,105,168,120,110, 48,235,105,182, 3, 87,138,244, 13, 81,180, 68, -183, 7,178, 0,142,212,168, 81, 86,209, 88,123, 91,124, 1, 81, 13,195,193,192,105,210,214, 22,219,201,133,105,237,119,180,205, -189,199, 56,106,143,175, 45, 12,211,242,127, 75, 1,216, 67,251,203, 29, 99, 26,179,218,241,251,108,254,183,141,141,167, 28,141, -164, 44,181,221,248,226,189, 29,162,166,142, 65,109,202,227,162,214, 40,163, 97, 44,191,179,244, 69,166, 58,184,133, 20,252, 98, -201,103,130, 33, 17,232, 23,135,135, 62,216,180, 96,245,171,129, 55, 19,135,198, 96,112,142, 86,253,171,136,210,212,250,113,228, -103,136,219, 42,192,101, 40,133, 5,141,141, 74, 24, 98, 53, 13, 3, 10,155,250,216,124, 75,168,244, 81, 4, 70,251,176, 38, 76, - 77, 75,102, 91,235,184, 9, 70,131, 74,110,220,123,208,135,233, 88,138,219,134, 76, 4, 40,171,204,136, 16,150,141,191, 91, 5, -168,133,253,209,152,160,203, 63, 42,154,130,228, 50, 10,128, 7, 1, 61,205,143, 43,133, 32,254, 50,108, 79,235,110,156,179, 12, - 86,100,179,182, 0,238,118,213,195, 87,218, 56,231,143,190,251, 3,122,240,232, 62,125,246,229,231,232,229,231, 95,238,162,173, -208,105,140, 92,110, 27, 71,120, 53,174,125, 96, 81,133, 55, 89,100,105,219,104,218,127, 91,156,166, 34, 34,113,198, 47,138, 44, -166,115,240,199,211,154,172, 25, 21,157,171,138, 44,115,212,217, 63, 59, 63,148,246,223, 23,156,209, 80, 78,187,142,105, 28,206, -235,249, 78, 15, 20,186, 16,215,209,113,240,106,249,124, 23,157, 2,201,173,190,254,247,105,134, 50,106, 32,129, 43,128,183,132, -193, 49,178,211,185, 56,205, 14, 23, 34,240,139,147, 10,196, 48,218,201, 33,104,110, 87, 36, 79,213,179, 57,126, 85,132, 50,131, - 30, 67,118, 2,202,245,145, 72, 56,212,245,228,157, 69, 23,166, 65,108,108, 63,164, 56,183,161,130, 42,125, 86,255,253,166, 23, - 55,136, 73, 23,181,135,118,154, 96, 87,237,239,128, 90,103,248,250,185,191, 12, 31, 45,232,166,207,231, 42,136,155, 54,190, 71, - 21,112,177,116,219,103,251,217, 6,203, 89, 54,224,121, 62, 31,212, 62, 27,131,241,112, 2,116, 72, 79,155,169, 31, 40, 97,203, - 59,134, 37, 82, 49, 54,118,146,208,141,161,148,216, 36, 45,203,185, 16,167,168, 86,140, 48,213,112, 57,111, 59,184,242,151, 1, -112,162,162, 0, 66,184, 69,130,176,139,123,154, 45, 93,105,227,190,215, 18, 74,103, 77,246, 26,112,173,104,103,187,117, 78,187, - 3,237,115, 45,218,118, 53,113,174,141,150,134,133, 74, 43,136, 58, 54, 46, 3,150, 86, 83, 36,106,133,191, 17, 78, 4, 56,198, -170,198, 78,254, 72, 83, 52, 11, 80, 19,142, 76,209,117,192,153, 93,181,244, 0, 48,185, 91,235,190,117, 84, 98,166, 12, 51, 39, -136, 64, 37,137,128,156, 82, 74, 48,130,183,203,191,183,147, 95, 63,116, 4,112, 45,105, 54,219, 95,247,134, 99,150,172,179, 38, -209, 89, 97,204,150,150,251,230, 96,171, 7,128,221,120, 88, 45, 96, 98,185,103,170, 69,134,182,192,160,205,176,178, 53,219, 11, - 1,120,131,116,174,215, 31, 78,107,229,170,197,105, 0, 70,138,122,113,103, 79,242,234,159, 89,171, 8,142,167,209, 26,227,241, -245, 58, 67, 88, 71,155,213, 41,112,198, 69,125, 76, 96,107,138,249,190, 64,101,105, 45,190,154, 83, 8, 86,217, 5, 53,188,235, - 62,247, 69,161, 13,129, 88, 49, 67, 40, 28,185, 74,171,224, 14,165,151,217,188, 52,230, 64,186,192,152,133,147,102,240, 81,136, -139, 68,209,166, 41, 85, 32,242, 23, 42,216, 74,217,143, 42, 32, 40, 68,236, 17,175, 2, 23, 80, 24,229, 99, 1,152, 49, 26,125, - 17, 1, 50, 20, 72, 95,119, 43, 88, 39, 73, 59, 87,179,163, 61,139,182, 72, 85, 49, 61, 21, 23, 51, 89,199,201, 22,252, 2,236, -125, 11,132,194,131,147,139,147, 84, 64,105,217,238, 78,104,131,206, 94,123,142, 63,188,123,159,126,255, 91,223,163,207,188,112, - 68,219,227,171,244,222,221,167,244,244,209, 67,122, 66,199,203, 2,253,128,174, 95, 57,105,178, 38,122,241,185, 87,179,192, 21, - 91,224, 19, 32,114,204, 63, 88,129,126,214,123,112,187,241, 62, 76,141,110,254,252,194, 0,232,146,208,201,168,107,102, 56,126, -204,173, 35,126,175,160,229, 54, 0,227, 54, 75,159, 99,246,123, 30, 81,172,160,150,213,142,196, 14, 85, 21,122,240,208, 79,120, - 10,171,155, 56,187, 62, 98,112, 69, 71, 13, 99,108,190,209,100,184, 1,227,153,245,195,137,204,251, 18,151, 95,106, 36, 1,114, -140,200,236,152, 91, 29,198, 19,213,191, 56,123,190,246, 54,119,183,197, 85, 1,113,159,117,241,102,157,185,131,253,217,252, 7, -106,147, 27,223,111,154, 8,165, 62,114,245,209, 89,181,231, 39,224,127, 90, 88,149, 14,227, 16, 61,192,197, 8,118, 30, 46, 42, - 9, 84,113,191, 20,198, 33,208, 25,123,245,255, 86, 8,143,174, 63, 22,233,204, 46,202,179,176,152,162,162,192,112,193, 12,141, -130,169,135,237, 80,184,124,159,182,155, 11, 56, 84, 54,219,166, 76,180,135,174, 77,213,251, 41,195, 8, 57,193,152,181,189, 55, -204,250,213, 55,145, 94, 39,179,141, 35,216, 69,110,123,185,213,100,230,252, 41,103,157, 19,110, 42, 33, 9,183, 83,151,229, 92, -155,147,163, 0, 88, 35,148,224, 97,189, 27,109,172, 80, 71, 90,203, 49, 34, 66, 99,182, 81, 38, 80,190,235, 34, 54,105,244,101, - 81,160,201, 72,228,137,170,210,196, 62, 81, 81,135, 87,185,159, 16,150, 15,100, 8,224, 86,226,138, 50,152,193,172, 66,177,126, -173,166,173,251, 98,177,189,104,215,165,168, 47,180,170, 7,212, 22, 61,247,124, 42,130,178,147,218,166, 77,175,210, 61, 80,164, -159, 94, 99, 30,230,152, 83,235, 96,232,134,234, 98,161,102,101, 60, 56,128,212,172, 40,151,250, 3,213,238, 13, 93,249,139,158, - 20,219,195, 68,203, 1,104,179,209, 64, 17,245,211,122,199, 85, 15, 35,227,186,232,195,172,243,116,214,216,213, 46,229,152, 59, - 55,118, 89, 36,199,162,213,103,108,108, 94,216,241,179,219,175, 26,122,161,210,255,204, 22,152,246,243,203,116, 0, 46,137,156, -168,231, 15,133,104,139,174, 86, 8,175, 97,221,200, 85,249,158,238,175, 61,241,120, 74, 21, 66, 23, 92, 89,117,122,176, 5, 76, - 0, 31,242,140,132, 82, 92, 59, 82, 72, 82,218, 97, 84, 68, 90,133,115, 89, 37, 8,114, 18, 11,162,132,159, 1,148,151,132, 88, - 5,103,209,146, 56, 7,225,121,135, 65,187, 37,223,136,138,118, 76, 65, 14,118, 62,180,229, 73,132, 65, 64, 84, 37, 94,147, 81, - 85,125,231,221,155,116,239,238, 77,250,233,215, 63, 79,151, 15,143,220, 70, 38,160, 11, 24, 34, 32,142,145,136, 0,230,213,222, -237,148,125,164,161,128, 47,254,249,159,237,206,233,112,123, 48, 68, 94,160,145,233, 20,197,229,254,249,202,119,191, 79,191,241, -149,111,209, 79,189, 60,170,184,247,239,111, 59,204,228,231,126,230, 39,233,228,116,166,247,110, 63, 89,254,198,125,122,237,213, - 79,199, 33, 4,186,120, 2, 42,115,239, 10,105,151,171,214,201, 67,112, 88,153,235,165,206, 33,202,117,220, 41, 52, 81, 38, 11, -200,129, 8,101,154,180,171, 5,213,155, 19, 27, 49,204,170,142, 68, 57,232, 64,122,213,171, 17,178,118,176,242,246, 53,216,226, - 50,220, 72,156,248,215, 67, 96, 96,173, 37, 12,255,193,160, 36, 11, 28,242,236, 13,241, 88, 88, 78,210, 76, 78, 40,114,123, 29, -102, 14, 28,135,159,217,187,146,163, 57,177,172, 75,219,209,137, 44,198,242,183,127,236,119, 77,147,187, 81,146, 99, 74,195,152, -156, 93,223,237,218, 83, 8, 50,167,120, 79, 49,230,161, 64,100,187,183,157, 64, 63,148,129, 45, 62, 38,211,207, 99,171, 89, 12, - 70,233,179,231,196,249,255, 74,110,244, 51, 89,173,177,254, 84,107,200,109,156, 27,192,206, 81,209, 4, 76,214,142, 67, 85,216, - 15, 33, 41,145, 70,165, 62, 90,219,163, 45, 82, 48, 1, 11, 32, 21,118,122,180, 80, 34,104,142,135,208,196,148,126,194, 32,192, - 89, 39,158,141,185,129,139,104,109, 65,229,160, 78,217, 3,108, 31,124,127,101, 32, 68,171, 62, 7,171,206,121,102,224,158,219, -177,139, 53, 46,210, 1, 25, 18, 57,225,222, 54,173,118,120,169, 49,211, 55, 53,169,222,144, 9,208,175,167,139, 34, 17,164, 49, -230, 46,166,152, 95,254,217, 78, 30,222,193, 49,216, 94,110,204,105,164,104,153,136,102,249,218,238,252,124,252,206, 77,233,173, -191, 50, 65,123,124, 86,123,204,114,227,109,143, 54, 81,185, 50,171,160,166,106,174,242,120,111,173, 77, 56, 30,198, 10,150,192, -200, 7,174, 16,101,232,130,173,182,216,180, 22,118,107,151, 47,215,162,183, 34, 13,156, 50,113,132,213,244,246,220, 54,108, 41, -214, 57, 49, 59,221,164, 84, 47,101,104, 87,157, 55,245,106,169,125,109, 89, 92,249, 8, 16,140,214,170,109,139, 70,187,134,211, -120,189,211,225, 70,149,185, 83,136,253,140,219,223, 90,238,140, 21, 77,204,194,139, 70,142, 54, 32, 72,213,232,200,152,215, 3, -198,181, 61,252,218, 14, 53, 92,112,164, 84, 69,170,157,219,255,192,239,111,213, 78,142,170, 77,235,163, 43,127, 35, 62, 88,220, -170,215, 99, 34, 85,244,229,225,161,171, 54, 61,118, 95,170,112,230, 27,173, 15, 27, 76, 73,234,205,144,239,190, 10, 1, 76,244, - 40, 76,250,179,217, 28,129, 0,141, 96,212,197,104,209,210,138,199,218,206, 52,215, 61,235, 28, 66,142, 25, 21,230,173, 57,188, - 60,175, 95,121,227, 45,122,116,255, 67,186,241,204, 33,125,225,213,207, 83,221,205, 0, 77,162,149, 32,145, 29, 0,195, 78,150, - 67,161, 43, 96,164, 75,182,137,126,249,187, 63,160, 47,127,229,247,233, 47,253,249, 95,162, 47,126,250,245,254,123, 8,232,132, -103,203, 75,127,227,253, 15,151,207,254,140,238, 61,105, 59,230,121,191,175, 14, 14, 15,233,236,233, 35,223, 84,249,232,234,114, - 95,109,137,155,111, 26, 71, 35,110,155, 19,140,106, 31,167, 78,163,233,245, 27, 85, 97, 45, 27,171,210, 9,218,224,176,185,123, -220, 40,123, 49,228,163, 48, 75, 79, 3, 76,181,149,248, 3,208, 2, 40, 69, 81,220, 47,180,176,237,103, 20,123, 93,227,212,172, -133, 77,141, 40, 84, 93, 27,204, 55,222,223, 74,157,252,218,186,250,189, 48, 4,243,136, 51, 57, 74,235, 18, 84, 76,155,139, 14, - 86, 21,251,119,204,193, 1, 59,106,242,123,125,102, 84,236, 42, 51, 56,114, 88,237,190,118,113,102,181,137,233,132,161,141,252, -166,200, 7, 16, 12, 52,240,240, 22, 24,221,152,168, 25,196,156,181, 74,238,188,250,193, 98,224, 95,253, 32,103,118, 78,137,145, - 84,220, 10,213, 93, 52,101,142,232, 98, 1, 29,133,219,244,102,113,205, 65,215,173,149,209,111,110,227,152,241,251, 56, 43,248, -181, 99,220,159,195,205,228, 35, 19, 70, 78, 86, 59, 14, 92, 62, 26,243,210,153,170,138,195, 8, 16,127, 48,219,211,126,196,228, - 25,199,150,107, 29, 6, 49,207,173, 22, 16,191,173, 88,224,140, 61,105, 7,121, 12,245, 48, 85, 73, 39, 66,180,197, 69, 7,137, -179,141,173,196,233,175,183,206,107,228, 11, 23,142, 89, 15,169, 65,223, 85,160,110, 70, 45,177,233, 19, 32, 65, 33,176,196,189, -159,141,140, 38, 90,189,216,197, 60,159,129,100, 55,247,141,216, 33, 48,253, 96, 81, 59, 94,169, 87,158,237, 97,107,243, 57, 37, -153,245,107,115, 48,245,141,104,249,255,168, 54, 65,217, 46, 46, 84,191,121,116,238,188, 59, 61,117,205,129, 50, 35,199, 72,164, -135,120, 76, 99,179,154, 6,175,181, 85,219, 85, 55,174,186, 59, 83,161,142, 93, 87,139,105,229, 8, 60, 41,246, 15,193,226, 98, -160, 4, 61,173, 91,160, 15, 79, 43,112, 77,240,186,199,233,172, 58, 21, 74,180,203,193,109,214,180, 44,154,178,209,248, 73, 91, - 60,122,197, 16,160,142, 14, 18,217, 49,156,208, 75, 82, 51,183,107,215, 59, 3,184, 58,183,138,125,121,111,187, 86,234,159,231, - 47, 69,207,188, 14,209,138,109,138, 18, 9, 77,190, 5, 9,199,166, 76,113,146, 30,225, 43, 8,122, 1, 11, 34,220,152,130, 22, - 54, 4,184,184,200, 19, 68, 93,100, 81,180,106,163, 66, 84,220, 12, 17,127,194,121,134,156,161,251,208,159,164, 76,169, 35,140, -248, 3,203, 18, 28, 74, 4,172,152,216, 98,136,184, 82, 9,176,141, 72,246,174,251, 53,139,225,183,227, 99, 49, 4, 1,116, 2, -237,208,117,255,228,108,249, 12,207,233,228,228,156,158, 44,247,124, 99, 98,204,243, 89,160,119, 5, 48,202,169,235,193,222,174, -229, 32,122, 56, 34,218,102,185,206, 70, 88,126,215,157,187,247,233,135, 31,220,167, 47,127,245,107,244,137, 23, 63, 65, 87, 14, -142,104,103,213,246,114,216,188,255,240, 17,125,120,247, 30,157, 46,135,234,167,167,117,249,247,188, 28, 58,216, 91, 0, 71, 71, - 91,186,118,165,208,195, 39, 15,188, 59,133, 38, 89, 46,152,189, 29,108,101,214,251,182, 63, 63,165,250,125, 53,153, 58, 94,171, - 81, 82,104, 10,225,193, 81, 64,248,230,135,243,154,187, 50,246,236,168, 78,102,116,193,134,189,141, 53, 29,173,175, 39, 2,159, -145, 91, 95,160,210,178,184,123,181,202,209, 84, 82, 92,107,215,179,216,253,111,105,118,211,228, 35, 51,139,114, 30, 21,106,245, -159, 49,104,123, 3,154, 66, 38,214,221,205,250,220, 67,114,164,146,180, 88, 21,223,189,128,209,113, 89,108,190,147, 90, 22, 1, - 38,196,209,209,236,163,134,174,131, 56, 24,240,180,190,215,108,212, 50, 75,222,133, 28,135,212, 24, 13,141, 91,121,183,220,123, -162,232,104,118,141, 82,197,243,175,183,190, 85,219, 83,145,143, 18, 9,128,164,113,188,166,140, 21,229,244,219,189,218, 91,233, - 10,183,177,192,153,222, 85,237,240,164, 93, 46,156,139, 70,177,110, 89, 11, 15,189,238,101, 51,244, 92, 37, 10,135, 98, 69, 30, - 57, 32,116,144,237, 14,151,202,168,189,174,237,206,114,130, 13,241, 7, 98, 27, 81,130,228,148,162,209,180,213,142,179,114,118, -158,183,171,106, 25, 3,227, 35, 85,201, 3,100,204,207, 57, 34,111,188, 45,236,243, 96, 83,214,234,188,213,173, 64,125, 22, 49, -249,141, 27, 2,204, 26, 45,124,137,164, 27, 2, 6, 52, 46, 12,197, 4, 62, 48, 15, 76,192, 54,102, 7, 37,184,117,175,128,120, - 79,171,226, 34,161,106, 30,170,201,177,217,207,189,170,175, 26,155, 91,124,222, 86,204,159, 59, 27,140,103,130, 36,165,226, 23, -189, 9,194,236,212, 61,146,182,244,193,150,113,218,238,155,183,161, 24,107,133,133, 93,171,151, 25, 22,200,206,249,215,121,149, -183,170,230,193, 70,174, 57,235,154, 45, 22, 16,150,252,138, 20, 41, 29, 13,244,223,127, 62, 78,240,197,170,117, 19, 69,237,140, - 18,184, 27, 21,194,121,241, 69, 59,102,183, 69, 15, 22, 99, 65,154,207, 78, 52,164, 56, 80,155, 98,185,213,115, 84,231, 3,198, -161,164, 37, 59,141,207,230, 53,146, 30,115, 88, 44,144,194, 35, 19,117, 35,104, 85,138, 2, 49,250,161,105,217,104, 92,101,110, -178, 89,187,206,182,219,234, 61,100,164, 49,210, 3, 79, 60,229,106,142,145,108, 87,144, 36,250, 98, 7,223,244,159, 83,128, 82, -230, 16,165, 1,175, 32,125, 14,168,194,143, 71,200, 17,136, 84, 7,134,185,181,172,107,154,155,122,151,134, 50,148, 40,183, 92, - 81, 12, 10,130, 42, 9,181,113, 84, 80,171, 49,132,172,210, 18,253,224,146, 17,187, 22, 55,219,170,231, 15, 62,186, 69, 63,251, -185, 23,232,163,247,111,210,131, 23, 63, 73,151,182,135, 73, 88,143,208,228,188,177,155,186,133,189, 51,181,215, 4,212,247,209, -178, 6, 94,255,137, 87,232, 55,182, 91,250,254, 91,183,232, 55,127,247,203,244,239,253,234,175,210,118,187,245,142,217,246,112, - 75,199, 71,135, 93,243, 51,151,203,116,249,198,229,174,118,111,207,225,253, 71,143,232,242,241,134, 46, 31, 93,163, 23,158,185, - 66,167,187,121, 4, 16, 89,232, 20, 67, 88,201,100,201,140,145,130,230,109,100,155,123,176,137,174,170, 89,213,123,110,123,224, -154, 37, 70, 16, 18,186,154, 94, 73,207,112,240,242, 3, 55,133,100, 91, 43, 43,111,239,238,106, 32,190,149, 41,111, 93, 41,194, -113,136,173,143,186, 81,117,175,185,135,176,204, 33,190,235,207,177,196, 44, 92, 40,131,158, 28, 34, 36,174,141, 48,199, 77,255, -152,206,231, 65,135,235,254,115, 79,192, 24, 99, 9,135,200, 89, 2, 92,245,234,213,215, 71,123, 45, 60, 69,118,187,225,165,203, -100,102, 72,197, 75,247,132,113,149,173,196, 17,172,173,111, 93,147,177, 57,136,216,106, 27,187,213,243,241,123, 56,192, 94,182, -134,214, 90,125, 12,218,181,183,108,204, 15, 1,222, 60,119, 9,144, 1,202, 68,157, 50, 82, 38, 87,218,139, 17, 36, 61,111, 61, -238,243, 77,155,213,215,224,125,226,200,217, 68,185,226,136,117,138,252, 1, 93,230, 39,187, 53,140,247,209, 2, 93,186,232,172, -221,101,219,104,197, 68,126, 3,206,162,162,161, 99, 98, 49,108, 85,152,125, 98, 50,218, 22, 6,127,152,176, 72,128, 91,174, 54, -172,182, 40,119, 26, 79,139,140,219, 76, 97,177, 88, 62,204,205,118,163,237,237,240,127,247, 88,187,246,231, 27,173, 44,117,161, -175,218, 30, 19,157,215,247,153,198,110, 14, 65, 11,136,112, 18,254,147,129, 1, 15, 97, 40, 2, 94,232, 68,106, 75,234,100,157, - 25,139, 64, 10, 23,244,226, 10,156,234,168, 96, 76,210,216,107,119,115, 56, 6, 24, 98, 38,155,224,116, 51, 54,100,111,111,105, -197,108, 94,237,190, 1, 79, 37,241,206,169,148, 32,178,205,122,208,153,200, 57,219,157, 96,165,179,109,177,214, 41, 7, 39, 32, - 67, 67, 40,197,146,122,230,139,167, 56, 13,253,133,183, 17,101,234,155,120, 63,228,109, 88,253,253, 83,180,134,129, 89,221, 71, - 16,172,120,197,141,162, 98,217,172, 53, 22,206,162, 27,174,135, 40, 88, 30,116, 50,161, 93,136, 85,113, 94,119,179,135,244,123, -104,211, 81,149,163, 52, 25,124,103, 81, 4,170,156,157,199, 60,119,158, 65, 33,227, 68, 30,181, 7,114, 10,123,232, 99, 7,168, - 92,215,130, 51,239,118,149, 96, 32,248,124,206,225,229,197,231,117,209, 9,128,205, 80, 56, 99, 97,215, 34, 73, 65,145, 28,231, - 94,187,184,149, 53,172,115,110,196,162,188, 66,136,192,106, 17,202, 94, 23, 46, 66,167,152, 37,147,118,247,208, 54, 46,220,138, -141,182,157,135,110, 45, 7,191,111,254,248,221,254,156,207,117, 89,120,166, 51,250,241,237,119,233,103, 63,249, 69,154,219, 8, -170,224, 76, 31, 90,138,171,188,229, 84,125, 98,172,171,132, 88,246,241,242, 57,254,214, 31,124,107,249,185, 59, 58,223, 30,209, -123,183,111,209,191,250,206,183,233, 75,159,123,189,127,214, 39,119,207,232,107, 63,124,159, 46, 45,139,252, 79,125,230, 53,186, -245,248,140,206,151,103,226,225,201,174,199,156,190,242,220, 76,219,105,219, 95,231,221, 7, 15,233,219,111,127,141,126,237,151, -127,145,118,187, 93, 42, 24,162,163, 34,221,126, 41, 18, 90, 36,158,224,254, 81,125,130,119, 10, 1,120, 21, 7, 37,179, 65,213, -160, 23,182,255,218,110, 64, 72,184, 25,107,178,129, 75, 54,136,178, 86,125,202,134, 93, 64, 60,152, 15,232,184,128, 86,191,169, -230,149,141, 80, 48,103, 1,117, 83, 53,130, 88,216, 34,165,205, 27, 13,107,178,181,104, 88,149,226,206,162,208,206, 71, 79, 95, - 35, 61,156,247,106,127,163,157,221, 9,218,240,162,179,249, 25, 50, 5, 38,178,232,218,113,224, 28, 34,216, 1,101,137,159,103, - 32, 27, 18, 74, 25,243, 35,253,113,130,116, 52,208,220,112,216, 59,197, 5,113,170, 95,105,159,231,172,220, 22, 29, 23,155,118, - 99,234,251,226, 80,172,147,234,154, 38, 15,222, 34,167, 50, 50,174,125,160, 51, 25,157,154,170, 10,124, 56, 28,177,228, 80, 49, - 24, 97,152,226,127, 68,234, 78,193, 75, 48, 14,131,173, 97,205,209,113, 68, 7,253, 67,139, 76, 91,118,129,195,120,191,163,221, - 81, 21,142,192,133, 0,161,138,118,215, 16, 26,228,156,228, 16,118,152, 62,206,213,192, 50,218, 63,147,251,107, 85,154, 55,145, - 43,107, 11,141,220,221, 38,156,153,218,108,139, 53, 33, 72,171,116,209, 74, 83, 40, 22, 95,131,216,244,217, 54,122, 82,167,178, -242,181, 3, 20,159,115,114,156,189, 49, 1,148, 39, 65,136, 13,110,122,184, 8,135, 50, 80,237, 87, 54,223,169, 38, 18, 83,232, - 1,147, 42,103,161,173, 87, 33, 92,102, 14,133, 45,149, 17, 0,145,144,118, 7,155,184,209,166, 2,209, 56,250,186, 54, 17,144, - 51, 14, 5,182,248, 21,135, 43, 68,234, 28,120,124, 9,176,167, 62,179, 12,200,189, 11, 15, 1,176,226,126,219, 73,207,205,224, -133,247,236,105, 27,227,180,191,189,131,142, 66,235, 68, 20,107, 59, 21, 39,152, 13,139,207,121,124, 22,221,182,144, 19,245,216, -185,214,208,242, 21, 2,166,244,242,197,211,179,104,181,251,130, 53,167,182,161,117,170,135,128,101,216, 70, 34,116, 68,146,216, -174,184, 0, 71,114,242, 95,228, 57,230,179, 56,120,151, 4,125,219, 66,222,158,116,119,150,138,153, 68, 5,154,172,228,187,216, -176,217, 55,136,156, 11, 14,132, 70,204, 29,185, 8,159,158, 54,244,149,173, 13,243, 73, 97,214, 40, 92,124,134,138, 24, 97, 95, -120, 96, 1, 77,100, 58, 11,141,105, 85,250, 31,126,135,238,221,187,189, 84,192, 87,232,214,253, 19,122,229,122,161,183, 63,184, - 73, 63,245,169,207,247,175,135,214, 47, 31,100, 46, 46,219,215,252,251,152, 21,182,194,224,187, 63,120,143,190,254,189, 31, 46, -143,200, 68,135,203,230,124,114,122, 68,191,247,213, 55,104, 62,188, 66,239,188,127,147,190,253,173, 63,238, 85,227, 65,211,177, - 92,189,186,220,102, 79, 6,178,179,117, 44,151,127, 31, 31,110,232,185,171, 7,116,116, 88,250,185,121,226, 33,124,157,168,164, -160, 25,166, 41, 98,159,196,228,146,106, 85,180,195, 95, 17, 21,191,101, 38, 64,118, 74, 68, 71,112, 56, 65, 86,135, 68, 1,155, -149,193, 84,112, 46,111,154, 84,188, 71, 92, 36,183, 28,188, 55, 65,127,172,125, 62,140,118,223,162,186, 15, 73,193, 81,189,133, -108,166,119,142,116, 52,117, 66, 83, 0, 15,199, 97, 96,214, 48,153,254,156,157,171, 78, 66, 9,109, 45, 93,206, 15,186, 22,215, - 93,115,172, 45, 67, 11, 73,230,154,194, 83,109, 4,224,196, 70,195,210, 2,115,157, 11,206,185,129,250, 8,106,117, 54,203, 30, - 65,119,197,198,156, 86,233, 74, 4,252,116,155,110,109, 26,176,169,183,211,125,223, 43,161,248, 39,173,200,221,169, 34,154,118, - 88, 32, 81,206, 90, 56, 48,231,111, 26, 38,239, 70, 19,228, 90,216,111, 55, 8,143,105,151, 10,116, 3,221,111,175, 62,121, 42, - 14,115,106, 26,178,205,209,225, 65, 16,177,116,161,243, 86,136,207,206, 52,221, 24,194, 1, 2,251, 26,146,162,204, 45, 22, 31, -226, 27,148, 99, 0,109,204, 87, 27,145,141, 77, 36,229,191,203, 84,230,101,130, 88, 73,118,181,112, 59,217,181,170,188, 20,139, -235, 27, 55,121,157,207,244,121,211, 19,148, 30, 16,122, 88,205,102, 26,143, 91,169,106, 81, 3,189,133,205,229, 64, 37, 14, 65, - 77, 1,124, 41,146, 90, 87, 46,178,100, 64,152, 32,223,185, 70, 11, 51, 33,163,221, 89, 83, 72,253, 31,158,252,100,128, 19, 73, -144,234, 18, 7, 46,240,228,242, 57, 8, 64, 82, 88, 73,137, 69,195, 14, 56,224,100,104,191, 84, 60,225, 14,194, 1,106,192,166, -125,161, 46, 32, 54,177,170,221,176,182,230,209,133, 47, 11, 67, 48, 65,136, 30, 82, 56,201,176,219, 89,226,153,145,222, 56, 63, -136,102,131, 10, 79,139, 10,245, 12,211, 73, 30,181,137, 94, 93,123, 80,121, 21,204, 34,156,161, 38, 9, 29, 88,199,120, 91, 42, - 28,210,172,194,153, 37, 70,216,170, 75, 48, 63, 54, 97,230,115,202, 63,160,148, 80, 8, 59, 99,210,147,120, 58,164, 68, 38,117, - 23, 61, 50,136, 68,169,128,109,146,131,104,149, 98,134, 1,211, 12,175,135,177,108, 41,185,155,144,242, 25,136,243,129, 99,149, -195,200, 53,236,104, 72,147, 19,225, 92, 89, 19,250,233, 1,238, 83, 26,167, 82,232,205, 31,189, 69,103,203, 1,107,183, 59,161, -151,158, 89, 42,232,101,161,124,252,116,215,219,150, 83,175, 70,227, 26,161,236, 38,151,232, 28,155, 2, 65,228, 40,100, 49,204, -203,107,253,167,191,247,213,158, 57, 61,109, 14,233,210,229, 3,186,113,149,233,228,108, 75,175,191,246, 28,253,252, 39, 95,163, -219,183,238,208, 31,125,245,219,244,250,167, 63,217, 23,196,179,179,230,251, 29, 12,135,163,163, 3, 58,220, 22,239, 26, 94,187, -190,165,131,227,103,250,184, 70, 32,107,219,198, 69,134,231,196, 48,161,192, 86, 87,151,234, 71, 26, 36, 12, 48,146, 70, 72, 55, - 9,154, 72, 46,224, 8, 68, 21, 95,160, 27, 36,233,150,246,204, 1,171,196,251,154,190, 13,102,187,229, 64,202,198,163,107,172, -207, 62, 43,142,182,168,247,185,109, 16, 27, 50,232,142,174,179,179,254, 12,116,137,216, 26,143,208,160,173, 40,128,198,158, 11, - 88, 15, 75,140, 44,195,196,141,102, 12,129,209, 86, 8, 33, 61, 85,210, 14,202,150, 25,161,196, 59,107, 61,187,211,161, 14,140, -234,102, 19,252,125, 17,107,101, 27,100,166,166,104,100,214,206, 86,223,107,106, 8,229, 90,101, 60,169,171,200, 80,159,253, 83, -153,106,210, 87, 84, 27, 37,251,236, 34, 63, 75, 24,206, 20,122, 28,208, 35, 72, 80, 44, 59,147, 67,233,123,126,159,108, 71,183, -164, 20,128, 51,225,122, 59,143,207,110,115,216, 68, 85,170, 72,236, 10,100, 71, 7,110,180,163, 50,102,127, 2,129, 45, 6, 39, - 72,249,232,107,164,178,245, 12, 10, 98, 45, 1,185, 41,209,138, 86, 3, 65, 90, 0,135,130, 95,227, 55,139, 9, 50, 70, 42,141, -121, 4, 43,156, 88,219, 33, 96, 94, 30,206,214, 2,238,215, 90, 41,110, 62,175,228, 33,196, 34,159,215,227, 56, 64, 23, 10, 72, - 1,243,182,222,154, 35, 15,145,152,200,229, 78, 50, 26,152, 23,227, 92, 19, 3,109, 82,255, 50,183, 8,130,162, 91, 32,219,109, - 99, 31,174,184,237,100,140, 13, 74,138, 7, 76,124,122, 70,149,110,141, 87, 48, 83,138,214, 53,149,182,119, 94,173,162,173, 88, - 81,216, 15, 85,110, 53, 69, 53,235, 63,171,178,223, 11,182,138, 49,108,111,129, 11, 78,204, 19, 40, 74,128, 55,143,183, 75,213, -211, 80,209, 42, 91, 8,114,233,115, 20, 45,163, 7, 27,175,179, 67, 36,114,148, 41,115,216,199,250,129,165,192,156,124, 66,113, -219,228,135, 39,143,203,129,234, 28,176,136,144, 31,128, 85, 3,173,130,115,200,241,155, 25, 9,203, 24, 7,231,184, 87,143,214, - 69, 97, 39,182, 67, 86,254,117,127,239, 37, 73, 99, 41, 69,189,153,121, 93,194,111,142, 93, 42,123,110,216,193, 23,148,159, 27, - 14,125, 10,102,122, 71,223,125,252,174, 54,134,185,122,237, 42,201,187, 13,110,197,244,240,241, 19,186,241,153,151,232,207,253, -252, 47,209,225,178,241,246, 69,201,188,186, 16,201, 27, 33, 53,226, 97, 50, 24,116,192,148, 67, 78,108,177,108, 13,176,227,227, -163,190, 41, 63,122,242,100, 57, 68, 92,163,237,114,112,248,254, 59,119,233,120,121,207,191,246,103,126,137,174, 28, 29,210, 59, -239,126, 72,187,238,212,168,116,208,184, 11,219, 33,154, 58, 62,222,210,245,203, 91,186,251,224, 81, 95, 7, 63,251,153, 47,118, -224, 17,179,100, 26,159, 80,178,136, 82, 21,176, 61, 81, 84,242, 80, 0, 5,221, 17, 97, 52, 42, 30,131,141, 92, 4,249, 8,236, - 0,149,208, 59,196, 51, 44,208, 73, 26,215,127,194, 25,106,232, 97,132,246, 52, 22, 3, 8,212, 90,202,115,204,241,237,176,162, -127, 97, 66, 32, 12,122,244, 41, 51, 2, 4,194, 41,152,113, 17, 98,183,225,246,223, 58, 75,192,224,177,243, 9,228, 60,174,179, - 67,103, 12,110,132, 26, 28,223,112, 45,207, 67,140, 72, 55,197, 72,168,138,187, 5, 74, 23,212, 42, 78,182,195,105,118, 29,120, - 69,232,184,232, 33, 43,163, 96,153, 13, 61,107,156,119,162, 76,114,172,213,125,235,254, 89,149, 26,107, 82,217, 0,117, 20,174, -139,197,228, 18,176,222, 33,108,202,115, 71,166,226, 32, 41,129, 80, 34,149, 17, 5, 48, 72,196,105,117,166, 11,235,131,141,225, -111,110,149,227,236,137, 81,235,132,202, 88, 3, 4, 68, 69,235, 89, 23,114,170,101,197, 90, 6,133,135,228,162, 0, 23, 14,100, - 85, 91,152, 72,155, 95, 68, 97, 20, 23,213,163, 10, 85,233,189,217,140,157,175,232, 44,222, 42,234,162,127,110,118,142, 68, 70, -162, 21,190,234,130,224,150,245,130,232,109,105, 70, 1, 15,165, 15,126,237,253, 36, 20,244,113,141,192, 24, 46,233, 1,142,247, - 77,171, 64,146, 24, 59,186,184,184, 80, 10,131, 89, 53, 89,221,153,224,170,103,136,125, 18,180,198,164, 87, 41,126,179, 5,125, - 75, 82, 88, 8,148,153,177,137,173, 69, 89, 38, 80, 44, 37,243, 8,216,188,200,236, 22,184,240,145,203,170,209,106,220,129,105, -117, 47,141,147, 56, 94,120,161,149,101,139,202,126,155,153, 71, 43,148, 28,169,201,144, 44,136,253,106,198,160, 55, 56, 48,112, -218,168, 83,228, 55, 83,138, 29,101, 87,107,115,114, 9,248, 98,186, 98, 6,224,189,226,140,113,134,128, 7,230, 85,212,235,234, - 64,152,176,173, 24, 45, 91, 86,213, 56, 6, 47,149,189,153,185, 35,147,129,180,199,246,121,121,117, 17,115,135, 78, 19, 92,254, -123, 55,199,130,153,175,213,152,155, 30,180,176,168,229,189, 92, 57, 46,116,233,112,162, 39, 75,149,126,165,168, 82, 89, 83,221, - 41,209,224,132, 34,210,239,227,201,143,129, 84, 30, 23,163,121,132,255,244,159,252,105,122,251,189,155,116,190, 59,163,167, 39, -103,116,239,254, 29,250,212,167, 63, 65,191,246,171,127,146,166, 89,186,231,252,213,151,159,163,127,244,219,191, 79,223,253,227, - 55,151,253,122,219,215,192,170,222,223,214,154,111,122,158,102, 38,121,255,163, 91,244,242,107,167,116,163,137, 82, 61,222, 82, -160, 75,192,233,144,147,194,114,148, 23,129,157, 35,118, 96,192,228,238,139,136,186,194, 46,104,133,150,254,224, 77,120, 36,167, -141,213,116,158, 91,224,232,204,144, 95,128,248,208, 2,109,124,194, 97,157,216,207,139, 64, 16,251,185,236,162, 48, 1,209,164, - 10,211,102, 32,116,166,181, 58, 14,126, 30, 25,203,226,235,111, 20, 70, 27,104,149,177, 23, 17, 93, 87,216, 5,117,147, 59, 2, -156,196, 88,103,255, 61, 13, 63, 61,180, 84,243,176, 72, 11,132, 5, 89,204,173, 61, 99, 42,122,235, 22,184, 70,200,107,227,220, - 57,248, 28,189,243,160,220,140,150, 26,216,174,247,220, 17,193,209, 57,116, 34,160, 35,244,213, 81, 35,176,145,171,240, 88,212, - 33,228, 69,143,146, 0,251, 65, 78,161, 50,158, 70,216,127,247,148, 70, 46,125,164,220, 88,250,158,132,168, 72,111, 11,181, 41, - 88, 36, 26,109,148, 92,143,182,105,213,176, 88,232, 91, 35,126, 89,171,173,228,212, 38,198,185, 33, 72,148, 24,100,242, 12,130, - 25, 89, 39, 61,137,228,255, 70,134, 54,164,224, 32, 76,222,209,176,158,138, 19,179,137,128,225, 75, 58,221,246,159,181,153, 52, -189,198,252,139, 74,135,179,205, 1, 55,229, 10, 24, 66,255, 29, 81,153,134,149,167, 4,150,211, 39,187, 65, 3,203, 85, 60,167, -215,197, 80, 73, 91,200, 38,167,141, 97, 74,126, 87,193,106, 30, 14, 81,146, 84,122,236,225, 46,209, 32,200, 66,139, 88, 96,166, -177,199,109,217,197, 40, 93,164, 56, 75, 22,246,217,255, 20, 22,195,235,245, 51, 41,187, 37,192, 11, 50, 90,213,101, 98, 72,232, -163,148, 17, 62,238,105, 72,123,227, 8,121,113, 8,132, 85, 57,144, 91,108,209,165,126, 93,156,243, 30, 85, 83,133,211,190,243, -169, 10,167,144, 11,194, 32, 33, 10,106, 84, 59, 81, 67,142,164, 90,141, 48,114,116,117, 79, 50,186, 49,139, 7, 32, 48,160, 90, -153,147,248, 59,179,228,241,192,192,209,122,231,124, 42,212,235, 83,124,195,231, 2, 63,191,128, 85, 19,132,114, 41,170,104, 21, -165, 75,123,163,105, 94, 85, 17,112,174,225,240,155,167, 12,116,137, 64, 24,238,203,197,134,190,252,205, 55,232,143,190,241,109, -250,235,255,225, 95,164,131,237, 54,249,238, 77,140,122,178,220,111,239,127,248, 81, 23, 71, 29, 29,108,163, 90,169, 21,153,102, - 49, 70, 88, 85, 11, 54,158,193,131,130, 29, 52,108,211, 44,250,194,219, 2,253,226,115,215,135, 85,106,249,249, 87,142, 46,245, -236,129,207,125,242,165,222, 49,104,230,221, 63,248,206, 15,233,255,250,251,191,222,223,203,195,167, 79,251,125,114,222, 29, 36, - 99,106,126,120, 48,209, 7,183,159,210,147,147, 71,180, 93,190,127,115,112, 56, 44,163, 18,247,167,152, 21,211, 79,126,197,109, - 81,158, 98,214, 19,192, 74, 26,199, 48,163, 92, 49,187, 5,170, 4,192, 36,180, 60, 18, 57, 7,162,148, 68,175,180, 75,172,139, -216,157,178,150, 55,214,211, 18, 97, 79, 62,147, 7, 93,164, 15,118, 56, 16,172,109, 67,159, 61, 57, 15, 99, 83,107,136,194, 10, -228,128, 72, 20, 14, 86,168,209, 84,210,198,204, 30,251,103,159,247, 52, 26, 11,222, 41,154,180, 99, 12,237,119,107, 83, 79,197, -197,186,243,185,246,165,107,228,200,207,234, 20, 26, 90, 29, 76, 60,176,188,119, 72, 24,212,215, 37, 69, 29, 83,154, 67, 51,243, - 46,136,113,214,225,132, 69, 77,160, 88,237,228, 77,129,220,232,254,217,110, 32, 38,215,158,171,141,231,168,236, 9,107,189, 51, - 82,161, 72,198, 8,103, 73,188,151, 36,178,163, 72,148,116,114,228,212,216,239,151,182, 16,235,168,254,238, 18, 11, 2,122, 91, -177, 3,150,162,224, 32, 29, 44,165, 59,225,106, 80,115,139, 57, 40, 84,217,139,186, 95,112,174,242,202,185,164, 4,172,230, 85, -236,108,102,142, 83, 25,151,152, 1, 58,243,106,154,116, 46,203,148,131, 87, 25, 32, 22,153,229, 29,213,181,248,141, 79,158,179, - 44,206, 12,142, 69,172,236, 45,142,184,169, 8,122,255, 19,238, 44, 73, 66, 86, 0, 4,109, 3, 27, 31, 25,155,213,130, 49,183, - 2,150, 20, 1,107, 70,220, 67,226,209,149,218,162,218,176, 43,189,147,190, 64,109,120,216, 2, 38,104,181,251,189, 2,158,206, - 33,204,179,138, 0,125,198,197, 49,159, 3, 31,201,190,183,142, 81,128,242, 38,231,213,189,110,173,236,170,122, 3,193,249,109, -168,228,187, 87, 95, 83,208, 24, 75,215, 2,225, 41,148, 19,188, 74,129,143,198,168,105,149,148, 26,168, 36, 48,155,100,155, 54, - 1,102,135,140,175,177, 96,119,131,210,166, 35,171, 10, 61,116, 6,178, 18,121,173,133, 97,156,178,203,211,156,157,163, 2, 71, -138, 20, 69,239,103,173,136, 3, 1,201,106,108,142, 51,248, 11,254,238, 58,203,156, 48, 16,166,105, 49,183, 7,244,187, 95,255, - 38,253,163,223,252,109,250,143,254,237, 63, 71,175,188,240, 44,237,118,115, 2, 71,117, 87,213,246,144, 78, 58,100,105,184, 28, -166,102, 35,218, 28,211,241,229,203,189,114,241, 72, 98,195, 32,251, 34, 37,217,238,233,138,101, 94,141,218,195, 58,214, 50, 7, -218,181,105,175, 99,163, 52,198,195,163, 45, 93, 61,190,212, 43,192,179,229,251, 62,186,117,151,142,143, 46,211,221, 71, 15,233, -188,249,229, 39,246,174,217,249,249, 41,221,186,247,152, 62,253,210, 21,186,117,231, 41, 93,191, 52,209,213, 75,135,206,115,199, -231, 56,150, 58, 24, 1, 72,248,170,237,144, 34,122,111,176,113,225,105,245,253, 41,232, 69, 18,168, 75, 4,226,110,144, 27,142, -235,139, 85,207,192, 80, 55, 60,106, 98, 35, 8,174,233,218,149,128,240,120, 1, 72,140,221,223, 19, 67,243,221, 70,116, 12, 7, -126, 14,113,237,164,133, 71, 21,164, 31,230,238, 69,216,134,178,246,152,112,243,197, 88,233, 42,105, 13,142, 24,106,134, 74, 94, -203,172, 13, 67, 80, 18,173,248, 10, 49,106,171,112, 72,225,148, 3, 98,215,178,236, 63, 66, 90,213,216, 20, 36,144,211,197, 15, - 41, 22, 35, 28,106, 95,120, 50, 57, 8,150,226,149, 59,167,107, 48, 90,238,112,109, 74,113, 96, 81,116,135, 25,128, 86, 74,255, - 51,241,224, 60, 14, 89,155,131,229,134,101, 69,114,218,120, 81,128,195,142, 11,153,143,192, 41, 46, 56,167,180,163,180,107,133, -168, 4, 54,103,236,192,123, 38, 45, 37,119,193,222,134,207,117,109, 25, 11, 59, 79,179, 30,100, 91, 4,124, 66,105, 22,153,219, -150, 72,176,195,251, 10, 71,254, 81,105,147,179,228,227, 27,196,133, 97, 65,233, 2,174,121, 58, 16,172,129, 29,217, 78, 23,179, - 51,137, 69,115, 45, 99, 22, 73,129, 53,178,130,151,250, 76,220,130,112, 64,254,204,251, 71, 49,215, 1,136,134,244,164, 86,107, -133, 74,159, 17, 89,154,129, 32, 22, 19, 74,235, 25, 50,230,121,176,122,123, 45, 37, 28, 74,210,177, 9, 22,200,181,166,156,199, - 13,162, 40,255,112, 74,136,178,200, 55,115, 74, 46, 4, 79,116,194,207, 65,160, 34,182,202, 90,130,158, 71,147, 68,136,137,199, -177, 98, 27, 57,230,231, 69,192,249, 81,140,109,158,189,214,248, 58, 96, 5, 76, 85,104,114, 85,240,158, 49, 59,121,103, 35, 99, - 30, 28, 10, 22,226, 2, 63, 91,128,156, 72,208,250,151, 85, 38, 93, 86,113, 11, 70,186,164,174, 12, 87, 19,111,170, 75, 64,181, - 50,125, 94,125,114, 74, 15, 31, 62,162,103,158,187,209, 29, 52,109,147,175,141, 0,132,224,142,166, 26,239,208,160,221,178,201, -110,251, 66,117,176,149, 14,131, 57, 56, 56, 94, 54,223, 51,165, 23, 78,125,238,205,216,239,147, 81, 41, 86, 32,157,121, 39,145, - 66,104,137, 78,128, 39,103, 59,122,225,249,107,244,169, 87,158,165,239,190,249, 22, 93,123,254, 89, 58, 62,216,208,243, 47,191, -216,245, 5,219,229, 96,241,137, 79,188, 74, 63,248,222,143,123,152,203, 75,207,222,160,119,111,126, 68, 87, 47, 95,233,240,166, -118,232,104,163,130, 22,216,116,227,234, 49,189,240,236, 49, 29, 29, 40,160,100,171,150, 50,145,125, 24, 13,231,249,126, 42, 10, -236,178,111, 38, 90,137,104,162, 88,240, 3, 0,134,235,160,223,122, 95,156, 41,144, 61,158,152, 1, 74,251,155, 76, 36, 9, 42, -113,255, 58,100,150, 39,241, 30,246,212,145, 97, 95, 97,131, 76,217, 28,217, 17, 97, 94,252, 84, 4, 36,241,100, 78,249,139,177, - 29, 92,181, 26,150, 63,114, 20,108, 77,137,160,130,246, 70, 2,176,142, 5,195, 24,137,207,191, 49,114, 43,250,112,161, 3,113, - 74, 32,188, 19,170, 57, 10, 8,139,205,245, 66,178, 26, 15, 68,237,182,221,245,117,224,152,228, 16,184, 79,241,249,136, 2,100, -124, 14, 94, 2, 42, 67,145,226,102,201,140,163, 43,167,139,149,222,251,246,220, 69,236,107,220,131,174,166,217,140,107,185,217, - 40,127,217,241,146,102,173,160,216,196, 4, 78, 67,102,160, 31,149,106,156,218, 43,177,111, 40, 88,206,176, 64,219, 46, 9,228, -100, 88,186,112,143, 78, 85, 2, 12, 53,167,236,197, 77, 27,190,182,220,112,142,239, 25,198,148, 23, 55, 81,206,184,181,192,100, - 37,204,185, 80,184,133,191, 47,169,133, 56, 81,135,252, 6, 47,241,158,243,184,154,247,186,158,209, 37,143, 7, 31, 35, 87, 81, -196, 29,142, 35,241,170,108,120,173,245,187, 39, 74,115, 49, 74, 62,204,172, 23, 91, 93,236,189,246,139, 72,228, 80,227,169, 61, - 17,204,128,227, 28, 35,214,139,218,164,208, 66,134,185,115,126, 93, 5, 40,130, 5,145, 78,233, 40,226,194,180,245, 44, 25, 30, -184,124,138,150,172,203, 68, 79,170, 11,196,152,100,125, 25, 38, 21,126, 50,128, 78,224, 96, 89, 60, 87, 57,116,109, 92,240, 48, -138, 51,237,212,157, 3, 90, 32,125,204,198,158, 91,234,138,101,132,118,127,129, 67,100, 86,165,239, 93, 19,131, 12,121,181, 64, - 25, 14,191,234, 72,229, 13, 73,239,245, 42, 62,199,245,241,161, 76,125, 67,252,232,163, 59,244,149,111,124,135,118,231, 39,244, -119,126,227,159,208,127,241, 87,254, 10, 53, 55, 77,133,141,174,109,214,231, 29,193, 42,116,116,116, 68,135,203,223,187,122,101, - 67,207,220, 56, 30, 29,181,205,166,179, 45,110, 63, 62,161,175,252,206, 87,232,236,228,132, 46, 31,115, 7,133, 20,222,210, 79, -254,228, 79,208, 75,207,189,170,140, 6, 35,104,133, 21, 41,116, 21,227,195,255, 31,255,167,191, 77,167, 15,110,210,151, 62,243, - 12,125,238,250,203,116,243, 81,155,225, 47,135,136,235, 55,134,125,118,249,157,143, 31, 63,166, 39, 39, 79,232,209,227, 39,125, - 30,123,122,118, 70,151,142, 43,157,205,205,159,222,102,175,115,247,184, 55, 27,211,233,217,121, 99,105, 83,221,218, 60,189, 0, -118,148, 46, 16, 31,178, 87, 80,251, 51, 15, 73,129, 58,123,154, 97,130,144,161, 10,179,251, 42,105,207,138, 74, 95,214,136,132, - 8, 0,170, 48, 42,176,233, 97, 9, 61, 17, 23,116,123,168,211, 3,152,237,232,224, 73, 74,110, 33,112,115,112, 20, 54,190,118, - 98, 38, 8, 70, 19,199,152, 2, 93, 77, 73,111, 99,139,207, 36, 14,176, 26,238,130,170,226,191,245,104,137,178, 72, 24, 45,153, -150, 52,105, 5, 12,224,186,187,197,176,148, 28, 71,156, 56,199, 18,157,162,222,246,159,156,120, 71, 26,114, 54,174,225,228, 56, - 71, 63,138,114,232, 84, 24, 58,181,214,125,138, 52, 60, 96,200, 23, 88,227,182,155,212,224,181, 60,123, 19,235,142,251,166, 36, -194, 36,219,237,223,153, 30,109, 92,116,249, 88, 63,255,234,191,108,220, 71,145,186, 37, 38,152,232,102,255, 2, 16, 14, 73,217, - 15,201, 10, 3, 87,154, 87, 82,231, 96, 40,203,234, 52,149,208, 82,116,193, 23, 64, 93,137, 8, 18, 75,122,209,165,112, 35, 97, - 55,129,170,103,101, 34,206, 39, 98,168, 74,243,141, 8,108, 13,108,101,113,201,162, 32,180, 77,225,205,135,162,126,194, 77, 73, -168,174, 4, 97,123,237, 79,206,117,246, 90,210,150,212,180, 43,129, 89,254, 57,251, 67,213,184,161,243, 67,130,149, 71, 14, 46, -225, 11,132,132,177,161,114, 30,164,130, 88, 46,220, 15, 54, 30,192,121, 19,242,244,169, 68, 75,154,247,126, 31,118, 68, 46,178, - 44,175, 43,209,168, 0, 4, 26, 30,204,185, 42,101,160, 17,230, 81, 18,118,124, 99, 97,140,177, 14, 37,255,186,117, 21,156, 39, -173,177,160,113,125,178, 82, 30,145,156,184,235, 99,104, 75,238, 62,112, 18,204, 9, 4,187,100, 60, 44,224,117, 77, 45,108, 1, - 29, 40,185,196,159,143,173,223,245,136,104,138, 57,143,148,184,178,199,151, 46,209,183,126,240, 99,186,125,255, 1, 93, 61,222, -208,111,127,229,107,244,133,207,127,145,254,210,191,249, 43,116,170,132,195,174,124,111,155,250, 82,209, 63, 93,254,145,101, 67, -223,220, 56,164,103,174, 31,211,213,171,215,250, 97,189,208, 24,139,189,123,235, 1,125,229,107,111,244,205,246,112, 90,170,250, -237, 33, 93, 58,186, 74,127,248,198,215,232,191,250,171,255,217, 82, 73, 95, 94,214, 32,142,195,117,178,110,142,195,142, 97, 65, -231,229,251, 62,184,243,184,183,226, 15, 54,135,157, 44,184, 93, 14, 27, 54,126,107,243,253,247,111,222,161,243,221, 57,157,207, - 13, 19,123, 70,135, 7, 79,151, 53,111,162,121,219,236, 75,215,233,164,121,173,151,247,121,255,254, 99, 58, 95,254,235, 64, 3, -132,136,215,189,175,188,113,249,216, 5,115,211, 9,238, 33,230, 36,248, 12, 72, 9, 0,127,192,142, 74,192, 69, 24, 32, 20,180, -196,161,224,117,213, 1, 3,245, 59, 70,217,114, 9,164, 49, 79,200,111, 80,250,156,243,233,199,215,125,100,231, 25,241, 4, 58, - 0, 87,190,186,107,132,189, 93,159,215,190,128,125,149, 20,167,141, 93,190,174,254,233,148,204,241,179,230, 58, 59,208, 39, 85, - 66, 28, 20,208, 21,168, 2,196,102, 99,220, 87, 77,165, 46,162,246, 81,235,218,149,248, 60,121,101,115,205,153,183,227,186,111, - 4, 36, 11,188, 23,112, 19,219,136,236,187, 65, 96, 99, 55, 23,140,172,195,167,112,221,179,120,227,137, 19, 92,136, 16,117,171, - 51, 94, 86,164, 97, 47,240,106,209,177,216,114,122,174,202,220,245, 77,182,253,112,203,146,213,212,156, 2, 50,126,194,205, 88, - 55,118, 63, 85,130, 26,154, 86,202, 79,187, 57, 25,169, 74,190,241,174,163, 32,101,159, 1, 9,232, 87,161,117, 76,229, 42,236, -161,100,140,228, 5, 14,220, 11, 4, 2, 65, 95, 66,203,154,141, 0,226, 33,202,179,204,164, 94,229,204, 23, 73,107,179, 88,196, -102, 77,226,123, 75,227,161,148,104,151, 61,240,130, 41, 95, 66, 23,144, 69,120, 79,244,228, 15, 23,103, 88, 80,222,248,179, 80, - 34, 41,178,215,115, 75, 36, 29,113,248, 98, 25, 98,114,163,197, 70, 1,174, 48, 61,186,134, 45,112,132, 6,248,169, 61, 40,127, - 5,246, 39,190,224,144,178,122, 8,215,221,150,189,235,144, 65, 56,180,106,107,198,161,136,247, 24, 12, 97,215,241,142, 89, 64, - 87,176, 53, 95, 64,240, 86,120, 37, 42,229, 61, 85,125, 58,128,128, 96, 52,157, 20, 64,201,171,153,199,112,240,129,209,145, 69, - 62,150, 8, 99, 33,212,196,164, 0,154, 53,227, 29, 14,121, 85,194, 14, 39,240,140, 34,124, 7,180, 18,255,231,175,255, 54,125, -243,205,183,232,223,248,229, 95,162, 47,255,254,239,209,175,253,185, 95,165,167,205, 38,212, 68,170,208, 38,110,237,247,134, 99, - 61,106, 65, 41,167,203, 6,122,178,108,164,103, 76,215,158,127,161,199, 1,183,161,251,188,252,206, 7,247, 31,209,213,235, 87, -168, 44,127,118,126,250,164,127, 4, 31,222,191, 79, 39,239,190,223,231,241,215, 91,204,239, 92,233, 99,112, 58,253,127,103,173, -245,184,221, 46, 27, 53,211, 71,247, 78,232,218,229, 67,122,249,229,103,250, 90,215,130,147,166,163,229,103,222,186, 75,111,124, -239, 71,116,184,124,223,211,211,167,116,178, 28, 54, 78,150,215,117,118,184,115, 78,208,157, 7, 39,116,120, 99,162, 23,159,189, - 68,119,239, 61,160,221,242,123, 15, 1, 53,157,198, 44, 4,118, 64,194,209, 83,242,206,164,153,178,211, 42, 9, 68, 96,230,132, - 41, 81,245, 72, 66,109, 71,144, 12,227,207,149,168,137,145,164,198,176,169, 91,224, 8,175,239,183,110,255,146, 20,195,235, 0, - 48,200,200,136,183,189,158,159,234,186, 52,203, 30, 58, 56,141,229, 36, 54,241,243, 10,158,119,137, 14,224,211,243, 74,143,158, -158,210,157,187,119, 59,162,247,236,108,166, 79,191,250, 34, 93, 62, 58,238,206, 10,134,103,149, 61,107, 60, 51, 71, 72,225, 47, -253,253,106, 36,170,239, 91, 28,233,135,209, 13,133, 80, 40,134,199, 33,217,153, 74, 36, 43, 82, 78, 68,244,233, 59,163,104, 60, -132,172,178,130, 49, 17, 38, 28,162,208,220, 53, 62,230,246,217,132, 14,170, 74, 2, 20, 57,115,223,186, 24,144,104, 58,216,251, -203,193,185, 7,199,151, 26, 62, 64,109,177,119, 2,158, 84, 61, 53,109,148, 20, 86, 29, 17,104,220,118,145,125,129, 7,115,168, -158,189,213, 94, 87, 26, 23,145,149,133, 67, 86, 12,105, 94, 29,155,246,245,115,148,245,141,224,139,190,232,161,202,178,160,212, - 19,197,153, 63,174,191, 96,169,233,130, 73,201, 15,111,138,201,196,223,197,107, 97,136,164,155,129, 61,155, 20,200, 91,186, 88, - 39, 48, 5, 90,190,246,150, 48,185, 96, 14,123, 65,229,207,235,249, 41,239, 31, 8,240,107, 56, 91,114, 12, 39,192, 69, 66,241, -149, 97, 60, 40, 20,147,240, 40,251,254,196, 1,136,112, 40,142, 41,237,173,165, 44,233, 68,179,103,109,219, 19,149, 17,121, 56, -205,138,146, 0,198, 29, 89,221, 23, 89,148,147, 90,153,156,118,187, 16, 54,231, 51,139,183,197, 25, 59, 42,133, 86,243,114, 74, -254,245,100,109, 43, 23,139, 66, 93,241,127,209,215,172,181,155,170,132,226, 29, 40, 39, 6, 50,142,168, 2,252,131,152,204, 92, - 91,150,252,252,170, 75,129,208, 85,130, 10,106,125, 29, 63,245, 51,175,211,175,252,202,191, 70,255,245,127,247, 63, 44,155,224, - 83,218, 30,108,232,147,159,124,141,206,219,235, 59, 56,240,247,208,168,100, 47, 93, 62,166,127,255,223,250,211,244,183,254,206, -175, 47, 63,238,104, 89,164,183,244,220,179,207, 82,105,182,164,121,100, 4, 60,126,252,132,238, 63,124, 28,136,232,165,202,190, -255,232, 9,157, 61, 58,163, 31,254,224, 77,122,229,213, 87,104, 87,207,114, 68, 44,229,231,174, 21,177,175,127,230, 51,244,120, -249, 57,151, 55,143,233,250,229, 3, 58,218,110,232,225, 82,137,223,187,117,139, 94,186,113,131,222,125,231, 61,122,252,224, 81, - 31, 31,180,181,237,252,108, 57,100,236,198, 61,114,114,118, 70,219,165,178,159, 20,201,252,194,141,171, 29, 21,122,126,190,139, -197,148,178,125,209,169,140,123,204,122,254,248, 3,247,158, 90,177, 36,219,104, 95, 35,231, 44, 78,203,234, 24,184, 71,121,125, -244,133, 1,158, 51,242,167, 56,200,165,130,105, 60,143,130,172,134,240,189, 42, 39, 93, 67, 89, 86,175, 56,158, 54,233,106,117, -150, 53, 46, 57, 20,231, 70,157,107,122,135, 55,223,187,219,175,215, 15,222,248, 22, 61,121,252,152, 46, 93,185, 68,175,125,242, -117,186,118,253,153,126,128,250,250,215,191, 69, 55,174, 93,161,205,114,111, 60,184,255, 17,253,236, 79,254, 44, 93,189,114,217, - 53, 94,123,191, 3,131,184,236,149,119,132,182,138,255,118,179,207,190, 69, 5,133,102, 83, 21, 11,153,177, 54, 61,142, 56, 75, - 30, 53, 50, 35,232, 9,246, 40,198, 17, 23,175,216, 20,112,168,134, 4, 70,147,105, 23, 27,119,115,234, 29,170, 86,201, 14, 67, - 74,223,244, 16, 44,141,182,158,113,164, 42,169, 96,216,116,197,157,132,141, 74, 48,202,209,243,121,165,191,113,203,178, 53,226, -143,101,200,250, 12, 70, 66, 24,199,201, 90, 37,144,127,204,185, 29,141, 85, 63,158, 46,161,253,233,170,243,181, 66, 23,239,176, -204, 85,196,181,121,111, 1,200, 37, 81,190, 97,237,212,205, 48,156, 21, 4, 94, 0, 74,145,214,179, 32,145, 11, 54, 30,156, 85, -102, 69,177,251, 74,177,149,147,102,200, 23,139, 81,210,169, 6,111,244,245,104,130, 17,134, 2,116, 50,156,121,163, 38, 46,253, -130,139, 4, 94, 43,111,123,194,162,174, 14, 18, 28, 80, 30, 20,123,249,140,120, 37, 2,163, 36, 77, 88,189, 14,193, 81,130,100, - 77, 0,231, 86,168,111, 89,137, 31,190,158,230, 72, 38,231, 17,222,119,171,200,133,212,165, 30,200, 41,155,207, 49, 58, 20,172, -115, 33,227,160,194, 5, 20,241,160, 35,240, 84, 37,194, 25,233, 74,175,137, 26,201,117,135,162, 40, 19, 94, 99, 8,121,239,192, -150,143,128, 94, 21,196,137, 43,117,127, 66, 33, 80, 97, 46,134,151, 29,208,166, 20,106,214,159,251,233, 47,208,223,254,187,255, -144,254,248,205, 31,209,181,107,215,233, 83,159,253, 36,253,249, 95,249,147,244,228,201, 73, 60, 43,170,238, 61,217,157,209,147, -147, 19,154,207, 79,250, 38,249,195,119,238,211,215,191,241, 77,250,210, 47,124,137, 46, 93, 58,162, 55,223,250,136,222,251,224, -118,247,148,183,153,252,211, 93,123,173,203,102,123,222,218,226, 91,250,198, 55,190, 79,127,234, 95,255, 37, 79,202, 66, 86, 56, -126,190,187,221,192, 10, 31, 45,213,221,243,151,153, 94, 89, 42,237, 7, 39,231,116,122, 86,233,225,221, 91,203, 70,254, 39,232, -100, 30,126,229,115, 13, 27,106, 85,248,209,246,160,131,103,234,201, 89,255,251,151,143, 11,221,184,188,165, 75,203,107,249,196, - 82,233,207, 2,179,110,180, 45, 18,239,165,220,237, 47, 78, 31,211, 89, 48,221,155,128, 8, 84,106,210, 52,240,218, 67,233, 31, -193, 74,147, 98,141, 33, 89, 73,182, 57,223, 76,107,143,186,113, 38, 47, 28,105, 9,239,235, 59, 88, 86,221, 46, 7, 43,144,192, -186,234,233,132,192, 64,108, 26,157,135,143,207,251, 40,228,176, 81, 76,203,180,220, 23, 68,135, 75,193,248,242,203, 47,245,238, -202,193,242,204, 92,187,124,212,231,206, 47, 61,115,153, 30, 45,155,254,233,217, 35,186,177,189,209, 63,219, 52,171,222, 91,103, -139,191,190,222, 16,213,246,123, 71,213, 54, 78,123,251,220,139,120,122,220,208, 44, 84, 13, 95,177,162, 66, 32, 69, 46, 23, 19, -226,241,167,160,125,146,154, 14,255, 76,107, 32, 19,132,149,185,144,129,163,155, 71, 53, 20, 62,189, 96,218,168,177, 37, 92, 19, - 61,208,166,237,183, 83,129,110, 89, 25,179,119, 13,232, 34,245,203,219,222,188,233,164, 29, 41,238,201, 19,192,224, 57,233,136, -200, 19,187,252,141, 64, 42, 15,129,213, 34, 61,112, 48,183,244, 83, 37,175, 64, 45, 64,255, 17, 20, 42,172,187,226,107, 85,233, -133, 93,122, 89,121,182,121,175, 37, 36,180, 2,227, 92, 36,102,185, 64,124, 36, 31,103,243, 77, 2,139,253, 83,186,249,104,241, -239,239, 65,109, 86,214,166, 14,112, 44, 23,205,140, 87, 64, 26,190,160,106, 95,145,174,210, 92, 29, 42,224, 20,191,153, 42,116, -206,197, 6,211,254, 41,116, 53, 17, 89,255, 31, 22, 46,131,149, 63,110,234,156, 32, 49, 89, 20,199, 56,211, 79, 53,119,180,201, -246,230,205,208,230,242, 88, 85, 80, 35,239, 93, 71,145, 11, 23,217,189,247, 2,113,149, 93, 20,163,204,124,127, 13,181,174,218, -106, 80,153, 23,172,166,246, 11, 52,198,110, 68,244,245,193,162, 5,108, 8,107,199, 50,237,181,222,153,120,111,146,132,108,104, -180,190,237,155, 74, 57,102,162,254,172, 18, 28,208,135,210, 63,128, 52,177,152,183,168,219,223,252,231,255,138, 62,243,169,215, -232,222,253, 71, 46, 60,141, 67,203,178, 72, 31,110,233,159,254,139, 63,160,255,245,127,251,135,180, 59,125,180, 84,200, 31,210, -183,191,119,159,142, 55, 91,250,214,183,191, 71,207,189,248, 18,253,181,191,254, 87,233,254,237,179,190,206, 28, 77, 59,250,224, -230, 93,186,118,233,128,206,150, 69,248,153, 99,162,211,221, 17,125,243,251,239,210,173, 91,183,233,165, 23,158,239,162,216,205, -102,202,221, 20, 26, 54,220,135, 79, 79,123,149,254,206,123, 55,233,149,207, 95, 27, 98,243,165, 74,251,224,214,125,250,231,191, -251,135,116,253,133, 87,122, 54,250,189,187, 15,123,245,119,116,112,188, 84,133,188, 28, 28,218,120,224,136,110,221,125, 76,219, -165,194,251,228,139, 87,232,241,227,167,203,159,109, 70,186,111, 17, 21,227,194,145,136,193,222,151, 78, 99,124,225,140,118,204, -113, 37,171,183,245,128,230, 76,111,154, 84, 48, 30,247, 88,133, 78, 38, 11,238,183, 0,209, 18,200,152, 65,225,146,127,230, 97, - 9, 53,127,123,192,105,100,101,114, 17,239,180, 9, 0,138,195,127,207,153,215,101, 35,213,181,255, 90,114,151,173,189,143,211, -211, 93,191,158, 79,159, 60,162,227,131,102,129, 19,122,245,213, 87,251,143, 56,121,186, 92,239,205,142,182,205,205,180, 92,167, -143,238, 60, 92,238,131, 13,189,243,225, 45,122,225,229, 79,140, 88,217,202,123,197,148,192, 6, 28, 93, 77, 81,242,169, 70,193, -182, 13,114,170, 35,254,118, 86, 28,119, 49,145, 72,245,107,196,101,117, 32,242, 53,199,114,203, 1,143,110,182,105,231,230,239, -195,175, 10,146, 69,221, 66, 87,192, 66, 39,121,124,227,200,104, 6,235,116, 27,201,204, 90,185,215, 1,170,209,200,236,113,109, - 27,135,126,110,243, 37,125,140, 91,251,189,148,176, 32,184,168, 72, 79, 48, 18, 81,155,142,140,148,162,255, 22, 63,145,161,237, -129, 96,118,129,169, 86,148, 48,147,242,113,187, 50, 0, 29, 86,253, 79,145,252,181,228, 26,145,124, 64, 16,222,171,202, 86,172, -167,213,146, 64,121,161, 71, 49, 6,190,248, 84, 77,149,120, 79,178,170,126,214, 89,208, 23,156, 10, 98, 67,149,213,226,204,123, - 62, 99, 78,135, 11, 89,105, 2, 56, 55, 64,120, 29,179,201,161,228, 70,218, 31,243,133, 34,189, 4,122,161,181, 40,145,215, 44, -150,220, 50, 68, 31,245,218,107,127, 81,222,247,202, 14,152, 94, 22,229,175,103, 35,193, 42, 17,239,130,230,250,218, 3,203,232, -211, 18,120, 19,188, 30, 89,192,207,157,214,155, 47,231,206, 70, 41,116, 17,235,101,128,199, 56, 9,128,208,122, 39,101, 85,141, - 51,103,187, 32,173, 52, 19,112,237,214,228, 58, 59,176, 73, 66,152,114,160,154, 85, 16, 36, 31, 99,109,140,131,206,190,124,129, -221,191, 76,123,182,169,246,245, 75, 71, 71,244, 23,255,194,175,208, 27, 63,120,155,190,255,131,119,130,233,173, 64,140,150,106, -246,245,111,126,159,158,185,118,131,206, 78,151, 74,120,222,209,217,249, 57, 29, 94,190, 78,175, 62,243, 44,157, 46, 11,236, 31, -253,225, 31, 47,139,208, 33, 61,121,122, 78,187, 58,104,115,141, 61,241,240,124, 71,207, 95,191, 76, 7,103,103,116,239,209, 73, -111,147, 31, 44,213,201, 31,124,227,123,244, 7,191,255,213,222, 62,223,148, 56,176,212,166, 74, 94,126,255, 59,239,188, 67,151, - 14,132,222,190,117, 66, 31,221, 63,237,231,174, 15,110, 61,165, 55,127,244, 17,253,248,157,191, 77,207, 63,115,157,238, 61,188, - 79,207, 92, 30,179,255,166,188,111,182,186, 71,143, 43, 29,110,199, 12,246,230,237, 71,244,232,201, 25,125,255,237, 59,116,124, -184,252,201,243,167, 52, 29, 61,204,214, 38,184,150, 5, 2,172,220, 61, 4,109,150,205,178, 0,183, 14,196,224,106, 84,255,252, -170, 38,247,225, 51, 61,218,199,243,114,157,118,189,186,109, 99,136,102,245,107,255,110,154,148, 2, 10, 27, 90,169,223, 5,102, -233,168,196, 17,141,117, 13,113,184, 64, 97,150,115, 4,218,225,104,222,205, 25,167,236,247,197, 20,250, 68, 60,106,123,100,175, -170,223,209,105,162, 7,209,147,179,153, 30, 61,122,210, 43,238, 7,247,239,211,135, 31, 45,215,246,248, 18, 29, 28, 93,166,155, - 31,221, 94,238,143, 29,221,187,253,126, 23, 47,182, 24,216, 23,111, 28, 47,215,108, 75,223,252,222, 15,233,231,127,238,103,187, -107,161,106,145, 41,176, 30, 59, 2,156,247,105,148,100,116, 58,245,179,142,247, 84, 65,233,175,127, 95, 56,131,189, 4, 85, 82, - 53,158, 28, 31,145,226,186, 86, 18, 56, 41, 82, 41, 75,230,204,120,224,151,228,142,167,107,217,184,119, 14,170, 58,180,200,215, - 5,204,116, 80,164,122,211, 37,180,132, 76,220, 3,171,113,241,107,139, 30, 46,251,162, 49, 77, 27, 26,179,136,178,170, 86, 37, - 11,183,214,149, 43, 35,223, 56,111,202,185,112, 22,128,162,200, 69, 78,234,253,160,228, 11, 36,224, 97,247,146,253, 3, 65, 10, - 78,160,189,214, 62,158,122,121, 15,252,144,173, 73,251,164,174,143, 17,108,173,121, 5,184,203, 8,237,109, 34,178,178, 0,174, -187, 11, 49, 10,224,253,217, 58, 95,100,241,160,139, 21,233,171, 86, 45,113, 10, 13,202, 55,234,202,105,176, 71, 97, 16,218,183, - 46,238, 79,245,179, 85, 11,103,144, 12,115, 68,248,190,194,171, 41, 41,239,201,247, 32,204, 35, 14, 10,124,225, 97, 47,119, 89, -156, 90,152, 28, 0, 31,231, 62,224,253,195, 21, 95,132, 0,134,153, 60,206, 54,253,253, 2,113,110,223,148,176,122,103, 57,198, -213, 91,114, 94,145,192, 72,136, 51,161, 78, 56,247,242,121,221,106, 73,201, 3, 53,183, 87,211, 9, 46,206,219,109,163,170,253, -182, 41, 23,240, 39,184,111, 52,151, 47, 31,211,139, 47, 60, 67,255,238,191,243,103,233,191,252, 27,255, 61,253,229,255,224, 47, -208,171, 47,191,208,103,208,109,113,223, 76, 27,250, 51,191,248, 51, 52, 63,253, 58,189,247,222, 41, 61, 42, 91,122,112,242,148, - 78, 78,239,209, 92,183,116,233,242, 17, 29,109, 15,233,238,195,167,203, 34,127,115, 89,216, 79,187,152,238, 96, 91,122,182,249, - 59, 55, 79,233,149,103,142,232,120,217,192,191,241,199, 63,162, 79,124,226,101,250,202,215,190, 75,127,247,239,255, 22, 61,247, -236,141,158,194, 38,189,237, 62, 47, 7,130,121,249, 89, 19, 93,185,116,212, 63,231,247, 62,122,208,127,198,118,185,254, 79,151, -159,217, 84,248,111,191,125,107,249,231,131,206,245,254,254,242,239,134,184,237, 29,203, 22,209,187,124,223,225,193,209,178,241, -236,232,203, 95, 63,233,223,255,245, 55, 63,234, 26,197,233,215,191,213, 55,148,131,178,113, 75,210, 78, 31,209,243,211,167,244, - 83,175,127,113,249,189, 87,150,141,248,140,182, 7, 91,122,239,157,183,233,206,189,187,253, 51,105,170,249,205,242,103,207, 61, -119,195,243,178,219,120,160,181,160,107, 29, 9,147,117,174,190, 62, 22, 93,143,219, 34,221,174,113,179, 1, 54,142,253,193,193, - 65, 63, 28, 88,140,245, 84, 70,199,162,253,249,209,209, 97,199,218, 54,194,223,164,246,222, 30,165,218,190,103,249, 59,135, 71, -203,247, 28, 28,182,156,237,158, 41,191, 81,127,244, 65,107,131, 55, 45, 66, 67,231,206, 99,246,124,247,206, 61,122,249,149,151, - 50, 0, 75, 52, 19, 28,153, 27,222, 61, 50, 5,189,249,180, 55,201, 91, 55,124,225, 68, 31,125,116,159,238,222,190,219,175,227, - 7, 55,111,210,219, 55, 63,162,207,125,250,117,186,123,247, 65,191,110, 13, 2,244,227,183,111,246,123,230,210,242,126,238, 60, - 60,165,203,243,134,158, 44,135,171,183,222,125,159, 62,255,185,207, 82,237, 0,163,200,128,247,241, 18,199,243,141, 46,130,116, -104,175, 54, 94,154, 52, 9,145,226,251, 58, 53, 78, 71,202,202, 93,119, 75,155, 89,233,192,182, 43,156,164, 55, 99, 93, 17, 48, -132, 22, 14,237, 17,174, 21,133,129,239, 34, 9,169, 27,217, 40, 22,118,165, 90,161, 26,123, 84,252,255,117,100, 1,224,118, 85, - 12,167, 54,181,140,246,141,147,112,198, 7, 87,221,143, 46, 51,108,118, 53,250, 60, 9,235, 8,115, 85,155,199, 23, 20,112,240, -190,175, 48,237,180,146, 33, 33, 73, 85, 41, 31, 51, 15, 93,109, 31, 57,201, 7, 78,178, 34,251,149,242,218,254,192, 89,201, 41, -178, 47,192, 73, 89,207,120, 22,244,238, 27,239,149,136,123,254, 71, 22, 40, 62,121,127,110, 6,106,117,111, 79, 95,208,149,200, -109,115,216,232, 80,100,101,155, 87, 89,205, 86, 87,251,181,251,156, 45,125, 15,132,116,188,231,204, 99,204,155, 80, 33, 95,201, -109, 95,145, 61,251,153,248,189, 81,192,178,177,190, 39,246,161, 29, 12,247,134,164, 22,117,113,182,179,232, 61,187, 47,144,231, -236,157,167,152,139,229, 72,199,117,139,156,211,161,149, 25,233,116,208,214,118,198,245,190,237, 48,125,214,240, 32, 95,164,133, -240,177,146,185, 68,164,238, 5, 5,165,131, 16,175,157, 9,188,234,184,200,197,214,198,212, 49, 42,217,175,135, 47, 78, 91,130, -187,185,137,198, 78,123,117,121,231,238, 61, 50, 74,188,125, 26, 13,183,122,251,206, 93,250,157,127,245,255,209, 47,255,226,207, -210, 51,215,175,210,147,147, 83,250,218,183,191, 71,207, 46,155,237,102, 89, 20,143, 14, 14,250,235,252,210,207,127,129,190,254, -181, 55,169,158, 61, 71,245,228, 46,157,237,174,208,116,112,101,217,244, 30, 44, 21,248, 67,186,255,160, 45,234,203, 90,179, 59, -165,159,255,252,179,244,198,219, 19,221, 91,254,172,109,106,103,203,207,220, 46,149,220,235,203,134,248,255,252,131,223,164,223, -248,245,127,186,108,186, 39,244,236,149,131,101,179,222, 45, 27,212, 65,143, 74,125,240,240,241, 96,203, 47,255,253,232,201,152, -197,183,138,103,211, 66,158, 58, 46, 86,150,247,115,222, 25,239,219,101,115,107, 11,252,233,178,209,119,147,110,203,187,104, 1, - 30,210,254,217,116,204, 39,107,219,187,129,111,120,249, 59, 77, 81,223,214,249,147,147,221,114,128, 24,185, 13,237,107, 39,109, - 6, 95,207,150,205,242,168,255,189,210,137,120, 76, 79, 78,155,183,253,168,199,145,158, 44, 39,163,233, 76,232,221,247,111,211, -229, 43, 87,232,234,242, 79,131,217,220,189,115,191,191,134,218,187, 5, 67,208,184,217, 76,254,145,180,247,178, 59,111,213,237, -211,190,233,155, 0,172,106, 62,248,166,104,178,166, 87,149,181,135,211,152, 0,203,221, 86, 45,173,172,141,150,151, 13,125,179, - 28,150,218,161,163, 93,179,135, 15, 31,210,127,242,159,254,199,244,197, 47,124,142,222,191,121,151,254,241,255,253, 79,232,241, -227, 71,116,255,254, 29,250, 27,255,237,127, 3, 17,172, 21,170,121, 93,159,214,114, 30, 94,187,152,212,141,164, 29,181,179,229, -125,124,123, 57,148,189,255,254,251,203,189,114,157,222,253,224,102,183, 56, 62, 88,222,219, 76, 55, 71,103, 96,249,219,143,158, -158,117, 61, 67,187,194, 45,193,111,179, 61,167, 43, 71,155,229, 16,120,218,121, 7,197, 28, 89, 37,235, 94, 92,151, 27,210, 88, - 15,223,233,175, 93, 59, 86, 99,238,108,161, 77,250,117, 27,137,136, 50,246, 77, 91,102,143,138, 68, 76,180,172, 54,105, 70,247, -136, 9, 96, 11, 88, 21,106, 46,232,132, 32, 49,206, 50, 68,234, 10, 60,100,154,137,186, 31,176,148,118,165,214,134,151, 10, 26, - 19, 29, 63, 76, 77, 40,183,124,200,137, 23, 44,150, 67,137,137, 61,181,203,237, 92, 87,153, 20, 11, 80,201,172,171,154,117,165, - 74,208, 34, 94,111,172,169,165, 27,185,238,235, 18, 34,227,252, 64, 24,183, 54,172,185,106, 23, 83,193,194,174, 33,235, 48,151, -213,108, 94,146,141,135,147,227,110,127,182, 13,158,227,149,223,248, 99,148, 0, 32, 4,148, 80,142, 75,158,217,237, 85,226, 96, - 77,227, 85, 89,184,167,188, 93,133, 95, 4,225,117,149, 65,173, 55,136,199,190,238,217,244, 50,111,158,147, 18, 61, 35, 70,243, - 6,107,167, 85,216,212, 36,195, 22, 62, 6, 74,158,213,232, 43, 41,185,181,170, 99, 46,159,146,111,232,116, 89, 64, 90,165,103, -139, 73,155,209,209, 90,184,185,246,131, 67,134,242, 58,147,128, 10, 37,150,187,251,251,203,170, 29,143, 39,117,230, 61, 43,229, - 69,214, 13, 94,145, 3,246,187, 25, 89,117,139, 78, 4,111,126, 10,175,102,230,146, 15,187,208,201,216, 27, 82,168,160, 20, 59, - 87,173, 29,125,231,254, 35,250,155,255,243,255, 65,255,249, 95,251,203,244,247,254,214,255,190,108,214, 63,232,173,210,221,242, -166, 47, 31, 30,209,233,201, 19,186,189,108,200, 87,150,251,230, 55,255,241,239,208, 63,251,173,223, 91,254,123,166,127,240,247, -126,131,254,223,127,240, 79,232,213,215, 94,161, 87, 94,126,126,100,119, 47,191,224, 95,254,139,175, 44,155,212, 97,159,111, 95, -186,124,173,231, 70,157,158,159,208, 82,123,210,195, 71, 79,250,230,215, 42,204,155,183, 31,244,248,137, 6,168,105,214,179,246, -247, 63,186,243,136, 14,249, 50, 93, 62,216,208,135, 31,222,166,179,179,167, 42, 32,162,190,193,182,234,244,188,169,214, 15,134, - 93,106, 55,139, 46,138,181,131,101,158, 46,255,180,205,177,173,105,143,207, 39, 58, 95, 42,241, 67,174, 75, 53,184,237,155,163, - 28,110,250,207, 41,203,230,187, 45, 35, 16,166,119, 64,151,159,115,186, 28,108, 58,163, 99,158, 59,215,190, 89,174, 78,207,199, -120,237,228,228,100, 57,136,156,121, 87,161,211,224,101,180,203,219,106,222,243,177,150,205,170, 5,142,156,215, 29, 93,127,230, - 89,122,237,211,159,163,199, 79, 78,233, 51,159,188,188, 44,188, 51,125,231,251,143,250,220,255,242,241, 97,255,252, 90,181,221, -236,117,237,230,106,213,116,107, 73, 47, 63, 97, 84,215,205,243,191,124,243, 89,175, 86, 75,215, 43,180, 67,192, 80,239,239,150, -235,119,176, 84,255,203, 65, 98, 87,251,161,170,232, 33,245,124,217, 8,251,251,224, 97,119,122,248,240,108, 57, 88,237,186,197, -239,215,127,235, 95, 44,159,237,247,151, 10,250, 14,221,126,239,195,254, 26,127,250,139,159,161,183,126,240, 38, 61,247,242,171, -253, 48,113,245,218, 53, 79,194, 76,150,185,181, 72,151, 8,194,146,116,251,151,113,208, 57, 91,222,243,251, 31,126,216,221, 83, -143,159, 60, 93,106,201,218,175,117, 27,167,180,247,217,174,101,235, 8, 93, 59,100,122,225,153, 75,253,176,118,239,209,233,242, -218,199,181,158, 45,184,107,226, 68, 28, 68,129,238, 74,222,170,139,221,172, 85, 48, 3, 34, 91, 34, 32, 78,224, 33,239,223,176, -113,141, 64, 28, 98,167,213, 26, 6,207,207,116,129, 6, 18,132,169,130, 57, 84, 28,137,160, 6, 14, 72,118, 90,152,177,167, 2, -213,197, 45, 88,163, 26, 63,160,197, 3, 87, 71,239,218, 62,180, 41,135, 91,207,146,238, 21,131,190,233,145, 89,171,148, 46,225, -228,205,147, 85,197, 45,123,120,189, 85,197, 69, 23,204,100, 1, 92, 18, 21,241,199, 88,147, 68, 82, 7,223, 46,119,145,180, 5, - 96, 49,188,226, 7,160,144,143,181,242,200, 29, 1,150,248,122, 84, 80,235,145,188, 16, 75,110,197, 59,124,136,202, 5, 44, 99, -242, 13, 91, 96,110,153,196,196,118, 83, 10, 42,147,247,197, 93,152,187,194,107, 67,251,234,180,193,144,109,110,176, 21,113,255, - 50, 68, 39,154,110,128, 24, 80,182, 14,102, 79, 94,107,230, 61, 5, 76,106,116, 72, 98,244,243, 5,240, 24, 74, 52,187,189, 46, -198, 42,115, 56,251,227, 25, 36, 13,156, 5,193, 72,209,108, 1, 29,203, 2,242,220,141,109, 87, 74, 63,188,127, 74, 55,174, 77, -125,145,203,116, 97,206,116, 1,150, 4, 75,221,239, 6,201,190,173,238,130,176, 22, 12, 55,194,201, 5, 95,116,162, 91,109,194, -128, 2, 10, 1, 91, 66,189,194,134,254, 49, 80, 32,204,235,202,115,160, 60, 58, 65, 85,174, 84, 76, 80,148,174, 78,126,235,199, -239,209,195, 7,103,244,191,252,205,191,183,108, 22, 87,232, 11,127,226, 23,186,101,237,244,108,238,145, 39,143, 78,238,211,195, -119,222,161, 47,188,244, 9,122,251,253,155, 75,245,117,141, 14, 46,189,178, 84,149, 66,239,221,190, 69, 63,124,231,193,178,169, -125,111,217, 24, 43,221,184,113,131,222,250,224, 33,125,234,149,163,101, 3,175,116,237, 90,237, 30,241,246, 65,180, 42,253, 59, -111,188,177,108, 86, 91,186,126,137,233,222, 82,173,223, 91,190,231,168,101,155, 47, 47,249,241,242,251,238,221, 95, 54,253,221, -125,250,236,203,215,232,167, 63,247, 34,253,195,223,254, 70,135, 75,181, 78, 2,181, 57,123,111, 75, 47,155,224,178, 24,236, 58, -142,118, 4,116,156, 45, 95, 63,175,197,253,209,237, 57,109,155,111, 59, 40, 92,125,230,152, 90,193,221, 20,240, 71,199,219,238, -139,238, 72,218,222,138,158,187, 34,190, 35,109,151,119,187, 91,170,236,221, 84,151, 13,102,183,124,255,220, 55,159,161,155, 18, - 58,147,168, 6,219,193,228,232,104,211, 43,236, 39, 79,207, 70,171,123,217,116, 31, 60,126,184,220,147, 79,232,202,178, 97,190, -245,214, 59,244, 96,185, 63, 31,220,157,232,234, 1,117, 92,238,182,243,190,169,103,186, 91, 22,120, 19,119,157,212,209, 17,104, - 45,248,254, 25,109,198,250, 50,129,203,162, 46,155,222,184,183,199, 88,133, 33, 66,183,125,182, 35, 57,175,234, 6, 47, 99, 44, -162,243,254,105,217, 56,191,253,173, 55,232,171,127,244,205,229,215,157,209,103,126,226, 39,232,210,114,184,248,218, 27, 55,151, -107,203,244,193,205,127, 78,247,238,220,166, 95,253,213, 95,166, 63,245,203,191,188,108,206, 7,253,119, 12, 62, 25,216,102,250, -235,157, 35,216, 4, 45, 53,250,127, 54, 42,223,141,203,151,186, 78,160,165,225, 53, 69,119, 59, 80, 93,189,122,165,183,219,219, - 65,164,117, 70,118,202, 65,105, 29,135,246, 57,180,141,169,137, 21, 27,187, 63, 44,159,146,236,165, 4, 72,108, 73, 17,150,193, - 41,170,171,145,160,152,213, 79, 71, 7, 98,194,192,148, 18, 41, 52,113,140,135, 75,194, 58,228, 88, 96,244,225,175,208, 86,121, - 20, 9,137,165,162,158,250,236, 18, 91,205, 17, 49,101,178, 29, 52,100, 95, 71, 65,188,209,176,187,232,250,110,188, 2,156, 50, -230,178,171,125,123,235, 97, 84,239, 2,252,114, 3, 1, 8, 90,131,176,114,221,107, 49,230, 83, 29,175,100, 28,100, 98, 7, 89, -183, 82, 97,126, 65,185,117,205, 73, 8, 23, 30, 93,230,253,170,132,149,151,139, 57,234, 68,129, 91,117,229,177,240,126,246,185, - 91, 18, 1,169,133,103, 20,137,185,238, 30,212, 38, 89,212, 34,252, 3, 67, 96, 8, 65, 43, 32,188, 91,123,200, 3,244,195,169, -173, 29,101,152,236, 29,156,236,132, 88, 36,110, 42,113,200, 10, 93, 0,163, 97, 96, 78,227,195, 32,132,129, 5,213,218, 91,190, -217, 21, 79, 32, 74, 57,203, 89, 24,176,254, 80, 50, 97, 19, 59, 14, 43,184, 15,182,184, 19, 36, 2,189,223,203,123,188,119,239, - 9,221,249,232, 54, 61,123,253,181,126,191, 62, 90, 54,141,211,147, 45,189,242,234,115, 61,180, 35,108,167,188, 55,255, 31, 15, - 46,195, 8, 70, 98,195, 95,189,118, 89, 41, 58,121,213,221,241,249,162,228,171,177, 54, 66, 38,123,101,178, 54,238,207,195, 97, -154,230, 65, 16, 81, 57,160,128,113,237,211, 31,157,199,105,115,224,207, 70,251, 25,173,186,125,244,248, 41, 93,189,124,220, 55, - 70,195,150, 30, 28, 76,189, 74, 45,220,172, 71, 83, 95,252, 91, 43, 93,150,106,115,123,220, 4, 79, 59,250,234, 82,185, 63,122, -244,136,110,223,125, 66, 39, 79, 30,247,150,248,227,167, 79,233,242, 39, 94,233,228,183,221, 82,205,190,244,226,243,203,231,241, - 33, 61,120,112,107,169,202,118,244,214,123,111,247,150,113,171,160, 95,123,245,213, 94,157,141, 42,114, 89,240,143,143,151,127, -239,232,248,240, 26,125,242,165,101,131,110, 73, 89, 13, 72,179, 84,241, 31,222,185,211,175,227,219,183, 30,245,141,188,209,223, -234,211, 29,221,188,247,112,204,184,121,180,161,219,107,110,193, 93,231, 75, 37,127,184,108,128,191,240,243, 95,234,239,251,246, -114,200,104, 27,198, 7, 75,149,223, 42,231, 86, 61,190,243,244, 4, 18,242,150,141,113, 89, 5,127,242, 11, 95,236, 21,241, 59, -173,162, 92,158,243,243,167, 79,250, 38,180, 57,156,244,217, 92,238,251,214,214,111, 27,229,178,137,189,250,226, 75,244,116,121, - 61, 79, 78,158,210,189, 7,247,232,206,237,123,116, 89,253,212,247,239,221,235,175,127,183, 92,179,251,143, 31,208,181, 27,207, -116, 15, 62,151,179, 14,226,105,246,170,119,223,127,220, 15, 1,237, 62, 61, 63, 63,233,237,229, 70,201,217,148, 49, 15,111,250, -128,198, 16, 57, 83,159,124,175,198, 21,109,218, 34,101,219,243,119,233,248,210,114,247,140,170,123,154,150,226,140,134, 31,187, -117, 91,100,211, 80,187,203,247,159,143,141,184,109,148,231,149,123, 23,228,160,141, 23,150,215,112,233,248,184,127,182,231,103, -143,150,131,199,227,229, 96,113, 70,175,127,234, 21,154,187,168,172,208,167,126,226, 53,250,221,223,249, 29, 58,186,116, 68,191, -248,167,255, 44, 61, 93,222,107,235,132, 28,245, 89, 60,247, 67,155, 9,180,216, 45, 91, 18,163, 43,221,128,239,221,125,208, 63, -167,131,131,237,242,254, 91, 55,225, 76,199, 16,135,203,207, 60, 89,254,236, 96,169,224, 31,233,232,231,156, 14,151,131, 74, 59, -104, 29, 46,207,236,251,119,118,244,225,173,123,244, 83,248,108,248,198,142,186, 36, 78,112,184,170,161, 47,232,254, 25,237,110, -118,208, 26,195,211,104,196,185, 53,223,187,240, 69,238,252,125, 33,153,128,186,157,247, 2,147, 50, 45, 46,160, 49,242,177,156, -145,108,229,197, 2,116, 21, 3,189,231,237, 94,238,161,118,186,245, 20, 27,159, 39, 8,120, 85, 69, 85,135, 43,203,148,165,197, -128,172,127,108, 74,217, 74, 36, 56,131,151,149,178,154,176,114,196,247, 97,179, 17, 73,118,141,212,226,149, 11, 72, 52,235, 57, -252,122,166,184, 22,170,165,185,208,170, 97, 46, 25,235, 28,194,144, 28,148,177, 63,208,229,100,178,231, 11,196, 72,123,172,111, -216, 24,188, 43,194, 43,196, 67,201,219, 1,175,171, 72,202,176, 30,217,155, 86,135,205, 73, 96,195, 39, 0, 31, 8, 84,206, 73, - 64, 71,195, 42, 65,200,211,167,140, 74, 20,255,108,101, 79, 57,203,171, 49, 13,102,159,227, 44, 63,226, 34, 57,133,117, 68, 46, - 68, 22,172,161,200,173, 85, 94, 77,140,115,178, 44,198,223, 94, 54,157,174,104,237, 28,228, 3,122,241,165,103,199,188, 82,246, -106,239,116,157,115, 74,182, 0,159,128,178,229, 11,179, 4, 86,206, 98,230, 60,106, 16,168, 92, 82,182,246, 62, 89,198,105,134, -185,145,200,123,174,143, 20,246,177,103, 9,145, 36, 60,109, 98,169, 15, 62,186, 71, 95,251,195,175,209,201,227,199,125,209, 57, - 90,170,166,135,143,206,232, 95,254,254,215,232, 19,175, 62, 67,175,188,240,124,223, 56,218,134,213, 90,168,239,190,247, 17, 93, -186,116, 76,239,125,112,179,115,209, 79, 78,159,118,213,120,155,129,222,184,126,157,238,220,186,221, 85,202, 79, 31,223,239,139, -200,249,252,168, 1, 47,232,123,111,254,104, 57, 4,108,232, 75, 63,243, 69,122,231,253,119,232,253, 15, 63, 88, 42, 81,238,139, -247,203,207, 94,239,149,229, 11, 47, 63,223, 55,248,183,223,123,151,126,225,231,126,142,126,250,139,175,119,123,217,251,239,189, - 55, 4, 83, 77,179,214, 54,163,229,243,188,251,100, 71, 15,159,158,211, 75,207, 11,189,250,220, 33,221,186,119,178,188,142, 43, -203,207,254,112,217, 56, 31, 46, 27, 95,219, 32, 78,151,138,121,211,159,143,207,127,242, 83,244,133,207,126,169, 87,189,215,151, - 42,240,199,111,253,136,110, 45,135,130,151, 94,122,137, 62,243,217, 47,208,131,135, 79,250,239,232,155, 92, 79,147, 35,135,145, - 92,191,122,157,222,251,255, 9,123,179, 38, 73,210,235, 74,236,126, 30,251, 30, 25,185,103, 86,214,218, 59, 26, 4, 64,144, 32, -169,225,112, 25,206, 72, 38, 13,231,113,100, 50, 45, 35, 51,201,140,210,131, 30,244, 54,166, 23,189,201,244, 19,180,189,137, 47, - 35,211, 66,210, 40,137, 59,129, 33, 0, 98,237, 70,119, 87, 87,119,237, 85, 89,185, 47, 17,145,177,175,238,159,238, 57,159, 71, -132,123,100,246, 8, 48, 88, 55,170, 50, 35,220,191,229, 46,231,158,123,238,249,185,156,158,158, 17,254,157, 34, 66, 80,135,105, -187, 66, 4, 96, 48,236,234, 90,166, 89, 3, 47, 22, 75, 82,211,247,185,108, 52, 9, 43,255,244,231, 63,103, 32,147, 8, 57, 38, -248,253,177, 58, 74,100,252,107,187, 91, 82, 42, 87, 53, 0,106,104, 54,159, 32,163, 63,107, 83,114,112,112, 68,231,203, 90, 49, - 38,215, 37, 28, 65, 11,217,225,175,127,231,215, 72,166, 59, 62,121, 67,116, 97,164,235, 63,232,143, 53, 48,211,191,247, 2,214, -255, 1, 73,116,154, 86,110,237,221,147,219,123, 15,244, 89,234, 82,191, 60, 97, 50,214,188,106, 17,185,192,153,203,233,179,122, - 73,144,229,242,178, 90, 42,115, 47,128, 56, 28, 29,237,147,237,191,178,190, 45, 7, 71,111,228,178, 61,145, 15,179,105, 30, 37, -244,135,175,174, 84,229,221, 7,219,186,159,154,189,127,242,133,220,125,235, 93, 68,134,242,211,191,251,129,174,229,109, 25,233, -242,221,210,236,190,166,231, 2, 1,195,252, 62, 68,208, 83, 56,196,225, 72,157,242,153,190,187,158, 23,112, 19,134, 26, 80,161, -158,190,190,182, 33,206,247,184, 76,190,211,237,177,246,127,213, 25,170,243, 15,164, 92,204, 51, 40,203,105, 32,112,248,230,208, -237,155, 68,148,212,194,118, 54, 99, 23, 18,212,179,160,119, 62, 41, 47, 34, 49,107,231,193, 70, 84,147,194,198, 5,165,140, 93, - 76,131,156, 79, 66, 91, 30, 24, 19, 23,172,242,150,201,210,198,196,128, 83, 27, 75, 24, 35, 73,217, 53, 49,161,235,200,160,141, -114,100,226,240,110,124,216, 79,116, 26, 37,224,247,241,104,200,131,186,104, 77, 11,135, 86, 24, 19,155,245,234,121,179,254,208, -104,221,194, 44,209,205,111,168,179,219,155,250,170,227,206,102, 89,195, 97,121, 66,154, 21,145,175, 68, 70,191,226,207,230,186, -222,230,122, 77, 94,174,129,220,246,218,144,183, 27,131,167,165,218,172, 89,106, 89,139,101,150, 75, 10, 9,209, 26,184,149,175, - 16,123,137, 69,116, 17,150,183, 68,231,119, 71,199, 54,134, 71,115, 57,184,176, 81,206, 65,132, 40,102, 34, 76,203,232, 48,134, -249, 1,154,237,136,183, 56,116,158,131,219,162,140,111,179, 52, 72,196,196, 68,139,108, 28,142, 54,114, 19, 47, 62,148,152,149, - 69,144, 16,157,116, 55,131,155, 35, 80,130,245,150, 49,239,101, 10,129,231,234, 88,250,207,218,218, 26,179,141,250,217, 69,136, - 94,121, 52,156, 54,146,200,122,203,207, 52,191,208, 54,242, 51, 17, 90,157, 89, 18,192,185,214,219, 23,137,233,140,137,193,131, -113, 0,199, 92,171,172, 72, 92, 52, 50, 18, 32,197,175, 87,172,154, 30, 11, 80,227, 82,159, 51,131,133, 26, 44,152,209,231, 23, - 93,249,232,167,143,229,249,147,135,146, 47,173, 73,185, 82,150,106,109, 77, 58,237,190,252,235,151, 7, 98,224,160,187,109, 66, -198,125,205, 40,239,221,187, 39,153,234,134, 60,121,181, 79,180,163,217,188,144,175,189,247,158,188,251,246, 3,121,113,112, 34, -165,106, 69, 6,154,153,163,182, 62, 25,251,180, 31, 67,140,199,213,204,244,119,191,243,235,242,197,179,167,234,120, 79, 73, 50, -203,167,147, 82, 82,199,208, 83, 47,176,183,179, 75,146,212,199, 15, 31,178,126,140,204,176,221,238,168,211, 26,201,235,227,115, -117, 58, 25,201, 21, 50, 26, 60,128, 11, 97,228,221,189, 21, 25,108,149,208,130, 43, 63,126,116, 44,187,107, 5,249,119,255,225, -183,228,187, 63,253, 76, 14, 27,109,205, 70, 49,104, 37, 45,255,206,239,254, 3, 73, 77, 64,146, 27,240,157,171, 26,144, 32, 27, -172,119, 58, 34, 80,136,211,231, 64,159,252, 74, 41,173,153,190, 71,167,150,201,120, 50, 38, 49, 42, 33, 43,229, 50, 17,132,215, -251,251, 50, 28, 78, 92, 54,170,235,150,201,228, 36,173,118, 47, 87, 72,203, 63,251,167,255,190,188,247,245, 15,120, 46,191,124, -250, 70,254,252,143,255, 70,222, 28, 29,232,179,247,229,247,126,231,119,164,154, 75,203,133, 58, 97, 56,213,115, 13,162,126,249, - 55,126, 87,108,166, 36, 63,251,232,115,233,168,147,204, 36, 69, 54, 87, 43,178, 89, 83,231, 90,201,138, 76, 6,154,189, 15,184, - 70, 96,241,187, 64,163, 47,197,210,138,100,210, 57, 57, 56,124, 35, 71, 7,207,100,125,243,182,172,175,174,201, 40, 7,146, 97, - 64,187,236,147, 68,149,102,253,126,125,117,131,142,243,226,252, 68,166,227,190,108,109,172,106,224,144,162, 45,207,103, 82, 82, -219,124, 75,131,179, 11, 89,169,173, 48, 24,129, 56,208,241,241,190,244, 58, 23,178,182,126, 91, 86, 86,106,114,170,129,137, 32, -120,211,117,246,213, 31,160,238, 95, 42,174,200, 15, 63,125,163, 78,213,211, 32,161, 43,127,248,191,252,207,242,246,187,239, 75, -160, 14,248,163,159,125, 74,114,227,223,125,247, 7,242, 47,254,179,255, 68,138,156, 31,226,207,237,199,108,252, 50,238,248, 72, - 29, 56, 8,114,173, 78,155,129, 86, 79,207,140,155,114,150,208,239,233, 75,187, 7, 94, 65, 90,179,254,137, 35, 88,234, 58, 93, -105,240, 8, 88, 25,157, 12, 43,165,172,164, 83,110,236,173,245, 76,188,252,107, 35,200, 87,100,110, 67,164,224, 40,193,141,178, - 34,225,125, 15, 36,150, 76, 93,155,193, 21,227,116,153,235, 26,244, 98, 98, 82,173,215,145, 56,115, 93,119,195, 44, 75, 92,221, -208, 69, 21,245,153,243,182,113,137,145,158,173,216,165,166,176,197, 26, 36,207, 78,143, 23,234, 94, 33, 11, 19, 14,220,245,217, -133,109,244,225, 88, 68,127,154,116,145, 37, 91, 37,146, 75,128,162,145, 27,208,139,152,251, 52,215,214,199,124,133, 0,147,141, - 57,192,121,239,119, 32, 55, 19,207,162,179, 91,205,130,153, 24, 53,174, 54, 10,148, 88, 27, 79,246,151,159, 39, 38,120, 18, 37, -212, 45, 88,253,102, 25,113,136,136,237,199, 29,246, 13, 80,188,185, 46,173,227, 6,217,135, 25,221,156,160,101,226, 34, 58, 51, -246,119, 68,106,119, 14, 69, 93,235,187,151,216, 76, 97, 99,108,204,113,198,213,217,162, 34, 14,241, 89,233,114,147, 51, 55, 94, -188, 63,117, 9,197, 95, 60,245, 13,107, 16,209,138,240, 98, 51,198, 23,178,175,139,222,250, 40,177,237,250,208,155, 57, 92, 6, -248, 53, 28,215, 88,170,150,229,214,157, 77, 18,112, 82,169,132,212,207, 47, 9,189,139,231,221,208,204, 22,159, 82,230, 45, 15, -128,155,115, 43,174, 19, 17, 99,164,150,235,230, 32, 22,240,154,101,217,208,229,224,126,110,152,100, 49,168, 33, 10,163,219,155, -244, 29,162,229,170,104,159,172, 35,187, 1,106,253,249,199,207,229, 82, 51,178, 47,158, 31,200,203, 87,175,229,214,253,247, 36, -165, 25,219,139, 55,199,114,220,120, 69,193, 15,163, 25, 80, 81, 51,247,213, 21,205,160,213,145,252,210,183,126, 89, 68,157,202, -163,167,251,172, 15, 39, 51, 25,121,112,255,190,124,240,254,187,242,250,232, 84,141,242,136,182, 32,145, 46,177, 37,203, 51, 32, - 94, 25,169,150,242,242,107,223,252,186,124,252,232, 11,205,196, 79,165,148, 47,170, 3,197,207,102,229,188,217,145,175,191,251, -150,124,249, 98, 95, 94,189,121,195,119, 68,118,134,182, 46, 24,245,130,159,146,146,102,103, 59,234,180,225, 80,251, 19, 95,131, -128,169,220,201,150,100,163, 86,150,241,112,160,137,105, 85,190,120,117, 46,207, 15,206, 52,107,157,202,239,255,246,175,202,127, -244,159,255, 7,172, 73,223,219,221,148,239,254,221,103,242,191,254,225,159,202,231,207, 94,200,183, 63,120,143, 48, 51,236, 84, -194, 3,219,123, 34, 85,111, 34,255,252, 15,254, 99,249,225,247, 62,149,191,249,235,191,149,111,125,251, 61,249,111,254,229, 31, - 72, 46,151,145, 63,255,219, 79,228, 7,127,253, 19,214,212, 7, 26, 65,220, 86,199,248,214, 78, 69,188, 73, 75,254,211,255,242, - 15,228,155,223,252,144,142,203,157, 53, 79, 62,253,249, 99, 41,228,242,146,202,100,101, 28,140,229,228,232, 88,250,233,137, 58, -103, 13,138, 90, 77,249,167,255,236,247, 52, 3, 94,151, 31,252,252,137, 6, 40, 61,214,214,173, 58,177, 92, 14,165,142,130,108, -175, 23,165,172, 65,192, 79, 63,126, 41,101, 93, 55,148, 7,138,185,172, 58,245,172, 84,215,246,152,225, 67,147, 94,188,140, 20, -203, 21, 61,203, 70,122, 26, 4,140, 39, 46, 56,197,244, 56,212,159,215, 86, 87,117,125, 51, 68, 35, 70,186, 70, 64, 60, 74,185, - 4,185, 2,153,148, 58,200,242, 22, 51,223, 78,251, 82,106,171, 85,102,198,200,148,207, 78, 94,107, 64,144, 86,135,190,174, 54, -125, 42,171, 53, 93,231,181,164,124,249,124, 95,110,109,175, 75, 33,155,146,253,227,134, 84, 53,248, 43,106,252,241,206, 47,127, - 77,158, 60,125, 42, 95,124,241, 84, 3,131, 60,127,239,193, 78, 77, 3,132,142,180,154,117,253,255,247,244,115, 12,203, 0, 86, -108,108,160, 13, 2, 45,148,122,128, 56,160,220,211, 31,244,244,188,248, 14,134, 71,134, 15,127, 45,250,119,253, 17,147,199,172, -174, 21,130,188, 41, 74, 50,104, 69,212,231,156,132, 74,129,198,198,233, 34,230,134,201,151,118,121,198,122, 56, 87,222, 51, 18, - 87, 44,181, 81,229,184,232, 32, 39, 27,243, 49,102,169,149,218, 46,161,171,230, 26, 89,220, 92,215,151, 88,190,242, 54, 42,217, -188, 44, 75, 17, 77, 62,227,227,202,103,153, 89,204, 28, 92,107, 34, 66,166, 62, 30, 47,122,245,193,176,156, 59,243,197, 76,114, -180,176, 76,216, 35,233,156, 61, 34,196, 52,251, 30,157,147, 95,212,148, 23,144,129, 93, 86,172,136,150,145, 35, 53,101, 27,113, -198, 70,226,227, 8,227,140,226,184,195, 16, 43,215, 20,140, 76, 44,229, 95,146,156,141,214, 48,163,189,244, 38, 46, 3,187,236, -237,141, 68, 32, 25, 19, 87, 67,179, 18, 37, 49, 73, 68,135, 91,174,215,144, 99,125,199, 54, 46,191, 40, 17, 34,162, 23,129,169, -195, 89,217,203,237,243,113, 52,192,222,172, 74, 25,229, 31, 44, 75,188, 70,179,108, 47, 30,118,153,175, 32,166, 95,139, 44,163, -250,254, 75,145,173,137,136,113,196,231, 25,152,101,221,153, 69,251, 89, 12,174, 50,243,174,128, 88,223,120,116,180,162, 89, 76, - 28, 3,195,246,178,209,145,177, 58,169, 91,239,220,118,228, 34,253,171,141,205, 21,185, 56,173,203,145, 26,168, 7,111,239,198, - 37, 70,227,177,218, 13,101, 13,145,165,193,106,241,181,184,198,122,188,169,228,179, 20,244, 93, 35, 7, 46,144, 33, 19,205, 62, -150, 2, 92,123,131,246,129, 93,122,143, 89, 75, 41,136, 96, 24,154, 50,213, 12,116,255,205,185,124,247,207,190, 71,173,141,149, -213,117,205, 62, 11,116,166, 3,205, 28,253,241,136,144,104,161, 80,148,180, 58,238,163,227, 3,121,239,237,183,100,108, 82,234, -164, 78, 56,255,188,217,110,201,131,219,183,228,238,157, 29,121,121,124, 66,242,153, 64, 64, 70,191,163, 86, 46,200, 64, 29, 71, -187, 51,162, 67,255,198,123,111,203,207, 63,127, 36, 23,151,151,178,177,178,194,108,178,221,237, 74, 71, 51,180, 7,119,110,201, -195,167,207,229,228,226, 82,157,125,142,207,142, 22,184,190,102,106,111,223,189, 45, 21,205,206,211,126, 87, 29,149,145,102, 7, - 45,107, 73, 73,150, 83,114,217, 65,107, 88, 6,124, 56, 34, 49,107,165,164,116,250, 86, 86, 87,107,114,117,213,150, 63,250, 87, -255, 15,121, 16, 96,115, 55, 52,155,172, 22,213,129,123, 37, 41, 39,187, 82, 46,175,203,239,253,131, 95,149, 71,234,228,225, 36, -199,154, 53,255,223,127,242, 55,210,110,245,229,157,119,238, 73, 71,127,255,191,251,239,255, 39,121,247,254, 45,117, 88, 7,114, -161,129,135,151, 12, 52,139,206,129, 30, 39,199, 23, 45, 73, 39,124,249,219,239,254, 88,254,254, 39,159, 57,242, 28,225,113, 35, - 31,255,226, 75, 66,224,158, 9,164,156, 47, 73,165, 86, 85,103,148, 86,199,184, 34,231,103, 39,242,242,240, 92,170,221,169,124, -249,228, 53,217,233, 8, 46, 54,170, 26, 4,120,190,188, 58,189,146,213,178,187,212,105, 13, 12,144,169, 3,237,104, 15,221,188, -249,158,254,211,239, 95,176, 60,144,212,128,232, 74, 29,246, 91,223,249, 80,118,238,238,200,163,207,158,168,227, 28,177, 52, 2, -162,217,218,214,109,174, 33,160,248, 84, 38,199,224,234,188,209,147,156, 6, 75, 22,153,124,144,150,250,229, 17,255,190,213,108, -170, 99, 79,147,164,150, 74,231,230, 25, 31, 74, 42, 23,141,190,220,221,219,146, 42, 28,179, 6, 4,155,187, 85,169,148, 39,188, - 87,103,151,109,169,150,115,242,222,251, 31,202, 71, 15, 95,168, 35,238, 72, 38,105,245,188, 28,201,246,214,134, 52, 79,143,228, -243,135, 95,202,206,222,109,249,198,135,239,209, 81,219,176, 77, 15, 65, 33,178,126,140,177, 69, 90, 12,135,142,192,194,231, 25, - 29,178, 54, 79, 88, 93,127, 22,200,143,135,224,101,104,200,122,207,166, 12, 9,135, 94, 90,253,203,116,192,103,193,218, 79, 35, - 42,143,241,196,217,198, 80, 86,160,180, 65, 68,136, 39, 62,163,196, 46,181, 56, 75, 92, 52,109,222,102,101, 35,131, 11, 99,194, - 38, 17,229,231,153,239, 10, 34,227,194, 35,137, 78,196, 7, 45, 90, 87,157,194, 94,212, 68, 4,145, 18,244,130,246, 21, 23,218, -152, 39,159,209, 97, 82,126,164,165, 46, 44,113, 39,167,236,211,156, 13, 21, 9,199, 52, 70,190, 12, 16,164, 31,178, 17,103, 25, -253, 84, 23,120, 52, 26,210,217,131,204, 1,200, 11, 27, 56,251,159, 55, 15, 12,140,196,249,242, 17, 98,145,141, 8,139,217, 72, -173,124,137,102,183, 76,251,137, 18,192,254,127, 53,150,111, 16,162,153,123, 26, 99,150, 21,104,150, 48,133,165,249,210, 75, 98, - 2,118,201,217,216,136,230,175,124, 21, 7, 98, 30,252,120,145,182,189,133,131,182, 17, 88,216, 70,130,158,121, 59, 90,140,214, -111,174,179,237, 99, 58,146, 81, 56,223,187,214,199, 45, 17,102,121, 44, 68, 49,215, 58,226,231,109, 5, 54, 22,176,152,235, 45, -140,246,134, 82,177,141,194,207, 33,153,198, 91,230, 28, 92, 39,195,221, 12, 91,219,121,191,251,252,239,244,172,129,176, 3,152, - 15, 1, 10,234,118,179,254, 64,176,170, 49,151,187,223,237, 57, 34, 86, 54, 53,111,205,145,165, 18,207, 77,209,140,141,144,210, - 36,130,106,152,104,255,135,185,169, 6,100,174,195,250,198, 46, 77, 22, 12, 37,103,103, 60,145,217, 12,234, 25, 87,101, 41, 51, -143,149,170,110, 4,171, 2, 58,184,222, 96, 34,127,252,167,223,151, 71,143, 30, 74,183,217,160,147,255, 64, 13,242,235,227, 11, -205,114, 15, 41,224,225,251, 99, 53,174,234,140, 43,171,124,151,227,227, 67,205,198,223,146,214,200,215,224,232,132,153, 62,218, -160, 62,124,231,129, 20, 75, 5,205,244,247,201,126, 55, 28,200,101,165,209,184,148,245,114,150, 68,183,141,245,154,188,255,224, -182,124,242,229,151,210,104,247, 36,157, 74,107,144,144,101,134,134,108,108,123,125, 69, 51,252, 99, 57,175, 55,200,122,199,223, - 99,191, 18,154, 61,183, 59, 93,217,215, 0, 2,245,211, 86,179, 47,201,246,132,109,111,141, 43,119,102,191,118,127, 83, 78,175, - 70,242,248,229,165, 60,216,204, 74,187,121, 41,173,110,160, 65,198, 29,102,173, 72,224,166,154,148, 60,127,245, 82,131,132,177, -236,221,186, 37,157, 86, 67, 86,239,175,202,202,230,150,156,171,227, 6,249, 13, 33, 78, 95, 51,255,230,235, 35,201,169, 67,204, -164,211,236,197,175, 31,156,203,211,199,251,146, 72, 3,150, 31,186,204, 80,109, 27,216,234,151, 19,167, 17,255,248,255,248, 11, -246,184,227,229,225,132, 18, 6,245,233, 44,167,206, 13,135,125,125,246,162,102,191, 99,201,175,228,164, 92, 91,149,166,158,181, -239,253,240, 99,169, 86,215,244, 44,166,153, 61,119,116, 45, 46,154,154, 89,151,243,132,157,209,181,134,172,117, 99,173, 34,143, - 95, 53, 66,144,216, 74, 65,159,173,217, 62,209,191,119, 44,113, 64,249,141, 86, 71,126,248,175,127,164,251, 0,198,126,146,103, -123,162,255,212,147, 45,135,251,175,185,150,133,124, 94, 42,186,134,189,254, 80,122, 35, 43, 67,181,213,222,160, 47,167,141,103, - 46, 16,209,192,225,252,178, 33,117, 93, 88,212,191,141,201,161,139,149, 61,233,112,178,229, 98,142, 78, 53,147,178,122,143, 58, -242,248,197,144,235,239, 50, 92, 43,159,127,121, 37,187,187,187,122,119, 38,146,205, 23,229,248,188, 33,181, 90, 77, 6, 99,253, -153,230, 80,142, 14, 78,101,216,214,204, 94,223,111,181,182,226, 38,221,105,144,116,118, 81,151,195,163, 83,185,212,128, 2,240, -124, 89,159, 19, 65, 94, 90,147,193,130,102,226, 8,250, 70,163,177,107, 75,156,232,119,250,234,192,115,154, 40,234,207, 54,175, -122,114,107, 43,163, 63,103,228,213,209, 72,131,197,134,174,101,158,201,164,137, 36, 51, 86,150,120, 75,243,254,244,104,139,112, - 76,168,126,225,116,130,200, 64,176,232, 52,199,153,173, 15, 34,156, 47, 27, 29,134, 20, 78,117,179,145, 14,167,120,223,235,130, - 79, 99,151, 84, 27,109,212,122,216,200,148,204, 37,253,244, 40, 76, 31,229,205,121, 70,226,179, 43,162,101,106,167,219,145, 68, - 95, 36,198,222,161,149,197,243, 82, 98,130, 81, 76,202,174, 92, 72, 19,202,154,147,167, 96, 62, 38,174, 33,127,162,255,141, 66, - 0,136, 30, 19,212,102, 78, 81,228, 96,230,228,147,252,103, 50,140, 71, 34, 6,202,198,179,141, 32,214,187, 46, 49,102,115,212, -248,218,232,232, 81, 27,255, 57,187, 60,215,125, 94, 35, 53,241, 61,149,101,131, 25,231, 50, 71, 7,207, 44, 19,186, 36, 54,211, -122,161,167, 28,155,206,102,174, 15,108,177, 49,118,122,124, 80,130,141,169,163,153,101,233,249,249,204,110,123, 83,157,126,246, - 14,161,232,204,172, 46,190, 60,179,219,218,101,152, 40,194,120,143,126, 97, 76,123,220,196,107,229,178, 52,109,196, 46,177,254, -103,251,224,153,235,227,110,205,114, 79,187,137,197, 87,209,210,198, 60,144, 51, 81,185,152,184, 96, 44, 30,225,244,232, 82, 46, -207, 26,110,152,199,108,102,248, 92,192,195,211, 12, 38, 37,163,158, 26, 42,205, 50, 54,182, 87,101,123,119,237,218, 56, 95,115, - 3,148, 21, 15, 50,204, 66,244,194, 68, 46,230,146,144,208, 87, 49,100, 77,172,151, 63, 74,220, 48, 75,162,137, 38,222, 85, 18, - 69,170,230, 80,156,229,216,202,185,154, 94,152, 45,192, 56, 67,134,179,219, 27, 74,179,126, 41,141,179, 11,169,170,147, 41, 21, - 75, 84, 84,235,116,122,210, 83, 35, 26,248,174,247,186, 82,174, 74,167,219, 18,171, 78,254,193,131,119,228, 74, 51, 42, 24,126, - 60, 87, 95,157,202,189,189,109, 66,173,111, 78,206, 8,209, 6,225, 36,171, 64, 51,197, 82, 78, 51,251,243, 75,169, 85, 74,178, -177, 90,149, 31,127,242,144, 65, 83, 90,237, 4,122,165,209, 75, 93,200,166,101,119,163, 38, 79, 94,190, 86,199,212, 34,108, 12, -167,136, 25,217,200,210,240,186,103,154,213,131,209, 14, 39, 11,114, 86, 33, 87, 32,243, 59,175,206, 16,250,223, 63,250,172,163, - 89,103, 70, 29,142, 47, 31, 63,111, 73,175, 53,144,245,234, 72, 51,251,156, 60,125,217,213,224,161,197,218,121, 58, 87,212,119, - 45,200,169, 58,145, 98,169, 42,173,160, 44,231,175,223,144,189,158, 85, 59,132, 62,245,161, 58, 15,236, 31, 2, 22,124, 63,254, -147,162,131,240,248,188,200,110, 39, 65,142, 25, 50,251,230,141,165,195,244,244, 89,138,250, 25,200,196,224,164,241,119, 35, 72, -153, 6,174,131,192, 22, 93,141, 27, 90,241,231,167,231, 82,215,224, 5,136, 72,166, 80, 96, 79,118,253,234, 74,250,189, 62, 97, -242, 23, 89, 16,213,140,252,240,179,182,252,250,135,219,178,165,129,192,103, 79, 78,232,120, 77,210, 48,120,152,241,184,160,172, - 71, 51,173,166,119,164,206, 78, 63,145, 89, 58,187,151,244,189, 70,158,107,209,131, 93, 77,169,189,237, 99,112,141,102,189,105, -194,215, 67,238, 23,222, 13,106,114,236, 87, 7, 41,109,198,149, 98,189, 59, 65,201, 84,212,178,217, 2, 72, 2,161, 67,238,146, -211,128,200, 4,146,185,169,239, 50,233,137,245,184, 94, 31,126,240,129,116, 7, 67,146, 17,225, 55,158, 60,219,151, 96,116, 37, -223,120,247, 3,121,242,217, 39,116,244,253,137,165,254,126, 87, 51,243,164,190, 16,156, 58,191,115,109,157, 8, 17,122,212,193, -242,135, 14, 59, 8,154, 40, 3, 37,197,215,181,183,148,232,205,166,145, 52,122, 26, 8,245,116,109,167,146, 73,164,229, 47,254, -242, 71,114,120,240, 82,126,255,247,255,109,249,230, 47,125,192,119,159, 13, 97,185, 94,146, 90,192,129,158,141, 56, 80,107,174, - 35,105,145, 17,116, 38, 50, 64, 44, 94, 93, 51,215,147,162, 89,201, 90,174, 11, 65,153,175, 34,194,134, 53, 71,151,211, 4, 17, - 62,153, 9,187,176,108,124,100,243, 77, 0,224, 76,147, 37, 6, 83,204, 62,193, 61,116,242,184, 62,148,169, 77, 74, 57,231,200, - 41,122,203,195, 94, 70,247, 43, 16,240,128, 99, 47,230,210, 17,118,178, 51, 36, 65, 8, 35,216,185,222,115,192,218, 10,234, 65, - 94,120,129, 88,215,130,244, 95,161,200,154,146,241, 34,181,195,101,237,171,101,253,247, 89, 38, 27,165, 22,196,224,145, 37,177, -172,165,249,237,203, 60,132, 57,195,221,204,154,245, 69,162,131, 18,174,183, 41,221,212,158,102,226,179,201, 67, 41,208,184, 50, -156, 68,250,186, 35, 99, 55,231, 61,225, 86,226,168,251,162, 53,227, 90, 11,115,116,230,134, 72, 92,241, 40, 70,108,140,210,220, -100, 62,153,205, 70, 24,251,198,196,213,200, 22, 67, 24, 76, 44,136, 49, 17,249, 81,179,220, 55, 41, 18, 83, 82,138,139,157,216, -107,226, 67, 49, 50,219,146,196,238, 98,156,168,204, 5, 31,174,105, 26, 24, 19,227,109, 44,184, 19, 16,253, 8,228,236,244, 74, - 38,106,196, 16, 53, 67,246, 50,151,207,204,215, 19,231,185,172,217,195,153,102, 7, 48, 66,111, 94,157,232, 57, 68, 77,176,232, - 70, 10, 71, 51, 95,179, 68,102,177, 18, 31,210, 18, 27, 77,187, 20,252,197,198,187,154,136,190,129,137,147, 61, 35,229,165,232, -144, 26,107,151,137,114,222, 53,102,253,172,237, 14,117,108, 55, 99,217,204,207, 51, 12,196,161,174,195, 31,255,159,127, 38,159, - 62,121, 42,208, 69, 3,187,184,186, 82,147,231,111,142,212, 25, 76,217, 11,108, 53, 96,119,130, 34, 85, 57, 63, 59,101, 70,244, -246,123,239,203,241, 69, 67, 51,244, 22,159, 21,114,171,183,119,182,164, 80,200,200,243,253, 3,231, 68,130,128,193,249,122,165, - 34,154,126,211,168,227,144,173, 84, 75,242,179, 79, 31, 50, 67,192, 93, 71,240,142,224,106,119,125, 93, 42,154,225,255,228,211, -207,228,170,213,166, 13,240,194, 30, 99,144,163, 40,107, 74, 61,244,140,254,121,130, 89,118,119, 4,145,150,161, 6, 6, 89,125, -211,169,212,242, 9, 25,168,145, 31, 34,131,211,140, 9, 26,225,235,111,125, 67, 63,123, 67,146,133, 18,225,224,122,179, 37,117, - 13, 98, 90,157,145, 58,159,190, 58,214, 43,249,231,255,222, 63,150,131,147, 35, 61, 78, 62,153,222, 11, 68,199,253, 43, 50,114, - 8,222,192, 62,161, 46,142,118,170,124,214,233,171, 63,200,173,202,155,211, 38,237,215, 72,157, 96, 86, 29, 77,187, 63, 33, 90, - 9,135, 51, 26, 76,136,254,128, 39, 0,111, 59, 85, 7,181,170,107, 2, 97,152,253,227, 51, 57,189,172,235,179,106,112,163,142, -184,221,233,104,160,210,231,120,209,218,202, 10, 71,128,154,144,151, 82,206, 4,242,139,135,207,229,131,183,110,107,208,149,145, - 82, 33,203, 59,139, 30,246, 36,209,166, 44,185, 2,208,195,199, 48, 25,216, 96,148, 74, 32,164, 52, 13, 66,142, 7,108, 43,136, -203, 12,146,250, 76,168, 16,188,120,214,141,200, 70, 82,149,207,166,217, 18,135,179,158, 6,210, 2, 46,131,174,115, 54,227, 8, -183, 94,200,222,166, 86, 15, 90,245,216,114,232, 81,240, 6,117,109,204,155, 71,134,141, 99,134, 32,240,190, 6,122, 64,112,158, -190, 58,146,170, 6,116,251,111,222,200,197,197, 41, 17,136,102,227, 82,146,217,170,180, 71,129,236, 31,236, 83,177, 14,107, 58, -214,231, 70,173, 29,223, 3,165, 64,180, 64,102, 52,208, 6,124,223, 1,178,160,123,143,224, 1, 45,124,183, 55,171, 68,127,218, -186,167,121, 13,126,140, 6, 20,245,203,145,108,110,237, 74, 93,207, 17,214, 99, 4, 30,200, 44,231,182,139,123, 17, 11,178,109, -228, 46,205,147, 63, 47, 54,166,116,230,135,162,217,110,172, 54,111,108,204,134,199,234,223, 49,187,126,173,118,184,164,177,177, -228,164,231, 8,113, 50,142, 60, 47,203,128,207,109,255, 66,167, 63, 76,213, 23, 3, 96,230,188,168, 8, 53, 0,240,251,209,113, - 93, 70, 26,229,237,108,228,101,119,173, 40,187, 43,249, 80, 26,208, 25, 32, 79, 13,227, 4,103, 7, 12,120,254,119, 33, 54, 67, - 41, 69, 40, 47,169,209, 24,104,164,142, 99, 50, 24, 56, 37, 32,136, 6,224,162,215,202, 16, 29,232,201,235,131, 19,141,254,183, - 52,146, 46,107,246,148, 9,167, 30, 69,154,135,236, 66,101,199,216, 27,152,128, 17,184,220,204,152,100, 75, 13,233,139, 31,241, - 34,180,123, 19,135,172, 99, 53,143, 5,219, 57,214, 30,110, 23,144,104, 20, 94,181, 33, 27, 60,174,231,110, 99,146,159,241, 58, -121, 20,241, 55,203,177,193, 82, 43,194,117,137,117, 19, 21,127, 89,250, 76, 79,194, 6,228, 57, 20,180,232,127, 95,232,249, 47, -186, 24,226, 12, 76,115, 3, 35,115, 65, 58,139,214,169, 34,243,190, 34,202,124,215,152,113,115,245, 50,185,137,200, 25,229, 66, -196, 26, 6,194,183, 90,238,219,151,197, 60,128,197, 16, 4, 19,249,243,197,243,227, 28, 1, 82, 93,219, 92,151,186, 58, 39,100, -139,179,178, 89, 2,189,186, 26, 80, 22,213,240,194,200, 53,245,239,125,223, 70, 56, 35,145, 0, 99,233, 82,222,164, 3, 49,159, -133,108,150,186, 50,204,114,171,166, 93,136, 38, 93, 51, 5,178, 52,115,218,196,196, 95, 36,210,142,102,101, 65, 6,196,123,251, -204, 34,253, 24, 70, 7,131,136, 76,240,203, 39, 47,229,232, 76, 13,171, 73,170, 67, 95,227,251, 94,129, 89,206,150, 52,205, 40, -199,200, 70, 53,227,171,148,101,208,107,147,108,117,235,246, 93, 57,209, 53,105,181, 91,106,120,135,116,248, 27,235,171,180,150, -227, 65,155,131, 81, 32,221, 89, 43, 1,178, 46,211,240,247,244,126, 3,133, 1, 44, 11,200, 29,223, 3, 8, 21, 70, 10,246, 96, - 71,157, 46,148,194,126,242,217, 67,246,174,103, 56,200,100,241, 14, 78,212,101,241, 6,168,211,227,247, 80, 87,223, 92,169,200, - 69, 11,253,235,234,156,240,125,125, 16,168,134,142,201,237, 37,165,117,212,166,242, 91, 75, 51, 96, 32, 5,200,242,178,250, 78, -104, 93, 68, 6,120,119,103, 91,186,157, 46, 33,249, 32, 92, 39, 86, 59,195, 54, 40, 16,174,124,181,117, 24, 3, 59, 35, 74,165, -203,101, 41,228,139, 44,209,116, 52,161,129,243,192,122, 33, 51,205,160,158,107, 18,116,170,227,177,207,127,166,117, 77,210,168, -131,251, 83, 6, 58, 19,205,158,143, 47, 47,228, 84, 51,116,216,221,181,106, 89,182, 43,105,169,135, 50,180,101,180,148,233,207, -165,147,174, 71, 25, 9,102, 50, 83,144,175,191,187, 37,231,141, 46,161,232,161, 58,218,141,114,214, 57, 86,168,174,233,119,221, -218, 41, 75, 51, 57, 82, 71, 54, 98, 54,125,118,217, 33, 19, 28, 25,247, 84,215,162,170,129,192, 72, 29,104, 62, 99, 24,188,118, -213, 57,226,172,151, 10, 73, 6, 32, 40,137,126,237, 94, 77, 62,127,113,166,201, 84,146,237,129,107,149,162,180,100, 36,197,108, - 66,127,126,162,193, 80,159, 65, 13,216,243,176,219,216,171,213,114, 78,234,237,174, 58,214,190,238,163,161,182, 0,246,252,214, - 70, 85, 51,234,158, 92,234, 57,233,107, 80,119,120,240, 74,131,159, 30,215,113, 56, 77,202,227,163,169,126,127, 93, 26,205, 58, -207,150, 23,102,209,224, 20, 32,160,198, 21, 25,235, 90,161,214,238,143,172, 52,187, 39,243,249, 56, 40, 1, 15, 70, 9,150,206, - 64, 24, 36,207, 32, 88, 12,150, 57, 62, 63,229,218, 83,162,215,134,243,210,131, 96,110, 59,131, 57,243,221,196, 21, 41,237,130, -224, 59,183, 81,222,178,136,178,157, 75,102, 71, 37,156,226,156, 48,115, 77, 93,194, 68,178,108, 99,150, 6, 77, 89,185, 54, 53, - 51, 78,220,137,139,210,152,229,244, 54, 54, 42,197,206,125,129,137,176,230,226,195,187,236, 92,128,134,225, 66,185,148,145, 51, -141, 16,155,237,145, 84,114,186,152, 26, 57,218, 32,162,193, 99,160, 55,172,135,145, 76, 87,215,166,128, 40,119, 74, 61, 94, 68, -117, 70, 94, 29,183,168, 26,181,174,135, 25,209,213,120, 98, 53, 75, 40,241, 96,181,122, 99, 6, 2, 3, 61, 36,235,149, 46, 97, - 34,202, 30,166,211,142, 69,143,141, 44,230,231, 6,155,253,154, 34,139,103,136,189,224,117, 65,116,207,139, 72, 7, 70,250,237, -131,185,252,171,137,181,244,137,231,197, 51, 70,107,151,178, 81, 27, 19,244, 88, 16,235, 77,248, 93,203,142,224, 58, 41,202,222, -160, 79, 16,151,215, 93,160, 6,178,188,161,179,119,136, 72,160,206,160,251,107, 53,116, 27, 33,120,136, 89,192,195,178, 32,217, -205, 9, 90, 70,150,102,144,219,216,129,189,198,223, 54,209, 97, 37,113, 31,110,151,132, 19, 76, 52,142, 50,203,164,112, 19,231, - 53,152,104,163,216, 82, 75,225,146,114, 94,172,247,213, 68,153,228,113,230, 32,206,202, 4, 82,152,225,159, 31, 30, 94,170,145, - 26,203,131,251,155, 92, 59,127, 50,150,112, 82, 97, 4, 50,243,174,139,208, 68, 35,238, 37, 2,157,141,114, 41,110,234, 40,187, - 6,184, 71, 9,145, 17,114,142, 93, 38,178,219,136, 0, 70, 84,237,104, 86,250, 11,194, 12, 61, 32,175,133,122,228,225,254,249, -212,212,126, 33,127,244,103,223,147,227,227, 19,169, 22,139,242,246,253,123,242,250, 84,223, 95,179, 88,232,177, 2,197, 8, 8, -113,231, 53, 43, 26,202,201,201, 51,249,250, 7,111,203,239,254,198, 7, 78,234,148, 89, 89,149,142, 17, 70, 29, 48,254,179,195, -166,102, 90, 67,117,244, 99,231,168, 52, 43,107,245, 92,246,183, 81,204,202,147,215,175, 9,169, 22, 10,121,214,147,241,244,190, - 62,231,253,237, 45, 62,215,167,143,159,168,163, 24,134,164, 91,143, 48,184, 27,169, 9, 81,145, 52,181,188, 17,240,127,248,214, - 3,181, 17, 73,117, 18, 3,218,149,124,218,163, 54, 56,136, 92,152,210,245,209,163,215, 92, 27, 56, 62, 24,245,171,171, 43, 73, -238,237,241,231, 49,132, 37,167, 25,223,253, 91, 27,114,158, 77, 73,181, 84,146,142, 6, 43,207, 94,239,171, 99,203,144,228,135, -113,170,176, 53, 92,171, 16, 98,198,191, 19, 81,208,181, 1, 89,111, 50,105, 18, 85, 40,169, 51,251,217,231, 47, 37, 97, 33,210, -226, 18, 23,204, 97,135,235, 64,105, 21,239,142,243,133,236,115, 66, 78,194, 68,202,133, 20, 19, 26,144,210,138,172,179,167, 24, - 56,164, 83, 57,185, 85, 72,203,243,243,128,228, 46,236, 95,161,128,122,124, 64,117,180, 82, 54,144, 33,164,109, 33,219,170,159, -117,103,171,172,239, 91,144, 47,223, 76,229,170, 55,160, 72,203, 89,179,207, 0, 53, 77,101,186, 36, 3, 13,148, 81, 16, 28, 76, - 32,192,147, 49,204,222,207,186, 3,214,211,103,195,105, 0,162, 0, 90, 47,171,179,174,104, 48,118,121, 53,210, 44,120, 76,123, -139, 64,167, 8,117, 54,207,146, 63, 0, 22, 58,202, 12, 8, 10, 81,126, 5,138,113, 92, 31, 49, 80, 73, 39, 52,176, 27, 59,157, -249, 4,101,113,123, 50,208,224,226,178,121, 37,151,231, 39,115,165, 58, 79,131,180,108,190,172, 1, 10, 36,124,251, 82,211,192, - 97, 56,180, 92, 95,212,239,209,206,215,215,207,245, 66,206, 8,214, 30,173,209, 51,233, 89,227, 57, 17, 27,152,123,100,238,126, -176,232,192,129, 56,142, 21, 39,217, 75,145, 83, 59,165,252, 46,101,203,225,212,141, 44,228,193,131, 69,249,206, 70, 4,160,162, -109,193,146,136, 50,232,237, 92,155,222, 44,235,151,196,164,190,151, 96,111, 51, 67,165,189, 5, 4, 63,155,186, 23, 44,117,200, - 68, 66,129,217,200,242, 27,122,113,111, 16,228,138,232,150, 92,135,175,227, 54,210,218, 88, 2,138, 63, 75, 82,142, 79, 15,205, -206,206,186,164,245,194, 29, 15, 19, 97,155,148, 99,194,219,233, 76, 62,210, 39,115, 18,211,137, 90, 87,109,201,165,172,148,171, - 85, 70,247,136,174,222,191,155, 37, 84, 36,226,178,119, 56, 65, 58,245,142,131,134, 86, 86,170,100,179, 66, 2, 81,164,175, 7, -197,155, 19,131,208,122,132,199,193,197, 45,104, 96,241,238,123,119, 57,217,200, 70,178, 23,137, 79,115,117, 78, 31,144, 78,119, - 20,146,164, 16, 37, 23,121,176, 47, 27,109, 94, 48, 92, 86, 42,133,133,172,253,216,226,205, 6,134,216,185, 78, 87, 12,254,141, - 41,199,187, 78,150,185, 60, 35,178, 95,160, 17,254,212, 50,154,191,222,119, 30,201,242,141,189,217,195, 71,235,168,177, 49,171, -139, 14,129,107,213,218,112, 95,230,168,192, 12, 38,143,138, 7,217,168,115, 55,241,105,105, 75,255,238,130,129, 96, 81,203, 55, - 18,147,208,141,176,248, 34,232,145,137,193,193,177, 72,115,185,231,222, 51,215,234, 65, 50,143,138, 35,171,102,151,138, 49, 65, - 84, 84,201, 44,101,202,203, 19,240, 12, 13,212,201,209, 57, 21,189, 48, 8,162,113,121,197,121,195,103,103, 87,204,146, 6,172, - 1,142,231, 68,207, 40,233, 49,122,245,108,140,109,191, 24, 31, 57, 47,175,124, 69, 59,165, 93,194, 91,108, 76,199, 93, 34,138, -135, 11,184,221, 70,172,143,177,241,233,108,243,154,251,108,150, 18, 6,121, 16, 61, 11,230,165,175, 39,207, 15, 40,194,242,248, -241, 51, 57,215, 12,189, 90,174, 74,173,182, 42, 67,117, 92,179,169, 83,147,177, 58,109, 53,196,165, 66, 89, 26,234, 16,155,245, - 11,146,141,238,221, 90,147,223,250,246, 30,131,116, 39, 56,227,130, 45,126,143,254,255,225,247,190,144,143, 47,213, 24,171, 83, -171, 85, 87, 53,112, 71,166, 62,145, 85,189, 95, 31,171,195, 70,175,121,173, 90,209,207,159, 50,176, 71,253,117, 85, 51, 94, 12, - 82,249,226,249, 75,214,165,103,211,198,176,222, 57,206, 37,247,232,156,225,196, 71,236,184, 49,108,121, 75, 91, 48,161,199, 68, - 5, 82, 89,205, 56, 53, 99,214, 28, 89,218,221,138, 38, 6, 85, 89, 79,128, 84,149,165, 3,235,214, 52,211,108,181,228, 92,179, -193,157,205, 77,121,247,222, 30,245,222, 3,117, 72,232, 61, 7,108,158,201, 58,238, 14, 50,233, 97,167, 67, 50,111, 6,117,117, -223,159,151, 89,224,232, 81, 18, 68,224, 1,136, 28, 89,255,154, 62,255,173,141, 18,107,251,147,238,132,157, 61,201, 80,194,213, - 17,251,140,244,122,158, 58,168, 49,207, 22, 68,117, 96,131, 64,246,202,100, 74,180,113,105,253,249,149, 66, 65, 14,235,125,117, -180,250, 62, 24, 40,131,245,165,188,106,142,182, 13,236,254, 15,238,108,144,217,141,117, 67,246, 89,111, 13,229,183,190,117,135, -173,127, 54, 72,211,153,161,167,254,229, 81, 75,159,213,147,247,238,174,202,197, 85, 31, 85,125,126,111, 70,207,120, 49,151, 36, -162,241,214,173,117,221,219, 33,133, 97,214, 52, 48,232, 14, 38,106, 19, 39,234,200,147,178,181, 86,144,251,187, 85,253,255, 99, -182,206,109,212,114,186,230, 26,188,233,223,109,106,208,244,233,147, 83,233,168,253,196,249, 27,163,182,238,163, 78,142,251, 63, - 17,200,229,239,172, 87,100,107, 37, 47,141,246, 64,206, 53, 56, 56,175,159,200,229,133,115,232,197, 98, 69, 10,229, 85,138, 82, -189, 57,120,163,201,153,238,115, 54,199,247,233,246,251, 92, 51, 48,243,193, 95, 24,105,166, 63,183,141, 28, 32,102, 41, 68, 4, -255, 0, 84,103, 74,197,188,137,158, 85, 39,126, 4,219, 10,149, 63,182,102, 2,157, 10,249, 92,174,191, 61, 96,201,129, 78,210, -206, 38, 47, 46, 4,195,108, 68,105,110, 89,179,197, 68,101, 89,151,134,112,153,101,141, 50,123,179, 84,201, 44,177,192,140, 9, - 4,150,253,254,128,207,214,235,247,216, 98, 24,229, 90, 73, 4,161, 69,201,105,166, 8, 40,255, 38,146,247, 13,237,179,215,219, - 97,227,227,144, 77, 68, 78, 22,170,130, 73,212, 97, 32, 48,144, 73,134,230,205,247,195,204,192,202, 68,100,222,175,158,152, 15, - 58, 8,248,119, 38,153,209, 72,207,145,118, 16, 49,115,132, 95,164, 9, 30, 27,131,200, 24,181,120,252, 46,184, 61,254, 36,152, - 59, 13,141,229, 66, 38,159, 97,180,235, 50, 18, 97,205,205,255,226,181,172,212,202,161, 66,147,157,219,120, 60, 52, 46, 66,161, -144,149,170, 30,224, 94,111, 36, 31,127,242,132,198,168, 84,204, 73,123,165, 36, 37, 61,188, 47, 95,189,145,221,237, 13, 13, 36, - 42,252,187,145,126,175, 31,140,213,184,229,231, 78,177,209, 2,115, 53, 29,155,252, 53,159,108,108,100, 62,187,152, 65, 1, 24, -255,250,189,111,246,207,248,207,189,221,117,214,126,174,244, 18,238,238,110, 92,203,212, 61,207,187, 94, 20,191, 73, 14,112, 57, -221, 91,154, 29, 30,223,228,136, 35,138,212, 91,230, 26,238,198,196,148,222, 22,162, 48,209, 78, 3,123, 13, 82,166,254,183,137, -215,200,109,108,200,205, 12,246,241, 98,179, 90,237,117,149,246,165,122,184,137,207,152,183,209, 49,179,230, 90,196, 26,109,233, -178,177,126, 56,187,120,159,249,120, 71,135,184, 12,251, 26,208, 13,134, 33,184, 97, 72, 92,122,243,234,136,151, 45,229,121,172, -229, 13,250,221, 57, 28, 15, 24,182,167,153,205,106,173, 60,215, 74,158,243, 48, 99,188,135,136, 54,194, 87, 92,236, 88,184,108, -227, 64,203,140,193, 62, 47,202,216, 56,226,190,220,105, 97, 77,176,136,180,131,120, 27,205,140,179,130,255,114, 88,137, 56,130, -209,195, 47, 94,201, 95,252,229, 95,209, 65,109,109,108,170,129,173,168,115,186,160,163, 69,102, 28, 76,135,204,142, 83,233,146, - 52,175,154,210,106, 54,100,173,182, 34,169, 66,133,181,223, 94,111,151,243, 40,152,113, 37,146,132,223,103,181, 21,100,176,198, -142,229,131,187,123,242,100, 31,243,201, 83,122, 87, 10,242,209,151, 79,244,119, 47,245,142,149, 92,150,167,107,140,250,244,214, - 90,141, 80,244,195, 39, 79,195, 81,166, 1,101,102,103,193, 14,209, 82,100,185, 9,103, 63, 60, 23, 33, 19,198,165, 77,161,212, -168, 39, 95,187,183, 41, 95, 30,156,202,183,191,118, 79, 63, 63, 39,223,255,236,204,177,176,245,247, 71,106,107,122, 26,188,245, -212, 25, 6,158, 35,223, 66,222,182,221,106, 19,166,237, 7,125,238,111,210, 75,209,217, 57,200,124, 68, 2,159,155, 69,238,130, - 12, 40,148,161, 65, 2, 83,221,144, 73, 6,234,116,142,142, 79,165,152,201,104, 80, 88,146, 21, 13,122,250,227,134, 35, 90,134, - 89, 97,187, 59,228, 89, 32, 89, 48, 28, 90,130,145,177, 83, 13, 10,234,245,186,220,217,203,200,174, 6, 25,200,172, 91,157,150, - 36,130,145,180,122,122, 68,211, 5,126,191,193,124,248,222, 80, 51,218,156, 62,127, 87,142, 27, 85,169,104, 0,243,230,164, 37, -133,188,218, 25,117, 82,251,167, 29,253,124, 13,124,244, 59,161,174,214, 84,219,210,104, 15, 89, 55,175,150,178, 92,203, 11,205, -146, 87,139, 89, 25,107, 16, 84, 31,234,154,121,104,241,243,213, 97,231,104,111,223, 92,116, 49, 99, 78,214, 42,154,161,183, 6, -242,247,159, 28,200,157,237,138,180,159, 57,254,196,116,236,179, 92, 83,215, 64,102,165,148,145,141,181, 34,187, 2,224,106, 90, -250,157,248,140,132, 9, 97,110,193,216,211,145,188, 26, 5, 82,173, 84,229,217,203,215,154,209,183,184,207,168,247, 23,242, 21, - 78,163,171, 55,142, 72,116, 76,168, 63, 64,189,189,221, 13, 8,183,131,244,135,117,131, 32, 17,157,177,103, 40, 49,140,254,250, -188, 56,228, 41,109, 50, 76,164,240,153, 54, 28, 55, 59,147, 14, 54, 38, 19,202,123, 11, 17, 6, 44,253,196, 15,141, 3,248, 9, - 72, 70,141, 89, 86,145,186, 65,109,244,122,255,184, 93,146,211,142,106,139, 88,185, 46, 50, 54, 23,214,178, 11,210,242,120, 58, -150,166,158,189, 11, 77, 32, 39, 67,180,237,233,254,106,160,100, 82, 94, 88, 34, 8,207,190,174,249,160, 61,145, 91,187, 80,231, - 75, 44,148, 73,151, 9, 97, 95, 49, 70,219, 44, 32,233, 24,146, 96, 35, 8,243, 66, 11,211, 77,212, 75,146, 69, 8,199,165, 70, - 96,181, 48, 91, 35, 7,167,121,179,246,163, 80,180,127,160,155,125, 53,156,146,144, 4, 77,104,127,234, 50, 92, 59, 93,140,200, -244, 28,180,207,205, 27,170,131,134, 11,199,160, 0,177, 11,162, 83, 16,146,123, 76,224,241, 34, 98,193,209, 82, 1, 65, 6,140, - 49, 68,187, 7,140,175,120,222, 66,211, 61,180,243,120,174,131,195, 58,165, 63, 69, 47,207,152, 98, 6,206, 48,224,127,199,103, - 77,194, 73,155, 27,129,164,244, 57, 33,190,240,230,240,146,178,137,189,242,132, 53, 36,212,165, 90,122,235,218,173, 69,160, 48, -229,164, 35,111,238,192, 65,176,218, 85,231, 61,251,238, 47, 63,127, 45, 47, 94, 30,235, 5, 94,147,195,163, 11,110, 44, 38, 48, -237,239,159,204,197, 83,102, 9,214,157, 59,155,140,134,173,253,138, 30,242,101, 6,121,204,129,199,137,102,209, 49,171, 86,162, -195, 1, 34,172,121,107,150,209,245, 5, 49, 46, 50, 45,205, 44, 53,137, 71,107, 58,241, 32, 99, 73,162, 48,142,105,197, 53,203, -163,242, 66, 81, 65,249, 88,155, 98,156,133, 31,111, 2, 95,234,255, 51, 86,110, 84,223,181, 38,142,232,163,183,117,228, 84,204, -102, 45,148, 48,238,109,205, 72,179,154,217,193, 24, 94, 92,180,113, 56,217,142, 53,251,138, 78, 71,157,188,217,226,223,207, 32, -192,248,140,244,133, 94, 66,172,197,208, 46, 41,199, 68,200, 53,177,234, 66, 76, 98,121, 25,159,183,145, 14,151,133,212,165,157, -149,136,194,139,106,194,126,243,152, 30, 65,128,250,243, 84,157,249, 51, 57, 57,189,144,163,195, 55, 82, 81, 99, 91, 2, 81, 75, - 13,106, 71,207, 60, 51,109,102, 48,122, 71,211, 89,174, 73,171,221, 97,182,190,183,183, 45, 94, 42,203,172,116,111, 67,239,238, -196,245, 33,227, 63,147,209,104,142,104, 97, 13, 49, 3,252,238,102,153,179,210,247, 53, 43, 71, 6,254,217,243, 19,117, 50,112, - 66, 89, 6, 23, 56,242,128,209,119,214,215,104,116, 31, 61,127, 65, 29,113,102, 35,129, 11, 66,238,108,109,145,241,254,226,224, - 80,239, 67,154,164,169, 76, 90,157,103, 54,199, 80, 29, 78, 21,159, 3,118,253, 84, 51, 84,192,198,119,182, 87,137,178,129, 16, - 6,152, 61,233, 37,169,130,214,133,238,248,196,169,150, 65,146, 54,151,201,242,110,172,104,128,145, 83, 67,250, 98,255,141, 52, -219, 93,218, 30, 40,227, 5,190,204,225,208, 22,246, 92,255,137, 30,121,172,175, 38,142,180, 73,198, 58, 49, 23,100,137,245, 86, - 75,157, 99, 81,166,186,102, 59,171, 85,121,125,222, 33, 76, 12, 18, 26, 83,144,233, 98, 56, 10,178,180,209,176, 43, 9,235,166, -194, 65, 28, 6, 12,116, 56,183, 98,118,160,129, 38, 52,242, 53, 99, 50,110,130, 26,130, 25,172, 21,100,110,119,213,200, 62, 59, -184,148,111,222,171, 49, 1, 41,229,211, 18,232,239, 23,192, 91,208,164,163,217, 25,177, 29, 16,240,254,230,138,218,194,113, 64, -231, 95,201,123,146,212,239,235,168, 93, 76, 38, 29,123,124,164,142,229,170,163, 25,241, 8,202,125, 9,118, 50,116,193, 38,199, -224, 26, 61, 83, 95,236, 55,100,167,173, 1,130,254, 15, 89,120, 83,207, 2, 84,230, 14, 47, 59,236, 3,207,235,222, 64,244,165, - 55, 30,206,135,189,120, 33, 50,130,217,246, 40,131,100,114, 5, 77,146,158,179,125, 15,237,136,107,107, 91, 84,166, 67,231,194, -101,189,193,150, 61,160, 30,224, 85, 36, 67,153, 91,236, 39, 80,147,182,218,113,148,120,136,116,192, 17,250, 78, 17,175,233,185, -121,240,213,162, 37,153,111, 26,254, 57,124, 6, 2, 74, 55,212,197, 13,214,113, 53,119, 87,122, 2, 97,251,214,206,102, 56, 98, - 54, 8,199,192, 46, 74,122,179, 65, 84,179, 33, 86, 51,231, 53, 75, 52,231, 29, 72,102,121,126, 72, 4,142, 23,179,108,222, 34, -253,231,139,174,166,114, 33, 39,181,138, 38, 7,114, 32,195, 30, 74, 8,105,185,255,246,186,120,153, 68, 12,145,156, 14,244,172, - 52,204,124,178, 96,156,214,228,197,179,241,175,152,129,229,236,166, 23,111, 83,142,149, 48,163, 19,221,146,146, 44,105,228,119, -120, 12, 69,162,156,100, 43, 9, 70,204, 94, 56,228,221, 80,153,202,103, 36,133,218, 14, 46, 47, 34,116,168, 21,169, 55,149, 96, - 62,143, 62,136, 25,108, 63, 28,223, 10,120, 15, 3, 24,178,186,113, 9, 73,196,134,116,204,106,154,190,239,218, 71,112, 88, 61, - 31,117,170, 73,136, 10, 24, 58,105, 28, 20, 64, 78,184,124,136, 41,201, 4, 69,180,169,135,170, 92,192,208,137, 36,167, 29,129, -252,210,214, 15, 47,228, 51,100,168,226,123,241,243,104,187,192,112,134,164, 30,212,171,102, 75,186,250,119, 38,156,116, 4,209, - 7, 9,167, 23, 5, 24,146,128, 72, 74, 13, 11, 32,200,179,211, 62,163,236, 74, 21, 36,154,161,156, 93, 92, 73, 38,159,119, 4, - 64, 72, 98,226, 50, 99,157,208, 74, 21,238, 0, 2, 73, 7, 37,249,132, 91,102, 48,137, 49, 54, 62,131,126,169, 14,111, 99, 83, -190,162,179, 89,162,117,123,115, 3,106, 51,107,217, 88,130,215, 99, 78,202,139, 8,230,132,115,205,163,196, 63,137, 79,157,155, -205,142,191, 62,113,111,137,146,191, 16,100,143,212,200,189,120,176, 98,150,116,240,231,173,117,161, 80,195,108, 30,180, 93,240, - 84,162,164,194,216,168,193,144,240,226, 25,215,145,129, 78,139,148,103,231,147,155,156, 83, 82,227,138,218, 33, 38,114,105,180, -127,113,126, 37,107,171,121, 55,231, 58,194, 52,197, 30,225,115,231,170,136, 54, 26,180,196,251,216,237,141, 19,219,100,105,220, -128,141, 13, 9,138, 50,219,163,226, 23,179, 79,247,162,159, 28,138,105,152,104,177, 62,116,238,214,193, 11,116,146,208, 34, 7, - 67,253,103, 31, 61,148,159,127,250, 80,110,109,238,200,238,246,174,212,213, 97,157,212,207, 93,221, 24, 78, 82,215,160, 84, 40, -114,208, 72, 11,164,175, 97, 79,214,107, 53, 18,191, 14,224,160,213,224,130,217,140,207, 4, 9,118, 20, 6,245, 51, 36, 12, 66, - 46,165,156,102,126,131,169, 60, 63, 56,146,213,106,133,217, 58,140,109, 49,235,132, 99, 16, 60, 32, 8,222, 89, 91,165,163,126, -166, 14,213,132, 58,243,128,215,177, 71,187, 27,107,250,187,101,190, 41, 2, 92,160,121, 62,121, 57,152,149,221,155,215, 91, 55, -106, 43, 36, 98, 5,182, 68,155,241,246,222, 6,137,120,245,171,190,164, 0,221,103, 83,250,239, 45,169,149, 80, 90, 25,202, 85, -171, 67,187,130, 47,172,228,112,158, 82,114, 54,246,216,206,133,255,160,141, 44,151,118,210,176, 25,116,224, 36,167,180, 79,176, - 15,248,254,137,239,132, 78, 0,189, 99,248, 12,178,125,200,145, 54,244, 59,240,187,128,234, 43, 26, 40,108,215, 50, 20,186,169, -234,207,116,200, 14, 31,145, 92,134,179,155,162, 67,117, 83,209,192,224,135, 6,124, 38, 93,228,188,242, 46, 62,123,224, 70,157, - 14,135, 30, 33,102, 12, 96,153,248,234,184,141,144, 83, 80,211,172,174,170,206,112,162,217,118, 91, 19, 31, 40,206, 13, 53, 83, - 78,123, 83, 14,177,153,176,164,153,166, 29,201,167, 60,182,117, 53,219, 99,217,168,130,252,168,118,105,106,136,178,160, 20, 74, - 2,153, 26,158,157,181,138, 62,107, 74, 51,244,190,116,212,137,239,109,175, 72, 94, 3,134, 87, 7,199,114,222,236, 73, 95,179, -200, 84, 42, 47,109, 13,112, 11,105, 67,153,215,147, 78, 67,159,219, 99,128,135,214,102,188, 23,190, 23, 76,169,141,173, 93,182, -141,189,126,253,132,115,233, 49,122,182, 88, 40,107, 32,162, 1,207,209, 1, 5,140,128,222, 32,241, 66, 57, 5, 78, 23,237,135, - 8,188,160,104, 87,212,239,232,170,221, 30,235, 58,244, 56,194, 86,120, 15,189, 16,210,197,253, 69,217,204,141,142,245, 67,219, -144, 96,112,226, 38,215, 25,126, 46,246, 3, 35, 70, 49,187, 30,147,252,170,229, 82, 56, 84,199,196,245, 60,108,180, 76,182,140, -140,218, 56, 44, 62,211,136,240, 34, 51, 38,196, 92,235,242,137,183,176, 93,103, 64, 1, 69, 67,160, 13, 73,219,177, 63,224,119, - 32,209,139, 14,186, 68,187,163,111, 37, 54, 20,202, 26,185, 38, 45,123, 61,113,139,203,138,155,136,210,231,204,118,219,144,115, -179,144, 4,119,118, 46,137, 26, 5, 28, 39,160,202,122, 87,163,201,222,148, 15,139,195,132,108,252,180, 53,224, 2,239,213, 52, -170,204,185,105, 77, 57,195, 95,116, 99, 90, 77, 98,193,250, 54,174,141,173,169,145,117,103,132,133, 79,242, 48,128,132,129, 77, -152, 43,252,132,227, 90, 73,138,163,244,104, 64, 53,176,171, 0, 6, 24, 25, 54,106, 71, 73, 14, 56,240,209,247, 30,104,164,222, -109,169, 99,206,169, 65,209,131,151, 79, 16,170, 9,104,240,220, 48,129, 92, 6, 44,205, 62, 47,212,202, 74, 73, 51,148,190,252, -232, 71,159,234,101, 55,178,154, 25,139,237,118,121,121, 74,217, 42, 73, 47, 12, 62,188, 41, 15, 11,140, 78, 74, 35,247,156, 23, -112,113,187,250, 59,117,189, 56,152, 46,212,105,117, 24, 85,110,174,151,216,122, 35,120,127, 24,169,108,130,151,192, 70,216,249, - 35, 64,253, 54,203,236, 4,181, 92,108,120, 10,253, 45,179,177,174,193,178,195, 8, 35,174,104,155, 89,180, 94, 30,137, 44,151, -199,180,152,200,140,117, 27,149, 34, 53,179,129,229,241, 62,250,184, 92,161,137,147,222, 98,114,175, 75,125,250, 17,146,198, 53, -216,202, 46, 8, 32,174, 47,221,198, 52,254,231,239, 97,231,183, 96,161,232, 52,155,137,104,163, 35,225, 76, 76,109, 47,170,246, -196, 72, 94, 29, 8, 50,244, 55,175, 14, 53,168,107,176, 46,135, 31, 69,107, 27,158, 14,181, 91, 33, 12,143, 22,174, 33, 51, 54, -150, 23,172, 27,179,137, 79, 29,170,225,126,244,233, 99, 70, 17,247,238,223,161,168, 71,194,187, 89,143,125, 62,177,205, 68,155, -210,110,170,183,153,249,197,154, 59, 99,179,188,110, 54,146,224,219, 88,171, 5,156, 67, 32,145,187, 49,107, 19, 13,107,220,205, - 78, 79,158, 60,127, 41,159, 62,124, 44,199,199,199,178,171, 14, 29,242,173, 29,214, 44, 7,100, 27,131, 89,140, 59,153, 77, 57, - 81,143, 78,175, 43,211,209, 64, 29,250,170, 12,245,221,143, 47,206, 28, 3, 28,189,205, 24, 32,130,222, 99,127, 26, 27, 12, 49, - 11,206,159, 31,157,203, 90, 70,239,161, 58,198, 95, 60,217,159,171,126, 1, 22,245,195, 64, 21,164,184,102,167, 35, 47, 15,143, -233,224,209,174,138,146, 21,248, 11,123,234,208, 79, 46,234, 82,111, 94, 81, 49, 14,246, 3, 91,191,161,193, 5, 2,117,100,197, -200, 6,161,124, 7,225, 20,216, 16, 4,238, 80,115, 91,173, 22,244,121,125, 57, 62,221,151,237,245,138,102,178, 5,121,245,226, -133,124,231,195,119, 53,243,235,201,243, 55, 66, 70,246,101,179, 33,159,126, 94,167,125,185,119,255,125, 89,201,170,179,242,198, -242,224,237,175,201,163, 47, 31, 75,255,234, 74,126,247,183,127,147,109, 89,135,103,167,210,235,245,249,238,232,101, 95,175, 85, -244,121,179,234,252,211, 52,131,231,234,208, 97, 27, 32,136,130,254,122,100,154,191,241,222,134,124,242,234, 74,179, 94,203,174, -129,158, 6, 1,190,113,228,193, 2,230,126, 87,179,225,190, 99,109,175,228,155,171,101,169,106, 0, 4,100,228,249,171, 14,231, -157, 55, 7, 19,202,203,118,244, 25, 18, 26, 16,109,175,100,168,176,246,245,183, 54,228,238, 78,133,109,119,191,241,205, 93,217, - 63,186,144,239,253,252,137,124,253,222,170,148,179,129,124,231,151,238,145,117,127, 82,239,200,211,215,151,212,139, 71,208,243, -238,253, 85, 25,232,239,163,190, 14,221,253,163,147, 75,217,219, 44, 72,123, 96,101,165,130,224, 36,173,207,150, 32, 28,127,217, - 26, 49, 16,217,212,231,220,168,100,229,214, 70, 69,250,186,221,159,191,106,200, 84, 29,251,118, 45, 39, 67, 77,204, 32, 34,100, - 36, 35, 71,141,126, 56,124, 39, 45,165,202, 26, 75, 54,151, 23,167, 60,147,153,108,145,100, 56,112, 9, 94,237,191, 34,191, 1, -234,121,216, 87,236,183,245, 32,239,154,100, 80,131,172, 26,189,242,176,195,255,228,155, 59,178,165,207,245,175,126,112, 32,125, - 13, 36,209,222,136,191, 7, 90,179,185,190,206,128,174,213,109, 59,114,151,254,126,150, 2, 71, 62, 81, 17, 12,216, 41,106,112, - 74, 93,129, 96,192,231, 40,151,215, 92, 11, 94, 52,129,177,145,182,228,136, 32,215,141,202,152, 75, 35,148,237,172, 76,102, 22, - 9,137, 89,230, 16,221, 84, 90,156,143,165,118,115,239,173,254,111,164,107, 25,181,143, 51,155, 26, 83, 3,137,240,111,230, 45, -171,198,196,135,141,155, 40,243,254, 26, 22, 26,231,108,217,229, 18,160,243, 49,201,110,187, 69, 66, 67,171,171, 81, 80, 33,173, - 14,121, 76,226, 74, 90, 55,106,165, 82,100,212,152,176,110,228, 34,234, 61,200, 76, 17,229,181, 39, 14,158,247, 18, 83,126,102, -127,236,115,193,203,185, 20, 51, 88, 68,126, 40, 74,225,128,193, 88, 4, 97, 61,221, 70, 12, 29,231, 3, 39, 92,127,229,192, 79, - 75, 54,167,145,125, 94, 55, 82, 55, 61, 16,167, 94,149,148,137, 60,184,157,144,195,195,177, 28,235, 51,230, 52,170, 46,151,146, - 46, 3,245, 22,132, 57,212, 83, 81, 34, 0,204,212,239, 97,154, 84, 94,146,128, 94,213,127,107, 12,202,140, 4,181,156, 85, 76, - 57,210,200,113,140, 58,157, 26,190,188,102, 2, 65, 10, 4, 24, 95, 90,228, 23, 36, 57,241,139, 65, 75, 98, 33,224, 2,227, 90, - 72, 25,102, 56, 45,189,172,122,183,164,168, 23, 8, 63, 59, 82,231,130,127, 71,112,132,136, 21,204,235,179,243, 22,219, 68,138, -124,127,145,180, 30,130, 74, 49,171,193, 67, 33, 60,152, 54,174,148,182,172, 77,234, 69,218, 35, 66,104,214, 46, 59,244,136, 3, -193, 72,193,216, 28, 99, 49,145,233,236,230,186,182,254,204,127, 90, 23, 28,129,108,152, 43,100,221,140,223,101,213,178, 25, 33, - 46,114,250, 2,187,136,120,249, 28,190,107, 29,138, 77, 34, 9,159, 25,107,130, 0,142,117,236, 16, 70,138, 30,220, 40,211, 61, - 58,211,216, 70,234,212, 80, 43, 59, 57,185,160, 3, 65,205, 54,160,131,242, 73,178, 4,137,169,223,159,178, 23, 55, 5,102,103, - 56, 14, 50, 8,131,142,217,229, 66,143, 46,249, 29, 28,228,224,203,203, 23,175,249, 93,119,238,221,162, 54, 54,201,148, 54,218, -194, 98,227,115,237,162,206,120,121,152, 66,164, 7,214, 70,144, 25,187,204,137,159, 5, 65, 17, 45,129, 5, 68, 24,132,235,230, - 70, 90,162,230, 60, 30,141,229,203,167,251,242,127,253,233, 95,145,140,115,231,214,109, 42,154, 61,126,245,134,140,117, 8,167, -248,193,100, 78,242, 4,196, 10, 78, 1,132, 74, 42,149,178,116, 71, 35,194,215,236, 81,214,115,143,225, 37, 24,255,137,223, 75, -167, 18,139,185, 13,225, 90, 1,246,188,191,187, 33, 91,234,152,255,199,255,237, 47,233,120, 65,102, 66, 16,128, 44, 30,251,243, -206,222,174,156,104,118, 10, 7, 57,101,109,221,213, 10, 1,151, 3,210,197, 20, 46, 50,158,189,188, 58,161,161,203, 2,209,127, -238, 37,230,229, 46, 87, 94, 8,244, 51, 46, 25, 0,151,242, 21, 6,255, 84, 86,227, 40, 78, 95, 30, 61,254, 92,126,235, 55,255, - 45,102,170, 7, 71,135, 82, 93, 89, 35,225,113, 74,190,132, 6, 51,186,159,121, 93,139,149, 86,131, 14,245,241,227,231,178, 59, -184, 79,134, 58,116,201, 49,206, 19, 25,123,202, 75, 73,185, 80, 98, 16, 4,196,227,224,164,206, 41,107, 91,186,231,174,190,111, -152, 89,163, 55,189,144, 44,176,198,125,222,158,200,239,124,109, 93,254,135,255,247,139, 80,218,214,184,102, 39, 12, 34, 25, 91, - 14,168, 73, 37, 72, 50,114, 25,219,212,113, 25,128,132, 96,178, 92, 90,239, 67, 38, 83,228,160, 98, 4, 69, 96,202,111,130,116, -214,156,104,182, 61,146, 67,175, 35,207, 14, 91,242, 23, 63,121,193,132,101,160,153,250, 71,159,237,171,237, 12,228,211,151,117, -121,239,254, 45,217, 88,201,169,131,180,242,247,159,190,228,204,250,131,243, 54,137,111,245,206, 88, 78,207,235, 44, 51, 54, 58, - 35,194,218, 15,159, 31,202,222,214,170,126,247, 88,186, 3,159,123,182,183, 81,166,227,218,191,232,203, 71, 47,234, 68, 88, 1, -247,247,134,174,134,142,123,254,232,176,173, 54, 47,193, 18, 65,181, 88, 85,251, 90,150,102,253, 76,154, 26,120,161,204,128,131, -177, 94,168,134, 78,249, 76,223, 41, 67,210, 51,126,121,200, 44,213,205, 1, 65, 89, 19,182,113, 66,229,184,130, 6, 74, 61,185, -236,106, 50,165,123,250,254,253,187,114,126,121, 41,221, 78,147,172,250, 15,223,185, 39,111,221,127, 79, 3,166,190, 6, 64, 3, -153, 0,138, 71, 25, 73,239,228,149,238, 37,208,215,245,218, 29,217,220,218, 97,208,138, 63, 67,208,250,107,191,242, 77, 58,127, -172,115,172,220, 53,183,151,222,156, 16,103, 77, 92, 33,222,218, 40,207,103, 73,206, 91,188, 88,223,185, 89, 78,104,110, 84,238, -116, 63,131,210, 75, 64, 50,104, 58, 14,154,135,207,224,134,198, 44, 79,151, 52, 95, 49, 10, 34, 62,161,211, 68, 71,110,135,195, - 79,230, 36,250,104,146, 16,101,201,227,153, 96,224,144,185,130,200,129,168,181,168, 17,166, 7, 21, 31,245,134,165,148, 71,225, -127,102,194,186,235, 32, 70,192,201, 79,130,132,188,185,104,211, 72,230, 52, 66,174,170,243,111,247, 28,252,133,190,210,205,149, - 34, 97, 22, 76, 43,202,231, 51,172,223, 64,249, 41, 74, 67,162,208,133,157,240,114,183, 90,122,217, 2,143, 4, 17,252,103,152, -157,208,112, 99, 46,242,175,189,149,146,149, 53, 79, 15,210,170, 84, 14,166,242,250, 74, 23, 80,163, 95,182,165,232,101,177,225, - 32, 26,147,208, 40,218,104,180, 14, 88,214,128,121, 26,112,226, 79, 73,131, 0, 61,227,146, 72,229,245, 82,143,101,191, 49, 36, -188, 83,215,239, 68, 0,240,222,158,102, 6,122,209, 59,163, 64, 6,234,233,135,212,120, 54, 52, 30, 24,161,136, 90, 25,135, 48, -162,198, 7,134, 99,209,177, 24, 47, 59, 67,205, 2,146,252,110, 12,159,152,228,146,236,231, 5,145,103,255,211,231, 78,205, 73, - 15,103, 67,179,125,212,153,238,173,166,169,211,219,186,210, 0, 67, 63, 16,151, 46,157,116, 61,213,211, 32, 8,245, 84,220, 65, - 75,120,238,112, 78,125,103,224, 89,254, 72, 37,231, 92, 9, 39,141,234, 28, 20, 29,156, 56, 70, 47,202, 5,126, 96,230,228, 70, -182, 28, 34,114, 11,191, 39, 42,129, 56,107,237, 2,148,138,118, 25, 64, 97,133, 98,142,234,129, 32,202,112,156,169, 15,195,149, - 8,201, 78,193, 28,234, 70,182,229,121, 94,132, 17,238,218,253, 90,189, 17,191,143,229,155,192,213,133, 29,193,203, 25,254, 57, -194,111, 28,151,194,134,159, 51,239,200,243, 28, 3,219, 51,241,161, 56, 36,109,194,224,234,122, 90,244, 14,123,102,254, 60, 40, - 7, 65,148, 98, 38,208, 80, 43,166,165,161, 78,110,224, 59,193,149,153,178,214,236,217,177,166,181, 74,142, 89, 1,107,191, 32, -207, 53, 26, 50, 80, 35,150, 47, 21, 25,152,205,222, 55,166,128,103,221,243,217,144,137,238,234,128, 94,184, 22, 11,236, 44,176, -193, 82,123, 74, 68, 99, 62,176,225,251, 58,226,207,156,126, 16,216,249,122,216,240, 44,160,142,253,147,143, 31,202,207, 62,250, - 5,201,163,169,116, 65, 86,107,235,108, 9, 5,148,156,240,156, 2, 25, 36, 95,177, 71, 35, 14, 65,113, 72, 18,222, 19,173, 97, - 29, 4, 5,250, 57,112, 86,248,157, 77,205,148,241, 44,109, 61,199, 18, 50,223, 57,202, 50,132,237,112,214,144,169, 65, 16,228, -201,211, 23, 52, 21,172, 79, 19,114, 78,146,189,190,187,190, 42,231,186, 94,205,171, 54,127, 30, 1, 2, 69, 93,134, 67,190, 27, - 32,237,102,187, 61, 47, 33,160,150, 60, 0,140,170,207,218,247,134,116,128, 56,223, 65,216,166,135,191, 7,241,110, 50,117, 1, - 13,222,107, 69, 3,114, 4,219, 9,111,196,103, 67,191,116, 91, 13, 59, 68, 72,132,103,222,104,162, 49,226, 72, 82,220,131,118, -187,231,186,103,198, 19,102,167, 57,117, 42,157, 94, 71, 94,189,126, 35,247,238,190, 69,113, 26, 32,121,157, 30, 90,251,178, 12, -246, 97,107,208, 18, 88,171,150, 88, 43, 6,227, 59,229, 57, 43, 12, 2, 90,189,111, 24,248,127,251, 94, 89,126,248,184,161, 1, -121,129, 48,244, 88,127, 46, 0, 83, 91,223,161, 6, 54, 59, 50,226,112,124, 40, 85,235,194,129, 75,184,171, 32, 42, 66,165,207, -122, 78, 16, 9,123,129,243, 2, 7,120, 9, 54, 59,148,247,114, 57,205,166,171,228,161, 2, 73,112,136,146,149,134, 58, 69,128, -124,216, 11, 55,227,126,172,137, 70, 74, 14,207, 59,242,141,251, 43, 18, 12,147,242,253, 87, 77,169, 20,242, 82, 43,231,116,189, -138,154, 88, 9,145,129,169,102,182, 40, 63,226, 93, 64,128, 78, 27, 61, 39, 6,226, 65, 25,214,236, 65, 36, 68,219, 28, 80,142, - 44,208, 44,253,239,237,237,109,117,244, 3,121,179,255, 76,247, 69,223,207,100,165, 84, 46, 81,145,240,162, 89,151,118,167,165, -107, 80,230, 0, 28, 6, 48,227, 73, 88,242, 74,208,142, 13,212, 6,142,135,125, 41,230,243, 12,222, 32, 30,115,114,209,146,119, -190,241, 43,146,104,141,229,224,248,140, 1,249,215,222,126, 71,254,219,127,249, 95,201, 31,255,229,143,229,226,197, 57,231,204, - 67,243,189, 90,204, 75, 87,247,172,165,123,249, 95,255, 23,255, 66,110,221,190, 35,127,250,231,127,207, 82, 9,234,247, 27,171, - 21,185,125,239,182,171,179,207, 21, 47, 29,100,191, 12,173, 71,239,222,156,241,238, 45,156, 58,248, 6, 94, 12,117,244,226, 42, -155,209,233,144,215,185,176,243,182,101,218, 37,125, 28,216, 18, 79,207, 92, 92,152,195, 57,221, 41, 64, 6,207,139, 12,139,138, -182, 74,155, 27,218, 99,163,156,162, 72,170, 23, 97,219, 70, 21, 48,231, 5, 67,187, 64,114,147, 59,219, 59,114, 75, 47,107,167, -117, 37,232,140,128,204, 99,169, 92,113,189,222,232,107, 4,148, 12,225,127,117, 86,245,246, 0,179,249, 36,227,217,121,182,137, -168,137, 19,133,172,157,143,185,116,189,135, 62,179,191, 65, 95,163,247,146, 58, 66,153, 25,241, 80, 25,203, 15,230,147,215,134, - 26,113, 62,127,209,145,188, 70,179, 43, 26, 65, 59,109,102,212,179, 60,201,127,107,155,108, 87,172,251,246, 94, 94,142, 59,174, -150,239,135,125,138, 41,246,103,186,232, 10, 53, 86, 56, 97, 56,109,148, 14, 70, 80,237,153, 36, 53,179,201,176, 79,179,232,101, -230, 89,110,217,100,164,161,135, 5,223,211,212,247,186,226,231, 26,233,144,124,147,167, 35,192, 1,178,118, 26,206, 60,134,160, - 78, 78,134, 96, 23, 90,143,117, 75,212,131,144,129, 67,227, 26,141,208, 93, 40,236,106, 96, 1, 59,215, 31, 78,165,152,182,156, -206, 4, 71, 81,170,160,103, 86,191,187,133, 94,207,161,171, 21,205, 54, 56,176,115,136,121,198, 30,134,163,135,118,192,118, 45, -205, 11, 9,105, 76, 32, 20,248,115,182,129, 80,143,223, 57, 83,143, 25,208,148,217, 39,222, 7, 4, 68, 56,246,148, 73,134, 2, - 14,206,144, 98, 79,156,248,135, 13, 37,121,221,104, 68, 64,104, 88,151, 78, 71,191, 55,147, 33,235, 23,198, 28, 37, 25, 60, 16, - 50, 97, 63,100, 20,131, 17,139,125,135,206,243,130, 43,102,121,112,129,150,192,185,164,216, 7, 28,204,161,121,252, 59,227,225, - 25,100,133, 58,227,196,149,121, 16,156, 97,224, 4,214,158,207, 24,170,151,113, 61, 66,168,140,228, 39,212,217,248, 28, 66, 4, -197,134,235,229,186, 49, 28,169, 6, 65, 38, 68,182,144,121, 32, 99, 97, 80, 17, 58, 15, 56, 81,188, 67, 94,247, 16, 81,117, 74, -131, 63, 12,207,192,247,228,114, 30,141, 84,235,178,206,231, 33,164,207, 86, 36,215,201,128,160, 4,223, 5, 77,133,153,144, 6, -213,190,244,222,248,126, 16, 81,119,114, 23,221, 44, 17, 0,231, 36, 52,124,142,231,184, 34,206,145, 91,135, 84,205,100, 88,233, - 28, 70, 92, 27,236, 73, 3,138,105,154, 13,215,214, 55,100,109,117,141,146,163,251, 7,111, 88,246,154,114, 22,131,199,224, 27, - 40, 20,126,158,129,158,113, 18,176,221,161,203,208,113, 78, 96,224,183,215,214, 8, 91,159,170,147,185,189,145,115,103, 46,225, - 36, 78, 41, 22,162,207,133, 51, 9,196, 7,223, 83, 78,185,154, 35,214, 21,225,216,189, 59,219, 92,255, 87, 71, 39,148, 33,117, -123,232,133,100,178, 17,223, 15, 89, 51, 74, 96,168,133, 98,143,208, 95, 13, 7, 64,146, 19,116,187, 83, 32,174,118,249,236, 73, -246, 94,143,168,234, 86, 0,233, 45, 20,188,130,131, 40,105, 34, 0,110, 35,166,132,225,172,229, 53,152,203,161,198, 28,158, 71, -172, 47, 62,171, 63,238,234,154,141, 72,238,234,247,186,148, 49, 5, 11,219,234,159,165,117,159,161,204,134,128, 36,147, 54,236, -193,207,101, 11, 28, 89, 26, 76,251,172,235,131, 15,208,233, 13, 36,171,209, 63,156, 33, 96,119, 64,196, 67,245,230,111,223, 43, -200,243,179, 49,207, 74, 41, 11, 36,168,205,192,148,221, 52,161,176, 76, 55,225,218,178,128, 76,162,142,141,150, 46, 42, 25,122, - 38,218, 24,202, 90,126, 41,159,160,218, 28, 72,192,131, 98, 95,142,207, 7, 36,146, 97, 32, 12,158, 13,109,108,232, 67, 7, 23, - 34,173,137, 20, 16, 40, 48,254,145,112,149, 10,105,158,123,148,255, 96, 67,176,159, 69,125,102,116, 45,161, 36, 53, 28,161,247, - 92, 19, 8,116, 2, 52,156,204, 45,158,227, 92, 19,138,146,254, 92, 70, 19,156,222, 4,101,143, 30,207, 27,201,130, 67, 39,241, -141, 50, 72,185, 92,147,163,179, 11,125,135, 6,237, 39,130,213,205,141, 13,206, 77,248,242,201, 19, 18,239,118,214,107,212,244, -199,249, 31,133, 53,114,236, 33,212,225, 74,165,130, 92, 93, 53,201,223, 0, 9,178, 11,142,132, 62,240,189,237,162,148, 50, 9, - 57,215,243, 80, 0,177,172, 88,212, 36, 47,207,238, 37, 4, 70,232,122,130,133,200,132,179, 67, 96,187, 16,104,228,178,121,183, - 31, 32,252, 5,238,156, 67, 64,106, 93, 3, 48,236,209,172,251, 37,202,211,137, 13,139,186, 54,174,195, 44, 77,201,180, 50,211, -175, 52,177,142,156,165, 30,247, 57,183,199,196,100,221,103,208, 58,108, 40,202,188,201, 90,145,220,132,155,219,101, 92,146, 21, - 19,208,138,242,110,110, 8, 26,162, 66,159,241, 46,163,235,172,248, 64, 36, 38,187,205, 41,109,249, 82,133, 47, 9,242, 12, 90, - 70,178,136, 10,199,129,187, 64,112, 24, 24,110,159,112,112, 58, 88,182,232, 11,197,248,197,146,102,166, 57, 68,129,154,205, 23, -244,224, 96,131, 17,161,101, 83,110,154, 27, 28, 97, 64, 77,228, 33,127,118, 4,197,163,165,218,101, 34,112,112, 45,156,199,148, - 80,106,129,237, 58,208,169,166,212,161,100, 56,118, 49,149, 71, 93, 62, 45, 9,125, 54, 48,155,209,107, 73, 71,149, 74,203,204, -234,231,245,192,129, 17, 11, 86, 51,178, 86, 56, 20, 56, 52, 47,225,160,122, 40, 70, 77,194,137,116,200,130,144, 81, 31, 28, 53, -244,192,251,148,124, 68, 61, 22, 61,158, 1,201,117,234,144,225,153, 81,199,133, 65,246, 93,223,111, 86,223,117, 20, 24, 42, 54, - 37,209,122, 50, 24,211,145,108,111, 86,248,123, 29,141, 86,225, 44, 40,207, 56,181, 33,121,200, 93,240,193, 16,106, 81, 30, 7, - 46, 64, 67,122,193, 31, 91,192,233, 54, 12,164, 32, 76,145,228,123,120,243,104, 14,138,125,121,223,149, 28,240, 94,168, 39,159, - 94,118,157,222,118, 42,233, 74, 16, 96,137,134,159,137,231,193,197,200,146,141, 25,132, 36,138,144,168, 21, 18, 20,135,106,128, - 77,224,179,191,214, 61, 66,160, 65, 88,159,129, 8, 8,148,128,215, 58,122, 65,161, 50, 5, 24, 17, 66, 35,128, 91,199, 36,131, -244,245, 32, 39,169,173,141,142, 4,100, 61,100, 5,235,239, 96,128, 6,156, 29,116,159,225,100, 26,152,182,229, 9,141,144, 46, - 23,231, 66, 23,210,174,164,131,200, 63,163, 1,201, 32,156, 54, 68,189,246,148,211, 8, 55, 97, 48, 98,216, 91,148,152, 11, 85, -224,124,206, 90, 44, 19, 32, 63,141,156,227, 65, 16, 5, 18, 92, 65,207,101, 73,143,198,180,144,118,194, 40,190, 11, 97,200,162, -213,239,196, 89, 60,211, 8,140, 14, 36,141, 50,204,128, 90, 13, 54, 36,191, 56, 84, 33,152,247,155, 7,243,113,141,193, 92,161, -106,166,197, 15, 71,135,115, 62, 47,169,204, 80, 16,207, 17, 75, 19, 9, 23, 20,204, 90, 97,130,208,193, 51,172,194,249, 52, 73, - 58, 63,234,111, 35, 96, 64, 48,167,153,240, 15,126,250, 51, 78,208,170,174,109,161,249, 83,206,235, 77,117, 56, 87,122, 15, 7, -116, 84, 21,102,183,150, 78, 9,159, 53, 30, 15,217, 23, 93,212,251,220, 66,175, 53,246, 9, 26,225, 19, 16,172, 86,248,108, 16, - 14,129, 12,236,132,142,118,170,123,147,156, 51,105,145,133,194,116, 12, 39, 35,162, 82,224,162, 96,129,241,153, 16,137,201,171, - 33,254,252,233,179,208,200, 58,148, 0,247, 12, 40,194, 36,100,181, 51,128, 11, 73, 79,201,112,238, 3, 36,101,103,240, 39,156, - 17, 8,106, 12,144,188,217, 76, 8, 23,228,160, 22,140,253, 70, 96, 1, 82, 29, 50,220,118,183,205, 18, 86, 96, 71, 36, 97, 17, - 9, 9, 92, 15, 51,148,243, 86,202, 43,174, 83,135, 34, 38,194,207,100,214, 60, 26,115, 38, 57,157, 60, 4,174, 66, 9, 91,220, - 3,118,185,192,150,104,246, 26,152, 41,251,206,135,112, 46, 40,161, 21,178,212, 58, 31,233, 90, 2,149,203,165,171,114,217,179, -178,189, 90,148, 43,181, 99,103,205, 65, 72, 26,203,240,231, 16, 20,150,209,146, 22,102,122, 8,122,113,243, 70, 40, 73,232,174, -105, 92, 65,118,248,233,197,133,156,158, 39,228,157, 77,117,108,154,224,116,187, 99,105, 35,224,154, 90,158,243,188,102,121, 40, - 25, 20, 75, 69,169, 55, 52,163, 31, 77,153, 73,195,166, 6, 83,189,199,153, 33,247, 4,159, 15,148,119,255,188, 43,191,253,193, -182,156, 92,246,229,176,222, 19,147,116,236,115, 6,135,214,208, 9, 99, 13, 17,240, 37,210,152,221, 14, 7, 62, 36, 33, 49, 27, - 42,252, 1,165, 4,185, 15,250, 6,103,103, 7, 26,164, 66,214, 85, 19, 7,117,158,119,118,119,165,163,239,255,229,211,199, 60, - 63, 59,235,171, 28,207, 11,103, 13, 50, 33,206, 18,130, 42, 4,181,120,198,162, 6, 38, 77, 77,144,130,208,254,160,190, 62,156, - 36,228,217,233, 64, 38, 15,159,177, 75,165,195, 89,247, 41, 38, 11, 64, 46,211, 9, 19,106,158, 59,160, 25,252, 35, 4,128, 44, -193,128,151,133,105,117, 83,151, 40, 78,244, 89,239,238,109,186,164, 39, 98, 43,189, 88,181,217,178,155, 33, 90,182,115,165,173, -248,204, 13, 89,146,170,182,177, 14,219,229, 9,155,230,198,137,149,115,190, 19,236, 88, 46, 65,159,149, 45, 59, 30, 21, 74, 69, -198,154, 57,252, 30,213,197, 88, 16,161,205, 53,226,109,236,209,172,137,200,151,199,133,176,110,228, 45,199,106,246,128,223, 13, -178,244, 22,157, 19,178,116,192, 25,112,100, 84, 42,246,173, 99,122,178,191,209,177,112, 1,175, 19, 58,214, 75,102, 19, 62,157, - 15,198, 60, 90,155,112,109, 43,132, 14, 97,244, 82,161, 49,116, 25, 12, 24,160,136,216, 17,149,166,230,227, 90,221,214,128, 65, - 26, 4,125,105,183,134,122,136, 3,119,241, 1, 57,163,254, 61,130,113, 79,134, 61,127, 99, 66,170,144,181, 69,240,227,217,197, -184,187,164,231,152,166, 28,184, 16, 26, 28,163, 7,121, 45,167,207, 17, 12,244,162,117,244, 98, 76,168, 50,213,154,142,164,173, - 70,109,107,187, 38,190, 6, 42, 89,205, 22, 2,189,164, 89,113,146,144, 48,176, 48, 70, 46, 67, 13,168, 33,237,132, 58,198,122, - 73,114, 52,138,147,176,133, 14,231,134,189,176, 9, 7,113,155, 84,154,235, 93, 43,103, 99,100,184,211,166,139,140, 17,157, 22, - 53, 11, 2,148, 28,132, 61,240,179,249,170, 88,147,174,239,207,219, 21,170,197,180, 27,241, 24,138, 48, 92, 52, 71,115,152, 57, -159, 69, 43,142,240, 2,219, 96, 76,168, 14, 8,166, 73, 56, 6, 63, 28, 39,178,201,157,205, 42,133, 46, 50,105,223,193,246,193, -196,161, 27,200,140,194,201,123,161,254,158, 83,191,210,247,236,233,103,118,250, 30, 91,112, 80,178,200, 34,120, 83,199,139,245, - 71, 31, 53, 84, 9,124, 13, 2, 91,122, 22, 70, 84, 8,155,200,121,203,101,233, 80,188,242,168, 43,173,235, 91,206,208,152, 35, -208, 73,232, 97,239,245,133,245, 62,100,162,126,218,233, 15,224, 25,166,186,207,137,116,158,203,128,103,240, 49, 40, 35,140, 66, - 41, 82, 17,184, 94,225,179,198, 64,179,150,148,220, 95,203,177, 6, 10,131,118,119, 53, 35,107,197, 4,127,120,194,189,215, 64, - 65,143,203, 70, 33,201,178, 79,123,236,211,169,130, 7,146, 8,209, 2,124, 86, 30,196,172,156, 67,143, 16, 84, 6, 62,212, 46, - 82, 68, 28,230,218, 47,179, 22, 51,252, 30,122,101,167,250,121,157, 33,203, 42,108,235, 10, 38,174, 69, 19, 16,182,103,231,189, -169,194,144, 42,225,216,222, 97, 73,193, 36, 22, 98,133,248, 60, 4, 82,252, 67,232, 53, 34,120,212,127, 2, 45, 67,192,214,210, -172, 7,132,170,237,245, 77, 62,251,235,163, 67,205,240, 70,212,118,192,119,149, 10, 37, 50,193, 49,188, 37, 77, 68,101,204,243, -143,246, 35,244, 50,187, 1, 29,174, 75,100, 93, 29, 58, 6,144,116,123, 93, 26,124, 24,126, 4, 88, 52,192,198,159,139,177, 32, - 59,131, 1, 7,252,187,138,246,170, 4,218,228,158,201,238,230, 46, 59, 74, 30, 62,123, 65, 71,142,239, 7, 42,128, 59,140, 12, - 29,119, 33, 25, 6, 37,168,167, 95, 77, 38,172,177, 2, 61, 66,230,142,231, 65, 79,184,131,104,157,227,169,148,203,116, 56, 67, -168,149,205,214,199,120,132,171, 51,212, 40, 23, 57,169,107,214,105, 83, 60, 19,229, 92,222,217,136, 80,213, 11,118,198,248, 19, -215, 54,150, 48, 68, 1,177,206, 25,205, 18,113,126, 18, 80,175, 75, 26,158,115,252,147, 11,239, 57,116,106,202,193, 38, 1,123, -139,211, 96,249,235, 30, 98,141,219,189, 17,109, 78, 33,151, 33, 87,225,162,217,100,253, 24,207, 57, 24, 38,229,221,157,117,249, -214,189,169,124,246,170, 33, 13, 13, 8,193, 51, 98,137, 42,112,164, 79,135,156, 77,195,114,134, 80, 60, 11,129, 78,187, 61,164, - 3, 4, 34,129, 30,246, 85, 64,218,250,189, 79,222, 92,209,193, 90, 34,125, 25,102,176,104,113, 67,208,130,210, 6,218,196, 16, - 16,100,210, 21, 57, 24,105,240,174,123, 95,202, 78,165, 53,152,242, 78, 29, 95,246,164, 51, 28,115, 47,129,120,240, 76, 97, 77, -213, 17, 66,184, 6, 44,255,205, 90,153, 51,223, 79,234,199,220,111,112, 78, 92,251,160,200,230,218, 58,131,174,179,211, 35,162, - 43, 9, 47, 73,244, 17,200, 45,130,169,167, 47, 94, 16,221, 90, 93, 89,209,204,186, 64, 20, 1,178,191,184, 47, 32, 1,102, 72, - 50, 12,164,172,123,156, 73,101,233,144,225, 27,114,121,140, 84,205,203,106,165, 40,199, 23,231,114,244,209, 35, 61,199,235,206, -222, 4, 96,197, 39, 52, 24,210, 44,125,234, 18, 30,153,245,255,139,235, 38, 66, 59, 35,202,134, 64,123,146,122,207,208,121, 52, - 30,246,100,115,198,121,137,138,103, 69,230, 98,184,228,103,241,103, 49,205,142, 40,137,120, 70,144,155, 65,223,179, 49,210,214, - 68,100, 87,227, 48,185, 92, 19, 23, 91,136,119, 97, 47, 16, 60,123,201,188, 35,214, 70,116, 69, 88,219,143, 78,183,140,229,234, - 38,214,120, 99,150, 71, 48,203,210, 92,146,152,191,183,215, 40,116,118, 78, 24,212,117,244,199, 67, 58, 71, 56,231, 49,157,230, - 52,148,163,180, 60,104,148,121, 4,123, 19,211,128, 0, 99,129, 41,158,205,179,190, 22,104,150, 59,132,225,210, 13, 34,103,100, - 20, 80,179, 23,170, 86, 25,221,128,219,123, 27,132,145, 16,121, 50,138, 14, 13,244,112,226, 28, 12,224, 76,206, 99, 23,151, 85, - 79,167, 9,102, 31, 8, 8,242, 20,180, 81,131, 5, 50,134,102,236,193, 8,179,156,245,208,246,135,108, 15,201, 97,168,130,117, -145, 46,235,188,168,179, 33, 51, 74,186,236, 3,194, 19, 56, 16, 27,106,240, 3, 13, 18, 48, 88,129,211,134, 60, 76,117, 42,136, -209, 72,116,164,134, 19,207,214,108, 13,121, 33, 65,124,169,104, 36, 61, 26, 14, 41, 44, 83, 40,149, 37, 95,204, 49, 91, 77,154, -128, 19,236, 74,201, 52,107,110,224, 8,180,174,220,112, 2, 48,232, 57,150, 17, 9,165,239, 72, 28, 94, 56, 76, 37,218,159,237, -135,173, 64,253,192, 18,209,192,243,143,194,231, 79,133,181, 45, 24, 85, 27,238, 18, 53,173, 97,244,199,129,203, 70, 66,137, 69, -252, 92,167,235, 51,144, 64,229, 3, 34, 60,183,214, 80, 43, 52, 36, 23, 18,194, 54, 14, 29,216, 63,190,226,230,195,192, 33,163, - 46,103, 61, 70,204,142,167,228, 46, 56,146,121, 67, 57, 72,159,127, 6, 77,233,163,186, 58,237,238,152,237, 45,126, 73,141, 99, -198,163, 1,133, 19,113,235,238, 90, 1, 53,206, 17,127, 8, 35,103,165,204,159, 1,236, 55,144,250,101, 75,210,183,203, 12, 14, - 51, 97,151, 3,102,101,226,215,203, 5, 35, 7,103, 61,214, 22, 83, 41,117, 18,186,197, 57, 61, 75,158,158, 45,156, 17, 14, 16, - 65, 80, 22, 26, 2, 31,208,188, 46,225,230, 74,129, 98, 50,237,142, 58,190, 81, 66, 51,160,158,108,151, 86, 52, 8, 53,114, 90, - 31,202, 74,165, 32, 0, 94,178, 9, 97,112, 1,150,110,175, 63, 38,116, 9,126, 70,165,148,148,129, 58,130,130, 38,125, 59,165, -148,131,230,245,185,128, 32,140,245,123,219, 64,140, 80,190,240, 64, 10,213, 44,120, 8, 84, 98, 72,242, 39, 50,250, 58, 52,193, -145,138, 0,186,212,247, 42,102, 53,251,132, 75, 9,203, 11,172,175,195, 57,133,253,186,184, 35,108,157, 75, 38, 72,158, 2,215, - 99, 93, 35,250,214,144,106, 44,110,255, 38,142,119, 48,232, 79,228,240,240,165,252,252,209,107,221, 43, 53,225, 65,130,243,199, - 1,199,194,200,195,112, 0,149, 65,169, 7, 25, 55, 32,112,161,160,147,208,121,230,114, 69,182,183,249,190, 43,137, 33,176,218, -221,216, 32,220,141,172,203,134,123,134,224, 6, 60, 24, 47, 52, 96, 51,174,195, 36,236, 44, 0,107,254, 31,253,202,251, 82,219, -221,150, 63,249,254, 39, 68, 82, 30, 62,123, 54, 71,122, 0,233,207,234,242,142,181,236,202, 7, 8, 12,134,212, 92,119, 14, 22, - 65, 6,200,120,168,181,151,212,142,224,236,193,240,163,172, 1,166, 60,117, 48, 18, 18, 34, 82,174, 71, 29,250, 23,168, 79, 54, -187, 3, 66,205,197,130, 19,147, 74,171,189, 65,217,136,208,172,254, 12,178,216,169,174,215, 88,157, 93,207, 79,200, 3,117, 48, -248,110, 4,117,105,117,144,112,166, 16, 31,242,194,105, 96,179, 86,163,126,167,175,206,188, 79, 52, 15,247, 21,123,159, 73,162, -117,172,175,235,216,214, 12, 26, 83,201, 10,174,164,226,143,228,162, 81,215,128, 54, 35,183, 86,203,242,245, 7,106, 11, 18, 64, -236, 38,242, 55,159, 0,162,183, 60, 99,176, 89, 44,127,133,112, 59,214,223,233, 38,184, 54, 44,232,170,131,131,132,233,108,185, -100,160,142,209, 17,236,198, 64, 34, 97, 59, 89, 30,112,193, 11,238, 21, 56, 13, 21,117,252, 14, 97, 78, 18,210,135, 77,133,224, - 10,120, 66, 87,186, 54,224, 44, 33,241,186,189, 81,150,135,175, 46,201, 67,192,175, 67, 67, 96,183, 8, 94,143, 38, 62,234,212, -129,186,246,135, 78,255,159, 45,133,211,128,200,210,246,230, 22,229,131, 27, 23,135,156, 30, 87, 41, 85,153,161,231,212, 46,190, -120,253,138, 65, 34,150, 0,246, 25, 8, 2, 52, 16,122,236,157,159, 50, 41, 75, 18,162, 71,194,213,215,239,188,197,225, 46, 18, -246,240, 27,227,120, 60,176,103,224, 52, 77,113,191,244,187,209, 6,124,133,128,116,165,194,182, 68, 71, 6,157, 48, 48, 64,185, -161,144, 47,144,220,137,224, 5, 42,157, 44,251,120,174,157,143,173,167,158,171,139, 91,207, 44,134, 39,205, 68,183,102,245,242, -232, 96, 42, 19, 87,211,156,253,187,179,205,102, 73,166, 53, 18, 32, 68, 6,111,153,136,110,199,181, 49,211, 33, 71, 7,162,103, -173,246, 64, 3,234,180, 44, 88,108,209,177,215,209,225, 85,215, 70, 96, 45,120,102,118, 38,179, 38, 55, 72,104,199,149, 52,231, - 29,180,145,209,225, 38, 50,251, 61,217, 56, 63,102,228, 13, 3,131,195, 60, 33,169, 6, 34,252, 1, 35, 38,168,174,193,209,163, -102,131, 11,136, 75,229,249, 99, 18, 55,216, 46,132, 62,109,182,187,168,209,107,250,236,229,206,103, 22, 35, 88, 97, 36,175,134, -104,205,209,207,202,163,151, 83, 8,129, 34,114,151,112,102,112, 69,163,176,223,248,213, 34, 13, 3,106, 72, 56, 20,232, 83,189, -188,108,235, 38, 38, 66, 85, 41,205, 54,218,150,132, 62, 10,254, 35, 35,128,225, 7, 12, 59,117, 83,140,212, 43,176, 53, 14,151, - 22,193, 7,122,223,127,241,172, 45,171,250, 14,117,205,176, 42,106,237,199,157,177, 84,171, 73, 66,246,156,220,117,112,161,145, - 41,144, 9,144,139, 82,242,181,183, 86, 24,100,212, 86,242, 60,200,157,182, 26,193, 66,158,223, 11, 15,150,207,105,198,148, 72, -147,244, 82,111,244,165,170,217,168,225, 36,186,132,232,254,202, 90, 46, 36,101,153, 48, 11,159,117,167,137,101, 93,171,165, 27, -208,155,104, 22,220,243, 67,141,122,247,115,222,212,132,210,135, 46, 51,196, 5, 34, 4, 45, 51, 34, 85,136,207, 32,186, 15, 33, -220, 20, 9, 62,200,126,117,207,198, 78, 4, 35, 65, 41, 78, 23, 33, 2,210,228, 57, 15,215,176, 63, 10, 88,167, 2, 68,202,131, - 22, 76, 73, 18, 12,144,225,240,222,120, 66,191, 30, 56,206, 3,156, 72,128, 73, 89, 40,189,120, 97,253,216,250, 60,188,157,161, - 35,244, 36, 45, 58, 6,220,155,160,173, 67, 8, 23,122,114, 60,242,229,188,209,147, 59,235,121, 13, 98, 82,106,168,199, 82,208, -115, 95, 43,232,119,249, 3,121, 11,253,200, 33,243,219, 69,230, 19, 26, 5, 4,237, 8, 36,132,117,242,153, 68,177, 9,251,159, -125, 57,208,236,252,240,120,172, 70, 43, 77,195,113,209,153,106,240,233, 90,161, 32,159,128, 44,191, 62,113,142,117, 20,120,204, - 12,240,116,229,124,138,231,252,234, 74, 51,178,114, 78,130,130, 83,168, 98,192, 5,146, 38,166, 11, 34, 56, 53, 35, 26,209, 41, - 74, 31,186,134,103,231,106,236,213, 58, 5,181,188, 12, 52,155, 71,173,121,168,191, 87, 2, 99,216, 56,227,137, 53,154, 96, 58, - 87,218, 57,120,114, 48,172, 93,160,120,128,221,129,122,233, 58, 21,117,157,123,250,193, 96, 44,247, 70,208,165, 31,201,103,143, - 31,137,209,224,225,170,141,154,100,150,136,217,241,217, 57, 25,200,184,230, 40,137, 20, 53, 91,194,179,158,156, 93, 56, 12,131, -227, 86, 39,122,102,171,172, 35, 55,218,109, 58, 81,231,252, 83,114,119,103, 75,206, 26, 13, 50,190, 17,132, 90,158, 37,127,209, -211, 31,146, 47,103,119,158, 2, 84,226, 72, 63,127,250,119,159,200,221,237,115,217,221,222,148, 35,205,182, 2, 58,170,192,245, -247,227,121,198, 35, 7, 27,235,115, 34, 8, 32,124,174,142, 90,194, 17,176,156,128,150,205,242,123, 88,131, 77, 77,185,191,112, -240,169,164, 67,244, 0,169,186,254,251, 41,201,184,224, 65, 84,113,129,244, 27,216, 58, 74,194,104,210,245,123,143,134,148, 45, -197, 80, 26, 19, 78,131,132,154, 27, 74, 71, 99,189,163,184, 67, 73, 12,242, 1, 18, 7,135, 63, 69, 7,204, 40,108,131,156, 58, -190, 5,116, 53,166,122,119,245,127,126, 34,195,210, 3, 96,211,124, 49, 35, 93,189,139, 19, 59,150, 65,167, 78, 88,122, 98, 29, - 76,140,121,239,227,244,216, 73, 13,251, 25,181, 49, 3,181, 9,129,252,242,131, 77,121,113,218,210,204,123,200,119, 0,178,143, -255,161, 62,141,245, 6,138, 1,164,100,107, 3, 2, 51,101,249,252,241, 99,215,102,233, 39, 24,196,190, 57,107, 73, 10,168, 75, -224,133, 19,213,210,108,177,203,102,179, 68, 76, 75, 32, 30,163, 31,223,115,165,133, 66, 38, 39,103,154, 61,231, 18,150,157, 13, - 64, 21,158, 31, 91, 89,211, 4, 4,182,118, 24,142, 65, 77,232, 63,119,115, 53, 66,255, 32,242,130,100,135,137,103, 64, 28,113, -111,225, 56, 55,214,183,228,226,252, 72, 46, 53, 96, 41,230, 93, 59,231,218,218, 26,145,192, 71, 79,159,240,192, 22, 50,233,185, -238, 0,208, 24,148,102, 73,154,213,125,202,232,179,228, 51, 25,233,117, 91,186, 7, 80, 5, 77, 59, 29,253,193,152,229, 52, 4, -109, 62, 53, 19,124,150,115, 17,176,192, 41,143,237,136, 73, 73,128, 86,189,139, 58, 19, 72,112, 57, 28,137,214, 77,201, 67, 66, - 55,133, 38, 94, 50,197,243,202, 50,170,204,164, 96, 77, 76, 58, 59, 38, 24,199, 22,105,111, 33,102, 53,159,209,225,205,117, 55, -102,243, 48,100, 89,157,243, 6,177, 23,107,174, 87,175,237, 13, 53,109, 74, 42, 79,220,160, 32, 8, 2, 45, 79,176,180, 54, 58, -175, 66, 98,127, 22, 27,250,100, 34, 99,199,151,213,202,162, 29, 80,215, 52,226, 35, 1,194, 44, 17,164, 22,160, 30,114, 13,164, -152,137, 7, 26, 73,162, 6, 11,193, 7, 74, 6,122, 46, 51,155, 76,156,214, 57,224,179, 53,181, 74,187,181, 52, 47, 4, 72, 91, - 70,163, 80,108,228,105,103, 36,167,151,125,217,168,169,129,152, 36, 66, 65, 17,143,151,227,139,167,103,136,199,228,183,126,253, - 29, 26, 18,235,245, 9, 23, 35, 2,199, 10, 78,116,227, 87,215, 82, 97, 93, 50,193,108,117,168, 25,202, 17, 33,196,128, 81, 30, - 14,196,233,229,144,189,150, 89,227, 19,206, 15,194, 44,119,134, 91,248,250,124,233,140, 19,125, 1,179, 20, 4, 62,100,165,168, -131, 83,139, 88,109, 69,181, 92,212,204,119, 72,214,103, 85, 51, 59,200, 44, 30, 99, 6,114, 38, 41, 59,155, 5,102,154,132,247, -144, 97,161, 30,220,234,107, 6, 55,101, 45,223,183,105,167,130, 37, 46, 3,184,179,183,226,212,242,194,225, 41,154, 59,139, 38, -140,204,234, 81,171,199, 93, 66,171, 31,178,231, 74, 46, 77, 71,131,212,170,128, 90,162,102,130,221,145,171, 13,227, 75, 89,119, -181,118, 46,151, 30, 24, 55, 97,204, 15, 29, 48, 97,220,144,216,134,195,132,192,133,156, 1,117,216, 5, 64,241,192,226, 3, 39, -216,192, 76, 9,196, 19, 68,207, 36, 25,186, 76, 31,151, 31, 57, 38, 56, 14, 48,116,168,229, 50,155,132, 60,227,200, 15,153,231, -128, 46, 51,178,189,230,133, 53, 76, 55,234,179, 3,163,161,151,175,215,110,170, 49, 27,176, 39,118, 37,159,112, 1, 32,164,123, -117, 67, 51,198, 57,183,148, 6, 63,247,110,149, 88, 55, 67, 75,209, 68, 29,102,202,239,202,121, 93,200,174, 79, 99,188, 47,186, - 42,230,252, 0, 87, 15,189,184,130, 30,193, 64,222,221,205, 81,213,236,106,226, 8,114,112, 55,129,239,120, 30, 48, 30,191,248, -242, 66,106,213,162,220,191, 91,115,193,104, 72,158,225, 88, 74, 73, 80, 22,248,224,188,199,232,245,157,237, 28,207, 92, 7,142, -222, 80, 62, 77, 51, 60, 32, 2, 78, 17, 17,123,211,211,165,235,219, 44, 89,233,154,148,235,251,164,165,175, 6, 24,226, 38,216, -231,151, 7,109,201,171, 83,221, 44, 76, 73,140, 68,112,214,209,140, 11,235,104, 39,104, 59,115,252,113,116,112,128,220,196, 90, - 52, 28,123, 56,122, 24,231, 26, 19,182,112,159, 32,239,137,125, 84,187,172,103, 4,227, 61,251,242,226,233, 23,114,166,239, 94, - 40,148,233,252,186,189,115,105, 52,155,236,203, 70, 28,181,181,182,170, 1,106,151,176, 40,235,164,200,130,213,169,161, 77, 11, -122,224,103,141,166,147,174,132, 46,130,126,239,198, 74,149,237,102, 24,208,225,148,246, 28, 17, 15,217,236, 76,169, 43, 21,150, -170, 38,126, 72, 94,149,153, 88, 70, 64, 57, 89, 24,169, 35, 13, 44, 2,113,202,123,211,145,107,159,195,103, 82, 99, 93,179, 97, -252,251,152, 51,189, 93,107, 28, 32, 90,103,128,157, 45,130, 96, 77, 32,174,211, 3,255,153,137,137,224, 89, 8,191,163, 47,154, -153, 95,146,200, 85, 65,207, 20,202, 83,245,171, 46,137, 92,169, 4,132, 92,134,204,122, 17,184, 77, 67,253,123,156,133, 49,103, -154, 27,214,152, 45,187, 52,220, 29, 71, 59, 46,230,202, 15,212, 62,180, 59,186,126, 22,130, 46, 61, 55,107, 2, 65,152, 6, 1, -233, 76, 81,157,140,171, 43, 15,198, 41,218,169, 66,113, 69,207, 87, 70, 38,253, 22,154,255,244,158, 20,244, 76,184,128,178, 63, -232,202,143,191, 56,146,111, 60,216,150, 15,223,189,171,217,189, 47,247,183,234,242, 87, 31,189,148,122, 87, 29, 87,210,241,116, -112,119, 74, 44, 21,232,174,250, 16, 1,202,201,254,233, 5, 3, 50,181,253,180, 5, 89, 48,239,123, 19, 87, 75, 14,220,187, 80, - 58,215, 56,248, 28,118, 14,179,212,209,174, 89,208, 53,174,104, 22,220,174,150,228,178, 30,206, 93,247,220,157,188,184, 66,144, -130,154,190, 35,255,162,180, 24,168, 45,110,107,128,210, 27,246,157,224,205, 52,173,246,109,202,242, 89,161, 84, 35, 1,237,249, -139, 39, 50,213, 0, 39,151,175, 18,113,221, 8,209,156,243,139, 51,106,180, 35,184,160, 58, 39, 2, 50,104, 32,248, 46,192,198, - 62,129,172,251,224,222, 91, 50, 29,246,228,104,208, 97,245,200,159, 76, 89, 42,162, 94, 6, 7, 43, 77,184,103, 96,173, 3, 45, -157, 53, 48, 19,105,212,119,223,217, 94,167,222, 62, 8,137, 77, 13, 92, 70, 68,199, 2,138, 0,193,130, 98, 54, 1,184, 5,199, -167, 87,124, 14, 92, 0,216, 17,218,191, 80, 74,124,238, 16,231,147, 46, 77,100,214,198,140,227,118,125, 88,138, 44,143,160, 88, -250, 17,187, 84,235,182,209,214,178,153, 83, 13,230, 19, 80,169,198,231,207,180, 30,102,179, 57, 34, 84,246, 96,140, 86,223, 84, - 68,225, 46, 70,145, 91,234, 48, 54,215,100,183,173,216,155,132,230,228, 90,218, 62,215, 30,113,227,116,147, 88,108, 24, 67,176, -101,133, 80,137,199, 94,237, 12,153,201, 30,179, 22,212,202,198,232, 55, 29, 3, 2,118,209,179, 13,135,220, 35, 66,236,141,157, -220, 35,220, 78,187,221, 1,150,202,108, 15,159, 11, 88,252,240,168, 37, 37, 61,152,193, 8,135,205,147, 6,218, 97,208, 51,190, -226, 28, 23, 46, 37, 14,135,203,210,199,252,255,235,213,188,164,223,246,228,188,173,198,103, 63,208,172, 33, 73, 22,106,227,178, - 37,187, 59, 85, 70,163,189, 78,139,136, 71, 50,149,156,183, 56, 77, 39, 14,166, 27,243,176,120,132,127, 26,237, 49, 71, 34,226, -125,144,209, 17,214, 70, 43, 93,119, 72,149,162, 59,187, 69,185,181, 85, 20,148,193,177,224,168,177,206, 88,142, 16,186, 1,132, -219,237, 88,169,173,150,244,253,211, 76, 39, 1,239,229, 74,185,176,165,194,177,152,199,250,174,232, 97,133, 52, 34, 46,206,134, -190, 67,179, 55, 97,166, 60, 64,139, 94,202,208,232,103,211, 66,146,141, 31, 18, 67, 80,207,153,132, 82,138,126, 88, 87,129, 51, -182,161,192, 15,102, 78,207,100, 68,109, 8,227, 67,115,199, 15, 97, 95,192,186,189,222,152,153, 58, 39,201, 97,144,132,117,226, - 62, 1,161,176, 4, 47, 26,190, 27, 44,226, 68, 48,118, 36,192, 16, 46,157, 13,187, 97,237, 30,149,231, 68,154,168, 76,116, 86, - 42,141,183,126, 89,179, 53, 96,157,127,109,165,196,190,210,158, 26, 51,156, 1,244,203,154,176,133,134,165, 7, 24,134, 84, 86, - 46, 71,105,169, 38,199,146, 93,205,235,115, 76,228,224,228, 74,238,110,230,152, 65, 57,205,243,192,189,159,254,255,118,167,175, -127,223,147,119,183,211,156,161, 13, 87,137,207, 2, 63, 96, 38, 92,180,161,123,112,103,119, 36,103, 26,224, 65,213,202,159,234, -185,178, 41,174,157, 13,137,105,142, 7,162,217, 74,115, 32,149,244,148,132,195,100,182,168,199,210,147, 91,181,172,180,199, 14, -125,152,134, 23,178, 51,242,228,228,234,138, 4,166,189,141,172,228,203, 73,142,218, 28,170,161,172,148,243, 52,126, 53, 61,211, - 5,111,194,243,129,118, 29,148,122,154,122,169, 87,178, 26,160,165,212,144, 77,157, 60,234, 80, 51, 35, 4, 42,169,144,209,139, - 0, 25,155,148,152,250, 51,181, 87,102, 41,199,199, 71,114,112,116,198,115, 34, 94, 94, 86,202, 5,102,168, 47,247, 95, 19, 81, - 64, 0,134,115,140,214,180,203,250, 5, 13, 33,157, 57,219,203, 18,122,119,106, 12, 86,207,155,173, 80,192, 72,232, 48,171, 48, -136, 23,151,115,189,192,153,234, 20,178, 9, 71, 18,195,222,213,220, 52, 44, 19, 25,104, 17,182, 9,229, 52, 19,171,150,212,233, -232, 25, 33,217,211,115, 51,220,145,205,163,118,139,192,193,112,150,253,132,226, 53,179,217, 8,188,123,190, 63,135,244, 1,185, -163, 76,128,239, 70,166, 6,116, 8,159, 1,117, 73, 24,103, 4,136,248, 61, 60, 51,218, 72, 49, 59, 29,176, 58, 62,231,172,222, -101, 0,130, 6, 17, 56,137,132,113, 1, 18,101,169, 17,176,195,210, 4, 99, 66,179,120,207, 73, 24,240, 97, 36,170, 27,229, 42, -204,226,249, 25, 99,200,167, 14,136,174,193, 94,121,185,156, 6,165, 87, 68, 36, 88,114, 68,199, 15, 96,125,160, 22,169,146,116, -160, 59,209,191,146,228,164,171, 54,174,204, 86, 93, 36, 25, 32,212,253,189, 58,189, 95,123,127, 79, 62,184, 85,148, 86,243, 82, -246,214, 74,186,119,125,135,126,232, 90,128, 64, 12, 69, 57,148,114,160,115,209,235,117,228,238,214,138,188,183,183, 42, 71,199, -135,178,127,214,147,219,219,121,217,219,173,241,119,192,237, 72,176,172,144,112,200,173,113,173,160,125,142,155,117,214, 28,229, - 61,212,228,241,127,152, 9,235,122,108, 84,242,210, 86,103,141, 51,130,250, 52, 7,227,164, 50, 84,198,235,143, 58, 28,151,139, -251,112,214,112, 76,254,221,157, 29,182,142, 61,125,242,133, 6, 52, 73, 34,124,171, 43, 21,201,228, 75,242,250,240,141,180,218, -109,174,125, 16,118,197,224, 94,224,140,246,250, 14, 89,193, 20, 56,140, 96, 15, 64,144, 46, 84,212, 38, 55,121,144,129,224,224, -153, 18,105, 55, 84,107, 54,167,128,164, 61,223, 57, 96, 23,140,187,137,109, 64,123,159,191, 60,213,128,216,181, 7, 99,106, 32, -206, 19,203, 96,214, 33, 65, 25, 13,214,129, 6,116, 58,135,161,244,247, 84, 3,106,136,208,164,216, 50,200, 0, 40, 17,182,166, -145,185, 34, 33,252, 30,159, 91,101,163,208,181,185,145, 91, 22, 78, 56, 51, 49, 77,231, 25,236, 62, 27,146, 18,109, 25,155, 3, -230,161, 88,205,100, 50, 9, 17, 12,143, 9,213,178,218,228, 92,214,194,216,175, 16,178,137,100,222,118,166,140, 97,151,134,193, -176,224, 31,239,203,143,185,241,200,159,132, 66,100,201,169,157,145, 61,194,154,175,134,148, 1, 72, 87, 32, 15, 37, 93, 91, 69, - 48, 52,236, 63,221, 66, 97, 81, 13,213,121,223,213,109, 65,144, 71,237,111, 56, 10,168,244, 6,184, 41,201,204, 4,178,175, 29, -169, 55,186,114,116, 62,116,132,171,161,102,243,103, 23,114,111,187,202, 75,146,211, 3, 53, 13, 12,225, 36, 56, 73,144,220, 0, -231, 56, 66,133,107,121, 89,171,230,228,178,231,201, 89, 91, 55, 94,179,191,157,213,140,116, 53,115, 30,214, 10,146,201, 25,146, -175, 96,196,225,224,167,214,193, 56,104,237,154, 12, 93, 77,241,236,178,175, 78,117,170,135, 82,141,157, 30, 98, 8, 64, 32,107, - 72,166,243, 28, 71,201,118, 10, 77,153,198,195,182, 46,106,150, 25,165,111, 82,234, 36,125,182, 92, 0,146, 10,208,162, 86,200, -203,184,221,211,231, 83, 7,134, 78, 1,100, 17,104, 67, 73,250,148, 92,108,235,165,202,103,115, 28, 22, 65,195,109, 92, 45, 28, -239,145,101, 95,117,154, 61,175,144,165, 77,234,229, 27,232,191,247,209,119,157,205, 18,178,197,214, 36, 66,178,159, 63,107,247, - 19, 19,246,103, 35, 96, 8,187, 4,124,151,137,121,172,213,154,185,113,101, 16, 2, 34,163,231, 4,115,112,153,219,189,169, 51, -242,229,180, 6, 43,142,133, 62, 25,250, 52,236, 99,136,180,120, 83,102,161, 65,216,247,233,133, 68, 37,200,137,166,192, 52,179, -161, 80,140, 93,204,176, 7,211, 26,151, 15,240, 58, 10,162, 36,193,235,250,156,214,251,204, 62,186,253, 49,215, 12,217,212, 74, - 49, 45,155, 91, 25, 89,205,107, 86, 23,244,213,112,102,228,238,122,158,209,109,107, 0,166,241,156,130,198, 44, 10,169,203,134, - 58,254,139,122,143, 93, 8, 83,253,142, 84,216,118,146,154, 17,248,117,167,183,212,169,175,215,138, 26, 92,244,217,121,129,242, - 14,244,220,215, 75, 8,250, 82, 44, 61,180, 53,115, 46,102,245, 28,174, 87,168,115,237,107, 70,249,222,219, 25,185,210, 12, 46, - 49, 29, 74,144, 42, 58,110,128, 26,145,177, 77,200, 73, 3,193, 70,155,202,116, 9, 13,107, 86,245, 76,175,169, 99, 7, 25, 80, -115, 75,221,195,172, 28,169,163,185, 80, 99,184,149, 83, 35,147,112, 76,100,171, 6,233,164,111, 41,109,185,146,135,179,204, 72, - 61,103,229,209,241,128,243, 8, 80, 27,220,170,229, 29, 58, 21, 18,178,120, 64,116,205, 47,207,206,228,251, 63,254,148, 26, 15, - 61, 4, 87, 83, 55,119, 26, 50,161, 56, 75, 80, 90,195,143, 15, 72, 98, 74,168,193,198, 4, 66,159, 83,196,242,106,212, 81, 54, -185,210,236,157,245, 79,240, 25, 80,246,210,204,238, 88, 51,116, 19,246,151, 3,190,132, 67,238,135,250,219, 56, 59,187, 91,155, - 97,118,228,218,235,172, 31,204, 21, 9, 29, 71, 99, 36,223,255,228, 75,189, 3, 30,247,113, 50, 14, 66,114,220,128,231, 12,159, - 1,103, 73,231, 26,248, 97, 43,171,117,162, 48, 83,167,195,143,231,133, 97, 31,133, 89, 60, 78,208,120,226, 72,118, 89, 56,168, -144, 20, 74, 62, 12, 52,217,115, 25,217, 89,175, 18,125, 25, 65, 65,175, 61,144,119,238,222,146,111,191,127, 95, 46,251,137,249, -116, 58, 54, 17,169, 29, 8, 52,251,129,182,125,127,210,225,144, 40,148,249,250,131, 30,109,211,140, 32,152, 72, 39,230,242,194, - 88, 7,144, 71, 38,128,255,217, 72,145, 32,212,141,125, 1,211, 29,236,236, 62,207, 54,156, 6,178,244, 36, 53,159, 77,183, 73, -254,205,112,132, 78,141, 33,247,231,103,143, 53, 32, 31,109,202,118,101, 67,138,197,129, 36, 53, 99, 70, 9, 6,223, 5,244,224, -205,233, 25,229,111, 17, 60, 1, 85,202,231, 82, 26, 0, 92,241,238,162, 21,236,229,193, 25,235,230, 41,174,139,149,205,181,154, -252,202,215, 63,100,208,245,252,197, 11,218, 70,244,131, 59, 14, 83,134,118, 44,145, 64, 32,148, 32,193, 15,107,129,214, 98, 40, -110, 2, 37, 75,178, 68, 90, 36,162, 2, 56, 27,252, 24,232, 76, 4,122, 97,135, 19, 79,118, 54,183, 56,176,230,252,252, 88, 74, - 80,105, 43,173,240,231,209,226,251,226,229, 11, 71, 74,134,230,193,192, 17,160, 97,143, 1, 41,227,255,131, 28, 90,204, 23,216, -229,228,233,218, 84,202, 53, 38, 0,224,115, 96, 47,146,105,143, 42,114, 16, 24,194,179,145,195,144, 76,206,213,210,188, 80,227, -221, 75,184, 78, 16,148, 70, 64,248,244, 79,155,124,198,153, 42, 40, 72,119,176, 95, 88,163,161,222,253,239,255,232,177,180, 91, -117,151, 84,194, 6,235,185,127,248,229, 27, 13, 96,167,174,174,159,118,112, 61,234,251,236,181,207,165, 29, 1, 59,157,114,154, - 30, 8,132, 80,247, 71,146,147,112,147,242,108,152, 40,197,187, 77,163,202,156, 50, 79,156,162,140,249,248,132,118, 27,203,232, -177, 86,105, 36, 16,122,183, 51,185, 68, 76,212,107, 62,123,195,134, 83, 24,205,191,105,232,140, 93,140,144,157, 73,221,154,136, -108,103,108,222, 68, 68,117,211, 46, 16, 11,107, 23, 79,155,132, 80, 3, 25,192,190,211,168, 77, 38, 28,100,238, 37,179,132,148, -174, 52,123, 90, 93, 95,151, 36,136,107,161,145,247, 67,125,119,107,176,112, 96,111, 58, 77,118, 2,196, 94, 98,174,115,221,211, -104,242,226,106,196,168, 50,165,118,224,251,159,156,201,163, 87,154,105,111,215,100, 15,164, 37, 50,205, 45, 97,207,132, 31,246, - 82, 7, 97,180,111, 93, 47,111, 50, 53, 97, 70,248,147, 79, 46, 88,147,221,170,130,173,115, 37,173,190, 51, 42,200, 72,243, 56, -164,201, 36, 47, 4, 72, 23, 9, 24,123, 53, 50,141,102, 79,170,122,105,222,121,123, 75, 90,234,232, 1, 49,253,230, 7, 27,242, -228,196,167, 19, 51,137,172, 26, 98, 44, 98,211,137,175, 96,224,131,113,245, 80,120, 25, 48,148, 81,227,193,225, 64, 22,140,250, - 82,183,211,101, 68,186,178,186,162,198, 56,144,173, 66,146, 70,200,215, 67,253, 96,115, 77,141,208, 68, 58,186, 6,187, 8, 34, -244, 66,163, 92,112,210,241, 9, 29,226,162, 34,120, 65,130,138,250, 91,161,152,117, 7,206, 10,117,174,173, 31,204,135, 15, 16, -246, 18,119,168,251,157, 54, 29, 89, 79, 29, 60,158, 13,181,114,212,198,199,168, 17,250, 14,161, 72,231,178,244,124, 64, 32, 78, - 47,250,154, 37,141,212,128, 23,213,248, 88, 18,232, 0,111,215, 10, 9, 53, 8,234, 52, 39,105, 74, 95,162,118,157, 52, 14, 98, - 22,182,139, 7,140,136,131,208,232, 99, 23,113,225, 92,187,142,149,231,251, 77,117,210,129,236,173,164,244,243,123, 12, 88,192, -120,191,108,140,194,203,231, 0, 32,100, 84, 48, 40,149, 66, 86,214,213,169,103,189,156, 67, 3,160, 86,182,145,151,207,246,219, -188, 24,197, 98,142, 53,224,153,102,121, 78,247,240,150,102,202, 56, 73, 83,187,208,107,103,137,194,179,225,196,166, 41,247,110, -123,189,196, 11, 12, 3,247,236,245,149,148, 31,148,100, 71, 29,113, 71, 13,247,225,105, 95,179,143,177, 6,114,154,105,233,158, -213,138, 8, 24, 71, 44, 27, 76,135,125, 18,225, 78, 19, 67,150, 66,122,166,160, 25, 63,136,148, 67,125, 30,140,153,156, 72,173, - 60, 80, 87,158,145,177,238,249,177,190,219,116,220, 97, 16, 87,206,142,228,243,179,174,188,179, 91, 37,243, 31, 76,107, 72,169, -122, 84,213,242,228,170, 55,113, 98, 41, 97,237,179,164, 65, 31,148,197, 70, 19, 39, 62,129, 12,252,135,159, 61,162, 40, 7,224, - 71, 56, 16,177, 5, 57, 61, 63, 39,188,190,183,181,195, 32,233,184,238, 68, 69,210, 97, 15,120, 81,179,203,225,196,193,222, 80, -102, 67,134, 2,231, 11,199,208, 33,251,220,205,188, 62,173,215,195,182, 60,189,199, 54,201,214, 67, 39,184, 3,103,154,146,123, -123,187,234,116, 46,244,115,202,226, 52,118,194,122,158, 62,107,171,231, 83,114, 25,142, 7, 42,118,112,174, 24, 43,137,207, 64, -118, 56, 13, 91, 12,135,193,104,214, 33,201,179, 54, 51, 57,126,216,103, 78,109,116,148,141, 66, 82,104, 50,225, 58, 45,240, 30, - 9,207, 11, 69,146,198, 60,231, 24, 6,243,173,183,118,228,222,206, 42,201,168,133,188,102,204, 70,215,185,154,151,127,244,155, -239,201,127,248, 59,223,144, 63,252,235, 87,242,240,243, 17, 3, 10,148, 38,136, 54, 76,199,116,194,200,236, 18, 9,199,118, 71, -112, 58, 28,104,144, 3,216,189,221,144,222,192, 57,124,160,102,112, 66,104,185,236,247,154, 84,157, 76,120, 5,233,250, 3,182, -123,141,186, 93,102, 56,104, 5, 76,121, 89, 62,111,189,217,209,247,244,152, 33, 7,211, 1,245,227,213,124,235, 59, 4,210,214, -187,248,108, 95,239,180,102,197,247,183, 86,101,255,164, 33,251,234,164, 18,155,154,132, 96,162, 90,185,236,218, 45,197,241, 94, - 96, 67, 51, 80,217, 12,146,156,210, 85,214, 51, 15,233, 91,168, 78,130, 99,128,201,109,144,240,125,185,127,202,192,105, 99,181, - 42, 27,107,107,204, 96, 81, 10,157,181, 99, 66, 68,171,219,115,153, 42, 68,158, 54, 42, 9,218,207,146,102,222, 29, 50,211,123, -180,189, 43,133, 12, 3,200, 98,165, 70,190,197,225,241,190,116,219, 93,118,240, 0, 90,223,217,218,230,144,154,131,195,125, 6, - 98,176,107, 54,228,103,160,196,129, 97, 54,135,231, 13,201,176, 36,146,145,180,245,217,178,230,153, 60, 21, 10,209,117,131, 86, -217,209, 80,239,169,174, 55, 18,145,166, 38,112,126, 40,172,196,119, 14, 7,176,192,137,130, 40,237,135,211,237, 16,204,136,175, - 65,245, 40,193,115, 53,155,237, 1,254,211, 8,226, 53, 35,167,173, 63, 98,151,133, 67, 34,129, 0,160,132,130,243,145,209, 64, -158,181,248,208,153,129,199, 65, 97, 36,142,210, 53,124, 63,114, 2, 52,192,197, 16, 39, 34, 65,128, 69,197,206,121, 66, 9,138, -120, 57,247, 7, 30, 6, 73,138, 33,191,196,145, 90,147,204,252, 17,152, 38, 34,138,162, 30,147, 24, 71,218,163,156, 50,128,238, -192, 5,198,220,239, 96, 38, 91, 27, 72,204,135,123,145,222,246,155,243,244, 69, 73,193, 44,164,182,103,217,253, 60,123, 15,229, -164,109,100,158,156,141, 76,139,164,100,123, 88, 67,211,128, 45,195, 31,193,166,218, 57, 12, 16,246,145,131,252,133,113,165,212, -248,237, 59,117,181, 16, 10, 38, 41, 38,188,212, 80, 49,179,198,101, 77,128,148, 81, 83,214,144, 64,141,164,102,103,123,105,217, -216,244,121,209,135, 35, 95, 94, 30,117,229,222,157, 77, 94,182, 68, 34, 57, 39,131, 0,102, 65,198,198, 17,141, 41,231,160,241, -208, 1, 24, 50,129,203, 16,235,237, 17,165,106,251,221,129, 19,121,208, 75,148,175,172, 73,169,182, 78, 3, 71, 72,112,226,178, -104, 68,242,247,238,104, 86,185,186, 74,167,220,190, 26, 74, 73, 95,110, 75, 47,195,211,134,149,150, 58,169,247, 55,212,248,168, -161,223,222,210,104, 52,227,156, 27, 5,241,211,249,249, 0,122,182,175,193,144, 36, 19,161,232,138, 83,200, 35, 64,175, 27,253, -236,162, 71, 70, 49, 18, 16, 63,108,105,130, 60,226, 0,208,191, 30,240,103,175, 47,229,232,188,195,136, 29,207,136, 67, 94, 44, -229,101,125,163, 66,132,194, 11,213,203, 92, 59,148, 43,121,224,192, 76,216,214,229,145, 97,155,128,174, 54,167, 39, 45, 6,206, - 88,146,177, 38,100,105,207,178,118, 36,221, 83, 93,199,170, 26, 69,192,190,119, 55,146,108,239,226, 16, 76,100,249,122, 96, 55, - 43, 25, 57,109, 14,164, 51, 73, 56, 40, 20,123, 96,166,100,225,226, 38, 81, 77,206, 75,211,121,162, 85,200,103,111,124,210,205, - 49, 54,174, 29,197,132,157, 12, 24,106,209,188,234,146,224,149, 74,186,115,193, 73,119,104,103,210,247, 45, 39, 80, 91,155,200, - 16, 65, 71,194,245,104, 35, 8,216,172,104,246,130,190, 85, 68,238,104,209,225, 57,114,172,233, 9, 4,128,134, 66, 3,223,167, -200,135, 94,240,176,205,204, 11,123,169, 61,227,180,220,177,100, 24, 64,129, 33, 25,216, 3,180,251, 92, 1, 5,200,167,101, 85, -179, 89,167,132, 88,117, 25, 61,152,197,154,117, 77,212, 80,193, 9,118, 45, 32,207, 4,117,210,167, 96, 90,235, 89, 93,219, 90, -225,180,194,173, 66,192, 41,126,251, 23, 35,105,246, 12, 85, 17,239,149,245,140,246, 27,242,242,205, 21,131,155,119,239,148,168, -109,144,207,105,166, 2, 78, 9,122,157,195,251,144, 8,134,116, 60,102,232,233, 26, 7,114,222,118,206, 21, 48,231,203,253, 55, - 26,116,212,165, 84,172,176,206,250,234,232,136,236,118,212, 64, 81, 39, 7, 41, 9,114,171, 16,228,216, 94,219,145, 79, 30, 63, -149, 23, 71,199,204, 72,112,183, 42, 26,192,238,110,110,240,172,160,173, 13,107,129,169, 94,248,189,170, 26,101, 84,236,177,207, - 8, 26, 97, 92,207,175, 58, 82,213,223,193,120, 84, 12, 70,129, 81,124,173,142,232,211,167,199,242,193,189, 77,194,208, 63,124, -120, 44,127,244,253, 47,164,144, 10,228, 31,254,210, 45, 57,107,180, 72, 2, 68,246, 8,148, 98,166,244, 56, 27,133,137,189,194, -254,207, 36,125,157,212,243,148,142, 63, 17,102, 18,184,135,179, 33, 31,201, 80, 96,199,114,223,156,156,234,230, 74, 78,238,108, -169,227, 41,229, 24, 76,129, 28, 85, 46,107,144, 7,148, 78,207,206, 6, 16, 61,253,156,127,242,157, 45,249,147, 63, 11,136, 88, - 77, 38, 33,113,210, 0,113, 88, 85,219, 48, 38,178,129, 82, 9,136,171, 72, 78, 96, 87,134,152,240,232,187,206, 24, 58,207, 65, -155,129,102,189,175,129, 5,248, 31,134, 45, 3, 68,144, 80, 46,193,121,158,234, 93, 64,137, 16, 93, 28, 32,141,162,141,106,164, -206,103,164,182,168,144, 97, 39,181,248,169, 2,219,232, 32,197,219, 87,123,120,114, 17,200,206,198,154, 60,184,255, 22,187, 42, -142,207, 78,101,107,125,147,114,208,128,156, 49,154, 19,104,100, 54, 91, 12,249, 4, 5, 61, 47,200,146,179, 82, 74,105,144, 49, -186,144,114,169, 38,199,167, 13, 13, 58,251,154, 96, 20,156, 19, 4,113, 81,223,179,219, 25,184, 14, 7, 31, 45,172,186,142,234, - 88,241,221,224, 3, 13,201, 95, 48,122,143, 70, 46, 67, 78,184, 14,134, 86, 55,144,149,149,117,218,145,231, 47,190,100,119, 79, -185,186, 74,101,184,187,119,246, 56, 8,235, 82,159, 51, 49,203, 63,131, 89, 6, 26, 48,160, 11, 76, 78,238,110,175, 83,119, 62, -175,119, 37,147, 24,203,189,183,191, 73,206,209,133, 6,141,208,131,255,213,175,239,201,255,254, 93,135,108,116,245,108,160, 85, - 15,122, 2,150,156,159,177,107, 13, 37,100,237, 80, 19,240,125,240,217, 8,130, 49,100, 40, 55, 9,216,117,195,132, 38,112,124, - 46,170, 44,218,177,147,217,213, 59, 9, 13,120, 24,225,161,254, 30, 74,166,249, 76, 49,108, 33,246,200, 1,154, 65,227, 64, 1, - 38, 68,129, 18,146,156,186, 36, 17,237,209,240, 85,176,133,116,210, 18,146,127, 67,177, 43,190,173, 31,132,186, 18, 78,244,138, -106,158,198,241, 63, 12,215,211, 35,143,138, 50,212, 16, 86,130,134, 1,202, 3,233,244,156, 71,210,208,224, 27,140,125,188,195, - 68,131,252, 32, 64,103,152,126, 94, 38, 25,198,203,174,160,225,148, 63, 23,207,187,144,162,142, 12,188, 12,179,127,179, 68,147, -183, 17, 18,128, 93, 30, 51, 21, 33,209,205, 90,243,168,253,222, 31, 47, 10,253,174,113,222,101,219,248, 79, 74,179, 3,144, 43, -218, 26,137, 13,123, 45, 89,215,204,199,203, 84, 66,118,161,147,234,156, 73,156, 82,111, 59,225, 96, 70,100,147,233,108, 86, 13, -137,209,131, 84, 34,233, 6,117, 28,244, 77,191, 57,185, 34,147,189,213, 26,205,123, 30,177,169, 20,134, 9,117,186,193,171,249, -250,157,178, 60, 63,215, 72, 40, 3,135,226, 83, 15,222,179, 78,161,202, 98,212, 33,234, 80, 32,177, 76,213,208,131,180,148,119, - 25, 7,140, 7, 28, 15,216,210,155, 59,107,154,113, 56, 2, 13,218, 75,208,206,146, 12,220,212,247,141, 98, 74,222,174,234,103, -105,228,140,122,217,213,196,145,213, 0,225,152, 16, 66,194,198, 67, 40,134, 35, 96, 65,238,130, 19,166,196,160,139,214, 38, 67, -244,109, 59,105,200,182, 70,241,143,206, 93,107, 28,106,145,234,194,229,229,197, 64, 62,126,114,169, 89,118, 65,246,110,131,144, - 50,150,253,253,134, 20,122,152,201,174,153,129,153, 50, 16, 42, 21,146,172,173, 35, 19, 34, 65, 69, 13,145, 81,167, 60,214,108, -181,167,159,219,133,160,196, 52,212,186,159, 78, 92,240, 96,237, 92,222,211,145,109,156,210, 25,106,104, 80,227,218,222, 72, 17, -225, 32,195, 86, 92,171, 27, 46, 61, 34, 90, 76,115,106,118,144,237, 4,122, 88,115, 36, 14, 34,160, 33, 91, 24,239, 23,104, 80, -228,249,106, 60,176,183, 41,183, 79,122, 24,239,221, 42,203,160,235, 49,176,131,227,152,134, 4,159,213,106,158, 78, 29, 78, 30, -194, 64,248, 70, 72,255,142,212,169, 1,225,129,176,204,110,222,137,187, 92,249, 73,201, 20,211,178,157,247,229,181, 6, 68,175, - 53,200,115,162, 29, 78,121, 11,235,113,123,187, 68,185, 87,150, 37, 66,201, 91,142,116, 12, 28, 26,128, 59,157, 74,186, 81,171, -248,187, 91, 36, 56,170,145, 84, 47,137, 96, 10,207, 50,235,127,165,152, 82,216, 83, 10,246, 55,137, 90,112,132, 99, 75, 67,208, -132, 48,142,160,214, 91, 96,246,119,127,213, 35,177,232,103, 95, 52,229,209,203,150,220,189,191, 37,123,107,105,201,219,174, 52, - 80,247,213,247,134,246, 54,122,230,119,214, 10,186, 46, 99, 71,132, 97,180, 46,204,158, 38, 67, 53, 74,255, 31, 87,239, 21,100, - 75,118, 93,137,237,204,235,189, 43,111,159, 55,237,209,104,120, 16, 32, 9, 18, 36,130,193,209, 80,102, 66,154, 80,140, 38,164, - 95,125,234, 75, 63, 19,250,213,191, 20,138,152, 96, 40,244,163, 24,141,134, 49, 65, 98,104, 68, 82, 3, 96, 64, 52,218,160, 13, -250,181,121,254,189,122,229,235,222,186,117,189,203,155,153,218,107,237,115, 11, 61,234,142,138,126, 93,239,154,204,147,231,108, -187,246, 90,250,223,246, 64, 3, 12, 53,222,159, 61,218,151, 79, 30, 62, 35,187,226, 96, 98, 68, 52, 24, 85,195, 44, 52, 50, 57, -148,128,235,229,170,205, 42,107,224,209, 81,231,239,147,171,222,104,119,241,157,112,142, 83,119,156, 97, 36,224,248, 33,140, 2, - 4, 58, 12, 17, 12, 13,248,214,119,214, 86, 56, 66, 4,174,110, 56, 89,252,185, 94, 46,202,254,233, 25,203,161, 48, 86,159, 61, - 59, 35, 48,237, 31,125,251,101,217, 63,239,201,223,188,251, 80, 3,207, 54, 25, 25,235, 37, 13,184,250, 35,142, 35,213, 10,101, - 58, 17,138, 37,199,222,111,180,221,227,136,215,100, 24, 14,235,119, 3, 36,199, 61,233,144,158,152,141, 15,157,102,192,130, 46, - 24,239, 69,118,138,123,233,141, 35,121,184,223,228, 24, 22, 8,137, 10, 32,168,210, 63,220,123,124, 44, 99,205, 68,115,106,148, - 81,113, 66,112,250,159,254,232, 59, 28,231, 58,210,224, 56,157,188,202,178,243,247, 94,191, 37, 75,101,163,134,197,185,122,167, - 23,200, 49, 29,127,204,202, 2,198, 50,105,236, 33,118, 51,113,204,144,168, 60, 65, 81,203,163,140,159, 58,188,136,188, 4,200, -190,192,171, 63, 13,155,146, 79,168, 99, 67, 31,223,233,215, 15,230,232, 21,231,168, 72,182, 32, 18,154,169,241,246,116,239, 97, - 58,166,221,133,140,105,139,213, 2, 0,198,150,212,169, 47, 85,235,198,131, 62, 51, 58, 89, 10, 72,207, 35,130, 70,201, 76, 48, - 15,216, 82,170,149, 10, 50, 29,142,228,228,160, 37,255,244, 63,255, 79,164,211, 58,146, 71,154,177, 23,244,187, 80,149, 33,240, -111,100, 96, 71, 4,128, 96,157, 3,157, 42, 2, 99,216,218, 76, 2,128, 75,159,247, 8, 39,134, 64, 54, 95, 94,209,245,235,202, -233,233, 49,207, 14, 2,247,157,237,109,202,244,158, 28, 60, 35,177,151,239,250,175,224,153, 55,172,133, 48, 80, 66,133, 9,207, -112,117,101, 67, 78, 78, 62,213,100, 66, 19, 34,175, 67,250,215,121,144,228,179,235,245,251,242, 79,254,240,150,124,231,244, 92, -254,234, 63, 28, 75, 81,131, 27, 4,163,179,208,174,193,156,144, 1,153,201,188, 7,251, 19,154,182, 61,124, 75,174, 80, 20,159, - 78,126,206,223, 1, 67, 69,202,227, 9,196,184,198,172, 86,180, 47,218,146, 87, 35, 6,249,215,112,110, 83, 18,168, 4,166,194, - 69, 53,200,252, 28,112, 26, 54, 82,105,213,206,121,210, 50,231,128, 21, 28,171,114, 0,195,185,160, 36,102,165,207, 95, 40, 25, -199, 14, 8,108,201, 35, 42,159, 36, 95,154, 4,174, 18,128,224,113, 96, 90, 17, 97,200,117,100, 11,139, 45,155, 25,247,253,168, -223,214,189,131,106, 67, 70, 70,231, 29, 61, 67, 51, 89, 89,206,200,250,149, 42, 63, 99,255,177, 6, 65,221,136,204,136,226, 91, - 96, 1, 64, 32, 41,188,161, 40, 73,177, 51,207,164,204, 9,172,181, 74,135, 1,249,189,255, 8,244, 23,127, 89,183, 53,254,255, -227,241,191, 68, 75,131, 51, 94, 83,219,249,248,164, 39,229, 74,233, 18,212,224,233,195, 70,175, 32, 29,146,104, 85,122, 93,227, - 96,158, 32,192, 77,171, 35,156, 59,234, 75,160,210, 99, 67, 71, 39,156,166, 30, 30,156,169,149, 37, 29,251, 25,162, 71, 56, 19, - 27,173,104, 84,210,140,106,209,191,197,184, 92,210,105,152, 7, 24,141,152, 7, 44,211,101,245,198, 54,106, 25, 57,237,140,200, -238, 54,195,194,250, 89,205,202, 83, 44, 27,178,140,131,168, 79, 13,195,113,107, 40,171,137, 33, 29,212,106, 57,146,107,235,101, -121,112,168, 14,107,230,145,205, 14,125,205,136,155, 13,122,190,161, 60, 61, 25, 72, 48,205,202,221, 53,147,134,245,213,161, 94, - 91,201,201, 39, 71, 83,150,107, 29,115, 45,175, 21,221,250,193,196, 4, 68,224,116,179,122, 15,187, 43,101,205,206,231,226, 72, -206, 52,155, 72,243,115, 96,168, 70,152, 73, 13,140,220,197, 11,103,100, 77,123,235,141,109,169, 87,205, 32, 20,203, 5, 41, 20, - 50,156, 93, 69,196,143, 94, 12, 12, 31,198, 82,146,212, 7,159, 25,171,152,126,111,129,253, 45, 24,246,145, 94, 47, 36,105,210, - 98, 84,240,214,118, 64,139,132,101,179,192,250,228, 28,163, 66, 48,198,138, 71,200,140, 27, 69, 78,244,227, 50, 40, 89,199, 38, - 60, 49, 10,244,217,165,178,122, 29,122, 56,134,122,240,212,152, 65,171,121,145, 1,199,142,123, 29,129,209, 68,159,111,163, 38, -151, 35,114, 0,139,205,146, 57, 18, 71, 96, 98, 2,243,231,217,165,178,172, 55,132,229,174,163,214, 88,238, 61,186,224,104, 28, - 28, 8,156, 77, 94,215, 32,235, 16,212, 56, 28,197,164, 59,144, 40,231, 63,105,169,179, 25, 93,162,196, 69,140,149,107,181,158, -163,116, 45, 68, 51, 18, 41, 55, 21, 17,217, 56,221,130, 40, 42,118, 7, 3,255,223,208, 12, 7, 6,160, 55,154,177,108,111,212, -140,118,152, 61,199, 4, 23,147,111, 94, 88,249,193, 62,128, 33,192,167, 13, 70,129, 20,146,115, 34,156,199,193, 80,110,173, 44, - 75,115,146,210,128, 99, 42,245,149,138,220,209,160,180, 16,106, 68,238,231,165,162,207,239, 43,101, 99, 61,140, 28,187, 25,246, - 55,141, 68,232, 84,248,116,109,122,227, 57, 57, 16,112,240, 14, 47,132,220,227, 47,142, 78, 52, 43,171,178,234,112,222, 25,234, -115,238,176,231,140,253, 2, 80, 25, 24,226,144,117,214,202, 21, 58, 14, 32,166,129, 30,199,189,195,225,207, 28,179, 23,246,254, -212,105, 48, 28,183,206, 73, 92, 66,131,174,239,199,153,130,118,246, 92, 51,118, 84, 47, 86,107, 21,249,228,217, 1,185,216, 55, -117,111,183, 52, 75,234,234,243, 94,169, 86,229,191,255,147, 31,201,211,227,190,252,248,237, 79,228,168,217,101, 27, 6,129,192, -179, 35, 83,191,171,215,171,242,202,107,119,229,172,221,145, 81,111, 32,253,206,128, 21, 1,236, 81,172,107, 49,151,189,156,113, - 63,212,140,133,204,113,151,212,190, 30, 29,128,217, 24,163,224,101,146,160,129, 64,163,106, 34, 42, 47, 78,206, 72, 40,115,231, -122,157,122,239,152, 56,121,164,193, 70, 71,215,234,206,230,170,124,248,171, 71,146,187,106,253,242,173,186, 47, 39,167,231,156, -108, 0, 85,105, 95, 29,221,137,102,146,215,116,227,133,217, 4, 71, 39,129,171,129, 99,128,137, 30, 33, 99,247, 44,195, 13,166, - 67, 6, 37, 57,224,105, 90,194, 18, 56,246,121, 50,157,100,230, 8,105,233, 80,207, 34,236, 14,234,116,197,114,137,140,117, 30, -185,232, 35,242,173,147, 65, 79, 29, 87, 42,132, 17,118,154, 2,186,238, 84,158, 36,102, 97,126, 73, 50,244,244,217, 19,249,253, -239,255, 46,199,109, 87,150,234,148, 62,133,147, 10,103,186,246,154,129,230,242, 21,217, 2,246, 8, 36, 95,186,126,125,117, 12, -211,105,143,251,233,218,141,151,228,248,236,194, 90, 95,177,173, 23,174, 1,213, 20,128,148,179, 57, 79,202,249, 28,249,198,209, - 87, 78,171, 67,233, 30, 25, 69,119,165, 92,147,245,141,109, 57, 61,120,168,207,234, 92,182,214,174,106, 98,149,150, 90, 99,137, -147, 68,123, 79,238,179,124,140,247, 33, 24, 15, 64,247, 28,206,233, 52, 16,176,231,115,105, 50,114,122,115, 13,110,130, 21,249, -250, 27, 47,203,177,174,107,214,175, 82, 59, 62,140, 82,210,108, 94,200,137,238,185,127,243,227,148,238,133,145, 12,251, 29,241, - 55, 54,216, 15, 79,120,158,163,114,246,137,181, 33, 89, 25,238, 33,229,179,162,133,202, 90,194,177,170,161, 90,100, 68, 68, 38, -122, 15, 91,106,114,192, 88,219,169, 52, 91,167,178,210, 88,230,115, 49,241, 38, 43,213, 7,243,224, 55,122, 17,226, 95,242,192, - 91,171,208, 72, 96, 72,132, 20, 27, 95, 9,103,221, 67,167,171, 16,187,170,132, 38,103,216,183, 11,252,135, 1,133, 45,240, 76, - 56, 77,137,197, 24, 93,232,218,161,196, 9,129,239, 2, 73, 71, 96,215,145,116,114,223, 32, 43, 82,171, 37,205,246, 76,206, 58, - 19, 6,156,128,112, 20,171, 89,121,240,196, 68,113,154,205,129, 77,109,144, 15,198, 18,198, 5,127, 5,169,145, 57,246,103, 28, - 36, 9,242, 54,168,221,212, 96,215, 24,251,140,155, 2,173,130,148,155,124,241,190,100, 47,191,156,241,199,174,101,145,172, 37, - 71, 82,206,152,243,157,184,158, 6, 74, 28,112,134, 40,249,129, 57, 13,219, 27,229, 27,225,120,146,149,138,233,194, 99, 19,183, -160, 98,214,220, 74, 2, 32,110, 49,229, 52, 95, 74,122,224,162, 73, 87,114,169,130,100, 48, 79,169,239,197,204,250, 72,179,149, -181,122,202,202, 94, 97,124,201,111, 59,210, 44,115, 48,213, 27,203, 22,229,103, 79, 32,221,154,151,185,238,186, 70, 30, 89,117, - 36,173,190, 30, 62, 4, 20,136,190, 53,210, 67,143,171, 10, 9, 68,144,123,104,198,245,230,205,140, 70,165,158, 60,218, 15, 41, -159,154,136, 48,183,155, 97,166, 10, 54,165,243,142,102, 41,231,190,188,177,161, 81,114,106,162, 6,222, 39,169,195, 79, 62, 62, - 83,103,149,149,171, 27, 53,211,246,141, 77,204, 4, 27,116,164,166,255,137, 90,230,230,249, 72,182,116, 9,190,117,179, 33, 15, - 79,213,129,104,132,141,251, 6, 38, 1, 32,184,179,238, 80,138,217,148,149,207,232,156,230,140,192,234,101,115,250,150,213, 68, -178,177, 90,228,218, 97, 29,131,153,199,210,119,103, 8, 70,184, 41,163,197,179,110,192, 17,193,245,114,138, 6, 12,127,158,131, - 15,156,133, 85,155, 3,166, 19,153,219,252,117, 48, 11, 46,251, 87, 62, 40, 54,213, 1, 15,177, 81,208,134, 38,240,205,156, 97, -188,144, 87, 69,212,138,153,254,164, 16, 52, 52,199,251,231,134,208, 78, 17,208, 34, 6,164,138, 60, 2,134, 48,134,147, 8,205, - 80,135, 96, 46, 3, 47, 63,179,194, 49,213,194, 44,108, 6,121,144,199,210, 25,248,202, 83,137, 52, 3,190, 96, 94, 0, 34, 65, - 51,159, 17, 9,119,196,145,146, 96, 99, 94, 0,157,126, 62,100, 75, 6,134, 6,251, 8, 27, 18, 7,113,238,212,192, 46, 41, 87, - 9,164, 51, 74, 73, 70,185, 98, 64,205, 69,127, 41,114, 35, 90,227,153,207, 32, 7,217, 98,114,209, 38,114,125,169,200, 81,192, -162,101, 52,231,120, 35, 50,173, 64, 90,106,184,164, 4,176, 75,130,215, 50,212,108,253,160, 53, 81,131,152,148,151,175, 85,164, - 24,117, 56,102,213, 87,163,131, 89,106, 0,192,252, 56,116,200,148,196,101, 87, 11,231, 4,223,136,235,168, 21,242,114,162, 25, -199, 79, 62,252,140, 4, 38,208, 3, 0,225, 82,145,172,122, 35, 43,151, 67, 48, 72,159, 89, 85,157, 49, 12,100,200, 49,173, 80, -250,154,101,161,212,186,177,186, 42,159, 63,122,196,125, 56, 84,163,140,158,248,214,218,154, 3, 72, 89,153,222, 42, 24,214,219, -203, 80, 67,220,151, 71, 47,246,136,159,128,222, 65,206,149, 10,183, 52,123,255,206, 87, 94,227,244, 5,198, 67,127,247,141,187, - 50,212,235,249,159,254,244,223,170,163, 31,187,209,160,152,217, 97, 62,211,144,111,191,254,154,220,127,178, 71, 67,210,168,150, - 72,251,153,230,100, 76,154,253,206, 96, 30, 94,246,211, 81, 45,233,141,199,102, 28,225,184,211, 9,167,232, 22,240, 90,147,139, -204, 6, 83, 9, 9,147, 97,246,196,158, 23,232,148, 67,221, 27, 99,128, 44,179, 5,121,113,124, 33, 25, 53,146, 40, 47,195, 1, -126,114,127, 79,214,150, 74,116,194, 24,119, 60, 82,167, 28,196, 83, 78,199,128,230, 25, 34, 34,155, 26,100, 63,120,214, 36,184, - 50,229,148, 0, 25,132, 59,246, 64,246, 85,243, 73, 82, 92,195,233,164,242, 9, 78,142,248,169,156,196, 36,240,177,210,125,210, - 1,170, 38,179, 62,121, 21, 64,158,149, 70,212,142, 10,140, 31,113,116, 16,206, 47,226,126, 11,169,160, 71,157, 1,144,195,128, - 90, 23,227,165, 34, 4, 57, 86, 43, 53,102,238, 9,175,194,214, 20,170, 49, 50, 31, 73,183,115,162,103, 40, 43, 95,187,187,198, - 74,217,115, 77, 48,122,186,231,118,214,182,228,226,228,153,120,209,182, 92,191,113,157,148,208, 54, 81,227, 17, 99,129,189,134, - 74, 8, 70,206,242,137, 57, 3, 98,236,193,147,222,136, 45,178,107, 87,111, 16, 68,122,170,153, 56, 0,177,235,203,107, 82, 91, - 89,146,108,169, 38, 23,237, 35, 57, 62,216, 35,144,153,242,168, 44,211,179,201,168, 1, 76,153, 25,115, 81, 19,141, 90,181, 46, -104,197,102,217,167, 86, 91, 28,102,228,214,213,170,140, 70,192, 41,152,253,156,207,243, 2, 31, 6,219,133,207,185,123,109, 69, -202, 5,216, 94,223,245,150,147,151, 65, 52, 19, 15, 4,246,228, 42,137,156,224,143,163,125,197,249,198,121,159, 99,180,111,198, -236, 56,214, 96, 98, 62, 27,210,102, 12, 90, 45,201,232,243, 74,179,109, 19,112,198, 31, 65, 64, 86, 29,233, 69,171,205,192, 44, -225, 24, 75,243,122,214,112, 45,115, 74, 46, 39, 73,194,196,182,196,196,184, 20,112, 14, 22, 14, 29,118,198,215,235, 9,125,187, -134, 36,177, 31, 22, 16, 24,171,157, 92, 10, 42, 49,195, 71,192,231,219, 84, 75,180,232,113, 47,202,221, 81,236, 42, 18, 17,171, -145,231, 61, 59, 23,189, 81, 36,103,103, 67,105,181, 38,191,225,193, 96,240,103, 0, 59,252,119,238,116, 37,224,251, 96,235,166, -174, 90,190, 72, 66, 76,253,205,218, 0,214,146, 77, 48, 24,128,179, 39, 0, 22,108,133, 0, 6,130,243, 97, 49, 18,154, 77, 27, -163, 42,156,250,238, 86,154,101,164,195,254,156,101, 47,148,211, 65, 74,224,115,222, 59, 98, 41, 29,116,137,136, 26,176,161, 17, -192, 70,209,111,244,211,113,124, 22,243,163,198,254,101,162, 28,236, 69, 0,140, 18,106, 68,167, 27, 42, 89, 88,210,236, 53, 36, - 21, 37,102,145,227, 82,196, 89, 81,207,137,114,192, 80, 15,135,224,208,173, 75,182,144, 35,192, 12,139,218,200,123,178,147,211, -205,172,239,171, 64, 65, 44, 76,112,222,188,169,175,157,233,231, 38, 66,139,148, 49, 18, 53, 31, 4,114,126, 18, 73,115,160, 63, -205, 83,249,147,175, 86,229, 72,207,237,243,238,156, 44, 90, 59, 87,182,100,171,145,148,213,124,192,209, 58,248,187, 79,247, 59, -242,151,239, 28,114,211,174,213,178,178,189, 82,112, 35, 84,214,139,134, 28,237,206, 90, 73, 62,121,112, 38, 21,144, 86, 36,192, - 5, 63, 34,202, 30,216,132,233,168,207, 82, 24,254,229,193,163,202,155,190, 63, 99,165,216,245,106,134,165,100,180, 37,108, 67, - 24, 56, 36,165,145,113, 87, 55,192,121,199,198,140, 82,217,153, 92,223,206,105,224,227, 73,179, 59,209,195,174,107, 17, 78, 88, - 57,161,232,134, 68,108, 81,160,175,227,115,206,221, 74, 79, 36,108, 65,201,137,211, 1,117,121,120,172,238, 31,138,122,186,225, - 86,179,158,172,150,146,114,216,117, 36, 47,152,199,189, 84, 12,178, 22, 74,187, 63,145,193,204, 35,203, 21, 42, 11, 69,125,214, - 31,126,126, 40,119,175, 55, 88,242,135,225,100,194,224, 54, 38, 52,103, 9,174,137,108, 66, 0,129,193, 32,176,181,130,241, 26, - 65,213, 70,230, 60,192,200, 40,163, 82,138,227, 74,236,155,169,129,234,161,218,147,140,136, 71,216,220,170, 74, 67,157,235, 82, -201,170, 12, 8,218,154,173,161, 58,148, 54,199,114,190,249,234,154,148, 50, 37, 86, 29,184,114, 14, 89,159,116,188,239,204,214, - 49, 7, 13,167, 26,218,250,160,220, 23,198,114, 9, 86, 90,144,173,120,151,236,126,134,253,152, 76, 48, 30, 20,211, 88,131,139, - 0,212,184,208,188, 70,123,163,158,143,101, 31, 0,156,160, 39, 19,253,239,217, 64,157,136, 6, 86,245, 74,222,130, 42, 71, 17, -204,202,136, 19,156,161, 81,136,128, 78,239,233,115,119,101, 97, 53,232, 8,114,234,200, 58,244,123,143,245,207, 99,231,144,129, - 86, 47,171, 67, 7,107, 28,208,210,113,116, 44, 75,245,134,171,164, 37,216, 75,140, 98,251, 30,244,209,107, 26, 84, 31,106,118, -139, 64,120,185, 94,167, 24,136,105, 2,204,232,204,216, 63,198,136, 16,218, 79,154,237, 36,213, 8,110,174, 46,201,119, 95,191, -205,107, 67,239, 30,165,120,148, 38, 79,218, 61,217, 89,173,201,159,124,231, 43,242,158, 58,206,191,255,248, 1,101, 60,191,167, -175,253,209,239,126, 67,207, 79, 32, 75,106, 88,201,186, 54,155, 59,198, 73, 3, 3,194,130, 38,124, 39,118, 4,167,174,191,219, -108,212,104,168, 56,103,173,215, 14,188, 4,108, 4,128, 85, 16,248,192,250, 3,184,151, 39, 51, 28,176, 53, 35, 3, 40, 81,178, - 53,228, 56, 22, 28,112,235,188, 39,235, 43, 21,121,250,180, 35,141, 90, 81, 86,234,101,130, 45, 15, 79,219, 36, 92,249,226,225, -115,205, 60,215, 41, 54,130,231,120,128, 32, 64, 63,167, 86,206, 49, 16,197,184, 41,159,121, 50,226,158, 48,176,105,104, 60, 7, - 32, 58, 1,209, 82, 63,228,159, 3,111,198,246, 4,106,120,137,216, 16,227,216,147,222,112, 74,146, 44,246, 99,129,162,206, 37, -200, 82,136,253,197, 6, 18, 9,123,226, 75,160,224, 20,117,241,200,218,143, 8,100,150, 27, 13, 94, 19,250,194, 36,229,209, 51, -184,189, 92,144,167,195,148, 85,137, 18, 3,121,126,220,149, 98,177, 32,181, 82, 70,230,227,132,188,244,242, 43, 82,173,229, 57, -217,176,190,181, 43,205,211, 35, 61,119,214, 14, 69,229, 10,235, 93, 66, 96,162, 54, 4,180,179, 88,227,153, 38, 36, 0, 40,215, -107,187,250,220, 81,165,184,144, 55,191,250, 10, 9,165, 34,181,193,153, 66, 93,206,154, 39, 50, 30,245, 25,160, 99, 41,102,142, -179, 12,109,128, 76, 26, 18,210, 83,125, 93, 89,202,245,101, 89, 94, 42,147,150, 23,142,162,164,246,163, 59, 0,182, 67,215, 34, -167,201,144,218,163, 79, 30,189, 96,101, 5,130, 56,143,143, 58,242, 95,255,240,170,126,198,166,252,217,255,251, 88,157,239,220, -152,244, 60, 59,151, 28,185,117, 26, 1, 36, 38,115,124, 35,115,167,110, 8, 63, 18,184,177, 57, 95,131, 52,156,197,233,164,175, -231, 81,147, 23, 61, 27, 83,245, 11,157, 78,135,129, 44,168,152,225,128, 59,160,206,141, 50, 12,188, 19,180, 39, 33, 19,199, 84, - 26, 85,160, 20, 91, 91, 9,183, 55, 71,131,174,156,158, 60,103,159, 62,233, 0,112,158, 94,247, 82,189, 40,245,245,151, 28, 26, - 63,102, 27,216,254,153, 95,250,180,200,113, 7,100, 93, 9,220,216, 85, 35,135, 35,138,216, 10,102,251, 47,229, 49, 65,129, 94, - 0, 90, 83,253,145,141,187, 98, 29,158, 31, 15, 25,200, 47,148, 30,237, 28,135,174,140,110, 32, 66, 92,167,241,120, 69,108,145, - 46, 84,216, 22,224,246,144, 85,112, 27,113,132, 15, 64,133,200, 19,239,146,122,218,254, 60, 55,217, 99,207,198,186,147,174,178, -147,140,138,158,220,122,185, 44,185,167, 67, 2, 35,122,179,136, 76, 64, 8, 98, 33,122, 48,131,226,151,103,243,159,139,204,228, -203, 34, 36, 17,153,177,244,128,140,251,242,237,235,121,121,118,145,208, 0, 1, 8,216, 57,231, 76,171, 85,148, 47, 49, 95,171, -198,187,160, 7, 91, 29,227,195,233,144,229, 82,244,167,193, 37,238,163,111,173,198,187,154,207,208, 80, 32, 82, 69,169,102, 71, - 51,227,219, 53, 53,170,205,174,252,217,135, 39,236,215,162,219, 5,210,152,215,119, 42,236,187, 36,226,185, 17,154,232,218, 78, - 91,158,156,118, 52, 99, 95, 74,201,187, 29,163, 56,125,115,195,151,191,123,251,137, 58,158,152,194, 43,215,151,214,228,163,227, - 41,123, 85,234, 79,228,167,239, 31,179, 66, 1, 17,134,191,253,229,115,249,199,191,115,131, 64, 43, 3, 99,133,140,150,214,235, -121,121,243,238,138, 92,128,143,218,131,128, 77,134, 45,132, 70, 37, 75, 57, 67,148,244, 39,250,160,174,175,151, 76, 34, 21,229, - 44,189,249,191,126,255,133,116,218,105,249,254, 87,243,204,230, 13,105, 26, 90,118, 60,155, 80, 99,254,228,124, 32,109,189,214, -155,155,105,185,117,189, 40,216, 35,147,105,210, 70,221,244,181, 85, 61,204, 65,202,232,225, 39, 94,142, 15, 87,196, 69,157,112, -106, 25, 95,131,128,169, 20,138,190,108,109,136,220, 63,136,136,220,157,234,193, 94, 85,107,213,211,131, 83, 45,101,137, 94,231, - 70,250,210, 44, 5,174, 21,109, 0,148,228,209,215, 7,167, 57, 56, 10,160, 89,207,153, 80, 16,185, 76,125,246,185, 16, 37,154, -108,161, 26,170, 82,142,189,247,141,138, 26,177,106, 78, 62,122, 50, 34,114,149,125, 48,189, 39, 4,110,120, 38, 40,201,205,117, -239,244, 96, 4, 57,128,111,228, 54, 23, 99,140,255,232,186,174,151,233, 8,111,173,169,105, 85, 67, 51, 85,163,242,206, 7,135, -154,161,105,182,124, 52,148,240,182, 26, 29, 15,142,214, 64, 80, 9,167, 93,157,242,211,172, 38, 5,212,242, 54,128, 35, 12,116, -129,108,111,142,146,119, 62,115, 56,145,200, 1,101,204, 9, 65,199, 96, 52, 2,158, 96,198,234, 75, 87, 51,213,245,122,130,213, - 7,140, 47, 1,151,121,112,218,147,243,243,177,204, 86,117,239, 66, 25,207, 79, 17, 49, 31,187, 8,123, 58, 55, 7, 78, 42,106, -142, 84, 58,166,122, 16,230,244,251,242,151,191,252,216, 0,163, 32, 87,201,229,120,144, 81,222,133,161,131,243,169, 87,202, 28, -241,131, 67, 7,138, 29,253,180, 86,231,130,189,116,148,109,171, 24, 61, 42, 96, 68, 50, 43, 75,149,170,241,138,187,209,180,154, -102,129,120, 54,152, 77, 70,201, 26,227,101,224, 70, 71, 86, 14,208, 31,162,122,202, 95,114, 6, 60, 45,121,125,253, 82,185, 32, -112,119,141,162, 26,109,117,230,231, 26, 28,252,249, 79,127, 37,167,221,129, 20,212, 80,255,163,111,188, 42,119,174,108,200, 55, -127,235,171,242, 98, 56,145,243,123, 15, 73,199, 11, 33,159, 12,133,232,103, 18,129,158,153,170, 41, 41,222,111, 14,149, 16,135, -170,173,151, 75,134,175, 88,244,211, 89,233, 89,101, 2, 16, 80,244, 66,237, 10,131, 65,115, 26,211,169,169,172, 5, 28,229,131, -170,161,190, 31, 1,178,174, 81,251,188,203,242, 38, 40,129,203, 5,168,151, 25,122, 26,146,156,232,185,162, 45, 3, 70,202,144, -244,186, 25,106,132,175, 47,151,169,150,133,224, 6, 61,203, 68,228, 57,164,125,146,149,140, 20,201, 97,192, 21,156, 33, 65, 11, - 72, 83, 48,251,158,211, 12, 28,108,211,193, 80, 40,125, 26, 39, 98, 42,187, 77, 28,234, 58,197, 64, 60, 71,144, 39,104,166, 83, - 73, 4, 37, 17, 41, 65, 11,154,229, 6,243,169,209, 10, 75, 78,131, 27,107, 69,148, 53,248,130,128, 11,197,131, 80,185,210, 0, - 42,151, 52, 5,197,104, 2,204,199, 68,158,159,118, 37, 15,240,164,190,127,125,117,131,213,190,195,230, 80,191,115, 44,149,250, -140, 1, 41, 4,122,194,216, 50,200,136, 65,188, 85,252,150,151, 54,244,239,198,156,238, 41, 53,174,243,249,215,235, 53,125,206, -183, 37, 87, 66, 10,218,147,253,115,117, 82,195, 83,158,155,116,190,164,193,201, 72, 70,157, 46,131,108, 4, 80,100,223, 99,181, - 4,207, 35, 67,161, 38,172,251,149,141,134, 92,221,200,203, 69,103, 44,167, 77, 61,243,201, 18,215,187,168,193, 71,175,255, 88, -247,231,136,163,115,216,143,255,234,111, 62, 37, 94,229,160, 61, 33,241, 20,213,243, 28, 86,155, 65, 55,156, 97,104, 85, 79,164, -126,176, 87, 28,109,228,125, 37, 89, 29, 49,153, 98, 8,105,169, 63, 24,163,162,129, 64, 53,144, 98,182, 34, 37, 13, 6,123,234, -156,251,131,115,182, 17,170,249, 80, 42, 57, 77, 72,226, 20,155, 58, 64,203, 35, 99, 95,224,204,176,199, 32,197, 59,209, 32, 6, -184, 38, 40,242,193,167,130,140,172, 90,173,176, 42,128,140,254,162,125,166,223,145, 34, 43, 41,170, 66,105,125,222, 28, 1, 68, -229, 41, 90, 32,217,231,156,252,192,216, 40, 41,140,163,145, 28, 31, 93, 48, 8, 97,114,171,207,165, 92,174,104, 18, 58, 98,162, -130,117, 76,164, 50,180,203,228,125,153, 91, 34, 20, 57,109, 13,207, 85, 19, 57, 1,228,156, 58, 43,166,177,189, 38,118,127,127, - 89, 87,244,253, 47,143,206,155,120, 89,210,210,176, 48,252,146, 4,118,104, 99, 40, 11, 41,104, 40, 22, 18, 12,136, 12, 23, 51, -213,235,187, 89,201, 23,102,242,226, 36,148,158,110,190,147,238, 76, 55,163,149, 86,187,211,190,147,244, 12, 47, 75,160,151,227, -125,164, 98, 12,229,180,213,147, 63,186,147,149,168,234,201, 23, 7, 93, 82,113,214, 82, 86, 6,173,232,115, 72,231,113, 49,234, - 60,117, 97,159, 39,141,175, 23, 96, 29,140,133,245,103, 89,246,244,210, 14,232, 80,203,121,242,242,146,200,114, 89,183,144,102, -172,109, 53,192,127,245,225,169, 62,248, 57,213,195,126,244,221,146,108,169, 3,133,243, 4,184,204, 7,215, 51,156, 41, 22, 7, -101, 10, 93,148,183, 94, 47,203, 92, 51,230,147,139,145, 60,217, 59,101,214,137,135,253, 83,189, 6, 80, 48,162,223,142,205,117, -214, 26,177,119, 5,123,245,120,255, 66,254,246,221, 23,242,163,111, 93,225,198, 36, 1,220,220,122, 46,175, 92, 91,146, 51,205, - 58, 65, 65, 15,150,167, 61,125,223,118, 38,150, 91,119,234,106,108, 35,249,249, 23,109,205,234,115,242,242,110,158,179,253, 40, -239,126,250,240, 84, 55, 91, 74,190,114,123,149, 61, 43,244,207,169,222,133,185,114, 32,139, 51,160,243, 44,201,217,249,137, 12, - 70, 62, 51,254,181,106, 74,114, 60,112, 30,169,119, 1,192,163,216,169, 62,179,141,122,206, 84,138, 34,131,200,145,172,198, 79, -202,103, 7, 19,121,171,174,209,124, 70,179,186,130,102,137, 35,145,171, 75,190,188,180, 26,201,253, 61,141,236,211,136,234,244, - 32, 77,130,255,136,195, 24,217,246,170, 58,229,238,196,103,239, 11,165,156, 72,141,226,171, 55,235, 22,185, 70, 86,225, 8,157, -200, 12,199,149,244, 53, 69, 53,180,221,161,209,142,230,171,232,231, 38,165, 51,156,235,225, 79,202, 31,253,246,174,113,183, 35, -138,173, 22, 13, 60, 41, 19, 39,159,154,112,224, 54,227, 95, 70, 9,245,228, 76,179,198, 90, 77, 80,101, 12,144,161, 78, 3,215, -143,247,152,173, 67, 60, 3,198, 14, 7, 73,146, 89,215,239,119, 2, 76,177,127,217,195, 53, 3,104, 64,201,134,222, 19,184, 10, - 80,186,155,133,129, 27,217, 9, 57,143, 12,206,132,182,254,156,169, 49,106,233, 51, 4,174, 67,252,162,190,223, 14, 26,132, 50, - 48, 18,231,187, 81,150, 3,189,190,227,246,140,184, 2,181, 49,140,156,205, 65,199, 78,227,222,215,251, 8, 76,148, 5,243,231, - 23, 23,100, 42,131,128, 7,162,123,100,173,195, 89,207,230,117, 33,243,154,201, 49,171, 61, 62,111, 89,133,202, 55, 32, 17, 12, - 3,250,212, 4,196,169,193,107,182,154, 6,220,116, 6,184,221,239, 90, 6, 4, 6,188,241,136,226, 26, 13, 53, 44, 8, 48,209, -230, 1, 37, 40, 84,180,170,197, 10,199,170,186,195,129, 58,219, 10,217,213,128,143, 64,182,211,235, 13,168, 75,253,218,213, 13, -249,234,173, 29,130,227, 64, 30,210, 40,231, 41,155,249,191,252,203,255, 75,154,234, 60, 49,198, 58, 81, 35, 91,252,245, 67,205, -226,170, 82, 84,131, 12, 73,228,186, 26,199,216,113,254, 27, 71,190, 71,133,179,135,251,103,228,241, 71, 32,135, 89,100,100,116, -168,118, 1, 60, 53,119,202,125,111,222,220,150, 43,215,175,203, 63,188,243, 62, 73,153,224,220, 81,206, 46, 23, 50,186, 62, 41, - 53,226,190,174,243, 68, 30,105, 48, 7, 80, 26, 72, 84,230,243, 14,129,114, 32,106,154,103,234,242,210,171, 85, 58, 37,100, 67, -231,195, 64, 38,135, 26,128,117, 78,164,221, 27, 75,161,177, 67,163,141,128,107, 87,179, 93, 60,251,148,238,221,241, 40,203, 74, - 81, 82,109,196,206,181,149, 75, 41, 97,216,139,180,152, 30, 66,120,153, 73, 89, 53, 2,229,222,197,168, 18,144,234, 72,162,138, -211,192, 18,155,200,248,190,109,124,212, 35,255, 57, 20,219,170,186,214,155,155,187,114,116,214,148,251,143, 31,202,238,238, 45, -126, 22, 8,104, 78, 33, 91,221,238,144, 94, 56,157,246, 57,171, 61,132,118, 67, 18,137, 70, 74, 78,143, 79, 57,150,219,237,118, -229,249,139, 3,185,113,125, 87,159,199, 9, 19, 7, 42,155, 37, 76,172, 6, 28, 29, 51,150,176, 53,155,174, 46,201,206,213, 77, -181,111, 67,125,174, 35,105,237,239,203,175, 63,216,151,171, 87,182,217, 90, 40,104, 38,222, 30,154,172, 50,166, 11,234,213,154, -140,251, 67, 35,179,242, 77,137, 48,153, 45,235,107,243,178,181, 82,213,235, 25,113, 52, 53, 10,219, 70, 84,133, 22,192, 48, 38, -247,125, 81,247, 50, 24,251,154, 26, 4,190,180,187, 34,107,203, 43, 12,114, 30, 30,180, 40,207, 10, 76, 6,218,132, 8,198,216, - 6, 68, 21, 47,178,254, 55,218,177, 99,240, 52,120, 78,129, 18,109, 44, 36, 77,129, 1,191,208, 10, 56,239,156,115,228, 52, 26, -163,196,214,148,157, 43,250,252, 66, 76, 92, 13, 56,166, 56, 82, 71,221, 62, 59,214,164,115, 87,118,182,150,164,167, 89,124,186, - 81,226,200, 39,167,109,212, 65,223,127,122, 34,251,135, 7,172,204,208,201, 82, 48,201,132, 98,192, 40, 56, 30,119,168, 35, 2, -219,116,245,234, 21,233, 77, 51,210, 88, 94, 39, 89, 86,183,115,170,191,159, 50,211, 53,187,239, 81, 36,107, 56,177,245, 7,127, - 20,130, 2,210,114, 19,155,131,164,119,104,246, 23,149,177,129,238,191,114,226,114,238, 62, 94,160,237, 29, 40, 27,149, 91, 27, -249,156, 75, 74,236,119,147, 32,188,212,208, 72, 56,189,139, 47,243,198, 47,250,237,172,134, 71,214,139,183, 62, 63,112, 7, 9, - 75, 92, 66,219, 67,216,187,148, 5,142, 77, 24, 41,249,228,185,241, 6,167,220, 70, 47,100, 66, 57,106,235, 70,153, 8, 9, 58, - 22, 89, 57,126,126,239,149, 53,142, 7,193, 57,101, 19, 80,150, 50, 22, 50,148, 9, 48, 47,140,153, 89,148,255, 48, 38,210, 1, -152, 70,163, 75,244,129,112,157,141,186, 79,128, 7,140,223,148,116,150,186, 56,249, 20,153,158, 78, 52,114,109,158,247, 89,123, -192, 33, 6, 58,251,149,223, 91,147,164,102,143,147, 81,200,190,147,135,114,179,166, 13,141, 90, 78, 62,123,218,150,245,149,162, - 92, 89, 43, 49, 82, 73,194,233, 76, 34, 55, 87, 24, 90,246, 4,227, 15, 64,189, 46,227,171,183,150,229,189, 79,154, 28,239,120, -182,223,213, 77, 49, 98,207, 43,156, 59, 81, 12, 44,154, 46,198, 87, 95, 90,211, 13,156, 34, 83,211,114, 37,119,169,194, 68,130, - 7,252,228, 26,210,156,248, 28,127,187,182,189,164,175,211, 72, 77, 55,227, 64, 63, 23, 37, 23,148,226,128, 4, 71, 78,248,193, - 3,112,202,207,184,105, 63,124,112, 44, 95,127,117,147,235,148,240, 13,111,144,200,230,121, 13, 85,253,255,171,235, 5,110, 14, - 68,183, 52,152,158,245,166,218,122, 79,111,223, 59,145, 38,144,214, 43, 21,249,254, 27, 89,102,127,145,219, 52, 67,253,222,211, - 81, 68,212, 55, 21,214, 0,160,209,107, 91,207, 38,228,206,154,176, 85,112, 99,171, 44,159,237,245, 56,226, 7, 81, 28, 56,167, -219, 59, 21,215, 67,207,112,102, 87,156, 38, 59, 28, 25,214,168, 63,178, 40,158, 34, 27,236,203,134, 54, 95,239, 16,165,126, 4, -173,120, 83, 83, 27,183,166, 12,206, 50,154, 37, 99,146, 97, 55,155, 52,234, 6,207,152,237,224,144, 72,136,129,117,196,134, 78, - 90,233, 62,147,245,228,206, 78, 89,114,250,190, 49,178, 46, 80,153, 38,230,100, 85,195,252, 54,198,148,198,227, 57, 55, 61,156, - 18, 56, 17, 24,204, 88, 84, 73, 3, 30,185, 49,192,216,177, 70, 1,193, 75,242, 25, 53,248,208,113,134, 84,238, 60,101, 25, 2, - 50,181,124, 58, 36,133,231,246,154, 47,191,126, 8, 54,183, 88,174,172,164,245, 39,111, 4, 48,250,194,199,135, 3, 13,148, 82, -204,132, 80,114,197,115,253,240,139,115,249,230, 43, 53,106, 6, 32,170,247, 83,161,171,116,136,225, 39,116,139, 63, 84,131,242, -233,243,167,116,178,112, 88, 73,210,176,138, 99,173,179,214, 7, 50,107,128,223,144,113, 19, 88,231, 16,188,216,183,229, 74,129, -127,191,220,168,201,222,177, 58,170,126,207, 80,189,142,178, 51,114,138,132,198,199, 61,166,193,232, 14,251,166,128,150,206,176, - 2,131,239, 42, 21,234,164,111, 69,159,119,109,169, 66,156, 7,190, 51,237, 27,137,203,139,195, 51, 10, 24, 61,222,123, 78,212, - 61, 28,243, 71, 79, 94,112,223, 49, 40, 70, 57, 60,157, 35,173,237, 47,127,253,148,165,100, 4,189, 96,188, 67,198,191,181,218, -144,205, 90, 73,106,234, 40, 48, 47,221,236,104, 70, 95, 49,128, 26,218, 79, 23,104,191, 16,196, 40,204,146,231,228, 47, 0,173, -238, 68,142,143,247,228,197,209,129,102, 91,115, 13,202, 55,229,141,151,110, 81,205,176,165,198, 6,218, 5, 51,253, 57, 87,103, -135,169,240,195,179, 11,150,220,225,196, 61,210, 85,155, 20,113, 15, 66, 46,112, 56,112,186, 61, 35, 96, 33,170, 25,165, 92,150, - 32,167,226,101,244,108,165, 66, 50,188,129, 47, 65,156,102, 55, 0, 93,168, 40,161,162,146,156, 69,214, 94,144,216,181,180, 60, -158, 23, 76, 21,128,196, 10,140,134, 8, 38, 11,200,202, 10, 37,102,133,195,161,241, 71, 0, 20, 8,231,132,105,155, 4,207,236, - 76,188,138, 39, 5,125, 93,251, 2,128, 56, 19, 64, 65, 32,213,237,117,152,120,116,251, 3,233,232, 86, 88, 66,155,113, 52, 97, -191, 57,239,101, 13,220,120,142, 25,245, 50,247,250,105,179, 37,119,110,223,144, 91, 55,118, 53,187,222, 55,110, 11,189,215,219, -187,187,106, 91,183,109,116,115, 52,151, 23,167,125, 61,207, 77, 89,203,233,147, 31, 33, 49, 82,167,164, 1,227, 89, 39,144,171, -155, 5, 26,251,221,181,154, 60, 7,211, 29,122,239,250, 76, 94,122,233,154, 62,215,162,141,204, 57,241, 21,100,159,104,135,164, - 19, 1,193,134,199,167, 99, 13,204,212, 39,140, 52,184,235, 37,164,213,156,104,144,113,131, 21, 57,156,241,157,181,170,100,115, - 37,182, 93,215,151,133,189,110,204,202, 35,107, 7, 19,220, 92, 50,172,180,142,135, 41,130,118, 48,146,219, 40,229,245, 53,171, - 70,118,229,103, 88,165,227,136, 27,170, 41, 25, 35, 15, 91, 94,169, 73, 49,179, 34,149,146, 94, 59,159, 95, 66, 6,253,164, 84, -138,117,218, 11,236, 97, 84,104,193,156, 9, 60, 67, 78,215, 58, 32,150,198, 39,231, 6,130, 39,112,243,115,130,199,139, 24, 84, -146,242, 94,131,139,233,160,101,115,235,234,143,176,207, 65,164,150,215, 96,114, 78,173,132, 64,191,167,173,182,123, 74,159,228, - 57, 86, 63,180, 66, 32,143, 59,209,253,187,218, 88,150, 90,181, 42, 75,249,162, 94, 67, 69,191, 91,215,249,228, 72,186,154,245, -131,223, 96, 58,106,203, 69,251,132,159,133,107,109,172, 92,231, 90, 44,170,162, 1,171,171,134, 57, 42, 37, 3, 6, 10,240,175, - 70, 19, 28,186,236, 63,186,100,103, 68,224,158, 78,186,177,192, 75,167, 30,153, 63,154,155,144,215, 98, 90, 8,206, 62,116,224, -102, 2,241,176,183,127,252,110,151,233, 63, 22, 7,206,182,145, 30,202,141, 70, 86,238, 55,133,165, 72,147, 21, 68,233, 46,163, -206,160, 68, 66, 25,100,241,236, 63,197, 38, 76, 17, 83,147,219,147,227,177, 71,238, 97,148,111,107, 75,203,226,169,115,153,128, - 14, 81, 15,231,113, 43,164,200,194,193, 97,155,172,106,232, 7, 53,251,145, 46, 86, 65,157,120, 82,127,143,197,157, 88, 73, 85, -157,195,253,107, 89,153,119, 53, 10,188,152,200, 65,123, 32,121, 28,234, 92, 70,163,182, 41, 75,166,127,245,243,103,242,219, 95, -223,150,173,229,146,222,212,148,189, 27, 0,115, 80,202, 36, 98, 26, 84,169, 36, 11,240,229, 43,175,108, 17, 32,241,236,104,100, - 40,199,228, 98,222, 57,162, 67,195,189,131,148,224,250,118, 85,190,121,103,153,193, 7,122,125,144,129,197,107, 9,114, 99, 63, - 54,102, 32, 3, 98, 28,244,201,231, 81, 74,141,143,103, 76,116,200, 30,212,192,205,134, 61, 18,221,252,234,211, 67,246, 33, 17, - 25,191,255,217,145,172, 47,149,101,173,158,163,177,131,145, 52, 80,152,245,197,119,214,202, 26,252, 76,100,222,155,169,241,139, -164, 51,134,150,188, 81,240,130,173,239,188, 61,102,192,243,162, 85,214,181,202,112,243, 96,237, 47,244,215,195, 57, 39,221,165, -175, 75, 48,238,219,184,212,205, 21, 84, 70,132,196, 57, 40, 47, 98,166,250,241,193, 80,178, 26, 33,163,204,247,106, 54, 65,244, -122,180,208,223, 69,100, 10,253,237, 9,116,143, 99,130, 78,240,255, 66, 28,161,149, 1,123, 26,165,151, 48, 7, 29,155,163,193, -122,122,234, 32, 91, 35,220,119, 79, 52,246,146, 84, 96, 1, 85,232,202, 78,152,203,135, 51, 71,214,103,228, 37, 54,146, 5,206, -106,100,202, 24, 29,171,107, 0,215,239,142,200, 86,135,204,247,218, 82, 36,155,165,172,201,176,206,251,114,114, 48,190, 36,133, - 24,207, 46,100, 48,115, 37,170,132, 33, 67, 47,153,155,220, 97, 36, 75,154,254, 57,187, 94,231,124, 57, 14, 67, 76, 5, 43, 35, - 40, 89,114, 37, 98, 72,184, 6,175, 70, 12, 92,241, 83, 91,139, 53,218,239,200,233, 73, 71,215, 41,197,192,196, 72, 83,230,228, - 33,135, 49,141,216,195, 70,230, 25, 51,184,213,144,149,242,175, 8, 68, 6,147, 1,175, 25,178,168, 64,103, 95,160,231,205, 30, -219,156,251, 18, 8,119, 80,136,162,116,158, 36, 5,176,207, 67,142,234, 72, 78,157, 50, 28,253,238,198,134,236,157,156,169, 65, - 25,235,186, 7,174,188, 22, 25,192, 38, 54,240, 23,104, 61,193, 89, 80, 68,171, 96,110, 72, 94,144,110, 44,122,117,221, 65, 95, - 86,234, 13,102,187,126, 50,199,209, 49,202,184,170, 35,126,105,107,153,164, 57,121,125,239,179,125, 51, 22, 0, 53, 66,168, 3, - 21, 53,163, 36,213,172, 89, 63,239,188,215,151, 27,155,203,234,164, 39,106,220,198, 68,213,163,132,254, 72,179, 51, 60,139, 43, -235, 75,106,208,199,106,248, 7,188,135,208,105, 4, 64,218,119,228,232, 60, 23,153, 8,158,125,187,215,149,240, 81, 72, 14,125, -202,153,234,254,122,231,211, 7, 84, 99,220, 90, 91, 85, 71,180, 42,123,154, 41, 2,253,206,182,137, 26,104,240,236, 39,196,112, - 18,208, 30,143, 72,120,101, 1,131,105,178,199, 6,146,194,120, 84,128,202, 98,130,107, 68,118, 74, 13, 20, 61, 93, 87, 4,165, - 48,228,158,239,148,232, 76,174,219, 72, 70,225, 88,213,129,132, 25, 99,166, 4,174, 6, 68, 53,104,181,162,181,144, 77, 26,144, - 10,200,119, 50,117,161,218, 2,193, 36,223,168,136,187, 23, 23,108,145,225,249,161,236,142,140, 22, 78, 24, 64, 71,203, 32,145, -217, 37, 77,145, 78, 51,222,130, 63, 48,133, 68,117, 32,161,126, 78,167,121, 42,157,206,166, 38, 60, 85,125,110, 99,102,132,231, -231,231,242,254,251,239,203,239,255,240, 7, 38,192, 52, 55, 53, 67,104, 76,132,115,219,203, 19,181, 49,185, 88,215,190,217,151, -205,141, 85, 13,220,179, 26,124,249,106,223, 2,105,157,238,107,130,131, 10,135, 71, 44, 20,196,150,158,156,181,228,250,238,134, - 60,122,246,152,235,178, 92, 95,210,128, 38,199, 22, 79,181,156,101, 85, 16,179,245,213,114, 68, 1, 24, 84,155, 80, 53,109,235, -153,223, 80, 95,112,126,246, 66,131,221,150,172,168,173, 6,152,249,184,211,227, 94,155,134, 73,102,161,144,136, 94, 93,170,114, -143, 52,193,133,160, 14,120,185, 86,117,142,212,215,189, 61, 34,129, 18,176, 64, 8,154,174,172,148,101, 4,249, 93,223, 90, 74, - 80,227,195, 28,188,239, 36,168,193,234,136,118,210,234,114, 85,162,122,129,231,228,230,181,107,114,113,113,206, 96, 99,107,107, - 75,175,233,152, 0,204,134,238,245, 86,123, 78,132, 61,132,144,172,114,108,160, 53, 0,102,203,165, 26, 69,108,166,154,241,195, -249,163, 53,133, 96,119, 78,100,187, 41,228,101,147,117,121,122,216, 52,194, 32,253,119, 28,204, 24,180,225,218, 1,230, 4,231, -195, 69,183, 67,219, 87, 44, 22,137, 17,128, 92,121, 20,218,108,191,199, 25,255, 57, 91, 2, 17, 81,248,216,171, 38,229,123, 57, - 99, 14,113,199,241, 72,175,215, 99,130, 49, 28,196,142, 92, 50, 36, 88, 16,175, 93, 72,113, 91,160,105,253,248, 5, 38, 40,225, - 91,245,200, 64,209,190,163,101,118, 10,118,174,248,138, 0, 1,227,185,201,246,112,100, 72, 59,125,209,193,241,185,188,181,225, -203,119,191,177,166,206, 98, 44,123,157,144, 6, 15, 14,235,229,109, 93,120,125,128,233, 98, 66, 31, 42, 30,236,196,136, 83, 22, -232, 98, 32, 28,167,115, 26,156,107, 91, 75,234,208,139,220,192, 38,244, 59, 53, 61,238, 76, 36, 23,173,136, 52,170,232,169, 65, -222,180,141,113, 26,141,144, 87, 52, 97, 92,133, 64, 70,148, 32, 8,225,193,211, 83,141,234, 83, 28,107,194,168,148, 41, 24,205, -153,225,192, 9, 29,159,245,229,175,127,254, 84,190,241,198,166,102,236, 21, 19,168, 72, 88,118,154, 97,249, 34,102,127, 56, 73, - 71,239,201,239,125,125, 71, 13, 82, 79,126,161,153, 47, 22,101, 58, 49, 78,112, 56,235, 82, 57,207,178,240,255,243,139, 39,236, -225, 93, 93, 43, 91,169, 19,200,115,140,171,184,204,159,100,173,190,201,198, 70, 14, 48, 56,214, 47,157,129,157, 14, 40,218,137, -110,210,193, 64,238,191, 24, 73,175, 15,233, 72,147, 18, 29,169,227,251,232,193,169,252,225,183,174,152, 40, 11,178,241,121,116, -201,150, 6,170, 69,108,234, 71,135,106, 64,245, 51,250,250,157,181,140, 70,237,167, 93,205,172,186,252, 30,244,189,158, 31,116, -229,230,149, 26, 75, 85, 19, 61, 80,227, 40, 99,147, 8, 16,207,208,117,122,160,135,122, 89, 15, 88,173, 20,147,238,149, 85, 8, -112,149,151,211,114,109, 35,214,207, 31,107,148,153,145,243,254, 92,131,146,228, 37,216, 12,115,219,211,153,174,233, 69,168, 70, -124,238,202, 80, 32, 1, 66,118, 29,145, 32, 38, 28,171, 33, 73,175,144,238, 55, 8, 13,184, 97, 12,128,154,133, 12, 39, 6,244, - 72,218,204,242, 2, 96, 50,163, 74, 41,230,182,199,220,248, 28, 1, 35,194, 88,175,245,177,222,203, 86, 65,174, 52, 74,156, 48, - 8, 1,128,241, 52,100, 74, 67, 84, 37,114,115,162,234,220,166, 49,179, 52,176,205,161,231,159, 79, 8,177, 16, 45,141,216, 35, - 94,103, 98,161,122,233, 84,241,124, 25,128,201, 16, 61,188, 40,127,169,129,108,204,133,241,101,159, 29,192, 48,140,146,168,221, - 20, 76, 95,193,193, 85, 42,121, 89, 90,173, 73, 87,141, 22,214,248,193, 19,125,142, 26,104, 37, 22,124,251,177,149,119,135, 12, -126, 52, 40, 43, 68,242,201,147,231,114,166,217, 25, 14, 62,169, 90,213, 73,193, 48, 46,120,161, 11, 28,253, 74,234, 62, 30,113, -173, 50,110,124, 5, 78, 15,172,113, 64,188, 99, 94,253,181,155, 55,165,165,134, 2,232,120, 56,215,105,127,122,169,210,231, 45, -116,149,245, 58,214,170, 37,222, 15,166, 45, 80, 81,162, 40, 15,152,229,128,140,206,229, 24,245, 99, 94,253,182, 26, 65,124, 54, - 0, 71,152, 59, 71, 9,187,161,153,118,134,194, 39,125,170,137, 97, 57,208,155,199,141,173, 47, 55,248,249, 48,148, 51,182, 42, -230,114,222,237,169,193, 46,208,209, 33,251, 47, 36, 76, 50, 21,103,231,201, 81,147,192,188,206,160,167,217, 85,145,231, 47,162, -158,125, 96,165, 68,183,214,145,147,163, 4,184, 11, 97, 73,119,136, 76, 48,188,236, 21, 34,107, 4,191, 58,152,212,188, 75, 82, - 13, 97,160, 1, 37, 55,244,231, 49,197,129,146, 46,218, 39, 83,199, 64, 24, 57,106,105,244,236,145,109, 34, 11, 15, 98,204,107, -152,162, 31,198,179, 16, 84,227,245,104, 3, 88,164,238, 93,114,106, 47,228, 82, 57,210,230,120,202, 17,164, 0,252, 25,134, 86, - 58,165,242, 87,140,207,152,240,236,135,129, 17, 4, 33,211, 7,231, 5,198, 65,209,127,133,202, 90, 93, 29,217,208, 77, 1,192, -238, 97, 26, 1, 83, 13, 51,135,196,135, 1,206,229,241,236,179,180, 31,243,217, 64, 63,123,164, 54,176,201,146,124,185,178, 34, -249,212,148, 45,164,230,241, 19,121,254,228,166, 58,218,134, 60,248,228,125,125,134, 23, 12, 20, 38,110,150, 58,212,251, 68, 21, -235,238,173,107, 26, 36,149,105, 3,174,109,168,243,210,108,122, 48, 90,210,164,103,192, 76, 23,192, 67, 84, 87,118, 55, 55,212, -169,205, 53,105,217, 32, 16, 23, 10,117, 80,225,220, 63,236,200,195, 39, 67, 57, 59,126,196, 49, 90, 76, 55, 97,220, 19,215,140, - 61, 92,214,231, 26,168,141,185,166,137,211,126,171, 79, 76,213,186, 58,196, 9, 48, 68,144,149,197,108,185, 58,181,241,112, 78, -178, 26,244,234, 87,116,127,218, 51, 76, 72, 83,131,245, 10,144,245,152,199,215,245,223, 59, 57,151, 52,116,219,139, 33,147,173, -171, 27,117, 62,139, 86, 31, 34, 62,125,217, 88, 90,146,161, 62, 47,180,123, 39,103,231,204,156,235,181,186, 52,245, 62,244,106, -245,190, 46,100,103,115, 75, 30,237,157,202,222,254,190, 38,132, 53,121,244,162,165, 54,163, 76, 10,112,156,127, 84,132, 80,201, - 66,213, 46,138, 38, 26,120,157,203,254,254,158, 44,175, 93,213,207,170, 81,175,225,180,123,100,147, 26,152,192,208, 51,131,140, -125, 14, 9,242,132, 85, 35,137,127, 16,227, 86,193, 20, 19,125, 15, 71,149, 83,196, 53, 0, 79, 19,204,198, 82, 42, 53,200,111, -129,172,186, 84, 14,140, 31,160, 57,160,112, 13, 41,167,195,240,114,244,149,213, 36,128,108,231, 8, 0, 18, 84, 6, 76, 39, 92, - 79, 28, 32, 15,200, 99,198,151, 12,179, 86,113,118,106,108,240, 95,160, 65,247, 92, 54,110, 42,157, 86,158, 7,242,105, 33,104, -134,214, 99, 30, 54,123,189,156,160,145,204, 35, 82,154,107, 38,167, 27, 2, 44, 76,119, 86, 83,114,208,153, 73,187, 51,150,122, - 41, 35,215,171, 26, 61, 12,251,252,130,205, 92,164, 81,225,144, 55, 78,173, 92, 82, 65, 26,141, 36, 16,147, 56, 84,249, 57,192, - 98,198, 70, 87, 80,103, 14,246,167, 88,157,220,119,190,178,101, 3,254,122, 96, 78,154,161,252,244,221,167, 44,211,254,209,119, -175,202,213,213,178,101, 92, 60, 4, 14,159,173,239, 95, 93,157,202, 82,107, 36,207,213,193,157,158,143, 88,118,249,238,155,155, - 4,128,161, 44,116,109, 5, 98, 44, 73, 10, 35,224,253, 86, 86,243,100,239,180,163,155, 58,205,153,123, 82,157,130, 3, 59,242, - 77,205,198,183, 12, 53,149,181,172, 12, 76, 84, 88,176, 15,239,159,208,201,102, 18,254, 37, 24, 33,225, 80,156, 36, 7,112,140, - 68,134, 60,247, 57,179,140, 17,131, 55, 95, 90,150, 79,213,113, 63, 57,155, 48,155, 95,169,103,245,144,207,201,143,140,123,217, - 63,234,106, 36, 59,213,195, 87,102, 20, 57,152, 79,216,167, 1, 1, 10, 38, 6,240, 15, 42, 26, 23,106,224, 80,238,158, 13, 99, -210,159,130,176, 7,125, 85, 24, 54,244,152, 83, 48, 92, 26,129,247,167,105,110, 22,236,135,138,174, 67, 71,215,119, 73,163,202, -237,101,104, 24, 59, 72,246, 66,150, 16, 61,193, 74, 70,174,234,181, 62, 57,153, 80,112,130,226, 60, 95, 34, 48, 56,185,152,200, -126,115, 34, 94, 10,101,213,132, 99,212,139,212,152, 36,165,154, 84,131,176, 94,148, 56, 17,202, 11,240, 78,167, 12,196,103, 6, - 76,215, 93,179,157,166, 58, 25, 15, 44, 34, 98,253, 31, 89,232,201,131, 57, 42,145,227, 78,197,136, 97,189,192,165,212,107,208, -251, 81,103, 3,105,221,187, 55,235,242,206,175, 15,228,222,131,115, 39, 5, 26,186,210,186,153,121, 32,127,183,214,242, 68, 57, - 35,200,131,200, 16,250,234,200, 0, 43,154,105,248,145,121, 2, 24,121, 56,244,214,185, 58,184,212, 80, 42, 57,187,119, 60, 39, -140,156,205, 40,239,106,207, 21, 10, 84,179,137,103,179,169, 49, 70, 16,213,168,135, 37,130, 0,219,237, 46, 9,136,170, 21,244, -170,109, 76,237,172, 13, 17,153, 33, 29, 75, 50, 3,112, 40,208,186, 19,102,170,200, 66,208,199, 6,183,252,177,190,151,101, 56, - 0, 10, 65, 91,169,215, 53,134,106, 8,123,107, 41, 82,251,162,132, 6, 37,181,139,254, 64,142, 91, 45,185,115,245, 10, 29, 15, -148,213, 18, 9,223,245,172,141,127,128,242,168,145,149,223, 65,248,114,117,107, 91, 86, 53, 99,138,212,168,124,248,248,133,116, -103, 17, 51,201,102,251, 66, 26,250,153, 75,106,184, 78,154, 45,199, 72, 54,100,214, 15,112, 38, 12,221,145, 3,229, 29, 53,155, - 44,149,227,249,129,196,101,187, 94,146,207,247, 91,242,233,222, 17, 3, 14, 16,199, 84, 80,202,209,117,122,113,122,110,142, 52, -142, 28, 1,144,245,249,102,142,220, 5,224,181, 28, 36,147, 11, 57,210,125, 38,124, 27, 13, 91, 16,213,248,142,196,197, 74,173, - 41,102,133,152,187, 69, 38,132,128, 2,202,121,107,141, 37,210, 59, 95,221, 68, 37,161, 73,164, 54,238, 31,210,167,168, 12, 82, -218, 56,109,138,130, 99,182, 47, 70, 26, 96,230,196,131, 50, 33, 65, 67,190, 17, 10,233,249, 33, 10,152,164, 86, 57,142,123,246, -251,125,219,123, 9,163,178, 30,113,194,103, 78, 58, 89, 4,110,184, 55, 4, 69,105,178,135,165, 47, 51,114,142,225,121, 70,235, -204,204, 26, 14, 61, 50,249,216,192,233, 94, 47, 38, 47, 18,163,177,244,212,153,228,213,137,179, 20,239, 91,203,130, 51,201,236, -193,198,108, 67, 66, 24, 74,211,104,147,140, 70,239, 83,237, 99,167,221,146,208,207,203,107, 27, 87, 57, 77,179,186, 92,147,228, -198, 58, 1, 93,149,242, 85, 89, 89,223,150, 15, 62,249,152,152, 18, 82, 41,187, 17, 38, 84,182, 66,112,201, 63,121,194,192, 28, -213,198,136,116,208,226,216, 56,201,118, 34,247, 91, 39,108, 45,224, 60,126,246, 96,200,214, 5, 5, 91, 52,200, 44,106,208, 16, -121, 25,102,166, 64, 96,103, 53,187, 7,113,214, 48,240, 68,227, 86,217, 41,102,100,115,169, 76,176,244, 55,238,110,201,207,239, - 29,201,175, 30,180, 72, 38,134, 25,247,158,222, 47,167, 65,146, 33,129,209,153,100, 78,238,239, 55,153, 8,226, 58,208,175,198, -126, 58,237,154,112, 22,224, 43, 32,198,250,226,217, 1,247,243, 21,117,208, 0, 49,118, 53, 11,158,143,250,186,222, 21,205,186, -155,114,170,206, 31,108,153,229,234,138,180, 53,176,132,192,206,193,241, 51, 13, 46, 99,150,195, 17,180,228,139, 85, 73,100, 96, -159,117, 45, 53, 24, 59,238,157, 48,161, 35,167, 60, 71,172, 53,224,152,160,138, 84, 34, 97, 79,189,146, 99,197, 21,215,132, 48, -139, 68, 86,250, 95,168, 37, 18, 60,169,215, 75, 98, 30,236,241,249,148,192, 68, 96,163,226,216,144,250, 40,221,183,218, 29, 38, -115,208,157,247,213,166,165,210,166,230, 9,176, 92,160,201,221, 36,232,179,253,121,117, 69,237,228,241,153, 76, 70,106,163,147, - 21, 6,201,248, 94, 80,108,163,101,147,195,168,177, 62, 59, 95, 38,196, 85, 5,250,252, 75,121,147,146,206, 36, 13, 24,138,150, - 38,170, 15,168, 40, 60, 63, 27, 27, 3, 94,108,202,113, 36, 41,243, 28, 96,206, 1,128,241,119, 0,247, 53, 26,186,239,222,218, - 84, 67,163, 7, 21, 64,174,249,198,138,236,181,242,106,212, 6, 82,203,171,179, 92, 74,202,187,173,182,252,250,176, 41,191,255, -122, 81, 26, 26,149,204,125,116,169, 19,178,170,198, 20,229,136, 36,147,163,152,132, 3, 0, 85,165,139, 49,191, 52,149,130,227, -234,203, 16,139, 30,219,184, 19,140, 8,202, 97, 56,120, 48,206, 64, 31,238,238, 44,203,193,217, 72, 62,122,214,215, 7, 85, 32, -226,150,237,198,132,245, 28,176,138, 37,221, 92, 95,169, 23,229,245,155,171,234, 40,167,114,160,209,208,173,173,154,252,206,171, -235,234,128,102, 20,212, 0,241, 11, 2, 19,234,249, 98, 14, 91,159,210,146,110,164,237, 98,204,114, 39, 15,145,222,124, 29,189, -161, 90, 70,142,206, 0,192, 8, 36,147, 55,250,215,140, 94, 59,168, 73, 97,180,142,154, 61,249,238, 77,141, 72,245, 65, 93, 76, -172,138,129, 40, 16,101,176, 56, 54, 16, 24, 74,117,139, 17,138, 72,131,161,109,117,226,232, 71,223, 88,131, 30,182,209, 56, 62, -216,159,115,222,149,109, 10,189,223,119,239, 29,202,245,149, 12, 91, 9,227,104,198, 7, 59,119, 61, 19,100, 7,199,221,169, 70, -173,232, 7,251, 28,223,106,143, 80,238,201,146,109, 11,115,211, 24,163,203, 69, 83,121, 12,145, 11, 32,117,147,118,208, 49, 86, -177,170,209,240,213,122,104, 74, 61,115, 87,239, 89,140,105, 56, 86, 66,140, 7,109, 55, 60,233,232,117, 46, 85,224,140,173,144, -146,210, 23, 60,254,232, 84,246,187, 9, 89,219,172, 26,213,169,219, 92,203,185, 80, 78,213,176, 95,173,215,165,228, 7,146, 77, - 88,239, 28, 25, 86, 10,220,208, 73,163,133, 61, 31, 76,120, 72,176,201, 3,150,138, 13,236,161,119, 70, 92, 1,106, 34,147,225, - 64,247, 75, 90,150, 43, 89, 41,230,103,204,208, 64, 15,186,113,165, 36,217,199, 25,105,247, 67, 43,147,163, 50, 17,196,228, 54, -192,218, 87,107, 57, 89,215,245,197,168, 24,202,152, 47,239,174,219,104,101,236, 84,172,146,110,172, 3,115,218, 7, 23,234,212, - 79,197,153,181, 75, 97, 9, 84, 7, 48, 61,145, 74,154, 83,170,148,139,156,233,181, 41, 14,159,114,170, 15,239, 95, 80, 65, 10, - 37, 84, 83, 44,131,241, 84,231,131,232, 58,128,193,240, 47,231, 84, 15, 90, 71, 4,189,129, 70, 25, 89, 37,140, 91, 23,220, 5, - 81,232,102,176,115, 28, 55, 67,144, 66, 61,130,164,105,154,163,172,152, 87,167,118,210,110,243,245, 55,119,118,164, 81,173,200, -103,143,159,241,250,103, 84,180,210, 61,160,159, 11,131, 54,119,104, 87, 60, 20,100,159, 0,182, 61,213, 96, 21,173,139,175,221, -190, 42, 15, 52, 99,126,164, 63,216, 7, 64,161,191, 56, 58,166,252,103,191,223,227,186,195, 9, 2,215,128,253, 10,231,143,254, - 59, 74,134,148, 78, 86, 3, 3,131,123,239,233,145, 94,107,224,128,127, 9, 6,238, 32,125,234, 12, 71, 98, 83, 92, 41,246, 49, -167, 65,232, 42, 34, 78, 90, 18,170,107,250,252,251,154, 65, 5,147, 30, 91, 50,168,237,140, 92,233,146,253, 61,100, 62, 46, 3, - 65,105,127, 58,183,241, 33, 74,108,102, 17,144, 77, 89, 18,157, 73, 86, 3,177,148,108,175, 5,242,225, 39, 15, 72,235,139, 42, - 81,181,148,103,251, 7,101,111,204, 28,163,164,140,192, 44,151,207,144,156, 9,229,219,180,107,243,192, 24, 93,142,249,136,169, -186, 97, 62, 27, 4, 54, 36, 86,145,169,120, 57,107,215,180,212,153, 14,167, 67,102,116,249,108, 73,114,197, 34,249,209, 81,189, - 51,114, 36,187,206, 78,183, 69,176, 25, 2,220,116, 62, 43,229, 4,168,141, 7, 50,165, 83, 16, 6,240, 25, 80,220, 22,138, 4, - 8,226, 58,209, 95,206,229,236,249,219,248,145, 81,105, 15,208,237, 27, 14, 9, 92, 35,191,197, 64, 3,177, 70, 67,239,111,102, -124, 19,234, 28,114, 9,208, 92,231,137,123,192,154,223,188,253,138, 28,237, 63,148,211,179, 51, 93,179, 34,219, 64,108, 39,105, - 16,133,241,181,243,139, 22,245,237,177,199, 76, 33, 45,224,119, 81,154, 57, 48, 86, 58,207, 17, 85, 49,184,157, 27, 15, 4,212, - 1,215,147, 37,142,224, 21,179, 87,117,191, 45, 88,205,132, 56,147,132,218,246,159,106,160,253,183,191,188,167,123,116, 85,202, - 78,167,130,136,110, 16,187, 68, 30,199,182, 16, 20,111, 55, 52,233, 91, 43, 26, 96, 77,179,255, 86,119,198,177, 57,180,241,186, -122,191, 47,239,212,101, 0,233, 94,182,105, 68, 19,173,156, 6,192,234,136,207, 78, 25, 92,194, 14,190,122,109, 83,247,211, 80, -134,224,226,215,245, 24,206, 52, 57,155,246, 56, 10, 89,169, 20,117,141,211, 26,212,151,244,187,115,106, 11,107,186,190,121,210, -184, 98, 60, 20,250,240,160,147, 6,194, 62, 12,163, 75, 14,118, 58,224, 66, 69, 50,165,186, 6,208,224,255,239,115,170, 8, 4, - 78, 20,176, 82,187, 26,105,144,133,228,107,230,248, 62,122,147, 17,239,169, 0, 14,133,249,156, 36, 80,240,164,104, 25,145,179, - 1,231, 90,147,171, 88,157, 60,180, 3,176,183,176, 11, 38,234,115, 10,229, 37, 89, 93,223,148,238,164, 47, 23,163, 88, 86,243, - 99,181,181, 57, 86,112,215,170,154, 8,116, 6,146, 46,129,135, 33,148,106, 26,211, 58, 9,217,210,181,219,235,137,252,241, 31, -108, 75, 2, 34, 84, 8,152, 2, 11,134,147, 41, 35,242,233,254,187, 61,217,215,100,145,237, 92,151,202,131,243,196,212,237, 98, -195,194,144, 8, 75,179,127,244,213, 81,226,192,193, 8,152,113, 65,164,160, 34,232, 6, 34, 67, 41,233, 6,251,193, 75,117,249, -179, 95,236,177, 60,178, 83,139,120,144, 80, 41,216, 74, 5,116, 32,145,110,254,179, 97,168, 70,106, 34, 95,187, 90,151,205,170, - 26,184,241,132, 11,244,174, 70, 24, 93, 47,103,100, 13,147,153, 19,139, 49,201, 64,244, 38, 49,255, 8, 70,172,151,174,100, 88, - 10,237, 14,230,234,156, 96, 40, 18,164, 26, 69,128,153,246,109, 60, 37,155, 50, 75,146,171,231,165,160,134,249,237,251,103,186, -145, 74,124, 0,250, 76,104, 4, 80,138, 96, 86, 97,172,150, 82,213,131,117, 49, 7, 85,105,150,135,235,219,111, 20,228, 91,186, - 40, 16, 74,248,248,201,185,124,166, 63, 24, 79, 1, 79, 57,250, 45, 57,205,170,113, 0, 48,183,188,186,146,227, 65, 57, 57,155, -184,113, 37, 91,112,176,234, 65,106, 22, 24, 2,245, 53,194, 42, 30,118,207, 72, 35,241, 97,160,206, 33, 69,249, 90,246, 58, 33, - 38,128, 3,230, 8,247, 1,120,195,195,202,113, 42,192,168, 15,159, 3,240, 18,186,241, 40,221,104, 21,125, 88, 62,244,199,245, -239,191,255, 74,141,189, 81, 24, 26,150,216,129,216, 7,153, 72,102,164,193,210, 68, 78,186, 80,163, 74,107,228,151,147,205, 70, - 65,146, 57,255, 75,132, 7, 84,245,112, 37, 29,115, 10, 40, 82,212,150,245, 32, 94, 76, 73,115,105,243,219, 49, 75,173,160, 87, -205,151,235, 4,101, 45,178,215,155, 26,128,188,190, 58,149, 79, 38, 9,249,251,143, 79,228,123, 47,175, 18, 73,122, 37, 19, 81, - 57,174,144,182, 44, 18, 20,213, 48, 74,155,203, 21, 89,169,102, 93,201,213,163, 97, 96, 63, 8,224, 62,204,177,198,121,246,220, -177, 57, 55,151,203,122, 16, 98,185,232,141,164,173,187,250,218,106, 69,222,120,101,198,246,197, 82,125,137,100, 33,224, 99, 71, -164, 12,148,116, 41,159,226, 88,224,113, 7,204,106, 21, 58,181,133,219,190,164, 80,134,190,115, 92, 83,163,152, 33,209, 10,231, -178, 73,238, 48, 34,208,165, 88,182, 62,249,217,121, 71,154, 61,200, 72,102,165, 86, 72,153,210,153, 30, 74,128,122,128,155, 64, - 6,132,136,122,239,160,207,178,174,144,117, 11, 83, 22, 35, 57,215,204,124,112,214, 55,212,120, 53,199,253,214,209,231, 2, 71, - 76, 89,214,140,113,203,247,221,172,118,134, 52,195, 30, 3, 59,244,186,225,228, 30,237,239, 83, 10,179, 81, 41,203,237,171,187, -242,232,197, 62,191,215,218, 50,230,208,241,165,200,104, 81,194, 93,168,154,161, 2, 69, 18, 23,144,107,104,128,244,201,179, 61, - 74,134, 34,123, 68, 59, 11,135, 26,165,114, 80,199,162,119,143, 41, 16,112, 83,227,124, 3,248,131, 86, 84,189,154,162, 1,155, - 71, 54,127,219,213, 76,118, 48,153, 56,164,109,194, 69,255,226,244, 24, 98,206,153, 35, 40,246,139, 9, 67,251, 2, 24,166, 7, - 12, 78,178,167, 14, 47,135, 17,169, 82,133,149, 56, 4,212,200,134,232,196,231, 38, 98, 4, 7, 82, 45,230, 88,205,225,124,117, -207,212,245, 82,169,156, 84, 48,171, 93,222,148,173,141, 13,222,227,254, 89,143,211, 34,127,248,189, 55,228,233,193,169, 60,219, - 63,230, 24, 21,212,202,230, 51,195,191, 16, 40,202, 76,219, 2,112, 78, 20,168,131, 7,169, 13,120,199,209,102, 64, 54,170, 17, - 40,123,198, 84, 21,155, 4,116,118,243,216,148,234,176,134,141,218,146, 6,118,186,143,178,121,130,157,112, 95,105,182,143,172, -205, 50, 15,172,172, 14,133, 70,210,245, 58,234, 81,124, 95, 97,216,147,206,197,133, 6, 36, 17, 83, 79, 16, 50,193,142, 97,114, - 1,163,114,225,130, 87, 33,142, 72,232,131,172, 21, 78,126,213,143, 73,215, 90,212, 32, 2, 92,242, 1,201,101, 64, 86,114, 34, -229,147,186,172,111,236,168, 99,207,209,153,204,117,207, 62,123,113,168,246,169, 40,175,188,242, 85, 25,189,247, 75, 6, 42, 41, -180, 64,211,158,244, 7,168,146,169,173,213,196,165,144,199,222, 48,237,135, 16, 51,220,172,132, 69, 44,169, 91,245, 82, 88, 97, - 34,208, 52,153,160,228, 41,198,125, 49,239,159,209,251, 15,230,186,143, 53,201, 56, 59,122,202,201,139,217,184, 34,255,252,135, -175,201,206,106, 89,254,197,255,241,182,156,156,107,208, 22, 86,140, 31,208,139,157, 78, 5, 0,132, 5,174,213,218,170,218,159, -205, 10,229,178,183,182, 86,228,157, 79, 14,104,235, 11,122,190, 58, 26, 20,163, 90,129, 41,147,174, 38, 81,214, 62, 69, 85, 32, -166, 79,192, 25, 69, 48,213, 27, 11,255,123,147, 68, 58, 70,100, 83,171, 22, 77,225,208,245,154,137,163, 72,193,198,121,108, 63, -158,171,163,110,106,112, 77,233, 43,125,254,228,158, 8,167, 78,172, 37, 37,249,124,137, 60, 35,217,148,161,194, 71, 17,152,237, -132,232,127,218, 5, 93,171, 1,117, 1, 66, 86,153,112, 6,141,102, 86,207, 70,214,103, 22,141, 64, 52, 67, 60, 79, 36, 70,128, -231,241,187, 76, 10,217,179, 42, 72,104,154, 37,172, 82,105, 40,122,164, 73,231,222,209,185,124,243,155, 27,146, 47,148,100, 2, -230, 77,111,172, 79,188, 40,229, 82, 78,131, 87, 95,122, 31,159,201,225, 81,155, 35,203,143, 30,159,202,225,193,146,220,122,169, -193,179,229, 37,205, 94, 83,176, 72,247,215, 43,183,202,250,121, 3,182, 82, 81, 49,194, 30,128, 60,246, 60,166,243,177,192, 95, -191,123,103, 57,171,219, 81,157,255,148, 34, 32,145,113, 86,199, 83,202,139, 10, 50, 11,117,178,200, 0,103, 26,133,143,212,176, -116,206, 7, 50,131, 81, 68, 6,166, 25,118,181,174, 81, 57,162,123, 63, 37,149, 70, 89,118,118, 83,178, 82, 74,144,132,229, 31, - 30, 15,228,241, 94, 83,142,123, 51,102,198,155,154, 25,207,213,242, 3, 68, 3, 33,146,222, 88, 13,151,102,158, 75, 26, 29,232, -113,209,108, 48,201,158,242,171, 80, 58, 82,163,147,128, 10, 9, 12, 12, 16,169,242, 27, 46, 92,206,180,235, 3,254,187,147, 30, - 23,238,157,135, 77,185,189, 93, 85,103, 12, 38, 58,124,102,218,148,223,156, 56,137,198,100, 18,161, 92,229,199,116,218,233,228, -130,192,223,147, 55,111, 52,228,218, 70,145,155, 7, 70, 75, 56,194, 98, 51,206,159, 61,111, 73, 87,141,254,246, 86, 70, 15, 90, -210,104, 65, 13,130,163, 14, 34, 37, 73,221,156, 37,141,184, 32,238,194,242,110, 56, 99,255, 15, 89,235,147,163,145,236, 37,132, -234,116, 0, 59,208, 88, 66,173, 40,105, 25,203, 12, 58,234,250,223,243,254, 84, 14,213,201,255,242,139,182,102,131, 51,185,123, -165, 44,255,236, 15,111,146,226, 21,135, 6, 37,125,246, 18, 49, 39,233, 91,185, 27,117, 73, 16,159, 96,180,239,195,189,174,156, -183, 65, 67,168,206,126, 84,148, 91,155,105,169, 54,114,236, 29,198,174,167,137,245, 34,105,180,211,245,193,102,159, 83,252, 34, -208,172,221,184,213, 57, 41,128,153,243,205, 13, 57,234, 89,217, 62,208,247,174, 85, 19,114,187,110, 37,218,151,110,172,200, 36, -110,202,187, 15,207,229,213,235, 75, 4,230,132, 14, 8,134,114, 87,167, 61,144, 23,135, 3,246,108, 87,170, 25,102, 77,112,242, - 73, 7,140, 99,224,133, 30, 15,118, 71,210, 99,249, 31,207, 1,100, 55,201, 90, 81,218,211, 57, 3,160, 55, 95, 41, 80, 99, 26, - 35, 72, 16,106,193,220, 59,245, 0, 34, 35,205, 72, 3,136,166,219,179,165, 22,192, 79,130,121, 47, 77, 10, 77,182, 25,124,143, -142,244,176,217,129,233,163, 42,215, 52,200,176,100, 11, 7,136, 17, 25, 0,173,250, 32,213,128, 42, 27, 24,201, 70, 51,153,140, - 82, 60,196, 32,143,128,236, 99, 56,179, 82,241,121,183, 41,131, 94, 87, 86, 42,107, 24,124,210,191, 31,202, 88,215,224,188, 59, - 36, 25,204,122,166,198,246, 77,127,110,186,221, 40,233, 86,160,120, 40, 98, 37,111, 17,151, 29,154, 74,217, 82,189,204,202,214, -195, 23, 7,116,178, 48, 30,171,154, 37,237,159,158,178, 92,142, 62, 56,156,115,133,217,152, 81,104, 18,221,154, 88,168, 67,249, -236,189,163, 23, 94, 45,150,120, 61, 0,222,141,124, 35,123, 66, 80, 12,166, 58,148,173,151,235, 85,142,189,117, 53, 91,231,239, -192,122,165, 70,107,185, 86,103,240, 1,192,216, 98,132,230,224,180,105,217,180, 27,207,241, 61, 43, 46, 51,160,198, 56, 79, 58, -125,137,194, 77,179,242,162,247, 37,166,250, 23, 0, 67,160,182,160,162, 78, 17,215,107,132, 50,190,156,180, 58,236, 61, 39,147, - 70,109,140, 76, 11, 21, 2,159, 84,208, 98,186,236,106,176,218,189, 33, 65,123,168,208,129, 63, 32,163,127,190,255,236, 41,247, - 37,170, 83, 94, 18,217,248, 72, 32,194,155, 76,154, 18, 23,122,216, 48,190,188, 22,180,112, 28,130, 25, 45,161,172, 94,143, 36, - 60, 71,246, 97, 60,244,172, 60,164,173,141,134, 12,136,140, 91, 26, 44,165, 98, 35, 97, 65, 41, 21,246, 5,118, 47,153,204,243, -239, 35,183,223, 60,150,241, 51,196, 73, 68,177, 81,194, 98, 54, 25, 12,107, 0, 24, 38,178,122,191,200,202, 19, 66,206,126, 4, - 97,177,235,125,130,145,147, 19, 37, 98, 10,104,105, 4, 49,149, 26,157, 63,236,192, 88,131, 44,140, 62,182, 47, 58,250,153, 93, -121,246,240, 51,205,218,151, 53,112, 69, 96,107, 70,122,160,207,248,226,162, 45, 27,107,203, 28, 87,124,252,228,177,148,202, 53, - 18, 79, 97, 13, 0,200,130,147,219, 90,174,179, 18, 4,185, 92,201,198, 4, 21,122,161,141, 81, 97,172, 11, 9, 79, 33,159, 96, - 53,112, 74, 6,201, 9,193,196, 71, 71, 7,108, 7,229, 11,203,116,140,192,115, 0, 27,244,179,247,191,144,119,239,237,203,191, -248,111,127, 87, 94,189,177, 45,167,157,161,188,104,246, 41,217, 74,118, 76, 18,239,128, 61, 47, 69, 7, 61, 24, 71,114,210, 9, -165, 94,207,106,160,154,146, 55,239,172,203, 3,181,161,219, 43, 69, 89,153,231, 9,248,187,185, 89,147,138, 62, 83,144, 93,193, - 60,247,199, 25, 25, 5, 9, 6,154,152, 49, 47,228,139, 4,226, 82,248, 42,105,213, 20, 86,173,230, 22, 24,245,199, 54,215,142, -231, 3,249,230,201,116,172,159, 53, 32,158,194, 64,179, 62,131,243,153,163,146,205,235,243,201, 23,235,156,142,152, 5, 61, 86, - 47, 18,108, 95, 36,245, 89,155,142, 59, 58, 51,216,131,120,218,248,110,236, 25,156, 61,146,236, 48,128, 74,242,121,163,234,198, -233, 29,189,215, 73, 98,198,223,199, 14, 39, 49,232,180,116,127,229, 77,217, 20, 21,160,214, 57, 3,229, 50,248, 21, 52, 67,191, -251,237,134,204,117,255, 32,200,165, 90, 61,121, 45, 60,121, 75,253,219,231,143,155,242,246,103, 39,106, 83,102,242,243, 95, 60, -151,107,215, 42,172, 54, 33,122,136, 29,251, 39, 56, 77,118,119,139,178,161,254,118,255,108,196, 4,165,224,107, 64,145, 41, 73, -148, 40,176, 90,134,107,219,105,232,254,159,247,200,247,144,236,233, 98,245,212,225,130,208, 51,147,200,106,166, 57, 37, 5, 97, - 14, 81,160, 70, 36,231,186,240,119, 55, 74,140, 48,194, 74, 69,102,195, 33, 75,159, 47, 14, 70,100,125,219, 92,209,131, 93,202, -114, 84,232,176,213,151, 11, 93,132, 73, 58, 39, 91,119,111,200,241,189, 3, 57,104,245,100, 87,175, 21,188,214,148, 99,140,140, -166,176, 59,152, 25, 11, 29,165, 33, 67,217,110,248, 82, 43,249, 68, 83,250, 78,191, 27, 81,149, 1,111,140,169,135,154,226,186, -113,187,179,152,155,107, 10,129,150,185,169,204, 9,213,195,244,144,198,214, 43,135,180,122, 22, 32, 40,141,232,154,154, 1,172, - 84, 10, 36,145, 9, 93,249, 16,209, 35, 50, 8, 56, 5,124,223, 36,180,145, 56, 4, 42,175,238,214,185, 6,179, 81,204,236, 60, -136, 18, 44, 37,101,138, 64,237,199,146, 45,235,102,206,167, 37, 64,217,166, 63,165,145, 44,234, 33,126, 69,131,128,193, 56,228, -142,191,122,187,172, 7,206, 14,119, 65,163,177,227,214, 84,126,193,158, 86,200,223,245,157,170, 24,192,127,220,120, 0, 8, 46, -101,141,240, 34, 52,178, 10,112, 98,199, 0, 76,128,108,197,201,222,198,250,124, 18, 32, 28,137,103,114,122,220,149,214, 16, 14, - 39,148,206,173,154,108,172,102,184,121,120,160,167, 96, 55, 11,140,114,210, 9,240, 36, 34, 59,240, 83,244,136,150, 50,140,234, -135,253,185,236,247, 19,210,153,185, 44, 21,212,139,234, 61, 95, 91,143,244,126,225,206,178,140, 28,191,246,198,186,196, 31, 29, -203,227,163,190, 92,191, 2,254,238,128,107,152,208,160,105, 89,191,247,142, 30,210,179,206, 72, 29,110,129, 25, 47, 34, 78, 4, - 48,214, 11,246, 47,233, 84,129, 44,102, 79,214,201,238, 34,147,128,191,135, 94, 64, 22, 18,152,149, 20,199, 81, 0, 76, 73, 35, - 80,130, 16,107,108,180,162, 24,187,236,123, 19,153, 14, 35,217, 92,210,168, 87,175,163,188,190,196, 81, 64, 0,169,246, 31,236, -201,209,225, 72,159, 71, 82, 66, 56, 0,140, 21,129, 38, 82, 63,235, 69,179, 41, 15,247, 6, 12,182,190,247,214,166,102,205,154, -161, 64, 98, 20, 83, 7,200,210, 64,183,185,154, 96,196,126, 79, 95,247,217,222,177,108,150,202,146,206,234,122,230,155,210, 28, -153,188,172,205,144,166, 53, 40,211,200, 89,179, 16, 24, 17,220, 89, 93, 95, 11, 71,128, 89,112, 68,236,105,150,128,125,222, 95, - 77,157, 30,198,156, 48,107, 14,135,142,133,120,245,230,117,174,195,163,189, 23, 4, 88, 17, 5,172, 78, 9,215,194, 57,120,119, - 46,108,230,223, 64,104,115, 7, 28, 91, 16, 92,192, 49,226, 51,144, 49, 45,233,217,108,247,122, 44, 3,227, 92, 29,156, 53,217, -243, 70,169, 29, 76,110,100,201, 2, 22, 67, 29,197,130,192, 34,225,200, 38,108, 36,198,231, 15, 1,129, 46,235,136,196,128,141, -168, 32, 88,155, 39,111, 99,106,145, 77,188, 0, 0,136, 62, 52,248,246, 81, 2, 6,113, 75, 46,109,253, 98,244,180, 1, 66,194, -105,198,100,201,156,212,197,160,175, 45, 58, 99, 61,215, 64, 17, 51,190, 67,146,208,128,246,179,171,127,190,232, 15, 53,216, 89, -226,190,185,182,213,144, 85,205,214,246, 79, 90,226,165,140,107, 32,164,104,147, 85,185, 16,244, 39,153,201,249,142,255,219,128, -155,172,225, 56,238,110, 84, 46,210,122,255,249, 60,198, 99,199,124, 63, 71,185,240,253, 19, 50,108,137, 55,242, 56, 18,149, 43, - 6,151, 25,102,134,244,166,115, 43,207,231, 11,124,237,136,253,253, 36, 3,238,105, 0,227, 59, 22, 47, 93, 54, 94, 37, 56, 12, - 80,220,106,240, 2,125, 7,112,249,247,135, 19,150,123,103,200, 72,179,106, 7,178, 73,182,161,230,108,189,141, 89,224,195,156, -119, 18,153,223,160, 35,135,199, 39,186, 70, 1,171, 7, 16,104, 42,148,235,242,193, 7,239, 73,254,219,223,145, 31,253,193, 31, -200, 95,252,133,238,159,241,156,153, 34, 74,198,121, 86, 2, 99,185,112, 0, 75,156, 93, 84,108, 0, 74,163,141,115,130, 38, 32, -250,154,204,198, 92,179, 66, 78,175,107,208,187,164,117,133, 61,222,205, 55,164,170,251,183,148, 89,145,157,173,101, 13,248,115, -242,235, 7, 7,242,191,254,249, 71, 20,180, 10,102,145,211,246, 88, 40,157,249, 70, 96, 19, 27,171, 90,165,224, 83, 72,231,131, - 47, 78,216,143,190,179, 85,149,151,174,173, 72,179, 59,166,195,105,247,103,108,139, 33,216, 61,105, 13,168, 75, 0,210,155,106, - 1,193, 72, 86,215, 37,193, 32, 30, 24,139,246, 89,151,120, 6, 4,180, 16,248,161,254,129,111, 32,101,236,127,113, 60, 17,179, -201,128,193,188,189,118, 78, 96, 34, 39, 77, 64,149,173,193, 21, 70, 57,161, 96, 9,224,118,228,168,206,209,126, 3,161, 12,199, - 32,163, 41,167, 84,208,167, 7, 40,231,236,252,130, 36, 78,217,140,238, 5, 84,203,138, 53, 6,187, 88,111,124, 17,136,109, 80, -117,131,111, 73,178,114,234, 51, 16, 5,168, 23, 52,222,233, 92,145, 99,139, 47,246,247,200,239,178,209, 40, 73, 39,244,136,213, -193,204, 59,218,169, 11, 35, 8,159,183,170, 1,208,183, 94, 91,151,255,251,111, 62,151,164,218,208,251, 79,207,229,201,253,115, -185,249, 82,221, 56,241, 19, 38,197,205,228, 84, 3,145, 55,238, 86,136, 41, 67, 83,227,119, 94,171,202,113, 55, 41, 31, 62, 51, -189,133, 74,206,147,170,104, 96,120,114,193,145,195, 36,178, 68, 48,138, 13,219,125, 41, 6,172, 99, 72, 0, 26,215,216,103,249, - 9, 99, 81,119,174,175,105,132,145,151,251,207, 71,172,113,162,196,136,114,189,238,124, 57,155, 37,101,118,208,213, 27, 30,179, -236,169,183, 42, 91,122,193, 94, 90, 15,248, 27, 27,114,255, 9,230,193, 71,178, 12,198, 50,221,212,201,216, 40,100,179,122, 24, -171, 26,185,157,104,230,116,187, 81, 32, 83, 27, 70,200,166,122, 16, 82, 62, 80,162,105,150, 90,247,206,135,178,219, 40, 24,223, -180,126,247,190,102,133,199,205, 62, 9, 34, 0,136, 89,205, 27, 96, 37,161,107,143, 4, 31, 27, 26,155, 16,165,149,211,206, 68, -178,185, 64,222,121, 98,132, 22,255,229, 15,110, 57,135,110,139,155,112,114,165, 48, 94,248,124, 26, 10,124, 22, 74, 48, 81, 82, -142,218,234,172,189,128, 51,212,199,122,160,119,119, 1, 28, 75,176,167,132, 25,243, 11, 93,179,147,189, 22, 65, 49,190, 58,137, -111,236,230,196,207,250,198, 52,142,202, 2, 74,175, 36,251,181, 64,101,240, 73, 71,158,235,253, 20,208, 7,234, 78,228,188, 51, -177, 49,149,200,227,216, 84,172,191,195, 6, 67, 89, 15,228, 52, 80,250, 98,166, 46, 51,147,160, 5,175, 57,208,192,136, 68,209, -106, 0,242, 20,224,145, 9,230, 74,167, 18,107,100, 56,135,212,169, 58, 83,148,166,246,207,134, 26, 5,142,221, 92,183,199,185, -109, 16,156, 84,212,105, 39,230, 17, 1, 73,207,219, 34, 79, 59,145, 43,185, 10, 71, 99,190,186,173, 1, 79, 65, 29, 74, 34,195, - 2,129,165,157, 9,249,198, 91,235,242, 15,239, 28,201,223,191,115, 40, 63,248,234, 54,203,128,160,168,109,104,112,244, 61,205, -184,255,245,223, 63,214,141,149, 37,176,114,238,128, 29, 4,234,137, 9, 84,112,132, 35,118,253,126, 87,121, 1,191, 0, 52, 1, - 42,186, 84, 75,121,107, 21, 32,168,152, 38, 12, 39, 49,199,136,162,151, 36,160,110, 68, 2,170, 12,203,161,224,250,174, 38, 76, - 45,142,162, 42,112,120,234,164,251,250,156, 16,168, 33,130,197, 56, 26, 72,113,102,122,128, 63,125,208,151,211,243, 25, 17,244, - 48,186,213,130,174,155, 31,184, 42, 70,130, 32, 54,252,124,240,232,185,188,251,217,231,178, 84,218,149,215,238,236,202,193, 73, -147,134, 3,100, 50, 57,135,176,135,147, 51, 97, 19, 3, 81, 34,146,167,122, 83, 48,119,215, 3, 37,175, 72,215,161,164, 25,122, - 85,246,142, 78, 89, 45, 88,140, 98,221,190,178,205, 12,229,222,195, 71, 52,100,200, 92, 65,205,140,160, 18,134, 47, 8, 67, 71, - 18, 20, 19,132,135, 82, 33,193, 51,201, 12,153,232, 72, 72,131,135,231, 74,146,236,253, 14, 6, 44,213,223,218,217,150, 23, 39, -167,204,250, 19,204,174,147,198, 9,129, 22, 66, 18, 12,116, 29,226, 90, 34,231,252, 12, 53, 27,177,212,151,116,165,105,236,215, -164,227,227,199,152, 80,236,153,146,150,105, 22, 4, 14, 34,102, 35, 97, 5,119,239,147,177,137, 59,229,211, 57,155,152,137, 77, - 77,206, 3,185,106, 12,231, 17,144,218, 19, 12,123,112,150, 32, 20, 17,223,160,154,173, 86, 83,202,149, 42,159, 95,224,250,246, -232, 29, 39,147, 37,217,217,110,104,192,231,235,179,187,160, 88,148,177,198,165,120,157,112,162,184, 23, 4,252, 54,254,231, 57, -146, 35, 39,122,201,241,213,180, 1, 77,245,222, 48,106,107,168, 97,207,102,204,145,216,102, 51, 36,200, 89,224, 99, 8,148, 3, -160,209, 73,199, 34,107, 52, 61,110, 99,151, 68,144,166, 15, 5, 69, 79,158,191,164,163, 35, 62,106,158, 73,111, 52,144,222,176, -167,235, 85,150,195,211, 19,185,232,116, 25,248,100,114, 57, 27,161, 77, 36,169, 85, 79,180, 53,214, 3, 35, 93,250,188, 71, 35, -171,200,160,119,159, 40,228,136, 33,224,200,210,116,160,153,124, 75,238,125,250,161,252,246,247,127, 87,126,240,253,223,150,119, -223,255,152,129, 76,202, 73,138,242,128,170, 29,107,169, 45, 10, 99, 13, 12,179, 25, 50,180,177,122,147, 50,201,102,206,245, 99, - 68,118, 98,213,196,173,245,117,174,223, 44, 48,234, 86,224, 75,138,197,178,238,159,156,180,187, 26, 16,158,188, 32, 25, 17, 21, - 46, 53,240,194, 92, 62,152,228, 48,170, 8, 78,126, 4, 46,139, 48, 29, 76,156, 15,246, 7,154, 48,105, 96, 89,203,235, 35, 69, - 18,144,144,183,174,213,229, 79,255,242, 83,181,225, 35,253, 14,245, 10,141,162, 52,212, 46,108, 44, 27, 19, 36,100,149,135, 26, -192, 21, 11,118,223,109, 77, 44, 71,227, 62, 71,150,125,142, 87, 38, 89, 57, 66,112, 99,242,176,160,127, 29,178,218,133,252,134, - 83, 13, 80,121, 3,160,148, 18,187, 54,103, 78,178, 30,205, 98,177,134, 0,177,162,213, 67, 60, 84,198,246, 54,130, 57, 4, 57, - 8, 30,193, 8, 8, 27,113, 99,123, 85,166, 25,159, 58, 3,245, 74,145, 65, 19, 2,193, 64, 50,122,174,250, 78,190,213,124, 5, -213,231, 22, 35,115,145,201, 81,163, 42,217,234,158, 75,179,121, 76,209, 43, 4, 74,211,185,167,182,126, 44,207, 30, 30,202,213, -187,155,108,223,138, 19,180,121,241,197, 25,136, 51,228,173,175,174,203,175, 52, 83,127,164,254, 19,149,160, 95,188,175,175,189, - 89,229,124,255,162, 58,134,246, 31,194,213, 43, 55,203,178,246, 81, 70, 30, 61, 71, 43, 36, 35, 91,181,140,212,107,101, 62,131, -114, 90, 3, 94,189,206,114, 97, 89, 26,213,172, 38,156,229,178,140,102, 23,210,239, 15,104,108, 87,214, 86, 37, 95,171, 74,175, -123, 65,102,141,156, 31, 82, 99,216,167, 30,122, 96,146,163,193,128,209, 43,206, 0, 64, 14,144, 89,205, 16,209, 26, 72, 77, 52, -162, 41, 53, 8, 46, 66, 95,243,213,235, 43,178,145, 10,228,164, 63,162,246,175,177, 0,233,193,130,195,211, 67, 89, 43, 70,210, - 68,230,134, 69,211,247,172,151, 99,210, 81, 34,163,197, 56,212, 72, 23,236,168, 59,182,204, 79, 23, 11, 20,182,168,184,130,245, -232,217,113, 71,254, 92, 35,113, 42,244,204,197, 64,107,142, 18, 20,189,180,114, 9,232,229,190, 60, 60,192,225,235,201,205,237, -170,188,126,115,133,229,101, 44, 27, 12, 31, 94, 15,142, 97,242, 88,199,182,232,228, 48, 31,155,228,225, 64,179,199, 93, 4, 14, - 36,108,208, 67, 94, 72, 19, 87, 32, 32,169, 16,171, 60, 96,225,193,140,135,222,100, 15,204, 83,122,221, 48,134,129, 30,178, 73, - 96,114,162, 39, 23, 83,150, 20,247,154, 67,145, 54,144,255, 3,170,119, 69, 62,212,151,124,174,213,130, 65, 40, 70,192, 4,195, -142,186, 30,192, 75, 36,224, 16, 26, 91,100,226, 9, 93,147, 66, 52, 50, 14, 99, 9, 77, 4, 69,215,203, 3, 59,223, 32,144, 51, -117,232,224,151,134,246,247,225,153,245, 75,243,186,105, 87,212,107, 94,217,196, 96, 47, 12,134,102,247,186, 57, 90, 32,232,137, - 77, 80,128, 51,253,250,247,155,213,136, 76,117,200,196, 61,189, 46,100,254,177,235, 19,126,231,181,101,249,217,135, 39,242, 55, -239, 60,147,223,255,250, 22, 91, 26,129, 3,224, 12, 70, 51, 53,102, 61, 41,100, 26, 54, 87,237,251,142,254,208,168, 92, 67, 55, -218,129, 63,139,155, 39,135,225, 69,111, 30,193,193,254,248, 55,134, 19, 89,121,172,209,123,228,123, 78,137, 9,232,244, 88,114, -250, 76,115,115, 32,174,125,208, 33, 74, 60,236, 82, 70,211,119, 82,171,152, 16, 0, 69,100,103, 48,151, 23,199, 19, 93,187,148, -220,190,217,144, 98,169, 37, 7, 77,205,100, 48,118,133,121,113,223, 16,214, 4,130, 37,192, 53,221,151,159,222,123, 34, 15,143, -142,229, 90,253,154,116,131,169,252,135,123,239, 19, 25,155,210, 12,148,153,114,100,207, 24, 78, 27, 37, 85, 4,183, 41,102, 70, -154,225, 97,158, 50, 54,241, 25, 16, 94,172, 47, 47, 19,212,245,244,232,132, 61,108,162,216,213,145,220,220,217, 98,134,253,112, -239,128, 25,186,233,108,167,233,116,208, 7, 15, 66, 3,104,225, 89, 84, 52,235, 70,169, 15,223,153,112,172, 82,112, 66, 96,109, - 67, 96,147,143, 93,239, 48,107,200,243, 42,192,117,125, 56,150, 33, 3, 86, 42,249, 69,145, 35,165, 41, 26, 63,186, 39, 44,147, - 51, 27,112,146,148, 54, 30,108, 70, 58,141,114, 40,178, 76, 53,160,232, 39, 22,212, 33,193,137, 78,156,234, 90,200,137, 7,223, -218, 98, 9,219,179,192,200,224, 39,153,212,160, 74, 29, 7,214, 28,107,131, 44, 5,149, 40,227,137,143,152,173,226,140, 86,213, -129,163,167, 27, 76,109,244, 47,229,104, 69,225, 60, 80,209,152,239, 31, 72, 33, 95,224,245, 1,172, 55,211, 44, 9, 85, 43, 84, - 2, 18,201,156, 6,218, 70, 2,196, 0, 96,161, 41, 29,123,116, 0,160, 7,134, 35, 53,250, 77,161,208, 69, 30, 99,133,104, 49, -120, 25,158,123, 16,141,232,223,104,118, 46, 12,246,217,238, 74,121,172,100,152, 10,150, 58,144, 30, 88, 5, 83, 68, 36, 19,215, -145,198, 60,119, 72,253,112,140,151, 34,104, 36, 32,151,186, 15,106, 35, 54,215,121,159, 77, 78, 48,120,116,124,100,253,114, 90, -193,176,255,200, 18, 65,147, 26,135,234,116,145,249,229,138,180, 31, 51,200, 58,251,105, 86,125,130,192, 38, 62,160, 8, 56,159, - 14, 73,198,117,218,106,201, 23,159,223,147,157,205, 85, 57,189,232, 48, 51, 71,192,148, 77,162,229, 50,160, 83, 92,106, 84,228, -238,181, 43, 12,184, 32, 50, 3,142,244,124, 62, 69, 71, 14,135,100, 36, 45,194, 4,194, 79,197, 78,237,204, 35,247,125,191,167, - 1, 73,231, 76,207, 86, 29,164,227,114,116,114,172,203,153, 32, 16, 14,179,247,109,104,206, 35, 59, 7, 29,179, 62,175,243,126, -223,102,203,211, 38,206,131,137, 29, 84, 29,243,154,176, 32, 25,188,163, 54,127,117,185, 46,223,188,179, 34,255,251,223,221,167, -239,120,122,210,209,128, 63, 65,223, 38,142,127, 62,244,244,249,115,204, 51, 47,105, 40,251, 97,122,134,240,238,144,188, 9, 8, - 44,103, 51,207,233,177,143, 76,201,205,105,146, 47, 90, 44, 11, 89, 39, 4,150, 40,161,115,222,190,100,107,207,170, 48,250,227, - 84,167,156, 51, 48,197,212, 67, 75,125, 91, 95,247, 25,206,225,203, 55,111,203,203, 87,151,229,107,119, 26,122,125, 67,130,252, -176, 46,133,156,174, 75, 16,179,175,206,210,122,210,112, 74,163,241,136,252, 3, 12, 38,244, 92,165,211,106,107, 46, 78,216, 10, - 5,198,171,144,207,200,227,195,158, 44, 85,242,124, 70,159,238,117,101,101,167, 42,133, 98, 81,237,243, 92, 3,153,169,188,125, -239, 72, 74,154,225,175,174,150,229,159,254,209, 29,249,223,254,245, 39,114,210, 30,201,189, 71,103,242,228,233,150,220,126,117, -201,170,130,151,178,171, 26,144, 23,211,242,234,203, 85,249,213, 39, 79,229,215,247, 35,249,173, 55,138,242,242,203, 53,137, 80, - 13, 5,206, 65,202,154, 32,169,127, 78, 98,164,173, 94,148,165, 2, 64, 54, 13,246,209,160,155,131,210,117, 89, 13, 42, 34,227, -116,202,122, 51,153, 8,163, 28, 86,210, 1,192, 1,142, 43,229,132, 53, 80,242, 0, 5, 41, 28,240,175, 30,237,203,234,102, 44, - 47,223,218,225, 56, 84,178,144,149, 41,178, 25,189,249, 84, 89, 99,159,164, 25,250,200,169, 34,229, 83, 54,227,222,233,142,228, -139, 62,196, 81,150,165,221,235, 48, 2, 68, 41, 9,175, 71,180, 71,157,110, 32,106, 53, 40,128,212, 38,128, 39,213, 82,138,217, - 98, 65,127, 70,129,177, 11,193,251,229, 82,166,141, 14, 30,248,135, 7, 19,142,217, 33, 27,251,235,183,159,233,251, 82,100,139, - 91, 72,129,162,204,143, 18,139,129, 13,140,189, 56, 8,156,196,159,110,154,158,151, 96,121,187,170,239, 27,244, 76,175, 28, 56, - 5,102,215, 65, 90,202,171,171, 52, 48,109,189,222,125,117, 34,143, 95, 52,217, 35,218,220, 76,202,118, 61, 39,195,238,132, 70, -244,214,102, 85,238,236, 52, 40,204,194, 82,231,110,142,189,126,244,137,145, 73,244,213,185, 6,164,106,117, 98, 43,153, 2,103, - 38, 9,184, 1,195, 28,214, 58,201, 26,148,224, 2,146, 5,128, 79,242,114,164,206, 8, 7, 25, 18,177,205,246, 80,238, 31,245, -228,176,217,151, 19,205,210, 49,254,135,209, 35,234, 21,235,245,182,218, 99, 58, 11, 80, 53,163,231,220,213,140, 2,146,183,140, - 76,245,151,119, 86, 18,178, 83,152, 81,232, 68, 32,111, 59,231, 17, 98,159,153,114,135,234,116,224,224,161, 84,247,211, 79, 79, -228, 39,191, 58,144,111,188,188,193, 81, 18,206, 16,207, 1,188,154, 16, 40,136,209, 96,128, 72, 34,151, 81, 68, 14,141, 79,201, - 69,232,103,103, 45, 19, 76,249, 11,213, 39,159, 6,210, 50,121, 75,230, 41, 47,184, 80,106,211,107,206,235,107,250,152,103, 7, -159,122,218,148,240,192,252, 70, 67,224,219,216, 33,222,248,112,239, 66,142, 91, 19, 96, 23,229,214,237,154,124,116,255,133,236, -181,206,213, 8, 54,164,166,123,230,238,149, 21, 42,174, 17,124,166,247,249,240,197,145,252,248,167,239,202,241, 69, 95, 86, 26, - 13, 41, 55, 10,210,109,246,216,154, 0,146, 25,165,188,128,128,184,177, 6,149, 83,126, 21,192,104, 64, 58,163,159,110,216, 2, - 19,222,129, 65,216,212,192, 24,251,105, 79, 51,230,216,141,253,161, 84,186, 92,173,144,159,125, 79, 29, 61, 50, 63,148,160,221, - 16, 55, 29,250,194,104,161,154, 82,131,166,182,254, 14,189,118,211,120,241, 25, 16,147, 93,107, 60,231,247,162,207, 92, 45, 21, -153,245, 99,230, 29, 37,252,131,102,155,215,134, 99,142,215,152,130,157, 80, 33, 13,125, 72, 98, 20,220, 68, 64,232,246,124,130, - 35, 97, 86, 90,197,154,108, 44, 53,228,179,158, 6,103,169,188, 62,167,172, 85, 25, 18, 54, 13,129,178, 60, 28, 22,164,106, 99, -226, 67,109,253,125,114,241,199,210,236, 12, 13,177,168,251, 10, 83, 32,233,140,149,196, 47, 52,147, 41,149, 83, 6, 84, 3,233, -139,102,205,125, 53,176,129, 24, 40, 15,250, 2,112, 64,181, 98, 82,191,191, 66, 80, 21,168,130,241,153,183,174,110,115,178,230, -201,126, 75, 3,213, 22,219, 11,160,121, 6, 62, 7,129, 7, 80,215,212, 2, 64,118, 77,102, 66,143,182,204, 28,185, 71, 28, 78, -146,146,205,224, 28,159,146, 4,196,192,163,145,181,110,146, 6,108, 69,208,131,253,144,136,173,213,135,253,235,185,249, 95,100, -238,200, 12,145, 45,162,237, 55,163, 28,169,190, 42, 35,142,233, 47, 65,213, 61,244,194, 51,169,148,179, 35, 33, 43,138,148,203, -157, 67,161, 5,128,187, 46,193,139,169,116, 73,247,112, 94,186,231, 45,153,133, 30,117, 48,176,159,131,192, 70, 58, 81,209, 0, -170,191, 90, 42,112,180, 11, 35,108,145,102,193,223,254,218,215,229,175,254,254,111,137,101, 66,216, 2,241, 25, 96, 57, 16,166, -124,246,232, 57,103,159,209, 14, 1,109, 48,140, 27,166, 77, 64,129,156,228,184,167,177, 63,226, 57,206,166,125,102,135,149,114, -201, 33,110, 98, 89,207,213, 40, 81,187,181,186, 70,116, 61,130,200,111,222, 89,147, 31,191,253, 72,246,206,250, 60, 91,163,137, -157, 1, 84,224, 18,197, 18,133,160, 50, 41, 19, 81,234, 15, 3,182,206,254,231,255,243, 3, 61,131, 87,229,251,175,173,200,141, -173,186,252,237,175,158,211, 38, 18, 23, 1, 7, 9,159,145,141,201,200, 88,128,204,116,214,103, 53, 33, 0,157, 49, 42, 12,160, - 62, 37, 31, 68,192,128,216, 2,168,153, 97,171,196,218,174,161,171,180,144, 22, 44, 54, 28, 68, 38, 87,166,205, 4,193, 13,130, -232,116,210,250,184, 0,166,145,254, 87,237,206,177,218,167,139,238,128,109,221,107, 91, 59,186,126, 89, 57, 59, 63,151, 7,251, - 73,181,243, 51, 89,107,148,200,112,137, 41,171,163,211, 14,217,239,206, 48, 34, 10,128,164, 6, 56,160, 93,142,196, 68,117, 0, -190, 76,165,115,234,192, 83,228,171,191,185, 13, 54,200, 30,193,121,183,118, 27, 92,231,189,163,174, 60,126,222,150,151,111,123, -114,250,188, 47, 23,189,185, 52,244,239,191,251, 70,149, 19, 77,235,234, 35,254,155, 63,126, 89,254,244,223,222,211,115, 22,200, -251,239, 31,201,245, 43,122, 31,200,214,125, 27, 93,226,232,102,218,231,180, 14,206,127, 94, 3,244,171,215, 86,216,250,229,152, - 27,180,176, 83,174, 92, 15, 91, 26,141,186,164,251,228, 24, 79, 34, 73,181,155,207,159,189,144, 87,119, 43, 82,241,161,194,165, -134, 26,212,157,122,104, 58, 19,155,145,195,166, 79, 3, 2, 31,154, 81, 42, 20, 51,228,107,255,248,168, 37,255,230,157, 23,122, -152, 79,228, 31,255,214, 64,190,253,149, 27,174,108,231,244,214, 51, 70,249, 24,133,147, 75,242,135,133, 97,131,129, 57,191,232, -201,105,189,170, 15, 54,197, 18,247, 8,163, 4, 26,249, 52,178, 14, 1,159,180,172, 45, 5,246, 32, 50,240,120, 68,180, 94,116, -135,114,180,215,162, 35, 0,187,213, 16,115,146,152,157,213, 5,191,115, 5, 6, 50,173,198,186, 68,201,215,191,252,217, 35,249, -189,111,236, 18, 77,237,197, 11, 29,120, 71,205,167,239, 9,157, 50, 29, 12,177,112,172, 6,200,231, 52,233,109,207, 52,173, 85, -251,161, 7,206,102,193, 96, 56,105,164, 56,122, 55,151,114,173, 34,167,247,207,101,211,159,171,243, 72,200, 43,175, 52,244,160, -214,196,134,166, 76, 98,214,207,100,221, 60,144, 41,142, 9,169, 99, 69,154, 71, 35, 70,185,158, 83, 16, 2,168,136,235,203, 18, -143,190,115, 70,129,104,126, 18,252,200, 36,246, 13, 57,170,135,181,158,157,203,254,254, 57,208, 55, 4,234,172,100, 60, 89,219, - 41, 73,230, 90, 69, 80, 45, 92,232, 28, 99,237,147, 78,158,239,115,205,226,223,191,191, 47, 80,106,223,185,178, 44,119,175, 54, -100,163, 84,162,195,109,117,212,105,232,125,173, 46,137, 6, 72,194,140,140, 89,112,152,146,230, 64,100, 85, 3,138,239,189,190, - 41,231, 3, 4,105, 1,193, 39,158, 26,172, 92, 38,150,122, 30,178,182,122, 56, 19,230,168, 73, 35,227, 50,114, 84, 51, 38, 4, -234, 69,114,181, 96,252, 1,120, 69, 52,141,229,172,175, 89,107,156,227,136,219,151,231,166,216,247,117, 35, 84,120,109, 62, 69, -176,169,238, 13,117,182,145,141, 10, 17,217,143,224, 72,159,253, 13,189,239,118, 15,122,241, 99,185,178,179, 44,239, 63,120, 76, -225,148,134, 58,191,255,234, 79,222,148,179,206,152, 35,156, 89,181, 16, 48,242,255,254,131, 15,228,131,251,207,184,150, 66, 25, - 96, 79,238,239, 63, 99,118,142, 96, 7,198, 99,255,172,107,104,240,208,178, 90,148,177, 49,154, 21,163,167, 45,198, 62, 54,211, -115, 83,206, 22,100, 99,165, 33,205,110,159,253, 53,150, 84, 81, 69,208,181,219,221,221,150,195,211, 83, 57,109,183,233,248, 23, - 96,186, 4,229, 37,221, 94,208,123, 93,173,213,100,181, 90,149,246,160, 47,125, 10,233,164,104,228,145, 65, 99,127,178,210, 65, -221,229, 20,193,106,232,167,195,241,130, 28,230,249,209,177, 81, 74, 38,172,122,224,197,191,233, 47,147, 42,119,110,253,122,234, - 82,133,191, 33,128,137,157, 19, 11,157,210, 26, 90, 2,248, 28,148,254,241,185, 8, 80, 16, 20,160,167,153,244,173,210, 6, 99, - 11,231,101, 84, 4, 30, 29,107,204,121,240,132, 58,239, 50, 51, 60, 56, 38, 56, 42,100,253,163,177,141, 30,198,226,185, 76,168, -168,219,117, 64,114, 28,216,128,118,183, 67,101,179,171,235,117,246,152, 51,196, 90,204,105, 60,143, 90, 93, 55, 29, 51,146,126, -255,130,253,119,140, 83, 26,229,176, 93,183, 23, 58,158,238,132,209,201,130,235, 29,109, 41, 0,197, 96,196,145,141, 3, 28, 6, - 91, 55, 2, 17,208,220,248,240, 97, 67, 56, 26, 21,204,105, 48, 13,101, 29, 93,182, 54,102,174,205,226, 47,244, 46,112,255,250, -249,137, 49,202,215, 99,117,218,105,117,206,105, 58, 59,140, 54,198,100, 2, 12,156,234, 86, 40, 81,128,125, 61,231, 89, 30, 7, -154,229, 15,141, 43,190, 6, 22,185,222,128, 99,176, 60, 31,177,199,103,214, 27,132, 28, 47, 44,149,171,196, 34, 52,212,142, 96, - 66,231,180,217, 81,251,216,145,205,237,171,242,214,107,175,115,188, 21,211, 16,212, 90,159,134, 54,254,164,103,235,232,172,165, -153,253, 41,113, 45,188, 30,117,234, 83,202,150, 38, 37, 91,207, 51,192, 51,179, 93,114, 88,155, 4,157, 50,156, 51,170, 64, 32, - 84,201, 47,175, 81, 92,101,164, 25,252, 95,252,226, 11, 86, 97,192, 76, 7,209, 37, 6,230,122,157, 0,131,161, 5, 0, 77,248, -209,100, 65,138, 99, 58,239, 72, 82,254,236, 39,143, 24,176,255,225, 55,111,201,243,147,190,102,192, 35,246,171,141, 60,197, 20, -202, 56, 41,158, 77, 92,246,235,243, 89,143,108,141,168,116, 64, 11, 36,156, 25,200, 19, 61,105,171,122, 4, 78,152,201,145, 83, -249, 54,167,141,228,175,162,107,180, 84,206, 16,195, 65,213, 78,253, 59,208, 15, 95,244,250,198, 96, 8,177, 23, 76, 49, 68, 38, -174, 4, 62,135,117, 13, 94,227,160,167,235,156,213, 61,214,227, 90, 54, 47,134, 44,107,131,132, 8,120,155, 97, 96,218,237, 4, -228,138,181,177, 80, 77, 67, 27, 3, 84,192, 8, 68, 49,227,143,253,249, 80,157, 55, 2,173,149, 70,142, 90, 40, 70,174, 52,147, -183, 63,236,200,222,225,128,100, 69,103, 23, 35,201,233,186,188,247,233, 76,190,254,122, 81,178,154,152, 93,209, 76,254,127,248, -231,111,201,120, 48,101,208, 19,163, 5, 1,172,136,235,195,123, 60,183,145,252,252,221, 67,174,223,195,253,182, 52,155, 99, 77, - 18, 82,148, 38,151,132, 56,186,108,211, 78, 73,222,168,105,198, 51,156, 75,170, 82, 34, 59,218,190,110,200,186, 46, 78, 41,107, - 7,196,159, 77,164,170, 17,197,100, 62,144,173,122, 29,192,120, 82,140,150,234, 21, 58, 32, 31,125,178, 74, 81, 74,154, 89,188, -191,215,214, 5, 46,178, 39,242,147,143, 14,137,140,125,105,119,153,243,165, 48,214,200,244, 64,249, 8,201, 84, 95, 23, 3,102, - 5, 96,165, 20,145,189, 67,121,239,241,185, 60, 60, 11,168, 50,246,237, 87, 55,101,123,181,204,191,203, 71,150, 69, 36, 28, 91, - 25, 75,138,238,208,193,112,149,139, 57,141,230,215, 52, 98, 77,179,252,129,217,229,172,187,126, 70,236,250,190,140,102, 74, 24, -255, 65,100,254,222,167, 7,242,163,239,220,224, 70,128, 65,129, 99,206, 81,245, 76, 56,159, 11,193, 4, 32, 95, 49, 7,154,244, - 76, 92, 5, 78,177, 57,113,180,145,227,177,147, 24,180, 89, 85, 40, 58,249,177,205,154,127,253,238,146,188, 56,189,144,243, 30, -200, 45, 2,178,172,129, 1,106,238, 88,171,188,177,161,225, 57,118, 22,153,188, 30, 62,123, 58, 14,196,239,129, 28, 37, 67,245, - 54,193, 96, 33,145,180,134, 0,103,140,234,104, 3, 7,122,120, 33,186, 1,195, 10, 35, 57, 82, 47,119, 54,138,229, 43,155, 75, -242,242,110,193,120,197,209, 35,136, 12,113,185,160, 41, 98,133, 64,255, 61,237, 76,165,255,172, 39,103,221, 9,121,214,161, 73, -223,237,235,225, 15,243, 84,107, 75, 4, 9,234,139, 35, 81,247, 25,219, 36, 32,158,196, 18, 84,152, 64,156, 26,145,215, 96, 5, - 89,120,194,136, 81,144, 73,189,245,202, 26, 75,149,141, 90,222,218, 5,151, 67,242,238,186,131,152,207, 7, 11, 81,213,172,205, - 35,154, 63,102,166, 68,109, 97, 61,224,169,130, 33, 89, 41,186, 65, 46,102, 35,216,193, 72, 32,153,234,134, 26,253,158, 6, 54, -182,136,127,177, 7,112, 29, 26, 48,134, 36,138,240,229,141, 27, 75,210, 26,198,242,222,163, 3,105,182,187,172,136,108, 47,233, - 94,242, 1, 2, 4,175,243,132,145,248, 47,126,253,133, 26,203, 99, 13,242,190, 38,159, 63, 63,144,139, 97, 68,132, 60, 20,156, -218,106,180,178, 40,113,170, 99, 26,142,219, 76, 62,139,217, 28,203,235, 40, 19,135,228, 89, 78,154, 18,157,166, 0,200,152, 43, -165,188, 6, 0,231, 52, 30,169,148, 9,225, 0,213,127,125,115, 83,141, 70, 83, 94, 28, 31,153, 58,153, 26, 69,128,200,168,163, -190,200,126,245,250, 43,234,160,225,212,145,157, 19,167,193, 25,103, 27,219,202,146,137,206, 70, 8,129, 36,207, 59,213, 60,124, - 30,202,128, 32,187, 48,129, 7,223, 62, 55, 54, 29,102,161,108,170,245,148,219,221,174,113,209, 47, 36, 38, 99, 11,210,141, 33, -209,198, 15,113, 31,157,254,192, 57, 49,155, 40, 64, 25, 17,224,206, 81,111,172, 65,118,154,206, 29, 85, 4, 48,142,129,202, 24, -207, 26, 78, 31,153, 24,130, 2, 92, 83, 68,190,243, 33, 41,108,209,107, 55,125,104,159, 35,153,192,189,160,122, 5, 64, 90, 87, -141, 46,250,217,213, 60,184, 50,202, 12,162,234,229,156,188, 56,187,112,123, 62, 45, 41, 0,241,244,140,125,227,149, 93,185,190, -177, 36,159, 63, 61,209,247, 25,179, 27,198,219,144,229, 49, 32,246, 3,155, 20, 73,103,201, 24, 56, 1,217, 11, 81,253,150, 1, - 34,232, 3, 40,111, 52,236,243, 28, 96,111, 99,118, 31,193, 14, 74,242, 73, 39,186,131, 17, 58,150,171,243,110,164, 18,193, 11, -108, 14,190,135,224,179, 52,229,141,137, 97, 1,241,191, 11, 64,187,189,158, 38, 69, 61,241, 53, 40,131, 35, 65, 64, 48, 82, 67, -142,177,177, 24, 1, 64, 48,176,192, 65,192,247,126, 46,105,205,176, 11,149, 42,249,225, 1, 83, 48,142,141,153, 52,207, 78,101, -101,105, 69,150, 26, 13, 73, 23, 42,156, 8,193,244,198,253,199,207,100,105,233,235,178,179,123, 85,126,252,215,255,206, 20, 22, - 39, 1, 37,129,177, 95,176, 14,101,205,236,239,222,188,166, 1,210,132,253,100,162,221, 29,235,100,146, 85,150, 36, 71,114, 57, -203, 15,162, 39,138, 6, 25,128,175, 63,236,202,249,180, 35,195, 66,131, 66, 44,209,188, 39, 27,141,138,238,135,161,180,240, 44, -245,158, 1,254, 5, 11, 31,184, 8,206, 59, 23,154,157,110,202,237,171,235,242,244,240,156, 1,224, 20,156,250, 8,122, 52, 3, -253,155,119,247,228,206,181,101,249,227,111,223,148,127,249,231,239, 73, 79, 3, 92,112, 52,228, 11,232,245,103, 9, 56, 37, 55, - 0,112, 40, 32,104,130,224, 9, 70, 71,117,191,233,210, 82,240,137, 99,156,144,224,228,136,101,196,128, 28, 9, 23,147, 20, 88, - 63,221,206,208,130,207, 80,113,210,218, 92,160,219,197,216,215,241,160,199,224,131, 65,168, 3,123,146,117, 77, 3,206, 43, 27, -155,250,124,134,210, 40,198, 20, 24, 2,171,219,136,140,133, 83,169, 85, 34,158, 55,144, 94, 13, 58, 49,251,245,164,132, 29, 91, -102, 76,157, 4,207,103,251, 22,109,224, 96, 52, 35,110, 8, 2, 48,168, 10,163, 5,138, 80, 23,159,129,132, 7, 62,232,139, 39, - 77,217, 82,127,134,202, 8,198, 52,223,121,120, 38,231,195,153,174,221,170,220,218, 90,146,106, 61, 43,229,114,154,254, 9, 97, - 11, 21, 33,225, 63, 82, 70, 99,253,158,174,229, 7,159, 29,169, 35,135,128, 78, 95,126,246,235, 19,249, 39, 63,184, 66, 27,138, - 0, 38,230,172,158, 57,247,100,102,185, 38,105,205, 48, 3,208,197,234,162, 67, 78,244, 37, 61,148,156, 95,199,240, 61,184,129, -193,237, 14,118,160,181, 50,133,236, 9,146,201, 27,177, 4, 54,182,232, 69,254, 74,191,228, 95,253,221, 35, 3,219,160,220, 59, -245,229, 47,223,126, 70, 7,124,117,169, 72, 84,108, 58,155, 97,249, 43, 5,131, 3, 24, 52, 56,213,243, 32,173, 17,121,228,135, -114,120, 30, 72, 71, 35, 42, 4, 11,127,251,238,115,249,174,102,131, 55,183,106,156, 83, 54, 36,176,161, 45,173, 95, 98, 15,159, - 68, 20,200, 92,138, 9,150, 74, 81,214, 5, 57,138,239, 52,159,103,145, 57,196,145, 70,124, 99, 61,104, 95,191,187, 34,217,199, - 77, 73,171, 51,203,131,203, 61,158, 73,168, 14,245,209,241, 68, 31,112,150,142,240,139,131,142,124, 95, 95, 87, 79,199, 44,193, - 65,119,184, 31,100, 53, 0,137, 44,210, 4, 91,215,116,206,108, 13, 78, 7,193, 67, 31, 35, 49,106, 79, 86, 17, 16,229,151,184, -249, 40,161,170, 27,205,155,153,128, 7,123,230,208,124, 70,251,129,204, 91, 8, 54, 82, 18, 97, 62, 30,181, 40,140,206,100, 77, - 8,129,189,104,148,198,147, 78,119, 21,237, 0,244,205, 17, 12,169, 97,234,107,102, 11,144,227,140, 8,221,152, 4, 61, 41,189, -255,132, 26, 93, 8,183, 68,211,144, 51,176,204,244, 99, 19, 81, 33,152, 72,151, 29,173,142,126,119,168, 81,232,140,153, 46,230, -123, 29, 46, 67,163,113,143,130, 53, 43, 48, 0, 9,235,185,218,172,118,204,195,178, 89,246, 57,255, 76, 46,244, 0,100, 7,174, -183, 74,109,227,148, 1, 15,125, 3, 11, 98, 18, 0,180,178, 0, 46,213,213, 89, 23,210, 54,198, 38,190, 85, 70,192,235,239, 1, -132,134,185, 90,125,199,170,110, 88,191,148,228, 38,245,156,112,139,137,202,197, 86,173, 64,207, 90, 29,111, 0,192, 12,203,250, -121, 73,228,242,172, 48,225,185, 65, 78, 34, 23, 15,101,214,107,201,211,211, 80, 62,125,188, 39, 53,117,180,199,157,166, 92, 95, -174,200, 68,179, 60,140,248, 61, 57,238,200,223,125,248, 49,121,164,255,199,127,246, 95,112,222,251,167, 31,125, 78,162, 9, 24, - 55, 56, 35, 56,145,188, 6,186, 61,162,111, 69, 10,153, 44,157,224,132,104, 91, 83, 75, 35,117,163,238, 65,240, 92,147,102,185, -121,238,156,180, 71,103,177, 82,175,201,245,237, 45,249,252,201, 51,205,210,207, 12,181,203,153,216,148,101,134,177,101,234, 32, - 97, 1, 41, 13, 62,243,241,225, 33,203,244,236,183, 7, 1,117, 5,216,250,136,141,188, 5,149,151, 82, 1, 98, 17, 9,226, 53, -128, 7,192,172, 63, 70,113, 76,109,208, 24,233, 16,181,103,128, 5, 72,250, 68,196,123,139, 72,126, 33,153, 76,237, 3, 91,227, - 40, 54, 80, 25,178, 44, 92, 59,228, 99, 17,116,132, 60,247, 73,150,111, 23, 0, 82,244,125,147,177, 41, 66, 1, 61,140, 32, 7, -217,116,190, 92, 32,176,118,145,241, 19,231, 17,196, 78,214, 18, 83,178, 41, 87,177,243,137,104,198,251,179,233, 28,105,107,201, -104,153,207, 73, 53, 25, 75,123,144,100, 32,128,201,148,179,139, 1,251,240, 81,100,193,244,253, 61, 93,195,153, 79, 84,249, 96, -112, 33, 89,117,120,172,247,121, 17, 43, 53,184, 63, 80,122,194, 17, 76, 7, 99,142, 34,194,152,227,188,226,119, 56, 31, 8, 62, - 18, 94,193,177, 49,122,204, 78, 9,168, 11,173,186,151, 97,255,203,212,255, 18, 46,176,193,232, 25, 2,119,236,201,178, 58, 0, - 61,164, 68, 86, 79,136,120, 55, 14, 12, 84, 8, 89, 13,240, 13, 24, 10,103, 50,101,255,220,206, 32, 85, 0, 1, 59, 46,234,217, - 81, 19,138,209,202, 13, 13,224,128,189, 25,143,186,166, 76,152, 68, 53, 50, 43, 39,122,175, 39,167, 39,196, 2,124,252,217, 33, -193,137,133,188, 6,165,153,156,236, 29, 28,201, 43,183,110,200,214,230,182,124,252,233,167,156,229, 70, 32,144,242, 12,233, 62, -212,160,226,237,247, 14, 57,223,156, 72,100, 88,141,192,135,227,153,224, 90, 50, 12,126, 67,182, 41,210, 78,120, 40,118,147, 63, - 8, 10,146,254, 92,118,119,114,116, 68,168, 86, 65,125,174, 94, 45,105,144, 17,200,137, 38, 3,157,193,148, 54, 35,149,156, 19, -251,242,244,232, 76,207, 77, 81, 94,187,179, 45,239,220,123,206,164, 47, 92, 96,131,244, 67,126,242,209,145,252,240,205,117,249, -254,155,183,228,139, 23, 23,116,188, 40, 18, 33,233,130,253,107,247,109,154, 10,242, 96,125, 2,249,128,249,153,176,186, 48,159, -245,101, 24,217,152, 34, 18, 28,150,226, 25,124,122,151,147, 51, 16, 80, 90,214, 32,176,133,178,250, 48, 48, 76, 11, 91,170, 99, -142,127, 2, 21,143,224, 6, 65,228, 80, 29, 48,136,158,110, 95,217,181, 73,162, 89, 79,118, 87, 86, 56, 25,129,246, 45, 4,138, - 74,165, 28, 65,167,208,183, 95, 95, 47,145, 61, 16,128, 72,236,215,225,200,232,119, 17, 40, 15,134, 8,208,114,100, 41, 5,158, - 75,205,175, 6, 91, 85,121,118,116, 65, 26,105, 84, 80,129, 1,170,235,190,190,162,193, 97, 77,215, 13, 98, 71,235,203, 37, 61, -143,250,140, 59, 73, 13,114,124,249,201,199, 7, 26,144,119,229, 71,223,186, 69, 14, 1, 84,158, 60,246, 32,141,142,124,166,201, -225, 64,109,198,230, 82, 94,237,177,222,215, 96, 76, 48,225, 79,222,127, 38,223,188, 85,151,173,149, 60, 19,162,120, 20,152,157, - 68,203,123, 22, 38, 53,114,152,201,217, 97, 79,182,151,179, 82,210, 72,172,171,209,239,139,206,140,220,189,145, 46,238, 76, 15, -241,141,141,138,108,248,106, 60, 70, 19, 58,234, 17,230,190,245, 0,141,250, 6, 24, 59, 60,234, 74, 29,236, 72,129, 33,138, 1, - 36, 66,148,255, 11,205,138,223,252,225, 45,169,175,169, 65,210, 40, 18,168,207,136, 20,163,154,185,131,223, 83, 31,216,176, 27, -200, 23,123,122, 72,243, 57, 50, 95,225, 88, 32, 99,254,217,199, 7,140, 68,239,238,212,105,188,216,123,156, 71,206,144, 88,223, -149,108, 98, 40,249,160,127,134, 57,210,113,192, 69,206, 58, 49, 1, 70, 46,144,121, 69, 63,158, 68, 21,105,249,254, 87,182, 37, -159, 0, 18, 58, 38, 83,209,103,143,187,242,217,243,174,252,119, 63,188, 65, 29,237,141, 90, 78,179, 38,204, 51,206, 37,163,155, -231,222,254, 64, 62,111,247,229, 63,251,246,182,140,184,241, 61,169, 2,153,158, 72,176, 55,152,102, 22,212,211, 12,184,175,247, -228, 75, 77,191, 99, 6, 3,125, 50,144,205, 34,128, 93,122,233,216, 12, 57,225,248, 69, 52,140,136,146,135, 3, 8,209,106,208, -181, 76,229, 49,243,106,243,143,230, 68, 81,133,240, 57,219,205,100, 91, 45, 95,255,188, 39, 23,157,145,236,235,207, 97,107, 68, - 48, 33,156,127,235,124,200, 40,241,171,215, 74,154,237,235,198,208,236, 71,230, 70,205, 2, 7,207,210, 53,231,122,141, 56,162, -166,225,109, 42, 4, 85, 79,200,235,157,145, 79, 59,114, 72,252, 36,133, 22,208,177,139, 52,136, 25,143, 93,175,213,113, 16,103, -153,153,138,245, 10, 61, 99,139,235, 67,120, 2,179,247,189,169,149,212, 81, 37,160,250, 81, 32, 23,224,138, 7, 80, 47,145, 87, -199,104,173, 5, 35, 87,240,228,201, 65, 91, 18,122, 56,118, 26, 5, 25,106, 0,179,190,148, 99, 6,129, 96, 4, 14, 52,156,196, -156, 9,198,135,171,173,147, 4,180,175,245,153,148,188, 57,163, 89, 28, 28,150, 84,199, 67,141,216,167,122,221, 49, 53, 6, 6, -122, 61,239,222,127,206, 49, 56,232, 43,163, 56, 80,129,250,158, 30,234,247,238,171, 3,191,247, 88,166,106,168,111,108,109,200, -191,255,232,190, 28,156,119,168, 76,134,160, 17, 35,131, 32,150,128, 0, 11,100, 83, 23, 35,104, 0,104,114,214,217,209,231, 70, -228, 18, 72,200, 90,163,206,114, 41, 40, 95, 61,167, 90,136,245, 44, 23, 32,105,185, 34,251, 39,103,236,163, 3, 96, 20, 56,240, - 86,232,102,196,225,104,140,223,217, 90, 51,200,144, 19, 14, 48,135,207,136, 28,144,173,140,185,234, 36, 74,237, 6,136, 67, 41, - 49, 71,109,240, 57,199,216, 16, 48, 4,156, 19, 55,174,234, 5,202,118, 33,227,104, 44,114, 51,163, 39, 93, 0, 73, 61, 71, 59, -137,243, 65,101,171,144, 61,195, 37, 53,122, 80,137,179,207,183, 82, 40,250,183, 4, 61, 50, 40, 72,179, 58, 4,185,215,241,196, -168, 84,113,102, 89,241,162,174,180,157, 77,140,255, 4, 30, 50, 31, 83,206,130, 34, 32,250,210, 24,244,203,146,130,214, 42, 87, -120,126,112,152, 81, 42,148, 90,185, 72, 14,123,244,102,151, 52,219,197,251, 32,171, 10,144, 20,198, 85, 59,253, 25,105,149,191, -114,103, 75,205,198,166, 60, 59,233,105, 16, 48,209, 19, 98, 20,175, 36,135,113,253,241,104,102,122,219,181, 66,157,104,113, 56, - 51,204, 49, 3,240, 55, 47,150,232, 52, 80,126,174,148,202,172, 20,224,255,197, 41,221,245,136, 83,209,231,152, 12,248,140,113, -198,194,197,136, 97, 96, 6, 30,217, 42,206,120,214, 79,178,226, 80,208,231,109,193, 75, 78,109, 66,222, 5, 98, 96, 95, 76, 50, - 33, 74, 80, 88, 70, 13,112, 48,225,184,106,210, 51, 18, 19, 56,166, 4, 65,108,105,221,167,105, 13,214,187,108, 61, 32, 83,107, -183, 59,178, 92, 47,209, 25,161,101, 25,133, 41,249,248,222, 39,114,101,107, 93,190,254,181,111,178, 53,102,193,132, 9,143,132, -196, 9,121,116,236, 7, 39, 39,186,142,234,212, 0, 72, 99, 16,106, 64, 64, 56,113,154,104,215, 91,247, 33,156,232,167, 88,158, - 23,180, 53, 98, 19, 71, 41,150,235,252,236,137,222,235,217,241, 1,159,221,132,237,166,196,255,199,212,123,254, 90,150, 95, 87, - 98,251,132,155,243,189, 47,135,170, 87,169, 67,117,179,187,153,196, 36, 74,163,209,104, 52,158,209,140,173, 15, 6, 12, 3, 3, -219,128, 63,216,255,145,253,197,134, 1,195,134, 61,176, 5,141, 32,105,100,137, 10, 20,169,110,146,106,178,115,229,240, 94,189, -120,115,206,231, 28,239,181,246,239, 21, 69,161,213, 93, 85,175,238, 61,231, 23,118, 92,123, 45,238, 55,146, 6,204,206, 3,152, -250,233,163,103,122, 54,223,149,157,122, 81, 30,159,116, 9,250,133, 93, 44,235,119,252,226,193,165, 58,221,148,124,231,253,219, -242,245,251, 49, 49, 23,173,222,140,216,164,233, 34, 33,179,232,124,109, 68, 43,104, 97,162,114,185, 34,178,221,168,149, 23,179, -161,218,168, 20,219, 83, 56, 99,201,181,212,178,218,132, 98,169, 68, 86, 71,168, 85, 22, 48,213,146, 9, 24, 76,162, 10,215, 35, -126, 36, 97,165,108,229,212, 67, 17, 20,127,243,254,155,108, 53,119, 90,167,250, 28, 99,182, 4, 97, 41,183,235,121,121,235,238, - 62, 91,107,143, 79, 58, 28,243,134,111, 41, 23, 43,234,236,109,146, 3, 2, 53,195,201,216, 90,193,152, 12, 67,128,171,193,194, -254,238,142,188,123,148,229, 8, 30,178,247,109,144, 99,233, 90, 0, 97,127,252,248, 74, 30,105, 48,243,214,173,170,250,154, 5, - 1,211,245,221,154, 28,212, 27,114,123,107,131,182,251,147,207, 94,200,163,211,150,188,247,198, 1,109,132,196,102,167, 65, 32, -244,224, 85, 95, 62,121,116, 46,191,251,221, 35,249,221,223, 56,148,191,248,233, 19,195,127,168,205,249,227, 15,143,229,191,255, -253,123, 26, 32,233,221,212,195, 0,191,140,123, 31,198, 24,165,210, 69, 60, 30, 44,213,169,231,101,164, 81,255,137, 58,140,167, - 87, 19,233,247,103, 50, 27,205, 88, 46,199,194,157,117, 71,214,227, 96,204, 57,161,218, 26, 24,156, 80,234, 65, 84, 89,171,129, - 66, 47,116, 95,186, 96,207, 11, 11,200,139,166,158, 45,134, 44,162, 24, 95, 58,208,149,248, 7,190,250,227,207,206,228,243,147, - 49, 75,124, 24, 15, 48, 3,130,121,234, 88,254,254,211, 87, 84,153,250,254,219, 59, 54,154,226,217, 28, 53, 14, 14,192, 4,184, - 52,136,250,194, 44,196,236,125, 25, 15, 87, 44,227, 20,192,163,155,182,145,153,192, 3, 3,150, 70,163,250,119,210,208,103, 94, -121,210,153,251,178,145, 11,245, 34,169, 83, 82,231,241, 8, 61, 15, 93,148,173, 58,212,129, 52,211, 86,195,242,162, 59, 39,193, -195,159,126,218,150,179,206, 84,222,185, 81,150, 55, 15,107, 36, 99,168,105, 38,145, 56, 49,147, 20,231,112, 61,205,150, 75,114, -114,213, 38,105,202,138,101,238,145,116, 53, 80,185,211,200, 75, 85,159,129,138,239, 41, 48,254,170, 1,149,216,241, 53, 99,254, - 65, 51,239,222, 84,157,177, 58,215, 82,198,113,145, 71,204, 64,215,145,205,122,206, 53,152,186,128, 28,229,116, 77, 37, 43,176, -239,197,164,171,245, 8,194,153,247, 49, 38, 4, 41,205,178,120,216, 96,204,129,131,221, 10,128, 11,199,211,201,105,117,208,141, -170, 35,206, 22,178,102,246, 97,160,214,168, 42,172,201, 51,159,128,148,198, 11, 44, 32,138, 93,105,149, 50,182,234,116,128, 6, -213, 64,172,145,247,173, 52,164,134, 19, 0,188,201,218,104, 41,113,208,168,195, 60,205,154, 52,168, 70,207, 64, 73,175, 92, 95, -221,115,192, 35,204,203,163,108, 4, 56, 17, 90, 9,184, 48,160,248,125,165, 65,144,215,179, 18,215,222, 65, 94, 46,207,231,210, -157, 39, 60, 47,219,213,148,236,222, 46,112,170, 2, 24, 15,204,247,226,125,115,163,190,172,103, 38,196,177,212,128,164, 57,205, -200, 39, 79, 90,210,215, 32,107,123,163, 46,151, 23, 87,242,181, 3, 13, 72, 55,107,242, 39, 63,249, 72,154,221,150,220,211, 8, -252,184, 61, 35,112,230,199,159, 61,228,190, 33, 48, 93,234,231, 0,141, 91,161,158,247,210,245,167, 3,235, 67, 39, 17,251,219, -145,155,149, 6, 17, 7, 50,106, 80,189,130,243,221, 28,165,199,245,220,213,224,246, 96,123,139,206, 17,156,236, 19,142, 24, 69, - 12, 20,192,230,133,146, 55, 50,135,136,189,106,163, 33, 94,185,217,252, 34,196, 66,162,245,235,140,223,181,218,201, 21,143,245, - 45, 20, 10,114,124,114, 38,219, 26, 76, 84,245, 25,142, 47, 46, 94, 11,187,224,239,129, 17, 44,116,149, 45,102,220,217,172,107, - 21, 57, 38, 48,170, 57,197,175, 3, 6,195, 4, 88,123, 4,239,189,112, 65, 57, 1,126, 41, 43, 71,163,164, 79,134, 59,100, 61, -153, 12,251,199,137,155,183,197, 7,164,217, 71, 77,241, 44,231,211, 89, 50, 54,198,145,145, 64,225,185,192,200,181,244, 77, 36, - 35,164,179,243, 89, 6,247, 29,115, 36, 16,242, 8,140, 38,101, 33,139, 25,148,234, 80,234,191,177, 93,101, 5,226,170, 55, 38, - 41, 78, 54, 93,160, 3,238,141, 35,181, 55, 33,171,134,131, 78, 79,179,170, 13, 2, 38, 35, 32,209,193,215,237, 90, 31,232, 25, - 77,166,198, 53,207,242,185,227,211,135,252, 42,214, 18, 61,107, 56,171, 12,176, 0, 36, 47,177, 76,207, 39,112,113,161,123,119, -101, 44,123,168, 44,173, 77,219,194, 11, 12, 44,188, 82,231, 12,238,255, 88,255, 9,130, 77, 18,164,128, 8,229,218,233,155, 22, -129, 1,248,162,100,198,234, 82,228,175,141,215, 30,247, 15,103, 65,131,189,203, 86,211,225, 1, 34,138,169, 0,133,143, 74, 21, - 42, 14,117, 13,108,224,220, 74, 8, 60,196, 90,120,144,174,253,228,211,143,229,157,119,222,167, 30,248, 79,127,254, 51, 77, 64, - 74, 44, 85,123,158,101,251,216, 67, 76, 39,125, 77,157, 4,236,164, 49, 21, 26, 67, 32, 37,102,125,159,206, 14, 21, 52,180,109, -121,118, 48,209, 1,182,192,101, 76,155, 58,155,105, 86,189, 40,176,196,126,122,254, 92, 29,175,105,121,239,237,108, 73, 81,239, -203,106, 29,176,117,135,131,208,236, 15,228,171,231,167,242,157,247,238, 17,191,244,139, 47, 79,213, 59,120, 82,244,178,228, 60, -255,232,139, 51,117,160, 11,217,108,148,173,213,184,140,168, 74, 23,144,128, 74, 3, 9, 61, 27, 93,128, 23,213, 81,207,212,150, - 65,204, 4, 85, 23, 84,133,226,200,192,158, 56, 59,107,215, 73, 4,235, 32, 2,159,106, 49,203, 57,247,132, 19, 13, 49, 37,109, - 49, 45,176,140,108, 31, 1,139, 90, 57, 62, 7,100,249, 95,187,119,151,237,153,110,191,205,123, 9, 25,213,131,141, 50,209,251, - 45,245,127,179,135,151,242,193,155, 55, 25, 68,117,151, 49,171,138,105,253,174,149,158, 23, 63,147,102,208,139, 9, 47, 84,135, - 17,240, 12,134, 3, 98,103,106,149,172,252,245, 47, 78, 88,133, 11,245,156,126,248,229,133, 6, 5, 83,138, 98, 65, 32, 12,237, -147,127,248,101,135, 82,174, 8,148,209,226,186,177,187, 33, 93,181,111, 27,181,130,236,239,212,152,173,191,117,176,109,213, 86, -221,195,135,175, 38,242,147, 47,218,114,114,118,169, 65,239, 88, 68, 63,255,214,222,142,236,238,108,232, 25,232,114,148, 19, 52, -196,159,188,232,200, 78,217, 2,183,196, 85, 85,195, 72, 23, 51,175,135, 8, 78, 25,179,226, 0, 62, 64,156,227,244,106,164, 15, - 19,203,112,104, 99, 95,189, 69, 83,191, 80, 35,154,106,134,138, 64, 15, 79,128, 48,158,145,195, 25,198,251,237,219, 59,250,242, -145,116,218,166, 42,134, 67,233, 37, 41,106, 91, 63,111, 77,244,160,160,164, 58,166,179, 72,229, 1,127, 77,115, 92, 11,134, 97, -119,191, 38,183,142, 22,140,162, 9, 70,114,192, 9,207,166,184,232, 80, 55, 42,129, 52, 32, 42,194, 30,170, 57, 29,223, 73,111, -250, 41,251, 53,102,213,171,152,183,197,104, 78, 90, 47, 72,218, 70,140, 16,100,248, 41, 3,232,128,158,213,119,142,172,213, 83, - 99, 50, 13,116,161,118,229,119,190,153,146,174, 6, 51,149,173, 44,203,218, 79,174,166,242,171,167, 45,121,124, 62,147,231,231, -150,105,253,199,159, 62,147,255,230, 95,127,141, 81,255,169, 6, 56,232,209,195,137,161,191,140,172,121,193, 44, 73,215, 79,215, - 12, 63,147,213,160, 7, 88, 1,244,112,191,126,163, 38,197, 57,196, 77,244,114, 4,105, 25,130, 71, 28, 99, 27,154,193, 14,198, -234, 84,189, 60, 9, 28,158,104,100, 75,229,173,116, 72,108, 0,169, 8, 29,130,119,179, 92,208,104, 56,164,163,245,249,142, 26, -169, 67, 62, 80, 98, 86, 40,218,152, 59, 69,246,167,209, 43, 75,240,145,209,248,114,179, 57,131,111,253, 83, 92, 78,124,182,239, -244,136, 72,196, 1,205,250,192, 88,252,124,162,162, 19,155, 8, 64,197, 65, 15,220, 44, 41,202,229, 92,163,225, 48,150,163,170, - 58, 59,221,152,146,111,232,245, 70,214, 74,155, 47,212,113,161, 52, 10, 31, 0, 4,174,149, 86, 99, 41,166, 76,130, 16, 19, 12, -192, 42,196, 24,141, 92,153,176, 65,164,231,167,173, 65, 22, 8, 58, 80,197, 64, 84,142,125,111,108, 56,249, 74,223,216,181, 98, -107, 23,241,153, 56, 27,172, 63,244, 92,207, 96, 42,175,187,173, 70,223,155, 71,108,211, 76,245, 51,158,158, 94,178,196, 61, 25, -245, 8,232,108,232,229,253, 95,254,226,103,100, 51,251,183,223,127, 79,254,234,203,166,158,147, 1,199, 36,145, 89, 65,102,116, - 91, 13, 68, 10,151, 86,207, 5,212,210,140,216,197,190, 52, 32,168, 51,113,128,189, 68, 29,108,141,251,251,170,217,182,121, 82, - 55,123, 15, 99,126, 83,141, 30,178,221,135, 47, 94,168, 65, 52,113, 23,124, 14,202,217,200,150,175,121,220,109,174, 90, 28, 56, - 45, 67,199,236, 57, 64, 27,128,106, 64, 78,195,120,228, 11, 89,210,201,226, 25, 27,213, 50,165, 85,111, 31,236,177,157,117,209, -238,145, 49,142, 78, 8, 18,144,158, 57,176,152, 35,119, 51,126, 54,214, 1,231,169, 55, 52,185,204,235,224,195,119, 1, 3,115, -117,247, 44,149, 98,158, 58,238,200,230, 80,150,198,250,224,174, 20, 52,235, 66, 9, 90, 92, 37,130, 98, 44,115, 76,117,100,153, -177, 0, 59, 83, 2,150, 37,155, 97,182,105,172,201, 84,202,160, 64, 5, 38, 88, 50, 41, 7, 23,213,141, 67,134, 71,141, 0, 2, - 0, 51,204,120, 16,152,126,245,236, 76,142,118,171,114, 67,237, 75, 87,239, 80, 54, 95,146,223,250,246, 22, 81,251,200,240,128, -240,255,201,167, 39,250,223, 67,217, 9,139,114,231,198,182, 52,202, 25,205,126,244,220,141,230,180, 3,104,203,100,200,144, 23, -147,206,154, 61,110,167, 26,136,233, 2,220,207, 56,249,181,146, 32, 16,204,190,195,184,192, 96, 91,249,157,132,168, 82, 42, 55, - 56,109, 18, 65, 29,210, 91,146, 8, 42, 12,108,196,104,190, 24,232, 89, 89,243,206,231, 38, 83,138,129,196, 28,179,139, 89, 77, -242, 74,158,137, 25, 1,145,175,193,199, 92,157, 90, 88, 12, 88,181,170, 52,182, 41,225, 57, 30, 26, 56, 11,149, 41,156,241,161, -254, 26, 36, 56,176,163,236,175,171, 99,235,232,239,125,227,230, 13,222,169, 78,251, 82,222,188,185, 75, 20,254,124, 4,221,245, -183,229,227, 79, 63,101,208,147, 77,251,188,239, 40,197, 98, 55, 7,163,174,140,245,252, 71, 14,166, 75, 58,209,216, 70,236,128, -113, 72,135,150, 56, 17,112,198, 23, 54, 54,201, 41,122,231,104, 67, 5,144, 59,125,159,247, 27, 9, 12, 16,250,224,254, 7,144, -250, 7, 31,188, 77, 46,248, 63,250,187, 79, 40,197, 10, 27,126,213, 27,176, 39,253,205,119,110,203, 63, 62,186,164,205,195, 90, -109,212, 75,210,211,189,251,232,171, 11,125,159, 11, 61,183,198, 84, 24,177,202,106,184, 15, 76,226, 44,117,141,168,177, 30, 4, -214,146,132, 51, 39,152, 59,176,178,178,155,140, 23,202,216,166,165, 82, 46, 27,240, 50, 89,234,153,211,117, 85,123, 85, 4, 57, -140,254, 94,167, 55,151,106,185,196,242, 59, 70,147,177,150,183,247,247, 89,169, 0, 93,178,198,244,210,110,167, 24, 20,192, 86, -163,165,134,115,124,222, 28,200,254,214,136,213, 97,128, 50, 23, 41,181,113,108,253,100,105,255, 81, 81,186,230, 48,200, 9,146, -198,156, 58,239,145, 6, 19, 37, 38,163, 16, 44,202, 4,208,222,152,107, 96, 95,144,134,218, 9, 4,163, 39,151,125, 6,237,155, -181, 10,171, 41,183,246,245,254,234,189,190,189, 95,163,125,255,232,147,182,156, 46, 52,208,253,197,149,108, 86, 50,234,244,211, - 84,236,196,153, 71,160, 0,223,246, 66,109,240, 56,169,203,254,225, 46,231,236,155,125, 93,171, 84, 78,126,241,180, 39, 11, 0, -164, 87,115, 50,123,225, 60,134,145, 26,209, 78,207, 32,254, 66,146,123, 67, 32, 67,117, 70, 3, 11,205, 94,145,133,234, 15,143, -214, 4,102,160,124,246, 95,253,176,174,155, 29,202,103,207,142,245, 96,155, 10,212,104, 50, 68, 97, 70, 14,182,202, 68,119, 66, - 48, 5, 35,103,232,137,189,104, 79,120,216,240, 66, 40, 31,110,235,131,151,202, 75, 73,235, 97,105,105,118,214,105, 45, 28,150, -203, 0, 82,134, 65,182, 94, 34, 14, 43, 54, 18, 36, 36,126, 62,227, 70,158, 44,154, 77,156,250, 18, 34, 79,254, 59,186,206, 46, - 28,138, 92,108,124, 2, 68, 19,126, 98,104, 75,168,219, 64,249,201, 79,172,140, 52, 91, 89, 38,242,141,219, 27,188, 56, 47,245, -242, 61, 56,214,204, 92, 23,237,145, 46,236,201,229,212,141,236, 4,242,228, 69, 87,254,232,199, 79,228, 95,124,235, 38, 51,105, - 16,160, 0,176, 52, 4, 59, 30,122,228, 40,121, 3, 33,170, 6, 0,139, 59, 37, 48,208, 48,107,151,163, 68, 10,145,141,220,137, -147,253, 3,100, 41,140, 76,234, 20,189,185, 20, 60, 85,166, 64,163,249,189,251, 13, 34,119,113, 31,193, 56,228, 57, 61,119, 18, -203, 57, 70, 47, 2,200,176, 6, 40, 69, 55, 71,178,236,171, 99,132, 99, 71,105,115,157,184,108,202, 70, 6,113, 97, 99, 42,206, -233, 26,168, 3, 93, 56,161,143,107, 13,227, 5, 65, 64,145,149,150,161,119, 14,226, 31, 13,198, 48, 31,141,203,252,246,173,138, - 60,125, 18,203, 72,191,239, 98,160,239,162,207,116,191,238,203,205,186,207, 64, 37, 84,167,142, 74,203,197,124, 45, 95,157, 15, -165, 51, 94,216,168, 26, 13,186,207,145, 28,124, 14, 28,125, 22,239, 36,134, 12, 45,104,176,119,114, 53,160,128,195,141,237,130, -219, 63,143,132, 21, 8,196,130,217, 66,174, 5,131, 89, 30, 23,113, 34, 44, 49,179,185,243,151, 61,217, 84, 67, 81,212,247,120, - 49,241,164, 51, 75,120,200,179,169,178,102,235, 3, 41,135, 57,249,211,159,127,165,235, 50,151,255,225, 15,255,157, 92,245,175, -228,227, 71,199,156,157, 69,192, 8,167,136,181,156,233,250,119,213,113, 46, 29,133, 42, 12, 12,156, 33, 28, 22, 12, 53,213,168, -244, 91,247, 54, 55, 56,175,126,169,145, 62, 75,206,169,192, 33,114, 69,142,246,118,213,185,101,229,217,233,153,116, 6,125, 71, - 0,146,226, 58,143,103, 78, 28, 37, 8, 28, 50,218, 28, 42,246, 51, 96,102,189,126, 29,200,226,127,139,245,146,234,101,247,110, - 28,202, 11,253,188,150,190, 11, 12, 21,250,227, 8, 16,208,167, 7, 77, 44,245,181,213, 40,225, 44, 3,113,142, 95, 15,102, 51, -119,198, 66,169,107, 64,131, 18,239,252, 58,160,112, 4, 45,226, 90, 9,107,167,123,142, 51,136,123, 3, 60, 1,180,218, 49,251, -126, 61,106,135, 53,138,184, 38,198,239, 14, 39,235,191, 70,206,199,172,146, 0,245, 13,188,194,218, 91,179,231,218, 40,166,175, -133, 2,137, 53, 1, 42,109,197, 53, 76,216, 78,233, 33, 8, 6,231, 60,174,132,102, 84, 63,120,247,142,102, 62, 29, 93,215,161, -252,233,143,159, 19, 64,133, 32, 1,153, 23, 46, 16,170, 85,213, 66,134, 37,231,158, 26, 47,232, 51,228, 50, 85,217,216, 62,144, -209,226, 66,206,206,206,165,164,239,202,118, 6, 46,198, 98,202,145,183, 24, 4, 37,225,220,218,125,232, 10,169,189,154,207,214, -146,206,103, 56,207, 14,113, 14, 98, 7, 82, 70,135,203,253,130,147, 15,132, 18,206, 17, 4,172, 0,176, 3,149,195,218,221, 63, - 77,252, 83,147, 52,223, 27,255,131, 19,162, 12, 49,122,213,224, 30,247,109,132,106,134, 9, 6,205,208, 33, 97,188, 68,182,191, -244, 25, 8,108,111,231, 73,129,155, 45,213,104, 59, 3,180,140,212,126,118,186, 87,220,151, 16, 68, 92, 0, 35,206,231,204, 26, - 81, 70, 47,151, 74,122, 30,202,100, 54,171,109,237, 73,182, 80,149,157,189, 3,249,214,215,191, 33,207,159, 61,210, 63,171,218, -160,140,190, 3,176, 80,120,215, 9,208,214, 26, 88,118,251,227, 95,143,134,186, 73, 31,236,254,108,178,208,224,205,116,204,129, -157,192, 58,227,136, 88,219, 88,247, 75,247,168, 82,169,203,173,195, 29, 86, 72, 58,253,174,145,221, 36, 17, 43,123,223,184,123, - 32,103,173,142, 6,193,122,223, 50,208,166, 24,235,175, 11,242,237,251, 71,242,247,159, 60,123,125,198, 65,252, 50, 95,121,108, -137, 36,107, 72, 61,175, 89,217, 97, 74,225,132,115, 56,234,182,178, 86, 31,218, 36,240, 23, 75, 55,171, 45, 14, 16,141,170,111, - 65, 29, 51, 52, 27, 2, 76, 63,128,215, 95,239,230,120,188,102,249,222,196, 56,151, 86, 37,246, 45, 72,195,221,172,130, 4, 74, - 29, 44,245, 14,160, 64,216, 72,203,237,221, 26, 1,119,147, 57, 0,127, 51,249,224,141,186,102,210,154,177,247, 70,108, 69, 68, - 89, 96,168,198, 26, 20, 76,100, 5,169,218, 21,240,151, 75, 7, 42, 53,210,157,180, 38, 51,248, 14, 36, 68,248,158, 90, 49, 67, - 34, 33,250, 43,125, 7,236,253, 13,205,194, 27, 21, 76, 56,164, 88,201,233,107,208,140,192, 28, 2, 55,160, 31, 70, 53,121,178, -212,179,160,119,247, 88,147,202, 23,237,153,195,114,216,122,162, 2, 21,196,198, 17,129, 59, 86,200, 69,178,221,200, 74,146, 42, -232,155,102,232,131,162,168, 40,253,161,190,243,108,168,223, 57,147,176, 80, 72,203, 64, 51,209,247, 15,202, 28,153,106, 95,105, - 84, 1, 98,124, 93,164,158, 26, 34,244,142,152,133,176,212,226,203, 89, 87,179,248,139,158,220,221, 72,203, 15,223,219, 98,169, - 6,253, 32,108, 92,150,210,138, 6,162,249, 44,244,164,217,153,200,237,157, 2,185,145,191, 56,155,176, 36,225,147, 86, 48,208, -140, 63, 47,119,119,202,114,161, 11,218,159, 39,116, 50,232,107, 93, 75,101,154,117,139, 24,185, 5, 78,139,155, 99,112,137,201, -177, 34,194,193,220, 30,101, 55, 49, 71,157, 65,185,203, 99,212,199, 46, 9,122, 32,234, 54, 81,146, 27,232,142, 12,128, 76,212, - 67,138, 42, 4, 68, 23,168,186, 83, 41, 18,221,140, 82, 20, 14, 13,216,133, 16,205, 46,117, 3, 30,158,116,164, 63,139, 89,157, -240, 9,246, 9,152,193, 62,124,218, 38,152,240,219,111,237, 25, 5, 39,128, 50, 80,163, 66, 73, 43, 40,144, 44, 35, 89, 47,172, -127,168, 14, 10,217, 15, 80,163, 27, 5, 61, 24, 8,126,230, 22, 21, 2, 37,154, 78, 27,250, 62,113, 8,100, 92,184, 27,251,117, - 9,227,165, 6, 87, 6, 62, 51, 52, 83,228,198, 94, 18, 27,115, 32,248, 77,163,251,181,161, 90,123, 28,131, 9,165, 81, 79, 75, -212,159, 26, 48, 7,227, 58, 8,110, 34,199, 1,143, 61, 92, 27,121, 80, 12,174,117,125, 47,204,106, 79,214, 38,151, 10,240, 69, -127, 4, 49, 16, 79,158, 93,140,228,151,143,218,242,197,211, 14,185,251,255,187, 63,120, 83,141,134, 47,141,179, 72, 46, 39, 49, - 75,106, 95,219, 18,121,124,124,165, 14, 4, 34, 46,105, 74,220,146,207, 61, 27,242,207, 95, 93,244,213, 8,167,212, 41,109,106, - 4,109,185,194,140,140,107,129,148, 65,232,160,198,178,175,223,185,208,231,219,172, 22, 40, 40, 3, 49, 29,140,239, 16, 49,170, -107,135,242,151,143,249, 76,148, 35, 51, 30, 65,120, 64, 3,161, 45, 3, 42,221, 13,181, 36,145, 58,226,142,126,214,149, 6,148, -255,225,147, 51,142,168,160,119,140, 89,252,214, 84, 3,198,169, 70,184,139,137,102, 56,135,242,151, 31,127, 73, 61,101, 8,120, -160, 98, 0, 28, 4,214,177, 86, 42, 50,251, 3,128,139,125,120,135, 67,240, 56, 62,104,224, 72, 56,247,173,106, 85,157,245, 72, - 6,211,169, 1,169,184,103,134,208,191,127,235, 38,123,202, 47,206, 78, 57,158,117, 61,122,150,196, 46, 96,138,205,121,179, 10, - 3,101,179,169, 41,153,145,101, 47, 50, 54,195,235,209, 51, 6,165,214,168, 34, 82,190,173,207, 25,184,108, 18,127,231,217,171, - 51,102,246, 9,193,152, 11, 67,252,166, 51,116,184,211,107, 77,111, 48, 63,102,179,100, 84,235,233, 51,147, 30,213,157,177,107, -141,115, 78, 67,208, 72,197,236,161,227, 51, 65,213,186, 89,173, 25,208,109,109, 28,227, 41,246, 97,245, 78,177,148,159, 56,205, -117,253, 60,253,238,169,222,175,148,102, 63, 40,211, 18, 36,235, 25,151, 4, 74,140, 75,130, 61, 83, 36,119,178,119, 52,146, 26, -220,101,206, 18,227,120, 39, 11,102,127,173, 17,130,219,162, 58,189, 9,103,154,135,106,156, 38,243, 41,251,246,173,254,216, 40, - 66, 81,122, 5, 48, 10,227, 96,227,128, 10, 96,155,245, 58,149,226, 14,246,160,196, 5,134,177,180,218,132,181,221, 25, 65,245, - 49,101,193, 7,185,208, 45,107,101,203, 46, 99,252, 12, 0,154,130,243, 31,107, 77, 29, 4, 71,247, 58,137,167,172, 70, 96,125, - 32,230,147,246,245,110,133,118,119, 64,149, 13,231,106,106, 6,232, 50,166,164,144,207, 57,251, 21,112,164, 13,193,225,124, 62, -114,234,148, 52, 81,212, 10,199, 83,161,165,128,214, 90, 18, 91,203, 5, 21, 63, 56,202, 58,168,184, 33, 59,140, 4,104, 53,103, - 43, 5,247,184,217,106,145,176,103,161, 65,193, 86,189, 66, 60,195,163,167, 79,229,157,251,111,202,111,255,240,183,100, 62, 29, - 74,179,217,113,244,189,107, 35,188, 17,107,233, 84,138, 85,182,131, 16, 28,145, 7,135,130, 60,230,224,177,175, 57,130,138, 61, -142,185,225,189, 57,114,248,154, 62,216, 99,208, 1,110,119, 32,227, 47, 46, 31,211, 7,188, 56,121,161, 1,195,138,130, 57,152, -233,134,253,188,175,118, 11,120,128,167, 47, 87,114,231,198,134,212,203, 89,238, 93,110, 29, 82,252, 72,156, 74, 31,180,198, 23, -228, 1, 89,211,246,101, 48, 73, 13, 16,101, 18, 90, 48,230,197,166, 17,176,178,150, 22,246,200, 40, 46, 18,174, 83, 77, 3, 93, -172,155,134,228, 84, 57, 67,146, 0, 26,237,116,152,165,156,116,107, 56,101,213,195, 42, 48, 62,137,109,238, 29, 30,210,161, 35, -179,111,245,218,114,146,173,202,237,237,178,156,180,166,228, 99,105,235,239, 67,155, 33,167,255,221, 82,127, 4,112, 45,101,135, -123, 75, 57, 44,131,167, 35,114, 72,253,128,115,248,190,103, 4,113, 56,239,208,149, 71, 66, 28,146,213,111,162, 89,120,133,213, - 32,147,199,157,203,121,123,196,201, 15,180, 54,128,237, 64,240,120,217, 30,200,150, 6, 22,231,151,109, 93,227, 52,167, 35,208, -174, 68,224, 20, 50,224,183,246, 24,166, 73,108, 72, 42, 98,219, 6,147, 1,105, 13,136,138,165,178, 84, 3,107, 49, 25,162, 63, -145,161,218,156,177,218,137,169, 6, 38,225,131,103, 87,210,111, 13, 37, 30, 0, 92,144,200,227,211,174, 60,191,152,201,243, 54, -148,192, 64, 86,144,167,218, 25,196, 19, 98,142, 56,169,195, 59, 31,201, 15, 52,178,121,247, 86, 93, 15,106, 66, 84, 31, 90,172, -152,201, 5,227, 18, 50,110,246,247, 98, 67, 34,190,125,163, 42,127,253, 39, 79, 52,226,159,243, 82,110, 55,114,252,121, 12,125, - 15,244,239, 78,150,145, 93,122,134,195, 30, 81,156, 38, 20,239, 83,214, 21, 96, 6,136,111,224,236, 19,204, 9, 62,105, 68, 51, -232, 1,131,123, 93, 15, 95,166,158, 19, 15,227, 88,129,101,242, 33, 23,222,122, 96,125,253,185,143,143, 17,129, 37, 4,120,145, -181,106,141,136,167, 42,141,114, 81, 29, 87,153, 81,211,245,248,199,150,110,240, 27, 71,107,249,219,143, 95,105, 36,191, 34, 48, - 14,129, 68, 42, 19,112,225, 31,188,232,201,123,183,183,228,222, 78,133,198, 14, 17, 58, 25,178,214,115,153,142, 7,114,124,209, -150,141,124,192,185,201, 70,104,224,178,168, 55,145,158,167,155,231,167, 88, 78,130,228, 32,213,131,144, 13,166, 19, 30,252,165, -110, 94,185,148,161,216,202,130,218,208,190,147,129, 99,189,214, 8,113,200,159,110, 4, 34, 48,188, 40,227, 30, 95,205,165,190, - 95,146,218, 13,117,142, 87, 26, 84,160,175,157, 4,100,109, 74, 16,232, 68, 54, 58, 23,230, 74,220,143,108,201,151, 63,216, 57, -212, 11,114, 38,255,243,159,125, 66, 17,156,145,190,231,179,211,190,238,125, 79, 30,156,206,168, 80,182,142, 33,214,179,201, 18, - 42, 8, 74, 2,215, 23,125,179,225,201,221,162, 58,199,189,130,252,232,113, 75,215,102, 75, 14,170, 25,217,197, 72,198, 50,205, -210, 48,162,105, 4, 68,192, 13, 0,125, 74,162,153,216,231,186,159,144, 51,125, 77,214, 51, 56, 26,136, 56, 64,102,243,160,150, -149, 80,215, 12, 32,194, 53,103,148,213,217,148,178, 14,150, 31, 25, 25, 8, 25,204, 34,182, 59, 80, 9,162,208,134,254,241,143, - 53, 8,249,213,195,231,242,253,183,183,184, 95,152,217,222,200,248,188,180,254, 32,210, 51,170, 81,240,101, 71, 42,234,176,160, -116,132, 40, 24,213, 22,244,185,135,179, 5, 29, 21,242, 23, 56,113,207,129,113, 44,177, 77,244,140,148,136, 80,191,100,127,124, -206,103,198,243,145,120, 73,215,230,221,123,119,233,140, 31, 31,159,176,207, 70, 0, 39,129, 81, 70, 18, 3,167,203, 12,100,109, -218,221, 4,122,186,192,148, 78,146,227, 54,190, 11, 84, 61,246,151, 99,210,119, 86, 72,249, 10, 7,177,191,185,201,125,124,248, -226, 37,141, 53,254, 28,162, 45, 48, 44, 64,248, 26,151,249,194,168, 89,157,238, 57, 75,241,152,203,117, 32, 57,150,217,173,200, -225,136,216,126,173, 38, 6, 39,119, 13, 10,132, 81, 71,185, 30, 14, 26,191, 15, 35, 51, 95,206,165, 86, 49,208,217,112, 60,180, -158,180,177,226,144, 32, 5,235, 88, 82, 99,136,190,102,127,104, 52,165,101,246, 55,133,217, 17, 13,184,102, 87, 70,181,105,153, - 13,165, 90,167, 40, 51,142,228,205,120,205,179,130,241,192,187, 55,246, 72,124,133, 64, 25, 45,128,167,231, 61,162,141,199,234, - 88, 80, 44,222,223,172,170, 45,137,152, 81,159, 94, 54,229,107,183, 14,153, 77, 62,126,121, 65,253, 9, 84,170,176,183, 24,147, - 98,175,209,179, 10, 8,123,206,153,180,225,124, 2, 35,154,130, 4,213,218,179,128, 3,220,112,235,181, 49,133,225,110,177,189, -183,142,185,254, 72, 40,192,217,190,140,244,156, 44, 71,204,108,235, 32,179,209, 0, 47,133,241, 89,144, 17, 37,125, 6, 20, 12, -206,144, 12, 1,123, 22,226,133,141, 71,255,154,148, 24, 89, 40,200, 38,216, 70,194, 40, 44, 66, 13,181,179,243,113,215, 81,146, - 10, 3,138,104, 49, 85,231,152,151,135,143, 30,145, 97, 15,163, 88,181, 90, 93,206,244,156, 29,159,158,201,159,253, 85, 73,126, -247,183,190,167, 25,251, 45,249,251,159,255,138, 65, 60,108,158, 79, 6, 57, 35,202,130, 19, 41, 3, 41, 74, 96,164,199,222,242, -140, 44,134, 41,179,147,161,181, 97,200,146,231,219, 36, 81,196,145,181,169,218,234, 20, 73,113,246,246,238, 81, 47,130,102,104, -101, 36, 99, 8, 24, 89,165, 8,124, 86,118, 48, 98,204, 81,200,137,105, 41,252,222,183,111,203, 95,255,227, 19,102,194, 40, 93, -115,114, 41,176, 86, 76,188,178, 89,126,159, 64, 77, 33, 35, 30,158, 99,181, 28,115, 58,104, 9,123,121, 77, 37,141,196, 13,216, - 43,226,110, 82,100,246,163, 62,130,238,211,176,191, 50,141,116,135, 72,239, 12,198,212,186,224,116,212,218, 18,136,155,123,187, -172,180, 44, 25, 68,170,141,217, 44,211, 62, 29,221,220,212, 4,245,148,212,229,168, 14,131,254, 59, 8,242,210,214,164,104, 48, -158, 59, 62,138,128,152, 23,124,246, 10,192, 59,175,194, 0, 6,237, 15, 86, 22, 80,201,194,251, 81, 7, 33,197,137,149,195, 27, -219,250,125,207,196,102, 32, 98,167,182,152, 33,150, 6,210,200,168, 92, 15, 71, 19,125,182, 88,238,223,222, 85,155, 59,160,196, -118,224,139,227, 45, 17, 86,176,150, 26, 16,214, 53,144,131,172,183,122, 62, 77,118, 2, 41,132,115, 42,212, 77, 34,181,145, 65, -242, 58, 25,196,247,223, 59,172,203,230, 27, 53, 27, 93,252,149,102,158,239,223,174, 51,226,233,158,118, 88, 30,130, 31, 73, 65, - 68, 68, 23,254,205,131, 13,185,173, 15, 10,128, 26, 88,138, 16, 49, 12,244,113, 63,186, 8, 56,178,128, 49, 8, 76, 68, 33,146, -198, 69, 74,146, 20, 47, 44, 72, 20, 18,189, 0, 55, 54, 11,114,115, 75, 29,167, 58,170,203,206,132, 37, 23, 80,120, 2,128,134, -190, 43, 68, 71, 80,150, 69,116,234,137,137, 69,112,224, 6, 27, 74, 30,116, 11, 12,168, 32,165,134,125,213,154,147, 3,123,137, - 69, 5,106, 92, 23,185,112, 93,180,228,101,178,190, 31,140,113, 4, 54,168,249,130, 64, 39, 48,251, 64, 72,160, 94, 52,157,231, -193,100, 38, 79, 78,155,210,175,204,164, 51,156,242,144,103,152,241,164, 52, 34, 76,201,173,157,162, 36, 31,236,202,143,126,126, -162,155,176,224,172,122, 72, 14,105,145,183,246, 66,185, 89, 5,179,220,136,179,207, 48, 64, 36, 17,137, 87,146, 42,165,165,139, -254, 98,106, 45,239,221,169,115, 28, 16,139,127,124,137,178,156,149,159,115, 32,223, 80,167,159,215,108, 28, 45,188, 66, 25,234, -105,158, 81,146, 2,117, 15,212,240,113, 71,130, 74, 81, 51,134,144,179,211,148,107, 37, 89,181,245,234,146,149,101, 82,112,240, -200,172,135,122, 81,110, 53,124,142, 89,224,130, 45, 33, 4,179, 54,176,213,194, 69,116, 33,132, 47,220, 60,125, 70,215,231,131, - 59,155,242,135,223,191,199, 8,122,119,163, 32,155,181, 52, 53,238, 63,184,159, 97,150,254,243,135, 61,117,130,101,150,205, 80, - 1,193, 76,242, 97, 37,148,183, 54,212, 72,235, 89,223,210, 64,226,135,250, 62, 63,126,208,146, 29,117,198,251,123,121,185,234, -142,229, 89,107, 44, 57,240, 99,171, 99,121,124, 62, 32, 0, 15,193,214,120,178,100,105, 15, 50,134, 40,173, 34,130,133, 97, 46, -229, 87,204, 82,190, 60,155, 73,216, 92,200, 7,239,212,216, 2, 66,219, 4, 80, 93, 3,250,197,100,157, 73, 22,154, 53,204,215, - 50, 94,169,177, 9,115,116, 18, 39,189,161,252,221,103, 79, 53, 24,202,200,121,103, 44, 79, 94, 62,151,239,190,115, 91,141, 63, -176, 31,109,105, 4,104,219,168, 65,209,179, 52,159, 78, 72, 73, 89, 41,107, 54,170, 89,254,104,106,189,103,150,196,157,179, 99, - 97, 35,182, 30,249,126,125,131,123,123,222,238,240, 28,121,190,245,196,225,176,113,102,222,190,117,196,128,224,201,201, 41, 81, -238, 24, 11, 3,242,123, 73,245,164,136, 14, 29, 25, 61, 12,216, 20,134,188, 80,208, 32,117,201,239,227, 44, 58,140,125,114, 29, - 68,120,228,149,102, 25, 30, 89,185,254, 23,158,239,112,123, 91, 13,115, 65,154,189,158,129,126, 40,212, 98,165, 64, 60, 15,122, -240,214, 10, 8, 93,223,220,218, 92,161, 99,109,132,168, 9,219, 7,158,141,106, 93, 99, 5, 12, 56,103,237,170,189,141, 13,189, -159, 29,167,180, 22, 80,241, 43,157, 54,148,250,124, 62, 35,130,254,154, 40, 7,217, 29, 3, 76, 84,143, 48, 82,154,133, 98, 97, -193, 88, 28,187, 35, 18,195,100, 82, 57, 35,115,138, 23,198, 71, 17, 9, 13, 40,130,189, 87, 23,175,140,219,156,114,173,122,215, - 39, 83,150, 46,231,179, 9, 71,105, 81,218,197,244, 9,130, 55, 60,111,173,152,231,251, 90,160,100,179,217,168,156,228,193,115, -174, 25,227,151,199,103, 18, 5,123, 6,109,136,241,174,186, 14,106, 8, 99, 49,110,126,210,228,199, 54,207, 75,205, 7, 63,180, - 89,103,227, 94,150, 36,101,148,186, 28,211,155,140, 88, 53,132, 19,220,174, 85, 8,194, 29, 12, 38,156,123,247,215,172,207,168, - 99,207, 74, 53, 95,100,101,100, 76,197,185,136, 14,237,178,211, 38, 87,186,144,220, 48, 32,232,204,211,237, 68,134,191, 92, 91, -115,197,127, 61,125,240,107,201, 96, 4, 30, 24, 31,155,122, 41, 58, 84, 84,254, 72,203,132, 81, 53,205, 64, 33,214,210,234,116, -229,221,183, 54,229,217,139,167,210,233, 52, 37,204, 20,229,252,170, 37, 95, 60,124, 34,119,239,190, 33,119,142, 14,229,236,236, -146, 68, 58, 21, 93, 99,244,180,243,233,152, 24, 25, 76,115,140,231, 54, 58,134, 49, 67,216,176, 96,145, 98, 22,140,188,129, 45, -107,204,194,172, 64,204, 34, 20, 59,193,115, 78, 56,218,183, 38, 62,162, 86, 65, 2,116, 71,182, 53,160, 50, 41,104, 35,157, 1, - 38, 0,248, 41, 80,215,250,222,132,235, 13,154, 89, 76, 74,212,212,230, 31, 79,250,172, 96,225, 92,131,238,119,189,210, 32, 32, -155, 54, 17, 30,221,255,225,100,233,104,138, 13,141, 31,250, 86,101,140, 18,107,194,174,156,172,104, 67,207, 39,184,227, 1,126, -196, 52, 1, 0,108,112,232, 56, 87,232,235, 67, 5,114,182, 50,161,138,104,109, 66, 71, 36,165, 41, 1,133, 62,226, 89, 69,191, -219,243, 82,196,127, 32,226,218,221, 40,201, 69,103,198,231, 3,178,253,198, 94, 85, 19,131, 83, 78, 68, 85, 74,105,211,132, 7, -152, 53, 29, 16,217, 14,222, 3,223,166, 54, 93,107, 46,207, 42, 10,222,227, 72,157,106,175,175, 9,110,111,194,202,227, 85,103, -192, 86, 27,206, 43,238, 84,179, 7, 14,121, 96,173, 2, 86, 56,222, 80,159,122,160, 73, 33, 64,230,173,145,129,239, 98, 23, 80, - 98, 28, 22,156, 8, 45,253,108, 36, 45, 8, 68,125,150,227,167, 12,142, 38,145,113,157,152,221,138,101, 60,236,171,227, 95,202, -187,187, 13,171, 8,180, 53, 74,158, 45,138, 50, 82, 67, 97,242,118,198,215, 12,231,190,169,153,194,205,253, 77, 19,144, 0,125, -101,193,202,104, 48, 42, 44,153, 47,198, 44, 13,192,144,225,139, 65,178,194,190, 97, 58, 39,221,225, 88, 23,108, 40,189,174, 70, -215,211, 2,123, 7, 24,245, 64, 68, 54, 68,102,191,128, 70,173, 16,241,105, 66, 18,215,243,178, 86,238,103, 38, 35,246,224,216, -108, 92,116, 92,120,140, 45,112,244,107,109,253,201,208,110, 5,127, 14, 62, 15,153, 17,208,182, 64,153,123,137,129, 59, 40,214, -162,207,252,143,207, 58, 82,211,108, 18,253, 97, 24, 94,148,135, 94,156,183,100,187,190,100, 52,139,121, 99,144, 7,160,124, 8, - 30,225,119,143, 26,212, 41, 71, 31,253,149, 58, 78,163,145, 77,164, 28,104,196,183,161, 7, 53,107, 0, 48,207,205,113,167,244, -192,174,250,107,121,227,118, 67,198,107,189, 68,144, 16, 76, 2, 39, 82,178,150,141,195,162, 20,182,179,122,209, 19, 89,106,246, -152,206,169, 97,193,139,228,116, 13, 48, 2, 56, 89, 16, 85,235,101, 66,146, 85,164,245,226,204,215, 41,153, 38,105, 30, 60, 42, - 35,233,161, 7,229, 12, 17,153,196, 40,120, 20, 17,120,248,114, 32,135,181,178,212, 74,105,246,123,168,136,231,248,142, 99,135, -126,142,221, 8,147, 17,105, 4,204, 28,254,179,111,223,212, 76, 75, 51,137,192, 33,118,213,112,162, 11,156,142,203,242,133,174, -215,213, 85, 87,198, 7, 21,249,248, 49, 74, 69, 69,249,246,190, 26,252, 76, 76,113, 29,208,113, 30,236,151,229, 59,122,224, 63, -252,234, 66,222,190,179, 33,139,216, 35, 58,181, 6,150, 57, 49,148, 59, 88,179, 50,105,251,117,127,154,200,131,102,194, 57,208, - 61, 93, 91, 98,117, 72, 74, 2,242,126,205,194,245,231,159,188, 88, 48,227, 64,187, 0, 75,187,112, 61,109, 0, 93, 16, 32, 84, - 27, 13, 25,181, 39,164,140, 69, 86,251,231, 63,123, 40,179,113, 31,115,140,242,201, 73,147,172,115,153, 76, 65,226,176, 32,207, - 79, 63,103,128,128, 30, 58,200, 87,112, 94,106,165,146,244,219, 45, 10,198,192, 8,205, 33,146,131,202, 78,104,100, 50,236,107, -130,238,117,107,147,229,226,174,102,232,214,119, 14,104,108,128, 77, 64,219,229,254,209, 77,233,246,251,122,134, 46,120,238, 48, -107,158,214,128, 19, 17,187, 56,210, 35,156,237, 70,177,192,145, 55,170,166, 33,211, 97,207, 91,207,166,183,160, 50,219,220, 33, -237, 1, 32, 74, 92, 16,152, 35,167,195,146,173, 1, 48,198, 1,188,135,239, 64, 95, 26,160,184,192,183,224,212, 90, 5, 54,174, -228, 59, 98, 38,232, 48,160,197, 83, 42, 20,120,249,113,254,175, 41, 83,177,206, 12,146,172, 20, 70,167,205,150,136, 58,206,103, -167,167, 20,104,193, 25,193,204, 62,177, 22,148, 80,181,242, 50,178, 71,128,143,234,249, 52,191, 23, 21,141, 44, 17,236, 66,250, - 95,140, 21,149,243, 41, 86, 5, 74,197, 44,179,203,153, 6, 67,153, 16,101,212,140,147,146, 77,145, 55, 28,164, 44,144,191, 69, - 31,179,158,153,201,120, 12, 26,213, 37, 3,148, 98,198,200, 80,192,179, 13,223, 7, 32, 20,238,231, 98,137,145,189, 57, 91, 23, - 16,192,193,251,191,113,180, 37, 47, 94, 53,229,229,233,149,124, 79, 3,185, 55,143,118,228,244,106, 40,143,199, 70, 0, 4,135, -136,245,181,145, 76,171, 98, 64,102, 21, 34, 43, 88,135, 56, 50, 73, 85, 4,189,112, 60, 41, 86, 76,108, 82, 36,112,189,102,172, -231,116, 60,101, 16,132, 83, 28,148,171, 38,144,162,107, 51,117, 60, 24, 56, 63,176, 25,195,192, 52, 40,112,223, 80,197, 11, 98, -195,135,196, 94,236,184, 32, 18, 27,189, 67, 21,194,241,242,227,179,208, 99,207,105,116,191,156,246,245,220,155,204, 39,238, 0, -136,132,224,188,176, 15,253, 65,143,229,124,140,155,177, 18,160,123,247,163, 31,255,131,252,187,223,255, 23,242,123,191,243,123, -242,226,241, 39,150, 77,187,158, 47, 90, 92, 24, 57, 3,217, 9, 38, 33,144,124,120,204,122, 77, 85, 14,227,129,104,117, 49, 19, -213, 51, 13,214, 66, 8,169, 96,191,209, 82, 53,136,141, 6, 70,233, 50,109, 55,130,172,158, 58,160,227,147,199, 12,176,169, 37, - 46,190, 99,215, 84, 27,173,151,245,221,219,135, 92,151,120, 57,227,123, 82, 89, 17, 78, 85,207, 33, 70,189,200,173, 1,160,223, -100,168,247, 15,120, 44,211, 63,159,205,210,164,155, 70, 11, 4,114,163,168,152, 1,228,135,231, 64,165,176,170,142, 16,179,228, -116,244,100, 2, 92,177,133,136, 51,218, 30,140,232,124, 81, 89, 24,141,151,252, 46,216,188,163,189, 29,254, 44,241, 31,235, 5, - 65,201,104, 23,224,158,195,182, 85,244,172,110, 85,145,100, 84,244,108, 71, 4,117,167,200,184,185,102,112,147,207,167,185, 95, - 49,239, 91,218,206, 8, 2,232, 85,196, 51,149,211, 53,137, 24,244, 46, 73, 37,142, 26, 9, 70,225, 14,182, 43,122, 6,123,198, - 82,233,148,228, 82,250,119, 81,209,222,203, 22,245,243,151,210, 27,206,212, 15,230,229,237,187, 91,114,210, 58, 37,159,135,127, -141,123,208, 61, 26,106,176,186, 70, 48, 85, 45, 82,191, 96,205,177,217, 57, 1,172,168, 14,192,158,177,186,168,207,122,118,217, - 70, 86, 40,223,187, 87, 55, 21,185, 90,189, 36,103,253,153, 9,114,168, 83,210,253,208,191,164,209,184,110,198,123,111, 28, 50, -242,195,133, 5,104, 3, 17, 22,202, 67,113, 96, 23, 14, 99, 41,197,162,177, 25,193, 48,131, 76,223,184,148, 81,246,216,144,205, - 74, 86, 15,174,113,125, 99, 84,229, 69,107, 73,142,113,100,164,216, 4, 24, 85,102, 62,234,168, 64,104, 33,174,119, 34, 14, 76, - 67,246, 85,106,220, 70, 12, 52,112,136,168,200,230,217,197, 35,129,128,190,140,207,204,202,122,249, 32,192, 96,196, 51, 91, 50, - 16,129, 90,219,106,105, 8,112, 68,229,207, 78, 38, 4,132,220,191, 93,151,173,205,188,116,199, 19,102, 85,155,165,154,108,151, -179, 44, 15,161, 60, 31,234,161, 89, 78,112,248,150, 84,230, 33,211,207,218, 74,189, 3,104,113,163,167,169,153,118, 52,141,101, - 50, 52,198,170,198, 70, 94, 74,117,205, 44,212,192,226, 93,155,151, 99,153,143,150, 50,208,103,175,105,102,145,193,200, 11,190, -190, 53,215,239,141,165, 92,208,108, 29, 35, 12,179, 64,198, 32,118, 24, 45,200,189,156,206, 5,100,179,131,116,232, 92, 35,185, - 69,166,100,116,180,193,154,153, 62, 56,177, 83,174, 81,157,210, 67,119, 53,137,229,162,187,144, 63,251,248, 66,126,255, 91,135, -172,170,120,174,143, 24, 51,154,181, 82,205,194,177,218,145, 32,100,177,226, 69,238,142, 49,167, 30, 74,173,158,181,113, 39, 61, -160, 96,146,131,113,190,127, 84,145,159,124,118, 41,159,157,104,240, 80,170,203, 15,239,166, 36,175,209,230,122, 97, 20,152,248, - 44,204,234,222,218, 44,112,198,253,103, 15,175,228,235,247,118,228,173, 91, 5, 61, 3,198, 15, 48, 31,204,228,195,207, 91,114, -191,166,142,105,149,147, 39,151, 11,185,232, 3, 40, 50,214,103,143,136,172,190,118,234, 36,200,137,133,128, 53,207,149, 42,225, -144, 96,212,200,215, 77,177,147,152, 37, 48,244, 65, 95,234, 69,125,218, 28,202,201,197, 21,123,126,237,238,146,165,222,125,205, -108, 47, 53,179,121,121,209, 36,154, 30,189,184,179,118,151,199,170, 86, 41, 19,247, 48, 95, 69,175, 21,215,174, 41, 64,169,189, - 29,248, 68,246,150,245,194,142, 28, 80, 41,113, 35, 96,190, 19,180,192, 40,217, 27, 55,111, 82,104,227,172,213,100, 0, 5, 29, -116,232,167,227,174,160,188,139, 76, 5, 25, 97, 78, 3, 59, 56,160, 86,127,192, 17, 56, 43,175,122, 86,146,143, 77, 87,225, 26, - 9, 15,231,130, 63, 95,172,192,226, 88,100, 95, 28, 99, 49,232, 29,227,243,172, 63,107,122,221,136,200,249,247,136, 99,176,172, - 56,235,132, 90,124,170,242, 89, 41, 25, 35, 82, 84,123, 98, 48, 18, 57,142,136,107,159,110, 72,238, 98, 46, 67, 60, 1,217,234, -220,115, 37,177, 97, 9,240,222, 8, 24,178,152, 7,158, 13, 24,152, 76, 23, 62, 25, 24,129, 81, 65,255, 27,159,133, 96,165, 86, -206,201,193, 86, 77,239,136,102, 62, 25, 91,195,213,106, 65, 28, 2,140, 51, 2, 27, 92, 32,204, 2, 79,189,169,147, 75, 21,150, - 70,161,107,189,171,103, 48,100,175,215,231, 68, 73,106,226, 51, 24,196, 8, 57, 70,249,144, 25,211, 64,134,230, 52,225, 60, 27, -149,156,148,114,187,242,119,255,248, 76, 62,252,226,165,236,108, 52,164,211,237,232,207, 78,245,115,125,187,187,113, 68,253,115, - 24,141, 53,219, 56, 41, 58, 15,100,109, 8, 18,136,137,129,167,139, 45,112, 67,162,129, 42, 8,146, 25, 67,252,251,175, 57,199, -169,221, 77,130,147, 37,114,118, 18,130,160, 69, 81,212, 0,166,133,117, 75, 2,206,204, 39,142,195, 60,206, 10, 1,180,161,235, -242,139, 27, 35, 53, 94, 8,227, 53, 79,160,134,232, 88,247, 4,188,253,110,166, 26,207, 57, 7,225, 73, 96,108,112,144,175,246, -213,158,110,109,239,203,108,212,145,153, 58,198,126,247, 82, 30, 61,126, 32, 95,127,239, 3, 89,121, 89,249,171,159,124,200, 96, -134,137,152,225, 99,121,198,170,165,156,174,111,133,227,100,200,212,209, 2, 64,108,135,243, 28, 57, 0, 29,122,179,190,191,166, -130,218, 24,128,171,148,129,194,214,131, 33, 91, 25,181,250, 14, 38,236,173,165, 20,100, 89, 96,102,235, 49,177, 96, 9,146,173, -155,245, 2,181, 31,160,218,246,139,167, 3,217,171, 23,101,168,119,160, 51, 90, 57,210, 26, 95, 29,248,154, 78, 17, 99,115,148, -128,213,123,178,134, 42, 31,218, 53,107,171, 6,195,125, 99, 29, 75,106,151,183,106, 5,226,115,216,118,130, 22,253, 34, 38,168, - 25,156, 37, 67,140, 84, 79, 87,100,177, 3, 25, 18,170,201, 56,211, 32,153,201,240,204, 77,136, 7,203,234, 94,128,207,126, 57, - 66,160,156,227, 8, 32,122,232,181,114, 94,198, 75,180,121, 66,181, 25, 83,249,214,253, 27,242,197,227,115,222,179, 75, 77, 74, -203,185, 20, 65,150,126, 88,228,250,131, 46, 28,119, 20, 9, 97, 56, 52,172, 10, 28, 61,198, 56,111,238,212,229,228,114, 36, 91, -149, 44,201,132, 48,182, 87,204, 39,166, 61, 66,157,154, 21, 3, 0,140,184, 97,146,163,221,159,200,119,190,121, 75,174, 90, 35, -249,201,151, 67,182, 1, 96,231, 16,192,173,160, 49,129,150, 15,124,159, 88, 75,161,171,217,126, 46,191, 34,167,198, 10,220, 14, -208,154, 87,223,214,236, 13,164,148, 1, 62,196, 36,201,195,135,175,218, 36,250, 39,194, 27, 68, 18,122,192, 16,129,212, 54,115, - 20, 63, 33,171, 21, 65, 51, 43, 19, 85, 89,217,161, 13, 88, 66,206, 82, 95,120, 60, 71,132,171, 95,166,145,141,159,178, 81,137, -146,158,246,253, 98, 70,158,191, 26, 9,186, 85,223,121,163, 65, 6,177, 23,103, 61,246,210,169, 51, 12,121,220,149, 49,197, 65, -217,132, 61, 98, 61, 88,140,106,197, 24,162, 96,216,144,165,131, 5, 13,254,159, 64, 18, 61,216, 81,104,186,198, 1,148, 61, 0, -230,201, 24,138,155, 90,221,145,147, 93,116,227, 91,208, 81, 6, 93,104, 87, 35, 86, 56, 10,144, 31, 60, 63,235,203,191,253,238, - 29, 2, 38, 78,219, 3,130,185, 94,188, 58,151,231,231, 3,121,247, 32, 47, 13,221,112,128,190,254,254, 81, 83,190,122,222,149, -170, 26,102, 32,112, 17,161, 0, 3, 0, 3,227,235,225,159,170,131,158,232,129,189,152,169,147,206,251,156,202, 6, 23, 48, 70, -129, 24, 33, 95,245,101,172,191, 14,183, 27,210, 88, 98,214, 52, 96, 20, 61, 38, 48, 77, 47,144,190,255,121,123, 46,199, 77,104, - 73, 47, 9, 28, 41, 21, 67, 57, 44,135,242,253,187,117,114, 15, 67, 19, 30, 70,116, 62, 67,166,101,104,246, 8,228, 26,250,222, - 95,156, 78,228,151,207,245, 64,104, 16,242,197,147, 75, 53,114, 25,121,235,176,202,172, 2, 81, 36,130, 33,155,121,246,109, 30, -250,159, 40,166,112,100,137, 66, 22, 17, 13,126, 38,151, 50,242,182,192,176, 9,135,122, 6,234,181,156, 52, 23, 25,249, 87,247, -178, 82, 33,249, 80,194, 61,194, 1,140,157, 44, 32,136,111,142, 26, 89, 86, 6,190, 58,110,243,249,161, 11, 15, 46,234, 53, 12, -188,102, 32, 35,140,236,177,232, 53,151,142,102,201,149,219, 71, 50,143,115,146, 69,164, 59,157, 26,119, 52,165, 22,141, 49,138, - 53, 5,199,130,199,200, 88, 29,108, 71, 29,245,117,111,116, 62,133,138, 93, 70, 30,183,250, 4,137, 32, 64, 44,193, 17,228,243, - 44,163,191, 56,107, 82,151, 26, 68, 64, 0,196,161,122, 3,103, 11, 64, 28,137, 44, 34, 43,205,162,236,150, 56,134, 56, 56,172, -157,250,134,108, 84,107,156, 92,240,245,114,161, 95, 87,202, 25,155, 28,136, 94, 48,206,118,239,198, 13, 57,111,181, 25, 56,144, -196, 9, 61, 20, 32,199,199, 99, 62, 47,254, 15,206,137,142, 79,159, 27, 65, 10,121,186,213, 80,183,244, 89, 60,199,145, 46,174, -159,158, 36,177, 3,204, 57, 64,168,126, 22,156, 4,246, 97, 58, 53, 37, 55,100,237,158,111,202, 92,226, 45,152,209,146, 76,132, -217, 80, 32,135,219,155, 44,245, 93,104,102,140,108, 3,159, 7,230,185,142,126, 31,185,203,157, 51,185,254, 31, 29, 58,214, 60, - 54, 42,219,171, 78,135,235,129,115,130,202, 5,218,105, 36,216, 9, 67, 58, 27,140,161, 45,121,247,214, 50,208, 51, 0,172, 2, -206, 0,130,160,200,225, 60,158,159,117,101,167, 90, 32, 31, 4,116,210, 65,147, 10,196,239,130, 0,154,148,203,154, 86,204,214, -175, 29,101, 30,255, 95,207, 74,179, 59,100, 95, 19,129,123, 83,141, 29, 24,230,200,253,160,246,132, 25, 74, 58,203,185,111,188, - 27,130, 23,100,176, 5,142,221,121, 26,132,101,228, 27,111,238,202,227, 87, 45,234,197,127,247,107,119,245, 59,167,242,211, 79, -159,200,133,222,103, 47, 76, 19,239,146, 19,195, 54,132,164, 38, 77, 49,120,165,252,111,144,176,108,110,211,248, 6, 54,131, 77, -130,237, 89, 18,124, 56,167, 45,226,122,129, 67, 0,179,233, 94, 68, 66, 24, 47, 54,204, 10,158, 9, 9, 10,240, 26, 32, 1, 66, -118, 5,181, 58, 4,213, 64,205,175,255,137,228,112,226,184,247,163,245,218,245, 81,237,179, 17, 80, 20,114, 53,117,212,109, 78, - 11,180, 53,235, 68,233, 63, 89, 37,175,153, 8, 59,186, 78, 69,117,100,144, 6, 77,102, 99,221,227,140,156,158,157,106, 22,188, - 37,111,220,123, 75,126,245,217, 47,165,221, 27, 66,171,205,250,174,177, 9, 38, 93,181,167,234, 60, 90, 12, 58, 2,158,143,196, - 84, 41, 93,153,155,172,124,128, 1,132, 30, 91, 55, 56,183, 8,166, 61,114,161,172,169, 80, 7,180, 62,214,124,127,179, 33,197, - 66,214,200,118, 16, 16,165,211,172,138, 86, 52, 96,174, 1,112,150, 49, 42, 90,180,111,206, 90, 93,182,249,186, 26,240,163,186, - 8,124, 2,168,117, 45,219, 14,205, 20,129, 0, 11,124, 5,184,211,154,161,161, 34,137,160,134,114,169,122, 23, 90,195,133, 12, -103,134,195, 0, 24, 27, 19, 26,245,130,209,167,226,158, 28,110,111,201, 87,207,158,242,156,121, 28, 19,246, 89, 89,234,235,189, - 67, 48, 11,177,160,134,166,228, 41,170,231,165, 52,145, 89,114, 4,248,222,205, 77,150,242,219,253, 5, 91,179,120, 39, 80,128, -223, 62,104,232,153,155, 73,127, 12,238,249, 57, 91,204,241,194,231,122, 64,250,185,164,201, 88,218, 23, 39,199,107,248,154,174, - 62,227,102,173,200, 73, 19, 76, 84,160,133,131,138, 20,129,169,113,236, 4,132, 18, 50,113, 66, 25, 16,247,255,147, 39, 29, 57, -216,191,148,175,191,179, 43,159, 63, 27, 8, 0,236, 8, 16, 6,154,244, 44, 57,226, 26,177, 74,149, 80,193, 52,162, 77, 71,128, -128, 68,118,170,190, 56,147, 45, 83, 94, 22,118, 55, 67,226, 38,253, 59, 89,125,206, 5,162,118,206,251, 69,178, 81, 43, 73,163, - 94, 39, 1,199, 54,140,249,200,122, 65,232,231,166, 52, 10, 92, 57,164,118, 28, 25, 17,199,117, 43, 59, 29, 88, 25, 15,135,231, -154,222,243,104, 51, 43,221,171, 46,169,247,240,121,144, 26,252,198,141,140, 46, 70, 81, 62,125,218,165,129, 71, 9,204,128, 35, - 96, 76, 51, 66,136,245,234, 26,168,100,209, 90,224,219,248, 15, 8,237,241,155,153,173, 2,196,142, 36,128,202, 22, 48, 60, 25, -223,245, 67, 19,150, 32,230,208, 83,212,211,218, 85, 35, 95,213,159, 25, 12,198,140,142,128, 76,236,235,130,228, 81,154,209,139, -248,221,155, 91, 82, 88, 14,185,224, 27, 50,147, 88, 55, 17,218,174, 65,180,148,155,229,154,189, 23, 64, 14,129, 33,139,208,223, -141,125,171, 6,140,161, 82,135,146, 50, 74, 85,122,200,170,122,144, 46,198,125, 6, 62,233,180, 85, 25, 66,208,168, 38, 54,138, - 3,167,138,181,251,217, 23, 77, 57,233,204,229,162, 53, 38,171, 19, 34,185,206,200, 72,251,183, 26,121,150,197,183, 53, 91,129, - 49,121,209,154, 74,123,184,228,129, 15, 52, 19, 59,208,131,214, 40,231,184,214,152,137,132,193,124,213, 91,203, 63, 60,232,179, -116,153,214,205, 7,219,220,143,126,246, 92,183,226, 80,157, 83,193,122,195, 81,228,232, 72,173,119,122, 45, 28, 2,163,142,170, -196,245, 8,203, 4,143, 1, 71, 70,164,212,138, 14,251,139, 23, 45,169,214, 26,242,205,163,146,228,215, 35,185,232, 37,191, 70, -124, 83, 61,206, 35,152, 4, 12,133,254, 92,244,128,214, 36,187,149,200,147,179,145,148,209, 59,159, 47,217,163,135, 18, 18,130, - 9,244,179, 39,147,177, 92,106,214,220, 31,206,101,118,123, 67,110,110,103,168,184,133, 67,139,254, 29, 71,245,208, 71, 19,155, - 60, 64,121, 23,102,240,248,105,139, 65,101, 54, 99, 61,106,100, 37,199,221,158, 6, 98,207,216,211, 75,123, 5,217,218, 40,240, -252, 64,160, 33,165,251,211, 80, 99, 15, 84, 55,192, 53,152, 41, 7,173,111, 64,242, 11,107, 75, 16,141,235,123,220, 11, 56, 97, -140, 5, 29,237,237,233,158, 96, 52,167,197,153,214,224, 90, 9, 76,247, 4, 4, 48,219,122, 63, 94,158,159,203, 69,179,197, 50, - 56,169, 91,161,228,167, 14, 61,113,229, 85, 24, 95, 68,226,173, 94,207,128,120,147, 41,159,131, 26,236,228,112, 72, 27,107,148, - 88, 41, 31,255, 32,155,167, 62,183,190,239,150,126, 7, 2,178,238,208,230,229,241,191, 98, 30,154,215,154, 13,170,243, 37,199, -119,161, 72,128, 28,170,101,213, 98,137, 36, 24, 96,210,226,120,150, 4,174, 55,183,100,185,252,186,183, 30, 93,243,189, 59,228, -251,245,127, 99, 20,174,163,223, 69, 45,117,151,229,175, 92,127,210,119,227,151,232,237, 65, 78, 53, 94, 27,248,172,144, 54, 62, -121,223,201,232, 98, 29, 48,222, 51,152,174, 41, 91,137, 61,137,214, 22, 76,226,140,112,230, 62,155,229,251, 65, 66,181, 24, 21, -140, 85, 78,207, 71, 75, 51,107,128,165,224,228, 80,194,190,234,244, 25,244,194,176, 6,137, 1,104,183,213,158, 20,114, 32,174, -154,179,114,231,185,128,132, 92, 3,161, 57, 48,204, 29,247, 71, 61,249,242, 24,137, 73,145, 37,211,149,254,124, 26,196, 79, 36, -145, 49, 29,112,172, 7,238, 35, 26, 7,198,177,228, 17,185,142, 44, 39,195, 50,171,245,215,225,208,113,158,150, 40, 95,162, 66, -233,136,147,168,193, 14, 45,110,189, 52, 25, 76,102,104,208, 64,135, 30, 25, 14, 3,129, 12,210,225, 48,171,239,168,142,101, 30, -207, 77,218,214,141,152,190,110,168, 95, 87, 75, 98, 91,231,128, 12,149,154, 17,234, 94,160, 85,132,239, 7, 16, 13,204,157, 8, -160,240, 67, 75,202, 66,207, 36, 91,171, 72, 61,165,201, 83, 78, 3,232,124, 77,186,237, 51,169,148,223,146,239,124,235,187,210, -186,122,165, 25,104,133,246, 20, 54, 8,159, 15, 94, 14,208,156,162, 44, 60, 69,197, 65, 12,132,136,111, 14, 2,195, 25, 0, 93, -140, 17, 55,100,211,104,223,224,223, 36,253, 68, 96,167,255,129,179, 92,209,160, 54,137,235, 84,131,155, 78, 7, 68,132,163, 37, -134,243,214,159,180,229,225,243, 51,178, 8,222,185,113,160, 65,222, 37,131,134, 87, 24,211, 2,166, 70,239, 63,156,213,104, 8, - 91, 57,117, 99,123,168, 86,133, 70,120, 5,178, 50,220,123, 61, 43,245,122, 77,237, 93, 65, 42,197,220,107, 54, 75, 96,113,128, - 62,135,189, 63,237,154, 90, 98, 20, 79,245,157,154,118,126,220,250,238,104,208,177,114,247, 6,146,211,161,218,159, 66, 54,253, -154, 10, 25, 99, 96,184,255, 72,224,142,118,244, 78,171,237,237, 77, 99,121,247,222,166, 60,120,214,212,187, 63,212,179,150, 53, -236,136, 62, 90, 77,157,248, 88,207, 43,192,144,168, 14,112, 28, 89, 3,191, 60, 84, 12,245,188, 66,181, 20, 99,175,237,206,216, -116, 4,212,161, 99,218, 0,213,146, 27,187, 13,210,109, 55,213,255, 64, 80, 12,123,143, 86, 23, 41,147,245,188,253,244,227,151, -210,189, 85,151, 55, 14,114,242,241,179, 41,219, 28, 61,205,188,197,141,116, 7, 78, 9, 21,129,202,214, 86,141,154, 31,144,141, - 69, 27, 48, 95,180,177, 96,128,189,193, 59,210,213,187,151, 7, 17,219,221, 27,135, 26,205, 15, 24,129, 97,254, 21, 61, 68, 24, -251, 67, 32,145,195, 88,142,219, 11,150,171, 51,129,149, 13,113, 41, 99,246,130, 18, 70, 74, 81,226, 27, 53, 40, 34,150,196,250, -182,149, 84, 36,225,114,192,210, 23,118, 4,224, 37, 44, 54,162,164, 15,110, 55,216,147,251,155, 95, 93, 50, 42, 66,112,176, 94, - 7,148,142, 67, 6,200,209, 30, 49,244, 6,217,199, 80, 43,242, 76,163, 43, 65, 73, 29,176, 78,202,116, 26,227, 25,169, 5,145, -189, 80,193, 71,100, 52,152, 73, 17,114,143,186,200, 83,117,178,195,153,141, 54,208,176,160,191,232,216,187,246, 10,161,188,185, - 1,226,145,153, 76, 52,155,236,130,163, 92, 23,230, 61, 93, 96,176,156, 33,131,110,228, 83,178, 89, 72, 49,136, 89, 70, 70,152, -143, 0,132,252,223, 96,105, 2, 15,187, 58, 15,208, 90, 98,141, 98,112, 46,166, 83, 4,182,161,132, 27,215, 52,211,209, 83,145, -192, 72, 2, 12,181, 76,228,173,163, 42, 47, 2,136, 94, 62,127,218,145,177, 30,160,183,110,150,168,117,222,210,104, 26,206, 25, -181,165, 98, 33,100,148, 54, 91, 38,140,222, 46, 46, 58,210,106,250, 12,178, 96,212,176,206,157,137, 71, 20, 56,178, 27, 24, 84, - 68,217, 48,248, 95, 61,111,105, 38,133,254,102,218,102,102, 29,210, 26, 11, 9, 52,103,226, 89,155,131,118,194,247,152, 89, 23, - 82,108, 60, 57, 6,185, 68, 62,127,222,147,159,125,126, 37,247,238,132,210,168,106,230,239, 21, 37, 66,148, 8, 71,228, 57,161, - 17,240,120, 35,122, 4,102, 97,162,142, 56,147,200, 94, 61,148,217, 72,164, 55, 48, 52,179,207,145,161,185,172,169, 54,166,239, - 50, 25,201,189,253, 2, 69, 9,186, 87,115,249, 55,119, 14,100,169,241, 76, 6, 20,163,190, 5,142,164, 4, 14,140,165, 14, 78, -161, 61, 90,202, 31,255,205, 75,185,108,173,212,176,164,109, 54,188,160,153,114,251, 84, 10,133,138,236,111,239,240, 2,158, 65, -234, 20,239, 23, 45, 56,219,139, 94, 30,203,177,106, 88,103,212,237,182,236,152,253,103,223,115,228, 70, 49,209,247,111, 29, 29, - 81,135,250,164,217, 36, 40,169, 55, 48,178, 22,207, 33, 92, 81,150, 46,233, 29,233,141,134,204,178, 80,218, 3, 2, 22, 89,220, -242,154,133, 13,107,131,214,143,254, 29,100,237, 75,167, 64,232,185, 18,238,144, 10, 93,166,174,133, 71,129,163,131,225, 54, 0, -154,241, 21,236, 52, 54, 13,221, 75,161,145, 53, 17,238, 8, 8,242, 46,243, 64,143, 24,226, 73,156, 72, 70,255,220,245,237, 86, -235, 95,151,229,209,251,206, 81,185,109,193,222,181,209,252,218, 4, 7, 71, 28,157, 48, 18,201, 97,210, 41,162,215, 47, 58,109, - 93,219,162, 1,109,124, 19,204, 64, 86, 26, 59,214, 8,107,219,216,157,196, 81, 66, 39,152,104,117, 56, 85, 40,125,105,150,125, -184, 89, 32,109, 39,148,168,140,115, 34, 49,110, 1, 76, 3,100,224,176, 74, 78,138,192,231, 28,252, 2,202,102,186,174,205, 94, -135,107,131,182, 23,170,127,144,108, 6,159, 2, 70,213, 80, 10, 6,112, 9,125,213,114,174,160,235,184, 43, 77,221, 31, 84,160, -132,184,130,152,147, 52,187,155, 27,210,209,160, 22, 6,238,201,201, 43,217,223,218,147,223,248,218, 29,121,227,104, 91, 30,189, -120, 37,131,246, 88,159, 33,207,145, 72,140,110, 33,209, 72,216,207,182, 32, 50, 6,224, 21,170,124, 24,229,237,247,201,201,126, -173,202,135,251, 19,129, 10,153,164, 47,154, 8,104, 70,154,201,133, 12,204,160, 45, 81, 82,199,131,108,105, 21, 45, 41, 62,194, -106, 35,202,214,156, 58, 64,219,109,197,214,215,117, 16,133, 4, 33, 76,165, 41,221,139,158,187,239, 20, 39,249,231,158,222,197, - 98, 85,150,234,120,225,208,108, 76, 16,230,109, 73,130, 38, 56,124, 4, 44,224, 44, 88,130,115, 95,183,127,119,111, 95,190,122, -248,149,148,234, 19,169,109, 30,106,230,254, 74,254,241,203, 39,172,188, 70,201,146, 96,178,241,100,193, 61,189,185, 93,147,183, -111,239, 25,177, 20, 1,140, 49,237,184,171,223,177,154,132,179, 14, 59,131,243, 7, 39, 97,106,133, 49,149, 5,251,221, 83,253, -117,142, 14,246,228,244, 5, 51,103, 50,213,129,189, 50, 66,155, 22, 25,186, 47, 71,135, 71,154,108,140, 73,247,219,234, 2,201, - 93,148,231,167, 45, 93,155, 57, 27, 17,148,133, 37,196, 60,101, 60, 16, 0, 11,134,198,180,152, 99,235, 32,214, 32, 65,237,183, - 58,125,240, 92, 32, 35,141, 92,235, 13,103,219, 15, 48, 83,222,231, 68, 21, 85, 40,157,118, 61, 89, 27,167, 83, 58,224, 2,100, -105,179,137, 99,227,139,104, 75,139,249, 80,125,196,146,206, 18, 6, 29, 25,251,139,243, 33,121, 66, 62,121,116, 69, 45, 1, 56, -126,180, 85,138,156, 8,137,248,142, 94,172,231,178, 84,150,244,114, 97,182,195, 33,243, 1,214, 52,225,166, 44,197, 96,128, 39, - 74,171,237,126, 43,218,211, 51, 61,103, 18,134,254,249,146, 76,148, 9,207, 9,237, 74, 44,172, 18,192,150,127,245,162, 47,135, - 91,186,215,201, 80,174,122, 19,115,226, 41, 67,229,179,253,172, 63, 95,210, 0, 7, 84,182, 59,141,162, 77,142,136,241,190,236, -215,193,172, 89,227,153, 74, 81,128, 73,253, 0, 80,164,158, 84,204,248, 35,235, 72, 18,102,132,107, 61, 84, 5,253,161, 42, 22, - 97,106, 81,126,226, 24,176, 56, 55,156, 10, 92, 41,201,132, 34,140, 28,132,133, 2,217,200, 89, 20,120,227, 96, 79,142,142, 76, -214, 13,198,185, 30, 26,125, 36,102, 88, 11,106,152,158,156,246,116,227, 34, 57,215,168, 11,217, 39,122,223, 40, 71,166,105, 84, - 28,176,197, 25,197,193,116, 41,139,206, 68,179,164, 33,137,240,223,122,111,159, 58,188,177, 99,220,193,232, 22, 46, 41,144,153, - 88, 20,168,191, 97, 14, 59, 79,177,145,132,179,166, 0,138,148, 16, 0,232,165,123,214,157,107, 68, 87,146, 23,186,193,173,241, -210,241,101,175, 4,114, 53,207,154, 43,178, 18, 65,128, 36, 68, 9,210,154,246,140,192, 17, 13, 78,231, 41,234, 79, 99,174,154, -120, 0,117,230, 7,181,148, 76, 52, 11,239,183,230,102, 92,151,160,109, 93,179, 10,114,169,153,244,127,250,232, 92,254,203,223, -188,161, 14,188,162,206,105, 68,170,217,166, 58,241, 3,221,204, 98, 78,157,128, 6, 35, 39,151, 99,246, 41,203, 0, 36,206,231, -166,111, 15, 39,158, 88, 73,137, 14, 3,165,105, 72,210,166,140,139,120,177, 10, 88, 2,199,218, 33,171,131, 1,236, 79,150, 84, - 20,170, 84, 66, 35, 73,192, 88, 89,224,177, 76,106,108,116, 98,127, 31, 78, 19, 2, 0,122, 9,215,154, 21, 37, 12,168,208, 59, - 92,169, 99,158, 72, 38, 94,200,151,143, 79,229,135, 95,171, 75, 57, 20, 70,136, 57, 31,104,109,113, 20,167,190,123,198,136,107, -181,128,248, 0, 10,236, 26, 77,246,122, 75, 50,188,193,184,151,213,208,174,151,115, 25,169,177, 4, 27,221, 91, 91, 5, 25, 28, - 21,164, 59,194, 60,126,154, 25, 19,130, 37,148,236,112, 57, 18,160,174,225, 4,213,112, 23,169, 69, 46,114,176,173, 7,122, 11, - 19, 10,137,124,250, 66, 29,252,217, 21, 63, 31,239,113,213,106, 74, 85, 13, 45,180, 3,218, 26,229, 54,187, 3,150, 16,145,253, -158, 34, 67,119, 78, 55, 98,159, 52,116, 12,113,102,180,208,231,190,127,251,166,174,217, 92, 30,188, 60,182, 81, 76,204,157, 66, -234, 52, 12, 45, 16, 10, 3, 35, 39, 65, 43,104,105,156,236, 8,128, 61,182, 55,150, 68,185,179, 90, 20, 89,255,223,227, 44,178, -101, 3, 32,157, 1,106, 27,193,240, 58,138, 94, 35,207,241,231, 24,233,202,248, 86, 45,128,204, 41,100, 84, 81,246,132,160, 4, -245,187, 87, 70,255,138,231,185,106,183,120,191, 80,110, 68, 64, 1, 38,171,144,168, 88,235,157,195, 35,224,243,241,204, 73,108, - 18,170, 48, 36,137, 67,209, 91,201, 63, 36,223, 63, 91, 13,174, 39, 15,209, 25,150,131,215,145, 27,115,138, 29,138, 60, 38,152, -212, 15,108, 28, 17,193, 62, 42, 23,179,133,141, 98,225, 30,160, 18, 2, 78,124,182,163,193, 38, 56,211,128, 69,173, 33,250,155, -195,217,210,164, 75,215, 9, 65,115, 64,145, 19, 12,168, 1, 55, 0, 67,177, 35,124,241,125, 43, 73,207, 64,133,233,111, 19, 32, - 24,247,108,196, 51,199,113,186,136,255,189, 90, 91,150, 19, 19, 20, 8,135, 59,101,128,138,172,231,198,222,134, 58,250, 1,223, -171, 86,200,202, 13,205,104,206, 59,231,250,103,161,163,136,245,101,164, 1, 68, 9,179,198,168, 54, 68, 1,141, 42, 42, 3, 1, - 2, 14, 13, 81, 22,137,101, 69,172, 67,173, 1,180, 21,158,227, 4,149,157,233, 66, 29, 84,135, 36, 58, 1, 41,113,211,220,147, - 57, 42, 5,250,247,135,227, 17,171, 82,208, 3,247,215, 54,111,204, 16,111, 1,213,176,200, 70,174, 76,181,196,141, 49,218,188, - 56, 24, 20, 67,226,145, 2, 71, 12, 99,218,237,105, 13,140,192,166, 7,158,120, 86,147, 32,237,187,156, 16,148,137,132,226,244, -244, 84, 14,118,247,100,182,246, 53,115,110,144,251, 31, 1,223,133, 6,164,251, 59,123, 26,136,191, 33,159,126,245, 72,239,190, - 81,190,130, 27,126,234, 56, 64,230,106,215, 95, 34,131,118,201,146,149,134,125, 71,220, 2, 75,130,185,240, 53,131, 27, 99,180, - 20,171, 8,173,156,226,156,254,222,222,246,129,148, 74, 27, 12,254, 67, 74,177, 8, 91,181,144,252,141,242, 8, 90, 13, 84,135, -182, 10,193,156,160, 0, 86,103,255,193,155,251,242,217,195, 99, 13,240, 49,205, 48, 99, 51, 46,134,131, 12,204, 38,193,193, 21, - 53,192,172,213,138,178, 85, 41, 50,184,192, 57, 67,101, 20, 84,203,160, 89, 69, 48,120,184,147,215,123, 62,226, 30,160, 10,200, -187, 28, 89, 85,119,187, 94, 38,142,134, 98, 94, 0,116,147, 58,117,201, 96,134,242,226,160,120, 5,173,119,156, 80,112,170,152, -139,233,136, 1,190, 28, 14, 81,141,203,147,234, 22, 32, 78, 4,219, 24,223, 99,112, 83, 44,137,227,213,230,247, 38,154,172,161, - 20,190, 90,175,220,180, 86, 66, 44, 9,248,228,191,253,238, 46, 81,237,224,180,199,125,193, 25,102, 21, 6,213, 2,142, 91,174, -141,147, 3,165,127,245, 61,155,234, 59, 46,213,119, 64,251,224,170, 51,226,185, 64,144,129,106, 44,170,138,176,113, 24, 79,196, -217, 97, 82,134,113,102, 4, 9, 43,151,153,179, 74,180,226,116, 14, 1,146,136,154, 57,123, 10,125,231,185,193,251, 43, 25,205, -222, 52, 75, 15,245, 7, 39,122,232,158,117,134,140, 0, 16, 89, 32, 74, 73,133, 54, 92, 79,109,115, 23, 37,161, 23, 2,186,216, -145, 94,252, 90,182, 33,111, 31, 52,104, 24,113,100,214,113,226,120,172, 45, 90, 69, 9,227,206, 97, 93,238,222,216,144,185,222, -138,231,231,125,150,233, 81,182, 24,168, 67,122,248,188,229, 52,119, 81, 55, 54, 13,113, 8, 61, 64, 96,165,221,234,203, 71,143, -123,114,251,205, 77,117, 36,233,215,217,123,164,155, 2,186,197,161, 94,172,173, 98, 74, 54, 74,105, 65, 37,124,174, 78, 15,186, -179,200, 90, 53,254,100,176, 65, 89, 72, 53,226,232,151, 95,244,209,159, 76,216, 51,132,228, 37,162,108,140,219, 37,122,136,247, - 54, 10,114, 84,203, 26,131,208,210,104, 86,145, 21,119,245, 61, 63,253,244, 82,246, 53, 51,185,208,117,217,170, 22, 56, 64, 15, -132, 34,178, 72, 0, 4,161, 19,156, 97,245, 66,164,130, 77, 4,237,106, 12, 21, 41,203,252, 0,168,192, 18,190,123,167,194, 64, -166, 61,176, 49,167,139,230, 72, 78, 34, 27,203, 32,208, 37, 48,176, 80,226,250,225,158,111,104, 83,184, 27,240,219,131,218,148, -170,116,112,218,107,176,229, 45,229,187,119,203,242,155,111, 87, 40,253, 26,163,116, 12,231,125,205,196,134,125, 88,187,222, 42, - 62, 11, 37,195,217,154,151, 28,120, 8,240,244, 67,164,224,125,125,254, 15, 31,117,229, 92,179,233, 88,159,119, 18,131,131, 96, -142, 70,133,140, 22,110,102, 21,223,167,255, 61,152,173,168,236,134, 10,207,237,173, 18,199, 6,163,154, 25,112, 4, 60,169,112, -196,113,191, 92, 54, 33,197, 35, 64, 84,155,171,172, 60, 63,155, 50, 48, 65,145,224,225,213, 72, 30, 95,140,228,159,127,112, 72, -240,224, 74,247, 31,250,196, 85, 13, 56,110,215, 50, 82, 87, 99,221,153,205,228,203,179,151,178,208,231,134,250,217,210, 73,152, -206,214, 70,143,137,106, 3, 40, 20, 81,250, 6,112,113, 60, 51,240,215,122,109,253,225,146,254, 62, 22,143,200, 85,189, 96,135, - 91, 27, 68,177,195, 49,161,164,206,114,165, 26, 91,160,205, 1, 76, 66,255, 15, 78, 50,159,113,179,177,160,100,165,147, 51,114, - 38, 48, 67,197,145,149, 3,141,241,202,103,208, 68,192,102, 16, 58,153,198,149,181, 63, 60, 42,199,211,168,176,141, 21, 27,147, - 27,254,141,242, 57, 8, 95, 64, 54, 2, 89, 87, 18,151,128,230,215,210, 99, 67, 74,235,249,203,103,243, 44,107, 47,255, 9, 96, -206,181,105,237, 76,160,191,158, 49,148,121,158,136,121,155, 53,103,102, 77,144,225,202,145,219,136,203,188,133,107,130, 74, 29, -241, 22, 43, 19, 43, 2,189, 50, 42, 16,232,229, 91, 0, 83,224,103, 98, 29, 25, 56, 6, 41, 35,203, 0,147,160,103,189,103, 96, -246,224,204,171, 69,148,106,243,186, 39, 99,146, 57, 97,125, 80, 1,193,158, 66,189, 10,115,235, 25,170,185,133, 92,167,129, 58, - 42,148,142,192, 39,143,158,232,108, 97, 36, 57,112, 30, 84,123,195,172,181,126,207,100, 2, 16,105, 72, 76,138,199,217,248,188, -126, 22,102,164,179, 54, 97, 80,202,209,129,143,244,185, 55,170, 69, 6,103,159, 63,121, 73,142,252,251,247, 14,212,112,135, 36, - 68, 90,172, 60, 58,106,148,213, 57, 11, 29, 67,100,102,205,115, 9,212,249,108,101,237, 51,156,167, 49,128,146, 40, 25, 79, 52, - 84,117,148,166,126,169,170,159,189,210,179,111,224,167, 44,180,182,213,137,225,110, 35,147,102, 53, 83,215, 99, 60, 2, 0,119, -170, 65, 3,104, 72,253,215,116,194,158,155, 58,120, 45, 14,100, 53, 23, 87,121,177, 74, 8,206, 32,144,240,139, 9,181,244,216, - 22, 88,195,117, 70,115, 58,135, 65,191, 71, 36,252, 70, 13, 14, 44,171,217,243,149,209, 94,119,186, 44,223,223,218,187, 41,111, -106,160,122,222,236,208,145,160,101,133,115, 0, 39,143,253, 0, 19, 33, 90, 53, 8, 68, 72,153,235, 27,209, 18, 91,198,161,157, -109, 27,253,142, 88,117, 28,143,134,124,126, 56, 23,159, 92, 19,186,254,229,154,212,107, 31,176,229, 1, 48,103, 64, 6, 79,103, -227,245, 44, 64, 57,240,104,119,155,153, 46,200, 92,114,104,181,122,168, 30,134,250,221, 35, 86, 39,112, 55, 96,138, 86,228, 50, - 48,146, 45,188,251,112, 22, 75,107,208,226,125, 64,197, 6,107, 11, 31,128,160, 23, 65, 78,179,219, 53,125, 3,117, 96, 83,170, -253,101, 94,227, 68, 16, 60,100,210, 70,128,132, 51,219, 25, 76,217,206,218, 84,103, 79,178, 47,216,214, 56, 32, 14,104,237, 48, - 1,104, 97,224, 92,227,187,200,213, 64,158,128, 21, 71, 32,241,231,219,154, 29, 3,179,131,150, 16,137,155, 32,156,131,128, 21, - 24, 1, 40,248,105,246,222,238,245,164,174,231, 14, 65,217,171,203,129,241,232,175,108,138, 44,142, 12, 25,143, 96, 28,109, 0, -187, 47, 86, 3, 75, 97,108,155, 21,110, 79,114,106,107, 14,119, 54,244,227, 91, 4,135,226,120, 34,145,242,202, 37,153,140, 80, - 17, 44,112, 44,148, 60, 12,160, 36, 38, 7,131,188,246,177,216, 72,180,211,195,103,207,206,229,230,173, 93, 26, 11,148,237,138, - 26,181,108,100, 35, 70,156,121, 93,156,134, 30,250, 77,141,102, 62,125,116, 73,133,178, 76, 96,241, 28, 50, 48,244, 62, 34, 55, - 83, 91, 84,131, 67,231,163,159,253, 55,159, 94,232,229,138,228,253,219, 13, 87,150, 52,169,199,235, 17,159, 84, 24,184,126, 7, - 74, 45,177,188,115,163,202,108,255, 85,115, 32, 39,205,177, 0,168, 58, 26, 45, 76,109, 9, 99,109,122,137, 59,122,169, 81, 90, -239,106,148, 95, 84,135,179,238, 14,101,182, 76,203,104,184,144, 13,125, 19,136,210, 80,122, 16,209,177,102,191,121,221, 60,148, -216, 66,140, 97, 76,150, 36, 37, 0, 0,134,209,190,158,145, 95, 60,106,115,206, 30,224, 42, 68, 85,119,118, 75,154, 65,150,165, - 94,202,208,105,129, 45, 11,128, 62, 40,100, 69, 81,207, 46,165,216,252,242,123, 7, 5, 57,172, 4,242,236,233,153,116,226, 80, -190,190,173,139, 13,164,157,151,161,243,101,230,204,190,163, 69,132,130,241, 30, 53,106, 24,153,248,249,151, 80,237, 25,105,102, - 49,230,225,255, 88,127, 61,154, 26,189, 45, 42, 11,181, 74,158,242,142,160,196,220, 44,101,137,168,223,221, 46,201,195,167, 29, -249,159,254,228, 51, 94, 6,182,229, 18,187, 64,149,180, 73, 25,194, 17, 39, 78, 63, 29, 96, 59,144, 28,160,108,131,178,127,188, - 52, 3,198, 32,201,183,192,204,179,241, 1,161,183, 79, 99,254, 59, 81,195,185, 54,230, 46, 16, 74, 0,252, 66,227,183,150,191, -251,226,156, 64,197,110,111, 66,212,233, 42,178, 54, 11, 21,242,244,179,182, 43, 41,249,205,187, 53, 57,208,103,205,229,245,247, -212,121,215, 3, 35, 68, 33,127,129, 23,154, 48, 59, 64, 70,224,157, 7, 51,144, 26,207,230,149,174,107,197, 42, 8, 0,215, 64, - 62,118,229,192,146, 24, 49,153,106,166,132,249,121,148,250, 30,159,159, 74, 91,159, 47,201, 84,212,120, 78,104,252, 81,178,203, -133, 86,174,243,215,160,188, 44,234, 5,108,200,177,102, 46,192, 81,144,209,141,122,228,158,126, 78,149, 17, 63,163,238, 12,232, -140, 55,245,140,170,113,211,136, 31,125, 42,155,107, 13,153,117,176,247,237,136,125, 48,195,140,247,160,254,120,108,227,139,200, - 26,135,116,232,145,107, 99,120,172, 0, 92, 27, 22, 2,222, 32, 0,195, 94,100, 64,132,240,100, 62,163, 17,186,158,245,230,119, -173,141,151, 30, 61,109,244, 80,225, 68, 22,139,197,235, 12,253, 58,131,134, 3, 69, 9, 30, 70,149,200, 88,150,111, 67,167,196, - 38, 36, 19, 73,156,248, 12, 28,175,184, 50,252,106,109, 65,202,250,218,131, 59,238,118,246,206, 99,227,180,199, 26, 53, 81,110, - 6,184, 43,147,162, 81, 50,164,255, 53,193,142,129,195,174,217,236,112,135, 64,249,153,139, 82,166, 36, 21, 67,124,208,132,108, - 72,187, 12,177, 20,125, 4,156,253, 41, 18,133,196, 90, 66,195,200,128, 89, 32,168, 42,229,209,159,196, 25,202, 74,175,103, 40, -123,180, 10,200,205, 14, 49, 38,205,214, 49,191, 12, 20,181, 5, 46,107,142,219, 22, 75, 69,169,151,245,126,106,160, 56, 70,169, - 62,103, 10,104,232,167,162, 7,140, 76, 7,142, 13,198, 20, 72,108,217, 4, 39,121, 79,174, 52,243,106,108,237,115,156,178,167, -191, 70,240,142, 25,112,136,170, 92,131,227,192,149, 63, 27,155,246, 0, 42, 40,112, 36, 41,188,147, 79,201, 57,102, 69, 16, 16, -210,215, 34, 55, 6,170, 95, 97,206,227,116, 13, 70,225, 24, 52, 1,192,137, 51,227,216,160, 97, 79, 67,252, 58,254,245,250,227, -172,176,236,140, 96, 43,176, 41, 32, 10, 28,133,215, 10,127, 38,237, 11, 12, 5,106,112, 64,191, 3, 88,136,210,106, 49,159,229, -148, 0,158, 24,198,190, 68,140, 69,219,170,121,186,184,120,190,103,207,159,200,155,183, 14,229,131,247, 62,144,226,211, 7,180, - 49, 43,167,251, 80,133,216, 11,170, 55, 18,144,247,160,168,182, 15,225, 61,222,133, 85,183,192,120, 15,144,217, 35,176, 42, 21, -210, 4,118, 33, 57,195,249, 0,219, 38, 90, 85, 32, 90, 97, 27,112,237,203,171,171,161,156,159, 62,116, 12,242, 30,251,239, 49, -177, 43, 33,239,109,185, 90,102,182,143,190,244, 69,111, 46, 71, 55,111,200,169, 6, 27, 9, 94,216,179, 41, 26, 60, 68, 99,163, -206,170,203, 97,189,192,207,128, 12,247,213,220,232, 91, 88,233,208, 37,171,171, 77,204, 23, 43,114,213,237,179,106, 68, 27,132, - 89,251, 48,164,252, 53, 90, 63,192, 59, 0, 20,187,165,159,135,159,219,213,123, 94,202, 5,188,111,168, 68,111, 84, 51,114,229, -129, 28, 9,114,182, 25,167,190,103,129,113,187, 55,149,138,218,220, 40,241,152,120,164, 83, 83,181,171, 89,142,151, 53, 52,232, - 30, 44, 83,100,187,131,200, 14, 40,177,161,248, 25, 79,117,223,245,179,219,221, 46,207,110, 53,103,163,212, 69,253,236, 17,250, -223,176, 99, 4,240,121,108,183,160,221, 92, 76,219,184, 54,198,246,200,226, 56,153,202,102,163,196, 30, 59,110,244,193, 78, 67, -147,169,142,244,251,166,130,151,202,172,120,102,215,235, 42,103,231, 81,120,196, 94,165,201,235, 98, 20,207, 72, 84, 2,177,113, -202,240,219,183, 50,242, 98, 52,224, 1,199,124,226, 54, 80,133,106,218,112, 56, 89, 46,212,127,191,127,160,153,207,122, 91,254, - 28, 52,156,177,113,168,147, 75, 93, 55,171,168, 78,240,238,225,182,209,165, 58,131,134,236,232,162,191,146,114,123, 33,239, 28, -148,169,196,196, 75,159, 9, 89, 38, 38,112, 5, 78, 6,217,177,110, 78,196,104, 62, 37,227,110, 79,254,236,103,167, 52, 66, 41, -207,162,219, 0, 7, 82, 15, 26,184,195,145, 93,223,222,169,200,126, 35,146,230,197, 64,166,197,156,188,106,143,229,121,210,227, -188, 43,110,232, 69,103, 42, 39,154,249, 35, 3, 71,111, 28,165,104,160,202,209,247, 54,218, 77,115,246, 95,191,189, 41,239,236, -230,100,184, 76,228, 69,123, 42,111,239, 20,229,168,154,230,216,222,217, 88, 15, 84, 47, 16, 13, 43,248, 25,185,140,144, 96, 39, - 38,232,205,151,155, 85,148,248,242,114,118, 57,148, 66,108, 78, 18,250,233,204,131,116,129,241, 44,109,136,140,164, 50, 44,151, -195,193,231,243, 41,121,120, 57,150,229,241, 90, 46,218, 19,182, 47,192, 25,253,252,124,206,114,251,127,253,111,222,145,239,188, -179, 73, 14,117, 24, 71, 0,123,172, 36, 38,204,194, 43,234,180,255,207, 31, 61,144, 46,102,116,211, 57,130,179,212,210,240,194, - 38,174,159, 68, 68, 62, 74,153, 24,197, 27, 44, 36,201,249, 92, 63,168, 81, 37,112, 18,240,254,145,165,106,200,200, 25,224,144, -130, 72,141,139,102,235,195,169,101, 31,195, 69, 36,207, 53,226,237,234,154, 53,234, 57,217,221, 44,106,208, 83,148,225, 96, 36, - 25,223, 42,137, 20,233, 64,207, 28,180,154,250,204,141,172,207,131, 30,106, 36, 30, 99,174,146,242,161,115,151,197, 90,216,201, -226, 38,184, 9,244,144,159,158,119,229, 92,247,176,179,157, 99,139, 34,163,217,220, 61,221, 3, 0,105,154,250,189, 64,144,222, -110,228, 36, 10,115,242, 31,126,246, 64, 62,124,252, 84,254,224,183,191, 39,125,125,206,157, 58,156,224,136,109,130,203, 78,159, -104, 80, 24, 30,176, 27, 94,232,229, 90, 57, 18, 7,180, 75, 88,246, 86, 35, 83,211,104,183,144, 91,169,227, 92,200, 86,173, 46, - 39,173, 22, 1, 46, 91,181, 10,179, 22, 82,154,138, 33,207, 77, 15, 60,122,221,183,158, 46, 44, 3, 3,154, 23,159,139, 57,244, -107, 89,223,120, 29,189, 6, 33,226,223, 43,114, 3, 24,253, 42,223, 25,253,193,196,230,219,209, 6, 8, 72,247, 27, 17, 13,206, -177, 27,100, 30,234,104, 18,202,102, 70, 12, 58,178,169, 52,141, 62,126, 29,234,157, 65,191,140,207,137, 25,217,165,205, 41,249, -158,205,235,218,232,154,105,134, 35, 51,225, 12, 61,152,228,156,140,104,114, 77,202,148, 68,110,124,200,119, 10, 86, 22,196, 32, - 67, 1, 11,220,118,221, 38, 38,108, 92,212,103, 70,180,114,216,129, 48,180,242, 48,148, 11,151, 36,159, 49,214, 64,156, 75, 19, -112,177, 22,220, 64, 3,249, 90,209, 99,112,194,121, 89, 63,224,108, 49,230,109,171,144, 38, 69,119, 19,217,127, 38, 54, 14,109, -226,114,210,226, 4,222,173, 79,184, 54,178,145,156,102,127, 83, 61,199, 25,178,163, 4,156, 2, 0,141,241,209,126,133, 88, 28, -148, 27,163, 56,195,241, 38,140, 79,166,244, 30,238,109, 86,104, 12,163,148,137, 43,161,253,130, 32,241, 4, 76,130,165, 88,142, -246,170,250, 28,161,126,206, 4,108, 19,252, 30, 47, 54,182, 51, 26,114,117,114,148, 5,142,141,205, 18, 37, 95,216, 44, 6,235, - 80,154,116,180,191,104,187, 76,198,115,142,184,142,168,218,146, 16,232, 57, 30,142,157,242,156, 37, 50, 21,181,141, 43,104, 30, - 68,222,107, 78,127, 82,228, 46, 76,124, 7, 14, 8,235,189, 32,162,126, 65,204, 7,241, 58,145,129,107, 81,153, 25, 99,190, 28, -163,137,190,169,172, 1,219,179,138,197,137,248,172,100,216,107, 74,181,182, 69, 6, 57, 56,155, 87,103, 77,249,234,209, 99,121, -235,141,187,242,171, 47, 30,202,175, 30, 60,118, 19, 35, 78, 66,217, 51, 18, 28, 4, 61,158, 87, 52,230, 60,119, 38, 35, 10, 67, - 90, 43,204,115,186, 16, 70, 95, 44,220, 55, 11,124, 83,154, 36, 68, 12, 44, 75,165,146,236,239,223, 98, 5,192,115,194, 71,171, -165,205,144,227, 92, 98,220,113,119,179,206,214,219,116, 58,148, 77,189,131,115, 93,179,219, 55, 15,200,136, 71, 22, 59,140,195, - 65,131, 30,119, 78,247,225, 37,112, 69, 8, 12,208,114,228,247,175, 88, 93,193, 36, 7,138, 40, 0,159, 34,176, 68,155, 11, 76, -143,176,125, 8,232,208,202, 1, 47, 3,238, 57,219, 36,108,215,235,239, 99, 98,196,143, 88,177, 80,179,230, 42, 69, 41, 10,126, -129,228,229, 12,228, 78, 32, 71, 11, 13, 97,158, 87,103,252,224,229, 21, 3, 89,140, 24, 99,252, 44,209,247,185,117,176, 43,131, -110,194, 42,167, 85, 91,124, 91, 27,223,118,118, 65,145,163,149,236, 53,202, 82, 41,231,101, 49,141, 89, 9,129,195,196,179,226, -158,173, 92, 48,159,224, 76,233, 33, 41,107,208,212,166, 2, 97, 76,170, 36, 48,111,238,214, 51,154,184,174,228,254,221,125,253, -123, 23,242,226, 85,155,123,196,115, 97, 69,130,215,147, 93, 25,205,126,231, 56, 15, 43,211, 26, 1,109,110,136, 73,171,111,220, -217, 22,239,114, 73, 93,219, 18,184,117,211, 66,121, 85,139,220, 2,114,110, 83,165, 77, 95, 46,149, 24,149, 37,168, 46,175, 57, -130, 1,112, 2,173, 30,184,204, 81, 18,129,225, 3,172, 31,209, 67,111,172, 81, 57,198, 67,145,167,235, 70, 4,145,193,244, 67, -117, 98, 21,141,178,193, 93, 62, 83, 99,142,254, 27,178,241,186,102,106,136,132,113,106,115, 40,127,114, 4,199, 55, 89,204,133, - 47,191,122,102, 47,216, 81, 39,253,236,106,234,120,186, 87,100, 2,218,174,230,100,167,150, 51,222,118,253, 51,108, 16,122, 35, - 27,165,130,220,122,127, 91,254,246,243,166,252,229,151,109,253, 92,161, 58,218,118, 37, 39, 55, 55, 52, 3,190, 28,145,196, 0, -243,142,159, 55, 1,250,153,201,101,127, 70,212,100,115,234,201,103,207, 71,242,254,126, 94,126,241,114,202, 82, 58,140, 47, 8, - 20, 48,211,216,138, 80,170, 14,229,103,175,134,166,112,135, 50,123, 16,208,240,145, 14, 20, 82,153,106, 40,160,100, 87,175, 21, -229,205,205,156,220,218,205,202,255,254, 23, 51,121,121, 53,165, 54, 53, 56,200, 49,222,135,131, 11, 7,186,192, 65, 7,240, 76, -220,236, 22,130, 31, 93,143,173, 74, 65,126,235,253, 67,249,191,126,252,144,146,177,216, 7,160,206,217,159,129, 83, 73,252,215, -217,192,105,111, 41,127,254, 96, 70,192, 29,122,225,133,236, 76, 13,140,111,160, 29,253,200,114, 10,147, 25, 78,253, 13,152,138, -148,141,107,224, 80,128, 36, 33,196,236,180, 26,232,163,221,178, 6, 61, 34, 71,219,101,205,136, 99,233,165, 9, 86, 32,208,144, -213, 23,189,112, 25, 10,138,232, 62,104,100, 11, 20,126, 5, 85,148,120, 38,171, 33,196, 70, 82,220,191,238,213,149, 94, 46,141, - 56, 53,210,126,245,114, 65,158,247,166, 30, 92,240, 34,119, 70, 21,153, 1, 97,155, 89,202,225,110,157,231, 12,241, 70, 67, 35, -230, 79,159,190,146,255,227, 39, 95,201, 89,179,203, 11,126,218,236,147,156, 39,165,103,198, 67,143, 91, 47,209,112, 52, 38,106, - 29, 0,163,227,243,115,147,173, 5,221,175, 99,209,131, 81,192, 89, 64, 36, 11, 50, 25, 80,189,126,249,252, 37,199,182, 0, 0, - 76,115, 46,124,205,159, 67, 32, 2,222, 5, 2, 43, 93,153,252, 26,228,150, 39,240,108,206,242, 28, 5, 88,120, 71, 2, 61, 95, -101,150, 51,177, 87,232,215,178,151,141, 80, 26, 21, 18,156,219,200, 62, 3,103, 2,206, 26,119, 4,119, 29, 66, 43, 54, 6, 55, -225,153, 90,187, 64, 34, 69, 1, 24,235,221, 81,177, 10, 4, 42,227,133, 83,111, 91,154, 84, 46,176, 35, 65,240,107, 1, 18,142, - 37,197, 12, 16, 80,190,135, 83, 69,166, 9,106,219, 90,177,104,179,224, 80, 19, 3,224, 71,140,108,167,166,207,141, 7,155, 18, -144,183,226,136, 24,122,167,232, 89, 26, 82,222,112, 52, 40,203,194,192, 17, 1, 31,173,152,117, 21,179, 33,239, 63,202,223, 11, - 87, 66,237, 3,147,161, 63,251,213,120,102,189,114, 24,245,162,102, 59,145,209, 25,175,146,136, 32,172, 21, 20,181,214,118,230, - 73,179,155,182,108,209,119,202,132, 0, 50,173,245,115,231,228,225, 79,140,212, 7,229,127,117,240,101,205,184,218,253,185,227, -112,247,184,206,227,233,146,136,121,200, 51, 99, 47,129,215, 65,195,220, 64,157, 30, 91, 37,168,146, 33, 16, 27,133, 69, 41, 85, -106,210,210,228, 96, 14, 16, 83, 58,199, 36,197,198,247,212, 17,165, 86,122, 78,243, 20,226, 32,240, 75,207, 26,218, 95, 49,171, - 51,192,253,232,103,162, 69, 39,226, 64,111,190, 37, 56,105,219,243,241,114,206, 86, 1,214, 31,116,217, 24,109, 77,163, 29,129, -192,123,101, 44,151,104,101,195, 54, 96, 18, 3, 12,132, 12,202, 29, 70,131, 66, 70, 4,101,166,249,103,216,219, 12,122,171, 24, -249,212,189, 57,189,234,202,104, 48,225, 30,226, 28,110,248, 85,169,213, 26,236,229, 66,130,212,143, 23,172, 92, 60,215,108, 29, -192,202,163,195,155,242,242,244, 21,233, 83, 33, 82,130, 51, 66, 54, 73,189,239,208,122,120,226,206, 30, 81,228,200, 71, 60, 83, - 63,148,196, 80,226, 8, 4, 0,124, 67,124, 10, 59,134,246, 34,206, 56,117, 37,192,158,153,201,115, 34,101,187,222,208,204,184, -170,239,150,166,132,114, 46,103,227,163, 24, 89,198,120, 52,132,149,230,139, 9, 63,179,219,214, 96,253,198,129,188,127,255, 29, -249,223,254,159, 63,166,188,108, 5, 66, 69,122,166, 80,161, 33,157, 46,108, 60,193,101, 66, 31,194,241,231,245,148,147, 21,224, - 84,184, 38,105, 9, 2, 27,247, 34, 48, 89,207, 51,206, 1,167,113,116,239,207, 59, 77, 42,225,197,250,247, 52, 51,208,115, 51, -163,143,139,163,129, 84,138, 41,151,213, 38,178,189, 89, 96, 59, 21,127,142,115, 14,105, 97,140,188,129,131,226,159,125,227, 77, -249,252,233, 41, 71,222, 30,159, 52, 53,224,171, 48,112,201,208, 73, 25,206,106, 50,157,189,190,175,184,159,231,154,100,246,198, -107,217, 85, 95,116,176,183,197,170, 5,146, 6,115,198,198,124, 23,145,241, 49, 77, 81,151, 90,165,200,128,224,178, 59,150,247, -239,212, 56, 78,187,187,219,144,151,154,152,238,168,127,218, 80, 59, 56, 80, 67,127,124,182,230, 30, 33,249, 64,133,210,227,184, -169,207,179, 52,157,172,141, 44, 9, 65, 39, 90,104,187,239, 28,201,243,241,169, 46,208,146,145, 69,115, 6, 9, 59, 95, 74, 97, - 36, 85,100, 95,232,103,205,151, 4, 14,196,142, 28,198, 75,124, 87,102,212,200,169, 59,209,172,105,198,168, 60,185,102, 44,195, - 12,164, 94,150,131, 70, 94,254,253,183,203,106,160, 81, 40, 72, 89, 89, 16,148,126,208, 19, 14, 18, 42,164,129,122, 20,253,129, -201, 42, 98,148,152, 71, 25,121,237,187,160, 1, 57,254,154,189,241,233, 52,145,159, 61,235,171, 83, 44,203,238, 78, 77,238, 30, -110,144, 35,247,227,103, 29,249,111,255,240,109,217,212,141,242,170, 41, 89,192,249, 58, 42,205,172, 26, 1, 31,253, 94, 61,144, -191,122,218, 97,153,176, 24, 90,239,231,231,207, 7,228, 22, 7, 55, 49,230, 17,177,169,136,202,193,213,113,166,209, 34,144,231, -208, 93,111,163,228, 63,240, 89,198, 98, 4,238,155, 6,248,151, 23,112,154, 41,102,185,216, 36, 48,213,101,160,110,149,179,160, - 38, 15, 41, 79,176,107,165,205, 65,252,226,193, 21, 75,238,232,223,125,117, 60,164, 30,122,118, 98,165, 71,204, 96,254,244,139, - 43,249,141,119, 54, 52,154, 77, 91,153,220,101,137, 72,234,230,154,141,204,213,240,254,240,107,135,242,227, 79, 79, 57,183, 15, -227,129,192,235, 26,152, 5, 7, 68,154, 69, 53, 70,179, 32, 43,207, 58,214,147,197, 97, 58,191,184,146,251,187, 25,217,216,220, -150,147,238,138,229,121, 36, 64, 37,125,214,127,246, 1, 56,172, 53,216,194, 92,165,183,178, 64, 77, 23,188,176,145,147,227,129, - 6, 47,167, 99,102,188,185,192,104, 59, 65, 61,139, 50, 54, 48, 14,148, 76, 68, 38,166, 79,112, 12,212,188,222,254,195, 78, 73, -110,236,131,218, 50,146, 22,212,249,244,185,193, 46,184,183,149,211,139, 71,244,163, 68, 96,244, 74,217, 72, 18,160, 91,199,221, -153, 58,234, 44, 25,167,142, 91, 99,206,128,158,235,159,253,223, 63,254, 92,131,167,149,188,121,116,160, 78,176, 68, 7, 48, 79, -202, 26,225,230,101,208,239,200,243,211, 33,199,204,144,113,183, 53, 99, 97,121,152,188,221,145,101,155,212, 44, 95,203,102,165, - 42, 91,141, 6, 13,157,215,237,168, 51, 47, 17,112, 6,100,238, 84, 13, 49, 68,101, 6,154, 17,193,193,153, 74,155, 56, 48, 10, - 64,115, 86,222, 67, 89, 20,151, 47, 74,140, 77, 14,180,162,104, 57,161,127, 15,227, 11,112, 27, 28, 71,206,113,139, 79, 41,211, -104,178,191, 75,167, 68,133,123, 1,178, 30, 56,116,252,204,112, 58, 49,196,124,108,189,119,106, 29, 92,207,174,187,241,155,208, - 55, 77,110, 0,102, 76,186,213, 12,136, 41,217, 25, 95,130, 24, 53, 62,207, 12,202,244, 4,233,233,231,111,234,247, 80,126,114, - 97,202, 97,212,156,158, 79,121, 78, 16, 76,192, 1,238,171, 49,254,222, 27,106, 3,174,154,242,224,228,202,196, 40, 2,143,189, -242,208, 55,206,137,213,210, 20,228,214, 68,243,123,164,119,134,161, 5,128, 13,253,222,217,108, 65,135,239,179,140,190,210,253, -201, 88,223, 15, 85,133,196,231,184, 29,149, 8,171,150,149,195, 33, 33,120,237,245,250,106,228, 70,226, 72, 41,232, 4,166,203, -132, 66, 62, 1, 74,163,177,174,171, 58,164,128, 99,135,234, 52,103,106,176,210, 30,197,122,240,189, 5, 13, 82,144, 65,130,107, -158,204,137,234, 68, 15,183, 27,108,171,224, 86,160,189, 7,231,115,124,118,165, 6,190, 74,195, 89, 92,105,160,163,246,224, 92, -191, 27,194, 60, 20,140, 66, 43, 49,155, 98,249, 22,227, 98,227,225, 72, 50,234,140, 60, 76, 98,128, 17, 30,153,163, 62,203,124, -222,103,123,102,238,217,249, 0, 98,136,193, 55,199,213,144,121,251,166,203, 64,156,129, 16,240,228,167,203,178,242,134, 98,243, - 2,194,125,192,222, 32,112,102, 27, 38,116,109, 27,176, 8,102, 50,238, 12,196,220,111, 60, 75, 33, 87,226, 92, 55,208,223,224, -115,192,189, 65,233, 26,251,222,211,223,107,247,186,178,183,179, 79, 22, 79,128,130,129,239,129,245,120,250,236,137,108, 54, 54, -228,251, 31,220,151,209,176, 75, 9, 83,102,232,249,148,171,234, 36, 2, 54, 81, 32,211, 65, 10,116,221, 78, 11, 83,198, 85,193, -170, 27, 2,208,172, 1,109,171,197, 28,167,151,150,145, 77, 82,160, 36,142,201,147,122,163,166,182,167,194, 94,245,108,218, 33, - 56, 56, 59, 75,113, 42,103,190, 90, 48,112,237, 15,103, 4,163,213, 53,160,106,118, 58,108, 19,188,121, 36,164, 83, 21,194,122, -244,103,212,239, 64, 64, 12,237,162, 70, 57,203,145,185,157,106, 40,239,223,220,151,203,161, 6, 73,139,152, 65, 39,236, 96, 49, -107, 56,167,229,218,248, 29,192,139, 64,143, 1, 93, 8,112, 53,128, 1, 82,127, 31,193,126, 52,235,114,210, 0, 9,217,209,118, - 81,142, 47,187,114,222, 50, 90,112,208,197,162,231, 95,209,100,242, 18,206, 88,207, 81, 38,181,100, 16, 8,103,249,242,188, 67, -159,196,233, 15, 4,208, 64,171, 67,208, 5, 26,237,122,206, 75, 26,140, 16,112,152, 88,101,144,140,139,222, 82,253,166, 39, 79, -213,198,103,243, 89, 77, 20,102,188, 83,160, 25,111,246, 38,132, 21, 14,103,134,190, 7,230, 68,136,207, 89,177,130,240,244,248, - 88,126,247,123,111,113,162,226, 74,125,197,163, 23, 45, 13,218, 42,178,240,198,108,153,173, 29,153, 16, 2,122, 88, 93,128,248, -172,226,106,224, 63, 84,185,112,103,195, 16,169,107,108,228, 7, 0, 45, 33, 3,233, 47,192, 20, 20,242,225, 96,252, 49, 90, 2, - 34, 13,223,209,164,174, 92, 89, 15,133,166,208, 51,167, 98,180,202,110,102, 60,177,242, 17, 74,141, 80,221,194, 67, 68,235,216, -233, 44, 27,241,202,216,247, 13,213,136,249,201,149, 71,138, 84,104,143,103, 32,238,154, 18, 2,175, 56,211,137, 93, 7, 18, 89, - 15,236,191,255,157,187,242,222,253, 77,241,212,129,175,212,217,188, 56,109,203, 71,143,141,123,119,210,215,195, 20, 68,154,205, - 13,153, 45,182, 53,250,234,158,173,228,209,201,144, 34, 48,159,104, 64,176, 36,194, 58,162, 38, 60, 20,116,126,245, 88,141,139, -126, 7,144,245,147,217,218,141, 4,217,164,220,173,189,130,188,115,179,194,217,236,171, 97, 4,177, 41,117, 54, 1, 91, 3, 64, -244,254,240,251,135,178,198,184, 7, 64, 63,122,145, 79, 94,244, 52,178, 42,200,211,115, 53,162,203,169,124,239,187,121, 73, 66, -172, 75, 68,145,135,145, 94, 64, 40,158,109,233,119,255,243,111, 31,202, 23, 47,123,242,226,114,202, 44,181,160,139,124,222, 26, -200, 95,252,195,177,252, 23,223,185,193, 62, 37,122, 95,152,133,159,171,129, 71,208,209, 28, 78,104, 4,182, 42,161,254,189, 1, -157, 11, 28, 70,130,108,105,109, 37,245, 5, 81,154,101,142, 23,205, 22, 83,163, 60, 5,216, 66, 47, 81, 42, 72,201,173,122, 34, - 95,158,205,101,230, 91, 48,144,215,253,253,171,143, 94,200,119,222,216,148,157, 90,150, 7, 31,170,104,168,141, 44, 23, 30,199, -242,238, 28,132,108, 19,128, 28,168,167,193,199, 79,126,121,202,231, 0, 70,129, 61,102,253, 14, 4, 52, 95, 63, 44,200, 13,117, -218, 91, 37, 53,117,171,177,204, 70, 0, 14,234, 1,212,131,157,165,209,211, 95,107, 84,139,222, 32,140,109,162,251, 0,154,216, - 25,100, 58, 75, 25, 78, 67,192, 48,222,127,243,150,252,229, 71,159,201,147,135, 15,228, 7,111,191, 45,159,158,234,218, 45, 94, -201, 85, 95,215, 79,141, 20,140, 67, 70, 86, 4,151,221,216,222,214,189, 3, 42,214, 72,133, 80,134, 2, 11, 23, 46, 31,179, 95, - 53, 0, 0,189,229,242, 38,171, 26,114,110,116, 87,202, 32,175,168,213,105,200,142,159, 92,154,176, 8, 29,171, 83,142, 74,155, -209,128,145, 71, 96,128, 44, 21, 35,114, 38,236, 97,115,250, 32,164, 65,230,141,225,146,122,181, 98,253,206,209,200,178,113,128, - 77,139, 17, 63,139, 37,201,200,241,181,235, 63,232,159, 3,255, 0, 71, 71,142, 67,142, 66,153, 20,101,224, 20,211, 88, 65, 9, -172,100, 59,113,148,178, 0,146, 69,174, 37, 16,248,215, 90,216, 30, 13,201,181, 83, 12, 66,155, 71, 7,221,108,189, 92,102, 31, - 31,243,231, 36,200,224,168,160,245, 70,141, 41,216,170, 2,125, 61,251, 47,154, 61, 57,220,216,228,216,234, 89,111,164,239, 49, -209,224, 58, 77, 36,250, 42,178, 17,156,245,116, 73,135, 13, 7,135, 62, 30, 0, 73,224,103, 71,208, 63, 5,119, 66,224,179, 26, -129, 18,234, 28,129,222, 74,127,102, 60,118,163, 70,194, 12, 17,165,198, 14,196, 44,116,143, 64,187,218,105, 93, 80,161,203,116, -229, 77, 84, 6,217,112,127,145, 16,219, 3,123,130,128,105,171, 94,144,179,102,155,129, 3, 4,206,224,216,225, 92, 16, 64, 93, - 99, 19,166, 4,158, 5,228,168,159,118,135, 44, 81, 39, 65,138, 42, 93,104, 33,156, 53,175,168, 99, 29,120,154, 69,109,111,233, - 63,219,242,248,233, 75,105,119,122,164, 70,166,158,130,205,122,178, 42, 4, 83,206,249,254,216,145, 99,121, 8, 40,192, 89, 44, - 68,124, 99,140, 47,246,141, 83,222, 90, 37, 0,156, 26,142, 34,142,140,162,153, 21, 5,204,234,187, 49, 64, 86, 14, 18,195, 59, - 0,233, 77, 33, 16, 16,126, 97,140, 11,207,192,185,235,136,147, 16, 8,252,224,176,151, 41, 0, 75,115, 82,208,224,164, 94,169, - 27,210,155,170, 96,198,184, 9,198, 67, 4,155, 41,189,247,192,110,224,222,215, 27,219, 18, 70, 96,205, 75, 73,109,235,150, 28, -159, 95,169,125,185, 98,192, 0,242, 85,216, 98,238,137,126,192, 86,173, 36, 63, 0, 89, 15,202,183,100, 79, 19, 38, 25,184, 43, -121,170, 41, 10, 29, 25,233,100,197, 48, 4,164, 6,231, 4,192, 90,206,207, 94,240,247,189, 84, 69,158,191,124,174,239, 54,215, -224,189, 98,189,223,165,141, 17,130, 22,188,176,183, 65, 52, 56,152, 72,113, 71, 48,210,250,205,119,223,148, 14,164, 78,211, 41, -150,240,241, 76,125,253,217, 11, 13,242, 1,242,156,169, 67,236, 77, 34,170,105,150, 11,158,222,225, 25,127, 14,193, 52,206,122, - 38,136, 25, 32,129,204, 5,193, 72,127, 50,147,225,100, 66,162,170,183,239,221, 22, 47,154,202,109, 77, 2,175,134,107, 77,204, -230, 44,219,195, 87, 93,180,186,172,110,220, 57,104, 80,156, 8,108,144,247,110, 52,244, 78,166,229,233,171, 54,219, 68, 76, 76, -213,102,221, 62,168,203,121,179,171, 1,225, 68, 14,118,170, 4,131,162,122,132,160, 21,125,244, 98,161,200,117, 32,153,144, 6, -202,133, 84,158,247, 3, 78,188, 15,226, 32, 96, 80, 64,214,101, 92,181, 76,226, 16, 60,225,222, 98,236,120,185, 54,192,104,180, - 4,201, 84, 74,126,244,209, 67,121,251,104, 75,190,173,123,114,115,231,158, 60, 84,199,254,242,124,110,163,223, 24,131, 67, 59, - 15, 88, 30,207, 24, 88,215, 28, 23,181,169, 21, 4, 68,105,226,100,194,152,200, 84,150, 49,112, 80, 57,230,129,210,214, 66,141, -105, 66,117, 46,100,211,233,192,105,241,190,134,140, 9,251, 25, 44, 65,197, 54,144, 79, 70, 55,131,227,232,130,163,204, 6,126, -227,144,134, 31, 7,253,114,162,135, 96,176, 96,127, 8,125,173, 11, 93,168,103, 23,200, 90,151, 28, 41, 0,130, 19, 82,175,232, -231, 47,192,158, 6, 56,129,103, 66,101,165, 84, 66,112, 20,244, 98,167, 26, 93,118,155,154, 85,193, 9,220,168, 73,216, 91, 72, - 71, 23,237,102, 33, 32,139,217,127,252,170, 45,127,249,203, 51, 25,205, 13, 28, 6, 3, 80, 82,103,165,190,135,151, 21,194, 48, -163,113, 44, 47,213,193,213,106, 57, 41,105,132,221, 40,103, 88,150, 73,133, 22,209,238,109,228,165,154,207, 82,252,131, 68, 21, - 40, 95,121, 22,172,160,140, 89,216, 77,203, 12,191,183,136,232,188,126,245, 98, 40,223,215,133,255, 76,157,196,165, 70,130, 63, -248, 78,131, 66, 42, 28,175, 91,130,196, 38,150,169, 26,134,122, 35,148,173, 2,110,248,130,132, 37,200,118,230,115, 11, 96,126, -254,213, 90, 29,175,199,222, 10,103,148,213, 25, 3, 71, 0, 99,218, 26, 89, 31,119, 50,159, 80, 24, 38, 2,253,238, 10,142,204, -115,253, 93, 83, 91,106,104,100, 7,185, 77, 68,226, 9, 17,154, 75,206,237,223,219,173,200,118, 41, 37,223,191, 83, 98,134, 14, -131,236, 69, 75,249,201, 23, 45,205, 90,166,250,174, 25,121,126, 49,150, 93,144,220,212,242, 12,170,190,165, 81, 56, 15, 99,180, -226, 51,165,101, 67, 94, 28, 55, 29, 89,133,239, 52,222,133, 64,148, 45, 93,191,148, 30,218, 76,162,217, 36,100,120, 61, 61,180, -229,138,228,183, 26, 82,214,236,176, 11, 53, 61,125,159,197,122, 66,231, 81,217,170,106,164, 62,103,192,134, 42, 11,200, 38, 80, -198,254, 79, 31,254,131,252,244,147, 71,242, 63,254,231,191, 37, 47,175,150,178,187,171, 89,253,168,193, 86, 3,232, 70,123,237, - 38,201,101, 48,171, 59,132,214, 49,180,151, 29,152,140,239, 12,152, 34, 24,193,162,196, 88,220,244,159, 78,127, 32,185,237, 28, - 51, 27,100,249,112,248,221, 94, 79, 29,222, 80, 51,149, 30, 9, 31,216,198,240, 76,150,212, 4, 20, 44, 64, 13, 66, 35, 88, 33, -235, 27, 71,226, 82, 36, 97,169, 0,100, 21,248,175,251,164, 53,104,121,235, 65,133, 0, 11,126,174,166,134,134,153,190,174,127, -214, 79,211,248,162,196,138,125, 5, 15, 55,155, 74,209,202,209,157, 26,135, 66,228, 36,115,137, 58, 6,178, 58,132,225,212,117, -212, 0, 6,162, 20, 84,219,243, 12, 36,131,118, 2,123,178, 40, 67,163,180,143, 50,182,211, 60, 15,117, 63, 64, 92, 51,161,250, -220,154, 61,113, 26,100, 13, 42,210, 73,138, 25,152,105,171, 27,127,124, 87,141, 97, 91,239,227,118,185, 32,191,113,247, 64,142, - 91, 61, 57, 86, 67,182,118,179,239,112, 72, 28,143,115,200, 95,246,148,245, 76, 86, 11, 89,226, 41,200, 96,183, 12, 72,157,140, -245, 93,128,106,216, 33,173, 17,254, 99, 61,161,233, 29,120, 19,171, 26,132, 86, 66, 45,106, 70,143,234,214,184,101,244,171,200, - 54,146,245,220,198, 48, 83, 30,157, 16, 0, 77, 28,159, 68,208,186,132,176, 72,154,149, 21, 48,204,225,220, 83, 93,206,113, 52, - 64,184,100, 56, 90,147,228, 4,224, 65,144,198, 32,160,221,169, 87, 88, 1,244, 64,253,172,207,248,248, 84,179, 44,148,187,129, - 49, 8,109, 50, 32,212, 76,124, 65,102, 67,107, 61,198,250,119,131, 12,250,206,154, 29, 70, 11,153, 13,251, 4,216,130,105, 31, -255,100,120, 47,204, 22,146,183, 3,109, 8, 40,164,133,242,122,140, 11,198, 63,140, 92,197,205,141,172,249,215, 19, 11,192,162, -164,114, 12,246, 16,132,161,140, 59,158,142, 95, 51, 29, 30,238,237,201,166, 6,158, 96, 49,220,209,128,171, 27,205, 29,243, 96, - 64, 91,180,152,143,165,134,246,145, 62,199, 85,243,130,236,101,126, 70, 29, 12,192,137,126, 86, 6,157, 22, 75,248,213,202, 61, -217,209, 76, 30,130, 67,203,181,241,212,227,204,133,174,125,243,234,178, 35, 23,144,109,101, 75, 36,101, 8,125, 63,126, 93, 82, -230, 12, 56,230,212, 99, 66,212,185,247, 0, 10,162,109,152, 77,219,184, 37,122,217, 7,251, 85,117,230,152, 32, 8,152,197,147, -160,197,207,145,245, 19, 89,111,173, 92,213,164, 96, 69,199,134,247,192,121,200,110,149,197,211,160,235, 92,157, 31, 50,115, 36, -142,135, 27,160,204,205,202, 85,209,151,171,158,181,162, 46, 53, 24,132,236,232, 65,163,204, 49, 62,113, 98, 67, 40,219, 35, 8, -193,196, 22,170, 63,152, 70,193,125,171, 86, 74, 28,221, 43,230,125,121,213,153, 19,161,143, 54,199,137,218,183,186, 62, 35,236, -200,214,230,182, 36,169,186,252,242,193, 39,250, 46, 39,114,247, 96, 91,246, 54,171,108,197,204,116, 13, 91,189, 33,253,141,137, -131,121,172, 86, 35, 64, 70,201,187,161,239,130,128,108, 78,181, 57,203,180, 49,225,129,245,158, 46, 66,182,162,129,209,216, 86, - 59,138,224, 8,162, 49, 4, 96,235,249,106,104, 82,247,248,101,155, 45, 3, 76,120,129, 70, 25,247, 31, 85, 26, 50,177,170, 93, - 67,213,224,241,139, 51,249,215, 63,124, 79,247,167,207,209,209, 94,127,105, 8,125,216, 34,216,138,181, 71, 31,139,170, 1,148, - 63, 25,124, 45,150, 54,193, 18, 36, 75, 26,236,158, 30,170, 52,138, 73, 75, 99,118, 66,121,104,164,206,104, 30, 90, 36, 89,202, -132,215, 99,122, 98,180, 5,198,158, 68,157,111, 39, 3,106, 92,195,158, 67, 20,198, 18,130,227,119,109,124,227, 24, 55,123,120, -214,147, 31,125,114, 33,165, 98,154,131,249,158,103, 32, 24,100,166,251, 59,101,205,180, 61,249,240, 97, 95,166,177,199,121,104, - 74,189,250,134,171, 68,132,248,224, 98,160, 89,184, 79, 62,222,246,120, 46,247, 54, 11,210,174, 47,228,217,213, 72,158,183, 38, -242,139, 47, 69,141,209, 76, 62,125, 53,166,178, 26,250, 72, 0,190,228,232,168, 99, 62, 55,178,117,208,191, 34, 19, 15,189,170, - 20, 10, 41,102,237,200, 60,112,232,219,186,120,125, 13, 62,158,157, 77,100,175,158, 99,100, 15,254,110,162,200, 73,216, 0, 13, -114,159, 8,224, 24,229, 54,125, 62,160,177, 91, 87,125,249, 74,150,242,248,217, 57, 51,145, 7,191,124,197,153,121,164,254, 32, -160, 9,245,253,187,147,133, 52, 39, 75,206, 77,178,239,167, 70,166,154, 55,118, 34, 68,160,190, 6, 64,207, 78, 95,177,188, 11, -205,113,244, 30, 23, 14,137, 13, 80,218,213,112,161, 7,119,197,246, 71, 42,204, 91, 0,229,153,246, 19,128, 41,200, 2,111,239, -111, 80,241,170,150, 11,216,131, 76,235,243,149, 50,219,178, 81,205,115, 44, 35,159, 82, 67,163,251,188, 89,200,201,231, 39, 99, -246,239,191,113, 35, 79, 76,193,243,166,102, 81,154,117,110,108,133, 20,131, 72,174,245,219,217,191,132, 96, 69, 74,126,251,157, -109,130, 22, 65,206,129,108, 10,135, 30,145, 54,126,222,211,195,253,226,178, 39, 57,189, 0, 55,223, 58,148, 48, 95, 53,213,188, -160, 46,157, 47, 47,244, 34, 67, 97, 47, 75,149, 50,240, 22,167,144, 17, 3,186,171,217,202,147,243,150,252,191,127,251,145,124, -249,188,169,153,123, 81,158, 93, 78,228,239, 63,127, 72, 99,224,171,225,190,106,119,232,192,239, 30,236,145,252,230,188,213,100, -208, 67, 69, 45, 26, 31, 11, 30,209, 42,128,147,173, 96,222,181, 82, 33,219, 20, 70, 90, 48,221,209,108,183, 56, 42, 6,231,129, -222, 20,148,181,112, 81,124,244,160,209, 47,118,216,132,208,141,163,161,135, 78,134, 54,224, 36, 86, 6,254, 9,152,237,134,172, -106,113,142,219,201,242,162, 99, 2, 66, 16, 24, 15,100,215,248,249,140,235,143, 99, 60, 44,235,120,225, 39, 64,169,130,235,218, - 73,183, 82, 61,207,129,221, 12,232, 22,145, 19, 92, 28,208,238,218,176,198,137,161,219,241, 93,190, 53,250,201,249,110,146,177, -150, 1,176,140, 28, 90,175,186,217,237,211, 24,209, 33,175,174,193, 61, 40,111, 47,152,121, 19,216, 26, 88,224, 98, 99,170,105, -185, 24, 76,137,109,217,214, 51,112,103,119, 83,131,170, 46,121,250,215, 78,131,253, 90,219, 25,173,136, 53,104,123, 3,124,143, - 16,197,205, 59,191, 64,245,102,202,128, 74,156, 40,140, 79, 64,152, 6, 66,121, 19,160, 40,100,209,215,157, 19, 3,177,244, 67, - 58,106,114,226,171,131, 91,160,164, 58, 51, 37,188,203, 86,135, 99,164,139,121,143,233, 70,188,154,208,176, 53, 42,144,130, 14, -229, 81, 91,131, 93, 61,154,251, 98, 32,190,237,141, 50,123,209, 72, 14,246,182,107,236,181, 99,153,224,236, 47,154, 61,221,179, - 17,199,102,215,106, 68,231,122, 95,129,126,191,127,235, 64, 6,219,155,204,216, 59,157, 75,117,212,186,167,133, 50,133, 68,128, -133,128, 40, 9, 90, 62, 75,218,196,152, 4, 56,168, 76,166, 89, 93, 49,166, 73,160, 20,200,246,134, 44, 27, 76,133,153,156, 1, - 53,173, 87, 73, 66, 26, 92, 33,223,217,204,208,183, 36,136,125, 81,240,102,228, 13,195, 0,117, 56,142,149,185,170,202,179, 87, -167, 82,200,191,193, 50, 49,214, 54,157,213,179, 53,179,137, 25, 22,108,244, 14,247, 7,125, 6,131,195, 65, 79, 70,163,190, 58, -179, 3, 13, 56,247, 72,139,218,234, 52, 37, 9,139, 26, 44,247,212,129,237,147, 74,245,236,170, 77,240, 90,236, 36, 87,129, 18, - 95,113,158,123, 73, 76,130,237,177,247,186, 2,103,247,126, 77, 16, 29, 57,254, 97,206,116,253, 64,237, 13,123, 58,157,199, 28, - 21, 6, 8, 13, 21,160, 27,251,247,244,222,229,101,127,203, 72,140, 80,209,196,231, 35,187, 69,102,186,210,224, 1,228, 48, 8, - 90,225,236,174, 52,169,123,247,246, 22,171, 14, 0,233,194,231,143, 23, 9,207, 68,119, 48,166,253, 51,194, 35, 84,101,242,106, - 55,124,142,165, 33,208, 70, 5,233,188,217,166,222, 2, 42, 99, 8,228, 80,185, 49,249,110, 97,245, 54,159,175,240,204,158, 54, - 7,114,176, 81,118,194, 64,105, 13,242, 74,122,110,123,114,231,214, 61,169,215, 26, 36, 73, 59,105,246,213,198, 12, 77,139, 4, -205, 98,181,225,129,222,133,171,246,132,223,141,139,180,169,137, 7,190,183,162,137, 83, 73, 19,190, 78, 31,228, 55, 51, 86,180, - 96, 3,123,106, 67,224,215,174, 53, 19,112,175,170, 69,176, 53,226,125, 38,220,219,225, 8, 84,212, 69, 6,197, 0,225,193, 79, - 98, 77, 16, 8,181,122, 3, 86, 4, 81,121,248,249,231,199, 12,154,238,222,220,103,219,182, 90,152, 88,146,128, 4, 27, 18, 1, -161, 9, 53, 81, 9, 14,118,218, 51,162, 46, 15,182, 56,165,134,191,223,235,202,223,125,252, 82,254,229,123, 59, 4, 97,117,198, - 9, 81,183,136,222,102,208, 51, 62,237,203,153, 70, 15, 37,180,144, 33, 72,225,128, 10, 86, 54, 67,249, 92,216,159, 6,173,231, - 70, 1,243,191,121, 58,206, 15,159,245, 53, 67,155,201, 13,188, 4,192, 7,163, 5, 47, 86,173, 20,202,219,251, 69,217,214, 11, -138,114,246,112,156,149,131,205, 10,203, 38, 47,213,152,143, 47,103,236, 25, 71,177,217, 54,128,235,176, 64,152, 45,252,226,164, - 71,152,255, 75,141,238,255, 63, 61,156,205,238,156, 8,115, 68, 71, 99,117, 76,184,124, 40,167,122, 44,149, 27, 27, 20,128,241, - 41, 39,211,199,102, 1,100, 48,245,103, 47, 16,253,204, 13, 41, 11, 49,131, 44,104, 73,117,227,161,116,246,131,175,237,200,119, -239,212,229,127,253,235, 99,121,217,233,233,119,175,232, 12, 36, 76,228, 74, 29,235,233,243, 49,245,213,209, 99,238,119,166,108, - 37,124,113, 60, 35,235,210,222,225,134,252,209,207, 39,146, 15,141, 96,191,170,107, 50,146, 28, 1, 28,199, 23, 83,121,210,154, -203,121,123, 74, 84,243, 4,253,211,181,176, 23,116,149,142,164, 63, 76, 88, 41,233,232, 67,159,244, 23, 12, 38,202,105,143,154, -240, 39, 77,144,253,139,211,208, 53,101, 58,163, 80, 4, 85,164, 71, 85,161, 15, 14,210,114,111,175,226,230, 8,141,197,200,115, -156,249,184, 96,143, 47,135,242,213,203,174,252,203,111,220,144, 51,244,109,206, 53, 3,204,168,177, 31,206,229, 98,184,150,225, - 23, 23,114,239, 70, 69, 47,158,181, 90,196,205, 97, 83, 59, 68, 47,251,206,118, 93,182, 40,170, 17, 32, 52,116,128, 17, 93,119, - 56,192,249,140,217,248,120,166, 78,241, 97, 79,138,155, 25,233,235,190,247,103,109,105, 53, 91, 4, 32, 65,130, 16,229,162,154, -158, 5,100, 80,155,106,236, 63,252,234,153, 60, 60,237,104,228,153,145,131,221, 29,206,106, 62, 60,109,106, 22, 87,228, 5,190, -188,188,100,255,111,127,103, 75,142,213, 48,225,221, 65, 57,187, 92, 25, 38, 33, 96,159,210, 99,121, 42, 96, 86,144,103,102,249, -234,234,138,134,245,112,119,143,207, 91,200,229,109,254, 59, 50,244,110,167,219, 51, 0, 26,156,186,211,248, 6,162,151, 32, 49, -160,208,211,166, 43,144,120,226, 68, 95, 60,235,103,185, 82, 85,114, 61,101,236,120,246,193,196, 6,205,100, 48, 75, 97,245,208, -179, 3, 48, 6, 70, 7,165,251, 5, 81,250,134,112,166,244,106, 42,124, 13,248,178,209, 29, 53, 78,200, 16,125,115,146,200, 54, -141, 9,206, 24,216, 80,218, 69,159,213,140, 70,108,189,184,149,201, 54, 26,243, 98, 98,156,230, 14,156,151, 88, 74,200,181,177, -227, 16,185, 56,193,128, 58,190, 24,181, 41,195,244,148, 79,195,130,209,177,171, 46,132, 56, 42,242,238,209,190,188,173,223,243, -232,172, 45, 39, 26, 28,161, 11, 3,178, 27,112,100, 7,124,215, 28,199,112, 80, 86, 64, 57, 16, 45, 8,224, 27, 80, 90, 70, 80, -133,117,165,164,178, 7, 13,244, 13,210,147,146,107, 94,141,100,165, 84,102,214,179, 90, 91,165, 2,122, 14,200,182, 34, 71, 69, -141,190,121, 70,207,134, 30,121,210, 10, 99, 60, 46, 90,247,164, 89,170, 75,189, 90,210,179,184,228, 8, 90, 83,108,250, 2,153, - 95, 1,207, 21, 6,212,118,184,174, 94,121, 43,136, 6,229,121, 23,200,171, 49, 15,220,122,121,242,229,241, 5, 75,235,214,174, - 17,174,103,128,128, 67, 82,164,167, 69,149,146, 35,104, 26,172,103,212, 56,131,211, 3,109, 16,244,212,151,137,177, 5,162,148, - 10,103,130,192, 28, 25, 48,132, 99,124,238,133,137,233, 32,126,143,200,157, 29,179, 87,237, 51,208, 8,216, 26,241, 24, 76,169, - 51, 24,118, 13, 85,239, 39,175,249,225, 81,214, 63, 57, 59,151, 55,110, 31,201, 0,218, 1,186,255,226,207, 56, 98,183, 38,217, - 72, 68,230, 68,220, 61,112,131, 64,196,102,179, 86,102, 69, 21,103, 29,107,178, 0, 62,232,242, 74, 54,106,111,202,119,191,241, -129,180, 47,143,245,108,218,169, 69, 91, 15, 54,218,168,125, 23,255, 63, 87,239,213, 36, 73,122,101,137, 93,119, 15,173,101,234, -202,146,173,209,221, 64, 15,196, 8,195,112,150, 67,109, 70,154,113,249, 66,163,241,145, 63,132,191,131, 47,251, 68,227, 3,141, -182,251,192,217,181,221,177,177,217,153, 33, 22,104,108,163, 27, 64,235,210, 85,169, 51, 50, 67,107, 15,119,231, 61,231,126, 30, -213,100,183, 21,186, 80,149,153, 17,225,254,249,149, 71,208,170,181,158,170, 53,138, 77, 73,192,208,217, 68, 30,155, 19,138, 47, -233,191, 77,152,118,121,233,100,201,252, 3,208, 60, 1, 98,140,103,174, 55, 88,202,183,207, 94,232,231,158,242,236,226,254,226, -227,131, 62,188,100,140,205, 81,227, 31, 19,135, 86,173, 32,167,151,125,233,214,180,155,215,235,133,198, 13,107, 61, 48,148,204, -228,200, 20,253, 48,177,232,104,242,197, 53,198,115,212,210,247, 0,245, 65,172,106,224,115, 62,157, 77,153, 88,177,126,192, 84, - 8,137,123,183, 6,122,113, 86, 27, 4,128, 2, 51,114,126, 59, 99,124,199,196, 16,249, 3,128, 63, 0, 68,241,153,254,236, 79, -126, 70,208,108,255,234,185, 92, 92,158,177, 64,175, 76,243, 4,127,130, 46, 84,112, 50,209,248, 7,215, 17,120, 25,136,124,149, - 43, 38,233,139, 2,148,128,206, 66,145, 0, 81,115,253,203,240,181, 18, 90, 7,103,229,245,100,198,166,104, 6,171,113, 8,196, - 56, 21,191, 2,177, 41, 75, 22,119, 80, 16, 68, 49, 8, 84, 62,112, 6,191,253,234, 68,223, 87,133,247,228,254,113,135,212,107, -172, 20,185,246,115, 34, 89,226, 24, 82,180, 44, 7,166, 8, 13,185,175,149, 3,232, 35, 56, 79, 72, 90, 24,169, 77, 53,209,125, -241,106, 40,231,253,185,140, 38, 33, 23,250, 0, 78, 28,119,115,206, 44,194,186, 19, 4,168,119,247, 42, 20,122,105,215,114, 20, - 8,129, 83, 19, 80,220,151,227, 72,126,251,226,119, 50,199,174, 9, 64, 1,189, 40,191,184,171, 29, 64, 61, 75, 32, 66, 41,139, - 1,164, 38,116, 13,122,175, 49,234, 7,201,222,115, 59, 3, 86,140,190,201, 64,122,198,243, 68,252,251,221,119, 61, 6,174,170, -190, 6, 70,100, 56, 92,213,122,145,213, 11, 28,204,128, 60,159,205, 67, 38,194, 12,187, 33,171,136,241,128, 3,241, 9, 19,134, -128,226, 49,107,154,152, 96, 2,113,180, 83,226, 52, 0, 99, 25,252,249,127,241,241,190, 60, 58,172, 74,253,110, 67,230,231, 11, - 6,173, 61,253,220,232,230, 39, 80,181,219,100, 56, 82,124,252,125,143, 5, 4,236,254, 16, 32, 80,168,124,250, 93, 95,246,203, -190, 60,172,197,242,245, 68,175, 35,140, 52, 60,104, 13,179,151,102,135,249, 15, 95, 99, 55,155,147,102,167,107, 52,179,196,230, - 30,195,185, 37,154,107, 77,228, 64,194, 67, 68,231, 15, 47, 71,242,243,183,219, 68,149, 62, 61, 31,200,205,104,197, 7,201, 40, - 36, 54, 18,198,193,192, 94,177, 88,244,229,197,233,133,252,237,103,177,116,255,234, 29, 86,244,248,172,182, 23, 52, 67, 1,220, -187,119, 15,106,242,173, 22, 70,255,250,179,215, 68,175,159, 93, 79,228, 90,239, 53,133, 65, 66,227,113, 63,123, 57,144,123,251, -117, 78, 80,136,116,133,122, 81,226,248,182,232, 28, 49,130, 69,199,183, 70,213,190,178, 81, 53,186, 55,237, 66,239, 29,118,228, -139,231, 87,242,221,139,177, 92,255, 81, 59,160, 53, 20,196,244, 97,208,207,241, 95,253,201,161,252,139,191,249, 66, 94,106, 85, -252,218,143,229, 91,125, 88, 46, 17,140,189,137,252, 15,191,252,185,188,232,141,229,201, 23,207, 9, 2, 2,178, 22,163, 69, 80, -135, 80, 13, 35,169,210,188,128, 42,110, 75, 78, 48,178, 14, 77, 14, 64, 18, 80,186,168,150,193,221,157, 57,144, 26, 10, 25, 56, -182, 1, 60, 55,154, 79,249,231, 0,181,128,246,210,215, 46,103,130,253, 94, 46,111, 10,106, 73,226,240, 32, 49,139, 75,116, 30, - 41,165, 71, 2,167,198, 22, 27, 66,221,116,155, 45,177,195,160, 5, 95,111,234, 92,198,239, 46,114, 71,154,165,182, 63,222, 15, - 64, 68, 61, 26,171,152, 13, 35, 2, 50, 94,215,119, 32, 58,186,163,145, 85,226,241,179,155,173,170, 89,213,226, 61, 65, 28,134, -147, 48, 36,243,216,208,239,129, 3,166,110,117,104, 19,163,180,177, 72,216, 56, 79,239,173,119,186,188,153,178,197,214,141, 49, -249, 59, 81,158,212,246, 24, 35, 64,114,210,245,223, 75,237,148, 6,223,188,148,187,157,186,180, 33, 89,124,212, 97, 97, 12,196, - 46,186,252, 74, 33,111,162, 56, 40,134, 40, 0, 98, 35, 87, 0,181, 56,190,246,192, 89, 47, 18, 67, 65,103, 61,109, 18,110,199, - 5, 57,232,214,168, 43,112, 59, 89,176,144,190,152, 76,100,186,201,202, 39,247, 75,242,239,126,245, 21,189, 6,200,127,215, 78, - 20,235,155, 76,182,196,247, 3, 4,252,235,179, 91,217, 89,205,244, 28,232,251,152,106, 87, 21,228, 12,148, 90,234,202,122, 54, -226, 74, 10, 81,197,231, 52, 37,203, 66,201,180,179, 99,142, 59,163,216,246,240, 16, 53, 41,208,108,103,195, 2,228, 23, 31,191, - 79, 89,224, 63,126,251,132, 66, 51,217,114,149, 13, 1, 38,112, 88, 93,122, 27,224, 5, 86, 18,228,108,213, 17, 57,190, 57,158, - 42, 76,234, 88,224, 69,214,253, 2,177, 79,237, 2, 95, 19, 85, 9,227,226, 25,239, 75,146,174, 38,157, 35, 32,176, 30, 17,193, -129,230, 44, 24,184, 34, 36,118, 35,122,174,114,244,218,128,218,105, 26,247, 48,158, 41, 82,204, 41,165,105,178, 17,232, 79, 24, - 39,113,142, 96, 86,180,135, 53, 22,174,173, 67, 79,246,110,122,114,113, 85,147,119, 31, 62,144, 47,190,121, 44,127,248,254,169, -209,210, 18,227,175, 99,108,139,107,132,110, 27,102, 50,152, 54, 80,136, 72,255,110,226,196,114, 88, 68,146,170,236,201, 11, 90, -199, 10, 77,150,144, 47,208, 69,131,143, 13, 12, 65, 77, 99,113,190,112,160,207,230,130,255, 31,231,131,162, 88,230, 89,163, 63, -123,205,209, 61, 68,189,190, 63, 25,201, 91,119,154,218,237, 78,217,209, 79, 17,243,102,104, 8,140, 17, 0, 32, 38, 10,206,154, -222,139,110,171, 35,123,157, 22, 61, 19,128,228,199,245,187, 83,109,202, 79,234,101,218,250,246, 71, 3,138,167,129,190,140,152, -142, 98, 5,178,180,144,153,253, 99,111, 68, 36,250, 39,251, 53, 57,233,205,153,112, 89,192,233, 57,127,117,118,198,189,248, 87, -223,125, 47, 63,122,231,109,121,248,246,143,101,119,119, 71,134, 55,167,196,133,164,114,220,120, 94, 49,126, 63,191,185,145,127, -252,245,167,178,187,179, 67,229,190, 86,167,109,197,169,158,183,211,203,107, 83, 76,132, 16, 14,204,156,242, 89,190, 31, 24,238, - 16,187,208, 42,179, 96,110, 84, 77, 40,231,249, 69,159,113, 1,251,113,172,136, 80,200,128,219,142, 2, 11, 46,114, 99,231, 36, -249,217, 55,167,178,175, 77,113, 17, 46,140,173, 42,129,163,243,101, 66, 99, 39, 78,117, 98,195,179, 49, 30,120,144, 20,215,242, - 42,188,158,240,128,255,103,127,114,204,113, 51, 14,211,237,116, 40,255,244, 77,207,237,202, 81,233,104, 55,180,136,220,232,207, -120,217,232,182,234,250,226,159,188,127, 40,111,237, 98, 60,145,144,143, 11,211, 19, 72,185,147,148, 5,144,214, 88,187,183,165, -153, 55, 52,180,179,221,228,205,213,169, 55, 51, 14, 31, 70,237, 11,253,190,211,235, 41,191, 22,102,244, 62,231,124, 24,123,219, -232,221,140, 15,124,114, 64, 57, 26,213, 67,178,166,246,184, 29, 22,116, 60,235,149,185,150, 53,181,234,155, 47, 34,163, 28, 65, -230, 53, 48,112,199, 91,135, 5, 61,112,121, 77,148, 51,169,215, 2,249,159,255,242, 72,222,189, 83, 23, 95, 63,227,191,248,251, -231, 60, 80,255,244,221,149, 30,146, 68,238,239, 62,210,206,213, 42,193, 82, 49, 35,245,186, 22, 43,141, 28, 1, 31,154, 87,216, - 29, 93,205, 76, 45, 11, 99,138,254, 96,108, 72,249,105, 44, 11,253, 57,239, 62, 48,240, 6,222,156,183,245,173,198,195,106, 94, -184, 0,238,160, 74,196,248, 9,163,148, 31, 29, 55,164, 92,181,113,251,165, 38,193, 41,198,146, 40, 34, 22,154,228,181,131,126, -231,168,170, 1, 70,175,213, 34, 54, 75,197,200,156,224, 80,237,146, 22, 4, 46,179,222,220,177,190,185,127,255,197, 90,223,127, - 77,126,250,176, 77, 78, 61,246,141,248, 59, 32,133, 9, 20,107,151,228,175, 63, 62,148,127,249,171,231,114,174, 93, 59,130, 16, -176, 19, 80,193,171,103, 53,121,232, 97,185, 28,204,244,243, 22, 13, 4,132, 7, 26, 92,108,116, 46,177,209, 22,163, 92, 81,131, -205,148, 10, 96,112,160,194,200,103,137, 42,125,180,150,153, 38,203, 72,147,237, 77,127, 42, 95,193, 53,107, 1,173,228,186, 44, -162,150, 12,245, 50, 20, 65,115, 90, 1,248, 53,150,175,159,157,114,250,242,223,253,233,251,242,239,190, 62,151,193, 12,215, 91, - 59, 34, 20,100, 90,189, 82, 17, 45, 8, 28,239, 92,147,237,120,204, 96, 70,116,183,103, 84,163,149, 11,146,221,102,131, 93, 19, -156,211,144,180,177,211,132,212, 34,254,238,242,214,198,238, 20,109,209,159,125,126,221,163, 18,217,190, 62,148,248, 58, 76,115, -104,222,177, 49, 9,100,220, 43, 36,169, 34, 45, 77,115,166,165,158,201,186,157,183,105,163,163,176,234, 15,110,168,241,142, 14, -207,119,220,238, 52, 81, 3,213,140,103, 9, 0, 61,116, 82, 68, 7,175, 76, 30, 21, 63, 23, 69, 2, 62,215,154,123, 57,140,146, - 50, 28, 29,199,206, 23, 21, 73,222, 20,237,178,220, 3,155,148,234,146,255, 31,247, 53, 45,214,236, 25,205,152,162, 23,231,188, -214,245,166, 46,112, 17,119, 98,190,243, 79,176,177, 56,157,181, 2,127, 43, 52,147,131, 21,169,231,219,181, 48, 51,113,219,135, -107, 17,252,205,201,133,190,254,156, 1, 28,200,105, 76, 67,146,129,237,135,113,141, 64,245,195,164, 14, 40, 98,184,106, 1, 41, -125,127,183,161, 49, 36,100,146,106,176,171, 79,184, 79,197,218,226, 68,207,188,231,100,103, 33, 48,132,130,218,139, 81,252, 52, -245,108,116,245,237,107,208,131,107,218,218,232,138, 48, 51,129, 29,101, 85,131,123, 94,139, 14,116,150,195,201,173,158,245,129, -222, 79,179,113,222,211,128,141,130,254,234,226,140,159, 3,147, 59, 88,183,226,217,155,174, 19, 2,190,176,179,229,245,242,204, -118, 20,147, 40, 88,242,130,231,254,233,215, 39,212,155,231,116, 15,194,109,122, 31, 82,204, 51,118,247,113,160, 93,164,198,166, - 98,166, 36,121, 77,151, 69, 26,108,104,108,139,173, 19,197,168, 55,140, 86, 84, 23, 51,156,133, 71, 67, 28,160,214,227,196,115, - 76, 30,103, 21,237,138, 43,196, 80,116,123, 70,167,139,183, 99,121,252,125,214, 1, 38, 67,189,119, 3, 45,232, 58,205,186, 21, -123, 89, 72,122,175,184, 75,221,128,253,146, 0, 3,164, 77,194,218,138, 5,224,141,250,253, 27,169,148,107,182, 18, 19, 83, 72, -251,246,241,119,122,230, 74,114,247,232,142,140, 70,125,121,113,217, 23, 51,236, 51, 17, 42, 20,170, 72,138,159, 63,153,110, 21, - 8,113,126,144,176,141, 58,233,140,103,156, 32, 83,165,100,141,140, 33,230, 77, 71, 1, 56,150,217, 44,145, 78,167,164, 29, 39, -192,176,230,109,128,216, 12,236, 7,154, 40, 36,105, 76, 82, 90, 21,195,252, 20, 53, 62, 63, 58,106,203,127,124,124, 67,171, 86, -116,207,163, 19,195, 25,225,204,119, 91, 13, 45, 2,119, 9, 70, 67, 1,116,173, 5, 76,232,112, 37,160,158, 93, 79,245,188,111, - 38, 90, 56,134,252,188, 57,189,215,173, 90, 89,127, 86,141, 83, 1, 2,211,244,235, 65,133, 59,232,248, 68,185,159, 92,245, 57, -153,169,151,235,242,206,219,239,242, 94,188, 58, 59,101,161,135,233,201,207, 62,252, 64,218,205,150, 60,125,246, 13,189,222,129, -131, 65,177, 10,208,240, 97,127, 68,253,250,111,191,255,206, 80,232, 26,119, 1, 40, 61,190,123,172,141,102, 67, 94,190,126,205, -100, 12, 61,133, 54, 40,157, 48,252, 2,202, 29, 98,102,158, 80,103,126,170,207,197,209, 78,149,212, 63, 0,160, 49,217, 5,230, - 2, 88,156,150, 22, 69,226, 76,138, 16, 7, 97, 31,124,113, 51, 37,235,232,193,126,139,226,111,112,196, 91,204,103, 90,120,102, -173,168,194, 42,196, 51, 81, 44,195, 74,192,165, 77, 3, 65, 69, 95, 0,224, 70, 4, 35, 84,172, 55, 80, 43, 42,162,195,138,152, -249, 61, 7, 6, 10,220, 94, 46,165,213,208, 91, 92, 43,154,201,198,246,235, 1,170, 81, 63,182,132,234, 99,151,226, 73,175,167, - 65,109,175, 68,254,241, 40, 4, 90, 47, 67, 17,126, 40,195, 33,192, 92,246, 23,114,126, 59,215, 10,204,198, 34,129, 6,198,102, - 57, 67,244, 32, 31, 8,140, 50,192,127,207,250,238, 97, 52,139, 68,140, 53, 81,169,160,131, 39, 47, 94, 31,178, 90,187,192, 78, -157,149,101,156,161, 94, 46,196, 14, 32,166,130,106,235,237,227, 29, 41, 53, 1, 90,211, 74,105,146,145,254, 43, 13,154,152,137, -149,154,228,181, 62, 60,212,196,184,201,203,211,222, 70, 30, 21,128, 82,213,235, 82,210,234,120, 97,149, 87, 54, 3,158,102, 72, -100,239,231, 79,199,220,183, 97,207,139, 93,124,163,213,149,119, 30,234,207, 9,245, 70,108, 42, 76,150, 24,215,113, 71, 3, 41, - 70,231, 5,143,221, 46,254,201,231, 87,230, 54,166,223,223, 41,106,146,155, 66,246, 79, 3,134,126,206,146, 6,145,253,110, 81, -171,186, 44,247, 60, 39,231,125,118,163, 4, 13,173,220,238, 11, 70, 49,137, 57, 52,163, 43,186,186,233,219, 24, 87, 59,216,191, -249,244,177, 52, 75,239,208,252, 4, 40,109,236,195, 24,172, 17,228,245, 30, 63,218, 43,203, 79, 30,181,245,231, 14,200,129,135, -222, 60,186,253,191,120,171, 33,255,234,119,151,178,234,106,101,184,158,153,220, 41, 14, 78, 22,251,242, 13,119,183,120,221,225, -108, 66,227, 20, 36,205,133,118, 19,162, 65, 63,212,255, 62,121,126, 42,159,157,143,101,103,167,195,241,108,167,211,144, 42,164, - 54,245,215,245,237,141,252,203,191,237,113,221, 2,224,209,119,175,123, 44, 56, 48,142,123,118, 51,147,167,103, 87, 68,204,226, -112,225,115, 64,233,175, 86,169,232,185,153, 17, 96, 98,168,115, 59,119, 8, 36, 20,120,161,142, 66,142, 73, 13,157, 25,166, 12, -245, 74,217,130, 77, 46,195, 4, 60,209, 14,157,158, 5, 27, 19, 35,193,232, 23, 29, 39,228, 67,239, 28,236,234,121,183,206, 0, - 99,109, 4, 85, 60, 3,232,116,145,232,118, 26, 45, 58,163, 1, 60, 26,242,217, 24, 89,114,213,247, 7, 21,182,169, 51,104,161, - 40, 71,198,144,229, 8,122,232,176, 74,174, 83,156,187,169, 2,246,243, 4, 65, 97, 85, 16,174,153, 84, 54, 4,244,133,164, 91, - 0, 64,182,113,106,119,164, 89, 65,145, 75,191, 7,252,228,180, 91, 74,210,150, 91, 76, 88, 35,149,144,245,157,173, 46,170,118, - 79, 34,199,140,240,217,241,114, 53, 16,111,182,211, 8, 78, 9, 96, 21, 43,246,123,179, 95,141,233,146, 24,120,102,191, 28, 59, - 43, 90,216,110, 66, 65, 50, 7,205,106,116,111,113,192,107,141,228,141, 53, 28, 10,171,150,118, 75,158,118, 91,160,188,242,121, -209,164,254, 88,207, 64,134, 43,131, 12, 17,201, 72,112, 8,108,228, 93,231, 44,208,209, 86, 51, 48,103,199,157, 70, 65,218,218, -225,111, 60, 43, 78,176,238,128, 49, 26, 84,195,154,218,213,161,219,235,105,178,194,217,187, 29, 12,244, 61, 20, 40,237, 28,232, - 53,232,118, 15, 89, 32,227,189, 53,155, 53,218,243, 98, 55,139,251,128, 51,141,243, 50,213, 2,188, 81, 43, 56, 26,174, 25,212, -116,219, 53, 27,121,247,198,220,109,162,248,255,249,143,223,211,115, 58,144,215, 26,184,151,115,104,235, 23,152,232, 67,237,216, -193, 60, 91, 96, 58,229,134, 35,228, 12, 39,166,230,133, 98,121, 65,149, 58,161,122,222,100, 54,229, 52, 41,138, 86, 68,228, 91, - 41,101,197, 39,174, 53,176, 21, 72,230,141,106,198, 64,184, 94,226,236,128,140,218,150,202, 64, 3,175, 4,189,245,194,222, 14, -159,107,222,147,108,129,190,246,137,159, 99,151,137,253,121, 18,191, 81, 11, 68,167, 72, 96,112,190, 42,101, 95,255,174,145,231, - 68,102, 54, 29,210, 31,225,103, 31, 60,210,184,252,146,104,241, 92, 38,112,124,123,179, 9,198,115,118,118, 61, 52,133,188, 88, - 28, 11,192,240, 34,136,127,169, 18, 6,238, 33, 38, 85, 88,107,224,122,150, 11,166,107, 14,224, 87, 83,207, 67,226,213,157, 17, -140,158,175,205,148,244,182,181,243,166,192,179,253,244,245,156, 73, 30,137,109,163, 13, 29, 40, 94,136, 17,143,142,186,242,204, -179,209, 59, 38, 92, 48,229,129, 7, 58,102, 78,227,201,156,178,207, 80,129,171,209,119, 65,139,170, 25,124,222, 65,107, 45,114, - 68,142, 22,240,189,187, 29,198,165,223,124,121,174,159,123,109,244, 65, 61, 83,175,175, 38,244,100,199,185,228, 42,118, 13,243, - 21, 83,160,163,212,180, 94,199,239,159, 62,147,149,254,247,163, 15, 62,144,163,227, 31,201,248,246, 53, 1,205,192, 97,161, 70, -248,228,253,135,242,209,163, 99,249,254,229,133,124,249,252, 66,190,254,102, 38,247,142,239, 72,101,133, 17,121, 94,238,104,209, - 4,249,222,172,103, 34, 80, 24,105, 60, 59, 31,113, 21, 66, 55, 0,205,101,192,137,188,212,184,139,220,136,185, 12,166, 59,184, -219,104, 60,193, 71, 7,214, 7,212,114,104,218,211,131, 66,243,200,112,106,180,219,138,230,164, 30,132, 67,168,161, 97, 76, 20, - 76, 90, 54,137,221, 35, 60,191,112,245,204, 12, 7,154, 80,103, 16,213, 8,165, 83,210,138, 68, 15,226, 74, 59, 93,160, 72, 97, - 86, 18,248,182,175, 38, 79, 53,178,189, 34,190, 25, 93, 13,172,242, 80,109, 64,174, 53,142, 13,168,227, 17,176, 99,154,214, 0, -152, 65, 42, 16,251,246,193,114, 35,159,191,234,115,239,134, 68, 14,103, 28, 28,226,208,129, 46,176, 99, 56,208,100,178,210, 96, - 55, 89,197, 20,132,201,186, 81, 60, 14, 4, 92,153, 16,244, 54, 14, 28,134, 74,220,164, 50,225,165,174, 29, 4,198,215,122, 64, -178, 5,159,194, 36, 8,226, 59, 45, 19,246,127,221, 91,112,228,255, 78, 75, 11,138,141,199,160,119,163, 95,223, 95,154,232, 69, -185, 90,229,126,100,103,167,197, 78,231,243,203,141,124,121, 53, 52,228,103,161, 46,119,247,171,252,115,188, 95,112,196, 1,122, - 64, 48, 42,104,178, 44, 96, 15, 21, 24, 98, 29,202, 54, 65,208,208,164,176,166,205, 97, 28,121, 12,168,226,212,159,208, 93,139, - 88,101, 60,210,174,122,181,132,156, 98, 76,106,198,113, 3,135,219,227, 14, 30, 15, 51, 64, 67, 24, 83,238,106,240,185, 93, 9, -121,252,131,197,210,164,118,185,163, 75,131,176, 79,192, 24,130, 42, 3,188,254, 25,174,237, 23,207, 7,242,223,252,236, 30, 53, -180,201,133, 69,229, 31, 26,122,127,174,215,230,163,227,186,188,210, 34,228, 83,237,144, 71,227,153, 12,170, 80, 39,210,206,170, -150,151,191,253,244,185, 70,212, 6,173, 24,241,158, 71,250, 64, 97,108, 12, 96, 13, 40,129, 8,130, 89,253,236,111,239,215, 9, -252, 58,106, 67,243,216,163, 2, 31,124,158,111, 7, 99,238, 86,241,192,180,170,101, 9,245,140, 60,191,188,165,226, 27, 2, 49, -254,174,209,110, 75,199,183,132, 50,212,195, 12, 90,152, 80,192, 39,100, 0, 17, 26, 57,152,169, 13, 17,213, 64, 9,103,205,135, - 59,181, 85,196,249, 96,135,138,192,173, 15, 35,181,185, 93,103,111,231, 38,228,232,146, 70, 14,238, 28, 45, 86, 3,125, 96,170, -250, 16, 3, 0, 83, 51,227, 18,152, 4,150, 75,230, 81,158,133,156,111, 44,117, 61, 19,121, 45,226, 90, 69, 61, 43, 99,125, 79, - 25,237, 68, 50, 49,133,137,176, 51,183, 0,101, 74,118,158,115, 41,180,241,124,194,241, 40,222,111,184, 49,170, 11,238, 17, 58, - 62, 67,184,198, 68,174,195, 42,116, 67, 93,120, 83,164,219, 56,131,149,200, 9,203,136,111,186, 3, 75, 38,128,141,227, 62,219, -115, 23, 59,177, 26, 67, 82, 39, 78, 17, 44,113,137,122,179,221,241,155,190,188,141,115,227, 55,100,118,227,221,211,148,194,240, - 2,145, 83, 29, 76,205,102,136,246,119, 58,228,107, 26, 86,216,103,136, 52, 72, 67, 2, 51,220,216,206, 31,154,223, 72,214, 88, - 51,224,153,183,228,132, 61,179,117,158,220,221,174,157, 79, 57,141, 48,214,148,107,193,255,194, 84, 69, 92, 7, 75,208,211,213, - 64,187,172, 18, 17,235, 70,157,213, 0,166, 9,118,185,198, 40, 58,148, 91, 45,148, 54, 0, 81,109, 70, 90, 48, 21,232,121,176, -223,106,106,225,216, 52,229, 64,253,158, 82,107,159, 9,170, 63,156, 24,159, 62,222,240,249,175,149, 11, 90,236,149,120, 93,175, -110, 71,140, 57, 93, 45,152,231, 26,103,176,135,206,100,114, 4,170, 61,189, 24,108, 69,125, 54, 4, 72,150,169, 92,183, 94,174, -104,224,132, 51,149,119, 60,117, 4,121, 0,177,145,124,139,133,138,222,223,146,156, 0,136, 85,171, 16, 79, 48, 30,223,106,242, - 43, 82,141, 44, 99,114,242, 38, 19,235,128,165, 16,216,217,142,182,113,143, 18,195,223,184, 25,189,108, 60, 11,210, 96,158,224, - 92,246,181,217,162, 24, 17, 60, 2,244, 57, 29,220,246,120,118, 0, 66,148, 56,227, 44,172, 99,122,141, 31, 64,182,186, 80,212, -247, 29, 82, 19, 95, 60, 3, 84, 94, 13,166,114,160,205,199,225,238, 88, 46,181, 89,128, 5,105,106,108, 52,114,206,141, 48, 9, -122,239,254,190, 21,216, 98,212, 66,113,130,196, 56, 67, 40,158,193,212, 65,195,210,128,161,207, 34,116,235,191, 60,207, 26,176, - 47, 80,122,140, 55,101,130,209,206, 46,158,147, 5,133,130, 23, 0, 56,120,219,167,152,148,213,186, 77,192, 49, 48, 3, 0,188, - 65,115, 0,221, 39,100,132,239, 29, 30, 48,126,248,100,122,108,216,201, 34,119,176, 59,245,109, 77,133,189,125, 37,111,254,239, -188,174,160, 46,222, 34, 22,142,101,191,153,213,231, 88, 99,252,116,195,243,142,175, 95,109,204,173,147,140, 3,104, 76, 84, 43, - 91, 13,132,131,238, 14,239,251, 96, 52,145,127,252,245,111,100,111,119, 79,126,244,206, 35,241,214,125,189,214, 23,140, 57,207, - 78,174, 40, 55,253,222,195, 59,218, 16,236,200,111,191,122, 46,215,215, 23,178,105,116,168, 29,176,211,237,104,145,185,203,132, - 61, 25,221,210,133, 16,231,178,204,174,220, 60, 32, 48, 98,199, 51,133,198,160,228,116, 52,104,136, 5,141,254, 28, 48, 14,248, -218, 57,115, 39, 44,207,241, 89,161, 73, 15,113,168, 76, 57,207,117, 12,245, 71, 72, 51, 44,112,154,146,174,116,108, 28,175,249, -225,233,229, 68,190, 57, 27,211,154, 15, 55,249,229,197, 72, 31, 24,189, 73, 37,216,139,195,202,109, 35,203, 36,118,227, 35, 33, -133,198, 20, 3,224,248,131, 10, 80,147,250, 44,207, 27, 21,100,236,111, 51, 94,226,172, 83,141, 78,182,113,114,171,183,227,165, -124,253,106,100,157,136,190,129,221, 86,142,187,110,211, 19,143,137, 18, 61,189, 93,179, 48,192,131, 23, 50,240,196,206, 79,214, -179,189,152,254, 42, 85,138, 6, 96,113,149, 10, 42,229,130, 38,197, 70,189,196,139, 15,116, 40,104, 53,216, 87,132,113, 94, 31, -130,169,244, 38,161, 22, 6,115,189,144, 21,153,132, 1, 1,113,230,214,101, 99, 81,218, 67,130,190,148, 88, 33,195,196, 10, 64, - 81,146, 56, 9,196,196, 76, 79,180, 3, 93, 44, 61, 6, 98,112, 46, 65,217,240,253, 44, 17,206,136,144, 64, 69, 35, 57,225, 32, -154,151,180, 29, 64,160,195,169, 48,230,130,178, 79,217, 70,159,129,170,172,135,177, 94,172,104,208, 92, 19,176, 2,142,237,114, - 97,116, 39,220, 44, 76, 37, 0,254,186,130, 42,146, 30,252,208,139,221,146, 84,171,101,152,141, 44, 93, 21,159, 10, 97,232,239, -126,245,245,165,252,226,157, 61,217,173, 27, 72, 10, 63, 75, 95,138,187,161,207, 94,141, 73, 13,105, 54, 27,242,163,183, 3,121, - 53, 6,203, 97, 77, 26, 6,174, 75,171,148,149, 75,200,204,198, 33,213, 2,121,141,214, 17, 87, 49, 48,173, 48,175,232, 60, 57, -230,103,250,158, 14, 15,247,244, 26,207,165, 55,223,176, 2, 71,149, 73,110,189, 6,234,139,193,140,159,135, 73, 73,175,111,129, - 92,203, 44, 19, 48,222,103,206, 51,231,191, 36,113, 70, 53,156, 40,164, 32, 47, 91,247,224,207, 33, 11,107, 9, 58,224,244, 32, -237, 78,241,115,242, 20,237, 48,135, 43,142, 50,201,215, 54, 64, 18,186, 77,252, 44,228, 55, 8,174,224,225,169,228, 49,166,195, - 56, 25, 26,229, 69, 38, 91,236, 90,145,164,241,131, 80,180, 60, 61,159,240,115, 67, 90,178,169, 29,251,235,171, 43,121,113,213, - 39, 69, 12, 15, 63,198,249,124, 15,190,191, 85,132,131, 33, 67,183, 89, 32,104,114,186, 12,137,154,230, 32, 72, 59,154, 90, 33, -239,206,154,227,122, 71, 80, 58,203, 82, 85,144,128, 29,172, 6, 28,215, 27,211, 51,236,135,177,247,166,253, 41,246,224, 0, 85, -249, 57,183,155,181,118,125, 19,185, 22,205, 77, 55, 48, 77, 75, 77, 96,248,153, 37,237, 0,253,109, 39,104,226, 66,121,155,180, - 37,206,100, 36, 99, 20, 43, 90,104,198,118,142,178, 14,105, 63,115,158, 9,232,206,168, 93,237,144,225, 89, 90, 63, 6,250,247, -161,185,146,209,225, 47,118,180,183,128,252,125,236,204, 81,240,162,211,174,105,119, 61, 89,198, 68,172,119,170, 89, 22,250,171, -181, 1,134,122,218, 88, 96,194,134,115,115, 50, 30,233,217, 95, 81,196,233, 14,152, 14,250, 90,141,186, 22,128,205,166,153,109, -248,121,201,151, 26,188,238, 53,120, 89, 79,134,116,208,202,211,171, 32, 35,157,238,129, 94,251,103,212,189,240,197,217,153,250, -214,136,160,200,153,205, 22,188, 22,232,120,112,249, 22,203, 5, 39,125,192,187, 0,215,179,215,110,202,159,127,242,177, 60, 61, - 61,145,193, 0,171,149, 57,185,221,160,173,194, 82, 55, 6, 62,135,241, 48,145, 66, 98,150,193, 40, 96,192,120,128,176, 22, 86, - 43, 72,218, 20,145,161, 25, 75,198,165,195,132,147, 27,188,199,140, 99, 54, 96,154,149, 68,111,192,113, 28,125,195, 54, 46, 50, -143, 9, 26,241,172,215,116,223,194,125,194,153,195, 42,167,162, 69, 68,174,157,240,167,198, 78,223, 31, 13, 24,198,196,123,205, -138, 12,134, 3,217,219,233,202,112,134,120,182,226,115, 93,209,231,122,208,191,145, 7,119,238, 73,189,181,144,127,248,226, 49, -229,178, 83,215, 56,243,121, 79,216,245, 39,110, 45, 67, 49,171,192,166, 27,107, 74,162,218,122, 37, 93,235,160, 27,165, 83, 38, -165,178,197,177,131, 52,102,234,107, 29, 30, 60,164,255, 66,172,239,191,144, 45,112,197,132,201, 13,139,238,212, 7, 64,155,154, -121,228,243, 30, 96,194,246,250,122, 34,199,187,109, 45,152,242,244,221, 48,221, 5, 19, 55,194, 61,130,170, 93,198,233,229,195, -104,103, 49, 7, 53,180, 32,133,101,200, 6, 47, 19,228,153, 59,126,242,118, 71,126,243,213,169, 12,199,115, 54, 69,104, 74,233, -107,146, 15,248, 76,224, 89,169, 84,179,196,194, 64, 64, 11,215, 23,177,252,163,247,222, 37,253, 21,244,211,215, 24,201,175, 23, -242,246,163,135,210,236,222,149, 81,255,148,207,238,139,243, 27,205, 91,117,190,223, 63,255,248, 29, 45,248, 39, 26, 27, 17,118, -139,150, 96,177,222,210, 2,175,214,220,211,115, 60,145,156, 44, 12, 32,167,231, 3, 35,124,196,175,154, 95,226,152,126, 78,185, -233, 12,227, 4,132,139, 80, 20,195,127, 1,107,236, 5,153, 3, 66, 37, 86,100,221,235,254, 88,239, 61,118,238, 17,159, 13, 76, - 9, 11,185, 13,175, 37,114,140, 21, 39,218,104,196,122, 30,255,143, 95,189,228,248, 27, 15,227,157,110, 73,254,250,189,150, 86, - 49,121,249, 63, 63, 61,147,243,193,146, 55, 49, 22, 75,172,158,243, 85,222, 36, 90,125, 3, 48, 68, 73,196, 13, 1, 39,168, 56, -205,255, 58, 48,215, 30,183, 11,199, 78, 24,218,217, 64,197,127,124, 79, 43,235,234,140,163, 6,136,208,224, 26, 92,245,151,164, - 90,193, 5, 14,187, 3,208, 14, 80, 1,118, 91, 37,118, 46, 39,253, 37,171, 67, 54, 47,250, 63,184,193,136,251, 85,103, 66,143, -132,128, 81, 61, 30, 80, 40, 95,185, 56,197,155, 15, 97,139, 82,190, 46,187, 90,173, 69, 65, 36,159, 93,233,135, 47, 24,173,196, -248,199,214,229, 97, 36, 14, 96,135, 56,159,220,180,251, 75, 34,227,205,115,108,185,241,248, 30,128,148,199,251,128,215,110,234, - 45, 13,196,102, 33, 99,210,129, 1,247,179, 49, 53,228, 41,255,138, 17,138, 24,168, 15,215,164,144, 53, 16, 96,165, 24, 72,187, - 81,208,130,104,194,135,217,139,173,144, 25,206, 87,236, 92, 23,110, 92,101, 29,142, 1,160, 80, 53,211, 92, 36, 49,250, 32, 70, -196,192,233,172, 28,130,152, 32, 33,207, 18, 30, 84,254,254,237,239, 94,201,255,244,203, 71, 50, 36,176, 46,210, 36, 86,144,145, -254,254, 98,176, 70,239,197,157,232,193, 94, 91,198, 80,236, 27,106,210,211,110, 96, 55,187,144,238,209, 30,187, 41,140,168,164, -188, 16,125,155,226,205, 67,106, 20,239,239,102,165, 69, 62,127, 78, 15,244,140, 9, 17,138, 93, 19,237, 16,166,250,158,145,204, - 70,240, 84, 46,233,117,175,231, 77, 59,125, 97,227,115,116, 11, 75, 22, 80, 9,171,103,118, 46,220,221,165, 26,247,129, 51, 67, - 73,182, 32,176,196,233, 85,151,233,147, 60,227,247,249,142, 98,133, 32,131,132,158,161, 56,204,140,255,197, 88,145,150,154, 64, -136, 2,136,180, 54,170,218,146,139, 71,145,163,157,142,252,229,199,135,114,255,104, 71, 26, 90, 40, 97,223,138,159,143,241, 33, -185,220,250,153,207, 46, 7,210,159, 60,151,229,124, 44, 43,232,236, 23,106,242,234,188,199,135,157,227,115,152, 93,128,134,146, -203,185, 14,201,118,232,213,114, 69,238,119, 43, 20,111,249,234,245, 13,147, 50,126, 54,237, 68, 99,147,148,220,176, 50,143,165, -169,221, 92,234,254,150,139,115, 28,155, 82,158, 53, 50, 20, 62,118,124,120,255,152,240,120,105,113, 35,102,251, 88, 68,197,237, -174, 13,174, 43,212, 28,151,161,125, 29, 13, 93, 82,224,159, 3,197,165,191,143, 28, 38, 34,240, 45, 80,111, 76,228,123, 11, 42, - 12, 2, 83,137,163,252, 36,239,143,141, 42,215,122, 43,106, 90, 72, 35, 81,167,239, 37,195,142, 39, 34,189,209, 24, 22, 38, 58, - 3,170, 38, 10, 0, 4,118,156, 77,120, 34,228,253,128,230, 43,133, 66, 66,153, 87,179,111,181,207,131,243, 12,212, 55, 70,191, -185,108, 66,197,180,197,194,232,123,247,247, 90,228, 20, 31,116,155, 44,180,166,224, 13,235,153,135, 70, 1,199,141, 72,148,209, - 82,187,251,172,148,161, 45,143,169,139, 94,155,163,253,125,249,250,251, 39, 60, 27,129,163,162, 14,198, 99, 7,124,138,185,134, -233,207, 35,202, 79,227,122, 66,172,169,211,168,106,193,159,161, 30, 0, 10,114, 80, 70,215,235, 91, 82,236, 16,207,252,141,111, -212, 90,167, 44,185, 70, 33, 5,121, 87,174, 74, 2,222, 43, 12,226, 40,115, 26,218,132, 8,254,236, 30,171, 74, 49, 71, 56,119, -206,241,252,135, 49, 56,236, 6,146, 52, 77,126,182, 14,250,251,152, 83,181, 32,237,212, 19,187, 79,180,229,213,179, 57,211,103, - 9,202,136,144,133, 13, 93, 97,201,162, 88, 19, 80, 20, 22, 72,111,186,190,190,150, 7,199,199, 84,153,195,228, 99, 79,207, 60, -168,176,183,125,237, 58,181,104,130,183,220, 3, 45,196, 31,191, 58, 99, 49, 13,122, 84,156,130,248, 48,125,157, 25,195,130, 35, -125,196, 38,207,254, 11,116, 57, 11,107,223,149,138, 0,102,133,198,136,162,128, 10,174, 7,166, 16, 96,101,104, 34,109, 55,218, -242,240,120, 95,187,219, 10,239, 55,146, 49, 98, 0,174, 15, 38, 80, 60,231,122, 95,105,216, 66, 59, 96,155, 6,239,117,107,114, - 51, 9,249,156, 35,222,162, 72,234, 52,202,156,138,141,157, 24, 83, 89,166, 84,236, 92,108,108,250,132,226, 10,197,112, 85,223, -235,207,126,122, 44, 95,124,115, 66,128, 28, 96,173,154,122,244,218,248,122,111, 87, 26, 67,245,217,213,226, 2, 13, 30,116, 66, -128,111, 66, 51,208,215,100,142,213, 14,174,231,221,131, 61,121,126,114, 34, 35,189, 86,191,255,234, 43,237,232,235,242,238,189, - 67,201, 44,110,100,168, 49, 18,211, 30, 76, 70,155,245,170,220,221,235,112,237,133,248, 62,214,183,246,252,244,134,133, 2,232, -156,141,214,174, 94,139,153,220,220, 94, 82, 63,101,161,141, 26,168,157, 4,164,235,243,143,127,208,201,195,119, 30, 77, 33,158, - 57, 76,128,154,213, 10, 39,125,208, 19,129, 12, 47,166,135,165,156, 41, 61,194,204, 12,107,213, 57, 76,114, 42, 21,107,180,176, -107,215,103,232, 70,243,220,253,195, 7,146,185, 30,173,229,157,227,154,188,187, 95,149,125, 56,212,104, 64,190, 90, 24,255,173, -158,207,216,126, 46,178,153, 61,111,174,235, 6,109,173, 30,147,162,134, 93, 7, 69, 41, 60,179,188,203, 17, 48,131, 49,147,167, -157,247, 76,254,248,122,192, 49, 60,146, 21,192, 93,251,181,156, 60,191,156,200,179,235,185, 86,219, 1,229,100,247, 31, 21, 52, -248,101,228,112,175,194,132,141,145,206, 87,207, 7,114,187,236,201,145, 6, 74, 8, 91,224, 85, 39,129,237, 9, 49,194,205,108, - 50, 78,169, 46, 36, 26,147, 72, 94,103, 84,130, 36,189,187,219,145,134, 94,152, 31,191,119,199, 30, 38, 10, 41,216, 94, 50, 77, - 28,180,176,100,135,157, 53,245, 43, 0,177,144, 88,194, 37,215, 17, 87, 51, 39,180,194,234,212,124,164, 51,220,165, 71, 68,190, - 99,109,193, 68,228,124,161,233,191,227,219,184, 19,213, 33,104, 21,139,141, 33,199,161,163,143,247,135,110, 22, 7,169, 91,133, -121, 76,196, 32, 3,205,241,177, 86,173, 19,189,249,122,246,136,180,167,144, 9, 85,181,204, 78, 19, 19,129, 14, 20,116,244,129, -186,209, 96, 87,202, 23,185,175,245,161,253,236,155, 35,152,239,140,112, 0,182,249,213, 87, 23,242,193,113, 91, 62,121,180, 67, -190,249, 92, 19,197,171,193,130,236, 0, 60, 71,120,223, 72, 30, 25,238,254,109,172,134, 29,127,134, 58,208, 27,125,240, 43,154, -208,235, 4, 42,125,113,185,148,145,182,250, 55,250,230,178, 64, 70, 69, 48,227,153,234,223,193, 90,114,197,194, 45,212,130, 34, - 91,172,114, 76, 79, 47,100,151,156, 8,218,114,255, 32, 0, 97, 92,154, 26, 33,144,229,192, 66, 49, 33, 56,142,254,209, 98,170, - 91,236,250, 92, 87,138,213, 14,120,217,126, 58,234,142, 98,103,128, 18,110,247,195,158,216, 62,142,220,113, 6,124,195, 99, 16, - 77, 15, 3, 26, 77,156,237,102,141,123, 63,140,186,204,223,192, 88, 1,161,243,187, 6,162,190, 80, 44,218, 30, 31, 10,114, 26, -200,254,240,221, 99,142,239,107,213,170, 41,142,225,103,130, 58, 9,165, 17,207,204, 35,224, 44,133,194, 1, 43,134,131,110, 91, - 46,135,115,242,224,205,182,119,195,192, 12,225, 26, 32,101,155,181,188,188,127,255, 62,131,219,204, 89,173,206,180,242,158,173, - 22,188,159,192, 28,144,230,197, 29,123,214, 25, 92, 88,183,132,192,201,207,149, 49, 22, 6, 10, 59,147, 72, 53,128, 93,106,246, - 16, 37,198,144,224,245, 21, 27,179, 27,187, 36,107, 29,186, 3,112,226,252,155,181,165, 37, 30, 74,195, 98,124, 31, 25, 62, 6, -223,139, 66,138, 62, 11,235,152,123, 74,195,176,228,244,253,216,248, 28, 22,149,152,112,197,206,157, 12,247, 13,231, 27, 26,241, -153,196, 1,192, 98,155, 23,148,181,152,165, 15, 61,180,232, 65,231, 89,154,166,117, 46,103, 46,133,237, 90,145, 69, 57,138,251, -251, 7,117, 22,100, 21, 76, 14,181, 59,245,245,236,174,169,129,178,230,120, 25, 19, 27,128,212, 96, 73, 58,215,235,135, 36,142, - 88,176,187,187, 39,215,131,161,204,167, 19,198, 5,248,112, 23,194, 60,215, 8,104, 16,104, 72, 3,224, 40,180, 35,198,176, 72, - 93,242,103,129, 42, 7,177, 31, 40,185,129, 66,248,209,123, 15,228,213,201,185,156,157, 92,176,207,134,132, 52, 78, 50,252,176, - 86, 94,188,229, 53, 18, 3,128,162,113, 99,226, 48, 72,104, 72,214,177,187,174,137,188,193, 41, 18,128,152,196, 46,246, 88,199, -235,113,194,233,177,176,242, 99,113,104,102, 99,255, 36,212, 20, 40,178,104,202,103,243,198, 12,208, 88,216,105,212,245, 30, 93, -219, 52, 68, 19, 90, 76,176,212,138, 32, 83,196,138,211,139,115, 57,220,191, 35, 65,177,166,223,155,149, 23, 47,191,148,200,203, -147,226,246,238,195,123,212,133, 63,208,164, 7,186,101,134,205,152,219,201, 98,125,161, 69,233,201,213,112, 43,118, 66, 70, 18, -142, 23,252, 33,242, 89,167,155, 96,184, 8,240,198,193,108, 0,218,159,205, 23, 29, 32, 51,154,188,170, 84,109,195,250,228, 84, -155, 70,216,195, 34,113, 45,214,230, 66,199,137, 84,104,235, 17,174, 64, 2, 51,213,129, 44,119,165, 52,213,179, 80, 50, 63,120, -253,153, 48, 51,194, 20,245,226,182,207, 66, 62,155, 44,100, 6,237,249, 76,158, 73, 29,102, 47,184,212,104, 66,158,143, 55,242, -191,255,171, 47,228,151,191,184, 43,143, 31,247,100, 48, 79,168,255, 95,171,228,228,244,106, 44,189, 1, 36,175, 3, 82, 71,209, - 32, 82, 46, 86,147, 35, 26, 59, 80, 92, 75, 90,128, 3,105, 14, 0, 28, 30, 17, 36,254,211,179, 11,121,121,114, 38,127,250,227, -247,181, 25,168,106,242,191,101,220, 25, 79,103,230,126,167,201, 29, 52,234, 98, 30, 66,110, 45, 57,237, 45,100, 60, 25,145, 98, - 89,107,117, 8,220, 93, 77,111,229,201,243, 19,230, 22,207, 81,193,151, 90, 45,131,199, 62,155, 21, 41,165,141,226, 40,235, 28, - 22, 17,159,214,108, 68, 98,238,212, 17,158,160,170,135,189,252, 77,127,201,149,226,209, 91, 29,217,237,180,184,190, 0, 99,237, -238,189, 2, 5,157, 50,255,252, 79, 15, 52, 81, 20,181, 2, 89,209, 98, 14, 86,113,127, 60, 31, 82, 87,182,219,204,201,173, 6, -113, 80, 14, 18,183,239, 33,229,194,224,144,252,179, 57,198, 23,161,141, 93,240, 43, 67,218,106,204, 47,132, 72,204,151,154,208, -255,183,191,123,197,132,241,222,113, 83,254,151,127,254, 30, 19,249,135, 26,244,166, 51,236, 82, 97,129,166,193, 83,171,244,213, - 76, 43,142,122,142, 95,187,153,194,236, 61,166,143, 52, 60,178,209,173,130, 90,179,134, 99,219,114, 99,212,181,112,177,165, 17, -161, 59,128, 85, 32,129, 56, 24,199,131, 15, 21, 36,148,139, 37,176,128, 34, 46,209, 86, 5,205,248,239, 6, 94,203, 18,136,103, - 50,184,230, 11,172,157,235,100, 32,181,182, 86,240,197, 22,119,218,212,182,231, 5,199,235,198,110,220,100,232,112, 32,107,195, -200,161,134, 19,211,240,166, 55, 55,199,166, 33, 19, 44,222, 83, 46,103,154,224, 40, 80,240,247, 77,141, 18, 95, 13,128,240, 61, -166,180,109, 93,139,132,123, 59, 77, 34,137,135,121,120,211, 11,247,183, 36, 39,121,105,215,106,128,177, 74,161,200, 0,145, 13, -178, 46,184,152, 53,104,226, 57,126,174,103,254,234,255,215,255,243, 84,238,116, 74,180,113, 69,213,119,126, 59,213,107,161,221, - 97, 49,103, 65,125, 35, 78, 9, 43, 35,215,183, 67, 57, 25,222, 72,112,154,112,202,176,247,243, 3, 73,138,121,121,185, 46, 73, -185,221,146,205,176,175, 7,122,101,171, 5, 61,196, 99,173,126,111,180, 60,197,195,129,162, 8, 59, 47, 36, 0,140,140,231,110, - 20, 14,101,167,124,190,184,213, 53, 64, 98, 77,220,232, 46,227,190,214,119,172, 10,115, 56, 11, 56, 90,181, 61,176,239, 64, 91, - 6, 2, 2, 7,152, 78, 98,164, 41,109,182,116, 45,252, 6, 65,152,227, 67,131, 36, 57,250,151,105,223, 35,176,123,190,241,249, - 95,159, 95,202,243,114, 40, 21,253,124,213,138,129,167,182, 90,137,137, 1,207,176, 23,197,142,255,242,124,198,174,210, 84,226, - 60, 78,150, 40,192, 65, 90, 89,196,100, 22, 56, 16, 84,232, 70,143,135,237,188,236,182,202, 90,249, 87,229,115, 45,188,232,169, -238, 68, 34,210,137, 16, 12, 48,176, 35, 27,234,223,219, 72,217,212,160, 80, 28,161,147,247, 29,101, 20,220, 94, 34,255,169,211, -224,191,145,169,117,130, 55,190,103, 5, 9,121,245,145, 37,252,196,237,104, 19,151,228, 29, 68,203,117, 91,182,178, 50,213,169, - 96,123,166,112,125,224, 14,200,235,229,191,209,114, 32,187, 32, 52, 19,141,217, 98, 77,244, 51,138, 23, 80,155,140, 22,107,197, - 46,180,218,231,107,167, 76,233, 40,108, 25,135, 35,201, 56, 80, 35,245, 44, 22,107, 22,193,216,237,115, 90, 19, 24,198,128, 66, - 37,152,248,105,194,192,179,129, 41, 21,192, 66, 0,219,130, 23,141,247, 80,167,176,143, 48,120, 17,196,149, 49,140, 11, 30,196, -201,124,198,226,168,214,232,104, 66,169,176,171, 63, 62, 60,148,167, 79,159,154, 24, 72,108,153, 23,147, 61, 36,116,220,104,116, - 63,199,221,186, 38,145, 25,187, 37,208,110, 1, 32, 44,107,129, 13, 32, 47,174,245,203,171,145,100, 10,101,129, 23, 11,226,154, -161, 3, 76,112, 11, 83, 60,150, 60, 16, 38,210,247, 11,165,199, 13, 39, 15,250,153,181,232,136, 66,120, 35, 44, 56, 74, 77,125, -239,125,135, 34, 39,155,193,233, 27,136,163,220, 58,173, 23,113, 3, 78, 43,150, 76,181,102,235,176,134,120, 91, 41,151,120,118, -218,205, 6,169,123,128,235,195,225, 50,212,235,143,251, 84,175,215,229,228,236,156, 52, 57,236,111, 87, 90,144,191, 60,121, 77, -253,243, 92, 80,144,139,155, 27, 38,161,195,189, 59,242,205,183, 55,114,118,122,193, 36, 61,231,170,211,222, 19,139, 50,125, 31, - 63,121,120,192,194, 12,111, 14,252,246, 66, 46,179,181,245,245,157,164, 54,238,177,233, 12,192,160,102,227,240, 33,177, 60,127, -125,110,170,115, 0,163,149, 27,114,114,121,201,134,135,146,201, 16, 90,114,103, 12,152,140,227,189,150,180, 52, 62,189,188,154, -114, 90,131, 66,235,238, 94,193,237,192, 51,140, 7,151,131,145,233, 80,232, 85,159, 76,135,108, 66,186, 90,148,148, 53, 6,161, - 97, 4,150,160,204,102, 50,144,138, 62,148,151, 23, 19, 59,171,155, 5,119,212,148, 92,158,207,248,124,173,146,165,212, 27, 59, - 44, 46, 66,106, 42, 84,120,239,121,230,245,179, 63,126,249, 82, 58,205, 22, 25, 76, 76,192,144,234, 30, 15,228,215, 95,252, 81, -206,245, 92,253,232,126, 87,175,251,140,159,163, 63,153,115, 66, 85,215,107, 74, 60,128, 38,213, 15,170, 69, 57,239, 77,121,221, - 59,221,174,116,245,121, 23,205, 35,237,189, 68, 6,183, 55, 92,231,224,140, 83, 77, 82,239,225,219,247,246,229,249,217, 13, 99, - 23,168,176,188, 23,177,207,162,198,214, 32, 9,233,184, 96, 18, 97, 95, 15,108, 20, 80,254, 95, 61,121, 37,207, 78, 46, 37, 92, - 78, 36, 95,110, 75,167,189,171,205,149, 62,227,127,249,168, 43, 79,123, 51,121,113, 61,162,215,113,167, 81, 51,177,127,125, 24, -134,115,227, 77,162, 10,244,157,168,125,186,235, 20,215,233, 2,249, 77, 48, 76,108,227,119, 90,121,106, 5,146,209, 27, 95,201, -122,206,182,209, 30,106,140,174, 4,122,183,122, 54, 10,154,104,242, 37,125,112, 94, 64,124,160, 36,137, 62,212,183, 90,137, 7, -250, 11,240,183,127,255,237, 21, 59, 62, 4, 65,104, 70, 99,103,178,210,206, 63,175, 9,232,124,182,226, 3,218,108, 86,141,250, -177, 49,180, 47,246,217,184,145,236,154, 0, 10,211,247, 17,229,172,123,193, 5, 34, 39, 56, 50,100, 34, 59,155, 31,252,147,152, -213,184, 27, 5,235,197,142, 23,114, 80,174,201,163,118, 44,191,250,190,207,106, 20,251, 14, 96, 0,240, 47,246, 35,188,232,224, - 38, 34, 41,162, 83, 14,156,190, 51,105, 70, 89, 62, 88,182,217,132, 63,121,134, 59, 72, 92, 7, 36,190, 78,181, 36, 7,213,144, -137,104,166,215,122,183,136, 57,254, 76, 11, 38, 61,172, 85, 13,118, 81,137, 69, 3,170,180,112, 99, 72,127,223, 61,249,232, 90, - 9,226,163,221, 98,100, 0, 69,223,130, 35,167, 40, 12, 34, 17,121,207,151, 55, 19,249, 71,237,216,255,251,159, 31,147, 3,121, - 59,117, 90,222,155,128,157, 35, 45, 91, 55, 27,114,225,123,183, 51,233,221,192, 89,110,194,113,210,255,253,233,169,188,253,238, -158,228,181,218,191,185,121, 45,125,237,126, 38,240, 17, 23,235, 84, 61, 7,161, 65,193,146,238, 9,217, 49, 51,232,153, 48, 14, - 69, 51,156,192, 10,170,236,192,249, 72,207, 52, 48, 21,176, 2,208,135, 94,220,168,189, 90,201, 56,119, 53,235, 82,124, 71,243, - 73, 91,157,244, 30,197,137,169, 78, 17, 24,231,232, 63,236, 6,157,234, 89, 42, 60,130, 81,188, 32,200,102,205,195,156,174, 99, -232,248,203, 69, 43,226, 88,212, 64,215, 63,107, 62,245,177, 57,163,101, 3, 59, 16, 24,231, 1,149,139, 81, 97, 42, 53, 35,219, -245,142,233,131, 27,226,220,219,106,177, 3,253,141,196,254,105,108,212, 55,252,105,173, 92,113, 43,156, 88,142,247,187,196,165, - 12, 39, 99,227, 64,251,214,229,193,104,133, 43, 2,207,174, 41,186,188,208,225, 47, 80,144,226,253,226,154,227, 92,209,107, 29, -188,114,120, 71,235,185, 26,106,165,158, 56,134,138,231,146,170,108,173, 62,237,247,145,243,119,224,222,214,247, 28,167,221, 64, -125,246,153,146,237,136,223,243, 29,215, 29,139,183,200, 38, 3,152, 54,249,206, 18, 25,171, 10,116,173, 40,222, 41,160,161,207, -196,112, 22,211,217, 12,227, 99, 4,234,213, 90,139,212,146,105,199, 67, 61,174,234, 71,252,156,208,138, 88,227,218, 64,221,110, -185, 50, 69, 51,125,173, 35, 13,208, 16,170, 66, 44,193,231,198, 84,224,242,118,198, 17,239,100, 22, 51, 89, 84,203,144,251, 92, - 72,206,131,203,217,138,103, 20, 69, 44,220, 7,151,139,169, 62, 62, 99, 67,171,103, 67,118,222,245, 90, 67, 99,202,200,105, 85, -192,193, 42,225,152, 54,230,216,211, 62, 7, 24, 54, 11,208,222,138,198,253,118, 83,114,238, 55,129, 98, 71,162,252,232,131,183, -180,243,237,201,116, 48, 54,182,141,216, 56, 30, 9, 0, 0, 92, 58,154, 73,134, 32, 94, 22,161,232, 68,193,166,160, 71,106, 22, - 27,121,119, 95, 83, 28,188, 77,172, 98,223, 40,169,129,187,231,156,162, 80, 77, 80,220,125, 48,107,218,216,105, 21, 96, 69, 83, -172,213,217, 53, 67,121, 12,138,105,144,110,205,208, 40, 72,248,124, 79, 86,125,247,252,123,188,222,152, 22, 34,238,193,197, 12, - 76,134,235, 73, 40,143,159,126, 39,143,238,252,181, 28,223,125, 75,147,194,153,254,236,153,197, 77,171, 58,220,164, 6, 84,191, -103, 46,214,155,106, 30,113,123,145,137,201,164,222,240,190,251,122,160,184,241,108,102,124, 3,250, 1,253, 15,122,112,167,115, - 40,123,133, 38, 53, 39, 64,216,136,162,128, 46,133,121,174,164,244,235,155, 1,197, 84, 48, 94,199, 10,182,156,247, 8,186,123, -118,214,147, 59,251,187,100, 24, 65,254, 21,207, 6,206,238,120,216,231,168, 25, 6, 51,235, 56, 67,154, 26,138,184, 5, 38, 94, - 97,150,211, 35,116,179,175,207, 7, 50, 94, 38,252,236,208,185,192,123,234, 54, 74,156, 66,140,250, 83, 41,150, 59, 98, 82, 40, -214, 0, 96, 90,137,226,144,207,165,216, 52,240, 6, 76, 11,210, 30,215,108, 26,128,140,255,250,241, 99,210, 56, 31, 30,182,165, -158,159,217,228, 12, 19,107,128,253,244,107,176,146,171,104,129,114,247,176,193, 93,250, 89,111, 46,207, 95,206,244, 58, 32,233, -118, 53,246, 84,244,245,175, 73, 33,172,149, 12,200,125, 53, 88,240,108,224,158, 70,174, 73,197,231, 13, 35,243,155,231,228,114, - 99,147,232,141, 3,108, 3,183,131, 34,231,237,227, 93,185, 25,250,196, 60,129, 41,129, 98, 62,243,244,108, 32, 47, 70,144, 92, - 12, 73,107, 64,194,131,168, 62,110, 16, 70,101, 24,167,192, 81,204,226,174, 73,183, 58,242, 5,119, 84,208, 38,223,104, 39, 7, - 30,115, 12,154,149, 73,143,177,226,242,196, 0, 68, 68,195, 3,164, 5,223,234,101,104,230, 5,250, 0, 45,198,107,249,244,171, - 43,121,247,110, 91, 10,250, 61, 55, 83,243, 79,134,185,202,231, 47, 71, 60, 48,141, 74,150,163, 19, 80,159,170,160, 78,212,178, -146,228,114, 68, 93,226, 1,206,145,130, 19,114,132, 23, 69, 6,246, 9,152, 88, 12, 29, 13, 26, 10,170, 76,116,251,116, 50,139, -140,114,183,213, 3, 35,216,202,185,206, 37,206, 8,100,173,149, 92, 33,145,111, 78,135,242,241, 49,196, 55, 2,121,126,179,148, -187, 59,120, 15, 57, 55,102,183, 46,135,206, 70,126,224, 16,153, 70,185,163,119,117, 98, 11,180, 48,118,210,157, 12,154, 49, 63, - 7, 14,201, 65,197, 39, 61, 13,171,136,139,254, 68,222,213, 67,112,111,191, 41,191, 59,157,176,226,131,224, 0, 14, 11,246, 77, - 87,131, 25, 63, 91, 18,155, 14,189,117,108,218,105, 66, 69,137,227,188,144,234, 91, 28,137,194, 81, 43,137,156, 70,184,167,197, - 68, 78,254,254, 15,167,114,212, 46,112,140, 9, 58, 6,198, 77,102, 7,152,112,100,153, 35,175, 28,168,209, 80, 43,216, 58, 17, -251,173, 90, 94,142,238,237, 74,165,214,182, 93, 28,252,203, 97, 41,234,219,222, 30,238,106, 75,103, 57, 90, 46,150,173,168,194, -232,220,237,112,211,105, 65,194,251,178,217,162,174,125,215,137,115,133, 1,117,164,196,170, 85,187,160, 30,185,161,134, 10,150, - 45,142, 3,149,173,183, 45, 86, 28,168,200, 55, 20, 43,246,216, 28,231, 33, 97,164, 29, 62, 11,189,136,187,124,130,242,208,157, -106,245,139,209, 55,184,175,199,119,246,165,213,174,243,108,179,235,119, 62,234, 4,139, 69, 27,135, 46,143,105,148,209,143,237, -172,164, 96,184, 92,198,198,183, 84,212, 66, 96, 78, 76,172,133, 90,218,137, 21, 18,165,114,153, 15, 62,206, 83, 77,187, 0, 0, -229,128,132, 69, 20,203, 57,144,156,231,180,250,197, 51, 97,155,130,147, 23,205, 58, 32, 96,134,114,161,230, 92,136, 73, 18, 19, -160, 27,225,211,189,208, 21,213,246,186, 22, 8, 88,160,120,118,197,210, 21, 83,250,117, 54,133, 72,149, 32,237,226, 18,233,157, - 56, 53,170, 20,120,199,238, 95,152, 44,225, 39,142,157,112,146,100,236,158,107,144, 70, 34, 4,128,118, 53, 11,249,117, 68,108, -139,105, 79,155,153, 76,134,193,202,246,210, 66, 1, 35, 72, 68,103, 28,239,121,200,239, 51, 42, 24,206,147,137,123,196,124,182, - 47,110, 87, 50, 94,152, 35, 28,112, 34, 79,110, 34,249,232, 80,159,111,141, 63,163,201,194,188,221, 3,113,235, 22,232,207,235, -107,232,249, 69,247,138,187,184,208,110, 25, 69, 65,171,213, 97,241,214,104, 54,101, 79, 63,195,139,179, 51, 34,133, 3,135,180, - 7, 67, 1,138,106,167,253,165, 91,211, 0,168,152,103, 96,207,225, 94, 96,244,138,209, 55,232, 98,116,205,195,139,230, 88,160, -123,252, 60, 14,196,198,238,219,196,109, 54,209,138,116, 84,244,146, 27,174, 52, 98, 91,105,121,206,111, 34, 77,130,190, 1, 7, - 65,152,231,115,224,164,122, 17,176,115, 57, 3,254,154,116, 50,232,107, 49,187,113,104,255,167, 58, 10, 80, 29,132,252, 49,116, -198,203,197,174, 38,146,130, 51, 10, 17,198, 67,172,229,182,231, 74, 12,239,131,102, 2, 46,109,197, 76,196,162,202, 11,231,210, -191, 57,211, 55, 84,149, 71,119,239,202,228,155,239,201,146, 65,161,106, 12, 6,159,231, 27,187,241, 57,100,151,193,154,136, 61, -183,247,182,164, 13,109,126, 83, 3,180, 9, 72,192, 9,196,138, 22,187, 48, 72, 33, 43, 40, 11, 35,174, 60, 19,221,219,111,125, - 32,205,106,129, 35,123, 92,111, 76, 42,129,191,201,195,249, 76, 11,143,254,112, 70, 67,153, 7, 7, 77,114,214, 71,139,107, 41, - 5, 27,105,148,214,242,251, 87, 19,138, 53,197, 27, 45, 20,244,207,128,254, 71,119, 12,199, 54,143, 83, 41, 80, 89,225, 5,144, -215, 2, 87,147,114, 57, 39,154,145,228,118, 50,226,115,215,170,102,101, 26,198,204, 17, 59, 13, 80,253,214, 28,131,207,181,177, - 72,216,173,235,243, 88,177,216,138,157, 57, 41,159, 88,183,105,241, 15,218,109, 26, 67,160,113, 15, 57,218,223,126,254,133, 44, -151,239,202,253,195, 29,109,192,132, 0, 91, 38, 94,172, 46,245,254,105,216, 97, 49,130, 81,248, 59,250,235,234,102, 42,253,241, - 80,194, 66,137, 19,205,253,195, 99,109,102, 42,210,187,190,164,199,202,116, 17,145, 29, 83,211,247,135,201,146, 97, 52, 76,112, -136,192, 64, 42,208, 89,241, 1, 69, 81,159, 14,111, 38,131,252,228,213,153,228,242,101,105,105, 67,180,187,147,231, 73,203,188, -208,132,209,155,174,233, 25, 59,210, 7,110,180,184,213,139,181,161,159,120, 76,148,111, 68, 17,132, 20, 36, 39,110,192,233, 39, -246, 16, 3, 29,125, 49,152,243,200,131, 99, 14, 66, 39, 68, 15,176,195, 68,231,254,240,192,136,246, 56,116, 13, 77,206,207, 95, - 12,136,120,245, 16, 52,103,145, 28,236,183,164,191, 48,194,253,120,169, 15,221, 36,228, 72,228,222, 65, 75,122, 35,243,122, 30, - 77,150, 50,242, 86, 18,233,247, 87,154,101,233, 13,215,212,229, 53,132,189,176, 26,198, 46, 2,114,134,157,122,158,224,190, 8, -242,172,122,163,159, 93,173,120,227,124,253, 59,128,217,146,216,198,178,180, 44,117, 84,160,254,120,197, 7, 29, 93, 23,192, 99, -111,233,123,254,249, 59, 59,242,245,171,158,124,123,218, 23, 63,246, 13,196, 54,158,203, 8, 86,144,129,239, 64,118,166, 7,141, - 34, 37, 74, 82, 58, 80, 10, 94,242, 77,214, 48,140,216,225,103, 51, 21,118, 95,216,167,195, 0, 37,136,215,242,182, 86,123,127, - 56,155,218,200, 89,111, 98, 11,186,214,131,144, 85, 88, 16,228,152, 68,206,122, 67, 45,178, 38,250, 80,229,184,119, 78, 53,184, -119, 43,101,178, 15, 24,224, 56,204, 50,167, 30, 82,232, 16,130,130, 28,163, 56,120,214, 55,183, 35,249,155,223, 62, 99,176,233, -141,180,211,233,143,185, 59, 70, 50,207, 56,221,111,136,247, 80, 62, 87, 79,100,163,145,151, 59,247, 26,156,124, 64, 44, 7, 9, - 29, 9,212,243,205,130,118, 29, 46,200,235,204,102,179,142, 51,238,220,251, 66, 3,165, 17,133,237,184,209,158, 67,102,211, 28, - 4,213,188,159, 88, 21, 15,243, 14,135,116,143, 93,226,244, 28,128,145,206, 99,219,132,101, 0,186, 20,237,158, 34,191,253,146, -249,124, 39, 14,216, 72, 23, 35,140, 34, 53, 57, 34,105,162,130, 6,184,142, 35, 62,173,226,171,154, 92,161,221,140, 7,179,232, -246,212,220, 37,186,100,108,210,177,166,214,133, 36, 10,121,198,239, 53,128,149, 52, 64,100,244, 65,194,231, 5,245, 9, 96, 29, -234, 77, 59,218,100, 54, 12,183,232,244, 12, 86, 33, 65, 81,114,229, 42, 71,237,229, 18, 20, 22, 43,110, 7, 31,200,110,173, 70, - 44, 72, 81, 19, 35,198,123, 64,218,214,232,242,180,214,115, 91,149, 37,168, 80, 90,173, 35, 72,162,136,145,124, 66, 93,106,156, - 3, 36,192, 12, 65,168,129,123, 2,133,103, 1, 99,231,196, 21, 76,203,112,237, 84,241, 76, 74,216, 51,223, 68,135,135,241,204, -231,220, 25, 20,121, 84, 24,244,157,250,153,255,255, 81,213, 35,158, 33,182,169, 11,186, 59,156, 97, 78, 38,178, 70, 93,221,184, -105,138, 83,169,148,153,191,118,218,243, 30,207,110, 1, 84, 72, 13,220,207,207,151,114,176, 83,227,251, 6,213,200,168,118, 32, -253, 10, 71,235,233, 42, 12,231,231, 85,111,194,245, 16,254,108, 78,219, 81, 61,119, 26,143, 38,171,188,220,237, 22,228, 15, 47, - 70,124,255, 13,125,254, 7,195,169, 94,175,178,182,166, 43,114,221,177, 80,221,237,182,228,228,226,146,123,101, 20,207,136, 5, -152,165, 20,202, 77,189,198, 19, 94, 83, 76,181,204, 23, 29,224,205,162,232, 37,167, 62, 71, 20, 26,215, 26,199, 16,248, 22,236, -126, 97,138,132,253,106, 79, 11,218,225,116, 40, 77,136, 21,117, 31,200,217,249,149,204, 16, 7, 28,154,253,174,158,183,253, 78, - 87, 46,175,175, 40, 0, 66,209, 23,116,239,197,146,158,199, 21, 45, 87,163,136,254,162,140,167, 88, 63,145,122, 20, 69, 91, 35, - 44,220, 99,143,148,172, 60,187,101, 60, 31,104, 12, 32,203, 12,170,108,214,241,237,113,223,242,100,142,100,216, 81, 94,235,123, -219,209,152,145,132,218,161,105, 66,187, 29,106, 71,171, 73, 12,207, 3,238, 29,132,143, 0,116, 92,129,110, 8,107,214, 82, 36, - 15, 52,201, 76,244,179,207,166,125,201, 85,139,114,247,248, 1, 1,173,160,117, 46, 66,243,185, 48, 55, 54,179,134, 61,187, 25, -235,231,159, 17,248,139,184,141,243,135, 49,188, 73, 15,155, 62, 4, 70,198,141,106,137,215, 3, 9,183, 89, 41,177,145,202,210, -216,197, 48, 28, 3,141,177,232, 72, 79,207, 78,201, 47,199, 20, 2,120, 0,176,163, 16,251, 81,100,117,244, 89,217,109, 2,239, -210,148,146,118,235,191,253,238, 84,254,217,199,199,218,244,237,211,225,237,195,125,125,222,163,166,124,167,205, 22, 94, 15, 50, -209,165,156, 25,142, 29,237,182,228,195,183,118,181,190,209,164,251,245,149,220,251,197, 3,153,252,221,151,114,255, 81, 91,246, - 52,150, 79, 53, 79,157,126,215,147,243,155,137,124,252,225, 67, 57,189, 50,107,106, 2,117, 89, 84, 89,225,153,117,204, 28, 0, - 78, 67, 61,195, 40,168, 80, 56,193, 85, 17, 64, 58,200,185, 30,236,116,229,249,171,215,242,252,245,169,252,242,231,159,200, 97, -179, 68,192,166,239, 25,165,116,185,140,141,226,156,216, 40,238,104, 87, 27,195,102, 40,167,151, 83,125, 6, 50, 60,231,173,238, -142,118,244, 21,185,189, 58,167,158, 62,223, 71, 37,207, 34, 26,130, 92,112, 63, 4,203,164, 81, 45,144, 85,130,247,132,184, 10, -172, 21,116, 71, 2,103,187, 13,236, 73,189, 14, 19,152, 27,217,217,211,248, 86,210, 24,241,235,167,125, 57,189,153,155,110,110, - 22, 26,205, 85,126,200,239,207, 71, 28, 31,101,221, 88,197, 22,155, 34,222,246, 95, 7,156,211, 64,246,100,176, 97,151,159,112, -204,100, 50,124,120, 80,209,209,188,125,152,231, 13,226,200, 84,131,195, 55,250,112, 50,134,235,255,212, 43, 57,142, 64,168,202, -228,198,152,141,114,158,135,106, 71,127,118, 67, 15, 93, 79, 19, 16, 16,211,120, 45,160,228,241, 97, 58,141,162, 73,113,102,131, -173, 8,137,217,221, 37,220,205, 80, 70,149,129, 54,144, 71, 59,182,207, 93, 97,231,137, 93, 90,198,219, 78, 82,151, 20,205,217, -200,239,159,220,202,229, 96, 45, 31, 62,104,105, 50,239,202,113,167,204, 4,216,173, 21,244,225,153,203, 42,179,144,111, 46,110, -228, 12, 43,138,217,194,228,103, 37, 29,113, 38,219,125, 49,186, 3, 88,223,197,146,202,116,190, 81,195,203, 6,182, 55,195, 56, -173,160, 5,211,116, 55, 35,159, 52,187,146,209,235,174,103,128,239,255,245,235, 43,249,242,105,143, 52, 12,140, 34,191,121,213, -151, 23, 23, 19,162,108, 61, 89,184,125,185,207, 17, 54, 18,101, 24,135,236, 60,168,203,204,138,149,150, 16,100, 39, 80,172, 6, -163, 69, 77,210,155,120,169, 15,231,140, 29,126, 64, 16, 91,222,186,226,216,140,106,150,235, 5, 17,192,185,130, 22, 1,122, 77, - 43,149,128, 35, 93, 84,138,133,194,202,129,209,132, 2, 11,129,111, 0, 14, 8, 55,172,156,134,185,117,172,150,212, 17,152,124, -223,246,106,168, 96,211,206,153,158, 1,190,117, 39, 5,231, 27,157, 26, 31, 32, 40, 19,164, 24,134, 78, 72, 38,207,247,237,101, - 50, 91,134,194,154, 94,226,222,150,139, 79,180,173,211,159, 76,187, 79, 27, 15,134,219,162,202,246,202,150,120,144, 88, 16,100, - 0,250,193,244, 35, 33, 79, 86,139,185, 32, 96,247,157,210, 44,197, 81,160,144, 56, 13,153, 31,240, 65,142, 35, 3,198,177, 8, - 28,141,182, 96,190,148, 31,142,235,128, 0, 32,169,227, 90,100,120,144, 85,104, 2, 65,240,116,135, 39, 60,146, 21, 58,224, 74, - 41,195,228, 14, 58, 77, 54, 99,232,233, 70,181,198,235, 52,154,153, 15, 61, 65, 85,145, 77,102, 18,135, 70,198, 53,207,113,132, -108,211, 5,140,237,205, 80, 37,230,103,220,196,230,121,206, 66, 67,146, 45, 27,132, 35,101,255,141,171, 92,146,250, 54,254, 0, - 69, 31,184, 51,154,114,235,137, 87,113, 88, 16,138, 16,185,207,204,233, 80,152,184,110,212,144,203, 72,162,136, 21, 68,152,163, - 8,214,179, 85,173, 20, 41, 40,133,201, 20,146, 6, 2, 51, 18, 18,144,195,166,143,237,118,184,144, 73,158,134, 12, 49, 88,231, -133,107, 3, 80, 97,172,255,170, 31,202, 97, 77,139,121, 61,155, 0, 19, 53, 26,101, 50, 46, 64, 7,106, 86,243,236,232,103,235, -165,204,230, 30,119,160, 64, 18,175, 22, 35,199,128, 40,112, 37, 0,211,142,197, 66, 19,158,196,156,136, 68,241,146,207,143,112, - 21, 83,102,252, 65, 55,182,138, 98,231,152, 85,100,129, 87,213,251,129,107,211, 27, 12, 37,163, 49, 12,170, 97,181,137,249,183, -199,182, 94, 55, 15, 6, 49, 29,126, 20, 2,185,172,137, 75,121,177,209,195, 34,142, 77,197, 9,207, 8,187,194,152,138,133, 38, -254, 2,224, 95,194,249,123,192, 68,137,194,168,161,201, 45, 21, 90, 98,115,228, 10, 89, 20,187, 0, 82,226, 68,161,248, 64,183, - 11,109,137, 74,161, 44,235,225,165,198, 30,125,255,122,166, 80, 24,228,179, 38, 53, 11, 97, 49,196, 79,198, 8,189,151,213, 60, -158,201,181, 12, 48, 21,141,110,181,240,212, 88,231,151,228,159, 62,251, 29,175, 61, 98,103,198,201, 6, 71, 27,211,204,248,240, -222,142, 54, 34,121,202,113,227,223,136, 43, 19, 33,232, 13, 64, 54, 76, 4, 46,110, 7, 91, 64,104, 1, 0,107, 3,118,176,123, - 39, 19, 64,191,234,206,209, 59,124,230,128, 35, 9, 92,145, 46,206,159,195, 76, 62, 77,151,225, 59,109,116,206,123,150, 64,175, -167,162,223,167, 49, 93,147,234, 31, 95,222, 72,187, 86, 38,133,113,230,214, 51, 56,143,135,187,109,121,125,179,146, 47, 95,124, - 35, 87,250, 62,120, 95, 40,114, 54,151,191,255,162, 47,209,103,175,184,190, 58,222,175,209,206,245,239,254,233,177, 22, 93,187, -114,247, 65,199, 10, 87, 8, 69, 69,198, 82,168,150,141,117, 5,154,115,190,144,179,201,104,184,161, 89, 83, 68, 27, 98,211,158, -192, 36, 14,113,224,223,252,195,175,228,207, 62,249,177,188,119,167,169,133,106, 72, 44, 18, 10,250,192,129,112,113, 77, 96,146, -132,220,243,224,168,206,132,125,174,177,120, 8, 22, 75, 65, 11,136, 98, 93,222,125,164,175,169,133, 25,206,116,171, 94,224, 84, - 10,236, 48, 95,207, 59,168,230,134,217, 89, 19, 7,130,107, 52, 1, 85, 80, 63, 35, 44,204, 75,133,137,188,117, 71,244,140, 78, -229, 31, 62,123, 45, 69,208,254, 78,123,115,237, 38, 48,186, 45,240,166,129, 35, 89, 43, 25,221,136,123,104,176, 94, 18, 11,114, - 94,226,198,148, 78, 77, 26,227, 59, 4, 72, 28, 28,113,138, 86,220,199,232, 77,172,229, 77,148, 5, 15, 46,213,132,162,136, 35, - 19,112, 6, 17, 92,241, 26,168, 50, 38, 24,163,123,198, 83,111,233,159, 1, 84, 70,244,121,226, 49,105,239,119,235,116, 80, 67, -130, 12, 87, 51, 46, 85, 1, 76, 3, 69, 11, 7, 30,192, 1, 20, 29,171,200,222,213, 88, 47, 66,224, 70,234,126, 98, 29, 57,146, - 83,144,152, 14,188,201,171,218,152, 30, 23,229, 86,171,110,216,144,254,215, 63,187, 43,247,118, 43, 12, 50,155,208,186, 76, 32, -213, 59,205, 42,187, 54, 32,243,255,238,243,115, 25, 14,237,230,199, 14, 56,136,160,139, 98, 7, 32,161,221,122, 78,139,131, 57, -145,224, 4,239, 33, 33,121,166,207, 43, 73,236,212,162, 60, 42,199,237,228,106, 26,176,202,180, 29, 44,105, 0,252,246, 60,171, - 5,204, 68,138, 65, 68, 29,107,128, 8, 57,126,213,239, 47, 6,121, 75,210,110,167,139,251, 81,209,131,237,107, 64, 47,102, 3, -183,175,141,222,112,152, 19,227,108,227, 96,141,103,176,115,180, 17, 26,254, 22, 69, 69, 64,170,141,191, 13,210,160, 93,192,185, - 8,107, 13, 28,222,219,225,128,122,196, 51, 7, 16, 51, 89, 83, 19,132, 33,146, 60,151,227,123,195,168, 60,116,201, 7, 32, 47, -207,153,158,224,158,167,212, 53, 80, 59, 76,222, 52, 96,224, 75, 53,161,127,104, 10,196, 42,212, 21, 73,248,121,184,159,232, 72, - 8,108,244, 34, 87, 24, 37, 28,135,227,189, 36,110,193,110,167, 50,213, 50, 55, 53,178,208, 1,244,216,141,122,254,150, 34,134, - 2,163, 63, 28,179, 96,179,137,132,241,147,125, 87, 92, 96,172, 74,238,188,103, 99,104, 32,142,247,181,184,154,107, 96, 91,206, -215, 54, 77, 33,187,195,151,209,114,206,175, 65,160, 12, 28, 29, 12, 15, 57,164, 29, 13,175,145, 56, 96,219,134, 6, 32,165, 92, -149,202,126, 80, 29,195,117,162, 46,130,196,212,255, 54,228,234,146,239,179, 92,200,111,109, 82, 55,110,220,138, 60, 92,212, 34, -103, 69,176,210,210,121,180,219,200, 54,244, 76,178, 24,252,120,115,107, 75, 51,184,237,193,211,169, 90, 90,196,122, 14, 57,111, - 48, 5, 75,202, 28,245,255,128,157,128,169, 6,198,165,182, 47,143,217,141,153, 96, 82, 66,144,104,193, 41,145, 65,174,213,167, - 5,166,237,250, 49,141,130,127, 0,129,100,216,127,107, 66,199, 71, 25, 77, 86, 68, 88,227, 89,170, 21,124,118,100, 8,250,158, -103, 8,123, 60,247, 17,153, 37, 9, 59,232,200,204,205,184,198,128,224,202,124, 81,144,203, 78, 65,142,187,101,237,208,198, 20, - 54,162,243,213,112, 41,199,229, 2,169,115, 64,172, 3,185,140, 96, 10, 99,145, 21,193, 91, 11, 9,137,117, 8,244,190,148,153, -232,198,243,107, 77, 82, 54,173, 88,235, 61,108,150, 3,185, 25,218,168, 31,170, 92, 9, 1,158, 38, 86, 67,191,113, 56,225,149, -107,134,121,208,103,225,201,104, 34,237,122, 81,142,239, 30,200,203,139,107, 6,108, 92, 27, 76, 14,112,198, 3,119, 30, 55, 24, -245,110,214,236,192,137,132,119,142, 93, 91,103, 75,234, 86, 4,188,102,139, 69, 68, 74, 48,134,156,212,216, 32, 89, 33,195,251, -142,239, 47, 38,121,247,121,130,109, 97,139,243,134,152, 10,106, 27, 40,110,224,106,163,123,227,132,210,197, 95,172, 16,215,122, -246,226,124,137,207,115,177, 4,132,118, 73, 19, 66,200,181, 89,187,123,196,117, 4,158,155,189,157,251,210,121,241, 66, 30,191, - 60, 49, 48,154,211, 17,247,221, 26,236,243, 39,167,140,169, 44,202,233,113, 96,152,146, 84,247, 0, 49, 5,197, 52,133, 86,138, - 89,118,184,152,126, 48,105, 5,174, 1, 76,150,142, 78, 88,144,142,198, 73, 78,248, 96,126,226, 88,252,169,250, 31, 10, 98,208, -164, 81,212, 31,236,236, 82, 18, 57, 89,143,101, 49,185,229,202, 21,114,193, 40,134,177,238,184,187, 91, 35, 72, 14, 19, 50,116, -201, 40,182,224,206,183,163,247,232,242,118, 44,247,119,202,210,187,157, 24, 11, 71, 95,251,236,242, 86,110,111, 46,228,250,122, - 41,149,246, 74, 58,179, 57,167, 42,216,225, 19,199,177, 50,223,114,140,183, 41,118,133, 51, 61,159,241, 57,199,251,197,164, 15, -133, 2,158, 61,232, 93, 0,155,131,132,255, 68,175, 29,138,245,247,239,117,164,169,137,157,234,122,177,173, 62,170,213, 34, 11, -107,112,246,113, 94,176,230,184,191, 95,146,158,158,223,193, 20,116,202,146,230, 46,248,179,195,133,115, 33,151, 87, 3, 51, 51, -202,219,202,139, 22,219,110,229, 26,109,140, 85, 20,174,140,230, 7, 32, 36, 26,130,222,104, 69,206,253,127,250,163,251,108,124, - 51,119,245, 5,142,119,106,244, 30,191,236,141,152,104, 47, 6, 38, 48,143,125, 54, 14, 10,140, 68,114,174,155,216, 56, 72,126, -146,152,168,188,239, 56,154, 84,135,242,189, 31, 84,189, 9, 93,169, 8,120,114,200, 91,227, 61, 26,160, 38,166, 50, 85,236,168, - 50, 27,238,185,177,111, 51,177, 25,143,149,102,129,188, 43,143,102, 50,144,118, 61, 27,111,184,227,192,216, 38, 97, 85,239,211, - 2,145,128, 86, 3,220,179,106,244,201,159,143, 52,225, 69,172,146, 8,162,114, 93,213, 20,220, 90, 61, 52,192, 13, 96,236,142, -230,183,173,213,209,112, 14,254,172,209, 24, 0, 14,242,217,201,199,102,164,161,255, 30, 52,114,242,159,127,178, 43,191,249, 86, -228,110,183, 70,206,227,103, 79, 47,245, 96, 85,228, 78,171, 36,119,219,101,106, 99, 63,185, 26,203,111,159, 92,203,120,106, 18, -168, 8, 90,177, 30,192,152, 99,242,205, 54,241,222,206,214,242,247,143,175,229, 84, 19,121,137, 34, 13,115,130,114,124,125, 32, - 96, 4, 0, 93,227,200,153,178,172,162,144, 96, 35,140,232,211,206, 21, 9, 66,123, 35,189, 30,115,183, 19, 14, 28, 58,222, 20, -231, 18, 47,113,200,107,147,163,205,122, 57, 11,112,185,138, 9,117,248,102,165, 11, 3,133, 36,209,206,187,156,151, 98,189, 77, -189,109,113, 28,118, 20, 44,205,106,147,157, 51,198,205,161,171,186,121,173, 29, 93,135, 69, 66, 62,112, 59,217,141, 3,171,101, - 44,193,185, 85, 7, 0, 62,216,105, 71,206, 37,204,254,155,108, 53, 1, 54,206,196, 36,237, 22,233, 61,237,118,167,129,227,174, - 39, 78, 25,142,130, 60,190,117, 64, 76,124,145, 33,185, 3, 71,145, 51, 48,100,108, 94,214,238, 90,121,129, 41,121, 71,148,128, - 53, 19, 13,168, 52,101,188, 2,247,245, 52,214,225,104,197,146, 13,121,182,171,144,133, 9, 36,116, 97, 38, 50,139, 22, 44, 56, -144, 32, 72, 47,202, 23,232,250, 70, 93, 2, 72, 45,235,239, 1,132, 51, 23, 53, 67,232,103, 64,147,212, 87,168,107,245, 63,158, - 47, 28,248,205,128, 96,112, 44,243, 27,190, 22,173,109, 57,185,190,214,215,244, 25,228,219,141, 26,159, 11,200,149,226,245,240, - 57, 12,208,232, 76,142, 28,232,144,146,180, 14,148,197,145, 56,249,222,126,154,211, 37, 29,174,165, 40,120,155,140, 8, 59,122, -223,209,214, 18, 49, 29,244,237,164, 35, 49,209, 40,223,233,194, 59, 86,245, 22,149, 77,113,145,108,242, 6,243,224,138, 76, 76, -181,184,211,197,181,211, 99,129,253, 94, 76, 90,165,169,216, 1,216,132, 46,144, 22, 78, 78,223,220, 19, 51, 20, 33,189, 51, 54, - 26, 34,247,255, 78,112, 41, 71,255,243,132, 46, 88,167,195,186,252,197,195,146,212,251,115,125,174, 22, 92,121, 97,125, 3,190, -240,209, 30,198,235,121,142,236, 73,149,212,179,199,162, 26,116,191, 28, 64, 87, 53, 34,219,197, 43,107, 23,212,144,201,100,202, -215, 0,229,232, 26,210,202, 88, 82,234, 25, 56,191,234, 81,253,205,207,228,165,177,219,177,107, 0, 35, 32, 61,183,245, 74,157, -215,171, 88,175, 16,188,219,213,206, 63,210, 4,243,253,117,143,193,151,170,141,180,136,182,251, 64,208, 89, 96, 8,121, 59,175, -158,139,129,226,134,246,166,253, 97,138,131,177,211,199,144,109, 2, 68, 0, 71,195, 52,157,206, 36,209,194, 99,207,169,253,133, - 44,192, 77, 93, 16,186, 12,192, 91,224, 44,220,232,231, 5, 96, 15, 19, 8,241,124,215, 37,107,172,156,143, 9, 36,155, 78, 39, - 90, 60, 14, 89,104, 1,139, 89,201,231,165,213,104,200,243, 87,175, 36, 76,102,242,193,187,111,203, 79,127,252, 19,138,214,224, -254,225, 51, 17,104,234,155, 90, 27, 52, 16, 48,177,132, 88, 76,146,106,197,226, 30, 57, 67, 17,106, 49,228,179, 76,252, 96, 6, -161, 32,175,213,138, 54,133,133,112,150, 94, 55,216, 69,195,144,229,184,124,204,100,137,117, 7,224, 73,129, 31,115,140,142, 29, - 49, 18, 38,216, 8,139,245,152,175,237, 37,166,118,247,248,245, 64,222, 58,170,106,172,218,104,220, 93,203, 55,175,110,121, 6, -246,218, 85, 98, 32,158,157,244,172, 96,214,196, 6,129, 61, 56,184,213, 27, 5, 9,115, 40, 42, 39,250, 30,221,212,171, 44,244, -155,135,144, 94, 37, 48,219, 95, 15, 13, 83,148,188, 17, 42,114, 98,184,108, 16,244, 98, 33,142,225,122, 87, 74, 37, 98, 55, 48, -121, 64,193,129,164,191,116, 42,151,211,155,133, 60,126,254, 76,174,122, 55,114,239,160, 35, 15,247, 23, 90, 0, 84, 56, 41,185, -188, 94,240,107,112,158, 51, 78,150, 23, 53, 52,140,196,106, 26,231, 47, 7, 43, 45, 70, 86,114,231,160, 45,123,123, 29,249,254, -113, 94, 94,157,156,114,202,109,242,214,161,204,227,132,122,251,184, 55,166, 57,159,211,115,157,101, 12, 5,165, 28,138,159, 48, - 82, 2, 29, 25,128,236,204,253,110,149,180,181,254, 36,212, 23, 88,112, 63, 14, 32,199,126,199, 4, 46,154,122, 16,194,112, 44, -237, 90,158,106,100,175,110,231,146,115,220, 98,112,104,131,192,119, 65,195,158,124, 36,231,181,115, 17,131, 60, 94, 41,235, 17, -252,134,221, 9,154, 7,240, 28,189,192,120,198,243,117, 26, 88, 98,118,134, 8, 48,216,229,119,245, 32,194,182,112,133,238,126, - 21,187,234,116, 67, 16,193, 96, 94,162, 16, 76, 41,107,110,138,155,196, 80,186,164, 85, 32,152,138, 73,172,162,168,240,157,149, - 22,113, 1,168,116, 32,181, 58,223,176, 74, 2, 22, 0, 34, 55, 77, 13, 8,232,216, 63,253,238,146,128,180,143,238,183,137, 26, - 95,174,204,218, 46,114,194, 17,152, 98, 32,161,253,228, 81, 75,106,197,156,188,119, 92,151,227,221, 34,105, 20,224,221, 98, 20, -117,165, 1, 7, 84,186, 63,125,255, 64,190,126,121, 43,131,177, 81,222, 60, 7,146, 35,234,149,106, 84,208,163, 15,229, 98,234, -203, 16,227, 88,125,157, 82, 16,203,133, 30,104,188, 71, 32,127, 23, 27, 51,124, 0,240, 98, 29, 5, 78,157, 10,192,163, 5, 19, -220, 96,188, 33, 55, 52,162,158,190,141, 50,115,126,206, 80,226, 38, 73, 69, 94,107,193, 43,187, 85, 9, 84,253, 22,122,157, 33, -174, 97,251,116, 36, 11, 42, 91,233, 51, 60,132, 5,109, 50, 98,162,228,174,134,220, 88, 59, 84, 11,140,157, 52, 48, 32,105, 32, - 57, 99,239, 78,237, 97,250,139, 7,124, 32, 50,110, 71, 77,222,191,211, 48,224,239,221,184, 28, 95,199,209,163,187, 87,158,235, -179, 35,167,106,133,135, 15, 50,143, 40, 0, 40, 7, 11,254,181,254, 66,194, 34,216, 40, 48, 30, 34,249,191,161, 25, 53, 16,219, -128, 74,222,141,109, 61,215,101, 99, 34,128,247,176,114, 30,232,248, 90, 76, 71,170,250,160,133,206, 74,118,187, 50,113,188,247, - 20, 45,146, 50, 12,166,243,169, 6,197, 37, 87, 0, 27, 39,204,130,247,149,170, 64, 81, 64, 4, 1, 54,103,210,181,137,251, 89, - 8, 78,177,163,252, 96,202, 2,113, 15, 58,187,185,235,226, 59,196, 48, 6, 60,176, 20,133,251,212, 17, 18,187, 38, 21, 36, 14, - 40,231,149, 93, 32, 65,241, 3, 33, 10,186, 20,162, 72,208,159,127, 59,153, 83,134, 56, 73,156,245,174, 67,202, 50,233, 39,242, -230,250, 59, 80,235, 27,106,135,188, 49,100, 10, 12, 55, 16,186, 81, 98,224,248,246,158, 43, 14, 77,196,102, 99,222,221,144,182, -212, 98, 19, 88, 0, 92,165, 13,145,117,209,214, 47, 26,227, 72,156, 78,154, 80,232,179, 48,154, 69, 90,176,134, 76,232, 11, 63, -161, 99, 22,144,185,126, 28,113,236,142, 36,142, 73, 15, 28,168,214, 97,188, 45,194,184,234, 16,103, 3,235,238, 13,240, 21, 90, -111,202,227,147,115, 45,156,143,229,195,187, 77,249,234,116,198, 0,222,174,215,169, 37, 48,210,226,188,168,103, 21,218, 22, 80, -172,204, 96, 85,128,110, 29, 3, 30, 88,224,250, 83, 41, 84,154, 60,235, 60, 47, 92,129,141,181, 33,169, 16,148,231,235,253,105, -148,203,164,178,133,235,153, 38,187, 38,127, 30,186,247, 92,144,200, 94, 35,199,174,122,178, 4,237,202,116,196,127,251,135,103, - 18,128, 18,183,211, 54,223,117,136,178,160, 99,132,234, 89,169,224, 28, 38, 19, 3,113,137, 89,187,114, 50, 21, 27,122, 60,227, - 58,228,116,245,192, 34,153, 98, 64,166,134,185, 14,151, 12,234,113,148,184,130,118,195, 34, 22, 49,112, 10,241, 25, 61, 31, 69, -125,182,119,219, 29, 94,139,147,139, 11,125,118, 42,108, 2,176, 2,201, 19,147, 33,156, 70, 96,117,128,123,117,165,133, 99,167, -213, 98, 33, 85, 40, 85, 40,165,187,210, 36,120,163,241,240,155, 39,207,228, 39,239,189, 45,179,225, 5, 17,222, 57,218,129, 90, - 1,138, 6, 11,113,191, 93,171, 50, 89,194, 11, 60,159, 53,197, 60,130,222,168, 66,153,165,232,204, 84,175, 1,164, 93,129, 76, - 71, 1,142, 98, 7,211, 28, 36, 99,202, 21,235, 53,129,217,201,109,127, 42,223,143,134,210,191, 57, 33, 37,186,200,149,129,158, -137,141,169, 90,226, 92, 67, 99,157, 96,188,245,146, 44,148,171, 1,238, 31,116, 20, 98, 57,108,224,181, 60,230, 26, 76,239,110, -244, 51, 70,161,177,132, 86,129, 53, 6, 23, 23,125,185, 13, 34,153,106,193, 3,137,103,240,205, 87,107,189,230,107,143,211, 96, -136,126, 45, 32, 6, 5, 35, 26, 8,191,228,178,108, 48,113, 15, 87, 52, 27,210,102, 8,178,180,185, 44,159, 73, 20,218,221,102, -147,133, 9,206, 7,238, 1, 20,230,150,122,198, 62,124,251, 29,185,232,245,228,244,242,146,147,185,179,171,162,252,236,221,125, - 57,212,102, 25,193,107, 14,187,213,181, 9, 36, 97, 60, 78, 47, 4, 90,121, 7,242,246,157,138, 92, 22, 52,254, 65,124,105,147, -147, 15,222,123,139,224,200,254,237,181,116,235,101, 98,184, 74,244,178,215,124,154, 74, 96,139,197, 60,124,126, 46, 18,245,186, - 2, 83, 64, 67, 23, 76,222,126,253,221,181,220,210, 92, 69,228, 94,183, 44,191,252, 96, 79,190, 61,153,104,130, 50,241,125,152, -215, 55,234, 69, 38,180, 3,189,161,253,217,134, 31, 6, 65, 25,104, 84,142,178, 28,159, 14, 29, 53,198, 3, 72,128, 24,177,213, -202, 89, 6, 42, 36, 82, 11, 74,198, 1,143, 54,102,165, 10,237,229,196,141, 81, 9,216, 10, 76,237, 7,193,232,106,188,102,229, -103, 90,231, 30, 47, 52, 2,192,112,190, 38,112, 33,114, 35,116,163,213,153,107, 18,237, 4,157,251, 16,169, 50,161,240,189,192, - 11,157,210,157,211,181,204, 86, 17,187,133, 74, 25,187,219,132, 70,247,179,249,154,193, 11, 96,136, 75,237,156, 31, 30,212,201, -143,197,235, 97,132, 98, 10, 95, 70,189,193,239, 47,111, 70, 28,195, 98,204, 50, 93,217,144,114, 5,177,102, 47,195,128,123,220, -213, 27,213,155,200,105,111, 32,230, 39, 23,255,128, 54,100,192,176,192, 55, 74, 20,222, 43,228, 51,159,107, 69,135,157, 30,118, - 87,247,186, 53,251, 28,250,217, 78, 6,161,117,174,137,121,244,154,142,150,117,123, 24,213, 29,180,154,122,243,181,107, 25,206, -228, 76, 59, 25, 0, 8, 75,154, 24,145,208, 27,205,154, 76,199, 48, 66,152,105,240,193,142,220,153,138, 68, 26,168, 54,250, 96, -174, 80,149, 91, 18,131,162, 82,177, 96,212, 41, 92, 95,220,183, 5,198,251,142,146,182,226,200,216,246,208, 8, 54,129,181,210, -142, 94,102,116, 19, 80,184, 34,131, 88, 51, 16, 66,215,126,219,157,111,156,202, 86, 74,200, 69, 66,216,132,252,249, 20, 93, 0, - 71,221,243,221, 72,219,216, 4,137, 27, 99,123,206, 96,132,231,215,117,143,236, 90, 54, 27,231,130,231, 84,188,104, 80,146,108, -147,116, 58,118, 39, 16,173,217,146,162, 6,238, 23,167,167,250,210,199, 78,164, 71,152,208, 98, 71,155, 35, 22,132, 96, 37, 75, - 42,157, 86, 77,131, 78, 34, 55,183, 51,174, 60,128, 69,128,224, 68,165, 84,117,227,104,147, 17, 6, 77, 10, 69, 78, 10, 10,138, -162,216,209,220,156,150, 59,169,158, 98, 70, 30,155,141,147, 97,205,208,236,229,197,233,185,180,106, 21, 94,239,225,100,230,118, -246, 83, 19,208,129,252, 40, 36, 66,157,234, 24,238, 75, 45, 66,183, 98,118,184,232, 36,145,172,150,161, 83, 82,116,166, 47,233, -174, 82, 82, 19,152,237, 62,221,123,163,227,237, 84,253, 40, 58,226, 91, 87,154, 56,251, 88, 83,245,139,157,160,148, 9, 79,165, - 64, 51,242,170,131, 96,187,119,165,133,113,198,119, 5,132,161,167, 1,230, 1,154,125, 64, 84,175, 48, 32, 82,130,217,141, 90, - 23,107, 19, 30, 33, 77,155, 44, 17,223,117, 48,193, 22,200,135, 4,134, 55, 4,118,195,112, 52,146,175, 95, 15,101,255, 71, 29, -142,225, 95,247,102, 44, 91,154,213,146,118,118,115, 38, 16,140,125, 41, 4,165,175,128,164,146, 42, 50,102, 35,125,182, 87,115, -201,106,199, 14, 28, 72,183,117, 71, 3,102, 95,174,135,102, 52,178, 3,111, 5, 45,242, 91,173,134,126,125,137,215,226,232, 96, - 87,206,175, 7,220,207,131,122,137,226, 25,147,173, 88,139,240, 74, 41, 39,117, 77,166, 97,156,149,186, 22,201, 49, 28,251,112, -143,244,172, 3,155,154,205, 5,156, 86,130,203,143, 56, 71, 32, 32,186,103,199, 25, 18,174, 44, 76,168, 37,113, 90,240,129, 59, -195,184,246, 44,180,128,195,200, 26,226,153,107, 68,223, 40,142, 52,128,138, 76,166, 24, 90,253,203,165,137,126, 97,106,131,241, -175, 15, 96, 22, 25, 33, 5,222, 23, 20,157,124, 94, 33, 59, 29,175,233, 55, 65,197, 62,141, 55,231, 87,151, 82,171,212, 41, 5, -125,122,113,169,207, 71, 67,150,218, 0,252,250,155,111,205, 81, 45, 54, 87, 53, 82,112,179,166, 75, 0, 52,120,183,174,221,225, -218,226, 8,206, 0,166,172,214,225,218, 10, 37, 75,245,198,141,201,205, 38,118, 15,203,229, 44,215, 5,184,167,200, 0,229,218, -129,105,211,135,240, 12,208, 14, 84,255, 46, 87,196,190, 63,224,228, 21,150,213,116, 27, 11, 34, 78,191,138, 4, 44,194,143,220, -231,245,189,211,209,100,119, 54,150,179,235, 62,113, 23,154,222,169,111,192,149, 88,146,145,166,230, 16, 72,206, 62,216, 45, 81, -222, 59,166, 29,177, 41,130, 82,154, 27, 69,149, 62, 63, 55, 55,151,244, 9,105,106,178,198,243, 56, 90, 78,182, 10,125, 56,126, - 20,203, 89, 94,179, 96,198,115,139,102, 6,221,250,209,238, 46, 11, 31, 28,104, 76,232,192, 54,185,179,191,199,213, 37, 30, 46, - 0, 54,255,241,203,215,242,241,131, 93,121,116, 88,147, 82,169, 98,182,199,250, 51, 86,243,132,204, 0, 36,244,200, 61,107,187, -109,189,174,250,247,151,253,144, 93,251, 78,183,203,226, 6, 92,120,207,225,124,194,208, 84, 69, 49, 57,129,223, 70,184,145,173, -132, 47,158, 33, 56,216, 97,154, 0,107,228, 12, 42,165,183, 14, 42,178, 83, 43, 19, 76,213, 46, 3,232, 49,230, 8,203,115, 70, - 14, 89,242,134, 3,154,207,223,223,173,107, 85,177,102,165,205, 10,194, 19,238,202, 17, 7, 11, 94,198,141, 98, 50,220, 49,227, -134, 12,230,182, 7, 42,100,109, 79, 79,193,249,192,248,213,184, 17,232,204, 57,162, 74,156, 78,180,222, 80, 84,118,232,174,171, -197, 12, 77, 81,144,236, 98,236, 59,114, 70,167, 1,175, 34,140, 87, 76, 6, 20,140,217, 24,193,156, 38, 30, 81,188,229,197, 47, - 89, 17,153,116, 41, 42, 35, 88,133, 6,180,221,211,167, 79, 15,121,175,191,176, 0,230,192, 67,235,201,154, 85, 27, 30,248,253, -118, 69, 58,181,130, 3, 6, 89,196,167, 73, 71,100,194, 35, 57, 61, 33,224,133, 6,110,100,220, 42,102, 73,105,105,214,114,154, -132,214, 68, 75,175, 52,137,102,169,210,180, 97, 55, 45, 70, 22,225,251,131, 95,245,237, 52,224,255, 7,122,190, 94, 14,164,169, -159, 55, 10,242,236,134, 86, 27, 19, 98,129,245, 43, 94,199,119,187,172,192,207, 75, 89,175,229,209, 78, 67, 62,124,176,175,223, - 87,144,247,247, 43,146,211,215,249, 15, 79, 46,229,119,207,110, 73, 13,138,220,232, 15,251,154,217,122, 98,224, 61,177, 42,143, -193, 26,116,145,122,133,247,183,172,135, 14,157, 57,146, 6, 45, 33,105,113,105,252,236,114,185, 74,132, 54,146, 35, 14, 57, 19, - 96,198,146,118, 24,133,110, 36,236, 60,160, 61,163,234,144, 55,190, 29,223, 90,176, 66,122,129, 34, 27,128, 62,137, 75, 42,230, - 82, 23, 18,177,235, 57,173, 88, 60, 60, 43,154,122,248, 28,127,231,115, 70, 39, 17,151, 32, 19,139, 32,252,115,140, 91,145, 76, -145, 28,193,117, 77, 25, 9,169,188,101,198, 81,232,240,126,128, 88,125,165, 9,189,152, 53,151, 55, 27,245,155, 1,140, 56,157, -107,140,175,152, 8,181, 96,193, 57,232,107, 17,152,211,194, 21,202,121,161,190, 70,174, 80,230, 3,180,211, 40,201, 59,251, 85, -249,246,114, 78,110, 45, 39, 20, 97,226,244,219,109, 31,206,253, 35,174, 63,248,231,203,229, 86,133,125,229, 36, 50, 49, 94, 69, - 55,134,194,233,188,119,163,137,168,202,247,196,226, 55, 8,152,128,124,103, 34,130,247,226, 72,148,236, 40,113,141, 64, 37, 77, -199,160,158, 39,219, 49,185,239,240, 6,233,117,240,222, 48,236, 89,204,130,161, 98,232,119, 19,125,207,184,206, 38,138,173, 8, - 50, 51, 21,217,162,235,109,165,230,166, 77,129,141,235, 1,175,128,146, 24, 69, 93, 36,222,222,171, 36, 50,128, 36,182, 49,164, -223,101,196,249,192, 39, 44,170,201, 21,119,235, 3,118,160,142, 81,227,180,172,248, 25,249,124,225,123,243, 1,215, 87,184,183, - 72, 38, 23, 55, 67,121,118, 93,146,159, 63,172,235,121, 78, 72,241,219,209,162, 43,151,213,100, 5, 92, 74, 41, 79, 19, 40, 40, -170,225,243,228,156, 56, 13, 98, 71, 94,219,253,217,100, 36,123,135,135, 26, 88, 87, 82,173,183,181,171,159,209,222,185, 91,203, -203,203,211, 11, 77,236, 69, 78,100,102, 90,216,147, 42,139,201, 76,174, 64,191, 0,178, 81,124, 4,220, 5,147, 74,181, 4,145, -151,178, 60,127,121, 43,135,187,123, 60,123,217, 92, 68,208, 29,158, 37, 88, 49,163,139, 10,157, 12,231,198,141,224, 3,242,248, - 83,191,130,220, 22,113, 45, 57, 83,119,196,202,140, 60,239,140, 81,221,214, 0, 35,130,230, 68, 25,209,133, 43,162, 77,119, 30, -221,255,138,110,127, 9,159, 69, 92, 39,160,245, 87,115,125, 70, 39,115, 43, 6,244, 25,120,180,223,145,215, 23,215, 44, 60, 1, -134,198,250, 66,143, 28,197,163,150,203, 49, 11,241,254, 96, 32,167,231, 23,114,180,119, 71, 30, 29, 95,201,239,191,127,234,220, -253, 28, 37,210, 77,195,128,130,255,143,143,141, 50, 23, 80,111,220,214, 56, 24,133,163, 40,201, 18,180,252,198,187, 33,235,172, -178,163,217,130,211, 76,232,216,147,117,145, 95,107, 44,168,107, 34,188, 35, 7,187, 77, 78, 99,187, 26,111,197, 51, 38, 10, 58, -116,147, 12,247,181,208, 93,105,178,155,201,159,125,116, 87,254,240,244, 86, 11,150,172,198, 55,237,106, 51, 9, 99,204,130,114, -217,246,204,213,203,121, 78,143,177,190,196,117,223,223,209,103,244,197,153, 54,130, 11, 54, 6,240,188, 71,117,189,142,225,148, -184, 33,104, 18,248, 15,216,184, 2, 75,226,109,121,247, 17,229,106, 19,230,191,212,222, 56,203, 73, 11,157, 26,197, 12,159, 76, -113,207,192,179, 88,133,192,136,166,221,172,211,114,247,251,151,175,100,176, 60,144, 11,253,242,189,120, 72,149, 80,174,204, 48, -217,128,106, 93,161,192,132,141,105, 7, 42,107,224, 48,238,238,234,121,211,166,249,180,167,197,130,254,252,219,126, 34,237,238, -158,220,246, 46, 77,251, 31,231, 80,115, 48, 62, 35,196,216,192, 66,192,243,142, 41, 26,154,239, 39, 39, 87,250, 26, 90,200,252, -229,253,206,255,250,231,143,186,172, 32,191,191, 24,179,234, 58,131, 8, 12,101, 94, 3,202,229, 33,208, 96,151, 4,133,184,144, -149,151, 86, 22,205, 42,111, 38, 70,193, 84, 72,130,233, 67,198,223, 6, 15,207,117,165, 52, 55, 32,197,202, 64, 59, 0,183,101, -157,118, 48,149,220,128,212,196,207, 7,253,193,183, 61, 54, 18, 60, 10,131, 48,178, 93, 28, 85,219,192,197,244, 77,166,149,251, -145,141,201, 91,178,170,194,152,126,109,251, 71,116, 67,184,216,232,112,208, 93, 66, 34, 18,230, 14,182,235,138, 41,136, 16,186, -238,141,202, 70,113,178, 21, 49, 9,156,189, 39, 10, 0, 0,232, 80, 12,176,139,116,159,139, 59, 73,162, 14, 23, 91,215,169,150, -118, 5,248, 12, 7, 68,232,102,184, 95,189,210,142,249, 28,146,150,120,157,200, 52,185, 99,121, 99,196,145,213,196,140,105,114, - 49, 19,115,164, 84, 41,230,228, 78, 83,111, 6,208,232,188, 86,216,243,151,229,110,167, 42, 31, 30,212,120,205,225,251,188, 91, - 47,201, 95,125,116, 95,254,217, 79,238,203, 71,247,119,104,123, 57, 91,107,151, 61, 93, 82,188,227,173, 59, 59,242,254,113, 91, - 15, 92,158, 32, 71, 60, 20,197,188,207, 61, 19,168, 73,101,112, 39,181,154,107, 54,234,236, 70, 90, 90,161,114, 76,230, 70, 79, - 24,113,219,181, 48,138, 23, 14, 61, 70,226, 16,156,153,207, 23,219,113, 47, 69, 58, 36,113,166, 21,182,223,230,152,221,137,105, - 64, 4, 1,149,126, 1,123,103, 45, 10, 64,153,219, 86,192,113,180, 21, 64, 9, 24,104,108, 82, 3,208, 15, 68, 68,114, 57,243, - 36, 71,194, 37,248,203, 33,177, 19, 55,149,137,221,216,217, 68, 35,140,126,181,116,133, 2, 10,132, 10,181,224, 51,230, 93,238, -116,227,179, 78, 15, 30, 94,235, 16,185,248, 79,254,228, 33, 71, 97,120,152,125, 39,164,132,207,139,253,170,173, 14, 60,249,205, -151, 47,229,162, 55,162,206, 1,212,170,226,213,130,232,230,108,161, 36,159,188,181, 47, 31, 60,232, 82, 99, 0,137, 14, 58,213, - 24, 65, 2, 12, 10,213, 67,236, 11, 95,158,247,229,228,122, 72, 67,146,192,105,132,110,156, 23,180,200, 27, 20,127,226, 56,215, -177,243, 69,199,207,201, 56, 39, 41,200,226,210, 97,106,179,217,250, 10,120, 41,178,221, 51,174,117,170,149,159,142, 26, 18,199, - 77,223,142,222,205,126,201,116,234,221,144, 36,114, 56, 17, 47,245, 72,112, 58, 13, 28,197, 7,142,162,232,206,109, 22,214,175, - 98, 1, 52,231,232,126,185, 92,214,145,229,196,241,252,205,114,212,115,234,126,190,163,202, 81,204,201,183, 93, 37,215, 89,156, - 46, 24,206, 34, 37,143,252, 80,231, 63,149,251, 37,130, 90,223, 47, 10,155,144,138,105,121,126,207,149,118,212,247,119, 74,178, -175, 69,213, 89,127,198,216,128, 14,107,130,128,172, 55,162, 94, 45,114, 69,130,184, 69, 15,138,140,201,152,130, 82, 11,237,121, - 96, 74,192,241,198,185,163,181, 71, 18,178,112,255,238,213, 13, 99, 23, 94,239,246,182, 71,112, 20,196, 65, 96,170,132,181, 32, - 60,175,233,136,149,216,228, 14,147,179,187,123, 53,142,161,167, 90,144,142, 70,183, 4,196,101,243,101,202,246,142,102, 19,142, -187,195, 40,118, 66, 74,111, 60,115,253,140, 97, 68,112, 70, 1, 58,132,153,137, 73,235, 70,182, 71, 37,144, 49, 50, 58,233,106, -227,240, 44, 89, 78, 13,166, 48,141,114, 73,135, 69,148, 88,209,151,210,141,215,161,249, 66, 0, 84,139,215,221,235,180, 89,160, -158, 94,246, 88, 68, 84, 74,101,254,127,232,193,151, 52,169, 98, 85,232, 57, 10,236,213,213,185,180,218, 59, 90,220, 23, 36, 90, -141, 53,214, 23,216, 48,160,160, 66,140,131, 87, 1,180, 51,214, 78,142, 59,165, 4, 51, 52, 38, 54, 25,202,229,140, 33, 33,108, -226,178, 4,130, 98, 10, 85,226, 14,189,164,191,175,106, 18,239,202,193,222,158, 84, 42,117, 26,245,148, 43, 13,185,179,219, 32, -168, 14,171, 7, 76,125, 96,106, 53,214,152,115,222, 27, 50,158,255,183,127,245,161,252,226,147,119,248,252,189,210,231, 10,182, -224, 23,183,147,173,149, 43,206, 75,200,231, 39,103, 14,137, 0,168,105,195,137,159, 11,193, 44,176, 77, 74,133,141,225, 26, 48, -222,215, 38,176, 92, 41,201,241,241, 93, 9,244,250,250,226,111,177, 83, 22, 83,204, 81,109,229, 12,197,168,189,160, 95, 95,160, -159,135,173, 4,111, 71, 99,210,118,169,206,168,213, 43,146,125, 69,175,217,154,140, 0,107,118,207,174,174,248,249,112,198, 52, -115, 18, 59,130,154,199, 38, 0,107,227,200,235,123, 45,151,236,140, 98,149, 4,167,210, 78,187, 12,151, 16,222, 71,155, 18,121, -148,103,198, 36, 0, 69, 53,186,118,147,228, 13,232, 65, 65,234,174, 99,252,144, 83,255,224,176, 37,191, 63,153,106, 21, 60, 98, -146,123,124, 13, 5, 38,251, 2, 84,185,139,120,185,221,123,178, 66,228, 27, 54, 57, 62, 34,228, 67,140,101,204,236, 32,147,250, - 58, 19,168, 20,210,189,135,181, 60, 22,136, 81,192,234, 36, 16, 51, 95, 97, 0, 2,143, 27, 64, 42, 84,174, 57,187,169,222,198, - 56,126,208,129, 62,133,163, 18, 21,172,124, 86, 78,216,147, 3, 88, 17,185,174, 48,198,152,203,183,215, 53,217,194,100,107, 94, -129,155,129,113,137,135,145,148,192,166,206,246,127,144, 72,149,212,155,251, 7,255, 48,188,122, 41,170, 58,230,232,236,250,102, -162, 5,193,146,201,179, 85,201,209,240, 97,166,157,225, 96,186, 48,153, 74,125,239,123,149, 37,193, 29,227, 33,246,228, 27,142, -221, 32,239,248,168,145,147,142, 30,228,255,240,186,255,198, 57,203,189, 22,166, 12, 24, 83, 2,155,144, 1,189, 43, 83,144, 23, -195,141, 38,219,174,236, 84,244,218, 77,135, 68,238,163,171,173, 65, 3,187, 33,242,104,167, 37,123,221,182,236,239,237,152, 70, - 52, 36, 41,225,120,165,137,229,122,184,150,223,188,188,225,195, 52,156,152,221, 31,237, 98, 41,138,161,135,101, 2,245,174, 60, -253,161,225,150,103, 30,218, 9, 15, 36, 80,219, 16,163, 49,105,219,149,243,234,141,196, 8,121,166, 91,206,164,153,200,182, 40, - 89,187, 93,181,239, 7,206, 69,205, 44, 84, 37, 69,146, 59,244, 54,193, 89,145,117,192, 40,176,226, 45, 32,202, 12,105,144,152, -172,227, 78, 56,217,200,147, 14, 39,214, 93, 39,230,120, 5,185,205, 84, 61,142,162, 12, 14,217,142, 7, 14, 93, 58,146, 85, 33, -151,219,142,152,233,133, 7,128, 99,232, 36, 43, 97, 50,161,159,241,242,230,150, 73,159, 14,101,238, 33, 6, 5, 50,118,252, 95, - 32,133,113, 93,209,153,227,190,130, 58,243, 37,196,107,244,103, 55,235, 26,192, 91, 77, 6,161,154, 6,183,150, 38,143, 91, 34, - 78,215, 82,205,250, 20, 1,130, 15,250,158, 86,233,245,122,129, 19,165,102,173, 46,111, 29,113,217,196, 14,202,115,178,169, 40, - 24, 32,234, 4, 48, 82, 41,111,221, 46, 86, 64, 55,195, 1, 19,230,138,178,180,115,126, 46,140, 87,241, 53, 8, 40,232,204, 73, - 73,244, 18, 82,183,104,194,130, 81,252,204, 5,247,237, 96, 61,249,255,157,235, 55,166, 57, 4, 78, 70, 54, 86,183, 47,139,216, -129,224,185,199,103, 70,240,202, 82, 27,222, 58, 20, 43, 60,173, 96, 0, 16, 13,171, 25,142, 93, 19,243, 94,136,220, 8, 54, 33, - 48, 48, 75, 27,208, 77, 90,208,115,239,231, 17,216,186,118,163,246, 55, 15,129,117,174,166,144, 99,123, 65,156, 39, 17,139, 5, - 0,227,225, 28,152,121,136,231,220, 10, 19,242,174,255,205,239, 78,229,127,252,139, 99,249,209,189,174, 60,191, 28,233,189,200, -147, 30, 8,132,125,171, 94,209,103,115,206,241, 55,198,148, 16, 56, 90, 65, 6,153,236,132,172, 94,215, 41,209,244,208,225,200, -151,170, 82,213,243,112,222, 95,145,243,172,229,184,158,153, 5, 19, 0,194,123, 9,157,233, 98,200,113, 45, 26, 4,140,113,113, -205, 17, 27,241,124,116, 42, 25,142, 96,161,115,222, 31,244, 53,233, 85, 57, 37,124,242,226, 37,113, 51, 37,226, 67,132, 99,123, - 4, 95,210, 40, 61,135, 33, 0,141,116,101,186,222, 24,155,167,244,215,148, 26,202,201, 22,198,222,129,121,151,131,234,185,118, -197, 91,106, 29,234, 59, 42, 33,208,239, 40,196, 64, 41, 68, 2, 12,168,218, 24,177,152,190, 28, 76,164,215, 63, 37,203, 35,165, - 67,194, 83, 61, 91,201,147, 94, 88,215,175, 57,108,109,228,235, 23,215, 92,133,129, 77,156,203,117,228,207, 62,126, 95, 70,195, - 1,159, 85,168, 3,146,186, 25, 39,196, 76, 28,118,234,242,226,114,192, 85, 44,166,166,187, 53,163,111, 97,109, 14, 58, 49, 62, -231, 58,242,137,151,218,197,254, 29,137, 30,200,253,141, 77,121,104,126,149,245, 89, 68,223, 96,101,120,165,221,255, 31, 95,209, -169, 12,160, 91,161,192,138,198,125, 8,105,233,217, 0,170, 31, 77,196, 68, 99, 46, 40,134, 47, 95,107, 27,123,212,150,110,171, - 35,215,215, 87,204, 31, 89,228,149, 76,222,226,116,213, 18, 63,197,159,226,140,198,204, 29,160,120,152,131,226, 24,184,144,141, -212, 98, 77,134,173, 29,201, 97, 50, 25,197,204, 75,211, 25, 10,185,132, 49,133,120, 35,125, 22,160, 25, 49,165,229,107,137, 52, -220, 40,213,222, 16,143,207, 52, 98, 95, 31,216, 0, 36,244, 82,137,197, 22, 24, 76, 52, 70,210,123,177,215,237, 80,131,191, 86, -186, 47, 71,117,205,127,176, 80,117, 83, 58, 78,111, 35,147, 55, 7,198, 96,175, 83, 38,109,243, 82,243,111,171, 89,214,184, 14, - 15,249, 2,115,162,120,123,164, 30,222,244,251, 90,184,162, 0,240, 52,254, 44,164,222,104,243,125,162, 9, 70, 83,181, 38,168, - 86, 11,155,127,253,251, 51,138, 2, 64, 65, 12,143,226,106,153,200,100,105,212, 25,208,184,208,169,161, 34,181,128,224,105,199, - 44, 4,190,145,240, 66, 96,134,255, 70, 50,208,247,157, 16, 9,130,129, 73,137,146,143,154,202, 96,112,199,153,144,230,133,206, - 30,221,100, 64,250,141,105, 13,251,174,163, 9, 28,248,103,236, 56,225,201, 38,203, 46,158, 0,170, 31,120, 16,167,241,203, 12, - 60,196, 33,244, 3, 38,229,249,108, 67, 16, 91,222, 1, 82,240, 0,114,160,224,198,177,169, 22,118,236,132, 57, 76,180,195,194, -163, 79,187, 72, 67, 99, 35,121, 19,160,167, 1, 5, 85, 43,186, 48,186,188,113,133,238,113,172, 4, 52, 61,138,161,102, 41, 43, - 71,122,209,235,218, 29, 39,155, 37,199,175,111,184,195,118, 24,160,213,142,253, 37, 38, 24,197,122,147, 78, 74,228, 27, 67, 86, - 82,255,252,249,249,128,211,132,185,126, 63,170,183,198, 29, 77,244,218,157,224, 97, 41,104, 37,136,131,134,135,188,232, 30, 22, -184,255,172, 22,144,135, 92, 83, 91, 27, 83,137,216,129,179, 82, 32, 20, 46,119,177, 92,145,172,254,154, 79, 46,152,216, 42,168, -162, 27, 77,142,134, 67, 87,225,147, 74,197,202,215,198, 74,236,194, 35,147,216, 76,105, 21,169, 54,117, 74, 21, 75,221,210,108, -204,109,174, 81,121,253,217,115,208,226, 48,182,102,242, 93,147,227,238, 57,223,223, 31,114,212,233, 90,134, 32,229,153,202, 24, - 45, 77, 61,211,209, 71, 98,206, 58,153,225,196, 21,139,177,115,115,131,138, 32,164, 27, 73,165,115,217, 11,239, 33,116, 93, 30, -206, 45,215, 61, 76, 88,177,163,124, 9,149,155,224, 63,143,206, 37, 5,212, 89, 33,231, 59, 65, 13, 11,126,252,204, 8,100, 20, - 53,202, 81,209,106,175,211,145, 59, 59, 69,185,211,206,202,201,213,132,133,231, 58,244,100,159,118,171, 62, 1,110, 59,173,178, -220, 57,218,149,219, 49,206,112,138, 90, 23, 83,121,155, 45, 28,213,206,185, 51,105,242,206,102,108,189,192,253,218,102,197,224, -209,134, 16, 13,130,169,126,239, 84, 19,202,110,187,206,164,116,163, 65,122,229,212, 4, 57, 34,134,186, 88,197,119,184,150,141, -147,212,117,123,240,216,166, 89,169, 15, 59, 71,133, 40,140,210,209, 60,243,186, 61,103,248,204, 20, 53,201, 4,118, 94, 92,145, - 64,163, 14, 4,141,216,156,162, 48,193, 2,195,227,160,153,215,224,156, 97,144,198, 53,192, 14,246,108,176, 50,189,118,112,173, - 33, 46, 21,216, 8,149,171, 43, 36,154, 84, 68,200,137, 19, 37, 78, 73, 48,181, 54, 54,206,191,129, 82,241, 47, 10, 8,220, 71, -156, 57, 43, 62,139,188, 70,207,245,186,255,230,241,181,252,151, 63,125,160,113,203,119,114,200,190, 12,181,147,205,218,154,211, - 94,211,211,243, 58,139,104, 97,137,130, 3,227, 74,140,108,135,131,158,230,139, 10,239,193,209,193,129, 38,134, 75,118,137,152, -170,133,203,185,113, 84, 54, 88,237, 85, 12,116,138, 56, 5,122,216, 38, 71,101, 61,116,144,152, 28,156,244, 18,118,176,120,197, - 74, 77,159, 99, 96,136,224, 63, 1, 81,168, 5, 10,216, 58,215, 83,184,135, 57, 71, 25,140,220,232,220,166,139,102,178,131,206, - 52,240, 13,159, 68,157,115,184, 63, 58, 63,138,106,177,161, 29,117, 75,206,110, 6,148,131, 21, 39,252, 51,209, 46, 49,175,231, - 24, 92,117,138,217, 4, 14,128, 23, 4,174,208,246, 41,148,130,115,143,233, 42, 65,180,154, 48,219,141, 58,207,244,203,139,158, -158,211,182, 12, 53, 86,228,181, 0, 56,212,206,112,174,143,246,179,151,175, 52, 81,116,244,117,171,242,248,236,137, 60, 59,189, - 34,226, 58,227, 98, 57,183, 96, 40, 74,181, 99,197, 42, 22, 84, 99,196, 35,208, 27, 3, 39,233, 76,106, 45,167,120,193, 27, 31, - 3,253,255,240,234,192, 58, 53,200,198,164,235, 34, 89, 3, 32,119,247,206,123,146,113, 13, 21, 88, 66, 96,216, 0,236, 23,100, -244,217,212,103, 11, 86,192, 79, 95,158,179,185,184,153, 21,120,127, 32, 27,252,214,110, 77,118, 26, 6,124,165, 32, 78,222,112, - 10, 88, 25,183,235, 29, 98, 14, 96,245, 90,169,212,228,206,225, 29, 78, 91,208, 33, 91, 30, 91, 91,204, 91,244, 41,181,155,104, -178,175,104,108,135,126, 59,166, 33,145,158,133,145,158,167,173, 57,148, 47,148,144,197,179,202, 34, 51,177,169,154,157, 99,111, - 43,246, 67,133,199,140, 93,127, 92,143,107,109, 36,186, 90,232,127,254,205,119,210,219,219,149, 31,223, 45, 81, 65,143, 56, 20, -114,227,109,210, 80, 45, 21,244,217, 94,208,187, 4,207,207, 84, 11,152,114,165, 32,221,122,150,134, 71,185, 6,254,188, 41, 29, - 24,219,120,107, 98,185,142,192, 2,211,226, 4,147,232,235,219,177, 25, 92,177,225,153, 73, 6, 34, 17,224,187, 97,215, 13,160, -201, 98,177,225,206,108,175, 93,100, 18,215, 91, 74,241,120,227,189,190, 41,182, 41, 82, 64,228,139,191,213, 2,198,141,143,156, -181, 99, 74,149,193,195,201,145, 6, 5, 1, 98, 55, 12,180, 74, 52,135, 61,140, 62,216,137, 3,202,164,198, 30, 57,223, 1,179, -176, 59, 28, 47,244,198,154,171, 18, 60,192, 77,202,211,116,177, 35,103,134,192,241,172, 3,162, 25,101, 42,230,148,225,163, 59, -134,252,190,157,139,227, 65,122, 20,249, 73,169, 64,244,135, 15,222, 0,238, 56, 6,139,147,109,130,139,157,237,161,185, 24,249, - 84, 86,211, 80, 67, 76, 0,119,159, 25,227,161,231, 25,204, 53,184, 87,179,220,189,246, 0, 86,240,204, 74,241,142, 86,171,216, -255,225, 97,194, 72, 8, 2, 36,144,104, 69,145,210,159,207,121,136,160, 84, 6,149,161,193,120, 46, 21, 45, 8,238, 63,216,211, -228,209, 50,131, 6,189,185,160,171, 12,180,176, 64,119,138, 84,181, 4,151,126,190,162,231,240, 42,220,184,134,199,204, 17, 22, -161,137,255, 35, 57,178,120,208,135,186, 2, 6, 3, 70, 70,250,160, 47,136,222,246,185,223,186,133,185,128,155, 34,144,170,150, -200,214, 80,101,181,154,153,218,154,200, 86, 4, 37,245,125, 78,145,226,169, 85, 40,196,116, 16, 92,185,139,218, 24,130,156,175, - 17,174, 13, 40,230, 38, 49,248,103, 78, 1,141,165, 62, 68, 21,179, 86,116,194, 66, 81, 98, 66, 13,158,147,242, 76,213,179,208, - 9,129, 66, 2,173,237,172,115, 43, 19, 42,207,153,131, 32, 58,188, 76,222,120,219, 76,218,232, 54, 3,179, 34, 69,162, 67, 5, -141,235,134,207,132, 53, 15, 20,194,150,174,163,161,195, 26, 18, 29,118,236, 65,198,117, 72,154, 8,244,190, 32,225,227, 94, 33, - 48, 94,244,135,210,109,180,236,220, 45,103,122, 46, 43, 26, 32, 81,104, 9,121,236, 90,199, 11, 36, 65,144,196,112,253,177, 79, - 29,107,229,223,211, 14, 28, 5, 66, 38,101, 97, 44, 87,188, 70,105, 49,100,130, 50, 9, 71,215, 16,155, 1,215, 25,103, 19, 35, - 75, 8,172,192,216, 98,170,247,235,213,101, 79,238,237,182, 9, 62, 29,105,161, 52,221, 24, 66, 28,221,105,222,141,250,240,153, -230,110,125,176,113, 1,134,133, 17,206,202,182,195,144,237,138, 41,213, 32,127,211, 57, 27,214, 99,169,247, 29,227,107,156, 79, - 24,181,224,245,233,139,237,144,218, 43, 77,110, 40, 98,237, 30, 11, 71,146,166,149, 30, 83,222,153, 24,133,212,155, 32, 48,164, -253,198,113,209,185,138, 72,220,179, 26,219, 57, 49,212,190,183,149,206,141,156,142,255, 15, 93,252,138,197, 12,199,218,133, 28, - 38, 11,107,249,238,116,162, 73,221,147, 35, 45,160,158, 95,141,229,160, 93,211,235,151, 37,163,165, 94, 46, 58,115, 20, 43, 28, -141, 2,102, 70, 34,164, 43,105, 0, 95,175,124, 57,216,223,231,235,236,237,180, 53,201, 93,114,234,133,113, 52,154, 2,116,103, -133,226,194,108, 97, 25, 83, 12,231, 17,210, 53,109,173,113, 96,197, 14,107, 85, 64, 96, 54,235,217, 17,252,224,139,117, 34,150, -125, 23,228,241,156, 35,182, 96, 7,143,105, 14,186,233,193,120,170, 49,109,206, 73, 13,126,254,129,118,101, 72, 10, 0,253,225, -249, 13,156, 22,130, 61, 75, 90,176, 71, 62,165, 89, 55, 97,180,101, 23,250, 44,136, 12,235,208,215,226, 25,147,156,120,123, 61, - 35,234,170,175,245, 62,146, 34,235, 7,206,108, 43,166,221,104, 93, 27, 9,176,119, 48,197, 4, 45,115,164, 77, 92,129, 52,206, -181,118,131, 7,148,132,246,186,251,242,240,222,125,121,125,121,237,116, 31,132,147,138, 53,141,187,124, 54, 57,191,253,246,132, -159,193, 40,192, 92, 11, 91, 44,246,157,239,131,231,176, 3, 80,159,131, 47, 69,184,148,165, 54, 10,225,108, 99,178,225,146,221, -138,216, 28,116,118,164, 81,207,235,231,200,243,204, 64, 31, 29, 53, 48,146, 62, 48, 13, 88,241, 2, 53,255,237,243, 51, 22,151, - 72,174,208, 13, 56, 62,216,225,136, 63,113, 30, 5, 84, 94,212,100,215,108,230,216,108,226,247,192, 12,212,171, 38,244, 52,157, - 21, 76,180, 11, 88, 43, 96,180, 50,121, 42, 18, 98, 50,133, 53, 40,124, 11,178,165, 12,253,209, 65,111,174,148,189,173,223,124, - 10,190, 69,172, 40,105,145, 15,163, 45, 54, 16, 14, 88, 11,189,135,212, 41,146,114,224,121,172, 0,109,181, 5,172,193,149, 22, -102, 79,244,188,124,124,140,243,105,203, 88, 26,228,136,177,120, 54, 14,140, 13, 41,239,241,204,138,142, 78, 21,190, 24,121,185, -153,218,185,169,148, 27,178, 91,197,245, 93,104,131, 81,163,241,144,166, 7,141,107, 17, 71,247,184, 38,240,100,200, 96,193, 78, - 14, 53, 4, 36,178,102,194,192,138, 93, 47, 54, 42,177, 74,201,132, 83, 50, 78, 20,102,229,248,176,166, 56,133, 31,152, 48,129, -109,156,134,116, 22,157,183,255,198, 84, 2,193, 51, 74, 77, 11, 2,223,121,228, 58,241,133,172, 9, 91,172,163,196,249, 6,248, -220, 81, 2,100, 87,243,179,114,158, 15,101,132,177,156, 22, 28, 16,143,121,118, 54, 48,148,172,231,100, 53, 82,112, 86,242,102, -162,104,174, 79, 9,229,245, 80, 1,130,195,218,156, 65,120, 98,237, 30, 6,163, 6, 37,190,241,215, 17,228,114, 14, 24,156,120, -182,247,180, 49,190,184,177,147,237,170, 48,110,123,183, 91,225, 23,126,121,177, 36,226,146, 14, 85,122, 83,119, 59, 13, 57,216, -109,177, 18, 28,205,178, 76, 44,160,173,128,230,241,176,108,174, 79,196, 34, 20,172,115, 43,229, 76,120, 1, 81, 17,104, 69, 32, -120,123,253,185,118, 27, 48,246, 88,240,154,212,202, 57,118,243, 64,238, 99,239, 21, 91,175,199, 4, 80, 43,228,104, 88,211, 27, -205, 24,172,240,179,168, 59, 30,216, 4, 1, 9, 34,163, 31,170, 94,170,146,154, 5,241, 9, 60,240, 72, 20,148, 24,116, 15, 56, - 19,120, 96,201, 18,166, 16,240, 42,174,148,107, 6, 10, 17,227, 31, 35,208,226,224,198, 73,142, 99,244, 48,140,182, 34, 39,182, - 83,205,144,122,100,227,117, 83,126, 75, 45, 83,209,221,134, 78,138, 55,112, 98, 44, 20,155,209, 34, 38,113, 9,213,243, 83,117, - 66,243,189,246, 29,184,198,138, 68,251,250,208,241,178,205, 57, 44, 54,164,185,211, 71,160,120, 10,247,206,161,117,169,110,170, -176,164,235,217,218,130,235,124,201,251,219,168,213,205, 57, 78,171,246,177,118, 59,101, 61,235,152,220,140, 70, 61,130,156,104, -176, 33, 38,111,137,160,135,207,132,179, 82,228, 56,189,194,125,252, 91,119,139, 16,231,150,171, 87, 55,228, 72,183,155, 77,185, -126, 61,101, 18,132, 5,241,124,145,227,248,112, 4, 3, 14,189, 25,133,146,169, 41, 78, 52, 56,153,244,173,118,167,244, 73, 94, - 80,123, 26, 29, 34, 65,115,250, 52, 98,251,129, 98,236,102,104,221, 29,174, 15, 4,105,208, 13,125,249,114, 65,234, 85,202,123, -198,207,162, 1, 8, 60,196,179, 86,200,228,156,127, 59,158, 81,124,118,154,131, 80,201,204, 64, 79, 27, 87,164,110,213, 32, 61, -113,123, 62, 71,207, 19, 83,124, 35, 88,109,101,231, 10, 93,240,194,217,205, 98, 21,129,253, 46, 24,231,232,166, 76, 90,217,220, -245,176,223,142,220,253, 1,117, 9, 6, 35, 25, 9, 92,233,224, 59,252, 69,226,158, 95, 32,144,157,232, 12, 65,178,111, 12,104, - 2,183,135, 55,246, 66,196, 93,183,159,154, 53,133, 25,211,205,152,172,228,201,197, 84,126,249,163, 67,153,172,180,243, 91, 39, - 44,254, 34,160,130,245,243,160,131, 35,189, 13, 83,158, 68,139,157,217,204,126, 38,214,134,192,143,120, 43,233,247,111,197, 7, -229, 83, 63,199,225, 78, 87,190,121,118,194,241, 59,146, 1,216, 61, 24,107,163, 72,203, 58,110, 49,138, 52,202,236, 38, 17, 93, - 9,251,195, 12, 1, 81, 88, 13, 46, 19, 99, 4,157, 15,134,148,122,174,233, 61,199,153,203,162,147, 79, 92, 76, 2,230,200,207, -146,226,167,119,155,159,141,222, 13, 64, 66, 99, 34,130,145,110, 46, 75, 28, 17,126,150, 93, 91, 97,108,196,125, 92, 83,189,207, - 49,136,220,116, 17,241, 9,211, 30, 88,143,162, 88, 78, 25, 13,144,164,206,228,138, 76, 92,197,130,231, 92,242,180, 0, 24,220, - 18,231,130,238, 29,251,234,123, 71, 71,134,135,152, 27, 40,173,219,110,107, 87,252, 82,191,183, 44, 59,205,150, 28,239,238,144, -237, 17,184,100,157, 2,125, 17,155,128, 57, 66,151,136,226, 57,155,243,183,103,138,197, 28, 88, 80,129, 9,146, 33,113, 97,154, -147,105, 52, 12,196,169,127, 86, 43,151,248,245,245, 90,141,211, 71, 9, 74,164,146,193,143, 33,220, 44,157,239,194, 82, 6,147, - 25,175, 59,228,185, 23,208,101,215, 6,239,120,239, 64, 11,128,146, 28,237,192,203, 92,187,108, 47,195, 24,137, 56, 77,111,134, - 92,214, 77,129,108, 50,132,115,129,149, 22, 18,183,169, 90, 6, 92,139, 20,181,216, 39, 94,138,120, 34,155,158,210,187, 32,107, - 13,202, 81, 43,207,231, 0,114,183, 0, 92, 83,214, 90, 98, 78, 67,193, 95,207,240, 1,218,176,225,146,196,132,158, 86,243, 33, -155, 79,208,164, 79,174, 39, 60,215, 56, 7,136,187,216,193, 35, 7, 93, 79,107,178, 87, 5, 75,195,176, 41, 40, 18,240,254, 58, -221, 38,241, 10,104, 0, 11,249,128, 5,222,100,162,247, 86,175,237, 13, 86,144,139, 21, 65,182,211,169, 94,215,213, 64, 6,218, - 48,128, 66,232,103,160,218,218,144,159,190,127,151,141,225, 88, 27,129, 76,106,226,128,209, 50,110,128,209,194,188,173,158, 53, -146, 0, 21,161,144, 64,157,129,131, 9,206,167, 40, 28,127, 75, 47, 99, 23,109, 53, 0, 35, 6,144,194, 27,103,196, 97,226, 11, -129,187,224, 1, 31,190,112, 97,178,165, 25,118, 96, 49, 71,181, 72, 52, 0,156,181,243,101,233,205, 55,124,176,144,115, 65,117, -107,151,178, 20, 3,225,200,223, 79,182,202, 93, 38,139,105,137, 29, 55, 98,145,216, 88,227,114,170, 21,148, 38,210,124,102,101, - 93,104,198, 70,149, 25,215,129,162,144, 73, 60, 19, 89, 72,182,158,211,241,118,148, 68, 74, 20, 65,120, 27,138, 39, 28,214,180, -123,154,135, 28, 73,117,234, 69,118,159, 80,177,194, 67, 28, 56, 52, 53,130,191,233, 73,196, 20,159,192,193,194, 78, 86, 76,107, -139, 43,130, 18, 1, 21, 17,171,178,210,218,232, 62, 1,246,143,203, 88,134, 27,171,208,113, 45,240, 38,231,161,185, 92, 45,230, -107, 62,224, 5, 4, 29, 13, 16,184,161, 72,100, 86, 73, 39,182,203,210, 3,230,107,254,170,107, 23, 89, 44,149,153, 48,134,227, -145, 1, 22,183,202, 97, 78, 21,208,115, 54,153,148,207,181,224,159,101,183, 42,230,129,238,155,160, 75,226, 92,220, 82,151, 49, -217,118,232,241, 22,212, 70, 37, 44,124, 99,108,244,154,181, 75,166,171,181,117,234,161, 43, 4,169, 20, 6,153,218,156,157, 47, -128,127, 2, 63,216,122,164,227,156,225,253, 96,220,201,207,229, 64, 84, 91, 25, 92,151,252,145,108, 80,140,148, 50, 69, 6, 3, - 58,171, 69, 57, 51, 86,208,159,213,213,128, 4, 16, 25,144,222,212,250,215,239,108, 87,235,212,125,175, 23,181, 96,172,149,236, -245,156,126, 59, 69,105,128, 36, 38, 80,173,160, 65, 41,239, 86, 1,107, 57,234,212,165,172, 21,115,183,221,210,226,106, 41,119, -238,220,149,207,255,240,148,201,167,175,193, 6,238,100,179,121,188,237, 76,184, 70, 32, 16, 80, 52, 40,193,229,171, 72,206,107, -226,192,129,192, 7, 96,101,128, 98, 4,129, 5,220,212,136, 99, 56, 61, 83, 90, 32, 32, 33,155, 10,163, 41,116, 1,248, 23, 80, -225,106,195, 78, 28, 96, 28, 76,157, 98,103,148,147,215,207, 64,149, 43,253, 23, 84,166,162,179,144, 68, 82, 71,209,176,116, 12, - 1, 92, 60, 80,201, 22, 78,242, 23,239,181,136,128, 23,218,148, 32,117,119, 67,242,165,148, 50, 40, 61,171,112, 59,190, 39, 30, -198,169,128,177, 72,208,167, 18,206,102,120, 20,209,145,226, 57, 77, 77, 99,196, 1, 0,215, 75,135,197,112,128,202,116,250,197, -169, 78, 20, 59,136,125,188, 53,254, 97, 35,237,214, 7,214,181,219,116,176,129, 49,179,222, 23,116, 43, 4,114,105,199,254,111, - 63,123, 33,239, 29, 86,229,253,187, 29,249,195,243, 27,238,119,193,139, 6,181, 7,207, 39, 64, 91, 48, 51,202,106,156,184, 25, -204,137,199,201,102,141,130, 5,196,241,108,216,147, 82,173,173,247,171, 40, 59,221, 29,162,235, 47,175,175, 9,122, 2,117, 20, - 5, 26,130, 44,148,210,214,238,124,235,119,179,180,198,185,192, 26,228,188,151,144, 74,151,207,216, 78,255,186,191,148,111,130, -172,220,223,109,243, 92, 25,157, 50,100,119,139, 2,210,174, 81, 66, 64, 87,137, 22,154,182, 90, 24,143,214, 44,158,120,159,215, - 17, 39,109,155,208,237,178,161,244,185, 10,183, 46,132,224,109, 71,137,237,184, 87, 78,181,209,212, 29, 99,118,243, 57,174, 74, -241,108, 22,201,251,198,212, 40, 91,200, 56, 74, 99,204, 73,197,130, 56,153,133,254,154,203,254,206,158, 12, 52, 94, 54, 53, 81, -123,155,185,180, 43,192,224,140, 89,228,238,107, 2,253, 73,217, 24, 51,136,131,136, 61, 88,239, 1,204, 92,175,150,121,174,233, -126, 86, 47, 50, 89, 46, 92, 17,180,219, 42, 82, 22, 22,211, 47,124, 47, 0,140, 65,198,128,138,147, 89,200,184,153,207, 91,241, -132, 70, 1, 19,226,149,254,250,237,151,125,121,125,113,102,241, 61, 73, 39,177, 1,155,153,209,116, 33, 71,221,154,158,127,159, -171,168,151,151,115,105,180, 54,242,214,189,174,100,181,185,193,217, 5,206, 99,179,201,188, 1,163,234,119,150, 74, 9, 19, 43, -129,148,117, 83, 58,164, 17,217,196,214, 6, 17,139,168, 57,147,191,230,111,141, 73, 43, 62,123,112,189, 36,232, 87, 27, 29,240, -243, 25,151,240, 12, 98,218,198, 41,155,239,228,164,109,234,100,190, 6, 9, 49, 57,120,255, 0,145,151, 75,218, 32,101, 55,156, - 86,224, 92, 63,126,254,130,159,167,244,160, 45,251, 13,159, 42,168,104,136, 64,229, 3, 72,183,187,211,214, 98,115,194,231, 58, -227, 71,156,220, 77,103, 80, 90, 13,228,250, 6,218,242, 53,253, 44, 43,105, 53,118,164,166,159,119,120,209,211,164,159,149,167, -167,125, 45,160, 67,121,248,255,114,245,166, 61,150,156, 89,122,216,137,237,238, 75,238, 89, 89, 43,139, 69, 54,217,139,186,135, - 99,201,146,109, 9,146,160, 15,134, 62,250, 15,248,183,248, 63, 25, 48, 96, 88, 48,100, 96, 6,150,212,203, 76,207,116,179,185, - 21,139, 85,149,149,123,222,125,143,205,231,121,206,137,200, 26,247,128,195, 98, 86,230,205,123, 35,222, 56,235,179,188,120, 42, - 47,158,157, 72,188, 35,106,189,193, 32, 1,201,214,200,165, 31,177,151,141,189,139,203, 93,170,173,246, 96, 70,159,234,156, 99, - 36,217,216, 57,181,133,143,134, 82,167,186, 80, 6,144,159, 58,103, 18,177, 66,192,212,148,216, 9, 34,233, 67, 54, 52, 10,107, - 58, 11, 14, 5,132, 88,110,181,123,133, 8, 77,169,213,237,155,171, 57, 65, 26,160,172, 80,154,210,119,250, 60,232,238, 75, 76, - 5,168,210,249,183,250, 94,208,149, 53,186, 7,178,141,244, 64, 53,240,112,106, 5, 40, 17, 71,231, 91, 31,129,138, 3,198, 10, -231,130,150, 62, 89, 48,197,173,156, 35, 37,140,194,146,194,144,227,175, 78,247,100,113, 62,227, 13,125,114,114, 32,135,154,192, - 83,242, 40,141,115,138,239,195, 67, 31,148,166,170,132, 25, 8,138, 28,136,240, 96,116,133,199,170, 65,126, 41,156,134,128,154, -172,236, 68,173, 91, 69, 0,106, 65,114, 81,191,115,157, 19, 74,225,182,162,122,243,225, 91,168, 29,226, 50,181,215,103, 48,118, - 30, 50,186,117,200, 37, 46, 49,162,131, 95, 57,168, 30, 90,233,210,133,136,251, 57,179,248, 3,250,191, 2, 36, 33,185,132, 46, - 55,154, 87,110, 93,164,235, 45, 77, 38,178,116,145,152, 64,106, 78, 55,129, 75, 72,160, 88,174,137,119,209,187,173,239,213, 67, - 71,105, 26, 98,180,178, 68, 53, 0, 85,219, 30, 80, 31,243,226, 28, 65, 36, 4,129,105,137, 14,168,209,240,189,124,240,209,110, - 40, 35,245, 3,247, 51,230, 84,197, 10,181,106, 95,140, 17, 99, 19,232,104,140,248, 83, 11,122, 8,182, 40, 40, 90,238,170, 84, - 82, 86, 51,228, 14, 20, 73,169, 73,135,188, 53,167, 35,237,118,201, 74, 24,215,114, 52,158,202,253,197,157, 38,243,142,188,122, -124, 32,211,251, 59,114,153, 65,217,124,245,226,153, 44,180, 96,128,253, 41, 42,234,183,111,111, 72, 83, 60,222,239,201, 45, 53, -154, 31, 76, 73,240,121, 33,106, 81,164,123, 28,161,127,255,126,172,137,127,230,150,184, 38,190,129,103,129,215,215,249,222, 29, - 45,190,112,241,209,141,115,154,160,137, 30,106, 97,177, 83, 64, 49,150, 29,148, 29, 6, 19,188, 6, 2, 4, 21,170,124,188, 13, - 65, 23, 3, 79,101, 12, 38, 60, 71,177,143,253, 0,160,210,128, 5, 30, 53,166, 72,152, 38,160, 19,220, 34,209,186, 5,177,173, - 73,204, 29, 14,247, 14, 0,171, 66,131, 59, 21,197, 34, 43,254,114, 87,165, 99,194,117,243,139, 93,102, 78,128,199, 61, 19,103, - 41, 93,240, 51,247, 34,138, 54,145, 78,107, 44, 93,107,158,171, 14,160,166,161, 38,169,201, 50,202,140,250, 87,134,230,116, 22, -137,157,195,202, 92,188,160, 21,174,121,186, 67, 99, 1,207, 98, 43,106,139,113, 73, 34,185,154,103,242,111, 94,244,184,103,207, -151, 59, 77,204, 11,118,142,227,247, 55, 28, 79,246, 58,134, 76,222,215,164,115, 59,209,251,190, 92,112,202,128, 81, 61, 34,200, -118, 57, 99, 17,183,205, 99,249,252,213, 43,238, 64, 25,100,123, 37, 71,171,141, 4,204,158,136,142,147,232,206, 64, 39, 68,167, -188,166,225,146, 21,199,157, 78,139, 83,149,210, 87, 65, 71,253,166,141,170,233, 74,153,213,147, 20, 98,137,202,140, 93, 33, 64, -135,248,152, 61,141, 27, 29,200,233, 82,162, 84,187,176,109,106,130, 51, 26, 95,102,208,204, 7,247,188,145, 51,102,112, 26,165, -103, 29,133,146,169,251,153,113, 72,238,236, 35,250, 32,136,120, 82, 15,120, 6, 50,122, 60,236, 76,118, 25,103, 36, 35, 68,214, -108, 89,245,154, 66, 1, 13,227,248, 97,175, 43,167, 71,135,122,109, 51,249,217,231, 63,151,255,246,151, 31,169, 64,247,228,228, -137, 22, 58, 63,201,127,251,211, 55, 6,112,135, 38, 8, 98, 76,105,244, 70, 28,139,151, 39,123,230,169,238,156,117,196,144, 55, -151,134,225,168,146, 43, 37, 78,211,146, 56, 11,112,210,177,147,223, 82,188, 74,216,188,224, 25,253,236,147, 47,245, 28,232,107, -172, 70, 18,182, 58,198,219,231, 53,109, 83, 72,167, 21, 97, 37,188, 39,195,110, 66,139, 82,128, 50, 55,235,165,252,239,255,247, -239,220,140, 74,152,119,182,219,140,160,187,141,107,241,179,136,212,223, 53, 26,207, 89,172,131,186,219,108,132,116,111, 3,202, -125,167,241, 0,197, 7,214,129,184, 87,179,249,138,133, 8,168,139, 4, 0, 19,151,148,217,138,204,139, 76,107, 82, 75, 95, 36, -139,209,229, 62,214, 28,192, 89,142, 90,204,127,160,163,174, 54, 70,125, 70,211, 0,161, 32, 20,168,185,158,193,103,199, 45, 27, -253,195, 93,111, 52, 49,163,167,195,158, 92, 93,221, 83,193, 79,124,146,133,236,242,252,180, 41,119, 51,205, 99,122,209,198,218, -141, 15,122,199,250, 53,196,176, 57,159,251,183, 23, 83, 22,244,143,142, 51, 60, 39, 49,107, 26, 42,114,121, 96,134,235, 77,150, - 89, 39,105,168, 89,203,234,150, 48,163, 90,224,163,112,201, 88,122,192, 74,225, 50,136,110, 16,225,213,119,104, 66,156,210,136, -197,253,177,141,139,201, 11,215,178, 81,107,224, 58,212, 8,186,224,122, 95,141, 22,178, 7,247, 25, 32, 25,239,167,236,186, 26, -218,149, 33,240, 64,219,182,146, 48, 68, 18,192,206,240, 96,208,208,174, 40,101,128, 89,109, 66, 89,234, 5,123,249,244,140,191, - 15,213, 91,179, 61,148,199,167,129,220,142,166,236, 62,182,105,101, 37, 27,200,139,211, 33, 95, 23,238, 61, 53,202, 31,187, 66, -125,195,199,131, 54,249,175,236,194, 32,148,160,127,241,135,159, 38,124,207,232, 30, 2,223, 91, 98, 45, 81, 73, 42,226,147,193, - 16, 5,113, 60,103, 25, 97, 99, 70,116, 17, 8, 20, 41,249,171,133, 59,153,149, 53,213, 5, 62,244,214,205, 89, 64, 78, 29,253, -138,221, 32,167, 21,161, 85,203,182,223,204,157,175,106,129,118,186, 46,100,190,179, 64,139,177, 33,170, 79,136, 36, 0,161, 9, -154, 76,228,251, 98, 36,114,152, 92,240,193, 39, 32,241, 65,222,213, 18,185, 81,151,240,174, 72, 75, 11, 13, 29,109,210,175, 15, - 86,170,214,241,123, 39, 69,113, 13, 87,136, 35, 80, 4, 91,127,239, 6, 99, 83,148, 74, 60,129,155, 11, 90,204,157,219,218,187, - 12, 19,183, 49,106, 14, 84,229, 0,136,130,199,122, 27,163,230,188,160,196, 37, 84,155,250,189, 1,223, 91,197,191, 46,125, 31, -207, 29,172,211,128,118, 89, 86,143, 36, 35,167,229, 85, 52, 31,120, 50,175, 40, 35, 25,202,223,125,119, 37,191,126,165,213,174, - 6,100, 4,214,255,244,247, 63,201,239,126,184,149,159,107, 96, 63,191,221, 74,103,119,195,209, 39, 44, 83, 49,218,108,105, 55, -247,211, 79,111, 36,229,126, 50, 35,122,253, 94, 43,234,181, 22,193,227,121, 78,173,234, 14,169,104, 13, 6,186,181,118, 58, 64, - 15, 35,240,194, 10, 18,221,122, 24,197,142, 76,214,206,101,208, 55, 49, 19,119, 59, 35,127, 53, 55,233, 95,232,188,163,208,189, -155, 78, 13,229,143,209,156,118,240,248, 58,232,117,247,232, 86,105,253,106,200,241,109,106, 90,240,116,150, 34,215, 62,151,102, - 97,193,151,158, 3,149,101,170, 94,230,133, 6,195,134, 53, 65, 28,197,195, 8, 5,207, 51,180, 33, 0,152,196,185, 71, 23,117, - 61,221,176,192,132,170, 31,206, 56, 18, 20,198,144, 16,107,170, 4, 99, 32,126,131,137,216, 40, 48,124, 3, 70,154,235,170,139, -201, 74, 95,133, 84, 50,179,214,201, 24,150,198,185,243,120, 77,200, 33, 6, 15, 30,239,153, 3,147, 66, 79,242, 59, 34,145, 99, - 2,200, 82, 38,199,134,221,103,253,108, 3, 45,154,222,142, 50,249, 95,134,134,183,217, 17,225,110,231, 25,102, 79, 64,124,195, - 24, 3, 99,236,110,183,197,130,134, 19,166,194, 88, 17,161,190, 38,246,206, 2, 95, 4,189, 70, 40, 60,127,245,249, 75,153, 76, - 38,178,131,169, 7,138, 19,231,204,179, 32, 69, 98,228, 20, 68, 88, 56, 26,102, 32,150,195, 97,143,187,107,210,204, 48, 93,137, -140,206, 5,188, 5,215, 33, 16, 16,210, 4,205,231, 42, 55,109,248,194, 39,138, 80, 31,227,202, 50, 10,141,250, 27,154,254,185, -121,202,219, 42,105,163, 93,230,106, 49,229, 56,154,190, 17,206, 6, 68,103, 87, 56,134, 8, 56,139,194,169,185,120, 38,184,146, -162, 67, 88, 66,208, 95,165,154, 72, 62,251, 6,236,138, 45, 19,251, 90,223, 23,164,114,159,106, 1,244,225,250,134,210,185, 17, - 93,216,154, 76,102, 16,228,145,226,177, 38,225, 55,154, 80,150, 94,204,155,186, 99,225,130, 80, 63, 92,220,154,107,103,173,204, -104,137,205, 86,110, 22, 71, 13,111, 99,137, 16,184,133, 84, 11, 13, 20,104,208, 34,137,108, 92,195,132, 14,176,219,111,190,252, -140, 66, 56, 0,167,246,124, 2,138,114, 15,160,109, 60, 23,208,180,128, 30, 58,242, 17,227,162,158,193,223,127,253,150, 9, 81, -156, 54,140, 56,105, 76,187, 53,241, 12,248, 25, 60, 75, 0,161,165,219,146,210,181,196, 40, 20, 33, 63, 43, 27, 10,178,102,182, - 90,160,105,193,143, 66,173, 97,247, 26,194, 93, 77,125, 14, 74,183, 21,166,109,183, 99,134,122,237,164, 6,108, 83, 50, 54,182, - 85, 36, 48, 3,153, 79, 55, 83, 22,219, 49,155, 78,228,141,123,109, 32,118,233, 15, 50, 95, 60,210,216,115,172, 57, 14,247,193, - 20, 63,111,239,103, 82,237, 49,108, 82,184,113,115, 35,232, 86, 52,228,116, 88,202,197,164,208,216, 96,224,230,179,163, 83,105, -134, 59, 78,124,214,250,144,190, 62,159,202,104,194,213,128,113, 57,197, 65, 22, 8,130, 6, 22, 19,186, 21, 33, 1, 36,212,158, -137,235,100, 82, 41, 8,113,164,238,230, 28,161,239,168,237,107,230,186,134, 96,129,221,117, 76,250,133,240,193,163,188,168, 87, -226, 81, 96,133, 66,189,107, 69,231,162, 15,227,177, 86,106,157,134,118,199,250,139,177, 75,135,158, 48, 42, 88,160,238, 81, 17, - 66,185,206,204, 4, 52,249,232,131, 68,173,233, 34, 96,225,208,219,107, 75,217, 62,229,104, 25, 32, 52, 28,138,133, 86,180, 61, -125,104,250,221,166,204, 96, 50, 66, 69,159,152, 59,238,175, 62, 61, 33,231,254,106,190,165, 9, 3, 80,251,240,134, 71,124,216, -235,119, 37, 2,232, 68,127,217,235, 55,151, 12, 20, 8,202,216,163,231,142,112, 36,181, 12, 35,174,118,117, 0, 75,238, 32, 41, -191,138,253,142, 87,119, 38, 90,227,118, 77,110,142,128, 74,222, 64, 18, 86,212, 84, 73,137,221,121,110,160,194,202, 11,155,197, - 12, 42, 87,234,187, 4,220,109, 45,244,107,171, 34,150,233, 54,115,129, 18,219,169, 97,133,144,101,121,173,207, 30,227,129,143, - 19, 71, 77, 7, 46,225, 90,214,157, 90,165,209, 46,254,187,170,196,153, 17, 12,105, 83, 16, 28,214, 32, 15,106,250, 20,195, 83, - 97,180, 53, 78,112,228, 1,236, 68, 94,184,171,170, 97, 84,184,173, 12, 81, 40, 51,107, 35, 59, 34,182, 25,128, 18, 23,232, 40, -124,119, 95, 80,186,211,120,242,160,145,180, 89,205,227,123, 49,206,196,123,133,240, 3, 58, 93,152,213,228, 44, 20,108,151,156, -126,228,228,134,117,131, 73,162,134,156, 84, 72,105,180, 57, 32,103,255,207,255,250, 45, 31,246, 95,189,108,202,187,235,145,188, -131, 8, 17,130,156, 38,165,203,187,169, 60,214,162,172,215, 31,202,124, 59, 54,207,249, 8,197,212, 82, 26,195, 33, 31,238,237, -214,244, 13,238,167,154, 20, 34,208,118, 2,114,176, 97, 39, 73, 94, 55,172,108, 51,163, 99,157, 29,238, 51,217,183,156,115, 78, -227, 22, 10,200,236,216,113, 32, 81, 96,111,142,194, 18,207, 15,237, 90,251, 93, 22,100,176, 83,196,184, 29, 35,192, 28,221, 30, - 70,231, 94,156,129, 66,133, 68,128, 4,128, 49,255,106,187,115,249, 91,128,124,130, 90, 81,207,170,125, 75,196, 0,181,161,238, -108,106, 48,133, 67,225, 18, 69, 18,192, 65,212,215,213,123,209,104, 49,112, 10, 16,246,137,211, 68, 11, 23,133,114,168,157, 33, -183, 29,104, 26, 4,220,103, 18, 17, 76, 41, 93,179, 24,165,131, 33,181, 79, 3, 82,209, 2,151,160,173,236, 71, 75, 71,184,187, -137,179, 5,224,178,116, 32,159, 1, 23, 93,239,216,148,246,124, 77,195, 29, 60, 2,187,254,243,244, 81,155,157,203,155,243,123, -217,239,128,237,209,160, 40, 16,236,154,145,180, 48,246, 6, 74,248,237,245,148,190, 14,160, 1, 2, 45, 62, 70, 39,230,192,216, - 45, 89, 23, 5, 85, 32, 39, 26,248, 17, 7,146,210,212, 26,151, 24, 13,239, 92,167,127,107,157, 40,167,136, 4,188, 13,121, 47, -177,118, 0, 38, 9,248,150,166,163,245,241, 76,204,215,150, 52, 75, 23, 6,232,208,168,167,237,133,181,117,213,181, 65, 74,104, -105,141, 44,132,220,146, 27,198,255,232, 40, 81,204, 82,250, 85,239, 11,232,119,166, 41,150,179,224, 42,252, 57, 52, 63,118,139, -187,152,180,128,113,130,248, 88,144,167,223,192, 0,218,176, 41,136, 71, 88,187,233,107,175, 54,115, 62, 39, 48, 50,193, 57,254, -246,221, 7, 9, 50,237, 88,181,224,223,235, 64,222,181,207, 17,252,235, 55,175,217, 16,189,122,254, 76, 86,223,253,192,231, 17, -172, 27, 36,117,238,255, 51,155,168,221, 77, 23,198, 95, 7,248,185,233,147, 83, 49,138, 36, 87,139, 97,131, 73, 20,212, 67, 60, -151,237,106,133, 84,152,144, 15,242,195,254,209,158,222,195,196,214,108, 97,131,157, 50,214,119,152, 46, 66,124,167,244, 51,133, -194, 31,160,176,179,147, 83,106,159,252,242,243,103, 50,154,239,228,234,126, 98,184, 47, 76, 8, 60,223, 64,184, 11,147,173,110, -210,150, 37, 87,107,214,116,161,121, 74,195,128,180, 55,116,223,104,124,128,163,233, 52, 7,204, 27, 13, 78,244,118, 60,251, 40, -224, 81, 40,195, 27,189,210, 80,232,107,254, 0, 94, 6, 96,241,210, 89, 91, 69,209,224,179,136, 9,218,116,189,227, 20, 0,205, - 5, 39,182, 96,232,132, 77,190, 38,226, 37,238,253, 79,231, 23,244,132,248,171,151,208, 2, 41,217,108,204, 87,107, 45, 42, 67, - 22,161,112, 40,157,122, 62, 54, 59,215,146,177,225,233, 65, 32, 55, 55, 43,125,207,251, 50,154,109,228,104,239,169, 4,227,119, -156,120, 2,231,160, 89, 78, 98, 84, 0,168, 40,113,192, 3, 19, 33,230,168, 24, 20,139,163, 97,167,182, 12,205,139, 7,201,201, -202,214,145,136, 88,215,184, 46,188,107,101,183, 22, 85,244,160,178,222,201, 25,146, 60,245, 4,103, 35,135,140,187, 42,169,209, -231, 52,121,225,232, 58,164, 65, 2,170,188, 78, 35,244, 20, 98, 10, 69,160,165,132, 46,230,130,135, 6, 32, 12,116,181, 39,123, -118,128, 80,157, 74, 43,102, 59,210,103,145, 80, 58,165,164,144,253,179, 35, 75,204,168,230,225, 20,215,109, 26,183, 94, 51,229, - 95,125,118,194,106,154,149, 17, 68,251,193,117,198,248, 74,204,206, 19, 35, 35, 8,242, 0,232, 2, 63, 38, 9,163,127,226, 23, - 30,110,179, 26, 45,110,160,163,130, 64, 29,155, 98,216,168,138,188,241,194,170, 87,114,237,221, 57,206,146,108, 97, 93,109,108, - 9, 9, 63,191,118, 39,172, 32, 46,153, 36, 66,239, 72, 97,203, 55, 7,202, 58,106,218, 56,177,176,241, 14,130, 4, 58, 91,240, - 38,171, 93, 52, 18, 32,173, 23, 27,182,187, 45, 89,117, 69,110,167, 26, 24,135, 87, 3, 8,139, 53, 87, 66,195,231, 49, 46,172, - 43,180, 33, 64,165, 22,196,185,123,166, 8, 79, 86,139,142, 66, 73, 77,124, 39, 91, 97, 38, 76,135,125,199, 63,227, 76,209, 57, -170, 48,247,179, 74, 78, 21,157, 48, 43,104,116, 54, 12,102, 6,114,139,221, 60,136,129,167,217, 50, 31,250,205,214,193, 53, 67, -227,124,163,115, 17, 71,128, 55,155, 60, 91, 72, 6, 64,202, 47,214, 72,226, 45,126,230, 20,136,242,204,126,127,165,122, 7,148, -232, 31,190,121, 71,149,177, 15, 55, 19,121,119, 53, 38, 24,110,181, 94,146,194,212, 78,186,146,104, 65,251,179,231, 45, 98, 19, -222, 92,220,115,186, 4, 80,216,253,100,101,202,132,120,191, 96, 31,108, 77, 61, 15,215,110, 91, 66,240, 40,228, 26,128,166, 50, -122,221,247, 14,134, 44, 46,241,126, 65,119, 2,181,111,189,219,112, 47,216,218, 5, 44, 22,160, 42, 87, 77, 93, 54,233,198,215, - 73,134,121, 64,251,252,248,120,224,118,157, 13,125, 47, 55,188,198,247,211,185,252,252,147,167,178, 63,140,249,153,110,180,195, - 4, 66, 28,222, 10, 8, 4,192,175,228, 94,188,149, 13,116, 37, 45,189, 54, 75, 13,220,218,197, 14,204, 90, 55,194,200, 87,239, - 43, 38, 16,205,200,112, 36,224,235, 86, 3, 36,179,154, 20,231, 26,219,154,136, 42,105,149, 74, 59, 49, 45, 37, 39, 85, 68,220, -187,240, 84, 88, 26,155,161, 42, 18, 43,241, 37,128,197,136, 55, 0,100, 10,157,139, 41, 87, 27, 82, 61,207, 30,208,221,254,255, -209, 80,160, 0,194,115,143,194, 5,159,139,142,117,154, 24, 33, 16, 3, 36,254,111,191,191,151, 95, 60,237,201,165,199, 39, 88, - 55, 35,246, 96,103,138, 87,195,250, 2, 93, 47,186,105, 4,115,116, 84, 8,158,143,251,135, 92, 1,252,248,238,173, 28, 29, 63, - 33,255,124,166,239,121,111,111, 72,150,203, 48,214,228,189,159, 48,144,239, 56,254,207, 57,181,192,212, 11, 93, 20, 10, 27,136, -126,224,189, 99, 2,178,195, 61,239,152, 34, 35,232,160,152, 22,132,252,125, 54, 62,167,186, 26,227, 87,224,234,136, 54,253, 66, - 33, 15,124, 13,186,252,208,129,186,187,118,155,198, 33, 81, 84, 57,196, 65,165,174,237,238,126,230,222, 70,217,236,157, 97, 92, - 50,198, 97,187, 47,120, 31, 88, 35,224, 10,130,219, 60, 24,236,177, 24,164, 20,183, 62, 39, 24,235,163,160,228,212,212, 53, 61, -226, 48, 33, 43, 8,130, 48, 81,164,215,118, 49,209,124, 16,201,187,243,115,249,213,207,247,229,217,147, 23, 4,142,181, 8, 42, - 11, 9,116, 70,220,197,202, 0,103,246,237,205,148,187, 94,116,214, 7,189,150, 43, 20,218,164, 7,177, 28, 13, 33, 18,232,254, -160, 77,221, 0,128, 9,169,135,145, 27,162,158, 29,241,202,118,217,179,197, 74,174,111, 87,242,195,251,239, 89, 4,150, 44,210, - 17,155,244,218,181, 91,110,175, 92,200,207, 95, 82,241,132, 20,177,255,241,215,159,200,239,255,252,142,135, 7, 30, 28,152,102, - 18,244, 73,229,200,146,247,163,215,107,153,241, 81, 94,210,199, 4,184, 11,116,218,192, 78, 32, 66,127,246,108, 95,230,187,150, -139,117,133,114,121,125, 35,231, 90, 16,246,245,231,110,119,107,121,113,186, 71,169,238,203,209,154,158,229,157,184,164,105, 24, -166,116,200,119,104, 24, 81, 48,226,254, 97, 77, 12,243,129,201,116,172,241,119,200,162, 14,247,133, 94, 16,100, 17,164,124, 47, -223,254,244, 78,243,201, 75,121,126,144,106, 19,209, 37, 29, 22,128,105, 19, 29, 50, 16, 95, 4, 17,181,141, 97, 98,118,243, 53, -243,208,171,199,109,234, 43, 52,123, 29, 89,193,208,108,240, 84,138,209,159,157, 22,172,255,244,219, 6,130, 59, 26,116,233, 4, - 3, 64,194,249,237,146, 9,172,225,182,166, 69,109,115,233, 18,163,174,174,246,192, 87, 46,107,165,163,210, 29,219,108,108, 31, -212,106, 81,245, 94,174, 48, 30, 48,119,110, 14,172, 50,100,161,209, 52, 90, 90,165,133,253, 6, 43,248,210, 59, 72, 92, 16, 19, - 63,136,101,180, 72,229,248,160, 75, 11, 63, 36, 19,173, 1,165,223, 52,208, 19,128, 66, 56, 4, 24, 91,147, 83, 88, 66,190,115, -103,198, 10, 26,164, 3,252, 46, 4, 75,125, 56, 90,145,153,196,112,159, 12,159,227,209, 84, 59,218,140, 84, 56, 0,192,176,135, - 77,177,150,128,240, 73, 28,242,192, 2,153,137, 67,221,208,191, 67, 85, 29,186,184, 9,198, 70,181, 98,148, 24,104,173, 44, 35, - 15,138, 5, 21,182,104,214,224,244, 33, 36, 7,113, 10,159, 25,140,184, 96,139,107,124, 3,157,218,242,215,142, 35,219,117, 99, - 98, 1, 16,213, 84,187,251,109,168,221,171,126, 29, 85, 57,198,166,248,205, 8,114, 0,237, 25,230, 32, 97, 66,135, 66, 22,174, - 57,146,201,142, 65, 32,119, 49,146,144, 85,114, 69,189, 17,169, 36, 82, 75,202,188,150,185,141,140, 48, 30,196,251,233, 55,237, -126, 0, 73,143,100,142,142, 56,243,100, 44, 78,161,194, 24,157, 98, 49, 31, 57,176, 85, 86,170, 68,193,122,226,173, 76, 84, 32, - 16,211,160, 91,156,141,111, 11,231,146,227,194,180,162, 38, 71,229, 89,190,178,206, 95,239,101,151,212,159,200,167, 24, 57,119, -228,125, 77,240, 24,133, 46,224,196,228,122,225,149, 56, 13,198,200,116,217,154,167,182, 86,112, 64, 22, 36, 61, 3,125,223, 31, -110,231,212, 30,128, 38,244,129,118,224, 48,107,192,131,132,113,245, 20,218, 23,177, 94,171, 86,168, 73,124,202,221, 99, 11,163, -203,157, 81,248,224,128,133,103, 1,251,218,197,120,237,226, 30,166, 71, 15,233, 99, 88, 68, 98,148,190,212,115,118, 59,157,201, -139,147, 3,249,241,242,158, 10,118,112,207,217, 2,208,147, 54,140,206,153,153,217,197, 82,207, 25,238, 1, 10, 83, 24, 70,160, - 16,130, 90,148,185, 96,161, 0,214,224,163,127,247, 2,222,209, 55,119, 28, 61,254,229,237,133,188,122,114, 34, 63,251,228, 76, -228,167,146,138,121, 40,186, 80,160, 32,129,226, 30,182,121, 54,109, 71, 92,169,137, 97,135,221,238, 1, 56,182,150, 22,168,148, -176,186,212,196,135,117, 4, 58, 34,170,115,101,152,178,108,121, 86, 67,159, 64, 1,241, 78,119, 63,132,129,192, 18,123,133,158, - 55,197, 64, 83, 25, 12, 49,124, 41,204,146,182,210,103,224,244, 5, 90,224,161, 49, 92, 24, 81,130, 7, 53,250,130,158,211, 62, -234, 46,139, 90,251, 30,255,152,138, 23,152, 38, 38,173,137,241,242, 68,239,249,163,227, 99,249,233,126, 39,191,121, 17,152,136, -139,152,154, 29, 58,114,116,142, 56,206, 79, 79,135,114, 51, 90,242, 57,220,223, 51,128,228,252,221, 53,193, 89,112,220,203,178, -153,220,220, 94,201,193,225,153, 22,114, 61,233,104, 16,199,234,138,214,153,228, 38, 55,109, 42,232,227, 86, 76,222, 70,179,181, - 77,180,244,235,143,246,160,222,216,115,186,165, 57,172, 1,236,134,102, 8, 74, 97,102, 40,149,106, 17,102,210,173, 41,214, 97, -113, 76,250, 29, 58, 55, 36, 49, 76,126, 54, 59, 19,163,161, 73,137,158, 33, 20,130,161,131,119, 73,253, 2, 87,222, 69,160, 50, - 41,125, 10, 83,212,107, 68, 50,146, 28, 88,138,215,192,151,247, 57, 90, 14,233, 70,136,142,247,226,110,204,107,108,128,199,146, -207, 32, 98,236,233,193, 64,222, 93, 94,105,156,232, 83, 35, 3, 83, 27,154, 6,233,223,221,220,156,203,201,201, 83,217,106, 81, -248, 55,191,255,218,252,238, 51,211, 80, 0, 78, 0, 19,119, 82,243,180,120,133, 76,235,229,104,198,164,143,107,128,142,158,205, -136,235, 83,112, 58,151,226,191, 81,148,161,105,179,255, 94,232,231, 69,140,193,179,140,228,248,228,233,151,250,140, 44,232,234, -135,107,166,209,220, 76, 95,144,164,193,238,208,115,116, 55, 94,200, 45,228,188,143, 23, 44,192,143,246, 90,188, 94, 89, 22, 9, -224, 41,184,134,120, 6, 32, 97,142, 88,222,235, 53,181,155,221,200, 54,200, 9,196,158,107, 28, 61,212,159, 65,129, 3,166, 4, -252, 22,110,225,127,161,207,222, 39, 79,246,228,228,104, 32, 23, 90,172, 96, 50,215,109,196, 68,150,179, 48,210,247,115, 51, 89, -203,176, 21,146,137,129,179,139, 38, 11,247, 3,236,177,121,110, 77, 80,204, 85, 68, 70,244, 62,206, 43, 70,228,184, 8,116,175, -212,251,118,116,176,207,179,254,253,185, 54, 12,193,190,188,136,215, 52,123, 25, 14, 90, 50,154,216,249,138, 19,123,174,232,130, - 8,164, 59, 56,236,204,153,161,236,247,180,104,160,106,170,222, 11, 45,118,158,124,250, 11,145, 55,223,200,120,169, 63,135, 68, - 9, 37, 27,140,201, 90, 45,204,238, 7, 12,158,179,197,206,248,114,121, 81,143,103, 11, 7,162, 25,218, 82,106, 73,202,176, 18, - 6, 41, 77,144, 70, 28,196,198, 19,233, 59,119,147, 32, 48,109,118,140, 0, 63, 59, 27,202,253, 61,192, 47, 59, 57, 24,180, 9, - 54,107, 17,226, 31, 17, 89,140, 17,219,219,169, 38,162,184, 33, 47,158, 28,200, 78, 35,197,190, 6,246,102,127, 32, 95, 60, 30, -202, 73,191,193,177,236,118,181,226,200,124, 85, 88,160,233,234, 7,196,232, 9,157, 14,118, 41,115, 40,188, 33, 72,233, 67,146, -233, 69, 0,154,120,208, 52, 17, 1,242, 78, 17,140, 1,174, 10,205,128, 32,119,185, 69,113,203, 80, 72, 74,162,150,217,211,130, - 97,167,209,254, 87, 47,246,229, 31,207,151,124, 0,113,112,241, 48,205,181,130, 26, 12,250, 76,188,184,233,168,216,154,238,222, -133,138, 98, 73,237,246,192,124,149, 3,211,240, 69, 66,229, 56, 20, 9, 54,119,139,208,208,162,220,181,118, 10,179,117,226, 96, -161,130, 15, 9,168, 94, 1,198,163,154,208, 33,164,128, 98,195, 36, 18,211, 7,199,177,192, 14,193, 80,175, 17, 11,133,122, 63, - 41,236,144,243,220,187,235, 32,228, 67, 91,184, 3, 30,186, 72,142, 35, 49, 14,135, 24, 10,128,102, 46, 20,130,175, 3,184, 5, - 64, 17,208,218, 27,237,132,147,174, 77,119,170, 32, 54, 76,140,234,132,202, 24, 15, 38, 80,155, 21, 45,174, 25,218,239,173, 86, - 60, 85,241,131,135,135,224,146,157,141,212,147,102, 82, 99, 49,240, 45,144,113, 21,183,105,173, 58,127,252, 5,222,107,133,210, - 6, 85, 9,197,204,100, 58,225,239,174,146, 11, 10,130,165,235,212,103,206,153, 53,116,125,204,194, 7, 15, 57,254,119, 53, 30, -179,251,125,116,212,231, 12,109, 71, 19, 32,163,250, 13,122, 9, 63, 71,166,193, 37,211, 98,110,239,176, 79,254,118,186,217,114, -220,126, 9, 53,172,251, 29, 59, 16,186, 98, 81,184, 39,231,148, 7,149, 54,248,183,216, 1,227,253,191,185,188, 33,205, 17, 5, -215,209,112,143,184, 7, 51,167, 49,110, 52,174,123, 88, 26, 72,148,188, 91,174,136,218,236,254,167, 26,161,126,252,112, 33,123, -253,158, 25, 74,232,249,238,193, 13,109,177, 99,209,245,221, 59,160,176, 71, 60, 11, 13,202,227,106,145,147,175, 57,170, 35, 59, -130,120, 9, 3,132,226, 44,246, 6, 29, 83, 12, 68,119, 23,195, 62, 51,151, 67,237,228, 71,115,163,215,133,153,117,206, 0,177, -198,185, 21,243,248,126, 27,155, 35,185,239,124, 58,149,213,210,202, 89,240,208,125,150,206,130, 41,217,149, 4,116,212,203, 3, -115, 44, 11, 93,208, 2, 73, 39,112,155,209, 10, 41,159,196, 21, 8, 22, 99,208,166, 61, 31,240,140,214,115, 2,191,121,250,212, - 71, 5,105,170,232,124,209,193,227,119,254,112, 3, 42,104, 87,246,219,129, 92,205,114, 58,138, 97, 18,134,174,232, 78, 63,211, -217,241,144,197, 26, 76,102, 48, 9,196, 84,231,116,127, 79,238,102, 11,121,220, 59,214, 4,222,149, 27, 45,134,154,177,225,116, -114, 7, 35, 2, 83,130,129,220,120,185, 34, 21,105,183,219,186, 65,144, 38,148,201,194,180, 28,168, 16, 88, 61,187,166,121, 94, - 33,229,109,245, 19, 80,244,138,248,131,157, 61,107,164,156, 37,177, 79, 41, 77, 32,106,231, 32, 72,210,231,244,250,225, 62,231, - 14, 54, 54,189, 1,195, 49,225,130,165, 78, 21, 54,175,132,240,193,194,216,117, 3,240,189,213,138, 3, 77, 82, 76,127, 37, 60, -151,250, 12,199,166,158,134, 61,114, 20, 74,237, 88,200,149, 16, 88, 78, 96,208, 96, 23, 28, 32, 39,148, 92, 41, 65,167,160, 57, -189,231, 20, 13,154, 15,175, 63, 92, 25,155,161,180, 2,142,189, 26,204, 72,198, 90,252,142, 38, 54,189,113,224, 51,229,110, 19, -147,142, 37,189, 80, 76, 17, 52, 14, 76,212, 11,188,108, 90,103, 99,162,177,217,113,181, 88,210,193,174, 33, 47,159,190,148,103, -143, 76,175, 1, 69, 45, 19,115,183,237,142,110,161,188,213,247,241,231,215, 31,228, 31,126,184,214, 14,119, 40, 95,125,254, 72, -102,155, 66, 30, 29,118, 56,165, 29,207,215, 46, 93, 29,208, 24, 7,166, 93,152,160, 78,180,105, 53, 1, 32,125,255, 69, 91,254, -217,203, 61,249, 79,191,123, 39,179,121, 68,147,148,116,145,201,251,203,130, 70, 44,135,251, 29,142,184, 49, 97, 72, 83,211,161, -160, 80, 17,158, 31,106,248,155,181, 48, 26,115, 18, 70,242,210, 29, 41, 67,250, 19,240,217, 40,205,167,192, 86, 48,145,199,179, -144,227,242, 61,109, 38,110, 71,119,242, 90,175,251,147,211, 79, 52,158,105,108,165,165,115,194, 98,190, 65, 15, 8, 51,215,162, - 80, 22,239, 85,198,251,119, 56,196,107, 45,100,178,106, 8, 52, 16,123,189, 67, 57, 62,123,161,177,112,142,115, 12, 23, 51,243, - 13,199,193, 3, 48, 8, 47,138, 7,230,110,178,146,202, 22,130,180, 37, 15,144,165,139,199, 16,238, 22, 62,136, 83, 86,201,133, -162, 46,238,137, 93,120, 48,169,116,158, 65,139,160,184,136, 86,158,167,123, 13, 58,148, 25, 71,208,118,138,107,253, 61,227, 77, -201,110,231, 98, 27, 19,225,124,130,221, 42, 70,168,250,158,160,137, 94,148,102,225,154,226,112,232,107,131,246,197,209, 47,144, -221, 20,199, 79,153, 92, 17,176,223,222,204, 24, 56,158,104, 65, 16,248, 36, 1, 29, 38, 68, 36,240, 25, 40,147,170, 15, 49, 2, -115, 22, 52,184,183, 2,186,176, 73,141,115,227, 19,182, 1,208,211,215,255,230,122,198, 29, 29,164, 13, 81,133, 87,157,246,135, -139,145, 60,123,146,178, 43,194, 53,120,243,254, 86,142, 15, 7,244, 13,166, 78,240,120,206, 42, 14,116, 10, 90, 88,162, 27,239, -118, 41,124, 0, 65,146, 21,124,138,245,112, 32, 88,167,122,160, 97, 88, 96,102, 15,194, 10, 17, 99,179, 39,143, 79,184,107, 3, -144, 39,171,105, 73, 40,198, 18,215,185,182, 81, 33, 36, 74,113, 27,176,135, 53, 64, 79, 92,131,220,176, 99,163, 90,159, 38, 70, - 32,144,145, 76, 64,175, 98,162,107,182, 13,148,135,107,231, 99,114,116, 50, 20, 85,240, 29, 63,237, 62, 17,124, 40,251,232, 12, - 2,218,144, 91, 37,138,209,109,229,104,148,249, 58,129, 69, 12, 36, 32, 73, 55,139,120,111,184, 11,132,187, 24, 42, 77, 80,116, -124,116,203,226, 49,207,107,135, 51,226, 2, 42,109,107,167,210,213,232, 83, 15,162,188, 14, 20, 56,210,159,143,109,111, 79,240, - 16, 52,181,193,149,111,185, 21,166, 75,145,162,203, 1,231,151,187, 52,236,212,244,253,188,191,186,182,238,197, 87, 42, 79,142, - 14, 13, 39,160,157, 42,184,178, 48, 14,121,118, 58,224, 94, 31,221, 1,246,111,175, 47, 39, 66, 41, 32,156,117,105, 16,188, 6, - 96, 36, 18, 17,208,209,184,167, 88,241, 96,255, 54, 89, 88,151,182, 90, 78,229,253,197,214,109, 75,237, 25,225,115,135,235,144, - 90,242, 93, 83,225, 47, 53,164,120, 8,230, 66, 41, 51, 82, 19,103, 12, 10,183,147, 25,207,126, 51, 49, 64, 37, 65, 97,177,241, -217, 49,194, 37,152,116,183,101,193,153,101,150,120,141, 70,217,116, 25, 93, 43,178,147,196, 64, 89, 24, 65, 3,192,117,216,239, - 19,149,189,112,192, 28, 39, 74,110, 29, 42,116, 6,195,212, 46, 55,134, 11,217, 26, 6,114, 34,197,213, 1, 82, 45, 10,112, 20, - 12,196,148,178, 13,205,181,177,146,146, 37,149,180,180,251, 75, 28, 65,252, 0,138,195, 89, 97,209, 11,145, 39,189,230,248,167, -164,182,182, 22, 86, 24, 59, 23,112, 47, 43,165,223,234,144, 59,141,110, 17,251, 88,116,155,223, 93,173,229,171, 23,125, 57,215, -238,205,232,124, 41,213,196,150,215, 91,185,209,175, 13,251,224,173,155, 23,195,222, 96,192,169, 21,104, 99, 40,246,247, 7,125, - 19, 55, 25,223,201,147, 94,143, 29,242,189,158,157, 63,125,247, 3,159, 95,142, 74, 51,163,121,218, 52,200,166, 9, 85,113, 26, -121, 49, 66,133, 24,183, 18,206, 61,177, 85,184, 0,196, 78,230,100,158,175,156, 19, 51,160,169,119, 52, 46, 10,248,251,203, 90, -186,215,116,253,169,142, 7,137,217,216,238, 89,138, 2,156, 96, 56, 3,239, 69,142,119,160,165,174, 88,130, 9,157,169, 82, 41, - 11, 90,231,107, 14,128,244, 13,207, 86, 38, 22,213,136, 29,171,147, 83,191, 28, 24,132,251,241,132,202,120, 72,222, 48,237,140, -192, 78,208,223,125,118,124, 66,189,146, 56, 74,228,197,211,167,154,132, 76, 62, 22, 32,183,134,187,114,182, 19, 19,130,186,215, - 66, 23, 17, 19, 35,119, 54,114, 14,130, 54,192,180, 1,164, 33,219,141,157, 58,254,220, 32, 21,208, 48, 70,224,240, 15,123, 29, -202,195,158, 30,246, 36,215,248,137,156,121,112,208,163, 73, 22, 26, 46, 24,191,224,217,185, 67, 59,170,159,231, 12,178,217, 71, -169,252,226,197, 33,233, 97,112,253,180,130,218, 16,250,121,110,211, 96,156, 7,179, 5,183, 56,139,188,134, 28,247, 15, 63,222, -202,211,131, 14, 57,250,152,164, 96,229, 76,179,173,251,153,198,128,142,124,174,205,227,223,142, 22,204,133,152, 98,239,245, 26, -244, 31,216,239,183,244, 57,212,164,172,159,163, 73,145, 25,104,205, 39,156, 58,164, 28,191, 59,158, 71,182, 50,219,218,243,130, -235, 4,211, 24,196, 25,200, 25,111,118, 38, 54, 5, 65,162,119, 31,206,229,183,122,214, 94, 30,199,114,122,144,114, 69,199, 41, -166,254,220,158, 22,225, 40, 54, 73,215,115,250, 41,226, 34,174,217,177,190,119,109,249,228, 70,155,205, 27, 25,113,194, 90, 22, - 9,158, 59,227,132, 10,145,228,150, 68, 16, 92, 48,194, 29,116,140,124,134, 63, 35,208,108,217, 25,218,161,123, 48,150, 8,220, - 0,164,172,157,182,170, 52, 31,184,139, 79,154,229, 14,184, 49,190, 49,116,135,247,218, 49,141,228,255,241,221,130,128, 11, 84, -184,120,232,119,216,135,109, 2,238, 60, 2,143,218,149,132, 43,165, 91,245,123, 64,119,251,252,168, 77,148, 97,168, 31,254,240, - 96,159,238, 74, 48, 95, 24, 45,119,172,246, 90,218,129,160, 66,190, 24,105,101, 86,166,242, 92,187, 49,236, 19, 67, 84,198,219, - 45,147,127,195,245,237, 58, 80, 62,210, 10, 48,163,222,239,218, 0, 30, 24,185,236, 50,242,122,187,154, 12,135, 0, 71,128,254, -146,141,101,208,119, 52,115, 12,222,229,220,128, 53,235,148, 97, 14,251, 53, 28,110,112,202,209, 25, 54, 67, 83,138, 3,176, 2, -250,226,248, 58,170,245, 12, 40,246, 81, 73,151, 47, 28, 10, 24,104, 76,119, 1,105, 25,144,155, 5,167, 54,208, 68,253,248,228, -148, 21, 32, 14,234,202,233, 81,232,154, 43,133,183,176,120,208,149, 39, 96, 76,140, 87, 78,110,183, 43,196,240, 16,136, 89,159, -174, 22, 27,183,184,180,196, 90,106, 96,193, 97,195,247, 24, 58,216,246,116,105,106, 43,143,134,139, 51,160,187,172,214, 46,161, - 99, 44, 2,115,162,208, 42,120,225,129,171,168, 21,234, 8, 86,211,224,142, 51, 67, 37, 57, 45, 50, 10, 79,248,182,171,183,110, -162,114, 75, 51,209, 26,219,199,215, 19, 32, 20, 45,165,121,177,227,127,232, 20, 40,116, 3,211,132,164, 81, 11,223, 4,190,223, -181,233, 68,104,247,215, 11, 1, 32,233, 77,186,210, 11, 0, 71,240,102,169,241,251,243,210, 70,144, 97,225,114,190, 65,192,189, - 28,222, 39,197,125,244, 12,156, 30, 70,242,238,118, 78,129, 24, 76,131,176,151,100,224,128,118,188, 96,103,170,193,103,208,210, -135, 52,164,221, 44, 30,106, 36, 44,140,215,251,122,174,144,132,239, 53, 73,189, 58, 59, 32,136,166,116,119, 58,225,106, 33,224, -116,140, 86,151, 89,254, 96,174, 67,192, 78,194,207,126,184,183, 52, 93,231,134,217, 26,227,193, 62, 4, 93,134, 69,209,142,251, -102, 74,231, 2,197,206, 66, 14,215,115, 93,187,128,237,114, 96, 85,114, 13, 74, 29,195, 75,100,166,188,101,187,226,204,118,178, -133,173,147, 48, 9,192,239,231, 42,194, 21,232,216, 25,235,215,219, 30,104,172, 27,177,247,135, 9, 11,120,218,160,252,225,239, - 99,215, 43,159, 46, 77, 27,194,228, 52,115,226, 67,182,254,153,241,191,117,106, 46,120,140, 62,129, 33,189, 9, 78,131,206,247, -210,188,177,165,156,203,246,221, 5,187, 72,176, 34,208, 57, 94,222,143,173, 96,116,119, 68,172, 3,254,203,183, 59,249,245,147, - 6,153, 38, 71, 26,112, 47, 52, 16,115,234,161,239, 13, 99,249,147,195,125, 54, 43,152,200, 81, 58,180,219,148, 71, 39,251,250, -119,122, 29,247, 7, 76, 78,151, 87,247,102,243,172,231,234,179, 79, 62, 33,253,237,126, 58,102,145,132,147, 52, 91,216, 20, 34, -106,132, 76,200,150,124, 33,196,210,242,206,220,238,105, 76,230, 65, 73,127,119,196, 86, 36,231,116,147,179,249, 0,134,166, 11, - 76,197, 70,203, 65, 76, 29,218, 13,158, 21,130, 13, 93,150,186, 65,142,115,248, 32,153, 75,126,180,237, 84, 89, 40, 64,221, 45, -122, 88,137, 38,145, 81, 15,205, 13, 47,112,218, 85,192,228,181, 89,105,115,160,221, 32,148, 26, 7, 90,176,108,146, 37, 39, 57, - 85, 7,205,184,145,173,165,167,215,224,234,182,144,235,155, 43,121,116,250,152,113, 44,210, 88,141,207, 6, 19,152,191,124,255, -123,249,242,139,223,200,112,255,137,252,235,223,164, 26,159,244, 25, 44, 2, 38, 50,252,110, 80,118, 1,212, 28,107, 53,240,225, -118,194,201,226, 97,207,140,104,240,140, 97, 44,143, 4,143,123,130,243,128,251,137,152,130, 85, 20, 18, 57,169,205,121, 96,138, -123,211, 13,187, 95,188,207, 15,218, 68,189,191, 30,201,205,237,165, 89, 57,107, 28,134,196, 43, 38, 15, 0, 96, 35, 49, 62, 58, -104,201, 63,195,231,215, 63, 3,136,135,247,178,221,217,245,195,243,140,123, 51, 95,249,232, 60, 52, 17, 21,188, 79, 92, 67, 48, - 86, 46,238,231,108, 36,128,187, 0, 93, 14, 59,106, 92,230, 27, 77,252, 63,123,220, 39,125,122,172,221, 58,148, 61, 3,247, 6, - 65, 12, 7,184, 14,239, 27,121, 97,177, 78,249,181,200,141,201,114, 49, 80, 37,108,110, 27,152, 68,184, 32, 14,157, 32,180,224, -190,186,189,103,156, 58,218, 79,228,209,209, 49,159,217,191,251,250, 91,185, 63, 59,145,127,247,155,199, 50, 4,216,110,158, 9, - 32, 27,189,168, 85, 55,210,100,168, 57,200, 24,247, 27,221,255, 97,223,124, 48, 32,110,131, 98,137,192,116,210, 31, 34, 83,124, - 66, 18, 3,127,186, 29,154, 65, 64,167, 48, 23, 45, 28,122,123,171, 17,201, 74,165,187, 66, 21,229,195,174,164,136,196,171, 63, - 27,179,147,219,236,212,173, 74,255,215,132, 64,132, 31, 8, 78, 75, 64,161,163, 72, 96,199,139, 42, 39,201,217,177, 67, 8, 97, -138,202,116,101,213,125,238, 5, 68,200, 61,239, 78,230,122, 83, 18,210,122,180,179,208, 32, 9,209, 59,184, 47, 45, 52, 65,254, -164,157, 57,192, 63,144,173,132,186,221, 55,231, 99,249, 15, 95,238, 75, 43,200, 40, 29, 65,215, 46, 4, 39,114, 71,119,236,212, - 6,120,239,206,117, 6, 96, 40,195,174, 25,193,111,109, 94,196,171,160, 32,117,133, 0, 53,253, 29,133,150, 3,175, 47, 38, 4, -249,173,160, 20,166,255,251, 81,127,207, 22, 14, 64,122,232,240, 67,243,187, 37,147,242,163, 30, 44,249, 18, 19,208,105,219, 78, - 40,246, 64,129,247, 30,107, 5, 10,149, 42, 38,115, 61, 4, 23,139,157,209,144, 52, 25, 65, 21, 10, 14, 97, 51, 13,218,224,108, - 71,238, 76,182,170,209,241, 54,150,193,227,141,224, 15, 97, 14, 51, 59,121, 48, 64,161, 32, 11,233, 95,153,117,218,220,225,134, -188,249, 8,114,195,126,199, 53, 2,244,125, 0, 75, 0,218, 14, 14, 80,106, 18,171,120,125,188, 7,252,110, 38,213,208,204, 40, -232,130, 86,100,156,134, 16, 15, 1, 91,201,192, 20,155, 10,223,121,131, 26, 66,164, 47, 57,208,185,139,251, 4, 44,154, 42,227, - 10, 36, 6, 36,154,202,137,203,246,223, 25,199, 72, 17,247,167, 13,159, 12, 21, 28,185, 98,111,141, 2,162, 18,221, 9,189,136, - 73,233,167,156, 25, 82,220, 77, 75, 2, 55, 24, 42,220,129, 9,239,131,148, 58,167,227,112, 95,203,245, 74, 80, 79, 29, 80,156, -162,115,130,143,182, 21, 32, 37, 59,134,233,106,237, 0, 76,183, 17,141, 12,120,133,207, 66, 89, 87,210,154, 68, 70,154, 8, 16, - 60, 76, 79, 61,244,221, 99,206, 68,245,225,126, 42,159, 60, 62, 35, 0,102, 50, 91,178,152, 53, 59,213, 38,113, 27,115,136, 92, - 20, 37,187,197,204, 19, 60,138, 56,140,239,240, 12, 29,232, 53,133, 51,242,205,253, 82, 38,219, 5,117, 10,242,194, 4,141, 50, - 95, 83,224,126, 68, 78,175, 52,202, 97, 80,235,244,207,192,144, 64,231, 7,163, 22, 45, 76, 59, 62, 42, 70,178,100, 12,112,199, -184,166,139,219,176, 40, 74, 98, 55, 12,177, 41,198,114,179,173, 41,105, 81,184, 49,160, 39, 49, 29, 54, 25,225,154, 40, 52, 75, -225,212,117,247,177, 6, 48,251,221,160,150, 92,174,196,166,204,155,221,172,157,169, 65, 0,193,148,188,116, 95,247, 92,158,159, - 30,201, 94,191, 47,175, 47,111, 13,232, 73, 19,169,148,120, 3,254,183, 94,195,171, 89, 41,231,163,157,188, 58,237,202,205,178, -100, 98, 4, 66, 26, 99, 83, 90,212,150,144,222,237,176,240,158,105, 81,139,100,222,114,244,246,205,104, 70, 80, 31, 10,166, 82, -127,119, 16, 55, 25, 3,191,120,245,169,124,251,253, 55,134,102,214,103, 60,209,235,181,110,152, 91, 37, 80,239, 81,100, 40,230, -164, 97,192,196, 6, 85, 21, 67,126,214, 45, 65,149,176, 20, 54,175,121, 48, 32,224, 67,129, 36,244,237,133,141,250, 81, 0, 33, -105,154, 6,132, 81,117, 43,139,103,226, 79, 10, 75,108,133,203,101, 22,110,110,131,228, 22,115, 87, 93,178,160,106, 37, 46,148, -181, 53, 81,172,208,133,143,128,124,195, 14, 30, 5, 59,174, 23, 40,181,143, 30,157,201,213,229, 7,142,160,193,176, 16,174, 82, - 55, 82,164, 43,222,239,155,187, 91,189, 63, 45,130, 81,227,176, 41, 39, 39,135, 4, 18,226,251, 62,220,220, 26,128, 76,207,240, -159,222, 24,133, 14,184,171,130, 82,175, 54, 61,216, 16,160, 25,202, 95,191,122,164, 73,188, 82, 19, 44,185,142,132, 6,202,102, -103,106,131,252, 25,207, 13,200, 45,165,251, 20,108,179,173,153,116,229, 1,215, 88,103,103, 79,181, 40,223, 35,131, 38,208, 34, - 2,188,116,200, 80, 39, 13,123, 86, 1,154, 68,215,139,216,241,238,122,174,231, 58,161,146, 40, 86, 47, 80,237,196,164,137,182, -185,129, 37,115,196, 91, 20,144,221,102,160,215, 96,195,251, 7,218,246, 94, 71,187,229,187, 53,241,100,152,246, 14,186,136, 9, - 45,174, 50, 62, 61,219,147,191,188, 29,249,121,205,157, 45,100,157, 55,128,126, 16,142,129, 14, 62, 46,249,108,157,153,210,226, -206, 49, 33, 98, 94,239, 43,151,237,174, 84,182,161, 26,202, 63,235,107, 61, 57, 59,245,201, 82, 83,238, 38,115,249,219, 63, 93, -201,127,248,234, 49, 27, 2,208,102,145, 31, 91, 13, 51, 15,163,191, 3, 39, 45,137, 79, 98, 82, 22, 73,175, 30,235,153,252,238, - 94,198, 99, 61,215, 88,163, 64,104,159, 10, 62,129,211, 73, 92, 86, 18,135, 17, 99, 26,210,173,252, 6, 4,110,157,154, 57,215, -250,193, 71,219,245,123,156, 82, 67,123,184, 34,175,125,179,115,215,141,198,215, 80, 36, 0, 81,136, 32, 8,195, 8, 84, 90,163, -101, 78,176, 25,133, 77, 26,166,211,123,163, 29,115, 20,132, 21,241, 93, 43,221,152,182,121,179,245,150, 59,173, 20,135, 24, 15, -184,222,180,139,197,141,220,105, 53,117,183, 76,229,141,222, 28,248,239,194,117, 8, 72, 76, 42, 26,117,204,106,145, 8,107, 72, - 2,162,224,162,202,150, 5,255,251,149, 94, 44, 45, 32,154,250,158, 80,133,227, 38, 32,149,224, 97, 31, 83,144,167, 37, 77,112, - 6,181,155,126,123, 55,165, 48, 79, 69, 87,225, 78, 27, 99, 53,208, 29, 56, 27, 46,137, 60,166,246,187, 94,163,203,113,166,191, - 63,118, 22, 65,201,209, 13, 2,120,158,219, 30, 17, 46, 83,131,142,141, 57,145, 12, 30, 61, 26, 74,222,234,242,192, 20,212, 77, - 15,245,160, 30,114, 60,139, 49, 23,169, 75,133, 39, 44,253,191, 25,165,101, 53, 57, 99,116,230,123,144,160, 17,209,208, 36, 36, -104,176,252, 72,235, 62,116, 83, 2, 91,129, 64,233,169,194, 68,160,144, 51, 78,112, 66, 0, 25,238, 77,187,105,218,196,232,188, - 80, 48,128,158, 97, 8,220,130, 29,194, 18, 74,123,173,196,169, 36,230,251,221,215,202,251,232,192,208,218, 89,106, 59,221,124, - 99, 66, 54,166,132,102,187,217, 40, 48, 32, 8, 0, 64,248, 57,224, 31,108, 39,153,114, 44,159,249,249,170, 60,207, 81, 92,220, -141, 39,206,237, 55, 92,135, 41,221, 21,222,153,148,206,147, 55,116,114, 53, 5,168,236, 72,141, 30, 85, 88, 55,197, 42,218, 59, -125, 23, 14, 41,220, 59,186, 73,135,192, 22,247,242, 88, 77, 64,146, 23, 99, 55, 0,154, 42,158, 49,133,132, 52,248,129, 78,137, -251,253,238,250, 78, 78,246,135,164, 80, 1,112,134, 32,103, 52, 25,227,181,174,211, 45, 21,184, 48, 82,195, 78, 14,221,182,137, - 81, 8,207,105,170,127,223, 8, 53,232, 30, 14, 89, 20, 47,150,115,118, 87,120,159,120,223,189,246, 1,197,118,240,126,222,126, -184, 53, 97, 39,130,214, 18,118,134, 72, 82,120,184, 73,151, 98,167,184,227, 53, 32,152,176,221, 33, 96, 15,157, 54, 7,114, 8, - 6,129, 81, 41,209, 97,228,222,225,113,242, 16, 88,177, 72,122, 82,105, 5, 17, 18, 97, 89,123, 26,218,153, 39,144, 46,180,149, - 14,112, 33,166,109, 31,114, 85,133, 46,138,247, 76,204,195,129, 20, 57,224, 70, 50,115, 90, 11, 99,163, 21, 21,169,185,250,113, -205,128,198,194, 29,255, 54, 20,238, 48, 30, 54, 58, 83,168,151,125,247,254,146,201, 18,214,157,118,126, 10,114,193,209, 17, 2, - 13,140,245,219,111, 95,143,228,127,254,170, 35, 63, 93,141, 56,218,133, 96,211,201, 97,159, 19, 3, 60, 31,152,230, 73,104, 5, - 3,176, 50,212,201, 14, 77,155, 30, 35,225, 78,167, 39,203,197, 76,131,148,233, 27, 60,215, 96, 11,228,252,100,182, 96,231,134, - 53, 10,128,114, 72,190,175,142,247,152, 60, 48,121,131,190, 69, 73,203, 80,128, 1,161, 61, 96,113, 5, 77, 10,206,245, 54,138, -201,224,192,201,233,192,100, 4,122, 6,129,233,116,224, 33,217,149, 69,205, 52,192, 88,190,108,234, 53, 1,219, 0,212, 89, 22, -233, 57, 11,116, 22, 15, 76, 12, 5, 1,192, 0, 35, 86,113, 27,140,156,194,215,147,156,254,132, 65, 13, 76, 6,173, 10,224, 44, -124, 94, 24,130, 28, 29, 28,202,245,237, 53, 85, 48, 11,177,142, 22, 83, 32,115,221,243,179, 67, 41,109,224,133, 48, 10, 63,208, - 7,121, 65, 97,171,217,116, 68,243,147,243,155,177,203, 15, 23,174,240,232,110, 2,133,197,251,191,253,211,143,174,160,105, 83, - 91, 92, 63,226, 44,242,143,104,176,174,186, 70,113, 47, 20,154, 16, 69,130,222, 3, 18, 42,155,197,156, 83,142, 40,200, 8, 84, - 51,211, 20, 46,124,228,112,191, 77, 63, 11, 48, 83,142,247,244,190,165,154, 28,143,186,212, 87, 0,215,123,165,197, 20,240, 97, -211,229,174,166, 4, 71, 46,164,134,235,135,215,205, 10,139,139, 43, 77,192, 95, 60, 30,200,253,220,244, 75,218, 13, 91, 69, 95, -107, 66, 61, 25, 4, 4, 95,191,124,212,103,194,254,226,233,158,124,255, 97, 70,173,128, 10,251,243,244,168,207,233, 29,158, 87, -120, 34, 32,238,106, 47,195, 34, 6,231,155, 5, 53, 89, 64,161, 51,141, 90, 22,127, 51, 83,140,123,127,113,201, 51,102,107,173, - 82,243,216, 90,190,187,202,228, 23,207, 18,226, 15, 86,244, 6,233, 50, 89,103,212,247, 48,220, 6,138,105,196, 79,172, 5, 64, -249,254,226,229,158, 22,168,185,188,189,209,134,238,110,178,241, 11, 27, 17,149, 88,205,255,185, 63, 47, 13,141, 9,125, 94,202, -113,162, 10,201,140,220, 95,129,146, 42, 42, 14, 65, 32,190,223, 65,167,149,149,185, 35,224,165, 14,176,232,108, 40,182,160, 31, -225,221,253, 90, 30,107,101,117,210,143, 41,158,130,155,110,226, 6,161, 38, 82, 92,160,156,251, 79, 4, 54, 76, 16,112,224, 81, - 72,128, 34, 2,173,116, 84, 96, 5, 76, 81,150, 43, 94,160,119, 55, 19,121, 63, 90,105,130,182,253, 3, 58,210,185, 86,102,159, - 63,217,151,253,253, 65, 77,149,107,235, 1, 47, 29,181,159,109, 82,154, 33,224,207,144,160,220, 96, 12,180,221, 58,136, 14, 9, -125, 43,151,192, 21,148,102,247, 10, 77,251, 62, 40, 50,121,233, 35, 74, 67,127,175,119,166,142,132,239,195,152,145,174, 65,250, -119, 38,177, 27,251, 72, 27,197,179,190,174, 86,225,105,203, 76, 56,130,180,201,155,137,145, 39,128, 77, 0,212,173,244,125,228, -187, 53,255, 30, 99, 56, 22, 84,250,249,218,180,122, 77,109, 4,236, 6, 3, 72,240,160,234,208,122,148,210,184,153,211,192, 34, -118,209,219,202, 57, 8,163,193,194,228, 39, 75, 49,133,182,125,173,112, 43, 41, 84, 67,203,219,216,123, 60,155,249,200, 53,161, -177, 5,253,172,219,134,162, 5,250,158, 43, 24,125, 79, 0, 24,165, 44,248, 74,126, 29,227,240, 86, 59,100,209,196,196,198,206, -249, 65,185, 15, 99,233, 93,110, 73,216,146, 73, 94,131,248,192,128, 72,243,220,199,199, 41, 59,186,150, 62,176,212,183,118,163, - 19, 83,167,139,124,135,174, 29, 74,187, 83,115,207, 43, 3,147,216,205, 89, 76,244, 97,247,255, 75,242,149,167,185,241,218,195, - 26, 8, 88,212,197, 39,254,129, 46, 53,181,227,105,174, 98,160,150,160, 2,129,185,222, 57,166, 11,103, 71, 7,230,164, 5,183, - 42, 61, 39,135,123, 3,238,145,151, 26, 36,254,250,139, 99,253,183, 89, 97,126,184, 50,175,110,123, 31, 33, 37, 39,225,188,102, -224, 51,151,152,220,106, 97, 57,135,178,149,153,232,160,240,128,133,174,177, 67, 98, 47,194, 10,238,182,161,183,141,123,213,107, -119,153,140,133,194, 64, 13,126,174,189,190,237,139, 65, 87,131,210, 25,146, 2, 87, 64, 40, 24,147,150,107, 14,104, 50,112,247, - 68,128, 21, 17,144, 87,180,215, 44, 93, 21,175,116,125,131,192,133,133, 2, 83,128, 44,141, 66, 74,243, 14,104,178, 55, 13, 8, - 73,230, 7,190,136, 85, 78,165,253, 29, 24,235, 1,159, 53,227,125,174, 86,116,118, 15,233,203,142, 51,214,132,217, 80,199, 48, - 33, 62, 66,166,118,189, 94, 55, 4, 71,211,239, 55, 9, 99, 92,115, 8,239, 4, 65,233, 59, 69,243,189, 14,130, 54,147,248, 31, -223, 78,229, 63,254,213, 99,130,150,144,172,182,188,134, 27,217, 27,246,105,186,196, 49,113,167,105,224, 86,111, 50,112,198, 77, -242,181,100, 51,129, 73,207,226,254, 70,239,245,161, 92,234,251,252,244,233,137,252,237,239,110,249,243,196, 36,136,173, 9, 0, - 98,228,100,172,101,158, 9,180, 11,221,229,230,227,190, 53,180,242,134, 40,239,216,141,131, 48,170,110,179,104,218,239,194, 70, -119, 77, 80, 45,121,234, 0,239,233, 51,189, 10,205,138, 24,175,139, 85, 14, 70,196,181,173,109,104,247, 55,161,106,219,206, 76, -147, 74,169,177, 74,182, 88,143,120,206,120,158, 29,176,140,230, 2,159, 15, 5, 11,174, 33,246,225,207, 78,143,228,226,246,134, - 93, 31, 10, 91,188,183,203,241,146,113,153,157,115,210,224,239, 56, 59,218, 35, 56,240, 82, 59,116,236,170, 51, 45,136, 46, 70, -153,118,243, 75, 82,204, 80, 52, 81,172,139,163, 90,241,127, 7,188,183,160, 0,219,223,185,169,181,195,170,200,186,113,118, 18, -254,140,248, 12,253, 16,125, 57, 58,148,181,241, 92, 55, 35, 22, 73,189,238, 80,206,180,120,130,242,228,217,241, 83, 61,239, 13, - 83,154,212,235,138,166,144,107, 19,178,125, 74,153,233,179,210,209,120,148,105, 78,129,166,196,138,170,123, 85,113,106, 9,248, -112,208,230,154, 51,164,133,239, 74, 11,237, 29,227, 12, 10,140,187,217, 78, 78,247, 90,242, 97,180, 98, 2, 46, 9,248, 93,107, -129, 88,106,210,238, 16,179,243, 92,127,126,160,191,119,216,219,202,190,187,119,226, 58,221,106, 35,121,118,208,145, 63,189,185, -213,226, 31, 40,253,136,143, 3,155, 14, 42,137,134, 50,219,218,116,162,240,123, 67,209, 45,205, 3, 0,191, 54, 88,124,183,249, - 53,200, 88,131, 53,243,247,223,189,211,231,227,153, 22, 19,109, 78, 52, 86,250,204,227,121,232,235,217, 73,226, 45, 49, 16, 90, -235,200,116,190, 97, 35, 17,121,129,253,248, 24,211, 62,205, 63, 84, 23,242, 26,188, 10,248,116, 52,195,120, 3,149,128,190,201, - 70, 51,175, 85,197,140,207, 92, 24, 29,167, 22,141,176,196,158, 59, 90, 57,247, 0, 41, 78,121, 17,119, 78,171, 16,184, 99,173, -160,154,139, 72, 22, 24, 53, 81,209, 46,101,165, 19, 58,207,251,205,205, 70, 38,203,140, 99, 65,154,130,228,166,235,203,189, 85, - 46,164, 22,221, 46,177,231, 48,205,225,157,118, 58,120,178,161,254, 54, 71, 48,167,225, 68, 71, 31,108, 4,230,141,252,225,253, - 76,246,225,148,212, 95,201, 94,144,240, 96,160,162, 67,208,109,183,141,146,132,209,203,116,121,175, 93,210,198, 58,215,182, 9, -204, 0,196, 52,203,245, 65,189, 93,202,104,186,148,253,195, 30,253,151, 57, 86,142, 35, 38,226,163,164,199, 17, 44,130, 24,119, -242,122, 56,113,160, 17, 68, 48, 54,191, 31,207,216, 69,153,188,166, 30,248, 21, 4, 21,214,236, 32,142,181,171,197,117, 61,191, -190, 55,177,151,216,168,124, 76,218,133,141, 67, 49,250,132,250, 19,246,130, 38,179, 26,202, 72, 95, 19,192, 14, 20, 22,171,205, - 74,182,203,172,222,199, 34,201, 64,239, 24, 9,217, 0, 87,190, 99,170,246,249,250,231,145, 30, 8, 90, 91, 34, 33,174,211, 90, - 13, 10, 93,116, 18, 38, 4,230, 48,105, 72, 76,110,169,136, 37,206,172, 52, 91,205,197,198, 76, 39,112,224, 35,183, 67, 77, 34, -147,122, 37,238, 2, 35, 96, 40, 49,137, 41,134,129, 71,139, 73, 75, 25,152,235, 27, 36, 27, 43,228, 51,237,118,245,154,101,169, -241,242,195, 36,226,103,163,178, 94,106,110,106,120,248, 42,172, 6, 58,222,204, 1, 75,221, 94,175,182, 80, 13,125, 31,159,127, -228, 40, 24, 85, 82,184,133, 9, 24,197,222,157, 71,222,197, 87,154,231, 24, 51, 83, 25, 12,137,115,110, 64, 69, 92,207, 65, 59, - 34,133, 9,193,198, 10,184,140,216,147, 31,223, 95,214,215, 31, 29,217,238,205, 37,247,144,143, 53,104,254,112,113, 47,127,120, -125,195, 21,142,141,216,133,223, 75,140, 64,181,199,151,200,249,228, 30,236, 42, 83,162, 42, 40,151, 86,228, 70,190, 70,105,181, -160, 60,101, 20, 80,224, 61, 98,142,230, 75,242,200,231,171, 57, 87, 65,248, 85, 24, 23,115, 79,201,226, 69, 72,217, 65,223,140, - 73, 8,166, 48,232, 96, 90, 4, 4,149, 76, 2,208,170, 30,166,169,191, 86,101,221,106, 32, 35,158,223,134, 41, 33, 86, 96, 75, - 36, 75,128,145, 48,190,197,247,225,217,204, 83,211,171, 7,130,126,201, 98,200, 58, 79,156,101,128,212,240,188, 85,234,114,152, -244,124,250,236,177,124,246,248, 80,158,106,208,254,179, 94,183,255,252,199,215, 82,225, 30,171,181, 82, 89, 88,242,142, 18,163, -226,113, 21, 19,155, 60,106,226, 76, 7,179,114, 78,201, 23, 71, 17,244,230,102, 46,159,158,246,136,136,199, 44, 13,207, 55, 92, -236,198,227, 57, 1,177, 79, 78, 15,105, 14, 2,100, 52, 62,223, 18,120, 25, 36,122,128,232,182, 38, 87,154,132, 41,207,231, 4, - 0,201,195,167,181, 34,227,158, 6, 84,196,130, 16,216,162, 29,132,170, 34, 57,217,239,232,207, 47, 25,147, 48,157, 33,199, 92, - 95, 23, 50,208,101, 22, 16, 92, 22,250, 20,235,219,247, 87,114,180,215,231, 20, 2,251,110,220,183, 13,159,247,196, 58,244,210, - 44,159, 81, 4, 64,204,198,124, 23, 10, 78, 60,194, 88,220, 20, 39,150,161, 22, 14,243,197,206,101,122,141, 77, 64, 70, 81, 98, -170,160,161,216,228, 9,212,212, 40, 49,157, 12,224, 46, 48, 65, 91,130, 79,207,110,177,199,162,107,208,209,207,171,197,223, 89, -167, 47,247,208,182,112,186, 41,174,233,219, 15, 23, 50,108,183,248, 30,169,148, 9, 58,237,220,180,228, 63,123,124,166,159,165, -163,215,164, 97,152, 3,168, 36,118, 27, 46, 47, 46, 4,162,189,187, 30,115,236, 14,121,111, 76, 83,208,208, 65,189,145, 38, 65, -137, 81, 45,193, 44,178,105, 89, 44, 71,251,125,198,202, 38,169,109, 37, 93, 16,119,153,237,139, 1,140, 67, 1,215,114, 45, 5, - 20, 80,140,103,122,150,254,242,246, 78,207,123, 79,190,250,229, 11,237,122,199,140,175, 40, 48, 32,174,148,251,218, 2, 29,126, - 68,185,239,152, 59,242,207,135, 45,249,230,221,216, 37,168, 69,155, 55, 45, 20,146, 82, 11,140,144, 30,244, 71,199,160, 58,174, -245,253,135,242,244,160,205,124, 0, 93,251,249,237,130,241,106,178, 50,164, 62, 10,206,230, 97, 87,250,195, 14, 11, 40,136,153, -129,183, 94,122,177,187,216,154, 31, 60,220, 56, 59, 45,109, 6, 65, 29,221,108,221, 34,215,168,221, 16,214,233, 65,154, 25,247, - 73,243, 24,166,107, 80,247,251,227,107,224, 21, 78,228,197,163,129, 91, 84,231,100,133,180, 3,163, 72, 98,186, 85,192, 18,124, -190,213,162,167,207,252,133, 41,224,191,250,245, 35,137,255,205,191,255,119, 52,155,159,140,199,178,152, 47,136,140, 94,145,102, - 36, 52,153, 72, 34,173, 80,119, 38,182, 97,227, 81,179,223,171,188,173,221,142,218, 92,160, 10, 3,147, 20,206, 93,230, 80, 62, - 52, 33, 26,243,245, 46, 56,126, 0,248, 98, 56,232,114,196,137, 10,127,160,213,244,104, 50,210, 15, 41, 4, 66, 36, 90,153, 46, - 32,244,175,193,114,190, 94,154,210,152, 6,144,190,254, 12, 30,178,151, 47,246,229,157, 30,236, 3,253,190,177,190,199,185, 86, - 67, 59,173, 48,207,158, 12, 37,108, 77, 24,136,142, 14,246, 56,214, 96,128,208,255,190,212,164, 56,214, 55,118,187,153,146,147, -136,206, 28,129,252,137, 94,196, 31, 53, 8, 99,199,137,207,136,196, 57,154,204,165,175, 55,242,236,100,143, 10, 70,215,163,148, -128, 27, 36, 83,236, 62, 64, 41,131,128, 5, 14, 33, 30, 58,136, 65, 96,119,133, 36,133,195,137,192, 59,157, 47,120, 93,238, 52, -249,162,227,205, 40,222, 31,203,122, 97, 46,102, 72, 14,120, 45,140, 55,175, 71, 11,187,217,250,247,120,223, 8,216,224,202, 98, -124,115, 9,251, 67,136,117,235,125, 24,175, 50,142,116,105,203, 8,223,248, 2,116, 25,253,119,220, 38,191,212,228,101, 11,160, -193,244, 71,115, 86,185, 9,165, 90,237, 62, 53,124,175, 92,113,135, 57,242,193,234, 32, 8,125,133, 98,218, 2,185,119,106, 85, -161, 23,184, 10, 94, 89, 88, 2, 10, 92, 7, 62,240,229,106,101,192, 81,233,231,147,201, 39,161, 3,244,132, 69, 0, 2, 84, 30, -184,161,145,112, 19, 96, 20, 59, 31,223,185,198,160, 1, 54, 97,132, 1, 32, 86,108, 94,208, 72,196, 12,246, 46,176, 1, 99,153, -170,104,172,220, 0, 81,236, 80,213, 44, 54,133, 68, 42,144,229,153,163,225,125, 4,239, 21,109,141,237,112, 85, 47,113, 52,250, - 76,239, 53, 18, 52,238, 95,159, 9,205,246,125,216, 65, 98, 12, 7, 20, 42,192, 92,176,158,156,234,195, 52,208,243,168, 89,204, -197, 36,244,122, 39,133,158,173,185, 60, 29,244, 41, 99, 9,195,147,162, 52,163, 23,128,239,232, 54,200,168, 94, 80,141,138, 99, -200, 36,114,103,168,192,247,207, 70,117,226,138, 69,108,191,223,106, 27,158,162, 9, 29, 6, 20, 50,218,181,236, 13,186, 92,123, -192,253,109,208, 60, 96, 17, 25, 69, 54,213, 58, 61, 48,193, 17, 4, 30, 20, 29,216, 43, 3,109,142,247,107, 8, 96, 76,219, 82, - 1,179,142,118,201, 84,241, 51,153, 93, 22, 33,218, 81, 66, 69, 13,180, 71,172,224,224, 48, 24,250,216, 13,114,165,112, 13,252, -105, 54, 98, 87,134, 61,234, 64,131,210,179,231,159, 75,212, 90,202,242,252,156,184, 18,172, 24,128,188, 70, 18,199, 78, 26, 34, - 28, 60, 31,165, 9, 6,125,127,113,199,110,105, 10,250, 22,232,149,149, 81,143, 79,249, 13, 61,110, 96, 46,232, 45, 24,200,210, - 0,101,230,230,102,147,179,156,235, 7, 67,145,127,127,189,145,255,248,213,158,188,190, 93,115, 90, 5, 64, 99,228, 46, 93,151, - 55, 35, 50, 80,208,217, 28,238,117,201, 19,126,127,121,207,238, 23,234, 93, 8,218,180, 24,109, 20,150,132,146, 22, 81,200,175, - 94,125, 38, 55,151,231,236,250,112, 14, 2, 46, 25, 76,246,121,155,153,209, 13, 24,105,237,166,197, 65, 24,150, 68, 97, 83, 54, -224,248,239, 54,188, 71,164, 66,102, 70, 71,194,100, 39,170,124, 38,130,210,113, 12, 25,175, 61,214,141, 77,186,126,153,243,101, - 14, 1, 33,224,126,124,111,205,103,208, 5,190,114,215,180,192,215, 64,125,130,138, 95,152, 91, 51,197, 66,218,233,168,144,196, - 0,114,127, 16,216,132,242,118, 60,161,232,211,108,114, 39,207,206, 6, 92, 91,126,119,241,182,198, 54, 85,160, 83, 20,110,221, - 22, 40,140, 49, 65,187,237, 70,206,207, 6,191,139, 0, 60,251, 13,146,189,126,159, 54,100,152, 2,254,120, 61,241,226,207,208, -254, 24, 63,159, 12,219,242,155, 79, 79, 93,104,198,158,211, 37, 80,243, 80, 99, 3, 50, 93,139,163, 70,162, 73,123,186,150,119, -151, 55,250,223,121,237, 68,153, 99, 42,217,110, 24, 83, 64,207,199,191,254,231,191, 97, 82, 35,131, 74,223, 23,244,211, 33,128, -243,249,179, 19, 54,147, 27,109, 20,127,249,233,177,252,225,235,115,189,207,230,200, 7, 92,213, 60, 79,121,237, 83,151, 83,198, -225, 58,208,102,240,104,184, 38, 62, 10,109, 36, 41,138,189, 38,217, 42, 39, 3,211,200,128,169, 17,148,237, 0,152, 3, 6, 2, -206,161, 90, 87,107, 92,134, 7,199,154, 94, 2, 88,211,190,215,207, 61, 25, 15, 5,109,197,253,194,100,130, 99, 2, 36, 97,116, -211,144,247,183, 91, 90, 24,211,247, 61,118, 42,163,211,218,208,140,228,238, 10,138,107,254,228,244,148,241, 31, 19,148,119,151, -151,242,205,121,139,249,232,104,175, 89,123, 40, 32, 94,163,187,199,121,129, 85, 45,128,237,163,241,130,207, 41, 10,211, 45,164, -215, 31, 63,127, 46, 79, 95,188,160,192, 61, 40, 78, 91,253, 64,119, 55, 55,114,119,119, 39,155,133,129,126,200,103, 20, 3,137, -112, 98, 19,229,236,110,205,236,197, 14, 82, 90,209,103, 0,221,199, 14, 15, 85, 87,163,193, 61, 5, 42,118,140,151,167,154, 72, -177, 27, 66, 39, 49, 39,205,103,103,188, 96, 77, 88,135, 7, 93,163,242, 96, 76,167,215,254,112,223, 60,171, 77, 16, 31,128,174, - 22,255, 27,157,168,137, 94,148,114,171,137, 24, 73, 51,241,253,255,245,221,200, 52,148,245, 97,249,160,201,208, 28,217, 66,185, -223,108,249, 61, 27,125,173,155, 44,171,101, 26, 1, 0,203,139,178, 78,114, 48,171,199, 3, 68,138, 87,187, 35,183, 35,173,194, - 11,179,142,133,208, 9,171, 98, 31,141,162, 43,108,134, 77,162,224, 1,108,194, 4, 3, 29,250,221, 28,149, 26,198,183,122,131, -147,146,130, 7, 72, 74,236,212,245,115,244,188, 98, 14, 49, 82,211, 7, 6, 93, 33,110,210,222,222, 1,175, 33,170,244, 46,174, - 33, 12,158, 37, 39,122,123,231,194, 5, 1,157,207,172,155,109,185,176, 68,228,149, 50, 1, 72,250, 58,160,149, 97, 44,188,241, - 34,140,148, 17,223, 57,135, 94,100,133,193, 3,115,161, 2, 71, 81,145, 46, 50,104,135,129,219,130,218,196,163,162,143, 81, 60, - 4, 99, 53, 71,206,214,244,178, 40,170,145,246,226, 19, 27,142,155, 65, 53,203, 75, 31, 51,218,125, 43, 67,215,172,207, 77, 8, - 39,228,248,210,222, 99,232, 5, 3,222, 91,149,152,109,104,158,186,160, 76,195,141, 99, 66,186,218,145,198,232, 83,141,138,230, - 86,153,212, 24,175,215, 41, 83,133, 65,134,201,198,112,115,149,162,118, 7, 43,204,204, 36,205,120, 31, 73,131,195,217,246, 66, - 99,162, 5,220,201,192, 44, 52, 49,190, 67,225,106, 64, 41,179, 6,197,219, 71,224, 37, 58,191,223,148,103,135, 3,142,214, 18, -114, 76, 19, 26,174, 0, 96, 4,168, 41, 48, 9, 8,124, 44,140, 67,206, 35, 57,133, 57,213, 66, 16, 85,191,121,215,231, 52,121, - 24,207,108,130,132,177, 51,186, 29, 60,155, 64,210,231,121,147, 69,193,114,177,116,255,133,140, 66, 44,144, 52,134, 28, 46,146, -249,221,116,198,202, 29,107,139,210,141, 39,240,189,167,123,109, 25,104, 53, 15, 84, 63, 36, 37, 65,243,178,174, 58,101, 48, 70, - 87,129, 98,163,218,251,110,215, 43,118,254,160, 11, 81,172,145,206,131,166, 85,142,239,139,244,251, 3, 22, 29, 61, 89,173, 16, - 63,114,114,140, 1, 86, 68,241,142, 10, 14, 63,215,162, 43,151, 25,113,208,175, 30,172, 18,125,237,187, 36,100, 80, 50,113,142, -226, 35,207,136,210,216, 29,236,220, 75,247, 22, 55,111,115,196, 3, 60,103,220, 41,122,130, 55,102, 68, 75,206, 39,185,189,119, - 20,130,216,181, 67,229, 49,180, 4,140,245, 1,238, 27,169,171, 24,101, 39, 66, 22, 11,216, 13, 24,153, 34,174,205, 52,200, 55, - 91, 38,179, 60,212,228,117,117,123, 39,191,252,226, 75,153,142,111,232,211,142, 38, 1, 83, 3, 40,165, 1,115,128, 24, 1,131, -146,155,251, 29,237, 71,145,100, 48,201,216,106, 81, 3, 17, 28,152,180, 3,204,104,128,166,200, 18,145, 54, 37,251,253, 84, 62, -220, 78,249,172, 13, 7, 13,222,103,172,120,160,178,135,181,225,116,147,185, 1, 75,225,174,126, 41, 11,106, 80,113,147,200,170, -239,176, 6, 44, 23,156,164, 65, 94, 27, 52, 51,210, 20, 83, 3, 72, 86,128, 70,188, 38,204, 97,144, 92, 1, 64,133,247, 0,166, -144, 23,183,247,122, 22, 22,188,142, 16,100,169, 25, 41,206,104,122,243,225, 92,142, 15,143,245,245, 49, 5, 13,104, 86, 67,199, - 54, 76,102, 26, 3,201,130, 88,254,246,239,254,145, 24,139,202, 88, 11,242,174,120,111,232,166,175, 70,161,188,134, 54,188,203, -253,102,214,253,113,109,135, 66, 33,118,208, 44, 45,175, 29, 51,100, 77,139,203,218, 38, 77,118,210, 0,215, 97,162,254,248,180, -103, 62, 7,236,244, 13, 88,137,162, 10,160, 60,184, 86,246,250,125,130,205, 14,181,120,165, 82, 28,215, 85, 91, 82, 53,113,158, -176,202, 90,172, 51,121,125,110, 19,177,212, 45, 69,113,237, 63,232,243,117, 56,104,233,117,212,123,176,210,231, 38,233, 48,145, -195, 7,229, 66,243, 10,138, 99, 40,209,161, 72, 71,167,140, 9,103,165,185,130,238,254,236,176,175,177, 98,107, 19, 24, 92,247, -166,197, 89, 8,137,129,105,114, 57,173,116, 51, 10, 2,142,113, 13,119, 4,138,154, 36,240,209,254,128,160,101,172,204,174,245, -253,128,242, 12,147,151,243,187, 3, 2,202,187,157,160,102,247,116, 96, 93,171,207, 24,138,217,161, 38,246,219,209,130,207,239, -233, 97, 87,243,201, 70,162,227,110,252,191,141,174,207,181, 26,253, 73,130,221, 76,210,245, 68, 47,252,138, 38, 41, 0,134, 96, - 15,138,238, 7,173, 61,126, 41,110, 0,254,217,211, 67, 47, 20,107, 40, 88, 81, 81, 80, 63,176,189, 50, 30, 48,116, 32, 43, 84, -245,238,169,139,177, 15, 18, 43,118,216, 72,196,169,251,215, 94,221, 77, 76, 3, 59,142, 56,190, 94, 59,178, 26,123, 4,240,197, -121, 83, 96, 60, 48,154,241,134, 1,197,141,215,188,155, 44,217,113, 27,117, 41,144,107,173, 86,104,237,170, 71,234,118,188, 52, - 78,116, 17,112, 28, 2,215, 35,136, 28,160, 50,131,173,108,172,135, 37,215, 36, 3,255,114,220, 8,104,117, 3,245,186,220,106, -135, 2, 55, 37, 77,182,115,120,211,174,118, 28,105,130, 54,147,139,129,137,118,133,249,129, 3,108, 99,250, 58, 33,147, 28, 42, - 40,180,123,230,197,110, 50,159,120,111, 52,235,128, 27,217,106, 41,253,254,160,198, 34,224,144,216, 78,210,204, 3, 96,117,136, - 61,110,133, 71, 66, 1,130,100, 78,235, 83,142,105, 3,222,252,116,103, 95, 51,111, 96, 83,170, 43,107, 52,178, 37, 52, 0, 95, - 82,231,133,135,245,195, 93,184,243, 86,228,251,210,202,160,197, 3,169, 11, 86,184, 13, 95, 45, 92, 83,141, 93,171,215,168,190, -143,192,201,160,172,133, 96,170, 98,161,146, 10,174,132, 70,170, 32,109,244,177,220, 85, 2, 11, 38,174,192, 19,186, 57,209,229, - 14, 42, 49,192, 79, 28, 85,142, 93,238,208, 9,165,191,102,195,101,120, 83,119,131, 43,235,213, 81, 94,161,215, 93,113,174, 44, -203,135,196,237,246,177,213, 10, 50,175, 58,119, 31,247,130, 99,142,128,140,250,142, 26,222, 73,228, 60,106, 14, 51,217,201,113, -205, 1, 85,190,212, 48, 1,212,193,134, 45, 42,246,229, 97,204,196, 5,148,246,191,255,231,159,201,179,147, 1,169, 50, 61, 40, - 15,130, 43, 65,151, 45, 19,158, 64,145,112,180, 55,148, 95,190, 60,147,127,249,203,151,236,196,191,125,119,169,103,115,197,174, - 27, 32,197,171,209, 84,198,154,152,215, 90,104, 35,145,220,234,195,141,191,187,163,197,100,198,251,123,171,207,205,189, 62, 15, -192, 82, 32,225, 83,116, 6,103,102,151,113, 74,132,215, 59, 28,182, 88,188, 94,232,247, 34, 25,222,235,243, 2, 64,151,157, 17, -224, 86,182, 60,211, 8,146, 7, 26, 8, 15,244,217,196,123,165,148,111,100,252,232,174,118, 38, 8,190,236, 48, 3, 83,106, 68, - 44,204, 60, 80, 67,151,188,211, 59,224,158, 79,220,162, 21,216, 15, 16, 5, 50,231,183,211,226, 22,207,192,198, 86, 91, 47, 30, - 63, 34, 5,135,248, 1, 8,156,108,118,166, 79,238,224,207,210,207,154, 77, 82,194,218,190, 55,119, 49,161,210,119,226,161,251, - 47,224,123,176,143,132,104,202,151,143,123, 68, 32,175,178,144,157, 48,138,150,134,251,104,227,247, 33,248,226,190,130,149,150, -115,218,104,159, 19,162, 52, 52,222, 0,118,100,179,212,228,222,225,152,254,232,112,159,215,100,138, 73, 98,106,190,233,216,105, - 71,206, 67, 7, 51, 5,193, 25,159,125, 69, 15,134, 45, 71,197, 69, 85, 28,251,179,142,194,254, 96,216,231, 51,141, 36,138,159, - 51,197,221,144, 5, 20,214,118,134,107,138,152,228,209,200,208,203,192,117,204,209, 92,153, 52,109,131,247,212, 18,183, 77,206, -132,123,106,179, 50,141,220, 71,193,152, 36, 22, 29,173, 48,143, 28,163,146,185,158, 72, 64,233,229,147, 97,151,215,131, 83,200, - 70,236,182,145, 13, 90, 93,111,169, 97,209, 37, 16, 44,160,150,123,192,177, 61,168,189, 63,127,249, 68, 11, 3, 43, 34, 71, 19, -179,119,174, 56,233,164,254,133, 78,165, 45,109,151,108,171, 29, 91,255,179, 48, 41,109,197,224,157, 0,167, 67, 68,249,103, 59, - 49,129, 19,237,140,201,157,205, 57, 89,200,165,171,207,198,150, 74,128, 20, 40,210,130, 18,186, 31,192,120,129,162, 72,231, 63, -253,153,167,103,135,252,187,145,118,255, 0, 82,110, 82,195, 34,224,172, 0, 76,135,243,131, 41, 18,138,191,176,150,182, 22, 78, - 83, 38,218,237,159,143, 12,243, 18, 38,125,206, 50,103,243, 9,127,166,223,110, 80,124,230,122,178,230,125, 24,182, 99, 47, 56, -109,221, 7, 96,249,206, 87, 88,244,139,160,247, 68,169, 9,127,101,207,101,110,224,104,179,215,205, 24,255, 12,243, 19, 49,110, - 96,237,128,226, 21,128,220, 57,157, 43, 19,118,252, 28,171,119,135, 90,248, 55, 57, 69,195, 37,233,180,205,132,102,227,254, 4, -116,140,188,159,249,125,212, 78,125,183,153,242,128,224, 80,220,143, 70,126, 8, 99,106, 73, 47, 8,202,137,105,120, 63,209, 67, -200,174, 56, 49, 93,227, 15, 55, 35,247,224, 54, 69, 44,202, 55, 58,103, 24, 29, 48,170,203, 22,119,142, 33, 5, 59, 34, 62,120, -109,238,165,205, 37,200,140, 97, 96, 41,138, 35,115, 55, 95,219, 40,144, 85,121,193, 7, 44,245,253, 89,198, 17,133,158, 7,109, -225, 49,130, 94,164, 75,219,183,161,179,131,141, 97,105,158,197,168, 62, 1,186, 8,128, 76, 78,139,218, 2,180,204,197,209,189, - 54, 38, 94,110, 77,232,131,123,150,208,164, 74, 1, 40, 9,221, 29, 39,229, 62, 48,169, 59, 1,124, 14, 19,180, 49,254,177,161, -222, 51, 71,128, 90,117, 92,169,191, 85,251,218, 42,145,177, 58, 75, 83, 98, 16,136, 6,223,153, 71,112, 73,121, 77, 83,129, 66, -254,131,138,148, 85,169, 5, 3, 76, 26,166,172, 94, 83,138, 13,100, 62,238, 54, 69, 44,142,177,180, 82,163,236, 40, 52,212, 97, -236,129,174, 12,234, 70,250,231, 60, 51, 63,238,118,215, 84,222, 8, 64, 12,170,135,205, 0, 65,220,115, 6, 15,166, 31, 18, 4, -181, 35, 95, 97,174, 46,181, 14, 59, 62,221,134, 96,181,178,238,206, 99, 55,221,136, 42,176, 89,105,154,242,156,247,249, 14,136, - 66, 24,121,230,142, 77,198, 43, 46,189,128,128, 63, 61,158,112, 80,160, 66,215, 51, 96,225, 17, 24,216,174,210, 63,112,113,112, -130,227,232,173, 92,100, 46,191,155,179,243,169, 40,106,161, 35,220, 3,167,112,145,133,225,154,239,164,209,209,117,169,176, 17, -189,143,170, 77,203, 60,231,125, 29,205,103,172,158, 59, 84, 27,140, 89,136,162,184, 60, 25,116,184,107, 71,113,135,145, 60,138, -196, 23,103, 71,164, 41, 29,105, 64,196, 68, 9, 93, 57, 42,100,116,190,112,128, 59,232,153,188, 44, 59, 23,125,223,171, 98,199, -179,142, 7, 22, 69,193, 20,171, 28, 8,119, 52, 3,178, 63,254,248, 61,198,178,109, 38, 31, 88,176, 82,112, 7, 92, 98, 4,192, - 36,230,200,187,153,180,181, 40,236, 49, 81,193,106,178,219, 53, 73, 94,116,173, 40, 82, 19, 94,250,136,201, 26,215, 9, 88,141, - 87, 79,143, 24,184,209, 13,220,141,205,245,237,237,221,156,187, 77, 20, 1,248,125, 39,123, 93, 94,243, 71, 7, 67, 2, 73,113, -110,247,181, 35,123,245,168, 43,223,157,143,120,191,231,203,157, 3,138, 76,109, 79,203, 10,201,209,133, 34,216,105,162, 2,127, -184, 13,164,238,102, 69, 37, 54,236,163, 1, 56,138,157, 66,152, 58, 45, 15, 19,191, 32,142,124, 85, 19,241,154,154,130,155, 94, - 35,143, 9, 80, 15,139,253, 76, 84,133, 91,241,209, 84,136,147,186,170, 16,204,173,243,193,168, 22, 83, 9,112,177,255,114,189, -147,127,241,178, 47,175,175,181,187,214,230,130,142,143,123, 45,130,221, 80, 12, 65, 54,244, 64,239, 89, 27, 69,190,126,174,249, - 58,103,178,166, 80, 75,175,239, 40,100, 45,148, 86,240, 79,104,200,219,243,107,242,220, 87,155, 31, 25, 7,113,102, 9,100,156, -153, 91,220,153,190, 54,208,224,152, 4, 32, 41,216,152,220, 68,118,232, 52,167,207,251, 54, 50,148, 58,238, 1,186, 46,156, 49, -196,205, 92, 11,178,213,106, 65,233, 98, 40,220,192, 11, 28,216, 13,172,229,160,247,141,231,166, 11,252, 3,102,251, 52,138, 89, -187,235, 87,200, 70,170,154,164,113,178, 81,152, 62,194,122,155,126,180, 86, 42,220, 3, 77,106, 38, 9, 42, 91,178, 6,218, 13, - 2,145, 67, 98,167,124, 50,200,103, 71,139, 51,208, 10,245,158, 2, 49,223,106,111,165,167,215, 21,155,144,221,214,132, 88,158, - 62,121,162, 95,239,202, 63,252,240, 53, 63,243,175, 63, 61,179, 9,237,174, 36, 6, 11, 77, 16, 62,231, 80,155,194,107, 45, 80, -191,126,123,195,162,206,156, 12, 13,123, 83, 82,221, 47,145,227, 97,139,197,111,155,232,238,128,205, 34,158,169, 13,135, 95,145, -173,194,122, 45, 38, 84,208, 17,161, 1,242,205, 79, 35, 77,228,154,192,242, 5,139, 33,124, 38,122,163, 35, 54,148, 49, 13,188, - 14,250, 93, 77,118,109,121,118,156,200, 13,155,188,144, 88,172, 61, 45, 4,210,108, 69,113, 40, 76, 85, 42,225,163, 74,176,134, -102, 99, 90, 64,205, 23, 11,189,150,218,216, 38, 38, 42, 70,112,155, 62,100,147, 18, 84, 90,125, 22, 38,118,158, 81,171,108, 40, - 80,164,197,134,126,238,217,214,138,207,153, 22,254, 71,189,132, 92,126, 78,244, 8, 12, 76, 77,140, 75,227, 1, 26, 1, 43,226, -132,194, 82,216,175,159,157, 28,146,225,129,117, 85, 19, 88, 11,125, 47,227,233, 84,254,254,155, 55,122, 70, 62,149,207,159,118, -201,153,199,125, 58,165, 82, 98, 36, 87,215, 35, 3,201,106, 81,126,113, 51,147,207,159, 31, 74, 60,153, 46, 25,108,121, 24,144, -192,244, 2, 79,199,115,118,205, 45,138, 77, 68, 90,209,219,142,140,221,151,254,247,116,181, 99, 32,224, 78,205,171, 49, 36,200, - 77,230, 0,134, 12, 7, 77,111,114, 42, 68, 96, 27, 2,177,148,149, 86, 45, 91,119,210,194,205, 2,119, 15,224,143,130, 92,227, - 74,199,216, 70,201, 52,155, 47, 27, 30,232, 45, 8, 96,180,135, 29, 89, 37, 82, 98,227, 87, 19,173, 33,200, 6, 85,104, 98,212, - 56, 72,195, 1,120,194,164, 78, 0,160,237,162, 57,242,160,150,117, 88,243,101, 43,225, 21, 9, 13, 40,134,192,143,132,154, 36, - 73,173,103,143, 27,152, 1,149,139,238,171, 40, 93,235,218,172, 73,173,203,180, 14, 49,118, 10,150, 41, 26,165, 53, 71, 56,119, -119,173,202,169, 11, 29,141,209,247,218,236,200,118,149,247, 55, 31,224,146, 5, 0, 70,154,248,190, 60,180, 68,136,239, 99,247, -137,107, 65, 26,144, 33, 92,225,124, 6,109,112, 36, 60, 80,106,240, 90, 24,203,110,129, 12, 39, 15,216,198,184, 52,124, 40, 82, -163,151,136, 1, 30,113, 61,152,116, 35, 3,142, 85,180, 68,118,244,192, 80, 64,113,204, 71,120,226,172, 1, 80, 73,192,136, 40, -168, 4,231,155,247,210,247,113,161,129,156,240, 79, 46,185, 11,209, 88,130,174,198,221,182, 55,141,124, 47,238,163,247,144,224, -110, 55, 11, 18,151,162, 12,106, 97,157,200,175, 55,174, 53, 16,186,105,104, 35, 58,140,131,113,223, 40,195,235,171,149,106,207, -142,215,223,239,117,169, 49, 0, 12,197,205,100,198,110, 61, 8,221, 39,217,187,189,172, 40,235,157,159, 56,238, 0, 29, 23, 42, -124, 4, 34,250,149,107, 16, 0,248, 6, 20, 31,172, 6, 14,246,247, 56,126, 93,107, 1,245,221,249, 29,185,170,208, 74,248,175, -223,156,203, 31,126,152,203,163,129, 38, 78, 77, 84,107,136,101, 68,230,244,135,127,195, 97,139, 90, 3,250,240, 99,210,132,142, - 17,162, 48,216,251, 81,198,150, 54,181, 13,158, 63,236,127, 99,119,188,195,158, 23,197, 54, 62, 35,155,183,204, 58, 29, 0,189, - 48,205, 2, 88, 40,136, 26,236,144,224, 22, 5,180, 48,209, 47,250,204, 60, 62,220, 35,225,236, 94,139,107, 0, 28,199,243, 13, -139, 83,184, 68, 81,121, 17,197,119,108, 52, 67,140, 21,207,239,166, 92, 25, 16,112,170,215,253,179,199, 29,185, 30, 3, 4,106, - 70, 70, 40,144,118,243, 45,129,129,141,166, 57,206,225,108, 79,103, 83,153,104, 16,194, 78, 18,137, 62, 73, 0,132, 45,235, 98, -177, 90,255, 96, 26, 97, 70, 79,166,251, 15, 68, 47,123,102, 13,150, 65, 98, 9,169,178,113,226,254,177,158, 0, 73, 45, 61, 93, -230, 85, 7,152,115, 92, 94, 89, 22,255,241,205,173,252,155, 47, 95,145,194,186,216,154,191,247, 98,187, 99,145,142,250,251,187, -183,215,242, 11,189,166, 67, 45, 70, 32,131, 77, 28, 3, 59,112,189,222, 61,179,175, 93,104,162,135,250, 95,111,248, 72,102,122, -110,158, 63,121,204,221,250, 55,127,249, 90,131,116,139,103, 21,244, 86, 20, 18,147,121, 70, 49, 25,116,231,136,153,200,141, 91, -223,149,238, 56, 29,178,157, 63,186, 43, 76, 28, 49,241,192,132,231, 68,239,201,173,198, 89, 74,194,186,239, 60,240, 76,232,216, -114,184,149,133,102,179,138,233, 6, 98, 33, 10, 48, 36, 82,200, 52, 35, 86, 35, 78,133,110,154,197,149, 33,184,239, 45, 91,247, - 68,129,139,127,113, 74, 21,184,146,166, 61, 23,166, 62, 25,146,227, 61,207, 74, 22,130,173,196, 86,119, 68,108,227,185, 72, 53, -206, 56, 27, 0, 88,167, 46, 84,233, 36, 54,147,158, 40,145,207, 62,121, 41,111,127,250,158,197, 27,206,206, 95,125,254, 88,159, -179,182, 92,106, 23,139,117,203,110,103,234,122, 0, 2,159, 30, 14,121, 22, 94,156, 12,228,104,208, 54,207, 16,120,210,235,247, -220,207,119, 90, 0, 55,205, 85, 78,140, 37,208, 72,226, 90, 0,139,171,165,233, 76, 46,175, 51,211,134,208, 51, 60,215,196,126, -122,248, 88, 94,191,127, 43,179,233,152,197, 98, 94, 24,179,129,122, 19,146,200,225,222, 80,139,212,174,209, 1,155,177, 22, 29, - 71,242, 15, 63,194,163,220, 24, 5, 80,144, 91,192,144,170,180,162,144, 42,147,222,216,238,107, 35, 52,131,255,185,211, 59,243, -208, 38, 78,171,141, 94, 95, 40,189,197, 6, 72,220,239, 54,217, 28,146,217, 32, 77, 34, 45,160, 59,192,235,169,215, 14, 62, 10, - 5,217, 35, 34,251,250,124,126,184,155,113, 21,132,230, 17, 50,101, 88,207,174,221,153, 20,177, 14,246,202, 57,139, 95, 51,116, -226,181,136, 19,198,127,120,219,255,241,251, 11,125,166, 95,104, 35,145, 48,102,175, 52, 7,159,158, 30,210,135,228,126, 52,211, -152, 28,202, 99, 76,120,244,119,197,147, 85, 90, 11, 84,224,134, 47, 93,182, 19, 68, 72,120, 40, 35,168, 91,160,141,152, 8, 17, -140, 2,223,127,110,119, 38, 44,129, 32,213, 10,194, 26,141, 73,235,196,218,161, 73,136,190, 53, 71,162, 93,157, 48,162,218,127, -215, 69, 65,202,168, 6, 52, 21,238, 30, 68,209,146,220, 5,104,130,194,199, 71,185,255, 76, 88, 43,154, 21,238, 46, 19,184,141, -168,184,125,168,129,178,124, 87,139, 0,194, 4,227, 86,168,153,121,170,115,199,138,253, 47,199,210,101, 13,238,170,148,236,170, -157,117,179,209,168,125,171,183,217,174,182,138, 68, 23, 69,197,188,204,246, 54, 15,197, 64, 81,119,244, 91,234,180,103,230,113, - 92, 86, 5,129, 38, 95, 0,174,244,208, 34, 81, 21,158,252, 67,167, 75,108, 41, 31,187, 33,125, 38,203, 11,199, 47,216, 97,199, -131, 84, 4, 25,129, 43,230, 71,109,159, 93, 88,140,152,233, 3,138, 15,147,143,180,194, 5,186,194,165,139,239,196,142, 82,183, -226,202,196, 95,170,228, 89,169,144,149, 62,234,196, 97,167,161, 70,105, 59,228,194, 71,217,229,250, 97, 85, 64,225, 25, 58,241, - 85, 4, 27,192,137, 30,238,145, 89,246,154,162, 22, 71,244, 98,239,169, 26,239, 87,171, 1,169,198,173, 16,170, 65,199,227, 9, -161, 26,105, 85,187,125,238, 45, 97,202,131,238, 27,245, 91,234, 70, 32, 34, 15,160, 56, 79,234,152, 48, 44, 64, 5, 2, 42, 59, -181,233, 74,229,247, 93,213, 20,101,238,251, 45,160,185, 83, 3,250, 44,244, 31, 4, 6,130,220, 52,136,222,206,180, 50, 15, 52, - 81,161,219,203,182,114, 53, 75, 73, 43, 3,119,126, 52,190,151, 79, 30, 29,200,191,252,213,207,228,211,179,125, 6,215,127,251, -235,231,242,187,175,127,146, 31, 47, 70, 28, 41, 86, 54,141,232,224,224,143,204,202, 31,170,198, 80, 56,211, 4, 60, 94,108, 24, -196, 50,223,187,137,235, 96, 11,117,224, 77,181, 12, 39,180, 65, 93,243,128,251,111, 0, 54, 7,221,182, 33, 66, 0, 94,210, 32, -219,213, 66, 3, 34, 27,120,207, 95,244, 91, 82,162, 16,166,159,249,144,201,135, 29,114,110,128, 60, 76,220,142,181, 83, 55,219, -223,156, 50,176, 40, 36, 32, 82,131, 14, 23, 5,207, 76,147,200,116,149,144,173,129,251,139,226,168, 20, 43,132,112, 46, 0, 36, - 69,199,133, 64, 4, 42,157,241,106,109, 66, 4,144, 24, 37,105,189,176, 12, 98,147, 61, 5, 88,139,192, 67, 45,208,185,222,139, - 66, 7, 49,201,195,122,167,186,135,192,100,196, 98, 20, 46,151,173,165,172, 42, 89, 22, 68,215, 48,240,145,193,160,207,197,213, -221, 90,206,239,183,242,215,159, 29,202,223,124, 51,162,221, 38,116,223,159,156,180, 53,201,216,235, 2,228,186,203, 77,119, 60, -142,141, 51, 93,174,114, 2,133, 65,147, 74,200, 45,215, 68,170,133,227, 86,155,147,219,209, 72,126,245,233, 51, 25, 93,191,167, - 1, 16, 80,229,148,178,157, 45,201,133,142,163,148,242,189,121, 17,213,235, 44,202,164,126,164,124,199,201, 35,132,105,210,130, -247, 18, 5, 61,117,226,203,144, 8,253,174, 22, 72, 40, 18, 34, 95, 75,237,107,161,135, 61,121,234, 70, 69, 89,189,102, 50, 96, -221, 98,177,117,103, 76, 75,224, 75,160,200, 67, 8,184,164,156,222, 84, 94, 19,134,156, 46,164, 81, 25,113,145,162,218, 99, 60, - 27,107, 17,146,106, 66, 12,125, 77,208,136,109, 77,153,103, 27, 61, 27, 3,222, 51,152, 37,109,182,218, 92, 52,250, 90,244,236, -243, 93,160,217,192,250, 19,187,246, 40,202,229,255,253,230,138, 19, 38,160,183, 57, 57,113, 9,105, 38, 76,208, 31,245,179,223, - 79, 15,120,160,113, 46, 55,100,171,152,224, 85, 94,152,127,124,236, 62, 2, 97,100,136,244, 6, 71,230,145,197, 38, 20,108, 97, - 68,147,151, 78, 91,223, 71,255, 84,223,155, 57, 4, 50,134, 68, 37,239, 51,138,180,151, 79, 14,249,249,113,207,177, 82, 3,115, -229,160,175,133,237, 81,151,207, 5, 58,116, 72,175, 14,245,252,225, 94,224,119, 75, 69,179, 11,108,218,124,136,120,171,215,103, -127,208, 99,195, 9,234, 26, 93, 15,161,142,215, 79, 92,119,165,132,239, 13,159, 41,198, 68,253,188,231, 90,248,150,174,139,223, -110, 53, 93, 40, 41,167,182,255,102,107, 57, 0, 77, 45,112, 81,169,179, 60,160, 97, 48,164,248, 26,176, 90,198,192, 0, 30, 5, -103,161, 67,147,172, 22,129,158, 99, 45,174,190,121,183, 39,191,252,100, 95,246,186, 1, 49,105, 40,100,176,130,192, 36,225,254, -126, 74,198,215,106,181, 50,120,105,145,219, 94,148, 99,191, 32,172, 59,163,202,159,217,246,162,166, 46, 16, 6, 21,240,170,168, -109, 19,209, 45, 87, 1,190,210,233,182,255, 40,255,201,131, 10,183, 48, 82, 18,182, 91,119,228,178, 42,121,187,179,196,221,240, - 46, 27,127, 7,180,112, 21,244,173, 75,211,195, 18,153,120, 72,181,111,171,128, 98,244,124, 79, 18,175,238,242, 90,127,222, 52, -203,119, 15,227, 95,242,190,243,122, 12,155, 59, 55,186, 2, 83,217,174,215,129, 92, 46,202,192, 41, 6,248,218,164, 39,217, 30, - 43,244,241, 22,165, 14,189,171,172, 16,203, 91,119, 82,162,112,136,152,212,105, 71, 59,219,142,239,155, 26, 13, 27, 45,239,220, -169,174,112,139,212, 44,180, 85, 3, 93,199, 22, 75, 86,116,232, 6,249,222,205, 13,131, 32,138,200,147, 62,130,123,218,176,164, - 94, 58, 48, 45,240,164,102, 65, 53, 50,196,167, 7, 76, 60,156,224,160, 75,181,227,246,189, 55,187,128,134,169,200,161,160,169, - 58, 30, 30,244, 88, 8, 32, 66,177, 66, 58, 26,222,127, 98, 6, 56, 54, 90,119, 3,220,208, 70,190,230, 92, 23,121,145, 8,119, - 4,191,247,133, 37,248, 26,121, 31,250,123,142, 92,164,168,168,186,185,178, 66,246, 24, 16, 42,118,113, 18, 23, 49,137, 67,163, -198,101,101,138,190,193,164, 54, 33, 36, 1, 0, 95, 92, 77, 12,220,131,160,172,198,142, 25, 71,235,228,255,238,245, 44, 40,114, - 44, 95,214,206,112, 88,101, 80,248, 40,180,100,153,249,185, 31,182,219,218, 77,108, 40,178, 83, 70,109, 13,248,218, 69, 99, 66, -164,255,125, 55,154,202,166, 3, 5,172,173,116,181,242, 71,160, 3, 58,250,103,159,127, 34, 95, 98, 44,221,180, 98,152,251,231, -212, 58, 70,124,110, 92, 75, 4, 18, 4,152,229, 54,177, 0, 12,240, 75,211,104,144, 97, 41,245, 62, 20,197, 74,151,134, 22,161, -143,114, 83,219,167, 5,230,169,205,137,130, 62, 70, 24,189, 97, 12, 74, 65, 32, 76,103,128, 66,214, 11, 3, 59, 75,128, 62,241, -218,235, 36,166,212,101, 49, 95,155,140,235,194,238,221, 49,168, 67, 41, 4,114, 42,241,158,144,162, 43, 24, 27,118, 27,240, 40, -239,115, 93,150,119, 76,162, 57, 74, 90,242,230,242,150, 65,103, 8, 87, 47,125, 45, 20, 76,163,137,173, 47, 64, 49,172,120,231, - 16,213,193, 51,130, 36,185, 17, 51,238,137, 52,137, 64,173, 15, 24,156,237,206,145,254, 46, 39, 91, 81,170, 42,108, 70,238,163, -208,208,181,251, 43, 0,100,165, 70,152, 18,224,103, 0,175, 60, 55, 5, 54,252,220,111, 95, 79,228,127,253,183,207,229,247, 63, -106, 7, 3, 36,241,205,132,197,110, 28, 53,136,179, 65,241,115, 72,237, 2,195,151, 0,108,180,163,108, 48,146,141,137, 6,229, - 89,204, 98, 12,214,165, 8,148,187, 34,150,163,227, 67,138,146,152, 80, 78, 76,250, 24,186,101, 36,136,203,187,185,219,241, 98, -188,108,155,122, 26,135,224, 12, 64, 96, 40,107,240,154, 80,240, 68, 27, 1, 80,228,192,114,105,235,191, 81, 20,247,244, 53,224, -135, 1,230,205,237,253,136,215, 7, 1,125, 77,230, 81,200,150, 10,157, 59, 86,152,187,212,186,106,140,163, 51,106, 41,192, 56, - 39,229,180,136, 54,182,165,155,187,124, 84,196, 99,149, 81,184, 92, 41, 87, 84, 14, 50,133, 96, 74,119,104, 56,136,146, 52, 84, -243,224,160, 66, 30,156,238, 88,232,110,245,245, 6,180, 11, 62, 61, 58,145,205,226, 94,142,250,198, 71, 71,172,153, 3, 7,197, -137,159,212,147, 73,252, 28,214, 4, 1, 17,249,185,124,253,211,149,137, 97, 57,205, 46,118,171,232,208,159,251,128, 8,121, 61, -183, 96,182, 64, 38,183, 72,184,195,111, 82,137, 47,163, 88, 88, 0,165,204,238, 1,207,205,147,227, 71,242, 63,125,245, 75, 57, - 58,232,107, 12,179,123,129, 78, 27, 90,236,112,112,195,234, 24,184, 14, 20,171,152, 24,236,135, 0,129, 78, 36,214, 80, 49,217, -228, 92,215, 98, 28,206, 78, 63,179,124,130,201, 34,138, 72,250,156,184,198, 69, 37,124, 69,237,202,160,226,255, 7,126, 13, 93, -130,172, 90, 21,154, 63, 17,147,178, 21, 11,150, 91,197, 77, 94,162, 60,224,125,229,228,210, 87,192,208,182, 0,136,113, 26, 47, - 88,148, 2,224, 13, 32, 35,113, 47,233,142,120, 2, 54,143,250,231,209,116, 34,111,110,154,242,234, 68,159,205, 86, 38,151,151, -119,114,124,178,111, 83,219,164,193,107,185,167,207,107, 76,115, 19, 71, 3, 87, 34, 30, 31,235, 71, 85,162,217,129, 75,148, 86, -158,225,236,150, 81,245, 67,117, 42,221,177, 10,229,222,179, 2, 72, 69,102,179, 90, 21, 10,161,171,232, 32,136,218, 65,207,106, - 58, 92,181, 47, 75,185,195,141,153, 8,163, 60,244,189,172, 37, 8,115, 17,123, 80, 15,171,108, 61, 89,241, 57,106,190, 86, 15, - 50, 78,149,163,137, 11, 87,203, 11, 93,185,201,248,157, 21,194, 51, 20, 7,155,149,133,235,215, 11,209,247,246,158,131, 90,186, - 52,112, 43, 61,220,240, 94,183, 71,160,148,145, 71, 44,193,151,197, 67, 1, 19,186,177,141, 37, 46, 3,124,101, 20,104,177,113, - 74,149,212,215,236,106,108,170,209,239,116,107,244, 55,147, 32, 68, 67, 16,208,195, 7,155, 86,142,247,227,200,197,129, 76, 8, - 35,118,126, 55, 10, 1, 27, 43,219,136,141, 60,113,128, 45,196,238, 47, 16,199, 32,188,182,180,250,171, 56,233,213,106,130, 70, - 38, 44,110,138,154, 38, 70, 86,128, 23,110, 68,161,151,142, 82,247, 29,124, 24, 58, 40,166,114,215, 46, 50, 51, 41,113,208, 90, - 35,242,107,135, 7,184, 17,125,164,233,110, 69, 83,165,238,196,131, 31,120,226,143, 35,167,135,153,106, 94, 35,106, 17,101, 78, -155,215,216,168,111,228,242,131, 38,212,109,215, 69,130, 89,184, 62, 92, 39, 3,145,236, 40,218,195, 98,177, 25,177, 43, 20,158, - 49, 67,172,210,254, 23,103,161,217,244,130,196,148, 21, 49,242, 2,248,167,135,135, 79,127, 22, 35, 70, 33,223, 94, 95,155, 56, -142,152,138,119, 52, 31,210,251,215,107,130,242,101,246,187, 47, 95,156,105, 50,215,174,105, 27,243, 82,141,151,230,115, 31,233, -239,223, 81,162, 50,226,103,179,142, 75, 72,137,234,104,242, 4, 37, 41,141, 10,242, 92,209,241, 96, 55,106,250,253,246,158, 89, - 24,122, 18, 68, 34, 35,205, 73, 19, 18,144,233, 96, 59,192, 90, 30,251, 66,219,161, 70, 76,162,232, 56, 80, 56, 0,236,121, 52, -104,241, 58, 12,160,235,206,181, 74, 64, 96, 95, 43,177, 73, 88,139,250,227, 27,130,138, 0, 30,197,117,197,207, 96, 20, 15,244, - 46, 58, 92,236, 93, 65,173,195,200, 30, 69,232,143, 23,215, 44, 22,128,228,197,174, 56,241,179,109,234,133, 25,117, 21, 76,153, -172,105,207, 31, 38, 77,216,195, 23,118,255,204, 47, 97,109,246,191,133, 1,134,114, 71,180,155,187, 22, 45,120, 30,156,221,114, -123,221,242,163,231,177,146,251,141, 2,163, 97,206,244, 94,225,185,189,156, 90, 49,245,244, 88,223,219,116, 75,144,211, 92,239, -197,254, 80, 11,216, 32, 38,143,156,227,214,216,248,204,180, 41,214,247, 14, 96, 92, 23,207, 14,238,119, 16,155,139, 98, 12, 62, -121, 38, 23,183, 51,105,244, 31,201,135, 63,255,168,239, 41,225,239,154,234,181, 7,221, 47,219, 45,184,246, 10,160, 42, 71, 65, -109,211, 12,224,253,194, 40,187, 12,248, 59,180, 15,212,162, 17,211,157, 17, 49, 45, 56,159, 80,200,172, 4, 91,104,105,154, 27, - 79, 28,120,142,198,106, 91,239,204, 49,186,133,224, 75,179,209,116,145, 24, 20, 93, 91, 61, 99, 5,197,115,112,254,231, 62,122, - 47, 2,195, 38,136, 56,183, 63, 52,139,211,212,253, 14,128,119,162, 21, 47, 88, 20, 90,140,150,251, 90,136,153, 30, 38,209,235, -141, 2,247,189,225,116, 82,155,178,208,203, 30,185, 34, 91, 18, 19,178, 74,129,216, 71,177, 31,217,122,168,233,122, 6,104, 4, - 80,164,182, 18,247,136, 8, 88,248, 97,117,120,113, 63,179, 24,235,250,229,196, 21,128, 7, 15,157,126, 40,220,241,108, 68, 44, -172, 17,187,112, 70, 33,248,130, 2, 10,198, 59, 40,149, 90,212,183, 72,104, 66,246,211, 5, 28,244, 74,121,118, 54,212,207,102, -147, 19,188, 79, 76,149, 64, 51,190,158,108,185, 30,195, 52, 21, 5, 31, 19, 56,193,145,102,161,202,198,148,147,224,192, 20, 72, -181, 56, 62, 61,232,243,253, 53,184,126, 40,229, 26,160,110,136,139,121, 94,138,195,192,233,150, 6,248, 35, 2,191, 97,241, 97, -179, 51, 6, 24,227, 19,144,252,177, 57,249,133,205,152,120,137, 44, 53,255,141,178, 93, 61,203, 54,197, 64,211,103,236, 49,163, -126, 99,133,101,177, 16,174,114,115, 57, 62,216,103,227,139,102, 10,140,140, 80, 14,228,241, 80, 24, 15,129, 73,122,246,228, 88, -207, 42,174, 49, 86,174, 26,243,176,143,133, 58, 23,114,108,228, 65,188,116, 68,104, 81, 86,123,116,169, 59,210,170, 26, 9,252, -223,185, 83,147,232, 56, 83,123,231, 58,237,194,187,253,143,147,118, 81,187, 17,149,245, 40,157, 64, 5,236,182,144,180,224,245, -140,224,227,244,134, 40,180, 64,143,241, 69, 35,137,235, 7, 58, 10,196,149,175,196, 19,186,185,133,129, 91, 26, 84,124, 75, 71, - 64, 87, 85, 20, 71,152, 81, 81, 39,219,143, 71,248, 21, 80,172,168,249,245, 65,141,174,174,118,205,184, 41,168,156, 42,176, 90, - 53,234, 13, 29, 7, 80,217,132, 34,129,208, 73,201,223,131,201,118, 70, 30,184,242, 26, 40, 84,217,128,154,139, 82,165, 58, 6, -189,189, 13,169,108, 85, 87, 95,129,200, 48,225,176, 29,120, 65,193, 13, 6,129,249,210,189,156,181,232,209, 0,110,187, 49, 3, - 41,226, 0,167,187, 85,173,144,134,174, 28,139, 69,118, 17,161,105, 87,199,137,237,162,179,220,104, 55, 52,128, 65,231, 91,154, -207, 58, 13, 10,160, 16, 87,166,172,184, 49,227,198,131, 70,144, 78, 20,124,116,125, 75,239,222,245,245,125,245, 16,187,131, 85, -238, 72,121,203,102, 54,205,201, 42, 77,248, 60,247,157,190,117, 6, 41,233, 94, 49,223, 35,244,173, 3,138,252,196, 38, 65,233, -192,170, 48,182,170, 30,134, 16,177, 99, 20,234,226,144, 6,212, 66,145,156, 77,106,102, 57, 97,248, 64,125, 42,189,155,207, 29, - 77, 93, 5, 24,170,156,197, 81, 29, 68,177, 59,181, 49,120, 68, 77,105,162,168, 49, 38,197, 40, 28, 30,208,235, 21, 65, 77,232, - 12,242,188, 65,117,168,219,187,169,196, 39,251,188, 70,183,107,147,248,196,165, 65, 34, 11, 92, 8,131,197,133,211,171,230, 43, -237,254,246,186, 4, 45, 33,184,211, 98, 87,207, 69, 91, 59,255,201,210, 28,192, 40, 93, 11,222, 43, 62, 67, 28,145, 63,142, 99, -143, 2, 12, 65,186,201,130, 38, 54, 21, 71, 47,136, 64,135, 65,219,180, 92,239, 56,142, 69,130,200,179,178,134, 76, 49,193,119, -140, 42, 25,196,230, 25, 0, 86, 10,156,167,174, 70, 25,129, 99,183,211,181,252,171, 95,124, 66,199, 42,156,247,126, 55, 49, 92, -135,254,126, 76, 38,158, 28, 13,249,231,209,232,142, 65,123,231, 78,137, 40,230, 74,140,155, 53,153, 91,199,146,242,158,114, 2, - 20,151,245,186, 37,142, 34,159, 84,229, 53, 45, 18,231, 20, 34, 68, 37, 41,144, 66,138, 94,225, 19, 10,106, 96,248,100,173, 98, -100,132, 62,173,163, 34, 34,138, 96,200,240, 54, 91, 68, 72,255,233,253, 76,126,249,108, 32,255,215,253,181, 28, 12,187,214, 97, - 47,215,124,174,144, 56, 48,125,107, 12, 7,238, 88,102,138,113,232, 54,209,175, 1, 24,137, 34,153,239,113,183,164,106,221,108, - 62,147,159,127,254, 41,149, 20,199,211,133,116,186, 77, 82, 86,223,124,184,149,126,175, 33,209,186,107, 19, 64,178, 43, 34,238, -249, 35,218, 19,115,228,194,231,186,167,113, 22, 96,100,128,159, 8, 56, 59, 61,146,183,151,183, 6,212,211, 24,129, 66, 20, 73, -176, 3, 91,217, 92,147,208,106,206, 73, 20,176, 68, 48,204,217,232,243, 61,247, 69,104,106,162,122, 70, 87, 20,155,240,180,252, -188, 84, 9,162,194,166, 32, 57,114, 61, 21, 89,241,128,228,211,112,103, 67, 40,152, 77,231, 43, 45, 78,237,233, 64,162, 2,112, -111,177,173, 44,143, 75, 82, 49,193,190,184, 13, 83, 82,190,210,178, 33,235,229, 92, 26,250, 75, 7, 45, 80,239, 76,135, 1, 10, -123,143,142,159, 81, 59, 29,187,233,227,190,241,202, 65, 13, 67, 44,186,215,164,139, 53, 5,246,205, 72,170, 13,118,237,134,224, - 7,120,147,188,255,182,249,166, 83,161,146, 49,204,148,255,160, 62, 8, 60, 8,158, 39, 40,200, 5,193, 90, 70,155,149,252,240, -118, 41,127,243,219, 63,232,251,155,178,179,207, 74, 99, 60,160,116,216, 63,126,194,226, 6,207, 21, 5,175, 24, 26, 60,187,249, -227, 64, 78,185, 94,183, 23, 39, 39,218,253,239, 81, 26,119,199,130, 90,200,138, 1, 85, 20,107, 37,168,113, 54,146, 38,167, 47, -213, 4,185, 6, 47, 39,198,202,233, 52, 66, 2, 49,205, 4, 43,230,211,118,120,220,165,247, 7,158, 21,152, 66,225,140,157,246, - 0,150, 12,228,207,239, 70, 50, 89,109,244,153,142,229,236,232,144,207, 2,206,194,179,211, 83,198, 46,184, 17, 66, 52, 9,147, - 37,226,193, 92,248,136,147,132,108, 95, 94, 28, 55, 57,149,192,115,118,124, 52,208,207,179,146, 27,253,222, 24,240,249,204, 71, -145,181,156,171,239,168, 43,192, 81, 21, 20, 57, 90,247,224, 76,128, 89,186,169, 71,219, 68,190, 7, 15,227,242,170,187,175,254, -199, 7, 22, 29,132,171,210, 5,164,123,153,231, 46, 30,178,212, 71,162, 1,105, 42, 54, 22,171,166, 3,120, 88,235,142, 12,197, - 1,188,141,243,204, 3, 69, 82,255, 94,241, 11, 77, 39,163,208,185,211,213,176,161, 44,235,110, 58,240, 17,132,141,123,139,250, -239,153,212,221,254,144, 57, 45, 48,122, 13,187,109,114,200, 51, 25, 52,219, 15,147, 12,252,222, 80,234,245, 0, 2, 27,122, 99, -242, 78, 37,231,104, 57,168, 68, 53,244, 27,217,153, 56, 13,173,114, 93, 66,199, 56,159, 47, 40, 54, 67,111,118,160, 46, 1,172, -209,131,143,145, 19,146, 62,138, 31, 19,216,176,177,126, 3,158,233,237, 88,198,147, 21, 85,195,176, 75,131, 40, 66,209,107, 80, -200, 4,239, 5, 73,106,162, 15, 43,245,213,245,195, 28, 28,245, 12,225, 41, 86,245,211,192, 5,188,227,204,174, 11, 30, 8,238, -196, 50, 91, 65, 84, 93, 47, 42, 74,210, 51,114, 3, 17, 82, 93,105,147, 18,208, 83,186,104, 75,232,215,222,124,210, 27, 46, 57, -106,123, 68,116,189,184, 79,184,183,216, 1,115,191,231,235,146,204, 11,194, 70, 98, 32, 62,161,179, 89, 66, 74,155,141, 84, 11, - 38,115, 60,216,244,158, 78,179,122,245,131,233, 13,222, 91, 41,129, 39,245,226,193,209,175,118,246,243,151,117,233,216, 74,154, - 54, 12,130,154,246,198,115,230, 78,133,145,163,240, 43,169,100, 32,110,209,201, 85, 5,100,187,213, 33, 16,101, 78,196,109, 65, -125, 5, 72,126,162,146,191,209,138,190, 55, 88,200,227,211,125,222,207, 34,221,154, 73, 17, 85,198,114,158, 87,151,147,225, 94, - 22, 43,128,235,251,137, 38,245, 30, 11, 3,172, 28, 38,155,221, 3, 85,144,206, 81, 5, 87, 47,116, 49,140,109,146, 70,123, 83, -189,167,240, 95, 15, 82,179, 99, 12, 57,214,206, 40,224, 2,233,224, 56,210,231,163, 29,216,142,212,149,199,240, 26,237,134, 77, - 71,160,227,141,207, 4,128, 29, 70,184,163,201, 66,207,102,166,193,161, 33, 83,118,135, 70,219,251,246,221, 45, 3,113,147, 12, -148, 37, 95,107,197,117,197,206,113, 44, 33,247,211, 40,190,123,205, 22, 71,171,232, 88,193, 81,222,184, 33, 9, 58, 94,168,157, -101,164,180, 26, 59,102,183,203,234,130,185,210,231,143, 92, 38,118,235, 99, 75,169, 40,148,149,252, 65,181, 26,115,142, 99, 25, - 88, 23,137,137,153, 57,142, 25, 35, 3,241, 9, 59,208,175,223, 47,228, 95,124, 58, 96,193, 4,212,242,180,185,181, 85,162,115, -187, 49,229,195,125, 6,101,111,190, 41,121,206, 64,229, 3, 67, 97,127,223, 10, 51,220,251, 56,220, 73,210,108,154, 8,138, 94, -183,175,190,250,107,249,253,111,255,139, 44,183, 37, 57,235, 24,159, 34,137,205, 23,118,175,241, 58,120,110, 26,154,236,150,117, - 83,225,241, 1,166, 39,219, 37, 11,168, 22,187, 59, 99, 47, 32,137, 32, 98,146,155,142,123,227,157,100, 16,251,232, 54,128, 56, -205, 74,224, 41,180,240, 36,142, 28, 12,141, 21, 60,239,173,200,236,150, 41, 23, 90, 90, 17,109, 19, 75, 51,208, 1,198, 3,205, - 37,158,254,144,156,125, 91,121, 81,109, 13, 88, 8, 77, 30,219, 93,196,238, 28,251,118, 72, 22,127,255,245,107,222, 75,196,168, -149,155,248,140,151,177,188, 72,250,210, 41, 39,114,175, 63, 7,198, 18,215, 86, 26, 19,167,218, 81,182,244,249, 24, 96, 79, 61, -215,231, 97,186,147, 63,165,119,178, 94,140, 93,182,217,226,231,201,254, 64,254,187,207,123, 4,190, 1,104, 6,124, 12,172, 93, - 1, 93,222,236,242, 90,174,153,224, 99, 7, 70,166, 16, 48,130, 49, 79,192,200, 76,165, 83, 40,149,157,156, 60,147,225,193, 35, -106, 1,244,244, 62, 48, 86,185, 94, 7,138,152, 1,169, 95,200, 23, 90,188, 68, 37, 21,175, 82,199, 76, 65, 80,198,148, 29,173, -179,142, 19, 0,253, 54, 76,148, 33,109,135, 99, 54, 47,207,207,246,245,122,157,200,215,111,174,152, 43,160,101, 0, 90,225,151, -207,246,104,210,244,246,122,206,251,103,190, 17,109, 38,227, 22,101,183,109,189,176,243, 73, 0, 26, 28,208, 4,225,200, 7,218, -220,241, 32, 33, 72, 16,185,119,193,125,250,156, 34, 75,167,122,246,112,166,215,110,214, 98,147,170,162, 94,233,110,233, 64, 41, - 90,124,155, 55,199,163, 97, 36,183, 26, 71, 6,253, 38,207,114, 99,174,205,227, 0,122,209, 89, 90,119,213,148,244, 12,139,250, -129,171,118,148, 81, 24, 61,112,128,171,132, 40,129,115, 64,131,154, 50, 17,125, 36, 4,242, 79,180,110, 1,102, 41,173, 59,103, -133,233, 28,234,204, 17,207,248,208, 65, 42,110,106, 31,219,142, 21,221,153,249, 20,241, 3,178,114,174, 58,245,184,109,154,103, -193,131, 29,104,224, 10,105, 65,189,167,121,224, 98, 87,125, 90,165,124,102,104,245,162,150,225, 52, 4,124, 86, 27,219, 84, 93, - 93,236, 92,218,138, 31, 78,125,114, 26, 43,148,181, 91, 93,101, 99,200,241, 22,253,169, 83,167,223, 88,231, 10, 91, 64,116,226, -176, 99,228,136, 52,177,131,212,240, 14,103, 15,224, 15,176, 14,102, 11, 57,208,202,174,217,220,103, 36, 67,112, 98,178,209, 68, - 23, 31,180,184, 27, 50, 14, 36,170,126,125, 88,227, 1, 19, 6, 71,100,137,141,201, 24,212,125, 63,137,196, 75,186, 5, 68, 39, -150, 91,222, 19,142,132,188,123,197,125, 55,163, 25, 27, 75, 27, 0, 18,123,181,134,155,175,136, 83, 10,115,118, 15, 38,101,232, -110,118,116,103, 11,234, 36,157,121, 64,219,229,230, 38, 68, 62,102,110, 35,195,128,210,134,153, 57, 44, 37, 45,138,174,164,165, - 49, 41, 16, 52, 50,175,188, 42,160, 93,154, 61,128,165, 72,137,219,149,190,123,245, 42,249, 35, 57, 81, 59,123,133,216, 26,169, -240,196, 29,177, 19,199,217,193, 78, 55,240, 53, 10, 30, 10, 90,174,122,193, 25, 20, 14,164, 12, 2, 55,195, 48, 37, 68, 8, 91, - 32,137,192, 24, 2,212,154,184, 72,121,143,103,179,153, 77,140,208,249,228, 21,197,202,236, 61,239, 38, 83,249,252,165, 80,111, - 28, 8, 26,240, 75,161,157, 77,141,132, 44,243, 9,147,163,149, 51,123, 15,120, 79,247,211,165,254,124,230,224,208,146,227, 72, - 24,192,112,242,178, 53,236, 2,186,215,152, 59,242, 53,147, 26,229, 91,161,181,224,194, 62, 72,146,152,186, 44,189,112,230,153, - 14,204,209,107,187,115,107, 85,223,119, 10,129, 63, 86,108, 66,179, 31,103,106,201, 41, 65,193, 49,243,198, 53,251, 9, 66,164, -236,172, 49, 1,208,105,136, 23,112, 45, 22, 60, 26,140,129,251, 24,116,121,175, 91,141, 22, 87, 14,107, 36, 72, 20, 69, 26,232, - 37,180, 36, 69,181,201,220, 21,189, 2, 83, 86,180,103,222, 86, 5,187,108,107, 52, 39, 23,119, 10, 29,180, 90, 53, 26,156,148, -229, 69, 93, 4,150, 98, 54,206, 40,242,187, 45, 83,217, 43, 41, 80,178,149, 94,212, 38,223,250,187,203,149,204, 53,254, 61, 61, -208,231,106, 93,114,223,140,123, 50,232,134,126,246, 75,142,104,227, 29,220,204,114,118,116, 65,240, 48,209, 3, 72, 9, 59,111, - 88,121,238, 54, 27,130,194, 70,227,177,188,120,254, 68, 6,223, 14,100,124,113,197,103, 6, 12,161,217,210,146, 9, 95, 3,247, -141,210,192, 33,247,228, 4, 72,209,254,115, 77,202, 92,117,198, 48, 77, 64, 39, 8,249,214,205, 10, 9, 43,103, 87, 8,127,248, - 13,177, 45, 13,217, 63, 57,179,179,141,137, 87,120,230,109, 85,200, 98,163, 71, 65,159,152,211, 62, 92, 55,136,173,224, 90, 67, -153, 82, 92,213,177,198,113,232,153, 95, 70, 72,140, 43,211,107,192, 55,108,133,224, 46,220, 79,188,183,147,189, 19,210,209,176, -130,184, 25,141, 57,209,107,184,189,110,225, 30, 15,135,253, 80,238, 70,247,114,126,123,207,162,245,213,227, 3, 22,124, 91,202, -218, 38,210,239, 15, 25, 71, 17, 25,224, 43,112,117,125, 46, 11, 77,246, 16,121,161,197,172,198,128,197,234, 86,126,186,184,101, - 60, 44, 29,112, 86, 1, 96, 67,131,104,213, 57, 36,142,108, 34,107,141,149,139,213, 36,198,159, 7, 88,177, 9,127,131, 78, 44, -143, 15,246,244,223,250,251,187, 48, 61, 42, 41,112,246,232,176, 79,188,201,235,119, 87,242,244,172,167, 73,244,128,116,211,197, -218, 44,134,177,154,249,249,147,161,124,127, 49,149,247,183, 43,130, 3,239,151, 5, 57,229, 63,127,126,204, 21, 4,228,110, 79, - 15, 7, 28,185,127,250, 4, 83,149, 59,198,127, 20,173, 48,120, 57,222,211, 66,224,126,201, 85,131,121,169,151,242,234,108,160, - 9,217,214, 63,152,166,160,208,155, 46, 83, 38,121,124, 95, 18,110,121,223,166,171,204, 38,213, 4, 87,151,122,134,150,206,236, - 73, 8,182,163,138,106,105,152, 31,203,195, 33,139, 78,196,225,233,116,206, 60,115, 61, 94,235,245,111,201, 73, 18,210,209, 13, -211, 66, 76, 18,227,134,155,146, 84,238, 43, 12, 44,222,185, 87,137,144, 99,178,252, 65,154, 51,240, 81,117,189,120,175, 69, 75, -202,154, 35, 12, 46,223, 3, 32,203,196,254,139, 74,185, 76,194,154, 51,206, 7,169, 2,229,201, 67, 50, 38, 93,165, 40,106, 61, -108,234,190,103,214,157,135, 97,236,175, 91, 37,131,178,246,221,102, 85, 92,228,181,153, 72,197, 71,102,114,205,210,186, 64, 40, - 29,205,141,164, 65,113, 16,188, 47,159, 58, 12,250, 45, 22, 30,120, 15, 20,213,209, 63, 79,103, 5,119,188,131,142, 1,249, 66, - 71,157, 98,244,129,125, 42,222, 23,110, 62, 30,144, 78,179,225, 24, 2,240,204,245,125,245, 27, 68, 86,226, 90,227,245, 42, 32, - 6, 57,233,110,105,105,116, 66,211, 18,175, 40,134,252,156,190,185,159,111, 82, 30, 28, 10,248, 39,166,153,188,171,165, 70, 99, -247, 83, 46,184, 19, 14,106, 46,184,249,176, 71, 73, 72,189, 0, 76, 16, 48,122,195,184,176, 66, 88,163,168,224, 58, 33,176, 9, - 66,225,102, 49,133,239,125, 1, 38, 74, 75, 13,246, 48, 37, 32, 54,192, 2,117,176, 77,125, 53, 19, 16, 9, 95,153,204, 84,247, -143,232,117, 92,207,216, 84,220, 82,118,198,230, 71,142,159, 7, 62,129, 93,116,153,240, 33, 43,242,226, 65, 48, 38, 50, 47,242, -106,245, 64,209, 17, 87,109,171, 58,112,124, 62, 20, 90,221, 78,191,166, 51, 34,103,225,176,211,109,144, 59,220,173, 79,110, 2, - 47,248,130,154, 10,105, 64,206,130, 69, 41, 9,142, 97, 92, 75,220,226,251, 16,244, 49, 74, 67,226, 36,200,168,208,135,173,219, -228,116, 3, 29,208,150, 86,153,137, 77, 54,240,115, 5,184,173,115, 89, 77, 67,118,187, 0, 61, 33,201, 72,220,169, 45, 73,105, - 34,162,201,200, 92,237,114, 57,210, 74, 29,154,236,116,219,242,137,146,157,125,195, 28, 4,101, 94,227, 92, 40,179,139, 49, 34, -254, 79, 19, 76, 25,149,164,146, 5, 68,144,195, 35,122, 77,155,218, 36, 46,233,175,222,207,219,146,179,144, 14,184,207, 71, 80, -220, 22,166,158, 23,186,241,138, 80,128,105,195, 36, 13, 17, 27, 88, 70,226,166,227, 94, 96, 63,139,130,113, 4,138,218,214,138, - 38, 96, 9,140,179,107,247,145, 98, 25,203, 29, 3,205,122,183, 54, 33,155,200, 60, 24,240,140, 99,100, 73, 11, 91,167, 25,150, - 46,152,100,207,101, 40,207,143,247,229,114,188, 96,241,130,169,194, 99, 13,160, 31,110,166,152,113,213, 38, 32,213,243, 95,197, - 40, 22, 69,184, 14,137,153, 6, 73,207,138, 19, 32,184, 97,104,131,221, 43, 58, 75, 40,230,253,249,221, 92,190,122, 57,148,255, -231,235,145, 28, 31,244,185,138,200,248, 30, 77,140,101, 1, 68, 63,246,180, 40,144,196,156,251,176,202, 64,177, 29,106,130, 93, -208, 63,161,224,124, 37, 42,181,155,154, 46,228,115,253,222,159,125,249, 11,249,199,111,190,213,231, 66,159,167, 53,144,245, 7, - 50,214,247,188,210,107,137, 29,115,133, 77,233, 52,180, 48, 56, 50,170, 26,238,225, 9,124, 30,134,141,122,101,112,124,184,199, -224,189,253, 52,245,245, 92,204,105,137,201,198, 22, 76,252,152,212,225, 12,162, 16, 35,180,165, 48,195, 42,172, 84,176,242,156, -110, 77, 31,157,150,178,250,223, 80,171, 20, 7,201, 21, 62,241, 50,234,175,129,192,178,204,206, 16, 14, 27, 86, 21,216,221,226, -253, 21, 52,161, 17,233, 38,185,188, 60, 25,176,104,195,180, 47, 14, 13,240, 92,134,166, 87,126,169, 93, 33,232, 89,192,146,124, -254,120,159,137,107,168,247, 96,127,208,145,156,160,197, 6, 87,131,224,187,195,129, 49,244, 21, 45,244,215,135,250,217, 48,166, -183,120, 45,254,218, 15,103,191,162,225,225, 89,197, 61, 70,192,193,142,158,166, 39, 77,172,224,172,120, 60, 26, 14,217,124,192, -213, 16, 13,194,147,167,207, 73, 99,123,245,108,200,238,218,216, 90,122, 54,103, 75,125,159,129,124,247,238,134,235, 68, 28,249, - 94,211,248,234,183,147,141,217, 12,107,199, 62,104,233, 89,213,243,139,215, 6,213,239,221,229,189,158,151,161,196,249, 78,222, -124, 24,201,231,207, 14, 25, 35,143,247,205,155, 30,231, 31,118,172,189, 47, 30,201,167,143, 6,242,211,237, 82, 59,236,142,140, -180,138,188,184, 95,211,156, 70,202,194,133,143, 66, 62,123,235,109,230,118,171, 1, 53, 87,118,153, 77,135,132,197, 55,114, 85, - 76,174,253,205,104,196, 88,137, 24,132,245, 3, 77,135,118,169,131, 29,181,240, 27, 14,248,188,160,176,193, 57,122,123,147,233, -245, 63,100, 76, 66, 51,133,230, 48,206, 50, 83,107,146,143,212,185,138,143,236, 42, 31,244, 64,141,211, 91,229,242,162, 2, 82, -249, 27, 19, 34,125,203, 26, 96,198,142, 9,187, 53,239,132, 43,197, 47, 86,219,174,242,149,123,181,110,178,143, 57,237, 79,145, - 4,114,175,208,171,159,139, 2,235,210,179,220,132, 23, 50,223,209, 33, 65, 82,132,134, 74, 86,166,143,205, 68, 10,225,153,196, - 56,191,177, 7,177,220,197, 94,240,143,201,206,154,228, 44, 64, 62, 24, 47,163,243,196, 97, 56,220,235, 81,202,117, 75,110,126, -198,206, 9,221,111,214,194,254,179,109, 94,182, 24, 69,105,181,132, 61, 25,110, 62, 59,116,223,101, 65, 2, 23,175,131, 27, 68, - 4,164,152,188, 35,146, 52, 28,182, 58, 20,137,182,224,189,221,165,110,120, 18, 48,121, 39,190, 51, 5,215,180, 2,186,161,224, -128, 46, 61,190,207,192,121, 33,199, 85,203,141,141,167, 80,132,140, 57, 14,246,110,212, 71,145, 72,164, 24,119,115,229,209,176, -117,198,108,147,242,154,110,138,162, 30, 67, 33, 80,183, 82,155,142,248,214,197,212,142, 10,115,204, 98,128,114,225,154, 74, 49, - 42,242,132, 91,186, 13,166,237,188, 31,240, 11,244, 33, 15,108,106,178,115, 64, 26,169, 41, 30,100, 66, 55,247,168, 14, 86,144, - 7,174,158,101, 21,122,130, 39,217, 19, 7,249,228,238,157, 46,206,138,175, 0,148, 9, 59,102,235,204,171, 42, 51,112,197, 62, -163,198,101,181,169, 75, 37, 86, 82,123,169,251,239,166,237,163, 3,143,200,217, 78,140, 45,144, 58,114, 29, 65, 15,200,127,112, -139, 33,146, 1, 4, 49,196, 33, 16, 4,177, 18,201, 8, 92,179,233,197,120, 50,151, 73, 39,148,243, 17,168,136, 77,114,196,161, -191,143,125,183,237,190,133,146,145, 81,108, 19, 48, 84,213,133,235, 44, 0, 36,151,106,199, 10,132, 61,216, 36,129,243,143, 81, -244, 65,194,211,192, 68, 45,190, 95, 84,252,184, 78,189,126,200,238, 32, 43, 33,156,210, 51,225, 30, 41,232, 52,183,166,133,176, - 41, 58, 2, 95, 0,129,162,202, 86,185,178, 66,198,117, 67, 39,209,236,152,168,146,129, 21, 67,217,215,223,117, 51, 94,201,104, - 54,147,117,106,134, 42,226,220, 98,128, 51, 13, 19, 81, 82, 13, 17,197, 16,118,234, 0, 41, 21,165, 21,251,227,233,202,117,228, -253,252, 99,210,212, 52,156, 9,117, 5, 74,251,121,188,119, 36, 39, 19, 37, 10,205,238,213, 99, 71,181,250,170,213, 12, 43, 99, -160,210,246,234,120, 45, 60, 87, 59,103,165, 52,249,103, 99, 50, 96,162,129, 11,252,167,243,165,252,247,159,246,104,189, 76,124, -134,254, 31,104, 92,120,249,147,163,129,141,120,233, 86,150,152, 71, 54, 24, 35,113,193, 93,230,254,176,239,107,201,156,133, 19, -204, 68,208,121,223,222,143,165,221,221,151,255,225,175,255, 74, 59,166, 41,175, 37, 98,207,225,175, 95,241, 61, 98,106,131, 66, - 15, 43, 26,196, 16,136,163, 76,200,102,217,178, 72, 19,109, 12,240, 53, 48, 56,166,219,156,192, 55,170, 83,106, 18, 66,161, 88, - 56, 71, 89,124,119, 28,251,138,110, 7, 10, 41,146, 68, 11, 69, 71,139, 5, 83,225,215, 23,199, 31, 6, 78,248,252, 20,244,170, -168,191,166,185,108, 84, 79,182,192, 90,156, 5, 6, 96, 51,195,159,144, 49,140, 30,241,250, 94,127,188,156,107,146, 26, 82,160, - 69, 60,214, 67,207, 34, 40, 32, 66, 54,160, 20, 43, 48, 22, 80,187,108,197,125,249,242,229, 19,126,199,197,221,130,138,119, 32, -160, 44,118,250, 12,245,251,122,205, 15,229, 19,237,134,227,210,104,110,120,230, 49,110,190,213,179,113,165, 93,229,205,253,148, - 49,159,163,112, 61,155,125,202,212, 6,156,136, 65,174, 27, 95,195,148, 11,241, 15, 5, 3,117, 61,146, 6, 81,222,128,227, 30, - 12,219, 44, 50,238,166, 27,198,152,243,235,137,118,210, 35,217,174, 71, 90,236, 44,217,113, 3,163,128, 41, 73,191,221,213,215, -223, 51, 31, 1, 40,229,233,181,129, 30, 59,198,248, 31,238, 23,210, 12,172, 65,216,176,232, 41,101,175, 85,178,187, 30,118, 33, -187,189,213, 34, 61, 37, 70, 32,215, 66,249,101,116, 32,151,119, 51, 62,239,231, 55, 19, 74, 47,163,224, 0, 40, 22,207, 18, 85, -236, 38, 96, 55, 52,249,236,146,133,164,247,109, 95,139, 13,224, 84,192,213,199,212,180,153, 24,152, 23,141,193, 64,139,204,201, -198,128,112,149,183,193,158, 62,207,160, 78, 67,244, 13, 56, 28,196, 80, 52,125, 56,143, 88,115, 97, 84, 79, 1, 41,248,154, 76, - 50, 45,112,208, 8,101, 92,177, 16,175, 25,212, 82,158, 54,190,172,187,223,138, 3, 29,132,181,154, 88, 69, 47,201, 61,128, 91, -110,119,227, 14,243, 18,225,168,128, 84,138,208,193, 16, 12,194, 8, 24, 15, 35,159,168, 17,214,223, 7, 99, 0,188,241,245, 2, -160,138, 64,244, 25,212, 27,219,225,161,171,100,252,136,142,100,183,109, 15, 53,110,252,146, 22,123, 49, 31,182, 22,221,202,240, - 80,235,247,184,211, 28,209,183,238, 99,139,194, 15,193, 26,114,153, 24, 5,133,129,125, 70, 72, 55,226, 33,196, 67,247,244,236, -136,227, 77, 0,158,240,217,240,250, 0,108, 32,224,163,202, 70,240,154,235,195, 99,134, 46, 91, 57, 58,104,209,137,168,201,145, - 80,198, 46,166,178, 38,197,129, 44, 3,123, 31, 64,167,102,148,170, 13,169, 96, 85,249,211,103,100, 1,152,158, 47, 2, 84,154, -110,248,243,149, 98,219, 2, 50,128,217,166,230, 61,110,150, 89,125,221,171,149, 8, 42,208,178, 34, 17,226, 97, 45,115, 71,179, -219, 23,240,224, 96,173, 33, 78, 65,163,113, 67,244,145, 70,186,119,129, 85, 65,199,157, 51,194,147,137,125, 27,216, 38, 12, 93, -154, 53,247, 49,184, 83, 64, 62,114,239, 42, 93,171, 54,115, 73,219, 74, 97,175,162,124,208,137,204, 65, 49,245, 57,178, 1, 78, - 61, 90, 71,128, 77,220,246,183,112, 63,232,192,187,202, 0,235, 0,167,135,132,145,117, 66,134, 96,183,235,199,205, 83, 32, 44, -124, 42,234, 1,170,235,204,247, 93, 53,250, 30,175,233,244, 69,220, 79,118, 11, 40, 16,169,177,222,208, 46,160, 69,196, 56,118, -120,122, 23,184,211, 70, 49,137, 98,173,162,228, 80,254, 85,223, 51, 18,119,160,157,201,146,221,127, 78,218,201,155,155, 37,119, -160,211,133, 81, 38,231,147, 41,223, 51,170,235,128, 18,164, 91, 68, 22,237,162,155, 76, 8, 80,165,163, 75,223,165,117, 92, 37, -165,151,115,147,195,213,247,190,218,206, 61,113, 52,216,149, 96,212, 11,207, 0,112,112,209,198, 0, 95,130,206, 52, 36,159,189, - 77,222, 49, 56,239, 16, 57,105, 5,166,218,134,238, 15,215, 99,101, 50, 93, 92,185, 20,181, 84,127,193,226, 9, 93,170,129,221, - 50, 82,220,176,130,128,253, 39, 10,100,227,234,102, 92,229, 84, 2, 33,212, 78, 72,154,228,168,227,218,238, 13,250,236, 38, 41, - 13,155,151,228,245, 30,239, 15,216, 69, 87,114,200,247,227,177,111,132,109,138,115, 53, 89, 16,113, 95, 21, 93, 0,103,113, 29, -147, 85, 69, 87,233,241,165,244,174,179,112,193,167, 88,139,239, 62,157,226, 96, 91,140,142, 58,140,108, 90,182,208, 78, 21,157, - 13,120,230,163, 69, 65,206, 58,132, 68, 16,112,247, 53,169, 76, 53, 81,194,161, 16,122,224,232,244, 18,160,169, 67, 3,147, 97, -202, 3, 80,215,118, 27,177,248, 26,232,103,194,253,218,110, 77,244, 9,126,230,215,183,247,114,118,124, 40,191,248,226, 19,249, - 63,254,243,239, 88,116,254,249,199,107, 98, 87,108, 10,149,113, 98,129,142, 26,168,107,220,119, 48, 26,112, 79,169,231,224,116, - 50,158, 89,189,133, 24,243,195, 82,147,116, 46, 96, 86, 66, 19, 21, 66, 35,129,216,182, 3, 69, 49, 93,201,227,227, 99,249,242, -211,231,114,160,113, 40,164,123,228, 70,254,254,155,159,104,167, 74,100, 60,234,118,172,183,160, 86,135,198, 40,249, 88, 42, 89, -106,109, 14,220,205, 40, 48,111,242,210,233, 89, 80, 95,155,175,150, 60, 83, 0, 2,134,174, 9, 82,184,220, 44, 68, 95,218,237, -146,202,132,136,159, 6,218,202,228,251,243,145, 60,215, 78,181,165, 69, 38, 52,240, 55,152,132,166, 91,130, 39,183,155,190, 60, -121,116,166, 69, 66, 79,222,159,191,151,168, 92,107, 2,157,115,130,194, 81,190, 54, 79,135,218, 88,225,252, 83,252, 70, 43,206, -235,233,154,137,154,171, 52, 40, 11,114,146,152,179, 72,132,223, 6,124, 44,128,231, 64,243, 3, 6, 3,138, 38, 52, 32,152, 88, - 73, 60,208,179,174, 9,238,234,156,215,149, 56,150, 50, 34,127, 29,236, 7,172, 39, 96, 48,115, 51, 53,167, 58, 80, 85, 83, 87, - 47,157,211,172, 75, 8, 72,197,234, 99,182,210, 51,187, 25, 75,191,255, 66,207, 17,164,204, 23,122,166,255, 63,170,222,179, 73, -182,235,202, 18,219,215,165,207,242,254,121, 88, 2, 4, 57,109,200,142, 80,171, 99,102, 66, 49, 17,250, 32,125, 29,253, 30,253, - 42, 73,161, 24, 69,168,165,142, 25,170,155,100,179, 73,130, 32,240,240,124,121,159, 89, 89,233,174,211, 94,107,239,115,235, 17, -221, 32,128,122, 85,149,215,156,115,182, 91,166, 77, 48, 95, 93,117,164,223, 71,161, 49,150, 51,189,159, 44,182, 4, 10, 2, 63, -147,169,141,177,241, 46,239,244, 62,218, 37,198,102, 21, 99,224,246, 74,199,198, 74,121,238,214,171, 41,239, 21, 96, 91, 20,113, -121,148, 56,126, 41,227,123, 66, 82,140,117,141,189, 49,157,207,248,117,156,173, 73, 63,102,135, 5,103, 57, 94, 43,228,212, 71, -186, 79,191, 63,154,200,215, 79, 6, 76, 14, 83,148,241,129,206,198,131, 9, 85,233, 71,214,149,134, 82, 76, 57,159, 3, 71,178, -118, 29, 95,218,223, 85, 53, 51,101,180, 71, 0,254,192,197, 66, 72, 35,146,168,113,145,193, 33,142,138, 6,242,127,179,249,146, -237, 91,108, 56,204,233, 66, 11, 29,106, 89,200,112, 54,245, 5, 83,193,139,243,218,146,180, 24,102, 37,250,231, 81,109, 7, 65, -168,184,241,146, 98, 15, 22,216,232, 80,129, 66, 53,140,246, 3,218,225,116, 10,186,159,113, 12, 64,149, 37,240,102,165,116,157, -115, 33, 56, 8, 70, 0,221,182,169,214, 33,192,190, 63,190,226, 53,206,168, 28,215,226, 33,136, 32, 3,126,184,129,163,108,145, - 33,195,194, 27,153, 95, 90, 5,157, 56,246, 32,246, 57, 81, 25,176, 9, 28, 63, 20, 31, 33,229,171, 70, 58, 54,114,169,210, 0, - 10,128, 90,157,129,181,146,134,123,110,188,240,244, 97,131,213,214, 98, 71, 27, 42,200,179, 62, 84, 50, 53, 43,104,147,174, 45, - 26, 1, 8,202,162,118, 83, 55, 10,241,241, 72,105, 63, 35,174,172,150,231,198,159, 14,188,245, 96,113, 19, 52,225,113, 88,148, -142,192,143,228, 1, 76,105,109,110,251,119,204, 29, 37, 14, 93,154,186,153, 79,134,201, 14, 81,223,105,212, 80, 11, 73,253, 72, - 82, 7, 66,105,128,237, 56,250,217,231,236,145,207,206, 57, 71, 79,109,230,198,182,175, 4, 53,193,210, 51,216,192, 95,143,131, -127,112,131,229, 96, 37,142, 10,110,185,124, 72, 96,220, 42,152,186,252,174, 37,128, 67, 2, 65, 27,246,145, 63,121,186,197,182, -238,255,247,231, 99,125,143, 54,167,159,235, 33, 55,160,220,163,233,199,111, 12,219, 60, 0,177,246,233, 39,206, 68,170,205,170, - 7,116,168,101,110,218,255,176,222,172,171,133, 81,156, 72,203,203,154, 36,249,222, 77, 58, 80, 33, 94,223,153,177, 74,236,218, -223,120, 6,101,189, 36, 8, 52,109,168,161,250, 94, 97, 36, 1,185,213, 86, 76,164, 45,158, 65, 75,147,224,173,172,207,117,181, -167, 65, 20,239,224,245,241, 37, 43,104,142, 27,144,252, 96, 70, 43, 17, 15, 18,170, 17,198,198,223,173,107, 75,176, 48,135,173, -216,173,138,153,152, 34, 81, 21,151,163, 53, 32,105,212, 0, 67,177,134, 16, 84,113,219,148,238,188, 55,164, 53, 59, 17,222, 21, -129, 66, 24,130, 62, 14, 96, 84,206, 6,138,180, 78, 22, 91,230, 14, 6,236,131,214,166, 85, 53, 36,111, 99,151,156, 38, 40,147, - 58,227, 41,247, 57,214,255,210, 29,182, 10,175, 76,209, 6,197,185,128, 4, 27, 58,249, 86,249,207,152,176, 97,198,142,243,198, - 64,154,149,252,112, 58,145,191,253,114, 67,254,219,159,174,229,249,206,138, 30,208,119,124,231, 48,157, 89, 46,187, 76,138,208, -105, 33, 18, 26, 40,255,161,205, 45, 47,181,146,132, 38, 67,202,247, 42, 68, 48,143,198,119,154,236, 45,116, 45,116,101,115,101, -133,221,137,249,162, 50,245,188, 22,196, 79, 38,188,214,136,213,103,151, 28,250,162,130, 68,246,140,134, 70, 97,158, 30,244,216, - 43,253, 89, 60,247,187,201,152, 85, 58,133,133, 92,222,181,114, 71, 46,208, 16,251,155,123, 60, 23,223,159, 93,201,229,120, 38, -219, 27, 3, 6,238, 23, 79,118, 40, 30, 4,133, 62,136, 16, 81,223, 3,107, 36,207,233,176, 73, 0, 30,206,137,178,108, 70,153, - 68,107,195, 96,107, 0,250,228,130,120, 27,116,158,128, 47,192,247,188, 63,187,150,103,219,107,124, 15, 75, 87,104, 68, 77,144, -106,245,219, 74,156,254,137, 36,179,101,182,211, 39,122, 6, 30,108,175,208, 9,115,190,208,130,104,150,211,211, 28,149, 56, 20, -246,126,120, 45,242,253, 15,127,212, 63,155,178,253,143, 4, 62,113,125,145,157,245,117,130, 40, 49,102, 8,138,142,181,143, 93, - 77,232, 42,110, 64,163, 88, 32, 24, 19,181, 8,182, 52,132,123,196, 78,155, 1, 31,119,119,122, 76,124,129, 57, 5,232, 19, 22, -195, 66,143,241, 53,202, 59, 47, 40, 1,157,154,248,140,190,203,227,155,153, 6,249,142, 84,173,154, 60,113, 99, 38, 45,152,208, -194,205, 48,169,205,147,253,174,104,201,160,154,202,219,227,185,124,245, 98,135,239, 97,123,181,103, 50,206,122,158,193,143, 1, - 49, 2,251, 29, 22,168,192, 13,220,107, 81, 64,179,152,165,129, 93,177,135, 7,109, 51,137,186,229, 84,193, 4,184,208, 61,130, - 12, 48,126,231,248,244,142, 24, 42, 4,111, 22, 0, 16,161,209,132, 15,227, 43, 33,131,202,218,247,232, 74, 97,188, 49,153, 78, -205,171, 66,175,251, 78,215, 29,238,117, 99,117, 32, 95, 62,214,245,122,176,222,101,245,140,172, 7,243,224, 68, 15, 25,180,174, - 19, 63,148,179,212,208,220, 8,108,109, 23, 47, 64, 38,156,197, 22, 96,251, 45, 3,202,117,188, 50,198, 13, 34, 0,178,245,173, - 47,143,254,226,105, 74,160, 20, 2, 34,140, 50,114, 15, 48, 8, 34,168,192, 17, 36,129, 10,196,194,228,188,217, 53,157,113, 56, -175,232,230,192,107,163,158,180,183,186, 22,185, 37, 29, 68, 29,150,198,111,198,207, 32, 75, 71,235,220,204,230,151,228,146,150, - 4,231,125,220,250,143, 29, 20, 87, 53,221,136,194,169,116, 81,240,217,214, 7, 62,154,207,220, 89,101, 73,123, 66,163,234, 57, - 8, 16, 96, 47,231,126,227,160, 14,129,166, 40, 31,212,236, 42,169, 26,204, 64, 19,140,235, 7, 26, 30,238,147,252,122,231, 90, - 7,225,138,202, 71, 26, 38, 94, 35, 78,223,179,182, 94,230,148,183, 32, 18, 66,222,117, 94,184,254,188, 80, 47,216, 28,225,172, - 13,135,182, 94,212, 73,154, 25,102,205, 46,140,101,235, 70,159,115, 37, 61,199, 69,196, 62,111, 14, 12,134, 58, 28,231,252,111, -225, 24,196,100, 96, 43, 90,167,214,110,181,107, 84,197,202, 11, 48, 11,153,137, 59,183, 25,154, 59,114,224, 75,210,180,190,203, -162,108,220, 90, 62,182,112, 69,181,219,142, 91,156,201,199,174,109,157, 80,241,225, 97, 94,111,244,185,132, 85, 13, 42,170,216, -159,161, 56,199,159,207,252, 35,189,240,240, 25, 78,139, 55,158, 42, 92,179, 64,235,169, 12, 20,182,173,149, 67,175,147, 16,140, -242,108,111,131, 62,197,175,207,205, 31, 28, 20, 28, 28, 36,216, 3, 89,100, 0,189,161,102,253,173,164, 71,124,195, 98,217, 53, - 51, 13, 61,220,119, 54,134, 68,197,178,154,208, 10, 47,102, 7,166,228,124, 29,129, 21,213, 30, 42,252,159,127,118,160,149,206, -185,124,247,190, 32,192,231, 31,190,249, 68,254,143,127,254, 65,139,239,216,156,174, 98, 91, 55, 72, 82, 41,145,156,197,174,163, - 96,224, 84,236,165, 37,223,103,196,196,130, 84, 55,104, 69,107,160,153,232, 97, 90, 83, 86, 57,179,118,117,232,122,224,186,251, - 61,119,212, 51,118, 65,228, 29,146, 49,112, 34,179, 7,128,232,114, 97, 24, 14, 92, 43,194, 16, 80,225,225,224,133,245, 44,102, -133,156,251, 83,151, 31,250,244, 33,216,155, 33, 76,236, 34, 50, 43,189, 61, 6, 96,188,175, 13, 13,152,120, 38,184, 70,232,180, - 19,229, 11, 42,108,150, 56,167,187,148,139,209,221,131,205,174,235,254,207,150, 30,168, 28,177,142,202, 23, 93,131,201,108, 70, -112, 26, 48, 15, 84,174,211,196, 98,137,162,132,162, 66, 48, 26,185,149, 95,253,208,146,255,225,111,246,136, 40, 71,251,115, 69, - 19,183,171,177,121,202, 67,213,110,103,125, 32, 27, 26, 24,113, 15, 55,154,160,224,190,123,248,250,206, 58,145,206, 96, 56,128, -145, 66, 51,142, 8, 21, 56, 18,149,169,236,239,239,200,139,167, 79,229, 87,191,253,189,172,174,172, 57,232, 47,246, 53,102,193, - 6,231,225,253,100,233,103,165,143, 27,163, 32,123, 45,252,204,204, 41, 82, 53,248,228,208,221, 72,204,158, 22, 99, 75,156, 93, - 64,137,163,203, 7,140, 67, 81,229,242,233,163,182,126, 94,143,221, 23,152,144,188, 63,188,144,163,243, 75,126, 38, 52,211,225, -238,151,143,150, 76, 90,106,253,189, 56,111,193,119, 3,155, 33,136,119, 32,193,186, 95,132, 46,155,225,156, 46,110,108,100,130, - 14,228,227,173, 53,170,146, 65,171, 97, 4,131,170,202,146,254,209,245, 21,207, 44, 26,249,232,239,236,179,240, 41,184,222,215, -245,221, 34,177,133,158, 62,206,119,116, 80,176,207,222,252,248,157,116,234, 57,113, 22, 4, 72, 58,246,233, 90,207,212,247,103, -151,236,244,196, 14,118,230,217, 92,186,231, 68, 98, 9, 93, 44, 15, 66, 47,117, 29,196,124,150, 68,160, 79,177, 14, 53,113,206, - 36,161,134, 9,146,210,191,249,217,207,116, 15,106,130, 62, 48, 37, 69,252,117,124, 57,146, 63,190, 58,150,108,173,195, 46,109, - 43, 53,221,133, 43, 32, 41, 33,227,186, 98,170,157, 56,103,218,117, 74,172, 4, 20,253,128,232,159, 94, 22,242,120,103, 85,214, -187,177,188, 58,186,145,167, 59, 3,158,155, 27,107, 67,222,231, 87,219, 3,253,249,190,124,184, 52,197,197,199,154,224,188, 60, -188, 49, 63,138,200,128,196, 19, 13,242,175,207,198,178,183,210,161,114,221, 88,147, 11,224,117, 62,217,239,112, 93, 35,169,217, -129, 35,233, 34,116, 85, 42,121,119,124,196,209, 12,149,233,216,105,140,200,144, 34,215, 29,109,125, 20, 80,109, 3,139, 98, 31, - 32, 28,156, 92,163,107,204,115,214,209,230, 52,140, 55, 39, 50, 60,192, 54,205, 69, 12,142, 31, 16,161,179,133,121,251,146,186, -164, 31,134,118, 31, 22, 2, 77,219,227,200, 57,217, 5, 3, 53, 54, 1,218, 26,248,105,220,252,146,115, 47,243, 95, 70,149,110, -115, 80,145,187,235,137,161,203,225,214, 4,170, 12,231,114, 75, 30,202, 8,102, 87,227, 43, 46,110,100,248, 84,223,162, 93,235, -162,169,120, 77,145, 45,107,178,224,241, 98, 34,177,222, 92,228,146,174,104, 25, 85, 81,233, 51,125,171,230,176,153,226,180,106, - 0, 87, 9,103,107, 38,213,154,250,188, 24,115,155,112, 24,198, 33,152,251,207,135,150,114,229,165, 33,238, 21,109,186, 42,168, - 16, 57,242,223, 12, 98, 18,175, 50,189,114,116,173,120,252,110,102,120, 78,177, 74, 28, 40, 67, 78,185, 30,252,152,125,165,174, -206, 86,184,164, 45, 54,133,113, 71, 31,252,146, 19, 95, 60,134,250, 55, 41,206,152,124, 97, 3, 13,102, 89,171,209,108,199,243, - 41, 97,188,160,135, 82,236,212, 65, 80,128, 76, 25,206,102,229,228,201, 87, 62,167, 22,123,238, 38, 25, 91,124, 36,193, 91,123, -146, 35, 14, 82,115,227,141,210, 36,114, 27,203,211,128,118, 18,115,247, 74,189,165, 79, 20,253, 98, 78,116,120,248,126,252, 34, - 50, 12, 60,200,132, 57,121,234,247, 65, 35, 24,118, 61,106, 71,199,198, 46,106,210,250, 8, 21, 15,219, 94, 23,223,137,226,134, - 54, 21, 70, 71,165,203,220,226,235,171,154,237,130,198,215, 74,187, 46, 0, 84,105, 96, 95,145,141,149, 30,103,199, 53,147,164, - 88, 46,231,200,232,183,109, 94, 8,148,176,102,233,248, 30, 58, 96, 38,230,248,135,164,116,109,213, 18,224,149, 65,151, 6, 20, -104,241,159,104, 16, 57, 27,221,152,203, 86, 98, 35,159, 34,143,184,254,239,245, 29,255,228,241, 42, 5, 57, 86, 53,168,191, 59, -191, 53,197, 49,159, 57, 67,209, 13,109,195, 27, 40,197, 57, 69, 38,105,121, 27, 21, 1, 14,158,222, 45, 3,234, 45,233, 28, 86, - 49, 8,227, 21,229, 14,238, 99,210, 75, 65, 15,241,118,190, 9,212,148,165, 5, 25,241, 68, 21,123, 29,200,103,236, 99,180, 43, -183,214, 76, 41,110, 85,239,101,103,189, 79, 87, 57,204,233,239,220, 59, 30, 65,103, 21,173,111,221,255, 72, 58,176,183,241,236, - 81,156,148, 52,132,233,178, 2, 7, 19, 98,164,213,244,187,163, 11, 38, 61, 24, 39, 77, 53,248, 67,153,250,250,236,134, 73,130, - 33,239,243, 70,195,194, 42,180,178,209,191, 14, 8,120, 36,226, 7, 91,230,152,118,168, 65, 12,231, 12, 53,249,139, 69,192, 90, -113, 20, 51,119, 85,196, 44,179,253, 51,209,115,251,237,225, 72,182,134,177,188, 60,185,151,237,149, 22,233,108,216,159,215,154, - 92,172,233, 59,143,245,190,128, 98,231, 88, 46, 53,135,196, 76,139, 9,208,135,122,253,204,204, 88,174,110,101, 13, 29, 26,253, -207,171,107, 48, 29, 42,249,143,255,254,191,147,171,203, 83,172, 72, 30,186,169, 96, 20, 80, 55, 50,203, 84,131, 75,173,251,133, -179,175, 69, 60, 80, 78,245, 63,176, 85, 64,125,194,154, 2,205, 45,236,105,125,177, 28, 35,101, 48,252,208,247, 59, 33,221, 76, -247, 85,187,197,119,131, 25,235,209,201,141,108,111, 14,100, 79,171,208,191,254,233, 83,185,208,235,249,243,235, 15, 90,157,174, - 82, 95,129,216, 2,232,209, 87,181,203, 59, 71,126,141, 65, 61,212, 18, 46,179, 76, 53,204, 64, 20, 27,218, 28,107, 1, 84, 88, - 4,225, 53, 77,110, 54,134, 29, 3, 77,234,117,111,233,186, 7,133,115,161,207, 14, 34, 45,167, 55, 35,122,156,143,238,140, 33, -132,132,246,209,206,138,124, 56,187,147, 46, 70, 30,117, 91,190,249,250,103,162,191,130,122,235,253,110, 74, 60, 20,139, 58, 88, - 4,223,142,229, 79,111,143,249, 30,130,229, 51, 94, 37, 42, 87,172, 63, 2,139,233,118,102,231, 40,198, 99,192, 66,225, 37, 33, -209,198, 94,235, 80,113, 17, 82,206, 53,181,221,199,247,186,166,230,119,186, 7,245,250, 7, 96, 54,204,229, 86, 19, 82,236,215, - 99,141, 53,176, 79,125,125,114,203,119,176,149,117, 13,244,170,235, 20,186,237, 67,189,198,104,164,107,168,138, 25,187, 38,243, -137,236,238,236,235,154,138,228, 79,239, 78,229,147,189, 53,221,167, 8,220, 3,174,195, 45, 93, 59,185, 38, 90, 80,166,163,170, -164, 38, 56, 71,103, 35,182,242,177, 95,231,110, 42,134,113, 30,214,241,167,219, 61,185,190, 47,201,237,135,121,210,238,106,151, -166, 65,135,151,119,236, 60,175, 14,250,116, 44, 77,211,146,157,159, 33,227,171,157, 89,112,245, 59,187,186,226, 58, 77,152,240, -104,177,176, 52, 43,238,245,225,138,131,186,245, 28,185,152,153,184, 38, 14, 9,182, 91,150, 54, 15,198, 3,196, 12, 13, 63, 92, -151, 49,219, 2,226,244, 37,108, 90, 84, 10,176,238,157,232, 98,228, 1,142, 22,222,114, 97,114,143,244, 70,118,254,240, 71,115, -247, 32,132,192,223, 61, 95, 52,200,248,165,131,140, 82,151,227,203, 60, 64, 83, 84,164, 50,209, 0,206, 88,128, 46,214, 27, 70, -102,146,187,190, 49,190, 7, 55,181, 32,192, 32,117,186, 26,218, 22, 61,215, 91,215, 3,177,206,154,106, 56, 4,182, 32, 56, 18, - 84,200,164,142, 28, 85, 31,125,132,196, 20,151, 74,181,205,197, 10,192,221,219, 34, 15,194, 12,152,148, 81,204,205,175,183,221, -110,130,122,237,227,130,198, 23,213,149,218, 36,254, 75, 33,159, 96,247, 88,123,245,206, 0, 94, 57, 61, 46,169, 27,103, 54, 19, -142, 40,221,157, 78, 19,128,202,158, 23, 43,249,196,164, 70, 9, 54, 92,212,158,104,148,142, 72,183,119, 65,192,143,223, 25, 2, - 12,233,124,169, 81,190,146, 36,232, 18, 24, 88,195,208,232,133, 43,194,185,203, 25, 90,168, 78,205,138,189,205,250, 80, 29, 99, - 86,191,112,240, 77,202,174, 0,174, 57,140,117,130,180, 47, 70, 54,105,154, 53, 52,192,197,188, 16,121,208, 34,106,172, 95, 3, -146,158, 93, 11, 13, 86,185,211, 12, 77,245,175, 34, 47, 53, 14, 74,125,224,106,139,169,130,217,232, 3,169, 86,238,221,137,212, -186, 5,110, 60,211,161, 40, 68,226,109,205,148,224, 28,172, 39,124,125,216, 75,117,195,247,216, 17,121,127,122, 45,215,211, 37, -133, 57, 48,107, 71, 37, 9,112, 90,167,114, 17,141, 59,173,248,244,208, 99, 59,178,142, 93,206,194, 36, 32,233,241, 96,243, 5, - 25, 80, 19,189,242, 61,225, 66, 73, 62,114,192, 65, 60,211, 8,113, 61,158,112, 13, 35,161,160, 6,252,221,140,135, 48,116,196, -209,242, 47,110,167,114,231, 84,179,132,179,223,164, 1,152,150, 60,108,151,110,227,107,157,155,207,159, 29,200,167, 79,247,184, - 94,209, 18,127,126,176,197,185,101,225, 73,123, 27,215,221,237, 11,154,152,120,237,168,182, 8, 32,210, 67,242,187, 87, 71,250, - 60, 98, 25,141,167, 60,232, 87,183, 6,124, 39,179,241,130,173,218, 82,127,224,244,106,194,238,200,244,232, 86, 19,147,156,244, -173,241,248,142,216, 16, 24,126, 32,209,193,202,192,140, 57, 32,230,209,185,107,116, 42,107,113, 75,225,170,145,209, 44,202,162, -145,128,109,246,205, 71,178,211, 28, 7,214, 21, 65,117,103, 87, 55, 92,203,104,129, 47,220,140,168,223,234, 54, 35, 67,252, 55, -186,134,133,211, 42,241,215, 31, 14,103,242, 15, 95,244,228,251,163, 59, 38, 36, 0, 75,161,203,134,174, 9, 52,180,161, 21, 0, -117, 52, 80, 11,209,130,205,218, 64,111,207, 56,186,184, 27,143, 25,140,150,115, 83,223,235, 38, 37, 5,157,222, 29,157,200, 79, - 62,123, 38, 7,251, 7,242,227,235, 87,141,120, 78, 69,108, 67,155,126, 2, 80, 81,131,234, 95,153,154, 78, 3, 18, 23,204, 96, -209,186,198, 30, 12, 12, 29, 50, 63,160,254,150,216,248,170,198,153,168,123,179,227,157,179,235,241,173, 60,218,221,225,222, 68, - 87, 6, 86,167,184, 38,180,191,145, 64,125,245,201, 1, 89, 10,183,183,119,210,134,160, 85, 91,131, 93,199, 12,103, 48,130,232, -105, 50, 49,115, 27,228,194,147, 37,195, 17,153, 57, 16, 3,242,250, 42,129,145,216,243, 39,215, 99,217,172, 86,248,174, 32,161, -139,231,133,231, 79, 37,203,194, 80,228, 72,248,206,142,174,169,177, 14, 68, 59,228,132, 49,218, 1,128,237,241,238,144,193,141, - 46,133,189,117,233,173,173,201,225,233,137,172,107,144,115, 86, 47, 41,112,159, 60, 57,144, 47,159,239,107, 18,112, 67,186, 33, - 76, 82, 0, 24, 69, 64, 92,194,177, 77,171,241,201,210, 10, 45,130,206,116, 61,153,243,103,198,209, 84, 97,146, 36,156, 41,175, -173, 38, 84, 12,196, 88,245,106,188,148,223,126,119, 46,167,199,175,101, 14, 32,104,219,172,191,159,238,237,200, 47, 62,223,145, -173,123, 67,200, 79,230, 37,249,230, 72,128,240,251,209,233,250,234,160, 35,135,247, 61,189,198,182,140, 39, 71, 46,238,163,239, - 78,218, 76, 62, 14,118, 52,185,157, 85,178, 57, 76, 41, 82,116,125, 87,104,114, 51, 99, 71, 12, 35,148,171,145, 38,130, 0,102, - 10,102,245,133, 38, 70, 45, 77, 22, 18,142,109,254,245,205,149,252, 76, 63,239, 28,186,253,122, 95,199,215,247,148,178, 69,165, - 62,165,108,108,171, 49,173,170,131, 98,106,100,234,118,212, 62,240,216,136,142, 52,253, 4, 90,152,243,247,101,119,107, 75,175, -117, 66,172, 4,177,104, 31, 46, 39,110, 87, 57,243, 42, 29,217,197,178,161,146,132, 54, 53, 43, 59, 7, 88, 45, 89, 29,250,124, - 59, 73,188,125,234,122,205,203,202, 3,150, 9,193,160, 5, 28, 28,205,146, 64,167,113,245, 53,108,255,174,171,138, 73,168,254, - 28, 52, 99,179,252,140, 7, 50, 22,106, 70,195,138,177,101,109, 62,139, 78,211,172,161, 85,113,230, 86, 22,141,101, 99,176,222, -108,183,218,174, 14, 23, 27,160,195,171, 74, 86, 78,164, 22,229, 68,248,253,133,111,184,207,129,209, 50, 12, 28,116, 6, 40,136, -129,128,195,239, 34, 37,224,150, 82, 44,135, 46,104, 45,107,187, 59, 56, 44, 14,178,180, 14,138,137,216, 65,174, 93,212,197, 0, -130, 76,160,120, 64,155,242, 84,252,145, 69,226,199,109,112, 0, 65, 76,188,195,130,177,221,179, 57, 92,133,231, 85, 57,242, 41, - 77, 12,213, 28,116,251,173, 82, 45,154,175,197,141,212,175, 85, 52, 6, 34, 75, 93, 18,215,228,123,255,162,205, 29,187,110,180, -139,104,176,186,171,235,198,128, 70, 92, 32, 40,112,160, 13, 69, 95,217, 28,219,169,102,185, 3,218,204, 17,175,104,168,110,193, -219,153,243, 67,231, 41, 99, 68, 80, 39, 38,178,192,132, 7, 45,100,239,108, 24, 53,198, 0, 64,137,235,221, 3,245,205,214,236, -194,112, 19,214, 85, 17,119,202, 11,237,248,152,235, 14,137,198,138, 6, 3,180,252, 86, 59, 86,153,232,145,161, 75,183,226,218, -120,127,122, 67, 0,206,149,131,169, 74,189,110,184,188, 33, 48,157, 46, 76, 91,189,240,206,200,141,174,171,221, 77, 61,176,186, -149,124, 56, 57,215,131,101, 34,159,233, 33,181,186,210,231, 76, 13, 30,236,120,163,161,251, 16,128, 74,192,137,180, 50, 99, 94, - 80,144, 66,131,105,143,222,201,150,224, 33,192,100,196, 21,212, 90,245,172,203, 87,207, 31,243,190,128,152, 93, 27,154, 14,244, -254,214,154,236,109,174,176,163, 96,157, 14,145,179,203, 91, 38, 54, 27,250,103,122,218,200,248,232, 92,127,102,206, 22,243,205, -245,157,140,230, 57, 17,211, 8, 76,232,122,140,198,247,228,212, 99,102, 57,163,146,153,153,223, 32,129, 65,187, 48,114,149,189, -218,215, 5,173,122,147,136,115,118,226, 12,230,182,199,112, 31,133,169,132, 24,211,162,182,228, 50,117, 53,196,208,213, 67,119, - 64, 28,101,140,245,148,147,162,104, 99,148, 90, 28,252, 89, 27, 30, 37,120, 3,132, 22,190, 4, 99, 37, 84,224,100, 60,152,198, - 66,232,220, 88, 81,144, 62,112,219,163,218,218,191,150, 91,201,225, 45, 62,107, 40,192, 22,162,165,190,162,193, 3,109,102, 96, - 11,238, 70, 99, 57,130,218, 27,248,189, 56,216,121,253, 9,171, 65,116,249,114,125, 95,253,205,190,172,233,249,118,167, 9, 24, - 90,191,235, 43,107,114,122,118, 65, 93,254, 71,143, 30,203,119, 63,252,153,221, 62,220, 63, 62, 23, 64, 65,240,199,251, 61,116, - 32, 38, 50,243,226, 5,114,173,149, 59, 22,146, 47, 30,155,154,159, 89,167, 26,189,139,142,129, 38, 98,192,132, 21, 10,112,216, -107,247,148,148,182,106,182, 75,181, 67,147, 9, 29, 77,230,242,228,209,150,124,121,251, 88,254,233,215,223, 74,189,180, 14, 6, -175, 3,137, 52,193,167,117, 67, 77,166,253, 45,138, 56, 87, 80, 4,200,114,107,125,141,103, 42,230,185,226, 45,255,195,139,107, - 13,176,123,156, 9,227,154,219,157, 33,247, 69,233,122, 3, 65,163, 3,221,134,204, 5,192,110, 53, 25, 4,158, 2,149,246,250, -106, 79,110, 70, 51, 57,185,184,212, 0,127,174,123,226, 78,174,122, 3,235,128,234,130,157, 76, 52, 9,185, 57,227,218,199,122, -248,226,201,174,116, 32,209, 26,213,172,124,161,189,112,113, 51, 49,192,160,143,139,192,196, 64, 70,112, 63, 51, 87, 60,172, 41, -236, 33,140,236,128, 19,194,152, 1,239,231,209,163,175, 77,119, 62,137, 88,209, 35,177,169,168, 21,176,148,221,181, 62,215,189, - 49, 27,108,141,125,178, 59,224,249, 0,188, 2,198,197, 16, 18,130,143,195,103,187, 90,137, 35, 89,215,179,125, 79,147,158, 87, -135, 39,114,176, 93,202,135,227,115,217,254,234,169, 60,210,202,187,164,243,103, 33,199,154,236, 98, 61,181, 29,239,114,118, 61, -227, 26, 62,191,157,177,229,222,114,154,242, 63,126,123, 66, 16, 43,158, 61,156,245,238,167, 37,147, 43,226, 77,114, 77, 80,181, - 58, 7, 38,228,234,230,150, 9, 76,167,101,127, 35,177, 31,221, 77,200,158,218, 94, 95,215, 64,190,201,119,135,239, 71,140,218, -209,255,238,245,123, 90,209,223, 73,138,121, 13,173, 68,163,212,221,184, 92, 48, 38,112,213,179, 7,208,147, 89,247,197, 13, 95, - 61,245,214, 49,199,150, 13, 77,201, 54,183,209,154,162, 70, 76, 6, 85, 67,233,186,225,248,247,194, 93,225,184,216, 17, 32, 92, - 51, 61,246,182,121, 16,132,161,187,147,183, 78,241, 53,131,253, 7,207,229,136, 25, 95, 16,187, 9,194,250, 4,124,165,102, 81, -215,136,225, 68, 15,115,196, 16,192, 88,121, 74, 48,172,241, 3,161, 9,232,122,111,153, 31,202,129, 63, 31, 42, 9,228,110, 64, - 78, 58,104,200, 42,104, 75, 40,240, 51,214,250,125,168, 64,177, 98,178, 44,107, 2, 82,237,246,131, 69, 94, 60,252,172,207,160, -241,125, 1, 20,196, 68,161,178, 86,170, 51,173,205, 78, 54, 88,205, 58,205,204, 20,236, 93,154,221, 91,152,141,211, 85,240, 53, -119,214, 64,232, 69, 32,120, 46,102, 83,111, 99, 71,141,112, 75, 64,178, 67, 35,222,186, 27, 69, 83,145, 7,250,152,153,254,216, -156,219,196,136, 12, 36, 88,184,170,158, 17,144,236,185, 33,184,227,239, 44,171,154, 81, 3,159, 65,110, 24,131, 5, 3, 74,217, -100, 82,181,143, 48,248,185, 14, 96, 12,193, 63, 36, 38,129, 82,105,137,162, 37,103,176,130,173, 67,114,227, 7,125,112,127, 11, -110,128,198,156,168, 73, 45,130,148,231, 6, 0, 52,160, 85,105, 48, 43,242,150,188, 61,189, 37,218,123,186,116, 65,159,212,148, -247,230, 26, 80,177,193, 34,215,183, 14,244, 74, 32,143,137, 74,175, 52, 80,116, 50, 42,119, 1,127,210,209,131,227,209,206,170, - 12,134,125,162,200,241,239,231, 87,119,100, 90, 0, 92,115,117,115, 47, 95,188,216,149,231,251, 27,108, 11, 66,151, 92, 28, 57, -125,161, 85, 18, 2, 14, 14, 54,180,109, 23,250,172,175,111,239,153, 12,124,184,154,242, 30,127,243,234,212,128,115,206,160,152, -207,204, 5, 14, 73, 7, 85,232, 4,247,144, 59,152,200, 25,192, 81,236, 58,222, 70,217,163,138, 86,106, 98, 68, 20, 17, 98, 34, -103, 45,120,160,207,161, 80,136,217,254,146,170,106, 9,187, 44, 73,233, 35, 58, 51,206,226,186,195, 94,238, 68, 22,108,240,140, - 80,249,227,105, 15,134, 61, 38, 79,211,123, 83, 81,180, 64,100,135, 50,168,127,149, 43, 52,226, 72, 0,152,142,142, 93,101,201, -209, 83,225,154, 5, 92,227,245,131,162, 37,246, 26, 80,244,116, 59, 91, 24, 71, 31,104,107,116,234,128,139, 48,127,235,210,157, -252, 12,231, 1, 23, 43,204,202,191, 63, 28,177, 42, 2, 64, 10,106,140,144, 28,221, 44, 77,167, 98,230,160, 35, 84, 94, 61,208, - 89, 11,211,218,168, 75,211, 45,191, 27,221,113,239, 21, 14,210, 69, 85, 31,213, 41, 15,217, 3,173,254,158, 61,121, 42,111,223, -189,166,182, 66,193, 0, 60,149, 94,110,118,169,232,190,128,163, 28, 76,132,112,141, 25,217, 43,214,187, 0,131,160,128, 30, 83, - 21,132,186, 44, 97,175,124,172, 89,185,105, 72, 26, 39,238,197, 81,105,213,190,203,181,135,160,105,186,236, 41, 65,198,159, 63, -123, 42, 63, 30,158,185,244, 41, 76, 63,186,146,107,178,137,164, 11,107,131,163,202, 52,118,154,163, 57,139,161,144,187,212,251, -219, 28, 14,228,201,246,134,254,251, 88,206,244,253,224, 26, 64, 69,196,126, 93,148,169, 6,230, 75,153, 78,239, 13, 8, 91, 27, - 29,183, 11,108, 7, 76,112,162, 22, 71,174,215, 26,212,137,241,209, 51, 12,162, 45, 24, 27,244,245,221,124,251,195, 75,189,159, - 57, 43,102,204,231,145, 44,129,155, 13,180, 6,132,119,240,236,127,120,127, 42,127,120,117,232,254, 28,149, 87,170, 21,247, 11, - 71,169, 20, 43, 51,160, 29,146, 15,128, 73, 89,248, 85,236, 27,154,180,117, 17,170,250,140,221,131, 71,187,219,188,111, 36,170, - 16,186,194,189,254,227,183,167,242,159,255,225, 83,249,215, 31, 79,228,205,201, 72,206,175, 39,250,129, 93,158, 15,216,115,232, - 74,215,148, 93,134, 67, 33,180,236,239, 57, 46,128, 32, 15, 92,219,238, 22,153,236,239,180, 25,172,191,250,108, 95,254, 22,193, - 84,131,248, 63,254,203,119,242, 70,131,125, 53,183,132, 23, 29, 53, 36,194, 56, 75, 32,206, 67,199, 72,125, 79,127,255,249, 38, - 43,243, 87,151, 83,185,173,108, 63,161, 77, 31, 80,239,121,148,186, 19,159,190,151,235, 91, 77,142, 86, 26,209, 54, 2,147, 99, -123,246, 0, 33, 34,153, 1,160,155,241, 82,227,225,217,249,133,225,164,130,246, 56, 15,231,170,126, 56, 24,163,143, 90,195,174, -108, 19,130,146, 29,206,241, 67,117, 27, 63,180,214, 66, 48, 11,190,231,212, 42,119,224, 23,126, 55,245,166,189, 77, 86,122, 43, -156, 21,185, 75,199, 6,165,161,202, 13, 7,240, 50, 24, 76,196, 4, 74,130, 10, 92,246,209,124, 57,240,190,131, 38,123, 80,148, - 99,171,127, 97,217, 76,152, 77, 91,112,170,233, 60, 82,123, 21, 16,125,100,192, 18, 0,109, 81, 92, 55, 85,125, 72,104,194,223, -108, 87,135, 96, 17,168,101,206,163,181,196,160,106,108, 78,115,167, 48,196,141,232,137,115,111,107,105,208,221,101,211,162, 54, - 87,183,194,171,149, 9,231, 43, 73,211,141, 64,171, 21, 23,183,168, 23,110, 18, 99,237,119, 28,172, 31,107,213, 71,141,159,178, -153, 94, 68, 46, 68, 81,123,101,141, 31, 6,127, 58,114,147,234,194,187, 40, 13,255,188, 44,254, 66, 99, 59, 0, 4, 43,239,149, -187,126,160,148,249,162, 1, 2,154,134,190,225, 18, 72, 73,115, 13,253,210,129,129,102,202,243,240, 12,108,189, 85, 77, 82, 21, - 40,103,248, 63, 28, 30, 97,100,144,186, 19, 94,176,180,148,232, 33,121, 12,129, 62,246,107,144,143,196,139, 2, 79,190,116, 33, - 7, 50, 53,138,188,145,155,157,235,245,143,116,195, 63,217, 89,145,193, 78, 87,222,159, 89,235, 17, 89,111, 71,175, 19,238, 79, -109, 71,219,226,251, 17,172,247, 33,118, 1,208,152, 30, 68,143,119,215,137, 54,141,226,196, 19,175, 74,214,215,135, 4,149,193, -243,121,161, 7, 93,162,135,216,218,154, 86, 65,173,158, 86, 25,247,114,161,149, 0,144,230,224,250,190,190,184,105,192,149,152, -167, 17,171, 82, 5,148,107,101,109, 82, 87,217, 43,104, 52, 95,123,119,202,158, 19,174,135,135,149,247,119,130,209, 18, 16,219, -243,133,127,111, 98,233, 85,234,248, 4,128, 87, 31,164,141,141,165, 32, 28,153, 37,244,125, 0, 29,178,163, 7,121, 59,169, 56, - 94,232, 67,108, 71, 12,136,135, 42, 3,215, 65,150, 11,128, 86,179,185,131,155, 76,247,129, 8, 93,253, 58,102,236, 8,142, 52, - 64, 2,130,183,109, 70, 41,119,179, 9,159,253,124, 97, 76, 4,122,143,187, 75, 91, 73, 28, 69,206,132,157,186, 7, 1, 71,225, - 65,140,234, 92,208, 49,208,253,128,170,133,212,198,192, 97,240,185, 59, 18,199,210,253, 14, 30,192,151,194, 14, 14, 90,238,223, - 30,149,242,211,253,182,188, 60,157,176,194,134, 82,220,140, 52,212, 54,217, 34,248,190, 25, 10, 16,206,213,219,174,147, 95,154, -169, 78,110, 18, 80, 45,111,143,223, 79, 64,197,211,243, 68,147,180,110,191, 47, 63,255,233, 87,114,120,244,206, 70, 65,100,133, - 8,157,218,102,121, 76, 42, 45,175, 7,103, 86, 36,126, 6, 90,226, 11,230,130, 21, 61,102,202,100,231,152, 37,246, 72,137,131, -154, 88,228,194, 93,208,100,191,209, 74, 12, 63, 3, 39,175,151,111,143,101,216,127,161,251, 37,162, 40,213,227,189, 13, 57, 60, -191,177,159, 75, 76,164, 11,235,164,246, 46, 27,192,208,185,143,239, 58, 45,151, 68,246, 32,177, 64, 32, 5, 37,112, 94,184,225, -146,217,203, 46,139,148, 10,125,195,118, 36,235, 90,173, 15,122, 25,117, 19,200, 56,209,213,177,181,106,116, 60,188, 79,124, 13, - 64, 61,188,127, 40,166, 33, 1,219,219,212,228,224,203,231, 4, 87, 34, 25, 66,139, 31,230, 47, 72,200,164, 50,117,204,247,151, - 55, 52, 97, 49,231, 75,171,244,113, 38,101, 73,244,224, 52, 23,151, 68,166, 7,154,109, 66,236, 76,237,172, 9,216,209, 36, 4, -175, 37, 73, 75,159, 5, 82,217,158,244,182,215,100,103,173, 43,143,119,250,250,238,204,157,241,183, 47, 79,229,255,252,221,177, -244, 50,195, 27,128,171,254,227,201,173,157, 65,144,192,206, 97, 95,123, 37,173,238, 58,229,148,251,113, 65, 28, 1, 24, 2,219, -107,171,242,225,252, 90,214,135, 59,242,249,147, 85,121,125, 50,215,223,175,235,101,181, 45, 95,125,250,132,207,242,119,223, 31, -178, 74,223, 24,152,202, 38, 18,108,140, 19,160, 50, 7, 90,222,165, 62,151,207, 14, 86,228,215,175,175, 1,142,231,108,125, 9, - 75,215,110,198,206, 75,143,200,246, 25,227, 27,192,142, 89,226,157, 98, 98,124,240,220,211, 70,136, 13,186,240,247,250,220, 95, - 77,223,106,114,185,203,255,102, 80,143,154,202, 84, 55,121,244, 32,125, 42, 78, 31,170, 93, 48,196,164, 71,235, 38,112, 87, 94, -185, 62,112, 47,173, 66,140, 35,115, 25, 10,134, 13, 20, 1, 41,139,230,160,109, 92,192,106,227, 75, 70, 31, 5,163,196,147,133, - 58,182, 15,137, 60, 80, 62, 80,168, 98, 63,252, 31, 68,108,236,107,166,245, 91,133, 74, 51, 4, 1, 8,102,204, 12, 4, 99,162, - 36,137,207,174,115,167, 50,101,244,120, 15,173,238, 16,212, 57,142,168,165, 81,199,171, 67,245, 43,150,148,224,144,167, 59, 79, -167,211,152,152,240, 62,113, 13,121,213,108, 22,180,224,172,178, 40,216,110,108,121, 54,102,210,159, 41, 1,123,105,112,189,115, - 61,125,203,186, 82,191,223, 7,174,118,211, 18,103, 43,191,114,225, 9,235, 20,196, 31,217,154, 6,241,138,186, 52,100, 58, 99, -173,131,213,226,244, 65, 52, 70, 92,130, 53, 36, 67,145, 39, 36,214,166,139,220,118, 54,117,176, 96,217,152,165,112, 30, 42, 15, -129, 57,241,251, 14,129,124,233,210,143,174,226,218, 24,120, 84,101,244,145, 84,169,251,174,199,166, 42, 88,125, 20,220, 9, 84, -252,200,103, 61,106,106,205, 70,224,176,233,200, 68, 62,198, 48, 97, 28,115,146, 35,114,214,141,128, 2, 64,174, 73, 36, 0,208, - 3,246,131, 72,230, 22,173, 73, 47,110,238,228,237,162, 36,152,197, 93, 10,152,132, 34,208,162,189,149, 59, 74, 31,213,197,120, - 97,250,223,152, 47,255,128,131, 0, 99,147,210, 68, 98,106,177, 14, 84, 64,232,194,234,175, 36, 55,124, 65, 74,205,140,154,205, - 21,231,110,148, 87,110,199,158, 84, 25, 26,191,114,199, 40,171,214,224, 53,189,244,123,181,196,140,220,245,202,148, 26, 43,126, - 31,238,177,195,175, 83, 62,179,101, 89, 60,164, 61, 97, 25,139, 96, 79, 71, 65,253,108,162,224,201, 88,136, 88, 57,182,124,180, -133,123, 65, 37,138, 22,231,197, 13,132,102, 42,182,120,241,140, 46,175,167, 90,137,218, 44, 50,118,111, 7,250,183,107, 80,199, -125, 66,114, 20,149, 61,237,106, 89, 45,164,102, 91,171,215,120, 77,227,142, 17, 21,219,210,212,116, 30,152, 12,187,149, 37,233, - 58,189,129,190,167,194,218,204,101,174,251,180,118, 73,228,216,185,199,165,107, 24, 72,163,102, 25, 18, 2, 36,183, 72, 8, 90, -156,173,154, 79,121,213, 8, 86, 89,151,206,164, 77,109,172, 7,193,146,227,219, 66,254,251, 47, 87,137, 50, 70, 5, 5,212,251, -213,120,206, 67,188,156, 46, 40, 51, 10,207,241,138,180, 74, 84,160, 37, 57,196,156, 42,210,203,123, 41,237,110,135,138,109,232, -112, 64,159,101, 52, 30,177, 13, 63,213, 3,255,139,167,219,242,237,155, 11,158,105,248,153,235,201,130, 84, 56,160,207, 23,222, -125,136, 92, 89, 51,118,122, 89, 81, 58,229, 53, 50,206,184,177, 93, 18,158,224,156,185,203,194, 37,134, 35, 34,156, 99,120, 35, -232, 59, 7,242,252,120, 60,225, 33, 14,186, 46,186, 65, 56,159,119,182,134,242,217,147, 77,121,245,193,208,240,101,108, 94,237, -192, 10, 64,162,154, 73, 84,100,236, 34,240,192, 19,247, 48,199,249, 96, 5, 67, 37, 27,240, 16,119, 59,220, 41,174, 91, 19,158, -167, 91,187,242, 72,127,119,192, 33, 5,100, 58,188, 34,118,215,183,229,213,201, 21,169,133,171,253, 1, 55, 40, 52, 30,182,215, - 18, 57,189,157,145,209,116,240,228,153,236,227,158,139, 5,247, 22, 64,101, 96,154,176,107,167,239,232,153, 38,185, 71,231, 87, -114,118,117,205, 46,128, 81,230, 44, 33, 33, 69, 18, 90, 8, 16, 57,202, 98,182,174,103,185, 1,153,177,198,159,237,175, 73,187, -211,230,125,130, 17,112, 61, 46,100,115,181,101,123,244,237,133,188, 62,186,145, 51,221,227,139,249, 29,223, 3,252, 14, 48, 63, - 31, 3,132, 61, 89, 18, 32, 26,187,191,199,250,160, 37,103,108,151, 87,210, 7,181, 17, 82,183,167,135,186, 22, 18,253,157, 43, -154,228, 14,164,219, 45,244,123, 52,105, 47,175,228, 39, 79,106,249,243,187, 74, 94,236, 26,163,100,127,123,139,156,250,124,113, -198,181, 8,167,195, 39,155, 93,254,126,186,222,233, 37,119, 6, 3,121,250,120, 85,254,147, 6,247,181,213, 46,247,213, 59, 45, - 40,222,158,142, 40, 58, 5, 44, 91,135,250, 26, 88,243, 0,155,186,126,133,152,192, 80,143,244,234, 9, 13,165,246,119,182,117, -221,246,153, 8, 38,206, 20,194,121,147, 50, 96,250, 60, 52, 28,150,117, 29, 53, 2, 33, 65, 24,132, 45, 71,182,160, 10,210,107, - 2,223,155, 90,205, 69,228,136,231,168, 49, 95,168, 99,147, 69,101,123, 29, 1,169,140, 73,246,111,212,233, 36,110, 42,124,114, -182,131, 71,123, 29, 53,149,109, 8, 0, 1, 84, 99, 49, 45,242,121,121,222, 24,112, 44,242,162, 57, 76, 17, 88,104, 24,146,154, - 69, 38,230,201,227,201,157,183,141, 35,159, 49,151,110,229,186,116,176, 78, 64,163,103,110,206, 82,154, 8, 68, 18,187, 38,183, - 85, 6, 65,212, 37,224, 8, 82,231,144,227, 16,104,197, 15, 26,243,193,169, 14,135, 81, 75, 95, 80,226, 32, 51, 86,213,112, 74, -147, 48,191,143,154,251,105,132, 34,236,201, 72,220,202,152, 8,192,167, 59, 73,147,191,176,156,125,144,234, 53,218, 89, 81,154, -160, 77, 67, 21,243, 54,124, 48,141,249, 88,132, 34, 10, 13,248, 48, 66, 73, 31,232, 96, 54,146, 48,244,113, 89, 60,184,155,133, -145, 65, 0,194,133,113, 72,112,186, 99, 85,204, 4, 47,109, 50,235,134, 38,208,232,129,153, 0, 78,210,110, 53, 96, 68,235, 2, - 89, 7, 34,140, 92, 2,138, 61, 24,244, 4,109,130, 40,204, 23,156, 62, 24,127, 20,248, 99,247, 37,160,122, 29,212,198, 96,187, -154,166, 13, 35,162,114, 9, 93, 42,197, 97, 78, 89,216,154,154, 37, 70,253, 57,190,157,155, 40,146, 68, 13,151,221, 52,175, 77, - 94,179, 69,213,175,204, 13, 21,150, 54, 6,137,205,168, 39, 40,239, 5, 69,186, 96,149, 26, 57,120,174,114,133, 67,218,236, 66, -220, 98,186,224,122, 0, 39,144,137, 45, 48, 11,149, 41,173, 37,137,189, 29, 4,157,192, 58,105,123, 53, 14,109, 2,218, 69,138, -233,177, 63,222, 89, 99,181,147, 18,155, 96,206, 80,179,185,117,112,192, 71,103,178, 0, 33, 21,206,234,204,173, 14, 21,233,164, -101, 18,203,152,163, 47,151, 54,218, 24,235, 51,192, 51,122,178,187, 97,239, 67, 19, 93, 92,195,217,245, 45, 15, 24, 28,168,221, -174,177, 34,224,155, 14,181,171, 46,187, 67, 86,177,165,250,114, 22,154, 4,245,233,147, 91,201, 68, 3, 78, 62,159, 51,144,192, -225, 14,201,164,120,133, 10, 29, 8,142, 76, 82, 79, 86,216,114,207,173, 10,115,115,159,197,178,114,235,217,164,209,161, 8,103, - 81, 85, 37,134,232,174,141,182, 70,192,102, 29,125,132,211,137,136,166, 79, 83, 19,202,193,191,119, 49,106,210, 36,232,110, 25, -203, 23,122,160,254,250,135, 43,217, 92,233,176,221,138,179, 99, 78,220,131, 41,245,205,150,250, 94,193, 45,110,119,137, 49, 72, -178,146,140,156,149, 97,159, 35,136,110,183,205,206, 70, 39, 3,181, 46,151,147,211, 51,206,175,163,214,134,126,254, 25,189,189, - 97,254,178,191, 49,208,223, 11, 65, 29, 3,193, 5, 39, 64,234,226, 39,137,119, 96, 32, 74, 21,188,228,173, 99,199,113, 83,110, - 32,101,218, 87, 47,157, 99,131,132, 63,109,203,249,104, 44,255,246,242, 61,117,214,193,175,191,161,169, 74,205,247, 5,252,196, -179, 71, 59,114,121, 11, 27,210,169,143,161, 34, 79,206,151, 60, 71,122, 89,151,247,140,253,179, 62,236, 17,168,217,139, 77,114, - 21,237,114,128, 70, 23,190,254,104, 9,171, 63,255,254,114, 36, 7,235,125, 6,114, 92,215, 4,226, 44,209, 76,158,110, 15,169, - 62,247,201,193,150,124,184,184,145, 59, 93,127,144,130, 61,187,158,200,222,122,143,227,142, 83,173, 90,223,157, 93,201,232,230, -156,179,148,255,252, 63,255, 79,178,178,210,149,187,241, 13, 71, 39,131,142,198, 9, 77, 78,126,242,124,151, 63,119, 51,158,208, -145,112,111,189, 75,249, 99, 3, 0, 11, 65,109,155, 90,253, 2,100,120,126,103,192, 54,182,162,225, 46, 26,215, 12,116,227, 73, -205,107, 63, 61,159, 49,113,154,221,223,107,110,221,163,134,251,155, 15, 31, 8,254,189,215,119,243,203, 47, 14,168, 13,127,120, - 57, 97,144, 39, 59, 56,174,216, 77,193, 61,110, 15, 53,209,173, 22,250,174, 55,201, 32, 65, 33,245,120,111, 71,142, 47, 46,201, -104, 64, 18,249,119, 63,251, 70, 62, 64, 18,182, 85,105,144,111,105,178,152,112, 54,254,245,167,143,229,115,173,196,255,237,229, - 9, 29, 24,209, 33,160, 62, 11,168,151,121, 45,223,255,120, 46,135, 23, 19, 77, 14,103,114,120,125, 47, 59,186, 78,166, 75, 19, - 4,219, 95,107,203,209,104,201,196,153, 14,156,238,232, 25,180, 53, 88, 84,210,177,176, 36,182,228, 94,239,111, 99,117, 77,158, - 30,236, 49,193, 2,118,128,198, 47,177, 7, 70, 30, 40, 12,170, 15,138, 94,129,198, 20,230,207,102,202,144,122, 33,111,129, 2, - 8, 97,234,248,178, 58, 50,238,106,226,194, 33, 56, 80, 23,148,129, 76,154,196,192, 54, 93,225,135,225, 3, 93,206, 12, 30, 82, -190,160,160, 45, 31, 52,219,165,126,240, 80,110,145,162, 85, 55, 96,188,202, 43,195, 48,235, 95, 58,129, 31, 73, 65,191,223,103, -219, 46,184,232, 36,222,170,251, 72,180,222, 66,168,203,209,214,174,215, 27, 0,115,165,107, 86,219,140,188,106,146,158, 7,110, -247, 67, 48,180,118,122,212,124,157,223,155,198,206,235,172, 26,241,152, 86,154,121, 98,240, 0,112, 51,111, 95, 11, 90,168,188, -192,193,141,168,199,108, 63,183,152, 46, 31, 42,105,231,116, 7, 5,184,210,179,234, 80,169,164, 31,185,229, 89, 64,126, 64,251, - 55,127,187,104, 62, 2,138, 1,202,236, 64,161,114,155,187, 35,209,166,213, 63,165,116,237,118, 19, 0,170, 62, 26, 9, 72, 3, - 12, 76,146, 32,136, 83, 55,115, 64,241,119, 24,244, 0,106,247,251, 14, 0,190,196, 93,151,240,207,132, 22,143,201, 71, 50,178, -246, 23,178,211, 40, 10, 10,135,113, 67,113, 91, 16,244, 85, 52, 12,133,208, 13,169,156, 59,159,250,179,170,235,135, 68, 38,118, - 21,186,212, 1,135,219, 43,109,174,141, 52, 54,121, 71,113,108, 8, 49, 14,133,143, 26, 98,163,210, 65, 60,100,161,149,250, 66, - 15,250, 74, 30,172, 63, 17, 40,241, 44,144, 65,163,186, 26,246, 58,205,245, 32,216,193, 21, 11,150,152,121,106, 21, 78,218, 51, -153, 74, 84,184, 61,180,247,105, 57,107, 93,163,216,125,198,103,145,173, 19, 0,183, 34, 10, 78, 44,153, 36, 23,156, 39,182,244, -176,203, 53,179,191, 98,176, 14, 65,175, 77,249,226,152, 65,140,168,227, 52,166,176,210,130,166, 61,198, 72, 0,226, 30, 45,248, - 78,203,120,238,157,142,183,153,171,130,243, 75,200,153, 66,221,107,233,170,128,137, 4,127,132, 74, 43,254, 84,238,139,220, 81, -219, 57,219,145, 64, 35,247,244,122,174, 23, 51, 77, 90,244,103,199, 29, 23,166,202,249,103,250,191, 90, 69,101,141, 67, 25, 58, - 64, 85,105,243, 27,178, 26, 2,219, 6,107, 48,203,140,113, 26,155, 84,104,171, 72,154,238,147,177, 30, 35, 7,192, 6,207,136, -184,209, 80, 8, 52, 75, 36, 53,248,207, 97,217, 39, 98, 24,201, 2,102,216,134, 21, 18,249,213,183, 39,242,191,252,253, 99,121, -167, 1, 7, 56, 10, 72, 2,227,175,141,245, 21,233,106,197, 3,144, 35, 2,197,198,218,128, 2, 31, 16,170,129, 95, 58,246, 9, -232,100, 64,155,211,178, 20,123, 82,223,217,134, 38, 6,151,247, 21,207,190,189,253, 39,242,230,240,216,198, 76,250, 72,129,124, - 70, 81,161,217, 1, 19,251, 5, 53,215, 77,188,138,163,205,196, 84, 1,115, 90, 0, 11,241, 24,211, 25, 18, 82,147, 88, 14, 93, -201,152,231,114, 68, 85,188,131,173, 53,189,166, 11,153,220,223,177, 75, 8,112, 29,152, 7,168,124,209,226,133, 2, 25,214,193, -254,246, 58,219,221,212, 33,240,209, 16,174, 25,247,155, 87, 54, 87,103,119,173,138,217,101, 65,144,194,117, 93, 79,230,242,205, -139, 3,178,140,222, 95, 0, 47, 98,222, 8,240, 7,192,247,173, 96,100, 80, 39, 92,199, 72, 72, 22,148,229,157, 83,127, 0, 2, - 74,243,209,189,158,121, 29,118,165, 32, 5, 11, 43, 86, 48, 36, 94,190,122, 43,197, 92, 3,253,222, 99,173,156, 47,228,211,206, - 39, 18,119,183,228,191,252,183,255, 75,247,212,152, 52, 55,210,240,208,205,210,228,234,111,191,120,172, 63,127,107,166, 52,240, - 71,159,218, 25,142, 17,208,194,129,167,236, 24,196,134, 67,129,250, 46,246, 53, 70, 79, 0,139,129, 6, 8,214, 10,246,233,215, - 95,252, 84,159,233,140,221, 13, 40, 49,118,178,154, 70, 68, 95, 62, 90,147,223,191,186, 32,197,237, 96,189, 67,209, 37,232, 21, -240,204,213,107,249,112,189,212,231, 49,146,245,126, 75,159,115, 44,111,143,144,176,117, 32, 25, 35,109, 93,150, 71,167, 39,242, -221, 52,215,107,221,209,235, 25,201,105,213,149, 71, 91, 61,226,101,186,173, 14, 19,172, 87,199,215,178,187,214,161,165,241,249, -248,146,192,214,181, 46, 70, 50,185, 60,223, 91,145,127,250,215,247,242,254,252,142,221, 25,176, 2,206,224, 69,144,232,254,174, -139,102,244, 73,121, 97, 8, 46,109,174,203,230,218, 26, 99,234, 68, 19,152,142,254,115,127,107,139,239, 18,255,189, 44,172,120, - 70, 1,146, 46, 92,155,155,116, 53,183,176, 12, 62,211, 1, 94, 31, 90,173, 70, 12, 54, 23,173,212,157,150, 66,208,106, 73, 64, -160, 90, 37,155, 23, 15,173,221,194,165,103, 35,135,117, 89,123,187,126,176,221, 68,240,135,243, 14, 42,217, 78,183,153,165,133, -182, 58,109, 18, 63,106,169,219, 56, 32,120, 4, 71, 13, 85, 13,115, 41, 30,168, 64,193,151,105,227,220, 21,180,236,107,121, 56, -224, 3, 32, 48, 74,196, 3,151,205, 50,141,226,101, 34, 8,102, 77, 88,122,149,254,160,132, 38,101,160,113, 21, 86,125,122, 43, -184, 44,130,153, 77,237,130, 50, 6,126,139,189,162, 6,159,152,103,168,207,177, 43, 87,122, 50,234, 77,212, 4,192,202, 21,149, -196,199, 30,180,114,141, 12,193, 31,178,182,248,227, 46, 71, 18, 55,250,232,129,219, 78,116,181,119, 26,154,228, 67, 76,108,164, -145, 93, 23,167,211,132,246,116, 97,154,227, 89,150, 52,137, 0,178, 67,208,149,168,190, 86,155,228, 33,178,249,224,131,110,215, - 45,141, 9, 80,234,188,210,134, 21,209,216,102,214,141, 89, 77,225,220, 75, 19,192,137, 57,147, 69,183, 8, 7,167,205,137,173, - 74, 39,104, 42,149, 70, 93,206,204, 93,114, 74, 82, 26,151,217,170,244,229,194, 84,205,146, 40,114, 42,101, 97,128,163, 58,106, -104, 78,102,255,155, 51,201, 65,230, 15,250,208,152,130, 30,246,120,250,157,132,179, 57, 60,231,101,102,130, 63,145,163,175,201, - 49,206, 32,221, 9,233,238, 22,131, 41,190,150,145, 74,214,225,218, 65,139,112,221,185,219,184, 6, 28, 62, 97, 46, 28, 92,253, - 0,144, 49, 0,163,217, 76,222,207, 77,100, 9,213, 46,184,234,232,226, 68,174,122,136,119,195,229,229, 20,175, 96,131, 89,148, - 75,182,130,209, 26,165,209, 13,245,225,225,154,150,176,213,139,235,194,254, 68,135,234,102,188, 32, 2, 28,127,158,248, 53,209, -207, 89,131, 86,233,215,128,165,103,250, 17, 57,131,208,176, 59, 32,248, 20,193, 16, 72, 91,172, 12, 80,126,176,150,169,246, 22, -197,142,117, 48, 37,178,251,104, 42,119, 19, 61,128,209, 70,174,214, 36,105, 25,133,180,211, 25, 74,135,104,231,152, 82,176,244, -185,199,122, 6, 7, 25, 51, 85, 49,217, 81, 22, 12,149,225,108,210,204,186, 62, 75,247, 75,192,222,166,148,105,150, 52, 6, 74, - 12,116,110,227, 74, 91, 89,215, 39,135, 76, 44,186, 40, 29, 82, 94, 11, 38,247,139,165,209,101,241, 79,180,170,207, 38, 34, 23, -163,185,124,241,104, 67,126,163,149,148,237,107,219, 43,151, 26,132,240,220,224,154, 86,148, 35, 89, 91,228,156, 97,210,152,102, - 81,203,217,249, 53,147,186,210, 29,195,194,232, 11,124,114,160,149,183, 52, 49,216,214, 67,246,195,225, 33,207, 4,156, 89,104, -139,223,145, 53,145, 50,129,194, 45,244,176, 30,124, 60,105,123, 59, 38,130, 28,154,232,216, 7, 65, 6,151,242,214,185,173, 67, -128, 28, 77,122,214,188,238,171,187,137,108,109,108,217,125,105, 0, 57,190, 24,105, 64,209,196,164,147,114,189,108,109,172,104, -117, 58,145,119,199, 87,134,173,192,248,160, 50,183, 54, 36,116,139,218,228,165, 17, 8,104, 92,165,207, 24,227, 20,156,223, 48, - 3, 2,118,100,140,185,174,123,141, 15,178, 54,177, 1,183,148, 31,110,243,119, 80,248, 74,175,233,228,242, 70,206, 95,159,202, - 47,191,122,174, 1,114, 32,135, 87,115, 58,254,157,107,112,131, 16, 11,146,245,207,159, 61,150, 97, 7,218,249,171,242,250,253, -137,188,213,228,231,102,116, 45, 99,173,222, 35,199, 90, 5, 77, 16, 36,140,191,250,246, 71,106, 45, 80,155,162,122,112,111, 11, -198, 97, 38,253,237, 44, 35,158, 53, 17,217, 34,120,158,243,233, 84,255, 29, 38, 86, 29,254, 44,216, 1,113,148,201,215,159, 60, -101,117,110, 85,185,144, 14,182,171,255,125,171,129,249,118, 17,201,181, 38, 68,192,144,108, 15, 82,249,253,137, 86,210,122, 84, -239,239, 62,147,225,147,117, 89,137,103,242,231,179, 82, 46,199,247,146, 97,196, 84, 68,242,242,221, 7, 2, 19,255,244,238, 86, -254,195,191,123, 68,214,132,190, 66,242,227,111,199, 90,193,175,172, 73,165, 21,249,100, 97,133,214, 16,231, 75,100,246,199,149, -190,135,213,213, 46, 43,250, 75,221,163,119, 40, 22,234,132,207,250,226,110,106,254, 15,181,157,155, 97,228,196,249,186,119, 31, - 91,100,107,244, 24,175,142,207,207,120,223,144,142,133,196, 47, 70, 98,105,225,182,171,185,103,253,129, 63,205, 10,140, 74,113, -109,206,208, 76,185,204, 2,108,149,151, 30, 4, 3, 61, 45,242, 96,152, 52,149, 93,104,161,227,119, 39,117,240,124,121,240, 46, - 79, 92, 82, 52, 10,150,169, 81,176, 92,141, 26,205,103,163, 49, 21, 86,233,251,124,152,198, 41,224,113,122, 59,187,174,235, 38, -105, 48,169, 83,184, 82, 57, 58,214,103,182,225,126, 66, 59,217, 92,146,210,166, 26, 92,186,222,122,104, 49, 23,141, 16,198,131, -249, 71,237, 15, 52, 77,237,192,181, 3, 59,106, 58, 4,145,107,144,211, 90, 53, 10,129,219, 43, 11,215,115, 70, 0,133,224, 74, -228,106, 89, 56, 28, 89,173, 56, 40, 17,115,246, 78,234, 46,116,149, 37, 11,193, 26, 54,115,181,185,162, 40, 29,140, 88,123, 43, -220,120,188,117,101,127,179,181,201, 64,148, 58, 88, 44,110,102,210, 46,250,218,120, 88, 7, 92, 66, 28,103, 46,222, 97,243,211, - 86, 26,208,245, 54, 67,238,104, 5, 99, 76,132,136,146,158,104, 55,134, 36, 34,242,207, 8,156,244,208,229, 64,181, 21, 64,128, -181,107,190,227,153,179,162, 22, 3, 4, 54,207, 9,186, 3,168, 92,219,177, 91, 49, 10,181,161,175,110,160,169,156,218,207,229, - 46, 32, 36,102, 18, 84,127, 52, 98,160, 94, 62,219, 84, 86,101, 66,158, 85, 28,159,145,151, 38,108,196,132, 42, 10, 84, 70, 59, - 8,114,247, 78,239,100, 73,115, 31,248, 51,160,126,235, 70,210, 83, 26,122, 96, 76,183, 42,123,231, 56, 80, 35,183,240,229,168, - 69, 43,191, 88,172, 51, 69, 81,152,210, 18, 28, 92, 34, 64, 64,120,247,232,106,165,222,181, 2, 58, 23,130, 46,109, 31,225,100, -158,128,197, 46,125,135, 42,179,246,160, 3,222,117, 78,224,156,205,121,147,110,203, 90,230,222,237, 2, 16, 20,237,116, 36,208, - 56,112,105, 44,164,135,239, 41,230,228,243,188,161,129,118, 59, 38, 86,131, 68, 8,102, 21,101,109,247,219,239,164,222,210,142, -168,164,183, 6,151,194,210,236,117, 23,236,100, 24,117,138, 2, 43, 14,238,195, 33,223,235,246, 92, 89, 46, 97, 53,132,177,194, -112,184,198,170,191,173,135, 14, 48, 37, 24,106,148,122,200, 98, 62,140,100, 43,176,100, 80, 61, 51,217,197, 60,119, 41,206,222, - 48,108, 66,176, 83,102,242, 28, 4,132,188, 3,132,119, 89,126,212, 53,195,187, 88, 82, 75,187,197,164, 62, 36,127, 6,236, 53, -161, 19,188,171, 85, 24,222,232,123,253, 48,170,228,211,189,154,207,233,118, 4, 85,180,136,106,124,180,156,189,185,101, 5,143, -191, 70,195,129,236,110,175, 9, 26, 32,192, 41,204,107,155,225,131, 78, 85,242, 21, 21, 84,154, 67,113,113,119,223,102, 66,186, -185,190,169, 65,253,152, 18,158,164, 80,106, 32, 91,146, 91,110, 21,177,117,133,132,124,228,176,191,112, 78,213,174,237,223,154, - 38,206, 38, 49,148,125, 37,214,162, 79,147,138,180, 86, 4,106,236, 3,208, 44, 49,251, 62,186, 56,212,247,104,109,110, 32,225, -119,183,182,185,199,209,246,135, 15,248,155,163, 43,238, 19, 22, 55,250, 48,209,174,135,171, 30,133,174, 80, 5, 51,152,218,179, -157,234, 53,119, 59, 93,182,224, 35,125, 54, 24,177,224,185, 60,217, 30,104, 98,152,104,213,121, 33,143, 54,134, 76,124,232, 84, -152,216,187,201,157,246,121,126, 61,150,147,155, 25,241, 11, 56,247, 81,149, 66,231, 29, 73, 86,175,187,102, 96,187,110, 34, 31, - 46,238,229,250,118, 42, 21, 68,131,162, 82,171,222,148,123, 21,137, 0, 10,134, 89, 89,187, 65, 79,194, 53, 86, 65,113, 47,170, - 63, 2, 36, 11,187, 92,153,119,155,128, 25, 49,253,134, 22, 85,230,208,121,109,195, 71, 93,171,114,104, 47,116,187,125, 57, 60, -187,211,107, 43, 53,233, 2,104,110, 69, 54,134, 25,223,243,151, 79,183,229,191,254,233,131,252,120,124,107, 2, 67,119,115, 26, -189, 32, 17,129,227,218,213,236,181,100,237,190,180,234,185, 92, 77, 76, 30,248,217,206, 58,113, 28, 72,174, 78,206,207,233,234, -247,225,250, 64,254,238,203,158,188, 57,190,145, 23, 7,235,178,183,221, 34, 29,239,231,159, 61,145,223,253,240,158,248, 28,184, -197, 33, 73,154,210, 85,175,144,169,254,190,105, 94,177, 3, 19,105,156,152,150, 9,181,231,147,186, 36, 27,164, 42, 31, 76,191, -112,136,224, 29,158,156, 95,176, 67,211,110,153,176, 18,236, 90, 87,250,182, 22, 80, 48,128,171, 30, 65, 93,206,120,146, 38,118, - 18,140, 66,192, 3, 69,203, 49,115,106, 4, 51, 94, 71, 72, 51,120, 71, 70,239,160, 97, 10, 14, 82,201, 27,221,231,160,224,197, -128, 30, 89,155,167,153, 25, 59, 8, 47,180, 46,107,167, 25,133,214,124, 77,206,223,162,145, 23,173,252, 48,109,212,193,234, 7, - 75, 88, 84, 32,152,219,225,107,144,135, 12, 50,164, 54,127,181, 10, 57,105, 18,148,218, 61,157,243,102,142,108,148,199,186,177, -225,172,157,127, 86,186, 3, 88, 99,213,217,204, 52,106,231,114,166,110, 52, 99,200, 75,106, 12,187, 60,105,227,197,238,238,105, -166, 5, 95, 53,243,126, 6,138,162,116,244,171,112,134,139,128,142, 13, 13,158, 44, 42, 96,252, 77,197, 37, 7,219, 81,217,204, -181,133, 13,193, 94, 55,222,219,161, 69, 19,158,113,145,152,210,151, 85,124,102,153,136, 39,128, 86, 58,145,248, 69,249,128,155, -240,223,191,204,205,215,183,229,168,106,114,238, 51,195, 14,152,122,152,209,206,208, 73,196, 97, 79,217, 96,253,222, 42,117,250, - 32,218,191,238,100, 87, 22,134, 63, 48, 81,159,146, 93,129, 44,141, 92,225,205,146, 46,243, 26,168,217,182, 77,220,114,245,241, -166, 41,152,129,158,129,235,194, 76, 9,155, 21,182,136,199, 85,193,106,122, 1,233, 73,221,180, 16,189,192,247,226,176, 11,250, -246,216, 52, 88, 35, 45,247,249, 14,129,128,124, 96,250, 28, 87,114,159,152,133, 99,144,235, 12,216, 7,235,178, 68,141,202, 26, - 37, 75, 11,123, 38,129, 51, 13,240,163,141,144, 74,173,102,151, 46,168, 20,214,138,248,122, 77,220, 36,197,102,247,240,147,238, - 59, 56, 9, 45,103,180, 95,131, 65, 81, 43,117,101, 66,253,124,236, 63, 36,118, 64, 12, 35,169,163, 33, 14,248,211,147, 5,145, -244, 28,167, 64, 44,167,159,153,163, 89,100,188,239,153, 62, 35, 84,118,120,254,112,177,218,136, 7, 84,126, 3,178, 24, 14,130, - 0, 20, 97, 6,220,201, 10, 86,231,216, 35,155, 88, 91,203,185,117,190, 98,136,234, 88, 2,141,209,195, 0,190, 14,149, 37,136, -152,181,219,181,250,188,183,109, 90,237, 24, 21, 8,103,232, 86, 69, 33,160,225,160,139, 53, 0,162, 13, 44,156,149, 3,157,190, -180,121, 49,115,237,146,235, 23,215, 12,245, 56,156, 51,137, 31,208, 0,109,133,209, 24,192,113,226,251, 27,129,208,180, 17,234, - 70, 86,153, 34, 85,126, 6, 5,128,102, 96,133,136,143,202, 24,236, 1,142,133,232, 75,102, 9, 12,217, 20,122, 78, 92,143,198, - 76, 48,222, 94,204,229,155,231,235,178,185, 58,160,118, 60,110, 18,137, 15, 3, 10, 59, 42, 38, 34,132,164, 11, 92,254,237,141, - 20, 74, 6,122,112, 66,221,203,104,168, 81,106, 85, 52,168,127, 61, 56,122,141,238,245,243,251,122,152,111,200,179, 39, 79,228, -183,127,248, 3,147, 90, 88,153, 66,128,104,225,213,119,226, 12,156,188,176,245, 7, 83, 25, 28,240, 19, 26,121,152,197,115,150, -218,104,175,250, 8, 56, 92,145,171, 94,104, 80,191, 37,175, 31, 35,149,247, 39,231,178,181,186, 34,207, 30,237,203,205,237, 21, - 71, 72, 72,238, 86, 6, 45,206,118, 81,245,125,254,100, 75,254,248,242,144,154, 1,122,234,105,160, 6,237,204,146,227, 69,176, -195,117,113,172,200, 11, 31,147,223, 93,200,254,214, 6, 41,135,216,139,151,163,137,117, 88,201,142,169, 41, 79,220,131, 38, 65, -106, 54,204,157, 88,175,109, 92,153,166,185,203, 92, 71,109,211, 2, 0, 90, 27, 9,201,235,195, 11, 38,205,187, 27,171,242,244, -201, 83,142,107,138,217,141,124,254,104,149,252,236, 1,109,141, 99,118,142, 94,125, 56,147, 15,167,151,220,103,104,225, 99,111, -226,103,129,180,159,107, 85,187,234,231, 80, 68,131,153,146,116,186,205,181, 30, 13, 92, 56,158,165, 31,121, 70, 11,212,203,155, -123,121,182,191, 65, 71,181, 31, 62,220, 80, 77,238,126,114,165,251,235,158,103, 31, 52, 11,160,175, 31, 10,196,235,137, 9,101, -225,108, 89,213, 53,177,177,177, 41,111,222,126,207,206, 31,233,114, 29, 13,222, 39, 23,122, 86,245,228,243,199, 43,212,126,128, - 9, 16, 70, 59,207,182, 51,121,119, 58,209,100, 97, 69,175,181, 43, 23,250,140,191,122,113, 32,255,252,199, 31,245,126,198,198, - 50,161, 19,100, 42,191,127,125, 37,191,248,108, 93,254,159,223,126,208,234, 61,150, 59,173,216,103,181,233,216, 99,140, 24,233, -254, 4, 48, 21,197,235, 84,223,247,245,205,200, 70,200,238, 8, 26,209,165,180,205,223, 5, 49, 34,116,189, 16,240, 65,131, 78, - 67,240,180,128,217,216,219, 54,155, 39,167, 7,113,193,189,131,185, 71, 64,163,199, 77,221,103,213,164, 68, 15,252,245,208,221, -157,206,141, 87,139, 3, 14, 63, 97,102, 37, 22,144, 66, 43, 60, 84, 72, 68,215,215,134,171, 14, 29,227,166,237,250,177, 25, 71, -252, 48, 75, 75,146,170, 1,209,240, 96, 46, 74,111,197,155, 82, 89, 30,236, 56, 37,204, 96,140,219,222, 40,199, 1,236,214,178, -224, 18, 84,172,194,129, 31,185,153, 13, 14,118,204,117,113, 16, 67,227,215,126,222,187, 12, 28, 31,180,152,113,227, 26,144, 61, - 38,206,153,175,220,148, 33,112, 14, 3,168, 7, 7, 28,218,164, 5, 71, 23, 6, 88, 65, 22,191, 54, 52,183,174,220, 85,227,236, -160,178, 11,225,172,155,170,110, 73,163,139,143,121,125,233, 98, 55, 20,125,161,205,109,139,139, 34,241,185, 36,130, 5,173,109, - 83,107,223, 85, 14,126,203,221, 5,139,115,207,133,181,252,150,243,154, 7, 12,252,136,165,178, 76,176,118,128,153,205,103,187, -246,220, 29, 7,128, 13,141, 57, 20,208,154,144,225,133,131, 17,104, 66, 65, 96,168, 49,114,201,210, 6,225,142,236, 22, 27,105, -208,181,185, 46,174, 34,163,112, 79,218,116, 79, 98,119, 61,194,156,113, 95, 15, 73,188, 51, 8, 65, 0, 69, 75,101,180,202, 18, - 65,104,178,195,113, 43,113, 29,132,144, 52, 26, 56,179, 96, 50, 19,236,126,131,154, 97, 96, 16, 4,140, 68,240, 5, 8, 88,131, - 86, 22, 68,141, 98,179,221, 45, 13,145, 94, 37,118,120,145,163, 75,241, 25, 3,233,132,125,210,166,189,170,238,143, 74, 15, 30, -173, 94,193, 25,134, 88, 30,120,219,112, 6, 3,117, 10,159,133, 86,173, 85,169,169,179, 43,172,117,142,125, 85, 64,239, 59, 50, -106, 82, 74,190,185, 81, 61, 97, 66, 97,200,239,220,196, 65,144,144, 57,141, 71, 92, 7,222, 44, 37,219,102,102,164, 63,159, 45, - 12,204,138,138, 34,243,118, 63,219,168,154, 56, 76,167,137, 85,210,173,132, 54,164,238,157,204, 63,207, 92,249, 12, 73, 64, 90, -196,166,217, 30, 27, 34, 29,159,215, 78,117, 47,184,204, 39,214,211,128,239,206,168, 77, 45,221,227,152,231, 81,143,162,142,156, -205, 80,176,117,140,238,197,220,165,160,241, 57, 24,143, 1,181, 13, 31,239, 25, 43, 85,195,155, 88, 7, 79,184,174,197,229,130, -131,181,111,208, 87, 32, 18,159, 74,129,149, 43, 30,214,141,167, 0, 61,194, 59,157, 70, 91, 33,114,206,243, 4, 21,117,108, 78, -114,103,119, 37,117,199, 55, 53, 64, 28, 93, 36,108,175, 19,231, 34,134, 77, 64,146,145, 21,176, 2,142,205,195, 66,159, 41, 42, - 62,140, 2,232,196, 72,175, 10,215, 96,192,123, 43, 52, 88,246, 68, 46,174,110,101,253,249, 35,121,250,248, 64,126,124,243,150, -192, 37, 52,136, 17, 96,123,154, 96, 21,142,204,159, 57,131,130,216,137,101,193,245,204,132, 36,243,209, 91, 93, 57,163,166,250, - 8, 28,107,214,196, 0, 91,238,239,238,234, 97,127,175,129, 13, 46, 94,183, 12,238,159, 61,217,214,231, 57,145,239, 94,159,201, - 79, 63,217,225,250, 66,151,225,103, 63, 17,249,254,221, 49,199, 42, 49, 11, 52, 61,103,122,122,255,247,115,163,123,214,117,147, - 40,181,108,105,153,195,157,190,195,115, 13,228, 28,145,192, 2, 86,131, 60,196, 87,144,120,172, 14, 76,197, 19,127,144,212, 86, - 48,213,154,116,244,181, 26, 47,103,166,238, 73, 65,174, 50,225, 89, 13, 32, 26,206, 6, 88,186, 30, 94,142,229,229,251, 19,217, - 95,164,242,233,243,199,178,243,233, 39,178,191,217,150,186,208,235,169,230,114,121,121, 37,175,143,175,152,128,238,239,110,179, - 35,240, 83,173,166, 57, 10, 21,147, 44, 7, 56, 17,230, 58, 0,159, 65,191, 30, 35, 14, 36,218,167,151, 37,101,159, 49,227,135, -206, 61,206,100, 60,235,155,219,137,222,159,113,219, 87, 86,118,229, 74,147, 59, 96, 31,144, 0,225,236, 66, 59,124,123, 53,145, - 75, 13,230, 24, 19,173,245,108,228, 82, 98,127,220,221, 73,212, 26,235,250,235, 72,181,156, 49,168,143, 64,243,211,123,252,234, -233,129,252,241,205, 7,249,230,197, 19, 57,187, 56,165,202,220,176,187, 37,122,185,242,207,223, 30,202, 47,191,218, 99,247,102, - 89,116,228, 23, 95, 61,147,255,242,171,111, 77, 21,143, 82,188,145,156, 95,223,235,191,111, 17, 43, 3,212,254, 96, 89, 49,201, -131, 83, 95,233, 66, 69,137,251,126, 44, 26, 81,184,154, 10,136,144,240,197,217, 0,111, 19,244,115,202,202, 48, 56, 88, 51,159, -110,111, 97,173,167,252, 37,160, 94,133, 74, 80, 18,249, 11,111,245,204,209,219, 4,142,161,133,217,232,160,219,188, 24, 6, 28, -209, 71,128, 40,105,170,164,220, 53,220, 99,111, 77,155, 96, 5,254, 63,117,245, 47, 86, 6,249,178,113, 16, 10,106,107, 15, 51, -248,160,235,109, 24,234,200,171,167,200,145,209, 1,169,108, 25,176,201, 79,182, 28,209,141,131, 8, 52,155,196,197, 71, 8, 86, - 41,171,230,231,217, 38,118,208, 87,202,172,115,201, 22, 46, 15, 91, 71, 63, 47,125,236,144,101,137,115,233,147,166,117,159,250, - 33, 88, 16,168,100, 34,251, 12, 40,113,213,180, 0,131,116,110, 48,185, 15, 85, 94,213,104,233,151, 4,184,208,190,207,233, 97, - 4,157,197,174, 39,237,207,141,250,191,147, 57, 15,253,110,219,228, 4, 91, 46,242,131, 67, 26,247,137,175,227, 26,103,164, 53, - 68, 77, 91,138, 10,112, 64,152,235, 13, 99,230,107,188,207,136,244,135,198,255,125,185,244, 89,186,139,236,232,155,131, 65, 4, - 52,188, 81,129, 96, 49, 21,142,188, 12, 86,176,104,195,247,187,165,235,149,187,243,148,183, 73,227,248, 97,206,143,182,239,132, - 85,145,241, 82,145,149,147, 58,227, 99, 24,182,146,166, 51, 79,142, 18,163, 25,214, 48,238, 17, 51, 19,234,119, 40,129, 25,249, -220,252,242,122, 76, 94, 44,238,123,119,107,141, 89,123,225,221,141,196,129,130, 86,117,185, 36,110,149,187,174,186,139,207,184, -132, 49, 71, 23, 1,232,231, 51,194, 16, 12,130,236,104,220, 88,214, 22, 38, 81,153,165,205,129, 75, 33, 35, 71, 9,167,177,109, - 62,104, 77,107,186, 67, 13,110, 4, 35,172,117, 84,133,121, 49,102,160,142, 35,163,192, 81,202, 84,147, 82,136, 84, 44,150, 38, -191,153,167,137, 95,155, 37, 92, 88,131,150,104,120, 87, 64, 15,101,220, 31, 42, 41, 92, 11,218,163, 76, 50, 29, 17, 24,176,155, -164,150,149, 57,147, 29,116, 80,170, 32,191,171,223,129,106, 13,179,209, 52,174, 27,243,162,136, 18,183, 25,131,177,209,135,162, - 6,152,200,241, 77, 98,123,238,114, 52,101,203, 30,107, 16, 8,239,123, 89, 56, 24,205,130,107, 71, 15,167,182,158, 35, 19, 10, - 99, 20, 12,136, 25, 43,224,146, 93, 3, 92, 29,214, 13,101,136, 61, 17, 54, 64,173,129,114, 3,107,162,240, 25,107,176,249,205, - 93,188,133,162, 83,113,226, 46,142,214, 50,206,157,195, 31,244,220,137, 18, 79, 44,240,176, 42,106,155,232, 19, 90,226,180,140, -213,123, 60,186, 25,202,215, 47, 6,220, 99, 88,247, 27,171,109,174, 37, 88,174,226, 61, 99,126, 25,146, 66, 10,160,232,187, 96, -231,101, 56,228,125,223,142,140, 77,131,251, 64,155,121,103,163, 35,197, 36, 34, 90, 27,231,232,103, 26,220,255,237,207, 63,242, -220,195,129, 13,237,244,249,210,140,173,208,181, 1, 74, 25, 29, 28,211,226,143,154,238, 91,163,193,128, 46, 25, 76,108,138,224, -172, 88, 24,213, 83,255, 96,117, 56,208,251, 30,203,185, 6,192, 95,254,236,107,234,134,207,242, 29,218,126,162,203,121,122, 61, -145, 71,187,107,252,253, 40, 66,126,249,245,115,249,253,183, 63,234,181, 15,220,198,185,144,161, 75,125,227, 8,135,147, 94, 94, -152, 14,200,189, 6,150,174,159,109,232,206, 65,139, 28,232,248, 79, 31,237,147,162,120, 1,209,160, 90,147,235,126,139, 66, 50, -152,223,231,238,222,184,156,143,117,189,245, 89,209,210,165, 17,231,118,214,213, 68, 54,231, 58, 5,192, 26,106,137,159, 29,172, -201, 15,199,183,242,199,239,103,242,236,209,174,110,188,103,178,208,119,243,187,223,252, 87, 61,223, 70,148, 92,229,136, 5,154, - 7,186,142,199,119, 83, 82, 79,231,212, 49, 40,201,160,194,251, 4,206, 35,141,221,127, 3,231,114, 93,241,115,210,216, 58,155, - 92, 23,104,197, 67,185, 77,147,205,145, 76,101,176,122,224,231,102,194,142, 87,234,166, 57,227,121,193,179, 24,235,248,108, 84, -104,113, 98,157, 69, 36, 56,211,197,145,108,111,108,144,142,119, 7,109,134,114, 65,170,219, 31,222, 28,233, 62,235,201,135,203, - 91,118,119,112, 94,156,220, 76,249,236, 1, 92, 60,187,205,229,197,254,138,198,192, 27,217, 90,217,148,191,255,249,115,249,167, - 63,188,211, 4,194,146, 9,124,198,187,139,169, 60,222,234,201,159,222,223,114,236,122,175,215, 1,149,185,170,156,115,204,195, - 36,187, 54,172,193,157, 38,114, 16, 19, 98,119, 21, 54,183, 89,206,243, 27,251,220, 40,112, 53, 41,182,156,169, 39,222, 38,103, - 21,142, 23, 18, 85,141, 14,119,228,142, 96, 1,108,148,184,122, 88,144, 5, 12,173,244, 80, 57,199,222,130, 14, 85, 56,121,224, -185,123,125,121,123,155,230, 25, 46,134,130, 0, 65,216,190, 87, 78, 46,148,222,100, 20,117,211,170,183, 54, 27,231,248,206,135, - 10,200,244, 0,226,227,156,189,172,124, 35,183,205,172, 3,217,153,102,217,137, 27,101, 76,102,243, 70,174, 51, 76,152,153,105, - 70,168, 98,171,166,115, 80, 4,190, 31, 2,177,235,210,195,210, 49,241,170, 18, 73,132, 56,104, 47,119, 58, 86, 64,251, 51, 73, -161,162,144,105, 20,151, 30, 52,250,208,241, 46,140,210,130, 3,121, 62, 95,186, 8, 68,198,195, 6,135,119, 65, 5,165,148, 7, - 43,146,131,118,102,193,138,153,177,216, 12, 12,246,183, 56,180, 57,123,243,249, 43,244,142,225,190,133, 23, 14, 74, 72, 96, 13, - 12,252,123, 47, 97,188,224,230, 27, 65, 21, 16, 93, 2, 84, 77, 1, 25,156, 38, 54,191,193,225,120,117, 51,230,215,240,236, 64, -123,137, 56,179,204,168, 97, 29,148,243, 8,120,171,172,170,192, 6,103,119,129,252,249,210, 16,189,101,222, 36, 48,104,187,178, -229, 71,106,213,130,153,118,236, 24, 3, 28,220, 56,248,241, 57, 97,188,146,166,118,125, 52, 42,193, 6, 70,144,208,195,247,228, -226,214,244,241, 61,224, 66,106,118,198, 25,182,190, 23, 61,100,145,120,220,142,151,205,172, 27,135, 2,127, 39, 15,173,154,238, - 86,165,171,222,133,121, 98, 86,197,205,232, 69,124, 68,129,123, 98,130,228, 9, 86, 21,214,155, 35,255,115,199,112,224,152,165, - 31,179,115,220, 43, 90,222, 86,114, 57, 6, 8, 71,159, 9,172, 73, 23, 5,131, 22,171,139,133,249, 40, 4, 61,248,202,231,101, -148,148, 45, 2, 69, 48,162, 42, 85, 84,219,236, 18, 51,202, 44, 72,181, 82, 94, 45,162, 96, 74,226,221,151,224,216,135,119,130, - 96,143,223, 11, 51,152,249,204,254, 12,215,134,177, 86,187,229,150,159, 18,177, 83,146,210,211,160,101, 65, 29,227,130, 22, 58, - 34,166,223, 15, 4,255,210,189,209,115,111, 23,145,190, 23,133,214, 55,232,173, 17,147, 60, 94, 11, 0,131,208,125,143, 51,182, - 39, 73, 28,152,207,205, 52,166,212,235,237, 98,190, 94, 53,138,132, 84, 71,203,132,129,214, 90,237, 37,219,239, 28,117, 84,226, - 74,143, 1,224,106,193, 21, 29,159,118,214,230, 63,177,175,195, 56,171,246, 36,179,176, 94,191,143, 22, 18, 90, 90, 6, 81, 13, -130,113, 35,227,185, 3, 29,253,250, 98, 33,127,245, 89,204, 10, 28,136,106,236, 23,172,239,235,234,142,109, 92,164, 73, 24, 97, - 44, 32,179, 59,128,118,184,141, 18, 48,166,192, 45, 97, 30,203,247, 84, 71, 78,135, 45,100,109,109,131,123, 26,215,247,197, 39, - 47,228,251,215,239,141, 81, 18, 91,119, 11,225,103,198, 10,191,110,146,123, 4,125,112,207, 65, 9,246,129, 16, 27, 39,208,233, -136,189,179, 88, 2, 95, 3,126, 55,254, 44,170,104,198, 52, 35, 0, 48,146,151, 31, 78, 53,177,104,113,175,237,108,111,203,233, -217,145, 6,198,165,108,175,229, 90, 81, 78,137,192,127,246,120,151,227,156,243,171,177, 92,141, 81, 0, 85,114,116,117,175,207, -164,242, 81,159, 21, 59,196,107,100,102,236, 2,241,151, 1,220,193,244,185,192, 12,229,183, 47,223,112,207,236,108,172,145, 83, -159, 3,244,138,238, 1, 71, 44,186,175,250, 6,124,156, 64, 45,175,219, 49,249, 86, 92, 59,198, 88, 73,212, 8,122,161, 91,131, -164,231,235, 39, 67,249,254,172,166,136,205,191,253,254, 15, 50, 31, 29,233,235, 65, 18, 35,172,150,137,122, 7,229, 88,207,139, -223,189, 60,228, 62, 40,157,238,140,115,202, 52, 52,133, 9, 90, 24, 63,146,241,145,233, 57, 15, 15,123,125, 30, 3, 77,104,176, -116,201,204,138,161, 93,209,225,158,122,188,179, 46, 63,255,116,151,156,119, 8,240,172,116, 0,152, 45,228,199,195, 43, 57,209, -132, 8, 50,177, 40,126,114, 58,209,197,156,211, 35,161, 74,251,125,254,217,139,157, 29,121,171,207, 15,231, 42,206,234,189,173, - 77,198,144, 15,167,231,156,121,255, 70,223,215,179,157,190,140,110,111,229, 40, 41, 8,198,187,214,100,248,249,193, 14,187, 22, -183,122, 62,159, 76,112, 6,198,114,125,191, 32,122,254,215,127, 62,147, 74,147,106,250,199,243, 28, 45, 26, 21, 76, 90, 68,235, -123,129, 32, 13,192,158,145,171,116, 70,220,139, 54,182,187,212,243,154,163,113, 61, 43, 96, 15,156, 6,183,179,198, 67,193, 3, -130, 61, 44, 83,153, 99,224,151,168,225, 3,199,113,220, 4,226, 0,218, 98, 11, 51, 88, 96,122, 75, 61,242,246, 89, 0,103,133, - 23,144, 59,165, 45,204, 21,195,161,106, 42,105, 6,192, 11,109, 83, 86, 10,177,233, 69, 86,238, 73, 30,248,230,129, 10, 55, 39, -253,203, 90, 87, 0,215,228, 14,182, 64, 32,142,189,210,197,127,195,213,135, 51,216,123,171,174,113, 32,209, 74, 86, 3, 3,179, - 64, 7, 70, 49,200, 38,214, 74,198,103, 62,218,221, 98,198, 45, 94,161, 6, 16, 21, 22,186,161,181,197,192, 11,174,114, 71, 84, -172, 3,213, 16, 20,136, 34,102, 22,159, 49,243, 68,144, 67,181,179,185, 62, 52, 33, 27, 87,117,226, 4, 48, 50,137, 75,113, 22, - 2,130, 8, 36, 54,151, 75,171,188, 48, 31, 95, 93, 29, 90, 98,130,214,216,120,226, 92,117,104, 42,153, 31, 54,238, 9,128, 54, - 75,186,140,222,196, 22,190,155,122,224,154,208, 78,135,105,129, 33,162, 77, 47,250,158, 74, 70, 54, 83, 71, 27, 19,179,197,155, -209, 61,171, 11,163, 8, 45,104, 63, 90,123, 98,196, 36, 1,155,121, 6,153,213,146,137, 16,231,201, 56, 20,122, 45,107, 83,226, - 16, 92, 88, 53,128,224,182,161,155, 13,207, 10,198, 41,104,181,146,163,188, 92, 50,136, 6,229,183, 96, 28,131,247,136, 10, 31, -223,219,120,227,224, 0,238,162,253,132,108,125, 73,161, 11,106, 93,107, 85,129, 63,195,181, 4, 15,238,194,241, 17, 12,160, 64, -205, 23,126, 40,235,245,176,211, 48,236,152,116,103,110, 85, 19, 54, 20, 44, 82, 33,206, 2,121, 81, 45, 81,141,181,144,151,158, - 8, 10,219,117,164, 36,210, 67, 60,243, 36, 80, 15,126,125,239,243,210, 90,222,104,119,190, 63,187, 53,218, 90,167, 75,140, 3, - 1,129, 30,128,136,234,119,124, 3,116,182,215,225, 54,213,141, 41, 89, 59,209,207, 2,127, 58, 14,207, 81,239, 21, 30,205, 27, -171,125, 86,240,120,102,104, 47,226,231,233, 22,231,186, 10,180, 26,214,103, 5, 28, 12,100,106, 43, 31, 85, 1, 4,135,185, 35, - 90,199,248,153,245,181, 46, 52,174, 88, 57, 7, 3,161, 89, 94, 83,125, 14, 7, 52,245,224,227,121, 83, 49,206,137, 34, 47, 56, - 98, 0,152, 15,114,180,151,247, 54,147, 39,168,176,211,163,240, 7,174, 11,115,240,233,124,198,207,193,225,109,128, 89,173, 44, - 52, 8, 46, 40,237,154, 55, 26,237,216,150,216,111, 49,149,214, 34, 2, 67,107,135,116,134, 89, 63, 71, 54, 11, 75,154, 51,183, - 10,230, 22,119,117, 61,124,198,162, 54, 65,161,216,233,142, 38, 65, 93,187, 86,133,153, 30, 49, 8,195, 65, 79, 15,102, 84,179, -239, 79,111,245, 0,223,144,189,157, 13,226, 18, 80, 21,173,173, 12,100,125,125, 85,147,161, 25,185,197,120,199,196, 16,136,119, -223,240,126, 53,192,161, 98, 71,151, 1,207,175,160, 35,158, 41,177,245,250,185, 28,106, 80,253,119, 63,253, 82,215,254,154, 6, -217, 45, 13,178,103, 76,126,104,217, 75, 89,220,146, 73, 31,196,192,177,175,193, 40, 92,208,120,166,114,255,248, 68, 38,112, 47, -119,255,130,168, 29, 83, 55, 28, 78, 94, 8,230,115,184, 43,234,131, 3,149,169,204,151, 84, 52, 92,230, 17,157,212, 46,110,167, - 84, 83, 3, 40,243,242, 42,213,251,105, 17,168,134, 66, 8, 9, 1,198, 85,169, 22, 47, 51,125,206, 49,207, 64,173,126,151,173, - 6, 72,139, 74, 15,231, 40, 90,218,229, 80, 63, 67, 3,248,217,245,141,108,234,126, 5,144,116, 52, 53,211, 22,180,144,209,121, -186,188,185,225,117, 98,252,130, 78, 12,248,230,109,173,202,139,184, 71,209, 29,130,110, 49, 90, 64,229,168, 39, 19,214, 48,170, -230,227,235, 57,169,164,127,243,147,167,242,226,233, 99,253,224,223,200, 31, 79,167, 76, 36, 80,152, 28, 68, 54,234, 10, 64, 60, -128, 31, 33,181, 26,187, 37, 48, 52,114, 58,236, 38, 89,231,182, 71, 74, 94,205,241, 19,186, 77,248, 62, 36,201,144,223, 5, 69, - 17, 96, 84, 19, 78, 67, 66, 93,107,193, 50,145,211,155,156,251,253,103,159,172,211,102, 21,180,182,246,243, 68,131,241,138, 62, -219,150,252,111,191,122,163,123, 76,223, 57,129,174,133,169,185,101, 48, 95, 58,149, 36,123,170,159, 85,201,150,174,149,215, 71, -199, 44,152,112,221,192, 31,100,250,254,158,237,109,145, 34,141,103,133,100,167,136, 82,217,218, 72,228,228,116, 46, 7, 91,171, - 60, 19,240,187,113,253, 39,231, 26,140, 95,172,241,243, 47,238,150, 28, 83, 32,121,198,216, 39,176, 18, 82,183, 3,159, 85,118, -206, 98, 12,105, 35, 96,196,169, 54, 11, 81,140, 69,168,116,168, 63,135,164, 33,109,185, 59, 91,224, 17, 7, 78,121,229,102, 45, -117,224,141, 59, 82, 61, 84,246,213, 71, 58, 95, 1,157, 26,137, 5,217,216,171,234, 0, 66, 11, 84, 57, 34,212,189,125,242, 96, -222, 82, 62,136,141,200, 95,206,243, 65,185,192, 5, 7, 79,108, 67, 6, 39,141,164, 44, 51,240,172,245, 0, 32,171, 42,111,141, - 10, 41, 46,104, 23,226,176,203,220,182,207, 84,168, 28, 21, 9, 41,194,194,228, 13, 73,159, 90,154,202, 28, 50, 84,250, 28,235, -223,216,240, 56,184, 87,117,145, 4,161,149, 0,238, 50,132,166,181,213, 17, 24, 81, 5,116,124,236, 64, 60,129,190, 0,124, 29, -159, 7, 47,106,203,182,160,112,183,176, 5, 0, 37, 47, 88,208,234,239,203,231, 57, 69, 61, 2,112,170, 96,139,200, 42, 9, 48, - 11,240, 79,163, 29, 70, 4,212,225,144, 65, 32,132,186, 21, 2, 4, 5, 74,124, 22, 7, 32,153, 45, 98, 3,190, 96, 4,177,169, - 11, 12, 47, 92,146,184, 65, 16,207, 22, 70,151,194,108,202,128,141,102,187, 59,163,148,164, 6, 41,253,217,171, 91, 67, 79, 99, -133,181,171,140,207, 59,128, 30,131,228, 47,223,169,254, 28, 90,115,188,102,108,164, 97,159,223, 3, 43,221,218, 13,104,160,216, -149, 46,173, 10, 20,151,203,196,102,180,153,116,219, 4,118, 42,147,231,109,145, 19, 60,215,223, 57,225,181,208, 74, 51, 53,220, - 68,226,250,253, 56, 20, 97, 17, 58, 37,119,181,144,241,233,149,108,111,172,104, 38,190,209,160,236,111,239,238,153,200,193, 8, - 5, 75,241,236,242,134, 64, 47, 84,204, 1,173,143, 74, 27,193,197, 0,118,210,128, 69,151,185,185,124,149,254,188,136,251,136, - 31, 16,215, 45,162,214, 45,233,108, 71, 22, 60, 87,122,134,164, 46, 64, 25,210,103,211,194, 33, 19,215,180,236, 44,181, 52,205, -244,158,102,243,186,209, 76, 96, 18, 25, 89,130, 9,159,239,151,103,247, 20, 64,225,239,111, 25,159, 29,159, 13,100,107, 26,181, -108,148,197, 96,109, 92, 91, 38,204,250, 81,119, 83,179,217,164,129,196,104, 46, 90,172,241, 48,188,155,131,123,188,100,213, 93, -235,123,189,158, 85,114,122, 87,176,146, 66,117, 89,148,161,109,109, 29, 21, 4,220,124,225,114,197,169, 9,166,148, 62,207, 35, - 58, 60,180,229,171,208,233, 64,112,155, 91,231, 78, 12,159, 80,214,166,127, 64, 74,164,171, 63,218,231,213, 78, 3,179,103,103, -246,190, 86,125, 99, 86, 44,153, 56, 38,166,160, 10, 29, 41,125,172,236, 11, 51,191,128,180,107,111,192,142, 77,144,243,101,130, -164, 73,132,189,136,218,153, 32,174, 66,136,214,112, 33,238, 98,104,218, 25,224, 85,175, 13, 87,216,254, 60,190, 41,228,139, 39, -125,121,151, 24,239,159,110,130, 75,204, 96,167,228, 75, 67,232, 5, 29, 13, 60, 87,118,140,106, 27,137,193, 27, 5,215,114, 63, - 27, 81, 88,103,122, 15, 1,171,133, 6,144, 37, 1,132,176,200,156, 79,239,229,233,193, 35,185,184,188,176,115, 39, 55,243,150, -118, 59,114,198, 75,105,163, 64, 80,212,150, 53,245,245, 77,118, 35,162,220,105, 93, 61, 40,118,150,110, 74, 4, 16, 98, 78,165, -195,123,121,118,176, 79,157,111, 0, 49,183,233, 7, 63,144,255,247,119,127,150,190, 91,232,190, 62, 46,229,151,235,123,148, 72, - 69,149,184,161,235,255,101, 9,140, 64, 46,187,235,125, 41,150,125, 57,190, 28,155, 3,163, 7,199,202,245,242,159,104,176,186, -156,220,243,153,219,185,159,200,158, 38, 40,245,197, 5,139, 26,208,186,206,198, 51,217,233, 71,174,120,153,112,109, 16,120,153, -160, 83, 53,167,203, 93, 94,216,216,135,178, 4,122, 70, 3, 65,142, 61, 7, 96,217,245,164,144, 71,213,149, 44,170,132,180,199, -255,248,119,127, 69,166, 4, 18,237,181, 65,135, 22,170,189, 14, 60,222,103,242,250,195,169,158,113, 51,214,230, 89,106,184, 23, -210, 73,211,184,241,161,192,251, 5, 70,103,158,215, 76,222,128,115,194, 62,130,248, 11,206,239,121, 81,211,231, 29,123, 13, 1, -255, 86,171,217, 63,190, 58,151,255,251,119,239, 52, 81, 26,177, 10, 38,238, 73,239,255,169, 6,118,140,152, 18,103,192,192, 34, -186,213, 45,104,213,250,100,107, 69,214, 86,215,101, 86,198, 60,115,118,215, 55,184,166,126,252,112,204, 51,255,241,206, 22, 93, - 4, 91,173,142,238,237,174, 60,173,161,137,209,149,237,213,140,128,191,243,139,130,221,211,205,149,185,188, 59, 31,201,163,205, -129,220, 78, 11,249,247,223, 28,200,255,254,155, 67, 38,192,100, 46,181, 0, 62, 70, 52,181, 81, 47,214, 52, 44,110,113,157,176, -140, 6,157, 13,200,119, 60, 47,104,210,227,158, 81,120, 98, 63, 1, 24,156,236,239,238,253,175,161, 50,162,176,132,219, 34, 18, - 16,151, 88, 27, 52,108,146,208,110,109,230,217,141,218, 88,237,206, 77,115,167,131, 85, 13,106, 53,245, 12, 52, 73,157,134, 4, -218, 85, 28, 53,243,186,192,101, 7,146, 54,203, 82, 55,107, 49, 35, 1, 90, 21,102, 45, 63, 60,157,171,237,255, 78,190, 34, 90, -199,165,169,241,216,220,223,149,226,150,139, 70,125, 11,135,108,176,120,109,185, 85,171,153,165,164,244,135, 70, 75,165,114, 3, -137,144, 80,164, 78, 87,163,141, 34, 21,164,210, 70,115, 91,124,182, 31,126, 15, 15, 25,127, 6,161, 85, 14,254,238,245,232,142, - 25, 87,184,142,216, 91,222,184, 70, 84,222,136,108, 8, 92, 1, 64,199, 64,133,197, 9,190,243,202,192,109, 37,133,149, 7, 81, -144, 94,181,155,228,102,201,138,162, 36,162,218, 0,109,225,122,144,100,116,218,173,134, 61, 0, 52,124, 72,151,128,220,165, 34, - 22, 54,172,119, 2, 80, 41,131, 31, 28,240, 5,248, 27,200,243, 65,191,195,207, 66,133, 22,128,131,129, 95,110,215,251, 48, 59, - 55, 92,130,153,137,176, 77, 77, 90, 77,193, 36, 10, 85,106,230,212, 46,227,255, 91, 66,199, 57,106, 64,152, 75,160,147,197,141, - 95, 64,224,103,162,130,223,213, 96, 13,138, 27,222, 5, 90,132,224,131, 99,108, 48, 71,130,180,204, 77,240, 37, 65,203,116,194, -231,135,192,139,128,142, 77,242,116,127,155,215,132, 4, 13, 7, 20,170,123, 4,201,156, 1,211, 3,186,183,200, 73,191, 1,208, -172,149, 54, 14,132,179,185,233,111,119, 90,230,164,135, 32, 79, 11,202,218,180, 22, 76, 60,197, 14, 69,220, 31, 84,212,144, 88, -173,246, 59, 6,158, 3,255, 62,179, 68,240,222, 15, 15, 92, 51,218,119, 4, 25, 58, 26, 31, 7, 55,156,225,240,123,112,141,160, - 17,233,202,224,129,143,202,253, 78,191, 54,209,138,232,126,137, 25, 96,201,170,239, 12,202, 97,147,133, 68, 26,128, 48, 42,163, -242,214,162, 36,189, 8, 14,109,198,193, 55,158, 51, 2,111, 69,181, 58, 91,171, 11,223,243,102, 7, 16,121, 85,180,228,122,102, -219,221,141,120, 16,244,197,129,107, 68,229,122,226, 26, 92,243,208,102,165,222, 64,102,190,214, 91,235,219, 76,210, 72,211,195, -232, 32, 53,229,185,118,171,195,117,139,125,218,239, 14,204,218,151,104,245,148,221,145,218,117, 35,140,139,107,250, 23,166,129, - 81,242,124,192,172,158,246,186,181,153,122, 4, 81,170,208,190,199,158,221, 88, 93,117, 12, 69,225, 14, 94,166,151,145,186, 5, -111, 95,171,108, 10,173, 80,144,170,150,131,149, 72,190,125,123, 41,231, 55,119,236,174, 28, 95,140,137, 71,185,153,204,137,220, - 30,209, 63, 30, 7,250,140,123,181, 36,186, 59, 98,235,118,101, 96, 2, 55,176, 0,109,235,154, 41,200,113, 31, 16, 19,210,233, - 89, 98,141,234,250,232,226,198,193,141, 70, 33, 68, 11,118,186, 40, 89, 57, 46,156,189, 17, 40, 75, 16,169, 49,222,117,236,251, -176,199,110, 88, 80,245,196, 62,159,211,141, 48,163, 8, 13,102,168,159, 62,222,147,161, 6,237,227,211, 27,118,181, 40, 12,165, -207, 15,157,157, 96,153,138,231,136, 57, 62, 70, 10,149, 75, 53, 79, 73,249, 43, 92,213, 79,154, 46, 9,214,102,228, 45, 95, 2, -120, 53,200,222, 99,157,234,181,127,243,124,151,137, 6,206, 84,220, 43,146, 59,235,158,153,172,120,175,157,152, 50, 96,218,105, -222, 19,238,111,208, 31,240,153,213,197,210, 59, 66,122, 45,154,108,246, 50,116, 71, 35,249,244, 96, 77,131,210, 6, 71,139, 28, - 7, 69,226,222, 1,134,241, 64, 82, 14,139,217,159, 60,219,229, 58,195,140, 28,251, 20, 35, 45,235,154, 89,226,141, 53,132, 98, - 10,158,243,231, 87, 87,242,254,248, 66,254,244,234, 72,190,251,241,181,188,124,253, 78,254,240,231, 87,242,195,155,183,114,122, -126,174,215,191,202,202,119, 54,187,115,247, 66,155, 93, 99, 63, 33, 96,227, 76, 1, 72, 22, 35, 45,234,124,234, 30, 91,235,197, -164,170, 29,107,113,176,210,210,243,161,213,167, 92,107,225, 35, 59, 38,143, 76,132, 68, 43,248, 59,121,249,225, 82,118, 6, 34, -135, 23, 51,118, 34,186,169,129,145,159,236,174,243,172,126,115,118,199,125,242, 98,111,168,191,115, 74,173,249,160, 40, 73, 89, -115,221, 59, 56,203,151, 84, 87, 76, 57, 87, 15,194,108, 44, 60, 80,204, 76, 38, 26, 47, 86, 12,219,226,194, 70,233,176,223, 39, -240, 4,139, 26, 89, 47,162,126, 23,122,205, 45,211, 79,238,117,202,198,107,123,238, 42,103,145, 7, 92, 6, 89, 7, 74, 4,101, -186,216,171,234,196,131,112, 99,186,130,214,137, 7,162,150, 59,182, 5,199,181, 48, 27,231,129,207,122, 63,119, 87,166,204, 91, -200, 73, 83,189,211,198,213,221,213,152,193,198, 15,130, 50,104, 25, 91, 38, 31, 20,234, 50,115, 97,130,150, 96,199, 20,134,186, -108,211,180,216, 78, 41,220, 89, 10,213, 46,117,117,193, 21,205,140,246,132, 86, 46, 42,193, 53,221, 28,180, 96, 77,147,134,170, - 7,138,140, 46,183,134, 6, 24,170, 16,220,198,197,245, 45, 95,232,250,234,128,136,118,124, 30, 4, 45,112,133,231,186, 24,192, -161, 12, 92,101,180,229,205,195,190,148, 85,253,126, 44, 14,204,190,145,164,172,174,174, 88,117,177, 88, 54,115, 68,124, 6,144, -175,236,162, 68,210, 80,207,202,216, 56,237, 22,164, 23,188,214,225,112, 96,248,129, 60,111,124,155, 49,127, 94, 54,214,170,210, -128,212,194, 8, 6, 7, 2, 50,219,218, 81,225,248, 58, 14,174,202, 3,145, 57, 5,197, 30,240,221, 29, 77,223,229,148, 0, 18, -231,218, 38,238, 62, 87, 24,128,142, 99, 16,204,217,170, 37,127,231,194, 91,221,120,103,115,175,186,224, 64,214,110, 45, 77, 70, - 85, 23,103,150, 5,139, 89, 51, 33,225, 59,175,236, 48, 65,231, 96,145,207, 8,158, 89, 56,186, 31, 96, 37,108, 62,252, 51,154, -186, 9, 6, 64,101,122, 31,135,151, 35,182,164,130,220,237, 50, 55,125,229, 56,122, 0,102,210, 34,152,180,171,204,245, 18,226, - 38,152,207,231, 49, 59, 53, 72, 36,113,104,210,216,163,165,107, 26, 2, 47,192,105, 64,110,181, 48,244,127,228,215,187,160, 60, -104,161,193,120,193, 54, 39, 91,163,186, 22,239, 93, 92, 4,173,219,126,175,160,213, 25, 18, 97, 84, 76, 39,169, 57,255,165,101, -204,235,203,138,153,180,128,136,117, 67, 14, 38, 98, 49,170,215,185,161,222, 33,136,195,182,119, 66,253,103,116,192,144,172,152, -206,120, 97,179,102,253,190,161, 6, 31, 45, 39, 25,172, 56,102,200,243, 70,176, 40,165,227,150,113,255,105, 66, 2, 14,117, 43, -118,111, 7,179,170, 13,146,199,144,158,197,124, 24,123, 50,107, 27, 61,109, 4,252,134,126,254,176, 63,212, 31,208, 0,154, 22, -238,141, 46,164,216, 96,102,190,170, 7, 78,161,213,219,104, 50, 38,181, 9, 13,163,251,217,196, 20, 24, 93,106, 23, 10,105, 45, - 58,176,181, 93,216, 70,247,122, 98,106,135,173, 84, 43,147,110,143,215, 9,211, 23, 4,239,168,101, 32, 66, 28,114, 28,253, 37, -145, 35,221, 75,247, 37,136,154,174, 29,147,148,180, 98,177, 82,122,210,139,245,247, 70, 3,210,191, 84, 55,242, 78, 15,214,142, - 6, 79,204, 37,113, 48,115, 20,167,223,135,179,100,174, 73, 22,218,235,253,110,159, 29,191, 52, 93, 88,194, 95, 46,185, 79, 17, -172,230,169, 37,198,168, 84, 49,154, 72, 32,162,117, 31,203,222,206,182,124,243,213, 55,242,230,195,137,172,247, 51, 25,205, 35, -202,132,214,165, 49, 49, 40, 64,180, 48, 9, 95, 4,143, 56,213, 53,232, 76, 25,122, 50,196,145,203,178, 66, 94,116,206, 36,104, - 74,214, 81, 77,101, 59, 60,227,147,139, 43, 93,219,247, 50,154, 29,202, 55, 95, 60,149, 75, 61, 95,144, 56, 22,249, 84,190,125, -117, 34, 63,255,116,139,207, 5,120, 9, 84,235,135,122,214,193,157,238,175, 94,108,201,201,229,101, 99, 79,141,206, 79,229,163, - 82, 36, 28, 40, 36,134, 76, 84,192,218,104,241,156,220, 89, 31,202, 8,163, 48, 93,155, 63,127,190, 39, 55,250, 34,111,166, 53, - 5, 85,184,134, 18,163,183,130,224,188,152,107,240, 73, 90, 46,190,101,239, 70,243, 82,206,187,137,129,210,125,187,255,104,159, - 78,144, 87,183,119,242,234,162, 43,191,254,227,111,136,153,129, 2, 29,222, 85,225,227,138,152,123,182,146,237,141,129, 38,140, - 67, 50, 94,112,190, 76, 11,115,245, 91,186,126, 69,226, 18,216,208,237, 67,103,133, 38, 94,149, 21, 42,109, 42, 7, 62,116, 22, -201,184,161,169,143,158,135,211, 72,250,160, 18,183, 51,151,164,181,115,134, 29,149,194,232,167,149,174,219,221,141, 39,178,152, - 94,115,255,237,110,172,203,245,237,185,124,250,108, 40,154, 63, 55,174,128,143,245,204,197,186,124,253,193, 64,116,155, 27, 27, -114, 87,116,101,216,154,203,213,125, 45, 79, 54, 86,249,185, 72,202,159, 60,122, 36, 87,119, 5,147,191,133, 86,229,240,173,159, - 59, 62,135,227, 73, 77, 40,231,149, 89, 17, 35,177,195,120, 19, 94,233,184,135, 69, 30,216, 32, 17, 1,136,151,183, 35,121,126, -176,207,253, 93, 81, 31, 3,178,114, 16,141, 24, 12,120, 48,143,239, 39,132,199,103,110,194, 96,243, 63,243,123,237, 68, 93,115, -108, 99, 75, 59,227, 75, 20, 23,160, 73,220,155,187,246,224, 96, 46, 81,102, 90,130,175,221, 83,144, 33,230, 65, 81,213,117,131, -214, 13, 82,167,193,180,161,242,170,193,170,185,146, 0, 21,100,232,248,247,176, 41, 37,232,206, 47, 23,214, 49, 96,133, 23, 59, - 87,185,101,202, 91,204,110, 90,108,235, 36,238,217, 14,245,160,253,158, 25, 82, 32, 91,183, 89,120,202, 96,135,249, 54,102, 84, -108,229,234,130, 93, 95, 29, 82, 37, 10,243, 18, 86, 36,104,247,234, 75,202, 29,169, 91, 7, 75, 84,199, 32,156, 94, 92,210, 79, - 24,224, 35, 32,204, 31,239,111,145, 26,130,141, 9, 20,176, 73,232,198,204,166, 10,167, 39, 12,251, 70, 99,227, 44, 27,242,156, -186,152, 80, 37,219,102,171,216,118,159,187, 48, 74,139, 90,240, 57, 53,192,153, 85,214,102, 33, 91,186,102,120, 92,154, 53,107, -234,213, 48,229, 76, 93,114,181, 40, 12,192, 71,218, 97, 48,186, 32,178,219,146,169, 64,163, 43,203,170,233,158,240, 80,204, 43, - 62,143,202, 69,104, 10,103, 14,160, 18, 71, 82,132,224,119, 75, 14,171, 93, 31,241, 6,117,216, 60, 86,213,226,208, 49, 80, 99, -253, 23,198, 47,152, 97,154, 19,209,220,225,145, 60,229, 89,245, 96, 99, 95,107, 98, 4,215,165, 26,159, 91, 47,154,214,221,210, - 29,179,224,230,135,181,133,113, 4,178,218,173,158, 85, 7, 8,198,244, 35,240,132,114, 78,153,226,248,129,246,228, 52,161,210, -169,128, 52, 37,138, 45, 72,198,110,170, 83, 20, 15,188, 93,155, 93,165, 46, 15, 28, 59,223, 31,116, 34,107,161,146, 11, 29,153, -197, 34,102,164,183,115,107, 13, 91,235, 82, 19,162, 40,211,117, 87,186, 41,142, 39,193,152,255,102, 6,122,185, 43, 38, 4, 41, -209,184, 68, 63,175,237,223, 67, 65, 65,180,185, 11, 75,140, 96,132, 86, 85,210, 0, 47, 67,182,206,192, 5,172, 3,214, 41, 40, - 86, 75,211,252,230, 33, 87,106,130,167,193,118,161,255,108, 69,133, 62,243,142, 6,126,171,200,192, 47,199,225,129, 68, 5, 79, - 2, 7, 7, 57,210, 98,163, 9, 40,140,225,175,149,193, 10,207, 4,172,143,254,160,227,244,186, 5,233, 52,148,101,133,196,101, -103, 97,173,123,120, 21,204, 10, 23, 69, 50,209, 32,208,122,146,184, 77,228,117,201,145, 82,183,121, 55, 56,212,145,212, 0,101, - 13, 16, 16, 28,170, 94,190,121,195,118,124,227,252, 72, 32,159,174, 19, 77, 10,240,189, 68,207,123, 98,143,223,191, 50, 24, 56, - 98,125,202,231,139,179, 9, 69, 3, 19,124, 23,149, 10,133,200, 45,188,166,105, 63,107,116,202,243, 73, 44,207,182,135,242, 47, - 47, 79,181,122,218,166, 19,217, 91,124, 79, 10, 78,183, 86,186,187,125, 89,209,235,101,194,236, 34, 93,137, 62,199, 39, 59,155, -242,233,167,207,153,232,128, 57, 4, 65, 17, 0, 26, 87, 86,134,178,127,176,199,207,184, 29,141, 25, 48,158,106,240, 26,143, 47, -245,185,181, 88, 81,102, 96,174, 44,204, 20,138, 21,121,157,234,215, 98, 34,170, 99,151,188, 5,138, 30,104, 67, 0,243,134, 89, -151,103, 24,236, 92,113, 95,250,129, 76, 62,199,247, 6, 6, 68,176, 71, 49,130,125, 7, 77,245, 79,158,238,201,209,201,169,252, -240,250,131,220,237, 14,100,119,179, 39,239, 79,239,249,110, 54, 53,176,143, 39, 87,114, 62, 42, 40, 90, 51, 97,199,106,238, 50, -195, 54,238, 1, 96, 17,204, 13, 36,164, 93, 50, 23,114,202,109,163, 3,132,196,230, 63,252,252, 83,249,195,219, 19,210, 75,209, - 57,187,210,138,184, 21, 37,126,142, 90, 98, 16,149, 19,221,199, 91, 28, 23,226,217,195,191, 98,163, 7, 42,163, 38,131,243, 25, -231,221,160, 23,190, 63, 58,148, 86,103, 32,173,238,134, 22,247, 87,242,238,228, 59,202,239,162, 24, 91,237,181, 8,118,198, 94, -129,212,237,197,205,173, 28,158, 93, 88, 33,226, 86,170,140, 19, 14,255,196, 8,137,227, 50,170, 7,102, 4,185, 97,138,147,231, - 11,125,119,214,125, 69, 91, 59,170, 34,138, 38,161,133,223,211,100,237,147, 39, 95,203,254,134,158,253, 67, 99, 20,161, 91,133, -130, 1, 14,117,223,189,187, 98, 37, 62, 91, 76, 73, 67, 59,120,242, 68,254,233,183,191,147, 95,236, 63,146, 15, 71, 26,248, 23, - 35,125,166,125,226,175,144,228, 98,126,143, 22,121,197,142,193, 76,190,212,253,118,114,165, 69,216,106, 42,155,253, 92, 70,139, -129,124,254,116, 67, 11,191, 59, 89, 93,216, 51,127,127,114, 38,239,175,231,242,201,254,154,220,106, 1, 48, 66,119, 21, 20, 72, -208, 4,179, 21,118,124,113,135, 56,163,183, 53,153, 64,187, 29,206,135, 38, 12, 86, 52,160,232, 33, 40,122, 5,218,251, 61, 73, - 17,100,113,104, 48,120, 85, 38,106, 79, 51, 21, 84,226, 56, 72,111,111,200, 11,133, 22,242,221,228,142,129,223, 14,184,172, 1, -186,153,226, 91,101,186,200,142, 10,167,210, 19, 44,253,150,115,175,198,205,207,219, 40, 56,210, 28,228,116, 76, 43,108,102, 31, -102,113,141,152,140, 75,154,210, 59,215,145,215,193, 17, 45,200, 70,150, 46,181, 26, 44, 71,225,216,131, 69,200, 13, 14,125,231, -174, 1,118,168,228,166, 9, 12,230,141,147,169,102,229,117,206,140, 24,109,150,221,205,181,134,127, 78,158, 42, 37, 86, 19,130, -205,140,223,158,202,141, 46,170,136, 92,116, 67,171, 39,240,249,141,210, 6, 48, 71,145, 24,221,100, 43, 3, 67, 56, 32,155,236, -233, 11, 95, 95, 91, 97, 59,114, 56,236,243,154, 97,167, 10,174, 35,232, 56,152,169,161, 77,140,209, 4,102,237,120, 49, 70,210, -136, 72, 57,170, 43,147, 78, 13,138,120, 61, 2,230, 80,237, 45,172, 30, 97,203, 7,227,200,204,101, 36, 75,206, 73, 17, 64, 80, - 89, 35, 35, 93, 58,213, 11,200, 92,115,138, 18,175, 86, 10, 30, 48, 68,194, 79, 75,231, 40,219,117,183,169,246,101,160,180, 32, -179,139,196,129,112, 5,231, 6,219,200,198, 64,128,160,156,197,242, 96,116, 51, 95,232,239,132, 64,140, 6, 36,116, 58, 8, 66, -227,102,107, 55,162, 54, 8, 58,157, 94,198, 86, 41,192, 61, 0, 45,165,212,175, 94,176,202,253,216, 42, 55, 0, 22,209, 85,129, -199, 57,186, 74,168,204, 3,127, 63,136,208,240,218,219,102,172, 18,164, 39,215,145, 24,232,245, 94, 94,141, 72,239,194,189, 61, -218,221, 36,158,225,226,102,196,159, 69,242,132,131, 36, 74,109,166,140,231, 10,187, 69,182, 35,117,243,229,183, 38,209, 8, 64, - 85,192,154, 32, 57, 51,230, 68,144, 47, 78, 92, 59,222,198, 71,156, 77,139,110, 76, 13, 58,232,174, 68, 82, 55,162, 67, 8, 42, - 64,132, 47, 22, 51,190, 51, 84, 17, 29,112,211, 49, 2,139, 76,128, 2, 97,177,163,149, 57, 40, 71, 72, 34,145,104, 99,244,208, -233,181,136,209,192,103,110, 2, 28, 40, 54,159,111,105,197,216, 95,235, 18, 84, 5, 22, 0, 19,194,188, 98,245,189,161,107, 15, - 92,127,182, 0,161,138, 54,183, 68, 10, 73, 18,222, 49, 42,238,220,253,199,201,121,205, 50,118, 81,114, 23, 71, 33,247, 56,182, - 54, 39,110,184, 98, 43,187,205,228,149, 93, 45,204,102, 57,199,236,178,106, 35,123, 64,255, 29,174, 86,251, 59,187,186,222, 71, -154,160,109, 48, 57, 64,242,142,117, 57,158,140, 41, 18,195,118,118,171, 67,189,241,219,241, 88,191,111,141,137,222,181,158, 59, -184,158, 62,171,147, 5, 91,248, 9, 15,207,121, 99,252, 18, 45,221,118, 53, 55, 94,114,199,101,136,185,198,208, 5,140, 13,121, -111,218, 12,133, 73, 4, 59, 30, 3,235,227,228,118,206,128,244,243, 71,235,122, 6,244,245,172,232,202, 79, 14, 54, 53, 56, 14, - 24, 4, 48,242,233,234,231,227,111, 38,198, 26,216, 47,175,117,205, 68,102,139, 89,150, 25, 41,138, 87,183,122, 95,145,105,235, -255,240,225, 92,134, 26,176,162, 66,215,140,204,244, 29, 69,154,240,235,218,133, 16, 81,206,148, 73,127,110,201,164, 13,221, 16, -204, 95, 81, 84, 45, 22, 53, 59,148, 64, 93, 47,124,100,152,101,160,229, 45, 77,113, 15,129, 19,149,246,157, 85,177,107,232,176, -198,160,185,222,243,186, 79, 47, 71, 76,150, 95,233,231,239,108,172,104,208,236,202,143,199, 35,217, 90,105,201,129, 6,118, 24, -188,192, 41, 12,115,120,188,227, 77,253,243,241, 44,183,181,202,206,103,108,173,241,194,246, 59,232, 91,253,206, 80,126,241,249, - 83,249,238,232,146,231, 22,196, 95,254,244,246, 84, 43,195, 59, 82,223,240, 14,204,169,208,186,182,198,208, 75,224,110,174,247, -110,140, 0, 24,173, 96, 63, 78,230,112,196,195, 56, 70,100,117, 56,212,103, 54,146,179,139, 51,121,250, 20, 24,156,158,204,167, -155,250,251,215,228,236,234, 86,207,125,235,189, 66, 61, 17, 96,230,193,118,135,133,207,225,249, 21,247,119,160,154, 6,122, 42, - 60, 5, 58,236,190, 34, 49, 31,104,178,211,213,223,217, 33,168, 24, 96, 50,104,111,116, 0, 12,118,240,105,226,254, 35,135,103, - 99,185,208, 53,112, 53,186,210,160, 58,148,189,141, 30, 65,133, 0,207,165, 25,140,106, 54,229,248, 42,150, 15,103, 55, 76,166, -244,102, 9,128,163, 84,175,238,243,127,123,117, 41, 95, 62, 79,101, 4,219,216, 8,157,147,115,125,103, 29, 90,180,158, 95, 93, -235, 51, 31,107, 33,184, 46, 55,179, 90,239,173, 77, 16,235,197,184,144, 95,252,252,133,252,240,230,148, 2, 81,200, 79,254,244, -250, 88,250,186, 14, 96,142,195,243, 38,183,142,212, 82,215,191,141,116,240, 94,238,204, 28,141, 98, 73,115,147,168,230,136, 43, - 99,135,116, 81, 44,169,155,143,228, 39,197,193,194,195,169,238,112,214, 11, 41, 75, 4, 64, 28,118,247, 26,196,145,125, 12, 7, - 67, 82,222, 58,173,117, 86,220, 12,174, 14,148,193, 67, 37, 55, 87, 55, 42, 56,148, 73,108, 25,187,233, 93, 87,141,233, 7,125, -170,157,171,205, 64,221,137,121, 88, 4,247,179,212, 59, 3,156,173,147, 14,214, 54, 80, 29,102,244,110, 88,129,239, 91,186,177, - 76,203, 53,198,113,192,143,198,214, 58,179, 42,113, 41,245,164,230, 12, 14, 0,139, 96,111, 26,121,231,160,224,131,137,104, 34, -208, 75, 77,188, 3, 97,116,119,107,147, 27, 53,213,195,126, 67, 95, 10, 22, 83, 43,179,234, 19,207,162,214,195, 6,217, 82, 59, -106, 91, 16,167,246,187,127,158, 25, 38,243,144, 66, 27, 39,213, 23, 15,176, 24, 50, 74,180, 63,215,181,226, 79,221, 95, 30, 40, -224, 78,142,141,164,139, 65,171,220,227,139,107, 86,155,224,148, 50,232, 96,230,168,255,141,159, 99,146,210, 50,195, 5,108, 42, - 32,188,219,173, 53, 86, 50, 88,228,248, 51,116, 1,240,103,153, 38, 7, 68, 62,186, 54, 59,170,186,153, 3, 32,131,236,109,167, -213,114, 9, 94,211, 23, 8,192, 65,128, 55,176,177,239,167,134,137,200, 25,216,141,131,159,248,156, 27, 7, 13, 91,144, 64,243, - 87, 25, 93,205,112, 32, 97,108, 0, 12, 64,237,134, 26,168,148,208,122,133, 98, 28,222, 27,158,255, 84, 3, 53, 18,195,121,110, -146,152,200, 13,110,238,166,182, 17,245, 57,103,144,233, 4, 56,169, 64,155,112, 64,212,251,237,232,158,207,183,211, 49, 29,236, - 41, 17,250,152, 89,149, 78,117, 20, 38, 93,156, 53, 45,103,114,113, 49,230,218, 66,114,138,174, 1,146,187,152,154,230, 49,105, - 76, 21, 90,167,122,212,140, 33, 90,115, 58,114,251,220,140,127,150,116,173, 26,130,202, 20, 84,198, 16,188, 96, 80, 81,187,115, - 95, 49, 3,200, 38,247,121,109,217, 48, 58,152,150, 86, 15, 74,135, 28, 35, 85, 70, 99, 58,120,180,195,153, 54,214,212,164, 92, -152,250, 32, 90,121,165, 5,159,150,204, 53,120,104, 82, 85, 14,217,158,238, 68,246,243,160,135, 77,151, 70,207, 44,131,238,130, - 30, 6, 43,200,222, 49,159,108, 67,105,202, 0, 76, 33,137,194, 38, 71,150,143,164,135, 99,162,218,198, 95, 61,138, 95, 0,117, - 28, 19,116,122, 51, 94,178,123,197,153,126, 39, 53, 13,131, 8,212,197,109,206,230,176,119, 35, 6,228,182,241,219, 43,105, 40, -143, 24, 31,236,107,242,139,206,222,185, 6,175, 13, 61,172,230,250, 92, 46,174,175,189,221,205,255,101,155,176, 40, 23, 60, 39, - 46,245, 96,187,231,243,180, 52,190,204, 75, 6,219, 89,101,216,146,136, 10, 91, 70,223,196,251,159,233,126,221,213,247,176,185, -185,169,135,254,141, 51, 62, 58,236, 94, 89,167, 79,207,138, 60,229,152,208, 52, 32,140,245,129,195,174,203, 22,106, 91,146,194, - 88, 15, 53,215,123,187, 1,223,190,120,116,192, 36,225,248,236,220, 37,143, 99,158, 57, 55,211,165,236,174,164,178,181,181, 65, - 44, 66,172, 95,123,212,170,229, 15,239,206,233, 60, 54,151, 54,103,155,239, 1,196, 28,232,245,102, 61, 3, 22, 70, 87,236,232, -129, 13,129, 34,232,145, 38,165,120,254,147,229, 84, 86,239, 11,154,123, 64,151,125,111,163, 47, 31,206,187,156, 29,147, 87, 92, -185, 42, 30,206,193, 18, 70,191,133,225,133,240,140, 42, 59, 11,109,236,104,237,100, 51,189,177, 46, 86, 44,198,182, 65,114, 60, -236,111,104,130,113,109,251, 81,215,239,114, 98,128, 65,152,185,108,104, 16,203,167, 35, 13, 44, 35, 57,185,238,203,179,189, 33, - 13, 68,128,250,223, 66, 48,167, 65, 84,106,197,149,239,113,124,102, 89, 23,164, 45, 87, 76,144, 44,225, 31, 77, 23, 46,144,149, - 49, 72,253,249,253,189,252,245, 39,251,242,116,111,155,213,252, 83, 61, 39,222, 31,159,106,113, 50,109,176, 53, 96, 13, 76,167, - 24,107,172, 24,104, 45, 43,229,100, 26,177,189, 12,183,178, 71,195, 13,141, 45, 99,121,250,232, 5, 85,251,190,127,253, 86, 34, - 77,184,254,250,103, 95,115,238,142, 66, 1,179,124,156, 13, 8, 88,244,196,208,235, 60,210,119,119,161,239,200,100, 49, 44,177, - 52, 77, 20,188, 23, 36, 47,125, 2, 19,245, 9,179,115, 6, 86, 9,226, 14,217, 71,145,141,181,196, 89, 82, 56,167, 54, 32, 64, -116, 14, 1,159, 91,249,221,235, 75,185,253,205, 57,231,241,148, 76,166,137,149,117,188, 0,174, 59, 58, 62,100, 2,131,245,255, -157, 94,239,198,218,150, 22,141, 83,130,137,123, 90,197, 31,105,181,253,211,207,158, 51,177,187, 71,247,164,219, 33,247, 31,123, - 96,164,123,243,248, 52,145,255,241, 23,143,229,234,122, 33,111, 15, 83, 26,103, 97, 47,236,111,173,176,186, 71,130, 6,134,213, -202, 80,207,243,137,185, 40, 98, 60,157,118,250,214,217, 92, 29,242,251,128,186,199,103, 14,168, 57,210,147,237,245,117,158,131, -120, 62,123,219,155,220,231,255,191, 0, 3, 0, 4, 77, 15, 40,213, 32,193, 90, 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, 0, 1,115, 82, 71, 66, 0,174,206, 28,233, 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,218, + 7, 20, 16, 36, 40,202, 81, 99, 29, 0, 0, 32, 0, 73, 68, 65, 84,120,218,236,189,121,188, 37,215, 85,223,251,221, 67,213,153, +238,189,221,247,222, 30, 53, 88, 82,107,178,141,144,176,101,155,196,198,208, 96, 57,196, 16, 8, 96, 36,158, 9,216,143, 73,202, + 64, 18, 8,207, 45,243,224, 5,243, 1,131,213, 64,204, 20,130, 5,132,151, 56,196,196,178, 33, 60,242, 1,140,228,208,198, 54, + 96, 27, 25,121,192,131,108,181,102,245,124,111,223,225,140, 85,123,175,247,199,222, 85,167,206,233,219,163,186, 91,131,107,233, +115,212,247,156, 83,167,106,215,174, 93,235,183,214,111, 13, 5,181,212, 82, 75, 45,181,212, 82, 75, 45,181,212, 82, 75, 45,181, +212, 82, 75, 45,181,212, 82, 75, 45,181,212, 82, 75, 45,181,212, 82, 75, 45,181,212, 82, 75, 45,181,212, 82, 75, 45,181,212, 82, + 75, 45,181,212, 82, 75, 45,181,212, 82, 75, 45,181,212, 82, 75, 45,181,212,114, 81,196, 92,228,227,169,248,106, 2,187,180,102, +171, 8, 61, 32,139,159,215, 82, 75, 45,181,212, 82, 75, 45,207, 1, 81,128,214, 90, 93,243, 19,183,222,244,251, 15,252,226,183, + 29,254,204, 47,127,251,177,159,251,158,151,254, 81,106,245,205,149,109,106,169,165,150, 90,106,169,165,150,103,185,167,174,128, +244, 95,190,238,250,183,253,226,119,190,240,141,219,179,126,103,235, 92,167,245,234,175,190,246,250,175,121,225,214, 91, 62,252, +185,131, 7,151,215, 71, 15, 2, 82,131,123, 45,181,212, 82, 75, 45,181, 60,187, 65, 93, 3,237,175,187,178,245,250,127,180, 45, +191,161,127,100,137,108,249, 24,121,127,200,117,215, 93, 49,255,157, 95,115,245,183,124,225,201,101,243,197,167, 86, 63, 9,244, +107, 96,175,165,150, 90,106,169,165,150,103,183,167,222,248,232, 35,171, 7, 23, 55,165, 55,190,234,234,185, 29,146, 11,110,109, +149,124,109,141,249,109,219,236, 27, 94,243,226,175,115, 62,191,246,195,159, 61,248,119,192,177, 26,216,107,169,165,150, 90,106, +169,229,217, 9,234, 0, 74,132,181, 63,249,236,202, 3,135,250,110,241,181, 47,218,124, 93,211, 88,178,126, 31,119,124, 9, 26, +109, 94,251,170, 23,191,232,198, 43, 54,237,254,224,103,158,122,100,125,144,239,175, 47, 81, 45,181,212, 82, 75, 45,181,156,185, +247,124,177,143,215, 4, 54, 1,151,125,205, 53,179,111,250,111,111,216,245,131, 87,180,108,179,215,203,192, 24,244, 37, 87,210, +188,252,114, 30,122,234,216,234, 29,191,190,239,231, 63,240,192,147,191, 1,172,197,223,203,179,121, 50, 69,228,102, 96, 62,190, +221,175,148,122, 94, 27, 37, 95,110,231, 91, 75, 45,181,212, 82,131,250,198,162,129, 57, 96,251,142, 57,251,173,255,227, 77, 87, +255,187,175,217,209,217, 49,232, 59,192,163,182, 95, 70,235, 5, 87, 49, 18,207,255,245,187, 31,249,175,191,246, 71,159,254, 73, +224,241, 56,222,167, 13,236, 34,178, 11,216,117,134,155, 47, 43,165,238, 63,195,253,222, 11,220, 18,223,190, 69, 41,117,215,243, + 28,212,159, 23,231, 27,141,147, 91,162,129,114,115,229,171,251,129,253,192, 61, 74,169,229,243,112,156,233,253,115,190,215, 96, + 45,181,212,242,229, 45,246,105,128,178, 7,102, 23,103,146,175, 92,236,216, 69, 47, 74, 77, 88, 10, 10,148, 82, 74,138, 79, 84, +241,121,249,173, 5,218,153,147,254,143,254,201,225, 63,251,229,111,187,252,219, 94,185,173,179,121,148, 9, 44, 31, 99,208,158, + 33, 89,220,206,175,222,177,251,141, 55, 95,179,253,250, 31,121,231, 95,190,249,248,250,232,195,231, 9,216,111, 5,222,126, 22, +202, 24,224, 30,224, 62,165,212,221,245,178,121,222,176, 12,183,198,215,201, 12,188,194, 96,121,167,136,220, 29, 13,151,167, 3, +238, 55, 3,247,158,195,239,238, 3, 94,123, 78,231,185,119,247,153,220, 43, 14, 88, 5, 14, 1,159, 2,222, 15,188, 87,237,217, +183, 90,175,148, 90,106,121,254,131,186, 2, 84,167, 97,110,254,217,215, 93,241,115,111,184,105,219,238, 77,173, 36,245, 74, 7, +192,214, 58,188,148, 66, 89, 51,241, 30,173, 81,198,140,223,171,240,157, 71, 73, 38,202,231,214,162, 43,251,201, 93,134,239, 43, +222,244,218, 27,190,250, 37,215,108,125,223, 15,188,227,190,159,250,219, 7,143,252, 46, 48,228,226, 83,241,183, 2,183,138,200, +173,192,109,231,195,115,171,229, 25,149,191, 61,203,237,111, 7,110, 17,145,219,158,135, 94,179,137, 44,197, 60,240, 66,224, 54, +224,151,100,239,238, 31, 87,123,246,253,230, 69, 51,180,166, 12, 16,181,103, 95,157, 40, 91, 75, 45, 23,201, 83,223,186,247, 91, +174,122,199,191,124,229,165,175, 30,245, 60,226, 21, 70,171,224,192,139, 10, 47, 52,202,171, 0,189, 2,104, 21,124,123, 47, 96, + 64, 41, 21,252,125, 1,163,148,178, 90,153,232, 17, 7, 80, 23, 64, 4,175, 20,195,222,136, 27,175,216,182,245,222,159,251,142, + 95,255,151,191,241, 23,215,190,251,127, 63,248,243,192,145,243,228,181, 23,158, 16,167,241,214,170,239,239, 21,145,215,214,192, +254,188,145,251, 35, 19,115,191, 82,234,190,232,201,207,199,107,125,123,101, 13,236, 2,222, 35, 34, 47, 59, 79,215,254,110, 2, +189,127, 58,121, 38,214,217,102,224, 63,201,222,221,151,171, 61,251,126,162, 94, 34,181,212,242, 60,246,212, 27,137,222,245, 79, + 94, 52,255,114,233,102,100,131, 33,120, 31, 64,186,100,214, 11,127, 94,141,113,215,104,244,226,182, 8,238, 30,165, 1, 31, 89, +124, 5, 37,194,107, 31,128, 95,235, 64, 10,154,176,139,209, 48, 99, 83,154,234,255,190,231,155,126,244,229,215,239,248,202, 31, +255,237,143,236, 25,102,238,129,243, 1,236, 74,169, 83, 82,155,209, 59,127, 59, 99,154,246,230,168,236,239,170,151,208,115, 90, +238, 6,238,222,200,243,142,160,125, 15,112,143,136,188, 51, 94,239, 2,216,207,215,181,191,167, 48, 34, 46,150,108,228,253,202, +222,221, 41,176, 3,120, 53,240,102,224,166,202,215, 63, 46,123,119,255,153,218,179,239, 67,245,114,169,165,150,103,191,232,115, +248,141, 25,101,254,216,239,127,234,200, 71,149, 30,210, 73, 29,157, 22,180,155, 18, 95,126,252,119,195,211,212, 35,112, 25,170, +209, 14, 32,239, 61,120, 79,233,149, 3, 48, 2, 63, 0,223, 7, 25, 0,195,240, 94, 70,113,123, 65,196,147, 57, 79, 62,116,252, +232,235, 95,126,203,189,123, 95,255, 63,175,220, 62,247, 29, 17,246,245,133,156, 36,165,212, 61,132,152,102,213, 99,186,181, 94, + 62,207,105,121,173, 82,234,142, 51,161,210,149, 82,119, 76,121,212,119, 62,159, 38, 66,237,217, 55, 82,123,246, 61,166,246,236, +251, 61,224,171,129, 15, 87,191, 6,254, 85,189, 92,106,169,229,249,235,169, 35,112,236,206, 63,122,228,167,254,228, 51, 71,191, +227, 69, 59, 90, 87, 40,208, 94,196, 23, 58,192, 75,128,236,222,200,235,151,188, 96,246,197, 63,244,181,215,236,106,218,166,246, +222,131, 49, 65, 77,120,143,140,214, 81, 70,161, 47,191, 9,189,245, 26,212,220, 14, 84,115, 14,242, 33,190,123, 4, 89, 59,128, + 63,242, 32,228,125, 80, 45, 4,135, 19,240,235, 35, 94,125,195, 11, 94,240,254,189,175,255,157,127,252,150, 63, 48, 15, 31, 88, +121, 31,227,228,189, 11, 5,236,251, 69,228,158,138,199,118,243,249,216,239, 6, 25,209,247,159,167, 76,235,106,134,255, 57,149, +155,157,143,125, 92,140,243,157, 26,231, 25,237,239, 28, 60,228,187, 25, 39, 87,206,139,200,205,207,199,140,116,181,103,223, 80, +246,238,254, 9,224,131,149,143, 95, 85,171,202, 90,106,121,254,130,186, 3,186,192,231, 62,248,208,250, 59, 62,248,208,122,139, +141,155,216, 44,190,238,198,109, 63,240, 29, 47,187,106,103, 91,167, 58,247, 18,168,247,193, 0, 25,118,193,117, 49,215,189, 26, +251,178,239,198, 92,245, 15, 78, 74, 33,200,210, 35,228, 15,125, 0,247,232, 71, 80, 38, 5, 17, 68,193,168, 55,226,186, 75, 22, + 55,253,207,159,254,167,255,241, 53,111,126,207,210,209,149,193,255,230,252,197,216, 79, 38,231,165, 14, 59, 2,219,237,209,219, +191,121,131,239,247, 51,166,134,151, 79,178,143,183, 87,126,123,143, 82,234,238,202,126,111,103, 42,163, 59,238,243,174, 51,201, +222, 23,145,219,163, 55,186,235,108,199,117, 33,206,247, 20,231,122,103,220,239,124,101,243,115,206, 20, 63,141, 76, 3,248,252, +243, 88, 47, 76, 39, 17,110,171, 85,101, 45,181, 60,127, 65,221, 3, 3, 32, 39, 52,133,137, 81,239,178,230, 93,148,226,197,119, +125,231,117,111,125,243,238, 43,119,187, 17,140,156, 67,178, 33, 50,232, 65, 62, 4, 43, 52,190,233,199,177, 47,123,195,233, 61, +135,133, 43, 73, 22,126, 0,189,227, 70,242,143,255, 54,104, 23, 32, 95, 41, 70,189,140, 27,175,221,185,229, 29,255, 98,247,222, +239,125,251,159,125, 7,240,216, 5, 6,245,170, 34, 63, 39,239, 82, 68,110, 1,222,115, 26, 80,216, 21,189,194,219, 79,145,109, + 93,212, 86, 3,220, 23, 75,180,222,121, 10, 6, 97, 23,161, 52,235,230, 72, 39,159, 12,124,223,201,201, 67, 11,197,184,110, 21, +145,215, 94,196,243,221,232, 92,239,125,158, 3,235,179, 73,122,103,116,173,247,238,190, 6,248,103,192,215, 3,215, 3,139, 81, + 47, 28, 5, 62, 75, 40,149,251,127,213,158,125,135,167,126, 39, 39,217,159,156,130, 81, 80, 83,219, 94, 5,188, 62, 30,251, 43, +129,237, 81, 55,173, 2,143, 68, 67,229, 15,129, 63, 83,123,246, 73,125, 73,107,169, 65,125,234,126, 35, 60, 3, 61, 43,238,177, +248,175,185, 98, 75,243, 91,222,249,134, 23,222,245,141,215,109,185,118,216,247, 56,151,193,176, 15,121, 6, 74, 80, 9, 52,190, +253,231, 49, 55,124,115,185,179,213,254,144,247, 63,240, 8,239,255,228, 35, 44,173,247, 73,140,226, 69,151, 44,240,173, 47,187, +134,151, 94,189, 51,236,248,242,151,163,210, 89,178, 15,255, 18,164, 54, 12, 65, 43,242,245, 33,223,243,154, 27, 94,242,223, 62, +240,249, 31,120,255,199, 31,121, 27, 23,168,220, 45, 2,222,173, 83, 30,225,217,238,227,214, 8,112,211, 30,224,125, 21, 35,161, +234,205,238, 98,156,105,127,255,105,140,141,247, 84, 60,235,123, 42,158,229,205, 83,227,190, 93, 68,246,159,164, 81,204,219, 55, + 0,244,234,190,138,177,221,188,193,121, 92,172,243,157,159, 2,244,229,202,248,118, 93,192,123,229,150,211,120,238, 79,103, 93, +157,247,240,203,211,148,105,195,240, 83,167, 1,243,205,192, 59,128, 55,177,113, 67,171, 29,241,245, 13,192,191,151,189,187,127, + 10,248, 15,231, 3, 92,101,239,238,221,192, 91,128,127,116,146, 99, 23,165,122, 47, 1,126, 8,120, 64,246,238,126,163,218,179, +239,211,181,250,175,165, 6,245,147, 24,205, 17, 68, 55,189,238,134,133, 31,189,251,182,235,247, 92, 54,211,106,245,187, 14,113, + 67,200,134,241, 72, 6,149,119, 73, 94,245,131, 19,128,254, 55, 95, 60,192,155,127,239, 67,236, 63,186, 70,179,145,144, 88,141, + 22,248,228,227, 75,188,247,175, 63,207,183,188,236,106,254,159, 91, 95, 77,187,145,160,183,191, 16,123,195,109,228,127,247,187, + 48,187, 29,144, 16, 68, 23,197, 79,191,241,149, 63,248,231,127,251,200,123, 69,248, 12, 33, 68,112,190, 1,253,157, 83,160,113, +247, 89,238, 99, 87,220, 71, 33,251,129, 59, 54,136,237,222, 53,229,221, 22,199,126,217, 41,118,127,103, 5,128,239,152, 6,133, +120,236,247, 84,148,245,157, 34, 50, 65,117, 71,202,253,246, 41,208,186,109, 42,142, 94, 29,219, 45,207,208,249,222, 89,217,223, + 91, 98, 18,227,244,181,186, 16,114,235, 5, 0,222, 13, 25,140, 24,142,184,135, 16,142,184,168,173,119, 99, 38,252,207, 76,125, +252, 95, 79,177,253,174,104,100,157,169, 65,213, 1,126,145, 80, 15,255, 67,231, 97,200,127,113,150,219,127, 21,240, 17,217,187, +123,183,218,179,239, 19, 53, 4,212, 82,131,250,198,128,126,213,143,124,195,165, 63,243,246,215, 93,249,207,172,183,244,134, 25, +184, 17,184, 60,196,209, 21, 32, 14,181,229,114,236, 43,222, 88,254,248,139, 7,151,121,227,127,124, 63,135,251, 57,237, 78,139, +204, 24,146,196,144, 26,133,145, 20,229,114,222,247,209, 47, 97,180,230,103,191,123,119,240,216,175,249,122,220, 23,254, 12,220, + 58,216, 22, 40,200, 71, 25, 47,185,122,219,142, 87,188,104,199, 55,126,244,179, 7, 63, 71, 8, 17,156,177, 23, 32, 34,119,158, +198, 67,155, 6,176, 59,206, 33,209,234,157, 83,222,229, 73,107,157,149, 82,247, 69,122,187,240, 72,111, 22,145,219, 79, 19, 15, +191, 79, 41,117,219, 73,246,183, 95, 68,222,194,184,155, 89, 81,131,125,207, 6, 96, 89, 0,230,134,117,248,149,177,253,237, 51, +120,190,251, 79,182,191, 11,225,229,198,245,113,206, 6,221,105, 24,150,141,100, 87,188, 30,119,138,200, 5,111,191, 43,123,119, + 39,209,147,254, 26, 66, 73,219, 75, 42, 95,255, 57,240,187,167,240,208,255,124,106,110, 30,140, 94,251, 7, 8,173,157, 13,240, + 98,224,251,163,209, 88,164,203,252,160,236,221,253, 25,181,103,223,175, 20, 84,250,211,104, 62,227,129, 63, 3,254, 0,248, 27, + 2,221, 62, 0,102,129,235,128,111, 6,126, 24, 88,136,219,207, 2,239,150,189,187,111, 80,123,246,101, 53, 12,212, 82,131,250, + 24,208,213, 66,199,190,230, 55,110,189,250, 23,191,235,198, 45, 55, 13, 7, 48, 84, 25,248, 64,181,147,232,114, 75,201, 70,216, +235,190, 22, 53,179,165,220,193, 91,126,239, 35,124,241,137, 21,216, 52,195,202,122, 14,202, 97, 20,180,141, 98, 75,199, 50,223, +178,108,218, 52,195,255,252,216, 23,217,253, 21, 87,112,203, 77, 87,129,177,152, 93, 95, 75,254,192,127, 65,109,189, 18,196,227, +149, 34,109,165,124,215,238,235,111,249,232,103, 15,254,103, 96,137,179,163,224,207,180,101,236,221,156, 67,109,113,165,183,120, +121,234,167, 3, 31,165,212,253,177, 53,233,157, 21,227,226, 84, 96,114,199,105,246,119,159,136,220,207, 36,213, 93,140,111,186, + 85,234, 93,167, 26, 95,101,108,183, 63, 67,231,123,215,197,162,168,227,185,188,125,202, 75, 63, 31,160, 94,244,149,175,210,248, +213, 30,244,229,218, 20,145, 93, 39,203,131, 56, 7, 0, 63,211,251, 98, 5,248, 13,224,167,213,158,125, 39,171, 42,249, 69,224, +234,202,251,247, 1,223,163,246,236, 27, 76,109,247,113,224,227,178,119,247, 7, 34, 59, 81,128,245,207,200,222,221,239, 82,123, +246, 45, 61,141, 83,250, 35, 96,143,218,179,239,193, 13,190, 59, 14,124, 12,248,152,236,221,253,155,209,171,191, 62,126,119, 29, +240,157,192,187,107, 24,168,229,249, 36,231, 82,223, 93, 36,197,205,188,250,234,217,127,247,145,127,245, 21,239,253,174, 23, 45, +220,212,235, 57, 28, 46, 0,186, 6,140, 66, 25,133,178, 10,101, 52,202, 42,244, 37, 55,148, 59,121,248,208,113,254,244,129,199, +160,221, 10,101,110, 90,131, 49, 56, 52,107, 67,199,195, 71,122,236, 63,220, 35, 19,133, 55,134, 15,124,250,209,241, 0,182, 92, +131,244, 87,129, 60,142, 70, 32,247,188,240,178,133,171,129,157, 92,184, 7,213,220, 26,189,200,179,165,120,171, 0,183,124, 22, +160,112,223,212,177, 79, 10, 16,103, 72,211,222,127,146, 49,221, 50, 5,176,103, 50,190,123,158,161,243,221,127,177,250,239,199, + 16, 66,181, 87,251,242,233,140,167,211,200, 50, 33,254,123,181, 82,234,101, 74,169,219,148, 82,119, 85, 94,183, 41,165, 22,226, + 54, 85,163,229,246,104,120, 93, 44,249, 12,240,125,192, 79,168, 61,251,134, 39, 49, 14,174,140,219, 20,242,208, 73, 0,189,234, +121,191, 23,248,173,202, 71,179,192,247, 62, 45,170,112,207,190,111, 59, 9,160, 79,111,119, 0,248,215, 83, 31,127, 91, 13, 1, +181,124,185,131,122, 65,183,239,252,254,127,176,245,151,238,253,254,235,127,225,186,217,230,166,222,200,135, 78,112,146,163, 68, +208, 30, 20, 42, 80,239, 90,135,100,117,155,162,231, 95, 80,238,232,145, 35,171,244,227,227, 86, 75, 59,161,240, 33, 98,191,248, +227,235, 25, 95, 58,216,197,139,102,109, 48,102,201,212,108, 76,108, 29,246, 80, 58,182,155,205,115,174,218, 62,187,173,145,154, + 29,231, 0,234,111, 57,197,171,218,202,115, 62,122,109,247,158, 37,176,223,114, 18, 96,229,116,222,245, 6, 94,227,233,192,240, + 84,114, 50,224,223,117,182,251, 58, 13, 91,113, 33,207,247,162,212,134,199,235, 59, 29,243,126,203,211,169, 77, 87, 74,221, 31, +193,123,255,105,182,187,139, 19,203,242,222,126, 17,245,194, 13, 4, 42,251, 83,178,119,247,201,214,220, 63,155,210, 31,191,122, + 42, 64,175,200,127,158,122,255,143, 47,226,121,125,120,234,253, 75,107, 8,168,229,249, 38,103, 67,191, 43,128,217,166,121,229, + 47,124,243,101,123,239,184,121,235,171, 70, 35, 24, 36,161,229,171, 56, 65,101,158, 52,213,172, 56,231, 91,104,141, 53,101, 5, +123, 8,154,229,229,206,182,109,106, 99,210, 4,231,137,253,226, 37,130,122,252, 87, 20, 24, 77,183,151,241,232, 96, 64,227,166, +202, 80,197,129,100,144, 15, 64,207,161,196, 35,222,179,208, 73,218,155,218,233,252,225, 81,255,172,140,149, 51,137, 89,198,184, +234,157,140, 31,207,121, 47,167, 78, 94,171, 74, 85, 49,238,138,143, 44, 61, 23,153, 63,133, 7,248,116,228,156, 64, 56,110,123, +243, 69, 62,223, 11, 14,234, 17,208,239,157, 58,143, 59, 46,230, 19,250, 98, 56,226, 45, 21, 48,223, 37, 34,183, 78, 39, 6,158, +131,103,187, 81,155, 88, 13,108, 34, 36,175,125, 7, 33,254,220,140,224,254,151,178,119,247, 55,169, 61,251, 62, 56,245,179,111, +152,122,191,239, 12,135,240,247, 27, 24, 16, 79,255,154,133,248,254,109,113, 45,127, 5,112, 41, 48,195,198, 61, 52, 10,185,180, +134,128, 90,190, 28, 65,189, 80, 2,201, 11,183, 55,191,251,247,190,235,170,187, 94,186,173,189,173, 63,242,208,176, 1,208, 51, +143,205, 60,105,203,240, 19, 31,120,242,147, 87,108, 78, 55,255,208,205, 91,175, 24, 8,193,147, 86, 10,178, 12,127,244, 75,232, +203, 95, 14,192,139, 46, 93,228,171,175,221,198, 95,125,238, 8, 88, 27, 64, 92, 71, 64, 47, 34,120, 62,252,118,176,212,229,218, + 29, 99,253, 46,171, 79,193,112, 21, 25,110, 70,197, 39,198,136, 47,140, 2, 52, 23,128,126, 87, 74,221, 21, 91,219, 22, 74,246, + 76,146,215, 54, 2,167,179,121,150,251, 51, 33,203,231, 97,219,231,210,249,158, 9,160,191,229, 25,122,228,238,221, 83, 30,250, + 5,153,199, 24, 51, 95, 6,254, 26,248,107,217,187,251,247,128,191, 36,208,227,109,224,247,101,239,238, 23,169, 61,251,142, 87, +126,246,162,169,221,124, 66,246,238,158,214, 25,167,250,187,180,239,159, 38,152, 43,224,199,128,159,138, 32,126, 54,210,170, 33, +160,150, 47, 55, 80, 47,232,246,109,183,125,213,194,155,127,229,155, 46,251, 55, 59,154, 73,218,243, 10,213, 14, 6,176,140, 60, + 77, 47, 12, 82,248,215,127,252,232, 31,223,253,145,195,127,248, 59,183, 93,185, 71, 73,124,158,139,137,217,239, 86, 35,135, 62, + 83,238, 88,107,197, 79,126,251,203,248,166,207,254, 47, 24,100,208, 72,227,211,221, 34,168,123, 64, 60,172,247,120,201,139, 47, +229,123,191,238, 43,202,223,250,195,159, 67, 36, 67,185, 81,216, 80, 4,173,132,165,245, 65,127,181, 55, 90,187,128,222,211, 93, +177,187, 89, 33,183,114,246,153,208,251, 57,247,206,116,207,197,167,194, 61,215,206,119, 26,208,239,190,208,217,231,167, 88,111, +203, 83,201,141,183,112, 17, 30, 34,164,246,236,123, 64,246,238,190, 11,248,217,248,209, 14,224,159, 79, 25, 24, 91,166,126,102, +206,241,112,233,211, 28,238,175, 81,247,166,175,165,150, 51, 2,117, 5, 40,107,212,117,111,251,199,151,252,202,155,255,225,142, +111,204,115,232, 89,141,106,104,196, 11,210,119,116,172,226,145, 97, 62,248,190,255,246,240,111,239,123,112,245,247, 0,255,216, + 74,118, 8, 37, 47,148,210, 83, 7,154,109,220, 35, 31,198, 46, 63,130,154,191, 18,128,215,189,228, 74,238,254, 23, 95,207,143, +252,206,135,232, 29, 31, 66,179, 1, 70, 7, 42,126,148, 65,175,207, 75, 95,184,157,247,190,249,155,233, 52,147, 48,170,172,143, +251,236,251, 80,105, 3,148, 3,241,136,119,160, 53, 15, 29, 60,126,100, 48,114, 71,184,112,137,114, 16, 98,206,183, 84,148,236, + 89,123, 95,207, 20, 72, 60, 67,242,156, 57,223,248, 52,182,105, 64,191,227, 25, 30,214, 51,101,200,253, 97, 5,212, 1,190,117, + 10,212,245, 51,126,189,246,238,126,237, 6,128,254, 65,224,119, 8, 97,154, 39,129,117,181,103,159,171,120,245,158, 90,106,249, + 50, 6,245,109,111,255,166, 75,255,227,143,253,195,237,175,233,143, 64,218, 22,149, 40, 36, 23,232, 57, 58, 45,195, 95, 60,182, +118,232,251,222,189,255, 63, 60,122,108,248,191, 8,165,100,230, 11, 71, 7, 95, 64,171,175,195,197,204, 55,163,131, 14, 24,174, +147,125,248, 29,164,223,242, 43,229, 65,126,232, 53, 95,193, 87, 95,179,157,223,253,192,103,249,163, 79, 60,202,129,227, 61,172, + 86,220,120,237, 22,190,251, 85,215,242,127,190,230,197,116, 26, 73,185,125,254,241,223, 70,142, 63, 2,141, 54,162, 34,145,144, + 59,104, 24,190,240,196,242,163,132,231,172, 63,219,110,220,139,238,109, 93,164,241,221,242, 28, 61,223,147, 1,250,237,207, 50, + 64,127, 38,229,225,169,247,211,116,251, 10,227,186,111,128,197,167, 89,154,118, 46,242, 47,166,222,191, 11,120,211, 41, 58,213, +205,213, 42,191,150, 47,103, 80,231,242,249,116,247,247,125,229,194,107, 70, 3, 15, 51, 9, 42, 85,200, 72, 48,131,156, 70,199, +240,174, 79, 30,251,252, 15,191,247,145, 95, 88,237,187, 15, 1,199, 8, 15,122,105,254,229, 67,107, 31, 59,176,150,125,255,150, +118, 98,157,200,184, 8,174,213,198, 63,246,151,228, 31,249,101,236,171,126,164, 60,206,141, 87,108,225, 29,223,255,181,252,252, +247,230, 28, 92,234,146, 38,150, 75, 22, 58, 39,140,199,125,246,143,200, 63,245, 46,104,182,131,213,161, 13,226, 60,202,121,178, +193,144,247,125,232,161,143, 16,250,209, 95, 72, 80, 63,151,184,230, 4,200,137,200,252,179,160, 21,104, 85,246, 87,198,119, 70, + 79,159, 59, 69, 38,254,115,225,124,159, 75,128,126,174, 73,140, 79, 87,166,217,174,246,212,251, 7,129,234,147,152,110,228,204, +147,229,206,151,252,195,169,247,111, 59, 77,235,217,107,106,149, 95,203,243, 93, 78, 69,161,217, 43, 23, 26,215,206, 55, 12,185, + 15,217,237,210,115,164, 35,135,106, 40,222,252,254,199,239,123,227,187, 30,250,177,213,190,251, 0,112, 40, 90,238, 35, 32,123, +234,248,232, 99,239,251,220,242, 3,137, 5, 25, 56, 64, 80,154, 80,175,222,158,197,125,234,191,146,221,247,147, 72,239,232,196, + 1,155,137,229,202,237,155, 78, 4,244,172,143,251,232,111,144,127,232,109,168, 70,138, 50, 38,196,235,147, 6,100, 57,137,134, +191,249,194,129,131,127,245,217, 67,247, 17,122,191, 95, 16, 80,159,122,196,231,217, 40,217,233,242,175,219,159,101,235,160, 58, +190,249,216,182,245, 92,189,244,231,194,249, 62, 39, 0, 61,182,238,157, 54,190, 46,150, 92, 53,245,254,216,212,251,233,108,248, +219,206,195, 49, 39,238,219, 72,151,159, 74,182,158,229,252,124, 99,173,242,107,249,114, 6,117,243,217, 67,253, 7,159, 24,185, +188,221, 54,180, 51, 71,219,192,186,241,242, 61,239,217,255,238, 95,188,247,192, 91,129, 79, 18,158,192,212, 37,244, 91, 47, 30, +244,114,232, 87, 62,120,232,158,149,204, 97, 51, 7,153, 15, 89,115,177, 41, 13,157, 89,252, 67,127,202,232,125,111,196,253,253, +251,144,213, 39, 55, 86,106,221, 35,248,135,238, 99,244,135,223, 79,254,119,191, 5,205, 38, 24, 27,154,205, 40,133,210, 9,106, +144,129, 17,126,246,247,255,238, 15,129, 47,197,227,159,119, 80,175,212, 45, 87,229,140,202,139, 98, 25, 82, 85,225,220,121, 26, + 79,247, 98,203, 61, 76,198,110,239, 60,131,185,184,243, 57,124,190, 39, 3,244,251, 9,189, 9,206,217,232, 19,145, 59, 43,175, + 91,166,230,236,108,215, 91, 53,134,189,124,166,235,237, 60,201,235,167,222, 79, 63,212,229, 93, 83,239,127, 80,246,238,126,186, +229,105,171, 83,239, 55,157,102,251,238,212,251,157, 39,157,207,189,187,103, 57,145,174,175,165,150, 47, 43, 80,231,216,122,254, +241,239,122,247,195,119,189,231,193,227, 15,126,224, 96,239,208,175,223,127,228,254,175,249,181,207,255,244, 61,247, 47,253, 2, +161,131,212, 49,160,207,228, 3, 84, 28,208,255,210,145,193,159,190,237,127, 31,188, 55,105, 24,100, 61, 71, 50, 15,196,242, 54, +165,160, 61, 7,249, 10,217,135,127,142,209,251,190,155,209,255,119, 7,249,135,247,146,255,205,175,146,255,213, 47, 49,250,147, +127,203,232,189,111, 32,187,239, 45,200,250, 35,208,217, 20,154,210, 20,182,187,215,200, 80,145, 52, 53,255,229,190, 47,124,246, +207, 63,241,228,187, 9,212,251,121,237,229, 28, 21,245,237,132, 94,231, 55, 79, 41,217,179,201,124,175,122,127,243,132, 6, 54, +183,156,225,241,239, 60, 77,127,250,167, 37,145, 26,175,198,189,111,137,128,119, 50,176, 57,147,199,158, 62,107,207,247, 20,128, +254,218,167, 25, 38, 40, 30, 33, 91,188,170,235,229,102, 17,185,247, 76, 58,195,157,228,209,178, 23,175, 53,110,104, 56,243,230, +169,143,255, 96, 98,205,236,217,247,247, 76,182, 88, 77,128, 63,149,189,187, 95,122,134,199,120,165,236,221,253,231, 83, 31, 63, + 58,245,254,116,251,250,252,212,251,127,115,146, 99, 89, 66,255,250,203,106,149, 95,203,243, 93, 78, 21, 83,207,128,165,191,222, +191,246,159,255,122,255,218,189,132,154,213, 99,192, 65, 2,213,190, 30,183,153,142, 97, 21,207, 91, 63,248, 75, 31, 56,240,142, +151, 92,222,190,234, 13, 55, 45, 94,211, 95, 29,161,230, 82,104,232,208,105, 14,129, 36, 65, 37, 73,200, 96, 63,246, 73,242,195, +247,151,187, 83,218,130, 77,161, 51, 85,122, 42,192,200, 33,190, 69,179,145,114,255, 23, 15, 45,255,219,223,250,232,222,232,165, + 79, 27, 24,103,170,224,207,229, 17,144,119,156,141,146,141,189,215,239, 96,252,228,178, 2,232,238, 35,208,213,247, 79,129,195, + 46, 2,197, 93, 0,195, 91, 46,240, 90,184,155,201,199,160,222, 30, 65,248,238,202,216,110,137, 64, 56, 31, 61,241,101, 78, 18, +131,127, 54,159,111, 60,175,141, 66, 2,239, 57,139,165,112,207, 57,212,174,223, 18, 13,166,253,113, 14, 54,234,253, 62,253,168, + 92, 8,109,128, 47, 88,178, 97,164,185,231, 8,201,112,175,103,220,124,166,144, 47,176,241, 67, 93,126,152, 16, 87, 47,168,250, +203,128,143,202,222,221,191, 31, 89,173, 79, 68, 38,207, 17, 74,224, 94, 8,188,154,208,115,253,198, 13,246,247, 97,224,166,202, +251,119,200,222,221,255, 54,238,103,109,131,120,249,123,129, 87, 84,222,255,152,236,221,221, 4,126, 61, 58, 29,179,241,120, 63, + 73,104, 20,245,191,128,127, 82,171,253, 90,190, 92, 65,221, 69,224,206, 35,136,235,248,217, 48,190, 28, 39,127,104, 74, 14,172, +123,145, 79,255,243,223,127,248,103, 23, 59,246,109,255,232,154, 77,151, 14, 86, 70, 48,155,160,154,102, 92,191, 30, 16, 28,210, +230,169,235,208, 4,240, 2, 67,135, 95, 29,209,218,185,157,207, 29, 88, 94,191,237,174, 15,222,181,210,205, 62, 84, 49, 50, 46, +180,220, 31, 1,253,172,147,150,148, 82,119, 87, 26,216,204, 87, 21,253, 51,189, 16, 98, 77,244,109, 76, 62, 70,179,240, 60,167, +101,153, 16, 67,125,251,115,245,124, 55,144,179, 13, 15,220,247, 52,142,181,139, 51,207, 51,184,251,124, 26, 56,103,241, 64,151, + 66, 14, 1,255,116,163,167,153,169, 61,251,150,100,239,238,215, 0,127,202,248, 65, 41, 22,248,158,248, 58, 91,249,205,200,240, + 20,122,233, 70, 42,143, 86,173, 52,183, 41, 58,227,253, 70,156,199,106, 2,220,191, 98,227,186,245, 3,113,219,167,106,181, 95, +203,243, 89,244,105, 96, 52, 39,196,173,150, 9,229,106,199,129, 94,252, 92, 78,243,219, 33,176,178,218,119,251,190,253,238, 7, +255,239,119,253,221,177,207, 55, 83, 77,178,154,225, 87, 50, 24,248,114, 47, 10,133, 82, 27,188,226,127, 56, 96,228,145,213, 28, +181, 60,164, 53,191,153,125,251, 87, 14,126,227, 79,221,247, 83,251, 15,173,255, 65, 28, 91,143, 11,151,245,126, 95, 84,174,183, +197, 7,113, 60,157,254,223,119, 71,175,225,110,206,172, 6,249,158,168,232, 46,120, 71,179,216,147,252,101,167, 57,214,125,132, +199,158,222,255, 92, 63,223,139, 44, 69,188,254, 76,215,206, 61,132,112,192, 29,207, 96,229,192, 31, 3, 47, 83,123,246,125,225, +164,215,119,207,190,135,129,151, 3,191, 74, 72,148, 61, 35,219,130,240,168,212,175,157,218,215,103, 8, 77,110,134,103,180,182, +246,236,235, 2,175,139, 76,194,169,228, 65,224,235,227, 67, 93,106,169,229,121, 45,234, 2,239,223, 16, 74, 97,230,129,175,248, +190, 87,110,251,193,159,121,221,165,223,122,233,166,212,230, 67, 33,183, 10,154, 6,101,117,240,220,117,101, 56, 34,224, 64,114, + 15, 3,135,201, 60, 73,162, 88,117,240,115, 31, 90,250,139,255,240,199, 15,189, 51,115,254,227,140, 75,233,242,231,226, 5,136, + 84,240,180,151,184,159,240,116,179,251,158,193,113, 21,116,120,245,153,232,247,157,225,211,224,158,115,231,251, 12, 93,247, 93, +156,152,155,112, 63,129,110, 63, 47, 64,126, 22,158,121, 55, 26,237,159, 35, 60,147,252,191,171, 61,251, 62,119,150,199,218, 14, +252, 31,192,107, 8, 61,221,119, 16,104,252,126,244,144,255, 62,122,222,239, 85,123,246, 61,121,138,253,236, 2,222, 72,160,206, +175, 7, 54, 71, 61,162,166, 60,245, 98,251,118,244,194,191,147,240,236,246, 57, 2,187,248, 41,194,227, 96,127, 71,237,217,215, +223,104, 62,206,226,153,237,181,212, 82,131,122, 5,216,155,132, 76,214, 29, 47, 88,104,124,195,237,175,222,246,109,111,186,121, +203, 43, 46,155, 77, 18, 68, 33, 34,120,165,240,149,209,104, 1, 45, 18, 74,215, 20, 28, 27, 56,255, 63, 62,185,244,233,119,126, +228,240, 31,127,234,241,238,159, 0, 79, 68, 37,212,127,174, 2,122, 45,181,212, 82, 75, 45,181, 60,215, 64,189, 56, 78, 10,116, +162, 21,189, 99, 97,198,126,213, 43,174,156,121,197,119,222,180,240,242,155, 46,109,239,156,111,152, 78,199,170,212,106,165,115, +143,244,156, 31,173,140,124,239,139,135,251, 71,238,121, 96,233, 19,127,181,127,253, 99, 79, 29, 31, 21,173, 31, 87, 9, 49,244, + 11, 86,147, 94, 75, 45,181,212, 82, 75, 45, 53,168,159,250, 88, 26,104, 16,168,180, 54, 33, 59,117, 1,216,222,110,232,197,166, +213,115,137, 81,105,238, 37, 31,228,178,214, 27,186, 99, 34, 28, 38, 80,236,171,132,184,121,151,211, 39,234,213, 82, 75, 45,181, +212, 82, 75, 13,234, 23, 17,220,147,232,189, 23, 47,203,228,147,158, 60, 33,155, 61, 35, 36,224, 12, 9, 52,123, 13,230,181,212, + 82, 75, 45,181,212,242, 44, 1,245,233,227, 23, 32, 95,252, 91, 5,117,169,252, 91, 3,121, 45,181,212, 82, 75, 45,181, 60,139, + 65,253, 84,227,169, 65,188,150, 90,106,169,165,150, 90,106,169,165,150, 90,106,169,165,150, 90,106,169,165,150, 90,106,169,165, +150, 90,106,169,165,150, 90,106,169,165,150, 90,106,169,165,150, 90,106,169,165,150, 90,106,169,165,150, 90,106,169,165,150, 90, +106,169,165,150, 90,106,169,165,150, 90,106,169,165,150, 90,106,169,165,150, 90,106,169,165,150, 90,106,169,229, 2,137,122,229, + 75, 95, 5,128, 86, 26,173, 99,131, 55, 37, 40,165, 66,251, 23, 5,160, 40,222, 78,180,132, 81, 10,205,137, 93, 98,194,207, 20, + 74, 73,252, 50,244,148, 81,241, 95,137,191, 16, 64, 73,124, 34,139, 10, 91,137,108,180, 55, 38,126, 31,183,140,191,137, 99, 43, +158,203, 78,248, 27, 37,148,187, 82,196,109,226,239,100,188,111, 81,234,196, 14, 60, 19,231, 24,126,139,140,199,174,202,227,171, +184, 59,169,140, 77, 42,219,233,242, 51, 85,221, 97,156,129, 98,183,138,240,135, 16,199,172,198, 91, 78,244,227, 41,191,147,202, +223,147, 3, 87,168,120,157,226, 53,140,115, 35, 27,158, 88,121,121,203, 99, 73,252,191, 66,197, 57, 21,170,141,254, 84, 60,109, + 85,206,111,252,165,146,202, 21, 26,143, 65, 16,180, 42,102, 76,161, 84,120, 42,159, 0, 94,194,211,118, 85, 28, 64,185,157,148, +203,107,124, 92, 29,174,174,146,226, 82, 8,226,193, 35,248,248, 52,191,234,149, 52, 26, 44, 58,204, 1, 69,235, 66, 21,247, 25, +198,132, 2, 39,227,118,134, 94,192, 40, 65, 35, 97, 93,139,224,227,162,119, 30,180, 86,152, 56, 87, 90,133,115,209,241,156,140, + 30,175, 63, 85,221, 70,166,231, 24, 42,179, 49, 94, 3,113, 94,203,251, 45, 94,171,241, 61,195,196, 10,211,113, 21,137, 82,232, +184,104,164,114, 29,199, 55, 69,252,125, 92, 15, 82,189,175, 69,226,202, 12,215,163,152,119, 41,151,152,196,123,134,202,247, 97, +108,229,182,113,224,225,251,184,173,138, 47, 1,231, 5, 29,175,173, 76,220, 33, 97, 91, 31,215,130, 82,241,111,169, 92,247, 56, + 33, 34, 30, 47,224,226,247, 46, 30,220, 87, 38, 68,198, 90, 1, 69,188,110,106,188,228,213,212,173, 93, 92,167,112, 77, 85,185, + 86,137, 99, 70,141,215, 69,248, 92, 42,107,189,178,223,120, 1,149,170,238,119,172, 23, 40, 85,170,170,220,245, 76, 14,108,234, +186,149, 58, 73,169,241,254, 84, 85, 35,200,244,109, 92,234,210,170, 78,208,197,111,100,124,191,198, 83, 43,239, 65, 53,165, 97, +171, 26,162,216,166,186, 40,124,188,175,125,188, 6, 34, 18,183,147,241, 34,217,160,109, 88,161,127,131,238,168,220, 9, 83, 42, +157,241, 45, 16,214,166,200,228,148,169, 98,108, 69,155,209,226,188, 66,227,209, 66,199, 23,231, 10, 82,249, 87, 38,214,120,245, +186,150,250,177,132, 22, 85, 30, 78,169,160,127,180, 10, 47,226, 61,175,170,227,174, 46,138,120,252,241, 24,199,227, 20, 0, 31, +239, 27, 31,230,110,242, 34, 68,101, 32,197, 60, 73, 92, 7,106, 3,149, 63,190, 62,213,107,165,174,154,127,129, 20, 64,170,162, +162, 26,223,172,241,164, 38, 46,146,102,252, 96,180,226,119,186,114,129,217, 8,109, 80, 24,148,174,116,125, 85, 30, 68,143, 87, + 53,106, 98,145,140,197,151,239, 69, 71, 69,235,125,220,206,161,226,123,165,138,166,240, 26,239,253,196,239,116, 52, 82,130, 18, + 14,106, 44,108, 19,206, 89,107, 93, 57,255, 0, 8, 74, 41,188, 31,131,133,209, 38, 40, 97, 29, 94,168,202, 2,213, 42, 24, 68, +170, 0,105,141,114,213,113, 10,206,121,188, 8,206, 59,178, 60, 39,207, 61, 46,243, 40, 37,104, 29,192, 71,233,114, 37, 6,197, + 25,231, 85,203,216, 0, 64,105, 20, 58, 40, 28, 1,165,165, 4,202,233,249, 11,215, 82, 87, 20,208,137,215, 69, 16,156,246,227, + 5,161, 20, 17,170,198,227, 2,116,188, 57,124,169, 48, 44,198, 24,172,214, 24,109, 17,227, 17,113,120, 47,229, 43,203,114,148, +214, 24, 99, 74,101,173,227, 2,157, 88,107, 18,144,218, 75, 80,224, 32,229,130, 46,230, 88,107,141, 54, 10,196, 76, 40,157,234, +191,197, 62, 39,207, 63, 0,127,169,124, 68, 80,226,203,155,169, 80, 78,225, 26,235,248, 2,173, 65,105,202, 27,207, 59,133,199, +131, 81,108,219,190,133,205,139, 29, 90,109,139, 18, 88, 62,118,148, 81,191,207,142,109,219,121,217,141, 47,225,239, 63,241, 73, + 86,142,175,210,243, 57,107,131, 17,237,217,205,116,215,186, 72,158, 97, 21,120, 60, 35,239, 16, 9,215,190,211,110, 51,236, 15, +200,178, 12,163,198,107,220,139,224,138, 37,161, 12, 8, 97, 94,115,207, 80, 52, 63,254,239,127,134,227,171, 75, 60,248,224,253, +124,244,175,254,134,245,227,107, 40,209,184, 44, 35,151, 28,173, 53, 54, 49,228, 46,199, 59, 79, 98, 45,136,208,176, 9, 90,107, + 36,119,164, 54,204,103, 38, 66, 98, 13,206,133,113, 89,107, 81, 90,145,231, 25,214, 90,156,178,188,233,135,126,152,143,127,226, + 1, 62,245,153,191,231,169,167, 30, 71,242, 1,155, 58, 13,102,211,132,166,181,228,249, 40,204,164, 49,228,206,145,101, 57,141, +180,129,247, 30,231, 28, 73,195,146,185, 33,185,203,209,202, 98,173,101, 48, 24, 97,109, 18,174,163, 87, 40, 13,163,209, 16,239, + 61,214, 90, 70,163,209,120, 60, 74,145,101, 57,162, 44, 90,107,242, 60,143,250, 52, 92,231,145,203,163,134,210,120,231,195, 28, +250,156, 36,177, 8,190, 92, 27,218, 24, 92,188,255,173, 49, 32,130,209, 6,239, 29, 2, 56,239, 81,218,160,181, 65,124,248, 93, +208,179, 14,188, 96,140, 33, 77, 83, 18,171,113,121,206,112, 56,196, 24, 19, 63, 79,200,243,156, 60,207,163, 94, 81,165, 30,200, +243, 28, 99, 76,112,134,140, 33,203, 50, 68, 64,107,131, 82, 26,173,195, 88,138,245,153,187, 17, 73,146,144,196,109,189,247,225, +186, 21,235, 88, 41,146, 36,193,101, 25, 56, 9,231,130,138,224, 37, 78,149,197,197, 0, 0, 32, 0, 73, 68, 65, 84, 40, 13,202, + 22,136, 17,143,171, 64,225, 73,173, 6,239, 40,208, 71, 43,161,209, 76,241,185,195, 90, 27,206, 83,107,196, 59,140, 9, 58,181, + 97, 20, 90,124,137,116, 65, 63, 72,212, 15,138, 52, 77, 48, 74,130, 83,232,133, 36, 73,176,198,160,163, 97,166,148, 34, 53,150, + 86, 35,197,104,143,181, 96,141, 99,126,166,193,230,166,101,107,167,201,230, 52, 97,113,190, 73, 39, 81,108,154,237, 48,183, 99, + 17,219, 73,144, 52, 65, 6, 57,135, 31,122, 20, 59,204,152, 89,156,165,185,185,141, 51, 48, 58,186, 66,162, 83,186, 3,120,228, +208, 10,159,248,228, 23,177, 70,115,249,246, 5,174,185,242,106, 62,254,137, 7, 72,218, 45, 46,217,182,131, 3,143, 61,204,252, +226, 12, 91,119, 46, 98,243,156,133, 43, 47,227,200,242, 17,174,124,197, 75, 25,230, 67, 30,252,235,251,121,241,214,203, 89, 59, +114,152,133, 43, 47, 33, 51, 9,203,143, 62, 65,203, 90,154,155,154,168,133, 54, 73,167,205,195, 95,120,148,165,161,227,248,241, + 30,215, 94,119, 3,159,121,112, 63, 95,248,210,227,136,164, 36,202,162,101,196,101,151, 44,208,106, 91,150, 86,214, 56,112, 96, +153,149,117, 71,214,207,153,155,153,225,216,161,195, 52,141, 37,207,114,146,180,129,203, 50,172, 8, 9,208,177,134,217, 86, 74, +214,239, 49,219,110,146,141,134,204,164,205,232,108, 56,172, 14,243,105,140,101,152,229,184,136,159,162, 96,224, 61,102,115,115, +238,173, 27, 89, 85,165,235, 32, 85,111,251, 68,179,170,170,156, 39,183,153, 6,245,177,151, 52,105, 59,171,147,252, 78, 78, 60, + 70, 48, 61,131,130,215, 26,163, 76, 4, 32,141,210, 1,174,125,245, 36, 74, 79, 94,151, 22,143, 86, 26, 19,111,216,240,185, 2, +165,131, 7, 83, 1, 65, 95,190,130,223,234, 37,236,219,123, 34, 56,123,156,243,184, 8, 96,225,185,240, 32, 30,196, 11, 18,191, + 47, 20,154, 23,143,247, 66,238,165,252,141,243, 30, 81,133,135, 94, 88,148,190, 98,213, 73,233, 29, 23, 6,149, 80, 57,175,210, + 2,148,177, 69, 56, 5,116,211,128, 62,222, 86,112,226,163,167, 52, 6, 60,188, 76, 58, 17, 2,136,143, 96,171, 80, 17,232,195, +252, 23,127, 71, 59,210,251, 96,133, 74, 97, 21,251,210, 40,210,128, 81, 96,149,194, 40,131,209,186,180,124,139,151,138,107, 46, +120, 80, 96,180, 38, 49, 26,107, 52,198,104,140, 42,128, 87, 97,180, 42, 61, 64,163, 9,239,181,194, 22,223,233,194,232, 42,140, + 6, 79,225,151, 22,222,143, 72,197, 5, 21,153,240,192,213,132, 67,165,240, 62, 62,136,192,123,214,214,215, 88, 95, 95,167,223, + 27,144, 38, 77,230,102,231, 72,147,132,209, 96, 8,185,167,221,104, 50,219,110,227,149,166, 59, 28,162,141,101,148,103, 40, 13, +237,118,139,245, 94, 23,148, 34,203,115, 26,141, 6,121,150,129, 82,184,168,248, 4,193, 75,177, 14, 52, 40,133, 49,224,157, 3, +209, 8,134, 93,187,174,225,149,175,254, 7,140,242, 30,159,254,228, 39, 56,240,212,147,140, 70, 35,172, 49,228, 89, 78,230, 50, + 68, 4,147,216,232,202,142,215,133,213, 38, 0,142,151,242,124, 61,130,177,225,190, 82, 58,120,176, 90,135,121, 87, 10,156, 40, +174,127,209, 13,244,123, 25,107,107,125,150,150,143,147,103, 25,222,101,193, 51,246, 57,185,243,160,116, 24,187, 72,184,102,102, +188, 15,165, 53,104,197, 40,143,224, 41,144, 59,135,243, 66,150,231,225,214,243, 14,231, 92, 52, 4, 11,112,210,104,155,144, 59, +137,160, 43,241,158, 18,114,239,200,189, 39,207, 29,162,192,137,143,215,114, 12,124, 58, 30,223, 24, 19, 28, 0,173, 49,209,152, + 41, 65, 59, 94, 91,145, 48, 39,214,104,108, 92,163,217,112,132, 82, 66,195,166,116, 90, 45, 26, 73,138,120,143,143,128, 87,232, +163, 98,188, 90,235, 96, 32, 20,198,124, 4,227,194, 16,209, 90,151, 6,150, 82,133, 19, 34, 88, 27, 12, 11,132,112,126,222,211, +108, 54,194,117,143,227,171, 30,103,108,132,143, 57, 42,109, 76,249,185, 87, 18,239,219,112,206,225,120, 65, 75,138,119,165,145, +109,181, 33, 77, 27, 72, 28,243,132, 91, 38,126,194,243,247, 82,208,107,145, 93, 51,134, 70,179, 65,179,221, 66, 41,141, 73, 19, + 76,146, 96,146, 20, 81, 42, 48, 3,198, 96, 27, 13,180,177,160,117,212,123, 14,231,250,204,205,182,153,105, 54,152,177,134,237, +155,219, 92,117,217, 22, 58, 51, 29, 70,162, 57,124,120,149,135, 62,247, 16, 42, 27, 50,211,178,120, 55,162,211,158,227,240,129, + 99,184,225,128,206,226, 22,104, 52, 48,141, 38,249,241,117, 58,164, 44,182,102, 16,114,196, 38, 28, 61,186, 74, 43,105,112,201, +182,237,100,163,140,163,107,199, 73,103,154,204, 54,155, 44, 52,218, 36,179, 13,102,118, 46,178,124,236, 8,131,149,101, 22,118, + 94,138, 22,195,160,187, 78,154, 26,116,106, 16,237,105, 52, 83,100, 56,228,200,218, 18, 42,181, 88,157,208,238,108,102,211,246, + 75, 56,120,224, 16,249, 48, 35,203,133,149,149, 46,199,151,215,216, 60,183, 9,173, 60,205,134, 97,243,230, 77,120, 7, 71,143, + 29,199,218, 6,206,133,107,155,143, 70,193,117,146,128, 73, 74, 5,237,222,176,134, 84, 43,172, 2,237,114,154,105, 74,154, 24, + 26, 70,163,196, 97,117,100, 33,141,137,108,134, 68,140, 10, 14,151, 87, 10, 51,223,216,244, 86, 20, 21, 69, 38,193, 75,175,210, +173, 27,130,238, 52,176,107,228,148,221,218,229, 4, 74,117, 18,212,171,207,108,241, 83, 70, 70,244,192,212,248,111,165,116,197, +235,211,104,101, 2, 48,235,138, 39, 72,161,164, 2, 24,105,109, 80,162,209,232,120, 52, 21,189,225, 56, 6, 81, 40,101, 40, 9, + 88,101, 34,136, 26,208, 38, 78,156, 66, 68,225,124, 4,124, 41,126, 27,141, 1, 39, 1, 0,156,224,221, 24,252,115, 39,100, 46, + 40, 32,231, 3,192,139, 84,168, 75, 21, 21,185,168, 73,170, 83, 84, 9, 60,126,130,224, 1, 37,227, 57,155,100, 48,228, 68,211, + 72, 85,104,160,146,110, 21, 92,188,222,229,239, 10,118,163, 2,234,226,203, 95,148, 52,182, 45, 12, 43, 29,120, 3, 21,141, 63, + 41, 65,210,163, 34,205, 29, 0,189, 48,191,198,212,180,142,199,209,209,210, 87, 58, 0,123, 1,210, 37, 80,155, 8,182,154, 96, + 72,148,227,144,242,111,173, 2,141,170, 10,111, 68, 23,122,167, 28, 84, 0,117, 5, 42,142, 77, 85,200, 49,188, 43,153, 1, 74, +154, 57,222, 19,162,195,245, 34,120,217,226,133,108,148, 49,232, 14, 24,141, 50, 94,252,226, 27, 64,105,134,163, 17,131, 94,143, +185, 86,155,134, 77,104,119, 58, 60,117,224, 48, 54,109, 96,172,165,209,108, 48,202, 51,114, 23,188,161, 44, 27, 49, 59, 59,203, +218,250, 58,198, 24,242, 60,199, 38, 9, 78,130,209,167,208,193, 72, 68,128, 44,208,238, 42, 65,196,112,227, 75,111,228,138, 93, + 59,233,245,150,249,219,143,125,148, 99, 71,142,150, 74, 34,207, 70,160, 21,214, 6,111,184,122, 93, 1,172,181,193, 11,139,231, +107,141, 65,153, 2,196, 13,185,203,112,226, 34, 37,238, 25,101, 25, 40,205,214,237, 59,152,155, 91,160, 63,200,232,246,134,228, +121,206,104, 52, 32, 73, 19, 70,217,136, 52, 77,209,198, 96,172,141,225, 21,137,225, 31, 33,115, 35, 70, 89, 22,238,131, 60,199, +229,130,119, 97, 46, 11,214, 44, 73, 18,114,231,130, 7, 46, 48,202, 3,224,231, 46,222, 67,121,142,247,158,204,229,225, 58,168, + 96, 60,122,113,129, 30, 53,193,131,209,170, 80,148, 10, 99, 76, 4, 84, 53, 97, 40, 36,105, 26,142, 43,193, 64, 48,214,150,140, + 93,113,245,109,152, 0, 26,209, 91,214, 42, 24, 42, 54, 9,128, 60, 28, 14,200, 37, 0,102,146, 36, 32, 50,246,168, 81,209,168, + 8, 58,203,218,224,201,151,172,194,104, 20, 13,130,192, 26, 20,158,124, 1,246, 34,145,119,212, 10,151,231, 19,172, 98,113, 14, +197,254, 68,130, 46, 16,145, 16,154, 80, 65,131, 42, 93, 97,173, 16,172, 81,168, 8,236,141, 36,176, 76,133,170, 47,214,136,137, + 70, 1, 34,136,143,247,150, 30,199, 22,116,164,177,108,154,146,182, 90, 36,105, 90, 26,168, 30,133, 24, 3,202,144,123,193, 35, + 96, 44,218, 90,156, 4, 35,142,212,226, 83, 69, 98, 19, 22, 58,155,184,100,243,102,118,204,182,216,182,185,193,150,249, 38,226, + 6,244,135,125,102,231, 22, 73, 90,155,233,142,132,199, 31,127,146,181, 67, 71,153, 79,155, 52, 18, 75,179,221,226,224,129, 3, +116, 90,109,146,180,129,110,182,144,204,225,187,125,172,135, 86,154,144, 13,133, 36,237,240,248,161, 3,164,173, 6,205, 70, 66, + 35,177, 12, 6, 61,218, 73,194,150,205,155,241, 58,135,109, 51, 36,157, 54,107,199, 86,152,109,164, 44, 31,124,146, 29,215, 94, + 29,140, 62,113,232,196,144,204,182,241, 13,131,120,199,108,123, 6, 53,219, 97,181, 63, 96,125,173, 75,130, 38, 27, 14, 89, 93, +235,113,124,101,157,213,213, 46, 90, 41,102,103,218, 28, 95, 62, 70,187,209, 96,126,126,158,213,149, 53,180,177, 12, 71, 35, 26, +105,112, 0, 36,247,164, 38, 5,239,176, 70,145,234, 0,232, 77,173, 80,121, 70, 43, 49, 88,229,153,105, 54, 72,141, 96,181, 39, +181,193,113,177, 70, 71, 3,210, 4, 96, 71,192, 24, 60, 96,230,155,115,111,141,238, 88,136,131,113,162,215,135, 20, 49, 2, 41, +169,244, 98, 53,140,169,247, 51, 12,226,171, 73, 47, 93,162,194,245,213,227,151, 1,175, 34,198, 84,196, 81,199, 94,125, 24,114, + 0,244, 2,228,161,120, 95,120,135,186,194, 18, 68,111, 16, 19, 53,190,142, 94,161, 62,225,165, 37, 66,141,210, 99, 10,187, 36, + 45,198,112, 82,122,250, 5, 84, 9,227, 88,138, 39,210,208,225, 55,190, 98, 4,248,194,170,138, 84, 86, 9,188, 50,142, 77, 22, +231, 27,217,232,248,251,104,136,196, 3, 73, 4,250,192, 40, 72,140, 47, 23,116,173, 46, 13,134, 24,140, 40,183, 41,254, 43,226, +153,129, 77,136,140, 67, 53,119, 65, 10, 39,175, 98, 8, 20, 51,160,116,200,195, 40,169,201, 24,199,242,129,134, 23, 31,128,179, + 0,230, 0,254, 99, 47, 88,151,215, 77, 77, 24,148, 74, 75,185,125,225,105, 23, 30,163,209, 69,236, 43, 82,128, 49,196,162,148, +140, 99,154, 49,222, 95,120,106,197,197,144, 64,161, 4, 3, 34, 26, 49,170,140,166,141,191, 87,149, 32,173, 82, 82,198,173, 37, +210,168,197,164,248, 60, 7,129,225,112,196, 90,183,203,220,166, 57,142, 31, 95, 97,109,101,149,212, 36,108, 93, 88,196,229, 57, + 74, 91,250,189, 62, 42, 4,221, 25,101, 35, 90,141, 38, 70,105,196, 7, 69,158, 38, 41,198,132,181,106,140,193, 42, 29,129,215, + 68,227, 52,120,116, 74, 91,180, 14,212,249, 75,110,254, 74,182,239,156,231,169, 3,143,241,201, 79, 60,192,160,223, 39,177, 41, +222,249,184,159, 0,232,101, 4,191,240, 90,181,174, 24,189, 4,207, 48,184, 9, 37,184,122, 95,228, 41,132,107, 44, 18, 60, 50, +231, 28,215, 93,119, 61,198, 24,178,124,196, 48,235,147,231, 25,163,225, 8,101, 12, 89,238, 24,101, 57,105,163, 65,230, 66,152, + 73,128,193,104, 88,126,231, 28,120, 23, 61,235, 50,254, 25,128, 53,208,214, 14,165,116, 12, 87,141,169,222,220,185, 8,210, 22, + 47, 46,132, 22, 34, 16, 91, 51,102,126,172, 9, 70, 76, 49,119, 90,171,112, 93,167, 66, 84,196,247, 70,235, 24,102,171,132,155, +138, 48, 28, 4,224, 53,154,102, 35,141,244,127, 22,194, 36,129, 74, 42,199, 94,134,169,138, 80, 30, 96, 19, 59, 54,148,242,188, + 52,188,141, 49,100, 89, 48, 80,180, 9,243,107, 76,160,250,197, 71,229,161, 10,175, 63,176, 83,229, 49, 42,192, 94,120,239, 69, +104,206, 68,250,189,170,107,131, 81, 83, 24,183,158,196, 26,194,148, 8,214,216,200, 42,248,177, 70, 86, 97,157,235, 34, 23, 69, + 7,150,179, 8, 47,216, 52, 33, 73,210,200, 48, 72, 25,254, 80,198,196,188, 7, 79,238,131,145, 37,232, 24, 70, 8,172, 67, 96, + 88, 50,148,184,232, 86, 41,122,131, 17,199,187, 67, 68,167,172, 13, 51,188,177,204, 37,179,248,245, 30, 77, 28, 91,231,102,217, + 58,191,131,238,154,227,192,129,163,140,134, 61, 54,109,106,209,108, 54, 56,124,248, 16,155, 23, 22, 64,114,172,214,248, 97,198, +160, 63,160,209,104, 97,156,102,118,102,134, 53, 25,240,232,193, 39, 72,141,101,198,166, 92,178,184, 5,165, 29,205,249, 14,155, +183, 45,208,207,135,116, 87,151,104,108,110,177,120,205, 53,244,142, 44, 49,211,108,144,116, 26,136,207,209,202,163, 53, 72,106, +176,179, 51,140, 6, 3,104, 53,152,187,116, 27, 90,132, 97,183,135,198,112,108,121,141,149,213, 62,131, 81,142, 19,207,246,109, + 91, 88, 93, 89, 33, 27,142,152,155,157,161,219,235,209,104,182, 24,101, 67, 58,157, 54,195,193, 48,132, 76, 48,104,132,153, 86, +131,124, 56,160,105, 45, 86, 60,237,196, 50,215,110,146, 42,161,149,106,172,246, 36, 26,154,169, 69, 17,174,151,209, 54,228, 1, +217,112,239,249,136, 19,214,137, 59,129, 97, 47,147, 0,138,132,158,146,186, 61,209,203, 22,217, 40,187,108, 35, 48, 31,223,192, + 19, 17, 93, 25,115,189, 19,223,109,192,226,135,120,232,164, 81,160, 42, 79,108, 13, 94,156,143, 73, 5,193,146, 87, 74,199, 36, + 24, 98,114, 84,240,198,139,100, 15,165,166, 24, 4,153,228, 14, 42, 72, 81,142, 87, 42, 73, 93, 5,144, 7,175,164, 50,126, 95, +196,136,139, 44, 2, 61,246, 28,139, 81,107, 27, 89,145, 49,165,174, 41,206, 81,208,152, 48, 62, 15, 74,249, 50,217,163, 56,174, +174, 24, 97,136, 76,196, 23, 11, 67, 65, 23, 33,148, 74, 6,138,143, 96,231,165, 66,221, 23,249, 25,158,232,189, 71,246, 64,133, + 88,162, 39, 80,127, 74, 20,162, 5,165, 12, 94,185,113,234, 99, 53, 22,236,125, 84,188,106,124,237,131, 59, 61,190,172,186, 56, + 1, 53, 78,178, 97,154, 2, 87, 99,197,204,216,232, 8,235,196,151,158,208,100,178, 94, 52,168, 34, 5, 60, 30,143, 84, 18, 31, + 21,198,168,248,253, 56,220, 32,222,135,107, 37,130,104,143,148, 70,157, 39,247, 69, 56,202,225,188,139,199,135, 60,247, 60,242, +200,195, 60,254,212, 19,164, 70,163,115,199,210,193, 99,204,207,204, 35,249,144,166, 49,104,231,200, 92, 14,214,224,242, 28,131, +198,103, 14,131, 38,207,114, 68, 57, 68,235, 0, 72,121,136, 37,103, 49,150,109,140,162, 63,112,136,232, 48,231,222,145,229, 35, +230,230,154,228,249,128,165, 99,199,130,130, 0,156,119,225,118,215,227,181, 90, 36,168,249, 72, 51, 3,100,121, 54, 94,227,226, +145, 60, 67,242, 49,216,133,185, 16, 50, 21,192,211, 57,143,103,200,254,135,191,200,117,215, 95,203, 11,174,184, 10,236, 16, 39, +107, 24,147,113,124,105, 21,151, 11,163, 97, 23,196, 99,146, 17, 89,150,225,242,140,196,106,114,151,151,215,175, 0, 62, 65,225, +188,155, 88,175, 46, 82,227, 33,230,157, 99, 98, 28,189,136, 59, 23,113,220, 68, 2,120, 25,165,113,113, 93,230,121,142,120,143, + 73,146,104,132,121,226,173, 31, 12, 88,231, 75,192,181,214,226, 93, 56, 55,173, 20, 73, 98,199,244,182, 10,121, 21, 74,133, 80, + 64, 72,244, 12, 97, 2, 0,101, 20,163,209, 8,231, 29, 73,163, 65,146, 36,120, 31, 88, 4, 19, 1, 92, 69,166, 32,207, 93, 84, + 77, 66,158,187,146,130,183, 54,161,217, 84,140, 70,209, 64,176, 73,105, 80, 21,222, 57, 42,122,225,206, 67,244,158,139,107, 81, +132, 70, 74,134, 46,234, 4,231, 61, 58,254,206, 57,135,119, 18, 65,221,160, 36, 24,202,121,188,246, 86,155,210, 56, 81,168, 96, + 76,104,194,152, 41,114, 10, 2,187,145,164, 22,163, 85,121,111,185,194,216,162, 96, 97, 92, 76, 44, 84,160, 37,230, 66, 12,199, + 76,154, 86, 49,247, 70, 99,197,160, 1, 39,142,158, 12, 65, 53, 16,109, 56,190,222,167,157,164,108,238,108, 66, 91, 69,218, 78, + 57,112,232, 41,140, 19, 22,230, 54,177,109,199, 38,186,163, 54,143, 28, 62,204,145,222, 65, 94,120,229, 78, 48, 93,122,221, 46, + 13, 13,190,215, 39,181, 13, 84,154,224, 50, 97,203,124,155,181, 97,151, 27,174,188, 4, 55, 26,112,252,248,113,146, 89,216,177, +117,129,157,151, 93,198,210,224, 24, 50,187,133, 57,157,146,245,186,184, 65, 78,182,182,204,252,117,151, 98,103,230,144, 35,199, +195,181, 68,163, 26, 13,178, 97, 23, 99, 18,230,174,191,138,225,250, 58,190, 33, 52, 54, 25,230,119,204,243,119, 31,255, 28,163, + 44,163,223,235,211,106, 54, 89,235,117,201, 69,216,121,201,101,116, 87, 87,200,134, 33, 87,102,203,226, 38, 6,131, 30,131, 81, + 70,103,166,197, 82,119,128, 50, 22,227,160,149, 88,134,206, 97, 16,172, 86, 36, 70,209, 76, 52,169, 77, 72,149, 68,224,246, 72, +238, 48,132,100, 81,231, 93,224, 62, 69,176, 86,227, 92,208, 97,102,166, 49,243, 86, 87, 64, 67,145,232, 21, 21,165, 30,147,144, + 39, 80,225,167,147,113, 98, 82,177,167,137,188,211,138,103, 85,236, 79, 77,253, 71, 73,173, 22,244,179,248,170,247, 56, 78,244, + 26,179,139,227,228,190, 34, 78,107,162, 55, 25,226,177, 6,141,193, 40, 59, 62,110,204,128, 45, 65,164, 56,239,152,237, 56,142, +253,234, 9, 90,175,156,172, 98,172, 83, 79,124, 23,165, 75,114, 88,170, 41,174,101, 70,107, 8, 11,160,245, 56, 52, 80, 30,203, +160, 98,190,128,142,241,103,165, 53, 42,110, 51,193, 78, 76,176, 12,106, 34, 60,161,162, 55, 40, 85, 6,161,204,138, 15,172,129, +210, 58,130,151,174, 24, 47, 58,198,239, 35, 11,128,144,139,139,192,168, 74,118,166,152, 47, 34,235,224,188,139, 30,150,155, 72, +112,171,102,214, 86, 67, 0, 94,124,153,209, 60,142,255,141,231,168, 52, 86, 74,112,158,252,119, 28,106, 8,191,245, 69,158,131, +115,227, 87, 1,234, 81,105, 86,169,104, 95, 9, 89,120,239,241, 49, 78, 91,102,210, 42,193, 19,194, 37,130,196, 56,105,100, 34, + 36,199,251, 60,102,102, 7,138, 56, 27, 5, 90, 57, 27, 57, 14, 31, 58,204, 11,175,185,138,217,217, 25,250,189, 30, 89,158, 97, + 18,131,243, 14,163, 21, 62,247,209,171, 22,116,140,171,182,154, 45, 0,210, 52,101, 48, 24,150,172,199,112,148,161,117,131,225, + 48, 35,119, 35,156,140,120,193,149,151,208,153,157, 97,255, 67, 15,243,200, 35,143,227,242,160,136,131, 82, 14,212,186, 14, 46, + 90, 0,246,202,185, 6, 58,216,162, 80,248, 8,172,222, 23,185, 3, 33,183, 62,228,127,196,176, 81, 30, 60,173, 44, 27,178,186, +186,204,182,237,243, 92,123,221,149,108,218,212,166,223,239,163,176,184, 76,161, 77,184, 7, 7,131, 97, 8, 33,136,148,158,119, +145,207, 82, 56, 9, 82,100,245,198, 53, 87,128, 79,145, 89,172, 35,115,161,181, 46,211,158,189,132, 28, 20, 29, 25, 13,239,198, +137,107, 18, 25,138, 2,164, 93, 4, 97, 93,201, 1, 41,230, 32, 73,146,242,251, 42, 69,159,231,121,153, 52, 87, 48, 68, 62, 82, +229,206, 59,140, 53, 24, 27,232, 78,109,116, 60,159,176,143,196,218, 72,189, 11, 70, 91,156,247,113, 30,130,145,230, 92, 96, 68, +108,146,160, 32,134, 18, 92,105,168, 56,151, 7, 29, 21,153,129, 66,195,186, 60,159,184,143,170, 33,132,170,254, 44,140, 54,173, + 52,205,102,147, 34, 87,189,200,240, 87,145,173, 42, 28, 54, 69,181, 90,168, 82,143,164, 10, 32, 79, 72,210,148, 36, 73, 74,199, +193,104, 67,158,101,100,217, 40,176, 42, 62,199, 21,204,144,214,224, 61, 70, 41,196,133,251, 68, 23,119,189,143,127, 7, 42, 15, + 37,130, 53, 9, 86, 39, 40,132,102,162,104, 89, 97,115,167, 73, 43,177,248,209,136,153, 86,202,246,197,121, 22, 23,102,177, 86, +232,117,215, 88, 89,239, 67, 99, 19,235, 67, 56,252,212, 33, 22,119,236,228,232,225,163,108,158,153,133, 97,198,104,189, 71,163, +209, 98,180,214, 69,233,140,153,133, 54,107, 71,150,184,234,138, 93, 28, 89, 58,206,202,122,151, 60, 31,178,117,251, 60,118,198, +210,185,242, 5,244,142, 30,195,107, 97,219,150, 69,214,151,150, 72, 22,102, 80, 73, 76, 16,109, 55,233,118,123,140,196, 49,179, + 99, 11, 89,158,193,166, 54,233,214, 77,168, 68,232,245,187, 88,219,194,153, 6, 15,125,254, 97, 70,195,192,148,118,102, 58,172, +174, 46,211,110,183, 25, 14, 6, 12, 7,125,180,130,217, 78,139,197,197,121,122,189, 30,214, 36,172, 44, 31,199,106,139, 17,161, +101, 45, 6, 65,123, 71,203, 26, 26, 6,102, 82,139,241, 25,169, 81,101, 40, 19,241, 24,109, 48,218,196, 48,112, 8,185,136,214, +225,158,115,130,105, 37,173,183,122,124, 40, 15, 81,147, 57,238,213,210,143,113, 9,130, 66,169, 51,165,218, 35,184,108,232,121, + 79,238, 71, 77,167,204,149, 37, 36,170,180, 36, 21,102,162,188,106,227, 58,180,194,219,211,101,166,186,142, 65,214, 34,206,206, +132,209, 32,147,231, 83, 4,154, 10,192, 47, 41,246,130, 25, 8, 49,121,173, 66, 54,124, 81, 10, 56, 77,225, 23,161,131,106, 98, + 89, 17,219, 83, 49, 22, 29, 12,135,152,184, 23,203,175,140, 50,229,182, 74,153, 10, 77,173,203,172,251,241,190, 76,101,255,147, +201,127,229, 56,164,242, 93, 52, 8,138,237, 74, 10,189,242, 91,165, 13,198, 38,104, 99,131, 97,162, 52,162,199,249, 12,227, 50, +163,113, 66, 77, 65,187,149,137,119,213,236,243,138,241, 52,142,253,143, 75,147,138, 68, 61, 95, 45,141, 41, 67, 15,225,115,151, +251,144, 80, 21,105,188, 42,160, 23,251,243,149, 4,196,130, 62, 30, 31,199,151, 49,222,170,183, 63,206, 48,143,192, 95, 30,123, +204,200,140, 67, 27,227,146, 26, 81, 82,134, 71,148,178,225, 58,105, 19,255,181, 69,173, 0,219,182,204,241, 85, 55,221, 72,167, +221,193,249,156,110,175, 27,178, 5,117, 80,204,205, 86,139, 44,203,131,119, 73,176,198,157, 11,244,101,230,242, 72,245,134, 4, +180, 60,210,209, 74, 43,108,106, 72,155, 45,154,205, 38, 79, 29, 56,196,193, 3,135,201,115, 65, 43, 75,158,187,232, 45, 70,234, + 88, 38,147,228, 10, 79,210,149,115, 24,231, 19, 41,141,165,178,180,138,113,117, 0,128,115, 57,221,238, 58,203,199,143, 50, 59, +215,225,218,107,119,177,109,235, 22,210,196,134,220,135,212,210,108, 54,208, 70,135,236,240, 52, 41, 1, 66, 68, 48, 49,150, 95, + 80,185,101,194,107,229,239, 34, 25,172, 0,170,177, 49, 22,140, 53,137,148,248,120,140,227,184, 98, 32,165,130,210, 43,140, 2, + 23,243, 23,202, 88,113,145, 87, 96, 18, 84,164,181,165, 98,172, 74, 76,244, 76, 98, 34, 82,233, 93, 27,131, 54,166,156, 19,107, + 18,156,203, 99,172,218,150, 52,115,238, 28,198, 38,184,152,184, 23, 18,120, 65, 27, 27,214,168, 11,108,132,119, 82,178,159, 74, + 23, 97,145,201,170, 28, 19, 61,238,146,169,136,161, 17,165, 40,199, 93,204,159,137,227,172,230, 30,232,104,228,132, 4,203, 49, + 83, 82,130,251,148, 34, 87, 58,228, 53, 36, 73, 18,230, 56,230, 84,168, 88, 10, 34, 34,164,137, 45,117,145,177, 6,101,194,220, + 20,224,174,163,241,110,140,174,148, 73, 51,174, 44, 81,154,212, 36, 88,107,176, 9,164, 73,200,176,183, 74,104,104, 69,170, 96, +115,187,141,207, 2,245,221, 93, 91,101,216, 31,226, 50,197,220,220, 60,205, 24, 87, 71, 89,246, 31, 56,196,209,213, 30, 56,197, +252,204,102,172,178,100,131, 12, 99, 52,253,124, 72,163,211,225,248,177, 21,180,109, 32, 90,179,176,101, 11, 40,225,200,209, 67, + 44,238,220, 70,123, 97,129, 67, 79, 61,197,226,165, 91, 25,228, 67,210, 52,165,181,105, 14, 51,215,134, 20,104,167,216,217, 54, + 75,199, 14,211,220,186, 72,186, 56,135,222,178, 25,167, 60, 40,135, 36, 22,139,193, 57,205,231, 63,253, 32, 13,219,162,211,106, +145, 54, 52,237, 78, 8,177,205,180, 59, 44, 45, 45,209,105,165,164, 38,228, 11,205,204,205,177,222,235,147,229, 57,195,126,143, +205,237, 54, 13, 66,101,128,207,115,148,207,153,109, 53,104, 90,133, 21, 71, 51,177,101,158, 81, 8,155,132, 80,135, 82, 58,230, +175, 8, 46, 38,158,122, 15,166,213,104,191,181,160, 95,125,181,214, 50,210, 78,227, 26, 91, 85,177,156,213, 25, 0,186,174, 0, +162,154,174,139, 59, 33,206, 94, 40,234,105,152, 23,169,102, 42,171,147,208,243, 85, 31, 80, 77,214,166, 79, 89, 11, 74, 84,133, +182,173,208,190,170,186,203,233,138,192,162, 70,218, 84,178, 77,199,177,253,162, 62, 87,197,216, 43, 17, 28, 41, 50,187, 75,144, +174, 36,114,169, 8,204, 49,125,172,176,190, 76,153,128,166, 49,198, 6,192, 45,226,125,145, 18, 11,180,161,142,134, 75,164,136, + 84,244,248,149, 25,123,221, 4, 64, 47,246, 93,128,183,209,182,252, 59,128,125, 80, 88, 69,146, 83,149, 21, 8,166,126, 48,116, + 2,251, 48, 89, 55, 46, 82,201,212, 46, 43, 39,170,101,107, 99, 22, 97, 42,189,178,172, 79,159, 40,135, 84, 99,143,190,168, 43, +245,149, 26,207,106, 86,128,103, 50, 71,160,172,243,143,235,166, 96, 72,124, 53, 84, 84,169, 39,245,101,246,255,184,132,147, 74, + 29,106,193, 92, 20,201,146,101, 55,130, 2,208,181,197,104, 27,128, 29,131,181,105,184,246, 70, 99,172,162,221, 12, 30,216,241, +229,227,244, 7, 61, 76,106,233,141, 6,100, 46,148,177,172,175,119,233, 15,134, 8, 66,183,223,167,219,237,210, 31, 13,232, 15, + 7, 12,179, 81, 92,133,161, 68, 42,147, 33, 74, 5, 38, 66, 68,227, 60, 52, 91, 45, 86, 86, 87, 88, 93,233,210,235, 13, 65,235, + 96,189,187, 28,231,242,104,213, 87,234,106,181,166,209,104, 76,220, 67,133, 1, 32, 18, 74,144,148, 82, 56,113, 49,116, 53, 86, +234,101,226,169,210,244,122,125, 14, 31, 58,200, 96,208,101,113, 97, 51, 91,183,206, 51,191, 48,135,181, 9, 94,132, 86,171, 73, +171,157,210,108, 54, 66,242,156, 82,100,163, 81, 76,118, 84, 49, 86,174,198,198, 69,133, 65,113, 46, 47,141,236, 2,164,138,114, +182,162,218, 35, 73,146, 50,222,238, 99,200, 64, 69, 54,171,236, 27, 81,241,110, 11, 67,193, 87, 88,155, 34,193, 54,207, 93,164, +214,199, 10, 51, 41, 75,186,194,253,155, 38,105,200,135, 24,141, 66, 9,146,181, 12, 7, 67,172,209,140,134,225,188,242,232,137, +187,184,198,116,168,139,101,148,101,193, 24,144,177,193,164,212,216, 16, 23,241, 19,158,121, 89,118,167, 99, 25,173, 14,204, 73, + 94, 73,150, 27,135, 36,244,132, 63, 19,116,232,184,194, 33,150,226, 20,133,209, 49,153, 89,198,157, 68,244, 88,191, 18,115, 0, +148, 14,215,196,249,144, 15, 97,141, 9,165, 40,132, 36, 57,173, 53,205, 86,139,102,167,141, 73, 76, 72,148,147,112,255, 24, 29, +170,136, 76, 52,112, 37,222,255,198, 90,108,146, 96,108,130,181,161,204, 45,236, 54,148, 23,118, 58, 51,160, 13,189,193, 8, 49, +134,110,238, 88,233,245,104,164, 9,243,157, 14,155,231, 54, 49,204,114, 70,222,161, 36, 67, 73,206, 74, 54,128,164,193, 80, 44, + 7, 87,123, 60,126,120,137, 97, 46,172,118,187, 12,189, 3,219,224,208,161,101,134, 30,182,238,220,193,112, 56, 2, 45,108,185, +100, 7,189,193, 0,237, 21, 98,160,189, 56, 79,107,231, 54,146,173,155, 49,137,194, 24, 33, 87, 96,231,103, 97,182,129, 52, 13, +155,182, 46,112,240,177,199,153,123,241,117, 48,211, 66,205,116,144,213, 53,146, 60, 71, 53, 90, 28, 91,234,178,244,248, 97,154, +166, 73,171,145,210,106,165, 92,127,221, 53, 28, 95, 90,138,216, 98, 88,220, 60,203,250,202, 18, 51, 51, 45, 58, 51, 51,172,172, +172,161,180, 37,203,114, 82, 1,147, 57,210, 36, 9,238, 64, 54,162,221,176,204,181, 26, 88, 28,141, 36,228,176, 36,198, 4, 99, + 40,150,100,230, 46, 39, 19,135, 87,190,100,132,179,204, 99,218,173,246, 91, 39, 60,235,104,109,233,138,254, 43, 63,173, 80,207, +101, 66,210,134,110,123,180,154, 11, 47,120, 3, 64,223,248,119,106, 34,233,237,196,154,117, 78, 29,115,159, 68,239, 49, 27, 48, + 17, 47,175, 50, 4,114, 34,160,151, 33,136,113,178,154,175, 82,253, 83,219,251, 74, 78,186, 84,104, 13,197,100,105,136, 84,234, +161,203,204,253, 8,120,101, 89, 76,140,231,233, 2,220,163,165, 91,122,230,166, 48, 14,244, 24,140, 43,177, 70,173,170,172,128, + 25, 3,115,133,226,215, 21, 42,127, 26,208,149, 30, 51, 3,166,100, 32,198,117,235, 10,131, 86,225, 5,129,141,144, 50,145, 80, +143,203, 7, 35, 83,161,116,213,192, 24,155, 94,190,240,178,202, 6, 29,170, 76, 90,140,181, 79, 49, 14, 44, 37,160,151, 77, 74, +244,100,162,227,248,111, 61,174,102, 40, 26,157, 40,133,232,106, 66, 99,153,121, 23, 89,136,168,176,116, 81,241, 48,222, 95,225, +121, 67,156, 23,138,249, 44,188,114,139,142, 47, 19, 13,165, 42,149,107,180, 98,182,221, 98,219,214,237,116,187,235,116,123, 61, + 30,126,228, 81, 6, 89,206,122,183,199,210,242,113,146, 52,197,121,207, 90,183, 27,198, 27, 89,156, 97,150,197, 74,203, 48,215, + 74, 75,164,250, 37, 36, 41,161, 25, 12, 7, 40, 29,234,216,187,131, 17,253,225,136, 81, 62, 10,141, 83,136,241, 96,241, 88, 99, + 99, 51,148,144,105,169,181, 66, 98, 34, 84, 40,201, 50,145,154, 14,224,169, 77,240,194,108,225, 77, 23,148,176,130,102,154,150, + 43,161,223,235,243,212, 83, 7, 56,114,248, 8,189, 94,151,225,160,143,115, 66,158,141, 24, 13, 7,140,134, 67, 68, 28,217,112, + 20,194, 15, 89, 86, 54,241, 24,131,186, 46,195, 32, 33, 20,165, 74,150, 46,148,159,201, 68, 72,233,100, 25,185, 66,165, 44, 81, +169,178,108,204,196,228,190,170,247, 63, 93, 98, 91, 86,199, 20, 84,125,164,251,157,207, 43,172, 80,200, 49,112, 62,120,205,214, +218, 50,115,190,168,121,119, 34, 49,252,145,227,197,151,201,113,168,113,146,110, 56, 39, 87,122,231, 85, 38,164, 48,120,148, 10, + 57, 47,206, 5,195,202,249,216, 32,171, 18,250,171, 54,187, 10, 9,104,110, 50,188, 68, 76,222, 43, 28,177,200,216, 21,243, 93, +156,103,121,173,147, 36,150,248,197,172,122,107, 72, 27, 13,180, 13,217,212,170,146, 19,149, 36, 9, 42,134, 8,138,202,138, 80, + 34, 24, 18, 51,195,247, 6, 29, 19, 53,181,181,161,204, 46,150,216,121, 66,120, 46, 92,219,112,223,101,185,167, 59, 26,209,119, +194,209, 94, 70,207,195,112,148,177,116,232, 40,195, 94,159, 65,230,112,198,210,237,103, 28, 91, 90,101,181,219, 71,119, 58,104, +147, 34, 24, 6,162, 88,201, 28, 71,214,123, 28, 89,237, 49, 68, 51,112,134,158,211,172,244, 71,164,237, 54,199, 87, 87, 88, 27, +172, 51,191,117,129,220,141,152,237,204,112,172,183,130,207, 51,154,173,148,100,182, 13,179, 45,148,209, 12,122, 93, 84,167,137, + 78, 53,210, 0,179,169, 19, 12,183,108,128,157,155,193,116,218,184,229, 21,186,199,150,104, 54,218,144,107,150,158, 56, 74,170, + 18,242, 44,167,209, 72, 65,121,210, 52, 65,156, 48,236, 15,176, 26, 52,161, 12,114,113,113, 30,165, 13, 7, 15, 31, 38, 73,155, + 12,214,122,116,140,101,115,167,137, 85,130,207, 51,102, 91, 77, 82, 45,164, 6,172, 53,232,152, 28,231, 92, 94,160, 16,142,112, +255, 11, 58,150,135, 10,121,238,177,136, 15,101, 83, 19,133,107, 50, 6, 86,136, 73, 58, 85,151,215,151, 11,164,236,225, 52,213, + 5,172,100,106, 9,165, 17, 27, 83,243,170,140,245, 86,111, 56,145, 19,227,247, 74,141,169,211,147, 33,188, 42,227,220,149,158, + 91, 78, 98,242,137, 62,193, 11,175, 36,247,199, 44,251,162, 46,188,218,203, 77,198, 37, 29,227,220,235,152,131, 46,149,158, 62, + 76,132, 38, 84,121, 59,176,177,215,143, 47,147, 19,199,201, 66,178,113,165,128, 98,170,171,222, 84,155,172,146, 49, 56,209,200, + 18, 29,142, 84, 36,159,133,155,187,202, 44,200,137, 29, 2, 42,201,143,177,202, 21,239, 2,147, 35, 33,251,110,220, 53,140, 16, + 15,215, 82, 25, 89, 44, 63,147, 10,184,250, 74,147,179,144,229,103,202,218,240,105, 35,175,244,182,161,226,205, 23,185, 0,122, +106,126,170,205,103,166, 58,229, 21, 37,121,241, 56, 33,121, 14,124,225,161,232, 10, 67,160,199, 73,147,197,202, 87, 69, 82,101, +204, 2, 14, 89,198, 97,231, 70,201, 68, 92, 82, 77,182, 20, 11,128,150, 67,218,108,115,124,245, 17, 46,185,236, 18,156, 73,120, +228,137, 39, 80, 24,140,241,172,173,173, 97,147,148, 70,179,193,112, 56, 68,161,201,114, 87, 26, 93,162, 96,152,119,209, 90,147, + 38, 13, 92,150,211, 76, 67,104, 36,115, 35,142, 28, 62,204,214, 29, 59,105,183, 91,228,222,177,188,180,140,203, 67,178,151, 50, + 9, 74, 2, 45,167, 53,216,200,236, 56, 23, 50,143, 37,122,241,170, 40,113,171,148, 91, 85,197, 36,182, 4,197, 52,209, 12, 6, + 57, 54, 73, 17,160,223,237,243,240, 67, 79,240,196,227, 7,153,153,105, 99,147, 70,240,106,189,224,178, 17,189,110,151,108,148, +225,242,208, 36, 74,137,196,220, 72, 85,246, 61,208, 90,227, 99,102, 55, 42,128,100,200, 53, 80,227, 46,120,149,117, 93,140,179, + 0,236,106,199, 60, 19, 65, 70, 71, 90,189,122, 95, 22, 64, 95,236,203,139, 27, 87,113,136,170,244,123,240,228,177,153, 85,238, +131,238, 48, 86, 69,195,195,134,100,202, 88, 93,226,240,228,121,134, 49, 22,165, 13,190, 50, 6, 31,235,192,173, 14,181,241,196, + 26,121, 84, 48,106,198,140,161, 10,212,181, 49,101,197, 69,168, 52, 8, 37,125,218,132,100, 41, 99,108,200,179,200,163, 49, 17, + 13,177, 34,115, 61, 96,110,104,166,160,117,104,110,163,138,138, 28,175,202,168,165, 49, 54,148,141, 90, 67,146,132, 4, 56, 99, +131,241,230,179, 17, 73,146, 6,166,167,146,120, 91,220,113,137, 77,201, 92,142, 19,135, 21, 83,174,155, 34,206,175, 34,213,175, + 98, 70,157, 23,202,108,251,162, 52,206, 0, 73,164,145,197, 90,116,163,129, 50, 64, 30, 40,123, 99, 21, 43,235, 61,214,189,163, +173,133, 3,235, 75,204, 30, 94, 37,213,154,197,249, 69, 26,141, 25, 6,249,136,238,129,227,120,132, 86,187, 69,167,209, 8, 73, +167,206, 65, 83, 88, 18, 97,132, 97,109,125,141,254,122,159,163,195,199,216,178,169,195,104,152,211,105,166, 72, 39,101,113,113, +134,133, 77,219,120,234,169, 39,240,131, 17,170, 59,192,225, 81,157,132,206,214,121,134,171,235,144, 41,236,226, 12, 94, 67,107, +215,229,140,158,120, 28,215, 95,195,180,103,177, 91, 23, 49, 71,143, 33,253, 33, 12,135, 88,163, 88, 29,245,217,185,243, 18, 30, +127,242,113,230, 23, 54,161, 27,138,229,195,199,104,219, 16, 22,152,153,233, 48, 26,245,200, 6, 61,182, 46,204, 48,219,105,176, +214,243,216,118, 19, 11,168,188,207, 66,187, 69,222,237,198,121,247,140, 70, 67, 26,141, 70,137, 25, 38,198,206,157,115, 36, 54, +101, 48,200, 66,101,142,243,161,244,209, 11,182,208,124, 5, 43, 83, 40,209,178,213, 40,122, 3,197, 73,121,243, 84,111,184,113, +108,106,178,249,160,174,212, 75,158,208,224,110,156, 88,126,154,178, 56, 93, 42,221, 83,149,194,203, 68,198,218,216, 19, 63,225, +248,213, 30,178, 76,255, 61,149, 24, 88,246, 98, 28,151,147,249, 13,178,253, 39,230, 98, 42,246, 95, 85,152,122,220, 51,110,210, +123, 56,211,100,133,147, 36, 38,158,116,230, 42, 9, 73,101,147,138, 34,110, 41, 30, 85,161, 67,169,100,210, 79,118,250,211,101, +105,144,210, 6,209,161, 61,105, 40, 79, 19, 84,161, 95, 43, 73,135,186, 12, 53,108, 84,206, 56, 57, 55, 27,141,127,186, 59, 92, + 53, 33,232,228, 29,242, 38,129,191,104,117, 43, 18,186, 92,169, 88,162, 86,109,247, 89,141,207, 23,237, 54,117, 1,234, 49, 4, + 81,237, 58, 88,182, 1, 82,149,106, 9, 53,213,159, 83,160,215,239,179,178,182,138,177,150, 7, 31,252, 18,151, 92,254, 2,146, + 67,135, 17,237,162,129,234,177,218,144,231, 25,137, 9,149, 14, 65,177,217, 96,128,120, 65, 91, 75,171,209, 12, 64,149, 57, 52, +138, 70,154,194, 72,192,121,150,142, 28, 97,203,182, 29, 52,210,132, 68, 27,134,131, 65,152,183,220,209,239,247, 66, 25, 95,145, +143, 49,213,166,181,136,205,134,210,183,144,148, 21,192, 96, 28,235,133, 80,130,166,180,142,140, 85, 65, 27,135,146, 26,163, 53, + 62,247,172, 46,175, 49,202,150, 98,167,180, 28,148, 38,207,179, 50, 87, 67, 36, 36,225, 25, 47,101,239, 3,143, 43,217, 0,197, +184, 20, 85, 25, 53,206, 82,175,228, 80, 76, 3,116,181,131, 96,113, 30,197,191, 69, 92,185, 0,156,130,190, 46, 26,208,248, 88, + 62,166,140, 42,245,195,104,148,209,104, 36,129,214, 47, 58,170, 65, 73,173, 43, 69,204,228, 31,135,137,138,210,186,144,160, 56, +190,183, 68,170,213, 25,227, 82,177, 49,144,187,113,153,109,245,125, 44,229,180, 54,193,123,135, 19, 79,150, 57,178,204,145,231, +190,172, 0,242,185, 43,157, 21, 85,101, 7, 85,212,217, 50,214,225, 62, 86,212,148,249, 11,166,208,201, 30, 33,100,193, 83, 86, + 22,229, 24,163, 66,254,131, 53,193,171,206,114, 92,238, 24, 56,143,177, 33,215,167,200,221, 40,238,163,162, 43,160, 73,211,144, + 0, 88, 86, 27,248,192, 12,233,192, 12,129,132, 94, 33, 90,145,121,135, 31,244, 73,173, 33,141,172,128,228,158,102,136, 89, 52, + 46, 0, 0, 32, 0, 73, 68, 65, 84,187,133, 86,138,227,221,117, 18, 44, 43,125,135,145,156, 39,250,135, 73,108, 8, 89,180,211, + 4,131,208,234,204,210,180, 9,198, 11,166,149, 50,114, 67,122,131, 53,218,115, 11,164,237, 5,150, 14,193, 76,179, 69,187,213, + 98, 54, 81, 12,215,214, 89, 95, 94,102,199,194,102, 70,235, 93, 46,219,182, 29,219,108,224, 92,142,206, 50,196,141, 96,243, 22, +140, 79, 25, 29, 63,142,233,180,200,140, 39,153, 79,177,109,139,214, 33, 84,163, 91, 29,146, 70,138, 91,207, 89, 61,182,204,104, + 52, 68, 3,157, 78,139,181,181, 85,150,151, 90, 92,113,197, 85, 60, 54,122, 28, 81,134, 45,139,139, 28, 60,116,128, 70, 83,179, +222,237,177,185,209, 98,235,150, 45,172, 63,126, 8,155, 38,104,113,248, 60,195, 42,133, 53, 10,231, 50,208, 9, 74, 27, 70,131, + 33, 77, 27, 67, 39,202,160, 98,203,106,231, 66, 95, 4,147, 54,131,202,113,193,174,179, 99,229,233, 35, 16,197, 62,200, 69,119, + 47, 57,209,139, 83,138,169,150,164,234,148,160, 82,180,120, 61,121,131,117, 74,171,242,212,113,250,211,110, 48,209, 63,126,242, +223,226,183,102,195,242,187,113, 47,228,208,192, 99,124,163,168,233, 60,188,178,100,232,140,227, 2, 19, 96, 48,238, 43,172,207, + 16,196,171,115,171, 42,253,176, 75, 47,230, 20,185, 10, 82, 1, 68,181, 65,187,216,201, 74, 3, 53, 81,250, 86,206,223,244, 28, + 23,229, 46, 42,100,180, 42, 93,105, 30,164,170,221,220, 42,221,230,166,128,122, 26,152, 67, 94,130, 63,101,152,166,240,208, 54, +154,155, 82,193,151,157,219, 55,232, 31,175,252,134,151,107,162, 89, 79,185, 63,153, 72, 12,173,142,183,168, 29, 47,234,218, 79, + 48, 50,162, 39, 50,200, 50,150,143,175,224,128, 81,158,243,240,163,143,210, 31, 12,104,180,218, 12, 6,195,144,193,234, 92,136, + 91,198,184,106,154, 38, 12,134, 3, 58,205, 86,153,193,110, 98,151, 56,107, 76,232,110,214, 16, 52,138,225, 96,128,119,158,135, + 30,124,144,118,187, 19,122,217,143, 70, 88,107, 24, 13, 7, 24, 29, 12,209,160, 76, 99,226, 88,225,221,169,241,253, 22,188,247, +184,238, 99, 2,142,115,121, 72,250, 19, 41,251, 11,100,153,139,201,101, 62, 94,215,240, 95,106,146,216, 76, 97,220,157,206,121, + 65,124,236, 84,103,198,160, 93,109,162, 82,140,163,104, 35,140, 31,119, 72,172, 26,158, 27, 25,113, 89,150,149,177,246, 2,172, + 11,239,220, 87,107,184, 43,241,246,220,141,195, 13,129,150, 15, 44, 70, 81, 53, 97, 98,205,120,136, 3, 83,122,158,185,119,101, + 13,184, 54, 38,128, 36, 99,246,104, 52, 10,173,110, 11,227, 34, 73, 44, 58,198, 75, 75,138,188,194, 28, 84,141,200, 34, 1,109, +114, 78,138,241,197,100,206,104,100, 20, 61, 6,202, 30, 11,106,220, 35, 99,162, 91,103,108,115,173, 43,250, 65,219, 80,207,140, +137, 6, 78, 30,235,216,167,140,240, 44, 23, 68, 12,248, 17, 9,150, 36, 77,104, 88,131,246, 69,206,203,184, 77,120, 48,148,132, + 36, 77,202,117, 42, 46,143,201,145,141,192, 70,138, 39,207,114,180, 10, 52,178,169,244,181, 80,132, 10, 11,229,130,177,146,197, +184,124,226, 52,189,225, 0, 47,150,129,119, 88,147, 4, 3, 88,192, 15,115, 90,105,194,166,206,102, 18, 45, 28, 91,239,178,186, +190,198, 76,179, 65,195, 41, 90, 45,203,182,133,237,236,220,177,133, 99, 71,142,161, 26,194, 85,151,109, 70,178, 1, 91,230,183, + 99,181,208, 79, 91,248, 92,211,237,174, 50,127,245, 78,124,106,192, 40,196, 1, 46, 71,245,250,152,180, 65,179, 51, 67, 62,200, + 73,182,205,134, 78,120, 6, 52,121,104, 84,229, 5,175, 53,195,110,151, 39,247, 63,134, 21,197, 32,207, 1, 71,179,153,210, 93, +239,242,248, 99, 79,210,108,182, 56,118,228, 40,173,206, 12, 30, 69,127,144,177,180,180, 66,163,213,161,221,110,178,125,235, 22, + 14,254,255,156,189,217,146, 36, 71,154,165,119,116,183,197,221, 35, 34, 19,168, 2,170,186,171,167,187,103, 19, 82,134, 34,188, +227, 35,240,177,240, 98,124, 5,138,144,188, 24,161,112, 70,122,175, 2,144,153,136, 8, 95,108,209,149, 23,191,170,154,154, 71, + 36,170,100, 26, 18, 82,232, 64, 70,164, 47,230,166,255,114,206,119,254,248, 35, 98, 98,208, 66,195,185, 5,189, 34,240, 77,100, + 18, 90, 74,196,213, 34, 50,210, 35, 68,134, 44,160, 13,128, 80,232, 76, 7, 27,200,138,232,124, 64, 72, 60,119,234,181,203,140, +155, 38, 60,165,198, 50,246,182, 27,175, 10,225,180, 63,108,191,218,173,167,191, 64, 92,199,247,227,215,191,244,192,124,255, 0, + 76, 59, 31, 60, 99,251, 84,128,173, 11,100, 59,207,124, 66,130,128,120, 51,202,110,105, 83,169,165,238,221,249,195, 89,129,195, + 48,145, 15,209, 88, 87,252,172, 17,146,129,189, 45, 98,254, 92,167, 94,111, 82, 72, 32,102,213,230, 83,103,239,112,223,171,225, + 44,177,119, 34, 45,182, 98,103,123,255,226, 93, 0, 67,220,176,181, 77,168, 13, 18, 49, 1,164, 20,153, 80,133, 6, 94,146,154, +131,176, 97, 30,180,129, 3,123,187, 65,115, 83, 98,239, 31,216,205, 60,125, 11,132,105, 67, 15,218,194, 44,189, 89, 99,188, 89, +229,236, 70, 78,216,214, 46,109, 16,199, 87,223,147, 50,116, 15, 59,209,221,155, 63,199, 0, 23, 34,250,113, 4,231,155, 7, 59, +196,136,117,181, 96, 76,160, 51, 26,118,153,179, 69, 75, 98,181, 11,148,234, 17,163,196,195,233,128,215,215, 23, 12,125,143,215, +215, 11,237,237,203, 78, 53, 70, 68,231, 33, 33,224,150, 21,201,123, 44, 87, 18,222,176, 16, 16, 83,128, 96,200,138,100, 90, 91, +109,187,115, 58,120, 90, 17, 25,242,129,209,210, 24,185, 84,213, 90, 22,124,160, 3,162, 20,106, 89, 89,207, 52, 29,230, 92, 8, + 8, 65, 54, 61,161,232,160, 93,236, 10,166, 68,222,241,147, 62, 55, 6,208, 90,160,132,249, 52, 92,116, 6, 81,239, 37,109, 55, +219,118,185,155,136,108,179,167,181, 64,150,246,207,128, 19,151,221, 59,151,109, 89, 89,151,145, 15,118, 41, 52,229, 48, 56,215, + 92,131,244,119, 42,174,242,206, 55,238, 62,255, 45,166,181,248,211,233,113,216,252, 25, 34,191,112,101,173, 99, 43, 70,156,115, +187,105, 79,185,182, 67, 44, 7,158,130,214,166,146, 38, 99,140, 88,150, 5, 34, 59, 9,202,206,220, 90, 11,169, 5,198,126, 4, +103,192,106,137, 9, 16,171, 98,158,220, 0,146,211, 10,204, 40, 3,173, 21,221, 91, 89,230, 22, 20,234, 94, 66,126,254, 41, 99, +118, 89, 37,251,129,231,247, 56,255, 25,157,247,228,206,249, 60,217,201, 54, 71, 79, 66, 89,203, 44,140, 49, 48, 66, 33,120, 15, +235, 61, 9,239,138,224,209, 59,104,158, 7,195,130,180, 67,116, 46,208,193,239, 98, 4, 7, 17, 56, 95,158, 95,203,146, 23, 82, + 41,120,112, 40,169,161, 59,133,232, 45, 98,240,248,252,229,130,190,151,144,130, 86, 97,110, 89, 49, 40, 78, 5,164, 7,254,248, +207,127,196,249,114,129,157,110,120,249,252, 9, 18, 30,143, 29,137, 93,163,245,248,252,211, 23,232, 7, 9,121,232,192, 58,133, + 32, 18, 68, 55,192, 77, 19,150,231, 51,186,223,126, 3,244, 3, 77,177,179,150, 73,244, 61,184,209, 72,243, 4,188, 92,160,250, + 3, 46,151, 47, 16, 14,248,112,120,128,240, 51,188,117, 56, 62, 28, 97,109, 0,151, 2,171,243,248,246, 55,191,197,207,159, 62, +231,181, 8,195,243,235, 5,227,241, 2, 46, 21,134, 94, 67, 26, 1,107, 29,116, 55,162,115, 1, 2, 17, 54, 88, 40,169,144,172, +133, 0, 33,164,201, 49,193, 17,243,245,183,216, 0, 31, 81,245, 60, 76, 42,184,192, 32,223,132,129,240,125,218,213,215,187, 78, +246, 21,236, 43,154,195,126,155,171,179, 95, 25, 71,167, 50, 25,104, 25,228,117,228,206,118,221,125,123,184,190,231,139,111, 15, +243,242,225,120,239,103, 42,151,188, 40,235,219,156,181, 24,238, 14,156,125,119,201, 91,245,221,123, 35,224,146,134,197, 0, 68, + 78, 33, 8,205,206,125, 27,241,178,183,211,138, 95,233,210,121,229, 68,147, 32,253, 30,236,243,238,248,122, 47, 82,104, 14,183, + 84, 71,204, 91, 17,246,254,235, 74,157, 79,161,234,229, 0, 27, 38,239,128,193,169,241, 20,163, 6, 61, 32,171,227, 75, 24, 78, +123, 35,222, 30,119,218,144,184, 45,179,155,241,187,215, 21, 85,241, 94,212,184,169, 9,132, 73,213,201, 16,191, 34,194, 44,128, + 17,177,155, 64,149,107,149, 97, 19,113,149,240,160, 90,144,213,199,154,133, 83,108, 91,163,188, 9,146, 73,168, 34,187,159, 63, +253,130,177, 83, 88, 87,139,199,195, 1, 74,221, 72,113,237, 29,188, 40, 62,113,142,195,241, 4,185,208,200, 90, 41,133,235,249, + 5,136, 33,119,232,212, 65,134, 12,249, 40, 65, 36,235,186, 2,145,246,182, 68,126,203, 97, 15,121,116,109,145,114,199, 77, 35, +107, 33, 37, 98, 6, 87,164, 24,193, 19, 65, 89, 2,227, 89, 24,185, 63,116,202,168,154, 10,130,109, 47, 75, 8, 83,150,141, 52, +249,117, 10,156,138,137,196,161,164, 0,227, 6,214,123,240, 16, 32,132,132,103,196,174, 23,249,243,230, 51,103, 92,114,153,139, +157,172,153,201,188,130,214,126, 87, 14,212, 50,165, 41,193, 40,173,253,139,132,222,164,220,102,130,193, 7,255,238, 78,190,144, +221, 56, 74,158, 73,170,187, 97, 42,118,232, 0, 44,229, 95, 17,218,181, 30,241, 86,105, 94, 14,193, 80,137,119, 84,156,172,235, +186,179,230,149,221,185,148, 98, 55,129,144,146,214, 47, 46,120,196, 53, 65, 43, 5,165, 36,164, 52,248,248,241, 9, 96,192,178, + 76, 36,156, 11, 17,189,145, 16, 66,210,193,204, 57, 62, 28, 30, 0,198, 48, 47, 75,134, 67,145,154, 94, 9, 78, 97, 54,121,130, +192, 56,105, 74,188,247,224,140,195, 89, 71, 7,187, 32, 75, 89,215, 27,112, 46, 41,135, 32, 3,188,220,106,113,181, 43,148,224, +152, 67, 64,223,245,232,250, 1, 49, 70, 88,107,161, 20, 9,122, 75,160,205,186,174,232,164,198, 48, 24,116, 93,135,224, 3, 98, +182,222, 41, 69, 54, 54,231, 61, 61,151,204, 4, 40, 2, 66,145, 69,188, 28, 9,156,251,236,201,166,251,138,115, 30, 8,145, 44, +111, 82,100, 55, 8, 0,151,224,167, 5,227, 96,208,247, 3,184,228,120,189,205, 88, 22,139,225,248,128, 37,246,152, 87,139, 63, + 12,223,225,227,168,112,250, 48,194,135, 5,236,242,130,197, 95, 96,216, 9,235,229,138,238,216, 65,118, 6, 24, 53, 4, 79,152, +127,249, 5,189, 18, 72,125, 7, 88,135,148, 60, 24,215,128,236, 9,135,251,252, 35,248,101,130,232, 62,192, 79, 14, 15,102,196, +186, 0,231,151, 23,124,126,126,134,231, 9,195,233, 1, 63,125,254,132,117, 94,241,135,223,255, 30,183,219,140,105, 89,145, 66, + 0, 67,196,151, 47,207,248,171,191,254, 43,132,232,224,163,199,225,112,192,109,182,120, 26, 6,136, 96,225,111, 30,146,209,202, + 75, 74, 1, 33, 57,253,221, 49,100,190, 72, 33, 34, 74, 88, 79,171, 25,135,132, 41, 49,136,177, 27,126,216,143,119,183, 94, 4, +239,141,163,255,135,118,192,236, 13,183,124, 67,154,147, 79,184,132, 9,220,239,208,222,219,231,191, 17,131,181, 59,209, 20,119, + 69, 74,123,128,108, 31,238,175,117, 87,109,184,200,190,232,120,111, 20,248,181,175, 45, 32,166, 8, 77, 26,143,122,225,211,223, +165,149,177,255,129, 81, 60,218,248,192,180,247,184,178,118,143,206,246, 99,100, 94, 9,188, 44,251, 74,211, 87,223,207, 24, 99, + 78, 10,203,146, 58, 46, 32,133,202,157,163,216,184,237,108,255,123, 42,244,162, 96,168, 88,172, 99,120,158,217, 5, 12,236, 77, +156,207,215,118,235,239, 64, 19, 50,111,255,235, 41,127,239, 61,159,242,126,252,218,238, 62,181,100,197, 50,209,204, 98,123, 81, +113,195,251,196,185,118, 92, 92,186, 17,128, 97,186, 93,240,248,112,194, 48,244,164,116,207,156,119, 58, 12, 36,132,228, 56,158, +142, 56, 28, 14,136, 49,212, 93,112,111,122,196, 76,175, 27,134,177,138,194, 74,221, 90,212,213,197, 46,165,132,132, 96, 84,197, + 11, 78, 30,107,169,120,245,241, 23,251,216,110,151,155,147,233,116, 78,109, 43, 65, 42,229,128,187,215, 58,112,145,119,191, 5, +107,154, 34, 65, 83,132, 32, 1, 85, 14, 47, 41,201,124, 68, 21,163, 34, 89, 10, 1, 41, 36,148, 80,116, 67,138, 33,139,169, 98, +245, 79, 87, 69,118, 62,200,203,174,191,221, 57,151,251, 67,129, 11,165, 12,220, 72,237,245,159,139,118,158,167, 26,200, 69, 76, +185, 74,138,109,148,246,207,132,158, 45, 5, 68,140,161, 2,121,218, 53, 64,123, 47,217,114, 18,248,206,195, 95,224, 68,156, 23, + 64, 12,117,197,125,223,215,199, 30, 2,193,111, 74,247,189,174, 22, 49,146, 82,218,104, 13,103, 29,166,121, 6, 99, 9,175,175, + 47, 88,150, 5,199,177, 3, 67,132, 82, 2, 93,103,224,188, 67, 76, 30, 92, 48,248,224, 0, 22,209, 15, 29, 66,112,132, 52, 77, +100,187,227,130, 99,153,167,124, 79, 68, 38, 32,122, 12,195,128,135,135,135,236,195, 7, 68,126,157,157,119, 72, 41,194, 46, 43, +188,179,144, 74,162,235, 58, 8, 46,209,153, 14, 66, 42, 88, 75, 62,112, 99, 52,148,146,249,253,163,247, 67, 10,137, 24, 28, 49, +241,157,219, 68,152, 69, 15,194, 5, 77, 77, 98, 32, 69,124,162, 61, 48,229, 15, 16, 69,145, 44,142, 17,178,215,240, 41,194,122, +151,167, 65,128, 54, 18, 49,122, 76,203, 2,159,157, 45, 99,215, 67, 11, 1,248, 0,149,195,101, 2, 18, 14,167, 39,220,110, 51, +122, 35,241,159,255,254, 15,120, 24, 36,188,159,161, 68, 66,176, 43,158,158, 62,226,233,227, 7, 48,163,225,167, 9, 76, 75, 48, + 9,112, 41, 33, 4,135,237, 56,244,183, 31,137, 47,176, 92, 33,250, 17, 44, 36,240,152, 32, 83,130,212, 10,184, 5,252,244,255, +254, 19,194,205, 34, 6, 6,101, 6,252,233,231,159,241,248,241, 3, 68,182, 61,122,235,177, 46, 43,184, 16,120,126,189,162, 27, + 6,132,224,208, 15, 29,180,214,184, 77, 19,124, 76,184, 92, 38, 44,215, 27,190,233, 59,140,130,193,205, 11,180, 82, 8,222,225, + 48,246, 88,115,114, 97,200, 83,181,152,104, 18,152, 24,137,107, 87, 31,177, 50,129, 63, 94, 23,136, 83, 55,254, 16,239,110,164, +156, 53, 62,236,108,104,122,239, 64,255,181,131,168, 61, 88, 99,138, 25, 52, 74,255,148, 94, 43, 34, 3, 75, 50,142,113, 75, 3, +195,157, 58,125,207,153,223, 58,248,141, 59, 79, 95,241,171, 54,184,251,239, 85,214, 56,123,155, 81,195,192,222, 60,199,251, 67, +125,207,137,190, 63,212, 9, 54,193,179,205,139,151,220,109,108, 81,173, 91,180,201,215,191,190,246, 60,246, 40,216, 45, 93,237, +189, 3,173, 30, 58,119, 59,110,114, 26,198,221,222,253,107, 83,148,194,148, 47, 86, 58, 33,228,118, 99, 76,121,225,192, 54,177, +161,224,105, 83,144,215, 47,182,115, 69,180, 46, 51,252, 10,177,112, 87, 76, 50, 52,163,119,126,183,143,103, 59,182, 1,208, 90, + 35,177,193,120,176,207, 19,104, 85,252,169, 69,218, 98,235,208, 25,163,231, 83, 38, 17, 53,150,160,137,167, 21, 69, 29, 95,199, +248,140, 48,192, 33, 96,158,174,232,123,131,241,112,192,249,114, 1, 18,195,241,112, 68,223,119,228, 59,205, 52,178,105,154,104, +244,137, 4,109, 52, 69,215, 34, 65,155, 14,203,178,108, 17,233,130, 99,117,150,118,187,156,103,101,118, 14,104,137,148,204, 70, +234,118, 58,184,124,230, 66,167,166,160, 46, 65, 77,165, 67,111,197,102,117,207,126, 55,230,142, 49,194, 89,151, 15, 64,178,156, +209, 77, 94, 86,206,119,138,168,135,122,240, 1,198, 24,168, 92, 52, 32,131, 83, 10,165,145,113,212, 2,164, 88, 50, 83, 62,144, +247, 22, 45, 84, 54,124,204, 40,223,216,192,131, 82,158, 62, 20,101,121,140, 4,135, 41,239,183, 16, 18, 74,234,234, 87, 37,155, + 96,193,213,102,156,110,198, 6,135, 72,120, 99,173,245,190,160,201,239,115, 59, 1, 76, 57,156,188, 76,128,138,247,220, 24, 93, +175,197, 16,124,157, 14,148,169, 0,137,242, 40, 82,214, 24,131,190,239,235,216,189, 51, 26,135,195, 0, 37, 5, 30,142, 7,244, +157,129,150, 2, 82, 16, 14,116, 93, 22,140, 67,143,195, 56, 82,199,188, 44,116, 87,141,200, 42,246,132,105,154,177,204, 14,206, + 90, 34,224,229,112, 32, 6, 96, 24, 6,204,243,132,101, 89,112, 58, 29, 96, 58, 3, 31, 61,152, 32, 21,188,200,151,191, 82, 10, + 46, 23, 78, 70,107, 4, 31,225, 86, 7,239, 92,166,202,209, 97,219, 25, 3,163, 13, 21,108, 74, 81,130, 88,190,134,188,243,240, +214,213, 27,185,181,150,120, 5,117,252,158, 50, 51,131, 33,248,144,135,186, 17,224,140, 96, 75, 57,190,213,123,139,224,125, 78, +150, 76, 96, 66, 34,228,207,165,179, 43,180,228, 24,187, 14,167, 67, 7, 36,135,224,102, 40, 35, 96, 12,199,114,253,140,239, 63, +244, 56, 14, 9,122, 16,136,243,132, 65, 31,208,141, 39, 48, 70, 40, 97,230, 3, 68,167, 73, 35,179,102,216,142, 20,224,198, 32, + 5,155,109,191, 26,225,229, 21,105,153, 50,118,216, 35, 37,141,244,124, 5,151, 6, 63,255,252,140,227,195, 7,252,233,167, 79, + 25,203,155,192, 66,192,195,120, 0, 24,217,205,150,213,195,135,128,161, 55,112,206,162, 31, 7, 72, 73,209,172, 92, 40,104, 46, +193,237,140, 35,103,120,236, 7,172,243,138,126, 28,225,252, 68,164, 63, 41, 41, 13,210, 57,250, 60, 39, 86,211, 11,215,144,112, +245, 12, 63, 94, 23,136, 67, 55,254,208, 70,111,238,186,186, 44, 94, 43,157,230,123,221,207,215,148,203,233,142, 45, 94, 82,149, + 80,111,162, 45, 48, 36,127,197,180, 75, 21, 67,179, 91,175,140,242,250, 59,247,157, 89,217,231,214,113,113, 99,107, 77, 59,128, + 78,164, 12,242,119, 70,251,117,195,158,216, 27,248, 77,107,233,251, 53,245,117, 41, 14, 98,179,179,221,145,234,107, 80,247, 95, + 66,228, 75, 95,221, 51,167,134,192, 86, 35, 83,223,217, 33,115,190,249, 95, 25,107, 39, 49,177, 30, 88, 96,111, 39, 6,187, 27, + 88, 42,222,114, 14,206,201,151, 93, 38, 26, 40,234,242, 24, 42,193,106, 43,152, 18, 1,212, 50,170,148,231, 49,113,249, 57, 81, +146,218, 10,174,156,237,119,231,239, 78, 14, 18,219,237, 42, 83, 98,119,187,238,253, 4,160, 36,222,148,117, 7,103, 28,239,201, + 59, 88, 35,209,103,205, 26,129,231,238,124, 11,162,217,126, 79,187,163, 23,124,243,227,111,224, 19,138,139, 13,222, 66,107,137, + 63,252,205, 31,160,148,198,243,243, 47, 56, 12, 61, 18, 34, 86, 79, 59,209, 97, 24,113,187, 94,225,125,168,228, 52,151, 71,239, +171, 93,225,125,128, 84,186, 38,152,133, 24,178, 63,121,191, 91, 46,210, 7,231,108,165,202,197,196,106,152, 15,242, 24,188,248, +180, 89, 83,248,181, 19,169,251, 78,189, 32, 92,169,104,219, 8,133, 60, 79, 36,164,212,180, 46, 97, 27,159,128,115,158,209,206, + 44,231, 50,160,250,154,193,182,117, 2,249,178,233,171, 8, 64, 91,154, 28,238,216,245,177, 65, 29,151,201, 79, 97, 51, 72,169, + 43,219,225,126,114,213,254,255, 74,137,186,250,104, 71,253,117,117,116,183,150,242, 25,215, 90,254,108, 41, 96, 40,144, 37,230, + 41, 7,207, 19, 24, 13, 6, 98,187,151, 48,172,237,245, 44,142, 3,149, 39, 48, 30,211, 52, 33,198, 80, 51, 14, 24, 75,144,138, +103, 39, 3,141,194,199, 97, 68,204, 93,190,115, 14, 33, 4,140,195, 8,173, 53,132, 36, 44, 45, 7, 48, 12, 35,198, 97,160,245, + 10, 24, 98, 72, 89, 61, 95,232,132, 20,247, 43,165,200, 43, 2, 6,211,153,202, 47,144, 66,192, 40, 67,147, 18, 46,192,165,204, + 43, 32,149, 89,232,168, 0,148,132,136,101,153,225,203, 72, 61, 37, 24, 77, 83, 60,173,116, 62,220,105,197, 67, 69, 0,242,251, + 26,234,189,197, 57, 7, 95,116, 1, 62,228,148, 75, 58, 11, 56, 24,122, 99, 32, 25,131, 86,146, 10, 7,173, 9,128,163, 53,148, + 20, 0,143,112,193,194,217, 25,138, 39, 60, 29, 58,124,115, 60,224,177, 31,112,253,229, 5,235,229,138,135,195, 8,228, 41, 70, +127, 26,160, 30, 6,120,120,204,231, 11,204, 55,143, 8,215, 27,120, 2,146,117,192,109, 65,180,142,212,251,193, 99,241, 11,116, + 63, 32,121, 14,255,203, 47,224,154,195, 49, 6, 8,137,248,122, 67,178, 17,209, 3, 63,254,248, 5,156, 27,188,188, 92,240,205, +199, 15, 24,123,147,247,225, 0,151, 10,231,243, 21,224, 18,151,235, 21, 74, 41,112,193,170,234,252,124,157,225, 60,192, 66,128, +242, 22,143, 82,224,168, 13,110,183, 25, 93,111,192, 68,194, 60,205, 20,211, 28, 60, 66,140, 13,167, 67, 16,113, 50, 50,220, 60, +199, 47, 54,179,223, 83,220, 70,215, 37, 65, 43, 33,147,202, 18,175, 42,109,206,183,240,142,138,203,188,251,135,224, 2,185,146, +206,190,207,128,210,169, 55,209,156,205, 1, 21, 83, 36, 48, 1,167,145, 74, 81, 94,165, 98,183,203,221,125, 77, 27,163, 74, 35, +255, 93,205, 87,153, 3, 48,212, 36,180,218,137,101, 50, 25,120,193,184,242,221,228, 54, 53,227,106,158, 43,143, 84, 90, 26,196, +253,238,151,181,211,130,252, 88,211,118,200, 20,212,100, 10,233, 46,180,246,110,199,253,103, 45,105, 44,231,103,167,157,119,188, + 93, 53,144,100,184,164, 59,221, 9,188,120, 3,173, 64, 34,206, 74, 3,147,160,233, 33,171, 34, 31,178,181,196, 55, 30,133, 80, +102,190,137, 83,101,205,196,166,106, 47,217,213,249, 90, 40,137, 80,172,250,202,219,192,214,230,181, 76,239, 72, 18, 24,165,180, +177,106,104,103, 77, 93,151, 42,161, 10, 57, 57,172, 74, 5, 10, 14,177,124, 47,231,129, 39,132,230,103,202, 9, 22,107, 55,125, +239, 42,104,199,231,228,187,103,100,215, 99,205,116,163,181,235,113,158,115, 2,248, 86, 12,166, 13, 48,196,184,168, 69,100,240, + 14,255,254,239,254, 22,243,237,130,101,186,225,219,143, 31,224,220,138, 24,232,102,183,206, 43, 98, 32,254,123,201,172,174, 26, +140,124, 33,115, 38,114,135, 64,196,176,224, 3, 4, 35,230, 54,203,227,113, 41, 57,152, 32,159,188,146, 10, 37,224, 54,100,255, +112,140, 17, 41, 68,168,172, 28,231, 82,228,180,174,205,181, 32,164,216, 20,255, 57,110,147, 11, 78,212, 48, 73, 8, 86, 33,120, +245, 99, 11,145, 69,147,172, 32,121,233,218,244,209, 87,133,116, 68,170, 9,103, 33, 6,162, 97, 57,159,209,194,219, 8, 39,230, +235,186,136,228,182,130, 29,164,227, 72,121, 52, 47,228, 54,105,200, 69, 21,203, 24,211,152, 39, 14,111,249, 1, 60, 79, 54, 66, + 78, 62,139,187,221,188,200,202,246, 80, 10,165, 70, 88, 26, 34,229,130,103,105, 57,100,142, 90, 45, 9,130,198,232, 10,119, 90, + 22, 11,187, 58,196, 72,217,239,101, 74,226,115, 51,194,243,228, 96,154,103, 4,231, 32,121, 66,215, 41,116, 90,224,116, 28,113, + 60, 82,167,222,247, 29,148, 82,152,110, 11,230,121,193, 48,244, 88,237,146, 71,240, 1,211,188, 64,104,218, 85,171,252,188,125, + 62, 24,237,106,177, 46, 83,222,161,211,227, 85,154, 32, 51, 82, 9,218,221,107, 5, 41, 41, 54,182, 51, 26,189,238,154,162,135, +196,133,222, 59, 40,173,161,141, 34, 0, 81,103, 42,112,135, 53, 40,112, 89, 38, 45,177,172, 67,136,239, 33,149,130,233, 58, 8, + 33,161,149,206,159, 19, 15, 33, 56,188,115, 85,159, 33,179,144, 83,230,192,155,226,100,138,206,226,113,232,112,234, 58, 40, 78, + 77, 89,223,107, 32, 56, 60, 29,143,128,163,180, 68,173, 12, 82,138,152,166, 43, 98,112,248,254,233, 17,255,233,239,255, 30,255, +240,175,255,130,241,241, 1, 99,215, 65,135,128, 56,205, 8,158,129,153, 1,235,243, 11, 12, 4,210,101, 66,124,189,129, 45, 14, +108,177,184,124,121,134,246, 12,188, 31,144,192,193,149, 65, 92,110, 72, 97, 69, 24,122,232,161,167,235,207,115,132,217, 34, 76, + 22,243,117,133, 95, 35,190,124,254,130,111, 62,126,196, 50, 47, 72, 9, 20,241,203, 56,166,121, 6,192, 48,223,230,154,182, 89, +120, 12,231,219,130, 16, 18,100,138, 16, 49,224,113, 28,193, 66, 68,112, 43, 20,223, 10, 75, 41, 84, 21, 92, 11, 73,247, 64, 23, + 73,218,189, 88,224,186, 4,138, 1, 59,152,195, 15,228,101,140, 57, 0,128, 85,198, 58, 71,238,172, 74,203, 82, 41,107,251,253, +120,172, 29,227, 54, 14,163,160,178, 50,102, 79,136, 44,238, 70,173, 49, 6,148, 98,162,138,224,242,190,147, 53, 34,180,162, 52, +143, 44,100, 14,249, 94, 56, 94,252,188, 49,165, 55,143,109,167,153,103,187,224,214,186, 83, 78,119, 66, 44,198, 80, 97, 60,247, +132,188,189,230,236, 94,101, 31,247,135,109, 62,236,144,246, 49, 38,205,171,182,251,247,237,144,190,243,213,167, 86,139,157,246, +118,152,156, 50,151,238,152,230,117,151,206, 25,209,159, 56,175,126,113,214,250,198, 27, 91, 53, 82, 34, 26,108, 33,155,101,146, + 94, 40,176,141,140, 74,229, 76, 2,188, 20,122,145, 94,135,230,181, 47, 16,140, 86, 8, 87,108,144,229, 53,223,240,177,119, 2, + 63,214,218, 18, 75, 81,179,253, 79,204,111,124, 76,119,239,197,110, 71,206,106,113, 81,118,166, 27,177, 14, 13, 56,233,253,233, +196,118, 45,150, 68,210, 22,237,123,175, 79,192, 22, 84,204, 54, 97, 29,178,194, 56,178, 4,134,152,147,247, 18,254,240,251,223, +225,122, 57,211,104, 14,192,233,116,192,178,206,208, 90, 83,237,200, 57,172,115,164, 14, 22, 57,178,182,218,182, 4,141,221, 66, +132, 80,162, 22, 61, 5,243, 42, 21, 37,254,113,193, 41, 81, 47, 39, 76, 21,176, 18,141,245,177,227,173,151,175, 66,156,107,189, +222,101,188, 93, 60,223, 33,209,138,140,246,185,177,134,144,132, 16,176, 44, 11,233, 1, 66,192,178,174,181,203,246,222, 55, 19, +133,184,165, 3,102, 52,108, 33,155,165,252, 60,200, 6, 23,191,226, 88, 96,217,243,206, 16,163,191,243,195, 16,210, 85,137, 34, +180,162, 67, 98, 19,194,198, 76,109,204,214,221,244,150, 48,183,125,166,238,175, 45,177,225,144, 99,128,148,148, 56,214,117, 10, + 90, 82,198,182,148,116,160, 25,173,161,132,196, 97, 28, 97,140,201, 97, 44, 60,107, 31,120,101,228, 35,209, 14,190, 51, 26, 70, + 75,244,125,135, 97,232, 96,122,141,152, 40,178, 54,166, 4, 99, 58,138,111,133, 64, 76, 17, 74, 11, 28, 14, 3, 86,187,162, 31, +122,204,203,140,105,186,210, 65,157,155, 21,202,184,183,248,240,244,152, 9,112, 2,195, 48, 82, 6, 60, 35,129,101, 65, 22,120, +151,211,244,154, 66,177, 51, 93, 93,117, 48,206,208,117, 29, 21,104,193,195,121, 7,187,174,213, 50,168,141,105, 86, 82, 28, 41, + 36,132,136, 92, 48,162,250,236,121, 46,250,104, 37,146, 54,140,113,158, 0,109,201,118,165, 80,102, 4,164, 97, 9, 41,121, 24, + 33,240,215,191,251, 29,144, 2,166,117,129,139,100,193,156,174,183, 92, 64, 11, 88, 31,225,124,128,233, 12, 62,124,252,128,231, + 47,159,112,155, 39,124,190, 78,208,166, 7,124,196,111, 30,159, 96,184, 4,227, 10,126, 90,193,124, 64,184, 46,224,137, 35, 44, + 14, 10, 2,112, 17,183,231, 51,226,109, 5,143,192, 50,175, 20,194,195, 3,212,177,135,139,180, 94, 72,214,194, 45, 1,176, 1, +243,207,207,208,188,199,229,229,134,105, 90,208, 13, 61,126,121,254,130,241,112, 64, 74,156,220, 46, 92,224,245,245,156,115, 31, +202,109,159,225, 48,142,152, 87, 7,239, 35,122, 37,192,189,199,168, 52,252, 50,131,167, 8,165, 41,131,157,138,213,152,175,245, + 60,233, 74, 64, 4,135,243, 9,171, 75, 88, 60, 53,190,212,169, 55,135,122, 9, 45,217,236, 72,172, 65,176,110, 68,176,221, 81, +213, 28,170,169, 5,170,182, 9, 90, 41,108,227,241, 60, 90,217,163,101, 0, 81, 63, 66,108,103,215, 34,188, 96,115,184,221, 67, + 67, 50,187,155,186, 79,254,118, 79,219,144,106,121,217,113, 51,142,247,220, 74,239, 81,109,217,206,183,221, 10,237,246,194,172, +214, 15,191,183,214,225,174,187, 78,119,226,190,253,247,139, 58,127,255,179,241,206, 29,176, 23, 6,182,121,247,101,158, 93, 87, + 38,117,172,135, 38,107,190, 21,234,109,175, 77,219, 93,111,175,109, 89,130, 11, 48, 33, 51, 99, 62,143,240,203, 99,102, 13,174, + 38,165, 93, 22, 58,231, 69,152,149, 26, 37, 58,175, 57, 2,245, 49, 52, 73,121,219, 53,215,196,129,178,141,225, 94,127, 54,189, + 53, 58, 50,126,119,237,166, 18,187,139, 59,109,198,251,182, 55,158,215, 18,140,109, 44,129, 54,117,142,109,115,235, 77,195,192, + 83, 19, 6,180,173,123,106,244,109,136,248,155, 63,252, 53,142,135, 3,110,183, 11, 24, 79,248,253,239,190,199,183,191,249, 45, +172,181,152,215, 21,171,119, 20,230,226, 86,244,125, 7,239, 45,237, 58,149,198,188,172,136, 89, 53, 94,120,236,164,244,166,137, +147, 50,134,172, 83,193,109,233,122, 89,208, 19, 66,160,157,101, 86, 59, 23,149, 54, 69,144, 18, 28,132,160, 46,161, 30,184,180, + 95,166,131,222, 90, 11,231, 72, 73,205,193,105,156,234,233,239,177,206, 17,243, 60,211,210,202,110,254,126,250,180,121,177,243, +168,159,109,136,225,132,180, 99,155,223,255,108,241,110,111,197, 62,169,200,137,246, 70, 72, 94,169,100, 62,172,182, 42, 48,198, + 64, 74,172, 6,237,204,114,197, 88,126,103,137,232,221,236,115, 84, 8, 73,158,167, 2,249, 49,107, 45, 41,124, 36, 69,112, 70, + 19,205,227,113,128, 49, 10,198, 24,116, 93, 15,100, 33,154,247, 30, 90, 75, 60, 62,158, 48,244, 29, 66,240,248,230,219, 71, 72, +201, 48,244, 26,167,211,128, 97,208, 56, 12,116,152, 31, 14, 35,249,223,179,170,124,154, 23,204,243,138,235,245,138,195,241, 1, + 66, 48,132,232,160,141, 68, 63,208,168,220,174, 22,227, 48,208,212,195, 19,130,215,152, 14,227,120, 64, 76, 1,151,243, 11, 14, +199, 17, 12, 60, 11,217,168, 59,150, 74,214,233, 68, 8, 1, 34,139,215,202, 61, 56,165,132,195,225, 0,153,177,175, 92,108,227, +249, 18, 12,195,242,207,148,223,105,140,174,193, 58,148,171, 78,100, 59, 10,240, 33, 6,252, 50, 47,176,203,138,148, 72, 20, 40, + 53,137, 5,133,216, 50, 50,170,197,146, 6,170,181, 33,244,206,227,229,229, 5,145,113,248,148,224, 35,224, 92,130,117,129, 4, +107,130,147,136,207, 7,216,117,197,124,155, 17,144, 48,199,132, 47,207, 11,146, 87, 64,224, 88, 47, 55,196,213,194, 36, 14, 1, +160, 63, 28, 33,181, 6,180,134, 84, 26,203,188,226,246,114,129,228, 10, 82, 27,168,135, 7,136, 78,129,249, 8,255,242, 74,220, +135, 0,168,174, 67,178, 43,228,225, 8,251,233, 25,183,127,251, 2, 4,137, 63,253,248, 5,243,234,112, 60,157,240,242,250, 74, + 41,125,222, 35,250, 8,231, 61,172, 11,240,137, 17,245, 17, 12, 90, 41,184,101, 69, 55,140,248,244,229, 11, 30,134, 30,194, 59, +244,156, 67, 38, 10,127,225, 82,192, 6, 58,212,157,181, 57,187, 33, 79,197, 25,173, 35, 87, 27,224, 66,132, 13,148, 22, 41, 14, +102,108, 14,117,250, 64,240, 26,194,177,193, 58, 91,182,121,218, 9,168,210, 78,208, 86, 59,235,114, 32,148,195,152,189, 99, 55, +111,104,167,180,187,228,187,191, 43,229,155,100, 44,129, 27,173,112, 46,135, 77,180, 86,173,132,237,240,143,109, 55, 91,200,164, +216, 43,219,217, 29,130,245,237,161, 94,186,209,182, 83, 46,234,232, 61,133,108, 75, 26,139,123, 93, 0,246, 66,172, 90,244,220, +125, 47,101,143,102,220, 37,149,165,170, 63,168,127, 31,218, 84,179, 80, 11,139,216,174,223,155,195,135, 11,190,141, 85,249, 59, + 7,214, 93, 7, 90, 15,191, 18, 18,145, 82,115,168, 19, 14,147, 18,151, 0,164,112, 23,203,155,106,102, 64,155,251,179,197, 61, +166, 93,151,190,105, 56, 74,215,203,114, 1,194,118,186,137,141, 19,191,219,150,103, 4,192,157,189,178, 81,174, 55, 77, 95, 67, + 84, 75, 77,176, 5,118, 62,231,150,204,197,119, 99,246,253,129, 94,159, 79, 11, 83,105, 74, 17,222, 88,250, 56, 24, 88,164,221, +246,245,124,129,146, 2,171, 93, 49,205, 87,252,252,233,103,124,250,249, 51,110,243, 12,166, 36, 86,239,129,108,115, 75, 89, 35, +226, 92,192, 52, 45, 80, 90,195,102,225,147,115,142, 98, 98,243,126,178,236, 51, 67, 22, 23,145,176, 44,102, 11, 76,170,126,240, +152,232,123, 59,103, 8, 47,211,143, 28,149, 26, 66, 77, 18, 36, 65, 78,202,211, 2, 26,173, 22,149,124, 8,212, 81,242,172,228, + 47,153,222,101, 47, 95, 10,202, 86, 96, 86,110,222,177,137,190, 5, 40,244,132, 68,100,226, 77,129,181,177,244, 75,138, 32, 50, +219,220, 83, 88, 12,103, 91, 20,111,126,254,228,139, 14, 53,180,164, 8,217,106,151,147,245, 59,219,250,140,174,137,224, 55,116, + 44,217,172, 24, 14,135, 49, 99, 85, 25, 78,135, 17,199,227,136,135,227, 1,130, 3, 74,114,216,117, 1, 18,195,151,207,191, 96, +186,205, 85,236,229,236,130,121,154, 16, 67,192,233, 56, 98, 89,103,112, 66,233, 65, 73, 6,173, 21, 56,163,199, 81, 92, 7, 69, +203,160, 85, 71,221,181, 84,120,126,126, 65, 63, 24, 76,211,132,148, 8, 64,212,247, 67, 38,184, 37,244, 29,169,168, 99, 32,150, + 64,223,245,232,187, 46,175, 45, 19,198,161, 39, 14, 63, 18,148, 34,203, 26,237,239,121,181,227, 21, 85,188,119,182,190,191, 82, + 81,209,100,173,197,178,204,208, 70, 99, 28,135,188,215,167,204, 2,109, 52, 21, 28, 89, 84, 41,165,162, 34, 75,138, 74, 49, 12, + 72, 57,132,136,194,114,188,115,176,214,214,144,160, 66, 79, 44,126,118, 42,164,242,244,143,151,220,240,132,197, 58,172,214, 35, + 50,202, 93, 16, 82,215,105,145,143, 33,175, 54,128,161, 31, 97,116,135,190,239, 96, 67,128,247, 28,214, 70, 12, 67,143,195,208, +225,122,123,197,249,250, 74,122,138,224,113,190,156,241,249,243,103, 92,206, 87,192, 83,240, 77, 55,142,232,143, 39,204,211, 13, +221,227, 35,248,233,144, 53, 7, 1,246,182, 66,105, 1, 4,138, 76, 78, 63,190,192,189, 44,248,252,233, 21,159, 62,189,226, 50, + 45, 96, 82,225,120, 58, 82,145,189, 56, 76,215, 43,110,211, 10,101, 70,204,214,194,121, 90, 89,117, 74, 3,193, 67,247, 29,214, +117,193,177,239,192,157,135, 97, 12,134, 17,220, 75,114,134,152, 40,226, 89, 9, 89, 63, 35,229,254,182,186, 8, 23, 0,231, 35, +124, 17,191,214, 67,157,197, 55,204,245,214,214,134,156, 44,150,129,115, 53, 15, 59,229, 88,202, 18, 85,153,216, 94, 69,156,106, +184, 74,122,183, 45, 46, 55,150, 18,232,144, 88,177,191, 53,211, 0,150,238, 24,239, 27, 32, 36,177,150,195, 94,163,215,235,252, +140,181, 65, 42,216,110,200,104, 71,239,205,191,179, 76, 73,219,175,184, 55,216, 73, 42, 38,243,124, 63,136,119,144,158, 54, 47, +188,174,197,155,215,170, 21,242,181,197, 64,108,254, 91,186, 83,182,239,159, 91,188,243,228,163,118,102, 40, 19,139,156,242,182, + 9,229,242, 78,189, 30,172,123, 78, 61, 26,218, 93, 35,158,104, 44,135,133,129, 94,130, 32, 8,114,145, 16,155, 36, 63,182, 83, +187,139,230, 49,180,133, 91,233,208,217, 78, 84,214,190, 15,236,173,189,173,104, 21, 90,162, 94, 76,149,245,207,246,188,214, 55, +157,248, 27,119,194, 87,172,132,237,122,162, 22, 32,119, 93,122,187,171,225,121,222,196,242,206,187, 20,132,244,213, 4,111, 36, + 42,148,151,117, 65,136, 30,143, 79, 15, 56,156, 70,252,242,229, 25,183,105,193,151,231,103,112, 37, 33,181,130,143, 1, 15, 15, + 15,152,174, 55, 72, 73,163, 55,206, 5,156,117, 96,160, 61, 36,203,216,211, 54,244, 4, 41,213,236,109, 6,150,133,114, 12,214, +121,164, 72,113,164, 33,199,183, 22,203, 90,202, 63, 3,208, 4,160,122,194, 27, 37,124,193,178,106,165,106, 23,234,131,207, 1, + 65,212, 5,202,188,127, 13, 25,223,122,223,157,151,101, 83,113, 9, 20, 49, 98,153, 6, 72,165,118, 69, 64, 89, 15,180, 19, 46, +138, 17, 70, 94, 11,133,170, 52,151, 66, 34,100,161, 86, 27,177, 74,113,167, 91, 84,106,235,121,175,154,141,148,170, 54, 32,165, + 88, 11,136,195,225,128,161,239,160, 36,240,240,112,192,241, 52,146,159,220, 89, 58, 60, 57,199,227,233, 17,211,116,197,178,204, + 88, 23,135, 16,136,141,158,114,134,124,200,138,247,206, 24,164, 72,182,182,174,163,131, 49,132,128,215,151, 51, 46,151, 9,235, +106,243,148,130,213,231,180,174, 14,231,243, 5,175, 47, 23,226, 8,164,136,167, 15, 15, 72,113, 11,186,209,170, 35, 7, 69, 71, +123,119,107, 87,104,101,112,189, 94, 49, 12, 29,180, 86,232,123, 3,198,128,167,199, 39,104, 67,157, 53,141,247, 29,150,101,161, + 9,107,134,220,108, 32, 42, 58,104,215,117,134,115, 14,125,223,213,247,211, 59,135,174,235,201,206, 42, 68, 93,105, 80,216,148, +168,156, 1,206, 24,148, 84, 89, 55,225,234, 20, 38,134, 64, 43,135, 78,215,247,155,138,149,141,105,193, 57,135, 96, 91,147,195, +165,132, 11,100,135, 19,146,146,222, 74,161,169, 36, 69,149,250, 68, 49,183, 82, 8,172,203, 76,194,214, 72,194, 82,199, 24,110, +118,194,199,143, 15, 80, 50,226,155,111, 30,113,124, 60,226,199, 95, 62,227,227,227, 9,227,227, 9, 31,190,251, 13, 62,252,238, + 59, 72, 45,208,141, 61,120, 39, 33,250,236, 89,121, 0, 0, 32, 0, 73, 68, 65, 84,159, 14,176,203,132,100, 45,160, 36,248,113, + 0, 55, 6,230,233,137,214, 73,211, 4,246, 58,195,254,116,193, 79,255,244, 39, 68,175,112,190,173,176,129,225,227,183, 31,209, +245, 29,120, 2,122,109,112, 60, 30, 17,144,240,203,249,130,217, 18, 40, 72,107,133,193,104,116, 70, 33, 34, 66,106,137, 81,105, +196,121,129,140, 9, 60, 70, 26,191, 11, 18,219, 82,230, 3,175, 43,138, 16, 3, 66, 2,156,245, 0, 4, 86, 23,234,154, 84, 28, +187,195, 15, 85,177,157, 15,140,234,167,110,226, 49,219,208,149, 88, 58,251, 20,247, 35,241,102,247, 92, 58,163, 54,213,109, 71, +120,107, 83,179,138,229, 88, 20,229,248, 62, 98, 51,167,114,224,190,183,109,211,224,182, 67,146,189,139,142, 45,187,213,162,188, +141, 95,163,210,230, 15,123, 59, 6, 79,105,163,174,109, 0,153,124,179,105,145,145,119, 67,255,123, 11,220, 27, 97, 92,162,209, +103, 42,157, 89, 22, 25, 33,197, 55, 73,114, 89,125, 87, 31, 35,107,118,236,213, 67,222, 20, 84,188, 57,212, 75,167, 89, 71,226, +104,211,234, 54, 6, 61, 43,130,188,102, 10, 18,179,223, 22, 77,226, 19, 23,172,250,182, 73, 13,158,247,184,205,142, 94,148,238, +117, 71,150, 75,216,194,130,240, 6,218, 82,158, 85,235,157,223,210, 89,138,255, 63,219,222, 83,249,147,216, 95,131,172,112,173, +179,229,163,198,222,226,206, 17,143, 55,154, 9,214, 10,233, 83,172, 55,255,247,108,139,162,142,254,155,206, 29,172, 10,236,202, +152,184, 20,147, 41,239,243,173,179, 24,134, 30,195, 56,192,122,143,213,122,220,150, 25,214, 57,244,227, 64, 29, 4, 72,137,108, +237, 10,239, 2,140,238, 16,125, 66,244, 1, 70, 43, 82, 41,231, 27, 43,165,176,113, 24,109,160,148,204,156,237,124, 40,166,108, +181,203,187, 86,153,105,111,165,155, 46,215,161,202,153,204, 45, 57,173,125,174, 69, 52, 86, 70,243, 59, 7, 72,181,175,249,154, +236,214,142,208, 75,158,248, 86, 32,209, 11,237,202,168,255,174, 88, 98,237, 24,182, 17,202, 85,181,121,113, 38, 36, 18,199, 5, + 79,182, 63,198, 57, 69,166,230,105, 67,209,237,208, 88,158,231, 93, 46,125,191, 20,156,200,157,236,241,120, 36,223,181,148,208, + 90,195, 57, 7,187,206,208, 26, 89,239, 18,144, 66,192,178, 46,176,214,193,173, 30,222, 5,116, 67,151,167, 23, 2, 74,105,148, +193, 33,231, 28,227, 56, 96, 28, 7, 40, 69, 81,183,243, 60,227,122,187,225,122,189,129,115,137,227,225, 8,100,176,200,106, 45, +230,121,169,135,124,202,202,186,211,233,136,126,232, 97, 58, 67,214, 49,163,241,250,122,193,245, 50,225,122,189,225,114,185, 32, +198,132,174, 51, 56, 29,143,152,151,149, 64, 48, 82, 64,202,220,197,122, 82,189, 75,197, 49,140,244, 92,149,146, 52, 2,207,209, +206,125,223,215,200, 89,235, 44,214,117,197, 48,142,132, 47, 46, 68,184,224,115,225, 72,215,116,140,113,135,128,166,194, 79, 67, + 74, 65,247,178, 70, 47, 37, 4,175,223, 67, 12, 16,156, 85,146,159, 86,186,210,229, 82,136,112,222, 98,181,164,209,224,121,213, +103,186,142,174,225, 92, 80,153,174,163,226,148, 37,208,244, 62, 11, 58, 25, 96,164, 64, 47, 57,140,208,176,158,225, 22, 2,174, +217, 55,175, 33,112,254,114,198,116,243, 16,170,199, 52,189, 96, 56,244,232, 79, 71,128, 69,240, 78, 64,140, 10,120,232,129, 78, +128, 73, 14,149, 40, 94, 55,165, 0,161, 21,216,227, 17, 97,165,131, 55,158, 23,196,151, 5, 95,254,248, 5,183, 57,226,243,243, + 13, 95, 94, 94,241,241, 55, 31, 33,133,192,229,229, 5,118, 89,176,216, 5, 17, 12,183,101,133,212, 6,222, 90, 24, 37,241,112, + 28, 96, 20,195,241, 52,194,219, 21,167,174,135,189,220, 0,235,160, 57,135, 98, 32,198,125, 74, 80, 90,110,121, 5,121, 42, 29, + 98,130,115, 17, 62,146,144, 19,137,156, 39,226,216,209, 78,189,116,147,187,155,215,174,211,105,101, 41,219,142, 23,173,237,138, +229,195,175,222,196,121, 77, 60, 3,139,251, 3,141, 97, 7,238,168,138,250,178,131,207,195,116,236,144,157,252,206,190,116,151, +217, 13,246,134,202,182, 11,100,169,194,187,134,120,122, 23,200, 81,179,198,106, 46,119,172,143,125, 27,245,230,195,188,245,133, +183,157, 93, 94,236,126, 13, 44,147,170,136, 46,110,163,214,114,104, 55, 7,118,205, 67,206,177,153,155, 33, 31,155,164, 63,191, + 74,184,179,100,109, 54, 31,182,165, 36,177,237,139,229,111, 38,182,141, 72, 69, 51, 6,223, 91, 8, 55, 55, 2, 9, 91,178,119, +155,109,104,213,186,199, 78,155,143,187,190, 78, 91,235,221,148, 64,237,132, 36,213,241,108,125,149, 89,187,174,168, 17, 42,185, +192,219,124,214,117,232,205,210,246, 24,170,213,141,109,182,189,186, 70,122, 11, 15, 66, 51,189,216,174,174,180, 61,183,247, 44, +127,249,253,103,251,192,223,237, 49, 49,142, 54,183, 26,141, 47,250,182, 76, 88,157,197,229,122,131,143, 41, 19,230, 60,186,174, + 71,138, 17,135,126,192,249,245,181,170,188,133,144, 88,230,181,241,147,251, 58,146, 38,171, 89,190,241, 58,159,115,203,105,132, +234, 67,200,112,154, 92,172,139,125,190,248,142,101,192,249, 91,113, 90, 83, 28, 10, 41,119,197, 83, 29,177,223,113, 17, 90, 27, +154,111, 4,119,101,180, 92,186, 9, 31,222,186, 16,238,201,111,251,128,148,118, 93, 70, 0, 28,165, 37,237,117, 25,133, 13,113, + 48,132,124,104, 72,193,193, 16,161,165,192, 56,244,121,236, 45, 32, 56,240,248,240, 8,165,201, 87,221,117, 6,235,178,224,112, + 56,128, 51,134,101, 89,168,235,213, 10,166, 83, 52, 38, 53, 6, 93,223, 81,216, 14, 35,181,184, 82, 26,183,233,134, 97, 24, 43, +169, 77,155, 60,113,200, 14,162,121, 89, 72,225, 31, 60,156, 15,217,206, 22,225,125,192,106, 29,132,208,121,132, 45,234,253,171, +188, 22, 93,215, 85, 63,119,136, 30,211,116, 35,223,185, 16,240, 46,228, 0, 25, 6,235, 44,137, 28,125,128, 54,166, 50, 15,180, + 86,208, 90,214,140, 9,114, 20,184, 26,143, 90, 98, 96, 9, 24, 19, 42,170, 86, 8, 81, 11, 27,165,116,165, 9, 74, 41,177, 44, + 11, 56, 56,156,243,217,107, 79,112,161, 50,225, 64, 76,228,230, 72, 84,128, 50,144,104, 78,100,194, 93,175, 21,116,198, 15,167, + 12, 4,138,165, 88, 8,161, 10,140,171,243, 35, 11,118,189,243,121,218,184, 23,169, 10,206,137,203, 32,200,118, 39, 0, 48,111, +233, 43, 6, 40,163,193,148,160,113,119, 98, 48, 92, 65, 66, 98,190,173, 48,166,199, 56, 40,172,211,132, 94, 73, 72,197,193, 53, + 7, 27, 20, 88, 39,193, 58, 77, 29,255,180,130, 37, 6,111, 23,232,135, 3, 96, 20,156, 15,224,215, 27,226,121, 2,174, 30,151, +231, 9,231,179,197,101,114,112, 96,144, 70,161, 55, 6,201, 57,178,180,102, 1, 57,152,128,209,134,238,193, 41,224,219, 15, 39, + 28, 6,133,195,208, 1,206,131, 45, 14,105,182,208,224,136,222,129,165, 64,255, 45,133,204, 81,192, 46,241,212,135,136, 16, 25, +172,219, 26, 47,206, 0,113,234,143, 63,160, 10,107,194, 27,175, 58,223,145,178,178, 32,139,181, 7,122,170,170,241,150, 35, 94, + 15,244,148,119, 88, 44,222,141,211,154,241,111,106, 44,202,121,150,188,211,165,215, 34, 67,160,193,184,236,110,163, 72,251, 3, +124,207, 64,111,124,206, 13, 58,181, 29, 97,151,137, 58,223,128,224,155, 56,142,165, 55,133, 77,189,245,199, 38,122, 54, 53,177, +161,108,223,249,191, 79,177, 79,191, 26,132,211, 10,233, 98,131, 66,221,137,226,216,214,229,166,187, 29,177,200,185,222, 34, 31, +182,133,244, 89, 87, 29,205,142,185,218,182, 26,205, 68, 74,219,161, 94, 71, 59, 89, 36, 87,236,113, 60,241, 60, 10,223,122,109, +158, 45,101,101,156, 87,112,175, 41,103,132,151,228,179,237, 45, 44,111, 62,223, 45, 89,202,228,104,191, 42,105, 86, 41,217,174, +181,201,248, 27,187, 94,190,246,154, 56,119,108,239,240,254, 32,106,135, 40,247,246,181,175, 29,234,188, 81,189,227, 45,202,126, +119,221,130,165,157, 69, 12, 96, 88, 87,135,144, 34,186,174,195,233,116, 2, 18,129, 65,190,255,237,111, 17,188,199,249,124,174, + 55,112, 58, 24, 98,189, 14, 66,238, 64,153, 16, 20, 82, 34, 5,249, 87,243,205,185,140,157,183,247,120, 91,164,113,193,119,152, +213, 16, 66, 25,239, 84,200,203, 22, 20,148, 31,127,201, 53, 23, 60,239,175,195, 27, 70,196, 70, 76,219, 91,209,218,174,191,126, + 54, 50,144,170, 29,183,239, 96, 85, 49,238, 72,110, 85,160,154, 10, 41,142,110,114,130,211,151,204, 98, 57,206, 25,140, 81, 56, + 30, 14,212,177, 25, 13,163, 54,253,135, 81,146,208,187,118,133,233, 12, 18, 18,214,133,172, 70,183,219, 13,183,219,156,195, 88, +178,104, 48,145,240, 72, 10,158,133,133, 34,219,195,232,223, 11,129,163,235, 58,172,118,174,116,181, 24, 73,128,150,192, 96,221, + 10, 38, 4,180,209, 96,156, 67,107, 3,109, 12,180, 54,144, 66,213, 93,127,103,250, 45, 65, 46, 4, 56,103,225, 61,145,199,128, +173, 43,118,206, 81, 66, 94,158,174,132,224,234,199,231,252,122, 70,223, 15, 80, 90, 97, 93, 23,114, 79,112, 14,231,104, 53, 65, + 83, 24, 2,224, 24, 99,178,239, 60,145, 37,146, 49, 24,211, 17,110, 53, 79,129,236,106, 43,154,155,162,119,137,147, 16,156,175, +211,142, 16, 28, 98, 36,139, 36,103,156,138,169,140,127, 13, 33,192, 89, 11,164, 68, 99,228,130,224,174, 33, 60, 60,103, 19,208, +115,230,249,179,166, 58,178,222, 49,148,137,211,182, 42, 41,169,126, 62,147, 12, 25, 56,148,210,244,251, 24, 32, 82,192, 95,125, +247, 13,254,203,127,254, 27,252,199,191,253, 30,235,124,197,116, 62, 67, 9,137,167, 15, 79,240, 97, 69,215,113,112, 30,240,211, +207,159,112, 58,156,208, 73,129,206, 8,240, 65, 3,189, 6,250,142, 4,193, 66, 32, 46, 19,221,105, 66, 64,136, 30,105,232,193, + 36, 67,252,233, 19,196,151, 27,190,252,203, 39, 92,206, 11,158,207, 11,102, 7, 68, 78,154, 2, 45, 57, 68,140,144,156, 97, 94, + 38,112, 38, 97,164,130, 18, 18,154, 51, 68,183,226,183,223, 62,162,239, 4, 12,103,192,188, 98,125,185,130,187, 8,158,128, 24, + 61, 56, 75,208,138,230,150, 33,250, 93, 19, 28, 19,145, 62,125,100,240,158, 98,130, 19, 34, 88, 2,228, 94,212,245, 14, 67,188, + 42,199,202, 12, 62,237,168,111, 91, 7,148,234,161, 95, 15,247, 42, 26,219, 98, 8,223,114,216,211, 22,180, 93,245, 97,105,199, + 81,111, 71,227, 37, 31,187,113, 59,109,130,215,152, 26,140, 76, 3,193,201,225, 5, 49, 67,112,216,166,241,207,172,247, 84,147, +151,182, 45, 53,175, 22,156,125,150, 76,218, 30, 87, 34, 5,226, 86, 24, 52, 25,219,129, 85,181, 54,227, 77,218, 93,218,254,158, +214,138, 70,130,165,244, 14, 77, 47,251,235,219, 9, 66,177, 90, 97,191,251,103,181, 35, 47,188,186,152,237,137,251,243,147, 62, + 72,141,141,239,254,125, 96,251,215,177, 45,196,138, 88,240,189, 92,118,220,105, 9,218,139, 16,185,168,192,238,117,222, 94, 82, +126,207,104,111, 10,191,212,234, 40,210, 86,197,211, 24, 62,110, 33, 57,173, 55,177,229,207,191,113,222,163,190,239,237,164,105, +123,142,155,194,177,133,179,212, 14, 61,195,247, 55,247,195, 94,117,189,255,104,108,213, 98,181,130,165, 4,163, 52,156, 13, 88, +173, 69, 76,180, 11,214, 74, 67, 73, 13, 37, 21,158,158,158, 16, 99,196, 45, 78, 88,214,149,144,160, 57,107, 61,242,132,196, 19, +124,116,224,156,110,214,215,219,149, 14,243, 16, 32,178, 18,217,135, 64,123, 73,198,128, 16,193, 56, 3, 79, 34, 39,137,169, 13, + 26, 34, 40, 0,164,112,206,185, 16,121,175,238,160, 21,237, 48,131, 39,234, 88, 76, 33,171,155,211, 62,237,173,133, 77,101,113, + 37,227,228,187,217,178,207,105, 92, 95,144,173, 5,196,194,235,247, 54,125, 0,109, 43, 66,102,152,199,236,131,231,208, 90,162, +211,100, 15,243,142,172, 98, 12,172,122,219, 59, 99, 32, 25,135,207,129, 59,133, 84,198,177, 17,209,180,214,148,155,238, 45, 89, +131,162,167,223,207, 25, 92,142,139,237,187, 30, 66, 73,112,150,234,148,228, 48, 14,224,140,225,249,249,153, 88, 13, 66, 82, 16, +135, 34,214, 57, 3,131,148, 10,206, 5,172,171,133,226, 2, 76,208,127, 3, 79,208, 76, 1,160,209,243,243,203, 5, 82, 72, 60, + 61,156, 32, 56, 69,153,114, 36, 60,158,142, 8, 49, 63,102,193,209,117, 26, 62, 58,196,224, 97,114, 26,154,247, 49, 31,238,137, + 34,145,179,160,112, 60, 28,176, 44, 11, 14,199,177,242,232,165,214, 56, 28, 71,164,152,224,156, 5, 0,220,110, 55,218,185,119, + 61, 20,231, 88,115,209, 45,132,168,193, 51, 74, 18,182, 54, 6, 71,105,128, 41,161,211,134, 10,120,206,176,174, 11,137, 21, 21, +225, 85,231,105, 38,232,140,228,121,138,197, 96,164, 2,148,106, 38,119,244, 81, 8,153, 85,192, 56, 77, 52, 68,158, 0,150,181, +175,200,130,176,232, 40,152, 40,177,108,173,245, 0,178, 96, 50, 70,218,215, 43, 67,175,251, 96, 6, 72,120,132,217, 34,121,139, + 14, 30,127,245, 96,240,219,255,245,191,224,255,184, 89,252,219,151, 87,188, 92,111,120,236, 13, 34,179,208,131,134,157, 7,252, +248,211, 23, 60,116, 26, 66, 68,244, 60, 65, 49,138, 26, 22, 93, 79, 66,191, 65, 67,235, 30,233,124,129, 8, 9,108,114, 96,186, +135,139, 2,235,203,132,215, 47,175,232,204, 35, 86,119,133,245, 30, 62, 37,124,250,252, 25,211,237,138,158, 11, 60, 29,142, 24, +198, 35,220,234,225,108, 32,250,157, 25, 33,146,197,116,126,197,191,251, 79,255, 1,201, 58,252,183,127,248,127,112,236, 14,185, +105,102,228,111, 15,235,230, 18,137,212,241, 23,253,113,200,205, 86,209,196,148, 40,104, 33, 57,196,177,127,252, 33, 86,207,116, +220,241,142,203,156, 99, 15,155,217,186,244, 34, 96, 97,111,218,148,205, 95,158, 50,188,229,215,209,230,169,221, 30,211,223,199, + 43, 85,124,167,112,142,101, 50,144, 15,130, 66, 49,219,241,218, 75,119,213,162, 93,171,119,187,236,123,169,183,229, 41,213,174, +171,252,179, 29,137, 49, 11,255, 26, 9, 88,126, 29, 8,118,147,119,243,237, 86,160,216,188, 16, 27, 91, 90,218,201,225,139,109, + 35, 84, 64, 14,171,129, 38, 85,110,198,232, 72, 46,196,244,152,117, 0, 5, 4,195,154,160,114,150,154,217, 69, 74,144, 44, 87, +173, 60,131, 81,184,216, 40, 89,173,176,141,241,237,144, 44,107,147,234,185, 70,221, 75,199, 72,251, 27,145,147,154,138,151, 84, +228, 17,115, 44,124,131,212,236,211,219, 2,174,236,246, 43,169,112,147,254,241, 92, 97,111,226,180, 70, 52, 87, 44, 79,229, 57, +163,137,154, 44,169, 83,156,109,196,186,252, 26,166,152,182,199,144, 11,160,182, 56,100, 89, 17,206, 26, 22, 2,231,108,159, 1, + 0, 65, 55,238, 76, 80, 75, 25,140,195,179,118,128,241,205, 13,194,218,189, 70,177, 19,178, 6, 66,179,155, 46,176,220,117,136, +205, 74,200, 68, 62, 80, 3,110,211, 13, 9, 30,140, 71, 60, 62, 28, 96,164, 6,151, 9, 93,111,208,229,195,227,233,195, 1,131, + 76,224,206, 65, 49, 78, 52,172, 20, 33,141, 65,168, 69,122, 66,140, 46,199,158,110, 69,146,224, 89,108,151,195,113,136, 99, 32, +234,206, 92, 74, 9,169,117, 22,195,145,112, 43,102,145, 19,103,155, 18, 86,112,133, 88, 14,236, 24,179,111,150, 62,155, 82,171, +250,122, 10, 33,107,254,118, 9,131, 81, 66, 80,144, 75,126,125, 4, 3,180, 96, 80, 28,208,146, 68, 65, 70, 73,244, 70,225, 56, + 24, 60, 30,122, 60,157, 6,156, 70,133, 99,175,240,116, 28, 96,180,132, 96, 17,189, 20,144, 44, 65, 32,192, 8, 6,197, 18,180, +228,136, 33,192, 40,149,149,223, 52,194,245, 33,212,247,108, 90, 87,128,243, 28, 27,154,111,162,121, 76,106,140,198, 97, 60, 32, +186,128,243,235, 43,214,117,133, 18, 2,206, 90, 60, 60, 62, 0,137,225,229,245, 12, 31,128,219,117, 69,215,245, 88, 87,135,105, +162,131, 78, 42,242,177, 15,163,193,233,116,204,191, 95,192,104, 66,158, 74,193,208, 25,133,199,211, 9, 66, 50, 48, 22, 33, 4, +195,225, 48,160,235, 13,164,150, 80, 70,130, 11,186,207, 10,150, 96, 58,133,190,239,192, 24, 42, 3,158, 64, 48,153,233,238,168, +216, 34,188,176,133,214, 10,183,235, 21,214,174,164,168, 23, 58, 23,141, 18,118, 93, 48,223,110, 52,217,208, 58,227,119, 3,180, + 18, 80, 66,224,122, 57, 35,120, 79, 93,165, 18, 48, 90,131,165,132, 24, 2,250,174,203,142, 11, 79,190,105,162, 83,229, 17, 53, +133,196, 20,213,174,119, 84,140,120,183, 66,102,145,151,181, 43, 1,157,144,104,171,233, 82, 93,173,196,204,201, 63, 14, 35,156, + 91,145, 98, 64, 8,142,178,197,179, 48, 86, 73,131, 16, 34, 58, 99, 16,220,138,190,147,232,164,132, 74, 9, 7, 41,240, 96, 36, +140,240,248,254, 97,192,167,127,250, 39, 28,198, 17, 65, 9,124, 57,223,224,151,128,239, 78, 31, 17,230, 27, 14,163,193, 65, 25, + 64, 0,159,207,207, 88,157, 7,247, 9, 50,144,213, 44, 36, 11,174,104,175, 78,195,230, 72,159,167, 99, 15, 8, 1,188,204,248, +252, 47, 63,225, 79,255,246, 5,147, 77, 96,227,128,159,159,127,129, 80, 18,145, 9, 68,174,241,122,181,184, 45, 1,211, 58,195, +152, 14, 74, 48,176, 20, 96, 12, 67,111, 20,224, 3,190,123,250, 22, 95,254,248, 5,127,252,215,159, 96,250, 1,183,101,134, 84, + 18, 82, 50, 32,120,116, 90, 17,149, 83,208,217, 34,121,217, 29, 19, 41,210, 89, 90,223, 22,109, 76, 39, 36,196,177, 63,253,176, +121,160,227, 14,165,248,110,254,239,155, 84,180,247,113,169, 59, 15,246, 59,190,236, 63, 23, 96,194, 27,235,211, 61, 40,162, 90, +136,202, 65,125, 55,166,199, 29,195,123, 63,121, 72, 59,149,242,123,176,154, 92, 66,238, 3, 62,208, 54, 98,205, 72,188, 29,223, +231, 98,129,191,179, 67, 47,191,164,142, 44,145, 16,238,246,198,233,190,176,105,236,112,177,153,166,108,217,225,219,127,111, 94, + 4,250, 0, 9,202,126,230,133,179,205,178,239,177,226, 65,121,117, 52,108,123,229,109, 37,210,174,240, 67, 76, 68, 42, 18,146, +188,167,140, 70, 96, 34, 39, 5,145, 72, 46,179,199, 43,219, 27,245,198,206,218, 53, 72, 67,239, 43,133, 99, 89,155,240, 6, 20, +147,154,101, 8, 26,129, 21,208,226, 63,223, 50, 5,246, 29,119, 97, 23,176,183, 37,100,251,190,222, 69, 5, 19,129,143,239,160, + 51,229,162,217,137, 12, 55, 74, 78,245,163,179, 29,212,135, 53, 78,131,253,248,158,146,171, 36, 66,244,123,107, 93,214, 43,176, +236,193,142, 41, 97,181, 43,144, 34, 58, 46,208,167,136,255,237,239,255, 22,255,251,255,252, 63,225,239,186, 30,127,253,244,128, +199,211,128,135,193,192,112, 42,232, 88, 74,121,127, 76, 35, 81,145, 3,120, 10,193,138,115,129,174,239, 73,136,196, 40,218,179, + 76, 81,132, 16,208,157,222, 82,196,212, 22, 67, 76, 33, 36, 41,123,139, 1,149,163, 87, 43,241, 74,211,174,185,252, 89,202,114, +111, 18,206, 98,200, 55, 38,218, 77,147,199, 89, 98, 28,122,116,157,196,216, 27,244,249, 64, 31, 59,141,222, 40, 40, 14, 24, 45, +192, 83,128,150, 12,200, 81,165,130, 51, 4,103,145, 2, 5,195,164,156, 0,199,115,145, 70, 29,179,203, 16, 28,151, 61,247,116, +232, 17, 93,141,196,103, 42,147,231,250,190,195,113, 60,160, 51, 38,235, 36,169, 40, 95, 45, 49,247,157,117, 96,156,213, 17,185, + 54,196, 67,215,218, 96, 89, 38, 60, 60, 60,224,245,245, 21, 33,164, 92, 64,167,140, 67,205, 62,127,187,224,244,120,196,227,195, + 9,227,208, 35,197, 0, 31, 28, 24, 34, 58,163, 41,230,148, 51,244, 67,135,206,104, 12,125, 7,173, 36,148,204, 54,176,213, 18, +165, 44,135,254,148,132,179,206,116,185,211,143,152,167, 25,203, 60,211,206,156,137,140,148,245,176,171,195,186,172, 68, 32, 20, +164, 63,234,250, 1,171,115,152,150, 5,253, 48,128, 51,137,101,186, 34,196,128,135,135, 39, 8, 33, 48, 47, 51, 4,231, 21,214, +211, 25, 67, 5,130,214,232,186, 14, 82,208, 53, 21,235, 99,209,249,189, 33,125, 71,129, 2, 73, 46,234, 40, 94,107,133,213, 90, + 4, 79,105, 99, 34,103, 31, 8, 41, 49,142, 3,192, 25,174,215, 43, 16, 35,156,179,244,251, 99,162,212, 61, 48,200,140,224, 29, + 58,131, 20, 3, 4,128,209, 40,136, 20,193,131,197,135,135, 17,235,124,197, 95,125,255, 29, 78,135, 3,254,191,255,254, 15,120, +190, 76,184,204, 14,209,115, 12, 66, 67, 6, 15, 17, 28, 14, 74,225,233,225, 4,112, 1, 23,128, 95,158, 47, 72,137, 65, 51, 1, +205, 24,152, 96,224,199, 17,105, 93,193, 23, 11,172, 14, 97,157,193, 98,130,123,189,226,246,122,198,235,121,197,231,243, 21,230, +112,132, 96, 18,163, 25,136,211,159, 53, 76, 82, 8, 4,159,224,173,135,204,233,144,227, 56,160,235, 12,192, 34,110,183, 87,252, +219, 63,255, 17,118, 37,120, 78,202,116,189,224, 28, 56, 18, 58,173,106, 40, 18, 7, 39,126, 66,206,187, 72,137,101,129, 92,246, +217,112,142, 20, 34,196,113, 56,252,176,131,196,220, 41, 95,255,220,225,251,231,254,204,215,254,251,159, 61,212, 57,111, 14,156, +183, 40,213, 86,236,246, 94,223,255,213,248,246,252, 98,164, 18,213,201,182, 46, 28,140,111, 7,100,123, 88,238,164,209,219, 33, + 85,249,223,169, 61,184,190, 86,176,236,161, 26,145, 81, 87, 19,217, 38, 18,100, 59,193,224,238,156, 70,220,188, 82,141,240,235, + 13, 42, 47,251,114,233, 80,103,121,159,206,139, 42,156,101, 47,121, 86,131,167,157, 74,191,116,204,153, 19,158,163, 48, 67,214, +233, 33,135,185,240,188, 59,227,249,247,150, 67,189, 60, 12,234,188, 55,228,232,150,102,150,197,131, 37, 26,138,111, 34,199,114, +152,111,208,161,214, 28,183,137, 64, 88,101,191,239,227,106,217, 59, 65, 56,251,226,238,254,253,136,141, 83, 99,243,206, 23, 40, + 78, 89,204,112,150,178,218, 31, 53,183,128, 55, 98,202,244, 78,232,204,230,247,231,123,139,220,174, 40,229, 77,198,249,230, 62, + 72, 41, 66, 72, 14, 32,230,155, 60,125, 14,214,117,134,214,146,222, 31,191,224, 63,126,115,194,255,242,219, 15, 48,225, 10,206, + 29,152,183,208, 44, 65, 32, 65, 10, 14,187,172,184, 94,174, 8, 62,193, 5, 26,241, 23, 59, 90, 25,177, 47, 51, 41,130,157,245, + 88, 87, 18,134, 13, 67, 71,217,218,206, 2, 49,162,211, 10, 74,112, 28,143, 35,250,142, 48,156, 36,232, 51, 24,134, 30, 41, 37, +104,173,161, 53,221,144,133, 84, 80,138, 96, 44,214, 90, 36,164,236, 37, 47, 7, 3, 81,223, 4,223,108,100, 49, 56, 8, 1, 24, +201,105,255,157, 18, 20,231, 72,209,195,104, 14, 36, 7, 37, 25,137,222,180,204, 2, 77,134,232, 61,250,206,100,161, 41, 69,206, +202,108,221, 20,138, 4,116,198, 24, 18,139,165, 60,233, 48,134,226,139, 51,173,109,153,103,104,165,200,174,231,168, 91, 13, 57, +169, 44,101,244,244,241, 72, 35,109,165, 53,180, 54,212,113, 25, 34,166,157, 47,103, 56,239,209,245, 26, 31, 62, 60,193, 24,157, +237,100, 84,252, 80,114, 25,199,120, 24,112, 60, 29,192,115,151,205,115, 12, 43,231, 44, 23, 52,212,209,167,148, 48,221, 38,220, +174, 87, 92,175, 23,204,243, 12, 41, 4,198,225,128, 24, 34,164,146,117,127,204, 24, 48, 77, 55,132,224,242,245, 46,242,107, 45, + 48,221, 38,218,187, 11,250,243,198,116, 72, 33,135,200,128,129, 21, 97, 30,163, 66,253,229,153, 68,153,199,195, 1, 49,166, 44, +146, 83, 24,114,193,192, 5, 21,103, 52,225, 97, 53,160,166,235,123, 28,142, 7, 24,163,192, 37,135,181, 43,162,119,112,171,173, +140,140, 34,130, 43,108,128,152,167, 58, 92,146,178,189, 27, 6, 74,173,235, 12, 34, 75,152,231, 25, 28,192,146,173,110,109,228, +110,153,241, 73, 45, 17,146, 35, 46, 60, 56,140,228, 56, 13, 10, 15, 71, 3, 45, 57,137,249,206, 87,252,187,223,126,135, 81, 15, +120,121,189,226,249, 54,227,236, 29, 46,126,133, 24, 21, 46,235, 5, 71, 5,116, 74,226,155,199, 39, 48,159,192, 66,196,124,187, + 34, 69, 7,183,222, 16, 18, 32,100, 15, 54, 7,224,234,176,188, 94, 17,185,132,236, 71,192, 39, 28,187, 19, 62,127,126,193,101, +246, 0, 55, 48,114,128, 95, 28, 82,136,120,120, 60, 96, 28, 52, 4, 34, 36, 72,184,108, 87,130, 74,105,163,241,241,227, 19,130, + 11,248,231,127,248,103, 76, 55,135,152, 40,171,222,232,158,166,131,121,102, 43, 5,135,144, 12,146,209, 84, 57,133, 8, 41, 53, + 66, 72,240, 49, 18,247, 61,100, 39, 80, 78,197,148,251, 3,175, 65,104, 52, 89,228,191,118, 40,255, 90, 20,107,219,149,124, 45, + 7,253, 47, 57,236,171,136,134,237,180, 97, 95, 63,192,223,248,204,223, 63,248,105,247,243, 14, 19,167, 1,105,236,146,183,202, + 81,154,119,251,224,165, 51,216, 30, 87,250, 26,199,189, 81,147,239,205,106,251, 34,128, 37,188,131,226,205, 34,136, 70, 57,158, +114, 71,198,218,212,182,148, 26,245, 62,111, 58,202,109, 28,189, 75,158,202,163,224,148, 53, 7, 53, 58,245,157, 87,138, 51,209, + 76, 69,226,155,100,181,132,176,243,139,183,196,190,150, 11,144,242,248,187,173,151, 82,243,103,118,131,234, 28, 38,148,216, 38, +150, 18,172,224,144,242,148,224,110,141,205,238, 86, 58,241,157,129, 77,106, 58,124,198,246,118,203, 77, 93, 91, 68,127,121,108, + 93,245, 7,133,126,245, 94,177,240,245,253, 61,242,136,191,136, 15,105, 55,234,161, 52, 7,139, 44,223,188,202,254,152,246,138, + 52, 18, 37,251, 32, 23, 64, 96, 12,188,147,184, 76,175,224, 34,192, 49,139, 0,139,228, 22,248,121,197,116,190,194, 70, 14,191, +174,136,222,131, 27,141, 20, 2,188,179, 20,243,202,139,109,117, 35,171, 17, 33,140,225,225,225,152,111,250, 1,206,211, 33,175, + 13,117,123,235,186, 64, 42, 13,105, 36,142,250, 64,106,252,101,193,234, 87, 12,195, 0,128,195, 71, 2,221,220,110, 83,213,137, +144,181,142,166, 17, 33,250,109,238,146, 80,189,229,135, 67, 15,111, 45, 38, 59, 35,229, 46, 93, 42, 77,150,189,108,217, 72, 33, +100,101, 57,229,212,115,136, 28,152,148,114,231, 73, 7,183, 40, 94,118,206,145, 68, 14,124, 78, 20, 89, 90,232,120,206,145,242, + 92, 73, 3,183, 90,188,174,150,216,229,146,124,215,195, 97,192,203,203, 13, 58,171,227, 67,240,248,238,187,239,240,227,143, 63, + 99, 93, 46,144, 82,224,241,195, 3,230,121,198,239,255,250,247,132,245, 77, 9, 47, 47,191, 64,107, 77, 96, 24,165, 17, 83,194, + 50, 79, 64, 12, 88,151, 5, 41, 25, 48, 70, 76,118, 82,169,115, 8,174,177,174, 43,150,117,197,249,114,193,235,235, 5,203, 66, +217,228, 74, 10, 72, 37, 97,221, 11, 36,191, 85, 56, 15,227, 46, 23,131, 4,142,161,105,128,135, 16,228,145, 31,122,234,244,175, + 57, 56, 36,184,136,121,154, 8, 76,211, 83,132,171,183, 43, 66, 70, 7,199, 24, 49,246, 61,162,247, 88,166, 25,156, 49,204,211, + 4,183,208,216,155,172,116, 38,191,206,200, 5, 14,101,190,207, 51,177, 20,180,166,240,150,190,235, 97,231,105, 27,187, 7, 18, +212,133, 20,235, 8,159, 11, 78,147,146,156,228, 22, 35, 21, 92,235,188,192,249, 53,231, 32, 44,116,111,138,196,187, 72, 89, 15, + 34,149,202,249, 0, 1, 49, 49, 36, 46,128, 72,215,180, 80, 12, 74, 83,227, 97,186, 1, 95, 62,255,140,207, 95, 94,112,234,123, +252,221,247,223, 67, 12, 39,252, 95,255,248,207, 20,150,195, 57,226, 18,208,127, 24,144,150,128,217,158, 41,128, 69, 57, 44, 46, +194,174,180, 34, 58,255,195, 79,144,191,204, 56, 30, 6, 28,198, 14,195,239,190, 67,232, 37,152, 86,224,107, 0,139, 51,142,166, + 3, 79, 47,184, 93,206,208,250,132,203,117,194,235,116, 1, 59,255,130,111,127,251, 13, 6,163, 16, 65,174,148,195,135, 7,184, +176,130, 43, 74,156,187,190,174,176,147, 68,130,134,141, 43,188,143, 56,112, 14,231, 29, 24, 35, 27,219,226, 28,184,144,232,140, +202, 60,120, 15, 30, 40,160, 39,230, 38,148,114, 29,200,125, 96,180,132, 44, 29,203,198, 14,103,117,175,122,159, 51,253, 94, 55, +253, 94,238,249,175, 29,212,247, 33, 26,191,174,252,142,111,121, 53,247, 58, 62,206,222,166,197, 49,246, 70,113,254,238,243, 40, + 63,147,176, 27,153,239,189,211, 57, 47, 57,149,125, 59, 32,182,200,176,157, 40,175,116,114, 95,179,191,239,236,121,101,184,156, + 90,223, 57,170, 5,176, 4,178,108, 97, 22,172,177,125,181,175,199,150,169, 89, 30, 27,125, 32, 34, 82, 0, 82,222, 89,162,161, +234,149, 85, 1,234,251,199,246, 9,105,213,118,200,182, 0,159, 18,220,146, 34, 5,149,176,180, 27,131, 87,207,126,115,224,177, +157,192, 47,221,209,231, 26,245,121,253,251,223,138,205, 24, 3,120, 73, 24, 75,109,218,222, 30,225,187, 21, 69,137, 4, 93,141, + 10, 3,111, 70,249,156,180, 33,247,145,195,252,206,245, 81, 52, 6, 57,152,168,197,228,221,231, 6,252,218,117,191, 23,224,221, + 33,133, 19,203,140,246, 0,198,200,227, 91,186, 37,109, 8,234, 34, 36,237,181,185, 16, 8, 43, 48,221, 44,236,146, 48, 93, 61, + 94,167, 21,159,175, 43,206,214,226,101,177,184,250, 4,155, 18,134,211, 9, 66,107,168, 24, 49,164, 30, 74, 10, 88,235,192, 56, +161, 66,139,101,172,122,183, 37,131,136, 12, 42, 73, 88,187, 64, 41,133,211,233,152,233,117, 2,231,203, 5, 44,123,154,129, 8, + 99, 36, 98,210, 36,166,211, 26,171,119,112,139, 67,167, 53,150,217, 82,151,218, 41,248,213, 86, 11,158, 86, 18,146, 75, 68, 31, +225,173, 67,159, 57,227,130, 49, 24,213,129,165, 72,161, 53,185,192, 9,193,147, 10,154,111, 92,136, 24,129,196,104,223, 31, 17, +242,103, 36,213,177, 56,141,115, 69,214, 16,208, 91, 38, 51, 96, 6, 49,119,249, 33, 98,186, 94, 17, 44, 25,103, 25,167, 38, 96, + 28, 15,112,214,193, 24, 5,107,109,133,239,132, 16,240,205,199,111,240,203, 47, 95,240,242,114,198,225, 56,162,235, 58,162,173, +205, 11,161, 79, 37,197,236, 46,243, 4,123,126, 69,204, 1, 48, 18, 64,223, 31, 72, 11,148, 34,236,186,226,245,245,138,113, 24, + 96, 87,139,121, 93,192,149, 68, 12,192,188,122,196,196,193,146,128,247,168,193, 51,107,152, 16, 19,113,220,141, 49,164,249,200, + 86, 49, 45, 76,214,183, 80,225, 18, 67, 4,231,192, 55, 31,159,114, 96, 10,135, 60,142, 88,230, 9,126, 93,224, 45, 42, 2,182, + 88, 30,189,119,240,206, 99, 13, 1, 90,146, 50,127,154,103,120,107, 49,223, 38,168,108,131, 59,158, 14,120,120,164,130,102,181, +150, 94,251,140,248, 85, 82,130, 43,142,163,121, 0, 18, 48,207, 55,154,122,196, 4, 35,168, 83, 85, 74, 1, 12,112,214, 98,177, + 30,130,145,176,240,124, 62, 35,248,128, 24, 9,148,164,238,109,162,130, 87, 97,114, 8, 1, 42, 73,210, 73, 4,178,245,121,112, +156,167, 27,130, 3,126,243,244, 1, 33, 69,136,135, 3,254,251,203,207,248,247,253,247, 96, 2,232, 13,195,227,193,224, 60,175, +232,164,130, 25, 31,112,185, 94,241,237,239,127, 3,182, 78, 48, 44,160, 59, 38, 4,217,225,248,241, 3,212,216, 35, 32, 66,157, + 70, 26,195, 27, 6, 12, 18, 98, 80,132, 45,159, 86, 72,172,248,230,116,128,255,253,239,240,223,254,244, 5,211, 50,129,117, 6, +118, 58, 67,114, 9,187, 58, 40, 67,171,200,167,167, 3, 56, 15,248,246,195, 1, 79, 15, 71,176,164,240, 95, 95, 94, 49,173, 12, + 62, 11,202, 61,128,155,115,144, 41, 66,247, 26, 30,196, 25,232,153,202,164, 68, 1, 46, 0,231, 50,121, 52,135,231, 72, 65, 60, +121,145, 18, 36, 0,249,150, 93,158, 15,246,244,246,144,126,155, 73,254,235, 17,164, 95,203, 54,255,181,206,188,165, 80,189,179, + 14,255,213, 17,255,253,243,104,255, 79, 52,183,248, 55, 96,119,214,218,126,168,187,107, 19, 92,202,111,227,105,195,157,242,230, +140,190, 31,149,255,218,108,224,141,240,127,199,191,103, 85,205, 95, 8,118, 44, 71,235, 84,206,123,203, 66, 47,249,195,213,210, + 87, 14,122, 86, 11,140, 34, 36, 68,163,226,222,173, 68,242, 15,209,249,252,118,117,176,235,221,211,198, 17, 40,147,142,194, 20, + 96,105, 11, 64,225,205,196,129,189, 25,147,239, 5, 4,181, 83, 78,216, 57, 9,144,129, 34, 69,200,199,155,196,129, 74, 24, 76, +123,222,112, 25,181,167,132, 6,116,243, 14,224, 63,165,173,176,105,128, 57, 44,187, 54,120, 89, 5,176,141,189, 80,120,229, 44, +181,128,163,244,171, 81,196,111,175,195,180,187, 86,139,114,158,115, 1,150,111, 80,219, 65,203,238,212,205, 18,130, 41, 88, 88, +252,124,158,241,143,159,206,248,167, 31, 95,241,243,106,241,243,108,113,177, 22,215,200,113,245, 14,221, 56, 18, 77, 43,120, 12, + 67, 71,112,163,108, 43, 85, 82,129,101,225, 86, 12, 17,222,163,242,164, 57,207,169, 92,138, 18,185,140, 50,152,174, 19, 98, 72, +116,104,129, 97,158,174,208, 90, 67, 41, 73, 22,177, 44,162, 67,222, 65,123, 23, 97,140, 2, 99, 29,140,201,227,241, 68, 32,157, + 20, 35,184, 18, 80, 82,209,244,136,115,172,118, 33, 5,123, 66, 77, 64, 43,104,100, 33, 37,132,104, 65, 68, 4,145,161, 84, 56, +153, 5, 94, 30, 42, 67,117,130, 79,224, 50,239,251,165,216,180, 44,156,244, 43, 82,208, 40,217,171,128,213,134,188,106, 42, 25, +227, 11, 94,207, 23,124,248,248,136, 48, 79, 48,166,199, 52, 47,120,122,124,194, 52,173, 56,157, 78,100, 33,243, 14,159, 62,125, +198,120,232,193,133, 34,192, 81,177,144,230,177, 54,192, 48, 47, 22,151,215, 43,130,117, 8,241, 23,124,255,253,119, 20,122,227, + 1, 33, 12,214,149,186,171, 16, 19,230,219, 2,193, 21, 4, 87,249,186,205, 94,112,235,179,237, 43,146,126, 37, 0,222,122, 26, +111,103,251, 94,215,245,245, 57, 19,228,165, 16, 4, 21,250,227,136,219,109,130,212, 2, 90,112,188, 60, 63, 19,241,206,249, 45, + 72,133, 19,221, 76, 40,133, 57, 68, 92,110, 87, 28, 48,146,165, 45, 37, 88, 75,222,246,219, 60, 17,142, 53, 70,152, 78, 35, 88, + 42,192,144, 87, 50, 33, 4, 96,221, 82,235,164,214,232, 6,162,231,205,211, 76,227,251,117, 65, 8,101,122,162,225, 66,160, 66, + 51, 71, 55, 35,210,152,190, 56,145,136, 90, 72,235, 62,235, 60, 84,207,145, 66,128, 93, 86,140,199, 3,124, 12, 80, 90, 33, 9, + 14,151,128,196, 21,172, 11, 36,126,206, 34,188, 94, 41, 8, 31, 48,177,132,199, 78,227, 54,207,112,206, 98, 52, 29,126,250,229, + 19,126,243,109,196, 55,218,224, 36, 73,155, 33, 14, 3,208, 9,136, 15, 39,120, 22,193, 21, 9, 25, 3, 15, 96,130,129,229,117, + 82, 48, 2, 16, 12, 34, 58, 60, 14, 6,223,126,120,192,213,115, 76, 54,226, 98,123, 60, 60, 61, 0,150, 2,152,166,213, 66, 74, +129,239, 62,140,232,146,197,247,143, 71, 44, 81,225,114,123,197, 53, 0, 96, 18, 8, 17,137,113,204, 62,128, 5, 7,169, 56, 18, + 79, 24,180,193,234, 2, 12, 99, 72,136,144,140, 19,254, 25, 12,206, 5,242,231,203,236,169, 15, 17, 41,120,136, 67, 63,252, 80, + 70,130, 49, 54, 99,107,246, 62, 98,243,235,201, 86,191,190, 79,255,181,223,129,175,110,160,255,220,120, 19,239,134, 64,220,223, + 76,249,206,169,251,254,225,219,250,217, 83,235,115,207, 89,220,237,145,196,154,240,147,123, 31,252, 87,159,210, 61, 0,159,237, +217,164,123,112, 77, 25,243,223, 61,204,157,255,176, 61, 88, 82, 85, 88,163, 9,205, 16, 98,243,239,190,143, 75,221, 94,231,157, +147, 43,179,195, 35,216,142, 40,199, 50,157,174,238,203, 75, 96, 57,163,200, 86,145,199,238, 34,167,105,177,202,134, 45,141, 56, +223,237,190,235, 14,187, 10,227, 54,139, 89, 98,233, 77,245, 83,166, 50,169, 14,224,223,190,153,187,220,120,246, 94,224, 64, 75, +137, 19, 85,212,135, 12,147,217,242,211,139,110,160, 97,164,179,141, 34, 87, 40,125,247,215,249,126,205,180,135,221,236,223,131, +237, 90, 41, 63, 19,147,175, 62,233, 16,136,208,166,184,172, 72,215,117,161,132,172,243,116,197, 28, 44,254,245,249,140, 63, 94, +102,252, 98, 29,102, 48,204, 9,224, 70, 67,247, 29,164, 22,240,145,130, 69,100, 78,120, 34, 43, 76,204,153,204,164,182,143, 49, +230, 76,110, 65,144, 20,231, 72, 4, 37, 37,198,225,128, 79,159,190, 32,134,136,195,241, 8,211, 25,138,236,204, 35,121,163,117, +245, 59, 27,211, 65, 10, 9,173, 13, 56, 39,250,213,186,174,152,166, 25,214, 90,218, 87,199,132,105,158,177, 46,115, 78,117,243, + 59,193,163,224, 28, 74, 73,128,145, 2,189, 68,201, 34,171,242,139, 31, 90, 8, 90, 37,145,240, 47, 23,222,145,174,143, 88, 35, +136,233,117,182,118,173,251,109, 48,142,224, 99,126,225, 5,124,126, 76,156, 11, 98,103,251, 64,190,116,165,114,188, 47,131,115, + 30,195,208,227,114,121,197,199,143,143,212, 61, 75, 1,107,125,198,181, 42,232, 76,178,227,140, 84,246,118,117,208,218, 32,248, +136,121,166,241,254, 52, 77, 0,231,120,121,121,197, 50,211,110,117, 28, 15,232,135, 2, 11,163,109, 0, 0, 32, 0, 73, 68, 65, + 84,158, 14,199, 8, 44,179, 37,206,148,139,245,106, 21, 57,214, 84,144, 93, 1, 33, 99,127,163,143,112,214,193, 46, 22,193,123, +116,166, 3,139, 52,146,103, 12,184,221, 38,172,203,130,190,239,179,239,221,161,235, 7, 88, 71,193, 34,214,249,138,167, 38,124, + 48, 0, 33, 32,164,192,229, 54,147,134, 32, 3,112,116,103, 8,203,106, 12,164, 82,132,246,205,226, 54,210, 13,144, 4, 95, 10, + 9,112, 96,181, 22,215,219, 45,139,220, 34,116, 22, 45,122,151, 51,233, 99, 73,178, 36,158,122,181,180,102,135,133,104,128, 88, + 37, 96,135, 50, 3, 8,160,163,132,130,146, 10, 41, 38, 40, 45,144, 16, 48,244, 35,120, 4, 70,165, 49, 26, 5,153, 40,182,181, +147, 28,154,147,114,255, 60,205,184,174, 22, 62, 70, 28,250, 17,243,141, 98, 90, 15,163, 38, 39, 69,167,137,175, 63,246, 72, 42, +129,143, 6, 44, 39, 34, 50, 45,193, 36, 7,239,122,164,200, 0,155,192, 46,228, 45,159,150, 21, 75, 12, 56,156, 78, 8,209,225, +114,121, 69,223,107,252,230,155,143,248,240,244,136,243,245,140,243,243, 51, 88,138, 56,245, 29,158, 62,124,192,203,249,130,255, +243,255,254,175,176, 76,131, 49, 2, 0, 37, 38, 16,114, 51, 19,243, 1,110,148, 70,116, 1, 60, 5, 40,153,197,174, 53,167, 33, + 39, 78,166, 28,123,155, 60, 24, 2,196,216, 15, 63,164, 26,137,216, 18,210,176, 59, 12,118, 97, 22,205,215,159, 83,178,191,215, +221,255, 37, 2,188,183, 99, 88,214, 34,215,223, 20, 29,191, 54,214,191,239,202,216,123,135, 58,246,135,122,233,208,217,187,202, +124,236, 58,245,247,146,222,254,236,161, 94,208,184,247,199, 82, 35,208, 99,237, 55, 26, 10,223,254, 37, 10,197,116, 93, 89, 0, +162, 97, 4,111,135, 48,171,170,238,134,169,139,130,131, 35,114,222,254, 80, 79, 96,217, 15,153, 75,163,204,232, 23,156,213,136, +213,178,241, 23, 89,233, 74, 7, 30,175,138,246, 10,127, 97,155, 85, 47,181,201, 43,153,247,143, 6,210, 2,236, 51, 98,203,183, +202, 46, 59,221, 17,224,208,164,188,213, 81, 63,195,251,222,243,122,200,102,218, 94, 21, 61,102, 59, 94,141,170,101, 16, 72, 53, + 64,164, 22, 95,104, 34, 34,249,175, 95,203, 27, 60, 37,131, 95,248,219,201, 66, 97,103, 35,135,142, 8,201,169,144,224, 9,222, + 59, 92,207, 23, 88,239,176,174, 43,145,226,144, 96,225,113,177, 51, 46, 54,130, 15, 7,200,174, 67, 82, 18,178,211,232,199,161, +138,237, 40,147,219,208, 36, 38, 16,185,174,208,225,188, 15,180,255, 78,116,168,115,193,112, 62,159,243, 94,184, 7, 7,135,247, +212,101, 1, 28, 31, 63,126,132, 54,116,115, 94,215,149,176,179, 82, 98,158,103,120,239, 49,207,148, 9,125,187,205, 68, 30,203, + 54,182,146,248, 69,121,227,128, 54,164,152,239, 58,131, 24, 29,184, 96,232,250, 46, 31, 76,122, 19,206,105,153,185,236, 4,212, + 81, 82, 18, 65,172, 20, 95,137, 10, 72,196,226, 60,200,241, 75, 57,145,174,100,129, 83, 65, 4, 8, 38, 17, 66,206, 74,207,177, +194,224,130,154, 67, 48, 8, 65,135, 85,241,246, 91, 23, 48,244, 3, 46,215, 27,156, 91, 48,142, 3, 81,230,140,134,247, 17, 90, + 25, 2,181, 48, 78,251, 99,107, 51,175,159,116, 8, 82, 81,193,211,247, 35, 57, 3,148,198, 48,142,100,171, 3,189,183,231,243, + 25,222, 57,172,203,140,105, 38, 22,123, 10, 91,118, 2, 71, 34,113,100,140, 72,129,214, 7,217, 33,156,131,177, 5,162, 39,154, +156,181,107, 21,148, 89, 71,239, 77, 74, 9,231,215, 51, 0, 96, 24, 71, 92,175, 19,198,195, 17,166,235,234, 84,100,181, 14,203, +186,194,133, 0,161, 20,134,195,136,110, 24, 32,148,130, 50, 6,170,211, 80,198,128, 75,142,213,174,224, 92, 96, 89, 22, 44,203, + 10, 48, 6, 93, 99, 86,169, 99,119,150, 88,239,209, 19, 80,102,153, 22,204,243, 4,163,116,189,254, 24, 24,253, 57,231, 43, 81, +142, 37,130,224,240,130, 41,231, 13,104, 43,139,183,121,158,224,112,198, 33,153, 66,215,169, 58, 89, 74, 46, 66, 51,178,182, 61, +244, 10,209,174, 64,140, 56, 29, 59, 60,140, 61, 6,211,129,171, 14,159, 95,206,184, 77, 11, 14,221, 8,173, 20,172, 95, 48,244, + 6,189, 82, 48, 66, 17, 60, 71,113, 36,149,192, 58, 1, 38, 56,224, 45,193,211, 36, 3,151, 25,158,181, 56,240,171, 67, 92, 45, +212, 48,192, 51, 2,143, 46,183, 9,199,177,199,249,252, 12, 41, 24, 30,198, 14,223, 60,246, 24, 15, 3,152,144,184,204, 19, 18, + 23,120,126,190,226, 31,254,241, 71,164,212, 35, 6,186,183,248,152, 96, 67, 4, 24, 71,116, 1,189,210,144,137, 65, 50, 14,201, + 19,148, 16, 16,140, 82, 18,131,143, 52,142,103, 2,130, 73, 48, 14, 72,197, 96,148,132, 56,116,135, 31,202,168,183, 48,150,139, +237, 11,187,138,233,237, 94,252,207,217,211,222,198,139,254,101,251,244,251, 40, 21,214,140,201, 55,142,120,222, 33,179, 28, 28, + 82,246,173,245,241, 54,194,240, 93, 55, 77,194,176,246, 48, 21,105,159, 36,198,203, 77,191, 46,117, 43, 63,181, 77,123, 39,245, + 58, 54,130, 92,100,169,177,153, 21,143, 63,223,136,104,108, 15,175,217, 65,213,210, 86,124,176,187,185, 64,125, 46,188,141,139, +141,149,189, 93,252,219, 69,208, 39, 5,145,157, 56, 47,238,188,114,120, 52,147, 5, 94,226,106,201,222,150, 26, 29, 69,140, 9, + 62,134, 93,136, 13, 75, 13,169,142, 21, 90, 96,106, 38, 5,169,170,220, 5,207, 7, 52,127, 59,119, 97, 28,251, 64, 25,198,118, + 7, 45,238, 95, 23,214,188, 39,197,110,214,142,205,115,129,193, 91,182,120,139, 18,110, 11,136, 6, 27,204,243, 84,129, 55, 5, + 2,221, 76,242,225,206,177, 43,136,176,139,101,109,112,194,191,178, 78,226,119,236,248, 66,217, 35, 93, 66, 2, 23, 9, 82, 9, +112,158,192,121,132, 82,100,241, 18,146, 50,195,149,148, 24,251, 30,253,216,193,100,143,177, 80, 2,253,208, 3,156,163, 27, 15, +240, 0,162, 96,100, 39,211, 26,203, 66,234,225, 15, 31,158,208,117, 29,156,181,184, 92,175, 21,255, 89,186,227,243,249, 76,234, +238, 60, 86,238,250, 17,183, 43,117,208, 74, 42, 44,235,140,195, 56, 64, 41,129,143, 31,159, 16, 17,177, 44, 43,172,165,176, 17, + 74,246, 10, 0, 56,172,181, 88, 87,178, 43,157, 30, 78, 84, 20, 8,134,105,158, 48, 77, 19,172, 93,115,110, 55,141, 93, 15,227, + 1,211,109,130, 16, 2,135,227,136,121,162,189,237, 50, 45, 96, 44,225, 48,246, 80,138,104,103, 50,163,114, 99,238, 8,131, 39, +161, 88,171, 2, 39,194,154,170, 24,233, 4,150, 17,173,148,253, 46,184,168, 68,198,146, 21, 30, 60,224, 28,117,239,222, 7, 72, +109,160,181, 66,215,119,212, 9, 39,218, 77, 63, 61, 61, 32,196, 0,235, 22,104,163, 48,140, 7,244,253,136,235,117,193,243,203, + 23, 44,203, 2,198,129,126,232,241,240,248, 8, 46, 36,164, 82,249,240,142, 56, 30, 6, 28, 15, 35,134, 65, 3, 41,224, 56,246, +240,118,133,181, 43,198,129,138,130,101,154,193, 18, 67,167, 52, 9,228, 56, 21,118,156, 87, 78,100,182,126,115,196,200, 16,178, +205,148, 48,161, 9,171, 11,112, 46, 98, 89, 45,184,160,235,227,114,190, 0,156,225,225,244,136,196, 56,166,121,197,241,116,130, +202,206, 4,211,119, 96,156,227,112, 24, 49, 30, 70, 12,135, 17,199,227, 9, 41,165,156,244,214,195,230,199,201, 56,200,241,208, +117,144, 92, 64, 10,145, 45,109,188,242,200, 99, 44,122, 32,142, 16, 34,164,144,176,150, 30,143,224, 60, 39, 4, 18,252, 39,250, +128,152, 25,242,116,219,225, 53, 65,111, 23,185,219, 64,189, 56,103,196,124,143,137,222,235,204,126,239,255,127,206,222,173, 71, +178, 44, 61,207,123,214,105,239, 29,135,204, 58,116,247,116,207,104, 6, 34, 41,202, 4, 45,139,146, 32, 64, 23, 6,104, 73,134, +161,159,224, 27,255, 25,254, 48,223, 9, 16, 12, 19, 48,108,194, 38, 65,145, 28,145,156,153,102,119, 87, 87,101,101,102,196, 62, +172,163, 47,190,181, 15, 17,153, 89,221,195, 2,102,170,187,186, 50, 35, 50, 98,199, 94,223,225,125,159,183, 6,230,228, 34, 58, + 20,163, 20,141,179,148, 24,241,211,153, 95,252,252, 75,202,216, 19,251,158,182,107, 25, 82,226,190, 31, 9, 17,110,118, 29,133, +192, 23,183, 7, 62,191, 57,208, 29,118, 20, 3, 73, 37,212,190, 67,117, 22,140, 38,141, 35, 86,137,126,160, 52, 6, 93,192,191, +187, 67, 61, 12, 20,101,248,187, 95,127,139,109, 15, 28,110, 14, 40,157,209,170,208, 53,134,215,183, 59,126,242,246,200,135,111, +126,195,171,155,142,253,209,241, 79,126,250, 83,246,183,183,252,249,159,255,146,239, 63, 12, 76,147,144, 95, 98, 17, 80, 80,138, +137,198, 53,228, 40, 16,169,227,174,147, 48, 33, 63, 72,162, 93, 92,215,116,146,131, 33,206,143,214, 25, 26, 99,176,177,204, 41, +109,155, 67,120,177,251, 60, 63,102,191,222,193,255, 24,207,249, 75,163,248, 31,254,162,122, 83,159, 5, 74,234, 18, 52,179, 61, +176,175,133,109,243,207,162,174,246,229, 11, 45,173,126,157, 46,155, 67,117,246,177,151, 75, 82, 93, 94,246,211,213,106,176,192, +120,184,130,243,168,170,206,188,180,193,149, 37, 88,166,118,153,243, 65, 91,212, 42, 92,187,242,115,171,133,234,126, 41, 98, 91, +158,216, 12,147, 41, 18,220, 33, 0, 17,249,126,118, 51,118, 87, 90, 85,192,136,190,240,138,111, 75, 38,125, 37, 58, 76, 21,239, +185,104,185, 42,248, 65, 43,241,156,138,255,121,141,187,157, 15,116,189, 96, 63,215, 98,104, 30, 6,104,117,121,160, 95, 77,225, +151,215,135, 77,170,223,106,108,219,176,160,149,222,208,169,212, 22, 20,188, 40,214,175, 57,230,139,248, 77,175, 34, 56,179,164, +198,169, 11, 30,254,252,239,230, 25,143,249,214, 9,162,245,234, 46,120,122, 61,151, 85, 65,191, 5, 34,213, 67, 93,107, 17, 61, + 25,163, 48, 6,118, 59,135, 82, 9, 99, 10,144,104, 27, 91, 59,217,140,143, 99, 77,193, 18, 18, 93,211, 56, 81,158,251, 80,171, + 15,185, 62,165,195, 23, 15,108,219,182,213, 99,237,241, 83,192, 56, 75,183,219, 73,220,103,205,197,126,243,246,141,132,122, 84, + 86,184,115, 45,227, 48, 10,161,170,192,205,241,192,227,233, 81, 96, 74, 90,132,104,143,167, 51, 31, 63,222, 51, 77,158,224, 35, + 77,211,114, 60, 28, 22,226,155,124, 47,137,166, 12, 53,184, 38,215,241,106,219,182,104, 99,232,118,123,206,167, 51,141,109,232, +186,150, 48, 91,237,130, 20, 27,251,202,191, 79, 57,214,168,206, 88,227, 62, 93,117, 1, 40,156,107,107,158,187,228,202,207, 2, +198,148, 11,227, 20,121,120,236, 25, 39, 47,112,150,153,172,151,132,151,174,170, 79, 63, 70, 65, 76, 26,235,208,198, 44,133,199, + 48, 14,180,141, 3,228, 57,148,146, 57, 28,119, 40,165, 56,157,207, 40,165,121,184, 63,113, 60, 28, 49, 6, 14,213,194,118, 30, +122,134, 97,168,250, 20,121, 61,134, 97,228,238,238,123,161,124, 25,177,243,165, 20,184,189,189,161,113, 13, 62, 4,134, 97,160, +109, 90, 41, 92,234, 8, 63,231, 76, 66,166, 6, 33,100, 18,154,144, 51, 62, 38, 34, 2,173,114,237,142, 41, 4,198, 16, 81,218, + 16,130,100,106, 15,163,136, 20, 95,191,121, 67, 65,209, 79,158,201, 7, 82, 77,211,212, 90,179, 63, 30,132, 84, 89,228,103,236, +135,158,199,199, 71,241,195,143, 19,143, 15, 15,156,207,162,158,127,253,250, 21,141,115,130,133, 85, 26, 87,217, 6, 57, 39, 81, +201,135,192,221,135,143,228, 40, 0, 26,101, 12,206, 54,140,227,184,188,238,242, 56,105,161,102,138, 37, 86, 62, 63,102,198, 70, + 51, 35,128,213, 69, 46,196,252, 89,180, 53, 40,168,212,162,222,105,177, 57,182,214,200, 4,164,100, 66,201,104,163,241, 83, 96, +156,122,222,190, 62,114,236, 28, 77, 73, 28, 90,135,235, 26,206, 33,242,241, 60,113, 26, 2,157, 51, 28, 59,195,231,135,134, 87, +157,161, 57, 88,216, 91,162,202,216,227, 30,156, 28,234, 37, 36, 84, 82,104,215,144,157, 69,187, 22,245, 56, 82, 38, 79,177,240, +217,207,190,162,219, 31,233,253,196,135,251,143, 60,158, 7, 94,189,254,140,211,249,129,113,234,185,221, 29,177, 10,218,214,210, + 89,195, 87,255,236, 15,248,179, 63,251,175,252,221,215,239, 72,198,145, 88,215, 17, 10,133, 85, 2, 42, 26,199,158,198, 10, 55, + 95,145,234, 20, 71,147, 83,189, 31,107, 1,229, 8,195, 65, 50,216,143,214, 97,110,107,167,158,151, 52,164,188,116,108,215, 35, +247, 31,178,174,125,234, 48,255,109,188,239,151,231,250,186, 17, 55,213,122,197, 51, 98,174,109,100,233,162, 54, 87,101,147, 54, +183, 61,212,213,101,247,120,141, 32,223,196,182,240, 92,102,182,186, 18,127, 61, 43, 62,187, 66,130,151,237,190, 87, 93, 88, 7, + 95,238,246,214,221,224,162, 82,223, 36,199,173,198,188,217,158,150, 43, 20, 70, 87,175,184,220, 76,150, 3,190, 92,113,246,235, + 9, 39, 93,248,250,218,228, 90,121,203,248, 75,215,244, 41, 85,227, 22,205, 66, 67,147, 73,192, 54, 90,117,134,206,136,255, 26, +181,141, 92,229, 9,115,253,114, 28,190,141, 61, 93, 27,120, 93,253,180,243,239,203,107, 59, 79, 46, 54,251,253,237,225,175, 55, +248, 91,181,133,189,109, 8,116,198,168,245,223,205, 58, 10,183,250, 42, 93,110, 86,255,215,189,222,130,186,157,133,139, 11, 34, +249, 50, 65, 80,166, 94, 91,248,188, 20,116,206, 25, 26,231,234,136, 25, 38, 63,200,136,214, 90,180,134,105,154,106,113,149, 22, +213,119, 74,226, 13,150,206, 55,208, 54,142,182, 17,149, 54, 5,252, 36,225, 26, 55,199, 3, 37, 39,134, 97,141,206, 52,198,212, + 3, 71, 32, 42,243,190,187,105, 26, 73,124,179,178, 19,159,198, 1,103, 13,183,183,175,216,237, 59, 98,140, 28,111,110,200, 57, + 19, 66,170,110, 7, 85,213,208,134, 93, 21,225,181,173,227,112,220,139, 10,188, 17,155,150,208,207, 20,187,221,142,227,241,134, +221,110, 15, 74, 66, 94,102, 17,238, 56,122,206,125, 47,159,241, 2,141,109, 80, 23,233,140,162,248,111,155, 86,186, 54, 37,150, +168, 53, 11,157,133,172,229,125,228,225,254, 76,223,143, 40,101,216,239,247,245,121, 7,166,209, 99,180,171, 72, 93, 75, 41,178, +123, 14,117,108,109,157,172, 7, 82,140,149, 19, 47,239,177,181,146,136, 55,231,215, 3, 12,189,231,112, 56,144, 83, 18, 22,187, +247, 60, 86,245,182,159, 98, 77, 51,131, 20,147,116, 88, 73, 44,109,135,253, 94,242,181, 67, 64,107, 69, 63,140,244,125, 95,197, +128, 78,214, 23,181,235, 78, 5,124,144,125,191,177, 13, 25, 69,183, 63,200, 78,187,113,248, 20,153,102, 66,158,150, 34,124, 38, + 47, 42,173, 25, 38,207,253,195,137, 16, 2,135,195, 13,251,253,158, 24, 37, 67,224,225,225,145,190, 31,152, 38,207,126,191, 23, +132,173,146,132,187, 92,196, 61,176,219,117, 28, 15, 55, 88,227, 8, 62,112, 62,157,121,188, 63,241,225,253,123,238,238, 62, 94, +120,137,103, 77, 76,240,114,232, 60,158, 30,150,213,204, 12, 53, 18,139,150, 90,114, 6,172, 49,107, 24, 86,181,168,105,205,146, + 78, 89,102, 96, 81,101, 88,232,197,125, 35,182, 54,165, 21,206, 24,156,179,236, 58, 1,226,236, 14, 71,166,113,196, 86,171,156, + 86,133,183, 55, 7,194,249, 68, 83,215,147, 33, 23, 18,134,211, 20,249,120, 58,113,188, 61,112,219, 56, 94, 41,248,236,246,128, +109, 44, 52, 26,117,219, 81, 28, 20, 83, 27,162,202,144, 80, 90,161,246, 13,170,113, 48, 78,232, 2,166,179,216,155,134,230,102, +199, 77,219,113,243,246, 11, 62,244, 61,127,245,223,254,158, 80, 44,223,220,157,184,191, 63, 81,148, 65, 55,150,125,119, 68,187, +142, 63,255,139,191,225,251,187, 51, 62,105,114,166,174, 75,100, 13,148, 75, 70,149, 66,231, 12,134, 66,137,190,210,232, 68, 44, + 57, 59,175,140,177,216,122, 46, 89, 52,182,100,246,157,198,188,218,221,252, 9,115,112,199, 6,169, 49,143, 26,159,163,185,205, +225, 13,191,205, 56,253, 31,123,160,207,199,159,222,236,212,215,120, 53,117,129, 19, 65, 93, 11,214,158, 63,212, 85, 89,177,161, +234, 9, 23,125, 21,215, 45,118,174,107,188,201,213,161,190,141,148, 84,219,159,245, 74,181,127,121, 88,191,176,147,191,120,205, +202, 5, 80,101, 62,208,215,152,215,122,248,232, 89,137, 94, 42, 65, 76,215,174,186,118,236, 70,173, 91,132, 43,112,158, 90,236, +114,235, 19,157,181, 21,165, 40, 74,174,106,114, 53,135, 90,216, 69,225,186, 38,160,205,163,236,170,126,223,166, 44, 93, 28,212, +106, 1,223,204,239,203, 74,146, 85, 11,188, 71,171,203, 1,197,122, 29,232,139, 29,250, 76, 19,222,166,179,173, 20, 56, 22, 50, +219,130,145,213,235,122, 96, 46,116,180, 97, 1,233,232,205,120, 93,235,235,218,177,108, 70,252,108, 62, 43,107,224,239,242, 94, +204,207, 69,235, 37,231, 94,215,149,132, 28,232, 85,213, 93, 34, 49,250,154,250, 53,167,223, 41,218,182,145, 81,112,215,161,173, + 89,212,197, 90, 27, 17,162, 41, 69,215, 9, 24,132, 82,100,114, 82, 5,128,119,119,119,244,231,126, 9,237,240, 33,224,189, 39, +198,180,236,203,231, 3,125,191,219, 17, 99, 88,210,199,130, 15, 28,143, 71,154, 70,252,207, 50,174, 79,220, 63, 60, 18,188, 64, + 69, 26,103,177,198,210,117, 13,206, 25,110,142, 7,186,174,165,148, 36, 7, 55,138,113, 24,121,120, 60,209, 52, 50, 61,138, 49, + 50,142, 3,195, 40,221,112,227, 28,231,211, 64,204,137,156,193,104, 91,119, 89, 50, 37,107, 90,241, 79,107,168,163,219, 34,118, +190, 20, 73,121,206,110,144,252,110, 17,126, 69,166, 49, 46,176,149,249, 87,138, 73, 56,222,218, 72, 96, 85,174, 90,145, 34, 34, +210, 16,227,130,115,238,186,150,227,113, 95, 35, 90,195, 18, 89,219, 84, 39, 64, 41,153,182,105, 9, 33,240,248,248,200,208, 15, +248, 81, 0, 62, 90,233,139,105,133,115, 78,132, 79,133,138,115,221,161, 80,180, 53, 69, 77,107, 77,211, 10,204,198, 90,135,247, + 81,148,224, 81,108,141,177, 64,209,166, 42, 85, 52, 83,202, 76, 33, 98,156,227,254,241, 68,136,162,189,152,175,175, 25,242, 51, + 7, 47,165, 10,139,138, 41,115,255,240, 72, 63, 72, 81,145,179,226,241,116, 98, 28, 38,134, 97,228,225,225,196,227,227,169, 94, + 95,117, 42,166,101,226,113, 58,157,185,187,251,200,195,131, 68,189, 78,163, 95,210,217,250,190,151, 41,130,143, 2,183,105, 58, +140,117,149,248,102,128,194, 52,141,196, 24, 64,137,186, 62,165,188, 52, 33, 51,221,112,254, 12, 45,246, 67,181,213,184,232,170, +209,145,102,110,166, 5,106,107,176, 86,116, 25,214,104,156,214, 56, 43, 12, 13,231,154,138, 39, 87,164, 24,216,187, 6,134, 1, + 83, 50,251,227, 1,215,118,148,162, 24,167,192, 67,223, 83,180,230,160, 20, 95, 28,118, 28, 91,139,107, 44,133,128,121,115, 64, +237,156,184,119,140,145, 69, 64, 18, 86,189,234, 44, 41, 6, 24, 39,166,115,207,112, 26,235, 53, 25, 41, 5,236,237, 13, 95,254, +206,207,121,123,188,225,227,247, 31,185,125,245, 25, 62,203, 4,225, 31,190,253, 7, 62,255,236,115,222,254,252, 23,252,249,159, +253, 5,223,189, 63,145,104,100,185, 88,215,158,170, 78, 67, 32, 99,107,154,219,174,107, 41, 41,139,210,189,226,149, 41,178,154, + 82, 37,227,148,162, 81,138,189,211,116, 45, 88,181,193,116, 62, 57,188,231, 44,232,151, 96, 48,155,223, 95,130,212,252,216, 95, + 23,169,106,139,240,165,242,197,175,188,216, 23,132,182,205, 65, 89,126, 76,161, 80, 20, 27, 68,203, 26,200,169,158,238, 72, 5, +128, 82, 86,252,108, 41, 79,245,214,243, 88,117, 51, 54, 98,155, 73,126,157, 22,183,242, 89,158, 16,201, 46,133, 93,149,118, 94, + 54,250, 47,182, 99,234,117,102,175, 54,252,114,165, 46,103, 16,179, 29, 76, 47, 60,124,245,140,118,111,142,204, 85,172, 3, 1, +181,116,137,203, 65,170,159, 25,155,207,153,229,136,160,103,193,240,206,251,120,181,114,239,175, 49,169, 79, 70,215, 75, 80, 79, +126,130,111,153, 15, 76, 93, 54,186, 65,117, 57,149, 41, 90,173, 65, 56, 51, 61,112, 51,238,223, 58, 32,180, 42,151, 42,249, 37, +234,145,139,194,236,122,197,180,101, 51,108, 61,242,115,129, 85, 42, 7,127,203,188,223,174, 85,172, 86, 56,171,137,209,147,210, + 36,164, 56,171,151,245,128, 54,178,163,206, 69, 14,164,148,179,168,244,141,140,141,189, 15, 53,200, 1, 66, 10,210,165,207, 59, +235,152,200,213,245,224, 67,192, 7, 17, 45, 57,103,233,186,142,251,251,123,246,251, 61,227, 56,114, 83, 59,112, 17,173,137,165, + 75, 27, 69,136, 83, 13, 59,145, 27,246,227,233, 68, 72, 17,141,162,107, 91,198,113,164,235, 58,118,123,217,245,229,156,240,163, + 40,220,219, 22, 26,231,216,237,218,154, 5, 31,176, 70,124,180,129,194,110, 39, 36,172, 97,232,229, 80, 77, 17,109, 29,198, 58, +198,126, 16,160, 76, 81,152, 49, 8,148, 38,142,144,133, 39, 30,125,164,105,180,216,157,172,227,254,116,194, 24, 43,135, 71,202, +180,237, 14,165,202, 18,214,226,125,172, 7,186,173, 41, 96, 25,215, 56, 57,244,146,168,225,149, 22,235,155,177,142,195,174,197, + 90,195,110,231, 8,113,183, 81, 23,139, 2, 30,160, 31,250,138,193,157,243, 27, 50,206,137,231,123,118, 12, 88,107,185,191,191, +167,105,154,154, 53,239,152,166,137,143,119,247,149,239,126,100,119,216,163,141,229,120,211,144,179, 34,164, 15,100, 5,182,131, +148, 64, 39, 42, 45,172, 16, 98,194,181,142,152, 19, 15,143,143,203,154,108, 9,234,217, 88, 17,149, 50,213, 34,105,107, 23, 45, +248,219, 97, 60,243,205,183,239,104, 92,195,103,159,125,193, 52,142, 76,147,248,235,173,109, 46, 44,173,195,105,168, 43,143, 84, +117, 51, 34,202, 3, 73, 31, 67,101,180, 81,248, 32,215,132,247, 31,177, 90,112,212, 82,208, 8, 92,198, 58, 71, 8, 19, 57, 21, +166,232,101, 61, 84,215,118,169, 54,132,186,226,131, 19,153, 68,169, 96,169,202,213,152,133,202,133, 26, 65,108,200, 20,114, 20, +252,108,219,182,132,224, 9, 26, 89,109, 20, 97,174, 43,235, 56, 13,103,154,146,153,146,176,220,199, 80,184, 63, 13,236, 19, 88, +211,136, 2,253,230,192,189,247, 60,146,241,250, 13,131, 79,236,250, 9, 93, 20,140, 19,234,112, 35,122, 27,173, 32, 74, 86, 4, + 70, 83,180,194,164, 2,214,145, 12,156,206, 3,175,143, 71,178,109, 57,223, 61,240,250,245,231, 88, 11,191,248,234,192, 91,245, +187,124,253,238,129, 59,123,131,206,145,183, 55, 95,161, 75, 18,212,172, 85, 4, 85, 8, 90,111,196,145, 70, 92, 9, 57,209, 89, + 69,200, 89, 86, 54, 69, 87,177,167,102,244,129,157,179, 53,154, 44, 11, 76,199,168,186, 87,215,236,247, 26,243,170,187,249,147, + 57, 6, 49,151, 66,170,253,189,236, 12,121,150, 4,119,221,161,111,199,244, 47,169,228, 63, 53,126, 95, 32, 38, 92,178,184,149, +210, 23,221,249,245,212,118, 78, 81, 43,106, 37,185, 61,221,109,110, 51,186,107,144,203,149, 80,238,170,151,191,128,195, 92,140, + 80, 23, 49,219,165,101, 73,215, 80,155,101,168,127,245, 60, 84, 93, 27, 44,187,251,133,185,174,127, 64,123, 80,150, 83,109, 57, + 84,212, 58, 90, 86,250, 82, 91, 48, 87,186,198,152,165, 19,181,230,234, 96,185,178,179,233,165,152,201,107, 22, 90,237,106,164, +187, 41,228, 74,233,210,198, 96,172, 69, 27,189,100,115, 11,196, 69,100,122,186, 84, 5,252,252, 24,122, 29, 85,232,250, 51, 63, + 63,145, 88,119,250, 90,171,139, 53,138,210,106,225,149, 95,184, 49,182,162,181,141,114,222,108, 52, 9,107,247,205, 70,104, 39, +221,185,217, 40,207,151,176,153,141, 3,253, 58, 45,240, 34,127,252,201,245, 92, 3, 23,106, 80,139,160, 53,245, 42,226, 82, 34, +124, 35, 39, 92, 99,104,172, 34, 39, 79,183,107, 49, 70,178,170,115,201, 18,141, 83, 69, 63,169,142, 75,181,118,164, 44,126,225, +243, 73, 58, 38,239, 87, 22,248, 52,200,222, 60,231,130,143,226,251,213, 53,103, 61, 23, 48,218,144,114,225,253,251,247, 85,188, + 5,135,195, 1,133, 34,229, 40, 66, 47, 5, 31, 63,222,209,117,173,252, 55,165, 43,158,118,146,195,163,222,176,253, 52,209,117, + 45,166, 42,188,231,195, 77, 16,176,194, 31,159,233, 98,109,235,150,152,207, 92,181, 0, 41, 71, 66, 12, 75, 53, 61,239,179,251, + 65, 24,227,251, 93,135,169, 89,240, 57, 9,142, 54,120, 9,243,152,225, 88, 33, 68,206,125, 68,105,199,185, 31, 42,107, 93,213, +209,191, 35,165,192,228, 39, 10,194,214,119,213,130, 69,197, 31, 59,215,224, 99,148,171,189,102,210, 7, 95, 1, 57, 70, 40,110, +143,167, 19, 74,107, 66, 8,140,227,176, 52, 45,214, 89,130, 23, 58,159,228,149, 55,116,109, 43,175, 83, 77,155, 27,134, 1,165, + 52,227, 56,242,120, 58,241,248, 40,123,246, 67,221, 99,159, 78, 61, 15, 15, 39,137,101,173,239,149,107, 27, 92, 99, 69, 3, 17, + 60,227,228, 47,156,171, 57,215,105, 67,146, 49,117,235, 28, 41,198,139,201,145,170,150,178,146,197, 63, 46, 59,218, 76, 8,178, +202, 49,218,138,197,174,239, 9, 49,210,184,202,230, 79, 25,239, 3, 67, 63, 48,140,131,216,219, 98,174,147,185,186,112, 44,146, +218,166, 20, 52,173,165,109,218, 69, 88, 61,223, 87, 98, 76,114, 13,250,137, 16,197, 50,105,106,174,128, 91, 48,188,185,134, 56, +173, 57, 9,165, 22,220,206,217,186, 10, 18, 22,127, 74,113, 65, 72,155,154,226,167,181, 2, 45, 93,175,136,229,138,236,213,155, + 6,109,100, 55,239, 92,195,224, 61,138, 66,163, 53, 13, 10, 91, 93, 17,227, 56,160,208, 68, 10, 89, 43,122, 31, 72, 33,112,115, +179,231,208, 26, 14, 10,116,244,160, 51,180, 22, 58, 39,251,126,159, 33, 70, 74,103, 41,173, 67,133, 12,253, 64,251,234, 21,199, +175,126, 78,110, 29,231,251, 15, 28,154, 14,101, 32,235,128, 13, 35, 77, 10,168,146,217,237, 26,110,119,142,195,161, 99, 26, 78, +124,254,179,159,242,248,208,243,215,191,252, 13,185,180,245,231, 88,245, 20,101,158, 10, 22,225, 19,104, 37,141, 64,206, 51, 54, + 87, 85, 37,124,161,181, 26, 91, 18,157, 51, 52, 22,142,175, 59, 57,212,231,209,187,248, 22,211,133, 16, 72, 95, 5,163, 92,119, +233,191, 45, 39,254, 69,202, 92, 29, 29,207, 98,168, 37, 61,108,163, 14,159,161, 20,207,133,160, 60,253,190,234,226,240, 85,215, +155,244, 13,158,244,165, 67, 93,177,181,146,233, 11,180,233, 83,133,245,229,115,152, 21,249,203,115, 47,229, 66, 68, 53,171,184, +159, 35,221, 61,245, 58,115,217, 29,206, 66, 50,165,159,245,219,219, 90,189, 74, 14,180, 90,246,235,219, 67,105, 43, 54,220, 70, +135,150, 82,106, 37, 61, 23, 74,106,201,111,118,206,173,150, 47,189,238,247,213,146,215, 94, 69, 48,122,173, 94,148,210,152,202, + 62,254, 49,215,195, 53, 25, 80,113, 53,198, 87,215, 59,248,245,128,191,220,155,175,138,255, 85,249,191,238,212,175,119,248,122, + 91,148, 94, 23, 87,240, 36,164,103, 59, 42,216,254,189, 45,215,156, 58,169, 81, 37,211, 56, 35, 35,245, 70,186, 25,215,200, 1, +162,141, 33,166, 64,136, 94,118,192,149,171, 61,122,177,142,133, 24, 25,199, 73, 82,198, 98, 90,146,212,230,231, 26, 83, 66,105, +217,199, 9,172, 67, 70,145,195, 48, 10,119,101,222,167, 87, 44,232, 56, 78,242, 89,175,187,226,253,126, 39,252,242,174, 91,236, +103,214,186,101, 34,161,181, 0, 70, 20,138,253,254, 80, 51,211,103,203,148,116, 92,177,134,115,196, 24,241,222,211,117,157,208, +195,144, 96,151,243,249,188, 68,181, 90, 39,194, 60,141,161,237, 58,252, 36, 59,230,182,254,121,172, 33, 44, 69,149,101, 42, 16, + 98,169,234,230,136,228,228,153,250, 90,136,130, 61,215,241,146,143,190, 10,232, 74,245,203, 75, 65, 36,215,181, 98, 10,145,172, + 20,177,250,178, 75,129, 20,243,130, 50, 45, 20, 78,231, 51,160,153, 38,143, 49,110,241,199,135, 16, 56,236, 15,116,221,142,182, +109,150,207,164,247,161,186, 0, 84, 21,131,213, 61,250, 84, 85,250,141, 40,182, 83, 29,173,167, 92,152,188,160, 63, 39, 31,249, +238,251,239, 9, 33,209,117, 29,135,195,129, 16, 60, 74,201,154, 96,153,238, 88,205,174,109,201, 41, 46,129, 81,135,253, 78, 98, +101, 85, 97, 43, 5, 94, 20,252, 37, 97,181,174,235, 25, 9, 21,153, 87,166, 49,134,154,179, 30,150,208,155, 92,197,176,198, 26, +246,187,142,253,161, 99, 95, 25,255,135,195, 78,130,102,118, 2, 29,210, 74,213,128,145,203,251,198,226,236,168, 19,191, 89,127, +146,147,100,206,207,159,237,153,130,166,107,128, 81,170, 4, 65, 93,212, 98,111,211,245, 90, 22,203,160, 56, 31,140,209, 88,103, +234,218, 65,209,118, 13, 49, 78,236,246,187, 26,204, 83, 73,146, 70,244, 69,199,166,197, 2,113,154,208,149,231,223,116, 45, 41, +103, 78,195,128,105, 58, 41, 0, 99,224, 39,175,110,184,177,134, 28, 6,178,202,168,125,135,126,115, 11, 70,147,207, 35, 37, 36, +104, 27,138, 1, 19, 10,241,254,145,164,193,190, 62, 98,142,123,204, 52, 50,188,127, 79,163, 51,198, 89,194,253, 9,211, 29, 68, +167, 98, 50, 55,135, 29, 74, 23,126,250,213, 87,164, 18, 81, 89,241, 55,191,252, 53, 37,202, 57, 97, 22,204, 87,169,175, 91, 94, +214,145, 70,203, 1, 47,241,196, 10,149, 51,173,179,180, 86, 97, 74,164, 53, 10, 75,225,246,102, 71,123,219, 98,222,180, 55,127, +146,159, 57,212, 37,140,254,249,180,179,114,213,193,252, 54,123,245, 39,228,184,178, 94,148,210,105,234, 11,164,167, 46,171, 50, +125,126,142, 79, 8, 47, 47, 21, 20,170, 92, 30,234, 75, 55, 86,227, 76,231, 84,174,107,218, 89,125,220,139,113,184, 18,162, 28, +151,176,185,167,197,192, 85, 55,247, 36,217,174, 42,242,117, 37, 79,149,141,229,233, 73,183,174,120,146, 91,190,116,199,155,160, +148,203,125,191,194,104,196, 10,100,165, 99, 55,198, 60, 1,164, 92, 68,210, 46,151,211,154, 15,158,106,220,234, 60,169,208,117, +159,110,230, 20,177,249, 3, 90,132, 2,165, 41,213, 87,187, 5,217, 92,189,174,207,253,140,219,235,162,182,215,121,187,242,216, +140,201,231,202,110, 45, 34, 55, 34, 56,189, 25,175, 95, 0,104,182,250,138,167,133,128,122,166,184,120, 17,180,116,193, 19, 80, +151,137,108,218, 96,140,173,227,208,202, 9,200, 66, 98, 91,133,121, 5,165, 51,214,130,181,178,222,144,157,247, 72,136,113, 19, +188,146,165,123,179, 77,141,208, 21,129,208, 44, 98,114, 78, 2, 84,246,135,189,236,102,219,134,182,109,176,214,212,215,111, 14, +255,144,204,244,162,192,181, 13,135,227,129, 24, 98, 45,206, 12,135,195, 65,162, 81,181,194, 56, 91,211,179, 4, 16,114, 62,159, +235, 94, 52, 74,151, 70, 61, 32,140,174,193, 40,138,105,156,232,207, 3, 49, 36, 26,215, 46,121,220,125,223,163,148,226,230, 70, + 48,179, 77,211,224, 39,191, 22,104, 5,188, 15,149, 35,110,121,253,250, 86, 10,148,224, 49,214,210, 29, 36, 52, 69, 88,237,162, +178,119, 77, 75,204,101,153, 38,230, 34,254,108, 41, 62,164,131,159,133, 91, 37,139, 66,126, 28,125,157,178, 25,124, 72, 76, 62, +138, 55, 29, 33,148,133,154,181, 30,171, 66, 31, 37,132, 55,109,106,177, 21, 35,211, 20, 36, 16, 37, 43,206,253,192, 56,120, 57, + 84,114, 33,166, 34,163,238,170, 62, 79, 25, 38, 47, 99,240,219,219, 87,116,221, 94,136,115,122,125, 60,215,182, 52,237,142,113, +154, 64, 25, 14,135, 35, 57, 37,250,126, 64,107,195,205,205, 17,103, 43, 22, 20, 85,105,128,105,177,248,205,169,126, 50, 2,247, +181, 88,149, 14,117, 22, 34,230, 34,235,134, 84,164,120,137, 81,108,103, 50,197, 19,187,107, 8,126,129, 26, 45,247, 32, 10,214, +106,246,251,150,227,113,199,126,223,210,117, 14, 99, 1,189,138,216,134,254, 44, 41, 98, 27,171,166, 28,230,186,194, 98,242,133, +192, 84, 38, 44,242,120,166,146,236, 74, 46, 75,162, 91,166, 84, 22,124,193, 32, 90,129, 82, 39,160,141, 21,202,158,171,226,220, +162,114,157,194,236,234, 89,149,232, 90, 87, 93, 22,165, 22,117,243,100,174,208, 90, 3,222, 67,141,163, 53,187, 6,229, 12,193, + 7,116,179,227, 60,156, 49, 37,243,229,235, 91,110, 15, 13,205,206, 18, 74,196, 30,111, 80,199, 61, 89, 41,138, 15, 98,227, 53, + 26,237, 44,106,138,224, 19, 33,121,148,203,232, 24,136,239, 78,164, 62,114,255,221, 7,226, 24,249,240,238, 61,195,253, 29,199, +157,163,140, 19,141,113,194,251, 87,144,187,134,221,241, 21,223,125,247,129,119,239, 62,138, 11, 67,203,170,121, 78, 53,157, 9, +129,148, 66,227, 26, 74,150,201, 5, 73,174,139, 93,211,208,104,133, 45,137,189, 49,116,141,230,230,213, 30,123,179, 19,161, 92, +126,177, 83,231, 98, 7,251,220,193, 61, 31, 16, 63, 20,216,178,237, 72,175,199,247,139,184,105, 73, 57,231,217, 27,233,156, 41, +190,165,137, 94,239,137, 47, 29,238,101, 85,208,215,199, 52,219, 3,108, 75,135,187, 62,212,151,128,150, 45,120,164, 92,116,249, +148,167,126,252,173, 71,121,249,179, 77, 1, 83,170,194,115,217, 95,111, 10,163,235,206, 61,215,178, 99,209, 24,168,213,231, 60, + 31, 30,235, 96,121,221,175,201,216, 93, 87, 1, 84,157, 26, 92, 31,162,155, 98,170, 92, 29,186,243,152, 71, 70,240, 53,239, 88, +155, 69, 28,183,116,233, 84, 69,116,145,204,103, 85, 15, 32,205, 38,107,124, 89,127,232, 85,222, 55, 79, 24,174,117, 20,243, 71, +113,179,131, 95, 21,243,179, 24,109,142, 69, 45, 27, 49,231,165, 48, 82, 61,243,243,110, 11, 26,253, 66, 17,165,231, 53,137,250, + 68,161,120, 85, 64,113, 69, 25,180,198, 8,192, 98,246,208, 87,102,187,117, 85,192,104, 68,253, 14, 18, 45,185,172,141,244, 58, +170,220, 31, 14,104, 37,156,239,174,181, 52,173,227,246,230,166,166,127, 73,124,102,223,159, 5,191, 26, 60,125, 63,112,238,207, + 76,126,146,110,177,190, 71,243,232,184,105, 90,154,122,200, 53,173,140, 78, 99,148, 14,173,235, 90,154,182,173,108,242, 82, 69, +100,210,221,107,173,107, 87, 42,104,209, 89, 55,144, 82,102, 28, 5,253, 57,142,158,161,159,136, 49, 45, 49,154,165,228,202,243, +150,164, 52, 10, 11,155, 93, 56,227, 73,152,224,109,199, 48, 78, 76,211,136, 51,134, 55,111,110, 65, 67,168,121,221, 77,215, 50, +133, 64,136, 34,130,219, 29,246,196,156, 80,100,114,142,213,253,160, 73,169, 84, 15,119, 17,118,124, 81,156,251,145,156, 11,147, +143,140, 99,144, 93,122, 17,216,138, 79,169,238,214,133,106, 55, 39, 18,230,146,197,250, 85,215, 31, 41,102, 33,213, 41,195, 56, + 6,140,182,178,250,240, 82,120,229, 12, 62, 70, 98,146,226,108, 78,122, 68, 25, 30, 78,103, 17,165, 77, 94, 60,243, 49, 50,249, + 68,223,143, 82, 28,140,137, 41, 68,250,243, 64,138, 98, 95, 27,199,137,243,233, 76,140, 17,163, 69, 80, 41,207, 45,161, 20,248, + 16,228, 51,175, 21, 33,198,197, 34, 82, 80,132,121,250, 64, 17, 46,251, 44,120, 69,214, 48,170,142,203,115,145,112,156, 21, 32, +181, 5, 88,231, 37,201,177,105, 13,198, 66,209, 25,138,188,230,193, 7,226, 20,136,163, 71,171, 82,109,102,117, 51,153, 87,107, +141,222,102, 74,104, 85, 71,231, 50,225, 43, 57,227, 22, 2,157,240, 49,172,179,148, 20, 5, 42,163,205, 82, 20, 24, 45, 96,159, + 57,184,170,212, 52, 72, 81,210,154, 90, 32, 11,187,160,164,121,237, 80, 73,124,245,177, 72,153, 86,195,109,219,162,141,194, 52, + 86, 18,251, 92, 75, 49,150,135,243,137,226, 3, 71,103,249,217,207,126,130,109, 53, 73, 23,236,241,128,186,217,161,172, 70,197, +132, 74,194, 46, 80,214,194, 48,202,218,164,235,200, 62, 49,254,250, 14, 23, 12,251,195,158, 99,103,216,189,126,195,190, 61,208, + 24, 75,158, 38, 60, 82,196, 78,185,240,112,122,228,230,243,207, 48, 62, 50, 60, 78,220,127,255,145,156,164,137,154,207,178, 42, + 87, 94,180, 73,206, 90, 97,169, 20,133, 42, 26,163,140,236,208,141,166,211, 26,167, 11,199, 93,203,237,235, 35,246,237, 45,230, +166, 30,234, 89,201,226,189, 84, 1,134,136,159,234, 78, 69, 61,127, 72, 95,119,128,159,234,214, 95,252,243,138, 8, 44,232,101, +191,114,193,209, 86,155, 36, 54,189,241,125,235,167,120, 85,197,202, 27,159, 5,113,101,203, 61, 47,101, 1,197,204,182,128, 25, + 81,120, 17, 68,162,228,176, 76, 64, 94,118,223,171,209, 90,179,121,109, 94,250,249,180, 92,132,133,117, 6, 63,139,168,180,214, + 23,136, 84,165, 85, 21,121,137,114, 83, 40,107, 84,236,234,218,157,207, 7,215, 60,150, 42, 40,138, 22, 22,250, 44,158,171,214, +229, 26,219,201,242, 97, 82,245,131,118,145, 54, 55, 31,228, 70, 93, 76, 78,114,205,158,206, 40,178, 82, 53, 76, 68,196, 42,182, +170,215,101,247,147, 81, 89, 32, 9,115, 55,170,180, 17, 70,242,147,235, 98,253, 95, 81,101,131,143,189, 20,167, 73, 72, 78,157, + 68,232,109,232,139,140,240,205, 60,109, 41,219,221,156,216, 61,182, 96, 26,181, 73,126, 83, 79,200,188,207,117,230,242, 26, 23, + 85,138,204,234,114, 0, 0, 32, 0, 73, 68, 65, 84,126,128,247,187, 41, 26, 75, 90,181, 31,243,104,191,138, 87,114, 73,242,238, +107, 9,164, 72, 37,147,138,216,156, 36,160, 37,215,226, 67, 87,245,187, 19,255,173,181,149,174, 37, 97, 30,243,170,101, 24, 7, +252, 36, 42,246,126,156,228, 70, 30, 18, 49, 72,247,227, 42,124,197, 24,179, 80,212,110,110,110,232, 58,129,169,164, 40,140,237, +155,227, 1, 85,217,232,159,189,126, 69,219, 24,156,209,146,211, 29, 34, 86, 91,250,115,191, 40,180, 37, 29,203,212,253,190,197, + 88,199,228, 3,198,184,218, 8,100,172,213, 52,141,149, 48,148,166,145,164, 40, 99, 24,135,158,225,124,166, 84, 15,115,138,185, +118,180, 18, 21,154,146, 80,199, 74,150,235,200,106, 69,211,218,197,106,216, 52,173,228,103, 27,131,177,154,148, 19,141,115,144, + 11,141,109, 72, 94, 32, 38,171, 88,181,160,172,194, 54, 45, 57,105,124, 44,132, 8, 33, 21,178, 82, 76, 41,136,248, 65,205,140, +125,153,104,148,106,163, 8, 57, 19,115, 65, 91, 71,240,145,146,196, 54, 52,147,232, 6, 31, 64, 25, 98, 86,196, 34, 33, 79,169, +234, 9,132, 1, 47,107,129,126,152,240, 21,251,169,138,163,100,141, 15,121, 17,233, 57, 39, 83, 21,173,132,241, 30,115,193, 53, +109,181,125,201,254,223,123, 25,255,135, 16, 32,231,106, 59,213,132,152,201, 74, 30, 55,103, 49,173,151, 84,214,228,200, 44,175, +181,224, 70,244, 34, 56, 46, 74, 58, 98,173, 65,151, 76,215,200, 4, 73, 96, 38, 85,227,160,213, 66,169,116, 21, 47, 44,186, 38, + 75,201,154, 48, 38,226, 20,200, 81,118,252,186,118,217,185,172, 20,199, 25,224,100,230,241,186,210, 23,214,208,162,144,196, 62, + 61,143,231, 37,124, 74, 33, 12,140, 57,154, 85, 24,246, 9, 55, 83, 4,141, 90, 44,142, 50, 21, 83, 34, 40,115, 29,170, 24, 82, + 82,160,106,144,143,134,144, 35,218, 88,200,137,125,235,184,185,217, 97, 45,148, 52,209, 26, 3, 41,211,180,142, 97,154, 24, 42, + 54,247,167, 63,249,140,253,222, 98, 27, 67, 49, 26,181,235,192,106,212, 56, 18,199,158, 96, 18,166, 20,244,144, 40, 41,147,209, + 24,221,226,239,123,250,247, 31, 8,231, 7, 78,195,137, 98,246,196,104,240, 65,244, 29,239,223,125,224,179,159,254, 19,138,210, +188,127,255,145,215, 55,111,216,237,110, 80, 5,190,253,254, 93, 69,246,218, 74,242,148,243, 96,193,239, 34, 46, 38, 87, 68, 48, +139,113,149,168, 87,216, 91,205,206,193,126,215,210,118, 13,221,109,135,121,211, 98,203, 51,123,233,139, 17,249, 11,135,250,167, + 40,114,191,205, 47,181,177,111, 21,202, 51, 7,207, 70,112, 85,244,197, 78,255,186, 83, 42, 27, 50, 27,155, 61,252, 26,242,241, +242,227,151,109,112,203,140, 74, 93,106,166, 21, 83,251,132, 19,255, 2,111,126, 22,255,189, 24,128, 83,174,204,123,101,149,170, +173,216,115,189,146,201,212,170,215,151,238, 65, 45, 41, 95,243,115,212,117,132, 80,204,182,224,185, 28, 19,171,151, 8,182, 87, +170,255,101,204,175, 36, 4, 67,207, 5, 28, 79, 35,106,103,118,247,162,122, 71, 61,203,228, 95, 35, 88,103, 27,203,117,200,203, +106, 15, 43, 85,176,247,132,173, 95, 46,167, 10, 79,186,241,103, 98,120, 23,197,218, 15,224,140,215,199, 82, 79,156, 9,207, 93, +215,107,113,182, 78, 21,114,201, 21,214, 83, 81,159,117,135, 63,231, 29,139, 13,141, 42, 8,139, 50,134, 52,114, 3, 16,229,182, +164, 94,229, 82,240,126, 68,149, 76, 44,165,238,134,165,104,105,156,100, 47,151,250,193,223,215, 61,161, 50,102,141, 98,172,251, +202,125,215,209,117,187, 69,193, 29, 98,160,219, 53, 18,197,217,117, 76,211,200,135,239,223,211,238,246, 28,142, 71, 82,200, 75, +216,135,107, 26,166, 48, 49,249,169, 22,124,137,199,199, 51, 41, 38, 92,237, 34,231, 81, 60, 20,148, 83,228, 16, 32, 67,235, 12, +122,223, 85,224, 75,237, 18,171, 79, 89,198,203, 48, 77,254, 34, 21,240,124,238, 49, 83,157,232,104,133, 31, 83, 61,232, 2,201, +104,172, 81, 76, 41,211, 53,173,136, 47,231,238,111,214,147,106, 43,138,122, 83, 8, 41, 46,190,250,153,104,102,141,161,237, 90, +166, 81,188,253, 86, 87, 17, 86, 20, 15, 50, 89,138, 87,103, 12, 89, 73, 17, 49, 77,126, 21,229, 42,141, 79,113, 89, 89,204, 2, +199, 83,223, 11, 96,199, 53, 40,180,248,219,139,100, 93, 83,132,187,174,150, 60, 6,153,102, 72,225,149,105,186,134, 92,167,144, + 51,135, 62, 23,121, 30,227, 40,145,171,183, 55, 29,206, 54,156, 7, 79,202, 2, 89, 41, 27, 47,199,214, 74, 89, 18,149, 3,190, +138,132,103,205,140, 76,142,228, 30,123,216,237, 32, 39, 70, 99,170, 95, 63,161,138, 94, 92, 1, 33,100, 98,144,209,102,137,153, +161,159, 72,147,167, 68, 25,115,147,133, 25,143, 46,139, 96,174,222,132,182, 70,150,229,121,204, 34, 57, 99,182,246, 45,181,224, +173,141,117,171,117, 86, 67,174, 65, 57, 41,229,170, 13,168,187,114,161, 97,213,206,124, 14, 63,210, 24,109, 37,145,210, 32,218, +131,106,235,157,123,222,164, 20, 93,211, 50,158, 39,206,131, 7, 20,111,111, 95,241,230,230, 13,167, 62,208,135,192,187,199, 7, +190,252,217,207,200, 12,164, 70, 67,137,232, 32,105,104,212,213,137,138, 25, 6,113,149,168, 61,128,135,161,103,154, 60,185,235, +120,243,243,223,225,227,253, 68, 76,154,251,247, 35,253,249,145, 98, 44, 95,191,127,228,225,161,199,154,134,239,190,253,134,159, +124,145, 72,105,228, 39, 95,188,229,241,148, 57,245, 3, 90, 25, 73, 12, 84, 10,165, 45, 62, 38, 58,215, 48,250, 68,215,216,138, +216, 46,180,173, 35, 17,137,206, 16,116, 70, 91,139,107, 59,112, 14,186,221, 85,158,250, 70,205,254,169, 60,149, 31, 19,230,242, +143,181,181, 61, 21,142,109, 66,102,174,111,172,121, 69,155,206,187,241,114, 97,111, 43, 75, 98, 25, 87,105,172,101, 91, 9,160, +158, 36,169,101,158,210,242, 74, 77, 33,123, 78, 52,248, 68, 47,176,148, 6,219, 31,112, 30,121,233, 11,210,157,218,164,180,205, +232,215,235,252,117,181, 25,215,207,175, 73,121, 98,195,155,131, 80, 54,238,129, 79,228,211,207,175,233,181,109,177,108,128,235, +114,208,233, 75,252,234,102,116,174, 55,190,240, 11,139,221, 51, 12,131,114, 21,186,162,175, 61,251,155, 46,187,108, 66,216, 46, + 53, 6,249, 9,180, 70,158,103,185, 44,238, 54,158,195, 89, 57,189,142,242,205,197,245,165,102,138,224,246, 11, 85,185,120,189, +159,123, 29,103,164,238,172,218,159,199,250, 70, 43,154,198,162,102,255, 93, 29,237,151,154,239, 93,114, 1,181,238, 29,199, 25, +154, 81, 59,191, 89,113, 14,144,131,216,175,180, 49,130,115,109, 59,172,117,156, 31, 79,168,182,161,115,142,156, 34,197, 90,178, + 86,132,202, 54, 87,200,141, 55,120,129,175,204,147, 22, 9,212,144,197,206,227,233,145,146,197,195,155, 42,192, 69,172,113,242, +248,143,143,143, 53, 39, 93,196,121, 41, 72, 38,186,146,187, 41, 26,240,125, 79,211, 56,246, 21, 13, 91,178, 40,159, 75,142,117, + 71,107,101,167,171,138,132, 84, 88, 73, 50, 27, 39,241,222,155, 58,138, 85,181, 75,179, 56, 82,150,209,119, 12,145,166, 17,229, + 52, 26,176,122,225,255, 43,165,112, 78,166,101, 57, 23,148, 49,130, 73, 85, 18, 37, 90, 74,228,112, 56,146,146, 4,181,248,152, + 49,198,226,199, 17,146, 20, 92, 74,107, 74, 20, 65, 89, 1, 26,107, 73, 57, 51, 85, 50,156, 36,164, 21,180,113,164, 34, 34, 70, + 99,215,195, 52, 4, 33,181,105, 45, 76,238, 16, 2,214, 56, 98,202,132, 44, 2, 62,133,248,253, 67, 12, 56, 55, 39,203,137,104, +203, 24,205,148, 3, 25,216,117, 59,166, 97,146,199,204,129, 93,231, 32, 43,110,111,143,188,126,125, 36,132,196,240,235,239, 40, + 37,214,117, 88,237,170, 85, 94, 2,134,180, 22,132,236, 28,227, 59, 95,159,203,212,171,164, 58, 19, 21,241, 89,152,198,101,170, + 35,117,175, 90,114, 33,114,132, 20, 10,105, 10,194, 40,240, 25, 93, 68, 84, 56,115, 44,174,155,156,249,250,151,149,157,172,107, + 36,251,189, 46,167,212,122,111, 44,172, 92, 8,106,241,181,181,233,137, 31,187,136,221,115,190, 7, 86, 76,183, 81,194, 67, 87, +117,186,137,150, 53, 72,161,224, 18, 80, 34,187,227, 1, 85,175,183,182,235,234,193,174,121, 24, 35,247,227,137, 93,187, 39,188, +127,160, 15, 9,148, 65, 89,197,175,191,251,142, 63,252,163,223,197, 24, 40,173, 76,215, 84,170,132,140, 12, 4,233,150, 75, 31, +106, 1, 31,120,255,112,226,221,183,247, 40,101,232,240,220,134, 1, 91, 6,110, 14,183,236,204, 45, 15, 39,197, 57, 69, 30, 79, + 35,223,223,157,232, 90,205, 52,158,104,218, 14,159, 11, 62,131,178, 66,144, 60,245, 94,158,103, 81, 36,234,193,142,194, 26,199, +164, 44,100,207,177,115,248,226,113, 78, 19, 90, 71,210,133, 98, 12,218, 25, 76,211, 66,215, 61, 61,212,159,116,108,234,135, 69, +111,207,117, 60,255,216, 95,159, 26,223,171,162, 22,113,219,117,167,121,209,225, 22, 54, 29,223,147,115,245,242, 64,191,232,246, +213,122,152, 60, 23,171,122, 81, 8,124,170, 16,185,172, 65,174,197,112,107,200,199,181,135,125, 19,148,179,233, 96,150, 34,227, + 42,231,102, 91,143,172,221,253, 11,239,203,246, 48, 87,234,147,173,250, 10, 32, 90, 90,210, 85, 84,166, 69,225,158,235,226,124, +166,200,109,224,245, 11,176,167,168, 75,240,206,172, 47,152,211,206,244, 92,129,111,244,122,121,169,242,203,179,215,227,133, 8, + 7,174, 10,191,106,199,163, 60, 51,250,191, 44,138,182,233, 96, 92, 67,141,158, 74,252, 94,156,110,204, 69,112, 97,118, 13, 36, +154, 74,113, 75,217,175,128,158,170,226,141, 49,160,116, 17, 48, 75,245,148,207, 56,211,105,154, 8, 57, 45, 58,149,148,228,176, + 51, 5,180,177,132, 28,107,184,203, 40,138,244, 12,157,181,132,156,152, 98, 98, 8,158,172,101, 52, 44, 72, 79,195,212,143, 11, +195,160, 84, 26,151, 86, 66, 84, 59,247,167, 10, 8, 81,164, 82,197, 95, 62, 96,140, 37,214, 52, 48, 73,117,147,104,213,195,110, +135,171, 34,166, 82, 50, 57, 38,156,181,180,198,144,125, 64,217,122,184, 40,141,216,125, 71, 92,211, 17,234,247,180, 70, 4,107, +198, 40, 98,244,117, 95,232,240,147,151, 53,133, 54,164,162,200,152, 10, 58, 81,248, 41,208, 58,135, 86, 73, 52, 11, 74, 99, 40, + 56,163,105, 93, 43,153,225,192,232, 61, 37, 69, 92, 35,232, 89,171, 21,170, 36, 82, 12, 88, 99,137, 81,236, 79,164, 44,123,219, + 90,148,148,186,187, 45, 85,100,214, 26, 65,131,234,106,173, 11, 73,198,192, 93,219,202,158, 61,103,138, 74,139,222, 70, 33, 29, +182,107, 12, 41, 38, 38,239, 49,214,213,145,180, 8,218,114,138,180,109, 83, 29, 1,171,174, 38,198, 32,160,157, 25,110, 82, 50, +141,145, 52,180, 67,103,120,125,123,203,225,216, 98, 26,205,195,131,120,254,141,150, 17,109,174,247,102, 99,100, 60,171,116,169, +215, 97, 38, 71, 93,237,176, 91,183, 11, 27, 43,161,100,169, 79,117,122,147,102,130,164, 42,139,237, 52,165, 68,127,234,235,251, + 92, 19,216,230, 38,170,126,163, 25, 90,165,180, 38,215,176,150, 82, 74, 93, 27, 93,179, 36,202,178,107, 55,198,205, 91, 63,225, +144,168, 88, 17,185,235,223, 55,218, 80,114, 45,250,178, 36, 64,170,185,145,211, 69, 58,117, 45,113,192, 41, 84,247, 65,200,116, +173,140,167,117,181,126, 53, 78,222, 11,237, 90,134, 20,152,208,156,250, 17,134,140, 61, 9,128, 70, 41, 69, 99, 29,143,195,196, +187,111,222,243,213, 79,111,101,221, 87,199,223,115,208, 14, 65, 86, 69,105, 26,201,218,240,240,120,230, 55,223,220,241,225, 28, +240, 89,241,197,151,111,217,159, 60,254,225,129,199,143, 15,148,164,105, 15, 71, 92,183,103,215, 21,134,126,168, 44,132,142,239, +222, 15,124,247,225,204, 41,105,238,167,192,144, 11, 35, 48,197,140, 79,137, 84, 10, 55,183, 55,188,253,234,103,132,201,115,127, +247,158,157,150, 20, 55,114, 32,169,150,168, 13,106,231, 72,182,144,173, 22, 27, 94,235,176,107,136,203, 11, 7,115,225,199, 38, +160,254,246,221,123,185,132,178,106,173, 62,141, 77, 85,151,226, 52,181, 25,243,204,255,175,235,133,155, 54,103,118,121,225,185, + 21,181,238,217, 63,249, 51,105,125,161,122, 22,234, 96,121, 49, 47,254, 83, 24,221, 45,152,100,157, 6,108, 44, 83,245,207,103, + 4,250,214,159, 46,251, 43, 25, 5, 74, 39, 87,158, 30,200, 23,190,246,234,225, 87,107,144, 13,234,249, 41,244,165, 19, 97, 43, +241,159, 51,217, 97,235, 74,211, 90, 65,154,133,103, 8,223, 96,230,228,111, 92, 19, 37,151, 11, 68, 42, 85,221, 57,219, 98, 46, +187,238,149, 42,183, 94, 27, 27,178,239,143, 27,247, 44,169, 93,235, 96, 65, 45, 5,234,246,103, 92,128, 49,207,189,135, 79,150, + 82,101,227, 86,216,102,170, 87, 27, 74, 78,203,120, 81, 27,195, 52, 13,164, 28, 22,221,201, 58, 33,145,189,166,132,146,136,106, +247,124,238, 37, 84,196, 90,218, 86, 72,113, 49, 70, 50,114,192, 27, 20,218, 89,252, 24,233,251,158,125,215, 49, 14, 35,166,192, + 99,146, 88,201,199,243,153, 62, 4,176,166,194,106, 12, 67, 74,210,137, 26,197,126,191,227,230,230,149,140, 13, 21,140,253,128, + 41,138,186,194, 37,147,165,235,175,108,120, 52, 76, 33, 72,241, 85, 50, 93,219, 98, 54,130,211,105, 18,149, 60, 9,162,151, 44, +234, 24,164, 35, 52,213,155,222,185, 29, 33, 73,134,123, 74, 89,172,114,198,241,248,120,174,130, 66, 71,169,113,161,109,219, 10, + 2, 55, 68,108,211,162,170,149,142,156, 36,151, 61, 77, 24, 13, 93,227, 56,238, 26, 90,103, 80,100,162, 18, 2,154,194,208, 58, +135, 15,146,217, 46, 13, 96,192,213,196,186,214, 25, 82,206,180,117,114, 48, 11, 79, 37, 83, 92,112,182,143,167,199,101,205,150, + 82, 68, 1, 77, 29,233, 15,253, 25,171, 13,164,218,205,166,140,178, 6, 31,163, 28, 40, 41,139,181, 48,122, 81,229, 43, 93,163, + 66, 83,245, 93, 75, 65,167,245, 60, 18,207, 34, 30, 12,114, 24,246,253,137,214, 89,116, 78, 28,154,134, 87,135,134, 67,167,104, +109,146, 9,135, 65,246,240,117, 50,161,141, 20, 29, 95,124,245, 21, 63,251,234, 75,254,246,111,127, 73,223, 15, 53, 83, 93,180, + 81,219, 48,161,178, 42,139,137,185, 48,134, 4, 90, 38, 7, 33, 85, 93, 0,226, 45, 87, 40,114,136,203,253, 83, 52, 43, 85, 43, +146,146,136,111,173,188,110,169, 78,206,174, 45,169,107,225, 93, 46,120, 33,179,245,209,106, 93, 3,176, 36,152,165, 66, 21,228, + 83, 89,106, 84,110,181,215,170,146, 43,243,125,221, 66,198,152,100,114,170,221,242,217, 17, 61, 24, 28,218,150,221,126,199,228, + 7,193,178,170,217,234,102,193, 53, 4, 21,192, 88,162,150,130,232,246,176,199,168,136, 53,154,111,127,243, 61, 95,190,121, 37, + 41, 95,173,220,247, 67, 85,191,107,165, 41, 49,242,120, 58, 49,228, 76,177, 13,183, 55, 55,156,194,153,239,239,123,250,119,143, + 60, 76, 19,244,247,188, 61, 28,249,240,254, 76, 81, 31,216, 31, 44,237,174,195, 79, 35,141,187,229,176,127,195,185,143, 60,246, +247,188,187, 59,113, 55, 4, 62, 62,142,248, 4, 33, 65, 66, 4, 81,231, 83,207,248,238, 61,255,234, 95,254,107,126,247, 15,255, +123,254,250,255,254, 83, 66, 58, 99,138,166, 36, 69,202,138,162, 45,205, 77, 67,123,211, 80, 26, 13,173, 89, 59,245,173,130,123, +185,193,171, 79,143,200,159,179, 39,253, 86,219,244,170,156, 80, 92, 90,196,158,222,100,213,179,187,223, 92,245, 86,219,195,123, +233, 12,235, 23,148,114,121, 64, 92,119, 90,229,170, 88,184,248,186,235,253,241,230,160,251,177, 7,250, 75,175, 83,174, 41, 39, +235,254, 90, 45, 98,147,178, 57, 44, 46,200,178,149,237,190, 80,224,102,133,127, 97, 1,112, 44,251,219,205, 96,255,162,137,175, +234,240, 39, 47,228,188,199, 86, 91,187, 86,217,172, 51,202, 37,140,165,238, 61,217, 56, 2,102,211,247,140,127, 84, 23,172,129, +178, 0, 39,230,145,255,162, 86,159,127,196, 92,214, 84,190,103,166, 8, 79, 34,116,159, 73, 14,124, 50,171, 40, 44,197,226,118, + 98,242,252,251,116,249,216,215,182,203, 37, 97,111, 67,249,155,119,154,185,194, 49,164,211, 41,181, 35,209, 21, 11, 42,228,181, + 88, 15,128,217,223,173, 40,140,195, 80, 57,217, 98, 9,139, 57, 51, 12,163,236, 41,181, 38, 68,177, 40, 77,125, 15, 74,209, 54, + 45,195,121,128,162, 24,106,176,202,161,219,227,189, 68,133, 42,235, 68,236, 24, 35,206,118,216, 70, 67,201,164, 41,114,255,254, + 78,108,111, 64, 63,246,180,109, 71,107, 91, 81, 91, 43,200, 51, 73, 12, 48,170,112,232,186, 37,255,192, 79,129,243, 48, 10,173, +110,156, 68,193, 94,192,216, 88, 89,236,178, 82,152, 5,118, 70, 91,250,177,231,112, 60, 48, 77, 53,166,117, 28,105,218,157,240, +225,135, 73,210,232,144, 93,119,172,227,211,118,215,226,189,116,176, 41, 38, 84,150, 29,169, 81,176,239, 90, 90,167,233,172,162, +113,166,194, 86, 12, 40, 77, 72,153,148,225,220, 79,140, 85,252, 53, 76, 1,163,231,171,184, 10,242,148, 8,184, 82,165,178,229, + 36,227,232,211,249, 84,163, 87,253,162,158, 78, 41, 75,183,150,178, 92,239, 57, 11, 72,168, 30, 58,122, 94,191, 24, 37, 86,178, + 36,135,144,217,136,120,115,146, 12,248, 82,191, 70, 41,203,110,215, 85,143,187,216,252,146,143,236, 92,139, 38, 19,167, 9,239, + 50,131, 21, 47,127, 78, 22,218, 6, 48, 11,159,192,106, 85, 99, 76,225,205,171, 55,252,241, 31,255,123, 62,124,120,207,195,195, +137,198,153,205,103, 99,155, 25,161, 80,198, 98,170,229,241, 60,140,216,106, 45,155,239, 36, 70, 23, 26, 39,169,151, 37,213, 34, +117,190, 57,150, 88, 39, 15, 90,242,227, 17,129,110,206, 25,178, 76, 59,200,165,218,178,114,117, 37,196, 42,136,148, 21,132, 20, +118, 2,209,201,117, 34, 5,245, 58,170,211, 64,106, 58,158,174,205,212,204,129,207, 64, 76,226, 70,208,170, 34,172,163,128,157, + 26,227,132, 30,104,180, 92,247,135, 22,107,160, 57,236, 33, 37,108,235,234,125,181, 96, 93, 67, 46,103,156,113,188,121,117, 32, +246, 39, 94,239, 90,142,135, 35,254,241,158, 15,119, 15,244,167,137,221,126, 79, 14, 2,248, 17,224, 86,130,148,137,163, 39,148, + 66, 50,150,127,120,247,158,199, 94,241,161,143,124,236, 7,154,156,185, 61, 54,252,228,171, 47,105,156,101,120,244,120,175, 25, + 30, 61,249, 49, 50, 14,145,199,199,123, 52, 45, 69, 25,166,193,115,186, 31,248,254,254,204, 41, 2,202, 18,107,104, 77, 65,118, +249,211,253, 3,255,251,127,249, 47,252,193, 63,255,125,254,248,127,254, 95,248,203,255,227, 63, 19,238,190, 39,103, 35,186,134, +146,217,191,186,197,236, 20,102,223,146,157,194,188, 62,188,250,147, 82,213,239,215,163,226, 5, 24,162,158, 30,232,207, 89,212, +126, 59,174,187, 89, 34, 48, 55, 84,149, 11,225,145, 82, 79,163, 51, 47,162,192,183,177,153,219,199, 94,201,164,203,121,174,213, + 85, 94,250,214,138,164,212,179,250,170,235,177,249, 74,142, 43,155, 14,244, 25, 45,194, 11, 58,133,139,215,103, 59,125,168, 19, + 6,189,224,122, 89,172, 85,170,238, 97, 69, 32,151, 22,168, 73, 89, 16,180,101, 13, 77,169,130, 67,107,196,163,110,141, 84,212, + 70,109,168,105,106,139,236, 41,155, 3,182,114,152, 23,162, 92,174,161, 46,106,205, 30, 87,122, 85,211, 47, 35,184, 89, 11, 80, + 54, 17,168,215,201,115,235,161,190, 88, 37,203,108, 3, 91, 5, 45,179, 40, 30,117, 9,253,173, 6,150, 53,157,237, 25, 31,249, +115,215,224,115,239,201,245,251, 80, 54,175,161,186, 40,167,184,148, 23, 46,149,163, 90,197, 73, 91,108, 81,189, 78,119, 93, 83, +133, 97,165, 90, 0,229,112, 16,254,122,168, 97, 23, 6,107,101, 20,105,173,165,237, 90,177, 95, 77,158, 97,154, 40,185, 16,162, + 88,182, 38, 31,164,147, 15, 98,249, 41, 41, 51,244, 35,231, 97, 68,215,100, 47,133,198, 56,199, 52,121,226,224,201, 62, 80, 98, + 34,199, 72,244,129, 16, 60, 90,233, 74, 48,155, 3, 81,228,121,165, 10,143, 9, 33,210,247, 35,211, 56,213,113,172,128, 85, 78, +253, 80,115,215, 53, 41, 75,132,231, 48, 70, 98, 17,103,200, 48, 69,124, 76,100,101,152, 82,198, 39, 24,125, 36,100, 40,202,242, +240,112,166,104, 41, 86, 10, 90,252,216, 74, 11, 49,207, 7, 40,133,152,196, 14,103,172, 96, 95,115,142,116, 77,131,166, 96,181, +240,175, 59,103, 56,180,142, 55, 55,123,217,165,171, 82,179, 13,172, 64,104,124,148, 92,240,232,235,148, 67,132,108,186, 38,138, +205,188,134,110,183,103,242,113,113,153,160,103, 70,127, 21,111,206, 90,134,178, 70,231,206, 10,111,165,205, 2, 48,174, 66,115, +217, 47,215,117,217, 44, 6, 91, 2,166, 42,191, 97,169,123,149,192,120,102,174,193, 56, 78,210, 85, 83,120,251,246, 53,166,254, + 92,243,202, 35,164, 76, 42,154,126, 74,196,168,240, 99, 97, 24,124,141, 93,149,207,237,249,124,230,215,191,250, 21, 31, 62,220, + 85,146, 91,185,210, 9,173, 66,228, 57, 24,165, 84,152, 80,140, 17,173,141,100,192, 91, 67,227, 76,117, 34,148,197,154, 58,123, +215,181,130,182,113,116, 77, 43,244,183, 82, 45, 94, 10, 92,227, 40,185,186,161,138, 90, 92, 27,133,173,152, 81,180, 7,214, 88, +108,117,180, 58, 99, 48, 21,213,171,171, 29,214, 85, 75,168,174, 62,237, 82, 42, 62, 54, 11,196,102, 22,167,234,250,190, 25,109, +216,119, 59, 72, 69, 56,240, 90,177,219, 57,154, 78, 86, 29,166, 72,161,162, 75,225,230,230, 72,202,153,135,135, 71,148, 86, 28, + 77,225, 95,253,254,239,241,179,159,188,102, 24, 30, 56, 28,118, 52, 74,227,246,142,215,191,248, 9, 49,123,116,169,214,178,209, + 67,150, 64,159,187,251,145,119,143, 35,125, 48,124,253,190,231,253,105,224, 28, 34,253, 24,121,247,238, 3,253, 56,224, 67, 34, + 38,131,182, 59,188,118,124,253,237, 3, 15,143,137, 16, 19,167,243, 35,239, 63,222,113,247, 48,240,155,239,238,185,247,153,104, + 91, 66,150,207, 84, 90, 2,141,132,155,144, 74,225,219,239,223, 49,244, 3,255,225, 63,252, 71,254,254,239,126,133, 33, 97, 75, +226,216, 25, 14, 59,203,237,235, 3,230,182, 69,127,126,139, 45, 27, 88,246,143, 13,104,121,169, 75,253, 71,237,211,127, 11,177, +124,217,192,211,203,194, 9, 95,149,235,203,152,105,190,225,110,187,179, 43,222,122, 81,159,126,236,107,202,156,122, 66, 79,122, + 57, 97,237,250,128,121,254, 80,223, 48,204,103,220,237,124,192, 84, 33,140,209, 44,248, 67, 17,216, 80, 41, 82,171, 63,127,187, +127, 86, 27, 49,201,114,232,214, 27,139, 74,229,197,151,187,104,179, 42,242,175,115,239,183, 7,219, 51, 29,238,156,180,164,171, +130,127,166, 66, 21,214,231,161,230,247,103,254,110,229,234,245,221,168,232,231,226, 66,177,170,214,231,180,120,245,236,166,157, + 39, 99,191,151, 10,206,231, 59,251, 53,154,229,130,138,159,213,147, 52,185,121,132,175,212, 42, 22,152, 39, 44,186,218,254,140, +210,140,211, 64,215,181,160, 5, 79, 25,147, 40,161, 75, 41,116,187,142,166,181,213,114,168,232,218,142,211,249, 76, 74,165, 18, +190,162,236, 17, 21, 50,230,243,129,146, 51, 59,215, 81, 50,196, 26,147,170,180,163,233, 90,250,254,204,187,251,143,148, 24, 49, + 40, 26,237, 42,221,111, 62,172, 50,166,162, 82,115,202,244,253,136,247,147, 8,149,173, 33, 41,241,177,203,224,200,129,179,204, +239, 94,204, 25, 99, 27,118,199, 29,211, 24,233,135, 65, 70,215,245,112, 83,104,154,195, 13,251,189, 4,195,220,159, 31,107,160, +144, 1,173,105, 93, 67,242,129, 97, 12, 24, 43, 5, 9,165, 16,166,243,130,160,158, 39, 76, 33, 6, 66, 72, 24, 45, 55,231, 28, + 38,156,145,253,121, 99, 45,175, 14, 59,118, 86, 19,189, 39,170, 36, 41,107, 89,222,159,249, 0, 84,115, 68,173,151,207,138,214, +107,113,158, 82, 18,219,108, 8,100, 10,182,113,104, 43, 58,134, 84, 10,218,154, 5,223,156, 66,168,136, 84,217,181,231, 88,239, + 33,198, 80, 66,216, 20,191,114, 80,249,148, 46, 86,149,243,138,134,106,181,220, 94,111,115,152,142,247, 94, 72, 15, 37,139,133, +202, 41,218,221,129,105,212,236,186,142, 24, 3,221,241, 64, 63, 14,228, 52,113,122,248, 64,201,178, 90,113,214,160,116, 2,165, + 8, 83,224,215,191,250, 77,189, 46, 77,157, 6,176,168,203,103,205,139,169,161, 79, 90,131, 51, 14,107,229, 0, 23, 60,171, 88, + 40,181,146, 2,101, 94, 97,234, 77,217,106,173, 28,206,185, 90, 31,203,102,172, 46,107, 5, 17, 25,146,100,207, 79,109, 18, 99, + 12,116, 93, 71, 74,117,221, 80, 50,170,134,245,176,124,166, 51,141, 53, 56, 35,158,243, 28,203,178,178, 16, 91,243, 44,148,149, +187, 64,202, 5,227,236,114,159,207, 33, 9,220, 69,131, 53,185,130,104,228, 90,211,198, 44,244,147, 20,228,144,110, 27,121,175, +127,239,159,126,201,190,201,220,127,255, 27,254,240, 15,255, 57,163,143,124,243, 87,127, 67,127, 58,201, 90,160,181,228,211, 25, +139,162,164, 76,242,153,243,195,196,175,190,254,192,135, 80,240,201, 96,237,158,198,102,166,152, 40,202,210,238, 94,129,109,249, +216,103,238,222,223,115, 58,189,163, 61,236,241,169,208,143, 35,218,237, 73, 35,244, 99,224,251,147,231,195,148,137,170,126, 62, +231, 6, 51,203, 61,158, 20,235,109, 70, 83,140,225,207,255,250,151,188,186,125,197,239,255,209,191,225,175,254,244, 63,115,219, + 89, 82,242,168,156,177, 77,131,106,219, 75,245,251,179,184, 87,197,146, 1,190, 29,207,111,179,203,203,188,195,252,209,230,181, + 75, 75, 87, 94,110,238,207,135,165, 92, 40,141, 75,185,176, 75, 92,231,100,109,178, 72, 46,215,205,245,224, 41,155, 35,227, 58, + 40,237, 66,212,117, 69,149, 83,171,226,109,249,218,124,129,125, 93,179,203,231, 73,195, 86,172, 53,147,180,214,133,118, 97, 77, + 87,223,244,164,165,238, 80,171,119,217, 40, 93, 83,164, 10,182,105,112,198, 48,140, 99,237,122,202, 19,205, 91,153,199,245,155, +220,149,249,176, 93, 11,128,167,111, 75,220, 38,144, 21,208,179, 71, 72,109,115,201,103, 14,116,125,164, 44,149,186,209,171, 96, +104,123, 98,235,250,125,228,252, 83, 23,175,241, 34, 69,219, 62,217,173, 48,176,108,253,249,151, 9,120,252, 0, 7, 97,254,187, + 51,153,105,251,245,235,182,161, 92,141,219,159, 78,106,148,186,108,118,174,115,232,175, 76, 7,203,180, 36,165, 72,211, 24, 92, + 99,132, 56,102, 36, 66,113,183,107,100,186,162, 11,218, 66, 76,129,166,233, 24,199,145,148,178, 8,195,148,236,218, 75,129,243, +169,134,164,236,118,114,128, 77,158,113,154,104,109, 35,226, 46, 52, 31, 63, 62, 72,172,101,206,232, 2,199,182, 67,165, 92, 89, +218,174,238,115, 69,229, 61,122, 95,129, 41,178, 68, 23, 59,150,252,183,199,243,132,181, 50,238,246,190,178,194,235, 4,193,199, +196,253,135,123, 1,175,228, 76,211,117, 98,223, 41, 21, 62, 98, 45,166,109,249,240,112, 79, 81,194,118, 80,181,179,114, 74,147, + 80,184,198,209, 15,189,248,109,181, 38, 86, 36, 41, 57, 67,204,139,138, 91, 43,161,106, 89, 45, 93,156,213, 50,106,182, 20, 74, + 10,164,162,233,118, 29,166, 21,142,185, 50, 18, 38,159,115,194,217,134,126, 26,241,161,160,148,197, 24, 41,132,141,179,232, 34, +187, 92,153, 62,248, 5,117, 60, 13,211, 18,146,228, 39, 73, 20,235,186,134, 24, 37,254, 84, 25, 57, 88,218,182,193,251, 80,217, +235,134, 88,146, 8,213,138, 90,174,215,237, 61,108,185,118,106,231, 95,114, 89,226, 98,231,148,182,105,154, 36,124,165, 2,157, +222,127,248, 64,201,153,166,105,133,116,135,162,219,107,206, 99, 18, 81,224,238, 72,240, 9, 75,170,135,162,166,113,141,224, 87, + 81, 53,208, 69,154,135,113, 28,217,237,118, 21,246, 19, 41, 41, 99, 85, 38,165,128, 82,208, 54, 13, 37,167, 26,144,226,171,250, + 92, 46, 96, 85,159,179,190,104,108,106, 51, 83,169,109,210,225,215,157,120, 17,209, 94, 65,120, 9, 69,175, 52,200, 5, 12, 85, +139,134, 28,171, 88, 46, 11, 47,160,212,233,141,208,251, 82, 45, 46, 4,171,172,107, 97, 34, 83,129,117,162,106,141, 37,165, 72, +172,107, 13, 85, 25, 7, 70, 23,118,109,131,210, 53,105, 46, 38,110, 14,123,116,145,191,183,107, 45,209, 79, 52,198, 96,145,194, +243,241,244,128, 74,133,127,241,111,255, 5,175,127,241, 79,248,205, 95,254, 13,109,107,121,184,127, 32,140, 30,123,212, 82,200, +249, 64, 25, 39,252, 57, 50,244,145, 24, 44, 31, 63, 60,144, 77, 87,217, 22,138,157,177,152,198, 50,134, 19, 49, 42,166,146, 57, +188,126, 77, 86, 35,239,223,125, 96,244, 66, 75,188, 63, 15,180, 77,199,121,128,199,177, 16,180,173,107, 5, 1,134,229, 20, 49, +181,177,203,245,206,154,171,184, 50, 99,248,211,255,231,255,227,143,254,183,255,149,221,103,159, 17,252,189, 52,121,117, 12,175, + 15, 29,229,208,173, 68, 57, 85, 71, 76, 79, 18,215,212,203,254,243,217, 2,177,181,243,188,220,102,111, 47, 19,245, 12,100,125, +179, 55,189,226,164,173, 35,242, 57,158,177,108,132, 76, 91,202,208,229,141,182,108,210,221,230, 49,236, 2, 23, 41, 60,189, 99, +207, 55,231,178,238,153,133,103,174,214, 81,183,218,122,168, 87,216,130,252,179,220, 36, 43, 90,173,142,246, 54, 4,186,217, 51, + 63, 31,104, 42, 47,199,138,214, 5,103, 53,214, 66,219, 88, 26, 39,162,152, 56, 77,248,105, 92,200, 66,128,112,170,151,168,220, +188,138,193,106,222,180,169,153,224,115,186,145,218,238,209,175,184,178, 69, 65, 86,171,103,148,122, 3,170,159, 47,138,214, 24, + 99, 37,222,179,138,226,102, 34,157, 4,121,232,229,123, 45, 41,113,170, 92,240,210,183,206,193, 39,215,136,122,106,145,188,238, +230,103, 24,210,133,125,113,126, 63,175,174,203,173,187, 97, 38, 37, 42,173, 54,251,254, 21,251, 59,223,125,117,125, 3, 75, 37, +214, 93, 25,239,175,126,182,237, 9,191, 38, 25,202, 75,146,104,156,165,237,172, 36,157,133, 32,129, 58, 42,163, 85, 89, 68,124, + 41,199,170,126, 22,244, 99,202,146, 82,149,178,236,112, 39, 31,208,104, 14,251, 35,214,138, 32,202, 88, 83, 15, 89, 25,199, 63, +158, 78, 34, 8, 13, 9,135,230,205,254,136,203, 5, 91, 63, 19, 51, 56, 36,134, 68, 44,153,172, 4,228, 43, 94,110,105, 99,167, +144, 8, 81, 70,186, 83,136, 88,215,144,178,136,231,124,136,244,163,103,119, 56,146,149, 18,203,144, 0, 18,150,233,145, 8, 3, + 13,211, 56,214, 66, 76,124,235,165,166, 1,197,224,241, 33, 16, 98,146, 12,242,146,103,139, 51,198, 57, 41, 78, 92, 83,189,217, +107,201,157, 98,194,104,203, 97,183, 39, 5,143, 82,121,177,108,233, 89,240, 24, 11, 37,202, 62,215,123, 9, 65,153, 66, 34, 38, + 68, 64, 84, 88,210,192,230,189,178, 53, 14,148,194, 40, 91,213,220,176,239,118, 4, 31, 22, 71,202,172, 97,208, 53,192, 72, 86, + 5,121,217,151,215,143,136, 76, 0,178, 90, 58, 90,125, 49,211,146, 14,125, 46,130,203, 38, 43, 66,192, 51,150, 87,183,175, 8, + 33, 45,215,186,173,145,154, 93,211,146,115,196, 79, 94,152,249, 20,162,156,254, 20,192, 88, 41,236,231, 27, 91, 12,129, 82, 41, +123,228,132, 74,169,118,221,162, 46, 39, 69, 74, 8,116,141,101,215,136,253, 81, 33, 46, 13,163,168, 43, 14,181,196, 17, 59, 55, +195,127, 10,214, 25,140, 93,239,237, 37,165,133,228,136,210,228, 13, 1,114,241,224,187, 70,112,168, 26,156, 86,216,106,238,181, + 90,215, 85,162, 8,237, 74,201,184,154,230, 54, 67,119, 82,146, 34,129,234, 10, 17,241, 27,148, 36, 86, 58,205, 10,101,202,185, +200,216,158, 34, 76, 4,149,105, 26,201, 84,208, 26,137, 55,214,133, 93, 99,105,172,162,181,134, 56, 5,118,221, 78, 18, 9,173, +229,103,191,248,156,127,251,239,255, 29, 55, 63,185,225,244,205,215, 60,222,221,179,239,246,244,247, 15,180,251,134,195,241, 70, + 8,114,193, 19, 63, 60,114, 62,123,254,238,155, 59,126,245, 15, 31,249,254,190,231, 52,140,156,199,137,209, 39, 82, 42,248, 48, +241,246,237,107,190,250,242, 75,162, 79,124,255,205,183,248, 97,162, 20,203,233, 60, 10,144, 40,107, 9, 99, 26, 61,253,232, 25, +235, 4,137, 26,194, 99, 20, 52,149, 4, 90,106, 68,120, 44,185,186, 40,132,155,239,195,196,127,247,123,191, 67,255,221,215,188, +114,154, 87,135,150, 87,111,142,152,207,143,164, 47,223,172,209,171,165,168,103, 69, 66, 63, 4,151,121, 2, 24,249, 17, 93,251, +162, 32,190, 82, 40,175, 85,239, 37, 92,100,153, 16, 92, 61,230,178, 7, 35, 95,126,172,182,171,208,234, 35, 46,172,214,176,203, + 40, 23, 54,204,215, 53,214, 52, 47,222, 72,253, 4,167,170,138,146,110,118,182,161,205, 54,173,250, 28,242,147,201, 67, 89, 40, +119,170, 86, 95,242,113,176,213,195, 44, 97, 40, 78,103,172,134,206, 88, 25,247, 80,104,246, 45, 49,201,152, 80,145,112, 78, 51, + 4, 81,138, 42, 10,122,121,126,229, 50, 62,118,166,213, 41,158,188,142, 79,212,249,229,130,109,179,157, 74, 47, 1, 59,106,203, +116,175,137, 98,242, 94,230, 75,171,158, 90, 85,229,203, 52,228,106, 23,254,156, 96,237, 57,199,192, 75,127,119,134,251, 60,167, + 97,184,184,118, 46, 38, 2,155,130,160,158,250,229, 98, 2,115,221,145,255,136,235,120,153, 17,173,184, 60, 31, 2, 33,123,218, +182,161,212,188,111, 87, 71,187, 40, 77, 63,140,164, 18, 73, 57,160, 21,124,246,230, 51, 98,156,240, 21, 25,171,148, 40,177,115, +156,247,179,154,221,110,199, 56, 76,220,125,188, 99, 24, 39, 82,202,236,118, 59, 17, 13,105,205,206, 56,180, 81,180,174,195,247, +103,218,166, 19,161, 82,206, 88,215, 80,148,196,136, 22, 20,198, 88, 26,165,241,201, 75, 65,151,178,236,153,131,103, 24,167, 69, +247, 96,173, 35, 35,157,109,201, 5,171, 13,161, 6,155,236,118,114, 16,238,247, 59, 38,239, 41, 9, 82,172,169,106, 83, 88, 16, +159,211,228, 49, 53,107,124, 28, 6,114,202,236,218,150,148,194, 18, 78,147, 82,145,212,169,154, 91, 30, 67,165,229,197,196, 48, +121,201,139,174,123,217, 5,215,172, 52,198,105,146,207,164,156, 68,173, 79,166, 84,127,123, 41,170,114,207,133,196,102,172, 93, +162,120,163,143,164, 28,177,149,145, 62, 12,177, 30,138,162, 69, 65,171, 26,188,146, 9, 94, 86, 33, 33,229,186,158, 84,203,186, + 73,149, 31,179, 57, 20,155,167, 42,122,249, 12,120,239,151,107, 90, 46,223,170, 81,169,218,148,105,154,208,102, 94, 25,212, 66, + 74,107,250, 52, 45,249,226,115,225,158, 82, 38,230, 36,104, 96,192, 42, 57, 0,149,214,164, 81, 4,152, 84,124,235, 48, 77, 50, + 22,223,212,170,212,195,210, 89, 43,247, 35, 59,223, 15,179,172, 35,152, 65, 54,114,157, 80,137,145, 37,207,105,130,171, 85, 77, + 83,131,139,180,198, 26,161,220,201,142,220,226,189, 71, 27, 83,139,128,153, 29, 34, 59,253,156, 10,141,115,116, 93, 71,156,124, +157,114, 38,124, 74, 56,230, 12, 11, 7, 41, 74, 48, 85, 1,149, 34,141, 81,228,105,192,238,247, 36,241,199, 18, 74, 33,199, 68, +131, 97,191,219, 67,154,104,172,229,245,205, 14,157, 19,118,223,178,191,217,163,190,203, 52,187,150,183, 95,188,102,247,229, 23, +124,252,251,255,202,199, 95,127,205,207,255,224,127,224,187,191,248,111,180,214,114,250,230, 29,159,127,249, 5, 28, 52,202, 54, + 36,101,121,127,122,224,239,239,238,249,230,225,132,167, 33, 57,131,143, 9,157, 50, 59,107, 81,177,112,254,120,162, 63,220, 18, +124,194,180, 29,119, 15,119,248, 73,147,139, 38, 23,120, 56, 13,236,218,150, 88, 20, 83,134, 88,100,154, 5, 66,230,108,173,166, +209, 90,240,182,206,224, 75,169,235, 36,133, 86,162, 31,249,251, 95,253, 3,255,211,191,249,151,124,237, 51,147, 19,145,102, 44, + 5,167, 45,198,117,178, 83, 95, 19,118,202, 39, 15,240, 31,162,197,125,242, 96, 87,249,169,111,250, 98, 6,174,159,168,181,183, + 99,253,237,129, 94,100,200,119, 65,148,145, 3,165,200,248,103,190,241,171, 76, 49,165, 90,173,242,213,115,124,106,143, 91,207, +247,114,169, 24, 47,250,162,131,156,187,248,153,136, 86,230,221,217,179,130,234, 92, 39, 11, 74, 24,202,213, 26, 97,173,195,152, +134,198, 58, 65, 33,150, 72, 99, 50,135,174,193, 41,217,225,132, 10,242,112,246, 64,201, 82,177, 79, 49, 18,188,103, 76,177,234, + 2,158,238,154,159,140,142,159, 75, 64,123,238,189,219,172, 55,158, 22,111, 27, 63,249,102,106,177,170,225, 75, 45,106,202,143, +178, 58, 62,187,155,255, 45, 24, 8,159, 4, 32,229,114,121,184,151, 21, 65,187,144,242,102,221,219, 6,162,179,216, 0,159,115, + 45, 60,103,222,184, 80, 93,214,252,120, 20, 37, 21,114,170, 59,206, 44,220,113,107, 44,227, 56,226,131,136,101,238, 62,222,241, +230,245,205,178,107,140, 67,172, 66,174, 70,180, 19,133,152, 90, 0, 0, 0, 32, 0, 73, 68, 65, 84, 69, 70,147,135,227,145,143, + 31, 63,242,241,227,157,140,128, 43, 8,166,105, 26,166,209,115,115,115,172, 17,147,144,134,177, 50,200, 5, 49,130,145,195,169, +104, 69,204, 25,107, 26,134,113,228,120,115,164,127,232,133, 55,223,118,194, 13,167, 44,246, 43, 61,115,218, 43, 64,165, 20, 89, +183,180, 77,203, 20, 60,209, 7, 20, 48,244,131, 8,197,106,103,222,247,103,140, 22,171,147,196,141,139, 35,192,152, 26,226,161, + 69,124,215,182,109, 13,155,145, 36,186,237,138, 76, 25,203,238,208, 65,202, 60,156, 78,220, 30, 90,140,181, 88,107,104,172,160, + 75,165, 42, 83,196, 28,209,104,156,213,117, 92,105,170,152, 77, 18,211, 82,146, 16,149, 20,163, 80,199,140,174, 48,148, 82, 15, +252, 58,106,158,113,166, 86, 98, 96,219,174,149, 34, 38,132, 10, 33, 42,117, 65, 47, 58, 2,201, 26, 23, 76,113,190, 26,251,173, +159,177, 75, 75,164, 18,218,138,184, 26,148, 98,154, 70,108,141, 51,157,166, 9,231,108, 77,104,211,196, 60,227, 85,101, 29, 23, +179, 8,235, 98, 74, 85, 93, 78,205,123, 79, 75, 92, 39, 91,230, 57,194,192, 31,199, 81, 8,134, 41, 83,116, 33, 35,130,180,146, +165,139,158,239,117,185, 78,140,108, 85,181,231, 34,190,236, 89, 64, 40,162,184, 66, 46,138, 56,249, 77,161,173, 23, 14,131, 64, + 97, 52, 86, 73,138,152, 53, 66, 78,204, 73, 26,174,173,240, 56, 86, 79,187,172, 49, 19, 62,103,178, 15,114,184,183, 29, 33, 77, + 21, 64,163, 41, 33,146, 99,164, 49, 6, 93,242, 82, 60,152,170,113,136, 37,129,106, 72, 40,134, 83,207,113,223,112,251,234,150, +190,239,121,117,104,105,140,166, 49,154,227,177,227,254,227, 61, 93,103, 49, 38,211, 54, 10,237, 61,119,127,251, 55,124,253,237, +175,248,253,127,247,175,249,248,155,111,249,252,247,126,206,195,247,223,203,117, 83, 2,166, 52, 48,101,250,251,129,239, 63,156, +232,167, 76,198,145,146,166,143,137, 80, 29, 73, 83, 24,176, 70,209, 30, 26, 62, 60,244,156,206,103,238, 31, 30,171,192,148,117, +170,161, 50,167,193, 19, 81,248, 12,197,136,200, 80,229,128, 81,138, 22, 69, 83,215,143,101, 94,233,105,232, 99,144,130, 10,197, +119,239, 63,242,208, 71,134, 41, 51, 58,105, 18, 69,184,106,208,182, 89, 59,117, 25,163,235, 90,245, 62,127, 88,191, 40,142,123, +134,178,246,169,142,125,190,176, 47,190,159,122,202,234,206, 87, 22,175,203,253,122,190, 18,238,213,248,147,242, 52, 1,236,185, +238,116,254, 26,189, 29, 33,213, 71, 74, 85, 8,163,102,127,227,117,113, 67,190,116, 51, 43,225,123,151,101,132, 91,255,111,206, + 27, 70,201,158,164,118, 48, 77,211,208,180, 59,186,238,200,174,221,201, 46, 81, 23, 12, 9, 83,146,132,206,228, 66,241, 3,217, + 75,236,223, 97,191,195, 57, 67, 86, 64,140,188,251,120, 71, 20,155,240,246,152,218, 64,104,214, 53, 1,234, 19, 5,217, 11,244, + 84,165,149,236, 34, 89,199,206, 82,145,231,181, 88, 81,207,196,219, 22,117, 1, 55,120, 41, 94,245, 83,197,224, 75,211,160,231, +172,129, 79,126,174,178, 33,243,109,126,159,187,233, 39,215,194,115,164,184,231, 48,180,207,126, 38, 46, 69, 10,243,254,212, 88, + 75, 74,243,154, 66,213, 24, 79, 75, 41,154,224, 51,143,167, 19, 90, 25,186,110,191, 92,123,146,128,103,104,155, 70,194, 84,172, + 28,140,239,223,191,103,168,225, 36,146,216,228,100, 76,158, 34,111,222,190, 6, 20, 31,222,125,199,193, 57,210, 56,145, 99,166, +148,136,155,197, 88,202, 96,156, 67,167,140,115, 13, 41, 23,206,125,143,117,194, 21,239,135,190,102,135,167,186, 75, 45, 52,245, + 57, 88,109,232,218,142,105,154, 48,141,147,223,235,225, 86, 42,162,211, 24,201,191,118,173, 99, 28, 71, 73,165,211, 26,239,189, + 8,159, 82,174, 9, 99, 18,165, 23, 84,193, 90, 67, 8, 98, 29,155,145,169, 98,247, 3,215,216, 69,109,174,155, 6, 31, 19, 33, + 66,115,216, 9,159, 62, 71,108,237,244, 94,191,190,197,143, 19,185, 24, 90,165,208,211,132,154, 2,177, 8,120,164, 88, 71,219, + 52, 85,168, 88,234, 88, 23,156, 19,225,214, 28,115,219, 30,246,156,251,179,116, 87, 90, 4,125, 82,224,200,132, 67, 38,124, 66, +197, 83,185, 44,171,148,116,133, 30, 94,108,181,234,170, 65, 82, 25,133, 89, 28, 20,222,251,165,168,153,179, 22,164, 96, 19,235, +157, 82,138,118,215,146, 18, 4,159,136, 5, 9,198, 33,131, 86,188, 58,190, 38,165, 72, 74, 18,203, 75, 17,101,248, 76,105, 76, + 49,131, 42, 50,218, 46,165, 98, 84, 69,159, 99,180,133, 34,227,226, 57,233,165, 40, 69, 86,133, 56,174, 63,235,124, 88,207,244, +187, 92, 87, 67,203,250, 93, 43,172,149,207,191,155,215,181, 37, 85,150,127, 66, 18,235,231,155,143, 38,164,128,177, 6, 40,162, + 11,169, 84, 69, 83,113,198,170, 64,240,147,172, 14,180, 20, 39,251,174, 37,138,173,128, 28,227,178,106,117, 86,160, 48, 89,105, + 6, 31, 73,254, 84,225, 64,158,227,161, 35,133, 72,219, 25, 92, 99,101, 29,102, 13,251,198,113,214,133, 87, 55,123,110,246, 29, +135,125,199,253,135,119,184,183,154, 63,248, 79,255,145,254,235, 95, 99, 95,223, 96,142,175, 81, 71,199,112,119,150, 68, 52, 99, + 9, 15, 35,167,135,137,119, 31, 78,124,253,237, 29, 33, 57, 66,204, 4, 45,244,183, 98, 45, 56,199, 99, 28, 57,189,255,192,237, +232, 25,207, 61,196,140,228,163,137,138, 63,133, 26, 58, 99,101,140,158, 41, 4,185, 81, 44, 45,173, 46, 96,114, 66,151, 34,171, + 79, 50, 86,120, 59,171, 21,214, 88,148,107, 56,188,122,139,230, 81,206, 46,171, 41, 86,161, 92, 83,213,239,179,146,252, 25,236, +233,143, 97,185,231, 92,150,228,174,151, 60,192,215,138,249,167,170,228,109,101,171,158, 32, 75,179, 2,157,245,114,169,148, 79, +168,205,185, 98, 14, 95,103,149, 47,148,182, 45,159,189, 54,253,139,178,117,211,237,102,181,138,230, 22, 64,204,156,179, 62,239, +205,245, 38, 40,166, 42,190,173,169,153,234,179, 18, 19, 85, 5, 35,129,108, 45, 49, 78,140,179, 10,184, 86,161,206, 24, 90,215, + 74, 55,102, 91,178, 58, 51,157,206,228,243, 64,215, 56,218,125,203,171,227, 1,239, 71,198, 20, 25,235, 8,142, 92, 3, 70,140, + 89,172, 40, 51, 90,244,147, 7,228,124,248,149,205, 72,121,246,170,111,124,230, 90, 75,149, 89, 10,151, 1, 13,139, 77,237,210, +195,126,205,198,127,113, 7,254, 35,188,254,101,129,237, 60, 93, 35, 60, 41,218,102,235,206, 21,141,224, 7,128,123,207,236,250, +213,211,108,129,139,107,184, 92, 60, 55,165, 86, 15, 66,170,161, 27,186,226, 71,231,105,207,236, 66,180,214,113,188,121, 45, 62, +232,250,181,130, 83, 21, 76,171,115,178,251,253,240,225,142, 97, 12,245, 48, 21,109,132,173,100, 54,235, 28, 15,167, 71,130,247, + 40,173, 8,100,218,174, 99,240,158,144,100,183,170,148, 33, 27,205, 88,119,120,147,207,180,187, 29,170, 36, 17,131,101, 65,168, +206, 33, 25, 74,107,186,166, 89, 14,239, 82, 18,211, 52, 96,172, 33, 6,191,248,173,115, 41,236,187, 29,195, 48,224,140, 69,187, + 26, 64, 81, 15,232, 69,181, 92, 68,232,180,219,237,152,166,137,113,156,112, 78,138,141,152, 60, 90,107,186,174,163,177, 59, 98, +140,130,167, 53,178,162,200, 5,246,109, 75,163, 11,186, 36,206,143,143, 52,214,176, 55,210, 69, 91, 45, 49,150,165, 36,188, 31, + 73, 49,145, 17,223,178,115, 86,254,217, 8,113,108,244,146,164, 54,142,190,142,248, 71,172,107, 37,168,165,192, 56, 12,180,109, +203,193, 53,226, 68,168, 66,212,133,219, 95, 69,151,185, 58, 24,230,194, 89, 27,187, 16,216,230, 59,199,156,237,190,220, 63, 55, +247,152,249,207,140, 17, 21,185,248,213, 51,214,238, 41,133,165,176,153,215, 18, 33, 70,114,202,180,251,189,188, 62,245,241,135, + 97, 88,236, 59,199,227,129,113, 28,153,242, 4, 90, 38, 51,169,200,202,209,199, 36,227,106,192,230, 25,230,146, 36,137,179,210, +232,178, 18,158,206,108,169, 53, 21,215,187,124,206, 42, 81,178,168, 25, 94, 85,150,140,249, 84, 71,253,177,136,102, 68,107,197, + 84,243,217,141,145,241,123,140,178,170,211,198,202,247,137, 81,130,131, 54,241,200, 57, 38,156,169, 14,161, 2,157,182,114,136, +251, 72, 9, 18,244,147,149,150,195, 95, 67, 68,145,178, 38,166, 44,118, 74, 50, 93,215,240,246,245, 13,175,143,123,108,201, 88, +109, 5,158,164, 90, 94,189, 58,114,187,111,137,121,226,205,155, 27, 94, 29,246,236,187, 29,159,255,222, 27,254,217,127,250, 31, +185,251,187, 95,162,140,229,245, 63,253,138,111,254,223,191,228,203,223,255, 93,126,245,127,254, 95,232, 8,106, 10,220,191,191, +231, 55,239, 31,248,219,111,223,243,224, 19, 33, 1, 88,112, 45,177, 82,206,252,224, 73, 64, 28, 60,231,241, 1, 93, 32,142,158, + 70, 59,140,201, 53,132,107,109, 90, 83, 73, 20,165,176, 74,236,158,121,131, 5, 87,202, 84,253,129, 76,120, 76, 93,207,196,148, +153,107,195, 16, 51,187,253, 13,227,199, 59,124,136, 24,103,208,173, 21,193,221, 34,184, 42, 63,188, 7,127,121,223,190,118,102, +215,118,162,231,124,237,159,178,129, 61,247,152, 89,205,148,184, 79,175, 10, 94,210, 1,204, 23,233,124,209, 92,112,194,244, 60, + 26, 95,133, 84,165,212, 15,181,210,181, 68,186, 12, 29,201,245, 13, 81,117,212, 5,114,200,207, 17,129,170,230, 4,139,189,172, + 44,144,138, 82,102,250, 84, 98, 26, 7, 66, 72,104,213,215, 61,158, 90,222,192,174,233,100, 47,234, 20, 24, 75,112,150,201,143, + 12,211,128, 77,147,120,116,155,134, 93, 49,152,156, 9, 33,203, 46, 55, 9,199,122,157,124,148, 39, 2,198,151,118,234,229,210, +189, 37,171, 15,163, 37, 75, 93,203, 49,173,183,240, 25,173, 95,164,177, 61,247, 56,243, 14,252, 31,147, 27,240,210,200,253,217, +159,133,151,189,138,159,154, 4, 60, 41, 50,127,196,243,219,254,221,242,194, 68,202, 88, 81,180, 6,239,235,123,235,232,186, 6, +148,136,217,230,104,209, 20, 34,187, 58,150,206, 57,243,253,251, 59,198,209, 75, 7, 87,196,154, 40,152, 81,185,126,134,105, 98, +127, 56,224,167,137,174,107, 48,104, 30,238, 31,104,173,133,144,228,235,180, 8,115,114, 85,251,230, 92,152,198, 81,198,202, 90, +232, 96,206, 89,116, 13,143,208, 37,147, 83,148,157,170,209,128,112,212,167,193,211,184, 70,214, 4, 53, 68, 38,214,220,117,225, +214,155,133,227, 30,230,120, 80, 86, 43,217,252,103, 34, 54, 20,250,158,181, 70,242,173,141,162,239,207,164, 24, 37,168,168, 70, +139, 30,111,110,240,227,192,255,207,218,155,245, 88,150,157,233,121,207,183,166,189,207, 16, 57,212,192,170, 34,217,236,185, 37, + 53,108,217, 87,210,157, 33,223,248,255, 10, 16, 4, 24,144,124, 97, 67,144,100,192,118, 11,205,238, 38,187, 73, 22,201,154,178, + 42, 43, 43, 51, 99, 56,103,239, 53,250,226, 91,123,159,115, 34, 35,179,170, 27, 34, 81,168,202, 41, 50,226,196, 62,107,125,195, +251, 62,111,174, 77,207, 79, 99,217,141, 35,227,224,105, 45, 83,115,226,238,168,133, 65,176,142,216, 20, 33,155,146,126,205, 34, + 16,167,194,113,154,104,162,254,250, 82,155,162,119,173,229, 56,117,200,140, 83,161, 94, 78,133, 90,163,126,174, 86,249,244,231, +192, 37, 67,215,230,116, 85,246,105, 80, 88, 47,163, 35,206,118,233,244,169,253,178, 90, 92,109,182, 75, 22,106,143,223, 77, 73, +217, 5, 49,230, 30, 6,163,207,214,118,187, 99, 58, 30,153, 15, 71,172,181,108, 6, 77,114, 59, 30,142,171,112,116,154, 38, 74, +171, 88,103, 41,173, 49, 4, 79,237,232, 95,245,208, 55, 76,133,178,144, 54, 91, 82,215, 64,107,148,220,150,116, 84,125,142,115, +198, 59,189,216, 91, 23, 6,158,107,105,114, 81, 92,174,102, 88,180,181,144, 45,181,246,149, 75,211,179,122, 65,171,138,158,217, +206,133,110,135, 83,125,137,233,235, 78,239, 92, 95, 79,218, 83,118,131,208, 1, 62,134,105,154, 21,183,220, 20, 96,145,155, 90, +115, 75,171, 61,158,183, 50, 12,142,253,118,199,213,224,216, 59, 67,160,178,223, 12, 61,207, 65, 51, 8,106,203,236,158,190, 15, +190, 98,130,101, 55, 14,108, 71,207,163, 39, 79,248,246,215,191, 6,147,121,255, 47,254,146,111,255,230,111,121,255, 95,252, 41, + 55, 63,255, 20,139,134,184,212,155,153, 87,207, 95,243,226,118,226, 88, 44,206, 5, 36,120, 68, 28, 38,120,142,181,119,212,147, + 96, 91,165,196,130, 51,129, 41, 38,112, 3, 55,113,102,172,130, 51,173,199, 18, 55,189,208,151,169,242,178,192, 17, 33,181, 70, + 2, 77,130,235, 80,160, 98, 44,121,217,174,116,176,143, 17,131,183,134,151,223,125,199,163, 16, 24, 55, 35,206,219,222,149,134, +179,157,186,180,183, 10, 63, 30,186,156,127, 72, 1,176,140,150,190,143,184,246,174,238,173,222,163,213,138,105,103, 56,212,246, +224,231,248,182,241,238,234,169,238,137,104, 39,197,244,201, 71,189,254,248, 98,180, 86, 79,221,214, 50,153, 53,172,162,183, 19, + 76,165, 41,172,160, 87,235,214,117, 21,186, 52, 90,143,211, 91, 62,143,156,213, 95,168, 85,217, 2,119,209, 52,174, 60, 31,153, +172,215, 44, 95,163,213,126, 73, 51,180,138, 77,125,220, 94, 22, 69, 48, 56, 67,143,137, 61, 75, 74,235,187,206, 38,237,123, 95, +127,185,231, 6,120,219,183, 88, 68, 35, 58, 87, 96, 14,178,126,127,238,173,241, 31,204, 50,127,107,119,253,131, 9,176,141,115, +109,220,101,199,222,222,218,136,159,251,215, 31,186,180,229,109, 23,245, 59, 69,161,167,181, 85,123,151,137,179,106,199,158,179, +142,224,141,133, 16, 60,198,193, 28, 39, 74, 49, 12, 33,232, 52, 7, 77,217,170, 61,195, 59,165, 76,206, 89, 49,152,131, 61,237, +187, 91, 91, 59,251, 48, 14,236,247, 59,190,253,230, 57, 62,120, 36,235,115,235,189, 35,181, 74,108,149, 57, 39, 90, 21, 66,216, +146,139,162,107, 83,141, 29,142,163, 74,228,165, 24,148,190, 63,175, 61,113, 14,192,123,183,250,145,107,107,228, 24,149,211, 94, + 10, 85, 26, 53,170,198,165, 94,168,205, 79,147, 48, 89,163, 78,117,207, 45, 6,124,119, 83,140,131,103, 51, 14,196, 41,145, 83, + 82, 54,124,255,181,101,175, 31,198,145,205,224, 25,188,211,213, 20, 22, 35, 22,164, 80,114, 35, 38,157, 58,148, 82,152,230, 68, + 46,112, 55,233,136, 91,140,101, 78, 73,149,213, 29,177,218, 74,165, 26,253,113,154, 38,196,154,213,233, 97,172, 91, 61,222,149, + 83,202,155,142,227,101,213, 2, 53,121,211, 73,163, 83,174,179,175, 89,122, 44,106, 47, 14, 26, 93,220,217,227, 65,143,211, 97, +237,224,230, 57,174,221,250, 50, 97, 84, 54, 69, 89, 95, 11, 13, 95,209,232,214,156,149,240, 86, 74,195, 6, 79,174, 89, 69,105, + 41,227,188,235, 83, 58,200, 49,246,207, 87,131,124, 74, 65, 47,140,110, 33, 52,162, 60, 2,233, 78,134, 41, 38,172, 61,185,160, +172, 57,179,224, 74,235,107, 21,157, 22,149,156,245,210,238, 34,198, 86, 27, 46,168,229, 76,147,254,212, 71,221, 90,237, 96, 41, + 57,203, 95,175,250,251,154,206,156, 23, 92,176, 49,134,148, 34,213,232, 69,151,107,111, 76,218,146,128,168, 5,196, 56, 4,182, +227, 64,176,194,198,130, 47,137, 80, 65,178, 96, 90,192, 25,248,217, 39, 31, 49,221,188, 64,164,224, 6,193, 22,131,219, 58,118, + 87, 35,193, 90, 14, 95, 62, 35,108, 62,228, 71,255,250, 95,114,248,226, 51,118, 31,188,135, 9, 6,191, 55, 76,166, 81,110,143, + 28,142,145,103,223, 92,243,213,235, 3,183, 51,196, 2, 81, 50, 98, 42,182, 85,170, 53,164,168, 19,149,221,110,207,110,187,229, +230,230,182, 23,110, 6,235,131,186, 23,154,144, 99,193, 58,213, 72, 44,162,203,214, 22, 52,184, 33,182,194,177, 23, 70,222,168, +181, 53,150,202, 92, 84, 80, 87,251,235, 87, 75,130,154,121,245,221, 11,254,232,147,189,146, 6,141,129,230,168,243, 25, 38,246, +135, 66, 96,238,131, 73,218, 61,250,218, 27,168,217, 31, 0,178,185, 56, 48,207, 14,196, 42,239,234,146, 56, 67, 32,242, 86,202, +221, 15,230,223,200, 9,137,122, 34,211, 40, 89,203,156,109,219,181,140, 86, 43, 77,235,254,244,101, 55,101,209,111,134,119, 90, +209,121,175, 15,120,138,179,118, 34,157, 41, 93, 75, 65,140,122,153,131,119,120,231,181, 41,110, 25, 67,195,178,164,184, 85,173, +126,107, 5, 84,233,155, 74, 81,124, 38,234,105,174, 20,173, 90,171,118, 94,173, 84, 16,223, 9,110, 6, 19,204, 69,206,248,219, + 96,254,114, 15,167,183,238,226, 47,110,250, 19, 11,192,180, 69,177,219,163, 2,215, 11,241, 28, 91,219,222, 16,183,253, 83, 59, +117,145, 55, 59,240, 5,255,122,201,136,145,119,142,214,219, 3, 95,239, 67,107,161,239, 19,135, 74,231, 88,191, 91, 36,175,207, +143,117, 11, 26,182, 48,134,128, 15,142, 84, 98,183, 16,121,157,254, 84, 29, 37,111, 54, 86, 15,102,231, 58,201,207, 50,142,158, +224,195,154, 80, 54, 71,141,105,173, 52,188,245,188,186,190,166, 9,164, 90, 52, 87,189,154,149,127, 47,214,226,197,146, 83,101, +158, 38,156,119,170,100, 94,132,165,165,232,231,104,124,255, 53, 85, 25,235,136, 24,194,232,217,237,118,188,126,125,163,222,234, +222, 49,148,154,251,170,167,173,148, 58,122,103,119,126,153,159, 63, 7, 58,182, 85,197, 74, 74, 17, 99,233, 76,115,215, 67,110, + 2, 99, 48, 12,219, 29,223,188,122,221,109,172, 10, 79,178, 34, 12, 33, 16,211, 4, 69, 83,185, 82,170,164, 92,180, 91,173,149, +134, 37,197,130, 56,143,193,145, 19, 88,103,176,226, 41, 77,216,108,183,228, 90,153,227, 76, 42, 17, 63,248,174, 32,175, 61,214, + 91, 47, 14,237, 80,245, 89,177, 86, 45,109,173, 46,233, 99,122,249,183, 94,201, 63, 68,162, 60,105, 85,116, 92,220,218,242,252, + 26,134, 97,160,212, 76,173,185,143,234,181,176,223,237,118,220,222, 30,214,226, 25, 78, 5,210,102, 19, 58, 95, 95,139,196,152, + 35,214, 90, 21, 75,206, 26,139,235, 67,231, 90,244,177,116,142, 71, 21, 24, 90, 75, 79,251,165,164, 74,179, 70, 47, 13, 55,156, +248,240,232,153,101,172, 70,148, 26, 49,228, 14, 65,178, 34,212,154,213,174, 25,156, 38,193,233,252,185, 19,221, 52, 12,165,164, +168, 54,193,166,171, 36,231,140, 66,105, 68,144,142, 17,182, 86,109,115, 53,165, 85, 9, 84,123, 67,228,122, 94, 64, 45,133, 68, +237,192, 28,167,103, 93,167,231,121,103, 25, 54, 65, 39, 90, 22, 6, 35,132,150,217,136, 96, 91,193,101, 52,229,175, 68, 66,181, +236,131,229,233,135,239,211,218, 12,174, 48, 62,222, 96,131,225,201,135,143, 56, 94, 31,216,252,236, 35,126,244,175,255, 37,183, +223,189, 32,123,207,163,199,143,185,125,254,156,221,143, 63, 70,156,225,155,231, 47,184,187,153,249,250,250,142, 47,110, 15,220, + 52,141,164,101, 55, 16,134, 64, 44, 9, 83, 18,146, 19,173, 85, 94,223,190, 82,184, 1, 58,228,204, 49,169,101,213, 40, 89, 82, +125,194,170, 83,210,132,205,178,222, 97,138, 99, 54,204,165, 82, 69, 72,221,185,149, 27,164,210,104, 29, 53,141,129, 31,253,232, +131,142, 76,214,194,222,249,110, 28, 44,134,103,191,255, 22,167, 21,195,217,200,100, 57,132,151,159, 59, 31,117, 55, 89,149,224, + 75, 42,151, 60,184,111,228,141, 93,246, 63,234, 98, 63, 79, 34,107,231, 36,180,122,233,131, 91, 47, 63,222,248,187,223,246,247, + 20,234, 41,197,237,141,207,105,249,122,212,211,187,136,231, 26, 26,105, 40,103,145,167,205, 44,185,235,221,135,137, 48, 88,203, +198,123,198,193,147, 91,101,158,143, 28,167, 89, 35, 26,139, 42, 66,173, 49,108,134, 13,155,237,142,113,220, 49,132,160, 86,154, +146,145,146, 48,181, 96, 23,209, 94, 7,187,148, 90,152,147,138, 66,230, 90, 41, 82, 41, 13, 74, 19,172,243, 24,235,200, 41,246, +194,161, 34, 81,244,224, 49, 5, 91, 5, 59,168,144,175,180,170, 19,134,174,192, 95,161,183,114, 1, 36, 56, 19,238, 55,205,102, +175, 13,204, 18, 18, 81,250, 67,105,168,125,188,111,164, 93, 82,237,228,161,239,249,233, 98, 94,202, 55,189,148,101,221, 67, 66, +187,215, 85,179,250,222,233,129,162,242,208,133,125, 95,157,222,228, 1,146, 76,189,216,149,223, 95, 30,189,113,177,191, 33,142, +188,252,175, 38,111,186, 12,206,182,239,171,114,117, 21,161, 90, 81, 43,146, 87, 90,220, 24, 6, 74,243,196,216, 83,215,150, 30, +176,169, 61,171,228,196, 56, 14,216,172,207,140,247,161,251,222, 61,211, 60,147,211, 12,198,112,156,103,142,243,196,214,121,172, + 46, 70,241,214,145,110, 39,164,130, 56,171,113,174, 52,252,232,245,251, 83,192, 25,141, 19,213,253,167, 34,133, 77,183, 60,145, + 42, 67,131, 97, 12,188,247,163,167,216,209, 50,205, 55, 28,103,104, 29,214, 37, 98,206, 22, 29, 13,235, 13, 53, 42, 8,102,161, +128,213, 90,123,200,166,118,169,206,106, 7,153,122,102,123,138,133,217, 22, 68, 60,214, 5, 85,106, 87,184,190,185,165,166, 72, + 8,150,150, 35,185, 53,170, 8,243,156,116,146, 17, 51,113, 78,204,169, 49,199,168,217,219,198, 81,138,250,201,155,148,245,251, + 35, 86,104, 89,185,224,199,195,129,113,179,193, 25, 75, 69,125,234,214, 40, 98,119,138,113,141,245,213,132,189,210,149,225,101, +213,207,128,190,239,107, 43,235,247,181,118,246, 64, 93,159, 91,115, 66, 26,117, 11,171, 22, 55, 61,100, 70, 42,185,230, 53, 67, +188,244, 34,125,154,110, 88,114, 1, 22,135, 67, 74,145,214,191, 54, 63, 56,114, 74,171,152, 81, 3,112,238, 58,138,214, 96,155, + 65,172, 80,115,239,230, 93,192, 45,161, 65, 69,161, 66,130, 48,110,134, 53,255, 92,133,187, 14, 35, 66, 78,185, 23,119,134, 86, +122,247, 93, 27,133,130,179,157, 6, 88, 33,149, 46, 38, 68,213,239, 58, 13, 49, 56,134,142,174,214, 53, 74,156,115, 71,193,106, +131, 17,172,165,148,172, 90,191,166,158,236, 34, 96,189, 35, 21, 21, 3,182,170,250,142, 82, 53,189,173, 74,211,247,141, 17, 70, + 31, 8,222, 51,120,131, 19,195, 96,244, 34, 55, 77,181, 86,206, 26,156,113, 4,231, 9,214,192, 60,177, 29, 71,220, 80, 24,124, +164, 57,176,143,246,132,221, 35,222, 43, 71, 94,186,198,211,127,246, 71, 76,243,196,225,213,107, 62,248,243, 63,227,249,239, 63, +229,189,167, 79,184,251,197,231,140,126,207, 47,126,245,140,111,190,187,227,235,151, 7,142, 71, 13, 80, 33, 88, 82,205,164, 73, + 19, 10,155,104,164, 43,198,173,176,161,249,112,196, 25,183,130,164, 84,225,159,113, 98,250,253,217, 29, 23, 61, 27, 94,204, 50, +233,213, 51, 85, 35, 89,187,165,181, 83, 82,109,169, 20, 17,146,129, 79,254,224, 39,252,246,215,191,194, 53, 29,213,235,250,207, +129,108,249,244,231,255,128, 83, 63,115,125, 99,188,190,142,163,219,219,135,139,242, 61,163,247,119, 9,231,126, 40,122,246, 33, +160,204, 67,106,232,119,141,223,239,143, 96,223,102,229, 90,238, 52,211,204, 89,231,121, 70, 98,235, 59,118, 49, 74,192,162,123, +228,173,177, 4,107,216, 14, 58,246,153,231, 35,135, 52,113, 60,196,158,141,237, 24,194,192,126,187, 99, 55,140, 92,109,183,140, +227, 6,235,134, 62,230, 40,212, 20,169,181,173,157, 60,173,208,233, 16, 26,149,105, 12,197, 10, 41, 47,140,117,165, 29,209,211, +172,140,117, 24,167, 7, 68,201, 69,189,208,162,192,130, 92, 11, 46, 56, 21,245,181, 14,135, 49, 58,198,212, 58,109, 25, 21,158, +232,112,235,172, 98,137,152,236,224,144, 85,128,216,116, 50,113, 10,151,233,105,110, 92, 70,217,222, 79, 87, 89,186,175,245,207, + 93,252,150,251,118, 32,121,243,110,126, 0, 11,251,230,115,210, 30,152,197,156,121,210,219, 9,121,251,131,158,187,183,205, 52, +228,173,115,159,206, 46,232,194,185, 5,158,225,180,152,210, 75,218, 17,239, 14,196, 57,146, 98,194,121,181, 92,169, 98, 93, 95, +207,171,171, 43,238, 14, 7,253,179,125,108, 27, 99, 84,242,212, 2,171, 17,195,163,171,199,140, 70, 11,195,148, 34,187,253, 21, + 83, 21,110,174,111, 41, 89, 21,182,202, 86, 55,196,213, 7,141, 94,118, 70, 89,219,214,233,161, 91,115, 97, 48,194,198, 7,130, +179,152,154,241,214,242,248,241,142,155,219, 9,234,146,192,169, 5,128,181,167,228, 63,231, 23,164, 39,125,140,110, 78, 23,200, + 66, 9, 52, 66,206, 42, 98, 27,134,129,199,143, 31, 99,140,225,238,238,150,155,219, 91, 82,204,218, 57, 6,191,146,206,106, 47, +233, 14,135, 25, 83, 27,241, 48,235,184, 90, 58,181,207,185, 94,104, 42, 62, 52, 47,162, 53, 52,152,198, 57,219,137, 94, 74, 91, +203,165,224, 71, 79, 42,234,149, 15,189,163, 29,135, 13,133,198,225,120,236, 97, 49,181, 3,115,219,218,165, 91,107,145, 37, 5, +237,172,176, 89, 92, 64, 70,236,122,118, 46,161, 28,230,140,133, 94, 74, 23,195,181,174,140,174,234, 36, 89,108,127, 75,104,203, + 52, 77, 93, 67,161,123,115,205, 12,112, 43, 95, 94,187,230, 29, 55, 55,183, 43, 96,170,244, 11,221, 24,189,224,148, 7,160,221, +162,174,165,117,162,162, 25, 22,141, 84,244,235,243,214,209,164,145, 82,102,191,221, 18,227,172,251, 95,192,121,191, 58, 93,156, + 83,182,187,235, 40, 96, 37,236, 25,156, 49,148,190,163, 87,130,155,218,180, 92,215, 88,184,190, 15,175,247, 28, 77,181, 86,108, + 81,159, 61, 73,117, 28,182, 53,188, 31,212,175, 29, 44,222,153, 14, 3,171, 12,214,226,164,170,253,203, 6,181, 21,118,112, 81, +109,130,119, 14,111, 13,155,224,105, 37,113,123, 56,176, 51,142,159,253,241, 39,180,141,101,248,201,143,176,227, 35,134,249,192, +123, 41,227,114,229,229,103,159,243,254,159,253, 49,204,145,157,243,152, 87,183,140,135,204,179,111,174,249,221, 55, 55,220,205, +194,161,168, 29,181, 89,143, 25,148, 47,143, 64, 73, 25, 51, 14, 24,227, 53,123, 96,154, 86,191, 77,234,232, 92, 99, 44, 82,187, +252,186,235, 73, 26,166,167,206, 73,135, 81,169,224,240,212, 96,235, 61,163, 54,237,218,125,109, 58, 25,217,140, 3,127,249,103, +127,206, 95,255,199,255,200,199, 64, 8, 14, 27, 60,205, 91,104,133,195, 87, 95,222, 75,105, 59, 83,244,174, 81,149,111,153,205, +203, 89, 12,227,249, 33,250,125,118,164,127,202,255, 30, 2,145, 60,228,109,190, 63, 29,248, 62,241,214, 59,126,227,217, 13, 34, +171,117,105,189, 0,170, 42,172,157, 8, 78, 26,206, 20,130, 55,164, 60,113, 59, 31, 59, 69,171, 34, 98,216,110,118, 42,228,216, +238,217,141, 27,130,115,140, 62, 80,209,234, 88,153,212,141, 56,207, 76,199, 59,226,116,160,214,220, 5,119,170,190, 53, 70,247, +119,185, 22, 90,110, 43,173, 74, 90,211,253, 74, 23, 82, 57, 52, 87,121,177, 37,150,238, 65, 77,210, 24, 69,247,151,118,129,240, + 45,236,120, 49,125, 15,184, 44,228,213,250, 82, 22,126,251, 26,221, 40,103,195,247,123,112, 23,228,108,202, 33,107,175,122,234, +100,219, 3, 89,238,237,158, 21,168,173, 2,156,115, 95,252,229,253,217,222,196, 13, 63,248,188,180,119,236,147,100, 45, 78,254, +113,151,249,247, 60, 79,103, 9,114,210, 78,217,214,231,202,121,105,167,215,231,120, 60,118, 47,117,233,204,130, 19, 95,187,181, + 74,232, 40, 79,239,221,170, 72,182,214,210,234,164,209,166, 57, 51,134, 1,235,189,190,255, 98,194,134,192,147,247,158, 32,185, +112,245,222, 35, 74,205, 76, 57, 43,125, 77,132,146, 83, 79,206, 90,114,175,165,147,199,212,126,105, 74,195,117, 8,213,124,156, +240,118,195,241, 56, 19,182, 35, 87,219, 61, 33,188,102,238, 59,241,218,237, 53, 86, 84,200,100, 68,112, 65, 24, 54,158, 15,127, +244, 17, 47, 94,124,199,235, 87,175,117, 42,212,167,128,203,138, 97, 24, 6,198,113,195,213,213, 21,222,123,174,111,110,136, 41, +129,209,252,235,148, 75, 87,195, 71,182,206,232,232,187, 8,121,202,204,135,163,186, 43,108, 80,145, 23, 39, 34, 31,168, 8, 78, +196, 32, 85, 95,233,121,142,248, 16, 24, 55, 27, 90,131,227,113, 34, 4,175,115, 31, 35,152,102,201, 41, 51,132,192, 52,207,132, +113,196,117,189,192,210, 57, 25,163,153,222,244,172,120, 99,141,162, 98,123,116,176, 65,131, 74,106, 83, 59, 99,206, 89,215, 35, + 85,241,191,138,123,214,142,223,244,247, 84, 24, 71, 98,236, 28,249,123,231,210, 18,252, 98, 59, 47,192,117,146,228,221,221, 93, +167, 56, 10, 47, 95,190, 84,161,161, 83, 37,125, 41,218,225,135, 16, 16, 3,165,196, 53, 40, 39,151,132,239,214,195, 82,203,250, + 44, 45,239, 40, 99, 13, 20, 97, 24,135,174,158,215,184,211, 37, 6,122, 41,194,115,202,122,137, 24,213,214, 44,137,127, 98, 12, + 37,118, 40,209,116, 84, 71,133, 49,125, 39, 94,169,198, 80,227,172, 84,180, 14,250, 89,195,165, 68, 8,131, 39, 56,207,102, 28, +117,173, 96, 45, 70,105, 3,218, 52,137,129,106,176,173, 66, 74,104,253, 58, 43, 9,207, 26, 6,107,241, 29,122, 99,164, 50, 6, + 11,110,224,238,112,205,143,255,228,159, 97,158, 62,194,254,248, 9,238,199,159,128,217,225,226, 68,121,241, 29, 55,127,247, 43, +158,252,229,207,144, 82,152, 62,251,138,253,184, 39,127,241, 53,183, 95,189,230,110,106, 60,187,155, 41,197,112, 59, 39,138,177, +164, 86,144, 12,214,219, 14,100, 50,228,152, 9,195,134,216, 42,136, 37,166,121,229,151, 72, 7, 43,169,254,164,246, 53,238,137, +145,177,130, 80,251,138, 85,141,207,221,237,181, 20,133,125,170,152, 59, 33,240, 95,253,143,255, 19,207,126,245, 27,236, 60, 49, +238, 44,195,110, 64,130, 3,235,120,254,229, 51,230,111, 95,156, 93,234, 15, 53, 36,157, 30,246, 80,215,116,121, 65,190,153, 45, +254,238,136,203,127,250,229,126,255,239,184, 63, 17,248,190,139,251,251,246,252,230,109, 29,126, 23,147,152,238, 5,245,198, 50, +120,139,247,234,116,159,230, 35,199,227,113, 69,192,110,198, 13,143,175, 30,243,120,127,197, 54,108,240,189, 61,202,113,230,102, + 58, 82, 16, 82,209,192,131, 41,206, 28, 14,183,212,154,201, 57, 98, 68,171,220,209, 7,156,104, 55, 45, 70, 83,140, 68, 26,174, + 53,189,140,187,247,183,168, 25,146,234,108, 79,112,202, 93,140,151,213,199, 94,161,206,137, 92,213,242,230,156, 30, 82, 77,212, +166,118, 46,223,149, 51,202,158,172,137,121,230,108,132, 94, 47,174,217, 21,229,122, 1,150, 63, 93,170,114,206, 33, 48,231,169, + 58,247, 25, 5,178, 42, 66,223,128,222,252,163,158,145,118, 26,181,191, 57,172,231,191,239,255,206, 87, 14,103,163,214,158, 40, +103, 67,232, 29,146,156, 44, 79,221,219, 61, 77,115, 23,161,133,254, 76,170, 64, 44,132,129,227,241,176, 10,225,134, 16,122,151, + 14,119,183,119,136, 24, 82, 74, 58,233, 49,174,163,131, 43, 12, 70,211,222, 40, 92, 61,222, 99, 83,101, 48,134, 47,191,252,146, +218, 45,161, 21,112,219, 45,211, 52, 35, 6, 92,167,131,233,161,146, 9,126, 64, 28,180,162, 23,234,221,225, 72,160, 82,234, 43, +174, 62,120,202,251,239, 63,229,235,103,223, 17, 99,233,248, 93,179,118,176,181, 65,174,133,199,143,118,252,155,255,245,127,225, +231,127,253, 55,252,213, 95,253, 55, 37,204, 33, 56,175, 0,153,134,176,219,237,200,165,112,125,125,173, 92,250,121,166,161,216, +208,148, 35,222, 47,153,231,234, 74, 73,177,112,157,110,105, 41, 19,220,128,115,150, 57, 70,221,185,146,181,120, 21, 13,101,201, +165,116, 81,152, 16,134, 64, 41,147,122,129,123,158,123, 19,200,237,244,204, 27, 49,228,146,137,243,140, 21, 97,186, 59,104,145, + 99,100, 5,214, 24, 99,244,239,243,189, 83, 94, 10, 34,236,218, 76,180, 90, 58,155,220,144,179,186, 12, 88,114, 15, 90, 61,197, + 62,208,214,191, 55,116, 62,127, 74,186, 54,139, 81, 59,235, 97, 24, 86, 47,123, 8,129, 97, 8,220,220,220,244, 75, 84, 59,188, +113, 28,152,230,137,199, 87, 87,157,217,159,152,227,188, 90,206, 82,140,125, 47,109,240,214,118, 31,187,130,128,166, 60, 17,188, +190, 22,206, 24,156,117,204,117, 34,230,204,102, 28,117, 77,178,216, 49, 57,101,109, 24, 99,212, 66, 25, 84,168, 39, 69, 5,146, + 19, 16,134,113, 37, 18,182, 6,228, 66,236,118, 91,215,180,152, 48, 11,168,198,128, 15,129, 77,255,199, 91, 37,218,169, 20,180, + 98,234, 98, 75,213,164,193, 97, 24, 59, 78,169,233, 4,167, 21,117, 82,244,241, 53,232,133,110,141,198,243,110, 70,207,221,124, +199,135, 31, 60,225,233,143,222, 35, 63, 30,241,159,124, 4,126, 4, 25, 96,191, 35,150,200, 78, 60, 55,191,249,156,250,187,207, +145, 40,124,245,155,159,179,243, 91,254,246,239,126,203,139,219,196,203, 67,164,137, 71,124,128, 18, 89,182, 83, 70,132, 97, 28, +105,192,205,221,145,231,215,223,130,168, 6,198,186,208,249, 3,244,198,170,116,228,176,215,103,204, 40,147,100,201,126, 55, 52, +172, 81,193, 35,166,158,173, 3,151, 41, 41,189, 88, 52,252,225, 39,159, 96, 14, 7,190,248,135, 95,242,196, 22,246,251,145, 97, + 59, 16,182, 91,252,246, 9,191,254,207,255, 15,207,159, 61,215, 75,125,141, 28,111,114,209,172,182,251,233, 85,194, 15, 18,162, +253,247,190,208,239,251,230,207,125,203,239,178,180,189, 77,244,244, 46, 32,138,116, 49,202,197,159,109,116,158,178,224,140, 97, +244,202, 81,246,193, 81,146,250,136,227, 49, 34,205,225, 92, 96,191,219,243,222,227,199, 92,237,118,120,107,105,185, 50, 31,143, +196,168,251,245,220, 10,169, 86,166, 92,152, 99, 36,119, 30,179,181, 6, 27, 28, 33,184,174,244, 53,189, 74,173,218, 77, 55,131, +147,182,218,243,140,233, 44,248, 98,200, 93,124, 39, 70,171,231, 82,213,230, 70, 87,154,154, 86,186, 77, 35,105,160, 66,243, 72, +247,252,170,218, 95,139,149, 42,231, 89,231,103, 23,214, 18,159,186, 8,176,214, 61,245, 61,245,119, 23, 96,157,103,143, 63, 60, + 18,127,211, 75, 46,152, 55,132,110,247,229,147,231, 88,218,135,139, 51, 89, 35, 82, 47,252, 28,237,237, 66,186,135, 68,152, 15, +138,159, 46,168,134,245,226,243, 58,161,128,245,245,171,181, 82, 98,214,157,104, 63,172, 68,132,176,221,104,134,119, 79,222,243, + 65, 65, 50, 52, 85, 11,231, 53,165,173, 17,194,134, 6, 28, 14, 71,230,105, 38, 37,101,198,123,231,212,142,102, 28,173,100, 54, + 99,192, 7, 79,173,133,113,115,165,129, 40, 24,118,143,119,236,228,199,124,250,249,151,196, 6,177,123,204,141,243,228,146,201, + 85,243,178,107,201,235,238,210, 89,139,120, 75,173,142,121, 62,146,143, 19, 83, 74, 36,129,221,227, 39, 60,122,148,121,249,234, +102,197,206,234, 80,203,210,170,144,114,229,229,119, 55,252,219,127,251,239,214,110,108,179, 25, 9,206, 99,196, 18,227,140, 49, +158,121,154, 87,120, 77,237, 73, 90, 57, 87,114, 58,170,141,195, 41,255,221, 25,163, 89,217, 57,145, 81,124,242,224, 7,110,143, + 7,140, 81,141,136,156,217, 65,157,243,186, 74,106,130,119,190, 23, 80,154, 40, 23,179,218,234,172,215,174,201,121,223,105,118, +170, 72,223,110,119, 28,142, 7, 54,195,176, 94,226,186,231,173,136, 53, 58, 45, 43, 26,127, 91,187,112,111,177,181,154,174,142, +119,206,247, 80, 22,229,153,167,152,112, 98, 21,186, 34,144, 75,198, 7,207, 28,147, 2,134,250, 25,102,173,233,163,246,182, 42, +220,151,172,129,187,187, 91, 98,156, 72, 57,179,221,110,245,178, 15,150, 82,115, 79,199,203, 28, 15,199,213,134, 26,156,195,162, +137,111,135,227, 1,138,234,111, 90,207, 52,111,165,226,141,226, 99,135,190,111,175, 89,167, 9, 62, 56,189,228,251,148, 33,166, +164,171,189,222,220, 45,158,236, 84,106,143, 22,214,157,125,234,136, 97, 99,132, 92,162,114,222,251,247,196,216,158, 93, 96, 68, + 69,162,206, 48, 4,215,173,136,202,136,175, 57,169, 5,216,138,158, 71,165,210,150, 21,227, 34,188,236,148,186, 92, 50,222,118, +139,109,127,198, 74,202,212,158,144,168, 69,140, 99,187,223,243,241, 79, 63, 34,132, 74,221,239,177,219,247,105,198, 33,173, 82, +167, 3, 30,197, 32,231,175, 95,147, 48, 28,239,224,179,223, 93,243,205,243,223,242,249,171, 27,158,191,142,220, 30, 10,195,118, +160,166,138, 56,135, 51,130,247, 22,191, 9, 76,211,204,225, 56, 67,135, 72,165,164, 34,230, 5, 19,190,196,210,150, 82,176, 85, +187,116,235, 60,173, 40, 35, 98, 9, 85, 98, 65,180,155, 78, 9,172,218,176,201,197, 26,187,177, 49, 66,185,185,230,139, 23,207, +217,147,216, 14,150,237,222,241,232,233, 35, 54,219, 71,124,253,197, 11,254,223,191,250,123, 14, 73,250,165, 78,123, 99, 67,190, + 94,146,103,167,220,170,212, 59,247,138, 47, 65, 32, 15,208,190, 30,182, 30,189,157, 42,246, 46, 84,232,187, 46,236,119,121,212, +223, 86,124,156, 3, 22,228, 94, 22,251, 42, 37, 88,187,244,162,185,188,214, 48, 6,199,118,240,108, 67, 96, 74, 73,125,164,115, +194,138,103, 51,108,216,239,174,184,218, 63,226,209,118,164,149,194,221,221, 13,105,142,196, 56, 19, 80,118, 68,226, 0, 0, 32, + 0, 73, 68, 65, 84, 75, 38, 23,237, 44, 20,193,169,246,183, 77,112,120, 55,168,186,211,187,158,141,222, 86,200,205,185,144,237, + 20, 41,171,228, 48,103,116, 87,222,138,142,201, 92, 15, 47, 17,175,248,217, 86, 11,148,204,224, 3,193, 91,229,140,231, 72,170, +145,154, 10, 78, 6,130, 9, 93, 88,212,163, 44,215,212, 53,115,162,203,153,149,183,170,234,233,174,204,215,120,195, 94,252,173, +236,247,243,189,124,187, 84,212,115,122, 92, 46, 85,233, 29, 55,202,217,154,101, 29,234,247,162,195, 60,164,221,184,188,244,197, +156,196,156, 23,185,127,114, 38,192,123,147, 81,248,160,125,239,254, 37,127, 49, 21, 66, 71,170,231, 90,185,229, 32, 59, 1,138, +234, 25, 86,151,213,214, 37,152, 30, 34,195, 26,223,169, 54, 69,237, 98,156, 15, 4,163, 57, 5,223,189,120,181, 50,225, 67, 8, +253, 98, 87, 48,144,237, 43,149,237,102,208, 24,213,210,253,112,125,191, 88,142, 71,254,232,147,143,105,243,204, 87,223,189,228, + 38,102,166, 76, 31,133,235,101, 74,171, 12,195,128,152,158,181,213, 45,111,214, 59,108,211,142,172, 53,184,125,125, 75, 76, 21, + 31, 54,108,198, 13,183,135, 99, 23, 58,118,107, 99,210,117, 83, 77,141,219, 87,183, 56,111,248,224,189,247,113,198,242,234,213, + 43,230,249,168, 86,185,126,200, 47,182, 60, 69,184,234,193,108,172,238, 81,115,204,248,126, 57,197,105, 34, 56,139, 67, 86,241, +214, 16, 6,140, 53,196,121, 98, 51, 14, 76, 81, 57,246, 41,198,149,249, 48, 14, 10,146,177,198,144,147,170,176,231, 56, 97,189, + 87,191,181,219,146, 75, 37,197,212,199,201,149,193,171,154, 60,117, 24,136,218,194, 4,219, 32, 88, 5,235,120,171,239,183, 20, + 35, 88,139,233, 35,232,187,195,157, 34, 88,151,181,149, 17,154, 85,251,236, 24, 2, 83,156,180, 16, 40,122, 65,217,254,121,250, +165,235,237,239,191, 97, 24,214,160, 36,211,233,147,126,112,248,234, 24,198, 64, 74,115,183,186,169, 37, 45, 37,253,126, 57, 99, + 85,184, 85, 27,243, 60,209,156,142,173, 93,103, 11, 96,109,223,132, 41, 75,163,230, 76,233, 83,179, 57,206, 24,171, 52,209, 92, +219,154,170,232,157, 70, 4, 59,107, 80,196,134, 96,131, 10,235, 90,183,194,149, 24,123, 56, 75,208,103, 39,232,247,212, 32,248, +174,215, 8,110, 96,236, 65, 49, 99,112,138,123, 53,154, 29, 47, 43,184, 76, 71,208,185,159, 3,210,187,245,101, 98,208, 80, 63, + 56, 61,228,132, 69,223,208,161, 55, 53,103,106, 11,180,190, 90,216,239,175, 40, 30,252, 7,123,204,135, 31,211,100,160,181,140, + 76,215,212,151, 47,113,227,150,235,215, 55, 56,183,225,248,122,226,197,243, 35, 95, 62,159,248,230, 85,226,213, 12,207, 15, 19, + 25, 65, 43, 59,253,199, 57, 65,134,142,210, 21, 52,149,237,152,176, 38,224,188,234, 10,114,201, 29,236,163, 4,201,101,106, 88, +186, 31,223,152, 37,236, 71,117, 2,182, 55, 76,182,234,200,221,219,158, 34,105, 78,235,109, 35,194,216, 42,110, 58,176,177,176, +113,194,110,239,217, 61,218,226,198, 17,241, 59,254,175,255,227, 63,243,217,183, 25, 92,192,233, 94, 94,119, 94,156, 71,170,222, +155,195,171, 42,179,157,237,152, 23,255,229,101, 26,181, 57, 47, 0,206,196,105,230,236, 2,125,168,203,126,232,242,126,219,238, +252,161, 95, 59, 31,191,127,223,184,254,161,143,119, 94, 24,156,191,240,250,101, 86,130,181,108,188,229,106, 24,216, 14, 30, 99, +132,155,155, 73, 1, 50,214,179, 25,183, 92,109,175, 84,113, 41, 48, 29, 38,230,249,192,156,102, 82,214,177, 90,105,101,221,159, +121,107, 48,152,206,241, 30,212, 11, 12, 72, 45,180,162,182,159,218,131,104, 22, 10, 84, 93, 45, 40,178, 18,238,140, 41,235, 3, + 34, 93,189,186, 48,165,155, 21,245,223,118,133,190,105,141,193, 57, 6, 39,204,197,144, 74, 70, 98,196, 54,168, 98,176,185, 81, + 49, 61,131,125,193, 69, 46,194, 58,211,109, 24,181, 95,174,167,228,186, 78, 13,185, 4,234,223, 7,178, 44,133, 73, 51,103,211, + 22,185, 71,243, 59,187, 0, 91,123,131,234,118,238, 15,111,247,162,111,215,144,160,122,138, 91,149, 53, 58,150, 83,228,237, 25, + 3,254,126, 91,126,177, 42, 88,215, 18,178,126,153,151,182,192,118,150,208, 38, 23,194,251, 53,194,215,200,197,248, 18,148, 10, +181,204, 16,140,177, 23,110, 19,245, 36, 59,188,247,108, 54, 3, 95,126,249,165, 78,135, 22,193,212,172,124,108, 45, 41, 12,193, + 5, 92,183, 24, 57, 31,244,245,170,149, 74, 37, 74, 98, 28, 3,135,195, 13,127,250,227,143,145, 20,121,118,125, 75, 48,142, 50, + 37, 92,240,202, 58,232, 25,219,173,139, 62,189, 15,164,156,104, 98, 17,107, 24,253,134, 52,205, 24, 26,121,154,200,115,193,137, +101,235, 29, 49,197,117,149,226,197, 98,157,103,179,221,168,158,212,194,213,110,199,179,103, 95,173, 12,114,141,250,204, 26,176, +210, 69, 86, 10, 58, 41,140, 97, 80, 44,107,206, 61,156, 68,168, 49,225, 4, 28, 13, 39, 2, 37,227,125,192,136,213, 51, 36, 25, +106, 74, 12,214,174, 57, 8, 85, 52,115, 30,151, 84,180,229, 7,140, 21, 98, 42,157,169,174, 15,219, 60,205, 10, 76,105, 13,111, +245, 57, 9, 33,172, 23,156, 89,158,161, 14,131,176, 13,230,146,113, 75,212,112, 83, 11,159, 23,207, 20,103,182,195, 64, 41,133, + 16,188,210,250, 98,210,247,177, 88,230,121, 34, 39,197,164,230, 78, 0,116,198,145,139, 98, 85,165, 95,206, 11,237,114,121, 38, +150, 21,204, 28, 35,219,237,150,121,154, 86, 27,155, 49,134, 56,167,149,230,104,141, 78, 59,172,181,132, 97, 32,199,164,236, 11, +163, 25,242,166,139,233,188,247, 74, 4,220,140,212, 90,152,167, 25, 55,216, 78, 10,236,128,174,218,167, 40, 85, 21,239,154, 79, + 94, 48, 24,114,156,207,222,230,109,229,251,151,210, 86, 1,168,244,108,116,103,148, 5, 63, 56, 7, 45,247,181,165, 80,115, 63, +171,122,208,209,226,197, 87,181,120, 91,167, 23,218, 56,104, 88,137, 69,186,134,161, 82,171,244,105, 64,235, 36, 59, 85,191, 67, +165,180, 66,204,145,143, 54, 79, 9,251, 1,243,225, 19,216,238,145,102, 33,223,144,126,255, 91,234,171,215,184, 15,159, 18, 30, + 61,225,230, 55,191,103, 24,183,220, 92, 63, 39,150,162,201,133, 83,161, 96,152,172, 64, 82,139,167, 18,239,192,123, 67, 76,113, +165,254,105,194, 92, 98,142, 89,145,204,198,116,145,220,105,101,177,188, 94,170,101,144,211, 68,175,159,113,174, 45, 78, 25,181, + 27, 42, 39, 65,135,179,170,193,104, 12,210,240,173, 48, 24,199,110,227,184,218,109,240,195, 64,216, 61,230,151,191,249,138,255, +239,231,191,231, 54, 15,100, 41,184,122,143,191, 78,123, 64, 55,188, 36, 20,157, 95,249,139, 95,123,133,178,220,103,106,179, 90, +228, 22, 49,197, 82,125, 62,212,101, 47, 23,236,249,175,203,247,120,142,223, 54, 74,255, 33, 30,251,119, 77, 9,212, 74, 97, 87, +239,237,162,168,220,245,127,156, 17,142,199,169,191,169, 28, 97,220,176,221,108,241, 14, 90, 58, 82,128,212, 20,122,145,107, 33, +150, 68,105,170, 94, 13,198,234, 88,170, 63,136,214,185,222,169, 65, 42,153,146,210,250,250,106, 17, 80,116, 79,184,196,189,222, +159, 9, 75,198,114, 98, 7,215, 86, 25, 59, 13, 47,151,204,113,154,201, 49, 17,172, 16,156, 97,112,162,192, 15, 99,113, 93,200, +211,114,197, 15,163,130, 77, 82,187,200,143, 95,123,237,123,202,243,197,114,199, 58,209,184,223,205,158,189,222,114,242,255,183, +181, 30, 84, 1, 84, 79,226, 88, 77,241,235,199,190,199, 63, 56,191,118, 31,178, 44,190, 41,196, 59, 27,251,159, 41,237,245,196, +144, 7,199,235,237,188, 43,151,115,107,231,249, 34,234,100,253,147, 7, 22, 9,114,110,201, 92,138,143,158,192,213, 58,166, 19, +192, 56,131,149, 19,153, 13,212,102,102,173,163,230,194,205,205, 77,191,104, 52,188, 37,151,138,239, 93,148, 51, 74,135,163, 54, + 44,170, 66,110,237,196,184,111, 34, 28, 74, 66,172, 65,230,153,143,119, 3,127,242,209,123,212,150,120,118,136,236, 7, 71,182, +142,233, 56, 97,164, 97,169,136,213,206,223,208, 72, 85,145,171,173,195, 83,156,241, 8,149, 82, 51,141, 12,166, 49, 90,195,198, +141,221,188,161,211, 6, 63, 12,136, 85,168, 74,179,134,155,215,175,186,147, 67, 11,160, 33,140,228,154,215,105, 79,205, 10, 29, + 25, 66,160,100, 93, 59, 52,116,140, 77,107,120, 99, 9, 2,222,160, 23,180,177,212, 56, 97,124,160,230,196,102, 8,164, 24,251, +193, 15, 27, 31,152, 83,210,238, 55,205, 24, 42,121,158,168, 98,240,222, 82, 98,195, 59,229,118, 91,171, 41,114,130,102,199,199, + 28, 73, 37, 81,106,233, 62,107, 71,156, 99,215, 29, 20,134, 48,208, 74,237,209,168, 21, 47,150,105,158,144, 82,240, 13,156, 88, + 18, 85, 59,174,218,112,214,145, 58, 21,172,246,160,156, 69, 77, 79,109, 84,209, 49,123,238,162,214,229,220, 91, 46,182, 82,202, +234, 65,111,173,169, 45,182,234,100,111, 24, 6,117, 9,136, 96,140,250,213,167,121,166,181, 70,156, 83,127, 29,181, 80,136,157, +111,111, 23, 0, 80, 74,218,221, 59,125,243,214, 86,251, 42, 69,207,156,148, 42,166,118, 73,172, 53, 56,175, 49,194,173,104,243, + 88, 82, 82,104, 17,130,179, 75, 88,143,254,123,240, 94,155, 10,107,123,246,122, 89, 69,162,166,235,130, 82, 73,171,181,183,182, + 74,109, 5,219, 41,137,181,235,150,164, 53, 77,186,148,178,138, 57,151, 73,178,179,210,195, 99, 58,236,171, 71,198,142,155,192, +102, 59,176,217, 4,182,251,145,156, 39, 30, 61,121, 66, 27,182, 96, 3, 34,141,244,226,107,166,103, 95, 17,252, 64,125,180, 97, +247,222,143,185,125,246, 45,243,139,175, 41,249,142,199,123,207,198,127,192,223,253,246,115, 74,174,148,230, 72, 2,206,169,215, +127, 28, 3,219,113,196,198, 72,201,145,220,189,247,165, 67,214,106, 45,189, 96,211,247,103, 46, 73,225, 66,198,244,215, 95,139, + 36,211, 39, 78, 70, 12,210,164, 83,226, 84, 11,100, 27,167,175,141,138, 69, 93, 70,174,233,215, 25,188,103, 8,142,237,102,203, +110,243,136,216, 2,255,254,255,252, 47,124, 55, 21,178,169, 20, 49, 39,161,156,172, 59,245,101,204,219, 78,142,226, 5, 36,191, + 28, 82,173,174, 7,224,114,238, 45,135, 74, 59, 15, 79,235, 75, 89,211,195, 98,238,119,206, 15, 41,144, 31, 2,129,188, 75,252, +166, 73, 65,151,115,133,250,144,199,248,162, 19, 55,111, 87,234,247, 74,105, 17,108, 88, 35,108,156,103, 19,188, 90,214, 68, 72, +115,226,238, 56,171,144,197, 15,157, 66,165,220,238,133,251, 62, 19, 40,210,200,173, 32,206, 48, 90,221, 45, 74, 93,104,112, 22, +172,250,223, 99, 78,148, 86,201, 41, 51,167, 89,149,200,214, 96,219, 73,161, 94,155, 90,152,122,144,243,122, 1, 22,150,216,197, +110,121,202,153,220,170, 70,127, 2,115,202,148, 6,227, 48, 98,173, 42,178, 91, 87, 6, 15,198, 97,105,196,156,176, 54, 43, 13, +202, 52,102,116,255,218,250,156, 92,150, 84,182,190, 18, 88,211,243,106,237,152,195,118,239, 98,235,242, 57, 89,190, 23,173, 63, +188, 39, 10,155,118,209,237, 44,104,189,174, 31,160, 33, 23, 44,129,115,238,251,247,173, 91, 46, 7, 76,125,120,223, 22,152,200, + 73, 93,127,218,185,159, 42,165,251, 22, 60,125, 75,212, 53, 42,242,162,150, 90, 43,154,203,101,252,249,207, 44,226, 32, 61,176, + 59,110,163,251,138,141,152,238, 19,215,103,204, 57,219, 15, 67,221,223,165, 57, 50,142,154,216,230,189, 35, 38, 85,109, 75,211, +131,128,146,251, 33,216, 39, 15, 58,146,161,212, 70,179,173, 3, 44, 26,222, 91,142,211,129,167,187, 13, 79,183, 59,174,115,227, +250,246,208,133, 73,181,115,212,181, 11, 42,173, 17,198,141,218,158, 58, 85,204, 26,203,213,227, 71,220, 92,191,194,160,228, 53, + 93, 91,203, 58, 33, 52,222, 19,167,153,146, 42,233, 24,123,218,154,231,238,230,154, 86, 42,166, 9,193,122, 54,187, 61,215,183, +215,228,190,195,205,165,244, 0, 18,117,123,228,121,238,113,161, 5,169, 48, 24,139,167, 96,170, 70, 18, 15,206,246, 20,179,220, +167, 78,134, 26,245,185, 52, 93, 41,101,204,192,225,112,192, 58, 7, 22,182,251, 61,215, 61,123,222, 25,163, 99,254,254,252, 45, +234,114,181,139,233,250, 98, 28, 71, 82, 74,171, 59, 4,105,228,164, 23,163,179,138,252,181,214,146,230,132, 55,150, 60, 71,213, + 33,148, 74,203,149,148,116, 2,176, 4, 49,231,101,185,105,165, 23,112,170,214, 23,235,250, 37,101, 73,157,249,207, 34,186,235, +140,136,148,103, 21,199, 25,213, 85,212, 90,217,142, 35, 37,183,190,250, 82, 42,219,178,218, 91,223, 15, 57,234, 37,210,244,125, +167,239, 31, 13,100,209, 24, 84, 97, 58, 30,214,203,182,118,216,142, 24,233,106,237, 14,214,178,166, 79,211,164,139,209, 12,222, + 12, 4,175,120, 87,103,245,236,181,198,116, 44,118, 67,122, 12,172, 17,206,110, 16, 86,149,127, 46,122,174,228,114, 18,221,182, + 53,136, 74, 11,111, 47,203, 0,176,172,182, 65,181,225,105, 32,138,233,222,110,189,208, 13,227,224, 24,130, 39, 12,150,253,163, + 13,187,237,128,223, 25,220,224,251,218,192, 66,139, 28,191,251, 22,239, 2,245,131,247,185,169, 19,239,111, 60,175, 95,190,228, +230,243,223,241,201,123,123, 98,118, 60,251,250,134,193,171,157,209,244,177,121,237, 42,116,231,117,186, 53,248,128,136,167,222, + 30,184, 61, 76, 90,188,157, 79, 96,141,130,155,242,178,162,172,149,210,237,149,139, 10,222,172,226,235,211,153, 84,155, 22,231, + 86,172, 6,187,116,113,160,105,116,235,169, 37, 4,203, 56,142,108, 54,143,168, 50,242,239,255,195,127,226,211,111, 94,146,100, + 67,173,122, 31, 56,221, 25,155,179,101,242,217,129,186, 30, 81,186, 67, 53,253,226, 64,186, 48,255,220,175,218, 63,209, 5, 74, +129, 92, 10,149,222,150,148,246, 67,216,220, 43, 34,180,117, 79,245,153, 86, 93,250, 3, 33,167, 71, 71, 5, 10, 93, 20,212,238, +117,113, 15,209,205, 46, 4,120,168,175,208, 84, 13,146, 24,156, 97,235, 13,163, 95,160,250,133,169, 20, 74,159, 58, 88,105, 88, + 83,168, 37,146,197,208,140,195, 72,135, 18,148,140,115, 70,185,217,162, 99, 39,221, 96, 56, 74,237,145,176,173,146,114,234,200, +208,210, 61,168, 65, 15,147,170, 30,198,154, 51,181, 38,141, 20, 93,146,224,144, 62,190,237, 56,222,190, 14,113, 70,133,121,216, +165,123,218,224, 0, 63,238, 9, 33,116, 96, 65,193,180,132, 33, 97,131, 65,230, 10, 49, 98,208,110,231,104,234, 34,243, 84,145, + 87,223,135,139,152,254,152, 44,118,181,254,140, 44,118,200, 21, 88, 36,212,118, 30,106,223,247,113,114, 62, 94,172,151,173,242, +114,225,175,122,130,119,139, 26,223,154, 41,176,236,227,219, 89,205,128, 57, 11,116, 49,171,144,111, 29,207,183, 83, 22,253,165, + 16,111,209, 22,180,147,154,116,125, 54,213,149,127, 73, 53,236,207,144, 61, 61,157,102, 81,136,247,255, 47, 14, 6, 13,248,105, + 4,111,112,198,234, 37,159,146, 90,219, 68, 83,172,156,115,140,163,134,187, 56,111, 52, 60, 99,174,148, 92, 59,251,201,208,138, +193, 24,223,189,176,141, 66, 70,170, 16,140, 83, 78,182,179,124,125,188, 69, 70,131,115,129,134, 97,240, 3, 37,169, 10, 31,167, +184, 79,223,153,227,211, 28,241,222, 18,188,233,192, 28, 75,216, 8, 67, 25, 40,185,118, 47,110, 85,234, 97,211,139,106,202, 71, + 48, 22,135,233,157,136, 96, 22,201,125,179,132,160, 30,253,227,225,142,154,116, 44,109,173, 87, 53,243, 16,186, 14,162, 96,139, +138,209, 44, 66, 16,141,147, 53,165,170,109,180,199,133, 90,111, 25,173,163,161, 95, 79,109, 26, 34, 34,222, 80,170,174,141,156, +245,164, 57, 43, 49,110,142,122,249,214,162,171,137,214,216, 12, 35, 49, 39,156, 83,108,148,146, 30, 23,171,151,193, 58, 81, 98, +158,115,228,220, 95, 39,180,216,159,142,135, 30,223,106, 9, 11,249,173,115,206,105,122,240,151,166, 49,201,213,104,161,209,250, +168, 94,223,247, 74,144, 43, 89, 83,241, 20,189,171, 98,188, 90,171, 2,165,140,213,247, 94, 47,228,151, 66, 74,140, 85,186, 88, +158,187,120,173,172,161, 82,193,235,217,108,122,148,172,235,180, 55, 75,207, 12, 40, 69, 47,112,235, 86, 93, 73,107, 11, 2, 88, + 11, 95,165,161, 73,159, 40,244,243,196, 10, 70, 60,224,122, 66,223, 9, 38,228,157, 50, 24,232,239,247,193, 5, 74,158,200, 53, +245,241,185, 22,155, 57,118, 68,114, 23, 25, 54,178, 58, 8,172, 69,204,165,240, 89,181, 59,210,105,138, 94,177,190,206,174, 17, +185,234,186,176, 74, 99,116,150,237, 16, 24,189,193, 7,203,110, 27,120,250,228,138,199,251, 45,110,231,160, 36,218,124,139,173, + 51,229,120,131,153, 18, 50, 60, 97,248,240, 15, 57, 60,255, 27,210,231,159, 81,175, 95,242, 23,255,252,207,200, 47,239,248,221, +111,159, 83, 83,198, 88,199,118, 24,136, 83, 38,231, 70,118, 22,219, 12, 83,201,232, 96,158,142,219,173,132,102,244,194, 30, 61, + 37,102,108,169, 24,229, 60, 19,156,161,101, 93,225,232,215, 89, 46,148,237, 86, 26,210,146,246,226,226,122,100,180,244,224,167, +190,206,148,222,144,228,202, 48, 90,118, 91,195,238,201,158, 54, 62,230, 63,252,151, 95,240,187,103,175,153,197, 82, 68,225, 65, + 77, 87, 87,250, 7, 91,189,167, 20, 22, 89, 23,132,122,248, 45,217, 91, 61,169,203,176,118, 99,173,213,183,120,188,121,103, 23, +126,255,242,190,191,107,127, 67,220,118,207,222,180, 0, 79,222, 64,160,182,126,176,116, 97, 82,251,158, 49,189, 94, 50,102, 45, +104,164, 63,244, 94,132,193, 7, 6,231,215,220,226,152,146,118,191, 37,227,236,160, 63,159, 51,198, 44, 80, 7, 93, 85,232,190, + 77, 48, 70,119,108,115, 41, 10,226,247, 67, 23, 81, 40,236,161, 81,149,160,100, 61,174,199, 86, 66, 31,183,229,220,131, 46, 10, +214,178,218,107, 84,132,197,250,166, 81,165,232, 34,170, 80,123,210, 60,171, 80,198, 88,135,160, 99,222,230, 3, 98, 53,192,163, + 21,237,213,116,100,106,136,199, 3, 37,101, 48,170,128, 53, 61,154,113,225, 23, 40, 17,235,140, 33,214, 78,254, 85, 89, 65, 10, +230,222,107, 44,111,136, 16, 31, 18, 82, 46, 63,174,235,130,167,173,170,251,239, 3, 24,125, 95, 78,251,131,207,160,112,145,174, +133,188,219, 70,121,185,207,231,193,164, 54,145,246,134, 74,222,244,175,255, 34,204,166,246, 75,128,165,139,119, 39,181,124, 41, + 12,195,118,221,167, 46,171, 6,231, 29,210,160,196,194,102,179,225,230,213, 45,166, 42,232, 68,213,192,125, 4, 47, 11,175,161, +123,143,105, 52, 3, 71,132,187,220, 85,220,181, 64,138, 72, 85, 43,164, 65,173,111, 78, 23,128,120,163,157,205, 48, 40,124, 68, +188,103,187,191, 98,138, 25, 36,177, 49, 35, 6, 81, 5,123,133, 57, 39, 42, 16, 92, 87,133, 59,135,115,190,103,125, 27, 82, 85, +225,208,116, 56,170,158,196, 41,253,108, 28, 6,196, 89,142,243, 68,156,102,188,211, 2,185, 81, 85, 49, 94,128,166,251, 76, 35, + 66, 48, 66, 43,133, 98, 13,185,101, 90, 51,108,195, 70,231, 84, 70,245, 41,135,227, 65,223,195,198,224,199,160, 69, 78, 23, 47, +197,162,243, 99,103, 60,199,227,145,138, 48,184, 13, 41, 30,241,131,210,236, 98,140, 64, 99, 24,130, 6,188, 76,202,199,207, 69, +145,174, 11,154,185,228, 76,179,141, 27,160, 90, 97,179,217,112,119, 60,178,123,250, 72,167,110,181, 50,205,147,198,240,246, 93, +170, 17, 84,181,237,122, 60,239,168, 10,243,142,189, 83, 69,126,183, 64,130,244,120,218,172, 94,243,222, 57,174, 51, 48,171, 97, + 56,206, 40, 5,176,212,178, 10, 65, 77,239,154,107, 46,212,162,224, 23, 39,203,120,101, 25,239,215, 51, 39, 83, 91, 47,203,229, +221,103,236,169,248,174, 57, 97,250,179,232,140,103,154,142, 56,103,250, 46,188, 94, 76,205,106,159,134,213, 82,187,163, 67, 71, +235,234, 14, 72,157, 62, 9, 86, 78,133,179, 93,166, 91,253, 61,178,100,197,203, 66, 58,236,103,162,181,166,239,182,141, 78, 42, +141,178, 88, 93, 8,140, 59,207,118,235,120,252,222, 21,251, 71, 59,118,143,118,236, 63,120, 76,138, 17,111,129,122,100,250,236, +119,216,249,136,140, 91,204, 38, 16,194,200,231,255,233,255,230,189, 15, 31,179,223, 61,226,187,151,183,188,190,189,229, 48, 11, +115,204,186, 94, 16, 75, 66, 85,237,227,232, 85, 28, 74, 83,218, 93,109,164,152,201,177,210,156,165,166,137, 32,130, 41,170, 79, +243, 65,147,214,194, 96, 16,122,114,161, 49, 20, 17,114, 45,148, 10,217, 88, 74, 85,118,136,171,167,172,248,133,255, 0,165,219, +128, 27,206, 13,248, 33, 16,182, 87,188,158, 50,127,243,235,255,198,215,223,222, 81,237,160,104,227,245,123, 42,157,149,248, 32, +186,109, 81, 42,203,137, 30,215,150, 31, 43,106,178,153, 11,246,216, 91,169,109,247, 47,242,183,197,109, 62, 4,151,185,223,149, +157,255,154, 57,199,146, 46, 36,158,229,243,232, 69,138,109,246,141,204,247,115, 65,242,125, 5, 54,107,232, 75,195, 91,199,198, +233,155,167,181,166,232,215,172,123, 55,239, 45,173, 21,114,214, 29,145,250,133, 59,213,169,182,117, 82,145,208,195,196,248, 81, + 9,112,214,105,248, 74,174,136, 81, 37,232,118,227, 16,169,148, 18, 73, 73,149,242,181,100, 85,221,122,229, 6,235,234,185,116, +193,226,217,215,221,195,103,150,162,172, 46,170,241, 12, 25, 48, 53, 48,140, 91,160,113,156,142, 36, 81,222,188,180, 12, 37, 51, +122, 67,112,158, 97,187, 95,201, 85, 34,118, 29,185, 55, 89, 43,184, 55,112,186,102,141,103,237,241,178,247,216, 50,139,103,251, +124, 60,125,159, 10,119,234,112,251,122,125,117, 92,188,221,249,240,206, 60,245,127,164,167,253,226,130, 62,139,240,123,120, 53, +211,116,117, 33,114,118,129,183,245,243, 71, 22, 71,197,201,210, 89,115, 89, 51,200,215,137,199,218,236, 11, 74, 35,173, 61,168, +161,189,225,204, 48,198, 80,114,233,221,161,244,106,190,187, 1,122,132,103,169, 25,135, 87,244,102,213, 46, 56,231,218,167, 40, +130, 53,129,215,243,204, 31,127,242, 17,223,188,122, 65, 76,134,187, 89, 85,246,214,131,163, 32,166, 82,106, 35, 56,207, 28,103, +106, 2, 27, 44,143,159, 62,162,138,168,202,188, 22, 76,112,189,163,159, 57,246, 48,148,113, 28,181, 72, 45,203,118, 72, 9, 89, +105, 78, 43, 54,118,179,217,170, 66,189, 36,230, 28,149, 83,223, 76, 47,100, 6, 30, 95,237, 57,222, 92, 51,140,129, 54, 37,164, + 85,156, 24,140,212, 21,216,226,208,212,192,210,132,205,184,227,120,123, 84,239,189,243, 28,166, 59,140,115,154,120,230, 45,169, + 19, 16, 75, 85,229,183, 51,150, 57, 69,156, 23,156, 11,122,209,199,136,113,150,121, 78, 56,167,227,105,122,162,155,179,142, 38, + 16, 59, 1, 14, 99,116,172,238, 44,227,110,195,225,120, 36,209,192,121,174,211,204,230,106,203,235,195,173, 18,195, 90, 67,172, + 16,188,195,148,130, 31, 22, 43,215,160,116, 64,209, 9, 72,235, 33, 37,210,255, 59,198,116, 54,121, 50,212,110,253,202, 85,207, + 20, 17, 77, 46, 51,152, 62,230,214, 21, 2,125,210, 32,221,206, 69,105,180,146,217, 14, 3,173,100, 77,110, 67, 40, 57,107, 76, +243,250, 12,246, 92, 9, 99, 52, 70, 85,206,198,200, 62,172, 12,248,147, 46,234,116,230, 0,164, 84,116,165,215,139,218,148, 52, + 42, 85, 47,231,172, 14,145,190,111,214,128,156, 62,185, 66, 48,173,195,194,138,197,186, 19,150,220,116,113,176,237, 33, 66,117, +117,244,176, 82,249,130,115, 12,222, 18,156,193,142,142,171,167, 87, 60,121, 52,242,222,251, 87,108, 55,129,253,126, 68, 2,248, +237, 72,187,157, 72,229, 25, 55, 95,124,201,163,237,192,248,241,123, 32, 19,245,230,128, 73, 19, 31,252,225, 31, 83,158,189,228, +219,175,191,229,245,113,230,217,203,137,235,227, 76,174,186, 30,170, 52, 98, 86, 1,157,237,235,188,185,100,226, 20,187, 47,221, + 81, 91,101,227, 2,174, 9,219,161,243, 37, 6,207,213,110, 68,122, 40, 79,112,129,253,230,138,215, 55,175, 48, 94, 56,204, 19, + 47, 94, 29,168, 38, 96,113, 26,145, 43,149, 86,123,160, 79,171,171,155,201,121,203,118,187,161, 96,248,251,223,125,197,221, 20, +153, 19, 36,172,218, 14,173,167, 54,101,244, 27, 99,112,235,156,146,246, 22,212,171, 92, 80,179,206,127,254, 33, 15,239,187,172, +101,239, 58,128, 31,218,147,126,111,215, 69, 91,119, 46,114,134, 2, 49, 29,180,177, 62,140,103,170,124, 46, 40,105, 15, 11,173, + 90,203, 24,129, 96,173,170,110,155,102, 27,151, 90, 73, 77,213,223,173,234,184,195, 59,175,111, 94, 17, 98, 44,212,178,104, 10, + 58,211,220,122,154, 88,106,161,191,153,181,243,240,206,244,238,191, 40,233, 43,103,114,154,187,103,180,225,157, 94,172,166, 23, + 41,186,127,213,224,150,229,123, 82,123,158,244,217, 82, 24, 74,189,176,163,149, 28,177,197,107,165, 94,133, 88, 33, 87,139, 55, +170,180, 79, 41, 51,120,203,214,171,122, 57,231,140,109,130, 23, 52, 84, 96,201,150,191,231,134,144, 53,185, 73,206,118,223,239, +238,166, 31,250,222,182,243,209,247, 25,145,238,109, 68,184,243,105,206,195,207,147,172, 59,253,135,133,116,237, 12, 80,211, 63, +255, 7, 62,206,249,223,115, 81,168, 46, 41, 92,152, 11, 31,233,233,166, 94,130,128,148, 95, 45,125,103, 94, 22, 69,107, 91,184, +247, 42,111, 44, 93, 48,179,140,222, 74,202, 12,195, 22, 87, 51,165,229,158,142,150,161,251,221,115, 46,125, 85,161, 66, 35,206, + 58, 38, 99, 5,162, 30,206,235,238,187, 9,205, 5, 98,201,248,193,240,211, 15,158,114,119,251, 5, 12, 1,194, 72,169, 19,166, +214, 85,225, 95,114, 83,200, 70, 41,108,198,173,170,235,123, 18,160,183,234, 99,143, 41,235,222, 91, 56,203, 80, 87,255,123,234, +123, 65,211, 15, 38, 31, 2,161, 91,197, 20,128,163, 19,131,105,154, 78,226, 88,224,120,125, 67,141,145,106, 12, 38, 87,194,234, +213,237, 88,100, 84,128, 52,248,129, 54, 39, 72, 9,219,247,241,165,137,138,235,172, 97, 46, 42, 78, 45, 69, 71,211,198, 58, 98, +201,196, 82, 73,125,171,212, 68,136,109,225,110, 91,154, 21, 98, 79, 99, 51, 78,119,220, 83,154,123, 46,249, 34,102, 85,104,141, +245,134,155,233, 14, 99, 13,105,206,234, 65, 54,144,110, 11, 65, 26,174, 11,153, 76, 79, 52,116, 86,201,112,187,205,176, 42,251, + 23, 65,152,177, 26,190,226,172, 94, 96, 94, 92,183, 60,210,125,204, 3,113,158,113, 34,116,169, 44,251, 81, 61,210,210,244,156, + 75, 81, 39, 34, 45,233,234,101, 78,221, 14,103, 13, 57, 23,213, 42,228,140,113,158, 48, 12,184, 14, 19,171,165,244,236,121,117, +202,196, 24,123, 66, 90,162, 36, 21,236, 22, 78, 43, 44, 99, 85,155,161,222,107,117, 76,136,156, 20,233,165,171,248,109, 53, 29, +208,107,250,170,169, 94,228, 66,172,197,125,183,216, 45,126,124,133, 19,185,158, 48,121, 54, 25, 89,100,228,221, 77,162, 63, 39, +120, 99,216,239,119, 60,122,186,101,255,120,203,147, 39, 59,246, 87, 35, 79,222,219,171,183,124, 99, 16, 47,180,155,137,223,255, +237,175, 56,196,153, 71,255,234,127,166,120, 65,174,191,229,246,215,191,225, 39,127,241, 71,180,187,196,237,151, 47,120,241,236, + 37,135, 88,185,142,153,155,105, 38,225,213,223,223,250,132,216,185,190,195,183, 76,135, 3,226, 2, 34, 66,172, 17, 17, 75,142, + 32,165,193,182,242,254,211, 13,143, 31,239,153,111,143, 24,175,161, 91, 87,131,229,106,172,252,197, 79,127,194,159,254,241, 71, + 20, 18,215,119,145, 95,252,195,103,124,246,197, 53,165,121,134,160,244, 63,154,174, 53,196, 26,182,187,145,253,126,203, 92, 18, +207,190,126,201,221,220,152,178, 35, 73, 35, 35,212,158, 89,111,140,165,137,161,104, 82,241, 69,166, 84,135,156,220, 27,157, 46, +130,134, 11, 44,236,137, 18,126,238, 69,126, 23,194,245,221,104,207,119,100,100, 63,176, 67, 61, 83,192,173, 66, 11, 89,243,208, +219,170, 78, 62,143,217,148,123,221,163,188, 1, 20,161, 43, 17,245,133, 9,206,170,226,179, 7, 34, 52, 81, 48, 64, 41, 42,236, +113,253, 66,111,173,105,228, 99,174,136,120, 61,124, 69,187,230, 82,117, 12,229,195,168,222, 91, 81,203, 88,201,153, 84,148, 36, + 85, 83,164,150,164, 84,170, 86, 49, 86,214,177,119, 42,121, 69, 64, 46,250,128, 69, 43,160,223, 49, 61,120, 52, 57, 77, 78,246, +168,206,157,110, 34,204, 57,234, 21,214, 59,235, 50,207, 20, 67,199, 49,194,113, 78,148,148, 24,131, 2, 80, 92, 5, 47,130, 23, +161, 72,123, 11,174,245,116,161,157, 43,223,239,143,204,229, 7,172, 98, 46, 60,222,114,182, 23,191,255,231,133, 11,148,241,178, +218,150,139,103,240, 68,188, 61, 41,214,219,133,127,124, 41, 66,196,112,225,253, 63,127,230,207,159,185,101,124,126,185,187,239, + 31,191,158, 24,239,247,247,242,166, 7,126,180,218,167, 15,237,100,239,180,198,146,146,142,225,164,163,170, 90,133, 24, 19, 33, +231, 46, 62,242, 43, 45,144,166, 23,245,154,105,180, 48,249,251,123, 49,231, 68,112, 65, 47,241,218,200, 89,237, 85,181,170,178, + 29,111, 56, 28,111,249,248,241,158,235,171, 45,175,178, 33, 90,199,148, 12,181, 9,177, 20,196,120,170,104, 20,104, 24, 84,117, + 63, 29,238,176, 67, 32,120, 71,188,131, 41,206, 93,240,164,248, 82,245, 74, 23,172,243,218,205, 56,203,102,179, 85, 27,155, 83, + 97, 81, 18, 21,130, 25,111, 25,198, 65,189,246, 13, 54,227, 6,151,102,200,153, 50,207,120, 84,199,226,187,101, 83,140, 90,247, +164,213,213, 6, 20,231,185,107, 76, 42, 77, 44, 33, 56,110, 15,119,152,193, 17,163, 78,205, 74, 41,180,172,194,191, 44,153,140, + 16,107, 37, 55,214, 98, 34, 67,223, 21,131, 25,130,250,181,115,162, 54,131, 12, 1,111, 45,116, 46,249, 92, 10, 91, 63, 98, 4, +101,231,247,181,220,198, 26,198, 94,212,120,163, 83, 19,223,189,255,166, 53,194, 16,104, 6,194, 16,200,113,214, 81,118,191,152, + 90,109, 76, 83, 2,107, 59,107,189, 59, 26, 88, 44, 90,142,146, 35,227,232, 41, 8,211, 52,119,172,116,237,236,126, 77,168, 19, +209,206, 87,196,172, 54,171,148, 83, 23,146,169,199, 60,149, 66, 67,173,122,131, 15, 88,107, 58,209,176,225,230,136,115,110,141, +225, 85,186,155,118,245,151, 78,165,118,193, 84, 88,166, 75,102, 21, 82, 47,111, 70,179,190, 95, 90, 61,173,182,140,145,206, 55, + 63, 59, 35,140,166, 98, 89,107,186,231, 92,223, 67,206, 14, 90, 8,247, 41, 73, 41, 21,223,215, 22, 98, 13,173,170, 6,100,179, + 9, 60,190,218,178,223, 13,108, 54,150,237,104, 25, 55, 30, 51,170,184,144, 57, 49, 95, 79,220,125,253,130,237,207,126,194,240, +209, 71, 28,190,249,146,252,219, 79,121,186,127,130, 15, 35,119,191,249,156,223,254,254, 25, 95,126,119,195,215,119,133,231,215, + 7,230,102,250, 68,163,173, 54,212,215, 55, 7,198, 33, 96,165,244, 24, 95,181, 58, 55, 43, 72,169,120, 44,219,237,192,199, 31, + 63,162,230,107, 62,120,188,229,117,173,188,124,121,131, 56,157, 98,140, 87,142, 54,221,224,242,158, 71, 59,199,199, 79,158,242, + 56, 56, 70,243, 27, 24, 6,126,246,211,159, 34, 2,135,227,204,235,215,119, 28,166,136, 56,167, 92,253, 67,194, 5,135,177,142, +146,202,137, 95, 34,130,105,102, 53,217, 34,224, 90,123,168, 59,111,103, 59,244, 51,208,204, 27, 49,169,103, 56,208,251,209,169, +255,132,172,236,239,219,153,222, 31,207, 47, 85,228,162,178, 94, 41,120,237, 50, 27, 94,206, 60,196,230, 30,220,108, 21,114,119, + 16,140, 38,219,170,210,213,116,198,117,233,182, 25,233,234,215,101, 52, 63,132, 65, 51,111, 99, 36,149,130, 49,154,152, 86,154, + 16,155, 90,128,140,181,120,235,113,182, 81,243,196,156, 53, 73,138,166,145,156,139, 32,209,200,226,107, 54,148,154,200, 69,187, +141, 82,117, 44,186, 42,248, 47, 22,212,253,162, 40,253, 98,239, 10,173,101, 29, 33, 61, 66,179,149, 68,110,218, 17, 26, 17,172, +202, 30,105,102,209,174, 11,169, 65,157, 35, 99,208, 55,189,171, 21,215, 17,151,114,241,250,159, 94,231,229,118, 49,139, 63,251, + 7,176,246, 31, 90,173, 92, 38,241,201,137, 96, 39,111,238,228, 21,107,219, 46,236,103,151,182,115,233,252,250,203,189,247,253, + 96, 25,228, 94, 60, 44,231, 1, 47, 39, 1,104,163,190,117, 74,212,206, 4,130,167, 98,192,188,193,130,175, 93,197,187, 28,110, +203,132,171,228,178,218, 25,181,211,209, 2, 34,197,196,184,241, 42,174,169, 32,173,244, 2,161,219,249, 22, 27,161, 57, 47, 60, +186,216,176, 95, 24,244, 24,203, 38, 90,244,122, 35, 92,223,222,240,135, 31,254,136,240, 7, 63,229,139,235, 59,190,190, 59,114, +157, 26, 45, 4,124,211,172,232, 34, 2,198, 18, 75,161,220,220,226,189,231,238, 48,245,174, 81,243,179, 99,202, 29,244,163, 36, + 57,101,125,123,156,245,248, 16,184,187, 61,168,181,199, 58,154, 81,125,136,247, 30,179,140, 84, 75, 97, 51,140,208, 42,190, 99, +111, 3,122, 24, 57, 4,191,240,226, 87,188,129,238,105, 19, 73,253,200, 94, 52, 94, 52, 21,172,120,114,173,180,163,166,214,229, + 84, 25,119, 91,154, 73, 76,243, 76, 42,173,143,201,213, 87, 47, 93,151, 34, 98,216,236,246,196,156,153,230, 25,239, 44,133,202, +224, 29,211,241, 14, 47,158,150,149, 94,182, 27, 7,166,227,129, 49, 4,246,206,245,136,209,134,113, 6,103, 53,119,193, 72,101, +179, 9, 29,255,169, 74,241, 70, 5, 99,169, 89,147,248,244,153,182,250,122, 89, 11,162,133,157,113,142, 41,166, 53, 55, 29, 41, +184,133, 76, 72,197, 88,143,247,125, 20, 95, 50,182,234,107,170, 35,252, 5, 6,165,205, 75,169,181,159, 57,118,125, 70, 21, 18, + 84,168, 21, 98,202,216,190,247, 93, 88,240,203,122, 7,129,154,245, 50,243,182,131,171,186,148,189,246,177,253,210,156,153,190, + 94,172,114,110, 71, 94, 60, 33,230, 2,255,188,188,159, 23, 39,136, 8,171, 34, 95,241,194,141,150,122, 49,227, 44,197, 10, 86, + 84,155, 81, 75, 94,187,121,219, 11, 34,239, 12,227, 38,224,131,176,191, 26,217,239, 3, 67, 16,174,174, 54,136, 87,249,188,136, + 1,191,227,250,245, 55, 28,143,119,236,140,234, 33,238, 62,251, 10,249,246,134,167, 63,254, 41,233,155, 27,126,255, 15, 95,240, +119,207, 94,240,245, 92,249,238, 46, 19,171,161, 25,131,109,150, 96, 32,149,184,162,153,141,177,250,253,198, 32,182,145, 83, 92, + 83,243,196, 22,172,207, 60,125,178,101,104,129,173,113,188,152, 39,140,135,155,219, 59, 54,143, 45, 97,180,108,182,142,207,191, +250,130, 97, 52,124,244,201, 79, 57,198,137,253,149, 5,155, 25,252, 17,193, 48,213, 3, 86, 34, 49,222,225,237,142,195,113, 98, +138, 89,115,239,173, 54,154, 53, 21,114, 43, 52, 89,232,252, 66,109, 58,197,115,111, 35,179,137,180,123,169, 83,188, 49,174, 62, + 79, 40,226,204, 38,118, 30,109,249, 67,144,177,239,218,197,191,139, 44,119,209,185,182,118, 15, 58,186,130,196, 46, 80,183,111, +196,119,158, 3, 84,186, 29,109,185,212, 27,144,114,234, 24, 77,221,224,219,158,253,235,157,102, 49,207, 81,147,216, 16,139,113, +142,106, 44,115,210,140,102,231,189,134, 11,212, 66, 58, 78,107,168,133,181,129, 48,104,222,122,138,145,214,199,177,165,119, 88, + 41, 87, 77,144,106, 77,115,210,219,105, 42, 98,132, 51,240,137,118, 47,214, 42,196, 99, 57,228, 23, 8,141, 53,202,166,103,193, + 15,246,100,169, 38, 22, 49, 14,235, 7, 4,186,223, 94, 31, 24, 5,206,152,238, 1, 78, 93, 47,217,222, 74, 88, 93, 81,178,239, +248,158,254,144, 2, 79, 39, 17,242, 22, 76,107,123,139, 59,226,242,247, 95,168,214,223,250, 60, 45, 23,245, 41,216, 69,238,117, +232,154,111,222, 46,104,116,239,244,198,191,241,223,172,174, 1,150, 75,214, 44,187,115, 13,108, 41,165,234,248,188,158, 46,250, + 90, 27,206, 43,221,108, 33,134, 25, 81, 15,175,179, 1, 17, 72, 57, 95,188, 17,155,156, 61,236, 61,137,107,233,148,244,130,208, + 21, 85,172,141, 36, 96, 82,229, 47,126,244, 17,143, 54,215,228, 79, 63,229,106,191,129, 97,228, 54, 70,110, 99,230, 54, 87, 14, +169, 48, 39,125,174,157,113,120, 31,184,203,119, 90,252,149, 68,174,141,212, 26,121,142, 93, 83, 97,152, 83, 36,140,174,103, 72, +119, 75, 87, 31,231, 46,130,167, 82, 11,113,158,184,218,237, 48,136,142, 49,107,101, 52, 22, 82, 98,227,188,122,117, 57,179,150, +218,229,124,145,117, 21,177,125,178,231, 48, 69,166, 56, 19,231,166,246, 48,107,152, 99, 34, 55,225,246,230,150,108, 96,206,153, + 34,134,212, 85,237,181, 51, 16,114, 78,108,119,123, 82,212, 28,118, 47,104,212,171, 1,219, 50,219,142,127,254, 96,191, 93,227, + 87,199, 81,247,211,155, 97,232, 93,172,168, 56, 9, 97,179, 25, 58,162,119,232,221,116,102,206,250, 58,180,146,215,130, 45,198, +220,233,139, 74,169,160,136, 44,238, 0, 0, 32, 0, 73, 68, 65, 84,196, 24,176,110, 29,159,150, 90, 87,172,112,140,185,175,231, + 52,153,204, 59, 79,169,202,131,167,175, 55, 90, 67,215,122,193, 17, 99, 86, 31,127,209,104,228,213, 43, 14, 90,176,180,220,117, + 4,105,157,175,218,238,102, 18,209,238, 87,137, 83, 58,213,202,173,104,158, 67, 15,187, 88,194,104, 22,126,188,172,154,232, 19, + 53,205,208, 16, 83,251, 51,168,151,180,244,162,194, 57,115,154,192, 25, 61,115,189,119,167,224,167,117,234,167,102,192,210, 35, + 94,117,106,161,225, 85, 86, 44,222,233,202,192, 15,142,113, 27, 24, 54,158,253,126,228,209,214, 97,130,208, 28, 36,219,240,227, +134,118,156, 72,199, 59,222,251,201,199,120,132,195, 47,127,205,203, 95,254,138, 63,255,203,255,129,118,125,224,187, 95,126,201, + 95,255,252, 55,252,246,213,196,235,104,185,141,149,195, 92,104, 94, 11,177, 16, 70,178, 13,196, 62, 25, 82,132,175,218, 43, 55, + 97,100, 12,158,224, 2,211,221, 29,121,190,227,241,147,199,152, 22,121, 20, 6,126,246,241, 39,252,253,175, 62,229,182,100,172, +245, 28,167, 72,108,149,187, 89, 83, 1,167,187, 66,121,126,131, 88,199,235,155, 59,246,187, 45, 37, 53, 90,203,204, 83,228,112, +136,228, 98,120,245,221, 13, 83, 42,100,132, 38,150, 38,157, 37,111, 26,148,126, 55, 72,237,107, 99, 61, 19, 28, 77,222,178, 23, +231, 77,155,219, 57,147,132,149,110,175,234,121, 57,139,221,108,237, 66,113,254,174,131,253, 33,159,250, 67,221,249,253,194, 66, + 51,155,251,102,244, 28,103, 43, 15, 40,157,219, 67,145, 52, 39,168, 72,107,229,162, 24, 89, 42,202,218, 10,173, 36, 45,112, 22, +209,211, 34,138, 19,136,115, 84,113,139, 24, 92,208, 55,232, 28,117, 44, 54, 12, 67, 71, 94, 30,160, 68,141, 87, 5,140, 13,138, + 90,244,158,212,119,122,226,132, 20,103,106,105,204, 73, 81,141,165,202, 74,121,170, 11,248,167,223, 19,166, 87,189, 86,192,185, +126, 41,168, 42,104,237,212,108, 31,159,111,140, 48,132, 0,226,152, 82, 37,150, 74,107, 22, 76,192,249, 43,196,192, 52,125,199, + 28, 35,102,116,138, 45,108, 10, 85,216,120,207, 68, 35,215, 19, 19,190,221, 83,124,223,127,101,219, 3, 43,152,243, 9,203,219, + 46,194, 31,116, 89,106, 61,122,166,147, 63, 91,163,244,206, 65, 46,168,118,156,141,213,207,201, 50, 92, 90,218,144,139, 75,251, + 4,157, 57,241,230,255, 49, 19,167,182,102, 28,215, 55,138,155,165,144,136, 41,246, 31,107, 49,105, 59, 62, 85, 47,174,194,198, +140, 88, 99, 56, 78,119,218,253,117,203, 86, 45,245,164, 25, 88, 72, 85,189, 8,185,255,122,159,146,226, 12, 77, 60, 49, 21,158, +127,241, 28,113,223,178,189, 26,248, 56, 8, 7, 49,200,118, 96,116, 66,137,145,187,156,168, 69, 47,151,148,133, 42, 66,205,141, +216, 42,118,240,220, 77,170,238,198, 10,214,235,100, 42,199,220, 95, 90, 85,237,123,163, 17,178,211, 52, 49,142, 35, 49, 70, 74, + 41,108,118, 27,134,234, 25,125, 32, 78, 74, 97,163, 86,242,225,142,189, 15,120, 58,247,186,178, 34,116, 79,233,129,189, 11, 53, +134,249,245, 45, 41, 22,198,176,225, 38, 70,162, 17,205,149, 47,149,102, 44, 83, 81,161, 94, 13,154,213, 45,214, 66,223,139, 27, + 96,240,129,233,238,192,118,187,101,191,219, 50,207, 51, 67,216, 32, 84,230,233,160, 93,174, 19, 90, 60,232, 46, 95, 84,172, 36, +193, 99,108, 99, 24, 60,212, 70,202,106, 57, 43, 49, 82, 91, 37,138,233,187,105,187,122,205,151,195,182,100, 45, 90,115,174,228, +170,113,177, 49, 70,140,216,126, 62,149,158, 15, 0,109,137,218,237,191,223,249,165,176,243,204,243, 17,239,125, 7,123,105,103, +173,234,247,190,135,237,103, 88,140,115,239,198, 43, 53,235, 89,169,161,159,230,132,111,180,189,128,236,207,183,113, 93,223,177, +172,238,214,127,175,163,191,181,208, 92, 64, 57, 90, 60,230, 53,172,101, 57, 19,150, 70, 99,193,160,122,175,248,216,197,245,161, +158,120,123, 70, 38, 93, 56, 11, 25,131, 95,143, 20,235,156, 78, 79,173, 78, 27,156, 9, 12,131, 39,140,158,237,126,195,176,241, + 60,121,250,136,253,104,177,131,193,236, 7,218,104, 17,231, 56,124,251, 21, 95, 63,251,156,127,254,111,254, 55,190,252,221, 51, +254,235,191,251,223,249, 23,127,242, 7,184,146,152,190,249,134,223,253,250,115,190,122,113,195,225,104,121,121,200,220,228,138, + 53, 14, 91,123,206,123, 59,227, 64,116, 64, 78,140,153,171,221, 6,208, 68,188,124, 60,242,254,163,199, 28,239, 12,135,195, 17, +247,193,142, 79, 62,216,115, 53,234, 26,235,246, 46,225,176,188,255,201, 99, 82, 74,236,159, 62,101,227,213,161,176,127,180,167, +182,204,118,220, 80,170,112,156,116,125,132, 88,141, 26,158, 35,119,115,230, 16, 51,205,120,237,214,115, 38,102, 93,149,153,102, + 86, 31,189,156,180,134,184,203,222,182,173,214, 8,125,210,250,110,189,157, 93,228,111,156, 98,178,142, 98,219, 26,246,113,106, +114, 52,162, 81,176,198,245,189,233, 25, 98,246,194, 65,247,118,149,251, 18, 53,218,250, 39,242, 70, 33, 32,167,125,107,187,151, +254,117,142,197,211, 44,172,210,177, 16,166,191,225,138,118,167, 52, 5,123,116, 33,134,145,110,233, 90,246,161, 61,199,216, 57, + 13, 64, 57, 78, 71,166, 57, 33,198,227,188, 71,156, 35,166, 76, 46,234, 51,183,206,146,230,153,146, 34,166,123, 13,193, 98,253, +128, 49, 78, 21,236, 98, 40, 52,114, 74, 58,106,239,158, 85, 61, 84, 53, 71,215,118, 33, 81, 89,222, 84, 93,227,239,186, 13,201, +180, 74,237, 60,112,219,133, 28, 75,110,119,240,158,205, 16,216,142, 3,227,168,221,205,225,216, 87, 0, 34,224, 44,214, 41, 17, +239,238,110,230,238, 24, 97, 27,240,166, 65, 46, 4, 55,146,139,116, 79,125, 81,246,242,210, 9,183,186, 78,115, 78,144,162,246, +131, 69,142, 15,112, 11, 87,135,133,156,179,219,234,153,144,110,249,239,118, 95,112,215, 78, 84,187,118,190, 24,106,151,122,137, +101, 82, 35,156,101, 24,240,198,186,166,157,125,172,118, 79,176,119, 6,199,123,167, 13,238, 98,130,116,198,108, 88, 58,145, 5, +141,169, 62,104,237,204,197,232, 97, 55, 12,129,156, 11, 49, 70, 21, 59,137,209, 78,174,229,179, 98,249, 68,125, 50, 98, 41,185, +106,178, 25,178,218, 34,151,179,187,137,218,158, 98,202, 84, 12,119,223,188,228,213,231,106,229,114, 98,105,109, 32, 77, 19,243, +245,145,148, 74, 31,229, 53,108, 51,164,156, 57,150, 8,206,146,226,140, 11, 94,187,222,190,243,182,198,106,140,232,113, 86,125, + 72, 41,164,227, 81, 3,134,186,173, 78, 80,254,121,153, 21,138, 50,205,183, 4,235, 8, 86, 69, 71, 91, 49, 4, 17,124, 47, 94, + 75,215,138, 44,175, 89, 70, 56,244,125,181, 21,193,250,129, 87,119,215,164,124,224, 80, 43,197, 89,178,181, 72, 24,193, 58,124, + 77,196,120,196,136, 97, 52, 78, 71,199, 37, 19,172, 96,187, 32,206, 13,142,150, 38,178,194, 58,104,179,170,148,183,222, 42,101, +207,219, 85,168,101,157, 91,227, 96,173, 13,196,148,184,186,186,194, 69,181,245,149,162,147,185,156,117,196,157,115,234, 2, 52, + 45, 68, 90,101, 13,243, 88, 28, 32,181,170, 69,108,220,108,153,142, 71,226,172, 7,186, 24, 67, 78,165,231, 10, 72, 79,233,154, +148,106,102,232, 98,214,210,189,233,129, 40,122,118,228, 92,116, 20,159,213, 2,217, 74, 89,119,244,165,244,217, 94, 87,150, 47, +218,162,149, 45,110, 78, 32,165, 90, 11, 84,197,244,106,230,247, 25, 93,177,135,216,208, 95,151,229,162, 53, 86,180,139,246,182, +139, 55,181,144,113, 61,100, 69,211, 39, 51,198, 64,112, 1, 76, 91,153,238,230,140,134, 98, 12, 26, 21, 77,195, 6, 79,142, 73, +209,192,163, 62,115,206, 64, 24, 29,187,171, 13,195, 38,176,127,180,225,233,211, 43,134, 77,192, 14, 30,241, 6,188, 71,106, 97, +250,246, 21,191,252,219, 79,249,238,117,225, 23,255,245,111,144,146,120,127,191,231,163,247,222,231,240,233,151,124,246,139,207, +248,245,151, 47, 57,148,129,105, 78,234, 59,119,174,175, 26, 26,243, 28,149, 69,226, 2,214,123,106, 42,148,146,241,110,160,196, +138, 27, 13,142,198,118, 19, 48,109,230,147, 15,159, 48,184,204,126,227, 24, 7, 67,202, 51,185,162,174, 39, 26,183,199, 35,143, +118,134,218, 50,165, 52,156, 88,166,219, 87, 93, 72,234,185, 57, 70,166, 84,113,205,112, 59, 69,230, 92, 20,121, 92, 42,185,194, +221,221,145,105, 74,204,177,174,144,153,218,140,134, 41, 53,205,103,104, 70,217, 37,238, 52, 71,105, 43, 20, 67, 43, 52, 53,192, + 27, 78,128,255, 7, 15,176, 37,180,226,172, 59,106,247, 21,234,203,116, 91,218,233, 98, 95,241,163,102, 69, 9,126, 95, 87,207, +131, 29,252, 66,227,185,188,236, 87,245,242,186,247,236, 15,184, 26, 42, 16, 92, 15,229, 88,138, 1, 29,133,218,254, 49, 59, 76, +106,197,248,229,154,241, 67, 0,163,118,132,227, 52,129,104,172,161, 6, 60,232, 88,210, 90, 7, 45,145,230,184, 38,187,137,113, +228, 86,113, 46,232,112,164, 91,210, 74, 43, 43,226,179,245,194,194,138,198,236, 73,223, 11, 47, 67,146,218,119,199,198, 8, 78, +186, 15, 53,107,117,191,196, 43,186,142, 30,101, 37,102, 57,154, 24, 82,110,132,210,216, 13, 35,131, 13, 28,227,204,221, 28,105, + 57,226,130, 35, 12,129, 57,142,204,243,129,187,195,196,126,180,154,114, 85, 19,131, 25,201, 29,130,209, 22, 42,219,186,137,239, + 23,162,145, 75,122,212, 59, 47,119,185,231,182, 56, 91,140, 52,222,100, 37,244,203,119, 73,203, 44,185, 94, 88,204,184,200,108, +103,189,176, 79,204,247,135,166, 0,102, 37, 37,158,196,160,188, 25,205, 38,188, 33,169, 92,212,235,111,142,126,228,225, 15,177, + 2,117,160,160,251,240,165, 52,202, 93,140,164, 29, 22, 43,212, 36,247,168, 80,197,111,106, 1,152,123, 66,219, 9, 4,180,208, + 29, 79, 83,128, 20,115,143, 27,141, 23, 78,132,126, 77,211,164,145, 74,101,231,247,144, 45,215, 83,230,245,116,228,229,203, 35, + 55,198,225,236,192,198, 55,114, 76, 56,103,137, 37, 99,157, 96,194, 70,159,225,164, 59,245,220, 42,185, 53, 90, 81, 17,216,116, +156,240,198,169, 61,236, 56, 33,173,177, 27, 7, 13, 78,241,106, 11, 93, 80,176, 74,111, 11,216, 10,249,246,192,216,100,117,153, + 72,171,228, 86, 41,210,150, 76, 30,196, 24, 98,107, 28, 91,163,149,194,126,183,227,208, 42,119,163, 71, 66, 0,171, 52,177,199, +155, 45,214, 90,110, 94,191,198,253,255,140,189, 89,175,101, 89,122,174,245,140,110, 54,107, 55,209,100, 87,149,174,114,217, 62, +166, 57,198, 96,176, 64, 66,112,135,184, 6,241, 11,248, 43,254, 79, 72, 71,112, 4, 66,135, 78, 72, 32, 56,198,174, 99,151,211, +118,101, 85,182, 17,153, 17, 59,118,179,214,108, 70,243,113,241,141,217,172, 29, 59,179,108, 41,157, 85, 81,153,177, 99,239, 53, +231, 24, 95,243,190,207,107, 45,179,171, 46, 1, 49, 40, 26,171,172,246,170,122,107, 97,113,148,146,233,187,190, 18,249, 28,109, + 27, 48,166,208, 52, 58,202,118, 62,168, 77,174,122,181,231, 57,105, 92,108,229,225,151, 28,177, 54,208, 53, 61,167, 97, 36, 52, + 27,230, 85,138,134,229, 8,194, 48, 78,202, 7,219, 25, 37, 82,202,220,190,187,213,172, 6, 44,165,234, 19, 48, 82,119,165,122, +110,102, 41,244,214, 97,156, 35,229,162,182, 89, 17,156,215,183, 80,127,173,232,174, 23,200, 49,175, 99,244, 98,182,201,147,228, +154, 99,190,188, 95,245,144, 43, 85,248,230,100,103, 85, 93, 67,139,116, 99,235,188,118,151, 14,139,219,204,195,216,160, 60,131, +166,237, 41, 73,147,227, 74,205,108,183,117, 13, 96,241,196, 56,227,106,158,186,247,149,211, 81, 3,114, 48,138, 66,165, 6,189, + 16, 11,243, 48,211,118,126,211,115, 1,221,161,165,187,104, 8,173,227,242,242, 64,215,120,250, 78,195, 84,104,170,255,126,136, +156,238, 31,248,236,111,127,205,175,127,115, 3,190,227,219,191,252, 21,159,190,236,249, 79,255,252, 79, 24,191,124,205,171, 47, +222,240,255,253,242, 75,254,225,251,129,219,177,112, 59,103,230,157,163, 37, 45,209,214, 98,136,113,214,147, 89, 44, 34,174, 22, + 71, 86, 49,189, 57,226, 59,199, 79, 63,254,144, 95,252,244, 35,226,241, 45, 23,141, 94,180,221,225,154,148,132,211, 48,168, 16, +113, 16,134,185,231, 52, 39, 14,215, 45,111,110,222,208, 31, 46, 49, 99,230,246,126,208,149,215,119,239,104,187, 3,111,223, 29, +153, 98,226, 56,102, 78, 99,228,110,136,204, 17,166, 57,215,233,144,163,236,238, 45,135,186, 35, 64, 27, 48,111,222, 59,199,204, + 78,253, 94,145,148,252,136, 21,141,109,103, 46,143,118,237,143,219,101,173, 38,118,193, 49,187, 17,191,236, 51,217,139, 84,130, +144,173, 80,146,242,163, 9,109,231,199,170, 60, 34,139,153, 29,253,214,236, 40, 54,155,114,123,153, 66, 44,196, 60, 91, 73,106, +165,198, 32,138,104,245,235,156,230, 56,207, 83, 4, 28,182,230, 14,235,190,101, 9, 0,169,249,200, 24,133,214, 84, 49,138,243, + 1,223,180, 43,165, 93,147,170,114, 37, 96,185, 53,155, 89,163,147,116, 47,181,236,237,178,232,139, 87, 25,184, 53, 28,131,218, +145, 43,248,195, 91,139,165,172,118,167,101,215, 21, 99,245,188, 91,207, 69,119,160,175, 66, 56, 99, 20, 81,235,138,208,212,224, +133,136,102, 87, 15, 82, 48,189, 2, 61, 66, 40,116, 70,247,145, 82,109,116,166,142,240,206, 83,251,246, 1, 38, 59,111,106,217, +125,118, 98,215, 75,110,227,186,179, 51,177,237,131, 81, 76,173,226, 13,251,167,100, 15,192, 95,158, 53,179,199,189,150, 13, 81, + 91,105, 44, 59, 65,103, 13,137,177, 60,225,166,216,138, 2,131, 57,239,228,247, 33, 45,123, 27,220, 99,214,193,239,176,204,175, +252,239, 69, 99, 82, 65, 65,206, 57, 66,211,172, 1, 25,160,214,199, 37,216,193, 57,207, 60, 69,130,111,106, 23, 84,214, 36,175, +115,254, 3,235,126,179, 84,120,199, 42,170, 19,133,210,204, 41, 43,234,210, 90,122, 28,151,190,225, 33, 78,200,162,196,175, 7, +247, 56, 71,141,234, 44, 25,147,133,241,120,132, 44, 90, 32,120,203,229,197,129, 97,154,144, 57,210,212, 24, 89,193,226, 27,143, +169, 54,167, 67,219, 64, 61,184, 91, 99,200, 86,159,237,198, 90, 36, 38,130,136, 38,176, 57, 91,199,235,106,221, 20,163, 5,131, + 49,134,108, 96,202,194, 40,144,157,129,182,161,185,232,200, 55, 55, 92, 92, 28, 8,214, 49, 14, 39,166,211,132, 55,208,218,140, + 69,104, 27,171,188, 0, 49, 85, 15,179,140,191,115,213, 6,100,156,215, 66,101,193,214, 46,200,214,103,215,151,228,162, 5,204, +233, 56,208,117, 29,215,151,151,188,189,185,225,242,112,224,116, 26,116, 47,223, 6,108,232,117,164,158, 18,125,223, 51, 85, 6, +251,242,215,195,241,168, 42,248,138,123, 16, 81, 11,155,247,129,135,120,143, 51,144,179, 78,248, 66,208,149,223,146,234, 85,234, +251,149,146,144,142, 5,239, 93, 29,107, 27,210, 28,153,103,189,224, 87,148,119,245, 81,151,204, 74,199, 91,139,191, 82,118,219, +168, 74,173, 91,166,109,101, 91,225, 57,239,234, 25, 83, 5,109,206, 42,176,202,105, 86,188, 61, 43,184, 45,226, 44, 62, 4,108, + 8,248,166,193, 57, 8, 54,104,250, 94,213,241,216,224, 85,120, 88, 18,166,174,153,150, 4,186,133,139,111,234,154, 71,137,126, +202,117,152, 83,228,226,208,174, 5,175,247, 94, 59,219, 38,208,245, 45,125,219, 43,141,209, 26,172,205,196,105,100, 26,225,175, +255,234,215,124,251,250, 13, 83,129,124,127,162,156, 34, 31,252,222,167,220,127,125,195, 55, 95,125,197, 63,252,250, 53,191,121, +123,228,205, 49,243,246, 52, 51,227, 40, 86,145,193,206,234, 44,212, 25,191,194, 96, 98, 86, 71, 84, 66,170,147,192, 18,135,194, +213, 69, 79, 99, 12,199,225,129,214,127,200,199, 31,191,196,150,200,231, 95,126, 75,119,145,120,119, 28,152,115,102, 78, 66,223, + 6,110,110, 79,124,219, 88,114, 62, 48, 15,145, 25,117, 41,220, 28, 39,181, 91, 78, 35,229,110, 36,166,194, 56, 37,198,164, 59, +254, 49, 10,243,148,136,185, 16,211,162,114, 55, 20,163,150, 72,231,237, 6,119, 23,193, 27,145, 93,179, 35, 43, 93,109,185,124, +126,200,199,251, 4,104,123, 61,126,173,181,245,195,218,237,130,205, 6,128,145, 71, 74,228, 21,163, 89,105, 58,152,250,240, 96, +183, 80,184, 39,132, 79,143, 59, 66,179,156,105, 85, 25,108,216, 49,249,246, 87,255, 78,188, 39,198,214, 11, 85,176,162,253,123, + 83,129, 10,185, 42,208,157, 85,252,227,156, 18,199, 97,168,177,145,154, 22, 85,138,172, 2, 10, 5,133,232,126, 73,199,148,154, +160,133,113,132,208, 41,109, 91, 4,201, 51, 82, 65, 31,193,171,101,167, 24,229, 38, 91,231, 84,237, 92,113,169, 69, 42, 4,193, +128,243,250,239, 27, 17,124,219,212, 23, 47,235,213,151, 51,162,156,141, 85,153,106, 88,252,160, 22, 73,117,148,213, 52, 32, 70, + 43, 83, 41,216,148,233,156, 99,112,158,217, 58,140, 11, 10, 8,153, 34, 29, 6,103,103,154, 16,152, 81, 28,162,160,118, 17, 35, +182, 42,227,205,147, 64,182,115, 11,216,166,152,223,216, 21, 59,192,209,114,203,155, 45, 4,197,238, 58,240, 85, 24, 81, 47,123, + 99, 56, 83,183,139,236,245, 27,143,225, 66,176,207,124, 55,134,117, 7,245,190, 13, 79,206,248,245,143,213,241, 11,245,206,190, +215,254, 63,138,116,217, 21, 1,194,182,201,178,187,226,117, 81, 4,139, 17,218,174,169, 63, 51, 61, 88,114, 76,120,177, 26, 76, +146,183,196,167,156,117,242, 83, 12,103, 73,119,234, 72, 88, 46,173,180, 83,211,155, 90, 56,170,181,173, 96,212,175, 28,132, 48, + 71, 90,129, 75,231, 57,228,196,109, 22,202, 20, 41,181, 35,181, 5,229,185,163, 66, 49, 35, 21,136, 97, 13, 54,120,166, 56,235, +207,194, 91,198,147,102,131, 7,107,208,100,209,130,171,171, 33,181, 72, 21,134,251, 59,165,137,149, 68, 17,245,161,187,198,212, + 29,162,170,168, 37,203, 70,212, 55, 14,240,204, 89, 72,232, 78,191, 88,199,253, 60,209,123,129,156, 72,167, 35,193, 57,174,172, +208, 56,131, 53,202, 35, 23, 89, 38, 74, 22, 83,189,223, 26, 92,146,177, 98,136,121, 91,245, 52, 77,195, 60,207,248,160, 99,122, +231, 44, 83, 13, 79,105,218,142, 97,138,245,189, 63,225,131,103,158, 39, 14,135,142,121,154, 42, 90, 86,159,175, 82,114, 61, 71, + 84, 72, 91,170,216,177, 84,168,140,138,203, 68, 89, 19,185, 32,149, 4,152, 75,161, 96,193,234, 59,175, 97, 44,133,148,119,141, + 79, 49,170,179,169, 33, 46,193,123, 40, 22,169,227,126,169,129, 60,165, 22,111,212,130,112,177,134,200,217, 52,117, 27,163, 75, +117,196,152,202,121, 55,245, 0,245,193,214, 96, 29,167,103, 89,219, 16,188, 87,146, 28,130,181,129, 12,100,172,234, 21, 12,124, +242,147, 79,184,121,253,154, 34,179,134,149,212,124,244, 20, 35, 49,205,170,166,175,163, 51,231,220,250,156,106,252,111,213, 52, + 89,167, 38,145,218,116, 57,107, 72, 41,210, 54, 30, 23, 52,151,222, 85,248,143,119, 26,110,130,192,241,238,158, 62, 55,220, 61, + 28,249,237, 23, 55,124,246,217, 55, 92, 60,127,193,225,210,242,253,187,111,121,209, 29,232,109,199, 87,191,253,158,223,124,245, +134, 87,119,137, 87,167,194,109, 20, 38,227,153, 69,227, 83, 84, 20,169, 69,181,179,149,209,111,212,241,100,188,165,105, 60, 49, +235,243, 96, 49, 48, 70,196, 89,130,205,124,251,221,119,188,248,131,223, 67,162,240,236,195,143,185,125,200,152,182,163,228,145, +214,119, 28, 79,145,214, 26,134, 4, 99,118, 12,217,112,123,115, 71, 17,199,113, 22,125,206,243,132,111, 58, 78, 67, 98, 28,103, +230, 2, 99, 18,230, 4, 83, 82,125,149, 24, 75, 46,139,120, 84, 15,187, 92, 1, 66,165, 54,195,126,245, 4,213, 81,179,206,189, +204, 89,134,250,239,218,142,238,233, 87, 43,195,215,185,243, 36, 43,179,159,158,239, 49,255,155,109,232,108,199, 41,130,216,242, + 94,215,244,212,215,221, 32, 51,203,158,113,225,193,239, 57,198,156,141,100,237, 14,158,179,120,164, 87, 24,194, 66, 95,170, 9, + 83,214, 7, 98,206,140,227,164, 31,180, 85,212,234,210, 17,149,170, 50, 93, 70,123,190,107,233,218,134, 28, 75, 85, 52, 7, 74, + 81,123,152,238,247, 50,173,247, 52,206, 40, 45, 41,163,252, 96,107,241,198, 41,211, 91,114, 77, 58, 82,123,137,113, 58,185,112, + 21,116, 19, 66, 61, 56,242, 92, 37,176,106, 3,177,213, 74,100,141,219,253, 44,161,111, 60,135,198,211, 88, 72, 37, 34,105,162, + 20, 75,170, 97, 48, 77,227,176, 35,136,243, 26, 50,147, 51, 46, 70, 26, 11,193, 27, 58,235,153,107,151, 91,214,169,204, 10,122, + 66,140, 80, 10,239,169,209,101,183,106, 49,166,236,210,196, 88,197,100,155, 8,206,114,166,189, 59,235,230,183,207,206,156,205, +213,203, 35, 10,162,121, 82,244,185,138,203,164, 84, 23,192, 62,246,245,113,216,176,172,162,187,101, 80,181,239,214,181,243,221, +127,141,115, 94,252,153,223,238,135,146,220,234,197,222, 52,205, 42, 38,155,231,121,237,176,114, 22, 58,107, 41,149,136,104,173, + 93,137, 99,219,218,169,212,145,110, 85, 48, 87, 28,165,243,110,221,159, 82,233, 93, 57, 21,146, 24,230, 44, 92, 92, 94,226,166, + 25,226,204, 44,153, 75,223,208,166, 72,107, 33, 25, 75, 52, 6,227, 61,222,192, 92,178,170,200,165, 96, 26,199, 92, 18, 18, 39, + 76,112,120, 23, 16, 17,186,174, 37,207,145, 60,142,106,247, 68,187, 94,231, 44, 57,197,213, 14,235, 43, 20,101,129,150, 36,132, + 33,199,250, 61,235, 38, 80, 19,218, 52, 8, 37,139, 97, 42,137, 36, 25,231, 12, 86, 10,126,158,104,108,226,195,235, 3,151,109, +171,240, 23, 81, 18,151,243,174,242,239,181,187, 47, 89, 42,255, 65,227,104,131, 15,164, 52, 87,203,223, 57, 96,104, 78,177,174, + 66, 50,211, 41,234, 59,228,155, 74,231, 75, 88,171,216, 85, 99, 12, 37, 38,188, 51, 72, 86, 91,226,242, 46, 76, 21, 13,155,115, +169, 90, 8,253,124, 87,128, 74, 46, 24,239, 40, 69,167,119,198,154,154,211, 46, 42,142, 74,185,158,134,101,189,228,150, 2,103, + 33,243, 33, 64, 90,144,170, 74,166, 83, 36,171, 62, 18,174, 90, 36, 93,219,213, 47, 89,240,182, 81, 86,123,211,208,132,182, 54, + 33,250, 28, 24, 3,211, 56,114, 56, 28,106,120, 97, 97, 26, 31,116, 79,107, 52, 24,200,250,128,245, 13,197, 25,125, 70,147, 54, + 42,221,101,167, 68,181, 28,121,241,252, 25,247, 55,111, 24, 78, 81,245, 19,185, 40,234,181,250,203,139,148, 10, 0,147,117, 4, +191,252, 57,154,224, 48,245,156, 94,184, 14,206,110,171, 43,106, 26,155,190, 43, 13,161, 9, 53,130, 53,241,240,240,192,243,235, + 11, 94,191,126,224,235, 87,223,243, 15,191,254,154, 40,134,113,142,196,251, 65,237,161,215,207,248,250,155,239,120,247,238,134, +175,223, 14,124,117, 51,113, 55, 27,142, 73, 24,179, 80,140, 69,114,157,154, 45,199,194,186,242,211,149,149, 49,234,141, 87, 59, +163, 78,166,134, 49,145, 37,115,209, 92,242,230,110,230,183, 95,189,225, 15, 62,122,193,252,112,228,170,185,166, 76, 17,137, 66, +113, 58, 61,157,179,240, 48,100,250, 33, 49,156,116, 98,148, 74,161,184,134, 20, 35, 15,227,132,140, 39,230, 57,145, 10, 12, 83, + 98,206, 48, 69, 33, 21,213,177,136, 49,164, 42,174, 93, 70,139, 57, 87, 36,184, 85,186,157, 90,218, 76, 57, 83,253,150, 42,140, + 50, 59, 60,236,143, 43,126,117,255,179,140, 90, 23,133,228,190, 48,120,188,130, 52,216, 42,162, 91, 66, 74,228,125,122,215,234, + 31,183, 63,104,111,123,236,145,183,117, 15,180,128,226, 69,116,172,190, 5,109,213, 3,217,236, 51,177,171,118,160,114,144, 65, +173, 67,105,217,255,212,125,101,204,234, 55, 94, 8, 80, 75, 39,191,140,236,145, 66,215,182, 28,250, 14,176,250,195,175,227,123, + 91, 19,185, 36, 69,218,160, 7,102,235,212,218, 82,114,194,161,163, 72, 35, 66, 78,170,100,183, 70,240,193, 85,149,168,169,149, +170,175, 2,133,130,145,229,195,172, 81,174, 53,181, 72,213,220, 91, 60,168,119,150,198, 25, 72, 35,227,124,210,238,160,204,122, +184,164, 68, 49,138,192,244,126,217,233, 25,114, 54,196,148, 40, 1,154,226,232,188, 91, 11, 4,169,186,193,101, 60, 44,219,243, +181, 2, 93,100,247,139, 75,122, 95,161,108, 85,252,227, 45,244,162, 4, 63,191,189,183,207,236, 17, 20,102,243,128,155,179, 61, +122, 5, 73,159,221,169,239,185, 59,120,228,248, 48,101,229,215, 27,243,136,156,104,158, 38,226,157,169, 1,126,199, 20,105, 29, +254,155, 85,137, 80,197, 74, 42,194,122, 56, 30, 53, 87, 92,150,124,230,101,180,110,171,186, 93,237,145,243,156,222,243,247, 75, +229, 39, 44,248, 96, 74,193,225,107,226,151,236, 96, 62,142, 40,137,177, 20,230,156,184, 52, 66, 35,133, 11,231, 57, 1,151,141, + 80,176,164, 82,136,198,104,252,170, 8, 23,135, 3, 50,142,106, 5, 43,153,139,190,175, 93, 65,169, 28,244,172, 41, 82,198,172, +231, 69,240,158,182,211,208,148,185, 40,169, 44, 75,193,138,238, 41,103, 41, 68, 17,166,172,190,113, 35,224, 98,141, 21,205,250, + 44,207, 34, 76, 37, 18, 75,193, 6, 8, 82,184,104, 3, 47, 46, 90, 62,184,238,105,125,192, 91, 32, 27, 74, 49,196, 34, 36, 50, + 99, 76,106,183,203,162,130,162, 12,177,234, 65,176,144,196, 16,115,161,233, 58, 82,206,170, 96, 78,137, 41,206,116, 11, 24,167, +198,100,158, 30, 78,245, 60, 48, 72,170, 43, 49, 32,197, 25,145, 82,167,111,149,235, 93,149,228,169,142,150, 1,250,190, 87,225, +216,226,182,112,250, 94,166,250, 94,148,229,157, 89, 18,228,164, 18, 34,139,190,199, 49,103,172,111,149,111,239,180, 19,115,174, +118,199, 8,215, 87,151,120,239, 25,167, 17,235, 29, 93,223, 51,156, 6, 94,190,124, 65,219,182,220,223,222,241,242,229, 11, 68, +132,219,251,123, 62,254,228, 19,134, 97,100, 56, 13,180, 93,199,225,208, 51, 79, 51,119,247,183,188,124,249, 18,201,145,105, 26, + 56,205, 35,199,211, 73,133,183,110,209, 73,204,224,148,133,225,156,234,112,140, 13,204,243,140,164,145, 47,126,243, 57, 18,103, +218,182,213,239,109, 86,166,128,130, 99,156, 90,230, 22, 69, 78, 93, 49, 57,167,231, 77, 74, 66,168,217, 8, 6, 48,182, 78, 90, +237,182, 6,208, 9, 1, 52,109,187, 78,184,166, 56, 50,142,153, 57,194,215,223,188,225,239,255,241, 11,230, 92,248,224,195,151, + 76,227,196,221,219,119,188,188,190,230,112,125,197, 55, 95,124,201,171,239,222,241,230,126,226,221,152, 25, 18,196, 92,137,164, + 53, 6, 22,103,214, 85,111,170,110, 37,138,213,207, 43,101,166, 52, 19,124, 75,215,118,117,205, 7,113,154, 57, 30, 51, 95,167, +129,119,223,221,114,243,234, 53,127,242,139,159,241,233,167,159, 80,172,231, 56,207, 36, 25,233,131,231,254, 97,192, 42,120,130, +156,171, 8,214, 5, 4,203,241, 52, 49,198,204,156, 34, 49,234,132,103,138,153, 88, 44,211,148, 17,235,171, 21,178,118,236, 44, + 33, 65,218, 96,165, 92, 86, 13,138,103, 53,175, 75, 69, 17,150,243,243,113,133,208,252,176,118,173,156, 5, 85,109,201,104,251, + 49,183,221, 29,124,182,216, 13,212,177,116,111,143, 14, 79,131, 86,194,107, 8,236,143, 48,229,159,156,132, 62,134,213,152,141, + 46,167,132,170,178, 94,233,206,106,165,104, 37,107, 39, 90, 71,103,212, 76,225, 44,133, 84,197, 31,170,108,215,200,193,178, 8, + 86, 42,207,185, 13,129,139,195, 1,239, 2,195, 52, 99, 69, 71,101, 26,179,151,145,156,232,130,167,117,170, 92, 55, 57,146,102, +205,116,238,186,182, 30, 24,117, 44, 21, 2,222,148, 26,228,162,236,106,237,112,212, 7, 43, 69, 71,212,190, 22, 25,110, 9,117, +145, 66,138,139, 45, 73,189,163,197,170,191,184, 44,158, 30, 99,112, 38, 49,215,162,106,158, 20, 89,233,157,193, 36,157,142, 88, + 87,201,100, 49,210,120, 71,227,131,238,157,170,141, 48, 9,155, 80,203,108, 16, 29,138,121,130, 64,183, 83,153,153,157,135,189, + 58, 10,150, 61,157, 61,187, 52,215, 45,250,106,165, 91,158, 9,121,148,223,126, 22,169,186, 48,170,207, 36,120, 79, 57, 54,246, +127, 70,183, 70,176,136,236,170, 0,171, 96,143,205,142,183, 55,231,203, 57, 89,239, 41, 15,191,216,117,213, 84,100,155, 60, 44, +243,171,146, 51,190,104,167,166,204,112, 5,120,104, 70,179,134, 52,248,224, 25,199, 89,195, 33,154,134, 24, 79,235,200,116,209, + 52, 44,197,244,226,129, 95, 14,205,141,236,165,169,133,198,232,218,229, 56, 78, 60,247, 30,151, 19,185, 8,173,192,243,198, 51, + 77, 51,157,181, 68,171, 19, 28, 9,142, 97, 28,176,214,209,121,203, 56, 36,152,102,186,182,195, 90,207, 52, 69, 29, 33,231,140, +119, 85, 12, 90,167,117,183,119,247,186, 27,183, 48,204, 74, 97, 27,166, 76, 22,171,148,194,224,136, 46,172,225, 33,206, 24, 76, +214,131, 86, 74, 66,156,101, 50, 5, 19,132, 6,225, 50,120, 62,185, 62,240,241,245, 21,141, 99,141, 39, 30,147,142, 64,139, 49, + 76, 73, 56, 85,208, 79, 1,154,174,195, 68, 33,207, 17, 49, 26, 67, 44, 2,198, 7,165,155,165, 68, 8,129, 97, 28,105,219,150, +211,105,208, 36,195, 16, 56,244, 61,199,219,251,138, 72,213, 34,231,242,242, 66,177,203,206,147,146,218,244, 98, 76,107,178,224, +146,244, 86, 74,209,105, 73, 61, 28, 75,210, 72,230, 38,120,181,121, 57,200,197, 48,167,132,115,158, 24, 39,172, 11, 56,235,153, + 78,199,170,181,128,171,235,231, 92, 94, 63, 35,180, 61,195, 48,112, 56, 28,184,184,184, 84, 91, 83,156,249,248,227,143,152,167, +145,219,119,183, 60,127,241,146, 82, 10,239,110,223,241,225, 39,159,112,119,119, 79,119,117,137,235, 90,238,239,238,193, 59,166, +146, 73, 6,142,105,166,109, 46,136, 8,147, 36, 34, 74, 70,203, 2,197, 26,196,123,230, 2,109, 13,127, 50,206,227,172, 39,149, +204, 56,205,120,171,192, 26,138,238,188, 93,176, 12, 15,119,180, 94, 93, 24,125,219, 65, 8,148,250,243,200,185,208,120, 71,156, +231,181, 25, 18,145, 53,172, 69,106,161,105, 69, 61,245,203, 57,183, 88,223,188,181, 26, 59, 92,197,116,170,232,215,201,147, 15, + 61,255,240,197,107,254,234,175, 63, 35, 38,248,244,211,143, 85,139,144,149,177, 80,114,225,235, 87,175,249,250,251, 27,110, 79, +145,155,177,112,140,133, 33,150, 53, 52,186, 84,214,199,246, 46,171,154,159, 34,164,152,215, 51,203,123,141, 66, 30,135,137,139, +195,129, 34,133, 81, 18,199, 2,173, 9,124,252,209, 75, 62,252,232, 0,206,242,230,251,215,164, 89,223,233,148, 11,209,137,250, +213,231,194,253,113, 38,101,165,124,166,148,212, 53, 33,134,152, 21, 0, 53, 71,117, 64,229, 34, 36,109, 81, 86,192,214,222,218, +188, 89, 62,245,172,206, 69,239, 14, 47,198,213,145,228,158,231,190, 23, 22,169, 21,235,199,247,233, 63,160,122, 22,221, 63, 26, +171,135,155,221, 5,194,172,128, 14, 28,197,148,149,142,182,239,228,255, 41, 35,255, 31,251, 19, 45, 99, 75,163, 56,163,247, 96, + 41, 70,234,134,116,141,140,205, 27,101, 73, 74, 21,216, 80, 45, 35,105,197, 55, 46, 88, 78, 29,137,233,207,166,105, 90,174,175, +174, 42, 90,115,196, 20,237,255,125,112,234, 17,205,154,180,214, 58, 71,103, 29,150,204, 52, 30,235, 40, 61, 64, 81,127, 58, 53, +183,215, 26, 67, 48, 89,153,219,193,173, 16,146, 18, 35,146,150,221,154, 35,216,170, 70,207,153,152, 39, 36,151,149,174, 7, 6, +177,218,129,121, 11,222,171,221,105,156, 39,172,100, 92, 86, 79,189, 56, 79, 17, 37, 85, 89, 73, 85, 45,172,151,105,206,106, 7, + 10,162, 2,175,136, 94, 12, 75,154,164, 44,158,113,243, 20, 8, 70,214,144,147,237, 34,173, 83,156, 82, 25,208,187, 66,172,172, +110, 71, 89,215, 53,122,161,111, 19,160,205, 59,126, 62,134, 63, 11, 88, 41,156,237,208, 31, 95,236,249,145, 39,253, 44,242,117, + 63,130,175, 22, 58, 5,105,236, 81,195,188,151, 70,247,212,255, 45, 4,172, 69, 66,185, 44,130,182,125,187,101,152,226, 25, 55, +191, 36, 13, 11,194, 64,140, 26, 15,106,173,238,202,251,174,103, 28,166,213,143,188,247,232,111, 56,102,197,182,182,109,139, 72, + 90,247,240,186,175,207,204,100,108, 19,112,115,193, 6, 71,202,130,143,145, 75,231, 24,124,224,148, 51,167,146,213, 22, 52, 70, + 50, 66,219,117, 76,243, 76,227, 60,109, 8,107,119,222, 58,125,150, 92, 27, 24,243, 76, 82,123, 2, 38, 27,162, 42,221,152,103, + 85,142, 91,231, 72,101,198,122, 67,235, 28,138,122, 8,106, 17, 21,203, 92,253,241, 49,102, 82, 73, 42,170, 44,133, 62,120, 14, + 22, 94, 30, 90, 62,184,236,232, 61,228,168, 7,162, 88,213,119, 20, 68, 39, 11,176,198,177,230,156,152, 99, 34, 39,221,155,199, +156,152, 79, 35,198,121,114,222, 88,229,167,211, 73, 71,225,162,239, 97,169,254,235,156, 51,221,161,199, 90,203,241,248,160,185, +235, 82, 56,158, 78,244,125,143,243, 13,136,197,123,157,164, 44,107, 56, 91,169,144,165, 20,198, 97,192, 89,205,113,104,219, 6, + 73, 73,149,212, 89, 42,196, 69,199,165,161,239,244,103, 29,103,157,154, 57,203,135, 31,126,192,207,126,254, 11,230,148,185,123, +120,224,226,250,138, 23,207, 95, 48, 12, 35,183, 15,247,188,124,249,146,119,247,183, 8,194,152,102, 82, 78, 12,211,192, 24, 71, +166, 60,145, 72,100, 43,248,190,161, 43, 29,233, 33,242,193, 7,207, 56,158, 78,136, 73,248, 0, 31,127,242,146,211,241, 30, 99, + 34, 63,255,197, 79,184,186,186,226,179,207,254, 30,231, 29,183,247,247, 20,171,244, 59, 93, 39, 60,224,172,225,242,112,193,179, +139, 3, 87,135, 3, 72, 38,151,168,186, 32,167,156,122,165,175,165,117,130,217,120,175, 12, 14,187, 89, 45,237, 78, 80,235,156, + 83,150,192,226,242,201,218,201,122,107, 86,109,144,175,200, 94, 83,207, 81, 45,140, 29,195, 36,188,187,123,199, 63,254,250, 75, +164,105,185,184, 82,167,206, 87, 95,191,230,225,230,134,143, 95,126, 72, 42,112,115,115,203,205,237,200,219,251,153,251,185,112, + 74,234,222,136, 8, 88, 95, 99,189, 13,150,178,105,121, 28,120,235, 40, 53,102, 92, 41,120,126, 69,118,223, 31,239,232,251,142, + 11,223,208, 97,185,118, 14, 51, 79, 60,127,241, 41, 31, 60,191,226,246,118,170,147, 0,163,132,209, 92, 39,107,198, 96, 71,189, + 59, 82, 41,250,133,196,114, 26,103, 50,174, 22,158,166, 58, 33,150, 64, 45, 5, 55,109, 42, 34,187,158,165,171,187,108, 39, 25, +246, 79,130, 64,140,188,215,121, 63, 25,174, 81,119,142, 26,222, 32,171, 55,119,197, 1, 86, 47,162,148,178, 27,145,234,174,107, + 25,201,170,168, 72, 47,159,229, 2,126, 47,146,181,168, 10, 95,156,252, 14,185,158, 89,149,148,102,191,135,223, 31,174, 34,235, + 72, 92, 71,152,154, 74,230,216,170,159, 61,167, 62,215, 10,124,185,208, 13,154,169,158, 37, 35,162, 48,154, 54, 52, 92, 93, 94, +210,182, 93,141, 60, 84,136,129,113,134, 16,156,102, 51,139,238,244,122, 31,104,172, 35,142, 51, 86,132,182, 9,154, 48, 28,103, +140,115,120,175, 59, 35, 3, 52, 36, 28, 5, 73, 69,247,154,113, 70, 74,161, 9,161,138, 86, 64,210, 76, 41, 73, 35, 61, 37,175, + 56, 69, 89,114,207,173,169, 91,186,172,213, 94, 22,130, 51, 24, 27,112, 86, 56, 14,137,185,238,247,140,100, 26, 99,152,150,112, + 6, 83,185,219,185,224,235,206,203,162,190,219,117,255, 37, 90,241,238, 17,194,143, 9,130, 43, 24,161,142,221,197, 44, 41,123, +143, 99, 89, 55, 96,204,234,184, 49, 91,207,110,173,232,248,138, 93, 65,240, 40, 65,110,253,231,215,209,230, 6,143, 49,107,103, +109, 30,185, 36, 55,146,190, 49,178,121,217,119, 83,133, 21,143,185, 8,232,204, 35,127,199, 35, 61,169, 26, 21,204, 6,153, 53, +239,255, 51, 27,243, 94,200, 89,125,188,198,194, 48, 77, 74,244,139, 51,165,120,218,182,229, 56, 28, 65,116,162,243,240,112,218, +198,239,156, 23,227,203,133, 52, 77, 83, 29, 45,171,135,217,213,200,222, 41, 69,220,213, 53,109, 99, 49,131,240,112,127,162,241, +158,124, 58,209,249,134,166, 0,115,196, 89,135,175,239, 76,142,154, 18,118, 56, 28, 84,107, 34,133, 52, 69,196, 26,162,133,113, + 26, 16,175,227,227,214,183,144, 11,105, 69, 20,171,152,206,121,199, 85,219,241,236,186,231,170,235,112,149,207, 94,114,210,192, + 21,241,136,117, 28,231,196,195, 48, 65,202,244,237,129, 11,239, 56,120,195,101, 48,184,148,240,109,192,134, 70, 85,252, 21,140, +146,115,214,182, 35,102, 92, 21,215, 46,239,114,170, 34,185, 41,170,210, 56,198,200,245,197, 21,167,113,212,103,222,168,223,219, + 58,171,107, 16,231, 56, 13, 35,215, 87, 87, 20, 18, 41,205,248,202,208, 63, 13, 3,198, 7, 45, 32, 74,198,155,176, 19, 44,218, +173, 29, 49, 26,157,234,125,160,241, 53,134,217, 26, 8,129,152,245,201, 19, 84, 20, 0, 0, 32, 0, 73, 68, 65, 84,125, 57,157, + 70,196,120,166,156,112,141, 37, 27, 40, 86,255,242,222,241,236,197,115, 78,243, 72, 17,195, 48,158,120,241,226, 37,115,156,201, +162,170,125,172, 38,223,165,148, 48,254,132,177,208,118,129, 41,122, 46, 46,123, 10,153,135,227,204, 71, 63,249,144,225,216,227, +191,135,255,224, 79,255, 57,199,211,137,223,252,246,183, 12,227,145, 63,255,143,254, 61,190,250,234, 75, 90, 95, 40,105,228,211, + 79,255, 25,211,116,226,175,254,242,175,177,214, 48,143, 19,141,183,244,125,203,135, 31,124, 76, 31, 60,125,112,196,225, 68, 99, +162,142,145, 41,117,121,169, 19,197, 88,213,248, 37, 23,205,186,112,134,132,106, 15,124,213,122,152, 58,245, 92,196,200,214,185, +202, 48,171,239,158,213,112, 34,231,106,120, 75, 45,108, 77,229, 45,148, 34,140,177,240,245,171,175,249,250,155,239,112,109,224, +197,135, 47,112,214,112,104, 58,242,156,185,191,121,224,251,155, 91,174,250, 3,119,239,142,220, 31,103,198, 40, 36,156, 70,165, +162,231,180, 6, 43, 45,247,120,205,208, 48, 26, 75, 61,231,172, 98,226, 5,195, 92,170, 70, 75,244,188, 76,146,112, 53,203,124, +154, 31, 72, 93,195,191,254, 55,127,197,103,109,199,245,245, 39,140,146, 73, 37, 43,241,176,212, 38, 72, 10, 89,102,156, 61,111, +102,198, 40,204, 37,214,180,181, 10,226, 17, 77,124,204, 11, 1,115,167, 65, 19,217, 1, 90,106, 2, 94, 29,119, 47,227,119,229, + 13, 83,169, 70,103, 23,185, 49,171, 39,238,220,171, 86,200, 75, 87,229,214,223,111, 85,192, 87,173, 45,105,185, 92,106,254,182, +117,110, 49, 57,238, 44,109,117,191,106,158,238,194,203, 34,152,147, 31,232,210, 69,214,208, 7, 43,118,119,185,215,255, 92,168, + 66, 13, 22, 74,174, 10, 35, 86,193,193, 92,125,210,186, 71, 76, 18, 41,166,172,180,164, 66,161,241,129,198, 7,165, 55, 89, 75, +142, 58,193, 8,190,229,162,191,160,111, 14, 56, 49, 76,211,128, 69,187,235,208,182, 24,107, 24, 6,101,119, 55, 53,219, 56,231, +153,156, 35,173,215,199, 40, 38,245,170,135,208,208,132,158,166,233,235,169, 52, 48, 77, 3,243,168, 2, 42, 43,134,182,233,116, + 68,149, 19,165,204,136,196,213, 29, 96,173, 10,229, 52,236, 66,118, 31,190, 80, 72, 43,156,199, 57,175,251,220, 70,247,180, 57, +203,163,148, 60,181,162, 24,103, 86, 30,185,149, 66,103,132, 99, 21,229,136,206,173, 40, 69,214, 78,116,173, 23,237,227,207,181, +170,199,243,238, 51, 53,203,252,199,108,255,222,238, 18,167, 62,141,103,133,130, 20,150, 79,119,165,199,153,178,235,173,205, 89, +135,111,118,210,115,169, 8,224,149,173,176, 72,244,204, 14, 70, 83,159, 49, 67,169, 26,137,165,248,144,117, 61,148, 41,213,230, +105,223, 47,118, 31,135, 24, 33, 63, 72,217, 59,219, 13, 44,191,148,151,212, 42,199,156,244,112, 31,231, 25,140,195, 4,199,195, +112,228,217,179,103,100,150, 40,206, 26, 94,178, 85, 62,235, 79, 77, 35,116,149, 85,144,242,132, 96,112, 57, 19,109,102,122,214, +208,245,207, 49,111,222, 17, 68, 85,239,210,118,204, 41,227, 16, 46, 27,175,193, 63,177,168,136, 8, 7, 38,115,154, 6,230,152, +116, 71,237, 2,217, 24,108, 19,200, 49,106,136,136,209, 28,113, 7,186,102, 10,142,143,174, 15, 52,222,208,183, 13,141, 55, 92, + 31, 90,156,129,113,200, 76, 69, 24, 99,197,127,198,140, 49,145, 67,223,242,209, 69,135, 41, 66,231, 91, 36, 69,210, 52, 32, 89, + 51,212, 53, 35,193, 98,178, 22,151,169, 22,209,161,109, 73,197, 50,166,172,194,174, 92, 35, 60,189,224,155,134, 76,169,124, 7, + 21,243, 81, 84, 57, 94,114,225,112, 56,168, 39,223, 90,154,208, 16, 99, 98, 60, 13,120,103,117,138, 6, 76,243,132, 53,190,230, + 53,104, 23,151,227,188, 65, 84,140,165, 13, 45,193, 7, 88,180, 52, 37, 65, 54, 56,171,255,251,226, 45, 31,198,204,148, 11,201, + 8,184, 90,160,212,204,115, 99, 45,182,113,116,151, 61,130,101,142,122,222, 52, 93,171,148,202, 24, 41, 57,114,125,217,171,222, +166, 10,213,158,189,188,198, 88, 33,116,150,159,253,236, 35, 78,199,158,223,124,126,228,143,126,246, 9,239,110,110,120,247,250, + 43, 74, 30,249,248,163, 23, 60,220,223,240,255,252,235,207,120,251,230,123,198,225,196,221,195, 3,191,250,236,239,121,243,230, +134,121,140, 12,247,119, 92,245, 13, 57, 24,158, 95, 95,113,232, 90,188, 85, 7, 77,153,103,164, 68,198, 73,199,231, 62,120,189, +228,168, 62,248,106,111,116,206, 97,157, 35,230, 72,104, 27, 82,156,107, 58, 93,253,249, 85,175,186,212,206,215,186, 80,109,156, +245,243,243,218, 57, 55,214, 84,108, 55, 88,167, 5,226,237, 48,241,234,187, 91,238,222,221,114,104, 3, 63,249,240, 37,215,215, + 87,228,148,248,246,155,215,124,243,197,183, 26,175,139,231,179,223,126,207, 52,213,221,180, 8, 83,169,185, 23,168, 13,174,102, + 90,107,190,198, 50, 93,174,119, 85, 65,240,141,215, 96,171,152,241, 14,218,198, 83,138, 22,172,207,159, 95,209, 53,150, 79, 94, +126,192,112,115, 75,156, 79,124,240,236,154,121, 46,220,142,134, 99, 22,146,181,117, 45,170,124, 3,113,142,211, 20,215,113,191, +110,104, 44, 99,170,201,158,232,170, 76,170,146, 29,244,103,148,113, 53,107, 97, 59, 87, 77,213, 36, 44,106, 50,169,106, 94,127, + 46,229,121, 60,146, 52, 27, 49,110,119, 24, 47,221,146,152, 82, 15, 74,139, 60, 26,123,111, 60,239,154, 36,195,178, 79, 45,154, +215,109,159,202, 74,251, 17, 92,232,163,224,140,115,194,215,182,112, 88, 58,169,125,183,109,246,195,135,245,255,217,181,165, 91, +133,126, 82,176, 89, 86, 42,215,146,119,172, 65, 3,126, 29, 15,149,202,218, 13, 62,112,232, 15, 28,250,131,230,236, 78, 51, 37, +234,238,243,112,113,137,111, 60,227, 60,145, 83,194, 27,165, 52, 25, 10,113, 30,245, 69,119,154,226,150,165,224,124, 67, 8, 13, +161,105,240, 94,179,177,199,147, 48, 12,170, 54,109,131,163, 13,158,198,219,106,137, 83,244,236, 34, 72,172, 65,134, 42,156, 90, +108, 46,118,211, 42, 72,169,194,191,154,158,100, 44,180,125, 75,223, 54,204, 67,229,215, 47, 1, 45,102, 71, 89, 91,198,210,162, +254, 95, 91, 47,124, 41,250,251, 72,165, 27, 89,217,113,215,139, 89,161, 17, 11,174,116, 31,164,178, 60,109, 89,100, 83,155,214, +221,229, 50,166,151, 61,107,125, 55, 34,183,178,137, 48,247,126,115,150,201,207,218, 77,115,174,165, 88,145,199, 85, 40, 41, 79, +217, 43,119, 33, 44,121,155, 86,101,246, 25,239, 11,164,233,199,159, 93, 83,179,159,237, 99,170,225,153,104,244,125,103,201,194, + 61, 8,162,187,180,156, 11, 15,195,192,197,161,199, 88,237, 34,219,174,227,120, 28,200, 49,157, 7,216,239, 95, 5, 49,228, 41, +210,245, 61,216,192, 24, 35,141, 24,198, 12,183,211, 68,247,233, 79,137,227,132,153, 51, 99,126, 32, 99, 41, 38,130, 41, 74, 49, + 44, 26,110, 34,198,114,204,145, 83,156,170,150, 66,195, 81,196, 26, 82,201,184,172, 1, 27, 37,101,130,129, 67,215,113,209,119, + 92,116, 45,109,125, 86, 77,201,180,174,208,133,128,149, 77, 59, 48,140, 35,121, 39,130, 77,211,140, 80,232,250, 14,135,165, 49, +154, 93, 29,188, 2, 79,140, 44,211, 8, 75,219,182,148, 41, 18, 92,141,127,173,132,187,182,107,137, 69,177,164,243, 60,115, 56, + 28, 20,130,211, 31, 24, 78, 19, 93,119, 96, 24, 7,154,106, 15, 77, 20,142,199, 7,124, 19,184,232,123,198,105, 90, 73,114,234, + 57, 47, 92, 94, 94,106,163,146,102,226, 56,211,180,170,136,247,206, 86, 33,151,254, 94,173,213,117, 2, 56, 93,145,121, 91,115, + 34, 84,245, 31, 83, 98,156, 19, 15,195, 72,198, 18,218, 14,172,197, 22, 85,222, 59,107,153,230,153, 16, 26, 14,253, 5, 93,127, +224,238,225,158, 92,102, 94,188,184,224,159,253,225, 31,242,112,127,207,171,111, 3,125,223,242,179,159,255,140,148, 51,215, 87, + 29,222, 59, 62,248,232, 3,254,230,111,255,134, 82, 18, 63,253,244,167, 60, 60,220,243,219, 47,190,224,217,213, 53,223,189,121, +195,255,242,191,255,111,252,252,103,191,207,195,253, 3,167,135,129,255,233, 95,254,143,244, 93,199, 56, 12,152, 92,248,230,183, + 95,112,209,247, 92,116, 45, 31, 60,187, 98, 60, 30, 85, 44, 39,133, 52,205, 56, 67, 93, 49, 56,166, 73,113,184, 57, 37,125,111, +139,212,201,237,130, 60, 78, 20,167, 22, 95, 31,194,138,249, 53,133,202, 79,216,208,205,202, 4, 73, 88,231, 85,159, 36, 82,247, +235,158,182, 11, 56,223,224,187, 3,197,182,124,251,246,129,175, 95,189,102,142,194,139,171, 75, 62,254,248, 39, 4,223,240,237, + 55,223, 50,156, 38, 94,191,126,203,187,219, 7,154,230, 64,119,184,226,213,205,145, 57, 9,221,225,160,122, 1, 35,149,200,231, + 54, 54, 73, 29,183,151, 82, 40, 6, 98, 78, 43, 63,160,241, 94,173,125,142,245, 92,116,235, 52,210,210,134,192,195,253, 61,151, + 93,199,193,121,158, 95, 63,227,251, 55,119,220,221,223, 51,141,137, 8, 24,111, 87,252,182, 58,128, 52,166, 91,245, 4,218,245, + 47, 54,181, 82,215,131, 2,216, 82,214,102, 99,117,225,236, 5,233, 98, 43,181,117, 1,129, 41,133,212,111,167,218, 6,156, 57, + 15,217,220,237, 61,165,108,244,183,157, 80,200, 60,146,182,239,109,104,171,207,221, 84,214,182,252,211, 16,162,143, 59,155,167, + 66, 97, 86,186,215, 89,184,136,249, 17,182,248,102,243, 17,179, 93, 48,219, 28, 68,103,190,154,126,180, 9,142,124, 8, 58, 90, +154,230,245,162, 55, 34,180,109, 67,219, 52,136,136, 6, 96,196,132,111, 2,125,127,160,109, 59,178, 36,230,113,164,164,168,123, +242, 82, 84, 92,151, 34,182,209,220,225,152, 18, 66,245, 96, 86,192,141, 49, 26, 17, 57,140, 19, 57, 21, 14, 77,195,161,241,120, +167, 99,178,146,166,170, 54,174,108, 69,217,138,155,178,208,201,234,197,152,151,139,185,212,236,237,172, 23,186,119,250, 18,118, +109,224, 52, 39,245, 34, 87,209,218,130,165,149, 34,152,160,225, 1,190,142,195,189, 57,247,254, 75,141, 4, 93,198, 65,203,196, +197,236,193, 49, 5,246, 94, 53, 49,219,192,123, 25,163, 27, 35, 72, 54,171,104,115,209, 94, 60,250,176,215,180,167, 53,195,124, +153, 2,152,173,130,205, 43, 19,161, 10,241,204, 35, 28,146,236, 60,242,230,177, 45,109, 55, 57,216, 49,227,247,226, 60,179, 92, +236,143,116,125,242,136,113, 36,108,110,138,213,103,127,182,217, 50,187,126,127, 81,212,233, 88, 50,141, 51, 49,105,146,223,112, + 84, 26,153, 53,142,227,105,226,249,243, 23,164,124,170,138, 87,179, 65,120,170,176,104,111, 11, 45,195, 72,211,181,136,133,113, +142,132,226,248,254, 56,112,114,134,111, 31,238,249,236,205, 91,190, 24, 50,247, 49,115,140, 51,209, 26,162,181, 76, 2, 15,121, +224, 84, 10,147, 1,241,141, 38,106,213, 81,119,138, 19,222, 41, 48,195, 55,158,195, 33,112,125,209,115,209,245, 75, 6, 8, 70, + 82,237,226, 10,141, 85, 49,167,160,124,244, 41, 70,166,121, 86, 40,147,245,136,213,200,211, 34, 89,105, 93,214,147, 76,170,246, + 76,139,201,145,198, 7,188, 49,180,141,103,152, 18, 22, 45, 64,164,166,136, 57,163,122,152, 20,179, 54,203, 37, 51, 79,147, 70, +148, 86,239,248,225,112,201, 28,147, 62,203,213,110, 69,181,203, 29,186, 70,247,196,185,128, 20,218,182, 33,198, 72,140,177,170, +183,161, 9, 30,138,208,134,160,226,212, 90,176,174,212,185,162,127, 15,189,230,109, 59,239,215,220,116,113,134, 49,206,204,165, +224,219, 22,235,213,107,220,250, 78,249,242, 78,147,193,154,182,225, 23,191,247, 9,151,207,159,113,123,127,199, 87, 95,101, 94, + 62,235,249,253,159,125,204,195,177,231,208, 25,110,222,189,229,207,254,236,223,229,219, 87,223,114,113, 25,248,155,191,249, 91, + 62,250,248, 37, 34,153, 95,254,242,223,240, 39,127,242,167, 28, 79, 51,191,250,187,191,228,195, 15, 62,164,136,229,243,207,191, +228,221,205, 29,222, 58,130,177,164, 97,100, 78,170, 91,184,188,184,210, 2,180,134,115, 5,106, 98, 95,209,169,102, 26, 71, 92, +219,110, 46, 17, 50,113,158,201,214, 16, 26,229,179, 47,243, 43, 91,135,174,211,112,210, 98,205, 24, 82, 84,156,172, 53,106,227, +125, 12, 43,179, 21,150, 21,156,195, 81, 8, 24,218,182,163,233,123, 76,215, 50,137,231,213,171, 27,222,188,187, 81,142,137, 49, +204,177,240,229,215,223,112,209,181, 4,239,185, 31, 34, 55,199,200,105,182,140, 69, 56,149,153,104, 60,217, 22,138,211,145,123, +206, 89, 17,171, 41, 86, 61, 85,169,153, 71,149,158, 87, 87,132,172,226,216,138,237,206,153,165,206, 79, 57,114,117,125,201, 52, + 76,156, 76,164,247,158, 49, 39,186,222,114,125,125,201,241, 97,100,206,142, 60,103,196, 57,210,186,151,175,220,127, 84,148,104, +178, 84, 55, 80, 94,207,197, 37,216, 74,113,201,230, 44,195, 98,157,188, 46, 13,243, 26,168,179, 3,164, 27,131, 63,159, 3,154, +247,243,202,215,147,170,108,151,249,126, 15,105, 30, 9,135,100, 39, 98,218, 93,196,203, 37,233,140,253, 39, 39,119,253,144,149, +104,191,246, 95, 52,125,118, 31, 7, 43, 63,204, 31,223,243,238,182, 80, 16,187, 27, 1,171,133, 34,149,234, 49,183,170, 60,223, +126,144, 58,198, 13,193,211, 54, 30,131,104,120, 66, 86, 6,119,211,116,132,182,165,148,194, 52, 77, 21,161,105, 9, 22,172,100, +114,154,241, 70, 95,128,152, 51, 83,138,244,125, 75,219,245,184, 58,146,154,166,145,113, 28,200, 57,209,181,129,206, 27, 60,137, + 50, 13, 80,180, 59, 89,210,149, 20, 48, 82,214,139,214,219,109, 77,146,170,168, 68,119, 86,218, 29,121,235,170,138,188,144,162, + 42,121,131,119,164, 28,215, 11,185,236, 49,106, 75,176, 66, 61,168,247, 30,237,101,111,169, 58, 4,251,168, 12,220, 37,176,237, + 0, 71, 98,247,209, 98,122, 32, 47,117,159, 90, 53, 42, 55,125,177,146, 47, 97, 53, 75,182,107,217, 32, 49,171,221,109, 23,228, + 34,123,100,171, 89,233,217,143,180, 32,118,157, 8,108, 42,122,195,227,169,213, 82, 98,240, 40, 5,206, 84, 27,220, 15,234, 58, +204,242,115,172,223,196,163,100, 65,115, 70,195, 51, 91,113,106, 52, 4,196, 90,253, 76, 99,142, 52,226,201, 25, 78,131,230, 94, +207,115,174, 57,203, 13,243,120,220,172,127,236,181, 3,117, 32, 87,247,162,185,122,148,135,148,113, 24,126,123,115,195,169,237, +248,187,251,123,254,223,239,111,248, 34, 27,230,166, 37, 89,203, 28,163,134,180,228,162, 54, 49, 99, 41,222, 32,113,166,113,142, + 38, 88,154,160,207,121, 31,172, 38,136, 57, 75,223, 6,181,174,197, 84,199,207,172,202,101, 95,243,178,157,247, 76,115,226, 52, +233,133, 46, 21,242,209, 4,207, 92, 53, 0,177, 68,245,126,155,154, 90,150, 19,125, 27,112, 56,154, 16,232,154,166,102, 31, 64, + 27, 60, 9,131, 15,158,135, 97, 32,131, 6,160, 88,171,138,251,221,207,164,212, 29,252,195,195,195, 10,188, 50, 69, 3,104, 28, + 6,239, 3,195,105, 80, 23, 66, 41,132, 38, 48,167,136, 15,142,121, 26,144,162,249,244, 87,135, 11,221, 5,167, 84,245, 23, 42, +222,242,214,208,132,138,150,173, 89,230,206,170,235, 37,139,174, 49,176,142, 88,127,239,139,235, 3,253,225,130, 57, 77, 56, 11, + 23,109,167, 98,217, 38,112,121,117,193,191,243,199,159,242,242, 39, 31,115,115,127,199,243,235,134, 47,191,252,146,203,203,150, + 55,111,191,229,226,170,231,175,255,230, 11,238,238,223, 17,243,204,183,175,190,230,171,175,191, 34,229,194,205,219, 91, 94,125, +251, 61,243,248,151,140,195,196,241,254,129, 18, 19, 93,104,184,108, 59,134,187,123, 14, 93, 71,223,182,196,148,112, 37, 19, 79, + 17,215,181, 96,181,144,247,206, 50,220,159,116,239, 91, 84,245,157,221, 46,209, 45, 87, 97,117, 93,245,197,121, 82,170, 91,237, + 70,173,181, 20,163,174,160, 82,138, 22, 69,138, 19, 5,187,100, 73,236,210, 24, 22,208, 86,206,100,132, 16, 28, 62,120,218,190, + 71,156,231,148, 10,239,222,126,207,195,241, 68, 22,181,222, 6, 39,116, 93,143,183,194,195,195,192, 52, 71,198, 4,183,247, 19, + 15, 67, 2, 91,232, 15,150,236, 2,169, 36,142,243, 76,104, 28, 89, 4,235,124, 13,241,218, 80,196,139,253, 57, 39,221, 96, 75, + 73, 56, 87,153, 38, 94, 9,158,174, 78,250,186,198, 33, 41, 34,100,226,100,104,140, 69,172, 35,149,194,231,159,127, 78,211, 92, + 82, 68,215, 86,130,230,161, 99, 32, 97,177,171, 16,184, 90, 64,173, 22,124,212, 11, 61,203,249,181,187, 95,215,137,148, 93,179, +179, 88, 86, 75, 45, 24,150,110, 94,182,232,213,178, 4, 80,236, 58,109, 35,231,244, 46,121, 36, 44,122, 60,126, 52,236, 58, 29, + 99,214,250, 97, 17,174,237, 99, 54, 87, 85,250, 63,241, 98,127,250,240,220, 46,246,229,178,149, 71,107,132,125,167, 95,118,217, +240,123, 65,151, 49, 27, 86,214, 86, 13,193,234,241,174,151,186,170,221, 75, 13, 78,113,180, 62,224, 48,196,121,214,139, 6, 75, +232, 90,154,118, 17,190, 69,134,211, 17,201, 51, 33,120, 28,130,228, 72,137, 99, 37, 45, 25,230,148,177,198,209,247,151,116,237, + 5, 24,221, 71,157,142,247,148,156,232, 91, 71,107, 51,196,137,148, 71, 76,137,234, 69,151, 58, 66, 55, 32, 57, 98, 81,250,210, + 62, 9, 45,197, 74,185, 51,154,150, 36, 11,160,162,134,117,140,211, 64, 11,132,238, 64,112, 16,237,246,217, 52,214,129,147,186, +199, 44,187, 56,211,243,139, 92,100, 71, 75, 53,251,233,206, 15, 67, 87,182,132,180, 45,244,100,241,150, 23,100, 71,142,171,159, +100,217, 61,226,251,148,190,221,106,218,236, 11,203,189, 26,189,108, 33, 69,123,140,112, 70,158, 48, 65, 62, 70, 15, 47,134,206, +237,197, 87,114,155,252, 14,119,134,172,123,250, 37, 38, 87,118,156,252,247, 18,221, 96, 71,217, 91,222,177,250,179, 46,234, 61, +215,226,160,230,129, 99,120,120, 24,104,187,158, 92, 78,155, 31,125,157,152,153,181,192, 73, 73,127, 61,143, 35,161, 8, 56, 77, +122,250,126,158,120, 53, 28,249,228,223,254, 99,120,123,143, 19,203,148,148, 30, 39,206,144,114, 34, 4, 79,239, 26, 92,240,136, + 83, 21,115,235, 28, 33,248, 53,214,211, 27,221, 27, 31,186, 22, 68, 35,131,173,213,209,162, 10,167,188,166,108, 89,149, 83, 72, + 42, 28,199, 73,133, 65,227,140, 55,150,190,146, 23, 83,212,209,174, 32,186,199, 94,147,192,124,229,197, 27,156, 55,181,123,158, +105,131,199, 58,136, 34,186, 18, 52, 90,196, 72, 73, 80,244,211, 41,136,102, 5, 84,142,185,171,180, 57, 99, 84,181, 46, 5,154, + 38,212,248,228,188,179, 45,214,252,240,122, 78, 93, 28,122,230,121,162, 9,158, 56,141, 52,109,131, 90,199,149,239,160,205,186, +163,107, 3,185,184,250,231, 88,244, 73, 5,196, 98,189, 93,167, 61, 23, 23, 61, 31,127,244, 33, 87,207,174,201,146,200,105, 34, + 77, 19, 30,143,180,142,182,247,220,223,191,229,167,191,248, 9,151,210, 50,199,200,183,223,190,230, 87,127,247,247,220, 63,220, + 51, 76, 19,239,238,142,252,119,255,226,191,167,105, 26, 94,189,254,142,155,155, 59,222,190,185,163,107,122, 90, 27,120,251,205, +107,174,174, 46,184,106, 2,121,158,232,155, 6, 95,163,163,211,195, 81,221, 60, 70,148,130,103, 13, 37, 69, 10,133,182, 13,148, +146,104, 26,175,214,216,146, 25,134, 83,181,237, 90,230,105,174,216, 86,187, 2, 80, 82, 76,170, 80,183, 16,156,186, 44,172,217, +130,186,116,154,225,234, 78,221,214,105,161,172, 81,215,165, 44, 64, 26, 21, 87,251,166,161, 56,199,152, 10, 49,142,188,126,251, + 6,193, 16,124,131, 1, 78,199,129, 23,207, 46, 56,158, 6,190,191,125,135, 17, 97,142,153, 49,193,113, 76,196, 98,201, 37, 19, +143, 15,170,131, 8, 10,223,137,177,168, 77,218, 24, 40, 14,183,238,254,148,124, 39,139,170,172, 34,122, 83, 54, 72,112,164, 18, + 41, 41,211, 56,109,206, 16,225,250,226, 64,219, 56,198,168,161, 62,193, 55, 60, 28,111, 49, 18,152, 37,241,229,119,183, 76,198, +144,140, 37,147,235,106,120,129, 69,149, 21, 24,229,168, 80,153, 37, 13,111,119, 46,218, 37, 30,186, 40,136,237,156,145,181,185, +126,164, 10,153,150,223,215,239,189,182,178,219, 77,111,121,221, 21,226,178,200,147, 68,216, 64, 76,230,253, 0, 11,161, 6,166, +152, 21,253,186,170, 66,235,158,122, 11,220,248,113,239,249, 15,102, 98,139, 89,131, 44,206,196,197,214, 60, 25, 62, 35,103, 23, +182,108, 8,213, 61,220,100,217,243, 22, 77,227,177, 24,154,208,210,134,160,223, 73,206, 4,175, 15,102,168,190,113, 41,133,146, +171, 55,208, 55, 42, 30,204,137,148, 35,227, 56,168, 42,184, 36, 29,223, 24, 71,137, 83, 13,110, 81, 40,131, 20,225,112,113,224, +208,245,184,154, 38, 21,199, 1,147, 35,173, 51,144, 7,210, 60,225,115,194, 25,205,241,213,244,184,138,160, 51, 9,231,212, 99, +238,156, 89,227, 93, 75,141, 77,196,232, 22,124, 73,138, 66, 10,198,234, 75, 88, 68,119, 55,174, 34,105,189,213,127,175,181, 48, + 45, 7,182,173, 36, 66,163,184, 89, 49, 22, 49,121,167,133, 56,183,128,253, 56,160,232,124, 60,173, 15,241, 57, 98,181,156,177, +248,229,233,152,220,197,255,189,143,134,145, 93, 57, 33,238,189,100,181,125,210,219, 30,116,180,159,221, 24,115,206,129, 95,190, +254, 42,214,171,241,150,219,226, 90,158,164,215,109, 36,206,223,101,202,220,167,195,153, 51,144,205,202,222, 17,136, 73, 87, 8, + 99,137, 42,252,178,138,126,245,141,134,253, 40,110,115,191, 50, 43,231,161, 57,178, 8,110,212,189, 17,139, 99, 76,134, 95,253, +250, 55,252,183,255,205,127,197, 7, 63,249,136,223,220,188, 99, 74,137,185, 20,134, 42,204, 27,199,153,152, 50, 83,154,152,115, +210,255,125,142,122,225,229,172,209,171,222,225,109,163, 86,185,164,233,135, 74, 92,180,132,208,144, 82, 36, 77,202,144, 55, 86, +200,243, 72,206,162,214,205,162, 69,210,213,161,175,201, 92, 48,215, 24, 80, 31,220, 74, 70,116, 86, 32, 43, 81,206, 24, 33,167, +136, 51,202,224,246, 33,112,124, 56,130,115,180, 77,224,225,221, 29,222,122, 93,105, 73,193,121, 79, 78,153,224,131,122,237,173, +229,254,254,161,142,197, 67,221, 13, 79,122,217,131, 58, 86,234, 46,157, 82,180,227,174, 58,146, 54,120,245,228,163,132, 71,215, +120, 21, 41,213,175,211,182,202, 59,215, 4, 59, 37,199, 77,211, 72, 27, 26,178,104, 71,219,135, 22,111, 44, 93,119, 32,132,192, + 52, 78,100, 41, 76, 83,196,137,165,237, 90,222,188,125, 77,185, 61,241,175,254,213,255,193, 41, 42,205,236,151,191,252, 21,119, +247, 35,255,195,191,252,159,185,122,118,205,233,116, 98, 24,103, 94,189,250,140,231,207,159, 83,138, 16,124,207,253,187, 59, 90, +219, 98, 82,228, 16, 28,243,221,173, 70, 48, 91, 67, 62, 30,105,157,215, 29,250, 60,144,227,192,229,229, 37,211, 52,233,247, 60, +171,251, 34,229, 88,121, 8,154, 52,151,170,125, 54,229, 76,206, 35, 82,137,135,214,250,154, 12,167,186,158,105,158, 9, 21,249, + 90,202,146, 79, 80,209,199,117, 98,136,161, 22,154, 5,156, 95, 69,168,118, 21,189, 58, 93,187, 56,229, 8,220,222,222, 51,197, + 17, 1,250,190,227,227,143, 62,230, 55,191,254, 28,131,112,127,119,207,241, 93,225, 16, 26,218,166,227,244,112,207,152, 5,219, +116,204, 15, 3, 24,209,239,197, 83, 3,115, 20,252, 83,196, 82, 82,181,252,150, 92, 99, 97,195,186,154,181,182, 78,241,234, 94, + 59, 22,200,166, 84,213,123,169, 77, 91,198,218, 66,219, 52, 52,221, 37,146, 45,119,119, 71, 26,103,152, 50,124,245,205, 27, 30, +102,167,233,129, 86, 61,228,190,138,222,138,168,237, 81, 86,205,153,146, 3, 75,150,205,125, 37,165, 18, 34,151, 9,230,214, 57, +109,129, 84, 53,106,103, 97, 80, 47, 19,169,146,241, 91,174,170,108,144,106,179,100,148,155, 51,171,146,156,117, 50,230,108,124, +178, 16,196, 12,254,220,191, 99,228, 7, 10, 0, 57, 15,251,224,169,144, 22,243,164, 3,125,185,184,109, 29,149, 47,177,168,246, +177,149,237, 7, 58, 41, 29, 43,149, 45, 99,123,229,129,171,125,129, 82,176,222,209,120,181,186,229,146,215, 92,224,178, 38, 15, + 85, 26,220, 34, 90,176,122, 45,205,113, 34,166, 68,140, 19, 57, 71,108,209,232,204, 82,162,254,247, 42,214, 40, 57,209,216,134, +203,190,199, 27, 75,142,138,160, 37, 71, 28,153, 18, 39,200, 3, 14,197, 43,218,149,164,175, 35, 50, 29,238, 24, 29,237, 7, 85, +113,164, 82,149,146,165, 40, 75,184, 40,161,202, 89,187,190,160,101,138, 85, 20,104, 72, 89,112, 73,129, 59,142, 92,187,203, 26, +228, 32,138,233,116,245,215,196,250, 90, 8, 40,139, 91,235,170, 58,242, 41,194,239, 74, 52,217, 20,230,231,234,111,179,203, 5, +223,227,220,246,228,180,243,130,110,215,205,179,219,205, 21,214,125,252,227, 73,210,166,132,215,191, 23,217,143,212,151,169,204, +249,247, 96,140, 60,174, 11,206, 20,253,203,215,121,111,146, 84, 47,244, 34, 79, 92,250,200, 15,146,146,100,227,226,174,239,162, +221,173, 51,114,169, 81,135,222,146,114,164,200, 81,133, 84,119,119,187,241,190,217, 49,239,119, 69, 87,113, 72,118,140,115,228, +178,235,153,109,195,175,254,241, 43, 98,140,252,231,255,254,191,197, 31,127,247, 45,111,222, 62,240,221,237, 29,239, 70,195,235, +155, 59,200,145, 56,142, 4,103,177, 65,241, 60,190, 24,172,113, 68, 11,214,121,157, 44, 85,207,183,243,129, 28,149, 65,237,157, + 99,174,100, 54,235,116,164, 15,162,151, 37,144,107,224, 72,127,232,184,236, 90,230,169,144,187, 6,155, 11, 65,194,134,106,206, + 17, 91,179,199,188, 53, 92,116, 29, 93, 8,154,119, 39, 26, 5,220,132,134, 40,165, 94,176,172,116,199,195,225,192,156, 18, 34, +105,229,112,228, 44, 4,175,158,255, 56, 37, 66,211,114,113,232, 56, 30,143, 53,229, 46, 86,139,170,171,107, 23,189,144,230, 73, +163, 79, 67,215,224,125, 77,109, 76,165, 2,181,160,241, 14,139, 16,154,128, 0,167, 97, 0,177, 21, 40,178,217, 37,211, 52, 17, +156,227,205,235,239,121,247,112,228,112,121,137, 24,207,195,253,131,174, 20,140,101, 26, 7,134,113, 32,127,249, 61, 95,189,186, +227,217,203, 23,204,115,100, 24, 53,159,254, 56,204,244,125, 15, 18,104, 92,207,215, 95,188,226,162, 63, 16,227,196, 69,219,113, +188,187,197,145,105,157,231,250,112, 96, 28, 70,250,166,103,158, 70,138, 81,238, 1, 20, 66,208,228,180, 34,162, 43,147, 42, 2, +246, 65,173,125,135,174, 91, 47,244,113, 28,149, 74, 25, 26,124,211,146, 98, 92,131,107, 64,207, 3, 91,199,200,169, 20,188,215, +226,136, 82,214,233,210, 18,198,228,188, 95,125,252,166,146,162, 74,213,106,101, 81,246,192,195,148,184, 63, 30,137,113,162,105, + 60,109,104, 56, 61, 12,124,113,250,146,148,178,198, 74,119, 29,101, 78,220, 15,153,155,135, 35, 49, 27,230, 92, 16,147,176,222, + 83, 82, 36,184, 6,193, 48,214,231,206,212,236,136, 82, 39,171, 66,205, 52,152, 39, 76, 61,215,115,165, 61,218,117, 53, 88,187, +229, 10, 52,154,178,174, 51,147,192, 24, 19,253, 69,207, 56, 71,174, 47, 46,113, 20,190,251,254, 27, 94,124,244, 41, 55,223,222, +169, 29,186,100,156,236,135,120, 59,210, 35,103, 67, 72,245,162,239,146, 41,235,141,190, 78, 56,228, 81,230,243, 94,155,180, 52, + 20,214,216,165, 83,151,179, 49,251,123,113,147,203,224,114, 39,110, 56,195,206,217, 31,184,184,159,226,180, 23,249,129,196, 53, +121,226, 82, 48,143,240,160,143,254,157, 29,188, 68,187, 30,187,237,214,159,136, 97, 45, 21,209,119,198,237,174,214, 38,187, 83, + 42,219, 42, 90,113,214, 32, 57, 35,185,208,120, 79,202, 81,213,160, 53, 46, 54, 39,189,212, 67, 8, 74,162,147, 72, 74,145, 56, + 39, 29,255,164,153, 96, 74, 13,114, 41,107,173,147,171, 40,171,107, 61,141,179,228, 52,147, 74,221, 41,165, 19,146, 38,144, 72, + 35, 66,227,108, 29,195,104,252,169,179, 6,239, 12, 1, 8,206,210, 54, 45,214, 25, 82, 73,204, 57,107,186, 79, 44, 76,201, 80, +112,184,170,118, 39, 41, 97, 73, 42,196,160,160,151,127,202,121,221, 59,107,140,174,199,161,197, 76,145, 82, 27, 63, 85, 65,231, +122,169, 23,161,242,135, 31,119,189,230,189, 75,252,177, 64,227,204,203, 93, 45,105,155,219,122,201, 30,168,194, 57,121, 63,229, +207,200, 70,138, 95,215, 61, 70, 7, 91,139,155, 97,251,218,230,252,171,175, 95,220,238,245, 39, 59,242,252,254, 18, 63, 87, 6, +236, 9,110,250,183,242,131, 81,193,171,206,192,154, 39, 28,111,242, 62, 89,225,189, 95,175, 62, 85, 83,214,100,187, 5, 87, 58, +199, 76, 19, 60,167,211, 80, 1, 51,114,246,178,201, 46, 85,113,251, 99, 21,181,109, 26,203, 49,142, 92,116, 61,175,134,119,252, + 95,191,252, 91,254,235,255,242, 63,227,249,157,101,106,132, 83,103,184,155,102,108,168,133, 99,171, 48,140,156,181, 3, 15,149, +196,134,117,235,238,175, 32,180,135, 11,238, 31,238,201,149,167,158, 83, 94,211,195,124, 48,149, 42,150,215,174, 25,107, 16, 87, +150,120, 32, 60, 5, 83, 18,193, 41,132,201, 32,180, 77, 91,147,197,148,147, 16,140,165,177, 78,149,209,206,113,113,232, 24,139, + 96, 93,194,137,242,201,251, 92, 56, 77,170, 36,159, 82, 84,155,210, 10,133,209,157,112,215, 6,138,215,139, 36,165,153,241, 56, +213, 52, 46,139,167,168, 87,217, 65,206,234,249, 47,200,150,142,230, 44,227, 56, 19,188,215,177,251,146,148, 88,241,204,211, 60, +173,138,234, 84,167, 44,174, 82,214,230,121,194,184,128,179,234,229,190,127,247,192,253,148, 21, 39, 61, 79,235, 40,107,225, 27, + 8,134,155,155, 59,134, 41, 41,151,189,170,227,111,111,222,241,253,235,183,154, 83,158, 51,146,133,251,233,158,190,245,152, 38, +227,200,216,154,197, 62,205,181, 11,143, 42,242,114, 86, 86,143,117,169, 43,215, 84,181, 64, 82,197, 98,227, 48,129,129,113,156, + 8,190,170,219,107,134,198, 52,143,148, 82,189,249,213,157,146, 82,162,109, 91,181,128, 26, 67,202,147, 18,244, 68,211, 39,149, +245,190, 4,237,136, 2,149,156, 87, 39,116, 13,131, 41, 69,253,231,164,194,113,152, 25, 82,133,127, 25, 45,152,126,254,179, 63, +224,139,223,124,206,195,253, 72, 8, 1,177,112,123,119, 84,135, 74,113,250,174,250,150, 73,198,106, 37,212, 70,202, 88,175,121, +227,104,250, 93,204, 81, 59, 96,103,171,152,211,177,127, 69, 64, 53, 71, 98,132,148, 19, 41, 23,124,157, 26, 12,243,132,113,158, +113,206,204, 73, 5,111, 31,126,240,140,241,238,150,171,254,146, 55,239,222,209, 58,120,246,236, 37,159,124,244, 9,159,253,230, +123, 21, 72, 55, 1,178, 2,135,114,205,152, 55,187,196, 41,133, 22,233, 4,204,216, 69, 79,180,107,104,138,172,209,211,139,136, + 93, 19, 54,229,140,186,201,206, 49,228, 46,186,254, 47,148, 96,163, 30,237,117,159,183, 95,147, 26, 89,213,226,231, 65, 21,118, + 55, 60,180,187,157,250,102,233, 89, 58,151,179,240,149,250, 0,189,175,114,151, 93,138,154,221, 34, 52,247,165,201, 46,119,123, +181,171,153,205,147,254,216,150,103,206,196,122,162,227,235,221,142,120, 47,149,179, 70,127,232,222, 64, 27, 84,105,187, 88,104, +124,208,100,161, 69, 76,103, 81, 15,187, 49, 66,104, 54,127,120, 74,137, 88,242,138,133, 13,198,210,250, 26, 71, 41, 75,170,142, + 10,240,174, 46,175,240,193, 19, 99,212, 34, 96,210,177,152,177, 58,254, 14, 21, 0,179,140, 87, 12, 26,207,216, 54,134, 46,168, +157,194, 59,221, 31,205,177,112,127,154, 25,230,204,152, 68,245,163, 54, 40, 95,191,170, 38,131,215,204,107,106,129, 52,231, 84, + 63,115,179,142,151,150, 46,105, 17, 12, 46, 69, 81,104, 59, 70, 44,119, 49,115,202, 66,174,188,216,125, 34,214,142,213,183,165, +149,237, 70,245,170,175,176,143,220, 12,203,101,189,140,149, 30,113,221,164, 2,229,101,185, 76, 89,121,253,106,136,223,211,149, +170, 82,221,156,167,192, 61,201, 28,220,233, 60,182,226, 97,107,223,229,189,239,199, 34,178,255,181,167, 59,245, 51, 46,187, 89, +138,198,221, 63,107, 87,159,225,198, 81, 88, 68, 51,198,156,133, 30,153,250,253,173, 47,248, 66, 33, 43,218, 37,234,152, 52,213, +154,192,156,175,162,234,123,107,107, 54, 0,100,140, 45,106,139, 48,106,177,137,199,123,254,147, 63,255, 83,122, 47,156, 30,110, + 57, 78, 35,167, 42, 96,203,185,212, 67, 90, 13,125,214,120, 82, 41,216,154,133, 80,150, 11, 83, 68, 51, 2,106,183,181,117,197, +250,204,165,162,255,125, 73,229, 42,213, 41,210, 52,129,174,109,121,118,121,160, 9,122,169,148,221, 84,197, 59, 71,215,170, 63, +218,228, 72, 31, 44,151,109, 67,227, 52, 86,184,136, 48,206, 51, 11, 18, 73, 5,161, 65, 1, 49, 86, 9,118,193,249,106,127,132, +254,208, 81, 74,230,208,119,228, 26,119,187,120,199,109,157, 46, 4,239, 85,232,102, 44, 33,248,245,127,115, 78,137,124, 44,161, + 85, 78, 15, 96, 87, 19,199,108,253, 76, 67,211,232,148, 44,198,234,160,161, 10, 2,183,200, 83,193, 96,189,142,228,135,113,214, +245, 93,181,147, 26, 3, 93,215,105, 64,135,179,148, 92, 56, 29, 7,134,211,145,187,219, 59,142,199, 19,113,142, 88,131,126, 62, + 69, 73,104,173, 87,157, 67, 41,106,255,203, 49,106, 83,226,155, 45,249,175,100, 92, 21,160,109,170,105,125,158,210,130,207, 69, + 89, 25,165, 44, 59, 96,214, 28, 15, 83, 69,111,101, 89,231,212, 61,153, 34,130,221, 58,173,157,162,118,197,243, 52, 43, 29,174, + 70, 65, 75,109, 6,150, 48, 29,140,134, 22,197,172,136,212,211, 56, 49, 76, 51,227, 52,147,114,230,208, 29,184,186,184,226,225, +238, 8, 88,198,152, 24,135, 17, 22, 49, 91,213,155,228,234, 59, 31,102,157,144,106, 80,142,122,230,157,113,245, 71,187,172,246, +204,154, 8,170,157,185, 37,120, 93, 35,236, 5,174,154,168, 87,237,165, 73, 49,183,203, 59, 81,144,250,117, 11,115, 46, 92, 94, +246,180,141, 90, 48,167,225,200,241, 52,226,155,150,207,191,252,142,185,100,138, 49,234, 3, 95, 34,144,235, 10,122,217,149,171, +115, 72,207,182, 92,214, 28,203,237, 92, 92,144,210, 70,125,233,203,100,249,188, 21, 94, 90, 28,253, 30,220, 69,123,249, 23, 82, + 67, 35, 22, 11,144,250,182,133, 98, 54,136, 73, 94,149,181,219,101,107,151, 36, 40,177,143,198,232,187, 17,162,181,239,227, 56, +119, 9, 98, 43, 27,126, 57,196,150,195,206,186,154,109,107,214,106,111, 99,254,176,118, 47,166, 62,112, 44, 17,130,143,162, 85, + 31, 31,186,182,114,187, 69, 84,200, 98,173,134, 52,104, 40,133,122,201,131,245, 52, 33, 32,185, 96, 29, 53, 21, 72, 89,221,182, +122,194, 23,156,172,113,166,162, 46, 75, 13,129,209, 42, 14, 81, 79,230,161,105,233,154,182,238,149,146,142,160,196,208,248,134, +254,208, 35, 2,113,142, 72,206,164, 56, 97, 40, 56, 35,120,103,112,171,162, 84,199,224,193, 67,240,218,189, 7,163, 9, 78,115, +154, 57, 77,145,251, 49, 51, 68, 72,120, 18, 86,145,157,182,106, 8,170,162,218, 58,187,243,223, 11,185,142,216,197,184,122,225, +170, 98, 23, 49,168, 51, 88, 59, 26,235, 28,190, 59,112, 95,132,187, 84,136, 69,255, 25, 10,187,135,240,241,148, 70,167, 34, 43, +180,104,177, 27, 62,226,164, 47,135,203, 98,135, 59,103,186,111, 69,195, 42, 34, 89, 71,213, 86,105,114,102, 11,126, 89, 5,115, + 98,207,166, 60,231,153,227,155,116,255, 28,184,179, 57, 54,222, 43, 78,118, 17,194,108, 16,167, 31, 10, 98,123,148, 26, 40,107, + 98,224,246, 13, 45,171,170,243,194,195, 60,230, 68,188, 55,233, 64,247,196, 69, 15, 23, 77,232, 42,171, 47,127,115, 2,232, 95, +174,234, 88,140,243, 74, 43,116,224,173, 46,200, 90, 31,152,142,119,252,252,195,103,252,209,239,255,148,124, 58,169, 53, 76, 12, +195,105,196,138,165, 24, 24,115, 2, 99,215,209,180,134,253, 36, 74, 74,202,246, 78,154, 71,174,123,236,188,176,255,200,197, 40, +126,216, 88,124,232, 42, 3, 91, 15,215,254,186,199,119, 45, 41, 11,125,223,105, 74, 23,133,146, 74,165, 42,186,186,231, 46, 88, + 17,156,100, 46,187,150,139, 86,213,239,222, 55, 58, 25,171,107,160, 57,166, 53,211, 60,175,159,175,170,224, 23,127,240,225,226, +176,238, 76,157,115,116, 77,127,230,210, 1,221,173, 42, 63,159, 10,149, 41,235,229,174, 81, 81,208,117, 77, 77,159,155, 53,203, +219, 40, 6,218,183, 45, 25, 37,216,177,196,163,214,168, 90, 21,151,153,234,213, 86,237,202,161,235,160, 36,130,211, 75,217,136, +193, 27,101,172,107, 7, 94, 19,247, 80,181,121,237,132,214,115,110,211, 9,233,247,240,236,217, 51,109, 14,114,161,105,186, 26, +205,105,234,168,124,196,215,255, 92,138,208,132, 86,139,172, 74, 50,244,222,146, 75,205,147,168,177,217, 77,211, 48, 96,117,191, + 36, 0, 0, 32, 0, 73, 68, 65, 84, 78,115, 77,123,172, 23,185,232,232,122, 41,248,150, 32, 26,107,182, 63,158, 22,152,118, 93, +135,232,168, 91,215, 71,122,238, 87, 97, 24,150, 57, 23,166, 88,184, 63, 13, 76,169, 80,112, 10,218,113,142, 23, 87,215, 60,191, +184, 98, 28,103,222,222,223, 43,175,160, 9, 4,224,162,105, 8,190,209,124,132,162,177,213, 33, 56,197, 96,171,194, 84,155, 51, +167, 19,210, 92,249,243,185,200,122,252, 88, 99,112,181, 72, 22, 17, 92,208,248,237,133, 58,168,214, 98,157, 78,142,243, 76, 22, + 72, 37,215, 32, 27, 91,127, 63, 56,222, 13, 56, 81,226,233,213,117,207,213,179, 75,102,113,124,254,213, 91,198, 82, 72, 11,220, +101, 29,227, 87,170, 92,169,127,246, 82,139,210,165, 73,145,205, 67,164, 14, 3, 5,229,136,229,204,171,126,182, 26,204,101,157, + 52,136, 8,238,162,189,248, 11, 61,228,115, 21, 55,148,245,176, 93,173, 57,178,199,210,237, 65,242,203, 33,186,247,183,111,251, +247,253, 1,189, 31,161,155,234, 51, 60,195, 43,154, 39,188,232,178, 9,135,140,177,107, 4,152,212,185, 0,123, 72,206,226, 11, +254,157, 65,177,139,103, 94,214, 78,114,217,249,248,106,193, 9, 86,133, 58, 57, 38, 92, 5, 72,164,122,120,217,213,134,144,107, +174,186,170, 71,115, 46,234, 69,173,123,141,224, 44,135,174,231,197,245,115,156, 83,210, 92,169, 73, 69,206, 58,218,166,197,123, +229,104,151,164,170,197,146,162,242,135, 37,215,151,197,156,173, 33,172, 85, 82, 95, 41, 26,124, 49, 76,145, 83, 13, 39, 24,179, + 80,156, 39, 27, 67, 44,137, 84, 18, 38,168,154,116,249,125,204, 46, 68,193, 88,135,193, 49,199,172,233,115, 86, 65, 48,206, 88, + 13, 51, 96,163, 27, 25,231, 41,190,227, 33, 21, 78, 69,115,148,151,239, 19,163,254,157,197,205,176, 47,222,224, 60, 69,207, 88, + 45, 52,214,201,138,217,243,212,205,153, 80,108,233, 94,109, 21,140,236, 59,123, 83,227,224,222, 91,199,236, 96, 46,123,175,233, +121,247,251, 88,152,198, 19,194, 77,217, 37,189,201,147,127, 89,126, 92,224,249,131,174, 13,243, 88,224, 41,155,117,110,217,141, +237,254,251,249,180, 74,214,203,102, 9,181, 88, 45,122,235,215,221, 10,101, 29,217,154, 85, 72,233, 23,143,176,173, 59, 96, 83, +136, 15,239,248,143,255,236, 79,232,211,145, 84,133,108, 5, 71, 50,150, 41,229,154, 80, 24,215,233,154, 49,134, 24,163,142,175, +107,120,138,216, 26,240,211, 28, 72, 38, 64,232,233,174,159,227,251, 75,126,246, 71,127, 76,211,247,140,179,174,135, 76,219,144, +172,112,154, 38,164, 24, 58,239, 56,180,142, 52, 43, 55,188,235, 90, 48, 74,211, 11,222, 97,164,224,141,112,209, 54,180,193,115, +121,232, 81, 98,167,169,233,107,134, 97,154, 9, 77, 75, 42,153,152, 50,214,187,181,251, 86,138,165, 97, 24,116, 47,110, 87, 56, +145, 90,236,226,218, 85,107,215,185,233, 26, 20, 62,162, 23,189,161,111,187, 42, 16,211, 88,100,107,181,248,119,174,102, 59, 84, +209,147,114, 39,244,137,154,231,185,190,111,142,148, 11,243, 28, 41,160,127,175,171,192,182,109,170, 90, 94, 63, 63, 95,187,224, + 92, 5,184, 82, 22,136,145,221,105, 72, 42,255,160,104, 94,125,211,132,245, 34, 86, 17,172, 62, 31,193,123,134,211,160,184, 86, +175, 2,194,121,154, 43, 48,199,236,138, 3,170,245,172,138,126,157, 39,173,145,185, 42,118, 91,158,197, 82, 53, 59,198,154,117, +149,185, 20, 16, 90, 97,184, 26,157,234,170,125,185,206, 82,156, 37,229, 84,133,188, 48,165,204, 20, 19,195,156,234,133,175,111, + 84,219,182, 53, 74, 86, 56,157, 6,230,121,210, 48, 42, 81,171, 96,223,180,152,162,153, 21,169,230,157, 99,171,104,211, 55,213, + 53, 34,235,157, 52,205, 81,187,235, 21, 48,182, 9,114,157,221, 38, 53,214,235,247,152,139, 98,107,227, 28,137, 41,175, 77,246, +226, 48, 41, 53,159, 35,198, 76,215,118, 72, 17, 98, 44, 60,220,159, 40, 24, 66,219, 96,252,129,175, 94,191,101, 42,203,118,122, + 3,112, 45, 18,223,197,182, 91, 51, 37,183,213,246,162,214,169,118, 94,121, 47,149, 74,182, 96,168, 29, 43,132,186, 30, 55,123, +246,251,227,126,225,189, 14, 70,228,189,241,226,249,198,178, 60,218, 9, 10, 79, 81,227, 13,246,189, 14,234,241, 65, 39,251,160, +138,189, 90,126,103,145, 48,203,110,126,159,251,254,187, 34, 98,183,158,111, 69, 2, 46,251,204, 45,237, 75,163,255, 68, 17, 63, + 56,171, 47,117,170, 47,171,181, 22, 49, 66, 38, 87,174, 58,117,212,168,187, 16,205, 7,246, 28,250,158, 23,151,207,104,189,231, +120,255, 78,209,127,203, 40,165,126,111, 57,234,104, 51, 4, 45, 26,200, 25, 33,211, 52, 26,163, 42,213,139,104,106,101,151, 36, +107, 44, 33,154, 66, 36, 98,136, 2, 5,175, 73,108,213,138, 17,171, 10,222,155,242, 94,103,158,164,208,248, 6,111, 20, 42, 51, +165,204, 41,206,106, 37, 49,150, 82,244,193,147,218, 73, 90,107, 40,198, 49, 38,152,138, 37, 27, 91, 31,158,218, 9, 26,237,232, +164,108,251,114,181,184,219, 77,149,109,182,135,115, 79, 29,116,139, 32,196, 60,242,182,155,109, 2, 80,106,216,194,118, 0,217, +149,161,188,207,139,223, 95,102,118,181,204,149, 93,176,140,217,180,155,230, 41, 17, 31,251, 87,234, 61,177,220,251, 26,129,167, +131, 92,206,158,227, 39,240,176,103,239, 21,242,158,124,110,129,199, 88,217,137,235,118,157,187,126, 79,231,251,181,101,194,102, +118,250, 17, 83,119, 74,102,253,172,118, 74, 2,171,221,210, 92, 28,127,247,213, 43,254,207,191,250, 91,254,139,127,254,251,116, + 99, 70,238, 34,161, 63, 96,146,165,105, 10,110,206, 52,161,197,216, 68, 18,225, 56, 77,132, 78,199,141, 38,137,146,209, 66,203, +203,235,103, 60, 68,193,133,142,166,109,249,238,205, 27, 62,252,232, 35,238, 79, 71,110,238,143,220, 28, 79, 90, 4,215,160,154, +224, 44, 69, 44,243,194,166,175,218, 17,189, 4,245,157, 42, 57, 87,160,167, 90,168,148,167,238,193, 25,142,167, 35,214,123, 76, +206,180, 93,199, 56,199, 21,171,233,156, 67, 82, 86,241,153,119, 56,169, 35,232, 24, 9, 93,139,119,202, 96, 79,185, 16,130,210, +224,108,197,193,230,156,177,222,174,228,192,156, 34,214,168,165,181,109, 91, 82,138, 28,186, 86, 9,141, 41,169,159,218, 55,138, +243,149,133, 8,168, 7,118, 8,106, 71, 27,199, 17,223, 52, 72, 84, 11, 93, 49,134,177, 90,195,230,121, 84,219, 29, 78, 87, 28, + 57, 17,231,169, 54, 28,186, 2,115, 70,170, 59,179,206,196,151, 85,140,213,160, 24,131,212, 16,149,132, 84,226, 91,206, 69, 67, +120, 58,205, 79,119,198,208,118, 61,243, 56,114, 26, 71,156,179, 92, 94, 28, 16, 41,171,128,209,214, 66, 48,198, 88,181, 66,142, +148, 51,105, 86,125, 68,223,118,136, 73, 85,143, 80, 21,221,213,122,105,164,104, 71, 90,182, 21,233, 18, 44, 21, 75,194,138,134, + 96, 25, 23, 72, 89,163, 66, 99,202,187,233,172,171, 97, 83,122,161,223, 13, 3, 77,157, 68, 4,103,240, 93,195, 69,223, 65,204, + 76, 81, 35,123,173,213,233,143,181,158, 24, 19, 41, 77,155,130, 60,107,104, 75, 70,214, 41,209,166,203, 90, 10,243,180, 53, 76, + 57,211,180, 1,103, 13,243, 20,193, 24,154,160, 36,198,109,143,168,239,205, 52, 69, 90,223, 48,140, 17,145,168,122, 5, 41,204, +111,110,185, 59, 29,193,222, 51, 69,213, 39, 25,187, 49,238,183,100, 74,181, 74, 99, 84, 39,101,214,140,116, 30,101,102,236,214, +198,108,169,152, 91,162,169, 89,223,234, 69,223, 98, 20, 62,179, 63,145,236,218,157,236, 71,147,214,218,141, 14,182, 63,180,138, +169,126,195,167,174,207,141,243,171, 99, 34,253, 82,214,153,247, 60,187, 91,166,250, 19,221,206, 18,215,186,116,134, 75, 49,241, + 20, 97,142,189,218,254,220, 19,127,150, 60,183,231,105, 86,235, 80, 41, 5,217, 49, 61, 75, 29, 69, 53, 65, 3, 28, 98, 76,234, + 5,175, 35,109,157,150,108, 72, 90, 77,239, 17,156,209,236,242,103, 23, 7, 46,250,150, 56,197,154,143,173,126,199,165,186, 44, + 53,108, 34,132, 6,231,156, 2,108,200, 58, 66,218, 49,215, 23,176,140, 82,236,116, 20,175, 80, 14,237,170,115,133,249,175,123, +228,101,239,154, 83, 29,115,109,209,168, 81, 4,151, 11,206,105, 22,182,142, 58, 61,228,196,156, 18,193, 54,250,176,217,197,183, + 95,125,168, 34,204, 5,141,151,169, 43, 17, 91, 21,242, 88, 83, 59, 13,115, 14, 74,120, 44,145, 91,199,226, 91,149,105,119, 10, + 50, 91, 20, 59, 44,108,120, 87,193,104,178,223, 35,101,119, 41,133,146, 99,213, 1,200, 74,211,179,103, 60, 4,115,166,209,216, +111,161,246, 49,191,123, 82,220, 89, 29,137, 60, 49, 94,151,243, 20, 65,121,130,167,176, 43, 80,203, 89, 71,190, 20, 37,219,126, +125,121, 49,247, 62,245, 39,102,241, 85, 68,195,186, 26,115,181,179,172, 89, 69, 90, 0,212,175,191, 4, 95,172, 2,209,138, 38, + 54, 34,107, 81,179, 56, 54, 38, 60,247, 52,252,139,255,245,255,230, 63,252,227, 63,228,240,252, 19,158,143,133, 50,141,220,158, + 78,116,206,112,217,180, 76, 57,147,172, 37,138, 96,250,158,230,226, 25,174,185,224,112,249,130,187,251, 17,219, 29,184,125, 56, +113, 59,223,241,201,139,107,222,188,125,139,132,150,104, 13,217, 26,166,146, 25,210,204,161, 11, 24,155,171,192,204,209,218,134, +139,203, 11,140,209,139,200,187,160,112,144, 37,109, 42,120,226, 48, 43,111, 59,103,186,174, 69, 12,140,211,196, 20,103,112,138, +135,117,222, 97, 82, 66,114,166,109, 27,112,142,113, 60, 97,156, 70,168,206, 41, 34,120,124,141, 3, 53,162,128,149,148,106,113, + 81,139, 71,239,125,181,184,185, 85, 88,155,235, 24,220,218, 26,110, 84,181, 4, 75,116,168,113,150, 41,170, 18, 60, 37,253, 62, + 48, 48,103,205,147, 8,161, 97,170,240, 21, 91,195,118, 20,110,227,176, 69,104,172,231, 52, 78,196, 57,215,145,172,172,162, 88, + 61,231,237,142, 70, 88,211,196,170, 62, 70,119,223,117,207,189,100, 52, 88,213,254,244,125, 79,206, 9,231, 29, 86, 12,211,172, +174,151, 80,127, 6,167,113,168,150, 65,131, 65, 67,167,108, 22,226, 56,105, 97,101,108,125, 95,243,250,243,200, 69, 35, 95,125, + 8,196,170,199,241,117, 92, 79,209, 9,230,194,100,178,214,146,139, 94,184,182, 56,166, 24,137,185, 32, 41,105,188,110,157,150, + 44,231,115, 19,130,234, 60,230,137, 38, 52, 4, 11, 14,161, 11,142, 16, 52,229, 83, 98, 34,206, 81,127,206,162,188,248, 34,137, + 28, 35,214,123,218,170, 49,241,222,115, 26, 6,181, 18, 98,215,226, 97,111,170,146,122, 6, 59,235,200,213,223,125, 26, 70, 93, + 69,228, 76,206, 16,140,163, 20,209,108,142,218,103,231,172,141,197,156, 84,229,239,219,160, 19,205, 52,115,125,232,193, 90,142, +167,153,152,133,108, 52,163,193, 27,179,118,209, 98, 44, 70,117,203,245,108,114,107,134,251,227,169,182, 78,142,216,176,231,242, +232,182,147,229,174, 98,213,239, 56,231,182,241,187,200,114,129,108,151,213,126,140,184, 23,243,172,221,198, 46, 76,227,169,132, +183,243,131,107,219,129,255,144,144,205,214,139,125,237, 54,150, 61,120,141,108, 93,112,130, 11,217,172, 26, 15, 55,200,253, 18, +216,178, 23,229,189,183,231, 92, 33,241, 85, 20,118,190, 99, 9,117, 76, 41,146,245,225,106,254,127,214,222,109, 73,146, 44, 59, +207,251,215,218, 7,119,143,200,204,170,234,234,158, 19,160, 25,112, 64,144, 16, 32, 80, 38, 65,124, 7, 93,232, 5,244, 54,120, + 32,221,138,102,186,146,104,162,233, 70, 23, 50, 18, 6,145,162, 17,135, 1, 6,141,158,238,233,238,170,202,140,240,195, 62,233, + 98,173,189,125,123,100, 86, 79, 15,193,134,149, 97,166, 38, 59, 51, 35,194,221,247, 58,252,255,247,123,108,219,134,109, 91,101, + 76, 67,187,114, 84, 82,204,164, 90, 74,122,131, 57, 38,220, 79, 35,222,220,223, 99, 48, 6,219,188, 96,219, 22,228, 20, 17,162, + 28, 68,134, 25,214, 57, 21,112,136,136,101, 89,133,102,101,140,144,169, 74, 78,162,238,212,247,218,121,219,232, 67,169, 0, 37, + 11,248,194, 57,163, 55,102,214, 67, 77, 7, 16, 89,115,194,169, 75,247,233,188,142,226,221,149, 11, 59, 33, 35,134, 40, 65, 52, + 42,122,217, 17,249,140, 8,139,141, 29, 54,102,100, 99,100,164, 95,113,144, 68,173,192, 49, 85, 68,164,161, 27,220,253, 49,196, + 32, 35, 65, 8, 68, 80,100,164, 90, 39, 9, 34, 70, 82,198,178, 81, 2, 25, 27, 89,109,176,217,199,133,109,252, 89,181, 31, 37, + 35,231,186,207,221, 71,215,245,143,124,198, 69,172, 81,196,106,217,203,251,215,208, 11, 27,116,237,146, 88,179, 15, 72,243,149, +141,238, 80, 9, 44, 19, 19,110,107,206, 3,182,182,173,120, 24,135,255,206, 26, 63,217,222, 19,102,253,158,199,191,175,218,144, +138,183,149, 64, 16,232,122, 68, 51,215,213, 7,207, 29,124,167, 22, 43,242,125,250,144,165,210, 58,222,250,151, 18, 94, 35,133, +236, 50, 95, 49,198, 5,127,242,207,126, 31,101,187, 34,167, 13, 33,110, 8, 33, 99, 43, 6,209,122,164,225, 30,167, 55, 63,134, + 57,189,129,127,248, 20, 75, 49,184, 70,224,146, 8,217, 13,120,127,185,226,205,219, 55,176,222, 96, 89,102, 76,211,136,105, 26, + 49, 14, 22,203,245, 17, 97,189, 96,242,140,201, 3,222, 51,206,211, 9,247,211, 29, 30,198, 17, 8,171,232,247,178,252,238,214, + 49,194,182,194,233, 78,220, 16,112, 30, 61,206,227, 8,102,194,227, 50, 3,108,192,222,225,186,108,141, 43, 46,131,183, 2,235, +172,114,185,133,219,237,189, 83, 47,249,160, 48, 41,141,235, 32,180, 68,172,122,232, 86,165,190,179, 18, 84, 99,116, 81, 60,141, + 3, 66, 78, 48, 78, 14,242, 82, 10,172,151,123,216,123,223, 30,188, 49, 37,120, 63,180,231, 79,204,154,169,173, 92, 6, 50,130, +142,221, 66,144,195, 16, 5,131, 31,177,109, 1,108,156, 52, 7, 90,196, 23, 18,100,117,189,103,123,152, 75,233, 10,147,251,251, +123, 44,203, 34,137, 99, 4,156,166,147,168,215,189,131,243, 3, 74,201,194,202,207, 25,219,186,193, 15, 94,130,164, 66, 0,235, +245, 71, 10, 27,139, 26, 46, 53, 40, 96, 7,196, 96, 54, 77,160, 9,181,119, 49,139, 16,112, 89, 54,148,172,118, 52,141, 65,169, +250, 43, 57,116,129, 37, 38,172, 33,107,135, 14, 68,226, 93, 0,171, 83, 62,199,132,211, 56,201,225,206,132,201,123,156,198, 1, + 49,108, 64,138, 40, 49, 35,108, 27,114,214,228, 61, 84,207,187,232, 20, 98, 44, 88,194, 6, 54, 22,110, 24,229, 57,153,101, 26, + 67, 44,133, 91, 1, 53, 71, 79, 13,186, 50,214,180,198, 39,105, 17,199,198,200,180, 35, 23,108, 73, 92, 20,170, 75, 84,161,155, + 70,192,106,225,183,109, 58,205,217, 86,252,228,119,126, 7,239,222, 95, 48, 47, 81,154, 17,206,123, 39, 93,121,218,141,160,185, + 91, 89, 43, 90, 87,118, 75, 26, 89, 94,246,102, 5, 69,181, 12, 96,157,110,136,254, 0, 0, 72,181, 46, 53, 21,213,182,131, 89, +231,117, 68,249,128,134, 61,116, 61,186, 63,151, 14, 32,119,149, 79,254,104,198,250,199, 7,149,189,151,182,118,120, 6,124,232, +181, 36, 97,173, 98, 96, 89,108,176, 13,234,218,119,248,242, 94,149, 54, 57, 32, 42, 47,116,103,188,115,194,245, 27,147, 10, 62, +228,223,237,247,193, 80, 24, 67,194, 22,130,136,178,152,117, 39,148,218,183, 32, 38, 85, 79,202, 65,229, 13,112,246, 22,158, 19, +210, 58,195, 32,193, 25, 70, 56,216,177,169,237,118,162,218,127, 82,220, 96, 84,144, 98,152, 17,147, 8,243,140, 38,190, 25,203, + 82,225,106,129, 99,141,248,232,157,213,253,159,106, 37,182, 16, 81, 88, 68, 74, 32,219,233, 31,228,117,167, 82, 64, 57, 97,139, + 27, 70, 63, 72, 94, 59, 11,249, 40,166,130,144,107, 21, 45, 35,190,150,122,215,132,219, 34, 78,162, 6,166, 1, 50,239,239, 97, +233, 70,237,229, 16,219, 43,251, 92,232,131,141,178,144,192,192, 93,198,189,158, 80,172,194,199, 82,100, 31, 85, 64, 72,148,219, + 3,216, 50, 35,105,204,108,105,124,241,186,246,225, 27,177, 91,214, 7, 72,190,233,198, 75,235,108,143, 32,153,210, 14,135,114, + 99,189,235,195, 83,234,254,122,175,172,251, 17,188,126, 79,125, 64,247,179, 3,238,214, 72,212, 7,214,244,182,180,238,134, 49, + 58, 6, 62, 80, 16,113, 92, 61, 29,245, 44,183,147, 0, 52,194,193,190,146,147,255, 61, 17, 99,205, 0,101,131,255,253,255,254, +183,248,147, 63,254, 35,252,224,205, 43, 17, 1,141, 5,143,215, 43,112,255, 6,239,191,126,135,225,238, 45,190,250,250, 29, 94, +255,224, 51,124,243,248, 14,247,175, 94,227,241,233, 17,167,215, 19,134,209, 35,219, 51,222, 60,156, 49, 58,143,201,201,195,229, +213,235,123, 60, 60,156, 49,240,134,120,253, 22, 38, 39, 56, 91,112,221,102, 92,158,158,176,166, 25, 27, 17,126,112, 63,202,102, +145, 25, 22, 5,121, 11,176,100, 96,137,196,156, 85,160,233,103,104,196, 49, 2,176,169, 45,138,141,131,141, 9,110,178,216,162, +164,200,157, 78, 3, 74,204, 50,242,213, 34,122, 58, 77,130,205,141, 81,104, 75, 20, 52, 54, 90, 58,217,172,133,109,206, 9, 97, + 93, 26,219,129, 45, 55,124,105, 67, 94,107, 35,228,189, 7, 51, 99, 24, 68, 69, 29,181,179,111,147,154,178,199, 82, 87,231, 11, +179,142, 95,229,148,192,178,172, 48,172,214, 44,176,178, 21,117, 42,216,133, 0,213,195,156,154, 43, 71, 4,133, 98, 43,243,186, + 19, 39,108, 33,194, 88, 43,241,174,181,139, 95, 55,229, 9, 88,172,235,214, 18, 14, 98, 22,126,126, 85, 97,145,230,155, 99, 13, +112,222,180,137,196, 60,207, 2,218, 49,220,198,234, 41, 22, 16, 91, 17, 44,170,122, 27,128,218,246, 10,242,182, 10,108, 40,233, +115,161, 24,137, 34,213,202, 57,107, 36, 45, 27, 57,196, 41, 71,140, 94,116, 70, 98,109,100,197, 69,171, 62,130,141, 62,191,118, +129,116,202,123, 51,201,100, 48, 47,194,250,183,214, 98,242, 39, 60, 61, 61, 33,103,153,124, 48,237,209,220,165, 8, 88,106, 94, + 55, 88, 43,211,210,146, 99,155,150, 24,114, 48,198,234, 22, 60, 54,164,117, 86, 81, 57,215,137, 97, 44,130, 8, 47, 9,198, 27, +172, 49,226,105,158,117, 71, 94,116, 79,175, 83, 68,222, 93, 35, 92,199,230,122, 28,149,214,137, 31,157, 98,165, 16,146,178, 14, +146, 62,139,229, 61,201, 93,224, 22,181,201,121,203, 83,175,123,201,221,166, 86, 94,192,103, 82, 39, 50,163,238,235,203,119,166, + 85,125, 12, 73, 66, 7,208,200,190,251, 67,215,181, 83, 57, 76,201,219,135,114,224,153,213,191,163, 91, 63,116,105, 99,160,125, +149,208,219,244,112,192,215,210, 77,145,193,194,157, 84, 81,208, 94, 60,228,110,223,108,138, 28,122, 49, 39,101,246, 8,121,106, +242, 6,182, 4,108, 90,154, 82,138,109,228,151, 58, 78,121,101,201,231,162, 1, 19,138,164,205,106, 3,226, 2,245,192, 2,140, + 4, 36, 9, 31,176,196, 24,188,199,105,112,112, 44,217,206,169, 16,182, 24, 1,199, 64,146,223, 51,170,237,163,168, 0,142,148, + 19,156, 11, 97, 11, 1,222,138,226,179,170,254,115, 6,182,148, 52, 48,161, 52,175, 1,149, 44,169,112,148, 65,228,212,223, 89, + 14, 42,133,134, 22,238,233,250, 29,198,119, 87,166,235, 67,134,180, 0,211,189,119,211,124, 18, 55,226,210,158,211, 66, 59,228, + 40,115, 19, 28,202,205,166, 56, 78,170,215, 8, 20, 87,210, 69,176,242,126, 51, 43,173,168,161,228,247,235, 96,135,204,220, 10, + 80, 24,188, 95,159, 45,239, 64, 95, 63,189,188,124,218,179,206,115, 3,236,176,174, 42,154, 24,240, 35, 73,109,253,208, 43,149, +143,237,247,209,133,107,116, 57,242,180, 91, 74,161,197, 64,170,132,200, 44, 88,215,126,213, 21, 75, 65, 38,135,207, 99,193,191, +250,243,191,198,255,240,223,254, 17,158, 46, 22,127,251, 1,248,213, 54,128, 7,143,111,105,192,143,206,247,240, 33,193, 76, 35, + 78,230, 30, 15,111,238,113,126, 24, 96, 13,240,123,191,247, 51, 92,174, 79,120,247,205,183,120,251,201, 91,156, 79,119,248,197, + 47,126,129, 31,253,232, 7,120,251,246, 13, 60, 7,124,253,171,191,195,229,221, 7,204,243,130, 53, 22,124,120,188,128, 54,128, + 39,143, 56, 26,140,222,232,117, 38, 55,253,224,156,238,106, 11,172,101, 21, 53,137,109,110, 24, 60,222, 95,174, 8, 69, 44, 96, + 50, 94, 37, 56, 99, 53,175, 90, 40,111,185, 22,123,134, 97,189, 64,109,252,232,145, 34, 33, 45, 11, 6, 47, 15,238, 45, 36, 36, + 83,164,120, 87,235, 41, 91, 41, 4,196, 61,146,116, 82, 39,227,127,195,131, 8, 93,157, 76,157, 66,221,187,226,104,223,221, 66, +128,179,131,216, 2, 73,167,141,134, 91,194, 25,177, 65, 41,178, 90, 73, 33,202,254, 90, 5,184,133,208, 10,135,250,161, 87,113, + 49,105, 49, 90, 84, 93, 63, 47, 51,188,115,226,225, 46, 2,249,113,206, 41, 83, 66, 32, 89,150,101,244,110,173,197,211,211,147, + 78,255, 60, 66,140, 32,235,116,133,166,247,133, 97, 73,151, 76, 22,126,112,216,182,173,137,230, 66, 16, 62,187, 31,134,134,202, + 45, 40,141,229, 31,131,176, 5,114, 17, 33, 39, 43,243,190, 62, 59,193,251,189, 68,144,135,147, 33, 6,229,132,211, 52, 73,106, +163,119,184, 92, 46,178,190, 41, 82, 56, 36,229, 81, 20,136,120, 77,172,122,128,245, 30,166, 64, 53, 21, 5,211, 52, 97, 11, 43, +230,101,110,150, 69,201,174,224, 86,144, 53,246, 58,139,235, 39, 4, 17, 88,102,109, 20, 88, 5,129, 81, 15,121,249,220,228,235, + 69, 8,153,145, 26,180, 74,246,236, 33, 23, 12,198,225,243, 95,253, 26, 75,200, 72,133, 53,195,161,131, 85,117,198,159,172,236, +249, 94, 80,190,167, 87, 84,250, 41,119,116, 26,238,162,169, 75,123,198,236,107, 63,157,219,149,178, 31,234,245,128,145,206,229, + 22,250,121, 11,151,121,222,157,124,231,193, 94, 58, 4,223, 11, 42,224,250,247, 77, 13,223, 44, 64,164, 15, 69,125, 99,168, 42, +223,123, 30,247,158,247, 78,120, 65, 17, 88,142, 10,236,190, 6,105, 85,155,206, 99,234, 97,148, 75,129, 53,146,117, 35,251,184, +170, 45,160, 54, 37,224, 34, 24,203,234,231,132,218,193, 70,239,132, 15, 28, 55,148, 45, 72, 38,117,140, 2,217, 80, 18,157, 99, + 43, 94,222, 28,213,242, 84,224,157, 19,182,182, 97,101, 7, 73, 81,225,140,140, 93, 5,230, 31, 97,217,193, 58,143,243,105,194, +121,240,224, 44,202,208, 45,110,226,155, 55, 98,143,217,230, 85, 59, 10, 69,234,114, 69,235,138,224, 14, 89,118,147,163,119,123, + 94, 56, 51,162, 10,243,108, 17,251, 19,195,128,114, 22,226, 92,169, 24,222,220, 68,194,234,108,147,117,192,174,246, 58, 48,216, + 27, 45,189,200, 43, 43, 90, 94, 87, 48, 8,116,252, 37,221,191,170, 66,107, 4,106,229,194, 55, 33, 98,214,107, 53,117,197,231, +205, 68,169,187, 94,235,190,125,199,219,212,124,119, 28,172,109, 56,104, 56,142, 41,132, 77, 39,211, 9,220,110,161,133,229,249, + 95,236,158,250, 78,133, 95, 57, 16,181,211,111, 22, 55,186, 77, 79,168, 37,118,222,247,244,189, 75,160,174, 23, 8, 93, 40, 6, +218, 68,166,223,209,237,244, 90,106,164,175, 61,210,150, 81,156,195,167,191,255,199,248,112,126,139,255,237,207,255, 18,159,188, +122,131,175, 30, 19,166, 79, 63, 5, 13, 30, 63, 26, 45, 94,221, 89,220,191,254, 12, 48,132,207,166,123,164, 20,240,201,195, 91, +252,253,223,254, 45, 78,222,226,225,244, 22,127,247,139,191,194,235,215,119, 0,143,120,255,248, 53,166,179,131,117,192,178,204, + 88,183, 5,151,121,193,229, 26,112, 89,102,132, 45,131, 67,193,130, 77,198,226,136, 48,186, 19, 36, 18, 62,120, 82,219,149, 88, +199,100, 85, 65, 53,190, 56, 4, 20, 54, 48,131, 81, 37,242, 0,235, 28, 82,145, 8,216,182,175,208, 9,219,116,154, 84, 92,198, +216, 86,106,215,147,115,140,156, 87, 68, 83, 64, 49,180,148,196,138, 70, 53,214,162,196, 12,239, 69,244, 38,107, 54, 77, 95,171, +172,121, 8,173, 46, 43, 77, 45,103, 17,169,213,107,199, 24, 3,235, 29,158,174,139,128,116,156, 23, 64, 85, 44,216,194,134,204, +132,117,139, 66,121,204, 73,236, 75,165, 52, 69, 52, 90, 50, 33,183, 9, 90,214,152, 77, 54,178,134, 11, 33,224,245,235,215,120, +255,254, 67,115, 40, 48, 51,158,158,158,196,161,227,173,116,162, 41,201,129,175, 9,127,235, 42,152, 97,103,237, 78, 59,211,103, +114, 76, 9, 88,143,107,163, 45, 70,213,138,200, 10, 42, 69, 89, 57,132,152,176,173,162, 93,144, 52,206, 44,129, 38, 84, 17, 85, +194, 58, 97, 34,137, 51, 53, 70,226, 86, 75,150,228,199,148,176,205,215,166, 91,114,222, 98, 89, 23,100, 16,230,121,214,213, 30, +235,193, 75,160,148, 16, 99,193, 26,100, 92,110,172, 19,220,112, 12,162,100,143, 9,169,253,174, 59,225,180, 61,203, 27,251,129, +117,106, 16, 59,151,141,232,141,136, 8,166,136,253, 57,101, 32,229,112,160,160,102,125, 64, 21, 18, 53, 63,233, 51, 55, 65,200, +120, 65, 61,243, 92,118, 23, 75,190,213,132,181,162, 77,159,163, 10,104, 75,237,220, 68,203, 97,193,161, 89, 82,247,153, 2,107, +184,123,102, 88,168,159,184,226, 99,218, 3,144,190,187, 3,167,254,219, 16,190, 83, 5, 44,248, 81,115, 80, 30, 87, 37, 51,158, + 5,176,224, 32, 50,162, 67, 58,214, 81, 60,215,143,119, 27, 2,176, 99,115,115, 83, 11,247,138, 38,211, 69,149,106,167, 84,118, +197, 49,105,190,158,115, 86,144,171, 41, 52,159,183,169,221, 78, 45, 62, 12, 33, 71,165,188,129, 48, 16, 97,100,134, 35,160,196, +128, 20, 69,217, 74, 58,122,166, 44, 52, 35, 99, 69, 52, 87,171, 70,171,222, 76,203, 69, 15, 82, 37,163,177,116,247, 4, 66,138, + 5,156, 25,222, 58, 5, 51,220,193, 91,131,176, 38, 77, 99,147, 11,104,240, 14, 84, 0,179, 5, 24, 85,225,182, 93,186, 90,213, + 10, 68, 5, 63,175,162,178,205, 26, 95,201,138,111,140, 65, 20,192, 18,215, 91,246, 89,134,238,147,178, 34,118, 83,173, 54,117, +132, 75, 53,155, 24,249, 70,197, 94, 63, 67,214, 76,250,164,104, 87,177,144,136, 70,147,193, 9,160, 98,218,100, 4,117,252,168, + 25,195, 57,229, 22,169, 89,199,238,160, 10, 21,226,246, 57,102,202,234,237, 39,200,237,193,106,153, 41, 59,126,241, 38, 5,176, +116,132,167,114, 76, 78,144,130,138,122,141,101, 63, 97, 58,254,255,182,255, 44,187,142,158, 75,238,108,116,164,217, 8,185,179, + 88,222,130,100,169,243,250,211, 33,202,181,177,221,137, 0,200,132,166,238,224, 43, 66,185,238,224, 72,133, 85, 81, 91,121, 63, + 56, 25,215,174,107,243,241, 26,107, 97, 6,143,159,253,225, 63, 5,149,132,100,129,233,135,159,226,247,254,171, 31, 35,108, 17, +231,211, 8, 71,192, 23, 95,125,129, 55,159,126,130, 47,191,252, 7,252,248,244, 35,252,221, 23,191, 4,197, 79,241,203,191,255, + 37,214,101,197,171,135, 55,248,155,191,249, 59, 60, 93, 87,140,227,132,191,254,155,191,195, 23, 95,254, 26,247,119,103, 60,190, +251, 22,191,252,252,215,152, 47, 27,114,150,123,200,129,193, 70,162, 76,207,198,226,206, 88,193,178, 34, 99,176, 22,201, 36,153, + 60, 1, 56,121,135,147,183, 24,198, 65, 86, 64, 49, 99, 28, 6,100,170,176,152,162,254,109, 29,207,107, 18, 88,213,193,156,198, + 81, 82,185,114,193,224,207,200, 57, 99, 36, 96, 93, 55,196,148, 33, 43,201, 44,171, 71, 18,200, 16,147,160,149,151,117,131, 31, + 38, 9, 48, 33, 32, 39,130, 49, 64, 78, 65,227, 68,141,128, 84,114,106, 74,230, 2,161,153,165, 20,145, 67,210, 92, 8,153,226, + 45, 91,128,177, 30, 9, 25, 75,140,216,130,236,221, 99,202,200,170,124,168,235, 31,106,209,213,162,116, 39, 29, 1,135,176,105, + 24, 9,201, 1, 29, 19,182, 20, 36,245,206,122,241,163, 35,194, 89, 43, 8,106, 37, 77,142,131, 19,120,141,177, 58,198,149,124, +139,235,101,193,224, 19, 70,167, 58, 18,213, 92,164, 28,219,243, 35,231,172,144, 45,233, 6, 99,148, 84, 71, 9, 63, 73,152,198, + 17,180,172, 50, 34, 38,129, 70, 73,188,173, 69, 44, 81, 10,114,181, 12,147,142,224,207,131,151, 32,153,176, 85, 15,151,188,254, + 84,212,109, 84, 35, 75,101,171, 22,115, 2,140,124, 54,214,141, 40, 70, 86,151,107,136, 96,197, 21, 91,107, 17,214, 40, 57, 4, +117,146, 86, 58,177, 76,129, 2,100,146,230,174, 37,216,250,126, 20, 93, 99,166,164,207, 93, 52,177, 34,161,128,187,243,166,205, + 41, 43, 53, 9, 5, 91,204, 96, 99, 17,144, 53, 55, 29, 66,147, 3,129,171,253,111,255,166,205,166,221,196,186, 93,131,177, 3, +175,212, 5,193,125,226, 37,239, 1, 87, 73, 27, 31,214, 64,179,146,171,250,189,236, 1, 44,184,149,226,210, 71,161, 92,183,157, +251,119,167,173, 85,107, 85,122,145,194,245,236,225, 10, 17, 5, 85,139, 79, 37, 77,209, 13,242,147,122,155, 29, 58,254,119, 5, +124, 80, 1,155,125,244,154,149,237, 75, 29,115,119,207,127,175,176, 35,131,146, 9, 33,110,205,130,192,170,196,102,221,239, 59, + 43,203,253, 98,132,252,198, 25, 56, 57,198,228, 25,148, 3,194,182, 42,163,187,136, 93,165,112,163, 91,213,221,113, 86,111,170, + 33, 2,114,132, 97, 35, 23,125, 73,218, 89,235, 7,150, 37,195,197, 26,131,193, 89, 29,187, 19,226,182, 96,139, 27, 98, 10, 26, +175,233,192,206, 2,133,224,109,132, 0,157,170,200, 67, 84,247, 41,203, 56,157,107, 66,218, 22, 96,188, 3,172, 69,214, 4,163, +172, 93,135, 28,254,202, 35,214,142, 7, 89,160, 8,169, 36, 36,136, 80,173,173,155,169, 60, 75, 43,107,197, 25,147, 80,232, 20, +170, 32,162, 76, 77,195, 2, 80, 88, 58, 19,168,163,162,212, 28,243,154, 58,151, 21, 61,154,179, 6,233, 40,255,187,163, 20,150, +238, 38,102,170,182, 55,210, 7,246,115,204,240, 51,174,188,238,249,110,209,175,251, 65,255,252,159,156,159,203,214,219,247,239, +131,134, 14, 73,113,185, 89, 2, 62,230, 29, 57, 80, 22,251,149, 64, 37, 71,213,174,189, 84,188,100,135,115, 86,133, 52,154, 64, + 50,227,247,255,224, 15,240,147,223,253, 9,190,248,135,207,241,205,175,127,141,146, 34,136, 0, 63, 56,176, 55,240, 35,225,205, + 39,111, 65,229, 53,194,186,224,238,238,132,191,248,247,255, 30,206, 91,120,231,241,151,127,245,215,120,245,171,175,241,238,221, +215,248,229, 47,127,133,247, 31,222,225, 63,252,167,191,198, 50,111,248,213, 87, 31, 64,185,224,233,241, 29,190,253,250, 29,140, +117,202, 83, 7, 78,163,199, 58, 47, 8,171, 88,158,188,181, 24, 89, 34, 40,211, 22,240,230,225, 14,119,163,195,153, 53, 55,130, + 1,111, 25, 33, 18, 76, 32,112, 49, 56,123,135,243, 48,192,141, 14, 41,203, 67,107, 28, 70,108, 73, 68, 54,134, 5, 19, 28, 82, +130,243, 14,131, 17, 33, 90,138, 81, 59, 86, 66, 82,206, 68, 78, 9,195, 56,129, 13, 48,157, 38, 92,231, 5, 88, 54,120,199, 32, +246,216, 98, 70, 6, 33,198,140,113,114, 8, 23,129,242,220, 13, 19,156,157,176, 45,151,246, 16,222,182,128,113,114, 13,183, 44, +202,245,164,247, 17,171, 37, 83,212,221,194, 81, 23,129, 88,140, 25,203, 22, 49,175, 2,205,201, 57, 55,125, 73,125,166,182,253, +111,125, 22,178, 80,237,130, 50,245, 73, 69,159,243,188, 52, 40,209,187,119,143,234,137, 79,250,181, 65, 82,202,140, 67, 73, 1, +203, 42,147,136,160, 33, 59, 18, 90, 35,145,182, 57, 39, 44,155,164,173, 13,222, 3, 70, 10,233, 24, 99,155,112,228,117,131,243, + 2,213, 41,101, 47, 56,157,115,152,198, 9, 12,146,226,164,138, 22,115, 6,114,128,233,179, 30,244, 94,141, 97,195, 28, 3, 70, +239,133, 92,152, 11,176, 69,120,239, 97,116, 98, 80, 89,232, 69,217, 30, 33, 69,164, 45,170,240, 77, 94, 3, 27, 3,235, 8,219, +186, 42, 56,167,128,139,172, 15,170,168, 13, 93, 10, 39,186,232,111, 33,221,137, 0,175, 80,222, 39,191, 89, 44,203, 37,239, 90, +136,166, 81,209,154,122,239,216,119,144, 84,206,132, 88,148, 34, 87, 15,238,194, 40, 44,112, 31,129,157,209, 30,185,212, 89,113, +119,107, 46,237,141,146,158,228, 57, 23, 40,175,173,149, 19,185,241,136, 88,138, 63, 45,166, 12,153,163,165,237,152, 73,253,155, +254,249,126, 95,245, 82, 93, 80,109, 12,253,129,222,143,230,203,205,249,208,212,153, 47,248,247, 14,158,247, 92, 14,194,129,227, +215,118, 93, 17,161,115, 8,239,234,195,140, 93,113,154, 33,226,138,254, 37, 24,125,127, 68,164,198, 26, 49, 40, 69,131, 97, 96, + 26, 44,188,147, 20,171,186,143,201,170, 8,181, 70,178,115,136, 73,134, 5,137,224, 13, 3,185,192, 25,130,103, 35, 99, 41,150, +174, 92, 42, 71, 70,200, 82,142, 17,146,100,159,187, 12,162, 13,203,178, 97,221, 36, 43, 59,235, 41,230,188,131, 29, 61, 56,201, + 88,113, 75, 59,194, 36, 70, 73,214,202,200,251,248,135, 13, 66,145,215,206, 70,242,171,201, 74,181, 92,191,175, 20, 75, 2,227, + 33, 5,199, 64,132,254, 13,153,200,245, 32,214, 67,182,137, 23,187,137, 75,221, 39,151, 86,168,238,169, 68,213, 66, 72,213, 57, +202, 59, 61,174, 41, 71,139,218, 6, 83,208, 88, 76,181, 77,182,148,213, 78,104,194,149, 64,215, 31,224,121, 47,220, 74,126,153, + 0,119,224, 37,244,194,185,242,140, 76,247, 12, 97,124, 19,217,122,252,199,116,254,124,209, 69, 20, 28,105,102,253,216,190, 60, + 75,133, 45,109,100,222,252,234, 93,230,108,205,130, 39,133,148,212,239, 91,239,102,102,194, 79,127,250, 59,226,129, 14, 27,182, +109,193,122,189,138,165,203, 59,144,181,248,171,191,252,255,240,246,241, 83,228, 24,240,229,231, 95, 96,156, 78,248,252,215, 95, + 1,148,193, 57, 99,125, 90, 48,159, 63, 32,196, 13,171,198,159,162, 72, 36,235,246,248, 1,227, 48,224, 68, 64,156,103, 88,159, + 49,164,140, 82, 4, 91, 58,121, 15,119,119,135,101, 94,225,172, 48,214,195, 22,144, 12, 99,153, 47, 56,157,126,130,123,206, 56, + 15, 3, 82, 22,223,249,101, 93, 96, 17,145,214, 13,159,220,159,113,119,158, 16, 29, 16, 11,195, 17, 99,100,131,240,180, 32, 23, + 1,150, 20, 20,196,121,129, 37,134,243, 30,203, 50, 99, 24, 61,156,183,210,113,170,157, 43,165,164, 93,183,193,178, 68,177,117, + 89, 35, 4,197, 40, 41,132,203, 58, 35,165,132,203,229, 9,195,224, 81, 72, 66, 65, 38,239, 68,249,158, 9, 65,189,245,178,139, + 85,210, 95, 74, 45,219, 34,132, 0,235,100,175,191,109, 43, 80, 24,107, 8, 88,150,128,144, 54,204, 91,108,255,110,233,237,185, +234,205, 46,101,119, 11,229, 44,233, 96, 45, 78, 89, 15,171, 24,147, 80, 45,181,216,155,198, 65, 21,240,132,109, 91, 68, 60,102, + 68,169, 62, 76, 3, 82,148, 32, 22,102, 35, 40, 91,189, 50,173,177, 96,182, 88,182, 89,224, 53,196,234, 65,103,144,181,210, 49, + 87,204,105,148,157,255, 96,141,222,219, 34,246,173,191,167, 20,233, 85, 43,179,107, 75,168, 53, 92,178,131,206, 90,144, 93,150, + 5,150, 8,198, 16, 66, 46,200,235,186, 99,142,149,220, 6,133,243, 24, 88,121,206, 40,245, 13, 69, 18,216,172, 49,216,180,113, +204, 73, 44,159,131, 31, 16,147, 60,131,209, 16,189,187, 85,187, 78, 94, 74, 21, 72,107,146, 94, 59, 32,116, 68, 81,106, 71, 92, +244,121,216, 1,193,154,128,145,164,224, 74, 69,243, 64,148,142,202, 34,140, 64, 33,153, 6, 87,209, 99,133,255,160, 28, 1,155, +237,222,110,204,143, 26,228,210, 69,173,148, 35,207, 35,183,181,177, 20, 62,165,238,212,191, 79, 12,234,119, 31,238,244,253,206, +118,218,201,115,183,153,230, 71,117, 47,218,195,191, 77, 79,158,165,197,149, 22,101, 87,167, 12,172,163,228, 74, 80, 99,236, 29, + 82, 81,202,210,254, 46,150, 93, 93,212,133,120,168, 82, 66, 71, 79,249, 8,222,209,138,217,177,228, 18, 35, 39,129,184,168,213, +200, 73,126,169,140,230, 98,148,221, 53,108,219,157,212,124,118,160,192,148,172,147, 8, 96,176, 86,236, 59, 64, 27,241,100,181, +106,212,168, 91, 99, 8,214, 1,108, 18,182, 32, 15,157,152, 11,162, 30,150,214, 48,220, 96,229, 33,157, 36, 23,121, 75, 34,234, +200, 40,200, 53, 18, 82,233,119,165, 10,173,148,221, 45, 63, 93,197, 23, 44, 93,100, 76, 73,169,113,212, 84,249,162,120,207,141, +191, 78,189,110,162, 11, 60,233, 16, 46,187,151,178, 23,100, 22, 58,164,147,245,213,115,179,156,244, 37,102, 17,220, 98,214,212, +162,146,178, 10,247,168, 1, 63,160, 99,119,148,110,212,222, 21,146,251,205,152,111,166, 69,207,243,213,235,215,244,144,155,151, +226,100,233, 70,160,185,187, 68,118, 21, 12,181,137,193,158,121,222,227,106, 63, 86, 3,247,128,158,220,125,125,125, 32,212,195, +187,116, 68,197, 92,175,119,222,137,144, 72, 1,255,230, 95,255, 31, 48,222,201, 1,147,178, 98, 72,165, 80, 50, 46,225, 47,255, +195, 95,226,155, 47,191,193, 22, 87, 17, 90, 89,139,147, 55,248,227,159,255, 12,247,134,240,248,205,183,184, 92,102,224,126, 66, + 97, 66, 76, 64, 90, 3, 82,216,176, 33, 23,165, 82, 0, 0, 32, 0, 73, 68, 65, 84,209,138,180,205, 72,153,144, 9,216,174, 23, +148,117,133,177,140,247,143,239,241,230,213,107,220,121,139,178,206, 64, 8, 66,184,171,180, 66, 21, 37,221,157, 6,188, 57, 15, + 98,109,179, 6, 15,247, 30, 95,165, 5,228, 12, 62, 57,121,220,221,159,241,148, 55,108, 84,112, 9, 66, 26, 99, 35, 15,117,217, +143, 39,140,222, 99, 13, 2, 96, 25, 71,197,121,230,140,109,219,192, 68,152,166, 73, 87, 53, 34, 8,117,214, 98, 94, 54,237,244, +229, 29,172, 22,184, 98,101,167,107,136, 48,158, 78,200, 41,136,130,218, 88, 16, 41, 60,101,139, 40,133, 53, 44,165,174,166, 10, +150,117, 17,219,151,178,228, 69,209,110,176, 44, 43,214, 32, 93,122, 42, 69, 58, 58, 62, 72,117, 91,115, 82, 87,147,222,123,220, + 79, 35, 0, 40, 36, 70, 40,116,235,186,201, 72,220,122,164,156,144,227, 14,157, 97, 77,101,156,151, 43, 82, 92,224,221,128, 16, + 86,140,131,199,120,154,176,174, 43,166,113,130, 99, 3, 42,192, 60,207, 58, 53,148, 2, 40,101, 32,132, 13, 86,195,106,160, 17, +159, 57, 10, 38,155,141,132,210,180,235, 91,247,222, 65,167, 33, 86,137,126, 41,103, 25,238,229, 61,223, 33, 35, 99, 24, 39,196, + 40,147, 20,195, 44, 43,133, 44,133,107, 98,218, 19, 32,244,123, 88,118,200, 41, 55, 41, 72, 41,164,106,117,224,122,185, 2, 0, +134, 97,148,192, 32, 45,220,122,145,116,239,247, 38, 52,181, 25, 98, 22,102,130, 49, 98,107,203, 58,109,233,155,132,186, 82,172, + 92,145,218,205,139,227,168,104,234, 38,181,160,171,220, 5,152,138,236,129,218,231, 41, 88, 24,109, 46,242,126, 64, 23,220,164, +182, 85,237, 4,122,222,132,184, 50, 74,161,103, 20,205,138,111,174,108,126,115, 30,167, 63,171, 36,180,186,203,185, 37, 97,244, + 54,138,231, 9,107,249, 5, 78,245,243,177,250,158,129, 85,158,121,213,111,191,246,152, 98,213,123,218,203,206,166, 63,236,213, +203,222, 73, 42, 47,157,111, 34, 93, 75,169,190,116,110, 49,128,205,248, 84,164, 30,226, 2, 88,203,176, 86,128, 10, 57,237,171, + 2,203,210, 33, 56,102, 56, 35,152,205,146,178,112,216,153,224, 24, 56,121, 11,203,140, 24, 54,132, 58,142,211, 93,175, 97, 65, +199, 26, 38, 85,249,102, 56, 61,208, 71,103,155,174,199,114,229,200,103,185,241,145,192, 92,224, 29,193, 90,169,116,162, 62,144, + 11, 17,178, 37,176, 37,248,193,226, 52,141,114, 67,105, 62,244, 62,254,215, 7,126, 81,150,112, 75,163,147,139,133, 75,145, 27, +156, 88, 68,113,149, 41,173, 85,124, 33, 70,246, 3,162, 49, 72, 32,212,108,154, 12,217,233,136, 0,238,134, 59,208, 29, 54,117, +143,156, 91,135, 91, 29,214, 93,160,137, 98, 48,209, 51, 6,104, 87,129,215, 93,186, 92,216,249, 8,118,121, 9,188, 66,212,186, +214, 91,208,204, 75, 76,248,151, 83, 3,159, 11, 45,203,205,207,237,209,178, 77, 4,167,255,153, 21,135,204,116,107,121,123,254, +187,191, 84, 56, 60, 43, 36,154,107,131,143,146,217, 23,180, 45, 68,221,154,170, 20,228, 36, 29, 85, 73, 98,193, 33, 40, 14,152, +164,243, 76, 33, 99,125,154,225,220,128,203, 60, 35,133, 21,110,158,241,179,113,194,159,252,228,135,112,235, 5,233,250, 1, 3, +103,216, 28,129,176,194,198,136, 18, 86, 32, 6,108,235,130,184,109,237,105, 22,195, 6,107, 8, 84, 18, 6,231, 52, 50, 56, 75, +247, 84, 10,114, 45,238, 99,128,203, 5, 63,251,225,167,184,183,132,183,231, 17,167,209,193,178, 80,186, 94,141, 30,247,227,136, + 79,222, 60, 0, 92, 36,137,112, 11,136,169, 96,152, 70,248,113,196,186,174,216,182, 13,227, 52, 54,223,160, 81,124,243, 48,140, + 42,124,149, 48, 19, 0,216,182, 85,148,223, 65, 34, 91,217, 24,156, 78, 39, 13,166, 41, 42,130,147,221,113,170,160, 36, 35,124, +132,211,233,164, 15,119, 97,244, 69, 37,211, 13,211,136,109,219,212,191, 92,176, 5,249,154, 58,150,127,186,172,146,160,184, 37, + 17, 65, 49,183, 29, 96, 70, 57, 8, 75,169,177,232, 45,222,190,125,139,233, 52, 33,165,140, 16, 54, 68, 61,184,234,158,187,138, +243, 4, 45, 43, 7,198, 60, 95,101,229,144,162,166, 73,138, 8,108,209,236,244,246,123,150,130,109,221, 58,252,169,140,163,235, +247,103,210,244, 52, 37,229, 89, 54,242, 61,137,116,202,208, 11,172,185, 81, 55, 99,202,123, 81, 95, 11,245,150, 19, 42, 83,166, +233,116,198,214,242, 4,208, 1,155,106, 7,138,198, 75,167, 94,167,162, 54,198,156, 74, 99,180,199,152,176,109, 65,201,158,114, + 24,199, 36,182, 62,195,220,233,101,106,128, 10,246, 96,151,238, 30,206,116,100, 60,150,162,128, 60,230,253, 94, 34,163,188,120, +153,144, 85,162,104,245,161,214,247,177,197, 0, 55,231, 78,103, 63, 85,134,126,181,172,181,179, 44,203,127,175,160, 28,210,239, + 83,186, 46,130, 94,192, 99,247,235,103,244,152,216, 82,142,170,221, 99,227,178,127, 32,223,119, 4,127, 60,208,143, 76,248,219, + 95,230,197,232,202,190, 12,168,221,107,237,182, 95,136,177,172,180, 46,166,174, 35, 2,186,100,175,218,241, 43, 93, 75,119,235, +245,233,183,219,161,234,135,115, 51,122,103, 21, 75,212,223,171, 64, 59,107,121, 19,189, 49, 90,249, 10,162, 48, 39,141,203, 51, + 55, 59,126,245,193, 90, 46,194,109,182, 6, 76, 89,240,142, 18, 47,164, 63,187, 0,136, 0,229, 22,251,152,115,130, 20,200, 18, +102, 66,204, 48,150,225, 44,195,123, 43,225, 51, 86, 68,123,121,178,216,130,211,247, 41, 41, 65, 73,196, 60,142,149, 98, 36,136, + 21,112,142,242,218, 52,125,168, 30, 78,166, 89,193,248, 72, 93, 99, 85, 81,167,170,193,224,254,153,180, 79, 82,218,174,187,171, +146, 11,117, 29, 46,221, 48,217,161,137,114,249,160, 1,215,153,140,236,208,187,177,253, 94,205,238,236,232,223,224,195,248,200, +168, 29,207,174,199, 92, 11,199,151,168,113,183, 41,127, 84,186,157, 88,222, 19,147,128, 23,139,136,239,251,123,201,131, 70,255, +174,243, 98,222,206,198, 42, 40, 50,119,233,133,185, 83,213,115,222,189,234,165, 80,187,198,251, 8, 99,134,236, 57, 63,188,123, + 7,107, 13, 16, 35,158,230, 43,254,221,159,255, 5,134,176,225, 15,126,254, 83, 92,174, 23,204, 49,160,164, 8, 19, 18,214, 53, + 98,139, 25,133,164,123, 45,180,169, 77,113,143,115, 78, 41, 74, 42, 26, 11,133, 44,228, 4,144,132,210, 76,195,136,112,137,248, +197, 23, 95,227, 95,252,252,103,248,157,215,175,112, 30, 45,140, 1,238,201, 99, 76, 17,148, 10,188,117,248,228,254,132,252, 24, + 49,175, 11,166,193, 33, 22,192,140, 3, 96, 12,182,205,162, 20, 25,135,155, 76,130, 78, 53, 6, 31, 30,159,244, 94, 20, 65,167, +243, 85,213, 30,192,217,106,188,102, 58, 76,255,172,101,196, 53,138, 77, 52,197,118,232,203, 65,146, 48, 47, 11, 82, 46, 56,159, +239,241,248,248, 8, 63, 12,120,247,254, 3,202,147,116,183,117, 70,104, 28,171,112,151,177,108, 1,243, 26,176,134,172,193, 29, +165, 37, 39,150,155,117, 97,189, 57, 74, 41, 56,223,157, 37,168, 37, 69,108,155,236,144,151,121,195,182, 73, 64,204, 48, 12,130, +108, 77, 17,107,140, 96, 50, 56,159, 78,112,206,234, 20,171,198,113,202,180,209, 24,139,117, 89, 69,220,166, 5, 65,203, 14, 87, +170,163,181, 78, 29,162,117,175,173,171,175, 16,117,100, 45,215, 78,236, 86,157,165,100,192,200, 20,163,100, 2, 74,148,181,163, +174,204,196,166,187, 23,244, 91,136,224,117,197,195,171,215,120,255,238, 27,113, 12, 89,215,174, 23,102,106,212, 68, 3, 22, 97, +108, 86,207,119, 74,210, 97, 27, 9,246, 73, 41, 73,182, 61,147,134,183,200,231,105,140, 65, 12,186,127, 87, 15,125,213,158,212, + 41,109,145, 39,163, 10,212,234, 65, 79, 45, 36,169,182,125,169, 86, 26, 36,211,129, 88, 74, 59, 31, 10,237,137,145,213, 45, 87, + 61,231,164,118,194,106, 55, 51,120,158, 51,209,175, 7, 73,133,204, 13, 32, 93,202,206,152,208, 52,183, 35, 29, 19, 59,218,184, +155, 32,216, 23, 78,227,227, 97,169,248, 88, 84,107,194,141, 5,167, 20,188,120, 40,127, 4,174,189, 63,136,152, 95, 12,189,200, +157,221,166,190,168,221, 95,184, 31,234,109,228,122,224, 95, 83,167,102,239,236,114,148, 59, 91,207,238, 95,110, 21, 84,253, 96, +116, 95, 5, 37, 11, 53,229,189, 34, 99,185, 31,175,230, 90,137, 9, 6,112,176, 66,170, 74, 73,196, 56, 53, 80,160, 10, 4,171, +140,175,114,146, 37,230,181,192, 89, 9,142,145,191, 35, 61,188,138,170, 74,163,142,222, 5,130,144,179,240,140,193, 4, 50, 6, +108, 13,140, 37,120,111,225, 44,193, 17, 96, 89,189,160,236, 16,162, 19,175, 58,138,112,186,115, 61, 48,179,112,219,181, 11,102, +157, 95, 48, 19, 40,203,205,104,184,203,250,214, 17,147,174,136,118,250,224, 65,127,177,239,154, 75,243, 76,239,108,104,168, 38, +161, 38, 47,202, 95,229, 27, 29,199,115,238,250,158,119, 94, 14, 2,178, 26,167,104,218,245,154, 59,179,227,127,198, 18,169,191, +193,212,126, 83,178, 92, 75,135, 46,189, 94,115,124, 68,204,114,239, 29,239,188, 33,245, 58,191,157, 8,188, 52, 37,120, 73, 39, + 82,219,124, 42,132, 91, 66,125, 29,219,230,151, 10,220,125, 9,167,235, 8, 29,247, 53, 43,226,254,159,101,221, 20, 80, 56, 35, +199, 4,155,173,168,106,221,132,119, 92,240,111,254,227,223,224,130,130,127,242, 59,159,129,223,125,139,114,185, 96, 77, 25, 41, +233, 94,152,140,240, 3,212,166, 40,221,105, 66, 41,182,229, 38,192,176,166,118, 73, 28, 98, 1, 36,162,216, 56, 60, 46, 9,255, +238, 63,253, 45,126,254,227,255, 30,100, 12, 78,158, 48, 56, 7,159, 51, 6,239, 80,216,226,225,237, 43,172,105,197, 28, 86,108, +108, 36,253,202, 18, 18, 1,211,201,195, 24,185, 70, 29, 57,217,101,147,148, 46,215,235, 21, 49,170,232, 83,213,244, 0,176, 44, +139,236,168,115, 70,204, 89,125,236, 98,227, 50, 70,177,199,144,131,125, 93, 23, 24, 67, 24,188,197,182,109, 8, 49, 99,152,146, +118,165, 17,126, 28, 48, 95,175,152,134, 17,151,167, 39, 93,225, 89,108, 91,196,178, 6, 60, 62, 93, 17,117, 53,209, 62,198, 66, +207,100,198,189, 8,152,152,225,199, 17, 69,125,240,143,143,143, 40, 89,116, 1,198, 24,253,157, 24,167,243, 9, 79,215, 11, 40, + 67,201,148, 43,238,238, 78, 88,230, 11,206,231, 19,182,109, 19,239,120,139,153, 53,200, 17, 10,182,145,194,189,118,175, 76, 4, +235, 6,132,176,232,192, 69, 14,229,122, 57,110, 41,130, 24,176, 89,119,227,117, 82, 96, 52,121, 45,103, 16, 59, 12,227, 73, 66, +128,132,138,129,117,139,226, 19, 87,193,151, 33,225,127, 96, 20, 23, 67, 12,155, 92,119,150, 49, 12, 67, 83,129,215,223,217, 15, + 3,182,117, 69, 81, 1, 47, 25,131, 45,108,160, 40, 89, 1,206, 89,141, 8,238, 68,165,196, 34,162, 51, 70,108,120,186, 18,203, + 45, 71, 66,207,233, 92,154,157, 77, 30,119, 74,159, 43, 59,225, 77,206,164, 74,123, 68,155,136, 52,196, 53,139, 85, 57,150,216, +165, 74,238,160,169, 94, 84, 91,167,137,194, 92,168, 66,112,170,112,212,102,245, 45, 29,229, 16,154,180,217, 63,111,142, 28,251, +238,236, 36,192,156,134,241,207,170,218,110,159,239, 31,153,213, 68,166,117,107,245,160, 34,254,120, 26,213, 45,148, 94,186, 96, +115,168, 50,110, 15,245, 54, 2,145,229, 78,103,203,233,114,211,241, 66, 84,230, 97, 60,127,204,146,166,162, 57,240,221,207,224, +195,152,118, 87,204, 87, 28,159,181, 12,211,128, 18, 85,157,206,112,218, 81, 83,243,219,139,159,219, 25,192, 25, 17,142,120, 67, +200, 41, 34,133,136, 12, 77, 66, 83, 94,189, 33, 13,105, 81, 97,139, 49,132,193, 9,162, 49,134, 85, 81,169, 66, 80,138,165,130, + 99, 68,141,234,141, 83, 30,180,238, 74,173, 5, 28,195, 56,131,193, 25,140,206,194, 59,249,249,206, 74, 22,180,245,246,128,207, +132,238,118, 82,218,171,115, 46,250,126,144,236, 18,141,250, 75,137, 68, 72, 66, 70, 70,226,217, 88, 36,231,176, 17, 33,232, 36, +162,158,111, 89,149,151,141,247, 79,125,150,250,109, 4,106,217, 11, 42,218, 67, 71,250,243,103, 79,111,235,199, 86,212, 37,150, +150,131,208,141,251, 84,183, 14,151,250,210,248,253, 99,215,232,179, 78, 93,119,136, 69,175,159, 74,127,106,215, 98,243,130,151, +238, 53,161,161, 93, 91,145,100,204,139, 63,231,176, 58,186, 57,216,111,241,201,141, 14,223,117,242,199,255,187, 73,182, 59,172, + 4, 42,102,185, 67,114, 98,103,229, 31, 32, 65,221,238,143, 89,124,191,137, 9, 27, 1, 79,219,134, 95,125,249, 5, 74, 74,248, +236,205, 39, 40,219,134, 82, 18,230,184, 98, 43, 66,213,202, 33, 73,224, 16, 65, 70,253, 33, 54,166,125, 86,142, 57, 21, 66,137, + 98,195, 51, 70, 70,185, 49,137,205,244,233,241, 3, 94,157, 6,252,244,135,175,112,127,242, 56, 91,135,209, 90,248,105,132, 63, +143, 48,119, 19,182,235, 5,215,121,198, 37, 8, 38, 52, 1, 18,234,162,187, 43,239, 61,182, 16,176,133, 0, 50, 6,243,117, 22, + 92,168, 66, 80,166,233, 4,102,113,181, 16, 49, 66, 16, 93,138,168,199, 43,165, 80, 31,176, 57, 99,219, 86,152,150, 63, 78, 42, + 86,147, 40,218,117, 19,103,140, 80,228,234,207, 16,168, 83, 76,162, 33,153,151,128,199,167,165, 81, 26, 97,234,253, 88,142,251, +221, 22, 61,188, 79, 51,115, 41,136,185,224,186,206,248,240,238, 3,150,121, 69,206, 89,199,205,162,149, 25, 70, 65, 88,223, 63, + 60, 8,232, 10,114,176, 23,100,141,154, 21,152,143,243, 78,147,246,138,166,206, 97, 23,144,245,130, 47, 35,215,121, 76, 81,207, + 1,238,114,224,117,170,192,162,222,207, 74,122,148,120,210,130,243,221, 29, 46,215, 11, 10, 1,119, 15,247,136, 37, 34,198,128, +113, 26, 17, 53,113,142,106,115,198,122,176,111, 27,206,147,236,248,185, 3,114,229,148, 52, 53, 46,180, 32,148, 10,202,201, 58, +201,168,135, 96,108, 92,247,234,154, 82,129, 51,147,210, 64, 35,198,211, 40, 59,111, 80,211, 89,196,172,235,177,138,201,165,170, + 99,146, 25, 49,105, 33,156, 75,110, 51, 99,249,220,140,250,194,185, 9,218, 36,127, 93, 86, 49,165,151,105,117, 41,160,220,199, +130,215, 88,213,206, 66,158,177,115, 40, 74, 71,164,169, 76,247,227,212,144, 15,175,185, 54,193, 90,214,192,156,134, 73,216,239, + 31, 57,212,113,139,195,160, 58, 18,200,207,193, 46,253,225, 89, 25,214,220, 30,113,135,228,172,190,131,169, 96,151,125,172,186, + 87, 83,212,201,173,114, 3,142,124,100,204,175,222,238,126,252, 94,167,150, 7,194, 92, 15,169,193, 78,105, 34, 2,172,209, 46, + 75, 71, 83,222,136,186,210, 25, 6,178, 48,199,141, 97,189, 16, 68,185,238, 12,193, 91, 3,107, 8, 49,110, 8, 49, 2, 21, 49, +168,213, 97,141,193,148, 20, 37, 96,112, 6,131, 23, 47,235, 86, 19,158,140,149, 36,181, 84, 16,146, 20, 16,206, 57, 48, 91,164, + 40,163, 59,227,157, 88,208,140,236,254, 39,239, 48, 56,217,203, 59, 35, 44,120,231,165,122,173, 72,199,164, 22,155,152,178, 42, +104,247, 53,130,209,245,158,179, 6,214,236, 83, 5, 82, 11, 77, 33,131,204, 14,197, 41,251,189,237,105, 43,157, 14,251,197,202, +244,209, 98, 13, 53,153,145,246,160,209, 22,220, 82,122,161,156, 57,144,216,235, 97, 94,121,251, 69, 31, 90,232,128, 57,125, 36, +107, 99,196, 19, 55,245,240,111,123,168, 31, 46, 32,213, 92, 84, 96,197, 30,229,186, 67, 57,106, 68,172,196, 77,154,189, 40,225, +227,193, 45,215, 66,205, 84, 67, 75,245,195, 11,160,164, 61,244,102,183,114, 82, 55, 89,169,120,227,106, 55,108,116, 57,122, 78, +165,235,116,137,221,255,144,245, 81,162, 61, 69,102, 88,114, 50, 45,114, 22, 75,218, 64,134,154,203, 35,230,140,175,191,121, 7, + 3,194,253,249, 30, 49, 37, 44,113, 67,208,225, 74,218, 4,154, 34, 69, 35, 35,133, 8,228, 2, 75, 86,148,203, 44,156,191,176, +109,146,200,165,137, 85,169, 16, 82, 97,228, 24,241,245, 87, 95,224,167, 63,122,131,159,124,242, 10,167,105, 2, 91, 43, 33, 43, +105,131,123, 56, 99,187, 94,133, 72, 87, 72, 70,218, 33,128, 12,195, 88, 7,239, 61,230, 69,212,240,203,186,194, 58,135,109, 13, +109, 28,235,156,111,238,152, 24, 36,255, 61, 68, 97, 31, 12,227, 8,167, 33, 37, 41,139, 87, 61, 5,177, 80,202, 52,204, 33,164, + 4,239,164,128,168, 41,111, 53, 48,101,217, 54, 24,150,221,110, 46, 18, 0, 50,175, 1,151,121, 69,200,149,157,166,154,150,166, +117,168,130, 56, 52, 18, 88,191,162,100, 35,135,207, 60, 95,145, 99,214, 41, 71,110,108,122, 38,241,171,131,128, 16, 35,238,238, +239,113,189,206, 50,134, 78,169, 37,176, 21,133, 59,213,169, 76,206, 89,116, 1, 49, 98, 24, 7, 61,164,163,138,255, 98,243,135, + 19, 51,146, 78,228, 10,246, 46,146,170,104, 65, 97, 52,117, 98,231,189, 19, 88, 87,216,224,188,195,253,171, 7,204,203, 21,172, + 22,185, 24, 36,134, 54,107,135,154,115, 22, 91, 99, 74,135,103, 60,119,205, 93,205, 28, 15, 81, 18, 49,173,115,106,181,221, 27, + 10, 62,172,204,116, 45,106,141, 22,167,242, 60, 11, 41, 97, 24, 70, 24,107,165,240,139, 81,227,100,115,243,129,231, 44, 35,122, +225,192,115,167, 82,231,221, 63, 94,167, 19,169, 52,151, 74, 77, 70,204,186, 26,104,161, 11,125,180,217, 13, 56,234,184,102, 46, +109,101,211,132,188, 85,135, 64,250,254,116,143, 35,174,191,211,173,238,135,118,160,141, 57,249,187, 63, 3,212,119,220,184,188, +183,103,250, 77, 88, 69,151,147,125,171, 92,239, 31,234,164, 73, 63, 90,163,180,152,205,221,206, 38,170,213,218,101, 8, 45, 44, +105, 39,189,107,163,107,120,135, 72,175, 59,175,238, 77,199,127, 72,164,237,159,130,232,248,226,165, 66,118,118,112, 24,179,170, +211, 53,199,153, 74, 65, 14,226,229,246, 76,152, 28,195,147,154,197, 89,160, 44, 34,228, 1,152, 11,140, 33,140,214,194, 22, 17, +200, 68, 0,100, 37, 84, 35,197, 40,239,143,145,200, 86, 46, 25,174, 20,140,134,192, 86,136, 72,194,233,183, 0, 91, 36, 64, 42, +253, 66,128,229, 14,214,111, 96,156,129, 29, 28, 42,253,223,123,139,201, 90,140,214, 98,176, 22,131, 55, 24, 29,195, 26, 96,244, + 14,131,181, 10,138,216, 90,117,186,133,140, 20,179, 6,101, 8,179,216,177,193,201, 26, 56, 22, 78,113,234, 18,207, 50, 24,197, + 14,200,214, 35,234,197, 95, 49,114,185, 16, 40, 21, 56,216,238,189,174,198, 21, 69, 73,148,220,182, 83, 89, 72,230,181,149,222, + 71,141, 7,145,208, 81, 73, 78, 85,245,153, 51, 80,162,142, 68, 83, 39,122,131,218,120,228, 98,175,197, 74,173,194, 95, 10, 16, +250,216,248,251,120,211,241,190, 39,103,193,230,202,189,148,119, 79, 62,239, 33, 71,166, 42, 84, 53,160, 39,117, 30,250, 99,126, +250,158,184, 83,218,177,186, 43,218,111, 5,164, 5,123, 86,117,193, 65,111,180,199,217, 18, 62, 90,236, 42, 97, 82,245, 34, 59, +214,102,143,106,228,198,236,175,132, 59, 42,178, 7,117, 78,188,206, 33, 38, 24, 55, 34, 91,143,175, 31, 31,113, 89, 22, 60,156, +239,224, 51,129,131,176, 3,230,176, 34, 27,131, 88, 42,223,154, 96,141,111, 35,255,164,204,131,168,252, 3,174, 86, 60, 85, 69, +111, 57,226,154, 10,190,252,252, 75,252,225, 15,127,132, 31,188, 57, 35,143, 44,220, 5,202,160, 31,190, 70, 92, 55,164,235, 21, + 33, 17,150, 45,106,158,186,109,123,204,140,130, 57,110, 32, 43, 46,144, 22,159,154,229,240,141, 41, 98,221, 68,108, 70,106,147, +154, 78, 39, 64, 59,108,231,189,128, 75,212, 75,158,138,164,140,149, 34,116, 59,235, 7,172, 49,194,141,131, 22, 0,178,203, 92, +183,128,176, 73,248,130,243, 35,214, 80,240,225,178, 32,232,206, 54,215,195, 67,175,211, 26,175, 67,198,168, 32, 76,224, 53, 70, +195,138,136,234, 7, 93,224,156,132,175, 72, 2, 28,183, 61,110,208,224,145,164,217,229,219, 53,224, 60,157, 16,214, 13, 6,132, +117,217,240,201,235, 87, 58,145, 88, 49,157,166, 93,212, 5,134,119, 22, 57, 11,144,198, 57, 39, 36, 54, 5, 54, 9,255, 33,119, + 2,172,210,174,183,162,207, 6, 38,200, 33, 91,178,164,233, 5, 57, 56,195, 26,129, 2,188,125,251, 22,235,178,128, 80,148,173, +238,176, 46, 65,187,124,125,118,144,129,101,219,154, 40,153,102, 90, 68,146, 41,140, 64, 91, 44,136,133,169,158,136, 96,134, 1, +110, 26, 49,157,207, 98, 23, 12,177,137,162,115,145, 96, 25,176, 1, 49, 48, 14, 67,139,216,149, 48,151,128, 97, 28,240,233,167, +159,224,233,233, 34,122,144, 34, 52,192,162,187,145,214, 12,114, 39, 50, 85,212,114, 19, 52,178, 76,242, 64,132,162, 7,122,204, +165,193,207,218,215,213,144, 21, 50,250,117,114, 58, 23, 42, 90,144,236, 34,242, 82,117, 12, 69, 2,191,138, 22, 47, 92,160,185, +244,164, 98,111,179, 23, 49,154,202, 87, 5,117, 85,122,108, 78,227,248,103, 85, 10,255,125,136,175,223,109, 87,187,245,135,247, + 9,109,154,108,117,171,110,167,231, 42,120,121,208,176,210,122,202, 33, 80,134,200,236,193, 24,116, 68,112, 10,133,237,246,247, +224,170,177,110, 99,144,195,238,178,183,192, 49,193, 26,146, 32,142, 44, 97, 42,147,179, 56,121, 39, 43,193,156,181, 27,149,139, +191,118,185,198, 48, 60, 19, 12,196, 30,150, 32,162, 17, 20, 32, 70,181, 51,177, 80,196, 12, 21,140,198,192,123, 70,166,140,101, + 11,210,237,176,145,157,155, 90,125,178,142, 4,157,179, 48,206,128, 44,193, 13, 30,211,105,130,113,226, 27,247,158,225, 7,134, +247, 6,126,180, 24, 6, 3,127,178,240,163,129, 27, 44,140,229, 86,137,135,152, 16, 82,145,155, 74,171, 99,210,169,131, 33,130, +183,128, 99, 70, 82,171, 6, 74, 18,223,163,177,136,108,145,172, 65, 32, 32, 21,106,251,157,220,186, 13,179, 39,178,180,216, 84, + 28,162, 88,123, 54,157,124, 46, 25,187, 20,130, 14,135,248,237, 5,184, 99,140,243,193, 98,198,140,150,112,214,175,122,234,154, +232, 88, 96,210,111, 20,207,181,136, 94,106,203,158,206, 26,217, 43, 80,209, 37,209,221, 8, 65, 95, 80,203,223,142,195,219,235, + 57,168, 18,232, 0,153,249,174, 98,228,165, 21,215,111,226, 68, 52,106, 98,231, 78, 56,132,205, 40,110,210,232,225, 46, 15,140, + 26,229,171,220,134,154, 74, 21, 54, 92, 46, 23, 76,211, 36,200,211,156,113, 93,102, 25,101,103,104, 36,168,140,195, 11, 21, 24, +125,248, 23, 21, 50,213,189, 99, 85,242,198,156, 17,115,130,245, 30,243,188,225,171, 47,190,198, 63,251,189,159, 97, 60, 1,238, +100, 16,201,192,156,239,225,137, 16,222, 61, 33,100, 96,205, 25,151, 32, 7,109, 80, 64, 74, 42, 25, 31,158,158, 48,157,207,112, +222,239,228, 71, 5, 39,173,155,248,180,137,118, 17,155,245, 35,214, 16,112,186, 63,131,140,116,221, 79,151,185,117,211,167,211, + 25,243,188,128,141,213, 28,114, 39, 29,121, 46,202,137, 39, 44,243, 38,100,182,235,130, 24, 51,222, 63, 62, 33, 22, 32,182, 73, + 83,133,158, 80, 19,116, 86,187, 44, 17, 97, 28, 71, 12,227,128,211,121,194,178,174,187,112,139,128,148,164, 99, 60,159, 79, 48, +198,194,251,177,137,227,100,244, 12,132, 45, 96,240,131,144, 39,147, 56, 68,188,151,152,215,243,249,132,156, 51,174,215, 25,222, + 15,112,118,196, 60,207,184,191,191,195,229,114,129,115, 86, 39,133,117,236, 91,158,137,160,251,156,143,186, 22,101,102,140,211, +136,235, 44,194, 65,107, 44, 78,227,168, 46,129,140,105, 26,154, 19,231,116,158, 84,207, 32, 46, 12,210,169, 86, 78, 25, 41,198, +157, 97,161,247,158,117,130,218, 53,234, 59,175, 89, 24,165, 20, 44,203, 34,104, 93, 72, 26,157,215, 9, 75, 84,127,124,209, 0, + 21,209, 77, 4,248,113,130,177, 14, 91,216,244,243,223, 48,142, 39, 76,227, 73, 34, 86, 99, 84,187,157, 84, 5, 82,160,239, 72, +214, 26,203,251, 76,216, 93,233,165, 47,104,200,159,137,112,203,254,140,146,103, 47, 29, 34,163, 27,228,166,123, 15, 82, 93,243, +214,168,239,156, 95,182,207,190,208,100,183,241,251, 63,246, 80,127,249,128,223,247,162, 53, 25,235,121,164,235, 30, 53, 73, 10, +192,101,226, 67, 62, 11,181,139,141,219, 40,212, 28,186,176, 46, 48,228, 54,246,181, 10,155,180, 10, 43, 57, 31,228, 93,172,163, +255,234, 50, 17, 47,118, 6,178,216,213, 6, 67, 56, 15, 22,172, 83,132,154, 34,198,144, 96, 21, 33, 61, 1, 86,173, 97, 49, 69, +148, 74,185,202,208, 52, 54,106, 81,163,166,136, 56,206,121,139,136,140, 53, 37,100, 13,143,129, 70, 66,130, 36,111,218, 89,134, +243, 22,214, 59,192, 50,134, 73,110,124, 34, 1, 74,142,206, 98,114, 6,167,193,227,228, 61,166,209,201,127, 30, 60, 38, 47,161, + 19,134,185, 85,171,185,136, 21, 69,172, 31, 69,215, 10, 6, 12,134,211,110, 46, 54, 15,187,146,245,216, 32,177, 69,114, 22,129, +180,218,204,208,209,156,138, 63,176,239, 1,155,142,178, 93,129, 59, 54,114,143,125,201,173,234, 63,206, 93,122,239, 87, 63,130, +207, 71,100,107,167,174,166,255, 66,135,250,237,212,169, 95,217, 84, 49,158,140,218,107, 88,202, 14, 69, 66,185,245,194,227,163, + 63,183,239,220,137,247, 84,153,222, 37,210, 71,176,126,172, 96,126,233,240,127,233,181,236,239, 75,217,187, 16, 58,170,107,235, +244,175,114, 20,234, 96, 62,163,118, 4, 73,246,162,134,224,199, 17, 91,140, 45,104,195,120, 81,190, 95,175, 87,241,189,235,142, +179,142,111,141,181, 50,102, 15,241, 96, 69,108,192, 28, 99,177,197, 32, 1, 42,222, 99, 43,192,117, 43,248,213,231,255,128,127, +241, 95,255, 12,211,235, 19,200, 79,224,243,189, 76,236, 30,103, 92,174, 11,222, 95,174,224, 97,196,154,147,220, 67, 84,148, 63, +190,105, 16, 11, 16, 66,148,110, 79,243,192, 55, 85, 67,167, 44,215,110, 72, 25,126, 60, 33,149, 44, 48, 22,195, 88,214,165,221, +227,203,178,106,112,136, 6, 47,105, 87, 92,106, 92,107,202,152,231, 5, 68, 6,243, 18, 16, 83,198,135,199, 11, 50, 17,100, 98, +190,227, 62,169, 91, 55, 2,123, 44,175,113,146,101, 62,120,135,187,187, 59,177,147,169,247, 39,233,125, 20,226,134, 45, 6, 17, +225, 2,184,187, 59, 99, 26, 6,196, 45,226,124, 58,225,254,124,198,186,174,200, 57, 97,154,166,134,113,246,222, 97,154, 70,228, +146,176,204, 1,219, 26, 64,196,184,187,187, 19, 59,219,182,234,253, 99, 16, 67,198, 56,142,240,126,208,233, 88,105, 93, 96, 91, + 5,169, 23,191, 6, 28, 89, 63, 32, 70, 89, 89, 16, 10,150,121, 65,138, 17,119,167, 9, 33, 6, 76,211,136,111,223,189,131, 49, +140,207, 62,251, 20,160,234,137, 47, 48,206,163,164, 44,218, 21, 69,116, 85,107, 94,140, 9,167,113,146, 3, 47,229,102, 87, 46, +250,186,114, 18,207,248, 26, 36, 55,224,116, 62,107,132,170, 64,180,140,151,152, 93,227, 60, 46,215, 69, 82,206,200, 40,201, 18, +152, 47, 51, 6, 63,226,114,125, 58, 70,157,162,111, 16,187, 32,231, 93,120,210,156, 63,187,113,196,180,226,180, 41,252,193, 96, + 50, 7,135, 73,157, 42,239, 16, 15,157,244,245, 19, 57,162,102,181,171, 80,155,166,140,175,239, 65,165,102, 86,187, 22,117,217, + 20,234,166,120,126,168, 83,249,237,104,113,120,169,211, 62, 62,152,233,102,207,126,216,125, 86,146, 92,214,240,144, 94,148,208, +139,128,244, 66,175, 57,212,242,239,162,177,221,153,123,236, 43,218,206,177, 29,232,117,188,219, 91,124, 25, 77,209, 88,147,143, +140, 33, 97, 19, 43, 32,230,236, 45, 78,206,128,114, 66, 78, 89, 31, 88, 4, 74, 25, 86,167, 15,204,128, 51,226,117, 79, 73,148, +190,242, 48,212,176, 25,173, 56, 12,137, 40,205, 25,134,243, 6, 33, 71, 36, 48,200,122, 8,203, 86,107, 77,150,157,214,224, 61, +134,105,132, 25, 44,216, 18,238, 30,206,184, 59, 13, 32, 74,112,134,112, 30, 29,238, 38, 57,200,207,211,160,127, 60,198,209, 99, +112, 78,132,121,196,216, 66,194,178,109, 8,185, 96,222,130,132, 77,232, 77,106, 20,246, 96, 72, 58,130,102,255,208,106, 41,179, + 65,241, 30,217, 58, 68, 34,185,253, 52, 62,176,237,181,154,169, 10, 7, 34, 91, 41, 56,232, 35,118,219, 64,183,213, 81, 83,106, +169, 75,247,103, 90,142,253, 32, 47,109,167, 94, 26, 5,240,191,196,161,222,135, 9,213,132,172, 67,224,144, 94,131,220,237,172, +169,167, 28, 22,124,175,157,253,179, 81,127, 39,170,185,181,126,190,212,137,223, 42,227,191,171, 91,127, 46, 86,165,103, 78,213, + 42,134, 98, 34,100, 42,141, 79,144, 75,233,192, 90, 89,119,174, 4, 63, 12, 58, 94, 4,236, 48, 98,217, 54,204,243,130, 97,244, + 96, 98,196,173,242,207, 5, 40,146, 74,110,150,178,156,114,235,108,114,150,235, 59,107,183,147,178,132, 12,165, 82, 0,246,152, +238,223, 96,205, 9, 95,126,254, 75,252,225,207,127,142,225,124, 2, 89,128, 70,143,248,238, 17, 31,222,125, 64, 72,210,169,155, +105, 4, 57,139, 53, 8, 28, 38,132,168, 2, 52, 70, 8, 26, 96, 50, 12, 66, 84, 68,129,247,131,210,222, 60,150,117, 67,108, 93, +111,128,113, 6,185,100,132, 24, 36, 48, 6, 56, 76,134, 8,132,117, 93, 81, 98,145,188,245, 24, 17, 66, 68, 72, 5,203,150,112, +157, 87, 68, 21,100,101,146, 63,189,194,157, 25,237,185,117, 58,143,210, 69,151,140,101,221,192, 36,112,153,211,233,132,235,245, +138, 92,168,229,187,215,113,109,221,171,111,203,130, 87,175, 94,225,124,154,224,189, 69, 8, 1, 94, 15,216, 92, 34,198,105, 80, + 59, 89,196,221,221, 89, 26,136,148, 16, 99, 66, 8,162,225,121,120,184, 71, 41, 73,125,239, 3, 66,136, 66, 28,236, 28, 2,125, + 70, 71, 21,136,161, 59, 43,114, 41, 56,157,197,223, 95,114,238,183,157, 34,114,203, 9,195,224, 37,182, 21,192,233,116,194, 56, + 78,184, 94,101, 18, 50, 12, 35,114,138, 26,122,195,141,150,151,146, 20,145,131, 31,112,154,100,255, 95,138, 28,216,245,240, 43, + 76,205, 97, 19, 82, 68, 33,192,143, 3,252, 48,192, 57,135, 45, 68,204,235,138,187,251, 7, 88, 39, 4,196,148, 69,239,129, 82, + 16, 66,132,119, 78, 99,179,105, 95,245,154, 10,123,202,173, 40, 59,232, 98, 42,225,173, 67, 60,191,196,186,232,255,142,123, 12, +122, 55, 21,167,142,108, 90, 71,246,226,124,160,142,170, 89,208,199,139, 86,161, 96, 81,103, 76,233, 34, 48,179,114,234,219,161, +158,170,111,145,202, 63,170, 67,191, 69,187,114,247,112,189, 61,204, 15, 15,220,130, 23,199,242,187,162,184,238,164,118,255,250, + 94, 59,148,166,198, 63,168,246,129, 99,216,133, 76,185,219, 7,213, 14, 3,173,128,170,207,157, 33,251,244,129, 9,103,239,112, +114,140,146, 98, 35, 6,201, 4, 32, 43, 74, 81,236, 95,222, 48, 76, 19,195,136, 5, 41,101, 96,203,234, 77,213,149,129,213,194, +193, 24,131,121, 13,200, 36,123, 72,182, 14,198,186,134,250,100, 54,152,166, 81, 14,117,199, 24, 38,135, 79, 62,121,192,195,221, + 4,207,192,253, 56,224, 52,122, 16,139, 90, 62,233,222, 39, 22, 9, 36,189, 44, 27, 46, 75,192,101, 13,248,112, 93,112, 93, 3, +182, 84, 16, 99,145,142, 5, 34,142, 19, 27, 27, 96, 32, 54,187, 84, 84,112, 66,106,141,179, 30,217, 14, 8,108, 16,137,144,116, +228,158, 43, 96,162, 0,166,176,238,152,240, 29,135,204,203, 56, 85,234,119,233,116, 28, 21,213, 93,241,126,147, 72,255, 88, 21, + 49,183,157,122, 93,161, 84,129, 75,157, 2,125, 12, 24,115,184, 17, 1,192,240,139, 62,114,166,126, 85,115,163,227, 40,191,217, + 42,247, 49,251,218,126,168,151,166,112,191,157,102,189,164,104,127,233, 63,223,190,198,103, 30,252, 91,201, 43, 85,143,237,254, +190,113, 29,211, 19, 61,227, 13,140,227,208, 60,188, 49, 73, 7, 46, 16,164, 8, 6, 97,112,190, 43,220,116,106,195, 59, 76,168, +130, 73,138, 38,154, 73,254,156, 60,144,147, 10,179, 10, 50,238,238, 30,176,109, 43,150, 28,241,238,155, 39,124,251,229, 59,252, +241,127,243, 79,225,207, 6,197, 18, 56,100,204, 31,158, 16, 0, 44, 41,227, 26, 3, 54,245, 2, 59,235,192, 16,133,185, 29,188, +112,215,201,128,141, 81, 85,122,108,234,113, 54,166,145,232,234,252,117,158, 47,173,249,145,177,108, 18,235,148, 66, 88,228,186, + 79, 24,134, 1,206, 90, 44,235,138, 66,140,121,141,184,180, 3, 93,197,164, 58,242, 23,108,106,214, 85,154,195,233, 60,226,238, +254,132,233, 52,224,124,158, 0,146, 40, 89,107, 68,132,229,189,151,117, 89, 8, 8, 49,168,173,137, 26, 86,185, 54, 31,219,186, + 98, 89,103, 92, 47,151, 22,217,234,188,149,207,169,100,140,227, 32,180, 49,203,152,166, 17, 4,194,245,186,136, 35, 3,128,117, + 12,107, 45,174,215, 43,166,113,194,229,114,213, 78, 83, 15,141, 10,198, 41, 89,216, 6,181, 59,173,194,103,102,132, 40, 66, 61, + 99,141, 76,104,180, 37,147,244, 59,135,203,117, 6,105, 94,252,117, 94,154,174, 32, 6,241,221, 27,231, 48,157, 70, 41,232,114, +108,104, 99,107,101, 58,185,172,139,240,235, 13, 55,161, 97, 5,218,164,140,182, 6, 33,125,158,174,155,136,148,207,231, 51,252, +224, 1, 2, 46, 79, 87, 16, 73, 74, 95, 41, 25, 49, 4,137,229, 77, 82,204,149, 2,148,148, 58, 87, 87, 31,200, 68,186, 7,231, +131, 83, 97, 79,117,228,110,226,181,219,176,203, 11,162,113,116, 2,227, 46,180,100, 95,233, 85, 71,149,130,110,110, 11,251, 93, +123, 81,147,229, 88, 5,125,245, 62,150,135,137, 49, 6,102,242,227,159, 85,148,158,102,226,128,126,203,241,123, 61, 32,123, 75, +208, 78,145,123, 89, 17,221,146,102, 58,149,243, 81, 33, 72, 7, 79, 57, 83,205,237, 62,194, 63, 62, 54,118,111,197, 3, 58, 64, + 72,205, 89,168, 49, 46,109,172,122,204, 81, 55, 5,176, 36, 34,185,179, 53, 24,184,198,132,106,148,169,170, 17,173,126, 16,198, + 8, 81,206,212,209, 9,145, 40,128, 11, 16,138,136, 62, 90, 82, 27, 21, 88,245,212,206, 33, 98, 14, 25, 79,203,134,216,217,255, + 13, 11,181,200, 88, 85,178,123,131,251,251, 19,126,240,233,107,188,190,155,112, 63, 58,188, 57, 79,152, 6,135,172,157,213, 26, + 19,174, 91,196,251,203, 5,239,158,102, 60, 94, 87, 60,205, 1,151, 37, 97, 73,132, 37, 1, 33, 1,107, 16,222,244, 56,142,152, +166, 65,208,136, 49,195, 40,140, 38,233, 5,212, 42, 98,235,145,157,208,228,130,238,219, 75,202,141,135, 92,189,220, 7, 65, 34, + 29, 15,242, 62,207, 30, 55,126,244,190, 75, 61,136,198, 64, 55, 85,111,106, 55, 69,237, 24,136,159,119,234,220,169,212,129,239, +215,201, 54,187,206, 11, 48, 36,211,171,222,219,181,114,115, 88,190,212,149,211, 17, 1,251, 82,177, 80,139,201,190,155,238,239, +165,219, 63, 31, 27,179,255,166,105, 68,253,222,124, 67,117, 46, 29,148,206,152,202, 45,168, 19, 45, 77,169, 82, 97,148, 97,171, +121,218,177, 37,152,165,154, 35,160,118, 28,195, 86, 80,161,186, 63, 39,210,201, 71, 46, 42,144,211, 2,162, 18,185, 64,176,206, +203,126, 26,178,191,150, 29, 89, 64,138, 5, 79, 51,240,247, 95,252, 10,156,174,248,131, 63,248, 25,220,155, 7, 20, 34,108,239, + 31,241, 52, 47,216, 10,240,180, 44,226, 52, 97,134,115, 30, 40,114,168,179, 53, 13,124,148,181,105, 97,102,196,144, 26,245, 45, +132, 77, 34, 71,153, 16,131, 4, 35,129,128,117, 89, 52,163, 93, 94, 91,202,177,221,155, 81, 59,173,117, 93, 69,167, 18, 11,222, + 63,206, 72, 69, 30,178,185,106,127, 12,239,108, 10, 61, 4,152, 9,198,114,235, 74,235,184,156, 0, 12,227, 0,107, 24,215,203, + 19, 94,189,122, 85, 75, 35, 76,231, 9,227,224, 97,140, 16,221,106,227, 49, 77,131,174,200,118, 91, 84, 8, 17,235,186, 97,154, + 38,164, 20, 48,140, 14,147,118,237,211, 40,158,245,101, 89,112, 58,143, 13,238,178, 44, 11,134, 97, 84,218, 28,169, 40, 84,138, + 24, 98,130,183, 78, 1, 39, 53,175,131, 20,146,165,162,125,181,144,237,150,227, 58,206,151,130, 36,108, 81, 17,172, 5,235, 26, + 96,140,197,124,157,145,147, 76, 68,188,151,226, 38,167,208,232,113,137, 4,186,228, 7, 47,130, 83, 8,196,139,173, 20,104,213, + 42, 90, 84, 67, 16, 66,212,160, 27,209, 45, 60, 61, 93,241,240,112,143,109, 91, 97,173,195,245, 58, 35,132, 13,167,211, 73,172, +186, 68,106,241, 83, 77, 80,221,119,215, 40,214,166,174, 63, 78,225,122,119,214,115, 21, 59,186, 64, 52, 58, 62, 8,107, 17,208, +221, 79,253, 68, 25, 55, 58,151,151, 32, 90,153, 68, 52, 93, 35,121,187, 81,243, 94, 4,232,191,104,143, 7, 32,253,103,139,228, +142,150,156,231, 72,248, 99, 64,203,199, 70,150,183,107,125,218, 83,212, 72,210,203, 8, 71,222,118,191,255,168,130,160,174,129, +111,158,226, 3, 55,251, 5, 28,232,193, 75, 93,196, 87,207,200, 48, 92,127, 95, 21,182,168,141,195, 40, 19, 94,148,173,117,212, +190,119,143,181,139, 5,147, 90, 32,128,162,227, 52,176,193,154, 10,214, 76,184,134, 94, 29,114, 55, 0, 0, 32, 0, 73, 68, 65, + 84,132, 53, 17, 98,200,136, 37, 98,100,160, 88,192, 21, 2,167, 36, 0, 14, 54,120, 56,143,120,251,112,198,253,224, 96,203,128, +145, 45, 98,220, 48, 94, 9,151, 37,226,113,222,240,120, 89,176,172, 17,243,178,180,164,159, 76, 35, 66, 54,152,215, 21,243,186, +233,232,211,224,254,254, 30,222, 25, 44,243,162,133,129,238,255,181,242, 33, 48, 50,239,228,186,157, 42,215,237,132,154, 14, 46, +239,233,126,157,159,188, 21,107,135, 81,222,203,172,117,165,212,116, 25,166, 29, 18,176,113,251,243,179,137,206,179,177, 52,253, +118,215,106, 79,253,120,214,209, 87,239,249, 13,104,166, 95, 44,145, 42,224, 43, 52,232, 31,243,207,111,196,196,126,207, 41,217, +173,168,135,202,158,142,213,143,222,119,107, 76, 55,217,170,130,189, 12,201,148,206, 66, 52, 4, 72,131, 73,178, 64, 77, 82,144, +162,207, 59,192, 57,204, 49, 34,164, 8,182, 22,105,222, 96,172,228,156,199,146, 5,169,170, 83,182,156,116, 60,206,140,193, 13, + 88,182,160, 86, 51,130,179, 30, 79, 79, 31,224, 45,161,132,130,187,183,111,113,157, 25,255,234,255,252,127,240,230,179,183,248, + 31,255,231,255, 9,230, 53,193,156, 60,172, 51, 72,215, 89, 83,251,132, 50, 70,196,152,175, 87,185, 26,131,166,178, 17, 99,213, + 49,188,181,174,249,159, 73, 31,238,243,188, 52, 11, 84, 74, 5, 41, 5,132, 77, 69,162, 36,197, 14, 17, 35,198,154,153, 46,135, +182,232, 84, 10, 62, 60,205,162, 59, 73,242,126,181,162,143, 5,189,219, 51, 57,196, 94, 42,162,181,233, 52,226,233,233, 61, 62, +249,196, 10, 97,210, 48,198,193, 43,248,106,195,143,126,248, 41,230,101,197, 22, 34,166,211,132,111,191,249, 22,254, 60,160, 6, + 22, 49, 19,156, 21, 42,222,229,233,210,196, 86,131,134,237,156,207, 39,188,255,240, 45,156, 51, 56,157, 38,248,193,226,205, 39, + 15,184,206, 23, 45, 46,228, 51, 22, 43, 90,129, 97,146,252,111,236,136,218,162,188,115,102, 22, 86, 6, 32, 25,235,216,233,110, +168,187,238, 78,171, 17, 98,128, 51,166,221, 83, 37,100,113, 1,100,224,253,187,247,152,198, 17, 49,206,136, 49,227,241,233, 9, +126,120,141,243,221, 61, 46, 31, 62, 32, 69, 89,211, 76,131,135,117, 22,227, 52,226,233,233, 73, 44,110, 81, 24, 1,214, 90,209, + 10, 92,103, 48, 59, 24,231, 16, 66,192, 50, 7, 57,199,140,129, 97,113, 69, 92,231, 43,172,149,233,204,135, 15,143,152,166, 81, + 66, 96, 92,110,209,185,185,164,125,229,132, 42, 88,227, 93,191,115,195, 70, 57,100, 74,148, 35, 20, 43,223, 30,250,186,107, 55, +149, 89, 81,181, 58,180,135, 47,245,150, 94,113,127,153,125,255, 94,241,177,117, 84,223,101,163, 84, 40, 77, 29,199,203,179, 93, +137,114, 71,149,242,111, 31,216,242, 18,240,162,239, 98,184, 27,133,191,208,168,189, 60,138,108, 49,146,232, 70, 12,249,176, 55, +173, 6,190,230,131, 46,180,211,228, 90,100, 30, 14, 65, 27,123,103,212, 31,232,251, 72,184, 31, 10,139,247,152,155, 23,178, 9, + 94, 84,237,201,165, 75, 26,171, 40,218, 92, 3, 61,118,113, 71,209, 27,177, 42,138, 11, 17, 98, 1,230, 84,176, 21, 66, 98, 35, + 30,116, 50, 8, 37,129, 83, 22, 68, 35,103,176, 99,156,239, 60,238,166, 17,175, 78, 35,238, 71, 7,147, 3, 56, 69,124,216, 34, +174,115,194, 63,124,249, 14, 95,124,245, 30, 95,127,184, 98, 73, 66, 92, 26,199, 19,134, 97,130, 27,206,200, 84,144,153, 16,178, +216, 63,136, 19, 10, 65, 30,122, 57, 54,240, 72,243, 71,214,113,122,179,159,113, 43,174,246, 61,114,217, 11,167,210, 28,255, 55, + 31,235, 81,205,126, 24, 19,119, 6,234,102, 65, 44,157,229,170,221, 28, 61,119,160,252,198,131,238,187,148,226, 47,217,217,234, +165,120,219,165,183,238,191, 19,186,244, 1, 46,212,173,151,116,222, 35,170,241, 94, 8,247, 29, 10,248,103,135,246, 71,232,114, +191,105, 79,255,162,207,254,102,236, 95,241, 89,212,117, 21,212,197,226,102, 20,184, 98, 52, 12,103,175,202,119, 64, 6,169,103, +184,224, 52,141, 40, 41,193, 25, 3,114, 12, 54,132, 85, 39, 12,103, 67,130, 33,133,230,210,149,253, 94, 78,144,209, 53,103, 77, + 53, 52, 14,219, 22, 16,182, 32, 63,223, 59,172,203,138,148, 51, 46,215,132,113,152,176,241,134,149, 11,182,243,167,248, 95,254, +215,255, 11,191,247,207,255, 57,254,232, 95,254, 62,238, 63,253, 4,159,127,241,107,196, 16,112, 26, 6, 60, 70,177,170, 17, 25, +181,110, 38,177,163,142, 35, 46,243, 2,103, 77,123, 63,230,121, 70, 12, 1, 84,196, 42, 85, 16,229,208,215,251,212,217, 1,155, + 17,127,176, 32,110,245, 97, 73, 50,194,207, 5,216, 86,233, 42,183,144,196,234, 84, 0,235, 61, 10, 0,107, 61, 98, 12,178, 31, + 38,128,217,182,157,112, 78,165,121,231,199,113,130,181, 35,190,249,230, 91, 32, 23,220,223,159, 53,152,196, 75, 60,106, 88,241, +238,253,215,136, 81,168,122, 40,192, 55, 95,127,141,251,251,123,228, 82,176, 69, 97,182,223,223,223,225,213,235, 87,120,124,255, +136, 16, 36, 72,234,124,150,137,135,115, 22, 49, 6,108,155,140,246, 31, 30, 30,192,252,187,248,234,171, 95,131,200,192,143, 30, +243,188,182,195,166,141,137, 33,133,207, 52, 77, 34, 48, 92, 55,201,235, 54, 6,167,243, 25,243,229, 34,207,178,218,164,232,181, + 66,204,109, 23,188,165, 0,199, 22,198, 24,201, 84, 87, 97, 91, 81,177,156,104, 94,228, 82,187,206, 87,188,126,117, 47,130,198, + 44, 79,225,101, 89, 91, 52,236,253,221, 93,179, 86,178,106,143,214, 69, 2,106,182,152,177,174,155, 36,209, 13, 30,204,210,168, +124,243,245,183,248,244,179,183,136,225, 43, 89, 59,176,193,182, 45,141,211,254,112,255,128,199,248, 36, 97, 86,134,165,177,201, + 25, 80,117, 58,202, 13, 37,243,197, 64, 39,153, 40,212, 61,248,158,151,246,124,239,149,251,231,200,174,251,110, 16,168,250, 96, + 49,178, 31, 86,170, 92,105,207,133, 98,185,129,120,170, 40,151,250,103, 71, 93, 15,178,233,132,114,109,183,132,151,187,168,239, +248,135, 85, 1, 88, 15,129, 10,224,104, 15, 61,221, 49,247,138,248,219,239,169,233,195,135,255,149,186,180, 43, 34, 1,248, 21, + 58,118,195,253,239, 72, 68, 48,253,136,254, 38,224,162, 89,123,106,240,252, 45,172,163,166,173,145,193,192,132,129, 11,238,189, + 64,101,146, 34, 90,147,254,166,214, 8, 64, 35,231, 0, 71,192,104, 13, 44,201,200, 29, 96,245,158, 27,172,186,123, 22,101,167, +168,190,201, 90, 68, 54,184,196,132,144, 11,130, 38, 18,181,130,197, 84,165,166, 96, 98,239,207, 19, 62,123,115,143,207, 30, 38, +220, 15, 4, 46, 25,215,203,130, 47,191,157,241,247,223,110,248,171,191,255, 6,159,127,125,197,251,149, 16,202, 0,114,119, 32, +123, 70,230, 9, 69,189,239,243,188, 96, 94, 22,196,180,193,218,130,209, 25,132,101,197,122, 89,132, 56,134,172, 15,185,218, 49, + 23, 36, 50,200,205,163, 78, 50, 86, 77,185, 93,112, 57,151, 99,200, 24,209,115,252, 46,237,220,190,151,188, 86,185,195, 42, 10, +216, 8, 13,236, 80,244, 64, 47,205,206, 86, 90,218,222, 46, 92,163, 54,206,226, 67,152, 15,181,201, 74,191,154,217, 57,203,221, +225, 95, 74, 99, 28, 16,237,215,198,161,232, 67, 7, 66, 82,184, 77,221, 69,247,175,191,174, 45,110,125,231, 47, 22, 35,189,148, +164, 28, 17,202,253,239,219,107, 6, 94, 26,191,127, 31,197,125,211, 39, 52, 12,238, 62,149,227,238, 97, 66,135,162, 87,169,128, +138, 11,101, 35, 1, 63,206, 89,176, 97,204,203, 34,145,163, 57,195, 15, 35, 88, 15, 69, 98, 86,200, 12, 55,107, 86, 29,193, 54, + 80,143, 49,216,182, 13,198, 24, 56, 47, 94,105,231, 61, 46,139,236, 64, 79,231, 19,166,179,135, 51, 30, 33, 49,214,101,195, 23, +191,248, 37,254,244, 95,254, 41,206, 22,136,203,138,203,227, 19, 2, 10,214, 20,129,194,240,254,132, 68,192, 22, 2,140,119, 32, + 54,141, 56,199,198, 98,158, 23, 77, 40, 44,202, 53,207, 13,211, 73, 68, 88,215, 32,221,122, 72,154,217, 77, 72,169,128,201, 98, +219,130, 82, 29, 5, 14,181,198,132,235,178,194, 79, 35,216, 57,141,229, 20, 27,106, 77,122,107,249,222,108, 96, 21,239, 90,173, +140,206,123,249,153,203, 10,102,177,181,165, 28,165, 59, 29,134,182, 18,100,150, 36,178, 31,252,224, 51, 12,163,199,195,171, 7, + 92,174,210,125, 58,231,164,251, 28, 79,178,187, 94, 37, 97,207, 90,177,169,189,122,245, 10, 49, 5,196, 44,220,120, 2,112, 58, + 77, 32,146,213,131, 53, 22,231,187, 51,174,215,185, 9, 9,147,218,186, 10,213,216, 83,134,179, 2,201,202, 58,181,217,214, 21, +214,116,156,242,220, 89, 37, 11,186,189,178, 90, 95,213,207, 63, 77, 39,161, 90,150,125,178,231,189, 19,222,190,170,229,183,117, +211,161,157,234,118, 82,106, 83, 82,235, 36, 79, 62, 70, 89, 25, 18,177,118,233, 17, 49,236, 34, 64,239, 7, 13,245, 97,121,221, +186,215,151,123, 73, 84,242, 49, 36, 88,107,155,189,112, 31,100,117,247, 16,181,248,175,174, 43, 63,176,198,247,251,155,246,200, +232,231, 77, 6,119, 19, 72,180, 53, 70,123,102, 40, 56,167,234,177, 82, 11,158,209,159, 87, 93, 8, 57, 31, 92, 20,181,251,223, +169,173,210,132,182,157,122,229,121,223,250,200, 95, 58,208,111, 59, 17,195, 86, 9, 94, 53,117,107,207,116,110,228,176,178,123, +214, 43,103,184, 79, 73,163,146, 97,114,253,239,162, 49,100,157, 3,178,152, 8, 85,225,222,143,220, 75,227,182,183,152,138,155, +177, 42, 53, 70,125,110,105,171,245, 97, 85,197, 17,253, 26,132,137,224,137, 49, 26,134, 47, 1,119,222,194, 41,153, 77,246,227, + 4, 99,228,245,150,146, 96, 74,198, 64,132, 81, 69,103, 41, 73,254,120, 68, 70, 84,159, 35, 49,161,144, 20, 36, 49, 39, 36, 16, + 34, 49,182,146,187, 93,122, 31,158, 34,135,131,161, 2, 99, 9, 15,119,119,120,251,250,140, 55,103,139,129, 18,194,178,225,221, +227,130,175, 62, 44,248,252,221,140, 47,190,121,143,199,101, 67, 4, 16, 75, 86, 90, 86, 0, 49,193,120,169, 96,115,142, 40,105, +197, 56, 16,222,190,185,195,221, 52, 98,189, 44,136,215,208,244, 10, 89, 61,202,172, 11,179,200, 6,217, 15, 72,214,137,231, 54, +103, 85,111,238, 15,198,234, 75,168, 3, 18,234, 68, 86,165,244,249,245,165, 29,132,186,173,214, 27,105,159, 2, 48,145,160,125, + 75,217, 73, 41,245, 32, 87,107,162,188,123, 50, 30, 48,109,135, 94, 69, 38,187,176,178,125,248,173, 11,161, 54, 70,219,131, 96, +168,203, 45, 46,173,179,228, 61,226,172,237,150,247,201,195, 94,168,238,246,176,125, 4, 87,225, 20,232,236,148, 31, 27,173,151, +155,131,157,110,114, 17, 62, 38,146,251,152, 66,254,163,193, 49, 42,244,171, 89,223,224,227, 62,189,218,121, 42,243,190,199, 91, + 86,207, 52, 24,112, 78, 19, 0,153,112,185, 94,193, 4,156,166, 73,252,189,205,127, 47, 10,115, 67, 6,172,225, 29, 49, 38,189, + 94,242,174, 19, 34, 18,155, 28, 19, 98,206, 96,235,224, 6,143,101, 91,129,146, 48,120,131,117,222,224,252,132,152,129,167,167, + 43,190,252,234,107,132,199, 43,254,244,191,251, 35,240, 22, 16,182, 13, 95,125,251, 13,230, 88,176, 38, 5, 6,145,140,145,253, + 48, 32,149,220,246,204, 85, 76,150, 84,140,182,110, 27, 66,136,176,214,106,198,188, 8,226,150,121, 17,149,251,182,105,144,139, +195,186,108, 96,146, 17,110, 42, 69, 45,116,144,177,123, 41,240,163,135,181, 70, 40,110, 58,110, 90,215, 25,195,224, 17, 21,153, +107,172,136, 95,157,115, 24,167, 17,198,114, 83,216,135, 20, 80, 80, 48,142, 99, 11, 19, 98,195,136, 65,242,222,147, 42,210,115, + 78,184,187,191,195, 22, 54,148,146,177,109, 81, 38, 26, 91,208,239, 41, 93,241,186, 6,204,203,138,233,116, 2, 91, 9,125, 34, + 20,133,196,108,120,243,250, 21,190,253,246, 91,237,198, 79,237, 48, 44,250,115, 67, 42, 32, 99,229,208, 52, 70,169,150,132, 82, + 36, 33, 78,200,118,165,241, 68,184, 93,163,212,178, 15,118,178,163, 92,101,213,238,232,189,135,113, 22, 91, 16,108,109,136, 1, +164,113,178, 91, 12,130,235, 77, 9, 92, 20,153, 29,196,199, 94,109,149,117,106, 82, 10, 75,252,172,170,232, 91,230, 64,202,186, + 99, 15, 24,207, 39,188,123,247, 14,167,105,194, 48,122,133, 86,201,132,106, 11, 81, 25, 12, 90,188, 60,155, 49,238, 91,192,250, + 44, 75,154,214,135, 67, 18,229,203, 61,111, 15,213,170,105,110,149, 78, 71,157,200,174, 38,210,165,220,169,216, 85, 80, 40,207, + 18,211, 14,173, 61,102, 58, 31,154,133,198,215, 40,141,253, 62, 41,124, 38,189, 40, 2,248, 62,123, 60,102,115,232, 74,158, 61, +104, 74,111,225, 57,202,252,119, 6,172, 62, 88,233,165, 7,150, 40,232,249, 70, 16,135,158,141, 13, 1,194,244, 81,173,172,123, +224, 10, 55,160, 78,188,112, 91, 85,213,239,207, 0, 60, 52, 78,181, 36,156,188,131,211,253, 76, 74, 64, 46,172,156,116,128,114, +212,216,213, 2,239, 68, 85,154,114, 22,128, 11, 51,182, 44, 74,116,241,160, 43, 25, 77,229,136, 89,143,146,182,203, 45, 2,246, +168,160, 19, 46, 66,173,243,206,226,213,253,132, 79, 94, 77,184, 27, 12,184, 68, 60, 93,174,248,245, 55,239,241,213,183, 79,248, +250,253, 5, 79,215, 25, 41, 3,131,247,184, 59,157,112,127,119,194,235, 87,247,248,193,103,159,226,213,195, 25,167,209,194, 34, + 98,114,132, 55, 15, 19,206,147, 71,137, 1, 31,190,121,143, 18,119, 49, 98,175,237,200, 96, 36, 99, 1, 55, 32, 25, 39,177,132, + 85,129,174,130,193,150,147, 76,251, 14,189,127,143,143, 90,137,189,176,171,127,184,235,162,251, 83,141, 84,153, 93, 1, 48,149, +106,149,245,231,239, 33, 42,116,176,135,181,216, 93,236,200,196, 58,141,225,103, 12,250, 62,169,172, 28,244, 32,212, 49,227,251, + 13, 86,189, 33,249, 70,156,246,108, 63, 79,187,100,245,187, 82,225,202, 17, 61,115, 19, 51, 76,207, 98, 99,191, 11, 74,115,251, +117,189,103,190,253, 4,253,187,182, 7, 44,181,160,214, 7,148,114, 90, 10,237,211,147,210,145, 25,139, 30, 12,235, 38,185,222, +175, 94,189, 82, 96,147,209,110, 46, 9, 72,197,187,102, 99, 43, 40,237, 64, 37,237, 80, 72, 31,140,133,196,166,180, 41,178,148, +141, 17, 91,215, 52, 33,134, 21,126,240, 8,185, 96,217,130, 28,208, 57,224, 87, 95,252, 3,126,120, 26,241,211, 31,255, 24, 79, +239,223, 99, 94, 3, 2, 15,184, 70, 18,108,108,145,132, 53,176, 1,169, 34, 58,165,210,198,242, 79, 79, 87, 20,144, 32, 98, 65, + 88,183,128,235,178, 52,210, 90, 74, 5, 81,189,209,168,150,188, 34,225, 51,243,182, 97,217, 54,181,225, 73, 22, 3,192,112,222, +227,195,135, 71,204,203,138, 82,128,243,233,132,101, 94, 69,180,118, 18,248,203, 22,130,122,153, 69,144,204,204, 88,215, 5,231, +251,179,120,208,163,216,207, 88,213,249,243,188,192,235, 56,121, 24,189, 68, 66,123, 39,116, 60, 99,112,189,138,223, 59,132,136, +105,244, 56,157, 6, 17,131, 77, 3,230,101,129,115, 34,112, 27,252, 32,107,148,172,217, 22, 70, 40,129, 15, 15, 15, 66,215, 75, + 25,211,233,140, 53, 6,153,180,120, 39,225, 40,170, 77,178, 70, 82,229, 30,238,238, 0, 0,222,251,110,252,171,204,244,156, 27, +121,177,145, 30,121, 23,128,177,234, 23, 82, 78, 2, 35,178, 6,134, 89, 15,108, 86, 22, 64, 66, 74, 1,206, 59,105, 16,141,107, + 94,239,148,146,250,217, 69, 8, 23, 99,105,177,175,155,234, 37,140,181,250, 51,164,224, 40, 84, 48,207, 11,156,247, 88, 23, 41, +234, 6, 63,202, 24, 63, 37,133,199, 8, 44, 76,154,174, 23, 26,215,210, 65, 97,106,135,221, 5,140, 20,148,239, 12,134,186, 29, +120, 87,246, 61,221, 76,228,234,193,124, 59,145, 43, 31, 9,121,234,197,180,135,245,183,190,215,221,248,253,165, 78,253,123, 30, +234,100, 62, 10,195,216, 3, 48,246, 39, 23, 83,147,161,247,250, 62, 97,183,223,206, 34, 91,231, 15,101,187,211, 77, 80, 76, 7, + 13, 40,251, 46,100, 15,221, 56,238, 65,111,137,119,245,125,108, 0,154, 66,240, 16,139,154,103, 96,100,134, 55, 6, 40,172, 33, + 6, 18,204, 98, 20,122,234, 88,211,214,212, 11, 19,115, 70, 2, 35, 50, 99, 75, 25, 91,214,189, 75, 29,238,232, 1, 79, 70,217, +196,245,213,150,157,120, 87, 95,151, 53,192, 52, 58,220,223, 13,120,125, 30,113,114,132,146, 54, 60, 62, 94,240,237,251, 39,188, +127,188,226,178, 4,160,200,248,238,213,195, 3, 62,121,253, 10,159,188,190,195,253,221, 25, 15,119, 39, 56,206,112,136,120,125, +242, 56,217,130,187,129,225,168,224,242,254, 17,151, 15,115,211, 32, 84, 16, 74,229, 16,103, 50, 72,198,162,184, 1,137, 77, 27, + 7,229,230, 2,232, 96, 11, 29, 15,189,183,169, 29,162, 85,113, 11, 35,210, 34, 65,255,189, 61,247, 93, 29,163, 53, 75,184, 75, + 34,170,224, 32,194,243, 67,189,178,231,219, 88, 94, 43, 64, 38,122, 94, 55, 80,133,159,116, 9,128,109,236,108,244, 79,239, 29, + 47, 7,110, 2,127,164,139,110, 7,117, 21,215,252, 38,187, 91, 31,250,208, 93,199,125,167,222,239,198, 63,230,125,127,233, 96, +127, 17,129, 91, 58,219, 77,169,152,140,174, 16, 99,128,120,199,130,214,224,157,210, 74,209, 93,231,112, 58,159,225,156, 1, 74, +193,224, 61, 12, 27,120,231,132,240,181,109, 88,215, 21,222,249, 54,110, 14, 49,202,123,174,247,153,117,182, 81,224, 10, 8,126, +240, 45, 32,229,254,238, 14,219,186,224,116,154,176,134,132,167,121, 70, 2, 48,156, 78, 72,165,224,255,253,139,255,136,223,253, +244, 7,248,193,171, 7, 60, 93,159,240,180, 5,193, 51,111, 98,143,219,114,134,115, 3, 54,245,174,175, 33, 54,216, 81,214, 63, + 75,144,131, 43,196,132, 24,146,242,200,119, 13, 15,147,172, 29, 50, 8, 91,202,120,156, 23, 57,252, 91,162, 48,171,199, 95,216, + 14, 18, 98,147, 14,153,216,117, 44,107,221,222,237, 18, 23, 65,194,106,186,162, 31, 7, 25, 23, 67,146,227,128,130, 97, 24, 26, + 33,142, 85,124,119, 58, 79, 96,102,124,248,240, 1, 70, 5,127,117, 77, 20,182, 5,222, 51,222,188,190, 71,138, 81,118,222, 73, +156, 41, 41, 38, 76,227, 4,102, 96,158,175,184,187,187,199,178, 44,210, 49, 27,139,235,188,200,148,196,201,148,132,212, 18, 88, +227, 67,139,166,176,161,100,153, 18,108, 91, 99,174,115, 29,209,163,210, 21,185,101,130, 52,200,142, 62,231,152, 89,128, 90,222, + 1,144,131, 87,114,197, 51,206,231, 59, 13,217, 1,144,162,238,230,141,106, 15, 70,164,146,181, 48,204, 8, 73, 32, 67,213, 82, + 89,157, 91, 49, 70,253,249,212,148, 89,149,195,191,133,128,117, 13, 88, 55, 1, 4, 53, 32,150, 90,200, 26,223,164, 30,212,229, + 56, 73,107,207, 24,238, 18,195, 10,186, 21,100, 57,228,189,239, 58,180, 93,153,202, 68, 74, 57,127,158,171,114,123,223,126,108, + 10,183, 91,233,142, 54,222, 29, 7, 45, 83,211,221,167, 94,242,111,223,169, 55,254,186,249, 78, 15, 58,223,120,239,234, 27, 73, + 93, 54, 58,183, 32,169,190,123, 54,237,123,203, 11,202, 47,190,216,134,128,173, 94,219, 3, 36,228,166,202,225,170, 88,222,211, +218,168,223,193,162,192,162,192, 27,192, 19,193, 81,129,183,182, 29, 48,138,225,134, 33,241,156, 51, 21,185,232, 85,196, 23,115, + 65, 34,194, 70,132, 37,102, 36, 13,220, 0, 75, 72, 3,171,156,126, 7,243,239,227,153, 82,217,192, 42,168,179, 6,152, 6,135, +187,147,199,171,179,195,228, 24, 57,108,120,122,154,241,116, 93,176, 6,185, 64,173,117, 2,170,241, 14,167,193, 98, 48,128,161, + 8, 46, 17,166, 4,140, 20,113,231, 9,119, 3, 99,114, 70,195, 51,190, 65,152, 53,195,157,143,123, 25,144, 30,234,108,145,173, + 71,130,224, 99,143,193, 36,186,147,212,206, 22,207,122,206, 42, 38,229,131,197,108,215, 85, 40,242,181, 19, 50,182,234,244,153, +200,171,194, 46,242,238, 9,237,144,167,181,227,127,222,225,222, 80,226, 42, 87,155,202,255, 79,217,155,245, 72,150,101, 87,122, +235,204,119, 50, 51,247,136,200,204,202,202,172,145, 53,144, 34, 27,205,174,150,186,159, 4,189, 72,128,160, 7,253, 38,254,176, + 6, 4,234, 69, 16, 32,136, 84,163,155, 68,149, 56, 38,139, 85, 57,196,224,238,102,118,167, 51,233, 97,239,123,238, 53,115,243, +204, 18,129,200,172, 42, 70,120,152,155, 95, 59,103, 15,107,125,235, 6,107, 30, 5,178, 33,138, 55,125,131,174,229,130, 87,137, +151, 71,227, 41, 93,170,243,197,183, 40,212,151, 67, 34,151,124,131, 63, 28,148,243,146,136,238,165,241,187,228, 48,149, 11, 21, + 47, 54,147,174,165,107,150, 27, 72, 85,198, 69,112,196, 50,141,161,253,175, 99,141, 8,117,114,130, 59, 64,165, 20,144, 19,198, +113,160,255,204, 73, 89, 2,130,172,100, 44,166,218,239,247,152, 35,121,197, 73,144, 22,161,149,198, 56,141,144, 90,241, 69,176, +248,219, 61,230, 16, 96,157,131,212, 26, 62, 9, 60,156, 61,254,241,239,254, 17,159,125,250, 49,218, 93,133,121,238,137,248, 24, + 51, 2, 4,116, 85,145, 8,207,123, 18, 95,177,255,152, 2,138, 40, 87,124, 24,231,245,226,230,152,229, 16,232, 66,241, 62,112, + 18,161,128,143, 25,199,126,194, 83, 63, 17,250, 53, 45, 1, 44,178,164,152, 77,211,140,188, 4,130,112, 72,201,130,196,157,253, +140,186,166,140,243,148, 34,154,166,130, 49, 10,117,229, 80, 85,142,237,132,180, 11, 29,134,177,252,236, 98,138,148, 4,199, 97, + 41, 25, 9, 33,120,140,195,200,147, 16, 98,132, 11, 8, 88,107, 32, 4, 37,184, 53, 77, 13,109, 12, 92,229,214,164,179,228,113, +216,239, 49,244, 61, 92,181,218,217,230,217,163,110, 26,188,123,255, 30,117, 83, 51,194, 55, 23,114,230,114,113, 73, 41, 8,214, +226, 12, 7,229, 76,188,187, 54,156, 44,185,156, 5,226,170, 87,203, 5,135,171,141, 97,193,156,135, 49,154, 1, 51, 17, 2, 10, + 50, 3, 93, 75,200, 87,185, 36,217, 33,163,109, 91, 60, 29,143,168,234,138, 70,229, 90, 65,105,210, 55,164,148,104, 26,193,221, +249,114, 62, 40,165,203,133,156,248, 25,142,137,198,217,137,139, 90,181,140,176,197, 85, 33,140, 75,210,227,114, 87,137, 13,111, +129,206, 17,185, 49,229, 92,222, 65,212,165,200,178,216,186, 44,170,151,144,152, 21, 73,189,109,134,151,233,218, 50, 98, 95,138, +161, 11, 50,228, 85, 55, 95,254,220,194,153, 71,222,140,223, 11,169,235, 15,163,111,137,140, 77,199, 34,159,141, 4,190, 77,184, +179,253, 26,200,219, 17, 98,222,140,130,197,133,114,157, 69,216,151,190,222,114,160, 46,121,224,178,136,253,150, 24, 65, 33,174, + 70,151,114,129,136, 60,207,115,151, 82,150,177,183,145, 2, 90, 0, 74, 36, 24,173, 75, 0,135, 96, 49,157,214,170,176,144,151, +203, 73, 74,133, 8,129, 8,137, 33, 3, 99,202,136,160, 48, 22,185, 36,187, 45, 23, 58,143,114,114, 94, 51,198,151,127,210,135, + 53,163,178, 10, 77,165,113,104, 45,246,141, 65,109, 21,210, 28, 48,142, 51, 38, 31,145,147, 40, 59, 45,165, 24,245, 26, 39, 68, + 63, 64,166, 9, 50,121, 84, 42,225,174, 53,232,156, 68,235, 52,172,148,120,255,238, 61,222,190,125, 0,178, 42,105, 31, 82,174, + 34,195, 44, 36,162, 82,240, 82, 83,152,139, 84,148,167,158,211,218,173,103, 20,157,194,234, 45,191,230,254, 95, 91, 29,150,159, +215,166, 56,219, 20, 86,249, 89, 39,188,170,228, 87,178,215, 58,190, 82, 91,146, 28,127, 16, 87,216,209,101,236,235, 54,201, 45, + 97,209, 87,200, 77,133,156,202,179, 76, 16,150,181, 42,222, 10,228,144,241,108, 44,126, 19, 42,147,243,133, 77,238,165,223, 87, + 58, 1, 92, 18,229,110,250,233,255,192,162,251,122, 44, 47,165,188, 88, 77,229,226, 25,103, 15, 58,139, 62, 37, 71,248,208,113, +164,202,143, 78, 73,234,212, 82,166,131, 52,179, 42, 57,204, 51,180, 86,200, 49, 65,107, 13, 41, 4,198,121,132, 86, 26,138, 15, +220,113,154,161,181,193, 52,205, 16, 82,161,170,107, 72,109,202,207,117,177, 0,105, 77, 9,133, 89, 8,204,243,140,110,215,145, +205,202, 19,218,180,169, 26, 72,161, 73, 68,164, 12,166, 12,124,241,251,223,195, 88,139, 79, 62,122, 13,129, 4, 31, 3, 32, 21, +164, 50,172,134,151, 28,154, 66, 29,149,103,177, 87, 96,156,108, 78,177,228, 32, 40, 73, 34,172,152, 8,148, 19, 98, 70, 76, 2, + 31,158,122, 28, 7,143,193, 83,162, 28, 61,148, 10, 2, 52,222, 39, 5,120,222,136,173,114,233, 24,181, 49,112,206, 48,139,221, + 48,103,125, 66, 85, 59,180, 77, 13, 32, 65, 27,197,208, 16, 9,107, 12,140,117,120,124, 60, 98,183,219, 51, 1,206, 67, 74,160, +107, 91,162,173, 5, 10, 78,169,170,138, 46,102,239, 49,244, 35,156,115,204,125, 95,167,105,119,247, 7, 72,153,203, 46, 92, 73, +133,190,239,185, 8, 16,197,178,150, 51, 9,231,170,218, 65,105, 18, 37,230, 12,104,165,153, 77, 78, 8,217, 97, 26,209,180, 13, + 34,191,174,152, 40,225, 78, 72,193,235,133,188, 10, 99,151, 53,150, 92,247,200,214, 89, 28,246, 59,204,211,132,182,109,169, 16, +138, 1, 57, 69, 76,211,184,122,184, 69, 70,215,181,112,174,194,233,116, 36, 17, 93, 83,193, 58,139,166,169,153, 96, 71,223,251, + 50, 22,215,252,188,165, 68,100,194, 84,160, 36,107, 74, 94, 6,161,177,149,166,117,209,210,101,175,185,230,184,185,186, 42,145, +224, 0, 5,191, 92,140,218,193, 97, 43, 98, 51,253,187, 20,131, 11,185,134, 92,101,228,111,213,195,220,162, 96, 94,135,166,221, +130, 79, 45,218, 24,228,188, 10,229, 18,210, 31,220, 37, 20,158,250,166, 83,202,249,101,241,206, 69, 23,191, 80,145,178, 90, 21, +232, 5,161,168, 54,227,103,238, 46, 22,219, 26, 95,234,207,246,137, 41,111,224, 26, 98,213, 41,149, 68, 45,113, 17,216,113,169, +107, 72,197, 83, 47,121,153,184, 0,253,149,148, 48,188, 99,175,140, 89,109, 73, 88, 18,215,104,244, 20, 89,143, 64,240,125, 26, +202,251, 36,112,142, 25, 83, 76,236,245, 22, 69,160, 37, 23, 53,228,102, 68,180, 48,226,203,254,151,117, 0, 86, 75,236, 26,139, + 67, 99,176,175, 53,106,171, 32, 50,224,185,235, 89,242,120,165,148, 48,138,242,212,173,204,112, 50,161, 50, 2,187,202,224,117, + 87,225,174, 54, 56, 52, 14,181, 53, 56, 30,123,252,243, 23, 95, 98, 26, 19,219,176,168,203,213, 66, 97,233,183, 3, 4,130,148, + 8,202, 34, 73,131, 40, 8,233, 25, 83, 68,202,116, 96, 96,147,199, 76,239, 75, 42,138,234,140,203,117,203,234,106,203,183,193, + 70,155,226,236, 2,172,201,112,155, 5,174,177, 20, 4,151,122,141,124, 53,126,191, 13,159,145, 34, 95,252,251, 50,171,125,237, +212, 23, 17,167,146,185,224,149,203,229,126, 37, 4,188,222,163,149,149, 2,195, 84,114,202,223, 53,234, 42,129, 66,229, 25,222, + 22, 42, 87,227,247,239,178,184, 93, 84,244,219, 75,125,165,240,147,118, 99,243,215, 75,158, 62, 44,252, 8,181,208, 27,179, 4, +199, 16,144, 80,137,121,229, 57,163, 92, 10,222,207,112,188,187, 85, 16,176, 70,193,106, 3,169, 21,193,102,248, 48, 84,218, 96, +158, 3, 89,218, 88, 25,175, 22,144,200, 18,223, 89,146,182, 34, 94,189,190, 47,233, 89,211, 56,193,106,131,202, 85,212,237,230, +136, 8,202, 97, 31,147,194, 95,253,250, 31, 48,132,136,239,125,242, 9,106,231, 40,108,166, 31,144, 57,106,120,185,124,230,105, +166, 73, 15,199,153,250,217,211,184,127,242, 36,200, 10, 20,241,153, 32, 48,135,140,144,128,167,126, 66, 63, 69,196,172, 48, 5, +226, 75, 8, 8,164,200,248,220, 20,144,114,196,174,219,209,196, 33, 69,134,125,113,214,131, 82,229,189, 34,129, 89, 96,213, 50, +169,178,115,166,238, 58,134, 64,113,176, 51,225, 86,235,134, 70,237, 77, 83,149, 75, 38,132,136,166,105,137,219,158,104, 10,144, + 82,194,110,215, 18, 89, 45,210,255, 70, 42,242, 26, 15, 15, 31,144, 18, 5,186,104,173, 73,253,157, 41,154,121, 24,122, 56,103, +137, 55, 48,205,216,117, 29, 98,138,208, 90,161, 63,157,177,219,237,145,216,250, 69,205, 26,141,194,169, 81,162,245,128, 96, 20, +108,206, 20,229,154,115,130,143,137, 38, 78,139, 40,122, 35,250, 93, 84,230, 90, 75,220,223,221, 97,154,102,236,246, 29,137, 37, + 5,120,103, 14,102,201, 7, 12,227,132,174,219,163,235,118,220, 52, 37,190,188, 53,199,171,106,134, 79,145,120, 77,107, 67, 98, +111,108,195,114,104,106,162,148,226, 73,129, 33,119,147,214,208, 90,150,181, 81, 96,189,195,114,198, 8, 62,179,159, 89, 67,147, +216,120,199, 83, 57,179,190,219,242,189, 74,105, 69, 94, 57,240,215, 35,244, 91,235,188,103,255,219,149,150,166,124,141, 13, 33, +117,189,212,243,255,143, 75,189,100,160,203, 77,167,126,251, 82, 95,254, 34,153,232,135,189,134, 99,174, 3, 10,201,139,246,226, +151, 92, 54,176,114,221,121,243,221,243,124, 87,191,100, 78,111,139, 7, 41,202, 14, 30,101, 23, 72,163,213,148, 54,120, 81,254, +149, 18, 61,140,146,173,120, 82,105, 88,109,225,172,131, 22,146,236, 27,124,137,198, 76,221,119,228,202, 63,196,192, 21,160, 6, +132, 70,130,196, 28,129, 33, 37,248,188,170, 23,165, 16,208, 60,122,161,127,200,210,165,199, 13, 24, 4,200, 75, 64, 41,156, 85, +104,173,194,161, 54,232,156,130, 83, 18, 90, 82, 49,177,208,142,100, 94,178,188, 41,215,189, 50, 18,141, 1, 14,117,133, 87,187, + 14, 31,237, 26,124,114,183, 67, 91, 87,152,231, 25,255,244,197,239,241,229, 87, 15,240, 81, 1,153, 44, 54, 66,241,212,133, 15, +252, 0,129,168, 20,162, 52,200,124,169,231, 34,136,225,157,122,140, 69, 36, 39,165, 66, 66, 34, 49,157,192, 70, 23,177,201,183, +221, 4,220,139,237,186, 73, 92,174,115,150, 93,148,100,177, 32,242, 18,250,144, 47, 24,240,203, 72,249, 98,252, 46,183, 2, 73, +121, 81,249, 74,177, 6, 3,229,141, 0, 51,231, 75, 63,189, 96, 22,186,100,154, 28,164,216,248,231,175,212,253,219, 14,122,179, + 74,219,238,199,183,175,225, 54, 38,150, 15,146, 44, 94,180,168,221,154,122,109, 87, 33, 23, 56,201, 77,250,215,229,122,106,205, +170,222, 10,244,150, 75, 61,139,205, 74,160,208, 44,215,175,145, 56,226, 5, 0, 66,240,171, 95, 54, 6,236,219,174, 76,201,180, +214, 24,198, 17,144, 2,211, 60, 65, 73,133,211,233, 12,163, 13,114, 76, 72, 62,150, 49,237,146,129,110, 43,199,192, 19,194, 36, + 87,206, 34, 38,224,120, 58, 35,114,226,151,144,132, 35, 61,245, 39, 12,211, 0, 3,133,156, 13, 30, 67,196,239,222, 63,225,139, + 47,190,132,146, 26,245,126,135,144, 83, 25,191,135, 20,185,243,142,165, 83,143, 33, 2, 66, 81, 49,157,232,179, 28, 82,198,232, + 19, 70, 31,241,112,234, 17, 32,209,251,128, 40, 36, 66,196, 70,103,177, 21,115, 38,152,138,162,144,181, 49,252,203,150,226,215, + 88, 77,250, 1,182,178, 57,103,105,109,193,249, 95,222,207, 48, 70,211,200,124,211,245,147, 62,193, 34, 49,147, 62, 38,192,104, +141, 97, 24, 48, 14, 61,170,170, 34, 49, 30,119,183,198, 24, 8, 41, 17,194,204, 9,105,245, 26, 25, 27,233,191, 63, 60, 29, 17, + 83, 66,215,181, 16, 12,142, 89, 38, 36,109,219,210,115,176,232, 28, 98, 66,140, 25,206, 85,124,190, 17,203,160,170, 42,204,211, +132,110,215,150,116,194, 16, 2,180, 86,112,117,131,113,156, 86,174, 67,230, 73,217,226,247, 6,177,232,199,137,172,101, 77, 93, + 65,107,137,221,190,197, 56,244,212,177,103,148,236,128,148, 50,166, 97, 6, 98,198,221,221, 1,206, 82, 17,210,117, 29,249,214, + 57, 56,200,213, 22,149,171, 8,224, 99, 45, 92, 85, 81, 55,206,185, 22, 25,180,143, 95,200,134,139,188, 43,250, 25, 70, 25, 42, + 66,133,100,110,254,138,162, 93,124,224,165, 65, 72,151, 11, 53,154,146,138,103, 9,109, 43, 2,123, 61,251,178, 88,163,125,178, + 88, 34, 86,215,140,215,197,189, 67,150, 65,117, 49, 57, 94,198,235,223,117, 46,108, 27, 87, 85, 25,247, 23,165, 11,248, 3,238, +115, 81,246, 44,106,163, 20,150, 55, 23,252,101,148,112,113,166,175,152,213,213, 19, 44, 75, 59,183, 12, 76,228,154,248,193,226, +157,151,217, 56,226, 42, 97,103,201, 99,191,232,208,203, 56,246,226, 15,150,241,139,209,244,112, 28,238,238,241,234,245, 71,184, +219, 29,176,171, 27,242, 41,198, 88,194, 20, 22,191,186, 79,153, 19,205,200, 47, 40,149,162,189, 77, 2,121, 88, 83, 66, 20,128, +144,186, 40,235,151,213,194, 22,179,179,248, 19, 87,254, 79,134, 18, 20,176, 82, 59,141,214,105,116,149, 68,231,168, 83, 55,218, +172,191, 63, 3, 74, 40, 6,228, 72, 84, 70,163,177, 10,251,166,198,171, 67,135,251,125,139,215,187, 6,187,198, 65, 72,141, 47, +126,251, 37,126,243,247, 95,160,159, 51, 50, 52, 40, 44,150,188,186, 52, 98,165, 3, 61, 74,133,164, 12,146,178,200, 82,151,203, +154,198,123,169,188,103, 75, 33, 87, 50,191, 11, 44,114,107, 1, 91, 61,210, 37,156,135,127,222, 11, 13,169, 48, 14,182, 29,100, +209,163, 44, 23, 80,122, 38, 26,187,181, 83,151,155,157,247, 5,177, 17, 40, 43,148, 82, 92,148,240,160, 37,210,117, 83,132, 46, +132,167,171,238, 55,165,116,161,152, 95,104, 90,242, 5, 62,194,119, 17,226, 50, 86,113, 77, 78,249, 91, 59,242, 91,193, 73,223, +138,134, 45, 66,214,213,162,150, 83, 42,174, 2,177,245,220,243,216, 83, 44,136,204, 50, 73, 88,121,216,105,233, 68, 5, 39,160, +165,136,186,170, 54, 63, 7,134,182, 44, 17,197,138,172, 75,211, 98,175, 90, 28, 1,156,200,101,173,225,189, 49, 97,139,141,177, + 80,146,138, 6,138,203,164,241,170,171, 29,164,162,209,254,200,144, 25,163, 12,127,127,228, 50, 25, 67,194,111,191,252, 6, 95, +191,127, 79,246,180,156,201,123,157, 51, 60, 63,183,212,205,210, 69, 55,135,132, 24,129, 57, 68,140, 83,192,105,152,240,240,116, +198,105, 10, 72, 82,195,214, 13,166, 20, 49,251, 84,214,103,244, 51,143, 37,165, 79,112,138,162, 18,180, 3, 29,199, 17, 85,237, +160, 13,121,227, 23, 69,246, 18,210, 82, 85,174, 48,221,105,172, 46, 49,141, 3,234,170, 70, 12, 9,193,135,178,243, 30,134,158, + 33, 54, 36, 50, 28,134,145,227,150, 13,166,105,162, 12,116,182,221,213,117,197,182, 85, 26,179,211, 94, 63,227,241,241, 4, 1, +129,186,233, 32,164,198,249,212, 35,197,128,195,221,190,116,218, 66,208,251, 93,213, 53,198, 97,128, 81,154,193,142,146,129, 45, +243,186,178,148, 18, 57,145, 46,165,174,171,178,254,162,221,124, 75, 81,211,140,107,189, 40,114,229,229,121, 61,142, 51,164, 2, +218,174,161,117, 68, 85, 33, 69,176, 87,158,121, 9, 73, 32,249, 4, 63,123,156, 78, 39,156, 78, 39, 28,143, 39,122, 54,148, 70, +202, 18, 31, 62,188,163, 84,183, 72,127,167,177, 6,231,190, 71,202,137,158, 75, 94,113, 6, 62,191, 51,114, 9,225,145, 57,211, +180, 38,131, 34, 98, 57,141, 47,229, 84,246,214,235,246, 79, 92, 76, 37, 23, 96,204, 66,146, 92, 57, 28, 9,215,145,168, 91, 49, + 44,174,224, 93, 37, 5, 15,249, 98,226,184,109, 92,174,207,141,107, 69,252,246, 60, 88,192, 87, 26,101,232, 42,110,192,103,150, +151,161,174,188,223,137, 68, 34, 5, 32,178, 17,229,108, 72,112, 34,174, 24, 77,185,233, 68, 69,206, 27, 94,123, 44,111, 26,141, + 10,175,201,111,185,236, 90, 22,149,125,225,223,230,117,255, 46,151,216, 22,129, 50,117, 88, 20,170,197,131,156,105,231, 68, 94, +195,197, 82,172,209,181, 7,220,239,239,113,191,191, 67,211,118,244,117, 67,128,159,122, 66, 93,198, 4, 21, 19,114,204,136,136, +164,104, 7, 71,253, 9, 89,118,129, 89, 0, 30, 9, 62, 39,100,169, 11, 20,101,233, 72, 83, 94,216, 99,114,181,182,101,148,196, + 31,178,180,173,177,123, 42, 75, 24, 33,161, 51,237,247, 37, 50,148,204,176,198, 32, 70,210, 36,100,153, 25, 81,155, 80, 89,137, +198, 57,180,174,197,126, 95, 99,223, 25,220, 53, 2, 74, 25,252,195, 87, 61,126,253, 15, 95,225,233,228, 1,101,139,157, 14, 9, + 80,138,118,200, 73, 72,138,129,213, 22, 66, 57, 14,208, 73,208,165,168, 90,184,254,138,137,115, 96, 76, 46,231, 44,151,240,149, +133,229, 79, 69,195, 66,118,200, 34,110, 84,161, 91,245,255,178, 66, 73,235,120,107,147, 88,135,173, 0,237, 10,209, 40,213,198, +231,158,101,169, 60, 87,236, 98,134,144,137,158,185,188,142,124,158,107,226,151, 15, 84, 90, 6, 41,165,170,190, 84,183,174,148, +181,188,176,207,151,108,229,165, 86, 92,198,239,226,182, 63,253,242, 66,222,216,229,228,183,119,225, 47,209,227,110,142,223,183, + 89,233,229,243,199,186,151, 76,137,135, 5,170,129,117,210, 32, 32, 33,216, 90, 89, 58,173,226,114,208, 12, 69,162,207,168,171, + 42,120, 31, 33,242,140,182, 85, 8,145,190, 90,101, 12,132,146, 24,189,199, 20, 60,116,237,160,173, 70,109, 15, 56,227, 1, 49, +120, 68,254, 18, 92, 0, 0, 32, 0, 73, 68, 65, 84, 66, 48, 51,134, 53,139, 12,104, 81,208,179,198,210, 84, 73,128, 18, 13, 53, + 11,187,194, 28, 33, 50, 80,155, 10, 41, 37,188,249,232, 13,222,190,123, 7,127,156, 16,165,193,172, 45,254,229,193,227,183,111, +127,135,157, 85,104,154, 10, 90,128,226,139, 53,141,250,125,140,240, 33,225,228, 51,250,113,130, 20, 10, 77,211,225, 20,103,228, +170,166, 14,207, 26,156,134, 17,211,236,161,141, 70, 76, 64,229, 28,121,185, 19, 93,110, 33, 4, 42,244, 35,125,118,149,162,174, +209,213,182,120,248, 21,243,216,133, 32, 18,223, 60,122, 82,182, 59,135,190, 63, 67, 9, 13, 31, 3,250,126,196, 60,123,104,109, + 48, 78, 3, 42, 87,161,237,106,244,125, 79, 90,153,170, 33, 97,170, 15, 80, 82, 99,232,143, 72, 29,117,224,203,132,201,251, 64, + 33, 82, 49, 66, 10,178, 27,126,249,245, 59, 64, 74, 28, 79, 39,104, 99,208,237, 90,156,207, 71,244,195, 72, 19,145,202,225,124, + 58,113,183,222, 1, 73,176, 47,190,167,244, 70,165, 80, 85, 6, 62, 16,124,168, 63,159,113,183,223, 99, 24, 38,212, 85,133,166, +105,248, 9,154, 48,246, 3,118,109,135, 56, 79,240,222, 83,138,200, 50,161, 74,121, 21,211,242,243,252,248,212,195,186, 26,126, +158,104,186,208,214,168,155, 6, 31, 62, 60, 32,248,196, 77, 20,173, 62, 41, 63, 30,200, 62, 34, 99,194,211,233, 27,188,122,245, + 10,109,119,192,211,211, 83, 25,177,183, 66, 65, 65, 66, 27, 5,169,232, 94,170, 42, 71, 69,156,143, 8, 37, 26,149,206,186, 24, + 51,226,228, 9,199,237, 88, 92, 56,164,162,247,202, 12,198,194,133,170,157, 66,175,214,169,223,102,114,119,115,124,206,217, 3, + 25,208, 82,179,195,139, 68,223, 5,164,181, 85,192,167, 77,193,112, 35, 59, 98,105,102, 22,152,205, 34,168,219,158, 9,122, 81, +236, 45,249,198,207, 15, 18,113, 33,102, 91,143, 64,249,140,216, 86,252,194,155,142,120,213, 5,230, 2, 34,200, 92,241, 62, 75, +102,147, 43,133,108, 57,252, 47,196, 2, 41, 95,238, 20,202,168, 99,147, 43,203,163, 94,177, 1, 8, 16,215,217, 67, 73,194, 83, +230,156,105,244,211,237,240,234,238, 21,238, 15,175,209,214, 29,140, 34, 58,214,196,140,244, 8,129,164, 13,162,210, 16, 82, 35, + 75, 79,224, 24, 30, 19,105,165,129,196, 44,228, 44,200,187, 13,129,196, 9, 58, 98,243, 61,164,146, 21,176, 38, 46,229,205, 29, + 37, 56,180, 64,228, 85, 81,175,148,128, 89,114,213,181,128,179, 10, 86, 47,126,122,135,160, 3, 82, 92,166, 29, 64,237, 20,106, +103,113,104, 26,220,117, 21,186, 90,160,173, 37,190,122,154,240,215,191,249, 7,252,211,215, 15, 0, 28, 20, 12, 63,148,236, 25, +102,232, 72, 6,144,132, 66, 18, 26, 89, 82, 72, 70, 81,130,230, 76,162, 27,102,220, 47,237,116, 73, 89,203, 52, 46, 79, 27,144, +201,114,185, 62,183, 68, 45, 74,207,197, 20,191,226, 96,243,162,131,120, 14, 92,228, 46, 50,223, 12, 11, 16,183, 12,239, 92, 20, + 94, 60, 39, 23,228,227,124,165,200, 95, 45, 91,105, 83,223, 62,191,100,243,205, 48,151,242, 33,204,249,217,222,253, 37,133,186, +184,170,192,183,106,215, 63,180,219,191, 41, 72,205,219, 85, 25,158, 57, 1,138, 95, 65, 94,254,153,109, 32,211, 51,239,221, 38, + 91, 90, 73, 34,176, 73,100,116, 77, 67, 83, 28,145,177,107, 26, 40, 33, 49, 7,143,148, 51,180, 54, 16, 16,232,118, 59,136,144, + 16,166, 10,201, 75, 74, 63, 75, 25, 70, 41,140,209, 67, 43, 26, 57,143,243, 12, 87,213,152, 38, 18,225, 85, 85,117, 1, 51,105, +234, 26,231,211, 80,128, 56,174,114,136,137, 82,191,162,212, 24,115,134,171,118,152, 92,141,119, 79, 79, 16, 41, 98,158,158, 80, + 87,150, 97, 52,158,186, 65, 73,185,221, 57, 3, 31,169, 26, 15,167, 1,187,195, 1,167,254, 4,203, 86,167,143,222,124,132,199, +199, 71, 8, 65,161, 77,149,179, 24,199,177, 76,107,172, 49,144, 25,136,222, 67, 8,130, 60, 77,211, 72,138,240, 24,160,164,129, +207, 17, 90, 74,184,174,197,251,247, 31,144, 17,209,117, 29,218,166, 69,223,159, 49, 14, 51,159, 79, 9,211, 72,177,169,222, 7, +218,201, 75, 26,185,183, 59, 11, 35, 21,225,164, 51,193,125,168, 8,144, 56, 30, 79,184,187,187,131, 86, 10,206,209, 36,192, 24, +139, 24, 3,222,188,190,195,249,220, 99,156, 6,196,254,140,221,110,135,195,221, 1,179,247,168,172, 65, 76, 17, 77,219,224,241, +225, 17,167,211, 9,187,221, 30,199,167, 39,236,186, 22, 79,167, 19, 98,152, 81, 85, 22, 38,145,142,103, 26, 38,138, 58,157, 41, +219, 61, 42,129,182,171,161,148,196,135,135, 71, 52,181,195,235, 55,247,120,122,124, 66, 96,235, 25,216, 37,163, 89,152, 38, 57, +105, 76,164,132,111,190,122, 7, 87, 17, 16,231,124,238,225, 92,133,187,187,123,244,253,128,105, 28, 33, 18,107,189, 4, 21, 8, + 41,102, 42, 72,132,192,239,166, 47,241,217,103,159,225,241,241, 9, 66,104, 10,110, 25, 70,238,206, 37, 19,236, 42, 8, 72,204, + 35,145, 2, 67,138,101, 90,155, 98, 4, 88,120, 25,125, 64, 72,129,131,118,214,194, 93,109,181, 62,130, 18,208, 66, 76,197,135, +127,113,134, 45,154, 29, 78,193,139,156,234,185, 6,198,208,189, 33,243,186, 2, 72,200,197, 77,179,101,101, 72, 33,159,157, 31, +219,253,123,105,162, 10,243, 61, 93,172,187,245, 82,171, 3,107,146,204, 31,242,127,139, 71, 56,149, 46,235,114,151,120,121,248, +164,165, 31,227, 23,159,110,140, 24,183,140,240,203,113,237,242,123, 35, 82, 17,208, 45,164,221,141,255,134, 42,254,156,150, 92, + 17, 62,160, 36,139, 83, 44, 32, 36,148,116,232,186, 22,159,126,242, 6,111,238,239,208,214, 13,180, 52, 44, 62, 35, 79, 99,200, +177, 16,138,178, 16,196, 5,230,181,138,135, 32, 90, 92,230,157, 43, 36, 87,114, 18, 57, 83,156,100,222,192, 0,176, 73,221, 33, +242, 90,102,176, 71, 42,128,135,188, 89,218, 82, 37,151,120, 7,159,161, 53, 96,173,132,213, 18, 86, 43,180,149, 35,254,244, 28, + 48, 7,129,152, 4,180,208, 48,202,160,173, 12,106, 39,112,215, 25,188,234, 52,106,165,240, 56, 78,248,155,127,250, 29,254,250, +239,254, 9, 71, 40, 84,210, 66,102, 5,176,219, 97,249, 22, 18, 36,162, 32,104, 78,148, 2, 65, 10, 68, 41,217,251,184,170,197, +133,204, 64,204, 60,198,221,178,203,169, 3, 84, 5,170,194, 36, 56,206, 64, 7,103,119, 39,134, 12, 9,200,194, 36, 95,187,213, +244, 7,171,187,159, 67, 92,182,224, 33,108, 52, 30, 40, 58,138,114,113,149, 76,119,121,177,255, 23, 69,101, 47, 46,120,240, 91, +245,235,181,146,126,153, 54,164, 18, 58,115,107,199,118, 27, 32,113,253,253,172,163,125, 60, 91, 99,125, 87,167, 46,110, 8,123, +150,162, 33, 67,220,102, 53,240, 39,243, 15, 81,216, 11, 78,202, 91,166, 9,137, 97, 38,164,194, 38, 12,113,187,111, 72, 64, 23, +124,201,169,182,138, 60,208, 41,101, 36,239,161,148,130, 83, 21, 82,140,152,199, 9,109, 83, 35, 14, 25,253,241,132,174,221, 33, + 71,178,196, 85, 85,133,105,154,138,170,251,226,125,202, 11,226,147, 4, 84,117, 83,177,199,158,148,173,170,170, 49, 75,139, 73, +104, 40,109,144,133, 66, 98, 17, 93, 72,134,168,114, 18, 8, 41,194, 85, 21,166, 24, 81, 53, 13,193, 59,164,194,253,225, 30, 49, + 68,244,231,115, 57,160,207,231, 19,239,170, 41, 52, 70,179, 35,166,114, 14, 97,158,145, 66,128,177, 26, 66,211,161,110,117,131, + 20, 19,186,182,129,200, 25,253,233,132, 20, 2, 38,239, 81, 89, 74, 88,203, 49, 97,191,235, 96, 93,197,176,154, 9, 49,100,124, +120,122, 64,211, 82,170, 90,211, 52,116,241,131,242,200, 67,240, 23, 63,167,148, 18, 30, 30, 31,208,181, 59,140, 19, 21, 28,174, +114,120,122,124,192,253,221, 29,154,218, 33,196,136,119,239, 31, 49,142, 35, 50, 18,246,187, 22, 33, 4, 56,199, 90, 6,235,240, +254,195, 3, 62,251,172,227, 44,246,204, 59,251, 25,167,115, 15, 8,202,146, 80,175,239,145, 56,173,109,158, 61,219, 62, 21,234, +214, 66,233, 61,198,113,128,214, 13,108,229,144,167, 25,218,104,132, 16, 81,213, 21,162, 15,152,166,137,253,228,170, 80, 62,251, +126,228,103, 51, 33,132, 30, 49, 36,236,186, 29,105, 55, 60,105, 33,132, 16,176,150,244, 8,167,211,169, 60,147,239,223,191,199, +126,191,199,185, 31,161,180,129, 4, 21, 61,195, 56,226,120,242,168,157,195,253,221, 29,172,213, 24,231, 25,134,167,122, 57, 69, + 32,210,228,176,144, 47, 3,115, 55,202, 52, 79,172, 49,219,124,209, 10, 41, 81,105,162, 17, 26,109, 24, 32, 52, 33,166,120, 1, +147,108,154, 6,211, 56,144,232, 47, 46, 94,120, 73,121, 84, 49,173,147,104, 6,120, 81,115,180,218,255,178,196,119, 10, 98, 95, +226, 83, 0,128, 46, 18,215,151,228,185, 89,124,235,161, 42,144, 87,214,118, 94,199,229,164, 0, 38,197, 55,141,251, 82,185, 96, +111,119, 34,171,173,232,178,250, 17,151, 9, 92, 75,215,184,177, 24,209,232, 99,237, 12,137, 87,189, 76, 19, 52,132,178,184,127, +245, 17,222,124,252, 41, 42,215,160,171, 44,246,141, 67,173, 8, 79, 59,207, 30, 72,180,111, 73, 41, 81,215, 17, 61, 66, 32,161, + 77, 76,203,248, 88, 34, 36, 65, 17,164,130,176,129, 74,202,181, 96, 17, 2, 73, 10,100,149,203,228, 67,172, 11,221,226,157,132, +164,223, 47, 5, 85, 11, 66, 0, 72, 1, 82,228,178, 75,150, 82,192, 24, 1,163, 5,172, 86,208,138, 46,117,163, 5,180, 50, 20, +140,145, 51,146, 82,176, 90,163,182, 14,251,186,194,161,145,104,235,140,166,210, 24, 39,129,255,250,197,123,252,229, 95,255, 61, +190, 60, 37,104, 83,193, 41,205,106,123,137,196,200, 85, 37, 20, 19,227, 36, 29,128,146,254,123, 92, 46,185,141,208,109, 29,211, +230,117,123,190,161,201,109, 25,105,203, 52,103,177, 83,197,226,243,220,248, 51,243,170, 50,200,215,241,125,207,198,222, 47, 92, + 60,203,123, 44,197,102, 58,179, 22,136,249,134,208, 19, 76,157,218,238,185,182,188,118,154, 38,228, 13,111,254,165,130, 98, 3, +156,217,210,211,175,254,220,183, 41,215,111,117,218,207,252,239,215, 58,149, 27, 23,251,229,133,254, 18, 3,254, 59,148,186,155, +116,168,103, 83,134,133,128,184,140, 33, 3,117, 99,185, 31,161,148, 64, 93, 57, 82, 77, 67,192,185, 10,195, 56,163,169, 43, 86, + 82, 75, 40,109, 48,132, 35,164, 86,176,214,162, 31, 6,232, 24, 97,164,194, 28,105,199,108,180,193, 48,142,232,218, 22,187,221, +110,221, 61, 79, 83,241,239, 58,107, 88, 84, 22,113, 60, 29,137,163,174, 4,156,115, 80, 86, 33,198, 0,228,132,186, 98, 71, 71, + 50,152, 39, 10,114, 81,202,176, 96, 16, 48,174, 42,197, 91,215,117, 56,157,123,238,188, 3,158, 30, 31,225, 39, 34,156,249,201, +195, 58,131,202, 90,228, 24,161,165, 96, 0, 21, 16,230,169,144, 40, 21, 67,118,180, 49,200,137, 16,168,218, 24,248,121, 34, 17, +161,100,236, 42,115,219,165, 32,225, 45,249,174, 35, 77, 62,164,129, 20, 6, 67, 63, 51, 67,159, 10,169,190,239, 49, 14, 19,238, + 14,123,186, 0,189,199,227,227, 7,188,126,243,138,186,216,144,120,212, 28,153, 19, 0, 24, 45,209,182, 7,244,231, 1, 90, 91, + 60, 29, 79,232,186, 22,143,143,143,184,219,239,225,125, 64,211, 52,216,239, 53,132, 56,226,155,111,190,194,231,159,125, 31,125, + 63,192, 24,137,105,206,216,239, 90, 12,211,140,156, 87, 61, 77,219,182, 56,247, 71, 0, 21,140,105, 48,244,103,184,202, 65,204, +228,144,144, 10, 69,229, 47, 68, 44,248,217,251,251, 59, 60, 60, 60,174, 69,225,178, 10, 90,166,176, 73, 96, 26,166, 50,201,115, +206, 1,115, 96, 40, 15, 61,251,119,119,119, 56,157,206,228, 60, 72, 9,167,211, 9,227, 28, 24,255,107,160,148, 70, 37, 37,246, + 31,127, 12, 37, 5,134, 19,129,120,154,166,194,185, 31, 72,139, 48,209,248, 27,155,213, 95, 74,180, 94, 45,235,100,198, 74,107, +126,230, 98, 14, 16, 81,192, 89, 9,103, 29,198,113,160,216,222, 2, 87,203,108,103, 4,156,213,232,154,123, 12,253, 25,199,211, +185, 52,121,129,207,201,229,242, 78, 66,148, 80,176, 91,141,192, 75,197,246,197, 25,112, 99,146,167,106,183,170,223,243,133,229, + 72, 20,202,153,192,115,223,156, 84,162,140,246,228, 70, 88,176, 0, 38,197,166,139, 66, 78, 23,251,210,231, 35,210,203, 17,126, + 81,174, 95, 77, 0,115, 17, 67,109,132, 73, 27,143,114,102, 86,110, 74, 18, 82, 54,112,213, 1, 31,127,242, 99,252,233,191,249, + 15,248,243, 95,253,247,248,252,135,127,140,195,225, 21,180, 50, 80, 66, 66,166,132,232, 35, 89, 74,152,151, 30, 34, 71, 54,206, +148,175,236,163, 71, 12,158,211,123,136,173, 62,230,128,196,197,140,102,155,156, 84, 2, 89, 74, 68, 41, 49, 49, 35, 62, 95,160, + 70,175,178,226,133, 96, 69,237,134,130, 39,105,111,110,132, 64,101, 52,246,149,197,161,117,104,172, 64, 99, 20, 26,103,161, 57, +227,152,186, 98, 9,103, 12,154,198,226,208, 85,120,211,213,184,115, 18, 77,109,112,138, 10,255,245, 95, 30,241,151,127,251,123, +252,237,151, 39,204,217,194, 10, 13,195,197,131,103, 53, 3, 36,125, 15, 16,146, 32, 51, 66, 33, 40,131, 36,117,153,175, 72,185, +128, 85,200,126,151,211,218,185,138,141,102, 32, 95,128, 93, 4,115,221, 21,225,124, 88, 13, 75, 34,156, 27,164,185,188,250,210, +183,246,176,109,234,217,210, 49,223,178, 74, 46,190,255, 45,148,166, 92,122, 57,179, 88, 76,172, 57, 0, 55, 56,142,151, 89,233, +114, 93,141,108, 58,243,111,227,173,131,247,212,133, 44,117, 33,178,123, 62,134, 47,164, 45, 41,111,119,199,226,187, 9,115,226, +102,128,196,154,173,188,242,183,111, 81, 30, 55, 89,206,216, 36, 42,190,116,241,243, 23, 85, 90,195, 48, 76, 68, 74,130,127,236, +247, 29,156,213, 68, 75,227, 92,115,173, 12,170,170,134, 20, 18,206, 57, 28, 79, 39,132, 28, 48,251,153,249,232, 19, 92, 93,195, +231, 8, 99, 45,192,144,146,115,191,236,121, 27, 86,112, 7,140,227, 64, 40, 89, 41,209,214, 45,238,238,238, 49, 14, 35,124,140, + 80, 74,147,240,206, 57,140,195,136, 24, 3,140, 86,232,154, 26, 49, 70, 74, 5, 99,174,129,226, 29,125,240,129, 14,101, 80, 50, +154,117, 6,200, 9,175, 95,221, 67,230,140,121, 36, 6,252,110,191,195, 60,141, 48,138,131, 86,216,231,127,216,237,160, 36, 69, +201, 26, 77, 16, 29,145, 65,214, 48, 73, 20, 56,103, 12,221, 13,145,180, 23,137,115,220,231,121,198, 52,207, 20,140,162, 53,137, +207, 64,130, 58,239, 41,101, 45,103, 96,215,237, 48,207, 30,243, 52,243,101, 68, 54, 60,103, 41,240,133,236,181,116, 33,146,229, +207, 32,198,136,190,239,241,225,195, 3,172, 37,242, 92, 93,215,168,170, 10, 31, 62, 60, 64, 8, 80,186,217, 68, 98, 61,173, 53, + 79,179, 72, 4, 9,182, 44, 46,151, 71,136,212, 97,187,202, 17,225,111,158,160,148,194, 52, 17,175, 30,137,232,130, 31, 62, 60, +162,174, 27,212, 77, 77,221,184, 82,120,124,122, 34,155, 31, 4,234,170, 66,140,153,197,121,171,126, 5, 28,244, 35, 75, 17, 46, +138,163,104,158, 3, 14,135, 61, 71,223, 18,207,221, 90,131,195, 97,143,211,249,180,102,199, 51, 91,160,170,200,203, 14, 1,124, +253,245, 87,168, 44, 65,185,132, 16,232,207, 3,164,214, 48, 90,226,238,238, 30,135,195, 30,198,145,101,208,251, 64,133, 7,127, + 22, 67, 76,229,179,159,175,206,155,133,186, 42,121, 34, 37,132,128,230,247,217,114,236,237, 52,141,184,187, 59,160,170, 28, 77, +164,102,198, 32, 11, 73, 5,231, 38,162,123,171, 31, 75, 91, 29,204, 11,110,151,103,104,232,171,232,214, 98,105, 35,148, 99,186, +216, 97,111, 3, 88,174,129, 27,148,205,190,249, 6,153,108,180, 8,224,196,118,159,183,246, 61, 23,168,208, 69,105,188,205,147, +151,203, 78,125,195,128,223,142,251, 5,199,160,138,188, 46,204, 23, 92,225, 34, 90,203, 80,248,244,211,159,226,143,255,228, 87, +248,147, 63,253,239,240,179, 95,254, 91,124,250,217, 31, 65,219, 3,134, 9, 56,159, 78,152,230, 17,126, 26,145,252,140,196,136, + 65, 31, 72,149, 58,251,153,246, 33, 33,148, 16,129, 24, 60, 4,167,173,249,148, 16, 56, 45, 78, 73, 58, 32,150,254, 52, 9,129, + 40, 5, 60,239,214,179, 88, 45, 82, 75, 82, 79,209, 13,108,139,146,204,244, 60, 65,248, 89, 45,128, 90,107,236,107, 71,234,119, +107,208, 57,131,218, 25, 88,165,139, 32,209, 25,139, 93,211,160,107, 12,186, 70,163,179, 18,181,209,232, 61,240,159,191,248,128, +255,253, 55, 95,226, 95, 39, 11,209,188, 65,156, 5,108, 10,176, 34, 32, 32, 97, 2, 16, 50,129,113,140, 32, 4,110,148,100, 99, +139,210, 20,224,204,178,118, 93,104,105, 57,130,146,174,174, 30, 50, 18, 2,198, 18, 92,160, 4,233, 16,132,176, 48,166,129,115, + 77, 65, 83, 46,112,140,103, 59,102,185, 66,102, 74, 71,143,181,128, 88, 94,131,220,122,210,175,124,221,242,150, 45, 83,228, 34, +242,195,173, 93,189, 96, 26, 97,217,103, 47, 98,191,231, 43,162, 91, 19,130,148, 50,112,253,191, 99, 11, 81,146, 47, 42,217,111, +117,218, 47, 23, 13,183, 71,237, 55,161, 51,121,197,220,110,119,210,184,242,200,230,235, 16,153,111,217,229, 47, 88, 77, 41, 36, +124,240,197,226,216, 52, 53,148,209,133,230,104, 12,229,126, 59,235, 16, 67,196,221,221, 61,142,231, 19,230,228, 89,216,153,160, +165, 34,187, 90, 83, 35,114, 74,225, 56,207,128,162, 12,131, 69,252, 84, 85, 14, 33,120,236,246, 59,212, 77,141,121,158, 16, 66, +194,187,119,239,105,132, 92, 85,152, 61,117,196, 74,107,138,210,228, 48,153,113,246,132, 60,102,218, 91, 18,148,188, 54, 79, 51, +140, 82,208,114,137,255,204,120,243,234, 30,231,227, 17,109, 93,227,248,116,132, 20, 2,109,215, 97, 28, 7,248,121,230,103, 87, +209,186,206, 16,148,197, 57, 7,173, 36,206,231, 51, 20,239,154,157,181,100, 89, 10, 1, 90, 40, 68, 63, 35,248, 8,164,204,208, + 27,138, 94,157,167, 25,109,219, 98,154,105, 2,209,247, 3,219,240,200,163,221,247, 67,177,157,157,207, 61, 34,239,114,105,122, +148,202, 37, 94, 87, 13, 20,231,111, 47,159,169,186,166, 61,119, 8,164, 10,159,231, 25, 16,244,243,168,156,133,209, 6, 15, 15, +143,168,170, 10,138, 49,174,228,101, 31, 16, 67, 36,219,155, 64, 81,210, 39, 6,212,144,135,156, 62,139, 85, 85, 97, 28, 72, 56, + 88, 87, 13, 82, 4,180,162,130,172,235, 58,248,224, 1, 1,140, 35,217, 26, 83,202,168,107, 98,175,151, 8,209, 98,141, 94,218, + 64,254, 12,107, 85, 8,117,125, 63,160,105, 26, 24, 77,207,196, 60, 79, 80,154,114,214,199,113,196, 52,205,104,154, 22,211, 28, + 48,140, 35,101, 7,180, 13, 94,191,122, 69, 77,152,159,145,114,132,171, 44, 5,215,176,251, 96,222,116,247,117, 93,193, 90, 90, + 17,209,251, 76, 22, 79,107,233,189,202,200, 43,181, 46,165,226, 6, 16, 82, 20, 52,235,221,253, 61,132, 16,152,103,114, 20, 76, +195,136,174,109,168,136,145, 2,243, 28, 56,169, 79, 82,215,191, 61, 75,132, 88, 45,157, 27,152,204,246,140, 88,126,182, 37,151, + 29, 47,103,173,172,150, 54,220, 78,104,147, 16, 20,205,121,113, 40, 60, 7,203,139,141,178,253,150,249, 94, 93,154,149, 54,161, + 25,107,190,118, 73,168,219,236, 43,159, 35, 97,177,250,134, 47,178,173,105,116,248,250,254, 83,252,183,255,254,127,192, 47,255, +248, 87,112,245, 43, 68,105, 49,204, 1,143,143, 39, 28, 79, 61, 98,244,152,231, 1,211,120, 70,140, 51, 98,152, 8,238, 16, 3, +119,230, 20, 16,144,249, 66,247,209, 35, 49,245, 40,231,140, 57, 39, 68,222,225, 75,161, 86,187,220, 50, 37,144, 10,203,214, 24, + 28, 5,187, 22, 47,220, 41,110,183, 9,188, 46, 88, 26, 77, 9, 34,218,213,206,161,171, 12,246, 13,253,251,110, 87,227,126,223, + 65, 49, 53,201,104,141,166,118,216, 53, 14,187,206,162,118, 10,214, 40, 76, 73,225,111,254,229, 61,254,242,191,252, 51,126,253, +246,132,115, 54, 48,166,129, 85, 26, 26,145,226,107,165,132, 23, 10, 1,160,195, 13,130,176,176, 66,194, 67,193, 11,137, 36, 53, +143,160, 56, 21, 45, 3, 57,201,210,165,167,148, 47, 40,120,139, 64,196, 89,135,202, 90,220, 29, 14,104,155, 14, 77,219, 97,215, + 29,112, 56, 28,176,235, 90,180,109, 13,235, 40,115,154,130, 26, 54,227,115,145, 55,200,214,181,203, 78, 27, 1,154,200,151,184, +225, 91,157,170,188, 64,210, 46, 81, 75,121, 51, 21,184,125, 25,138, 11, 97,140,188,250,109,226,217,165,190,166, 44,173,194,199, +242, 51,190, 82,234, 63,203, 98, 23,223,238, 75,127,105,151,190,173,200,175,199,233, 23,164,169, 77, 97, 36,197,183, 20, 4,242, +234, 53,228, 23, 88, 21,235, 64,137,244, 20,203,212,140,230,219,196, 39,175,107, 8,173, 89, 49, 76, 11,251,218,145,245,233,253, +135, 15,152,194,140, 44, 51,118, 93, 75,222,237, 24, 97,156, 69, 22, 11,162, 85,241,225, 70, 57,220, 33,132,146, 18,118, 58,159, +161,141,230,215,205,217,210,124, 25,229, 76, 66, 44,197, 69, 63,144,145, 66, 44, 69,247,241,248,196, 28,244, 0,107, 52, 21,196, +214, 80,177, 46,232,178,121,243,250, 53,188,247, 56, 30,143, 56,159,123,116,109,135,227,211, 19,198, 97, 36,203, 42, 23,221, 49, + 6, 4,239,113, 62,157, 33,244,234,102, 81, 76,224, 75, 41, 83,124, 40,107, 14,132, 92, 38, 91,228, 13, 87,108,123, 93,114,193, + 1,224,124, 30, 40,100,102, 14,152,103,154, 60, 80, 54,186, 47, 10,243,192,140,250,170,170, 49,142, 19,206,231, 30,231,243, 25, + 33, 4,212, 85, 93,118,235,198, 24, 52, 77, 67, 49,179, 44,228, 34,199,143, 40, 23,106,211, 52,133, 43, 96,173, 69,127, 62, 67, +105,133,182,107, 33, 0, 60, 60, 60, 96,183,219, 1, 16, 60,141, 97,159, 61,235, 28,170,170,198, 48, 76,232,218, 14,179,167, 73, +194,126,191,199,219,183,239,176,235,106, 46,240,201,219, 63, 77,212, 97, 23,106,158,179,155, 80,166, 75,244,234,242,134,164,196, + 12, 12,169, 10,139,127,154, 39, 74,215,155,102,132, 24, 80,215, 13,142,199, 19,217, 43, 3,217,236, 34,107, 45,230,217,227,116, +234, 17, 98, 64,215, 53, 80, 74, 32,165,128,170,169, 96, 93, 69,140, 17, 31,145, 64,133,138, 54,244, 44, 34,131, 87, 32,148, 73, +176,236, 75, 9,144,196,230, 53, 14, 77,137,153, 98,180,181, 50,240,222, 99,154, 70, 72, 37,177,235, 90, 14, 2,138,144, 66, 96, +191,223, 97,156, 38,196, 16, 41,106,152,167, 55, 82,210,251, 33,164, 42,119,230,194,146, 47,194,223,188, 54,128,219, 38,119,235, + 91, 23, 55, 86,111,124,169,199, 27,137, 51,107,167, 46,178, 40,172,104,136, 21,189,122,209, 25,240,254,252, 26, 1,190,118, 11, +185,160,102, 22,158,123,145,143, 45, 23,218, 21,231,246,154,144, 69,204,222, 92,172, 98,153,233,111, 82,208,174,229, 71,159,255, + 24, 63,248,236,103, 56, 28,190, 15,101, 14, 56, 15, 17, 15,199, 39,140, 83, 79,221,249, 60, 34,248, 25, 49,121,204,211, 25,243, +220,211,174, 40, 71,196,180,142,222, 99, 78, 72, 41, 32,164,132, 57,123,142, 28,205, 28,191,154,216,154,166, 86, 86,120,217,233, + 42,238, 6,228,230,189, 18, 23, 66,194, 5, 11, 92,104,101,121,237,146, 20,135,199, 88, 41, 81, 59,135,125, 99,113,191,175,241, +241,171, 3, 94,223,237,224,140, 68, 74, 20,227,216, 52, 21,218,174, 66,215, 89,116,149,131, 85,228,215,253,155,127,253, 10,255, +219,127,254,123,252,191,111,207, 56, 71, 96,158, 38,132,121, 42,227, 16,231, 28,148,169, 33,149, 99,240, 1,193,123, 18, 4,130, + 16,240,172,178, 77, 74,241,222,137,135,240, 73, 80, 98, 85,202, 72,129,199, 83, 87, 69,160, 18, 18, 77,229,240,241,155, 55,104, +170, 10, 90, 81,247,166, 88,201, 47,144, 96,140, 70,219,214,152,253,136, 97, 60,175, 52,177,197,203,126,117, 65,229,205,165,190, +160, 87,203, 74, 67, 94,142,166, 87,177,202,117,119,188, 93,174,139,103,129, 65, 91,164,237,114,169,175,200,199,252, 98,167, 94, +148,253,207, 18, 10,229,230,159,215,163,116,113, 49,114, 23, 87, 1, 13,183,168,112,223,166,118,127, 9,197, 44, 55,252,125, 1, +241, 98, 33,145,175, 69,123,249,133,221,123,198,133,102,128,188,235,228,235,117,214, 96,127,216, 65, 49, 30, 53,196, 4,173, 12, +250, 83,143,125,183,195,219,119,111, 49,135, 9, 80,128,182,228,175, 78,222,243,229,234, 48,135,128,105,158,161,150,220,113,173, +139,146,187,174,107, 12,195, 0, 41, 5, 38,102,142, 67, 8,124,255,251,223,227, 81, 46, 57, 69, 22,192,139,159, 39,132,105, 38, + 11,218, 68, 93, 98,142, 9,200,196, 74,175, 42, 11,196,136, 48,123, 52,109,131,251,215,247,164, 90,247, 30,179, 15,240,115,132, +177, 14,199,227,137,149,203,244,126, 89, 99, 56, 89,204, 35,204,180,231,119, 77, 69,118,169,113, 42, 68, 74, 2,219, 8,182,151, +133, 18,237, 41,165, 46, 0, 20,242, 66, 83, 87,215, 52, 59, 76, 19,185, 88,164, 36,247, 77, 85,213, 8,145, 46, 40, 26, 47,211, +212, 34,248, 0, 99, 12,134,158,217,250,108,233,213, 82, 81,148, 43,119,250,117, 77, 43,143,105,158,139,229,201,104,137,166,118, + 92,132, 16, 85, 45,240, 74,209, 57,135,121, 30,161,151, 61,127,164, 21,128,247, 51, 9,243, 50, 61,159,227, 52,161, 31, 38, 52, +236,118,200,153, 86, 23,231,211, 17,135, 67,139,105, 30, 32,181, 68, 85, 87, 28,142,147, 97,140,197, 48, 80,170,223, 60,123,222, +179,131,137,132,161,216,138, 47,116, 41, 98,117, 89,128, 1, 58,200, 96, 81, 38,239,246, 65,107,133,113, 28, 1,161, 96,152, 13, +144, 82,130, 84, 10,221,174,133,179,102, 5,144, 9,224, 60, 12,152, 67,160, 34,128, 65, 98, 57,101, 12, 67, 15,100,160,109,107, + 34,102,230, 68,212, 80,166, 89, 46,161, 68,130,173,208, 89,100,216,202, 65, 42, 18, 12, 46, 69,155, 15, 1,198, 16,173,110, 41, + 90,157, 99,244,238, 28,160,132,100, 81, 29,193,137,150,179, 76,105, 13,163, 77, 9,199, 81, 66,109, 56, 32,242, 98,101,120, 73, +113,205,151,147,193,109,167,190,152,238, 47,185,221, 98,123,173,111,198,197,249, 57, 96, 38, 95, 38, 90,149, 68,181,109, 45, 33, +214, 14,125,129,195,108, 3, 85, 10,244,131, 97, 23, 23,126,188,197,243,184,162,192, 8, 54,160, 13,238,238,238,241,147, 31,254, + 4, 63,255,233,207,240,163,207,126,140,251,187,143, 49, 79,192, 48, 5, 68, 0,195,120,198, 60,245, 8, 97, 68,240, 35,124,152, +224,249,130, 31,167, 1, 41,122,210,240,115,244, 95,140, 52, 30, 75, 49, 34,228,136,152, 99,241, 90,103,246, 35, 47,170,200, 37, + 67, 30, 66, 34,243,129,150,174,178,188, 69, 17, 16,202, 11,146,157,224, 64,155,237,250, 66, 73,218,165,215, 70, 98,215, 56,124, +116, 87,227,147, 55,148,186,230,180, 64,206, 30, 74, 10,116,109,141,174,171,177,107, 45,186, 70,192,217, 26, 33, 74,252,230,119, + 95,225, 63,253,223,127,139, 95,127,125,194, 57, 25,242,101, 70,170,148,179, 0,148, 81,208, 82,195, 89,135,186,106,208, 54, 13, +140, 18,252,128, 19,116, 38, 72,141,164, 53, 37,214, 72,122,128,229,162, 45,227,192,138, 5, 33,121,225, 62,200, 25,149,177,120, +115,255, 10,181,179,200, 41,192, 90, 10,152,216,237, 26,180,141, 67,229, 12,140,150,176, 86, 97,154, 7, 60, 29,159, 54,112, 25, +129, 91,195,223,173, 72, 46, 3, 23, 10,247,229,146, 20,151,209,233,235,235,202,249, 50, 63,224, 38,210,113,139,179, 68, 97, 68, +151, 78,159,109,136, 89, 60, 23,220, 45,191, 51,231, 53,150, 49,109, 46, 64, 81, 72,134,184, 0,225,220,180,166,229, 77,138,223, +141,162,246,187, 4,118,207, 70,241, 88,127, 62,219, 29,251,133,215, 95,108, 83,167,242,139, 23,255,242,249, 93, 56, 11, 88,132, +169,228,245, 64,195, 89,222,209, 71,120, 31, 33,161,225,135,128,251,221, 1,211, 52, 32,102,202,209,150, 74, 98, 24, 79, 56,116, + 59,120, 86,118, 47, 22,165, 20,137, 76, 22, 35,253, 94,193,197, 32,241,230, 53, 59, 47,248, 34, 64,198, 52, 79, 48, 70,179,154, +154, 29, 15, 41, 82, 42, 89,221, 32, 39, 64, 41, 77,246,174, 68,176, 27,109, 52,134,129, 60,225,198, 26,236,247,123, 98,133,167, + 4,101, 52,142,167, 19,148, 50, 56, 62,157,169,235, 7,137,189, 36,125,113,130,188, 44, 81,166, 57,195, 88, 75,133, 69,166, 61, +251, 50, 62, 93,222,211,162,102,206,224,221,181, 44,187,211,229, 49, 49,166,194, 60, 71,194,156, 50,169,101,154,102, 26,179,130, +206, 24,234,244,136,119,190,192,142,144, 19,172,177,164,255,225, 46, 61,241,197,167,148,102, 22, 7,217,199,102,239, 73, 36, 40, + 73,228,101,172,197, 56,141,168, 42,242,222, 43, 45, 75,218,217,174,219,225,124,238, 33,165, 66,221,212,240,115, 96, 24,206, 64, + 58, 34,169, 48,142, 51, 4,232,103, 85, 55, 14,117,109, 33, 36, 8,107,203,246,188,182,233,240,238,253, 7, 56,231, 80,213, 53, + 17,223,148,198, 56,142,240,193, 83,152, 13,143,177,169,224, 95,132,231,236, 86, 50,154, 67,130,116,105, 34,115, 78,208, 11,176, + 40,103, 66,230,178, 56, 49,196, 64,182, 72,231, 48, 77, 51,206,167, 51,114, 78, 28, 95,187,120,215, 21,133,187,112,193,174,148, + 66, 93,215,212,172,112, 58, 92, 74, 1, 49,103,212, 77, 67, 88, 89,165,233,110,148,121, 45, 28,248,189, 18,155,224, 21,122, 70, +129,121, 34,113,232,174,109,169,144,241, 51, 77,187, 21,133, 26, 81,126,150, 88,215,209,156, 25,144, 22,209,245,146,228,150,113, +161, 61, 16, 82,188, 44,174,189,250,172,242, 78, 61,150,253,248,179,157, 95, 89,162, 47,144, 25,193,224,138,213,244,190, 36,196, +136,107, 58, 40, 54,144, 25, 78, 53,226,192, 50, 6, 97,172,216,206,173, 8, 78, 20, 63,159, 92, 77,253, 82, 34, 39,234, 6,181, +208,184,223,223,225,167, 63,248, 17,126,249,211,159,227, 39, 63,248, 9,222,220,191, 65,101, 42, 72, 0, 62,206, 24,167, 30, 89, + 68,196, 24, 48,244,103,218,143,251, 9, 49, 12, 8,243, 80, 66, 9,188, 15, 96, 67, 33,114,242, 72,193,115,194, 18, 41, 30, 99, +140,200, 16,136, 72, 69,180, 69,227,163,188, 70,124, 10, 65,221,185,148, 69,133, 15,169,152,101, 47,203,135,115,157, 52,139,178, + 67,144, 82, 48,226, 85,194, 42,129,198, 72,180, 78, 96,223, 40,220,181,100, 83,163, 72,227,128,218, 25, 28,246, 20,169,186,107, + 29,118,181,134,179, 9, 30, 26,127,255,251, 71,252,167,255,235, 55,248,127,254,233, 27,140,170,129,135, 70,140,203,126,159,254, +188,145,128, 83,196,148,175,140, 70,101, 29,172,164, 14, 68,104,139, 36, 53, 2,128,188,236,211,249,146, 90,196, 65,197,114,181, + 68,139,178,182, 32, 75,130,226,116,109,141,174,169, 8, 64, 82, 59,236,118, 13,132, 0,180, 18,156, 34,149, 33, 68,194,174,163, +241,223,215,223,188, 69, 90, 92, 10,137,198,117,151,173, 97, 90,129, 54,219, 16,160, 11,193,123, 46,228,186,117,212,206,127,110, +153, 52,108, 98, 68,215,137,209,178, 10, 89, 43,130,180,241,235, 47,112, 29, 48,211,127,185,207, 50, 19,242, 22, 97, 96,222,114, + 34, 51,158,177,235,175, 95,219,182, 72, 89, 14,253,197,166, 89, 58,131, 2, 88,186, 97,118, 7,190, 83,176, 39, 54,110,128, 98, + 83, 21,155,181,213,178, 10, 16,107,149, 47,243,202,165,190,117,169, 39, 65,207,132,202, 27,244,165, 0, 20, 18,238,246,123,156, + 79, 71,254, 51, 26,141,221, 97,111,106,252,248,243,239,227,155,135,175, 16, 36, 89, 81,179,247,164,202, 86, 26,167,126, 96, 42, + 35, 29,206,243, 52, 22,192,148, 20, 2, 66,177, 24, 23, 25,198, 26, 42, 26, 34, 65, 80,134,115,143,148,129,186,174, 17, 2,133, +165,104,173, 49,251,128,211,121, 64, 91,119,232,218, 22,167,243, 25,231,243, 25,198,104,156,207,103,130,162, 4,186,152,238,238, +247,152,166, 17,243, 56,194, 79, 51,172,177,120,122, 58, 65,102,137, 48,121, 56, 99,105,130, 21, 2,156,179, 80, 82,144, 3,197, + 88,204, 19, 77, 21,140,210,136, 33, 34,250,128,182,105, 80,215,180,223,151, 90,195, 53,212,109, 43,166,134,209, 57, 66,151,187, + 15,177,236,144,165,210,152,226, 12, 31, 3,172, 35, 52,108,140, 17, 41, 4,136,156,225,167,137,206,159,152, 10,133, 19,130,176, +182, 33,121, 36,100,190,164, 3,140,182,232,251, 17,187,253, 30,199,211, 35,132, 18, 48,206, 80,250, 29, 76,185,160, 93,229,240, +225,195, 7,230,161, 43,140,126,130,171, 44, 82,160,200,218,199,167, 35,124,136, 56, 28,238, 32, 69, 70,140, 30,117, 93,177,162, + 93,227,155,175, 63,160,235,118,208,154,248, 31,218, 16, 59,227,155,111, 62,224,254,254, 14, 18, 18,117,229, 48,246, 61, 37,191, +241,115,223, 46, 97, 48,145,126, 85,141,163,176, 27, 77,194,101,197, 65, 64, 49,120,228, 20, 97, 52, 77, 32,180,209, 80,154, 10, + 60,169, 21,113,230, 39,138,217, 53,214,160,237, 26, 8,201,241,190, 41, 97,223,117,152,167,137,109,202,137,200,134, 33,208,234, +100, 14,100, 1, 54, 14, 49, 4,196, 16, 97,173, 70, 22, 68, 76, 84,134,236,205,193,211, 29,160,180,130,173, 12, 65,146, 50,191, + 38, 37,214,207, 74,206,200, 49,195,104,138, 30, 86,156,232,104,157, 33,189,149, 72,220,253,103, 84,117,133,204,147, 45,145, 1, +167, 45,196, 98,107, 99, 33,165, 42,193, 86, 75,177, 30, 33,182,209,176,215,193, 46, 87,232,118, 1,177,189,212, 47,125,111,219, +221,218, 18, 52, 81, 84,186, 34,221, 76,150, 17, 87,123, 68,185,157,251,111,186, 43,145, 55,162, 60,145, 55,136, 79,177, 65,103, +230,149, 5,207,223,149,202, 2,119,221, 30, 63,250,236,135,248,229,207,126,129,159,124,254, 67,188,185,127, 77, 42,211, 76, 34, +169, 37, 62,113,156,103, 76, 51,135, 57,248, 17,126,158,225,195,132, 24,102,120, 63, 35, 38,250,240, 68,239,145,210, 12, 41, 18, +114,244, 60,138, 79,108, 99, 88,162, 8, 3,143,206,150, 28,224, 92, 4, 80,101,210,176,101,206,131, 70,130,114, 73,252, 18, 75, +244, 44,113,157,149,226,139, 30,138,118,238,130,162, 23,141, 20,168,141, 68,227, 20,156, 76,208, 50, 66, 33,162,118, 10,251,174, +194,221,190,198,253,161,193,174,171,209, 52, 14,150,133, 44,255,250,213, 3,254,143,191,250, 53,254,203, 63,252, 14,167, 32,144, +140, 99,122,146,100,230, 89,134,226, 8, 89,103, 52,165,104, 73, 69, 2, 27, 86,108,219,186, 65, 85, 55,208,198,113,164,100, 94, +139, 50,254, 41,134, 68,135, 81,233, 22, 54, 30, 55, 45, 5, 14,135, 61, 37, 77, 41,137,221,174, 67, 78,192, 56,244, 56,159, 79, +232,135, 30,227,120, 70,152, 39, 84,149,197, 28, 2,190,126,251,150,138,201, 69,140, 41,215, 7,122,173, 12, 5,103, 88,231, 21, +207, 88, 58,116,222,105,202,149, 91, 32,128,219, 57, 4, 23,115, 35,241,204,132, 81,242,147, 55,114,186,197,199,158, 64,214,147, +117, 62,141,146,201,190, 77,122,187,230, 45,136, 43, 43,220, 75, 80,153,173,253, 46,110, 39,102, 23,144,165,111, 79, 61,124,105, +183,126,105, 67, 20, 23,157,228, 82,226,228,205,170,224,165, 78, 93,101, 82, 73, 70,174,135, 84,230, 95, 90, 66,114,174,122, 87, +181,168,235, 22, 90, 43, 88, 9,212,181,196,135,227, 55,136, 34, 33,228, 4, 31, 35, 62,249,248, 99, 2,155, 48, 95, 92,106,194, + 77, 43, 41, 8, 1,106,200, 71, 30,137,170, 84,118,235,206, 57,164, 68,156,243,211,233, 8,163, 53, 94,189,126, 77, 74,119, 14, + 92,202, 16, 56,157,122,138, 32,173, 27,188,123,247, 14, 82, 73,132,156, 48,205, 19,237,240,173,193,235,215,175,113, 58,158, 48, +143, 35, 89, 89, 61, 29,238, 70,107,200, 44,248,146,110, 49,249, 0,109, 45,171,175, 35,164,210, 72, 16, 24,231, 0,173, 13,172, + 51,180, 66, 66,226,120, 84, 82,244, 75, 37,169, 9,136, 28,126,196, 48,163, 37, 10, 53,196, 64,249, 13,137,166, 18, 11,126, 57, +120, 95, 46, 26, 37, 37, 32,152, 24,198,207,164,146, 52,229,164,203,131,170,202,182,110, 41, 83, 79,107, 40, 69, 14, 0,235, 28, +142,167, 39,156,142, 39,120,159,208,182, 7,140,227,196,175, 39, 22,212,234,216,143,112,117, 5, 8, 74, 47, 75, 33, 65,107, 10, + 62, 57,157,142,196,231,103, 29,131, 53,142,203,108, 42, 48, 62,124,248,192, 35,240, 10, 33,122, 88, 77, 58,128,243,208, 99,191, + 35,161,221,225,176, 71, 63,246, 68,242, 11, 1, 82, 72,210, 93, 64,160, 31, 39, 18, 93, 66,146, 11, 64, 17, 83,192, 88, 3, 63, +123,154, 30, 70,234,108,181, 38,176,142, 49,134, 72,131, 66,194, 57,110, 70, 36, 96,172,129,181,150,138, 47, 69, 10,243,166,169, +139,184,111,156, 38, 88, 75, 78, 13, 74,215, 4, 35,131, 3, 54,149, 18,250,126,224, 96, 24, 96,230, 32,160, 24, 72,107, 37, 0, + 88,103,121,237,176, 96,142, 29,233, 18,120, 66, 51,142, 35,140,214, 4, 13, 51, 26, 57, 83,160, 14, 5,243, 8,132,121, 70,211, +212, 48, 70, 97,154,102, 42, 98,165, 90, 87, 89, 41,153,102,238, 37, 0, 0, 32, 0, 73, 68, 65, 84, 95, 76,236,148,184, 94,255, +221,248,252,111,180, 71,171,165,237,198,165,142, 77,224,133,192,122,112,109,213,239, 55,243,211,115,162,212, 52, 92,138,115,150, +195, 80, 94, 76,252,150,236,221, 92,130, 85,202,152,117,147, 53,189, 4, 78, 52,182,198, 15, 62,254, 12,191,252,163, 95,224, 23, + 63,253, 35,124,242,250, 13, 42,235, 8,127,153, 88,160,199, 23,111, 6,169, 93,251,113,192, 52, 79, 8, 97,198, 56, 13, 8,193, + 35, 69,242,132,166, 20,145, 98, 64,138, 51, 82,156, 65,174,108, 26,181, 39,222,179,231,148,232, 34,203,137,232, 70, 41,174,177, +161, 87,107, 3, 33, 81,170,121, 99, 20,172,225,177, 82,217,255,175,194, 34, 81, 14,110, 66,216,202, 76,198, 47, 37, 18,172, 74, +216, 55, 22,149,150, 48, 34,225,110,215,224,123,111,238,240,230,174,195,221,190,194,126, 87,161,118, 26,198, 41,132,156,241,175, + 95, 61,226,255,252,235, 95,227, 55,255,252, 53, 30, 39,160,207, 10,210, 85,132,177,205, 43,242, 71,243,104,223,106, 77,170,223, +141,139, 32, 11, 1, 99, 40,192,166,170, 27,212,214, 81,122, 84,138,180,143,228,253, 14, 93,234,116, 48,164, 28, 23,198, 45,114, + 38,155,204,235, 87,247, 52,117,224,253,163, 98,129, 9,169, 84, 71,140,243,136, 20, 2,172,113, 56,245, 39,124,243,246,109, 17, +203, 20,154,211,102,188,187,144,235,150, 74, 54,231,101, 37, 64, 10, 84, 41,214,220,109, 89, 68, 82,184, 45,160,219, 92,231,171, + 80,103,163,184,220,254, 44,151,130,116, 41,110, 46,244, 35,203, 90,233, 50,218,245,242, 67,119, 91, 52,250,236,178, 92, 62, 12, + 92,180, 92,115,230,165,146, 37,133,240, 90, 59,240, 93,151,250,197, 90,107,195,170,190, 24,217,111,224, 51,223,117,169, 83,199, + 17,232, 57,206, 2, 58,211,126, 49, 34,225,174,235,112,111, 43,252,251, 95,254, 27, 84, 74,115,215,157, 48, 12, 71,204,243,128, +170,169,224, 99,194,253,171,123,204,179,199,241,216, 99, 24, 73, 92, 21, 66,192, 56,244,168, 27, 26,209,122, 86,108, 15,227,132, +166,109,203,243,208,117, 59,166,193,101,214,105,104,236, 15,123,204,243, 76,194,166, 24,203,133, 68, 86,181, 53,147, 33,229,132, +126, 24, 0, 33,240,217, 15, 62,199, 55,111,223, 34,250,176, 34, 58,178, 64,240, 1, 74, 40, 72,144,197,115,154, 70,100, 65,145, +163,222,207, 80,138,184,235,243, 60,195,105, 13,163,137,132, 38, 4, 17, 40,101, 42,122, 76,130, 86, 17,143,132, 70,223,124, 17, + 44, 59,210, 20, 41, 45, 78,114, 22,250, 60,205,100,135,243, 36,214,162, 11,129, 1, 84, 75, 44,174, 0,170,138, 70,255, 93,219, +162,107, 59,248,121, 70, 78, 9,218,104, 76,158, 18,224,250,115,207,214, 47,130, 2, 5, 31, 33,165, 65,240,158, 98, 94,121, 48, +213, 53, 45, 32, 36,123,219,201,210, 21,124,132,181, 14,206, 58,164,156, 48, 77, 3, 95,148,170,104, 77,104,159,111,152,188, 57, +193,123, 74,121,107,155, 26,117,221,224, 60,156, 97,180, 36,251,159,146,232,135,190, 88,163,167,113, 66,206,153,196,127, 2, 24, + 39, 15,163, 12,230,113, 70, 76, 25,138, 53, 67,100,197,139, 80,154,216,243,206, 57, 12,195,128,170,114, 48,218, 16,183,126, 34, + 28,109,215, 53, 24,198,158, 69,133,117,177, 84, 75, 1,216,202,194, 24, 74,248, 35, 93,130, 40,164,206,170,174,144,114,100,158, +124,128,214, 22,214, 88, 42,112,149, 42,214, 51, 41, 36,172,113,208,154,210,220,192,145,211,198, 40, 72, 65,194, 96,231, 44, 82, +142,104,234, 10, 34,211, 4, 24, 34,241,235,149, 80, 34,227,227,143, 62,194,227,195, 3, 23,116, 52, 25,167,116, 62, 79, 83,168, + 16,200, 90, 12,172,161, 46, 12,202, 90, 86,123,215,169,148,184,113,185,231,252, 66,167, 94, 50,202,153,162,115, 41, 58,202,207, + 98,223,196,114, 97,179, 24, 73,222,234, 36,216, 7, 44, 25, 31, 42,229,149, 63,118, 73,123, 19, 91, 21,179,132, 85, 22,175, 15, +175,240,179,159,252, 17,254,236,231,127,140,239,125,252, 9,154,186, 38,127,120, 92,138, 8, 86,228, 34,113, 36, 30,199, 16,122, + 95, 20,162, 62,204, 60,218, 10,165, 90, 77, 57,176,178,157, 46,123, 41, 87,104,200, 98,187,202, 49,240,202, 56, 94,250,153,197, + 86,180, 64,151,166,211, 18,181,211,104,106,139,218, 82,181,182,128, 46,144,214,160, 25,177,120,247, 83, 4,162,135, 72, 51, 68, +158, 97,100, 66,165, 4, 58,167,208, 85, 6,173,213,184,223,183, 56,180, 21, 26, 43, 97, 21, 96, 52, 96, 45,145,154,126,251,187, +175,241, 87,127,251,143,248,199,223,190,195,209, 11,156,163,192,144, 0, 97, 28,192,163,255,197,162, 69,175, 79,195,240, 4,129, +170,126,242,211, 10, 73,187, 43, 41, 20,156, 54,168,108,133,218, 57, 56,107, 75,144, 77,185,208,185,216,201, 11,229, 11, 11,190, +179,194,221,126,199,171, 12,222,177,115,230,243, 52, 78, 28,211, 8, 62,180, 12, 98, 18,120, 60,158, 16, 83, 42, 32,158,156,183, +225, 8,171, 96,102,221,169,231, 11,191,184,146, 43, 9, 78, 92,196,166,109, 84, 33, 98, 99,239, 90,190,150, 88,119,236, 98, 27, +129,138, 69,133,187,238,226,159, 67, 92,196,165,106,247, 5,229,250,181, 80,238, 26,162,179,122, 84, 95, 70,192,230,148,191,179, + 43,127,137, 78,119, 97, 45,223,190, 31,120,174,224, 23, 27, 97,221, 75, 95, 39,136,132, 44, 51, 77,196,104,159,131,136,136,218, + 8,252,244,254, 30,255,227,159,253, 57,190,223, 29,112,124,120,192,169,239,225, 99,132,113, 21,154,170, 65, 8, 36, 34,218,237, + 15,120,247,254, 29, 66,164, 24, 81,178,114,241, 37,100,116, 97,170, 91,206,232,150, 74, 21, 75,163, 82,138, 82,203,188,199,126, +191, 71,211, 52,120,122,120, 98,194, 93, 46, 89,222, 82,146,186, 61, 70, 18,223,197,148, 10, 54,212, 58,135,243,249, 76, 96,156, +243, 68,132,175, 68,187,204, 5,102,147, 98, 98,209, 93,128,214,130,161, 80,137, 70,239, 74, 33,199, 64, 80,114,126,254,149,208, + 52,210,135,162, 11, 20, 18,209,199,197, 55,132,201,123,132,156, 49,251, 72,191, 38,207,132, 60, 81, 46,248, 20,252,102,165, 5, +104,197,197,190,146,112,206,114,220,169,197,221,221, 61, 2,199,215,182,109,199,254,106,186, 4,230, 48,163,174,106,204,126,198, + 48, 12, 24,250, 1,221,142, 56,237, 86, 87,200, 2,152,231,177,156, 73,203,222,190,170, 42,230, 51,144, 18, 30, 28,244,210,118, + 29,142,199, 35, 97,120, 99,164,196, 74,109, 32,132,196,233,116,162,196,182,121, 46,103,105,219,237,160, 36,169,212, 37, 4,170, +202, 81,236, 44, 4,190,249,230, 1,221,174, 35, 44,111, 2, 98, 10,232,118, 59,244, 3, 17,240,172, 49,208,134,172, 94,218, 18, +156,135,186,106, 13, 41,129, 16,102, 10,195, 9, 84,192, 33,229,226, 63,143, 41,163,114, 53, 30,159,142, 52,166,103,250, 28, 88, + 21, 63, 14, 19,164,210,168, 42,218,157, 43, 6,249,196, 24,240,250,205,171, 18,155, 61,242,107, 81, 82,160,237, 26,210,106,144, +172,155,220, 24, 82,160,109, 42, 42,162,180, 68,244, 1,134,159, 73,107, 52,194, 60, 51,236,135, 18,236,252, 76, 34, 67,107, 8, +221, 61,244,103,236,239, 14,155, 88,112,202, 78, 48,198, 34,199, 4,163,245,115,134,139, 72, 37, 7,228,230, 25,176,101,121,136, + 21,231,174, 42,227,254, 98,187,239, 43, 6,246,197,123,190,116, 9,114,181,189,221,244,218,178,135, 88,224,217,222,158, 15,141, + 92,132, 97, 23,157, 4, 46,199,238, 69, 44,151, 5,218,170,198,231,159,126, 31,127,242,243, 95,224,167, 63,248, 49,246,109,199, +246, 18, 9,177, 80,222,144,139, 98,145, 82,174,232,131,185, 28,160,211, 52, 97,152,122,206, 45,143,108,151,136, 40, 55, 45,177, +251,128, 28,168,139, 6,101,133,167,232,153, 44, 23, 47, 48,162,203, 43, 85,155,232, 86, 35, 65,177,167, 78, 98,215, 90, 52,149, + 66, 91,105, 34,192, 41, 85,108,104, 57, 38, 40, 86,158, 86,214,160,170, 20, 42, 3, 88,153, 96,101,228, 44,244,140, 74,101, 84, +154,242,208,187,218,162,177, 10, 93,173,208,213, 6,206, 26,248, 24,241,197,111,127,143, 95,255,221, 23,248,237,219, 51,198,168, + 48, 37,131,115,200, 24, 83,130,174, 26, 72, 30,177, 19,252, 1, 48, 82,192, 25, 77, 25,241,130,222, 99, 37, 22,157,131,228, 41, +131, 34,205, 2,231,179, 59,107, 97, 57,191, 56,196, 8, 31, 72,233, 25, 83,216,164,227,145, 16,172,170, 44,249, 50,231,153, 63, +140,100, 55, 10, 62,176,138, 54, 18,167, 94, 72, 40,101, 32,164,198,241,120,194,236,195,198,234,184,241,144,231, 85,123, 64, 72, +221,116, 9,109,184, 88,239,136,139,240, 18,228, 75,171,227,245,127,134,192, 5,185, 80, 44,251,236,139, 16,133,124, 85, 0,200, +239, 28,129, 95, 99,100,113, 69,194,123,214, 5,111,226, 78,183, 23,238, 75, 64,153, 91,150,180,151,104,116, 36,237,200,101,234, + 32, 55,159,231,139, 67, 97,241,173,191,240,119, 44,107,137, 40,104,244,170, 22, 2, 34, 34, 42, 5,252,226,205,107,252, 47,255, +238, 87,248, 65,211,161,127,124,143,132,140,119,231, 30,193, 86, 72,182,198, 52,147, 2,186,109, 91,134, 59, 69,234, 68,145, 56, +116,131, 14, 85,173, 40,162,216,199,128,170,174, 96,172, 37, 75,169,247,228, 17,151,178,116,183, 77, 91,227,124,238, 73, 15, 3, +178,107, 45,233,127,103, 30,191,123, 63, 67, 51, 75, 62,248,136,113,156, 81, 85, 36,252, 18, 66,178, 34,123,101, 33,208,103,157, +108, 74, 11, 21, 47, 33, 35, 36, 74,118, 91, 96, 68, 49, 82, 58, 35, 32,225, 35,101,136,103, 8,234,148,133,128,143, 25,211, 28, +248,151,135, 79, 9,222,167,146, 60, 70,133,180,162,169,128,148, 64, 78, 48,122,229,129, 40, 41,160, 52, 37,175,165, 20,209,214, + 21, 2,139,183, 40,188,136,248,231, 77,221, 64,105, 77,161, 47, 70,109,194, 83, 80, 10, 33,193, 9,106,222, 71,180, 93,139,105, + 28,232,236, 82, 36,240,154,103,234,138,173, 35, 97,162, 99,232, 76, 74, 96, 13,131, 47, 35,237,229,189, 42,206, 39, 0,146,153, + 25, 66,208,251,125,216,239,232,156, 96, 88, 78,140, 9, 93,183,131,210, 10,111,223, 61, 82,148,171,159,161,141,130,210,138,173, +119, 61,139,197, 18,180, 81, 48, 86, 65, 25, 18,188, 9,145, 97,157,197, 60,211,206, 95, 41,192, 57,202, 77, 31,134, 17,135, 3, +113,236,233, 89, 38, 32,142,171,106, 60, 60, 30,225,170,138,237,133, 30,195, 48,195,251, 0,205,208, 36,201, 13,141,117, 22, 90, + 41,104,165,105, 13,146,200,187, 30, 35,121,203, 23,242,179, 53, 26, 82, 72,244,253,153,166, 12, 28, 7,188,116,213,203, 88,127, +158,105,204, 79, 60,124,129, 48,123, 46,238, 73,171,112,238,123,156, 78,103,244,195,128,113,156,224,125,128, 53, 22, 85, 69,174, +132, 24,226,198,198,154,110,126,182, 47,197,194,130, 19, 17,101, 65,212, 2, 2,250, 91,128,145, 23,130,165, 91, 4,171,109, 56, +196,198, 15,179, 42,231,243,213, 82,239,154, 76,119,145,188, 37, 10, 46, 80, 73,129,125,183,199, 79,127,244, 19,252,232,179, 31, +224,213,254, 64,172, 93,193,204,224,180, 96, 88, 57,229, 89,172,137, 88,145,185,228, 18,128, 85, 64, 99, 5, 78,125,192, 20, 82, + 73,220, 41, 66, 42,126,152,114,138, 64, 74,136, 50, 67, 40, 64,164, 72, 40,218,204, 40,209,156, 11, 63, 59, 47,227,222, 13,173, + 75,137,140,202, 72,116,149,198,174, 54,168,173,130,210, 25, 49, 0,201, 10, 52, 86,163,210, 2,143,199, 1, 33, 36, 32, 73,216, + 74,161,118, 10,141,171, 80,201, 12,153, 35, 12, 50, 42, 37,208, 90,137,187,182,194,199,119, 29, 94,223,181,184,223, 85,184,223, + 89,212,149,134,143, 30, 95,125,245, 30,255,242,187,175,113, 26, 2,178,208,200, 34, 33, 35,174, 97, 55,108,138,166, 14,156, 18, +213, 12,143,221,151,159,167,224,184, 81,177,233,209, 68, 78,229,151, 4, 95,238, 85, 3, 35, 21, 43, 51, 19, 30, 78, 39,200,172, + 72, 24,152,137,189, 45,153,212, 21,145, 17, 83,132, 49, 10,198, 88,246,197,178, 42,213,104,132,232,161,132, 70,244, 9,202, 1, + 90, 91, 8, 49, 21,165,248,122, 81,173, 19,134,133, 75,183,144,230, 98, 94,215, 53,183,147, 78, 55,217,230, 91,115,248, 69, 75, + 44, 46, 82,151,202, 88,158,253,177, 82,138, 77, 78,208, 18, 78,147, 54, 94,218,141,255,253,194,222, 22, 81, 68, 1, 57,111,146, + 9,111, 23, 1,215,175,225,219, 66, 91,174,119,229,215,151,250, 5, 70, 50, 95,126,203,151, 41,137,151,159, 93, 37,100,201, 39, +184,197,143,223,154,236,151,194, 71,138, 4,131,136, 63,253,228, 83,252,175,255,225, 63,162,139, 1, 15, 95,253, 43,101, 6, 76, + 61,238,118, 13, 30,143, 3,166, 12,178,148,165,136, 70, 41,192, 39,228,192, 23, 49, 40, 36, 5, 0,195, 70,248,245,104, 67, 78, + 13,165, 16,153, 21,190,213,235, 88,107, 32,165, 46,186, 10,163, 13,175,104,168, 96, 23, 32, 14,253,233,116, 66, 85,215, 56,157, + 6,228,148,217, 14, 23,208,184, 10,231,225, 76, 90,146,197,123, 28, 98, 33,123,137,148, 32,211, 42, 16, 94,172, 71,144, 9, 66, +248,205, 27,235,145, 69,102,253, 13,219,174, 22,158,195, 38,119, 64, 75, 10, 97, 90, 70,144,153,125,207, 82,242,122,128, 32,240, + 28,224, 34, 56, 40, 74, 97,191,223,195,191,251, 6, 66,146,162,125, 24,103, 72,173,161,165,130,201,192, 20,136,159, 33, 20, 89, +253,132,148, 56,159, 7,212,117, 3,248, 92,166, 32, 66,144,181,234,233,241,145,114,219, 53,237,156,253,236,105,109,160, 37, 62, +114,175, 49,142, 19,178, 33,113,111,219,182,248,240,248, 1,119,119, 7,218,135,123, 15,169, 20, 71,149,102, 88,171, 49,140, 39, +254,220,107, 30,223, 83, 1,100,180,195,152, 6,132, 57, 32,134,128,174,235,240,250,213, 43,252,254,203,183, 37,223,125,158, 39, + 10,255,217,237,209,182, 13,158, 30,159,160, 37,224, 67,130,240,130, 93, 4,160,203,127,177, 33,242,211,172, 25,177,235,231,128, +119, 31,222,227,205, 71, 31,227,233,120,198, 48, 78,168,234,154,198,207,218,224,241,233,136,182,109, 81, 53, 53,194,113,192, 56, +142,152,231,145, 51,237, 37,180, 84, 56, 31,123, 56,103,225,156,130,148, 30, 66,212, 92, 36, 80, 32,145,176, 18, 41, 8,206, 32, +176,216,237,118, 23,250, 23, 41, 5,180,100, 78,130,146,200, 12, 96,138,222,163,114,142, 68,112, 49, 98,158, 35,134,225, 17, 93, +183,199,253,171, 26,253,208, 83, 81, 58, 5,140,195,128,200,223,111,211,212, 56,247,253,115,122,228,245, 25,144,210, 5,125,110, +253,236,211, 51,164, 47, 69, 66,223, 29,158,113,203, 39, 43,176, 13,135, 95, 85,180,219,242, 66,176,183,245,166,159,118, 57,172, +181,130, 86, 2,175,186, 3,254,228,231,191,196,231,159,126,142, 93,219,193,176,175, 93,240, 1,180,101,114, 47,202, 66, 26, 67, + 8, 68, 14,130, 22, 57, 66, 33, 81, 71,108, 52, 70, 63, 16, 20, 38,173,129, 50, 37,112,132,199,225, 49, 9, 86, 47,242, 5,195, +225, 48, 5,227, 90, 18,232, 36,123,204,233,114,119, 74,160,182, 10,109,165,176,171, 36, 42, 39,161,116, 70,142, 64, 8, 9,201, + 10,180, 85, 5,171, 50,222, 63, 14,240, 49,192, 79, 9, 86, 42, 72, 35, 81, 87, 6,181,117,232,156,193,161,177, 56,212, 6,251, +218,225,213,190,194,174, 49,216, 53, 10,149, 17,240,126,192,215,111,223,225,237,135, 19,124, 18,200,210, 64,200, 0, 32, 32,243, + 88, 92, 20, 40,208,178,115,150,144,138,108,108, 86, 74,192,251, 50,134,206,172,204,102, 51, 30, 95,161,145, 62, 24, 89, 0, 49, +195, 74, 9,229,170,114,153,133,144,241,212,247,240, 8, 16, 82, 32,100, 2,206, 10,238,150,230, 48, 99,246, 51,237, 10,185, 67, +239,186, 22,109,219, 2,239, 31,168,107,225, 73,129, 49,134, 27,128,180,177,129, 45, 34,194,205,184,157,127,101, 42, 37, 46,172, +111, 23, 10, 80,126,214,100,222,122,171,243,198,109, 32, 94,224,159,111, 34,119,196,102, 95,158,243,179, 17,249,154,230,134,203, +206, 94,172,147,163,101,164,159,211, 37,115, 65,220, 28, 97,137,139,164,190,111, 75,103,187, 21, 10,243,109,137,110,183,138,158, +188,121,109, 34,103,222,151, 46,141,216, 37,162,119,123,177,203,144,161, 4, 32,178, 71, 37, 19,254,252, 71, 63,194,255,252,239, +126, 5,219,247,144, 90,224, 52,246, 8,198, 33,142, 19,238,170, 26, 95,197, 17, 73, 4, 76,115, 68, 72, 1,206,237, 17,252, 4, + 85, 50,251, 18,130,159, 73, 68,150, 18,180,181,152,198,137, 2,131, 64,227, 97,231, 28,140,214,176,218,176, 7,157,126,191,203, +153,198,236, 50, 21, 15,175, 82, 10,167,211, 19,250,126,134,144, 10, 83,240, 16,179,225,145,164,130,204, 1,136,192,216,143, 8, + 49,210,254, 52,147,218, 24,156, 89,176, 56, 44, 40,161, 79, 81,131,176, 76, 3, 35, 25, 33, 22,241,108,193,156,242, 5,174,181, + 44,217, 21, 34,139,213,201, 83, 50, 18,152,124, 73,240, 60,100,100, 24, 43, 0, 78, 89, 76,153,158, 55,178, 72,129, 82, 36,119, + 59, 76,222,147, 64,143,215,129,139,246, 99,246, 51, 4, 95, 38, 49, 70,178,151, 57, 10,138,209, 90, 35,129,198,226, 85,101,209, +117, 7,124,120,120,143, 73, 1, 2,134,246,232,129,190,143, 97, 24,113, 30, 6, 30,255, 46, 93, 60,217, 4, 79,167, 19,246,251, + 29,148, 82,232,251,158,130,121, 98,128, 53, 10,206, 25,248, 8, 60, 61,145,187, 32,166,136,167,227, 19,246,251,123, 60,126,248, + 64,144, 27, 87,211,202, 36, 38,188,126,117,192,195,195, 17,206, 89,204, 60, 61,161, 72, 85, 98, 17,244,253, 25, 18, 10,105,138, +168, 42, 98,118,132, 16, 33, 53, 96,180,165, 29,116, 76,232, 79, 3,190,247,233,247, 32,133,194,239,191,252, 26,143,199, 39,212, + 77,135,119, 15,143,240, 49, 99,156, 61, 62,250,232, 53,222,191,251,134,246,242, 74,162,221, 19,235, 32,166,136, 97, 26,161,189, +132, 49,182, 8,232, 14,135, 61,140, 85,200, 32, 49,164, 16, 26, 22,132,210,141, 42, 33,106, 69, 69,129, 39, 0, 14, 17,247, 72, +199, 49, 13, 35, 50, 50,234,154,118,235,129, 73,164,117, 93,175, 86, 80,161, 16, 82,198,215,111,223,195,186,138,255,206, 3,114, +204, 72, 49, 97, 24,134,130,193, 93,232,123,101,253,200,122, 44, 5,113, 1,124,219,250,100,179,192, 38,152, 10, 80, 78,219,191, + 88,119,153, 43, 0, 70, 10,249, 12, 47,121,185, 71, 23,171, 95,184,116,191,171,101,235, 86,247, 36,228, 21,214,179, 88,189, 8, +177, 35,132,192,155,195, 61,254,236,151,255, 13,126,248,253,207,113,215,238,160, 32, 87,248, 13, 50,139, 76,152,106,198,130,131, +229,146, 79,105,217, 2, 80, 50, 88, 94,108,104, 66, 96,152, 38,248, 64, 42, 83,170,174, 35,217,216,114,164,196,178, 68,185,199, +106, 81,231,167,124,161,168, 22,200,252,250, 41,200, 65,243, 88,211,106,137,202, 42,212, 78,163,171, 21,218, 90,163,113, 18,214, + 8, 24, 3, 40,145, 96,148, 64,237, 44,186,182, 3, 24, 95, 25,124,128, 72, 25, 34, 5,168,156,224,100,134, 85, 25,157, 83,216, +213, 6,109,173,113,232,232,223,206, 0,209,247,120,120,120,135,135,227, 17, 99,200, 24,163,192,148,128,113, 14, 24,167,128, 97, +246,232,125,192, 20, 34,164,182,208,218, 66, 73,139,140, 4,107,137,131,109,149,100,232,199,130,165, 85,188, 75,150, 43,159,124, +227,247,150, 0, 52,255,124,148, 50,128, 80, 72, 89, 98, 14,137, 70,241,229,103, 78,226,151,186,114, 24,250,158, 98, 96,171, 26, +167,211, 9, 74, 81,120, 71, 85, 85,136, 57, 97,158,103, 24,107,161,180, 70, 72, 1,167,254, 92, 18,206, 22,178, 84,161,185,229, +109,160, 74,226, 17,147,220,216,178,158,143,167,228, 85,167, 42,110,178,204,197, 11,157, 51,127, 96,214,228,160,242,193, 18,133, + 82, 39,111,118,234,107, 81,176, 78, 6,174,247,212,215, 59,117,177,161,233, 93, 59,232,111,121,212,191, 13, 62,179, 29,187, 63, + 31,217, 95, 22, 66,139,110, 69,222,232, 6,110,193,159,150,113,160, 18, 17, 78, 36,252,199,159,253, 12,255,211,159,253, 91, 52, +243,140,225,233, 9, 67, 10, 56, 78, 35,178,116,232,170, 6,253,135,247,216,181, 14, 82,120,104, 36,136, 20,208,180, 21,166,105, + 64, 10, 36, 12, 2, 50, 38,239, 11,115, 66, 27,135,224,125,121,143,140,177, 69, 48,164,249,247, 75, 1, 22, 25,129, 18,221, 50, + 48,207, 19,229, 46,112, 48, 74, 63, 76,176,174,194, 48,142,144, 66, 99,154, 60,140,182, 8,115,228,181, 30,160,132,132, 51,154, +138, 26,182,148,146, 47, 92, 66, 75,205,174,144, 12,149, 19,172, 18,176,138, 86,105, 36, 48,205, 48,138, 45,168, 66,194, 41, 5, + 39, 37,233, 85,216, 37,160, 1, 24, 1,104, 78, 31, 67,206, 48, 70, 17, 93, 46, 39,238,202,233,255,231,156,225,196,183,181,252, +146, 74,161, 97,238,125, 63,210,164,193,115,150, 58,161, 82,103, 26, 27, 75,137, 48, 17, 88,138,210,204,168, 11,175,154, 10, 85, +101,225,163, 71, 78,212, 1,142,227,136, 28,105,180, 28, 66, 64,219,118,196,169,183, 26, 16, 20,254, 2, 36, 22,149,101, 4, 22, +138,145, 82,158,137,114,214, 81,227, 32, 73,188, 26, 67,198, 48,206, 28,175, 75,107,185,221,254,128,211,241, 9, 82,100,178,110, + 41, 1, 99, 53, 98,206, 56, 30,143,168,170, 6,125, 63,208,232, 91,107, 76, 19, 9,237,250,126, 68, 74, 64, 8, 20,121,186,248, +251,115, 2, 1,108,250,129, 98, 84,103,143,121,246,248,222,167, 31,227,233,244,132, 24, 19,246,135, 3, 38,239, 49,249,153,201, +160, 1,119,135, 29,134,177, 71,213, 16,188,167, 90,192, 59,146,124,244,203,202,141,146,212, 60,172, 83, 56, 28,118, 20,136, 51, +145, 62, 33,179,254, 71,107, 77, 28,247, 68,225, 95,195, 48,194, 90, 83, 20,246, 11, 46,153, 72,136,178,252, 29,146, 9,137,153, +237,220, 0, 21, 7,231,115, 79, 17,190, 49,113, 2,157,227,175, 1,104, 99,138,142,105,205,222,144,151,107,196,101,213,178,209, + 26, 73,182,210, 1, 88,136,114,105,173, 50, 55, 7,134, 90, 14, 56, 33, 55, 81,147,156,188,182,228,192,114,133, 73,191,214, 42, +245,154,243, 94,208,155,114, 81,237,109, 59, 95, 58, 63, 95, 29,238,241,167,191,252, 19,252,224,211,207,209, 86,148,203,124, 1, +250, 40,136, 82,218,117,151,157,247, 34,106, 75,139,199, 55,208,142,125, 19,170,225,189,135,159, 71,218,109,179,119,146,130,102, + 56, 70, 52, 5, 72,228,226,169, 22,136,107, 22,119,185,232,200, 26,166, 4,249,178,173, 18,112, 70,160,118, 26,109,165,202, 46, +189,182, 10,206,106,152, 37, 62, 85,102, 88, 35,209, 53, 14,119,135, 14, 90,100,204,195, 25,113,246,168,180,130, 85, 2, 90, 2, + 86, 75,212, 86,160,113, 10,109,101,176,171, 13,156,165,108,230,243,233,140,211,121,196,232,129, 49, 8,140, 62, 97,242, 9,227, + 20, 49, 76, 1,253, 28, 49,250, 4,159, 37,180,117, 48,214,177,208, 40,194,106,141,125, 83, 67,231,140, 48, 17,253,106, 75,233, + 19, 25, 5,121,187,116,248, 74, 8,202,159,151,228, 5,151,203,222, 55,211, 72,114,152, 71,132, 24, 72,245, 47, 4,186,166,129, +179, 6,231,227,145,195, 21,106,250, 64, 24, 69,138,120,107,136,186,228, 3,180,209,208, 70, 34,137,140,199,167, 35,179,211, 11, +148,152, 45,141,145,125,230,155,139, 16,204, 44,207,155,188,128,109,130, 31, 4, 54,203,117,138,105, 23,155,238,116,137,241,221, +120,211, 23,208, 76,206,236, 80, 40, 59,173,124,179,219,189,178,119,111, 46,194, 53,135,156,222, 95,254, 32, 47, 95,115, 83, 28, +172, 34,190,245,245,138, 43,228,227,173,208,154, 91, 23,249, 22, 37, 43,113,201,190,191, 16,157, 94,152,249, 86, 53,124,230, 68, +170, 92, 80, 18,139, 22, 96, 93, 61,252,127,148,189,105,143,109,219,117,158,247,204,110,181,123,239,170, 58,205,109, 72,145,186, +164, 72,137, 38, 37, 33,254, 18,219,177, 12, 73, 22, 12,197, 65,128, 32, 65,146, 79, 49, 16, 32,200,255,240,175,115, 62, 57, 8, + 98, 39,176,101, 73,142, 76,138,188,247,116, 85,181,187,213,204, 46, 31,198, 92,107,239, 58,205,189, 50,137,131,115,238,105,170, +219,181,230,152, 99,140,247,125,222,172, 51, 48, 83,165,153,255,242,119,127,194,159,252,252,247,105,199, 17,237, 61,129,204,155, +253,129, 33,102,218,190,231,225,221,189,116,145, 70,241,248,248, 64,211, 72,110,247,233,124, 46, 59, 67, 35,126, 98,165,201, 74, +139,213,171,252, 48,218, 72, 28,106, 93, 83,215,245, 37,142, 82, 35, 30,240,217, 99,157, 93,115, 39,150,248,213,227,225, 32, 20, + 59, 43,204,249,251,135, 71,198, 81, 24,241, 49,102,180, 50,226, 44, 40,157,155,117, 26, 83,116, 48, 26, 73,226, 90,190,243,108, +129,206,168,156,138, 13, 84, 83, 59,141, 53, 98,233,211, 69, 79, 35, 86, 84,112, 70, 99,138, 95,223, 26, 65,106, 47,138,245,133, +125,224, 42,209, 20,132, 24, 10,155, 66,179,217,110,200, 57,115,115,119, 87, 24, 28,107, 71, 34,222,124,231,240,193, 83, 57,193, +144, 90,103,153,166, 9, 99,197,242, 21,188,103,211,245,140,227,185,228,111, 11, 45,210,207,158,219,219,173, 60, 55, 49, 22,175, +125, 36, 45,217,230, 37,172,164, 45, 84, 56,165, 33,196, 80,152,245,208,212, 13,195, 48,174,121,241, 49,202,107,176,219,108,201, + 36,198,113,164,105, 59,225,216,151,245, 90,140,242,186,182,109,195,110,187, 99, 60,159,136,193,211,246, 45,214, 89,124,144,241, +253,227,227, 30, 87,213,196,132,196,202,246, 61,243, 56,173,207,204,188,104, 36,148,188,222, 90,233, 53,165,239,116, 58,163,140, + 5,165, 56,156,142, 24,171,121,254,252, 5, 15,143, 7,172,115,116,125,203,227,254, 88,120,243, 30, 31, 2,125,223,113, 60,158, +176,136,102,168,107,154, 75,189, 41, 26, 34, 93,244, 5, 49,200,228,177,237, 90,114,138,156,143,103, 89,227,106,153,194,104,163, +112, 86,132,139,199,211, 64,140,137,182,233, 8, 81,166, 26,231, 97, 44,196,191, 74,198,245,174, 90, 45,141,179, 23, 97,100, 12, + 34, 56, 52,250, 2,251, 25, 70, 89, 49, 69, 31, 8, 33, 17,188, 48,226,175, 9,154, 57, 21, 0, 88,121,222, 83,129, 90, 93, 84, +242, 18,238,181,172, 95,237, 19,130,220,251, 99,117,165,100, 44,180,250,204, 63,164, 97,228,140,168, 97,211,123, 17,141, 31,116, + 23, 23,106, 87,206, 98,234, 39, 94, 14,237,103,187,103,252,236,199, 63,225, 7, 95,126,159,174,106, 46, 7, 78, 33, 48,165,156, +209,107, 81, 15, 23,117,122, 25, 53,171,226,119, 22,128,224, 18,115, 90,212,164, 42,211, 85,142,193,138, 16,103,217, 37,167,197, +223,167, 46, 89,218,185, 20, 6, 93,210,143, 84, 25,209, 43,173, 74, 50,154, 8, 86,172,145,157,125,101, 21,181,147,194,237,140, +198, 26,133,211,154, 74, 57,176,137,168, 0, 2, 74, 37,172,245,220,117, 13,207, 55, 47,121,177,177,124,253,205, 61, 42,103, 25, +191,215,166,140,225, 43,218,170,162, 41, 74,212,121,158,137,209, 51,249, 76,200,142,152, 33, 17, 73, 73,210,133,134, 57, 50,197, +196,156, 50,190,140, 14,215, 80, 84,157,139,175,213, 96, 53,132, 40,163,114,209, 53,202,229, 37,165,128,213,245, 21, 5,112,217, + 99,199, 34,168, 91, 94,211, 76,107, 52,222, 89,206,117,205,182,235, 4,173,155,164, 35,105, 10,172, 35, 20,159,237,233,116,226, + 71, 95,253, 54,183, 55, 91,130,159, 57,143, 35,231, 65, 58, 19, 87, 87, 84,181, 33,107, 9,246,240, 37,222,117, 77, 9,204,203, + 14,251,210, 13,231, 84,246,238,165,123,126, 42,142,227,106,132,124,201, 14, 16,203,213,101, 4,175, 11, 49,110,161, 57, 93,190, + 31,185,166,177, 92,105, 64,158, 2,147,101, 52,187,236,120,205,147, 81,245,117,135,158,159, 4, 19, 47,221,125, 94,173,116,151, + 75, 0, 79, 58,180, 79,229,174,127, 27, 14,118,253,243,204,186,122, 89,158,215,247,179,221,223,223, 54,228,171,232,220, 44, 15, + 26, 73,103,178,214,168,152,177,121,121,162, 2, 77,246,252,211, 63,248, 67,254,241,207,126,142,122,120,196, 40,197,155,253, 61, +131,214, 76, 40,180,169,121,220, 63, 50, 17, 25,114,226,124, 56,241,252,249, 11,222, 28, 30,168,156, 19,104, 75,136, 76, 49,130, +177,156,167, 9,227,156, 76,150,140,140, 28,131,247, 84,174,146,144,150,105,162,109,107,114, 2,239,103, 82,170,113,181, 16,208, +172,202,108, 54, 66, 14,203, 57, 18, 99,194, 40,139,247, 17, 91,213,178, 99, 70,175,221,100, 52,162, 46,142, 42, 99,172,162,107, + 42, 81, 49, 43,133, 31,207, 56, 35, 0, 16,101,220, 42,142,140, 36, 92,101,113, 78,184, 18, 49, 37,114, 10, 24,173,203,138, 79, + 60,210,198, 80,252,196,226,192,145, 24, 88,199, 28, 35,196,136, 9,134,190,223,176,187,217,202,164,202,251,130,102,149,226,105, +172, 92,118,141,157,201, 33,136,127,124,154,153, 39,177,225,110,182, 29, 62,122,234,186, 89, 59,103,177, 87, 5, 65,230, 22, 54, + 7, 74,166, 25, 77, 91, 49,141, 35,211, 60,200,186, 68, 65,156,101, 58, 39, 1, 38,162, 12, 31, 75,225, 62, 30, 78,244,155, 30, +109, 45, 41, 4, 81,232,151,221,185, 66, 52, 11, 98,229,149,230,167,235, 58,129,164, 24,131,181,154,186,113,156, 79, 35,227, 40, +140,252, 20, 34,181,171,136, 69, 92,103,173, 37, 76,113, 37, 4,158,207,103,154,182,101,255, 56, 23, 77,147,136,249,250,190,231, +120, 62,163, 53, 56,167,159,184,132, 98, 12,114, 9, 42,207,142,143,129, 87,175,222,240,139, 95,124,129,179,142,183,111,222,241, +219, 95,253,144,174,173, 57,157, 7, 97,231,135,204,253,253,129,155,237,150,241,116, 66, 13,153,237,110, 67,215, 54, 84,181,229, +120, 58, 49,143, 94, 38, 66, 90,190,119,200,154,253,227,190, 92, 42,243,234,198, 64, 65,215, 52,160,228,115,237,251, 6,239, 3, + 15, 15, 15,236,110,101,226,161,141, 97, 24, 38,234,186,161,170, 26, 89, 41, 25, 35, 31,143,173, 75, 72, 16, 12, 49, 82,149,162, + 45,105,135, 53,211, 48,174, 57,245,185, 88,128,157, 19,235,158,179,118, 77,200,188, 94,115,103,205,154, 47,177, 78,212,175,208, + 90,223,178,205,187, 20,113, 93,186,244, 15,186,151, 18, 6,243, 93, 59,248, 39, 64,145,114,128, 44,251,211,109,191,229,199, 63, +250, 17, 63,248,173,223,146,253, 89,190,236, 63,151, 49,251,226, 25,143,233, 35, 9, 97,235, 78, 61,149, 61,247,149, 80, 47,201, + 39,221, 84, 21, 77, 85,203,104,237,186, 91, 90, 80,158,198,160, 48, 69, 12, 37,247,118,249,255,229,109, 25, 40,202,112,168,157, +116,227,181, 51, 43,101,232, 66, 12, 75,232, 69, 36,163, 53,181,182,212, 90,211, 89, 69,163, 60,207,122,195,207,127,250, 5,255, +224,239,255, 14,127,239,167, 95,240,253,207,123, 94,222,181,220,109,106,250,214, 21, 66,147, 34,134,192, 52,205,204,147,151, 56, +192,133,112,166, 52, 33,101,102,159, 8, 49, 10,156,101, 97,144, 23,127,179, 50, 26,227,100,180,102,157, 89, 97, 8, 75,161, 94, + 17,189,168, 69,110, 8, 73, 68,114, 38,231, 85, 5,111,173,112,163, 43, 39, 83,137,166, 22,235, 94, 95, 11,252, 70, 23, 18, 84, + 85, 85,100, 50, 33, 74, 16,206,225,176,103, 26, 71,218,166,165,109, 26,230,113, 40,176, 13, 71, 83, 59, 54,125, 79,215,212, 88, +205, 26,139,170,184,160, 93,213, 90,161,243,202,109,207,101,205,162,222, 27, 35,175,122,179,180,136, 31, 47,194, 47,115, 53,170, + 90,210,222,242,199,138,226,199,188,159,239,141,205,175,115,205, 63,165, 66,121,106, 93,203, 79,152,238,215,121, 7, 79,178,215, +191,229,109,253,157,246,229,233,162,180,191,126, 30,212, 39,214, 15, 31,227,186,235,114, 57, 47,155, 39,162, 2,159, 3, 58, 69, + 54, 9,254,236,103,191,207,159,255,236, 15,232,207, 19,225, 60,112,156, 70,238,253, 76,172, 28,231, 24,240, 57,128, 81, 28,134, + 19,119, 47,158, 97,172,140,108,141,210,236,186, 94, 52, 26, 5,215,234, 42, 87,166, 95,153,105, 30, 11,140, 41,175,130, 55,233, +100, 22,104, 75,186,140, 25, 75, 81,106,219,174,136, 48, 19, 49, 65, 85, 75,192,200,188, 22, 58,181,230, 86, 27,163,203,249,177, + 76,228,100, 34,208, 54, 13,206, 10,198, 88,169, 76, 93, 59,250,174,193, 26, 13, 57,210,212,142,182,177, 52,149,197, 25, 69,142, +129,202,105,156, 85, 52,141,163,174,229,217,111,172,165,118,142,202, 89,140, 53,104,163,176,149,124,142, 77,219,138,189,201, 79, +146,127,176,184, 12,202, 26,175,170,196, 63,190,219,116,216,242,123,214, 24, 98, 22,193,105, 86,138,172, 13,174,170, 10, 20, 37, + 99,173, 91,207,227, 5,113,171,141, 66, 91,205,105, 56, 1, 89,240,215, 41, 16, 83, 40, 45, 78, 44, 31,155,120,246,181,214,156, +202, 56, 59, 39,228,140,153, 61,167,243, 32, 22,177,166,149, 93,112,193, 66, 87,117, 77, 76,153,211,233,188,194, 91,154, 69,239, +224,100, 71,111,173, 41,188, 9,153,162,244,125, 79,211,212, 12,227, 72,215,245,228, 4, 55, 55,183,162,164,207, 25,235,204,106, + 45, 91,206,162,229,109, 56,231, 72, 41,172,141,198,233,116, 64,145,216,244, 29, 49, 6,182,155,158,105,138,188,121,243,150,155, +221, 13,155,190,229,237,155, 55,124,241,217, 75,156, 17, 90,219, 34, 38,155,189,167,219,108, 72,100,206,195, 64,136,126, 21,238, +118, 93, 43, 74,119,165, 10,216,198,211,182, 29,195,121,162,239, 55, 88,235,104,154, 70, 10,107,142, 76,211, 72,215, 53,220,220, +244, 82,216,131,164,124,198, 57,112,179,149,208,170, 80,108,134,199,211, 68,202,224, 92, 45, 28,255,162, 93,145,201, 75,192,123, +177,103,250,217,211, 52,109,105,160,243,170,153, 88, 62,166,235,179,103, 57,127,100,141,148, 63,212,217,148,103,223, 52,182,164, +180,173,105, 57,165, 43, 71,175,194, 14,197,135, 30,246,133,105, 78, 33,143,125,204, 70,116, 25, 17,170,213,223,190,130,107, 80, +144,160,182, 53, 95,253,240, 43,190,250,193,111,179,109, 55,235,206, 52,151, 84,163,229,199,154, 76,163, 46,170,162, 69,244,246, +228,172,188, 58, 7,151, 27,206,242, 57,101, 40,226, 45,177, 81, 41,125, 21,115, 87, 58, 56,173,148, 60,128,106,185,129,167,117, +127,110,181,236,158,156, 81,212,149,252, 92, 25,133, 53,106, 29, 83, 59, 3,206, 26,172, 21,209,157,252, 59,249, 97, 72, 50,138, + 55, 80, 91,104,107,205,166,171,232,155, 10,171,197, 19,111, 84,146,191,107, 52, 42,199,149, 62,229,125,100, 10,137,209, 39, 78, +163,231,116,246, 12,115, 96,142, 16, 51,248, 8, 83,204,132,172,112,117,131,169,108,217, 93, 42,186,182,166,177,154,241,120, 32, +133,112, 97,140,103,228, 50, 83, 46,108, 86, 43,156,210, 56,163,169,173,166, 42, 5,221, 57,133,179,242,119,146, 82,140,179,103, +152, 69,163,176,176,186, 55, 59, 9,128, 56, 28, 14,107, 66, 81,206,226,193, 61, 30, 14,178,211,203,148,236,107,195,102,219,145, + 82,226, 55,191,249,102,205, 51,190, 98, 30, 94,141,221, 75, 87,187, 80, 91,243,147,217,251, 90,216,197, 50,116,177,188, 93, 23, +232, 5, 32,115,217, 41,235,167, 22, 17,117,101,215, 33, 63, 9, 79,200,239, 61, 60,107,152,194, 85,161,126, 95, 92,246,254,152, +124, 45,242,234,170,149,127, 47, 28,230,227,243, 45,190,179, 32, 63,177,237, 93,107, 94,158,216, 73, 65,125,171, 12,111, 25, 24, + 20,178, 95,166,112,190, 19, 45,145, 63,253,217, 47,248,111,254,240,191, 32,221,191,195,251,153,153,196,246,197, 11,142,227, 72, + 70, 49,140, 35, 63,250,209,143,185,191,127,195,205,237, 13, 83,144,220, 5, 25, 81, 54,236, 79,103,230, 16,232,182, 91,162,130, +195,241, 72, 86,114, 1, 92,198,192,193,207, 98,171,180, 86,232, 95,139,101, 84, 43,130,247, 52, 69,132,196,138,216,149, 81,242, +233,116, 38,134,132, 47,248,209,105,242, 34,194, 42,170,116,173,236,122, 78,144, 83,217,215,138, 23,220, 89, 67, 87, 87,196,224, +233,154, 86, 10, 65,177,220, 85, 70,211, 86,110, 45,182, 75,251, 99,173,147, 68,194,130,118, 54,229,237, 40,205,250,253,104,156, +195, 22,194,217, 56, 12,164, 40, 33, 43,222,123,250,174, 99, 26, 71,172,177, 37, 24, 6,166,225, 76,244,179, 92,226,103, 79, 68, +161, 93,181, 38, 0, 58, 91, 49,207, 50,158,149,100, 58,233,158,231, 73, 70,215, 33, 10,187,126, 9, 78,114,206, 92, 89, 50, 11, + 35, 10, 69, 85,215,107, 56, 73, 42, 86, 40, 87, 9, 68,167,174,157, 56, 9,202,197,220, 90, 87, 2, 82, 68, 76,217,247, 61,111, +223,189, 17, 86,122,185,116, 8,237, 78,216, 34, 41, 73, 39,126,179,219, 48, 7,121, 45, 33,179,223,239,217,108, 37, 23, 62, 4, +153,204,161,138, 98, 95,201,235, 45, 8,213,150,169,184, 29,118,219, 94,152,244, 90, 46,229,195, 56,150,143, 89,180, 22, 25, 9, +146,121,245,234, 45,191,247,123,191,199,219,183,111,153,231,192,110,183,145,240,148, 81,178, 46, 66,188,160,204,251,141, 76, 24, + 42,231, 4, 97, 59,141,162,222,215,162,166, 95, 38,105,195, 48, 18, 66, 96, 24,166,149,250, 39,174, 12, 83,104,165,170,136,224, + 18,125,223, 49,156,135,146, 4,120, 68,107, 83, 86, 36, 18, 25, 60,205,190,100, 16, 8, 39,127,179,118,199,246, 3, 0, 0, 32, + 0, 73, 68, 65, 84,233, 75,140,111,189, 2,147, 82, 65, 31, 47,228, 68, 85, 50, 3,188,151,104, 99, 73, 33,188,136, 86,245, 18, +189,154, 63,174,191,201, 57, 99,106,219,252,203,204,197,138,182, 14, 27,181,190,242,206,242, 94, 44,229, 5,228,161,174,186,121, +165,213, 7, 69,125,165,168,105,181,172, 24,139, 64,197,226,180,229,139,207,190,228, 39, 95,253,132,187,237,205,138, 62, 76,177, +228,215,190, 39,226, 81, 92,143, 99,151, 79,180,116,102, 41,173,137,114,226, 93,191,194,138,114,217,165,134,146,159,158,214,110, +142,146,244, 86, 48,174,229,191,109,177,234,217,133, 96,165,165,120, 59, 35, 5,174,178, 10,187, 8,235, 22, 4,108,217,181,155, + 2, 14, 16, 62,188, 46,127, 39, 99,149, 70, 23, 34,219,162,234,139, 33, 50,142, 19,227, 56, 74,104, 66, 74,194, 59, 46,140,227, +224, 35,115,136,140,179,103,244,137,227, 48,113, 60,143, 82,208, 67, 36,103, 65,193,134,172,240, 33,225, 83,162,170,106,170, 66, +133,179,214,210,119, 13,206,128, 63,159, 74,103,124,137,139, 21, 40, 92, 44,126,123,189,238, 16,107,103,169,156,150,238,196,136, +214, 64, 23, 11,210, 28, 34,135,243,200, 84,246,106,117, 83,179,221,246,156,207, 39,206,231,243, 26,159, 89, 57, 43,151,157,242, +218, 25, 99,176,218,209,118, 13,183,119, 59,198,105,228,111,126,249, 27,124, 72,235,101,237,137,150,125,193,172,230,188, 96,224, + 47,176,152,171, 44,227,101,146,162,242,123, 50,142,235,215,254,189, 96,244,203, 0, 64,173, 17,192,215,148,185, 39, 20,167, 53, + 51, 94, 61,221, 74,231,111,207, 65, 79, 87, 83,165,139, 66, 62, 61, 21,235, 41,158,216, 59,243,119, 32, 97, 63, 84,208,171, 15, + 45,126,234, 90,215,242, 52,249,238,195, 73, 64, 94,119,191, 20,125,133,201,178, 35,174,178,231,143,126,254,115,254,236,103,191, +207,173,213,188,122,251, 27,166,228, 9, 40,148,171,184,127,124,196,218,138,195,195, 3, 63,252,254,111,225,199,129,103,207, 95, +112, 26, 70,234,182,103,127, 60,224,170,138,215,239,222,209,223,220, 96,154,154,195, 48,112,158, 70, 41,138,117,181,174, 75,130, +159, 75,166,117, 42,121,234, 18, 64, 66, 74, 5, 85,154, 46,175, 75,193, 86, 15,227, 12,104,137,203,180,174, 20,125, 41, 24,178, +143,212,229,224,190,208, 6, 41,250, 33,107, 53,219,190, 43,171,152, 76, 83, 11, 92, 37,198, 64, 83, 88,239,206, 25, 92, 93,173, + 17,166, 25, 4,101, 90,104,105, 18, 90,100,217,238, 54, 84,117, 37,226, 81,224,230,246,150,156,132, 70, 55, 20,254, 57, 57,161, +148,124,110,227,112, 38, 69,137,123, 78, 49,200,199, 20,101,239, 29,114,190, 68, 55, 27,195, 56, 77,164,152, 25,167,105,189,158, + 57,231,152,166,113,125, 29,171,166, 34, 36, 41, 8, 77, 43, 94,240,156, 19,117, 93,139, 75, 58,171,245,123,222,251, 80,160, 54, +117, 17,187,102,234,186,193, 88,203,205,110,203,241,120, 90, 11,161, 40,222, 37,136, 38,149,209,187, 46, 13,135, 56, 14,116, 41, +100, 51,135,195,145,174,235,176, 70, 9, 28,203, 79, 69, 13,238,139,117,207,112, 60,158,200, 89, 70,217, 62,132,130,222, 53,132, + 32,137,116, 41,165, 21, 9,172, 77, 81,191,107,225,235,135,144, 10,231, 95, 94,167,148,147, 96, 93,141,161,105,218,149, 0,151, +163,236,253,231, 16,160, 20, 78,128,105,156,104,154,122,137, 67, 96,211,111,152,198, 9,173, 5,192,211, 52,205, 90,216, 37,238, + 87,224, 54,211, 52,202,219, 80, 2,231, 89, 48,180,117,237,152,231,137,166,170,202, 19,166,169, 42,199, 56,142,132,224,201,200, +196, 67, 27,187,242,252,115, 89, 91, 44, 14, 5,113, 19, 45,250,174, 75,241, 95,143,188,178,211, 79, 41,173,172,137,143,113, 43, + 46, 43,244, 66,164,171, 77,253, 47,223,183, 8, 73,156,159, 45,153,182,242, 2, 94, 19,224,180,214,130, 15, 45,221,243,117, 39, +191,136,143,150,183,185,102,137, 95,131,103, 10,247,229,238,230,142,159,124,245, 59,188,120,246, 2, 87,242,184, 99, 76, 43, 60, +102, 9,163, 88, 74,123,138, 97, 29, 65, 92,139,149,214,159,139,255, 56, 47,227,228, 44,133,246,130,207,150,157,108, 8, 98,179, + 72, 11, 82, 84, 23, 5, 63, 98,243, 48, 90, 50,205, 85,142,232,156, 10,119, 89, 58,117,163, 51,214, 8, 80,192, 60,153,214, 94, +194, 68,228, 27, 39,173, 7,182, 94,237, 8,170,120,164, 53, 41,194,236, 51,167,243,196,233, 60,113, 60, 14,204, 62,144, 81, 24, + 39,183,215, 16, 2,147, 15, 12,163,103,152, 60,195, 52,115, 56,141,156, 7,207, 28, 18, 10,129, 78,200, 67,171,153, 99,194,135, +132,171,235,114, 27,148, 48,132, 77, 87, 99,178, 71, 71, 79, 91, 89, 9,192, 40, 17,151,210,132,164, 18, 95,169,101,164, 88, 89, +154, 74, 83, 87,134,218,137, 64, 68, 62,111,185,149,205, 33,177, 63,157, 57,207,158,144, 34,219,221,134,182,171,121,120,120, 96, +154, 38,156,147, 7,101,187,217, 8, 42,209,136,223,212, 88,139,181,142,205,182,103,123,179,225,221,253, 3,191,250,213,215,132, + 88, 10,233, 74,100,121,223, 39,253,148,121, 32, 20, 49,181, 10,208,158, 40,199, 11, 20,238,178, 99,190, 42,240,107,145, 54, 79, + 69,104, 87, 64,135,156,179,124, 77, 47,184,164, 39,233,124,121, 41,238,239,141,186, 63,237, 69,127,154, 99,176, 88,222,244, 21, +202, 86,125, 42,148,229, 59,212,238, 79,144,182,239,179,160, 87,231,194, 53, 71,255,170,131,215, 87,107,132, 50,245, 16,166, 76, +196,168, 68, 71,228,143,126,250,187,252,207,255,228,143,201,251, 71,190,126,243, 27, 84,107,139, 23,186,231,120, 58,115,251,252, + 57,167,113,100, 60,143,188,184,123,206,233,112, 96,119,123,199, 28,225,111,191,249,134,126,187,163,106,106, 78,211, 68,182,134, +195, 48, 50,204, 19,177,136,220,198,121,194,186,170, 8,146,116, 1, 22, 57,114, 25,155, 43,181,168,210, 37,172, 67,151, 92,243, +133,205,157,179,140,142,143,231, 97, 5,203, 24, 99, 25,199,153,174,235,105,138,130, 57,198, 88,158, 75, 85,162,142,129,152, 4, +198,164, 21,164,200,102,219, 67,166,228,151,203,168,179,223,244, 84,117, 93, 46,174, 45, 33,102,182, 55,183,160, 20,214, 85, 43, +243,161,109,155,117, 7,234,189,132,195,248, 81, 58,239,113, 30, 47, 96,151,156, 72, 49, 23, 32,147,151, 46,184, 52, 79,169, 76, + 35, 19, 10,159, 51, 33,178, 70, 11,167,144,137,197,223, 62,205, 94,208,169, 69,137,190,136,165,146,202, 56,235,164,139,188,210, +162,248,152, 49,214, 17,202, 84, 77,105,197,118,187, 43,248,218,176,142,125,251, 77,143, 45,162,177,119,239,222,177,217,108, 56, +157, 78,236,247, 7,172, 21, 53,254,233,116, 20,129, 89, 1,211, 52,149, 0, 94,206,167, 51,227,228,177,149,163,107,106, 92,101, + 57, 30,143,244, 93, 87,138,117, 46, 5,218,112, 60, 30,185,189,189,193,207,146,134,105,172, 91, 31, 80, 99,132,105, 96,221, 18, + 67,170, 49,218,174,170,119, 31, 34, 41,102,110,159,221, 18,163, 20,249,199,199, 71, 94,190,124, 9, 36,198, 97, 88,117, 95, 41, +179,174,191, 20, 18,184, 50, 79,243,149, 2, 62,178,219,109, 72, 41,113,127,255,184,198,252, 26,163, 75,162,222, 21, 22, 90,171, +213,139, 47,107, 76, 4,150, 84,214,189,146,201,238,136, 49, 10,202, 55,103,134, 97, 94, 73,136,203, 52, 56,145, 80, 89,116, 17, +242,182,106, 81,186,151, 38,212,185,234,234, 28, 74, 43,239, 32,167,247,178, 86,174,234,226,117, 81, 95, 48,196,250,169,207, 69, +125,152, 49,157, 47,105, 89, 31, 30, 92,139,191,249,189,201,247,226,157, 83,234, 73,188,229, 37, 4, 94,216,192,223,251,226, 11, +158,221,222,137, 15, 29,201,235,142,197,118,182,224, 65, 99, 94,136,113,241,195,189,230, 34,146, 43, 4,188, 69, 80,124, 73, 62, + 45, 86, 40,196,186,226,172,166,169, 28,109,137, 0, 93, 71,107,171,221,206,148,131, 55, 21,148, 45,133, 23,188,228,182,231,226, + 99, 47,232,212,210,245,199, 24,241, 62, 49,135,204,236, 51,211, 28,153,198,192, 56, 6,166, 41, 72,134,111,148, 64,139, 41, 38, + 6,159, 56,207,145,227,217,115, 56,206,236,143, 51,231, 41, 49, 71, 69, 72,138, 97, 10,236, 79, 19,247,135, 51, 15,135,129,135, +227,192,227,113,226,241, 56,114, 56, 79,140, 62,144,115, 9, 3, 16, 55,224,250,205, 40,187, 59,179,118, 40, 86, 65,165, 97, 83, + 59,158,221,116, 60,187,233,184,217, 84,244,181,128,121,186, 90, 44,121, 77,109,112, 14,180,201, 24,155,169,107, 41,232,173, 83, +180, 86,130,102, 26, 11,173, 83, 52, 86, 97,149,172, 27,140, 81, 66, 87,202,137,224, 39,185,236, 24, 67,215,182,212,101,239,238, +156, 91,147,182,172, 53, 37, 90, 51,175,233,121,139,218, 90,152,255, 11, 71, 32, 94,232,113,215,185,244, 87,186, 14,149, 64,167, +101, 52,175,214,239,187, 15,108,102, 31, 89, 77,235,124,249,241,145,127,242,193,239,229,171, 48,153,107, 29,202,199,160, 76, 31, + 3,184,100,226,101, 15,127,229, 9,191, 78,118,187, 30,245, 47, 41,109,239, 95, 28,190,149, 98,247,254,199,176, 8,252,138, 19, + 32, 82,126, 86,200,222,182,168, 97,178,202, 2, 9,202,242,189, 82,229,192, 63,252,233, 79,248, 23,127,250,103,124,158, 20, 15, +239,222,146,157,229, 60,122,154,237,142,183,251, 61,253,102,203,195,187,123, 26, 87,241,163,159,254,148, 73,131,174, 26,148,109, +248,213, 55,175, 24, 67,102,119,247,156,183,239, 30, 49,214,210,111, 68,232,100,157,163,223,108,164,227,180, 18,210,177,216, 30, +115,241,205, 11,178,186,132, 94, 88, 75, 68,137, 90, 62, 95,194,145,150,174,254,241,241,192, 52, 78,114,153,172, 29,174,182,220, +222,221,136,167,121, 24,100,247, 94,220, 46, 49, 73, 78, 54, 40,124, 8, 28,143, 71, 98,233,158,114,230, 73,162,152,177,154,166, +107,203,229,215,113,123,123, 43, 49,160,203, 89,153, 97,187,217,148,221,118, 42,120, 87,131,202,112,218, 31, 32, 70,210,236, 37, + 67, 59, 8, 82,148,156, 9,179, 68,113, 42, 9,168, 32,139, 32,166,164,130, 73,250, 90, 70, 10,109,215,246, 76,211, 76,140,153, + 24, 18,227, 44, 35, 89,231, 36,126, 52,149, 81,163,177, 18,210, 20, 67,228,116, 56, 73,247,151, 97, 28,167,114, 86,229,117,218, +160,148,102, 28, 71, 98, 76, 18, 75, 27, 19,195, 89, 46,102,203,100,111, 28,231, 18,105,171,137, 49, 51,142, 51, 57,101,218,182, +229,112,216, 99,173,185, 80, 70,115, 17,205, 57,195,233, 52, 10,193, 82,201,120, 60, 37, 73,158, 91, 46,177,214,138, 7, 62, 71, + 73, 70, 67,201, 40,123, 24,134, 21,156,178,219,237, 10,138,118, 96,154,102, 66, 76,212,109, 75,221,246, 36, 12,227, 60, 51,142, + 51,179,247,108,119, 27, 66,200,188,122,253,170, 92, 10, 89,119,254,187,109, 79,223,117, 52,117,117,101, 45,213,156, 78, 35,231, +243,196, 60,123,166,105,228,230,118,203,243,231,119, 76,211,200,126,191,199, 90,129,233, 44, 22, 70,185,172,137, 48,118,158,101, +181,115, 60, 30, 49, 74,227,140, 45,194, 95,203,121, 56,130, 74,156,206, 7, 66,244,116, 93, 45, 92,131,224, 87, 55,136,224,202, +195, 90,199, 66, 8, 40, 35,130,109,165, 53, 33, 69, 66,138, 5,234, 99,214,218,164,175,116, 65, 10, 85, 86, 79,113,157, 66,166, +116, 65,101, 75, 67,158, 21,105, 25,125, 22, 63,248,197, 66, 36,135, 94,250,216, 33,146, 47, 66, 57,190, 51,100, 66,173,235, 68, +173, 13, 58,195,179,219, 59, 62,123,241,114,181, 82,164,235, 14,189, 20,232, 68,126,111, 76, 40, 93,239, 37,138,179,192, 97,202, +126,232,186, 27,201, 2,161,135, 88,152,208,133, 79, 47, 56,215,138, 97,246, 4,194,218,153,169,210,210,201, 56,182, 88, 25,148, +198, 44,184, 77,181, 4, 5, 44,208, 27, 10, 66,163, 40,181,201,196, 36, 66, 59,149, 51, 36, 91, 68,103,145, 89, 37,178, 53, 36, +173,209,217,144,179, 96, 86,103, 31, 57, 15, 35,211, 36, 24, 72,103, 12, 33, 41,142,167, 81,236,100, 11,205, 46,101, 98,150,155, +233, 56,207, 34, 76,179,166,220,202, 68,165,171,117,197,209, 39,140, 55, 34,146,179, 22,109,140,236,248, 85,166,171, 52,109,211, + 98,179,224, 33,207,154,226, 55,135, 16,202, 3,225, 52,198, 10, 61,203,152, 68,227, 12,213,178, 82, 49,197,126,164,192,153, 44, +249,111, 9,233,202,219,154,241,124, 36,148,116,165,202, 58,218,182,145, 46,221, 85,197,215, 42,220,107,103, 37, 78, 48,172,135, +106, 66,105,241, 12,103,226,123,163,226,107,171, 88,217,119, 47, 58,136,252,116,205,147, 21,151,152, 81,242,199, 25,232, 34,227, +192,228,111, 1,180,228, 15,125,221,215, 59, 32,157,191, 29, 16,243, 49,148,235, 21,231,142,107,255,136,122, 47, 39, 94,103, 72, +239,231, 36,103,190, 19, 75,251, 1, 51,126,189,140, 95, 50,228,151,168,212,245,153,186, 98, 58,231,229, 82,156, 19, 85, 8,252, +253, 31,253, 54,255,235, 63,255,231, 60,211,154,255,243, 95,253, 31,220,126,254,146,199, 97,162,169, 28,199,121, 36, 87,150,100, + 20,109,211,240,189,239,255,144,127,243, 23,255,158, 47,191,250, 10,234,134,255,248,155,175,177,155, 29,214,142,188,219, 31, 9, + 9, 94,126,246, 5,239,206, 7,178, 82,104,227, 56, 15, 3, 89,137, 80, 44, 71, 17,191, 29, 14, 7,188,247,156,207, 35,119,119, +119,146, 87, 96,237,170,169, 89,180, 12,137, 76, 76, 30,231, 58,230,121, 90, 15,197,165,211,159,125,224,213,235,215,104,229,138, + 87, 88,254,205, 34, 6,140, 49, 98,156, 69,147,241,243,204, 60, 59,113,135, 88, 75,111, 36,105,173,174, 28,231,211,145,170,114, + 76,227, 88,226,152, 51,214,106,230,113,146, 24,234,148,200, 24,156,210,204,195,200,120, 30, 74,161, 21, 70,134,178,134,121,217, +139,106, 25,227, 86,198,226,227,194, 20, 95,114,185, 19, 23,173, 99,105,108,178, 88,127, 31, 30, 30,200, 49, 17,178,160,109,115, +148, 75,199,233,116,150,175, 93, 46,234,254, 20, 37, 41,175,188,248, 41, 72,224, 82, 74,226,120, 73, 73,146, 43,171,186, 18,114, + 92,134,148, 19,181,173,215,175,235,233,116, 98,179,105,214, 81,180, 28,195,154,174,171,201, 57, 50,140, 3, 77, 83,173,108, 3, +173,138, 5,208,106,170,218,209,199,150,199,131,216,235, 98,200, 84,174, 42,106,238, 72,211, 86, 60,220,239,105,154,142, 23,207, +159, 23, 6,189, 20, 75,107, 29,179, 95,112,192,150,166,105,120,216, 31,208, 78, 51,249, 25,165, 21, 77, 91, 99, 12, 50, 33,213, + 2,186, 57,158, 7, 42,235,120,249,249, 11,246, 15,247, 52, 77,141, 49,154,121, 30,233,187,150,199,227, 9,165, 68,196,168,107, +135, 46, 81,185,135,195, 94,242, 5, 42, 65,236,206,243,204,179,103, 47,105,219,150,105, 26, 73, 57, 80, 87, 86,194,108,154, 22, + 77, 69, 74,153,113,156, 48, 70,201, 5, 39, 36,246,251, 3,183,183,183, 12,197,161, 0,186, 52,163, 77,113, 95,164, 2,235,145, +231, 46,198,248, 68, 52, 27,130, 68,123,175,240, 39, 22,205,134, 93, 5,193,215, 52, 71,165, 13,196, 82,192,139,251,102, 65,116, +167,229,250, 94,234,133,229, 63,227,127,203, 72, 92, 95,197,163, 62,153,233, 93, 31,200, 87, 81,148,178, 23, 16, 56,130,216, 62, +106, 94,190,120, 41,252, 98,173,139,101,226,106, 20,184,140,204,214, 0,143,139, 39,249,125, 5,113,140,113,141, 92,213,250, 98, + 29, 18,252,107,186, 98,188, 95,138,178,179, 26, 99,132,146,149,150, 61, 93,202, 43,248, 68,233,136, 50,200,216, 56,137, 62,220, + 44,159, 82,129,221,168, 98,132, 78, 41,175,217,219, 41, 5,177, 94, 69,131, 10, 25,157,196,106,151, 18,228, 74,110,179, 90,233, +226,159, 77, 76,147,140,213,231,144, 68, 75,224, 64, 77, 51, 86, 37, 72,113,221,243, 46, 22, 37,161, 21, 81,118, 59, 86,172,117, +218,208,186,154, 41,107,236,105, 16, 42,159,147, 63, 83,101,101, 80,105,176, 68, 44, 17,167, 18,214, 42,116, 99,152,188, 34, 24, +240, 86,186, 35,227, 12, 77, 93, 81, 21, 38,183,181, 53,149, 22,181, 48, 70, 75,119,167,196,190,167, 72,144, 3, 77,219, 98,140, + 97, 24,134, 21,222,178, 48,150,171,202,225,156, 41,147, 12, 47,157, 67, 35,135,240, 52,207, 28, 78,167, 75, 32,193, 90,128, 82, + 33,110, 45,249,226,165, 24,235,242, 50,114,217,131,155,197,102,118, 61,125, 94, 8,109,249,218,191,145, 63, 22,186,250,180,224, + 95, 67,134, 62, 18,162,144,151,142, 57,165,167, 59,159,247,186,242,235, 7,247,186,204, 46,105,114, 79,222,105,190,138,237, 45, + 31,162, 1,146, 86, 79,181, 36,139, 56,239, 35, 84,185, 39, 99,254,229,102,191, 50,205,121, 50,185,200, 87,142,149,203, 5, 88, +151,130,151,209, 41,240,139, 31,252,128,255,237,191,254,111,217,248,192, 95,254,242,175,120, 51,237,209,167,150, 47, 62,255, 1, +255,234, 95,255,107, 62,255,242, 51,134,227,129, 99, 45,201,106,255,241,151,127,195,237,246,134, 78, 59, 94,165,196,193,123, 84, + 85, 51,237, 15,108,183, 27,110,158, 61,227,205,219,123,188, 17, 12,232,148,102,108,229, 74,226,154, 32, 80,207,231,243,218,129, +100,165, 56,157,207,220,221,238,240,243,149, 21,118, 73,177, 11,145,190,223,176,127, 60, 50,207, 1,173, 13,119,119,119, 12,195, +128,171,106, 94,191,126, 45,153, 7,177,156, 1, 87, 95,128, 84, 58, 11, 17,159, 89,252, 60,178, 63, 30,185,187,217, 48,142, 19, +187,221,142,227,241, 68, 93, 89,200, 25, 63, 14, 28, 15, 7,113,183,168,140, 85, 48,205, 35,214, 85, 56,173, 25,142, 71,108, 9, +161,154,130,140,159,125, 8,132,156,241,243, 68, 76, 98,191, 50,229,156,138, 74,210,224, 4, 45,191,104,127, 32,133,180, 78,255, +114,217,125,199,194,185,183,214,226,231, 88,148,209,165, 49, 42, 20, 57, 41,176,229,169, 73,137,166,110, 25,142, 71,180,146, 0, +170, 24,210,202, 2,128,200,249,124, 46,227,240, 72,221, 52,235,153,105,140, 33,248,180, 10,180, 94,190,124,190, 94,164,154, 70, +162, 89, 99, 12,120,175,232,251, 94,148,220,235,199, 32,108,139,186,174, 80,135,147, 76, 4,230, 25, 16, 66,103,142,162, 37,216, +237,118,188,126,243,142,190,219, 96,235,154,227,249,140, 43,156, 1, 87, 89,206,231, 19,183,183, 95,202,238, 89,101, 54,155,158, +183,111,223,137, 63,127,158,216,238, 54,196, 20, 36,200,231,176, 95, 21,251, 33, 4,250,237,150,195,241,200,221,237, 22,239, 35, +227, 56,210,214,149,156,175,167, 51,125,223, 83, 85,134,211,233,196,118,179, 33,167,196, 52,207,136,179, 76,243, 87,127,245, 87, +220,222,222,138, 19, 34,149, 60,244,202, 50,156,143,244,219, 29,219,237, 6,231,100,133,113, 58,157,105,107,199,249, 60,114,115, + 35,240,163,195,241, 92, 38, 71,145,166,169,168,107, 87, 64, 64, 9,156, 66, 71,195,249,116, 18, 0, 87, 17, 42,107, 37,226,231, + 16, 66, 25,233, 11, 60, 73, 28, 59,151,139,125, 74,233, 74, 71,162, 46,246,182,101, 66, 84,254,238,210,185, 3,216,168, 89, 23, +241, 11,232, 97,249, 53, 37,140, 84, 27,123,213,144,151,145,145, 74, 69,245, 30,177,201,200, 24,207,232, 82,224,196,223,173,244, +146,132,149,200, 74, 70,172, 86, 89,158,239,158,241,108,251, 12,171,172,116,232, 69,166,191, 50,156, 11, 41,142,171, 64, 10, 99, +204,218,197,152,245,144, 74, 5, 80, 34, 12,235,101, 12,161,115, 46,145,161, 73,222,119, 10,114,104,169, 76,206, 30,151, 61, 85, + 78,204, 57,163,140, 37, 46,226, 8,171, 32,136,216,205,149,155, 97,237, 20, 58,229, 98,187, 50,164, 36, 46,238, 20, 3, 41,148, +220,228,148, 72, 44,169,110,160,147, 33,153,153, 68,196,103, 75,159, 13,106,201, 70,214, 22,239,229, 5, 28,166,153,105,142,140, +179, 60, 64,117, 18,225,132, 5,156,214, 96, 82, 81,220, 75, 40, 76, 93, 89,148,214, 52,109,141, 86,178,194, 48,214,160, 76,197, +126,240,104, 2, 77,109,169,107,139,117,166,112,144, 53, 85, 83, 97,152,137, 83, 40,250,188,146,229,172, 29,181, 51,208,152,149, +234,230,172,160, 34, 43,173,228,237, 53,181,232, 18, 12,132, 36,179, 9,107, 18, 49, 15, 96, 2, 55,155,158, 20, 60,167,243, 9, +138,122,185,174, 37,220,165,107, 91, 72,145, 56,207,228, 50,133,137, 89, 20,190,251,227,153,253,126, 44,241,179,146,134, 84, 84, + 14,228,101,187,174, 47,118,187,245,254, 24,245,186, 28,138, 87,115,242, 85,104,150, 46,158,242, 15, 16,178, 75,162,159,142, 31, +133,196,234,178,203, 72, 92, 21,239,235,130,112,245, 92, 88,165, 63, 80,197,191,143, 87,205,165,155,129, 84,112,160, 23,207,250, +245,197, 33,189,103,207,188,140,251,213, 19,184,204, 19,187,218, 19, 61,192,133, 53,159,175,208,185,145,242, 49, 40,233,172, 18, +186, 64,242,162,176, 14,180, 34, 5,133, 67, 99,243,196,239,191,184,227,127,255,103,127, 66,123,124,203,215,251, 71,230,156,209, + 85,203,243,207, 62,231, 47,254,250, 47,249,234,119,127, 76,136,145,231,141, 64, 78,106,215,225,110,122,126,243,234, 21,223,251, +106,203,223,254,251,255, 64, 74,153,231,187,150, 47,187, 29,219,110,203,191,251, 79,111, 24,180, 98, 63,142, 68,163,152, 19,212, + 24,170,198,202,193,159, 19, 49, 75, 56,136, 49,226, 29,143,222,163,114,166,182, 74, 58,205,178,122,211, 73,190,231,227, 44, 23, +162,148, 21,109,219,113, 56, 30, 57,157, 71,212,121, 38,121,133, 78, 26, 85,246,144, 57, 39,148, 81, 43,136, 74,105,139,143,137, +164, 34, 85,227, 24,194,132, 26, 78,160, 51,214, 42,198,195, 17,221,117,152, 4,135,251,135, 18,232, 4,199,135,123,136,129, 28, + 3, 62,203,234, 77,165, 76, 86, 90,242, 34,180,248,236, 83, 92, 50, 2,100,231,106, 11,170, 25,165, 57, 79,158,144,210,154, 61, +144,148, 41,182,177,114, 48, 39, 85,214, 33,172,206,163, 57,148,131,187, 88, 58,149,149,201, 88, 12,145, 48,123,177,179,206, 17, +219,200, 72, 62, 22, 33,171,209, 66,142, 90,189,214, 73,244, 74, 40,201,136,152,102, 81,119,107, 37, 30,124,109, 53,227, 28,217, +110,183, 28,246,143,107,161,142, 11, 74, 59, 69, 12, 14,171, 37, 89, 46,132, 36,147, 66,109, 11, 61, 17,158,223,238, 72, 97,190, +116,250, 69,151,162,148,248,211,187,182, 33,196, 9,165,165,139,183,149, 52, 61, 93, 93, 23, 78,189, 98, 14, 30, 98,192, 85,150, +231, 55, 91,188,159,201, 58, 51,207,194,231,232, 55, 29,143,135, 3,218,192, 60, 75,129,172,235,134,148, 20,223,188,122,199,110, +183, 99,219, 24,198,113, 96,179,169, 57, 30, 2,126, 30,164, 1,169, 45, 16, 10, 16, 7,218,118,139, 15,129,221,205, 29,147,159, + 24,222, 13,124,249,197, 23,168,130, 48,222,110, 5,139,171, 20,244,109,205, 48,207, 76,147,198,199, 72, 66,115, 60, 79,180, 77, + 71, 78, 39,252, 56,163,140,244,134,243,228, 87,107, 94,223,247, 50, 29,105, 42, 66,136, 56, 91,173, 13,144, 49,165,193,243,146, + 84,151, 72, 37,138,119, 42, 77, 64,177,117,166,136, 74,225, 42, 4,106,209,230,232,203,179,175, 47,103,157,253,168, 71, 86, 61, + 29,195, 95, 44, 59,229,212,204, 23,149,242, 34,175,127, 63, 55, 99,217,117, 47, 40, 76,165,100, 74,109,180,225,249,221, 51,154, +186, 89,111,152, 11,223,115,121,159,113, 77, 83, 19,191,180,210,250,189,176,143,244,244, 19, 76, 2, 5,185, 56,235, 18, 90,103, + 65,191,146,208, 38,175,202,121,185,180,134,210,109, 74,177, 78, 8, 53,168, 50, 6,229,228,240, 55, 42, 99, 93,146,252,241,204, + 37,175, 29, 35,152, 89,109, 72, 58,161,163, 18, 81, 75,202,228,164, 87, 10, 86, 52,153, 57, 6,116, 80,248, 8, 54,202, 33, 60, +205, 51, 49, 82,196,111,194,198,246,169,188, 40,211, 68, 50,210, 21,107, 35,180,170,202, 25,218,202, 81, 87, 22,109, 53,174, 50, + 37,175, 92, 82,212,148, 49, 36,229, 56,207,137, 24, 18,117,213, 22,162,156, 35, 6,201, 90,134, 84,190, 62,145, 28,242, 58,146, + 51, 74, 18,136,172, 17, 12,172, 0,119, 82,209, 27, 72,232,132,179,154,202,200, 46, 59, 36, 89, 15,148,228, 89,172, 21,171,203, +195,254, 65,184,197,198,208,214, 53,125,223,173,220,235,180,162, 24, 99, 25, 23, 6,198,113,228,221,253,129,113,144, 32, 10, 93, + 20,252,170, 76, 64,210,149, 11, 92,189, 55, 63, 87,234, 59, 40,233,249,226, 33,127, 98, 41, 83,223, 62,194,126, 31, 21, 43,235, +150,242, 93,158, 21, 20,164,163, 70,173, 10,147, 39,153,229,235,126,235, 34,106, 73, 31, 68, 35,229,167,252,135, 79, 88, 83, 62, + 37,138,251,164,165, 45,243,225,215,235,201,133, 68, 72,103, 85, 42,159,138,214,228,171, 76,116, 75,226, 71,183,119,252,143,255, +236,207,121,124,253,138, 57, 39,246,195,192,235,227,153, 57,193, 95,255,242, 87,204, 41, 96,140,163,113, 45, 95,127,253, 13,182, +105, 56,198,196,155,135, 71,220,166,231, 47,127,245, 43,230,156,216,244, 27,246,199, 35,174,170,240, 72, 20,240,209, 7,166, 4, + 62,122,121, 29,181, 46,254,100, 56, 31, 79,248, 16,112, 85, 93, 38, 88, 97,205,100,168,170,154,249, 28,228,252,200,170,140,178, + 13,115, 8,226,179,214,134, 99,137, 86,142, 49, 98,148,248,174, 99,188,176,217,181,186, 26,207, 35,122,147, 16, 19, 49, 43,124, + 0,167,107,230, 16,217,159, 70,172,182,226,139, 62, 31,214,195,114,201,190, 70,153,245,123,104,242,190,116, 70,154,168, 46,225, + 78,185, 56, 60,252, 24,113,181,193,123,209,211,136,240, 74, 18,221, 22,162, 91, 6,113,249,228,139,107, 40,149, 11,158, 41,228, + 52, 97,116,128,169, 45,201, 11, 4,197, 88, 17, 11,186,198,114, 10,146, 1, 31,128, 24, 34,174,173, 24,131, 88, 71,179, 86,184, + 2,176, 82, 41,149,181,131, 89,163, 60, 23,107, 91,200, 23,162,226,249, 60,162, 94, 72,106,217, 48,158,105,218, 94,116, 57, 70, +178, 46,102,239,105,219,237,170, 80,151,177,244, 76,229, 28,243, 60, 20, 37,125,205, 28, 60,117, 93,139,134, 65,129, 53,150,205, +166,146,194,173,149,136,202, 80,184, 24, 56,159,207, 60,123,246,140, 99, 65,167,118,125,187,218, 24,111,110,132, 59,127, 56, 28, +214,250,179, 63, 28,184,187,189,229,225,112,160,109, 97,158, 2,211, 40,162,180, 24, 19,175, 95,191,161,109,235, 34,210,173, 80, + 40, 66,240,235,212,215, 57,187,162,135, 79,167, 35,125,223,151,179, 73,177,217,108,153,166,145,186, 18,127,250,227,227, 35,149, +179,101,124, 30,128,196,102,211, 51, 77, 19, 90, 71,198,113, 96,219,223, 65, 11, 3,131,136,175,163, 68, 78,123, 47, 83,132,113, + 28,233,186,142,121,246, 24, 83, 68,117,214,136, 85, 57,164, 43,209,106,166,239,219, 21,226,179,138,191, 75,119,190,140,239, 87, + 55,206,251, 43,191, 43,104,214,135,227,247, 92,102,243,239, 83,181,174,186, 20,197,181,157,237, 3,101,206,147,236,102,174, 18, +217, 36,103,183, 97,179,217,136, 8, 99, 37,194,233,245,109, 47,254,210,235, 11, 69, 44, 89,233,198,184,130,139,101, 61,116,229, +224, 77, 37,123,186,216,200, 72, 18, 50, 98, 19,214, 44, 93,156,236,236,231, 32,118, 50,149,164,232,107,172, 68, 31, 42, 81, 57, + 58,109,129, 74,212,226,197,123,190, 8,206, 22,239,103, 44, 10,246, 28,115, 1, 96,152,181,104,105, 16,127,186,137,197,227, 45, + 99,240, 92,236, 99, 11,186,210,135, 36, 59,237,184, 40, 53, 19,104,129,216,212,181,165,113, 2,191,232,155,138, 77,215,178,221, + 54,104, 3, 89, 95, 60,212,206, 90,180,173,152,163,198, 7,143,143,137,122,211, 97,171, 26,140, 65,165, 68, 93,203, 65, 37,135, + 80, 46,214, 37,181,106, 2, 28, 98,167, 49,214,209,214, 77,233,254,228, 33,182, 78,227,156,161,178,242, 85, 54, 89, 49, 37,189, +190,174, 77,211,160,149, 28,204, 11,253,168,174, 43, 25, 95,150, 56,203, 92,252,172, 33, 9,249, 43,229,192,225,112,226,213,171, +215, 18, 97,169,101, 37,177, 76,139,214,113,105,202,171,176, 71, 61, 81,117,124, 58,150,116,233,122,175, 47,167, 23, 76,251,183, +171,212, 63, 40,132, 49, 61, 13, 42, 84,121,157, 17,169, 75, 20,215, 7,244,183,235,143,115,189,124,126,132, 57,127,189, 86,121, +127, 31,255, 93,177,174, 79, 63, 15,245, 1, 8,231,125,196, 13,101, 68,107,138, 93, 42,100,133,210, 21, 42, 5,108, 10,124,239, +102,199,255,244, 95,253, 19, 54, 9, 14,195,196,201,123,222, 60, 60, 80,111,118,204,231, 51,159,223,222,242,248,235,175,241, 62, +242,238,176,167,187,185, 5,107, 57,143,129,237,237, 51,190,126,251,150,144, 6,186,182,199, 26, 71,181,169, 57, 14, 3,141,173, +249,230,237, 3,147, 6,229, 12, 62, 69,154,206,174, 41,130, 97,158,215,169,145,216,136,140, 68, 39, 7,138,194, 91, 64, 84, 90, + 25,217, 63,150,203,147, 15,158,170,114,188,253,230, 13, 85, 45,244,174,190,235,184,127,183,151,238,197,200,186,111, 89, 89,152, + 34,236,234,154,150,211,225, 36,164,193, 40, 33, 45,202,106, 66,132,224, 61,112,230,166,111,132,152, 86,236,181, 49,137, 90, 61, +164, 1, 99, 45, 62,137,189, 42, 21, 33,175, 86, 74, 52, 26,106,177, 47,202,235, 39,214,166,136,210,178,182,202, 5, 30, 37,193, + 36,185, 76,163,202,107,183, 76, 94,180,198, 46,194,208,162,208,206,203,129,110,173, 92,250,163,160,110,115,138, 34, 70, 11,144, +202, 37,163,170,107, 76,129,155,132,144, 48, 54,209,180, 13, 67,241,100, 91,107, 11,180, 39,174,150, 94, 17,220,202, 84, 32,248, +192,219, 55,239,120,118,119,195,187,251, 7,148,169,169,234, 74,200,112,198,144,162,127, 15,112,148, 86, 53,185,179,142, 16, 70, + 98,146,232,217,186,145, 16,168, 24, 19, 49, 78, 52, 77, 67, 93,215,188,122,253,154, 23,159,117,164, 73, 44,140, 15,247, 39,110, +111, 45,155,109,199,121, 56, 97,172,124,222,135,195,161,248,180,165,113, 16,168,150,101,127, 56, 64, 35,143,205, 56,206,244,157, +112,227, 67, 12,130, 12,211,150, 24,225,113,127,100,154, 29,125,225, 32, 44, 5, 61, 4, 97, 6,200,184, 27,201,140,175,107,154, + 70, 58,232, 20, 43,234, 74,148,236,155,190,231,237,219,183,180, 93, 71,211,182,168, 20,137,133,102,186,164,215,221,223, 63,208, +247, 29,214, 85, 40, 45,107, 69,193,100, 55,242, 62,252,196, 60, 79,108,183, 91, 30, 31, 15,107,170,101, 87,183, 37, 81, 84, 49, + 13, 3, 74, 11,109, 51, 4, 97,219, 63,101,188,200, 5,115, 97,240, 47,171,151, 85,208,158,159,174, 3,237,199,163, 31,129,143, + 28,164,234,170, 37, 80, 43,141,150,167, 55,133,172, 86,161, 82,190,194,107, 46, 69,126,187,217, 80, 55,245,250,129,230,171,110, + 93,175, 36,169,116,249,198, 41, 35,255,148,203,141,243, 74,205,172, 68, 66, 42, 15, 69, 46,248, 79,149, 10, 49,109,241,141,151, +140,244,162,246, 21,111,185, 64, 96,156, 82, 76,126,198, 86,173,252, 59,163, 4,173,170,140, 20,241,228,201, 74,248,230, 90,151, +104, 82, 37, 49,150, 57,107,178,201,152,168,100,108,150, 46,123, 94,103, 20,218, 68, 33, 77, 89, 93,108, 97,101,252,155, 53,211, + 24, 86,176,134,144,231, 4, 96,209, 54,134, 93, 87,211,183, 21,155,166,102,211, 57,182, 93,203,110,187,161,235,106, 66,242,156, +167,179,116, 4,202, 8,153, 75,107,246,239,206,188,189,127,192,216, 6, 83, 53, 24, 87, 19,115, 64,107,217, 3,170, 20, 80, 41, +226,172, 41,168, 69, 77,133,145,110,223, 54,232, 60,211,212,134,214,137, 7, 54, 68,249, 26,214, 86, 83, 55,150,214, 42, 72, 30, +159, 20, 54,102,146, 18, 55, 66,215,239,240,126,100, 26, 79, 88,173,168, 43, 71, 91, 87,212,149,252,168, 42,135,159,211,133,161, + 15, 40,101, 57,159, 71,246,135, 99,217,155,151,105,229, 85,124,224,194, 26, 88, 70, 47,215, 80,164, 92, 46,115, 60, 65,190,191, + 23,161,154,151, 93,242,199, 11,185,202,124, 68, 37,255,180,104,170, 43, 22,194,106, 19, 83, 75,194,220,199,213,241, 31, 43,202, + 79,117,164,151,105,131, 34,127,235,229,228, 83, 23,144, 15, 69,113,249, 91,121,144,170, 8, 96, 33, 19,244,242, 60,149,139, 91, +130,207,186,134,255,238, 31,254, 3,190,208, 6,117, 30, 72, 57,243,230,112,164,221,222, 48,199,196,151, 95,126,143,166,237,121, +249,197,151, 76, 49,177,123,249,130,186,235, 56, 30,206,236, 31,222,113,251,252, 37, 97, 78,220,188,120,198, 97,154,152, 66,224, +225,176,231,225,120,226,255,254,245,223,242,183, 15,143,236,158,221,225, 39,207, 56, 30,113,213, 86, 46,108,234, 34,132,147, 81, +243, 5, 37, 26, 53, 69, 64, 89, 10,219, 85,144, 69,202, 18, 38,212,118, 66,225,242, 62, 20,175,180,167,170,106,198,211, 84,178, +217,165, 49,113,206, 97, 43,153,108,121,239, 69,180, 25,101,103,109,180, 38,162, 81,202,144,147,226, 52, 6, 96,194,154, 44,142, +156, 84, 60,252,202,200,212, 75,165,213,230,232, 67,148, 95,103, 89,145, 45,214,178, 24, 34, 33, 9, 1, 91, 8,139,233, 42, 1, + 78,222,239, 42, 18, 90, 6,212, 75, 72, 71,121, 6,170,178, 15,142, 37, 86,186,107, 36, 18,116, 17, 3,230, 28,133, 72,215,181, + 28,246, 39, 92, 93,225,207,231, 98, 39,173,240, 62,144, 0, 31, 34, 55, 77,131, 62,158, 8,133,191,174,138,234,122,153, 22, 44, + 54,203,140,194,251,196,249, 60,242,252,217, 29,231, 97, 34,100,205,247,119, 91,252, 60, 50, 78,129,166,118,235, 36,202, 24,181, + 94, 20,166,147, 68,154, 46, 17,176,251,211,137,186,107, 48, 74,232,114, 77,211, 16, 83,100, 44, 65, 40, 33,134,117, 68,223,182, + 39,222,221,191,229,238,238,150,135,135, 71,230,121,194, 20,174,121, 8,161,132,207,244,156, 79, 3,109,219,210,214,181,164,187, + 5, 25,139,239,247,143,180,109, 79, 85, 85,197, 38, 39, 23,154, 37,138,215, 90, 71, 46,151,146,105,154,104,219,150,253,254,129, +187,103,207, 48,122, 94,139,179, 82, 34,160,134,204, 48, 12,212,149,184, 50,250, 77,207, 60,123, 65,183,214, 85, 57, 31,148,176, +235,219,134,113,154, 9,135, 19,169,208, 18, 37, 4,198,150, 73,156, 76, 42,166,121,162,174, 52, 85,101,153, 38,185, 8,121, 63, +161,148,193,185,154,202,245, 12,231, 65,254, 94, 35,208,161,224,227,202, 90,112,214, 97,136, 79, 38,143,105, 37,111,230,117, 18, +190, 92, 52,109,126, 15,134, 33,197,248, 2,126, 89, 65, 83, 57, 94,118,148, 87, 16, 26, 74, 38,177,190,246,210,114, 73,158,186, +196, 74, 10,142,117,211, 11, 53,142, 28, 65, 61,165,229, 72,113,207, 31,137,149, 76,101, 60, 27,151, 88,143,162, 12,103, 13,102, + 17,160, 83,129,199, 24,176,203,104,180,168,214,115,177,118, 44,176, 25, 91, 44,110,231,113,194, 81,137,218,220, 92, 91,168,244, +147,139,203, 50,170,151,102, 65,246,247,165,185, 94,131,106,180,134,170,228, 39, 59, 39, 40,194,198, 89,218, 90, 70,220, 57, 69, +252, 28, 57,171,113,125,144, 43, 29,112,198,210, 54,150,109, 95,115,179,173,217, 52, 53,125, 91,179,233, 44,219,190,163,239, 90, +148,209,156,198,136,196,143,139,127,211, 40,205,121,158,121, 60, 28,120, 60, 28,113,221,115, 92, 85,163,172,129, 16,113,149,163, +115,150, 86, 69,116, 82,212, 90,163, 11, 13, 38,203,113, 70,101, 20, 93,221,178,233,219, 66,194,179,204,211, 76,202,137,202, 26, +234,198,208,152,140,198, 48, 39,195, 33,120,102, 63,160,141,162,221,116,188,122,251,134,148, 38,106, 87,211,214, 21,109, 83, 83, + 45,204,108, 13, 83,140,101,228, 40, 94,122,109, 13,195, 73, 60,249, 23, 42, 96, 92,245, 26, 31,100,156, 63,157, 79,175,221,141, +226,219, 59,218, 53,225,237, 83,163,235,156, 63, 16,188,165,116,185, 76, 94,255, 67,117,165,198,127,223, 63,254,233,236,243,229, +130,123,193,156,170, 18, 33,252,105, 40,251,119, 43,219,245,213, 42,106,233, 20,249, 86,184,140,148,240,136,112,142, 51, 25, 34, +232, 24,185,113,142, 63,249,131, 63,228,119, 54, 27,190,172, 27,254,250, 87,191,228,241,124, 34, 25, 69,210, 26,167, 68,136,121, +115,115,203,219,195,137,118,187,197, 40,195,253,235,119,204, 33,162,157,227,254,176,231,116, 60,242,249,231, 95, 50,218,204,111, +222,220, 19,148, 97, 63, 5,126,249,205, 27,250,237, 29, 49, 8, 89,236,238,110, 35,152,204,224, 5, 74,164,229,172, 89, 20,191, +151,203,141,140,201,167,201, 99,140, 20, 1, 83,236, 69,139,194,220, 7,137,183,124,251,246, 1,208, 88, 99,209, 90, 83, 53, 53, +126,158, 36,157,208,213,212,109, 11, 10, 81,186, 79, 51,117, 85,113,154, 79,104, 43, 52, 56,227, 12, 36, 77,152, 60,100, 56, 12, + 1,107, 50,181,147, 52, 70, 99,116,201, 85, 23,165,185, 82,194,133, 8, 37, 21,114,157, 14, 5,233,158,174, 65, 53,233,202, 38, +164,203,120, 93,197, 18,144, 85,132, 84,170,128,160,124,241, 65,107, 99,208,214, 50,159,134, 2,124,233, 87,100,104, 76, 9,231, +164,216, 25,171,145,141,163,140,123, 39, 47,132, 71, 84, 68, 41, 3,200,184,223,135,200,237,237, 13,175, 94,191, 38,101, 41, 60, + 97,161, 74, 46,141, 87, 33, 36, 74, 23,111,177,182,194, 89,199,225,112,224,124,190, 65,171, 68, 91, 87,156, 78, 39,186,182,121, + 34,224,210,229, 50, 97, 64, 75, 38, 0, 0, 32, 0, 73, 68, 65, 84,127, 56,157,233,251,142, 80, 40,104, 33, 68,162, 18, 71,143, +247,194,118,223,239, 15,216, 98, 11, 52,133, 57,208,245, 45,191,252,229,111,184,189,189,161,109,107,177,183,105, 75, 83, 82, 30, +119,187, 45,160, 56, 30, 79,178,222,107, 91,134,225,204,166,107, 75, 54,187,103, 24, 78, 56, 87, 11, 70,182,184,108, 4, 19, 27, +138,125, 47,112,119,123,131, 82, 21, 49, 5,218,174,229,240,248,192,166,223,173,160,172, 16,130, 92, 40, 10,211, 62,147, 87, 79, +189,171, 60,231, 97,196,150, 26,229, 42, 43, 26, 3,173,169,170,106,221,237, 47, 83,144, 5,208,179,124,141,189,159, 5,182,230, + 92,193, 24,231, 98,165, 84, 76,243,200,110,179, 41,112, 34,169, 43,186,208,248,174,167,214,174,150, 41,203, 7, 41,138,133, 19, +179,216, 61,149, 2,187, 46,228,212,251,227,244, 43,122, 91, 17,118, 72, 66, 86,254,176,131,127, 47, 56,114, 65,192,138, 56, 78, +110,229, 70, 41, 42, 91,209,182,173,140, 89,139,184,236, 34,148, 87,107,182,249, 37,244, 98,233,210,179, 36,177, 17,113, 74,198, +201,194,113, 81, 79, 2, 71,132,224,150,177, 74,226,251,196,164, 47, 15,217, 34,170,178, 86, 81, 59,195,228,147,216,178,114, 34, +250,169,192, 90, 40, 0, 6, 3, 89,148,161, 42,153,226, 49,102,117,228,231, 98, 37, 96,177, 62,233, 92,186,103,181, 90, 47,156, + 81, 52, 86,211, 88, 77, 87, 57,234, 74,196,114,222, 71,156,214, 56, 39,183,183,156, 42, 42, 91,209, 53,142, 77, 87,177,219, 84, +116,109, 69, 87,215,180,173,161,107, 28,174, 50, 76,179,112,130,151,203, 70, 40,252,224,115, 12,236, 79, 35, 83,140,212,206,130, + 41, 66,178, 28,105,140,163,181,154, 94, 27,180,178, 84,165, 55, 48, 78,176,135, 42,131, 85,134,190,115,220,236, 90,154, 74, 98, + 39,135, 81,198,249,198,104,172, 73, 88,167, 36,176, 37,106,194, 97,228, 60,141, 84,109, 35,233, 68,167, 35,149, 85,180, 77,197, +182,111,217,109, 58, 33,216,149, 8,193, 24,202,216, 61,229, 53, 56,225,112, 56,174,217,208,215,164,192,252, 94, 81,204, 87, 44, +248,203,104,253, 90, 28,246,241, 45,242,117,238,208,229,118,123,161,187,105,174, 11,235,133, 19,127, 81,205,151,223,191,178,164, +171, 53,230,141, 39, 94,243,139, 58,245,227, 93,191, 86, 2,106,146,189,233, 50, 61,184,110,225,243, 71, 45,112, 31, 43,238, 31, +187, 68, 92, 39, 17,190,175,196, 95, 24,216,217,232,117,106,145, 10,179,161, 79,153, 63,250,217,207,249,197,231,159,179, 45,224, +165,253,241, 64,179,217, 48, 14, 35, 95,253,248,199,252,197,191,251, 11,108, 85,243,246,221, 35,111,223,188,229,247, 94,124,198, +255,243,111,254, 45,159,125,254, 37,227, 52,113,156, 70, 92,223, 83,239,182,252,250,221, 91,222, 29,143, 60, 14, 3,251, 57,240, +102,127,192,117, 59, 76, 85,243,205, 55,191,166,235,133, 15, 62,156, 7,182,219,110,205,186,134,140, 46,154, 13, 83, 46,209,125, +215,149,241,232, 44, 29,240, 2,227, 32, 51,249, 25,180,230, 52, 12,226, 42, 73,229,172, 50, 50, 66,215, 90, 68,162,218, 90,186, +190,199,185,154,119,247,247,204,243,204,118,187,229, 88, 96, 42,153, 32,228,197, 90, 84,205, 62,148,253,183,214, 50,117, 75, 69, +228, 24, 67, 33,168, 41, 82,152, 37,103, 61, 95,246,226, 57, 39,113, 97, 80,176,210, 70,175,138,125,141, 70, 59, 41, 16,190,168, +147, 77,165,241, 62,136, 46,167, 8, 50,141, 46, 99,254,148,104,156, 35,148, 63, 91, 92, 34, 97, 8,236,118, 59,137, 48,141,129, +166,173,153,166,179, 92,102, 74, 64,139, 82,138,152,163,196,217,162,133,243, 30,197, 35, 45,121,225, 50,150,223,237,182,178, 59, +191, 70, 30,103,161,165, 77, 41, 48,122,207, 52,207,244,253,150,211, 48,113,127,191,231,251, 95,190, 36,103,225,234,135, 40, 99, +255,211,241,192,102,179,145,110,209, 40,156,147, 75, 85, 14, 34,174,157,231,153,190,107, 37,187, 61, 6,142,199, 3,159,125,246, +146, 55,111,222,202,186, 45, 68, 66,246,108,251, 30, 99, 52,227,112,102,211,247, 12,231, 83, 57,167,133,100,231,125, 20, 62,128, + 18,219,221,221,221, 45,206, 89, 78,143, 66,176,163, 56, 25,134, 97,228,225,225,158,205,166,163,105,156,236,189, 17, 50,156, 53, +134, 16,102,170,186, 34,132, 25,163, 52,205,102,203,249,124,162,105, 58,198, 34, 76,235,251, 94,166, 24,229, 16,169,170,138,199, +199, 71,218,182, 43,107,147,184, 78,151, 42,103, 87,203,228, 18, 41, 62, 14,146, 99,224,189, 47,107, 4, 79, 85, 85, 34,142,158, + 3, 96,232,186,158,148,202,159, 7,209, 79,104,173,202,228, 65, 23,187, 91, 40,126,127,105,192, 82,138,120, 47, 17,173,195, 48, + 60,201, 96,121,186, 22, 47,238,163, 11,105,227, 99,221, 67,126,210,212, 92,135,105, 92,139,228,158,230, 80, 46,214,179, 75, 98, +214,114, 32, 59, 87,173,164, 51, 57, 96,227, 85, 39,191,248,207, 47,114,125, 74, 81, 94, 66, 93,180, 46,106, 59, 45, 42,112,137, +140,204, 43,104,198,148, 12, 99, 81,251, 74,116,226,147,128,141,114,142, 90, 91,210,212,172,194, 57, 69,240, 51,138, 10,141,100, +224,230, 84,118, 65,106,193,129,234,117, 34,176,140, 56,174,169,118,166,252, 61,173,192,154,140,213, 50, 41,176,106, 73,110,211, + 84,133,203, 92, 25,233,128,234,202,210,123, 15, 89,124,221, 77,229,104, 27, 67,215, 90,218,202,209,212,150,202,128,213, 2, 86, +246,243, 2,132, 48,164,132, 60,236, 57, 51, 97, 9,217,128,173,208,214,149,238, 55, 64,140,212,166,166,214,224, 52,130,124, 85, +170,176,151, 19,182, 82, 52,214,209, 86, 45,117,173,169, 43, 69,109,193,232, 68,119,211,173, 7, 75, 78, 1, 87, 25,154,182,197, +143,153, 97, 10,204, 49, 81, 53, 45,251,211, 81,110,145,214,210,182, 21, 55, 55, 27,110,110, 54, 5, 79,169,214,180, 39, 9, 47, +136,104,171, 56,157,199,226, 83,190,158,133,151, 21, 9,122, 13,250,200, 87,236,234,245,210,169, 46, 34,206,111, 13, 56,249,192, +200,118,197, 74, 80,215,187,238,197, 86,198, 26, 53,122,133, 1,188,242,174,191, 7,156, 89, 22, 80,234,211,185,236,215,112,154, +245, 93,101,117, 85,212, 63,238,167,255, 88, 97,255,246,177,252,135, 65, 46,235,174,183, 8,107, 98,113, 15,216, 44,121, 2, 46, + 78,252,241, 31,252, 33,127,252,179,223,227, 38, 39,172,201,124,253,248,128,106, 90, 30, 14,103,190,248,173, 31,240,245,235,215, +220,188,120,193, 55, 15,143,156, 39,143,113, 29,175,190,126, 69,187,187,225,205,241,200, 48,207, 96, 43,178,182,124,179,127,195, +152, 4,101, 60,132,196,227,228, 57,121, 65,122,190,125,243,150,218, 25,140, 74,228,232,177,181, 93,191,118, 70,107, 25,205, 22, +255,181,181, 34, 2,157,134, 81,138, 90,200,107,182,182,177,174,124, 13, 19,202, 84,196, 56, 51, 12,211,122, 16, 46,144,153, 24, + 35,117,219,208,182, 21,198, 58, 78,167, 3,177,136,213, 98, 20, 44,105,140, 1,107,228,227, 48,214,144,114,196,212,138,182,239, + 57,159,206,132,152,113,181, 46, 7,244,180,102,156, 95,248, 20,194,109, 16, 60,239, 37, 96, 5, 37, 69,218,186, 74, 60,234,229, +220, 19, 44,181,124, 71, 90,103, 8, 25,198, 73,232,119, 49, 37,178, 54,216,166, 97, 62,159, 37,101,110, 22,226,165, 66,139, 90, +190,136,212,154,166,102,127, 24,216,108,110, 24, 39,177,167,205, 62, 20,114, 94,162,105, 91,102, 31, 68,179, 83, 86, 13,211, 52, + 51, 12, 3,207,110,239,248,230,213,107,234,170,194, 89, 67, 76, 23,220,246,114,225,173,235,154, 20,133, 31,209,117, 61,153, 55, + 88, 43,156,251, 20,229,153,220, 31, 14,188,172, 95, 20, 64,142, 52, 92,117, 93,227,125, 44,196,204, 76,101, 29,179,159, 48,229, + 34,235,253, 92, 88, 23,138,113, 26, 69,139,163,165,159, 52, 70,113,187,235, 72, 49,136,158,168,170, 57, 28, 79,220,220,220,209, +182,173, 92, 36, 66,164,239,123,134,225, 36,196,190,170, 98,183,237, 25,134,129,182,235,152,166,137,155,221, 6, 31, 2,167,147, + 20,189,126, 35,180,184,227,225,200,205, 77,143,171, 28,206,218,130,250,150,206,124,211,111, 10,151,160, 98,156, 38,230,121,150, +200, 91, 63,227,181,162,109,218, 53,234,181,105,219,146,255, 46,204,250,186,170,152,230, 89, 10,175,207,101,189, 81, 86,170, 90, +151,122,181,216,254,132,170, 55, 77,179,136,228,194, 36,235, 39,103,139,173,219,150,144,151,101,197, 34, 1, 92,214, 56, 98,193, +233,138,221, 48,148,144,151,244,100,170,184, 64,155, 40, 53,212,242, 45, 41, 81,223, 73,176,186,238,140,212,211, 99, 47, 95,135, + 86,148, 49,100, 93,213,162, 80,205,151, 67,123, 85, 38,231,139,114, 57,175, 93,153, 20,210, 92, 18,106, 76,241, 91,162, 18,202, + 22,210, 79, 41,244,186, 20,215, 5,218,162, 85, 42,194, 57,177, 98, 45,248,240, 84, 80,177,170, 80,216, 76,177,119,248,105,164, +178, 53, 58, 27, 73,169, 42,246, 45,101, 45, 57,249,210,164,169, 21, 62, 34,170,227, 11,109, 79, 43, 25,197, 11,185, 52, 23,218, +155, 36,152,153,178, 11, 51, 86,161, 83,193,249,105,168,156, 34, 39, 41,180,181, 19,238,186, 81, 11, 68, 32,162,112,228, 36,129, + 25,199,227, 25,159, 34,166,170, 65,101, 82,142,132, 0,231, 16, 57, 13,158,172, 12,182,170,100, 15,233, 39, 42, 5, 78,129, 70, +190, 22,149,213, 52,218,208, 84, 53, 77,235,168,106, 69, 95,215, 56,227, 68,249,239, 68,164, 35,147,196, 72, 85, 11, 1,238,116, + 62,225,172, 67,105,203,228, 39, 30,246, 39, 18, 22,101, 43, 14,111,223,145, 19, 52, 93, 75,219,212,116,157,140,222,181,134, 16, + 22,218,158,168, 82, 67,140,196,224,121,220,239,203, 78,175, 64,127,212, 69,112,179, 20,226,172,174,129, 67, 79, 77,231,234,239, + 48,182,126, 26,197, 42,251,252,244, 9,127,247,229, 66,121, 37,234,252,224,239, 61,221,128,103,117, 21, 87,250,169, 93,119, 78, +176, 6, 34, 93, 44, 85,121,205, 76, 16,103,199,119, 21,244,191,203,239,169, 43, 11,221,106,117, 75,249,226, 2,184, 2,231,180, + 1,254,241,223,251, 3,254,251,127,244,143,208,199, 61,141, 49,188,122,247,150,250,230,150,183,127,243,107,190,255,195, 31,115, + 60, 14,244, 55, 91,206,222, 51,105,205, 92, 53, 28, 30, 30,241, 86, 51, 5,207,225, 52,112,247,252, 37,131, 15, 60,156, 71,246, +231, 1, 83,215,196,164, 10,119, 33,163,176,248, 41,224,135,137,221, 93, 7,106, 38, 5, 79, 48,151, 93,127,244,129,166,111,120, +120,124,192, 58,183, 14, 47,172,115, 68,239, 25,134,145, 86,119,104, 35,107,163, 20, 99, 65,116, 58,252,124, 32,196, 88,138,137, + 76,233,150,110,177,239, 27,198,105, 36,207,179,216,137, 82,166,237, 26, 78,167,211,170, 30, 94,226, 49,155,166,102, 14, 19,155, +109,207, 48,156, 65, 71,234,170, 17,110,120, 17,150,250, 84,166,122,139, 55,219,232, 53, 16,105, 73,131, 75,139,112, 76, 21,138, + 88,240, 88,231, 8, 94, 66,102,116,129, 55,101, 5, 49, 10, 68,197, 47,112,156, 34,230, 83, 90,177,217,110,121,247,238, 30, 99, +109,161,144,230,114,198, 81,178,187, 37,221,236,197,139,231,156,134,145,227,249, 72,204, 2,240, 73,100,249, 58,114,241,181,199, + 20,100,135,237,106,250,174,227,176, 63,240,242,197, 11, 94,189,126, 3,234,138,141, 62, 77,236,118, 27,180,170,216,239, 15, 60, +123,246,188,240,235,107,198,113,192, 25,137, 10, 29,167,169, 36, 63,186, 53,129,109,137, 13,141, 81, 50,216, 83,140,168,146, 48, + 22, 99, 16,209,162, 49,196, 28,217,238,182,101,210,232,139, 51, 71,138,170, 82,154,121, 28,185,189,189, 97,152,102,142,167,147, + 20,221,178, 50, 16, 28,172,128,107,150, 9, 79, 83, 87, 24,149,169,107, 91, 46,231,134,246,197, 45,227, 56, 49,205, 19,125,223, +113,107,183,236,247,143, 40,181,161,109,106,201,129, 47, 2, 77,149, 65, 91,137,214,109,219,150,113,154,228, 82, 88, 87,132, 24, +228, 2, 82,213, 43,108,104,113, 89,180, 77,187,174,194,198, 89, 46, 91, 41, 37,230,201, 23,220,175,172, 64, 86,135,152,177,244, +253,134,227, 81, 8,154,206, 57, 80, 2, 1, 27,199,145,218, 53,180,133,192, 41,239,191, 94,131,116, 84, 22,125,201,253,195, 97, + 13,124,201,139,197,243,138, 5,191,136, 29, 83,138,133, 60, 81, 74,105, 86,241, 73,140,234,199, 37,181, 34,100, 90, 14,190,164, +196, 50,115,153, 76,230, 21,179,186, 36,178,105,173, 36, 13,167,114,171, 85, 99, 9, 93, 89,126,142, 69,213, 23, 74, 36, 93, 8, +242,195, 7,177, 6,164, 24,203,152, 44, 50, 39,207, 28,133, 93, 28, 83, 40,194,186,132, 82, 81, 4,114,186, 8,228, 84, 94, 85, +169,210,237, 39, 82, 12,228, 20, 5,173,186,168,218, 83,100, 30, 39,130,151,183,191,124, 60, 33, 37, 98, 22,159,190,214, 6, 99, + 92,129,190, 44,255,189,124,110, 11,146,213,148,184, 86,158,112,239,245, 50, 15,206,203, 78, 95,198,243,149, 53, 52,206,148, 4, + 52, 41, 4,105, 77,166,147,155,217,121,154, 57, 14, 19,227, 28, 36, 66,214, 26,106,103,176,194,116,101,156,102, 78,103,241,126, + 46,197, 68, 84,163,154,174, 50,244,149,102,215, 86,108,219,150,190,171,105,187,138,231,207,110,248,193,247, 62,227,203, 47,238, +120,118, 83,177,235, 12,155,109, 75,221, 56, 66,244, 28, 79, 39,134,113, 36,248,128,209, 6,227, 28,167, 57,240,234,241,192,215, +247, 7,134,144, 57, 30, 79,156,143, 7,156, 49, 52,117, 43, 56, 88,107,174,172,108,129,113, 28,240,126,150,207, 39, 37,142,231, +129,113,156, 73, 42,163,172,190,162, 17,231,171,206,249,146, 53,174,174, 40,135,107,148,174,186,124,191, 62, 73,114, 81,233,201, +143, 37,208,111, 65, 39,234,171,144,147, 39, 23,131,245,151,105, 77,242, 34,167,171,113,251,149, 17, 94,229,171, 81, 60, 79, 28, + 27, 31, 67,185,234,114,113,201, 11,203,247, 58, 31,225, 35, 29,250, 71,187,116,190,203,214,246, 84, 39,160,150,224,224,114, 97, +200, 90, 17, 75, 30,129,203,145, 95,124,241, 5,255,203,159,252, 83,238, 80,196,224, 73, 85,197,187,211,192,235,251, 61,187,187, +151,140, 83, 96,119,251,140,211,232,121,179, 63,240,246,112,100,127, 60,178,185,189,161,221,238, 56,157, 69, 88,234,209,252,237, +219, 55,188, 57, 60,178,185, 17,150,247,224, 3, 65, 41,142,195,153,110,211,146,137, 52, 93, 77,221, 84,235,254, 53, 35, 92,119, + 95,186,215,241, 44,137,101, 41,196,149,176,103,202, 94, 57,150,152,208, 16,101,210,179, 8,145, 98,217,167,215,117,181,158, 87, + 41, 75, 55,125,115,123,195,233,116,102,179,217, 49, 14, 19, 41, 10, 86, 53, 20, 49,148, 60,151, 98,237,114,149, 35,102, 25,103, +143,243,136,209,150,221,238,150,217,207,235,248,155, 18,203, 28, 35,160, 12,174,170, 49,214,149,238, 56, 51,206, 19,211, 28,240, + 33, 49,204,129,243, 28, 56, 79,158,105,138, 12, 99,224, 60, 70,230, 8,131,151,132,197,113, 10,196,164,152, 87,177,154,252, 90, +124,250,150, 97, 56,243,236,217,141,172, 5,114, 36,144, 37, 27, 1,197, 48,140,108,250,158,121, 22,123,225, 60,138,181,108, 56, +157,113,149, 67, 41,216,109, 55, 8,150, 60, 96, 16,231, 78,240,129,211,120,230,246,217,173, 56, 7,234,186, 20,142,244, 36, 48, + 97, 24, 38, 54,155, 13,199,211, 17, 99,117,177, 86,137,238, 40, 2, 85, 85,147, 11,199,189, 42,171,128,156,162,116,243,165, 56, +203, 88, 58, 10,203,164, 4, 86,237,118, 91,172,214, 4, 31,169, 92,181,118,177, 41, 70,252, 60,113,123,123, 67,136, 94, 38,102, + 49,177,219,108,208, 42, 19,227, 76,191,145,120,212,221,110,195,195,195, 61,219,157,140,252, 99,105, 24, 82, 18,235, 99,221, 84, +184, 74,236,187, 77,227,216,109, 27,252,124,102,211,183,108,183,194,177,127, 60, 28,112,182, 18,210, 91,185,244,143,227,136,247, + 51, 90, 43,218,166,190,154,195, 21,155,223, 48, 22, 55, 65, 36, 37, 89, 9,249, 73, 2,184,154,166,198,106, 45, 92, 5, 96,211, +183,226,216, 40, 34, 76,103, 29, 57, 73, 94,188,247,129,170,114,107,190, 65, 93,183,116,173, 4,209,132, 56,175,239,183,114, 21, + 49,200,215,237,176, 63,112, 60, 30,153,231,137,231,207,239,168, 42,183,190, 94, 43, 83,126, 45,232,105,157, 64,106,181,132,174, + 83, 0, 42, 57, 93,117,221,234,130,227,188,106,156, 84,190, 48,183,151,244,170,180, 22,244,184, 64,185,229,231, 28,158,132,185, + 80, 2, 4, 98,217,239,197, 53, 11, 61,175,196,174,156, 36,134, 52,133, 64, 10, 81, 94,192,178,155,141, 89,236, 81, 62,151,188, +224, 24, 32, 5, 20, 30,173,147,116,232, 58,163,244,146,207,156,196,134, 16,203,219,137,130, 80,148,152, 84, 69,237,108,121, 97, +228,193,244, 81,108, 11,145, 68, 82,153,116,181,123, 50, 37,208, 69, 68, 62,194,134,119, 90,227, 74, 65,151,162, 46, 32, 28, 83, + 68, 11,228, 40, 93,119,206,232, 84, 14,250, 34,236,179, 74,172, 99, 40,129,178,196, 28,241, 49,224,189, 16,216,230,121,150, 91, +235, 48, 49,249,136,202,224,200,232, 36,194, 51, 31, 51,195, 48,113, 30,102,148,169, 10, 83, 90,188,233,149,211,108, 91,195,203, +222,242,249,174,227,217,174,227,197,221,150,187, 93,205,174,183,180, 93,133, 49,137,156, 71, 82, 24, 57, 31, 30,121,245,230, 13, +223,188,125,199,105,242, 76,115, 96, 28,103, 72,112, 30, 38, 14,227,196, 49, 40, 38,237,200,198, 73, 70, 52,129,202, 10,238,211, + 24, 35, 64,158, 24, 72, 41,160, 85, 38,132,249,194,222,206,153,113,246,132,245, 50, 71, 81,178,231,213,107,189,228, 12, 25, 52, + 90,153, 75,196,239,117,113, 95,217,254,185,224,124, 47, 63,148, 14,160,228,146,247, 62,240,125, 45,242,232,167,187,248, 92, 38, + 50,139,152, 51,101, 72,145,148,194, 10, 61, 89,133,158,197,121,161, 22,139,249, 26, 3,250,137,139,112,185, 96,101, 20, 49, 75, + 68,238,133, 0, 95,194,126, 83,250, 36, 94,118, 21,157,230,143, 43,236,151,139, 71, 78, 69,143,146,196,158,184, 62, 79, 11,164, + 66, 43, 28,137,223,222,118,252,139, 63,255,167,108,226,196,233,221, 59, 30, 15, 39,116,183, 97,192,240,249,247,126,200, 20, 18, +155,155, 27,190,121,251,142,175,223, 61, 96,155,158,113, 42,105,105, 49,114,222, 31,233,250, 27, 30, 79, 19, 95,191,187, 39,148, +130,180, 63,236,185,127,184, 39, 34, 64,141, 20,188,104, 82, 84,228,230,118,203, 28,230, 85, 20,230, 42, 75,204, 17,101, 12, 89, + 41, 30,246, 71,156,169, 10, 3, 61,173, 23, 54,235, 44, 93,223, 74, 6,131, 82,248, 89,198,237,214, 86,156, 79,103, 82, 9,207, + 80,122,161, 91, 66,191,217, 20,156,105,203,105, 63,160, 17, 49,214,133, 60,169, 86,175,186,113,154,170,117,248, 50, 10, 37, 65, +223,237,120,124, 56,161,144,113,130, 36,159,105, 20,150,156, 52,243,228,169, 43, 1,239,100, 52,198, 57, 66,202,132,164, 72, 88, +162, 50,132, 44,249, 13, 40,135,213, 13, 73, 91, 18,150, 16, 53, 25, 75,202,197, 78,154, 10,107, 94, 84, 99,132,148,168,234,154, +211,233, 64,221, 8,127, 34, 38, 1,243,164,172, 36, 47,126, 22,205,192, 60, 69,156,169, 57, 31, 7,156,118, 12,195, 88,190,175, + 51,109, 83,177,219,116,152,210, 36, 84,174, 34,120, 9,114, 57,141, 39,238, 94, 60,231,254,113,207,221,179, 91,121, 38, 52,229, +236, 21,152,203, 48,142,180,125,135,182,138,155,219, 27, 41,108,167,145,170,233,196,174,151, 20,113, 14,168, 4,125,211,150,213, +101,166,235, 26,140, 17,120,214, 56, 78,171,213, 42, 23,187,161,236,219, 35,211, 56,173, 54,184, 37,114, 57,248,145,187,187,173, + 8, 13, 99,160,109, 43, 32, 16,227, 92,236,198,145,166,117,180, 93,197, 52,141,107,208,142, 54,182,116,245, 66,249, 91,130,102, +156, 83,232, 28,217,116, 45,190,104, 41,154,182, 99, 24, 38, 14,231, 1,109, 37, 26,119,246,178,243,118,206,173,129, 86,109, 93, +161,114,166,111,133,163,162,141,140,193,181, 50, 43,240, 75, 40,112,142,121, 18, 5,188,179, 6, 98, 64,229,196,221,237, 13, 93, + 83, 19, 11, 67,192, 25,187, 78,146, 98, 20, 93,194, 56, 78,204,147, 88,215, 50,137,113, 28, 48, 70, 62,247, 97, 24, 25,206, 35, + 49, 36,180, 18, 81,228,117,242,229, 69, 84,188,136, 13,175,187,117, 57, 31, 53,159,116, 0, 95, 41,127, 11, 55,217,228, 75,173, +150,230,168, 28,130,159,136,158, 92,118,162,226,142,189, 14,117, 73, 79, 14,179,165,152, 47, 94,239,101,156,149, 96, 45,250, 75, +200,135,196, 82, 68,114,156, 73,113,186, 36,169,229, 92,118,226, 25,173,115, 73, 90, 10,132, 40,221,254,228,103,102, 63,227,131, + 47,251,122,217,173, 87,149,163, 46,225, 16,193, 11,112,127, 81,162,174, 65, 8,165,168, 91, 45,100, 55,163, 86,242,238, 26,137, +167,175, 33, 60,234, 82, 68, 46, 77,104,225, 79,163, 49,202,172,161, 43,139, 26, 58, 39,137, 89, 93, 16,178, 62, 70, 25, 47,206, +158,217,123, 34, 34,182, 74, 57,147, 98, 98,154, 61,135,195,192,227,195,137,217, 39, 52,134, 24, 34, 42, 69,172, 78,108, 58,199, +203,103, 29,159, 63,111,120,118, 99,233, 58,205,205,109,205,203,231, 45,109,157,200, 97,228,254,225,200, 95,255,237, 61,255,246, + 63,189,225,255,250, 15,191,226,255,253,255,126,205,175,223, 61, 74, 1, 31, 70, 78,195,192,105, 24,184, 63,156, 56,205,153,179, + 79,156, 39,143,182, 22,235, 28, 77,219,210,245,221,130,234, 39,248, 64, 10,137, 28, 50, 26,141,202,162,252, 92, 70, 72,222,135, + 15,196,231,151,238,245, 19,195, 33,117,125, 33, 92,138,185, 92,168, 62,174, 79, 83,159,236,112, 63, 9,112,201, 79,135,236, 23, + 45,200,127,254, 90,234, 99,221,247,178, 2,200, 43,184,233, 19, 16,153, 79, 69,163,126,228,227, 80, 75, 38,193, 50, 21, 91,130, + 57,149, 92, 32,178,181,164,178, 46,170, 83,226,101,229,248, 31,254,244,207,216, 88,203, 56, 13,156,253,196, 15,126,240, 67, 84, + 86,124,254,197,151, 4, 5, 94,101,134, 20, 24, 83,194,182, 45,135,211,192,233, 60, 80,183, 45,191,250,230, 27,206,100, 94, 31, + 31,121, 28,207, 12,193, 19,114,226,116, 58,201, 8,177,170,215,164, 49,173, 20, 77,211,174,250, 19,239, 61, 77, 91, 23, 90,165, + 38,167,139, 10,123,201, 21,208,214, 74,161, 47,221,199, 2, 51,186,142,228,156,231, 89, 18,210,172,227,241,241,145,205,102, 83, + 68, 84, 10, 87,153, 85,113, 60, 77, 51, 99,201,224, 22,216,137, 93,227,101,181,213,100, 36,150, 84,101,240,147, 80,224,118,187, + 27,246,251, 67, 25, 21,107, 33,173, 69,153,212,229,162,177,168,107, 17, 42,133, 20, 49,214, 72,162, 98, 73,145,147,149,146, 90, +125,233, 74,169, 50,230, 13, 69, 47, 96, 47,209,213, 43,105,205,202,200,186,170, 57,159,103,154,182, 67, 41,195, 56,206,171,126, + 36,167, 37,238, 88,196,117, 18, 34,149, 56, 28,142,124,254,249,231, 76,255, 63,107,111,214,100, 87,150,158,231, 61,107,218,211, + 25, 50, 19, 9,160,166,174,234, 46,118, 53, 73,113, 38,109, 7,109, 93, 73,214,133,111,245,147,244,183,124,225,144,239, 44,135, + 34, 44, 89, 38, 21,146,217,236,177,170, 26, 83, 78,103,216,227, 26,124,241,173,189,207,201, 4,208, 44, 69,184, 43, 50, 80, 3, + 26, 64,102,238,189,214, 55,188,239,243,246, 29,198,104,246,199, 30,109,172,136,237,154,154,122,213, 8, 92, 38, 36,172, 43,240, + 97, 90,206,196,148, 60,218, 40,182, 23,235,101,117, 40,207,144,206,224, 30, 41,127,174,159, 93,209,181,109, 38,101, 38,166,113, +194,230,196,183,132, 34, 7,117,230, 32, 41,179,116,125, 74, 33, 10,113,192,216, 76,147,107, 26,134,126, 16,224, 88,134,250,184, +162,192, 90,151,153,255, 45,117, 45,220,139,162,112,121,127,221, 51,140,195, 18, 4, 5,208,117, 29,239,222,221,176,217,110,176, + 86,225,172, 89,194, 88,140, 49,148,101, 73,223,143, 24,155,185,239, 11,200,102,139, 82,208,181,199,133, 99, 63, 71,157,206,163, +236,162, 40, 40,179,173,205,123,159, 35, 99, 85,158,242,200,121, 83, 21,229,226,115, 47,138, 34,131,120,138,197,157, 48,140, 61, +155,237, 70, 34,112,243,154, 49,165,176,100,163,207, 9,112,195, 48,101,159, 58,217,205,225,241,115, 52,107, 94,201,204,246,198, + 25,190,214,247,253, 71, 29, 55,243,125,170,148,250, 16,251,253, 76,245,126,150,104,165,158, 68, 85,235,147,214,231,163,110,217, +101,238,159, 78, 23, 93, 8,129,160,195, 35,145,145, 28,122,143,237, 76, 41, 65, 72, 2, 95,152, 75, 91,163,158, 56,227, 83, 86, +227, 39, 45,127,198, 28, 59, 39,242,186, 64, 76,158, 41,140, 57,187, 87,212,165,129, 68, 76,106,129, 68, 24,163, 49,214,192, 36, +192, 11, 12,121,140, 44, 76,250,209, 79,120,151, 61,165, 89, 31, 48,171,237,245,185,104, 75,205, 36, 59,181, 68,227, 45, 7,237, +147, 9,243,204,241, 93, 8,100,103,187,185,164, 51, 81, 45,201,225, 60,197, 68,136,185, 18,155,225, 3, 73,124,176,109, 63,114, +232, 60,163, 7, 27, 34,227, 56,162,147,166,136,208, 20, 21, 23, 43,199,170,138,172, 43,233, 20,154,218,225,156,102,234, 70,190, +253,246, 53,255,254,239,127,201,175,127,119,207,164, 36, 59,122,211,148, 92,109,215,244,193,176, 26, 35, 77, 93,202, 3,109, 11, +118,195,192,175,223,236,121, 56,180,148,235,107,108, 81,136, 32,169, 17,168, 68, 97, 13, 70,153, 60, 82,155, 80,218, 48,141,158, + 48, 9,108,163,109,251, 28, 94,145,137, 72,243, 14,248,145,212, 93, 45, 79,146,226, 20,153,123, 26, 77,207,147, 32,181, 88, 42, + 83, 58,223, 49,235, 39, 86, 76,181, 48,206,159,190, 7,122,201, 23,124, 74,174,251, 39,175,234, 31,108, 71,211,217, 42,244, 84, +193,174,206,242, 17, 62, 70,141, 91,222,141, 89, 40,255, 1,220,237,233,113, 18, 98,156, 81,138,100, 12,104,133, 79, 96, 81,216, + 24,185,114,154,127,249,231,127,206, 31, 62,127, 65, 49, 13, 68,149,184,184,126,134, 54, 6,107, 29,117, 89,243,234,237, 91,190, +248,250,107, 94,223,220,242,208,247,220,238,118,172, 54, 91,162, 54,124,255,230, 45, 94, 43,190,191,187, 97,152, 18,186, 46, 73, +214,210,247, 45, 67,182,217,148, 69,205,224,167,172,230, 21,255,173,214,150,190, 23,223,184,181,162,228,213,202, 96,109, 65,223, + 75,247,177, 90, 55, 76,126, 90,234,187,217,119,174,242,190,119,238, 70,180, 49,180,125, 71,189, 94, 51,236, 14,114,105,207,244, + 63, 29,104,154,102,177, 20,137,224,200,136,159,125, 85, 51,140,189, 88, 56,157, 88,216, 98,144,175,222,126,119,192, 88,184,184, +184, 32, 38,197,161, 61, 8,233, 50,167,216,197, 20,137, 83,194,213, 25,192, 82, 56, 66,128, 66,201, 65, 43,233,100, 2, 12, 9, + 62,162,139, 76,157, 59, 35, 14, 90, 99, 69,228, 86, 23,180,199,142,209, 79, 50,250, 21, 47, 44,198,104,134,110,144,157,120,136, +146, 23,158, 5,116, 50,198,117, 75, 38,134, 66,136,148,115,178,217,229,229, 37,206, 57,209, 13,168, 72,140,150,195, 97,207,213, +213, 5, 87, 87,219,165,168, 0,208, 86, 49,142,131,164,193, 5,225,163, 75, 68,114, 65,215,143,226,152,143,105, 17,151,125,242, +220,211,212, 21,101,225, 80, 72,196,233,186,174,185,187,185,229,234,234,146,190, 31, 9, 94,138,181,121, 15, 28,188, 71,107, 69, +213,148,132, 20,114, 22,187,162,109, 91, 94, 60,127,193,209,118,236,247, 71,202,170,166,235,123,201,113, 55, 10, 91, 20,164, 97, + 56, 1,117, 98,162,105,154,133, 69,191,223,239,185,184,184,200,233,142, 98,111,123,253,250, 21,159,125,246, 41,183, 55,247,108, + 86, 53,211, 52,177,123,216, 97,172, 97,181, 90,211,181, 71,234,178, 98,229, 28,109,223, 19,166,145,151,215,207,121,216,223,211, +247, 45,113, 26,185,186,186, 98, 24,134, 5,128,164,148,228,106,104,163,179,211, 40,187,190,148,216,201,134,110, 92,132,157, 50, + 1, 22, 86,255, 20, 2, 49,235, 12, 4, 31, 28, 40, 42,241,205,247,253,152, 57,250, 35,214, 22, 89,103,112,178,208,196,140,239, +157,178,163, 66, 92, 18,249,217,207,169,155, 33, 37,246,251,125, 78,223, 19, 65,233,178,254,206,238,155,115,124,180,229, 3,146, + 32, 69,122,143, 82,181, 36, 84,229, 51, 45, 60, 69,120,158,129,105,210, 98, 67,122,212,170,230, 79,104, 34,230,135,246, 81, 71, +127,242,136,136, 34,147,147,207,120,249, 51,133,176, 32,242,100, 12,126,202,102, 87, 24, 25,219,230,160,149, 20,101,127, 78, 12, +185, 96,200,187, 86,201,121,203, 74, 86,121,253,140, 22, 56,193,228, 61, 54, 56,148,201,194,148, 24,137,227,192,218, 25,162,229, + 44, 47, 93, 47,160,153, 83,238,149, 90,252,168, 42,171,223, 77,222, 35,170,243,245,111,134,205,204,171, 1,173,165,218, 77,137, +188,195, 82,203,133,174, 80,248, 40,126, 83, 99,178, 63, 54,138,128, 39, 68, 24, 99,162,157, 2, 99, 12, 52, 54,211,182,198, 73, + 34, 29,189,199,146,176, 74, 83,104, 67,153, 63,199,113, 76,252,215, 95,189,229,223,254, 31,127,199,223,253,234, 45,237,100, 72, + 86, 81, 87,150,109, 83,113,181,243,108,154,150, 85, 45,251, 34,239, 39,140, 43,241,170, 96,194,177,189,184, 98,253,236, 57, 1, +197,221,195, 61, 93,223, 73,164,162,145, 75,114, 10, 18,150,224,167, 72,215, 15,248,148,232,253, 68, 55,244,115,235, 45,223, 10, +157,139,178, 57,100, 67,197, 71, 45,252, 92, 16,129, 90, 2, 91,210, 12,119,103, 94,227,228,108,245,200, 50, 5, 58, 69,157,158, +136,116, 75, 62, 59,115,241,120,190,175, 78,239, 67,224,207, 89,242,249, 57,148, 41,110, 90, 2, 81,126, 72, 15, 31,127,143, 69, + 77,125, 96,114,240, 52,172,229, 67,225, 45, 42, 61, 14, 72, 94,236, 23, 97, 22,225, 65,152,159,107,160, 81,154,127,245,215,127, +197,255,248,135,127, 8,199, 61, 87,215,207,232,195,132, 93,173,248,197,175,127,203,197,197, 53, 97,152, 80, 73,243, 95,255,223, +159,243,110,183,167,155, 38,108, 89, 17,208,132,236,163, 78, 10,238, 31,246,188,252,244,115,238,118, 7, 30, 30,222,162, 52,184, +178, 36,250,147, 61,107,202,251, 69, 65,113,202, 46,187,110,106,146,150,145,165, 51,178,103,236,186, 65, 88, 14, 85,157, 51,189, +167,124,145,157,112,152, 90, 75, 76,168,202,251, 87, 63,201,251,219,182,189,128, 84,148,164, 4, 66,202,240,147,145,174,235,243, +136, 60,176, 90, 53,140,126,202,108,115,187,112,208,139,162, 96,191,219, 49, 77, 35, 87,235, 43,137, 55,157,197,171,117, 73,223, +245,216,252, 62,218,194, 9, 73,206,251,101,194, 88,175, 26,180,177, 12, 97, 98,202, 9,145,218,230,142,187,107,115, 65, 18, 41, + 11,161, 64,134,156, 68, 7,176, 63,118, 25,211,154, 50,210, 54, 98, 50,195, 66,172, 93,178, 14,216,110,214,244,237, 64, 76,137, + 49, 39,185, 37, 37,214,184,117,211, 64,138,188,126,253,154,151, 47, 95,114, 56,182,196, 8,125,223, 49, 78,138,151, 47,159, 17, +163,103,187, 93,113,127,191,231,242,162, 33, 50, 49,180,178, 63,190,126,246, 44, 79, 73, 36,167,189,170,106, 64,146,228,116,126, +238, 14,199, 3, 69,105,115, 74,155, 4,163, 92, 95, 92, 73,209,225,196,239,125, 60, 30, 72, 57, 79, 62,165,124, 30,171,236,155, + 31,134,156, 27, 46,168,235,113,236,169, 43,199,241, 40, 58,143,110, 28,113,174, 88,236,204,226, 99, 63,112,113,113,137,143,137, +205,102,179, 20,198, 51,245,109,142,231,125,246,236,138,227,241, 64,215,181,252,248, 39, 95,242,171, 95,254, 82,232,152,182,204, + 74,248,130,242,210,113,119,115,195,139, 23, 47,168, 11, 97,203,147, 2,207,175,174,104,219, 22,239, 61,183,183,183, 98,139, 35, + 49, 12, 82, 88, 37, 4, 85,172,180,202,148,188,120, 70,129, 84,203,179, 57,249, 41,195, 98,170,101,146, 52,255,156, 37, 40,199, + 26,138,210, 50,249, 97,233,180,199,209,103, 69,188,201, 1, 47,146,216,198,252, 76,164,176,232,120,130, 79,132,100,196,138, 55, +250,220, 8,126, 36,218,249,108, 53,103, 67,182, 51, 24,117,150, 83,117,238,123, 61,139,171, 92, 82,212,180, 38,233, 60,242,139, + 31, 83,207,171, 71,243,126,137,136, 19,193, 84,204,187,198,112,118,160,205, 23, 94,204, 23,186,236, 34,197, 71,174,114, 48,139, + 85,224,116,162, 48, 9,171, 2,133,145,127,214, 42,123,250,146, 33, 37, 3, 73,118, 59,130, 37, 21,132,163,210,114,200, 73,132, + 33, 11,215,217,135,184,236,237,114, 38, 33, 49, 38, 98, 16,193, 94, 28, 6, 54, 85,193,182,114, 34,252, 35,200,195,155, 1,181, +106,217, 96, 36,180,210,146, 0,167, 78, 60,231,185,151,215,203,232,248,236,235,178, 80,203, 78,200, 81, 53,199, 75,166, 68,152, + 34,131, 15, 18, 64,145,192,135,136, 53,150,148,180,216,217,124,160, 29, 71,146, 49,172, 54,107,234,186,100,154, 38, 44, 30,131, + 70,133, 72,138,178,223,215, 86,252,210,191,252,246,134,255,245,255,252,207,252,199, 95,188,163, 79, 21, 30,141,138,138,190,131, + 93,215,243,246, 97,164, 46, 45, 77, 41,162,151,162, 44,216,108, 43, 46,182, 13,206, 22,216,216,227, 71,121, 97,199,105,192, 25, + 77,215,247,242, 96, 59, 1, 20, 77,163,167,235, 69, 15, 48,133,200,113, 24,241,103,143,136, 49, 38, 79, 35,210,147, 78,155,179, +148,189, 39,194,177,133,119,172, 30,101, 17, 44, 62,241, 39,232, 84,158,178, 19, 84, 6,135,132,244, 65, 78,252,153,172,253, 20, +150,154,167, 76,105,241,125,103, 21,125,142, 7,126, 44, 84, 73, 31, 28,169,127, 80,181,126, 70,173, 91, 8,118, 79, 2, 93, 30, +133,196,168, 83,108,241,194,115,152, 65, 76, 90,101, 69, 64,182,130,166,132, 78, 18, 10,212, 36,248,235,111,190,225, 47,191,252, +138, 75,107, 57, 30,142,132, 8,211, 20,249,213, 47,127,141,110, 86,252,238,221,141,132, 24,217,146,227, 94,132,140,159,254,232, + 71,188,122,251,142, 99,219,209, 15, 35,201,104,234,186,228,147,231, 47, 37, 42,115, 28,169,138,130,245,197,134,221,110,151, 41, +111,158,203,203, 75,222,222, 63, 16, 83,228,112, 60, 48,140,131,228, 82, 23,197,242,253,242, 49, 18,198,145,105,156,184,188,220, +230,177,176,128,104,180, 53, 20,115,247, 97,204, 2, 23,177,206,190,151,185, 94, 55,117,126,143, 34, 69, 37, 99,214, 16, 38,234, +186,100,236, 61, 69, 89, 18, 73,140,126,164,168,202,147,213,111, 57,148,125,134,214, 20,185,112, 16,109,200,106, 85, 51, 14, 3, +227, 52,161, 84,100,189, 89,179,219, 29, 50,234, 56,130, 86, 98,201,204, 84, 49,148,216,206,156,117,121,100, 42, 10,121,239, 3, +101,153, 69,125, 85,201,241,120,160,174,155, 92,196,207,128,150,184,156, 59,218, 36,124, 28, 49,133, 37, 41, 89, 53, 22,165, 97, +154, 2, 42,164,229,153,153, 11, 11,178,143, 95, 34, 75, 29,227, 36,176,149,232, 3, 55, 55,247, 92, 95, 95,226,125,100,181,138, +180, 93,203,229,213, 22, 63,121, 52,145,187, 91, 81,146,107, 99,184,127, 56, 72,238,121, 81,178,217,172,232,250,142,171, 43, 25, + 85, 63, 60,220,114,121,121,137, 82,210, 41,222,221,223,242,252,249,245,162, 97,152,133,132, 49, 68,146,159, 71,199,130,139,246, +126,202, 22,174, 18,107,101,239,111,148,161,112, 14,109, 69,111,180, 59, 30, 88,215, 13,174,176,140,121, 79,189, 63, 28,242,254, +187,163,201,136,215,178, 44,217,239,247,146, 16,151,139,179,148,207,111, 66,224,199, 95,126,197,183,223,126, 71,219, 30,105, 86, +107,246,251, 61,207,175,159,113,121,121, 73,219,182,108, 54, 27, 25,189,119, 93, 22,197,105, 46, 47,179, 74,126, 24, 78,133,164, +158,177,172,115,106,218, 64, 89,214,103,156, 11,205,126,191,227,242,242, 10,159,117, 66,211, 36,147, 19,107,141,104, 27,242, 59, +127, 2,209,136, 96,110,118,105, 8,226, 87,236,173,109, 43, 17,180,195,228,115,208,147,172, 50,130, 23,166,193,204,143, 7, 40, +140, 93,180, 59,231,103,205, 57,140,106,233,220,159,166,165,235,244,129,225,226,251, 14,159, 69,237,158, 22, 75, 82, 92,236, 93, +143,227, 81,103, 35,153,140,125, 38, 47, 73, 69,115, 78,242,188, 11,152,213,166, 11,205, 75,202, 88,201, 36, 87,145,210, 42, 74, + 27, 41,180,167, 80, 19,181,243,148, 54, 80, 23,145,186, 76, 20, 38, 0, 19, 41,139,205,124, 8, 12, 83, 96,152,252,242, 5,213, + 89,129,124, 14, 36, 9, 62, 64, 2,103, 11, 52, 50,118,153,134,137,161,159,152, 38,177, 37,133, 40, 99,112,159, 32, 42, 9, 31, + 89,246,230,249,195, 24, 35,140,105,165,196,155,110,197,151,110,140,206, 74,124, 50,164,128, 69,160, 50, 23, 47, 79, 69, 15,126, + 10,140,163,103,202, 23,186,207,187,180,144, 25,234, 62, 37, 17,201, 13, 3, 65, 37,154,205,138,102,211,176, 90,213,108,214, 13, +171,170,102,211,212,108, 86,226,215, 77, 42,128, 78,188,189,123,224,223,254,251,255,155,255,248,203, 87, 28,116, 77,139, 34, 89, +141,199,224,113, 76,148,244,177,160,245,142, 99, 40,104, 83,197, 64,195,161, 75,220,239, 91,218,174, 99,179, 90,209, 84, 37, 85, + 85, 82, 22, 57,109,201, 24, 92,233, 40,235, 42,219,212, 20,211, 40,156, 47,195, 13, 0, 0, 32, 0, 73, 68, 65, 84, 47,117,136, +114,224,207, 89,232, 42, 79, 50, 84,246, 28,207,207,135,202, 35,151, 57,203, 92,127, 96, 43, 62, 7,106, 60, 46, 22,207,224, 11, +203,247,246,164,234,148,119, 37, 46, 10,247,247, 4,116, 89, 47,162,211,123,255,233,212,173,159,143,244, 19, 63, 72,181,254,209, + 29,123, 60,165, 15,170, 15, 90,225, 30, 19, 22, 23,136,140,210,153, 23,158, 63,148, 89,138, 13, 61,227, 76,115,125, 89, 38, 40, +135,137, 63,253,209,231,252,171,191,249, 43,190,184,184,160, 41, 43,202,139, 13,177, 44, 24,162,226,221,221,129, 55, 55,247,152, +178,166, 29, 35,119,119, 59, 54,151, 87, 84,171, 53,111,239,238,105,187,158,139,139,173,136,143,162,236,190,159, 93, 93,113,247, +238, 29,171,170,160, 42, 28, 70, 65, 89, 58,172, 49,124,241,249, 23,140,227, 72,138,137,170, 42,105,143,123,188, 31,169,155,154, +178,172,240, 65,188,217,109, 55,240,176,219, 83, 84, 98, 27,115,206, 73, 90, 91,240, 89,131,225,151, 92,131,243,226, 45,132, 64, + 85, 85,188,123,247,142,237,118, 75,204,251,203,178, 46,101,108, 31, 4,216,161,243, 88,187,170,107,142,237,145, 85,211, 44, 74, +225,105, 18,213,248,126,127, 36, 69,121,231, 83,132,105,244, 12,195,192,170,169,232,142, 71,166, 81,132,125,214, 74,178,214, 52, + 78,139,231, 88, 8,101,217, 22, 69,162, 89,173,228,157,205, 7,120, 34,219,211, 20,139, 5,106,204, 41,133,117, 93, 81, 88, 33, + 77, 46,156,251,232,137, 41,102, 12,172,146,216, 78, 29, 25,199, 78, 44,102, 90, 99, 51,175,194, 25,139, 31, 60, 67, 39, 22, 87, +173, 13, 55, 55,119,108, 86,107,225, 82, 88,139, 85,134,238,112,164,114, 21,165,117, 92,110, 86, 84,133,193, 89, 75, 85, 53,172, + 86, 27,180,182, 60, 60,236,177,198,240,226,197, 11,180, 22,133,123,159,125,218,135,195,145,126, 28,104,154, 21,119,119, 55, 84, + 85,193,231,159,127,142, 82, 98, 75,155,166, 9, 87, 88, 92, 81,228,104,214,220,161,142,163, 76, 70,227, 76,124,148,172,240,113, + 58,165,150, 53,171, 6,231, 44,171,213, 74, 26, 16,107, 57, 30,164,115, 46,235, 44,198, 51,102, 1, 15, 25, 99,114, 55,205,114, + 95,180,173,196,169,238,247,123,190,253,246, 91, 72,145, 47,127,244,185,100,162,143,114, 73,223,223,223, 83, 85,245, 18,119, 90, + 22,197,130,158,157, 98,224,216,119, 2, 10,178,134,213,122, 35,112, 31, 91, 80,215,141, 52, 90, 49,178,106, 42,130, 31, 37, 76, + 43,211, 70,103,162,157,206,191, 86, 8, 97,233,252,157,179, 56,103, 41,138, 98,217,157,119, 93, 39, 43,216,148,112,198, 82, 24, + 71,229, 74, 9,136,138, 18,187,107,116, 33,226,204,164,113,182, 60, 27,165,235, 60,197,157,131,192, 30,223,153, 39, 10,235,227, + 38, 64,127, 80, 48,148, 62,178, 53, 76, 31,243, 4,167,143,118, 39,143,144,154, 49,226,195,136,247,227,123,127,184,115,239,122, +204,222,116, 9,225, 12,194,105,215,137,202, 6,106,231,169,138, 64, 93, 66, 83, 65, 93, 26, 10, 43,180, 54, 31, 35,173, 15,236, +251,145,187, 99,199,253,177, 99,223, 14,180,227,196,224, 35, 99,144, 32, 7,137, 16, 61,237,182,141,177, 25, 51,105,240, 62,102, +111, 43,184,178, 98,181,185, 32,105, 67, 63,121,198,204, 84, 94,168, 51,234,148, 23, 47,214,182,211,143, 38,123,107, 77,166,101, +205, 63, 71,101, 2,209, 41,103,155,211, 14, 94, 25, 64, 19, 82,100,156, 70, 70,239,241,121,167, 62,133, 72,200, 49,141, 73, 18, + 31,152,124, 66, 69, 40,172,101,234, 91,218,118,143, 78,145,186, 80,212, 78,177, 93, 59,154,181,195, 84,142,195, 16,248,119,255, +233, 31,248,127,126,254, 61, 93, 44, 24,163, 38, 97, 22, 11,159,143, 17,143, 34,106, 71,208, 78, 20,188, 72,206,188,115, 5,117, +179, 98,187,221, 74, 62,252, 52,176,170, 43,154, 74,128, 12, 85, 85,177, 94,173,104,154, 74,224, 22, 69,177,116,224,147,247,146, + 33,172,222,139, 25,201, 23,183,122,124, 33,159, 63,123, 31,124, 14,213,146, 42,245,248,209, 60, 83,112,158,117,233,231,100,194, +167, 44, 25,217, 26,157,172,107, 39, 78, 58,232,116,234,160,197, 22, 25, 31, 65,135, 62, 28,174,242,131, 21,116,121, 2, 32,223, +199,148, 11,197,164, 78,255,156,148, 38,207,252, 79, 85,116, 22, 88,165,217,113, 50,107, 11,114,192,235,188,100,176, 33,242,213, +213, 21,255,203,223,254, 15,188,168, 10, 76,140,180, 93,143,118, 5,175, 30,118,180, 40, 76, 81, 51, 13,145,155,187, 61,177, 44, +137,165,227,174,109,185,239, 59,246, 93, 75, 81,150,220,222,220, 82, 89,203,139,171, 43, 46, 47, 54,124,255,250,123,202,170, 16, +213,118,140, 12, 93,203,231,159,188,164, 42, 28,199,221, 3,199,195, 1,235, 44, 33, 76, 76,190,199,149,134,110,232, 8, 41,209, +182, 3,253, 48, 17, 35, 98, 11, 51, 70, 98,134,179,120,168, 40,138,197,254, 56,219, 50,141,145, 9,147, 50, 58,231, 89,123,233, +190, 71,217,135,206,194,161,166,169, 25,199,129,170,170, 25,199,137,245,118,205,126,255, 64,211, 52,184, 92,120,198, 24, 41,140, +163,111,123, 8, 9,165, 13, 38,147,200,108, 81,230,177,125,129,159, 70, 10,235, 8,147,160, 69,199,113,200, 65, 67, 50,161,113, + 86,194, 62,186,126,200, 64,154,140, 89, 77,208, 30, 91, 9,129, 9, 81, 70,203,200, 69, 60,141, 35,206, 25,156, 53, 20,133,149, + 51, 65, 33,162,172,164,176,153,161, 30, 66,228,112, 56, 96,140,197, 21,142,237,246, 2, 98, 98,221, 52,212,165,131, 24,168,171, +138,113,244,164,152, 24, 7,207, 56, 76,248, 16, 49, 86, 45, 0,153,170,106,248,249,207,127,201,197,197, 5,214, 9, 11,226,205, +155, 55,172,215, 13,117, 83,242,252,249, 21,253, 48,240,238,230, 29,205,170, 98,123,181, 69,233,136,177,134,209, 7,124,128,105, + 74, 57,144,198,208,118, 61,195, 48,177,189,216,208,182, 50,150, 79,217, 19,239,115, 90,221, 60, 65,216,172, 86,226, 40, 9, 17, +107,140,104, 44,148, 69, 41,203,110,119,160, 61, 30, 41,157,101, 26,122,154,170,162,159, 70,108, 89,112,104,123,124, 76,172,183, + 27,142,199,227,130, 84, 85, 74,229,207,169,226,120,108,151,226, 74, 68,113, 21,187,221,158,227,241,200,106,181,162, 44, 10, 66, + 16,132,174,113,150, 87,175,223, 8,206, 91, 9,100,168,105, 42,154, 92,228,141,147,167, 61,118, 76, 99,224, 97,183,163,237, 58, +142,199, 35, 36,104,234, 26,231, 10, 66, 72,203,202,166,174,196,242,235,156, 35, 32,176,153,170, 42,113, 70, 50, 2,116,130,210, +186,211,234, 83, 41,116, 74, 52,101, 69,140, 57,200,203,203,228,169, 44,203, 60,133,144,166,178, 42,203,229,252, 59, 30,143, 57, + 30,251,100, 93, 83,153,142,122,178, 73, 63, 62,119,100, 50,116, 74,194, 52,206,152,127, 51, 19,145,150,191,212,227,196, 10, 53, + 43,223,231,161,179, 62,177,221,245, 76,251,210,106,145, 16,205,254,236,243, 99, 88, 43,189,236, 69,140, 22, 28,233, 83, 65, 16, +249, 11, 33, 15,136,140,138,204, 98, 61,131,210,142,148, 69,162, 42,228, 50, 47,173, 4,161, 56, 43,123,191,193, 39,238,246, 29, + 55,247,123,110,238, 15,236,143, 61,253, 20,241,249, 82,244, 25,130, 50,249,144, 47,119,137, 93,149,210, 65,225, 67,146,138, 27, +197,106,221,176,222,174, 89,175,106, 12, 9, 21, 39,170, 66, 94, 74,149, 47, 99,147, 47,116,163, 69,121,107,140,116,233,206,168, + 76,199,178, 88, 35, 35,121,107, 52, 54,131, 14, 78,170,247, 51,200,238,108,247,203, 95, 11, 31, 68, 97, 26,209,248,236, 48,168, +115, 87, 52, 69, 56, 12, 19,111,110,118,236,143, 3,245,122,131,210,112,220,223, 67,240, 52,133,230,243,103, 21, 95,189,104, 40, +108,196, 71,197,127,254,199, 87,252,111,255,238,191,240,253,109,192,211,144,148, 67, 37,233,178, 83,182,152, 24, 43, 15,109, 97, +173,116, 20, 6, 44, 1,149, 2,195, 48,112,220,239, 56, 28,118, 88,235, 88,111, 47, 24, 70, 15, 49,113,121,177,101,181,146, 11, + 62,133,196, 52, 76,210, 13, 41, 37,153,241,211,116,118,207, 42,206,128,107, 11,104,102,185,104,151,121,247, 28, 86,240, 88,153, +161,158,116,199,239,217,192,102,167,246, 57, 17,137,147, 24, 36,157,161,102,207,152, 54,239,219,223,150,191, 17,181,180, 58, 75, + 31, 84,185,154, 75,191,103,247,253,209,203, 92,157,222, 49,149,139,188,223, 87, 16,159,160,184, 58,143,232,212, 73, 31,160, 82, +118,165,204, 57,220, 10,157, 34, 23,198,241,175,255,229,191,224,235,103,151,216,177,199,143, 35,171,139, 11,238,118, 7,188, 45, +248,254,221, 45,171,102,203,212,203, 36,104, 48,138, 95,126,251, 61,155, 23,215,188,221,221, 99,139, 66, 32, 72, 49,241,236,242, + 2,165, 21,251,246,200, 20, 60,125, 86, 35,239,246, 15,160, 18,187,251, 7,246,187, 29,133, 43,216,183, 61,117,211, 72,192, 72, +244, 76,126, 68, 27,205,241,112, 16, 60,114, 81, 96,172,202,158, 98,185,164,186,174,149,247, 34,175, 58, 66,144, 93,111, 93, 55, +103,130, 55,217, 81,142,121, 28, 57,228,108,130,178, 44,115,114,149, 40,236,155,186, 17, 63,187,115,132, 24, 40,202, 2,109,140, +232, 62, 50,213,107, 26,252, 50,182, 95,109, 54, 36,230,245, 81,192,185,172,158,238,164, 99,189,122,118,201,187,183,239, 68,120, + 27,163,160,167,141,202,208, 22,143,118,194, 40, 31,250,129, 24,230, 51, 48,101, 70,187,120,146,171,162,160,235,123,156, 53,172, + 55,141,216,112, 99, 90,128, 44, 85, 41,222,111, 57, 63, 12,222,139, 26,127,191, 63, 74,241,161, 68, 3, 52, 83,241, 98,136,143, + 46, 1,242,126,119,166,115,134, 32, 74,251,178, 44,232,186,150,205,102, 69, 74,129,195,225,184,116,154, 85, 41, 5,212,177,149, +113,244,122,179,102,189,222, 48, 77, 81,132, 91, 83,192, 79, 19, 69, 85,176, 94, 53,220,221, 61,176, 89, 11,155,189,239,142, 50, +165,171, 10,110,111,111, 36,113,172,105,168,171, 98,137,203,174,202,154,224, 35,222, 7,234,186,146,232,211, 36, 28,120, 97, 22, +200, 25,208,181, 3,202,104,218,182, 91, 24,247,199,182, 99,181,106,150, 17,246,220,137,214,117,205,225,112,148, 64,152, 76,214, +148, 40,103,185, 92,171,170,226,246,238, 86,116, 54, 74,177,106,214,248, 16,216,239,143,108,183,235, 69,227, 98,173,149, 21,149, + 49, 11,253,180,170,100,173, 19, 67, 32,134,144, 93, 21,230,209,185, 49, 39,253, 25, 99, 51,106, 89,196,212,214, 88,166,105, 92, + 28, 0,243, 62,125,142, 95,205,176,136,252,245,200,133, 18, 51,154,183,100,202,194,206,201,135, 37,236, 73,127, 32,220, 41,197, +240,104, 77,119,190,174, 59,223,249, 43,165, 48,206,184,127,115, 26,119,170,133,169,206, 83,181,251,252,139,104,136,231,151,122, +206,131,125,250,243,230,206,104, 62, 12,173, 54, 20,174,164,176, 37,214,184,133,143,172,208, 39, 21,116,182,252, 68,239, 69,144, +102,192,153, 68, 97, 19,133,133,210, 69,170, 18,234,210, 82, 59, 67,229, 52, 70, 71,146, 74,244,163,226,219,183,123,254,225,183, +111,248,238,221,142,219,195, 68, 59,105,250, 73, 17,130, 40, 20,167,224, 25,130, 92,242, 62,137, 37, 35, 36,185,216, 67,138,130, +153,140, 19,218, 70, 46, 47,214, 92,108, 86, 40, 13,227,208, 67,244,172,202,130, 50, 39,191,153,156,176,102,102, 5,189,209, 88, + 45, 1, 41,165,179, 20,198, 96,181,150,203, 49, 91, 50,140,145,189, 13, 90,157, 93, 28,144,244,201, 83, 28,179,254,123,166, 79, +161, 5,242, 31, 1,235,196, 63, 27,147,226,208,245,188,187,187,231, 56,193,243,207, 62,229,226,242, 18,167, 13, 86,121,182,101, +226,143,191,124,206, 39, 87, 53, 58, 77,220, 61,244,252,239,255,215, 47,248, 15, 63,127,203,168, 75, 66,222,207,206,249,224, 38, +251,235,109,214, 9,104,228, 33, 82,209,163, 8,148, 70,243,108,187,225,139,175, 62,229,235,175,191,228,250,242,138,117,189, 33, + 38,232,186, 35, 47,158, 93, 80,150, 37,206, 20,248,193,211,119, 61, 93, 63, 50,250,192,254,216,137,162, 83,155, 71,221,245,121, + 44,105, 74,167,110, 19,222, 79, 57,123,146,187,114,218, 39,161, 30, 37,166,205,246,115, 53, 59, 16, 30,217, 14,212,105,188,175, +206,126,189,108,223, 81, 79,158,249, 83,230,121,134,225,204,239,133,154, 59,102,254,201,168,212,144,102,145,231, 9,177,172,243, +175, 49,119,229,234,108, 23,246,244,243, 83,249,247, 58, 37, 31,166,156,234,149, 5,155,233,177,245, 79,167,196, 10,248, 23,127, +243, 55,252,201,151, 63,130, 97,144,213,151, 41, 24,163,226,102,127,224, 63,252,221,223, 83,111, 47,121,115,123,207,148, 18,175, +111,110,217, 62,123,198,195,177,101,119, 60,112,108, 15,108, 55,107, 41, 14,182, 27, 54,151, 27, 30, 14, 59,146,145, 41,193,177, +237, 24,166,145,132, 98,189,222,202,197,224, 61, 49, 37,234, 74, 84,200,227, 48, 44, 40,214,186,174, 50,122, 57,162, 85,162, 89, + 23,184,210,224, 39, 17,109,197, 24, 68, 20,149, 20,193,135,197, 87, 63, 39,172,197,152, 24,250, 33, 75,101,229,107,114, 60, 28, +113,214, 98,172,140,149,125, 30,227, 26,101, 56,236,247,108, 47,182, 18, 20, 83,184, 60,142, 77, 40,101, 24,250,158,148,228,125, + 45, 42,139,113,142,194, 57, 14,251,157,140, 90,131, 23, 76,233,254,200,245,245, 11,246,251, 3, 99, 14,122, 1, 48,121,183,175, +180,162,112, 22,173,116,238,226,227, 82,156,133, 16, 73, 33, 46, 98,184,102, 45,164, 58, 25, 87, 91,214,171, 85,246,113,107,250, + 97,164,174,106,194, 52, 82, 86,114,185,207, 92,130,105,148,220,237,170, 42, 24,179,202, 60, 38,225,116,172,215, 43,124,240,226, + 26, 72,121, 82,168,172,196,163,198,200, 56,140,172, 86, 21, 90,195,232,199, 37,119,160,235, 36,227, 98, 24, 58, 94, 62,191,100, +183, 59, 16,124,100,232, 71, 46,182,235, 12, 7, 74, 76,121,146, 58,121,207,122,213, 80, 56,203,216,119, 92,110, 86,168,108,247, + 42,138, 18, 63, 5,186,182,229,217,213, 21,211, 56, 96, 92,198, 18,251, 0, 74, 51, 78, 35, 40, 40, 11,183,172,216,148,150,238, +115, 28, 39, 41,220, 6,201,180, 40,203,154,162,112, 12, 67, 79, 93,150,164, 40,254,237, 38,199,174,250,105, 98,189,110,114, 66, +102,202, 8,224,158,162, 44, 25,167,137,245,102,195,246,242, 66,104,155, 49,230, 16, 32,131,177,138,113,154, 40,235, 42,139,163, + 69,247, 99,114,206, 71, 85, 56, 74,231,100, 52,238, 36, 93, 50,229,247,201, 58,113,109,196, 36,250,172,185, 91, 54,243,243,140, +146, 96, 32,107, 25,166,145, 16, 3, 85, 93, 19, 98,160,237,122, 76,118, 62, 20,149,160,209,167, 48,201,228, 72, 41,161, 3,230, + 53,147,143,225, 17,109, 93,171, 39,197,254,188,110,204,171,165,249, 93, 56,111,108,230, 70,241,164,126, 79, 79,248,210,234,108, +119,120, 18,165,147,102,119,154, 18, 59,210,210,233, 36,149,187,153,211, 62,243,164,128, 63, 29,185,146, 5, 43,233, 70, 33, 6, +116,152,187, 84, 75,202,145,150,230, 12, 47,171, 85, 18,106,155,202,152,198,156,154,100,141,201,138,117,149,137,116,138, 93,215, +241,219,223,189,227,245, 93,203,148, 20,104, 75,145, 96,140, 17, 31, 71,220, 36,169,108,202,198,156,145,158, 48,198, 45, 54,170, + 16, 78, 89,241,179,234,181,237, 59,118, 15, 15,196,113,224,114,149, 41, 68,232,252,255, 7,157, 98,238,216,101,228,238,140,206, + 49,140,250, 81,135, 62, 83,231,102, 49, 70, 58,247, 32,235, 25,242, 35, 25,222,243,222,216, 24, 67, 76, 62, 35, 45, 69, 72, 50, + 78,147, 28,116,103,241,123,155,139, 45,207, 94, 92,227,180, 97,229, 12,133,105,248,242,178,228,229,229, 86,162, 15,167,196,119, +175,110,249,251,159,127,199,160, 10,166, 56,143,109, 37,152, 38,229,139,199,204,211,133,194, 80, 22,142,170, 44, 88, 21,150,235, +237,138,207,159, 95,243,197,103,207,217, 92,173, 32, 6,218,125,143, 87,138,207, 62,123,193,221,195, 91,156,147,172,234, 16,225, +198,203, 30,125,189, 89,115, 24,238,152,188, 71,105,155,125,185,167,207, 91,163,136, 42, 61,138, 38, 61,165,250,165,243,120,192, +217,175,176, 40, 52,244,217,168,254, 49,237,240,177,211, 98,190,162,165, 51,155, 69,121,241, 52, 1, 56, 71, 29,115,162, 50,157, + 34, 96,231, 44,130,244, 8, 23,155,126,160,173,109, 1,235,156, 21,172,167,252,244, 83, 18,250,211,228,183, 71,255,124,158,151, +158,226, 82, 0,159, 2,111, 36,206,211, 42, 40, 82,226,155, 31,125,201, 95,253,236,143,152,142,173,248,143,157, 97, 28, 6,186, +187, 3,175,111,222,177,222, 94, 18,129, 33, 76,236,187,142,168, 18,251,221,142, 55,175, 95,241,197, 87, 95,210,172, 42,142,135, + 29, 77, 93,211,212, 21, 55,183,183,130, 13,110, 26, 30,178, 96, 76,105,195,122,189, 34, 69, 89, 25,205, 98,162,105,232,100, 44, +107,128, 62,208, 13, 61,211, 56, 96,157,163, 61,236, 89,173, 43,148, 46, 73, 73, 14,108,173,117,246, 5,171,197,253,145,136,184, +236, 83, 22,146, 87,206, 59,200,249,246, 38, 91,246, 66,138,194, 52,127,246, 76,246,175,218,114,115,115,131, 54,210,121, 13, 83, +159, 15, 99,233,112,251,126, 88,146,217,172, 53, 96,210, 98,183,138, 33, 81,184, 18, 31, 70,238, 31,118,146,107,238, 28, 55,183, +239,228,247, 77, 73, 38, 90,185,208,118,214,161, 85,196,251,136,213,134, 62, 3,111,124,110, 70,202,178, 88, 2,176,130,140, 67, +179,190, 49, 46,177,156,210,145,105,186,174,197, 24, 77, 89, 72,158,119, 93, 85,146, 84,150, 18,214, 58,142,199, 22, 87, 73,119, + 90,213, 37, 62, 4, 14,199, 3,155,245, 70,212,234, 70,229,188,115, 73, 70,147,128, 21, 56, 30, 91, 94,188,188,166, 31,123,124, +136,140,222,163,180, 97,232, 7, 92,161,136, 42,114,113,177,102,191,239,137, 62,242,112,127,207,246, 98,139,209,138, 20, 2, 93, +219, 17, 67,228,254,254,129,207, 62,125,142, 74, 50, 65, 25,199,145,122,213, 44,246,175,253,254, 64,123,108,105, 42,151,145,179, +242,190,213,141,156,159,105,214,133,104,149,223,129, 89,136, 28, 81, 58,100,198,135, 40,220,235,230, 57,219,237,134,190,109,185, +216, 94,112,127,127,159, 85,245,154,118,232,217,172,215,196,132, 76, 42,180,101,247,176,227,199, 63,254,138, 55,111,222,242,238, +246,142,151, 47,159,139, 77,114, 85,115, 56,180,164,152,208, 89,200,219,254, 78, 4,115, 77, 83, 83, 20,154,182, 61, 46,228,203, + 20,163,112,248,131,103,154, 70, 86,235, 21,126,156, 64, 37, 54,235, 53, 54,137, 62,194,229,103, 82, 25, 13,206,201,196,200, 7, +177,247, 82, 48,142, 19,195, 48,200,247, 98,106,241,105,202,129, 68, 9, 91, 24,234, 88, 73,129,153,196,213, 65,158, 96, 27,163, + 23,225,157, 60, 99,234,125,150,197,217,100,112, 70,148,159,219, 99,103,109,145, 4, 86,253,240, 69,224,201,175,158,206, 24,232, +168, 15,116, 23, 31, 23, 10,205, 33,239, 62,155,237,125, 14, 97, 8, 25,227, 26,242,177,169,243,168,203,206, 23,163, 74, 88,171, + 79,248,203,172, 6, 15, 82, 3,114,236,122,118,199, 30, 31, 53, 81, 89, 60, 48, 4,207,224, 61,131,143, 12, 83,162, 27, 35,195, + 8, 62,104, 66, 48,120, 47,187,163,224, 65, 37,141, 74,154, 20, 53, 49, 57,246, 15, 61,119,183,123,186,182, 71, 41, 77, 85,175, +112,101, 5,198,229,130,131,133, 66,100,173, 94,246,232,214,154,236,203, 21,154,144, 20, 32,153,253,158,227, 6,103,193, 94,124, +132, 24,125,108,203,210, 90,227, 76,177,236,225, 10,171,229,161,139, 33, 79, 25, 52, 90, 23,124,242,201, 39, 92, 63,187,162,174, + 28, 23,235,154, 23,215,151,188,184,190,100, 85, 57, 72,129, 99,239,249, 47,191,126,197,187,125,135, 79,134,168, 28, 9, 33, 95, +197, 60,153,137,134,133, 44,100, 76,182, 11, 18,176, 68,240, 3,253,241,129,187,155,215,220,125,247, 91,250,119,175,209,195, 30, +167, 71,154, 90, 70,169,199, 99, 75, 85, 87, 52, 77, 45, 7,178, 19,228,229,177,149, 17,188, 84,154,234,241,216, 60, 95,150, 74, +101,128, 10, 49, 63,168,137,199,162,119,245,113,197,166, 58,173,109, 78,151,161,154,207,142,101, 88, 46,191,183,122,100,148,123, + 42,116, 59, 7, 34,189,167,123,155, 41, 96,103,106,253, 68,226,108, 29,255, 97,139, 91, 74, 79,130,145,226, 34, 20,152,167, 8, +143,104,141,203,190, 61,101, 54, 3,143,220, 35, 11,251, 49,157,168,124, 32, 22, 73, 19, 18,151, 85,205,255,252, 63,253,115, 76, +136, 84,182, 4,101,153,162,166,157, 18, 15,237, 72,179,189,100,244,137,239,190,251,158,205,102,131,207,157,114,223,117,124,243, + 7, 63,225,249,245, 21, 54, 37,214,117,195,151, 95,124,193,237,237, 29, 26, 77, 83,175,184,191,125,160,169, 87, 92, 63,123,206, +245,245,115,172,117,188,121,243, 86, 10, 96,147,249, 4,211,136, 31, 71, 82,240, 40, 34,235,166, 34, 76, 35, 67,119,164,112,134, +166, 46,177,130, 58,195, 89, 17, 89,109, 54, 91, 98,228, 36,126,204,249,214, 67,230,112,135, 16, 22,118,255,172,120,158,131, 62, +108, 22,164, 25, 99,164, 73, 48,154,231,207,159,139,240,235,120, 36,120,159,147,185, 38, 25,175, 23,133,196,106,230, 3,209, 57, + 71,219,117,146,218,150, 16,230,123,102,136,207, 30,233, 5, 67, 27,188, 96, 81,103,234, 93,190,108, 72, 49,199,145,138,127,216, + 58,121, 79, 77, 86,211, 79,163,100,120, 23,133, 69, 27,177,136,206,161, 82,242,255,113,203, 51,238,156,193, 57,131,210,179,248, + 88,209,182,157, 88, 1,157,164, 83, 22,133,101,242, 35,101, 89, 44, 4,177, 89,156,108,172,202, 83, 9, 69, 89,214, 12,253, 36, +171, 4, 91, 80, 20, 18,162,114, 56, 28,209, 90,156, 5, 9,242,206, 89, 2,162,118,247,247,148,133,216, 16, 69, 0, 39,233,113, + 51, 32,200,135,192,243, 23,207,151, 78, 91,224, 43,129,182,237, 51, 58,182,100,200,190,236, 24, 66, 86,157,159, 86, 97,214, 22, + 57,154, 54, 91,213, 14,123,154,166, 17, 64, 76, 16, 0,141,192,104, 36, 6,117,179, 94,101,151,146,151,134, 39,196,229,235,170, +141,226,242,106, 75,219,182,172, 87,141, 56,149, 66,128,220, 65, 87,133, 8,121,195,228,177, 90,214,130, 15,119,247,220,221,222, +179,187, 63,176,174, 55, 34,220,107, 26,202,170,148,233, 77,233, 40,243, 26,193, 57,139,159, 60,251,221,145,174,237,101,138, 50, +167, 5,138,125,138,170,146, 4, 56,173, 88, 72,162, 68, 89,149,212, 85,181,232,200,134, 65,120,245, 23, 23, 91,177,255,197, 64, + 89, 58, 98, 12, 57,141,141,197, 39,111,172,121, 36,146, 93, 88, 38, 79,198,238, 11, 15,229,172, 9,248,160, 80,238,247,121,106, + 23, 65,220,172,220, 77, 79, 77, 67, 31,191,208, 83,222,247,205, 22, 36,225,186,135,133,246, 54,121,225,184,203, 5,239, 51,170, + 54, 98,180, 36,158, 21, 86, 83, 58,123, 26, 95, 47,112, 26, 25,159,246, 62,208, 15, 19, 33, 41,124,202,162,163,217,142,167,192, + 39, 25,183, 15, 94, 49,122, 24,189,168,199, 99,210,104,109, 69,144,148, 71,192,218, 56,188, 23, 64,128, 53,142,117,179, 98,187, +221,240,236,250,138,170,169,115, 32,140, 90, 70,191, 86,131,155,187,116,163, 40,156,193, 25,179, 92,246,250, 92, 36,167, 78, 83, +136,185,178, 18,193,224,201, 2, 56, 31,224, 70,159, 40,118,133, 21,206,252, 56, 77,116,163,199, 39,205,190,155,112, 85, 35,135, +152, 74,148, 78, 98, 90, 55, 77,201,213,102,133,115,226,237,125,117,123,224, 31,191,187,161, 15,146,228,134, 50, 40,107, 37,183, +217,200, 33,226, 10, 75, 93, 21, 52,149, 21,129, 93,105,120,190, 46,120,185, 45,249,100, 91,241,197,117,195, 79, 62,185,224,143, +190,124,193, 31,254,232, 57, 63,251,209, 53, 21, 45,253,221, 43,174, 54, 13,183,119,247,220,220,220,144, 72,172,154, 21, 85, 93, +179,111,143, 34, 38,202,156,237, 15, 61,116,179,141, 81, 58, 97, 41,207, 72,115,102, 0,203,216,112, 62, 20,116,250,192, 51,166, +206,158,189,229, 33,215, 39, 65, 93,190,228,103,161,217,233, 98, 63, 89, 17,231,164, 63,173, 79, 23,232,163,232, 85,212,114,215, +158, 32, 57,138, 71,188, 55,245, 49,114,221, 73,100, 39, 23,242,153,232,238,236, 50,127,132,117, 72, 79,139,130,211,148, 64,160, + 40, 39, 81,156,209, 74, 4, 84,198,242,183,127,241,151,188,220, 92, 80,104, 77,215, 15,236,219, 17, 83,109,120,187, 59, 96,234, + 6, 83, 86, 84,117, 67, 81,148,188,123,247,142,203,203, 75,174,159, 93,243,233, 39, 47, 49, 70,243,221,183,191,229,120,216, 99, +180,230,112,108,217, 31,143,148, 77, 67, 63, 76,248, 32,123,238,245,122,195, 97,127,228,254,238,129,186,170,105,170, 70, 20,228, +147,167, 44, 69, 48, 89,151,181,164,150,132,200,186,169,105,170,138,194,185,220,201,140, 11,175,187,170,234, 60, 98,143,185,203, +148, 67, 83,246,153, 39, 33,162,206,137,104,227, 56,114, 56, 28,208,198,176, 94,175,151, 47, 86,140,242,236,136, 48, 78, 72,100, + 48,239, 33, 69, 89, 63,191,127,222, 79, 11,121,108, 24,250, 60,114,134,139,171,103,140, 83,160, 27,228, 66,187,185,185,201, 99, + 80, 89, 12,105,163, 50,201, 80,103,110,121,204, 23,137,151,194,219, 57, 17,192, 33, 68,203,178, 20, 37,116, 8, 35, 90,167,236, +217,142,121,252, 44,207, 94, 81, 56,182,155,117,134,138, 68,138,210,138,230,160,116,121,122, 40, 80,157,217, 37,226, 10, 39,225, + 33, 33,100,198,121,153, 45, 79, 9, 31, 38,202,114,166,164,201,207,223,239,247, 20,101, 77,219, 74,132,170, 49, 22,180,102,242, +129, 20,161,109,123, 54,219, 45,147, 23, 86,185, 92,198,113, 17, 22,162,160, 31, 7,118,135, 3, 49, 41,222,222,188,195, 7, 9, + 36, 17,177,223, 28, 79,186,199,185, 18,133, 89,112, 35,174, 40,168,202,146,113, 28,114, 81, 36, 49,163, 83, 38, 3, 78,126, 90, +152,229,235,245,122,121, 39,140,209, 84, 85,153,255,253, 42, 79,106, 5, 8, 6,113, 89, 99, 66,162,174, 43,166,113, 96,187, 89, + 17,166,137,190,237,184,220, 94, 48,116, 61, 85, 89,209,212, 21, 77, 93, 19, 67,192, 26, 75, 89,148,132,201, 51,244, 61,195, 48, +162,141, 4, 86,105,163,169,234,114,217,163,123, 47,104,228,186,170, 49,198, 48, 12,227,146, 56, 41,171,178, 64,211, 84,185, 8, +179, 98, 25, 86, 96,141,121, 4,167,169,170, 12,230,114,142,238,120, 92,144,186,106, 17, 76, 75,161,132, 82, 57,185, 78, 63,194, +192, 46,246,197,167, 96,170, 15, 8,212,207,155, 65,251,223,162,220, 85,103,135,106, 58, 27, 11,136,149, 35, 62,198,116, 46,135, +227,105,119, 60,143, 95, 5,222, 47,236,238,148, 4,237,154,146,176,160, 83, 78, 21, 51, 90, 68, 34,210,225, 74, 21,107,180,146, +139, 62, 7, 8,144,196,103, 62, 77,129,126, 10, 57,248, 32,231, 25,107,185, 20,230,144,148,168, 12,218, 26, 98, 86, 13,167,217, +255,155,245, 0,218,106,148,151,130, 37,248,137,186,190, 96,187, 42,129,137, 85, 83,178, 89,215, 52, 78,113, 8, 45,105,154,150, +132, 49,157,215, 4,214, 74, 64,139,179, 6,103, 20,206, 40, 25,105,107,157,171,242,179,205,238, 34,120,200,106,230, 36,171,135, +217,218,150,116,142,147, 77,154,152, 34, 42, 73,117,106,139,146, 99, 63, 49, 30,119, 60, 28,123,158,191,248,132,213,170,194,135, +137,194, 36, 10,163, 88,213, 37,235,117,131, 66, 88,246,111,119, 45,191,187, 63, 18,181,203,197, 67, 58,185, 28, 84, 64, 39,176, + 24, 74,109,184, 94, 87, 60,219,148, 92,173,107,158,173, 43,158,173, 75, 94,108, 27,158, 95,173,185,184,168, 41, 10,131,115,194, +201, 31, 70,184,187,109,169,147,163,174, 27,126,253,155,223, 50, 76,145,186, 94, 17,147,230,246,238, 1,148, 89,180, 1, 49, 43, +202, 85,174,106,163,146,184, 85, 57,232, 4, 57,124,222,126,159,210, 78,243, 62, 57,239,149,181,122, 28,109,250,254, 3,175,151, + 46,253, 67, 40, 57,153,134,196, 39,161,172,143,145,174,139,149, 42,103, 98,203,165,175, 79,129, 70, 74,157, 73,104,206, 52,112, + 31, 44,104,115, 17,172, 37, 52,227,247,145,233,206, 43,238,211,190,236, 9, 82, 55,205,164, 70,149,109,129, 2, 24,250,228,234, + 25,255,253,159,255, 37,161, 31,208, 49,209,249,192,230,226, 25,191,125,245, 22,229, 42, 14,253,192,223,253,221,127,226,249,179, + 43,126,246,205, 55, 24,171, 41, 43, 73,166, 58,142, 35,223,189,250, 29,198, 73,177, 23, 83,226, 23,191,254, 53, 47, 62,255,140, +135, 99,203,205,221, 61,171,205, 6,165, 12,175, 94,189,161,159, 70,174, 46,175,152,188, 23,167, 72,182,132,150,101,201,225,120, + 96, 10, 19,165, 45, 8, 41,230,164, 66,141, 73,145, 49,140,144,164, 67, 86, 73, 70,222, 18,118, 49, 73, 86,130, 62,185, 33,140, + 49, 76,147,167,105, 26,186,126, 0,242, 46,212,216,236,253,181,140,163,168,160,157,147,209,179,104,159, 18, 33,202,161,218, 52, + 13,247,247, 15,185, 51,118,121, 23,107, 88,175, 27,250, 73, 60,202, 33, 6, 25,157,135,192,177,237, 72, 9,246,199, 35, 41, 6, +154,170, 18, 74,163,213,144, 2,198,234, 37,209,172,176, 70,240,183,198,100, 56, 77, 88,246,251, 90,105, 89, 47,152, 9,101,212, + 89, 72, 83,200, 41,114, 13, 15, 15,123,140,209,217,186, 37,244,202,210, 22, 89,197, 95, 98,244,129, 97,144, 20,180,113,236, 41, + 74,139,202,133, 64, 81, 88,198,113,228,197,139,231, 28, 14,191,206, 30,125, 17, 92,213,181,164,209, 73,161, 64, 38,197, 73,134, + 71,215,117, 56, 39, 35,243,103, 87, 23, 57, 50, 85, 48,167, 74, 65,229, 12,125,215,113,117,121, 73,219,118,116,131,156,195,211, + 52,137,130,220, 57,250, 97,144,175,119,240,108,214, 23,108,214, 91,190,251,237,247,178,138,200,205, 66, 72, 2, 99,169,235,122, + 89,113, 92, 94, 94,210,118,109,166,200,105,218, 99, 71, 85, 85, 75, 94,249,179, 12,196, 57, 28, 14, 24, 45,152,224,102,181,162, +237, 90,225, 19, 84,130,242,118,206,113,119,119, 79,189, 90,211,212, 53,237,254, 64,219, 30,151, 88,212,194, 57,174,174,174, 56, + 30,219,188,174,209, 92, 93, 93,226,189,207,140,117,141,247,129,174,235,105, 86,149,144, 10,143,146,205,190, 94,175,217,239,119, + 40, 69,142, 88,213, 24, 83,100,209,230, 40,171,135,186,162,235,123, 80,121, 63, 63, 11, 87, 99, 36,120, 73, 93, 91,231,216, 87, + 65, 29,107,156,171, 8,147, 95,194,162,202,186,164,187,223,161,141,100, 42, 72, 30, 73,202,246, 78,114,206, 73,202, 36, 58,181, +112, 56, 78,115,198,244,222,133,126,158,173,174,127,176,114,151,167, 66,162,247,173,108, 79,193, 25,143,157,112,167,238,212,103, +191,250,228,229,133,158,166, 81,188,161,211, 68,240, 94, 66, 41, 98,128, 40, 63,198,124, 8, 27,235, 80, 90,216,184, 70,155, 44, +190,146, 79, 53,166, 19,193, 75,205, 99,222,108, 53,144,241,157,252, 90, 41,206, 97, 23, 73,208,138,130,122, 17, 46,156,150,124, + 95,107, 20, 85,161,185,188,104,120,118,181, 97,181, 42, 73,113, 34, 38, 47, 73, 64, 38,239,165,103, 38,188,149,206,220,100, 69, +188,157,195, 95,230,245, 65, 78,113, 59, 87, 53, 10,100,103,230,225,179,192, 28,206, 69, 15, 73,197,156,150, 36,170, 75, 87, 53, +140, 65,241,234,230,142,178, 89,241,197, 87, 95,178,202,225, 13, 86, 43,170,178,144,220,223,178,198, 43,199, 97,132,239,222,237, +217, 15,129,164, 29,164, 12,224, 73, 34,184, 50,100, 80, 73, 72, 84, 40, 54,206,114, 85, 58, 94,172, 44, 47,214,134, 79,215,154, + 79,183,154,231,171, 68,227, 70, 92, 49,129, 27,177,149,231,249, 69,193,231,235,130, 50,140, 92, 95, 94,128, 54,188,121,243,150, +253,177,229, 97,127,224,208,118,114,113, 47,147,135,179,113,243,211, 61, 50,103, 76,119, 53,203, 5, 63,188, 47, 87,233, 35, 76, +244,165, 75,231, 9,116,230, 67,127,175,150,174,251,156,169,160,158,162,139,159, 20, 3,167, 81,226,188,134, 74,203,184,252,247, + 37,188,171,179, 80,160,211, 52, 70, 63,250,253,230,241,243,121, 81,177, 96,112, 79,124,188,229,175,232, 69,141,173, 66,196, 42, +197,159,255,241, 63,163,113, 37,126,242,116, 33, 18, 10,199,205,241,128,171, 87,244,227,196,161,237,216,108,182,124,246,217,231, + 60,127,126,141,181, 98,205,217,181, 45,175,222,189,131,194, 17,180,226,242,250,154,183,119,119,108,158, 93, 49,132,200,187,251, +123,182, 87, 87, 40,109,184,189,191,163, 31, 71, 46, 47, 46,217,237, 15,220,222,222,101,160,135,128, 54,238,238,239,233,199, 9, +146,216,144,156,117,148, 69, 41,145,203,182, 0,116,206, 54,144, 46, 81, 68,112, 99,238,144, 98,134,127,156,198,227,114, 97, 75, +250,216,152,197,112,101, 89, 16,147,116,170,206, 73,222,180,188, 91,178,222,176,121,124,185, 94,175, 25, 51, 88, 68,118,244, 6, +173, 21,235,237,134,174, 23, 95,113,204,151,255,102,179,230,176, 23,133,190,224, 63,131, 32, 97,103,191,181,214, 20,101,185,252, +185, 66,214, 6,205, 29,107,221, 8,124,100,134,152, 44,191, 95,102,120, 24,163, 40, 74,183,112,236,171,178, 92,108,150,214,138, + 93, 79,105, 73, 97,155, 61,206,117,211, 96,172, 94,196,132,162,218,150,177,175,117,150,253, 65, 40,107,171, 85, 13, 89, 19, 20, + 99, 88, 32, 61, 51, 33,205,135,176, 0, 91,102,231, 64,225,100,127, 47, 90,131, 46,119,151,158, 42, 7,145,116,109,139, 54, 54, +123,187,237,162, 55,218,110, 47, 50,180, 71,190, 79,227, 56,178,221,172,120,241,242,138, 99,123,200, 22, 68,147,173,104,162, 94, + 55, 26,154, 70,244, 6,214,136, 3, 97,182,153,121,239,243,168,125,196,100,199,212, 60,110,182, 86, 38, 29, 41, 39,158,173, 50, +249, 13,160,172, 74, 72,145,105, 28, 50, 75, 65, 2,165, 30, 30, 30, 56,182, 45, 33, 38, 92, 33, 95,175,113,234,137,209,163, 20, + 98,123, 43, 75,214,235, 85,102,224,203,247,203, 58, 81,176, 79,211,200,118,187,205, 92, 3, 57,163,103, 77, 71, 93,215,139, 38, +170,105,170,229,251,202, 89,132,120, 85,149, 34,224,204, 76,249,249,189,152, 87, 61,178,179, 31, 24,199,129,166,169,168,234,234, + 44,219, 64, 24, 8,195, 48,200,164,195,137,213,243, 60, 3, 66,101, 61,144,250, 39, 4,186,250,135,109,211,255,255,251, 95,156, + 5,115,222,203, 24, 62,248, 37,102, 53,120, 79,244, 19,193, 79,132, 12,147,152, 71, 66, 49, 36,249,200,102,124,109, 44,214,138, +197,235,220,199,135,138, 11,237,110, 49,231,199, 83,134, 92, 82,103,251,253,148,233,118,139, 76, 95,102,176,214,137, 79,180,172, + 74, 82, 10, 28,143, 7,110,238,238,217, 31, 90,116, 81, 97,138,154,128, 70, 91, 39,136,200, 44,222,115, 86,231, 46, 29,108,134, + 76,204,251,246, 57, 52,129,165,200, 56,223,223,102,241, 72, 82,156,255, 81,208,121,252,103, 52, 74, 25,166, 0,247,251, 22, 76, +193,231, 95,125,201,213,245, 21,133,211, 56,171, 40, 11, 67, 89,149, 40,227, 80, 69, 67,112, 13, 55, 93,228,237,126, 32, 32,204, +106,155,243,121,151, 68,180,236,169,111, 10,203,166,114,172, 10,195,186, 52,108, 10,195,182,212,108,107,195,182,210,148, 46,161, +109, 66,217,132, 42, 21,212,154,122,107,249,236,197,134,149,139,164,225,200,102,189, 33, 41,195,183,191,123,205,247,175, 94, 51, + 78, 97, 17,193,233,115, 39,197,233, 30, 60, 27,131,171, 71, 17, 44, 74,241, 36, 13,231, 44,177, 76,125,128,212,182,172,120, 88, +132,109, 90, 63,185,156,213, 19,114,220,227,122,224,227, 20, 56, 37,207,219,163, 24,214,101,136,175,150, 15,245, 17, 54,195,226, + 33, 87,167,137, 69,122,164, 3, 76, 31,236,214, 79,250,131,184,160,136, 83,154,125,252, 10,147,144, 11, 29,197,245,122,195,215, + 95,124,201,238,110,199,221,195,158,253, 48,241,250,225,129,251,227,145,195,241, 64,138, 17,103, 52,127,252,205,207,248,250,171, +175, 68,149,190,106,232,134,145,100, 44,183,135, 3, 83,130,155,187, 7, 30, 14, 71,154,205,150,119,183,119,124,247,234, 53,101, +211,208,172,215, 28,142, 71,218, 78,144,173,251,195, 81, 46,186,162,200, 33, 24, 37, 93,223,102, 23, 73,194,229, 92,232,152, 47, +217,152,164,144, 87,218,146,146,201,188,235,108, 21,202, 86, 46, 25, 75,171,133,196,184, 92,160,185,187, 85,103, 30,221,162,144, +174,187, 46, 43,250,238,152,133,171,162,111,153,166,145,245,122, 37, 10,242, 73, 84,218, 46, 31,142,101, 89, 50,142,194,127, 16, +203,212,192,122, 45, 23,242,177,109,179,125, 81,180, 60,101, 85, 16, 65,118,201, 94,236,103, 51, 64,219, 24,139,182,162, 27, 73, +217, 22,149,178, 77, 74,212,254,114,137,235,101, 28,175,115,241,111,151, 80, 26,165,101,140,107, 44, 84,149,203,163,106, 15, 24, +186,110, 96,187,221,144, 82,160, 44, 69,159, 51,123,249, 67, 8, 18,167,234, 5,152,179,217,108,242,250,129, 71, 32,171,148,210, +130,106, 45, 10,183,232, 90,166, 65,210, 31,157,115, 18,191,154, 27, 40, 17,116, 9,223, 62, 1,251,253,195, 89, 96, 73,201,208, + 15, 57, 75, 93, 49,228,145,186, 82,224,195, 68,211, 8,116, 74, 66,178, 76,246,220, 75,202,218,213,213, 37, 83,246, 7,236, 28, + 24, 0, 0, 32, 0, 73, 68, 65, 84,155, 91,107, 25,135, 17,173, 68, 61, 62,179, 8,228,249,233,100,138,187,100,134, 39, 65, 12, +215, 37,126, 18, 23,135,179,150, 24, 3,133,115,160,146,104, 52,178,117,216,100,150,193, 48,142,236, 15, 7, 89, 85,205, 57,247, + 74, 62, 38,239, 49,214, 18, 83, 20,173, 69,110,240, 92, 33, 44,255, 97, 24, 56, 30,143,121,207,175,115,188,182, 17,123,117, 46, + 54,187,174, 91,130,134,206,209,176,114,105, 11,187,126, 28,199,108, 73,150,223,179,235,132,115, 47,159,159,192,136, 68,251, 35, +107, 40,249,112,143,104,116, 98, 51, 62,219,163,159, 37, 66, 62, 10, 66,251, 80,228,243, 63,121,161,191, 79,220,124,255,191,255, +128, 30, 95, 47,187,206,211,165, 42, 35, 41,185,192,163,159, 8, 97,202, 73, 86, 39, 81,140,207, 31,131,159,178, 26, 54,230,170, + 52, 46,232, 76,147,119,207, 74, 37, 81, 84,231,161,167, 36, 28, 25,162, 50,143,214, 5,234, 28,137,123,246, 99, 72,154,164, 12, +205,122,133,173, 74,238,119, 59,246,135,150,182, 27,232,199, 64, 55, 65, 80, 5,174, 90,163,141,147,236,185,101,247,173,150, 61, +186,181,162,124,215,249, 50, 95,240,131,231, 37,210,217,229,150,146, 58, 83, 69,207, 32,158,184, 20, 33, 17, 69,215,143,220,220, + 62, 48,248,200,151, 95,255,132,151,159,125,130, 54,114,232,203, 46, 95,198,243,182,172,136,166,192,109,174, 73,197, 26,183,186, +228,242,197,103, 96, 12,167,248,100, 5,218,160,180, 69,103,159,127, 85, 58,170,194, 80,149,150,170,116,212,101, 65, 85, 22,114, + 32, 26, 3,198,145,116, 65,114, 37,169, 48,168, 70,179,125,222,112,181,118, 60,188,249,142, 20, 2,235,237, 37,247, 15,123, 30, +118, 7, 89, 80,167, 51, 53,251,163,192,158,133,104, 32,172,254,217,135,157,212,227, 77,181, 58, 71,196, 62,206, 65,255,125,250, + 13, 84, 58, 41,217, 31,161,226,226, 25,132, 70,189,215,229,127,248, 98, 85, 31,129, 32,191,255,241,126,242,234, 44,190, 83, 75, +229,127, 18,241,229,127, 62,231,213,127,224, 37, 77,138, 71,207, 6, 57, 43,221,100, 93, 71, 83, 20,252,245, 63,251, 83, 54,101, +141, 31, 60, 9, 67,208,134, 67, 63,210, 15, 35,187,251, 7,234,194,113,177,217,240,226,249, 53,135,221,142, 87,175,126,199,205, +205, 45,191,250,205,111,120,125,123, 71, 31, 19, 73, 27,124,130,135,251, 29,199, 99,203, 56, 5,214,155, 13, 85, 85,113,216, 31, + 48,198,176, 90,175, 41,138,130,113, 26,152,252,136,143, 30,180,236,186, 83, 30, 43,110, 47, 55,140,211,144,191, 7, 30,148,144, +223,180,145, 11, 96,154, 60, 68,141,179,197, 35,241,172, 49, 74, 58,167,179, 73,213, 44,168,149, 78,246, 36,164, 19, 1, 82,202, + 99,252,115,109,134, 98,204, 29,170,160, 54,133,223, 45,225, 50, 50,237, 26,134, 33, 95,238,242,227,197,197,150,253,126,151,187, +170,152, 33, 37,141,164,173,229,169, 98, 89, 85, 28,187, 78,242,180,115,210, 96, 89, 86, 98,115, 50, 46, 79, 16, 21,174,112,104, + 43,103,205, 12, 2, 57, 79, 1, 59,145,237, 36,194,213, 24, 81, 97, 23,165, 69,105,201, 35, 87,104,186, 86,132, 85, 69, 97, 41, + 43,217,163,207,200,208, 34,147,209,166,113,134,119,201, 25, 40,187,102, 73, 44,235,251,126,233,164,143,199,227,137, 3, 16,229, +162,136, 33, 46,201,151,117, 93,139, 39, 61,219,255,154,166,206,136, 92,185, 88, 11,231, 24,135, 65,118,238, 62, 82, 20,242,121, +247,125,135,177, 10,165,162, 96, 94,167,129, 41,140, 89, 63,148,117, 50, 49,224,172, 68, 50,203,222,223, 83,213, 85,190,224, 93, +118, 63,148,203,243,174,181, 94,220, 1,211, 36, 83,150,170, 42, 49, 54,175, 39,242,154, 32,132,128, 81, 48,141, 35, 69,233,132, + 53, 63, 14,242,181,207,205, 80,219, 15,244,131, 23,205,213, 48, 49,102,213,250, 48,141, 40, 99,151,226, 90, 44,113, 82,184, 72, +122,218,192,195,195,142,178,172,242,197, 46,221,248, 56,246, 39,196,117,126,175,103, 77,200, 60, 9,217, 29, 14, 68,230, 9,142, + 89, 28, 75,125,223, 11,216, 6,177,105,166,236,151, 63,182,173, 92,224, 89, 71, 34, 83, 41, 41,116,103,251,221, 76,210, 83, 31, + 40,248, 63,184, 50,252,160,250,253, 3,184,204,199,147,206,243, 67, 46,125, 16,251,245,126,220,197,185, 98,239,244, 2, 46,140, +247, 28,226,178,112,215, 57,101,172, 79, 49,228,140,243,132, 79, 66,131,155,124,202, 0, 25,201, 24,151,172, 91,117, 22,157,153, + 63,249,185,229,205,149,137,202, 99,112,163, 77,174,188, 13, 49,106, 98, 50, 68,164, 27,118, 69,201,106,179, 37,248,200,237,221, + 3,109, 55,226, 3,248,168, 24,167,196, 56, 65, 50, 5,182,106, 64, 91, 17,158, 41, 17, 61,232,249,215, 55, 57, 90,245,236,243, + 94, 48,176,143,140,213,105,137, 88,140,103, 95, 55,129, 72,136,197,109, 24, 38,238, 30, 14,124,255,246,150,135, 67,199, 23, 95, +126,205,143,127,242, 7,148,249, 65, 86, 68,234,178, 92,196, 72,226,101, 52,152,106,205,103, 63,253, 35,254,230,111,255, 57,159, +124,246,153,216,130,146,164,192,165, 51, 46,189,209, 6,109,245,162,188,117, 78, 2, 24,202,194, 81, 88,135,182,150,100, 29,201, + 58, 84, 81,162,138, 18,170,130, 84, 23,216, 77,193, 39,159, 92, 16, 71, 73, 77,186,185,189,231,120,108, 23, 95,250,172,106, 84, +191,119,220,163, 79, 10,245, 71,183,227,227, 78, 61, 61, 42, 8,210,239,153, 39,157, 43,218,210, 89, 23, 30,255,137,202,243,241, +165,190,252, 10,191, 47,148, 37,157, 62,206,203,132,152, 5,154, 74,157,208,191,179, 16,243, 60, 11, 93, 41,253,145, 81,191,250, + 96,178,219, 66,148, 74,162,229,168,141,229,191,251,179, 63,227,143,127,250, 53, 26,185, 44,180,113,188,125,251,142,103, 87,215, + 20,206,242,197,231,159, 82,151, 5,171,170,224,251,239,127,203,221,253, 29,227, 56,241,221,171, 87, 68,165, 88,109,215, 66, 0, + 68,241,252,250, 57, 62, 38,108, 81, 9,198, 85, 41,238,238,238,184,187,187, 37,166,196,126,191, 19,127,109,126,150,173,181,116, +125,199, 20,132,127, 61,211,230, 70, 63,160, 76, 66,105, 57,200,125,158,186,137, 45,168, 16,108,112, 98, 25,143,235,243,201, 74, +254,156, 79,216,228,132,205, 46,146, 20,211,233,114, 82,138, 20,252, 34,196,180,198, 44,171,170, 25,116,165,206, 14, 81, 17,127, + 9,106,118,222, 99,111, 54, 27,166,105,162,239,250, 76,176,148,139, 85, 68,116,131, 20, 14,214, 49,100, 56,136,143, 49,135,219, +200,251,174,140,166, 40, 5, 92,226,172,205,211, 2, 75,225, 28, 85, 85,231, 14,172,144, 98, 65,219,101,141,115, 78, 74,155, 67, +174,172, 49, 2, 35,241, 1,157,199,212,206, 57, 18,113, 73, 39, 75, 73, 84,234, 85, 93,163, 52, 11,178,214, 57,137, 12,157,199, +235, 51,113,141,108, 1, 30, 51, 28,101, 86,238,143,163,240,207, 31, 30,238, 69, 32,102,205, 82, 48, 79,211,196,106, 45,223, 75, +149,157, 21,115,100,178,202, 86,212,170,170, 25,251,129,105, 24,151, 36, 54,242,212,105, 24, 6,170,170,194,231,207, 49,197,112, + 10,109,138,178, 70,245, 62, 44,162,191,148,247,239,115, 17,183, 90,205,233,108,210, 29, 79,227, 68,233, 10,170,162, 92, 84,245, + 42, 87,113,137, 72,244, 98, 19,108,154,102,105, 6,231,203,121,213,172, 49, 90,214, 62, 49,230, 21, 69, 72,244, 93,207, 56,100, +116,173, 41, 40, 93, 33, 86, 63, 39, 22,231,105,242,180, 25,204,147, 50,228,104,190,124,103,174,255,140,243,158,215,106,198, 26, + 73,125,235,123, 98,138, 11,120,104,118,180, 72, 33, 0,198,216,133, 18, 87, 87,242,156,197,224,153, 6,137,165, 53,153, 93,225, + 39,177,218,169, 60,133,122,234, 71,255,152,187, 76,126, 78, 86, 21,167,108, 25, 80, 79, 66,171, 84, 74,168, 40,153,229,179, 26, + 84,250,195, 32, 88,206, 89,181, 60, 39, 80,171, 51,184, 72, 2,163,236,242, 47,181,150,112, 17,171, 53,202,136,124,223,204,150, + 47, 99, 23,115, 61, 74, 19,146, 34,228,205,111, 68,147,180, 33, 68,205,228, 21, 83, 80,120,159, 59, 49, 36,200, 37,198,180, 92, + 10, 82, 92,201,159, 45, 18, 73, 90, 14, 88,163, 11, 10, 91,160,141, 67,153, 18,116, 73,210, 13, 73,215, 36, 10,140, 21, 69,174, +138,138,195,174, 99,232, 35,253, 24, 25,199, 64,244, 66,155,235, 71,207,113,242,164,178,130,178, 38, 26, 71, 68, 84,244, 38, 43, +202,103, 30,186, 49,106,217,247,201,206, 48,157,216,239, 51,132, 4, 73, 95,155,115,231, 39, 47,130,191, 24, 12,227, 0,247,247, + 3,191,249,221, 3,239,246,158,235, 47,126,194, 87,127,240, 13, 46, 31, 58, 67,223,163, 82,164,180,150,202, 90,234,194, 97,173, + 34,229,108,231,205,167,159,243,197, 79,127,140,138, 19, 58,142,104,147,136, 38,130, 78,216,148, 48, 49, 98,146,194, 26,151, 65, + 57,154,210, 41,106,151,168, 85,160, 52,137,100, 21,201, 42, 40, 52, 84, 10,138, 0,133, 34,214, 37,106, 85,112,113, 85, 81,149, +134,215,175,126,199, 63,254,227, 47,216, 29, 15, 96,100,202, 96,180, 91, 96, 54, 26, 37,122,136, 71,112,162,120, 6, 41,146,239, +181,143, 42,247,237,130,120,209, 42, 46,126,111,209,202,169,179, 34, 81, 47,163,250,167, 9,109, 42,119, 11,143, 98, 89,159,168, +222, 31,187, 51, 36, 61,106,233,140,207,104,111,239, 93,236, 42, 61, 81,211,255,158, 91,255, 9,151,249,188, 72,153, 1, 60, 31, +179,131, 62, 77,111, 59, 23,156, 58,165,249,211,159,126,195, 95,252,244, 27,202, 4,109,123, 32,106,197,232, 61,127,244,245,207, +184, 40, 43, 94, 94, 61,227,208,237,177, 86,113, 56, 60,208,142, 3,161,112,252,195,111,127, 67,212,154,102,189, 18,177,105,127, + 68, 5, 79, 34,210,251,145, 87, 55,111, 9, 73, 44,166, 41, 38, 46,175,174,168,155,154, 16,229,130,118, 69, 65,210,134,110, 20, + 1, 85, 89,150,148,149,112,211,135,238, 72, 74,146,114,165,108, 65, 55, 76,178, 75, 31, 61,165,171,136, 62, 17, 39, 57,152, 67, + 24,113, 78,137,192, 45,197,101,114,193, 25,195, 95, 10,226,217, 62,106, 33,202,193,183,221,110, 57,180, 29,202, 88, 70, 31,233, + 71,143, 82, 18, 37, 59,243,245,157,115,178,171, 77, 1,103, 20, 42, 5,140, 81,196,232, 89,111, 86,148,182,224,184,235,208,201, +160, 34,148, 86,179, 94,173, 24,186,145,228,229,249, 51,198, 50, 76,129,148,223,115,208, 66,216,212,185,189,137, 30,103, 64,235, +148, 51,186,101, 93, 38,221,187, 93,116, 4,202, 56, 38, 47,148,187,152,228,253,112,206,209,212,181,140,164,243,185, 17, 82,206, +106, 79, 98,133,138, 33, 80,216, 2,103, 75,140,118, 28,246, 7, 89,125, 84, 5,129,136,143, 94,152, 1,128, 79, 57,255, 61, 23, + 30,174, 40,112,198, 18, 70,161,237,105,163, 37, 44, 70, 43,166,168,232, 70,207, 48,141,140,211, 72, 76, 98,131,243,222,179,110, + 42, 74, 39, 74,236,126, 28,169,154,154, 46,135, 56,169, 24, 41,180,101, 85,173,196, 98,150,245, 16, 72, 80, 32, 90, 41, 10,107, +169,235, 58, 79, 96, 12,117, 85,229,130,204, 44, 60, 14,163,181,140,181, 13, 76,209, 11,170, 59,163,114,235, 85,141, 45,132,220, +118, 60,182,196,164,228,115,201, 19,208,178, 48, 4, 21, 40,234,134, 99,219,209,182, 29,117, 85, 80, 87, 37, 4,143, 31, 6, 10, +227,136,126,194, 25, 69,229, 74,156,182, 16,160,176,142, 85,221,160, 81,132, 97,160,107, 15,217,185, 96,233,186,145,186, 94, 1, +154,113,156,242,206, 95,244, 1, 77,211,200, 26, 70, 89,134, 94, 82, 40,103,151, 64,140, 30,173,160, 46,157,216,240, 98,192,144, + 40,109, 65,229, 74, 86,171,149, 36, 14,118, 3, 49, 40, 42, 87, 97, 16,199,212,102, 85, 82, 21, 22,167,228,207, 99, 85,166, 86, +133, 8, 62,162, 83, 66,167,199, 56,245,217, 53,117,142,141, 61,255,159,253, 96, 20,228,147, 94, 72,125,228,223, 63, 78,187, 58, +237, 76, 23,105,220,114, 88,105,156, 19, 1,136, 83, 54,119,172,210,225,107, 76,190,232,237,114, 1,206,202,248, 57, 58, 83,144, +124,230,212,225,103,172,168,248,189, 5,249,184, 4,173, 44, 27, 72,185,104,149, 41, 80,166, 64,219, 10,227,106,180,115, 24,227, + 36,108, 32, 95, 52,204,219, 50, 37, 40,217,221,254, 72, 24, 71,140,133, 36, 12, 2,156, 53,248, 28, 43,234,138,154, 41, 25,172, + 45, 1, 67, 80, 19, 33,223,214,115,128, 11, 90,161,149,193,156,209,203,164, 27,136,121, 30, 31,137,103,173,158, 28,104,179, 61, + 89,209,247, 3, 55,199,142,119,247, 59,162, 46,248,209, 31,252,148,175,191,249, 6,165, 21, 15,119,239, 8,126, 20, 32,143,147, + 17,185,120, 55,201,144,140,148,149,153,146,131,252,246,205,155,247, 84,146,179, 14, 65, 33,107,131, 98,166,224, 25, 65,239, 22, +214,138,216,199,106, 40, 12,170,116, 80, 89, 40,228, 80, 32, 42,168, 52,205,197,154,205,118, 69,138,119, 76,113, 34,101,106, 20, +225, 44,156,132,152,175,117,253,232,217, 72,105, 6,187,164,101,106,241, 62, 34,254, 49, 97, 70,205,113,187,255, 68,167,125,206, +162, 21,241,232,185,255,252,195, 33, 44,106, 78, 64,123,178, 38,120,175, 50, 78,234, 17,193,238,233,159, 84,167,143,115, 26,222, + 83,172,126,160, 40,120, 36, 64,157,119,204, 49, 45, 0, 19, 69,226,179,231, 47,249,147,159,126,195,186,172, 80,147,196,237, 22, +174,164, 40, 43,140,179, 28,218,150,113,236,233,251, 3,101, 97,121,115,115,195,143,126,242, 19,126,247,230, 45, 30,201,126,238, +135,158,187,183, 15,148,101,193,171, 55,175,217,108, 46,153,124,224,197,203,151, 12,195,200,205,205, 13, 87, 87, 87, 56,231,120, +119,115,195, 56, 77,108,235,102, 9,232,216,110,215,104,165,216, 63,220,179,222,172, 24,253, 68, 89,174, 24, 38, 67, 64,172,104, + 83, 55,202,104, 63,239,109,167,105, 98, 28, 61, 85,178,212,171,117,246,141,203,138, 66,246,146,137,201, 79, 75, 17, 51,227, 86, + 85, 38, 19, 21, 69,185,192,128,230,105, 65, 68, 98, 45,231, 52,183, 25,137, 90,228, 46,125,177,250, 88, 67, 24, 6, 54,219, 85, +238, 96,167,101, 5,102,157,165,105,106, 72, 73,212,205,200,136,116,244,147, 8,151,230, 78,119, 9,134,177, 25, 70, 50,177,217, +172,177,214, 48, 12, 19, 70, 91, 18,211,130, 14,141,209, 46,235, 9,239, 35,219,237,134,195,113,143, 43,156,160,101,179, 70,160, +109,143,148,101,195,205,253, 61, 77, 83, 47, 35, 93,107,100, 28, 93, 88, 75, 23,134, 44, 44,158,100,231, 30,131,128,164,141, 76, + 13,172,113, 76, 81,138,168,174, 27,184,188,220,160,213,105,215, 94, 87, 21,109,215,162,173,101,200,221,122,200, 88, 83, 97, 3, + 8,143,126,242, 35, 77,179, 34,198, 68,219,118,236,246, 71, 62,255,252, 5, 4,207,177,109, 89,173, 87,184,178, 64,145,112,218, +112, 8,129, 85,221, 8,103, 36, 91,214,230,119,102,254,123, 17,236, 57,148, 53,144, 60, 73, 37,241,241, 79,129, 24,167,156,138, + 54, 82,215, 37,164,176,228,169,199,188,199, 22, 86,126, 73,140,129,209,143, 18, 38,133,163,200,208, 30,103,215, 2,196, 41, 11, +140,113,164, 40, 83, 3,173,221, 41, 99, 35, 7,238,104, 13,235, 77, 67,244,114,113,119, 93,183, 76,114,198,113,226,242,242, 50, +115, 18,124, 46,174, 38,234,186, 22,242,165,210,121, 5,144, 56, 28, 14,249,207, 36,130,199,213,106,181,172,217,166, 32,176,154, +152, 34,109,219, 99,243,189,115,123,123,143,115, 69,102,199, 87, 56, 87, 82, 58, 69, 10,173,172,163,125, 88, 68,213,231, 13,192, +121,102,250,204, 52,153,119,236, 79,155,134,255, 6,248,204,249,233, 23,159,140, 85,159,140, 74,211, 41,243, 36,165,136, 65,229, +189,143,197, 90,249,162, 91, 83, 8, 84,193, 90, 73, 72,179, 89,124,146,109, 17,198, 22,121, 95, 46,150,145,217,222, 38,240, 22, + 9, 95, 81, 90,236, 55, 49,219,196,150,191,230,104, 76,109, 49,174,166,168,182,216,114,139,182, 13,145, 18, 31, 53,163, 79,244, +163,151,209, 90, 10, 76,105,162, 31, 91, 14,135,221,146, 3, 62,250,204,139,143,146, 59,156, 25,164,248,144,232,199,200,144, 52, +163,113, 4, 91, 49,105,203,148, 83,235,180, 57, 19, 56,204,251,165,121,154,145, 87,203, 81,130,104, 9, 41,102, 81,135,162,159, + 34,251,206,243,246,225,200,111,222,222,243,237,125,199, 84,110,248,241, 31,255, 9, 95,255,244,103, 40,173,216, 61,220,113,216, +221, 19,167, 17,151,253,187, 58, 91, 55,156,179,178,203,119, 26,109, 21, 49,120,238,111,239, 56,118, 61, 9,157,163, 59,207, 90, + 83,228, 1,181,138,172, 9, 0,155,167, 11,198,106,148,213, 40,103, 80,133, 5,103,193, 26,112, 6, 85, 90,116, 97,160,208,216, +166,164,110,202, 92,132,165,101,125, 46, 15,221,217,165, 13, 79, 68,110, 89, 0,166, 30,203, 40, 5, 70,115, 46,150, 59, 75, 95, +225,195, 54,142,243,212,179, 71, 53,128, 74,103,233,111,231,158,241,143,232, 62,222, 27,125,115,102,143,211,143,132,125,231,208, +153,244, 3,197,164,231, 10,119,165, 62, 62,126,127,111,175, 30, 79, 90, 1,157, 18,165,210,252,205,159,253, 41, 54, 6, 24, 39, +136,137,178, 40,120,249,201, 75, 17, 2, 17,233,134, 30, 79,100,125,121,197,183,175, 95,211,135,192,253,241,200, 67,123,228,229, +103,159,114,191,223, 81, 86, 21,174,112,248, 40, 73,134,104,197,197,229,197, 2,126,249,228,147, 79, 24,199,145,251,124,209,108, + 55,155, 44, 8, 21, 21,250,118,187,149,177,124,123, 92, 92, 45,194, 62, 40, 8, 94, 70,157, 9,217, 77,219,162,160,168, 74, 48, + 90, 0, 83,106,126,206,220,242,117,152,199,146,230, 44, 74, 23, 18,211, 56, 97,141, 93, 46, 64, 87, 88,180,134,170, 46, 64, 69, +166,124, 65, 9, 84, 69,124,198, 40,150, 48,151,186,172,150,221,228, 52, 73,160,134,247,158, 99,215,201,133,168,193, 22,142,106, +213,112,191,127,200,175,185,206,162,176, 17,235,236,162,200,158,245, 60, 49,158,132, 75,195, 56,101, 93,140,196,123, 54,117,147, +149,203, 2,204,138, 25,173, 26, 99,164,110,234, 5, 5, 58, 14,125, 70,193,214, 34, 20, 14, 98, 47,243,211, 72,223,119,108,183, +219,101,244, 11,145,170,176, 20,214,226,199,145,117,211, 16,131,164,210,237, 15, 7,202,162,202,251, 88, 39, 84, 74,163, 24,199, + 9,109, 13, 62, 73,113,223, 52, 13,101, 89, 81,184,130,169, 31,240, 99, 88,120, 9,235,213, 26,239, 39, 14,135,163,196,221,230, + 51,119,181,106, 40,139,130,190,159,176,182,164, 27,196, 10,104,157, 99,244,226,177,158, 11,144, 89,204,120, 30,214, 53,199, 73, + 75, 88,143, 7,212,226, 82, 50, 90, 83, 20,178, 19, 95,158,247,152, 50, 54, 86, 86, 19,101, 85, 18,147,140,206, 39, 31, 48,198, +178, 94,109, 25,251, 1,165, 18,151, 23, 23, 66,156,235, 90,121,150, 67, 96,204,133,207,156, 11,178,106,202, 12, 62, 18,171,177, + 66,210, 63,203,186, 18,151, 67,146,244,203, 72, 98, 10, 35, 15,251,123,148, 81,148,101,181,236,185,103, 21,251,252, 12,205,239, +179,247, 62, 23, 36,158,155,155,219, 12, 10,146, 9,229, 48,244,226,117,183,194, 14,152, 5,118,242,220,192,126,215, 74, 26,168, +151,239,131,117,197, 2,185,250, 80, 19,112,114,132,216, 69, 68,247,116, 44,175,181,254, 33,151,250,249,152,113, 38,127,125, 64, + 40,148,206,108, 71,231,135,109,134,137,232,188,203, 22,171,130,168,214,173, 41,176,249,139, 32,182, 4,139,177, 14, 84, 38,175, + 41,185,192,141, 54,185,147,211,203, 69,175,179, 7, 58, 68, 73, 47,243, 57,115, 92,165,179,131, 55, 9, 99,119,138,158,193, 79, + 28,135,142, 99,223,114,232, 90,218,161, 99,152, 6,250,161,163,239, 90,250,174, 99, 26,199, 60, 26, 19, 21, 44,218, 16,114,154, +123, 0, 66, 76,167,145, 75,138,140, 62,210, 77,145, 46,105,186,100,232,177,116,104,198,148, 73,250,234,188, 19,147,219, 78,198, +140,226, 67,140, 73,198, 96,253, 24,217,183, 19,119,251,129,215,247, 71,126,245,230,142,183,237, 68,115,253,146,111,254,228, 47, +120,254,233,103,116, 67,207,237,205,141, 96,107, 39,159, 95, 8, 1, 27, 56,103,176,206,136,176,205, 24,193, 82,150, 34,112, 27, +134,145,161, 31,243, 78,215,160, 49, 39,224,201, 98,179,146, 37,135,205,190,122, 99, 20,198, 25,140,179, 96, 52,209,104,146,157, + 19,108,242,135,213,130,218, 44, 21,117,105,177,250, 68,111, 63,239,186,213,226,237,214,185,103,143,143,186,245, 83, 48,197,217, +173,156,211,214,212, 19,101,250,227, 86,254,247,167, 3,159, 4, 34,241,204, 2,247,254,114,255, 28,230,240,168,211,215,122,169, +202,207,105,120,115,165, 44,203,157,180,124,196, 31,112,173, 63, 21,197,241, 3, 98, 91,117, 6,122,204, 95, 34,147, 18, 95,125, +254, 57,219,170,162,113, 5,165,115,212,205,138,178,174,121,119,251,142,164, 19,175, 94,191,166,237,123,124,140,188,187,189,195, + 86, 53,151, 47, 94,240,155,239,191, 39, 26,197, 47,126,243, 43,186,105, 96, 12,130, 33,222,239,143, 84,205, 10,107, 29,125, 55, +176,123, 16,225,216,219,155,119,130, 99,237,123,186, 94,200,104,251,195, 30,109, 36,196,163,235, 58,218,246,192,229,229, 5, 81, +193,118,189, 65, 39, 77, 12, 48,244, 99,198, 65, 71,172, 43,100,165,150,197, 82,206, 89,172, 43,240, 17,198,113, 90,222,171, 16, + 2,201, 7,194, 56, 17, 38, 79, 97,100,138, 55, 3,138,170,178, 32, 70, 47,226,218,232,177, 86, 58,204,224,195,162,108,159,233, +148,214,101, 11, 88, 38,189,137, 94,103, 6,157,136,254, 64, 41, 41,174,147, 98, 17,204,157, 3, 63, 66, 12,152,194,102,225, 82, + 34,248,144,197,186,242,163,182, 5,221, 32,106,246,182,237,168,202,154,152,146,176,198,203,114,201, 87, 72, 9,134, 97,204, 92, +244, 60, 46, 79,129, 58,171,183,101, 95,171, 8, 81,254,221, 60,138,154,213,238,126,156,240,163, 4,189, 92, 94,110, 23, 65,113, + 89, 8,179, 60,228, 75,172,170,170,211,133,105, 36, 38,117,158,238,132,140,124,189,216,110,169,202, 82, 10, 33, 5,227, 48, 81, +231,162,162, 44, 27,172, 53,236,118,187, 37, 68,229,120,236,152,166,128,159,100,215,111, 93, 33, 57, 26, 94,200,126,253,208,179, +170,106,166, 97,196, 40, 77, 83,175,169,170,250,145,125,211, 89, 39, 93, 44,167,247,122,222, 77, 23,133,156, 89,201,123,156, 22, + 17, 90, 89, 22, 75, 44,235,255, 71,219,155,246, 88,118,165, 87,122,107,143,103,186, 67, 68,206, 36,171, 52,203,144,208,176,253, +179, 13, 27,253, 73,112,255,130, 6, 12, 72,238, 6, 4,184, 33,187, 27, 82,151,170, 74, 85, 69,102, 70, 70,220,233,140,123,242, +135,247,221,251,158, 27,140, 44,146, 82, 53,129, 68, 50,201,204,140,136, 27,231,238,253, 14,107, 61,139,254, 46,197, 76,129,136, + 97,162, 66,108,187,217, 98,236, 7, 72, 9,188,122,117,207,211,134,133, 58,103,208,180, 39,198,196,224,152, 5,214, 90,180,109, + 77, 69,161,209,180,138,140,145,191, 79,215,162, 18, 0,119,239, 3, 66,244,104,219,166, 4,188,228,149, 80, 78, 12,204,224,164, +245,165,250,249,243, 35, 82, 74,104,219,174,216, 28,201,175,159,144, 16,176,221,110, 86,170,118,186,171, 22,231, 48, 47,203,141, +215, 60,198,116, 83, 24,173,199,236, 47, 49,223,215,211, 79,141, 31,219, 97,176,183,240,234,199,185,149,205,221,166, 98,137,188, +144, 47,113,163, 69, 60, 38,115,199,173, 33, 84, 14, 20,209,188, 11,207,214,180, 76,248, 98, 17, 85,186, 6,166,232,178,235,100, + 86, 46,200, 55, 26,179,218, 61,177,138, 58, 81,151,140, 20,225,221,136, 0,199,159, 7, 5, 49,228, 93,130,228,170, 54,165, 8, +173, 64,185,182,200,116, 50,185,130, 11,128,131, 86,136,226,101,181, 64, 12, 14, 83,140, 36,150,147, 26, 34, 42,192,211,248, 89, +203,116, 77,188,131, 64, 44, 73,113, 36,244,155,151,132, 97,138,152,166,136, 83, 63,227, 60, 76, 56, 79, 19, 46,139, 67,181,219, +227,253, 87, 63,195,155,183,239,176,219,110, 48,244, 3,220, 60, 64,196, 8,196, 4,109, 13,180,182,168,235, 6, 77, 99,208, 86, + 6,214, 40,212, 21, 33, 90,117, 93, 65, 84, 21,146,214,232,251, 17, 62,144,192, 39,196,120,163,254, 95, 37,200,210,222, 58, 81, +199,174,152, 85,159, 47,111,161, 69,185,208,147, 22,100, 25, 12, 9,208,128, 48, 18, 93, 93, 65,130, 53, 23, 49, 71, 81,230,195, + 49,178, 21, 77,114,178,152, 40,143, 81,222,147,139,213, 51,147,255, 95, 90,105,222,174,191,255,246,150,207,135,175, 44, 94,255, +116,195, 75,160, 49,187,224,221,250,181, 67, 79,207, 59,254,248,236,178,149,215,157,110,124,102,239,184,174, 20,158, 37, 25, 10, +241,131,237,122, 62, 0,158,239,185,214, 40,200,117, 71,127,219,213, 83,110,186, 17, 2,127,245,167,127, 14,145,157, 32, 49, 96, +113,180, 22,114, 62,224,241,233, 4,109, 13,148,214, 72, 62, 33,184,128, 79,231, 51,118,119,123, 12,222,161, 69,133, 36, 21,162, +144, 24,198, 9,167, 75,143,144, 4,218,174, 5, 36, 93,188, 77,211, 64,105,139,243,101,128,119, 20, 82,225, 22,186, 72,172, 33, +245,245,249,124,198,211,211, 19, 54,155, 22,109,215,112, 68,169,194,227,225, 51, 92, 12, 48,166, 34, 8,185,160,120,223,102,211, +240,133,110,208,180, 21,172,145,124, 1,201, 27, 33,224, 85, 72,152, 99,111,169, 32,179,134,220, 38,139, 91,200,194,102, 77, 1, +186,212,141,101,145,214, 84, 84,213,154, 71,227,130,195, 51,132, 4,172,162, 6,194,197, 64, 30,127, 69,239,203,122,211, 96,152, + 6, 76,203, 72,246, 59, 31,209,116, 29,173, 1, 98,196,180, 44,168,140, 33,141, 1, 18,146,143, 32, 36, 60,117,119, 77,215,226, +112, 58,114, 58,155,166, 64, 42,198, 73,143,211,132,182,109, 48, 12, 35,172,189,199, 52,205,228,247, 94, 28, 60,171,174,201, 10, +101,224,220, 2, 83,213, 80, 74, 23,252,109,127, 89,138, 95,218, 88,226,139,231,130,170,107, 59,164,152,240,116, 56,162,239,123, +220,221,223, 67, 42, 98,185,211,115, 67, 56,215,170,105,208, 95, 38, 56,231,240,240,240,128, 15, 95,125,192, 52,141,116,121, 77, + 51, 22, 94,119, 52, 77,205,144, 31,224,124, 57,227,221,219, 15,168,235, 6,151,203, 25, 66, 36, 84,181, 69,109, 45, 82, 12,100, +237,234,218, 82, 88, 89, 67, 90, 6, 93,145,248, 77,152, 28, 34, 51,114, 17,181,160,170,106, 8, 33, 49,197, 8, 91, 91,204,203, +196,150, 57,131,203,153, 68,140,209,123,152,186, 45,182,185,174,219, 80,160, 79, 4, 18,175, 40,199,113,160,201, 13,128,190,239, + 81,215, 53,154,182, 70,223, 95,208,118, 53,102,231, 10,110,150,168,123, 20,167,221, 52, 21, 23,234,100, 45, 75,194, 67, 41, 18, +236,245,253,192,201,105,182, 92,238,206,205,152, 89,236,105,173,165,144, 32, 67, 66, 76,169,192,128,157,154,232,116,124,175,213, +181,198,211,211, 83,225, 51, 64, 74, 44,227,200,221,117,132, 86,153,160, 72,197, 97,140,190, 88,224,192, 77,107, 74,223,143,169, +142, 43,188,238, 45,199,226, 5,170,220,143,195,196, 62, 7,207, 68, 50,194,167, 76,201, 34, 31,224,247,253, 62,164,234,166,144, + 20, 13,165, 12,141,225,133, 46, 57,202,138,205,250, 42,143,145,121,191, 46,215,254,101, 65, 10,247,220,253,226,153,148, 63, 38, +142, 42, 77,130, 77, 82,153, 66, 70, 48, 19,186,112, 60,148,240,144,112,128,240, 0, 60, 32, 2,139,172,200, 92, 37,161,137,255, +206, 10,122, 41, 20, 91,136, 52,100, 86, 45, 2,132,132, 21, 36,164,137,222, 99, 90, 60, 46,139,199,105,137, 56, 57,129,227,162, +112, 92,128,227, 18,113, 92, 2,206, 75,196,105, 14, 56, 76, 1, 15,253,130,239, 14, 3,126,247,249,130,127,249,238,140,127,254, +237, 35,126,249,237, 35,126,251,212,227,236, 5,182,111,222,227,235, 63,249,115,220,189,121, 3,129,136,254,124,192,112, 57,193, + 45, 51, 41,102,173, 37,127,190, 49, 48,214,160,107, 26,116, 13, 85,160, 85, 69,202, 93,211, 84, 16, 21, 29,130,167,243, 5, 62, + 68,164,103,249, 99, 55,214, 50, 46,160,100,193,223, 94, 81,169, 81, 68, 64, 70, 8, 25,145, 84, 66, 82,162,248,231,161, 37,160, +129,166,178,208, 28,216, 32, 86, 57,230,105, 53,152, 22,105, 5,126,225,130, 41, 62,235,145,111,213,239, 55, 25,129,183,132,182, +159,146, 93,190, 94,201,220,168,237, 81,198,125, 47, 67,147,210, 45, 93, 65,252,128,125,243, 71,204,223,159,243,155, 95, 4, 53, + 61, 3, 58,229,194, 57,133, 0,149, 18,222,238,239, 80, 75,137,133,121,212,211,188, 96, 92, 28,164, 49,120, 58,159, 16,101, 68, +183,221, 96,187,221,192,133,136,211,249,130,105,118, 56, 13, 3, 46,227,136,167,227, 1, 31,190,249, 6,218, 24,156,250, 30, 62, + 1,155,221, 14,218, 84, 56,247, 67,129, 34, 81,183,209,162,235, 54,104,219,142,179, 8, 12,172,169, 48,141, 19,162,247,188, 19, + 52, 24,199,145,132,155,222,193,212, 21,218,174,131, 54,116,168, 10, 78,235, 74, 44,158,149, 74, 16, 84, 4,185,243,117, 55, 56, + 62, 31, 3, 61, 31, 74, 33, 34, 21,247, 72,211,146,240, 74, 48,115, 93,172, 58, 82,165, 20, 98, 32,154,154, 16, 2,218, 40, 42, +232, 5, 1, 65, 4, 68, 57,111,178,213, 75, 73, 98,214, 91,163, 89, 73, 62,148,105,154, 53, 26,117, 93,149,157,112,197,126,109, + 91, 87, 52,118,151, 18,167,126,192,226, 29,199, 21, 91,142,134, 93, 56,135, 59,178,170, 31, 24, 71, 34,140, 81, 68,167, 43,151, + 82,182,103,121,239, 48, 78,212, 73, 42,173,184, 59,172,153, 8,119, 61,188,167,105,130,177,134, 41,101, 26,227, 56, 23, 20, 41, +125,218,129, 72,152, 12,182,137, 49, 66, 74, 82,114, 79,227,140,166,235, 0, 65, 23,209,233,120,130, 49, 22,239,222,189,131, 82, + 10,211, 52, 97, 28, 71,124,254,252, 25, 91,182, 49, 14,195,128,113,236,241,238,221, 27,104, 77,145,162,195, 48, 92, 1, 95, 82, +150, 60,123,161,136, 6, 26,216,129, 97,217,174,151,197, 92,121, 68, 63, 12, 3, 49, 61, 52,173, 87,172, 49,244,223, 56,170, 52, +134,171,133, 75, 10, 89,156, 14,132, 21,182,236,138,208,112, 46, 64,107,133,237,110,139,148, 18,134, 97, 64,101, 45, 23,163,146, +187,105,130,215,208,235, 32, 25,238,178,176,251,192, 35, 49,221,145, 60,227,169, 76, 77, 50,192, 39,187, 47,180,209,252,125,162, + 84,181,113, 28, 32, 36,174, 86,236, 24,112,127,191,103,221, 78,100, 55,130,193,249,114,193,233,116, 46,216,221,124,241,135,232, + 33,100,194,102,211,161,170, 40, 34, 88,107, 13, 1,137,224,195,138,249, 30, 11,172, 44,242, 58,227,247,157, 41,235, 6, 64,227, + 39,253,147,158, 9,230,196, 23,176,151,215,223,145, 16, 1,137,242,134,146, 82,173,138, 4,113, 83, 48,144, 74,250,153,144, 75, + 48,121, 77,146, 39, 82, 66,114,132,223,117,196, 79,113,131, 51, 11,232,242, 37,125, 37,114, 69,128,139, 6,121, 69,135, 62, 39, +132, 49,124, 1,171, 20, 46,165, 52,188, 99,159,233,250,247,114,194,151,144, 84,237, 39,208,222,125,246,233,154,151, 46, 53, 68, +112,240,203,140,101, 30, 49, 79, 51,230,217, 97,152, 22,140,227,140, 97,116, 88, 60, 16,160, 0,213,160,217,119,184,123,125,135, +186,107, 16, 83, 68,127, 57, 67, 35,113, 82, 29,211,232,180,228,136, 73,192, 26, 82,171,215, 21, 37,170, 37, 17, 8,228, 80, 87, +136,117, 5, 88,139,120,161, 81,106, 96, 63, 43,141,123,174,185,189,133,113,158,114,252,233, 77,236,121,217,171, 36, 73, 77, 23, + 20, 32,180, 88, 89, 5, 19,132, 6, 1, 55, 50,175, 62, 73,132, 20,215,132,215,149,215, 92,174,194,101,197, 53,227,124, 93,112, +136,107, 42, 89,137, 30, 93, 9,197,158, 91,211,196,247,188,227,162, 92, 32, 47, 14,233,211, 42, 45,110,245, 35,189,232,125, 79, +215,144,152,231,151, 61,179,177,197,218,130,247, 3,197,198,243,202,250, 37,161,220,243, 17,155, 82,128,247, 1, 90, 8,232, 4, +252,252,253, 87,168,181,129, 8, 2,210, 88, 4, 33,160,180,198,249,124,193,165, 63,227,235,111,126,134,167,227, 1, 49, 8,124, +122,252,140,105,154,209,237, 55,240, 41,160,221,116,104, 55, 27,124,251,241, 59,156, 14, 71,132,152, 80, 55, 45,180, 5,134,158, +128, 29,145,115,176, 83, 34,107,210,226, 29,142,159, 62, 66, 10,160,107, 91,204, 57,108, 37, 70,236,239,239, 32, 68,194,124,158, + 48, 12, 3,234,138, 4,103,211, 60, 99, 94, 28, 98,162, 29,100, 93,213,101,223,106, 45,237, 3,231,105, 70, 93,105, 40,105,224, +157,135, 81, 38,231, 78,242,235, 77,150, 86,197, 5, 96,240,142,138,233,166, 65, 76, 1,222,121,248, 68,151,218, 52, 77, 12,176, + 33, 95,177, 54, 6,199,243,133,194, 51,124,160, 39, 34, 69, 40,101,138,157,139,138, 2,114,168,156,135,254, 42, 66,148, 2,109, +219,194,205, 20, 78, 83, 25,139,105,156, 24, 53,171,233, 44,208,138, 34, 53,153,254,150, 57,237, 82, 74, 72,158,250,197, 24,139, +162,221,179,191,251,116, 60, 99,183,219, 32,133,200,241,170, 20, 63, 74,209,164, 40,175,119,126, 3,122, 79,175,221, 60, 59, 76, +243, 25, 41, 9, 52, 77,203,132,183,132,126, 24, 80,215, 13, 94,189,190,195,229, 50, 34,177,101,111,228,179, 48,239,253,231,121, +129,181, 21,170,186,193, 60,142, 8, 33,225,120, 60,226,195,135,247,168,234, 26, 19,219,169, 98, 76,212,217, 87, 53,180, 38, 27, +162, 21, 9, 31, 62,188,199,241,120,192, 60, 77,152,172, 65,101, 73,208,104, 42,131,167,167, 39,188,121,243, 6, 46, 46,152,134, + 17,122, 67, 33, 43, 74,211,247, 94,107, 77, 19, 66, 45, 16,199, 1, 11, 91,222,134,137,208,174, 82, 72,120,231,208,181, 45,250, +126,128,224, 95,103,196,236,178, 44,216,111,119, 24,134,190,176, 62, 50, 40, 39,173, 70,225,211, 56,150,192,175,202, 90,136, 36, + 16, 35,223, 33,146,166,121, 33, 6, 40, 40,104, 99,152,194, 71, 23,117, 6,130,109, 55, 29,169,237,131, 71,246,224,184,197,163, +174,218,162,228, 71,154,113, 58,246,133,193,175, 21, 77,147,104,172, 79,249, 6, 66, 4,102, 34, 44,144,114, 66, 20, 9,243,236, + 48,207, 14,109,219, 80, 2, 94, 20, 69, 81, 63,141,243, 53, 11, 93,105, 72,153,184, 32,138,120, 73, 0, 36, 87, 22,183,117,115, +155,255,251,191, 66, 40,151,110, 15,209,244,188, 39,186, 78,223,243,225, 44,149, 98,161,139,188,249,132,174, 9,111, 88,117,214, + 40,217,238,215,139, 52,149, 14, 61,135,200, 43,246,132, 19,110,144, 12,254,241, 89,114, 86, 54,197,167, 36,232,128,137, 18, 49, + 74,226,204,231,221,187, 80, 20,232, 34, 37,237,205,197, 21, 55, 75,224,136, 60,246, 16, 72, 44,146, 89, 66,132, 11, 52,242, 47, +150, 60,222,185, 59, 31, 49, 44, 17,167,168, 49,200, 13,122,217,224,130, 26,231, 84,225,148, 42, 28, 67,133, 81,109, 33, 54,175, +177,121,247, 21, 94,253,236,231,184,255,230, 27,108,222,190,133,100,117,234,229,124,192,116, 57,193,185,153,198,211, 82, 65, 26, + 67, 65, 44, 90,193,104, 1, 37, 35,140, 2,172,165,177,187,181,134,148,231, 90, 19,233,206, 90, 44,206,227,120, 60,149,157,240, +250, 1, 17, 55,183, 46, 71,155,166, 43,202, 85, 0,197,214, 37, 40, 64, 30, 66,145,120, 78, 26, 5,104,222,179, 27,133,186,109, +216, 70,152,158,137,209,211, 85,236,150,110, 53, 26, 73,200, 18,253,154, 94,240, 90, 18,195,253,150, 52,119,155, 90, 38,174,193, + 66,107, 84, 66,206,199, 92, 23,150, 69,249,190,170,104,159, 93,168, 55,201, 72, 55, 31, 44,125,185, 21,191,154,217,127,112, 55, +254, 82, 39,254, 67,191, 39,191, 89,137, 4,152,208, 84, 21,190,126,247, 1,141,174, 81, 87, 53, 66, 2,206,151, 1, 41, 68,252, +226,191,255, 19,241,208,221,130,126,236,177, 68, 15,143, 8,221,212,104,186, 22, 79,143,143,132,248, 20,192,101,232, 97,235, 10, +221,102,131,170,110,224, 67,194,238,238, 30, 66, 72, 56, 46, 98, 73,201, 75, 74,111,178, 94,181,144, 74,193,241,110,119,187, 33, + 97,213,211,225,137, 70,165,242, 74,237,202, 33, 21, 49,210,228,134,246,209,190, 4,230,120, 79,113,168,109,211,150,221,182,214, +154,147,222, 28,141,131,149, 42,151, 18,216,254, 87,215, 85, 17, 91,105, 77, 19,171,188,123,206, 14,150,170,182, 36,110,211,122, + 21,117,203, 74,246,101,230,139,132,248, 12,214,104, 76,227, 8,201,126,110, 41, 37,118,187, 45,154,182, 97, 69, 53, 21, 28, 4, +105,161,160,142,146,174,200,171, 56, 41, 37,156,247,168,234,171, 24, 47,119,121, 25,178,130, 4, 2,160, 44,174,164,193,101, 10, + 25, 41,250, 77,225,183, 3, 64, 93,209,228,173,239,123, 10, 97, 97,110,194,195,195,103, 24, 99,153,138, 70,211,207, 97, 24,209, +182, 29, 20,195,174,134,113,196,166,107,137,188,102, 43,214, 0, 37, 12,227,132,166,161, 20,197,121,153,136,210, 25,249, 44,213, +138, 39,157, 52, 46,175,171, 26,167, 19,165,220,133,224, 97,140, 66,211, 86, 20, 91,106, 44,250, 75, 15,239, 60,117,208,188,195, + 38,193,224,140,105, 36,239,124,215,110,158, 21,172,244, 76, 17,163, 32, 22,126, 64, 83,215, 69, 19, 97,173, 33, 31, 58, 4,230, +105, 34, 1, 29, 99,117,115,203,161, 88,215,176,254, 0, 0, 32, 0, 73, 68, 65, 84, 74,161,116,253,123,242,247,110, 94,102,110, +222, 88, 80,105,100,153,218, 72, 69, 41,118,203, 50,195, 86,164,229,178,198, 64,128,166,159, 41,102, 65,166,226, 92,129,153,195, + 93, 18,188, 7, 82,146, 24,134, 5, 85,213,194,152, 10, 90, 87,180,222,112, 11, 82, 74,148, 72,201,214, 51, 89,104,139, 21,113, + 3,124,130,119, 17,211, 56, 35, 69, 74,124, 28,199, 9, 79, 79, 71, 44,139, 47,193, 56,198,216, 21,176, 40,174, 52, 56,233,230, +140,122,169, 75, 95, 55, 36, 82, 94,147,217, 11, 24, 37, 61, 67,131,228,195, 45,137, 91,172, 76, 66,226,140,117,174, 20, 86, 80, +149, 24, 67, 57,211,181, 80,208, 66, 93,199,226, 44, 66,202, 7,237,117, 50, 42,202, 40,127,205,233, 22,156,238, 6,182, 75, 73, + 5,246,174, 38, 32, 5, 4, 79, 17,171, 20,212, 34,203,155, 32,174, 34, 27, 75,178, 22,163, 32,215,167,114,209, 3, 8,201, 29, +171,224, 74,217, 23, 65,131, 18,100,121, 72,156,123, 27, 67,198, 3, 90,174,108,137, 34, 20, 1,204,206,225, 50,206,184,204, 11, + 28, 52,116,123,135,106,255, 26,221,253, 91,108, 95,191,193,254,237, 59,236,222,190,129,217,180, 16,214, 64,104, 1,231, 22,244, + 61,101, 19, 7, 23,201, 14, 39,105,220,153, 81,151, 90, 82, 18, 28,137, 54, 20,185, 5, 88, 61,218, 88, 11,105, 13,146, 82, 16, +214, 0,149, 65,112, 30,253,113, 96,101,110, 68, 76,190, 60, 36, 41, 43,193,113,133,246, 64, 16, 15, 94, 51, 1, 15, 74, 66, 88, + 5,161, 21,146, 17, 72, 6,180, 91, 87, 18, 48, 52, 57,128, 53,176,149,134, 22, 57,185, 44, 3,103,120,255,152,196, 77,176,137, + 44,185, 36, 89,142,152,174,222, 48, 22,142,164,231,184,220,140,126, 21, 47, 88,195, 50, 40, 38,231, 13,139,239,247,238, 72,234, + 42,244, 20, 28,241,202, 76,117, 72,218, 32,173,159,227,226,107, 23,217,134, 39,110, 62, 30,110, 70, 94,184,121,142,111, 21,243, + 47,195, 33,214,149, 79,252,158,253, 83, 20, 2,163, 22,146, 41,116, 9, 42, 38,124,120,253, 14,247,247,175,112,158, 38,244,222, +225,227,211, 19, 92,138,248,197,175,126,133,118,179, 65,221,180, 5,115,249,219,223,253, 6,178,178, 8, 10,248,246,227, 39, 8, +161, 81,219, 6,253,105,128,155, 60,154,186,131,213, 21,172, 50,112,211, 12, 37, 19,198,177, 39, 46,117,215,160,110, 8,110, 68, +177,165, 17, 33, 69, 76,243, 4,165, 37, 62,124,245, 30,117, 75, 56,212,190,239, 97,171, 10,218, 84,104,154, 22,219,253, 14,139, +119,100, 45,226,149, 76, 70,198,210,100, 45,194, 47, 11,186,118,131,133, 49,174,243,226,177,120, 10,181,200, 20,177, 24,232,192, +118, 46, 64, 43, 3,107, 91, 44,236,139,207,120, 81, 41, 36,243, 53, 18,106, 91,163,107, 41, 29,142,178, 27, 72,129, 76,212, 55, + 85,168,133, 49, 68, 32, 82, 42,214,226,102, 72, 77, 36, 56,163, 12,148,164, 66,195, 47,180, 18,144, 66, 81,124,171,181,212,189, + 59, 26,147,167,152, 74,122, 23, 0, 12,253,128, 29,219,218, 74, 50,100,244,156,147,174, 17,162,131,173, 13,180, 53,172,175,137, + 56,158,206, 72, 66, 96,156, 23,220,191,186,227,209, 61, 13, 78,149, 86, 92,168,128,105,124,116,152, 79,243, 12, 91, 53, 72, 32, +113,157,177, 22,167,243, 5,227, 52,225,213,253,107,184,197,193,112, 68,243,166,107, 41,166,213,185, 82, 12,157, 78,103, 52,109, + 87,112,169,227, 48,160,174, 42, 72, 0,141,181,240,193,227,120, 62, 67, 72, 74, 27, 59, 28,143,132, 92, 21, 2,214,214, 28,172, + 35,208,182, 29, 66,200,200, 84, 70,240, 90, 82,213, 63, 30,143, 8,137,180, 30,182,178,236, 26,160,175,155, 98, 87,175,235,176, + 24, 34,137,123,141, 68,138,158,249,252,146, 39,139,137,186,111,163, 33, 36,141,199, 37,159, 89,149,181, 72, 33, 80, 74, 94,116, +101,159, 77,130,106,186,111, 66,233,182,169, 1,164, 14,159,180, 38,243, 60,179,149,151,210,245,202,235, 32, 4,217, 26,145,208, +180,117, 73, 84, 92,150,153,199,255,177,208,221, 82, 76,196,240, 79, 2, 79,159,159, 96,117, 5, 64,162,170, 26,108, 54, 91,104, + 94,215, 54, 77, 5, 41,128,237,118, 11,165, 52,150,197, 67, 43, 91, 66, 90,230,105,134,115,158,189,231,190, 68,176,174, 83, 39, + 37,175, 3,214, 83,188,236, 85,207,196,194,219, 88,214,107,118, 37, 93,134, 66,124, 81, 69,252, 61, 52,152, 72,108,202, 21, 37, + 28, 99,141,249,204,217,235, 70,106, 24,169, 41, 23, 93, 82, 54, 47,214, 68,173, 28,252, 33, 37, 2,167,168, 65,102, 17,221, 85, +180, 68,211,115, 10, 57,209,146, 47,142,232, 48,187, 5,179, 75, 4,169, 89,229,104, 95, 83,229,210,205, 15,178, 77,173, 79, 96, +198,111,178,144, 79, 9, 93,126, 45,132,162, 80,131,213,139,136, 72,127, 70, 41, 13, 99,236,234, 98,215, 84,176, 24, 9, 5, 32, + 58, 10, 44, 24,198, 17,227, 56,225, 50,244,152,150, 9, 46,204, 36, 18,137,228,209,156,167, 17,203, 60, 34,250, 0,163, 43,212, +117, 7,169, 45, 89,247, 4, 49,173,141, 82, 52,126,148,138,161, 61,154, 97, 46, 10,218,104, 84, 77, 3,101, 13,132, 53, 32, 58, +174, 66,127, 62,227,116,186,176,101, 59,191,126,204,223, 79,177,144,251,232,235, 15,180,222, 16,128, 22,130,252,233, 70,130,125, +110,128, 81,128,145, 72, 82,210,100, 67,145,144, 78, 40, 5, 91,105,216,124, 91, 11,201, 82, 67,246, 85,151, 24, 84,178, 99, 61, + 11, 44,189,221,112, 39,121, 21, 42, 22, 26, 92, 40,176,142,194,206,127,166,134, 79,215,201,250,106,250,144,138,192,241, 22, 58, + 19, 75, 57, 23, 17,233,181,226,130, 54,221,184,231,196, 21,239,138,171, 2,254,185, 56,174,164,237,229, 80,158, 76, 69,140,233, +135,119, 96, 32,224, 13,196,237,234, 33,166, 68, 83, 33, 31,232, 61,226, 35, 42,105,240,103, 63,255, 99,132, 24, 49,199,136, 67, +223, 3, 90,145, 31, 61, 80, 81, 75, 24,215, 10,191,254,245,191, 64, 40,122, 46,102,239, 17, 18, 80, 87, 45,230,209,225,243,227, + 1,117,221, 97, 28, 23,124,247,241, 19, 98,136,120,255,246, 29,220, 60, 67, 43,137,186, 38, 1,218,195,195, 39,246, 99, 43,116, + 93,135,221,110,199,144, 18, 58,176, 31, 62, 63,224,233,233, 9,219,221, 14, 2, 18,219,237, 30,227, 56,226,225,225, 51,117, 73, +154,240,153, 90, 41, 74, 46, 83,154,190, 46,182,134, 17,255,156, 0, 54, 82, 42, 58,200,133, 64,211, 52, 64, 4,130, 11,228,227, +230, 34, 47, 37,178,149,230,195, 85,107,206, 49,224, 67, 91, 43,133, 20, 18,140,162, 40,204,192, 86, 35,239, 29, 18, 4, 22,231, + 97,140,197, 50,123,220,237,246,232,199,161, 64,138, 2, 71, 62,223,223,221,195, 45, 30,211, 48,162,169, 42,120, 71,140,116,242, + 40,211,247,215,123,135,166,174,232, 92, 74, 52, 77,236, 47,103, 66,177,106, 69,244,203, 20, 33,165,130,177, 6, 77, 91,179,248, + 55,150, 9, 32,117,115, 10,117,219, 65, 25,133,105,158, 0,166,144,245, 61,117,193,164,124,247,144, 90,160,109, 43,108, 54, 13, +234,166,197,199, 79,159,161,149, 65,221,116,184,244, 3,180, 85,152,151, 25,195, 48, 96,191,223, 99,153, 40,192,164,235, 90,182, +197,109, 74,198, 67, 74,145, 85,229, 22, 62, 68, 28,143, 39,108, 54, 27,154, 50, 6, 18,237, 41,169,209, 15, 35,170,186,134,210, + 6, 82, 41, 28,158, 14,172,230,182,248,248,240,176,138, 10,213, 24,121,175,190,204, 11,220, 52,227,238,254, 30,199,211, 25,227, + 52,160,105,106, 52, 13, 17,252, 34,127,205,218, 80,188, 44, 18, 96, 52,117,217, 90, 1,222, 83, 58,157,173,106, 36, 33, 33, 53, +197,180, 82, 81,232,168,137,211,170, 0,137, 36,128,166,174,224,252,130,121, 25, 32,181,130, 53, 21,175, 58, 44, 78,199, 19, 3, +199, 36, 41,243, 89,124,232, 25,145, 59, 14, 99,241,234,103,214,123,224, 28,146,221,126,139,170,174,202,247, 52, 68,143,113, 26, + 96,173, 97,166,125,128, 91,102,254,217, 83, 10,158,144, 56,157, 46, 24,199, 9,142,189,238, 41, 69,156, 47,103,132,232, 32,100, + 66, 85,181,228,122, 98,213,125,182, 13,102,218, 30, 77, 10, 35, 7, 13,133, 50, 53,204,107,226, 92,188,172,161, 51,107,151,193, + 79, 18,202,253,216,161,252,245, 71, 42,157,139,144, 18,218,152,226, 7, 21,171,124,113, 89, 20,239, 44,207,207,221,124, 90,197, +181, 38, 38, 59, 9, 64,164,200,255, 78,104,201,252,145,198,105, 46,233, 65,207, 18,224,139,202,250, 58,206,140, 72, 43, 40,254, +173,112,233,122,177,231, 84, 46,197, 80,255, 16, 72, 77, 10,200,178,163, 86,138,118,104,148,210,166,138,170,158,176,129,186,248, +100,137, 76,228,110,162,244,140, 49,208,130,232, 84,185, 98,172,170, 10,166,178, 69, 60, 40, 57,102, 86,114,124, 43,137, 63, 8, +225,106,140, 46,107, 8,161, 13, 68,101,168, 88,178, 10,194, 40, 36, 23,240,248,240, 25,167,203,133, 63,239,188,138, 64, 9, 5, + 17,171,139,235, 42, 74,188,166,207, 9,201, 33,227,188,175, 20, 89, 32,199, 69, 87,190,216,173, 53,132,154, 92, 21, 72,224,172, +123,177,194, 4,255, 40,203,215,139, 75, 30,220,196,158,254, 62,254,123,186, 98,144, 86,221,115,252, 30,114, 54, 23, 0, 95, 26, +135,199,130,118, 92, 79,123,240,130,253, 13,171, 2, 36,221,238,216, 95,216,133,173,223,124,235,212,185,148, 18, 49, 11,178, 86, +131, 3, 50, 16, 41,141,237,245,253, 61, 54,155,142, 4, 53, 49, 97,179,217, 97, 89,104,237, 4, 8,236,118,119,232,251, 1, 15, +159, 31,209,118, 91,188,123,247, 30,206,121,116, 93, 7, 83, 85, 72, 74,226,216, 95,240,246,253,123,248, 24,176,120,135,237,126, + 7,161, 21, 78,253, 5,191,251,246, 59,236,118,123, 74,111, 11,129, 57,232, 26,219,221, 14, 82, 74,156,207,103,116,221, 6,219, +237, 14, 33,208,222,125,183,223,195, 24,139,237,150,125,195, 16,104,170, 10,187,205,142,236, 62,129,230, 51, 74,106, 76,195, 8, +191,120,184,197,209,184,215, 59, 62,188, 8, 59,155,223,167,130,167, 19, 42,171,215, 37, 32, 36,113,228,105,149,154, 74,160, 75, +206, 72,207,136,217, 60,112,179,214, 96, 89,230,114, 81, 1,100,147, 90,220,130,253,126,135,190,239, 25, 44,146, 74,140,107,215, +117,172,242, 22, 55,171,163,182,105, 56, 51,252,192,186, 32,194, 66, 47,243, 66, 41,110, 82,149, 21, 23,157, 65, 52,114,207,207, + 76,101, 43, 44,203,132,101, 89, 80,215, 85,249, 92, 51,216,164,109, 91,154, 72,240, 84, 48, 70,130,246, 12,195,128,186,166, 49, +125,221, 52,216,237,118, 72, 41,225,116, 60,151,125,254,211,211,129,119,176, 10,195,208,163,235, 90,128,189,212,199,227, 19,246, +251, 29,249,245,141,198,118,187,129, 82,146,195, 69,200,254,167,181,198,233,120,194,253,253,171, 82,180,214,117,195,236,120,226, +200,207,243,140, 77,215, 98,153, 38,188,123,251, 6, 41, 70, 60, 61, 61, 22, 75,151, 53, 22,167,211,153,252,211,108,193,171,234, + 10,211, 52,227,114,185,176,194, 59, 66, 10, 82,201,167, 72,202,243,121, 89,120,218, 49, 83,129, 83,215,133,235,190,182,105,101, + 95,119, 78,138,203,172,128,108,131,110, 26,162,224,101,145,157, 49, 26,125,127,193,253,253, 61, 46,151, 51, 82,140,252, 60, 76, + 68,250, 99,123,162, 49, 26, 66, 10,248, 24, 11,235, 94,107,133,101,158,113, 56, 28, 8, 23, 92, 91,104,163,209,180, 13, 18, 0, +231, 29, 66, 12,112,193, 33,138, 4,161, 4, 54,155, 14,214, 86, 56,159, 47,136, 49,226,233,233, 9,195, 56,224,116, 58,225,237, +219,183,216,237,182,156,192, 55,150,179, 33,211,234, 72,187, 18,191,200,171, 88, 55, 6, 47, 37, 72,190, 68,160,252,131, 93,234, +233, 25,110, 51,166, 84, 58, 40, 33, 73,152, 32,164, 92,141, 71, 83, 73,239,146, 0,193,105,196, 58, 88, 50,127,146,169, 4, 60, + 72, 14, 76, 49, 74, 80,100, 40,247, 79, 49, 1,227,188,240, 55, 93,124,241,179, 75,153,179,254, 12,185,119, 67, 43, 19, 87,200, + 72,126,161,165, 82,101, 15,114, 29,209, 99, 5, 52,225,189,148,144, 12, 59,160, 49,188,210,178, 16,174,242, 30, 72,101,143,190, +214,168, 12, 41,215,219,166,129, 49,186,136,110,136,182,199,197,143,202, 9, 77, 68,195,178,214, 80,128, 65, 85,161,170, 12,180, +150,176, 90, 67, 24,141,100, 52, 96, 12, 96,233,231, 56, 46,248,237,111,191,197,101,156, 41,141, 8, 2, 33, 93,167, 34,229,162, + 73, 2, 49,208,142, 48,173,118,214,185,235, 46,137, 52, 98, 37,144, 83,178,136,210,147, 4,116,101, 74, 12, 33, 86,252,250,235, +119, 51,253, 43,202,195,231,164,183,151,163,125, 95,170, 21,200,166,151,187,126,249,236, 57, 16, 37,109,107,237, 63,127, 89,140, + 34, 56, 30, 87, 60, 39,191, 22,168, 13,189, 41,113,243, 67,202,235, 69,243,146, 79,189,124,188, 18,222,179, 26, 73, 50, 69, 43, +242,231,167, 33, 97,165,198,207,191,254, 6, 86,155,146,215,252,233,225,129, 82,194,248, 43,107,218, 6, 79,199, 51,148,177,168, +235, 22,135,195, 9, 31, 31, 30,136,200, 53, 79,120, 60, 60, 33, 9,224,233,233, 9,227, 52,209, 46, 52, 37,252,250, 55,255,130, +199,195, 1,175, 95,191,193,102,187, 67,219,118, 16, 66,161,109, 59,116, 93,199,190, 93, 18,254,188,123,247, 30,117,221,160,109, + 91,220,221,221,195,154, 10, 90,105, 92, 46, 61, 98, 4,255,153, 13,148, 84,148, 91,176, 56,206, 92, 80,176,166,166, 1, 56,179, +196,179, 8,170,170,106, 72,173,139,109,241,234,237, 94,143, 20,105, 39,106, 43, 3, 99,105, 71, 74,130,183,235,247, 38, 71, 85, + 70,238,186,109,101,177,221,110, 96,173, 46,177,151,214, 82,186, 87,136, 30,214, 16,220, 10,145, 14,248, 44,182,115,110,166,180, + 56,145,208, 52, 22,109, 87, 97, 28,122,116, 93,199,127,135,197,194, 57,236,244,190, 32,210,100,136,192,225,120,161, 17,181,148, + 88,120,109,145,231, 60,235,189,121, 74, 17,247,175,238,160, 53,165,186, 57,231,176,217,108,112, 56, 92, 10,195, 61,147,244,242, +142, 85,107,131,154,147,190, 30, 30, 30,176,221,110, 17, 66,228, 31, 1,154, 51,206, 77,165, 81, 85, 84,244,159, 79, 71, 24, 67, +157,102, 74, 1,117,109,209, 52,150, 5, 88,116,185, 12,195, 4, 1,137,253,110, 15,169, 40, 54,213,251, 0, 37, 21, 54,221, 6, +243, 56,225,116,120,194, 56, 92, 48,141, 3,222,189,127, 11, 33, 40,239,156, 50,203,101, 57, 19,133, 32,149,119, 2,104, 90,161, +232,204, 90,167, 25,130, 53, 34, 82,136,194, 80, 15, 33,114,200,141,133,100, 31,123,246,221,103, 17, 98,142,224, 37,245,191,226, + 41, 92, 66, 91, 55,104,155, 22,137,109, 98, 74, 73,118, 11,140,120,245,234,142,154, 13,214, 80,196, 16, 8,216, 37,105,221, 25, +248,189,225,131,135, 91,133,229,164, 16,209, 95, 46, 68,243, 75, 9,193, 59,196, 64, 92, 4, 74, 83, 35, 1,248, 60, 79, 20,110, +179, 44,104,218, 14,139,163, 12,249, 97, 24,224,188, 67, 63,246,148,156,201,103,216,249,124, 38, 24, 82,125,229,139, 72,214,132, +121,239, 11,222, 56, 91, 50,115, 16,207,115, 20,236,139,205,204, 90, 48,247, 7,235,211,159,227, 50, 69, 30, 27, 40, 34,198, 61, + 51,207,139,152, 86, 62,247,184,202,165, 78, 55, 70, 38, 41,105,199,171, 21, 80, 25, 5,171, 5,172, 18, 80,124,186,186,144, 48, +206, 11, 92, 76, 55, 42,234,151,173, 77,177, 4, 70, 60, 23, 35,221, 84, 72,129,177,173,252,181,248, 64, 21,102, 90, 81,175,214, +234,104, 98, 61, 83,199,218, 84, 22, 86, 17,182, 53, 39, 39,229,136, 74,107, 76,249, 57, 91, 46,140, 81,168,140, 38,102,180, 36, +239,107, 74,145, 66, 86,172,230, 67,137, 46,253,156, 72, 84,213, 22, 77, 93,243,229, 94, 17,237,205, 90, 8,109,144,180,132, 48, + 26,227,227, 9,255,240, 15,255, 13,147, 11, 76,220, 3,239,180, 86,187,223,130,166, 77,136, 81, 60,211, 75,228,113,118,190,192, +229,234, 7,239,214, 5, 0, 45,160, 43, 2,116, 96,197, 51,191,237,178, 25,188,243,251,124, 96,207,109, 94,235,190, 88,188, 92, +149,102,119,195,151,186,245,244,162, 7, 77, 60, 79, 94,189, 10,236,110,126,185, 10,153,121, 86, 49,188,196,114,255,146, 69,237, +165, 55,222,139,140,119, 94, 63,209,132, 68, 94, 47,179,152,240,106,183,199, 31,125,243, 51, 52, 85,141,221,118,139,167,167, 39, +116,219, 13,193,119,141,193,238,110,143,203, 48, 98,241, 30,151,126,192,231,167, 39,204,110,225,206, 41, 98,113, 11, 94,189,126, + 13, 0,184,191,191, 47,251,218,188, 54,218,108,182, 8, 49,226,215,191,254, 53, 90, 30,225,231, 3, 85, 8,137,221,110,143, 63, +253,211, 63,195, 60,207,152,166, 9,191,249,151,223, 20, 27,155,146,138,208,150,138, 46,242,101,156,145, 66,194,216, 83, 78,183, +228,124,243,124,153,143,243, 84, 32, 49,229,107,228,201, 4, 9,197,200,105, 18, 87, 76, 5,185,122, 61,180,210,229,215,116,105, +134,242, 30,145, 82,194, 26,139, 24, 34, 91, 63, 21, 23, 11,161, 4, 22, 81,218,214,213, 78, 71, 0,145, 0,169, 4,154,182,134, +119, 11,218,166, 70,219,214,216,109, 59,156, 78, 7,104, 77, 7,111,142, 78,245,206, 83,241,174, 53, 66, 34,184,142,247,129,222, + 99, 33,209, 72,150,217,243, 90, 43, 36, 36,180, 29,169,246, 19,104,125,145, 5,130, 57,188,134, 10, 28,189,122, 93, 4,123,219, + 45, 43,170,169,147,172,106, 18,147, 37,134,113,101,210, 26, 37,148,229, 41, 70,228,179, 71, 64,177,253,202, 88,242, 71, 91,107, + 81,215, 21, 9,200, 56, 27,254,227,199, 79, 80, 70, 99,154, 39,154, 64, 74,250, 58,165,144,216,239,182,204, 46, 39,145, 89, 94, + 71,228,156,139,156, 72, 23, 19,104, 92, 47,201,254, 22, 60,173,205,148,214,164, 54, 79,188,131, 38,100, 26,234, 28,207, 27, 81, + 72,105, 82, 10,180, 77, 3, 1,186,248, 73, 59,161,203, 37,151,131,109, 28,127,110,118,197,249, 23, 72,197, 70,183,221,110, 96, + 43, 67, 72, 92, 41,208,118,204,198,247,129,119,217,180,203,151,146, 69,114,172,217,210,122, 5,147, 17,178,104, 43,144,128,224, + 61,148, 84,232,218, 22, 93,211,192, 40, 13,239, 28,250, 97, 40,182,206,186,174, 73,175,160,200, 74, 71, 30,125,106, 48,172, 49, +120,117,119, 15,196,136,121,162,212,187,202, 90,158,188,210,157, 64,227,248, 21, 12, 43, 95,212, 49,222, 64,145,114,209,155,201, +125,121,175, 94, 62,247, 31,171,218,253, 65, 64, 77, 25,101, 70,218,223,176, 5, 41,143,101,214,244, 27, 33,196, 53, 79,252, 5, + 14,119, 70,171,230, 8, 63, 33, 35,148, 76,208, 90,208,154, 87, 94, 59,180,197, 71,244,147, 67, 18, 57, 21,236,165,139,253, 26, +197,185, 86, 80,223,136, 14,120,103,151,177,179,185, 74,150, 82,192,199, 0, 81, 4,106,162,140,161,229,179,100, 54,202,150,182, +133, 82, 68,170, 94,170,238, 26,238,202,155,170, 66, 93, 85,229,162,207,163,248, 28,215,151, 56,129, 75, 51, 14,208, 90,186,192, + 43,107, 56,142,145,247, 80, 90,209,254, 80, 73, 70,226, 42, 36,169, 0,109,128, 40,240,171,127,252, 5,254,241, 31,127, 73, 33, + 20, 66, 20,208, 71, 74, 98, 53, 98,164, 61,219,149,228, 38,138, 18, 30, 18,136,249,130, 38, 36, 96, 65,103,102, 6, 65, 82, 2, + 66, 11, 8, 35, 57,243,253,217, 85, 30,227,109, 55,205, 59,233,252, 44, 32,221,134,149,172,145,178, 98, 5, 96, 33, 22,130,248, +222, 24,191,252,187,184, 85,217, 10,188, 36, 88,139, 87, 75, 27,110,199, 88,249,243, 76,156,176, 22,112,181,184,125,121,109, 32, + 94, 36, 58,253, 84,159,250, 77,113,153, 13,127, 49, 21,177,156, 18, 18,127,252,179,159,163,174, 42, 12,125, 79, 29,186,214,152, +150, 5, 62,134,162,245, 88,156,135,177, 21, 92,136, 24,198, 17, 1, 2,111,222,188, 37, 13, 69,136,232,251, 30, 41, 37,124,251, +237,183,184,191,191,199,253,253, 43,180,109,135, 87,175, 95,227,213,171, 87, 16, 66, 97,127,247,138, 64, 38,227,136,115, 79,184, + 80,107, 13,182,219, 14,199,227, 1,159, 62,125,194, 48, 12,216,237,119,216,110,183, 28, 65, 90, 97,191,219,225,110,183,167,116, +172,105,194, 50, 78,216,111,119,204,218,150,208,182, 34,101,177,160,200,208,190,239,203,133, 10, 16,206, 52,198, 4,231, 2,241, + 34, 86, 44,138,236, 87, 15, 49, 32,122, 18,197, 26, 77,239,159, 24, 61,180, 81,220,189,115,172,104, 76, 55,168, 89, 89,242, 34, + 88,176,199,157,124,140, 17, 93,219, 66, 41,197,130, 88,122, 2,170,138,138,103,218, 73, 19,177,172,109, 27,216,202,112,135,234, +161,185,128,168,172,197, 60, 47, 52,178,158, 23, 52, 77,139,166,109,203,179,147, 85,208,249, 44,104,154, 26,227, 48, 32,248,128, +134,197,107, 57, 82,149, 8,110, 53,191, 30, 75,185,128,215, 66, 40,231, 73,244,150,187,215,251,251, 61,134, 97,162, 75,135,157, + 57,217, 89,144,199,216, 25, 22,228,157, 67, 93, 25, 44,243,136,186, 34, 18, 97, 68,128, 84, 64, 18,244,218, 88, 91,193,185,229, +166,177, 89,102, 7,231,169, 3,237, 54, 29, 42, 78,165, 27,199,145, 20,227,206,113, 10, 26,169,233,181,210, 8, 62,176, 80,174, +194, 48,142,148,135,161, 20,154,170, 46, 17,220,148, 68,201,170,247,202,150, 41, 11,100,130, 46,130, 65, 89,114, 26,188,119, 5, +115, 77,171, 10, 94,147, 38,194,205,230, 66,206,123, 15,201, 25,237,198,144, 40,206, 57,143,205,102,139,101, 89, 48,241,154,104, + 94, 22, 14,145, 2, 7,232,208,107,218, 52, 13, 93,176,146,186,104,153,128,202, 24,212,182,194, 52,142,156, 18, 39,208,212, 84, + 96,135, 16,112, 62,159, 41, 75,129,133,132,158,223,143,243,180,192, 45, 30,175, 94,191,134, 49,182, 92,242, 49, 6, 92, 46,180, + 2,202,119,200,151, 80,209,241,217,133,190,134,209,228, 98,121,125, 6,133, 16,254, 0,157,122,194,179,228, 45, 20,172, 35, 98, + 66,101, 44,148,212, 4,114,137,162,192, 62, 4,110,111,128,178,199,226,174, 78, 32, 66,138, 4,173, 18, 89,184, 20,239,224,101, +130, 18,164,156,142, 41, 97,152, 23, 92,198,153,112,174,233,251,187,135,132,240,204, 42,148, 85,244,215,233, 66, 66,174,134,242, +248,147,246, 38, 36,162,241, 5,100, 33, 57,161, 14, 9,101,231,153, 99, 85,181,214, 37,182,209, 90, 93,170,174,156, 17,108,173, + 41, 35,118,205, 59,243,188,159,206,196,189,140,208,181,133,137, 79,191, 55, 87,113,154,255, 27,141,244,137,207, 30, 37,200, 94, +150, 0, 88, 13, 81, 85, 24, 30, 14,248,219,255,235, 63,225,243,231, 51,184,144,189,122,242, 89,121, 14,166,117,229, 34,230,102, + 71, 44,104,108, 40,175,196, 93,118, 14,100, 81,153,188,170,224, 37, 8,165,201,111, 64,113, 67, 27, 20, 63, 26,204,242,147,162, + 7,158, 93,136,184, 73,246,186,245,164, 63, 47,240, 18, 91,208, 72,171,129, 2,120,184,126,237,180,102,200,241,169, 47,108,219, + 11,199,255, 15,253,143,128,128,224, 11, 61,250, 0, 17,129,215,251, 59,252,241, 55, 63, 35, 84, 40,143, 8, 61,139,202,146,144, +216,238,118, 8, 49, 96,154, 7,120,239,240,120,120,194,219,247, 31,224,189,199,249,114,193, 48,244,104,218, 22, 77,219,224,237, +219,183,120,243,230, 13,154,166,197,249,124,193, 52,207, 24,167, 9,255,252,235, 95, 98,152,136,166,182,217,108, 96, 12, 61, 95, + 31, 62,188,199,219,183,111, 17, 35, 21, 5,116,176,202,114,217,196, 16,248,191,123,156, 78, 39,204, 51,217,128,148, 16,168, 88, + 27, 34,181, 42, 99,242, 80,252,217,190,236,206,151,101,161,144,146,197,115, 60,112, 34,197,183, 20,204, 4,143,101, 68,155, 47, +173,121,154, 48, 14, 3,140,214,168, 45,117,127,209,211,231,131,148,232, 64,102, 45, 75,224, 68,176,252,188,208,193, 93, 51,100, +133,246,177, 34, 81,228, 42, 82,132,209,170,100,153,167,148,208,118,100,187,171,109,133,190,239,241,246,205, 43,108,183,155,194, +139,191, 12, 3,139, 97,137, 72, 70,251,104, 42,202,231,121, 44,171, 55, 18, 98, 69,158, 48,144,127, 59,119,142,199,227, 17, 21, + 71,139,210,197,158,185, 30,130,129, 53,148, 16,153, 11, 8,107,171,114,121, 75, 33, 48,207, 11,195, 93, 38, 0, 18,166,100,158, +207,240,222,163,173,169,251,205, 77, 82,140, 1,202,208,106, 47,231,151, 15, 67,143, 77,219,150,157,111, 63,140,232,251, 17, 33, + 81,184,212,239,126,247, 29,101, 86,132,136,215,175, 95, 23,216,206,178, 44,232,199, 17,144, 10,138, 59,103, 37, 37,154,154, 96, + 65,195, 56, 98, 24, 71, 76, 19,209,227,242, 5, 70,248,106,135,121,113,152,231,165,228,137,123,231,233,252,179, 6, 51,255, 25, +130,194,120,246,131,219, 50,201,201,217,230,119,187, 61,106,107,225,157,131, 86, 2,193, 47,180,174, 52, 21,220, 18, 48,143, 51, + 41,237,235,166,172, 43,168, 40,140, 5, 64,181, 38,181, 69,166, 74,206,243,140,161,239,225, 23, 71,223, 83,173,121, 55, 78,255, + 47, 1,184,191,191,131, 16, 2,231,211,165, 76,114,242,156, 89, 8,133,105,154, 57,203,196, 80, 99,164, 36,148, 49,144, 90, 98, +241, 30,211, 60, 99,113,142,116, 90,223, 19,255,178,165,152,239,135,245, 61,246,252, 50, 95, 23, 5,127,152,241, 59,207, 51,139, + 24,158, 15, 38, 36,192,154,138, 46,244,180,254,144, 87, 53,114,182, 21,199,213,222, 91,148,203, 18,229,135,214, 76,156,227,241, + 73, 66, 66,136, 17,227,226, 48, 45,129,232,100, 66,188, 40, 34, 88, 99, 67,145, 40,206, 46,183,114,107,111,114,102, 36,167, 20, +105, 15, 21, 35,188, 95,174,251, 83, 65,189, 20,173,219, 73, 65,174, 20,121, 33,141, 38,209,136,201, 57,208,207,147,115,248, 27, +179,222,149, 37,238, 72,213,234,194,110,170, 10, 77, 85,195,106, 82, 16, 91,107,217,210, 32, 57, 87,154, 88,248,165,227,227, 78, + 29, 41, 65, 86, 21,194,236,240, 95,254,239,191,199,223,254,221,127,198,236,249,154, 37,198,226,205,208, 59,219,253, 2, 66,177, + 44,145,197, 45, 94, 87, 36,217,230,120, 35,154,227, 61,123, 1,210, 72, 8,173,202,107,114, 27, 95, 38,126, 18,113,237,167, 92, +234,235,239,115,202, 23,226,247,236,108, 18,207, 36,237, 55, 26,139, 23,151, 1, 2,191, 7, 34, 19,241, 63,226,159,117,118,123, +182, 86, 27,161,160,133,192,159,253,201,159, 66, 73,133,101,154, 75,126,121,221, 54,152,157,195,183, 31, 63,178, 10,253, 17, 93, +215,225,116,185,160,110, 26,124,250,252,128,158, 1, 32,247,247,119,104,183, 45,126,247,241, 35, 54,187, 45,102,183,224,243,211, + 35, 22,239,224,130, 67,146, 18, 66, 41,116,155, 13,154,166,193, 56,246,101,122, 20, 99,196,195,195, 3,126,243,155,127,129,181, + 26,155, 77,135,182, 37,208,208,120, 57, 99,211, 54, 20, 52, 82,219,114, 97,108,186, 14, 77, 91, 99,113,174, 28,142,224, 75, 53, +240,136,186,105, 90, 56,231,145, 4, 93,214, 82, 42,184, 16,209,117, 91, 30, 51, 19,105,146,200, 98, 10,151,115,207, 23,179,224, +110,208,176, 10, 94, 20, 53,240,181,120, 85,180,167,103,138,152,181,213,149,180,197,145,160,217, 43, 31, 60,217,158,148,186,190, +127,173,181,140,254, 36, 32, 75,165,201,221, 50,207,115,209,195, 0, 17,243, 50, 18, 85,140, 87, 15, 70, 81,172,179, 95, 34, 54, + 45,197,146, 78,172, 93,104,154, 6,227, 48,209,234,128,147,234, 46,253,128,105,162,142,124,191,223, 83, 44,106,226,224,151, 16, + 49, 12, 67,233,242,105,223, 79, 34,175,105, 26, 81,215, 21, 46,151, 30, 41,145,213, 44,231, 72, 44, 46, 64, 72,141,113,156,176, +223,223, 33,132,136,113,156,217,127,191,131,214, 26,155,205, 22,211, 52,194, 24,137,221,126, 3,169,128,170, 54, 16,130,186,238, + 92,180, 85, 21,101,187, 95,250, 1, 85,211, 1, 74,225, 50,244,184,244, 23,108,186, 14,117, 93,243,250,129,186,246,105,154, 88, + 23, 5, 10, 29, 50, 6, 67, 63,148,231,219,167,136, 37,120,104, 99, 80, 91, 91,248,240, 84,216,232,146,148,214,214,213, 53,125, + 47,198, 82, 72,102, 95,251, 60,207, 44,180,244, 37, 76, 37, 49, 53,206,114, 3,148, 93, 74,134,201,128,203,226, 40,139, 32,128, + 59,120,130, 16,181,220,149,135, 24,202, 30, 63,165, 84, 66,116, 98, 74,152,189,195,101, 28, 32,164, 68,219,117,128, 16,232,167, + 17,144, 18, 62, 82,195,120,255,106,143,186,161,105,116, 93,215,168, 42,242,167,159, 47, 3,134, 97,196,111,127,251, 59,124,251, +237, 39,134,228,204, 88,230, 5,222,199,226,176,137, 49,221,160,161,159,115,221,215,231,221,243,117,241,173, 8, 60,253,148, 75, + 61,221, 30,122,207, 89,114,207, 46,210, 4, 18,188,208,232,221,112,142, 46,131, 88, 5,253, 16,185, 27, 90,155,156,210, 85,120, +164,181,228, 24, 83,138, 50,205,254,108,178,210, 19, 96,212,199,132,211,101, 96,143, 43, 94,228,224, 94, 71, 24,225,122,175, 39, + 42, 8,202,133, 30, 83,177, 42, 36, 14,107, 73, 41,194,249, 5, 46, 44, 8,209,149, 49,117,174,182,115,247,107,120, 63,110, 43, +205, 85,175,184,218,159, 20, 93,134, 89, 44,183, 22,195,105, 30,183, 87,121,223, 94,118,237,164,130,175, 56,170,182, 48,218,179, +244, 75,169,171, 58, 94, 73,206, 24, 79, 80,166,130,144, 10,255,244, 15,255, 21,255,225,111,254, 3, 62, 63,158,224, 67, 30, 93, +223,234, 10,114,183,126,251,160,196,103, 78, 49,238,196, 21, 11, 26, 86,147,133, 27,130,218, 51, 5,121,222, 5,137,127,243,101, + 46, 94,228,197,125,233,153, 19, 55,123,119,241,162,240,174,144,243,152, 56, 40,211, 85,248, 86, 46,213, 31,194,193,254,193,187, +243, 23,226,147, 18, 21, 98, 31,222,190,199,215,239, 63, 96,102,219,208, 60,207,168,155, 26,135,195, 1,159, 30, 62, 65, 72,137, +227,249,140,118,179,193, 48,140,197, 82,153,132,192,235,183,111,176,217,108, 48, 78, 19,158,142, 71,188,253,240, 14,199,203, 25, +223,126,250, 4, 83,215,216,221,223,193, 50,193,108,127,127,135,186,109, 32, 52, 93, 44,155,205, 6, 95,127,253, 53, 41,200, 35, +141,155,115,146,214,249,124,198,175,126,245, 43,178,158, 1, 16, 49,225,240,249, 17,143, 15,159, 75,180,170, 82, 10,110, 33,223, +245,200,140,113, 82, 24,211, 25,160, 88, 92, 55, 12, 35,237,131, 37, 93,196,243,188,148, 93,116,166,145,205,243, 76, 0,143, 0, + 26,207, 75,205, 99, 97, 95, 28, 42,249, 89, 8, 62, 18, 84, 70, 91,200, 36, 41, 83,155,187,177,124,137,208, 8,158,248,246, 11, + 7, 56,101, 68,178,229,244,171,140, 23,181,188,151,167,189,246,130,166, 38, 0, 11,141,168, 51,197, 11,215,207,217,147, 32, 77, +242, 68,140, 98, 96, 47,120,245,234, 85,249, 60,180,162,215, 82,107,141, 77,215,224,116, 58,161,170, 42,156, 78,103,246,125,171, +155, 51, 99, 89, 28,124, 72,120,120,120, 68, 93,213,104,219,134, 41,122,115,153,188,117,155, 13, 62,127,126, 98,161,161,196, 60, +123, 44, 46,176,173, 42,225,116,186, 96, 89, 72,120,230,253,130,166,161, 63, 31, 66, 64,215,117, 68,249, 83, 2,221,166, 45, 34, +184,148,136,112, 87,215, 53, 46,151, 30,117,211,224,112, 56, 34,248,128,199,167, 39,188,125,247,142,178, 51,164,198,166,221,226, +116,188,160,239, 39, 84,198, 66,128,206,197,105,154, 8, 28,195,160,157,121,158,203, 52, 44, 99,173,179,226, 61,143,148,149,162, +112, 42, 41, 36, 23,110, 28,141,203,194,177, 28,198,227, 98, 96,110,124,197,177,174, 26,167,211,105,149, 7, 33,216,137,160,177, +219,109,153,254,166, 40,152, 70,106,198,210, 70,248,197,145, 14,131,239, 3,210, 25, 4,216,186,162,228,190,166,129,144, 18,143, +199, 3,206,253, 5,117, 71, 74,248,203, 56,208,186,150,201,129,148,128,103,209, 52, 45,172,169,176,219,238, 80,217, 10,211,188, +224,124,190,176, 38,193, 97, 28,167,178,130, 12,252,241,110,117, 90,120,177, 11,207,107,152,231, 22,182, 92,220,196,149,163, 75, + 70,241, 12,156,181, 82,249,170,148,169,141, 9, 81, 8, 68,153, 16, 50,171, 38, 1, 34, 31,130,217,200, 36,174,248, 87, 4, 10, +106, 49,138, 70, 68, 34,195, 34, 82, 40,227, 75,210, 39, 11,136, 40, 24,129, 34,120,124, 7,168, 20, 97,101, 68,165, 19,197,120, +203, 4, 37, 19, 68,242,144,140,142, 93,124, 66, 63, 56,120,159, 10,161, 46, 36,226, 71,251,228, 17, 57,161,139, 72,115, 4, 70, +185, 25,171,174,246,109, 41,120,202,249, 77, 30,136, 14, 18, 1, 33, 82,151, 78, 2, 23,162,107,105,109, 33,160,175, 30,117, 91, + 81, 52,172, 18,136, 8,215, 44,119, 33,138, 95,155, 46, 28, 82,209, 39, 8, 68, 65, 95, 99,165, 13,239,107, 44,154,170,134,209, +228, 19,213, 90, 67, 25, 66,208, 74, 45,145,164,128, 80,154,169,110,140, 72,148, 18,145,127,208,165, 11,124,251, 79,191,194,223, +252,239,127,131,255,239,191,254, 10,206,107, 72, 65,212,163, 43,197, 69, 20,194, 87, 76, 52,121,136, 32,117,103,128, 71,132, 71, + 72,129, 69,189,226,170, 86, 84, 9, 73,103,238,123, 30,207, 7,234,254, 35,217,159,124, 10, 72,130, 2,101, 75,215,158, 86, 29, +174,224,152,213, 68, 23, 65, 74, 9, 73, 10,242,105,231, 66,128, 89,253,215,184, 84,172,118,219,248, 94,184, 65, 17, 90, 9, 81, + 2, 93,168,219,141, 16, 34, 64, 72,207, 15,182, 4, 18, 23, 72, 34, 33,202,132, 40,185,239,142, 20, 1,160, 34, 89, 11,233,113, + 95,237,246, 25, 85,172,144,160, 94, 76, 63,255, 55,232, 80,178,125, 99, 21, 68,163, 32,160, 98, 66,171, 43,252, 47,127,253,239, +208, 24, 11,132,132, 97, 28,240,120, 58, 96,156, 71,124,122,248, 22, 70, 43,244,227, 8, 99, 27,116,205,150,242,200,173,101,244, +107,131,186,109, 16, 19,112,120, 60, 96,215,237,240,246,205, 59,156,207, 61,190,254,234, 27,116, 13,165,106,105,169,208,213, 53, + 54,117,139,233, 50, 33, 44, 1,117,213, 96,211,118, 24,134, 11, 30, 15,143,232,167, 30,170, 82, 56,143, 23,244,211,128,207, 79, +143,184,123,253, 26,119,175,223,192, 54, 45,160, 52,102,231,209,108, 54, 88, 98, 64, 20, 64,223,143,144, 9,120,179,191, 71,171, + 45,144, 0, 31,232,253, 87, 91,141,176,204, 80, 66, 98,236, 71, 30,145,123, 32, 6, 44,115,102,207, 43,120,198,213,198, 24,209, +182, 29,231,110, 3,243,226, 17, 24,100, 83, 25,131,200,236,120, 31, 2,117,142,206,195, 59, 79,193, 71,138,188,236,214, 90, 24, +173,232,217, 74,192,253,126, 95, 20,204, 70, 19, 89,206,154,204,209, 72, 72,240, 48, 86,243, 65, 9, 84, 70, 66,201,136,202,200, + 98,165,205, 2, 46, 82, 63,123,204,139,227, 12, 11,192,242, 78, 88,155, 10,139, 15,148,187,109, 20, 42,173,208, 54, 53,180,182, +152,134, 25,136, 64,215, 52,136,136,112, 33, 0, 66,163,178, 21, 18,127,221,206, 69,120,167,177,120,141, 99, 63,193,115,234,220, +241,120,162, 34,104, 9,128, 82, 24,166, 11, 82, 92, 16,252,130,170,182, 80, 58,225,241,233, 1, 77,215, 66, 41, 1,239, 23,140, +243, 0, 31, 29,217,179, 18,104,220,239, 34,206,167, 11,140,174,225, 93,194,120, 25,177,219,110, 97,173,134,210, 9,202, 10,232, +138,128, 58,116,246,105, 40, 69,156,252,121, 30,177,223,111,161, 68, 66, 83, 25, 52,117, 13, 31, 60, 38,239,208,110, 55,152, 70, +135,228,129,105,152,161, 57,220, 38, 38,202, 25, 23,146, 76, 58,214, 8, 84, 21,233, 33,206, 67, 79,157,110, 85,177, 6,151, 89, + 4,172,105,242, 49,209,101,108, 12, 11,168, 85,233,254,125,138,144, 70, 67, 87,150,210, 4,235,150,158,163,228, 33, 84,194,226, + 39,212,109, 5,201,178,171,203,212,163, 95, 38, 44,110, 97,187, 50,145, 2, 29, 91,237, 4,103,171,251,224, 89,252,167, 97,148, +133, 95, 2,230, 97,129,134, 65,152, 34,220,228,233,162,238, 73, 95,224,157,131,155, 39,156, 79, 7, 72, 68,108,218, 10, 93, 91, +115,134, 72,164,181,172,145,204,227,144, 76, 76,197,247, 92, 61,235,253,121,161,200,241, 68, 52,111, 20,215,116,185, 53,193, 16, +140,203,250,193, 78, 34,119,232, 81,136,223,219,120, 93,119,156,116,200,210,110,216,148, 3, 57,138, 21,215, 93,174, 88,227,226, + 42,130,186,170, 92,217, 34,166, 36,180, 22,156,243,125,221,123,146, 85,199,225,233,120,102,232,140, 40, 80, 58,113,211,169,135, +162,108,206, 47,194,245,255,209,254, 60,139,246,168,138,207, 99,247, 0, 36,129,224, 19,144, 36,121,110,121, 61,160, 20, 80, 85, + 36,126,203, 42,219, 44, 82,112,206,193, 5, 18,222,249, 72, 56,217,197, 69, 44,206, 23, 97,147,128, 40, 23, 90, 82,146,216,234, + 90, 33, 73, 1,105, 12,176,170,212, 37, 87,114, 16,128,145, 10,136,177,236,173, 52, 43, 75, 19, 36,190,253,197,239,240,239,255, +183,191,193,223,253,237,127,193,228, 21,146,182,116,121, 33,222, 8,198, 74, 32, 3,114,122, 92, 42,107,135,152,109,127,121,148, +157,147,218,212,213,191,126,149,206, 11,144, 23, 46, 2, 33, 82,130, 85,202, 80,151,151,144,197,233,167, 58,217,190,220,206,222, +136, 69,190, 36,244, 72,207,246,223,226, 75, 91,163,239,205, 3,190,112,253,254, 15, 25,187, 23,154, 97, 18, 20, 27, 28,233,231, + 63,250,230,143,240,230,254, 53,230,113, 98,111, 44, 65, 77,126,249,235, 95,193, 86, 67, 42, 5,208, 0, 0, 32, 0, 73, 68, 65, + 84, 21,132, 36,154, 33,164,196,231,195, 1,237,102, 3,239, 35,218,174,131, 53,196,228, 62,159,122,236,247,247, 0, 4,198, 97, +196,119,223,125,135,221,126,135,205,102, 75,254, 93, 99,208, 53, 45,144, 18,166,121,160, 72, 76, 79,123,242,105,154, 96,181, 41, +120,231, 97, 24, 9, 25,107, 45,118, 59, 82,224,207, 51, 99, 87,121, 61, 52,142, 3, 46,151, 11, 37,122, 85,134,121,235,196,122, +160, 98,148, 56,232,198, 84, 36, 26, 2,237,212, 19, 18,166,105,224, 20, 71,218, 53,135, 64, 52, 56,205,121,235,203,226, 49,114, + 32, 71, 74,137, 24,235,220, 93, 57,142,202, 76, 41, 64,241,132,143,192, 55,215,224,168,124, 88,110,183, 29,180, 98,150, 60, 79, +203,242, 58,204, 23,235, 20,237,227, 41, 46,149,222,215,214, 24, 22,237,138,226,109, 15,156,103,158, 65, 33,222,123,108,183,155, +219,245, 95, 78,168,100,117,119,126,110,115,172,232, 48, 12, 8, 46,192,106, 3,183, 44,164,140,182, 6,202, 24, 26,169,123,143, +143,159, 62,211, 68, 67, 73,194,215, 26,130,247, 76, 51, 37,175, 73,173,201,110, 42, 5,166,113,134,146, 20,117, 26,188,199,110, +183,131,228,175,125,230, 8,210,121,158,208,117, 45,141,166,103,178,176, 85,117,141, 97, 24,233,251, 39, 81,148,243, 74, 0,155, +174, 35, 22,194,102,135,254, 66,161, 44,100,233, 3,180,164,238, 89,107, 89, 38,173, 49, 37, 24,166,231,121,231,139, 16, 85, 43, +197,140, 3, 22, 42,118,180,235, 55,214, 34,197,136,243,229, 2, 33, 37, 44,235, 26,138,170,155, 99, 90, 83,162, 9, 75,182,149, + 45,203, 82,166, 58,121,189, 73,185, 4,137,241,190, 96, 76,110, 96,194,105, 36,123,176, 33,189,196, 50, 47, 24,199, 17,222,135, +226, 29,167,176, 24,154, 50, 16,204,198,151,239, 89, 8,161,136, 24,145, 18,166, 97,130,247, 36,122,187, 92, 46, 8,254,250,121, +140,211, 8,169, 72, 91, 98,141, 45, 22,233, 12,152,202, 69,124, 6,206,188,116,177,175, 99, 93,149,224,188, 2, 38, 76,222, 58, +128,114,147,150,161,109,207, 7,156,226,167, 31, 77,235,106, 99,253,243,250, 13,243,195,170,224, 91, 37, 61, 61, 84, 60,130, 23, +138,109, 6,215, 55,139,143,192,121, 24,209, 79, 11, 34, 36, 4, 43, 35,139,150, 11,130, 38, 9, 41, 19,228,192, 85,118, 44, 63, + 82, 10, 5,128, 65,217,203,148,142,157,147,125,178, 17, 91, 66, 35, 70,208, 42, 65, 11,216, 90,163,169, 13, 42,171, 75,176, 76, + 76,100, 45,153, 22, 79, 2,139,105, 65, 63,204,232,199, 9,227, 60, 99, 90,150,146, 67,236, 67,132, 7, 48, 35, 96, 73, 30, 14, + 17, 75,244,152,131, 47,163, 55,138,225,163,139, 84,177,178, 60,239,221,172,177,216,116, 91,116,109,139,224, 35,254,233,255,249, +111,248,247,255,199,255,137,255,248, 31,255, 30,203,108,145,208,192, 65,192,203, 76,141,123,193, 35,189,254, 94,241, 78, 50,239, + 37,203,131,144,247,161,236, 87, 23,101,125, 65,127, 32,133,196,244, 47,143, 16, 86,208, 23, 6,207,224, 70, 40, 39,126,218,180, +253,247, 5, 10,137, 31,130,217,136, 31, 40, 38,196, 23,234,137,223,239,255,252, 67, 57, 69,110, 68,123, 66,150,234,130,245,152, +216, 52, 45,254,226,207,255,188, 0,124,165, 86,232,199, 1,253, 48, 82,135,194,170,233,105, 30,241,240,244, 25,194, 90, 36,169, + 80, 53, 13,217,107,166, 25, 90, 91, 40,166, 11,126,126,122,196, 47,126,241, 11,188,127,255,158,210,184, 30, 63,151,221, 97, 8, +129, 20,237,187, 29, 94,221,223,161,109, 41, 32,101, 26,102,116, 93, 7,173, 52,218,186,229,221,177,198,155, 55,111, 75, 7,125, + 62,159,113, 60, 62, 97,187,237,224,150, 5, 90, 74,218,185, 43, 58, 86, 62,125,250,200, 5,118,164,137,157, 50,112, 81,192, 39, +208,197,165, 53,230,121,226,117, 13,197,180,134, 16, 17,124, 38,242, 17,197, 98, 89,232,235,149, 66, 51,114, 52, 93,199,182, 44, + 62,106,186, 22, 82, 43, 40,163, 89, 23,114, 27, 79,153, 47, 0, 33, 5, 66,164, 78,188,156, 79,172,168,166, 88,211, 13, 21,187, + 60, 18,166, 75,225, 42,202,210,138, 64, 41,214, 26, 46,140, 40,106, 85, 74, 58,192,137,101,238, 89, 24, 24, 80, 49,183, 34,143, +152,179,152,110,154, 38, 12,227,136,126, 24,224, 29,217,165,148, 20,104,155,182,116,181,195, 56, 82, 62, 55, 8,160,146,133,102, + 89, 27, 20,188, 99, 24,143, 69,211,109,176,184,192,176, 41,138,161, 30,135, 17, 74, 72,178,164, 9, 32,134,128,121,158,112,183, +223, 34,120, 71, 64, 22, 73, 19, 11,231, 23, 52, 93,131,197, 17,208, 40, 37,242,118,247,125, 79,226, 92, 65,233,118,109,219, 17, +235,129, 77, 51,185, 72,200,194,190,101,153,233,220, 74,169, 20, 87, 62,120, 30,171,107,246,144,207, 37,225,205, 90,139,224, 61, +182,219, 45, 57, 3, 88,196,102,180,226, 51,156, 67,154,184,153,161,124,242, 26, 70,170, 66, 12,205, 14,130,138, 93, 69,125,223, +195, 48,160, 40,132,192,193, 41,180, 94, 93,143,188, 37,195,126,168, 96, 0,206,231, 30, 33, 68, 28, 15, 39,104, 93,241, 90,150, +190,111, 57,201,142,210,175, 73,143, 36,100,134, 5, 41,244,253,128,203,101,128,115, 17,134, 89, 17,211,188,240,189, 65,168,239, +235,121,152, 74, 97,243,252, 28,123,110,183,198,202, 73,148,158, 69, 68,223,238,211,179, 0, 26,208, 41,165,231, 18,244, 31, 39, +140, 43, 60,239,116,147, 99,157, 85,214, 66,210, 56, 80,200,219, 36,153, 40,210, 45, 26,180,140,134, 19,123, 84, 51,219, 36,225, +170,211, 34, 15,183, 34,131, 22, 66, 76, 88, 66,196,225, 52, 98,114, 17, 81,152,107,231,243,236,142, 16, 0, 82,160,174, 91, 40, +138, 26, 75, 69, 65, 40, 86,127, 42, 34, 70, 89, 38, 1,130,248,161, 48, 74, 33,196,128, 74,106,182,167, 41, 52,141, 65,221,214, + 48,214, 20, 10,212, 60, 59, 76,227,194,187,170, 72,235, 10,182,207,208, 5, 77,133,200, 60,207,136,209, 67, 25, 5,176,198, 77, + 43, 69, 35,170, 36, 75, 96,132,139, 1, 22,134,112,174, 41,193, 26, 13, 83, 87,208, 66,160,110,106, 36, 0, 31, 63,126,198, 47, +126,245,107,252,167,191,255, 7,252,221,127,254,127, 49, 78, 9, 16, 21, 2, 18, 60,104,244, 44,217,105,112,179,131, 78,226,198, +143, 77, 13, 55, 67, 79,210, 51,193,216,106,116,143,117, 78, 74, 14, 56, 23, 18,222, 5, 4,255, 18, 39, 64,148, 78, 55,221,110, +245,191,215, 85, 63, 7, 1,253, 88, 5,252,143,101, 39,124,249, 47, 74,215,156,247,155,143, 47,190, 52,179,250,131,119,234,153, + 62, 43, 25, 54,243, 87,127,249, 87,120,247,230, 29,146,243,240,129, 2, 82, 2,103, 31, 72, 41, 41,241,111,153,201, 78, 36,129, + 57, 6,232,224, 81, 53, 45,164,247,120, 58,158, 48, 44, 51, 90, 78,190,170, 42,242,157,191,122,245, 10,199, 35,101,111,127,243, +213,215, 56, 28, 14,165,147,253,240,254, 29,206,167, 19, 31, 92, 17, 85, 67, 65, 27,222, 5, 76,105,194,118,179, 69,221, 52,136, + 49,225,241,241,145,194, 65,140, 65,215,209,110,122, 94,102,188,123,247, 22,138,187,179,211,249,132, 97, 28, 97,154, 14,154, 11, + 67, 31, 34, 32, 13,134,121,193,253,253, 22,227,116, 66,219, 53, 68, 23, 19,146, 25,237,156,236,184, 58,208,134, 97, 96,125, 14, + 81,206, 22, 63, 65, 1, 72, 90,195, 50,171, 33,242, 97, 41, 1,222,183, 11,196, 20, 72,127,147, 18,106, 91,209,112, 41,239, 30, +133, 64,215,181,184, 92, 46, 64, 4, 57, 10,184,195,116,195, 66,170,241,182,225,169, 33,217,177,188,247,240,110, 1, 18,101, 64, +248,144, 80, 85, 53,172,214,184,156, 78,184,219,239,160, 13,117,139, 21,235,103, 32, 18,166,121,164,169,163,161,110,221, 90,131, +105, 14, 48,150, 58,248,121, 89, 10,243,190,170, 44, 46,135, 1,109,211,226,112,248, 12, 33, 64,133,146, 20, 28,162, 66, 23, 27, +249,204, 19,148, 36,180,238,227, 52, 97,154,103,138,129,213, 26,195,229, 2, 41, 18,166,105,196,219,215,175,240,240,244,136, 97, + 28,161,165, 68,183,223, 35,248, 19,148, 4,234,198, 34, 38, 15,200, 4, 23, 28,108,109, 17, 99,192, 48,142,184,219,111, 41,116, +103,158, 97,180, 66,138, 1,203,180,144, 5,172,161,181,164,181, 26, 93,215, 22, 98,158,227,188, 0,176,189, 44,167,218, 53, 90, + 67, 70, 73,160, 21,231,209, 54, 13,230,121, 65,101,107,248, 56,150,174,124,158, 38, 88,187,129,209, 26,209, 82, 1, 20,125, 40, +196, 78,169, 8,251,154,197,139, 90, 73, 90,119,240, 74,198, 90,131,197,121, 44,243, 82,224, 95,212, 40,145, 40, 79,115,120,141, + 16, 10, 81, 0, 73, 36, 44,110,225,156,115,176, 53,212, 96, 28, 39,214, 46, 25, 40, 41,177,217,236,112,185,156,139,237, 45,132, + 64,217, 8,145, 18,248,186, 13, 77,115, 47,253,192,103, 44,221, 49,222, 5, 44,252, 58,144, 8,251,138, 84,255, 33,186,230,186, + 33, 94,223,151, 47,137,193,179, 96, 56,165, 4,157, 63,129,223, 59, 82, 23,171,234, 32, 51,219, 83,188, 54,101,207,192, 27, 49, + 70, 24,197,163,119,200, 27, 99,124, 90,141,199,111, 4, 79, 92, 32,136,148,253,185, 2, 90,230,125, 65,198,115,243,200, 92, 72, +140,139,199,105,152, 49, 57,202, 55,142, 47,116,101,197,194,197, 42,246, 24, 37,164,178,132, 86, 21,130, 5,225, 98,117,192,114, +215, 45, 19, 82, 80,144,194, 0,130, 60,225,109, 91,163,174, 13,186,109,141,186,109,174, 96,143,101,193, 50, 77,184,244, 61,250, +203, 64, 7,153,169, 96,235, 26, 82,209,133, 15, 17,225,221,130,203,185,199,227,227, 35,148, 0,238,246, 27, 52, 77, 5, 32, 64, + 41, 1,107, 27,212,117,131,228, 3,144, 2,108,101,200,198,226, 28,133,159,168, 10,151, 97,132, 76, 17,143,135, 39,156,143, 39, + 60, 62, 29,240,187,135, 3,126,249,235,239, 48,204, 14, 1, 9, 72,196,186,150,130, 87, 7, 47,161, 4,139, 98, 80,176,231, 53, +242, 24, 62, 19, 1, 25,173,154,194, 85, 57, 95, 46,121, 94,175, 72,197,119,189, 44, 15,236,181, 96,138, 69,160, 39,120,159, 84, + 2,124, 50, 69, 54, 82,183, 69, 59,212,103, 36, 58, 33,111,208,174,185,240,204, 19,145,151,124,234,233,197,135,152,125,241,248, + 2, 14,118,253, 53,241,106,226,185,126,244, 90, 17,139,103,140,154,244, 19, 10,140, 47, 21, 38, 40, 49,180, 34,210,133,244,205, + 87, 31,240, 23,127,242,103,208,202,224,241,241,128, 16, 61,206,253,137,246,149, 51, 93,230, 74,107, 40,173, 40, 43, 92, 27,244, +243, 8,239, 28, 94,223,191,193,211,225,128,152, 18,246,251, 59,204,206,193,197,136,251,205, 14,155, 77, 87, 60,217, 95,125,245, + 21, 14,167, 35,230,113,194,215, 95,127, 13,107, 12,166,113,196,127,255,231, 95, 96,191, 35,196,235,221,221, 29,217,144, 78, 1, + 41, 38,108,119, 59, 28,142, 71,108,183,219, 34, 34, 3, 18,190,251,248, 29, 0,178,126,229,212,171,105, 89,224, 98,128,177, 26, + 66, 36,108,187, 22,167,126,130, 47, 88, 32, 89,118,224, 74, 83,193, 55,140, 19,150,217, 99,183,107,177, 44, 35,251,148,175,194, + 40,218,173, 55, 24,134, 30,202, 82, 2,219, 52, 45, 80,218, 96,114, 30, 49, 17, 79,219, 71, 79,226, 62,101,216, 74,167, 74,225, +125,253, 59,232,146,205,108, 5,109,136, 41, 30, 4,241,197, 51,234, 52, 7,109,180,117, 75, 96,157,101,193, 6,192,221,118,135, +143, 15,159,224, 22, 2,141, 40, 9,204,211,136,205, 55, 95, 33,196,128,121,158,177, 44, 11,236, 42, 51, 93, 8, 20, 43,234,250, +215,117,221, 20,214,187, 97, 37,246, 50, 59,104,229, 32,165,134,214, 9, 77,109,153,234,167,120, 21, 50, 65, 91, 42,168, 98,240, + 84, 84,205,142, 2,104,184, 8, 52,172,228,159,166,137,212,234,214, 98, 24, 7, 38,164,121, 84,149,129, 15, 14,186, 34, 68,173, +159, 2,198,105,194,110,183, 3, 0,140,125,143,121, 94, 72,127,177, 44,204,142,151,220,164, 92, 47,157,188,130,201, 72,219,106, +211,178, 48,177, 94,165,169,145,192,114,179,221,160,170,106,156,143, 39, 68,203,205, 32,239,247,199,105, 68,219,182,152,230, 25, + 93, 36,126, 64, 85, 9,122,221,103,130,181, 4,239,161,249, 92, 52, 70, 48,221,111, 66,219,212, 8,140,162,205, 81,175,203,226, + 48,141,148, 65, 95,215,121,162, 74,231,142, 20, 2,218, 88, 4, 65,147, 15,183,120, 68, 73,235, 23,130,231, 4, 78,140,139,236, + 61,167,152,220,152, 0,231, 3, 52, 39,212,229,243,108, 28,168, 0, 72,145,224, 67,203, 66, 86,194,156, 52, 26, 10,158,252,122, + 78,228,201,207,247, 59,238,244, 61,215, 84, 78,216, 20,207,214,223,235,223,155,196,245,156,212, 63,220, 77, 92, 79, 98,241,133, +166, 93,172, 84,229,249,178,200, 76,226,239,143, 49,129, 64, 3,243,103, 99,224, 4, 41,215,209,170,121, 2,204,168, 88,228, 49, + 55,224,163,192,121, 90,240,120, 26, 16,160, 24,113,154,243,198,174, 61, 97,140,171, 41,112, 81,188, 39,164, 66,165,122, 54,210, +205,246,152, 20,233,122, 18, 2, 74, 89,212,149, 70, 93,147,202,221,121,143,195,241,140,167,199, 39, 12,125,143,203,153, 84,171, +211, 56, 97,154, 23, 72,169,177,191,187, 67,203, 20, 38, 33, 37, 34,143,118, 62,125,247, 17,167,227, 17,247,119,123, 88,165, 33, + 3,121,193,147,150, 16, 30,240, 51,137,126,108,109,161,140,196,209, 26, 24,173, 72, 52,162, 20,132,136, 37,216, 69, 64,194, 71, +133,195,197,227,183, 31, 31, 49, 46, 4,224, 17,201, 19,120, 55, 82,202, 87, 38,185,149,139,135, 95,158,192,253,115, 2,117, 41, + 49, 37,122,248,214,223,220,144,138, 24, 46,197, 8, 81,210,206, 88, 76,198,247,174,243, 1, 33, 94,115,216,138, 24, 82,144,250, +159, 30,230,156,192,247,108, 64, 35,226, 74,125, 47,190,172,233,248,177,172,226, 23,198, 88,171, 80,247,162, 39, 40, 95,169,100, +118, 66, 38, 56, 9,249,189,207, 35, 71,136,190, 12, 70,198,247,222,136, 63,229,159, 24, 3, 52, 20, 84, 74,232,234, 22,255,235, +191,251,159,113,183,223, 99, 25, 38, 76,227,136,113,185, 16,146,114,153,139,157, 39,132,128,205,102,131, 20, 19, 78,151, 51,148, + 49,216,236, 91,156, 78, 39, 92, 46, 23,216,182, 70, 63,244, 8, 49,162,169,107,216,202,226,112,120, 66,215,181,104,219,134,157, + 30, 30,218,106,132, 20,112, 60, 13,240,203, 76, 73, 82, 90, 99,179,219,225,120, 62,225,225,211, 3,172, 49,216,110,183,228,143, +247, 14,143,143,143,204, 29,127,130, 15, 30,253, 64,169,112,247,247,247,136,142,152,242, 79,199, 3,132, 0,222,191,123,139,223, +126,251,145,130, 53,120, 2, 55, 79,148, 55, 29,131, 69,136, 17, 94, 0,182,169, 33, 68,196,226, 3,134,113,130, 82,228,149,142, +105, 34,165,246,236, 80,215, 36,100, 50, 21, 29,224,199,211, 9,187,205, 6, 9, 18,159, 63, 31,176,221,111, 81, 65, 34, 4,183, +154,252,241,235,171, 52,130,136, 48, 82,115,115, 1,196,152, 47, 63,205, 7, 52,117,189,222, 57,182, 69,145,170, 88, 49, 95, 62, +197, 8,173, 52,134,190,199,118,187,197,221,126,143,223,124,251, 17,206, 59, 64, 73,180,109,195,187,102, 95,242,212,243, 51, 65, +205, 13,138,250,222,121,143,170,178,101, 71, 91, 91,138, 68,165,137,135,131,214, 6,227,200,222,104, 75, 89, 15, 20, 13, 74,123, +245, 24, 35,134,161,199,235,215,175,113, 58,158, 32, 5,185,132,178, 94,166,109, 91, 76, 61,185, 11,218,166,194,226, 28, 18,211, +231,172,173,112,185,156,177,221,110,177,221,108, 48,177,215,188,109,106,204,211,204, 73,136,130,115,202, 29, 22,199, 34, 66, 41, +225,184,152, 91,150, 9,231,243, 25,219,109, 87,214, 19,132, 19,246,104, 27,178,240, 65, 8,230,238,147,109,119,156,105,124, 93, +177,162,126, 89, 28,218,166,161,181,138, 97,148,175, 15,112,126,161,139,189,109, 48,142, 51, 77, 49, 91,154, 4, 44,129,166, 27, + 77,219, 32, 56, 15,173, 36,147, 62,105,149, 52, 12, 35,229,117, 40,242,118, 71,166, 6, 54, 77,205, 23, 98, 68,240,129,232,133, +222, 67, 10, 58,226, 20, 67,122, 0, 96,153,201,181,225,150,165, 12, 35,115,210,223,167,239, 62, 65, 41,137,237,102,135,166,173, + 17, 34,112, 57,159, 1,154, 27,149,160, 30,234,129,228,141,134,233, 57, 60, 43,143,245, 95,212,164, 61,179,237,230,139,253, 86, + 32, 44,174, 41,164,160,179, 88,112, 88,215, 15, 94,234,226,102, 37, 42, 94, 94,126,166,239,119, 44, 25,119,153,138,149, 40,219, +203,168,179, 22,223, 27,165,230, 47, 64,144,152, 59,243, 77, 68, 86,224,115, 39,149,136, 34,119,238,103, 28, 47, 3, 2,232,210, +132, 72, 16,130, 50,206,229, 74, 20,166,147,188, 2,103,104, 57, 65, 59,244,120,187,203, 23, 2, 8, 17, 69, 8, 19, 34, 89, 73, +220, 2, 92,206, 14,126,233,241,244, 8, 56,191, 32,120, 7,239,151, 18, 31,152, 85,211, 49, 1,214,106,124,126, 58,226,225,233, + 68,133,138,162, 0,142,105,114,152,135, 9, 82, 86,240, 1,120,248,252,132,222,144, 26,184,237,106, 84, 76,221,139, 49, 98, 26, + 21, 18,184,242,228,177,227,221,126, 75, 89,207,117, 5,163, 13,130,143, 56, 31,123,124,252,120,192,185,119,164,205, 22,170,140, +214,197, 13, 95,141,225, 49,105, 5,135,201,177,227,140,141,141,121, 13,147,167,236,249, 27,231, 3, 82,136,164, 88,143,145, 96, + 8,145, 46,252,228, 3,132, 19,112,227,140,232,175,224,161,196, 68,193,117, 70,123,190,208,175,124,249,231, 69, 99,250,130,141, +237,217,115,242,111,158,128,191,208,213,179, 0, 48,177,113, 48,189,192, 56,184, 29,121,137, 50,213,249, 82,184,194,143, 29,192, + 43, 65,149,181,145, 10,127,253, 23,127,137,159,125,248,138, 38, 63,231, 51,139,183,124, 97, 67,103,116,171,155, 38,182,140, 25, +124,120,251, 22, 82, 91, 24,165, 49,187,153,198,191,188, 23,221,237,118,232,218, 14, 33, 44, 72,137, 0, 50, 66, 8, 28, 14, 79, +208, 90,227,221,187,119,116,121, 69,178,156,109,119, 59,196,148,240,116, 60, 64, 41,133,182,235,240,225,253,123,244,151, 11, 30, + 62,125, 42, 84,175,166,233, 48, 12, 3, 32, 5,246,251, 59,238,110, 35, 62, 61, 60,160,105, 27,212, 77,131,174,107,208,247,103, + 32, 56,204,227,128, 8,137,170,170, 17,162,134, 54, 21,134,126, 68, 76, 14,213,221, 22,211,228, 32,164,130, 18, 10,144, 36, 14, +243,145,220, 55,227,236,208, 15, 19, 32, 36,238, 95,147,176,235,116,190,176, 24, 87,225,112,188,192,214, 45,170,170,197, 52,205, +136,129, 46,150,105, 36, 37,119, 85, 17,102,213, 26,195,176,170,137, 73,102, 52,105, 75, 70, 97, 26,103, 52, 13, 89,175,130,247, +136,193,163,107, 91, 58,179, 2,176,112,228,234,208, 79,176, 70, 96, 26, 71, 84,117,197, 93,183, 7, 18, 80,217, 22,145,237,162, + 90, 43, 56, 79,112, 29,164, 84,172,170,217,235, 78, 29,233, 4,109, 12, 42, 83,151, 14,126, 24, 71, 84,182, 65,223,143,104,155, + 14,243,178,224,245,155, 59,140,227, 64,227,226, 8, 44,203,204, 72, 93, 90, 5,236,182,244,250, 73,238,252,171,186,194,229,124, +134,150,180, 3, 79, 41, 97,179,221, 64, 27,139,105,114,164, 14,175,168, 64,147, 66,194, 72,133,218, 90, 56, 31,176,233, 90,164, + 72, 46,131,170,170,208,247, 23,180,117, 67, 62,240,156, 61, 97, 44,148, 18, 88,220, 66,177,187,150, 26,164,236, 91,207, 22,189, +190,191, 92,189,229,110, 41, 19, 11, 29, 52,154,174,197,120,238,203,229,150,152,141,191,196,132,168, 53, 46,125,143,221,110, 91, +108,179,153, 37,176,184, 25, 49, 37, 74,116,144,215, 75,114,156, 39, 52,204,153, 15,188,243,214,154, 10, 72,136, 88,194,107,134, +254, 2,109, 42,206, 30, 80, 69, 40, 72,162, 60,135,187,253,190, 8, 17,221,226,176,184, 5, 66, 42, 4, 31,209,181, 27,108, 55, + 59,156,207, 61,158,158, 78, 16, 74,195,249, 0,107,235,210,205,123, 23,160, 20,217, 42,165,210, 76,219,123,174, 1,190, 69,140, +175, 3,158,214,133,224, 13,135, 35,165, 50,193, 44, 92, 45, 92, 69,201,249, 60, 74, 12,176,209, 63,106, 70,248,130,162,105,157, +195,157, 86, 42,246,117, 40, 72, 25,123,138,116, 19,248,158,253,192,226, 38,215,156,179, 66, 4,195,255,139, 48, 14,183, 24,205, + 4, 44,222,227,112,186, 96,246,137,243,209,193,217,220,162,200,224,178, 74, 54,164, 88,178,179,165,188, 34, 99,197,106,236, 42, + 56,150, 16,137,197, 98,158, 84, 75, 62, 69,244,126,198, 60, 73,104, 38, 10, 9, 8, 64, 94,191,150, 24, 19,124,204, 93, 65,194, +236,103, 86, 71, 82, 8,133,144,156,225, 30,129, 36, 52, 53,134, 81, 96, 90, 60, 82,162, 29,145, 13, 17,202, 57,104, 41, 41,131, +218, 57,202,109, 23, 26, 65, 70,104, 8, 36, 23,145, 92,132,131,199,176,140, 88, 22,135,199, 99,143,195,231, 39,132, 57, 2,202, + 0,146, 2, 62, 68, 2,146, 8, 44, 16, 20,101,124,115, 51,182, 89,125,227, 18,152, 77,195,204, 99,153, 31,158, 72, 93,186, 8, + 17, 8, 1, 34, 23,151, 4,146, 7, 66, 64, 92,128, 48,249,155,209,122,174,138, 19,219,218, 18,178, 58, 83,254,168, 75,247,182, +178,205, 75,254,244,163,246,237,162,164,243,229,103, 42,173, 42, 24,241,114,239, 47,202, 44,124, 21, 26,252,220,199,143,155,160, + 17, 82,172,226, 95,221,161,103,241,139,224,159,223,190,253,128, 63,250,250,107, 12,231, 11,150,105,134, 53, 85, 25, 61,167, 20, + 9,136,178, 44, 24,199, 9,155,110, 3,173, 37,234,170,194,249,124,198, 52, 46,192,187,247, 20, 4, 82, 91,156,143, 39,212, 29, +165,127, 33, 6, 60,126,126, 36,145,167, 82, 24,134, 1,175, 94,189, 66, 8,228,243, 61, 28, 14,168,235, 26,253, 48,161,217,108, + 49,140, 35,188,119, 4,154,233, 90, 28, 14, 7, 24,173,113, 56, 62, 97,179,219, 66, 73,133,113,236,169, 8,140, 9,222,147, 66, +221,123,143,101, 38, 37,246,228, 39,156,250, 19, 68, 32,129,153, 72, 36,230,154, 83, 32,149,116,140, 84,148,158,123,236,183,148, + 36, 54, 46, 35,137,205,234, 14, 33, 56, 76,147, 71, 74, 10, 49, 58,104, 67,133,240, 60,147,208,116,158, 22,236,119,119,152,102, + 7,109, 45, 98,138, 60,190,159, 72,117,207,221,154,181,150,163, 70,105,207, 29, 19, 10, 96, 69, 73, 74,100, 28,199,249, 26, 15, + 26,105,213,164, 36,141,200,173, 49,112,137, 70,173,121,159, 93,158,239, 24,209,117, 27,244,227,200,214,208, 88, 18,194,148,209, +208, 33,192,185, 5,155,174, 33, 68,174,214,240,222,227,114,185,160,110, 27,138,115,101,129, 30,248,140, 84,156,230,149,189,199, + 53, 83,217, 98, 76,104,219, 26,199,241, 66,172,130,186,194,188, 56, 98, 2, 72,195, 88, 92, 98,195,199, 64,182,172,168, 52,180, + 37,174,189,115, 30,155,221, 14,198, 26,156, 47,103, 84,246,158, 40,121, 85,133,138,215,136,193, 5,116, 13,141,191,199,121,132, + 49,166,124,252,217, 19, 27,127,215,109,112, 60, 28,177,217,110, 86,103, 58,157,123,231,203, 5,247,175, 94, 65, 36,102,234, 43, +162,171, 93,211,214,136, 93, 32,149, 66,101,175, 0,152,188, 10,245,142,138, 86,114, 51, 80,183, 94,213, 21,166,113,130,150,154, +206, 73, 73,123,244,166,105, 41, 82,117,113, 80, 70,195,104,195,235,142,170,248,192,149, 84,156, 70, 71,104, 87,205,148,187,217, +185,114,239, 12,195,192,226,190, 80,132,126,251,253,158,119,231, 36, 94,156,231, 25,227,228, 33,132,198,253,253, 43, 76,147,199, +188,204, 56,158, 46,232,186, 22, 62, 57,108,186, 13,124,240,152, 49, 23, 17, 92, 62, 27, 40,111, 67,222,136, 99,115, 26,161,148, +226, 69,152,204,243, 64,163,245,250,145, 6,168,177, 52,203, 57,200, 77,176, 37, 24, 0,180, 76,183, 99,244,239,229, 99, 37,222, + 49,198, 72,227,228,155,197,168,224, 96,150, 84, 22,248, 41,239,196,165, 42, 34,185,152,200,151,157, 45, 97,105,213, 21,230,143, +147,119,230,178, 8,228, 68,129, 66,208, 72,136, 14,192,144,128, 97,241,120, 60, 93, 48,135,136,112, 19, 1,195, 99, 97,145,120, +252, 65,133,128, 92,101,178, 95, 63,236,181,184,144, 43,225, 88, 30,190, 42,102,186,107, 73,133, 6,196, 85, 25, 78,150, 2,193, + 17,172,196,250,165,106, 91, 23,102,187, 20,146,242,186, 99,162, 9,128, 22,136, 50, 64,196,192,190, 88, 10, 92, 0, 63,212, 70, +107,104, 41,160, 4,141, 12, 3, 18, 68,164,143, 45, 66,196,120,238, 17,150, 5, 49,177,121, 92, 40,124,122,120, 34,176,129,146, +112,145,253,218, 55,187,226,196,223,191,231,221,251, 42, 81,143,215, 13,217,138, 18, 18, 21, 51, 49, 70, 8, 31, 32, 92, 34, 75, +186, 79, 16,129,255, 36,197,186,209, 19,229,242,216, 94,177, 45,139, 8, 4, 73,144,150, 32,242, 8, 35, 9, 89,160, 52,105,181, +155,206,223, 39, 33, 82,177,196,137,213,234, 39,173,171,213, 31, 49,123, 79,107,218, 48, 23,122, 55,192, 28, 60,203,100, 47,246, +146,181,214,227, 86,156, 66,206, 11,241,226,152,172, 92,254,171, 34,181,216, 43,229,122, 71,149, 86,226,210,108,191, 84,144, 49, +160,171, 27,252,245, 95,254, 79,184,219,239,225,103, 15, 31, 22,156, 46, 7,156,206,103, 64, 36,140, 19, 17,187, 8,228, 68,175, +227,110,187,195,225,240,132,227,211, 1,119,247,175,105,132,218,117, 56,156, 79, 80, 90, 66,178, 21,232,243,225, 0, 99, 52,170, +186,198, 50,207,104,234, 6, 34, 1,187,237,142, 49,178, 35,148,210,248,230,231,223,208,126,112, 28, 49,207, 11,238,238,238,224, +131,199,241,120, 68,140,100,101, 67, 4, 22, 79, 22,168,124,192,236,247,123, 24,182,208, 9, 45,113, 25, 46,104,187, 6,195,255, + 95,219,123,245, 72,150,101, 89,122,235,200,171,204,204, 85,100, 70, 86, 85,139,170,174,233,230,176,197,160, 89, 51, 32, 7, 4, +136,121,224, 31,171,255, 70,240,129, 36, 8, 18,131, 1,134, 28, 73,150, 72, 25,225,238, 38,174, 58,146, 15,123,159, 99,215, 60, +162, 68, 79,131, 72, 56,144, 25,233,225,194,236,222,187,207,222,123,173,111, 57, 71, 15,111,101,224, 98,194,176, 31,112,254,238, + 59,100,165,145, 5,152, 90,214,194,249,132, 24, 9,114,211,118,150,238,151, 40, 32,165,193,229, 76,241,163,198, 52, 88,215,133, +149,226,132,225,164,248, 77,139,203,101,132,210, 10, 58,179, 99, 68, 72,196, 64,226,165,242, 96,156,151,153,198,174,172,202, 39, +130,156,198,234, 29,233, 89,140, 70,138, 1,166,109,185,155,214, 88, 47, 23,180,253, 0,100, 73,171, 0, 0,166,209, 12, 96, 34, +145,173, 53, 26,139,147, 72,209,211,154, 43,209, 33,191,109,104,151, 45,100,177, 66,177,192,141, 73,152, 25,148, 37, 62, 77,180, +227,166,152, 89, 18,212, 46, 43, 65,132, 74, 40,203,178,144,178, 92, 21,239, 52,191,246, 90,155,250,251, 27, 99, 33, 20, 37,195, + 41, 69, 84,181,224, 3,250,190, 65, 78,132, 42,109, 58, 7,219, 24,164, 64,226,214,152, 50,219,228,136,119, 79,214, 94, 58, 88, + 12,125,203,182,183, 1,110, 89, 48,244, 29,188, 91,113, 74, 39,220, 63,220,241,129,160,133,243, 43, 91,250, 18,164,210,152,167, + 9,187,190, 71, 74,180,214, 88,152, 52, 55,236,119,112,222, 97, 89, 9, 7,236, 87,135, 97, 24, 48,142, 35, 86,190,174,181,209, +149, 5,159, 82, 64,224,131,129,214,196,146,151,138,228,213, 49,208,228, 74, 25, 11,169, 8,196,162, 5,224,188,135,140,148, 46, + 87,240,187,133, 35, 16, 19,139,115,165, 36,187, 90,112, 80, 41,213,240, 25,128,192, 70, 33,174, 48, 38,160, 31,122,198, 17,175, + 72, 73, 98, 89, 60,188, 59, 33,236,129,251,251,123,188, 30,143, 20,110, 36, 22, 36,166, 30,106, 77,169,118,151,203, 5, 74,209, + 84,136,108,127,226,118,121,189,157, 92,102,124, 70,187,115,187, 58, 44, 63,159, 20,106,195,225,192,173,182, 72,242,131,156,191, +135, 22,249, 42,134, 78, 27,240,140,168,163, 81, 9,153, 36, 32, 18, 37,163,229, 34,117, 81, 87, 47,148,188, 29,110, 10,228,234, +201,204,226, 74, 88,163, 4, 50,121,197,168, 22,235,155,144, 27, 72, 11,179,221, 69,190,102,179, 11,208,104, 61, 5,248,152,113, + 26,103,188,142, 11,124, 77,220, 42,187,220, 92,225, 16, 98, 99,181,203,155,177,173, 40,106,231, 58,182,184, 42, 12,165,144, 4, + 54, 96, 1, 71,230, 56,215, 36,202,215, 74, 85,241, 95, 60,210,214, 18,171,217, 52,133,215,174,160,149, 4, 68,134, 91, 51,141, + 18, 61,249,225,115, 34, 5,128, 81, 9, 70,117,176,182,229,155,149, 59,217,124,109, 28,181,208, 16, 28, 35,152, 98,196,186, 68, +204,243, 10,161, 53, 76,211, 35,228,128,231,227, 5,179,247, 68,183, 23, 2, 89, 68, 26,125,151,195, 77,206, 92, 96,100,229,246, +109, 15, 86,145,127,223,148, 50,124,202, 88, 99,196,226,201,150,231,157,135, 88, 21,212, 28,144,155,136,108, 50, 96,248,112,148, + 37, 67,100, 36, 68,144,144,194, 32, 11, 67,224, 20, 0, 49, 43,134,253, 4,250,158,124,209,137,156,144, 33,107,130, 31,237,170, + 21,131,136, 74,144, 74, 70,190, 25,204, 51,181,174, 28,170,242,239,219, 17,149,115,155,172, 35,117, 42,216,183,199,213, 44,182, +192,151,171,167, 79, 8, 74,212,146, 72,181, 48,127, 78, 73,178, 21,206,213, 33, 88, 61, 43, 72,206,168,231, 4, 63, 72, 62, 81, + 71,100, 73,163, 14, 37, 20, 16,121, 34,149, 51,254,242,167,255, 4,127,254,227, 63,197,114, 33,172,230,101,186, 32,164,128,211, +244, 66,157,140,164, 93,173,159,124,189, 94,231,121,193,186, 56,220, 63, 60,160,105, 27, 76,227,132,251,199, 7,232, 89, 35,172, + 1,141, 53, 88,215, 25,182, 33, 43,217,241,116, 65,138, 17,187,182,131,150, 26,211,121,194,241,120, 68,215,245,248,242,203,247, + 72,193,227,187,239,190,133,210, 22, 63,249,209, 79,208,116, 13,190,253,246,107,140,203, 8,169, 36, 58,165, 48,141, 51, 89,178, +152,108, 23, 98,128, 91, 86, 60,127,248,136,195,221, 30,115, 48,128,207,184,156, 79, 56, 12,123,104,105,176,172, 4,101,249,248, +195,119, 16, 57, 64,100,129, 12,133, 36, 37,238,238,239, 33,181,198,188, 78,208, 10,136,222,195,173, 26,171,163,128,149,144, 2, +164, 38, 52,170, 84, 18,151,113, 68, 10, 52,197, 58,198, 35, 30,159,190, 64, 18, 10,110, 13, 80,193, 67,138,132,156, 2, 36,128, +195,195, 3,143,170,105, 28, 43, 53, 41,240,141,166,123, 42,178,221,169,181, 13,148,148,232,153,242, 22,130,163,113,114,211, 82, +195, 34, 0, 23, 35,132, 86,104,100, 11, 81,216, 15,156,197, 29,131,199,110,104, 97, 52, 61, 15,101,190,138,242,246,251, 1, 57, + 71,196,224, 73, 79,176,174,196,161,224, 78, 13, 9,184,187,219,115,199,168,160,149, 69, 76, 68,149, 75, 57, 65,101,129, 20, 34, +164,213,240,193, 49,127,156,114,201,239,239, 31,136, 51, 46, 36, 98,162,164,184,148, 29,164, 84,136,222,147, 39,220,147,149,172, +181, 6, 2, 9, 79, 15,247,248,238,155,239, 17,124, 36, 63,179, 1, 16, 3,238,246, 59,164,236,225,214,128,190,181,112,145,196, +126,228,229,167,125,186, 84,134,199,223, 17, 77, 75,122, 0, 3, 74,141,244,222,211, 36,132,133,113, 69,171,148, 82, 68, 22,164, + 40, 23,210,192, 90, 18,246,249,213, 97,134,224,221, 58, 29,232, 16, 50, 12,239,224,181, 82, 8,206, 67, 55,116,128,141,153,188, +227,101,202, 34, 33,224, 99, 64,195,161, 56,165,139, 37, 41, 15, 55, 33, 41, 0, 72,244, 57, 41, 67, 72, 18,101,166,236,107,162, + 36, 33,113, 91,228,164,224, 99, 64, 88, 87,226,217,123,135,221,110,143,182,215,240, 1,200,233,130,144, 34,206,231, 11, 0, 42, +236, 31,157,163,120,225,213, 3, 57, 84,141,214, 48, 12, 56,158,206,117,181,153, 54,104, 77,145,105,157,252, 54,148,229,115,129, + 80,114,147, 87,144, 56, 93, 51,150,198,186,172,175, 55,141,116,226,116,195, 79,169, 26,226,247, 88,136,243,231, 60,191, 91, 85, +112,174, 29,120, 17,110,148,121, 67,133,192,108, 69, 76, 55,191, 80,174,118, 20, 37,175,157,155,100,227,110,230,200,194,144, 3, + 92, 8, 56,141, 11, 46,243, 74, 29, 97, 22,155, 84,174, 79, 13, 83,111,247,161,159, 4,205,191,113, 64,145, 42, 85,144,136,172, +162,100,169,240,133, 72,158, 70,239, 35,156,139,240, 62, 97,156,103,204,206, 97,154, 87,246, 50, 46, 12,113, 24, 49, 49, 34,179, +156,180,180, 54, 12,234, 32,229,109,204,128,103,108,101,226, 55, 41,150, 14, 83, 73, 40, 35, 33, 20,144,101, 70, 4,241,217, 93, +140, 24,215, 5,231,121,194,184, 44,220, 37, 83,225,139,197,174,147,242,141, 48,241,106,239,186,254,146,133,181,159, 50, 16,133, +198,228,128,243,148,112, 28, 3, 94, 79, 43,206,175, 11,252,197, 35, 79, 30, 98,244,144, 83,130, 88, 2,178, 11, 52,170, 79, 2, +240, 25,112, 25, 93,214,144, 50, 33, 33, 32,139, 68, 97, 57, 55,193, 42,138,222,171,183, 81,166,242,170,230,188,158, 90,197,239, +214,110,252,209,254,239,252, 95, 0,144, 17,248, 47,199,197, 9,220, 68,218,110,198,146,249, 38, 93, 86,222,184, 72,100, 18,120, +119,247,132, 95,252,221,127,131,232, 72,196,227,220, 10,173, 21,156,119,244, 96,141, 17,243, 60, 51,247,157, 64, 52,101,116, 88, + 80,195,207,207,207, 72, 41,225,251,239,191,199,120,190, 64, 74,137,211,233, 68,221, 41, 31,214,181,209,184,191,187,195,253,211, + 35, 81,200,220,130,144, 18,132, 82,120, 61,159,112, 60, 29, 33,164,196,176, 31, 96,172,198,243,199,143, 16, 66,224,225,238, 30, +247,251, 3,114,206, 56, 94,206,128,146,184,123,184,195,195,227, 3,134, 93,143,132, 8,101, 37,180, 53,112,171, 35, 78, 57,167, +164,245, 61,229, 92,207,211, 8,183, 46,104,173,165,131, 93, 8,144, 25, 53, 62,179,239,118,104,108,143,105,114,152,166, 21,227, + 56, 98,158, 23, 8,161,177,174, 1, 41, 9,120,151,176, 78, 30,206, 37, 44, 43,221,123, 68,152,115,112, 97,197, 52, 79, 88,150, +153, 14,206, 74,194, 88,131, 16, 3, 98,138, 28,103, 74, 99,127,163,245,245,192, 37, 73,212, 73, 9,106, 29,230,121,162,103, 23, +167, 33, 74, 41, 17,124,224,188,114,197,168,233,235,254,115, 93,102, 14, 69, 49,252,222,230, 10,165, 41,251,228,243,249,140,221, +110, 7,239, 61,137,228,120,204,223, 48, 62,181, 96,117,141,214, 12, 37, 41, 89,241,242, 77,174,122,162,136,103,165, 43,254,116, + 94,104, 76,158,145, 43,126, 90,176, 39, 95,177,128,173,216,139, 99, 34, 69,255,221,221, 1,231,243,185,186,152,230,121,169, 41, +108,206, 17, 97,109,232,123, 2,194,228,140,198,104,182,208, 81, 54,133,115, 14,151, 11, 93, 99,196, 56, 95, 43, 2,123, 97, 91, + 29,253,190,196,221,167, 36, 62, 90, 49, 21,244,175,170,177,170,170, 34,115,233,185,149,106, 2, 90,201,158, 47,159, 23, 99,228, +233,169,170,255, 77, 69, 94, 85,174, 72, 96,160, 16, 5,192,208,123, 77,254,255,114,216,160, 6,201, 26,203,239, 97,196,229,114, +134,177,154, 50,217, 51, 96,152, 89,191, 46, 43,230,105, 70,215,118, 24,134, 93,133, 11,173, 43, 9, 11,133,162,198,165,136,193, +139, 94,140, 2, 92,228,141,168,237, 45, 29,238,115,245,232, 45, 30,118,139,134,205, 57, 83,195, 35,192,205,210, 85,105, 44, 74, +243,178, 89,123,255,255,132,202,218, 68, 82,138, 63,210,107, 92, 35, 57,197,213,222, 86,201,240, 4,138,137, 57, 97,241, 30, 47, +167, 17,139,163,174, 31, 60, 49,160, 29,110,250, 52,198,245,205, 11,151, 19,117,154,169,230,136,223, 70,192, 22,241,136, 42, 22, + 58, 6, 16,196, 72, 40, 71, 23,136, 16, 71, 35,102, 73,194, 12,254, 28, 23, 18, 66,140,240,145, 96,253,106,147, 3, 92, 62, 10, +159,219,121,143,211,120, 34,142, 52, 63,132,148, 86, 76,147,147,180,143, 39, 94, 46, 32,169,248,175, 49, 96, 90, 87,156,167, 25, +199,113,194,236, 92, 21, 15,214,105, 75,101,215,111,121,250,121, 35,176,200, 20, 76, 83, 70,239, 66,192, 67, 99,116, 2,207,151, +136,111, 62,174,248,245,119, 51,126,245,205, 5,223,124,125,194,135,223,156, 48,125,253,138,248,221, 11,242,135, 11,240, 50, 66, +156, 29,176, 36, 50,222, 39,143,108, 18,132, 1,146, 8, 72,155,126, 91,108,130,123, 40,155, 92, 92, 73,110,226, 77,220,232, 70, +212,247, 15, 46,232,249,247,231,151,255,177,123,252,252,143,197,213,127, 2, 83,202,155,216,196,107, 94, 0,135,217,195, 40,141, +191,255,235,127,134,199,187, 7, 40, 8,228, 64, 64,151,121,154,225,189, 71,223,247, 21,150,177,174, 43, 21, 26, 69,254,107,239, + 87, 28, 14, 7, 56,239,209,216, 22, 63,250,209,143, 24, 40, 67,227,234,148, 50, 82, 8, 72, 49,227,120, 58, 33,129, 58,161,148, + 51,190,251,225,123,116,125, 79, 66,186,253, 14, 25, 25, 31,158,159,113,184,191,131, 98,129, 79, 8, 1,231,227, 9,110,117,164, + 6,231,177,111,136, 1, 66, 74,156,206, 71, 28, 79, 71,188,156, 94, 97, 26,139,175,191,253, 26,203, 50,163,239,122,104, 99,145, + 1,188,188, 60,195,185,133, 52, 44,124,172,211, 18, 72, 97,133,202,145, 58,174,213, 67, 43, 11,165, 26, 40,221, 66, 8,141,198, +246,200, 73, 64, 73,139, 20,129, 24,128, 24, 50, 4, 52,114, 82, 80,170,133, 84, 22,227, 60, 99,154, 71,164,228,161, 20,112,119, +127,144,119, 90,210, 0, 0, 32, 0, 73, 68, 65, 84,192, 48, 12, 36,128,242,142,197,179,130, 25,226, 87,110,118, 14, 17,193,211, +190, 87,105,234,130, 51, 34,156,119,213, 62, 87,120,220, 20,231, 26,217,195,174, 33, 65, 95, 47,197, 8,193,255, 94,190,135,100, +183,135,224,110,211, 24, 83,185,241,198, 24,236,119, 59, 28, 14, 7,180,109,139,121,158, 25,120, 67, 63,199,194, 92,116,242,178, + 83, 6,186,181,186, 78, 23,181, 54, 0, 23, 29, 33, 0, 31,168,227,244,193,193,218,134,146,215, 56,233, 81, 41, 5,207, 7, 2, +130, 20,209, 65,113, 93, 22,236, 15, 59,104, 37, 17,188,167,249, 93,206, 88, 23, 7, 41, 52,250,158, 70,226, 16, 2, 15,247, 7, +210,163,240,132,108,154,103,116,125,207, 26, 5,141,151,151,151, 10, 24,243,222,227,225,225,129,192, 71,211,196,154, 0,207,137, +117,180, 59, 86,156,214,151, 57,105,143, 44,145,168,212,183, 90,184, 11, 46,121, 43, 52,227,251,184, 28, 92,242,155,113,245, 53, +245, 18, 53, 4,166,229,174, 95, 41,130, 59,103,230,188, 55,182,169,247,104,202, 17, 82, 10,166,232, 9, 60, 61, 61, 66, 10,178, + 25,206,243, 66, 25, 5,227,136,199,199, 7, 40,171, 17, 50,173,112, 46,243,116,155,242,182,121,222,172, 43, 37,194,137,223, 67, + 95,253, 28,204,170,116,230,111,179,210,171,134,135,169,106, 89, 20,141, 82,174,193, 53,111, 71,247, 85, 40,151, 54,245, 55,139, + 63,158,221,241,201,130, 63,149, 61,168,172,200, 81,148, 40,214, 55, 2,188, 43,209,108, 99,155, 43,235,118,121,165,213, 21,101, + 95, 72, 9,227,178,226,245, 60,193, 39,137,156, 37, 79, 94,153, 37, 47,197,239,180, 7, 92, 59,164, 92,199,238, 34, 23, 72, 0, +217, 92,132,102,169, 29,191, 89,133, 42, 37,148,164, 93, 54,143,114, 83,206,236,113,207,196, 90,102,210, 27,157, 70,175,137, 59, +101,159,155,145,169, 67,225, 67,132,181, 22,125,219,194,187, 5, 90,137, 58,178,111,140,130, 64,134,174, 66, 10, 82, 98, 79,211, + 12,231, 23, 36,161, 16,147,192, 18, 2,166,197, 81, 42,147,210,228, 17, 47, 23,216,141,224, 11,245,112, 68, 57,234, 87, 97, 28, + 21, 89,137, 40, 36, 2, 36,230, 0,124,127, 92,225,215,136,215,227,130,223,124, 47,209, 91,137,174,215,120,184, 27,240,238,113, +192,195,151, 7, 28, 30, 15, 24,238,118,208,131,130, 52, 2,240, 18, 16, 26,218, 54,128,140, 55,222,255,106, 31,123, 35,212, 67, + 77,130,139,219, 19, 29,240,123, 11,240, 31,103,110,219,238,172, 63, 95,252,243,239, 59, 7,224, 31,134,192,121, 59, 29, 16,245, +215, 16,228,155,170,158, 94,210,159, 16, 41, 81, 32, 35,249,128,159,255,229, 95,225,231,127,246, 83,132,197, 17,144, 73, 10,216, +166,193,225,254,128,127,255,159,254, 61, 46,151, 11,118,187, 61, 94, 95,143, 84,152,144,161,141,193,229, 50,226, 47,126,246, 83, +156,207,103, 52,141,197,253,221, 19, 46,151, 11,145,195,164,198,180, 46,216,113,224, 74, 8, 52,142,110, 53, 21,162, 15, 47, 47, + 20,134,228, 61,250,161,199,180, 44, 24, 47, 23, 44, 75,137,199, 76,184, 92, 46,240,222, 99,232, 90, 32, 38,188,124,120,198,135, +231,103,252,217,159,255, 20,222, 59, 52, 70,227,227, 15,223, 67, 25, 69,226,169,151,143, 36,124,146,148,118,214,237, 6,180,166, +193,235,235, 9,113,156, 32,149,128, 54,138, 56,223, 62, 99, 69,132, 18, 9, 41,172,124, 40, 54,116,232,208, 13,188, 95, 25,108, + 99,161,148,198, 60,205, 64, 34,250, 87,140, 25, 93,191,199,226, 87,154,216,253,240,129, 82, 28, 53, 77,193,188, 91,209, 49,195, +125, 27,185,220, 52, 77,165,202,229,156,209,180,180,183, 85,165, 64, 8,242,214,199,156, 97,148,166, 53,146, 84,176, 67,139, 35, + 79, 62,114,206,208,138,108, 99, 82, 72, 90, 25, 24, 69,118, 57,239,209, 12, 29, 89,166,248, 0, 64,208, 43,234,200,151,121,102, + 97, 98, 68,204, 30,119, 93, 7,151, 60, 2,139, 32,201, 79,159, 97,109, 3, 53,205,140, 92,229,206, 77,129, 15,116,116,109,164, +152, 72,139,131,140,253,126,135,215,215, 35,101,191,175,158, 8,111, 77, 91, 19,207,230,121, 65,223,119, 88,150, 5,235,106,241, +238,241, 9,223,126,253, 13,158,158, 30,112, 60,157, 49,205, 35,118,195,142, 2,115,186,140,253,126, 79,175,211, 60,195, 52,212, +213,143,231, 11, 55, 39, 10,211, 52, 98, 24, 6, 42,222,188, 47,223,239,247, 8,193,225,124, 62,226,203, 47,191,192,215,191,253, + 53,148, 82, 53,112, 38,103,186,214,140,229, 46,148, 11,216,150, 0, 23, 34,219,234,250,190, 62, 59,181, 82, 8,245, 80, 69,207, +205,101, 89, 48,116, 61, 9,223, 88,120,184, 45,134, 69,192, 74, 9,115, 1, 41, 69, 90,169,106,178, 34,151, 34,223, 88, 11,183, +174,144, 90, 84, 77,205, 52,141,144,146, 38, 7,199,227,145,118,239,171, 67, 22,192,101, 30,241,254,253,123,124,248,240,145, 39, + 19, 18, 41, 39,210,104, 36, 84,221,152,172,209,214,252,228,147,183, 28,119, 41, 37,100,198, 39,135,129,162,217, 73,165, 43,127, + 67, 51, 20,146,190,214,117,141,125, 61, 16, 40,165, 72,112, 43,174, 8, 98,213, 74,253,203, 13,132,253,147,193,186,172, 98,185, + 18, 57, 90,254, 84,214, 5,188,144,229, 68,161,104,219, 46, 52,134, 97, 95, 35, 16,101, 77,205,201,181, 88,145, 24,142,199, 74, + 60,242, 86, 34,193,106,192,168,140,198, 72, 24, 69,208,127, 37, 34, 82, 12, 88, 92,196, 15,167, 25,255,225,215, 31,112,113, 2, +144,150,119,243, 36,196,163,127, 87,252,179,137,155, 9,192,141, 48,170, 20,145, 98,223,146,160,145,157, 38,193,131, 20,215, 4, + 55, 72, 42,228,185,236,225, 82, 38,171, 30,243,167,173,213,204,229,165,155,173, 4,128,212,253, 6,199,197,106,173, 72,112,151, +136, 79,109,140,132,165,140, 22, 24, 5,244,157,133,173,251,248, 2,107,163, 78,119,245, 17, 19,103, 15, 47, 62, 97, 94, 3, 78, +231, 17,243,178, 34,161,252, 60,229,226,144, 27,134, 62, 71, 33, 10,201,157,121,233,210,175,225, 46,130, 5, 24, 9, 25, 33, 75, + 44, 1, 56,175, 25, 47,115,198,215, 47, 11,126,243, 97,198,175,126,152,240,171,239,103,124,251,205, 5, 31,191, 91,112,121, 77, +240,103, 1,229, 13,116,234,176, 56,141,127,251,255,124,143,111, 63,156,144,133, 69,228,224,154,194, 93, 46,123,124, 8, 18,208, + 85, 17, 8, 59, 19,182,157,114,126, 43, 28, 41,152,200,223,105, 49,147, 55, 34, 58, 33, 4, 29,214, 54, 32,155,235,120,255,202, +227,174,208,151,141,210,148,126, 72,201,221,244, 63,108,244, 94,243,234,235,100, 76,178, 96, 83,212, 12,119, 37, 37, 82, 12,208, + 89,226,253,227, 23,248, 31,255,135,127,133,199,253, 61,220,186, 96,188,156,177,186, 5,199,243, 17, 31, 62,126, 64, 63,244, 56, +157,206, 68, 39,107, 26, 64,146, 32,211, 90, 11,193,145,149,151,243, 5,251,253, 30,167, 51,113,167,127,248,240,140,110, 55,144, +133,199, 90,104,163, 57,170,179,197,126, 63, 96, 93,102,234,214,246, 3, 98,138,120,121,126,198,229,124,134, 82, 2, 95,125,245, + 21,246,135, 61, 78,199, 35,150,101,198,227,227, 3, 4,227, 49,115,206,248,234,253,151,184, 59,236, 97,181,198,119,223,124,131, + 16, 61, 30, 31, 31,177,223, 15,152,198, 17,227,249,130,174,223,225,225,241, 1,200,192,175,126,245,107, 26,133, 26,141,182,107, + 33, 68,134,115, 51,188, 91,121, 60,174, 48,141, 23,196, 20, 17,130,195, 50,207,149, 17, 30,153,210, 5,208,120, 58,113,150,184, +148, 18,199,215, 19, 46,211,136, 24, 3, 39, 39, 82, 80, 70,203, 48, 28,163, 53,134,161,131, 15, 30,227, 56, 66, 10, 74,230,242, + 46,208,179, 73,211, 53,233,156,195,110,183,171,184,210, 16, 2, 89,147, 50,141,226,155,166,193,233,124,198, 60,175,132, 2,213, +170, 82,203,180, 34,116,109,219,180, 72, 57,193, 26,133,221,110, 7, 33, 36, 11,219, 56,167,156, 39, 5,203,188,192, 24, 67,113, +168, 41, 97, 89, 23,196,152, 24,220, 66, 86, 44,183, 58, 52,109, 11,169, 21,188,119, 92,188, 37,134,190, 39,148, 46, 31, 52,200, +135, 45, 48, 94,206,120,184,191,167,245, 64,138, 48,250,154,130,214,182, 13, 89,116, 67,160, 4, 73,107, 16, 35,101,141,239,247, +123,156,207,164,147,200,165, 8, 8, 98,139, 43,173,224,156, 99,127, 62,145,219,186,182,165, 14,154, 89,245,231,241, 2, 8,160, +239,187,106,209, 75, 41,214,215,112,183,219, 83, 58,223, 76, 44,127,165,105,106, 96,109, 83, 69,139, 74,211, 14, 27,188,110,157, +151,137, 86, 53,236,246, 40,196, 54,112,199, 62,207, 51,139, 9, 57, 26,214, 88, 44, 51, 69,227, 26, 22, 17, 74,113, 61, 48, 44, +203,194,211,153, 4,231,214,122,159, 26, 99,224,248,126, 10,129,128, 69, 49,101, 24,211, 0,137,210,249,104,252, 79, 81,185, 33, + 16,203, 32,231,204,211, 21, 82,203,247,195, 14,151,113,170,100,194,188, 33,108,166,162, 90,199, 45,152,141,166,196, 87, 45,207, + 54,133,109, 43,141, 47,190,118,169, 20,178, 32,252,121, 6,213,158,244,153,134,101, 27,217, 90,190,223, 63,174,168,139, 43,230, +179,122,232, 50, 96,148,193, 48,236, 96,109, 83,133, 13, 85,205, 46, 21,125,212,140,245, 84, 21,238, 90, 1, 86, 11, 24,149, 96, + 13,160,117,134,150,212,105,134, 16,176, 4,224,255,253,246, 5,191,254,254,140, 53, 41,100,169,168,203,206,165, 39,189,142,118, + 83,174, 4,232,155,143,235,100,151,148,252,148, 48, 74, 55,170,214, 4,189, 41, 78,126,194, 86, 82,183,156,217, 5, 80, 0,252, + 90, 9,104, 41, 48,116, 29,246, 67,135,190,111, 48, 12,228,207,221, 13, 61, 26, 78,126,106,172, 65,215, 90,236,134, 30,125,223, + 66,107,137,213,173,216,245, 13,246,125,135,198, 42, 12, 93,139,182,161,236,228,196,251,147,144, 50,124,204,240, 33,193,249,136, +121,117, 88, 92,196,101,114, 24,231, 5,227,180, 34,196,196,158,128,207,139,185,202,238,246,138, 95,103, 43,162,144, 84,204,121, + 34, 32,232, 42, 66, 76,128,203, 2, 46, 75, 44, 73, 97,142, 26, 43, 44, 22, 52, 88, 34, 48,173, 17,175,147,195,135,243,130,143, +227,130,211, 56,193,103,160, 59, 60,226, 39,127,241, 87,200,210,224,183,191,253, 30, 46, 36,102,241,243,148,160, 92,140, 55, 52, +182, 50, 93, 16,159, 20,117,113,187,100, 71,222,152, 39, 63,183, 94,185, 85,198,139,218,145,231,188,157,210,108,190,100, 81,164, +110, 28, 31,185,226,115,197, 39,183,206,118,188,245, 15,131,192,110,130,115, 5, 93,111, 50,103,236,219, 30,255,221, 47,254, 5, +190,122,250, 2,211,229,132, 20, 3,142,167, 87,184,224, 16,145,112, 58,159,112,190, 92, 24, 43,153,153,174,213,146,203, 66, 74, +216,198,194,173, 14, 67,223,195,114,188,227,188,204,213,103, 94,199,128,172,190,181,198,224,244,250,138,101,154,113,199,185,218, +211, 60, 81,145, 60, 30,145, 98, 66,219,181,248,205,111,126, 67,185,209, 93,143,182,109,241,252,242,130,203,120, 65,215,247,212, +145, 38,143, 31,126,248, 30, 82, 74, 60, 62, 61, 98,117, 14,211, 52,211, 3,211, 90,236,246, 7,204,243,140,121, 89, 16,120, 28, + 12, 8,156,207, 39,178, 43,229,136,182,239,200,119,239, 40,190,212,187,181, 98, 80, 95, 79, 47,152,152,139, 78,133, 40,192, 45, + 11,214,117,134,115, 11,137,170, 98, 64,211,104, 88,173,161,140, 36,120, 76,240, 4,142, 9, 1, 95,190,123,130, 84,154, 10,127, + 18,208,166,161,215,206,123, 46, 60, 84, 24,186,166,165,123, 95,107, 44,171,195,234, 61,220,234,168,160,132,136,174,109,113,153, + 70, 4,190,150,125, 8, 24, 24, 27,155, 56,195,161,109, 26,228,148,208,182, 77,141,107, 13,158, 70,188, 41,209,104,119, 94,215, + 26,245,219,182, 61,125, 78, 36,203, 83, 12, 84,184,154,198, 82,166,183,224,135, 57,119,239, 57, 39, 30, 5,143,172,126, 22,117, + 26,169, 88,140, 59,244, 61,142,175,175, 80, 90, 85, 80, 74, 25,101, 75, 37,161,153,191,158,249,192,131, 68,147, 10,165, 85, 21, + 43, 75,214, 65, 17,191,222, 32, 36, 74, 82,107,172, 69,136,129, 99, 84,215, 26, 74, 35, 4,208,112, 20,111, 99,105,196,111,173, + 5, 68,194,186,208, 78, 61,243,206, 59,115,129,210, 90,211,202,128, 3,112, 74, 94,186,228,108,139,210, 68,149, 98,103,217, 38, + 25, 99,168, 43, 40,128, 14, 42,109,211,213, 32,157, 45,197,148, 70,214,164,159,144, 74, 85,221, 80,253,135, 65, 51,100, 77, 20, +208, 70,227,249,249, 21,222, 71,180, 13, 9,254,202, 52,167,235,218,202,223, 39, 93, 64, 70,223,119,120,121, 57,242,225,138, 51, + 72, 66,228,168, 11, 82,218, 23, 45,217,103, 39,129, 5, 7, 93, 32,103,111,137,114,117,160, 40,106,150, 73,185,159,139,253, 85, +124,166,152, 23,171,101,230,106,160,183,223, 60,255,142, 24,214,223, 15,175,222, 62, 92,217,164, 36,137, 38,119,237, 22,197,205, + 23,173,158,223, 42,106,203,245,217,158,216,131,151, 82, 66,138, 2, 33, 82,193,143, 73, 96,154, 19, 94,142, 19,214,144, 16,178, +132,100,132, 41,125, 29,141, 66,149,223,118,101,197, 19, 72,197, 32,109, 60,245,220, 61, 50,175, 94, 41, 81,199, 96, 9, 68,188, +201, 73, 32, 51,180, 38,179, 55,181, 76, 25, 4, 18,186,182,195,195,221, 30,187,161, 67,129,231, 53,141, 37,223,174,247,240,171, +171,184,203,190,239, 97,140,198, 52, 77,248,246, 91,242,154, 30,238, 40, 45, 75, 2,136, 89, 32,184,194,138,167,145,147,224,184, +216,105,113,120, 29,103, 76,139, 71, 76, 18, 62, 2,158,249,242,185,160,132, 68,177,147,241,107,154,229, 6, 60,179,169,167,204, +107,207,140,113,205, 82, 85,177,157,224,232,207,200,165,200,104, 13,169, 13,172, 54,104, 76, 70,219, 72,216,174, 1,154, 14, 94, + 24,140,139,199,243,203, 9,187,251, 71,252,237, 47,254, 6, 95,254,236,103,184,204, 14,255,243,255,242,127, 32,179, 40,229,186, + 14, 16,159, 92, 51,127,116, 35,204, 43,157,219,122, 46,254, 96,247,252,118, 52,254,199, 92,206,111,132,242,255,136, 16, 23,222, +163, 51, 86,183,192,124,140, 84,248,217,159,252, 57,246, 77,135, 31,190,253,134, 70,186, 49,225,120,166,221,116, 55,116,216,199, + 61,190,254,250, 91, 52,214, 34, 69, 26,221, 47,139,131,146,148, 67,254,248,244, 72, 69, 33, 38,188,190,190, 34, 68, 74,186, 58, +157, 47,240, 49, 84, 17, 83,136, 30,251,253, 30,145, 19,174, 86,239,160,173,193,215,223,126, 3, 33, 37,198,113,196,225,254,174, + 10,185,200,206,182,226,253,251,247,248,238,135,239, 17, 83, 68,191,223, 97,119, 56, 96,153, 39,124,120,253, 64, 33, 47, 90, 99, + 94, 87,104,109,112, 58, 95,208,180, 13, 30,238,238,145,165,192,233,124,194,178,210, 8,189,239, 7,156, 79,103,132, 72, 2, 34, +109, 45,156,139,128, 80,200, 41,192, 42,133,172, 4,199,218, 38,104,214, 87,196,156,240,225,195,119,232, 88, 68,165,141,132,177, + 45,114, 78, 80, 90,163,107, 91,248, 64,216, 92, 9, 9, 72, 3,239, 19,238, 14, 3, 76,211, 96,113, 14,206, 69, 40,105,240,250, +114, 66,215, 53,176, 90,145,141,106, 58, 19,194,148, 81,181,231,243,165,114,223,133,148,104,154,142,227, 91,201, 30,101,173,133, + 80, 26,238,124,162, 98,233, 29,167,199,105, 94, 9, 68, 52,205,174,142, 77,135, 97, 64,240,129, 59, 74,131,211,121,132,200, 25, +139, 15,216,239, 35,188, 99,106,164,177, 88, 72, 9, 92, 87,114,108, 86, 66,215,117,104,219,140,203,101,164,226,218, 52, 88, 23, + 66,187,122, 31, 88, 1, 77,107,195,166,181,148, 63, 46, 11,174, 57,212,231, 46,137,240, 4,194,186,224,176,223, 97, 89, 86,100, + 75,119,226,254,112,192,183,223,127, 15,219, 80,212,171,247, 30, 41, 71, 60, 60,220, 65, 47, 26, 82,100,138, 9, 21, 6, 41,102, +216,182, 1,132,128,209, 4,174, 89,215, 21,182,105,120, 31, 46, 49,205,180,254, 73, 57,225,116, 58, 97,104, 59,140,227,136,214, +104, 4, 38,231, 41,165, 16,146,227,194, 78, 34, 77,194,186, 82, 49,143, 12,186,242, 41,192,116,150, 18,251,188,135,224, 40, 94, + 74,199, 83, 53, 95,189,248,249, 53, 11,248,154,166, 33,150, 63, 64,113,222, 92,184,147,247,144, 9,252,218, 73,116,109,139,249, +124,134,182, 6,143,143, 79,248,240,195, 51, 86,231,208, 54, 22, 96,222,128, 16,244,254, 53,214, 98,158,151,170,157,120,122,186, + 71, 8, 5,228, 36, 97,140,197,226, 28, 29,216, 21, 3,135,196,231,181, 99, 66,138,107,236,244,134, 22, 39, 54, 90, 35,228, 77, +163,177,125,146, 8,241, 25, 96,219,109,126, 74,249, 12,213, 40,253,203, 27, 0,199, 39,250,227,178,231, 78,236,187,101,159,116, + 22, 85,165, 94,198, 76,229,129,218,152, 6,187,221,174, 42, 55,149, 20,236, 21, 87, 87,227, 61, 68, 29,189, 75,201,221,178, 22, + 52,114,231, 14, 93, 43, 9, 37,168, 79, 11, 33,224,135,215, 9,255,241, 55,223,227,236, 18,178,182,117,188, 93,205, 71, 82,177, + 26,254, 26,111,119, 59, 22, 21,204, 49,207,215, 16, 13, 30,167, 25,163,104,161,144,169,168, 39, 62, 24,164,148,170, 48,129, 26, + 90, 42,234, 70, 73, 60, 62,222, 99,232, 91, 12,157, 37,159,185, 18,104,223,220,100, 90, 43, 30,235,203, 58, 10,243,222, 35,120, + 87, 99, 11, 67,138, 88, 61,217,245,200, 80, 37,169,200,167,140,217, 5, 92,150, 21,151,121,197,234, 3,132,182,240,145, 34, 93, +107, 33,202,105,227,185,190,218,248,110, 46,132, 26,206, 34,175,162,180,204, 7, 30,144,162, 86,129,118,190, 90, 9, 72,126,200, +138, 72, 9,118, 49, 71, 72, 36,216,198,162, 31, 6,220, 13,123, 60,237,118, 56,180, 29,164,144,104, 15, 45, 30,126,242, 35, 32, + 68,252,239,255,231,191,230, 68,214,196,227,169,173, 96,142, 68, 98, 87,159, 37,143,203,111, 66,130,176,129, 2,136, 55, 26,140, +219, 2, 93,225, 12, 69,139,177,253, 90,249,246,186,196, 77,167,158,111,227,100,203, 21, 95, 87, 19, 87, 65,203,246, 84,252, 15, +233,212, 19,175, 56,144,137,183, 32,114,198, 79,222,191,199, 63,251,175,255, 26, 22, 10, 47, 31, 62, 64, 42,129,211,233,136,140, +140,217, 81,135,251,195,135, 15,124, 40, 86, 56, 28,238,177,174,164,132, 55,214, 50,122, 83, 84, 80,199,101, 28,161,173,197,226, + 86, 76,243,140, 97, 24,208, 51, 86,147,186, 55,129,151,151,103, 52, 45,141,138, 35, 72, 56, 71,164,177, 61,118,251, 61, 78,231, + 51, 62,124,160,130, 45,132,192,241,120,132,115, 14,211, 52,113,218, 88,194,241,244,138,197,209,110,120,245, 14, 47,175,175,220, +145, 39,216,134,120,234,211, 60,225,124, 57, 87, 53,248, 52, 47, 88, 87,242,149, 91,107,209, 48,252, 35,134, 72, 93,113,107, 57, + 46,115,169,105, 93,166,163,142,169,168,216,231,121,130, 15, 43, 39,108,121,196, 24,208,183, 29, 41,176, 5,217,187,186,182, 67, + 78,180,154,184,191, 59,224,116, 58,225,124, 26, 33, 4,221,135, 41, 82,178,151,247,132, 0, 53, 70, 35,248,200,202,121, 62, 68, +199,140, 97, 24,160, 36, 41,209,189,243,240,161,128,111, 18,127,159, 6, 57, 17, 31,188,236,183, 83,138,216,237, 6, 8,145, 49, + 47, 19, 19,252,168, 75, 54, 90, 97,245, 1,109,211,112, 71, 74,202,248,107,200, 21, 16,248,103,210, 60,166,214,154, 16,165,146, + 87,106, 69,104, 87,166,107, 84,188, 44,197,136, 26,205,182, 44,139,105,154, 96,140, 37,104, 74,197, 96,211, 51, 58,132,128,174, +107, 33,153,135, 49, 79, 19,164, 82, 24,134, 30,207,207, 47,216,239,118, 12,238, 74,156, 62, 71, 62,111,205, 17,162, 74,105,242, +176, 27, 93,121, 38, 41,197, 58,250, 46,190,250,148, 18,186,150,200,126,187,161,167,189,120, 12, 12,183,162,221,176,226,103, 94, + 81,109,103,230,241, 95,199,237,244, 12, 47,136,217,146,172,150,185,201, 16, 60, 70,151, 82,178,168,177,196,229, 94, 59,118, 33, +105, 12, 46, 57, 44,167, 80, 66,137,204, 24, 33, 57, 3, 65,155, 6, 41, 18,218,117, 93, 72,136, 58,207, 35, 5,136, 9,226, 19, + 0,140,148,149, 2,211, 60, 19, 74, 89, 17, 87, 32,248, 72,177,183,165,147,254, 3, 32,170, 50, 21,217, 22,243,237, 46, 60,111, +176,178,165,151, 40, 82,113,185,197,153,227,202,212,184, 89, 31,242, 36, 83,181, 90,254, 18, 34,111, 16, 46, 36,234, 18, 27,127, + 56, 68,102,152,136,184, 42,218,249,207, 11,116, 67,224,186,215,237,154, 22, 67, 63, 16, 82, 80,104, 30,237,148, 15,190,224,144, + 42,100, 70, 41, 1,173, 1,171,128, 70, 75, 40, 69,163,119,171, 51, 52,251,202,167, 16,241,219, 31, 78,248,230,195, 17,107,146, +200,210, 16, 58,145,125,201,229,240, 33,184,139, 46, 5, 59,191, 97,115,211,239, 39, 25,182,127, 21, 41,148, 7,124,213,220,215, +148, 28,238,239,121,239,174,148,128, 17, 2,173, 53,184,219, 15,104,141, 70, 99, 45, 71,197, 10, 74,103,146,101,132,182,225,203, +243,215, 83, 74,163,107, 90, 52, 77, 3,169, 21,180,177, 48,198,194,216, 6,109, 63,192,182, 29,160, 52, 0, 5, 31, 19, 22,231, + 49,205,174, 90,123, 32,232,130,242, 62,112, 29, 75,184,113, 84,111,118,195,159, 96, 86, 63, 9,223,185, 10,250, 4,239,192,181, + 50, 80,252, 48, 84,124,128, 65, 38,100, 45, 88, 8, 41,114,198, 48, 52,184,127,216,227,171,175,222, 97,223, 55, 8,110, 65,163, + 0,155, 51,254,221,255,245, 31,241,253,135, 19,144, 21,141,143, 68,201,229, 35,191,254,239,178,154,101,108, 80,173,184,254, 14, + 73,224,166,160, 23,141,198, 91,122,220,237, 88,226, 26, 20,147,197,245,144,246,230,156,112, 21,159, 36,108, 94, 11, 84,127,105, +126,243,186,225, 6,191,123,179,237,223,172, 59,168,144, 11,246,147,145,213, 8,184, 27,118,248,251,191,254, 91, 28,218, 30, 8, +161, 74, 60,231,121,193,101, 26,241,122, 58, 97,117, 43,241,248, 3,101,120, 7,208,161, 79, 42,197,163, 61,193,176, 12,135,151, +151, 23,236,239,238, 32,148, 38,240,145, 38, 78,123, 66,134,181,212,229, 36,239,137, 44,198, 19, 35,183, 58,196, 24,241,248,240, +128,253,110,135,227,241,200,156,235,140,126,183,195,196,221,186, 98,107, 86,223,117, 56,241,207, 37,164, 68, 66,198,233, 76,255, + 29, 51,249,183,143,231, 35, 66,240, 56,189,158, 32, 65,105, 85,235, 76, 66, 41, 74,187, 34, 69,241,234, 29, 94, 95,159,235, 40, +148, 70,179, 26,145, 11,130, 20,244,192, 6,195,144, 72,109, 31,145,133, 98, 88, 74, 38,178,220, 50,115,131, 64, 1, 66,109,219, +210,158,119,232, 32,164,160,195,132,243,208,198, 48,220, 69, 85, 98,155,101,165,116,102, 17,225,186, 44,149,106,182,235,123, 42, + 78,200, 24,231, 25, 41,147,117,108, 89, 22,228, 20,208,183, 45, 11, 78,233,153,177,250, 21,109, 71, 94,233,142, 61,215,187,221, + 0,207,145,168,137, 51,235, 51,255, 12, 82,210, 78,223, 90, 11,193,150, 42,129, 12, 99, 20,131,153, 4,140,210, 4,171, 9, 17, + 86, 91,122,178,213, 41,161, 66,102,171,175,210,178,250,188,133, 80, 28,230,146,234, 61, 97,141, 33,188, 51, 63,227,154,134,112, +180, 49, 69,216,198, 98,158, 39,236,119, 3, 69, 40, 35,163,237, 58, 8, 13,216,214, 86, 60,170, 82, 26, 62,198,186, 74,209, 74, + 33,103, 2,196,140, 23, 82,185,239,119,123, 88,163,225,189, 35, 75,178,178,172, 98,151,176, 13, 5, 15,101,118,228,164,148,249, + 25, 74,133,221,104, 77,194,194,148, 97, 56,227, 60,229, 4,211,152,138,242, 93, 22,186, 31, 34,143,236,233,115, 9,238,226, 67, + 64, 22, 25, 74,203,171, 77, 56,209,189, 28, 57, 90,248,124, 58,195,104, 11,173, 12,214,101,173,235, 71,239, 61,230,105, 65,215, +210,129,194,232,235, 56,127, 93, 61,186,190,163,140,117,118, 66, 56,231,200,177,116, 58, 35,198, 76,169,133,109,207,147,131,140, + 20, 3,215, 32, 81, 54,210,155,124,147,124,141,145, 45, 46,140, 77,214, 72,206,249,186, 30,102,120,213,205,242,145,153,242, 66, + 8,126, 92,230, 26, 72,150, 19,115, 56, 18, 55, 39, 25, 80,189, 86,191, 44, 17,167, 90, 16,209, 76,178,138,183, 60, 60, 41, 57, +145,126, 8, 89,197, 87,162, 10,179,228,102,204,174, 36,137, 59,250,174,131,209,134, 61,235,138,233, 63,186, 6,190,215,239,169, + 37,172, 86,176, 90,192,106,129, 70, 73,104,157, 97, 52, 96,100,130, 22,212, 37,159,150, 21,255,233,183, 31,240, 50, 46,200,202, + 64, 8,141,204,224,150, 92, 85,221,215, 49, 68,253,119, 41, 63, 73,145, 19,178,196,223,201,122,106,162,113,154, 98,175,120, 38, +116, 29,119,252, 74,147,224,195, 26, 34,198,181,172, 94,239,218,150,232,112,214,112,118,176,226, 61, 98,174, 57,232,219,228, 29, +242, 76,210,205, 98,140,102,161,157,133,109, 26, 66, 91,106,141,148,233,162,242, 33,193,185,128,105, 92, 48, 78, 51,188, 35,153, + 68, 74, 25, 62, 6,184, 64,227, 50, 81,124,250,226,141,234, 92,108,137,128,121,115, 24,147, 69, 41,113,243,186, 72, 37,161,165, +169,171,147,242,218,101, 41, 32,181, 70,219,117,176,198,242,137,215, 65,138,128,198, 72,252,228,253, 59,188,255,234, 11, 24,161, +225,231, 11, 58, 99,176, 44, 17,255,230,223,253,103,114,188,137,132,164,174,105,127, 25,121,163,228,188,145,227,111, 70, 78,114, +211,157,127,126,151,126,229,251,227,138,171,225,139, 90,148,118, 66, 94,111,169,156, 55,154,145, 27,241,228,166,211,175,234,117, +113,195, 87, 22,159,141, 74, 20, 5, 53,115, 45,236,114,163, 55,201,215, 41,128,200,128, 17, 18,127,243, 87,255, 20, 63,254,226, + 75, 68,231,224,230,133,121,252, 2,243,178,192, 39,194,138, 26,206,223, 78,137, 44, 60,171,247,128, 20, 28,107,233, 48,244, 67, +141, 71,237,251, 30,198, 54,228, 98, 8,212, 57,181,109,139,121, 93, 48,141, 23,242, 82,207,212,109, 55,109,195,142,142,132,187, +195, 29,158, 30,159,112, 62,157,112,100,226, 28,152, 21,238,156, 67, 99, 45, 30,238,239,241,238,233, 9,200, 64,207,163,116,109, + 57, 28, 36,101, 8,165, 32, 88, 0,186,174, 43,197, 89,110,237, 58, 2,152,151, 5,198,106,228,148,224,157,195,233,124, 70,200, +100,195,209,138,224, 74, 62, 6,196, 76,150, 45,205, 5,205,104, 77,118,190, 24, 41,178,149, 81,155, 84,188, 36,239, 88,175,197, +193, 7, 7,205, 59,101, 32, 99, 93, 29,117,151, 41,145,166,165,107, 25, 43,186, 98,232, 7, 26,191, 46,107,141,116,213, 90, 3, + 57,163,103,129,150,247,164, 21,216,237, 14, 20,175, 25, 60, 26, 75,169,111, 53, 87, 93,107,228, 76, 9,139, 57, 69,242,236,243, + 24, 61, 4, 7,107, 44,230,121,198, 48,244,100, 91, 45,246, 42,246,203,151, 41,101,228,130, 89, 58,197, 2,165,201,153, 14, 4, +235,186,160,109, 91, 4, 79,162, 45,169,104, 69,216,117,109, 21,216, 5, 23,234,142,187, 20,140,226,147, 7,119,251,222,123, 38, +199,145, 6, 64, 74, 26, 77,151,195, 4, 69,101,107, 52,182,129,115,158, 70,220,138,176,179,158, 67,110,148,146, 60, 81, 37,202, + 91,185, 73,250,129, 20,233, 33,120, 36,182,242,118,172,186,111, 26, 74, 0,148, 82,242,129, 13,245,245, 43,185,230,193,121,116, + 61, 77,146,180,214,172, 97, 74, 87,254, 8,223,135, 82, 82, 20,182,228,233, 17, 0, 44,203,204,175, 27,119,180, 66, 18,219,157, +245, 73,229,177,145,153,220, 55,142, 51,135,191, 76, 88,150, 21,195, 48,212,134,129,210,243,100,213,223, 72,165, 41, 7,157,191, + 54, 89, 29,105,236,127, 62, 95, 16, 83,224,104,220, 30, 67, 63,144,243, 43, 38,164, 16, 57, 3, 62,215, 70, 75,150,169,252,150, + 78,185,137, 43,167, 3,219,198, 9,244,217, 6, 44, 87, 91,114,237, 78,120,103, 88,219, 81, 1,168, 59,107,126, 89,213,143, 12, +141, 80, 82,194, 40,122, 1, 21,143,207,149,228,255,207,197,138, 16,170,252,231,138,189,136, 82,194, 40,141,221,176, 67,215, 13, +208, 60, 6,162, 46,131,138,133, 82,234,166,168, 91, 30, 79, 91, 35,208,104, 1,171, 72,253,174, 53, 96, 24,155, 26, 82,194,135, +227, 9,255,249,187, 87,204, 62, 65,152,134,242,202, 51,141,191,136, 58, 71,232,212,250, 2, 8,177, 17,243,189,177, 43,109, 98, +237, 20, 7, 1, 20, 96, 64,241,164,163,210,111, 69,221,163,151,159,189, 49, 6, 77, 67, 30, 84, 58,121,107,226, 13, 43,186,112, + 19,174,152,219, 2,128, 40,223,171,188, 97,137,163, 69,149,210,200, 89,212, 4, 57, 31, 2,229, 1, 59,135,101, 94, 49,142, 51, +150,197,209,174,134, 73, 74,129,197, 35,249, 77,175,184,213, 55,136, 77, 70,125,141,248,172,194,184, 66,224, 99,235, 33, 63,216, +196,246, 53,205,101,143, 45,144,149,130, 52,188, 91,111, 27, 52, 93,131,135,195, 14, 77, 78,208, 57, 96, 55, 12, 24,158, 30,160, +122, 11,169, 20,172,233,240,111,254,239,255,128,215,203, 25, 96,104, 78,174, 7,140,173,248, 76, 94,199,112, 57,223, 76,200,111, + 71,230,249, 54,224,224, 77,130, 96,218,132, 14, 93,245, 20,226, 26, 66,180,249,243, 58,118,191, 21,157,110, 8,131, 87,184,131, + 16,226, 6,234,240,251, 44,118, 37, 92, 33,111,186,253,204,233,122, 6, 2,127,254,227, 63,193, 63,253,139,191,132, 76, 64,116, + 30,235,178,214, 46,112, 94, 38, 74,251, 2,141, 12,205,102,228,234,188, 39,225, 78,219,193, 40,141,187,187,187,170,240, 37,126, +246, 90, 11,109,223,247, 56,159,207,120, 57,190,226,231, 63,255, 57, 46,103, 2,208, 20, 85,236,233,120,194,126, 24,208,117,148, + 35,126, 58,157, 0, 0,195,126, 7,173, 20,142,199, 35,223,207,116,223, 75, 8, 56,231, 8, 5,107, 13,132,164,132,172,182,109, + 49,244, 59, 12,125,143, 20, 41,200,194, 40, 3,219,183,220, 9, 72,204,203,140,142, 51,217, 75, 92,103, 76, 9,146, 71,243,141, +181, 88,157, 7,196, 53,229,143, 0, 79,158,152,222,146,180, 6,195,208,115, 92,102, 70,142, 1, 74, 0, 66, 93, 51, 38,148, 82, + 8,209,179, 82,188, 69,211, 24,140,151, 11,237,141,119, 59, 40, 41, 96,148,194, 52,142, 80, 74,226,233,233, 9,227, 52,113,225, + 87, 55, 32,154,190,239,107, 58, 23,120,199, 78, 34,179, 84, 11,135,115,174,198,206,230,156,106,110,196,126, 55, 96,225,221,171, + 98,145,104,226,244,195,194, 57,151, 82,113,113, 37,102,127,199,182, 67,101, 52, 86,183,162, 31, 6, 38,196,209,100,166,105,169, +248, 52, 77, 91, 89, 5,138, 29, 58,186,116,192,252,172, 50,214,144, 34, 33,165, 26, 89, 75,227,121,142, 43,206,168,211, 2,183, +174, 20,199,202,226,176,242,140, 66, 6,235,103, 44,220,178,192, 26,178,126, 81,114,157, 37,239,183, 40,207, 44,226,225,211,250, +148, 96, 61, 36,206, 20,232,186, 22, 77,219, 96,158, 73, 68,169,140,161,164,179,194,121,231, 56, 86,195, 56, 91,193,147,167,174, +235,234,186,147,166,185,130, 86, 10, 41,209, 65, 14,130, 14,131,140,133, 37, 65, 96,168,216, 92, 74,218, 83,204,143, 15, 85,216, + 71,196,206, 92,213,245,197,189,244,250,122,172,235, 11, 18,239,113,142,186,162,189,253, 52, 78,220,217,211, 33,201,242,228,167, +109, 44,180, 38, 48,209,178, 44, 24,167, 17,235,178,226,241,241,137,166, 39,171,171, 66, 73,193,206,163,183, 25,143,185,118,232, + 87, 8, 87, 25,193,191,229,171,200, 55,150,236, 26,129,142,109,214, 10, 45,110,133, 0,212,189, 53,191, 84,146,138,117, 81,161, +151, 29,184, 4,167,164,201,107, 90, 90,121, 19,181,226,191,195,133, 87, 49, 52, 69,107, 75,136,189,182,133, 54,134,132, 46, 74, + 87, 18, 80,161, 2,105, 45,107,192,189, 53, 10,141,145,104,141,130,149, 2, 70, 75,104, 67,197, 94, 9, 10, 63,249,238,249, 5, +191,121, 30, 17,133, 38,213,187, 0,219, 90, 50,191,112, 36,110,168, 97, 36, 37,247,125, 83,232,202,133, 34, 4,161, 55,133,100, + 53, 39, 68, 29,253,208,233, 74,113, 33,167, 78, 68, 42, 81, 79, 88, 82, 72, 52, 70,195, 88, 98,183, 75, 37, 56,234,175, 64, 16, +216,203, 42,213, 77,238,112,129, 38, 4,246, 32,198, 68,160,154,178,223,117,222, 35,196,196, 5,221, 99, 26, 39, 76, 19,161, 64, + 19, 39, 15,197, 76,153,191,180,167,202, 85, 16,119,131,197,251, 68,224,117, 5,175, 82, 17,149,181, 88,146, 23, 86,177,202,159, +126,255,196,177,169,213,107,203, 83,139,228, 35,114, 12, 48, 70,226,126,215,225,253,227, 29,238, 15, 29,132, 34, 91, 81,119, 24, +208,252,244,199,144,109, 3,119, 26,241,171, 95,127,141, 95,253,246, 27, 42,138, 9, 53,106,239,106, 29, 19,117,180,253, 22,142, +115, 45,152,226,150,175,190, 9, 24,202,111,167,237, 55, 10, 83,113,163,132,207,216,230,180,231, 55,148,167, 55,161,172,219, 80, +162,237, 87, 18,226,179,121,111, 55, 34,211,122,224,184, 38, 5,138,148,241,180, 63,224,159,255,221,223,163, 21, 10, 8, 17,129, +195, 56, 98, 8, 88, 87,178,235,208,184,153,174, 17, 23,104,116, 76,133,219, 82,128, 6,231, 96, 23, 91,143,247, 30, 79, 79,143, + 88, 87,135,182,109, 41,147,250, 50, 34, 1,248,233, 79,127,138,105,158, 48, 77,211,109,148,100,164,145,254,249,124,130, 15,158, +108, 71,156,203,126, 62,159,233,160,174, 40, 40,198,106,234, 18,187,174, 5,144,113, 25, 71,188,188,188, 16, 79,193, 90,244, 93, +143, 47,158,222,225,245,229, 21,239,191,124, 15,163, 45, 98, 78,240,129,246,222, 20, 32,163, 25,190, 19,153,153, 46,144,138,106, + 56, 70,250, 72,169,218,117, 50,163,153,115, 78,149, 22, 70,172,123,154, 34,106, 41, 73,204, 36,101,125,240, 38,100,134,171,200, +186, 47, 95,215, 21, 70, 73,154, 48, 2, 48, 70,227,112,216, 51, 75,125,133,181, 77,157, 74,208,131, 95,214, 14,220, 90,203, 60, +242, 6,227, 52, 49, 16, 70,163,237,232,239,100,100,104, 46,106,130,131, 74, 4, 8, 15,186, 46, 11,233, 75,154,134,178,191,149, +162,130,196, 76,115,173,205, 13, 85,173,132,144,152,198,194, 7, 34,215,245, 67, 15,231,121,242, 32, 69,229,172, 23,134,124,230, +223,167, 76, 1, 5,235,124, 32,233, 89, 28, 83,160,255,135,180, 65,141, 94, 11,165,214, 10, 57, 68,182, 54,238, 43,185,109, 93, + 87,180, 13,189,215, 52,214,119, 88, 87,135,253,129, 48,182, 70,107, 6,103,137, 27, 58,154,109, 72, 11, 97,139,123,135,211, 25, +193,225, 57, 11, 7,176,104,182,164, 85, 30,255, 60, 67, 8,210,134, 32,101,206, 59,167,206, 29,146,106,207,202,130,203,121, 89, +217,147, 78,122,159,138, 42,151,146,240,203, 12,166, 73,188,162, 0,255, 93,202,179, 23,181, 9, 42, 77, 75,211,118,228,166,154, +215,106,159, 43,226, 71, 2, 47, 69, 62,124,181,240, 62, 96,158, 38,164,250, 30,170,106, 93,238,187,134, 26, 22, 22,173,158,207, +103,238,218,123, 90,163,229,223, 29, 91, 94,237,112,165, 33,133,248,108,128, 90,190,125, 64,109,158,245,242, 83,176, 6,163,213, +181,146,183,227,218,107,119, 87, 68,102,249,211,232,203, 26,135, 42,110, 71,189, 28, 21,170,181,174, 56, 84,205,185,234,154,247, +180,146,223, 12,195, 7, 5,163, 5,172,150,176, 54,195, 42, 64,230, 4,101, 5,164, 74, 16, 42, 34, 5, 15, 31, 5,198, 37, 32, + 68, 64, 40, 77, 93,102, 10, 16, 41, 67,129,224, 39,129,189,228,185,142, 47,242,213,186,198, 84,163,235,200, 84, 94, 33, 36, 28, + 18, 35,114, 98, 0,136,134, 16, 10, 90, 10, 10,152,209,146,118,135,108,147, 83,197, 54,199,136, 87,157,104, 28,168, 64, 29,111, +100,165,119, 65,182, 86,189, 87,181, 38,208,247,117,222,179,199, 95, 34, 68, 48, 96,129, 48,180,203,188, 98, 89, 28,188, 11,136, +145, 58,209,152,249, 32,144, 98,205, 63,191,102,164,139, 26, 45,187,141,237,123,203, 42,223,230,150,147, 74,147,201,235, 28, 32, + 35, 11, 9,141,125,218,215,113,118,130,204, 9, 73, 39,136, 20, 48, 8, 96, 48, 18,247,143, 59,188,127,127,143,187,161,135,247, + 43,194,178, 64, 53, 29, 18, 18,250,222,242, 1,193,114, 82,221,149,179,158,182,156,153,124,165, 86,165,155, 36,212, 91, 13,104, +185,198,210, 70, 30,122, 83,208, 63, 35,162,171, 83,245, 58, 86,207,127, 16, 55, 83,239,161, 92,206, 30,226, 77,120, 11, 54, 88, +159,107,152, 17, 54,167,230, 34,184, 20, 57,163, 55, 13,254,219, 95,252,115,188,187,187, 67, 90, 61,141,147,151,133,237, 58,148, +153,237,130, 7, 32, 48, 47, 43,141,218,187, 14, 46,120, 8,102,128,159,207,103, 72,144,160,179, 76,147,136, 54,151, 49,236,118, +156,201,109,145, 66,196,238,254, 14,235,178,226,114,161, 36,181,210,157,121,183,226,254,241,158,166, 68,107,132, 85,154, 10,182, + 20,184,156, 79, 88,230, 9, 90,209, 42, 9, 57, 97, 89,103,210,164,228,136,243,121, 4,164,132,148, 9,214,104, 4,239,144, 83, +192, 60,157, 97, 52,179,197,115,134,209, 10, 13, 19,198,148,214,184,140, 23,218, 95,134, 8,169, 13, 18, 72,244, 36,121,159,173, +181,174, 7, 91, 18,144,129,167,125, 4,254, 16,144, 8,129, 14,218, 33, 20, 27, 84,134,150, 10,107,240, 85,123, 65,221, 95,100, +136,200, 12,203,214,173, 28, 34,118,135, 3,246,251, 29,166,105,164,238, 92, 27, 72,229,171,248, 85,137, 43, 12,165,216, 7,219, +182,197,137, 99,106, 73, 27, 67,227,113,163,245, 53,195,164, 23,236, 0, 0, 17,119, 73, 68, 65, 84,172,100, 89,120,244, 94,198, +192, 11,218,166,229,238, 57,242, 24, 62, 32, 7, 18,174,209, 56,127,207, 49,159,129,167,116,212,105, 74,126,143,168,184, 4, 88, +107,170,117,182, 8,141, 27,107, 73, 75,195,192,149,200, 48, 21,173, 53,214,213,179, 29,205, 34, 70, 26, 33,211,235,139,218,101, +134, 16,232,138,101, 44,181, 82, 18,227, 56, 17, 37,143,139,128, 15, 68, 49,235,122,192, 54, 13,156,191, 32, 35,163,235,123, 64, + 0, 33, 6,138,145,101,177,111,209, 13, 68,239,145, 82,199,197,137, 14, 15, 33, 70, 24,107, 49, 29, 39, 60, 63,191,224,225,225, +190,174, 84, 78,167, 19,186,174,140,231,155, 10,217,241,222, 87,251, 88, 89,231, 22,113,227,178,174, 88,221,138,174, 49,108,147, +138,245,126, 36, 52,111,170, 7,179,156,105,178,226,220,202, 56, 94, 2, 93,197,136,122,128,110, 26,139, 97,216,177, 62,197, 87, + 12,236,253,253, 61,190,249,230, 91, 0, 18, 33, 78,216,237,246, 85,101, 95,112,205,153,211, 6,189,247,184,191, 59, 96,156, 22, + 92, 46, 19,124, 10,120,125,125,193, 97,191,199,187,119,143,120,126,126,102,183,195,166, 25,169, 90,173,107,125, 42, 40,114, 8, +241, 89, 10,102,126,243,172,207,137, 87,153,169, 8,190, 5,242,198,250,171,149,150, 55, 34,170,124,157, 85,210, 73,119, 27,134, +130, 98,165,184,182,252,219,206, 75,128, 60,177,214, 88, 24,109, 96,120, 79, 38,133,132,150, 12, 9,216,236,212,149, 96,239,187, + 32, 32,132,231, 37,105, 0, 32,100, 66,144, 25, 58, 11,248, 40,177,122,226,167, 71,238,188, 82,200, 76,148, 99, 81, 18,179,164, +111,206, 68,101, 60, 38,128,196,189,147,200,180,211,149, 66, 86,254, 47,193, 98, 88,184,192, 54,136,146, 24,167,180, 64,228, 40, + 86, 33, 4,211,229,184,115,142, 9,177, 8,233, 32,233,225,195,228,184,124,131,249,147, 53,166, 85,112,222,109,241, 74,122, 31, +249,130,242, 8, 62, 50, 4,195,115,160, 2,248,123,209, 71, 8,145, 88,241, 27,174,187,216, 56, 15, 18, 47,131,228, 27,198,253, +214, 1, 16, 83,102,193, 26, 21, 9, 72,193,193, 53,212,244, 67, 74,228, 36,106, 36,168, 84,138,196,146, 50,163, 49, 10,187, 78, + 97,223, 43,220,183, 10,247, 70,226,177, 49,216,189,187, 67, 82, 18,113, 93,160,108,131, 57, 56,204,211,136, 4,129,144, 37,178, +148,136,252, 14,188,221,115,221,174,168,243, 31,166, 22,230,202,121,216,122,222, 88, 84,159,175,224,153, 82,160,171,126, 66, 84, +151,192, 86, 53,154,243, 22,253, 46,234,154, 99,219,153, 95,255,238,213, 5,241,214, 84,151, 55,130,195,114,157, 89,161,240,139, +191,251, 59,252,197,159,254, 41,226,188, 66, 52,192,154, 2, 66, 88,208,247, 22, 49,145, 86, 99,252,225, 7,184, 16,233,250,147, + 18,243,186, 34,112,244, 35, 37, 73, 81,196,164, 20,146,168, 95,220,137,156,206,167, 58,182, 27, 47, 35,250, 97, 7,183,174,248, +248,250,130, 53,120,124,249,238, 29, 94, 95,158,177,172, 11, 21, 87,102,143, 55,109, 87,167, 92,116,205,121,246, 90,211, 62,127, + 28, 71,164,148,176,219,237,176,186,149, 70,231,193,163,111, 91, 60, 61, 61,224,227,135,143, 64,206, 56,190,190,226,112, 56,224, +248,250, 2, 64,224,244,122,134,177, 6,251,253, 14, 66,210,110,211, 5,143, 97,183,103,177, 83, 34,125, 45,175,249,180,210,240, +236,217,214, 90, 83,120,137,228,131, 49,191,254,116,248,165,240, 20,201,239, 41,197, 98,106,172, 43, 89,244, 40, 82, 53, 32, 4, + 10,157,114,193, 99,104, 91, 88,219,194,218, 6,227, 56, 50, 64,197, 16, 33,108,154, 32, 4, 17,193, 40,148,133, 58,179,253,126, + 95,223,239, 24, 2,148,214, 0,174, 44,117,197,234,235, 34,226, 19,124,232, 49,198,220,168,145, 11, 98, 54,114,106,152, 16,146, +118,179, 72,245, 80, 45, 57,250,213,249, 80,247,218,101,116,108, 13,117,152,151,203,185, 62,131,181,102,155, 98,240,212,204,112, + 66, 89,138, 36, 0, 4, 18, 82, 36,165,253, 82, 14, 32, 49, 85,174,186,110, 26,214, 93,152, 26, 35, 75,197, 63,214,145,183,243, +142, 41,123, 20,149,171,141,129,243,142,214, 0,243, 4, 25, 1,221,182,200,145,214, 74,129, 39, 59, 57, 10,162,189, 13, 3,243, + 0,174, 58, 37,165, 40,239,226,116, 58,227,225,225, 1, 41, 70,178, 89,114,178,229, 52,142,104,109, 67,186, 34, 48, 77,109,131, +150, 45, 7,173,235,243,139,189,216, 70, 49,152, 40, 35, 73,186, 38, 96, 24,253,170, 36, 21,221,121, 69,100, 76,108,138,137,234, + 76, 76,144,146, 56, 0,125,223, 85,140,243, 56,142, 24,134, 29,124, 8,216, 31,238,240,241,227, 75, 69,200, 22,190,202, 60, 47, +144,146,214, 11, 5,227,186,174, 43,134, 97, 7, 41, 21, 94,158,143, 53, 94,183,239,123, 60, 60, 60,112, 18,157, 35, 39, 80,190, + 54,119, 69, 23, 82, 38,200, 33, 38, 62, 68,223, 78, 18,197,134, 47,178,125,210,164,156, 55, 77,205, 53,107,130, 82,218, 68,190, +229, 85,151, 24,201,250,223,168, 10,204,183, 17,235,117,238, 47,175, 15, 53,107, 27, 88, 67,106, 67,173, 12, 76,233,212,249, 34, + 46, 44, 94,228,107, 10,155,139,137,132, 97, 5, 72, 34, 51, 32, 3,140,136,176, 2,136, 89,163,105, 15, 80, 98, 68, 72,145,226, + 65,147, 64, 98, 47,162,132,224,131,130,124,115,194,145, 87, 68,103, 1,128, 8,108,138, 92,162, 3, 1,147,141, 8,140, 67,187, +113,193, 66, 22, 33, 50,140,166,131,129, 81, 4,189,160,145, 27,105, 9,104,164, 75, 47,114, 8,137,199,136, 36,152, 40, 97, 46, +165,153,203,213,178,145, 57, 96,128, 4, 78,196, 43, 38, 47,167,247, 1,222, 69, 6,143, 92,209,187, 33, 70,248, 68,187,199, 43, +130, 23, 55, 54,176, 44, 54, 29,106,161,184,161,120,210,115,189, 56,232,193,194, 0,132, 34,182, 19, 10, 66,106, 72, 69,163, 65, + 35, 37, 68,142,208, 82, 32,193, 65, 26, 96,232, 12,118,157,134,177, 25, 8, 35, 90,111, 32,166, 51,176, 52, 80, 95, 60, 64, 12, + 22, 98,215,194, 30,122,188, 30, 95,161,165, 70,136, 10, 42, 73, 68,145, 89,212,118, 59, 77,200,159,233,154, 63, 91,244,111, 22, + 82,249, 70, 76,146,147,164, 3, 92,150,159, 57, 22,136, 63,232, 53, 47, 59,170,207, 89,230,174,159,147,110,161, 18,249, 54,194, +149,183, 93,100, 14,204, 2, 6, 18, 63,251,201,159,226,239,255,230,111, 17,151, 21,110,158, 32,145, 16,194, 2, 30, 54,193,187, +132,243,249, 66, 34,185,232,145, 89,160,184, 46, 43,169,145,185, 64, 20, 23, 5, 69,109, 94,176, 58, 71, 2, 51, 86, 87, 91,107, +113,184,191,195,249,114, 70, 98,161,231, 87, 95,125,133,233, 66,187, 62,199, 29,208, 56,205,252,146, 16, 66, 51,198, 12,239,137, +195, 61, 12, 29, 21,176,149,174,193,135,135, 7, 30,159, 46,120,122,124,130,247, 52,230, 63, 29, 95, 49,142, 23,104,173,208,182, +228,250, 56, 79, 19,114, 34,178,219, 48, 12, 80, 90,227,229,245,149, 68, 89, 77,131,166,109,113,124,125,133,110, 59,100,145,224, +150, 21,186, 33,219, 93,219,112,226,151,214, 88,124,184,233,102, 18,135, 88,164,156, 32,181, 98,237,161, 64,112, 68, 91,203, 66, + 64, 42, 90,187, 41, 41,113, 62,143,120,122,184,131, 18, 18, 9, 2,218, 88,124,248,248,140,199,199,187,186,190,114,108,177,235, +186,166,146,229,202,189,154, 82, 98,208,202, 66,251, 83,169, 72, 19, 18, 2,175, 35,214,235,154,142, 71,167,229,253, 9, 33,208, + 46,154,237,104,214, 26,204,203, 68, 15,111,206,147,167,212,220,124,115,168,140, 33, 64, 52, 45, 23,227,133, 85,211, 60, 98,103, +161,234, 21,202,130, 58, 2, 47,133, 51,114, 80,137,148, 2,193,123, 90, 3,204,107,221,227, 35,229, 58,225, 81,155,176,144,226, +236,161,223,119,166,164, 52, 41, 97, 53, 17,220,238, 14, 7,152,117, 33, 44,176, 53,176, 86,211,225,159, 11, 82,219, 52,112,235, +138,196, 83,163, 98,187,148, 18,104, 27,139,105, 94,152, 85,208, 99,158,103, 24,173, 49,141, 35,134,190,175, 44,133,242,255,138, +246,136,166, 24, 52, 21, 21, 9, 60, 97,160,204, 15, 41, 73,187, 17,124, 32,183,145,144,112, 21,180,147,170,134, 97,113, 43,118, +251, 29,173, 74,249,231, 83, 44,238, 38, 97,155,168,200, 89, 36, 85, 17,194,165,123, 22,130, 38, 24,214, 26,126,118, 36, 10,105, + 17, 10, 90,211,170,129,206, 29, 4, 92,154, 23,143,188,172,104,154, 22,247,247, 2,231,211, 25,222,123, 28,143, 71, 52, 77, 75, + 19,129, 93,207,182, 53, 96, 93, 86, 98,218, 11, 65,165,174,120,219,111, 88, 49, 98,147,152,129,171, 34, 62, 95, 39,154,185,130, +105,210, 13,234, 10,220, 52,126,158,151, 14,241, 71, 69,107, 20,176, 71, 98, 54,114,217,165, 25,109, 96,148,169, 98, 59,193, 88, +216,171, 29, 40, 95,139, 77, 78,200, 89, 34,112,250, 87, 66, 0, 68,198,154, 2, 12,200,178,208,245,119, 24,250, 87, 44,167, 17, + 62, 0, 33, 43, 8,150,249,231,140, 79, 10,250,118,236,172,132,102,209, 66, 81,233,167,107, 82,150, 84,164, 33,224,255, 95,148, +176, 20,202, 64, 55,143,209, 6, 16,180, 75,179,197,123, 95,196,101, 16,136, 33, 33, 32, 80,158,242, 38,177, 39,134,192,220,247, +130,141,189, 38, 60,133, 16, 40,119, 55,209,200, 45, 4,218, 35,122, 23,121,175, 40,234,216, 62, 68, 26,187, 69, 30,183, 92, 45, +122, 28, 35,250, 38,255,251,118,148, 44,174, 59,245, 55,211,228, 34,136,147,176,208,170,129,182, 29,180,105,232,176,146, 34,114, + 88,144, 69,130,130,128,230, 88, 91,129, 8, 35, 50,172, 4,180,204, 80, 26, 72,126,130, 8,134,176,189, 6,216,189,127,130, 79, +132,229, 20, 74, 3, 41, 65,214,208,218, 63,156, 33,144, 55,177,168, 91,129,220,246, 20, 80,186,236,171,114, 93, 66,178, 83, 34, +191, 21,193,101, 81,201, 82, 55, 20,186,173, 8, 79,252, 97, 64, 77,186,225, 61,228, 55, 66, 21, 81,109, 44, 50, 39, 60, 28,238, +241,175,254,229,127, 15, 3,137,209,173,120,125,249,128,174,179,112,235, 2, 41, 51, 86,183, 16, 33,206,104,216,174,225, 20, 38, +133,101,117,220, 33,210, 3,124,158,103, 70, 84,142,232,251, 30,199,243, 9,195, 48,160, 83, 18, 11, 99, 58,219,190, 33,202,128, +164,180, 52,165, 20,190,254,250,107,156,143, 39, 52,198,162, 29, 58, 40,173, 16, 67,192, 52, 78, 53, 46, 51,112, 68,167,146,138, +174, 97, 78,161,186,191,123, 64, 78,192,101,156,234,116, 71, 8,133,156, 50,150,197,177,106,184,199,110,183,195, 60,207,156,162, + 8,180,187, 30, 75,116, 16, 46, 96, 90, 70,244,195,128,161,239,240,252,241, 35,117,118,129,118,237,237,126, 7,164, 12,163, 20, + 34, 40,186,217,175, 43, 90, 75, 12,248,182,107,112, 25, 71, 86,188,231,202,104,175, 36, 48, 69,135,207,180, 58, 86, 69,147,126, +101,157, 87,200, 39,133,215,227,153,118,236,156,205, 61, 47,107,189,151,214,149, 30,208,125,223,214, 46, 77, 73, 81,199,176, 0, +224, 89,164, 40,149,130,247, 17,141,177, 55,196, 51,163, 27, 56, 63,177, 51, 70,215, 93,172,212, 10,113, 38,129, 84, 6,169,204, +231,117,172, 74,116,173,205, 39,227,212,174,235,106,122, 92,212,154,184,252,193, 99,183,235,177, 27,122,222, 61,243,131, 94, 16, +202, 52,101, 34,167, 53,182,193, 18, 22, 66,176, 42,130, 61,153,205,243, 41,132, 8,163, 45,167,148,249, 42,112, 43,207, 69,250, + 26, 61, 70, 81, 31, 8, 16, 25, 8,171,199, 58,207,232,172,133, 95,103, 74, 63,227, 67, 84, 78,169, 10, 91, 75, 7, 77,163,120, + 9, 37, 84,213,125, 12,253, 0,239, 2,118,195,129,166, 40,206, 65,101,212,107,160, 8,244,202,207, 91,238,201,174, 35,235,227, + 53, 38,250,106,183,133, 16, 52,130,111,201,158,167,148,130, 95, 28,180, 33, 4,109, 98, 1,178,247, 30,141,177,104,140,197, 56, +141,232,122, 6, 38,157,207,104,251,190, 34,172,231,121,173,171,172,113,154, 48, 78, 19, 98,202, 56, 28, 14,248,237,111,190,161, +157,188, 18,100, 51, 6, 77, 6,178, 84, 72,160,194,223,117, 77, 85,195,143,227, 68, 48,178,135, 7,172, 51, 57, 43,214,197,193, +173, 43,251,228, 9, 29,220,182, 45,172,181, 24,231, 5,142,147,251, 74, 32, 80,105, 12, 69,153,234,110,104,153, 41, 3, 49,225, +134,158,153,111,160, 94,185,174,202,213, 99,107,126, 41, 54,162,160,237,135, 20,146,189,117, 37,156,228,119, 61,136,233,115,181, + 50, 24,134, 61,186,118,128, 49, 77, 29,189,151,177, 61,237, 3, 82,197,181,222, 32, 62,217,115,142,140,122, 34, 47,138,122, 72, +130,242, 11, 9, 28,199, 9,107,200,200, 82, 67, 72,195, 86,128,171,117,173,124,148, 11,133, 78,210,234, 42, 10, 19,183,161, 27, +114,227, 73, 47,150, 21,129, 4, 37,169,168, 55,214, 64, 40,130, 54, 88, 62,164,208,196,129,227,101,243,213, 46, 22, 67, 68, 98, + 88, 2, 54, 39, 43,200,114, 51,144,133, 41, 4,234,196, 83,202,112, 43,141,221, 99, 76,240, 28,243,152, 34,174, 60,246, 24,217, + 43,154,106,193, 18,159,141, 11,205,213,147,122, 77, 71,147, 87,101, 56, 54,250,135,124,181,149,145, 99,192, 66,155, 22, 74,119, +144,138, 79,199, 33, 32,121, 15, 32,226,208, 26,188,127, 56,224, 71, 95,189,195,251,119,247,248,179, 47,223,225,221,195, 30,135, +135, 29,204,190,133,106, 13,132, 17, 16, 74, 67,180, 45, 36, 52,254,183,255,233,127,197,175,126,251, 1, 43, 52,162,224, 72,220, + 98, 23, 17, 21,113,240,230,148,121,251, 81,166, 13, 69,189,143, 92,148,160,226, 54,209, 45,179, 48,173, 96, 94, 75, 98, 93,254, +252, 36,224, 58,117,202,117, 55, 47,110,246, 87,216,184, 7,176,113, 43,108,195,135, 80,157, 4,153,175, 55,228, 12,145, 50,118, + 77,135,127,249,139,127,129, 31, 63,190,195,124, 57,227,229,249, 35,140, 81, 24,167, 17,211, 60, 50,222,212,192,167,136, 44, 4, + 66, 76,128, 32, 80,201,234, 28,180,214,245, 97, 95,214, 98, 77, 67,150,165,195,221,158,186,206,148, 96,155, 6, 33, 6,122, 24, +197,132,213, 81, 23, 42, 20,225, 95,165,148,248,226,139, 47,144,145,177,122,122,184, 4, 31,216, 34,229,107,242, 90,121, 29,215, +149, 45, 61, 16,112, 62, 18, 46,181,235,209,182, 61,130,247, 56,159, 78,117,183,173,141,134,143,212,201,167,156,176,219,239,224, + 82,196,188, 46,152,215,133,186, 37, 37,177,172, 11,142,199, 87,104, 41,235, 61, 31,188,231,180, 47,133,213,205,176,134,136, 96, + 5, 2, 37,144, 9,120,196,197, 78,148, 45, 74,142,124,201, 83, 54,250,178,146,208, 44, 35, 35,167, 88, 11,226,178,174,144, 82, +225,238,110,127, 85,130,107,141,121,166,232, 90, 89,129, 41, 60, 43, 76,153, 0, 53,125, 71,157, 46, 71,222,114,107, 13,195, 16, + 31, 33, 9, 29,157, 65,241,168,164, 66,215,213, 73, 83,120,226, 69, 60,214,245, 61,214, 98, 15,211,154, 50,210,185, 51,163,130, + 70,191,119,215,209,174, 57,179,174,165,140,247, 1, 48,201,236,218,205, 85,165, 58, 50,145,245,120,103,107,180,102,145, 30, 29, +216,148,148,112,139,171,201,144,137, 85,241, 21, 89,204, 13, 76,215,181, 8, 33,144,227, 64, 40,158,218,209,149,110, 25,150, 19, + 24,160,163,164,130, 91, 87, 42,202,193, 19, 74,149, 19, 42,131,167,209,190,210, 10,203, 60,195, 88, 11,173,136,160,105,173,198, +229,114,225,230, 73,162,105, 73,116, 88, 18,198, 80, 66,118,184,192,229,146, 17,194, 19,201,204, 16, 26,193,252,116,195, 2,236, +101, 93,107,129,166,189,188,132,243,174, 30,214,140,210,200,153,226,121,155,166, 67,224,213,165,226,137, 88,240,177,238,245,207, +231, 11, 82,206,152,231, 5, 67,191, 71,223, 15, 85, 96, 55,142,172,199, 16, 18,109,219, 1, 60,105,157,166,137,213,248,244,122, +142, 35, 9,234,138, 37,211, 90,131,204,135,197,192, 66, 72,210, 13, 88, 52,109,139,149,215, 58,197, 82, 28, 82, 98,141,134,216, +216,196,137,151, 86, 86,190, 37, 46,187, 88,121,183, 83,115, 5,176, 22,172,140,208, 83, 9,113,231,157,247,198,130,180,141,202, +124,171, 2, 22,130, 71,223, 41, 67,102, 64, 11, 69,254, 71,149, 17,101, 66, 20, 17, 73,144,192,203, 39,207,227,233, 72,208,131, + 68, 35, 83,145, 20,141,208,217, 59,105,180, 70, 99, 12,172,105, 96,218, 6,182,213, 24, 58,131,119, 79, 15,120,188,219, 67,203, + 4, 45, 2, 4, 60,241,215,114,134, 72,180,115, 47, 80,138, 50, 94,174,187, 47, 73, 16,147,200,177,163,108,194, 7, 74,232,188, + 40, 49,125, 44,118,210, 18,210, 40, 72,163, 33,165,134,210, 22, 82,107, 64,169,234,217,143, 57, 19,242, 82, 40,164,204,249,232, + 41, 87, 65, 91,228, 66, 32,179, 0,146, 68,138,132,158,141, 81, 32, 37, 9,183, 4,172, 46,194, 39,129,144, 4, 34, 20, 34,138, + 6,128,196,107, 73,210,206, 62,229,171, 34,253,102, 74,146,232,107, 3,148, 36,151,178, 64, 68, 70, 20,244,218,103,145, 64, 47, + 7, 3,132, 50, 29, 88, 84,193,231, 18, 85, 7, 89, 88, 36, 24,190,193,103,196,117,134, 76, 1,143,125,139,175,190,120,192,211, +227, 29, 84,142, 88,214, 25, 31,221,140,179, 86,152, 97,144, 85, 11,217,239, 33,146, 70,158, 86,164,121,132,105, 12,254,236, 79, +254, 4, 26, 30, 90, 80,122,148,204,134,126,247,242, 61, 33,160, 75,176,174, 84,200,194, 80,140, 46,120,157,145, 18,151,208,128, + 4,135, 44, 19,146, 76, 52,198, 71, 68, 74,225,170,172,231,196,185,196,193, 7,101, 52, 46,106,104, 93,186, 73,237,170, 54, 38, +102, 44, 40,113,245,121, 42,153, 33, 69, 2,178, 71, 78, 1, 25, 1, 33,251, 13,124, 73,114, 49,167,157, 83,226,175, 77, 19, 15, + 5, 35, 52,254,250,159,252, 37,254,171,159,253, 20,110,190, 32,186, 21, 50, 1,211, 56, 99,154,102,248,156,176, 6,250, 72, 41, +227,114,185,208, 94, 48,210,184,145, 30, 6,182, 30, 74,250,190,131, 0,101, 13,164,224, 17,125,192,235,203, 11,166,121,198,101, + 36, 96,141,177, 13, 46,211,136,253,221, 1,243, 74,177,144,198, 24, 60, 62, 61, 2,146,246,195, 41, 68,204,211,140,182, 37, 94, +121, 10,129, 40,138, 26,184,123, 60,224,114,161,238,182,235, 26,184,117, 1, 88, 28, 42, 36, 16,130,131,243, 43, 66, 10, 8, 57, + 2, 90, 98,114, 51,198,101, 70, 18, 2,237, 48, 96, 13, 1,211,116, 70, 12, 30,214, 42, 40,171,240,114, 58,226, 52,158,161, 27, + 13,105, 21,148, 81,152,166,153, 14, 65, 90, 19,165, 80,102,172,110, 66,206,180,130,176, 70, 99, 93,103, 88,171,209, 53, 6,119, + 93,135, 94, 73,116,146, 24, 22, 86, 11,208, 51, 57,161,233, 44,144, 35,180, 68,157,134, 93,198, 5,128,134,115,180,207,151,138, + 58,118, 31, 51,230,197,195,135, 8,109, 13,197,195,102, 9,153, 37,214,133, 2,112,164, 49,152,220, 2,159, 60,164, 85,240,209, + 65, 42,114,202, 16,226,148,214, 0,228,139,151,168,167, 13, 65,197, 55, 33, 35, 75, 81, 15,224,193,123,244,173, 5, 16, 97, 12, +233, 39,200,117, 67,207,157,152, 57, 40, 70,210, 53, 45, 9, 18, 2,205,157,108,103, 27, 68,231,209, 54,154, 52, 0,252,220, 81, +202,208, 20, 35, 11, 88,169,208,106,139, 28,129,198, 16,254,182,181, 13, 36, 8,115, 90,108,127,133, 20,103,141, 65,103, 27, 40, +242, 24, 2, 41, 65, 11, 3, 45, 45,173, 15, 83, 70, 74, 2,211,228,224,214,128,174,221, 33, 39,129,224, 51,148, 52,136, 1, 80, +176, 8, 46, 67, 9, 42,226,182,209,208,141,130, 79, 1,182,109, 17, 65,236, 5, 72, 64,106,129,197,173,184,123,188,131,207, 1, + 33, 5,100,102,113,148, 28,244,105, 93,176,186,192, 1, 62, 1,128,134, 98, 60,109, 78,168, 90, 44, 8, 1,101,168, 51,118,158, +106, 73,146, 9, 73,102,248,228,153,234, 70,214,230,243, 56, 97,241, 17, 80, 26, 66,107,172,193, 67,107, 11, 64, 65,106, 3, 41, + 8, 79, 11, 33, 49,205, 43,229,107,204,116, 24, 36,162,163, 36, 26,157, 0, 30,239, 30,112, 55,236,145, 99,194,249,120, 68,219, +118, 48,218, 2, 17,152,206, 23,248,121, 5,144, 41, 27, 0, 25,243,124,193, 52,157, 0,153, 48, 28,122,220, 31, 14,232,154,166, +106,201,166,113,132, 72, 17,119,187, 1,217,123, 8, 14, 53, 66, 12, 92,131, 55,154,168,196,200,240, 44,160,202, 63, 82, 65, 75, + 69, 58, 53, 81, 62, 72, 80, 41,132,192,255, 7, 3,238,150, 17, 62,123,156,230, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, 0}; From 822f0dbb9244364b2ef2b609bd64e6112a9560c6 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Tue, 20 Jul 2010 16:43:58 +0000 Subject: [PATCH 583/674] 2.5 Beta splash png. --- release/datafiles/splash.png | Bin 204235 -> 185087 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/release/datafiles/splash.png b/release/datafiles/splash.png index 78a44ba9cb52d198136e64aa8454e8de3a990d20..89e195937bca46e3a123b3b0d40b3994804c9915 100644 GIT binary patch literal 185087 zcmb@t1yd!l7A=gsyEC{A?(PnQySqCK?(PnQyW8MygAOpbI~?5o00(*8_wM}#-&b9o zu1<HQlk8;eowd@@%0Hx$5eN{#z`&4YWh7L=z`!5BP69ZXuN*ktX{oOZxSOi97+C!@ z(dpL>jH$e|1lZ?)j>6uG)UO<PXBizgFfc^S|D51p*|~UMnXvA%ijuJFuvlo6v=b_3 z#9(0Gz+@#v)xFj)dcAw7Ry1}%TjEPuSG`-nZ4ypxRlBD6q~8`f!=tmtyu)a4#+3Q+ ztBJA`A{cNpjQ6|H_u!#RB2!o)&|#T8!^2Hv0(anX2eYGG#)SCZ1EKb<mXCf;J9}{& zz74>!ZH<cQ(~XiYy->STw?$yCT7~UOy}^0=vJ*0N>!PYW<NvqBRb^QJ08sU83(?(T zSpz5dEw*6ge}&F~s{}3U8r);HZ$E%g-}c*yKc<)iL5&5V{LBv(+sA+D4z^Wg8M^;T ztU4>|gC30fu3p>U_dWY=;y0QDtj_f-9?u&3o?aWg_m=g9-a12JGgqWhAyh+s|66T= zZczis%ZBcz$Jf9X#{Qx}^Jx1QJnz79j}-&f&pacy$9BKHzZUl+6`I2E4|c{4|NC5f z#rE?FMGY)2cNurz*;yxX3ZkP!x}QV*i^IkRq2c|0gPTzQ(@=rnv*$n~!K&T=tLNbw z{27>BSgY{M#RO#JtK)4e^SYnGf_75?siz-2frBBa8n^#sl!5E=W7jI*$J{^Zx`A2c zzje*+1o|~5u0U~tXZru+Y<7Bea$0>1)oQVCUYQ)gd!W*q?|E}2@i|*PBku3JJ{G<i zNbLu&9od;|_GXhjurwCx+iFPjF(jliay-`izjh0K9W4&#H3lW{g6cj2idvuD4Qq32 ztS9^fC2dAh=g?ZL7&D)b-J~xK{ZG;bAF{i*Jlhq>7vxQds~!<K%nW5$!b9)dh?^KY zeUfw@EB8c;1-QqA@u_;n!LDwHHK5@40YSN{!+Yo4(|5PN72~gl+#NDL*#tGgTH;!z zH0WQfN;1nSY9k<|smjGDso#3P)IqOjrG6xS{M{1<9XfTtZ5VdeHG8MQe<wAY%_q~@ zoNm}|1jTb3HNU@-dLJA0y*$633?0L-Izev-;7s7{lI#kVEp9zFd2jzlY9C$si`4VS z*t;TXlNdR(0`iI*5|}@9eFbUg`{TIN6PUHhfT9hJ0$u>IjoPDixz?`Rkfv+v{Sn#) zp<ZF)__4NPaO>vOVY6|iSV#FN2RpFL*OMlu!+uLrr!pG1Q*)CiElWLdyj;ux`fCtz z&9MEjPT2QKwPNqTgW3b=D|p?2O?+cwIoMabZHH)&8Lt~~I39AVImA!z7o5Cwf^|es z-pG$MY>xguB5)(N%e9+netku%<@@x0B+1@Vj)c}~Wt2zzWh>mjYCBy(y?URqe!s)A z29igCeQc?k-GNvHW{!y(uwDpjY(HOSV-Y&+H-GSwv?krG6LeT*ToI@StfB2F!iLqh z$L#`8g3)JY|1IuHA1F}x`F<ez{-6~%AFbkcx%&DVJ9%Y!;G-uQM1kqnuX@&Z@^@y; z&fnJp`2u2_f}ELOY30KaqBoGwn|gW8a##58_Eu(%ASj^Nko?Q00#A#C(c6zoh8&-+ zr<UfSWL~5qUFOS(frjxeE7lMDZE#m4W#FVbe$Z5Z>_~%*&P5Qif5*<Tn5ku-efAya z1UwwBTt82ceqJVC;9Fh=--BPsRjH}w%<%{En`J*8RbE_IXU@9mUcp>#kKZR0`lC80 zM)j~8UPG+TthDx5u#hul*dM%4Y;V#1hV<gRvD_`6SP^FO_593QZ@w0Pbo~!N^q;sr z$KzXktX>D6jZ3GK%*ztz;k4vn7zMm}4lOKFIOA8(p?td*^in!ahh%{e2HSzf2OGLE zlydPE9Zuy{5^{e#IX4QJ?DaMJ6mHlQ0urM?J%;B}mMsc~{jyv#>uNO=nz8Y&Q$0&y zFPcwR^;Ga)^b{(f7Q0;IR`q=nEPuKH3GUVeqiXfTd}#FQ+g2UEoL5meUrY=898`Q9 zuuJy?B>8o<XlD(Farp-1gD$qm&og_BpGJfqT30S?*UO)_Ls>-?y%OV=RiuiT`{8>Z z2^Kd|)ZI|-$ohPtbohgW@4g-QD>FhxV&0rn82S$(8s2>LHhks<zGVorppt5PlL8KU z5uq<Yk_Y)QV?Xa-R<B|3=YRzj3g@;FpS<Zgd5Qk|arb!y$M~1mL;?rh_%vG6vE%<{ z#^T&tt#*{3u0G&*L(>zDG-@XPGfzUgAiD;Rg`Q_$`M(mM*!Y~)?|oOJ4#GFY%-yzD zdKG*?j7s1j82-;e57w1l0#MWSsQx4B4>_{&d5Qy6e=y*Qv@$g`y2M~5_kNc=4)^;^ z!AHgCEvHk!%=}#X;OEiX$f^?caTy9f#Kz^^M!$FHHIThLB2%d;v0W>`H&ONMY9heN zioS&Z>b{=+?>27oMhSP<x&4?2*)$OA*vD$~+Rx(NZ5m5BUIFs??OvN%fd<{NM#F-! zRUlAw3lj1h4M%vi%5~F`LE8R^r~k2slmGn{gJ(B-T&{Q%8QY1d5EKJP-|1K*v+vNU zU}QLhEKUGeFF@)p@srCM_nQ%&RBs$%!&c`Z@uw+p``RB=;17GV3JvpEO)gAxtt#ON zzU@Y!yo%lXXG1C3!C+AnauZj+W!oD8#ss&B<NQd5rU1!r=kH%}#E}liuQ_Nqe7|*~ zf9;<SdEPARW9424yy}B_wi;N0T!D;LVJ3nWlBZ1v1uo_LM^*&T(5w~YhNvj3Z5TrL z2$6sof-hCL>mU*(#1Bz}h1GnYWc_9Bszm+I0w@F^1sSdypBp+&<?r>jUm|d~ALCaX zI)APLc`^roqk6;0DZ_L0y&to3`?+;CFMT8dg>T@lKMyFr*8yeY_9ZjF-_$X8M`RlI zvR^#kWtPnAG@*WClyV`7GTc3q?c8S*8s6;)-Mo-`eU6cO6XI5GGD2+EsgdlhT>+Ni zoEJ!T{jn*E&i-AQ=Gp{)+Qh{J)dkLd>GKc&sR8;7B%TUNRi-w$!5+@~Vj8!42EFxb z@AC>E9u6m-e;N$<9%d|fT`5@^<N<Fc7t(BoZqzEk@Ba<(2XQyLh}RI`J|YkFXZCgn zB0QrWL+V>xUu_NO1qHgNnBkWBFoOrcd5Jt-1(bY2!9we6LmA9tD&9YI3GUvjh;Y(g zP}@0BpKHPPu^Yujd_3Y-1}5E8*6=YDGw6fcNMIl*@LK#rxJ#-zIY~Pn=lK92-vewA zo@wv7u>B~|Gg9nME^O~d^Br<H2n2SsbQ33`N#Kqs_1~roKOYBz#(gE9k;o*R`@rAx z)CygII#*^|o6=;UV1BNs%WclXEu67{HM*aHR?tD$zhJ_>E`aK3k9p*5q8`!{?@x5I zT@LgKhQu3;GqW$-I%_+6rWk;S)-E*Hb7-(_Wc)b1gpNqGgpSHOPc!Pb83q40Bc;ao zdTaB%D$ynIfMjLVPw``u@j#c1jX>-h^tEo^_OCv`<b+yO{qp=l0ZWN~LuJDEPb&s5 zGqvpx5%?YG9RkC1*xyiE4_z-9wzWT=V_`GB0fBzPks#j7AF)$-DZ@zw;mKHsuG_#l zW|Nj9tA1b4o7ILFpH18kq)on69NKYdeCAG{jRdV8>oM+thh|t|X*l%UM%-`Yp82EV zIWWKZr^)8d^3=8uW$p6PRe_Q|-8V8$ILRAIn5g|qbRHYBPwhq$+kZN8bW}q9XJCwV zz>Xq3p3@uOFWJ5NKuT@>h<k^lk1o?NTQ+zZ@#b1RB%U$j&`$jfzMeF5sUHMlvK#XB zMxVSl-4!>ppMJKEByolySh%`8<QvmnP|2Kj>Ev7C#nwCi7os&_slP5*3ju<KAwR&L z2_d$Gz$}B$gPdRj@U){gW+1LJdb^#JeV;5ik^a+Xc(Y4lV|_>5j=itA{pX{M+{myj z>iEwht*Ixj@_(gP&--vVo69x_^#ZOb{BEPMS2>0zd{8D#uv+3x<;U1|n(Ws(hCbg` zao66lwVWpvwSpUe85qfb3<Qcg^kNJH(#ajl{8p~conB6?P(Q4Uqnk^1XId;SwsOTC zT*}(Lyw55iNy`@B8#zz&umSt(#;#*FPo4!)n=_P4260YZ8fOL-1V$G2?ZV>6zAGce zm4MD3{|R|v(n7<B^oIH8C6b53b*y9qn#oWeSTNxQkSX*t@@~Z!n$XnHzew($O@M&l zJ0(vSgbEHomt8=UClHpLUnS^qW_)|=`pbzi3dXCwQWz(G4WmKiK7JHGq~~8>U70gi z(=Qa@Nqmzx&~1lTdH6zkth!@BIr6XP^=vH=m>l?sef?gK%ec9C&P&7u)&&zMh9BO9 zV8Jm#|3Jl^#_#<+>+<msJXW}cVBx46%F4rGCq6bL?Q<c#Nr4&89f9iiI(G}!rXTvC z6)cb-^$pl_(-dA4oTuLbyR=ErJKkL8RRh-Uhg0ahv)HJFfMzALupOAfy2S?l+lsBv zH^1n9E3onPdJIjhRSR@?8dtF}&PMj(+p2nIAy>7Lrs}C-*iKi5v(Keba`<HJW$^t4 z>BfIRsZtOWLBontAGd*ZH!BO)d*<Db`&>66-8=vkVyt$a>2u<TFH~~!1bbdlBMsC; z25<H24D}Ihzkd4&{Qa1D_5N`lxYxCIRK7hP`NKJ-L}Hc%i(dI!H`3fAr})@N`RXK@ zqUHer(3Iydx*;>|e+Hc68}Y4<#9BJASpHqKSFk63Qs!&R`R7)@F4SF@oK1WTcIL!8 zQnNncCgkG)%%}Rj<BDN?=)V03V+c4MxKVdy+uiYK1Mwm2xsc5Oix(rt&iRS&111-$ z6t(2GNC$mCZQ8nHF(>b~1JED;AVblE)V^%|cX?AdXP&g*hhC&%JTTwqGm&}U+u!T# zUEU7v%b3(w;{6OkYvtaD%zpP4zSkYz=QUCkc$7tlH9Vpg`5a5NJjZ(0@thXWzHr%x zhtq8iwr2BC$I<WmR3ScZT3C3B?U}bH#v*|73FVPs^CVP}nWABe?dDn8^_=z7w>_25 z+PHM~Xr0lHv%EOc8E@u_ABHt@8mw0_iQffrvxLK8pWP2~MR**2?<IwH5K+$1XRq`4 z68V{qFkel1_8GBRcBshPf6&0>hgx;3<Y*(?lT$YM!;*b$#_fJ&ezlLgN)RN(^Vsb4 z%cuVuDe?wLh=->1nH~Q8;o!m;2<=SAGBhg4fza6!5v1EkB-*PC@fWe3yB`GXJFo6G z?5gXn6TX}M4L-}B_)oxQ@&=RC>n>Hx{s;Hx>_5E*Jh;JBO@t<-zz6x0Nh6ejSSEvm znue`WBmXNnZ9)-!X%S{}FQK=ezZVbJiOt@bYLo_@vGE<HMrcN(nByQgaDxKAOoOer zfg|^%kg~!BQPJ$30b(bcJT}=lo`1=QFYG_W_c^%QQX_eV&KkpGH-h;fc(z;X1_6Wm zDQ5u=yTC7phx^sU1g(Il;;Jn_v8Sv2W&DcQ?w0EU>R$}IV?hNm-vYSitH}y8n7Ngi zPo5mw{g?ja1Rmxvfw=jzW!LW!mQY}R#|bDhBdI>G1iqb+?z|@t1wQk)8+1y``sK$) zuU%_WL<*^0Y1@q`1%M`>%V$2A@yuss01I2>mA)bZwLq`GvCN0Q{Z|YVJFi0p;*{c@ zDyzy+bzx<XqJgd4y4^wB3kHqdI%MsxPg%1dUf{I*%t*x_!If!Gg4yf7*|p;eZKp}K zzwzzP=p^K&PZz#lKD!U`dF^=)Ww$^HA5X75z;gQ5`E-HkszC)<{<RQihwy-=wOjOX z0*z(9P2_y;B{)sFo#@2dS`Q=6d%D-|Cz}X8_kBLyI9>ZXKLWu%SLJ@fQ8A~@tHEYF zY*LVpG6{!d_hSUD^d87vec&3+B)&~Yo)D9YHG@mR(g&o8Hq6Kyb>sp2UUE)3Qdz2N z6G0asWgEye$lEB-LQYg-fdF$BSLqJtXje4T>2~$B3msph87vtA@w;5!oo9|V8<Bnh zKFKn>#rV4k^dfkl2g2ebdqD43EOH4G^dY+I31^Z`6YSAyRZ!#gn6GR5!Upr`;PhE8 z{|QKZAG&NfO%z$jNvEa6J>lhJ95NDU`*{M|?)?-N@UegHhbuEbLX?Iz5~*nz8kyoQ z2}QxHPxXH$F5S6fI1~*y;WQf5GHTA-c^|NPDNz!b2nGn&YHoU6;`D(uR_+4(jz-)G zWIO#oZg->-gdyU&ipi6c_^t8!Zieql!j5Z&Hyk%(uN(|YZ@2D<1b0%wUoU6aL;|S~ z_o{#k?jQs}ms8M4g--TQraR{H?S4eB1v<W^e@pcJ8O&D7$9FI8K%oEOA3G^XRCaiJ zjd2;4&|Impn|dV@&>Lz$Fxg1^vKtkA3=Y-D=HpP@j+Fm*hW}^APt&~d4!HWIQQ@b| z1JW0Zi<*E^f$4ZH`#s{F&(^m$;1QAjSqgQAJPsdC+?fAU;<)f5lXY9@QW5gLz=U_x zU=q;(q$m;Xb<RjeSva%f2x>ff{H?hV+gjsEYt&OpseoUS`onF{uRuO1pk6jkNvnLV z{%H{e8+?}f%kf|;^>8}#ZKw+9#IJb1W@npjG<k3EL$YX%0heH9nj5JTb?tKAt&}3t zmUjE?W9-@&&`t8%xYP#%bEeh3qWI=}_IzS?4cfeejE2VN5mC-oZrIKr@jvTN*#f4@ zT%Qbs=R_Y)T;}|MdiWYkCr(L$Ck~ZTF>KVs=czE}ywMT;FMonV10UDKf#^Q{Mrg_f zKEuarv}>n#4I2d(=Y@QIFJB9J{oaS;KQBTwV1jK|d0c%=8Ty=$AFGR?Q~T$Q=^<8{ zs|}gV0=c&Q!#6*(x;wiUR~V1`HSu@Y0=&+iEv^=J>5YM|+dIMQwa+V~9^impuo6c8 zz#`Ry9y7^<>xq_-*GYc*lnFa*7OIY0BOP*{&YO7P#EHMt@cTO`X^Dng({_vEIr7Tv zA#z9Q!?PdyA2l9f_CMP2d3f8TVDx||;O7-;F!KnYz*D(lkx}a~ZX(tcUsYpo)0;pE zXgVpVFzR?M5Zc*s&+FGm1Ni`g?}eXUJHbrmXK2tXKf17A(c_Hh^(#NW6!?2yv8^P$ zcxa$@9r(5O4Cp$vsZqP;&a(tvErRlB@@9Iwt$35`zo3AbLHT&q=i~O;2RP)}dprn0 z4cIllo^99(JospMX`T6e5Ck&6LllKBvKG!9K&lhXe$FQk7W7>PlJ;=h;F$|bv!M>( zag`Mc!oDD^MFu9!f%<ahK0RSyB7rHN{~A(0mzY^!Qv)YYdY!&?Uo(!sQp~PlWzS=^ zb+3#oCv$Lq9`-T&J<SN;9(2Pmg1j#eiLf6p!wiqPmFU)*|N1rf1m1_iaJA>|-CheQ z2EJBMB@;A^_Bured9wZHO&!Y@vYP>71%0en;8W9*km>bQpC4MHcLEjohVl;Pns6I9 z9j$rpkE#+sjZObutO0=vZQ6=K!s)%;Mm`Z^US(e~*s&U^FyG^cJLvUo5ftc_Vx}YZ z`8xUEF^sJ?6I9l}-TzeZ>GQeX8<xFfHXsVI)JM{um0*HBqbK|<Ps($Xkg31jcZST( zXt-cRTy&&reKKo<5=<#dB|B~`{3Lrf1kCJKTMtnzV%PAY9~dX=lWb0Q{lrCO{M^`i zJ=s1fQzFE(s@|PBL{IX}jZca1UAZ=XJ7|J9xuTd|0xAU$F+q$NfDP#}-RO4Y{2eRY zCJ}wUnpky=7U3ZkytVj&5gN!<;3UuxF9vbV8(Zc)!@F3&gMnQB?t;Q~_Ac~ZsSoE6 z#H`(9QrdY8_t&|>YSXVgiTU@fxIw@#G%e=J*U6y7FAk`mRHsf!f_esBZr2d5CwtcI zeH8f#X!6AgfjqzB*iWu2D~C|87vEql_3h8E@O29+K#-5P`PNHV)*9=vKPXVO=3Tc> zUvx`ycbX#V{CSO~kBBDFS`MYwH(BZPekbtR3YY)M;qxS0F%v~oiY2Eo+fu)u1dV9^ zsOo$c>IOnQ(ujC&y)$oySlh7wvL1E2b^f1_Ix8Df%O)xKdu?jQSH!7BusWrM{m$Nt zW~%t$pdcjGd?Qd{k%cDi4|03-<4$TuM%@H*B(%n|&#-rZ{0MlgZbdT1P{2RkODeLy zoPEX@Q@8>aIPok>hx45O%%}JAZ~O+!=TwS5QL~PtosJLiE|oiG3$fX63g~)-blIq| zZT*5Xod+9Z4w~V*4ERIav0%eD{U7%mWWSr%Jwbi%SFoSgp6^?YGuP1$=|Y<SPE z%n0GCggyI#JjMsfOGK>#rJVg){va)s0D#gKPz{7y_bE!Gmx!487+|Dc-#!BCB9Qm7 z<0;*+=Qv#p^O9eA!sI30yqfxEQNg?HA2yc1{i!d!6Z>7V=R;v-S}@FcfOy9EaDWt& z`HQXa-z#15oau`U&V=ljlSvb#*a*3)Tx`f&U$KHybd0cSX?wajhiHgZ_)~Qtx_b@~ zH~6B^ycy3Ru6NMnOpbyZp8K>ML4yU}TV*>wr{#-B;$-az*)SF!H=7<7Jmk9~uBeca ze+6WVwLNa!NOfOhKX1lRd)eJS0CDoCcgOqCQR+7>nH>c;?#-b5K^JUyug9ztVBX%s zZob<w2+06wkozmgSvc5Hm{}wMC*PZ!;Ie>1AoZ>PiwG6+%otloc_SULgA?5HM6-Si zcu4vb^4Y%D_+tLNW8S}5RGGr*23Rg>!Qyg(M^n(xhd=$PHy2O55Z%voe*ngT(wA#1 zJJv$e`&pM?ib|*t^lDC+!ZI<lwzc0^D6swH;MC<k$-tDOh#^5n?p1b^K4%Tih#|Lv zMMTK+DJ<0aaOxRwa6=k+c6(I-rX)eN7+4SC^FNhiMWmPK2ZDPscCVSqXuuLfeXjS2 z=XT4@T@I7Ob*|H|A7j;vwq<UK54oguaemjaks#?SZ{t(Uz}CQbGbLhD>^f2{c-99* z%~Zqx3O<~b1+Ur!)@YS2Tx9$n;H%q?CnM!cZqX_>S5%}2P0NH`X5>WF$`>_Z9p0G> zG-pfy6?Kr$aM3qYPkM2gCl6Bd1;}y)DJXZ5;5mGekNztp-F*jtJOzAlYj1kc9#wC8 zklz1mMXcz%I-p9l=l>}_|5x_;|1CL$i1s;@H-Zk*B&ahB<))%769eHw7t(J3XbDq6 z_!n(p`ez19PWFxMAx-7hD7qg_MAnZy7C|rCzJ;4QfV4fXKiZ5TfAYsOAyrzp>afH9 zwRw+|%GofA0Om1XKy2Jt{RE(<gTE?Hk$&U!j$LERBsbW!J?177ZLD@w@5cjxu0M5R zClykw(kpMDGtP~IFkjo-d(uqytzT?}7rQ$CLtVf@W7_GhEM)?lAW;;ph2B!3NZpIR z0L<{u!cPq%k<PrdNjpD%;`;iOeO0*qL5k;Rj{dWB4ubD|Q{a;4V%R|Z(J%-az|RQ7 z0a{TC6NA`YK(QxDi{>vLE!}Xpx!c@0k_KUoEvfQjJo;u<Lr53HNf4u9&8^_jFv5Zh zcC_kAhjpnd@ff${o4-D)YHx$&{shuW$uCd3%wNO45feZY`@=Su-91o8T?{k$F*I>Q zox&!Wi5}@ni0Z9Vl|GP%jGTmdcOS?^vZ+NaF{%qL+2d&2bFj2nXP{r<tf<kc8EqyN zzasgpPjA=TwBrSyUVY_Ri%Y9fUA_6JfMS2vmCh$yb^D>NK{5W|pno=B{bP2-$=t7h zRE^<Ul(WpFhM;)0yo=Var@_Amh8&|k^_G0C&_TN>F!ZW&6JCuz@0Jm5xqSQ}t;*D1 zGG}hTM+`70HimnQp!%Xkz3lbamGRmbhND69qpC2l1%Y{Au%Q}I&lKbJc8fO#zyc$^ zCL}#_yd#&e_%<RSs}E}nnJ(NXv}9LSpB)&CB~o2nOt4dXTT0E8V)<s=vhUgD8oUPQ zpp2JR@9wWbB9W-YX=|DsH<EcRDJ^;Kzd2pB?^_mAenW8mK78%Yp&EjLV*A}5b6UsF zfcFy&PL8gJG&FpUn%0EauyO)oi5^d)8q6l%b;$)`+PepCn!ibaW=4?do|ej*ctHBp zl?rAA|5#&k6->kii;tEFysQjr;`9Y^MO6!HHhM)8E%ylkU4(^RJqmzu@8R{UV);Ib zSG$bofDS-+@nSw?m~>5B#xs+%r~^RcY1?5Wt;;L#eme|dI?}d_=Rz1(pv^n$9}%LN z5e5sa@{>^BpUkOJ{;@}J{tQtkYBNDN!yi5ts$##<7yd7nSl1yILtE%)no9png2RUQ zT0HaKweYR1W<taKJ+ECT`sLa`_mwW0d=qRh0g7uh_?5l|NA?TU@g}5_QM=99-59DO zBsdd8w;5#);g9RU2tbXz!1M0A-$TPk#3R6tcCO<)MJ7=lCl~7h(-^;!DPz>^Z+Klh zO3zZRDJyC*Q{?Gz7acnl-Q;8ZW!>DSp3}&HUx|VH;6jgC{l`@mB+_@_Ief^L3t{E0 z2QRc!rK|_j$rilvEx|yNV<Oq1luokF$+-#BItvy&69<g?5-nQfk~y?%!DU^kk~uE{ zxv!Utzw6rF2_(L9=pQFfmPE{Z9S;$`=2AAo_30C?<LUQ&*0FvInS;3|hTyqYSuboA z^?Np$ZAR%ajw4f4!>Dobo_6LL#={g=8o$pKm?<$-DI*!bCo)rTj))_hWRnoF3sohk z8`6$>%<4v$O-UMd=mqX|VV`T$rBDu9;Pb#Ahs5ks{YW1f`QKguTI30wDD=b{kv-Wu zm}}ZuX@;UXh1<>{UBYQKyJ7w~c)nH>EM327cTr)PMbsD$MHaabwUcm4+25muB_`!* z<eV9r6eHG&t;X?Y0p){7<ra1oe~&m!T>4~bRP3`aS=!CeH)NAIL}7R%Nqw;Rr+(?= zmUVW<v$ODZi507LL3$m`A{0Cy;5JIRy*xqJci!0weMG~`tTQsLwS__^3QoQ4Bk6fE zncnAyGcW_j@6hZ0M&$92#7W-HLEg8^lREsazrLQ3vBOU$3W-kYX6IyAhI7eQ{2Maz zN-HY@Jl~S67<xh$csmOlJ<kK8N+~CbEru;Jzt7t0WoRz*I2&iBdq^+OWaVV-triV& z#8b_<rnCf4vem-D&o)M^Y052Mvu-%1#79h({yVYfsYSWBiL>~1*b!AwY`iOI>E?D- zN2sGwcK%Jn2_(^6U7btQo(1#Rn8{(oUz7Uw<A;D0i(qKT3PFhi)VKI~@OuA8N;xIN zOq@hb0!*jXn@)(bP*^o^QKP<)oinP74PSB|-`x8SIODy}n{On;h#39MSlPIVK(VW` zxA=P!mGDSI?X*7ACD~JAT$pra-iCRIv_?rDX!nI6p>0j){gMg}7=a!IK6HqvMB^G| z^pl}C+(2pmd603qoC!8)o_0P+#W?*BZRlKAi(hPJj2)AgvT+MFD}f!ysC68Dkd{dc zy`V@5{B`ReoSoA@C-iYJN_&|&+lewG(AZfw1507zWj8`XQ3Jlq%PZPOMio1RNz{r* zmd7%wVROcCofTWwY#WY%^m2Zp;&_WRD_Z2spRtdIxM}2*ZUpf#-WkEF9hJ{egYu0i z9JJxAyLpgva1jRG^?T_JAFy$EBn2M_G(0zpsc}*iwX6p^KaSWWpi);)CK6V{m#D!K zGVlBZLmKz`RQbGq>qdHOA>`852hJfs_~P5y`DbJ#rdr`|TMV*4@pj%9y5n`rbXZ#U zpq6o3kI*LW(k1an-iu`%?=9b>9P4vHAv(`n=Opn*7c$)DW4K<A_tMM|7Y{@yuDBxk z@saG{VG@DWvCjRX6XiG5OJ<>2wzk(VS#u6k6&osd*JUJ-jqyrM4AMF&G40VkH~xk- z>IVh*gEps|36r53j!CXfh=dsC9I(A$&-KS65l};7WgnKvOYflY(y4`Uz2Q8)=Orp1 z<5`yM&`PFAC_{7~rbiv{=N_m!YnN=m9wF5%+Po!37cYyckYb#Ir9#gFIciLZ+|pR+ zvFM9({5tioEz5@MS7XFw&W66n8V(;ju~adypI3UM5D<-?kZqyKi@SIsA8-?F*0C2f zy^mwf!4gmXa_hlY`n}B(&2^ZXNU%$e!N&P-+ogF)T#4P7tX1|DSI&2ib;@RB%b!e5 zeiv||=@vLY4P$VI3cG(~6S&)=UD|M{ne!ZsuVc`+YUj;f*;_6=$@6&aqP?(COopeY zGmT}gtO~Tl*9rWKFu6Zc^n#U6BpzFbnGUzhNt7D&NC}dagTCDU9ih%p3vub1Z6lYB zM<7))Y~o=~79VXNArXgwlBtEjzO(wEiG?jmJt*HWUq={n#qrzjAZ=^?5K7JiW3gt& z{#H#&>S18<*{RHZ<b1)}0)pi{hDN5S6avr2LAiMD#ES#FcaH}~h1P-=UfY5^ieQ%d zN3NK}o*$GST>xP`I1M;h?(P=en;VTe6YaNS$bne(N_lMT&Pv&8HFbD_fRJ5qDgbYe zIm>~>f{ccBVTvQRe$V#dHNwvlh_n4kqcn~-MkEGeFG%coVLH+I67qk<V7)B;ql+yG zV{>!!T6|!>;PX_<IdE;+#xiMuq&ufNi1=y*Ckb4i3L<qd4`})XMU8RR9)>J%xoqBT z%;KR(a<8@haQigY6BN97Hp91lLJ^yY67*2R#7@ne2t{j8J^_zi7A^<l+Oj!&mI-!O z+@7NEgslAhlk2a1qj+}$W7P0JLgp%F2W2FJzRzCKiw-*j<ed&;4ERqUGhQ|l{nN~( z6Eft;XQT?TmtmYbd<?*ATL%$ikL}_`vml0%J13p@$*HdJE%0goEno8g%F!zn9zS`C zIPjjf=J+OyDYX{Gp*S~cTpPcK9lb|N=0+i<gL4%sFm@Q?X~KlK{9P8q^*98UiDd$E z_n2v0+&cl7KXtgrS7|KZ;}T55IT$)ut(=BnrU0eRX+leBLy*8QD8jOw5oh4?=<o}S zU`}tD9*>?2K1hHFWt<AkGKKOR+f${=TqPXe<ofR4%-TQJSjZs*1X%fg;7{bqo{I>X z$C$OIE+``(5+O`z$!OWiqM`H#CUt1FDwS{-@sz(6!mF8=qoSq2$)gg186;yk?xl_P z*(q(hls38ql_cSKkP}J1gA~T!*L8EDC=wR;)g(<ZarkmN%<nCKPPMJJbq;2{Q18P$ zMEYAE<H+jfoF;^gkp`x;ic4oH<#1rgH*f9l21B~*I(#_{$F`)Yy>9>7NX_gd<Z#N% zo980P(mI%bQeqU1NHBuyvVSuE<=pZ`I<QmbaoLS&{&Fb&PU@FJykbZkC**Q6oHW&T ziyZ1TX73Bbxna^OZ0uhrA3{xtqGNFG;%AY!w8W%KXKA%gWF#cjJ!c#ckiV49+0uw4 zO+jGe3`PkorG~!#EtPx*cA{9P>@CH>s(ttc4>Iw_tu(EJE{#&skn>Q+(gSz`#z#4B zPVraTQK2ryE0I{N5Oh@!rkrtAKz5}48d+w8;y;f|fK2cP@=^6+l`%tqJXf#>h=U?8 zBd^G=KNu2DXqcRR35G>Ndu3E&@$+T~-IR=@&Z<7I(CY92?HHQ***)$)Q>f=Z)iLUt z@I7n^ia5uFYbVbj>!@K!S*X_mTA4UzT=zOA<OsYt+IG4RhW)Hy#i%%OPESz;ng&xi zEcQb8@gdr(zj$MJ!4bHmLCs)CU>|18+L<egig;;q@}2&BHn=1ubCMSfszI#7#c6S7 z*{s_}UbZ76Ng_p1kmLlc)p6zV{aWeY>Qq%n>!{`{M@pXsV1xIZhjrU0H_LewNR3P! zEYcS#?G3bt4|(PEUVDY;p|<cXD0JhgrEG>_CG)B2M#EZd;|A%8gI6Q~9A55ndMzl6 zFY=Bba&6bS$5oJtw||uc1`2m*8tJxQItsu}ETH;tbX)83dZA`mI^d}~e2fn0!tB0d z2(TR!tr&O;j^Z`>4YQo59^;qn!C4^bT;W;p+LVYMiT#od8no69I41JK6+CDAzz^b_ zT}CN$N79O~+TQGho5x{h3d12s(_^;`sD+nOVD;3kaW<$BQy&IOo#R>7gyqDr5JBy7 zW?NFkKLq0Zp$wLzA2W=oicuyp#^mQpyX)cTiDxy}VNq^@zqeB;d>xTKEJA1y{;hV% zN<U!ebuDQ<E%Dl0Z5OJdhS#1yOz<ZSZh3W_{<%>~(<JYl99I%HqZy8Qm4i%new;-H z|3i6nxCd70Dm0nu1WyXCR@_*dEv@53lg=j;eXLttqM{a=y{B=Cs`>emM3G4E*m8}p zKlCaaFc4f47a_>yU^{2e#pCykmV=8U;##}>Y%*FXTsUWKl56?XGJ+HT=46mYCf;JS zT)(LUx{UbW3rbEq<LpeNyH=*Py<?--KhB4Q@2m^<N$vzuGjkIqoHDk*o7v-FAgwun zb-NSlhMBZSjyl_W$EPm|g{mZA&OABjX&dN}5hnb~$t&78pR;bmvk>RY;~E-d2~%LP z4$IOE_2VhDVbm139A;Z_OrbAIx2=7mB*?CkM6b`B<2nFebH09w!d#B#4>n;=1&ayG zPw5hzo5We8?Y5_2A>A3kL^r^9>&4u07}$^WIw@5tq*t;>Hq1?wg&s`Nk{hGMGj&zJ z8I3hZEi1=^$~r)ymr+U3qL(#*PJ(SHWeYGGj*9&bA^1cTt71o}lgwIHPdBYH`-?>g zRqlmtt%Rq(9?v97VHg)tTojiqO%5g|(fGJbYzy}VKmVjx`bi{QyO>5fP!6jYx(vy% z)8)*J6X(KTy~oz?GL&DiueOT^obyMMNj8L**~rxD3EcT`X8x>slOabXIkW&tqB;gC z_GsnvJJ05~?MOSS5bMM=sXQ8>B+tZNPwZHv08rp=d`RG95wldP#BFST&}?dEisB`y zoYnexTpwk5_l_uZ)Cwh(dd5|PSK=H@#yg72iZ#O_u2|SP>V)NZJNb~}=qUT(C8*47 zEF=Uh*K_aZ3ZPY&vhqcS9n##J%Mh@i{3U&{u7-D_v0)D^@FrS~e?<0w?W8rDM6B;X zxIm+^!%KDXv%$_pEHS|yHcLU*$=JJ#8@6@L%v@;z6B6C)$<c0LQU#D5<(Zih^+xgI zx@<~7c;T11xELIHCwL{wrdWr0@7IwcX&=iEv@Y)(@Nm~*$(oKmv>|w7%Y`e8$UGpK zK!90bmCV5%6U&x}rcip3YC~ay>r0k@n=w#V6wB{U32EmlT2qgcniKggYom<4%}ejI zH!c2<A8V%)CM6fabOv=S$oDbL8|jH5x>ZPtH{sp$q?t3%qf%+CVEyM8oht%FcXBCC ziH5gR=bzPLV-tOa@9KqAM`B203fY>hKq<44LU5Xdd?Zm$GzXr(?TWlo`zw1fJ<0VS zyv`?dahNzqT#XK6)LkW9i9|wE$=jlaUWY$e41BhjkdgaVXj+lgvv=7{CjD|+O)?4V zd!V=poZp^ZQgl`uJ%aNx4Myj8@z}b<dGk^pyE;UFw6#sWd1RVe9VJnW4Yf*?5Fj_1 z;F@6^)%VBjz4G;uad6=uc~0GXl714Ed@tEKU$EuUIrsQ0x$6Db!d**iJc3Nia&n&< zCX^&pMarstMAb8h4F^z|t{pLLf>x_ZDK)3SQKcx8F0uP0bHx&7u5xU!D<t__6QDn9 zVp-05uc;*>o_vChT}G0cM5DY{k?LZq+E@|Yvk+sYaiOI6E-hP!^U(ZU4dnUpK+qfu zIOrq)VOPwJzuyQGKS;|j<Tw??C|b&M{p*q^;r$F=w;{LIv{p^Y54TL-RlAz5-a^U_ z4zci&heMfUve2|IDB;$sjFaAxeej3EZzNlCfudq=S`C<@sTkDS;Ca4~%z8X#zR_z6 z#Gs_u*nvv9pXI-p$<KFtVo5S`WSna(mo>$~4E?g^1QI^uk1IJe<(%{1Jc(@K`X43p zL)`#c;Abi}npM_D@H$@Cx2!+(Ea&M5G5=774D;BSlT(g?1S~CKV|WOmb$JPSQAqiw z5F0vU*4FS}dr5TiO)x_5QA)6dfO9oC?r}A3*^FTG9A6YdM(vn$T9HTS9t(vhMQ)te zV0z|kR-VbHIO_d4MIzv?Fe+3PWw8r|Nf+#Cq7#O1wOIKXu67%@6Oyc5=pb<Tw+e|s z-FL#KuCA%J%X@v_t#teK#qyo&lHVN)MT#A;u%RY!WKn7Pp2;(+Jn*XKkE5JgK}yLw zwG?hetxOB~y<tRH#Q4b9qtSL4_%RTr22dsjf5GXFzR9NCf#@X*j=i%uv{)pBR1c^5 z<2dmMPkuPK3l#iL9A1~{MU>LZ1-g)gBp>M;OW3Crev81+x2fdGgeAt#3Kkpc5-8|M ztR@Sq{`elpRmbtqGL>Abcl<^xxsINQOR`nBQZ=y@;hU1od>W;!+}NPCc)o@C8trd- zp)u^Kq~%>fDZ1fskOZ!0Z(<-UJt|cQC%h&NZJ1@TwT_8fg)Bqk^ITMx=ET#8Hx904 zqvnaninh+RxEbcTIM3T68II@0!O32UeSTKB$*6U&bjh4)%d+HYTvj-jopeUWS&RXZ z4&U^IPo@BAlLtuP=jeRr9rQy2$&j7NMuy~aW`+!orLwF7ngjRgPv5v<)@CzAo&3Ra zuG3}3N{N%lZtaafSum*nA0|>m18F}k`D*K#79890QDBf@{aZrTe#DN9c>DB{EK}Bg zCmpkmMK7{ogc0?Xo+KcEu~dz{#jjGapvAn!b6{B?W^sn=j9T8ycMGwhs%!W0qeWFo z<-J;(PjrC~5vyV^Tc_x-Kk-(&l2)vkN~fZ%ZlT1sEbg%d@U{HeSg<JXN)TNppPmkz z`<8mF29=F4z)bfPf)B^)T_?unr-HzvxQAO5YHO;4zM;m7LyQ#ps{?nkA&%{^O)d*T zv2L;!blaz3@tOKJ@Q|nU&VU0h=28x!_fD@2d6e4PEYzf!qj>BE3BXq3BBm(XogVGE zba5YZ%aQP&D4!Z5A!x)HPbZGL=avadQpUFFp)bS*-KRqhhX|37j%BiLSGNmKvm_1} zk@!xH$B7dHQV3L3Bc#)s_V{ctKU*d1z&6^ZZZ){KWGc1>UveEA2%Dfil&Ah_#(tj+ z_55O=@(>>^j_zb0BcNIY=I7)X>}_Ro7_<LTD-rVy4}K{&ZlVnG`Q0asQfJ!KsRsy3 z^XYDQ$Cz~SWlb$HE*@Y(ZoFGpe3N5|Z2T*G>vo=v4(B-Y!x5X2i}Utevr>^4Hym`} zViGK@8Ai&T7JuvxugURi!KxcsapE|m)1JNJ03D{^%0lKD;vjJEaVNB0lC_L6)Jt2- zOl##79u!Q;RZk5FL%GUxG3_vNC(UZtGdSF?h(@V9zB(DhOO%jsxf0Pn%u}_gKn~X= z`ENB5rr=ddRa6mr8SR+CR6#VL_K4)f`XCHyl2uJL1e8Xu#dp9-DT{H$bEICWjX+Lb z8qMgD+z4awXA^6;zU0<1u0Bncz5csO_9CUW-Ea6(+40})a@N+8)y8h!@iP#QTLyX- ztEBsEBb%E7|M0Y=b)HChhUb<@ct+l)ENh$0Ly^ol-u+}s7WSSSv0EIz={EniK&0Ip zpA-LnwJGIm5-hGHII>@+hkqbG&r#NDgTlTNfn{B>y2d3xhO)5PCDX+dx!r_cAwU~R zi4!}>`|nuz{TuQ|@q%qK7surfxW<1i{NEWF=WNPKsSgnUP5o=!K2JU59STVNcgck; zW)U>wmNt{+z-g@;jxEjJXpyf1mlLKOsmgcM0LMg~?}J*tWZmCdXyo6z%r^f6K%l45 zn7f1z)>RKyoLwKwPd05xduH<sx5|>fCUy2+gH%~@xm-yHQBFO)t!}ojx@+<@W}sMV zUA;+htns~ANNZ%30iB4Bty?~+p3=1nZi>~v_IIB`R!}+XD9ixkzJD?XVoOm%gnVg~ z`onWNzV8;42=kLcQ2Sil8-I|$vbJQ3S~@mdc>s$$1c*h4n@RQWA`=5mwS}D-jtPBl zQ>{_~ZKS$cVqYc0V>-c%t!9uFn{;9Aed2k!v5X(5x_TAOqs7x_M_8&HvF)Hf*54Eh z?huIC))8yMAmY$gn~o<bv)bY<B$CzJL%;*9pn~mbJd8P0T4Qa4=P7CgoLKu##m414 zDe?&_EK;+Iet3}teJYt8G_{xnK!8J!QBzY(+u(Hm99i_-xVM|=_|AGs>&&*be9l^7 zQ#>5}8-`p`nktVAt2?LWnZ<t9{DY7Gmtz_?p0#i>Vb^P)X76W-Y=t)r)2xxL$@`iT zVt2W!<|Qf$Kh;?^>qkc=!$n<~nBy-XN@HBxiq|P*Q`okz%*I6|xoR#5Rc;*-#Rs*t zbI1p|W(-P~#}L@*<h%a7=TO^>N8-hc!Kbt$!HU<;#YOD(+?_;scZ|AM##*FV4B{m< z4wf#iqT$|R=6mb>tT4l`Lz$8_l+7TFq<jby#&kdF_(PVlj}<=0nx!+EC-I=&kKqQE zhO#pJl7wm!4_`(bM#)>p`2`Y|74fnPGHI#KpLoR8Q3@Q+RNJ4Uy7no?_93lBQ;Zi} zX}CZ6*b9++2jN&F9Iv!bAFWH_@AFV{j=5N;T&1>)D8*%`<+y@M2bI6WYWWHTctx8q z)&A^8>V@3coh`D6AZfeW9CYS^V6^WvhwU8%yTmpv?B!9iJLXEM%VCZFgGZ)id~9XX z7R-U1)5hd{(>Rvpd+WinAokBaX^AsMK$=sRNbjua;n^g+T(%~8-nL9XaEp`3NH=EH zRC`lk@^u1(ot=@7oxQfUwy1?_(p42am3N*J{z`<ac<c96D}gpqJmtY}%26mY+6?m} zCK}90tv>Ux<|(uFx+gsvfpcqz)0hti;X36R3$ghKN8grgL}o8Yk)3BxTk_M(;cSl| z#BK!=*Q|sr=*$glP_E>KnPgEeP1y~q?`j($xgTBX*2p8~Hc{$lMUzwSa9$QV3USA$ z5St}sdOk<xEGQ3naSV-8b=9>&_>gYl`zzS=fdsSZB<zso=HEs=&JjX2_n?F0lh~4# z6DMIQ)Qa4f2JmtW`)-;hV2G;~bmLl;SW&)H6=o{RJ(w2*o}C2iEolkzXv0rz#mut2 zado09f4i&PvTPged5h=b#=Ly*ag9x2#zZcoPq%9^ZQC;4SiW@cK6m#OBndcBfzg@v zX&;-vb4lSC@t)CbCmbcz$u-Fsk(*>$k&`cdrJ|%O!bgIoB|cm24n=?8i&7Cnh*yic zHNMq0Gh<InvZ-nnGbLB2{mYh|jj~&%c=N}8PZ2lmcZg+n21C)#`Te3AERX9mT(4o~ zUSXn}SbjVnGHhIgxCGIfGu9te9ZjxVywEPDp>JeZWpWuzX$5~JWKPZTJH^Vrt5h}F zPYoaRRRe_$O!YL!u+;raL3uL_waVkH&O%=Qme<+b`YOFW$ywi$0VA1zT`FBt9C>K8 ze2z7!OIf_q5O|rVp@$}3R=?F?yw-4aBfwibvh_$PY%>rwj;~_h8{}Gf*QHWsJdf1+ z*vWh`#K>!l)hU?il<@Qsa4{1x%H(($>_b2pVoc7~ud&aRvFa`6#iYOCykpT>!A~&f z`De~hYG%ket<n92cF3?m^vHR1{?dv_PuHS#L)w$iI+Yv`rdazgk@T`Jk<KNn1iN!Y z{zC18bm=A6n3k3{VJ&;VNAPC+ugfXt+V+qc_UyVe^ETvW#<V#k9|QG@=pUT(V9iyS zNbUAPc{zjb>m7&KU1J&6T<b}88TmYN)fji*E9PWGz2`YZb6GA>e-m&NA-TG^kdz_A zqLNa}<{&NmxW`$zRYYri6>h1gsLEIhQ_Fesi|AP2un;Z5`4f>ZBND;;sxb=HLJc$A zjtxdLN|sL}b0rh8^kR==3A)zY7QPIfQ0=}t?orc;Cm9m}l#8!gNG0o`2W+P2>-{jj zixwJ0Y@h^=eFqgY^{h`Sj#3c=HqU>BGNtDWDTGn0d-MNpTuEe3#T@%9*5pzaWLjOb zt)5ex!pbu@jzOHDPFWD1(>?KhJenAS{%>OA1okyVDg_zHag#F+4Ru8oU+24UDniGr zTxxUDq1D9tjSWS^LtD}QKip0*AKQTHe^%vuhuBo!w>)ItD1LiICkWz&W3s6u6Izn0 z7E=%?I-@4XQhz1%RTbN?5Q8$r*X`Z>9?_XPFEDaty$+&jl=0$jYwPMvQq!cGzfeh{ z=&!35fkCnHFV8vMRBB}Xj0FX8Yf3kYgs-LJGBLkRyWYWeV^2%mq<B*%8@wC@V+H5x z_yrFxTOyUuZ8fb+O`4v@2xS}82*(@}3@?`~dg0FH{f)TN%`gBqE6c_#RqDpJcee?> z*D=#RZSQWDQZ9OUQ%2)Sa8?&!X30$-WIoQR3}Es~_b`ZS2D`8w6TlRelGg3@F~Sis zx|ob5)N+Zce(=3HXw1^M3cX^{lpGq0FrUyi*uOdOj$p+pL+)dPAw3_cLutJoCh%5g zu^o*oLRf5NwHT4C<bb2{Uk@{<GqWFW9xq`<M{Xo{6Et?TE-&=3b}WgBA!?YYEMw(L zi`NxT34`J>3%xyR{t`oB$}3X5^fq0h760ldU`ArA)#s2;H;^wim`dg0PS}HrIi|s6 zOOr=*-AjVmL`Z0T&9E8H1($nE>cSz<<)=stsg|-wUL*<P@nK$~u7UwxVVd2N6?1U1 z71N?>+88EbCJz4bA3g;oLu0E=RYTUl7HrC8Xe?Y@BEl6nyw0j<ZbH$k`3Lq?^1`N< zy(4PQljtt?kqpJ{Ru1Fxy@*zfhFYu|^>A6G6UpAmkRr89w22?rI`1(^0`FXoaJh;I zV-APLtT)hber27q5Il~<2(~dzv257<UcO)biHTU*Gb7e5xqUh64UCf#Cy1Ad#-|>g z&U2&WvS1k(vq-ovdYD6OoArZcP@|n|TB7xV9Fg_DS9j`gvA1n{DXd?V&!63O%+(Ia zZsIYZ-%?BeGbu5;zKSWl_w@rvlftK9I-d5EDN$zX3v$yt&5<enlaa<RpG|hhd0(Cd z^YBzk>U{SjdU#oj)EII{IueZ{@hbCqrJt`07B)%qFmpwMHnd8Z>P1EjvXNa#oc8L| zJiOe5@qu0Z`kZ7Z2gG;O!Tr`A3>aPdRocax4nUpw8Qe=Q5AZWqD3wb-?KW`LbX$1N zr2@6WmFwoFwwT5YSkgC)O#Kgt6!A#(%i`d(#`UCQ{Al=e6w$^t;~+0lJ^7kBB$0Gp zju@%zKQaT}83{xtlWoKt^I;N%5uu{L+BfH}fnxYZ$%(8><*iZwBIetZ(y#}NiO$27 zL&{qc;xt4FBU1=UIE8?<Obx6P8KxC2L}}DB&1_oYl$3k;%of*>i41FCBOO>8_?*+K z4F}2!knXLa#x5iy{gV2fV7VcEOa!yf+Ct@V^p8W<X>-<;!OP5i)uOU>43bj^q><4v z^Ib`WJbmpF)l2vQ)kfB&ZkH^FNB{4KEnI`Xk(f#uyiHTd$9=V6cbyD**cukF8jEXe z%X>nai)k;2<+FcD$jk@TG;t2`O2j@wIR|T|UG=Z<coG}QRw~A~Xs=3&846_=lEAbz z37-d$P6v>J!wkuElf5HJA7tyu;%kEr@-3ruIGFyo7oa;_GX}8bf$^QeKQcL&<~35* z9!{ra0V;I%Y-+v*eiX4hoy}F;CzNyD4YBkRIs;`;p;@wf$&^b4X=Pc*$k1}^kEPVP z0n<hs@rM1be!?`{aJ=z7PMi`xv2em^%Xl13mQtfb>@t~pi5_u^RE*w?j$qrAHHQRb z-jCSUR*j5IU454k4FN76B9#cn*jOR~_aG^?=IzVI&N<Wb48~gF0Jt1#YnNw%A^LDm zgk!c@csW9;&@c5=oMxiXbkg=%%m^x#D|EtTu)f*s@RR~=L}*;nlbLreRxPF~qx3AT zP_@NN&^y#auI6sh<#oZ4WllKYZfC#!{{W#tUcY9;^1E>_<j}xle50u8JiM}G=#1k6 z6JRjzE3D5D#H(|wD*doaFXj}v3Q_??wL!bs$w~t?QTkTS-}D?8<t{2@v?^U`9;B+> z+$!DXrhs}Hm_uHIKV_Jv@X$7zn^M7-o!d9)AFup|musR~Pq{ytNDQrxx2PR2>e^2* zGNLCk$TF6Xui$`Dp7ZddkJ29uXtdf42E&lS>RgCh#<*&lCJcrHI?Yy@!ER!gIBQJk zZq^Vqis4{@cb<nHe2{j#6MET?Mp$bY4F?z<4AG!WW8zrh-Kp{Y7QFYk?qdRub9qSm z6Dj)(WSNV}Wj<cl@Ly_@*i2#Eoz8hdeC$+b#-LqoqEd{bXd{dtcSx)no*Nl)S(cTt z_5!R6@7z~wxGVAY+>OHxftC*}Mo~3kV$FDn15<jQxp!p^xHcw$BxCkyGzzV53*#b5 zEIP(ZONzY098`_SA^~l3PKxoxWX@=06g>vY9t&#RBV(dlXKZt=EBZm(P|u8s22LL9 z*r$x}EEhx!_z?+~Bu!{ogZ4$v%eYN=FqDKOP0DpDE|1BPjlf2VC(m-U3N*5*^tDig z3Jc|ev698OeBv~{;Q%j|fp=Jw1Or&W4|7^+!luq<5-l8C@3OkS#!Rz8!zo%V%eIB> z?A)=1V@Hmm8p2hVZAP*ITjsZ8wa`yn_*~QNt}=i1PJC*>D8vCSNA>!cv_Z2oLq5n! zw#|l4cm_0iXjJ6|uQkJNmnZi>h84vi&jClXnbKYF^7vy<(rmUkcH}6n&I}$!e~_`X zv_hlRq1|q>ed`tu{{Ni4*^(qjnx%Jix5eEfA`_?rs=BMEyJr(ph9bP<Bk-~CVtfUP zkh~b7a7KEs0+5-A2w!Z`l^4INnwm!>s$?1xQs_WNq%Y>C|8mZE{`ezeV$edvxdpu< z@J(bAT1v##A~Mn=M20M&4S-PSOa~jtis*bmNIZAywabi~COoCaGWNC`uL|L`KWx9+ zt*5_0T*vq0*T3|@eE$GUJ0Cn_`&59f3uHUbd_sbNcr(gwX;Z1C?%nyrS%Jeakq^;W zSNyCIl7YP~V*XsGUT;!JAZFF(Q)lmR->cy)v3DXZwqj>{|KeQ$L)@^nO{fhLF#)6$ znNWoWUXq%FuwfpwfdhNHL32}L?;qIBJbep<X+sa%!YsX6W4u}A>_$%5)-G)j$5-Ez zGIS3+(cPOr#{d^1`f&v3n+H3@h;_AKOrSFwcA2w9OJcPPl<E<q#KY-;*Vh*eeUI1I z3+?U8PBlhE=OH2BmKDi+ELRfVun-VafMCdqWLjHoyK_2tS`iuYfzi?!xm49!7JQ%s zq7-UbS<f^b=3EE}K{h?1=%8Kf3Z_Kf@smC`2GCldg!wdFbOurHC2cp`cDb8~Y_q4e zK$iB;fD@P9JC|))S(lLyb}2OFFgVv-gY<VQuJX<|?mqu5rnUIf>2cWn86v-MWvyc? zMx1lIX-~PfLo5fLg4U*zCS#0PmIWd^3ChmgS_`QK#(o56z-oyJ5UXOI+yIi(3d|@2 ztrgu{S>_fL>Rv*A{wZU2Sta{{=l3}O8J+j!&iOpq$u>t%LRrf!j4?1mA$Sk#JqhoM z;L$s1o(IE%v_o_*(82Fw1P2i~U!Gsfk{41bcyK7Gp*w}>En@Ka{N;kamym*1VQyJ5 zC{6{W2mbiaf5iE6ft_x6`TPkI9*-S~U8D8*{L>fc2MKxTz&eE>5=1w^O%s;qGrHe? z1M~w;v9p#*^gX!INb>}|T%h^`E|)J54)}0*fbcWCbvQm8VQm1H0;}`*_BX%9&!0Z$ zwFtxW>jmTS0xlJXUPBrIYaMhqqH_TP5jI#TsgSIN03oEwF~Je@^|#mnA5rx@Oe(m* zAm4<6@O|3V*Sk*k73?dT!+x8qvtJoUr!pC68RT{3&UW2>d$_*mi*FC}^5J;zXDXMx zDC^stwHWRWoPBr6TlL+0BjA#T#Q;Q3AqdUReH-zzx6_JW>C$=SM3W%>9_;h(_<Ao= zXb!hjN6cFh_WtWioll|a<p3Kd?|{Ln@f4#5Js_*&OBhajBi<f&+K{*{vzzg|*A-Rq zUevg$34}@2$q>IH!YqIhv711ZYn5RWah33(T9DPpnuSwrTcf-Ql1Zo{yPrS(g0WLr zSBuBP0ZQFSaqS(vC_ZtH!|?>U(8yXTh3okRh#`0A)Io*}`6xjo>$(Dw_O?WR%V7_B zbZwDx$4w(^Atho4SELxh6G2%5<5?KFKXl5dnhJt#FG~nhmW?#|bqbt{iNv9#0OJPM zd+-n-goJ0rt{3_9<}+tpa+!;rteMHYg4TXl4%9NGDZwbM{fmU&q}*nL!3Y2DPQH-c zI7*&Ls=Hw-cIW^s<zErnwI1<SX<iP&P>FX`oUH4*v*wlExs+lzfsm5cFD`h*H9;!{ zr6i;@`1tV&V8F6WB%BKoy^#<?(!tC*J{%qZ#xO5ShC`8>UI|WNHhF@;IB80}_u!1f zSw{!EAWK=-8*nZuhadyI+-h;PE0o}vLqOm4==uRMMp$d16bX7upv}6j=%mIl7<65S z-~(c|-YG>kHs?J(m&^nx0z#2Ryc`Lf`|Qc4`-*cO2$3vrQe-y>0GHsW1><1Q_XD`( zc)iV77K`EdfF<^rSBpOk-{Iq^aQZO9hXw5Ng2i88*a_?9itgA!b_N(V1W%ZM`31ca zNPP!bhm<@R*MRH^hx_~^_+^6VKEO{74`#%=0Oyw%e13k0=Ly5<0Y82Igmqr=hu{Am zx7&<qS&>2jL&TRa&-kmq{wsv&;G@UkaKLT0cp3(XVBv2blF`abN&z7`{oOHSzDOY= zN?1>;8Ha=^F^I7ne%Oz9w_XJAjidjEcEIcnw|qmIlTWyW3Ec0{-rMKD5refm(G+(@ zN_&88AMUSpS8ce+zUX*w6!^8TEg+@{O&X7S;nUxxm9hVUQ9RoCz_j<cvUZQo_G4sT z3A`-(O4C>0&lqD)3d@o@E+B=<ouk;e?QH*hD)gdYs93CHc%In>4D3yu&)0VA??4kW zZ~yBlfA2k?@_zi<?mo3-#WK;%VtY|>!~4X!c3fP#5rAR3UGVsD!Z7rtbkCf3It(O) z<T##=I2;a$G1OgfZ+gT`uN#K3io#0WTGZ9WE~SKoU{u8mP9AHic=hoY``B)mo0I8u zPHiheD&>H?*E(>KcfSQ|nj%3{gdhP`4lgOmd_)zaB3TLnDI}CobVG_Ei>YGuPgg~D zKFG_izuh^P`$K^Xr3~Ci?e(9FcAlpi$VE)KN{Vfi_RoZ#Ed@l3p#pi@H9&hW*>V#2 z&ck2eM4T5u40XkQ-`B?;0>N)e_r0zbF_Kc+Xboo_rg;Wq39qj&Se6CHu>(VdQUYCP z;Jiaj9$YZ^-~blU4;?~qgfvZLyW@gmnWubDL?$4548wqjhllLL2Sk3Iop(qn!Y(Vk zvye)n>pBQ7(U}fHDp*TCaAP!-lKK6k_d^Pa7#uP2o!dm1MGwLSO-*7TMSP+?Fy#*r zMUgCy5wh3tDZ+Y}r$K-=5;1yA%L1RBEo0Y13jz25mBVEM5)P*)+-@^^Bk`aA{ttK< zB)p%YL_)ADo}ND9>Ej15qv59sOiM5ca48`KhwV7@w;zcwuv{Vf5iBI|m>^Sv)C#x- z{Ph3+6T;0R1_osY{ORYP@%ZrrM7BM8>#;5?xDa@Ly`mcigy7H*9kkZCO%r@fxLhVI z*Bid+JB)(C%?q?r2;Si^_E>XrVaQXpm}nB17>R3FAF(olKVBDzQ#bw)?{1`=H9qWY zXnOBJ|FwgtJy>Ik88k}&lwK<$14}ZFaZ3ZkojQHbncq72jXO_Y@vAnt`|nlOID4B> z!@%A=$NNKl&xyW2)Co4hv(1Z_+-+=8ty{Fo*T25@JoYHqEnV%s1Far9cROx!8phq; z{cBT{!jvyoIw9nCV@!GBz&5d=;AvBk*DtnnMYJw6{0gyfS4=WAqj!F{k7ql!0nl0_ zvB7w-&l6}>{HaCSV(ZWuqvum55jB>eiKi7s9bd=zj4;3<V4kk%dxP<C!1;0k62tLu zMBjJhJIyq*X_{#Ci3DvlMb{!hn-0seY!T^#V|A8xyPRibb`EHXl*~rzb~?Cx=0c~Y zpe{j8r9*GUW_8bgH|CBp!daIOK(d_CO<q>ccZ#Todhh|p7^qw{AcIp1rIB&e0;E_n zQ$CRQ7A;gZe9S1{*uaBQo<0<1d5i>yDet!s5=!doS0$TZ!PRD*ZpH?ONO)td^}e9V z?{hl=OgWsqOn{2_+!$T2#Sna*4wR_?iSj5?))<4n@9WsTGa84(03`(;jtBIeftCVN z5Ds)*7K}rW!#GmMyexEAjmRqYglU?w%nr_4BH-n4AO>I<2F&w>Wm#}K9bh^GA3c~L z6}-rozfuY=7fwcN1Rvp62k%^_%F$ul83UsY6>LgTf>^$Wyz}tZ)f>6BmUsnq{GKv1 zgCY2khq@8qj9^PSzSVn+;C)V(OkhGH<j<wEE41VoyAG#A2PB8!W+)?I499Z)jPF16 zI1UMV5Qy`HK_AeKCoo1RVdeuwr%5BTX4sAt;Km>Yn{B@u;pG)+nKE|RBPEUWd<B;V zKmYuU<HHC1>8DQ_%bUPLz{7X|7}?F1)x(E?p*L{Oq8|rHNztraC}=Lh?TjO5c<cwP z^NM~P;rv9TKPf2<(mDD(Csxx7*N|}a3_o5Mh(kC2&_-|Wy1Fc0E1l+h-OtyQ%ju3S zUQ(4%Z=x+QB!9)UOBF-2Td$1r`aAcXS=r~-adBg7O*?>2qzv+RM*DTcp4c1sO>61< zHT88V4q~&j-I3~RQ1@R#<V#=OGpB~YRwGm2*&%bj`Cl1pCo!=eSYU4_2D=+rD&BGq z&dHZuCK@Q}@)#<?YAcu$0n{?8l;<&V`8iRN+6u0m?RV$zP7V^=?J84Zcf0QW1fV3| zlywJZ9Pi0HSR>JA%^HE{?tBZP*?v#EqZfSh<8R;-ii-{2LTiaX{LLSrl*aS(FE|W6 z5+YVlJJDenal2mOeW>I#mq+ibUEzIzRJtaZg&49wdB0mO(g){krOL&`YM2l57`*tj zSyTA66RG=7y&znvXxj*dJWnK~)U+;P8=ru4p3%-M=Q5!Bn!&bp0{OD(s|Y|_njG%f z^|3)6m&s3IGf1f`+u?q4)&BoViMsk|NBwnmbhnoB8P{6=Y$;$UkR|3R2hS524F+Pn zmoTjD^(>A9l_xMB(=;K*P%{n~OOT3ZCj*Vb$6-XwUA}V;Aq0%W2(2}QBrGilFbpHc zVW9O27-C3SJzwaA6!$Bo$SVQ{)0xUIkV3#HLz5CNz@^M9AeC9@r~s6Nh-I1K%Sb&X z7)?_=t#m%zX~jcD0P_19>b=D|2VZmnKID{3Itw@$dSf6NgI1CX2dxQ!qcxNi0FQ9N z!r2*$Cp;ZGd~-bDu^({#<pt~Iiig7p<S9mf8lWBqczDd`3(Pl<2-h2U0+MyWZ9%k- z)ce6>@e6c6AbAe|%P-)X!!ZU3iTHX$vJue(KmPayoEyBnT=31u4;Xus_u&AS3g`0` z;1ZYX6-p^^!K&)~e4XJuz(RoX7LQWks10tn8C`F{M8Z7H6w@3$LW~WkLlAK?GTc1J zFE+E^Q`|<^B|$48lgbjWDs9fU@Q#Yhy!(gX0=bgTzR!TtsW;J_%>fltBrpM|kxEfs zrDC_s-F;0Pqe>(HUCmdS12EJiwAzVfG8uTmxbofPHZ|jFo-2=3S{lUt?w7UGg8W$1 zcE}XeWD4mnwDxYt{bwy{EazvZop-!lHIQVuq&wXSym$kxKqAgc1CyZXA*&)EvbDrF z9)(b5zKK(1&BUf^FWJ@kS}2K7toq8^z}DuqOz%h%7^SqaYG`LoU6(4M3OPBfN(BlI zv3xJ*fhUCKXUYi{Yd3xGDrm>&<hy5N*JI6eqqXaCo^t~DRt%;MFvPg1MP%>}|Nig( z7W3_bWxC<pk00RNiWul-x6UhKApU#Ftgaf2d?9lta)&^~u;2p(Bjz^C<8diDm>{3L zk_si@He~;Bj1ehBsH`04QslI*&9xw;*cAUcZj%d6)G$d1Rv~!xV+)Z*ldK?l>Du(s zSA}#$stIQy2BKj(pV7kG2q)(2x`^bqf*qveNO?3b<Th!@MHR~!)0ig?Z}|Z{Pc}kM zK8w5EyvWM-Pzt3+SQ;Ybf@f(tWR6-b34+Gx3U^u-3%feRNZIdYO5$@f!t>-{nr8&( zAbCR9DRf%kbR2O!Qm5Yc9h6d-ZVTpl!7%h#?UG0E0n@xdXxde){JecW80~7YE>qs2 z)8kc|ATv@4+TCjfDJeF#Ga9|_nxcoqh2A?Tt)Yz~08wWuaECQ0a9JiTv8+Rg?;(|f z={g7@p_R^`6AvLcymM8bA+wNE=D?fcWQxw>ap-XBIw(#}S>J0QI6NJXfTOfTtqf9% zn5HXYaQOb|5&!A${~rJFum6Ja@d0DkL5F}i%?O@>nE~tb3k(F(WkP(tfh`VfvABGB zhV~4+ACSPol|fu?NMS`7dg!62>(6t9*&<99^L2$^Bffn8f^R;4#4;~P2^8_mIHq|9 zz%bwDnzmVZ4CmW|5E5jH5Ha9!9Kk|Fa4Qtw3QH+e6<iBR_dpj(+Pzrdx&(>=JD9@{ z<YkOG0Dx7-I!ErTO3P9yYy16ptR3Sv4x^y5GG<SREbd0FF$R=kqKe@1zLPZ~w4yYR zEMyM(UN~O-yfLLWk8P)!XS?9mx>HVfLM+BmVLbPQyuIe^US%KmhiyLWkoGYq&8xQi z_wA6r^VO$Ti=Fm%n4B_~?wICvm(Cf{pE$36an}0A8(TF}A{uNVn`M$-D6ox;O65!f zycBwoUWewjFA$7Y2v=;7<u%{%v3CML*4h$FQM3I|%x`>5ckjh+N6u<-QFf*qu?`J5 z>HX=%b}g1f(iZJ|uTQ`hRLnME9kRkWvIK^hllKz-@cZB4dO6c*4#4Sjz_QNJT2t-F zIjnP}4i-7Gw%WD?jom_oP@)z+1@kHuCH`^2DN!#cOck&ajrFnPt(UJtoNK+_WxQQH z-yzY8jP|*)hLD61uq+Gd0YbpCuC>ed-ZvA4xTOPTG;AT8rTjd|1{c5LSYX-n&Jd%& z^TQC*Rf!_BqC;X6!p2N(%+}rXmN2({rtYsTvEh(ofRvOt)^!S6QpUEFbf6inp@hU? z9AS*fVJtjrA9!WtBhe1NGa5!q^nHh6=wNz{m?*L~rUYX;if@HLOc6>891a6kyP_X@ z%*%{vy3#?Nn-$8qxA^e%m<ezK!!S|?JR^Z+K^AzI)AX7`u`^v=buiA*bsZIG!NYk6 zyROwTsEuh>QXDBHgos=)qWbK4F8XLCk~WNSo&ashcBN2e1f*dJDR~$n@Ylcl9gqU1 zb%Bdy!JMwQTtEw0AK`p}=?p%6{D9{#pKzNee7;W5rU!h)ZyujuxCG-0ep<nNK)5d8 zi6bly3IcEux92nBZ3U0OGOrZE!voZ@hl{jcNY=tF0k8q{&(F}j$K~aQX<E<?J$`xq zg7I)bN}Sv-T;TQfoO2(_ZJ*&Vj+j>m?<0C8z`e()H2gAyrwFAfgPn@in6LFb=}JHZ zhw}-mOISQLzSOBVhk6Mu+3ZNHL9lK_u-#GB9IB}Ws<sJQDQx5MJX+bKWdKn>LTqQ( zBD`R8xZOiTGP|3)PyTjK+mLE`*>N+D_uNYFQEl1Ix7`Zu_QI^z55Kq8;jX(*cjCVN z_lr7z|FiMV9k3S$wt4quo?TZab*zUbYrYlgZLdw+U2m^#S%M2NAv0q>kMPT5W(}?; zrCk;}=S7&68YMcfIRf=DG)Z~eHP^&}vW?+he>S}}Ix>ED?WPjDi#u(``?fcp*Ak3v zEP*z4j%{=6O~b%b69%-cdusG;i1?d7{56h;18%nq7*F{9@4m;kzxge!wV2lxt9KOU z;#Ty12k$NII+ez}tcY1PUU=-J^rnfEGKQ>E!ENb!S<n+gpq*t_I~SEUMUWC4grF{= z9=Nn$ri0#E3+G5l&B1A$>gn&X&JpuG)6&Xr{(kzjd9m}TpKXZYgtTLu-~Vj!Zg0gt zsmO`;Mo3<%WIn96Dlo=CN~{L$%yPw8erJj3-RyHz2uYr&0{Jm(Eh&5?MQ}zF&Es)^ zF$%^QbX^Z*A)5CdT1z}Wo-p(sLh$(J+eb*rF!UOy(|}>nI1F@{9}Xk=-?OTGnitIT zitF`?!|?$^Fofu!jYL1tsNAj=<1o<F!xMtnm=5E3KuiIb^9v5g5ez&F*{C~~O4jK_ z2mvCC*UCLOrG&%b0GY9`Tx{d{5)8xg&y?S3jIO~tl⪙I|}e22K+KFu*-^+NE9eF zi3Nq&GBT>gk_M`^A@t7U<>dvDarl(rBj8+ub%6wHf|H2P2iSGRe47!FFvo;1&kK@Q zK;T#}H^kM#Bn|<fKO7;o2DFA$8q2)m_Hu#b3Q`-WhX;sGf%ypk@=Dx?0I04*vMc1_ z2>a<7w}1Nr1c^WW_yzOoa6Fyx^7=|CecmJb2<JVl3-E~%^$`qODY#`tH;nl7<qIB$ z9>P2HoI@rGf8kQV20GN8wK=;XPsJInBUc;XLWB*J7AX#9Yz}q$K=2yEvB5f9wt3nK zsM1c*Ry*r*Ae6(Hy<<0TXs5Kh<h#Es<(p(Ifg7!GE{9FDR;`5X@Q-abTgar?E8E!} zg7xj8Ub@k?Q!eW0J%wyb8jE{f0QN$xTJ+p~FJ+Hr+$EKzsz0cIAKFy2Pz#ILuHT!( zhYP-qRrxyy)?Ei$55E!;ky3N06AqISmjI-27t5P!W<Z<!v&B88U6;OTI7-*cask42 zx`~YwzuT5)1i+oWvQe%#O<zM)OHHr^c0T8p%*A(O_WglgpHB-@X-W~^So$~^Sft(d z^?ZSn0;^py%~$;V>1TZU`7>_w45lPj?}2P{OIai0T);FfP+G%g;gfTYVq)`tvg|WM z78jAQEM^N#s($d8=zBY72rtu*9F-bEO%fzQPRi2)8m$(Ud<fK0@~q@9ncihDUkb`r zU{-G4v5CF~DD;FxWa3SMwXyU|iXbxE+*4Q#XIm6+e*WZ(4mGr-2-#|vll42>`i!oL z;5T$E*{m22hcRPS8BT{0$K!~H;{k#LN^;nB0TRQP&%a>0%~kB>?1Fik5JSM}IAU36 za6;)pNd~PIIHSi=Tn9zVpjAiRwN!Y1enCGNOw)vv2td^LLngQ-^c|_FV<475-}UIb zF0U;U#-S$;KN6H8%Np(Pd9~veRlIk$zQ0mY(PXW~vdqv%V;qOP*Qd+^Z8Q}eSyU;d zq9RL*N-+#bIfRJ9a=de}*4B`qLQgDyb}FRu^pBU^@Px%Wtkxqk%3Tmr*J+WDA+I)o zp&wy%hraJ%LxA@j)<z6NkHgU6dV9tB`bv6=;Bmg3@%i&-T+Ua(Q}9hUj_8jk%+n3s z<0JU#kTnMZ_O?Q40R)OnPCvfDy)5|r=@p+oz2Y)0U{c|DI#Q9nI84_oZqo{7M$Fd2 zd0JU@N&~?|_Z`-C!Ljeaorhrzh7sILa)y{F;#mn<KO^P-wz>!x0Ouoo5x>?$oy9lI z_14ygoGg}sb2Se;<yguRRhigcMVxB5N_w{~E;p7E=#W^kzcteUmhKqu8z3aHmcw47 z*X#U@wLvP_Zpdgy@6ErnOiA0XxHs5IDkk%MKZtjbo;EMMuEm?zsul9J#XxNSTe?%W z@1I+|^W>v;W+)Sjobt8_<?>Fw9;|y#JsR3wBc5n1hlPP&f*=TTkr10CKeki5i{>%3 zg<I*+*-li}z7OoJy{%{!TB2S|mG#f|yw*3J_#1b^SFD8XdZHE}cU^kBtKoUx#PZI& z6omBE1aBlNl$Uiuh#rqm4>+7g{PN`)w`swb=Vx#wA+>^!0S^xkn65WSNuxK;1)OzY zpgknZ*wZ%j1S!?*Z3dQwatzjaq)2h3A;-5C%Ua4m1JDGZdcqqee8IA6rD_-IgU<m$ z)CJ1Ce+?Pmdf%OwWm9np6ft6%21uoLML<~(v=c6h5k_7Mg{m}{LLy|LRvWQOai?2U zYU_EgnvImIHXx-~3y8zvfT8c8B=GQX!0|MapWInGJUPeX=@HX(#j?y;7l#mtjh=Fb ze8`IT&KRUfwzjULgE54F*OxOcmkH}?^OS<s=d`X4=ko=xFBjqnq==^v4@hwfy3wj5 z2SrDFcWYN@WpKS-F$^8FR_J>J#(<~CCul>RHI4TjmSv#{YlhrxASya&*L8+-4t?L% z_tQIvuItIpDnwmrP}r2HoB_@llvG(a;p!A7hCnNaPS^LFij|FN!8wOuTa&}3gbQSc z6OxkNN};JFMV0zQF}G3(tjkQo)=0uq#~5yQ!pDyfP%`41Zys@cJmSY+KI7x#3FG4l zAHMqyKK$-GNG;HfJ$NS}`s`VG001BWNkl<ZpAN9ggk&wCB=~UvHwNbEiPlNe1ok?^ z{&c}l|MVwBuW-Jtuz}&@w;$2<9e4tIZE!pu5s>i9`GVOJC`fCC!Dw_wAtFL*iBW09 zd4Y@xJVqM73liH><^!)QiVy=r0-W^#1XdU7np7OS!w*%loezxar*7gg+t8I*I{Os& zBk^YUTsosR)on+3Yg4m|<yaKu_&#DYr*h!Fw{6qlwnLJ=i;gY3)uOzOU!&6I4|_WX zPidpBZ2*~kvuTl$cSHYs3)~xFT%yruDxFyt86m|tNpe|zS05v5cI?$d-V{{4In+z1 zSx4e%)9N+`Ju8B|W(pFs-xf{c6Bn%dwn+`1_qffDUX<>2N0v+2!h-My+ESiX>z&`y zS&IKZ+ul?8lh|K_tZ=Qf<)g;l;?5C|H<}673h7g<H~;r+i=vMHo6a4q3hc_5xD=Bq z@AIv*7=|9hIKX<3)q32P8P+-U<3Jq*NQrFi3hx4p?ht)K^Z`aIQYq&fE2Xe;7;T`G z%$)6fD5h++%ez*YX>X;QF4v*TnanLYt$nUVG*(9QI|oR$ulbtn){f9ip7>TE(F^U$ zsQ<25V(l2V5z1Ayd2uEr62}Ekwm-%>MW*IyL(%QfSf1xyE`7fgoXDN*@pvTPwUp3W z!#M}L&d?fJ?-Gzgz_Ko|*1@eF-UW0+m!}s3N@<kAA?F<9IA9zHC`D1X^E~5vyWx7h zfpdxD;Rs}~$Z9R-d8vnd%F4Ra>4<*lVLC(BF{APNdcpNF;d;H{a=9SJgsw9<9gmoo zl|V33K+4?3dQ!bh#W9TZT$PeE0?*OTec#u}S?es;b;U4_gfA{cxZrc)NY`|Xafg7W z!cRj=LHDvoFC_%8-$M)#oK=#aR=U#VQiyQgVzs2v;Ca<&x{j{lTu_;=qvDh$(DXhF zIvHT3KrcCr(6FB276Pu>H?JXZ{&L22^AM`XG`(Or^yp7VfJN|5K#U4_=z&gvNe-1L zUN@xxp%vKU5n-i+H=Y;7mjz$`_yxB);`8$jUtV7E@i!kKg}~+I1$J4m*aZ;`w`GOY z2Hsj2CGl_^U=+jgG{V~zr>=*++yLvKIfr5(#(hdqT5fp-c`6-Zf^!i*l8_ULoG0Sg z(N4W|le?SOuG48{Dcg=0t?i2C!>``Nc}+Y6i~9qOVF&K0iu$sH&%<==ke&R_zI2z_ z4fcl0whLsb!n=ledKbu1v&L#JcdU<n8};VHy!C~*on2n+ehn;>s)#Obqt<e0HwSjj zL(Z|8n;{>Yq(8q(xU*z!HXpX7B(d#_<!>gojYvf^2H#r<H#Y(aTe5eXZD`fH$4;A% zyS`3a>)n(<?Sv%N@oasSS-Y;N5h}UB+kDn_=*`mh7^>BcZMMC-MtTbmLNmSCuCBB_ zxA!c6`Tb}6z~AjLF^)F38jUadwoF)^#pQZ~k0}%8Ji4w&iV=r?!1?vHs=S4eSmw3y zllwZ7CaYP#@j9P#%V~t_L&$KNT&#<IzW9!1!1-HoT2mYfDR;$F9kJhW5n3CXZv=N` zv|PFgAKtnU?#XZafRuJ!MgSb8CGB+?g$;2qgnVd7!NCxrrNB7!dF(A9IPm!J2&Kta z-E{`*vfywyfHQ_=S*YvP3Z_#uCN&0K-%;2OBel3v8n@|&VHhi^O`AM%$PS`;SxDg@ zJe&{N&KBW)z-k?Y(0PO{>iw&{7G2j>KX-^8({v->xe)L!<Nz54>nw>JeSkKmG7q#? z&|21v333#;8jo6HU<nu#DymipQ41TTbfpPODX}aII5?d1*=tX5p)%n>OyuTBRDd#& zXij9pU9S~%#t)|q1d63t2%!p$tMelZcD?g?+PD{~3eJhkAjozn05EUqD+VZ|!IYqJ zcVaMHK|*4_tuUs?I4G>sgkDKV#lbZP8x&Y4!8%PH|FnW725%SWhXY^~oDbmF8{&Ba zt{#`?3FouLWpZ#}kVc_52FW?Hv}OT0n1IoS?!hVG+Ycuk28F}W0nURh4r#W~;E3LV zr9l5Jh0IaFF7ecdh!7d9+Zr#<0CDP%KcEV0!W*wT-;uJiAd9sJdaA1NmLpyd^ptm4 zEZ&XNn(=RHEXsM7ywj!EB153Txa@ADNc#hP&p>Z{&J8-X9buP=I^Tfcn>dc8H-$~T z^~WZ9HZ`%KY~T66Pq9zG8idmd>0*OI-HGDZ*5#(V9kIx{-Xb5ih4fih9nFrp+O`_a zL`vJCUPn7wBv<TlJn=jV-+FDHEoEh#S8%T>XM~sJv+XS`Z$95GS<2*Szba`~DcP>I z$@m+)UcUC4ICpIC@ctlbhbZ^<wXYrOyivX5Ey{j(-GZf^MGRnASBH=yx~{|NbOI8A zLB9X(ZxOu5`FyT7a5@-by$(X|K$#E}QX&QUSM$xejGedlcw3}#!FQO|5JDO6RLIK~ z6qFx-$u$=|@2|rfM#M%;+gs7vuD^aZGLWhrx9?z8G44oiRiK&*DUNP(g437GVmZzk zj8Qlq4%D$34Wl;whf$KyyLN@?3=$I7g{(%m+YPtdoWoeMXfToRND7{Xg(BO-=-&&0 zqw6}XcCK`_7)gMZz+l}9CIqz6V4Op118oenHjqNqU4Li#EkP~>IA`HKk;j0oD|XIN zLSCM(gy8DO=lps`-w#k)VO<w;PjC+BXf;7o7y{rJW3ul&ktLEb7}F7MHBW);YAc$X zqIZdt5S*{mju0GTB#R_xoQkQ8e+?nPSqr2@W8{M1t|2@;XA{tK=J~UxI<np|l!?=} zDk-UcK9dX?IF!=#`xqcnz+Zj$4gSl2{u}(qzx^KTe8qG=LkWqe4^Qx6Mb~j~9`Mu8 zpKv;y&`E*L2=GAzy$1S@1i?ZeE)(5pLO_TfY3RWuL;UFz#Frbs{L3d?&I_K;3uXsI zPMQKOIYf+*oMB!ja3*1-f)Wy%Geo!Ix8FXZ?*t5Iz`SC8xq`b0o`4uVI7`rq=9VG) zT@xG=kv@H7@Sb9V6Czjw<X+VE4nw>u$I1*o?Wk{C2bAieUk~>x8rxzB-*VW~7PMXU zVQI%vZ%5-LAG>ioZGzXB8jMT>!O7tTF+*_Jrt#0L_f(UYwk<WU7My*SOxhk-A_d}B z7&IB%fmO9O<4xLK+Wwx_ibjH^^bSog`|H~YLa|z5zx!vkBQLzVnC*%C^OHVEjg9aA zePH|7u`R@kSn$1EcHC(R+KUjmsKD-Z-d<9E&uDK7ztrj|(pJUO7(Q+xIjuLb<<Gxy z-lM+n?WAdYj+?@<g|pNSJ;V1m_rqRwz5i%z)nc`Rr39lioDEp5MNG5{)=EQ34J8$x zo}Lh6#4S!()|HT;Icq)ggv1kkbl{wB*4NvW4)YKovJ%;cKzm8XfDpkr15Y9+iKz`5 zA}9c)aL&09d9UuE740yCC+b*CA*-9yKJBfAO=WQ<<K(;9vd?K;Uy!W@#KP<MHhlnX zD?(<N$LxdW&|0F?WDoO>tYQqTdfPi=AQ^|xfjfm%#<3C6wAPfH?k!n^qNm@_8C;Hw z?YkaANpP0xl;kiD;Edt<`I%S^LQ)WiBGx$rgOm!+1+1%u;sQ+2e*;g@OaY+L^YhCE zQb;^KoFF(wnQ|mNo{k7HKW4$vbs9c8#Nc6a8k+YpAMS}Fk+Yz1JRGnr3l7Jz^5~`3 zI2=c$nBbfR0Nidj+PQZ<6z5oT(Jh3i!81w{wl)SwX@DuA(}oIo&akcvi4_&$Rp)6Y z=#1ofip5~00+ebdcl1#RnN`3zO*BNF0G73{$bzuwD3~a*Y_0VGvS2bs+Se;XulryI zNO*+VB6*7r9)I;<@Z10Ozu^D4S^V3VSG-(rc<c=#v(STvod^8*(-%B+8bU<$JV7yv z8WvqoLcc*n>mKQRfd~m~a$vfLivsJ*gx4>x=*%NlcZKyHJ|%qm{29~jik=HR9gY~r zBi!oYY#{ob86lFzbbiIZ`%nJ?$vXVEfB1iJ><+nUX5?=V>*f-P)bSVnamdY9(ZrM} zXdyYov48v_R?l?Y@s7)!V-K6zy7VGoVQ<=$&0n4}yye%?=BeEt)8EG{ReYy#j%6~C z4}wB5+ws~<ch#a@t9QHXd#ShODb=p4{Iea2F$@1130Qs|2zHZq^X*ok*t`%MTUy%5 z;frk}R6q`^fhJXM#^^{c#PpbT00jiYnxJx)n%PB4kStfNJcCiV*eF@8u#NHUkSuGH z>bXYUOUFq28<CTmikDR65pyhjgVgNP+XAla_A9Aylm78sVQ=EJMl@F}PvtqIiJB~_ zQ=DzYy8IfZn6}4|3!t_*WLXi;8WsZQY@Y!DK{xJ9P)iw%!?SjP@y!jw+Py}x6S4+E zvzsok+;xb}O2|Y$Py=q$4GA8MM?5|pV5A0@30-f{<-_CY!vTX#;LbrYPBg3(A&o(( zMS4PvF2|m3MUvoIY?s4vh+`n?&Rj|fsdW~^k#H+!krQW|5>{}9SPtwMvu~C@n^LR# zdI}+H{&oq2Q9@9VOMZO>1GHdJ9MF<PK}JdRM&URZJRW*Hod%png=4SqbR1x`gkTZ9 z6p$=IAixL)#S*mSh#|lzm6hK#!u284_iS2Mfb$$1ns1_cOlpkAVLTwZfb;7s)^&vv z0?t}IJU#%4;pO!VAAs9+Mc4IMSBGh$gH9^)u@9rc>2%D$U%+TWo=U;c8HLBw2|_Y3 z79j+~;V_`<4WyP(MuH2v&kB}cI)%RPz!)k6o<J~}>F%i5BD}DL)(W@l71pk#s24gH zjS_ZUFyC%8+0Z)UcLTH%P(t8(IU{&aU8NE*T7#v87y|mP%Z>|AzG<RU<q<W7#1z%8 zcT|jcw?bx-m$fSaosej&=~7*-#LUS*4kMgfkzzmyj<UtGFjh%}5F$Eb5ZsEsljx*` zN(l!k@L(j2@c8~=z^8xuCmhBRK?!_0-{6;k?@k{P<{J*9!9f{70H4p#Se*y=2{Mq? zEF=rAXs=Gg=18BXV-E-cyv+FgFF)Z=|MmrwO<?1IpPzq$P!f>|M6U6AwYV(-(>lYL z4oWbv6krTPZxrAIzI*x>U;g+7fBe^<VEO^KWrkD|QZgWTbXpOWQ_$HWdD$HkDbiV5 z-xh65CnUtNKmD+IpyLju_-_91n^d&-aj82G_B+1pKNn!a8|%|OD56@3%0YcMrpFz_ zdp~(dJC*W#u$o*#?gKv1He$_4ydB@?Vu8Q2LodIijx3Q7?)Jv%zOZTRaIu-DY}w)4 ze{Ws{`Tz;ae&&U<&9d*Y;z4<JG;Dk2Z6(sK@Iy>QDiV^sr;J8mA}0lrNG`L-E883O z#?IO`NJH-{g=1Np@CFo<nq>$Yffdl=Ki@J1_8oU&7qGV_Wc$9}MFkUqkME!}<)Yb% z3^z(n^`o;L)Q2@rgZ=oPlB*;_^m}Vv)+?~=!Hy|mwJVS!Ixf(si2v>H{}%uI|NKAU z@46m;{q%sx(}0J;z;G()SW0<+Oe0Z|19%F-igSUk?@5TnDB813QG^iCo!(N!)D}Zb zAtWh#ivg9RS1a*K)2_MvS;}&663$}CHzwLmlgC+N9C~z}#Mm43`9L2#jov6I4j3)K zQ-GEX$Wf(&GX!Um0tLgQoB+pjkwzV}%McuwJ@<6z5nYYMXDXBD`o6<)JfJfs>m;ct zUoA2BopoTG)e*Ti#6#EGU|A+SJUrm_^%WtcTtKIcL(M*ayWsSA#N)#W<Ip3;03RF} zB08ff=9Dw^Lx;|241EW!B$UiHu+<W!EQkJ-gtN|cxzmrBry0vU)6SfUjFk1TtHZji zL?9HTKkE7ct8<u^1^qC9Gl^xoBE*1)hbIUjFfTI%=M~n|8AAnv*66wpQqVOO>toUR zy&-)^fdWY`>L^}oh1FUFPibQ!XCDYDF^&Vk8LrnW5F?zk^!sC?)IBiBjNlzQgA@Y< zfYB(36v2bVhldgCe8pdV{~b<;1OC7N{ttM*Ot{Pr(Q^z!Lk15K91cq1>EQ%$0T+N@ zo-as=K{El(7?@z-#}R2=!50gx4q=_aVuE|U;`VyR>v_fJ^A+ZBgkTb*8Hm%LHB3?n z1fSrohs^1a<2az}48S68w^#hzKmQSSC3sHCbiLplI1)OoYA6y1Cw@ZCyGV&;fn4_4 zaE=rr#Bn(Mu!F?hDPRBG;rr+Q%-8<=pFPw$Zw{QdDAiW%_Fmur)%f=OVx$t)$+j*W zjBf{IdsyzI(c2+a`QNEMxV~1f?4cTwQCAb$CK6;j!Qk$kM%=tojqvLYDlhwT=}>2R zpU#UaoMkV0R)eRVO22f>nG>F)FhkbqA&0r}ygTFh_m)GwJPhi*H{|G+W|qZ+B^ruv zBFA!=Z_uIE9Jh%;SY^NO<7(MEK{)&3?*9FVjZ<Uu&KD?7S<G;jvf3Xtw}3Zd%Jfd? z%;xv!dyCwzDCJGY`Q|=IDMCmNAm*DqeGb-jhSrkaAHU!~esjYA^4kwE;R?<jn77a@ zK_Ed24!f+lUakl}!37%e7du)Ru`e?zf}QnPR}zK|Lr2-#&H^!_(+Wy(9FHUVjxd}g z=rb6G9w{Ygt)VsDkcCuGieN0(S|p_GB`*g9QQrjLY-BMw2mu($Y5$!P6z53M!)Oj9 z2PGMa-n7gDO@`<_`p#sbDMil8Y~2)!1a!t25{sog=`e=ki!-flnP+IF$gbz8TMap> zEM@fc@kk?Wr8TrR)NvUirkyWmIPcN*8XrD9!5E$GWK{f6av8^X7;rotz;l<)a||oz zEEhD?(WjI!-6q_wS6r_b%<~K>1jgZj7$T&Sb$`qlFikgv;PUk@@@p+H-6q<*3;OfM zbVwnG$bf+rVIHGG{pFcNna9HcF{Uh%Qy6l=zy%d&G~r=2pr-449F7MVqrfGHwJV}` zaI3A1j3R<7Y=D@jI$V;ny&DEft?LXTOPJ>w9Ke#TZf)dlnej<25t1V=JUEQxI1LI9 zM*}T6iTTb~{JY<NhfxoBdA;KKHskCaE`Eg=6)x)qM+J0B;+w}OFrUCe#C*FVMF+Ru z5E39{4>kwj>ae_C5xIoyN5Cf>yAwWte!*q-05>plfL|O^h<JEBU>r0AA|yz-Y*&Ix zX`}J+;}e1l_~(E4XG}MTm?*2>=$@v7d1fmGhmZ`C(NsBw2q`r}NboTd_dR4MP)@~^ z`vb2*Xf#>mzji49S`=&Bm3%D+{VzG}tB8i}v|(RAz~A`H-#_?i_wx=DrvYi~lDEoH zns@u)r8C$bSNa;qy-}0z&1(B1fF-<x;>{w6Mme5xN5<OJwv-z6K5sh8Z5+Kzp30-( zlr;x6I`y4biZjtnMdF)ewS=(qi?_tSmJ5*b_`9u_QuAkagX$b6l-MSg60G2m@|56i zjm_>>I`N%>O=>!P#`bp0O<h|=e|c<O^#_H1^<J^?_5D5ah`)#rX*cSjGzW_;-@MBH znD&Y^5+(Z}7eHVPypy<0uizrUF^d3;<QDjO#dN;HMh?HOh~9%6jT8dBvlR2ni*0oy zs}UiL;o;$!Z~6hw(;=@7b$jc&Kq?JsB#!z(YW!uv>Q@ZI0D!|s0^QthQ`L!(wT`9{ zA^L6Zl2E<nheHo<Ehal7<t|++O_sfE*+?N|WjW>4bBG+6lyc`u2e&9*cFvJR4t!1& zSz73L&XMw5Ndvc9ysnnm<&u2Y!(qV7%MCiK<3sTH?z`{s<BvaMT`rJP;PJx)=6S~N z|N8fY^-T#cFTX%*O<)+M5mUl4Pe2S<mjx*qFh)#vQmJzYuCcBwmUYGXa>48C1<OL& z<Vp%iC1KqQB)?TS592Nug9MJDX@G|i<dGkG>h!NUI3&1;d721J(^G`2w<|(M2gevO z_C2EaSf&}AG0f8hx6s&|taK*7&d3E0Wxmfdu@tnX@Rq*oVdrTZy9W}~g%s-up9@Zt zlAPogBNbfhyukT2=O8R}Z;HgbNLddemCE@50WmQoE`Uhav``F6Q{!Q}0bf4<jL%<Q zaO!*f-S^)^3@7|w|M<@omcu#X63~Abkd}bio+*GuIV>*1uCyXL|HDs^zsxuu1{}r? z!|%RB=p~p|;A;SjGmfSMPcOJ#&d~aV%XPx*bOAg6f^UEO4F;nSL9Ud;hX=T@f-6d# zyS}cllSG1sjVrv5IB*W<9T+1U+u|I!km!ucJa`WtD4-|iCX{j=$bDe6ge)D)#tvt7 zuX>*|{a!cyUhes?9n|+B8o#dmj&FH2_c}h#-loMd_C|63?(--=ldv0^@4eGGFFBQc zJ0P~mu$?HcbaG#_zwhjMWw@ML-#MxUumrMfVHT{heYLO0mZ@1D8+{-mQUFrkS)!rp zl~n=i`^WYPY1MYfwg8_J+>#;%m9VrMgICXfbKtR^z%Sj==Nk2S{rlgF%@_lCNf=9Q z+TI@FyA?%=1YL~^18+w8oU|eLk;DAX^-(kiIhd%$<lW~6{MvQD7vS9?g%it+_5jAn z<6F8VZ3yZjB<;1i5C|(U-7M^qFkL-frxl;CE6 WwE&W1e+3u(+NUrs2DM%9!d&W z>%cgnLW^ardbcHmhzu%8Si3+eh12Pn>2(6<%LOcZnt=#oBx2Gerqdd$cW{eCr!|(@ zQkU8(_|;Ymo>mf)OGF>xtwWzV<AO05)q$l*p*6X{3Bi*Jnr~c)7=grS-yae3XC&3J zIE`~f))3HJCNp3LF?abPV!B=tEE#7RrzT(=4{+AO7zJx>h3|wA@Xg0>@XIe>@bYrT z;W(n}I-;%33!zUX#q2Kg1bco(%mFYGK;Iuo3zQ=4y5jZqig6fVSBrUFz?DP{z`T0I z#KDq)_o%@$YnTudaomkDr1{8JF)d8iw@~2{Lj>o*Hy@vJU<!vkj#%aieqG=#Dgw4x z9=&()&SMP$T9Pt<nrC=xG2bSrY=b+V4tRK^f@ZarUi*yrRZ@a0j-z=15-`s<ntH?p zBdAkVN&yUT)?%?9f|0QBd_E)ifEWpsr0#8^f>&X32mvZd(n$oe^?7idryGI;e)IGJ zAw`IX1OEHV&-nNK_h16(4a4KX;5@JBq=FeAaJgRb?eBjBwoWiCpgSf6+2Q!{1Ju|f zAVQr+8p9g~3=(2cge{*|NUZqgbb$Z;@9^LL^aay0fprFUIzw^^yE-UCtH`IP12_-( z_QL^B4@a=1@LykEF|7<f3(7r!n{$vULiZXT#2M(B%A`aAE&%5;c{GRTNI^V#krE^T z`IcRt5BBu-kbav<{_7E>U&}WCwa&byP`$Gb|J4!y{qt!5Pc*mqH(+<x+J30JYZF|` zZ{umho$}_4z8{tU+HByB@PEg@XI0H#2zD$->r~Er%R(>t!`0GP4tiD#j3OjNqvGDJ zMDh>O`TTZuu<PB^#t|r!j=~gRX$wH%&BTGd8I$h?1hrF6*f|N1fg(l7$D71~N*GLg z-f$VUr-TM{^A6xYrLC}OfH^F?Hh5VDu#LS?c;zg$fTQ%QQN(Yr!?e3ri*lZG0hVu2 z+d<3j)XfrtDOgzie4g=-pU(KFA7AnFYVq@Iaj_QH$Z_=!-8d3WD|ie;M{uKTD^*f~ zW#Lu~5#FQnq&d&2T#6F8j53(66JkhoXn|p#uFzUTDM=QwETTi+L3<Zri~?gFjLGBi zL?E3MBe)V!QqlB?bF6kD1$#nGKr3iuAti)pK|}<Rp;S1T1zsL1Lv?~r;4<&~rP#DA zob)SF&?woffYpY)YAPAy3trC`eE9f?Fi$Y1$22c^dVIn(tvH=dWFhkopFVxYc<8}} zBEV6xkmj*Az%VZsm)9$TbqMhneE<D-6nf(UAq>`)x~mWq=Gy|n6$DrLy3Jm2>$B}E zl71xs-g+8uXZv2)_4PRu<fRY<75d|d+iil>0$OmqJU<ih&iO4!g%jOOD1|vhTy9q! zFp{M$C0I+|_S-xWjx|P@P9s<<z>rrmAp~IEQtPDF=mw(a&C^Wd`*lGGWqP9FLZCu3 zM>iwVn7%lXh+0VNKI=SG&yhlaT~>_81AGinS|JGzmw?0-tP3Q5&LX^CDF`1hv4qD? z<2KK5&SEqje){DTe)Da_H`?GNNt+=K1JDVG4<~pQ!4(M^0}o(=f#r2lFai(^B04+{ z2H$>oz}0h1HsWG?JUl%BmI9cj)j~>v?>>y^lEwFrM=Vj{a(l%!0ALab5s7ikK7a)W zsW=i(7_`Ca0t{nFh>(mE{uvC;1@h<1?5PhCDR_uOKm1Tef-yE@YxX{3^Xti0zrIiZ zwcmlSZlM3%coXl2K-}L<`Oc~P{^8sD*;DIt&sp5<k;IztlY1ZhSD(^70H5vIq<e5p z8S~#g%$@(RJy=pzSfdHe5MuN1zK=`YUgw>YE3?BR*p4X2GM%pO%S&K6qsUf~$L=Dh zX|c+NEsZ$e?Y`>{y9(nri&<jnP4!czGN}&W-@ci<+<5k0;6O`>6IIlQ43pXN(~EAP zVWhK-B3CGV_t*J;&9sNz?B9d!S}8vhldnGM5QxyGxU5Lmb)kf;^K``=EdKTRj6Ysx z{9+wuFw6<yMnm@<q!#dzf<<Ibcp@uI%$dxjwvRF9Om0Dt6z50;B_+n;fKQ*kAcly; z@d(oyitNlId82jpI~&tM3JI+ZI4Anmx~`a}8P;0bSI2~Dp0O@-PIdD;!K2_DN=bl` z0=-1ZBCGO?A6f`nC6Vwi7v7Psk60s!>2<btt@~{-j^JZ{;RSqtOq>g1XZt|Dbft2< zFN1R)!_eb$dBw+%kJLR&0c(B6wJPXLvg3?Y_I7p9+93Fdd8YCHG)(~KczJonGShB# z91rM+0t=&U001BWNkl<Zo({(dEVCufl#BIh6*<;akX->GV}GNMaMr;t7QuUTrUQ#K zl4lIK-6pKdg1+yw@7<y62UthJBG&nerzU(b03jfxz~wfRh9CoQbY}?5Y7C@Og!awi zHqs4{1YZgXaA36-*V`?N+#+-qEqa$T>0?Q<B%XS;v}T8eXn<HHV23gT2%w{cf|3d; zCMYeC5HR#3cmzhJF&YJ#D7Lke9Ga7I|2)mOt`<H<9QqOSjbd64qb4Usr-`pW_DCv$ zj|MC!A~G$(BnR($q{sl9z%Jx1pOzI%3^<%l2+`qkc}3rA{N|gF`0(_I^Yx7L^D|hA zIQ1Q#K77E-`GWuR|NgJAOoK5303{|6ax)Y20dAB=bOAgCD4E5sHK!pbPNp1tn>-i- z#Mlo%q#B9X64J0c40d4_&DWn(vcK2e|0M#vw_{k=BG=y(9lti#zwgS}dxtvqhkEJI z*}KYo>^k-LlHUI8p<d9q_s3Er&|~d48VcY3B?`rKU0DF4VFYggr$AW0hcK(E?uMz0 zf`cP+-u_TeVA&6uOQX!_7o63I)w1yyS?Nj#9<Pe_3V&gnRWG&4E1CC?2GRoTGh)lP z$}T(I5#Z3Iywy=Z!~5RzddOzlUKKrNJ6?^dWe`X;K%^F5Xd)u{uV2d>JSBr)_}j@s zVP_+UjtI%Akl+d4J6z8fSnsf|E0N-mVBvAGGcGoQ4+qGuLsAm5)9A;citQ+q+t4H? z5V@|<;k*yD|4wwMbHQ*vpYvY02M34u)MWu2A3uJCHgt1d*OjodQevKGc<(XKlnH&i z%|sr{Hnx)ZMS0_ZHl&#EI)fM;xM1k|E+0&K6V7Rwx$FegQBo2?tQ22~3P{A_Jjn4& zIgzepfm1;Q2qqCi&Pva*!r+3MLof(IhgI?RTNg0&11{GaoLexC15xIThW8O#83MI1 zPWxkPGq0a?2vSkO)Au7e1C+)vj%2F?y|?G{8QwXp%ZzCz7JCX?b^=Etab%20fz}7v zA)JG;1)?XKoV9BelvzjbO-c#p*E0ZM7)M;M6UM_4rt9idWVH^<y26D3p%jM0h;A4l zl!7t_s?$)$fJ=_muHal?Sr#nI3NQv;V^*nSca~W1(GyT+nHJ3R1fz7l{umhjIp-@; zjwOQN@PaAl4QMNiw|So6aK<5-Lf5G}SxPQKGqScl^a|0gK#VvYJ3Nd%2GfD74xeAn zxJ?TV-3YA|tY0wn2E9@+LJ>SiaU_+%Isqm);4Q(^Bm<Wjp0zmet3zBZ)G)v^0*@}Y z3CFR=`TPti7#_wB-#qph4+EHxxXcq07kGZY;vfF;N2Jsv2D-QSm|#N$7)Nvgz0#10 zK{5`>6O<4Tj8YPVk2H>F0)j~}4oJmdl!Q2RhabwQw=kBA?F+k#>Fr+p&)L)7#*6-C z`}F%L71oT&H;#DTA+sDDQueL&@ixNnT{lg_u=X$&X`dv<%T2#7bt^x$O?xNxIyQn_ zWT~;46^}pPh-hpNuh~J>(pG%1ySYGpF1(G4jg`G!{M$v)Ck2t6I4|zJa(Fb81zzH6 z$=;S49Yu@@K89V04NDEFjul#9Y9<A#s@w(72Q+^>cVQg+KpDn%2QBVj7uLKd#ctM) z&2xdlTef(M5^f8K1{=)tRDm}I0^LmV;m)xuh_H)gZE(WBvQFZ6?D#_2BV9rQ7YR}c zaGt<<gi>Vj5|T2*m6RC!9{t$CWRI~>0{zefoTD2L@BpG<WGB-a%R=hm4<DY;bse0w zxLmIl|5>`@^Z88b?mSlR`VqG)b<j#GEbENJI6x_Zj~|~95wR>QtfjCKO7;o>IIOi; zSF$Ue9!^vg2!?5%FijJzU2|?Xja?7p0n=@Q5CVteh<T#D?J_N3Ea5QrP>N`0GNW>1 z?g)b?p;)T|C&HSl80iF-5v`Q{F1V;f#*!5tJm4I4@7@PUZJ@P6*LTzjC)!OvJv|`A z0P7ZLqcDsI^!<qIb;0w?7c9#H#({q5@$mQvE+nK<`S6Z79tIo_BZff(Dd0Hv@OFi@ zE5?C}f@PY)5<{mn3FJ5xcAQsEWVU{D#K;h`&6F^q39AcmE@D|NxS;Ffa=rkZ;o<a% z#5ksT#qo54%FYDScVL|3a2PQjMhu4$$KweprJVHE!{*1yILPtPb&y;@3Xv^syz<Cn zEP5c05F(_Iu$CT=;5;V;68tCnfS4Kbblc%IL2nni+d#cIXT*GuiQenXe((Q(&fcv@ zvMfE%d)8_19f!<1boX@6Xa*uF$^<Qok|01A253o!p`YLz{~7);-w6;56EJMTCP9%L zk(`-kcUM<sWoE=atfMc!wGR=QS>3||W~#foG9xl#$6nvzeV?}m=Hwze6r&W4vy>R| z)0toV{7cH%6Z@XFYZ+4Fz8?t@Zgw4oz!$d%KEFB89d;B0NhQ?2Lv<F6CXFLjiGH9o z23^3vyF)z;6lM6kUw?~j4;*d|D4o%&&^3nFw>y6F_Q;2Ce#5Jqj{VW`Pk#DS_P4kE z`Jexi?>`JolaOCx5l~QyiN-bLC=jXRu9Gk!KS-ioT-S7xgCWk3))^XOu(8Z3ZJR@Q zvHLtfX20IS{}|8tOQZN7{-SzQp9M<l5;U_tu&;$}^UtEL_T>vLt$v*@n?rT>v6o9y zU0(Ln)oQT7c({V|sH)Dqw851nSf+NF^FdqGDqOqrbE}2weko#Gp4beNDH7Zv01^3q zb~AQYT2;V^zVM1~OD26KI!qPsxoEj6_(3c2oQnT>jk}!>biH6d*J5ZM255D8pkGbl zm)D0)s^4mC+pwUO-q5Mk78JZF)~`9{i}+2iA~>_8#;FS){`~Le8ISqa38MAtE_ix9 zmsLT(1tQf$U273N8KW=;b~}es31bS7Xd7EQ*^G~4O~DcpUDG&Gp8HU%54k?2!xs;1 z+qTtX?eSB<I7_$NN!(}6#eVbljf8qsR=9I5<1h-Ls=&?hz~kvrU`kqqXpg5eA3xqR zO`hN*P1ABb92Vl6d@qTn3^lkW*YRrGwrFGMc6-jJGmUNNx|T3o?Sd2=`^vvhIo7Do zSmQojbpa@xYipjn<jT(i#*_==6nS{;87D7rmYJ-VgqN<WPd`RMOd9LZ#w>-$Fb=eh z1LQfBk~tiAD5W@^&nTsNxIb|`95DtC)xvfjdWK=B`V@IRhGFFH?t7tp8L{)F6u7;; zp>Yj91cqUtZCWW@>IgsQOhTpxA!HJokTX6eA_A>)?T#q~#t>235Q1cC52J__U%z=n zLD5g1$p=zR)6`nCKOTfsS>$Kzhn~mBNAbgt6ORuMoX?`3fBpIujdOy9RT@{>2015D z$%nw*hmYha02*Zs&NhtWxV-N2IBB6~iX~P)KW4^8Gb4c2MJ~krS+q4MsMMm~X|XxB z*2n~;WJ1Ykqw!N<oO<5AK630FO-USDhwB>7A@cD&aT)@hGaNg^=ZA(@ouN5c*ju8? z*yA3Y9O@+`R8nZykex-l7WFt%CQq^O+0VYB+aKxu#E1KjJe~($z5a~T`GIljx!oPH z3fk7vS;JTV><{>}Kl`uz-Pi9(#*tXp5ekJ>0xBBEp2i9{Uy<q*N0U>%A8P^S2*W`# z*pJp>ZfmEWmo%ijbZpln_aCyZed;j(ZM^T7=lZ%4H`RK@Gh(i7Wa*+dS7nnnw>{L= zW%qcEAm7Bc@LXoLx)OgqD?YnIf|u>SS6x^KU+(tS-Qc29-z3Ma#=O~{mMauSSFgC- zOqK(_Tygg62`63n`r71LdCT}q*Yqh>;}*?ALz79sHd=Lt&WQgSwT)cm33L5&9KMY` zT^o2^{j~G%%WFGNE;jr9?cuLC_*=Dwy=@3|#;En*%{mIV`YK&+R{z(%-h#TFg^LR! z`7%LJre0h4ycBfK85-y6h#4k7$cWZjw1#P#YH^ho)pttb4VKO~&^C^?5tTLt{3PKT zH^&1dCx&5-&NRl<14ke#^S--j8cBS!vJ;=i0cQ=jx3AdkJ7SC+Z*Isr6GEzP2UXS3 zhFulmwXNfD+=~jl5u29K&lJ1ej^pu$-EI#`LSAMO?l^kReJ`K!0*!4@7wL?m_-~t5 zx;7=2s5J|ng{<X$<l+8I-;XF|*zfoCc?YJ^W3;PCT}vsldk%GMZJn$KQjC=oFYmFn zl886w*8>c_=WsZXQxX=t_dHhhwx426GlLY9bXZ9&ZHN6{^0h-iYehed^nG8&fKJvI zwd+m=e2{&=u?-nTw?D{EyK(pwnPx(smLhy6FDk7WCeQuDi4X#Z!wviWo){%V;Njts zz8{z-&wjrbgsqZ<yIjOQu-kPU4>wrj2tIH=oq4=J@!|b@?(RNbc!_6COz?8(Jf0qw z)yxbv5{s5vat5q1YZz9wsA<iTPFZGPQDs=@#eE~THl-EL7@V{0IsxMB4o9YO#8#`E zR)x1W2g3P8Q`eIr7ZQfk6!~~MalAcn+c;h+`0Vz8Z7ehzb=y%K6jK|b%8*c6q4o`` zaWGEk0;aRrn}+6Q$4%RD^Y#lq^gVy|-~OIZEZ^LnxW7M9ltDL^eRo8=jz9m4zv274 zGd^i@rmjn54U|hpl|ttXhC+$H(&$7iIXkb6vDkVpSv0m}_MOJO+THvKb8yE7sWFcl zpQE|W;SImdIQ<`cpwGvj-t5%Zcr|r_6G2@I)}BAqRavp2>IoNp71u3xu4}x>)uFzP zlvLZF^-8sWd04-&lfQV)$^}qmKG4^g*LwKqS&3dMK}^@Kx_0bFty_dEaGqN1a_bYF zwH2i(O0H^hHHTW*Md7+8pv|M~s(#<5EL|MbY60KO@5@S(RSUdFtIGk!dL8JC9r{cY z-lnsy6gU<#+k%nR>v~`=bhKds>FCXPUF+-Gv1~^CY(6V%;P3KY%+E#ZCFfq(m4qDV zRn=W0G5VVNHK*Sx+P0BVaMz)&S=7Z^8xf)@Mb`-!gi>U3QU!o_cX#yXehKaHA>h3y z#<c9q=L3De+Yw_}(#L`i9FIquM*Pn*u20-QJQBP>MH*+Z#?o~S&KYiw2fD7Mlq3f? zig6fucs$WGGChhhGL8eoDBW=59Ou(O%!!=AXj^w#G9_zT@lR{0quU~Oz7$D$&Tf$W zZV`S(rZFzCmHAhSNjToxNMKd2T9G0m(h%c<bMCs9<8fajTEh}q+f*k&DVeru2_f+K z_{h)?_)!2pTIq{vg>z1XPlbwe-JwvlHAPKpP16d@##)E>QIz0OY>lx%(WWX@G*ik< zA!3~4{_#YJqP>`}uNm?)2QQ@xi;5|8|L{mZNKuiq;_-B1943Zg<l*7O<KwAbUv(;` zW#Vx<ow>XF$iss~y-uTF(%JgHmnnje0=H>8jCGaxW`M#pjl>v0iMl?eyfh&*-EjU4 zE%rmT)wt-Y(UE3urUhziuvT;#)@Yp8I4cYd=bDNqSELx&y9R~<Q!@MG0oQhvq8O*Z zL*G-h=AaZ`9CjRAi)$=}fO&I3?VPxGjFCk^5>~zHEGY&UC#G}Ha2o4187T$q?G0c4 z&d+&!yy4^bAGv+?89vJd;UB*J2R{GobKd^^7yS93{RQ8>Kapr;xmeeps!l^7V{4k* zu4^eNi_*Q~l_|2CQYGV*qEU*y({wFZwZU{gIlSjA=$BwHo8Mo8)cn|A7pZEC@TKy_ zue{h7gtpB=S$<5RP!t<P%Noe3p6*BmfKpccY$;Fm*7I0(Gd5zINq(IcxAIw@5Xmlu zU6poTHu^8NW9oHguQvR0r7mX>vmHz?Jbd+xc5jZ%RjdO6wRDNgL8_k_o6ni$h@fY| z@Xq^qwQ}#TF{w{R*Go`Oeu8hA4@_M)x<Pe0l_^@SK{zu#a5L`TIv}(vmn!)s>XD1W z?0UttWixC&@^gVzDhGedyx*=>tX4RyiP4kNB&0a2m-T=)vZKyL4y2T`sPv7DjlB;w z$N@qM(xuNk>zK&Z_25Im2N5kfXX(0*`}=$L`#s}0a#K5S5v_@(OB+RqQw=+j8}{Sr zL`V^hqH9~mair@yc6-_N<(%-NDBRl?8t2&U+L{F)utt2efx>PlB&=cR<xou#Z5_rs z#(of>Oi`FI2$Uv{kcB56eWYo$*qyB7{&d0^D~CtQwCxV1$`aP%eXIw%ttns`*El)! zlBnU87VDd_j>E3STElMV2ywSj7mETOpdb2*!JYFPGR}$Tdv*+1Yq`I_r)ip+HSd_F ziH~>pmG6FJci5wi<#^MOvm&GqWCgZ^lt3pcEvyh?!nKZ=6AzD%%bIKn>e*Nkl`_>L zX=@iP_}gJT^Ub&KXk5c*pMAkJj!cvI>#c1rEUm+7s4I_Dbu%K$14$o4WwcTFAlHQV zAF*0+)Kbt0T*f*_2opIKrs!ooRM&Q?HiWw3gA<uVsbHzf)tH6Kg&IL@$P{uE{A}B{ zgy0DpS#1<yt}E*}4QHB?nUb*F$56OG4eS$G(})87=D@x8Jd*MH4TDeY`UzbWj1%f` zBYGRHAWBvQMpLxHqypBF44lpbua8HvZ8_gP@cQ-VSPQ@S>cCs|yL|obfjfJH&XKn_ zU!hA9)T~tmRR~&d#F0i^2|3YOMaWrJHbqylr)KnlowGHXEDKD>sJd6z?Drb;s=N7< zIR-J8LaP0}><oF91b5w`Z^!g6spLO3eqSIaT(Y>8(ih$N_0)DwQ7dXCxjo%&ZZo=T zkjs@&?y8r+fWusjP!}=VrDaLiP@83_fAu_6T^lUB`-Qo#e?WUsmQ!sxRMa|JR{By~ zFju<9n57f7=IUU%va{)>n8|AvTJ372yD8*K>C(nvtVJ8WWOEC|MPz!qR0aI}7<wI5 z==w81Kap5>`dX`tHHy+|;gw&wF}9+$jdI>>Gzn|>%|>V^-MQH)&zG>7jRXBUE$||L z{K@rP0~cygi=Z|2D&kTid?P1ZV`!`*Cr`I)F-EegbIB5oQ$;_ij!U(6q%3~n^GP}; z?^hQ1G|1jO=Yo&o`_(mPJr^+AkaFSu`}bA61&6}{g(BrBLN5g$Ki<)Gt^7BoE1q_e z!=v7?{WQ^aEv72G=fh19u)-go>0)i`mYC06wE!tcLJUhaJ@2#oK^WuvU5BYz@Hq*N zHh2m1nBiC<M9zIgX~(%ADr;TU(Z3_5z~m<i!q#`yf<?t2JJ;Z2l&igF(g$AwIYuaM zkEat#YeEQ&<FGU>)>(oVI-lf~H*{?)uTxE%8-@X;G~+n(cslX;D0}up-D96lJr55j ziDj+tm1`SZV?_fIJmcgqoU1w4X+x4Rb?Y1{#*4|3s+O{n#Xl}P+Dr(t$}!rC#jfuO zG19oo=1&>#14BPBjDy(QVy=_9x^OI#+NKmVt)*?+MOZ!GS7J<Z4f=@?#WHDXu7F!G zyt#%rtvLy$7TnI+x(X5&e@bydNSm7Cr?mntU9X7citN>!25n?F?_9&+J&Ho3H4O?| zT@m9rpwL7LSu1)UNFi`@v**wn4hnSipfj`<Iw$*npCLv{XDO{ig$(^b`|1_PuYOK$ z9q0QG9GVVgAnSk)BTWjZlG*JVZg-Bup<^0OeEzea^7zp6*T4J?xwQ4?SoIWTo(dM> z6KExkK+ZEZS5+l^p|u)Y5}h+N7LKnwIn?LTyZ9E<g%C(z1*2Sd>Ax)}{zb}M9UaeN zs3kpYqYj^;6wigAJpI1v;_y}1oAeEy^rb^xv9*%v3$*D|h4tlgm=*cUb1&sWL^Z3p zpCjEp^*VFe9nL~BrJwcN+giO!4zybK>)S(VD>mFlhn7-mB|R5PYRPYQ&aIX&z3%tb zlGk2EFnX<Cl+u{WKK?P+!!;RDaW%$Q*E{(2fWO?EuZsUw`M>VeuXp%*Ta;cGSMVgH zXFDp`{=F^NoI0sdCDS+~BlSkQ8P~`GqKzS@K!{#;z?G{#da;g$7#YV&QpRFhlGNts z8dE}P*~ba2Lq?IqFba2N-ltbA=r~UDS+Bd|{eCC>@~&I#XV$u9BB8YaMih$u{!la1 zXUmjyT(O38#2E43({-KD!;oN?^ZC3)wOS{_JdL64I{YL%=C=NMtRXB#m1QarVyWup zh~(s%`dWyBJ=gJ)kG=}%O7+W2K_u6;VhWM06tViUOMw*gf-)@>PUkbAnI?}hZt=&5 z5IF1)blr}&ZI;iZ_o2D~R275OJ^EBt`i&^IQys0RT$sF|KPMmg?)&cvA<=amhr@vo zJW9!$V43b%&8}_9DK3Fghy6}sWmRD-1zr^VC1JI$>lq0ZnOCMUhMKb;me8AA#jwU2 z_PdV#p<`be|A)g)f@XFC9nwnGfRW4l#^UU#6Tex1l9Oc4&!6p?f~ISLQK|$%UDRT4 z)Ad>w%b++PjL}$U>e@lkb`3F3?Do4F%u`8{M)XC;ro{qrn$VT!-*hc0XHLU_X*wwY zW8f#RZn&|A90sz=sC|cia|=e3&m$!yXd8+F6AJPEk)*-CK4Ol0%rr8*e@~+`##zGs z3DX@!r(!ZUhaE~6e)`o{q!LkC@i)KxH6_Y9VHV6+sjpjJ){#cb0Wa~y3Y9ahv$R%W zN~ARkOX2orM|<01-n2J=lAk%$C5-<0w6k*6!TdIR^(W-GvR;(ZY3d84r!K29eSVHl z2rn-c6slYv>Pt6P<4osNu4~#^ecX$2xDuiqm$12~#lTfJ_axb_D)MzDPnC`3=}EV) zc#>PbbjO>Zl*@g;!f3<_WTj&_#ykO}Ttw0?m(!XLo@(6cJgLxipKj(9vH1g9gaV~0 z)mOU(*<8J@&;5+s>!P;TdAsu1jLGN9ZY?4=A~?MnuU`OYw)%>vg@AgdxOfq?bior) zmx*lJV2rKf(8>wOLSkEmc?G32)`GRN-jJR5NQiM0yppARvrUcA6@kz!VscIbRQ89x z>}K1Bwr#N1)Yoqg|B%e|qQJEchvR`5VlB=Lhr>alQMJN2Thp@y5OO}B>s~ZUmqtAx zjIO~bifNqa&jT?e8rLp)+<o7pl;Y+_Ftbh5;3vNpXa&3vl_PF>{rXl4l;APe(j6o; zMOf{kvUg2O%w?G-<|6)VDL$lwpM_f`i$Z=JeVwuyd`L__iZ>l0l!cnL9;-qhC4@I^ zYOxg~(-b5SB`ePTz&Ln0RB|DvBBSoAK2I4YFJtiA+gEhmUWjvgeLUB;H0_RYnm`#2 zha)*9`hGxb!_CbRXDb#IRcU}}vG~oYeli00wOEx7brvG#BI|}!q<D!@Y-cjX6T52& zet{Y-_aF+^YWDk<<8jA+-_mssV*$O2*oOWrDPkL|rX1$F!ea7;z*HtI@_43_>`E?6 zqFbg^7JR`VT7gn0pp6yEo~z>AqH>+W?CM#S=vr4@7Nr(-^JK2jS_9rgjiWWY2IUOF z2XwRJJe)Bl^X2PXZVwI3&Js$*9&b>`Jy|J=4`Smr8tp7<ir^C=d6diO7>Msqq&{;0 z-3Q_r`S9*N!~Gq{ouiBsjd8;JSCG4g-SHLQefNQP?>>qPL(8gpPBongfs{hy8cLSQ z1xc=pUDMELg)ND_F?5aQ=G7j1vlF3Qez8;MVh8)&!95=kKNQ%q?MSc3_lvk`Njc}) z8|j=WzNLv??};xR?qyZb*T*#518hr&yFS#HfR-(Iq+E3Ql&60Dtw(wJvrPe0s={;G zUvCPd>&`vbvSZO0sMY5@A0F#qdEKwc*j-lvRGk`JAEKLLs$3nq^O#3Q@HOvPn?)SA zbm>$@bdk(wRSzJ|CTo0If9O@-H%}O@brkbQakGP874x$gZH`4P8!_jlFj779^KJ_o z{X!9?=QWA?M4@<9KygJGw8jX)V)oEiX1jG&z-UDM4iYW7tc~<Ks@xwAXeFHQuC+9+ z<M!sJrhiF%X5XI$zZyJ!KXC5POn#DXvA#$1=(uTGntI4Jt&C1%ln$-yTAH@4Z1Pe? zWYXPht!q~*Xwg|WkWywG1^qdWo}r(JF)cBgrR2)<mZUTa3!7ay<4Ks{ZO1T9Ow))n zhBt3+K|`o{-A&grg+PcRg4-ST#GFuMa*oygph>Az4|frEd{LbHk(>*YkBnoGU3wAN zichKT)`e;}Clcn8#rjp(A1P)b)hWX`28_0{`tVYC<qSSXVv^!)PI^Qc9!_TwrA=Nu z^D#2{MBk569E^!6MEdhUieg_I$BFalOpFnuMNlcvEuj?n5actj6(PpOB2rL<dHO&R zF8eHaMb<E?j>~hAaGVt&wFOw`CCRaA4aP#z8H&8-!3W|Lh@(fVQf+2+GnrRwjoxNT zXjMn>|#Z;}!y)@G-2jloSOjqs>wj7%gC*Ik>9SG)Pg>npz+WyP%|b?NCX4^|45q zR>N)EqK(2dRucPMOEH#*^NHdEM`!uj&whe!HAxrj@qoJ7p{z#5gi69LP}agQ%G#vs z$UZUt`VJQi`@^1NXV|@d!@fPx7)zceJW|9?x$tm$<mU6wFg`LoPTYV0k({K7n$NN- zS6;M9&RSuq6oo1pqm1m(ji%EYrwhkj%kAqU_U$d^rXK29$>P0K0fva5>P|&He@I_< zfS>BtU;Oim2rTGjzjDFRR+}U?z43kPr+8Jx${U{rab?RrFJ%G6%(j3TQFswVqU5kl zKwfs=tI=Asd2L?$`LtYwg>?o$i>S2L7l>4)RTX)Oa#JX4RP5^7ozDl?JeDdbiWV07 zES{^@<r>?`@?lc-gLaWNHy`9iT})1L&7RIEvQjlnM8qn#s@G-rlTle933E59v=K(~ zlj~yrUr}X)kG&M9Nk~qeMCfhki;VEiJZ&l4-JIAxwqP2yNq$pL$h^;W=JFaBRf^2& zasU7z07*naRDOW>yD1t=TD2eZXupbAa!K;;YYC)CC6kKSoFt$n*WyE0^}7@Qt+kb| zC1D=(s%01l{3I&&ew^e+9uhG~_v0#j#Tc_t)NXEW=sJO^q$rH-o8tjh+326Wens0D zoY9ig9U@j+`g6Z1v?U$O)cwB2SjXf8#<<!DWUSRRjg>Hzrjev5V;F~?;e4i44|9sS zcC-=|nvzh*N|x)$YDLr9#cJ3zt>kALgRz>F6OD6_3yp0^ULYo`Shb+6!Zs~AX?!e% z2q6`+QcNj`_(9E#eVJ&KYNH4_6LUdZNAQu7#5OdO=msA^8Ddt%A|X$y>IsAaFKdB* znD7<*sfwdyjSqPd={YA;6|IEv9&^DpZMA*L{@;5U|A!DD=W09EgqX=n9yez(t(R2R z<j5?qwctkdA~-HeI%2IsmrU2l1W8~fRpX%5LaB5WFD$wyOUarrCgK#xQFi>gcG<bC z6vr9hWaja@(ihgyqL9QsJ&)%ld`ck<j5(TB81@M_Qv{7#ERHf2Qz9sH9jX{oQlM&( zkA{#V+E~bmee1Zn*<me|G|?IZDbuu$VVW2!HutAL`HcPEVjDv-8nx@dYScIq$DUvk zrWEv$C@GWC7~SIUd;0eu2<Hb*!--<{#AxtA^d0Ztec-d7{u7GQynp|Z*Eet2?QT#7 zzWx4PMfTcC@|5#n!S5n2CRao-i*c2xSJ+$4&cS}y(sm8qZHIZ&V#_mo>5CEh3y1or zD008eFSW6670NRQ&qi=n^u<p9x>G6}G8>yc{2KD{^5d6naLbHJU23KkQ~QJy{{nA* z7XQ5%fK#r_du5fXt=MzDlF8Jn*O%@=Eh%5~bJTT&P|UXAxf~O#mk733s{duouOtLR z&jlP$BWh=M_o8}7J<H@@BUon}%XP@hY7Z+_u=j+mUoNK#PrC7EVt5zD+7IB2*T+&% zoC(ie*K2XMP8D*=71mQxpLK^n=N*d;jVcI>GKMsA0}$o5q+aDx@P0&<Of04DhNWm} zoMbPT`oZ7VJ)tsYjbg0(%6-?-b-P8u9b%x{H4??ybxhO9hwtCh?)DsxM^ea3*oSKx zrZ6%2sTO>R$Hy}%CS2_z=TSTqlvCsoAVcd6df!#xOYIV?Pg%yxFirj<74UrSF;kuB zXoVkBJ?H|-Xsl68DbqErh%e{vZ`PA)D~ftk2q`YU`k82EjiK#Yrcu28R#y>L6b~|4 zidSb0SxFHwO@0;SDveKZSy{{i$5Y=6V8=BmwD{YLWL;B)yRMcz2AO6^;gxB+hFqtR zGlxDGc^=~^k*l{i9nLnK2T#fZSt%PY$JR<&5|snKiiBs)j7*N?9(&mBASXs+s$V~$ zie6j+A!K5Z(PoL6p`S>Tr$iZZlZ6?NE{kBU-h{SBmgRZOA~|EW_ARyGt&Mf7byh>J zK{+Yqstu^Sa-m_>&U_9((im+ek<uXAgKF!Yd)}lJUDGn2C(eTh6mM@|@#f|Yr#{e! zz`Mr>zWmwG$PA=LLy71hX=v2diHaEpah0e&fQO-HnmoDdc=Pk$;p6>8Oq%=mBmMc2 zVk}?3f8^nz$C`%kzWs)ue33|L<R@Re<?)m`^#fWNNeom9r7b=tI@d7zMAz7g*e<lK zBN2(t5OhXci)%Y@4!Ye{p87`3{;52b9~0*CkF~Wu6^?B}X0C6nc}1JfyYX^iZ!1e; z8CPknWm^fLo+PPdp3?G4O(A<uH26d>u#^VdA8;Od=?l`G+N8A2=-2D~b+sAS&#y^& zV#Aw*P&V#?Pvq0juj#dIv21|ra?t5Z{OV?Ot~b8$3ya+|41;nNx}vW=`<pJiY(m&B zH3s<!v__t1xh(EBp2Jx=y^iwD#r36Tis1GORk?V*pL-o=r0%TRpU3(}E1JflX8&Cs z?U$PGU2*}n?j6S&no&EyS#b`KgV?XMF@ke#JFIn_A5W;Zp>vL$BE?#=R)oqnSICVw zc!96XlNJfokj2j9>5-Df!<#C=MXYi1_>Yf|H78xfc_~OHx{|vo8t{Ej(>V4O4O_A( zpG%H)M{8xLtBQnFSV=M)C-L5!I*L`bOS3pqmeF?%k){#lG#apa;r}b8a89OWITw^M zf=N{pC0a`4a5$2Z1hx2>F~;J@5t0;KN^43KL0JJBYe_jXRWh6;q!qMrq#`0lW7oqp z1R=F)EllnZ0@gTU%7iQeK85)GLku`KC(DUw%NWg+0~y$LJEmch$IO9U=O8O?Z;!lw zeI$g$@ayj=CDwIV?W$E?0*15}gzOySJ71s6)T^XA6BY4Un8szQBXzG@av^er6bfky z!YJ?=T|`tkb1bf#oca2fm7T0>B>TNCr__3HEUa7zYVozT>4_h^h~0C(2UbkCQNlx4 zb-Ia`HAtc05>O($;{jE#x3=r*!LE52BlqKpUArf|f1nQultEd=ufO|_Km4QL#TY29 zOxIMZgp3RX>6S|$Y5^a3|8U~nxA!Pz=<wWz0b2%c4!7*gEe|KfIYk~%Bj4Yh=vvJ* zo@m+*p9?;NvO<tN^<JK5Q6%cYj=~zpq%365v2*z1aZVFjN79924B8n?(?ZuhJ=C9c zZ0d(aZ_jl+|JYxj8sDp;7IE8kr+Lxg7B(H<lXLa*K)>kr)q0pb7pr<v2z;s#xvW91 z#c*rL$F+xj6O^;*V3s1|D(7ZfkF4GO3-8PJFjwl6t@;WeT3XUoRHjAYp6lX#rpRsJ z^$W14s7vt9tS^|;&h%V?Z}fV3sq)LS*W-l<2d)agYR98IGy1<Qini%sTtkhXO8j1& zZp=k+VRj89no4m?*{^_}s^X0?pmY&1OZAk`IMZpG2ste}m6YVLGX=D<gdA(Q%P5NU z44t)voS0%_2%fBEG%QF@!_<!p!=O|emsUblJNKsw2vMX`#a}*Pj3w4IFiCZjXw}1R zhpQr{QZhLvoVB#ZkbOYedblW!*nLM_(-G?Tv_=GL#wcR+bzkW4lb1DxHl(7+m<l>k z_$kmjhgL~63rb@sIHPG@E1BWI=shJxTqEdNs}-swQVdvQiBarNq%3>eT9lN!yDe2@ z)*3;B>T0bENyflk+sd9jXNpRT-bNuEwrdP2CMNGO*42@;2-<Rrv~5!z0jsVi#vq`b z8E#TCjgd68LuYt>d&}Y2Vj9iEgLwXpmJw~P_hw^cJgao6*I_0{UG1=2w+kC9p=7B~ zb$XL#f}|>o?KGuCf9mV|Toc&lCaQj;8Cs>ZCfBf*Qc7JLU9%+0vTHZS&09a=kf>M@ zx$ECI+E8*W`m!WIs=1NVMLKmYalk25_d&>Xt&FF2wSF~D-V5zoh7_34oca-lj6Df} zMkz&O9goAryKmm})lY9_-B-uobI=Y!Rz+zV$=dMnc;+|X-0|TY@LBQ2mv7mhJpSQ< z$Bz$`q-hUFT(@V}6^4GOEQF5l-Vc2D;mj#%?x(<z3nMVaj8BPF3OBbmy#4BDgvoP% z_nw`W6gP4psg|e>YUfC{kgXOQUhA-Hh|3EHbK%D(p#JvVd%1+NYOOwvO;wlTG_@J? z%>S?Jg_|~Kc6s5s6}9f!Klw9heW7|5>R@>>FaA>)-7T18od#?yQ}xeh1p3yWF8eDP z1xhDZo*u{-zV_<jS8I?B>iH@3r4wN*@t-r<Ve3lMT0xqHX9(Y5=Hzc&6D5}mL@HI? zIoo0`yY7`Lw_Y0?vhR-@_bjPh>tI1G1?u)^T!1mpy@yYhQf1>-*k-C%8%j>gcu^a} zG!3L27Tw7@A(6eNgp!DA_k8XpRK!}^R!DI%Mly218x-1E{21x`o_*Ib4kM<(W0F|O z$Mcy!1hA&UY79e4(uo?ye!t`9=9P>M6^#9WDT=znC6lG=uWWcUOd&||RWe=MVm5-) zX%dw@38I%Q>KLRWG}W8lxg8-%hI>j`ta8Tj_;{{@LPx1_p>5j=0yji#)1s=Cj+`Wy zJxv%5UE?_J8d_&iWTFxRn!?aJhYyn3E)8J7)x^5i8B)%)b#gEZPbE`aaJG-9$7Riy zQbYkw9qAAK8LJJX+RdhnvIZZc94IM^wJ>^7<ttsILR0l!OF^ggJQB|$9t?6A_Wg<0 zS#(Yunub@0hC`=lZITIxLH6)<GNFwW9bbI)6+ipxOaAt6e@WjDHB()*QQI(~vMP&- zxiE$VS|$e}Rb2q$EmtUVh|B#`G%Hmrl9GsTt-NljPR_0^scYd~E_flc_0eiw1F$5R zr9u_tQ(0<MZnf8{k}LCl-9pBgWOAzA^4SqR7#!M`-G0a92f?zc+3IG&H3SvFSfZAK z==QM3sE9S1Z-4VWU%q)IDPOJJ_d`{`Yo#eM@_0Hi<V>**w>LMO!kO>yd-`{eJWLbx z_q;tE`SAWsQ6JbJEbXqtPa}=H<*<LlxsN>d_q@A1aW@1$K92YVAwfa}QRh?7`0hRb z>R<kAe)kXmd;a?W{!>CaV~VCEMaqhzEzM0sd(%)F4Xs%_^{s+?xxuSXkI0|1C;e92 z^s1atTw27Q-elFYyWd>(R@=jS=?v=^lyZ4MTz6XKs#v)Ay6gS%=Aiqr2l`8|Q?4l| z>;76TVw18tEH22hmF>Pz;AVw?VF7R~``gW6|DuVn>hLEo<h;jLTf0`-tTW0bjHT{9 z**F4b)Ax*jR2Qs)vH&OMk^iDrpMS($)>OV{rU*|Wbe~BMd@`#jEXCq>V)Fd^botoV zw#y}9Z$tT;cbd7vF{INewIk6L3o7KbSPy{N->oQ&!%#WdVhM{mGYq5bDYYg<u_#S_ z4@%KCEyH<$q8Mth%Awoiy+nm7>qP7rBhGf%MnlP@DRTe*PHb;LKlZe3M{8SATPw&j zNenQmaOk=v|G-ay^DqjnZk$BHUclH`S?sb>m<4u5Tl%r*a6B+gHKuhOY1*Ce;fG1m z=#X7^tmD&m*W$f&uqh@~mK~{4u<u%0r|GPsai+pn3@A-VnUvw&PmERkHB14c=c~91 z@{|a;Ql+xxB;)AQ`BbA<{i2>uDNDDOvRv;u3rMIQI(lBe7$sJ+B!`gMh<J074ER#N zMk&i~*Hw?Z*!+@@>|Bc`6Q>F9GJ_Q_e@+(K1~3bsz-m=vOySL|H~jG*|9d`sc+bPb ziN=}DXJeZgp-{$Rs^#%KjM!=|o9`q>7aAw2mnGFAb-p>4SSJr!^5YSKZq6C9OgqS> z+Ol$WCB!O-lof;&b^_7Kbs`1zI;zt^YC4{-&D6|+&p=G#M$oDvtfPRP8smf>XtZ4S zhZbv~IqV@NZ0qWMwP0OCE@zx^ym@sX_9tHNT8@V!{_&m<cMtTZiQRrr4g&ZQ;8uc^ ziK8c!LNb<rc=w*iUh$!ieC!9BoVh(V{N$@IX`E$v^mwls9zFRnG7gc)$9ps_MH!~S zbGje+{{GA<0?HC=XiY(O`P2Oa|NDRWFZ{tj|9$@WfBs+i%m3p)6YjnzXCu0XlG(qy z#q1Pj-;$leygt18lTy|1*Q4SE7^0pY=+9ZyemkzaSt2kuRFw<iky1~iGcTgRx3QVq z$6m>#%XzNVRbKkmilo%D`l{=(`AUu}n-26DEy4>rg^Sl`JAJ4V2EE{VS*%s6?qNkB zmlmi=SrD{k4Na+nLu<sNZjDsbMs28RYK!bCn*+9Tm=~g4uAwe!%^p{JRnspcxLFHO zHW8@T$#d(WzE~y8Yy(>bEwd;dbqW2g29`CQ?HM2WbJyT=@5%N1P&Tijx+tf(lou|Q zqgusDTWnFiPIp~Xg<+*y0OfEH{(7ik7Y1u(6ltxc?OL&4O`c(zD7g@#Shgk~q>~R~ z`6($g^dskCMAu|5g~m9?G<o9S$v#kGBF9Mdfe<`e=}Iu015xC8r3#M;A=39F(>T>} ztbkQc{ZMn)H7QGk=P*WM5ogFSMSM(TWtdXNCm4MsWGKq=@NlMRDOL(v{MbqhG0z7m zg_y(+XRKgfbB=UPgQj4$@UJ^(IJAy8H+$Kot5UNKtUzddlw9!W>y$%;Y`P|j&Af(g zw`cNkahafJMt>D=&RT}DM(557Z>7xwFs?##*)P|1*(?TI0;VdzVX1qSz<6e^!8lIR zRa1ET_BE#dT=U8!q)aNBeoDls@MB>Ze2ra|&+Ykq=GVXa6(2s_Rgzn|(h03X<T)6n zRG3hV5v`46z*|G(Om!lZ#hN;M*R_JSadb^9^tVziUJ6{}D7m_!idtM7g{_!Tv<KE$ zY<09cV=xuftE(N>RZFO@KJ8K}J~j))W)`RF`o0-$*mpZfML6(UvD-PCPF5YJNTH%j z;pXN@%9)3UN0e3^P2pet{_pX#pS)%m9ylC!G)m+4j@Q5V2{C(gsn)X5LzY0FyZe!M zk0X6BeEq)X{b}GFBK;V7_wEDzIN(DfCWE#+ymoy3?E?>wi4YT~^CRy+-f{OZ@SE@M zx%Zi9TSAu4R9XU!gqx5`;oI-uG4uof;XnLG{{HWNg&|=};@BAuJIn3s1Ln3xe}0QC z8(8*_4QP3(OZ`Xf(|-%GeA&R$%fbm?mFvrxX};lZyR$3adQqQ#>}$%LdO}ZnIbrSk zfO-B<-!RN)-0gh8R3VJfEcina*ib1_t3Q9ce^whY$#Uq{8;eTi#h1HivnukhbMLnY z+cO>RoV28?f`6t$71rmW=J#j*ZsqFr-Kgm2;zF^i*5|Z%_3WmdCu6^t3eM*{`!$;7 zf{LHjlQg+`gs;>p7MLe2y4wDX(u~tU*R`MpPZ^Uap-U-ryN;%{)pDrl+K$utOiHB^ zzM||A6*A`Yfs!*j*HJRW8k4HDqv=}u{>;1kkCYfOC>rf5-ETguGNz(ZbISDni1(8S zm8~Hu@v+O`$bqxW?_SIqV;gqI9n%=;he1Zy^>9;Yn!^qIy#&MDpC4<WkO8e}T|@GL zVGI~61qr1Prt^ZJo+nHp20};}EjQ;JCY+J|d1EcF4m);M6TK&@Bq?iI-k<pZRC7eF zm(PmUYjK`Z65DJDWD2%%Xe&B~R0`Uf1>c-PsEAbAwdYvxA;wTb*c88VQ2CTDR+aOL zhHACkUT<@lj`v<j4<(C*$|>62foat2x{eqF-SI#_4&*d(diX%evRZN0pmYMI2vgwK zzxqwRE=`>Vu&B#t&5Nm_Pg;XB4r}EA7d)$2D7BITWnN+GP1$O#9L~8~AIoN}E^7r5 z8IokrPi+!o40K&bN_E{(GOC94uzaR7jWswUp7R{bva%3c^DLB=yFkhX<Lq*u&mjri zMT0fDf@tJg)5a|HlN98TZX0>8fA61u$-c?lfBzf)@DKkvqmO*^SARo)I>}m~wdB(o zi=w1V@|p9)#IL^oz=u%q$zbiC#%89ND9Y0AUV&}-*k|tE-*Y;>qdn~LsnCxj+U-dr z^kd-rljp;fiK>1+=LR#&J)RWnZAMd!;m`m2m%O@t#qa;ozu~X`^gnakSyJ+-oUu)V zYTHZo`?I)L#gYNO9nWvG%gemO{L$vMOG{T?Ztl;ArCcbDOS!O1T<2tMvPdr1&Gq0Z zn<L{oDD6Vjbw!m^tKx0>+I)e1U9-#QNyApGHIuZ~g?3?0SKsucrS4FxciAXiQ=|&E zX>i6cjAQM3$`j37naA~;+?DyTT?>GxZ%f=JkQLCgM@VgR$!899eWWavy3wm(XnSJo z`hDd5Qx~uCB1PLi*{v|JZ2kF{33&Vf2VwrZGnr}o_3O5wT#ehGPHL38Y<8}5=&wu% z%d{k=NYfZxV}v+nBtmhwYh=2j3)(_Vfu`vg$B~q>2*Z@@+Dn1+sfMKNc5;ACo^hIJ zZ6o3?G#@`cNUUYf=mN*KL#13<+OF<%MddwuUx6vIL>D`j{I|#Rgtap6_P(;h>jc5a z#QleR0k7mt({*CsDHT3qEv9Yx@NiF2!gf%#vvNw4P`Jj?554$pwI)_1DLF&Ti;7z- zp=wzzU7Xc2YPJ+g3Z$axb{(b_j=3@tCZBV{*@k`^@u8rU#TY4sjkD+?yIh$*_yu)5 z4bu{m<R?iK>$-**CH_<yIau1Z!TV6z>xNj82-S*OuGj57Y`J!7=U;MJ;$r8NwrQFq ze5C@N-hcQ&$(g2Ug>;9a+iT8a5>eppNbm_us)wScagE?tQ8my-nul>5+3j`}_7f>7 zV^t=lfKt#l4JD@<km9TQTrOZ$pR>MbY-%%8scq8X*PVC~(OyA#2}Q3o$OQ~li-sJl zSS|}Mpw#J&(ECy?E(EKrYhfZ&fpwy4jU}Z>tZNNb83#rec5Q>wHEAv;ZVr2Nk-xWV zEzwUj#$b`c^YQe6N`-&%Z~q0afALTF&0qcvZEJbBe;|w=d(=|M`9K*b{5dl8kr*r= zKRl34SJ@Vdow1n4GKLc|DyEV-ynanqBk$jRVDv&uygv`LO~-kF$FUH!t!o7VhUFA7 zwXw_f&YG*ZGGqAD|L6bXkN&s+mEC8b5&XS0d36l04;|&utwcFhM@&x=*VN1Y^VtHi zwe!5(W^XSO^$cWvvp2osq^%?JIi9g>giKq?(B+M`Y|`E4G3){tDLlPn&o}3??wN&W zuGUev+Ipy0*n<4C+$1Ynt&a9K1iINXKObl+FUN}31!pzZLfcpxC!&}*P55bC$U=Z{ zs+XwTyo$kU-n6Ni;B&f>+V0V>xUxk-R;y=}dIPGTFN)R}V<q0RisEJ>odkL4<$EnD zajIPK(znjRC)bF2YLUF|=4Tkvg?({;Kd-LKt-E0+B`U2p`~DUCJKueEeFIA+)?FFz zuYR`e3BM*8%1e@HoTcroB%OsIfjTOqRar!QDaWdQ7W8Avl2Vnj>~JR^&}a_(Bi4!_ z%2-nmSsBMao=zeN4GD+l&HjkX1zSH8GdLuML@b%C1mr7TZfRqukO)ymx>JZ)*O0P^ z=X{9tqi1(Gl9dw6kN^^v>5&Kn4bwQ*LQH(?rKSPJ;PD|4Vv-E<l4pxE#yKfYTvNT- zYssBr!f4B3w<iUUQhBj#=~?g?3nj`v*Lw*;nL;8aL_kzn(!l1uvNaBr!YEtS+_3L< z1RoYh%B*3~HNZ$#1$o(**N=!y0J2&-T75Cok`8??g3Bf=LclYYSGTVSAuZRst&y5t z(~@(<PhOb$6r!B|6u?+1?B^R>41rQ9d*p;lsdn9>E+<7w2y~5Q*NFX5AubK0s4EV& z#1T6;!+#3a8H`=;?Iop!<cQMb4FPiT;JZd}s2ZGB*lO;zTGv&g2<=MAxSHlRLw8b= zB7y1(5%C+8Bvv}j3T4W<$k?7DOazr_8p%}98i_a7g<WH5tfIAsI0bgyP7(>N<!8V6 zoPYc8{~b3!x#9H9*F4_cv+wrw_YbuDhQskj2y(#_KRj|id;ad5JAU;KANl^i=QNC* z$BEG=QY!c`@%HU&zWVY@qECGP&A0erq7=*NJPME~YYAf-J^knz>ja4!!ebOPl>}O9 zM0hN@x+sL3@597@_j|uX|J~QTa++6%mRE0%n9q--FW;=utEH%CMM6IWmw5sh`4L_F zq9DFfD6duTC0t~g5L`XxvIiqyeyp~u(CQ;Dtk$s0C>J)&*EQBOFWyM~1gENsl5Tdk zq0Kg}`W*6;$wOHvcdAxj@^P@$!z^JaPG_u!&R7}uP-yloG0B)vk#J5k1W}4A3VL~d z<uX2YrqwB)ypB)Q`Q?Ibvz<yW0Xu5TbgzkG@?PdktDag_<;yhWY8U>TVC^}_z)OF3 zhWk9HVYs+<E+zt-f}o!I<zfPJ-I4!@>v)+Ft++fN0wH_awxQI#Z&ydVC`~_%q!LLv zpcQ=f<}+fP@D&-Wlqj)tocFVu-EPM?Ox%6EV;Cn=%ItPK5e;e0&N#GDw64SVXWFI{ zp;FFR*HDzih!zyaSQ@4A$xA_(vh10IXBekN_h79fBb{x@1*;9A2Ak}5auDwKJ0|Zb z2~w=7YExJcpVQ<qHEVnv26D>m+Ln~U5>As+k<_W0TOLED<;BD>dC7~ed)WootTe`H zlFy`^M6FMzRDXLZs&dbT#Ad8rqIjc^q#Uu8kv<Hu9*UwxL8}_Pk_lc`AtB|uo>a@a zNtGY7ITV|xDth@0c<+~MS}xzJQK{OLX`0YxUK!LvN^ANwE&1Ye;hs_^<|Jrfz$!Ta zmDZ$D1ejEO>o83+7T?sW)WgzQEB7Ni-w(5_BbY%pa-C3#ktNS*f~!?cQ-h1N#u}mA z$&TFOy+<2Ui-4IOB0K$@3XOAgT}PaJopL68N;u{W3kNAmFjWDSB8^exX~6FHB=N@* zN+HKYgJHkhLz-x;<@L=DofCH7vcK7*zRNVbmbYKLX7}Y6eEj?W%Ew=S&Cmbff8e{n z_;0k<a{A^SpMUuU95l){BxQMjdf@Nx?)m27gr^}ngO3TFGCONgv2gx)qCeace8RLH zcMo^?Nt25v7kD@g?An%C6jO#+WSRv+=4`E|(OU4f&frU_>m-F%q96JDU;P9B)4%zb zeC;!n6Om>t1*a{>b+S`m6L!ic5AYwN#eMQ%SNW-L`eFvIpQyFBWBu)cUS!C3L6ngL zrO5bazVWL}F{N6q^3`*EYL8pb_j0KiFZ!Z`oV)m$h*sv^*|UP`Tqg@k7|PWeVXecM zhQ>NUA(lvEGKa3gDcRwK3i5FFK*>_EPcag_XH2o`0-o-gpNx*5OF(<>z1yreo)&K# zKlx^Av8v%qEo#b-vN}GyoBu5s2%iKX<#KtrmlZ*~kn(2T+XkYu*Z`k%Ej(x5xKLfz z{CE^46>_RO&Me$<Yb@h9;)94~?mph}=Jn08Ym7szLas)%6NQ*s0000W07*naR7FOU zhvSitA3yT(<DHCvD+s1(8m7^6b91Z_laPk7GROrnf|0|iXhqB!YZ``e<al$Wf9Qob z-*&<cr!4j>J#*SCK&2E}x3o>m6g<%f6fpFI2*qk=-uGvW7ORuQjf*3|m>S}tMSRz` zZ4H}|B)aX2Oc~4W&_T*PoKD;xT8y<=YiO*XOQkAP#2nFRoYi$)X{wk_64O$W5S0|8 zP{)j}FqBdc{5oo$ai&&cVB4;hA|`|iAu4r2FFFFr8W&7)z8d?jpRr3zq!QYSxEhpV znnrAmGo7Xh=WI=A)5JXERb?F)vk2>AN>yD>&3jKvTqj%RIl{mn$59A|DN}SIBZ9P& zrHh{Lb-7NAY*n@ABEIZdKq#WPLN1Cp`Awm%7Y>6!VKi1rikLM*PRvOfuC4GmR!_UE zF%v##vJY~&w;dr(6+ojYA(CUHF$P`oQaqTdafl^>YDg%CQ_peVaQo_(zVCT;Xlab5 zF`DDC<No74U1u>S(>4n2J$HZmH+=o=ulW6c_pkZ*n{WC2_kPa9_utEPQv#+mFlGAt zf$u+@=%-A^k&>p5iBKI$Qy8#D(H<H;JoKE-XYL;!tH6|Xs-ZHc!4pyV48@4ZQ00J8 ziWWsv*N<gh>1pU=kb(-ucke&)&_{+TGdgJ!MYw9vwplxM8Kdi3^*(=CzbKA-hO+jl zj(xtcFTS4u#Xvg0ddlj~R~E0!{d&F<?$!8{@-zYLx$boS8oeDM)kjKI2%~0y<8^UE zzH~Dy;d_^5gj@e_&KpL_o}_j#P1De{JG$=3uHDHlQ5OseQ<8+v<U;WS*-Px-VZXyU zLsmeHy!&`Z6r1q&nA$*S)-?g@69w4|^i-vl>>^pm&Qg)*wOCQl#M>5i0XKLlUiDMO z;7ik>=d6KGey*}1^KE{gyXhy_!gHj!=P<O-ekLwO3iJNdSW8OtnnKkWPfID9;4_b> z6IvO%Zogc6l7MGun?}M^tQ?H*-@j+5;UtpS<YY{qB5&Tl1{5FOeaFE$(m0W0rj&@A z#aPN<oI|IKa}6mM&V7${!WHj_zGjD~x=SrI^*LB==-Q5HnlO!%-|OL4Dx%XE$-j23 zV;o0GrPCVky$GLDt_fojr59AeT0;n89h;G<V)p~r*hOuwn+6{fAwqN537<YkZ0+=3 zzrMwf6S){#rO?xangX#1c%)cI+cZ_ESn608oD<>J9CO<q_MH2(bXQsgeNy1aghM8L zLd8?LEUT1sg&tmPwd$%tQW=F=92DOBrKp*+7NlSk>zz`HcGr>;1fPfn3C1CVR=hgC zCZ$M963a^wW%x{KOfiEhGTJVsVpK(+W3+`L<Kj8#r6@&Kg*dK1>wH+x^t)VFL(BSI zE3B2zznj;!B~_MxLK5ren~x@>fUyQBq6?{1MN@IcszC6QtPZpkC;P4?imiYg<FaaX zR-iChX$Buj{#4;Wp5vh-g-F{OTw`S&W)1tsan^-bH+ydO9fy6#{fBqBx0*lrPydnr z>tADE-(ZffQAfvcca}snV+ju<r-zAmA5MJz?HwUGLd*m$^tWOyILBigIlceD?dTcL zJ;aRUqlt<?g&I0zWsIIF1i4WxEv+tKazd9Pt4}gkcsr{V)>xElIJ|m`=26Zrt0`8Y zTvOHWvy%K7?CFnTx#wJ#<gS-Iz}JfTr>f*_WviYbOS1x<^>V3{PpHkgVh&$tl`oXG zEuXzM{fn}7)9q%pislwT%$&16@6GilD5fgDt*M#nvl0_k1tWoMEiq1vvkJIYq0Sgu z*Ge~LTe3PcozCR*K-W0heaoxk0q;k~6dCIXj$8vqj9IKGGg|bM2jqPCmCZ<b_Ns4u z=2}aYSqhf{4U0|f(!+ku#(!}K{v*8pWr6KHT_Zdx+Ggv{6^-BrfP2sE`qk5Hfs1Rn zTs$|WRu4j|p&Pp5N9SqJ>_W8GalCmgKIr<jf>RYtt8=pZ{qW(AVGQ*!6>WsAWH##@ z52r_h_b9ChWZJG{@Sc!lx2lvO8_igEc$3exyB(?|5rbtxsLml7N^82NSq|?~64Nwb ztRV)!_^op(?7JPqFyM?uyBa`I59md;Ttw)!+wGX9iE*58PKu3~JX&kIuA{L#VvK^P zHL{|}1@>)AqYJtu&X12Y*049yMO!T~mZc=TA4xHh5#O?NR{q%tacuOGq&AMej`&Bc zYbB_qz&H%FZOg$m;zX!I)P>t$MVGlc80NxR8@mwL<~zrn?Y`VUH}{zN&x{cjx%kyH z*6t~VrLdXT5+O!%%C!5vygv2uhhbRkJICXJaU7ZQ1X?CDsmRLF$0Xxwz~&j|k|c?< z(&(}hp3ZEkH5J#pe9kISvZxteRhEqTR7d@>h-O4<#Z>dzjgj$tjIyfJ#>)4JQG$au z@yIzQoT(0>0-d&Ui2Fzh67-Xmmcw5|M3J&4rYv?!GF{j3_Vo>~k9%y%SZxKKq*`9R zI&!;jiFxA9n;Tvo_UyYIpa0$){@H)}AG!OxU!siV^*{ZJZ~ouE<jddxU4Hd{{$J<_ zY6{%HzvnmaANbpE-}B%TApux$EwNJ0{NPDI96aao0bL-Do<=*2$u)#)ZCX=F6s53A z?4Egp1y{;c{eet)OkK~!l$mS85Hq{|4dcf<e25rl(5)50-6FUuKfDKjdEdTvX4iJ2 z=X~v-vVlGKm|4w~xKFPNUeW=~7wLS_TyVnlJQ`nxRHf7pwbHdjx(pr3^$k&V)CF?L z&k=#D<^+qqtSpd<QfB&8Vj2fRNNCm9J)T<Lz^>_JFX|K+OK_ISj||g*O_O+Zn}%I6 zn4AeA%Puzw$9kQ7lqUklmv-vq(!C|C52GbZUCS}8x9}OQU!<`;_c-$o{2!AW@Y2Zr z*`I}%y^5cj1UxA+f5h|K{@wDzM9NrEv<C0%d+X@B29$`|=4jCrBD*@4&N=h_`#Z+b zO9xlPnkbl2xqgOeVt+W`r-`m>FlZj`A84(GkmT#M2y=2(`{rDj#!<$~TIgWTS#%AL z&?S>ol%1;4fN<2O!PB@#)&w;~Cf3|_;ntgl;~wUCP*yA1{AVII6#AaEM)IwVqVLb7 z7$vBvMvESAZt&y4|IgZ+^;njj>3Pq$roGP)In=<aBH8S@B{gi>SJIs!-}wIu5Cj;I zd|^Y7WWaU{&F&_<NfybPvMMVpGh;Ys?=|}3TYH~#A|tb^8zNDt$|*A9#6D|%!}~sO zu1(KRW7&-(<KSs6Q*+|(sD(kWj@T3-o05LbA`qv-ahhnN{`yjzqIa$3ICaR3Q=wi? zg<7M2u2%W<=fEXH*XDFp_GwU9FQX&QcIot~{jyqIZMI7mYLDMdN!bN4<{k#4&(?Ok zV>%w04@a!EYz9qoJ06a!aCDj`N~>6BDXlRCPwnVm_0Ts=g|d(~TT<6RYn0rUbX0wg zbH+Qp*jpC{o@;4xQCzNOShTf}Ew%QQOVhJ@L92?M+0KP-hf{rt>FZAKTwhPxQ+9*U z0X~LlniaR)6kw5?T60UQJ)XBR437PF$JOB2J42wd-wZv^K{E(y%j}-M558i8Wj79N zN6(`tPx$uNzXp?e|1bWMZ~x|RdH-MhDK|g=6pMzq)SH=C&tLQ6cH&qp&IKfRL>wk~ zj<t8xlVDq=#DX({DJF0OH*sdHf-|kh5;wijm#Olyz!4#}MgmQO>rkL#EP2_kbg+*R zgSUp4-+jlU5EwTj&fDIVhO?czw6_XB9=e==NCB{nmcEa;_O9-&-lNruX=gap_TcCE zw(;)jsqTqrC&l#1N4@^|VzgFI-PSUhHLRky6HKKkte{ux)^!!SG+K|-TRxAR)nBMp z*#dXbG_E`!nXK0=U!&E2Ni(#HO?}*67DX^PLyw6)OG@jz&L-`9Uw^sh26)@ISVSW_ zS6~jZet+(*@gK}Ge`|OBg9)&Wb8XyZ$KKxBh@bn{AG);VZ5Q=BMWLs)ReP6-vuekl zvyR}6g%CW(!5k+_F$^K-GzU%Dsy)LyrA*FQF_?or?YmoBJNqyW?Dspq{pLA7cqHp{ z>%AkjN^F%mCt4Lk*piE)Yg3IKj-yKCr5KdHKd(J;4#0c2`jKmE<QSFHUJ6wjHLAv? zUZ~AalQ3DMPIb>M27Gr@jDu%04#X*uQ&Kj3|FvbWAI6c*;2FHr)f5&Z7Nk&eBPN|X zlv0@HL@sbQ>4;m5Wll+z)g7_gN~Ie8ahfK?n$_uHtXn<al~c-_j^kz30yTNlNuyJ) zv#(itENU+f8eQDk<3W$pVeR1NIj-IMGGSCUMOj}94PVjd)|{2_R!YMLPp(--X({8p z>r*<&G4{__gM3OsFN|&>G@?8L=}v|zCagWVpsYEw;7aRj6`dB9ob}S~BF0u5E~w>9 zlm664-CFHnDLKnuuloC%&YTxqurY>|BGu?cmuqiK+LC~%1;jW6w&Oss!p4FxiBLhZ zU|PT#_}M2PG2OgCq~Hd@7K7V5c2^_8S`J@6BWyn8NB{a?a`@sib|1Wl2?oD6Or}w8 zj~tGXXWv}&)$0SdGsFT>GGZ#WRjM_ls1udlZqIJJ<>uzL7j6dYgSr=*kYm9*)krL& z%hnb&xFNQ}u@^?(sI@hg%3M@XSNrQ%OM;qt_1z2p=##yY291H{sPh>n_J=}X?t@9% zJ^I=ksM#L?vbi`g&kn>Y@9L5`Lm={2%H0p<-^dAxdLq*(S<9Sl+qH~VD^2VE^kp|? z(Qk%#TG4s04|s~Rb|RfAT}wfXdYOZFc;~e#ZW%+vvZT0Gt$u3-ROy>aQG6!qX|5El zTB~+mtyB=-32p`x%tg-l+hG2352v^8;xBIc6AQq!MX}qX0@n-i99!Go5V!qPJ9Uva zJMabnddY~9caGNE17Gh$YoYHGhf3#Izgr})&yRHr8n!TofDevTVz&@^o&HoEC2uxX z4`$~&$<H#5p5VipP&P-6X{|K8^}M>irU|54G*`Wvm47eR;>D6vWu7LScdBGwgr%kE z=V*NYHB}kwh#11?+3j|`eto0f>fSMwn)|A!t&}=?XLo*?pFamWwpGPSN)cn}Omo*m zZUSR44BH*wyn5YjtO`%EA`BrA(*#9Rxl*d6T(n!Qm4+q7f;f-CkrP;Fu;M9A*lf4t zTAAZaDiJ^Ut{|^H)>|(Q?NIeuu~sc@tuE<fdil3r$v;G*JZV*QT-@67{2GQ~pwvvQ zxsU3#u;1-=+}<A6;u%f_(q<DnUtf#Fm?PF&6-&+<i|a$@TJ*7Wjz<+3T1!v+rKC!; zMlTIFocQqQnPsd-lo~PQ4neXa)SA_<8Js4;>HN79-82lPq^LH*rmH09j6!Kdkd6_y zR&8@NrBw-3dqd=UUO+8{MD4&Fr)OQK=XqxtHbEy^76v1Pmf474Tft>C<*!6Swd{lC z>4)#r+6=BRKHgx1;mL=OI9?yv{Olus^soOVx8J=Wd(WfCkGXyRoZXK<Mx5cB=P$Us znfdzqjxTNx+%%1(Wj7FpKr9JU5|R_GRbJn|Qn&#+<jgUtWz{HIQhmazQ__UZvfg2e zV>ZmCQbkDJxs@BF(r6tuje#Hi=!1?-*23QTZX7IzXTSdzrxnB5$YeQ$m!CTybvId+ z;7cl(Jh*S<ja~LX>S8}nB5UU)w0h}-TQ5J}_`Bcs_Y~?W#qEvHY5988)4Pc08X9RR zXOXAPEV=95hlwy)%f@@g!IN8Mo{t=-StA;YDnhL>Y=#Y+?T&HWF@&I2nv#){FtuP8 z(Ow6;lv<dRibCdEDN-p7N)xQ}80*L>_QIheQS{(31zQC>sF1I;suPB;z+a)aasebb z6Ye+7X0Hv*5)x7RLusgeyl<pkQtjlS@A>IsUdlJUlx5vRLc7;hv-;lYfui!zg?(S0 z-sAz2Oug8Z-(McRak0N4j=cP@CU3e7&bIHXa&;A<T2U*KS6bW{21@h9*i+Y*9<ZrB ztK`Hu4%n>EjQ64Y-aXSilhX{waGYn3^TgJ9tS(0J){$-}q=GoBajrD{==J+kz!{Ab z)%~X;g-y3Skt#!jVGO+Yqo>%>GR-#}XJ{SPC1TDN9S!RZH7W>Zp@7v|d&s7Csm^K# znR;e>iiO!0L_F37RccqbzPY8QNC=jeBe^xI2=knDk`Xg;PRyw>$Eexc#!-s;$(xk* z`y*CpS-IfH!+~+L!5K?Med^XIVt0yhjrG-pz0#H8W!2AszVB-*>-V*G_CQ^qTXRAh zbqlK&H$7xVD!Jx0L%j4NeVT4qasd{HLrRg>zcxQOa!RY1Q3G)9I*Qg{n?bBlbMNL| zz%8LcMWI51Fm8r5|6GN;4kJQNxfgeaR(khc8-;?iod#GTl`bYk)$ckDF*t^fuGTe5 zoO4IPYJ(B1rIf5%zowq-B4E8E6%_-vs``#nHNCA$)Ax-LMjr^?GkAj&!(j9xH%+xx z&KjI?1m_9Xz&x=XN8C^te55(BkM@M!Bi<`VUb@E9fA&XA^TgrRYd-k%KjZoDKjpor zPq_QV=Zt>OFMjomZ@#<Z>z4<PM-5ORSW?ZTNfQd2XrwE~t+1i_aKst6f}~X8pK)UP z{n;HCJsV!kGU?SbRU=uurL|L1ZK)Iyl7UbD;3xd{*T2Fw9o6gl&w*_D^ymM8Q$KTk zW4ykOqubkui}F3A_jd{BekgkOA)w4dYUp>3-|vrL-)7}n?ljZPS?761V(UA0F-pLq zd*rRL1Z&t1I`*08BZo9`Jj9-j?HIzqe!F8gj9hKEjN=CDhCb#f)D)?;t(`or(CH8w zm1zvc3Mns)b)_BA)2xhj7^eqB$wj@;qQHV&3obYn^|cO%F*?T7I&B#hp6GDvtYV3n z?BI}9fY@|0aSE5|X>MFb+1^iAS-P+F&t3eM`*t9C^KO0s3;X7C(jJ(_oO#mQ33>a2 zp1ZfrG~}&wpUy7m!np;W;k202OWG0d4#YW<V#0Z~T&ZGRU(c(nEA9>l{j+^+8)H=R z)B>v!!=tOmj7AH?lp?$R6;l;%u5T$>6}HM&H^kKkjb3&}S=-j>p<8odFv7+Mg0q;K z@z(PA@s69@3F?x-sRe+wr{q897o;bBjBZXB$U+G;Le45;8-{_$j~`=<;qLC1o7-Db z%-T5yzmm>sFX;}48B-haFzdKlI<?QaUT7*lG%unxG?>OY+lgLETg#>3M^7s1l@Gn6 z9fu8t#^HGEVKKD>bKBabTWgUe1?{Y`SzJIy?0R-Cp&aIng<eV*!?muAuIeONY=28= z%QQ`0L!o<f%?xlWUtYWB9XB_(D`2Yh3*8vK;FJfT-J-6gb)upf7L8Q&>+{ypq>)l) zzugk!tovWUdA~YcoKv>D>nLC)>=~Rfl)j@^f}7g3T-R8*z7MbW98I-WY*C**Np&2y zHM}3xuN^GjnGOT14A$bLs{P9bwH0=7QEh^E4sQ*c;AtgsdpNK&j-UPUC$x=a_{op3 z<0FRoz<Vj<a^>Y`pY#5o{V~juo%5Jiw~U9(vv02X-8VPf&BCFm9kp4H8I&)NKuH-h z4jAJ#dtjPYzfJ1sTw^R!yZpNANgAf7&Pj(+so?O`VCy}jHtpJdZ8{m*j01o9XMfIL z|HuEx$3O@U8$8WhXobU9U*1b;J5%(oQI&6*&C6K~<M|=_eRiaO%Ksh$kv!yWzCRuK zKJnH&e&g8<BCB<2y#T5ztepr>8qO4gH>5mqJ0Ckmt0H39Zgwi<*zVbl8-jC;K2Xu> zSeev~IL}PSJK}Vp*4zbms=hTw_jkD#T5c<?N?OzXN*7W&G*@}CC6?|%P0|=e_m_5o z@Gb0kF?|oXEacVtQWk#u8r>*o!}oh|7vyZpA#1OC>SWskS?=wg6{xKOoO56N<^9>- z#0@|AytH@hlVmMU{&AQ2_dHK$33Ad-+1BUEd1<HD=XgAJFLmk6f)ii6wMytHPw(BT zNVe9}>ZH-8IWvX<>%G4JV#0>NllPt=xp4K~BTCIoIV*ilgpyNF&RTM>rIW|herZa> zbqLjbobYzT@i-H<BUjr!A-rbpJMr4>HC9x}WJGX57&e{{fAkSAUVO*vSFd#{)Te;U zieVTA#&N^d)fL`*u5WILDS^@a>y%4Z!$-Ex=;*r$dCJU(qq-|>P>~lWA|I#-PQ)Np zU+H;{_z)O38(M?oaUuk-a~~s^X2~ftgupb<gmJ`my};5r8Karr^sIPejiO?Ebg)5# zN@`O(W6oLEBUSOgihI_M-}LuX7)N649Qk|a(h~e)J1@X>lH}dpU8gt-FJHb?p`lYH zeJR@EhY%10rNlKTCzpip*27ZE`YbK)C}Ry2VHk(5p4Yh3B?fva!gI=ci5S(^EQx<& z3?+6b(R5Ttg)x06Ua7`V<E&J)4*FTcr9=pWCpgb$9CfW=Ek<br+BAuQYOt+BN@)E$ zD+$jU25a#hdSj$A1`BTB?r_bI|Ky)xo<73<_zCXEpMcrn;zW7z9XEgXE1vx2&yZ4> zKKqLOxF>({HMd{A=5A^{yPGM+a62c8v7}az4A$EYWHRKK3B!iiDu^YfdF7W#2P>)m zr1mxLiIK5_Q2UBijnCcfwG@SYs+c<=@L&Cp{}a!C^&9LwG43qGZa{(q>v;a<Gv;q! zoL%Y<H6)!L_E6V!c|pFJE&lF^%YXXie*f>dKN0x8i~IZb{N`;PeixIN?gjP6GI)#k z>U5vxBgf-$MZj*x4UexL^LT&7Hf->{J<4(BW;#+3QqjPJDb5@Yx73=+IbuYs+|dV| zXg4iJQ;b9!t~I@kyZ5)K8ItO3PjJdzjF;8NUZKv3T-EaCoE}n5)TVYW-<31Uo~(&^ z=4^ysFRs}Y<$3{@KV7PF&LJ@8sXF%=1+pqa-+<oyqn?p=8nwSUtmnV)|ISwqXQS4h zC}%_H9g>_ZPu<%+O>-Bah5k&cKrDoT<MFTx;f4@;mkxKgcZe8LN;>H=uA_r13`W!5 zC|o_>V^d`?hA+STlG-hy6>!@v(=;OnT&IKSp^^!HKpeE97wX;NNT5>cE3Q6x%KPs> z<?CnP5o782U9)zuwLz|h$B%aWoB#EH;pcz-H~iIK{Wm4dAvmu9nTD|2?Z~BYeSNK5 z`gx|I*wB<C-Y=Qw>PktmaGh>xDHGg)bCx+q-MNyrcohw0$)$8rm=K0QDU*7Ed!Bm} z$nEsZ8!_aPiSvvVVY)kLkz-^9))-^-@AJJ=UJ4@Y+Dx=sI-A^(v$_meat~TP#Xiv1 zzc+L~e@ePGi%~o4VHj2~dkBGH2;AJ<^h;Dbym1_u=84BwSDo3PnB%-!&QgqhFKzJF zb|1TffTlbVyuKFB7@T#?bt2}>W*l`*ve+>>Wo;N^)Iu3ls3%1Qk`oYyaU~MA2INBQ zc3ao9m@o^d#()ojP5;MRCEBSJv|{RFOVy;oVHi73sp$l#6?Ibd@ipj$ZjHwCZbr}D ze8-0$JmKk&-XlLA@t=GIegqj{zay5&PCPfi`JDQ@&ygs6^_!ow^IQJ*?|#dR+r-O5 zq=`p-fD&1@Q$~bg9BIJK-I3?l--4(H#=6k?1N6qKbmXwtXUr&*WXXOvG^|m<Bc`6M z1D7c&y;wB-;U}M94hO#YhhOr<7WVs*VLK4ETm1G3zy8nv56_=H*Gqkk9B*>bthW2< zRl*MvqW$;2(C_=^&wb19vb4QT^z<$uigYo`#h-0-p0ePKVf4yT_Q6q-`iSE(BF*7k zV87e*-s8ty?RI!;X}K~VkHo0^_1p@nR;FB-V<dMTv$X~r93i-_^fkRot=dgDgOj$} z^Ni^%_+rRid?!Y$=Tg<?Mpv4eR=Q0iX`n*$Nca4z+Fy&6D(6|}XBXBIpSlRJ);;w- z^>-IwooA0fJQ9D?OD>o<gl_lcljm64hl?{=BT_H?9PRBwx`#xV4~m~IsD}08^E#n` z_4TW@QexJfXg{n(gs|OchIdci^Fcu}G*t`dHKnZ)!iEMM4oBu`CM9LYd*{@SW*n_# zHe<jCPpyS<bESbO7<P|$?BvIM`uUf{2C;k0jq~J^$yM{RYsu^G(pigmORbK1K9Y|U zQ%WR(-Qy=bdX#zj>So2x>QKwls*rN!<##vy+kgA-)^2RG841o~#1i9-F`jvvS9neB zNm@BqayqJw!zusW8KYU*IgwF(^56$<j|YrVjfkAtL7nruN@{|4z86rMC>OKZ>a5qU z$$8&tcB)9<Zg(7x2R6g7UgEmvt%x-`Eh`#-Tf1;?v9+46j(5)YP!{Exr<ibJ6}lpj zOU4J!9Fqcu`Wa@e>7(|xD%_W>fxEj~Vw^}hv)yj>vJaM0b5F<191q9Uh8mp1qKR*Z z;{l55Z(7eZZ>8dm;$w%tZ?9RW2|hTz<olE%rlhOA-rOyo>{M!x7S^48>WE=ugj}L> z-uw5&*q&WrL`9;`Fa+1Fh{}ksIjIHMik?TM(v}tDBE0OBx?D2ec8hI)#!AZ6o{*?T zjAOgs^YKqVB7{oa@3GtWX~rR~Ql|qR#USUeUz0E#@8GlFUGvTJ-}3pZ8=k+8+#U+U zcA%z;IEOQW_ZGhiOw-KaI75d>rKBR}1rxr+(w0)NRl9WSJgq1rVhL4ZLA0Ar39Q<% z$;BGGu`xoqx#o)(&)JjM4wmiS@#yIzHrq#h{lyFZ-@p2M4oUi@PJ3fRzFv}Nr`)R4 zJNJq&K_Cy%z8<z7y`3udE>!5dF6?)C)ZbQooC6l*UKaZ*C0M)kqPe`*Fb2nV@N7e1 zN=bdBbHa*eGi=!JuDIGi;?Z`bmBQWK4QY<VI1^BIMB)GdAOJ~3K~zg77ws$*!KwDQ zO>lTOsJhd;o{ipC$j!Ns?G!1i<S=J+SKf+_$y^UF5wG~!RtuEO-~+*1<&5V@s*#!s zP6mPrU0BqkEZ5XEbE3<cmA9(u>8{Mzc*9=&t?c*ny?nb=)N^`VE>-CrH_F+XWgY7G zqQg9--MGB;#hk>P7rB3OCct}>QTU*J@BSr!F%?2bs^?m{<sdr&is~6wm(|uKm>wd- z8sDilMeSmo4+Nt*1>e1RwKCyD2>oJLFp%vlmF;HG7}e7KaDBg6jz|9JlaFch%vayN z<R)gOOdo~oWlF0I!+@Bcwbd<e);ny|j;uAfeSJ$z6(2Ti#tpZJV;4GhYh%)NQ%#NA zSGPEC_~5<wamMoM)hp)ts8+dt$S<}$MY!t0Y^?54bIkaDImKxrIEzD8@zxLqj5Wl0 zVlxg*Q91T0#+CUn4hoX7#*mY$u;(~oy;r}r+mcHq#ni{imBFi;Jarg|+QJ0eAXo+K zc&qQX6eC!R=_Ba7!<`~nm$j7<npOMk7y?tAv=AtILD~L!`lajb@4sOf)}SQQ>63nN z`05zOKuUABx~U~CCH;OmV^z3S8}mHToQ|zsXA59$--IbkqvlNMQ?ohF7^^hVT-%ze z=$%FcJ8MwHhG2sV>sq(Ml^A<COVDR0==anh_^#IoZeZ*|F=KFwdo`LJFDtlAN6@*S z1Jb+oWn$1!KR7+)ghk)bp*J;WY74Z!TG;QeC?5O=d(4L)(`2Bvj7-<mmoIVSmh0Cy zIJe>Wdg8_NBVRtB_~upO)eO%M6B$7(JN?HwL57af6*QIYn6M_`yy^;a$sO#Y1j%J; zSh^qIm?i8-bpp0GOt$LC-P@ibX-?~HBf{7!ZaT2BuyMj}@7X=t;>Hp2JN~c#<3ID+ zw;5c(>0VxUUYtj&-kZa#DzlyKm>2)$Wg4|PF96QOY3A$#eW=TR=<<Hs?);%&J0HJ) z-?;vvk9S@eoWJn;WmbZ<Y`o=a7}yRTV}zTVNdYp}vl+KsZLd^uDKH%-=J~*!W>VI% zT4`n7pLuIAn9lJY)C&wqEwrMxpW1_H77A2dEhw@Q?u;qx10r3$x-g}i74_eCg}!Nx z!8rye%*BvOMq<P^sA90WQ87J(eZfU8!aCD!7`0!nr{ua$4Y>sB-v_cRg-J7K(-yf$ z^E<l$TYH1*cJ2>v_o8ptkf3^sTa`6BmQ&>I83X=)TYj-BSl1G=ewmlHz;>3<CKtl{ zHNw}(#rP7G3bo7-jIkGP6ZIrJy!UK217CjmrA~(y!PKmLY%M7a!3A8m7&#yG^{SOh zB}!r(1Bb&6fBNH(kra7$eM>NoG9_H_$~x#7+pUW}y$__EXkrm-82yGc%@`Van#gm( ziDl~@F~xP2;>BW}XS3a?p47tCZpX7{U#$#sjrz<Qu+l|V3OXr_VNfh<&OMw&s4?LL z91SM|CF6a-h}APB8EQ%l)~-1SRWx%RmsGUn2aFYBDxImW58FJ=3QTDYZ}m9|A*>gi zS)QQ|gRl+el5tDaa8nDP7ta)Dw!=Uvg%G^b`eM@eu~_DLA}7V9=1u@~#*vF+Ri$6f z3+-}wCYBY<93$K9mU)_18=EnPIH#57XpK%gthIz;AjhQa3!@qGri<yk_euoZjMQ3~ zrx`ccP73URuG*(4RTb}=PhKz>a-7fJ=56Ksm(o@NsPt@fXOsm$I0r5FwWUyVKdXAs z(c;BdwRl^n7uq;zScyfthM`ic^l3orBs*2VL#4Dr%#n{aPYL@0^WhWN?vZ98-;jR) zTk5OVxDTHa9zEgaH@{~Xx7=JmCzhhgg;Swmn5;lji>DIrz<WbXai#ug!dzmGS&_`f zbdlU?WwE?os%4PVM6aK5t}RX(wHqoYL5H)d!DtN9@U1Wy$8O`e+HLT|K-fLzm%sUn z|L^C&=Qa;yDY$x%zfOBVH@qYionQHjUwehJ+-GXDTI3cn#ZrAf)MYOh?D?<D_jr!q zHcI~?9{YDq3DinqSMTkjsND5`oDq)4slTZlVcf9YZ1E0SI#Pht6nc?sA(ljGs$LDo z>R75jh}OB@sX;24lG6J6Y7tO$Pq@Ur-k%9e#&Ti@*H#%j4KJ6>ahl075v&lLVQ`|r z4`Xp%$kTGg52J!jQoG2HUwiF)%Jao?$2!rt-_4%A-g5H)x3wNr0aQ=oSWWTk$G*ou zIKOruvMjzS#5)`NpDFG2#E=Ka>+QTNmvd|9`6B9M{gVe4336`9T#ApLz|}gY6Tmow zl@pl_)MjR_qvpcR%}u{(G`uC3itk;NGfIb}HY}<_ZtcXlZz3E@LaagNnU8k^fAZ0L z)RuU5i0lVPwvOpIVWeTHh}F*D&`4F0tF6ORobd>iQZtPVrZHN>#*N*)q0<IG42V^z zO0$NW*RQ&hLkplGjO3cvX-~}x9T`HPWL-Nnbc{`Fcw-3y-k=w>vD7$We4ysUW(cGh z`@s(zADC0p?l;XCDtVr$V({KlV#7P-c3Z0{a)M^Z#~eu|QEKTvYe$@8*BumwFwjcv z(Wn(KmT8`lQt%C&SQ1q`uG(<ckvbKu_Mn_aO;2r9(J_1OqSocyTQ0Uz%IZOHt*I@x z>SS*i26YLDV2t|Jr+KEeMx0ZB9ko!1oo{a!08mQW-8+5r)>iu}MbDg+DyDWxtTi~V zF~Y5A^H@?+Xc2<5OIVNod+=VH3Tu1zdRaxHrt5-INvpNDwn}XU+bM~)>z1T7O}dn_ ziaD1_va`~|V>;}sN5+nuz-BwJ*#x%xk(?(UJ$XVKwqOGyjr8Jcre|Lf{6KxQVfWsT zxqbF6^NX)3`HshX&&Gei-~IM;O0JaVNCM8O*MA%X+i}FkNXe1hz4xU<)@m)iVAJ<! zE=l1+#`M=;izL%0PDTvUq*LNl3uGIouZ@aDT}H0y*BQKL2#)P$%Wm_C*aH9l|NJj} zHx;s}6fq~EoUA+bWz5@7j^YI*zZ_Dnt_R?9?k$H(I}cCmOIg#yV(xd&4=Ioz0)f0s z{H94kmve>skjMC<6E|;H>i0@%5o}l^Y@BBkyjs>oNOR)uIIEDw51m4#-0p?@J`*U? z$gLpGFk0O$N?mAh7OeW;V@{M-$tg3ZS(V7vVB1NdUYlB&dXV#a0T!0n#cp}ZncS*I ze*$yLlm_E4Vy!B&TUQ1T#$jp1oUk@44aziTbpP7=oLrVvw!RWr)AMTWn8SAOV(aob zS-uyoKfEUjn|9IdENH#1AD|%@EP-?G`}eI|E(c6~c;6P7$Vpv)+PR-9rTZ2<eM{6e zD)OS1S}U5%W&HWiEaD(Nusd#}`-+X2?i1H%%sJZ+L*3t{IWmr#*yg<>CRJ@q(}RGL z`ytpT4?2>e)JC(d11uWeTaMF#r@IYLw>z$L<NEf{g-Nw@)U^vLtr5nJ+MYU9%o@wp z<44?Fzrvv8HC<cFIw3UP6Q`MyD(M(|+M4I?=9*S2rU}7%HoHC7x7Xyp!_B4i01|b3 z<azFKp#`Zh7>lQ1szwqI&h`|u+^0^48uhs}T`6VEz~OMfItLcE`#sk^d)^tNWB&g9 zE$VW$i|P7e97j@0t2+c~<fIp)vx@w+){^FgH<mm{)ghEh%axRL0<Z)z=ViHRr5A9j z))(vgC1pvS`OhM{>x_t$XBEd8)m7A5*^VP6x4!yPD%-N!Ti*{k>Lt?jeW&jq4P?<6 zRAD+E*2}hb*p3+KYV8izvZhbdq>IrE-V6k<cvolj?6t;pEOtYB46G5(ZV*<Le=d5i z<Z=?-wl#=K3vVyW0I;mKLABv&Ad2bUZoSYA<KP&ACk&STqYb<5fZrM1;QQLZLW>-~ z`xfs4^@I1hsT1#SJg;BA<mU6=@yUC8Vs<?H`i8-)oze8MdF?86=XJU@_<)F~-X6F; zOj^91PhgFLoAR=vtd-L3m5U1Atm5m_nN*t==T@u+yL54&X>{wUB?QYjj%+rMs50{J z|HFUc({EmqWJ9fbA2{6^o3mx|*@3zqQMyAl{o+8nF#p`I+CR|+N`YJomEM+=_Cwg* zD<ZUYPxYBrUHStdr$<Kx3SAV`?sahw(akOdc&M+?R1K0CoMGz?qhFx<g{c%upE_7+ zSW~DalEu)B!$^k`l#Fvmx!Iy)C*5E;O6`%bt&(!;$k5U~s6h{tsvgFgGqom-6kU?w zkUqZcINrVvaYluC*rj{g-~d1F2_bY~LBX_yAz_0-<_a-l&~E2w>LT-0kyqb`i<thH zEOxd2j4XD@6<8$Hb{=Zq_i=JQUaXg`@^ay?dV+V08sC~Ju<Ya8S<Qes3v@B7kZ&E& zw^J7Vr4Vn?7POO^bbU6}m48V!?9Y%rJ)LGzi1+_54h9YQX#{U@#_A=Xl3LqDQ>>hG zjH8CTIBzsOW3H53JNwDdioqD)y|9f!Mye2uQ%<(Ce0{t{MuT&KhGFmnC8-J@r?^kw znd8$O@!k@=>A)OI*a$-zD7khoZdK}G(~D}#M=%zL>79sR7Ri0HgrFY%<Kd2)bS!PH zS2gnxx(=dXi;B@KLJ*CUHKnR;w8w>7ZyBwlp<hpJ8X_XzP^zwtob{wRD=}`4dimC( ztBKaw3?nfooKtL+k{%bUm%%zwVxDv4++QcO*q@Gv9^YyS3;C^c&S`q^m!>hv)o7v7 z`lw#t_ezi}SyS;8y{lrpTB`!3jMevEFXWd(N{m&ySf0Cht*oI^!Ry&<dX%i|v^Pu7 z3@Ak}aO+lGNoxxNSPNgJp-G=8^z+0DMm*qpLf;7{<ef4Y=<oNz1xlXCHTChi7MnSC zL~<7yHnKVhtVPVF@L9Dx(rJobvA)i(5xMHRuu5ZemhBK2y}<{|ZX0;|<ci1pEpF$a zB-(t7tuy6#gP9UCJYo3o4>>&l8`9^WQLkU}7ytav$S?2s-EW^$Q^r`wb{L3LCg(<W z7TXL{$>?C7j@zw-X7s`yJtbyrsTk!v6P%%CUE%20SuT|ARvOZh_Tu7tWVH0)r@qdV z-jL+VFj{t7!|utRHa_M*{Fh(wyJxSN#ZpA!K}}az`UhLRrxX@h7leBFE!kT=smri- zW3AP<c)WRM7k>ZpzQ1dKL)>=H-n0Nu-aw$Xez0_5Qv04Uy<ReAEoh`a^j?I)2L|WY z+~Sy$cE2U#?4UoNGsY}X2VGU@zD+PjcWiSh3gY)e7f~qep;48fWIe9ORze@Q<=lfV z3f8jPYgB~A`leB(=pw36d(u3sP{vq?pkv<V17bD6qZRGdbYyCX#{(s0FsgtxJ(_Xh z7bp?yj3L%e{#98)3g+HxEN_Sq9}-e7Kd$S7r>&~{?*kZpUrzgj&!BLTu7$kYMtQl< z=fR{lk@kj4-t@2kBFv`tOMs<|cPF)cDGbAQ-KQ?A2In2ppv1yvv*G5|Ev72yMAg83 z1TPD(p?i;MGy_M3yWCaWwLpqURV$=Ht#3{jfOw;w%`hl@M7(Fazha6RB(X6g22llj zg*hiG5L{P<JBM?=XMGz|RpHQdII5n+DgA652E<v8^F*9xywd`?QB^TsfTsIQBSJ7j zD}`bWxn){2Y{N$9R7UkFhvPxt!^YspphZp>FU6wsV`n_a<B^ImxD6>D@q^OrVvImz z7=i}8Ov=a4MUk!xnz`gmvyB^|T4A%<aCbbid-_PHZnZMalg9A&U8)gOwe5O5@2Cp% zj=fVwez!n^^my8=Ui02Lt}`&JVK~kx1+dhz3PDZpnrkl9qTm-N%XnoO@7FUYQ(G^~ z<=toOsrarrVfwS^jAxpTIA{7Uyk1PrYM+MHQoEx=N9*biNS!_jR!)VpU8Y<8J+frQ z%R)NrXQH*H@3xIjDvh#OT?mXj&vxs0{N5G&M>}?pcI-cROo|b2fqG>6?04Ath>Tmz zCJ@5N=l|*d=DiOev)?`9yO+1TzP;rz3v<l6UJy${Rqf;GRUArF+Ffm=n8~ryoTa9T zAc85XPxC>O*1}*AdUByL6cKVQlnU8cN>z4<tEa5^h5rDh+khL+4fr7twpYBKGJo^y z|Hjwf-cjwKXyf&JDxH=1Ai8Z)D$9u;*OnhEYO<LN_SjpgZTBzox5aHf1edwrm7V{Z zImePNB%bB-=tYWc_KnQ<b3yWb1vYEwOT$~o#_5}<wWjFTta~@_Ev*%D)*X@hg*(-$ zwslgG(8I*|Q3-I?Y4}R6h*2fzcH<DKloClvmGZS@Ro!~!2J7m%biv};*WJTsmZGdK zs__gNFf}lYTcB~AjwDguytE7@GkQaCo?*LR$yFkD9l1AIE4Vjsx@L`M?eVhr*fNV} z`+Piop9**CaQk|FbzHpN`S8v>^?#(N{o;Z?i|~7RHPdu;A#!$sxApT!7DvU&(phs^ zGsxG8$J*=*N+Yd3sG+^#%rM4Ka_QZn^lHAl0eXaIsTqe?^k&sAIOp1@D1tSC*YnID zfASIEym~=QhPzo+_SS==Af{4kBRJ0-XKDf)ERUZ)qKc@>ycSGwy`!Hw_Ar!j9JNR- z%XUZ!S!qryHg>bwszSXa<{Xt%-%KxL1|DDSIo@0|jDa>Kq*a_4jMNp_;?UH<(uB>p z<9K^i@4fRJraO#tnt0|dsS^-ORpqxcmN`Y77n}=v(Z`5!mU&J%r{igQqMNghCJ;LT z4r6qz?kwYO!{K-&(ZG4G)6C{-%j?6f62n?UtPs4zl!6}?E7zcOK+y?E>meo5|2xKX zHhD7CZvDzt&lC|&E;E=u=GGMgebOM^&P8dolGzRetz=DZLnt|GO!N8-_FM^LG)7g< z#>hUb4EU2S>U8D+q*QdJ*NfVeG%8gu=d2EqzHiomoIbfiFs;MFip9DUmfUo4u<ap2 zb#?TxQu%^&4Bir)!H$lrr&m0AH1gj2S8O+d{eDCO`0Yr$ok-;wH(z|oqwT=>@p~W> z_2z&{6CeEHA5)&a<lC>m<@Isq*~^LR<4mr)9;!5ARso&u>%6&S;uO0t-BDX*;{vV; z+oAI%2G7-QM0zMsaDn~iiq|)<FkU#!6E9vJs3u@>8j&lNR(qgNtE-#IdCPXYp<wv? z-+jg16qyqwtlAE(r#5Bu8)I<moRany)T>-jv(A71ArJ4ntYz;yfFIhEes9-BTX!yU zh5|7iw6Q*nXR3TIC}|H1ty;?%fncqwZkuKsms&|p)!(h^xWhZIZ(b2%EYz}S3Odu= zdYV{jp}(26^YG5}?!PGMD`#?=yJxiFonEY_7b&`b)!>%pds2Iz^x0AvO1-e7l^n6f zYo%U=SRq%7H>$KxDKmJ>)~k9s=ZtNF7c^90$(Fz8hLAP6NzQiP@9w4_`rfwl(f1jV z?rlW4^J&h*&y%b>{fC8g?F>-UKmP|l&iUVSQK&8{T$l?V>FK6kf`F7?Eq!NR7Da1Y zxc4e=EL||OjNVGh48s;zGo|I8j+UYO-E%H|RiQ#7&N?Pz1)?6#>+ZV=%>`n~_`&eg z51w*&`vnXE!bqtTrq)&AUvg8(Mk#E@t*YyL5}>#0V~;88-di}!P*?wZ>U%-c4<;W1 zp<BfifTI(GX_`*rSm1blLyeJY3?^5?>ecO7WK@7O_<=SjND15b@ui81>#SieDo!m$ zN7KeSV#&l(Nqwu-M2KzSZd;laVozf;PIuf>ntLw!B4$-+jrE3`=?-HJY0m0FHjr)$ zK^m?LnM_YKbXLi5yUnmF`xil&u^PVOtX^PVT(>;Zear)Ko^c{{sVw_ZJ<`(joJ&zB zA}#6aWlr4=XAL<Q)hgtSah@;?xDFGmrS$B1b;`sTdqP^GBo*uyPAe>9RhyySYjsSB zoD}J$tN3j-9nfp~s;OS&LafDox7aOye1#Lao-lbf8ChiH-A$rDCwODn?{_?Ux@G@( z%abQN_E#fM-rK9Ud}9zVw3~_F|Lw0h#F<C`>VKwqL9V~$_Se7RCx7urw7bOZmoIqn z>?Ma-xsI8eX(r*--{1O#*tx#Lw@ilv;sPQ<tPv4Qjv%GMw(|bd4UZr1nQxC6uc2F4 zgXL<h{KZdy!k_-}M-&p*cadNG!)JW<#WkgQhM@F6nyxj(8n(NU{eH__63@PV$=%$T zvLi_&Bh;Q*Z;Yjhp=eU^MW$4ToZK6oE`o*&EbNIAe(ptn7sB=3XwP?KWIwP&JyXD~ zLJL{*(A%m`K9AXyd)=eF0TiJt5%q-$&Z^?G2O>04FhD6P>~Z}<Z>?$MW3GsJJ$yyG z=2CSG<-@4nTT#nc$(dA?Bvn(SmZVgwRxwuAv3DwYML;h4fJG~y-!VOSG&xO9_NdOC zZX(P%>J`>I>oU(2L&q_~aZZ$!7=r>(Tm>(J7okXd3$FEap`9z=?~lyo2drW)Jl=A) z7r+1Kg$tDNvf7r5XYfS4Jt@}Pg@1f0Ld0<4{Xc)^&!4$ve15sR?;pRO81MJ@@}>uV zwA!Z+?PTw?#*&hb;iRLgT7?)BA?GeW@+&QnrWf^^X|yo;`+G6xL~ubb@!H5)?Nzm^ zvK?<Y9B=vf@t*6eEw8d6TE~<OwF$8l#CWP`6lfS!bw3^MutOktN4$e6&Ry`N_)_&s z7p(Kz%{a?uvsD|LQ(;jO6@nRW8OA}q_6;`U2A5{YnKI9KRLA1GWmAk=_oUU;1{CMH zYfLIlEFm~<4|kZs5u;AcN-4Cg!oMt;j1X%jH`ZbzL*EsH8G`z?bD}nb3;}N~bT0W^ z3R^#71ZC&<wcN%U#$METqf-;#z5k{)!VqW%!Vt)D)=_r9m|AU2Qvz!{YrQ)fSS(tO zk|X2jDG1XvcdT^n?0!wC6Vc9B#H==}lv5XysmDB(LPM>3gAZ71I?=G<=7@7{jp0?g zn|Ae=PNjCiR9L1<W))H|Z$`7eUs^q_wv3U^H$OWgjHY5)Yr5xL-$Tw0S_t<kNhuZI z*A`+8t*QoOvk5%D+OppbY&MqdXc;#iGpe|dIWb>P+<pCm?azL~@X<#czWI{;+fRAA ze}WGqcfa|Z-~Rp?Uw(JP*LQ{I*9Yci`b49xHq_TQ2gV^_rSuqIwK_K|NU3-%+wH)| zA3vhzYd(0q<#nyRe0hU7onnkvjyB!k@}5UK$Hz~e@;Ep~^BWije)iL!A_9lw%<I>8 z9Hxjkr(FF*!Uc!1j*`lWUm}8OW;NL&;97gAJ8x$@^fS=R8!@S8IMDmissDtm?C;x| z-XG5|Rpg?wUMYC(G8<mbJjCW6+-wzccMyyw+p5ylbjEe*wi)T_*JU(6gh4ZJV<eS= zF`AfGnh={>fQ+?x>v6VG^TeDrNs6YCoQojQ$l_}@l$yvzyNyzHEV?TAFBa7OqA2}h z?+UGD9U(nJvz0_{+7TKNtjZo~X3?$-sX?71W6(Ffs}<J~mvZs?pI+zXb}@@T`v<W0 zA6l(kCh^IMU?*?x<P~e%F6?KQwsYzH`pdod{a_j7UOX)40WT*3XrsP$O4QB-f~R7@ zyupI6UB$Z`Zp(zL<g(fswbRi8BE`hG@hYyVAg%NQq1*Wu8=*NbJi6GhUl{Zl%O+a% zdLvxl-tdPX{)q4gKjn+-JHEa<a-AA21box1=pq8f5=)`n+~U3G?lASPQS-B7${qBh zBspb$dz|(75V*TNsI|vBno)g-_a3v1R7+tqjL<5+V{Zd`7&!#L@Zwjzf$nJ&N&U!P zG+s0ntax&*w4<ih<y0AWTbfBs^GqtOkIB_nFI|@+V%Y5V#GIMt8SgBG%HSQ-@eVJZ zmX%(%8waN2fiVR3&h?1VhH(aGHFv>CWwQw#|EWsxMg?Q3S(EtmnYQ|RSqq|topFvS zrZqPmDY%79NX1x>_k9#!GPde#sw4ab2BpnQskNUuc6~+_5>%)aV#?UQ_gz@<%X$Za zn)NdCwu7s>l)d(`{nDJ7zFw?yZbx1`A?5=Ayu6<mCx{5EB46>sjh1>b<1EDrR#cl& zOJ2Kq+Y2J^4C5x?gRs9E+3y2G5U#E^h*$Z%hylOj`t>&)k9X{h>LKnv`wIE?hNnON zDe0RVe*X_&@ORH%@bz5z?k*Fnp&5g1mS7;2xT2YjvHJbSAhwZHTvPMJ7Oc-aeX?a} zfvs`8m?w;fo7+1!k1b)eY_^Wizxsk<G<@{QPdUbk{gnlq8T=8!Fx3NAA~D|K?T*87 zVv1RF@2xhPH5GCzG+F5ULTx(5b8jQFiL`sEQ@k;*K2Ip(%qDgoZTUlxvG3Z&zl$t) z(YdyE4?4Pn#4b>`Z^U<=15~;lZMoDNkaFr6P2J$zp8e~cW--rElh_c8agJ&%bJC1v z=e>pt)IvH=Yp8{_fiP&^dWw<O$FZe%SSeRckZMhH(%We&VuUmBiFPm6D#T+s<QE8y zHOi)E!4LLisU{XN4(kU5y5C+O7zNIl?g36+FWKHoSY1)F@A#hnkOEI95%LyHYkP}3 z;_~-jsMg>5JS`XXDcD8sb?BOJ-Y#f#@ASsM@!zbj0hUYFEW2|JY$>Jc_`IGj`dS;# zE8T1%h8a;0ud@LWNI74;5u2Pn>^+HV>6G+>&=pmzjU-@F<u88p5sx<4<WE24YQKSD z<TgfbW9Bwj4yiCFeXgBxcptdScUt_FM6Qk08hMUgQ(>4>B#f?SNOwzDALlNDr&0@X zp19iWFo=#ZYh^SRQexx0dUZLomfGcfk#!ZZeX{2;MW#3t=ce{BYnWpqH{tf?mTX|o znIeYNRqeGi5OPjzcY9LQ9Cj~g)T;s8GTV-S{$Rgd<5$N~_tTqU=v}O+I0<3189JhO z=-qT?&iXpElGlPQ#@y+PN~xfTEbagRAOJ~3K~%&Tux=fnmReV=aE!UH=QNqjJ5Q;~ zgQu@IT0_@*!4YFtAAiwk<kc$<TClX-bp&ahuiEZr64CBgiBme&%B^UgLl3)H!e|zL zysVn&6E)4y5L5dzsF$?#qQW_In!p)7bG>(`;HP!!r)I#?BVKiCq2X0lEZ*tLzz>db z8yGg8{eI-p)?tFs93<QD<A!#eNXI+g`^m?6gu^d?&C6f@ia-C$|ABUW;JaUb$zT8c zH~jY1#Or9ejg`Y(XkH7k5Js{M#6B5Pgs<8wH(_K9p5Ox0-5q(p<METnm=<{y27dPO zC;a`dKIOJ#to0nHNNkn6SyKV0yFz(>gILGwn>+TqEhRNt%gj^caERn$c=g>4Qz~SH zCYC0hC2ty(em6+%YhyhV98KP`7w1iz+c}ejm2R)<c{z*SZ0$mE{;q@lA)op~-TD2( zLNlBDX7n6qD-S50+e48wC#Xnk<)Ro_D$3dltt2gQ7SYopiW7))RB?+KT+lb@9Ca)< z3`0j=9-u^xR|Sj>idyuZ)OUK~gcN6LY0ODcjit&;d8!Ner{5E%SG`uixqd0ADroK0 zY#*O*j4*@%;+Rq;mP%_DOu+do#K1It#~dSObc!u(3RT#6&qO2F6BEAOQ+(flW!nQQ znDYtC+b+T%bXjUWdZv><Tch;OK`y9voQ>7b$ueA8+K`J&`vjdi@#g<A6Q{Oj9M?CB zo28J5DfS<0F=;zKRWGi>#*A2FI8Jxk{dLP$E%l@sSV&d92)X}ypOWGXO*}Cbo`3Ni zao@7N8u&N}2QkQYV01!>k-MCzMK70>g(^bLjo2!7@Z3$R?#2q%>trg&++SK%?R%pU zvePs%jw3NfN-1o18;0r`eIQOsVWU>^;f}ozcslpGvLbX(>4CiqHHP{1Eh!epu;C^~ zq7luNF95_qJHM4?EK^aTUJaVnE!INciyL6@f$8qRcDrT2+cM8HL)aix=INkat`k~3 z=q_JWtR%r>Y-1Qa)JDo`IV&+zTP2F=yJ@?6&6mTrWGz~AuH>q5u`x!B*nU2ho(}+R ziQ4VI-}$Am^UU)R?|lb*X=knK_r8biXIPAL@5U=N>shIxpXP*bw7r1r&$n@1-?6Oj z)_<>~zqQa@Ksj1G<~6KkITMyfW5J+$ulU%-^`V}4dqyT*I13qrUyl^)oK8=zP8*yF z41*_(p6!0au<<;3`iT8#v4g?v2ij;6=Qw=(6<<I5oPYjr{x`n--825{zx&_$7k}~x zxRRK@`G(*9`g6W|al_$gd3ng(<cc*8TYJuXJL5ofKu(OAtKA0BM7(@F^8Ta89PbQ= z!x8tvj!!<=b2aK3>-H|;u)P1tV^T`&pFU;d)uFI|w5PVrcHB^^aGZ2~gjkIlo+Ed2 z<`6T@c<t76CT3lgnPyfWy_~d$xXa$Qt=0&A()w<_on7Q_oMN($V%r+_acXijqEWEM z^}XpCV)nv8_jZ;05;fZTC-O!iAg6t6yO;iTj>Xd~tkSU%roZ8ecBeE2dvqa&k#6Z) z_Mtt;*f|YAIZj8WIU&a5yhofPrc5sCGq=u?=9!Wrrh5&+V*P+IP8IB8C^T|PI%@Bp zRXtQSN7r^CQCZ$pUE}Y%4au}h?L2VXg&a$6ckrIg5ZI0b<EY)u;n-IIBH%36DG~4P zZszV7VH@zKK`sP0l8bateNp!E(h0Y^PIFF>qV|JDjt_7PSBHh1v)k&KkZ$?!c3*JU zPE@;gz8GqkdWmIHBb;Rz@W#5Poqeo!Pq23e$9ty@?qY&;#%x$Rkp+#ZK4|UC#pq!- z41t^rF-8?TiP283<+Eb>M13-1DY<I08M4|Um$SQx+MZ&{R1A0DyyVsAYUOfbX>A}) z6Z7?vlu94vHEc7aoH>>V&XVGc3tqe4zVo)mYK-V{R((h*q~lQohPtgzQ2u$D6^b&= zw*>15Rz*i!F$58OFJ4R6iY%{LMmY3+wH3kofme6eq<r8|E5%u|wMZDjI($vUc*KZd zG)_myB@?V*yCBXDj+Q2}!a8WPs+70hDrL{xRj6g1TjOA@4aAhVy1K$ewe^*vlewIA z#GP~M0yHf|T4fFMSR5d=szq$vY?+Qn;;aX{7(-5_=L$$q>6(;kX6Rzp(!J?{D0+6} zTyzwl)dJZ{S$FiM^x0llmM_|(l`U>gAf;LhRK@ga=Jy$0v4_~uUzg>gHCD8X_O^>R zwUBW=WJS{_GsZx00Zdz&?&ge!VhkD;O~VFHj!DtLqds%aKo}jns|~{@uz$4S>C-EQ zO~4Kw@dms{YGL~J6~Fx3Px<b3;TQk)Z;+CBf4}FW_ul95>6d)=i_iG=moGV#foV?a zJ9n<H8XEH)l||wL)_ZCyl#=mopu~zB4UWck6EJP&lMkOTxXgaz7zabjGr6L!CmOfM zBae25+A^gyoLHvYS6xWzxj9CrRB_F4J4NPP6nR`Kxx(Guk!ecIv96Gr+Kh%NHO*&e zM%g9qG)HMG6hkXCHNYEAfd2;%uqCwOtUGG=73#}$TiWSjU-6@6MG1aiSI>hT{6gco zyzE!?^1Aoz54ajC5L^%CSc(B1h1&ixJ4|ZD_~n}MLja?8gyS@UXsn?IJm^@`S_dtW z=C~%iiE-psaW3d^q+8NTD=Xr&^}@o6#_UPo3ok>G+IPps2u`{WHEVUh#4Eav9%UtF zIhq(!ZiLd<4I_gM9OKO09BDb?f+GxpIgZTpfxE-Rezcl$RTG05$sK~x7Ao7iiSHMp zkxP2iJ1=*+=e9Uoj5OY4CG^X8Ny{v`URcby$ZTi5uushQho%5#B_*E3pu8E)CcGi3 zT-57tj(+6f53vGuprHHkr8LT2jHDeFE7T<Ss8GdkY5|ygLfZ)hw9p+-Q-Bn6j~k5_ zPK16<)1;9~W#{*hE!R`#^>pOr%Of|&;q1W1H*!okXNe_aonXR7pW&oC_1r4CHCj;- z*mRum#;HB*I3caE8wU+e@oEcQP_RmG3)l+z_Q2R=b(u)3<W?!tmP{VR7-DN2Tcef2 zez)V$DtDttLIA5YvB#S&)>>{}zsCLljJ;W}Wm$Tz^^9&dYd6tkSCy`E**>N@#$d2O zLU4z;2Js8{EB;SNM{oo}hfYW!IL5AHm(zA-RkjhC5j%FX)@(-eaq*4WtQ|YEY$=^p zQJJx0?=|NbU-Q1tYb~>@E&(wp8mp}Ks(Nc-ag>tjyS@_n9BmsgrqDDx%62}eO|E*i z=Q(LyY~|sX9I-agH9e<cBs3f5Rf>k?2*NN<$_LvSB~r@VzPr_|1}vrO6EISDrFw2= zDfHH1oFnC;wpkIJ*SAoAt>~^7$T6>D^kTNjljNFXzPw-ckSkUA=45A8T|<j>W9z(j zmkx{D%){8AJcFj~DM^##O3iGybq!$g#5m(>p1Svy(@_I*Fp5H@2E7mq^DxtPe$#US z-JzwsXb7$2^725}c=}GmRA{RIeu$jzANcHVf6cFda|6EP+rRu3pT6w*PyhT+7{7eY zt1sU0|NZhy{^9$9+p%yvXXc%wB`wj`Vu*3plUXbxt`<jDF}*qBJI7By{*Yh%^dsW& zEf<YmwB6yFl!VhTs1R`whPmf7Cl1#wZ*JbuA1*Ot=JtNjmDhLgXuAV%-yNA^;y7kb zW8`j#%n_zJ*XfX>?Cvdxx+6dvFmK*F$IMRsUXhgih!u@(XD*L+?T_1KttNKCF}o4J z>@(SmRDzJLP?GYa32o=csyrf#nH~Ms>?k&ya(kIVEW|upNou9WAc|=9>zw8|&r<{( zw&o7&zGVpjsrkqlh1OItit_>Av@4}uld5thV7WD$S)-G5FSYFLvgnIf8MrkZgW8cR z_`_R^rL1<RW!DvB^}JipMR%aDLO5d-QR|A()Zm4PW>*hVFuejjLMU`b_mNU<bf%8* z&QtsL0VX?dYT12uV%JM<<GQmmvF(FVOs(P#`=?|Nz+av<v&X%b4N+TZEIUDG4T-Tl z;ilM%0)sj4<o6*hdmG$i*1_+v%&+|KMPpJyLC!fs)2sm*pw`DF*ugo^JVk<UY8O=2 zB(HP+1M7aXRCvcKsuP9M%qc7C(pq{Pm%ia4PROFfuLt)yM~&(%8Iy(ac!VrkAb88= z#erd(kU7%S7+JyM8;_|rr$gI7J-AzA$X1{2##$sMf`}%tIa|l;YTXp01%ok$Y+%a5 zD3G0jwxPM`$Tv4!TpS42F%BoD(}XwB+KfeL8>_qkF;x$<jK6c$24tMqLS@0$F38qr z*O%m?1<dI<&~+WxmzTV~x#99~;B*>vFW&}i=yjx?5`Et@RR;U=*TeCsD)@?f5K#-8 z_ko9ak28?7PWVF5mEV%;RqFedl8}xC?_C{h8`2z^XT9K8ly~(}m&{7XTZ_L^cH5{* zty`vTWn1An@9G&-1#QkMu*zvxyge(pE#fRb1Z)WSrolM~HfZ`@)$!QiRd`qurmmTm z1iFQbZ|a&yiGIp;m{a89(5?lq_g*{OCeZaQecLOI(HgAH#A#$2;jjPd*L?f>4O4-9 zf1;csAN<~@+<$$;H(!0lKm7VNzj=G)%`x-#G&AEUR*}KZ>MYb5zrtW*R!3Aqs*}JH zhr-oGPh$+n;epnF$j2YQ#FohCUw%t>k$86;m~&=MLf-~%ZclvMSaLov50M#lDcl?< zwOdXj<!&UV!Z;<yq&xmG3iFhRxe(K$ayJyCmPqIA26q?18<AbJBP(5PxqN=e$NL0m zdp&-wwe`c=?Sjn)fRRT^<Q1b?X*!tt@L;!4xF>{9k2^xMoM}}VY}hgR_E-N-yeG!i z3stb9{d-e^3b`uKomKqfoD#=jsIifn7FCL@0ty9%=zdAZl$xN0afHw*ZCeD%Gg3hx z!K-Db8098g=Tz-naj8Wr1i^sw`tKVNeB0C)FYDEpGoqZ0Rhep7{Gb*|b(GaKAVw=w zDcF?hoMUjF**c613J94Z9R_D-nh=;#9HO9h5hJ!L<IR&mwsQ;ErkLN@6+6Jua?6`7 z1jX(;@KqR5FMDG+Q@4xk^&5}jLa@(#H->cw^}Y>H&iM6@)$t4U&c4_FKZ<nO6#>Gw z$+ElRbx{P15!$Y)KQld8a!h!!8cdS6#HXBf@>2|FNq6c<ST3!!Q`4JTII6X+VAQW1 zgfK^1flKE(<iu?j$`mQJBeezPxuZfcBNd2Y4K{eDIP1^CTgH=Sg9mHSWYL1Ft0A>W z6^8perHPe95%r<F#?&36s;DK)M$|VB@XT3A=uW>_$NfCfdx4xtrz62RuB^~FgEh({ z7g;7s7E`_78eEdGVu*QL^)yYxJkR)`V|wQ-Qw>jP+Kyq0^}RpggJ+&64u_6;nkrgW zpRZDKJx5eXTdLTxRH%%K%S2fdxgeDUm`kBx!RkA&VJwA|ca2Xms<WvfF2Q>!7OCTY zsewGD7H`yoaIuES*)(+<qf2$fn96xK^#Jw3)?gi{XIa}2yjPMOg0+DRWUT5H41DsF zPq=ygnj*7?mDGIn6eBUss-~}_Gw0m;oND}U)ihbBCXw27IcrEM(l#C!G?(60_>XrQ zZi2w^?w&q3+&vum?H4zE_SrXFJb%IA((?VgZ+X!j=xxVWzx|%yeD#J`cZpZ0!fg~L z<C#U{Q&beGMYXe)(Qnl8WW1$mJTdF@U@<U8#94yPeEZ#Zy!eCPL!$8P!;iUr$e6aH z<dN2Q98Zzf8ioX8b`05Ydviw-$8i>Y&hvzCI!;4k9B1YNV-n^BQ&N4E7)vgTcvKI& zTmeF*Hp71P1l3Wq&b`c8hWhW?j_&DKE5p~h^CT;?pPuhA|C?>-Y{w~r*z#W2^wihg zAT!IJapA%5ImVogWbF=~vv{Oe7{WqdstHrp2V%~Q<D?(7Rn+Rz5tXVkT}FGpYw6mC z97|O+2TD<UnC|y7t@kv}C@m?Y{9tSG#wpWVa!oo?dx>#6xo{P96GA;W@?0gbY6G#= zN@R`O{VbtxJcq{9SV$!zX`&QMs$noq<FF%$^BOXfGcHCN3&9&Y>zQkpTh^(}3VK3} zPzvv<(Pg)4F{bR|~-n+VQwroB7s=C{wzoXyqCBMPE<QuMis%cN8nz&`f%aoDh| zqPt~KweQxo^WA@qb6)(J-|mN!-0H>NG|eg|o9B7$uyPhUYblk8Xsum|W82!P)RAsg zFjpL<^KRXrQt4ee6_Oa{EL>b(;-(qm%q*Ep-_WK=Yatm+GzQ~6-oRY4s>r2a8pm7` z5+_V>coz^6x~?V9kvxuS_e8s1=PWtJ)eh?`6lH;yB!nTy`aSC=P!rlT2qlYQDv2Z+ z=L}W~ex7J-;=}6$mu;)?7f}+I^RDvmwYx7_D*r*_XoC-=G*`>tIbdi`v93Zg(<$mZ z<eN(8OIWMeRbvb#CcHC9R$JooE=&~-n{%mJ2>pClfJ!bH?<hs5cgC8U(=IBGO1Ykf zWxeE<0%sxfAwXJ?s!FC)B&$9Wu398r+tn{w@U~G_d(+T_wl*R992f)BIC3}~YItE` z8Xt5|Ycv?h`hfKf#Tk7@lQt^dWv4{79C`8l8TU7D7*0|36S*krwff78lnMZobp*fs zIhx=w^_*U~4$f|?D{2~>zAFu(2{nQ>@$m4#^Xm&<zkcBBSKspwzy6vihH;L>`$6rY z*U$L+o9}q{?uM`54t#YpaW@-|Nf@(Gj74&tnk~n|y7JSNl`-m#S39FlriL+*C3DeS z^5$;lw_m;C4?cRq{BY!|xu#4Ji9&HYJ)N`gFl726F`RT_luDtvh7=<Y<AjVS<~flH z3{zsxFhwC1)v<^%q$;jmMvFODB)C<&om$#VIaB?XDvUBaJnWAves%w|j9M3k<i0R? zyn-~?DxzCLO5}Zd*Xkd)KWJ}z?2)&1543>dMRcsb1#Q&>+3Yj1t9GDrkU_0OY1#kO zePzt*H(m%(ODDgK?2$s(wjBBnu=>NV<9k~Zxg<r}pa*8_)Y?*V!l9!`BSKE9WVc4} z!Bv&0sg<g)0)>K+<-@E|t~Iqt)!bV=sCSme8Av1JeA4cq%zC(_L@|oM^nTgt8FDtn zlqdn3;^@3v3k0dU!DT!w+w-*oU1ax*OL||SY*qZ@E%c%UKfk@V&+HKtX7hlXvpsqR zNuS-R@3}j8<oGaU<<}eYh@5DiCgPo`0e;66X&wHXRf$l=N-Dy7I36`uT$X(1WwdUq zx?Sy&^PJxE_e<p`Ecjqb!QpG-m+W9Zjwp$-6y}_`G(sbV3+FijmyJ-cq*92+X#A=O z7l#8fj%o!fnTx)!T|ucF^sFgT#;oT>@Se8Q(3H6-sVqyuitZ_ADMS&btiEw0;9`vx z&H60QB1|O`OTh*RQn+XXFD_a>xbA6vz*`_2N-@MDBr;=6YPZXxf}#wu>OruO#1M0# z={i!*s$fouDb92Y7^lW$o*qv1JTOSAD={F&8Ie+_Z<Xs^mE@_8mI3;{SK-*=ws87h zrutr#<(*j)<fIZJi@wJ(XRL3PZ|}4dbFOyB2-jDac<&jf5$hdY-!q&BUcP)m+qT@_ z-tqF~3q*w5`+GkA<P(NrWH=49UB}_jGfy*j_qV)!`4Y*IX&N}qBgfN8g|}|eNzCAs zh2fm)aEuMi^NggCFMjhm5@*`B)$eUqrhtNDoLc4<MNVBYIj84MN<ygF2nH~=PFn4@ z2G9usG;O<1xTZKVj+r^a*WbM1@Bi@&=3MyT!<S6s#NFF>yu7~VaDBx$Uwp}{@80p| ze&XGj84|=?iKI0K7H8H~Z>nx3iq+36Wu`O}d`s7Mb<GEHnmHabU#Ee0-`#Ta>NS7z zi=Xl7r=L))=Qz(K8R>)P{$ao>c!Hd(2-XDz%keZZ#>|`|G3tb8ikVm})07eGs}-_# z>?|Qc+F+$zRt<`0HLpuW5tj4wafQ(Quy(DS1yyayX!|j@-5q?k*bUUNbZ?IiPlHy% zYY6O*Fy)_|gg%DVn2j!{gsQS$>CS4UXeDbWT1RKpOyMkrRK*{vY}d%avItfx&$$hO zi^Bo$0>d<8MMq^CvzL*a=z^zps$4fYl4i|x?z*-f7<DWa0^XDw<f80q?QqlwD@8}t zz7`p733ZV|ii<5ty`#mdzql-(9%FDOG1sDMo)lT>oxvoXj#yX8WHHisN8^L;ovMv6 z37b&MY!Drad4fQ<Q<<5ahrK!qmOY(4yENA=`f8<Ho(XxB-+mUUx-hEGBzR9bHuir; zw??pt?5Y5(V2{m?w>Rg@Ia%*155L%T)l_7gJS_98k~6+&r>4ws1$byivxYSI;2FnR z!y%f67*FfSbkQ^{#q{EVUk=TU?4_xN#^~DRI8HqG9+wlj2(7^L#xqSbowY=(6C4SS zVH~j5(Rs@_B$#Hpw!>P_G({aD=Ztq%3|gmkw|Dot8@DjbN?{wOOctw@!r+K5tl=Tf z7);iKR!TygWika5ga+X<cs{v4@bUE(jbn``9+Qqhi!n?|I91S30h+GEL?O=+F&aZG z0>%fWo25hufngkJ+m_R5&?LhUIP^Wo+xv=0)gtHe@<Or8&Xbbb^kPhFvfz^RR!Y%n zNj)4((n#hec(r*s$i*<Hgma!4C#(xN>zPi+s<nWt>*rivKO?j~!!U3-9Jsi+R9jP= z`S|0Hn5U83cegx$@sd&s?{44m;U}MPcXv;Bb&2a*?(gowJEoFJ299Z_Z7zrilO!Ta zM#}=l8pM0%0&NX{GS1_yCzZ@N&3LQ88j9|`U9b!fceGwz7=7D82$cHs$hpvXN1W%i z84{5-tVL>}X+=Ht%Q?4L-@LUNJ6y$ds_56rlMg-r@WpHX>aRZ|CiwKzk5!A1m9bEA z;p<ng`TF}CZcmY$v2cuqA(k~Xx>VN3_AaZMpCY7~*E7p|jY1xWiHpO5B85>B#{#Vh zeEiW%KK$qa&hqB_*Q8nB>68o6iTc&&!u@e3Wu<(kl+-mLhL{xqHAi(o<su|)QC7g# z-rBrbKJ~25MehzT#?_JJp69+77O55M$M@+!pn4YFKN_oto81M%tbh(2#gvtfw(sQs zDI@<M`x7l=OQSfW_h2bT>V|ZUjLjQmNlF#iP%R^A#WyZkP92Hq&!%ZwuCJ~tT64q{ z?f-pn>JiPFwAMODXC0QzG#=|HJwQ=^IyJY~8bdHyncKmw5Rwujl9t_?BiO1&&zYDf zB$t)02L`d)fq4twtKDgwC#+;#R!_Y+PZ1?mSxHqbte0udY6l9U0<VZ(3`?4%ES_=m z6bMGvkdy5qty7#*8PK~ztgLQFS=Tjsp>GqQ%{zWRhCd5fDV*)lA7AYGkth8u@^wFg zuNFE5Y3xzMyq8Az)c-96tVKe(EP}RuyJeW-88^Qq4GY3Rj2aJWt?tVEu4f#k)sMXQ z=x;b?#kRI>i%44c@Vc+h%w%j6aC5;1N6LbakxS<oeBhKbr;^ncG)6K)+jUIyOyfLl z2y1uVI(?R08yNFUQhNd>8=@-Rm}gavTjxk+#(G2R9Ey4fY7rI7T>bGeW>QHisw{;* zcn%g`9$G%Q?C3q@s0X50)pry`CkwE~vF4nZV<IQro5!4(Pb0>8a^6_wr_)JC;iB(h zss8JnGu@%bTFdeHpt<W(IG#@QeUI}Eh{b!Iq%3PVTd9zx6vkn|S<P{1+XhKVmDE`( z#6`!Yq3`r(9cP`IIm?G1e!$Ou{tM=mxqEov;`)jg&tEVMBexItynOkRclWml!kA`K zP7Kq)7)Pc&kw|1K_`abl9qA$R!3WPco=%8K_y8Y&@{-f>9%CXu|HV(Zy1L@C&;B0g z9k=)Q6sz<*T_-%?tl{!-!Ly44SBC>gCYPwXAg7#qrLU!Rg4uYl3=X?lE$vQF>zq@T zz~b`B+R1urR&9{4$X-*=Q7w!e!z8@Bd&fWi`b(r~xwulN&R1W*=Hcdsk6(UBDsXdi z%gyb`+xwaOxo}GA-iQcTUt_%uma=Ji9C+&}HD+8Xcz#88-yiSj`;H6W&|$fD4l_?Y zfAJ|FJip@hcB+#AqlD31Cu_!FN4+~zDf)%PavEnct`?rAIw6)oEd@7iDk8g{rK`Ja zCmHrnf<TPC*Lgn~u2FZ68r~qQH+RJWRxhHIvKx`=u4@^|s;EdWpXCC6FOs#W3SXT3 z4!NFLm6T?`hu<HrBI`(8N0^#Q=GdyAJ*Pg`3VgZH4VtN*B_pCRnl?0CU0%|*U5z|c zh=Fm25S(T+i|+J#A84#2jx$z-wh5Xr9A}Jkc&|Gn12iNY1xZEsnsG)-p$VaiRzT8B zDM=$eC9gO|S#r;<sav|N)m|2YGZ-6iRyYocx$gIjWEx|bmT(4Bx!bwm>(0xfzT0*G zC0g<B5yFoNf-4xIj@`v9DSMA&SvO$J>bNmm&u*>g_=;UY@F+oU{pZ)w<_3>3YiDg9 zxg<A|zA>_S*>_Wg6_2?H=*%O3$0I$d8Wqe2nKkeKGaK_>$XR{7#=<a7O7x2}rFh!5 z<v1KcbfWX{aN5T2oEPKEg)~i59WASe+11G2DMj4XHEm-tgYa;FqVb-5I??%trT}xq zS%<IhOpclob~qeVYa)d-MZ_ASg>f1XujAv^w~z~IMHH);&UwdG+wttW=c?;)mCs&s z(!dq*h;<z2#KSN_%Jl7l3-361!(}kIl<;l9hDKHV6^xQ|*0v*NTou<Y?{calxhbmB zIL65J#TBP<)MwtP-`hH?YY^u+4I|fAR}>N{&G^dDKMe!M2Q45<#+$GcEZVIdF&drf zeW39*hS?ejftdBl6I2uc03ZNKL_t)2Ih{ttc&40ijU^i>R{!$e@$AKOPV-0+!!VwB z@!}<OoXMi9eXJ(mrIaxKgt5?efhl?}E_(`@hvUpgKlza1*yF#4|KLymImgq9-~9Hs z4C9eM|BwDXzWVA*T3;w><kL_88Pjy)um19{vDPq;6OFg@eanX*d`uraeQ?C#L}Q|k zktua~sT0Lm)%YbB&AM=gglZ3b)q0pZ^<2cr*15_stM8uGa3bewcuOs8P30|=B8;){ z^{cP>`kU`?ZQ#X+FL2gyXgczoxxabf`<q*?`U7|Gj@%z-#waA5Mx~<Xv<53J_jt|F zFd9oe=d5Dl1;bpbMoaX(Op<Ul%Y2$2NL|Cf{x^TcXKlyz^(TyyNhK@su+%0<3Rz~H zJ#S{lD9k0+w6zN25lwu|3juSdK@-^lT51Ab9d|F|cjXOJsYYiPxiPCJ?%b<Z$V*q{ z*57Ycz*ns;X}Mf#{<d{)F*)umZFRqDp6<fSBAAmO=+Z^j&<87ace&U9T&O|~7D}!P zBUZt|Tz%5IM@$karmVE2LZR`2#s{T0Sxb&O!3e(PqQ9VT4mdGP(||?0>(I6sYZwM) zcQ-ZLIOmz1BdyoRC?@r)htSZ3o~G&RsWdQ61M{c?Dl3Mz>2ySu6Q#_E#MK>OtqSEd z>_T=QzEDUjoX0t@``kwNv^mS8lsvVf7-v=<xs^g^gku%uh|aAjMb=JqtrzX%&$X(@ z^X@Y>%lyY||K9Err#_8mg@P28Pj{uqnX>Dx%~^+UcG7dH2;h~iut@aG4n|X-F+-^u ziKY0Ebv=|R)#hp6FLob?7$HAM**n_}EWebO)GEiE^l%^N8H~dO$HQ>s*|TS4mMG2| zUb0m_>rYK1bd^<*@`PY;ITLMWde+eO&oOV_5kyt*(ss-#;}9+zufadDsE7y$CUcqw z=9qLx?E={tY!k>aYKVx@9B~J_W(tmvt`9Wc(6<eZH(VcDoPlx3Ohp)D#ec?(F_A;x z^3g?yDMII4Bt_CRAXziiH6y`dvKE)A7SW+?NyRdztirBbBRsv}n}$rOd<PZtQB*lz za^Y||s3+fAn$QqqVmu9aXLX7OO!I^_zUDP(7nkF_K~#*T4K2Y3ShO@HK{hz6|NG)C zAI8j-3&{w$TA<X-b7L*GadekGf@O|+-ZWjSl*$+>IdXm3tKOyx)t<e)##kYAmY@CX zBTmPj-+X@LkAC(E?{02*_xdYJ9{KpA7d+hG@c;bl&v^Uhd&c3!-NOUF`t0v{^X7(m zj12d8T=fk(7@l8Wap+pSRR>L(XQV{NNyq0tc)jGPKKN>Hbk1R&Bj!kG8&aHWI$izw zRj<0#&eyt7ZJhP<^V&H#)>LdaSf>Tz?J)7`yIbzw-EwFHKl$(_*Vk9%l=$|W*L?HE zw;HdD=d<5_&otHDv<OqFxfiGnu4Y<mzQ!_Lu6I>I@Qv4CtC;Z)+Qw6g7Oc;oU(q#| zPhNh&aC1wXPkiv~nt3kVj)r3vlC^a$s(b@+j?)y^aldY8EMuz4p6IGfs*)Y_XOwX@ zYhgQAP1PhUYBH&6UVkp-c|4Ld8!>Ko7%$zDm{Jc)i#!^8Z#?gsB*U^#Et=PDpUO)6 z5nSk_;EZ#^*S2t2I;nlPZT7>5_5azmrCWu5Qm|Q8D%X;CtU&{Q9S@bt+6_K%=nowF zgXZi`GbQTo^KfyAZ#?5XkyFAOr8F4|aUS(WcbejsrQm!+2o0fW@LsdA$CEG&sy1zd zqYa+M+iHnZ^z0%?tU-n<oLX!ycGD_IslvaSo@6YveM{dq%tPhZF99uPM_F6O(xU!f zTQ7Vm`uj+w8(G<L*Na)95eu$#AEdH8ZCPYfo7UasGNzY3YkfB&x3Y;a_kMGh$<NwN zbFQUWk;hdiDNorecOfi!n^tA^8Se|E>Bpa4Q?sA#W2)hqX!Lz&$-+GdqPw)53lGD< z#i7So?IPQ*<9Hm%F`Wn4?_UKm<SEkiJ=nk)BaIlw47bxn_vufG<Aj+rV}2lGDJFs` zN--=NZX(8V%#l-^s+K~-QN$Wj$+)Zm8zp6efkW4E(RW;QEp2^PP06&b(1n1NO*=4* zBY7u+P1B4}==u(ar7@aa9lQchj4aa#OWU@TDH2?bf31YOwrhz+v83}nb2uCng3})u zP7_^sU>FCQY7b2mj>iXl6S(Mm#%Wqfa_TuRTwY#kqmpLgIMcMMi1*G`A(#GMt<`k` zI9-u>TXP~*^&eAWoD&bjNX8P{4y?r%Ro**mndX@g8V>yhU4P*2;htP(Uc9*ApZ(z< z@^F98t8W8+-}1Ac|BRF~*H<0hJ3jd61ODc3|AtZ$KmGKlJUra<+b_Q0+0`}Qy?Mj` z^1uIY{QPIX&%^x#r-y<6>0kbj^j*g|447Q_=C@yP(f3?*Egw9)VmuyIEGLCD%{W6{ zF*v44akx1peQ%4@$?bwXP86pWUmwDX`89>gPuS4S$^=PR=T)C1QuphgwhK7l;JX9G zwtV~cfv;b^W{$#(t4luq_$LJ4@a;F>GMpw}zkbWR+XtHFKzF#})y<JP3EknKdI2Mq z$mcdTNgcPBQYZ#uPAfm4@m{Tcj`du0>on5RhQP!9J(pd_!FirvKjZs1cii3IGmVJ| z7;jhnwmN_`rd#y{+Vw9swNlrE0@za4W@B~X>;>s!E46h2fhmR5Z>QP@oH-BK-0eN3 zZ1lICP{=%zw(o6dtIyq3*0%i95TcJeo2NoyR=U?&xQO`?w)kfA5wl$|+Z;q^zM6it z366XSI$E0M^`bW-v~5G%G>C`>V8n!P0)2m=Z9B3g=5eH?sC)8KR9u%Lw$a?-m=Z$u zU{=75F&Ys$j1xH(4o$<M@pz|WvXZ8%Hm+<%*@~O8(8=n>n3s#W)a>o77rJ-)5_WCi zG$-{USJB#nrIjL>py2_&j>Ek<_x?+b1YO2K%f!X(!7&B)UNte>z<U{^8zV?It7vo4 zUOf7+*R-cK!+e<nn5}}%D-)p#@ysI}lI%S4=CLhpH#yib<M-k`vs~<tbba!OaU^VR ziq&U-w%Ibfet%Ka=~yz2GcjqB-*8kKnKh2%Y2x|w7o>cuidVBic&e~yZwoEMNYk~5 zg>jCA;`shJaB_xkAMW|=&0D@0GWRiaj5E<1qP0u{4|(8J3X=ixjV5Z<QFn?H-YGD{ zH=e^GaDCBp(e+CP2u4!v;tGvbF{hw>^eINBc~&Ts^@!ET(;``EUDlIKs`gBa$&tnf zyfL(mXP6QeEkLBEh&iKrm=v=%%Ox{UlSY(Q@A%<x$sChD%hhg0waXp4M)$<IfE3!c zA;w6Iv8uPB2_A~jhM?lqTClFvxuSm$z2<E@@7LUPafUI@%%$Ml7VFh(-1<)W@=lY% znzrE=zxN53&!2I7f5%r}WnMn(`Td`L%)_zg&>3#tz2(pT?BC_vSKo4R8TgyO`CC5v z_$4BlU;gsn@F#!rryNf+zxuns<iig>q=@D7&%fl|%^lu4g0ZAwWKODExV*U10<?y6 z1!`hn(Wzz{M_k)(E)g<up2^k_8s)Pu^DA42uG4VRV$B#*RGh3eYU6zjE3*}r6`aFS z2pHP7qv?B0*D{Ic)vFucyt`43i80Kv@a5OvaM85{@3|i$H^<0nwv0tMm6>Qf*%pe^ zk$cWr5vwUyJyofhN0pveSA?wM*oy7WnWfH8IdXM<$uvxyOr-aoF(<m-a(#Wt@nK}n zjyz|?Inuh9uiSrBlxVV4H&9;B#U<EEamnT^!(yGhE)DY<sIvp48-qWe1Df~q%GZ;s zY?t|d4{06=hh!&W+FiuUCFzX)CntCPkd<h^_Fpu8b{_{TKg=KB^X|4#5W5=ztA!$! z>M^&fJl}qhI>rsb(>5N1Xm~<a26xkRgtn!W!Zb}4p=k*gtYmVU@kU>Om@`v~^nFX) z^|(5cnx>I)9LPD*wSmqXJc%+5P_#Q)(v=i2Qr3&s+igvfs;ESFR@xnT>#B;pkfJJi zgLkAH*9*DqF=|V&LOrPW9_?jssX7Gvs0`dCu<ZaxV)xNvdLS=#pIS94H+`{^FJU!H zwrklSF{|Be7vv&)WUE=}*^jg!cAW@pDtg1?snt?q@F)e&R2$q6>N?EwbFAOQqhvvI zM#D2(acVRK#9IAKV~#Z9$r(<A=3dWpt~tvM^LX5>f9$mbbs$&wqPcpMhm>&`etUDn zsqOf?`+NT1?{D}b8|J1ZS<4)whP33OHZfx<-XL+NagHWfnxM~lAFL*bIZNLLwXVff z$Iq<FWnc5Mo%c+0;xy@nE*0|81kYSG0I@{%ew&(FmJ@v&a5$O}=$fWxA3z&C34;%w zhhZRt2B280iu>Kqq|_b!!^6W0yfQ@tXdDLb1H)-h7eXn7CNQUn4~}^nkfQnYSBDGT z1*cT?7b@QJ*3g8CmaSRl&Z_Gri>@)Sj#z*1i|YgZ;et6$I13kTr()SAaCvpXzw^hR z^71Dib8~;k^XrB$zx<NR%a%89zvbep=db_f3-0dU5%bKqufFE1ufHPY!p+-TUVZyL z^Z1vH!^H9aff5s4Xt-=UhP!(XT}R)x#FTI)6HgJ>wP3Z7_s%lhpLFkARP~+RF3~Ml zVRc>g#d%VyTkS@zwG^YSpi+t!MT!#zyJSi1(ij%dR?cLE5F9>u+P+7e=adTX-hR)+ z@kAE2-UcUhU5~fI!^6NdN5%xV_Y)680$b=0mh1wlB#!e;XdGDt>wFFI+EB!c{W&My zU`t6jSD7YW37)P_`ntv;DI#RzWN3^<tRt1e=bwL0(_B(S*H(h&p<^Inv8xccT0pH9 zeAEj)%lWmtU)PD0U9+=TR!c1ymTq3Q=+&|WQ0zKwBj@xkc_b`)JbpCnIvr!y`e6~S z?PE4qRr){iVt@MZ+%ERzvXw_`gng%9cG>WIL6<QbR@PPx!Rqm@m%6ImOAStOv_9Z4 z#Cg_>221E#nsyPsMTXN6$ul8%9D?LXiDM-#8RnF+#?kkebnOKg-AA2{_mrIITSsd% z#EFzgOo{46mpVc>AUR@D`qDlLEyYT?Gn$qp3!tKgb&S(M3xw`Ka1ibG*)-OHle)(& zyExPHi(F(!OEvrH&JROZwuH1T^kngt7i33{tDj`qJ>vV6zTIlt><i1i8og{GMSF~J zMxHQ1K1L5OhR*H9S8|*D4tIvEd-^3NS9YBI_Y&P;N7-B6vHG(v>OI%upyq*Ncz76S zyPjN5n;(6hn3=V}NlAY_k0YT7I8A!`ex7(W9Qowm{$qH1j}yz3lpZI}ka8jfPwyIB z@Q70tbL$)-_%+tk8{Hcpx)wwugRRxkq6(+HrfgZ2Q%EWt$4P}j<BT_!zLFPH)X}aW zy2oCVz<lM!8=N<_d!A{7$2y22x)L;6#7Id{^wTMbW(8D^xvR7}V^p;+1)3(*_~g8^ zE!O<-dQM#&dgghe37$BOG;M=g$CdA(&AOv&1G%{R=UDVf1;k>#U8g-47d;<;^dVQz zuE~<fX(CM%9*?w+w)foMzvZXD_z9QNGRMfb-@fKofA{y?Kio4+6YuVh{CEH2zo%&$ zUcLT~o0~h{zPY1odRiNJ`^{^vt}eK00(qY3n+9K_qtnAt-8@E=f@cjSMGA$s4V02- z8n4#ak{O0mwe4EwX|C8-y8=*BOsY_~5S+R!tl5IPbeiGnPTkgNp{!BYr7S=i6<7PF zp*Y8w3Nenne)|T&5PX9HPRD^4&n`Hg2EM<2hY?|pnK8j}OvGZzB@>Sis)Gm$--)rP zP1+bJ4!7?9lzb<Ps;nY<Q#MF&q!KA9(>QI;5aIgbK-)ORsG&Z=H#{6~F%p<1@#S~7 zOvaFmC6nuFc!5Qg6&U5HP?;qSZ+9-*B_6sci0zz_wYh$z3YnJQ*YCZyvfE8>dEFJ_ zvdEJ}*g#C?{QwK02Bw%5{kp0`>z;ZG-1u?t`447di&=v#&cwymJQ+SCXBW0?2-Q8@ zWZCl;P2;f`n$XgQpx;T(1g{TfsJ?M2g_5f`&^Ia`%!!mE<2a})xFj9l7)Oay4Q^2= zgB0O#ap2JPxSA#v#{rWgtuv4Z(mdgF!Wqr+)%3WEpfd^Q)MM_PS>s(xjZMVp7JNyH zLJG#}OISpAH?AUSz14rOwJ<FQwyh*Wqqtcy7BP9Jg*dl>{WzfLd_1iW@i}6(oU!=j z>6qNb|GkffkzF|<?!9ESebU<=bhMw{7<0~nU%vh-)~oTB+u~ZDq}OdE&fjIq+^55t zGmy>7-VumNR|sQ?D*UpFe)Wxp{U~m8zcMT5p*gY$Zq&UIi(^cNU;X+w{I~zjf5its z`H0`#ykkm<xfF&f%p1p<m@-qEm~+zqeU5tJ<*d=G-r;SdR=K3<he}+ugwT*uBu&bY zH&)2=NY0|x&7wup)uFG+Trk%dP#@e%Ms!vnD^boEA*YBl%HZ}PaC|s|bF@w1;oTkH zdR=Kr!Ff+knc#zZ?XBhh{-KV=L){Hedf9_IR_ZRDQncf)I+8Yc_2i?3N7r~2Db=sj zw#qx#1Un_iP18sl8nS3d+lLl!EM0dXgupaTWGPHj#EGTtTHd^UO}Rbsum08l!6_=u z?3cg%6?gX||HHrhpSgN=&FOSv7-wF+`i$q#pHqque9!&6J6hXfQsfXE^WCjRFk3@D z9%-G|9r`?w<G|(RCDSzN_dKinBIQ_l2%0pPs(m))OwJ=xiHFwunhdA9o@t&575Q4q zl21_4$8}<ep%$72oL@z#b``xkUAs8t2;AP@GsO`B`o81ik3Qx%zy2J9aDR8t@m=8% z8rr7g^l;CZ1>1DY4+9v{@5NICa}@kj#8OhV{FYo}VZ*wbwYE<2>Rvk*$fi`)d#O!Z z#@a&LG&J2Mk}Y?4M;d3CGJN&T8y;q->48=~<i3jDim2^TR?V4`151|8eI=z5B9{r~ z);Vo~R5fa6VNfp<sgm(quBvR1YO`dNn=`ADoOLqhY<#j1#0>u2zhmSF3II6|`{1dN z7W1S7eYv=89hEP!sP?gy?FTw39V?YBV|(R+t9^k|u-?&lwYue!*IeMTCJ$8_+#*`A zdM(XyBBn%)6FEn0(df)lqW<?P)+jmA*oMo##~VwIil8M&9GMa)$O8_=E83N$uOl)Y z?id~I2UT&TQk9aWC`-5~p~_jizMy4_RTOAQS#U{#JC0nt%Npb$is^Lq*Tni-2q=qN z>#92PDZ=kcG}#p9=jv~>%LU)#-1g+O^MY>I&9mFh71n+H<4Mw{gx9|p*^kthsm%HJ zV2nJj3(ge%%h!2tl2kABB2QfU$Pbc|WaHwl@1otUGjgd>hu)HMq{vZ)RCjl~@xIwH z?{`I4aY%NIbL6t?nQg<b{_!hfjQr>S{=dZ^fA=kK-ahc%?H%t%!|R(n$dNdX1ZS~9 z@jSj5tZ_sO)_I*QRnNEcfgF`V?VV$;WH#$`qz|H(C6H_2NPp<K>{{ljkh=z(3qit$ zYR(Z`v&XzOTyz~>2%2{%8U@^hhA5?8u&i{)!{NZ35+Z5kaO5lmub%%nB|_73ap*W6 zk2U2kR*R~uYZtwc=1HSZL)YMaO>Io20=1y=4vP?)fB>gq0I?M)ve_lmG!dNR&Fk-Z z_i*HJd5IX$!~KJ<6pUpW2ZnJVfB8LMy}IMs%NNXZWEeG{{y5C^eGd|7T+i2EyyBui z5aYx}+i|?R#gS>9=lXD997g)4XP!oiQSJd0LeS*2BBCpkDgyRFt$l~CTQBr+9F<BL z8hq1|VqAl3K+gkP$H=J^yw~E0Qr79x62|1bUw!<hlA=o0YGqOOz{8ZdKOTv3qG>#B zXgEC#d~y1cl(NQ3cO7L;+z*+Xha)i?=3Eeyu-;QrB)A5_FxKbJ)a-~-C#youG?*t$ zJ=b%kJ=%3OSi9v4G@7!mGn2p=6a7WcI7hB8E^!pT`~DkVeDo<d-`=Smx@4T}hj=^E zBWFWM^`h^RDeH~CPB`RI=JQ^gv@{gf*rijKvoZU7ag)p7awl#$!_L_sxVWF<v={k- z#5H;1QZSG3ppX8Y9lS)l9=q+<pNL^C714Lb?XK1)yHhILDq3;YAUPws(0EVEQPrR| zE;c8<)I$hLqLWBUkvJzE|D>5<N)2);Yps*3D64BdjkDx5lS<twr4y1SkVqp!<7^$n zX#A<O2JZ|32+q<rE!G)QNz6HGx=$=j$xv{(s&*$SVM!{)prDt3%6Z*8YmBbPp~Xy* zQX4;2LFam@7oqZpA9uaxy-WPDK;z8IT`g&w+j_|!sKPmUKjqKJMv7n8Jw^vxi<@El z+UESLuV38m^(Q;>{QeR@R|f0}Zu+<KgHge&&cK={9B=YIS>e53uRc{%)?~W{S31W` z6FjHWPysV?_Oi(?RdM@c6}4>|%Q22zbUm+zcl=+!{9FF(|MEZM`JH8Igi~j@n`UgN zg=4EQjGVOt50%7*b?ff0Ahd@I?jP>Sm8YIlUem*TFqJBn*RC0B5LcFXAUp+A62U2i z$sn{%Ta(3<lMsxhu}+oI&T(<*7>i(C!in<9`&>9pswAIMRGZQYh0&dG*9MB$izKC) z@i^5qE{mtASJ^?%>iI9omX78u<2Vz%*RlJOlvwf1(>$$;>QtvJu2R<KdBV7Wv+Cu( zfA_%slocmEPwOaa;Ts5so0~g^DJhq|s^f2O-tqnGx0+L)Gm?e->7Kszm?q=M*qX&Y z&9w`UD)MqxR*!Y5E7w%DKvKnG<1m4NahwRgs@rRZ#x#$VQoZ@rosv?bZCkZ~8bivH z67)pVCzbWS1nr0dm7G^6bPa<kMg8Zb!f}`xQiXpREtr1(vp?XA-+a!){YVG_v2c5L zREJ7&`mXwxNycg=)JDo!uX*EW`d!RXJ78z4nA5R;ML;!2VuX|vDHnX58VvJ<ah`F` z%t-}rAAazR@$QzZ{*pKE-qAXE_Ut8}eDn#Q{pNcWNH+np0*7+Vm^Zt`DTNm41kBh) zPqb@jimcJoi-=tlHsy@E$<8t4F1r3NlwhMC?RB5GUy~YH)#B$t6?Qi~w7Z@9X6acv zm$UGd`T)JJa+h6-n%yEa_oc}$cYC#~naz{_*p_F`#CoFR>)nocFO{=Kf9T#o8&qk# zSZI9EWT8b&XHgHkF+ylIe|SoXSn`U64aU;?8b>Khs*Vcqt}d_e!4qTDB4E<7n6Wzk z4ix~ij8_aA&)7DGE~uTtJKZ16v2cHy8RpEGMD?RKC||#-CWF_^YifZs=Ttv)vyPXR zE@=@AE=5sjJ4P&bF>}g7uDsZNBG!)8x22WsM)j(%u#emf%VoWcl^${3qypt-xlCDk z{c4Ec)0L`H-JGYuJ;@y0={&aLVQb&zz3;~&vj4TGJM}XzyIG3H-9KwrpW(()SVS|% zoP{2l`u(jh_(CBo+9m3kG}W5GoUfwlduwYp0A!3UYKt&xv5Cif{*yodQ+h9)9&R~K zBd020%emA;S`B^Hcv30YnuSo73sXch0&2Ilb;bJ3rK10RN#!clDbh57u5EdCd7ue; zsg&JR#XCpWsz2J~NFOYhZA0TUR=9{T&NB-VNd=)n0WnqycER~-e}w+fQA*~}cjOv( zyLiWKoh}6LRp@3cA^7!wb54nTETL6S4`5dl$87yfL(}M#EXL}fp$Y=G$Wy^!y^iFE zan|)+wUZhHUDs(qhqIJiI2{Lu(~-N|JC4T_agJDnem+G>XsuVBLn&(i%Q0$G;+rk` zuVh>mplzyYeV)>S&qY}or7SyO)*KI0MQ>$U=hQu!B7)sIt(~HF#q%^P9j-<}OKk?0 zFddAB7R9WH)YCXIOf%y&lXB+J9k{x<;^FQHSjLzbhY=PrTh*K7>N_81oseo!j(X;u zarH;LtoF>B2&$dAC3syU>;<lxs8{W!Niny}J5iAObqjMYTweCHjao3L;mGkc;+vMw zzx<B5WQsBB179ML>k4|=m8)||&$e9F9Lw!oT#(X6ed)_&`MecgS{(fz+(mo&7g9qb z77LL2wuNFgh)G_RwcBNDmn0~$kH+Y`5u&y4<2ZK-Vk;YdImDL3&bpdyYu0LSWB#yq zFQz_lED?f_qE#Osy0&t=MO4UQt%fvcD1~~-gY`5aAh}>2H5Eu%-L`td7o4ndrlKxO z4S~@r4pC3$p=s%ww(gaZj-bTQ_=f(_BLZ=bNY11<VJJ8wcxP~{qEyG=!9(!cy$7QS zPIH<$O_BRCGek&u5>}C&wrU8fqS`vU^WO`(j@ZSxdf}>K7cr<aSUVc)9KJhnUxd3< zh(-Sy3cH8!@sviVA}h3Lu^T?(q%VidVuw3tx^G3pDk51&)mCY8W($5<1#@E0rab4F z<C}E<9JsSNHr^{vb`ipC5T_psVtbStC~IQi_6;qos`J9bJmy5aH|aq4#6=GmP3S7C zFMo3a=wGhtSd8;ZD|FzkF34IRn2vY+{KIGb(eMA1d^)K$Obo+m#EPXD7;^$+*U_|w z{Ul0C%Jxp0N3MJ9ys-bs#VCH*SbXRz16vQ*{<_C^Eh!6q-)Tx0g_268D!RJoE?5zq zWG=gwi&oX|-ZwfKt81V+rZv+%ub;1~;1_@J;o`9FOr3LdO@HRn0o|=CKc5PfDeL8~ zQBlx!O--MhHOt#52HLkR870`U#G}@zS{0X>>eW{5%AxC^B!bgR*@(d#WvpulUK96F zwR!D?)^l#t3F-In?AbGI4sxMsx*E-C>Zp9g*Z*9K(1ccttV%NU-jYkrlc=%TP17)7 zb-yG403ZNKL_t(eb4`1!7rE%@dMWspAR247Kb{ttc3p?)s9V=ZdhS<Y7?wE~rdYT? z4NR#}a0=RSju%(gJioYN9B1C%-z%@62?XGxX$Zd2e1xL0)gd^=V5`DZn=_{q(p>rT zxyX9_SYvRtNEQ)X(D?0zI;hrSolcJPOcqEb*B~2Pe?K_h4LDKa>D6`5)w4@xaeV&O zTgFmI3*2QL<5#L&sekrTi_)b@k<CM-4g&?{h~><yezqFSWt}vL2=1c2_zOMca}_s~ z^{`#7IkLyn?LqR(A-easZ~OQC0lgogo9Z(>!z-F6yy&tChm5gn1enyh0DDNz;tT$r zL9vTxUe-=>+4=Zt!3kD{Iyoj>1xTcNc-hs4kZZ2Gsz-A!>P4-4jo>VYuII(|bDUGs zT&YP#&N|wr#e3ywm!zu2lA`j5CD)h5oUI|ORZ?Fm8hkNKky8yP7_(5ECmTa7iBu9M zsG4;7eatRI!B~gEF~_Xwb5=nx&R7jIV51uu=PAD9Ar($VbCj3w6Qll}#m%rU-rzh% z&sZ%q*2#+5^VH3mP;BX5Z552{J9|^(;NDxu>|ic?ujzUB`&gL96T(f|CB4a$e_4K9 z;Q52D4f9ywDVud}*^TY~`}wp=*2`uIwOB2B>(|{1WgXd?RY>U<kFc#fU{i<>@A!}Z z>`&;^kyM3j1xGTLDdn0_7}x2VF@_kUj<0KYir5<P(;P@9K<MeNpX2*We)dOyOw;#_ zv#y6s+mNhqnkJ+eI`25Njx;Mbyz5#pO4AG8VWi-VaM3oj!E<@&QDUd5>1&2znh8xy zDw&uv*1NU)R*I!z7<4agS2&Sc?Bd#0YuCBy8WcXF7rmixyDAXVSY&Ip_;;>mJ5<q= zawqhOn&-K`Z;q4;^BgIlf3K^+wr#3fUOzuyyWm^}xKb8~k=<!XD*vEpUVYPq^&(ag ztUe#Xdxq1XxK^(M!g-o2FvskQ1FH3`ihi9Zt&zDZc3YmsQZ+lqnst@A6cAcrxEh`6 zs(rc6Qk*5_RE4}SrOXr)!<_1cuWwY_wlzvtIGqOOdD1W{QLA9zw3woq6{+T(W2<P> zH`O&F>zy>sQM>CEFt!PDo!uri*6a6}i(+fz9EmBfP4?n2DK(!X#!T0CND*QzJlvls z7(xK3Kv%!pVElovUcY53%XWGLa4izw#kN~BCAZb~qSmQ)UU@H-O15CA9V>*o9yfdT z`{RD$y$(j?z47At#<D!x2?|e9;|=z`4(jniC;Om^y;^=}kub|{exLjPyCPz@o^M40 zF8j<a?MtKoL=itYt1oq`FRQf{F+wI+t~zzpsJjr&2lgELo)?$TXuaon|4z|=%P6IO zZ#n8{GXyOf$QdEiG#aBS)r)9qWtSvtEFqdgBw~mH1+PhL)rt|T3f`OYUT2=9(D(*# z6e=^N%qh-lB{7y#^ud$bNm^?t#xW+CiX|IcAD-F?8tv$$Z2NMxxZ6#YZMKJVPaSlN zAjCZKwwrANP-@u1b^zIxp}fzF-(O~Swak@Wu#DNXo8~DIANyD8J+a*T8iA*ST+W{3 zC-AUm?-lZ%d~SiqSlNl|cAdL^Pv`r!Wx{55`VmuiN@o46c1i-P-O^kffA`fZ{?EVq zTmFlG{`+)eM(!e^KVXujX$o%6G@-@VL=xdRO@vOzjV6hb(L&41>t{Sf!G(^dZTara z8$SH#BkoT}ZtjoV98X#V*Pxo<EJZBy!ltj<5xoTUohmt3pr=}>l&9{&8IGqT)_Y9O zv|YzI#}%vToI_Gp@tJoxsUzqZ30;eK%3x2q5Q5U+Y{kLmoUz`n<iMOF)~KbmZCg@` z9J*EsjVY<0+Bb^xm4yhX2X+W*M;pfx-!w>63tcgWv0B6Cc~sjSPFEZ`5$CBk9J&H? zMyflr&cv5hjMbnRgVYd}gjC{N&P79bI?Yda#?W>>^Eh%EN1U@<UK|i9tANqgLNLZy zwL*@RGig?RMBjFZNmY+f72VZ(X{2aJTDBGG5-b%<!it7q85c-dqe5fKyXmZ}VN-gc z-wgvzokRp@@Lj`2-$BewQ6qb;)#;D5o){A;O`C!|YiLVG)+y1Z%UTNav^7jQ)3gC+ z4f7Pi7@D9Y#%+(N@69wtTHi2?5s|2R1u4vLZn--h!QL}P)h8LdG48iyO0`O3R3~ND zjC3AlX6)9+Y^j)AqN!Qm>P6pT6h5;*k?h)?>_?N<+KmpjKeURee#57(&yDk|V<P=h z)|vM_yIZFE6Wz`d*Sd6uOEK{jVUE4p{@fFPmOQuTX;$k{DFxXvJxd)$H9-R$Vod4< zuOn@pmTX8`P45w$(d_bP7Y8o-mN><lkF9>krMfINY$AjP=bQp;$T~vWG1nKcj8g1$ z6t7SY?W%Ky`LBEAW$&6(9dm8bs8Ix$3(jd4wvIYI<iwm3!8ZD^*~PbCeW)VL1&x=f zD-l~2@>o+l4Ra1kcr1}y$KqR+X?F@TTNFDiY<O3}XtLiUWp^osl4I2Y$V$_*XFLRR zrqS4Mq4qJqds5t49f>?KUYGL}L3x6wuq#l@Sx3GUCEI>|c`^4s^(SWWRYb$O8gsR? ztXV}`0MxI)1YfKI(TXNEB5P5zI5s9c_cZ*A|MmaoKm6lA<na6xo{xnxjohA2bk1<u zv`jgZtR;$I`kv<E8LqkDaQT9}`w`n6xP3TrJKyoii)-GzeT#&aXbssKrji-b%%KYy zo2$Ug(b|TK%L|Ori^#j6aF8W!DtO{BD{nhzx~@eGjMKyvXK;##b>3l8LUN{U8*q+s zJYk$hsLm-OczlfmHKKr(lxlHNi%0K$wYa%eSexq@+}av$RJ8<4bf|HbDXJ1YCH+1y zFlWt^2%%xB@D*Fbb`);outjLB=QK{lIoFY_tfE*w=k1P0SkuI+K1O%nb<e$IG+5RC z^nFjx3FjSF4AZQxmr#EOr*Wv3L4!d<r)(DDIB8*JY<*wz`t!&|BVT<8#Hz>fbzD!; z3Fg9NveuG|Ubwb6rWlF2ASr3QZk?7a=W`Q+>OAI&CNu;K4xtN<5H#geVj|8_f6k)3 z_#%lMBi4J`sxk52a~cM<5@OflVQ;FEdIme|$kpF{8b)13<V?;GjH49MY>wJz=d6vz zoK)rS+n^K8G;@9E!CH=|nV5xaG^4>Avv$#9EJk(9^=xu$hWq2GwoZ=Nu;=pVwv*+q zV%6_B=eF^?$Z~;fm(_lZxEJ%R-Nr6V<EezV^Mh;Kf&Y+@&DM*3?KYM@c#UjbaDofj ztQrqD$o&%7vKQsOx940T@l_OdzGDe>OevD};cEVW*4}MNk}NyV``6kBcaO--s_N>V z6QCJzK#&k1P$ofq2VLj|^fq`P-HK+ql4zpoMi(*?29cr>hXDqSp6==Hs>+P;!#?R^ zt-XDFWL8fP!G@J#rY1WxBf{PHI{g3ldu-c=ZChnbL%VWRQp}`UN_vAiCfrXW-rV0~ zFb3PaVA~et6cM5vM1~pGITdh-h-F!YW@U_!sY*_w?$r0%dE4kisQ@Jl_`*4(H)hsD zO$QKJbHb@h_vyTj;@y=CJ0T;6C_ywTdf5^Aj0lU39X4iUV`QXXagao<z%f-sq@f$! z{V~KKBS8p6P-LW9CkY}(QpU1T0vQ`wZLrzLg>C#<wI3xT=ep0`N7wa_e8xqrQN(K5 z%lp^R3mbIpl3243Nb{AA?obIV6BBN0&I7i#t#}xR|IQje+1?Xo{hr6auiB7`x0OH; z=z2sm*VPBl9ek%2EAoB%kfqW(-ujmkUL%F<GG8&q1%L9-ejjDKBBu=@ZU`Y`D+bYe zq~RW?H$R3sy@7xD6iYF<M&ObN*$sGqx#G>+H?ZDdS!PVrh-n%z4i?Mx5n;Vx@{Gv? z-ZReA3HQ?-9>x&}tLXQ#{O;B<!nVTcPTUZ19zD+E2xh|LG6QVD-r>4zjVmsLw*u>| za=C@u?Y&bk`JgZ<jq4z^M67z~R;9kP5>#V!Q9O+ULQXJF4)Rh8te1P(d*2?sF(r6E zwC7LEnyIZ^1~P(<-9nJV5CwxDv26itoHPeo#1|4|b-ibMm`mvjll%L7EXyK^V+5S0 zlc?9dgYyGQ$->Id8QZ$S4_<<#LICUaM+zH@8ZI>`U<brtHcg-jwRbU#5O7&Gl&p3% zjX|mUD>-z5B_^yPYljX*;#~l%Q$ELp(>TfD&V<Q(oW=n$Y(R=AF(Ygna@OQMRL{HU z6k;q`!Ui@LZW!e`nPnP7EQMPEHAhbkx-!<Z#wTeJ$HvICBNuE*TokHHRH2(jz-r;Q zZ92`_R{Z35eh2T~UobCGni0->CtZ2kji9+(Su0vsc1s#rUiM}MMYRlIoo<N!002m} zE;SX^wu4#cbwv4qhCOsWx<8i=Aa|8d{%FSf#|M?Ym$r6z27KtXBw?*$U|DRi4eHu= z`0`$rHaQ?FFLY<TbHeo-lL|iM-|hFoP#8nP7J`Vfm~|(V+P5GkRZq%6<qdH57M>H* zI>R8r8AdqRv8nBLqS}8_++b9YVwe$=2=k04z8T9>;c9_njri!D)%~ApCAJVzSVT%7 z+vy+Vb*EB5Ibn+%Mn6biI}7<Jrh<@b6)hvamU`EO+agY)2BrZr@9$yhM(yPg+bjEA z=!1>2kifuQ#=V|Utis1qWFJ*PNR-<H*fJw&%xr0V@w)cm8?jr~2S~o@#!KsLk06=S z4u^7Mz3anM>i&AKtosqXeouWs_p<};)=1O`*7UZt?uIcs20l;_aa=te^(?oO05rnE zzLJywJrQHg0A+*!{r~>A_>({WBmCgaD-i*W1&`M&aQ_DHzkY||?k&Fh`W;^X;4^&l z_zw54UgPoU5vSJ^hS4M2Gu}L$F*=XQ$;0K<>w7#roH6i*c>NY8CpcSh-DX^#p0K7F z8xekRKgwp285RY33$SEhiNu^$py_95#4!S}sV$0)gN+Gpve=@e$em6DO3X6y)gpR2 zO@hshQD{pPG&Wi~*{p?a&Iw^%8ry*_H+*SBUTY)dy$3U67(_)KwX<)NnzF}ISLX|} zj$h@Jz_P3`tkx{BvK4hI*o6Sq!<?EcM+AjpEAzS&Cu||YSS#_awToXj<q24<>(&wu zVitaWRbi3ln_~@d-n5CtJkJ8!G2F)LDHaf05iF{D8-UvO3i7rJY$)k-p%{rG)yg?* zBrO{`#3@INUUWucZDhqot3HB_KEHN>bjo`($z(7u!uq$?V)7?EJv||3nS3zq(cGm7 zSZZE3SS!=gl4F~e7;-Si>J~gUq;*zNIoF9{EP@Cx3C0_&G2&^Sbw^%wPp?x%-d!VH z$L4w*mDY(LonoaBlClnxK8xi&$z9+UwaIzQQ?Gl;-KJJvz-Lk?GNbP6%Xg+#eGExL z2hhmA`$N~YQ#nk@+lO-Cnbp6eTR(JZW1xMN(A)HIz}M1Ek-@^9R8i1gJmhZQY>FIu zF(+mA2zhGq2DSujTAEUdZRD3aPI+a?=b`}<ilohI1L6Ypzygc}Bncm|#2CECX>f2X z+0LmDwip4&K$71xs_mnw0FIOsoC{$K0p5z@v#S1c2DX$mFrhTB0hKJNaFjvh)ZbYS zDusp??&<m+#&=hy>qCaL0Mos9(|i&);?kbeLObLra}ylO&89d`s@Dh<SJFkW@_sWb zt*D{o_v>JX%-jl47`$JfE$={IKfSzs+Oy7c1MIM_Dw-JZBS~%j&?}XX?f21zYjipC zv|CD{#Xzcr$Shdbe$^FAK_-XKW5K`r^S{Rb@ZbIso-P)D`vLgXHh>3@Z)w1f&iC*k z!Av7g<{l4k?s0w?U=8qlzxOj-u1|RP&9`{_$y=OHclgCGet{qT=m&WF_6<A-eEqAx z!{yxv%=3aZ7JPWTfHr_9k2o5P-sp8EH~rw8?rICHWfe7vZEhGm-e0Z=MJ!-4UL`nV zHLqGIZ@CtGhGD%xZT#qwA|Wjc1}_ipEhHpUq<B~BDO)K7#66O9QYYho!-EK2olKoV z-Mivw-`zrhvxC?INvDm5Tf!N!K`F9YNg>MqS_Qa;&<cn8p;vJ+X)#(<T|X}~ymR8= zE&};+&M8wuAX%1W^lq)i)6<hq|2#sBAnSC6ruT(mNta9(esI{ft%>GB5I(yfhK9;5 zD2?SGgRlj15g{il^S(Yi!TY^LkcX2Y2IYj)G)Zcsceq?Gvc4%&I3(p!6o`0Dta^a; z9;QGw6$R5YVGAqfWp0*5$*$m5kTv!?i|Z!@5m;tz6j%j;Q4e|f+~n&;2$_)@v`Y5u zAr}nB;qzbp8cWDXg*C&WgH?6LpRDZpUQoWLS5*2bcXS%=qNz)J#_Vf9o!gbNAL{jh zk<R57`gseNdET9T=fPe&1m6oP;QIGX4c{z4qz^@XW2h?Mdmi_m_fB|05m=52?7jwR zRh!OZ>S2^ifi;qKBm20jEuc0f;362y>gR;o!A9?d4;(j?El4JHi~`wE5}ji!Ufvwl z@>JlR6SlTtWd})7;f#!31?C@N*}*!G^J&6)@Zc=U&@FD_n>S*Q+2&O{3PtL2MeB;- z4q0}Sqj!5=I5VOO^K23O6T^UV7UEo~7~b4O!s=|3b-=FnIxyH9ExpJqD_UMxFbH(~ zCEdTOLTdzS<-#{1V%BRlb;ak+M5()8>%M)*+thq_9IS0PXgH23giR;Y3EXa>h2{BQ z?4J5gg<m-kwbO4FH@Zzvs3msZ_w>C>psp7PT_^_HM5f=-?etn|q^~{FmQkF;r@#Nl z_;7xU|LxEJ5}&+!gRdSFrcXZw4IV!lEneMO+`s+|Foe&hd!!Wb$-`Ux{onpAPTu0- z^cH{ji@(C_*LMJqc>nk{rn7@}z_QF(w*{AZ!Q~ooS!RSSgG0fBO~&GgFuD^Y5<YlR z+m%?yWK}^mzBmLFHZX%xCGr6498!@8*tW0G3EOm<R9wc`R%+LibBvr<L{mU9w3Nh( zMm5%=#0>96^d@UIO<$|5c?hj8D@`qD5vkQ{#~1_a9iFa>fOMP}KvgW*!iLO*b&EoI z%t`D^r8Gq}S~4NG30l^eO*XQI3nAe3>(_Yy{zG#pFf*Q>p2VT!t#qO($$_s4f9ook zVQ1}5JJV-!ObJ+zYojej)r!apDn(g2gqX0cqFs<Q&Mbi@R1sCeI$<J-Gc`uyR!f%T z$CR+m*QQ%?-eOr7WDw?g*3};C!Aqc&5M#j_WL$2n6WnkNqGXQ=sr{}y;j}%=8~cHE zY7je@jp&Vt2&RbrIb|T_aG;=OeLxiwH9zSyH$ljFK|S+ab{9*&)r7U8O`oF*XiM$f zM9X2pp;=P*nF4FLduCXupSa><+5?cjy91~G+Yr7}1uXbcb5I^vB{QA{u;3svqC+~? zQ9Rd=cN+q*V{>y;3-^j9(?ykPr&M;uF=@V@b5@Y6DKwwAsohR3J`5p8rM!VK5MgA7 zBcQ~96h+xeI(nuoG$Uh0G*_!etKLk@MGsOXqp@`N1VV}hoEhFa1vA{iTZ6DBO=FV_ zXz&hH0J8-cRpGW>x?0r=L<K*uqO#2zU&)GZj6oE@64zVyS%&VDvLbd<tu}RpOEsGq z`9{TFKSS0``lM)Av5<&Hlfem~V%lT`b^NFq!#U*^saePFpb8b@_Bm$C>g^}U?ZIl9 zDLa1gCIzr`gr{;$PLP6%dW~g2VLJZ*w*M@<j-E^IY;>gA2)VOZ-hyPQ^ZL^v%C)iG zi2%rirtaV?Lb>kXNQG5VTX{b?8P~3B^YI#MVFr(%{oy|am4sx0>4%@<_x`INBWw}p z(+Eev7hipWH=lljFTeZ;{P^@E{M{G71jSGB%fJ66)@8-3hd20}zxg{nU000bguniq zzrz<_{u=jpXFR_97Qg)b*O)IGa+Z6@fx$+iOwY#R&RD^+B4e-?$t0OP0XTVwleZYg zK~_L9V;lx#s<4=%{%sx4YZ6%1!JNiXQn_-$;Lpf8V<cc*H^h`7E6FUYM-s>olc1HC zb%P%!2{0ibCxS6RPC?^Djet~gYD(q;p_!!=kwem42$|w7TY#}12^mX_*n;fcW6H>? ze5mUmYSGoAbSE7Fhp=fF3CRH+6Sfp2_0D?nqa(suD+p>OO^$;Tc#W|-#+7`F>t(^< z6Go>x64hL!9NY6F=d6$|=>}tzR7VLvNtnhFw5&2BCV@stysbqnQ3`Uk43m!F&x4mB znXpw4m%RQ|)NNEFOJ%DTa{`QfHr9<OMpl<=h+xGPTWb;4C^-aml2$sgOo0MqlIE@@ z*!q4HU1O%C&s{XJBB6l0^QO%yD>VrPTg+f%5s)=E9YT`>fvf#*|EA5R-Nd?GgRujz z)CIwP;wA3^S4kTm)<Cn8tNOj{0W7$c;?hT<T(_P3cc-mYYgKxY!u9Oo3K0cWi%%s@ z(GBvGdYc_O{&xj@Pyw5L^qQ6JOC57}&wsD5BZHC&A#Tlrz^cS%-S0aq%l%@6{KgqL zImYA}lmo)HDx<rIU8QiNTh-lhR&S~y0&;|5BNu&1+F9!dmL<c*8iT=E9lI0awqT1J zVhS3s>A=nch2U+30G+DHLsa)E%Q&5DLfRH!yaTL7)&!%hU56b0$|Kf}2U(y9sU#$b zP_3<-sXR+7YsDFpQ0Nq@Afil7!vauPIuod)qSPGonmU&iJ({xy=_voZqZF3zCT6O( zH_`|8bIkBFuDtH~Zqcv%LI3=poS)0q+xPE-h7L(_xmf}}<{ddu7W<VzB}dh+y;Qtp zhjUhiG@3v%<M;pI5Ac)U{RzJKhtKiNuYZk_B8UJ#IIuVHBjL>_Z$afX!n)w@?u5Vi z_x~QwTX^U3mw)xwc=fBV@$TK%_~kEuh4&xc;XnMRzs53e_|;b*K)K-Q@g2VX`W=jQ z%2NkUqsKZg2&-70ytNovA}G@q@aEwTcca6ZH8+9*Zy6yHOdxPEID3clFu;utDa%7^ z97b$OL^g&66C6^4^A3X%AzF%2J61wc&O}ZL!#IHrFr6k`=LJ|cc*h|2*kVQoA;yex zatIfJ^4tv*oSm>Om-Z0ewt#VR4Yw@H^`!R^t0hy^-NI29fmn<g%N8-O0?o-eH+@Nc zrndcWeHOA%?SeA(NkyOYyfi4$yLXT3iBI~qK~l<$LrDS4DwBwyAv+RUBayZ_CoG$! ztqtA-MhfW|W1Dc~b%XN))hT5!IGuBt#t96P;-rcea|UvN>9Zd6UX5YH90Nx0g<O~m zutj+9VRT|pS?ERC9w9}fEvoQMUIQBg>j>MrDmbTri>wc-s102TC%WiwA>D}puTb76 zzgaBHCGT2@rcu$FdhghGkW|iuSd=1H5AMP!EN~xzozWh-)LC(NYcB1LlAh!_7bvf- zl@qz~h**k0Ev5{aqowVbN&TDt`F>yZQe9AO4E=%LkLJtG`OwsvFZlNkp7&f1!hz%0 zc3lyna|rM1!;D>Vnjzwf{v{ZFe?+9l8ZjtEgJEDAEWDExtGbWLstC14vU7+@h6Rb> z4FkEr8G>gcV=0!dTq;LK$Wo3Gl4PH|45AIovSHmMD?95c=DdR)Jvhl&aZ5YGBt}Wr z%E<fphYdoJ*Um=rtI0~WT)(drO9JB|1;;>y{tcPP^&r+mwuu+JiA&ulmsY6msYKO6 zNYy#YJ3X!`M~m79Q_xsUwN18^)lO)_l|a`Y;CV0HN`9FDci<)T!nyK{O!o|7d=uGv z{Ks_ue9=V|9BF3#*uFeVg)MDl-u&ua=4{P^Cxw*M?_2L?X2MT@`a9x*4jZ;@!Fs)l zrOP{zwfL*Q{QvOw@l)g&@a5-UV4P0){MTOrl)*V;eOfS|KOn>ntHz(ANF?j__yOZE z;6y;2XIP&xq>NGoTRM3UcXx+nUg4}T*25N%3}cxuIGuiid(Joy15y^>`DI;T5s}sn zpWL5ucb*U(5DUW*V`PKyv>+D&mJ}4kd4VN{^B&7GV;DW0x6*N{ohzlJUAMuqM6q>Q zBLu}LDTK>9Bc+7P<q5;!QAk2TChtV~o(Vy{^|Fgq(qBp~+aiPj>twILZ7Wb1YY14D zfRHxKTWtSs>Fv4d%`Rnk3*{{7U@cBr533lHP%X9Co5n#E@Put!L_B6hsXj~tQj{PT zW+NzDy)vz_V76GcS>QFq>Op6awbC(H%xRRJ|6q;Y+amU@zo!)GRV%Y=OQ<zmvV+cA zkX@DqmI%fWLN3Vbx?_%&+y;g77+87EDD@3R64<OU*tBuXNi3g(9}tr~gV7MZyH&eR zUP={6Ym#0&Aaq1gYDZl3dDsELnt+j{;7UdFK$MQkB8)&GnFd$UV}<{q908l{-fql~ z8sySNt&}6rBe%7&6h5Wy)W1&*>USUR^!?6u+R1abndV1zFWSSuO;4Vs#g!IiSEmfD zqvT3ZW9%JLQOeT(E|y(g)P;DcQbI>h`3T<8irKN`5+f&pxTw|0Nq(t}=3<oHHEi3R z)O>cJz?7_$2w<>Q>^ndk@np4X)Tmoy2-X2?61E@@otO)v9+uWH++gJ)og^1|OCsvX zD9AMuQt5Z43aymgEk9kw7c5<5Oi8J6)KvMRc+ZW$PQ7lT3q0u%F1weq7i1PXq?7g4 zbF-ZEC1w%aV%F56lClc-r~yBqV|SEp)ZP`6`^}hdrbW;5)$7;vkeip{Wa&nrxw}Mm z6%4hB!Jc{E<7z)v1NVTQ+<kq0Ak@RVbVS8muXo;wkVpal=3oCGFy6@lld@t+rBE_1 z;V=KgU*elDzrhw)5n5S`lQ;O|pZ^T^hVb~!x42wp;C@13LQFtf15((qAs3}m001BW zNkl<Z(TcRqNSTlc*sd3pb%n8v_mA)K=GAN5d5f~nKnOy(tF%HDCEc9{yg3hIZL<as z_a0xR1>_7qIeFaOpYfD8Y*cUwLK<Tu4|Um(Cyd@>4FX^pN5y&OjBVS%M3|;YS2ZFC zb=G2DHtqD~9jq3(Vr8dmh%lZ`$SH_|+E@@NJY|b0g*7atuBHl>brIW_vgAe4Zm=vX z)*xMaDn&XvK1g+2b5d86-h13nBLFBQMksXay2(h~dZe6?;|`r+O=X;yD^gtG-GC5Q zjDyE`ny{`brg4H}11i8g&pI`f0w`r5gbh~1YM>FHISMA5jfB#)>s$BUL8l>BiGC?( z8Sdph-ytJo7$?LilN7@&D}^kDYhv0HAoP1!cE~9=DM%@#YIWdxxdH%&VU)liE!=vM zbno{jG_@IG7G{DmVr$DfZRwkYx>BrMk=o6R<EUurCbgie+y$75?19?nDOeb7F7kdr z7u=+_RqX_N-h{X^N}*>I&5CcXY<_bdr$4JCw7Sc=C1Lb7isuPy`2|k(^RfD#fmNP) z)o;J{m}1p?+RM(SKkU`Z-bpGioo^ytOR2teZZUw(_*A4G;sRL9uvUNyIqj<g%hDk@ zW;i35&62Wk*qPuMIC%@pj2JeAI*!v_uVF#Q8YWfwW;i|2M`xR^$8zP!XSwl_z+B)R z!CI+wqCSud5waz)CHTSOG>vjYX+HEm{?`Y7QI>E^qmzq;OOYF#SVVD^DXmp}Ax8EC zqA^Gy)NGmz+3AP??uI+i9X553oLh%m9oAi-iDEF(GX`i^f!AHST-f;tc6kZBLe#p} zThPo)O!${m1D^{m%gxX2(Xvehr~jE1hs<<qd3*l5zf?FpD<qn0gO8Hg7ql%z-I}Tt z<Rl$cNn*hvC=QsU^GqRQeVXCifXh51g%xg|@w0KlpZw&9aO(x>`T+xH*c^ed!p4Xa zRv-p!>w>s#?P(Un25SgZ5(eiqGB`{3R0?t}?qh(<1wZ@Yr?|I-x91V3(ZRA%x?YVQ z_v469-aG(YB#Cefh^b(hM)+~Wx~|x^4dXO6-=I-^^DvAme3dX00NA!wl;1%jTiF<# zPA3hfDJp`K-Epd*BqMx;)9IuScVYBJCDRSlh;7@{zg(~d`I<VGf4Z!aptvOwK{2-- zU`9CzOR2HwE#AI;i|I5WrHl|ZL_N6bp1X?k1T8BE#ynqT<&dJLNs0(;(d_j0dzON2 z-8%fKjHB!KXVUaECFNN*@;!-k%Fqj}xluP`%6m~?3-y*0DpRKEbjH^51keGSY6ptO zOQ&9^qBh2yN@KLgn6Pa@$)0i;$0W8s!`$g*YJdv%V3+P5&U9ovmZE?>=KWqGqr7;T zkX52+^`X}HvBdy4=T2uoRfc}GthKW&%YUz+9MbPox-NoVz+?C8XY`oZQjV(KW8<=a zAm4Wce>~8SO!(Vh=EdmBz6_|{YwfmQh_S4+E~c&{0=i_c+VLx0OLyz_>9^aV>W6bP zdS?|&)ZeQ>J8O9py)jz(3ZgJ4jmtAPJAU=SS}wwEwgyaD@QxBMq(8d=hydjl`<Qcr z6vz^0Ld-Ch;Vi>@E8#O%M0<I%*n-pdDJelo#5|6bVkC$aaE|iYG<~QZPNrGG_()x2 zRZ*v^!QlRxv`<pnuDh#}3w0eX-7wjqiE{a%0oR#~?9jWh{a(%P?C9U%!}!Rk9nY@E zTnopSsByO`e^k1iSl$zpfESC1@B4engGT?Z^J3o4#wsW>cj<+>Q`K|cz3Qb<yT<zn zV}|TGKfHSfYYh-1p5`n5-JkyjhOpree*RNjt{2QPpri;B64o_hiy4Kado8r7O>vKN zPAN(%8ViLi<OGm}(oDmMaEbWE7hmIF{QPJ5o!75$9xaRk?#W|J5tItNb@=4|g!~vW zuM4KZAr`=l17Hlc&7u?;hnq}-PBjJ}9-s7H6hWu+Rn;EA*=oFII!ynpWyCd#O*F-J z=*vNpFfR*IE;yg>@%Z=%KMZ*H{sYRBbhmXzXdJ6>m$7UC^BS;*tic_nB`21fbz!|Z zN+~$soh7IxMQoewke7MGwn;$DFbslhO%ZF1U@|zLPH@iZ6syK@%CylKi*;E=+@=LV z%MMqnqqR;QqIIvWtFI7sWG&ZD>{gwnWWdN2qhta~l(nO-%*3X<7xY_*;C02rtJiq{ z?i+CoS=X)?W@^+#0~TRyR?l}z(qS73_DLy8wmp-Ex5(#dj6n>#e^(EE)t=NTZILIV z3e@UBPc0;=wtcBq8YI(!SV}t|3hjxJ)h$;&=cIPRYBw`@o-@&}2T6s@4Io|0&X~|N zw<8@BJKDILAlMg9<Ktne_*hhH!i@!|6ufvSe*~_*KZuxL486#m-KM^%-CwvL>TTqD z;9paxX7B8Blsj9`?q6;dRQ+IdUj-!#HRZh`W4Rx%=30pf25_)Ks!B=3I5kk93IwZ+ zuX2(l=C#0C367D!BR#x|s!F4d-UWh?v+#_;1TqF}4U8ptZ{aM#5nx%ppzIK$6R$do zaJq9nFtc#mwF_pQUoaCW%gt!G%lg(4ldgz%`rtu-vG1Bo^Gxq-Xs9NkCNIig<r^Kx zbME?{cU}$xvKpso+Vz?{v*Ulp5~;tz)P7U4TuX;8y<T&CM9gyU9q+s$^*X<u2)r~U zcu6Nx+k7g7TS9#u+vb-F+<ghB>j)k9H7nx&pJm+?P&gyU1e>j>YTbl)T<~xH<KN(d zf`9TmpMl?fi*mVOO&KZaUYLyV1JtG{-DyH8w&f<ku%>oN9AW_^qS!b*E(!ncKm9F! z{^S21WDHK8FgORFGY0Qa*y7>sE39e799C>>B>l<~5&_f6!x*_n9XZ)$lawyk>lHDo z=u_470I)2J?5J}_%vpWxV&gJKvB!{ueO(tALm0fpwrvP8W0;b5r4fD{Fki2jh7p&i zCtcxLY+J;#20T7p5p^}uKE^`NWX8P+n3&<m5k-CQkB^TiS#$x$82z0Xr}GI<*9#~^ z$&@SZ?oL?d3(n^gwrvydc#D}e$Po&*k;1)puS^8%286Kaz(o$_dO2<>f*7z_cjI+Z zU^ICxXAnCK<4Hn*go=T6i{cYk!IvT7e_#|BLkyc-ca|{>LsNm*-`NiXwsl2O0WTSY zEo`7DSpm*jjR@{UrNknlGe&H9x)RGRM?%l(T$-It9(PKgD?8y$&ZJ6vM4N~-#5Idm zIhNR^O75VkUQ}DBiNai{LU5{Z)MoW99pw<3wAnvzjvV{$>?FXPhVjp;+HRlkADPue zrgdxepd$Ww8r3b7Ub<j&s4{L3^)>>L<xXeI>2lNYLR98qJb%oRrlL9U-Ou2|n08mp zR~(<U4AX!TRh`ao+EG*U+l!yu8NeA4j(9`JDI$f43{65)UcDg=X;EQ|F@(VhqA`Y5 zQK>>uilu^MM2+f=Qy#SLO05MP!#IP%8H~=tJNfy}N*1*B_JGfX?sihzt8*^;evs@E zjrvQ8L`XtLM&j96B<HXZA?PHco^M%|myP#NeU|!d1Zvp}D%wLw`txT`Z|lca)Fqad zgV2rpRJRV7`qKFQW7p`jPF;71MX#Sqe`?oa^MaS|HKCzhTajeUi$CYEI=VU7Z}G{E z4&Qb1$N#%YwmYl@DrUJua$;xYA0R>9?vGh~zljMO0Z-e8Uw!!nN=o?b%_k_^hEfvd zxMC|p)yg4B;1EGZ{UJ7{eO8V+6+($(!!t%kxiN{&^y%>fUY!Q~^oOr-fATn6htXR2 zX@ozIFn1HS>jl?&#w7?QGyxLoqPr{aJ+=_Ag#a=J^K}+ns6tSt=>%qRwGc5v5M7F> z$19~!AFw%N+g6yCKTaxElPKDC6K9N2<m%55s8dX$A(@we$ET%H8e!`FSdRPM7CpRA zGjl13x!}6a`0(xnmU%_aS;x(yl^I4sSl>T92<QrOuoq;FniZIj^G=iYil)wC7m)RW zFC*7^Oi|AP?sDLDs=%V&&q{ifc+!IN-5oC13km^u5BG>ABF2Dm8WA;dj%stpda!RB z&Xer;xdU?Llr%Liv>=oU%E>y(sE1%|T=(jlQh_s*(m*4|(<nP{P}5n&tn0Cg$)&1e zk{K~+A)HHYGh_MOjQYa43ECuoT~;xrmuYn=pxnoT*I3ogLY}d6C`w19sZ96d)Q}Ia zxi-OC*1(*GN!afnIn;5B!=O46$j`wp{oz>|*4!R(hvcljgQ;MbeXP1yQ`E_=as!Th zWX!ML?tc7Ur<Mo8To0+iPH7?ntkEt@M^oO2y3!d2vM|SuVZ9JUx$X?XTLWtdF>VMk z0u?c+)nSdnloTaka0Y`HFY8tlo{W_wwNwz26cEliFk7T3qdViBSkR2@{wMD+IN8fP zBP@95rFyMM$D|gUn6fHp_cemi^`5f^*6dRSQVUHXgUk-aDf_+cX)B!$`^C!i(P9lX znUVIO(H7iNdZC;-kl5>CUU~aPA6n>uIejE+W5g3T_3&?ds2?sM)m&6y#UAClLpf?h zti(;4y(r=1!7bN9%~V56^}`FGq&@Uzw{lW9S*dvAYBy|jIeJc|>vW0T|B&@jqCG`s zSaLEgau!S4K!%#jBj${+zj+4(!u|OkF(oW<L(t($+60;+MI$4H2;>4wR+P&uoWHPb zlE|frRjCkCVdNO`^;ciur$2gwpM3HPr)dIPD<LasgL^n*yIzGzS4c+MA%G0SSO@Pt z=0()-%eulkhiwgQ9P6BK?wA-P|2;%u9}MFNry(UNi&s4bu~5o1%ps%%@1%gJDQ`6} zW!W|umfdbH5&$x<0hf72$d#R@nwF+@sDd~&5?H^YWFv>qJYSJx)+tABY<ec~tAl_L zBku0+alOtmhEAy^uoZ<n)u~L*S#$w0Vi*TKq@#-eV)KU+Gm=i^3id9Ns%SxBG<9O< zy%Shh*x<aw{i_Ge%N48^xfmpdHfx8Pa~4};N{44Wcg<bR91l?vF|BiIwcQ&EKCH}i zEozMxr}8`tDPb5!7;B~Qi&5ibbMt}cEF*g1z;mZk=iNVErxU3(mr6}W%(@zAp$mPq z*$p`AxMnVGWz&SbRfj<O{&bHcuD{c*?uT}ujXC+dKLgZv+_=2AXZlT8MVFI(t6c9N z>ZD0OTBEd>&E3u>s@2+M2rVpWC%tQ<Yj}r9uRE{qO~-#or0t)A==kELLUwj=7_+L= zHOHAsK@Q^O_Dq-@!;_lDS)eQ;<N=rqj3JEH!WI$8L;z$ZR3pVG?~jqlRxTN?6pV(z zR)|Q#>9+t|BtR<tLV)EC)^A{(fgKzw{oi|w$y$uoVz3s2Hy9nm8esGegS85Z*jjbE zg^U!l24x7d*s;OM8aNhCaq1G!G8n}U$krq3#a}UUxezE7IN0vJuErHbNtE2SQ&~vn zwUypSjR%p?QAti!^_eqJqK-sUCwhb0c;sTQ#Y(NhUkVWV*!cT+)A7D1XTj#my_9!P zKJOt%rYcl5peJ=6`eT0jp14!mvAQeTZv~_UdscP9L2tCj*%Cfl>?&bW^&&ggW{+y* z#_X?zJ1VjVbxyp_Ato3%B3qBIA0Kg97CfBq;4^`Pumk3>A{&EPD&Lx5jc+6Wq|Ae; z`~$95JXJ++IpUfMzWn@4{NWFOgde;)BabZH1<IfwzD8U(r0W$S5tc1#p1N&&%#4CL zZXhczkQSes<?xLuV%<b+MrxCqPA5P+Z0EgzOVmrAilmH{B6K_J2dpu|je`~dvddhz zfUrsUg7YKRQ1IchAn49E*TX}v(;BZs#;71n;5A0Wiiqk5UErLAuSfzMw>@sq;E|-+ z<=ZvjJe?5M4F-gD+3?BhS2~ecF`cGe)CGoj7C8%$#yKY>HU%~b{~>n*tkSNxqR$2< z$RS&@r0E4YIKvu&0=#|u7VENrP?W9iur5Kne0_G1fo0p8D4AwjM3O0tKwB(`g{hv1 zV1@y18Zn*EViydtiK26nU>UFhF)$88i`bPgmw;g$@ad<Y;OXfidXOSCz@od6)(mnd zGF8-a6Ew0+@<4>52YSq<!Oz;))sPi3`gL+T7b;qi>>~0~bqqxUzls(wT%fu1q+)Ng z7crX3R|R!ddTdVP_-9oL|9yzB-)&dB^@sNfZJKO#t8S;~DtLL&u+n<UAy9_M?7<jx zL~sg)?e_QJs<Cckki+h>x4<#M8j>K6EMY2>vp9JtE5V$#8<mT{cDcqdJQEDW9+n`Y z5fmUswKK6$#0(XT#=v_<ri^6^((SO3ots*HvW^6uvoOwpEWr&P(`kZn;v4s#;RlBI z27a^{1_OVx@S}knER5w=iHDdFQjwcVt7FosgCT;qfMZ5ds|HFE-=ndJY>})%ARrZL z`<>jn4YMb*wAfS}qF8%2oqR4CyA*;BhxqLUxMPg-!D7aYmT=audg_|!SYXm`6wkGY zUTVvp&KlV(P|+pP-3UQnP|M$r!`tgQs1oP^nfb0_<fRqYZ{kEWYGUV3IE2k8Zqn%C zE)R?v<*VF=no1QmTrL+((<I2#oN--d8D(c^B&dwT3l$iB_!kv2)xBd?^2VGIbAt6A z^St4!FTTb<`@NrGJOS=x5Xr!t@8O9M-aR2?V9gnqAO~$wKuRhZAD*5tozHOI@8m}X zC#{?Kw25{RoAo2s5OBIbgN$_DPnWrM)2GuJ^SpqK)f{ps9eFOwi6<=cCS<njf*3R2 zKRzKAAht<Ug`Q9obXL185n&uh4C8>)dBU=;yKswul%!)kpHDEx!uzp_<7D&<ge_q3 zgODeaI7GacnAh|9gq$<3*BRaqaCXEz&$z$8!{u^;b5<vXb?jT7iJ<$OkGd9RW{lH_ z>ny@SYb;LVs4jtwX&Ran=X9P_&mb-g(y3NX87an{VWIb)b%NS8>N~Gl7^M^}%OYr9 zNE)5j2}@Lee9-_E(M<&Sae}c9TiEpT-!P6ROyfx+R%2AVom2%<pzlc58q51k*j?$R zFKEc0iEzvQjFM+B9U`L}<feNMQeE@bsPCL#w$HxMWViAAKlV_6`GDW|qBR-od8F$e zHAxD<W#U6V3$=@l+bGl=y09)V<Tm!T3Y)YFD>)zJU96-3>M{{8b_TN8)doX24;HLb zgqkA8kYE)dJpop&VKGINO1a9=G&X8cqo#;B&UuT7j5Q@>4Ud6FLV_f3+F6G47S=n! zGKNWRd?Eo#j?Q9o2B*Q}<UOX*$$uU^CNH5AhPhR%xrh}-tRF?!3I+^@({3&{54)1} z*dVb*au$KK+RV_=oQglN?*W^RvR#2YHgb=B$*t-?&Ru%%S3iQ!M`UZKuBQJ&hx+Z* zsbAStF`kUtYgoz-MMAmt!sDYqx9{AE_f(nQCDKQ*eym`A>F|H)we0Up*}D)rs%z`? zuW}UXU_PUE1WERyhTz8$TZ}De!+24?U$0m3z3Yy%j&F^%GG-6)U`1@e9AmM?AOR}g zV=KUQEBMvt|A2q-U;hl#>l4UN;Pbsq>>g)at_$8@uHa$Bnv>i^RFpryX%Gt#LX>V# z^T0P%L#Hg)Zb%t^JRy}VFc!mD)}`I!%d%>4hz2idS6pgbYs#4C1w;n(5)f0yhsO&t z5oBV%<36cdHv)SsuW^!PK6r<_yF0OysrM)8eH7w`Ed~+c0=T<7V;Tm;E#iDS;r@Ka zx~|AMVVb6farWL}nnvW3u*?D58bHLjySo!R+qUZcV-Q2eIF9gs(CJudU0_=UsTaQn z99cggMp;=93YK|6iV=6G2_Xhd(}-{1y@N4~&p!JUpz4V)FwUc-EZP-CbX99!j0vZ4 zk^?X0W>+ryx^fcF_!=ZP;B-D~gsMQajF*^Q<2)|cMN-blD9I9-FEa)|;&OdDMxCN> z5W67fU3k)*Kf7_nwBocW{J~%{2Zu?WD(?^vo%Hn+IihB@t5BP!jIZxOrDj&U7IoPa z>ZW*ps8jjvXmNO{(>^|!>1NM<*nL)#T-NZAUX;*_fb>GIIn?s+qOskXd+aOP&aoZn zb-deKd>KvASd)*8Az>3MAm;2XPR@XGLQYv9SOiKLR;LflfHUHCPf3)%@-Wn}8Lc=B zi73q(hVup?M<g)FdI-x_YfYA&*5EycX@nUp*b?p@&bT`bAWCqCa2_4*COOE@)1ZGm z#?fPNPK0^H*h0dxZ3www-hzZp=uK)A_Fzalf@c5FYALfp@gCVaL?XHUG(NEHwVJ64 z2O?W3IOrpG+d#L~QB!KEOZR75j{P7nZKqxu1@OPbq27lH)r71=;E-N}-0iHXryLf1 zubus~QGX|@xwU@2)QR6J<G-t0e=b&~XHL~BhGHUQDveK&OX<K`S$D1kKMXov1ne+k z**47cf?@PvV#KZT&jl!wN^X|2oO0`Ia+d2mYqyiKgbbxp0QQ*f-(bxNUw-~e{Nc}k zj^TU)S%5~5`0f!O-hDtw(y5zi1UZW}2plGar~))b2pV8A3_?^yf%k*b-aM9dLu_4d zfN=)7WP}(bFa|hGh6sdpT~T6@y!99nLPSUf%a(ARS40(LWs*O=!kroIxpg{^(nXhy zW!=CeaGBHTgzNQ+T&U%{*Kuv#t8dGKSFc{-e460BMF;_257=BH#%WMHS;XDlSsI9x z5Mx3JqTzXXxJM~TeeVN8h(a9f90GktM-_;nJ1cT2IGx4cUvloZog#9}3B%wewiUqX zbiz1JxL#!vG7KYfiW+*ujh2^^6p@1;aGGTQUy2;q_3$f9&0!N#L?OVB1N<<+IfpGo z%<GD~`v+Jj1jLj@?}1VfLWFltW3y>r^_mKM%B?6n=wd42twTJ&#JcGJj(ZGxHx;Lj zY+6V5;(VZvs#(y-i&mjvQD;o)A~3UZ>f527s&A3XKdM8&MZ0qMaJ@au4-ede7sv9u zqPXs)cK`ZbJCvrzKdAPBW7vgEx!VWT4g;-#s?VJv`}BbcXYX)wjFMs_2FU~<D@sx9 zU*0fG6T^rFDP>^G>P^*^fz`sn7=w8Y$RvA6whqR+hWcbSn5Iz<b;lSchfh9vz{A}H z&%pgS;52#=i&{SE-X|6bB)u#fE=#~=4ft?fa9snoR1jm4js+r)6B`>~AU3;HRB%FS zjk6xv4hU=ziI8;Uo-1IY0H(0+nD8Bk%*!}c>UZgM92M1F@qUv?|5z0<x1D-jp;UoO zodSIf7<0H00l@H!K60jhRdb``D8Jb%_c8n0eyEqGaKD{qy`*S==|A7T#%CV<TgfX` zkL~`xaUIhWJ>w0G<Ip_3F-Zq55TpnOVQ{`H+;nQgJ4~p8Ns1<#N&cKXkdq3t3Nr5Q z9<XgImK^c!n<sqx<vaZGfAde_&j!U3IAqKpo)7>mDdQRgHuVBK>%b6&xgET4*U5m5 zQB`_u>Tx!vk?89Db)GM+`H`_~66=&gSme4-7={7PS}f~|LX3HhxU>UZ#iTm&7i?<Q zRhq-;JmT*Dgy}Tke4YT3C|PSngyp@Lby)}qF{rJH8dkYBAKSWOS!Y}?mloOTyp_+X zWQ^k=v@y$=rV#|f^}2{71Aui5Yb~zVE2eS6<#N?dQxA;_#wl6Y2DLk_!e?fLC_+7B zjZA2?C6n|!hs$*aX<qzwUYf2T2Jzh+=P;c{Dd=)+Xk%+-I=QTi@aqjXp<xBuq>Q!( zA$^{%n~0Rp=QI4^0Rk>hR}e``Unv<e1c~KMQp}YCl$1JGS0Bhkx(DZjQ(;ea<Zj}% z+px<EqH%Nr<1VyhU+Gmxm4a?=3;SJrQIq9Z1%35CmWPQk24?c(pH-BeX5xT;%kg_X zAbU&DPLX?A5#5qzI+gQLAxH;LIaAH;KEgjfHg<2t13ExR%~_~1E^VxO%uzQ5up}b6 zvo#pF#)N8=sj3mJeh|h8QO?xS36Us(3lNHkK3Y;66<GDu&LLtB8BfcG*xCOL3$@5t zRkC}7`}-4q@ab#3zMF7AI=negm<ETeoz)r>u3N<W%LVVAW;|Y3Jk0@@C1FW~B>^D; zYY^V_IF6X6LC}aX!zhd<=>^m(V(XEe(By*d+e^xghg`kf2SFko5Ar_G9yfmUzDqrb z#y~e!Z)!J1?HGukck0}!)Pe8U$u_&r3os<ptKQqSa&uU|)Rof_0sB(1P>adFo9^$W z+dm&0v;U@PME%};Lv=14l+KvSEvOSMO{r30lwqrR+OZ{=rJ5t4b{xZ2P@%d%C(_AB zE-H}I0-_SRK(Nlsej2jBmK|9@iUm(I@b_Q*3Y@O^gFpBg+?xj!B5dy;@iZ^k3h=Zn z;xu7~a~>#isIxT<e3Z3mVP?dT8ucxNO(I8`5Q79Gfq->cG^1T!TgtKBn^8NhbzMcL z5)0lx&PYWbvbk!14DW0TJp`Bu#&YXQ>$sc%4C4T67}v`aUcGu%OCwC@3FF{lj1b*w z<1tNxuE=&<R0t94x?!3oq!ciW4wH86(<q+xWm#}Kj}7j!EDMHVRN5S=C{&6VVuH6$ z0Vg%DgA|gbqJ6cH?Uv&@&X<BDY*7)c1?w7MjKzGNk&{eByqDr8r_ktei3Gaj2QPwC z2*iu66lm2dT2w<2Le!ue(JeeZUGea6k8N9Ft;6*?BZLj7(@CtlL~8L<O;Fu;*C^Je zu0KxUdUw`y6+5~>G&(*AYZ1`hPyIw0H#(P>AX=G3G+iTkyHWFA1n9qLj|U+AXN%;H zmYnBE_+voJ$3~X7Ykk^N)JW3H2uI#_zyGL$pss;$p5g;H`vn~6!Ao7lSI@{WTz_8` zwy2H6C=*_kt##DCcaOD;1(RAJfTH6xu)&%N)=apDULA5b001BWNkl<Zgf$Uj$cQCk zWT05U6#}Ou01h^IIFESyaK`=MV9S7!En?g-UI~{a;&I;acv-Nl5%aRNq@PS9LN=J! z74y33=+of-{vO^LEc2p;f$smc@*yxX@8r6jD%b6Vnhq}S>3*G`ycKJQQQpg}b*0pF z8KxZ)uyOnIvx&~Lu{8a5*J@Awc-GNZ@A(aAre7?PD&Q+L=pXaXZ^XoY&nelhsE5j) zj@6IecWX>H*{XuQ49S$vLNo+OgGsVLO;V7e&pW_5%rPRQ2(}h!-e9ccoX3&{sj5@9 zoOC?SjKK|9wxCusg0mh^Paohdp@f3Fw{LNs8UO14{D1J~v$yyk|L6Y+<~6~bJghTF z*I85hgfd3Nn6Fp48iS^?5o6UcytS_RpGhC?^Sm?*R7wRY1%ypSq9nx*5hKQ$nJ$O6 z=u`?mJk6pzN%DTRqK^f=+cP=DUMixs=``Z$={-LA#0p{3Fvh_v_-ezCe)uWoWyKaE zrqhIPzxfvaJfH>^F%z5>D&FPk(!^GShV7isC%pggEu1qrohJCf;>{-yxXu?XF61*7 zD_VhJlKgM%h}xpOb7mG+1|S*h*y(PlyY5b_5n_NdrrlE|WN`sx;QhPzn8pz?&WJJN z@#zVEc#ZSjJuV+UAVpczOoNAY7UMMH>FG%<Zc!Kk)>_dDTxT#l80Qc|z%mCp$Bcnt zaYbC`E3B32%!dz;n5I!eU|ep|xw)i$<%B9&<6XaV!$vt|N|YlME8iaax@$L;Sy8n* zw1+SCmR@mxnSK9W@v(JO-({mzC`}#5%d=gHaz~Z&Zy(t567Zt$Vz?WHztE_?Jc?{F zlITVZ`LH*w2EOKlF0|9+T4Wv$K^uE#)F0^kNVp#gi}#qD7qSUnRPD*7OB$;v+FS!Y zc5z418?h>i3lU-g=2Wm1LSiExbTSAffm0SlBWJK<obNpDrV+1BBko5BlLI(KeAptc zbHYD-`3_%v^&Ve;xME2{TpGs{hGBvm&d5}dnGmwrKZp|wK^}TJHt<OEN7iwAv!8J* zuJ%20*$b!A9RD{T>ru^q7!!8}>SjSKo#m?C96fiS{KkXsyOiQD+1cu)c-y77?!Obd z^Z_o^t(SD(BdYOU2=^Td_-BXqN9c0DX;1&6&;DlYU-4Pgbrsab;${@MVl)hAugZ5o z2B~Mb;53aWDZv>7att<vRVNH*LxLfN=F*k@UQUqFHD^sVG!EMq5Vjyc-#e_!ij*@h z*MxDHu<?eK3%2v8_+S3l{|mqO&;L38=wJRm?mztmpMUXd#1L>A20TWwsu3BrZYHs# zjw3Gf0%uKoKjwKx3;|TcDpe5W(AWC_3PJV0)Y$=>5r42CZuMbFGQ!UV*jDK(w~)l@ zQ~>Ke3IJ<8Vhpk$CV<(top4U2dFRJ*g0&;Q`Q}?77u?^UHJHRpJZf0+?)}$@QK)(- zz&Brijr;q1<WjIjVYc7j-{IBkS9pB?h!7-5>U@@ohjSJ&25g&*_8%S|!2G-T>Z@Oa z$iR;t^Srjhrj3aqh0ioiA~0Mx$?G--r}G)}<s#3r+N9{ULd<O!yrlrg7RDIKR99hJ zQL&t8UgT1{&R4vCbuWU(EKlKOSz9#h{oP%&R<df3)<ptpwwST5n<UW<9?a6HeDn3U z`1G^4h~X<)JFvmFEsfLuaQ}eE_#|OghNZE|8BldP$_*v+#Xu*SDAYapo|pD~@0I)K z$gcZt5UBcKF|r?4s$6N$g<`pZc&aFu`e#R753=cma&5PSm%FI%_=i;iSPy{;;Ajs$ z-7)uy_}lNP>BEQrmAbSmA_4dnI(EbT??^;2{fPc1;G$W3YViCmtfQu_k-@-(feY@v zKxL95T9f{!)(Ai&=Kx2*XbmjM$Q@wyo*S&XdlqG<sJ_WsL^im@gpdn@CK9!R#Z;xH zU}Epj6Fz%$kIx<^+z$jU8Q05#FTb7f_up>#tH1vSpMQPD`;`#N0CIOAdq(C7MZNFy zykK4y#I(WMg3%d-WyN|~ggAz*54qYg7bG&s&7)2-R!zBGa5<M_$QaRc{4VX>zL&gK zxx*?7*a!{mQ1n1A&CXU@+TJc)qc+asLzoY>$x6SP**VMI;a^H)91!i-#-Zp#2SQS~ zP2ENJufMJ>Zhhx379+isq#O~-{qNgr23{J!e;>tt(<d|x?mm^{?qNcQqF1SaiVI~U z0YA=Juwl&0B9Wsx!w(}^4@F{D$P71YRvp1MP>(U#whhJ@I4@pl=RGcq>_AWF6Q;9= zGaex^)@8#NzxXBo^k4od&K8Kvip%2@0t(g?fx__qghap=0*rScHjOyP#$uiqO(-nN zHO~#xNkmxJAl-UMn%PZAses91+k#RZ1rD{wgzK`xPb1hljpY;@YE61;`QB_`74KTD zjLv)cnac`hv9+Zfr8^ylwi0BPB(fj;;4=)P$HS`!T&~i6I_ISO98a>lUL|4ATCu6U zdi4r11;i}ecmi-bO(2rhgEbcCyECrWxd{oA+PVtW*i(kH0?Eocwb|Ac)^wcm+*u_H zy1lYmU)9e)O(&sRmVL74y%XNPs^zzJ)1jT}c2a6nQtKp7K1Nv?60vsa5i#r{K<@_) z^<jD4y4RO`NmTMNBv@;ky>K67b@vdp_^+-jKd{F4`<wR2=;uuacN0joHAZ`8C^)C; zu~G}3(Vtgc2ss~I6t(-`sjbq4ww-$AdEffTUpmllI}yWH30^gIYtM9U<gl`P)+=YY zPf4SaVRHTNqA_Hh1G1P1RpH)`+)LxOx0s5Xu_`r2eQs&1^<h=T5&as3iQtJb8ip?c zcizG&nN9ZN1Y_j&mXcsf#z2HoMQ15V{&+-2RG%X;p^y|LF()JtA~Cj-yIp!8o+5{X zp#ozG4|jKX`}&MGXN!Rn!m{Dr<ASd~EcpE0j4!@<kH=+01Q1JBT2=rt!FZ`)bB-u! z#W)b&zPZEQG-AChh}Y2c3RykMtP8Wq2H6it)`{mfXH{?R560?Cr~?w}L{_Er`Sqn8 zgu1QP8)=^cFp;2rOW8>&^&nSkqP%-D9x!c(UPUImu(EyltqY+xM%#m6sLL%bt+V7k z;;ikK_sPRvsP6W#eFRtG6zJ@f9~-Tgn}eNhauGfzlKYrK{-eP$D)g&a-{9juz1n#y z^S;MhR?jpTa845dnQ*yY!33P9N&LOde=iDiLk6tj9Wf@oUh=LJA`+V%6JpL_>)-~D zWm|!gFnEJ?-r)R%n1QFKE57{dYlO!u{`9~5Bk&dwwhdo>`wiw;uqFitk&Kc3Fd&uO z_RLjGmQ;+kZW}^~u-0nEya?i!c@dTSwrP-y!@6u>k`ZnyMJ;rYv3n`-qldLdC~i7# zTGtuF;1Ly>YpjT0opTtc5yo;;*oPEQP%w^T3ln0)h(Yq+lPc14PPn_j!xlD_lCf=3 zCK_AN?<rmJx(3Y4is^I$TM2z46otfWc=P%dzWw%F?Z!{-Ff96WLn<I+<<K-nsg{IN zBq2`7cBSz|xLu>vvJZB$qg-Xx?&!UTaTZ$;Y;A}Eq;axa41()T30xGJ9mL08ZIyLu zQVL7_tg7f+=0M82V-Fb5C%k+24yS3tFnWbn$%JYPQ5g(cygZvR?pwh6EK8c!heHzO z%RO%o)v9T3l}<;U$gU>RrQE65RZu9;64MT?J!U!|nuW&KD2@F-DSRfqC<6FCdpu@y z=t`bFXi9J4Im-NZ2CP0<>7@sjDCqe{5Qm<P4FSURQLU_d;0iaOPP}kiRn_m$06a8K zwIrOpgVX&?N<c2GoOFP4)Y#Pm??hFaau$FKGqx;Bbn&1o8BOJgS&x#o%Pj)-sGt)r zLap=8;?@0xPhL&98w|KaJYBB%^*8VF)wfUh`uzn@*BL1TgZH>Qop675!s}P}_`zqN z;?=_$r_sV9VseBx4-?LlM~ML+zIl%lcQInG?Z{vxV*xiH87HxXRe`R8!IqOu`wqQ- zkB?f3y|Al)xa*?(Q;k%aT>&taYL)fp?;$F5u!ptSUF^ujI*s9H4EjE)tQ_<p)G_1x z4OYD&`9_@fY(G!CWc9mJ;mQ#`a}zU6&thZ03rchQb-ic4{RI8Hwg)V=pw<VJa#{-Q z)05JX8H*ka>n6G0uU@@UV3W~qE(u7*yJll6DD6Nc?NCS`jD^Iev?;QbjS*YdG$Do+ ze((snVA+Bk&^h2&U;G1pcpCB3AO9Fn@84ry0|F1YMiOjnk%Tp{0jVN7rP9XoPfu4A zkRW0~Shs-dvNY0KN(E89(WsWZBH=Uhwqe;ewc$w?1Hf?J<HLtX%*%>Wfb;2uWnM+J zb`to@7J_=2MUc$QSl0#T`?Gk^qu9?_)%o+h!0R}97`;S7dna@}V{pBS-#dheY4kXq z1`&fz1LkFcb0TmX{2*(Ttl1VuD1i?T4?@>V8Pn;EH3pfqcqic~s!g&+Qso}*?f?MZ z`)>TJ%=DZad9jfmc^81O>K9T@0wb~phFK46Ru(`)N&(J0X%LNTUhkBW`q@PY7h`F$ zubb*6jJ5hRq~Iu2FwYB|_gEJx>IOf`7(XS2#|SJ;nywcb*U~{@YKPqgj1-jb42HTL zcvtp4-Av@_!F)TBD<27Y>czB&^|!v)-T3{bPW^ix>SR6&!`K5b_9quplcD$eK4G`t z&LUgq4`sX4O;Ah+4Ji9AWDngq?m=&fclCX20GdMZ5Q~~;U}T0j1}Ll{1`^C-6ng4d z)7I1r6LUraBQj%48C%x9OC9d$0Z&HR#P!vdop@JYmo>mNI^5q4czqsma)gpLJU(9V z?fWOZf4t(d1fa<H?$yHsK6(8LpS-@q{oNT4cPBW`aEN$)@;KRoyMf`T;PU<vmk)E( zAXE@a<q&5wNXDYL0f|i;2j%7h=wJ&S552dk9imln3nS7ZLI1ry_gx*MHA}clBC6mZ z!t+DDvgg}aUMoN*dR{kBg`ac@fNkt-^iS^{F9&V{f250U2Xz(K{3g3wANtT;$9<>X z@5VpoeShg-e-VLOI@?XDn2fFvV}N+ag4W=j(n`@?=Wsfo;hX_V!Qed%8+hl0@U?AN z*A?FRHf|0v%6qQ&nRT{N;0g$S@GT(a{_YOjy5Mx0u!e-Ec}4;-oK8rk;Q#%L|A^oH z^auFCs|P$?pYXH=!831SkK1yFa|1T@uCF0B*iqI$OOS&r#Do}<^2m1$50k7NG6-AB zc$^nG{9B?htH)p14iaLM4w=|>ENk7~?GhJ3!fLvr9|sv1Lz3fwf?*gMA&ymicREjC zW_<YY0Y(LXbxjnu1>Q5>yuL?@QFh)*oGB?LOydM*V4knIySvA-EYdL>i|f3|l*GxD zgwzsP<3o$4u%Tp`5^P&zu5%sHqtX?*Wr8%wjy~s@S%6yJ0g!`Na>X;w=Q|DA0g$5Z z=8b9(Mx>IpFw6)^AVbwsS)E%kM*aEJlv$O-zlDHx4Olk;1T`R*TF4sTq#o4eI7w^I z8153o3c3|!Ipn?XI<#Gx%0x;zf1ayyd*6O+3b$M7jyB#M2Q5?6-KSpiZ{Mjm{<`^2 z4?5p?@9G;#T{b$mAgR84Htl=M3(7CP*oJ_uUfTmC<fh8us#xCB+Nj^bqQIiS8^9C6 zQGvI%9WaXFh9U8sGZne$Rm2x_K_bFNge7Jq4cq`rNCT^!eh2gK<C#*~z$&P-2ABqi zyOYPOv%};VIc#`(n(=g9um-t6t#tyb@eZfKVlaTA2rdz(1dJ4M=LvTMV{%5rGrmEX zHN%~cdl`@(>THp%M}pvEkHI9mlhn=@&w9=(Cgp?0Y}ZvN^0gB(w(9hm$g9FG^6m-k zkf*idf8OEVP~s|Ao67%B*_-u9mStCZ>&$mDGxvzd%*x8Fku{Ja8_lkkx}OBSNPwUR z{U-jf1_bIw5Fm(DqnkvPI3|l#ImF=ZW_G7D>0$4C?lp7s%o2gftSUx$n44caXAf(A z>jrBc1+pQEH+_Sy<$_m<mq+6%U8?iNw<y$?Ln4=agFhUU^OA_}rSZGuFqI1xFE*2| zrE8WONL9u~aKti=q5ZF8jR<vef;&K^6p$0faiIUqNm&AdtYj>v+VA(6BYDM1kQSkp z#yE|TTJc4&_}e|^5MZ5y)EYhsJe)oL@$dc-pMCl<+FgZt?uqyqGXey3RgnnKdlFx< z|Cj=bC|7(K=k?;|nB@@YLh(Lu5}|;P8OMIYQ$G><H7x-wvZR<z(~P_Xf^bO5g2bKu zjJl?b^OPc*rh+jFb>&c1j_riB3mt~B{On?ilmy3NDH#bNc#OlylMrHr3kX<iAOt12 zHBAj|3|!^bq_gC4*zYm)JzTZg+2+}!ZW_FM{~mQyGr~6)a^`YzNht`{;tU7nOuV}` zoGiJV1>&k#%LRw4jbXu@hcTJ~GZ6v`G6P*p$XB@}*&(BCTRa_)sOpMF<yt{$(l?}( zXd1!Y`EouerOSn!_!*9g#@UIBTD6R@#Z@7UOVZ<VSBVX8fzA=RG38v|LDZ$lve>#T zs+W+M6-m8qhL`EuGGbqfp$jtPRX1P$+`^eh-i+T1sp}7;Z;6ae$0DDN1inqUv;7*# z+Yw^kjDp35a-Bukm%iR|pe}jfvWWeb7(pSfMwfDdh&<18mr|Cow~+!`07@hntxEuh zU@@K6s<4ok%SlRw2!RNRAp>K|h@dbQxg@(S7dnq}a$YmWmw(cSHKVc$O{H;YE%uE; zZ57fSFpe`OACZ$NJ1wOc^%^HcKR~7lGI>-g;jT64oJ8w1tdw~F?mgbVeE_m5X&+Lq zBEu{sqEhfuQ<#fXl&7B4+O204ox<uZzvlj5TOF34*QPkz6ju3JC%mfUSF+bSzEWF~ z9Dfj3*wJO|>o&<PVbNE}O@*AwvrG_{wJP2U<dE@fEPfLzlk<g5?xo*XIsse~<!<`v z|G=XAdMq!cyjV@;;u&WTI*UFfNBGcjq{@#@N$S*6rh_!IDmlzEv{uM5L2C^u1jc!U zRvL;A+;N(rwZSya5K^J4Ye;R%&vmf?X-x@*SqRMYjBeMF&B_znw5b|Mp-Duf45kcx z@%!JySc^|SdJTaD9|Is2q%y3AmmHcx9hGOXS74lMPO;=5C`lr$m<W^;Vn$2?AD(&~ z2amy1q8vSx3Ia6VCk1%kh^=zz7_~8Q&M=GJFlT*2RXemz4In`q#n2E5YYdEaczir! zx7#xT&O=I|Yg?kN1qx27s){aV?=kcvoO8^5U#Dqz_XkLs%Pw3=g}(2(2oS}xmNN<G zs@g$m5+&vgXr-A=P6*jy8qu^3BEPPfDB(^>!Rv**3S*ZwmR$G9)>$0(JIvFBwr!~p ziUB!AOw+h}xJ5?SwQ#P&>2xF!T~on2i>9fWU`OBkG8WhTyro2B!c?FnYf4@Qp|O>w zb<xsgues*9xw<Nm-~a``T#VYmVJl)Y{ks%{3%Q0|W#n(w!`z}^UWcaLf=?~l805SP z<r2~#+$9vA`leIL`DO9WMHjzNk+ND9=mnvuHsfdRE*9GwU+T~Hi79X38e-Kcl|(IZ z5!i95Ye>aYFL{}`0R5GeFuY^0j9G0-SQ6K0^b}c-K=6GU%KId6ju}%-?DZB!pd}YI z<Yq*)FyhPpmvsPEOY9npLu0V7HEOFMGT^!ES@L+LlrW0&)UC{LGNCd8yUO5oSK+QU zI5ZBmH8>u7{PP!IVj2_Mu&B$`LSgB*0|bJU2+AT!gD42;8B;{cbYNhU$4u`_DvIii z%XQ1@YRk95Mw{a70<6h!n+2}16a<%gjeIqJzYU*}B47ObGOK;<)E5z_lDXiO%jJG0 z1iap(m6Za+RC3DSHR>vXLgg9W7AjZc_wTZ}T~zejOMRvAlXheC*Gry0Ec^(y&>OP^ z#}JTEiFxHYqg)E!&v3lERS>X7!D<7k6~SisFjU%Lo&#ChSQ)PtkjN6>S(3IQUcJ6A z=~>e_!D@rbRn+a~hzQDIACtmg{rVp;goy8b@(F6^C~T%5kU462xqRknrb!RSnflq& zxPS5_$O;tknIJHSjF5n*enLM*#H=s{;!6k!q{#T(6p(VnuG`VXAw`CLan^%U<-H<- zSzy&Nsj_pX?mC7*aj-MtR_lgF?M+jaOD2SfrfG@Wo@fe?Qo?T65?L+M|3)hE8V?U2 zkP-#DXst>8ohh1m7<xEoi8nCK*mWIZiqKl2Kb^7L?UC5}Ma>$G!l_ZB^?+a$Y|a$r znsb7Wi6%~qD0(CMT~y{;OWfbxVVY*__8o~O1$bu;X2}N(<Ako;qw99uG$p>gHOH%J zhEI`rO>0A9Z*0SIXlkOA;z@xacazr8T9&m@V7<d~#t1&MpIJkb*m%cNIkUdo^1VuF zMP51Z*CX^>>%3?G+m)84e2onub-mQ{|Bp+(WT4AUr+)iVU;ZMQ=!d<AW3B@V$&2>l zms~cma@~3J-Sd1`zhq8tiw7yn4jyF}NTb!1Hh59~l@dLSlC5}BX;^LHtb-Pk>>GTE z#!TIJ<jOz9z!jhdghqnI9DyMv_`IqYr4Z0OdZB;F(xt}@7zD^mKq;J6XsyDbHt3v! zQxaNIF|p8&WL~noDc8L+5{&^4b%j^E4j=6rd~&x#TUVIp8UOUf@A2hV5Aaa|nJhL! z@zjM6`~ZQd6rwc9e5vOmh~b@jj720Tr9wg?F`d9h7qQ8=-2~i=?Yc=^u5*@Mlw`3W z@)G)xFBtI4Ncm#?F1G?nc~SXFu?7R>jQ}&}OFz9}7P@4b9HiLz=daZL+YWlOO55(o zx3A$gCYBG9EMByz-I{uBS0NWT$xZs#<$7w(s@@9pmP<X0%}SuqEZ47*IN}8WLh!3! zHU{k5u1v|a))>YSkOI>@K}m(v=?tR{a!g1*mND&;fo?0uz!SnGSI#0P;CMPCa^jbe zgd;umCk)d71BILo9z(?M-ap}sFTRA58ufmMkW(4IhZMQ<j-^wNAp$~CF`ekM98$*U z6Gk8LaOx2t(ffcXBtpbSXR#G?CYXw%khL-V%a-ETSWWr?wz4^AX>GyzU*69!M$^cA z)Af@+!6Gq}J|@6ujbRut4n3->A~7C!x5gL<DG|cV32F5j85`-pKRg`~Q$p9Z5Dbo4 zCM0d!(sQur9AZL@8O~LFz7flysw&LWgl^ZCbixn<v{rC+gK?Zzu0!TY+2Z#GvFOK% ztYuAIL2HTKzQs87)Ujuj?0}RqreOwR#@*ck&QcN5bshQEIXKAG7L}_A;A1UZRZ%z2 zxfU6;k6*}!i@YoP8Acf@LWN{*{)(bqeBh-)NS6yWnv#lV32iF^dp-NISfhQiSRz)} zjMv4zLzY2xF*#nw>)&-QY#Ucq8TS{Z3-|->b5ZszYNHgEHy8Y6lyGsTub9=<6D&(R zw+u|=n)t!uotN1-;woWh$z#9h(91aX;t!Vbi_!FO9PaM%>h(vs+a0j08}cc}Si%$* zzq(JE6V1pkD3zkUO#*pXQ$iGgkh&=Am({`+v$OaUSN>0i5)`mfJB`+9bd^Nss8cuE ztiL}4N+<^8NK{6nu?qX9#;Zez`+bYoy9T?)K}d}+e)}bU^Y>q%pEEKvC@hw|x-?>? z13gNGqzsa>$WoWfn#Oynyk|=xS2Di~EOKiBTRqYxoQHqj3k|6-4z?X+(W5LEP<kdB zyR}o7o1OOsu@NXMlu}%j@Sr8qbyI{cgr}?SH>Gr;m|tjG@&!J^cM;+;R&h;E`CB{k zTfs@+iiRyh*43hxQ!1_kvGv^Z*i$Ts%rZ$>dDv;`L<J|HrHHz!Ha`c3wk#3FimXf1 zVy{{p0i4KXt>L{fVT+BiP?CxUip!+&s;eEOqS5}ykQt*4e}CjM8AHNvzx)PYzkg5m zw4BL%oijW?x75wjMK_0p7=bxNj8njAnDFp)#%T&jQp45_rW7&zRMuzoGmj;uPjHH& z60`#y#}QTSpbdHB7e)3G(o$8fFx_daE-{S*>Z(Qz3BiZ5^B#ttAvPp39EOqOmJOz9 zq6~Dl-PLu)wpALl(_TO0@$m!!fx77+q{jKwBgKHj-M)0%LeTqN)iuUpfKi&kj*@{b z^SZK>5;>7BrLL>8{-WJ{OHtE|YrQCP<>h%jjx(eJ+ODB>L{%Y0uveaW2}vON1V4M6 zPA8mBCmfF_dN!0s$`T(wyrWdNNPnlX2Isy<%88y!UU3FKzcX?P;gLDhv?hZhVmXa3 z<y7|8>-JAvOeGg!%tDe}IUEVsk*HfSEUw^PB?S-pV&b@MT&~ZJYeoF_JXpY28fEAz zZop@jm!Yn_--$#b1t78!<!nfBBCZ%sx#>hj&Kq8PEN>c(3a`m;x$IgNm3`sg=5_xr zm)I78GIdxKs>OqxY3D><!^Kjp(X|KM@9%NHzeCe@^mRjkpL#-F#sn1;a?FT`q-Y06 z{Rvrifmr|^2|g!esS6Zk=}1#v*kf|Fwq=yWAF{Nqv3n{@7$KoE?e`@zl+3WkAV$(8 zWSJRJn^0Ma#yPaE#eQF7-x=IB0!kVD!&g0i{SRN^>Er=ri=7S$P>OcQNl1!;)fPfI z4$w)^rKnoC{)&lnU`#IOESK<=h2>90!$Nk*B5qWnTlN34LP_g*Ym-=qtpM!`(J0l% z=bmM$JXh>uhLDM#xx9{io@?Tl4^&zPDW$5uRJX2_wY;#;mu%&wR$RvK;<i8i@<QI& z<>a?_;V;qSZjRr#S?T5T$GVqHiH8NMfpyX#AR*XVSvsxaa?lJ#qR*(SDtI3u@{G1s z2$8;8WekLp7`?|7Jap}#twwDRIO72^ctrjZTmS$d07*naR6;N_hBb=}Xi?C!#?n+t zfD#Qg3%kM`Au>>#3MnPL`REPazIz9MoDikKtS$cK!Q;1Ye}|n_XqpOIfZ~fajrx6z z@FC&kGx~9Y6ben#;S^`&s-_Ol8k~j^)9j&*Mod8E9C^7DU2Y)+D)b|Lc9o*8(bcwi z_!aZmg&-2&JbF^LJBPkMLkSHZ1Nwf%JbP$uFirz1SE21{^nFiSnW`aSst-_7W9W}a z9d+Q#gvt9rAyP3y3bGr1`Sm+MN*qroXk*arTAa^E^utIKk;>tGI&rt&0ZFhgzNhp? zrBGD{J`jAUKc8{8-(wgi)K!J1Y4{16F!lp>ZHG8d@ZM93$TFcyc@@+0^ZfYK!@3%N zo@lzz)~K5XA3i)F_{2>Vtv)F~9>_i-W5Uzv8@zh;3T=15)6-KKvA04&K|&h^spwv+ zDn~_}j|e3imCm{tGvee4$L&~LIHaQY$_&QBg{qxGuhyyGW^#9Pe9qYe8PHO*!;3`U z1*ElAz^6^Ya3ecnX=WCf%_6AVo(XzU>@E4m&kquDA!b{TK>3W=R{X-7j(F7t<^m$f zT=70jW|J$0Y&rZd!~!W_?i9+XW0Nb(qh7HA2oTrVLrKC@=A3Et)9vu;?iKD2uhG^W zj3PSL#EkR^fus$h(hyQ3OHbe!9usM$fy6B2EXcbJfy4<qV)H$uk`=HfF6GS~B{;M| z<W*6xlz>@s)wO`L3RW+EdWWC`Qe37TK<yN2XK`p6+;tVYTA-~ZzIvMQ*T4A({L|MD z02~wyKa}hlX6Q%;kc2`K8d*|EMp1(1OrjfR+%N5PNm<J@E>9bf$#S_qw?r*U&&3qK z;$ZWlgLn>H<SsJb3=0sq4DVbNUOXok<l}s$$X_j6X;a@mzhv{xFqiTn%=y{g{UwFE zxT?UnYS%xs+rKGD&D&KOo;d-EUqN2}nQb7`Gw<CdTUtpXut{WeO+!;0k+EwUC?PQi zkCZdCHV_c#b~}iW5T**rOG-aW8Ad6L(L*a5Igj%USJjv%65&-<bpbPJ>Kf<MP=GkD za)^mizoOI_bB3#Sm|Tr_PfrjjVxFE*SC(Nkp1MIvx!pMfAE_D-rvbae0jK^1%T}k4 z-h70|$43Z3p-q*u7{{?pYpgMl8HnCP2!cFK(@2W&7@(wq&k<TmxUR+f_aBfE(RCf# zrbXYMF%C1IPYKgVv8mn%+Q~~AxwktDBNgGKGr@hR2#`1)Pq@3ggH{U8(Imhaix>mm zyuQQv++&;u#Qu!kZimC&0kik0tU*i>P21q{;Ss0P3A^1M$EPRkx)x8T6JnTARTd_Z zj%OMsiaMPs+dV3QwyU9(#D|ARG_}L)H}`mYd_rLB8Q3MGS(qj{X-uSqZ@zj5R}m2B zeD2{~g}b|Z^!<Qo93c{Gy#y5qDP}52guw5nFY(!DpW*TG2|{QJZW%`I&LtD<DhNo- zBas3_ie*}xVgy)t8GS%VfrEC|!d-2(K7ta^LQKVne{qH_njKETi=67Y2FB36A@jNd zNXW%avt?ySA)lQe+x>fKq6+gpU97wHQmX@NlFT3Se~U*rl`iXYmw0*jq@^F@7oTp7 z7`Ke@%W>`Udm~a2&@H6hjsJ!!{+yOv5k8<Ki&HEhB$RaMx)z^)@&<42@6gr_v@|R} zBTr+<u@H)~5X1%MwTg!zT3qIxD<oHP5;;?xWZu94uu0t^@>*uFM=F4ayjj{(C6{;y zpP@Bit%TJQRx7lXBmVRpFb9E{1hmjF%Al<bYA0~l8NBK=YNhZvPWYRD`W^oI@BRr# zC{)ryW(Ba@VfhvkB%&Z_PLu*c3PdT{`?#vbh0H+AJjUI!%c%oY1**a%IL<%^XLl!t z3<=1>BwxGL^arcEpF>=>;2~@@9w<7Ba&eVRcX_e@7e!?+E_m=;_3O2gewj9;5;}8h z$95YaasB<QqkTMEV|`brE^Y{WmZBj;+-5cKC-V<c*b7d|Tc!z#VJ4))CJb@AZ%9BF ze95V{iagLMWhC#Rl!8+gQjD0#32jp&4jKLNgs$BoN3z6KRfTDqimLnKeaZ{slLS<C zQ?bXMl&z|&F-wa{Xee!vg+gKxT}XzgauNtB!c`Tf7*RD1!8@eF{ox)lMD*u#IiSzy z6Yr`iG)A){rg9Epo{>U;u^K|tp>B196cf6(fyf#C>4X#lCht*MN?6M=VZZBOUB$4P z2{B}RczQt7QmR_hG<5NU^2kH*7eA+z5*{8O(6u{^6BQh;a(H@t!2R7Fn%W`6h<EQF zF^(fL685_mAp|(bS_bRz{=)-4`>f+E_RKr`8K-j(2+ERBukVpKt!<t?+ddWQ)<Wq$ z#&Lkw4Q%C*ry1I4gb-2H6`~KAriuOJs!%@re&lB}A%q?=B<#8!X*WD+A%qaHmh=dx z)2Td@@87@2e!s`LAEC5?1Qk8QIO2HnsGY<8-5spe80Q&=r+PU>AkyTpkS_ysH_9|m ztTEes(F!S1X`&GtZ5SXlA*Of%lWdv>(>RdmFD_nqNqJN;t&?a5cu{k-+W)e|cM4)( z;!^;CE)v(5<hfaV>!B);SJrl3$K|8|CdD_6`%<}JZ+9ZAt?07)5tj*EOV_xu7}4ls z?F@-my-X7{gtEAQ^%35D{3$BepsOtQjYF*nPdm>ZNVIQBDN)xEJwhO%O-#%9SRy1r z5u}2!flA7?U=adI3S^bb<U_0r-Qt~uq~9+ERSQA@NC8shvP+gyz!(9e1*}%kiY|4d z1++30jFB^vQm|U1whsHc!l999>x`z-7$<@M`o(+v<zN3jzC0ypQ^6_CYI}*q$W<j2 z6XPTufRg@uTrRnd&}|*l=5>3%p~-C-Y0ETcu~Wt3^W69|^Qtn)*YSPN#@;VnJj;75 z#b!FQ7Kr(V&=X9Z+U~iwymp!<<PC5BrGjDuoY~UTum0S(Dc5gx+Ryy&*E*FO7yIRf z{t^TJJCwScbf{-jhJ}E*j3EPcW4Rxplt5iMQcXj^xeCKLqp2%aQcEapFoYwdR<PEh z9|q_cVWh$wX~%4|!7z^K+7`RrZrwdkQ}ORQYgkkkaXcM~qpk#;b5K?x#sK7mx?)F1 zGMFa{a#6~#U=T2_D#csZbvT`S?z{t@9v|T+BAofj!#ab?TI3j^rC<OR5ay|nC>29? zv@ytu5UAQ1_<14`p=9hTbK9jL;Vt>DBTYV}ffNQqKQlw03aP&DF%A>%4tu%)y~pF@ z2fTjsin`d4c+?!3695=3(Y6Ql=K)$<JRMKyx)zU*kGR|K;e9~UG}!MoggD}xZ@$9k zpM4*FKfoA?Y0lX1S`5>SoL4<f+qO9OM*tO!X)yF>xXMAy<dBdGMddF<Ecn^``#U^5 zJg!CIvI<(Jut{JVrZUNM&H-~^C=WgRcXxL<ozCPuNC~IY3F90X|7)O>MkOWoAAbxb z1%?xWc$%idxgSW2FwyuMo7G=Rv|cUiWX4Kse&%8h5K+Kc31=O~aiG}V0$0myX9S$p z=$d;B{Tav8xioo!&&lQTPC}GWuv?A5OU3rZ8E|8gr)syV-}8m#NEFJMz;oZ6RHBUb z<VIMq04Bwzi$YEp`_ktl(#sKkQLbN20CN#TZG=f1k8);KZb}kTHgMGeAAj;={OP~> z5BT$6{rC9%hkuO2;T5zpP(nhcgy<t#N|=`(B1bmPl&|cgM+~0Rdx)(*=77Y-jAomh zR03H_L@6;bBR*fCMz6Bsg<wVPhJq()Z*GJ@Wi<Ac#i4a*tUzNF8fT$7<CwZ)31<wN z#^TUbc+=Ima}rH$aEc25^<N(Gmw)?v{Oy+~%-O;U4a3EQXEg&PeGd?lATvTCD1#(* znXgE>fK|wTm($w0ij8I<Uw~Z%bKMo;d{_-jBAgqfxxD()xAw4Y>e<pU-?B<BzW*(h zrd)bCvsg^5IRG~}j+a^Ka$SvVI`ePit%LW}g)DU;vU@&;FQhFgZ+FMyy9smRW`M++ zt-SKLZ&4mMS<cubD!z2_^A}ZG!!S%lN`imv_Z^(oL`&mbbFB=js)iI2&N&=UCxjd@ z`<eOZ6I@-x=Llmhz>t!2zwCJ%R&WQ5<3K1`Dbdy~?(Xg}4kLVwP)d{V&N+<3h!_Km zR_K}<F-A%SW3GYX9ewbD4rNd>nso-q39nz>L*|TmBnJF$zr#F@Fp7g#*yn%P?Vuz@ z$r?=%9g#uSFi8|RXAIp9k+c_ybKK{7#x&0qjG{G(&p?7Y?<r+1XJFUuFwY+IH1lOd zHaur3@P+KPbRm-E&mhK#zVGqj!vm}(@?2flsHzGdK0H7OP`cSfVm+-jPqRn_3AQXQ zmq&=yVY|u^;cuRxl)^L-uO5l$f*(FSqOKd%O-<dnQh0oNBAXus>Z(GFnZ<dlegz!# zBTEr3ilb<r0}h8hN8b|9-CBdgVUN@Kv}VUMTcE1Q%MJm2{q<L<EJ3-15a`bXq}DK6 z;_mJqhr=Gmk!8^PK!pc?7DG(sv!Acdn}xb6c_Jl*fadqva_sFijkvozpsE~Aq-Mq- z3rPj%CZc<*A4^*u%nNRpXK3iF=+<IsBa~yh*kNx2SgwH^l+C{R2AOQM2;jtapSSis z7pTxhX}ryom&;Cl!+_t8`vu3Kio7n&7hK^YTFX%Q^wXc>kN@OX_>({V@9?u<{#$(d z*&jjM1BMAWpH7(O5q=tx{EWniK_5t!I{TUSAt96yffzglr>*&v5I8MPNje~w{xk`J zC<Q$4*0WeGQcF@#(G6^ilFalxLHJoMfLd$pYe(vLYtT7^+8J1-iy+Y%i(S*8YYe(Z zqq7pV(da$!pTGEk|NS>#;$J5V(Y!&N1#AkiA|N1P0uVBRaf~1YZj@wWi_#R}%(8Y} zXlXfulCG{EG7<vD5?r7J=@5jlFs6ZXO+iyGaExa=X1PLUN=J{ifLLCG+<MZleBJVv zEmPzo^24oNy<i$)*=H|ezvnBWTN8qmGI0IBV+&D|FDlt@b=of%4Yx<_H=#3m#oTUp z(zx=-=IaodZ`tK9SWPJ;eDKBM*fcei(S_z{4CQ`1>kvc4-Q7Ko=M(1SS=gDNr6Rjp zQzLRp;W*ELq6~vY{8UvAA$aWeJJd~$d7cnL!n=3xX@p!=m_2pGN^6SJ<S?0W_JllU z+FKHoyf#lWj8f2YiT})a^XeYw;}LCL<M?!h6asD6VH^kedFE$V(YnqMl*Ks*tt8Ip zGZgQdowa0H3ISRuL_Z_=2&Bx=8;V|?rx|VAVw!0J(f0$}@W`Xx_d~IrozFcY?{aB+ zl*%PuR}B>BZ!e#zx~4sM2&4+1=NS<6^QfGK(FP9>kEp5&iZQO_WgiejB-@)nQPL*{ z)R2dqK8saVVH`*}SXT{F1hk@ptm``X-~j=QBiR~L%BX8%ua^kXVvSzfK>iGCRS0!` zKcHzE7){T_JWo)Xa@NOj#5B!lnikU>FpMK*2eb`dzj{SYn4ghygsUtC*RcCw-gNhM zUBOyf5z+fh7Ef#Gy~@ZdwJxRN1`tvdH0#~{J%kXLXL1xw!-%eJsECmQ^Bg#-Pg2*v zJxhdGEu9;f%=U~}ezql-9WQ6Ctd=(1PH2-56wP^YC_D$ti;c4Vmib;?nw2)88Ed|F zNvPZGE1x4_vHFHDvaM-!`1<}+{I~!9f50#Q_*ZcCD@18A%mI&&Cmc^bV)U5j0n>O! zj5A`G2<{LAcjgojkoiLQ(IYYSDCdkhCq&-iOQBY~+%hGQ3d`0Q90j`;FWf0^w+Xy1 zSQ<?UBHGo?p{oq`4gLFWSL1%)K`}MSXpN?J*fkEj&Z2e-)+kI#;cx!sJ^u2){4;+2 z_JngbFs6Z38XA$}Yo&x23IU+Q4T7++Lc&AA3yCB(kDxdeEdx2p(xs=AFDQ76K*U*x z%39nV4rrSWP1|AD9dI}tu<Kg1Z4K)vbDDx0Hsf=VH^|nt%T5~sn#h;9;ai=myg<?} zQA>F<6}WvFiVI<ky!vh8*`>awEUm)F@-x0t>Oae37vJtne`%M#t;ny(=@+D_O<^R( zw-f~O>NVsSSQYC)iS!i9)Qsla#3!$72(4K$Obh$kk@e~QhYy&-j4U&DT}$5W7-5`6 z77L<P@!>`}+#!UL5_USDp^fI(&Dqj?8RbkuEX74XkdZ<xMfdUe#2oYhYcv(a)=;r7 z=(2h9`Zc`wI3ABUpL=v|hvU-|#$hDODi_@`1_bYMKAj=->Sj?);7ch}d?;%Ugj^<D z<PBGBdtGwD0pNTdC}d_1m}i<iP&T?R3iH5>`l_lijuX!39_RBJAq3P_U3Tln7&J{o zF|#b>BFB#?7i!Zqg)3mKMSng+X@$0HApkr)JYcum0T4WmVV^zg9IC3uFihy$4zs68 z!hXNU+qdtq>uN6W$=g3o)L|EDp0k@!rc3nd@`j|u3=F9Xi+`FYO4plagcwlQ4UWeX z*((Ft>>_I|=Go(P>Jef<*ELW|Af<q+sbF12j1eD^K!u7n^eiHSS0I#0u<T0-ki_OS z4o!)fVzjj~@ZMvZMo1;G>sk&1ijYEJzu#e;Cd3daYM7@tQqub&q$+pj!jdn--@G<} z+a`DGTNgK0Z+xl88;LV(r!KN6tZ0Z8y?W6Z@c#T70lsz%xu9kio_mpxEf?Aq=k}VA zMa<q@tYVqzZ&J{%<wu|Y7(e*zXE+?b4`mKG4-pT?CyY~1-T6Es_!%*I%+ne3+|#Zo zN5r&_-eXQkDIlbTIeU&A%^bg)*qWwRR(RRzD((j4=DiXZLc#?LTxex^?UEFS$5<&* zJBNK^alfze@v8$~-|gUxL`oFn*fbT|u0q#Ybd`fu<k$V1fBg#o+kgIh{J(F{I7eWf zCWLt^;}GW@l&K+=WAFjNdlCeK5b&(BO-k|JiHGn>P-0ceNP)*wS4E%_5>4gs@tZej zstQ_B_oi6MFOXo2M%&hy{fJ>auQaj6%YJo1<;|tOpjXRELtc)iSFy@<cf4J$i)VpB zTcquBsjtY#{9>nGl>N^V3gzaX*Q0cCF>)7I0S&jPaNnkOe+k7bH~f78@nRv7uSI+L zh249`g=T=f>*VWo)?k0wK`|aR#00Gj`csd6x5L|aZ!w1nP=L1NuTI|c<?1kpfN7qg zmfUfzi;}ypYYf8xDFr5Gjzb81|NGzLQ7$<}7Ql<2CxmGx3))0oVvY&O#7eI!3&e;p zdo*o>``7oRTK68a5Abt@u@1-MiIvOrepzEUS<EBMwC8tCMRuuiDnv>G+X%Log%a&4 zr7i#z@<LNr*EBm!6S-KVB==2K)d-O;C>k%*)FSu*V+@9#+4^kh)lyNED|h;JO)HOS zo{QzlXo;qFT!au+E$~XwIfr>3p_e^>q!oboGYRuDJ)h$=p&uqR>~_eRRu|{f5r;#I zX&xZ8L{(QDj+0@G#V}B+-#mNXvxA9*q1cKqbSYwWS%3jL$Y4<>@Ag4!g>f7Kp<tK| zkWzwF3f-=Svt|X53E(^om_wi<fI(t8Weh_PWT0(pB4*}9)KI2bE}=w%t<YIy*vdgF z5)3Xyn-2lT5Up-0TAgF`?i`?mWKkW#iI%fWX$_-I3CB@FZ8#wEVr6(qam|;L!EL9$ znC>sR-C}#KZ^p&>IbbGVCR&w5wQVgS)((Av!)yap3iN|v7Z-lK#q+qLzz8;=4esvl z@sl6^1V8`j&+wzqevJFOk1<ccFa<;a!+6F#^$1}^@FRSf;Q4|drvWK?((rTiUyL*! zOEDtkh?ryXT4(knFRI8TLmomR^MRJGvb;qR5XuXZo!~&5?fODV+NIY<V%Io)bXVh( zH<Y^Ov_Q@tN(yvsjjpS)Yc0A)z}XrhO8n+`U*SLf-+zl=e|^F^8S-UDs+6+;lu^)9 z!&!&AYS1<fj1v5S6Lcm>jifat)<}AQ<)SU)z={PSdEq|D8I`ekbN>ppv&bpHS_+uh z?HaU=L*)#NmatY~ng=``pEhtAfm_4htw=5d7Yg^~k`$NG>Fevt`7%G?Cem?>vqWJ; zmrkE;h*>-r+%3N|=QWlwZ7x7jNQSro;oP*Q<xPs;jiUCu1a{9x@mPO8+a3Fb*I#T? zr}B#z|MK}=I15;WspR!Q!&%<ZM|dA0q2Y&s``rQ4G$3Zm(UwYL7*9BKJ9t)hFBYW~ ziA)wF{a(SvAo1okJ1_VmK*lsrFh;YQnjH@*QYu;9ASXa6P4=!tup4bOhJifc#v1JR zdt!yB1Z6airxTPiI6j@J>j#OwBz<v$yev_sIm1{>g+-=4`!YUV-qWIH&fwj(EW6X? zF)^mXJV(NuGO1;nW*W1C&KT<Sh<Cogj*t_qv84auE<N$Zr<7(E2ieDF?@1&mN#td$ z#W;<qD)QbdElb+juG`^!?jfZ@-PG`NU>MFoIwGksjxz-4XH_>2b!{Oe2y4ssyte7^ z?)?Wi=TOx(5#N-?IF9haQ<x2pv8mu+gy-y5GMYnzbZH`UPS6XmC}%?EvN$osK(<Kd zFikVgr!#U+9ACS5*A<1kaKWyWLS5I?tZ+J9N&zuv)J;QJS*7W2lzA;2_`MRF;1zmC zfq5cv=&o(4knuB3yA_2RQGS+K*U_9AkQUMPlH`_gp*;{%yezK0`mFL!J(m6Wvz=dA zqA!pc!QhJ3^u8p-h-*41Hjo)kHR8ZB24Sq&&aDVe6hEI_P5n|LC+Y^Z(74~<;io_N z5q|m8pW`P#_zB+Jzd>axNB}<07^fatM8p^{^k>?S`w1}&2=h=v3A_(rLm_hVNWpW$ z5-A>IjK~m(NJX?o<D<Mrd<sF`xs*kP52=`CFUyB>oivNGLy%H1;#I;bfyPL*PGH|C z+_hv=qe$a`+8G@76sfvv9d@;bvk4v=fB*YO{HOoxH~4@4=^Koyfrmzn%YL8!ype!Y z#FVd$Mr9qWqz*)AizGDyfV}L}`I1`1LB(>lM2oVvAWMScbZw2UsR%$)JM4B1gaEV> zoFbJWM8dA4@!!|qyhU1E3W>&bm#tx1fi~L^pbNo!F66p()XslynKW!-MAwPYvI<!% zg0%7LFK`_&(|@_oG86I^VPM{JA~T+`>#twiwn$kH{l%tPI)egOx?y$)zEiL#Hg14o zQx%)F)v^i@Yn3na%B8+_sV70tgvuNAr2rHX?)H0}Pe=YU8jamyZ)*Jb^Y7!Ehp!MM zSy8k1q{>zrr+#26BOT83G#0>=6aqrA7#A7F8Y&thK~RQskCcJBt`P!-rD&}&`+(DV zKwEd{+7_qt8RzpE#%P?+XM&;xx|r_n_n4*;^Ekp!Gpw<AdOAU7i7<IMV`+jF0-Uo@ zQji11Sj-bm6^zn|AtL&KwrNn;wBMIn!!^`xE2f6gIYO7a53%f!rP7$<3?BomBQ$J` z5h(<SoZ+X5&YzeHg%g6Xwjp^WWWJ;WjJD|e5xe~!$I~N(5-`qC`W;NUpk3wg;ll^! zp(~7jf~zc2pvc<Crz3obI2`UEMMjJsbzQNdUE`atKcMS&(3<!k+7LVAn{Phg{{9XU z5_RP;_B|!P@pIoUVK9+?RgI&t8%@Gx#X&$Zc;pmeG)*A1(NLNSJgF6N<|m5THP)c* z8VJepzA0hfb(p7#ZOVzrh9S`EWDaBjHV!ca#1LVvMixX&REF%$!P6a}w1TY+L6S1R zCMDL-O3uhJ!)S^gR-EW)oguxINZkErRCR^SlP!?}r!B-{Yhxj$D#2Duu^u6|(XiLS zE?4Mw0kOT*FMV&@-P#f~QB=Aj-AtAdS9?Uco%?UPE0H&%JdrnuPq9H~=9LA{-<8S& zcikR8`s|1J<<EYBpM3s9yt#i(D$`6NsU<#foM%ikhdKBWexBjOgcxRcKO-jk@I>#C z(hMmQa`ZfkPi$jYq6h<z&XyeDTm(>M(y(RDgGPdKN&FH^^el0mmEwyYigxaTq8E)6 zsEtJ96r4=ZGD0Dub_)Bh!ri{c{h`6GtI;$LmW3?;`qcyekH7jg{>wl74yPcHjAMF| zWae3h;s{x1G^J=sMFJaEY}>j)RX5PaainBki!%NxhD3)^=@vE~H!TGYhdm`tDT&># zLr%ar^f;eS=!YKTct)5fRF%aX0=|CxmWs(mj49U#daVovXISSI&saKi-f7B}TOfej zIRqDTBk|0HQSy^Fa=OLGo<P=<bv})f$-Yf`yXGy3D=XYfP?@d$E^a4g7m%fIPd$8T zw|;3u6c?T3QsU&zs^FzgU1d^9My`ic=3iPua;|z;wW#YBS}Rxy)V0Ki<2Q&RA>;%f zBR=`~V*;BnUtDU!O)Dt~0cyxc9*L?{cI(bLq(q$a)9DDKHD0}bO-gqTT*?qQoqCEO ztsA_1_YP7?gq$$V6YcP=!RyzraXOwbk0V)GJss{wYsf74l5R2i0BtR+uOp<=NDvt3 z0IdzIGqgfN;&@b2^h+hF35Xni#4w{J3N^$)`3;Gt5(|Dgcwa6WB_$x37{<?}k~HO{ z%Y&-Qwr(j?PirVe4gl*Mj;AM_jwg7Z(6$GR<HWBg7S!t4k8pJb2ud$YAwg>jJ~^F^ z#OG%ngEfxJY$`B5eE7g4@CqS%SWP;B^U!0zBca{lutz`kMDhy(Qb^KWK%gHd5?w-) z3qTQ5z*qx6dzv0b>TI<pu#Pc?NP|McIc`QIV61_)mWnS$3iGC^i@0x`CRj^O4NBJp zBZC7rl@j`X;9wYF<{+RLNNXhkSZ8_duwafI=@NKCGmayS)&vbR8aY#-4h8cFgn35O z)G$V2nr13urCL{6DVb*OB>(^*07*naR9{T&l(=61-T3@(v`4F@?Z%~!P2h#VdT?#k z?>F<)bE4EVT#9p+!%$vK{Fdz9T!K}~n01piy#!7)w#E-W{tUnTqhH_`Km8+o^7;)b z>j;0DSfIxjZw9Gd`*FZDPY7YgI1LEFBSrFrrWBE4K#DU`oI$Q^8nq|hv*(oPBFl;B zMk%hbp;v1IAyKM%V-&36u~OOpufifx4sJr&%1p*DB@(Pk*f$oHmM|jWZr9*@Z|?Bs zuEX8F!hTnwb{fVhgq-oOUp?ag{Oe!iH~;)K9w(sB3er`CvCS*;NAqakYE7!&jf)@) z0b?k@rm7p%)=_#?inNd9{SIB~bTFhG7sf4eCY#LbSNAk^;QgawfeEQpM~w4`6auVq zIQ1ud^Y(2K%M_Z^X1u$Q>y}D3=Vc{83REf9+-+GzQn)Rk+g#_XP-mmK-2N<=f^;cv zF7zYITIn*{_3}e^TQvIYvRpn4T(n$s=B1J)h45NC@LiYs#ae5_s=gT6Z{RcEb*WRw z5$HM20y@)vF(Tov>u_%?{QF=28&pbj*PSp7N6hnps;S^(!u_jz%(KVw*kc$;ToppV zIP|C+8qs=IY!Bmvrftjf&~-be!DZHIXzUMr%=1jbrWnhGL{_ymlOg4Vei#5D@YxSO z$2V`^BKoi*I<i3U0ZJ%Hki~PFMr1*equ$R@in#0ZJi}=Xqlttj1Q94@Dtb(URuPYc zM&Eo9EIZN^DJ@QN7WzERWQX%4)}jl60aQyYt^lfvM*m&gqH8<&c}7kN+GtFk65#rC z&(<%30tFu-r9tqXVqSSL)io_3BzxP*(iMD!wGPfYq?|BK17DP?XiaFJZ<xF}!Fx)1 zYnvK%-QYZ&VYDRspOWZ@zF4EDaYD|S#D4-9Cl8|x=5a<$8HzPSWW|e6n%MKsISj*q zs&X*e5Vw9J9BtP%7{;DOg>|u1O99x*!Wc^UBVB?hq|U0YkaA?6e1O&#)>tZVl`7UV zDI~0M(3;ZRz>(9&C`duVVCO7Sj%ex%BGUvIBJt~$P$J{wk3PcV!vhy|G#RIKK2KAq z5Xf2#tf4Lp%34-?*Qu1aak=OGLZ@Cb%9)~bDLTr}V&BAaVY3)X-s&XS2P_#MD&>_w zc1e2^TNSf}RTi%gukf><{1N`_=YNdvef$ZUx+Z^kT#5)*<RWn-9>)-RUlgJ~%sko( zrCLonu(F*ldns3F$YQ(7G4RSbUiz8ER<uBurqdF&(`ago+ETT)fG&{Mpc%1v_frI- zhe$I-o?&D{r35;s&{YPl)wticIJ6ZSD`6F2G+-@}ntuDcuklxZ`;Yj?-@e1q3!J0C zkN{yEz@z`gqD8My!|()ws($j*3Q4;wDHNPGsBDGWIXG)ekWIPJx!B1I<qHeGv%=ke z$Eyt9v2*70G)^4T2tKq7ViI^fo)A+iAfBAJ;Rvf>X5Fdh3%|IMD+x|q#HMXjA!1|i zTE3Q8ckE&tfr>?iyYAwjLtMnAYWD@@`n6E*8ltm$R9{BG=9Is)D}RYjcVR8xz8`q5 z;1?TV-Ai95h=eRNO~h!QgNTUQ2>kT^9{=N?{W-qh9dLYjz^U)yV}x-PnyNtvBqG}F z4|w<f9YUlSQL=LJC1iAAs$0(JmP!>%qf&}e%e=>azem$FczOU5LG8YHV!~Z6S>95T zx;;h`-^G*)Hq<(Y^Z86*obyD4uSC1d1!j|CV$ofI)`Fo>iAL{AA;&;aa(@1m&@|GA zq6-uf(Z|I%gvon^oH6@Izb4OwJW($A6#QnT1!%>^zLIdxa@?uK-Q7I`$Je%P$Np-% z1m-ZKu4>GF#xM*R`T^aJIPF$f$O4$>v7AZE-oC0T<};8I9vt-2b{&q#BVl-Bq{K>X zAcVx}bfUzzc`j#Z+wGtvsnjI|s>)I9ECjy!<^kQVBP?$MVhZSXJM;q)@T@V=hOA!N z5}b#+Y7HrY5M~O)2~@x#<>Eh&DWh^V9-odhrf2#bSQS4G6Qt6pD%zbZ2KmGo@cPZG z5}Q5pYf)05?HbZ*kgS{B7*e2ZDk`G1MDziMpGj*p!aOtVhZ5}kOd>;T2;DvOXYB6| zn^<tlPB6wI#{{GGbB2pZB?si@8L(w}h!y9qD&ziQyYDLo_QiX?bO~~`z1{TMvWHmU z+1{QHja-Cb7o7wy$L>Wemj&9Y#^;}YAAj=mU*M-d_%Zfv$MzBlu~6QSi(-*duIPig z9H7%QVVHW(Est!Mh$uHLvHO4=sEY<=g{SD5EEg{@qRT5)o9I>}L9wS!V%J(Ul|ox- zBETtCY-l+qC{~_U)}X2sDg#)VU}fYi^o&YnRGRY8yV|0$3SF(x)dtQQ_!#lUZ-0+p z|J@h(?b|cPs4yjibI2G|g031!9<dYr0Wea)8BH1Sg5F~#7M+9SDT5--0_U?kYhgLR zIK&7aNa-0<*rel;5Ui>!`7-C3Ka6BI3O=xkHWH^^NGN3>q{i`h!tBGw>bUWc=T&<^ zNZoV^ZMazPh>P$N<V&mL^?!!I1-Vcx`|OJlg?v>2$nPA1Ut?r(MZ$a51#jX`w-@e9 zK$%;Xw3ldfB<;v$>L53t=ZiyO@vXn`cPwj(C}{Mm76Kw7Dh2%F&1?KG|L#}#LDQjs ze2;{Tcjq3#R!FwSG?N0lZCi#rMe0P6ICO&!RjnwZ*vEjXu3)SsOR4wd5tp)bw@q8) zeC|mP1F~x^>3?S)zk5GJGfO`Bh;f`zRV4fpLb4)zWg*aKooq@A6)zzpBuaK$U_>!e zIwK(ABV~wZ2<nuDfR7o|9Qc=qPYK?qk~~I*w4$kilt4}}dgXyADWEhZucZ{x))fMa zw<x@b_~%XCKxs{(FGg*`Q&0*a!3k>KN3>mwX&mV6QY7%2XX=WrBVnRr=uApr4TCQu z?d82H&L;qpnHfUR`+eB&=$v3!PK*g%w}a9OZ{Iyql&hbije^pOt#>_(#S*kpFjhes z61)kKVV%W1)6QQhz&XlIABGW!199x>StcNkt7<$v9^tBr?S&r0FvI%*&Cn#t4UKgc zS}ACyX$_LdyB;HX%NO#qH5yV#^!=Hp3>*i%bk)mPf1YW~Pdt2qFnccUNvm+~dz?;Z z^uvI0oZx+cH5OGxu7nuk#>Sd%ezq^g!h#bKWkJ*e0{UBkkr#rcTLi0ZIK;*evnuEF z)l%=8Om~sIB?>N3Nr8R0$4`Is6a472AK=ygK&)NC%;2<OSUKfctch5Wx#SXnRX}3} zPJO@>Qc2t?LMncka*9Aoh%!ScK%_`0+RP}?oC`lYFXP?~txJiF%1CsT#;!J~t%A}S zF#yR5G*+Y10*}W5AtWG4*h-;x3XQ8!$qbnz3^FPu&{~PRw!+7E9bVtHxZhQ{-&xd^ zhL0X!ef1vy^1H8b8UnJ=$RZ&lu3<N9ilz>n64eZk-It%I;J8t->Cr?^<(C9s?o|UL z6)Q6n9!@97tVkG`iM=hE)D@8tQ-m=J##r{nvMSYRgy^A!M)V2F0a{xKF%_lwdQq(t zhJ{PFkmh1u*EP43PB+=+TXXnDODrx@m&#b4{jpMtO-|4fPLnoX+KvDH!rm59L;*Q( zk_m4Y0oSkL+d^BecjecY`UOTZUw+G%DT$Y#T_t46C%DCr-<s@~!bge(gNQ%<<Wu~w z|KUHPivbT`{VQb#Og-*)4IYmJrVO%_rHDo;z$fIu7cnR#1pvcF`1NQ*P7S3HnH9d( z>sV_br7pS(qYbZUs9+Z$4*ltLLRHr|od)ET*$x-bxC-atOj?q~dmLgRdx?}F(<%^N ztVfUuLio)a>ybrf{SDi$7M{Z<cR))DVOmCznSIYv@_K+E@EqVGI4DYCzu&{Z`vyXi zqJ0==NUfozg2})Xh@T-8S^b2RIG+d9bp!ZZrXWI)wd(2dk#gHL?VSDWX>Fh-K60-y zjuWyWac|qU`0)4vcXtQchkFmH6i1b2SgSFNC;r@P9^X>|WVFMW281~vhJdc?@cPv& z{Qk?gCEtCXCkp@B?a{Uko*ti|CE!DX@Pb_gpv!-;A@b9#8L{i<fOj9><IP7O<LP+D zFixoIn#RxC;PL5*wrx>0HNtVgIF6X-ku&Wjv{X1BdpKv|oPv}dLeyL&P#}@85-AAI zAh6i&b{F~=DFw7-PJ)ui3}A}hqjHW!a4}+@BZlD-UAM>ms~Y{#Q&BnvjKhG)-*3~@ zIQRW?dgS#PkkSQxZvE`jGo&v?Lf;*pamyzwunmV_RkYjkLa?{>rk{2>thItx0<XFQ z{^aMs#OI%Wj$PZqu&-V40kmauFUmq1LkL6;f)+VKAyG$cG)6xV6eg{KG9_??$Kf#v zRxk1e!{IOm<608vBzw&1a(7CgwhC>fu&X30C!uskjz9<r$qKYp1*<aNKMwFQz)uNQ zDo7(yR|d6p=$yf!u{hKQ``Y2vzQV3C*fk235%7M%*Kgn9?S~V563Eg($N(T9^H^LI zDA2NVmXL~UY*tFZ`!a^ktjuOJ9$%r6J{Va5F~dp;<*IU-g^=;o_wWc1QXpgk&I<09 z<}hRSGwlkwL+`p4ZQBCxAE;~LNr5qj8-TR2fh{7!&A6R^Whx~utZx?zP=3~A-g>L^ z#%&;8;Gb_Icf@92p7XO2`I_d2%g$b`lcQy%pVK9CLEIc+iHoGZZ%b#p6$<lhiEg)w zp1gT&B4^&0E{)hFqIY|-%aEZ2AhJg#6aM^1Kf?d~?|uc__mEoPH1-I_A&wL7sv2L# z5lIA0b3{l1&g~KW1XVKo5`v#eM3xe?wV1|<0)s%~Vdor-*09>J2c3Su%bCXPG8GT6 zQVOTj6Z(FJkP1`q5VPTtq=L)=h``v72r<(BG?UsGoLR6qEGVH*QG>8d10xwB7V&Js zobm;(wJg~cB8%0@Q!)~md`a*;WMmjC08Uv<nVvVYNP$u$cRNhplR%Hxfs6KI_A>-u zCNV~`mpKZG(OM&c#^P0F(RBxWczBOV0Ro2h=z+eEVHj~91|I(|T|C(YPp1?1`yG^0 z==+|6d18Py3eFk$2s}NJyC9~Br{fd$`+Gco_&|^wSJTQQCcJ)iz{A54&RNVnJ)uZd zViENH84?O<il{1Lc7zZiHDI)*9du0SPXoU9>GvRo!tcNQ8jr^()J=zX50CIMW1Kxc z`sg*@zx#&v@=BuJ6YC(Rh+!I`y@WBg2<Q%nJ&aYzATgv68Wx1ojVd8(MMZ%p01grN zNXIb^BQi4Tns)1fNu+gMuU1f@5K_k1Z{NeZivP|7a?D6EVHk#j!CmNkW&Ox{ECq1^ zeB1hDv%n^p3Q$hlzgTyfD*#3c`3x_4xknePU$}I?t7Yp}_ax*M*0Wf>2(crCz?;K8 z{_L0k4Sx9j&vDo8pdeTH4Kj;Nm}<s?gXNM>Y1sl$GFV=0XhL9^Cip-qQ>v~b+1PTV z#Ii)W$7)gMr+lHP7RdbiDab+dSkr2W$|}@OqpKC#TBC6i)(98_D3M^4K<zBLwgVVn z8GL|986pL!oZw`JRT-UA*wqGYt#Rn+-_8Kh_jq`Chlk@4W5^hzz?6V-4j89^VfN^K zz!V~+w$R!_NsEjGYl(wxm1OA0f~8fwOO`92eB<|)05t!6lrn%&NLgYIiAM3|XHMdm zx^fu$o?>9D8mH3<N>O-6RaJ;NVV-9gYoWA8NCBt*ToTR}vQ(kD<!zu!;t`YF*s`9F zr{q<qDsHmO#S5J?e_+<+pz^^Ig;FPPcIs<UuucZ9_te)rb+Mu8T|4M+dDOoRKC>OW zKOfm&7D9_|Mc(KJZo!|Hai9_rP9*%tpZyH~)1UoYH1mw%=?Oy$I8Gz7bm*!E{fGD1 zwGL8vXe5Xf(6kk%X+R1j3<5GH?+bH68;9V1d5?^-MKGlK_e%j58G#brGBD2*<t}hA zN<U1nuEH>mkV0dcJdCyobL6!ipoD}onu;2>l#(x8LQBoAkPMX*tP-$_R%s+K%`l2B zs6xUi1t%rxRoEq<0T=;jP9H<gFh&twE+_8F>Hp`P;l#JK{E|wcVeWlD(xkz2mO7zQ zXBrzzi7*jZiqg!e3$L0ARb}C$M^4lMj^l_NX|x<dK-+f2ska&s6#fDv7L{cL7K)Kl zo{4hSQR5&<yc$EsFwPvWOKZ8^{(#f*2~uRTZYcp{HDb;<9*?N127N!!=v!+{6AA75 zend(@2o!m``1^AL0c`q#VpM03dG`3;ryt|#^n@4__J;!|?=ktA$)EvuhaHBoN7WF# zr&_=}l6>^b%8ioLJgieV9Cj3lGm$<av;IeGO&s?`;a|fr!dg=l_6shVNQkoh9g+!& zneE&F6$j^YPZ7Q`aRQy=uK{RdijHZ`-jJ7T#AVg8(Hcp%(g9eAa%rtHHwT7V4mcq< zQInj!w&cKag-O5GD)pN4UeKFzQSEIzUphZu9q#d`zx)&Y;M331R+P(p0s1J2QrdNw zo%bSYON+-h(2ji*s^PtdpGVqlvv-n$W;jMP1xV!LsTPQ97I(Sm$Qq^u`LeANa7LhZ z8f~S@F1@x2&T5z?K2>H|BhfVucZUvIWX!`EarUURf>i=q0#-}ZR-kbTZDp{l4V<NH z=JV-{(|N?`fiVb-K4J0+;}kJW0sR~?`UIaPv~@7nvCt^OYK?tUL+6Yz5&ddQ=@S_R zdAoG@N(joIm*fSP%icHBNOG7*gcwNmF9f=#fwKnZ<B`J^YWhGJMT&T9h`Qthw9(K; zB8iO0rz5k|3zV2Gjgfukn~M<4EYF*~fNg>w1UAccifI>{?sSRq-FVX%&`i$kP$)aC ze6!oVvUhJT!ZnAS-e3M8FJE(09IPU~_4SG?<m0W-np+q779}fj$-ci3onDyvRyBO) zM5<g+5{njKT|NANl)Y(>ZQFI8_snj!d+(|`&231Lx}->nCM6;M65Fv1Nfr#nL4Y7Z zl20)ZAjtpluX8>*2x2F&Wl4@qioEx9Rkgd-%q}0sTx;(-&Al>-gLCd_s@t{Zm}89h zecr4yFjJ+O|MGW#!k_&7_i4uw?LC3aoBe?yX4<~z;oZG-kw)?O_(0Q0ZujYYE;~ab zeqyD`N{iL2{4m-`9BN%t*YzciQX?Ml*<+nub0?Pg)#KqH6gw--`TK`Q#!(pYF=n(f z;w&hgn{^sfbTAr8;#$7*Y=O?GoQe%pQ#*|{V(HUGPa{@Ta7JT_U*8%*YA=fQg?->E z(G-Lj3Y$W+*>1==b8~lB7#wRyBHn!G@WE3#!H`;KnWhP2#qt%rXVdkJ<GJK-3oX*m zp4;24JU1~GuYDvf+2$pzq%Bl9r6I&nnDx-q4Z|?5dGRsIYp~mF$t1>cq-i_h*q8NM zjPkm+ZNqN6V?3XT!PE9F)>(Xz@%`iD9#_@Ggv84BJ@YuN&&<4NB$T|~TIn^V?{qq& zj0L4QoQ@c)dH(zb503||b98;n<NjE9^Bx}pecy3Bp0J2!sB4-_y(t<ZUGxPp$mFr@ zT5^h<k7rrqYMH`lqi|M)i^tPIjET1C2vMdQ=V2_wze>jSu39aPvln4x3?eu*`U3kI zMp-dM9|$24yfEUg37R<-09bk6Q-NAtRPqw;wX9$56N23PV|AruEVTN}Kcr#gjHqGL zdl8KvbQc$DSI%PUCteQiXS-+o?8iUh2VZ`lu4*m^P9ZR*oY8Ah4;OWM88xfocNT!) z5_4MAq$<-@j=_o$XW1pE#owncS=zZ223^vRR2k7Ltx7VQ2v)3-oqc5$wUff_jK&&; z)0#>-u!*Pu0!k&U_1tw0&o?i5v9Wyp%{?k-8Nb)2jNvQVs-h`M)OntX(KGo>$c~sH z5lKnXg@!pY#l)O4zKjmnP*k0Zuhn2RgeaqO(KX8DC8dDX^%Vth*<;5ds9RpsOlvgW zS<ZFMw(A6~o1`OY3ald(pY7>%;zwWoHn%rhf}c5$Bj-Un6IWMMwIOQ>_V6X%bxjG( z%MSa}4d+z$?xlNvDvsl7gnY>k5X;qN1g{G*ZlO6{z8|@!v0Q0Do&u9)G`sA0&682} zb%&mx1QRdaeO|3}mrDRoI<!yau74X2cK!3rx_Vij*Y~sC-`_UmtLWS;4;o2lveu}W zv3Yr-0!{Y((?9q_{_)R#j(T{+D8-xoJ%iRvD72}0+&?lA8FJ!$IPv`X3*H<asGJjM zONdM{g0Y;Z3FDkhmW+%XgZEUfl8}~ZqHSw(0`F&1s&Tat(5%XAHbM@|ITB;SD2w+I zTh+2-Mz7suG@>q!Dr2moYbsGOD}^7=I3oZMW!x%`j3iuTaZb1rF(q;e7_G~SPdw7b zQ2fN=z>yeO#~dTXhzW+i->|#c%B0Hsf@YQCX{=m!jh)FMh<|*VnJ2N~Znhmhdg{7a zJ7=+11wrN(HU~<k8BJR;jU&@M$ht&9oMk#E0VbjhA4}mr9!~U|9&Ift1X1Xh-MK<E z3u5J!=BMjAfutCNwVJwdoKGX;D2)6RBDJfCMO<gCB}{Q81fI`lnzm*CI2TQmi23@y z=XgG&H8`iAxP)R1atSKWj*o#?uio&BUwnbHj<;{#@!Mbhkglycod;p(hs^!`ft&4? z@pM8BneA>v*EUqO<#;+Vk6tE1TE2J4n*HOxTq^VG#y~;WG@#^j?fVAr0}l@m>~3Y^ zp^ae}ChEGOsv21-86zK$txHG{3^7ubqAh8MHPbMzIrX_%fSnWTp0jpM$h=;2XU&=~ zu};*l&|2TJ&ASwFUApuSx|b3L^IbdmCqR*MfGqpdZNKHmKl%|r_^scP{aL>3KbJB4 z;u(+WBMD*aPCb=9_mxmD$tT@Z6-`ykXzjXNT2P+GpfE)YCHHpu|K)8ND9UiCopj^1 zGb?52LJUjjMI@s&wYJn+(^*BMJkNT=&wu&_|KRWc4u9{bU-13UdtTnP+-++5))hjN zB8I>;&CHXRIKYK)rZgdCW}gT#3Y=wOkQaZmG8*G#v}T=IVF*j1UJ<>hMQ#X5L~<tQ zRRwRYaHA_HQ;DV)>t0_A{6-fNR8>`EG9gM3&f&0U8b{iurEMDKaVW42M^igCeNWfa zSj`%Xs<@zC)mowR%5BeO&7$5LBd>b1w1^)s!Y^|*s#?<C^2dte$Go5Kjm@uf%|E3= zd1_tDPnho4c?VCj*T3a${hjvZ>7um1ejd~()(;=!y6bW|FPkT#0-pmqMK%fk>}S8v zpa1L+=+6`3JaC*w?)^-x9OoGDIe<|dh7)%$o?)zvY>m?Fx?VII1=s2-SEgT?X&wuV zDX)Sz>0}mYOS+61OHpduu81%bF+o*Jz{tE7I<@9j8>7qlu}tJ-BG5Js&I-m@sZ3ov z`mVtm4LQ=(j<&HhmBkrFj)BT)oK-Z9qps!IZ>*(uj>=h#HE5%-m3)p(+lsx(Pm+JI zxD3h~ud2j9zT0%z@_W`8Viv(^R*I|*uBr+YC1b5y&*KGgtBpci&1pCRS@72>5K|~E zPAngrc=ol{oXR*mC*+KoJ*V>^7O|$4U2wrdS9MKHnbYaK!dsd}@8D!dZ>=f337Mkw zeNWTW4C6@G_2dLMH@Bjs&l&5?YAsvNqUCKk=SV56jmGJ8K#|z=9We&Bo1STkym|AM zo81kYzUA$kH+=EgOPmo}+ae~Ly{Fr3NMz2#K!|=7?si=(N_V9S*v8Yg9m9E|?>AWM zXqrX}YmQ9QNY^#o-1Jh|gQR@MIdHR;(5g^uhR4%H%HUir9RH$Sk;zNId$DKw+0!&_ zX`u6}nOHui>$7J$e`Jl6Kh)WjXWuloq_nMRIi)K{ufh(+haUEYX-*-JeauF584;@0 z-@bxtP>`UuHDCSkE57={Z?kPT>&`TnRHNm`noOfEs-i{o_T;R*ItP~<&hj~BDB>-# zQ7L^Db5}Yzt&}`~YPo@@b$@QP?4F!a)Rp{P8HF`!9aB34&Kj&0(VhG|`C&*hiZ@VO zXlu=;tLU2wtHl#<RFc1IG%ClHKIMI63W?DtPNU~^_6&1iju12W2vf|2tZ;RMschL@ zD!R6&v6}ICAcb&YjA!IBQ!Z>)E1c3eqp7W?Dh1s+g|qT^l2VMbXP8B!u&}x}I|+a| z91d$jQO@GQJsu9S)610XYr|&Sky7F}zxig(GrnRTUX9&LSG!PK^OM>8TG+)hbg{f$ z7w82bbJ;2Drxp=)W!E7;2~WuHJv?ie!d0PuUtIS7n0zhr>Z+B0FC6CM^DVx!AV0C~ zU29&R*hxWss|;@$7!<N!rf|L!Es;O{*)RBS{_wvb-M_>8nVH1)#S4z(NJcS?BR~4l zkGa2p!_DmtQ;^&R8BsRuPiN*3=(by;g2VAhR&oJc#=ybPVym=P=wFLvR4an_G)08O zirAG=^67LYhJ-Kp(P{D`!YZnCt?YVEkW<;$iWl5jLswVC;OUxH3PG{lRYucRZY{P; z`(v$>M8bl0Hs$Ro&HDXloWmBv**FZOC?PA}d-|?p8b_?LB^U;#;Y{?iT;gX>M4?@^ zCIC8HG0!rdm1H{Up65wM*C7hKehE%;&RkhC3nL0eRo81cNh($-R|!O?uAMju%EjDT zR{~N*OxgE6Z{NKUR(iQ~2<=YTA}L8HezV&!2YD?av)}L8Y$X>y1ewgCieg{M>n#Y? zmZ`WMcH3T<^ja?E!#I|YS+o`z36gpB>Mg(bd%wrqw{Mx}z;3sZ@RU)qE<(JZ%=?W@ z7%JxkVLOeY-q)h0UnXh8FcLyw7^ao_C$0=rXr-!%;1Ye`F`S2z1b9SiQ&uDr89dFt zWDp1^f3tSS_5%O_AOJ~3K~(8WjBmXHlTtw+FXTj3G6TGqXk$qsyogry61|!~uD{7S zV`|&{%gn`!whkM$zVgoUUM%GW<e{#*d8O3{MSZ2HX|=2vi$KNVwB?J>zT_ug{e-*i z&5AxuvE<jjC*o0Dk7Jilv~*@Et%-8tUBAMLa@nPZlAoT|ZjO@lRxqyRziqMV*@a-G zrFc6d1+KCRy9nzR1Z>&0n*t6HKD;h}Cu5aH7b4rD>Wd*VjuYcJN@zk#!aFXE<KQE6 zh>Wvm^oipzaXgPw&_g6=LBWQs@FC$-qN-}DLWQ%|(svEcfIpu~XMBl^6)0RRetW&{ z5Nl_toR;pyh}J+C3(_1Shx5o(_G)!gv)%Tb&nM33^BSL7IV+c)^4b|=u-egf4YzkY z#%bhle)$`GNb6<oiI#oAtmeF6;4iS4t1RPXlA`i^GLGxl{=H!I%K$*F5y01!xhE8- zH8Wm4-Ad<g&p}UDQ>BYSK0OudDW2Fn^LHR&KUC1G4=sM`TG#S4`R>C>Kwfvh6n%xs zvLmjt=Z}8=bN=jSzt64Jyn6c^rsN4Il&iRZe8k#{!@~nV{Qhs@$AM?hUvL^m>b7Tp zJm9K|*YDoZ-`rrDn!_+~o<=E(b+xWbf}cyKbt-x45<o&q1y!0ZuS>yJ5917IiOaOE z6n!ZevX9i|;J(lXDf%I6HQT-`tC&nv3tT0}KvP)n&KX=?tr4af1Z7%iX%bpw+3q$} zbtU3a;O6$0oP<U<6#h9mp_F`X<8UTLiF-~l$j20A?;Uc!L^m75I8CIO8K-Hzo;l~3 zrg428tEM6(DF{s~Uhtd~bzO@~I;-`2-uqCXHgyrZX6m}ZSj)|B%kg+x3!y09C5R@K z(Yr1Uhd2&&DP%K;!;!A*uto_S%TGlO?u&KLa6F#KSw`7Dgo55RgdmA@DWw$&tW8nB zYvJpMkP7EtUZ<3kU|o%&Y1)+lm!s_c=MbP2PJn5gXqtM7LtxWyn8pdM1;EoZ&05$c z?pNS8(=^K4Py**!Ftl~;nCFS6s>&0lsVc`fj)dUJ$izb%yYl>VSz9a)1#uHC`mRgy zUyr=9(@!a_tcj0tD=sVaLZqur{V(6Q2uYluEt$6R0$vl~wAO+TE#32VC%=e~mbbZP ziC=?f3isvi=8m6y^*g+H_5xS(xMNH!JZ1@_SW0_}VI4tSi<Q=&i~l$;<K!%b_JYrr zooonVvq%e4R2Kz5V)HOsGR;+v=$s07Svqy2Gu8-Dz&x4OUcyA=8z-#?wqETBs(7R| zDZ=bCr}M<=JaIe@%s!A&7$>*a5CW4A45Me5Ji|0|IE|bK&m0m8flkOntC?fMhlH!^ zavPK|giTjtvPVZxTUiOfC=r*^grpK*sb!>CS(-{ySBBb&Ktw)oxs}Z!u|J(T&z_JX z+ueq?t9f{MV45bJlLuwH*$67ph~Ly$i?xo;wr6{@;obcMzxvhJgjfpcN@RK8C;gOp zAQUmR3ecV?#|sqhvSYp~@N1DaPeo`~K!=>Od`&O7q$lZoc`5Gijk-VWMSq%Ouvp&o z70On9DwO3r)b3A^w(ql`SLebtNB^pW*H>$VGW8IqOvI=}N92!w`n&wk|KyL!`$xWh z^BYuaix;}*csg_Y{5hv_WIT_&xO>j&aA0?P#~k5rzxjrKyQ6AqPSZrThQly2%oDMQ z+{Ssrx~d40bO9DQav7T|wW!i1tV5Sv^M%cwvy6_9=V1lQ7-Jd7nXc<;ih?=DSe{E& zqK<)>1jeKlq{wF5L#E`H%c!&8^i*|SF0L&hX0|uCpcK|sEAydkn{@~3y@bQ~Q9AE& z9xq^*oJcVjAd{CaxHM0xOd}HtpEDt{MhmBqiN)VO&0f%{MTx$MrIN}x>!gdk(xUj7 zG1d{vR848ccDpP1+OUp&`%RB6qOo`H-m%$iIGs-H_Xn&MHU8;z6oFX*(=?R;Ue2d8 z<K(fGqibqhWjP*?^j%kqbuI<ka6BHly}iNDl7?xlTOUwkglS;i5<{vn+ODd1A0jDc zZlB!}qZIka$46eid<i7RVOVuvDYLG>6cV^HPxF-mKC;_wNGWlD|G38d8ly|1-W3*F ztJRAyYfJ=|RMx$c$?k|T3d%QUhGAYwh|4rMkx*H55%RWbQM#8V)Vb>F97-$iAgA}T zR<7#ebx~h1#QLevMSYktoiAxwA0Awbzxln%_u`#X>PfuiB?MmBz~B4g3!dHHi4Psg z>yE{Cw%|cyUWjq=!@cGrk}CwfMNoW6J}p)##Jb|Frl}lli2z+kYpdPPl!G@Flr4o9 zyyUj$;$tu9)YA3G81X(ahs^9V(;S(`z&Hk`DM*HIlt7CqCI+84&ynNVb2!fIk2B{f zF-Jv6ieU=uPZRftGY^M>hvUHGapLhfayU<nK9F+>0}wah`pqc2JF|8uRzam<Q#+pB zbUeH1xY<<nwSalLS}b`@ZEy~>$rzidYbofhQ?yosW*Q5vQ#4j#m8=_#Q9@VBiQp%> z>=;AWw$x?s?wnhbwyZTJS~IWdd5hXwnEwk$AYSNk*SYjpx(<~<r)4y+*6+IyY-S%> zP3wI5@sWS>!SCg(Fqvx|%EzEg9|O2#;$;ti<q5w|cDo++FDY&BUmU)bV)y>Xun7E$ z6ChH4R><DAsA00o0tw3Uy;9}CKm6%W_!ocrXMCO%5AWWRo#i}wn(dCa`#t?;%fq{S z8dve7pZ=6dgRUBsZTQtUuNXsSclVsP?;bJM(r-lQWSyhmY^39~64J5Q9&_={3$nU| zURX;+iCR8i!jYD){_*j^G){7vtR1el+}_=Yr+FA;_g>sCF-cA~D0~PUk4IwZo^s|% zqL{IorfbXP*KvD$D>0zUS(#zG*_7RODtK3e%5d5rAV$*cB||$1Qk0wtvqW(!38)~8 zAf}{(N%~qw3T@Z+Ow&w^nHUn|EF)RxBz`oNQKPXE(iB7FbT~=(mth>Ia#rPa+MtwX z97keI5=$Es!&xq7%VcjH=MrhFi7_*dGdX42w&ifxW39PRMspF(Im78R3c*szcswOZ zo?9-l)`|x{M@dFQ$tZgmh83K$+wBU9c3_%jLQK?cOWpP)4C6dAjx)3OY<C+%$h>;} zs$2?LcmBI=Pv3Pkb#-Me)tpWv=kvrod!}jR=61{T=XXrg$bP@aT7l^-7Dl<Oi7<Aa zWwmoW9x+Pej4i@n%Xv70N}SFILiBW9EnI`(S2u{@%EMa6LI@}$f^DTWAw@!p1?pqg z+N7^^K?+q?PjQ_>rgTANOGBO&X&HSMKlsH$B!^!5*ddZHLOH%OWJ0a$M6C@v!?W8v zK6~+UwNj+(4!soUM1F5fC|&O*inG9B%6{m&8_5Ephgg`<g-<Uy*NS2G1j5>xsnXKP zIJQ_Bl*TN$O|=9CEYKSYLZc|P$;2c=JC!peTSRA(StYVHB(2fekh5S`XCFBaBhw@p zNM{ToDUPR6>|_hgE@fhto9Q^uB22TU+{#3yt98ZECyX~DlCu_VjO_STrmHk<(_*vW zA<vrPH-`|)1K~8r3O&o1MB@zAvQja{ex$&eEctH<>B`%h@q8qdbfwBV+P0A{-Brcc zD%@*lB~CD`hiXD;@eF6;d!yoOt6150FFJ_)bj_0$mzYuV#~J7%<G|!^0kq@~ecjhP zAf3M*5c4sV>lNpYYyXIPFDG7SNblz)XTB3l`vEh4y^LQn<d>+_^_jY2I_Kq5oD)?D z{QV#OHvj8C|K~i@n*Z}({U6+Z{*uRGqNyCmc_desWE5@F@V)Q<kbm<R|DG?u`U>iX z|M;7)v6~&%j=b9+2?<_)_66_G2eMLV<2VlkS&2|AM-jgr4hOvVoX;b7cXyIkVC|}@ zS+op^OiUi<I_7y=55=X^pMBuf>(^-IidR_v%_0VjF=CuWlkxM+JUelRSW9mtX|1jt z=hKm@a!lh`;+QkmYUXj080wVB7@X3~!^n6ZN}&}-hO&lv*^6o!<5tGv<H8hQa=8;1 ztz&6yvRHo~9v;Xs5wf6dbCgTR>2#K_T`ubW6eTIIy!a_d;8IHBcu7f;E33K^a$JU# z6Sb|^uj}b_VzX)1QM4Sxny#zKIWmj`O;fFG1Feb$&}ypM(Z`m@gV^h0$W*Q>YVJtW zRy^GAX_}4~&z~0ty%bAp9kX9>z?P<Ic-SA%PBZx#r4>zEV+=AO)dIRXo(C%Hc=`DY z_7C?oO^q>{c^>JzmdE1>r9{N2YlkjTxrf7E@&zhE?9TJdvu7`9+m>k>NjXqgR>EwW z7EMJ;nQ@#jM#%*yB=-9Qx3{+p#i0PYG^0&%U!(%-k>@VP_(U`tf<$|-@Fy0{hFt~0 z*EC0^4a8Ewi~D9lbf@L|Uh0MAKjVMPNL*jVqduAGT_4C-QIxV55IBO^K5AaRcq#m1 zt&3&iY81GP%+>&pizoSg1#ygVja=3GVjU9vYr0~*Uy8D`8e@c#m6knS$}9Lp>4-AO z*f@zk+$^6`f!(NLgia~1+1n`vv0g=k3K^ZmYL^n^N^Y}S>EfSFOp}b&=a588;6P0? zRwYPr-SaLMC7~5jb~{$Ab=uInnkj4SX%H%(lRr~sWl(9bL@W`f64okoW0<@m81PoQ zBjXHBT~QS#x3x8u7PT-&OLwQlzNbi#15MjvjA0mt72dKimaEF)oGFtGFP%dphwwDd z98RZ8Ai-LIQXy_F`QoJ*>+&*k*@K(KW_CS&UI=aZ+P{%M7P|Vh;9o<AJ`$pkmyS85 zr#qkby7KD>_qxn3X>w2AX}*f>Egzx*l2%W(B#SujBUHI3WB%o4zcS5vGP%fCj+M&= zSeJsA(JAnYAN+v-?Z5tS+4#U;{_?MQGwso*mM=d40srb>|7$+~@-v3xfnzPnYX9+< zf5YwehE6+PrNqH|R8=$W4{Wy^Zk|2k&D(pt5e(>*W^Cn3;+h~(&*$^nfn=pPozL9e z?(p-K6?RFn3z5Fxuzx%<&jGCscXxLT!+@)5UcY`VnFq0)0assuR5}Y0pIQ7ovOgZV zyV)>~6T97x<MBjYS;!eb4jc~$akr?9RWQvX)>SyI8IDJ6389*TjGui7gq-p7L`-78 zGUc3#O48s2Ex%}gAceF}|8m)V$HKX{*5c<_l+mRzDik>>u;r;qiKcEDjz_eT0IC?$ z$^wAM`Ft+p@JQV>>zQecA^5Zkv|he^zFwr7Mxt3`40x~T`(BjX>&GB$i@L5*hm%YM z<{1z|XO5yJ*zI<_e)EpL+hFUO<N1s$oB>x^&gT=iw_nQcS!Fhxp0{t`i9dgy*zPvO z6eP&!uwNDXAq4vEmc#ML-R&0dBjY&I)|H&Er!#%uQ&oo3>BM%kA*aMN&xo^3^H+cM zSKQv-iW4H0JoL&koR9R|9oy{&=VXO(I-O~2$N4;Rb0hGh!|_}uN0FwfsB2e1Kna{e zN5lDa5&%~bDr+U;=MX{}=?gqb96OhbeM;#{N1`tFwq-(8{_fJb1K6lp7x4?|Vfi&B zj8q$Y)sUBwkxE7N9<j;D7|-ZZ;Kbjp^pb>?$Vx`6R#~3!p7Ct^46Cek=tZW#GMo!3 zj;lZlW6avcnDvlK1yCXk>tzg~b1spgN#1t~a%ibc&K{RNRZh$~ql_gk;s~oCh}g}Q zn_=w~I^|-!GNdFf?i2$ll-%T$NGz#tppzk)nMA~AOP>vD$wt-|@8ty?rkQDujI%sI zbrRu(1)SDkQc>JXC`?^hl-4wDjaIV4FxH?<#eVQ;0!?kHYm0TJaF8`sQ(>5iQz-hp zlI5%&wKLF|mFniKpdu@+<n1-J=n@QsB(n)?5-|^80ymqU6g;Q%35t5Tt|i>1Yg<T> zIM3uVg^5`dzWd{u{eCR*vyz5XR1V~2yRI*GyY>DU^|~C2S99`JXqGOX@(&QQOQN5S zABDu~vdc(Z74PeUaP?eRr9V)`zmHeVrJI3NaG)2@`t`*jy=Tw7jQiCSxXcr~+7ms% zg*BhA(7BQFF(~P*61qV0qOcCMA_av*WAnuCzqsRn|7U+fdwk2+`$y)S(N)Xy&pzib z{`xQZ>UV!kh>_=wKu&7c;cj|<^Xe7f`)bSI{`>zxN}1=omM^;<+iuIh`%iBev|>Mw zM5CA!)EKJ9%E6x#F-tgzG2$JM-lKA+wn{q9vU<}=zUSjC7owCEZQF4;9yy&y)OjX( zg-#k(_K-Ozlu;{)N@<IaiKHS`;~2t(8cv`y)+)xs5#4o|1c&>F66gfShkJ;D90NYf z>P@9gR$B5RwD{~(TrvV==V}Y88KpT-o{-X-J&=?swy|<BCso!Vtj?o3l!LoiI+c~l zSPYRcd$F_55!=W}J{BRX(L#<|z1B(eN+`*Qm}XITYb73hZ8hT@*>1NS_K$0!jtfdV zMGOwBC0Q<nB$GmI3q28@-|k3ZzI6IUm!g#T)4R4I#0jOPi?@|DJzZTFPQ79d9%8^% zmghHHyr0QBGta{3=r<jYhXdNcJWGMB>xPsR-@JOqZntCG7{+m6v#B{A0)8H(0jVtz z3J?d{c8d>z-OU}7pBUZ^eEG!}sDd!wZUu|06!dM)Fwabr#>YrPb39M9O-D{A{5YeG z^oH}~S8HD1_c9%6Dnf`jTdfU{F{Q!tl2n&SC5m?{O+c}Arie=6Dg<iL=IG0_uP<kv z{isJ)JsrbeEIZ}Y%ommNBCmfxH)Gj#FDOi<WJ+zc;rZP&nz~tUm<!)?d7p7jQxm_m z()zuykM#5tOacYDIO`HxXF<P`&?c|SdAYQP(rrqyP6#!qG6v=3@HZ-BU6TCq%q6cK zBbZrjNIIdT5>ZRa<fK;$Ry3J826RyP2sX+gJk2vPQp9h<#`dYaDAPnT(iLkXw5rM( z+R9N^7Hu`IG9|BEQq+_&B;`2Ii5L=f)fS?hBL>M@hE%>jksR_mk~2yYh^!F|tN?dX z(HltUgtMB;$Syl1Sr3%tS*#VS%ftRbxW&fM)-`?Kt=#Lhq8MWt7Y4?0<lX&&agZPi zT@?JPOhD3=3tYW7KUeBIDCzm)A%9{iQ{O(qejgPp>z49eo)r|NqeiU?lP8(w>wfDZ zYDphNBju<3hfi2jJ|&9#q@^wM;n(ZQg+xeaRVtr~*5s>9bW7q#w|D%H|Lo6seEo_! zC-%d@>*JX@!C(LKSIjA3jH7WaUw{1#wrM!V#G8jl+@|L*fAuTooY?dm_QxZxs_;k@ z@X-gR1U`Cs9knk0WH=vB_z-YaT_#vz&19&mn)w{${K%?|vJG<x;<MI<V~JLdF=CYX zu4BBg*|oYF&m(%15EC&gd;q6w<`CJRMy$5ti#{LL!*a>KMw#_{X!5>vMw+ND;ZC_Y zJp34OwZVJQ(}?g&65SS}TLy9Y<cn)4l?$FJ<TPP)fT=CX3k1bj5evG;ate|GAAlGl zuB{k@SVyx~xB{?JDV4Q@S))7`Yg@<{qT=~HqFzX9*)X1I+Fo=yMzStu?`hlZs!*4) z^i1U(^E?zKea##^bzO^wL4h@v&8CvVt(Az%P`DU4pU*sd_Kager*?h2+8A$cggbvY z9M<}?KODHbz2)I>plxBE0@Em>v=|ewU%#Pk>mt&vP$)w1>(tjdyP}6rrz3sem$ON+ z*=(7nk-8Fp`s3pxm9u4h9)QGV(=$yIT1UolVB6n83j>3QucJgxdoNRjaUAKoj(PSN zQ$%&vh*deHE75AE@7opPvx>h<cfO48S2xc4E59pf)`#QwTxRp{Q?;(T6vefj?E_`b zlk8@$64@kYw_&r{hzMgP!s+#GFaFZ&3q>qh>BhK%i)B4@<={;vd%D=jND?w)6V@zU zob2r9Aa*j9r08p`L?0?qIXZ2DO4Q=Td%g(H7Vl>)3icdx0brQ5XlW3Cx{1Z(Eo1Op z>|+bM(uX8F?YJm46KH|h)U~B?0>9{+icQzD-8N_gSzkQV&RVpsn4`uAkB^CZ(_yO` zj6tPDUCTiwhfproCADe-9Ac+2*3s5Y>Hg#)woc=mp|bK-Hd!$xy}qtZ)1Z|c%nSXf zt}7W|mN?5?{H!4f`77nX;c(*BtJe}?sbwXxOpDfWY09gxM?Fz>d^(nN>3Xj(rx#57 zx2x1YD1<RR4JuT5oe`-^6xRpzx9g8{y?lOzIe)!Yd4C`OU9qlDKM(Z*2<Lso4P``Y zid`yXh0+x&1#Aj@?`FsU^k4lGHVF>H#L0W!JUmcucFgB9pWoi{`0KCnKJxCcr@OfY zYdMdB?d>zZe*2b?2D-M#8b`IMISvDjt@-Bd1Cs{j3_eAg&aNqfVV>8ik=TfgL?;J| z!dpO8S{d0tmdle5o~m-Z{pJl-E%dIw>$rcnm+r;Lx^G!om?G@znwHbyB&5M8AuY;k zLWJNwaOS3OgqT+BwK0iWJ){9+Ek238DitBGR!TG)YOycM>nGNxh|;pQ$^{-J!6dm% zqsnWyOkT9cF2c~F(9X+&ZmnGUqo8hciXuh}kjf>as%uPvn}m=sHqo>VL-Ax=YYVg| zu9jXA+{#oS_`usY?|621!@K(jl&PueO2}}=kfMJNaFkXxxwDQCMq-la*}9Pss2CG5 zPBcwJUDv#N{hAk_b)-owj1TuGZf`A{ZO3^yVXS=Khr^-xw54$nsFr1aI6xzh%{b2V zop9qr41x^PmKfo2e`J~+ec>Q11w8~|2FSP@$&9aSnnpV46f5dVl<b?n=k43Kv|UHj zwx|?|g=V^>*WKSg(DxnIRVXcMMZsh@@;>~;JWp)5TOJ<|YpP{ew<S?jF%1Js3vDw5 zVcS1tyvPM}Vel`jmsQZ7pRNP#$D<#Cj~t}xswGe>jh3f3g{)SgQoh1#E=7L3*-$t2 z`hn)FZe6b=sdV|qDI@=s%Z>9&&8$R1Di1|2_)nDzF>UdUmyGnH_7!irKwz9wOn$~z zt^7Nq1g)x!6!GNAO8DklmuONYF_t-NvdNgJWNel$dtPT0+C(8uSzT;lW&E2p(->B; zhLGn3V9_>)U02h$6`Q7J(>b<X%Wk`&>uN&soTsyN1j-1ROKbM;&b+;Uz}N;;H5gYD zb3kj^1F95IDdMats6|bMk#65M=seTZhSrG(HbnUv)>czDmewjr9-kC8W|9&&Lf7x` zeq<U?SgoilM_X6amHenGho94hp${l!IiE-Nhhy2BmuclyeBi<wSVk|`P^4Tgb38%5 zzZapJmtFG53%SaCL?!>UXsRm~!fF#!OTyg8)$t!I%1?EqmuZ6{f9vJsQx}jAMRECC zd623IU?CIq@;sG`TY}HJhX3v#{sX?y26Y}tIrHXlq}|>y$HbRkevhW@dHKbcOfj*0 z`GUIZI3CXIAKr2M{3T&d+`M?kVVami;Nh_6;dtWz{`KGTw-1l(p55Um&o~}&)mAQS z>LP@bQS${Q8Z|{gSqj@#kVVQ8Ce(I9;qpEdue7JCYR1!4ve~6Ean4~YnQVFQMYI`Z zXKl15qEX6_lj1Z6V8WU#j+|6H{L0AGOQqH3=tGoWXIYUg*0LBPAqfFn2#e_|0Z!iU zDiT@-)JsT5c?PPo4~`{Px@#m7bP)sQ9EC{NwH)>*TwUSM=VB+V@IH_LA0jtRgFc=J zg}<(f>Ux<LEH=xG!u!PeJo5b69p_;pWX<<?Tl_pSPJyO&>m<q;wO$malSG;>5wQEy ziMnerO6YP;(-2c+EI}wChIK^WwkO`*zvb@kmWPK&=6S*tu6YQdgwOPxPXle+($=-4 zy9F7G@Ar?iZBJEI#U>{gnk9<YT1PIIl4+V~+m`+QfxBnVFnV5#vr;0UhRiSw)Rnk0 z`c2O~dqKC>RXHD&u<P4~aheH-6RFS=B?QKnNt{e7rg@^SG*xApCb<ZCKcSStxthxL z4Cg`qUL(+<;N!|#aModnPbQCPC2!_+624qCZGI1iA;tItepx|NIbL>@R}dOXCb7Qu z(sD_jy2MHfj&;)uHI5uXJ*DMHanB!#l}u$k8<$v*q6}vZW)YxMfyWrI%V@Ny)^o9T zEU+0{EN<s<!cmFZ++16z^plIrGOCwmLH75hxn6^6w1%qWCp#x7!p2$JT1MPCMf@B& zt8smhD;;pg(l(ZDUvsmq*)%nMTeImb+rFdkT9nb8#)!m^i+|H7&3T@AJREpD9C6)q zTvem2fe>+(qjQ#4MRZcsTB8dMCd+X~WfWcAvgzAG!n4fNOv;JM8tTT-n2g3SC&M9l zW<Q{fqTO`7di#cyCTdsH))j42Q!UJF4O5I|<S1TxZ4JXoJoy(YU|jVYA7q?Aolmdb zjpExo+BM<rQ={vgKM=g7bh%7k|3h`9#(&>G{^{)V<$`;`oT?Hb{AnorcPrcV)hcS~ z6!})TjFj+*aE>z>BIp>oagIOvgFobVHXFXI8~*xNzvS_JA{j-}8mB~vd2@5i+rx== zyTvHO{p)wkA)=k*{;=nCJo5SHUozUvZ{FM!lwm&we)-KC`t2Pt2wCjzZX=k?-~~#g z<*Zp0zn9C6jLE0TV~i95Q|v{H!rTXmw|x8d0nk`u(OOeAHGZBXozT_PZ3_xfx=%B8 zRdJe6Xe%^0;|wHCm^@@S3;}C0wUabPV|2+?7p1vU!i5MW6>^;p1?iryK{e^hCZx-F zUBwcRRfJTkfS`QwL2F~s)-s=l0(|LLWN1tY=cL#ftC5YPjC&_9ghy0FDFev3--pQU z?G3M9zb0iVJYk_qE{#_qBuW==v9`il$Ki0`e7-@eL|a#!PA9syc_QG_<uYMFOC|sS zAOJ~3K~#S@o$33IP$+02M4}Q$kN3iM-|r9DVhc2dInebjzx?HIxV^ohZELZ&X-iX5 z9(TJfpg0~+vfgW3hT+VnYfCn}XBbX6R|`hAxNHOy8;X4|aCduyQWY@;+OFmB_`s&$ zt)Q$Bf?OyH(>{||Pra)==V8Q_8s#c08UwAVs%qWsFH?{O(6fAvy`KfP=3K!T=VGN) zO!LTYvng;QsVlnB_^zkcu9hjw2Puk$6SLSol>)mi<kb7)^ecK>5q3yIR{pSqe=j(4 zLBNVQPHyE!DJomhwylg=i@59}lviuE`6cvX>C&?#u@P}f#>v8QQBML#gy5F3O5*#( zq%RNIBC4`hQ9Hxrli0FyBKoPoS||Vp16h=zDw*OjW_9G}VkKa)KIvS#XSG@{oKZAZ z(^yScIqFKpa^6Rr);K4(x11^}ThTR+O;@qoRCH}cSJ$+yp=%tjGEB2@f|tuiDE#1a z4D3%MQ;gKkf+<3>9BGWBwVGZVw6avCH!x1Hhbn_rhQ4#$>{^;iVkd`D#`(r*tVvj> zB(NoF!eQh*jZ|$T=|ra^l~uG&#kOzRZ8{;?l?cHY%Gf>SH8|mLIIh{y*QCJwUQx_f zEcnZ4{aPIM@h$Ro?$G6Sd!f5&t_$mh6Ms?7m*2m#q^mXNjVE67i#qk=UB6ZWYLdO_ zGCjC%;qyl=a33q~AG<_cClS7{#9tWL+30m@kqWb+PnkdZ+0XgK=by7J;HCZXK(pB} z4kKUv_{aRkzxxYpRrB`UBX8fl<@a8E#{ctg{w<$<{w3oyahyh6-&60l{QBKn-W`uT z4g>o+@MeF&bvsN|^UXKErt5_dKAZ=(+iuOehKw$n4O1@Beb<%o=qw%Z0^=Yv`5Cn4 zGz{V@N#(3EGD6o{M55YSy1vJ`ns@j2%=654yX9D5Dw!bU#adL&K9v2p)-rWVMdTPm zA*d-*m?dXDU-sfTCvjm=u+m1aihYenJ1G#psFO{l@ji$yrwB5QE@S?bXq+RIKU-WP zVF>JYJBcujfu^mQrn6jTN<fQJikPFs*`kH>9>pUqdEqja-|e=tJHJLAXQ8D{DKL7^ zG|%+?meVkCf4}GZU%n(~;p&GdWB=3fz-F_NZqX>5lS@?&BCeh1nZ9c!yFCVu#{-{z z_L4Vm-paZyL_+p#`yOL7<8Wrv_YCJ#Ij4nW=Y14DfD+r?-Q6wDSx%2au%kE`hGFF4 z;hxQ=qiLM%y%92;HHHvos=6YC8KX4KX3P0}qG>wDB24T1UZxo35UHw)$Hzz7wkvCs zxK5WUXIIPQ5-C0ol4Ib#FKYx(RaGL6o&#X$x}KEEp9j%TXsycRK^MDQD1Luwz*35M zFA=T7Fg(d%dAb%a?xPE7<73@Je$v!jhiP1k<euhGF4nV4V%BmXJ6ElwGdW=6RVTmr z&o6R)N>N@yU9>K0J1r`3iHyuEXvUNbV^RA`bmEhMjdG4!Thi35!Z}6oGl~k0WZ>ph zc0p>vf$DW4u#7masdlFPJ*~i+jMXwJuxd$e(^Q4aTp8(r>dMl44_SQOP334CL)Ti` z%F)!8%7E1ZR`&A(gfOIpJnT6$VF}rQt<ct$?l(Y;)TXA^;534KRjRO;6Sh(`*3nii zb*-r@MQy?8M0eAz2TM)?R~eeN#gCa`3d}K4H7)zoQErje(zX>hHydtlHU&?q*0d)H zFNkQXIGxAhQ@);smlX+m4f@De?CSN>sV*YUZw)y4z{qyRN>JCk?!{Kd8Z~-_0lf0A zzXzOI7EtQbx$M_)n)O{}byd_q?x+7)VgL5A{D(m<>#ny5YhrN^*erPhE>8UMAN(PI z{IlQVCMT@PeEs-<YFZu+XTJEYAMo|-*WA2#!8Z?&oF|WQ9k0HAMZ3G<&GE=E&tNOE zwtTaH!<YnRJcPvK<T-gkdcJ-0mf9JNO62IVwOzk<Mr#?(7XP)iA_AR;QHol~Yqqwr zu6zv>%2dQSGXO3@(Y_4RdJry<nHVE=+t9WZ#yU=?1F?wJViYWCi~(!p<1p5ca>Ue% zw(mKg&V-n8wJrzrv}T-N_!Poz5IpZCU<D;b+PX?S>gC)MEVX<`T4x9u#!2XRF(tA# z*rs7VpCx5(7UHEsi(0;j)S9Mde;C+oZWt%Ar_DYTa$cfoTV@|bvr|?L(=;;-1J7>n z_~zAX>Z-z7LrfRk_HyB^>zWjWAJKI^nKxJ~ock2zncN=^ysTdoK#nwAbzS3qEX2%A zWgWAhFy$ia{ajcVig6l6i=(BVG)8f|>qs$(o~Wuh98cWb+|jnJTqHuI?|X*fB*ea| zVz=!XhJm*0n5K!F-3A{5r;`-Dej~KF<Kf87O^>S_&f0?dmd<?BZwi;7Vw@)Cd6vjq zKjXEcZQ3>JwQ1Xu|1Qk>x~iDwSqiVuWxY{Ws#=$Nwb=fIsy9uuh~&Z~>nCT6t=pE6 zmu1Bw0bJHNV!`Q(-7u7pm-J++xImjIHPrGgDN)}^u)6My)YD@xUx!wdF=SoUqEOA3 zLwi*w=ZkVVuU(lG(p(a1Oz~Ty63Q0RPbu`e6xRjXqE#xwIk93b`0!Lvv8qtmOtE+P zX{53>IvYu;D)ud9Ejjtpq^T7?BC6vHZBHv1#S6JK7uuU7n3=K*GghHf!TD*ZoFXSF zw6zoNx={;6Afj;OB!L;n;~AeKrm8_@QjUZG=MXs!o~#VEs$>u8Cn^O_fkwU-mDM!b z&{Q=|>!@l)U)MO}MEUPTq$88WNL32~?sPuktV3zb<R>2XClVHAD-LhpkrOmsOWV|R zos8bKh7cCoo~TkojKtu1-0#ayuRwp)MR2ne;;gQLLr+cT>hCbNej3Fp`~36?fA{4= zc_r%n;O{-%fM<0TSNf@4cTTVdB3&$1dCg1^XUBIH^uNpRsVfWJYIRHb;sUq==d=O- z@!$Ic{`-IQkI=_GjWN7>_m=wRmbZWNYrg-(A9Fko^fz11-ZN><Ts0gX9`RN)1<&C$ zaQFNrgAY8MNA~9dQ`f|#3U?u+u=pw9hl$-?2Wln-PcWBVfAoQ-Z+Lioz&f`MFRXJ! z?-_=XR(EJ4YoionL3BF&d?3VFiiu3=mTs}{8^&oQ&$HNxQl{-1PN&nV9$w-xo2F(C z6Ps<%Fq}b0>Z%cLcoCNRRHk~1H{0kn5NSz+ON($!6^dB!Smy{{LS}S<H)RDe3Pi;( zaGWCMQ(CdvZh80a9%F5xkmhp6QL?)w-R#AS=bVO-<M~L;0`N&>`8sm(wZ{}>hwW<m zuH&#j@bbkAUcG(;>WYm%P3(3Xw5r(e4?KJJyzuL5#&N(Ii3%O3sU$zTHGyr34UJJU z*i($Ck}wuy5YeJB#2ne~wq?@ji!(=xs#2PH9J#%{VVGu)r;`-jvN8}Htbl8l2~Sg3 z7?r7OTQ28@_QfsZI5Eu=ecy3wx9s<iD7B$&YRQ2w0!@`cTZz_f+m>;f<Wg8ygc#%k zQq?PLXmMGzO}nnb##t^~DJAB~7u>I`KvsvCvGo0h<538j&N)y50UO7W+BLL=z$x#) zUW0U07JbS6!(k14$&1DFiUq%j9aD;hJW)z%R`E%U>c=IuB4k<)zNEx5bD2!$6|=e| zvT3a(4X1LeRbvTVS$>X1)fY-6T?q2S2eAgE7|WO}GAGX*g<Tv|D8jmgQc(nQx(MV{ zUR9~m?I%(U<P-(1x~SSyWF9Aim$$!sJRv1w7N5S>24h@-zAXQ}d~OSp)s(nao^bE= zG7rwnPG83Jl{GZZlms*>1ZhpClbhLjnmG;=;~XSH)*5POu)=g@oMujE@qRAFL{y`i zt}^tMX4h71+m^noX}gN&&u;j^_desxFYb7DQ?cs|n{7+oI70LsPbY?PB=~^Q2ICy3 zIq>T7z}NQ&hLAZPPn?ejoG~<YD>ztduB>c<aUAe|md__8j^}}KoJlI9tiGZV=c~^7 zk~OZbD2Hp5uDX1`K1p&>>B)~J&~HH}>Z_2GCl`bDmuXG%BB!fy`;`%1<*QLVPaGQ` zL%Hg5amfqI_c|ZpBOUrjyL7(G*7j5<pqAj^a$(3?5lbF{%aLDv@df|OpZrtqP{iO# zRmHp0!0Y=xyStZ+Q($-djMM0Ovp?|maAbcxvbnvX-R?M@MOf<5{O#K}yg59wxe=E4 z-~&M^j>DO5(~^laT}|Co>;5$(Tz6l(*YPZgWhum!uxH9%IhL5v5M|P{2$5phr`L70 zo>wVLH+^$^!|8Npv)M5Y6DbN-H54(FJeOkaa+M=y8E234h|!ka?v~ll>-d`z%N!%1 z46dp%)|Ku!GtLv!9PlAA%z^V9I8UBwiVS1mJVxdSgO`NGaSFtwm{+ly{91hamSH&a z?AeX11#%>iB^v?7FpO;ao_Q8~;XI19Y&e~9l|w1mZ8r#(JYW##PVj-#c;@!mtvCnj zx)hG|BrstZCN`T5$I}sGb+J~7?kECPRg(+Hy(+7KoT7B|r8vu2Itt6A1Xk^KTddXu zAE{imcCjf&{5)}cdqap`CT20Q+icJ(6XQ(3k$BYIZo|XFJ=>j({9|btQWEQ9-Bh?r z?7L0l*lip9d}h<PY`4O(e>@y;wi41?x%7|Yi1#yEE83>Mn!^>F-!K+8K_n$v3HeC^ zxSFQMYAsv^VAHqa*eD`QXB|07UcC2#s&Z?-L0z|Wtpw48IIr)wauqSi*X^)Ba6BHF z=ZWXf@2D!bzFsR+el6%}oj_`}gsxKnDmh(s-RgqlylR|OzA(3!^s2NL^teE|<>wrp zgt<@x1Y+6m#Wf2(uf(pLB!)DFKnhV_z_Oc-S?p0hm%QK@AO#d2t&?=<I-~TG&z!`D z5X;+%f>4y0R7LG<d12(i^igaJkwj9NbhUdjCD27gKEj4~TH{JVm!d8p98*LK<S1Qt z&gfJQ`XcPJN~~ijfwIIL@iE}N5ZLB<mRsvEG5Ltf;K=AC!ZRN;!!U6kW|XN4Q(C;~ zmD6ln!^__C`L5&HuH(hsmb+ceuD7&Zg)xboM^YF$A0B!2<_+JxeaC6?OmkoyXGm}! zCJy7oF(@YO$i_)VG=a(r?$a0}K%N*#DWFv*g!#hW&Y5xcg!M8<QL^XNYrW(Q88lj% zOT_PWabMZ~x!`;+Ka>uj<dXM3@O>@v=%>5*TqZJ$m@{Qak(9y;Jz0gG#d)C?i}@M@ z`iYBhxnN}!F-t`5g#cf|epC7+UUn6o=8r4vmy1VEMURrip13|w3#39T9EsoFcKnM! z|EFx?#Od8T9uFsUw_(8W`S*Uv6cU@88@_q_j<4T6V4I$CDrspka^4^5`Wqfk6JNi( zCzOJ;KkT`GxF;e&jTF3SQdH#TcFP>*RTSnbOUw~v3|T22_D7tl3Ijc@7dGoGUEfLu zgHrfe#_iTtoKI&`3C~b^p<6<~*%X{<%V|HL5i!<<JgHW%x^bGSb@(z0B|+cqcziga zka2<}pJ^19oHX;~sVf2RWHiP(Ldt}sNLZpWge>_DD2LSzNm~+@5H%S~%EeBa3Ts|e zV}z8b>YCH(K-~y`A|?Uzq^u+_eiqHZJVl(TIUfg{b_~N<zOOTFQ?c80n9?Lvt|E8| zaygAB?p{3S{&COUvs-y4H0A6Sn9DGZw0(!RiksUTDQu^as_De8mlSahs04k}mepmZ z>l%y^c-A;htJNwOyP@pcBhxsoHn=5nIrx#gyR8TfW1wv-AQ0nR?8cF%b+lc@G>vP} zjyAS*^+Neuf@Yjk=p5N}Exu?enzmyYCJyHTZ6z9a_OkPK&aHt~ZC#;qrf-F#qK%Bf zwK6O4ODJ%Tc@hP@vj$>7<;30X4P8?c3q!yeyH1i~6kWnNPRx^7*D{H5956;c_hA?r z&Lc4-v=UL|b@Js!RJ@1{ue)_QA2pwJ0ADG83pd&1ORbjXs2qZyh@M<_qT-Id4s}US z4zs10FJA9uoRwfL`b)@%#8O0ZoJn!IB&p?GcH$YWb4gkXgecwq<Y#6-<AX2zdfBa4 zm7^}<5Wx#@e^H{YK?tR&TP<WaqgL|n8i}W`Aw23*L@rHe;ZLJ6%B-O)iyAs7iCJ9` zvOY!`FV3FXdm<vXN;#8aVwydN!@%RiiP<MKh8Q9$MXXM2I>*ar9iKmMcy?pyI?c^( z&CBO4ZJo$r<o@BvU;phr|Mow<;s5#%zvBP>|9;J{-#tnJA4X2Yz-bt`Kb$ztnX^xv zCy%xk>l{tn()Hbf>L>U>3W*#t8jZ@L{9Hyz-iHsw=a=sF6T=~OeIZ<mxm>6|u1`~+ z>~KE`aLG@H>=!M_fBstPW8L?%0>~@4=@Sr{Per4C<l|6FCc!clTY@>2Tp+Twq_Qrm zQ{rXi_#giC&)8VYI1QZr#1DS(LsV9L{>7IB1zu%_6c|&&wk?O#!09|tw=KW=<{Qpr zULPNM9M25F6LR8oI>`vJs@J43trShuuKE-2JxyB|TBRnZiwb+m70}j7p)cLX0yDaf z<ecYO64I>W@$r$(W>Z8|3Rjs`aXd{kW69ta*oj@^Wwq60B$iZV@RLyBcDoz)`$HKO zYay*gnbhT?v8ZbiDuom=)<~jaNs*J4l3IP~N~tpD4Mi_tFVWR2Y0b*Wx~e&!XPUM{ zDZ@C<t9~S>CGJ?nbrK?#I2?|A{`u!j|37PQ)?`<fp65Ml+S3^_6A7TEuIes!HA!(M zZ3k^#N!EpL^^^3seBqGqEQca2Stb>d+3c~Z8dFYZ*y9>}@vXhj$pp|WMYt<6Py-r3 zX70V#H@xrj_8rD(_QxJ=tcdNJntIg;TqY!}EAU}j&cu{F+9<Xc>t%H)&yddG9w~pW zpIy<lZ6;+Vrg6gN#J7YZ2X*EkDYJBaN+Akyz}QTaYZ``r5a3vb`naONT9=vsEp;v2 zi=uFOf88^T!x97q&~+W}-rca-Zm?G2tXaZXj4_mDN#Bnco4M}`$YzUD(6z^fV?Rfo z&ZF$2C@8b7&3m6CV^yB=$azy0<>GTMiXww}ip8BUj6Iv}Mj~+YnlYuYWTVdsaKkWV zpE}vi;qh}cYhKCB_Qn~$*7yBK9XIoRs+9T=`~6JyewJvZo<vpalh)^>ZrNq-pH3HD z2!Wu(Bax9DdXMc)DM3gAUzkf<qn<e9Q&!_AEq}%wJ16qGKun$~j5)hk)TMz$OlpBd z7^5-Pz$Cy640((!O#0DJc$Yn;SsyT~?e)26OU)!ZwM64B2knyy^UU#G2xMowxui2u zEy>|L#YBj?5}V-zNqn$vKXT|iqX!!z<2a&|rijoK6&EYVs*0>D=@gpU;hbjbM!x;_ zHUIwaf61?Zch96GJ9^WUTy59%!LS-5O<l?ZZ3}k8z^~uzc{sF`>uYRLh#;vEs6=56 zMwvWPn^4*?jh-+GY@==a9A1%$Nb?T(k<?u+Pm<yknR^;d&yygvSSnLG-!bbaR!p@p z&Y!*qddU}jO0N4Suj(IcN7LCV^i;vF&himHMvYtEjaexF0o?8BaS~#jQHo>?XoXK; zQP>!{a+-hn=YP&0K7T<m4Mdf=xPFE<25TL4S@Y`cTfX@EYhK^n^3eC(?slv;TcS36 z|K=@TE55(GVVDxSE=ktX_bo%V*_1`i;HRwS75}Z)mcAF?xV56>)yiOPLElUFv067w zep>3g*>|q;zIX0Mv@x`ON4;J%><)5i&-6bXXqslR6p7%-h@X8`GmO1hIGtG7Vvw)i zes{oFxVX3=CdHvW2<bAX*u@lyQ^M65z*0CufI`VZE9qnc3<*A>i%gw6BMw?)MdVf& zw8xIoPcr%yFD%ArhHj9Zc!-i0o&|I=#&t_3hC+yxbF$gx<t5HJ(G93bjF!V;&(+lh zS6ADmr~uGbF^+?z!3E)?OGI)(*N@_uk7*H?ee&GX)D>mnP)Nk-x~{pqx#jBWlD;1a zUW&DO4;;KlYem(RgcNcXyP|DdUOa!n(RS?jN6M<E>wC#@Hws%6q+vJ#bz-7vnuSHb z-|xA&xX9^_VsCr>`W2sj_9?eF_iR=*(=@Sr*kP<;wOZ4)N9wX-<s5C_6Q+@u*Ux#_ z-_!RkaT>Y0x?&iH1%RZK<Z5W6v(qTMzLeO>hHhMhoiYIyR{s<NG3yKj9~>wu@y+-B zm^u0*))rZ3aI(<EjPISYqe5H~`Pt8@n;|9k`+ZK|6G7>+{?6{3b9}Vr1Ck&`dXG}I zBvj=yEj&edo`Gr7Vnce=s^(8<BIbwoQAdCBh=?MSlh1hhGlj4q@?;Et%4Sy>8QbQd zl@w)vP7JwV$h%g_dCN*xdHswQIKkvSHaL{Y!ju?^<G|V(qU9_vT`!=SQ|^^o{HQ9c z-%Z{ls`K@4hRw{Y0j;IlO^Lk2Qp<&|Q1~c*Q)99}Hj02JL>ObDodRPFG&a+=#z`U_ zy~mQUN>gY<nLo#IO#Ihhz2)EjAAiT+{pv04WJp#~SC(y4akcYonwC{9`y%frj4Sb~ zV8XGzxMKb6IRVAp!#!Q!Nu;8YOL7Vlmf)vI*AMuV=>0@D^mFSi-wK_JvN>c!#YZjt zTo8d;0$b7ycV}MX<ZSiGG6gzCot}tvOFlbu@p!(kPVYnD&sp;MIg}}GS^`miNDm)> zk3~&=U~=#@tmQ-DEh;?@NM7t0VHV**n4fE)QJR1C*MG(T_=kT8$30iq&*;O1U9I@V zuYb$M#Wi7=P)YM&|KFeUZnvkKCTv*|(1h%xP73ZH_PqS`bMAHr9v<GJG`O-P`jb6t z%KJq@amp^cZfcU2k)<=TXY9H`SPoU4GrgyLk)3duT1!l*%KKM8$@|;3y?|7dqy$3B z@RO0Q>+^^_uv#^Ye#&ffyKvBpqF}$<F-;>^>nn*joyDtlN#FI@{65;k2}#cTWx`mm z8nm$tVPeV&k=o{tyK8en5-AIzK!%(|2e3bO8Pl3F(l%l;!$PcGvJTj8*7WT_Oo=fk zxg{mmxOLM&ioAaPnwKwMayYic2z}o%PKuW=pAn;HyIpaAzvuFzAu=(vvOm6l_AF0H zB&WTqYCw|Ybbjs*#{)%ab4r^8qg-EHNzviN?|nQTNI6eFrF<T%?3*8koEt8v>v8O< zE64FDI*)D~ajsbG%;IA|aB*>okBQA@vlPZN^=*#lefI2%<MBY(wfy)eU-GM8{!-|e zw#-WSg7VUFcXPvw7cZy_Vat;O&#$g%+ZOLVx3{-qiz6`%QdlJfRjjnil)QLGfmF-0 zIr%BWVyb15H2<6>D90L#(lYsB>9ohuXGOfp0WXr+#{5jAu;_S#PlRN|iZ}Y)2!15m z`D`_3L$)&*b(T|g?t49pt6Wmlv?l31@{1o+&#OoCeu;<^!Bot<#&C9^%@<zG7rN{s z#Ye7kFpE{-bfPc`s{)0Qf7U8{`jR0f14(u}f+ZD%qtbH7NrWK_*V%`-?Co+UAu%Rm z5W!v?1~yf}wsIo;Bgn&>0kvw`U?jBCk^rYpJm<NW*URYm?CY{n%TCBqHOEV)M3^Fj z4-!C;z=w!6mXx&E*?gcKN0KqDHf!p-WSS-{9)m`ONQ$!G*H-+}zx?)w|Mma;&-}+< zyrWMQ9*v5MzJp!Y^Y&q+E-g(dqL-p9*la5<whhh}*x2Jod11$Cz!^=~_wryn0TfN6 zr|U%zFono*81ZM1h%qKlBhr&jo3oU?C&ICXcdQ;|5iCCOC+Jk3vJ+GWhlKP&PW+jy z{S=m(r%Y+_eP<PYjt71$R7oEksee$lenzcZ2zE~bT^@zRs8ek5!gH8GOj>0{K(>OW zgiaC))Fk-pZ@%F#zx;|zYdIc{gb33V`PDCfjc!)_?%j=q7}=8JUWAOF{^&=%di#!J z+tCjr$!O}j<df$wB`R|qsfvR2#fIH(mnm<a%gamN-aimi<ZwJNjDzG-7sc}Z@-Y&| zk!hT`yxiuouz+Z^H57CAVax&-vCh7ixn4JQevcwWC1chQChEFm>^((U5=o4Hq^Qc1 z)o(eJeTLQ)xo{9|$ZAzH4g=#fp;TnOS+m<6GU_;jR$|G_R56s;&YX35WGV`I?*nC- zMSWGt@pz!Fn_R@tfR?zNJK7|C95IC@DOoiZrD2)^Dx~F^nF|ZDk6$879pfahmFNRE zH}_m$U*dgawTiS|%jMM;KY28fyIWC`Yh$>7I7se!QL@>r==zSUD;ZTkJlt}5d5Kce zDc;@R^8ESrqG6bYgfT>tpGU`ni}rrX7OoO&W$$m4p>PguMQ^k_9$426uCR=GPrW}J z^8UM{$%xmoEZOh(k`R}Rvy{(oLg2?=e#N)nen;CLX;y3Y`#sOEpK*D4N!zw;HX9ke zcU>06X)Z6bN`4qlg`}RbtaEDGKv~vjoD0o<zvJ@q3ZHdC(<GA<YmI0d@;iS5(THGf zc4-LWSM05AD-pEA<a5xItTKWZroqgQ2PlkPv^(c#%{h!}>D-^DrR(&8;o|!apGEDS z7E4lG>|KxJQD-BWjD03ANkwx`^1KU})us#0OUhWuBv+BrDoPtEw5L!LweyrVP#2N9 zOcW*n6Df<$d<YCvV3_>!1=U%Bd=4ZDK0pFz3p6rznTCm>pO_}GC50$saGxM52_ISZ z=J~@IBaCUK#G7u#mu`&CN_;Y;fJLA(7cWmm4}J=aqi4z&y3f0`kQwSeB@xLD13@L4 z&5CBzuv*n@)(xwwX4BMcR^r!9Du7PBy?fx_{`>!%|M<&S9CS^KB3X^c;Bicp^s%7z zj$<fjQ^i2Tp-bHFTiUK;vs%$qB~?{Y7CCLn7+mQn>nhvS6w@f2FT)K003ZNKL_t(9 zb%=7{&spdyPcl^Y9M8{($|ILK%Upk8D?SHmJT4Z`;0w$5_N3~RcO@<g_xA*JSudi~ zd;jUwt)Gwd6F*3`{?Q$KJf#n+4_e_K6BZYUjMAAGo<EdXiVZ#EOmlr%CMbuAKmF0? z{HwqDE55k6peZZLiw&_X7^33c-GMhZ_n5M#9V2&lJ2sbBRI4>_@9t^4o{NjEh>xP| zzMoxParf>WtE!+X97aJ|I;=5#@%a~w<4B5$sw!!Zd%Pd1o0_t$@Ik!UZ8z|++f!6x z8*|P{T3hg0gW;E4gY)7ogg{kQynFYK?RHDd`^&N}Wo#b=*rD@SyQ*uB?U7Z}EK1>N z64m&Ae<VeD=Tn4f^bEtms;TIXN2XDPeb!2{)-+Cw=U513*%n2jS*_%q%?EfQ+tU<_ z1!~MGg>_v~SRqX=ocrjBDP|0;lGsii8OKg6W?Ex2ufiFNA3Q@R7FVqeH#c`|R%_u> zSc_GL?r@}X6{U4tZdO!<!C6aHHLO+}w6;7v?6Jo1;>8QJ7KMACecFe^k$xO#niY3< zH&j)@=bwL$QesP+rU_SATv6m`*4&|vqfAEQOnj8A@Nqh&mNlye=Paw$N*WMrIUb~Q zF6%7DGiCt~8Dnxc&2nF~t;DJB_j|tm_FG7iFMss8WTKC9N#Eb!Q&sg6cUl(3f}WjX z;MjKp3bKaPdLwWjTTs`HG+HsTYAS*sB}^;RMrWd(&c9X&Vd?yxvp8odielNFcU>nd z*pzU_QW!_&N(qRH61!`3A>z!Wake}grRzM!orAz0-<c;0>*FRse^4-#KC(4TAM*sK zk9H@IkeV^#!-)6edw;ld?|RJMbP3@M!fDru$_8rZsfs{dLQ_Fq8VW14HXkFc5A6Gq zyJN@wv18v3wBy9!BV&*t2Z<0p?Y51v88d0{K4xz#xUyokxgcpnKY7N?R9>hv>Xa8R z*0$4+CVOj5re)1PM`Z%hDQBD04qh2R6H;WHMn>=Pd8a;wNXRjbNfIBJd_qMitYzw3 z+IEjlk-AXSPO)7(nzh4Jj>8c6cmL@h_<w%>JzXpqqb6Y%3!je>k0NSE&`uP*NY1=- z1$DDxyWL7Y{4}ttE1F7x3{_RJUae@FO5henv2@^*_mUy3-isN@7q@zRA)h~cAAAng zk}CE1(L7Udo^|QxWWuK`8QB`0tZOGuI_Pxjpv4v$A3=vc9Io<%6?Az5Am7K73&o^P z|D2R2&-_nSbQV~p*>N&!3v$5gykxK;^3~N9|I6S054@-fOpLT$k9GyG9(J@SOi?op zk(;|cu`G$D<F0MF?>qKgOHr2G-rQ1I%ZsZkE-yBG|N48%su0z7j0|1N=byZ!Djdh% z1INPw>ntHmOuomJhHmHxDbcnA{V)+DVhb}yVurJLs3?lX{y5t*jgbkHGCJp3d+EMM z*@w=;p{A)B$APM<8OMqBcFlhOK+`n1TzJM9DU73Udk6`o4JMPwY*FU1eSx1w3hM}y zphd@V$U#Fgp>bBiKDvI$K$?tMP0$`&34sYwM$5=WJdGpH8Jsl~g_ScwA)>6Lu$iGA zLga8bV2s5Tj_vjWVq)Di)TM(MsH=)`^rV;=2hTW6_z*ExEdZISYWVrjf62wg1=a}* z;?0{ktk(^7Q}X=z75y;q?&clMs$zS!Md^sKhS3LnfN4rOkjBt<J;N}uz1YyUGL}!- z6Yq0c-8@0qtXASE2@z|IXe^XPDa&qmpgkTbon;z&nyR9oMr>JdXnTB2thXDE$K!%j zRZ8X0sp5ESm*Pr9aTUAWp5yVzYPF&)3PKQsu5p%EuipsHTM1;SX)2mr<c*W3J$6iE z;9<9;?K+OfBP3|*8s`c^NXyEmuEg@|oFgExnW`#rMlu3)g3`Lv>QgCnN;G9fj5)~5 z%jBsn%RGgUrm`x_<@`Gyk2xOuWL;C4j(W05KR$P4GIUD9G|rfRGZT@PztrQz3N<U= z=b^JcvEB7d`_gKW5Y7JV^J7>mz3fGd798nQK@j;1ArFX*ip*j?gVK(aMWQO?GB2$J zp*SmhzriQ&_8m9(dv5Lz?2kSD6!G~|^cjLO`H(MniCvY_LE%G^iW|jh-LT%SS+8mg z2^A-*LS9OhFJqH0bfZOiYm9X1&ZtbsvRES{d22K_gAPur_cO@uZ1>Aw3m-&b8qxUd zFsO4^G(|WJ6K`&I?2iNWdV|t%+}}g+G==8#XBA()XeeyNN5y~s$5;Gs|L(u={cXV0 zkd#9u>9SL{m>4S$ZDFl+6b38-l>);saNO@W9CldiSZ^;FMh`J@d9h`+k_$eC#57FO z4Jjp=@zZp6&nnJ<YYS**xoDSp_Z(L6Sec=objR=6z-FiRIT4AI7$lvcX3v;5@7v#& zzY(>xI!hl^xtdGAXZQWl%Uqq_F_nwF-&YWyptw4Z=+sFcpi*|F%sJc&ogx>;@vr~o zzu@a<m)Nn#k0Yy#3+{FYye;_t-7TwT%hbyxXfTRje)~O}7uUSq-D8VFAV@Ls?D7Jo z75nzc6g+)aBk%SPpc1?L2ll%ig)7*%J$2Jaz)18=encD1@o*44a#3Kc%AR7mq`Iz^ z_ad)4LXcf=T{mZfH`!5+c^o<9Y=W{Zb8?j^?3=m~Kf7~;7%0jDZH(wXGSzDu{4%y* zZ8jw4^-;jNte)<qW4(HI$-B4jM0gvcpr?(>&=!w&!YCj5ff(j9Fl9!&c#^B4pzC{_ zHLN#{*l=T7fGkxh-fuZS4Bm?xf4@IU@u5TmG*j_nh>tD-@_u)wbA}*F`?4(Px|Ypm zMM{Cg;ka~~RVfA3v6XT3db4J|-Y`v3gj-X<PZLE|uwFIX-94~b3!A;~jxwdI3T|(2 zByp^1sH<X$%dX0r;3M7#>bjEX(<B^tVHU_4(6s}~Xxg@08287vW3_6Q5%%1P)^*L{ zaFjrpOxBbrXSrOfs^a$UR&+K>v1-=%5ZLdJY`5!0<6^Cq6_qgy{j{oNtrJ5ahLBwq z=Fzz^C;b^?Giq7H)Ye$0X<Qrt^FDo!U(K+H{PoC%5;K~&WXi(M$%iHENq->RDaG(; zO?SSoJKy;$r7+I8e{&jls)eb}Q?>j2i)e`FmwL{Fefsm}&S*Xitu_>{q_8E{xP_0b z&?gmiw){lzMUZB|nM7d|g@w{ZsuJqbQaeNCG)6~~O7x@R+qZlE;kR%2?%j^t!$do2 z`biOjC={pQ8G>B$K8YnGB)Ql_ih`Mp6WT^DFV<XaRwxbQ&_ndB%7QW{znPq{W@ZJw z(O4}3DW$U%#$dIU%Q0IrjFG(!TAf`Sko3t@9JBs=rca>-@*e@~#6KI8;?VWHySwK& z!Sl~P<>K-Zrwvwlwq@dvzkJRoS2a3K+&%RC@Bh~?_zypS%cx62-p|hY;3oU)ZPp2B z<RMbgqX?8n^K84}i?2TA>#x7$`tpi(y&)#(x+5>1T~L-K&J_5;(|0{xKQj8j{@974 zQ=3QK^?595N~dlU-cLDulDl%+C!roCrp@+qH9HU<*$&icysyrFy=>o6PoDWx=6QzU z%<qMoJ7)gLsML^Vk>?4qtn;ricjfAA7xwh?Q~CEgB_F1o>XikX>9O@sr^E{Q7k~3N z{K=O;f?<%=mnj&d;%0x~Km6U_Q*SSMb9>K}60dJ=**<&5!?9&|JaB9eY&UBu4z?RM zmm3}qJCczp!LjWarjdkVz23^j;5{)V>Pl3|<1j2J*1E1TdO4z1qFEQX(%>f%ZN(Tw z6qOXghs9SvC#=Po82TYgW#wyfJREV>VyujneIDZ)WjO5jY%jJF6jQi7j!h_K82X-+ z<b5qFi*b&^IS%`sj9P;iOzHl}_4Nz(`vYSRdI2zbx39FKa2Bm}?&9N8oP`icAueLL zW-X*T8CP4@t5x=KYx-fNu4=+GQdV-g&s>6Ol-%vADj2iMJSO3Etk)}i@ZuUsc~YpX z#G}T@IE<`T6<WjS$0c{5>m=i17&=})zht*N5PW3lM=rMO3<pX~d6GJL&wABRILp{~ zTy9pVZ1*aP5<dmHw&mH?71KCiT*ean07^4XBPb{fx2)KdmhN*LCn?+p$+RfTnxb$F zLr-0nq$vLFCdaP&X=1%@azbXx2;iQgEE%VX^=8BN@<M2vG3F2;gRzQnnkefki=##N zV{*<%RX9rLWHjz1T{7kO$vSau#3cHxxmz~#^Nf;UAZr<>kq`q_T@zxU?RrdhJ`|Op z(WfxU<VY!@1Lif8kKqw*U8^U>{=9C?tEKr}IB#s`M)9P6Pfz&L>TGv-5~Y)7cbXDA z($eW9mAjeKKJ%o2KOMP}1uN-BAqI4qyHrcck(TBRFRN7&YMaWK#+;gDjme62m5FqU zUDxs3-@W7YUCWddXiJe`j1eD4+$5=N%Ep|Lo-oEOHmVR#S@E;#we3504-dp~;Bu8I zMCkng2c2T>*k$DIjLtEP`ca2IQ|D$eMmqN(>lyMR8Q$~W*cd}hJ|itfNHR{79CT;# zdz*_b&t6>Pv|;58g=zTmvgGCER-zB5#CNZ5`TL)L$Dj(PIFD^5m?q_m$IR1(!cZ2D zsw`L)mh0_`&!1oO#b?jiT&*Am+I^2#iqAfK!QI1KoRh5T5aGtl9(}!8a~STJyhmx9 zeYvO4Tce07J&GnhrTV4wc);1OuqZV2*{J?8?eMYFV!ooKGn++u@iYNAM;&vbGMyq| z=PZKs2p5}vpsj5I>zoy=r~LF&68h8Rw@3eco|m5DQUIR<ZzRssDkxIon;(72U;XTl zn2xRZkDXy02D-ZguW#P5-d+-cAx!MMj;Ip*-Htb}U-89PU(&29j)xshUDMPRH@CNf z4Q?79vS3VU!+O0UMOhimVxnp2WGridKF|$4(>P$Aqdn|dtt*r+Nl6ZDt#$SVtHu41 zh`8)i7Lr%aJIML=CR_GGio!I1_DuG#+H!MqgErE64O5>FW9e}Fepr&(tTkZLVz-JR zQMeKxM(!VWl56f9H@ENP_f1JATDj16)}d9z`-s(sJ_B!jZbr(oSOTzuj6<`&F)p#3 z(vfMpuEiKlSxBCDT~(4)mJ-%Fj>i^PNq1V+B|ZcW#{--7M%3y?<-BuAMw5UQI38PG zyu79#dwhtD-lMc(=m%V(h$?b%v1Y&Ti9Yghf6w+}i_wY{0$tk?L*)McfzLjDj!H5? z8OM=&)hza}{r*6EY-uW&k+br?)s38=Y1V~kmEVC`h#XNmWX6Xm-0S8!+wF$FZMoQ9 zaDRWFRrQ*7=-I5-#Dq*Lv}O0O<HtY#iZ^fG^6vJImoJ}-O>$LpIJBgg&{@da{!RpQ zO;b}8nzlVI<jWMJaQK5~nnqUZ6@HvRB{u6dHi<sM<!4eE4bI8L$Op0aQZSAa!!XGA zVrube%7H`)TNvtCNr9Qf)j^(M8>1KDojhaeeU`=9WN=25pW9<+ZIJ|4{qRNL$*-Qy z80e@EbQd2N3e6$!KAY`*4q*rx;~Mg@sq?7I&KILfSgTL?%d7?uQUh}AdUnSiA2m@~ zJTL^$;5~zn3{#>TBf|(jXhJY}FT11QK_!h!niMrLIra}dcei`Gwnr&VRj+Vm1;*uq zgM~t5tzP!%)|%|g6`GI~AesH1;|6EJUVMZYeQe9pTH{Qy?BNQl<)MoqPZ=~?7ku)` zCtN?fqOKel>zWtWm%O;XWK}sxfn)FaFTZ}pyM2dGhNv6~Az#HjnTdvlEM!c!3lgwI z@B{tvfxDa6+<o_3`ggC<!yczcnp#Gw$74%XS2Rs62eK37<*}6!yi}U%@z^|HmP%!S z3Nb&ZiN~UM^>M|fI<0L^m!X=^j%8Rbzqfj1lzS?4I|m}Yr+b?zU}tLmMB;26|6z+; zN>753;vy87rwET|jmy40Wi|tk+#?J7F`cM<AQnjz5|>rY|NKAwb4-X-wghFFqNbe^ z5A8^^y=3%>@4ow<&1QqoopRrGeDeoC;raCyHYL_|!<S!t!R_rG8ckELxW9d%saIS- zd(QRsbF6i|dGl5ZV3YX-(}*8OQt&7u>!u=1BSUwjaE7KXv4T3oSrJ)nHd|ukB!0~K z)<foShY%Ka|EzePgFb8)q#0wRNidq{&!3C%>v$x1pOd*J8Lt<G#A@aP(K$!kb&}ea z5axSkh|eDB1w$LWU{Po4UA}BcF~^aLf7m*CPfb?SPordb7llO|v53y0Qu6<C%QNnr z!8wD{v-nuiww+i3oupG1g=O+1Wmzl)v00pKtjbdfMOoGi{UoadTTm1dqH;JK(OR4Z z3G&Wa0-|>J_mqX$5Jdnd>2Wh4$cMo57tfbYTi`2!w(T=Iwq(e@>=;5;ou5`=))qOM zHe1yWdzz*ZKuiz-jlgIm26eMuWtWndh9|`3>#B|7@@h-lwyal;IF&+x+(B1`2zkTg zv0B!G4|n(6-QKgiKd`PhBHU{l%Bqy<P3b7}8o@b>pFI2Bk*@7!iZZ7KihYWzk_0%d zSV*EoS(VgPwdlx(L3s5S7hAFa#Xwm)VhlNrjm0N#ta&7oU05bh#_kIb<*W(#piu7j zd1@Cy+^pP9PfbG~ztB_O_ste0;kt)~_BMIpxXT6aGpaUXv?QJtR#Q5A8ecDP8X2GV zKF|*nAt`*yqNCZ4r@$u}w+~)1dKkT^$79lHZAFljN5I-Ryca-#HI8+&V!Pe&?D~qT zsdFHVT1LNCgPXf_qbQug8M9pW`dlQZPE&}vvJ%1I$pSbZ;6|S)c7+wr{5VZ?qsJ%B zzMF7WBZrtululw=H%-aaW`%R&?R|B7;2*!cp%0SehB7E?CAZngA>s;4T@^Hy6@gu8 zc)l)pxh?r*Tk*wp!%sfB;E%q1!5{wUIY0Z+H5D!W-7Bs(4Yzmq+}zxdNUWL_Rb8`h zk0K_@ob3-ibhC|7I$<f#NONWY%h+%}6m<H)Gp5d-z2za-CqZ4l<Y%GT>0&=w5$B{o ztxp%|qv%!Ca@U?9If_TTH}x@c-AQC87xJ0t?(8yugmp+yi-OaXK%gimQJm3A1XRZI zw}0`Myxd$+Xie7-?AsAjZFsvoVCn`_R#bIEQIx!U_m0cUORk??^XVrqF-G&<x4-3h z*kiQjaBSHhkCaVAKTP-_d+zmm!(o5q{_cUgs%ff56y%eqEJZL`m$jspgvh$7X{w6C zx!lQ&3$MGX>O5kPxyzJ8Q}&rBA)?NSXyZ6?I2_Q%uwJj1FIJ55?1(T<NMtbYAw^j~ zzkl9O3wdl9`aE)mi>qghQ=l8<Lc6)S$zxDi3~8e>$xvr*dCV7ym%`gQ5x^lt%d!+D zbO<9_r|j8|dHgKTUQsx<n{|eYM2gai=Ad+WdMHqx*(Kr%C*dI>WX5@!El&v_CdzWA zq{+|U@AnjCP1{O@sxcO{X7Yg)p>2CM+bxq9R=HfpaS;}xpdSZzhXXMw-rl^!2MHt* zvELj|y2rT^g;{VTt|+L=l5rezQ6w>=QzipWep;C2>-BnhCydclRhj?&Do<(!2nKOk zV?v^?E2eQ^yIB#YiN5W)++HwrJyluJ)D=x#6GOlnOIehJ$usml!!V+a1XgLIsp@js zqkAuC<hrUc#xM-yk~k@=vOv>Rxd^jj8CGD8c?74asto3Gj_!C|kh*FSOiQ7JQaQO! zKf=H+_Qj`Qst*X%&znK}-=f@AXNPJ!8w-e)BR<A-E{Ef3cRY_@1>P_0?vw=Wnv$@f zQ%)5#T0|n!;Yt;2w33TH2MCbFXFg4VehNAGAm<rtxfJG*l&B2a8e&!rr`i9T^#Iyx zl$U}f_=&o{V7n@TiB(gwS=Tg9aR@DGnwEqyo!11`N<fRV24@t`C>d#MovZS*&F&(2 z$ZF;!tB2XzmUNDjO`4b@DoJ%}i;`nMF&=k39DAO>_=MG}!iR~%BnqQg)g|k7gF;yL zZ+9)fyFU`O%f&-Fxg1nLC$JbwZMa@nJlm99t!tjGE1s=OUThnlU#+>gs3{7AbHd3V zM!36esgt9w8-D$p-!e>*x?T~J=JxIZlv%U^F)PYdu4<!_xK%mm1UY=(exK4#^FBH6 zm9=^tZTkKLua_?ULnt|!hQueKtdEhdi<K&8V#}qkPk}~Cok?iUG;kj*Xmb&)B{bvr zk?GDW?$f^P2~s!Bq(+r(fdUx%<mws!{h$9Op&!sO(fPpU;u*hv^%mtS4*kI2{oQ}! z`Lip2_RTjKt0^l<raF!z-@W=B#!0akQ{orD{xvT?|BQ!Y%gx<AtIY<b46k0jp`S*s zF0Yup7pF+JgqCH=;do#Q6QwN(Ddwa?jY*L)jF6;5R!K(Q5_U03R)RjcA&fChlc#AK zx_$uiF4WlU{k4pvsGyyb(X(iu5+TZ=+B6OK_Yb)<c6k?TSg#xUNj%CS1{s})z_IN} z3HHY$DF&LV5=x`hkOIc)CDE*~M)0@BWH?P&_WN3CSudCgWz<<nQ^+ZD4G#}{jM3S; zCG^VD7Foq#V)TJwkQB6W>?ul%%7s8tSjKVW#f#@04!_PGeGy#MwWQHWp+F|ZNrp$) zbvP#@^JiBVIWko+r%FNP41L#eb$LnKc65WB!_zd0g4{X!VUVwP@NCu>Y}Q-8`|bC# zipb4ENCIQ2>v~ynTwY$%c5SA}Y1(5)RaHw~`LhhfIUEicEtueDwW94>;S*GX@^;Q~ zcXv;{TGP}u?fyX99+z0u!a1(4t~egsyspt)U0ve6&y01A_kphKX;zhx3XhV_zFx1{ z?{_Fgj#$+gQ)JQRD65CMqU(E5c|Si3S7Ri2NnKm#*jGUvYn-bHlV8H3%DSYx-=U3U zDo7ql%Jxoj&PmE7I<;^(PIJce-i3ait*(Eta+jw<qW7(APr(_Fop7h_)Mvl?<mH8) zrcu11(?sxILMdW^C_l!02pj8ATG+Ton=HPPPc^0!!As3!-fT6H@tyoyDb8URNzjUd zdJ!(1mV94p6jh<Qyl8lKwPCd?NpT`3FG)Zq@1<uZyp_(}WJSE4!(Zn0K~8ZyS2YS` zXXfFvz#Ps+4@t$GmL#f6S2c`5@#^M|vRU!PS6{Nq;SE+Rs<M#W-?GLl$6<u;-tE~B zfutRz4B$y3xH4o=Nk~*EHqLTYI$o?SFV==n*P2han&+!T<3?ODfg7=v=lMm!=j(zp zj9gz{fHu5&^OpUw<zau|&~|chFO!F}ar4tXGG|P8HOmD*yf0VjBTV$AOXmr6=0kt4 zmahApsi2;si=Pw&r%~d(hDyu0{P!iitFus`(=<ju`u*nd^LbIRU~o@-yydUxMUAaO z#45#~|M5SgaV388bRiN7$IbD8t5@{n#G&ojY_@#%+2=feevP$a&Dpgruim|b!V$FM z^7@*$cXw=_T``2nyZd{#S63))xV^ulA4e`PF4^r5+}_@0pof4q?(XmD#|e_ykeqdt zMJbWXwg7a_Hjpk+L~vv7kYa{^oW|pFVN3ehn8k2qSrC(Ss?JH?w7grg-mrOmxn8ds zGgw4+^aiaJ>+OcF7hiGAm;Yw7=CBuqzTiKDAYo^}wbm46x%|08)&|WTYuyNZWQLe5 zzh7o}7^5gkw{YyMvRrJI){0$EX-Q$5J<fI0V60xmgreG(v9EQO{Xr;et5pqI6BJ`u zAU!i7&4;i6TW04#;bea=T7xckm!2vIk#uc~Ha2^^?V>l@ZZ9&lN4`(vII`WWc=7Uz zV|&OJM3b#(qFy%|nnv^n)`$aPwwZbF^Qe8qWXIGzZnjn?9VsWCtupxypsY$rk!c(< zOF;sq9v&Vzwk;thTp?etaq5ZDqZDF$D@)evRc7GJ_scp_uus#-cDv17139B-O-EhV zizcdRs^$C2S%i31l_KEGO!@h}m{&crvmY48fu^ab>gp`pKo|(aFvz6CiPiHw143mz zkoqSCy84H0)BpebUz`PV-pd$1_$6jFcu({b!B2z?lbA<BF(moOW_)cd){4dJ+{cHC z3+-+(=f_iqTvBKI{gml;i%ef;u-1uBw5&=}3LK9IZtm{cA6j%#VTzi7Mq4L{$SmG- zR_87qY=%tC`}R3Bfu+be-`{5ONK%~tQP6q(XEaI~rU3W*7EHnCUwz5d^%aHFIIAcN zLs^w5<4{FIa1A$I<n4YSAk1o;^Ldv<wCt&G3d^Q)tO~=rG;9jPw$yBE!?x0tE}?Bg z*@P+;)S7y0`Rv7pm5Zd|$Y#AEDZ{tFd(HQ+UNcT%5y9zmC&lR=JR5_nM-ePa@gxoB zEU`>|fYi3EcvysOT0gm*)e~~u<9guZ6gVZ%+oKrPWr(kq5A_i?!{Q-Vr-?;+qytPJ z?AA~EgSeoGQ<{DJ3X_lv9mVx}!`EMY$?k5)-NT;!F!B1~f&1f;!|_0h5oa`i{LRn! z`m3)*mA-1|hLL0}w}%5$f}6Vs9u7yE&6an!cYOEiHD%M#tk)clN7_!1t^31KF1n(~ zAs8iH-)0v{!sT4(m@nCwq>xwIl9I{1>ueRuRxTM!tA)h4T%ftTRc9XEqL8k;E-U)( zn1!pNZ<(f%^?D@=@<~+ME+39%Su&2oe-O*mz<Mng^095ReNnVLWmOPCcFA7sXEQ+C z7>l-|8%fy~m9kAr)c$gb>t!6TbMbGNP#UFWjB6}ZmCK`Q4;Z>`V7uLrQlKnFpEG;; zLkJS5>IImy*=+Lqfkz;#l+uD~Eef~jTBbqLADwd&znU8;5p)UPJ^}mv!&zWS$<Plu zOI<PKk-Adg!$i{vbV@?9O!nMM%G%Y{B~$hX>>L;X03ZNKL_t)WTWcAI5v@c$KC=kq z`RQbeyJUtZK@8U=ei9dlvz8bGg>#^iXf(2Q*kqQ$FplgG2U%6kIrmCFChsxU5>phd zMQ-q1AuRu47&sn}dC#wNytWa0buKo$u3LhJ&e5=PX$!l49LH=)mfy4MgmW*SpTLMj z`y*>8`EZYDbYe3;+oPW)LOu#Y`%vWbKY5|QPuzU}zyE+9UoX4P)1@jSDY?L-p9o>f zNmeIOjL#o~pRyV@=BhL<=uDG$&q^gxROg|mBpex{GLO~;>KuuC_G3tzqzuh^g{?~N zcRTinmbM${$3QnhPzA19qm7g7xn=jQmOZ+)qI}o+GGFk6=OxnF<(85<Q$^1pp12et z5k=RJ+}u7e_{f)E|Ad#HeS$V}=*uo&#`CtUh^D}8u1Uojx4Pu=#b;m)r}$(A+Mu*W zXP<vnI;z4@m6ob>)MY_c7IGjO1ICebL2@OjFsMeeeco`jc09cKjuZmx?IrgQdmeTN zSx~1lHT$E$o`q;2tp3@Doz&w^wK_+{KF&e^efkYlIw{#7q2l5hghsvB<$w5MRUd&M zzyI-m^6D(UQ%mK467l7KKIhec;3Z9pN6!X1E8S#WM^hC1^*{SlHf4<;JPAY4hC@Hn z4<oz#2kOFcvDxtA`89{#j#saK$IZ<xzxvH@czt_E9}`I%e1eDj9miwKI0e?54OLZf z*dH*)uv)Jvih^+(nEZ&39<=PbQywdBFE@<SkiQ2Wl#t)Fkqcm&JVcGN#Ut^oF-kh8 zvq{w~sFhCkB%~7oQp#ieb8UuV%pIzrHih3U;W9Gq8ipZX?(*Zs#g_ekm%FN%AtjBZ zt>vj=SyddnPV%&K(qLIuVskPsPY@NZaA+%M%?tuLPXRlT?Ign07*SytrA2AUBUfm; zR)keWVJR!wqtD3DB9qakafWxv87RAENi6I8e(9u-$K#0u5aptXAuh?6bzO@mJ=_19 zrp}05xmXM57>7Z2?mki!@_F}thp`H!qF`R9fhmkxKa_PcG2pC3GRxlIQ`J?z;9Yh< zl*{w3wO-r-(<D=tswy!yuP5@FAcTNXFpVQc>4Y^u4)V3n%~0D9^n(}8)i5z;)%q}v zC}Wr6S}bu=xJY{1z{A6ivaIsOF5UPz_9w)3ey?Xu$UF(z9S%h1365DDOMTx9*aop_ zrtFtLwyj*?Sw|vMDJgVk``t{^Qy(b!Ke#gdp!)p-xXj0s&htYqeGvQge%!^mV(;_< zE{yja;<9kpIc2O*G31Q%gik_)n|#Uu8Oa!ztXp*!otZ!Rx#i83iOOSeqfM^74KZqB zGDM^sc16i*vnBY*?cD=yH{t{Ms2HcjI6*Q6wrW6I5uPa#J?Qz@H#u7M?DJkQu#b$@ zX^B{jXJ0pgNQlL47$)u>4t)RimWM;f7hitOkALz9l=(qcMC!6!#7N?0G?;45XFvTT z{^oE0IiGy?nb?Aoq`;*!F1^tPZS|tObxr~p%ED1thqjhv9mzUWQKE_xs)AG(*iFGF zpIi_}Nlm)Bz2|sr7hn3UYE-{>+@ntl^+&hk<4!$2DhSf=nJ1kq+R|AU9{-8T^YNv= z{0hG>lqH=$&dY?D1)55o(7&?~^E?Y(DgBXAzxrUZ+d`B|qUETK<-hy0KjV*o`ZXH4 zEVOaFefy4QSJxEI^2O($QkMm*s^I(Yf6Lwd9pgCh-K$qbrC4p(LI6bZ{Q5aQCTvj& z##Jfq?(Vp|yCtT?e!mlcZGM)mwRC;Q6oh|0)8<A$piDw(ImmsUx`{2Q5NvQ_8ISAp z$x8m5PuS#y%`TD@)9G?jiWK}J#I(jNtEw4vrOpmf5q}A4cHU!eHXEjCqVM`lu#}5c zM0A4`4%RVbIEarihug^eu8gKA1zh5+&C>!);T%;}=MJopVnN$wjdM;)n?tUwF#;p; z0iDOx&N&isNheE5RO(e-qcjV$);Wm`oyY4lagA&N9y1(eR_>3Z@XsF}?nNMG%~CK= z)5K~m-%FL96?0^=%2w2>su}x%X&9FzHuBVI7zV1U!spL1#c&F3in2!aJ}jcYl=ts* z5w}{+>1@&+Pvb=C3aX-9RP`!XafwLuViRndW@!fJ%X!tTF<RC>G3FITNc3ILIAnCK zDJWebRzD{e=V|h^8O)P1<Y>NpXRiN@^Pbmg#u`a|>w98~3wUUDv`8TU#@K}tS6A|! z#o(C+iKR7}UEwFO+NnH+dg@32n7d4VPF5ACY#C5bLaS6ts3@7`vl>+T!ys7BS+zVT zP^&YzNCKnm@-MZPa1pCD%7}d5%$6@>7jr#I6Otn2&2L1Lv>`;z<P}p;c%M5lB*-Pk zv|I{OT*;p;06sy%z7k1V4p^fL3R|F!LzxnENzx5T*CYyz6-BO!io>pB=p+3Y8OK2M zLYwPH&vEjkvVyWE8b?G_^d>9HXCAsSYT5V6&M=+W?=yr1Nne|D=O-_MzZeYT0QdI; zzxmw*@AjVSFMh&TfA9@1A38(dqf(@_mdaY{!eOl<<!tB8r=Ro1Pk)Sx6FQD)lZYmQ zPS}(%F=CR!8ka#in$jt1m#9^sG>K#t$tox`R0@g!g(B7^YE^J?RZ*3O*ROuZKmOw{ z*c}gGWXfQ)TVOUCC3=WQaH4nyDU$ECk1F@=f_Tv?E`D#(%Biy=Q7@zVrwMH;cMFeV zS)ZuhAG<RoJ!<KU&uDM&UF<47QPcmPTmK1{`MgM(0X!eGgFa1fI~SZfrTNpJe#2k< z^c%_qZF?YU#ppeM^!3lUC@WrGJ>$^ru~u<7JkX8<p>X`eZ+}D7nr6Kcv1xxq1y3T< z`;k{SZwW~(rYR;audb+@nh@oJc11zbhHexARauslm2lIC?np|Ka;0oRH%ziiA3de3 zh&~Y~IhaEjaZZWAEyZPW!5PC}3gX#5Y9Y$Ox7}_zv>nP=Mjz=%k5UpPJM;CObF!;V z0cR8{1&mR|=vi-8l(yiw>(I%dB9vCMUac6qk>ut1GsZGZft25K&_dYMxxI-VXF%(e zGrDD6Cf&PTbOg#cCNGq`nB@I%&e7DhjHL6q5mL@-Phy3NAyC)?XG@HB9QFrUeN+X3 zh>u>F0f0|A|2-ETt|)NE5=NozX`>}9Mk}VM=tj>ljf~SsOk#uc-m`8hN+(L}ejKTq znl6VpsTe7=WmT=jVwUv~NKhbJDGF<;>pD+h40ToIg3K&D4x_b<wGB+s3#vP#a_d!% zEri^5JhsH7<a5ar(6TTD6)5V4W82ZT9d%VuS0x0G9|j8Jh<?HuMdeDIwh*AOj#b^D zQG{WjYY*AEVClM%x?TaAah&qbU-SV@)5sb|S%zLxC})>Ij2^9^E}hu$V!)6nZ9(Nq zR;!gH4t4`EC@NQB5XaPJRZ<ler{vFLRi;*j2tJ}yLZ`<#_1QIbj*UJ4pZ#DI<da@V zedOOiPP;noOc!a~a#(4c69I@*Hg~Mj;cHC3=<RX=&dT^XI#ZB*=G5V5tf=_C1^KuH ztt=ZzxoDLsP^LiJ3gc?Da~R_!Y#?7W%-b?0DB0cqNEk<qg(M6DoHh6yE9#1xDH*IS z0Ygv|A>Y<>fD2lomBF0R%cL8Kc^)5$XRV$bXtO<8(f0#4$BuXRJEAW5(I5PjufO>Q zr4<i%?+AVrAdiy~xp+6pkc^a-nUaJ2_RX93RFbm}K_P2{Vy563LGKpUirB|$C=9A} zP+2JCP#`L(G|k1D&2~kKcT902Woi`RES!XxuXX+C*+^*yyQF1m@jfE{F=0l{al8LS zr+v<%74hh~|NO%tENV_bd$J~YuQE>R5y9^1pH!!ha~j@LtbU*<cqBlbcg!&@024*x zv*$1Qlb?RWx~x!>#O)TYq$n$lvmDx%aqQ{)17%@(b92Lwe)1E3_vS4g$$svKp1ZdX zlx4xIH?P@jE}4Ab#mkor!^q9e4OdrJIOlkGbHg}IZ0lwT=-6)8Xr<Uc+_T=S82v<9 zt{5gmK&)s}H_B)~?`@}PVjMkHvec_}_KnMmLiUo0$xllWGviiOCKDA!xxj$tX+cC{ zE$1}18HrltE`723SVI^FHrrM1V5emTW}T&JYDh`c&B%y!^pgme=1zABhOrq&GO^jL zvDPpQ6GmGS(}E6-(Jt!=?<3pohQo1>E1aNZvqqq8kCbJ@&HX)1Q!gW3Yh)Z<SW6d% zEG(X6=N^NAq>W4stZ__Him0v|xV+q;)oIsWR~2p7qOE1f-FnDaQ(*%LkACtaO|v4# zMB8@k_D4Sd`~?Khv29tcSGcl3k#O2@2!U1I2xlZ)*5-F+{(BMZIg~Y!JV_<-@lSym zr<{s5Qr9J<u;i)7yvG(+eo2gh(T@@)g`>#O9%t7A#3>7mail0y1FhXDV<QLdXbtO4 zL-cZScU`wka>jAu^71ls5_~SMChEEt@}<&w1&}x#4*Aa{g2&ZrwXE5uAh4R4B5m7a z^SyI>dyjKPX2(}JS5i7f3azZ8eON@*=MBJlX8O!DnRo0@n}+`e_{{m~7oUt(pNvY= zDf1+yh(YDOkHuQ~qFYl4RKZ$FNV8ddl5G*j7I|MTmXX=sCh!&sUr}1@H!<79mcQm` zOl>i)rl_{qa*MVNkrE#@qfhjsm(f}ZOlhJYTMmcak^?^a%!`kbJDeG$_>kzw$dELn zaRgg2Y0H#T>$Eu&IL!N{d76<|%Ta=82`Oe#hoYY%`_A+B;mB{^-t+B!$5d|k@gM&Q zU;p%HD6QB%+;Q056Q>cE{ku9_H=MJw%Xb=W6)|}3Z|^vEJqewoJI`8E<N>vctO)>{ zrwhhvl+`F_P=y6&!5VM|Ra$gmpwQT+q;ASwgr#MDE)U(=r43I+Zdm}P9?K{NMsqHf zJ4;{T!#0ld)U!u5fJ$fSZ|9!zkLW($8+~(TkJFEYedo}b^aI7D=L&bFK0bbbZ?7It zS^=FBrPBP(pZzH|1{f!ZiLxko`N>NW0ukwk9#3R_dBwM{U(<)c{qe{{d*tP3pK`z7 zQC1bMaQG-mhG@mb<;4Pi`Q(#N7{`(Oe9>$-n=A+w75a9&m9cz#TwE=}J}3xYMx6=S zP1~ZNs7f$e08?sy&fM~Kn8%XlEJ_y=(>P&`T`oXZShR+!E<i=5d_f6RMSR96mN1vP ztd`y6G)bU__nu?d$%UxF7LIDwaKC@Zuer{muo3I*qR5{0JTabxOT##2U5vzgHg%Jg z%L2@b8Lb*)q;Bd31v(CWM#0u16b@o9^V3M*cWk%YW%LV?s<0H+;>VG7(-4EC((Mli z%A(5qSSM6UqZr2tZ4Ew2ao;ozWm!?Uf~g<yV_0|z>(v_XCk}_B#NFmIceQFLi-NwN zu(qTd#0qGgWAx&&o(qs!%y=HwHOEOySdRzP;!-kNQxvijU!M1vGB#FL6J=ErlZ?(M zA27zUUTqos0i_a`7Z*aD>soo1LtxB>&zuXgYRU{g605O7(m%_(5|=}g^vg(M3L_8u zdz4X>Wwq?NXBGSW49)Me_dXXSo|~K73<{D7<uLT(b+^I}m<4w7+`xX<N*bt_?}K&4 z0=fE76L4~b*hNJ5bS$s6{vnt8`IvDge|<nGl+J8N=Z9^EiRiq`7OR4&)~zY9`HLX7 z1dFi_R3@(}xxkG!xs%h&MX$35Iz&k?^Eq=|rL%)K31fGPp21HXhmK?4a_Cyxp<|c^ z`k|xmTKcYI8pk{u6BR7l5OSJ(076WskxPn<KGIE*E@`@C=&^KY#*|6=>bw(^+fK%e z;zNu{#$f#z*|!sS`+?W@M}GC@j<@YZbN!NU{^T!s{^@6QL(lEajbLjhpI-<88#rgM z&WNzh7{OAOB5)gqk)a>+PS>C@C*a9qvyvr;&AxhL6vi2hvtTsQXp)^1Z1RWIg4!$< zb!oBsL~lRuy4B+C*12bokGl0!FvZ!eoYU6S6J`42R{r;=1D^yU@yr7E{&N2u=J2S~ z*LtbS&uMsbr7X*xw0y)LaIHTT#qk4TTXhC{%wHmt5?_7(IoqnDaRsGw)Xj>ru6cL+ zj-(T>UcaX8dwh(%yS>9!HJ2}5@SE?yCmO{se)B83X<!V3A>QwgRLu%&9ep>jdl2E+ z+naZSW9@soUdU+s!yauU#G~sv+V;TZ<poi}cD+F-O$;#fW5z*8tSe-tmc>%eS*$DY z5yo*^-m4G-$p^wX5hhPzWQsQfimI|8Mla&p=&@Eh%;3YKY@g|r)@2J=CcTMXX9k^! z{y-@yu9IRB%$);2LJXL~X5msI_>jfA@}sr|-5_fAw(Y3OnwXNX#>;ZaS4atlVa#0g zJT6axI;*#3U#kdF{@px^n$_-pobaOry<A>y7eR4Z2(vuoORTD@(}igyCUu_fgp7Q> z*lwxHQVJmj<1kU@qM|GttTpU*yCp>Bc<h*_fS+X7Z(Sid8eYhL{m`?jYNlbtC{0tZ zsjB*sebZSdT`Z^fdfrVJg`8Q*dz=;#T3HrLEbISA+ne@ScBNN(YmaBTLqyIbt2E1y z(6Ifp4IBMQaQ}h^3`p(<1h^r)8&a35N>xQ>Mn>G}jC=Bj_uc!R8;mTHQZ<1@GRe%0 zh#Tkb{SIqAi~cUfOo51DqC#xD*<$PmNC~`pb<fj=g*s=@v?s>I;Fty0TC{CVMWNBO zij0xJPuHRn0C(>LLiA|crUbm?l~7I$%;2Q;rTY2vBT`Ce+pgFg$*-S~5U|~DR;qTo zs}|=lFUyVBJjQfW7_G<bFEQWO(@%{b+hMS`@ao68mCfCzVu`$vFL9$qJSKC;tsztn z6w$m3&(^d|_+k-Nx(24`vg>44F32|;v)VneiaJr3j1=MBhycf*2L&<YU4rDQHl+xy zK)JTabTYYu3xI=Gh~j0nKnxC3j3kzm8X_vd)A(7-bWOa2KrBgdB=nn?gkg%9rifEN z<2+0_PZKVSL$%xE{Z~K3o44<<+io!Q1Kd17#0bO$Z4I=xsOttzW6)Lx)+p2!AzF1^ zK~xoz*68~YK9ImC#CW6rUnR)W-a1jou9#JyFK?kmxzLjqWEl(z(10)!U0p$fH5V~Q zQRc%jvK38ovY053QQnh_)iaa-Us`G2uD}2Gmd}T;EMEU~!%LtsyWrjWwL?$OJO23W zvX$4JZhU6%xULkQB^e6wgY9}g0G{u;)+oqzM}OPZQ*OEu0)O?Ve-4qIATeNZv=(wc z;PL4MZ4H#xNIoIBfKTT$c6WOW-l0W>Bo(5N7{&>wOOKEQ+O7p8UA#@xKxvEfWq@}S zQsEZ5NUS0C_4$0p)6)|+n-*=?a73xX<KZ)03^1l52)Uqm-)7VBg>KNa6|9kb0m&O7 z;8jSNV{fS-vxeLzi(AOTW=#RQ)Qx44)>Ks0nn&Y;!!v{gtfB_O#Xuf^Meoac(_oke zOv_02J0H<>9jyUk#I!7^j3JEy5|WP~Bs_I@P1oXZI&wOjra&sjNsrTnwrwyBBdop0 zG|lAqUK~8DuE`2z;M@XJ)lf<o{B3_(ieK7T;)~~ks%tx>nDBHsqVId$-QPnhV!6|E zLpax}Y0zILIOp*2@PH3reZVx0ba_oP7G8HWP0f%W;Cwmb-P;eS>jsz08A2pfwMA_$ zQVeA6>e^CRSwmU|U6J@rm>eQAauKzls%i)!F~ta5Tg=PEmN|pVnM91ydziW{wz;m` zP@qo)60a!7aiGZ!fWGfh*EO29M&Do1b~R?_3T~FDdlaYLG!+->WGzd=Ln#vM_5Hxf zX|`PM&dr!v>}jo~kRU@sOsT+toto%$e6Q8D#?#YN;WI!=EaS-Cb%a)#ph(4GjJ{al zz)fpP-;b$|E4=P4$KnO5+>gV=J_pZ4GQy`!$s!-%_x(Pk>ZXts4W$f?;e{?a%8JeU zDvyzQzb@DQWkCw}-2LL2ls_hpDouh-Qkg<VFcZ3PJe2T|aDeatJRky#tjJs?p^5*_ z3VJCNTZlAdRxJXAgcT&DiQZ#cJT8mJX^A*Ff#afZT!7;eaa;n<OT=joI7|T#{etff z1Ah1Uf`9q$jDP;^BYyeqBYykT<Lm{tZ{FkUKlyXqy?FzHi2i)Qa5=#(Gbv`RC4as# zFxH@J8gva+pjAc6UDH$$6&-@7^94Rcq-XhKH`X#Ppk%?{UQwx0L_kIe8Ie>%Qlj|h zp(UV!rn1l+*dSIp=4myU7HI{3;eshX>ydBO?>8BNw}iHzl3l)D$=s;zQO12QLzB`i zT|xYSee*}m-=FiFUj#Kh13KlxIfVd~65j6bP)mu0dDPRqU|bxeF?c$k5M@NS-C(=j zz=ep@`GRS7I1K|X<A|r@0Uy5k2HF^$`W`+3o81oDR5<rTfg(}2(W2`%Xxomn2n?*L zFpU$U_q-D{7{`%>o8H0H722+YHgu>8PU}i6o|Q@vR0O&6bvHOZ9|JufN+BW@_ej%{ z@JcXqU937%r4(Wynwk&-+9)dM1pz?>L^*G=)k{fY)?1@lNj{Wmnl&1AU6q}1#eQvD zS2T8)5~qH^;vL5oTaJcZIEOp3svj6fB8*W)rz@9Iwr6?oFizA-Dy_IXteFURJ-nxB zg0Y4vWg6o+7ZfRd+JQ)z47Q0eLP}C{PveZH>i|I)(dl@CF&6LMy@OH;(==fmM|}SL z8C$k74#R+P?D6j18)!|DqQfv;0bf#<JbR&t1{&CbVcD*i#awwrKMVsgJv6OXtTFW8 zII1*;tA$GnS)2}p6}Ie(&~Pq5YlZD@i<A<EVL)Xq7o(E9X@b|#>mV8KvatKWBQf2P zJmaZMO)|hIyDzlS{C%QSwQ(FEB(7HM7;t~TXWdR@H-f?Wa>40zF4*0C@rURkWWr|C zp{gh%SZfUdiQvPE`5p_bEb=<z_nj&020-H{{ga*v=EN7Um)GBs5CMtuhLTdPiUe^} zFpx_6nUG5`c}<chQbKZs-*v=Kaf34p=<+3fC2~c8iw1c`hdw8SF?<256fUJSykno~ z`uB3emylHLC(zz~_UW3JE;U4O@XL&49x+cd=GkGG7L4PJVRTqL5TF3npxJl0dwqwx zYY<aJe>p=VaZ(-A=(OaBNx&LXtJf7JswEK!<WN_Lbp=?9c%e~hU_UF3d#<^?g>jy8 z{OL{XdD*KZNlh0NAhcLn1rvk@0XH(QK1qZW*M!%V*Icf`WyLk)d|hyeYbsfZ9$g8= zo?Fwz_q^kxTp%wF>C-ALZuKL*=zUMukeKI}J+raJ+Jg53#m4i>`X!;<^AVd;fcF7f z2<Qa-{QXy`wSfo%(pUr`ptQ#Me8HtZ<LhsJhNt5JF$jEm{ETUu(d{?zDWKhSXg3>t z`|&%R4o8HTP&X~K1%{r09g%aeQzC29;vJ5kK0*qhYg^1YY$ZnQ@9!W)!hD`E3<K(l z1ZUGcV_qC$q8(&i)n(smE$sv6X+~XXC~4rGhfyZyPV(zbmR7|DVDOHL>83$U0p5A| zM3>q$O$@LhU$Hg@$Mc24Gkl;YB1I@=ik*v!0&=LFhyE%;lmczr!p#&;QyGhCoESB$ z=`7HSA~l)*mO1TGN=Tmi#TbjC-Lt>@bUb6X+aQI=@v0O*O3|b!uXla}dQY$2JUdMD z87T=gP0NJ0gnk%M*9~61zQg4*BC%y}<g+mE{pWdswH2zm!90!#A>nvD;=_mcsOlOM z+o@tq)Y(@xv?d#(6$u|cyvOl)z&uTutU+Z-&}b@yr>7^pdGiJ?E|`W9dP5;AO4IjV zYfTeEEfB{63tQfXiO{Z6NO<SawJrL7fZ$(e#O$&x*l%|jhQ6>qGAJjlM&Z*qmcXyd zT8JbNBi|vCrg<R-C@5%Sn8HUFbq0cMHyx?%gGct@xW%Kc+M?t~nsGYzg~6{CO_OM> zPx%Hy1ZE;Eka9v43G?hQ&kk+dPy${QMNvPE^EC@yX-Jv4Ac}ZN03=ryw{>%y|NFl} zD3@*z(e%70x=!Eo;VhM6p^Lovgsus1SasGY+3weiG?flLhsZ1TgcEL%4F2(1a#l9Q zrzGfri4rkN;>_pWyHFJ9A|>t3#T7S8;D|i-5J)VNSwe&hH1aQ&Jl?rGA2BQur>HT= z4SLz&f*R*k;gl*ILxoXoAvUkEdG{4w{p{zs|K=NP-oAxob?W7Oz;rpmxtYe(Qb8I+ zK`dIqXaOZ7i~_8svAeZ~l;>I#>CRd#&f|DIm7VbV0TDO1E=QZDE6P;>#nvS#KpsMo zcupDxXx_6Mg}QCnMwp(7(bHAzmTol~NyrlYnqKf)62twLG<Ta?Ca%FkYg9tc$6Obd zMftv}XrEoEH_1phA1r;j6~CI<e{eVcQYZdHzbC(0i3FI?R29B{_W_NrQCBrW0?wBK zDMb9@zyA~Q(A|Q5?6E`-j|kn=Xu1|pkB@}-6u@QZVe1OrW`nA3;6uXh?jAx&I4)vI z$xBLavR<{2O2P4Nce^2B)zjgLMy2vf?aCn)G1BCQ_R+os=6FwWsBP1h-L}@6linPS zgOw_m64?G%*HsZ)X-yNWynD_Lma4WSZqs@db<0ZjW#)^7_zc!)Oyda2er_oxcDpT_ zwqZpz6&wU<p`ebEuE?u6DJ7iusOqa2FL!wvvVsHxpe(MW!DR{=Df&&}w*x?3(d4b~ zdkSG;Zo<REXBcCdibm7VVHnZ29TdZ^hH=EEYl*yOE7kxd4C92Rp%le=nTXOE`7G6n zC!I7dud5oT6Q$gR;9-nH(^eE)YApIo5AQs6(7eMY!QhN(B=3CJZk`pa^h^<>AQpZ= zQ`bckVXYw_It1ovA^{y^b#u$1Sl6)r001BWNkl<ZN}+W9d-C^gUS@9ISWszXnc7H2 zDR#>;!&ao_vc^Dwrk^QhL8jtdftkZy61)dek{E^sRn@|n3R+jR-f#<2N|Z>+)-zdX zixqJLe1dlo(>NnVN_-s02~ST)EQ>F}IL6o&uqduHIO*n$dZ|laHzZPCli3RxB|Srf z<ijnATdYh%;*52!6jo4`7(+SJwNTJPUB}`qLdpm2buuc-D1XiA7M$(|wo6F`_O2!% z1q4qKs}$5C%bOssA{$Gx7Na27r*hE)2+19*;7ZvSL4y)xc}Sdl8$-qeTCQw~A`}74 z&fzl7xXcS2G<181YX2JD{ab8bzrp_PJM7-Rf!VYW)<9?h=N9xmWfKP%$qpxJ+?i3A zT2c}mi8d6u1z0`WSPN+ll2Q=X0F^;-9{q7(Wo|@FzC0u;E5UJv_COF1UNZp?N<vr# zp%s!5NCvc9R}wHZIe;~=m4+5Mxhw-`c>kEhO|Xe9xg=SRn6BP17LKInxZI3>6)#xB zGAJhJ4U6yh?nvq?^b{QN%1m`g+90i;<Kk-<*@h=>J|1pHUbuOVZx!<|!y(p{PyC+! zQxpQD7LqA+2`VOhc>NCd_pflCCiLFn<I@vdiulE^euZ|kLEW?kbNSof{RXnK2nzW2 z<0lBAQQHRnX@HwNn!1D46|6FF(+njO#<3?Zb=RP72yR5Nr4b=TO!EY#B|d!h9(7AN z)V}Xws|wmwXqpz={SJ$FWG&*AOh(4iWG%uk3%YiLg)y%4;<0!Nwa65)80f%uE<h^- zYg;Vri_dsbDJ1hX5^7tcYbhO$vKvT&Ow>13sD&{^AW|yU;$}!qBsilCl%zt#FSHVn zLQ#CHwbZ>k8k47(N_rOn4E=x|+uBMpWb~Yqt`VYxtqrs_tgneUp3X=@V4N4+zq;em zJq=EkR$QonX?%2;PxB00HAo<Fov{|D^9AEH;nn?XxW&P6MDwO=DW=uAQVg9=XEbeB zaH-=kpsp%N0FAZq!Q*&7Lr6*+I~<RMTonS=)*P%O(6${y$jDSi@LE#UKOT<=iL@TJ zvg{h5ubX05uj{ZFB8hvAM2epI{E{b&iMns2Ata5*C7)T9wMZdQN?vqjpG|^lx^F`1 zwy6Q64xh9p^E|Vam(umh>mUT#8j;YnbxBlQmYK)@vC!R8OvLa{0#BcxV08sRqN*Bf zHd|<3*EUTBDS+*E3#Bxc#X~DwLR#i&hI5|1=e|U+u2Ux^uLIUoyzEua#KPNH)@ybp zU4}w@QAPYcG?++i$`vIXV~zRD+3QAX7^x{2T~anL)<mrw{2?U*r>H?@5#3d^MALH$ zInk0Yj_5GE1+z;8safS{UsL7M%@49otxsUaZ?ce230;0IgrZP`)r*Koe?}<{W9;f; z*Ho|=2?ZcJ3M?4L5#u=FGW3|12`<be5{cx|oTm}XJR<r4qbt;P2dOPt_XIJmjZ!pz zl!~D}nqe*q+Gtcw17!__H6S{!LVrHvbh@x*JHLL+-%qiS`{?TrwB8Va7J~fgMuL5A zfKh;vNK(>dLy?e9C<R+-*nC?H$x=i1RhJl4vSU39EWO=uCwUbr78+bAu#Upcf2M{{ z*U9>7`jCpi@fJE0OF0)2>9yj5Hr=@A#1-#~s{;PHIIg7a<xrkXMU3f(cVHmk4aDv0 zA*MuAAs^^H;v*_)@Mk~&V}uwn$B0AU16q+EJy20g7}pBF{`J2=D0(ht?-3GES1snz z;q&7Gb=_ec7ku~e6Jm&X|Mnf+JVPsqx+VeI!^0=`V=HuBhuv<+kP<quA3i_e>FEjE z-3|g0+wC6XIO5^qGj&Ot@R?dEN-k5HzAm<g5&xV3Hc~1&$b~@DG(ZG`3*_VGA}=Mf zmFB}$YtAv?Lt86_6cUW0D9pfCBkvs&1QzFEjKwm0-0k-0$Du%q0!KdI-`&G49@8+Q zsVaC!jCArS)A!eVho-LRTuL-e>@R0Rv1%M>A{g0TioTeJ8#mI)wra|(6aK^cW< zo&cth^*wdLq<r^~TA*z!Y&H$*rp3okpP`jO-E_G01GH6`ml?w_V87pEnJB=d>sq$O zZA!*NN|9CN7CuBAk0)$48=5i(674Ce(GMf4x`xsQQYjps4y@+3`1tU!iVD>jd9S|A z3*0p0?*1Of(;4G5plNC}4H5hzf6dxZyetx6G<Dfp0p3$OovmslAt5!zv{F&%sEO06 z0Er}krmo=pf_WJrwSqMjuR1JF#}fm`Bq{S*eCQdGI}T&<>Sxw_;2e_Oev7KE%J(!x zk8v7ctzo8pfLmt%*;5LhkT{(#7{>{Yz3wSRoG)jD=pbZ5Rkh@LV%2@N4QARNO$s9i z4TUl_%xmIYysV)!YnQ=K63YG9q5SnnDxHgv655#J2NkP)aak1aEYHu~d|Jh|CMG)x zK%~h3PH4&ek;Z8*=|RsD;ET%oI?jwpD=7Z0aOrxn=Tt7mQ2!7}O$x}eqgIM`Xq3{X zimINlfx7r)iA>~fqV$Y0(1PexxniuU3Z}9}JSaJ4R&snRi9ZP8YK$&x2%!x`WvE!P z3c@HP7x4J-8K=vIKkvMXKnVpAtBdO@O1!4e3CSVjyss2lAjd^lzSylbgqmCxNZ_n{ zvBCuZD9hK2OCH?Bp8h`md%9wfR^4;_9&$Dp0ACu1$AWfTPkZo!{SB)EB;D@VU)Y7M z-+b%Txs(zy3$j*&12PaPjqUaQJvN(;1T`^Xv)N%;Xzc_D>~?qP`vDK1AJKMOynFW^ z&UtiQ2UAr@O5)gG@b>+C_!zKwhwXj`p%qU31;6|DJM4CQN^c8+Ip`YO-40SpoX=-; z-3Ht34k6IqeYfAk7>n(eeZvrFstUW!j_f{x<}*raOv4Djc(}#UxYs*Aya+p+-=~77 z6Dq6MB_Jem<Y|?fN}x;5NY9AbJaDttU|HsJQ2}I=THJ#DeuuvA87z`YjBD3*tnwB& ztE0AQI5Ygfx*)<rFY`hvZc>#M7o9;ga?j69Wh*Spgk@P!*H!skGuWhUTbfAlR4_(@ z_6);-x~4IG-89(kc1S7VbUc@R{?pTecd!b>(4*^GfW6em;}iD#9r^W*#&)}bQj)_( z$o{9b#_4#%{r#&_wAOXQ?0DkH&-08;*J7C_ynFiwDMma!Jr+xsH5RASnf%ji!K>;D z(=_99xv;`JLJCsJr%1~4d0BYcF;jt4*M;l8wrOQwcTS4StblBTZW^NCWs#jR8hwAk z{rx>Imorj~{5(uV`eS>dF&aV&_!tZ8UTcMAo^d!F2p3#iXrs}z4H5w79YPFn!6AwS zp#(OY4%SvUpD&0p;_2xL!#Ln{I^pfxx7h8roWM7hvmw*!NV^ih$g5a41}`N@zC@t> zgI((B8E!MCR5~ajNths{T#ZLlN$-*X!D+-gSTcW-sRTSo4oophP-H0gPcZ@Gyzn<& zeDSkOnX~>3xpzY=6IaMcexapOWe;*4(PITP;k}fQ3_GAPywb7|uJRs8Wsknrs0=CB z+opjrx`=Lww#UVf$_Y(G!?M;;fI(HEstmN2uv$YHjbt=n3}ET!I4=0@Z@<N5oGFb6 z0wG<eBITk<0x{5zFs*jhx$7>8G-4%?Q?iKClLT~SN(>=Z{QB#6GyN;d!{?;8m!o}O zsujqlm%D!X>^Tr6ZENj6e_4zoI38C#C%+b`4ZSIG^Fzw(Me~wRy?ne9-m@A>GDR!$ z=cgfIrN+;{{svZ?lGps{;ek@Z_$zDL22aN`l(DGm7Kg(LA0Hlw$Td%RJUk%@;OXfJ z<22DOG$s7{H~)gi!vU{fzrkj^L)&%`LZNLtbX~{3T@wDhd-oo7-Joq-+}+*7nhIKJ zTrNFg1pk>0lvI>kusF_KP_U+^0XVb7vk0oHYDle%ZSm^uUXK)MCu%DLV`)c9g177U zCP!69?z(MdvE6Q9tuC>b)>67xh#uAu+zOEn_$;<_Zl<(2k<c_2ZC7C&dURdKe}~1w zIqdYlAkt)rz~OkI5w(<9cx{pAJnOxAN)h+3?w~cLx;f{t*=%q)TnfWIll1bARcnKq zlfE7v9<beR5kll20h%+;O{Gy)RP>)uM;Jq$W=a8dZP7HA1z2>s48sHgiT!R5sVFwp z`v4^sHr)pEIN@}7!Z=(ojRW4je+wZf@0>ErWjPatAeDClXj-A@%vz@zf;A#ih{8}0 zA#%u#g=8Ol_T6U@VvgV?^}pgNTtZtnXqy&^ZDLAEb_<Mn_3DnA4c1V^5D3^MY26w4 zz2Sq0TZQGM5Yb;QMDt4t!8^o2Tm(u}BLVn4PZVymENI#ei=zzrVHn`NLqGPEoXKa{ z`FtiAQhnu%NY;dT?+e~ITQYMH&vO*)i_OehF!u-R)1TuqMIIX{BE~&4&x@E=KKHoF zrA{|SCMjvhs})cg1*-+D5>R})x{xr=3tUV$D(aW5O|b+<JQpL~R7iobt^Bq4Kow?M zQLonOXktB6$J$gDRuQ%}Cnx2IN^4B{Ia@A_QK*b2X0#;lYf6zqR;=bji7x$|NL1Ap zO<nWlUJ>ohS_o~Bw1hAk<Kqec@DKkDlM77T1Mjp}yWfJQO^8uE(@W%WcD}&n>Id)E z1pqCeD*|+2#WTO{vKhSd`+Q)}ZC>lXSiD@7W_QDvy7ly;2TeRrUcCzJZhpB6nR!+* zyu@<<l11&MH{OekcV0iyghXC1vzYK|x5poS^D{J6joo&Or>7@$+YP~Yjlu42kIOJ( z@gA3cz~`qY%x>Y%DPnO8UcG(|0Jy)uFZ<fOHri~q2r=T<zy38^9^vN$RS1dQZjV3x z(?7#J&zPnOzxkKn6dRk8iqMvdF7joZkwU`QQ%<+!eDi#nkMmR@G39II$pi_-$Y~N+ zOa-}mJ+#v0*K}!y@*a^=!WxShB3nNd7Ym^T7E#*P)lNqMkpQU#nzn{_3)-ee+t%1^ zJDg4jXiW!ij!yN?Q}M1fLL#`1_krGHA<;;d+4EW}BqX#QsrD0SeUSx%IlP7n9KCv7 z1bf>pE2^oJtZEXIC5CZj(i$a{<tawwvqwO&{mNMKM_X%A*A)rKI2-=s$4^j3W11(L zKuY>LrI6U~w#+Ukky&0x<eZC~NEZ`mTrbJ~7Cf!Zl-8s+PrQRBWE$!m&l^!lX;KQb zO#=bC_(?mV%O#hCZ5)4YcE$M@NX16C-ELqjLr7dH(00tm_knlWw9A*0MRKg!(s~7x z5wd72kbvMllvL>27G2Z8C=Kr%`e7)x&bqEiub{|EM;?7@Fsw0nb$1WMh<T#ayUJRg zywaUO<M<T}D__(x-awIZ(VNMAd9PkR_aCd;{XsxY8D&P=->?NKk7d^M8zICsPy7WA zcSft`2tOesluXcC(3)3XJG8||^pispITh@si~SnKxmHl$hz@vXm$9?CN|sW<#{f|T zYNCvx<+Efq%9gf;Qbej=s_q)@%A2Y}T~+0x&!hMp*OxefOEV78TDrh1YdDUP_fT5V z{!mFq;wmJm0BwLM@T-6P1^)3Le@P(}LKM(PN@6u)q&?e}<R*#|9ukQ8f+i$jL1$(L zK~e%j3kV}Q^ZnUX9^-8{%{%G*EFj&6m8_AnVg+C!7J~TR7{C0xxK-H-yd+qQS4$gi z$5{FEOq{S5aJ9I7d2JwGBs%?6pZZO4nGJt26|tNW5`X-&pQElS41G@>y4IMM1wMwN z^;n#Tu@zj17{(C+0&m{DB@IQ0==&ZiC4Bqsx46H*$Nl{)v~7o1uV3TUt5*<0VSo3E zKqljeb5FQXYYn#B4#(pGpFVxUFbvr3ci3*X96?%PzuVz%x2JThX~Hs2*l%~t+Lq9^ zB4x3l$k4v;%Y_OM&NRjZ=K}E}RxFC_R}V2DdJ@GNP4Ax=J+x8Wy>qN+OgE@mS@I%S zu*aQzj1gViLMg?9Sb74gii&62NfWWGZ5!CiaEI!lxqzsw#XK)GvYr<-O^c>&%d?YJ z(D^KAni}IUAozfW#cMfIl?ZM%zaC4ufY(AO=SlRIyVv{sJ%(YTONX5~*;$as*cle& zokLw2Ec1xEA`)RlfK)&d^x9Zk!MWw8u~}vZ=cxnjHXSNXr5neQ6ywfu3L2^DwbBSa zuu!hTFpiXmp%j{`E)m?6M9Hf6%9be$WP&b&L0NJdymtk2O{)rClP1E==0eVU56Kzr z#*iq^Igia|i)C3b@tSB}77mdD2k6ji+B6Mau#&oHnSja|)V9Jjj+_!F(9~35hY)Z+ zpD9a$g@m5pkMp#^Egr94zlJfkT=FpnTrRW%%6G_@P|@+(g}#Q-<YIY!289s*0G)cm zv*axltRrGVWh|7`1agU@z&-?SZ-BDL;;v30LW%^f5?Qzu@8D&E5~Q4tDPfowT*jGj zuIc-`hlKFVDwI|9*Xcq+u7>jXllCSgqVWY}AvvKA31#P*V^y`*CAQI8U8=5}5p1m~ zBX-R@^SqzV#J!BrwS|dKzc*KLn*SS(^oh?NCCFZu09XxCRTv%)_}l;MKjHJ|Gq{kw zdh%I$4yJYGBIagCENE;fuf$z;4rEc8ysF?O2&KtyKygDG6h9iw@{^(mo?VEzN%p$+ zq(3k45?jzntAPS|xPI-lX2|iWFKpWj$NvxgkAQ&S3qAS(5rNnHJN)rCKO<Bqj|e@B z%94=S?sf<<V44Sb@9=nd!rS*B;JwHBa=|e4XxbJ{+u-fnw|MjB4VtFK`Fz1N&lsl( z|NQG;Vwi}gw%Kf83_V{TKD@`<w{H<66$Ny#%5vGn5ct1)oK7dqGueQY5U5xiBDE@G z@=*NQzU<DIWucIg#dADxBE`29%mj~RM4K<Id73Z|1B}+FEp>m<)8~Vf=s;#IOW;JX z{JhY?T{C2b_OT*S<SJ5x(W+#br<BlkWV@?vg}(3c_RTA7x0}L?zYGJ5VTnja`)Df4 z=XorvHxgn+o-mMqJ9m!9;}I1{i_*oOxgLUnHIxvU3kYkga(PQ3FwYCaT_yk$revPa z@ZO`Xsr$`MQj7u0&}uK|mk&daP1}~8Z$FIa`w<~gxYX}{_Z?+cgoxL#Ul-WUvMlJw z5s(UsJ7*;&nwnri!#H9XM@$pZ<MIVY_-coFahT_&<cWLd>HM<>GyfTa!g%(B+cL?? z+2(h<J!)&=or6{a!7sF~G!@(uFpo1S?dztjE2t=p1wgeXwMC{%&hw0+@8K6m-&3u5 zH%|XA0l2@vgAfAe)1^#u@|;-+g=v~O%fwJ)q$HFvkXmB#9@9KyagKCa-xL3`rI_!B z^*#3dGG7-3f0*$*&ohe{o)0D@z?zCK^tAqvS2c3B701=yTa?QZ<%iZxoa6CHLPCfU z<Ki$af#_sHyeJ}AV?&WB&MvodYj1L9B&QT<4;3T4U#|O8LA?~M+etyL6nP<yCeet= zInd9ObNCyx-jyZpNY(1XZmJ4RRl{mh5L;{6(jYlknppUy<Ks>pDM3~h!tC&0{_nrX z-~Qcy#_ai;CC1{-&^z1x0z$DYk;N@uS0vfycq5wQJ$nJtNC>UUYjPW3CVmoe?WbJo z>+f^Q7vlHqY!c5T?Kc{W7ncD7zXu`{@jv39b#{BURvV$9g}|Tv$)7?=g=LycetF$C zn4QD7A3w4R{SjT);dHs6ZW?_0{D7VTAouroXtynX_wge(yDet7;PcZX7VqGKLy{6g zDRi3+nx?@x_GNk$W5mP51Ag<He}T0cn@xwdCD71#Ib+i{6f{!Xa$#(`4ozEQajqPW z;7c{|h`MQ7IOmZBUDi@6xDe5GTOKnLX_Cld3YT-w7qj4Q(69<#6gBX*cvZBgXNs7$ z)s?ixk)YWtA3WKfl)Aout+kB)Bp^$r$=x!~bJ4>95%V$<Rg6~;Mp3M@Um`Xw#ga~} zU1*vH<1o?cfRpMj{eWqrj(or0Q!HxY;Fl0F3`6PiY2QyGuW1@l*A*_89x0L4Eaylp zE<i|)ah$N<-ywvEah%zIzk}8qo6Q!}G{P8(-F^e9fT}hSg1YWpv{e;lyI=YNRnq}V z;WG5N^cQTp4s~7g`hmLkX_{CU1qvN9217rT=i8@<C3t9KP+MF0@Ko67l9blg)ir%D z#!^UTU;8}IEVT3`OeHZj&T<2kT}p<@fXm`2iy(kIc!ChM+?9tI${s(ZR6=xON|?RF zWgH-+MB8<M5a_27kP<#p!+8H{kGi30bY0h|D)OhFF9U{Q#BYE5JAC`?Cx+zASmp)Z z$KtSwG2Nh{pL5;U=iT#l@vR6v{gg{R-5z?+S#r-V(gYH`(CFQ8jxK{(1^p1Y8(N#3 z(p7k*wd5F6iZadqY_if5VARKi(`8_fD_-Q_UPl<=daoxc2+D;XQ?V)}4r@s%!ubU* zEC|t+F?FuCbN6d_KW;0{Rj;_(pA=n&SuD2}!)YG3S9#xFcI~8suQ;l<Fxs>9OR1|m zUP;avPf(_UkP83w5C0Ya;cxx}K0lt|Lmpk<>I!nVe*2)rXHGHh#1#t~R+EJrg4#0$ zdENzyfAeK7UgX7n>6sHZdw21o@UD>am^diYRrppe)gQva{=vKR7vhr=6=EOWzQ@<^ zKVW9t&^*tmn;M710iPZ|K}d<?`HXh6!7z-)QkjIn>$h*P*=#UQ6P}Joy#4SF$IBVt ze)<Gc*Vx_P!7{;Ye}9L%Z6GvVESt>+Uw{2IDaa#@n{$%Z`FzH&e)TJ|o&gXs;qdtp zj}M<qw5n1HZXw_G$c%AP7}FV`SX?&@BkhAFUBvUelwEYDk<If=0FM9~&r8i?VP707 z`B?})5>!T8$RsIKo4c`miO>k1`1T72IAuh#<@BqJ7qz^Xr@i)qrX~Ojji@ul3)j!t zlORp<M2uo!FL?FpRrx%$qSsPujZN3!bULA`Dx6Md_I<0HGh<mCd`NhBctl;*XxoM< zdUKh)b(;-7e|}=2p~O6UEH1FED&cgxU|C3b=KX@Ep+6r&K-YCd`BMVjrY$14l!$Ow z*EKGe9(B{;a5y6PfXAmNynXkMvNNQ{rrqLnyrAzVRK`Mp&c$h(2pq$poq3+iG%RDS zv*JCEl$D}zDk&rvZXAuv!m%92<6>ZLe8sV@8mH4~l?Nf%iJ-CDZJGY2D40fS#?nUk z#gPt!?*q~q1lYQw<i4hXkP?r_1J3;gbw^70%Q(=wmdSyXfM?M(Ev%`q+wM@=3e&vc ze7>+I!C@SyvVsi!@osfmc(Du5YnbO2wp`rAm7_~W@eG``Qu(Tssf`Iy2t=6>GOH#5 zA|Ha;$Rw`#R|E=bF^Wb+BEuq5DC0}gCku!u7=a>qd<Uo$VP!<66UBJT1SJzh@{o*< zU3@}6IC!55p)MriNBiUvIiZV4a|A}Y8LO`LZ7F!l`Ar^(4iW(&QkPBw7ouxvZ6Tnq z9(7w$G^`Sc2-hrkA&Os{E*w(PCkRAAUt^^W?`tfYs)o_z6V+Nn8A8xXEs>;vP@1W3 zj7XFck$=#o3w--ezrx@A?|*~;@4x;E&TB|P)T1lKMHIqUOf-3jAa!SeM}$X6fknOI zs#a79NoVeR9?u8r{v+9+d<sZ{0%c3ro>m>M;F#4!7ePu1Nec35=R$y4{nxlutajV@ zUbsOKS_x4CU8viQ5F$WG&kwc)5*J7!A<Bd(x$lk?0iYsT3+ZuR?e-Z}tdO8yOh5lO z=uonKV--ZBAfRGGt1J93fBo;!7z>1iVI1&yI$)efe0um6Ml1B=2xA*`&6e`Wt!4CU zgSu@H6L5GuVAt*N_RTw-&pp2W>Kk+orD|!Z(A70Ib&KgTAuIuP)nL<h7={ZT50B`l z9;#9}j~DdQfX`2lxO@E?cdy^THZ7nuX6MmtHdtan6hPmPkO_FRzelSrkN_X({a0I! zu*^_GV(dpAk$WHpEOTbhD|p7$#u(AI9p`QX^WqU0WK$V~$n1C@0(Fkg!#hvGM~b}c z)>;^?=-EoZ{eE8*%tjMg&YH~8NJ#K7R`Wp#R7OI{h|0)frOg5^Qa^jli{lIn!17L5 zn+l5$l)G&dDy`5qHMF*vh8c)J*EEQTa3KIfqp}qef8EYSc&D*=jblH-bL!mjc%mX` z34l@<rVCPB5d4Cwwop3Z@#z6g*Fq@)?-z{o03RLMvl3|B?;_5p3yiMeUBY-7vD<E8 zt%lMG$_nU;fI4*cX(&aU{COU+-*2HrLQ@$ubqyapChyR0H<(6;<bi3Jp*h?pCdwHX zl1w_*2vim6A<jcjoo-dJ2A5d`tZDKw(PeB53#e7;{(Xv&MnhMY(gf?4o}=U;RKnsX z)NKXHva8F~qhBU0ZehDJkpdlC?F475``}spr(u+ZUjpV~frdetBHZNZqV7pw;GKh; zC!9|QNJMPf3SC=shDfBftdY#)kW5U)_gp>e{du9t@kBIl6xVdQHNg;!%lg4iB6sLf zh~L|IU3Z*x$kJ}ulmj`671v#^SmWX<g1V|)*&?PSv=*H6ecgMKRmb7!cxLE~C{Q|a z)2WA|Y|byj_5acSJd5_IiqB*B03?Cn6Obf%Zh1YR6i`(pe#<J`EK+dJ!37fD`A9g~ z#YHU67h#itC>L5%lGy56AxQyg46v%yC0B9~fRPG_vFxohD@zk3zWv4T@bCY(zro-A z?SH}K6_U1ec_H2i#!4Uqa(Y}UYloO^e|eOhliJkPzkZd@3y>Es0wGd@RmxD8mypHj zr#jib+|J&JMZP5TNYD1);!9hj@67|gaQ*%d8M_ynVG<M@9O>sj`sR=D=KeM2abj;Q zK}~-7>tDfELn;N(001BWNkl<Z6@(<3A*96T!vXDP1Mef+u7fqi<UXHz?DzKo1jb>+ zci(-7-F}D7W=sBEW6(7%kP@bOph!$ld-7?TV6`cD=V2HL8EY+eJ5u1!Gh<hIJv5F3 zE|&`>dR2yb>%@AXVw5=O##AI40`1fj5~gY36i3=Mhd?wq&3Ws~;xTd{M@oqp>)c&A zj>=3aK=Fi+z&F?6sC-y%w;i-%mOM|(@;b~H>lE$dDK3@X*VY&o?TX@U51eP7K_T9I zY`2@+^<Pe?WOa9bZgZ^YFboJTz-j}xEToLK2Fe&3se6x)pFYz>LrKEd8iMysGbOJ{ zt;udG1*UO^k`#3syvJ_0gXFJ$<_OYxp3rqIjizU^uvK-9VHoNACsCC1N&uU#BNoDD zhyFsLEM(~ew50A?Ygs0(F(nwL=XvLg5LGM1i~|-bcC_m^)*{7-^W_2|B`oV2imIDq zT2rD4OSY9Q%TlH~dA&)w1c~v!U`%dc!f7OXupzy~GA|g%5#ER59jCAunlcc~#+UC| z2%(4=krJk1g7+kPyId{^{`z^0(+H_ZTVjnZ7U>L_%0+wz&b)N7uVY=6;JgAROx`+x za+8*!ZO;ds;-?=?>uO{D^ZE_*!>Zt0B|SY<Jc1XBZ3fpji;uv07|~A)A|wPWBa4;` zf+h(m6Xd{Eb}T<q3I%{c*~^rUos)gC5nDndM$jrj3)ottsSPTtOR!8#WG$H%PXdc+ zK|jps#|h&+V_KGyL+nF@2QVXGNgfUnOZ1q7FQYe#;iHRGv9dhx-K??LbX#<7i{K;v z>Hqm}`1k+E|B3(jAO9Z9Y?08wLBPvQjeEf(z5ZVDPBQN$%Y%^jq3l-|Wqm<^Ace&A zFOLvb&=&^J;6^AXe%iGC_XP@xAA;G4A1Efo7wU=M@BjQmIYn+ndqS4#g7ui#G%fz( z&;Pste5F?C#{vB?QisB->1iJE@bnqNS|q7ZH4WKorWsmWD5eX3etN_&e(?*ufB&A+ zxE?>3-C+oU6z#hmUftiJZ7CpS8fJ7|2dy;Py5-%m#+x^9O9y>EpK&}sVY}_%mIYc$ z+PNz_Rz7|D$OU$!iJdZVQNSnA#icdodE#{q#k7VH5qu`{5yfIz=<Ah2GjcRt$F?j! zYPuFuD=4E`7jhd<nJ)k#1wy1wyqr(0sHRxc4HdgQ5~fSxD$3G|Kq=N5E{rH@RZ2R* ziDm9t7#L77w<3?2vzTt0CJf_<ei+~#*`<^eXq&clwZk}4J~s%Ul7(hj8x*`_7>`BM zZLqk&uqle69)}T1NV22}AclZ>o^ZF{B6vqY7D*Ee=NB|xgT)chC?)cC_kB;|TtVq} zZQBv+flV{HNXWvzWtr*RN~siAK6oChYxa=OCE?9li{L%B+buZ*Sj1+u;xn8>nz)&v zeDWGbszMCS4uXnZMSb7HFrX-ez`-fBUR{s8CBuHGU;xhN9w9^=4<~3{@miL?Z#l`1 z(yvL6BxHsKDfIn-%VmIb5r$b2)4cG#L8$NRd6-IJ^ZXopZnwtDNtB*NMBnbyvj7^< zDW&HU^dBdTD?IOXlVhD#)<V)aP{`XPnJCgN8nldt6MIxM+a%$t(;^SIB7+t}Ojtt1 z;WT1$5mA_H=kx525CBr3u3IRI8cRh%C{}+eB1Tyz0fP9UFiIiBfJ$n%rztdzLEY9c z))WfVJUdL|!n>+S>k78d&;?C}$UM)8(L)&pu*OX*MI)*tOJIbH0TzaEt|`G94O3Up zLZEJHBmf^je#S3;^=tg6zyAmP-GBanF-{2(6#^1GX!I=EX>hZHPU6OoO$|3gPtr5N z*lKi-bxukSI2RJ$1qA;RCqR@=H{EXazt>ei2Lb(91^ka?Cw%!YO4pqCn~yKPG_(4H zcj}owD;YNPSAY3ec=zTVlJoF^0#X8JA4n-F@o$;QP9%Xj2I$~XH7%s~csiaiEHhe8 zzN#wnoxghZ3dbX5Z-4XE*Ek#wrIY>e{vFPz6CYd=RYO4=-UUo)!gjMo-86_X;qmd2 z!a<Bd*U@fzUS_;|_ZEt~v(x#6VH{za4w?%?A0i+PhIzsL{TAbNLfbV&7ZZ{h?VRkm zI?#q;V0{iz&K5sG0Z3ZIGOHo-VJQLLw+qA+NPm+OYFp88DeoSIK-aanTrNNaISRPL zbi+cb@wVZqA=$CK_wa535@kU6kWf`Mtk$@kPPp6epbd4473*gp5~g{isiUE8-CBcb z4ltHF_<30h^S-JqE{6ea)8cUW3?V>;k`x@GLKhqP%oCI(wC>|HVVY-(fz=wr<pL=Z zrfJ06*RSyK^oU^`p`}E(-y`@FlmzO=A|?;W1Q#4^Z4qO@Fpjv}Zz*(Vo?)~?iUG^C zkOi!vwWPHgUDp<3p5wd#u)Qp&+BI53MoFL*=g~F|=6OM7Yxp>pu6&**Si6DI8qrb# z6n!YfPN@j{n#GG+Nm_UCO2%4)#d$3AQs7_ID3K^nb9jvq3Q+(_BrI;>oO7@>)L<MZ z)-D++DY4n?aJig|?Ja~r*$9ym___^Eb1(hCXDr<@-UTfDI*<taid6q0y5_neUf-85 ziNUjAIHd%gKY`ynQWvZ0AT!%jyf$Uez#B0}7{#M^$QxsPT8+nV1W#Nbh?M=g0$S#M zLB@0Q$XrN_i^pl0F*(XNjxTg&#lpoZ_829kvV>L@f(7AXb-;4hEfZ2ukir0hJmGCy zqpl6QZH>BZu3(R4!7@#_^ga5^KnIxsbwP^0sbK3GQqhGE5#il}%elwn<0F&+?)Dor zO$8u8DFJI6)OCa81CRo2Wyr?j9EG2#3YTGoOc9TVC!CKbJU$)pyN3gQ`Rng6%nktw zNW{99f>#GGp#+O!P_XAU@)$l70U52D!c{q6E_q(BNX2)(ED!9pV2VYcCwQM!0(>$> zHd41mJJe?+Iw5b+uDS5c6OosE>gmOYn0@j10uFZlHSucVxqkFo5sPPxn)DM2j4u@? zC^57m(uMTRS0C^ffAVM0%HZ+wfDk>-{fYLKGhOCNYbdQKD_k4&^9b)8Uf;jL)8T-a z688H$%+A5Zi2KbBn@v|d*<XG26%MB(=5fN;Uw;j245o3!fB)xSV80{8>)qWQ*^o{F zDJE=pI~<NjY`5DYA_Ee>`}iFIvVP^%t7%!_Vt}z4LL_Xv7N>rKFIXU1cHl}=!8eQ( zmf2&sYq2aN`;@Q3DB7(z7=|9oQUcpFEl}EEavm`ePuoXN;yz{AN~cQUef>M=lFe)d zZHOrz1o6c)>NE#!v~^2hon^rWz}<F-j}M>V76OeZ3Cz=o%{N~m#DIC8u`CPhDl=UO z6f5fb*LB?#*1KUP_A)zY<shYo)(K5*nd+x_6*56vDyU-cR8-B50%*7hG_2&Gris+* z)?ye3CZu^(m4Ocqx*|lap902d!fv+%0E~T)d0t3=u`JAvm)xXWFP*%C$w=F3)3PwJ zUZts#z;d(QpsH$|k0(US%^>gh$7w{{wwUG_T_k=$RSA0CXM(i^@1glzG)6GpZ$jJD z2#li5QLoG5FpZQ!U)On}O6QIg0@_#vL6Z-+ctlC-7lP*mPK=A}J*Sx5m;mPkG$+*M z^K2Zb07#MGL(4)|!kjc33ZDFWPUOkY_dD+NJ=auD*c8v!-|OF-#PyuiKio}RPh#<f zrd_O5<@vJ6Oycj4F@Zn>^Jin=1S!|is(Av;s95ANH{hedd0Oyz8W5luahmhSu03Il zt0{0%yeFhWrFu5f&GwiS>3R|ZN?FvEMqQK2-Fc70@r<X(Ck%a$%b8TG(>P(87f7kG zzq>=r6eb}hB9C@HefJTk;}Q3Fdsw9*19`!dmJlBBGl_m|ZJ~_B(Ha=7NHn4pgoq{B zML@zwg~P?;w;vxdE(G8a$rE@tQp#5*xs{8DU!K7Ia{_fKF(rEV*5BNaiWn}%2vO3` zSWL$EuJZvQUUS%r7*de>pC0C%!1ruGBjQSZFTSkl__3_w7sgntQ1_xIC|{{$c0wjN z3HiOxBS(n73`WNH-iSZtpBMu)6jVy+>K6a&zx$tYx8GwKCQRdqak&tZa+!;rCxn2_ zW`h(HPM0&3G1%-|oK7cPE*IFgMnCijF`}t!*vjH?ctY2;XxoOJ9v<3igcNW*4e-lM zNm5#4v)kc#KH=fh1FSLFZnxx*_YRMbkIWr^f)5`3K&f!|_xFg7nDS4@1B3wHzk7?{ ze*2MvHFyFyPn0(ugGGoDUI4bKAw<OD1BP*eQskA6X(FZe>`>PvWHJ>U;K$PmyUhj( z5}!XGu-$J_K_UdVn*8zWt2Ba$Fj8}K0mPUuKg|a;b-ms>wndSuSTSEd#R#o5hQ7yk zyT#ppkKcUz5zae6NwjUlyJlbV)blez%?*nB-g%FzvSmkGTZ%-biHC#M2II)yXiHfS z6b(vy^%x_Dp~vgjuW>q_AO*REvR<ZbTTDH<3)-f_;v5pw=d7)8xty`xZn52LFtOLX zZEDQZ%t?rXbIKhS$09;0;kcMvmI>$c8QX1F))Ryi_GlZj@IeUX?vrhIoN0Vrv7&xi z9NMO#wTfYsuMcp3p^Lq3Fpe`#F<Y7hEP<vQP1_(i53MAVK53OS3?t=rDDrkkrUo`m z%@<-s@PX)s-a`sH;uJ%A0AQKPwc(bf3?p;W->2_BK`DvtW{0M&5h8Fop8=X1m7pH# zf#i*b={Y<rkM&>Fq&>6k=8OGSAS|vaq@c4{a9Gz5Uh3jzB`RKCex~ntEE#v1ij^qa z%c!#!-y5aoFF=r(JM&FMR^W3dm53sD?q?h?0|MyMgh&vAGS1~n6sD8B0%vGBK|Az# zyUP~>2oXgH6Cznj+yY$A4u0wJ^awb=Ab1Dwml7YCRnsv6)@poyI^yB!M1_i?0FG&L zn1=~cR`3CM`22+4kQ%t{YE(?!i!ovv6%x4e<gw%3eoI-;bp@jhf{!>Kdwl$Oz`1v% z%@(SR*2N89jo~qA1&7J8<BW}sc@2}N?D-q#15${jSdWol2$3%Q<O75gaN~^Vui&A? zM8S1Nd%n=GeEH`^WBP)P?b&nkZ=Qg^(ABd5FtKqky}&rQ9eIf|)%jAm!jB!mD?ydD zkqUqP7k`PLefWwdKj$-xw|rqkXLPHZCbo<je0cj7Qd=0MF}s<@zq}XS?RMze4k0W^ zi2yP}2pkSi&|2f&yLWVXMY5c2cRR$C@N_&tDTTJ{@ZtS?^p^`BK7A@wucqlR3<Dqq z_WL{TZX-TDJfLYC)J=n~YtZ*+AUMq9fC!1Isu7}wHWh|`L`)9V-4@g2Af$p43XmiY z^O4*)<LuB66Cfn+Uz4!wbiS|{SK)BHz}79Qs>L+Th=DGaX(T0gRS{;@8pE)viAiQO zX-h_78fP>OS+9ckh{2<4TRO7>uyEw+&`+>NU>ZkMb;Vt`2NF=(7Lo0uS}QnDa2=#n ztg6}TP95n4Z44??mkxdyM^v^!-;ZdU4)e0$^_x44<3Qu$2rSFYNL^Y5?6&m!N$&is zy29mrhL*GgPbp!u-9Q_QX>z0vuc$ziLc&Oe+FCdtu<2T)NG^k_s?hfrv~@#1@SHti zER+&h+(NOtmKvn&ThA7~zQ0_(<!&hx3mr6?uElun%jK4sjlaZ%s5LHqkKJxtY_pjq zu(%m9B}#OV*GqDoCp65N54`i%nhHpWSi)<D{sL_(&K^)jC`h6_hr9j02oc@lu($<6 zDg+<VwHs_VJDkrwo}Nw+O2hd8YwOa@dl#S-*(#;dOxt^|0lr0yuLGXeh2RZ`Bc(FI zEL<&IMalU*N(`{kKWaw!f}&}i!<|+t_H`&o8GDL!6ZoF}z~Uy?oU=j%!~csg4!0Q1 z1T5a;aJpdjiSyCH+1#SY;Ic|Kq*$`ErMx0z#cJ#-IF=BJ#bTaROFl*Pe#SgWXeJ5? z2tZ!HmKYO!%w0jk>}OU-QV4~RoZ%jUBs4XKQD9m;QlcG^4H3#YXelX!+BwQ?7aBoE zXb2=1kz9m>$FPi87Kg`UkHhCDggFAr0FnYeL;{isED#iBd~-9lS$*RYm`%gXW0@bG zNL{)J5eNYy7ncN*2SPwxfH3)+(R!|m6WiJnvN}`#s7v>@vdv5W^rQCeqNMZXXDY2K z81ZuNFUl-@6&n29$B&z!5mKz;U)`Z+@r&S}-@g5TKl=J>4Cf1$X@)gb89k>I35c>R z7{>{lZUe0)>Z-!|e8w~`z`OSp1X5d^k0;a}rGFs?Jbr#8k*87^h5@f$y+R1&^F166 zsOuX2FrnFOF^nU;cLbX0S{x1s7_D(QK4G)lLP>>j?5PNh3Eq=J-FuH^CMEXdC!G2d zL?D5gNF?T(Qy`Uej8v4Kd+fKABsMN1iOuQ`AvjEvM@kAYI%q?M@H~^ybe<OMcXya( z2W>54iafrbNOjNMnzfdrMrqF-6AEBONlIiK$N3r$8fn#}B#p?eF>r}St$Ckap6?jZ zbsO~K$kxzU62g?x&>_IN1)HuRM6TBG-s5t)pl%zAb7g@Z_>5GX=9Rt2HB;GQOlaF0 z$MHg}g1W-IIAQ`w!&qEm!^c3jtf(}!C9b`59-G|`#u}V2XH@o{D0x+dir0w21#}IK zzsGrmF{XU{*%KRo*KKe-9I@GMR%be$d*{mq_pe?-BxdR>qN`og)`(pol|p5&0GPZA z^^S^Gax+l3Uey(*ae|hb&Phpo^rmSkQgv}qM#E^s>yE1Uz?D>-Mn`B@&6K;@xpMCe z!@%OcP=tQ_{hoK{Bwn278RO(3gvR~-D@>Eeyv#VBF6g=zJ~?c<4SevJF&7bBJ{u@+ zL*9sEa~h$P;zgLu^FX8Z`jG~xu{6s$$W5>%7yz_Pw`270<zpq@F~&&a<eSB);9!<i z7WgUe#HA`CxtPe8oh@N$)fMKClXvE_2;@Y8LeNNv4#1FrVexo8T`-4;a1#N;V_}ha z{6U3)TxGIfKkT)*kSpO>9=<AOx@$>=2E<hvPL=|}5v;`erD|IjX1f%U^15T934j)e zGC;(@zE}!e06)}5YiKE;1dR*>5=5krEkeY2?h%#+F|m1ED13T&BCvsyaFPAmH@o7* z-@oVG`zle7*A3Z<5)u_NF-8a<AY39#x=#>+|0Kn_(G%tJ*j}+MiwFcskd`3w2qOtu zpfqW<o6g@SAyTo#iPh>St*g}^F?&yI+AtS-H^3Y`%VaP1lC{?3R-8i43-RKZtX%%9 zBDL5n<$6bzR^rlZzf_PhpsO4F^<Vx^xZCgHXAd71oGu5P&SyX*j1v*N2;@Ys<8Hgd z;qZjx(*bw)uW5wZbvT?)P+CH=73lNf0An<&y2dikXzB(c0lV#vF|s3+()i}*-_U+= z95K%e?(Xj3gU9iBM2uu*Lj)F27N~r{?Du;Zw$KSJaTzXXy9UGmU)y{2NS0+;dh5um z%*<6}Mpjjes;=qgu*INRGav^9h<V^2tN%vufg}hLg8_ydNtQ?%;qE4`I+722pJUfN zqC`)FNH~xg>EXic-n-A<d#!IdM-Ojh;9|nCA8`KeJ7lGi1(;ga!uf<433AhRmhP7* zAf>_OO!1?}G+5V#mEwfqr1(vX%VmVp3Oci6L`cLy;-&InoR^u#uB^%@f}F<c9qCz& zMv4KZZMmD)ST7f}{QzW1s{jC|(F|ZBk*zfvi<3yv)0!*MA-`>Cmn~$mLb1S&NthXw zB|c5G<EEHd64Wj$L4-;u%d(KNTovy$zxG<2`uiJWArvLUDMeJZ-~;-;K~97!Z8`_r z7^Fbr)|fKe<cN1q)?PYT41LSCw*hWhF!UX~TX9M!+&|p$fuM!+D_i;!q|%tD3A?^W zO0?Ekm^3%+cW~ZeSqTU1SBGI3FpeWuzOJ>=l?9(tK;VOc*2I#RisaQX(Bw)P3#kai zq6Of*hm4diSMa-qBM=jdbEPD^T5wP))$kdBz(ygiFeacMdd3m2NJ(N@JiI$0?1B6H zd%PZx6mBFIB&Hr}O{sR5%LPi&RETVU;&yqxom^&oM!R#nIxIh*6l%laz^%4O@`Iee zhZgxNhE5ysjHshg37I4y5+$SMB6U$$FO<9;ZVKe;$;{$PSfd0odBvy}>zj}pNDH&w zMZRXU3(#mi1^Ae88fUzY3w%x7D!bfV;SgeDwac5atte{eI<~kf45g3+Hedlq<~Y|R z%GXL&@n1aB))K4PG=<l$pp^tfhFdd@5<U6hb0P(RQ3*zMu(su!l{?vdZ5*}G5F8_z zV#K;c%<~GNHB8eZ<bdbn1+(`=w-*9gL>hgU!%fayU}WX?Z4XwFf8Ufce9Bm3#Nx@8 z=beXG71SJ%n}}>OVEAy9B|~H+M39ieAPYm_6aX<RhW!Nko_x`XoRA@Ff*<Xw6@!RM zkV;0r8O$@at{kfJ@7ocTbDOLqbt>4m$JH#hz?ZA1PY6oXl1Q~Me@;oV70%TmSUoF9 z&Zy@EKS(}NM`TH(4kZ*2c_NiF{_>~)1b_bHKgDt(tmb99Af$lP^g^ACq+P9_e7#=h zdBM6k+&?^^X&X%Ag!{(_=vgDI0gW|S*BQ1UE7|dML5dN(wu6=$(|N-2ctqFr`0~s5 zNWtT~@4ki77C-sXPtbG?zWw%VjLQhABs!%qjWb!Ym~0nffLm5PfB1;Q-5zr=fX}#` zPdE&FXlbyl1ZDa7!*>ulKxBaog(M~J?(ZSB#=K6@3W(mrts1MNfR&H}q$V_~R1%kQ zL<%&;I>sX&pT0m63T_Qh!9$9KoB||(!@~oQs%ac6H7W3orh6)~-Kn(=l$7Y1@)m-l zadOjA!y*6|BZO9HWD8N)51hpvgU4=YVKhAtWxk5?_WJ=jN5tSsPq41Uq2Nvp3Anr4 zbH}Kll|@WMl}kB6Wq}kTq}A}jF@KzL$?xwUh%+uEVxpwDlpUm0h~ASY+>@28wFUwS zPY?I_?wjusd?Y`!0T2W3_B*8P;nsk@wQ!Nde&pq+eY#YJ$KMf6OL_nUN{#g1(<Fq2 zaYd_?QbZP{C>PSeS`zm8)nSI<-8voU5Hbw!;I&c+&O<kJfQ^~F<7LVsA>d;`!=X5( zizO)!Hz6qiNc1@=Lr4;3rtE8?Bq4EI<fPzZKv-Ae*?WiGZjZLt@Bzr_f{-H4=L-NT z>>r(@c;VFpIaH0-Fbp`J&ULk!HfT+eX`TEwl;v}QP;!%3kT_j4md3iQuQ!c!;&j7L zsT$(<ScvoIJil92aIPJA5pI-uLxsR>MNBupP_A|qC9j>EWaDn;$ik2VTnIRg3oi3Y z9bp!mRIX1AQ*Za7p9IanaX^tORgj3RqGYM?g-D)8?<1Ux@IGOjXUxuFnpgHRE(~!P zF)<>uoV2ty4C)}|ZOnjYY-Qp%DV7dXNhl*B6p&>`1o7Ejj2PDi=Xt`oEZiki;fuwt zlk$x)@oMk7{*r~YpE3}I#^iwWlyDpaUQa8|uM7OeBTpV;^pI16SOT&OG^$Sm@ELF! zUDl8?At4}(L}58M!77U0tG7|6@~Y;%o?6B4)^7aK{_p%>0FV**FUQ3R+(g=L#*+Ca zT~^+>NMsUtclU%}{M~<p=t#ul+zPD~oOkqKjS=%aGxwc9G-Y&HP{Ys9&qyiZ`|rQU zc)mbNiPPys-6<c|wb8i0yTkp{BT>lQf{+q~Qg}U|a6BC$q{OfvV64XT$Bz&~;Nk8b z_xl5K&NyDqfRea-xWmKa1BP9Xga~CNv^8+6BThM|r1d@JT+h=8w=QU{rGs4vkQp^T zv+s6jY>#Pjn5GruIAWd`2%)jA0VxT1m#|JA&Lu1>-Frlsb8unBG*4KTnGViM!dQb4 z17eCCXG&v#qxJQ`B}vpt32GhYd7@_*ry)uy5q#jha>c0W>;7|HW)4L${NCmYr78R5 z^ZAV3ZU^r@iR5_9-!MM4V0Dew3?(U9@$yZsdZLJDr7Qk)UT937kt=>$uqR)!fUVez zV<JWW-Q5A_^SQd1=6R_pY|as3ZRmRf!sLv`XtvN%HidHzmkV8E#5i9o0()Uw9sRz< z-KQizS}_&$ud1=Csv>jgxs_@HTFIU-pBH1~>8Yy!O+{W+u1H{@5Cy={drkiTa@e2- z$r{V=VZ`NfhOwG5*)w36S-&nT=4nRPb{K|Tg$u1K2@8dy#-)hCi(ZTZT;z?Y?JXVd zbM@#g9(Id{%{f!UBf!nlRcS0r^Riic|Nn%_+C)-{KhkSlBRR#@-d4%*1d53{VeuX> zrxA;zt{*%xpdD`dG{*JK3zrjhnyKc9-$uX|@rWuGItCELNGL}ah!963W=X;f{u~z) zLX7Z{VEt;716)1|pWAtl(|96|G(UutR!ozVw2voVE+DD+uQ6a+SDdFA$8o~!Ton)2 zX-j3-Z+ZH8Be2L6OjAbhLcl{~bOO(ph;Kfw`1N-)e)Y`--+X<-hu@qqef^5~-3#)E z3-B^RoE@+vGTtYTY!ZY4k_bqfep_sUdnlV+TuE-?P2A{4)b|fA==t~Om;bSQ{QQr_ z)qet0%A454YhD0{*~2J}zyIrhhR3@HC<x?0K$m%%;k`%S_Z610t}7K9MgD8=R~!xp zIPcNe7C-vYj~FOJ<LZ<$QV2*f<9IqDfjXg-Grs%bdvtwILc0A985tj*pK-XqgJOYC z2m$Bg32t?y2IsMFhyg-MoX$raPe;6*USS%GufP2o%QB<ydT3*j0ld6C!?}etEPSlf z5=dc%%8@#*)k7-_r5Y&RLI{n<_Q**<NsAPL7=Rcu1T=C|P^yJg7UMi)nn$GMp%id; ze~@=t(f|M;07*naRKPF{B!Kdc#j}DL;#Y2V4iUlAzE^4Lf-@qVchx>uc-$1{8rj3H zAwgd+#R$RwUcQH9w};?v(->2^@x~bJcRL&o2efUAd7c?~LqEsDTy*lXQwF-Vx=t6h zHUJkLApjq!<MhG7+J=(XIO$O-1<wZpf)vp~aa|Vd4?Acj5xl4QUCvk+2PriAo<`yj z0uT2G(xdQ%Y?^0uea{*NjhB~~3K;X=<Kf|fz(>=>ngGv<b+kKHoYt2)X^$+CsMNPw zxC<_MD>UQ#xEx&an{o9u^%6A%rsb|*DS|s^=DatysrP8g5mE}K=m|VMJwghy8P4-U z83p5r$HxaKs}VA-a4z$7oAS1K-mEJn!inEQU;P}+s&wXWv(l@EhpB2=6pd1@!8LD3 z_f;sDHuX1)Kc3z3$$~$XJ*ce6QIsgwHv+sX(QIRzE9-W7rPUQ>Uq}h#vf}kT!6%8F zB~M<NB`?MAv<F-}q+G}DA{R&i*<6HXsU5#rg(@YKq+K?Ta#POianHnBX3`s-Mz4uG zWuKdosYBsIgtZoZ+rqmAT8TQcZ;XOKhOR;iQescj4Cfalp%9b65(1{hQ7V(t<Pk3y z*p1)|^>9Qv>Q`YL6<LWWBmyMn0DOO3;n#@Q<AUFOFVS0xuGe_D8}RONz{8gZ93BrC z?sm|Ff;0l~5)c~NHh_#b-v4SJdn43CO@fQt6CLn-3-BLjZrkpxKVSUw?>h(JABMnr zI~@@9*AV2Js-9lbpAacgAS3yJpa11w;pcz$Q-sA4kVy*IrorL<fPep={yi?23wFCb zUSE$?n2@23!R0dIFMjq@oX=-8jm7=l6E2qvk;A0Mv@Y0j;7SNIj&3y-q7N@G6o%wI z`k}|PEEq2rEK7;UOt@Sw@ZMwSS|BF8e0au(=V$!cpZ^rzJ2Xb);}73M8Aal$myaZT zl9YDV?FO`_!RzY@ahxEPfHsOa-#%kSgc1oUtb8aobm-6xyk8k?W1*DBJk3BN`d5q@ zUBAcTSDM)U@PSesHBG_1ThTGYeH*#lG)<+-<($#9w6|5IKnU{I$DCo5rZtjOutSR@ zPd;+a(28thQb<}E7)5qD@6ik$S*G{^K+r4d$d`F$VPZtg9(P>_mplTCAjwakVQm97 z&5T^-&P{<2baZW`m`IC*jQxIx*ViLuzptJMZ%tbh&*phS-*;G+1?y_@?(qrVe*F!e zo*r;KoiWWLcEgSWbGnTEeowE{Ji|29)sN>3Hzx|yG-4PAD&D*=-|zPb!Qp&9;>$0; zz}LV1HIz~{a3*KE){NyYlndCF02d<L>iWJuJGD{>^-x96&1G3IbUg{*Sa`TChDE?i z33CA{MOvw9vLcrv-&hN`u8>+(P0ciokdh_`$K#Q9@2f)=z-1os{{4G=`0$Y@6A~#W z(r6@9-I%P=*8Jp?w;XpVC1l1Yhk>HmNu?`)Lo*bTzSeb(eLWB;rATlqt_Wh)O8v_X zg#DAjx~yWk5;<D_RMrK&kmW?7XxlC{hGAbL5M@ox$+cLK7>>tEJn~i|!D_&$jK)Y9 zMbLjGB2o-kT*MEj8UNweA8>I3kd}AzB*deCSNyYyn+d>;Fsc-hV&9UWk)0;NgA~^U zH%Kbvx$NOmCaWIvr>)h@<)xdg1c2222FJx}tw?Z}h)->dgr$rY7zOm5g{}Me0&AmA zcl8kyXAdtvVO|4H=MnR=BBA^|<>HVVhCW9j3dx;$>C&&^E`kLZ2^k?vECD#L8836j z*Dnix^I^uXewgs9?`M4b%>^I7TX1<z@Mi(#4Rq?TIE{b%|9p>cKb(+-MdaX`!d)(V zd<YWIRS^g~6Skdlek&X)n8@F0F_SkUIw1rd);1uU>v;dl<F3$`jnb5UNXgywKWy|~ z^XltlOtN58)C_keB~lE~S>pZU7x*9lhku2~{XN{eV7#2Mx&_Dc5g$H&KtJ?2oz6rj zYZ^e3Ak$h4!I71h^9B3;9;Y*Lr+@hHjBYoOg~wWGqdBUx#eP3vU1sXm_5)&yczJ%t z<$Q)x0$+Xg750ZcPRApbWya&<0|etSbI$nc{g=2q>|wRWci()25Ir6rAF<yLn8p#~ z`GT(B;o<QC$iT0D^=lf18jZGVAw-6AGrU`QJgzW}7sM11g2OV;l@T79(go0XI&qe` zloH3+6E4$;7y~CKQcy<AFdU;bhM|KG9^*Jd3QFekF3__{(>3Xw!)~{$xY7^;S(7r2 z;+v+y>3qgKuY>~Cs#43eB6Mxrv`9I@8in0%2O%U2+c>A3Ck4yAz!*bus3~Dt7sQwt z+(K3?w>mU!3#k>ncU-(BhQ241E*~_=hb=H(&Um=Lr}aRJF#4K;*0v2<bVHy7Nox=z zWsUFmdz{atlgOnA2x5yXt>Bzve?F1hy0)bbnpySd@d5~-@4ITzODWdZaJSo2I^Rqz zf2C<^U~N-Hi%QcD8@z6vmx)$2?Di<cHgLy2&ohe&IU3ejEHg#p8Ws^saXm0B%fi!{ z1n1UzpBiJ}_<jn3fJHH77}EfW()nooPf@uc5X&Iv%+nQ8%lE?$mvO3O!n`4DrlMNM zEtrj_#8)lPHic~~jW51-sT8sx{CNh|p7fc9WgFRAzTZEtsEaG+vwG+<V3ffy>|kwE zg$-5BE){*$jP+C%?pgs>3mBDP4WM;~megs65U>Q`|NZs_zyAJ=H7R7NsLRf!C%uk# zQ?3N)n~&>cmz4aJFiJP7)&#vNPJY5xQn#Gh1yBI|S_x<=FmxUELx;X^Fbw3+-3>h& zPJU{vLDyRBh8}(2LTicDt=RPq_I-!ODhyqVwxR6g#QT$wGJMSNA;I~Gd39J^#AR|A z=LO@mBE-a=fX|D$%I@}xUuP?#kW|chA|U80LQH_m0xnA|Nnwr}D=Zc?SRyd35wDZO zhx3Au<AT#T!Dpa5JmM#R@mI*w;J3g19xfzi@$;0RT#Pp~wlZB1pA>a*yJSb+m?uBC zUb$7qi`tRryq(f)zGP9PZX6%E;&a6(x6XFF^$&x<Zh~_KU2igH?Aspy-7o$HzIyrs z)8&K|1CFOxxZn_xa5|rGzFZh9nVGKDlFLF$*v7)G4nyC=a=hcb%++UJ$AGN9wZ`D| z`if<mamTsZ(>zg;JRXr^Lff_Y&2N4~xzSyZwr%nJ@`B5FLD%=xktUBHe)t|zN<2P2 zVs#GFG}8mqTI}`*%=3(SSrB*}3<#XhC$cN$h_>&@ckd{^)VsA}P+w0kn3#)Bg($!+ z3)Xdpa|?;8VnEYqSgoOqBzR2l1da&-U%q>SRGJEZ640ih*Uoz`JX9FErlosdYb>k7 z>OI`*sGx+1u5EFdMg+c=eFzvB8=E-8p=}!El+d<KjcW~_M!YG}Xm?)M8ui<@J$+6j z%To+gxSGaNrnlgSId|_lCmscltbP`C8mU-}JM=w{udh&ARZvP9WlJTYnZKU-z=K4S z3Z+#QD@)cv5x?FbBuY|itVM`{V^r4~N+Sf&a1?K2X~b`>1w_KS&`v$`&O38~(puBX zfCF$!Ub^ILi_%1uVrSVV8Dpp`D1Z(sZPV2toh`+bM%JXCkV;kEQ2mENGh|H^&_?6= z`4!$rv<(UV$~33z+REQ2T|h?PcX)X@^5KdzNJ8YO3sTw_E!k%$fdvO$AZKrha&@36 zYL-d4pNsufe5RNet7YbDpts*V|Be{e-w&_eK3v(PB#9<>?H0w&7p<P(Dr(F1*`C;g zmr_EC0wGetk4a#f6JCxJ){qdggk*#%eI1QLmEU${#S=)yAZ<ML+&wa{UMW$>U<pLL z$w?qHv?jARwM-cV61uj-!`&Xcp+kY^HH{_TuJ`b(tGLU)?_rF_G)?&STk@J7?kFuw z0*F~4xWbC3k(1!K*lBTi9cN67M@$kv0-pKuxuAqZv6Jy@n&k#Ov#F=dYtM{v%~Dmd zo#5!t$fd|=4XF*RHfT&n+ep~10h$h87>tX@^UDdl`$zokFa8E!{_JPC%ntwa|MGtz zvnb`d4iKMQGk<g=%qyMSdM^H8_xyG={>NO-Z-nyyh!7Xvqcc{wz<i8U_}QQQIrdG5 zAHMyDM!GTKc&6QSH+0y?J-+_>TQt@pMH<~Ni-VGsL;m>mNJSwgyuQ97L`u3koiFe) zR1s5%9{c?skrS>~@1U*0*WZ2vAtlCf#Nqy~3c1M6w&MN!_xSFI?-5f(zu#eZIAED4 ze0cppAun2EURP*sa5`Vmv<)8a?vbUy>3qVn(g?lp2b@o5gh&D+Z7rOOfKbROz$%5T z1jpJYXx3N6obchpcj#C|rHzEKEpkp!TBB=Q_(0fP2?<C8?-TA015DFkaSqN!C~5He zazfWNuv(FgYC03blu@<k^QCg%g_LNTj^kU&9%ZeCP#W%hqGIVCr^jht2}Cr_u8vKI zVL<SKJ4%Dod4$Lrix1fEBfMj3q_J2?30zllY*s?ob!gj+%VnhE+B8@fLc4k&SOHCI z!=|;AKQ0TdIn?JaiSPu%y5O+iVOdsWOLyY_aKN|Ue-GPG)T{R%DMvg!+(9oIQe=t= z6$UA0*tP+LfYAi5S=SY|X?PzlG0n98Njc$kI$>x#jN^#bXapwbDWwpS<HAlNO~SfT zF^>$o@+rV{mJ<8Chu|n)O2<<*U%mMGH4FHfrXiL;Kylt&xRdvg3H;hgbZv|Ie1^6L zkB?9I@WV4!=g>A5VBUZb^!_#0VxE_(op^e>M+gPvBw>uj;v5~=6$6LF=e1)(ifioj zh88C_S|j95qp^LG2=N(U+iiYI`3%)4{mUBw$0z#Zvgc0hyJeqr7FDHQ#!Tgb+L#8r z-L5J(l@#n1S6AabL>;|L$=$LRG;-$-T`LJCs80(a;D^@<|M559<LnZ$wspK+%|}wP z8vYt@cRLmp%rVc`5Dgxu8KY>Skg2FAJ{Y8wsxW~XS}N*BNjyH@W9VB9oh6^S5@_Gt zWLhg8>&rR{^WGzPS7Qr9ida3_^~g{qsmP~{*#%sd6_<I%>H~zf@R1^2Yaz;M<GH@t z_--zQ8qOlGqO{Bh9+09|fp)%H2}pj(ibx4|F-J%w*v6tC2HXvMJneQkv>l|7Xb&wO ze)1zAMEvjn=fCDe*2LqftzeEsVppFfkIQdDg0O)Ch&LLH+X7wT3`L8v{aX3<y2MSV zo^Ru1%N1W&6IVgY_Eh{2>C_XiIFO0AAace}-oM8``>+2R778yPK0qpg)9HwejM-6# z`@@G1d?;2p9PY8Mq=YxtGI~=~P{(B)p{>Q@R!sAZVHnUeR+G9nftQzOG%byaBS<($ zq_I7A`#nzQGd_Hvf-Qu=@py!D4%0Mo+E~Kz^oqsNZg}+$FR!oMktf)Oc<R$U;e0t) zHTX0ySXc6uTWirU{3C`)U2$tUE_11AU8bXssi@fJd4dlsCv17d7|^#JDX<0EySlbR zPPCf1zdPV`I^ld8Aq3rrDN?eR_k;j7MkDyh%6UFS$BbbZpd=~Lz4P#)fNv6ip9VP* zAH3|hQ;OK_1_+TcFB22|s7p3lVf6uR({M*h%J^%@6%hDm(mbZtnh>RuS87FQSEg%J zye!3t8qKyWi)or*j3sDF#bDDjI)s3(YayA3F;5euQW%CF&(AN|?{*CCN}N7NK5xwt zqDpD<up3=@CMm@_`YyiuloGm@$bP$_r@eR#47Z})u;OQ4QEg}D@n6U7^b9YE*^;c5 zxycYbMwe2usIkQ5UORRnX$&qoET>RHiOd)wIRinP1}PHSbzMk^I?p2ohza5o0F0EC z0@FMbN?8$CAoxhJx22Q*10bq071<W^?JhiTu(G9>C{l5`#hK&E)VNt6@+4EWTK*Cu zZxAjd>Jl4&I7DWch`1`+`Ogb<L*TmC?V1)tKM+z-Xddm955C}#Dr80}0j&Y6fJRFw zMWc7CGc^0krx5YmA5Qq@!x3we$kGrxk$uVK@FBR1E(JTkVRO^(CmFVX6)BVleAV37 zlpOBwdGD^2fDr<%HMrXkXpKf=El0%)N@tQ~gtp<!^Vd^Kqib3;O#`VFw6QS8!q^6F zKftyfpfmsl9}^bmG0m=8dm!k7@;-1KOSo}VZ+63<U{*f~-?<9<1n<DLGEn?5RD6Iz zCS)yG2q|*LFf_P-*yF3O-eKQ22yQ{60Gl)Z-T(C;@%@JrkQI%OM9JkNzy9yCnq_QI zt+@UUN#LfS7mdbSdfe?;;u;i_#r2T(=A3X9pCoKv3siq;e)GEF2ETi=?cc0BsE`Zx zlabX3xEpr(`@jBM9NHcTp-MdGdBJ5G@p?L8bu01s17&yz(4kK%#iKpJundQnmly2s z?jV#V@R24?dqRe_)a4}ai7dtwBey!l81eY<fc<WV<MGIx>x_Q4!^GXXVry34bvW_Q zC8R_`#_3G|9W(j2kLM#o@HoAmAVFzW>r6r^O1mOO@#-C3U!UtJlt!}}kqd$p^uPwg zkVtJGk%eMdN+z=0GIN7K0YYut(w=wdAf%wfg!9nGFx*8|Vw+{9bY>CZx-6Ayw(EN; zPRJPN87Y%>Y*`lM6wtRV3r^{ovHBHlM_%cUJ=eS40MC)Ai8Jdn{|r*nPTyJ!!Imn4 z3}Y07nFNf|1gi-VR$F?q)hVGuW~;B#viiJ*P#orx>OEnNA-pp`<C=zWv@u24#$ui) z>~{l2C?lioItUHe)>b^KQW`$Sx=PVXA!h=_j2BY5?{|Axqv5?HOR}=8VwbQD1rKF* z<fN4O8A^rSXidVxlwmmIJmmz_n2PdU7P=oIkL>Al3GU)UKo%KF%d1T|(Y+iwTKIfA z!)Obw4Ay0>>qqZB=4nCK(t*P0>o|X1J-WW5jCFQGIOoW*bUGu(OsR!!&y$0U6a&{F zQ8v<>e3N{Qku5HaP1Z=x`MMrvc-77Fk(u&B2!34V8c3ECb2t(=CmB$^R=+F}r&<uv zOtOl%JUl5mk$wnS#aE&Vv*c#Xt|W;&`mTe~hCS<w=|8##zSr-mC9GDkTEJ?7MoDO$ zVKiW5f)>;zpOzK>>9-&7GA_u<KnRV@;Ferf-PbWh{dXxpNs$w>#NWw!YNBzPVy}26 zbRBp6N|WHj8Y0HEtX}WhmgsQSaCWfbJz}mo=-cES@=VgrVvJ^?orP^0LR)H$l<A`K zA;GzTX<RT)GrS|2L`oSx2Dm`uGEsc`;*IKDY>9w*a~P9FDRJ|<NF|}AsjHLn+GQyq zwMN@@u*UL<*FlPa#z_3+{X4w>>I)d5;pYoFW3Vg{|K{KQXL7uWgru%%e;IkB<h+sN zZ$?gX)17~Qmwx5@<BF@{i&~U+LSApFoHv@08}a0()354val=;@pN&cs1vPUm>~f<w z$=4}>$bb<NfAd%W6hHprOGM}3=7o9u0`s!KC&G#v&fiXnEIh0CfD{~S=`i#|jYsYK z9>zB0VhGeZwQY-eT`-Lo@>0*#Z8vShj*f)8!yTR;pKv~%aAe{fm=*4vLt`x-?(gyL z=?Ta{&!cp0IUFQq2&Euc0J^R##aV9cIs%xN1;%RRl;EAi>3l}WWW&*l;7UFQ#7veg z%>~V9O?JK*DYBJOn^e3c?^v(J!3PJ;J7pkaT^)6oDUqh7YZ)uLV(14Nzb<Qybk$k| zIiqKRmiMF;*zFD!uNgcVOQ~-)S6yr5ObLrQMe^+P7(E0BYb@q@#xV3`TP^k~_RE(k zW#occI>iE|$(arW>$;$ATLe#{EvaZl*mZ3c*aa8rj=L0$;*$q=``&vd$B_m=N*Ya< z!vsZTYc#fjbDl=rim<buLvECkJW(aeTe(U4ffVT>cqF#+cC5N@8cG0^Qu2Wf_4O;c z=D~S%Jx!9d)~sPlSN;g!hf-1$w&dv%04&SQuN!x?LK54Z^-1Nik(t~#jx&e9Ojwo` z!!Xo_fztD2)!#^^DF>auHd!5M?0-IA5L4i2+#W+ekn<}hq!2j+KG#M|mZ|)fPPvII zrvux@3G~?pELU4{?M`@SSldwns5@(ZS=EmWjZjj;D0%@EkI$9l|IfvW5UTv=ioJ+Z z!YGa1utV1k&^!jBE`y4NQtGCtTOLnaBhY98t4RH>HDDN<8dAcC;|c%yyI0IUL70Z} z$}^3>h&o5;)cOJlu@UpVu`6w2?Gy(A6ktH{q@&VrMct#9pS>{#O+y}3I(cj24J*2E z6Rw!s0)QyrtGr=}qeYd{$XV0`IUfS$0Xv6fUNMd{mc`MohDl0+#UuGmuejAWh)qU) zjrgp>xI*A#>mfhb#P&7KWsfb8m4Y<9TW=dQU4w_i4oyzbIbb&o7@i)WdJCx(tm*J? z{_p>Q*UK4TXilyNjIH=gUdM1b-%QAFN9Or9;NVSyVA_NZUG)^=8bY-B^E!6F6`gJf zgIBnN5aI^v@cS%wC0rqIy8X=QdIkc2{^LKvKmCipgiJtm9_zB!E^uBZO8Wwh49#Zb z>bxi6PTRpKjk~+Ms_-R#_F4;V-}gA5&v-e$;^#mAIWA`c&=ghd>3G6^7|?Z;BYrxa z006^&2dxy2$0Og*bl*z|IOhljYYl{?gsir0G4wkOeUB6=$igTC+qc{aNX*NOjx*Uy zTxU!Pl1KB6wOE}8#5LuQ08gHn-jcKi!_aeFW=4(yN&rG#GbWT$2+^}ryhYO(jF$`T zjdwdJDPWYsG>%Y8;_2xL<1}&MS2rM<zVB-~7kI}`BC}KrhjXsR&gPtIZp3~!VBy`X zVv%U#^uxkAmr`+YC1!uewnJq!R=1)b1}4POWTt7U_%uyhSp|w6I=Xbg{H!w8kRl<a z8d*!@d5$a2sM7+st`x`0;;{0JLI&$+EZnld8nS*-a-Ajbw<ymn;^EW!lwdt1&J^gn z7ERk=o=HThjG?5n!g=R7R>L@3!IP)1>*~6brn!Pv3MtV+4uTGYjD;mZV5rz!O4?J* zj}KMYN5sxt)%C@_^!j?N>kAU^agMs8z5O&!+}YD1$@1i<Z7j4VFwwFs7^e~Ivf}aa ziKZv3t3pY^&ZD;(kGXc}R|r=b!N29J$Tybk8i9^&)(S0dg#gsOHNRAnigi(;mmRnS zr=-biT3UG%wc@|Sg;y~&MQclly|#rmhJ-FkR}xU60%<L4z`ZpJjge@Lf|UYBOK3yI zUI_|6`R@4zzj+=Jg(lUz0NYwJzi=dOs9_`}_kC07%7r2Xp*MwOH77(J{m|)3aUrKp zL@H5FSW-wdM#ETQw@W2B>aRc$*vl%_P3~}kCIt2%#zdf+vfp*yBgDi7-D4UjOcS9% z6DJSFOqsv5r^;0jcZ0?IMBsG=uTl|}wOEoDR<X*Te*eU=snu)CQ;Xyyatts=;(piR z{o@_(4;_ReTTyoy(ERkrkZl8Z8u6=Ne~n-L_8TgS2{mf(Y8?}GwEY&2b1j(Smao1E z7|L&_?KcWjaifIK*ygn7H<YJ0p{(0bqU~1_;<I^gHzLz|;J79Qij?uRKj5GL-QS}X z3J4K_!#H9HSXZ*^(72hd5f^B5OoiK0fClGa7h8|_9#2n?SXYO(Z7GxbG9m%^=}&)( zX`V1m(`}Swq>=vle1Z?2Y)72Sem<Y+pspw=#%k&kyRHS0aT!Ovyu1)k!CLfPk1w9y z;q~Pe@4tKxqb*`i@PYQ;6d<D+z7v_5E|7|9I7a$NsoHfiqnUF~l@>;<dzvC@DM`#E zWqt4_WQMEAx-VbX6-G&#Faj_}<8atBOMQj4O`S^6gJ0GT+*->#@&@BHF%U+h?db1h zWN0pGf`du~2oJh03+YRmhO)nvqJqRsbFIw{Rjq`On8v~fBG>gp59fLEAVuY@7lwT1 z-=|Cg1?zku=~*08p#O)oL5*GurPc~LM7B2WE4gi5SF{bi*EH65SXYPrfiSj4YX)bD z8#<b8NDE<$dxz5*!QnXz2e4?iq*WgOJVOZ5h9G6mJEzVal4{S&g3EbX*^^FspNcA% zlJLt6rb)b_0RLUevlq1qDosn%cI2j-*J__D;zt56MLvAB@IGLkCZzfvs%l;CyM`JT z7OkGoXYSg2TBGIP9a~=QaHS!I_-ue$zI{M#p7rumum+>mwUW2v+G}@LL}vNZ=*t?1 zDsD%;92Kgyt~gZ9x$2ttw36Qp!v_VU1+12^Hp41F<^*L0q)HGfA_Wg01;!;HL_jD_ zU1kapDMNwaCxN}>xsEUL)w;%1qwC02ULhnL5+ibA0EmVV3R(&Zn9-7UhisEm#Wu%? zSDk1as6ZWWWTkgOwpP7YwI<N_b>6ebUm`>>V1Y2S%e-P)9J~vNkvh?s`5=&D%|E|p zq>CCYyN&I8%PQaImXk`8$?F^-BMS+QecIP?c7n_aNhgRDFbH5U68Dcgynla>yP=2o zE5fosH60QX`rh&Z!E#dFm9w6<oSA&3R;8OH)LRW`xyI5)9(q&IKO>^6Q}sGl&wmg% zQ}3Z%&K}}TcndaIpKF*AHmBwyxD+{~Hx2&VU;J~tySqbLJ&lu>h3z_&neBoHATTd0 zjoP~oE_euLfS=E2NRXhjOp}N<moe;ioXKsGLd5R=4(qbwa-k%((w%v?;{NfTrbKIm zRhkO66u6vESmp^@(JBc!VOeL=q~wV6c?6_{lnK^o1n-bjz&xE{G_%EXhS3TQ6ULO* zxQrLtUxo;&4H8K7Bzd2$wXO$S5|DwXeFXjxkO+Ye+94DhRECxcYw%TjLET?uh{z1f z)~y^Oc83G@`yHlfr0!fBNad^eRf#JMrPv4Cw#A8KYDpVI<8h<)HN&JA>;M1}cS%G+ zRIFrKc=TSzzzf=@<?cE17(O5e60XrWf6p<Wfv0rTX-a;NsJH}JYpQj&2#p(SNlU}P zmB=s^tu@xwvmMPMMj9d0>x<fDh7jnAWh}K)65}`#C69}M4@5ERdcZafoWCF=qw9M> z03im7k!7)O(G5iJky6LSi4G4TMi^@`9Va|Lzu@8FzOGbGrxUuajOUvQ+40_2`&e1$ z7IEXUu2|iQt}$$riuHaZG;gX0vz%$N;@rwOUIJakh<bo-8jE4ru|CCD4D9{=J-+$o zTL2OvPT1}CRb^jr&6(2%z4y4kJ7Am^TrLxQ3V3~e!C}A0yLXRxetu@R!=@RjTCHn+ zDkyRY@mUIHe)Fu)iC3Aa2)+gK#`>$3mNz1*e4SO&Np~BDf?}n(w*1@9OMpDF)>s&A zV0cd^g@l$23E1q^m0<6?ARvV2C20U4WI~V`It%zHv3laCNAA2*$V`-DQ4+JHZ_Y$z zJSKp|y_3ka)0IM2{x88|Sh&D8h>{qmv_Rx2Rv`q_<+yW>39$(2AnD=5<hXo;`I9xK zRdC*I@k)9h`GWEYJ~9NubD#qFd(lS-ky!B?uDjSc4-zkf<QvBQ)&USxX2BX22}r@g zHPrM&O5`MJB&bx1#F8?jF$%j*Vc#p<w+i=0;;}K<y}LtF5^-IiY=b#C%+rVjfsiG# zl!*Keyxnu%uBh`LrWWSPdDwd1SX7^{;F(gOtA0XMm%vsvn)4R@F6x?N+nHbg?$rhH z)>M}_g2Qs1S)uTYzxzA<#h?Bu;=DpMz?uR=SkU(tF_Bhd{NV?<5b64p67#wuaP%W3 zNm0b46q2Z4+=-mdr#iM9FC+S42e+>H`1*o1czpTp9bR9av8)RfS7whlZC9sUbj^A8 zTGKv%97m*-u-omhx|K%f!J}_mJUu<&<A;wx&N#ll;&3?N`1%4s;PiTiu?GA74nopy z(*=)Vw`Z|aB7H5d`LxpT?Ag{@Q+SEwgE7DUboiz46v^)?#bRo#D_Qg?QZ*n13Y~Jn zV`y7g+rrug<2W)v#SkHEnji!b!6=l4I<x(LU*GQ-0+iMOt}J!M>gyun6MX0~#@wip z3t~2MYM2m`cC$$JP%Sz7)%j5O+GTWX4Rx58%eg*-wPu@Q@YKw3LRpF=00a_JB&GdQ z4j?gAuDWg-)?JtyBTL0U){(dKjwyQ-m8*?`^N!X4^8^_I-L}Y))=GgVJ2?uXy$u8N z0IoVEr6}*>bUNeV;Q=W|vRQJn<us0HZ9}>uFimZPmMsUZ>+_4f*hVp!C?iR_CSVx- zsw5TNc|~MQY>J8MOiYlHH~@X$RgCjEju?g=d<fVd?(p&BOGU^QzREl=kdoF51>?G| zD~4eQDHUFxk2PMm?|VEvJa7`7BPUS4Hg`oAQYOeDCO$;pP7=k2FS32oq?|WR%{6O+ zQrbkm<yDs$$@<@@3e2|=>virguMahA8(2eXL#+%<>D2imE-YT;YYLl-iG*PVNFp;J z1B{5U0*G0oX%A3hL`ae1L6bmYFQSCtgMxf>!jV@*X90i+Y>Hf>0|Aqb2#iC!alt|s zAu^1ngMm>5y`YgBX$fegOD}Q=iN}Z}m?&W`rJ2jsvXMDpfCNs&D<&_e_W|BT29I3P zyCFvSM7zf;f)_V7uq-wmYN5EHc+zvdIOxH`0E8m86AD6VNJXPTBPB$R&{815K^kD_ z40fG{u^9*>T5lkxGq5yJUpznz7Gl@J9(ueUU!kQ&hzcr6M3Gt4b~{bTpXr)ETl8-h zQu#(ql9QwZT$Z0X7KlISH7`4=&spZKpObE(68Sd5mA74F4$J}u5<mONpW^TT=5G;~ z6>gp&kr2WH9yY<dg!B1ABDv_1S)jNsE2)vWKol1RMQvWNI!6LCR##hVak#(3`Eo{L zq32g$eTC^lyFSMq&^XQfk`O{O#tiR?!#xZg6|j}A!H0(j9-l6FdVGTSH0D1YUonms zXsyt;<oY;I6LKQ5+b|4JTI1#Ql|)%hgQjh9e0_y(J7kgImKC}o+g;mm;+NJ~e7Nam z5{Fo%oFKJg?V&($L|e;3Kq^|hDJgM2k9c~xgAx)60@_%7`1p*+$Gf_|a%{2dx~7ul z%DtLWV$jM$`%|e%6A}WiBi8Ghjz_2E{Rtt^E}HFV)*8&qL=SJylc&_&d~>LbAwV=O z7vqIh(>!8lq3RXNf;s{(g)?$ciIf7tds+j`Yu)1`<vQU}o3N1L?4jRxrld3}VKoul z?hXf-bs;RUHLzCG;hzgq+ca?Nio{c+V!M<QXd8=ZUYJ$TW1eRituc)whQ6;Xh4TN3 z_K2n!G!+#IJYk^B4=G8z5qu!Gk&ti|w3DiaVR0*V`yH)H`R7wC?j~WIsK{9)RT09a zdlrHw7}gqob|eaE5eiz<s)5cO1YDXIkG!mCnilu>0_W2i-g_L6M>I`K6M<dNwl!c~ zR$|%<L8Y#E+izGgVw0GGt0F#MCz`o}Y0?eq3fwe)o|g{sM@4HCut#Dxa@nOBZD5qC zVmrZD*sC2VUyDsn$XOzA`d2~#M8=u|49K$3^>-NhS1hLyJ^&#r2$uQhj86*scI>Q# zX3;`X>8EQ_mQ<u6;QwEguoTKbH;>T<5VT9P#d}}GWe|uVAs|qm@+Pq-hQQqSf{nc< zJcSS_cQ?_<Ed<&ldKY=GDC*cgL>jwA9=BXAdK@GACja|(lq{}0^*7VxB8Zc)(5iv9 z9kglau#zHjSdc}6f`H~&TY(58GOPr&%upIgeu4;wu)PM@y?=sFgyj@U11Uk)(Aqzo zA&@t*s9S;D_7qUM?5lEJLb6jLzZJn{QOQy_6uPYlPyAs(O}gPd<TpYUQEe<TCp;YP z@vr{ne-8tR(XDuW`GBsoaO(moGgh|{A<k&nuHh6Wg=KZzA<_eUo@Yi>j_CUy$MXrp zFrZTs3u8Llz9Gthq_i}p6u$oYYn+cKG{&MGIw-9WL%=jnH7+x7M5mI9u3=80y1#os zPQYcH>U2j4g`6^$#j$F*$8NX7JkOk>2(-H%OLPz}U|L4>!+@dh@ci*3b#{Sv?d^UC zqzt1JA}G4quPa(h4EVNda2ZEdyywbjuOu)<htIS+Rz;J3Wt~^ZCxzGJnRe`)%{?z` zy_eRN9?*T?)-Fv+QOB?V;8~<7m4f#Xjj=bxGou?gKe01L*IlgC3IPWQ`1f%pfm8;m z%;$BiN_4HwC*#zv>uP#j)S9^b!DF}Uu^W2cJ@bQJ5Xv-VBBwRB!4eiiuquK*na%Sl zgb1T8r<D0Ba4XM6`Wih(Q6C5p83?P#I?w2=g<oe%KjTAGPN@o8O9xG(cnKv`)qM>8 z0Pg~J!-1wK&Ov3=YoG}9%FkQw$*v>o<25GwYPW?DG=gu*o~M+8UmUa{1Z`pgviBa1 zv1p9NIF0Cf1}2@)X#2h*tmk>HtE_RFFisO<$~YVj`0a1Lp`E-EWHSa$2C`I0pu*pE zO;y8><3upBhX<@PIV;x1!L2L%<Ov<zwk@o+80Q6!llw{_P-zTBnd)w6nJEJ?;f9`> zZ=hbeuFBP8Ykny<qM+@E6q3DlC7k4UJ&5UZwK5onJ-T*)F-;x4m$5zV15(Ac-XK2N zbB>I9A}@-1NP_YU2^_}>Yskn_LrB9`fU9+_e3T1?PSWZs3KO@X8*<}GFP0U71SP4c zH`YKXf;Lz_q|n5H<7M;JE*3*XVpsw;Co9NuGmwQT1nR_7%5W=<-D6Df9P^kWt~~Y_ z*(;iA!4jX13(eJ&dQC@@S7kUh`iFeAm62n>LYo#!caVxt#~~nj4<O>u8oYlv;74D* z!~1vl__HtH;oZX?hld@^zJ+QHgb@%*L$oa<H2$~$>3_wqe)|C{G@{^0++r6I6>;$9 zlzID6rVT~Ck6e_X;x^GOvoNh-UQ1$K{`@51I(5o*H!p7XSJ=1*uyHGF!-r6v1evcl z<P4EAc1?$W`HO#nA3wgsd^zLg`6G-`7^e}_JTl(Yz^8~T1VT)JAW+Hb9JJQ;VPDo_ zO+%KY!`+^`&Xi!A1|bG|7{!FuQ5Px{;a{bc_~MH%kdd)^dbk81*dpa?@>+Qv*Oe_j z5O6*cF172?wmpLPIG;{+x2=takJQPhoUq&P;8MiAE|}Max+NvCtP76ES7<5gJs-U1 zv@eC#&9H`uU<CptkO_Fi#ZHthN{)QVQ#SgtlF%$8Bd1sk;<B!gQsM4ye^r8Ojd`Z% zT3LZ9JS$9@05yF_oi0b-a%&C45Fa549i2h(sH8&I)k#x$;zc~x^*z>N57U}5(z!FE zf=0i0*U_#yv#zC#_W>};?Apy$r8+W^^>}A%v}TbW9oUqVaEq(Skcn0C6<N#;OxLvt zA&}!hD4yEUm2Mf96BwYQq=H*lD$2nVN|h5TgQwBH(hAEw!&nQgh@fe$#^rM1=1HPy zNpx5e#!y0bxWMI-5yBJ6%n%yE{B*+t>}6eRfu_B@g!8T*){N4~nc{hyrbFP>rQ(TL z@Uiao&*uwL&Y0%~L%&Dg4^?0{j;zNJ5^dW7JZYV#iPiY@dX6Ir>WU@PT7%4o#lS*H z(hXQNZHtxHI>k~PQeusU*x1C0msVE3B`&*IdACz@1+W&ZjL=gFap#@)#)7ns%6zK= z7J^6LDMMyJ3q}4%l@Vn^6cI^~z{@Ak<LOAygG3`!kra*4**j^pMq>=DX<*t0w$&Iq zgLh94c)Z&~%LFX~1U&KAa)wB>b1zVeGG4B`FG&!S$g!hr!Usy|yeKh!EOyco(kMuy zA*F`W7E)_Ksp{E}ITP|yD5T8!=qXo0TjW9@vjCDriiDnxQ6MD=w*;&%!Y6@{1R@k7 ziUxqhYe~}1KIN+-{bov%=xYO%B$u*4L`D?!+GmkKF9!pJG96e{!RHcH2U%Do7{0-0 z#C3*D0gru)ufBM|)8idfj#$<iAKi?zR+wRsRSVhgA(BR(R-}1^X$=1CPyPfN9$HX( zl+1>H_wqd<pi8i>RLH_mj4pVckrJ2CfCPsu6Ov3c#z#a-;i|0X#JR-52W2!aYG_@$ zN$sjOCT1)sarJpBnIT02vPVt<837^t4SY#*F{hnV;;&5;4+SGM{`#N%CH||Q{S<D# zAi5PY0n<2Rnr8T%um<`_DdTdv&|WaoxRD+PwjN6QzJmZ|4W!@^eZcF>3#NI-Wh7vY zu?;TMi2dCG^GdOh#uz+4Jpz*U!zo0}(~PzyUU>?ED2f`mdpzKBq3*Wp8n|@<SR5)O z5Q2mAD?$ngIRaW@ax=zdMiK(;FklS<({x4*9@Z)-tMGC<;xwM28x3g{lu?+bnGQi( z6QxjQtZqWiw1TikV_j!htI;(EcU^~GNpzAJ7FG+;GdZE@ERZ9#M4g6R#sz?ebF|Nw ziaK^5Gv>v^hX`#A#lvO^nI+bR0&t`;nA`%NJfv0d(LpM5$`Im|)&S&-m#C)=LB%&A zBTG>a;K6(JtpyNa4CyDxbwkgcm^mm$(lsp!5(3SgY-bxp=g~HrGyweEQOeL1BMVrm z&}xeufyNO2wzUl;2y<F&e}xohjX`G{DDoHrDM1SZEiJ7NQ$|Vx)8ydRfUeykCxPHI zlr)F|P_PItLkTM4w$adyf=>aqZ4p821xP?@fyJ%3d%T0s0U-rsW^t4p^l4qNy1)TG z0f2^LJZ(;>S}X_wWvDZDo@z;w2}x%7<eBP5*5>m#Vet`A8bWKV!9!~cKtXB)DF{ys zAu-J><!j7z7$l;jBpRIn9`7D-H|&vP!ufba+jcP80uh+b7x;MvkSQAg8S{L>G@SsM zFdTZ^9}ei6rfSKiafC<_ce?@Edk79SLJVAkH=3x#$nY$n%0E&;OGP?0Q9ejeDTKiP Y2LtYw5k7mI<^TWy07*qoM6N<$f|0WQssI20 literal 204235 zcmb5TWmFtN*RD+nn&81bNCE+Zy9bBh5Zv9}WdZ~X7M$QN!QCwo+}#Iv7{~wvGtA7F z=l$O2{5|XZ=+)J|s;j#8F4_COVl~tha9>frLP0^nRZ^7ILP2?P|L>y2!ua<F%Wy{i z-;KgsPTyPG&DPt`!qWyt+S<+1hF;0V!p=s^#=<(lW86jz<t2@alB~3j|Hfr6c8ATX zE^Wt(1VlGoIYVx|jcK;c`6V94K^l$&Zwu<tyU!H#M096pA~;%~7HCrIIau?&Wx6QX z%VK#^;0AA1?F!#!&_vJCVS5M*t-ZtU2**XEq8jJHur_F$NGYS-3G%C#7@|b9f@**1 z>4MUAj-5mFbnkb1Px385z2!(GSsd216)iYxRP2~LX%dk3L^}1~N2>dP|A(?|iA2(W z>*xQq@+dds0-FXG(0Buofzqrxj%C0rWauYAyVG;m&tHQ7TQvc?lQ3xS#Tq;Wd_3la zhUN6%{V{9RcZbviVe@_f<ZKTJ0Nkn@_1$ck{omiZjdr;C$*>_FvlRXE8pdV@2|(T` z^xu;JIYtZUyUrc=?M!6)AN!JaklT_Eb^RW|h=KqkWWLMmwiCsW{|+=SNyR{$E*^?t zYs>HWP8<AHP2!PT<W`if@C_Z53x3P#zk}O<Hv~8@2!>Y|Also3YORPF@WIdjF;l?Q zL6yUj!VqG_?|Dc4d96P5ZwMwnO`+VV4qfOEwcwlnh35J-p__W-s@o$Faoiq!D`{Dt zIUV(X`UmqhWeUMV3jrZ&NN9Nf-O*~_wL;%@fLT8v=k)N5;{z;+5&1iFq0gy6&MgRn z2{;G}eKzq6etsMWtoFArpqK8S+`<0ivVSHQI1jR0nr|@M?$3uDarT~XBA?oKZcI3P zEIoFIV>ycJO8(}O&4-;x7F@$3)Wv-_lls8Xz}r3`@)prsz-`n^B_EPh=kho+#FvgA z<pDs7LjVHm`I647qWJy~e!#Q>_!X!J>50g%cofNbza^I6B)>iK;{gze?7D_la3T)- zA0ING?>YMs6Bp`v#))CVW)QKieRR%p)v7y5<Y5rvO!9dhNbYz=R|1wAEwFmKRal=F ze*o_lY8wIt2O&oZ;U{_UlWQnD&{=}5PA@N&(NPR<s6OgMf;>40<|Nwp8n{SX;2VTz z`fZT9zFjbT)bDZq`O*z=k}n2RxfjozBNTy&8F?Y?{>?%#1(~t~8(-O<`oNJzfxa6G zy^r~t%snV8$a^ZnIQX}#6U63TH@+*!(IEu!{2p-yge}e@7wbD8CT7>S&LusbwY|@G z7wr!yR_7%<uFBm+pBFA9Kt68JvQ+@|cG_?8dTz({+RRNzUHxeX;nUJz8g%RcHb}MU zFfg<8yqU`CsrqNc^A6*954t|^71>Q^3H+k9+u0mr=<m+)XvAQTS3XU*>zJR!>~-H6 zt&eHqte+cg=0s&uFqjSE7Y*2TGJBK(LMNQux}e_^LeeL#8&rOp!hr$vWdMAD=jxyS z0H_IF&SZxBwkdn%fJa-Vk&Ze~2+YaswyZwzta%5T=OzXX0m0{nB-a5*hpxNe2M>#f z9N5hXM>k>T^nnr$NPHFo6mjl@gZphbi;v%1Yz0R-<t9M2E%LWR7CCw?Bn5zd0mi=+ z;Rb$ygE-)$czwXNo^yUBQ+gGf82Zic#cHIeUjAp$4P~h0@Ixz7q2dhA1FyS4HnMC5 zWXE24eQHI*&fetQ$#M2P7`P#e+@SNIr(3h&b#){RAMTFajCOzwJ0|8I`6;YC!>-_+ zeZB&h1^fqDww8(avv-y9f1~dVfUmsFV_J5$kk=z7fe$h|ZK;&Erc=#EtIwAjZl7JR z6UKYNX=?`ozA(|GPb1cFv2Iv7)k#bUZ6=czuwT>lF)EWTuvM&4&Zq)f*ts&U7-YM> zAAr}rN%CQ~<4ZyiO@#Na>_2pp6{LMj<2U&8&l;AXavA6Ro#JZ96&n(CWd`Z3NAz6u z-?%*w2f0f2wgv-T$sZ6~v)LO<r_Z>=XU#)hSfK2RIU8||lEB%nF{6Zsh8Mt1Nu*#H zVUGn_0lfEE)_9_bb#Ev^I|z;8alI1sN6hF=K=pk7@%pyl)v{R5C|$9~Td{jruj<fq zyHNNZa_WfBq|;4F&s5s`=Id$o2oRztq9G7;(6bzbius<=?Ba1^HwhtruY(j>2MNIo zWPC#&+nvv0WdJ}~txeh0q6&1!E%ZLQ9SEOBp3AL@!*iA{L9D<&pntR+WaFJ>S3tf* z<~=zNNBb31x<pTXY$d2;svds)E>JdiY?@Mh#;W~z{okT@d0%z67gAsYcBai#DwX*5 zr=aV=j_$Fq06DE5x;R<izaJ^X(2MuQFFU&zH~;fP?6jfjeRwru%nxv+;wID}q;YOu z7@Z9zFv5=t0ekExR*50gb@K1E_AAWPgLluCj9h=Ii+%q46SGR<xd;L5Z9HLvf=m{g zB;7-TQ~UNwIQ<7XxBd;{QGM%)vpY%b@zjWQASlRY4Fsw`H@zvv2aR~F(ibOP5iL*> zBFJO~HxsOkzhAh_cqxo_f5m#DedT^s^upecVs(Z4UPAVVOq##s){uA{0o5?PF;0~e zGCJvXhsxqcHiWtsR@B!KAdt6dY*a9sPkH~A6(Ng+4gfkpw}KD#Y<z~Uqr80&adq$+ zx31eivl99b=~vukJ4Rsb3Pm*totcF6_DLu@hwHP~Qtx9@9(N>tl9<#cq&FgiE<_!K za!GY@DKj1l9)1^c?UnCw-w)jcoR9WF@7+QVQ<L(ckQNB8g>NKdb=1|Dge<)JCpetA zYVW{KXoPCFS%wlqD|B7EMDKE+<#&bF3+#t{Ng#3+0)jW<F2pBWcZx>;;0CNF?-R`L zcd(bN7uoLQ!g_B`XvmzFU<W65J}^;`=1@?y1X5-imXrwoD;8g1OSCcz9v7xa^qV!1 z2$D66o;}RH@L+cdWxd!aAo=HU^_`9%E%yYt_`-iJiX~;=0G|JCV}AGdnzmhkuX7|J zFaV;B6Y-i;tOGQ0b(C_r^hSs732pg+4#apjY7bo9QiHi6Fr9D%|9aO45W4h0MI8=Q zkbmvxVlz{>X>nnsA@h^@@F_vWQO@->;1P8r$iTqZoUCOo$coST9i&PywA>zv0fz^r z2e!IWM@^so=mTA)IU%pOfu;9*yp%x1{qbIio$!eJb9=RBug+@swIN7bhTARhM3Cz~ zvB#b-T+sfT|64}M>N6pb$wBaX*4GL@U`vTkGc9Nf9Q;eYfK}zz77lh^wfFkl7uP}d zFATCFtV)$1GJ-O2m2bZ;2-u|p-qjWWR#$_sdCh#G)@4UcfXTB|*-fK}CEQz#d4wc* zXsLJq0&bp^C#Kqe(}#IVwu3|w|NE%4ahhd{$aOkZ-+9!6mT(3<c<-L{XZr(nTkfyv z-fpyKsTCzXx6?_g0ua?^x4!_0MEuYb&gb)&l8QmHe%g$_UT+BVLENq@xMlZKN#Utq z=Pz-I6=7B<?gBeFIa|HEw{)&Eu$8ww5)m3xRQ4onUq`zrigN@dl~#ik1@C2cjcFog zLCZp(i81Gv$IEq@W;5mlZuSXXqO<M&U<3j(x@(M4;<x!xXz;OSWtzDl2o9l>)czJC z4em*5n|=GmtG_Q%VB{Gqc=WB0h-;6mqi+z;>@hdhJ(wcnZy(gj%wrm|<28A*jp(T` z@%S_T9(o$QzPVbv2vw!IeR$JyYXeNjfdZg65qHpnK(cM*`0QL5oT{afMF(2ai?m9b zGeR6-o>934W5eqO0q8WB0KGa`uwl<W=?0>;fT`=e>(*(Mp^FQC<rXyU2k(YR++;{( zAyu=L(YjscHc#*K!D1u0fjC<lu14CMy(%S}f)`Piz>ot2JOHM%XM3x>bU$pmA$Es5 zrfL_)cNFT>{BvtzY5sOAQS6_QFsVUm=-h3yj`fUN+dMsPrewX2!j>I%LB0loWc7QG zl;<10Tner`=p~^F*(&QSJIhoPjML)e43{N#-1!0df({-&hJVHSVdXw&;BGz@k4tvE zx!Uu?{oLRy=CxF?*u|`gsU+2}fXiTGcE>FoXq*{DcNX5*9s--}2d%>(CLa5Dq~i~< zgf{{!^P;p@?2_Q8md6w~Fh1b%VDxM=^pfmUkTy8p8u(&^((#xI<^UwYJe{a8QNpb2 zN!fuG0HQ-rYeBcO-kk7*VNBR*NPs2u0r9F$u>Dk*v-1JU8Sr#(CZiTE${7(fYG5i; zdaKyH=Gu)?xSW%H`geqvMh1{*4;ymyo)y4o?QSg=awNZYX2@r>TjQEG@AJ)*4)Y4) zsfUD$@ANt)wq9snbK!p+DH2sU>~z(~g-XD$w<+864=8W!qL&&>F0+moC}nDW?pE_{ zXzL12{!OwBA0JnEV)G36ttZILFaLEy9Yur@SNN9-i`l3Q`UlJW>3_kisK9CPbb1`4 zBv>+dXLIKfmlFz#wthbA;-8<7+JMLd9?_FHi&W1gAZ)P(51%Cm@+9wRp*J9L<s?^L z@yADjkjr^hXr6lhWywRT_p=V&87Hat{jz!q;GT`Hyaa@dF}z3j5e#M?x57`_g1jx0 zwBNeywxkQ0R4ou>->q1DT3rFUXRIdMCigxBmsv_1ZE?blM-&!kA-T*PtBIR49z7+h zA3zvF{a=3nt!vH$W_xuntp=@@5h3QC0%YElfktedJ~8?IzA!cX<Jhz3EEEIgB9G3o z3kFfj`1U+Kxy}iIM5yLIC$R0z8qG>qbzf1BJjR2cdjva{t*$5%bPHywvROg|&cPi_ z^4r8V`41$Vo#*xaC-uRDMtw&|t37{*V~?bSE^whM-b)f9bf=Cz<OueIf+OMjn~31U zBK5`o03e8nrpL0l6W5X#UNDImDiH21O%e+ZzeWyYZxEGlAfIXaZ|8-=?E2CU53S(9 zwtMGNq*K`}V27Xc40-RoAv&-%O(~b}_MHrO=@!iOO2MzAh<ei^`(ce@=1kGb+|M%< zBJpq8Aj=kjt3;@dt#lP}DoS*E2k;aGrR&nvgvkvhA|#>j#Gl7I^`O;A6WZ7;`wMby z>)j<Y<PFO9X$#E<)zpPtiskNsh1<nhuTI5xrUL|$B!>@zoz62{0W*Hjjdmf(B*4Mz z{-6@ymvp^?WALQ1#0Q@r(dloGO!ak-N(IkhmDGV@bf;m_bS0@W-OCjqe96IGmxwU3 zB6Z0=IisA-yPj&YyPw)d9z<5+y?$tF1@wLUzYtatn!s{0Gr#3l7{q6_V8=LgSFHZR zIdBy#SGaWNZu*4vP0%3@6<!`&mwa-5vwMl3;j0cL`>Ma`sN?JvktvAz1zy#`%1RHY zhupO*)c3um;L90ve>{*&lM-3!U3oHSTGV4KtvQssF6eP9(sRX6AQKwXfmGWFyX{#E z2yMd|!4=J#>`n|{wQClcwcUmU7^9X*$oK2foSK6D`VawrK;K6Lv$jqpZ%3<?;B*_e zj`j~%n|i17M@^>O`o~2@DwuQ`E|P1ldUU0(KnxDd(#=XTPRFJD**&|EZ%A3UN6El* z;wu1i?k{$jp4(x&`aRyjVvvI6TtU6}bUGDgy+j9S?)|^iP7lNKJ%>zdn*;HOlI5+A zq56U8U5wgAvoRs>46GZ=5p)WR5YV1VaBooGdX+RF$cv`kWCAZF;^kbyXdW@^`kus2 z51vB95YA!|jjchH2mTeR9h~8KA(=P$q%O_)>j|P%i{W1E%gK7KZ^0-nm5+*zTQI^0 z6S1WpG8qSgmaNkDJRB0_fy_Q*^a>uw4HlZs&jW);LH)?cf@Y9cAMB>t)ZZ~?gToNG zQ4Adi7X5wJOTr9#@+y!vgEl#xWlG+-14!e>W61bV%U|nN%;pCkVh66@H$EITN}iV7 zjVh`E@EU#NlO5Ftvz~$Xcir;pXgQZy#~XX{fXdkKZvL-kV-LD-b|%jP{VeA|!6}B< z#a-kk!y(R{XD8pSHDhddYv?*rY+AOnRk~dir{4m!?r~?#=Rmo*P_c)NN~13LhEd;R z_9_xyAGCw?hKD7DybrXR#H=7N4m=1g6s)XxAcQALLgov)Ps9uSHzoUy<l2)Q9`_dW z1pEz%Q=&r`@r?tmknM=6ggc-9d*uCID4h=oSh2mmRGCB=jO-s(pZga`d!2DUx0~%2 z)D}ES^*^~1atc-mK8&>8nLUmjRH#Y#T7r3l$i=tI&TTsk@<9xIu9v1%TNM)>TXpT* z_Mmm8cXmm~o428TS4`pJIkz1}<HOX~0N=i!sTTQky<38!T%}_Z9SY58kb0E>HU>Cu zrgeT^p0;FCfN_f^-RteRL`euHa@Y%jxIpGy^xFpIoXWc81^_4+t%N&E*~mWQ=k7?{ zlOdlJLih9N0xv5t*kIjBuHv%n1)Q{15J_?O9~t;PIi#a>^b&W)x3BvibUBNI5P#_^ zR^bPJ^Rem$*T81Lrxtv=txH^ZZ0enYBvK@B@}fV#POO1DZ+S(@5V2wu3%M#Fc(6JT z5nkB?!5%B<Bw9OzvmU+};E5WVU}2po@e-*obU4@PX&%=~1Dal_kX@{`6gIye&&5$S zy?$o5e;MdxHD?C1UaHf*s^dT9<#MI%=9v(Vhqk&scAX&BuFQPltGVa@_SZr5Tas;Z zsm0ixLb}saGURS-v@7%$Kh(@^4q1<=z`v^pBCpi*p;v@V?K*Rd=9SUJu!n<xA)R13 z=hJmP0u`Dh`D}OQ1H6g6+jn|c43j_w7#b`%nLd2}PyYJ>T1MCN(=>Q{8G*PmgJY+t zOLF~Pmy`By>7|wq=!XZ5V#YiVwL~YFe00BjM+vF&4psQLcp;uD-G9$&JLfm~!{ky( zmQ4PnYp%0JFN(B&ua1WD&V+-8|4P>`LLy0pvT6~Gf7N})8M?=B)*JAvJz0J8w8ZM& zI`Mhn>we@!B4QmTc|X_>&A>#=SiR2#odXf9*_6H1k7Y0kFdKfT?S*K5fV)*AF*eZ_ z2_}pSk!cST2PBc2J%}LlIRp22&k}&Q>HoAbiyR5W*qatNE9u$J<B4>z0b*r#;h`Sc z%zaMRo46oKKDmK;>2rC3Sn=BytXvAVO-g`9vj0u{M04Jj`Q5H}$U`z0m`KoPH(%OM zT?g^xIVE$xYzcThvno0ZCifeF;6qM=RaB$>{PUyzghd-u!NR^T{wY(Z;EtLE=)T<Q zC1AY>PLoHyW-YU{t#AVSrLjGG2Q_<Kn@57L@bN4lfMvPIZ<LGI_!7NOY;N#@TL^ra zv-e@-N_%pLf+af&#P|@QH~)7P$vQr+zOc_<&nQ7|$%h$eg<y!82*F{6ApfSe!26KV z{*}Fuk=&@XAiCPcm4`|Xa2+u8=Ai%C2p_lVb}`6iDTlP+q?w!Ag%q6M+SW7RL0p_w zWHFIU!*Wd18D9@+;yQKGxt}4+`Eidr(`>uBbP#R$jC)cA2(^!<@Amz;4NL1lrp904 zc6-;X7tS7}#5b1#yMckHhtZ*KUY#K~<_ehY8GPmkw4h(lPl7<?Vy`q3fe;6Q%nEcO z>aG??-f`l?;mDi0-lT^DgFDWRUvC`M<Qz^Xsw;OOZua0>p!_5f`XyyF6afF^zrTkF zQE&je0HrtkACdyA0p>bsjB<M(>-4lzzIk)_&r|iiwa78hDFoD|iMjJPz)eC~=J)hX zqL*w}W?+l5t>5LY>6QnD8R#btlv||Rc2GF4Pu}uT(Q9_budlZ#*3{4W@@w0X{2}TI zI{(c2Q=+J^d;Vj7Nzj_m(W4rpyLi3Hi?LenQ!@U4`9#ud{`0%4(RRSSQ7DwrulGr& z05K;j5xQSQC;o8L$cc=md)|c51|5RtmY|-Bodu;^QZ|pUabUpXQvcH+0D0T)c9+~I z)+fHOGeRwPak0A?+eTMb>xa~E+d@*iATBoTVcUL-4*)1;3w%=YQ;sBZ)gH_NR5nro zT}mRQKv>4&u?ysAb)+eapQ$ik!Bb26;YP^o{%3^xVp<?@<LcCyv0NJK(7jnYcUC^u z^l9k{TL7L%{=GLFEt_(b<$COAsZ!WqpHt7?oo4d8Ra5Jq0~<aYuTLhW!h&IHX?ukU zA9oJG=_9>QmL))wlmv0la)C;xxzm<W3Ywk_quC{`dmQiPZNAfbI6Df>%mJ&&OhzbO z`~l-Xg?9EC2zScb)vF>z`Xd8d0OEBZ2b(`NK<FsokOsf+R(DqNao;WEh}SgmZ=>pd z1&DFO>|I&so)uL{>2|+78mwYReX~I5IQn3rV51m-OjmdMqJ-QqexU0N$GZe7j7mJu z-Ts>f2=F##Sv%f{n&9JWhvmS{C+DVL83N>8g8WggimG*s)on`^F6=>9>p+=Kn&Vo> zZ=f(Q(NAIYeP%Q{Lz$cR=RUP@BEVo;?Y*7XyLEJ$(c>E-JHRbWC#OxySu3&u`hkmX zB!k8d<o6R!?tRXxx1Z>$o!hd`!_VWC*}>O`Lj|*~Td%;ky)tBi-@gpJV~;%X0ilcV zX7rg!&NhYbbj}1E*Ueh##Y44lA#Iem#gd}6^~`ylZcjHqN2|x&p34fJ#_+`sCjQ_f z{5X4|ofWj(mnIQAKj==w`y~wAi$gGHW@M=39H7WNQ>`nSZ*2J?G$Ff#2T4HBRY1qZ z{QI^YbhQ!FBrC_c*`QSFcoeKP>fZ^7@qDa_*giSNG^*^eW||=k|JQkp;!iq#JNyU1 zB~5YM5`uFx+Ut<q`iK(3)4jOZg|~)g@2P@70X69*#4d3__e5A{MPl{Dd~u1x%xtaQ zxPS@EUt|^6?D1{1dzx3){GgCzQO@IB=-ndx;v2$v=5~GXMiRO<ek6*V5~qWjA=c|d z&Lc1%NH+YP<IYQZuV@JF1Bq!72mG9HH*Y!tm_4G=W&fb!?7K{X%s-ueJ_#@lp@H|o z=mMY3&O7r8du4j*mZ$GYU4}ilp}-*z*QJ9iriFez!Ax<;N-OJB!pURZp6TTytyp?J zgb2U7<l6fh2V%j3x#jzUIV@*Y2!o7j58608FIUT7YGo%Q!aL^X?77$vN+~TZDm#at z<Q_D4ZHj#y8njau<N<vToun7_)9Bsie2n|2sdpoi>O-yzg0Gihq?;9yZP9HtAxkrH zJaX6QeO^NK(nhx3?TZx|OD?(_YvzG9$aVbQi)6FsZb?62PFu#k9&4rd=6JP`3Z+kG zor_*ndAJcM<g<&J)a=8y7^g~fiT>z3jc-KvWgSE*@LF*0gMfuI^si1iN<O2?jqlj- zR%}erG(ELLK5YJdbzjZd?a=fS^`=bWPUKAby4LgotJTtU1Kp|FOT8;7nQ=3++7<rY z33=B}7kZp22KtqdAWi8j6ukj3i>#-%-c><*eMy8>sBv8M`y(0qZ_6RU`zN7rEA{7K z<RWl!YH)m|&`eGKALn_j@%%DlxpeYRE(y4V>l=rI$Wu--nk4VLlX62Rfzb7&UKptF zV2~4$LMDEtg1BU>54dM52)bF1e(=*X?c5EC`(1`Vb2QxKD$!-29{l*`JzXCpB<VTR ztPgo>_7tJ+hNn3-0HDgQ!soveKPde#AN$uKuTT!$X%Poz{(~+c7>19yatno;z%Q~9 zz*U+pvwRP8&HTRk+rFz0n-y(GyzkXGC6`633JO{OAhJX-)#p0H0{@o>22A}UL%6Up z3%wFC*$o-!KZ(`{7`x~*-!I~iBnWdmbJCV<7N-LLAMO`ivP0=tGK!0SjS48%BzyD{ zIQ(x@Vt?WTopz_)-yCIBH4_&6FG#ZzjEAOv>&V4@5<B(?ND5nYT^hCmU;V?8AFp<Q ze*7Q4^&e<wH_8I$`2Qj0{}8YLw)!9X^?xn@#~=Uut=Q4%{v;mYY0QDmxRTf<c7(@= z=Z%&y`8$}MWeP-+y+!$BfrLP?{9R^hInG5vaRE8-{V%bh#qKYxzPE0^E|l+FhU<X5 zK90-R7YD%Tm$0I&J8`IRtkrAY+B;{JRiTg!rkOlA%mDwryDKV)4Z%C|@|>n&D6yZa zYdJZecT_Z$HVLV=3wj!k2504`O33sIHa+})zJ>b5A^>8EYwEutR=v&-u<8Qqu=m6# zT+e!I*W^hjOgtul^s3E|7ub)m;R?NAx1agfLS=WfiZsWGccVYMp7v5NC+L4`^f1zC zPmwHmQHFM;{otjZskrDb#OYt{)c0B7gn=km6e=K&VyhkqbpRgF4xDuR@65Df=%C`p zyz7GoF4~beMJ?d4iNr-c8F?>YiH+(LLj&^g!!HbF?T+unF8kutx##(1ZeV9y&%J^B zi=g}7n);$3&-7agGTVX>RB+e1F}a%4bN7JPDis4ff;N9h3(&vBS??~x<QsYW`~gwe z=_f(Amd^?^W)?s3kl1&Oj2!nj4*5FezqLj-)~*w!tNt{ceR3Q`<VBt2q42|(0%rO> z=u_jYVvSxepIOA#WkZL|T9CVzj>)QS!QdlphhM{bsRazw;y0jd-{$?DnQK}#Ie2ny zW;$*1vg_TR=H|hbVJsRVjc@d}6N)%3kAz>0cwM_4b4AC^C_UI&pG5k3Li2@2g=TMQ zbXQgLu1!L*x+r3{-_HjOIJG_dOFY()t`~0hygJC2VCSmxQTdBWzn{bV^s-_ZJDyb8 z^7lci<>cEei{ci1Re4O`U{WEfT&4$=eh|?J4r%Pzd8q@Ls`Ka#I#JZpj{WEdSIVnl zC+8LSoV9mo>QTe*YvK9m2)vBMpDR8;Y`7>&yf9|t=Y=kiY@vx>&?t+KF{1ARi8Jo( z|K#E3d`&4ZknAVj67mVB(ijYJ>XP7!p&5OrCxkQBppn^CxY&A*VL9?`5WBWSlXK}_ za+@4jVr#qR-+3MzOF4ViC1^gK6xY3`EiWTU9$P#@Ka)Nzps(y?+rt$5^feJb;%U$N zyR}Vd6o5jdA4<*iDoO14&mDL_$|P7h+KTmjtutA0s0ILelAuodBdFUOa&SVHH&c$F zz;^yRq?a^XDLMHIV(wjxp^#t`EPsrnmye28Cx)o2Bx^~dcK;?rpq7fY<%Cx<$!@Pb z+O2!hLjU^2W#HKBl8pbldRx#RZ@8)HsIi_*=|W$q8?=1w<O#QQvn(dzlw--|73AU( zt{M7Fo@kE2@gTyrwj|{D5EKhkD<FXfgqrzgkcVfvtD&`hb`bcI!B18Hm8WAEp=0Iw zOGdp5zhy+?*o9dLbf>$=F6X}2-8u7STW~2>P@!)-c<AlwDE(rm+6=~%Uy@f(&clbZ z?61=g1~Cu%mi0$#Oex~D{Y5Lc%|l4CvW6hnGUDH7Ok8dXoGNp>+MY>95fl51IH;ff z@9fiVy&l~u-bIz#H9(&!a1#F5Y>A122ZXvW(c=gSunq6tpK|PL{aC&U?I<YwX-qpg zG{QFS&;<J-e)PN6Yw(B1R~U0vZ4AiT-)wITgE*17y(#S0+T7)**Mzm=UlzH9pvw|! z@X)&o1?t=$_ilhLNFfZEq#5vLeLvt){%xx8IW#~NVX`a1jQJ|}1y_x|xl8!nyA8oK zk=$*9-c3l-3_8p!>)K3K8~yskewQ_LwWuU*C85R{Z|aYryy<~cxlh$9MO5_fth4*1 zewTPZF=e%!BA0iBChpEDwCmB0Wa6Q%27;!~4L>~$IZ7s9jdFxb&+r9Qhrs>&%V7rF zSC@HZGsSslsZ@cXIJ5Q2Vw>q`dZ{lCMwHH>s=n?Y$lC-7l@yvT%zkyXYT&WFs*#Cn z8Rntn5#~)Dnm7>4BzBwkHscFg7rBZwSFe2xinkZWX`>M1n#jT?;kpjRLp7j!%+o)X z&JMxnCB2p^8EVRQW}3y&B4<wa-GpFuuRZ_9Nj(IoI40@}QR`;7yZPXfslhn-F{l#+ zt6sXbeG`7*iNa}<Th2hIKJiHBE@`Q;IE07ld0>icN~uAl={ZMns`HrTj)ykte$<*0 zcSz+}MvPMC#JR3e(x`KzbPqPXluLWZc6Q6v;~4DdZ0|a@#KU{sXfB}NmCT>3s>z<y zUNIj{NsJ`SowdGnr#ZX~r_#gI<6NL`ldg-~&uM9s&*m2=_QWqh*J{w%*lqhfNS&ND zym7Dd<JfY#^UXX~)a_1{CR;8Ku`lvf$Iq#CUfa*ugQai6h`FQpA|0}tuyIDo6fw#C zP=w?beKVK=h9~jco!nbF0vuevLq0wSkW3ab4Ou%6*$(-<mn5EKGVEqc4ri~Nr2jB@ z-ES=W=kVIi_zgn7o#DtN$;&fkQVLP?6X`3kYFW*8{_WV7X=5kxC#RlNEIPq*g9h;o z7gv2AfizG>#_S8nckk@H^;&S?qfJhy?BEghWKjKOu@=8eLAo6jCHm#63I{K0=DsUs zteu~z$`1_Ata=`1)&8Iw<rkbt;M?tG9UG#GNxWHBi-T@Z`Fs6`Dplyu<8Km1ig!=( zRG@YY(m!xE2UPGHpyRgL=Ff)bO!-;Jn}){+KTVmmVr48*wop0|=$3?>GKPszeGnUZ z%h}=B&Yy@zAm{uodh{P{km|$6OZE@r*lkl*HDxTA-?%HRmo_0<%Hx^*FeD!`DxOX+ zVGNr`ct}EPr6TGr8JZf&j(MUpxwSh-2albdrjWw)Q0?g}|H@Cv!Itq&70UzTC|<I^ zhuJhM-Ef)3Y{K|*6vk8?q5^zS6OK@0WaZ2U9ZQwsUl-RvUuA_04*gEMU{f_|E(OQ1 zgeqhI#`u+5Po<rkEYgN~Y=H9lGTp&qJpd=?vZEvJW8bH1arp_et(di;wzM}YOX1`U z0N|2P&x>vZYO_Fbke3v31pOX;ncd+Th^w!WPeqN_OD(h5gY%Q>Plbyd|Lq%Uk)I1q zX#7{7G)B=+n%pOjzBUsXV5;y2@~LHfDafDvG+Uy7SVvBrv@q^?rL9z^Pi%Mc-d`<S zbI&=qu(&-OwA-TMIWrL?E*RfX8*b5D#f}|DNOgEf`DnLG&i=z9rE)$AOyc;*Qli{m z*`(Y~!=ilcNpEee^tT%JY#&?H;4XF8*)Kv?D2S3Rn5Fs@jZUlJ!FWWc(&RO{Rfe%> zyK0Z4wNbWnIF%LZ(9{jBcb{@ByJqYY$5%%3y6HSEMf|wKG>L;Q4pkddh8TJS+*>(F z$p`XA%#U*B{jcoYOkAi>ss_BRxb|JD=()%qB$J@xi;UO--)5Bl&}*Us_Cpzj+>#C0 z`})4s)Qqz-C`8PV#}Gz`ESzZQGw>&ceXrO?!}*vn(vvN-80pf~PBO|?n=y}drI66M z=cVp_zjSjtB5cSA?`-HQrSj_^yS!JBjZ>;_nJkULw4<re;W@#6i?dVUPqX!|YKUCR zMGxs($y&6+|1d3Nljwm=#nE6rb<p-D7m|CKt7T+)_7l~#zI=tcCw)Ncv#?SkR~N#~ z#6YP(Crn{iUKw-&@+iJG(gvtxC3-ZobxsYkk>JdJ(EppUXJ8;}x=_B7K{RFWF%|Z1 zaW5yshVKq_+i1qMPvMfrnr$wXwA*hhO^u1uQ3by4gMKcxb-;4oK%!df%ZNaWZ<jws zXZRbAVLB`hQ2RPA6jd5T@1!L)MD}G&*kVDCr^5jSc@_?G-l<GoT_-FJEY-Oe;plZx zJ8mJ26HQ(Gg39mfjm1=9B!^WT%lh~Ju1W+~Ti~;uq6I*pjf?~bwR|pQivCNUIw~_m z-0|y6J%&!w9RqB%;$fWqa4)~-*u%dcOEiCb*VJJjkMw6BN87}bqcTi6CP+!~C|G)W zPCflaiDh2aLw{&)%XKX$&|Z{zDE(3yeId8Rf98*Ruqx%mTmBw&TwUhKVnJVA`g_Li z=c`+%R1C3E2O#@3y$wpu-j_$5^+B#v)w2}VvIPSnP$qiaCP>h{d1<dUkkPp}^37|O z_c<p7YsDs((=nd~eu{H3djCdQ)R-<3D74IbIF01kedVz6ZNZvP1X>sna=rf5K9XuK zPa`$ZMm;?sB#Udiesuq4fJ>Wx*B(pZJi`LjKQEQAgFl@VP3uw<`N_N9#kwclFbT_d znbr1Ni+1A3uYnMB_rhhAYBY_ALWC2_kKd;r-@`M?DfY}Nl5Gq5(79I3FDqmJ4j2r0 z;mN$kUL~l4Di*JARiRdW?0q-n!iBQzY$a%AOz$}Q6iH=0dP)$*-5N>RUqGGV5z0*u zRyin=xfA4Ixh>7xj>8k+1oG9`&JaeDY`ZTBL!8(&Bys4~gk*(9+y-d%og#FK_2CA^ z$Ku;`Y?`W7-d^m#><E-)mjn0G|In<DqfmYI6dB^~lCfeYkjwUZo3BD~k)<Mk=f*|* zYjtm3^B6C7(fn(yUfk}N4Xc&56hiJK*h&Y6h~((6S@B~6lu`zK%3aP391tq?{2?$} z<~Q^vKviI2U?fGKR1N5^hiX8(*qRy2xU%r=538y#Lpb>YPb`|1{A#5c{^Q~Dk8`UJ z`c07HMA~c@>G$Z29$bkoUpqhPa?9X>%iGw|T|Fzi3Op=kV<Ha-@U&sz2UcqgWqN?# z!m0j)YET<fkMdx=^&94&U_-VV6|_SoYhMm?)-(@EO(VO4XvQCYtUpEt9zNM-{wRZx z5Qy9SId73CFD3$?YdfM|h%_84e-He6zMoURvh2vaPJVt-oNOExZ7obnSWq*S{EkU+ zkxbQ1-61vpD_PQTafYsPAD%h4zeuze6J3C%di(3*!Er{kZdZo^mzcg0aibOtC;91O zix)%sD7oZbjy#wua(nV7F<SDG#F{f4^mE!uDPorW@3`tROdPA++Jr>Z#IWiw@RG{t zS+Hr|60z@8duR^ntmT!AQxK?zrKe@sCiImP3$o2E;>3gspt|<1*0dg+IdvzB8^(&% z2@TZoio`1H1)AVhQXIQdXoH;{L^$Y(Wl_C;U7x`lQrQNN6{qm{xKP!YRu0$2{i0X` zs!)Fa&P5Scqoauz)ss9XG7d09@#$KmGEw@<{Ut(@<D~dRXCNk%Ta>$I^TQA0FyiSS zq+|-rcE9Z`b?x8Pof;d?>Et|QORCHaG%lN2)#4#Hnjj*+<{RMeD_!$SF?@C?tuaFs zB|8BzXf`v)=@>!3jZ?y;cytF<P5PT1iH&+CDCIY6CcYt}13zft2`@U228j1K>iVgn z!hT56=nJ6Bt9vD&`ez=x9|Z7}&k^qBm#j+l)?4B?)J<!wn46YGV?@Mg8Hz=ihly-h z$HQs$#z!LySyDp=@z!%OWh89icOokD;={Jq6f~|=yM``XJf?CdCtAE#BYZqC9VVW& zA$dMwBAYGs496|989~lP0Uc$XZbG-q9^*Fq8YYcJZ#xzFL8CN-feRP&i$$6EZ^c1* zQWw8c7JuVCP-r{ah_%-hRn-=sSft8qp}$7yrq><rbQSG!!Y)HoF)@;jzrXzygO(8Z z8Mckxf}WFDniBTai$te>{FHdNlR;fr?CN**Je{<NGT#C>J$ZRG$9|U9WYd10QQ5#P z5$aFcL=peimJ1ZxM#>L!3hZwNG$vTS@AG{NP#&ignhtZ+@SVRfu@|r(Pt`u-*TFnF z+AUs8u<uUd+s;{m)`&LfYz=Ukiz-JnaAGY@r2WtdH9$wUs%aM;=D%XbMLTXQFD~Qz zfW7Ygld#*Zm<7PQG#1bfu42ZiE`w^Z;=M36JvvU?K4+2o{AIHxepd%?clS9UEKQF> z=sUR4?mA7RQt*|~t#0wPDTfv~-dM@}mbH1o9YTRpOF*piYJ<>{|J9OD!is&BCr12B z3t8M%<K;>m0Gp{}bttVa0kM8DVmi62?bI}7kPM}?%@SLm)Vao{8I#9GUUt%@ozG6r zI2FSnk%Opa-0OoKRQw}z#gjqG?Z++KdY+E><i77tH3Vs*#Z$yjV8x-=zgYE0^m%@$ zF1b@B<;#g(oD7zMX2om_C@Kfusu9i3D!<jem4YMN?q1-NlgRXJmezL3|6;gIkmf1} zihiWs-jzT0@m*u5sdzDe+Ega1B;c9xg>!chJ%-~~OoqHSXQ!hJ<&QY6!AB9UZ((<z zcGC*YoH0HpRea@(KV&OkWq!$kh4N->tG%+QvdEpWlIr6E-rU8kPkDzzpT5vzCiY}5 zDNt5A9!phgdwkHB<dpg}#7nGRONb#L2a{Qre`=gc;0#^1dy%QS%K|TrQ3f!2?>2ep zuDglHw|46}L{C)0a*wK}7!9sP`#Rf16_+O0)WV{1<iG2LCw6z%gVUm07|c7v-K#M5 zrqU5<emQcWUB2#7xbqszJ}oUHvjf?1Msmz<h;}BMj6%F`noaL{>E3<ox9Nkup14Qh zJF|C{3m>GnXG$(7QR*PbDdH#GFQk2)lSR?O!mO0&9M#H_Y*K}B`~dQv`7{K!9i3xB z#D_^)?7T|*>8wqns7*feqM2+{Hyjy9!8aaGIOf3_+bmWl^g2yLKCMv`^y-H7nRjuE z#}?a?lncdOf>#|VveL&7<ry*-$_@MQqRnd}TmHdW{!__rF-CbphqlnXIXCl_c8XTB zw(KNZr{9W~85$e8)X)#sBX?Mqa6|+O%0wDX3`y;qz4$%HpKtr@WG4Cs@pOMXe-`r2 z3XA>x?tK^;UVYX0m`q`jbM!o|fdGY0I8KD_(zR;Vj~yu|6fvd+QZeDxkC$jH(lyoi zz7AC=MS~CQ0$m^D8D545ap}{-Gpwm8E<F1Tct1Z@c9K>?zQq19<I~l_To8+i^8RvR z>xg3nxci7xRVFz1T7Ww|@yneBS3ruG{N_ho{#Xi6>kZzQ2}#Vq#;ya<3BHHTSi~%L zp}vci8^Zhk0^$E*;pKND?<BfG>Fn%st}i8@NL3Tpv%;_SdD$`?7gVc%DAd`@erI?P z^!~_>E54DW-ODY^|2@Y3o8Ir_wK?3xuLmH)ir1Nn4aD9r*x!bT<xXOhva_KF_8i3E zR5%s%0a@(c#q$JC%TXtHpCbFXSB&1@=G=;2$eL_YlFqZNprCOjjP=->aT!U+rb?6} zT8Xtfih8iHPNh2LGxTzchkIy$eESgI_15Jk{P(P2nn1WX|APQCFZkL9)yCq(8wbaZ z4Dz|#eSe?Ysb;ijns0$q@)_R~yWZAtOmI|F;^#J_XpXQ+)uxdQR~)smziD1-Er<`t zVg82o?t|8jzbBUC@f(rrh!hV?mUdMybAlBEeGKi&7xHiAnO`fTKl<$R7`?OUi4WB? z`v3+gy`be|mnuS`C$cpZ68-T4$Kg*0OZ6}}^H=Niv0oxmE8J+z6XdlRDK8^b(#)u2 zRM~8Xho$1atCXPsj!)6w73MPrW%R}G+M!bBr<=*YC-BCPX@0ZI>Z{*PTkVxPw=6aH z@OsgkmH9R&-a|YjPk3NRLL{7`wY1WJa*~VCdV(5O=;X$NR9z1{M^%n{o1OeEumYup zz?10hbZO29tB_LJbM0?>LZzitywV$E3`>cB7`X%oB2a&JOr?lYW}Wl@2qe6jqWo^E zRd7J^$*LUJ1ErTqPLslYusYHYQmUY&8QY=^OSf0#P@Pcv5k_UOsdymrH<bc~Z<o*F zT!8jVSH1sL;#8!IQ_)wxmw>ASrE;%opfF}~rW|soRz&Vpd%dJah!%!IZWp{*_M$9{ zI-zH<$Th0v-O6;k2E7uSoIp_;`<ru9?gVO8{vCLyVT|i1MKNnU)GS>QS|DTVyGF9| z&#i2}lIGx%0-HJW8%+*zGxV$-7Rq_WH4&qM1*LECqB5s(i}(uGB!7dMTZqe@irJ}Z zP#QnrrpiyUrO4Vj4kR*7s2<t_S-Z8$Vyoo;up91;=#B4d>#`J8qC0kPHN3=PQWKZK zN=}t?L;tRa&J@stQQ6#rYNAB#ZJ4S_x+corKJfMPN0$)NfH}oK*5gkCd$Q=Q3#z(r zhw8L1WptfUmmV@T@~LR5!x=Qt8Qfe4aQ3BISzdf+d+IbS{BiL16Dbvn7k$=ZQ?$PJ zma&w4D@mRqb_Fx`=vx(5hv0g8Fw;1>9bb%;!8dJhHKH|w`2nnZqA$c6d6=9iFT&&1 zVx83*Ff=BWTb8i?N^qpB$~BAS7)R`w5L>-1RHXQxK**)9p~1)4wYyMTdCHEivHULd z1(w9Z>2H>`G^US21S@Pp=egy6#Kk)GWVqe7b6@Yic-P7$j{k9=R|=n7K!y{V4v7kS zQ1B871SF%*f88p5;Y(f|{8?oX^<$c}7t6$ticagL@)sXizI#W0Vl+Z&(M~~dC9ztK zjE|!je!k~U4E#`9+8a1IAbLEmM1crx_#9_$#drGW!dvC$5#poiB#3vd0bWPl;d=Qx zofxHczHt>G_-d$JUrTrhB}1Y}Wo-N-3X5<VEjmt(5W(nqxkOmho4U6T;q-Z*YF9){ z=b7$?JQ$NigfE`-2po#r7}n8r(0{)V<9|1^uJ+0p+xyLlBA&ZUou>zV64RdB?u(qi z|BmTDr)DF3{X&L@U)A475<RLa((k(kEKs8irZHs1|4e0NTUE{@<(f*)cWao76q8Gu z<#h6DkRLVRVoq*FIW@94Cx-NE@G>|lV(~-wi8szZlGG>$cp3i!%o2|$oFP11$jI6o zQFgxS4sTfpt`Xu_j%7@;g;U(fkF!^!YLyVg4r(dsh|jFQn=n^LZKOHO&UwUp>C-^6 zh%M|%T$Mb<@ZzYw5Ea#EtXZ3S!fPSlPG~$Y$Q=D4L`~$yA$ig-pk}IhB_j~~t1J7! zt7P*JD3Kg#K0>2qGf8@aZWOa#+$)~1-=mD(G&|ZW5*$`iv$htauth2669!AWh$P3% z4u1)Y8Db_bQX8ozotLEAZC|^oFl<o!g0U`}S(4V%5SAL3^T}g}VaY<8?*-Ku@r;X5 z*ObT#)DSC2<3+D!^nn75SjKY{%?=r=VreKttn?jVXy!pk9ImM8Las{KR#qa~i%Fw^ zJ@Ud@yF++6_^wwaL_&ZNqU1jknsld`Ko~&bxZK#8Wb9Upud6Xe722=qJg6(UW7_-; zg6Gx7w(B2@29w6AVQLtNvm(%6bYuJ!^m%ZDGV6D-l5blgfUe}$QZb0_{paM%LRJmp z#)8S9iOF`GDViJ4^#i%Z64xBR4xG=Z93ui+pUvnRC4}G8Bp8XMZv~`jqY!+U4*aEW zSN_F4lIU8Fa!XmI`4do;exl~H#)4y6spgABlefvtf_bd}NWnTk&L18%5rNeCD~4Vd zX6a+=o-XTwudngeaWb3A_?1&ez6?4=!~ma$mD;<z7>~}=)gp;vc-DE7e|NemF9&JP zEZxX_F3x&?QzH5j<*RXWiR<l7?uim(dNw(~Y^PbYEE)R#mLi6nx2GSgX1G7Opdd5> zwXB7~PW4xBx}Gn37bQzd3b~Sn44OXSG1seiA?cmEVPMItp%*-Udp_2cOw#m!{8%%7 zuj)*f35^$G>e`U7yonSyW@q-!N{-QI5%W0k$w*_FF@L?d#36Fgp|NNt)ii)T$LTyY z^5(O#=D=?eK@*&t!om#HD(CG=W>MkP!87;4FEMrH2`%N(q=$&QG&D+XE{lcGkB2!j zE9XhE&Qg8c%NR?IWrb3+Iu~-;krlw@qiU(Vta!!<HJ>^olF}WAmL`oqb#NJFlf_jS zY})M+rhhOGYpi|a%KGOl7{=et8y@J5>i1nE|2*9X&C394oh9?S?e8ZKE5Tr2;o_z6 zJ%R~0W(HdoNx$45jf6@%=#&}r7P~1t_5()gQqoT6H9BD5%<EF0jHrcpG)@K*S5=3J z;{N>wX$i;HW=d{EjWvnH8PV@<_b-c<*o~--syn#Ks@nr&Un_3h_E2g`FH4JlexERC zp80BB7CYs*8CRt|r<`L;yM{(c@0&d{?dYwWH_a^cX2%*m9&X8!teE(Hm?~{a{t;U$ z{gpYdZWn6RcCJn9y<nQHwXO>~v#zjL689a=ElJr`8H(W<>KGjwSDki1Nz^>5qf2Eo z-DL@p6lX9k(NxMScFZY0(wRst{2n6l3@xt@xj>E>+&d43$K-ee`{wAMmZW$nwyLQN z_G<Api|1;g4yEVS&73`-`Q=dP$%m?N2uNNj{bXDikjbc&;XGpxV2)FzHRzt3^H-b8 z3~R#pmWgh36^eFlz+uKK5tpLHn!7NZ-*;SCNqqdk=jGCng}O?-tz%Em!@hMjXxunq zqFC;I)FL}~oK+l@vs^m#w7X>T-eclTKtUK$%AoM65_`%quMo#WP@;G0KtQqx`Q#!0 zD1=jMHj=%VhaBQEj;r&IKs95R3B@|nJyOUnr{OH-kn)KMRXgSLiF>{g(OT+JQzBo} znXq0NwJLh0#ot7g@M*>)ZmrfRo*^>V#EPyZ#maapM}<q1d3IDF(QV8Kiz-ge=VgHk z^hg%=@J12RLM56S0kypIC6P}rC=#*gmYW<KSqi;k41(KKn8`CwT9?E^@%gpJrc@iF zwY!X7eebN4R?0~ib|6ufT$bj^5d3gH)v_?MR!z^MKUmx#+){|b{iSFrpJ<X;E%w6M zRgQ_%_A(NMIsVKqEJ3-xu_<Chz8qEM&Apt-R{BWKihZKTIQ0p}GzW$`2a7qQnpHD@ z3-Ovz4tqpdm&%Ny42@vEj{-{uy0@s?Ye&rhRaK>5f}6>0-MYJ2QYN+Tn|STeVZy== zbQ(g(vk92l3tNFD0n^o#uGZ2yL4B@p$H?8+1j2cs0y$~1SDZ1iKlmw<{SzyTW|fF2 zhUc`PmZ*U4$_8$HmTwiF$K$mQ-T~G0n~qV-<vy(=_Kl+=&CH#FB;GVkn<lXXjOpJ= z6!zV<%WOZ6Sr6Mx=_l~}oTxLJk^fT4TT#<C!3yG)ah!1VcX?bP(WtnjoG;8cR3#jC zaLhNwED_Vx{c<6ZY*^ptpnjHK>6ZP`yNCdr@LO6c#k|HI(JAda%U~ITgn1{{!a`Yd zlm^!?7I<VQGffc~qIhWSG)@-gBKf(Ics)nx&7wjyjDr5ZsPycGyImYM9p%jfXH;}0 ztBu8R)i$~f&+qE$%wLgebipY&O8KfPvl7-O8X_{nCpWz1i({Vk$)Xerf27*z-&|G# zQK}QpZkQb3*z3d_PN5{2i|!2@<ejfJ#`*r1swghiiJbVpR)xKp!oaAQZJN6Sp+Zr? zp+u7|!8Qq%2@rLe&95sou6w(^EbW0p!bBKC^Fu*lQ<<^W&{ImG%l)Rmq${6Qaz#h! zlEU)Bga-p7NVV_lCyy!|2GQKG7FBBpjMkwj={cP56x?V51wX$<tO<@?QI2^HWpfld z$R9ha5Y?(L6m#@_Z}Qx1AX_FbQql_Zri=H=rV3)gLbcZ;-WEEW=k<0rN**qgPsTNJ zIq)fqlA^d}qYn`mpKT)Iu273};=-x@ZW8BLY`qai^;Q)kh!=Y@QB8CH`R5XKk0zZo zD(H=J(L8>i6zQLfO|4V{y#^UeEuGV!gY&4P=v6QA8Js3wDi#bqY)RuYkGi6Nd}R}- z`y%j_n2ESEI{6?yWVL0++TQc4&I`z|XqW!Fd``u9s1<l$#g#j{_Gx2AA)|>c5`~M@ z7(|G|vj2&uE=yrvRb@cMc)?m$wZrno-wdU}#HR8V!7G;J?0@nKB`QrLR|=!5!Dg%P zugKoCT^wFw@k|02lA{F$GiMoO6Y%|tlBn92p~;vvaR*D*^4P3`PM;TQA_++3$g?7& zY*(rz=f$ar+7fOYWd@^oMPRkAR%s~VVJn77nM~f%uvNkcXQWpG>nP1`<*$Kcv*w5| z$|+!LMR0(d`*-kRc{=FTH%!XUSh5G?U)x+tGOL&wnTvjCY<{56U*b=85}H_Qlfby8 zuMr|M{W?o8fsXO+H<Pv@<M{`yQfg)HWg3MS70K(~wBbp)n;Z}-2OB}#KbsAf+W5-P zn{^Hc!VYx*9{?*r)W77cT66)dDXW$NR=J_fQV0yIIQ6Ji!>lWHhu90S+nDv%05*D* z#!?;}fN_PRV;Ui_OOgT_0^X$QFc-D`ENUf9ge_P{0H#JEUg2(2(k@`H{R;qV69p1o z2F?`bb^LMW)zmb~kYoLx@%!7=CTp&ZAk&LwRC9`<!zH$Dog(czQQJ^EM8x$=cr@so zf>3L(Jq7$xCSxewT9vS-@&tlJVNaLb)wEiPOrvjawp79qCy4e9WH$kZOFZaE>#erz zOVJf)c|#McZ@t1+Axi)a%Mv0fg!C<xr!|laM^gm>?qbp|aE`sIGZ`vb>z);|DX3r< zC0YsU0F)TQuuFP>XEp9FKsMW&MqBEpR5-V3EiP!n2}v92-7=-(M<XcEza%!Cjta<8 z76lav<=}8KdJ6}yp(LvS-&!W&7e>TBZe~*x2yFOc;xKinnU9|><Jk_Bw;@Gez}Rn; z&TE1Tzz!^xpF2e+O|e3-_dEewSyF%U6@ZOcc>$<zUcZaG-j(PFZuhZz>s~BHMcNco za)NjelQ{+u5K)$96)eV@qfwy?nuPp|b63r2l29absCUYQ7O(M#;7mwVk}Cm58H2e% z!zP(@A_$fBit9%(czT1Q$6d*_VW+_<$(6HUNb03tR7?u$+R_N3NYkxOQp;RyI7Qw- z!;jAq0T*okB&^OodnU5e^-{4z8Ua|g=B{Y2Ctn)}60*Bhd&GNQMo>;WJ1>^&SRh!B z*K^ycWwa!6G#WKtqZ1#Q)B@>!ECDvYu{vv<^gXm%0NvzsHUSmeQj6e5RWSpl8%Uo~ zG*_C)qvy*C>=VcgM+T8lcRg^g>Dh+J(-5&s!ZJj$h?9dOiOE2r<Btv>21h9pmn4uz zAezKL)EA)ROq5BD{s$XYjgn~Px2dfwx>X~^QElg<API-V!@wsHAIzz5Zn%&jE0V-A zgt8{P1HXKNO#%`wHliEvvP$$^SDoz%1SBatYbjw*6Bmhgk&|4Qq7PB-Fi_!!H18;P za4U=);!qRniq_TzJD9RkPE5BqYKawi*GwVTS;&qxiLO}8A+<Q$!0!LPw#KDM*bR<) zQdv_cL-3Q^hZ2Szk>&+-2Fyt)z%@s}qbRg+q=NvWI5gpl>$P`<0S^)Prh~L>mOOzT z-vIP8uXZV!1{g-6_Kt)i(zSGejT2m?$IDC;*LPbeB^wP;C;;qaXer02SHR*%M<DG9 zVPEQ`=5w{U3WhpNU5M6D16-AcJ4+w|j0#wVn`jkycji14$<aiaau&l{TguX%kc4qi z)*k~5UYx#R#|2<&Y8MSGlmL9E@=6P|L+WLc?nKN21(2x_bP%Gz1sFraQvO~KMS7Jx z^wFZ#rH#EqRu}|Swm@_dM!1!7ABoXf2QGeaW?@_Aby)2%0^aQ!X~GUni{?~`(u>hD zq}Y*$#Ytj|l2V&>QxiyEucX;go?6gs1b3alAqeNCtU}2kON%?a09~wuNPA+BWv4qD zeR62A`!#~rgXD-`;D)XMtP4jI9m*}C3A?cQ{lo|qvxc}mOu2H)*etO%E?Kv?I=w7Y zXFxo*zU;hGu%OWn6#<|c=ekbeRaytdM9QEJNgkyc<^q#-QCco9L|sKvwrYGw*C}Tn zA|Q$5CT^wHf<v%FAhNFxY%&9Gy|CASsUal`ASp{&6{sb7|6GWufroFCU}4(&8e$X# z7V0@}C29|k0xns?5CKlo;#8&u1Rc9LfhuA%=n7;$z?(Ild5{bl54!CfS_Wk6B;y(= zs;a#30{m={OBHb{on;QhBU?$7r~<vpt%keQH*}irw7PaR2~9D<oB~1}GJ&zwVG>Pe z6^R|7s#I)Ik;~lw59;UMUX@a}s8G5BWkG5+jhYTm0;$z*UBe^+krGPss%YR*yFbaW z@+#{=(q;rk(m4Kx%kXN<62wOYgm@&J6e%W{KizHQyF(;yY!&auSkAzS#@-MxL8nx; z<g}qgR<80SCSwL0sY0xoKB4Gp*P^1`*@2vPh19Gx>S^8(2FsPaDrn_RmY{z^iwjt( zs!GF;qjmR+nr?H@z>1*@UgO@Qrbni+L%B>^kRY!{&fc|-vw9mCIccb!38T<d?4_YM zlW?mL01OJI1i7+jFOgO9o&``^WP<j&l+)Ij{gB4F5eRU6UnsfnMEH|!V6vu}mws{8 zZ0-nb8<<5kCO|bRFGW+dF<DWnNnt@N^IU(o%-%u(8OU&9sSh}KWk`Q9g`s$$Dw|oF zX7{j23zsI6<nZ#aRU#WATLDg0jjTmU?QAbflmb3r;!A3W8wWCQqY765d04PVZ$v%? zJBv}I2F0cP#Ch1$@w?P|P@GFmxv7YRysTv}jE`;!;Np}lPAc6DVU9(zDDgSg5vw%q zWfg4X9nB&efz3<2PQz0_=HSwn)CSios$9iu-VRa|t>f!G>AZmj>hcH2vZ}_uWp1ob z@Nn<8fU0B>z;J%sCZbcTvn~udKSuVN8aD7^r^x)__=Cb+$64>39N8Xa4fZ-SgqU2i zGE{2kC{4;S+IEUdHkQe-TYi(tyM{S$zDd1$Qxbx<p~BcqEYpR&oDqGDi>zyIp_!gB z8kkW3hMqKaI)eH&gGM+D;t;~Qlp>+AzE)9;lNggE9&|*=m2wY<phJY14jZi#f!snX z4oPZ?!y!Bq8D7>7Zko<S1FzSS^bstoFOmZmlooEA`>aIeg{(buO1YD)l#(TZ&q|^f z8r>~p6es~bsbOo7q@)s*{4n5Yc<OLoBSDp|u~G3dtgZ8H!Zdipj=)Css1BH9ra}LJ z8PxCqfX>AQeFW<C-e&}9p2<PL&XSq`PfcGh%Q{*nxpN8`2#1vrk20fM3D9*im1u|3 z)<EUm?hm+KBcLAjF(`QNxjk%`5b*^7%mrwvBVD;xpf9vt)L=5A*J&NkY_lkw84;fP z!*;5rOLfq&j~s{t7EqU)oQ8d6GJ#Ssy@XobfWFPzZC>LvMY7UF;(}DTl?XRB$0P}v zP{yDv$GMS*P;^vEp4(uYM&7%M?3jEmqfkgz$wI-)icvb`FR{I55>!r9rWR-@(8Vo^ zDxU0;Nd?X@3Q;esE}nr}Su7HAl`acw53Pov&T0pVXovu@g=J|lrdf=lGVG|-r8z$e zhAT3)5?v@Q&gk+(6hC~n8^C5<9Z=MPNQ~8DixBiY$GjOOzA3q}E3Oz3y$K|BDKwtZ zr0D<~nUw;xvsZ5XLZCU_ZphK>#s!c}su`IWDCE>Sr41HL617CMELIynOjDM_oMK8z z!k<E`SR2D;NFuvL5f`Xg!8{jivD4I;S?NiJ#-8S{m3YEvNFuC@HY&oN?$tAb(ts}6 z=Sj+l2&{1Iqma71VdP0^-!X&SHTy40bW_fuxkFS^B}1s8;3q0vsti$MybZgs@+N?g zD5j??xhaoDuhz)P!CtI&>#6|7WY8%!T|wHLw_k;9qd?ZxntzSQt)T|GMEd}xg21)# zTJ>2WV-iKS*%c)@7$BWfYzsJRxkW7YpLgb$YJH4GSEeQ{0}E)-$XF;Mze<*pjn>x) zppztQWcw;(`G>9bszd>~v=j(vbW&jB8zXc8NO%i6j^5}UsAE;hx#WV8GTX_iJY^DI znD}?Xt928UIwbHmJr!g0O+eG<#*VA<P`LOay&0gLR&c|Q+JJl*s1k0FZE~uTnq@eu z-gQgs6`@3rL(F`oEb7w=P88(VLNtbm*^;O*(0b63_O)RtV4ro>VYgaiLt)*9^bvNn z#B2;FRJKI)sT*o3t@JY|k(4Dw7Z?#cn!8XmFd=L7u^heQ#dv-J7($8UqWzDTaL(4^ zkdf=lk)L2KKUk(nL;-}5w-sz1tl}dkmB*NZZu)~qBpiHk6Wj9pCJiYDnw3n^jkKK# zn$DV%(<PohuTZm;)b<oJ#3ESbrZuzxlRe}tPU83-@m9qh0#_Swm1_@}<gPxy?Gd19 zoZt#29c7ecNV3mc2QMZ3!88X7>?cTZ^ehgqMm~iz;$fOs;mEbQ^fslAT@*1jjWubH zEVZ0bVf|EnU)R=%VN>wEsjT7k3*|kMV{KTk25*0i3tSieLK`7fZ%{)Cp-l=T3<X63 zy@@2@<pCHII`x5QsH*EANvBY}vm_;@kN~IRbqcQ|*A;K!jZK=$h@&dr?|~cD!jKLI zCK%AsmLM_SjY^eF%ThHPX-o@Q(SIQq6cbcqOH-*z30w$|$@`(v&?1APAZ^3S<sDK{ zovQ9s+-NE(F-XBs#rm7Cf_P98wEzM=fC{R!+f;&ZlXf})3gtApN#xPj(nh?rqPUcF zgm^V_DV!aM6er+9)Qw_kbPCC_iBOXQB73i-e$G{<dW%P+AYfpdTm@7rH&KqVwWm5X zP?l`wF?i+Ut1{>kLnV}>`9z`@f<TEQW4#uRYFLssJk}IbL0xsA7#d)an1EX@38Y8R zKGY2tw%D=yFy;R11@dUs)9d06i+KoxH@&T2)^X71(78ztTLn>-!MIrJ934L_0x}|P zDPY!K=jExDZR(_um98A%gPdX8?rYo|VNk$AV_b5?$duJNy<KN4RIJ$mN4P10Wr9=O zDQrg53Rktp1XKh|6c(qAak<p_SG0!!Y?>5(5eg{SRoCtg8j;H?L*{SEfF0s>t(&EF z)f1pBT6Q*+Eh{wwb4D0C(Sdi=_6Sd<b84D}r~xe!Ekwg<mjv3v><Q{R7><Hy73p6z zdPLwWwuW{9Iz`K3Z=*0ou_G_PdRb@$xH)C1c&3k&uvhF6A=*POP0h$IDN`nHgmre< zlU&>h#|VF%HytHK)TBK@l)4-i?b(omM9p&-FIluRL%hF3%c3e$Vf{`Gq{g}11!^BT zD5*)3cUFYb1>!*%=$0BlFS-K485E0%i$MQk?KH&&xYJ=^%`=Q%vJ)uICU13W7y`<; zK{a!t03?x*_I&`N;#6<qlzA@Awiw#>5plKn0i$}gWrzY^L-d%B$z<&iC3%+O-F5^w z<P=$>Mlenj08a@!jRLhWgc62uwc>?3+@=D@oHj1(Ax*%?7LX;hI<4t&3kYzOjxrz; zd9LUcbJSr=qp3_yR4*dwehuqu3F$HBU@oA9CPV7Y>uH5k$;MbROP+dG7wzsf>K!cO zxsH@BFH+ZZPq}e^t?^3r*;Z3e1On!SG=xT}AY|is5C!NEfaDUg5o?X8hbsYF=4^`0 z@d8SBj+n-0se1XssdVP(&?>2U1LMYn;HYfr!9cPrtZ^ei7Ql*d9<2i)Dy^B}Fnr4X zjVaPG$`4AgQX|7^8+O%pn9CZ1CN<R}ax`S!vR0Arv1gW*7NAY0$pv~cyQnQA;)1r# zeKaNs=gg`E80CwKb!MgvSk*>Gr3A>z=5}cWd$6CptjR<a3Cs+EM#WfqN>Z<|hanXJ zo0D*bPJCI6hbd#5x{`ykW#wE~Crfc>kSn&@#qww=B{`}k`tpH(y^NG)-}k3xAfv%w z>PBc0dBIMGto3ov4s{gGUM8n<xeS#-yJyx8z{^P9)v*h97pA(PF<FrD1~ygUbfcrM zZtj%CMhk<QTtOqDF#7@}MrNql)(|&$!%-tWh|r4>P7bjnQwAFq(0g7=HrTj}2)3)E z$hA2zlCyXMrfZM~pE74jv?k;oYYi`)ynngv!P2l4UDjZl7zPkSIubYyu3Mf6A0elh zL#`}SnIjL-l80JZfeqdkc|~v#<3`&*;{~m`o(xoR#|#vNMxHtu=uQ$K$W);UA#YxC z&BXzA)=pOIr5r6yMb!kWMJ6@+!DDOT=ubUmV|Y1qhf`scA%O0RIuUsP*wN{!F(oMA zMehJ8@+3!4kc;KJ3R9%Z5jez+qt~__VX8@jBfEwmaG`1Y;!!w=N7?47I{aqCOA?C$ zx+|1z82IGGw5BZz163)5Q7YtFB%l`)UAaUyW|S>n6xDsmz`=?2QWfz&)i0My1*%YQ z8oqr1MQ+yWj;A*s0@Xubdn*l=Wu@PI>e$z)-XtzI=N(Qs^f_20|Gr^Yc+DAUm5`wv ziv?;>nH|6}?Zw{6D1dvNQ4cv%<&nwc#7$zr`LJux)|itbD|3CAGfUlDI!*S}5~u8I z3R)W*U9vFl88GiEC8Iy?mD;37RiRbnrNM0xd4B+FNabu6T?bRvqfT~2*W5x=?G+5D z{k3WUHv}^S4Yf$qUmhM&RcC*^YszyR=Ji-l=PrWH3Vi^SZaguuwRAnQc%<Rx<P5E~ zwl1Uoff~pTWbc@0g|@+<R2Fq_a;jQ4P8gLkO*K_jOe+z^x`b%S+muL5<Q7;%5UJIb z&ECXpV$(2=rPUyjDj^Nq9uJoVbAZ;utG%`b>L!7lta<wdfRyp48H6^pziFblF_t9O zuvXiD1xO7kc$0yNE_Nvpik7q$itG|}DnX^KDj?_*d%vMQt*enChB3WbK|8`61z)%> zYaU`KLq)qtr`_hn(YFZL#1s`XJ|}ij5@88S%0O5%^n22RnIiNK`lM$t*lN^?B1o`P zMXzOw){c{20zRt(Yz1XnfOwFLOQco72^^Q(IYOq1A#241@~NTE0HWZjEKq95X=0hG zAfQfKo^(kl<*f7;%5qUlm!xbr*1TOif-_%Bgiv$GA(SZf3z-W6M?Ekp{l+|`W=ph` z9p;hKY7t>BP4_vGG{+DOz=`-sNo<HgIfkK02REv2%#GV4lKN-3mVQIk6`>V_JFdYJ z>L841V=qCeGs-B9nl<DD;3pvquJ@uth6jAkn|Lv&@>J*Y_R;{Ha|r>v*d_U7Q*)Du zTD{I);`)~iQo53{4#q2AXm)up_+4S>zNTqL#U~ipabfM5HCtznqc>IpJ2tRBIxbMV z09=ZY3&^l$1}vH`yi`obq-IAd{3gp9@wV;BwS+Qh!$hlAzJt<InQH2s<V^|EAx6pY zNEjxyJ%LVj$QRnY13{x+zobabhq_hnX`X80#7#TYP&#UbRRr1!u_9dqam{0zH6z{| z@;5FJ_ezmp%#9#I7zFPyN7&s83Qj=)wSu|#b!N`ynK>ibP07s#BAgcqsA^Q(l8|q# zuwhgQ#sa46qXvf9VshU0q(e|c-`qedHR|q|Q)Z=jd1@8tCrq4b;u%35d{}fyQq%(3 zWv1vM&5%K0d=9E$$EaAyVQdX3H&NT70Zu86qLs>vIhwVEW;DC;3C^yYbO$(~v`3)2 z8*qFoLosNpn?=pts0z?ZIk7TUbhcTbJDfVj1(h2W(|}nvpjEO2STuCSDKQ1GHE7Og zF+SkT8E$IN(%h60Ev#6LZGDDav6hq3oy}{LaKsUztWg{RXlqgsD@xClh@KFqp-^_D zTe{LE<qmVS(ut3=<pQT%u-<B*E$^cssVT}z&0Zp{%4@`A7;5BVn3X~(*a6)Rd4<)K zz_dv11BFd)4Kg*_?xYkz%vNbs!Krm`gMWe&n(t9npAXbI76l~5^~Xy9Ksvy<k!T{C zdK!3%K`|S}Ger|bd0)2y_$AikSDz<N@id39METdtJeqY~YTFfO5LK`l+E7aXgj{$- zgPl75UaB%q#*8D4S<zDKO2Tq7D^rkA7OLl<5!B*fx0t$V0mWjoKicV9T}a*zvH>V~ zGZqUFaxo(#oYTGnMv+mW%=zvm7mAb7V+WYk2Clx8-1d%IE^1J7V{=rx1a^|bu57#l z;FVO%lE$k>J?gYb(i9Hb9=Fn2r~s8XtQF*3n>rq2Uug>5f<!-IlT+jd*wk(?$q4|Z zA$P<~L`WlnrKX><Ll#b$-T&eZSYmE@WS|=Ns4_=j9Jx^zV_3X`5rf?kqlSSTY)b9c zP@r@+hc)og%FyTpEIH&@3+gp!S{!Y%EE7<TfKtejw{$~TDQhD%8QE2u69qUlHRf0; z2?WxeHS%bAJ3+UJ(uPOoO;lHy{Qek9db}M1n3ZKj?M*HmB1LYliBn419=zZx*L|Vu z_axz_Z-o7`<7tx}@ExW(Zy7SsR~Ie-U;;-}GX&%NJ4&799DLM?V@UEEA$Mv~Mz!j` zP`L)i0{0RZ&=T*-KyW{Wl03Zck;q3kpc}H3+(9cL*c5%nCFv*#WE~A(lj1)iYFtp_ zM&pAKhc3v}0HG|?_b@yQcJ9k8+l22aU^GQQhPjGoNnNua5bXkB>d>VZ7o#%A$4t4c z|Iwf;SKZn_TQ<kWf)`Yqu6<-;SO8kC)&y%npVw&~4)~Pezm2W~0kon4Oy_f|s(Kl# zZiRG{aW5e5HR`{cENtPRubSMt1}1|eGWJvF@gL+uBi8L^tZf$7Hk>r3F&2z<YI1#X ztDR%&j@NYFsS>H~Lg=voZH2SpK?S?g`1#|xLwi_h8yBEDoKJr81%+~zEk87gB)Do9 zdG{}Fki@CmQ!1ljofMFg)Eai+@3TH&OXH9Mkr`XiH;i~nso2nb4*(PMDjAQEPiqm8 zbDlxKN3cmpc=y=T+wcw{kC}PB-pgEjuOt1gs=RKYXlUb%1BTX&302L>fC*Im3=n6V z`RIfiFW=JE!!<2~B819VLyf%}RgH~lAWkt!r4bg$4uLZw0%aR+p$~5Gf>9P|iIO&U z%*X(b+rV!HHQy})ipCfW9joGakfAa>hp?}a(E$*SvJR-CjrrAej;K)un@)4oc2%tc z^9P;Pkiio*+{C%Rv{ews=TS@xNJb+rPHBrmY>Q%-q;+4tuIkg+4J0%%f%dbapy8!= zU5k1sqmqk@$zW!)fYMr4hGW&ocfEgeP*o(OXbMW8=H7NcbLs1b{uE_+h72P}jvAW@ zy7HAK+h7hs0VYkwiVJ3g1WS348Q|hAtCv{rpz0kfp`seSH!69?3{l|WtO6~U1JorD zDArNELW>l<j37`T0)&7f3;&pQL0}9b<3b7`uBbcQI||G3ufw-)j2XZUSBx{P3%j;O z%t>oeJ(fLqVnR)FusXNPRF5wjXlO#8wpqMg_X36HqyKsEMmNf&i?**!8}abvn~F9q znqqf7Ual}n8*^n5JTz`82`d|_Zln`DbT6<&4j}%-D|?zfXxg7b9ky%2@P#5lm%c!G zrGbMvIrzO688U;QfrH+%l3h@k0tuhvd7v%<r<eic7_}r`p;m!sk;Iu+c+0Ks0IH7x z0zZ5raRjzVZM7(%MQFg<u};W>Eis{K4O~wL5U^#9^k)UC(iF+%mW9~($Gf$Sv?Yu* zL2$_CfgxjCnM^w`jkLH%q*Is@u(G;vIYHV@F&h=K4kDBaRmB{dLa3%{DCGiZV2|EJ za^nq&dg+9=FTpSnD9;c>*DrYHNl1y4R<}6|UYksmtpffdgX$e{)e(J(Tx<#Fb!hg( z4V_4&0{^@LleT3A3Th+Q&<_xbtcm~tuO-@fpR2-71!7C95=xmyyG>_-)V9IOgh5&= zH4+>11RdIV5R#q&_BLRSzT%M{wsy<xS-{kJO&YZ~5b<FYOENXeN=f{R)?oC#&8}o> z8@GuDqR0p)#X<o5RcYD0X|6B9*{GcRj>NOq$W(OArGzFxLb1dL?5aqr$x6A_L=B|L zq%yFC3ih6`a-t~4hobY^B;GYKXgV&sKgbB6i=bxeZa8XhjPKB3p_+cxG#8heb~jAY z6m^%NE~~Gy+}!Fvx2c)1cvu4301E_g8I=JASgeOQ0TR1lC#q3!M0|59Ap6(Oq0)$n zSj$o~?$$WK_@x`&6eVq`*np*@?cY@-*QH%SD*#j_We)V=G2p|LuPIe^#r5%yj!G%3 zUK>mVY~32#=^Qmxf|L+9y5N8+7Ze;3O7+Y{60%mMiMrP^nH#SCnsuB-c;MP9HRp`Z z3p7Yf5r9BDK@_~ns%Ro6Av~q785|^!0jw1!3Pz-+zw8<ZsMzJs;h4!XT4iwXJCxRR z&>g1BH98Rh?HHPr)wdRIgdc=JSTCsz^2&z7pq7Y~8=>45GdsD=AU7MbKTfT2gUiv= zAhsyQDS*CvD&LsAtifX$a3UN9jHs_-{hS*)(Pn)V4(P`kMJx;PIQz<ps<X1<%z@{C z=~-kegjt(#M%*!!=yNa9YE%f60%~xO1++2LI16$Mc!iqdfM8UK<7WRM+>0REZq?mP zv%(Sb)PP~^R!YVIMSJ$@o!P2W_XPD~qK&Kb`(X}32hNzkS>yxfuLv~ok_P>6VBrFS zB?vMt0WM_i+01~$kY*q8WJq25{T$QV`mCMj&CSJDNtEL$0!QkwBtUc(C?z+-K^4-x zb&SlXj+WC}oMd1}>DNxdcw5^5yqiFHf*k-okgTBx(|~lBn1#W1x!U`{vO0?emy{AL zkm@l5-Z82kX=gAF6|hi<1Nsn5kcuJzkh&C2{Tl$!Zj@ycH#JJz7UPtnT2fXmB0xnZ zc}7W$K0r&NZm;A<1WmbHnr_`foY1J!r0wzlp)=g@SPOftB^rN}SS(y%GZU|$aCTu< zYNw9Ub-Nn9uL%}*Zs!QlVPU`tgr|@ES6Pu7K}4}6q%5_{d&{gb&58L--nl68yamcA z1ps~^(^xcnX?0-Jeeak<{!#y5yiKO1oe}s(-YXfC9}F26pF0gDl2_{Dk%~-L3B8u1 zcL%<wfOY~m;5Kn-PHf*OjbdXIeStp4n5l_&pkCkA)Oh7JJZs^mN49n0LSR=h6jPoV zf(naqJyACWM#(VWO_$l*zm{+$IX90=bTiJbDziEMoCTnWa%<7Fm{CqP_`gevJ_xQ> z$kUEDKpBb@$KO<`D<V5yW+)|VG;r=wF_kH+vw1`^Q-J^(PtZBe7%H`41td{97kje( zCDZJjb_lFXXAUH!5bAnJqbMklp;^T!X~-JrZoyqle<vuH8XXWFVCZG241LBxQy7T9 z9C`|sS}ln6`T_zO79nXc0f8yn=9*=QiL=V-_O@%eR}o-ca5NgK;yMFM4W_D>dYVQ% zNS$*%8NExIWn7q^ElPnF??!{2b|{Iy7|nKJice;=c`CVegdi(%)hAvfC5Y*(<lIq~ zIn60$bs{91NKAkZFoMj$HAXN<#!32w;MI6Hfk~jpH=YZ!gxZNLSsE%u=Lse3ULODq zO|V}|a;h@VZ%un;{GO&1(rOpD%x4XWP-|OjK}^;5toDEkrg%XO2PJaN=;WkL%_pm# zdIw0|P@{teC(tPgHI@tNY*VIS7DT;5L*S0qYy2ahS|F9|8y8n15KL-Q#_p)3KFLug z4vlC@&!1CQLzFpIs!fTMuv5#1N}ZHOinz@nK^@gn`W$sfV^T6WYZ;^(#sn%&spG}a zA{hDc%*)L2hQ8+1qOA>Fnc7mr9FkShmX*>{a$qR6V-;DoC?d_?0?uL<#mEYfRYiMp zhc!-Z7Da2nR(B^<J7mhudKiKOZX{hncT{4L=2WXd@eZ;C>7w0RE1sQXLiymD5eID> zQlQF6Qnm~nOdDblr)8Y*BzS#>oKLX{pamu2tOQ%E=|5|trb^8yXV>tD{nwp43wRpH z2UXO5*EYQf2o}Jw5J7f?L-2}Bn?5i>6$Oy+94mA)6fH}b^2D;b1AtA6u+IZ(&Lc5g zM$j*Uz}(*sdP`O`;Yk1KrWtJwLx5p8-z}||iR6B_2zAR^=A4*dUMmq!P=11D_r4)x zJ;_qDnnEfm-6bhvK!K0Mq~)AO7W`i5VazD>0iC|uttWp=R!%ZUL!g@!BD^_?8q{D5 zxE)$ey|=kb0m_V5B5SKt98by8Sgf$)yr}{g8F}KAyPBB{Rq7!EY1jhDc5d`a-E;!L z5T7$++T9{gkm?K>Tqwz)m`YO~Y3sOCpjF}PW#v0s5K@s0M)YofE|ex~YMOb?Wlac< z=&2EcnvnQ434Kc`aNS+3GSHWwHq#Q(vec%sYSD>O6H6maOT1ca1xZH%B)aPt7{diP z?hdT1lrc53BC9cdx6<1ffJxG*mkF*#6*m&eqEeLfBqXs8K;>yA3&r5cS7>RbBwCMl zxI>-zER!8rpa9^}3VQ%DToQ(9nuj%I6u8NR<n$sXx~_F5V`zWNSW;_PMGUEKvhphc zmkVdGCqaJ*0h|vf*}|s2O`IJ>Gl=V=d!bA_#MYOMKvRBh0j?~t$7YpM0nnMU7%Fs! zY=XQhoC1jGMKSHEHOYx{0EaCrWrZ}(Qc)f1wG5QZ74fj#2Dg<h_x*h^>edT<>OEbc zw%7n|BrB;Ah4+Ik^;j^GnEMg0t4t@%mxM|ci};Babp23h13i2&CbmJAU`fR95{HAq zut_7QpN*BE)^nvSwn3Sqnig%EK3QZVrI?_fc`I3wC1Z2_tP(-GdZIsshOAPyu%9(< zf?6{&NzyiR5P++QxT8;cAjX-q3YE3+<P~HrU>qn57+Kg@Fhe2{<(NQAin8_n&U43< zJ@y#ZR+_Q7<wRT79cT=(BZb3JC_<^dZ|W!oe0s(%gf2xH`U(sxWToTe_*iozVFbuk zr&O-gXiK5BC2ml-8>5d>BLa8czeMdDl=;HQa?X;N!BnuGr%b_Vt{&B>*(==mgweG} z7<+L~#$LDq+JPLiMXmxhP(iQ|$~C8-2QY=(j2vem-*~UR92;qH2B9HwmWs`X4lodn zJh4EjPolOZ(&Sbk&*~sbZhMb|Dn`RHk~VrLa;a*Z^4xSkWagC84+G7KIpH1D7%&zk zgXSdRD6l-ox&5qRnLyhhsSw(I?o9E}?n{?6Lj<(-J##`KolDSA%bc-k-_yX8rxGs$ z>WY?<I_4D670hlrRw$H`1VOG&@ni?xZqWpaGYx)gHO);ALIZF+-i^5_Ad%0>O2I@J zdHov%EkG5Bq)LNOqimr3lC_X4^iC8uG`vw(f~rwr1J8QSyuvZhlU0Cjf^X$imuyo* zB}sOgi@MI+4ctJaL=qM^9VZm(q*2en>uQWBx1E_}4U#P)hAI&Ww~2jjYWqm*Vu{Ec zwU-$;7f^oVR0ZNx4;QUHS43ZficxW3koW}VMthkhqi+kA3=#^z0+3BW0~%?33=}#5 zz@eZGp=@QdnX;_VBC)V%S*QunCyf)Lj;887JGZ-#)65vk6Xe`)0`)CukW*mIkZ9{w z$O{@*l{wl-22MU?oD23B=N2HHS`sJlQUzYOpa4k*xP`)3+gD6L7$qlGC>bho=f$#l zb#x4te(o%o5o=Znr0*=Xi6Q_=tq?(;2q0y&iY4#_pkuzG(})dx1lvjrptfm6F;0X* zAER{`n`Yev(K84B0VUuI5$Jm4vXwVl;h-1`$mkk#B!TQ2U3=Vj3S}BA)aWSMs%q1n zg3h#FT31{E1v%=b9?Fus0=w=28gy<8qq3^fl*);9BEs7Ga>jzytTp<d<b!4GKv}g% zK-G+)%^eG7H+&CJiY;__TN+rI6s%n*ahySZcW9(iye;jte+(M&O9>Xu0PZV|09mJ5 zwxx>^={{sS@Xq345Q7pgXPO|AIg*Qg<D@9=S&aN)h|oHCuAN57W6L-Ra79J2bf__e z3R6+$X-&M=L=^*=q1Q15>U)&c)z;E7DAVN}WshxwT@PE<RYoJ-$*b@QS=n<|`}akx z!YMjmBkY=`V1b}%&F)R&wNP2fEMR${V#LXz>L<jhE@bx``}7h?a%2*K&Z1}FfHGPQ z_p}B2cuPi@Gw{)+QRGAL7C0OTO!K;6BgM)MWordQ0v+QJE5MD8fnx<4Msu<I0Bs<r zKFR{=b%xX=h+9C`AQZDoDAqA%e{x+?Om%P)#2!T~5Y&OR6_E<gr){<zAWQ?AHS^2V zI#>X;?Ds-a+LYIHw6b|!Af;~l5~v#JK&^^0pd5}uMZlQd$U>=^L23Z9D$;6Ri=~9C zm5wT*@)TsZ0SZ+jz=(7(0FS6da01SAN0I7e&dPD)JgLT=jtT{q3^?__%}tM*^onK? zFxUw>+EPF@5r94w+RGwrn;FZ~oND0(=WkhEPXzL=)+A<Z0EAgtm4#L9+IB&nQP@U= zS90yXFBW!nLBSH3Q~63LIfCesX$Y{2!(dQmtIo7lIxE-e^6c0vIOG1g01Uu>n$%N^ z8sV{>vl?Ymr>C$5W<sZFTXh+xy>j|o7MKcTe_pDccPnJa^F-hK;*BPxWO1Pp{ayg! zV9G&`DqgAUlDCYr?Qbgj3wX<UVoDMSNxpsaFgb0|>@{8rWG%NIG9V|hCW&ct@NNr9 zLMeND6e+;b<m{-rgFG2YZ0{I*0Vj%B*2GTLk7$>dx~^pqPP9u5VUm^2-L#fjYeFuJ z5)VszqB*m`Xi+1gn4ob^EB;{oUxE5M5?DQj7j!5#+6XvL9#s%S7c&{NJEQJ_qMTh# z3II8&roHC5V+UdaOb7$wH}Q+5O|dr0d=hPeN5L^e)Qf2o#Iqgwsld;j<T+DwN8S7| zYtV49HKH+QgK(&WQA=?GM7N>Akm<xYS5*jOrPk`gH3@H=P|v8i$Rfa&$bMyE%2X<f zzUTzK?IoQ%;1g0KZ;L=mem;%i!IGC76XvuxcEqU;i!E9M|COc9gsg!EC&oui5K)H| z5$(_o&K!4a8Q=<<lu*=O%4Fp02UQiD{}4JIob~6;spKXLG)CMtdac{ql_tBlnkh5E zsnUptNhp|Ew>R&pUebObMO@G)B#jw5d{N5sIM@Q4B!SvzWJbtAl~oPAGb1QT@dcn% zgNWhYEJg)6TCGQegUzY+?$k42h|ssuDbw%Su2bB+HL6O=q_cq%;?UKyLZcXgcCyp} zbXDgn*&acB4PuFXuP{L+aR+2n$J{8|#!%A@magoWfU`~wVzbe_?bM)`=vsy@hZI0~ zia1O^;ciR?2qG#J%z(H7+KHydzJcA5T<=7bcwy*f%nZ8a0B<ND&8gW7&%n5psd#gV zh*VIAzL92x?0RW*qMI(=Q;npGE0Q&w4PEb&RNm~okcKCK%AADa3ihEJ|6Oa2Xc@Tt z(LcFSUvkZP$&^7<sIW*#%Ql4t+8n}W3cAga?k-uwnjodskl>=*RUFq7)x3&)MqrnN z=LD`}jPfSA#ZH1jF=@p|o!`9vqER(+&x;uz=Mq;yC^sdA?WpNei3Xlr+2wu<W1B^l z-gB-tcFneKJDf5qZ1pr(P}5HoyHjddYlTvT{#-y%N;q|)0z0GNy0WJJ8`uCei>`Rb zB>-5!CuPnZl-POq9n7`p;vwLCAi5n>-qEg@1At4i;xvw}S*1B9v=S!BY7O6C1$sBY z{vvD0?A%bRL>nQc){xXz@CrPya7<0F-&(6iv}~X)RH!4Du$88zSO*b0ufRD&7-zBv zC1X1Nf4bf**19db?;2ySy-)M?x9`f;-zvv#Im8xD948P!j({MLNJM~0c>o^ZArddV z@yHWzNJx=*Kv6&_BqRco*p3r9PRg;%#?@E3Zry5bf4}?n?P>O!gEi+I&3~+YZbdiu z`a9=4XYaMwnsbgZ{{P><tYmOrt#gDnkx|j$VJz$7JQJ>X-Q5I;4k2QiqGRR<k2qF? zg^fLml^}_9ps%R|Vo2xRwl1|Qd^TLVz=6JXoy*8Aw+*_d-zhHEx*0|vw7X&6RXrfV z;j}<LI|rysaAeYdHe)MBXZ58sKN>Bs)|mTmIskq%g($&~|HT(&PQtDLQdHs8QcLq; zXtxctu3fA`7qMCK6l*8`!a>Rs%I!N@Whf*SAnMsF`6k^iMlF~HA8jh(wLGr6ontqz z#eF#&7;iqS;P(`q(2lcqP!eXj9Y@0ABq$Dx&6hbU@(c@t+-{a6;uArkMZEr^n}T!I zH48i}KN2%nud2k`w1|`}DG@AJ*2u26xKpe61UB@-)*2%pCxk*iFFCxIoVU^&39YPa z5M5*Yfp8A2;5b!x5sS{`iXQAHI9f6|779gHdD!_fq$O9OR?OJ{F=fdI#{%MFMZ=Mn zm7gzFUnPb>kg+=|y(uh%0vZK73r)NNiwFQ`3aD_AJy7?2l#;yZ@VIn^c=0}GnxX1_ zB&)EJb!*OqNA8Yffvy#Mv7slUkshejM*(+9psFKSB}7{*<+^){jht9~k+)5e(t(Hf zD!1f4HEJ2G2_A*J3T|hxG&!e0c-0E0?B`z#)pS(j+<KtC*{HRkhDpNi>e`qxxzMc? zUI9Jg{f<K@n1R#1FG;p86^bqiKRHuqf;zyZ=w{q=$i+or2B)%&ifJ;J%a|b-1<~aE zghqIqmo>d675ru@5$3XNSm(Q8&us9RNyDEiB9m>6W)K~x90<iyd*rZ=)Qkqn1m64c zxprY(kIE&DW}Q?&Q=w%qeG~8Q6e-TEFi~kox1TL9eyRkS*tO68N)b)jiMgUZC}U45 zpo9;q6Oa~@w=h$qa_hZ9<GR2?XFqQ(?ZEUjk&G!7;r+$EMm5KEZ95CIu3WHDBjY@t zNeqZU=5Nem7)VUcFJAd5Jx0`&zA4hPLJFKjXa%+&328^s;Kv!etVBSmh0Rfcp>|?y zW-%l0qZI&|u;e-O1frd_05K4!0*g=fiF=$Pgnlq|2-tl3!fC@qHTHTQi5iQ5zeu_l zJBkrD>F5du|DBw;Xkr!dxm$nu3R-*^MjU+MXYI}n+@LV4xL`}uT9-kzZz}nOJXpB_ z_O%9_)XnMdaGve)$}8<{-t}`O$P_5C@vowSg@dObk*uXhUh;}kNsbET{8931TtYzy zgL7uKO*vkeLC?yNPmXpu_7NRh);vW^ID#~a7d_Sr7bICQ;*B5%7Utg0_jlKc3I}W5 zJFu4YUiLAy?4NhB_?^*RDY#J>M|>WNYecD*u!W8e`P4NS81Ue;dkX?$-h&dYAzTGc zX}nruQFK@IG*tCjsVX`v>Bdx|r&$!+HaA%s*+}HWaIH>p)6Q{A<f|Z*wVX52&*ZQX zgWUClg1XupVcYG74ukbGKD&7yLbwvkezlOExrW+9V_R#Tp}WX1lAM)LX?}IRN7`*L z>Cv;_C-VRiHP$<81Z!8$7r6cdQ(HRKtMrb@rsd3b6m9!Oc7dvTLP4chn9vED9&GeN z?{OSHrgB<~y$F5>C(d}D{$Wc<Kt(V4?tvB<OkcB>FT9%=3Q#DilKsZQnj|qVR${r8 zCs&YICz5COg8G5{dj)me5aQuNII{2#PS<NaJHv5A+y;=2h3a~^1pP56QT2Gj7eHY8 zsdAObhan-sPety*I^-b;X9fl`;7p+vwT)tYfr|9Z2aq(V2^|JU2Ze*&R!H_V%o9aa zu>WIoWL3rw5lexnScX|@@dE^FkKbd0f$5F&R>JG!iFfv-oA4~pk3-F$v$Ne+xVFBf z3!iZ?nOGhyc%1V}au{3;GxCE8?*B#G`7RVB;DKioDQBLHt`9XoYuY;DS>isf6}nB5 z*a%}?f(P5qN^Sip1PXM}tC%CBM3+Y(9yMB}(fwkGd`@}hjB{3iE89U{CbwE9jIXy~ zIaK_5z;h0$C%CCFpy2#NoIcNPd5our&DNz=XY)s+sErvN7buVo3s(R81y*N_S_Q;y zBq#<$p&cR$1z%xPFgyxjGX;|9mQ8EfT&-O`>1fHu4gH^GgFQ#jJKM8TJl2;>plf~9 zqKDIi&Bikl1j1lwn&N&egK|pqAiCS<TWhq4i<1zo!>0Fm9qs4|u3MjluQM4Y6~n0z zZ{)0NE_**PfJJlK^z_2sbvUa#jf$JJVk%md$$oL2;Q6vATatA+1Fu-c9Iboi6&()d z358LuPENyO{CnVYuFz`Yy*@0jTxS>uOOd`rXaloTX^HJMYcVnx8B+^LRy4PGkO{>x zFf%E5h-FEsT(J>><^j%Cu7+KqM+*a9P)8XBE@+zL!+UbbOcD2R8iOxYRuY>>L6)>_ zFv(Q_bGYuktRN^U0P@grgXH{YULB^^F|?Rxy(hy=0_f-*?71hHA)zX7<c3bRu0mLU z>{LxT>l!O%`=O%vW48rS&bMX`Bdjy=Lm+B%$+i2#ohyaBq8fWA%=t|b4xV>bThDmy zLonIf<4RiLD#_ZlZ#T<$H+E5GW>SM{5Wc2hqAH<G=5=&&%(WTxE#4*TZ*tPZ+E6ue zvo~pnOW<d=>PITC#Ps_pAW1@0*;_BLDrHBH3XIo)MZpH(nfy>+N=aDSfcjLm3&*VA zKvQGGQekFqwQdqYv*IS8;#an`I?*;Rw5lTq-JZ~CI4taaS4f+5Wqw9B+o-bWfdm0| z>jP`Qr}S`N^<I-2l*(ePcN6XkM*&0;tksVv%Vuso0Uw{p?Dq)@wIfwfRA9%Q*U>v{ z8y<Kh24W@;)%tkOW9DxE8!Y$XA2)7$j`PqBU5l;ds&-Yp+38SMNDz3{TJqwlg2nk2 zwx$m$KKQD7=-P6~n6|FzAh)5brERBaFxKNQfGxB%8Wbgsi;rAg5OBFOjdQOED?$!# znzycmJ)gaBFqU0;i()2MLLwo~02ZrOfaG~I!y$t)Hd3P7kW}7ukqrakH>=EO_rcm? z6alj=IT1i8i}>Q;P(q;#?RT>~g|#n$3}uy#EqhZANhr>JH*g$~m@A|au6?w5Geuni zBM(5~CX?M)6iRBpVJ&08Vp19Db8)Z<Wj$=blJGr#uZY7zU??psg{&T=3v;gPIYtCA z+t+x{0vmma*9xH4Rcn%?Dh0R-T8~g{G%RR1zh;M8*!!_mHut6rTps{}Fqh~k7@r;5 z!?7_j*okz`UGcCfNh!}D^z#F_2c`(2lRmJbC8ASX3(@W=A4ZpsKt>HmJZ056{t2$a zVoj?t(`?mcT?&z<VruhG;pERuor%btfakk#9F&U*c|o8m@jIQoDKS!s@Rw0;`Em%t zGUBkOrUZG=Bo!EMjUTvK1;MN$rA@n0k#xyEvMDwD(#f;e!P2!<q(dvAU4uF*&>pzd z4kK-?uQdXxRCmFqPvQ)0GTupIeHT3>sz)57p~tLvj^{w4qgtzufhRTeb^)FWrzMo+ zW4=6^6cyY+PIN2d{+g9>U~3YY6}Jpux{3E#XZ@l%6E=#RY>(|5XxW3ZweCRCdA^4z z86C4-Q=a|vaeC-v8?mjG`W$F0Um*oRw-@bouy>^<fhnmzdz<zk*t{s5Qz0Yewfr60 zBgpxs1lic%OcKtNSK>Q8^`&ZxImNW*wK}};sWQ?uZbJH-+pc&I!5)in0oXo>@MJ|Q z0xH-FJME$;k0AsF7-kjwA}De4TC4pqM>^V`kog3dPV*!)XF`;4w(kgIi!8UQ6Yi4) z>@EzsGV0qd8PB`sue)%AB9?Lls}!g%LABc-;<9oqA;6}!rHcQ#tQJ2HaBzj~co==I z7@0$WH_ixpB-0fRHLcIibpt7^Ei+wM2t-C{EW*%&URC6Xf<b44UuzQ<Rcoz|gH<UU z)439;;=X8U3$ibQw!u#&+mot}RIL3fa}qF_i^cu<5>_O%NOA=-<0=^iTd>Uel$ldm z<LhizQ1=p>y|HxdV86dp0vN~O)@G{hb#Jmrz#?(o6;cplGBzu7HQ0u&S<*us$#IAt zRhU(rMe(5{&>cG(QbV^<!dl_>GqJWJWfZGz66=vBd-|4D+uG)BYqo^?UDDjyNRddD z1XX#NV3aoQoBrNP8QqR<Ylg6&GWF|W^IXIBQaapAvg#H>heh#2P|>c|z`-t?VBPeC zK|;=&Z@_dHpkbQa4{q1BcJXK18@HR7=?Ksb%{kIG=DAkyc(~x$^ciGfwc~+rhk%}A z0t8CY$nhy{NV?u`CKx~4D6DvEz3PdfqEn>{E=R`cuB+H7BYT}8G2T~EwY!n#`d4P^ zf49t<v%dVZX(y$vL}oW*$;Si$en|lmB5-jTVi@=HIzSl2D@q%9s*_!#qyt7)CsPuf z)I_a<q$t@Jg+;2QBut_u!|@(Hv?L{IQgjlg7oph>hn_VU(5CFQdGyK`p5^cezLR}X zQ%W0(EcZ~!L)8lQGm)$*a0hXTIT=B8Z4{fTB5jIFDQ=95RzD|vc2u&qDNXt?iTk?S zX1V2!+667sKH9t!!Rt^(sJ-`@Fd49fbqu>6C4)^Sh*0!mPS@QD+Fi!Yu+4DH*Q0`; zusy~c>40!xG!-{-j@*<L$Rn+ZxM1-R!;@CH?nzc}yaR-6R=QEdb16W&E4if&SqfvL zERGcB5;jE~t2sEOa86$9n~PTV>Wg-_1;av))BF_G3iEm;ko9>kRKpBR@z{)6Tg*T! zW6p%KB8gKjyc!wUvuGQzRpBW-yl6m6Rf3{!-WDeZ=vfzXfta{ztJV|e1XSQtIzR6L zp~1s44xuLGD`Bl<J+X`ft7xRBey)}aP=okaZG_R|<g|kToeD8FL5&4lG)Ej8AA%Rk zvom1Ls*-4uv399lv(ePt9$0i_Bw!T;t2Bcf%Pe(X7?d7J)0eIaz$4wTqn$netXtQX zHE7esfDR0*Y19zi2=SbRNhCAIRDV%Gd@Lz}G}iEuin!B1ne@J$qa(~ZbOF80Tz3Qb z*19x6?+YvRct2BrsgpJwY7cO+fZ+BUH`~^mw}HN&7~!2jwgwl08EHOUAq2B9s?*Is zxSC&8^0uR_2uBiUhn#YRM*?<-tq+Ac`tvGksVPj}Cr71Vu3)m&VE#2Hp%o=WDLX2b zlO@kV1C>%_BnB+(@il~i!WGwODl5%`<2J=VV8S4lH7$o=Obauj3c|P$QgUMA*&-qW z?LGJCb5gt77@^xKN^ucg<bscftbn4rc<XY!-U-Ec6nVmh3%tML?0Gw>77F(R7qH5! z+P5oY3%pMBD#Lk_DHF&nqLm?)ZdB}}AMXcDNVgE2&%?MWu?!dmlpMA;rhK5L@UWIm z8UL7&NrgdfZL{N$4*hvkVq>*dp->V!ma=uR(i({4;Y?Km^49K?YJ?2wEkY`gqG!*Q zZt79dNg{>$-?!I40dWolWp?96aS;4#cGQjdNW;_Ss$^%aM3_y2-RLIO@1Ih2R>>XX zDcVLI^V*_<Isu%Kc+N%DyahqhVF753hU<tqN??uZ7DHsX=P(4D6D1G~!7SJ|z@j`; z>n!#*^`r>YS)+!haj+gDt8oaJZS%J>%B)e=5zzI;@ddR62nTctY)PL*qOA>GTQP5O zMO{uw>;td;%QzIdP`OqI&%}2bvt3<UedawwVZeb@MR6>Q$V8d_xbB5&PFJ8d9;gA5 z614`BSs=}IB`YBz=sAjZA}uE+qI<(CC92KoLOGtit7-3{tORC#G+|>zV?lz|d^6Cn z>H`FvBXcD%8eNd@DbezVIoS{uiN7f%7$s$DkqkG$_A;#=Os19RlQK4P6=xcG;5NIj zu^9`__AfxSa{hg^HsIxs6Zo*BMQ*|+K@FWS<)vTpxS>GHTVGQl@Ij(?)&VODm#M{h z?w;r*adVmSvUdz+u=%~A!9h?9qMx`gnj|AJQDlhgkhiL3Z0J)d;6;}{_cREBlgM~( z5Jlb0H9$ch^2yb*aY8knhpYBr=2#|uz(%K#rj515L*;LWroskF3QqLcs{<Y~4kgtW z)rnUKO^YW^m6&e&B9Z#EQVzRQz}f)>ZA$yBtQ*j-VQ=dVs7$xXNG!spQtu1)G^zn^ z-@loBBNPzo1w^KGT_!c?Zh*}ml_=@L(H0q_{&mi_7!+yJ&9TOK!#2=b;h;;}5nyj2 z`$KI&L+cQ3VD@hwU_qXJUW;5rX#V;-Dq+F)u@T1XcUbY#E76U15o#Rn%Ld|Lhbo;+ zW#8X#QM=rz+=r4`7uJ4#^rde`o4$*?G=yY~$VxZ?R25DaND*C3=mKN#15~xz)#?w( z*w+henmEQ3e*joOr@wveTCp<Phjm#$6F}Q_{A;abeNYP?nH-L!T|y%$N*oM33PCt` zMNAmGNxYy@MK>Tzt$Tr3sf7t$N9#OzMGOVbh9kuy@e20Cu=T#tu8-c=g;&s!-XW}D z5u_vv48wuyCZzfvX5(A|I%d~7lu?yW*4n9~E!RbqH3vJ}l&K1YjY)upxF^I_5B0K5 zelv(UyZFGIaKw4W0YoKNIGV~+(5D$uiM}G6Eg?n6Nwz+LWeOcKAug4b`9>f*5<Q~m z8<%}L4JNuth-R1tZXO}f&4enPf=wR034t^TaT|oM*(EGjA`qWa^#p7}u__6&Qy}Zw zvVPIO9Ivb9rV4tKEf|G|YSWeVy3zW>hXErTd}M={ZSb1F36df8Xo6A2q~3KC!cDF9 zwPl@Mv-@Sw#d3oKelhX}N@#N@_OE-zFpX35NE8g=jiGG|jCA^Dr@9dzttR(ERMw{c z_H1*C4iG!idKwk8A8_h^GF+Mb^Jsw;!E;h|`ep+ASMIF1O4;Y)?0)LD*p9<a8G&H- zo2Ri!@WkQw?w-{WHoNxTW@Wxl+IcW`w{3jOsymxkxI#tNV_v5|Mqy-gr`&D$-wZH_ zE(K<YL}nO&Fz9S0<r5HS4y@b6TFE#F#srUg;FA(Gqh`@90Qj)=s8`N?Gn!nG#I*7I zxr(Hi=@ENn?b;d^tM<958atYM%b)FP(A3)JWkM;)3Li^k9kW?`(?!?KN-z#Fa-g=* zRb$W(FY^$N3FVx3iSX~yO<{1)Pc|B97h<>SDn$pjC?usFNczV=TR{M$UL;0U@|e;- zqS_R{M_3QK6(AgKubB;o(;k&M2!U>C<-AXb1Gy0PBJM56f@{N5((2iGq}>yywD;n~ z)@)j74`2+^uE(IZ&7t1vB2NojQJNgH+t`FqxH=9=wOiuARnR*?B}SozLqw_fxabX0 zU^5J}<8tS=L%9NKY|YvfoyC;`O6^sJXzO2D`RGD%tD6pouM#nb#JDMmqa)d8Ck2Fc zf*Jwn9LRotiqI-7Re)fWK^R<N=I0`{Xf3A*K|<uDtbh#UVkK|CZ?b>Y*wIKbGVzvp zTw&YnMnzo`Aq}ZqdVm5EPysDMg(pmudtLYf(-HbhAppb@#%6?<blvS})l~{wR|U}^ z<|<ojOvh#}M48yKh82-mM@MKJFveQ2Rqro@n2IqL5JWuYPcKs_czgGD;uP;45vyts znG`Fk<DRwwP9<9UcnTlZ9>CLrFtZ?+y}%T-Y_biqkdJ*Bs;zzqDN~?Htu0<wu$T?U zwVuH4XPdCKx2u7o^gz}wOnbmRKRvSMjY7v-oR_VpNdZ>VpM$xE%~L{*>Cu@wYZjdw zdx?PA>`EW=LoRcI0m&+q$38b%i&X8sIL3PN%F{)Y;oppddX*rgxp1@OymVuj+O=u- z%e;e@ep%^qN(cWm)TfOycsl6Uq1N4~zS`$CRUeU!!@c>atH;R+I(c;S@X#c?o#3!O zS5f~n(lWy8SoO4Ppqv)3TMFQd3v^bkGA}VQDXX|%^tF#rp>ZHY5RT|Z?Bc&kyU87` zx{KDkpy@`}p!N(_qS<6)5W%XkX#PAE86ymgbdBp9h~EkpK~X!P$Vf;_V5Hs^nBm!| zX>95mD*&lsu89%rY)zk>HBvlLv8(LCjT4-t9K$WZm&n`}=q{?(#>b3QLRg9D@ydP( zXa&?z6*7oaKn$_YLz@cZM?-rvP=lPrU9s7L;EZLpY3pprPuT#g$8;j}Leq+@wHnwn za|rr88ysJ2M4w9HSTkmuy26xjYRv%1RH{=F0#D*C_Y@vcg2y6|D1=IXg0mWVWn6L| zw6%KOVxv`Qie??Bx2o5B;^CbvFtfJ9+eXiY#nbvIDZB+KS*Qyrs=9A;yJ?(KEhpG< z@$G>u!+PO#wo>|iBrEEDDZE--*ef*hdrv^ktwkVbGW?`bjH7a!#^R<6q7-xw<T)m$ zMlp;^?7-(?76o#o3)-iw-8ii{wkr^fKr<=D0F0kG>FhirF7cofNo)m)bW{?R&#Zw3 zqFc=x#Jz2-b7^?*?Q`r<3l&*~nAA4c8k`Bq9$jy1`L&9}o-?k2Z!qjqXbTgtt5yjA zVQ;T?>X{v13zlLtq<U$0f)ApC<rOO&+t~u02NN3-gnl?LU12AtlTiiyXoc(Mg!AcD z1H&AGlko=pN7rOIvjdC(1Hb7hx~IP#9-y1no|mfH2GaOXE|K0wU^yg&XBB|r(CB9Q z9NPtQ!xP`{&soN3#Ju9by7y6I`@6f@738IGviy}Pl>EJNR~wfdNQN*}dNu4A?TA(! z9hxd$E!Qpz8*}d>DYXJABtClW_fIRJ+QC<_T3#J88L|W<@+}1Q9tc)4?6-UA1^5~o z#oO=a8ftcC&~4d>rQ`r830tdZ2d`TI+t=%yM=U9!v^1gIG)^w0Cr#L3c?FB%l4q&L z2`2%CFt4(ic@<Z(_Dy3Ri$xpaLX&*n1aYk57mXl|E&C)PiH%n|zUDJ7@u8wpj~Ugn zKpcWf!Z$CwDF9d@Xw?LomjJ=73W$NsQXv@pVS=*A7`GE?g0o<gfr2qm7|^%6K-aY| z+|N~<$aV$9NetfTlG@h#k!}HtX=?K+6!9CqVf(Eu0+5%Y-tSOjGUSA_D!*+Mf?Kyt zc1S2*SutjO6kR;k-`!_@E<L93i?Rw3DI6Z0syvPZp>2>Wc!?{pnccd?tNS1k4Jm)W z&reI)3-u_4_Z0N8C~&}g9IRqh24}4YuV6i5S=50#9VE$`6xklr>*F$UK!$IamhMKt zZpYL*uliuK>+O6!T3Qt=BkQ_>LW+KF#ainWeraZkltk+c6iWz%^e>y2Ba=d(0q<V) zHu|WfOUa-ec0V&5tPMF>RY=&zk7|VrE1$W8N~~)ePDyy9@UZbjae-Oy7WDVH2?f4A zlXU}{4gz&N!68uD>{5N<_s|g)khT#)?|@C?d#hUbY`kG&$+6LkuXVweZ`~f-@N54$ zy;aZZ`9_Alh{IQkY9<V1&U%0qJv7y7ke*39T<lgeC#aR;-IZ-4@mY%iW4ApOZrpeC zJp1gu7Y}Op6vj0&EZWia0g5Ay1BEA|*|h}k(};TI0P5(<ziIq<y?@BD%Ih(-buEh* zEDYm~0koMCMwdaL&5&)sd@{3FLqlyHHU!>d4POv@su{5iRGYG*s+mxxD0&f7&9GXN zmB9loT?yq_DPp}q-57MSeZD)pubwk)Okg&i*VK5xWgR^!EAMfx*6jUPSqIkuBOBA? zpe{F>U&`bL^(SMLEM=81Gg8%r$|?{!Mk}@;Rt-#;6!Ngb(*nh)m>p;Nds||+2zF5% zyH!C!3hbUz+c+l$u-e8_K=@afBUR0cT&>0mR2nhX;S0iifX-Hi0=PK+DznZ5xkw)B z<Ay~By#PqEEj3OM`)TimBg5R3_CfN45d$0wl8>7?Z}1GWPR<dH-ZffrxEaZ3{d!K$ z80ShW&wQ}F4JB24uFDZoTY0UE_4g(48a-Z<jW+?19L2`=>yrXgI6BPJ<g@SYwFO*h z@^>oRTLAv(ceq48dUQD<uC2r(T19}!7=yBkickswNLP4NRO9MKc0TvTxHxEo0*M;X zfxyeuS-Vf%=hR(Hrw5Pz-=g{8PR<<vZ_Kzyi@P8PL~LUWOPVD-8l1~{A}*HGcRP_E zYQpVOoD0B;a19dO_<hr6in!T2u0yZD+a^CpP*oozwD-B&#dWXZ+63}FXVb68yld}s z<6%O*nxAVNvUv#F=H2MZ%yqEQ**Y60z^)O_)!Xn^Y0f&Hu!9;`KYQ31qJMvleZ}Ld zy}?_OkZ-_aBI9EN-gMD}UBRFq(6@+nSgVo9B|=^RXWs3+8_-Vp*EzM{5xcoLn1&so zqdP%}G=)q#wOqYbn!qd7Pc{r<5U(I5QoXR<XErDy-0Wc^LM$!AfdkvLYtJ?K0GYAg zw?#@n#u;NCbuq7bb{-$5fNH*^nQ~nvfyD=Bl(XCt_v>V)>1xc2>a(??u!Q{Pf=OLc zLK1<xyFeEs$ZUnniVlzici7uL#XAEyG4REqigr<AfookJdreab5#Anf#11OOHWAj1 zdkR0iw%M%uEG2?n`Z^$CHs`X!l-kBY(UtIdIIUV4oP3IFmTbJ}!l~t!;4r}UCiF^| zRk~P#q^uILy{y92F+0}-5(vchiFb^SnM9xC;Dn|qA{TW|a3JkL7BGKg#5d!dmjc)V z-{*p=0$zPqp&oONN;TD&6S%NvukG|coYjr5PR<vQwfIi|j%O3-^=zU%k;qtZM5>eR z#1BI@lPwWsF%Dd&nh$h}BTE_4vW`!k6s=wS0GeiipynPzN?rd-6bkJ}R0(=x2fS3B z!IuybPt!)%E^+Y`1C7qYLtJE8%*LtO2R%92!L_x)d7EQM<B&WL=UJ7AzP8V~8c9&x zjS+v>yydDCuQB@_zh~#8xp~(1zupsV{vO(v;w|ZUw+l`Jh!o?1IqL{#)@N}VLbwvr zX^dqa*A+yCLTdZt_{=P)-0~ZMzG)#%K2|bOs@XF+SSv$FDJeSIfMcfg7qej(izQ%~ z?`txoc1=e0J}Wn+g62&%2f$S6nyB6B)3KeDp{#9H+oTVqXl`rKMRXKhio;9guvL#W zSJV=7<1{NadR7IGCMuD!Z!L&;wAUffvghRgOH@2)6Z-?rnt)Sckr9cUYY(v(fdn7k z>sokgNwR950qh_$T3ar3g5))9?FZbZIO5PZRha(?Fwt${6ZNSgkDXTe)UsNvV~$kz zTh18hVCV#95T_MreRAZB7fO^X+bAb<t?Pqa7~j5a29#3vf|+h7R~5+l=3+l5f*yop zEE5(AS>;1p#{9ltQNZRB?f*3$kzu|LfEV*hL&fcoqKTtpp{GDL{~wUoM4i`MMz^Ne zCPpAO!-!o=tfSz%M~8*ij?5T!Nw#xhL2DK`!HQLodRHJ_PODL6=jOm4o3(EDY()ae zfMeqs%He)pHWZyE&i5hm(lHaDxeFMQ(?~*nOcFxDy2=n(i!#T|yTWw>PKM)cIRm3N zLqSiPgeGp)q%^W}hDJ(#7*s!|Kru&-J7^$mnJpP`H4a0hg@F3cCq;Wp_{3S^HPgh& zs8A)V=Bq}LCO5CbX8hi$aQ)5MRE?%rLloFr={uv}HHG%p+wd_Bl!$E>6B|eIWMf9F z>P3TE>~k>jAKS>7#`q+vR`H0~&{9m!W*F0*GD2P)3oQCND^UK%Xd&{{W6s^qKr-f( z%VDLu1E77On7>x9NrmX!T}yjwd#yTiY^|=ka!zI!B|y?P-2=rzLXDAQte}NZRc%T4 zupBHG=Je!bDf7299kf5(>Sh!cBP(V$KxxE>7?H9`aKy;ohImb6Vmnhkly%0h7Vu^Z zsL#D+4!PW8rzYB`wu^2Mp$=zgP9sIjMSUPUo7SyPxG__*lvA1FU=R_t@DsfYpr?I5 zNe|KDri7TPz@{RgKd3@Uv58@8lh2w7VhwAEwL}t7#}*-943f3LgjtsDY)tY3!6bPD zwK-_<nQ(#MtH@K1Y;G=KsS{4ZD!YMM^N10*J7)JKHX}2R3Z=^2IeTL84#^@h4)Bc~ zn7rNYT!oTsm$te0Th3{4Q4y4t*uf93iK|=SFshCL?RpfOA7U(NT8J^Xo|6>^XWeK8 zT@7qvl!oaP0(t8Q%ZDHu6Xt~upoG#N=KaWuaOH3bK~Ma<1bZA<4|Z==K+%$L>eLm= zdFp7w!T*hDOiBEDKY+O3y7<g=2;wLUe#Ho7)$`_MGP>f%TYGIov%{NJ=MH-iwLe)` z2W(=sLI#0N9L$Dg9Tq=aPo4+igfh=S7#pBR(^5pe+QB8<9?=yr(O-O)aUWN6Jh*w< zIs~Q9=*8Rh`rZvJWW||T>f8NN)lR2EJo}yPfHYJ1!o`xxJcFTlH5;D&a2vI2G<gwO z!8xMZ3KwVx+kd9nnf0Z!1*&%=L;!>3>jSw^avWxOl}tBzE<Axvx_@3}bXqpeF=L$v zeXkYnMZ+gs6@wXtF^W_>U3d2scU1KDyUb_ZR=O>k$tvT8ZY|KgyKJf_L~meYinT=c zWa!>X*Tt+bC-0>qsvr==E*fs$SxjIHMFFf~nHVY$Y#X!M32Negb2@RyfkM_m8Boej zh4;h_#)?MIy9t|IU?oZ=b2vq`z=v>*{N!837L$M*Vd4xIw3|eCA#t=hz%Ev~v>Reu z*hfi7H|uV>sYI-<SbHz%U+(plOqYw6uxS7^HH$|(sL#n86lFX4rp<62*_h=e@{wI! zRstc)vx>o{7*|B#3#3S?-?a&NVy1;SZH~|moz>ex&*#4$rUG2|!YG>tah$g2l&V&I zrVckQ_}!(DlgyA4?-Aa1Jqu_bz{8GVM2-q2gej2PX;9>5hv9s$C*mNWeRC}dc8-Fo zh5Rgx%}W>1IbNUGtOAkEy7PF|sO@2PsE84^u(~QSpPXV7WZ;u9rV9!@pCH1VfW?n} zTuhE*pk!rSZFJ4-LF~7pf@Q1{>o31mVH>ls>87J(G}8f0&cf0)&}@2T{7hf!x-O(Z z2a>_ht(a`Xol;zo>Y*cnjFw=%LY{j`2lxssbAKL7@oICB1nqOOVrF)W;|OPIKVa5@ z>eR1C-HBT7M)f=x9Xr~cpZNiNQrl{sYZ}$MBcg@~DcB;VJ4#KFZ!GBXZIizD>PT2D zvM|QhMjBErXh_#?9tV$x$KK5|V8Ts+ISv?|+NZS09>iKh2w3%CV9Arl=nyD04Ei+O z46~B|w8A$cYKeJ!#O_xA{E@q{*-Yc~GdA(%YrDClK1-Dd-mq#3APe9&NVGQZ%oJ12 zh_`JW>>_wtmw>IXtTxX;tupXqedZ_`*3N)=HO*{c`+%V3EoSS0xKr1<8Fp{*ttW5a zNV4VN%+IWT1=_V$8NnN?RQsu3{AXJ-(-@`kI4oHX2((9;Aib0FVq?voi6h8kqnqfk zk6>1CczC@-QA13}UgD3IV*ecn+7CU~!GAlEmk|6k(G2=pjiyFw!)Y7(bkO+jTOZ#< zo0}tW!u_|ph%{SEt9CYnsOC^2LzDKZMXR88|ALLADg?slc`lqYMm*pJa%<kOs|60N z!PFNxb%%f+QUXb%aZx!hA?RdKo8pXCKx9{OxHEx&*JB$wZ$1=?cZ&)};vuBUgU*6i z!69K!V}QS~w<OC->{+t7&*Q?N+eQ$dOq>GO+2;F}h9)zZ*CfR;kLrDnv^rpQdpxvI z(%IyY5d#XXI21{^O0KdW3-q!UZii6s{QP{hxm7$hYtJ=CVgZ(7FG$%{`d!e~)a*){ zN<9<UX#IFmJn@(;wJZ)#HN5UxtOUE<%90Y*HPYmqPl1S9#pEjUz`BcWF+<Q;9pt<Y z>sbkt`&uFK8jFcT+y6V?x%kjYz&kAh`bMnKvDw0EEWZ=FzEzTILnP3<<7!95aB~hA z%Zy6SMnO;(yN?DWOC<}Li{+NjW=AvIWN}AL|9mD5CDIW~0hD*Q0y=+V(*0>TfJ6^C zO%&QeNV+%n`$Z3WT@*-WIk)&`qerrLWq6eXyV)u;v}jvnyDXv`ZJXHQEsp#gVzLR| z6fvzTaE>Zn0<vG6rOs*IPBxZ<d4Ygn!j+k1E!Kg?D`MgZ@$eAzW+uB)fx~&t)*6Oc zW$HA@Diub?e5zF$ZBLnDb1g8#74&!$l*FpWZdG&bZ7O{Zrf4}%h2v(Dh#W1-4vwlz zAZe(0ZZPX<wgXp+^bJw8M7IaB0FKnCQC87dds}<~Q4Pbvz-iLf7Td{%Y3+Bk&ArDs zYLBli4Ab&|O99wJ`^z0;8nfE*`)vNVjg6-qjifBK-T30Y9ipa=L2b(8qSh#*VJyG1 z^hKsRxP=t_V##NMAra^ohlf7cv|#nCfj1L}#$a%cR{g7p($xBK<Y$Q6D!^qZg$0d` zN*H1_4Fd|B`q+F+sPs_;M*FZPOifE>TkE(9MuSRj+<VZ6=~#-}hD-z~tIUWHmW{t# z1*nDn(U_piKPsAn<T46?2LV0Jk1K^B{xWP&>u#L03|3^bwgB#S)x%fXIOmVP`vZFL z=stb+<>%<-=U?ukt<Y(VTy7gjcr~tlU{QrPS!8M3Xxe{UoTefoamFu-ET(ht$J3gu z85NzYiY#-~**`l!l=j~joY7EDyN+ob&g=P34-~o(*U@qCYWaK@odU_NzW(=VhB9g( zfh&NwguyYg)44d!4i_Tui<1h(Fxtr>Xl_>|Pt~(IepQ4rgC0Y60?PG~NI2B><efzq zra^3MKcqOfp@J%XR{#B`7dMDW7qy3WnqXJ$?|@oo`1-lO3?D7%rqAaph?_RPM-_0f zblYe9*#^s5HsE<aAJje@gYj?zbVyH|sUIj|%R7c8QZY7mlF*Hzl-MLK%efGzs8)<H z)o?j)JGk<f0dS(C07AG$g0PEwnk`*v<G$AtN@q>>8gQ*>XS;Pyy94cWE!uW9ajuP) zhJ{Kih&nbd1C~}(Bx;4f5l#d+#;V3n{zy|a3s4h|Owo0~nO(K?05G{*>%MhVVx|l; zCx}2LiGZ9^N-%=A%fGjiUq5sNa4l&z+h6yFW0tJ5Cec}8%$An>=3uJ_fZcdlEns4~ zXR1Ypw!omxu(CDV3juh8bgtJQPHW|=#c2RWih6NpPx9)YS*r++r_mbY@%1`GSVx=H zDR9O`eN13$iut}kWoa$Gno|f?*#$Mc>pu5Ip$&mpF+(UExk{_x4yBjbyfo%Oy1<x) zlV<Qyh>JwgrYTh*@)s)DO4*MpASgua5w8LlP#EQ70hloweGvgN6i8opD_AE<J6E%# zJ&U$TRWUsk7c*JM$rk(q?0pM_!h@5GlT<)y+3rqggU()ijz7G6pML*a-=ojGa75eV ztMuO8r}XsELwZ8T%L4s?u3tH6vL<@*xmUBm6<gpFAacw<Sb=`ldvLq)K1_{n{`|rK z=#tRMsB308e$1^Sey^bAHUQ%`OP^!*dmd4&pqAB+#12&zdhpOscnYhVIJ-V#a79NA zV{E?BWViw2nf1eo%=;3TUuq-)a*W9Am|Gpj6V<;sd%pHIcelk=0db#o@n)U5gZ<h3 z2WpcW-*1`-r9N`?(OI?UC*XftSd|Xr5Iw-f2zDMWDhX6^zZAwH&>4I6|5gZ(u0Iy( z%r45au$ZEvz;M9~je@C%?NGRUpSGI|I8-*<rcAVlu1(eZDZ>ak!I-tZH_ZCgH<4Z^ zvyCIzMQ(e!)nw-UDQBG%ZYm)Ow^NtpT$_`l09YfG;9<QRZLCm7TFWsaLSwd3CQ!cX zA~tFCWl^BXNaTsC(!@SdQHNK#pAeQ0WC-9^;)*hu!K^~Deyygh`(m-ZXxF8vFSM!$ z)D}JWd@6#nliH?DuhKnGq@P}69_E-+>tN`H>SCd0Wjr{5)T}6%`UBPO4PE(*o)p`| zM9Tqav(Z2i_0xLCRSzTMy6D5K^K{nO)h^|jJ2!S&B*&uFXKZX<*zvR5uNr!x(*MjB znD+C_bO0`ioT%pyg=mYeRtT?Q-N;q>p6;(b@pwuVLKj?Fb$YM`OaLG9jD%8LJ5oqe z+F?{gT7`32B?xj73!;Rd0hE`7SOsU%k~jz9d51x}CEtjOc1%GIc0RP_NrXW_R3%=M zQB{5C-J5jp?oImX*FR5}50BhNCZG!#A|Q^Dhydo*-tClqq@jQ>{`sHn&gpP_FhpLU zk?9o0<^K7~cfU`+@s)4UPrW><xcBdGJIv(geX<aDO@Za-Q6#(jG2)lbJE1iE+v zDs%4&X_u?k$wP2hnd_y_A<A{!DKt?g3&?>8Wtz0B1=X7q8!^nPjzl@=Kzh}y5wdo$ z^7b{@;xgPwocPy6U|_8!4FAEPBnuq!><#f)SWePRPAGDF9cB(3ho9NIlA}4XtV`R` zi7dwQw}0$+O_RG(l4DB4n4DeT?b=faGN*V?G3KE_WV^SWKtGg$Ej}jG&tt1u3`Xg* z=fwH{N^bNsS*@}DRBOm>oEyN-QPBiU){a9}*bgBokw&FHTHB*7QZNAvAQg6cv``{w zj)&01lzze>z*#4rjk$q~Xl+5|pibEXY#)4oWgtYWJ_oDLd1m0A+p&u^F46%R5;@`C zHm!DesWH<xHL2c^3DB>niy{%EG3G9&m|y<cP9EODG1y*i%xR=(nTTfj+V1>({LW43 zt-mrsdwf=V%yQ#xk2X=cGOM7bYOeBlZ>>!@9>xlmz{m%#5M}6st+v>-7ItfwFV~{C zA`P4}afH?M_S`mXDb_hLJKdyIFJ)*~oj3JrseNr(T=@tPjMl1ci$=SK(|Enp;YO9Y zQ;7YH+uvI5j1^7H!iz?ZHXumV=*XDY1ID#I{MrsRTyUgRMXH_K|G@8W)lQD8P3xm8 ze<MCv+^W}OB31O|;i0QGJ$7HJaONAW4;xHL>dlbvz6t?M^e9aFv)LSh0F7YO#c0ve zipSc{G}k@r972v673QruygaX8dE+g5bpJ!T@ysE8;nmMm-OT_^qLm<#9RR~lmP4T{ zV5Cd7iGKOJKcFvv<@f0?{rO*_FMj&<{(A`MglEf3f8+fRm(Tu;?mcNc=6S!b4h|3L z?CB%lRQc%Ya$jwUn{OINBW{}$jA|dJPNV7d8&zQ~8>`X@+TgIcd)z2{G328#OHTt# zwUzh-&;lq$QQR-Iu<d6QdtKwytc6XDC{$e=%s1ZON}c@Ly868^1oMb9IZEpiR7{(T z4ptTWcg(>7J8JTKeP&ebDl<58Sna-cab~rN>4c$;{HDkU5DYZ%@D>=|n5Y@VoV7~s zy!ydn;9vb9XLe4BkyP9Y)m=1Yj_6_m9fjNUW^v6y*R7S&Z*Jq5@%uO{__br)pTo`M zBNIkWRyz({J{t4VnW~Dz2oQfT+tYr;<Qd17YaIqL&#e{^zpYr{j6G=wc?|V1RY@m8 zw8cdSiL;HZ#ObfM&THfg7misEsX^aWpl(JjvFQ^aK_Rfjy`PPYCR)AN#XO&ZWH<MX z*dZ|eU{O0>saKxuVQcd_C7JbWb1?OdX!-xBHbL1gE>ypHbnd)6J$222G9$-Gq=$G+ zW3!qDueDX%RX47>J5!;KT~~`~<p?|}_7B10VxR;)ty`cEPb+Xu@Vdw8tU47+w9CP5 z*0d~|veEcSTReKj5TK3@64^1F&`VM?w`<os1GqZ3ihX%+yH@I-=PyOiybjTdZHf{J zO}+&Q$EHkik{;nJ2zmhvBHWmQ7B&R9xX2SkU1U+TYNJ9_+zb(a!g+?Aq5IIEq)e$J zjQ9h~5*$hdteDthh`3S-u#HIeuKP8M;kV;sF$4j00`1Us|Kx1>4A1H0<eZ)?_k3ew z%=1~GcLgxYsq4YsuH_(lI3n6+xz0vde%GD5_vwcp+@~*p^=tHr7e7H)4vuJN)%J4O zy#MeKeR%gCoi2y!r>AxK_q-fB*joTcM_amfrO?AC54<~tCRr|+y&Y_2*88?UKc)J8 zHJLhIt5H&D3gN*~K=|f|^P0Od_Ux!mW^}=Zy^S>;t*<8npOIT%pwhCqd$r2ZR8m}P z*R$CDZ)tYZ<RdeSavl|G^`9|ldjpz6Cf41}`rJcuq>{8)72myp(Q#R9zLQ!O0Vc%J z(d?s!u7fxj@U*_yY}7JK-h~{8)EEtoTY0zKd!p!Qc8yZS^RKtQRohdMj}i%hq;b5a zj1}ed+r8Rb=?b^8z?t4v?eL^sE}V--v2Ixl554YXGxS^~3Ws7v9yuU%knIka%Ba1r z?ap$74e<wJ8&QJfl%mnJ)sC}rcAmGZY8eCLBUQ-*WX#VwB5%Ac?DJq#*6O^~tw4Pi zG5L)f0?ZmMe2JtR0tPfL48;UKFb_<?Hf9GUxOK09cu%Y1BB5#?s>!k0&%LUz8k<{u z-d4<?I~$B=f+VHl7rhC>?9@Gyw)DZ4aoX;ix1ktog@s+Kml+nw&iU7QmA9(q!A7n* z>zXYV5SILk6e%4I^xuCzPVmL5brVJHj1ssT6~cM(MLTA<MGqEZL7LA_G^99Cn_{`u zb5!R8#-XGoJB`ogHIg24SS*mjBNKHaXjO^=G5Vot*=Ss4Zn9as&bHg?J!GUY(gROC z<!X+RY*&yZ`eFy)^q*6JQsxk)0k0r^4yeM9N5~O~R0oE+wXAEJn|haqGL$H{Tu}@P zf+`8Maa2&NF@&tr68+$k5xW*Q+p6aeKDtFe`?(kBqxWypgBL$Zm$rvVSdY-;ys?|Q zg}pPi*96q}(Xs|!|A|-VH?~{){#&=`H-Gob^zZ%ZuhMqA^^V#0a7)KWhh6hCm&<hd z#^tVdZ_nZVM~~?8@rEuRU85JCxk9JAc?1wy=oCX($z;ilk%H!JWSe`iiLR<y)q8Gx z;F={y5E8nYUP;ez@bUvUg=AYRD{t@aY9PLqDQ{gV!f}YLkGfHHuepb?%ptz(&#}ZT zTquK{93mvHjWEYe|Cr9_L5J)9b5Fn+V+n`ISpr=3>ebgrdo4UgcDv!F%VcIq#Y^{u zah0va5v;9mU6Zjnh}dcyyVdjYdpN*ewuaVPeGJ;Qw`|N00p2`!36KHGM4d8HCRf^v z5hOitJ?`^Oo7LCged5U3M7iRKb&C7}UFIjdHH`Ps0$sZ3tleeXXvIW+1J0tNp<`k( zY*m<jVlvtm27j2aNPt_eHmtTNcN$NNjN43Mu~<IL&32>h?eKs1SiAP;8?7vLp|9E= z6P?%hnZ|AoK?{g*68@8c0S{p)0$%7uYD?;5of(Tj3K#U^3Y_YwU`*23Yj<-v1{h){ zo8WXaHe_#aX~k?_?Y;p|CGpOwlpwOrdeE83Ioq9JrL%3Z)+q-kAVWha#gcmFi>EjZ z{e`y?W$K%FKjdv#{ryw4hJjh#M-Z%d#f_q3*{n4d&Y~NxhbUMcbTXk`h*fc3ce97| zduY>9m7_End}mPvs+^t2Ja?W!A>%|IwFhzvd+1{as9e{AGw*hlU?BK>&f(?7=XKEu zfXz@iV`0}KNkNeu=U%(Gl{Kt$Zp5OzLWsa>5z1Z{E<&f6C6jjd&^9jIijB6Nhi)wg zzi<Bd-Ts`<by;|(Gy3uEcj;$8`9+%B2&&*rA6km5yyaAVVyvr#SoZPqIsVokd~5l+ zJ38MU(R;UV(ZBl6x9Lltd%b_wCwI^2Yd?ISE-j1vPkrV!y7l;s&X;H6;mNMYoWAnh zOxtPOU+3Ki59!-)e~o_amw%CVyIm?6qN5_+ekl@KB%a{@QGJ4U3ITW(2PLyX)u0!) z|JrUqNVpkmvVluBh_Y6F%7$G)JeUvYxPVr_spgf9P%vi!byGEhSlA+^%^MACvbAVf zmEz8#(9TCsUn4!7_iBHmo!trA@S?N%88QVXvgq1z;2a{@0cDAwXCNCAN*VJb{c(bH zG|=2|*gM4qajIWwpXaRH79AIxc4O-M;!v!U>Y64G-Xf<mGOm4~GZ~$lstSBK9I@n3 zF&JT(;(tWyPQgns4uh>>&Czj02mM2fOj~w=!+5`=-BA^ez=Z&zigwo!8swbh5O$b8 z&egy&+CP)~YgL*zkt=HpjojTPoSE8ei!~ugt8~#yQz#Z+gV^-hHhNO0vhuY96rXc) zoV_stlqW%m4Q_h42!}FI?N>J6sU{Lr=mC=|XQ8cEAzWq-g)Nm40FjV(2b;LjrUKD8 z`nom|kTVViw)ho?D@5uXczg-4r#`a`$h`{>0kGnJ+ey#O;Dz_>X&d9TzrBNwLhD2n zYdaMum<@~1d3+Y#wvZF`*tyow@)ZK6^zy~ivuL&Zf;FeMp>?W<fMwW5B6LKO*siz$ zM{@FC<T>WEICz%?ecM9bo^*GXikU<Onyloz*s$3*h@1-!ghtFAxd@-0HuROP4f9E1 z)+k(jhKd+rUwB{vO=LO?jcHZ-AAX1K-MhV1z*p$j{S$iSdZD*JxJf_tsn7SXht@A2 zWG*h-*ZljK6}H0QyFYl3zW%)*E|17Whs)-Ca(YC+_tiIOKD<KjynmCv{jERlRpUX^ zv0S~n+-6S(va@w8mwz80Zs@tI2Xu5;`nh@HA$*;vq@Wq5DPo_*<dSMtw8LK!6~ARB zKz2$*M{qbnR)<6Zo0Y*-a4v6}RJ=!AB)1&AH$i`_eLjqK-=ew?Nx@OQg>0sGj&wA2 zLQ?<_$6;XBFq!_GovThl32iN1&JVg4*Ije0Ekg@Q=9<D&Z3N)NM#ItqbDay$xq<o! zYIQct9zl1-#++8^N(B6Ln{I6yu&KAxecvmg_$RH%-Kip)c32=$&RRGy=WiM&??w~k zTG($l2#;x(3UmYAZ?8UiDh_jM8nVsN;Xx3wbfNQBh|kV6-5A0F0{a@0qRcH8AL1L7 zV*qW;R~wOyO(f;N%T(rNf>=p*wQxJxwW_=ni|ZRVd7aPndD9b=9uRt1&1M>pTd8VM z1HFaK<v=A4K}`XCDUw=OF0y1mm>}P|Mhi0`qup6kNc|t4{A7R=Ns#Ii2QKjB@;L}V zQdmieMZ*p_;ACjOR6OAh!U1Z)rhTC<AU3h8-LSUi(S<JyLoh*z9#S~Tu-jSUnUUT& zKZs_73Qvm)^$gQV9<_;HU3*Y@70e=>p(Y6(SjTu<Djd?R!kHyT*s4n~KQ>|JbIL!U zlu!seW73m&I;2D<br(G{h(xJ?ZIXj%m12eg(+sbNv1}>1n~?Gui1UGCmBYw2>}W`n z6X9H06Z+`^?o%44Qs~Vey+vos0c*EAp_iUnD(GdQeEf9R+m=(WM&lZx>?W7!9Ge0` z<S1k@%*$*2r@!~ro;f{j4(Zb61G;gQ>EvunufO&j{ro3iquaOc&>wyE+w}UUKiL<= zv$N*=9Snz~qXRnJ7VjEfyS}A^<7fJ~Mj&h3#zltb#4w@2R#%tmM;asyFp@?{Hwl_Z zF5n166<?qmB<Ys+%mJ&!`<lKDX1nD;%EqH>tj|6xj<%@xxor>|GU$%3v$OsTbcxs+ zkI<m4D1gSE3s?_Jj4Z>%jb;pi(N+i{Jyp^U%9a_S#5-#}yVIc#jOu0+{CyE?WgBFs zrf6i=&Q{-RY6#_8Wjv{?$WWjCQ<-YgS5zA%`|Kh=OBl`+dK}OrNKh<0lSAoyexGbd zx1<z+GvRtWkI!y%*hE#TNbCw^M+a`SqcUcH0)Z_CCrJ6|YoxOE3<_c`0l6vBidF+b zS^$TFU*k862{J}1jd=tsoLJi-U|t^1)&lO=S}ATmujC=bBA?geI6xN)NCES<-kKv1 zk(kKkPBI#p7vo$L18q|OGPekVqFW%_ZDSv<xb0+&4N8g!OniDqm2Qn!FjI=wHI=q^ zUag|7SW(yyRc<v!HS0gCvfm4~iZN_&feTK|6DUf6H;=bV)zeVXDq9G0>2nk<qX!$W zvqL0ulqqxA$NGV#z?^(SaogmFCy&d4>Kw3$kRO0m1FeE{$nl#Q3CkD<=eSpo)<t0_ zwnJ9_b${<ANn<HRy_tDk!f%dUDtm6&!55UD8xDO6W_m~8ef+LAhPis}D#^PIZpHNQ z@e{i7nV0C#{roS{;j;1eMajIn5Xl=MHR5417<9mtLr!e5Yz?sE<D<SQKYH?HIYeBe z?Q(GV{yTT+czMsi_Gf;Ht{ffGJMVr-yYAGebkMj9+aa1dKHk#x%Uinp;89-(Kl_<4 zcHj}SWE!7PvWQX@usu;!@=yQ;-4S6lDjtK4Tm<<D>;RR}JH#_A&`BECf5I7R=wXER zG!_F0)LP1O%<=88qJLpRAPjo+DKi2D!YP<>5n{LD_TM^7z~Hg-3FJJkvqNVLZiE^f z-*7F@LySl_#Ym`%y9G)Y)GAK4!)bOMctz;A=piekV3`d)Yn*qYOmeK%ee3>Nl^SbO z*#LDEu8YOw60qJOY|3*-rs5zeflwlq5d|<v#A$V=3+sc8;csr0<Lrr1>x9Z!0|Z1x z>sc3as%6Dm28D;@q5u~TWK~<3NSj|oVH6kDqY72&z1fVNujnk^D(a$tZg!4DMxqtI z>Vn{w^@8YaX+{ALr4N4X{Uj9hagD$jF6jY|_f4xnk{CO>xVTUXgIP6M-I?I3XNY|g zw8o@YDSopBeM?eU2$Y$ziLFIhCQvLT^9b0y$m|xl@R7@^(Q4d*X>~7+lQ>>@p_OHe z%6^-fM=O*ZsmYKmi2Z8Dpf@-$aN4L-<Tq1_9c5Q*b8-pzV!C1m;JxCEafW~g=2g_| z>Oh#Vtr#s^R@FELFO|KSxg(Q-w8!>&d36zUhfWh*{(Cpaf|;+?n42E7u&Cv|Tsbau z>2RVaOO<}5s8U%|-6_%Fgd)=K<H?VKR2~<jd4&J;pZsZh`@NfVzB{9*Cuel;{vG<% zr$0fz_N#xArdhh@{MDDAqkr_<zfa%&<2RT6dfV5)s@~t$ns0iZW+r+6qg(XyYo~Oh ziBdh@QlLw~>5!Aca+DW=og;Q&z~t_Wh`PcqXoZ&k;7xcWr;XKgo?GDP%#dGz_|O7v ze8OR!*w2eV5c|38qA&r`qzcn!Aatg+Iu3pw8O!49ZxluwXqB-S5nWf<1$C1<0-VHH zXa7A7KRvWm^RP$@gauj5tvzEZdg~UrM#yX9+&TChz4M^ljFuYMuJ_y#!O=N%BA_Gm z)lnm`k*n}n)FI?WkCFiUK~AAEo<`Vz_moC1eWcu2`ksWSNN)?ZDOe;LZIoP(wrSO{ zSm;|Lep#!n<kTj{xgkiD7-aGcf*DySJ&EN1Mus+|;2=!i(XgJ16SIkc;Y&K*_Mf$x zG`+_Bi%N&H%>g&%3K&BF9Z{Kvm8S%j(<i$@1ItxBr`N?$Nn6M!r;TAsepkV29u85G zRC?^;F3}*!LW@{nrm@Fu*~KVbq&Q0!_Sydw7Q^fHGby_zzzZ^3)n#Hx=%bVoKJIBq zd*cXsaR`J}Igndy(WQP}obw)4Q-#yM^Qj7_kPE^fAqr|#J5fW9q*{$Ia&&c1GP*H~ z2Ouz@TA7phJG12Rz`)UZ=X@&E>r;Hg=K?>!fK?NOaw)246{SmiqiJ4M5pb^I@SCR$ zbcsM1?#so7zWmKM=#RefZTjo~;a{YK?Kb)DO^kZ7+;8uH_)!-}9UW|=TB#M8W-&%s zRSPzr!GnSwG;Gr>`oh}+{o-@ihgE9%`B#oE_3VMqee$K=F=*!9KlsiM>Hqrszuw== z!>3RCeRAF%Bx7oRcreiix1Z9JlSi~&zJGIYI4q+Q_otW@(@%cIZBd?L))T-=8pklB zTrs-^ssz9!v^)|y2cncjue3|7i`bpAmN(YZ5@An1lLuX-4|X^ZtZhS|Jvk3!Q)`IA z3gm!D6b@FX(NxmL%pUt^pZ7Ex3*IT3v||kIcWYBm#l^bwx%Q=N<jBwJ6dGC`Ogyl> zcSso2*Cj<AQ<_6F^Dc;S*5QOjO`urq<V}Ix=>FMmASTzItBvQV><MeVGg6^Q#t3Ig zyq6@hqezr=a^%$5@0Yd^>!|+j5(@%)Td@O{qTnDMETuc)YEW~FIVe=wi@INMuJX#c zqy((yRqSkLj#C+zm;pNTYMOK|%ansx86Xy!<sH?v_>E7Vvn<XGjzz5OEsnUU2zvh$ z?kq_{RsaNT0~;S1o7I9bw*r<F0c%FwL*mhu+M?R9E4`DxKy7%~0w!p+`@I65&LPaR ziU57a#W9})AIZMAj!}T}Cg;_?ZmsO9dIQ1vZK&kCS6@@m7)#dz;VG08yh?$O#;9qP zlp3fcFq>qXHUVabjIXg^cZ1TVBdZEMbOy2#d98(EoU+T)oSmZrM~W0h?`N%u0|Ciu zY>qSd3;ymp%bYL}rfD&^2lTsN|0eyT-~4U*kN)jHN3Xo_EbVr40!MXM)%K81I%H|M z9HwR?+8opI<;%Tt@knCBAp0UE+3x9zWnPWi!#dV72imo1uVbS$#>1m6T|K_kE5Nhm z`#!pLmyVAv)7?i8>Ad;nC-$z{`S~f`y7!nq{n8b>b>}HvzckU+ONY*L$LBbfIv4>+ z_^R!YB6@GIap7t8{VC{05~xcA;%<-|j_Zq6&%jVOJZfSi2(Ibcm4NVg0Z5G9-xEXg z-9~f_2YwE5?WBcA6{H{L?nT&!vi6v8^Tk-{DrpUl7;1(}UdyZvLr@Z}_zE#<t8hr+ zlmlYdvg|)XTGiMTB#_g^4=ENS9BN;9GC2sA;*~q6YcN{waBWI)U{Q338Gu$w|1<I6 zJPui#gXM;0MRMABQGmma3z?6=DK0ptw4=0Zg{TBJXY9axCM_j*!QO_?b!{07J5RG7 zWLpG$LTMJ6+m=YM!}|(H{!wX@v*hC&#D!r&=>o2KIuNXZ9obG7voncBb1h>QNr5%8 zf|vSC+=6gG{>=MFG1mczhV-OXYlTXm5m}mnAQlr!>lrfUd9ZqWEhQXE(y<8^$hD@N z#|@$=|8Po(vdA}cN-hLXbi&U;pdz-)T7sTOlSGJ#$FX7?Ip*g@!1+;(ZJxc>_&Q(( zOjT%dRq&oMJ9%d#V;&p|7UBXwTY#KM(E68ECS6u>3r4!6t_)WbZ>mc`wK9EPeR4_< zA3maIp1aW<G;NcwjR1t;j;0##(4gJ2$!_~Xb+DBVgE=@jUN+w|r58?p?#<ZmlTj&F zAf0(9kwR#RPJkz8J9^>yYxJpCo~7@;`4(M!{#iOc*wFJYzu5H!+vQ;KiBG&rKlt8{ zdzi~h&)%SSZ+=8qFJI~KrgrFPqk<OLbmQtVz3}WY9UUm3WUH1kk$o5q=lOmr3hc6P zCR&MTqFC?)0EX+J-+Eu1DUdy$m;p-rn@l7LDslfhWR@rK9`@9cVP9c`OxYaS5n*2Z zR0JgPWKQ{uu^n8s8kRqD6l_h2pn~>B0<ew+!x)LrzcF$v`f#BGaY`V(6RJ512#d}2 zLb4hUMD4cS^>yHw<Pf+|@%e}XWPA=@0xCn1;%3Q=qbsM2mEQaI+(qnb+=H&B*^Fzs z*(iV6@seh(pxDF&PD5s(AC+pH+AFbdC|J(0K-(?}<YZX7aF0$^0t_{$?8QwRzP8+O zj_(=9lovNq&bYO}WF^eGP`HJ^FR6t%QHT5nFY%u9xSIF6p3x<b2OlF>QN$gNBk`(i zc&+ujCrWcMN<Pf27h7HIz4nVp<WS?OJrT@+;~XQ_i`t~nLWa3>eq9A9f(4OI=_umD zwDl|*9=LppmaNM}PpS*Vm}Gq!CKY}%fKK3GSv*%cbZuPlFp4wn)SUxbAbrfno?GgQ zWrTKrfkR|grSDx6gA94KKp76d>PY1cN$>S4KF9U(p-g>4{OF@Q^p$UXhj!;D^ml&a zpU{8tSN;k$H%*0&u5H%m9l<JebaX_A%ip_tWkb*0I369f&8D+0Za+Suul&we=<MW# zE+2CTg%sY>PyXaj&`Zy~s*DCBXoVFibQR;n{~!OSzfGqPZqk=N^9+6N`pb0lQJdi} zhluMphJAMVosS<srY9#)=+WaReI9#yc1D+uE1k{FpWbG#bN9G68`J68d1Gl)-P%08 z0Ctov5FfHvQ2R3vNr5_hnqh*Fp$fD6DrwJ(N?+E9ga`ntFe<R=VF^7E7j%25(*v08 z=-^38ZXs}Ua1=Jac48(7Mia-F0$oi>Z)1zkBo43|?t-e~zx8N|vPc*$nU*wZ1q|T2 zyT!1S97miu#}b{Q-u9oIct;v?Hm>31I7dH<a_CeTI<?k)iZnc6$QM}Swwu)8wLE(h z>yG=TB*G-y?cbRmZCrHuSU>;jziiw`k-8-&nCNEz0uT;K*$>GI16P_?Qs-bO%jz_h z&{A~47eHN!2og(r(WP)BVK;%QXJsPJCt|2d^Nk2>4Qyp`$)X^%P2tUlqJF|nNvN&_ zVSDXQ&UN-$(w5Y;D}h=5Ir~G^xS{hyf|W-OF5wG=gt4J=9;AX;F5C|`9>94M^7N@h zOPcq7A9h48vMjGF(Wn3f8XnBKDrKM%=1~%Md}CpZu?{8wx^)$tC#|udaecB<9+8~5 z>tkq3?mlo5%n1a$WIQb3bxkd70Uap0#Gj9?-}Q)SiaC#zxU$EWF44Ds@MF4t{{dY+ z-q3G<<!khX&wr8r(!cpDbgG2Iu6%Es`clz9UH*|}L*Lvuq-U-l)77ij`eD7$7>m7o z>j8b`Yj5<;_HbIN`t2cII=V`K_{P`hzxu2H*-}YgUe+Lv!*#N5j>C>&LFeWBKDhI^ zx8e^rhn+0AT@D*Ierxmn_ix^z^W8a}&kYlMMu!Jamo;yqdE4wu*Xg8rt(W(C|Ndh- zU;gVr1B8gzy|27+`Pc<>(+Tb&<|OzGNC^Ocz>Z45MHnCyw8Wv{b=3g_^*ct{atWj{ zPsndj`keFW$Jc#i=Na(?IsjL`x@&~JU7y#!fPIw|r;S~{uKwwi%<;44Iy=xORYDvT z&=sfx#AajMS52iZqV`ei+Lib`d1Z6WnYZJ*Zv-R@yccj2+lcJDL11Gy7mTdKr*Pe~ zc;kr^T!;{Lt216!q+u`cYSFRSa(b@H-1SYi{cy{Y)zq8<GJe9%ST}Y*Re~CtR?1Ji zIT@)+zVWW3AZ4Ec3Fud$bxh?d?4e|g<OL4g3j_i|UqZ{8jR4{y%CpR*UggXeNo%uM z#AZ$6drRY?lxUYd@Pa8{LKl!lcu(}?4;N=xP~P~nP$DU^*K<oG9dY<#8Desy#YO?H zFg?14EpUVe_^CZ8e+Bj@zTl9udI;Cumc8qcK{&K(YsR67_ZSRe*YS>7Kv%FeUqJ9y zcqJ<3Jym@=fPi2$ofJUHtC`1e@PW~hMLw1YV<FVUqyU;V;~frpRl*J@@QfmS2ecCZ z=db@Zee=z?=->F|U!pJn{_oMR{kdPIr_CnRM5@pxZteGmV?Am?DW}T@da`V!XH3_g zf1$?#x1syI{LTmWAJNt8SEww1c7FP#e*_=izfULczTfBZ*IUf*T<K$QI{klVt@XIw zE*mw|NB2(X+T}xf`Q>N&TGxV;rlaL&-nvU~eD6nexP0H!)2DQ@95zmt*L8Ndb578m z2PbrRW1<(Iy+n8KJ)qt4dk+CMoyIH#c0j_>Q}WKFnX=O=2}EG#geg(=NJ4E#kPPF` zm8gl4q{gtRTi^(<@3(IMk`%-105HhNh_}6-pX$0a%N{y7jpZaZ@$(9vcZm+*)ALG? zo}SX3yLUUH_v~z@Prv#iT|PSQ&I*QSl|5@bGe=0_Fa7;$B&zRQ9O;MA4TVrBhQ}e< znMx!pQcgtl={uunJcO*Wf-w;$9HP+NH9qF{*@O<NN&*x)bKklckZ3yC`^&+(2gjEh zK0s};cLJVNJvD8V6jmJ(Xxw&@eSrsasGhymURN3yk(Gr*Rt#xg9h>&`bCmUs;ETTK zp~|wL)Dy*-Kd!%Esp*1A$q#Re$;98qYhj3_n}I!>6v$h;SSK(ATE6y{Fu7n3dqL&T z>-j0~9|-VkI9qZIC%{EQ@s(jbC=`?MDEt1z0f=xYjw$V}r7Y=0vuADF6O|EpIL(TZ z0LC3z-4|JulUkXacDoQZ=QE49#Th#)g;w)&O8)g^Z7UaxLS6BH(bufCo2rE39VjOT zGLEPM{DYXxTw9j>{HjZV&{cv8YJD9)^)s*2ul<M*sDH_dhI~;8WTjZ0M7pe2vcA z>pM8`_t2<hFI_&SfB)b5)AYCg&aW>&?r2%0xAfez&r)f&q<LfnJbwIy?mv7Si0Gxt zzW)GfK$XAf37tJUqaXg@O?u_kS7=wyazrfU=dKm8uYcw<^mzF>mp6~;`sD*U+HUCK zQi<QYb&FoQaf9A{=RJD-;87nRw6*R0Y&m4?#yxU!c1GK!vY!;m{KAc^9Tj?hzKg|_ zvVGC1jC;&_{`dp;o?5Xa+h|`S=PXXk>KM33d42SS0iHARr#Q%^f@wUDf~<z{y(%YN zLs?d@IG#4?YIT-1E;$tEMxASVhd1B5+ppIT-uM<hdHk3zUAaWBee!j>cKw-tfcpB^ zzeP8$U7^i#Z#=mF5&i5>{w!U+a@jRrd%pvNxa^g8gtm(RcC*jEMFoXsQxyxDu{J%9 zI7=QiG9%~-_9(^?7q8e9aHxg^Mw4k58+UW+9jaEz4ns=c^bjnKww`gMDyd-Dbj6*7 zjY=@e(ertwzj4d5HR6wD$odRMLKw%%S|yNw%()$nRX?6Cq5bKq^R+@3@372O#I<>E z0mvm$zG3au%`lu51YQ72k=C;ykqb5+oK<E;vHMD~m6K-37mHESsRnQK^=N_-h5~dl zoOz=rF8zXw1YRp|d%~iw4iX$t9u#}|jCdsiqa;mOy$-=qf@Dnq=T@k1S&1LMp5{m< z=Mmm_tH_1ar5?yBo6j*i6s&V0<DkL?6!D-V@Khzj8R<%|i5kguhoUGGUSkM(@4%Li zfL;~Ei7Rz~LLpFLE{2yK(54h>)}Q<7FVNrqyZ?~>_{|^DwQJYuQ=k1L{rO+{ll0`t zNjxj6?mgL^(UX%Cn$J)ACi%m6?$g)5@lE>DFMNqET{@yS-};E&``~u>l((7u(_MS5 z%VvAt+TvUK#y7rCf9hZVB~QviRycmXyWPMFA1&40^Ou=kSt{)ZC+Bo}R_Wp0TgyiN zC+K7ze&urw8){Yf(e|K&XX?pW|NEDZ3*ET9rAy0e`NUG`&jPb<v@H_vrQGc=P9M`* zFx{Jg2vlm)H1OI(=^w#LlVXh_SxL4z-%M+dx^X5i9BB#f>pNIh-7W_!kifd?>4d;Q zY#N=1kI(xk<gigp%e34VM2Abk`0~py_3p~S^2}VjeAMU8FFkXa9xa>x>DeQ?vAxkh z+cc}*TW5>EzTObk_IpRwHcor{+>3a6+|Vpk4PUXMLLfyh7Zc*~r=We3nhyU=YakPZ zmAR0Cqnk%H6h6IR+NiN5ToXOertP;=fo@qDvv&>XBK6DL-n{9g9Vza~6Tsj(>4?Y^ zyZntnDi49xB0X?0xAapbuRtw8{}B`_th?fCRq2IYdRck4d9NiTv;yN?Bxbold?X)d z^GyPa{ZqR6Xz}mwL2XvnrVel{7tM@UKpMWFYG0AA(p()X;1s`^Ds;}p2Gjm2bTtuK z{~s1EgOxvS>YN}kSro@O(@!;bw8{47&CurZSXEFX?_Ecc3m4hF_X2U1T@<6te18qK zuG(r)nHQ|4_6sz|ZbbC;!J-9h2y4eO?X}*ScyE$~Y-qH;?VCzDW}^PA5**Nn(m#MS zv6#20+u!`>|B62Isn_V<{YNf5jYG?_NFQ$LpZ<$Kp#SxM`-ikUeY8}_AJVtKcb|?o zTl&_wzemr#_!9lKzy4S0{_V5A&KylU`rzhWx_0S+&Xz^^nPZ~U-4T8B`|r}NTes<@ z7oP8;*v)3j-4q%&+=ow3dzJpqdpGHo&tDs2^QB7r;MRTm=fC@hbp3@_dN%sKyAONy zcXV*PRE4}89NKu`h;H3|OxvZx`{avP=<(yH%b#sVx^EE`<HC`M!QPinV|?L^cFb`l ztGD%l=1gyzR4^X*ScOg|3+}f7(Gtj*LE(~r=3xmne|x}bWMy&@@3aX3io<`;nb&0_ z)wTaxa+j^WkJHm#zn)K@Jfh=+W`PrW_0?DVk2ra{T<^_}w$077T&IujJY4RB4ZZW> zEqdYQPmEaE%6r9>zy=&$O;PfxM!~iXa;hW#c2*pBF_B31Ys6)BAo4ZGa?1gaZnkOX z=I_I=3X(<LLRY{-CwYA1$Y=)ZbQ{UcTDjK&s?o^oacvuies1$6eT-ZCy_B#ZxTr`^ zFcMLlj*OI|{}w-yq3wZSc7dr@lrWR>al0}A9ajBMk^Hsf8j*ZJ5Z<fGR;;Jhl0bQ( zM==Jz_*6}mcu%sbe%4vg7n}-WLzUIy%zHj#PKOIwX#zMmKzJRq$)V&%+8^_UBE1B9 zp|vQH*DRLYGDIKs+G~GN-uKE5m|hm;uV*8{DiQC3=K9(L%jnY*coV!HS-{Vo)|)Tq z&PFM85$k1u$2bXq(0V6jRgE)eyCAJJ6L9U;<T^XBNkW)%pqf<>Bp+jKjDya;e1YA+ zOnbJe_Vr6gNAwr}!mrR9KX{wI|ATje>8(JFmTLC(Z+@SixpsrjPM1n}-qG3lIUQcU zPOm=mES)Y3>>vH%A1{m0Aw79|PP;m2bB#Um@O($lU%yNTXJ>Tp(MfNUA1u|$AAI9` z^asEH)!shelsK@|rb=FZ|2yxzLzfPO-oAB0AKgFg=dKTKJ*78)^b!5|oxe@bKXaY# zJ-koPTpqLkro3;qx<`*I9d5@A_U7$J^ytYMegEw{bbPq{$@8Z)9X-s}Cb*Ub0<7FU z1Z|ehvH-UZ#NcXF|NN>Z_u(@=+Q;*9op!ytZDWXL^=tobnv?<x8(OK~1!n1}#1V~k z4RN?YVU}|Q+Tm#4%^9cc_r(<YL_BJHWUs2<(P^Rw(UY^89zA-}EA9vP@6(4LE!Xz= z5*-{}rkfw#Uha<_-MjsM7caIL*cWdcFV}2K-~8SW>F0m$XS-{mYLO|h9y<b@_i2=5 zbUO93j`vhS>92oZID@?eRZ=yc93PS5x>gc6DN-p*=FE8Dm*kG8YuUJW4yrn|$kzqT zbWo&v(<QWoOxy#jaq(-59xnT$F-;p9vxu^)RwWC!)|D$G-#Bl|xo{SMqR2%~>iwYP z3nbuS_mcesK?+Wwz1BXSdU+50kgZAkq^^$<Y^`|(xXTFbZ6dO=0Is_WF$&=Q**afj z@t}(p>8n;PaS9E}H|ol1ut#AK+P5z5PxZ4^3ullFb42*Q!mBAM@5%Qd%p(p8eBog) zcUhcTm>d8f=RV;5!xdkI0EU@7&Nlu10&#BNl(2edImXpna$b?ZNQg6`PB{1SdEIJB z$pbaFSJMeD&f9IHs{OVp7w{*zZ#0)LAJdC3JVXEPzw>A5zx*5jJ^khX;4jdtFTc=d z&~0(wOdI+$zxXpWKm9tr_ueTzDqDJR@{~?a@6lYhbm{UD9c>Tk?!%|cB7bvP*iXBd z?qFMbw)s0ZPwACsj_7#Vz`yawKcY{3;$`~E*S<@C_wWA}J@@R5p28-*?LIFDf_eE_ z6J5D<)IaC<K6=o9#&)^>PnVzBRQPYdeQWvWgU<E-{_^jJxa}Rw7SX$W-{Ha0vhnQb z%U?g~-~aVDKk6FA>DRy2H<W|2aZA!pAJOyEr}R^=e{uP}SC)<VjJ5|`dheaL>CU~o z{WEE*`OWfY&pmg;^RnA`ptYcD9SM_luD(7NU60!$-L7%70XB~P!NEa499WF?R7S_5 z{rS<+VaM7w!r!F!-X5jezGwM6heylz92~Zs?Vc&WQGfJ7YlAl}LPO`yWA=Ra&OLhh zm6tLAOEeQ4nH%0cG6lW)v^U9HH+<nlAANM6?%uxJuj2<dZ_?X0Kcdfl`gOW{_d&mI z4FdGzw{P})=F;+h?mRrD%kzewEQhPN-hH1w|GCdn?Es_5fcNnd$McOYf^=xFHeQ-E z36bLaIyFv5%F11LOPg8gz_u%#q&H(-5io=n4($=H6@`KCA_=J**(ervrCOmHdsO`Y zbz}kHc2x|gHnoiQjgxT32Up#XE;DR)HTpaW>j-mIo5vRvaPYpbFzvLGAt6asDIYTr zU2PvZ$p=odBKwu{+Wx><$tkigz)4xpcoy{T8}F5fd;UijC_Z_AZU$;~Z%<#)mB?*# z*yvDXWt&%7%~n_YwfmeceGi0myywhg%$ralU&(D>kv;pF_`OlUva!A=_MsgN_lBev zb#b<{=smkHkmu~3r<jZ7NXK=HoYSF|8R>M;)^^7AzU?r5*6<)-q=oRYlDR~r?ga&< zgAlKs3B2mK$i>#i)G;dAuZJ&ATY|f}iN;QQb$RFRJu*tXeHsn7di%~@`kjCE|Isi1 z;?L4E*RRr(lT-TIx4%cvE}QLUSrm^B4*Ki-($9Z^zW%j0sh&MY_2e#{?XJ*taAn!_ z9xN63L%RQ<E$Yi!vpc1q|NOJ`#@iF!TmGzVYG=#O+%A>e>&u4t|NMjBq~G}Uf4XeC zC-m%<gJrYcEgRH9k4k;;@bO^FFaQ1M$(Y5rif7Y8o;og8miKes8SmR=b88Fy>9Wyx zlWxnqXaOG5{@HZQCu`fgfp2*EJ55pF*7=i@-Ex2!xee`WCv65_&z8;dsQ<mviFiy; zPMf#=sK=3>EGMJsOz7SBZ`0)~SLo{UPlMUqy>q|6hT6LYL(sU{O#YFy_p&>0)$P;1 z>6-woYCia;XtJhPm9>Y{m;lS&RxPcpjh2@UeX|^v+M%Oevxg5K(tq-w{>SviFMN*P zzj>Gb@&El#=<(x6bpQSx`Wyf4e*+P$6{>k%pVo37Ub~pojiep5v*mq!dpVT7|Ni^S zy>gx2{orP|I6he3+e|k{XJGl;kDi`&Jwv;~Ex~WIJ*O*2o8=IA+Ia`X99bpnUR;+O z(pV4Q>91WoR%7mLp-uXA8;OWA_Dx%6kBUT0w5&F1M)!ybU<+6kYA)!6ATiD|MCuAW zWSWV(AFz~mrPhX*3K|m~KTJ(1w|vNn7c7=TiHSY6%k5lOnG_39$*ilIb)`zsB3^H- zsihma?&}gF<NQDvw>GS~Y8O+%!mc6fFqhSAUXqQ6ljClGwhf-+mEZVdlmH+Elu(XK zp4shH;$ThVRav;Fyj_J~1mSg+L9I84$G+~_^fGUrlM+26M)L-1r&ZY0B*PXy21=gQ z=qo9?wW?z-pOSCrbXh=JrDuyto6*r)xViR&Lx%D?lYj~(mb?4=%c>oZCw1mME9FJj z4PKE0_PZHbb&E~}Z+;4|X6BL)yU@wl8&asC6gyX~9ewBiBl?^F^Z!Br`Ct3X^!NVO z|GsS2Kj^K}-SVa{A0E-^$rHN0Y{*xZ`{p<Q@$b+-`>o$w{(Gi>@b`X${@;J_Pw3Ux zUZGcBetu+kFTdbl{)?|Ho77>SZ(q86t>;Fao}bWCd(y*4Px|K9D$JX=AN2T%2B>M) zv-bBty7Pz*`7&KT*wBX`-lns&rz#+#zQMNY^t`Fo4~AW8H;XQcwS#4zF8{R6v8`#3 z&nG%xD)B?EOEtLdo1+|V`p+rL=DRH;5T<uPm!EUG9BewHW1c(LzFDqL&&PP}<m6;I zh@5#>q0``Hw9DIS-t)1R&8h{CoYx&)f96?w?bDy5$4^e_GoQS?EW9&)=lhTP-2d|N zVgLMEwcYG>?dEFLbZbd3KVekY&GWx}^I5M}OV=y3L%>k)@0RO#uvGucL1I_?p{nR1 z^?ca~`}^QwcY65nY&lr%y2bC;f9qc?pY8XT3i=M+e(%Hn8h`qWpP{#Y@FqR?@~izY zarN3YPr^)=xwS}_2*Q$d`<HRhIa}WI`yYPT-BXXBJY8zZ+OKsRr?mIku4U^8T{~oY z;h9VQuy*g!>GImgwVo}wYvM#4M1k%~-l~h;tW_`rB3mLLPT(Q$->`9wKpbMH)fxuR z&vbzX5`?LOIaC~ppau>|c3PORrvlZ*Em)%(KcK|}S4Z#KKC~%^ThEg26@$L%ky)#h zF5%?OlU2nndw9K7#YGp)WC2_f74gSdlSEPn-!6BNv;|->yy6F-kdL+U$Q=Qe_<B@O z>yf+=OK!zGe2B^gEMxKwTVQUP#Kd+}3M!NL#a)=Y!fQkO>a@X-ZEmm?asM(zCz@`6 z7*MtjW=~#g<~;>WYII0q^z#Mq7)ms|y)MQob2$6s86*vy1;I$sYyln10`lCAZC6S^ zynjkJu1$TB%XDGRbODwGOWp4V$-b@bg0L10H^RvUUv#2dZNh*83ISU}y~2k6F;F1P z>&kPWJUT&Du2f7=l&(&G>&NfW!v|;dzx>U=w`>+y=nH@17rJHb^la{tCy!3<)5CY( zp)b7j33~hen@ja|jSeoovQ(8q@7=ydKYZuGvZ;M<*%&L`xN(Et`rsjb>XoBq1Fv-L zTJ0Y3_Cd5N{X1{Gv20dbx_*i2-cqgKTfXP0Wt%TA`SJ4m?%iKD{oQ@~?912ar$6^1 z{lnk>Mu$taP6D+#dv8lGo8Yn->^hEi1azD&Uq7$K{n70?ZJTd9C|rH!m|DTz6!1sK z+wP0*NZQ_tp1UHxBW;&=yIZR4-BgziX19F*+&7=0n-V&cs0Q1?<mhPAE9@sv&qk|z z*>oQ~ez@F|Pw2|BVZQa&JM>_=KOfwk=;{G=T<*5>zNu%rTNZc|cb(MH5oj&={uyn? z`Z9sbqAr`>xVOhxg&{(>eYPVxuj&RbV=SWc{%P4bzx}N@=&OJ9&E?mf(Pw_*C+O00 zxcJ%|H<xS6^uf)4PWSHIreFQlU#36x%fGyA&IkQ>3_cmyX8P-$BiIBjHTr)xD&LLE zm%2`%rQtP2cRNsBy?Uj$+uK2;bw+l|L1`U__BphTsfiUEyFV<SlI*1fNNh<Fmcc2i ztC66X)lWwUV#2_b5-BusjE76YI^<Yj^x?12R(TW&iKU{R`s@;0%@HwWvK=&JUq?Z_ z(XhMd`fj`eoHFLJt9^UxVN~w|{Bi>U2wH=%a@}h&=2IQ7WE^B-2U)jLVSYimb<If# z7am>a{i=kOmy0>-M1fm%<+1R7_PJXU0jY&&6p6X+9@HjT)FS)?LtqF&D<HgEd&mRy z!>O$uWti+8oa}^HByK8k$O>HmqhVl9<HI0?fd$ptTfW&9PasM;%UKw({!lVu6FUwo zxDU3t6C?t?-^+Wvckc<^`RF!1d;PV3zdl+vjnk7Yz4GdFJ+vcir@S}+9}h0W2u5PV zU%hr&DLQ%8-SPRN<g2kZLMD4<vNrC|!(p1{K@d?npn!4h(;uD3X>;JuM*A79x_$Kc zDP6sM+&4zUmL42Ty-F?ItVdH{{97wsmTGf*+yqZM`sz}-KYH|tZr^=ECr=*tmiXhR zPwDa}Ug_kw-BQiI^y2f&=kXyucyMc}%69bDdvEuaajT$Td-c^`osBATS@4gKmw)f* z`0yHi@}*^iZb?}UNV8P&AKtmsujAXd9`%j9(ckLR9o@Y5aLl-Qw4vK;ZoysWOC^7} zY=FP;^Iz)k`}T6kXdA`{OO@X$=T<$w^YjD~@|KNpSp|Rc3t#LN@jI=eT%Pmur%(DO zv^kvg*<9}X*4A$u<+6#r`r=FUba_2bPM*@e2lwdC?R#`t{nYpG-RrM^w_LOPj~~#r z8_#qPK9{o&;%WA(ci(^94*~5yJwHF`?d3+v*_1I4Z~B175IIwye6Pk8ZQ3Gb+w*tn z_|kIsjH-K@mg0<tAG>v1WYbW)%lDs;jks-;=aqXG<e-fgme+9U__%+z=Vy<WgU93L zU~xvTf9e&QyQr+tr+(r!`rY689Xh&nM8Ei_|13RS-fQcG9Q9c|_d}ZrwAd|M5~C~K zfbZRX&_AbxgYEMETQ}iM#}J3h&pcWF>|m+jAL;1loDP?RN;_yBF3;@ycXssQt$XxS z_-y#bj=CgHaJZ_WFX;Xm?QV9^8pG3Q#JM%!yYNNs{Cy#rfV!Rc0+TW=E}${;v7C`? z<;4PY6$8EJ?OyJocDnTx8=of#cvVGJhbzmJrNw}(e{4$GN+dXgmzA=buyVxrVY3lQ zc8%2Hl?zBT>pA>-rnnZWrMb|mVJ;c#9Kw(sl(9e1<z%ww3&co!tZ&#Dyeq;h#6!v3 z0k5k_%CH{Un^uR-Nnpb#03Qfc&PhN=!zw|@)2EC|6#r~xPdUr0F%4#)<19boA~}V1 zL@q=Ytf9!QRbEYubFwVP-(EJIu4wHX<O6!~rDw;yQub=^be(fbwg8`ivgHf21Xj*s z<~(W;s9aLE_C8t0X@<Fx$a}7j6!x)a36Uf`ZDOepKDtL=`@^r%$>Ya;(K%YGriYKt z=wJT+*XR?kK0~j(@O<Am+J@CysPDe_5nZ};Oz(Ygvvbi;PM>zwc$<OVxPG1P+`8RW z%1<BP?~BO!{HOsh=zDMeXgLII=u1EIMSAD`cj)~OKUgYJ?u+-!&tC79<qI!A-#7TT z-+PyS;pcvie)@~AcYE3U@4Yt!Q%$qhHlyY9y!&KF51*dXOV10v`rIMix_7d?jw{R0 z{&3kiA1)hT+aOMtih0wYkI#SdQ}l(;eyLZz*Ow~r$8Y_JZY_s`mtJ~_KJ(cx(1V9h z`tRtQTu+lDhml;rdY#_;{|S4uCP~ukO6-0f`yLs&XI9qQI~oK)kRYkya2d`>CJpCt zWHK!yGs%q7gC6uYrWd`*^b@qbi7zA5LeeOSJAokpV(mtES66rKRav<&5s|U4?w{^C zpGSmyWcCO!SU0LNBiz5`F6W+m?)kZ#o}Ll@ogzX|hiSV)1Yj`i>RP5*11}a!Qq%Xj zY%~cg|McfSXCRXZIVSl1u{ug*{A;^gQYu$90BUG9pCF?@Yg2M?a75?JS}`WqB^*Hu z+2OB$=hsN4J3e_sbYZ0HKj@D&Fw?*H0@nWlNpzZ4ZtdNZ+j|f6S?W^1JYh1{ylN4- zz?sYGvwBI8<?^yxDswM@I2;}AlkLB<zAXnwZ{)H)kq@(J9wqdLudY<(-3QycpPIdY z@`c=e>s>^K^3%Wjfv)9k8R_!f((Jyb=K=x4{60j`Q#i!oNS*STzPp|ma1(|aP@$f_ zzP2IG_qa^H)9tbLf7KbP^ADt4%rhv<X&`X;=Fsh%M3mIRb~a-d64bMxcRndEA~9>{ z!A4Y*!o~%qj9pBFoKHeq9vBlBtn!x0(#FJqQyWVdBT3mcF`?_opp9~5;_z;K*iUpC zCE)k*Xvl-QXiW=;Ru~hT_3C-E{?KUM!Yt9vZ>Y1|oBFEb&SqJ|VR=HD6_Kw*M!(|E z=DObIdQD!gf!y}mkhdFyr={AgS!!8}WtK|{3DFw3m9G$ciA8h~mbXObcSpxIhDUQb zxUf;qL4+t~B23HZFoyX7n(c_UICP$a+oFtbvouJ=#6*j19F8_}6E8lLn3YA45S?^4 zgPS8zg7ua$?_~;s=jvGc&)V7=vyJ-MMTlN`G@Le)$a>4qG{4X`@-q=yommpVxz^hk ziRp}q!Gm!C$6TwdNL(~B5+KE|SFD;I3sB=ypEHAn8Z4O6=NDc1=%<h6`ICo|FRe+r zQkH6MO*-wq{OgwoV&I^=Z9>L<%_#5PyC<3IhCF$-Pqd@iypXTG_ny4__5*owa3ZB@ zMFyIgqqaU7`?McJjK|f?^mo7W>+;33r|Ni5Nixf)lTuR0&{Hq4x3f!<)W;7WvVM%r zu-)#c(;CU^<8yU78Oaqg8a#jtVdUMt6&Y-m(1I&JesnCmYX$jt|KYdfyFdL*4jXOF zMlon5E&tB%{sT!(K$08qovRv<ARDZAIwDYr)8{~+{7NaUnZ8G-mdSWBCNU}@E9Ei~ zgxCA~G8|4^Hmd8E$>b!hb}v^*%Rl?4|GvEU^$&P1zkK>e{``;sM&2A9=(G3b_kQPh zq?$|1g*st4)pHG^e)%_kS8S#vKl|u&>8O*;Bt<q?E3#Qr=UT~%Oa_|054c8P@w-5y zFU8V|WYRe~ID8{V2hU`E^R}$7uE{6|l3_r*?2|;5X8nGBb%T!c;`~IW<GyTdtZLwp zqAky7Qc~M|OM|luS*fis7=bv@@$tU&Iv29Gep^;nYI3T9i6D5>b@tUCpzdEPuE-BR zeWOm*(;%TMfB3)r&+_)W?@OQ#_@keFN^;}hefJ0QFaERtM2egr;?M2JZ2U6r_(&Z% z2y(4Xn}JqO&y1ULmeB9%OS=bNL0Yr^i6dC*I$de-2v`}N3@fFqq*HF}t@TX2{A(k~ zS7dHOq~IvQjj|%)eGep-OkJD772|Z7>l*Z8Vp6TwkvMZ*cf%}8T;0$`74@0(wsDD( zo~_uWrm)2tB+pKd7wTRi3lk39_1T4O^x;@Uf0}fWC0iwuOMs%08_<iG`!v_q$9#nV zlZ`pRdGB{1HxtjIvs=xAnHV*$HVTwj8&CF^pC=}G5+&3vSp8-hafpcR#~t<!P`tS= zt>XsShZ)_Rpk?ABIy3fnL~3^qMP2K=m)J~UV{FWE#?{%PA`bCc>2i}ZH(tCybqU2^ zJoOE05YdY8Vl&1UvagHY`Y5sO`p}y>Tn6|x9M@Q?mgUx+O%iZYsf5(eFA2Si=iSiE z7N1h)Ef0X3b1SYB5o4s5>*gR9@S0`W(B<HMZkS{-s38iY+ne+qqUEY+pR6Oh0c!pE z$Is<bGqNw9AIQsBujSVL_avnm+lx2Ha@=@D!4IPuP*F4Y)fLU4)sg(tw|-efoyw!9 z`>YQqGZ}es|Gs?i{=4$}=v0mJh_)b+F0m!cGaz0Wsh0BcYv263eEjGO&BRZolrO3S z#m{EtyxEbjzx$Sa`C?yQy?MiTM0SR@E*SNKpOTVhXFKY&;ZXY%UxR?D+{u<?qgIyj zaG;54Rlaz2F3%6nG;5v8@Bj9%%765q{|Br|-`m}k@BZCq^1uG!pUUUYUdXpUc#kkM z>{P-7+j}BaZzBKv5B_8M;rBk3zxnIGm2Z9fJ^63`<sV2cmytjJ+fU>NfBh5I)CU?t z+*Zf<)=ovdNlX6I|MCyyo8SD9j?0}jPd@$mV=3hFlFDRd9E|1U=veyci8^Nuids$i zr~mBtGy`6jAN>4@1}Ht&)~!0RTn?p<f^4rBrK~}~Pd|PsWnDLv2a36@I`ynn*Y=p< zLz7;-j1<ciJ<CRV8U&0dE;z;XIMkolR#$a>Gejdsx<)`eO1T8N0-2OL$nq95-%k5d zYO7Ud#>kY<PF`z3kXDDjt~Pxtt2JHcwWNIcd|z&DuS+4DlKta`R5kc3YW(reFMmy* zJbfx(eDPERgFJul!A?yBgpRbDb^ZVM^m7c$09I^lpbY{olzM<Tpxo0R^z^*=4u(gD z4}UHCcl{BQ$E>aug1jk8GH6BA=bVH}fyTz^BIbt4mv(u^dN^0!GZI%UwNd4`=pZK> z^D$<rmD(<$tL7S6++5d}SibT$D%rd&OA$>z<KxO_nOV#nTx%jiram4odiBAuoICTy zOmeiaOxPpooIN7MH2WT%lV8-77m$HnR;-AYks~!_8*#=);^PS8jN-V%5G&Udj7%)$ zUy_`S)-a>J^d>F?yX@_aL?9UxS3|QBB{4}vhg+`KkYjzvHZH#?5h9`&fvLk;*~{(o zaWuf*tV$W>A1q6}Mzd@$9(I|pAf{i7ETj7VOOdUKh;hW{8JK0=nMM0q46ZWsu7FtI zcyzR)Sxg)Q!}hY#k+C|dTkqU<<Rbm6jm;IgIIYW(8mI?v@5UuY<FVQeWet&~!D{if zxW;<CspPX1^j#wdE|4J;%|4a_TziA|fn9o!SxYI1U>KS*)eLn1&AEK{&%Q^kjg{4P z%{~isrUT6!{qcy9XrWM)v^wsi;{$o`?YCrXQtG5mIRCuaZpnk&x8&}f9eH_tLh_kF zKt{i#RxZdu9Y?z}qC@}2dvD9nKYt__mzT1!vchb#-R(+8GqeYHZpp)^&*kLeQk{K{ z&yE(jzGiA~-@Ppr&Cb()R~?m+W(O^6NlBJda@j#^SO$DJA~9>Fq;&dLR#$6sb=8(X z`d9xCc@SW8H#D297S(}!B`GJnQZBE{@BM>cl}GC2;UveJHUHm#@;B0M_2r#+?ny^~ z|G)e1|0j9({w;M_2Xdi-hnEaAi_U=_C&w2pNhf^y+wcBZ{{APQIr1FgaU&o9;!8r{ zo(ZI!FG;0VRcDk|$G9TrXD9OV@La0hseJk5HQDJ1E;gzf1bDu@I=zzBvb)r24GfT} z1MO%J-Msmp{?qSYuso2|fappc_FLciP<HO_$fM7msN)>5Gy<a8+SYBZA)xqFCdc6F zywQ`K21^#1e2|v<<q`kB)oiL`Pm`pUO6TSoA4)10jlSI7+mb3Avjzm4yH%-_C%ji@ zmu;z*bMoH%AIe7$U#KJQNG56Zyd25))`m1skL2@*U&_wjZTZHB@6l1)uuTs^A+mmq zu|--8hmOF)=NTQcHcwbxe-_A(hu~#s$a>GF3<-x`TK&s(z-PhQPa`Ui@x<B2P*$L{ zK}3irKBL4gwKz*$G;Q8yWg~+NW5Om8<>#623L@jeBZ*GL2Q6Axox)z!L<Er%^n&&k z7uuL7pV47bex#)?EO95N?9-eL6$!^QM!pOXq#v>oXBque7kD%p(%FN|0mus*IQySB z4-AaN`SKBBk&Ot8*+{K?iDtJ<`-u|3{(m)=ZxEuHdm3Yw6=;?)g{Aq@OJV|c$=TS5 z=C6De2Vx%lc#*cfg@d*cSlC8_o_RZ3jMi_iv+ZL#l2JI{yVl1o5oUQTL^0Po;^%Dz zHWsj$>n)7-hElPO!p|X@##`nbTqncb3|rfIzx({}^sIrf1DFp13hH*V{y?y*F_*jF z?KvV=HZ^a}k);yPP0@^vkkTZAYM5yMhq<W+WUj;d#x6}33?*l0JdxQ9>KRvMDKn3i zs%`|U0y?<fU?P9~r{9-Hj~+_5*`SmEKn?Qi;|tAl4=Lc``(rh(>WnL^e3#?nL(RtD zlGe!A;OK;zKH8u@eCL4_O9jpJ_sM=Y9LQy*(YTcLa+XB5jrE$m|KPTK^5vJ(X!j(Y zN^6jiWrl`qY<qo0GyG#YuQ$kg$KPYW5}G}?J6+k=00Q;XR<ke3_JnP3jVpI%zjl99 zPOnDt_~oTM*vv}1c`2=Kph3nRX01rzrka#IfAvy>gt6@1x+R@fLssvv%F5=JoU7vo z`3)gXUo-#a>m$jjL(HVp?8UDioXgY4`;tflmLIyzP;DF7>X#Fz5&!uA_zU*9<K^Lm z5(f3@ET_&5hkbqaqGrEi$*<(3Tw9f<p0)4&@MEb~*Yqr=nLT%OEiRgxS(o#Kozb<1 ztaW3pB9C7+LXg->L7%PJKGDB-EO9{jjaEl~_^*GY`vAs%l4pCO|J0K$hx@O&mW6y? zD!PWf{!n@&D?_!_-k>k1jb|<p(ZJ#SvLSU{Sk%9b$)SstJ?U_=<zkLbHIuS>k2>=B z#gOaoGF&U4e|aUlySsXKCX&q;<@mfIwOUOEWBr-tP>v2xW!TotUf*xEw&Et;X^?bw zQJ2G`Q@PZD0`PoUpA$h|T9d(oX5t9?Mx(K7OPuI;`s%=QnkeeeHm`beYb&EaXXMq< zNQ1?Ou4SIdq=_UmR+e~6^ZxW`i*QV+e&KY2$Uv~@G{>2(4<ei|8y$uePIa@94ySnE z>w-^XmsA^V)Oy&+l*}dl^e9Xp<;{6U;<GEFWooC}kwjl4#@?Zo#q&~Pf>BJ$u3ShH z%9@j>U_K_UA%CL(jY0s39uw4NPEq7w=H!$7XEKaOA_mIFvyC9uyDl+ibJY0S=;%=! z|2exn*L_|iHSs-_WrG>#GDio`EEBpUHq&~cryQHkX08uxu`zafd{BaosiT=?>G}E0 zZhKRme)bNb=*+AxzC5$r+GUt1!g!B<VN846#B1fUG;PE#vHoZK;F;^=Zq0H}yNShD z(bC2|kTX%an7Cjp9^v%pQZCOLZkWexX82sd!_y2VC8M4iD$O!BwpV3)ckS9ZUvmSL z6%R7ZLiEB!F6NSu&{r{JO{|wcO589@qKPKnRT4$2=1`pF*vh$@UYISwI75cB+Z#%= zekqN!3#qD;DHTgpRO@tl(o-WE_^$W5Qm#s;+Y+lz{=tKH<VrIt7=AogU!BUmy=_9R zZ%)n#(FWlpt3WfwQcg4b^Gm5!O0uz9l^=idkU>*g?F4$I(Mw&(re$}dCQn|zR>#yL zYz(J}8QI9v@VaN3)q~LvCkt{`Ay**tJFm_V`rkkLtfN_HMjehXA3twNuQibM>PR#D zoIHKm)!?DU+Ic!x)ORh&sXCEjsVc3YEa$J^kiDK&JA^*<p*j!j9|9J9KmL=VgYfvg z$ZjV=ju|rh=8dJp^z>PZ`WeW?;H2?)BS@JBu7ki9U5y)B@#m-KQrF-Gh)AYTU{7}a z>Pq^(K4J0~SrFBX{P453{Q8I6vZaB*XHQP(cumqUc$o3HpsYtTt)_RR&Q3p(SvtFy z^u0!&Yte&UO{u-@V{naTy=lVNL+%&e4Qg`iR|hF=#+72dJ3+}*)Uw$ENCKfl?vm4h z$OMwPsqZrBiS@W%AAazGbO%F{5#cwUJlmIGbS2+-_XBzI*(Y@L{fVXiepfT|q`nZG zI=^#mod^+n)WPzH4m${%C<7(M*R{8l=*^~)G<q5c^>l5gl1ZfHFaGjJa(M7ke*gFX zZTaReeZY604Pm)nl3Kulo{czAYpx?{kr8wzGC(X|T{G8{qFKpWt_wk#uOh;RHAk1z z1Q9-&3A?atd}Q-Y0N_lMB?eQ>KEXY7^0+>fsZB~b=g28~%fntq_bU+afMYM_(h+vD zGbBL>BiOm#bHLgP>Oo$3fmqjq^k1RKnv(G%wZmoYt7ZN7Stc8$7R2C@C9$lf`R&U* zggL|A%$oH@qJt8yw<+D!o@U~+$wMj7xH6nX`nn@yH|IU!R^q7pqBY}M3v+blhDcoT zC`N3I(%fV|naxHR`^Lo8$QDBwOe}~o5&2QG+&3u_Q&NhHo!D#QLoqVjlEm&}oT$tN zAFgQ{7!%`dEVvU8{Rrgj^hzdb#1J(@_A-~x%-0j=xvbg4nPvwtLT_H3=s849u;@k# zM>AiuL}sxPAJP&VO}iBQ#m2juh`xb|lRYElrRb0vYnO>~-Zf_ZtnChUY&T=s%+E6n z#G$UkAOD|!CZ9feD$qp(ySTbiljm=a)EP|K3v4xDcY-2SIX^pPM)dZ3@5}K;Lo@Ui zpA~Yew|BOrP{_#h{R8Jjf`GyKdZi+oe$%MqkgZfp^0QALGDE;!NAQl|YIl8IDw^T{ z<kQdOs@0|q@WLKrkfSJTN<H+9{&|8~c6S7kmZ1g)S$)%~)ba@#sF5EcgVT%&8sY12 zeM3KcLz0CO;oy3+C3OvATAh(PpT0WQEBWXD-anRulOsJ&KAGMNM92LrGI9vsz&@ca zj&`bi*6FK1$gRqo(<bfLNS$C-9ZkDGAzBHCGa5{Y{(vU{Z#z{7wW@0ZVVM2nGdaDi z>$7TbqmH=U>1d$R=XlZD$_ht-nvj=L&IIy{htK7Mw{C0Dm61{*%R7r6_9W4!EV%;E z!^bcg*kF`OAfz-6LXHP)D~QVslKM=j5WINSjmSn)mCvTx5{I*%2GRm9gRXNn;|RB2 z$lj(_4_fuua_CX;26b)Bn@5I?V}>B`z6N?gaGt(8lBx!D`)}UJ#l<NRh-TwblG&=X zM}h1g>{GE0YdY5FMy(y+1EoN;KxQ=127KQEvY>m9-~lasw>PUqf7-gIc@2Jy1{C$n zk!)`5N?p$p)?)-7$Smi!i+d3ZvTfup&67VbHl}puhoaeTtTu0K%!bG6-!Z#>t#-Ji zv9aW&=Lm5!jyx~RfX{9JLZ?4W)fWR`=Der~H30DY(Q#cy8s+V5<YjlQD7!29P#Vw~ zAWseB1ZM{fc>Z@GHbW^zC@-ne7-*!9V=@>xB_N0f;G);c5FO~r>w^=G{<k!eE^GFb z38x-KnuqK{WyjbXn1B(u+{~C{OAYCZAMqlzdlQGOV>OQj+d0-AZWoYf6kfF<8$7P( zZex<4@j7`F@i)t{!BQ*2b%}Ko6@OX!Oi#iF<T(_y=zm}6`7gQ{;tWi410!=mI*Zn+ zBJ;i?%6!+DadY)DxrxXb<wC?72Ew;m?%S8eJb=Xz1QYr5#q;AF0a9JtT$j2!CuEDW zvRMMXx*AXx)$qc|HTCa(-$pnikpN@qQr@HkF`tEOmbx;`a;v6Yh$dY#1+p}A+Qh_P zB+`y%WkCkSd;82H{TN0EgNRJ<%O@}8=u8c(NvcC%<NIELS<aR;%_zsnMm6KBlx5Is zlWcYC_FXyAHEFe5YIuiq_#5l1w3g#Rn}bmx-B~LEvM$r`_w;@Pg#j!J$Q|DU2o**O z_FzYyE|kK4^4UZ7u4g#NWbqD8)MfDosMF*3P*>kvsmMhO{p;$S@O^y{sD_To?Iopk z)TZ)VOEX{~1<3NU`c7zFL<V?wXIr|RE+P3KTqjmL!!{@ou6(t17y~;aN~OzXDddYR z(R4JSf%Cw6Av4XOo@)|xs^hWGf2MU!(x`*`QwBN{&7O}hFXU7+blBasYFV}`X{m=Y zv}LrE>CdH;u16UOW-?QdufMw`=Z!9*=%G5=jdIpGR;aG&ciq}4OEWoAM>b+MeRkO) z6C4@$RM(=afxt)|Xg*^Yymr+&;;fenNd_P&iGJ-~O+J5drpZ*2?SX5RqO@cr#cV=< zexkuppFs`S^RV04tJQK&>g}#N*1qnep|$|_{MJTQGwPmP>N)9aP<MFnN`s#s*Ks&a z%HyM{et%sW%{tGP7iQ7m6d<6+6&dSVq1Nt?tTekP^Z7U^0S`tAmd-#JB+npN43;@Q zKjqp}qSuD=(t}`bJA*m%-NY3s?SkMtw^81*h_anaW=AEQ;+!yZO<lr7vTS3P22EMH zHZ?O&+=+|QnC0{~HY&x=eSwLv=HkP<>|B6`;X=8Tku!}Do9&TQa=MrrIocqi!DFB| ztcQ_ISJ$S1D0fOdUPN_9ULCin8nv#68PU~vVl_)B@nE%jV+H~PJtXUuE@2|d9;VZd zMURav=H~{R{hA_+XNbMvbwPB`i%17X`t5_c{Huwz^oi%iGe&EdvQZlo^jHw<P552Q zj^H{e%HE()5SQ0opa!zMp|f|0NTAN3`)f6H8zFdzS-``xAlc0cT1J*;klWaSy~f`* z(P1TVA8wa~6HGLYGRvfJ6X!LUXrtItOW~4oUaa@kM49Aq<{-|>1X7scpC2Axs*xJY zgZrCYJAX2ka8h9eGV`vB&_pBdB?6s|aw%@=D7yx@M+uP;a*kalvfGFNMpW%+R{9IV z3_T#Pg?i-S{`u6@ej$JKXWx_K;}fYCi}LpUd-D2J-(Ry>=&=ID2nccKH7gp*$;mVM z`Uh{z@BYRIPU@6dS(T0vMjbHzv%{ulT0?d8W9O(eD{J*!_P0^Y%9Gcx38@wedDfHh z^u9jl{p~G2*Qbx4sG}H$q+5?LxErYnQIRyYyb<t!_|^lp5lM9t1KO2*+M_l&h+LS` z_0gl(TpKt(81<{GD@pF{@#iswC8rtR{aYJyo=r)$RFaMcE6-l<t7FTM<cD#pur*w( z5Msu^6H(B$0a<S{X%bZ^sWbc8=PxB;A=2U!7tCRY>p*E0?~e0@>~lg+!bHl26cZYd z(u%CJrx-Y-Q#rX+NXzr{faEUhU!j0{d_Z-yQZ|qwq-`PFs-JadtE}%^kT2g%<*GNJ zNXuEX&j2+|Wx6B-4U|z3984g<lQGQR&$<KF(`UnJ0HOd|FRQbzXfSqpHPS42OnZw! zrwDa6&yqg?7COod2ntbt1&VQ8A2Co#Cp54dJDvFiWpR5l(BR^-c_o+UCv&AbPlL2< zzN`TXBz*f))4*Xkv|L}*@6pcJ*U$Ar&Ir~Xt<f{-S>rho8<=}!?tZZ7z=1f96(`wC zkyAUR{4Qn7;na;R<iUeQ`OZcJprUQTl87?s?OdDQEbEuVq`sG6Z!<%sy#)k6o4OY) zb;v|Qf!WCN8+vhX5af#JmRyIg<2KUTSOSVaOHz(c56#Zbx}^2O9S;*>o0Mb1+v!X` z(kF8g(}`MFZONsql&e)n_lU0EzndjgB;vAnI6*q~j)R6)R;pyPLIP2wuLs4O6NAut zgvY_fEoflz?t6DR*~mt+7l}`Ebxt3UPInZNq!1++d9W`VZC)^3Rw{*sto_*H%?5_p zxlUIM{*5WeyH1w5JR`DSpb`GmGMc~McOJ>|jlJ2!N9(AuF{_IXfos*;a9`%Azzimj ziU--Kb2ss6X-og^f`MRB%Qq5}(2cP8BIuEc!NIXebGhf<GuP@tGLMQQt7eyqF+o&R z$t-2c%M<Vn4b;ieITgJy2%>R$#d*VLXIIRU2CM;&=S0sa=`nisY>aKc7#}$=uY5&2 zrCq{XY)r>pB8rC#xZOsqkFoLTZ1bA?Y?cxRc@RAd=B2ME&krcV^7!#HIoAxmTCPg1 zwkkt)T(hZDld(E&HN>StSsLmPoAnEljqcrAli&LG9)olzIOBpXevkhD;rG6fk1y32 zt5d60S2b`)raqBXy<Z=z!$z-pty<B~pE9sV{dH9{UJO$C;`vL~rDxN|u--Y&CHLr@ z;lxMmxG`*bOIt9Z$3z8ES<N^#W7Zs5+TDsK231*4fK-*G1MAi_(`>cmT(iNQ%}sgt z-X8Vd19eE~JqK)_$vW;1GU;KbLo#m$b#>pLms#NGQ4&Pp0f-z~|C&Dkt&I|E`;+d3 zoju7=!qpM`jP!b*I;b(v7DRPmgFyDmWJ<JgY5n<?LO~AeeRZ_@J{Ty2^`*ROj<yZ# z{txbKklBrOL-tv34du7Kb%(8gHb~Q%p{M@kQA?lIllShf%EeV5RegSMM$dRLmn5R` z)~$8j+aZNv)-*8a4kl_7C+f(Pvb9!_`@2>B|6{h!ZPaqQ<{G@|-)(Bp^y!mR>8Sn0 z`5U9Q?xRkQ`#%xL<?pOlWNRfajrKs!H8?o0pUCBfbLholMGECric-Bfc%#Xg?sGQB z_v!ZgTr)89!Cx3@ra!lh93W;XL<Ii;RA)-XyosJwCw>Im3Y9;$W&)iG`CP8QJz&X! zPSVaMFD?YbY(!~pS+m7NWm%VoaG7O|GJCUB$t<zJj0psm{r-T@*6a7!Vi@IGNd%!q z$!VqtDE}ss_YLi{*V|#^<B&~6P8O<yNz`E=Fpx=x=FRuR%)rV-WZtiym=8J#_;)6m z(MZpcb`UXhgkPiy9vg$m7`1r(F1S7ZB$zu5jpafnpJBA?G7@3U&Hv)HtklY(LX(}_ zcsw*NLZOhAsvh88ZzLao@`T2yRLn_xr6eUiyf0t9k=^YL4J0c3yODmcAB@$w<>yYZ z(E@Wd9h>|$pKNSoKD(Gf0T}=Ky>Ir<_|LuFb=H2a^b+pwZd}XMJ<q#d6u(Iha5>#u znjIeB<cK4R)LZ5n?#9HF-WH-T(M|(<4N|85w~5!tZEVQR4EFJ2vs&$SmG-52xQWl0 zx6v`P=32xWZRxVHemJ{$pZR!4hqw&;8qf`fA-G{kTzd2Bh?gzpd939P`rSDk4;Z$m znayggJl9H|^Dtw)hln=9S6u8^xNPG<%Z$N3FUr_B;=bHzVNI}zw1apX&5W~x|8iJ~ zID*l`FJ8%C{N-QKL2Yeps)4PjbGo3TMP?jKhs=&s>5??Bn$l`EWUaO$sX~Rd-(GK* z^C*~cC6a{SXSEe%u*Qz%gS&h3WFPa%Q+ihl^3j)1^mi}yj+I=Nr)!M*^wwI9Q1rtm zPs35B0cB=q!4A<<WVs1vKRg#96UL=Yq131+U%R&{Uml#wx4(8zKR+km|Ln}Mu=V#x zYHNBLy!F%>2A(6|Lf*FBY7?gI2Yv2u(o50VImmoO0-u{j?t%;`l%YWaQ{9kB2I_Q< zj!&hS$!Jhmk`)bl`s0QpT83F+yF27rAXzXRT7r?WQw<90^}5{I%gC+<8OW?#ot7km zk+gbxMAHR+zrlR?-cU2zoIZb7jvG~}XaMu(q$P#C+8K3H`==fKd<}f`JE5-DRNK;M z4_P;_ma<&S3(b;Oi&+_K5L6%Pnt5pP^VMPJXm8(KbTMO2)+(Bzw+8a}pB%`Y?TWOY zIsU|S?6X``*Fa{al#z|KBD(_MYFhf8_>6=JVQ#_L(~-Oy1yZe4<=M;En$fqono z@)b^_t2d5FbWEr}K)t=)4G6b`^oMnWAQ7FhXDBg@{`$N)<SA`3Or-FcHXJuQlMXf} z6UuuF5e6*%#1D-F_z6fxjagQax<PI9djGgxlGBcAi&(iXGBy|1vJ2AkcsiD*p1liA zASXk#?dkq%pkz{BSRx3|zOMP8J&{|xQ0Gf5lu4HfVP7#u+bkgI7?NNk2=hV<(@oS% zl0^u|rAA=2Fk2%Br+KsXqfoSepqqU)oRW|PO=y4WGF&@djL7sHw9m~Os)L3L$DjbQ z3!+mHl6y?x@gicu(NY0H28=O8y9bP~c-}(OJ+$+9u7krmr9VY4&zNEc&M@GA$7fB# zNt+vir1Uu<zVPPolCp`t@`N=c)TLT_>)NeFpfKg6BX91&L9p6Y=RN!GFF$`RFJ2z& z1zwZGqYG{<CNS;qpUlNmW(n4vJDZG#t^JA~@?{2j%z?*=X3;ULR-(fJBCL69meKVE zF)lJK%`7#EM{7FqAY)0QFpg=(HOr&&LQz5aSes&;g&%JMU+VueR&G?^wI+_}qqlYB zRLo{AlrZjX%}BGF*})iIT(ogG*^V{)icUwJyxHR4&mh3~jP!+GLafEmE-A-E$ThL* zLQG<L8K1Y24wr@0rJa?C!i#Fce)E_fL4f-6RGs-VIXS(Mqr*2+QDa*IQA-VKN6$Pn zZDuffN7GrZNvqvqw!XKwEnX_itaNWf@9xC)A>%)j(P)lnVGS_@{O)F%v(oo9D@O+Y z+4B>1GH^m!1{XN;fYEo>*JyMfJ%2$Rab_cd3qtN}ZISW*;^0v4Lz<+iOj@01HpfsM zP8FX6cKuW{RKUh}wpWR=fe;3mJ?SN>g4TuZ_{6D}L6SC?$?|TjXn>JZL;7O>jWpX` z+8!w51-{JT&=&Sw|A`)Xtgj}Hv`NM~F&AWs^;S!rV^OBMW;?4@d41j?ObiklQ;_Lm zI0~|~(XcBC>!!j%90m+@IJaVUpn)bd@-<^JZh{(u8LSm#Zg<tlK0COSZ{Djh0V(Cv z66o(2z+2FyquCj;9T4#T=8D?FaX{x^$$OI2@9U^tOeP(Be58)$s-qe42+Dm4b~1Fq zCdc3!JyT!oH)N-+0fPPyS$I>=0#xP>FFWi5&+Fbm^rbf*&WF8tAu@v5_9%m7as^G2 zp0j-q?TBk@TU4e)=fY*Z!InLs9^h3ZLz!FbCs32N+HsV4h;+aa`c4tA>A89E)uJVt zZyNqNd<FtaH`K)q)^Rm=S9$_r`_|58IAS&k$G|R1db2@PvmsV9=QT?-=N(99d45O) zju*3R-Xi_yi>{_}At$wpCI@mL!yZZqX}SOQx_FsH43V4;^sF?@e6nDi*5t*r@voSH z<?N;xZ&QwyFryRQl9DWG<ac-sMWUQ!D+xx-UO434P?^eSB!$`zE-xZ<s1>O<m0&)P zK8P7?KOEl*cn<>@vbu2zNyLV9%xapx@7hOjSUn$gs!50n7&>Vj6hKb6e26K@1Vyx| zhpJq_(1|3c9fADP)(<b_Gi0dZd-3yVyTEXUq#o3(W=p#IcP5;41kncxrxyhnl7L7` z4GSR1v(rAK>`E0RnxULsTuCOMcLYF4V&XDmozO}Z?f?Qw2POH0TV^ncF*ZJfeyI*` zV^hAOvst2bdvgP7GXPgWsK0C3Sc2DMPRff2=7e+2qr^XnPo101j=w%}Z;6t>5M+<k z$h~;5VwQC9=dE?2P{V8<v|aF2qNKvusKJo%;u+VGfliB*XXlffoKsTcirOJ2a%r@G zaegIht9du)I>I!?9^rH6s)#lkw8Z<^?Tr)LWNF-hjSUHkGTWo#7qd_IqMsa!X_#oS zK6LKZ!3%Vf&>{yz{bwINl%Ie4P;PDR$nN&8)YV~~)X!br7*0~xpj0Sw&`1lUuVGKt zYc&$T4&b2G;DXtV&jbl}6bAJ(Bn(0>rJQDdgQ+|}IFi+Bh1oicZ87VFV-P$b2;Ny+ zrK5hP4%LJ@^MKc}N4pzq`nzSmDFR%ec|LhLn3dg|*IPGgD<onCwnUrp_TC1Gc=fBk zqyXJ#Q~K{Msg+P#8Ol|wL%V`6tmJT>QgSx-*v^Ijpp7h-cG9pJbl@bXv`?@P`2LCS zgiZjxWB3fReaMkE^gHmofa)t6C~Vg<6uPPE&veKRACX*!vzwwrbyLy6;D-i$CSByb z@-9Am;6|MehaMqj3}Bh~>bQ-NQ&7{auBy&(qS<y^6CWtf4K-6vds7avnXsgprX9(r zJhpW;+hf_Ng8Zm<X=;eFpcG01nHrv*wTeD#N;CAnbkvFOZLdgP1BO=z$8z56Nnf+b zR4OlR4R8x-Lz&l;PD7vDV}OU&X1o`^7fh**tzEW_y?*_KbLla9wpb`@Aff@!(E$aF zfZibSLOBIa7wv}#yr5`T)bHr3-5%>Y^f<y+cn`f0(#8En+02cO^+Vf`U~u9l*BO2; z_5&kEF}og<{Ho<rI8?{P^*n5}Oty@S+Bhse(}?gQGbY4b>+*@Wuw7?B0YyWg4N2Rv zKj3#D(TfhcM7yJJB{mew8o4Gddp&WB%Zi(b(&x-}+mLg!kOX&jE{Pfi94Da4dRL># z-jolE!-Q=7v^C%Y@6|M_%(-bzIm2IcV_HpO!TL6?jjgGXb!UWyPx3H;gn><%EBu7x zT1kqd^k_geu&V$D7#TKdM@bGi@X_}kXr$h4sbkKmLD7SkPY|jJXz<)Hfm{YG%|0*G z%1TKyl)n7vN1y6tH?o=;i|uxKc}m$TNiPgOyeSV0j7~};_na4Sal86Eb-g&4F4Spt z7*%erm)LqEcz+nFY=W1-M%eiyK>aq$>;$!3Y<LR&Ewiz%!Lq{$Bd%zhS+rgri7c1L zw3x_@bsLo;HM4=`@jm*vT%n1R-ePjEOMUtglEyXI$}R{Xt}orjH2&xBVduACq3AT5 ziD;uE;Y>_zFRJ#$NM0QXGW0jE4mGH2ur7xmMQa<L4z*h$438GBAu~3X7pxnziBBD> z;ePb#V@478?%$!PN5Z>Vk9|I|%|x5hZmPGL`Nf($W3#+&Hj?1mSgQq`Lm-j6F>4bI zYuwFFPo6w~DW5)kEXT*kva1dq@~s`#EC*y8gISC_nN2xSk4~>E)6qa3`l<}|-H$KM z90MG^%@`np-eZ3n8w@cE&YvHh%UVY7p*qH2JlUVCegPKs!$1|JxMrs#FAtCD;L)y% zk`?$1d+N|nF6vTmUQsa)_5)kLp}_?Lb!5fJ2BCZh;S|^q1ny9CTdfxKd3`xP-Iwk4 zie|C}dG+FjeCNY=HS_Dq^EX09_GPmnpMGAaeYto4eObw>v+~CB;O(!;qc0yz|LRJ9 z_qTtOZCQtBr_$^7`R?dtU$0g4d9&*L(=>zU>d;{uAc%tgdSsfv@!p1f^6E;nUdyh5 zo(2KFapb`Q=6+YR;l5*SujHGnWvOZa1Z3p-s}AR#HwP2S%Xah`5*iR~uVkpO_Vu?m z<nB&|ZFj%%&0X0)x{&Yv{E2-1-l~+dfqdte?vZtWQt!yq*O%0bN6_=`{Z$$0@1wpB z-TkAJOWE5jNPA#qrGnrjt<RPq9DmswF%a3*=iI1d<<>?;`nuhpziP--9s71ICqqrl zAR=TWBS(#XID989rOFyhHkTKtJd>Ghkz_b<3102LBEJFZdDvI%xAh?Jnq*LetQx)Y zu*3i4n>(_l&-Jf<a3FmRB+=f8zXw{gxxUVTuGMWja+m&omI6mUQ4tK-DQa*^U4dZ0 z=O~xgTnk<_fw7Uc<cJ{GjmnryBb4o|OlB4diCN|l-BenfkEM2V@2&oCq-z<qk29MZ zQv-?cZ{{tl#>9t>n<(@C8WtMoY}w@!pz|@wZo5T7L#wM%P$8`jc}(I;S~qH?Qe@Pa zux{ic>OIIz5#_Zf4xaZCQ+{TD>~q1(xfC;4M1Ckr;ef$d1YtehMhqS211DU6<-ku% zHm8w&UN=%VJrJi}m6VA*xSf#0!?7IeGv+j^E|-!n1N9b!In+~8A^^<P?_ru$UXp-b z)qiUY%8UfHoK;LY(#Ua)I-MH6yk-JH3IrHmTI3fbIq{1@OJX750^?dp8D=;wy{vk- zq^K7NKRZ(Af`3PFgoqW)>$CF~+eC_df048vf=V%~!9yWDm^QAIwyaI+McN}mXx1(} z^oRq&NWs_~V=<BG?B=?*{>*<`7aW0Xm@8!6jNfI|vKb*Ra{2<hh<N!NzH1$dO(F@O z8Eb+7j&<x1Mv5NXDAPSU)7VDp)KDusIk}(%LCrRxgYrqT1c|BNpRyM>1!iYB4l)RX zj@jixk1qKg9OU53%NMWtU3c!?qBb_kls4MJV&ik|qRx1Em_non)<%#SyUdB71wj!l zfdxbugzM%;TB7DW9*yP8r~C4M{pnwkjC1GKZ7P~Qe)WcobqJ^U!DLSI1jGtX0fb5_ zm9lh4Bf{70QPy*h;UyUViQh}75{tPF;aUOqyuZ64Tk4qq$N%jw>3BhALJ)u~9{cmo z-maWzb_xeMWo_Nn3IUe`(!~@mGM>G>I-#M<0?~i&CFbQWS6&G8GcFkbm+}<`|5R4v zC{AA<J^oyN>o@-`W~v8Ahf-ZxBjIsMzJvxdx}SMni<MS`4)yWl=dwGvPlh^l$uZ6o z8GFi0Nx4vB5Cp{I;H1teYg@YKuD)-WS)(_-kSwsqecqnP?|f}t{)hkfi%{CuxMn8| zA{ko_s7WPAGIAN))NvVrgkZ8<TJJ+9Q{<px1Vv!VZ-R8zoM^T^l0&Z}&kkGi7e9Hy zgk_+a`bVGbtL+Tr)0cI5@BS^>Sjnk_wDR|#zU0jMgY!0tZ}rYtPS5KsGd4OS!rBj? zAIjd=s($xax&xnkwzpBH<J!OI%SSKjL|6g$_lB;9j(h&-u&p*P!4g5WSXKL4mS+7- zni_ba%z%TjUZ{pn`Apv_L((&TdB`l)%>hAK6Si?e<+y?dN<F#kYBHsJ`u_d9a(;O! z-A<FN`VZf^CvV+<PXngD20#Ou0E$N$N$=#9?j_LI_1YcT+}dH#ia$fp`fI=PO*((9 zbFADox0l|W5NAzXA>P_3&u2-_TfA7`xmiwVZdC4cKZDXsKr(1L4w{G0;D*L5PnR@b zF$y9+q0>Z1ZimB9<|O)Pk`QId<C$RKkhy}$fvB~p5vB(fAN7W%lt<xzX2QDbAV$E+ zPlANJxoFc!<}^aCs`GF69Q=j8(#@43VHQj)%I7nz-$3~(N<*U1g`Mznw_1AH0*?d{ z{AZY*&~Rfe@~^#>l9e@257Mes4yN+@N*7S0U$&*_WwGHP8k5i{+Gw;6Sk{1f8gSxI zNrM1A<B~|_^-_;zzcD1dQ`hfA0Px<PW(IoEJEK4b>gk8ncs4X17@>$-8HX^U#s`LD z(XkjWJ44L^lKgHApP1y5?B@lMXaCdZPR&UVXG61n)S2$Brm550y3zncKM<ELope3b z(;x`-RNO&Jc<yjceP`fV{zxU~TnQ(Q>KqguoH#}=$_0L4=Hy1U93pZHzb7hzIBV?! zl!|s4Kw*Vqj_QFR%5a>i55tuR$xgu>>PEKZd0vDO?%MrYy%E2U<(t6Og&o1m8U8uK zZycAxhMzO<$nzWn+cWW@I3#Vt;Ocr>^bUJw{yZoLL6l-9&`>L;rJ+u4;5)&UnX=aG z*|DazN{(3pYri1RH5xKdBbF}}8JNx9H>QAR-SgRyiSFuvUbq$u>@2XsQhQ27V?MCq z`#R#!oPH44`Fhy!ETE44laC+D&p!GE$)l-sK~`()YzYOFoba3i86;n^M<WhFaYz#0 z6Rlw#1O@sza8~%8P0f_?ENwl<5;EU8$})uQaMqBiK@jB0(-$-qtWOhiPLjR8yS^&t zx?atzHh&%g0!3YhL%tgz?Pj|@FCn0oJOGTU&)WBfbbvVDLD;5;zX$PdGIaqB-fKkz zas=B6Z^UOqzjRv-J48r?XWnR{G2%#4+=F(z=elRc6K1D5bt;`+M_#>tBlqsUMR6J+ zd7U0w`?3u7VQbJ5SgV#;D+c2`<vA-10$ROq82EqtURi$lxS;`gfiUz~e=Y!1Ti>Au zHajxnaC|6L>%xIcxT_#4LZ#1oP7n!uf%5_fcnLN;l=pHu&8Dm5p#n*8h?13tIz@nd z*b6t~eyoW`N)FFE@{Ri|5)6~_{Z~z?6!KCl=XAY_npg>ufvIM;C_my|K!8pgJtqd@ zK^fNUK_o=m98iud&@BD$?d@%K^aFXb|4jEq-_K;FR4!4G@S<6lcBiFlQ04#}1~B7E zSn^8Hjt$fXj)#3I=JO2RARcpa(UNz*@hg&Ojpg9@i~;%A-hM~^+kg3A$shmakLBXU zIp@qn^SxTkOIP=-rF;2b{}=y4Zr#2kfBNTt&r%8M_ZzDfxqa`ptFzA)FCApR46R4+ z-kkC7Eu1>|23`zx^x`U;(dm%axv=xLW!fcu9M}?1&s<!X!#Uk4KnBl?42z1kN}C(n zW22m+NU9fM+eQ^I=LJK%Kys5i+dFbgFKefDCFqQR%wwrsalPK?YXp=G;eT~j_4WX> z`6T1ndA5nDi4%paosYS6y@x)tzd>K4_mVn7nHlj=8Osmmlh=kCaXx?1k-SE;D;hyN zZD!Q7Jjs7+n`~FC`}SU5jytZF?}vSgDfVZ&=n6GfIAJ(#lnzEv?U^Jsv&pbev*=~! zS#H^6q@jle-_z9hy5i>=>5zPrrz5}tvUVEIJcgi7PKIC?T90*0)Ps<LL*p8a&|N6( zYG467*B?%$n6{kG1V>S-pl4RUyM<oQp{o_mHaM_zh<U~yhNFjez;-Ro3khjVAQbp> zwt-NO-#Jr{8PJs3C*B7HL^$@8NrnOr&X8hHocM<gC3)RwL_la*mrh5&H<Kaj7sebV z89Wd&VLxOPgAt2;htBhYD`t6cftJ9zq}T@>%%OSwJLBOQWQ988#FcpvoMGSu)}GH8 zs+Vy+La2=7C)C;a96|)ehU?|JF&wD|K_*1Dka-|uVNek|4>(c0Ltgg~QFTg#KMc>n z_vCUOja2Kh&gUVd&sHSY$$+2)-vv#DnUDt6zVzPseh^W2au?k!5dh~TG<=TdxFXJx zTZdH5WLW7OMqC^0Ndt;$nhn?1H)L&fjgq7L2X9#RnsOF{$KV?%6n>t8o^cYe-J#3S zaZX_1x7XGPTc4_vxxJBdXD;C+PAL|m&xJDy#0TF~PPv*R))nE{y*t}n|5ryRlp%F{ z=!Imm5#JA4GfH5ng<_A;UkwL9k`r{hQy{K(`RqydUXQ5iRsiWO6ug3iC}|=9ZX>3I z;jHB~n9HHY9G*w4FFvb3?&_M2Nbc(Qx|A^m3)||SrFEa7%!Ys@lQ!(Z&t(f7SsG0H ztm}gh(CG~%tI<E4Az*hv#6$JwZ{I7(^RqF}N+}B@sLjBX-87-FOgG`$vVcsYj*XTs zDj9kv+8D}Oekq@z+8jv0gJNHf&j%!uVIT~i4Q*`bLkAZkt%(#6C@}t!aFq&ao_m!4 zU_-E<MSW&;Eukbe9HIAI69{wyG@Q&Wp5t5-ijw|ZMiZRg1Z9sN&l|~tLnrZ#GDx{x zlcTc>eTN3^CxX?@jSbFC`0~jU67P1_Yt;0|`5%Qfa_k}0;Yy`~TwOKE-v9}+3yy?7 z@V)J#lrjl9*Yi*Sv8-6sBrnhIB?Lz3dV+<>gtJ3nyAWvPvU#^3Ap8aHoI^lrT>~)e z(X9I=%F~Gri@G+h!z@k7v@+ALG_j7Hr5^V=x5va}-Dl7`Y$(dS$y$-zgqz!CT#^+N z(2DYIZU`EpLZ9(2qwB2rKqMx+%_(j9QiU%G@(fx=vWN=DfxAF(7#MD!aBw<Uw&)AR z_{EZDra44`n#~vV;9!Fhp=DEUnj0KpKuzQ!e|7}LqovwqB5-gmoX3<<YJu%K(5a@> zp=3CAF_lMMJ}n7-HZYsfYe`3yO3TdZ=k>sW5err`vQ{`0I5aQepn51qO~Q$E$byhj z9~?FG!26VZL_HQgo&m{q>X6}?QOAWr_Fdm^R^N3L7%Da;(Rwl%(~)d%R``1zjaK0- zD9<>xA$iDM@WBvjQ62{_Ktp=LA6vlbHVmX7Op)Y!c=KouihX(Cl^pP1s3)IZcAegK zD(OlPV2OsGiRZz^$dZj2gd~cPs1*_vhiZUL;IqHhJwl*CSf7Ci2$X==I(k8&G6fhB zLL-1%$0URF^&lsyt&NTZWIbdB>+fKI2AmyqpW$R0n6~8!jgT%E=Rz0KuB3y=KcfN3 zAe=Ttz4nyT2sdFcV%S@hm<v_le9l@d6Cgj0oZ~?d1rl6A&t*xE#<Y-j!YIBAVaTG@ z@5EU=(+G?XB#ko6fLaYUB)>RRA(;1@2lH`_!Cawgro|6OhjTtJsmxFi&k;)#2^SR1 zT493F!85GF`7}v7Kk9EIU_daZneY#O`ZG?@s;+IJ`BTp8O?5a|dJhM5R262omQD$u zH69Py7hTl*+(NH4_6Zu{6A-Lc_-qgkfeh?~j&`bhlbkbYk%hu^3@0O^QsAOsf$^CT ziOH)W{`~2)(8xNJ0QU?i!X#w1Gk^<8PswoZ10-c<@F$!R2x<(FyxB|$7v!K8jQvJn z0a6_@+;+Fk5>{YGBw-N=30w~|l=D`~E3Q+AA|}GmWY#<yb0#^RJOr*n30vF)cDcZo zX!aVIDf`Zca4smJ6|&SiAL&{GmCL28a@n)8y;_tjwPR<^K}Z_Q@aGT|meG<HW_k#E zaq~tfN$9R=TtRmD>BWVdo+sp;O?7OV;B>oVX(Qm8TAuT~W_c(X6iY>^H#DOkO_@o< zrUp~J$C)Ab1fLI-cmKRAzx~0soLu(hu-+4sbnJ5mht|*uV+|4TCDNGP4hKFYAu$^& z`~jr|xexjVXJ-c*q(atJ69;vkcXoHBqwoLa)5knNJL{_)&kJV_G9k_qf+_^Hc*ddz zCQVI{g3$h;zCN5J<k{&!CJ&#nOQpkE_bDa|KrYh>6KbA2pc(ul1b{5TfR}}7byJrp zPV`yt?rplHCt@qTShd-*n;}}ZbEU2L%nezRs<yEX+vN$H=EjMYbG{SoSS~@Il`T6S z6-q_MnmPO))x}s4q0KeoZS2vkiO847g|KeqEyrs1fZq+W^cI~HvUI>1aAZ^}_N`-j zvcJ)>Z~?CqI@U{O6F!{}#ynb^aBVAu4q^0Cp)qtB3>ct@*b$Yc=Hpu3)__481bu0@ zhI)ttckux^qy9aDaZiRle`7+bkhMkd<JrZyyQJrsrX08s8XThsc`c{U5e)RAb@XCP zs4~@>j-;(dZEL$Gz6L5;%@zW^q*-y2kT9??MlM4Qs3GlyI>vfQax{vQu!RoihP|)} z2XUKJn(JLFXJcfz)254z5uFw_3j&lJggx-H`KnlxuJ6y=6{^Lw8}S&5FkCc8bC@}w zMJtZ*0^49rs169GNjL^S94E5Loy{tRE;4D~!S=z#p&Q7I!pVD~{+?66()aA?XLkA? zTX0aa$Rc=C$BXqxA2n17d<_CydKN}h2%E@x%Vp_Myz;0kt?OIP(3m68N$6qk^@a65 zWTJlB=?~x;rn=9Gbe_wAXYes7BaA{RQW3ab;j_j-vzC<HU(2xu3WIicH6v@q1b=wK zz1KiNkIP0O$+Ay-?9-`&2a*WU0(@2;#H^e{j}TM_KGZH!L>%VYFS8ai{2qE`r}}xF zA<HUk>k1~WMH3LVXXm}C!jLNA*xq4D!6X)9h4?%KQv5^cH6nP_e*!H-z}C{N2ZXBa z^-Vte>!U->@J7^jz;~4jB{IP=yd_OUWz6%B_9OH%y8#`pOJrRgItGw*dtDlQ7=8p; zG{DB6i?JX(g8>KpyNdRz1lr`D$?oPZJ4zltdqGEz?*}S?JB$n+cOe-DC8(!gO(v|d z0zE?Jj^{y7xPxe&<EfO(bT~t(mCe@2c!aAn)F>A@scY70Q#=#pT;AD;P}K`|#`qK0 zHkL3%0kO^*%@T2b5>T&88lH3flMC-TbZW}MCINek(_s1Q9%7B#y%B9rA(tUn;iB1O z{TR<V7$)W2opt%vy{UZmsv!*x2*ERAi7IfUPludM!*YgDJPUzNyFH`>1R{YR_EkXI z`n^xyT+zW=B7GTVuxN2Z(1Owi+QbkLWYQHm7-{gXdtb^<r8SuHP90zNq%$0IFM)XQ zOkqvc5kj~IEdR|~nKR!{>c`w~a86wNpvdOhI)kpW(<7oQ2`@?X5y&lqsi!Yq5Zzi` zS<%e8KokM8zql_T0cJ=t45X}koJnQrkl`D0d5l!e%W9=4#~0^v^wA?d$Lr4C1YpG{ zG#Jt>ed-b(nf3pR>n1`wBg%$Ady;z3(0Mc-_GEL$d5MZ=Mdo6-<Y)0`G0l!BiFihk zn?c{RG1AsVWLM)bxm*($TZngIFAzL?$-E=hMs!73+mBASjOFSk)_7x<M=;CMT#}f- zx7R3ic1{@7b@azWI!8F?F`ec#l%upfXq0&bdlS=u0AqnEp3Sqq7HF0`gyGT+B4=b2 zP_q}RRvF!Z+j|>?kq~(@iVh9*aN-;c;7rbA7nfB}rwL{s2ng~Nv{8cvGKOaC!3eXQ z_0aZ*Y!As{sDgEoF6+FgvmrA|y6gkO6F3kXYVZRM5-?bS(}p}ubt;I_NOYuz6VKLc z4S69!e5q(8JsJ)vEK?|zC11=jTTPmP6YNUKG;40)2(+%;Z~`#sIhGL#rSC`_UN}r8 z+Mn%*tw8<264Ai(kHY6qg|#ghRU7USHLYRv$AQa6LWxEET&L?ZkU-@FB0RU&P%AVf z7ZSoY4jtG(zT)P?z#*e9XFW#Dj;G`<IFfloIY^&>22JUsx;pLdnC&foNsVL1qXC5z zaqI3{0X5DMe+VOIrOclJ>^G45WlPex%M1=PVV47DW#ZS%1tSM%J=PXeDRmOM#W_7o zo}Mk75e^VRP!<{jAJDum;pR$#VlwTHI=)dtGoYSqmsT_gHF8=X%1Wgm0A8{QVQ>MK zZm&NkbP0Y&rIeI`I)Z{GeLJO;gXZ<QfFO+Zd)q*aP`>a$3e_xl2vlN7@+UI-IyAwN ziU7LQ_bO&J`-Dpg%L}Zp!#Rchy0{~3ol7Q2o&winT_gI|kZLS$|0a%iFz8R@@bIPl z{LyROD>dOkg7e1#$HK_NZ~&D-sRtQ1AaJ3elhAqQaz(bc`MxWOA+Xxr*dW}EtjmUb zhTsM~7%wznGp@rV>?{Cl{vZ9y`%>H8mOuIaCqz;nK6^GtdI0Iq>hg}Y?8*lS42INP zcMcXo2FQ4*wU^Y6;OxQhqpSg@JasS<5+YKrM;-bXs82S#147Nkf)kTUtGz+lh|sM5 z46@j%uGd(dUC&R*19dR?ZUl8{b&znT5FhfwX<)NfqkgBa&b&`F5BC*&pGl&1tgq|X z)(jd`$qKHd;*aE_QP+SrBezz|^7RL53lc!=Ch|9*0HU`%W3X8)e}!;6*5BzSxHc^4 zs)K`s>1?@VppMZI?8ZPMVLMqKaKQ`i6*vtQb^H!tP7>0GO@-hJctTgYHsCBF@w&ZH zmWQt{$wR=eLqlM<2wsmSKI+tgy7q@o|DP>|(}2j*_U0DlgBurzoE}#xRhgmZ)Goew z{fa>%mH_q{2m&+^dhDH_GAT<EqDR8j*YCW=;Vu&P@EhZJJg{frG)-~8^t;gpe1(8? zrNXvEM+TiRFhIGXkS~zjiQok)oh<u!uAPsqr=F{eThA<pC(T5+X7%#uU@8+=)13Xg zv(08nrZo~EL<Vn}h;GNVG1DPO2cl=K_CN#bv@BR`(XrRj;Z@g0U@drNb|$kXH%Ms5 zl{Duaw2{%_CNldy**HID<P8IZ!#p9W1|s|cBPOV>!O^2;gA0gD<@sY0H`p$OK5e$U zsL^Zs?B&j979&_;B(H{O&C$=wqnA?%fg*C3aAt5tqp;uj)glc8YDhQ~=u^GCZ0jZ_ zLRBfvHrkeiJ_`OLBY@!t3_EpGjMOWzH4c{+!3TQZfAOp>tNIRg&9EwJ?Z=(5RI5os z_MF^xaG{YYkO`2BQu4L8Rv2W|R`NW^owgdmLZ06X50=kq#*|2t^ips1rK;Je;Uv0* z=>E!DE+l1{Fbkh`r-@}<tEC&zn`jo?^Fxh#_jBIVgwlsDGsFcV1T8ZnRfx|Zx(^}T z6bU}aes#~rP6Q)CDNYw50@CC;57)3i3RtHCM9PB}Oi2<9km2y&ctXD(IL-r{NPtOM zD7|=L{n+|Eyq%#V^dv1h2HcyVtwRVGdU8DS<-F08JL`E3Vp3|T$5PO9Un}T$`2%?i z{m3En+ePLR8U+OH2qc7c@|i@j3HzUYIneC<@OZ37D^0_3(V1%S=~|&6pMWgCK5>q9 z6nM-G@O0&Tis$_5N;9%@PJ)6{sA9kck|w4LA~-c88qq0AAG(HT=W6WLIt8`73^bcZ zt$C=wR{~?$IOB;mnqWFt+BtY~Fsxmmc!1r3dg(e9b)9?q!C)-+M$n}n$!CuriP7NU zs*RdtmWbK$**O`=xaKH{6g6AIv!0w?I1Gd1RwsI9tE?k8+HE>f=loN0cV|n^8VxeO z5rkTvC4bS=ACfO;cb)=N;z&P#`gfnm-R*PP-QJWV&9(wMs=)R4<9Ws-2OH~iA_yRS zu8vy55wM(qmd)~eSc6SXxxaAmsiZ^n0I9nE`zgt|;6YSzf%F^LI!eN5()D|fhLkPE zP#P0XgM^wJN=IY8qqsv!4DtaI2ZujJ2h1pJgPc0P1#~s0dUy4Iej>xt17Op9F(X~Q zixWGRL8newdSV?+jCt?l^w>!a`x&({1GNc({PKfMd2!m(%zMap0J4w&p+1fE28scs zWNQNgGiCYw@nhF!=_eS(zBy}23aCrqg%j1%Y_ZE`vqVfwAReP1-*csfLMA6?nmy+d zmYoei6`mhkS<?grwsshfK~3mCcXKsD{~+>$WQU1oKpb&z;W#(ex8&mdNG>&CDdt@} z=i1sDk-$e!pYXsIGU>VQ0MHneW=WdWeah&w<TDxRbz8azPz6mp9sR+W<un9sJ~b13 zmU9uXz$uUIh)GF+R=tZl6G(759EsLV$wNXng(hAy#q-KCs?4NdO-wpFCK$&SX>TEB zHJ{Pp&2=|s^Dtyto%05<7i+Fpuk8&rZAvOn+@K%`0xeIlv^F}gLSlaw8~S7-W5<`( z%Ay@m*EHfI0m3X1q!yqaat)-Ii3b`<q6Q1W2TBHdE;E}<oYpzuvo*C!yR|eg1V~#( zqfl(*X=fy-mwnl&sezazLO~Iam*b14XNbq-w|@N{8WQXE2^S**#|ln#<5$;GVO=u8 zY;~v^$`K*NfKeU}#OdXby_Q+y6V4C9EO&-m`1*Y5j1zqUvlIkAWTmKsQ;S$_MYUYi z%y&rEXH_#h$SfXX2684TJDUY&nuPa|VWA$}>T3o!Wi8*gX{UlEE(5r;x8l_D!r>{J zJBuca%<56A$6Z3JAF}64E=@;+)T)45qGp2Kk*f{kOIdfdb}pA57&l?e4;?UJ+>qFY z!-T+voB?&%1wiq@;sYnxz)T6m6GYD>8M;g#mmfJMI1Vs$sO2)7ggoQO51HqHE;F*d z=7lv(H|nzkqoJ3t*KVpY8?YyKC7*BsAf$VBLo>!Xx0D7y_imL~H$zL&L>*?z@5*^y z$gWRgyf3;c=KKIx552g89>GA~-OW+e>}ui&a&R|+?|2?C9>4hVLTc5b+`n6M!DvXH z;aEyZP!{;$yvOMEo$VaYTnCQcP(DpFJRky25fOXS)1~X%ELrKAl<WJXrLP7U;wISV zmj`Xht5e-9Oi7GHaMsa`3+renXghQKaddEi+{9Wm9D6u=80Q)jws4;y?}>d>yR2sf z<30QG;^`N1rte-Tl<EAsy>n?ao9xR*9JRH!ssU=3uqf-K$b!|Wp-l^V;Af4dldgm= zf`0GDN|o(q7|`LA_8bup+3ZZID;1WiCVog>m6=#ZKsi|$sUr<60&&WF(~)bR!)H=s zU9(~Q`<OGmU27a5T4#WrErMW8Ag<E`|Cx!2;8_U2qc577Uy{gGLC+M*Q}wGZiCn1! zgj|NqdJ(uyL;ZW4g)wKE8`hXDyENP#M>{U&$`8~&v^%<f7J@E4H){exm<9pqOi`VT zt1A!2DcY$*aYfHpMkf6hn*a2k6!c8EfU-a6%8$P|l5afNmJi>(tJ%FT_qXcuS0BBU zdRHA+((!a~cS<Z3=&t$@0m{k#=>-Eawf(dOSupQ=6IV+P+`CXZ*Eskbb`G=D(XLt0 zHLhqD+^&}7vL4P|_uQSlxI&PEn!Y3dqO=&OEpBUo(i`@j;LS9x_HD}YS)o)T0qyyV zCo<IlCzr1haoq^fob!t_YP2J`pgJc4GH4+9F2Ke<fvo%B-di#q_T*^LVfDzLOj#<T zUIqs%O}J-ZtphEcH82xt)OX+6UZ>tZ2#HM%Tt-C40*U~^f?_rSxCO_jS9}g!0N4@Q zzfeki?hxmbE=^?C#*E{3eOQVtkDyrk5xZ3Dw$awInNtns6Huwf=g+hrX0tgWRQ6zu zR^L=a;VwpzTk0@2*JQV?*qemr<XYN3*B)`>bdy+Y7(=jSg;0sdUhNE-$sV&7)XK)_ zHyr~4cG0s9hukAV?2Vn=Biv5A-2s-$Y!9CcSp4v)B_%zW!3c-VlLp#h&@;Z`92YJn z4u{Lq$Nc~6)x4zN_T;>+#%Dj!tRYDjYU8pcyE|1zqrFaxh(|J&oVPelCl00?^RRe? ze;VyEM<U{VkkJv=Mk`%+NR^^HyG6ORRTPxLvEZn&&RC8Rx&egS?O3U;mh}D8OeX>F z<x07*rNXh8$NH}5VTCjzF3yI&L$fzwraVB4UdqtuXVXHGjUN(2P|ul!Qi^_9SAjFO zp}-GjPS0dSZ3yE-bH@*1U%<M(-k6y>C&^)ugmvOR0im!2FB-lZEaF5kb|k<ME}ad# zVeKB3=R}&QOmtQ%jkkVTvo&Cye{H42zS5o=Gn@hR%bKu-hNTA>hE!HAM`@`h$C6#m z>vK%x;N(i~ZswRlInDFHy`TR7cBij@-;;N@)109VSBcL8KVT+Yw4r-&XLlrL8sI_I z%Ae}FvMH{e4T))v2cp?Zb0C%Ul!U`%wy4L_lUuc{w8sv8n1&a!GxFr*>WT!Wy^XBo z%Sn#f9IBzLl=C!xH9gY>Z^H9|b{&*@ntG{MvKpYJ)R0Y`JnB$0BLpg`kkN|(8Jm=t z`ZKjxW+}(VM{;m<#&aTGURKHlW~eXsUlUP40ETmn*0js|1q~scIorz;dUt9JR?nNQ zP{2s&Fsm?#7ngIrz?te4vI$2L!`{{0G%OPtXc4vv<untkmelF!86nxzb2HqL&7*dU zz`<~q{e<E*v)Kr|d%i!1^Z~h}On~o3rUrBfp8<7A7-s~C_&q!`+DI`w9k4n+=d9jk z0D=Y)IEjRD0TN}Y5wOG31Y<(8c+W`~@L?pX8|5m@;`te4$fpj7uEAb;xts>2S41RO zazw`uV11w#sgiV{JJG+A<fN-MuFO_lBpD#o{k=N9UweN~KDbqsR`XK!)=Ii}eTRPN zT7W<dMLCpmpmWjdb>!~WioCbCDo4kMvVYc-+uM2B+pY0;!0kw|tdMZXt#PfOeU6)T z)*R(M)a3Dhm<j88Y*g~nR%eYfg8DQE<D@cF#_Nwd9G8pxaMo~4{@tA&wvIi0@`VO8 zNg{l!D;3G)OY-{gjkMZru6+=8#o%7xjQ08tS-})Ij9?EykS<izCO3JIf#Beo5@|P7 zYc{8Vq&?p`U>A(LiETi8pT9iSfY`MMV`?DI6U$)MAwd}p)`13eI)|b3_f!LFh|r|i zGROcZ5w@n0xgsI_9-mufqtLavky{o{I5RO#=Nari8<G-j8Jh#<p;*miG6@k3j|tVX z+T>i;!q~46vWaBgcBYJBmxjTx;2-bHkGb*4pM*kW$*G-@J;Iu=hLizFS0E21U0X#k zH0(d!LSa!2)p_65Z9$Mn?Qb{=sPqQ7Dap(PvacPfH@b3kK6Heup=R@E7jkdA%1e^d z12qi{;UqXoklX<0I6{SMd0DIG<g(|<Sz9+=v%j6yjC3_~9@Ywy$r+NbV8r3zr`EwZ zXziK|T}|=qvae2cs)tgIogQKcKp<;Krt=&}$#x1&na0DmE^3w;rEgN|Bz?AA0FnyO zqE^VuxZTs|QwN4l0b~(qLrMCSTx{#5%4c&N7D2;pTrC{$k!4?Xnmw<OrA_MP8|c6H z(RZEA60*hCBto*EKWq0B6ZU5#U<kVee3yxNtks&iab*w!BBSR7b8wm4y{R+u<+KJX zj)guM`ZVlgh_rZ9W}!jY_vwX1CCG`Uz%;X=P>fy7um{r`mk;nd3Zf*z>-wD5`^-MN z{V~@J+0;rgEt^{zS<P!!7xdL|X5{XAp3!Y<0H*Prg2pTgsmq2s{)>8#T?kYCj#Suo zlA00tb*Hz~sjt_H8eH_*d4ci{^xW4=2>MbiJ+w7*E@t%{u2-mY?Q2H)-rE_u(hM#! z9ZHZYI&Od(k+Dt4Ndv(~o62+v4Qp2QOs}b92N_UvOWnh)9I2zZP-D22QzMgbOk}GD z>7;KdZMl+%v&=|6XXVlHfb$4Y8{Dep9Xb^fvUosr%`eZ+<oiGVlo}5`1XoixcN#LG zI7?7k!;cS0VoIpN#sos2Q^fLW)KNCM((Ik}Pw*K~_R`GmSTl4J_Ll>`ghTF!`r9}= zyIY%KcI4XYtRKu32^~jcB;Wt!OT7ag_i-`~LUP=I=M0|#XG!N8_+cxnb)qm+r^Aou zg<&6sSv*eAc;ZNQSvaVW6iPk}G}&_**;%g=eHlSPuRV}=?%tAbzkgpY`-%B<IyMoh z9SAi0fwp~r(&3OOl==FD9&OW%Aecxe=JLW=2arc5fdAP@ks#EKeF4)Q?Cd_zHk<~s z^dvQ(O}9z@&2WTHjUo5vXOA@?A8pEZWkZU^fh09!MhOPr1@z#}=^5p35j+7^%I8uV z09^6zq804r!5Qo3DXxo^&9$2R%GW<+(DnSq3))8XgF6mWhITBGKp>PL!4GSJ)?z4b z0wqhbL|P=G0yrD|80bs{dSQnXPj)u9II!mY{8&m*X)CSp=h5Q(;^hlRN`~gaz!9Kf zj{zy;|AQP_%oo_@<muW}$~7hc;B#Ovl4*}Bau688vysD)OwQHPyinuaOSn!Dltw`K z^iP|7#+fQ8NO!PbSfiod{qO(iv9w!tmsG+A>$!jU<r@uPr>?G_c5prF`|P#Pr5yn~ zopPEU2!v4gN0O6plk#ksD8;)?qsp8zPn@ER`S^r(8_VdiR%s*<dbcyVL`>9cK6}H4 zQy9&^Y3PhyjF6p4-I|DOXKda?M0L|H5DRM;Pn(2L0~x@+)2K}*9Axe#vxJncG<#ZI zUza3^YoU?%Lw$E^uy9~+I!$&0#9m^qbKTQu^5Sa5s4}H?;QODP$)i`AX>ZqL52PhB z%`IWigdg@&2Vt~tT`zAkHDN~hlTR*KlijL<t#c)<zB4MwNb@+P$s{iXNEZnhdo?nR zW>2bmY2JBzOIqsa0WtmN2OIL_#HSN8iL4r8EMn7%uVCPVarIDm88DPl<H6xT7L58* zx6@@ry0W^W#yF6zLXt+v*F*hab4`uVL^`?#y9grmLZe)8((wr$;-VsWL4u0<TcMbB z2hIw0uB{);hYt|;5_hQkoi-g=PaQm-4YhLA#>c1;`VOH;=d$#CKp;*p`kEz;)PNV& z_*fF?0B_d{2{j1nG$(0FU!r!MG!9}Gwu=Xhh=b7RV;6DZT)U2y=le}{(t+%)r1bN9 z3|PQ;zif=c%jW<fWK=LHl|ok5)v0H_oI?YkR<@Cs&-UBA7{y|aHQ<?Mc~1B6mS)O0 zNmIMfYiEhVv*E<1Dfe!By~GO)1NZFpm6RWpWJeuwM-BJkX<xICu?BLQY3ZKTiU=4- zEE`OReG=hL6GN6ldZwTmKZuk=eIAUNoJg%aP*<LjvF`b?zT0%%VGvi&j^y*RuDr8b zCG#IlYe=bjRMqn2syA_BDPiriq(L8)#YPh+K7kDUho3#7C<ow2I1sS~IXyooyuP=! z!yxIn?nFh>VGnpwv&-Sc!QN12Lxuw93&+qQ``pdEKCRcowmiMZHp$jQC%6M=nv#2a zyXtf<^mEGMG<L#zo<3`<=TmYSjt44saIP3DiO)cGI1O72hrwvpA<45gGdX_PXHIQ& zl#N1CXfokCE$|)*&kIG8#ysa32J@}AcI4j9D#@sYyk^Ws*SVUPfApL0$$$7e-;h82 z>sRvd^AQ6IlqQHaOviM>$m|jc$96|>Ivi+_1K7RYklw&Ke4u7<LTI_{_nK6lOn3$9 z`UAFmjk;ZCIA{e-d09Shz1h+C^q3(B(*gD4)qLwa1k%>K_-tSAv}VQkw^n8Uq#^t2 zq!OE&gkYjtx$N34#qnNXLo-m>43eDERn{{P>078yf@6TmZIJMNxqr&QX=Al28*6LK zU{MO4wPQj=tJ`y#Dny<(Dhb-pl4jl=GShpsy(@(b1IS{fM!v=2@xFB1U3TyQTHo2) z=8&3$!+i!~uxmEtXQ0G^VK#^74au-1l99Ca*|O%DJQWJjb%R#f(NOQHt~U~qrY3NH zD6GVH4hOKniGnEYhtus4%!sc+^(et}HJj}L{?iEJH6y33KVp}KLn46ypoD_+k<mb& zwfNAPfyY5%B#zQGd_QsmG{D6WCn7<BMa9l}LJ5j^Irj%121$w`zr>MRlg#`Pm?k2M zq8^hNN7|#DGJx*D1;*U(U?y7|NX&<Ok>2*3^YleY!7QY<XW9Kcdk^KLZDgLDjZBNA zWP4ac(||3*AHk;DISdf?k%Rn&ai!Gw?K^d~5DF$KCcM;8F|)>HO@Ne9Q`V3`jihF0 zduiF&^m);TBVS$~b>-fjO<uM{A~`360A@kP#u1Gv=b-V>0T?oY%Mk1B5v6MT-GLK% z&`XrBtVyZ1P6J0saN@FPMDq9UXjZwpN~heu8cIoDZc8u2(}tCnI;r<J)cB~O-`>(_ zG~=8b1@Y7Q`2c#hufdQc6QSseQ^+GguN(dBqDMwC5)eOZX@WfB0MNf4@Mo_t<><V_ zh#k*}LtZT9WqqSUgu)Be%UnB@D|z6+OxV`tkzt#Ft~RG9Ee6h5lCdUaY0t8DB;8Y8 z$Eq4dz`l1kl5Fqd5KLtGdSEvz898kZq%%o4C=`2OrexvbCQ(h!OVfFxRmf*=eA3M^ zHm)7Tgq;i+YSFyvlHip}x^uxvcW7tQ_bn$-TbsxbK}W*%Xd?*NtZ4RvzEwo-Xwl(0 za;)hI1b~J@1K+2}hhFfo&CCmXsXgPg+_7XBK!G6{*aNitTmc2hr)5>MS*L_pbs0UF z#hP_Z)KI|*b}b;!1a;D<U|Q>0UE5mWw8E`Iz$t$F7b9u*3{?^DmGzAF8}jna6@#01 z@06%*kk4tR0!|5fox}T(2!?b#X6We}2Xfwa&J{4{%l$VRbkwC(tgz1d>gb5<cGN&o zCkH7Ba;p&J*k0R_PaZ#&7e~j;NN~3*8o=&uZt$$2tqp5|sb2WKsv2cf?6J=X8ev?| zuR2oI-@$lP3`T)be65b?)2GMs!M#nw&_8^5EPwR<FQkwP<RAXhEjeqnNCHIm2$W)` z^f()ZiM_)9&m?`F)bo^%KM`gUxQDYLAIVT)$8z7Coa*LEPVQ`}<0<7BOo1F#E^Ckn zlupmi1`s{{oPYA2E%}o_3y4@vCLwXs0C8AV+b|}wfl>*Gt4K~@SB9AI=)2AsI?q9y zfo8q0fd%*<hAjg`kWencd7kQBK#34t93YLNjcTOMXQZ~MkYOja_^ATh=pe=0S9^GJ z5y;NQnmoAw7P~5r&rW4)eUoy~fSfU!6KG^MTMYRG1wAjwlCx4uX^=6xkaDRe$EOVq zI{TVn6r2+TaZ%s1+ZnhH2Oll0x{m5t@!jA94ar|HdXGjfLr%C3hE_L_m6dhck>@YI zWOq-wx=LlZyLa|D2<uXxGcn6QgINX|FrW)ePVR26Q+GbEcO{b;%e}Y1NzT!Q293~z z|JASW$^ZUchir89Y@k&SdIFZ5pRsEVC1mYT6YzcT*$9F$WGFWY*mc8%CUAT%sw~>E zliAff2@QA{;i3K>N~ZZtF>E3B$N`!`<3Ir>M1c~LoVp|t?a}a6u!VHe5|V#Iu`9l< zAB4IRPV|aup2qP%4A;{mkBTzX5LSYQ0m=jE^qfc1(BK=4eZ0d&gZv;sXPACoCK<-d zuAt$RKNrutkfM$ZybQB{vqY1(5fXr19y1jo(al=(sQum_FADvxao%Oy_)ki+1CT4) z8i@^iEm_yh$IDbgcA=B%oJpKgZ#&^&Mr4!eY*r14(SuYX=>~Ni^i97xxgwLj)f&xv z9<iwuh6#1L!K?ZDow7VX*GMP>hvHKY-m^}j%3{<Z>QErDOx4hXw3K%l2aE?C57^S1 zJ8PP8I06mYOVG}e4BXWBjbcjPuIguL<cxaR)x?q20O6PrLc+#FD25|oLGFSRro^C& z)+R&rZ98emwnp)f&RuI9YLV)~<>kddK7MkkS$0A8ZiA3Ami_&P6ndD+u9<<EG7u^i zlB}&G6Cy!H4Uti&Jl1Trr=Qz}pu{xPx}Q#5@L=s+-qVq7oYEO;Xi($Y-bfMQAj4K% zs~avoB3evyYIczA1bSF=Bn~2=AzK*l7iduA`D#3{w<)(zdKmBBD$AhjF|dQ<n1%$O z)oPwj9Znv?K=?*T|BlqD0pWqL%x>O^yIlE6$rRJFo%iLn21Ktl$aA6{PI(LKaeKQ& zxmT7YLdjc>bPOCCfIFQ^x>2k6yIUkUs*zMLiC_xPGV6b(m{QnN3idaNT5yD8OGD6v zFpi+sTVVEgf7K(g=x1Lv<<ZNQ+`YdgduwUQ+paWF_tp1?_BMLvch(BJE@MZ8VYDvH zo+d*zO8*~M?-gWAc3p|>%<H`?Z=W~q(P(%OAPEvAg2B;HW<r`!j3%UCed<d;6Z+M^ z6pEN&DD<NkjfOEnVrWEC17JWj+Mo^kwR!%%dgbfhx^=zFo0-~c?Q;t~>W+$jUGJLA zljm%^_FDSi_CNy+HQt{++LuorJ|ny0U}8ix7*)e8G%`7qfa~R|%_?i)(NX8`ldIln zck!KYj#GD>VI<)AA&de9It&pE4fxh~)>b$|1g>s4S^T+PF3SGt8OxzCR-ZjPBQWhB zefwqEKkv!ky!%iC&o&tu>m?1i`Xi1b)e2=g5sD?p-fy(s<A~Q}7!K=q10=^i>5!h7 zjSrn>z=AFq??rZsd+CiMdAQ%?7#0YL3LvP`KiqqKEMv_?b83`PaYAtVpZ@4O9OpXH z;5ePU%ChtKUcV(vWuu10xq7D;$T1y%%*q1BGHL7~b~ACzkf=OCQOl!@pE|sVyadR; zz^gwEo03ncV?!U`>DLeD=oROvNVXsnnyK;jbnjt0rrm{%X^YhY0LGTosV`OQ#)CdH zI#~)x&m)3H$xJX0*ix#M3Njsz<m8|w|MWlqPo&d2l1G}c7xcSOl_BtNWMD@GfMA^i zohkxj*xF12fJ>kE2q%U>HeX)R_3O&%=`qg^0{5NmZOZhX96Tejm+$(o;F&k9g)mS; zg$d7ab!9_NPCnISLK7mdL;BZwkmR%L_51Qq{_vK3=k#3u>OUMyQG*)<qqESi!JLo* znaR8d`xBbBJ$y^9P!yj|e$L+kLq*Et3B<U@tX8xy+LBiz2Km=;Zc`Gd1g648HOTxN za2hsJY1Pho(lY0O6&$N_0K>VUBxa@0Unm*J4hU??BPyRHUz!B25`f@wU|JDj$aQ23 zi!GZO_x-5f*1dyjLq<mD9X&%cSy|4=`jsj_WB;)RLEVVVh~isd0YD%ryrC#bu`|!4 z%n7WuN{0dYz5fXG7k^o|HU9tO@xMe%gEL-J+xhsUC*?}%64c=7!$z+l9g=8OdR^mS zo*=+Yt0SB{>Pw)~V?#$LoTeTgoT-&19s3!gM>rE3t!PxzjB3%p#kgG3X_yBXjhF{4 z(`EI>Hfk9;?TpCoHp9aDS<T8*EE}?ngQ!mp!*OdUtBD~U)M`1BYwKlsaHtMz=8??~ zea(oQ4SK$zJUtmmFwM%{HIs(*)uCQn$;l^2Q<iHTb1knG-TJ}A1VrF;vw9D^D`m~j z=i*4tG@D5Cb6}`Om`M$c+{FuLWKDbPjcut{%^(!Z1t}CVoLxo4k6sK6AI4IW)CZp# ztC)Uof&DEQ_K{vMBx%xORPfezK#PQBv%vb~9HT-o#)?PCj2lHx^y4xpS;r<kF$(nA zrLuY*dN_u9@YI+=t9g+D$Bug)fzd>tZ=)ucBXR(X&5}71M_^(C^XJ*6vaC0R<*uXF zSnfT#;Ak8i2%Jq`*C6W<)Hoc)q&tu(=Rawwvl(5Y#6^siYqg%EbS*?P5-B$o5!pE1 zf+#9>2Lu1#&<qC#pf{SaY;V+zc9=cK1Q(NUURe3TK7b*>rwvAd6q0iyoX5dXZmld! zbCS}4V=DEPirmqlv=C}U?&qbV&+jW`V?B%<yBYR3jYQ~F_;hW0<2gAHaPST<gxupV zj!rZytFr2F-Wlq1?y%>K{Q^)K7~+t1*2)z+4j`t19>=}I;m;hi7xw<tX)qkO&PiNC zgRbw#nSyrqTr+l5FIH<6`Q+IFx!5;#Z?`l{>gw}esaEB`|C1ld)8oGU`0Y>RsM%#3 z27$n{BU8Vt*Q@f%Yj@?W-H}mmApOpO6#?u~tZOlsy_|7B)QpA9ahKG-9vy($7^C22 zlAwV=qiP~5FHX)#D0Am}oqF$>IC-SOMn~7`&gQCo_^U^fyK4RNt-3EKr{|n(099#U z9o>m$lGk+Oh1mp0CxNShV}OYsA!GL}!wsfG1|>P*X<EV(IQDrmon+<+Y3WeUBJ2+8 zbj5OsjCCHl=p*v2lR-}%S1N=NcA5gZ?o^&6W?_CwGW7J>6Z!q`|1QUESC;COK82GC zXS(*9f#&iR*#h<mBwxCIeRT}eX^;Eq+Krdw`0T=3U$Lzht^w5)fRwX2Ps;fm`Nq*# zPOC%d9vMY<rCgKsjcqwSc&N|nT(;J(YGRd^T4RZmM0-!}vwV#AAs7!p_Z-gYG!U@o zb7?YidUFkKf))At8!yYTu4~q>Qae73QqpW*$cgT`fAiy%?uC&I`yKH&HrNkOc%Gwj z_KCG2SsCsj<+GxN%38v)s-aqBL_{Wf4_j(-z*yU<G+U>#(pctmG4UoV)d%z7H+m7` zU-H0Ps{l|yufNbpU`T`%8(#@$-9x9V5WA{`CTG~U3;c%xg)Q(*I8BMg7+vVvp~MM+ z?*d6jVAqj!a^D~;QmZA+_Ds$?69$}sa1^UqdGN$UahlD6O>K}5#uCN_e+8+LIre89 zBnk31sNK|H*BJYZn*yzZl$(6<zGN@Iobku5Ws$5UM^et1^PRY!21*=ohA8=gIStzz z<s0F6l9h_-!ebM+pkmhCN&+BmG37L0N_ya;Nmp{If@CmHsqe+i`be{twR+0RUSWL6 zZ#&W~b1>B#%NFHlPaxfzm$~k`MjlypB(1(4J_HnqzBSTAkE;p^M38%E#`WgSj7FuN zJlYQ_pPGm;x0_+63O1$lj%F$6zPz!aQF3ac2Hq#B!%sdwQ)iWxs~a`b_Ki)<1RHdu zrvHgr=H~fGwsZ-;b+aK4Pt}2FgpK<KCIKM0v+hue*_4&f=$z(^!0Kgl`j*v1vawp^ z+F>1ona9$1X9z~PDWk=+Zom=2^>T^^41b=351fTnn**j3ncMtzFbgjGS3W2<)d3H& zQP74a@XefIypUH#)QXw@q!2VT$NT4o&`uH1A_k<2JOYL=hLZ@*P={bH11~?b!ZFpt zENljOkjK&)_{vj>Gy}e1UH~FNGoKL&cf^sBU}IhYoqj%KO9qAp`v@Bn2XXGyz%D6Q z38XVhNk+M1K+Q#eDRLuP<C)JO2ianB(I#?zsmM{lqGdGacq1~cKw4_Jqy(@_g4Z(C zZ2h1$QG=M2m#<Z%7<D*i)mNi~S!w{l{5W*Tl*DCM3+Dvii0h~o@^YdX$4@@|j07go z0|4Ptk*s<nE0;qsNS|3%oiPk#$T6)@`kG~-)Vi^{DxW`k#C<qaql}*T*4ml_NLiWQ zDj3$=%TPnymq#!5h@XJoLC%#5w={eI&R1UJ^aaL4fA@{MGSut&pZ@gUs-qvf(V&>w zVLsE4Z@>PU+<&r1L(-_0Nc)-QWK5d<&R`y1_R~=<>5a!`9O1ar38&~5@LH3L%mz~l z36o*=#GV)EltbMcV}LBP1$l9NAsIE2C@;eSesX_L)|N_i!WefvQl}imQ%=W#<{2U) zn;K+4c-ADiGUb#28H79bK=xJhNm5+H>7?=rPLBAgoWvyXvC@6g0jegmK6w>Do|Q(_ zjtYz)adZ&QFXDa+sh~%l0g%IhS{LJ`A_O^BD>Y{B39rJ|6sj>YA4#`!qGu>8U%R`; zO4)NwFnYS@cGkA!;^dil(Y9Q_ah;UVHc{gdV}ZSfN(e^I@`*VEV(h__-iR%-Ygca& zM0%>3H~_Kh%WG0wS(0q2CKv4^IX>7UkeTwREYq{er~yow8FNt+jas!XXvJpPr&e1W zX5`k@s*Fa!DVY77&+`Hw2HS<txqEFz$_3b7-}RQ0mq9cW4+Qq)Dv6xnkE4CX`Nnyl zW3+F^>^Rn7Vm=$vW(-;_$>{S+vuzV_#vegIRvqa@tIfbH;TTKvde(3)b4o5JNy5ao z#KgE1a1Is@9d^do>j{0kh9t2c77!S#om>hkF~di|=i5|EwCHg!%H2`yDiRT^k>@=- z7rjv=XJ<ocwI;ve!C>%b06YA5?sO&K`(W#)u3ElGLQMV5+5py)O)waMvnK!+Y=r;@ zg7aZ95}HjLqbi*G?pB&*q{IH4WiOP|K}z6r-aBF`9dwC^8nB@ez(&z;^wV*C7W1RV z{$-*Z>_q^K5^6-J8!A~?((E-P6(weo<5I*~QO}8Tz)%l|;Lxp0wvZ#h42#;xd$N<$ z&8+XMKtU`_aNfMBubt`VCPIspF%mT&1af{7Npqk-%~Sc4uU6$q&+YT>oGe;9SGHuU zk(AYZz|lJRyHEE!@|W)%a?`HWva-EWa3fUKi-sKS&RR)6d2l8bkX9tX1wSIn9@vEG zsLxUu{^h}=%A3AFW2M;jYKEm`v?Xjq7&s)Qk#Scyz<I~Uj8fT|T;I-V;NwZNJJG|g zYY|RZIicu=L~K!@uj6yh-AYd+Y(dG1(*bpPc&zRpih8=?R<oY0mXdPVbtEsC$Gubx zvKC6aKas)ABg+*k3q^g_AAWu)cds{C@`vGM!r(S0G-nB}iEKgufx#fKwSw^)LDfd) zJiy2(qf(0FO6;4df$E{!lZ=Q**xag0L!IkV$*K$p+M2DQI+QlYa=!WMnv^mnRvox< z4q2acyzk7`F$WE&8ru4x+!w}j307K=t$3I0eun*+OfVi4(^!Lx0Mxk9yheMYo{wc8 z0GyyF6aDYmK%IyNR`p8Wf+|N5%*u!poS{*OfKKn}b9ZH7HRuR(>c~3udyn<cW9N{8 zRxhhV2WuSA(s6VwOZA4Uq$Su(jAHv9^wDb?R3B<~i$Hj}UZ)s{X#&jX%-BE1h!EOO zn(ZXj2yU(}$#-AB&1*yN9;JAcCQsTu*;%d0pM2*l@}4@*zyJ6FWjw#9ul>>QenZbs zAWLdk$+|Y1JH|-^1HytPd?$7Ur>?)-Y}9C|IA^Wb4!i_x1b|f#_`v!DxR)n09I!Pb z11M3lHRL!J9B}KrC+jN}dHS>?japGw>Scm04^P`9T>0YRbIm;0DK>)Vcz_^4Kc`mC zF%ZSLDW7>V;+`<DX=pqLAUXljQa|LM18>Im1ZsGR*bw8`liqMjk}URPfuhbO$Wn;? z#Rd`yd*Vx=;1qT7$l8wxWR@EZUK9GlB<0aFxV>DEr^A$0i4p^Oe%zH}u^_clM&{#$ zy!7%bQmy4V*|5H~E6vj*J$Kd)Mdb?XT|!`@HUzY@SmT){BmgMaYrFc~QKh($H^2G{ z38f;n!I?r`&YCAO9`zZZV<~2ivkYy3Od1l>Q+-`o%JpSgUMiE87mlK&_M<xhwnNt< zr^%4oqfZ{aU}Xh@IFFAy@?Zb(s(!|%{MrBeSe@_OnDjh5mmIlu8UZ9Gb9^Inr)~&8 z61cHBUxPH9#p$H4=TVavJsVT?3!P4ffh?$);eb1!&W$n*yc4u1Arr?`8dabaTU!aY zH%Ei6oSr;qpFZgTaGqZGQoShk^_LtPKV}=){+VC;w8(J>WL*i|*i|EkBZ}AxX8SMY zF+qV|09sT1k&U}z9iAT#8OSe`9_<{5u8eLVLR_cuctvcHE>zeS;P#MJa2s)i4?u;; z6Yr9G+WtH@*<;Vfx|6Q5lZ=X<+<Lhzxu-({BYLxlOh5=?A$l-_;+JRhpNq`o%OWHZ znX&YMjQjHK>v?&0k<b7E2-rF2OsiFtFEL-M#=D>gTOH%W>5%18^ryik?xSz5#=Dx& z&`=;!MX6>-GvnJeHLA_7{Mm;m?AM~(1=5(;cPi|=B;vUdn&{e2Tb`VDG-F>%$-5n+ zIDK=&m%n@ai8`K`!YkL8*5sq(DSK7wPvocXAG1OM5r)70<#YMRzjK2?D+6PNjF#5x zd3p2hid=w?+Jk^ihAo6fB}+L&l=LV1psuf%Od=KKEWP=^e*cAZ+G+XzSM$u~4QU!$ zc08L<WB%lPAZ@+Yo11C5b-gIqBa>;;M&0zaRXxl>%IM)IUXBk}#6_KOY8hXHfT<LU zzHDuX+&_qj+@0#dUR7(=(}PnjWr<$rM*7k$1+Eos0F>m>*9WILI0~Ry&zVpVxlDcb zxez6qY@r&eQjWd%jfxtvYEC|SG9q%7eK5Tz1a5dHD9O!r@AO~<Ie>5EHWy=z|LD4| zm+1&^t*L2MLo-#Q^3Df`nxSd7d^D8swi+D|j@Cd>38!71^3$v)1=R93fFlfafoyM% zl6O9HIFZN!Wy}dd$6z!9o?yo6OII`1^?HKU2aGQPmw9m7lk@Yj%vN>pLK)9b5iuXT z2zxp=2Tm$#j#N6PdJyLH`|_8+{MZ1aAXmxdc#u)vg`tD<saMJz@q<GLiXHv5R_B7f zbd+tY7(FUrL^3N&m8$WIyV10oW`TG%m`z5>8slZ)Mn_f-&>y0D%3pE@JS};B{ZhFg zaCeQO8f|sv=NcUR`A>f(r`>@R)KLGUZ@emZu58FRf9tFAVmOiWdk;y+3n8Bjh3IDz zfu5PFDJkA>4wVpxs;!qxhOb!k(^=_RWdaaT^g`_lgF$l|)2XSf1svsrs-eCg0kW=9 z`@GBYCMbc+1*n%9dK!|P=((aT14hb_^tu^pgs(4`sg{M{20hC}<T<2$l9h}U$zi}1 zoFPFANK-KTp3@8*Y}3I|D190yVk)~$9O^p7Ks-l~CupWqNdzSkDM1UG<p%Sq(F#jW zgBxo_lr{K*fD6TgP`T0oDwi|`#b^S|$3&i=b|nw+q`rTBb%WKu!{$)Gb1aqmi~%VG zdcxQ;$cRC_Rs5EhHuUetobD+#uJifV>otAOw<T9X3fhzXb9GX~Q=Xf2zNEp)NJgD5 zgKPv)WZz@81kWQwp(d>Rm5qj6-N?&DXDp{pJ@d&D*Sn~}N3Z`__veVCbJ&mn>Tf<J zUge-YA@LN|^Bh*2K{uRXXjM<7ey~>@ZRC9=SsgK%VhCxeKNzE;fj~8oVzweB4F-Ga zocn`wwh^lNP%1f1Na7TmIzY=KV_)FRu*V?9JJBEpxF#s_!KZ?ZtXi$GDu9gsqJ5^{ zks>Q8szPaf-W&l$<tbVq+2@@6z}P4$jH8hpA6+mAVREa_rChFP5;|g{f^|%!GPKL& zeVJP#6gh1T&s7sS0py%IE2go%CU$>+Sy%M^FOSZfcv;fYurU0R1a@d+C<`fQC>9b7 zhzu7q)$6-i$ronw;v|%wZoZT5OgE#IR=d-_lk^NPOQ4tIeWYRx<+Rn4Kf05ZsOrfV z2VGKe)>2jmt>|+|=W#LWJau88CylQcU>%Hw^=Dc3^wJLKP|JDp@{-7MS+|g8tZg;G zfA!(1KKMD+!+!MLl5D91h4Tcs%m>#qoGBIuWeQ!Cw_Y#HTr=jAi;+CpJ7w01hy7E% z22e1f-;T|7)*7*Q1$*^)|3d!u-52tsZ(ZTWBmvyqdM>YATaq))Izd4XmZv>^-*zUJ zTX*VeY$N&k7j4bzbMo?Tp0oWZ?|%C5R5x2nzH)n&JuCFjsosUTav+N{pz|!r+4+eK zMm{tCwQ5RoJa8VVcLBho*r`6Vje5>hiXwx^k*vl~%4Y`?d8@9`d`7dnf@X;$k*iC- zytEq0{XLEB(}?QyAWee*h{G7!_NqGN?!;&B3#FV$jpC~}>lV32R^bSp$PCAo^fg5_ zwB4c6j^?ZA=O(2yoa^CF${+pqu5q^`imet6JSh_=pPF#sHsfDL3H9Vmv&LFYP-P5| zp-uzWkN23ZLp%e<4hKn+S=aA(0!*=g*~2vhXh6w^-V?YAP`aCifg9NgIgbp^gtq>i zsWEElGX$<f{Gz_!4jP0qFcRmxQI-R}zT@_cxB|5?jGWCu$4=wk*ZT-elm+wW7Z+qI zgMbI3dt|M{S<mKmA@iEaF{?d3Z&`)PHy{xV1Nzhi#Hqn+wweaqbOyNH?^*@~2E6fz z;u;M#EC?{s<^d%rRJ5wa3dgFt!+|>63fa|wk3hE5>kX(&{o2(H`Rc75g5y9Q(kSOC zoB6-|%l}K7>O3*VI#DBA{Pjc4;;K?qgA7UJx*EsWasC@ezDI?#hx=#b@kbzsS!85% zsCEH7HFwH=Z{FONE7z~fKfLokNtxi>QO+(GGP*t~HR8Um^F$tLFb7Z?NL1$Y4uNtY zYMN*2^3tnSIwfR7=fglIhZ=x&PNdx%OQEqtqm6)TSF>F_`;_k8@hHnmQBrNh&b5_G zDPh=)w3r@3c$rCAH3H?{#i$aH>PVuB)4&p&$oRf(eAFZVITYKfy4IVUyK;2al>3h# z%I@wheijI5P9a;}?vP$Mo%T7aJ%n~c5{X7iPLEGHmfP)i<@t*Pxp940pT`Lk2P&H- zOsobR9W$1&HJh$3$<EbHwQoaxt|Mvf@5`@0*q5tUw%J-JXeQnsnyfOW3+mOHjQc|) zv+_-eFqtjuYxA<TQq}7jaWpjw+eTD{7Qiqj_kB_KG8p@s8U((yyCQ4LD-3cT9<(UW z3QPvtgb2pi21FGvvi>*Pv19Nwcus*5Z7d{BfdRkJ3OMhabL2D{qr}#foh$nMLQGr@ zIHovKN8LU<)}(V+cD9zJr&)ZuQR2uar)|_h-+y`{`-cat%+SeFFv)~sz$iE#cc>!* z+jRBn73obg(pX+6Sys1ms=uEy(>1&AQ6y_PvGoUk6oLZMaub__q<3ic7nQMr?!R*4 za_&A}pzR$f8<krd`J78i?01tOywuQ0IK7K6^Tsdw?W~4J){D13KX3;LOI$+RL)g2N z1&&P^Df#5N@dl^dMlWPSIcn=hnFt9w7Fjude(#kvjt9XxWfM@AG8QtF2{12=nOT(o zFecIgm`0;Z^nq}ljk-^O2aMm8be6g}`4pL+PBe0Dp7&XMz##@Y`<35YlcZ*klTpaN zlZSG%rVWi+PCk3umi3jQTv;nIQc1$;Od>Z|7+UrO;}1Z+F5|1WmgT)qnjG(Vw%^rF zF=EdvoI6nrESfIHS6^Dw4V)rV({d$uslr5p2mIt3(wz7lf4jE5q_5LRO*i8}KNlqz zl;VH{M^5;`18~aExM@Fpa4cVcb(8Cq@C|Q}$mV$sRsH{~>jiEOM7K1Up7o~MdQWfP zJCP=k)+-hH{u^0lf05fXL;c><QAE@?71jWt(Q8}JCgjeVuvKtlt1O@G^*G`OQ5-m@ z+dCE4L(gz#SDYq092wTAKe8yEA{*?>hBjaC5T$+ut$0&Y8@Hwm&N7-MW0GMvn>6YM z&zSAtkVuGub;O2FTIoKM_2kY@S#tWmF|saDnI`6BRm1!?#+1h6IX69=5;zeU%ve-O z10K0Cz}T@y0l`c188!IOafVdxJY^XIGPQg<B!%bpnlHb82sXD^uB@c>CvOBW`ohPD z0}Yf?%!E*K#dH1ei*xzrD>Z5cAgcFMp{sO=;U{#9KU9PA>GP*_vT#^Q(y)qSt+Un# zGHZa}kZ}`O=McQux8+KKf4|(Q$=<O#s(#N<y^gXoa*Bk;$33RO=nng)fR@g%0)y`= z73!pKMW1(VsY09wzBBC`iOY+_GYS|z-g{2eJsk5#PhN1}F(^hkJe?!0?Js}*l%-?@ zy<ogU#=o`Nkj+|2YU(I3FWu~DMqe?28rn}6XulA|D9n=Q<SziN?nI7{_vFRVfo5BC z4azs=jhAjw&9J4$2HFKP{W(`>hpF(xvkR8o;lw@CRhtxX4?-?*IB>c>BVZw_8Kqp7 zAgAJG^lYU<GQ5E=L7Zkc09~jkp`wzUMb=)B*tN7go)=6NfW!)nh6pAL$jS;OW`)C{ z@kam@2<L=pn*`77OuULG1$|xn0)RLZKtUkY?RA)Vbo&G8=vG)ln{hN@zd7$^4cvH+ z8TB&v`f0NzcW&R1TQ_z!yWTf$3%%FdySr*zw{3KDG?y2reLc@jS<C5@A0aVPr=$Vn zStpRIn*|#C-L;xL2h$yT@A^z$dg+=z*P@NgIq?-_pJ<1q69K`7$ERZr%+x20G`Q;} zq}7~gka2?*Ih^sGwW?%uCAMAHmxaA<%*rEc2NT>}GOV<Yhbe+~Fp}FS<@GhIMt0?A zSf%5L8>%T8BM)0%sYx-jB9)R}JD*=d2K}T|ignrx>|s=B!JG*^Lr&K^AeP1_=LUi& zaPxD5$BP(LlJZ`Ii|L?cbL;Alu+KrHme*i%POXGMzo)IXdrF_=IaWWkLLiSj(fzyH zSe9C~DogpIUPDE{Ti5yINV=N!gWq5}YRg6Ygr9|LZLD19S}dxf0jsNqIVvRs1`6=6 zMiU&m>_56>XGGwhPP(zcOQ#;0Kbo76*J4@-&OUVDW&-iBw}1R@m+3zi2hO&U9?FeI zR_-^2rAU(%MCmT0&Y(m>8D#P7KgA|Y5mS@fljE^R?qQT~YfH=GsdJft4p9&1aVw<A z!ogvitZL{7HT#h+RzaP3Qh$%domfd#ox}ZWS($e=3cQ%eL3<#19O_&~qqZqarhoPG zXY$)$-<GZAlHSymy&C{?P|74?8dRwy3-IMDuWS(@@$6`1D97Yt-Z`Q}!@Yx);QDq| zzIkVv!3TPMkb%W(336jUHfA6LVjT3z=TS<Hk7rDD$R5<d&4xV^-Tdm)L-rvN8NdJ8 zk*qJ3Wv!m0v4fE`P?+__ch<@p{7huto2l`Oq%($=yixFit?#@&X2A2JRo1o2aPwg8 zFZ9>LIVatvuS+oQ+ql%t6;wuq#5pK0Vy61>!BDaqA*0OqYBoXidbH5rMPv&7?Fn>` zV}efb|3Vz0l>vJirI#=V9h;-UdV1<0TO-_ePc-(DRA2#B=*mu*%ZD>Z)@S4;Hj)L- zYGle79jj{q*YA$VR)@^@+EOH&rL4)Y&iit5Fuo*(7|$+bFmolUgdsyOnVZ~UBukq9 zIlErxd^rw7Oa&_=C|PnPVo10KuSN`9@l#uiHQMjU=}AY|DaF9VNK@wIA%`)I*uzHV z88f)mkd^YU2t)>x0k0Xds6c05py$mV+noCn2zOA3qI8}l1+dRUj_OEGoiZH#?#71f zot&vb8SA<SuDli*z$P~E7ic}fSx`i)U~WiWkZvq`b=^T<R_YCAyM8jq(J{)nsv~}B zYnh}ud42D*eKQsSHA1KZ6*Z$I)vQ@R@4VNS8=K4Oq$g_J#zfVlg#JjgGdznc>q~0T z$7=Woyob<f1VGw%<mfyXnFyYJyVsTQQAiGb%9-l^dgs#zRAby)TUAH2DtnqK0{zam zi5h6|>?g!<63`xxNO)xdgK4tI29m;fRDjB2f@?%}N(~e}T~`F9Fyx-^l;}*Z+ek*? zSk-}q8Dpjdt_DOkXtkoXkWCtp3dnadb)nh<!6e_Ph`SdTY?0ylq3n)~7ETyIN6R3Q z*(FVpPBY$uKQM(vbs(XBPN#V)ozA8vJXL*eV`hZs=jZbN`|r!||L_MUz%(~CLugEd zbKA=kwK2I^*S^`8&5czJ+_M^d`D)(+X`SwCf`bZ&M=TV?mY$ro<ofQ0JbLz+>#|&5 z(tsw%7EiUDWmOQf_0@7j0T@)9P&IAqncq-faDMhegWZ;_sI3N=`MA^LUYmwVW}%RX zUR|nkk2JxBpbmJsR&|cl*S$R=ffBGl2%4^}lw}0@UEf+tP~*cKyzeBa!Rm;1(&}<m zqI!Yn<mR<&a&d9aU}I}*ORwpe0L+H&^;UaMggu0ita5CiH2`MIr5Z(Srke4?`J*+3 zV0TVryD8*llXZD|*fhc*{dXM97_{Nq0p<kf!$r44+gB_Wi4lNYc@)}gzsDK>Ia>k| zQTW)aCgpoMV-9i0@kp=NV}dap#Ex7tBv=ryT}W|TplSX11tuurTlL65(Y~W)b_#Z` z_=*4l<GIQ9aAZh3ebK@3xxBUE%Xh!Arp{t4d!3L54-V_)ZC!YMfazjFA1WT~#E4TC z=wcuor*j&dYg<d|(2Lx_CiFWsJ?=~-7p;gis_3af-n5Nz8jX-wG+|tYKt_}x2;srg zQ;q6V9Baa;lqnd^nc=_*9iR2(uYdkjzVXJUX6zLcs7P3Lnqm1OW`8(INAJn+eSJp_ zQcr%NnJ*S)Ix$XgIO|e5&$96U^NT0!;ay!TTd5PsbBwFF%%5bfzRAW$4lp>@FP(v% z4k+4*ZqmU(?!OpGuMg=+lM)@N<NN5rsr=!$u9zqbvhjIz$(9DHMQrLvhiX9eGy3|S zwTwpXr(Mmgy8IsWy`CR*<>r+dOH~s+P~#|LlL!#c&~<vChk98LSgjP3?v+&taFv(S za&05l&mU`)nUVAUT!WJ2CD;se+tZn@=|!kUeD2CnAOS*l9g!d=9IGKouaNFH2o1Pl z41k)23?~NkNZQQu0$?(uN-5^H$K3cF0VBd#ul2Fs%T__IG)kN>2myfcG-OIcR3&nA zqUzkHF|#zV&7tR?PYAIPEsfYCUT0#Vdg)a0d>Mer5Iwvof2o0N%!Tn~pB=z3jFPC` z6ii>i!Br}GSz4`0SB)0d_`wr>jv8ns7JU1$m3M~>el#d6MDod#=W?dm84f<FTGdIx zFfMqZ3mpAQ>OLNEtuk(W1x^pFaX`FdUj4P3H>IV90_b=+*J*!xsnX{ybd~iw)~Y4m z52h_pQKBdhnB{<s&gB^OV_yBX8bN$E07sZRM+v*3nRbT4Cw;1kVL8y7$BnHoH~9H5 zlry#}=5pTcslhJL(INXUBup|DXXnXLlfb;rpr_eYk>@X>o_%1YM7P$FlcNN<3t>rj zh)giN>=hzw1iw0%)Vxbl4Pl@GB{%fvF~xzBF4`wk$3Pf4YH9TBk!>Oi4`R$~n4%xX zvk+9{^=JcFr0!jEYA@tcInw5M$`Pah{27K;I;HYgjL(?x?1zC71R>K0=LN<=(SL=? zT3sF4&`klr?qM1MQw=kR#D@XS<?-yZv>)@?KtFq=Hn7Q(e7UkB`P7sxq~`GxdH&?4 zI@*Rj_~d<kh8GMJCT^BG)cZsg>+Y><8YGoz1FmhT^U`d3Fj~^2XTVGsz(Z75b~iWF zsm(QM*&q-X3UyH7+&}Ed!zV*IJATA5T1+=#+!NP~JzUo38mNuAris&jt4~bTx;n%O zFhr1*#ca7cwefIHvKsX2S9E{cGfYTRgY^oK^_a)k_1`-=mo#+Siy@P(s~dGbi&h^Z zK7H9(T9TnYFSL6nXXnhE>$SQx^*;1!^}a4-XLCy)?VZZr{=O!JHF@-+r8c8X3UHi% zRD@8;Le(ycCK`C1%l`hJEU#VF&#F<c;k0{XlNy-7&@+RKeGUoogjFMne-PtV!4wmH z4@Z?##5Dj<6U@d^DmBP&fvmbz4vZh5IiPS2DW}8ma`cteB!Fz^2mlgP223YhPaGf* z$YaKr46{~oc4}<!U!XzvTsCehomQR)@@XMxhSp;qHhaCCppncYQkrWfryBw+Om|jO za?qJcyEB%0DI?db8a)jA{DRF~q*39JH%_fwQb8JxBoLE0RQWl;V#Y>SP-hPIr&yib zcfPV^1O9qoPMV?o^xdZ{)Be$SugcZcvSnO61P-6A?_XV=%2I12&(*=5o{v~|`R<#W z1c0F|bZrG<EJ+F@;Qdxs^JMR|qnkR-nR`;5f&)A9P0hx)3^kRttPD(4Sg;T8pU}x> z68<F^A>mM*BnNPeM20-~IkSurgEwDVmQU4jKRKH)n_sDC^^niWkBocSKk8~EJJrKi zW)wM?PuQmc0SYDt@DC~)7i!>8?w$=}(w~B`2Ypo-HuRWNFkBje_or!Y7VL+Lu0u!H zcS)nl?PX{fJ4p6ImJmI`N=B~gwLUqSP;i3cJYOO(IJua}esdyT3T4%VW7Lb(m?Wi| zRD-ZylsFN}3-C^-48&&!OxInrou)b&4=f^L{U2HA$%8p6k>gIqh+)0JrPOQC`%z~D zY2CXw>+;U859Hp1b0-BFy3)Ftc_4qc*78I-Bgliu5c=xK04thl_>p-67<oAK*10;k z)KDrpyLUV%jGWCV?`qE#3RJU+XS1m>MiAAghb4jl+wCq1h^iIzs%=c|tPK&FAstIH z18^wNx)Wxq$U@M^2DkjNzL#Y<0181{sn<1zY6yF4DN_5Qga#$Gi~c~4TP?YB^$Hyi zl+_Xm-}S7Ge}M9+k(J*;_;Ph?TUIq=iqxol`1pl%XAv{WX8S@K`k6~=xK5fa$4EA0 z)(>zd4Be3f<sCJfES2N=fy8CIUXsuETk`4N5d#ho$5c?t(RF%pdTx$1jvN7y_4#Iw z+y&sZ93+zqInsS5d>aj05Y_mO#KlUjDQ1P3yG161fC9>SYmFt+J73*IC80^AHtrwN zr>G24+Bj{Bf@8KXMjBw|#Dg*+K|{U~3hDVF3Yer;IgWew`+eJc38S(eal&U#I#~p6 zxHkkvX|ji<FEetE;dw^u%*+}NJu>;&!0BEuCNC1BvGmlL<kg9@6z^Nhf-}kN!NzPu zLKsTZXp@Xa?^Eq#r`?j!&&z8YS2<0yx?Gdw#ySCAmGV_tS>KiqKKYoK5>hF<5hhf& zLU74HdBVUP)y9Z)(BjxQ$#x?5TPJKS;5>fzV93@51zR-8ENajYc^PJ=KwxJzy9aUB zFz`g<R@o_LWOJ!Zu=F?XZpqK@9m%gAv`8j~8TX#vFQ-A0A%W4EWKQnyH<<|HI?%7i zemd=%a2DVzAjbOQ*#Y<S6?M=6F?KZzo{##v-WAQdn{ukoA8eWB>WZ{Au!O+Q!SOQ< zE@PI%5wzrsRY_!EpLH!Y7(4ErFrg!-JV&fG;FzF_R3c$dy^>?a71x9?i$qrXU#KM# zJgL`9Vjk@A`INv!V58#LkoqXyx7r;hbI_gl)uyG=rsfH-T%gI_B<QpKd38nY<nftI zMrxyz6$Z)pUQleKWs}3Gu|7LrCd5?*`ut0IlakIP4H$}+CaMppC_FzK8v|Z!%5fwq z^BiE#0f6y$0QWT-y6@iFR70Z&6+o`}#)|B<@@muuQp>BeTuREjt+xF7uqnU)dQlo0 zmCSu~sS~oQ#uVj<B$K0<gaZIorHe7YG?jwm>dO#|9^1GRj0nnMICwD5Kp*bzEX%>! zNIrVj*9TP~;+E~kg!LS-iY47#U#S=6^_#2eD5r9u(a^1}n*7eI>*|1J6x0Cm3j!1B z`C<-RpVE?Ur0rtNawiXw-h3Usp;|_c&H%s&B$GG#*Nk2}s7Yb8j+#CB?oEwI^+8=s ztcrms5M{79HV_y}b&C;-NQ0qmb>iqp-&lhlw$V5~*q?LWm2C>W-*@jF%Jr2DTM6T6 z#s@ohJriUH$K9z$t>_2)9N%h>Q0~c+Z3}bL7^BNYQ+W)L3m|oqcF-|av8vJV)p}@3 zJ#$y@S&V5oRzi#iZ8tpW=yfht;Eb)1lF}DE{^(Tpy9rs_tQys++g!`JP)^mbU#-`r z<Oh;XSnnJeRtntENuz~5A53^iu*n0KiVf_ccSc+RY9f>2K=(^pmMd8)=4Z^%Ko7cc zr6k$M8EN-JE0d!#5ya#+z}i=9Ia$~B#i$s{m@n_H+h}F%RIHM2tOIk}2N&wpPsN$F zOJNCA2QWR6N}5xul#86{wJ8pta;gvSUr<2`B~()^gYi`7gXlVd!SFBVR1aE51igVq z8CfNaTNm5~QRrr{a~wBAkU~9zq-mO?te97)cG7P1^*48Rq*1NNXOExp`e#(M(mkM` z3xhUyXjeQGWS;=GJ=I_pt&6YSzA6tiV}7JR*atwNzc@Ok{Aa)4<GRBM0@r~33g?gh zJ4%L>PF4d0gM07kkzQ-yfPV=F?jU{Y3`b&9Tq*W3r$Oi{B2HQos%!fE`<g)olO9_# zsO^kg>5~0DWIiqfL1}+FxA7rLY-SOVO<5A1Nmc`~lx(jB^5G{BNb8F#QMHt3`v+xj z%p9YnjKD0H&ybu6<=eDt^S~Hgj`@hGx?w&W1U4jAk*Rn&YuB{YnGUBzW_0;%Npi&^ z`O#6mGjb%m&Q7;Quo(i}bUrKP1gMP%GNn@x2JjhB+!l%i2;w@?U(V(1`P=xBQE3m* z?HdjWTqD25Km)NxL+@{9d=u&%atY8}=ZSm3n%}(riX81fl+&{_U9%$FKx`*z5QXuz z^NSYs?Xky9AuZr{QJOh0RyxlSRWZ1o8xI830oRiyj^GuuS9QNFSj~hulZ4v#pK74} zx4*ondvsOGPN#y1ZV<af9>=y26mK^)>02urU`@0CR(Hm+IkfS*dcQC4)MWtaUbbmO z6Rn&E!0L$4P8nRn4!(MAQ}@$QhT!7Y^%%}HIh*!43R$TXb&b;+)R*+Tb7~7~y1seR zxMDmM`tYEW2EslJqe~8UI^aS@GNrl((BS{?bE*ggP86_GyBcYbh2(4I_&$1*5$~x0 z4u$!gBvA0AXc>{S0q0tit5}^pv;(lWunQ*Ya|-1pSzX_h?xZglqgYn+W3{z8R&dv< znh10Tk}iRVA(Uzw(>e*+(zV;`iTv>&Y)b+nR0x;?3x<;^Bl79~yFJ<0WRdM$m&$|l z#MJF#!@`gVOS6CU)luTW!3dafL8PD}=msJ~Dd`6L!Ao`dvtR77JhD@Zc#u#j*h&R- zAdznVvtg)4Y9e2|T9?hL8o2R<3-qo=7+o)CWDS#<6N@p)K=dXt{|H8`m#$=33hfT& z>YQLG5~LbMfSLAfJSCelOOmVSrJ#oS?fYlCkxG03`b=m9P>NtyVXT%?)q{002UTg7 zhwIyK6y#gFC=g2c_{q6^rau@@0Z%#lEji7qaR4y4yt<O(K{+{_xN#+0aIoq@Y8Ds* z^)<pO9(K=2Bk^IN&LKtlTJ}02CV&Ix2=@Va!^6sPD!`}@p9Am`y74I8Xcc`}KJ>@+ z@4x>_jlEGA8kX3B*aw+NW~9N=L{7R;qe^S!my^v#L6SNDON0kh^>8H}a|$R@)Ry%i zUQ9`IY4h7LORb<+&6n#0Wi7JTn;L+;zB-jpCJFibk5A-#FRv0wdL<K4Ij)elED{ve zFiM-t6<MifUCGs>VPHQ9;6BW;#(DPKu{k%F%X$!Ex#*3gt-Jc#YDM07Wybc!QhkYJ zA>d<2qzsgFDWBq4;Bg1cY85)Qh1<TQP=>y9TvMZ%A<+uwvPteRBG9E+wm$jUc}JQ( z$Vg_TR!EuBnI1}jdVrfi284)u@1W1Ju8?&LQx+pR*UWry);H96HOKwd(dPn3Oj*{9 zam)AJtagSp!yW@W^t$2X9_{Z_3bRou%k8VX^614rzt`F_=Fst_$Y@c*U8tI&0!0!R zkZWjw^vSb5N`@kPL^}(I8l`ej$D((SDG+c|<9q}7gH}|%nxX-lM>c=k)l7CUnK-0v z!bSh$^cZ5!nIkCniwQ&f0vM(T3{JAA4ljohsZxcNI0V$lhUmoSCSn8!QZ43K&Eb4? z&(!r&shm_Wt6kodt&I)d<NjHX(;|QPy*K3P!KpmkKjs(})XL^F!@m$H%1qk=a84Ac zg9oV%c*oIZKsKroD0{|K6`KTfcJtVj>ad25+L8u#x{tDXf}L<*X||87%`y+HtPX`n z()Bv(QG8!v*ptr1g$5)MQ%?{w!H!{a0i$x^f>$AqNa%yC6;6KDk4e{B)F1*}@&U<Z zKvr@h<&(OsZ|taJ&(WF8b<aL~aj5pGD6hQoRT;haO9m<_v_R9I^arStsjbz-rI5$o zFztsBGu*6%MJ%aX^-@@2BG5FMpyVmWeKGH!(fbePx{o!<I6HdE$&1;zBLDn{ugT78 zS^mZU@wS|tYtR-}j33a8olXS+gaxkE+N#>0%?jnRx3*T~olg#E>kE3mIvNzCT7fB( zt|n2|K1Ed^rcb~bMKIMH3;%nQL^?)fQ>zwD;n4M(iK9rt#(8W%o~xs7YH&^ID}Dat zo(QK-tR*G+e2F|G*_5HeM-iCqgy?_T1zoEFbpb+FnQ#V;W>(Ke)@K%tKr}-<Pb5Zw z=kdEt3fZ$NNNAcRtWs$xdZbC`-qE>y^P3xzFO*~g=1p&`PrNAQQci<cUwR*($>C9( zBg>B-pUUCElH7W!!L#Kh&0bTmNcYz(x61l?1GZ98F~S~zJoY@M^Rd8Rzk6pntJ_hX z|CAyik#SbXQ_719G7ELG$N*;=g^$#*bj}AdgHc2VrWtm%u2DIndp{+WMp<@tQ?gP@ zkc8zQ9uMU4UQ>>HGiJt{ni<d4@&iNzA(Gx$4VPw~OBx;ManWor$)577P&!hhlYj~d z3=9yd@*6H(&a~?T{=1VN7w(;hO}V{YRc8z)I(%l@l;4~<iN<6Sp<Lz1blU0Ug23OC zH*YlL+D4I^2S!Uc!eTSdpFM9$SB?JmRz?q6(r7^qf};*1B}v_!C5^Zs?!xkJIAi}0 zS?iOdk?bXe>U01*&{#sPC}|nX3_9xi-}C-d4%Ny3@{6`+gEP5%r7ZvK4{ws<6^8~T zefAPDC+S<c8+Az#pJ24_!@aJYw?RXw&VE#sTbpUAHgfD8#;&J{^&)As)Ahk-pHuuI z(5&6K)j27Ene)vJIqF&2KG65BRTFZ%ZYA26Zmh^8Zpyn4&*jzYO9bYG4hV*FSEoIY z7l#A(Y*(roW=(MNNe7H$;DsI!c1O}<`5(^#WH-rLQQFfv1E4owDNth?BS;Wx!Q4Cb z03svJNCSwb+q0z>z)ymCFHH(fwi$enj`XnEf$5_v*EGnmWD5s~5g7oj`XJSSDjOKd zMl+d=Qar>UkAUoBII~jmdABKpURPEsYZ!dezaPq2*WkQ6BpJ+lrpES7e{Q<nDCt(9 zcqn2eZxNRrno8MHz0Ati!xsm1vM?U2nkDU@p0ZqyJ~*6nh1r-<XcFC;Sg1q!?7gEG zUM-e*JpkT~d?R~8Pz<Izl&zQRRgS%NHCyNJz<Q-dYq?fu@BzTsVua@4v}xJ28_)4Q zD=ssj#yC$peTl+Nv+|<%C8qip07Ia*prTF@*K33_zMQl=>^&!wMs18t3l##NRM29& z>}s&uy&*w+sL+8wAftc2|LiIEC8|?i6504jAi|qWni3a!*f74l7PN32f*CELtX_{K zJV*9nJoKzQq^*sH42X<d8Z4z^BVj=)74`*oFPY5q?<2S0JeKh@#7RW4QNm(284POx z7$&lMzsSlHLe72!VX^Cdf{~LGC1MI_X#_Eq8l6Avz*vJUj6Sw6I{KMidG_!#&DxhW za7AEiMtY#n_~N218*9rPSA6{Bv6RX+5>H_b0LX%q+gh%(5(K$i$;Jc~dZCR`VXO-Y zPa&URHE>D>$qB*4M@I*22jvUPbd11r02}nP_rH*L@9oRK_-}t#UcIp`r=6j^X!a@D zN_I>V?|?loMF%|?M{?2$rC!f!pqi35@2txMwV~T9MOm5W3HZCYS(A!BQ;=Q3Jom>L z83hRjnwT*!<ckF2Qur!q)f85(<`x+B$2QlF=L7lX$#krrH6WhCK(juB^O>WP&Fk~Y z7wepkm<2snFA{8DB=uRFjypOt*n@c5_-^bOoIR54Fn~((d86va=^ee-Nn*y|#||ek z=(Kcy<xSZX6`<BR1LZRK6*NP?`|XCzb^jp9rCL3CEj)Qk{oCh{oAUN&Cu&n>^7CIj zmuuH5tTrKfh#mVUI8AnUi?X5qcK>X|1f}3>K#?g)lqj%ThHKkt=>DJg$oG)!>0<TN z;eyaJlgMhOIVA;Q4pE>+B<H&DcQ;CmFv3bjX2T&%pDzwZWPRIQ(Su#ea#ZNB)t3uh zgh@IlTX%2B@x22%X!T@QuNA!3lw*vHrm#Dh84DeyAw$`2_);tRL{s`szZ+4N0dI_{ zhnnKLal5man`;Vzmbt0S3Dv{&kjB<4hqQVYASjLKnwkNuR0<@K30?UR(IYYlI0by) zB(#w@1S+rY*0~0=QOxW-h!QL%Wr{%U$C54UX3nQ2K-s20rI9S^A$~=JfWbKAj=y@l ztOw2xcR{1E<JMGu!Jbyg-}RlU7{GtrcmN14WsUG6G_neCV#feXfNaId-p2ZT5+EFj zXL5SnmDUgrCzQ^unry6QxOsS>r(ib=jB?Tm@FXHT@Kf}NmNJa$hyA(i_Y=~Yxhxgb zi|RdJTaWa9;m)#*9KZI)y2KwH%j2WIT)zVT?tp8U(4c8qzxR$F(zDJ;9d3acFCtC^ zFxCt9FX>c)EM`yE$?hVPfWL=cKo%01l@!NO08B|EP=XL^Y_y^nyX<=tnGPe_T+*ml zucN%a#8E&1srDc2$<g6RpGQ(cH~@?lfhJNv>qWCE5BCNPw!Zh)re@8Wp+I63QwPY> zK)1P?V8nh;U-#MGv22#glFsUS=9|(SnY^sckft>#)5uw~5Ev2MSzTWXM}S#yMC@sn zfPLOyO`RUboG@z+hmM7K_2zZ1!=t?y1XvLTtWF8n!Z~<%E^OxCKxlIZ99s}vz%k-8 zkTEUk*=+ZEECb_Q9h^1U^G2y1Om1Y!0v1CZ#e%>h;m9UzB*y0t0f8>-h{S-6s32II zCvRhFkxje+0Ej*``1Vl(260O+ZT({Ov;jiGX~ty9oYcjjuPr)bJ=Z`HGrmKT(17-{ ztAD=e4>j0X;=Z}I)sR)q*7i?Y;-!phAf#xMRk;xKCz;9lj{n<$o2=nD?ru~r(t7{- zJjP?kd_PCI@ck1qY>7AWI1-gB2A3IThV-U$E6?W(eC>$+{UihKX#nFp7B5{kUL`mT zP~2+p0(}Q?`S*ttmV0N&NV94OvPrg~=4`!<S>VH*cM_T3pd*LJC%Q%fs|OHhDwON; z!3Xb2{@dS?AN|1}$Y1=0?w|3TnIcNYc~$~rxo`kWoLy9G07|2cbAl!y`kKtfT(d$> zuWQh|q;-Wo-px0ps{6N;S&^NsWexaq^6Li&^1uH1M-;RQW|7nOSSX$OMqm>gt6HVt zQ%L87FHYExzOz-8m#(cyvpc54Y4>Mriy_!OX$`1L0MeUk0l`RC*CoLq9vF-ES(kVQ z1hf$Nq5gqyAZ6@-aXb;T$$-JUy>?DuA}38im94=QMmeEi3E+0*sLs)T1ECDZAfqX# zRM4jfDCg|_f+SAajP3<g%ZfDyyI6005r}P2b%Sq7vU2J(5Cy0gG~Vf4kz<Q5_V>u| zve76>C-jKb!OT0_sS6_rpSP+3(6?S&m;d{3K9{80(ECr%<;neXx%pDvIPnuE#m(eY z1CclGR){G>Q{#7DtIBaVDIY#Fy@g87ld5Q7cyhs!!z8jqFp3S^eJKX4V@LoR*Vt$I z31d-ruCHl?k(c|=N33z8#E5de?tD3$C1rNd)f*nO?5VdZTYAA>S`YXe8*={%=D|m@ z48}6u)XCT=WV3o0s~WkTXy$agQ6N(rM#!dm5K=x+qG^^|_s)m1+b9^{w0`%#W`)Pi zJ_#ZKh*`}WU?rhzj|3kZ8k-QMmDA2dvbjLsd18bX|K$&EIfrhGn{aZaFkbk48VY<C zN-$AUj@s(1y?`^+$9kZ5cL5wru&0C>^9x<Glf4!}F}^y9Z|vs8&-%tRj>-Z`uO$1m zKxObrN1p5b6wn9iPUO5Zu`!j%<JeTJzrzMYSr6niQ2Jt~E;Ey$1+O{Kz=%ZAY5?*S z;E@UDN~aQQWH^V^sX9}XruNT<8U>EsT(`%$Z4jJP)M+Q?5dlfh+agapkt?|hM`OOa ztpQI#9ZDj@0)eHS3Hiob>+%op9Le9mb0|Of>Nd-Opr~zVaP&RRxc~LvKh}+vC9rbt zfE@(ti3wD2gd=wSeph(`zW_7=D!Nold21CQsF)@UCo#u}qL(C~ZbSmA49lV5`mQES zEsmlpaCqvZ`}&*^s3C&II2uTCW_o}>ebATF^BEEJFuK)(uA3jYDn^1JHvD|>=()W6 z+2^uU+LhPt?8?DOlZFFiGC7B^hm$j569Z8qlBar8Fn8AjC9g==p`;mlRrZcfSuI$M zV%@&7%?#z<!$&k^$Xr3qjGz*RF9<_N5)>1Jhf*QIGsz5@=txL|hv!O??EMY~EY;uI z*_Ib4r_A~j%&wEh34s<u5)5=5;#wl-{0uc4vDBAzrD^Qfq~qhqm{9DQl9p)}1P&r* zBVh%1?~}2KJLS_ko0y4BP0j<kY7FNQklGUrdvKN@6cOK`nypq-%9SdgU*P)o=p84M zCE3|-Xu#*|v%8>Jl(EL8c%5*fxEBQcHvZ>1k|QU2$??^+0ZsMZFluY4Vb5mFk=SN4 zB*<CdV+fQ3pwUUkB5O1~Zey23kfsj>MNgi;q@yD~YMx1NG?3n~r|VUg!_yPF=yVzQ zWO6whp-m*IRZp}v)&nD5`n*RYtH_{tpD5&rA>hc;bfB4hOYVL8q5Ssue^-9+{oj^% z-~X6_Ov*`$@_?!xYpE>?V+{<m88Wo7dXqBAX3q6vM0R4;#I5ypuHP&$>Q>-Oip8?- zpPaP28W5hmAQ=%AE;aDNTt1lOFscYnegrOyFda;s5B3L|Flk^}%j+XW5|EI$uGQsF z|MF9{;UoPH^$LxmG}JC^EE^LfWR-^+z!eL2-)&7SN8>(6mVJ&_CRsT`aAWeYpnn~* z+J*dvQw>mg1E7==yEbP|vL4N1v4#M#qSZq@RL1r;f;j{^2p+)*2pe%@dsU_xpE?8e zN|8Ym0>MBsdan9TzSVpM)#nx?bCJnWqbk|zo=dZNOwlU@O4GTgwtg(n9v;foyPIs^ ziW9VX@x>X4GvuwWuFJ19Q-7rX6P2J}ysxjlS>=5HqB@55AHvluH_Nj2QAQp;M=K;F zTeXbTYh^xza#{mkz0PuBSsK->CY<H6jAj?o?+<8fSJqY~U#m*5dqHN6oF7tS*ry(P zV3MQ3fYB??06-3qS<Mj98c0nvqA4{9E<#`P)$1#=kqYFbKce=pu>k48g2U58St~}; zMCOJ?)Ay{GW71I~qs2JXNEhs=JGRVE7Yh`&sJMdl=-F{c{#+w*D)h|7Kx>W?6uq=^ z3Fzg%JUqbR>&eaSs=R)4h2>=|8w?*_4~}8-SjV>L<S-wb<l#WG$6W*tBy7+_UPu#H zARws_t2|)g!HkFAWDm?!dfhOFfgZ9+U~-}-7gLrL_nJeIHjw`Vs&_>`)R%m&)q+7N zM!*Eaj=CPeOC;bB8e3%I30;#yG%^lj2~7k=*UJMt-yo1Pb?D%ihW7X2ne|Kax@lL` zYhKyJU@r`YX7{=|S|I3&O;CU{{rdNt)rd@W$izLpE@b|(>l1$GwPpF)hbQtk?>v*= z|N0hN8i51g3`R3GW<4on8a7w$`;Pw5s9Zxg+JQfdn<t0iMQ<L#!T$I+h7(zNtkHYq zdrpZ7==4}}`b=|kAg+DTAxb>#QbyBvQmdE{07YbHFqap{6J5KM+`ie6VyPtuP0eI5 zc7=Iy-w@UWf+fH;-It%<dm;~yj^$eYnskGy{D*t*6B(P*43wF2WX~8*8zof)w<%^u zn&DxdGB)uU5MHb=FB8=D^yq{=Y@*oJk=)$bVut;2?|>P)>1?OzbkGM6LIY^wSyVLZ zMyU_qnQ*L9a6({hLtvASUGFe!$nz?|b$vLNAp=$_`9+Z<r70Rex+g4?GaGP{lr|o0 zMmmjhD6&j7py($S)FHu%PMqpm$cYEv+F}XYv%tvUCz;fsN*xE*9BYFt1(hh{iI14A z;*3_+fupAzOl|Zp<!D9WJW$b??;l7ZU*PottT)pv2~{gp0usrb2HHjf!~kHSDII%s z0H6nkBQ^R>q0mJhV})ojcp0915RK^HXm&0P_Sx=Ad8}lZ3YI#M9#{oaL?jc}k;XiC zNd0h(mm+8+AeXuiY9lt+d7n*AFnDx)Wc_kl!La|x5<!z1hw5~Z`Q?hVA2Y~0`)O8v zg1{y|pa?jh4oSv!+G@!cpWl<6%~d(Q=rA)!z?4m*<uagCTxwM0?zJlnxF9kEj`Vy! zMMn;YWF#%Z1j0|nPVLMi_kF*o0ZHdf&sH6z<8pLztjn1o5Dv5VZD`ITI|m)JKCknB z-)76xCeDM29aJ6jny?@lyrVXMb-6Czyt5+z``_KC?|6FB(SSce-zJWKKJ@hYbIda@ zX(;<)dWP`skh}>9EN3&%>9LPY$<1k!FIp@MStkURD4}!SzGQ39sxbQFRHvLXFvZkE zOMP2k_ZiON%QtV!%U74>Yj+xYeM5r$ur7t1u1gTJug=nX(r`+n@rVFiK%>9>0}Lkg zT&2@$Yc5XM3I)cikk82D!=5Zv@_a_0?sa8lrz(YFQSI|w1DUD3eeXz0n&GdmmgS%R z(H;5U{`Dtv(jLjZM`!Zn>6YAnb;+uNm$IuGkQdYP>dRI6)hAEo*Y_j&tv8DD^2;@e zPz?pnLCTsSseevlq^(|*r2;@U4ffHXn}gDISq&;8<8;b;GnojZ99Gf+zyXdc<%Bg* z@&E-X9PqCm?aS(BEHB^M;W$*Xkd-O28NK;bS!1818T!bnBIQ#y<KF3x<cmJUQI@6M z>o5XDDG9Gfv`3w8AZj%zfYc^{C)HAl*<wL|MuD*l!TaS>ri~6B_=g7*j@cm_`|G!# z>HAV-i(5#6qRfvHi-8S{y*LP*#Gh`Oo|j;GyQ=RS^h~cDI0a_cL0ZbIt28iez21Fw zB9C7**(2KAOv-jWC&TW9M)cNZRqpIGD9plA=WdR@e)NfvN%YmZ2Bd0rVk?;fXC?`_ z0mB^DI>{Q8-~y5bfKT#rq|OKj84|J0_E7F0_2jVGmlMs>G5&|qBkC3F^|sn$Itx%W zqvzb!i~^Fkj7;^HcUBUzQ<zccL?CZF=MiF`nR18fbl~8jRQJ<QPvj@RI*@O?yunct z&JfQ5yqXXwh|yqxNFtX}L=KHl$wlaAXDt&<`3u!2p9a!0c}wOgFSt-@(`(M_Yx<aH z2cLS{l<>g(MnmA+*dgBdaPLBnTN7Xx<<{+*e02YX?6uC-2sWgqd*<$y6)LU~e5UvL z@Wqk*_^0p6@kL)&8VxBo3es)%*qQ*68Kt~{fVi;+l~aBdz-T}^qn~cr0u$bWLD<y5 z82f2YGv?Th{h?I4T&<9weNP=dGC!1{-4Hh&`od_Tno@(Nw*C&icGGzA84#0QYdq)o zqR(6{6`A#8<{c&cgJzr8hGUM`n1Y>9Aq{;<Viep&K<M^-f+Jy8TE&`dEH&h_o(5;B zygsL_RT&aC4S}*e92TT%W8y<?{e5!r$I|Q!4Y8>E3R58IjFrSMG?OWnQwCH6>5FE~ zeKoLw7$^_=0&qaJVp6}qLQoZ`g7KNRu5NR(=E;6b1JxGW3!r%hJ_msZP}kG~Kz2=L zLXWo09JxmvPLh(%;2fWl1jN9jk+p7;25d#pgZ+?*t<{J9>$&+~WbVieku9R_H=`V> zzA7V*=`TUmJ@mpesg$!LAuEcM%bi1^1%SIQ!HcPMN%wGGy5}vKg&uV<u%Cm#MmkZ^ z0II)QDsZ$5BW#go!QcMc*X6JN{%?t8Lf8WF8DKdOrhNA3IcJ~I4gqa2j2os+K!Kd( zxTmo{;yKQyeP)N1a>*fXVp-4CC{eq$x<+(8g2->)S(6{X{YduC`aD~siJbvd;1b0W zg`hGi6H)391Gdio=l}BqJ%d-}`>(CYjjg);?XRBGCK49`2MM2%jmgMZfXsB(XEh-J zoiQp5pgtuZM8JU90;ri`tHj!_p{ulz7A!U#L?&0J%>=;>g6MS8`nUk5k^Wch&av93 zi|&AJ-D_Jrx_((XJ3p5P`$@I)Gg)ht$Z&}%tE1Bn+3(IUA_{<{1~{Nyj>JTD0KQD6 zbLzlT<g35A4K~Og!FjiK8(inTqpm!D-j<hddvf}`FBiSJH1zMk`$m-$P3!6-{+mC3 zS^o6j-qUjy$ouaf$@MFGAIR2y8(re)X4>bp4$gmG1N5ucR@nOGm>aaPQ?6VOTN;hJ zr2FI;Pa;XRo6n!UkXLsrQt_d}rG^^RoqA|G6PuC4rcVO`ADU4r6f@*&|M;jS|K^<+ zdYDh-AOF@szWtROu59P@)-y)=7=@Ed@`r_CgMm4}=*ellst-2B688wB1RD7?vJL^C zw5%-!_8>Cwcto^bbcb@Z*P<f;yVVeLl9-*<1;29z1~RS2x<tv>zx>%F`Mq!K5>4&J z3mtez&8P1PoiZH^v2d&g$mcZaZO=5VRr{d_&St@2IBBFfdN-GHts<xQ&t=n}tMf?6 zE3Y*4pw`5Orc7ei&t%;^kSUG{sbfW&M<YhLo>LG4sEF&!5|6%fMuBL468y*{_6<3z zhqa!a%l`g3&^H9?tYkb{+bK!rT18MTT<9EQ?UPQP?{m%K-@m^vP-@?~vMhJ6He{nz zqQh-<)M@B_tuBcMNWzSaS#X$==0Ids1B&mxzA5Je1Ze@mC!QLtTqc%!9<sK2I1}cm zNh9Mja#S-W1nNa{wP5@Kcttdg<*ct+Yn<bV+n492*!OiKRCsMZMX;&v4RyAWjS3Oj zkKjn3{SCeEb`N^-W4W@kEbl*fOyQJ<I=}zwPu`TX&X^;dS+x)_^8fyW59EXU&$yOC z8DLND?>}R9j$jAIWB;scXz<XoT9mOdniZp`Eyg}J({oeK7Gz_kA<b@|{WX?UQAN<T z+uhxk!_!kaZMW(87ht*s<t5!-(0g62)nv6=mG+=7eG2KMXylPWV}G*JLEYsP!D{HI z!|{R~=K0aFQA#GPdf>&s=`WKicW(W9>QaTjA%KaU6APWv8d?JQ9F+d?xd>1Y6riV> z^sUkcV+-eHR0JL!Ys`7@ggWmsGdwsZI4WfQqp^)1#^Sk5sHod@Kyn<|fOfY-WwWd6 zb@rGu#9GX0JdavkHytyQe*c2~cZ^dS<*;417doEqgwe@@>m6+=0L5U$k&Oc!23t1* z5zyTD@L@wZ8WqfGFb!oLUA8u6uFc{v^e%A!`uT}5%GYCc+G%ypX*xTMHpXNE44mp# zC{ciYJ?B{-2b$#%jVrze7P;PlW3W6QvBziD8-yG$ES0OoA~e*FU_$4#*-`u0k<IO^ z^44pwbG#MP5Y$?qhBp4BXY1&!rJ4OHaV@+ab?Q^fmL?@z&ojU?vt4pnn*^OQoHMFG zAXLdOuTflOq#68Q{Nf8%VZclW(Ip1vdYu4+p#=a<_|arRieozONK*dnCyyAg|KT@p z$@7!GX22u%tBpLx6v{X$o=sf#>+@NUY>lXNKno<C8OReoX{&k!PMFD&Q~5ThjpVPQ zYqV6(5W_*$PW?O34`1~9#$X7s7fdlkCawfNhjk5J<DjSOoYg(n<61T^hAeA?ga~+> zVPM+r1mudfu~1Dz8v|6p2t+aCkNx>joi_rll}3(QC`PU{lea(Y$ll?AWJPBeBgyHy zy!Yu$zW#bqvYMD((M<k-_~&oQcrazq6QczItcdHwdpx(1{QTWRuHVD`wlte#O%hU+ zCYOXbx@^-<N#3Yw#xtBts!}35+P-ecx-L#BYX`)iO{A(3#biE^t$H26cv6g(>J>U5 zAAPb)QA(Owyua7h1un8D@{^AaiHv<|cbW60FxJTQK=}yCR9_bZW(8oS6p_6{dGGPL zJUk1iGWP9PH)VUZ%)iS=mPI5STNz7=?$E(-m5Vuz=GQc0O|$%g+2yReen#y2zKmu{ z82>?J{@$kt@}uwE;6{K!fn&~5^-MUQ3&8{+Uoi)o^h{g@PO&+0w2|YnlNhvFRVX_7 zvCW!){qB;yIK7bb9>^^MvaEptYVKI8ys@F-Id&GAydFM#Iu69|fgB}6^)|s^A(6C( z0B4NqXafg&cp<t0!wMrgQZIKlisdVtOY-t=!Fa{dBZv%fxu7Xxg+Tv3?M$WrtS4vP z33=9`N#E`3;ScjvYfA(P>Wd>$_ZizHAfCh$RG2`V8j;sv1zC8)h*6M9z4gi(OO=gU z-r5D1L-OvrgP6|;3sKdq%_EvWW~M}KVLjlff+1Ncx<M{xBiO-6Aerih8vULIHnxa= zu?KJ+8Zd?=ity!)8%xp}#`4~y18KIqtcYwc>0a^y0tBz~gpv3!e*J|S%VQ1lz9yeP zKah)IM1(vPoZ4!%vM6z?V;YXzOg@X*9Lwt{6NltkPMQ*(rU1y8E2X>!0OvFwsgw!f z0M&neb5o5*Q(hb&nL3#oMS#etqrS*~_4+I7pyAY!ofD_Q8D|^Y%94rBMhJl<&pXvT zd>+bxAiFSu2j4z7HXUZ6Y^wE?+ug2l(Jv$>V++!aA<@PUaUY%jz&SCSC_otz;LcHR ztU-2~&K*?*Fph!B7|$9`ADI|}0$fu>zVjg|Y|(2seQ2K}nZUiEdIdmQSB)<E+0{I_ zGRh31>gAlgIJ<CrJ}oH#@$`&+<CR^xzOf{qKRwa+8M7P4+mPikAoc^B6iH{v7&rmh z3sL=+0V3!FC~q|E^BiDrV|E|G4odP#C%S_XI+m;RZln^y3v3R)hv2g`<&BA90r9^J zK)b!3CPh8*H7J84K|nB4Lyobr7y&>qu)smU_kJ#E&9DoVD*537Q!tK=nKaK%Wo2na zmKqI77b=_x!Su%c$IoPG>FctydsTk?*Z<BG7AFBEfw5n(4rR^k@7}zo0n&v1WTM?2 z>tvEumLx}VIm-{CCyE9cfUiI7%K5Y-!$N~XEYZ9t8;y$YhoQ9aEcKoN{sjvkxCqWW z7n+@J%I&M`^7QbW0pJvz`UrY71O1zK_vFsCW%=W8-;{s(=kG~R16*)4<O}HaX9+kZ zHvn)bAZUW%2}VbCzv<Fa@QGubkl^HqWyF9S2^W(TSU=s)(1OoUanjmcpxedR*YTjo z;DbS^1ACHnO#{v=8=LxkhSDg;6c_@l+lY*XQ>j%Vo;Q$Q4LULV^`wLyTV_n11kY#t z7H!~QG$U>Z0x+lwqXmjk7oUNI2R`VFCr#N>e}>8k#x&n~cqZq=nXcWc+}c`_YCS9E za+>}LVG9)@;XhJFWBs14<p-Y~sUwGgPG5fZ>l67WKe$30iU20&te!ddWM;W0Y0WSL z(8cPaLr(N1J(QeZ$M8M4fx+z#cA&K~h3pBE$s4f*Hn!+R{z|{(U;W)91KXh7JN4x+ z-+o31e08ZvRBSq%VfiZsg98{eIMwqYtr2<ThjMrxNJk?o1Pg!r?sNIBW`j4kYMfIx zB(R|^tzTjfpF|YMT#5;nN>SDYIg0NzpJ$Od#F0jPV?AhJzq=yY$4yDAGs}a^J)TLZ z4)xLTL?3XLj_`|vj(lHVS5L<*!9jPpA7nKEi7e6tTi0~XYz<Ba!9yP-F=|g%5fJ5< zxcMldsvFIlnScj-=Fogb`+>|`2sTm@VLl$UD2&czO$dR#Xq3j2PIndU0QAif45?x2 zYi0|O<BSO1m;^m3z5j$7T?n^C(~vW;%=BXuQ6ZQ}mmRH+es`!*=!}^z=6fA3L!)tz zf;B5J014~4+N^fW!?IcSIsZ&9^Z;ZBuD42U<CFmpeFF<(5&*Qa04~+lSr^ha#wNa1 zM!@Uu0fdIRT7Ac=ZdkvR<R<l;aEpn`#a69A&srUC0Kg2(`guv@@~kl7xj{}M7Y}9D zYsu5oP(FRUCpC4n$DO8JU#`eRvpkIWJvr{k-+lNod8GfxfA(K+-utH?eNLhY7&ka0 zIFY;tx;>(AMGBcLo#2FMTT@FTb))V<@LZE-xq0rKv`1&LQm@JN?JfEI$urH;&kVK8 znb?$NhOuSpAYlP14L<Yn;UUZP?6(I2bp_b^h>g4jm6uWhVi5`AHGl`etUpF^Ol{B@ z=@7MNfCWhUM8tcGNPZ!iOzi_(<0v*z8L})~JLF>#bc8(jNtSOH08;dQld&m60X>W$ z2ibJKTp+M^k?|Af5yVc`5>v7%SF!VnXvX`q=^SZm$!M9+Ni`Wudyr%xfXS4zivj!a zQDnjN{XJd7nNL*tU~nN>b$G1zc@Zl$xIa*O!VyddV~!%inB%<ScQ_viJ`!HRu`zng zP6?<Bt-6<C|I5_>5-za8=otcc?8&k^06nBcR!@j{Hx3L`2w4sA4Hyb%GG+hV&LC9) z0Xr`0*-;aU(aH@C;DEgukGiHzm_#))D<^udC#NUG0(|`0A;F1-yauJ2oa`MO$t$;R z$kyhzeEjLBoaII!kn#-aKGdM%?e`8j-<(KfSdGAk<C)-EG7Nr0wkgt1cqn$0KL`qv z{#<r<a&$zfRzZEPUM*>m5y*)q1D(N?HY1gs6Z`V?=uFQ|QC_>VE$`fW&ZI9~V1x8S ze)7?g{P4|n`Tm=?<ck*<bi61MA?bqsYxixM3i4om0{MXXnXtMrpY>%J*_a{{9G2o4 ze0rCYGZ0W()*!HjvidMEObc78V~&3U6_4NsLF7;!Fo>RRU)i-uqFGONS5`O~f%Yu~ zib|y%L8s8SUtcegJrICM?APJQ=ywq)4~7WPa%3q5o=eTI23u8mc631+X;e^w0jlf1 zzM{clP1g-#N9)TaJ&*c~J4p?4eEG@82O5xf<wxJTMGgT}o;>y-jgEY#$>Bh4#^zF9 z?Xlk1U`#OKPu_nf-@H|qt(80zqIeXTokYuf7A7@vn912;Pqvq{QqoAQtI_X^&Wzl> zkuL5`5AltSifs65JVp~b>JjF?^#G0f1{ga$>Pj8#NP!`W0VG0{{|n8E-~8b%sjsO) z(kK$B&xjPGnz@7DQy<u{8^{-XdPws*GGF0XAY=a7#|Ml=@9xxTyx4o3N6wH~-<51) zDEXj&hB?x4z(vkFF#$#{ka<Nvo<tRC`Tke7C7%EiIwn)mXOFw`+4HXacR##A9qo-; zPO~P=GtMQWo9EvCKt6Bx<v;uOwv4#(J*fhjo=C7am}VB#(+s$;_vA}WzhedieKL^E zB7j|b>DUZ8;rK-~jEItl0|?P-(6vnEG4pEkkLE;Ch44As&173GU;n%(7oCyp>(60p zL@*(of9rh6DDkV;N}BEK#?b6X=0?o|2hY+q=X#AeqNd?(Dg;$e$m^YvPdjo*{3L}I z(6Ng&h#8Mvuhnr7XPKFb^$I;>i|a#p0<-tMsg=}GC7}9IAQ#|@2T(7OSI20r1tVAR z<jFx>5_&jx8U-0@0JFZ7V+Mg>1P(Nu#GDDnhpVlV1hlX9nUuUaqgfmrmQ=?>jo7Dp z-7z%=26{d3-ha+9IOr>*I8cH5o*wG=?yCd8_gJQCsBdg-$iM&Sz8su)s7!{S5hH^j zmVf{YWK$O-XaHz(*4feLM&uGm$XcV$aw#ZZJ*QfT^(+@4X}Kc%Cui)V17H+5@K)$% z#NlX+-`QF-$dD5bFo(~G9FVPyx#}cJ?FNWLDKSTF@HxlW5HJLs6F08v1<H0I<7g~$ zGovS607*SZJBjl_Wvh@q!zDF(P>Hk8w^Atjw*);hC`hw91i9Do#HdtpW?Au~uC$#^ zjQ<24G9OdUf+8UL(irs1l7iMMS9pGKm{BT}TDeFLd-P_PG~31dAgc<H6vkCM{TXSM zzj9|w&BmrYJLzc<FwqlY6t5(QasBaVW_sJTLY-)FI5W&K1MoL5mgqE4ey)_ttQ6q? z#VOtOh*Qz$m<;%gamK>Mh+$v`9@#3+c-Bv{;!x1%ZNW=UZ9?7!VqjlPG9gM(SVj$S zFyXjr(lZhhIHm+aY-!!6X${u9Y&{@TYqvYHTrbfXp=B9`Df#%`Cvs(LUB3RcZ?ZLJ z!GsBqgv1GXbnFKwC%TU6)Bs3h5Nbd`IB}Y2*IV}?oam=mo)@$=ViQLxmh1fNiQenk z@d2ORgzcup|HssO{#uq_S7Q5woAbRdhpJbpLv^#enZzVYqtR$Ip3#i04+aba1KWT< z*#D9J#fAaHhCQ$ajUZ`ci3${{Zjx%UbLH?}y?ArZ=N#{~_U{!%q19bgukJnP7j|5G zE$%mx2F%U_nEL6XXL>f@m7RJ~9-njx`h{IA>v#O(!KFIglziv?+w%4MF)<gd-i+9! z=^`Ps=zMKND`;V&a=9Y1-Kdopv!U9k6x&lcW68DDvf6}VsYF&ss8tp))shJqOri?c zBYq@drEKNYLlG2z^ZuJ`HFsL4`W$1n1Ys$+>v?(W?mk;<k54)r^M-FJ7c1)QZIS~5 zHN(l+TEUnMLx8Kn!v5}#ynB@82p+QcZIEN>S^!~x{P;>9X)yEFt*ZK(1p(9b-I^TK z8*+PVgSPvV&tAx*)0VvV#sO`F#Ac^KAoSo>Up{$sF2DQTBl+FmIF!Hm=@Y|$sLlD~ z50B-)|NVO!AnD!I!vMdGdmqLarP4(_9xT<V=Vhc(|A{(`r&kl{_h&L2%~&qS!ku+T z*5hEzIicDb7@Sb*K~!0*fkH2IU%Ft=3k%4Lrk*W^ETR}+I?$E)2fq5_&(7rYlQBzt z7!NQ5f_ds#{{GWfRGIqz+dDRz;@KQE4i3NsxHO3R!Yst>eHjl|EaMcwqnoyonZN@B zmPVucchb;jUU|})`?8S>^&+WLQs?mqJr7-!tvb|!G}BhY@}fH@!NZ?^+Lp7<RNlE! zmNyS;Bx9&)CXqNXlN9H0J<XO&a&pxsY08Ra?vZpgP`T5{OI4qNiti~f{;C0$*zq-E z{y{VE-c+5jI@eOhagj&NK-ZDYdd@YNx_}(zbWJ5Iu<ymBtMv%NnfEa!1S!q3c-Uaf zfrH%&fD6ad$!T@ajjAKg7P4mcVW8HiDy+#fpMaFc3oIatU1^mvw(4|%2Gu~Uk@u}M zq=pj!yvf>VDRI!K!#vHJG^j?;KuND$U)^)SBh1UAYy>zFS_!x?p!j{IL6Fz864%~A zUM|n)(w!$fFWc3W?A|VLssb1f%=hAbbECejXC}n4)PSTp&B!NDTGH1bYkQ+Emls#^ zwF3=EH*4}IKlw<S-Im<b2>iG`BXH)&pFQNhAuwI)=Kzgcp`Q2B^``^tLnjgY+mV}< z1`!7`YEZp`^W7Y!$MxLR;Pzm9i_Q_8>=TX{MGO?c=7o|sGKYx0YNH`ux!L?8#6qI= z>x|#E+Q}7<^(_<%a(r?o+Zs$%^%;&YE?x_};O~JEEOeDEX587VYZW;rFseDluLB0d z1Xz0n@4awAIRSntD@UWGPlh{WJ(&#q$BCP_#RsI>M@{i8=hIm-HpY>WK;gN-$hGuM zBqOA=^H~P>9djfQ@(7G3Wg&|hl<H9Gzp-6q1>&kVCMixfU7!Q*jU%-;A*+UiPEWI{ z4FV=3Ako3s?OGq`8BM0fHP7<7<I{)yD%KJ`YdEV6umB`4u}se=aB-n~cV#Sls4T5b z+rkSBEWA?Z4DSC}{|SOk5~P3#<=W|+7J&iyqGZPEQsl3V*B<u|XF-F#%U09j0V0a2 z0ELfA6)FyO4Q$}tN(el}T6mDI{p8b+<(+rlrylrEfBrK~KuRoCd!A+c*h5SweNCMN z?4&Uj8bcr@W__Q|4iz-CZFzPu(E+x=WlWnon`u_PD6qtSdj4D;uW5Pj?QBU=@5^c( zuyu!n(CiQ7tLLZko%ik$zx0bQPt`kkQuMOqJpbs6Gj*T~*=&@p)wqnPN*9oTN&^W! z8(n}G)ltvXmO;z}RTor+;>f_BI6G_CNd)U40-tIz%Q^Ri6AdvXZ80sdjBFnPi&{B8 z2W0tQyLXrEnQp($dkGoUgN-uL`z`f<vxk@R!J9W3M0J-jtBPs;u9cn_Ka*zAiwQ4O zhY|1$h67?}YL%?~^)F6Xg$wnZe)#2u1_e`!VnHAb?UR4_WrtF(2$a#{y0N<<UA1o; zwSw&L)R?Wmb+B#KR^7vguO{-7FWPc)cBw({SVTYn*4~cn?ri88=yH@3G{m30=*Ujl z0=L9fRl`UZGp~mTP8qY}06svR<Me8z4-?C9Xk%Z!MN_{}BbsW4ia-xffH0ns!x_f= z?b|#0@{x4frYeR*=_M&@TR(42^q`=mI;OKo<pF<9b6g9CVRyeKw~iK!q6tQFzzNT$ zxad$fDuFa0D#9MBIUV0gZ~7_wHD=YTn774fPFgQW+D42JWcVoq=zyNpcaE&pQ)4m> zbfI?TcfOgDt_Cxett`vhPp+o&tEVk_d_I%s=ay;x$Dclv|K?wRjZy!p1~}-^!-=84 zjI4RVEJ@c-*9<?C)u0Dh0rYUcexoMEImAu$as+7^f=3)<8=Aom#_CkPJP910Xk<&} zt#n9i0I3Kaf_JlA&}cZMqxJcY8mU7*P-0dn+L${<_NUP+OYo7=_;Ry3gKzy)Tuywp z@AQaB!~xCvz*zizqM{R<2tdU_58Ny%%H>?6;V_n?syaK}n38Yk^+wi8n=jOHp)?8~ z00gd;R%0oqOo9*-48SVH7>!(+utB8fr>#L22s%*3Kva%>Z)`aEO5fPEVrv)inK&D) zKlEJBU@EV>tw!IQM{Ltf^)sHHUb4hJ8TAP0Z0P0vU;g4}WHbA>-+xd3>dU5{lL5yh zky$}zbXyHX3YS*T1=P}v*u}myAgD8OfW1T=Y>oT-s@b-AQa5`KV}4VO9<tqsFJ7oY zG;tSv4$9fcmalo-ZLV4zI4wiR>^VRifNDTa!+7KiS<=bk85`9yrB!bq?6IA7(e9Bk zj!p;?ke)fPm?L*Hem2$t=czX|xy<X}!*>A#b9MJDm13Sc?#Sj)md5(vt`s!uLJ3-2 zC4yosb4+z)nXv#nQv#MHn_;$TtjSc$pg;vCSTZRG7uAhJhDVJ60su42co3L=_3TWJ zcB^tj?MqkhP&QwZ-}?3zQTxd7fbjpxrziT~L)i(7a_7djG|Cyxe)Qap=ClK7%Vfxq z7n9DKJ#MEOi0J~{&p7$Dk{}SwzQee{U|ac}gs4&~H#lt)K^@Xtk_ajcY{Y2380cA9 z^UmicQ;LDa9J7mAP4Y^fi5UTruffM$omyB7ShcD&wkhE`9vV0cl_{L@q5c{qIIyGa zud8G0=<j{w<_+GdPWw{cytzvh{(J=8^|$5YPd{bQlTG`)?<mD$HwUAxjP?9S4yH>w z(bz`pfN@BNmN*e`#uqj=$tim0XhQ{%JAI$`8wm^$`r!TtkopH7yiG3nKl-~*D8&jJ ze$^YWC;iQLZp%MDx}?p+T5Z%z($l^B=&K8Tp9?*=##9)w%4)a|OyVqcji|961lE#- zGbflku(Gn7j2Ft-rlnFY8}Kq&>Y3AZReMzgIgI{Zr#F{sxy152Mw79YxA*s1sQ_KF z#`Mx|rx+B#R->hcb9~+$$o|%d)nR}#7b&%IZ2e?u|4~u8<}k<!lE$1m?~w)*B_^W~ zEXoAX-k57(Uyz2{2?V1jmwg89o3#q7DYy3Z{_4HHy<ek!|LBvpoGvub{l%4RRx;}J z(^TxlnMa@i-}XXn@HnZ<{^2g??3;aEt5i;Y@w6uk0HjxQGJD}XhLIZ4PR}6zLXvw! zAVYOV0}IVwk%j6HkJbccpnUdU{jjc^9m;3Vj`d)h3e;#aL}5k_w#r0zLNEm*XXuH& zXis?9@IojbZtH`W%1cS>VQFc0)@dyqmdgNAhC#MoA`UAy5+o#kKI2B7ESgQ6`Vt~f z{yVzPE*y$nY<vPl6MkZ7OQ_pG`N>bLj5J$WCi0Ej8@xC#_3}M9*34WN?U63*$>r3I z>;&@UMOXgl$4}&6eCsANX%L_Qurvfa9(v>`c>^J;1^|mYB{0x1YnP)$3XzT6iIe>U zWGReH>J+`X6g*X?K%@D+`wb#@aUa1r<T*We63aP8F9OK01}H^0N3!gzV}xTzX>*;p zY|2IkabaUB&gmMc16??wk82I%1wlZOm6oA*4&omT#xNg^%l!7OiadQ1%SgZPVxaG$ z&vd`;%gwsaKqXYCj!MhLd@Wy{52Z6+*r*x}y3dgud=4Ca7Vjj63@vD|cXBnLfWwXL zg4;ijgcS(Hg4sf@1%p{07jYsiF|)bzmp$23Ls8WCcro#$GfQ~Lv#GLX>jNo=Ir-C{ zf2Hd(m;d1p|D9a*ujJ!L$DEx-zzC;^wVdhtchzw&9fc|k44fex77R7jsPtR+Ha9r0 zeyNc@OU|jlA#z2I_IA~|W#!rFnREtyM*x!II*(^g93==GGTIy}_A_8+y?!0Y;(v?v zlImsmZXC)B{k)dG3k((d;|LJYrw2_e^|jR~;Vc7jj$aREGk3;9scS%k67T#vpl}2& z;#vu7r+bbwh<gJ(0kqmN`+hxYhc$}0CdTg$C+ojP&d02h0QC*L!rEK2=h`TyuZ04M zH32GZ#WhUWPU#^C2IoAkgl1Gfc=wKGJ{?`xq5SEOpA$fZAOV>dE)c3!)k20P=bjob z=riOpRoU1+kkR5o&d$!Ir0>dh1}?^8%8|Di1SR3z+I{E>slA%d){@R=IL{7o4q^vV zMu*G&f|Cz~63!6>tN^eBmBZTIKTZ5olQiEO|AP~v3^97u;2!sFgldKf2F=hRVZ21P zzw{XhY;WgDftxMWXgdS6jMRR1x>wwn5JX%6BhKf{8c{|smr8mb%49aHZS6_6P?ep% z1Nqk1zah_`J<>m`+MtZS1F%qd*9p+p8d!Gw<6n=4x=A1G{%o?);LUW*ft|oQ<A_+> zSocf!s8XrRt-~EwNILzlk=-N_D|_F#dmv}6jt0Sc-!jmq80)VK^6mRa^7o%Sdws@1 z{4!s8Y>6amNIkDv*<niIgmXCRwz5_q+9dE7OE;@64iJs1Z$TY1G#dg;KY-U?@8)>C zX8GR4IG0u>_AN-m-K>HHN*yfq4xm8TNXzZr8Uc5cIRJk%`QVMZX40Cm_eN|*L|I^{ z#u^k%WCf|(74Vl!2P!qvowO!1_zomQ_?}uZLn0yiD}4v-{SD2+8x>4Aq*%%6YtW3q z90E6>A4WBKvedJnclTJ6$`|dK!*bYqq5>7f#u0%#R>(!N-N;IkD(IVL=!2rDDE*<n z^K7W!Ig_wZNXtMo(f1F^9GPlgX;cAXd|jlT8Y1+Ln1!&^;>%fAv-pdi+}%ja58vBj zsRsQZY+RPoiUy+jEcB$=naJ&(0=bdDIGeB};geP{(2PGXcX!Hip$podCv-CCYh6oa znstj9xdl#(n`3Z^$+05B!Q38YH!(+@LAlFg)W<FfdLZgHQIZ?zjtqcI)I*9Y1Vk68 zx>G3<-HcKc4h`6a5X~-i10J4qq(6&Uo$v|v37Ek?eA*_M@Y`?g83iYRGEk#JNh>Ij zEF)PjtbeEu3fT`(qZ<W17zlpm78L>|nob+~K5+<ST(}$ibqV9823H0?Gc;4=#$FN| zb0GLlqx-d?T6-LW38hg_OVpnlFbCs02yP<B0gpXg8+lL+u62Dc%xX{8CYK8EMSlb_ z5Ko?6jO3S(+VaKI4!QgPyFYkSjfO9cvq&x{F-vM++Y)(ve5DQqA}(o4+>*~d8}iRz zUG&umr_?EJY6NY$!i<b-fs{e$pvJPV-?`A|+pHESC<8GajPDRJs%wYxmyh{Olp`}9 zL3ls|p)CU{-3_%Qkvigze%6%+l>gzAGmfaBcZ^y5)>H$=sYbYqiDo#5@|PcfNj+r< zc%Whc90b;}Rw^?41AvQtc!xvqI6i3LNI3VcYE_-}NCwlX0jaoWhS0x%>n3~3FV0Rm zo^?HXmc%Y#ip_bm3Ik=csVSL}WiK)|!|TyA2Bp@hB2vDs&l$LE5`X8}t21Wy3Bi~P zL;R*Qbhy)NO>ZziX0v2e>*+I-9@U+(YmIYGL(oXY?4jc`LDjlhtr^g5Z5-n%_F?r- zv6P=U&2{}e{qCvWuass#DAN)o>lv2>N{mZ_JyRrivUfC+8r)^h661I$3ub?<5rW&I zI=u;JnultfCi5x#_O1TdC_+(s1uzQZVB>%aV4L+imEsQepu`1+v9#KRwcQy(^)Y3^ z2f5HKYh}wWWBd#Nnu7BmYfT*lNB263r>sU`eIVwO_VsRsc6UIP4d-fV2Iw-Tq>#@! z`xS7c4Z-1jK62`mG*Q$F$5WxDfYw?PTgwF%KRC)dsJJ0Jj09*kXDbEwxY=rvuxFt` z!B)LOJj0`>PvxEaZ_01~@V8_>9ZIv=arC`wBfJr7=~RkUwu2BHkq3u@Jm%oBuQ`H> zJ&w8Iy*YCDnm*WL&;f3DAmcACAJYfCIC-G~!-|4AnCXW7ysvf(cz~xbS90gZhSbYh z?p<yjQv67qN*}bw7vuq1)AnUBNevKX5?V0k#ikLkvX&P1$S5unu2W3|U96ji<WxCB zk^ma*beN@_bZa<e)x#<<K8bDa9Uju5BeQSy+H#Vu%I)p4oV2FoV`=N}Lz^L||J_o5 z1aK{7hkHvoEQ6;ba!CDvbNIez1aUa;(3M9*9Fo;<qFH!_)gY6{oy&Q9#K{k|Hh}Fw z@OarC$d(2c=a+3=<20uu(5^(_6f)qq_86u~Y)C3%+Xj;XX$^>qrLt55YcUz3Karu@ zoUz)8sRkzDgJ)OLZw)0L09=sB<I}D@znIDMHk80XR*<LK8N?G}jyS2qJ0HmpG_ra3 zR$UKjLR24GteD9K;}SA%_V;2#BEEg2Du4YaPc-76^HOd%a{PG=eGl~SPL`2fdWORu zQJf|e?^D(lU<Qb9;OrC32|j5=Gw1<>dtDD-rk)cI<5+=Z@*x-AdSHG1xsQ(#fh7cZ zk+o`#h^H!za#0;unNidA_{WxR@Eb>K`P+|QX(YcQFb;u4Did(wAH3+vd$+gb-cE(a z4iP#Tvet8%jt6pl(Uy&Tz`4mrXyCG_H<6yFo9CxkPJ-kh)q{`?rV}3grEXril%d$l zg4)o&lYwKs)(COPpKb&qFuW+^9$(F+zF(5s4RwxJ8dRXKodjfUN)YHoHaZvPO5BfZ z$(KLaIn)bsCjaxFeL@kOk-q1%)4uL~Pad4ks8F_!A=b0W5-JEv0@oLPv*F3zqB_UD zg8b-lOV?&g4yqa1#Yo07&C)QUX#_;T4FG*gqM6v|x}T6UeNEOgI2wpJKxXrxmX%P~ z3?RZaXOz|1l(G(%9~l`48O$QKJ5ULt(1!l;k2MJS)x+oV{kONcUzpk6$oRap{vgsb zs!{M|M=I*Dpmc;N7}XZ^xreg_9ToByIC0N`aV)V-^o*2<P`_k<e9mXa^O1N-*XG@O zcj=5DAD^(#MgS*)QAQF2r^^gvZQ9)gdb+@rPLks`z6(@6_LpPQcUDOG3J0;jxygNe z_~IpvHU1o;Eif!V_!^h_!l+rD?m0{Gn9Fq_IhNV2$l-|Ceyt`3CwC1Bgi%Mi9u6A6 z4<j>Q&ZSl{(AjW2w4SuF;*cN(>sV4_h`wfjXf&l|_BVyu5e>LzS4OpInGK~{rzkUy z<jr`^vx4!!yEpboe1$+6Er6%zJ)(`r>R3=L-ruaMEs2;>pI$cQYqt)WO+J2kLH!9- zs<5{hlVY#YvkC}%&Y85~d;%kyf&|stvw#EKaO<@(h2d_oy|<3J{zxdm*}jbQoGeGo zZ0jJi(Eu-n@mY`&C4B}I49<`Y0ecqWg^fr5nv@t>D99$*M#3m8LJhUE^KsWvk_rQg zXfajin3so-9+6=Wqgb_CUC#8J9iN`bpZ!%ye)qS&ry2V#`TL*$ia|VVo=*ljBg%pk zDFZ1=V5G<1@{BBoDYKKIwPDDT=i4Mv#F4eB+UgWZarXA^Q7?jKXk{d02pCzV2z*v{ zFk;M6$cbqw{NA^3%U}QF6K29FU2}3NuvSdGvRQtgKusYd9-d>h9CJEo343`>C5^-l z*el|0Qe^g{K7#Jku)i{mbcaaq493*D;B?g55{R37yR5V<8APg$*(}pO9o^j21of2E z<){vW{yPZr($=JCFrGU;ih!6GeD(^!JFmh32JH`47EsB;`%woW#fg=}8{7JQ&%|aR zVyCv4A(jTx$f#ToM-zRvSnl86Rhv7Y#CG6|<1G<Zu$CGS)-{lWthahTO?Cn)gmWs? zO(M0CLGn5o#P{Djtjp#bH5*<0m1dsr->x&_>7I629)cf9K}19s{>_68xvdWhfErke z5HSq&aX-2UII@5-2uwsFlEy_!k`ym2NE8yi05>)Za&t=^r#h<3&V(fwP<R4>hQ2FA zM^KhUbn1zTMR4E-8%iE@3k;|rrG|agnv(;2iA4o!To<`;U9{w7vc4aTaRfG~`GP<v zF#AAApk6ec=fPwqPfnZCugs(~obr%onDL}EB23AxouVWk?8=XRexjSO;H-K`4r!6M z_CmQ?1+(0Uv(GR<BoT>Mk}9R8i~eG2E$`i_a~u$he|(9uoRyz*Am31@pVw?0ExbY* z>S>-)k^*%P)bMdff=W>{hLE$<lxrnfwe{+fm1R<J@W`x(dQomQe2!V*f-NBgvo^5R z!bNl;gfHAYeMZ;kgFBn@hu^=)2zqy;Ae*%`HSRySpJA5%^M^fkf@PM?PyxYA@?j;E zw>H#B>sjB@K;nn`K0kiYk{xx%`+Ir0>W<}EYb-hNW2<9%d_Eum55d-WvSeuwGKMIv zB7%isF6CFuQocN!N!VP-2k+F_0z%saP+bH1#bljH7MeB8*D_wIu?cf@5+}W({M~0y zH5kgsd1ow7UOt!azH?iRKd>KdX#{B7s6o-QG@njLNm(gtHmX_vXllJ@mc*U2V__q< z9{GNKgL`}4?(iIWzV*c6uyJPIzIDWa;K|7;QSKNE1M+)G^`wXn9T`0g*c67mP|zTC z$?xMVI*fgC9YlEKm1Y?pS-Jifp6_sbTMctTn!TQZekjypr9eCndhpf?2wmUY+FYSy zZG@-^+XtSFYF%Rm3^-@)s=bX3y`LSYv=&hDE1fo!`g}ekg8rH)2iYA1OjM6BQksQg zVZm4&yCV|AWKuaJbBY(nM-d4PD1yCL7q5)loN}#t*C$h!F6XleM`=;o#q<e+H#~2x znCJUipk%YzsGQ`%bFLZVm&a!k1$zc<i1Dtv4r&NvF>Zd+<i|G8OU(yAv{`54UX~<f zl)4<#n~YdBgcIDZRS3cz3?`g=_t&h?sAJDcHD6?9WK6}mhz{+t(<WECklZjJ=*-jY zM25dyTXV&KJ$>+N$zTK?7$2K@DLPbC{z%J&Q8mp#A=c9BbmiT*Hs#rir_$*(CCn7% z{Hi5iJbWT|@4g{-jt=GQ?2<$}6<uTWwDakh7#U1+jOR8whA~6fuwap57L2@sEo;oe ztU$~n6g$ClPB_}PCO)E8K>~C~wl$zKDQF{|0VV+WDNxt?-h}H7npsRr)YRr5Px`E2 z;ar36cfHaeAe%N39^L=pWa(&%4UHfAR%MJ5Yr?LatY|~eC%EGQe#A5Z0BmsRI9KTF zLj`iSGNFoSZ9+#Rr6~c0KH^zLzuWUt#D5^-+TAG0MQ6t61G4?bUR4u=Q%*!xN@>%C z2beV-5ZMmi1K*}LU287SDhl4?NS$i0uL*8%!ph@SXTVk)&MWRzvj+}&V66gHINng7 zdZ0-mK<2HHf$w4$P+}YwoCq!bY$PoRM17XyrwooJk#U`v-HK&A?5pEn%DcM_s|d6; zN}er>GEzff@^;484ClV7nZnKeO%sp+ePzMQXfP@)nJ>mH4Zx7$i$Su&zF|5i-Qidl zY$(01M%U8<dj}ZxKtwh~X1{<&tq}2PLK4^WvR3YACL{LX*lb*MTzHHvaP(_!{mIa7 z1%D1c51A3rwm_MCiGe#P)}qh+kIy<%(`*v`VHjSNhhChwWV^m(G>ds-kO!cA2p-{g zj~dh|M<4x_I!>dJO{5%X#J8abHERGc&&_eC^uVtAYkA{#L&j^pM34|n0w+?kmW{)r z6t=T^(Gyu}_L$D8VZn>!bPX^9I9U)?>t#ZcRiyRe%-1QICTSi#DkJHk2jvVAnZzh~ z6cKp%av+DbveZgx_Is#^=lG6ehklOT2$K<M1k4=%vv1$jOiMF~z#(?kaH0#Gj?40e zuGiI7SH=ew`S>wPMMe4cz8d^YOmQ91aUSfK<vV)dKm6)K-oCRTi`XMNwFZ_sF_b%4 zvodM>b$^=3gJ!}x&^=vSVs%JL0`h*%!u98$yjU>fK)V1-yKp^i09_CuR2vN$wI`&E zMOORgKYJ*%aUXMx^2te)taF)6LE^9=&rd&RfPfx4$X9S)YNe9&+bs&lzzEGDl7q@l zXk;?%Yl7}|Ym?>Tu4d@gcMfQ5fK5Q#<^Iu4>Gu12hAw#SFl(OHfD;kBIMO4W?MAV{ zkvFQQA=6>cThFGqpfcOsA?*PmN?Z__Bd5cXtpPB`0lbIrKwlc5xWKpI)LI2LuH-vn zCg?Dr#ZxL2c=>VuuPIZp&J2>Q6h^1bmWVpeXQ!tWXu%o5%s#Oelu)(uGO|a2kLvj} zzZVsaED`KN`d^F{mGdc91xm#%v&)$VLzxg|)QppoO_4Voq%4rXMIW=CnaOwz8r3BO zlw!unP{6Yd-v=NR?&o5Ok-a%v7ZAX~`@eCtB`;nz<>l#>d`|<pH;;DY^lB)N$3_4I zhlusHkxZ*%KxP#pD_Dm(GD%egy>L7!R!nSCByhcEtmkw*We|i@9F(gjkfLidbvzh2 zKd>3Yz%(du-%!O1V#9~TUhKFa5*xik6~giI<Fn9X&uMhOoc8tHo6INf0EmR(ys!`b zL67BpjGM6%pnLbDAOC~=yWjs8@_WDYd-CG(CzegSo-bNl7&!yk2__+se0a=yO;rx# zfoOFx6V)>f)<OuWV878)HHeJ{M(HwbH-fC5I-ui|#|*HkB`&^W*Hjy=m-XG-hg_F< zIpcd$SrJZE&ml&=$gKgO-(;xw4|puoKcCIgq?<+y1ahOOm;vO6=Rl>fs*Vt|<aG38 z0$j0$h%?$AjOct(Ss0C%{4UtMqrDyeEb$-f1wqMZ7vP@5wpH}3ZdH+FRP<~|1a+s# zxVdI<lh3EQUor1n+Rg|9=vBlsmD4qe81yblC5{>iM&S;&D|!Zd#!~5&<Wl-~QPJMZ z7WMO&(i_gy59a0VyIXS7IwhZne~o+4JsN7Tx<)WnEmFT=&9T`z0j#JFz@D+XsLy(K z*+y0<-@8{g6}eiyBxn7Z338}Y(*4lCq|vx;#(QrZGV;TP1!w~i7Rp0$U>6Q!DaE3( z8No1vOy9VaQTEu7%}Q1eu5o>1ROLl$Nse)3q}T))Rc1cws6c2Tu6H61OhfinYTQN) zG;oNh$mZF_BY}XvjL*!<dify0V8k<9G7y1U+iGbDa75+LP9_9|+`nCyt<Ai2#}j5% zo28m;m$NJnp*$bzp;=CF_?A@WA=A&=O1%SUaigcHnRYadWim9zs>ViMN_EXF)WG6h zo0nsmkCrmfXRm2yk-^9dzP>fr?~SEg&}<ze46{JSAa)on$i1A-1!S{>bm&|oxkaXA zbhN>mnLaqNQ?5~+(nEJOiRGfZkU#tQLVo{Shpei2u8$Zqnzd5R!m-+sAY`%PMedF< zryfeJp0#l&J)mHcgK@rpRFR*2b}65oXz);~%Mb6SB(KrtdSMip_$<uo-r6j1#{Fjx zujK3ZcI2&F1w8}C4=^9h<ipQfa=)gIX_b>FmkYV*11K`qXOD=izIN&)$ccr3HP4kQ z;gDd|$k$D=lb9ti^g&<hMSa>F%E`qQdw%WilBM2#&1^3<vw3;ZB$^(*xU+Vb$EsE- z6ZbG*MXwdtt|>sNy&d>O_LlX+jvP=aaU)>96STl6*&8=+QfT9>)not#9dziY<F25* zi%bO>VNL@(IG|R4z!5kruX<LJk4;zM8VL{Qf<IrZz~WeBUmRmG=pEzptUqgd-H6Ef z_lRS#tT^k0T70VVSt%JKQdE0lFcLYAh-;s2NbX`TLp%Z5>fCcBv0(}D-Ut}7m<OH> z7??~KJ{cH+Q9=J3pM_whR?f-6R!#4SW<D8P!_{g*90H6p0vlW)%mPonsgp|;mPVm# zy{l(1WUtrfL`iDmGZ@4OIY#-A8Ph<9<}~3v8<m`ta=Y?(|M*Nk{NknTY&4|P?dZ== z^>cl@yKzMQa~O>^+c+sY4`gi!5{QX`r;9CcL!yBy2$C5?{QIvt$En>-f|Dh3b`pZ1 zMN!lMriFD&0?y1Qj>A083IVjC>+*{mBQ;(K<26s9hUi%L1ibxjrW(&V2jNLzY;cgT z_SK$lZSTu$)RCDw#(wuw9zA{_Uw`idS$SFctDk(xV1|j9;bVEms->K+Z-wJz$kfpS zKx~Ke9610Tdb7U2rh?iSfUA^&!q$T!TN$<b4kqlar4(dYU}ozvv0w?3t()}%wI86` z_KT+j*{c_2sCS?<S~=1hUmf_GP7z~slz`QHvW6-j+BIvd2E%=09ZPDLw`v9AbJ%u* z7X2b7s2Q9kLyS~US7fmR84{|=IMX1R$?(ighzHB+UVzVjIYOYE;|L&n=(TcQ#!Iw$ zLbVxF`PTg#^2OtG-m^<hO3S$vL6&}4<obgy9Cs86VK_9b3LHJgIB)LM<>YcCTa_%y zgfO;O%qONjLY<lw0|1P;VUnZWpU8K<c}uQZBl*dfL$(26=MccHpfQ1#4}70kOQEaT zelEWvr^X804$zuc-`4C6q?7?Z#3aeXhp*Zs`X|C0L=t+y5P{S-a}+-zs}(^rD-%^& z*`W<sLe5fOcsxght6!#(ji0hniISf7{bEL*zZwa;Ro{7|K?boGXFc}PsWS|D+?6rK zLD_^oVm(-lYQ-3$VAznQg9Q!#pFk2l*imS@#sQQ)0OrXUikn*9k&|6?<6F>C23=@Z zBUU&HkRLoh>&w6W?i~UqPTK>5xn8_Fm*?jLdG{bM4c%~nzW)AEQ@(oMm8u$MAaD_( z00RI6<Llv{s)L^BfxVcilg|5`$_5uOMu8Y1U-f0IzYez>(pX~FG+-1xCNNDekiP$U zdoIUKXh|;#94Qq;IV^|r{kwH?4?`0kMsz+yre$dM2;>_2-d~(f<d@I&Kxh#1#gj`l zav6E+u*$3gQ6z#Pn|bza9{Qgsrf_75LKYDXekPYP^0vUR35R+H>b0CS7a93i_p(wU z`B1_=!U2q(EFg$)jv8532EICO^ZB6*4=(C847_F_BaG~^=rxy)X33S?M>3Cdl0~FD zof>yEr524biZuntg2%{M9c)J(^>uG_K81>1Mjp5N1c@L(EWr`v^DLvkIBQau8bm+< z#G!fvXA3|ai7X;3&7$m<IEFYlteyIXY*cHUT=4aBp<h?Z8Jir4UNFvf@5T)|Z?zdX zki-c+6d=dPV?Hnb56+2>PoEn>3VFKKP`C71JjanPuAiPHu>;IGK&XBeoCNk^IyEIX zWbK}B%3R_tn9-6<gxOFahufPh^<8LYjBEp+2j;nsejmBZoin-qA00Z@JT@xZt4@dO zfpdb&1=?vO*a<^A8;qeXdH2>b&@%w60?q(}pvd7oo}YDPr&=H%1a#6tlM2M|f&iM7 z%bHfq)~_999{*p@O0zp;UlW0QQ;i)M=E(h^_JkQqI?K6lyc>cSWUvK}-FX^>W#k)g z?#km=E$YR8_iK0cJE!u~PoKzz-e)gN6Yr7}!#0GZCQUJTrTlM@uxxJA_y#tEO@i%N z5_~wPE#i8CLjbesUPM9|FE-2yo(TyG@ERZiLUskUIt0}~&9DE7<Z$A+_oMaN^-=A! z5l|FzHFeZ&P7Aa(>qO~4StYNT2s^q?MRjD522EyT-Q$d$o}FqIyd`hkdrN-x*)OHt z8$zqi`mV7FCSA3s>O5KuIs%@L#8fF=nVYP9fB}RaTQ@kj2&O%9p{%J;2edxce1Eec z#X{D|b`TJy)2xbCG+?d)aF#JDTC{J@T3xpJx*G7Kx(Iv%sC6yd4$TyS01JEtxYL@U zp(2T(hH|NT7h1!G3}=SJ02mt+8ufzFr{bO*Zg0s~&z|y}c^nh=Sy}4qy+beyv7m;g z<SDA>r8JRQas>F^%}ti_+x-Pwvv?;^fZsl7=$V^Ie+=&VIa|yCYCx60@xteNK>E3) z$ynMKC&z2}nyx<MX06Cc6HHW~g@cL|fvIuq1cVYYaY7jo_y3b89XZ&)l&`<DE1y3b z2mtH|5C)p`EIHyDu}YOt!8D>xM}UAtcB;NOlPyzT7Irs7;wJq&S$)n0qIS;vMY2&V zNuypT0mn9s`N(=f=;x+13S2p)b{rWI$8{?^9atF;hv%B!^Jp_G-K#FC_wad;8vMqM zj4nn|K7HDyfkz3<fFoc`GeU^<>KdqI(OTf!_zwu}@tc{g0>q9afXWsyJQ?5hLlc%D z=Fn5r)7n)dU)7%(491L(fK2S`g5*(}(Tn)qn_E&?4!PhPGLu+05!$Xnw3M6Wn!Oi5 z4uK(y(BF-Hs|JjrQiqZ<N>zHus(O$v#(f4p>9kcDLeQutHi`qMinaUM7fm_o%;lmr zCaV)7xz5N)`?nf-mc_R<TY)io(V9woxa5HkG!r|}gVreLxYn47gu#5(TgyK@=(BX0 z*3Ado+>d_tT({y-om0Vj!%^huNUe8zEgS-)j;h4<2+IVI0Y^rp)QS%Kix(}a)*AB7 zqmty;Bf01$zeaphJ<cPT1Pq1#T=am}B)gT!le3YO(L0|n*`tRN5`qczvnP|WTx!<b zAI@cVdqZw+XQ;S^LyP_$NA=K06Pr9hc^78z_-TtlWj13yYGftH-JS+w&)CyTdj;9r zDDeD1pdqFE(@<j%R5!pim?;OXZ$R=3YfBJ~>wDY_IAM$h9qsMuo?tYm#hKRNS_w?| z1OzbKdOu#CpUXwF#WFalTcPBq4n1+@RTy7H;;mlKfOwNBpMx6g<ZwtEYm`_iAO9em zr#`p7@0NZC0<!MV=H>CfVjh~;nhmP+CC7K6NPrxwWz}MdBp6`Q;&_$>t~a-2x%|4f z9$oXjJLLQIe`6G`qu)g>b(iI@Tz}Gc<Co~|K~6PZ8~Ch{Ha>aZ$>?GoFy1qmt|?oI zJ&D#9OyZ1i=02O{`$0mr7!{0FPR~b6Gi!jQ;N(!kzUuTD^un+Pi2-Q0)t(e`Ag-FT za_6~#gj@rmIWWu}_eVYX@)(IpktNfW{(Kt5Pb85s9dN7%?jsrp#<AoPxsEI+!!oP& z*Wu7{o|Y(IqC)A2lc>QCEpELu8BAtq&_IVC84d%14AS8+tM90eWggE>+SZMjzHX>r zS4(1B=YR~Ani1+=pjCwL2M`U+od}@tLrcm+&m>!`NIj*=Q%(cud`-ITGpUr{lJ9)$ zyVAOPr5R|2_7pY<pATLR(43+yJVnJp41|bp4g$j&09}j`H)PXj-{9XQ{X}4=|ADhy z(V#Yo>r{iAP6tGUqa}v()}OTH;qx=H2;RAIph4axgN9ca(*mYO??0T?Xb4+5bz^&| zR)t1*1+p^Sdp#@ldQI(JK`O=EYc@+@aezLDy+7@mT4EGW^_`k_e%$)*Xwb28_Xd*F zq1vB9HvO6k8Dn6$|487DcJxlG?d?rtdH3F?Jb2dByFb*kmNo2%K3Ywk_*l;?z>ug8 za2#0!zdTe7^}Is06l1UL&e(JW)S+YA0M(KkyA9H9H`V_@Pz-yIRu?Ig^}PM`<CoIC zRhKsoa`N%BDcc-9&Ai2pbO%le6@kjuR*jk;kc~wfFkiH>V1T{BJJQv=mj@Bs-5ZA* z%?}uXVg408L>T)+Ad$mZj@t{Ct22R>4RI-B_JR^dN>Sn)H7FvM#QL_CR3zbYz|t3X z1mGnsHlm~tZa3JI`<q`~GAcrFuwDn0jzb2>(H=4M2HD3@EAmXED?v#euujT!8sizM z1(Cf_!AE2?m`M?GkGjZHb+W^mjW*D*pugzYyY>p9ytx75k(o?1o9u$4To>j&U0|@B zA%kw@Q?gk|F^E}4MwpKPg#6!NX#x+sIuFoVVvS;OE~ZliwxNU@*EG}7Q<1<(0t~fG z<gKGBF9L{OK7ZPgu^yneZkDKZ-qL6q&Kb3(Vj*OdHd`i)-YzaW(rWq)vS8G(&Yg)z z6gaXQ7*s^rF!*0RZ)qll{$|={W*yQR3kfu5;#r%6cEb0VSr<}lJUIrrL_UAslb?Nl zCHL-x(x__Y?-eCNln6)UIiV5ocq4iQW?`a^IFra;J(Sr<q&F}$v(J&CxvZ%+rtdNt z$-VsoMG3lBbNM%S4rHnEOa>IAz6Fk?1P+X)4o;yxTFM{)%}cp#t<<ojZ8p51nR5G7 z3WbX7Z}0E|o<Zsq?-wmN+lyWv%du)$XVmSs?3n#$-*e<fG12#L9UW1J`lQ(;D5*Cv zvKG%FTv3)T=^g2fhRm{1+5-X>S={oPg$-+i){p)jWbI3*K<K#=?vM&yrmlrYfun=r zHUOIO73?%N4c$wjku?$S2ng~n^FWUn;z^uHM*rOP?N;kwm*vs>&QZB-!QQpe{MrNu zM;x6n63JoGDWcaeI&EFsq5*Au6U;zX8avhqYunhJ#8E;gm}qr4RVaOFmVLNcAZ;g< zsEl(WF>V1&17zT^N=}Nv=N$Y3%4WK*&0dFVgSHo{e~@ejp8`hJPznZc34PUauAu9< zD^1-WRG@^of|!#uyPF%*(V!Lv?#an3+27ie-}u@cdE;nX9=&)agZ5aTA<vOWjBX*( zNZ8M|ATkEv6{>s~<?Z*$$$qWMhx-$O3YnxYnh0n{n#qL>%%Ck%QpbaAX%#IgKEi4v z%GR7ZK-+D_*4K3qg#;l?r77Kup1bc9C;8`|-o;{7mg;!n&}>W)=50xWCOCWqEZ{6y zf^%QDe|K+RzIynTl<E_yZ60do{!0Gw%O|Y7M#++3vhifWJ-xYIlecg08L<=rj4|!F ztKYGjgtHDigYyR`VQPgjl?D6VQ~h<04))~q1v6(d)q%Y-LYo#Dx-UnEN1AMmN%!08 z0?A#J=cg@Qn>ia1l!Yb4JY_r(01Jl3w3uV-Al4v3?YBC8@LV7xja=&uXWI`jQ{Lx9 z6;&vmc0E}er&BuM0%U2kiDTo7XiJOvP<_Ob&JqS48T*U#A$dYRd2~fB0XTlNRf?Pl ziTI9Qtmm>+mh^IAw!<Ow0oF9(rYyx^fG0|;?S3oT(=$D15{CZyl1!8d&k5~HEUXg1 zmVfo4FNa&Y*U3<>dJ}WvDMRJ6{j5J<(f|ikwmXfYO^%51zU<e*tXbokN>PAG{Qyv; zo>a{EBkM>KW`t`!R0aK^Di&dCQGVhWusAoI3S244gd&U_goOgx$XOJ4<6uvYj!f1K z#<?CEeI#aB3u>62oc46%B01Nn3)v@n-zZ0>X;d7r#TmuHbSaC@M6;wJiSXZgZ=X86 zv18o9=oT(1keOH%sJ~$jJ5RBZgtMjqij)ul=%stsoohr_k{7zct?|<FWv>KsHP4zW zvJydnBt!|)n)Zyq5e-h~De6ySu9|oNb>;`PluR@W@3-b=T$iA2U9$>ushRYD`siH# z%ip}A4!okyX+)~oraJKh-OOT6oqz@-CzoUPDa!yP&gZ6Y4=0{jNr?^vrD;ggri_bt zu?koM$J!yQg8}SMmQ)m~R6-+3z*t$}u}o@gbYg!WP7?wEdI{H>6(tO)&^uhIW1dJR zUdWe^PvwVSt4lc)Mu<5dXl-#6r@ni}h-<Zg_y7v*8cp_kOESE{xR=$?u9tHesj&nb z-CJ7)85|X)JHkAEni&&<C6w%NITE0*;RMxi7pX-qa<HujdJ7W@iG2D(9sJo9KOgUL z)oMyr4K1_-+8X6Hy91UGk^P<`Lw8O$VxKg03~^?((C5B?`=+khTpqkUwoy#XokHp~ z3@s1}10yFvD`;t)><EB8wl|hUxwBdnS^wYTEV5+-Ae{kf8^Q28ie4kn@#h%n%J^0- zfXpdmR8jVXpak{1S4RJe=ecUPc)w6?L_h&1tB|Nz>z%_R;Pdg!No*3TFeHgX(Obzs zB;P+<4X!5-(HWM5*O41@iXDnPCYaO@Y#b56J}MWpg^gn29-tBePJFhb!6rD<fJLn# z`kTYq(xgk*2|;r}krNE40XG0cu_Ju(eJe@NK!xdV6CfD(Y{WCiak_~Ay;@tA6B85& zhdX6}imd0x-iA8*0pF`u$jS}PXwEz5`e&h|i1lTp0YnM2#;7(#0gWmu0|5dK4N(?} zWksw*tpT(Zp5p|So#{dyREH!w0V#3Q+><#f1^V}g;}NS;&;$3^HgC)jZvoY?$VRSA zwZx4v+PpXz6hq>X0!IvE+U;o#jKHP`o_JQ1Anm)H5R{38;`H=X4tDosw)Qo1Zjk#Q z0pEoNr29L28i>CkpMLd7@4ivKf*XG7I6&rV*Iy!ocFB^JhJ8oe0!xCq@HK-QW3&{j z2(6sroc`Y4_JNd28w~zKO0fuAwUGRc@(5ZDREM?-!JMD~R%idgoBQ(F!($EbG0iYz zGcJaM49q6M!4);YtksILRVgyKz&S%@6jaNgSw%2-xRcj=KH?sr3dp-0SygwtUM7x) zVqO4rlR9<DV21MIpm+tXcbrggs+f!EhylJF4pEKElj;^AP6XQ+-(zr7EQ#aQ=JzI= ztf3UXTCd!+RzfTZ_~gI+?k-X7;Izkm!5L;12Gs(NTds|h1EqiUJ)7z~F4cEH`{1fG z;<-SOfod$Oim-7QPsG__QigG61PLpbnX^i?;&cuHl8Bl)dkTH$xxxD@8O`1_OAqx2 zCwl0fb%u-p5LqBfNrg6CPi=D-C7~Ary4aCk{93jlZyz*h7;$9QapHKaEm}nh<IZ7S z?%vptx!#KB=Y5vxQMMSULwfkU<urFuH#QA%2t7bxrQPbwM~{1Q`^`;tB<a`Ld!(BJ zy2YVhtgT{7HcDwhC48<<54y9+S~dP;ut8Z!HR9-(U-Z$ROxQDo<RzkPjN2u8i1#)M za#YJ2gV54wR*@BV^*ulR^iuXUGr7=p*{T*eKo5i>vPb{~p%a{8^+KeAO$6;~3>7KM z`~axH625z<!a$}yura5L=15K=8_OWjB`~m1;`-s9Z)j7v8}QqM+LWqvaN29I<t^pA zcgymdZ&xV&8l!X!=Y7q@hJ9GO-YPx|CBxa8mmGKq@bp8Z;C+4m4<B{qT(jv|pLY_2 zgJ6zEg^U(%W)<J3|2>$ksO*Lc&+V-e#|ERC8E^zVsc^(`zg#vU#Unseo2#rmKbtZz zL6P9$)kq#+jO3qxa7ggrO7|c7#8nMAZr3tWS7Y6o&E(6om$K03hWgpkNtn*oMvsYV z11J<x`UY@uJTvgudTssTlKwsxkH}TMV24{9M6ts$p`^}or5anH%>hh8{|`<wpK-IX zpk$?!Gjb*{L&cGm1C8;@XV65zW)M1=#+9`{JSxZ2sIZL{8<QLUjq*7NUqChjSyvL5 zfacfIV?#>o`O9bXENd_S31H5(Y3)p)zn(Fad7g-Qn>A-<O_1Trk=uyNyoGCmN*(bQ zD-$aMy)r5g=;d1gQ{ZP}9T_+VDI?1Olb~n4XJGc=%&SF|YV*1$W0E;xeNX|xo<h9} zbL$zZxrJP(fjTObj=(36p6G00Bsp*%RC~j$wSLcJ0uX6POp3?Z_`H4=W~8$=VNlA^ zfsgdLH>yPjXP-ZLNsj#c_YTx>ha^N=tUNkul+`&49YbVh&2tIV`D|tFGn}U}fRZQ~ zPc&3@l%{^Es-L~mvv1(1EVQ=OiQ#S|lV&wj*JC^a0C%cE187M7*L1?3n>u(c4rDbK zS9!5Y2+kmo@QVqx^w<_y!*xb;I)_2OM<o144Gt`;+4GgrUU#}I-{0E1DQ{|^dfx2N zk)UOTa{wog{QwgoS~UnnNSW&!(Gpw6p`C3T{f=059FK;4emEDOTobzf<(kxMAF$;C zFlRspPiN!xEI>K%Xm^{LF34PRXtjE%9)|keBUUGHH(-iZ<T5alExh}17E5c;;(b8H z25So+fS?yaPP5xJeFJr1Q>y)CUgJa%JY>>FfP^#K8BE#E+EiyxvM<=yI3Nya?Jxmo zVc=ZjyU5i*o`4lcAo1thnjHhPgO(79n;@KnfE5@4DEMji-tP6JuICOx*{jQe@#wE? ziY$%{8INEbZ2-G3Rs&06Y?~EsPjYH&4tF;6<68uW;&>vF^2#Ndj8G9Qa4eKO44@<? z2ZOx!vDiqo)5B-a&gJH<T^b9N?TQ+;Y-A%woOxZGh93G&jb=W5bV-G>OknXGGBET$ zA~#c8RD(n3qo4gZpI+$Yisb#<4Of;lsmJRPpHvvQeg{e|vAlDm%548tb08<pu>hz# z8ZAt131e+~i933!QCjb6lwVYbv+fRMwoJ=txR4Ef6Nu7KdJxgEX1{seJe1f%jA2Zc zBqaa<hS9#BkzYJ&bIu;%DnwOxc1xN;mZe_G&}o4!3xGZ-WJOWWE~VJ~@_PpbIjjWo z?CF_w;!wW6t&0t$otL5WW#-JjqeX;*@g6m57@7F_mr(5)X=X9z;s02FJ(?Q5Eh-DO zN}lqLpv2rPWr?WY-7d+)rycp9{^T=W2DarAyFit+Ng2WsCr&>dU^|c;plpM(f4npU z#vsYJz|6Dp0im}~WBxl)!?`x*E)Yrp{6gcmmcRSroIu5HZ$i}RDzY{U74r16wks+5 z&AT-@&}Yr%_4m|y*8?L&A%B4vnlL*+M&O+XGmsk3=9R8%#VQB@*FZjY<-n2{F_~(n zg!y@t`W~O3N?V^V$yC&MPH6m5vde{5uJhNRye#SkY{;=@F2GTc(T#fKo_<c15kI5u z4CstE^^B@<(}*8^Dw}H!nRT%D?TCFa!;JT!{&;NTi^v*>bm)<5V|c6pTpJbw-XH+O zUSvRo@MJ!t5xSoB=69`)mmWQB^ibhM7K_E}4E;KTh66<j9!8bOSe9=?r^F^C6G@!- z3>>exGW=?7LCX5tgFEha_ReGDw8t7XQEmpfE0dy8GNk`C!H$8$uG#Exhd}w6i&CZ} z6+?W`gltH=46zh_1f2aT5{1NCLc_>_Ss<t?<<XzS8OlnpXDEBL3dqe4F(%E{F~1BH zwFNF~j@uSXMX8tderljNMyWn$3TWu3q6dsj2aXNK6i95@1Sfe<t~B#%Z0&QLvZudB z@QxX9h^kzJ<G__a8=Lk3DkyLyDZG<U$vI|45D?PWA~y!AUt!MUbPYz~7&HOEi8JHa zpkYr#{5t;i`s1vy?2KS5uqhx49EH~ke<tk<3<YX%K)(Z6h|+2?pXHPQo*2fyM2tn- zs(HG&c)n-PpU9iH4&{UQK9J(m2edIOr~6Qa*bAyR5|H<xsJ0K`J>G>?x4?K0kl7=! zDizWMb|E>#`2gD{T2&xgVH<Gm%d4xQoS!~)4DufP?=i6}A@6OuT4uJ7zVt<JE=M<S z$f*V!30~N<DH=RPW24Th%VE91&wvc~)!gV?Sn1FutE)}S7b|kr?Xzk`8-!W=Fr@r7 zT0g)$02I5WpNF5@)q7sb1-x&lL~m3xa^-;>339d>r@m)_al1E_irU;L@tAm|Q&Y98 zS&o-AH0T~IQ)Ih?$POs6q4*h3b>H=~+ubhDZZ&74)J6U55&GY-V+8PdY`37@Tuj@z zHpceI;y9VgW~0O&J8tyBPD7Kaj`aJcf|tsycxKn@Dre_Wc*I_%$?IYi&q!1Pv2n`q z+qW|EVl?0Z$9&>8P=#vRa5z~m)PKK!pqbBlTmBq0oUw7JlS^GUtEf)!?%}r4r8<L# z?C7Gul5%???;Mn=#KcRV30Wp4a0N~V*|Ba;#ArSx<8Dv>>}RJmLMhLp+W-er4;r|` zkzL>3smOjKlIF!grp27RYLDf4(&M}<Zs<j4DkqxxBLhco9HnTW%F*{W+D&uzU%$O6 z@9gGexJ=|ldn#}56y>Oz=GflZSPxV$5DhE%8M%y*U?(Q%&6k^1l=$*;b~%(nY)%sT z>CA(4f$=PDh>WB%ESJN<=kqCfcsZ8k@men06SgnF8U6fx&T{*I{cqlp@4T}~4s{qu z0DG(?Cd|Ss>a_pQA3cyRW^~gzg0s}p@WLjppF~7HN|_kN8!RNr`CLD!Q6+E^@cxmd zYRJeL;E;kyjf-aM!>MH-!$l;|HRA2+nl<V<+1)H^&{LG*U?dseDv1>7K+hbsn)=L* ztj~iUY9t<Gu9EVhbC<<h*vaB1xC!)-pPqN+T=%fEonwn4quJa&-2(t=n)<y!klt?O zBnor#AAa^gK79OC{@}O2Cw+a+ojRQ0h;4$)PM>H{7#^@2Ug+goIT8o7OIY?+BU968 zw~$+@<6OvAtu80676C3>wF<KqQkse(&rJ_Jdfm64E-V8BnirpoIrM8;-*_Fp1|j0# zD{=!E{VLxX{lUcM+tCIHNcS5N4bHI}WFG2h63S*q3_7x@G>txf9qOGyzl_g`8QG=H zDfynw>)Pm=X@(;+;S4>P<eZFXa!tyVL~eY@cM4V(#2`Zf3*2_yCMIlL)MrMta@c_| zwDK^N3zsCHG1fqwOA~Oh7TiDs`C8FqaKd?6Kj3UJ=54ExCPjA>*?%TB4sGIc(&7Z( ztxvc%vXPu-e^Wij8M31UoB{xi@zH*TSR9laqd3FyCX7#}^d9bQR%i^Pl!+^${emFz z1WbaZSdR9p`W&Ht&ID`|{2nhhwlf-Xb#jyij*ZO{C12Pq2J29obhN){yG+J&j<}Af z+L93HIUbIk@|-0y6}62kXdXn~YfgVs<StBn2M!49y&$4~LCgp7I+1~EQJEQIz8s^8 zzNxGM+p~(riTJE!*lS9)wnYXxIGa~zP5J84V|nY1yYj0q9?GvCJa!W!PD0r;5*!3Q zo>w&HJa;A|3PV~e%yYUBMqe!4Hw%1Inj}OFEK8-5?C;-V1;BH{N2{gHkmFop+;Mla z&eq#>I+RVlgL7T8+cyu$h({JXjKe{L9(PXn;U#cI2n^72<oB;wUBM&=iYNe|BCtf8 z3rvr&eF*5#$^kC}?m62eY}f1WV`9XQSg}yE<|;)g3Vwm)<qYIbAV&)gVV+lK{NUvk z16hn1WBe@9_qlbjD}!#rDyLOjd|Mmec6LFLqm}G6%2FxkWigFe34z1Jv*MnuTri*D zOz9yhYtYoD0%1(5BrtF8)-#&8uH^pRef@hE^5RvSd&F~LMS|CpT^Y@O=Qs~5(;5M7 zZiq>%Z`|1y?{Z09+Y-2S(?WSwi`)WoZd0XAUoMpxl_jVyuQ`GNa00C!xXe)!f#CzJ zAJIc^tWi0}Ly@QJMg)<;^h0%G6^*jNT|QG|j{Y06@w#Seh=g%!b0~ju1jjd7%!Mz% zdS)-!Q78TEYU+5pS7ZX(uI6N?mNVXV{WEM3dLtX9g4}w4TmJU*ru^lXZT(!KI@)$6 zCpR}V1HK%Q!~pY-pEm*enaO2;M$}|;>d9x%NAmuDUVia%%2GOvF9;Mc)7Xkost)C6 zuZE^@hcbH*(D0EC6jGULD4=9luNCFZ&79oY&C37&7c+TzHKjH+ILI;Hhl2|Ty1+pP z@J!t77J?sLkF82Ue(U{1`M-Yrkdm?32cXW`pMg_J{MXsQX>Tci{$NJH9eUw~>`V=e zZ=fCh$Z`sk8BYBTn2MB*Yv53TBq7A?v>NE6-LeKfB1hY0&4^>^r3qFb(2&&^y>J-{ zis(LQWD6921yz)ICaWRDMpE3r?$woEE{!-f(th=FL7w-f9$fGucSaSN0b!e2%HeLE z=M3>iLnG!-pT3g+<0oIqS+mOve%kDloF}Dc#zT)=FVS!`CTbl3qvP{)ldT2auVc}J zQNUS1BnvVbP`!Tn{3XY>002yLE_}_OLm&d)1p+Hwnfw~$mM8FR&hi`uSa?SQJzr&( zGqG3b*Rq$5P#P5yoZHAg17`xx8g~SD9YQNM1~=iETDw3ZMFAM=-BGa$1S;c&Q*T?E zR4%Y1LGWt<5{@Os3=mMhhf_tS32NI~v1qg4P!j{-M~rNzrq7KBn-Y+>;)ob}r|4N4 zQr>VhD9ggY5dj~qm~|DiA@4uR-wRhl?E{mcKl{~qX1#J4^`d4wk<l5il87Lz6%@7B zcIHX5o3?DxcglnSGOhJ<=j7o}jMN9^e|7L>&A8hAx#Mv6xX$D0l8AZ8Gh;7-*FnSF zK%E|2C8&}i5F3R>DOGCH(&S(c5K}tGB*n(})DfjtdQS5c;vn!#&l=iaF{?Ac{pe?+ zMJM7wZ@wisY1{Mha?Vx()*p1)7;R0X9f81mWh|FyWy3aL5(5l`49XowgF;3GWv2OO z*xL+xs~Gvzy*a(=%4jg*9^xEs_*JRZ8tmmlg4B-}tXw?TY#qSLqr;o>^7IwyQz24< zGeR~=z3<R^c;e0;QRK)+JX1fE#8Bc01OR+Pd<r{;_9D(WbtS-_naOh^WxL+c%($xW zmZpSqE@$JT7+J=6G=!DriwQro+ty(H#(}(l{~h_?{+~alyle$RMS7-Cp&^|vY&^kb zLLb8M=k=7672s63CTR%*8}}kGS<f@h0jF_v@6S6;D&fWY_cSxmb2Foli=%;5iYb@X zCbGR*U^^9mj&lxaVT`<igW{ik<4yVe=_yCv9-lNd;Hxlj$<Rp|&T2B9y}qxwpXZun z_Qq@3RbO<lx5cUjk_L0e#(Wo%@i9$Nms+LBfZ(z_miO<}I8M8}+mM%<nC_^5+E6<< zP(y!ww&oro`9Ouz<G88MvoxKojVuX4Ct7H`?;OeV@u@D*l95Go1_?V~N?{~bWMAlK z&6flY#Eu-sOMF*m)X1qj(X464s64r5EW-?>UY3JKUjF^J%W9xeC`egZ5R`t<6Alt8 zq=9-A{ej6UVw9Li8F}rypaD7ln!WMqG?AY@>#I{N%kEB1?jCNCBlqKH9r<tn@NL=D zjq<7~S-|-^D$T4K0U!NdJ&?b8+F_Zn7+UY==g$Y^76&&m<`J=}h|0m$ai-BCkmt}{ zZ=>Wt@L9%U1n!##_?H)Onki<v*d#F3WuR`Av!EsqDNnF#rOiS7;=vV5?&#lrbv&dV zdUj%^N6cXU^ouL`jdwOQnoV1o++~SK>gJk_%+>Jz@N0+i<4;dHw-4ii!0Q^A1qVc$ zMKwmVAS=&0)|16yI={G*`@0$0*xZ(r?uzAkBtRv7)_?W^IIK0;!d#`dvOrB2ys(jz z<ADY*r(<Tkxxi>UK|PByHZTs9OhhK8PjC#>yx#u9PDyU;gW58Z7S#Flxxp^Dx0Tb2 zNA#maVDw7aND`o1$K9Da>MR+jj$32SfS&80{og<ST!W{Tym@q>POwA=Fi*-F;pSz~ z@5uAhA;-*+akn*NVR@Lm-H~OR)GS}iW~C}yjRp;!*X^h?FA;DCWbRZAF+^nsni0Xl znM#{DFbY6(R^CHd6qhebj7<)-qG&mxe-Gmea2p&)&T)%RDbr}Oze}e?g?j<A9yoOT z%y2p}#C&YMcWND6&#t@io6t8+ZUAOXy44JbDcKocf*3VE&kV}+1nKGLZ|e6@esW>T zVbq+SPkBxdOuzx|t1<rG8)^ftn)2Y}%ETxFkG=BHH_nOG(iG&@MDu&3cZQ(_fDQfL z*=#|F@3V})(*4O;-w#!V#OJsjl?bbrmBS$+c<uH2YUD=ZNGa$9rptsvJ^@Ojv97B+ zq<~|G>NIC+u+kpIdhopk4N{Onf@_}4iRwfTw;OD$;8vi$2j_EqcBKZsO2b)PX`rL_ z;9S2O!aNj=LMt(wV)+*1V&maRGU|*xOk#i$9+{&)%Y5EvduHz0`2b>w!8ga%ka_#2 z%Rrog5b)%u%d+x@V)FvReZbxzaAq4ObZr~32xc<w48+`TJWC;0;#@b--{5n=y+P?3 z``**vYxlacx3f<cPk@4f?}7Dr`s|5pHa6t@AKaJGuuBP3X6X5ptLh{IHc=qcK?-!; zP771URl%wo0?@1hZL7r`r<azIO;VsFj>(gHqo%f}!d~@k+95bNJ4<mYXTDl6aP1Fg z1f$h8plWtHY!keBB&1Un!g};))bBt*4DF&uIm?l`ooXoW-`tnWp$18dm_aA(U@>br zr{&uC9l(n~j{#i>a5aDdQhy)8el+WH(f|qB(RNXeFS~NyGFouZ#iHk5(PZ)x&REY; zCbeV`2xs~7yhESF=??_ZK&wO01sd&o&Py7M5OA1SWsr=E-ctRhCr{PJXY*N26lT0r zpc!xWCWI9ZXNJB9=0u3kS+Rof^!QkQ_j_+~qT)(@#iJK34caQQ@WyPJtsR*V0(w|o zfcUK9YT!Rqxo~I05UFcy<OcvPAp_|zz!Vhn;b8nRS^^>s-_fM5Tv-o=rqDB|VzkO` zW<0U-5lW3v-NHje>)7cm8}Z86_YKvE`N@?>id1NiXCUsH5(2L{(}`UN5?K%IzyF=P z^4|ST@zjB@)Y-f^ZOccGjeB>}*TWP<n#~QFEw(lK>YlCS(aDe^FrR2Zuq47dq9!~P zbbj?%jf;K<koA+<+KmL+q};8&g1mFH!rAPrVFa-$bv6N813>it@cW0d#<&MSKYEc* zUi37wD#+7wHKNO@eDAw?NkXhkM3IM)UO*_GZRvOa^KT!@7cYDA;&RF?wV;c9-WteX z{KK*Q7vH(TJ|%izn1!FKfk)8M98PEiwko0iy#bvI97cj{X>BF-1yP!1ju*`qQ=>cu z*g`K+DoDw#dLmz*&1L3WFp$^%{i}~&$amh@l$~0Z2Op|vsEsTa9>?<T9E5BWfE=i& z!N*U2dCKPiMu9zM{SE{)Uq39!4RzXEB{g-cvCKvQ4(b8agPo<((_d>;i{2oNZKC@C zn%Eg+I!hT&L%=ZJfAg07<wu{%lZOxF2XDVEpPuU4Endl0U)N8K6pTYgRs@&b*xuH? z11i=?g;0h93l}aQvtKm;0KMh%CaW59Zgf}5Ag`#^X~>SBT$->59jjB0N}JJukw;*F zEEOYiChTEz`XHo1=8fT!dbMKx&e6!Saez&W5kHG1$;k1w>p$q91OEU=M~*{|LYWk0 z;1ttXK?$s6J8_h<0Fp(nB@p=6TG$>9$+c4qLYqei-E6&FW*;B(=OoDBsG#*mjVaiw z0)0LEFPc3$+}PyU>RE53?=jKfI!z?{DzXur^>j&x4F`ul9so(;XGhRK1$RQ=vl@XC z>KuXIN`GcNcB4kZ3=yTq4#X^Uk3hTHX<bmE%XH;UR0i2_e~}Q|1ABsiX{%n4vu2xt z0|d_C*x_6dKwV=KrUae^<fxx^hb&PiL5eC}Xd#?6uc%`kc$!6RZ|OhV^7!dXX?J?0 zMy8&E&3dvb1XIrW{@9UYc?c-LSu8|+V~j8MjZ@xQB><cnjv|hXqL~#1%<8)_KvoVC z!#e=!O(75veqoFY&%n9sh?5Wq{NS*cDF91zQqbU}Ua1?>o2p>OxCzEX1e+<n_rPx8 z-q#!35=LOnOG$0(mK>j7seQR(zyR`9*kbO9e!y0(BtHOI56ZV>PZK5?xGQ<8DGD7K z>14$)1f&M%1i)I(&tCBNy;Mb>zkIImHrL?2V!hv`jS+$tys)=HG&q<@aYr!H`ptLW zln$g$(<zql@l1XF*$WNw0rH%wL+ni=s%e%Bp5EaZe-6Pk&Uz+@86bho1;I#vGLzwC zLZYg-@7)$Jn#yfW0<VT^P0Z#j+rw8~w7RTr+&O4aoCs`?_ii-wPNwDQt2Wz2Oia~g z-9D(xd9$kl;Y1F0ssw|gdW4`Aee`0X$aNr@kOs<yRG#+(PP`A|AYf2H)@59^OyUqc z;of5Gc)2#fXtV^$R7!sI(L;IrXiL7WdvbH<o;*~?{_=coqu&^VLpu*x9?uw9*BlqM zsTBl7Y2swUn8;L?F>p{h=7G}ILXBxcbuMJn>A-36zJ`nm`xz`j#Ws*nMmK}w=z^on z27cp^h93w0a-xS|uwZ`(eXR>!sAm_*T9+It0D==zujuD5z@7#;foDQxrBp(26!c=J z8eMjqnpMFG+^9*|TS!M2?Peh$i`jqtsx5!{%QG3x4IBmoP*P{5zK53;!Z4$8EHBl; z)oM8@X@uP<XIPd=g%;87ZRDkz&r<w@L=`Asc^0goj9J)C%M8D_i0Hh2^<pUB*M<K~ zoy4U^f<O39gF-4CuUmq|CYGrhhI%8EtpaZNf`lc=cII;nV1EA9S{<*)-U?@w)fodv z0At!3Ss!;YpHLVk0{!j^j?8oYT~k|XXk-VuO+?}e5t>WR?cdw2$aX0u-@j90h7N=5 zMN9d~7cI?NruwcKd44gLU69<=@(ilJrBOH!W3=KkrDa2295)?Vh3_=pg+P=oUB8qb z+DxL^BxHC!J+$SD<hL49*6gqgH9dWw#d<>LQQ4|$q&{cBhAIolCQ!!yPapn+{PdGY z@<0CPza=lPma@C6S^cQNRs-lpd+jF4WiYEdgw`>%mmQdl?+lnC7{Q{%SlslVPJbY| z?Hn^3WchIT-Cj=}-cU1@9tj`V#_&v*)C3ePKn+48SRv~hN8(Z>VW|LQ75K0Fq%~-H z>p_J83x2MqhK8BGu7B1~)A*vqihTtSH=9b)%F&$~heG5ebBQ_zvO0v})OFMV2BH*H z+w%-0gLVRYvM58Nw2v~j(>xD#KR{eFq59mKJ#iXj4Jy(}iW!(`s~dlOSB+s?@8fp4 zAir_<K#p5IIaWiqcC+trNF0xI$Y1u9^-NX^S>h?kV7ClNos9KefNIzwtr7lXJ)!9x zcoVA{gjPZ=YDSOh*0^Q#tH?Hz_1wlVQy!fV08Jd9M9{i~ut=Jf6)?=<+*4i7aWp`< zWH?%r<OJYBkj5aO-Kket0rWuqtk3xPRI@CUyMZwXZ89L#OngCRLu)<8`gem2`p%ji zMhlq@`vlm6X&?V&crVNrlD7kG2q>h5@_LL5#y^Z)#m$YZ`PUN*z@nsb4E7L&p^Q78 zj$bn!9`5bQrUss1G2GFBs~gQ7^I$+*w3v^jhW3#@$5r!!>}7sN9Sp#UepUvZ7EAcm z%01c9Odf(m%eC>;<IIJwee>$FBNvcuWlJPw2z@_(T~g)@IOf!2Le#nU01BdQm`&Tb zC3@Kh`&D)3m>>w4#gm}L&yn>LS#Pae)udoW$A<U7dB|>+#nYhcT%8{>b0m(38=%b1 z%2m;qtDd!@E;Sg0?C3$G%rQQ3VnZm~BM8C77OFp(M!|inR!SV*E9QN9)tM8ak2c4N z+PAtsBkai5=C&lMy8QCNC;BcYa`#|c_BN|*#msaKTfHIujfsPKtX3mHM#;OO?}C7A zPPIA9v@zj<^`0(5wxWU2*j77=;0U5I1Yqm=YG_jT_+^_d159{<Mj7`XRT?s}s$E0X z;PHzy`PV;uPxq(K(a~OiX$XDTBG`(xM<0u-0hB)(d@YtX!4f1(8tk4Psx*p8OJjCI zd1$20XdYT5S;~ahV|rq=1;(C4oo^=tYFxvfLlnjmg5!5>eB&55dwAB9AANEmrDB?c z`JQJW7-XjVJ7vwZJ^AoqU#79gd1y+#`i84Sg!tfMpjo(2KHm0tF84MI(ylM$+0{s% zw<hw7FGY>fOg?=zrm`CPNC3X%=%`~pH?nomzakS4y{Z%nDQ4}+JaFjSx_EsJKAxRT zWUroMWDovsqR2_u01a}V2;dmyHhn&zv0GPt`AU}Z_}Mu#kq5tg#hH1e{ve<U_5Hh( zg)}Ei&P}rKr$(llH+CXKpuPq`&rV;lybH~7^d1)ui49QN)o`H)cg6NcD$H8|<(c*q zfGNlVZ|`qV@v4>!*n>>#^OZ8&vQf=*EF+&%L!<k=S;)!fCu8>Szi}f^Ou_S}W>K1T zZfu1VgGjFR+u6T_U`0xP`<-oq7D3K|Yzl`Skv4wb)5HDZvL`vc05{({lrUd4)x4lC zoi8u+B12&>OO-P47N?LA1G=l(%9Hb!{J($uk$m~QshN9Go?TAl?>~P?W8kadzG`>q z!0#UHk^JVo)nw2^MJ*a13m(xbfRn9Y-nCL8+Z0AxFx}B?w>T;W=Yif7l(leCeDt8v zFLv03(2b*^hfanz;3QTC{t1}vhOBCFj@!xdqGJL=5Eu_+*ZBF2>yKkREbDmTCqSu! z>)J`TQa#Us-3;g!krP}T(C*r>#)+ZZ@m;<(`pNljlChQnu#6m9ue#ao(-_equdcy8 zC~q&Ac@x+gSm0t~s%g0xOo?sT)-!NtcT<C^E_wRbPJ{hg+ZnBhHE4SSe2);t%{#w9 z^=8U|N}MQ+Pe7OkLU|LQC}h#sof8AG^g}voa^kClTcD&mGbOysR)=Gxi+PXfM!cHP zur(@>f)3?TTZ3Ian)_lPzU_@Nd(lV^_O@&6wPTs!>@S)<-LnzLX4h&&=Xzg(e!qX~ zKnB~J%-B1fOLf$`r-d?wM1X~WC<$6VOWMSk1URTnrdeGvrb(a_$o7UT8%%|noB=hh zS4lz|Tp{1t%+R+ah<#D;X5<aS0ChNymAR_Qvsb55$iKldG1fMn)w4CTi5V7b^bYq2 zeFlTWK~F}bzB;o54LJ8mi`wcmB?*ffEceub?UPFN?5a)hTI?iOff8SFo_k45g6*;Q zx&mkSeoYV^IsReJbp1f>4SPDB#~c*~2n`jW8~gY4-sNR~%Sen+(ZuH?yG3TY(%=E) zFbG=V?5;Gad-wJhs}2C^!sm|{3C~1#FsA)8!Xs2=@@hAHj-?^cMg{4-*{0qCDq{%b zP`NSrZejH{pRe%Do;C+^uu*oxKxqx~N_uX4a_81Psn;4LNjquw)y51>iv-PLwc&x@ zg{$_2-;Im3sfh=^x1xztNfW+KALKVPR<vLPdul`A*RC}aaIdOGur=a+CfwWM2vpQX z2E_p3!B1jM5D2w;16Bl4dHDI~#|)b8-rQ%~wpy52l7Ivo5&@wJHBku;cG@$dE)TXi zrG~%X>&oAK{8IkqdpiVSb;b!%w}{?m&@(>m%b7+GCA5$sNa27ARyITVT-cumt>;Do z^S^mI&JUmUHA9=p4ZH-v2crcqR;?7u+xtb?)(eVq_Hdk)gUt%dCNI^Pk1uEJ8Aq|% zHh}A}K$tE3;-p8I|4WVT|35vP&F-8Cb3{jDbxgQ?D5rWXl^Yurfbl6O)5m53WH9w- zFA)9A4JivTgDhxCb>pFQ_JgnO$anA5<$wL_V|m%>>36T_3?xkCN*(Lz^D*_+(PQp+ zrfemAaXcgI(%#{Q{L#-Rk`Ikwzp868k{kgX#}`w1(wfV8drDOE1pU*suorZdj-)?K zSSjh~L!a~)3?|BHkDBl&O_2SI)6g|#I-^hoRisB%p$`tya&NEV<_L|&$a9?exL}Vj zhw|0SuKdey+>kT$ZO%0V%&4&+&gEjbmf;r{a_>e(FP^np#LZz-J47%0&URh4D5?=4 zG<1LwU3WOZ`Hb24c&1MAVNZ&i8R_f3_h)TsHCqHAL4pwFqMDusWKf%G>_7bKnLIr0 zXyloZgWVm@YCb$|Y8F@I1-`tzWdCn}XG@ONFyY-nIlEjLCLv&-(qnllU{;W4X8G#s ziiY)YcaP6o$mMPRJ2Lccr`t0C8l1Y*_y(evATglO)21tsc;ZA~JnLt<QdM$2W$bwN z!Ndm5WH3u%_0Y2eFa|~krTYa@`i5|(^lB=64fwLr9W_qK5Pfr!$Tp1$&KTHG+C`t$ zj7Ds|xRuE^8uMaeoaPRkmsm>3wXx$6xj4aqI=&dSDZ})XPs4)Iv8yhGI4bh)(Z0N` z-}C6KEhicrp$h}D8*pR?eAgVua8Oo2IS?%f;2Tg{Mo@)yrKGY44fGAtlagy*jbx=% zX4bP>TcrYe4#>75M@5akc}CBM9(mFVV>~We_oP{>OTAjsv$*64T2pNL0-0X{&lLvL zcDSxyc`Jwp<#`v#t1%DUdU^8Y@dZok)~*q*XMli1QlzIvm69W98mwp3ID^vzZ4mU- zmx-|jqLd0}g1{UZFoa`#?uCizAbyX?ogK4R?K98_*c$N|OsO*%b`4eUC$IV8QPw{> zJC`?ZAISjP0lNR<&p2YYCfP_t=0w~*aDza^X0ujiMHOcqYq9`7=<-T7YH!MSzwv>z zFOT(X+Nnib4>sDUeHZ^fSMSv%NqS|8U3U+yW$Mb3t<l{;55x$=aF#=DMw)T?LZk7K zKZL)7FZ)E}1C6%(z}dCkv9Z~iAr@$CqZ>f$(p9N5GDB+*cjrCleje3iw-vfjm6;LY z{`r+h(5khbsx^vDNx;zAL>`+HiZAKEO_+9h>14_L1JFDHVvJ|5H(1KI&tB-~p7QMC z{^H|<KD=a%%~9hY6Ngr<Ag7mo>DIKH*XxDG4Qo9xl+5JF6#X!<=xFlAHO6z)()R%M zL9A-vb3UC-nOL!Yz*Go{d$$I9aaJ1yfC4jeemi4)$HWl%1AspOMDdya>`#71&}{$e zxm;YHu|Tg(^8|l_E>v(b(f9|~5qKGhe3dIE>5BrCfX+gZ08w-O%kZ@lS_fz4^<>7T zXa=is2*fxQzXGu-OBQ!f5JWKuR6cM9zy0b&-&ckA<o<Do)N8C1x%P7+S>hN{v@8dv z2o1Tfl>_J_I8R7g7^zJ)(S7l1DChmTj3yx$`T$NGcXQ4x!nzX#sCV}&6nbgbauf)G zQxj0!m*Yr&`{H*p$F2!L0lg@{xT_sNJxd@$DT@K5CUgyYuQBQe$=-8216GW_$v}F> z^F;jn-FH0(uByHUMr1f#)q0WD3mnXVJfF=&Cc+H6A*+b-fCKRf6NZ4|F>9KbU;=Tp zQ{prLV;TJUfAR6YJUXmO{cc0%=L-g{J^kG1<|k0K+hjOWeEfZn1qAH=5Fk*feEMBq z_RGFJti|&6M6V-^G(2bxvzKOv`43-XH=C1Yr)xB`#O5Buxh0xwP2@nrLqz8fFGuq8 zx7$ROK0P1E&1l63$tWZ?62`&6Ua?s8<;CfR{OxD4bpPrdR`mF+wih%*0o=QH4{GwQ z7DoU2v)4qgpIuMnTJJT5K|<qkKYKZld;4`xP>6JedQsx|w&)x&f<?!-M%BKuQ8l_Z z?LzMzcI1oaSMuG9v0VRAJD@cb#Png%&+%XV$)Ws<zxhI5YE}H&kL6o^SS}Hay@~t} zzx=tp=#Ayc7taX-0<spPMNo%O4I`=2ynrfhOHMGd4owa~5>UFRmciYfIglC(89259 zJU5z8`R4$&fcDbYE@y)MUM_D6YDwboATf(ebRH?CM*^qD78^p{bek=)!=MFUZ|Ype z?=Esjnx(cs-VZ=TJsPW+4I=_FUe|XZI=Z8gRpRlpo2{x@)#5!t9EOuHB=gwN?|}oR zZgprAqqMO|*f>w`t#`V-nX<*!jWPK<QJ&QH7$ZP(()Hg<?UV-Jyp+40y0jr#eAHoK z48$(F{7NBjqBtmqC;(z3R{*s*zV^UbFA_sRXFY8aZpQ^V=+>w!a64JBkiM8qWV*@9 zC-+P8?|$_ay#~mC*G?4cn@qOE_X7m{>$6+gS<Unu==+#zR~6(8lv?V_dN$%p3Q@)9 zG$qSI$+WX$jyt2+_V5rjDbQ?Z!vf?NAHPpo;6Hx*ghDgfa+M7MCU96?dK=&cRubfF z)e$+qIi4y^>R8}K*8KvpPwfI<6IBW0;u-HtlCCD5BOtII5y64xEEu>VBz7Zuu5$F+ zfZAyq_b{F*Qp_o(X|fUMPZ%e0j$l@_hcy<itwT@tZhCTYRg-rgK9DcIc`SeU{;AQ@ z663F9Y>R7zZX0GYm^M&|NdIo)#Bx|flB(><3tGntO_q=^&_#of4Gcj|V{yK4pwH%l z{~zarqFClxqd$Ai(LF@HzCRhsTX&k;?M~UzPZ9HGXb6lE03ap`&YIqfZmT1EofbV4 zfaJ&ZyHjn-PwHjb`u0Zyil>3TjF^sM1+uh|nf+sLL?rqr`!zY~&6#jn!09=Eb#}(R z_*dV3FF$(cZF%_ik7ajvM}{}2#D%1C+<0Cwem}ptk$?R4r?R`VL*>3!r)|Zlp10G> zYg0^w5Dv_o@>#wg814|e&?>WFZd6Su=lMmSaRK{rtcXy^fZL7&3odeF=Op>rH>a|% zO>q$}jIAnxqw{4#V<%2^V#BjB9(a%x*YYa7p74PGXMb|caWf9n?Q|&r^i9w0%2DZP zH?)Y{=+AiB=(g(m;-9>KC~xgzJdu!(3)2%wxs#Lykk(kcx22gkG_<qb<jvKoH!}_& zM(qpzzSHX|zZPcnKIeQGd)w&Uj1PQrKsg%KL$ap!xE&UBJnNOYmNm8Nn=c}x96{za zFmT6PhXp-wc}<ivsn-Jepa1em-n~;7Uq9o&`1|KPQ2+GZl^&8r?(aU*&ebZxQZXa- zx)v*q904DiSJ)k0%}gx|V~YM@Y)JWOEDQZP?>;c_2Hu>v^{vLkYF@Yi?x0G<_z9zw zA00QOT(xogr6$2C#*!!^7MkR>gMR0zssTo?)gm@a#mJoCQ0<Zy1TM4Q+_Ap7fB(f= z-+xVh`mjw-J@$?GJ0OJ#6l<5{uRlJNfBCEDa;{xFf)KD1P{FHbHF@Y^xg5;&^A-&R zga;a2Y;-QM(H5gzQG?Bt3Se-c!pLWdDt)w;nI_9flkH7^Dqq1hYXPm~x-6oW4D~V; zL33IG_%)WVpPh30^56aG`||I;K9|7^*IPRx6l7YxQV}f(9PeC{?Rd;!Ms&AlRHKy( zlHF#5T@#$skhHPWgw!Jb?(){g?i6j&pM8GaqY~M^K9u-6Omk@7u`vl`+$$uhA}vjG zrlp?Ax}CRaqoc6u4{oUOjt<Xv-0n0{1J#UY2>?BGQbY%@Odb_K7exX-*P44djFK`O z9mmcW6-nL{?Xuhho0RI3{~z}?E!ONA&6uJW=e*YSrY>+1cVfQtPq48#owWjgD>RdX z6{+XjwJ<Yr+lOlr{LRUQzW$s69LQ-*Lz02*hjEQS^~0nNC}Oy30V#cdx1lj4WRhyI zt53L3#oFRT&%EbkXCW|zg4&Bw{517!boK3P(1UB*+USZfGl3mtRfBt8iw<;_!^y3l z^?}|`vvJ<jfQ^Fw>f(%_1Cu*gx8m8Gt`h>ju(Rd$^2~M=lPFm7g6IC}*C*7Q=X4Lk zZF(P4%rkcPaiCqK#-?JXBzaAjMH*~qY>TZE#i%!oR#X==oP|e29H7?Y#B)p@XBF*= zE5uNAdq$^=w_|zyebxacL%nwcE$BMUx)pm_NP4fhOWlC|k^lpwO~TrW1>lYP{Tr#2 zYqk;-Q%L*v@ppRWN^<w;j*Lcqd2!hnGwd@FDio?nil0B3ZWRb|evq(@I_ZpOoFG%B zWQ~j==1oTdIF{Kgkxr+i9VfuB=52u34D1J*C?si2Qd$+m{1i1lKRRm5e|&sHt5$T+ zqZ7j!;mmhi4J`t92}VN!bgczU=x`;Vo?TD%yl*C2IEMVZIlb4dT3LTqjZ*;v)AZ{> zg*)i@M7f__^*NcTm+SJ*+wbyTygEB&p@-?o&p!M>+Rc_cefAB#-hqQbu?o=eVShyZ z`ftDg&QRzYcL69pzI&{VW<y@Se$8YIJ%u(XoiO|Y${k{6o=|6gs?WvIPL<R@0H871 z1?B=+oR$_v;!KJV2Voz4aWf_B=)r!A;%{)oTg+!#cxJ7r!YafwQ7pqsz@<$CK}BBx z;6?-^RIE2pD=MPHikSI52L=k<UM{88&|6$9n#soY>jA1!KemMGW0&Gductw6uSEXw zC<IzBLlJ%`!y&+2_7`$~JJ$-##v*|R#%4J~^dKJyj55G~&-(6RG>b%xHBqUcgC_uG zK$^cVULUeryTDGJm1UfvUM|EAAf|$9>+RzmDK!CF(@JTQk^U<UnwW`|n&h=UJk-Rv z$;;E;MjjP_Qq}8H(&~6&l~*<co@Pj7@8?g)+_z!Ri(P!9)s=T1>dy)FMr<lfmKfJ@ zM*}HF=LL`5F8;~qSLQaR-`^=}lAA*IPXmU2&XNX^{ccgKx-9oRC+B^3qXZ4D-0llT zF^M@eqbs_)>Dw4rJJ`SZ^szKc@6h}NC~fS+7_1TG^&UUkE6YzFwe{x?$bpC6Ji7hA zc&j1*>UWp2>S|@Uo|)V!4o(*P@(p*lc-`S_LgN%9&4qRoqCr2@|2}zsDxaN?WoM_u z@ocBlkSe4$_1E?7jr_~M?Qz`#;L&%ldn`CGj(c`9lc#4_M9kuF;d4OguU4t(xtS4Q zVyJUFcL*dDc%hC$j!6xj8Kw;NO4))<F2e*o(GH!S1sfA1!RQwqC*(u#9PH|Ox6S}# zZ3I<31L$;-=yn<{I->zR8uHl~S#s6)2NkxdGiaeGN5+ul2zuzSO0H9!yQu>9^8`U* zRS>S3R5k?kg``^mK(=veccfWCkxRb^{N%J-O462FOjsk8koBFdE~<7<BFBvI+3|8U z5O22A2u=xL6)X08vtNzrk{EbqzZ^R&TG(zvK{5x;YIJXLz-x`<jWrw!tCn_4o_1TH zyz+U`r2bgXK!z)W3=zpla0qPVUFR&&(N;4sXUCmJLE75kZ#*kbu<n2{8dSrY+SQ@k z>uIvW*}EMK^gR?P?HuSe=ynfTAmhC?n>E_=VmFKXfHRHrGSvdSQ7bqat{K#H+cg_` z_r~09qWJ&$kKfaCI*`{IxR-Ni>lc{lL+#kXJX>Ho<%T2V3@4`Mg<^R@l{%q%-eflA zG%1Q!MC4m3WyL41HLw*(=8bB`K)7Dw?0}5gmdZc_uLQmI!rl&_Yu=M=fxh;MpJSJa z{dp3<Q42(;NMLZjDrH~)u94?NW;PwtAK_;oJkq%Ql4$W<CUAUvvkAs?c6L29g}hiC z3&8Lqh<~XP2JRsyRak4_dX@{OYYyO7Q_n-<)twQHp0CZ6^tQG0roglP^!1!c9*J$E z4IL<6h!KyDy7J7k(K{wwFy(;<I%ZDe$(*v!P=Tw_cR`D)8GPPBYb|m_ju!B}yB)@* z-+XzlpL=ceK|NEiuO{?l$GPMxb`A3tQ=p^Nv|h*WpFWe7{`aE~K9Hm1AIbRkH37}Q zVWCF&<o$>8(W7Je{^f;y`TRn@{$?ikj_*iig%NpP?r6~j`QEH&B2XA<JUbt86+$-v z&1Jxeywtdh+=#ghraQRXXgtA32i6DFa%kGqgF^GjaB8&MisqyqghQyIVN4WES~iK@ zBRs!w^~?+hnowsD)d;0i(uzb6;z~PRph#g>68N^SCQmi8y&}FDT@9@AP;Ef2HI5Ca z;}Ni9n$`fAK`IdY_Q7%^pTFvJ?}kJUXB-^j(19+nV>r-cveIBTS;Z8D$+}TI4g_48 z5cD<<9EM8Vq%z^9t{nu%*Lpy*1)sts2;w^}6ZU`ITX5w6PD=}ljmMyOqhH@&n&?Hj zTIGIZXQ#zZ=kv>re0eoA<Y%ESclWFObG%=0!~uFhFe+%WEMN~67-AjDHbKzPq_C#V zVH|l3sN&S0&|QmIWjxZZdbNa{VoYkraRZ0j;|?AVGeAQaQ|@Z;xm^i){DZ~Pq;|QZ zOM|daz!-um1HAqjuI(4k2lC(i>>f3=$%RGb9~ydpuGi+H<GQ@kBIHx;kVoU0460Bk z($1=um%sh=xkl6mtr+p1NBTfvYz$xxD1iuqS^ey9@7D?ZI%-4n*rNg;e4cLyWA0Y* zz_hAm3H6LTzr3a58v-%@uF-Bw$G3zs)WZx~m{7ncWB?HwIhd&p5!FBmXU&H@wN=FV zV26sptq&u$xm{;(=O*Onl12{h94%G@ePF8k5CZ^HGvgAN1eQzYQJ#gIZ!C2^6L~G- zT17o8V|`B<?L;y$g^92;w*X~IcAj%7wDEkx@hIMJxG|~=?h!gZL%7C7uEQ#HLtS`N zq}w=ymB<Oph;O<BOD2Gg<38JS7dx>ULsBPB5iD_udb8c}o4&k_bK^H;cH`aCl)~@= zky9N^&1Q)9cRJ*28dlh6h%`t;0yEs$&L5iJNY+?0;F-7Nggvu$p4{E8oliN9FxHf7 z!T-WkMO+6<(9_jGyQ~rs>qec`0Hz6cxyC3ulv^#7HULp=Mp`fx=y|Z;YHH!wH0413 zo>FU{393Jw7@t1g@cFNm3tH@zcwMh<M~pdLEtuyTXRwFPWO4+mJ-rxgMSV5|NS3Kw zw_dJj;Dj@kcRY0jc>uAIe2ayO-rtg(0Ektq5Kk~3-)izJQjIKQa`Gk<>wu*Y*x8P@ zagP$i-?$mQY&;9nV4mPy_O;of7!f=I^f?{e_IP#xLX<e;EUaUCjUPa^x=_^j9a0lt zJOfl-4W@FS&Bx*HST40$fCXu4Y&3GtjW7v%@BY3O*kaT|ae~A+LnxlX)Ir12fT7PK zbnCx7&l<2VP<o6vWrESpE}oMGg@P9VIC$Hqn3UDJO~5fQ0|2~1a{%2ZWQ6Y>9x#6R zWO{7a$s%{KJN0c%g}r?xZ~pJRuAna7A{LHiznRtNSY!Nj!}E@>Uv12-lZ*psOjIjd z4TOX44)6P5G?9P&^>1WvcTaxw&Li>GeZAHfj5*Ivt|&MC-orcE5bVfrzj`j$*B7#B zbf_J$)9q-Hxyyt-8Qs!_5a+VYuG~BzFk;6ug~p)dbTnv)1&#h3Fb??IIddm0&+%EI zNe^+TOgYbW4E0AyGc0hLlCE@Y9IyG|>E%SeIUCcO4>$Sc#Yi6*y-6k5i^IxoBg-Uq z<0B!3#uNkK_=5^illm;r8x>^iZ!=!vtW%9nwsCT+x8tRJ{c2>Lh`xc{R*t)F(-V)0 z5<R_LvoOGe7c%g~&QI2}y_o(gRf+~+ag_=x<$@-~M!m#~4|FJKHP}~#ab6#Ssq`kH z76x;@kQJGP0ReI5)@5T++CzfAlvp9d#0o%Bk~j&(#7s}L16?dV24Zk7LD}&AED_F# zkU&KvIpH9hm$V%~pu?#!=7O?M*+!p%s;q~xUaV-)TobSYj_q<`bSK;_OeFyRx`HZ_ z9{kXY-I7$RWtfdDT@{}SVd(FE_4TFv;+;L&ts6)RKTBVVyP?lsjY$n@HXHJzw*z@K z2Fqbh8V0UQtCW>X$jrte)dG2q))7}RFs(4J=sY>*XZoHF5BKyM&!sotumVSwNp8Ic z>WjgQpNC0FuWx}|%PbQx-e=A;=f5OzMm3x$q#!R__u$VV3u_5F;PfEvPVsZ{6zwpF zD~>YB*ET>Bx=s8n<TnVe;Nhv{F{Z;f85-q9CR^-Uk)-j1P_#TfpYU@-TC%Af`|GPK zd2!VzMGOx=#`$~?zQ0w3gCRq=Ss-X~x(tb$<{(Hrnpz?6&YI(TM^HM;QdN+E9jpc% z*BjF_?1!=Uru`}Q-~d(mIk%g&c6}4M7R^mJFilHMVECCO?Ew94CurhAd7HE)&SWHG z6f0V2#&(Xf4rxDgo(bsAs9o)l;aOTg2Kx7*xsuW0FLt!Ifc$;z%u(>7)2?ZEJz2&? ztaqwe7W%8T0fu_oSYX12b8|8t>DgaV#OV&04*FV+x)y-VrkQQ{dC8X=yzVu4Sx<&^ z(8|-RAS0dbfnNJ()V=V<*_ry*h@i-s%@({C=y-7X7Rv=EeZac_*R$7d%AbGou{=FJ zk--3~l{vZHpsm7EHwHe3@i37>VwS-uV8D2QuohM;NZJ&Up&3iYrNe}i8@$JiV>V!# zl|*mAaU6ZaHZC%c2^#UN*L2^)eZrZ;DyO1FM6R9ir^Zg-9}O7B#Cy$(42A>Q+v&=1 zhIqE(b6wHrdeFa-2Y2pCy|s{k_~J3;vQyVM^LbC$^(SsELoutsrW<QYqS|^TUF)D5 zrBf!Qvc<83G-m2+9UeTS|3a+qzmP3(#e~TXi|*71K%1I*<ntb2!uI-lBFDRJEtvB3 z-7wt+6F0&=f~sA{>E**{XE6sgv>=6L$ObPH<e58u@^(jl^VO*g$8$DCXiDj8k`MSy z;903uv&6zcKnvFwvHYX=-X;AN^wZZE$*&jk_M?Z=?B118|CG<}i}M@JTXnwQKmYh0 zE%+xI8xeMkmSC~o(gLs6+|zSBk(?|HAgAX8BYecKnqT6WeondR4C4fZi%=B9e*tUk z1(^dvC01nJ>;72pJ$CL9pAAe23%L!iC31`vC)#MldLI9eU%lk`8xP~1Zb|<7y_Qxn zdHFv-J(Kgnk~c9HORS#rRo*08eFHE=NyH5SC#X2h|2i<&9=8j}P8izRK*fK2Pb=%{ zjH3pK(BK+e^_Qet!37Sx1JDjo0d`v@b}lFVC96X=FZw^Y!HD}+XF`vJfKfdjP$*xy zIK`U}VT)3}F1uQ-ML{H=UFnA}7_G$k$JXUxBo1JQIG^0K`%5C@&2wzI@%SEql*jvk z*KX=94a8<4W72^E_p>oI<SGA(5sDb757(rSH4tE>7)ZNO(1K{fhuMp*kQvTb>|7Ua zTxA`O0iaMd(_ADm`XENc!0D_Uf|wv7&k`O~{{HRnUdjLT%SSRKurAUhR*;eY{$j93 z@5P<y!CqU&Q0yCO($j8WH@lGT(H^@gjHsl%5Ph5C%|mJw@9$=%MLvH{5A=))5sF<C z?GUE=o{`K(@Ki48b+6}5JAGl}b94(!7ElSRXLc^!-K84$fipu%wji*?=~b8MlRV@1 z`Ho_RAcKUSp*YNp|HW95mYP6_0*JIWs@jr^N0FnQj{N1vhjRaDM;clvVc&|MkMSY7 z-1?c%E(g+|JeTEsEGy{j7i#kAyvK)~<8zo@fQFLGxem#8=+$yX?sqE`Z~5x=4U;l{ zHtj@Xla$=BGLNOH-CXMamWy*7n^K-NG88^`e0cwu@OWu)BWC+pM8)l{4X!KH9G9Ve z9SvPl;GYA<rN56HCL-`HP;X4+dkZQI0#k{j{3P#>jVjlAD{5LuBT=XCCBu#<BE8WV z7A86aswN5m1a_QFcp~KefaWWOLPD8Wvv0M}gYyj3H%7m?Y(mAf#lq-&_xD=l6d!b( zEVQQJ4eObQMghl-NR-i1yZfw^p)HT8i(Z?f{eAiR`zJgbfuo`h#$yM3in)gA&m+oD z<9b4@sne)x!JnZX019$YM%U|GQtS}V{EctaTBj_zMj-`xSFTC|-YX2^D03Rxgb4oZ z9;-?*M>u!R@%)D|IP3<JG);cC4*L6;Q?(%N)Dyc;wB^;aIn!qe%7~DK4P9Z$qF579 z6c$Kty1u@a2gk=$nZx8`PtQE4u(y5fI<;tmx7-6Q#2>#pV=)bSRGfnNFnygF!-6Ay z#3s-F3v@XPYu}ZM0A_{8h@yZBt_P+NU}b0`Z8zHT@OWRl+Y0YDk}+Zct`8<qJm-2} zY1l$LV4DW-b!&1n3Hh8O-l9nAG|HTcjhz@%S*BF%Tx@LmgyIUta8=*y&whF=Uwm^y zfE-}0ntJrw_<C<w8bkHj)#3sT9&|#0Z$dNB*JO^>4zB0jgFShEav~$WR=@x1EA8m( z^6tGu$t-SUs4)`L9!y4?^{U+6>u~Lb_&(OR_WbmQg#zfDjn=MSi<#WqUQ$10p^X}- zodl%o^N)Yf$-{RZO(C8+On{oz3MYNg6M+mbriZ1RDLul>3~SXnOmZp}YqYRy*JtQP z^W6Qz2a>rSt>vBLn!LMTm3=tWXh6PN82_!F&)9x0vY9<^uImPEtsax2hFu3mDLk{h z%MmbxF_WjA_e}oydcZL}k`=&R`?Z`rznsXk>$z6j0p(=(9~CtCW#n+L!i0^H&R5R| za=Yxwkp@Z#Ti{hEf$a$~!p&?lPN^;=8k0y~XH<eDy}R3yhF+K-zjwzTCJHIoUNTJ_ zw6J7{oi+6<0I`r*!X?)cS2HKH!s^s~q%+*5M?}73ZNWt3e4**T<J-6s)gfpVi;W@2 zp`(xYhi(=Jsau74OvE4q&GE5TtrNZZdiIF4r;rI%waiWv6M+sCbo7C`(O_4~7rC$X zq5bTeBbe`uZ~(UX)mInt!EswYd9*{m`CJpltHFZo06a%{-$))A?*478h8=%~I?x+^ z@GF|o>jWx&ak-R{w)!{v=CVLWMKI%;>fgaya>c?e)Pf>gta40GFJzaT2-<T0AOK-p zni?UH<-kHQAvliy(PFAw?D||+iq#Hy*?v0ej$&tk5^ndyp4dK)+;Ikc!($Ll4+9!a zob6_fdq0f2%-_IR0ipA|2BN-DEZQC)3UV6A{_x#nj_+&Lsws})XM#Ejr4i4}Bj7BB z!T~FWgKk?chja4a&9-;LzzpFUAZ44iyu5$^K7-rLS*^~r@}8|0yq~}vkmki5d)66T zShs}0$<LKB76uAClSnmyU266aCB~58^%Wbl8@nWH9l8T>;{2Pnr6nFp!(x0N89oNz zi$aP%3+tGBO2e?^^!?cQ92S+BaK+A@4EGJ^8yfMM!~wu!n-`R|n57RrwCF+SS(>JG zE@v)<?OKsVIg0!H2Xz)?6-*AbJN5PKuBm~t=6D$s8-UbcNjlf-ha`?zu)Dh_*Mp(V zrxV5n_;44(Jl6<l5NJpP;3%{s#;{0T@@Ii62eBV0xq(9X(R&Z%)ycV>om{ZbhJ-Xu zGW@VsUcBWs5(9vuabw~zNN7mbvAeE`yum3FfSANC_E^X3al+}bu<~PZXl7&oB-9ir zvS`X@^TrI&SlDUQ^&VZ@G(;0xOt937AXCJO(~EOC+`l71v8Lafl@~9+l*r4I;`Z*t zd(?$L(4+^tWrod|+sR^mp+)J*)o?3zLPipf7yKdeS*M#|xCrpZ!E6B9pUoE?ATyf0 zs#I;m`s7rbM%cq5aV^&7LdS_zXzLNKKms$>fh>2WG}W_EGCz3znJ_cL6!qe^&q6+% zEMx}l`AnWk9cC}M)M!GUk2mta|En+Lm%q3xk01ABFi)ueU#sNg^lB`<0VJ;jQb*As zQZ81LBN{tUTuWMj18EKb93BxQ{?oGyd3kasfBNJ1wHc^t^1o%=8Bb^Cey7PDH0oj= zLT)WN?JZ<H8IfXHYjp_RT}^N0$@3HD7SB<^ms%}@$3B}CDW#3#DC-;+5ues<L}KpL z5uTu`hrRqwf60~N(OVta?X<YQ0Aua$y#fWDGXMNf4>VB}wE|huVh&bue>@*jSGL>C z$*l%)P!1Be?;+*F;E?>YImQ>Eja~37L)vQ0FN8?UmzvQ3x4(PEgz?^SQ~sBK{vH$g zhZ^*zGwf1ffu_MztMt`OD~@`OU%Q#Y>^-KBG(57=t%6#!hGW}uW7M^9v855AJAhRn zfjAh)gAWxXl#3;>fFdr@Rt3%Y?*?AW5{PFqxaJG2o$F*EwYFC9#TIwk)VAjZ$Lq#! z++^r*AZx?Op@tLF@TNC6$EG0@EZ$QtXPV$BQ1JInjS^oCfbc!0v~69BgnK(pB8i82 zc+(5_w<ITdY1e9iu}Y!H0Fe!{F1VOAXyQ43u4n%0|JVQXRPJ<2v~fk%cYZt7YoXm? zF=s)2BTfk`BiFY>IT_waaGG$+u=n!=Ns4)Sxh_e$-IC3)uLpW%s|7v8W37H~v^>Sb zfuaaIFC+krjOT6?4rQl&zPQyjKw?eY=q}^F)_1H5b2tk)TD3i}??77y0s;q^PGY1f zZMJkR{02do<3ocaIr^7r-y^VlzVZ2ApI^%Jawrx3eASA9r?y&&i2={B7sZbM@_fdw z(p2I+PL?RZL0VbFWEMCOROm*JhwZ%Vw#r)hSLJgpyy&U!L?Y6O5DYM|BOB`9+eq2e zpims4llL8E6x?1S|Ebg9zmchRf;YZr1qpfektO`Z?PwF1<Q+uIbz8QwGS#VId!}%G z;10;^<-gH#AiE$m6OGwoP4qL07f_pw7Hh>WwA$xur%dT6Y#E0m$v99W^(+=^7Qxu< zb6OJ^#(+X4nD}YJz_WoV6~ICO+kzL3_fV&>k1%)<#Fa6O3m(MDe8%Fa*63(Lsj#a* zK0K7CPoJ6?NNkxGlRYGK+-P(^$KARnkr}%s&~5=BENg)cATO@<%d3%O3T1&83*wrg z159uWQ#_VD5GK<13#G>mClC6WwdjaKcq1%0N=<$5eTO0^o5ATDh@;#(tru|vPAis7 zwPx$EhIm^kmw0yC%?7D^fa}BIGSusj`&6&j<>c&~G&$^VS6Yz2Jb6w1^ITAni<=uJ zp~Jm9^3At5a&~&bBt7S<)7}${GJPLEd3eCW3~vtn_ChYRwe|I#q&Duc=?uW2X5;W7 zu{?i$ZmM$tqm>(Sa(T&yhmy$<T5@L$n2h7Smb5fJy}X)oT7yFC?q0#|z%z^omxGb% zQ0P^kOowbjx>}T!H3p$!1eT!8W-^e9K9rXi6FaM$1$WexT%OPPe65nD)Ehf2E<$Q5 zRCw=s=Jm5be)&>5%@!F<Ou&%p9uMT#U;I(d^<4evepj#ijGv=FnR7x_*K0~VfF{)s zszo{PO?llr-L7=?c^Azi?Y%?>w>Mnp;EYpEQt#p0_x9!a*$rbCsIa^jvCpE$)*uP# zxL^`tUk_{)Q2t*%c_q(IE+t$}Bwubzr@gDql|JKt`KT*Tdoy`)J)+lfr%^Mpe|;E+ zbK^~-3iO?*eY)!u*XaWJO)yMs<9AwlY6X(f8(+zK&bHAWYK*P~dbfHu3Yuv0C4F#S zKzyJii9Xb~T8Rhx3-Gsp|Lqk!J_JE%Mq_8P(#}7x3Fv&b;se@jR*m|xF|;rC*|?GH zng9yZ_Yvi+d%*=FCpa=>B0HNO{F9i~xElrQ#f}$pP_D_Nb}Ya8zRzkD`wn0L@Gtfw zyy)O2A}OL%4xGL-X+~K-Shm@OKY4~bNL&XbzD~6y2i1^?Xr|YCw}?6ZObaGGtW^zm zQHezZs<d!pNPpiw`RG~+;-lSSWB^6qf+MFW3?dPE&zCn7`A6;8|NEaGlLL7>bz0t= zfSn^PTQ?hW;d{3;>D|CtZo+ZW|NZHyy#4N;<h9zrxp^&p?S3Zk5f|%JJqMvd!IJI? z*)cQdnJ^ATGn~K*s_ek|NY6Ad6|e%(hhE&My;{jQcQxx$d`I(1Tb=YC#fhm-5g6y_ zKkNpb>RBp0f>FF6$Y#yMoUUW&_{&8r;#kx`*FS4M^|3jlWdl1980P_%i&0@JH6z>g zj_HFN;@sP6u><{$#Qte))HnQTtz2;{oLG+cyTqjoCu8G4`_|>bXoV{R&#o!DywKq< zP>|yN;+o@J(Q6&Na(GAUxf*Jvo;Zez=aQ;ytv>Ddk@I)p-q!aVr`<q(_L-9Hh~M)a z*By(u$R-1rHu=sH8LJ9(ttj3pprOyia2C_q4C7-2>eX6{)RJk(Lp`qQNBo@7idf^? zK;3S+GDS0ets@Q45UN5f!RN+Q;PQ6H5$|LcGg(y2ko#On&V$R@if0r>EZhf|i>W?7 zV?(QFLw4TvT0>*X$Z1u;!7AaHHs;vVJ_i^!3(($*#{G6va_%>QVn?F<=!3Vk^X<uW zFgCW0*f<^u003M%nn{KrUKXL~M8T$@M`{)ud3Rq^9K21eV&5pKfxG9NqEJmx+<h=> z+Sq9oU`11`)!8*ec?^nakZ#S;C`kBxPgZ^R{Cm9Km=+@L!Nm+rhU-ZvkDq=gkM8`n z9N&FQlfs$)?3u+)t2*4I22{UiF4miB9&vk-iOHni@V@(cpt$jDW_$zs0sRkpaHn%9 zdxa)7CqUSUqJS=id9I}N>ze_^R4`u03bvg02)cWA){{H?yJQ$a{uR##&hB{F=cpM5 zGwV1*ni`6@1twl$meV72v#-wwGF~S9?9jQud+IhyoI;HHQz@1^Vp1s90AN~);*ig! z*fj74ObgN;*K8VqjQ{%aW70Su9=4^PpV{OL6KjC|^lPw^t7w68_prfT`dM!-&tJ~; zIw0wGHTG2W^{+`Gtd$JNeKlC{Y~Y?ou1Uq`4I}fL=j3u@ljw~DYy-E0BIoVnUAY<h z#5{p1fnq-M^lTt6Mvz<#NozpDgQz}k5JqJfr@&Fn;;u=zI`Rc~RL~~hXeS3Aa}1i5 zNsqDO^27i{M8gB51>fprXyyg_04>IA`ShzRdG~Hx3i>@aQ}a)Txyt7+M?5f%N|vJ& zP@k%xPSmoJ<Z?t^;sMT)f)jFt7exm437A+69Ss@^s!VkIbTW&Ka<|n3BiPEh&Lz$W zWUZB4A(3xRhw||;#5V$YezTOjJ9rN{H)gjkht5WR;1HQcxubV=Vhgk|cG8^;nlV2I z4#`2qCp`_Th>QM2-qk~JZ@($OJDsrNgWv!T3-(P{gBd?t5}OXab!^&cLPd$=ypZZ! z9ErkFD~X&&xTnQLPX7K6r*hOTaEu8$2F6Wh2bgeVnIo?psL@a>*g6sWty*4=?(IsY z*0x<7{L5h}>f7EP?rKYCIa)53t*FB2-0g7FX+gsKve}}peb<R|g#mS>#Hv-hpdPuQ zh6<J~jsumgw=Gs2sK_@IEB4qN=OJOF9X<=ah`W4(^3a`X^^4IrxUa`|_NCRX^K7&0 zcRuO_i$xoUE{|!H(U0w{q+qyQ#>Tf))IwlROss`k+KCksrE-}MKF(83y8r;?fP_U9 z%Q=vo=d}98Ghv&8lNZf8AYg`aq2^qONfHyF8{yNv&=uA8x)umnpm=u0(iKzsbvA`a zl_2fn66u{dHL4VN$L?R4Ea4}Pop6$5?4E0oMj`}&b~Ow6bwq57X-}J(OoqYA_R>ND zBS=JN9PfF^?=vbG&Xb9I#C*0dZdWp1m?Io;B2R82`RGueZ;d~r$-=zd199sX=+EnG z==nwWio3YbZW%>EtJPug)@U|mPd~$pvoj)v1BbK+Ljj6vr~Rc{(*UTLXJF6aUSRZ! z(KqN~bj`zy=2)P6{5%fC#_rq1Z8p)0bX4?`8?H2BTWNXDZz4^Cz5xe8nCElgq<Rss zb2$V4nshSgYcacVX#b}=3Q!${{4sRK%f+rHl7ce|5ynHT<+kTa4DW+x0xoUEOvIwf z3+K|mIny^(l}C5)%H*5x$&x{#Y77RS=Nr56Ib@f?nutBO_qL=BZGKY&v<XPS3B-yP zyD&&0D<}&it~?Xn+i!g!&1!)odt7f!DuKVr!}&}LkN$8*LzxE$O>)*pi)$$b8)=l* z^7~g4iZ#U>Efn<6fc{5!497N)Qz=kc;RTS_0#}oAIVYNt<aRRRbJwb7Wg5oJ5jzb~ z{ni|V&$Y2g*sbgHSh3iOojEC=Shs2M587=SL!faFIojWT{)H@;@5=qd9c{pb09z(r ztS<HbY1m;gf>HQ8`s?auD*f?L!a|7?&Hck;ZDuOcyS}8y%5)Kt9aGcyhsly*G)!=a zz(6X{S@8iyQJ)TPCWHLs)tTh-Woc<cw7Zk%Nz1&@gwdO>=@~oH2X3^u)r+;EpLk4^ zZ$uG<6eK5Z!09LU5Ca{3F_`nngJTXtCqxgh!$jx)@W6=nICKq7&d*;Ah<No7G-r_< z?6;)9Fv9(KsSn*G<VfV+K}&ig^LidlmNN2I66yC>nq}z?*VN@TguSpD#x4SKhMjtz z;Jyg*ta_uLU9EWIeEmCs*^=1Cva~F9RG|KN#RnZ-7r<k0>3jb9J3I3AtDby&+800e z4a7E{%LrDGf$u<erU#88B}!5{Pzql1P1Z1s*x_e06?R|Pr^5gxh}ZJAR(pRqo7%`( zZ(<9&)`O5$SP<lxM9z9cEwU#1Q02IHPBpl9D`m0|7~nX}GN&F==n#T}9HTgR);G5! z`J3N9W3cIswA1O2xjRNO&p6$0i1$!FS5IW4k(WF78k~GUEC&f43Don=f_5D)$m`5z zvyL<F-1|ZUr4fbgxY3?NX44!5)x4ir6%X?chjfo!;`AJVk<Me=gk=D_6z!fOzx|T= zd?yarNEaiFA~iW8X`+G#xQ-(}t>UYiT%p~J2eat*)Z8VyWNgy0rq+cd3VFuwHGq{g zKxFhm!si9`31A)SO*`6THVn7u^bA%ZK~Zw$Do5?*5)>9IZU-O8ZmmWvNKq3b#(O~8 z*68xI)^l5xC8$tZts_XHh>?6kU22>IB)|+osDXO|g=Ya{=fo9E%W&;f@k~nCGv7pq zhw;qk+!+*kR2cM~`kDX#QPm@!A-1Utx;va<PA0NOUER28ic_hSnZI`0^B&J`0aQp0 z+|SRKa<Eh5`v%p>sCFRz3P<bdDh%i6Rd2%e5dLgV+fhAt8jmKcyxi>;<PR@KeE$u7 z{s+UUUazvYrYmyYu~6OZw&djEl6z$o&xi$>r4-6dy~Yz>Q%tqY7aicuqUa^3K1UQ9 z*BZwV_!jJbVTy$PYEKK=;dCfXh!u4o$l3Xo%n%10n*FYxxBX66F0ZdB07B6hbnnHI zp2rm}SEGpjqKv0lKaqMAMOz~*++&ZFtUSAAJRfKbAj=G@Y}WDZao_S}j%3(TUh8|? z(U_5h+M#JeyB%srt4R#c1MVG!j{tOBfo=$E)>0%7G|5c#v(Kh|$yJMT_xJ$;t)O)- zLi4#WH#W0|J-Zp}=bsVyi@1&RhcUcK51T#&M#hb5iPr-Ow^=E%k;>B8#V{NLjj`xR zPtQ)tFUJ%DcmS}Y5c^SNb@W-;Z36Gol#+Jqzy0o1{@KUJ+Vt(y;qAkHecq#{e5cJ8 zUJo+SrJNa#9qqQ{!?$*|zR{%n^_ATF#RHlA-IsFzQCs#jmQOWLoqpGo^P7o${NY16 zy)tWR0(DtbS>c&=%p3qtLp{SNs8Be;RS`fs$hjWubmjT0*Yf=Jsr>TipU7deM8Kx+ z8Krc&jE&-)*eLF3R~y4-D5sZGeFic-=dJFJcJvjwy*j6!KHo<r&mtOvTyQ@G%cM~) zkX3^Bgt!W<6?8`eXS)sTNxcpem>b#I)A&}>81d_;eL20En{I9v8qHOH$nVcb93N%f zSj85bBHs322b|MD_GGYOm!ELVWHNksP|?x6eVFGB;>c8k!#DbHGKTB_)GIlTK&Z;( z#+Z$Ao`-5je|AF;T~8Ab5Yu=qpycskI*p=9ab|<92#ML<CEU$WMwNj!kViYV&s|~X ziCtR8+fGuK6wTSl@1NYt<zOuzK4@t&@5*tf%mmo274+em%PO;wZ!T`+3@eJ+!sKTq z9dRbxeKEQNSl`8x%5=U_!^;M?H^Vrspas)(HzS`kyOPoCu4jPn|MlxD`SNLxGz^R) zzj@V{7Z($vY&}`HeYwvOHWFnRhwMD4%gl<EmJnnoP^<={MNQJ1c&QKPj2(VJ5L@25 z;@FI8mg@x(z`24J0eVd<m4G8%REmYd%7M{@0t<m}01gN@tel3qb*z@u5tw}6_G+kL z)6SWm0lsx71?L-`8Xq7i6Qmf1PDm!t_w8jeTZY1#UgF-Ci%+zz)1OScPa6-0+oH<$ z%9ePLSP*0Y`oZ)gAx~C|xgcQoozg7DQJ|1G4VfSCL5?E>#<2(-jkaLElpl`kfB+z= z<62~RkX2{`LGW~kCp?lBI^aqv!{iP+O*Uib=|;82>ol5~4?RIukxgb2hepOV&vAro z(*=y}%}^!gXWYc*dCo#Zk}VsABW3@Mt6Y-$HvRxbAGkA`a_fm#aaa(F5V_CH=}?%s zZq$&=NTP@pM3|!p*0WWu6e%c$$rO?X0y7d4ki({r?RL13NuGubF<9q?YXeYWtpBPX z%3)25c|Dr|6EzxTGA=*|YF6{?=x6Jt%;p|<pg<C@79+=iC~zeJ(~iYL6Q0DJh(z&{ z&yR2wQ)c`@H@1pm=a^MwfmhZ0foszn3?-v6460$ZiTSt3wq7?61~DCe6au-diA#C0 z(ZeE+O~nb%2)n|ViiIZr0^nc5`Fp@biNdI%$t@LHVsqpQSroefQsP9R_&~P{ZHY>u zEbHN=#vXnDdZthq<g+F<3t=(DPsRwnm(@I;$+ZkH6^(AS@YGo6m*k&5`yH=6VrRz5 z21gsy%=qx$jy58B%5mf0h$|Bz=nX(NOav}&2U|dB0RU?QcCdRV6F|S}&e1!3=71v! zT#+u$pTkT(O_$+2ZFJ6imO!tkqTi=6U6bk`U*1T&RwjjU=GHSfkB7T$d402zFJF8k zSNcA9Unp`mm%sm_FVSbOxV}2xuhGu+@BZnr7G1k?_d&-BR|rK##!{%3jdcZ@bH0$X z$!NHtSyMzCV$+_$Bo1-l-~7X`<j+3&vAlPusfB7tED{R(z=3daO<<CQ-1Fe5&V+rg zv3Lj;OF;{WVqM;Sq_3%k8P0U8Uf@&;>@Z)?JE-P{*;x|@f@?GZRZu@8EX+%ViM(}3 z^o&mBA3l36MbQ3Edvon3FuE=9rhy|_D;eF0duXs;5({!(;>MItO&a4n1V|hlaf(*l z$LLM0<xP|Y4=&Y&qKG3Ca0U@v@fxTyCK#i8##3+Up8-@x^m*bjY43OIbWlTr3|BKQ zRRK%`MGFTWzyTB;tH|EfST920M(TcI9XXOykeCj<$*bC!9v9_St8Unk{?|XdEBAIQ z3^JS0x=bL|JIyM)HX!r=?(=gQ4(;a04mgOQi(&^Lq1}2;i-S3l-~{g>A$g|HD@p9s zqC6_c?c{12u*$R@ENKAz_B^Wv%tVSoL>+5@2swV$?=J><OVVzqi~CX0gY9cTFJ=R` zuZ`Ytm=oh{<6w<vuyeE#8vYhVML?>JzYWr$UBI~rYYiOU+u?wE#4`sFGg(s;gdvhV zm*acGs62GZ2OuxcnV#UDr_?o2J51g*VBkwNp?_!!#46MkN%(oVpXf*kZ1f^m7$qEs z<Gmzq!EUEA)iO6Vvd{ta*o}JrmLi4%qdy$8V6%yY@soX5Twtt9?!0GXXdsUFwYZvV zU|Y`DHccVB!<W%=&aXkB3>+N{4>_bA4X=?nVB3ZUAf;TD%6?EC!*!xAg2dGSHstD( z@3UOUZ*5XHZrqAIT+||GMX=J+d9>TeHuOxg82os1YfCe@?ZMNjT3W<<4mocy1xv~t z_5XmKfT;$?rM54R*^QZCQbLeu!6}hJuGOanrtSJMje>swfn?Z!YeL6I8BJD1SmRl$ z6?}GN2>PC92zxyD5t$_kJLt&F&A7&Z;L3bakjqX%j=N>;(8d%tqVv^oDaYjksdGTA z1G$V~3S*HK!CMOniFF9{zLc5h#`9}UQZ}tv>pg6i1GyR6s2{3a2?3raRztsWIN_CR zhI!Cu;mK$s?Rrs;?;gm@i)#jKTpLUdaK;079yb{EZr1F;iG+8KU0Y{M>Q)52W{X8c zN-&0;)Yu?dA;bHQ?=L2K_j!VCVT<#Im<nneC~n|tqkH3o(#2n_5Z8M4;(UqEbFl=3 zc1aUL$hBF!d&G4Fo}0a$`_g&wLLR?7F)*6b5%=91?DHq5jHxWj>2Y9~l2rEqF$Kjm zg;t7LcDR^+Flhy@0Zf*TPFRqR#z{{2V1D9Q{HgjM3S!WtQPdyo>{1drS&wBgx#h|g za=|EuvF^CLTO&vg6EbwkD7N6vx1;yy@^&oucgoVcofr#8U;FIxR&H-D<obFkmG(+H zvpJ_K*x?h$u`=IsjJGLvg)=>$@j1u)#iS2~0-inST>zVdg#SdZ9g6k$?{%c9iJj_t zv8_I;)glXPaQ1Otu;#eGUy`1l-@z1g%97?T__M=>b0L>k12Z$q+sca;+iv9=ZH!eE zu8igfAS4=s-e^V6{eSwS`)qtOcl8C1cWU$=zwC{eXfFmPFpqsU4hoD!a;}@$I7ohy zn5ew(IGR+4^1UBay$M~Z2zYYHTjM<%peCj=RqUuT8}7NWZ!@tOkCkSDyep4pGLUvX z8*jMdz}O~XRqxXRk$_eM+_P%*$)Arj;YF;H2%>Ub)fC)XJv6`#VC;_Ox2@IDa1Q>g z(HH;@^4ZD9W~8D29yD_DpMSC|zxh_=Zns9x<7ZDV^<Y)xPOBt$+huBFKe-yqZ=YPt zcxn=;2wJfoz?ft5%{KAg&ernxkFVua6M2au4ReBWe0?Bb1OQ#*$eFUNqL5%CjOf$O z6$wInBfTDTw-XK=I^GoL5-)McYm=kRdN~VlxrzyO_-3UG1BE2f&byqKV!chhZE+lS z6fDhZlbtih&7rHhd958?hebj@a68$J1FK~$!MRlj06y4hN6sb8{+nzy0XELWB<&XI zJ?(a<f#a?xP8p7ZJic{6Oni|cxdTU$GcaUqUe@kfd4VZ;N0fjy6Ah>|WxN9S^)%Mu zXvLBZdA6&Ng$X2dVJ0$*7A!cBAV@FD7wGy%T>?lg>+b=CGZ!^O=x0Ea)K{o$^*^33 z9Qe(EU~nw+8@?8;Z8^EV*4OkI<lBuJp9{#9;`Q)34AAIIjvVNalC%z##gRDq-hP_X zB^|D%D0rKU2s?V;(bf_%9rW#_BQen^-|50TR`nK@O>vQI@&@zZicCzkxYNb8(_?}C zUQAl0sn`M7gf5U4PEOz46EhScy)!l%BKQAJa4ARs^Mo!~r^CAZ#lw=+`*VG+7F>B@ zeFMJm(H_R@d5-K!mDIDxq8fC+96(n!BHP6)YZugz$z;mc0OjZ!(#lv;>KQn{>QVj8 z&*Y`C+p%i^BOpDu^-7)Bt5~lPyxY~zKhgyA{dJGQm#U4lh_?Gc&{<#zc{{J3i-F>X z_NM(|ii5G!$B=CTL;y#_G@Z^Q(ZXZTsr`j4z)f8cx(vWu;4Iwe=LKL76A1Bq*ClJL zoR0}4n@%TMJPuiC0gGA5=cUzX$n#gPBur-V!MktEPk;Oqiq_!%;WH6v>YG{{G!QVc zgjh_HYQ^FnIYSX@G32vM{9p#5Ag|SmHid<7mR>j5MZ=KgxO~iHiFF6yNr4}8jE)^K z5+>LPi}jeV?Iosm_xSZd-a4vktlDVYUCTGGZg~dw+Erp8o}KipVAjM2fjv05)f)u~ zb0{h&`X1fXt1R@Jhmc++Fxy`b4O5i75h`+GxNH#gVj+&<dRIy%VmB~(K*52ezjP{> z)0>4ne*R3ZdN*?Kpd%0W7g_*RI4QZjUhr#ho-<CC7d14D#A+JnF9$0vMpkm?pe=iQ z9r^xoUS6G?a>{M;)}hSfgnIk9H>NqC({r6=3<aeeik~o20v#EE?9Bacm9(|~B-9sJ za6b+p$9~5IE}D7}!f-6@TApfTuWsj(bKGKZXoJ9aLBpPWB<Hnr5raHlDeDpZhTRF8 z2k;!dz<9><bsAV=c7_Nr*yVTiAi}nAh3<Y8yXtg95W!$xq7Y0eYi^30#8A4VRUnv( zNvxu%@ST+waRI1wAhkN*uu1|J03tU{4G8GiKmG2KfV7Y9w}~2GuFTpla>5aqVj!XY z<WWm%#hko%T$khBB54%h-C`7Vr2z+2x<7sYK)!x?D}%97-aH4ABkGlERM4Xj<zni~ z5aU>Vol+3Xg&t_UM<9O}8#8<W@M0YWPMr$CqXiS(V7wtWG@_oqjWTn7&QRheNkv|3 z!7IB}2~_<SdYvJzVf%C>3o2XbGdzR^Z8Bn_<gSL?SUXe;jGZ(vAZZ{uWA9GwVfu>) zd>}GzM@`<p(=g!g-MAcI$I+v^SDx#$Bd2PGhYvE3C;%u23;wnKLc${0C@>x(`M;qV zH4xi?O5TlaJ=bMpB7pa>avtdTT1-c(`k;l*N_M+4alH2wEs`<}rt_%=#U)n&8z;<y z_m!$ZQ9uL%HfPeciThayPO+o>V9Ek<4?4TK>*71aFa|uZ6ovcL5fZy56(kNQ=apR` zLGc423c3`cNYI~uJDF34I7yuKu0zT)=_m5$`a4kT8)}EVF=Pr1HxRl}V&M4po+}Pb z#AajO-H^7_ViQ;ZT%`?>b<x%@8skWuPMT2YvoM-PTCj#p=nFrgV-}FPejIV^jwFsr z4;-l0VZ1HExatsR1MBV$@D*Bb%HxxBEu4?#!@EuS>U72c-mcfFB{0(Byr^dt+7?i( z%wSc3ZXE+2Sm63oDO8#~>pU-9fsM5xsSuRs>-}kz%cQb}>zO9ICVw8f_gs+3UL(h@ zda?xV%5=nk`-f)|fD*UUHs5uKvY=yx>RGAa93~S3afw;GaxxVgdOYJg<aG7GBAH@9 zriQr=mkjE0l(>R+!y*<ja0>AmJs(AVws+edUW=293w?GfYyz+X$rF<yoJL@EfO~bN zg=44HVj)#1RVbyq(j<7J@$j1`&*UfXy)Coh1rgpk+JRaDiUtdDzg?>`S;7lEpEboi zg5Ib?nWgB=RIdS~U4cwT0ghq^(;OsY$`$K1f!WDze=6UPhSI+|Atk!Vm4Tj#jj3AV zTtj1>V7&E`ER?GO?jLj%VmWN!wLIn;Oz&>=Ge)7YgjRty1{W87xeX$jYQY1EXYkEe zYrW=ckJDg?ek~vd1tS^=zvQxPFmVr8G#k=p2(q-fET2gf+TCW8g$d3F?g13$mU_lM zeES`_==J3E@{*Iev#X-~?A?7i)MgpMYYw~BwFx9)JWekJT6qWZ_MM7c7Bv1rd}))D z58iu=;K=^%wRG!cVz^55ve$f?N??n{JbZpG67{+QQ$Rx(Ox}L|-L>4(Tt(zww=BQ> zU{Ah1nP`GC@qL)rH|j+uv;)1N{n>^e20<BURF1M7pAH>0#sf%z7_rsLSq3U3QVUAP z0gpCjr3&rk#Enr2*a}ST2f^rSyk_NRTIU`wGy=eIz9w)XawBx3)tPG&?F60s5UDbu z@V&qbozk7twaiu#yM;;_yW50D_p|w$!3$uBOYNK=9@NQ?#p_{&VhUeIy}|D<Z$=!$ zV$3pK*^qJtv1TvBfP3848`Yc0X>TCrCl~*KHe|rCz&A=1-YeuYpKC>jogQ{q_qsLv z9QxT#2BCGXiFx#zj+S+M7}XuLntJoKYZ=buOgk9>2uqq6k<c5>noP$qLYQgr!H(RS zibNWyHu_+$P?cK}gQ8NgVALsGU);9^#`}(vw&KXx_Rt76fwj_(US@O?P`Dz4SThhp z*M8fbZ=A|jO2|b**o6G~6kPyE-Sgc@+t>t&8)JLUV1(z_b&u>?HXG-H=Ty9CP?Btu zbUJn?5Utsgq6Y34r>FYT$4;b2n9yQJn<Ey4U?oc`omNeQP9itAGp;;<MS$Q$rBrp} zXp<2JO$tR$3JQv%*wNgamOH7QVn!aDjgw)`(Cp>K>AAFO6<+V*Waf7EQxnjE{3s+s zo$46wOD#gTVs^ObB$2F^p;J<HrZ4HPQc@F`?LOUmqvP#V{U|!(TUVMm`&d);i=Cj9 z2~VX!GxDl~V7qsvg>lAr1%#oe0p<akeLz&NFd$Nb*^OEkYZD$JO`9wc-*qs-7RZML zhBpLu!*Dc`uU`*k|3@8;;a~S=EL)n@l6H1;CJ>B$DFmgjfTWTtGG-%vwpVk>YR3*7 zNVj!I17=^Yhh{Xg18)T_@>{Kjetn78;^<&k&aVgD&x3l2;u({zSc~vVDJOMJreU0w zx)#YX9Q$yO^sED$n#~2AR)WiqI7c8Lx@X5360R&vs3mb)@PRwSxb`fxfWycd;+bni z-zbhWfQn3}7+U?yrHOuFYJ>5w4`3D<AqCzS6rFrtAv+zf={G^eK8-i$SC>+&)F}mh zdU2`GM?;p{0Q~x!Z_QCHHdi%LaI>aM05o{FuHE6<;t0+FrmWWC+6pC0^~R0K%_epa z%jGQB1-Pfk0Oi_&Y14=B4A2f#|1MX=zCYmP6_(X>8w(;%zlsDb!jIhN^}W;4WOp`} zv+F)_7n<IwZ@`sUl98t75J=8G*ey}sJEk46DS}d(8%32qKQ}j*^a*Kdvc~f`T28hK zeK>v;%UNEtV8(NcW(M8*(e5q_9~@{*=)g9)v%kmHB_1vSHvjR<*Yfd$U3qj^lTxW- zw#WK2R`Z0+03`ItJ!`vdy{`KAm;I1k`%bsZ;s#uJ&*6N+&{Rb+If36sxRI@dFP<Sd z*kPIgYvc?nrMC_$vQsM)Ow}#}=rQI9%X3B!S@MPhn$O?gt!q`WW~I#v!V~Vw5eExi z#*Jb!+%e;Z4Cb~6Dr9X>Pr>=X_|>=(=*&5yN}Nu#-cVF_=&q~93{6px>|*RYaz>{C zuOf_BOa>H;*%-l`CLU3|<;5>q5t(!;DkE5h2DIJNr%w-gufMPW=D<Vi$(mIg9{Bxs zMLM;D0|r^dr%6X-!Xr67A>f4uZe-jlW=Uyj)^eJJ)<jFMG>K-Z(zIbWEk+jM`-5Ng z?KI&32YS9<4y37{HwyCXhE^LBVuAH5UdMO4tiaDpS+C{MPD4I?u&>`&koWg1lGE4u z4^J-Tch7D~4T{|85Br+gdSc)`u_}+j8g!9*h4;6thYp=Nk_IgyX>n=%>~gtEgf@~R z4mlHG#*%gzg>EG5JfJ<J>X0|S9p758LVAHB8-PBEODg747ZS1SIjvYcJS&=d_#A)d zb4Di-mmm|1ApCQTTaiqW9Km%>840PpWyVqH@P2?;eWeM#m^GI-8}*w3j5wWZjIWpo zwP3+H=xY&})4~<Xd7-{Wu2AL!w9_cbJNs4n_Hs^cEhiLV;`G~XAI|+Fu0Qza%jH&u zedQ!FF<wPChQjH*ccY1@%J;<LHwc)3d}ktp_u@#D>?m=KKqXDbpq?k&F}d&X2I+P1 z-Z1Q0%z~j}=ywx+&$!MeimeDTGZopQ>usgxrcHs3>jAHTk{Cr@B;MYuBr<>`wlSpN zWyJZwCoHPT6?f|ccA$<?<Fu^!8TowSd-DO;SGc!GCKoqDd3IfrpFgbYc}__2+tH#c zm(^qiTuLcV6DTOE;q&C2I1OS)UfccIWF&ishZ<N{QmwbOtDn){xm(N2%hL-@>_tvw zW?I;jDvQZXu0X#4vQc~l+y#?LwFHruvOIrzD~G##JbT$(M9>|cC0H?|iwd0#=f;iT z1M>J&zk=KraV<Ghcf`t!JnxKA-PQmjg62dS(S<9bO?MvM|B7yZ37<t=C!qCLbA3i9 zb1Me)8F;kck=Ga3EIa{*#`;2!9L1xS%P|Y_{$L=d=NEFccSjx_U&-&kf9l-*93|3C z!+?VSkB^Nq7f^59);Ji2qbSJ|wEV`qA?vKNquGMfOz7B?b&+3dEU0TDydwv@O-^IG z8gIojCJH)qlMMH@&|PV=o5`PjbXWfH^i~U&tj0I(YBLFA%z|>+_RQ7Gc}|b9zQlFk z-_d9E#hEsO3pNJuyhnAtj^UKJA!ri#57@W@OX6*L_Yvi46Xw6v-Z;xi3!NIp44+JK z&%m=-g}{iW-K^7c_xqQxWUxGt3;puFcu18{uFNpmfNEW#z=Vxy2P$jeFz)W^dDEu( zw5P>_{`}j1BJJ*;-1aU_`yb~}b1*(5#Mr<>!1InN8k+AXCs+C!TFCt6{m%dT=a0Iq zAiuvDv+6p72n=Oj1Ipzg&|sGYg}9KFmsS?dDsLu6!Bj|s=|jff1`p45r8GAn#mYcC z0JmkGb}*IPfYij#2mQgfJvI_N3WG4RT^v>0z{T`Urj`4VjmcZGs=}ClZTm-bL%7)J zaL`>sA`<2fw(E*1h!DE&jmk!GvK282oV_Os008Jv46uuIpNl(5q7D~Z*Qu6v1^5gH zMCfL?U%k?f`5cm#c%8^Jxnp@_#F5p+jA?Q)6LX|gDdyx(Q*Q>)=)6|g^Oxmrrz#&F z)OgL|0C+%$zx%vfFUenhbYK42PwvY{_jhP}Ia_O&JzY|~<E=Y8^8RsK4_uxgM?4h8 zyw5!os7YmTC$*YuHtOs~T3VrUOy)*U7;)RRFp3urJx1aXoSDxT+i@>NIwWzX6}I2z znB9qKKm-AmegS)DEeb%H+g8AFv=u-J7-(!#1JDmdL~=RvBuBy}_{$-&6E~HK-PqYg zBaD8vbcF&6gbKCbGv;0HbmOy54<26Y5V`nI{^TJ?VR)E*C!~bWi~Xvt4m|nImoMd_ zH=@n~)T-jug6QUKp(LNYwJ#q$=u%?<i4Ho|7(oII3e`jG3tyi1<>Y!uLz2L0gl?P{ zw8$G2f8sdTvGYa8&&fC^Dahi|VQRD4`U-d{vfVSTb*h!0jv5ljP2Y~*&3?&r>fMke zaySt$^+<3!4IIS>j-u$!Z5GzAVgWSg=zh6e){*7J@%+tl)N|^7zN5-f%*nT1CD&P; zE*Q=tC6D}2=RcMEC4yStFAAHGifMU%&y{x6_jgLNuSL~af5zB=4r_vdtT&=wEpkPI zxJ3_&jLDdSQVZ>QU`oL8#<`=lM-sAd|L)ZdV;5fU_O?fG6vRPbs)V&5Jg@19mDuDC zle4>fHIAXDT9A%Lw*<sx^JU8Rj%E{%yTd4ULP~EubN!5AL~up{I)s^tN$W<oM<tLk zGCJvM<M1q5P7S6ojdDqcMU+_4m(q>bq4`1pREyW$>$F**o?iA?L{v&;{(tDfmo%wj zRp>bi?A6t|wAwpb+!rKTjWyO6*f5}=LX3k~0kkvLPL4aJ1T!=yHW|w0j3FUx;<5yS zVhUB_4!xwmuWAzS%E8{AR4R2E^^_|OxwG3Ks1B<KOnqQ#HP)DO-WxKW|F?hjq5R^L zcli9h(&q}c;1{=(t(7azOUUOZXAX$~sA<EAp9{e(uuV#Zjo}(F-q$9uTq()%@m&e@ z`ugH;u~QaP%u#LS48^FupkH60pNFjkZ%1R&cB#&&)hm*HMX%YKi~wtP&#tcc`EbTG za}qm(n#U#pYvai4do7pjjAE4pr_xTl43`kzN1GCPlxM~y07W&rc9Y}{=s`j1u4DX= zQ~%(wCBHwJY85<Ul6!m&1t$9fRJn_Ix!rrRLgX7ZIX)ufLyTq2>>!i+IuocA(!GbZ zJQj#i!0IFrGhbl<0*@O&DpamHyQ$vBIDXK9K82$a6|8(#PS}$JSP{9dFvgh6x7Rh< z!enb+ft!JGiHDJtz^2aje~?I()SLSU|1i9IDXKc==<NDtq6NW{$+K0-(ePoWo#9}* zFquky?|YRc!5!lv_T(Fm-5~GysF9P79_0V<y8p&G%e@w+3>Z@an~(v$D^rjc!;L1} zuIyCw+D(T<?xU-%K?A!X@@S_ed)>C|@9mgIG$bkEc%_NudbpO~yu9JVG@O{-AMIi( zilK*P0`;yu{h{HOXCB%K4<u0A5Th|^+m-X`jl>9frd!UWnaH*%S-V}e?+4CB%`8+U zMUp%8Ho;kub-*aF;w>P`3~7*<tm95N*~pU)C)Qmj=6D6U%~U;(q6`k%jt351I+9f( zm)nk*>4gV?W9TF+VKSkg@$%-DNuLg7?jZ&RGIso5Acb*V(V64Ef;#gh#B20tH|rX} zTTKR`ng+L)CXZVpPS;Y+`V;|z5Bi=~>GgVn6QyRYE^i%i*~AXYbF!%@7$E8dFj6UR z-7Z!@H^TuF=8CekbAB$2SMfCnDCo>dN%Rs@w`jtGQT)sW_w8Uk`Tw2kH>NoRPDVCX zw=av>f#A8vXGZYKQXAen6e~QfU;q#es~L`66Z2k(+z2)yFfdCS&`ny<bMNO7*t&M3 z_BRiKb*`q6V|ziIClQMU0OR2tn0bij+zJ!&uK&&NPUV06i(~oGy{<gJ9O=EtlO70! zeXCy4XLHW+H^!6@I9fplne2qDUe_tn^w8nRm#R|L^Kjl@k@KwOxSp8>69B?{37zR; z$Z;(i1dMTU%@G^%d~_-qj$om4-XHWe=~X!;eDdNYaWf_2Lxf{{1Ygo9J%=FxjdW$Y z-WZ#w^w*Rc%E=bS-hp|SgX+0<#an6}>N_eS(C;Y3Kq*8545-=|v6#LbOr+O8CCekF zL&8%%Tgj7NSl6#PY;EN07uQ^cflZvtb>z=JeqTnz0iRW<1CqKKC&Ww~cIxuta==wA zrlz|!qi<nt4mvSD=Q{F<m)gbt9f=;u{f$j|XnvLTSw!DpWq76C{~uq`sSKc7p}>m9 zeF$mk*#N2^O~gcFE+~dCUuzqC)Ru0mBiGkg%pY0gl}z5^bk!0+#h>Dg#>^d{c$kCY z7`Tv))M8DBtsTi>G8x6pOVb$&xr8x=cq4rlpcyfx<!gyF+$h!F5RcC^VqYKF03`HM ziNzKeOf*K)d$HH;P=mi#x-Um{&3~{^byGS{ZzGd82gYEpQzmWmQuA-CS=P7?5BUOf zqIi3x9^Ul(TDYPB@HGA`q~2)reWD3QQ?(|jRtuYd{rfYD0zg3wkK$^X$Yg2M8PK@U zsi7jZfZ%DzECjxh@IqjQ|3)&<_ni<4f`Lhil8>6oU~tEokmiNX9^GU>`i*G~`>vx2 z9QbGKIN`}A%PyV(svmd|r}4`SJj5aN119D9Y(o%R-T_kZ0CJ$<#<8gucI<>XOtizo zqffg?Lt`U(6QHL71yw7$FuJ^Ph3;{z1T;O0p=K#7M|#og+8rmGCC9ICxWjfBpw*83 zB_<ffdXr8{<Qqd)Qvdw<`GC`exqd&Yx5gb!^xB=^VJT=Oh=YcQyyzYlxc{sckcV7T zTN_h}*nzWBAQUclv0Ra?{+drNnAj?)q8m+)hC^53lS;+P*Tzch!XuN|OlcLVHg!rB zOWo3J%x$hwdHvaQ(Bd$*X7XK=<L)`%-yd?+=~{*$<(bMDEloYs(MMv=I+@|b6^pTR zbAyT?q#H@4bJ+{;A#`0H&MntHOjxm_d<m7C;6IPfB?Z)3A?G_m4GVt!%m`!@HOf)Z zYOm9gJ3B?W)6UAt)r5uTI`m|pcB?)CZab~A+&S8n+cC~?idq*_d7CX9)y}yyY4Xly zY`wt!+GfSz(S{HWf~kJ*R1?Z>yUwI^qd|J*)C4&qhPqhAces{~lhk#4@YtqVsSi6x zg(!^D(LD3IJ!kmL6g9~Nc3xbOK%))>jo6%`Fu?-D<Di+>;GAKQ#x=kW_H3{+y>@V| zAubiz2$icVB$`x2$cYmrPDwDeHa5<`fl~1=3JBasoH;8#i@Zk9^}7G&@wNPyKYgHa z%Xf0fz6`aK&DxsNUenX_I*VvwiGl;;N{noWgP!J#3h%+u!GR`*OLmEvs)ftBaa1-~ z?NtnPiZ}&&*d|A1J#>(m9GvtLcCdKGN==_*V2I#90a2(03fMZ=Q@DpYM;VOV=-j4@ zX0n6MH1G|dM4fZEKRQ2(YO$dmbxY1}29$#pC;T(fE-|m?7+iIV*#r)N7X+@*_9>Kt zbC2mNLA07M+l@NU^vjE$p3}ArHCE)c065gnaITN`vzM<lQFQcmtMd5li99>KBH}vZ zVmY^9C`z?s#VQt5W5grS8v`flOlmEsc)=SV1O5N->cBcR$i}4WB3T0<clXYFl5q_c zSVCaf0PGiJ^x4#B3s%5SU!JqMxS17re;^zD)^1I98U}o&AWq(J3RoGp>m6baVD(z5 z)a1_L9Zp-&AzL0>Tg+SZDYctuvae`thkiSzA(5Vik)EfmIg~Gykj1mgA~Uh6nw?{B zEA~T$$BbQnT#svQB)VGYfBwyP(%ajWAKxueL60~Ta^r2%P%Rbo*<R4Q1kcY@3z%}H zAl-VFhDW&u{=6w27~6PjV!4jM0@LCIlj!T)u^C*k;h9MWA`#%bVb=|y$zrkL&TOw; zWD?g~O7VE(y}l{7DN;b>i@((Z#*L4hwPQ+^!NbXs1_c3PHw?5&G>1KmKG=x^%B02~ zIo|=Zusa+t^v0U25<I|7%F}eQBWH%d@vH-)8D%Qwl;NX0hWx&ri{n9h6!}T1K=g+X z-T>}628)wzf{UH)p}83OR94eaLreg7pBdw!=NZg3xL32>z4icB@XSi_j#jJK|KVZ6 zNC*NXkZ47b(x1<Hh@eykm7&3SE)^{Z?myVm<k2#N2EDnUs|>WTKzE8%wFH-bzM|*w zD%`k+$IKBHp^5(^IkI@rhq?j=14c&rpf8Bt_PO7>g}H#6B9N+<$ktG0wVIjQn#fiJ zCG~wyk>aUUD8zIST)B(d7=oOy5v~m=<|Z-tXHEf)r9MOzvsQG%LQ!Hu4W5(oOx3f{ z34uZat?jIHD-$ZunS&rYyiDGB+f3T%HUqOFMWRCmjq8Tbgf$No!j`V1p~D&y9d_(N z#&t-V2=u-n;p1K*FkbYB(rvWt+%0E%E-M-!QD_Ny>{`bQBtekGaQ(4Q9c$&^(+(U3 zLMCNlELXfnX)$DiG6_f55Sszl8D|qCO9-sM*kY>p>(ymX?(Mb-J{@VHG~F0N9NlT& zjr#DJ=5BqkaRG*f5zflC!;tNYDb*l<(>WW~W2yHY<7=Ex7`5Q_>5J`<+AB?NC}Qm% z3rCWsl^#>xnHYuCn;<Zx{l;<8xr#{Kvl`nuG1R`dmClWvj{gr`{EEd4$J&J)CJSr% z?sTF_-IF6Npq^ii<)B^D>z5^?rCu&Na}+BajRIyyBBU#60AH_sIoRLl>+J2cHOXCa z>V<JMngVoZh2p|&VHr~l=MmC1ZLM)&#SUv#KwviO*%AEUi*+KFeHY~MoFlei2ajnE zy6M4qsxfWONezDffp%p`3IP4#`3;;Ff;~%Gutz?nSvO&{Wf%G^hz#q{*WwwIoOpXZ zBkHQJ^*)j!>j%zkE2iCOT^k9ocQC~SEpwzzT!A#swRVFCl!W%W`||MKeR+L(?Q|c6 zlZrKsyL>h|zy0=vpTQ`=Tnk$)_MPv8=dc4%pMx(&xRj+f3gK*Hvf+~5ir5@<cBE0y z>*vVx%s?L<H87GsFb!Do0yY2b^D`EgNUqQgI6m0nh(B>21yo+tWY=uw*lgnWzzo!@ zCiFC&6-=}XSSw((GI=TzVlss_D0~aDr40SiL2s^<y{+GT3cf|GC~1)oqb)WN4p<Al zhtw&Oa^QKa0ByAetihEQW>56Ie0+@aY0Fp|<cP6&HV%vpDev*jijGbdz8HDAncBIj zlpC^J#r0iigHfaLkfsNXYY|8HxF+yq$Y8-v4mAWMvSz}-id`=@DzQq*gi|t36lUf4 zu%<YLADA$KZJdU57M-{M##92qGfGVh0^fP$I`M_930thA#Q6sJ+))B#SM#%So)2Y& zv78nh5RZ9wHZYW|=VUcfa8~kWqG+y93FY-r0fNKYoI!YE?H&fB1|`1n*Ae7$4j7zx zw)eC#zPPcI?W!<td$(KR7k+uMB;t||ReDo*I}JJ5ZLty@&9Y1^psj%B@vv;JPsAb= ztaB^nOn3oN5okpqczgZ1b{jDESn!(E$~kuPK<;Dj6<e>z1W+sFXjs!5%^0lkv#2{B z*aQIyBBLLwUaFFs1@Q?y@JJMt7<3Of6L?_B5~dLFDz21k1_}}5A0yD>;KoUgWAreL zwjw9CQ_YZiWaD*HeoHM=(cOkliZ^g#EEJp3A|`PO)$>zzLi4@$9k|AdMEm;C@v_Z1 zEH<RM(?_6q3ir;Tb*XNuu%zqR+JftR$@|-=)y+9htM;*WJ7qoVnB0s;J%XHQupuUI ziJ*tigtJoQIK9Gs{9AX65a*VwS2yHHx0_A5em!Lpgaz?@k>mJq1OpDe8HJLmDNZyv zne?r8r}Rl)P<t93B0+QdG-CUKV(eyU-5stE1ZmI>efe@h>Q%~n#?PVw2t35IR><U> ze><L0e0G|HP|3_dPa9XHZq*<?aeF>T&l6L8BUo)^=L%i$!r9GY6@mRO80YAwOj_C8 z^|0TL-2DM{2?iq>30&#mJN!lBo?jr4o#+ffvTqD%0=I`Z_Cmy6x1X9dg&EV$n5^W< z#Z-RzqeGdjwDVghEdC;(g7x#DgCo5SQ=UYNo!QKOCf0_)k9aHT_ix1q<x@Y$;Z9e+ zd3M6_JCXs|Js4}FNXt5IF^V+G>?RRi3H!qg0Z~{DE)!z}oezeTdamg`$C=BblTTbs z0_MoilH#X#o1cx|4M0L;B7%`_E=wE{ewJNZVQj>GTvNTzF^JrB5%CGr9$1f}SWX!Y zkfhG!icDO^g6CZFv;Y{~66b>M9sBBgM@NQ-m>Vdq+iq)D{8GQSEIZAX9PjRs?Gd<S zodSIkn}9h&mx$syoAbA4ip3mQP=N`OA#q`vlW8;z#HoK)E0_57^;(V7M+r)#lEIH5 z+$^2%!cqp48LvC!xfjr7*9Px+??4NHk{s>8%Uru`FT)s#I8AScT-Hs2Y%+v%ft3~# zx2akNT#FR7*e70!cp{sg(z_sQ4a!j~&*uPgw*XvI)>>jtL&0Cq@B!Me;gZCJo>ucA zn@`ZBPp&6C*Ek1=yV$`a2VGBVvR4I5!>}nR67c>y-6ru0XaEcOfCb)UqW4y>?G09t zixok()2Uw9)j$T?Fn~hnXQ0~Jke|MPmyO|A8-Yw};(*aIZh+Ckyse%!k^mK<kU*V* zg9*;3C>(!FFJl*NH2@<9kir{h#9`tKfxF-VAHHy5vZWbzU@=FvNHhSPwew}^%{P3o zkaIzGYnQSV1L4TuPqxZkCW~o_9XDc;*jVFosuh$b(tKuRU1-Kel^NH8qL4{E6In>M zp40JmltfAtL3kUACmhzadzyzFNp<Q)cArqO!b2Q5G&O?1=}E*CpTNPwPF757iz|W> z0TmIeveMe<J^}WR%UFgRtI%;R@FwS>xm+#gYd+uw1RV_!xS>d7R!Jwe%hChpYyPTh z7g;QonJ|XqkpULB%3)3w&~rAKl+U%`pJlfy=7H{;piAOh+)|e@*>>ph7Su*1EPP{Z z^qRFxrmMAe>Y*zHsT2m8+MJy)fPVr%*m|VnoZ<ao+{w@7KvY{9T$lWjY*37pGDQXh zI;%xFGgi=_)zyFm5E+o()cV)&Y**{leXkd_V62tw^_+e?MQMN}CQz-QK`HN60c$zx z)TOKybGO~n;%X^(?%b8n|L~N_r?0^V?qsuhyzNZ5Mj#MSG$_I4t4Pjk;=qBx2ViA@ zVg!K&+|-C;I6YHZARr-|3Zp4>0r(eC;cCN99AF$wonmK{lh@Bcl`H)hRHmY{kVH~P z(Xez30bD##$reuX7w@%*fEU`7Aa!>`@}-nAC_SriJH96##;Jg@NYJMe&SrQN(UIag zO-*CO0RY!ahsAJ!%5?h0sZJC-h<&^@{$V5S)(6(L+jOvjF|*zmbSngMX~+I=KYJnX z9aiQ2yB+z%^BeAW!HWj92hS%!TQD=qYMi(k%!$XzW{rXc#PMv{lTxj%_p2y7-5sLq zFR!l&dIEJ61sZ}Zl+xDjeCv0!w8pu>8sxl}kV==&*iQetzm#u+tlZyi^IRF7GGup) z0@AKgLO@rE7MiwN7?0L0o_L?v5hrb%(CxCJ^tlSRE`;E1M~UsYS5CFj)E#4X^Es|c z@oW~!`^MBLTgW&{W6Vj#f;gFl{+i4F&Ylc3UN$vRdz-nmE5P84S>*0(0{uzZ7&C~2 zh&@>E0nA*lmU*t}epW9sSuR`=wA(6D78cVld@lfuLB@cJlUc~Pna^ACghl}q;+6jT z?U#LdeQ{>-JxM3A0h^i8bRkFGnx223tEiWkb7{0T^47hsWVN}$*#*vHv&p;xqw05- zN(mDyfs}PqI;0WV#MTB8i>Nu1zvgd^Nh>~kaJ?kxR~sGh^BI@$3}V{GDVy))q;2YC zz6J>~Ie7m7k(W!_AZ0h4R^VJee*S`=r}UsL`wgEesAz~l<pW5!yVKTUbHe93<42s_ zO=nPA4dnU;+VVC1EGua>cBH1CcX-j$q@R_ir+qD;LwWfBa`mP?mYi97*op1#OYT`& zD~m-o*^9b|W66?j36h`>hCcca__z2!88Bd2Fl1l`mek8k&vdi76^m7sm3!WOkIm<K z&WXqx_khD<R_4unBi=acv%GjJFP@!9yd!G8!5{(2*2twFv6qd#i_2ZAt@dC>pX!`r zB-z+GwS|v{Qm49529TdRXA-eOz|@r32_or3HZ%%rItva3gjjC1dxZ#1snzY9t2sd$ zpsY}u(s%ki=<Z8Q1*p>bxB6btl{LBtvW@gWHSln11t<|m=UX3viUY<9=Yp0#Sun+| zoFgTS!ji&}<F8KlWN|*@4SjNQAcva3Q}QT{bBgc7Lm!l;s)QK`iX4dWV04AYszH7! zoQ8m!tn5UsTSWkBL2^;QbDa}P;kKfB^Wj^l9pW;z*Jm(x9x}Rh$R#c@qJv*Ks2*DB z(uIioIkWf!`o97sA-RMuH=0*&U8L(RO(wE*k(fYgPB(!|NT67*iFeVvt?$)CM`;>j zw6a7s09D%_P#^Q+96=-mfoX{jsL}AfeDKk3C?oX)_cP{H#R|1*UyKoB6X<A+_)`md z2(~CFTJEY;QdTqM4irhLNr${Orz7ol$x0a4ax|XG{l%Ro^NzfFd?3^NJ93#p*?jfl znJlzmfc+^d>bGxiNK-uC@5wDSnjcI_@OdF>QKWkup@08=tcic-mbfOqfoFl&*ZJNZ zExvH^(T#JOpot!8VX;#{F_s;a9R?G;1_A^Xs(ic+K^Fs0Weg@fN3oCn0HD%<1s*k~ zNSG#|6Wk)vx&^VVNz5G%_YMH7LW4UM#Ud;Ia#y8e!gceDU1m;z$2}8gDP8b0_acfm zkxpwYU2C4J4xpx?CaK9X%8dF~hURn@iJimBT)dzau6epcV*$@%D{6~zNg}zLXYy}e z^tflwmpe_&3wDm<_ct6*_Bw`4-q)maJJI{TTyV;OQ9UBab~$4ax6Nbu{M9S&KpA9v zB}c1`1k9d@j+5xlKqo|}yr$uj6~~=Ui&K@-S3yVprj4rUN}1J@6k>_Wj9no>hxnL1 zjT;@v=~ALpyRdC)f-@RlX3)$B_q>raW^fv%XB~x-sr#96Nbc+-`XGpSQV)0rGI~7h zOm-P(BqK!DY+3c1LIDlq_+hUrr$>i+Z8Q1V=RcSK_Lm>2K=<V2i55CP$$$IPHwJKr zCJ16oY4k=Mi<c*R=Be(Sb;OW2mxke}k}D-n(~>v~aMH1p-%`9v*u3Bw{p^!3^&IGH ztVR;HI>y`QHEmN!rxjr(yeGqMLW@#>GB@j`{O|ww@7#<^n0L0@jG()XYw@#))ZaB4 z&snU4y4!4obZ-O7eW&pN#Rt}bxL33JiiHTMiv$1@mz3Fx%!^EGQcGVXi_zsi)*QfD zj#|urprfufMtw%p0HGihsJWiOXU8oY{li^vG%=&6!=7AS-BZC&e3FIi^8B<ZcQegn zdeO$(jSqUq`ZdI`IiLHt7gHAWkB&1uCoyXpDsp*XhU-n1Stn_zS<C8{Fr!-Fqj1Ss zdcaEIGKg*v;njC&LY&fw#r?63i^&VuvQcZ`I@Acd;Cf$;7P1HT86X+&r|h~K+La;j zK-;#GFhml-&hTK+(5@(DfLU!qS?UFQ`Sgsx57k?<J(S0%f!vO!>^`<>WhEQPi_;-r z7w$bZ${)KzeZ$9tHu<mY!XT8OfANQ(CVbE69s=K6Vl7cgD&mvD5Cw5OXBlB*MsyJf z6e;<ug*%y*HPr<^^w!N;Ku#U~irpZm6`@tjw%^R1uWEsIx-MkCvp|cnA*xS^Bmkia znoQ*TVkB~yT=2msAn`%o)e^Z;m+-DgOA8GhZPKp~R;t$VdnZM44OfUGPy}0l?*?O2 zluA5-n+saZo!i>G3=_98Y7SK80EmLedK;tWyr9G-RGa#}0pDB2zb<_r&mFAOfOc6{ zk0c|f<yABvcrvdjBN@uyeRn0lex=o}24n=*|Md4i$?tx+m7i;1Kfm2dXLrNVCoEGj z+H7ez_tQ^rB;|fGBYOQ_E9$it!Q**Ot?CY`XblFswRSo{4<qox3KHFV7{!iE*3M<n zH!%};J0pKJH|byKyra;)n@$bokI|fV@c26Db@%92Y5i)*@oj2a@N||U*FKkKVZoQ4 z1C?c}Ugm`c!-h3M9L2*31<y0IApn@fxknduJ>9UtgsLCTI1&`bkPvIC1Y;n6gNfKE zFnj|>n(L~I$x2^^R5G*H$rzT#x$}5U$RP#~9`Bh0lR{7OJ0g)|0?1M($A;Z!{cHm* zn%<5w`Co>Hx7iWlZs!?hPe6Rb7z1PMZnwpPh7+d3SP`MVCicz(Uj)5IC_I1l`AeBh zCbEO62Z|Ht%(EaxV&oJ=SU4JHAeO^nkGpHq%rISvjLrqT1=k@E5YhzA=PEaC_`)ZO zP#@#UG763Q8=C&PdCJ==X`@}{YBA+Fn!XXv21I99IEDx~i^8e7cqX`#qC;3h&|jsR zNIv@p?20WD`&!=@q;j8X0rcVehSIqaUD%pTW)S3&;;|;-H=0nEUd)@iW8s2OKV00J zYiF&@Xo<~MZWc!kZ)1rNxP?>;4HRh5B8hBV!-Nj7+i$-7j6yg7r}lgTigFL2Z9Esy zw16Hu@)6^rp26RL{gw$)oHmR&X-vB{@eKGGJWBwfrQ4FywZteCAwMe{3bJOlTA*pc zk3y|s_Zq@oO??hZw-u&sw_}ES?W6{5Q!+NTRU|M2nNK%U7TYnKPUMYyZ6J2(4>Dgo z(%5sXIS%*16hCk8XHxAkY*M&!b0g?hG~{$x%EhG6*kIu1v!hdKhC5Dt*7}gXKA*~H z!qtFrImJO12!aL{6S@^40VLF(iR)xiDF|_-?&ch!@2Kr-=DLPpf!%dX`i1bpqr9kB z;!$9QLcME6=b{heu~urGhIYsLi?K_Go-is{pzcu-Lb=Y&1T^{RgG8<AB4FXr+iOeN zKILc`AT%6`g;umZeQ5gKrp#b6LPejLJMOPOJt61*YQCij15o?$hDUtZ>vtsr=tO_n z>o=DS6bQ=LqvwurB()49u6A_*OYR^kzl!~iS9c~_<91DMj(|$uKoVBeR7r{5d2XP> z$_tyt3@TUZy9C^AE%a-vB9`ekbAb}usbPhXWqGa79^-+J6Gu%4F5z0%om!>QF8;f! z#F-HcX;Tm!)*ugR`V_-cVYD?)aO45(L|(Y7s$o>Ptqf5pGixI|BDNWT5*O$we0N_^ zy3=^_ppmp$&EtD9&cu6#@B=zsnAPMg6l|BAe&pnab%RNwhMZJLX|y>YXaCRt`Yj*! zU%hO~yX%p>g9s6VoF=8qyQw_ZqO8{+%6vOE&-n<&)KVJ5As_DT*7ObTr<xQZ&~^fH zuwf@jUN@|4Goxdj9qu#Px14iM;}#0Y?AUQ2QDAS5!V=F9?OOX?7G$tf#JC+Jz#QEk zM(19ffkK5ufCPXs|7yE)`CEW|f?83}s(nku0JWj+Y-%utL*Wud62L*!*VTK`XfbdK z5cY}FL<<*%a;Tjlw;gC21l(s55lksvvlyj=A+=8fQqcmJpsnmjOGmi7iL(XZvUDJy z0T*5G*p&8sO~V~L0=xe6^ii9g%bW9i+3$eu(V!?0?3$6ZF!lyY`0e$Sz7C)P0xdp9 zC+5J|Em;=@RUjuC_z?$^($pH47!B`Sr+;gmD5r=7ybXCTv339^3HX+#qxJDj%-5DQ zOBV*{(5R>Fg|&6nwLwZ~X^kv|+>#r{|L7=D%u@PQ?+fU6rYV-Q;41t%G(UEWyO^|q zaf0|*kf-0k0NSuAh(}nv>1(exb3P|9GQm0i_T2{wGVNHk;NR;&-nGvW{OdQb*$};Y z{!CWi{lMoDtQ#bC?*B8JsNGE$#$N~cx#^QrF^VKti(!LF6x2gJm+fkWRG5$t^27eo zp5DX6)@)&eoif&Um@Yzmr}Q(0!XKcpvy)S5pZxOkXEK`a<m!H6xGziyJl{aL3zMyG z(v~GxYu0q3c}l~8v^R9$XncU9=`;t-8x2nMc0Bti;87^U8@<v{=xhD}UIt+C(pg(Y z(crU)3EFhM;}ihR1t+#(=!8waCgLUT{ZHo?^o01Um(T(!*=)>LYb`267NKw`oq9et zJJ*u2;pssjH#aMN&-*f(ZRBY0sRZM9oOlA~pjl30Q~;<baliu;A?BzU6pN!_r?w2u ziwDWc%GQyHSl75NylZ8*7FG11vfjxVl05YUXCsG<yDF*C=QMfY=sKi90;;@DBlHwv z3Pqr$gf8ZShXx=FbhRgYc7RZwN-JhN(r1xSI;EtL{j(!W%&6w!6xVGUw_Y>lUwwAM zYMPZ1MEk*Y#`sFi&J!ae2=V~v0zW1RqkrNT9&WQ5EpDKrf<PUcV%VsPyz#=SS90y$ zInI)7VO?!(2?;;Hb|<VLE}0}k??_?GHwVf(YT7ulu<;Ip1Ug&rCaYaE5+JP?8@9VG zS#?Ejry3ZCR|5!(HCIBz=P@p<E3_d%r541wd!`6aR*Q~8NlknwTVW<lhkeIC<4n;x zsxbGnN=_A>Fe_+uHVkG4a*N$Oh=HfsG9UWQ*1<JH<9wrY5l4VGn><@c20+R$)=1(l ze&!U2^2~mJrFsXH=pVj$N0qS;HxqexH6|EtwO*3K)K0pRXhHk4=PhCr-dx;sx&%<z z{bXgzgm}MTA8buM57%y6LhvZ$8i1xUdfoR9hAb}eenEEvwQs%Ka4*=}1uPbzDpyTi zHtELKNrrhq`~3KL;C7u2eJ?k>#`n{?{QQ%rvOkRZnQpYh1VS9%3J3(iujF35l?`+y zExk5N4cywr4$N9N!pK+eD<%-l$Z#a!>sA9Kvzip=8rzzPDruEUJ25RKCsjn;yYN(4 z8k?ai5-af~fW?S60AvcCiz!zdQa#Te(B1z3(NLfO!gG(p1)qzKb($C<5CbIsZ@<5n zUp(!}rN<{&HzW37XNp(D`T|`qx@iP+bW{kQkNbyQ0sQ#xtsEUcA^&`)?|E-;NS4bm z*5tjPFp%#!{?9qJz|;#}6bc)Ne&D@h0<yzB@0cPZ=%APug#3LrKBu}G<5%G7h&KH~ zArE{Fy8O_Ay1RCp#vxHuImAJwuI=uA=H5ox?44m;GR9%MFL)nVBj5^x+dLTTu^6Nj zw>~Er>!YCL)YLUS;xHjA2!b$Cq}O&a(R>ieyYqAT)zA0k*^?Ipj<pCX3kh^a+{MZO zXZG#Ql)GMZ)(5?oD-_zK2eBLtArk2RpiSKXfC;IGksG3(9r4O`*|Wt;u5VZJ!~5@9 z1ePq)5u5bdwOeklT*%K~Qt^ZovH$VcpUCh3{EmkQ9vqlv67)&s$ddP?*K3*aQC`x= z1h@-y+Q3dALVxybU*@}(i*<!^d3_`2S`ha2=Wcgvd2zZ&sqV|snx5sIxTI+qrgX@6 zXc$p2;{IVx4D*4>bgc1r$f6GSg<cS35u|)C-~RMY^T|tjevoPt(Ip)gfN2vQG7w(` z5w(qBVs`U2^U$luZR#sDdmUN9&}{HjiqW5)7OemD+XjL=8g%Id13<$0?UD(s;kKql zZFA`oqpq&@z*jD7rK8dv+iYwf)M`=nUal}6Fn4YatTJSw(KK3GrG@<lEBMkoNL&yT zKZs?tNagsTOA9|F6RiQI-!#w@fI>I~7+aH5SVF#YXT}N|qyzje1WSE5T9KK=aGwmH z<Iz+*+Kf~<0Kl+^O|h1M@JSr<zyg_xL*3B7LscERxCzEawPKVQXss+G4~hj9wrJMi z^dTe%aSERqjJRNnYkUKp+Va<qBinUjVgV4<RJ;3asNJi69aTBTrufYWascfa<{)80 zhe8&vIg-haK_GWAl8{w$MZFQJBvMPtyq39*j4&R=`{_6BegH|2WR8wF^JFYep~4uQ zVlf{%uvJ#7M8SIEtxQxP5YwProQ-b_=aS>Xw4x?Q<ypS6&R_3km(-ugrx-bR<b6%> z7=<q2#N>M6l{gK?$aLA7r?ysbKo%rD1AX5gZs*h<fF|^TcHl5;z=MQw^%U9{v0kfI zs7ZXv-D3-*%bij9;DCi^0sGp;c<tgIrbiFyV^~CDl)lt+b~~NPi<1NS@$#Muc5u(x z0??B-jLw;v*~L=N8SViJQy4~|5Q18ixnQ9H*5IRm_X6J0H+LL8{^jk3yn1pXKl|iN z<foE~c__M2pdf+b9=3TlZAV<GiD8G`?g2QqmKLa#u)5U5hjj!xBC2y`n6hknRzsga z0r5_EKZJq65_^T7H^o3x84NLeDa?|#(r4iG1zO;tF<cl?f(JGFf}Ybp>Mn~~`yT(8 ziWitBCasC_@<i|XqvK=w>3%1_c@db1i<p`nI&yT5IL=Q`hjKGo@;Th!Gl1m$-8I2k zaNNtXncUo7$-&{77IHo5Xb{Khiq@IrCO2&==;KyQ-bS;vO|<mukM^M6*mJt2IjjNf zhGqy#VP+_mY7u7Attr-FaZLIhIyWRSOnx>y6QiL?iJl=8f}w+VN&Ny>-bJ7?DSZl4 z)N4dCk{noy*T9$eIa&_sMu?90;%>}qY=Fm-&mdy#>A^tWU0!LN=u;yDQyZEF>EGSl zoXg3{Q`u@!_&2}*+WhV_(@+3T026mo^R#${OzY)n#-xvHfR3Kci0e~uI+x<VQIw%+ zv;SV`=S7Ucvy9~U<ms3Cj4bHthij(M+)Q7Pq`~gcb96Ue$Svf&j~6V!kM>%;URf3i z;3>F<cm^P0j#%F7HMN`F$Tr9c#GY#$J=C8;fdi%l{1$HEf1%IbCr|d|<Y*ulTC89) z*KNc^ma{O@_j5B@%di!aiGj0=CJXli?6G-nO;F5LL`L*J&MQXbxCnHw)cbaHu+Ovp z{kb*_!M?nR*ED+>4q7sr*!hYRd#>n$2&6kW?97>=?Dw>2plYh#3oUk@eEJKKH{Zy3 zsXvEA2_+kh$yzPU?gtE>v&GK%a(PjYXA1|S8QM~6Ny@Mi1}RODMjXV(6X`p5lOQl{ zc8mZ&I~&UVJ-{zJIT*AFHfs^$9}!uM5!>6TCZf0@FP<F8P9w#>2KHuuAYVKl%1OV$ zvFvuW;>dheSfJ_Z2gK+Joep*>b11waNa;h8=|upVc+fNv0rE}}i~+6+&43_xxkYiy zP)JImmf6#SVW-jlS1<PEAJ3P30C8~fFwM1s8VveOytwJ8*qZL%g^FTH?e@TYl>^i8 zMMC8`6bUwWi_p-b+_iQJvvuNNp@I(ys9piaqngkmq<~_>BofmH$FaZ;!BDRe3x#?= zDeRE*+`H=_<U?Dy10K3ajw3M+hZqWgW-b(huLHORKoQW|8|{RXu1$BUAT~^l>V(P| z4<=BX6)mnA+V8DaJXP_7hlk*josHC!W>RA@@GX#W6}M@vI)D5H-fM-@22}~g%w#&@ z@2-*y3WBBU)Mw6_HFSN<!UqpI{&zJVv-^E?)aMLsM-w2U`VD#sKS!p)CDUSV@32q) zcDmVe+<pl)tot215V~SfxF_e72bDJXx7Y#W{lB@qA<Yp5*U@l~xCb+*F>W-jdsrGs zl)PK6h}!J_ry8Mt{BR+A{hk?0==tu!4Q;Vw(e>Rsps+_g3k}NSYLSz#IjSQ&f_Mo7 zgyJmr1|3rjM0Xd%J~Nj??c_&uqt}I*b<O~>#<>;q_<kFkBf0N<I+fMZ%31KxeU{FG zDcO|-bkxfOb1Vy8&;m&(aGTKzDWAj@2o__|rad3<jMj4kzj^x9M+IrB=zP(^<9GgW z11e}&_S=D6&2l=5VG@R}=uSV=+3}FY8cb#|3B*+Abbn9oW(#@TJJtl=l^ZRFnz7+@ zat9*<Q-Xoqc)21KX}8<DL69bt$-=Z8s1R5^yQX<wA?0oL6HxSu_=BB2Yowedu}>*Y zAZq6zNYdx@`r$t34mLKu0mCujf~8IsHm`*6!NS;e1Mt1oiUUnjOn)Ujm--CHrk;j9 zauiDKSjd$SSWaNjU>6)9CzM<%L8qWOz2_7Snh&o(Tp638v;vO38q7$>TKtYCHobA+ zGv#g*la3|5P)rdt4ouVwylh%$W1_LyakW^|!LA`MpT3l5k4&!tMJ*F^x9yH@p}f`i z@#ohc<R5;x)(&?lUw!^aW}8AD9d<aS9naS;T^-OE2c}(^piZ=DH31-f|3zE=*~>lo zPrrL7vw1|5lys5F`^$nxEQk9Yj<_*lNK@0HpimK>A8PoUwJ;iU5=QdU9VtWl6Y$w6 z&8NUtFp<ZzkmK?_Z6<C<ck)`V`;*g8G@fZ}rKNMiV!lBS2s78BP!{i1#`||T#A_{N zvT6u45PQ8tIX-)#v2c!a3>P!=4adO)FbFS-2j*_FlFAl>v?ULarHjW9?iN0XQ&!1^ zqAu=<U3f65be=(rpty)uo~L^aI+Phl&~}Pz{XOGN$!_Oj8x!Gtg54@csQR9uiC&au z;hN%b=xc-a#nCU2-4w@9nOqUD-`>m^IG$)h5cnhk9VSF1@EItRst+*&a~3qXw*tDb zNsV*k6Se`+)7Sszdd3|cqzzGpSDp5Ui;+BglCmqpHF)#>R*nw`^bMv?@OaKD4s;4y zSfU&6b}4)SL6Q}GiuG_HSf_fRVOU^h55fu&W3wlZPq=FXkSD8YNhrn=*SWS)AtXw1 z8?c8pKu=tQ+^}P#TAwCHAdrzvK(At=YqkxPhim6!a&$5jRq!1@?LHBFDEsIP0@{#U zC5q8)<!F@oI)OzDBp^vQi+FFi3xvBEDos#ye00m=G0$s<GvWd&ZEL5})#y_XqPz|i zIMSbwZEsKT5Hz*Hm2bHfrc05c%K_(?yEN?7^!>cQy0-4cS1M1A4h<)uohrDpFb;Wk zI^bR(-2wJ*uP-M;DIlD6X%M^yU?dU|(9yW3Sn**0Hd$Dgwpvc*{l(U8OYIrqbBF7Y zTJl{};V(6$cnIb~DKk<NXABCrlNrx`GciCVL1D4+*)hT;m~^*g!I@>2c#THcbQxVM zvXjI>Sr|bBz;)Q~6P3Miz#Jz^ZXGIg2E)`YH--z@8U}JA#nk~)EedcH48)YO4b8Q& zl9DBrw6yz696|g5io;o9(F>6$z2^9*q_(yeRv0@Ma4##R-|CP%jcyV9Sah4;U9IJ- z7kxR`?#<|YDb>W5*IT*KuMPX)t(zCa-eAC~6=-89_V)*U6E_*($&+4>9rC@Noj-l| z1D{`xN;9K*+BC?f2~}|#c`-tT7`GD6J+W1|0K`t_WS*~_6EmQxcQh^v`1{LRy4Q65 zsg4JU+1Tz`iUOQqI0NrRj(4D?u2_NzovBhO3tH!E4uJFx&sHWD)rcLdlT*JO7=-)r zgvxkG-Z1Tqz)sNLeRh08y^=Ue<i*pcnuJU~79h8VyK=S@6N0+eLKhJeBX>4(4uUqo zv;m|c+l`$%{@frH&@e{e@DF<(%EO)>_9WN%iJW<G(4$Ef8ZH>W;MuuDJF1`O46@lr zsr=%_A?aao{j`GG5c+v;(_owjvjw*}i@b&$_YXhb%F}}mIr^BSVC77+t^1kAfR22w z&EwyW7R-g1V(;}D^dH#oxAZyGq^zH#Ns$?7%_p2Xq#VCHo=3Ja+uHMj>jcvn#2LsL zZ+0d&1wo>BAI{~sde&YZ$8vg*az)1}rvBWX7U3v1N!N4wDdHlo*|ENNZTaLzo6Q>; zal%>_37$LSgbI=5mP8O-Fv1;ljC_VaBhYNw8QP(HFqR110Hmy)wyHEAxQkDk<qo(p zzA<!%_u4Uy<p1&Af`AKDxOnJy*oSQb?mPmI+LeSWrCarTKzIB6s7;h%s2~3DV4v<v zFkcugcdYhW+JT@#z8Gm`R;Kb?yD{t&LsZ7wEt7x4_3b)PKGF&>qu%e@03H~*>@xCt zyP6D#07roSl8t51cQkVh-sRkYHS3gN4*NA6Zg9%c88$;xiUY6$`r`OHs`U&g_EAZf zFB}ROXiRqjX&I241*bO9ME&^WlocQj>dNU+=$b2qx3GB7l_y|Kj8{%>w=2Z(5Qtfy zt`-}&xU|GtYGA=(!}l0E*!Fa3YAcV1i!-3Rtky1}V=Mx5qR=XM;eo5D73v69)8LLX zLnS#aG73-lwyU>pqH;?!(Hh&w*ApNVEv0#}<A3NBD0BnUgrrdm-vqwjwdq7?_ty&n zAn8rI(hC4b@Mfv;`}5L9kYV9+zCpmf9Ns6zee?{R9!B!+c20p9OoOnOWZ-~yykKXl z!DrCYhcu+!EFNkkER5ItdajU!?=?xiIy)eUrgV2Y;c6k^bc|M)S^i+IL%>eL&wjYK zG+pP0*&5@)J_KEcMbVD?W=iJ*#m+(w*K=LFfbDW%RdNkV9m7jxro3gl;>>okg{_k? z3Bd2?D#8`$*ct2B+a74F8?pC?2@81Ip#0(QW7jL6E=?Q4<TP{QL$>~z@xOIyE_jSS zfg!yKPJ_<((!8;yoXhsz1-nSFBG5Tr-jA(dbazCo1OCgmJNfmK2AL*D8gMT(5OeCG z?+s)5lf!*BE11YpI<(uAM<@IGcX}Q72TV?vSNCS~tmo>pPd*|2?S49Dk%W^pTi6sL zYJ^P4mV6<^((=yS?rBWsK}mmi#8xEdbd$6B0EVUuOvOgaK};Rm4W1Q(4PBPHL5_3y zAel>kwCz+`C_vpUdRU1jkx>uL4KHxoRlwx6S!r{i-5``22U@Ufk|ifORR_(uk*%et z*Wl{5kn5W(d35@iaV*kUjn4)Xn7@4gd-?K<-^g(PiTvx|q#B>}87u-OGW>2(b^+8J zYc=rUcEZWxVb6?c@Qh(Bj|7i<g7bj;iI{>_6cRb9&3Ryod(#cOU%bx`+C;s-9?8w^ zrCB*^9EQXzCJz8$BQZWYXvsgr=hr_2h==#G-P!fS^Nf2lU-{@fG!YfNPh3MVRxa-6 zY$SlY09_6{YFy?UP5eK5+$Vi{tlc`4Jp=a!K@11D4(}UzVX;p6waAUhaxqXPY;GHv zM7SUhoglQ}zPi0<oI2W1<k8VFpV`0r`dhg_JCT3)o5wN)*lwN)ARE1?RX5UPs5!_O z_Z!{+Vc&c(AZ~+ViNJKyA0ktHLJ|Xix*eK9K&LPlEgX7#s}adcrMp5E<-@L|h{UTu z8?%$!?9{DF|JQ^-gdYe_OF*HcNMOf{DksU=u|o)9ipq3l)qU;-M94kwPUd=364H9K zv(O+3(L1;=Ei^&?q@6jyKaj12y4^SDWBCtX?n^7kC>=r9E(9lXM|bSh26*qzbp~K4 z!>$>@Z*5-0tDqotg#b1E9fg(yuP-J9`K_Q7rvLj<f6o>UKziu#L-V^Olk%e;Ecp@> z&}rLFDE2^s_a18n3Y97*b3FtXi=EMsG#Nn^3Jzg24cg#rNA66vs?qT_mciqV;16LA zGdp=OK%pQD>0g<3+T7uWy!i-n!+ys#0`z?VO90vq4p3?mt9X692mEd()zHi+=z>;c zoQ4n&0b9wy6q^d)d4n24q%S$pxr_S*ESf6g3M2+3n#zgG_TL%DND=p^4WA4Z9Jyj| zjRK+)-3h&jN$IDY8B*L$O9D3-D%^ny?}L;&r{i#6%k@f7PaRO4qH}_ewiO^HJBI0M z?Ep--5seIZh0j7+SJIk9Mw$o^JWNkL^xb35MD^i*DxW+)BLHSHTe6rnJJlv}8*_+U z6eYXG%o99{IE?S`3?1k-g){Qa{Zb~|1$7GY!UT;nUsK?IL{6_X%3)CJ^v}SMK<5Xe z7A;IWJ}O4CWDIb}xTcHSuqaAmHw>{U#&WZ*DQQu-F`y?g9X1)^nkY0&;na2au?8^v z-Jq6SuEeIyo87FPsX+k2l)Q9b_gtQz9?4$6FRw3e4d_V|sg!sF{<mJkt63@Mqn*4u z?aIxvWMTwD8e>yh)RvIm?Xd8kX;F)0-g5Nz&1gnY9}1>Ye|Hc!83Vs~^{IUO{WpeY z)@MA?>$Pr}TP0BMQDi9Qq+!6s22~Y9e%38Pm9P{xuX!*a;6s5V^zDU>`cVKOX_^Lv zQFSYeXW~x^OKgS9WfpF3gX9)-S6#B8Y9%g|wKY+!(1nkHe8UbN1v{=6D7B9soypbZ z2ace@un?|NH&Uc4-tU{cTfILmf>GnJDJLg~1QO!=KHS_IfK1QupWYaS4!Em=Qm-~W z*btx@%3r^Fq)EI|6D+xoga*oHXKI7|8P5&KEv5SuY_qMIbmalpSZ8NXwJ6^sgC@`- z0=#s{P$vz0Rsots*NfQk?s~50I-!y%RxeQP#H5L~xq&5f#9I`Q-DaTIV8i<d+V);Y zyXCtz@no3x4!Vd5Ev_;?J=>GNydC*@&7Cb|oi~7f5RQQkJ}&ueote_&&M_fkUhgZH z?XFa|p&H6R>uWtZJN3y@Q|=~n`P)BT$$$9jF&hHVW|1FT4Koj;zXK;NiBDou7D=xj z>zVxSUdCfR*I1)KXrBr`fzwG`RuYF1V;a(}{00PWotin<`oTxr^?RIBLwmR)uYI#~ z*Nw*4P$U3Rh#&~V2vl05Wlpdeg-sf!(|e;Ga}<OX@m(w3n6`Pd^_DxW6o(iOxZbpj z#f{u)HFdX4<&EAP`0v7X2uMsS8g<NSkqB!@0;1re%9aKH`;}fSEg+iuo=}D3CLopI zVINbFrzK5r2DO`hdpD&pPeoVZP8(x2&>c7%E{Qy*_PbuA%W<Z^KXw*D$<Yl0c%IuH z5iV1Mj*U5y3?4liO5W=7z!cO?5A~oPay*MM7pY5yCoKKH8Kq@4Ib(F@dyt?J(a<C$ zXt4Z9>ppZ-0$YJV>8Zj*ppY|8a6$kX?oGRC+QjI*P%wa=VF=uU9l{byd#%K&B<B0w z*UJ0oz|h)RYCGM0V?s8jgl4<hC@>%h06_RT;2&%!nQ|<j`T43m&rw|5jVI3SH(ZA) z-4))Ml+KekbaFKXsO(6M9#vR3#VXo6eHRWX+&j8Shrky1@>oqkk{4q)0GcYEF@=OQ z_<>G|`~B|vPEPiRq)-8Hh9GA&8RNCC(=8RaFjB)#4&AniQ3%gzs(;@IHRv7=Srjjp zb9PsFpLpNB_5sCq@P6KYxHVxXg4PmthDcI)xJj2{r?}%aAegY-Az%-kHV1MD27ys2 z(P8A?;c@a1Sg}ZYQfUPd5@A_;8rqpBkS?^94sao+Z69(~g)WNsOw7Z96gl8VGILrB zW1|%nsk!=b&49+j9sf2I?l2xUI#Z~ZefR#7$r9F`c76(S!O;-{4UF~MZ(on(fBvc? zKV6MD+J#`#$zh)p13Vv?=1FJ;1F$mG$qr4M9wXsSrzgwBOoNo^8$8!w3*`J{wqWOm zH41=oNWQO*_n15|d4s-1Ny|`x0iiu$aRp5Z&h<8m$>6}r>A++JdIo{%bl@S`l|{`o zz*xR)>NNq|0MuC)={XB@77t7e1p&YSBUW)6jGV&Plbrs9K@Cg>tqR~Qd|nuW9333W z_3brPFblDc7E>T|-Se|UDQ)0|FbY4=2YEqZtJ!o!^ON(NvC9t^uJGt?0)@r<zx~sX zuApgCTU<ZlEb@<Nu&%mBaW52_5JiIC0}?8m#hg=)D98v@Gt(3<eB^MyO+O1TQ;zra zzNMNRkGj-X0M~n^#T4*i)8($F1V=8UhU<sd%?gW)D^0*(JRZpX-1JM@4O>NDYeGF4 z1O#8deAH*c{^IGLeE(rat$+&q^Yp0C=^dU|cp@O~YA?eg2IrdvHCaHRGmTmne=}2z zdw+4sGiGb8QuEkazPrlg7ta#n4_5RB=`vYo)BtEem%sNg+y;ti#80dRK>7aS<(?L( zxxBs6hVE{%@e3Ofl~~RHxj!!rjR}2T%5kC!$&B1zfs!gJ4nZKk-$AF9mANC}r4F#@ zY$&#%AK~5oS{`d<b<&S1o`Rch;s&86Qe2>%`%eTmOb~G3QAmIy0<CmZU<FK3mMdPM zcQ+GxKU!&mw*3P-(z#Y<pFi1`{ry2rm22w(FCDd?ZBm*c;Lnht++Yl}-8zU434JS< zz!j8c_X<t>J}5GI=_5)*f3J6@j)d>Sn31kQ`gbO=8~aEb#k0PyR^e&OOgMtH$(xCh zCxA@=)UEV=<hwQh9%DEbRQmbaw0cc#1ndR_NbsQQ(0Y{8xS7+yB6iW+$~g$5!NTMx zOEHDEeXVdSDO5wt+t_<NoB7B!p|J)1tlNg71^S*V7=2Fw7^N)uN`4*V@K!ry(Zs~Y z&iO&P4`b<FZb{gZNnV5az<@~e+{ec$JGz!Wu++D9qZ3o7i+qQ!9ZI`XbI&USli1B! zO!Q&*|4Z_fr@8Uk!x{)!)Ws+Mfi5+*<7uv9pq8Klfw|r}rVD3B2j-*&w<<j+hkFC= zk(U}I{`!k!{kK_Rez-EPZhIdgB`4v$X5cfInA~b%Ift^9ndqSKfQ7EHLt-z&3huU{ zw~c$%Yj>H9g~C7$ey+W~?TbNIgVGt20#`sN7?YN34rnrP_e6jd5s+83*DPHXuXKHb zz=eeZQ-CauLQ3-vXtFmA2ubD#zKB&$rTrZk>j9rN<9)7HbaoHv%Z@YFgxOHXFd;rd zrgptvHv~u1?>7l!TyqHT1VQOLMf1H5f;N-*AKy;pKmOHYf|ii1w!DTL*&Ft0y2LSY zr)l6;Z!&PkP4cy5Gl5CZ;{HbO^`Ttq`~39jiTv&FZu#@XB#5mE0Al21tYw}Fv<uzk z=HtFKwDN{1@7RrlFsg2|Xxi_>Mt4n6EqUqy@98tW3eAcbuZvX<M#QzPZD{v5p=#UC zOp{8fu}ZdBk9f{_o*l4^<^rD&1q-er_TkS?kL2R^hFu>DTfDc+@se?wopaLQ?>IZ! zBRKF<J9O--GcAZNMwxc=OH#~GG*PUJqgwHQ2fVkS0NdZWskOtZ$hvWM68?<%4E+#& zIXaZJ@mx0}7D>JCP|mb?g7W0q@l!qT4O5!b>x!n3YZJ14N}1`i($RR7X-<Kr#EPnW zRdH$w_;AqXnlq$@?@9~p9pelNjJw%RPWM{!VYFfbE(!QuYk^p5((Vwm^IU&^pucz6 z+seMXcj7wTY9o1e(2+mAxz*wyDE)|!1Dg&iiH0)U+H|7udqdGJ%>w|xHduVO`8CK` zgEjN_-@Vi4<Czu{ZB8^+`pn~b=<C@@;w>={TI<MkzF{K~d4c`-7}Gw@KU5d;8oUbl zbTq?w1C@Zj$wo7;RmF_YTo@gv7LBmPo;zAO_W&tQc@cL`s}Q(jt)QBVNER41QPD1C zr4u^O`_0WpCd-UtL7IZ(rt8bSRW76!-7c}`FwNneb~<>nq5d{UFsI=}M;~ki=8gQ} z{Y>`Zl+<6zUXbu$prS+2ZMTh*gwe}%d9Pj4#yZ!w3CsY*G|Tlty<N&^x|IFH9{ra& zR*oYk;-jR;5iEijck+5Tai9@IFgCv*&)7woyrv%b6$BO5>>!S{tHpIazrHuIm)NL$ zOxlHwLoxb<`V;noCbJsKNM94c4ipxv%}Tb*tlq~W$w2QI3E2QwzGJHP`TFOP9tc`n zA|bBRS`7+abP^^6<}hhUOm3-&CC;ogTg}DBOeb*QBez3MB9nS0?gArVC^3mChJi<m zNlO`+>l-8+E95incJ-QNsqyl|B;seIvR-O#YIyi6tOh#X%mGW?Uaz)L4SgS<f8;0_ zRZ_Tx2^huRok!lqSDNP-GgBE1iF0m1MO@E8J0gV%!Nv->jM$SO-(S|(A0655%_aAc zk2PriaB(kxczweaj*Zxb-%E@@wa1sp`Q#q#DpR5=D3?~`M!rUAwV*s@6j0zjVvgoZ z^2q0_IafjWRTvj@Ps!p%NZCQ(j7bQlFz8@f1O$~#0??`+rm4SHW!-8ZBc9)eDIr#1 zOC(Exkubi+_u<*hQ`4&lf_}+j$U0A)Wq{Q1yjALQnDl)5?6G|I_)wl|(EhVtxBvXd z*HYmgtF=;DSn`e%qvCND6PrA0;!Fp#a!$z?M-lYqW-gze_K1kbEDg^$T<pf<IRUXx zP7i4g0%SBk-x7EkBzl18wkB7agelMG1OUmyr?n#Eo(5FJf)LoE9fYbPIoa>%&o3F1 zFr6XCTwfP5&}9}7To(Ei>)ZENa<tdy6axEh+_w#%_ryB%(k!1*1VGHjd>0B%Ji=Jq z6epIU77p{p&SiRyO+ZFbVyd8_*yIV+)F?5X4B##>L0f`P&u+2DqHEC6&#T4XS*I`e z(6(^8DX!_;4;M0QxA-2ZlnFZR+_dCBdwiy!rK8uRVVDD`Bz7AvFD?Y4y}KTB><)Qv zOjFR%LA{YCL5Wc<!7Q?ASu98Uea6Zrscj`)5O<mFivf&70oQUZ1r$(>XL^?Y^7c;8 zdr!Xl<qPe4$BeHiFd(j!``Q8>enh$Nm^<>%hb{T$-Pk3lMVmJ*6p~U4jF2AmN5`N# zuJ!$g^7Nq1d;neh`R#)7YO*q<J_^p}VORRY4htxVnSr-nda=9MnjbveI6EzE20<O& zY~3Q)sNE3O=|P$q_et{@rfX35`{Qfi6;9;Eqk&sg=VXPn1EWY{x>djue7@D9r_cO_ zDd4~Q^&^S@&A<P5G@GA{$Fi6&h>Tv5W+XJ3NFuFJcP6%B<59EUtGun<j@n$H3ImfA z&RynEJ~Sa3^Ytz`egODlIOuZ3i3)$9)%0jG(hn&FLL^$5E+F);!E(M{n$nmCkiPy5 z9<rA&_T`-(>;wJ2vA)N-Rzo|jFwdS0C2UO?h>i~SIM!f*(Eq;Fq&U_$cDtF9lZeh7 zf&7VH#2+;XW5<clh{QRX%%!h4^6X@f3P#tXlz<x~Q|vxKDT9Co4j~>oh(Ta?g(QW; ziNHIZFL+(<H2I?A%_!a<%X(ohW=IZrEsQs>M+>{z`uBL>2-x7tVtjK6`$LFz>wOrn zGLCd<%Lw220(2Sucibkw)Z}FgpuzM<b5^+trCRMiHGHpJafdnb!RjCgeT8D$0=ai; zRiPKS3SL=Q0t#FQKJevgWx!GC=ab1Np#$`UMF0X+9=M^Aa1&q@J0IV<#-IT<VT1u7 zR%~9-NW={GF0cV(nW|{4+yGJRP}M9pg+wZl<(Z@5eFX0nZH?`4RWETg`b_UN5;X2# zp9#(Oeb_-_3<ne{z+AANoa)0g(DSHS%*7=1dMAaRt+_lM^eJNr!;_*kqZfeh=r+ix zUQmsSW5^_OXQ;sU&qj6PibZU{-)bA4q6r-a6f)Yi><zkHd%*o|&^%xf8AUeLIz2GK z5d<C-9oQ=aZI1VA2w+UxQUSA$cF9!nGnri$A=*(wMGdq^tl;1<82Z=^a;0z${Ao5~ zSB5?6K!eh==buZ|TFUbLoVXIK7=XM+630#&A{;y)r3nUoe{sidX$txl=#`aGk5Bmx zJ#Jtw=q(t?(g0=V=4O+#oa+Zek$-=^k^lJBp1i(Yb6N#JW8^Mfmp3CaP|(>N?sdr% zet&t-?icD^2->t5Z4{P-k`__OuU>s7H<#z^`fv^cE*VVrd7GKh4H#+dro}-RmPBDw zHsJX0HoQlqLS{xs!el3^d?td@aSR!+J=Tp)x_+7SWex!$;C_5>&1cXBzH-;Jz}G;1 zf{I_5TQkK%+Ucl}!~k-C5ZHwBc08fz(`<4l&&~#1TYh)(w#GJ9pi>lX-4-Z}F+scS zM$XR$zl#7o`wf!4exEjEm;(NIJ@Mkt(Eb=dpA6gbn@>+&XvUt?B~bHFV*@f>i=#%O zNqf4Mcb7N%-+ApsnPV#1ZWvQQ&&R+1=f7c6BZErc7xdF1fb;pY6E>3@Z4`g`>9PFb z>vO%&=Ew(J)jUsm?NgUi#^E~9X7FgZCO!&nBq@r$CfO<{1JlTWsS%Xz0GI;?0?wgY zS8H5`2gjOT0$9_&*Uvo}4+U+-{la8|V*(^$bkmUcw_92m)Av1gDx=fd(2V5n3W{s~ z<n)yB9}|>!mzVO*d5ihzXs=m&C?H;=yT^HfRV{$+qw#{zDGJjqq}Lxme=bj7yr956 zC{A1bKzBDca(8zpn}vaX$Y&G-iEv^Q<?L?F?8OdJTG3|!-Nz0ORac|IJq0RujF+dH zNU<A2Cow0@XJ@=%O<0EqU8C|~OsCiWaNj(uO%NY|t``3rov4Xklya+y7)dkn{r~md z$TXDoVfmoR&>Y!9x!-L0JsW+kn=Gqk8UX;yi?U8~FssJ{M2c6tBex^1!V9yGh0qDB zVjqp7D{O{MqTm5+!UO{y`rRCr8pgMJgOiei2S`fn)b(@pykZV9Qqu<pT_JAL-rfPP zA*%E)t|1JbB`11&=fVX6ozJYBZMm>S<drf3NcuXUm0>Kr@gj_r5#Kq7USx&A19PDQ zM^TY3GH8c^+k)D}qoR*dJOpDkN6yytvM8#N_Tm#8j+;R>%S#_K+I=fS*R0P?2q)zD z(%xg}1q0q&m6&a4p1Pn+!;ND?y4sP(=u?e~=2n^17_ZkUQ-wi>$;NPVm7;bBE6mI! z&3GS4gTvYOLSv!@+{wT!G%>zI;c7rBvj)Z6N8lwozu%N+hXan*5^_uv8m<6f1gI%6 z2?%^Fj6=>NIfXgZLJ(EIdDrJOc^J=Zf`qX%x*a^5K+@-VlSRRDv2_21j6y7sG=>~5 zlKI_q#>yRQi_(oJ@V%#dZ5e1a4^%%SB|-DDt~zBfMpuDiquTp!*DH4ZpbJr~k<Npr zRgUkA^!o!A9X(mC5I=Hqi~&|e@s0`(Ki8rwml<);uO6%teeJs>WKc43j^ZQFh|<^{ z?A%ND7B_Em!~;BM+$nm3H)cdj&L_FOcNBuywL|4Gv;>Ux0qz^As~BY`LKX|y4H%gs zuFW*aH(MsNJk;cMb$chj{NhWQj&JDGjwS(911O~dbAT8DgOZ#39qmVvWH8CtYEc6b z9GJ8N%xHk7$P$q@CHwtUKHN_EtPKYZ-e;_Mpt6Ux;dGO^0ZZYoekluTP;ryUs_(D{ zEEk-lL0%g)Gtv}O14veYM!Y7>VUSz_K!x`JrjQr6_j(o<yp9lLsTnEGXnOPET#gTq z_4P3Y4QN(F$2Lr68Ux9KSpN3!{*f4q%2*5Xu6S?grmse!yoNTs%l&57{c&xFLLqk0 zEG@4cGh|JR%i1PQcG3XXVWR%{v}ZmC?DP#-iJ}UiJh)c&`h9}U4z+ltQXJP+TT(S~ zp0LVVtTTCiZWFQ8Ek$wdKj`yyIB4m0)O)bf=O*bek;4b&Lh}lWV<^#~NJpoP31_9b zg6{t8u&=RVYZDk;_ol^J2#JAdayhMZGYSHZaSe9_ikc+w(f)v-WvtAu_5FbI43n4h zy8{BsyPcqB_jF)gtIrsU*`X%(+tGs0@9AMz^T|e{<8J)FjjqqN8vRLv-AvN;L@)e` zCMf`hU=ND!2dzDRDQ*D%+0#QW6l*A0QBhDou)Q)KFmxa*RQ2wui?I(9D|XmO#Hst& zUfoSh13Qj5zFs@B8hZrr#d%X;JTRK^h5^Nm*Swo7*>M|nDUfTeR%q?2N9uOGG){C8 za2x{HBZwTJGJ~ybtcNAnBm@6)+z4oO1NFMxYKH<hB~7+-c+;+S9BG0!lZ%0gc7^$Y z18igZIw6xBDk!vj=EZI@pLlOH>wp{CYAOBxpvEHLkl0Sr%mZL`h&^tFM?wLDWKQc- zj%fql{B&nuGjCv1sw-<WvL!SCUsC6VhxNl<xbs%z`_jsw#RI7eR=5pcEnHKLU8~oq zzK_7kpsa;ps$!v%3a*4ksvvFjvD{Sx3ns3>6S_Ik<qj$_z)u`ij$Q8138lYg!)16= zcY`bI)lpud*IjY0EX#+)?e?+N3No)ccOUnHV~&7~`i>gjN#s0g4l~)wam@i$zSJ-Q z)WL==D)!}J%)|wh_P_t<pUJb60jV-QC=Y@wL6<EPo<Nasv^SJrzC4qE`OBB=#J_!a zsb_P=t{Wi5tI<@(nwZyGXd{u_>cfq{yQ9Tq#`}A#&&|C)55Q6&;Zt-5XJ(giN`%)t z9JW}zUg-BC8Q$yj0zj9Y5#Uy~Jkto02O0<u^x4FFrIc@E{OGQBCJ4UlFauL+L@dla zP(zoz(>vgvPu!vv*bfi|GUvC`;ug=q##UP|9zP-lhxh>qoNRWcPwwE)($AVrQo`E4 zH+M0i(s$ya`!C>ou#bdj%9oFOL?ExSkex7!mWKOi<M$!>;=Y2FmUG%@pA(`qG~NJq zWV6)d-r<=3=y0FcWQs{*YQE{%X-CdO2Qvl18J~Sc4~8vA#YI&d`?HS1{$SYWGmRvQ zpEJeXkOdUhc7|(;nB>vO(96Je%+Xw#G;M?T)DpK%&V+kvvoej`N5PmR79FiHj~t_t zxt>Ts>E)AQm)C<+$VTk8kqug1Z>eF?B@is2mV3alJ*d4ufB8fU11lm&6SH@&IO(MR zg-)d{ZI^7T9b5miFez=t;GF=cLqz#!J28P1?TpEt%{f`frK``zmP&vWDAIxwx*x!J zfucy~KmD1fXNUZ|k#_$8Qf^YiBH*k5Oo#J>DH4jmu$HzKPE#h@?Vpbf^AaX~&N657 z34f;FZcu#Yda~wy7`9_CIBnerVEN8hSoDja_e7})e`U{QZs2IM*UcFJ4D%B)ZeZ<z z;uV10Ih`vLcKjTxcZXW|H#tSaCF!)ygl6OZ1ayqNpZR^%PJOqT@_^t_+>b_n2xDqV zF9^zsX?Q=;L&&Z;F<s*iHzW7pHbpGTH#%n+9WbiP7I%&z1v?@>cx~>b%_Yc;VPGkW zBXc)j+bED#dBF!P_5E4K5rv)yZQ(J3UZhLgx1qCxjbUk?#i%|3x(I+wPK(+Cw9LiP zy*4IZZcXTedzR3oN&zSd-5n?8J}{{}0elV<v@!m%q24n`fLe82slQeG+A5K;I!jYx z5QqlfnMZI*c}-J+LjHq_lvSw(156sGtX@-!4P-v<HbpFsv9wa7>?kzUVeEmf4C+Su z=R7k%?snHy-UvVps)x-0LELi&52hay1hpeyVXiK<4m&>GhG4a_?#^R3-H0l%S!tT` zocH+-h(Z{7=8jFqD=xi&fImH+a8RH^*E3+@5g6F6(m!x<aDwCLtz2X-znio3sVHip zBisY0aFK=Kn(w61(RHb?5xtM9P0KvzeI3nbte!hm8;n_qqPRR6bhv9rafgvSio_RZ zN2DnoX+Xq830*lVWOTl8fIH}!yevBxec!8M$Fq(H7Dd4ns~iY-Gy}3f{`ft{vTY_G zSg=xX2V7zVz$E6#yP34LDC{v&!D_PGHA!A{tte6xUiyg18rKO}jaN^P7`V|5+>Ook z?d{#1yG;}U_<bjPU0(A?2SWl$ac=juBYX9zE8m@uc)#b%odb$YZBNSz$<c)(*lD5y zf4B{#?q)?LHteGTIEtM@m^v*F6Tcvid{q<inwo-}UL%hQP!Eg!OjLzi@zGR>le(%9 z%&qgms1{QRaIyb#y_0|OvM;Z%wY%2lf{u@SErQ)p3_&*ZK<`-_MZSKn`8sE^rcg_- z?<iy~lveOhXvo|1Yx3Mzn;#hmab^i*oS9qPnZ7pA;Fts;DcG3YM0V&jr_cK~GL$;* z0lF@nF~rSW3$oQ}LFr;B+`tPQ*bS`Zp!bdErVIQ7X8SaXS-b03$VRG~q;axQm_EXK zn|`!bD%=B2Y9<LPTe1e)4FZuvVyApE$Y)23Gtdh4o&qu7YHy{d*A<(P-PVLyo<4b^ zU+>C4{O~nD^RGWWvkC34BnAsj5I*Nno5E`?P``eA!=lcd3=MlzQr$0+<6(=%Z=2}u zfXyPFsSSr;k*&gdEhbdZ5upL{%}*mu<eI?p1&bkkCVHbIHk2_9ybk(ZO?GX0cAUr! zo4k-%tUWCR(riU>C`?r<;iF2hhGt`0K+P8my_VY8CMGIIaGO44lM+-~eHJEmo>8l8 zC{U!uhJNnZ){4)W7XC-Qgj{}3^au=0O^i$90U7}-;)KFd*sq_R9FpOIbyX8s3w<x+ z=~Vvyn>Tt!K9$d(cFCE?eLAI5VkB4BBLm55QGRhVlh2<YN<5h^8EknNkihf;Psek1 z%`J*eL|W0?j*Q)x{`YjXV<6y8&8sma$W7(|h71QyZ*nR`U>gFll$BO3TX)jJ%>s81 z;E#e_<4VWaM#(grFB=}{EeK$=haFiZQexv*6Rjc0232Tc)Hq1P0eHfsP5_|oqB-)Q zmUUS3Wh>zo2@NQQz>kEQBuTAjj~kc)m5c7HC|&E?tVylQv<@+L3YIAvr8P%5cXzGI zsS6#A(f8Wy$aa<YHy_}V1pr2x_`W=}M2PQW_lavk8jvAe;d};da3nlXYVcYZ%Wi=T zClA=hxHNnyQlpoM0UmKZm~<lpj#acocJ#ndKyl1Rc;c)9P)WduD5wPIoA=W9aiM{n z@J}we3(;7DuEyQAH;sHR?xXjR;BGey5|^S3YGIwouQ#qW5V~n-BRY(Oao;Gz>#LP& z&yLsM?{%p$01U;=WX5hi2;C>yyS=O^>z$uC?f@MZDtrVY`ju-C0Qd$JAFKur_V+k` zU26gL-T584s?bXKuiu=@AAXq2qk$$)O;l@$WklxmhkwIii&_Kv@MF@1juE0T*!xk& zmNvBwo<Hn=V|Tp6o)^V7J|mmA%sL$ay)exJSSW}Z?2zCV1+*~HFZ#?pKHMYW>|Tp& z0365j4U1E_L{WJW#dmBpLyQ&A@1|TC5OAv3{j<j%xgG-qYDPvVkaqJefq{*tInLp1 zPiIq^Xb{3q5{W)Z0E8{;VzFBPU>adYPp111L@#@04VFP-38}Ji;{LIo07)%9UFKB> zm~&iSSr-5C&8_^KFJF<uy4ae(_hP$ak&gQNySLZ!3%#a8Ek+=NO&kL|aJ}9=v#(uf zqKEolZ}>=NdTyRSdCcAVH-GtBgLI2$74%jV5|epGF&T8{h?&TZTi=!LI32Q`Ke{VS z95M00gy%%>$*sm&O2WGDJn&5D*mAg)g=Vvg=>}pU3NR#6$TTBXBTj{Gn#GkNxbH1n z_e6n<e{o6`xRRzl7p6WLlH)zkN*02x#8!7iY~#5|HO@F209dCkROuu(lb$G%&pvr6 zZ-4rp#T(AfUw!^qpR=}HY8Q)j%Wh}tdH@2S9u9dHUYrc%XwWv#5O~t-_uS8SS^ziA zRZfg0&`9E10E?@o=}a!KGt-99Gd$PCetP&=UcY}Uv+0<{VqO@tfqD~?$l=~li`1^s z0h_TF9Y^vHKf<Hj7zI#}TfmU2w4#tIlit|wYa=v+|GCpU^Ux+vtBqb?D80o7NZju> z*&LGDAWb4IpgX|psn-rZ3I*9CBK!J$ez==)6@=yyGG$oLuHBgwu@3giIg4L2bmFy$ z6UKjd+yC+V3w@?vXd{s@X0J2{pPnAlhva@V)0iB}V@!DTcg2%cS_@R*hA&;V6GTXO zC?lv_ppBRa5sU)ge{OdsEP)`^3c?zVN$bSgp-G6oHAkXdoiL)>f7eAp%BTi3749BH z(URN+XoAAWN4ft@SSy+p?k*F!ji|VNsDZM4SBn6`1mjkynR%*n$BO+g$I@jD?y8jR zs-1PS(Wrf^x7n_?ibNMh#k|b+HV?%>QFruP>a=I(aa>jffhJ!7uJq6%Q5By2L#In@ zDIdEbeJ0Bb$1m7n$AeS^8G$S2M{S>7Sd5tI1BwrmkF>%Cy27Q4@5GK$x8lmgU#jF; zsgRXE>cnBEp+;#t<ibbU<@#Y&K;aoW@l^yHz=<C2ky-Ydq83N=V(+OM?^mk<sm84k zszJx&385NkRl9xeEn&)o?i=-6>P8?U51=?t>X<MrKm`ISJGJRb<@a6H6lL!FEugtm z1NtoV9|Q)1+%$;Z&a^TQG*O}3%eHbgOGzsOcYZX!mrouY$iMv6&*amyeFoQm`|IcO zyRUzeA1_86DONU(=-}Xw%*r3C#!xuZ1Uz1B7{oH)yNT;y3w7X4wG1b;L0$8J`)>d? z2i>+ILI7UUAlubK10oxE&tLRgQlb#1pZSo<haGZmfILjxj<r)a+uxiruqY%TQiBc` z1<y>A$aIyEt%3WC;;0lWgm5kZBt^%CKm;nC@oH^C1dtddX}z!vVv{`uSc||zEzr5% zi$Vu6$-{c5x`)7I#9|aKm#w9&Dp?jp*D&yr!JyB@)!kao@3->TpB>8Id^4imCUoDQ zoU}E`*y{r1y30*>JdTYsU9NHhg+Y@_$Sv1Is)gfLo0HqoNPhL{GZ|gKrvVU9<&?6W zEy;zBqm=T!c@fp?EXt&Qq<qK8BZO(vg7*>yJ$2&CkO=**7Dy-(B411GYoUiddFn<* zS-oa5VBKP|b!SXV;7g#$LkPH}oZeJk6Na2Fq){1hk)qmTJR55fl4?Q>eNE7aZB3bH z8$BBX-ZPjbZMNE6H2PZf?DJiq*}(b}yY?u`<^TQWiW4TFw>dd+327!w&>!`)-%k&C zpm8oYWUH9qRbH5XeC$2~VPuH(21n+R#U>PNVMLRcPFvqc|5V?bIRr9>L?!PtinNzc z4*B_U&#_VibLF6~h3!$7&jmVkNUsj{{NY~UcS}XH3vAkah<K~lXMfOR!wKpdT@Rs- z*H2t`rG)PdpDD&f{k-Q|_?E7V-)=QsC@H75|7L4B08K4$QK_>$pkXki_!_WU#=rm` z1!ti{ldKkjo?|VpzInGNzx-rh_PPNvX((i{g1{u<{(efv*J`ygcxjQ_UX)|MAgnv1 z%AeWxqNXko1{LtCsBII`Emr})(&@JUDF4ZW3b!y)61H1+<gzMxyR*dI@GcvF2efb% z^sP(N!xEWzNVRXPfMWD~PZF>0@>+l1G|P7n<6rW=^Lh-MJ2$!lQ`xT9fm|-iz$pg! z+N3Ah9xL?m7NriotE>>qTX#~TaEO@HX-7NTj_;cq4I3@*+^Mc`i_|Q%RRdke7E4xi z=mz=T%?*PfipY~bf_vJqq+U8OE%2mfK{YbOrw2?toZz5Kwd3}^H@kp_smP(AsX87W z^jHWWLa{<R8s2|m1~@iacLUteM!x1;7kQBgcLcxpg(dhJc^~?Fj$EXusJgkbLiQLC zDt2)a7cq%LqsC=rioU_5HX$Sd0AE~94BUgDtj3NRN9*MO?)5Avax7og&Tv>|Q1~dc zWSRN7AGX`tO>8K#Q$}qK_}WEdLZttFH=4?(0|l(DbhYwFpaVMkXP<u}Ut%oXv|^b1 z=hQkzd~RGz1QG<8<u<VZ4Dd_SXpmtk^*$8EN|%Nfp^tJ?+ouKQsm+OkK1LY5VGK$^ zAWUa~Le>idJ4=8*@!IPorqpFIUz?2U!tUKMs6#0Paw_qjkfJLX8+IG;DDQJ!mUm2| zIZ9gc=JJ+7X9!m>eJvDBqlv9AKryU%=MdGwGlC?!5i{<IG>Jg14;Y;7&XN8uCtFdf zDr`pXqtMW``zrusrAC+%;Aa4@JU0b4{M>I}Pvn37x6kGGKWYa9B=OCJ#cmumh_gZQ zb4cw1!<PVTw4-b=l8uQ5<yp*P4A!Lxl)EC9qvJ!0l9*6VO!^qQWh98pySdx(V!Ujd zdK!n|3_xHgYw(&-@I)H{P~^aJY3sjH6!-Ks;D-U`&F%e&*9QT8P3BR^mI|FaR+zig zx@wH0GioWoI49+_h&HyRo4b5e#AB6FxLhe$R1PwQU`lsrIEa!oRP*4VLLQv%Sm<u` z^#-&HK0P{-&Ej5;`o>2`teFD`#fhKPlS%v>)&v0&`MG@k)0K%~In6G1tLV_5`+x{} zJ-1-CKqj|HxWjK!i7%sASOBHW?g7uuljBG7KYjH}IXdWT46}QIP8(Y6aB#!w7`P4; ztC$$<hX8?2B-T(d+2mZ;VjRv+KeK#-$s&qK`kc7NMJ0Si?aH9y{|9~zU4pDy6`DU0 zld=^HmRrS5UZOnUedXlRSHRG=0ElrKFIbcU;0+)naWCnPcmg($`sdMfB5!V*^6EsN z%~mFtmv?e}vTsw{q`_;sr_XCla}!4cS0WxC>qk|h*?~)xR-WPPmQnRXbt>Jl3gzCj z0!T$>vsx7jp{wX1h}uEVYC2rCFH5<@jhP6eJoLS+B?xm7dr%LnY&}`=IcmOE4>C@b zqlpVw%L`q($@rZW!ZQ>Ho0Wy@*9+12_MU@Ux-@VrJ>2kKw@09qkw+}Sm&HQ?6S}dD zB`yPeWfW+!aY~ic*X(L+s?qOsYxFmhAVfnD(8C9tR*v`M$i;z72qSiWHwpn8E8B>T zJaK?6#O^N;#~{46wEC+!>D6k2MkXw7ikc=yR)807M4^|CQuiHv7&<7Xa@Q_0GbwS< zS|jpnhX=S3eWdAbMN_5j#DgDr;*TSzhnZ?#BWe+4PMg=*sBh%*gC^8%*F}O^xISDb z1Ci_~+QVY88L=xAo-sqL(*74`q1p6;#FP~=@&fp$hlfvp79&O>-(FvvIF6W#cQhZ; z``2rN@@4kBFJGK#GS{wY8}m|)m*#UH>F?iBqB7!VvyMwhiRx(b1SKhr3i4dh@nAP< z`u+BvSr~c}L?R>2NfQ!~>0mp+S|0mC+o48GqUbnKH~{Q<G-&ZU44~`IwMsx>Un{Xm zSd04O8-j`e9>sOV&tMb}^e#GF>|H^v!^j>*=#LlIEEa&|#jZH<vu)~y8Fdv*nXGBg zA0|!M!xwh{%r9YW_P>PzhH^)=o4Xb*cpjYHa(mtKqvx@b`;7vlVb1hk;kmt>S~2zX zSl`=pOOVrC@5TO53)mngkDTMy*!aw}Dc1K6U|bi^4(@jln~P!$K6xe=w=-$<AIXP5 z|ETXN;qRL2wFliV+by{E3ZN=SL2c6v;QhiVyA1d{v=7vx5!0O!F)cWsP{^zVTWD#T z8&4c~j>c+R@60i}h2TrG(R7g*6kS_AV+F-?aQ^2$dM^UQCWtt<KQxQe)cp>CccK+9 zSQJ`}mit<WnI0z5>x}~Uz2S6Ho3hZ$9=Rf05)-mYf!If}AK7}S>3Rle1W=^568DG* zSomRecyT|o80-4w#1()C51oD}-0^HgEUXc`a7H2cf&vQ0J1CV})VD}zLiW=I9P~<g zb~e<{W|I@VPfV3SGrpc|xgNtb6$Kv?IKh!-p~}XTli<J<NVPaVJ?QiOHMo8#<r<)F zh>Lk%io?L^mInAE0>5GLVY4#^7~>O={INOth0U0Fi7Yk$jj~-m%QnS8(`W24qkdzB zWw8*ha&tL8*k|L5W(tgqP!8nrP#6z^NqY9=SkEf1F;=b`^RSPFIu~+m<Uzc2L}*b~ zdvvKg(yAH>{NK4#ljt~8d*?ds!n^&ClXg+N5ta2Qoj?Wbwve>o^^D--^oA(3K#%c7 zBZ=z=Its*<uf!9&xrKpS8dQ8sM?hCq6i1j*Q77AvNB9*`tf=|*L5;4icFnjcsGKUW zS~cno9S2a^gd%~^Ny*=X$#zB_xbhk(RM~)<i&CXJ2EDxvsccnOUxCOl;jkTeLBS0M zf%($CoVDoD0B*Z611aJFr@K|HkcO@ti$!)3p=npgiS44Z+-Ns6fI;V5n$J273ZM{I zrmVOz<HmzVkWLhQbbU+j-u3l;^$@#*RqjZ6%Vsvs$tq3wJolZxbp|QvUNPSz^sNJm z{KO_f>A<QmwyGY65V2zv>f(?F)IyP*O=@O2Vfa9OD!rS}9Zg*Y7^<AbQ5{6FJGC)* zL``X;s4*tRC>$Qp>lHyw=nV3_L3OCxyQ#z{`@BZCYm@lIr9mPKTnK~3h109%EA9UF zx&$pDxYJ@+&qZ51|H;xEz$je{-YY&s9FaecV~+w1LAuF;CN>pEFNi>gLEE%k?>LS{ zg2=P7hD<TRcZ@0-#O4_QRtlV_u0|PwW4F__{HtGlLdPnc_kK4qT!;RCOeUTj4f*HM z=#D{q=T3<z=1Pp4HJMw-lJcH%0u-0^x+RVxpH$^FEfVJxB19!AkV1-H;S&mKVEAOM zVq}Cqt)n6$ieSj_Hd{nU|LOfqe)()5|JVJs91OeGVK3Kwu8=q|eQOK{?pS7uap*SD zuK^f|BAM@Tx1?&_Y(A5pfBq?z6vxwrbh=GaR^NQMm42@w(Yk9BK(Z?$?)f9y6LaLk z=ennH7GPw6p9nZRJ(9PVw+7VH7=c0*Nw5Q3*<6#*YR*X%utYG-+352<_eE%GqIyPG z6r1q0{Jc~NqQa&iIdVM}S@D46({N`)D40#>D=kj#=|G|aaBs1#ERRc4F~PpL4O3FS z(y}4z<y;#2O9w4b?@WgQ3VV-^pHVv<yXoV;@ybCBLoB-2q>D8L_RUDD4R-B@;0Jh< zy#KcOrc<GkG0c?zpgssZ2%aY>$OXY#Mw^xV@OCMG^V>h@`<t?}&q`xFpmf+je!}7g z&lLr)7#cjg`Qt!Nxn8#yCnwtd?@=0e$AVhOiUCy=YbB_0Hj*Z%FVzIO1}`VZ%IP#h z0x``5E9TR7c-*D;2c8v}Lg9>^_5hX)<j?O$GFff(nU3Y`=#b9>&cd_PQ^qd15kfQx zlO^K8T=<BSglu1495*?Yz;kwdG|<npk{kWr81VVbN0GIhtM8~Qz)=+xIa>GNOn_Os zsYlyHz6THE@~XS9{>KLv9fYgW1*ChK=Pn+y)JLKLX(~1rtEK~ZSnG}q#R0sH^UMQ9 zQvY7@3r#1Z(7Dsqu%RsLZaVN0gpGTP`tO<4-Tsg{EiifwyKQpFGZ{4750ec1-caiG z00J9&WAaWV=V&>oL^bpq*_k*Et#VyL$2gxaC^kcHcAzc+tkHvykrR?WiXRi$u(5sv zp6Tsa#*-CQ!>~((C_>R|P{;)D1xae64=eT6^}`$-^$g)DR`t`s1-#?Tt_vOr?!+=% zK~!BYDoWBbasv@kU1^gN&{Mi-OX%0$e9{{(Icj@EbiKGwxVP8=bHC^7lFSRjMq(g7 zp|e>+N}G*T3np_s*z}%GvwHP|=?&gnDS;>T;=$3ccJ}j^b?Mkjnl=oAn)b$X=1zr? zqwp)KWFT(Q$yEhpyVW5OWlqFxL45^Cexj1U(Tct|SjgkkecsO^-I_@eRmO6jSC^CF zUKT5W>-&i&^&SfYtQ;nr-2+vS&QS$dFLW`CZIVWNQ@y9~Uk_5VV+=Xg&M4pl>EJlh z=c66ij?|UM@EYxgO-G>Pjn4#t9Y(mL$wJR&roo{hQ+9_&+xzz2Edz0r43s5bYsGcN z&T%Xu_tPl8d(9R{tLRw4QQo*A2|8Y=on@r78armU%j$x;(&vv{CU)y%OQ|T7mHa`q z8gq_g8CVyIiJ3W$86yMn2|LiQ-!J4}d^%vk1l01hxwTcIbGtF+!+i#2Z@wvc&Oqe@ zLt%g43NzgMINV9nY?=s)UbnBl`fK_9Z~u!dw<S627@s1E%@=mB@j7^J8k+2ubyMN- z0j4M0B@3t)yE|hqAc-JilADfu<DFy>`{*`+IL%7nDYWn;jvNe)6+G{)$n2IW7g|~o zZ4*l~&;iB+%_W}xkeq#6c~NZ*SO`rX+g-%&9Q$@i7JvWsYu-!5sFj=ejF+*zNcz$# zCvvYp2gVZDRvHth+EKRj`50hNJ=f=9x|2Vpcd}lLUAEcc=gIy+{=3h61ik@i27C;x zT>)L*?DAT!nc!mwMy3!jf-z6P$V{bED3zU@Jd@$UBWeNk^gb|Fxn2i~m;tF@$QN3? zL?sokQpZd|P{x!Ut+S330R1*hlp$@0V>U0(&-V3toyga3u9z#JWdK^?m(TWS()9Lv z&iiM+5p5>p7G<|>y|D9102&<71mVaB+T8IVAxIFpcfo!7oFYr7diHRp*KXEgld7U# z>2B#jDO!A+H^-x4B)1wz2K^?_a$~N|;{bZmSz341l=KXX`hlx<lu;NxaDc0XD1mc8 zgPJlCeIx|(Pqc0UW+|;ZXNBn;>dX<(_|QQrZfYOfjuqXR`4sU3vU09E^|)=CXTgIV zXy6KILA|GW;9^&OTBUquX!W9&;WPw%RvX(?U0v*4+KL}eeR3Krl(k!3Wn;+k7X7JH zr{7rT3R^&Q;;>`nh%~W-)bI{x58w~54rU8E(8{ja+-D?1aALC2L>C{lxEnGKB&vRW zSmOZ`21jIxjma3)eLsoBOS%O_Cze~@6OM$ud&PY>qZu1Z8vqh}wT7Foh*Ju4b`K_H z=x%m&XA9~ioq0gp<>n?tK4xws!+_F;nK>*aEsCzBr7<ZGG%~NeDxh7OJ%FW1iQARF zd-W>$BRNq!dxh8<sqn-du@lGH!A>{uH3}XITCRG*859nr3<5X9FeO9?TOf(R7y{Iq zxJY@AXS112jL`Yy6~)TzJ?|z{`TV6&ZyX33@JpecO^t*s^9hrql{0$}cu)7!rT%>8 z;LwueNEpCy^0GDT0=n0jJMuM?8s%G|wcx@&NRpVkEWL2%nGVd+YrAu6Ro{0Cfj?Gk zLbD%dYRM@<!7=m3HTwxdr0lFQ0nllP7jP{WJQ|FF`xtb2uUm~4R}O0=NEAgH=q0oy zMYYM?6}<veR<vi{Rt39kYcwYpcM2V}S~VJ+l;uTT1eRhp&M5M`EmPSmDNwSNUeqSv z`n$`O%r*W!J<#WBU2@-ydot*Te)da_XyYB+%yM>gLGUoq14s!wZ&-QmHXDM%M&q%( zc>Y8N-wtGaam8l_458W5k_le}_l?rPA@}42NYVatP0Cz##xPAlCkXl0%?b%CXIBV+ z_zkfw4cR|Av$KtfS9s=aRmftaM?s&M(>`1`h^^pSLzz-s)v?BL=$T(eNQ^7fYrr>b zh2SpSPrSF2y%W;Wu!6W5jXBY4xV>)S9uJ58Q0_+ea(;WyqV?6|0~UN+%GxH<?++PA z5gFhsaCLny3r+SAd7;Iu#(>4@R(`s;Wjrh$a8?0eLxX75IV6s3B5RG6i`68?p9fg6 z34eo5ERPTN^xyjXyD&W}DRB1auur_n>vvc3^sJ{z^ni5J#o8=}v6}h$lc9WnF_rhX zD}n>>mjyZHKYxDA6$IpNPY(wixqtcuQ<Xc$e-y1ScsbtFLg0SMRfBn{m-6atpb6R5 zKbWSV(3>t(CV6~c5^j0lrmM^*)dW|UdWM$H>`4f=ql#*2m><i-A&XAL;pueFJaau> z>-BHRNfOf04bwtQ661!Ol2q<13@qNcSBa2gviw1sGw@M$y?C!hOUjxf3@+aTAj`!5 zi%Pjn!kRPA2dM(($wM+GU8N{$J#6Z}XV#sEVeGG4C4;i|-DXu><h7Yd#Ybjx&C<F+ zC>_m>q(N~Iyf2?R4Eik=9(WHF)zLpsX9ah>gN_0DLPwoq^nraU-WP5@9*|D6;TQt& z%=LZs8$?#(TI2O9AO<<<ZfR+BLemnjD2Du;zPX=oQXU)%_$Q{BysM=~WA{@oxDyU) zF1Y!yM@dM%089`tdc(M|LRh1y;5s3&2}0p!F@^7a0VYaI4fZf4AU41Pb+Ao+H4_jC zUzyBQ_mAjxT+i54+){SN=0}d72R?yabeZrWEArw&FeWlD@@n-!(Ggc|t2%IeJ``Hr zPQRuzB4^>S(`}GD+^tV;0x$T2nhI$^&VofL365c0OWfl75cDxhL*gXJsL+S4+vIcu z9nh9mnTbs{@N)&Yt#esTLw36WJt4_R+^H=|X(FP@$XxAmInqiUn(TDj@`;k2eZw3C zWnSZ4D6@+(BK}VkOc|A=k_AMN!y|f4o7yBU>95|;+mf@84!F-pP}~-#o)^0Dico-Q z!z2w68(2o-rsG~<KZ}BK1d7_$iY8zQjI(R^kzyIk9RtmJw>BZ0$UGSEjALX;3tOid zmM)lN&t)jjkN4$rykPNyslsCopdW6gm~qu6Al36<#V8g<xDJV#21(C~6Ck)@XoKA= zI!h?#{rTNozIr*7|L5zG93S+#ipcmLO^js$L_hYlD3HXQ`>@JDu^noHUC=+F;Cv-2 zwVRqQ<a7PrpMCiY`Nwa*)#pN=r!|oE2Qt?8ywYol9dm_E=`^%3I5Mgl?%@f19)^v2 zWpI4B$KbvFH1+jd%xQ_q#uiNcnAG76q7Wmrr7*)PtW>b_oNi4YotCot-%zU*2gwya z@iOYKfxxoN&JYe8Ru$OY;{6pgp%LjOxx73XuxP`yFAfdxT!yAseyLp{=vly$eExW! ziEF6$V1Lk&oS?-9SA*cY!+|mM6)p7Fhx*wtrnh)4{@M>`zoOycS;aj@z`>55rYB9T z;H-E&8V=cfz|{~9!jq@ZNn?BUY{>4~*jjovXG?vbfqeJwhU-Ke`Cilb>bH}P*$ivP zK4|G#)$@zj2G#G~<-MMlp~U%4-h3Fz=g$rqBaipZn;z#McC5WG9?7SV2J+MGQakL9 zjI@fpxL?zpM#{p4k3v3s>uu(Cs{u7vc9~6wgvB><RZOn^&1l3}i5P_S15Jl^se>K0 z@EZ>Jyr8hbIeL4O>GeNkOhPk-<}l7OQ)`ls)VYd}>?$AhK#kK|<?^BeQu!MbB7Msm zV8)IKyEX5GE5$EX+phAJd$n$|k2&p6kpyzD(5s(|0_)PV+=Lf0-_apKQiO&|R;G{5 zL<-@V#5ljP2eI76Uht2}&YI*bKt32Rqw~aJINa+|%5_U_e#XuT-EY>y{<Cdfwirce zwS+wxZazD7-(^7p7q5dGL<FRmyd#n{9JV?XiMHUq-KB1L5-@ouzB2{av;w-J;D9bY zzR$pUA;(qAjg6;Jgp4^3_HNWikw~N%cXQ>@uyw|4lk%EwilQDvAyBtcn~wO_#ng@p zbIf9Za^advF)H$eTe=OV?YtlG3-lomY-+M|KpLqj9%Mo{_oxn5kO!`wWfgjYC)pDR z`Q+}MF3yUt0F((kX6wwWDl>4!KBLBEwW&)bR#JPZ`|qahqXUn~*-nftkUDZ5K@Z4( zaEl?50R%C`ArJ(y63GZ$v+2cnGM7mwl=Bg&h)r_Dp}&uPx9z@#l95qt6EIZOh3hN; zB$sN(3WPn_B!TmfQS?E=)4)V6zF$=QxK6!($nGF3A)L}P;T|dIG`FUOuqiqMUjTuk z%2v6uLdJDNC(-PfsFHydL)q8gbu(VcXf~5|YKAJ}++u(;4HHpP4H3l<cIp5r6{QvX z<LSzE<o*0(($qAZ33UZZ`+2-~BqtLk3eE1-V@I|6s?`iDW1!OZ>Ub?YS375=H2G&^ zGGL;C3;d_^rTq7w_GrCKe1`rXXk2*tlcRx+c<EM_m`64kBXPl9=KiqnYss926U;== zdEefTrQO|^|KYFyN;{@0uO(v7;jdruJz{EuLJun%#1M$1Ovq;0vPctc4DdBDIHud2 zz&EN>Y7#=BSU5*ne0LoCif#uADUw7BMMsMTQ{mSa#~%hx`1};~s;IxFxolKVw!m7P z1qNU<!=I2bj2`j&UVprtYmypLphY~^L(d{8AVM~v6e}<mP`hl!efjd`6Mo0V-GYjD zAfPOE`V95^dd&~z6YYlM(r9jY<}q%*)w6M>UFFUFlrf*9a6OxS%G3s&h(WF!U&E9O z@ec(9bv=>>QQm;#9t_(oGVZ1u#+dW#iFVQ>*{(-g>@3-F1EYW`Nx$9I*WWWA0Vw6^ zwSgWx#`quZ7t#!@LD;b9DP^x!vb!F3A-lcRB0VKWAlE|qWpp5ycQZck=Qk5dFQec9 zC>GBWRqQ5UH#GU|l7*!AZC{HG;8eiX$JDf$7?>B0!9a`5$;N<imAAp3KF^>|L-Y+e z9K=vGeK?O;b753Z0V(*JOfoHS&<JH*u@J8r)KZ={zO1|7iUS>lwVGH(FUdWCTW)vb z4)YS>sDM<8(7_N4!Uz}-BcG@d*53zX0KD<_0-%aO^cmC}+u@<BWc-MZWVdY(HE#Tp z7JD%twieyW@KEdbxYHcbx9($$!Vke3a+w$fg@JuWNH^jk#6$P=?1<w{0G{yK@cIC3 zAmF3QM(~>J!()anTRA#t(TS+Zkx<4irm`l*fh+@iA3&#Ol&TG>U{(3kXJi4Go-YDa znr`^>m15fhGJx5p<~?qfS$*BBl?W=(vLX@UVJ&k<v)dQ&;9#vGPC=t_L-dhGx_5z9 zLC2jl!jp-88`vfcU79ubF}PDeK639WU8^>8N!v<cucCa=iOfMU^*OQuPCZ&jfKA-? zw{Sn`z`M!->j0;RgpqYZhG4hr$IVk9EPN{J0jlfF_gyvm9<S;2Mchwz3n&n&vEI-w zphd(uc6fRhxYI^4iDIpy<WT-q-!l?-pq<H*-G5Hn$(x%ccc9aSQ6}e;Dc>`y>wprZ zTSOM^qMJ+zP^F_w-=%e2C8d{hlf%{bzS_<`aWvSKVAKoG0B~^8#sFV}&NL*Sy-nUR zIPVZSX$7X*hVBp7V`Va3T)7mrRDZ$Z30<mz-7-?#u!4a7CkkZa>SkQ!R01K?PDq;M zsN>r14f^aRDGi&K<n<o!57<Rla>)1Nv2TQJigPtt5OH4>T>xis9g|f>SLyMk^scjT z!KYY@?>?R4U|WoiI*e>uw$M%$oeg;AqeVf^I)p?JaQ8K-Of^x$p%8lD==2hxsY3&k zVafwg*LEAR_!{VE!u{HAP4o$V=GV9Pa&~+uzxd)4`9J>i?^tyH`NwNwS8NKEabkgv z8mMdBcQ6`oPpRkNbTXb<y@eR_!%~xUE?`zd6BR-uf!MYKMKN8;<Ktub^3&&Xpm8Xq zd*nv`{+pj@r%Gfz>UONRpjL;*DEU|_S!!(#+|4L3Z}QUVSx{e_ua-Ph00M@t2~xP+ zEJR=0?UKrbh@S@9%H;d=kv!K<wWUQSH1Ic=gr-}9C%2ovJb84cMM6*BpTC!=Tx$ZI zbArNAzBW&X+F0TIQ~X9N&g<!#iJGf4C<}6un6pTP-v)dvfagH-0|o<%CNv<JSV=t4 zv#ts5>YUe=IF>RZe;w=xtS4YFb2BxkI#5+pS1+B@tV;+;#p+|W(lfgmOTYg@&k>}| z7kZ}uKdRodNw(|C65H3M&+`6xSONq&ZOD#Lt7B$DF%kM8eI5NC{VGYJ7)7Y1jv1<( zWV1<vAn@>fd7oKX>8{gWYwvUG5#1nwdR3LzoO8BYrcE$kU3H}2N1-v6GrgZIwgd_S zKa;7AvGFeN^gh}p#%2{`;Py(##!7ka)~hM+6<}Kwae0(DektR7LQ;%%jlD6Q&-itm ztw}#-hXrRjUMu9(N4ihHKbpwbPX<g5Q<U+6&c=fYRq038m4;GGIiCYZvUVL`+TT?* zGi9_#0RF(mLP#T$sBw|OA&!a$@_)1WlI>e;ILzrn3ms}%$Z$6G1yjL`^V*WM7-l8< z=TU73L8!R#l41`Q*yvD!LN$!`1KQzq3c8<h3_z77@MfiSopT{L2u1+iwyD-3z`j4e z;x*2w9M|F@h#&)gxPhZ=ks-sv8<}5P1)VtdAoe*?8L$Z)KNKG!<*P<IHgc)b01ALw zoq@HIhI?+j@bqDW)z)H18!E`NK2$O_D`=ChEgAs`%A$5tHwy9bNNGPKuB?{l#-9$n z^<Z%mG~sbrl#alU<N-`+ZEpK_%pD~TU7EU?Plm}3QQv9QPzwN0K(N0_{YX*=LTP~Q zIQrS=?2*sTIY&=z=Ek<K1U13ZGuXgikAr`3gXLf)jtXwMd`Mv2Dww+bt|fp&0zn)0 zkw1C5#kTJM_vd4Mk2a^D>mfIw+@tBoZw%W!0I~MzC(cBw&8i1<sAX>2|FGVytA$aV zNXyHbB>CP=I#3~A-<h#W?AqUW24%e@2sCY|q5587BmueAR!pQVo<U2K;H|9Bb+xBK z6z|~m@g*y0jvJ8tU`8tu4-%>o#>U^RYfG>&hppJHikX-qQ5Bb?H6Ur!07J2c5L9v7 zl<vGYq%}Jc-W7pD7=k_yU{uZqinLA^TjmZ1?1R>(RW&4UW0#yJD3dzlDfc<n|I!_{ z3a?Dj2F1C61RFZ}R{77EuwllI^Tt4$mHcozk-z<NL;l;JuI2g8iXPB+eCIHoSuVRw ziqL5x5*jG~q0KEXwUUG;L(2CmL@<xWcbe=ibS-pcb7h6yiTR>3^}H6uPbR$9h}CD8 z9QvYyMD~n^Mq!>F^w=x?Sv>c<$(U6-g@s(+wQ@%;&=C8ZdpsB4pIyo2cqZE$0|xFF zPj)CC1cg3`5K-R)Yb4L<ut@+O&WW;YMwvuw!(eLw`s9Lm8+4w4FTnS_Kf9J^+iQFe zOIK(_O^|B!+e)1Ni6paSw$mqi1|Dp$&<S(C(1K`|)6*Q4I287NcrEh%4}a7@o3j0n z1U_+nk)8E*f+#U&2#Suik6lgZDsDidSRfb^wFtH}gnPtJn*kqpcX~{GfjI@}6Bffl zkMT9iJ1-~!otpTJzRTmAnFjfeRIQpkabqSen9#z_FsaRx{jO-qpqk3t<GFnGVu$Zx zd$ngW&U&7~j{z|P`yCdjzzy7MQ9!eprGZ_shX-vliMr)f!34O_J%S7{e&_h~ju<Kg zZx#R$q0xj7<0~P9%G&qnN@2V)nNH2CLa+Ny*B$P4V|5^3KGyYmu-;|$jI0Oq;6x7@ zw5}6Bl(W>(+z4!K7cW32oW&Mk`z-^?b-Xgh4I%)t^{p?D{^Ds$pcDckj52Z$FbE>3 zz!4;Y3dF+XyxBFKaX7E&=D=&Cp0u~R7P%!IL>-pKZ^q9cOGoS6%;uNml9mMLecbww z9TZnJ-H5`ebW!lx)(1YC&)ivMNqa)0>NyAyU@zx><Dd?KrYIlO>?)}m%s>;2>jxSh z?vwm_=UNBhipobCCSD^>-?O$}=9IS}5<=c}Ubz0eP%qdV;j9gZwqDdpni*!zE{tXC zMxS#fJ;z1FK5q^ThB_SQ{BPkH#AIMATBp`-wQE$x$_p?HnTb2M8JatC;7ii9zRRL) z+*&@ia7DG-j$53`$F6OiQ1RhmUT^fdgjEeHs@R{QILDvQ{3E^a@EJ~vH=Zh7vq0;q z3>3Dll|!$S5RCF{Z-YL?ug}dN926WJB-jI4WB|RPX8o<CM|{I#*)=l_J=}LThD61( zn$QX_W(TI^d>w%m)gCJRpMQ3smCm_*_r4&&=O4cLME;L|{y~fH*qp9nTQ^8jDUqDT zuA^Y!RP3cC-)F?cf>bwXMQfm$=wVt@RynhFb?AEFy8AtM)H8NL<Q<YRa3Zq@far2z z7!F)3!Vpm5;oyb!EM|qA`%{-6`t%{#n;}f>A~GwzJqBRBuMG{DcqX_;=(H2%3o2}u zIH$Xmi_zVK&93YI&z2sj9I=kd7hQwNY({VzFb`C&)5KzlqJ*MCFdDg)U;WUM|KV@; zh$u(<b43%ktFd{?L)C6)eIOee7;z6bnxNpmd-(d!I+4y`IDnBtGmZ!qI1-hq?C<Z$ zi>FWJSHJzetgfs%=r8s)X2AyM;r(RkXQhuDqab@N{LIWLQZ@MG(A`MPo)%+EoLxYP zqss@3Ls8}O>7%xOUXR@un2@|bypW^wOMWIa)8X!ykCseYYW=-9Z^3s1n<0pIAi=s{ zgf5%moGxx`WP%Rl<E=HSl0mCs1cR!|lK#>470)ah`RMQLv+yan-q-crBC&;@KF)V^ zP_WP5{P>-8>N#;11V}pe=~~a!_h*;v^u!K!=Gk1j=R{%&T`UhmFLfQne3nF@Pq7X) zan2;6h6$3=zxmnEbPsBRJ}@Ok{B?Xel0UvWmTaxVE^R9{-GwV4DIw#!Vyc}uXWDg2 ztOOMOfasrI7V>y!Ro1()ygIs(r#l0ln;UCG-se}_1O55Fe7H2l#mAc9yga-yKZ?kJ z#1jqjug}J^x6+|<-B^<g;B`LP?{Hlsso8-e=^}JhDtUK&#L*0u>DXzE$dDq}9c_IS zP;CQ?VjmzJoLr-8%yZV!<}{2qCo(+1HqAv0jvo-AvxRy4lDecHhISto0!`cF$T`^s z12r}Q+8X$2-29SrFY{kUm2PuTk-O`Oq08ac1gZ?@a!Ve{2xeE~D=uzi_*CDbUF)K$ zcukQlYqH?+Vj{8LT;!6jXc<*e=`($+=CGOKv}yoX31@32)tdUe7;~F&7{(!(`_G4# za^<BV?iFpiDyR@S^4|<%60b77a&)bD{BCA=PO(ZHC__%U9{iYnrLN9axTGyMg>gq8 z{E`!2Jcjx=DbARDVFL|jS*y`($MY#+yr73t?9@R}fJ_<AX659`S3ai}d+sI~TYMzJ zTYHit4pMXDjnX7?8_Uyxb`o><O1-5|6#ZgOba?oF{30?8JjjGOdFuB;BN%o)YDdS$ zE^5;H2o(?8UKihq;)XUAMn|Q~+~Vu2n(czd*GjuC090vUUy+TK9%sijlcZQK=g8={ zZC(hJux9D_9y(wq=J<!CbZylV;FUp_1{7%VpJ)&{8{L@8R$?QcB9FNK@AV!3<nby6 zIaW2OzdOG*#W9~bL(vUw!y72YIYlOEc^ef04xZjE1L`g599A(1;}zu&?qkwRK@ahE zz6sQnr3D%BL=}4-$Y<<hv@5sPOet<v?`3DbPggn2>F?Y-9zkant#94`NII~$@$6BY zlr)6tvH}MaVx-mdyQ2#xJs2lVHTXlB`ugmKNrEBo^G3tMDzviEzYYj^B;p5K=9qS< zK@8^%HTjE0z*=z>Gj~<QEVKPH(R2Il;YhZIvAjIFm+h4n>1^1a*P2|c={t}0zJOxq zSS~e(#7v6`(1&{c%*<G>Ze<M}8vW0!YcL%u`H%npzmu!WQ>;iHx~X6kP&YEmRD(;c z`-QWwMLbYW^*^vxKz+iR0?jS#X??LABV{oB(Dyqb-AwmYyTx~d8SBx>jcjiYWKXNm zzy9e{xzOwR^Xm^<ovu<}f!G4*(O0$0J4b$vK|RzGF0)KE%s><y+8k>ER9FPzHBD|d zh8+V<>UD4Fx(9`Gq0bH?EvGjldYq5$j3I=C_R-FYd^o$4E=C@8TfX`FXQID?dh7je zN<0*cI#>kXj^$5pkNF;g<uhI-Dp#yO0*mQ(X6GozW57b;B_YwqUh7bC5mL@IwcW?} zx~ArLx(D_82VgeL<yI3??AK$BHLy>8eR9ipu$6TU^s4I=y6r=~#%QE#sEQf8Ci98x z?(FNDisVo4PUVxmHQlEO+ykz|EnPdgCR$LYqpGAPI7eqAw(_xG=WZ&7aURz3r`tWb zzAwq`hk4TOYL})#hnIKkJg*M=bSzENlAWI+<Ex!naP>R8y5c%bnDA(^urw>~_2G(x zy7e5nn3=dH4hgnfmNpN@1H=psKU|kF+XCYBC2U$$3b5{-=wjpnjuzf>VRDc3Mt1)2 zM|1ZeguvfDUo^=0rGt!8m*dMkKvPttGSL9eSb#3p8%Ac5yS_2L2RF4Kz#w(H8rl{; z*IU;EvCf)mI0UvJI1*IIq>da_AAN+x6qic1&BY49-P<A$!VH*{QOwP+x7}`ndhO$a z#uwF<+9du<A)jFPSbO!(0A4vgE~y)5HWQ90-JMPofXbd1EBVBvMhP}t)ShURj!3t6 zLBNmS83GLHe5p~sk|gL77+Ay5=!Gl7xyu<^s7}p_z0LYi9b;C%aPUpat^lq%jCF#v zFGe<Lnl&`Q#k>%C&?0KAUjve!T?-9Xxzh|y^{*l?H4aLB;A)Ghg4yT;saEdYiPX9U zZamYWC`96I&6MCAtS5YZ*h_W8_t+76e|jy~(<OyDFl$F832<7cauJO?t@!lNV>_~r zUCzQJAnEa7^931D6TR|1;X+A1a=<}6(+F`ro^TB#p`Zr*-HeAYbi~o}FK(xD=Tx(V zv)`lvn3g<jmu};0otw{}9muCo_qbls5`TWM#kpnSNqZaD-R%pSn0W1|wg@27L-M;< zNBTTs8I7kr=vTJ}d?&N<g00$8f8g|L!tTiQ=vEVxob;{n_>R~R7=9qp!OFmlIUwfI zxodPPYjI2As*%ww%A%2gZT8JaveO&~))hf@XID2|%V>cw+>EH->NX=o{5QIWh0`kW z*B=gN@(*A1<olyLCL{n$q05G@2{g2!6##WKPz%w5&Dub3&p5ic8;==`mUC0z>n0@y zo!%Xt$WK0dCI|Zm^5g4Qjd)H)Y(txV0#H$d>R*|fP6HAb%wW;F#vTj|9Wp<l{+8JI zs>Ye9d$Z%6v+MD#Jlfsi-b7ahR;Rcow7-!+ef7x!SqitechZKSRa=8y#|&pMg6L^7 zF>@Q_!jmP#5t%s<1M>PRfsxqrC)Z=ytXBB0Afb!rh38Kt%fe9PNchf<uBovOL_6e! zG1>uu?eXrA!Hq73y>;oWt;yl(iL7gob5<`YaGyLmkT0L_YZ7onx*<$b02oC;T*9$U ztMSRw3N3=pbUm5#XU5S~VUi@ADX*<2R1Cye^=iD7-+p&4r^l~l4j^dTtiPY`?Z_`a z-;u3*L&CHdw^fbjd#>H6xRBZv1ry~ehTCr2*sqwh}IOg;{FG`XEsvN=pCQgnS+ zXmT@SM+_sBtC1#x0A>ni^@S!zElm~@j&1(+&6WI2Kkpp6{d!-=*Y}jNMWsHaY;3DB zt*V1!YGmqm)IRXoh>kS<1X`H$_hol$ORsf8tOT)WA1)_uS2^=49ofaQp^}6)H7h#@ zSS?u{`g}V{ynX6=&CALImI=Y21sojBl0c_%^)+n&uB(bksQw%@W3&8>2Qn6FM#GA+ zWo<r-PSdQRRdME47L8?Nu-<I9+O7^48=%9hN>)y!7Ue|v{e^G1&w<f03><U@D2Rc8 z!|x&`;FeM>hc0L>Yr8u*EDo}?4vLA`L9SiY#Q=g#pm;!=@>KkhMdHV8Z~#F}yu*UA z-LpAdh38c{@+nOW)f{yDtx_$Tuf>hjuT?Y#B1>Ho*W`QuqRkz<ZnTSNu)3@3#(+j# zASiI44Mkts9NVd8xdYnF5wB>dZo%7`^F!w;V?<CVCbGbU2Q6gpY#24h06>ZB-2?T_ z*6hM?6V_D`cghRx_?YVsiN=Zs1GM~BJ64(Kk)cbs;@WtBdP4xtm4m5Dy>7U?AuydT zOk2J1&d80ftKCgKu)39eI62pYWg?&HA+@^F=S&SA?0BQ0`w)Oiz=^anV_r~@LW60K z-pQ8WA;4tB71Ubwtjkx=AM?I|m|Yv14)p%kn(S?^u%lp|4w19VTP8Le`e%CD$oS}7 ze`d}W^Ud|0jOIBJ(+EuHdW^>R<kVwkIir%9ncpCRLAx+=mA%^61+99Mh;w%04Cc1S za36)Kgc#GJw&XH(HN?=>Lw7(NWsLQdlcH#2lv*78SsNZDcmsqMz64_>RN!Phn8rfr z+*nbNK5*Nk+S<RCTgl-qK5Hnz7NVuTqQL`gW?&2MMq@dG+8g-2IM{jp39CVL`Eq?< z{ms6t>G^i22^d<x>nm$=dUiow{zs1<%XdHgncY6zKRy>gLGZ`>J#-)@GV|gEa;=p+ z7LqR>o0^|lry9MBj)5j(z=RbFaM)}2l$5q=woA1`lL;M7=JMpxmV9~pSpMnP-%7o- z4hF9Si8R5dbwf?2{Vj?(S5O4Va%+8!XDa5o;w}Hfi)#(Adz=a5n%kWr_eJS?13{w$ z-G<Bsz-~1e1fBww_WEj1ZbmaXxwzB-f3ADtPOf?b>wxNlolG<dxjEz7$9nkU$*y!D z(HhmPe4)K?aWgT%ppT2d#6U)HKQmW6tSRgvjO>6D!k7W?=h36DO?N(tSkWV~si+mO zl-;#H*S#?tY>j=gJK*^MyaL9>5E6oq!)Lo%i6dFpvwcsKo>zw_a<E;>hvReE{_3eb z(#pG}^JgK)n(SgdwH@zrc0J=7KEIu@<=%3d@;`oiLJ%vSJ)HIKrzMjs;!Sc*P_;S- zCgkeomI+L!Wq%{FAKgvJp4wht*Fe6>cZcssjM~xv?)7_G(cejmc@3>ZqtxBFTrehZ z)w2iClUeu04PQO=)-lJH4Nb{5x6zuSMob1(L+QHV`1itH;keilAY3y&_O^KtgrU2W zw@&djgZ&53<%k(y5W5M&`UHHXW>MFO;Y1H}#1Oz(c}g&>@dKd==z4FNAIgD0A1Vpt zZa_{tXvivPODOO&*7|*@K(S)7ENcQ%?e>F3UOfD)&!F*r0TjeUp|V!0Gp)@|HdxI% z&CC?+U7Fonn2pm_@HKbVK<GsvcrIpBZ(~P|a7#e4LnGe08%0x*2l|+q{@9$`#E1+e zSh%X55s>V;A-Lo3EUTJP1D`=|7=r}^O4(#mwU03Pxej0q!9OG>fl_ISq9tdrf~`Yx z;|G0ke+zDa#+;~0ErOKi1^_gmRcSCQ@|L_ky(QXvx^zLG)Rgz;8c?ypBG<PL^hzL) ziAt|DP;@dXcL9IW(SzgB&Z-QCeWJ+m@8?%{WLf}Rb9HksU%c3r=ldIM3qqG%965cV zRT2UY4mPxH7y7KPZ||85e7KtO9)I)d)PQr&pqS6h1rA9ERp<owkUN;j8NgBOI^IUv zql#8)Vnh@XVj^cPc%aXrP>9+7lB#M6yDUlRBRVtA;=03L?nD-B@QhIT<7p3uJtj}n zds9)gKxBt9sDG6!G~!4An2wHJWy#S~;hF_p<Mo50CH5Ln^mIF07)KvyYjo;>i!gud z(w+Pa=K&Wh%*ww%9I+|_KniM%kR07CO{Ze!pd(aXJ<wST)7q#@(=ERn-Er>~4$?(c zAJr)j*#oWqo;`UgZ{NM9wnD)GJe6K<cB$yTfTJ8tgm8@+*(=t&0E3`_9#a*Bx-4O@ ze5_fyX-FC;?!{4Q)xOKMhoEV?>?uLUpFevlKOUaB^eId~x{_<MiKGi_gQLnccABF( zi=mLa)ce~U4&=%9hW`6l&h-7@8bC$FeqEHQ2IfndPVWr}TN@p>3v35WaH1ARuGbpW ziSf}h45BR<8}#+veEY*oy`MQNX3Xc2EP<O1v<8HC@a%the=2`?b?E*al~<}2_X|g< z6e}~J9g+`#Nm=++>>HZ2brGuijNOAryW6~PB&ra)!oB|Ex2N)-|KU^l*B?*h&B;j4 zuP6F}U7iovbLdLflwF2HA++r8IWB-84_w>s7Mbktv>B|w`fOkR7Qs}5_&@&3ck)Jq zeKog)7acVu!Z=GH&O^sYeNTV?`6es#SC><{t!zJ`O&?J2d6c>npT3vtTTPBu8qqca zlVf}K03jlo0ic`lQsd#-`Gw)6g7!EM=c;}<7^9C`!>()-f|4E1@k4bRKeX0DFblrt z)GBx27k)SOroBy8dMlh2xl6|erJ>3V2k<f&OvD6Af(l&r(R?}ZzJn%vP?Te<e_`27 zm`z)7s_8sZdle9UWWW*tZBbk|ReeZk!ryFHhhPz?WzM6u#Gq<yPIIR)#Es~Qb8l;D z(A{OzqBd8z!mE`D=POCmjX<jv7q_SvZW3edcO0xAYt=`MpR$==L@q>8du5Fu27fwo zlj_2|C=LI-EdD}cI{*YL@0GiLpp^Nd0RozazTpx`NplVT(t&|y%Jc9HY`s-YQWYp? z_&*#TVPufH6JD^il;|OO41qrOYmkq`ivmx+bRh>aHHy5Eo1N?Rk95O7*;$dnPFLQa zS?dv5Z%3~a?oVw;+v58XtoI>y0nnHpM2~mZi8hVm#1pSd*4KvwmBI6Qp$A=}huGSh zRza<vRvGtlp_KrT=HU9izPM??m6)dyt5OA&Yh`UxSJ^9QG+%pn%AOOhhliE-cY@Ip z5Zm*Ge{W*xRqFTzfL9-+jg6%s9GNBbeE=P@qX&6AsW@KfLu^M3h=(cz*FlyGfL61) zgPTnEfe2mwI%ez$jx<05g12o(DR;98pZ$DcOayw5yGvV197WEAow^4BN8v$?>Riw< z(EWg_h1ABtVeq*-635d04j#al!VV5v?%y7j^3(mcygZ$-!iG}Zj5O3X*&_J9843{2 z)!VL<Uz({-ZW2%}Z;#(kK*iJZM3b~`zb`-k=~r@i^v*^>WQ7Qw+Gcr7DlM-EXI3PB z23q0^=7JSHX3Avem?ic|iG!M0<icIhWWUi$3_k-Wua|F+W!QhA`z4|%)#JSlIXu6y zpG!=n3+trzE*rqmxsUHUEtf?0AhAFo1toA^xZ#r7%PxzQ3Vp+NB<otO4|*AO6UaEx z)v>i|bUeIId<{T7yniUBApzUl)a2mH=LA<G8A6L6<}XOdq%w8P_m?*`VKL`RtMqXu zWl8klG#8gdrU#mBLhMZKtO?lBBm}P|NlTvvQrVvLw%255tt*dr`ugt7o$<FXPv!so z-LdpC!yACB{^QB5ok5Vm&S77BC9Uo{<&^tzK^y@X0^4h=^5Ohi)`vUt`IA+7eKObI zuj^&CEnj{5gwOJK-ygC{-x!$6CK7Cn6QD8&THd8Tm(LDX<kzpS0gmTveF;m~ZpO|_ zkI42J;~T(^S>l~yVtnx2(?*C5y72e<++R)KYI3>D|7K8+n#xo+dGsKCDo!7&T`<I? zN9!hVS6;b3a4)Swj3aXy3Wg070V#{-plw{hYU4{r9|fbtlZ86A4~aZbK2WG)Kl~p= zZ0u{M^;?BXGXwz$X3Pu(W1=L9&#rT)GG+9553TMH)H#l*rBTPLL-i|`l;Du3J5Q(6 zn3(WBaSeIZY!<ZOtg<NBZftorX40Q20efk1y>mT%%eqp(-v_RC(-LPZzjEOT>lDNv z*_sCNin=spI%BPa)#CI)G)7#4H6%lkCnVOUi`;fLb+BOBn5A$YDi47<@%s*eeCg7U zuHxDlcvNNdkyNSsuE(Y-SbY@S2~_;ZXFY0a%|_s`>BvMr#xP+VbCM%+){TGyK(0w7 z0MG;WgGlBUtw}F#?&R&FB$&lr3Ydf<(4xJSJ4zqb#du-*-<U7|fP(;IlhQ<DYOxMf zK<L8iuOv5oK}yYxn#~pGZj@JU$DULf8ozSKD67`sHNEtEwZx3v^~#hQD}EpDvBR%Z zKC@+6JfuBg8H->~M?w8;qTtC`h*&wce6)poK_!Y7=fw?#W-7LL@r*97r&@{HEHZX) z2l}^bP{(~jauk(4?P^&qq-I;I*LY3iju92x($sVwm<+p>CFwf7fxf50+RSCH`?PjR z<k-2#rE3^Sqh=Wr0wlLc2wI%2nooJv2v%8_&ZJFktOvo8<J&_1`!83CGDZaj)ce(V z&O^MME+{h!&+&@1N>rdFImDbQ(#v}(?QVyPZRl`7pJg;2u?;`f1OJPs+w$$33!Z8C znd`}dR5+l|7v6n{Tv;=AdRb9A<ux+SxUpRlp5UCh%fcmwBO;t*cq8aL2lD)QJmDb@ zx-PmwIG=a6hVt2yO?maf(C}q!UhTjNK%$ySRAlTT@W2!IFvs~|1w$np@DO)9+$pYG z6P~AAyYfhXcfcV9WIDVecGtJ%)yWm9g{%DmHz+h7w$~Cly`7QKbnxVv?Bkw`1@{&} zWnh}HYp3t%nI^eM=T~xeb<Hk-QRXZmAw?2e2oO2SVz#blxdEB6#-Hu4NxReLeS#5i zJuYN(wPkzs?S;HPx{)*8<BRzn-vj&(Fh3syggsdjAR4>B$NHcpXKa^O(g(E>Qn#mv zx)u`sohzE;4y4;H^m{aEFR$b$Pipz|yGmZ{8lz-?dyAa<d~wFL2&cm*n_d2Xy58v} zcLoD_`gm3TlLq&-)h_qdJ1r>Qo{lIw1uR>K`WjgC0Gqmgg_yulkM!yZ4W;&Xwsqb1 znFuD%6vBCvGGO{VG#r+79W??WK^TNBN4B5}(rW_Wn_A69<cQ~}F<+=-lSO5F9RaC~ zN%n8l=_GC{d~&vfM|&MLm2C(B0aRl#E%JGJ-WYH!@}fCR5m;y#lA1*(=E>v9owto6 zpD~wi<+^mRPC%n)Zq8Dg2t*RQCbv}vLDVJS2vX;e;}B@Y4;u5qsSbxxOJ7jpATw6g za7vRfzmJ;xX@nx|$w=JFm<Yh9J4utju$+C6>NVO~QJSDlLlyHjd@zmqScD=94frrZ zNgwE7Hj*&(aalaLn}v}<0K$cFNN~DiRm=o0Z8GbICeY}CnE+1GZZ%*;>jGH^B8*%D ziai+g1Z{#S%om(K7=IM_WA`PXdL7ipV7r>84I`p*30*41VNO}tnwlj>{W-p!n<$b* z4VT?CuT5UFMb)p&4HcF)28qq6Cn)a)MY>>>8aa5ba)m?M>_XgPy5M>MCy<FPFbkC_ zttE-Q9R!`gI%#_~4s8P3MT+UMKi*kmwUZK?V9rppxpi>BM`yACAr;Q*%&iU;>7->6 z%b24tmp0lM>odSJda}D=??V$^T*KM*Ee{wRsNJryBH)`2wW}_>Lsqe+`f?VU1oi2Y zTggNNPClPAkig*%$)tFN3LOZJOj1u)*mBRU3UhOx#j<ki*`(2-2xn1MC5Gs(jkZR> zW*vQm(}{?tPg4`h!M}GgYSJX=ZW+rLdZ7OLhb!4!>9F03vtv%&gDLgRmik`7EpB&- zF-WqKjGUEWpCgEFx6RH*Cj+%Emy^>o&ab1^hJOATy}e=nvcECV-wQz<1HlC+K<eTr ziFaTiN)^21tz*Y=Q*Iz-+E*`~V}pc0ZOi#+EdTcMJ$2T>ufL(GO3n8L{KT_IJ92po z8`7zdp(0Ptmpn&$S(o>W{j)yo5vbXVO>!0Oa)3q`zW!(lt3Ut#awG@qeFkz|*977$ z(M+Ch52-%)$-$O<xVVu!U4M{*J-eRB-g=MYj#I5#-<@5_=;oZWl>huc|4*{A(v`dM z4M!(~j>ZX1PJZ%ymp^wip3sqSZ@o+TV*>ySL2a8_{Q_ioerLcowxZ!K8rKYT<4MhH zKRur@ahl!VYi`}6hWncj9|-=v*LU;FFAk^;e|R}zkS9AhuGme%J#G&*(XAHxt~bdb zK_T^cZ%2+VF3D&>68U#O`$j%M61G)okZ)<Sm~b}!^{0>JbFIYx?d1s_7||i1J`1Rq zc`e`ncrJ$*6HN|ha(I0&JGxG$OA`d!Uu(<JXvxHx4xH}j8MHN6RMN4qB(~&U?{8yu zO`aa?F~I_MfW|Me2Sy$!45|-`UV+9G=Feuzka{6+fdU9&>iDucGVW^P!XY?N7nFfa zn#901UEzn}16|Gx9#X!bpe-LX+ogW+P;QZ;RX1R~$}7V#>t8y7A4x&K-)Gw{xacI_ zs{2T^-a@F$(blfl8vt{qYgXHgylRr32X6O6Ftm1h)O?-ao5s%TtQzr{R+@QY@BnZ# zZ(j>qsJy_zji|?LKew1JA1Z0*bO!~v(zEJNsiYsd<yk;}K>Ig;yJ$WFiUG>(K%sJ* zyCc!2)jy?l?RFCYsy-SCNCON^k|2mvH*-MocNp{lYWMpN0KUXsm+;So7LUnCGP3p; zvePIE3Wsq+aa$1dRWuBR&<&}aJD>Wqs_TbDCUzCN)B%UvD{ZcgG&Xrhacl@N4uy{z zVx!VQJY=Dj`a%!-N*=5~5h(F2kU^um8umKP^&r^66$_S_d1@6-+B2C-RJc8~_h~t6 zU8C52#%GbO69Bg&3QjDUBo~|~w)C*eHM75Buns}5P5I)OL5!&5G^Vi9f~GyjNC4s< zE%;8$c<!B!x0$Pg^GnE?LfvcWs(^_Ee}qaa{#5RZ+)>*(+mS#c_w;(M7c)&-^k>H% z7pBVjXZpWdMP-dc89G2!Y4aPh8Uot}YcR`<aT=RcXsbw??vt?|BL~0+&xp9uPzW?j zBsKWYVc92Q7|8-=*oGAn`PH{4^1uB3V|k|m2RI5y0^_fZ^%d!A#RHHd0>#GKfC3*7 zs)1iR_6g`@K%3LD6nj$N*@h+tm-iLVzP<e?^5*c^#!UK1fqX_$q1gcw`vo=EO}vVu z&BRmzb6Nlk@fgz?5>k^`4qeHZ=W;|<yo0SZy`~G9+~2WF2yh*k2dI3};)Mbk*1`Vv zI@{gUA@I=<t{L~6S2kB?cdd%qWkHa_bzM*9^396_vW(te054+R2=E8M_pM-LP$yi+ zNJtix<(*T100K($(Y>B|9d@N41q&-yFeF~SdMm|T1O47(t(-69)6ORncemuf{I~y0 z_tcm)H`4IX&C=xRZ@+k~KYwecH1J2C+8K@!(87VI>=?v`LxK7(_BBRN0E>YJ2-XVr z>DOQURG;aL-3=%)cCwmAL|;Byli$C(AjR!qy+hF@=oRqH)ob~1z0~J1lJ$N|pK~m4 zkC3o+AQ>ZVU6x0uC-U7i*K6I;>lw*u)s;tEJ>q4$tqv2cSI5_~yVjwl@%i|Yz}B@c zMl!iP-&>J?`q%gJ{``*J8L$G*;6;$={;rE=^htSP2rg}|%jVh|W9mc`n2!E)e`|~H z692s{tawHNk}h1En{+j|una!a0bU<ktwszs7p>HtmO{{KNkE`lC7Txyt=+<<XCsGo zS$n&Fu-!!Phw~09*-p2arG>USZ4y6fsoOXpcmzicRSk0~9;iUUmuchN6}0SYc{tz$ zATUbA1DDM*jpAh@2xd)KdX@g5geGO6aTQj5dMmgrf|*V2f-(kvi@l--pO|N;&#^04 zdNS%w)C9oF6_v!t9<*|e48b3=w)o>NM-n&s=z-f#bhURHn&d-FY^0H07pK#N_H<#I z<5`w8i2$-g(3PmZR-5D@viabHZr3f12~g_1(uNh$*k;y^Sxw>GOB29}Ig>@V2nVOl ziLFW}XeyOPUCzv1a!OJfm)WZH<-%0Wk|=U2WnqA$I%;T6X8)Tr$wB51`p}qy9`<<p zorJSFJm+O*f<KX?ugNjaAl(V+?iPb7zLt?n*5TSgi*Vh!+qecCK4C5#T>Su$F#x04 zOy18;WC_(Sxa#QQM6P;>cf;l76t7@|S(Hn*g3%hK(GB(C;hL7P)r;%G{zQlBX1pK* z9DknpHPO#mgI4L+fTd^p5jlg<usb056u}TkTdWLFez2CQ_7=sCbucBe`)De66Fq>@ zMy}Q*X&HsI(-}&KXy=$xu=KgddIkp>GgUF!Q5Fo9;cU{(x;{(yOTgZylxdbU21*Qc zZsST@S=T3rOf0%69a3HkCijb_(Pi;Zw5rc0A{V2%eDP>QexsF??Q7dBml}ld+~As4 zlp|SN<eXvBm}XJS+4(h-y3!rP!srWpa-fyBG%?uLL-xbrA<qPyS!j#jku{Mrfx<2H zupWFoX?r^+f*hLY*atxdm-5!RtwVquO?uY6?yI|rY;A1WeQ5wWz8Gmh(Zr;aa=mPA ztY~#Qk$1;ehONN(pfa~MBy@|~<fRb^Xk4Yw7~>S2-!KCLc4UmXu6vCSvNo{+x0D}l z^LJ4AO0VhU@<z^IpUN-4daeO-Act3TI{uw&aDxyFlJ(D@J(ghy+WD*U`u&N#)#T@9 zbS-18-Xq6a1x*knjKBK!M`|rlo1%JfZwtm@CjIR!Bc3%8*&=wJ^XXLo9VS*C{w&x5 zag@o|pFCxCZdJLE4z{cReXD`_b`i<7CPcuHY!6cT{fSo6dQ|W4K9k{-by<mL^5?Ts zF30zhVZ>BK^77pW0u%rA?pFT8zk5X1guX)Z<8Q}W!LO`Ir4{*PVTINZ=SyVv$CbW^ z)zvO5`b*uTcPJL>gwOioZfgDywVj(`<iz>9cOP41YxEeej?d3{-;j=l#4ko-Y2mi3 zxo7=>Kg|k^N^xz@&`i0^0&JC+9s~nDE%IQPG?iUwq2qTab?|(7@GehWQZx#dsZp?8 zjT+5oqcIg$>HB<`#wp-&dON$W>n3S1sZ+R8IXc#7w&8w4JK0>4(xw_*y54$dF&B*x z#)J7s?GH3f?ZCAIJ8C)vk!z6CS~UuR+bav#b4CD#;7a6bSvVY7tvDzVbM{W^E_9V8 z3&9#TbG5mmC>@Mgdn?>{yme)Nv$e@UlsZ@}Zf4Rh`r3F{2V6oNXD;4h^V3!u(DgP$ z?q~&LOoWJ%o@h6QBqH+92%PlL<v_I+K!CMtzT=s*q80-LHqQyV1E^fvv0E_;wV|(W zpsAeN&*d&4BxVv+e>7sCUOwAYR%Jq-RUDs@mnLk)genSDMmq>{_fGF*Npm0gGoXI! zM$%IndSFbqDtqTRP$ReS<)}p~zgVm@MNyd25*%D2KtOo+=xU|jwE{X9f-Y?z;bfkG z#V&n^Dzo;W1KxE`;GE5QlWxme=HBfB5ESinB+xi;X)L6N?<wZw^Sq&fb~`3kgG2~s z6=iMr+wY{_(vGO4w+5HO((H8?>|_{qiUKPR?!zJ9>-Jn(E@3r<vBGe;#;U)qhYm0$ z7;2Py$YMT>WGk>_P(3r*#XNT@&fYL=La<Y2@*D(&yaR-HS$@<t!@F2gOS{FSJ|uqz z>@}eiysK3h-spS%FskI!y_(PIb_7+lh-!SaoV~ea1&_Z*!-4E>uL&9;z$wgYo8f~_ zRq_=TRGLF^ad+QlLb|!WsX_gi5}u?`Y9L#ZTW%Gxb%lg{<gmYRPSvjM-<l@QCNY$K zCDx)(lZv!f1ZwO9&@3_gKDs#6_h@ZyAmMknwz<dA_J<Gno1-i46Bal6Fww4us~&}} zPz5uX+OwVNHFrB*w%{XuHW;zsxjfk(XkwUX)p;S0Hik@m=v0{4yUCsQd44^Xlbadw z3pn>tl|ttoNmj4BW?;K+A|Ed9<@$Ci6-0xgQmfvSdliWQ3Wix(yFpLFHC91!FRDKR zBn!J-nRlCj88Q8a7FFiZd2Pc-U8{0vFLb+oIXt`5Yb!PB0%&eUHijAB^OsMz<-h*v zgZy}WYXU=ea~i!M5rN~{)$Fxo?Y^|?xm-<59{AbLI&mCGu1?O+>FW34`au5f%bvVB zzL6IP>$11qA|3DNpFNS^{qUan9Js|HNt)7CuaK$!zG+^u0~2YSn3f5(=aaf58>A{9 zOuul5;2oZvU$8^dZkezW>{?g)wiZw@fU6!sUCwxtCUz2xLcjw>%Q16m1T$VoNHcgx zM(?0u3Jy}q8{Oxi;KhI*S(~Ss89N9sv@UC>8HLt-P0rt<kr%D}Fm2Sq>IX|$R3Mn! z;cJkG3^JrPf3*rZX%dv$J)QGrj%<|2y0PJ`oqtxk16X6#*~~O*=W?cQG-Jq1Y7DzP zY2(H2?rEk4Up4c728yC|^s8`&i-3*|4W2A2VEj$RB?sG4+03<t4Z&VF-rJ!?6P|IA zn9`S3d}f)5CxBKuk@!XVfSd5&zs$|ox8<m6a_%$34w!nF(az9G#9>d_VEx`Ib^0LM zzwTsL7KT4CQJ<1sfh>(&;mwjR^BSnxwoTk}_3@@Dn1P;w>%vS4n-#W*$5p{<dI9N4 z-Lw$B!1v;?3;OohG*}}o_xTQifP7&399MFmn1y4I>kQZj>#{_R${Hn03wtJkGY#;g zjgU&MW|uCg6xNFPdQIFU#b)>LlkPh>2`y)|UxPtWD|KZ;{e0{{Bz8ayBdMby4*1iP z1(Ea|r$8*HpP8dsWW4X0J|k3ic>Zv)+K2~Kegm=?4uSv_VFujE3RdUXBb!)T%ei&F zVu<Qk0*%qb0KN{DC5V`{+qL?<w{2SO7!?R-=vGA`py8m4H2|UwES!}CoxZerF>~#b z>lfDy^*Ed}i677aZH3Voz;WXH8-dWY5$Z-(nIctw1_gj-V1<Z}${6ecj)mw;W(f@0 z6naivkH$<e-d@b*o9FAYxjLYBJZ=(+4+9E2DkdU?qzhdB?Tr*l26}Kp-OFgGQEF8* zsDC{;dX4V&^ZR<3Z^*MJPvp0M_ydz#SeZhAXyMg&;tZU;u=NL1865Bv8hMz-bC%j@ zulfi$T#>6@Xi&c;uOB0o_b2DFwYnnD9_`D`?G;BzNbXh!EzWjP^?m+iOaA!skeUH{ z>S>?`?aY$nMX<wlajeJ-ACuo*$o|#_DTmmLm!pYwSjmp5DNo#kCP8X8%$-=TZCshA zxyxKfZPNk(S{n(;>%$8s&AS_`^7P45j%$k9jeP!SmHg}hZH;4gj$VB@lMknt+-GRv zV{hVTfwZ4%RlDlvP(*{7l61PwwH^&zIG&{+c}5G=%bR<7w!c9~wI4p*P)+WBa;5w0 zo@XC43!twb3dHM)31#7IS=BYMv9T#{-hR){AL()(4c;dgdRF!1^T#XHet-!OMmx{8 zGkJG9(PUvoueB=|`i#GNaUlQv#~<~6#>O(C6J#pCe|;st_-tMNpWlAa>OGb_t=MO^ z>DXh880r25Fcrn?RNwdY&B#W`?g$#urL@i81u-IYy%6w0gHA*6w1C;z+cujgrw4Jt zy@R<&K%>V^-DlOLL=XJ+(A}NRjaQ2U4nJXLB^HoED?C(4MAz4bs}3FGrtSK%8Atpu zOG}cf0nzYaE=q63n^IXG>^LRNV2s<|D8~Wp*0SIdRII{*AGw(g4tC6SaS%h}*M8o+ z3>+V{m~rD8kUb{OnXlZGA#e@@s0Rle+N1?X7Y0~C7QZ$$x31h(<Lsca3*oGrs%}Z6 zi;sDI>0&n&eWA^5i;E)hxg>%Gt!-0l-&GEN%iRTwbI*mf{Fd{Y2Mqj(rLs)0c7U19 zXS?>?9S497jX4z1nvmgzgAr&#L13sca>>#L;g0MU8)?wBxh}3Eqi|2!bWdV;J;I!E zUk^#VGYCNdMN4J0$`V0nvcqvJaUFz^G#WUwU@{ZzeuJ7}U=Re1MDPU&Sc6s;M2%vz z-7O7~UL|&Tk)uoT83XBrebT1As_u_U4<4;v!5M~F9(dbu1_N~ppM_SfRjH}7E39>n zeN{m3J2GlgO1`;KJz+v&$nV_5L6DF+jYnJu-Yg~CW@e;6pDhf`ii#rhc0b#wnmA0S ziB;0Agf^t^oy<SaT=@)1Kw8A6*&Z7r9iP`ubuYNgC)U$|@6M=AE#2do=TVQMj-1U< zuyu^?#oVQ!@i`ce0ksVu?-?sq!<$$KPq?nd<${B?Z_rmD5}!(el`9_Bji&%T!aJQt zTOo4J^8^)jY)*1#cO`YlH#I;UT_kL;6Xzm^O+b>76|e%1&BH>UDJnjU0_em@uL{>- zz<Vn+SoTCNu5M-h`6GGy_&|Pq^OnFRG>8#kdzxSsj?AAqgM!$JWx@5#ge3FPTU|M$ zruqmRYu3a7Tkh}f>S2GcfekKRw+!x|J=xahIg#&PpUF=@+2Q&^m*HnW5&8bzF~=$~ z3p71vdV2r&bEA9Kb(1KyY-yRpoxa0!4dfh=zyel-Jj7R!c&rXg#S?#!)K)OnnsoHF z8ZT$2?nyzeGT~VbAR5jFSh^lwj^*Y16WL#+^6B%(vh(RDvcK7uy3p&X=5l#?C9jXK zn1Jr@ZnGosQ>~^s3Kf$q2RIStIsl(RzaAqFB-*E!C1sy6<A=^Y&SX66o7;)rpK;q) zR(9n|lRID^kO1NALOXnWHIYjV<`@&L^=#x)Vt?G-Nz@wa`s+xwoH3}6K=adk{Oaj} z{PE2P`R2tFIlDNe%G|KKC3?B?&)*)(FTdJj_hwmi<QHE(lmGIoZ%q}CQoNCzU*GG$ zZxJg4)c#;uG0B5dU+F?ciTi#m8d12K3W$*K#n}LF6ZCV+$}l)sGoNm6VXde9C7@n~ zN>CE{3vczz(c1)$p@rG#pxe9{1{~2xfGBCIq}(;!V{c8HU<Lj^b@eY+2Klma5DIE* z4>S0n>unh7$g8Kwk<kIEY#Ff0PqrM<je`g@o5aOO2v#Yp=I7ZacF<SKtaHg0E)QEr zKQDdkkY$N;>64~)pZXzK5U6A#`wS>?)wBSEbZ#)Y4^>{(Xz7;(xX`}O>0tz&#jYpq z&yD)OlQ|FlZrkJpTQ2g0LmKyquj3kLq%}lMTZ#&BK$z<dW9DnT&xrJg#{Ye}^jW%# z?C6_=K?F3sQGsAF6^^_NR<LNp_q(O*mAmtlw@KspVa|`X?}Sy6@luhMlRD#L7`Bq8 zGf$2ZqZ!sP?h!K+>USuC8Ts7&@_I~OEbe=EYmHfZ;oXhIfr3_bxg>6tyRN#6&$xs! zM;8I;=QF|(41(-v+*sBYCQ+HC&4EiHBS#6Rv28wRO>4SC4Q>P@taVg{c`;_7jw7SM zQOZ=4QixP6mL|WMr-@&iC0tm8mS}iaKo4cyA1Wza3)-VhG93{Zu$!col{u3gbWo}w zzpLMYY7Mi|G_D)-qKFc=8H2IWhoT0U$ni~Ld+u^HWy>CG5D4#kSvVNYf@?<)r?#FW z6AEJ#42T&k;F4VfTpiX8Wr#fyHbAX`asz9k@EL2c`ORItg`!h&;x3NXGR~dDAN1Ub z5>G7fuqtYs=o4Dvw2akzJh~am*DnU#V_5eat8K0&SgztdV}2QuLJFYhyI|*KIOKib zj*Lx%`#_s{XQLy<BqCZH=jdk|-2d&*Kl0qefer2S`O=K7(6s?d866zc;*Xl{Tcg2% zE*VU0ir}nR7}Zn%V0Adq`yR`=2Ebqb>}%?V&+;AGexl2HdOeXxyKDUYC_;Yu^>g|C zw?FE&58TGNkfBR`;|Pb7US60E$h`)ZuAgn_&OwVD==e_`?USN-0nwmZlk0wqLNb`& z=kDIPoR4+A^;yx<r4i?L*40Ed=Q;(z8fuB39jwU@$G7sw?`QJt(XMX1XR^?D^Sj^t zS3TcGlw9SA1)2xCj>mUXQcvg9F(}EP!utfyBaPjE1LtyG@pIDHI-6V<XvIUhO_R-$ zOl7co;OAz-j#uiYIpcZ3vl#36Y*c7*Vx2`KIMc<EY;SCkj&}!bhH^ow+aKN>=|1bp zhs#@bcW_>u+)VlG0bD%0&E>`ZipIbj*;?6@zyJAj`KLd;(*(kj34F%8i>W-`>dBwp z-*W7Fuh#*UxvHFV%)=zRHmt#&CUOuHVs{lbw^`2f8~fZSa5X8moT(??CTA6n7ZO#C z4tL~^U;%8DxO!NS1q`k9P&vomf(}(UdEmKweR+GE<{2)Af&f9-zE@5zl-^_%b<?W1 zHXG;o&W8%f^Z?@HoV~1kBe%`01KF8o*@+uvOlI>&t}{%SnQ2C-VymWePz1go0<r7T z!_qPFsuD?rIA||-I#xjYGfAPMkZBZ`9yI#U@h*(gf&+OzU%CiH#={1OcR>ZElm{!4 zgLY=YikY$43=H<SIJ7x?^Z6_Ej^VzA7Y<5DU=0lXdoN+U;N}}a6%btlR80XHoF+EE z!QpsyGv?Ru>_B^oIJ3;CVI7q72zaZks=x+kcY*x*(h$96-Xt(+yRzj+YSn_7cI+4f z9Nakg@i}3<lBRZjG%CRcMv&0M_vGT%^zl95LTYx#8MeL`J!Fx1+>V#ctQ&^{e<u&E zn(kJmtKNlqVphe?=tX=)fqP<t<Ox<4)|(^$bH{Mtn57@HbKEOh-d1us1_(!=39LyM z1%no=i-q|p1U>l5=Vg?XEdoU_qAFEX+w2lE$}C8=QeG{hU`pcMm*CikcY<J#-wQLC z`ON+d*M_lHyXBUj60uW~($k=2K^^0Q7CIuP-wy=;(!J4hZx@li7lqb0=&ccxJYEX` zgV24CGqxv59GK6|G^W(+?P9)OHHw5(N6UnP)>`c)+wUB8RN_jH0pM!E6&;^;*5*I4 zufsU2_9U~gUcZkP5?WdYQ4NA|BjdRP9sT-ZA%FE*%nBTcYU~%R@9XN0ZCs>D7-1|R zvpaxxxQ!Aprob&>9?SPsM^1+=WNmGOdm7jG#V0T1``7P{Q4(8s3*l$R3cqfWdjx%O z&p`?Hfe;%f(CLW1vseOO1AaIDEUIY6G$Q~ol9wM&HL+-MukCDa%jwyX2F9gqujN`% zPKm&O_IQ`$ob#)(T#ZoxRdRH7ug|3NQJ)n%#A{?`>;mzZ0o=j#xxftNw=dst&+Kfh zkyD=o^os5QM=ZLp`UZTQKrOG^G5J<pJH}W^)ChW^TZ5$M>nB6`{;Z~m&A<Kr4>BJe z>FYrfBdnH*dI#lL&x_x^Jmfwoo$ict$}}{E30fFGlJSx0IS&teeI5f%Xs~q2%!;91 z(czwYyt6Jp|8$p}cL?yTbO4ww<j2D+Injg&GO;Lrayrq)oYNzrO8b5O*^8YWd8^M4 z=PJ(Xy{%2gkPoNloO%C7-`BI9zKm{f<tQl##=F*J`1!#OyB4>4KA%i*2F7xIzaV=4 z*MB~fN|S2($MYO58Wl`hMC*HjAPvBtk*jn@+>180yVUcVqj5beU=N%Ix3k7W!2^Ol zEK`|d;FqZ31IKaP1mXbNVhb}^V0ueE^7dH(XN4D#JEbkm6~m!wDrpA53vE+Y3bE-$ zR_;k2_~wBMHz)neT2}zq<PNq#AdbD##ec)qhcnoFtFCb%(MnbW1G7K}Mlr}H)=I`_ zKHA-4#w}i<1`rh%x}mkjzzeQ&M^vl>)esbjB4!q!G4n)_L$$NHJ~Sa4S9Rh9Ffxft zaTWrC2qZR_ORKyvA75P^T4I9M*m&Yxb!aM?A2#j@fHq6IjNZf+zMFdBn$S*%X@Mc4 zO)vVMN=7zQM;jBf#hcMRs|%wDEoeVldt$^S0h@USnbnes5a-D_6nZUdQ{oU@ST%s) zwxOF1&kDvVXtk1~yj(Jf2IaS49E10W3LoFwc;nyz?xOvKY<)?g3u;|!Re?XlwFD3D z!toIdpg_$Rekkkpu+uQ?m~>}uRTDN8EK(uP0(ns_QH`~bm!1d;+jXQQ(nCD+Bv222 zeed(qTHa`PzCXJ)+FGYei~|9I9)O7IcYFhMw%6e{)r~1xJJHVqe>x7&QSTKV%^RzI zR`7UcXfNXD=@#d@3bY#5X9XM#WNIrPRRIKtxg%P~_?h*!E;O!KIR^uwSzc3p4hJ;# z;Ny8yG0ur1FF0ZVm=AKam-jZ4C#bN~qwoi=3v=-4e8$hg;cb9ftt>PME-3AqHyZ8O zme_AGmDVBxLu-e0hFL#HHVaFdGq(!n7I$?$e8!?SL7~{`jwV4}yH<sn9x({RK~E26 zRI~3-Z}kA*kiDG^;u265t*s1XeSKAvp&7Zwc*n#Lh<D%cel@_MVn>$&&##~(o++{Q z`neoxQ2lp5{ZiNdng-b|4YFrUerVZCS=^FIAH=}1ufZr>(0HbD|M)~Ea4&cNf~Xx+ zHylo02<CIRE9!#-m8r~^R5V=X5uMa7Zl_dJ11R(ID%JaG5vYbj2nhkkRjC#)Gkwl6 z&p@qym#qd!i%JjYC|cU(P(MQh_}TT1Z0ddmkaRRP(-yRl(RsSOx#4wU{DMvl_~vb` z%8R&1(H(+rF<L<7s3#NFFskO`>p7{UfAf>4^5W@Z{ovooA5W)DBv6<fL^kRQKs<mS zA+;L2B``E{I_xG{=e9>mUd{0nx=r{#B*~E91w|2HR1;1^LS1XYGLh4pocsM}pRChn z6|}bY^F)L3iay(x{BOT{qkBx>Ie`Jx7%S(lg{iq^Fkd>ABzvl#RmqmFmDfkdESPZJ zz#nA#{+{h^ks^&}g=D9QQrX%_<m7ZN2V1K=6Y#rn{U_%dj9;wr^Dpj}98(~9#@HvY z5>mGVpH+6wVhm{`V8p353sH<ksC1}5hom8GxjS3n5eH6r<z_8);Eg*{JyiD9M><~t zof?S++1RV<0745?IU>}(eez)5Qa*@{$Y0L$LAk&M2TyE61}BZAEHm(|^#CBNDsPPn zDK2Oi;;_ryw$D_k92E&E!ouVYNuOGp${aFO`W)-u*zh>GS9OsDp_KscGK8kJ)e#s` z1$2DuKs<rI0DK*v2QO;NwxDpgumu1mFIdp(@5|>oMLhy=s$h%ADhV(P@K2*1Mg-L1 zkU=1Xx)lNh1xkDt2Oya(VgtTl1hJ_L3@==gxIqxl7DkuCY|4O*X1hD1l%xhJ{n@Kq zLr-IcwX2NJJAfX8<S*Z;{v29!yk=~qVV~avE8W@+XrS1YF0Bd_m&?Rvw3&3<1a>Nu z=WUS_JlEej;kD38Gd0{q;`;qK6k!oMC3m%u@#&RpZ>(r0zR{rUZ}0Az$iWB&OY!XT zhCnY=%mJ;BN*lq&0Cv)VMVGm`e3kyZi2H~i5Z5iD)-CC5M;1I+dWNJfKpE0!)50MW z*R<>`wKUE2o@Vp9(M(_x8Cik}pYNAv_Y^?k?{68O9iI(kYZ|p|l*M3eTw5m0`cZdN zv)QD9#Aq&Btno0sn}d72WYt~kd%d1ja(Y*=l0tP^l%Z{H9Tf!JeBpA%sR^c(KF=dM zJhbJj(CI*Mn_K5j44+Werhh<6q^m#L=haRFvu9`azE*u>RxFt~CZ?bY9VvaR><cr$ zfV69Gz>ZCj^JRjhNrb(K+L<7(LWtIIA?{*m+8N+guMJn&{ye@Z<clYLd6yXPpKgLn z%wVVFOGD@d9SuBJc8qEpiNPBM*K$7_QCMes4*{!%29PBIgs{k*Pw(aF!6Ui2ys&d8 zH}jTuJ95TLX`?_;)Rr~%^-XpoqTFd+Jt%gTZb}3YVos&QdwF)SPn~Z7F}LXlKal_T zcYl_?Tj;(%F6Ec&dz45;mAIkn|78h`KrXxMeJPfGIldg51EUAW%JuS}Xt27R-1C{+ zxu3|MCMfmA1&bQcy3WQk+382Fc$si*5O|rOQ#Gf{U0&GOhq45EMgu{PJqKXf^`wwT z)s-x>W*1_;-IrrUVl0wLym#s=W?8-e>aq!>OKeGuGx=YPc8DNz=ITp}_kEMrWSa zOx}QV!ajod3(oI(QPbxgdkq2qR;$@RzB-rx`*-g&Q5vxdChke^|EUIcjF=K<z`!E9 z)h%e%`ebWG)>hYLR>nMYcGow!rhfcz%rpP-&K6w+Tdj`n?XEnnp^4Fz?bVEczw?WN z-P6sLxx70c$)nAI+)fMm_um}I|NfgpCctDawE#XwG__GL)-)_`ah<S?2AvJacRVj> z(&L^{cw#>R7@X|y?)|T!GNQ1A+aeMWmslG#Y?9D!ZRXjH+F0$*O>?J%RSjx2^$avg zorVP3RU9?*y1-=zk~YgyH)}B?0a_JiEk8V+tL^_zz9L%3rK$1Q+~1YrmWxJx3x{m5 zcx|~=tC^*w^oK@ErE&v_kWi#fSEG$06{ONeb6b42AAS!H8Gi<$RSy2{_2`ZnSGbPY zTi&=vRNjbe2wVX`$3TU}3BL2nz-=Xkl?PFfUbUO#X32`8B%;~?ZQ**5WOUlChCKi@ zd`Opo+@&HGHmr97P$`2S9PkDB8_4rPzr)W$g%*H=fnRRd`!G8<T!NX2uuV-`O~E7z zRchwcF5~}OLdQ93K$uIQlf{i+K;UPhg5T9(4T>Ay1zLpQgJWzkM}oA>P4Fc_%XGr$ zhro+~j!p7(f1B5Y1Puois(S><oB`7Vy0^$lzX8y!l{OB9v$^SScUtD8hagW2%G$IR zOgzO7Mcf}$)R0)M_B#fi1OGm=MDX4Z4_q_acLW(a8XpHYoZ;|$aE+i5>B``NkIMZ{ zzc$f|=zfVAV9BcQ49a1Xg+v;FFe;<+)}kc62o7z=!8e{W0&hjNI$Ns?-}7b%5P4O! z<a%b?-Hmt<^u>W|MCE$o8eH?xW~JUhX1>;2>)TAyNYlgUAT{N=cB{j6i+$Sf4$Rt@ zX!Vrck=k`5jEigf7p8$x@_fLop7y%6nR*0Ks?fg2p50hobqqz}4qm30k-7zMU#n~i ztx%AvmV=c@zI}Ts=Qnrkt{h*CiATAa%!%9{(LWvs`iy(EB)U6d>vm;e0ynS#ZR?sT z$Z;PK6VmBfVvXwh=;Fq~jYc6v3wF9FSvfA8y%8u&5UDZVb?p1F$8K0q^~64((~U5r z2n}YapFZA`p$6^a(;IfRC=8{~51pN0nTqF#IX*@Tl}j~GN%<>W)lZr(3D#!hEnfn7 zHOSs$o$9rJ^L&?y2F_I6E0R0wo|&w8ubr4OVA^Tk6Yg)&AMlyg#nL-MdM%o4_A+!w zBl+}TO@q<~M~fT>MdIE8hVejB4vX2JJlo|u!;BpJ6eBI`npxtFHH2acp7ZBdSMvV& zLjLsXNWS~=wY+@&PX6%cSMtM~w{m)ZuGhcH%6B%qbN51<U1L8XVB<^yNERb4>U`=R zTkFN7svT=_u+q}=q1C5cYvCh1CXY;nL@W3^dHLZ|b_ODc7c+Jux~YMYpX{#ltbTKL z$9?i*Z>Ya>O0D^zC`nm!-8(qTmsD3wIad$DY%Dxb%uFU4FIEiO;=)Ghu-_-}1dAG3 zFQR@Idd)4<PwsWf#%p`-Drb=gTn1SON(5!P*sJQqgK%TIg4T%#qLw?h1;@288|Q(~ zdOvqprp#N&NmISk#?{@`n8C&mf--0sTP7bA>N0a-f|g*%6o$HN)3n%5Dco5K)h=~) z!4=Jn_Jme0D#10~9JF9flZL7Xii|F|h6Wg_5ZuPa^(|lM`s#p)c6=TLEpUbBx){Kr z3|wWj<;}yslvVwHEDp@Rk)*7yu2^-kST=J+d<KxO?4m@{P|wQPIPDgs7rfTtaA5d> zJa2rPF@Ih*)~eEg)WQe`2LdwN+EL;7Iu5SN1Ccoe#UAk89ZlcmlmHUv+9vKkR~Uef zV-U>QswIEt!du;VXLGN*;6T=HEloyM7iX3Qi&--v;XAMFFhS>Fk<SR8Sva~MU?prm z{4<)m2?juAdLM_EBetZ1-0d<qedRcM0A|u6n6#_R^%CMHn9t`iJ2gloacI)mqor#a z0x!U6KyI}#^nc{nyP!O1p}}~;HYZ!7x)$$UTm-G#ey^a_84_VsOed*1|D|Qj>&uFn zw19|pLk=clF{;<Oq23{g!?t%q{bzK*kgS-_cww_<{l1|FA1x;ttT<-K^G2{JrQ?=y z|7k)34s|PbZwIrg4U)%@p2d6^dopVqJ#7U1hJOCAKhz)40Gbx=jV`3vU}nCm2Tq~Y z+h{T-wFwQQ``N@47+q=?3TZ7mu(e&-M)!JRYKN^<E0b=I*9p@X1n;P2AVM5+9Q`Gc zBi&2)C5W1?9g~!_VzE+s(u?)?Mg!8nR5$WY57v$bPs}B8Fmn{A--okgu1OZ!>-}z@ z9ltbPSi)Z}xla+S=BXvds8lhUNFbthAIsj(wtVx|H}dAgiLCcC8O<Zggw~}oF(^Q^ zFbQ7-k2uve=u8=UGQ^R~vO->T&Ln6`)=^DmJ3Ql)iz{8*_cEFt$~Rv;l}kNekT@3k zRK9(6B0v9hi_Zmk2~_Kcde*_6?yp{K$;stqV^59FPvxUhBpfIthD=nz+Gz2d+*u#W z2%|7vn?HZPCpY>cZ>BW`Rk(%{qql<KyqIh7Nm?$xW$#AwQqH@Hfzo}u|7f31kXN^N z^6H{1zy9NIh?#)`9o|*p<BFJjwvz3QfhLSYGG1`LObc`MTe^Nl;u6@<?L%jUCSH{l zDs3tUK6DnzxS^?!o`=&&`k)fGGnb^bbA}z2!sw@!uG`&>C$gAcbN}sbtjqQ7xqSL; zD4IVvu7HpA%*DEV{lP$Vn;RQ)S9E3An#<LFEl)O9`MF5SpFDabS9b-IzlB!i@U5Ra zK8NE;O(^G;SrH?#!*~;3>9~hQ9@roe0f?8kBYA$X&;4Cd9|N*-5RDiNcrcIeCxpjm zZo**mKl6L-L|t=iV@o^ZOB5HNN!**e_TXSHQD$0#uiaCSA?86*)pdi`4N|AUw4w5< z!K%5E02O5D`1i0WCFssC7uGRgg%>+lxn;^*%x+q2>m=^k4)vh@o*7agTen$w%3z22 zHfB_8<?4c6Uma2<3iA?HBxv{QOUfOoTL(*2#~_?uT+&Y%;3FW+AMbCG8iI`p6tGF? z#>}P)rzZ^iMq}eF8}gjGm{29#W~<nCpSv(hi(2qGHNcrw)@C7Fx@LG>nl)?c)iC8u zU2?T348TX)VKBNNvfGlWK%*<ms_CBaP|PbnkIF@83TF<W5=T;m;CD+7t6d-Q26fmx zR@LIrF;HXu7sfA`VVV=s+~JWt<yrM$V_$1x1lOe+pIa}Q*4@$_v*6~3wS{p6vf8bl zRR;*h^ds<ua!#4z_<{E1G@;U|fHWnFEl9?0s#6pXyj`1Jr7jN~JKrC4B5R?N3muuo zB4(twb88J->rxY<DARRUx+#t)!I=MM270+GCIl(bxI{m%?cYN|LA1FGON?NIR#nmf zFGIG@zy+)W)+s1fOVj-3Ay;aGr@?li|7=BtKJ$(Seyhm9FUR45L<LU*2M0OQVxtKt zjNz}9!3xg=tdIVn<Mg@(=`@sOg~VlNVXb?370e13MKaMK(0Y=%P2_dSky5vLH#pRh z)Bt4-5D*-yUcPz5c6{UfNFblC6HN;6y+qG@VvpayG8i~weah#Hvk6556MPqy3Wdlm zyryYCYjn!<Ni5H{hw?8kPqlj5rW4s)d`}8aw^q8leOb}#Wy0(tU5P%&Cp(++>8H<` z=zuu{K@k8NS5}6yf3U~TxE+ldFrI4g8jmmaxwTkPW?-%?%oK_hd7bLlVj`+zm%Igv z9%w@V^M+ZMXBg~UabNm@Og_i=1_ng1M=^qZ2Tk=)p6<!f$*KJC`h(o<4rF(;C+|=1 z`EE8fu#YEKay}|3S~FqCYVI<_Htqpn5zGxFq+K!>a>{L^1BArpKm7bt`NP{2(o4}f zyV8od6(xR-T4E5D6WzyK92er*!@pvq2P&f`gYy~Z-Jln~KRT3FXCSTah8Fi%^6un2 z%I~5WTkW+7cE(<T)a}L1tsI_RSRvw8s*Dp3|HKH1<1(rTW(2umij(IHeRtM<MO!<n zB8n!Vh2PU;?UN^8%l?L*{X=6Ep<9K50S<NFy}M#1K3hylLpyl#ME>cwzms3=Kavke z8u%9@eWrcluaM+oevcM;#g4&DzSRA8a-~JsYAT!kTt<t5eExJp3%@&AUDz{!e{v@8 zujlf~{+irs0Wd;$6%<I&1hW-(d~t_3qqjAgK)W5zhb9bGG@$4qD0&6j`#nh!WN~OP zcvU89Pcs!%;y6feZ^#RU7V_QXj)C6}xU2!Xnc`bzy2y?Sr_vKF{g!jD#?8;$C^*s_ z<aA6cY-S&3agCUaOPbO<*OAx35iQ6@mM*m#EJxwkgGI;<4t?jY0d}b5rU?w@jgzTn z<#o=C7;To_&9#PqPM#_yRuh8FjNhKhjV`K)Ty#ULC-C`=(grX`kr>@%D+5C~Ae-#z z3twMbVLNg-?DLvorwXnk=s1|Ep-qg@1ZM4cF-FpeNI9x2lTHnacs&B<Q0*<O9%0J| z<H*cqBumao5kOE`BO_fp)eFd6bBYqLRtg?4M8Z!?=P28Cx2g7JptK;fi^PF&1?L9a z$i_f`pq$0>V01HI=<kF;j0PlhItW7JW@|U1HV8VMUdC1_z&!vhrPQxpu*&_|DmMTY z(N%%RIl4-y%maTvh|uub+h(j1q$k&r80ht0UX4ia!o5A(-6Wpj;%3C3Me>A$BuZ_j zjOPlwMYbb#^X0cD(Fj0Qz?vXAGv-8)FHT%L-o{6qO^a?!4LazqL{c}RLkKEBgfA8| zzB5!29dOez0*g$50%5VEl{qL!NFtGFWAxDJwTRKcXKn%<C^nyOX~o!I>k?E27622% zykhmep=%FZf3^UjiZ-`I3P}>)F)Hrd{m039%`$dTau-J-_c*pTCvLc6E4$6)m0c~& zW;w^~vT7rHK>r=CR{J}<y52{cplvWYK=O`tIi8Fu62o?Ot3$o<+woYxZ;grGwVpe; zo<6IS1zY$D56^jH{1PqQb~QI%a>r$exyH~1j175j+6;wB1UnuB>*M5h&VcmuN9%e9 z^!2Rh%1;h9H8>6!1TgaH>gVHcCdL}rFRyjYL}rUwmKiCESGRg!k!kDy@ZnsB8nB{5 z*Nn{c9Yvb(>)M47QO=Y}e{RX74c!pTUr|&o7BxGRKwU3<WSC{3<t<Hd4}lYv_MKI+ zYv{1Xpt;`jx=$}hOqO5i=kIK+XwdA+kH;g~T4~9F26h;{z$pxKc)a6H{qylGx3$X7 zXKbzU!uC7pTm8;Ze)0KJ`R?eF=N80Y{`B@#E5kcd-|!C1snEK%#?VXPZm#!ki~ty| zU_VagaKytnMr3t3)Mqx5vx_r%`V<(Pp3JA4`uo@9?CMs}ee1nKJrQ8$!FGp*&*AwM z_jjP026`$y1v>1$A~7FmveVVy*&(PHU@~ZLbN~!?@M+@yBZp^WxzIImHM-KEI+VSQ z9zlfw&!riRYBuHgDwYptH%zAVW(k0!RIl#ye|vQ)Up`M|1l!mMos)BYXB}F!o?l(- zGaqXqxGp!dTJNn*5bMRbkYD`#h5Yd5lmb!6PyY1!So*pSV2;D{Cby2%QrEwYbnss8 z%p8qkNpq8^=7=j}hjdXashf}FC&j_S!>R6Y)(a_11V9{i_Zq~JeGCUfQr<ePbynOA zt`3yJLnSv?H!3)kNo*Or>0MWi=?8tPovY12-HCZv1oyMlI|H1plMdE4P#tFUZdifu zTe`7K%QePvz>mh(I<qQqDfOi03=RN`U~d|E=b+$&iD)9wOHI53VRUzElN&YF!+t|w z3Kml<v+5JiqSnI(*-|@dTM(!AyMLY;Ci9R&8z<El53m?AO0+-Mwc=0RUmhsnPL7SF zi$Sa0<BMxno8Xi(=wRlk|BatxlF~B61#BuHyxXlcRx()R_%n0?@MoDO2Sh%)Han`i znFAn$>}{vjatU737YM*XfH$zQ@27@|$Qjs;gP-`E8wU+rkU;ZS8C}hAAYp6(3_$IM z8mN@edWB*f-W#6(R0A~<!+CC!n8*!o?xwa8^*Lvd=>#~bK$~zt)cft|p3k?_F&*qF z5&D=}l}>dOCS9C0EoX9ZG3MGra*D12lDn9i<}qnZ6<Viy)Qllob2@VS+>C#gbgdeK z$`n+_5WHYeQM+?rF$2gZ_jzsEFglo)Ru4*t93xdmV>)=W!<jbL)TCUP`XE|)r3Igs z%r$suQdJJwp6*2U^Pq=KmqyPlgYJSJ1}n(kF`sNhY03ahA&J5!N0yJIhhw7J#$P>( zUjTI+6LfkrUb1_|nSLiV4TA{O#cj^!uy-Q{<hJqKD`_Z?7$59w@{7*ixdyKdJ*?*X zTrRG!z1_|KWt*@l7d$5}^<cZ_^RzU+%u5E_S!LLghzeUq-^BZ$>3-eS_prISsfYfJ zGd?=(URkG4&x$<dn9wvJjP-%TuFDo`Tav<94>i|&y8++6cyz!d;rQ&_C68mCIXBa# z?5?D;wY5PkLabkV)T-qV@6PEwHkUSMo9_X{9O(6CJp&d-SM2D44S^!)ktU^h{*&cY zR__a%dq9_cZ=)|C&byo)lUH21Djv?k5=Os;;f3&wDmx2p>}c&|Grh4cRxHN0L2^9o zZ)k#XZTnHz?{Z>*L72I0Xb{V%BMmGgIl1o3v%Mh=M1cC=LNKR6RBFYQ?{R!)Sr?=& zS4@yB;U7&GE|8TmNd5W!z5Mkj`|@;eo7MbNJty8DpK5V3ZLl?94NRvPYpfV(Ei2_@ z8nL|$x3WjW4UH{hdHU!DRr|hw{Z=APxc>TQUvut`LIJaUoDB$A^u*BXJkob}q3_6K zF)Xn(O%%KrBrkme6ZHwRa|Tuk;tttIk&U&)SyDKsHXuNB4gsHA`Q7VFx&6&K=kb(G zriqnxya28{IzD6qgZ2NNUhl@*mKKduf{A-t#UE+4{nO8$GqJlz_oUk)_aA#;q<i!D zG?D-D7mwxYdLeHQQyOPsFYIrvu)0Tr28PwjP|x#;xhP^hop$=x*<2m+`+&N~XAY=2 q(v$7=b)JKGK6~4n+~@zl00RI7O%Ev5Ai-Jy0000<MNUMnLSTXvLP`k$ From 75913ce446ba43098f78700b985da28b2e48b39f Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Tue, 20 Jul 2010 16:44:59 +0000 Subject: [PATCH 584/674] 2.5 Beta version files increment, from 2.52 to 2.53. --- build_files/scons/tools/btools.py | 2 +- release/VERSION | 2 +- source/blender/blenkernel/BKE_blender.h | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build_files/scons/tools/btools.py b/build_files/scons/tools/btools.py index 03a1a0f0b7a..5647ef0ebaa 100644 --- a/build_files/scons/tools/btools.py +++ b/build_files/scons/tools/btools.py @@ -15,7 +15,7 @@ import sys Variables = SCons.Variables BoolVariable = SCons.Variables.BoolVariable -VERSION = '2.52' # This is used in creating the local config directories +VERSION = '2.53' # This is used in creating the local config directories def print_arguments(args, bc): if len(args): diff --git a/release/VERSION b/release/VERSION index 49d0a5da421..c43732bd65a 100644 --- a/release/VERSION +++ b/release/VERSION @@ -1 +1 @@ -2.5-alpha2 +2.5-beta diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index baec6ecfe6a..4e299accffc 100644 --- a/source/blender/blenkernel/BKE_blender.h +++ b/source/blender/blenkernel/BKE_blender.h @@ -44,8 +44,8 @@ struct ReportList; struct Scene; struct Main; -#define BLENDER_VERSION 252 -#define BLENDER_SUBVERSION 5 +#define BLENDER_VERSION 253 +#define BLENDER_SUBVERSION 0 #define BLENDER_MINVERSION 250 #define BLENDER_MINSUBVERSION 0 From a725cac5206a29b8a54763e4daf97e9cc35f2220 Mon Sep 17 00:00:00 2001 From: Diego Borghetti <bdiego@gmail.com> Date: Tue, 20 Jul 2010 16:54:50 +0000 Subject: [PATCH 585/674] Fix #22905 [#22905] Adding objects with a grid size of <1m results in a 0 size object The problem here is that the return value of the function ED_object_new_primitive_matrix is a float, not an int. This come from an old revision, before the two dia and depth multiplication was using the function (two call to the same function). This was change to only call the functio one time and store the value in the "scale" variable, but the scale was declare as int, not float. --- source/blender/editors/mesh/editmesh_add.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/mesh/editmesh_add.c b/source/blender/editors/mesh/editmesh_add.c index 6cdd1dff1fc..c88e40d9cc3 100644 --- a/source/blender/editors/mesh/editmesh_add.c +++ b/source/blender/editors/mesh/editmesh_add.c @@ -1286,7 +1286,7 @@ static void make_prim_ext(bContext *C, float *loc, float *rot, int enter_editmod Object *obedit= CTX_data_edit_object(C); int newob = 0; float mat[4][4]; - int scale; + float scale; if(obedit==NULL || obedit->type!=OB_MESH) { obedit= ED_object_add_type(C, OB_MESH, loc, rot, FALSE, layer); From f8a67e87cfa3af3afef168e96c5d5e04454783e8 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Tue, 20 Jul 2010 16:56:44 +0000 Subject: [PATCH 586/674] 2.5 Beta update to readme.html --- release/text/readme.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/release/text/readme.html b/release/text/readme.html index 1da4b62a73e..1b14c63e14a 100644 --- a/release/text/readme.html +++ b/release/text/readme.html @@ -12,23 +12,23 @@ </style> </head> <body> -<p class="title"><b>Blender 2.5 Alpha 2</b></p> +<p class="title"><b>Blender 2.5 Beta</b></p> <p><br></p> <p class="header"><b>About</b></p> <p class="body">Welcome to Blender, the free, open source 3D application for modeling, animation, rendering, compositing, video editing and game creation. Blender is available for Linux, Mac OS X, Windows, Solaris and Irix and has a large world-wide community.</p> <p class="body">Blender can be used freely for any purpose, including commercial use and distribution. It's free and open-source software, released under the GNU GPL licence. The entire source code is available on our website.</p> <p class="body">For more information, visit <a href="http://www.blender.org">blender.org</a>.</p> <p><br></p> -<p class="header"><b>2.5 Alpha 2</b></p> -<p class="body">The Blender Foundation and online developer community is proud to present Blender 2.5 Alpha 2. This release is the third official testing release of the Blender 2.5 series, and represents the culmination of many years of redesign and development work. <a href="http://www.blender.org/development/release-logs/blender-250/">More information about this release</a>.</p> +<p class="header"><b>2.5 Beta</b></p> +<p class="body">The Blender Foundation and online developer community is proud to present Blender 2.5 Beta. This release is the third official testing release of the Blender 2.5 series, and represents the culmination of many years of redesign and development work. <a href="http://www.blender.org/development/release-logs/blender-250/">More information about this release</a>.</p> <p class="body">What to Expect:</p> <p class="body"> • Big improvements - This is our most exciting version to date, already a significant improvement in many ways over 2.49</p> <p class="body"> • Missing/Incomplete Features - Although most of it is there, not all functionality from pre-2.5 versions has been restored yet. Some functionality may be re-implemented a different way.</p> -<p class="body"> • Bugs - We've fixed a lot lately, but there are still quite a few bugs. This is alpha software, we're still working on it!</p> +<p class="body"> • Bugs - We've fixed a lot lately, but there are still quite a few bugs. This is beta software, we're still working on it!</p> <p class="body"> • Changes - If you're used to the old Blenders, Blender 2.5 may seem quite different at first, but it won't be long before it grows on you even more than before.</p> <p><br></p> <p class="header"><b>Bugs</b></p> -<p class="body">Blender 2.5 Alpha 2 is unfinished software. If you encounter a bug, please help us by posting it in the bug tracker or using Help → Report a Bug from inside Blender 2.5. If it wasn’t reported yet, please log in (or register) and fill in detailed information about the error. Please post detailed instructions on how to reproduce it or post a .blend file showcasing the bug.</p> +<p class="body">Blender 2.5 Beta is unfinished software. If you encounter a bug, please help us by posting it in the bug tracker or using Help → Report a Bug from inside Blender 2.5. If it wasn’t reported yet, please log in (or register) and fill in detailed information about the error. Please post detailed instructions on how to reproduce it or post a .blend file showcasing the bug.</p> <p><br></p> <p class="header"><b>Package Contents</b></p> <p class="body">The downloaded Blender package includes:</p> From a32b1ce8dcc9befba7d969595f60445079e8a94e Mon Sep 17 00:00:00 2001 From: Xavier Thomas <xavier.thomas.1980@gmail.com> Date: Tue, 20 Jul 2010 18:06:46 +0000 Subject: [PATCH 587/674] Add Ctrl+Alt+S as shortcut for "Save Copy". It was using the same as "Save As" and was confusing in the menu. --- source/blender/windowmanager/intern/wm_operators.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 7d0ff1e44e8..3a39e871025 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -3267,6 +3267,8 @@ void wm_window_keymap(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "WM_OT_save_mainfile", WKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "WM_OT_save_as_mainfile", SKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0); WM_keymap_add_item(keymap, "WM_OT_save_as_mainfile", F2KEY, KM_PRESS, 0, 0); + kmi= WM_keymap_add_item(keymap, "WM_OT_save_as_mainfile", SKEY, KM_PRESS, KM_ALT|KM_CTRL, 0); + RNA_boolean_set(kmi->ptr, "copy", 1); WM_keymap_verify_item(keymap, "WM_OT_window_fullscreen_toggle", F11KEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "WM_OT_exit_blender", QKEY, KM_PRESS, KM_CTRL, 0); From d047e5cbcd992667a1b80fedc2fc4588f80f4162 Mon Sep 17 00:00:00 2001 From: Andrea Weikert <elubie@gmx.net> Date: Tue, 20 Jul 2010 19:26:53 +0000 Subject: [PATCH 588/674] fix [#22915] Bookmarks and Recent no longer working in r30498 fix [#22920] Clicking folder icons doesn't work in File browser and append * issue was that on windows stat requires the trailing slash removed, even with mingw. (since we are after ahoy, putting this into extra #define, code cleanup will follow after release) --- source/blender/blenlib/intern/storage.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c index b7e2aeb84c8..f4679aa4dcf 100644 --- a/source/blender/blenlib/intern/storage.c +++ b/source/blender/blenlib/intern/storage.c @@ -449,6 +449,15 @@ int BLI_exist(char *name) if (len > 3 && ( tmp[len-1]=='\\' || tmp[len-1]=='/') ) tmp[len-1] = '\0'; res = _stat(tmp, &st); if (res == -1) return(0); +#elif defined(WIN32) && defined(__MINGW32__) + struct stat st; + char tmp[FILE_MAXDIR+FILE_MAXFILE]; + int len, res; + BLI_strncpy(tmp, name, FILE_MAXDIR+FILE_MAXFILE); + len = strlen(tmp); + if (len > 3 && ( tmp[len-1]=='\\' || tmp[len-1]=='/') ) tmp[len-1] = '\0'; + res = stat(tmp, &st); + if (res) return(0); #else struct stat st; if (stat(name,&st)) return(0); From 8005e7f130ba5caa403daf2286be4be06aa509f6 Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Tue, 20 Jul 2010 21:41:42 +0000 Subject: [PATCH 589/674] * In previous commit, the draw brush for sculpting got separated out to a new brush called 'SculptDraw'. Updated the keymap 'D' to switch to this new brush. --- source/blender/editors/sculpt_paint/paint_ops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index 5d52b0a3272..74f813a95ec 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -273,7 +273,7 @@ void ED_keymap_paint(wmKeyConfig *keyconf) /* brush switching */ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", DKEY, KM_PRESS, 0, 0); RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); - RNA_string_set(kmi->ptr, "value", "Draw"); + RNA_string_set(kmi->ptr, "value", "SculptDraw"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", SKEY, KM_PRESS, 0, 0); RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); From a0c80f31a085d277df7d7ea7f5b20117df4d1014 Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Tue, 20 Jul 2010 21:55:08 +0000 Subject: [PATCH 590/674] * enable unified paint/sculpt size by default. Note: I think this will enable paint/sculpt in all files, even when user has turned it off, unless subversionfile is bumped to 6 and the comparison is changed to subversionfile < 6. I'll leave that to somebody else who knows better when to change the subversionfile. --- source/blender/editors/interface/resources.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index b5f2a59dedd..ff05dc41c9a 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -1531,4 +1531,7 @@ void init_userdef_do_versions(void) if (U.sculpt_paint_unified_size == 0) U.sculpt_paint_unified_size = 35; + + if (G.main->versionfile < 252 || (G.main->versionfile == 252 && G.main->subversionfile < 5)) + U.sculpt_paint_settings |= SCULPT_PAINT_USE_UNIFIED_SIZE; } From dd74b723eb8a27e2a582f5593ebd525820931989 Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Tue, 20 Jul 2010 22:06:12 +0000 Subject: [PATCH 591/674] * added keymap C for crease brush * fixed key mappings for Pinch and Flatten --- source/blender/editors/sculpt_paint/paint_ops.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index 74f813a95ec..0ae9ba77ca0 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -281,7 +281,7 @@ void ED_keymap_paint(wmKeyConfig *keyconf) kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PKEY, KM_PRESS, 0, 0); RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); - RNA_string_set(kmi->ptr, "value", "Pinch"); + RNA_string_set(kmi->ptr, "value", "Pinch/Magnify"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", GKEY, KM_PRESS, 0, 0); RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); @@ -291,9 +291,13 @@ void ED_keymap_paint(wmKeyConfig *keyconf) RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); RNA_string_set(kmi->ptr, "value", "Layer"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", CKEY, KM_PRESS, 0, 0); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); + RNA_string_set(kmi->ptr, "value", "Crease"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", TKEY, KM_PRESS, KM_SHIFT, 0); // was just T in 2.4x RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); - RNA_string_set(kmi->ptr, "value", "Flatten"); + RNA_string_set(kmi->ptr, "value", "Flatten/Contrast"); /* Vertex Paint mode */ keymap= WM_keymap_find(keyconf, "Vertex Paint", 0, 0); From b21092d6ad7e859d2576275a37deb17b2d4a6698 Mon Sep 17 00:00:00 2001 From: Tom Musgrove <LetterRip@gmail.com> Date: Tue, 20 Jul 2010 23:53:52 +0000 Subject: [PATCH 592/674] sorry this hadn't been committed eearlier allows shift+number so now up to 20 brushes can be selected via the numeric selection instead of just the first ten, also CKEY is clay, SHIFT CKEY is crease, and IKEY is inflate - not sure when the IKEY for inflate got dropped previously --- .../blender/editors/sculpt_paint/paint_ops.c | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index 0ae9ba77ca0..5e2d5f46800 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -209,6 +209,36 @@ static void ed_keymap_paint_brush_switch(wmKeyMap *keymap, const char *path) kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", ZEROKEY, KM_PRESS, 0, 0); RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 9); + kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", ONEKEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "data_path", path); + RNA_int_set(kmi->ptr, "value", 10); + kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", TWOKEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "data_path", path); + RNA_int_set(kmi->ptr, "value", 11); + kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", THREEKEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "data_path", path); + RNA_int_set(kmi->ptr, "value", 12); + kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", FOURKEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "data_path", path); + RNA_int_set(kmi->ptr, "value", 13); + kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", FIVEKEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "data_path", path); + RNA_int_set(kmi->ptr, "value", 14); + kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", SIXKEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "data_path", path); + RNA_int_set(kmi->ptr, "value", 15); + kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", SEVENKEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "data_path", path); + RNA_int_set(kmi->ptr, "value", 16); + kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", EIGHTKEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "data_path", path); + RNA_int_set(kmi->ptr, "value", 17); + kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", NINEKEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "data_path", path); + RNA_int_set(kmi->ptr, "value", 18); + kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", ZEROKEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "data_path", path); + RNA_int_set(kmi->ptr, "value", 19); } static void ed_keymap_paint_brush_size(wmKeyMap *keymap, const char *path) @@ -291,10 +321,18 @@ void ED_keymap_paint(wmKeyConfig *keyconf) RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); RNA_string_set(kmi->ptr, "value", "Layer"); - kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", CKEY, KM_PRESS, 0, 0); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", CKEY, KM_PRESS, KM_SHIFT, 0); RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); RNA_string_set(kmi->ptr, "value", "Crease"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", CKEY, KM_PRESS, 0, 0); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); + RNA_string_set(kmi->ptr, "value", "Clay"); + + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", IKEY, KM_PRESS, 0, 0); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); + RNA_string_set(kmi->ptr, "value", "Inflate/Deflate"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", TKEY, KM_PRESS, KM_SHIFT, 0); // was just T in 2.4x RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); RNA_string_set(kmi->ptr, "value", "Flatten/Contrast"); From 015ecdee2965ba872162514a94ea7b7751ecbe1a Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Wed, 21 Jul 2010 00:57:25 +0000 Subject: [PATCH 593/674] * Polish preset did not enable tablet pressure for strength * Turned off 'Front-Face Only' for all brushes, it needs more testing * Added brush icons for other paint modes * Moved 'tool' panel to bottom of all paint modes * Moved 'appearance' panel to be next to bottom * Moved brush selector panel to top of all modes * Closed all panels except the brush selector panel * Turned off X symmetry --- release/datafiles/brushicons/add.png | Bin 0 -> 10948 bytes release/datafiles/brushicons/blur.png | Bin 0 -> 9327 bytes release/datafiles/brushicons/clone.png | Bin 0 -> 10774 bytes release/datafiles/brushicons/darken.png | Bin 0 -> 9653 bytes release/datafiles/brushicons/lighten.png | Bin 0 -> 9437 bytes release/datafiles/brushicons/mix.png | Bin 0 -> 10448 bytes release/datafiles/brushicons/multiply.png | Bin 0 -> 10039 bytes release/datafiles/brushicons/smear.png | Bin 0 -> 9358 bytes release/datafiles/brushicons/soften.png | Bin 0 -> 9219 bytes release/datafiles/brushicons/subtract.png | Bin 0 -> 10173 bytes release/datafiles/brushicons/texdraw.png | Bin 0 -> 9462 bytes release/datafiles/brushicons/vertexdraw.png | Bin 0 -> 10253 bytes source/blender/editors/datafiles/add.png.c | 349 + source/blender/editors/datafiles/blur.png.c | 298 + source/blender/editors/datafiles/clone.png.c | 343 + source/blender/editors/datafiles/darken.png.c | 308 + .../blender/editors/datafiles/lighten.png.c | 301 + source/blender/editors/datafiles/mix.png.c | 333 + .../blender/editors/datafiles/multiply.png.c | 320 + source/blender/editors/datafiles/smear.png.c | 299 + source/blender/editors/datafiles/soften.png.c | 295 + .../blender/editors/datafiles/startup.blend.c | 15432 ++++++++-------- .../blender/editors/datafiles/subtract.png.c | 324 + .../blender/editors/datafiles/texdraw.png.c | 302 + .../editors/datafiles/vertexdraw.png.c | 327 + .../blender/editors/render/render_preview.c | 58 +- source/blender/makesdna/DNA_brush_types.h | 19 +- source/blender/makesrna/intern/rna_brush.c | 14 +- 28 files changed, 11628 insertions(+), 7694 deletions(-) create mode 100644 release/datafiles/brushicons/add.png create mode 100644 release/datafiles/brushicons/blur.png create mode 100644 release/datafiles/brushicons/clone.png create mode 100644 release/datafiles/brushicons/darken.png create mode 100644 release/datafiles/brushicons/lighten.png create mode 100644 release/datafiles/brushicons/mix.png create mode 100644 release/datafiles/brushicons/multiply.png create mode 100644 release/datafiles/brushicons/smear.png create mode 100644 release/datafiles/brushicons/soften.png create mode 100644 release/datafiles/brushicons/subtract.png create mode 100644 release/datafiles/brushicons/texdraw.png create mode 100644 release/datafiles/brushicons/vertexdraw.png create mode 100644 source/blender/editors/datafiles/add.png.c create mode 100644 source/blender/editors/datafiles/blur.png.c create mode 100644 source/blender/editors/datafiles/clone.png.c create mode 100644 source/blender/editors/datafiles/darken.png.c create mode 100644 source/blender/editors/datafiles/lighten.png.c create mode 100644 source/blender/editors/datafiles/mix.png.c create mode 100644 source/blender/editors/datafiles/multiply.png.c create mode 100644 source/blender/editors/datafiles/smear.png.c create mode 100644 source/blender/editors/datafiles/soften.png.c create mode 100644 source/blender/editors/datafiles/subtract.png.c create mode 100644 source/blender/editors/datafiles/texdraw.png.c create mode 100644 source/blender/editors/datafiles/vertexdraw.png.c diff --git a/release/datafiles/brushicons/add.png b/release/datafiles/brushicons/add.png new file mode 100644 index 0000000000000000000000000000000000000000..ad041bed130cc3d476b82bbe8295d60f978bf43a GIT binary patch literal 10948 zcmV;#Dm&GQP)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NT?1Q63rJ2U_QAOJ~3K~#9!?R{ymW!F{Sx7Ob0PH*g4t(Mek4UTQuDoa?B4P>Zb zQi;J8pbDx&k|G2r<PQ#D5(Yzl1OovwFcnD!J0S@fDiA785n@s)JH$9R2xG^V?6xG! zmgJuMb-(Ej=bXLQmmhoYbMAZHo`RD~s(fE}zxVFD@7#UXUV9DS`qpaTi+$X2`t-ST z_ucxu0QmkN_@Nks0IDjg-uudXUsZ4Wp&v{y(zpEe@1D)3b-iesrf!<1sr_(cvT^3< zsh7X!BjNPv(*WEfk3M2CS~P+*`{RH1r%vDh)%Tox<iwpX7wR2H;``qB+kR_%{?v1` zy?GSTZ~eBnhcFmAm;tarolSS&_O>5(H^V)38%cuPyywjque;4v3@U~wpZeHu-Msoq zlHM$;C?Et>s_6{x|FGSA>Pofvua`dk0p}b@51Nr80tkrK?9-q4_5b{9|N743<40b; zJ{S;$XEad|0!TgIIsf5b+`9O?;{3&{^GjRx19z{!>i#u3ao^Vn927#KDk!QDIB`xy zMHK2ijg*KessaN9qyh#407V?^3)(K%eKj6W?!NnORhiG{hxhK$M<4x~H+(Hg6%keE zT-vyIzx&<q|DE^c7ro^zf1RK}R8>^Q<Mq{zlarP8Q+K`mp8H?@Rj(QXaF0Cls6{gx z$@^aQb+35r+wZ#Xu{-a1c(QT2rM~R0!F%8P9)JE*yU%@QAtIyU<aK}M4K%R`^PutO z<xe(E^Y$P6aaa3u0L*yeuCKlspJ*E#S!bj)i`kR!{RPHgq&JwF0Xi5RvxrY!;NG;p zbM>jqpZpJ@nL6(Xc$yIcu^1O-oGq^Z$N%zU?d-ziuRd~Yb3hV=TRD0kKmr22^X%8Y z|3Ci4dT}EfKXbYH%+>nT(Lq&-oH+LeQH3Y~5eO725GQb=&Z&cXZ!je#?UV{=0ufap z3P6a`@TGdl@;Bf8J>R=BSxK9eK14-D)v1U$bwBrWKXc{EmD^wF`~Jq?j21z_m@X@T zs0dV408uBZPDGq@s_N7^@9wz!k9@~p{HEm#`Ppm+Flj0PS$aTl=G^0F&ONcdd8Zo= z)u{+nA%cP8J^wR);5Yx?KmDigc=nlR0Qk0P02o;}+?xfXtc=~}sy}`9u~$C!7bt^D z3?gE13a0=8!#qG4=Cl28{nkJ4ocmip^22iP!`~E*F{Yam08rUH{)$Jw@~tcDn-8AB z>Ejp;QB`n`suV$>GB!_r;Fou<e_B;l)m7ftivS@+2vHKMh+N%xkg~C}hmSmqXI|j3 z4V*rSqZ=4jVX=Sl`lY9?Uie5o+Y(9F(P-w02ok0gQWO>d@m19tM9@Uo+;(^OKKk^F zVfs|neE8_f?r7*Luj%lm6R2jM7C?nYQpf;Nz-D`wHHPRaG~3TU{m-vm{JplBii$u) zWIXcs+%Y<PdOWP0Pghiv6Zd~@(rKnoq9m)q+H3yk-@g39doF(J-DISQLI@RA5F#S# zl0Zdtb>fe14&~UnKbhVqJqrTq#VA@;eg;vYKsA|F5fuTUsw$$Mw4})p1q}k4s1N`F zP^h8=G#N$(BcK8$3=|R4Kqda4d&q5{J#ys8=H?Lqb-mc$-k!~7U&MtTc<{k*{^oBf zk}bj)Ri~=zoZH^s`RSkfJD=-9Kk$P;WYL)HVLttuHm0bqx^yvhzVhGyH~+?MF7&-` z{XQ^#q+OD<v66ODoTxabBI;Z=B*#wO``okV|Nc+?=m9elLLk%Tu`?r-vLfMlv@sa1 z4~OGwFdPh5Hjm$R^6rNoe*L$+?vMTHZ~6MKI&dMd*MhVd5fex?7~gUBEABe?y7i-{ z;ha;b0)l~K6VSH$6F>RWKluImHq~OZ?m?rGMw$)BNAG*p*FW&8Zy2thiF6g<1Wur4 zW@1E$jKO~5Cw?+tD8?8q&KK?F>+=g&7F*kkMIDBd6Q|BTcJj{0Tk~QN(g>tK&?bPv zVp})$tZAF?ddph?`0f4X*%udE+ijK*q#9JOeCUz&v#+j$A1Xm1VT2N9M!=}kovZtM zTV{q3jvqTN5I58N_GZD7m}n$NlhfnPhi&kRYr8|QG8w^XibIT$U>ZYv;rS0-zjQt{ zIiC31KlP`4-Na-;vJwfZ;fAk{wl><{#j^qXGu(F<CL^O$6(BAyzxd?!iyxa$ZvZ3- zk)~-pn0%-dWrXu%SB(@dMC{LS;VNUq*)y`Tf_neL)}^PmE<ZiryJl=v6bgg@!W*MN z1Ox?2qbMBVNdaMo=^QU!K^yirs~6(@{MMzX>%}%mRiQBJF@l$*&=3eg<U1r<g9-xa z#rAh^KKcApZu(otS8j|)&O247G<8ZdOZVXk(kLoIfJ!x51Gbg0CB$qozy9L0@4E2( zyG8WGk-`0UO*U4mK}B^0p-jh~o@Sy7GRui<n*Fw&h8O{97uP@e^gFL!_&taS?b?lI zcNXtFK0I?`w6^L89)LmwFt>8_enPU9PI03fPFBvWteuTvdj7*dw{`J@0EA4zZHTtB z8?S7K?Y+<hjt1(TK*X&axj)CN<x(-$!|^c@cj5VWUAyoBKqR}EqO)KO+?&U%H=0jh zsxMq?w)caaxbF=)hJogACfljB0V1Nw4&-<0ya*JM!Y!vN9wd??i6#HT;(f#jLGlqK zkfJ)06bPwI{s>9~l(4kz%w~x~h!HdskQC5p07(OBAjANOf!SP82qgj1Xaqqs17Q#X z5L$YJvW&8LLpBAH;?A;$FF(F`KifU-yYK#2zVeml?!W)&kt6-H%%?z7@SH#C_V)HO z&wS#eAN|NDKl#Zo&4N}}SHJn2zvcAlJI#_Rpg23}A|;gQN)AQRQruW_&Y}?bs`|Bm z`)_~$_n-X2l|$b2rZ>Ivl@FPb=sf>{-<A@@_lxM_`ol{~2}i%IvQSm0E9)oz!QcHm zpL+h8&$FQK{+_oYE##J^l=sEb$AQ(P<qU=sRds%>&N=6ubE?icud1#Zs&gyrC!BL9 zPCqypjsymTH~op1&8B;|U67BVEsN-rnx)kU4=kwPJg3#h(X-B1M@~NA{a`%VbZ#JC zQv{Nv<D63!=ZC5~o~)@;6^i1Qe&x45^UQz$rFZ<}=bk+*Fdt&XZ8ta>$7~e4KwAX# zgUQ<F8DEW0-TjEuYO;C8J2x1uq_<avCaFs20FsXpGX#*4(a^^D?ce^FRplT3!(V*i zg%_436qZg;URnrwK@fPS5O|ezuig(QtEW!i`+Dz(o5x@7yaGxE1V%VOkitADK!E~g zO!gX<KoG`gp$#Gw@XdeauMVog_m@D;w;=+EMk6e;iD2Y(9toHMBBOz-%4DS8>&DSL z*N)%2vVO<riPwlA!kLK|Q|nR>NtRdu6KYEBML{%?5RupdF*b|PE;`*ev$wzf$A9Hl z{>Az8ANSk4Ey3&CVRt_)THBw+q^`*aQj=3+RgKiSm%ZZDL#JL3j^+!eBEu1cplWho zih}$w?Uz`NL(+!;+~2v<)O-7TTQSCbBxz<!<)8a=-}>9X{a*ipr?)eZRL&0#ge8BR zRs&!-IaQ6;YutI^`f*kN!j=pw+<zL*;f`bQ9^Sz@q#(&iL8n8EP=JUnz>A;y@b=cH z+Im06sH!nX@=S=+AN^y0Jh|zt0Rm*uM2b!&eWnbCo0HX3qtP)}t%yk7vT5b%=b?(r z*Wo<wJ&lzyh83#{BA|8$k_b~Xd+FKt)b-BJ^%v^JPRdhBmgJ&*lK{Ugp%Sf7jd{zU zMhXO`ZtSZy=ukvSDai^*T)kl;a&rf&ICBcekH~O<l?fPTd)v=hyLjoj_nEbe{p-dk z6j4xe#-yU@{w0Zs^d;)ZLAZ#30+^&wL<F$pyGV_ut)-;{g2teLR|Pn$LBU7QUyIEy z+UMQke>iP72iKE9%GqPG21H8u6>1ujtrH;aoi|d*>>3DUoKjL;El6jR78|pLL+e05 zV%}$vY}*+SuUz<@dcJk@>PPptKb`j8dp*8URZh;H8G9!yBkwew5*3LM1!6umDiSFo zRPn+Tm8VZ4#sWIzjUfSH)9&khyJ@Bt14JlZEygf2YhHTx*JC@qaqXjRy+_6zd_mhb zUfD8;+}LYX<c?#*s*>ZIgYn2Y)ymUE1rZR5l7SXePed|_$Ff9e=ny2abX3~Kju6da zyJ_amxvKJYv-j!q|Hfi{<H`qPsAFvMMvEFD5(zb<2&QubWYL%?E?#TAm&wSlP26bU zj%`*>WjJuzuq%9uU(+t-P(B5pn%!H9IqSuZ&`cN8tFhf$O!sGdpJ|)DYZpFXY(u>V zF+hc6GL8U5NfUrni$)b|AVAx;BC@w1u6y-PUcBm@$av^fb#?62X~MZF5HS%km{5f2 z6NJXJi?P{{GP`;GsTk`RX4Ab(w5FL~rxaU7QYkr3R+?pq7M5anzz9TBp~a|Z3=mAC z0#)TiWHfY6RZg7y8c6nA=`aZtk}y?C$6vGUO|MB3Er2P6D4>@RR4Ntei6zu9#}1kU znw)!OpC?TDivZ$_J~O|&2+KLo??zAr=&g@Q_TETaoz4ZRC2KKQN+JYmIqOgX%q(Z6 z1-0w$oTLC$cqCX(CE*HUCY=`nErW>Jm}Z%z$SLbRzy#$fJ1>^BPm*S43zrkSyvG6< zMFc6|HGxu7nwAWa5oAuFlFK0blMf<=1El3RmpR%eL8AaPkjaXs9|~bK2w=tV1Ax&= zc$(uK<~`zVBE&C0zWn%7XRdwhUHQp)G8ha-qj6PL$f0+;Sk!gBm`<lLRXzTXE~u)i z*SzMDm%ri_XYV=de5p86p!u9hDqD!CD#_=cfBxeid-{VP{9w~GU*ZLQ-PgbAp@$x- ze8mnoUMl(=${f24AAoaCRGOyw&>#H4yWaKh|4<9^-aquvLvMWJ*RhLTOVI*LDgAPW ze=xH@nA(e|>hA9D&;9JrOsCT?Zb3(n9)05*-+1SpcO}edDVkn-(Q;zH^zUa~Q;JRj z=iSvSSN_>A|MHC+H@=_+eb;w=*Lb{A%;(_@zt80RBzjp&1?|(4to8uI@@C3ty!O(C zOF#2>f9&%vNC(4F2*J#Pg(YM^|1mQoX+~qDkz{%%rf-cFX=X7pL3}ZReC0Y!*CD}& z9)9$l|Kiuz);2!RagH(O4dQKz#LHU)fh}vb!6438t{SO2UyW4N`vFuc?*+~cDpfZe zuMbD7qshjxQ)ivxUGIJFU;XmWzT+3({#oe*k3aDQi$4Xsf&@!AedrwW(3h%CofmQH zhoa8;fvQtCQ0JT<IaduvYs2x{aJ)X=I4#v^SdAWj^ofme{J`(N|Mn8189Siv;5#O~ zA;%F1S4G(B`sv}y#(3rE+Qw<`hNG2D5rK0ea83bu=R`z(rM{}X_o70YAe!EN_t_u& z@t^2uEC;vD47W$B(CKX-!z|e%KU^7(HYaN**N@!m{9wFxOcf9(nv>{UGE1g3ArK-> zq(w1O#Qo@xzWqmj<cAL{HFII=b3Rg?ue@q?^RCU~_ivtfaP!2=R@U#*YE}FMOi?EU zP#_1S*|amk+|fXTSxMhjf8Ymy=#~Y2w)J#{!mMKK3WpoV&K|qt6~|6Kbo`E2uOGR$ z8f{j?6@wa7K_^gw3LM}B3aI6JjIp2*mM^-ty7nD!{woI-WJ`}2W3X5^aZ$%b9p;O$ zsAJPwXk$9;RW+%GtAo+zaJ1>F0Yp;XYt~gc<rck%37Ep+v=*aTh@rJ;(c-y#&%O4w zk1Z*6uRUx72~20nB7qd|FdRCsvN{3b*N&ZYZg~9ktB0dwqOLV{LI(<<%!ye}O_nq< z`QkPu4i*t(Xxk8)#5gj=H-6JMee7dTr>e7tXd&9XiSva`7jZU^^Cm79wy14U+q|*) z!e)y&o!e}|XoHABXq}lvOHfcjlY3CPgxVR5K?%^)R>crQE~h3dYZgNIp6`8YmeBq@ zguoXr*Jjw>ZG$Zt#4ei>sjAU%DC_sWW;|GFxay;?Kvx_{w@tL9*+523vVSJUAdF#p z^Fj#o7z2$^GbqiR>To!G?6Jq6eDe3SZLJL!BV&w_xx7OoV=?~8F%U+?=wk3qt05qm zn87Tosxjpqk`>kv4Q65n8fbtqMuymg&@Q<sqh+GiH+<taiilhI`>)(+rt>(jEtw?g z@~4tlsT-_r+*6H?kB@!jyj|bgA6?v%ww0zuj2KiYO-;~os)ZR#)iXjOltzo8nQedS z<L}wtda0h?%s@i<OMu4pjdfqQu>kgYhs>-v^PIN=gnFotrZKpt5p~kGXhRYM0GMUa zGckN5mHx<FUNeG>(VBWr3y~%y3=o3~OS<^jV~_iya{0g(+)9C*-2xExqtP*6ja4V8 zMy-h$F5ke`E>?!vSi^XT)5oC>!-1*6R5jfW1lH2p#cb=^rKj6=I^DejkQNE3Xj(6o z&dfw(j6N0g*n@frk4^HlTyG_vAE+OwIwu-TA!r)3EnsjCW(W~3rLPKR5Ji&c7}>Oo z+1|Cboww~mN?pLrGTvY?Re_0#&uMRpELdO!S{FuV$XJFVBY}cWq_2xKfxG)y)F4rL zoIWYeVKjnQspr=$Hq+fpv%RZLy}iBl5-oN~K9{VgC}{=}iugoElOm#oWLUmCN(u!; zs%oHGC8*7;16a@ov;m6-b%Wu6>+4!o7*vQrJ>L!O{`U3fx352Maj}?fcR;4*T5y-{ zGizQ#VH2v5><K~1%gHNCN|qN<$OFdyf+8@Yjby`1SNFVf*IiT%asHxkHr>72)HAbS z#sm^d!U?UoUqKR2sxkNkQ-Gitr9i$g<T7`O*{BAI>C6a(hzTlFaYPifEzrd4*RICc z4(7j!I9(s!82Sc19Gvi^0yXiLz>g&9Q>i^4`;0EJXe1Mi38QLEa9vie&NI*;h7d!u zM{D=@E+RII#Z)<Sv1xs%yn3giDQXjfdT<?D>=4W{{WC3|lH^k$YFJJwNWfxfMVuo& z(B=aP1%#mvbz5&;z3@Ason3z6y=F13_vnTnRC?m*;MjWQy^co-pOcJ;72}eXSycd- z`Fu8+fH&!&yd*FaODsGxGAlU663R$|A+#1}Z95CiEX0Mym~m!dFuG`MYfUf`-a$ls zrbcSgSjmW?bObFA0$GhE>vuvvC6g^EG>c8WYZf9~i51idlwm=J-J2i3cHwv1X7|R` zrvx+$9m`{9FNk1g8b5Qj9*^9K&8qTx>ex^Pg9<P$Lh5U)V&<2k>4dx~5<-`A=T!1C z7-5;=#8eKUfze_e!!))tiwlTKB5qTS230YM(OQuzSO^r!)b40hiK;HCVzQ=$Lc|v) zA`@sTl7Mv3q|_Nei;Kl|A0~A@s|M<I;vp9={`Z|5pIA&U?cIDX9gu{?CXR;)KqE9n zL<>!;(?xWmSGF2eIl57K)e}bsgMn6FyhjRuLHevh6cI_NYu?>Nzp)Gn(^^^(Fd1=! zw9Q^K-)a`yG0aj%K`AyYF;6sO1%!xMV=68}=u}t6E;vRri=cB%Xerc4k5ovI@(F;I zaw3vR5HQTA*Sw#$^$oDzy8a=yiyK!yyub5&42_YR{7$Ci<g%z0s5liUmBy%x#uU7= z)rjEcZmUj51LvI#D>oWCQT18L^LffLk$muyNh2+Wb_yWG1zI=X`%GK!E@qdT#ZAd! zO7T1fXpTWdkW7jQ#AqrCvmmBy=McecZWN4$&Z~?^eq~G%ag!tWm9jjRNed-T<5G4Q zNzQg(+}(bDF}+&PZ!j)81}!@vphWq?#EUFfWiiy*Xm>%FkO)MKs9VU1``(bz^}-X# z5PU}=WoMTPV3n;90WIgM`@J5m$y};F_)`I>U4bLRJj?~gOiWg$>P2#2sg~14uqj#1 zYzrhy)v@!EmrQIfbT^-?9pyN8h<_?g2(z4E9pNO4IM@ABG*zrps&`~|ycl|mU|j~x z!XSgCT}nL8&bTpGUXou#{~MO8Hx!n#YWZ=ZmkGf{{VPC><UHKE0F2or9^i49Wek>y z`+&Ykngf}x@GeCh*-Mo2Pp&Q}l3P-Mf@G*<0RSBgk_t>c+{w;Tm&KvjmsFKY-wHDQ zH2pHOy=Sg4=DJMwM=Uj(KGP*>Vp>92T5)hp+n4J*)?-E8d18{0WQJZLL}Vd!GD-r@ zUN{{RS_T|479e?P#!`;coIfS;reMIjMKHfBNf^4qQ&wO~XNuFI%*(f;1SL#Cs@t+K z<AGA&%e)m4DTh>((DRuf1ZLUxGY10c;Fws>uJX=hQ6Wc6>0Z(|>AXnZIF=nwHkdi_ zVzEUB$aY^Yn0@*2<;RyF|6kNwKi4HhR@c_n*Va~6RyQ^`jvhI>vAMaizCKx5U0E3q z2E$aNTB_t6C|ZON=JVO^-tOMs{?)5j_V@O8c6au6cel5<_xASw{}a$;GI`*^mz_Ct z=G4iP8ylOGm5KKr#BB|}^!U=D;>p1;I&$kReCQCuY&zT7-MM)2!ZV-v#Iw&l6TU>1 z?=P8vPM$pZ$fJ+G>QxU9hXb;YDn9>pb4Z6JT&l$BIRwwyN{)@?fTW7Nq|{BNKme+$ zFTVJ~e|_(J&!7Lenf+fC(CX^ysZ*z3{pyDwc;LZ==&&mcFI7?w$w+RiG$Mye$V=be z!lA$Q--BIql9*Yt%!JIf_?tIxzVE;N_WASYx3;$aj|k}G$&(K~^w7C;=T4qF6{96W z>Or9p_*`lu%LZx5(kwrJ!1&-cwEo+Y0Y2Z830-5N`vY>}!i5ih@Iy~N`Md2Og647H z*53BEx7AIHj?vZOj!PKi7bfR}cYEl`+q~=$ZR2yO(jn@?vY5Kl2Z*TZV7Rine#{RB z^V#e-f8*c(r{DPXKdgYh_pRU85l+|<+-@V4TP)9VY5JgCmY%#-l@1=l%))RTdqh)v zaB7t=JdJ`BbT|N<`f>qP@11%Pfy!vKwsz#W_d`*knOUgk`@i_JKm7;4|Nj3yYvnT? z>QHOR?P~WtWU+F~SNCM0U><rMb48~kotN@kPWIGS&JU7(QT5IbMO~7Mb6(Zu*#hcP zV|M<gszkg1&bh&8Z8%;{%%I_TedWmM!C;&+eif?V=l|KC3GMVZe(fFa{KcQVe*M}P zB_Q|2<4@#jd{2(#t)k%<VB+Q0Cwbdvp{{biQmxcgzM2e1t9~%?)yP-l;b^TIOsc`y z560DC;)fIO$G#f-YE%s;RW(d6bJfKAp;kj*4XfdbAB<HixXM@K!DvO*ch(|dGi@8! zR|l_o^&ffdYro?1rOP*NY<<BRbdc^Lhs7bcm5+3+*aTh460%lK$kND!{#O9H!Dw~k z%y{L9ItOtptH;+i&p1C6fx5wHye4i?xKZhpWgM%=?J^cnu3X+v6xvT_00e;qpdjI* zDJiQfYj1w@cSgp4@{V76?zv|_zks-OGWl6(LATYHY_g>PVo7Uqk$I^~n99JZ9o(z0 z)DP3_5^)33N~D5N)I&VPX~ugJ(w%RZMI8N!&6PaqSqnhli!22P5tzY@nImEmz<0d) z&C}`h*M9X^&!7MJ=M+%yuMXYiE#dDijc29zc&QH=rL5C|D+EMF<0D5;J~$Y!3*f8C z`q8tKwc`p0K-5vI(vUAur64AfkHD4Ys~*hlAzc(0c}d5aiupaPnV{ChUFiWeBE~ox zjlS*M{?f%u7ys42{FToZL%FYb?Q1)F_R^nQzUxUvC{!F`sa*(%;if_g7YI-dRwrwB z42G-Xyst*%mE*(VhKN_K)Om=5xYWE@YUYyFu1KdJX(5mUF=?l^0?LxACzg1j2*t3! zeQEFJMGI{q%0!T6wzjtZRbTzpt1D}t_{90!XpouR-lu04JOD&P6D)+RC&up1#i@9o z?@L7n1M$Vrj3!6MtH+!wpeyUAPTcvL@yb!ApSf|QPl16Na&vs{AV9iNDIE|88zee{ z15$YkOC^S+<!#2xMZpB!0)Pdx5JJ<oi$hG=XwhhoJ@(k+k3atNKmW6rFJC^OL61KA zC~oJ{jZDOwR2;6GMBrg0qcIp$&tMlrrNKd7%K!_}!EkLj+)y`CKNwDqtRFo)7;ZWp zs2hs<QqwD37?CBQS^6-kYyId#OzA3ksrFl1-=v%!_Kq``2LOh!ck|-T)=M!oeV|8n zGEa}!J@NYSWRiyJWDT0lb8;Mwi87SbG6XJa>+t0mmu>PAI4x;tl>kr?Upem_Kwphc zpV>IGdjG&r0C?GG+KE;!c^sEa_Hq)!Tk}H6=CLFEbX9~>0^kzmWXUk(-jZk`EOtYv zMG)FWz1TO4v|Rn`8vJ6R4jVw_SHAu$PaHq-@BZDdCa}dfZ8~BSB6p`@ZyFOns}7va zW3*d*n6St^`<5jFs5)n=5hBB(O^!@X;H2uR3L?gh4F@rI{G>@X#c0Uk#P=4)g<5A= zN;PWfnL}Q;<Iq^Nx?RL}3R(<JXzN5IOHqj?a#d-Cq=<^pESNp;zysg;oqz3}?|jG2 zn>XE&J6^s&v;A4vpT)gdoY&SyhG=bIu&y~Z_aCK-QI1PWZ7Ev-Ld8{s6<@75H}ci$ z%Emq8wX?=a6MSpKXro!}_NKBwM~ny&O+Xv^TV<E|<>^I-62U$L;<6;VDqmqU3oQ+I zh|PR&`@(eR@?y5LnC?t>uP)}>79$TvDqOmDVJC4s9zXHA*M0ayACl8A|AvE`C%Ba= zeK5VsRiDI7WXHCm`q5<dR5e%^5$8rnPd<F~j@LN9k`e-~M$S11Du<IBSX+TAR4^G~ zeFffS!KdLiJ+ruP_b!Bw<%ls?E5(W(SH?D)7aFkG-@5q1lRGzFq(zXSowX}mI79#d z3N=YYK~(jWv>r3TAzWZ74Hi+SjG4l4DB5A~I1i-^g-=?DJYD6>$~+LST0vA?1#yH+ ztYA<bb8#{X>J~bO3RFQt6kbz{I)+su%m6~C(g~}ts&~;4J8D?ZMsM1>srSJEU@_mW z>uGEkX>4GOt(h@*-F1cI+yyITEAp+9MyOL?YN+g5`Fg!!ul&jG<)or81K7`BN~S`q z!P;nY3{dBXgVDP86Ys~#<20sXnJ;&x>Aliqgq1OzLIjf$P8`8x1OU#7cdUHsn@%-D zEskuNeNR|mY?B9@?OoZr^s%PiBN5yA-p=K=-eWGLE<xeKu6>Y&gdxj4+9Co&L{i4v zWSC23)a>@r^|~*4oJ3P&cXla6?zrh*)cYSUSyq7=R2fY|KpI`pw5VHXO2i#T9s;Q5 zkuB^un6OZKHqF8!gjzt->czBa>$a%@hS1VtG?P*$#%*%UB|%HqWSLE`Df}(wvAh^8 zN?a%eC`8W8Z0cqMu!JS*{m}arQB@s^3<WOttV>6#SQ43ll*NLJ1v>+D?IxUq0K*E$ zj>_hmItK`b9-|>uMFlY|7SpRS>;s5xy?gV;y_=u07y!2IqFL;kg$!WleB<+jH(4!u zAO=Dz#9JYYNKe2i{EDuTKTEENOu#~o&9BcHFZ<Ckkd7shu92A&OWMjMM7QTcOUDUh z+p-CCmS!4J#neH;5JG6{*fs=XsN1G)+uC9SAcopvYZeb6y_xLPovec&nMy5PDIq^4 zLW^E(Da%WZG@Y`rCo>Ty>=NqkA4?XyH)A4X8qp_ah_UY}k^Z=%wLTYD5m%7xNW|7M zy{wKmw|B*+1i|3!lD5x@%|xKm40XrLLK7W>!7Oy)bfJLU27Hj)AUR8EwPcP(-|!81 z$l=R%bEZ%jb+Y8t`VI&yxnm!$q+iLTEkY<uBRbfJd7Vq_Y^@0r!!8!81<0li*0iJ% zQQMhoZou{dskAk}J8;cXey@jn?ux6;?9&|I_J0pluS$T!Lzs<ozEk@i#*yBZCTdsK z7FuSDPztdOeZmO97(<{nMpcMf@T4ooFDwZ&tDFi*vk)yfK_uH|ce?XJXm<gLalXI( z!hHWSnfSa5;S>xIsT8YY8+eF_b6B0Y)v<FfcOMSCsAd2uwe#nFOXO-v-RW5d0!idi zlB(KUrldqM`hrU?Bdt;#e#xj&%uumC8Sd!E$dqF$21H02MbU9;d)k=vB%gd?B_l1; zK+@**{904rAQ{7af9KQF-Ivnw>AU<Pm6I6UaG(IZSLZOS(nJbzUeknt93l(T%pK{> zY6?`+tGhuInS*A<758uE6M0V#w)I)x<<t`p4@F0k>4Z6;PHzxn9l{(?`WRwE#)O)r z*>NQpFtJER0>(I<U7hc}WL5)g>Yd#i&o=dr0A`_H+%StBE3!~I84a^K*1-g#8rxv| zvzW$d4l7+5YvqIjuR0oP<-6foOe}F(B3k0sO0o1FgMi0!)>qhYeOCes=p;oWdq0RW z@U`m>wiw&kE<`mFW(^T(F)=<_SY!%D3t$kEZ0qTz?du<Dn|%>9i@oXY3r(|M;)m44 zko7t9;slYfn%&T<d2KuUAtAHlk=tDLl~)J{-T_X;<p^2jV6TxJfCxUzR4i}O#oV1A zlQMIIC?={8l?nkf7uCDSJkbne6T(8EtPn#R+aMClj15(R5f<BKb|r>wn8g^TdoL|! z*F!UfAcT3e0H!HE*}!*9|GuhZWM5vRMZ`Sb3w0~|v*^8vz&kVAtj_b2DzAe|5*yg7 zR6fVEB2dZC_hUUW=+=$S>G+P)=UhD!C8as2uWohSOV+m(Ftp87MM&{B4$Xdy3k{xt z6Yta~|G#KwH!go@ckAOsW3+m<HJ@HFtC!HhV!aZfJ)4j&$||~Ci0wv;me*R>+@FO! zZChpF#c4WUSQ)vMu}iJvqoE#I^Mip3pdwYJPC92_2CI-T^WaihuL#TfM2<_YKKIB# zdJArSNg=668$$!t7@Wn17LrDo25stuw1?(qX!k;x8C#GRTOxLB&Ky%psV3#VPD}aG zQbSvQXF>5oT|{9Wx|m8fY4|ciWF1V4672gh2rl{3$~*50K|)Ye3kvm1T=`NW$pK|) z^eklb-07Af&#tgxUFaRHtrs_%W(T6)j~25#7mMo^7ce%9?fvcN+jb8?Xs5e3pPlbt zA|sZ=cM(fXK{?|}9RN}ga3F_}X^T_WogK)jQ`=HLH)c_41CS=#$#fC1+qt8X_)69w zuX!}Va3JHMbDC%Tc*`@OI>k*#%DOl(Z%W#-ZuD8EWy=yUQ`of0VKYW+VmlM4ks-|5 zFb`n?FofD-0MZ<*<v0>zlBU|>;7TNqOiFzm8B@(MS)O&%Av}~aJ1DvFB_lzk>sw0I zEvLUqpK(Ts)EFfO(q*yac7&2@^!)^V^4rzx4rZvG|LO=DJQ%I0R_X>NRWVx3l;qU1 zn+W#Z2qrGiBkHCrWfxXr|B@rg@>d5UyDp<D$!9Y4OQQfv%C0$8EWV(xbd+L&01)2= zw$e}T0@BdFv`rm~W*wYY>iEm!^t$aW0*b6-tPc^Zy7>;p5=(Iir3avIrpw@ybR8r_ zM>@9-)<oZjhit5RJgtB+r8S4Wr_XG;F7WNJisW~SFZb*^AUjyI*p{3;b)LMF6gy~5 zAl4NKc?+rRK<ZvVlCB0QW$0W!zn#y@du@^$9CCF#O8_R>e0LFzbwE{yz_8rwL+xw5 zCEk(rUkI@8D9F>g`ur_zi+T2bz3Ub2YEEfMX=HJ-p#`%l(nL3uv5O1X<ysx;)~Aof zTv_P{6|hH9txRC<JUKcWs0C3fr$xF9J<WxK^k;~9Y@{G3TYYF)lqR1=qSI0?*JMkV zyf1DN{frUzT~4WOJyST69V>^4vYe^OQmeTfq;;@+TP_cdD-)zUoGLeyh~|j7i|x~S zGL-*er1bk1@4_Xipc@%i+MPP=rnFzBJJ*yWWu++Fk&aq{^#qbqjUHPvbfrowoifsm z_Ab*Wt)%eTM#z#k;%$l|?9W4qugK-$<bA7rfy>YxxV+?!Uei%+SXeh@23_CJR$9ig zVMDPs<yWQHBj(y1`$9n1layBH*(IIU6EHzzAI>uSl#+^f1|Qb3JJ=c218@@#eP-WR zlLsbZiKs|g7c*FzRGhQm0^1i590pTpkx@p+Q{%fV6Hl`6@?nxfJuyhCr!1ed-j(Dj zjTDGavM4V|-SUMM*;ku$Coq>u0==a2J!eccH9y_T4DMj@CHqwza)||H2^}w5*BPcR zJ54v7CMzsC#}qfF|7D?g44OdM3#+6>nxlu};z6cS8yyatW$e*g=`y)KH?K*@G?9|y zcSAeNayy8hOSVT2m4mGds00UUCBi;f==4sy$xkW9DQd*!(6rD^y8vbBY?LnY&T#bB ms0)y?6I^~7mtcJMtNdSqgVF0aBZ+VT0000<MNUMnLSTYwVJ>_C literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/blur.png b/release/datafiles/brushicons/blur.png new file mode 100644 index 0000000000000000000000000000000000000000..6b8fc4b6053dcd37f523f09a7382e14a60cfb1a2 GIT binary patch literal 9327 zcmV-#B#_&QP)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NT?1Q63rJ2U_QAOJ~3K~#9!?R{CSZP``b7;~+C&biI2*Hq`SDVyqus~$G4&Seu4 zJF%;bOsrspi2@%%3Z0VB*~T_D5Gl4WkRLD~fd~*N;v*2G@W)q7lMrD8Mj=3TMt0dQ zRh6r`@Al{Hz2?lvoNMiU?!8rI2NMOU&U?DedFSl2_FS_abIkRCFZc1X8*aGirkhVc zPXO=#zz0hi2#5$pa?V}Ox$8dk!5{S(r62ggAL{#6DTAsORn=ntP<`uL?|<;22lw~( zWVKrMt5v`1`=KBDezjcneQ#>2Wwly;-}ioB*L8f?KmX4E{pjJ|Q6c5luiALoHH!;Z z&9^r<Qc5H#GV8kZ-0;d}U(C$ZNV~Gvn;|EXraJg1r>#r35`Y1QoM2{0$7R)*?Tti% z!DvX^mu@vPf7L8Q4SR>flh5`ChvnLf9SHzw>%uK$yr|1OT9%<#koyPa(a#?Z1=n2Y zc<s$^Arb^Mng~G>L}E&$kOIls)Qkm%B80*SKmdgSfRPFMC2dz~KW%Jm-gx7UB0M@e zI=Odu-F4Sn-g>{82}zNZl5gDa{Lb(EkN^G$@uDC2fgdy&K@p)aNy`4{x}5WmedvP# zWK}n=ANtjDwdz-;6jST_)oQi;@P|JFfNy@=cRc#}W0Lb(zT@W2Yc9;M+TK_!<|F~+ zoac*0TIQPosG1PVRoOc%vrH0d1u&?oS=zehHktxR$pl)|4v&VMvFHekKWXdItuz2g zM53ADsh$3bFD@^h@8&bQNYmD(n*lQbw4AtmIGCZReg28n=bu_$e`(fr<h3`wl_H=J zFi=Pc!9*lVN|GQsD^$#AFaSbR5~K)F;%%n*N<BFJ<%fRw-CLVmzDfRvLZL_!l1b9X zKK8RuKKbO?7kclHysv110cw6(qTZqqpd^Y2DJdl(Q%WK!=lp>Wyl?G7|LR}=8^G@# z062MoASoguk|d>+e0lCNL?q?>YrpoZk39S^fZVTE0Mu-`vc1DWjawV(!gd}ChJr3j zms8gzWRT2~Ow|mf6bfY+zWv+3Bc=2cKmKF<>eqftQ7gr7iU1&7baMV&PD##fq>EQ| z+gr1ZMK|km*QF#h1L=#G<V)*v+Bkoks=A)g6ojdf5Ly}RcvW@}hrRv&=y>S+qNNlq zYO1O*Gi|QU()QK20t$seNy5~ClvHSHrbUZdDSB{RuI%;8RoR%4Frr<=)YQy){jG0< z2?PfE7c=W}n$HM8$m8CILVy$!B)PH3uYB3!RX1$RyOgu|cJSI;?gvQF{2K)@fE)8P z3^u5_-x1It6oG|sT%e?EZ{|xE=2^A)J_7*6wD{@{k2SQ4q?wT*Pz)jfOp7a<8upKd zgJaER>Y5A+Lf90V`)U|XC<cf-Mu8PT2r(#(q?y9R@c-R|XFhxJ;>8OWE&^CCk9T%< z4i68%j0@d*+imZ9*SEO?W&P%+FCr<Wot-QH{%3ybg)a1gAN`;fH8Zze0u-q>Ak}C^ zQc99?m*4-sA35Vf?|#pFtLF`sAt_<}AQOctg&RrYOH7Y_?y+C|h5s<UkPO4n5B)F< zLm7rLXc@E&rIa$bT@6}F8H$!thG8g!f4%X>8-MDjf9B+cO8oUV`(qftdn)3#RkUa+ z!!Y!Hzgqp|M@Nx~mZI(92B>E0D~PM9D*fgODAatF!!QgV{pe3eOuqBZy9~BmmS=WW zSN6*=6cL)~s@Hx{bIXb}Mo5?;wx#~?n%BJM6Mytad1rt1$YaOP?DXc_4tAYfbH2N3 zJ8v!0_LeQwKnjzny6JhIqf`JGhHI|AhG06BoA(X}HBT?p%v3R-VcF~9QRxRuf+Un` z*P$q8W}|)G|G)!j<Kovq{V87)gjNbfpk}K<m%Sx2NvN)xs%dD9zlk)nbnfcE2aXqV zXO<I1T(3+G{a`{!a)%XeVSI-fz^qo{zKsx5V+IW<Ma&9J034W+5J8ubD3D}EF*91| zF@{Y4U=TDIXfScVu22AG1Pib1^{TcpCl@&<ND@;?V(L2pq^+xOH8T)xQ9`<OJ;m$? zJvb_Rhr`a^aBx&M=8}`gV0bEs$Tu(E!YW9Du{a_n0#+2uzLX)va&)X;ywb0F?Xu)t z-$!53rCSVyRj=(ECm;=qqg7EQ0Q$1Qq3D&}^5o92vp1{;Tg)UUg5-5KKL8paAlt%n zlAKry28|d32mw$i0)P<r6Dg(b&3x(nEE^O6p)gU8Cx(8ozG&Pf#oWn*v@jZj(gc92 z?(UcU!{ZF|3?5{}AHNlvzZV`O%m6_spAj?@6E_zz1;n7f?N#TE2CBhS2{Vt*3YeL~ zOktn`pu)7qYlE1%`l`WTstSX;uG7>%pe~~>UTc9ukRaCV?xn|<6=&Py=9_Q1<BmIS zy5*Kj7cY*_M&<{4@*Lk}XJ_Z(hadX$KmT8!{`9B6G7H+?-hS7+zU_t^UaqP(Cd}4y z)SATuV_Y8}GX5k&0g=1zzx>8;{P7=u@=I3^zT+M5xZ{q?s$+<WDrkMl^xUy6rT(zK zBriC|Wz~g>hzw=;kH7c}pZnbBUSvT(^uzB#jddrM(md1T&)RCRR%X<-U|h-x;fW-Y zDW`w?6F+`@e0+8Reeb>ZMrvR>rr(p`XQ%&6f;DU`g_;T1DCM{4Z>VWKOjY0XrZ+$E zz}r6ana@1??6W5qboV{?n0nkiv6iSY&@PDftiM=KynZS;gE0z6Qv+f-<Ez#5b$8zR zzyoi4^pQudT)EN~l*=$otS7c?7(84>005DNlDt~?`yY4AF`EQY0)#-Kh=t=X23i4V zgtlE)Rf>qIe%E(@&#arh|NW7Vrq_PmovPLkx*Bw~(u1WQ9hK*H`@O?qcYoMBEX$Q1 z9jg`_23z&I8g$j$Flb+tfNH2-te=rlk4E4-8Gad6U#I(MMax^?a{uFxKmPR7PxGDM z`Y#Oj^v<xmKOFbEe^^}Vz5^zp5wMgbC0sh+ZOv0o+*}BSn~Nmme3nEw>yn7%oRUyd zs#;y`V%=_I*{<y3g=`}Ed%yQ_-f;Ur4IrsSX@k|@{i~U$0Nj|%_C_{1I>hZoB6;Cl zPFXhRIVI_GtSMy?O2qVuT~54ND?@!r;$L%^2`l(uI+3+CbrDhoMYSIW7$`#G%Agb; zt%?xmx4T)FHs)zIlbq756OyifQOkI~L1_}Q>J+RNrZme4MP(Gk1{1Yvx}s)mMr}0d zhe8Ui07xPp^a1w6isaTJEf#s6xw)AWxv@wjyDr24Kot}iqhg9wo1lYoX1Qh^0Ac2+ z0Rg3_A|&8moKTvms?Z9>vy>vBin}WzxLb7ZaL9>QE%SUPTbm1^m>S3uTV*tO!7mV% z0v8cLqtLQ?dh9x802KZ%!k`3c^kj%)reahzh{C8GXl!?=s{sdx>Pg%ezQ``i6Hl+Y z#8<syBPVVxauT-^Aqyx#39AvZ7)cXm_Y*MxMyjtCku+OmQ;u+{X`+Zh0WlMS8TJng zj71~OCEdzp)t4uqQIOB>^+LYv>Ur1knhUdyMM@%FHl+{+AWPM7m24=EbI@uIYYJbS zfmDz%s+waPr4$+=EQX_H0a%I|XmztadnAiNRE@;JkpetkDFu&zag{SS7x~;~TFlbb z7rG>z&k`%3lRba+U5b13<WoYCBlA>%rfMkADE2s%y5UkQ9}3K~X)#j*W}-z+s4EcY z`<~?9{_u2`ocP#NDUloVBqG}zNs>6uZ3L+#6-tXNo&-(Jg%n9PbZK5R!i=7kdo~O+ z6ORrsh^a~xH|n`Npav8bnwBD1DL@<)0lF@cT+CAv$$-`fNHe-Ec^PD^1&Mi%sH!ZA ziWPdipzBje(`aG>qrrq;OHjmH38Vym2#eZFp@P+_P-N8`z+Cm&@iNyOtvM>_8t;l4 zT?{B|k?33Pc3~#9YSFk!BSfR>5CW=7VMW*k2EV#jMFdQc;jo<0pa!8TM<;I@AYwSv z2=bolgx&+8?%|F&2Kw+i?%|?1HAY?nHIfjR8I%wcFVkEvn^G|H9xtZZGBh<cIA&v> ziFuGSgQ*cP^_Xt;A8Ali5Kv5_YXvOo9!J*0mQ%g-c<J%CTDgw7cb7LeHfOWhVzJS6 z9U}GakB^tj<?+G6LGiA~-|B+8u6y0<?tJy_x4-I@uS&Ug9F35$GcN%>-7~Yl{_DT~ ztH1n<KlzhCS*=!I;RSuuKY7RH%a^;{H5ibSrq7AWu~qm0ycM-ttv>aqfBM_M{a^n^ z3(7fPzI^%ZZ~rE1xoblvCnf!~!e1{=*Gqd+M0R&~KlXD!dvI{@<t^yarAu#r``cgs z@~?8tXp&7&UNlYmCtsg;O`e?sDW|8NeDc?R^;b_9sb??f`@jGDH#W9Lym!6AA1em7 z4Vy|SN*&Mnr&Yahx|vKVJ^awazw#@;^y1C&fAA0Aq(u!@thB1R#)MYidv5EIBz}ny zTkAfy>}f3Xz5I=UaP`$!zwH~p@elv!ANDV(^69?&-eBIwJOgWpuvSGjK^jIhVS<;R ze$+ZDE~EP9H~pjBb&o#!$n!4f_4nPk{=t*KW~c1XPX8EKX$A8+f?SvwMHQ{#rmw!~ z)wkdN$xnRZ%ms<5MhsUCgrfb$^MEuuKB*%ZQg<1xEn5MP`Vp$CT8frey!;g(`N&V6 zy`bm`O?yM@5C8ah)%fK2ukoQ3(W&yKH#uAr+SN*YEg=5ghd*+bgxV!v;GqHOwBKV% zHd$1llBNz%Gs>sh?a+!ssg~m66Oj-6=m$@4+4HPt0++R~{(Gs?P`~nc1+5*J3CID$ z5zHx&R&V6o_PKxgUEjT?)OX!=_uA`VeQ(2HL(yTd;+vrA>1XIg)P!a>X_HqhL)I7$ zp56u|Q^AX<QoNYCbn(*e?(XA{KOO;N;*+f(%z%SK9fCN(oG_oKEZp9N8HNJDdnuYS zg(9Ze#Ka&5dNQmjoDn05uNiJwUrXCd5fK%<^IN{<FaPo{yz894?sa#n*>cdKx1*Kz z{&i*jV8ei7X2w#?jQwCmt@VvPZd7&vreII(lmx6cfxJ)n4EOm^v)8}=zCZZ=-v^NQ zkA`8e&pxqK#m;U&=p=g8xFJMN(q+Ev>X{H5i=30qXSvIk61of#0uUpU5hgGd6=fiO z<hl>77^J8|Of`wj=kt5-ef=jt`3dQJ?FTKzN-3qe6g6`LwQ3e-MYX67#Z<MZ6?Z8G zqhE@byU_(NZff(V{79H<Q8l%1e&;($rsI6elh3XWj>^$eRmbQV)swN^+M-JatOh$; zmct`m_IkY1Veld!LKFo_HP_nctd3q|L~l>*SlwB*tIl7QHZFZl(P^>~1yTTe^c4|e z!(fX}S`8_}M2c|Mkw8uYFbOC4-CDeBPn^sPCq052Z+vAscg?F&m9*lzMo0}u=GV_c zAyNu$P-9W;2km=1Ug_~lNvsA-f}xn>(D3G<MUT&FLx-)&%i7D1TA3iSV+J;Ydj7AT zPiXX8;Y(zAM}?DS3PD&;1uzUMf}yAgOHpwo1vQasSh`b=d~;QO7oboPLaEGkXVsyM zfDue5X|yjZT976B=X4s=0NNm`WoOSj{3ar1pm5QN2$PTwy?VQ~p(Ya#KrvJG25ojS z8movL$<UCYQG;VZ32AA)0fkib*z?UnMCMD1*eo+;7J-?NNZtUZu<Eu%FSwQa7Aj(v zwy(Y|P=(kkhh9TaMmnmK1RzrM>|3L~HC)CgRgn|b&}AkW8}O5a4QF~ue`$8<!(h}< zGmiPHi_RO-4vjjX>{jZipo7U7RO9|(s9=}V)*^uOaVZuw1LMgoGdfvj*<0<gyg-*6 z4gvxg4j9TIC=0={T0x*`21@P4Ec;T_4vxeOU6!1Lf|LZo!dP2J)vI`Oc5QM`=JE)L z8tNgtl3x6srlFDn&80+D%}Gir2P+&Ns|az00Cx6<Str+Cnq7TWm$PgvJcuwts}mt$ zq0AnARC7>h%z-yHD34KE=vel&>LQ4O<`*pm%YKL!8(L<8K`j;SdtD7`hMW-H4+JN} zNh;CksRXUGed#s?v>y}{vgYiJg#qR$aY_&gM?snh`$3nzm12WJH5A0-{c>f8OWi#v zPw(_Q`@=BU;ju2}N!5~I>=3pR9Uzb=itosqz!AErovTAqLd+Ce>kATn@zl|CR65#9 zDooTAB2<>5J=qO93`Ux&8CleXMI@OwRvhGpfXtPN==~L8q{A>JCw8Y+sBUsaARtyN zr+`w;Mj%=OX(vPRhJvEQs+WV~k|<9;vl8K@^IaCX_Tp?dlP)u7sEgh#hYFc1aN~9v z-9u~O!X{Ch24&eZlmerg5mevaP&sFwNLZnPR9&es70{B%)<znV6;&;;lq^~)qGlQ1 zNMQX2AVN$yA_Zv%g#xM+=wO6lC}uD#Vl**=#-QXxTU0Al>^2~#R^)i40(<hA6^Z9| zdr7jGrJOkL(qf({l500p=`M#6T|J_Nb<zCl1}nx=G`d7uWzz^53W&NryVs6%UrmJq z)qyJ3AA!W-ks7g>r!3r9<gE=OnOhq(asi9BVk9-Ht<!8~Ls5SYjQ&u|xGE}7UsH6t zL~035swtzR?;yPQP=>)wpvzJepyUx6Z{29EU_EQ|tA1`@nxBsrmbf!Pr4Cr-r_nn@ z##Y%wqOm&mm<?n<=s>}sM@Qy_E<{7qIZ+k94}TptGiH-C^K8HyZqDXvQL1)3syR2r z-=#wTH@9>f<xrzKyg;a*rrz%ec03iMM^J?-DpQd3${Nu(u+}XAEIKbC!tou^PBx>} zE?fO)r<c)S2607zHCY>!jY;B+Q;abMFx9|d&9w<*lhmq@58uTqj))T0D#vJ~TJ8AO z{t|^D0M}K-)wNElM5(UcajlE1j0qyRqTY;*V!_{R;qNU<>FCRNJQ~XoPaonMO0AIz zrZvD>CH)00uZ5Y~9FDTs7!18oFAX6y8M%PnjX4b9P0|UF!C0DFZN~*&HN@-5fVM?g ze5#p2(P}HyB&oULN{m&YjsaEU^afO*deL4(?eC$rvg=rgxX{BU41{X<e!pO46eu-X zt+8_<s=zhlUcyUwUKJZR(wd_3v3Sw6a;(nmrH0u{kCz@VJ^oJgTVLoB<o3C9SDibz zwY7cz!ud-VFP*<|;rvxsZEkIEZEehEbH_ok2AI_n$S@4U(b3`V-tOMs{!>pqxxcr6 zW%tV7?(WXc&febM-#r0sZf@Rs+t<9}6|cDdy6euLzp%NrnR7l9^qux+aSFX#`=QYt zPw}CLVK_WEys~@c@yEaL@Iwzh^6<mMSE%#-6%){P*Ijq#U3Y!$*S>Z>pP7wW#fx7z zQaVg<srZ$x(vCu%m^4eL4c(aKtfWwb`Bc|qkA3!cKmPFtAN(s-{eLQ;?d|RBufP5^ zuX*jQx8CN6j!g%F#!()7o~ulhW@NFB$k?>^{{mfZOawJ)eM^(n$Q2NI?z!jw;P-#; z!3Q6F=9y>yRs?k2b=O_KeEFuEZo2OJ>q}85q^=9aUZ}%670`&4^ThLO&If1E`p+Z- zyx5aba{5Fcz{fuOnLqyICqMOPpX&SmD<hx}edt5WRo{BwBknlu*?dWI=1F?;^vN?` zc7nF?0;+U^x-d1vW_{DiN|Ib2FMs!UKmPHL|F^%XfZqL{_cp?bHG<n2QaR;$rZky# zxlEostxD@gc#79Dj%b`<a=f^T5tHs=aC9W~egEsf{+}Lv@WKDP`KO>Wtj$7<rONd0 zS*^*nC#Onx0<pKL3$wL}#C5MWy@Z|ib`!cz+r|3pnP0sF|GL-RdH?+n+;GFozwm|6 zpFZp1MfhZ<YA@1$czzpO?+S2a!A#zH#<Q(KWr03%@+(e%U;l*G%p0lIHf8b~$x=$= z4gnww%I$aDe)((f*xlX#&ENRXk3915m#RVc-23{GEmCO<y3Wx#O?Ma@-t~tQlR|6U z1x(&D4rSH0#2R^OoZy&jjZOU3m}LZH-xxzqWvGTUQZS~MQ=4_&U3cC6kKgjv#~%Ca zm%{T(_ug~w)Htf$Oh`i$`t3=dwC=msdP`?$;Dj~NCb3Su?2LBsnrDiRoD;Mi7^|JV zDS;3Z4wOwkzfrG9+<o`mZ+zp|KlRj8Pe1+i3u@3k_nzg1?d+U*{gtD;oq(LvfZqOH zE3p|cTb~}s`q&yP6gpwl2)Uki*S00cZfuoQ8@*olgLaB*s71T3yYtSw?znvU(~my- ze7-5&ea}5MZb18c>bKF#CN{M;E@aP_nb&sZy5Q}MOlp$dOiB>3mL5*xen`w(tRG#z zov=`x^53J)sh&G`)!+YyZ`j^C_s~NRp5bP{`+L6kZ2JioJOC8MYS3W_wp2V%5KO|H zWAa+a*^F66fvMI}GJ`f4mxwbQh<d!!nBIuANz0K3)!3Ph;p)w$Y0%@zKr=csa((=D z;=jjF0!jY-&;Q&LPdssg;C0uTo33W6fn}=Na^(abD`rJ)P%F-QtBRp&F}PS8#Xck8 zUsa*gLl8Iyq_M?sn2xD7Y@X6E=*9uA9lV$ltq3mgd}TAHu6;d4n407p?tA0L=B6L2 z6Jh@FD2n5v=9D2fo?)=#r8a!I6j+POQwlRFQa4A~B|1@n!o^%>S?VD>oOLl#LUNX4 z&=Y_NbE?Xs%%YV<rzRBffgmFws4a)uskhqkAR8ZLT@2CAvT+A$q-<$HskAf&Ozi95 z`1RLbbM0^a)^9r4!f*X&-|6ohiaopA?;R9XGsAMQ!=qC4RK3MUWFbfCM^%(0)H!FK z-_DzJXPsNlvY1H{7$D@llaw0a8eNvEFw*6b>?|qhbP_X^C&7|2K7=K!ofQ*(%yu0- zh{?!l`64a<PI+hNxnKU}UwZDj=hDTOy?Xyp_Ya5t!?Jf+j+WXN8;bUW4O+)~81qNI zlcD*ww**cGJk63Y2}PI_NI0p`&9m=q)!S-NH`0E<(8ticx|6CtD=0vQHql!9f9t8Y zHHP0Q>6{UYPp0N4*y|H^l5K2k-1mkz{Mn~I#T#Dz&8HI8Qx{z?uULuD91r@a16Xxe zW|><XDG8eea8jGjI?0*huk6z1!d){&WHA#zO@?I7k|rbZX+o|Ou4j}}y*XJR^9-b} z2E}z;fK#_ENvs5g0qc0ycm~W#eXS`>CGyl(rZb(Wty#7jSPpD!L%J-jmFw>pVNu24 zw{FHFEAu#&1VW@_Z6X)hgPu8cqLra0>ww9b;EToaRBNuf`mkwrV->(dqi&h0L6T&} z)Paqs2Gq7^lT|!bpRB0SdgU*KL>u0cKovvp{5hl=g^F4!PAqUA&!gj*M9xW88>!3U zQFt+vt`oA5Od>hg%8E!$g;;0%PUB9-RWEdg!$Xw+`eKz5vS9M*=SAje?>Jel&_ z8W}X2myLHY0XcLsdcZh-VVt9%Fc_-UPloIn>9j(HG%L`42s0FApCIC_WP_Q|OxR4M zRk-9D2F3M-pP5=Wn(dmtu?<<qMOBa|!zkmiBB4r+Lhlp;uvM3|iM&R3h}IpbY*kes z%BBC?=n1Sw45OmRh~}(%^>d7pU@=ScnRr4s%UsM;xGHislX^fDQ*wnu?eo`VHJ|@H z&g%3N)<AQBW&&odbri?xn2}@Cl8CxlZGL7#LuvTY)Y{lwSR{wRkflPS31scc7K9xo zkRT<7@QZ43P5@*O(MBE-s@9~EH0N@~Zi=vB1&9-lMi%f{f8tapwpKzsMVgk(n(0`u zOee}>Xy^PHoc6|P3F<@zBiBkdj#;W{WsF$O;-X${d}%0s#5m$l92Dh8m=!xZ4oP&G z$1CZQfb23aZ09bg35yczQy6Dv(sm|()hZPaJ)?<vCJpLI++FKvc4gFY64We&6oMRe zn08`J%hrzsvdXBd)o$HCC!|f{L-05R1(V@)u<PlBMezWE%8RYG!LeX(_v?f_8e3sw zobZNDBXQ%B&5%;Ay4al4Bzje9S7?iAuthA=2qz{5q-Akx0aT`#Y|Oydx<Gvb#*Y** zC-IF08b5cTQJPo1u7(jp+ua{3`&pjb8|GO^riAUyw7rp1iVAd=DH4^wACgi(-g(bH zogQmzxru|bqi6DsDJ7$hS4?LiYrt=guQ`kGJ=R7U+OYstv23D}7Bo@7AY-28RM2o! zlrUyB(*eiJ(w88l1+NV!5*~I*Rc$^K069xan0J061ydG3As~#7<}5}|sEa;;WFAe% zgLa_i`?UsZW+(5_rid7{QpYjoR6LO#G3bQB%W8B^i|9MvS=Gi7nwg}sriP)nN>zh< zW!Fxvlq<5bap41OI9!(HpaexqKj{8p@nARaWNSmZL?g1uVlG{7C-qp(qb!i@bqsgR zmTeSqhEC@y>kU+zr8Qr|s*z(H1jh4iLN0z}i@&xQoVe@fqeMo;)-*Lg+O{Z$Qg_V| z2dI!Og^EbjW@L$Cews&QK}SoyvOjoG+gPLv+qugE+AJp^kts4{;rgu6w9-BsBO#D= z>?pK2<|f7o$DU)VR0)_-7h4;nJ5e-_rAe{cSFglGpZ-GFksk`^npgw08a-J8>*R_x z)Q};>N@px6m6yBhxqn!4RuVa>njS7=-lxkl>*({@S=i+$00Y1iHYJ(dS35eV@f|td z*k~K9!$Eaflj$XmaiQwItAT`<3RSMv4h*g`T40PYW$o0|_W5;a$qDU|p-v*2F{YCg zRMVod*5%Un4~IByTR6*1;`W8DMcUf%RFjLjTs)U&Gx55&>m)UJy>cWR=*y^aijCxo zAeP%$3yfV(v;#h44u(~<;e6Q+)U<IfyIN`$oHp1V)=ore^Dzz5Vmm%YYkJf;)v5ph z1K>$SK~&U6bQI$`mzB@Tnw-@XRkg+(!BA{Ds8l7`&%<m;UO#p@<x~k0754S>+VX@e zUnjn;nnVy=Co?|Us46YrP>i}swU~DySu}XrjJezx!L6P+631}Y&WDe&w3y1E21~sT zM~zpkQ+K*nQ~TIb*o|u8QUUn54G)eBc3U{AXaPfmvc%B@^BFhhDT#Q9$r@)sHN|yp z(3S_rrbJrSw#LSDS*umnHp4j0i#p-i8a(y%&`Q&7NHT*Dtu&5@?!-zMM<#iO9iw-V zlf|{iu*iCLkcaV!lQ3vxU!?Q73DU%}n$l=2CZ(_pW+}vyTbW=nX<n;7j)_gn;%r28 z!<R=LG0G^)P6e#kQ0)288XHeYs`Dyz!vE;=#{#mQOH>aCqz{pd)2ZesbG2E#rl0Ok z8lvu-sOEDn2EYoBy|e=XJ3KBs6H-JTcW*qoD>OfFpoXGp0|l!qnI5Otw)YgpV-47= zj+TwL9RZ;M@@<$dP=QJ^Z%0cSjLHefGQxN6tlEe`j3~C5+3F#~OS0)f^>sGJorvYx z+9X!hr53V6u^PtKBxMa+BdAu(T02E5TWeR@*mS4}mbKumfh=k3Tg0hiYPNRHq8Id5 zQ+K-SshOMAsEMje1{1dFOWN4dZ+$gJ^tC$7H+}#$+Zfl|%o<xb^L1(@Y}IHd(nLFy zam~=yn*C#PHXfC!bsm(>dAY-9En7pInh%r;0&qN(G)m`4mKw|)C~zI>Qq+NUwzI=R zMy!~5EkQ6fV<VVrn4B;SCOM0jnr?mJ$Eq<Ir<EG(`Jh-w3^Dcr+AK{&zpbViwL0;Q zot`Q)W*ypa?K<yUql-<XGOZ15)R(4Qe*U2Op=yzf8rpWW)U73ex&5~@b-Xw59cZ1D z8CexIFlm(Vp=A}`J(E6#=C0PVe6#7{<m0G3V}usX;9|+B1GQFvwtC<|J%cV>OFO$S zj5vy<aQ>)wROJ(8*BZB`-Zp@2t?1P0VFhX<qGbV!v6hgn0jzZ-Ee4Uu6L1qwe7A9~ zrd1ImQ86%5UqIvlZY*K^+CXrH3Z%*?&~YDp=cK%<!m~DBSaWvPKJ92{V<-un$_VC| ztG0$u`26|woWSbKRLA2I)+A*k9u!^j@i^9LXR1bq(SJ2=k5%oQ<WP3PF}3Q{Z#a&9 znv7xk2&ToDq03weu~Arc(%O$i8Iu;DiX1hw<)ay+m#!z*$MD+NPhm}5YDwLeJ5BRO zZ1Du)O51oOvDPc0jmbjOJGPUb;=fr4HL_`HTJxlqpiFGTYKy12pXQC~epLKw`ZAlq d_#;0F{|64>q+JI&Ilce@002ovPDHLkV1lfa8Fl~w literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/clone.png b/release/datafiles/brushicons/clone.png new file mode 100644 index 0000000000000000000000000000000000000000..89677961d819a1a28c1def8752939e96463488a8 GIT binary patch literal 10774 zcmV+xD(TgUP)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NT?1Q63rJ2U_QAOJ~3K~#9!?R{C$W!F{ST5Iop#yk9z{#Lha%d%twYTIhbGB(5s zp=?Z*iIYIeR0SSVKp0+ZW(*j32rdZWh0#?hli032h2$YrB`ID~1dLyT!6}F>TZ1)N zYW4I_cRJJFYvp0@ea^Xmw`3VaDyi~O_uu!P|K4-<*?a9ZeCu0F0AKBK_r;6%-S>vu z&m#bQ=x2Z4Ig0>9ghX0vqqR2X!$1FX;X@z%(H|2L03jqKB0{!pRX0s%?fUq?f9ij} zc=al^ZPT@F*LI!lY}Y;e^b^m&_`=E2bp!^L{Kyagh%rVzbmfXLGcyZ3_uSJ2(lyO& z?|{;>UZ2f&_P_NXe5<ydML<L(;&Qf!AdAzRP6%0E^V&CbZ7a;$Ig1DYgpAF4X}cz! z>@}^Om#XbLr5HrCb(R2;1d*DiGR5BBq#&g_+bK~Z0s@+y6C?rv;Pq<x`nxVz>y!wH zfB=Y~pmxq7f`|~&J+HafT1Uiy8UO?UKm%IstRoTtB_fC@;s6vn1_1zMbj0+EmP_@o z^1OKMYhO!*RaKo|yGI^*<X!LnHW492BvMNGh5N%l{KHTG>8Ik_eeg#G1ObT%2^Fd3 z*)7Z91j;=B-QWEv08kqjuCv|EYcE`V;klc)j#tYCGoGFt|MD+?1OWWniLi*s)fb-4 zX9wkcH_vis+q*AbBBb|x`?r(rI%}=9-Sul<p3HWi{`_YbN7p-{#sL6yZCls1w$2eU z5!H3KUfsI*hOcj$>Vl@}&b(_o)+`X0MVQmFWTm^#UO2eRx-N{subp#_kcFs7v)19x zq_EbC0I0AofT*2gAw&^Goad=?3;>AMp$G~%L_*DM0TdAdfQTbP=L8WE7?Bv6S>V+= zaQx=Se*7oOqV$X8|3kme6d|G_^;^I78`rO2zw?ED>ZgCku>%2M@s~vaBt#%21VB<q zM2Mu6B1EMWDfOi%ANzM7|M%ky>CI*XAP}DsM+YD*&rTaL<TfUofKuQ(LS)qJ;Gg}| ze{}hgcYN}bpLpW&#{ochZQDPjARr<kB4S;wPZvv2CeaNj4PfijTl4)()%uLm(z&YG zJ!tCsd%ov;l~TX-i@%`W^3Yp^nOWG29g7G!+ub@jOC~$eR*pH(i{;sAF~5sR1E|g7 zm_=Q@c!^oOp83{yy-Pc1!7n8M5`Z8fpPb%0df}P<yYE>oPA0Rx7msgJnrgzclcW86 z?!S2P5+d5JLnJ05BFC()Wx}w0Bmh7Rve{HREm_Z;EOb&T2X|k%+ZeO6e@IBS>%1ll zij$C-H9ISSNFajDNF*RKo6SzTdUJMzTs<j^>7*2ZuCt^F0Z9=8Da8&+A)!Jd*48>g zKp{XtAhtq8S|=u(?96wFE?Mgkfrt>1nUq3iQba6BM1qJyij;QFF(R@c0udvUa}E*b zvzdr6Ga`tf2oNEXh$A8pCj=xSLW+P9P&;-M1;=YaKk@z`A^;@6@qiEz5l}>kkO2?{ z5I_mOdVB3}XVdn_?(Xi+&Mp8nO?`TLy4h^LiVHpP#y7tI{ofrVGydbZJ`pLUPEXH% z{a^p9m%Gr<{@l;A<Dd`2?k9v`KmDQn#YkzRKlC#{eFuB<6F>P=&N|1A*$Fd?2mpu( zhzR?C0E9)r>qq8qeEZw(xpe7spZoll8nM>;?|S_k<N*5-2{>4uF50GUHmhXkuxl%B z8$<5be(l#k^r2yBWUY1Kk8{?=!@sgOZXVq{TVB0>6S8@-d(m}`&SsS4h^p(_U-{Kx z%7~rg(Gg4-vvc<O=bqRsk2fdRcXp<>t4^;ytCe!~T5Q`n*L9t>_E&%P*TRL|a4<9X zFQ0z;309@fa%N{m6Wg8r!}WTpb<)(8*2Xd0u4}vY10Vb#01%5GhLip$^Xc)iHrcJK z&vs2i+HB5_KxdTXSvG0gD$R<{I{zrn+JpTA1XK?_^bmjmgY=qPV6k3OGM&ul$fC3n z=@w^8L}FCRB%O12A08?-co^UIp7&^B7B75W_cIZKV^<hzYnJwGvl3;payloI5K>*$ zsbZ~-V<#XY0*GzfY7y`Hun2kW=0KFQtJ7PHTQ5>J-P@UVPPkp2p4>>w>EYqUEKQji z0YLx=z*=wE84(45$T1)a2qLT0c2$y>NjVi=>ePV7gV|k^B11&4ut-qQJ8uABNkEtx zfSG~WOEGuV8jzB5r`@c;wQh5|ljm8Y-AGLQrt<F`vlhod$P54uk(j-5)0@p|zIRBV z^J0=Fi4ztlDB=|?2?2={Ao1H?h(VYgv)@obBu{QU1J+)B`mx<I)ry22I~Mk1aNY=p zKYn=3njI5?fG`7qAQ7{aI~S9@xa-12tu-?P5uvaEF*70x3ljk#G7tg-g3==57!cT- z3T6hxy}iArt&=42Vj?2WIU)tZNQA;fB0@mIKnTbvT7*FW5e1M%5CBAosK`qI@3jdL zA%X}q5-|f2GXOD)qVN&XER0Cu63h}T2l$6TWJF~40}%od3jUJ_pai`o!dh4Whwt~7 zh)T-4^a}k~0KMKr0YSg3(Ca=e!T^YX%pA=rM>7{(O%Xq05*9%O3SVLo1tFM#uN{9a zJKG;`c*Fe<KKS5$_us#_yE~i}foMg^JDh}sbb5OF_~T#vtH1ior=EK1)fv!aGI{^| zzx(3FOUyi|T@V0_{x^n~gIymE8eS100fIK>KmGpif95lPCa+jH@O|%l--8cc=3top zAhy1Z(TN`h(fjr1hvWl}VOVjXL`2rwkA3XlJonslFFzoC{{vswG;N%ZJ3I*X!42TK z(ZCR9^aCM|FM-*AxNYm@YPmW+diT4(1%!5X_doj4kJfd4=K(p}#X$@~&1f_zTLU`3 zc+9e_S}P#UigZGVo3ooqmS@v_2B?p(swAg;#%+b!+_o#W&1${;g<t$7t@Q8x-p8JN z@`>{v)>|KaG-`0!Iv@nJATXSXXW6+Izx?Evzx23}G@G?H#&s5Kiv(nHQ_R3w*R^f4 zF=>IWtyjlJD=S(l)vnKW_b;&Um4_dG&wIZ8$tRvTJ3AYu;D>(bhhIwE3H<aBl7OI( znGkWgUUp1G2q3^hz|Haqbe>I0a1If5k}Zy|O?MC4YR%5(<ph(7wH;~0w&_+U_y3)@ z_$a_b7KurEr%yfn$RpwDBk~diNnjAH_>+ZiUVpx>Yanv%dUfLk*KUBjO<iS035;H1 z@}lIfC6i9}E}DEUWH!rVv8`?Eu3GLMTuhS`MvLLtz589?cJ=DjTeohhD_0&4QD;~X zzuAHx+&jo1z#^xox2&K_XId$+t>{EdX0oDPFFTfEwkMRBe5Q12in&ViuBk=XIonk0 zw47QiNmlId@B49Ze^U_<c=MazLWJs}hpr5Ji(&jKP8bM^2sB-{uA1f1b$0IR3(wWH z)mdRo)@+u}cExPpxvt%;K%8Ue<Kw2O>eVrW7=(I#Hk-{3_7D20M~LPtit4?uzfUte z@TT9#`htRjjDq1y0^Y}<v!m;qy2>WAuC=McG*KW<giVs2-nfcD`DE&xTU<Zd-P;G9 zi0QOSvYi74RATSC>mm?1=c4{V>4Qvffe}$e#|80nEFuU9fC9n6L<B#z+*nAnDS%{? z%-JT(3#CkI%<1t-KADzfzFsXsE88~KTCO*kl|@nJW~K-M4GRMc3L$}D*dK)Bh!#;q zvttP$5-@vxClGvFfN%yuxUS9=BCzDM{rSN?z^-XFO}*AhQG;nIW9`zk+}%4Y@<J)) zm8CE{30fTx5ClE4fI>h_&g(h^KtV#$P6UBLkb}x&@q_Sl=wApT!hGjoadsl;maEgO zYe^YI(dh&bQ^S)i+n>+<jYWW+1Aik#3Ob!U-hx7i4v+vG3i*Mc^VkDwU={>H?=kwz zF#rOhFasiBIHQ$vT~n=>cinxDC?!a3wO*eb-ShhU6H|hB{QTGjnZkM_it`w-03wJ( zB!@zXemxujqC+G^KxFbW<ktuhm}Qt97)~I7BuP3c%js;d=~~To*V(=O3;D$?XmSv7 zy?GUINCYA@;7|~K76=jo;C+H<mI0AK`)NQFA9Emte?$a?0K>iv5P~viXD3-X)k(U4 zFb@mt;~xM(6ahpbA^>4V1SdoQB8-GifDk|!5CsL1oR1fTgxKGUwTJ+)mlr=B7^O#m z34%xLpJ8Wbe?H&qoo&Bc1reBu$iEap$BZ7y0wC~XB}PDCAP^zHo&*TU42X<Eeh-0W zc5ycd5i$!A3A2An$KIO=bKvcn-!mNdqz6s<2t|Yu0g3$X5D@_)KP@D{6uf=}W<ctl zQ1LOWmN>ZxVcYwAkAe?|I8Q-L{KCW;0%nLe@ll0Hm}~)Ip>S&i5Fa~xJp_p0_s?K2 z0kru2*`tmKUT1}M+m2@Z+uk#C&iSa2C_s836f_*50HPpJxToK;fD)Zz5DC^J2tXK6 z@DtI`W>~WR>Eqb@i5;KmT_<J$Z)%2DUYz_Juj0HVVvjcpiZB8NfXbW9uM~59?fBa9 zH;-J0=)~wEFOnq5vfLQsPg>j6b<;HUdcAhe{jCqk7<1*y!(aam-*E5i?o~SCfr3E6 zm-Hc^k5onEOJDlZW1s)rpa1!vw=u!<stxEn{^9#BU%qU#ksddW!PqD!i=JPM@Bu(6 zg@kR}e)cc^;t&4dKmUyeq_w_$`SN?;`yJA28i78G*oXAv2!A`W-wy2&iD<D{{MK*& z#(KT}>ISs8xA)%nzW36l*LWWm&S^u~Mi;h!zT}v^cM71ix^eybCqMCt<KyF3G@uWB z-~)MHvhY?Qc5VV=06&WAM+@fdYl!e^8wm+;jZ*5d#~%CSCqDj_ljDEy?|%zB77!<{ zkD6oHC^1G89~ogkc?^u<tq(1|ZSW?^uXGSS5fE_BR;!bTA9>`-r@quQ&C3nw?QegF z2(u4M<@^Do0R@8-F`F?sA!Dqh2ekl1#5%iLo?U<O1?xHhxP19d7cSiW<daXnq<&#$ zh^9Y2DGc}VZvOVEb1y~2S)T-HnyN~&qOCS8tkS}v23wOd%-l5%*j5+QZ+_=HA9&z_ z-}#;2zT<$%=ag6^LfWH0;7{B(aUt<5%)F}VTg&QrRV}J!)j%h>T%JNQ(bI#jYn#*S zpmWCpNl8foN)u7r)R!*Z^O2AI%AE%kkpAu5(78NO1l!pSC%Nm|qg%Jm&K9=oxU1Kv z$3`nOMKak3W7u_sWXhQ_hLRkdQ(D>1Z5E4WvvTYJ;a~ppNA4g)kG}2EJ3>`khj^G7 zdhN7XEuMeo@w(n<B>;e=v`OmqnNo;4K>z}%)(dS6ceQIawmJiqpfadvGM%Pr28cxT zjc<SZpGL|^zhrU;VeZk8KE#P3w+OUNb#!#Yq<LCSUB_*;YO5uPZJUiYX?=FnRcF_q zdnzxd2*3iA<fsd_EppSg*4jS1A=An92mZwmZq3jmkGxgxIG*6@4QRcO{H^UyH+53X zl46pig))f(Cu~(xWLaLV7PH;EtZflEFUw}VVAp1OsgjJ8G35?dr}Ld%W0K&QgY50@ zEf$NbSFeU$c4xpA!ACC)@h1WcfVivAKO;I3=ZeV=3!}I+N!q3*CpydW5>dLQs`f6t zwrLxal|;rdv2@MimUS+l?ka6UPQ<(91mF2x-}U*=f6ix}X-g0GfRIEz0)qw@fx4+p zVzM+VCsXK_s~gWsyIP&zPy__FSuN}J+6hdivy+=Iq~$c59jbgHD4VleloV;2yS7!@ zgmkL-Ocq;ffBYwYa)9)<Y*z1U;|MSh$dbJ9{Br_Cz_+enwVj*q-^Hd#vT0jy+NMg1 zSvlWdElyD-v%SOR$t|NzwOJ9c(Z&aWCdsDLX>YQ96hesFnAK`^_38^W+TI+5J1C@> zVT*~jwrjG?<kKBp?7Zgn4@~AeC#MTV)UHp#Hq+e;O=ksYx_g*S<}FJ;Kd{cFd0DqD z1CS{k)9&uxNRNaW^4Yw9@}1v_i0aCfD+t)fqY^LyA7vqUgM|PBn`-44yUt>ou>gV; zMcLMyVlq#PY1eHG%F&H$q?E7)2KE_G$0%Uih5=GT^VtrJoSOcx&qdDWGj-+4!~JML zJgy}nI~)BnziemgP1m%W#Sw~o>Wh!%<rGK};ri^zu`@~O9H)7n=0(#sX<pdQw)NU} zbz&5<W!oMeUJ7YB+}c2Wj^MSgeVqp3sO~U^k}+!YCYwAl$knUk`ToUxwxf{mzyE$p zOD)auwdX|{$HIba?PR{&HI*@G+ca7!PV&T<<>HJ0E*##i6frX)0fB%Jk_aG!kSJzG za?Yu@JoFHRKr${?ByYvo6+yt+ZnLRY%QNok)#7ZqH~|sT>16jVL|z^rO=dGixLKVE zJGLFFz~V!MBuRJYlf)!L$a|+GM#y&s=Vn05g@Z4{%zm@8he7f@>o$v~TJ7xZC~;sn zi=%7Dx2~nem^5|Ht=H?F-96VfDDLL-&n|9!x!J6cWtt^gnXqMG(EPorhOmcNn03Gu z1ppZYIqZ625f9e_qo6pJb!GGUVVak#^$L?BpC1%JTI12pYkRvp%9yTczWnSnyL<ae z)9&6blG&L}5|g6OwnpqlJRxhuu4EC4LZhRhz&_xQa5h5p#}Gi6(?lbou-hyb#w3fQ z8|7@TY31PJ>#NOLQD!E|!R#Q*3II3HvNSOehl1>Bp1}!ce+I*!fZ`D`v*sYajO^iZ zgaGaUU=K<Gb9Z#}#l(<F%DuzaAQ5+M+ia37KRG!z#$dZ~meaD#G$cvU<2W7$3Mw|> zAQ5^w=TG>AI|v8{4>{c06SssTjKU&_q|51!*cK3)w$ny0PHx$@+1=B7vuRarxU*$B zolPe`XoNuOI48U)AhbOWih9VW`*k$q{R(-35|4l(0E+;iBBh8nu0v*2o4SJO&OWe! z(#v&K7I~59T5AxA*cqTWkM(*j=l3`Ya)?yIh&=@AaY10#5RqRPi?`>d^lOGfN~ts} z5UuSzK~cakir8*a7Dbj4QNT=LkPb$#+&nWPQs;c+Faop!Ob8%|G~VQX79&MfI10Nk zgGjwzoE%-V)yf#n0M6CR8_yW9MVdsF6@ALBK*|$Tw)c8WOrCebn6(ICFT6o(qo;%b z1u#Dh&~-&>9H@Fzu{&)yi`|2}cXsz=%pdYv6-Yn``qvOn1?<(6P`nXf^tu{EfB;bs z(IAGs-ov&%$mkbxXXl`)H?3np=$h`Xi}y|EJ6?Toj~)vW34p&%P`l`5g~NU$2-q|P zMdzVOPty?!R2~0~(c*>Y2CqdK08r^0H*X=5&Zg7d3zON5uqUMVP;*%E9wP7y$=i@= zaMoc+G6!-@Ah8OBuf$C+!`lD?gNRb34O!<l%ac4YgybK^Z^-^Jq8N&VEGhRg1O4q8 z*e6Z<gsOLZ*ryiy#GT)R0~F&S^YExd>aN2})^VPup6lf4O@I{QeP$x^X$oSNVG-G9 zIT(RF1dWJHj6y*#2S9)WP90J}K_mJcLrltmM6?|d%W`ra!uI)^z^?N!x9993c`3)h zgc2e2_wWf6<Or$@3lor+Uy8;(EE0$Lm+_K$0SI2_fQa<!ehXITC{xTZWVpGPo`8o0 z+Ziwt4-x>fP@fa`tgc=VMTYcB9LN~k;E@d)jT<<cDIP2o2%vv(L0|!4@J>f>zWZ1d z0#8i(hZ%Mm`~BRfr!ej*=0I&_X6zMwcnpkB1tIYT{{9e#!svrg7-D0H(HDpa^^f8o z((kgkWIVVmF*bodO*RM<#%BQOw?)XEK?s8V?D&*>*i(a2XW&@Qf+TT+M$z$Frxz7J zAAO2_P)pl$8NS=U5dR{`!)UeuBfYLyR)B(Wp2SD4gXoNO8pOfDd5d$~XkZ(fl;GjT zRrJG<KKmAyaWo|9LuT?*=AT>QE*tAyh{}3MI&W$77_sy|R+IsWV$J<Rh0Qa<o1qt@ zu!aN!BPPfrGmpSU>4m!2eq*L%G}4R%mK+4!yM_XS!2X<!;7}L<gmXC5*N(3pUpu~b z{J)=XeYr~@PNvh@bXt~^`ObWAcW=J4GoQ_ha#EIglB5`!Oe4T7VrBx?+N#<tmW$<b zb>qhM)pB*VI9o0jr>CdO<?{c(2`Y->fj55LJ@?#m;qY)i-zmyMYdtD2Id^ru{U+zA zv?F@&fLQg1wRW@KoGs3-UVY*5FMjcf#~-(^Qs(<ro1nwP!-pSv<V|mSOPVIq6H8vn zbtSN#N4QjYi;+x*0pgA9z0pj?`NEht#Rvfq5k2?Zv;X6d{^$!|cx>c1|6iG)$z*cj z!i6`#`7IAT@J7;#kVJS(K;#Z^CEihJ5YMHMM{jTA(BJ-ZyK2q{NBv9<Tmhn!lao*V z$sd2=3tu=oI{I6gpu@w%%a<?Tci(-77cPXtC6Vn(k(c+HaIBEFq4_Pecbxvejn;oh zGQd|liGk0BM2Z0Lxo4mG%xC`Wv!DHJ*LAPX1bz6!A8y)iAabAc)8&=<lUo9Vc>Bpa zeC!-;<7GtY9Ccy54g1|UR8}(cYPCE$J^SB(^_QRi^r!!ZRXw_@8yPd*Us7If(>!CE z%=WyDPTnp`+new<UdvFTagNFHl|&4L>#kXyoh%k7KB#`+-iu#%|M%)N`;$NZ)Z>po zE`P0=(t!?juC(M%*OGG@O9H29#Hc{L{c|E)8A$=@b6yzZxZxA%V?>4ssC#TNKykt% zN+~48EP}}FT-RB)UDMdEwOvO#5j5Ow*mk6hN(waTd*Anu|M~vjV~;)d-~Q`=`D*o) zmT_}}mzZODnVluKy&IpDJD%;6xgMMl7I7@j+0Ej(tu|>nMP)p|;JOAy+NMhK9DtA% zAZhK_RYF>XNSHyTq%#l!+XxU_E3T8SYDn9xm=)QB4?cML^5w;1`5%A(KRofo<F8nP z0$3^IhrI2n<#q=r6gBuN0u+FV4r2W6&@y546`ylKbk4P1SGS#I5K@XroTX%<RPIQT z(n={$%CgNSo$e}=11SIz*9n5yR&2}8>TC*>#Euq#$Y@ewC&mE^kVYgXUAL`CGXyA$ z{QJNE2Uz6eAOE*cKJmm?=2X4y(YK8?vcL$%f-OeD9dy#R?%K*N-9Z99<|x%>wKzLD zKDx1~Hm=>A9bE_45&;6Y)q=RK7PmI1H(k9E*ErjmY=X)t0!0F1g{`Yr+*+UQ<gPJ_ zNGV}<Z4J(f0Fd(hG7)Gt3+dYF&R&wFJ?M-GZ++`qzv-L4`NoYKw{G2fxe0po(YM`6 z3Co>*;_Xik>Q;sij17ADeSqGisn#bqo<BLd)@;s%ZIWg_nL~)|oMo8IcAcP3%W}4h zO6#;RX^tr3oKh5sej-YzD$SKiby}FLWYo+o&bqD=*8)3n768~etrJtsOjhJsmY8Jx zVC>i!^YFuuJb3x?Q%^p5dmoxGL2rHZQGqdZBrl<Jwtm%<J>?bn<08^oyQ!;9wP{(D zNlcO=Dgo)*PU)nWOzYLz@rz&HEKal{V-g~8ZQZpMA{m_^2-~_^ovx0rZ_bXCB5}^P z4GP<O)ospzEh-~GNJ^Q6l3XRZ(q?^j)T|fax^gm2(_FSVeF3AKPG^7jo$s8K(=UGU z3wKbnKlnpG46iVBh<V%FSg_kR-*;FES_g%By<Tss4I>JJHi^<YB*+m^#5t=F(nKHK zc#)Ku&h|j5#268`Jh`zvIWEfC{)LOacAJy}0nbiuyN0`tnUyv`3Q?ib)^=T6#~d6e zg$mJVy}P@gWoe+0^xV(E*$n^u_HX~@wQJYT5xgFGrNKy?ow%hu@hi^Ps4BN78`-u! zIl6vy<At_ul~zV!yIG0ry3OL``qi_W*SKAG)lzJ`SuH@=^C3c(M<C71a<*HPB@wx< z6W3L%HHhdW6H-W;l+h*ul?W(y&bBqXj)Z|5;MP@3=o$b>vTRaLBD)60EKS+AukU#K zH|0g)o9YY<xR)~RxWy10RExl<1mgVm>fIe+=DKYiP&U~~(-M(7cFLs2Bub$$&vtf` zyeOwTCZ81LRHrGDN{m^Yo;cefs?b48Kxxe))^U<%EDk`FQd%WM+6QQWfCR3soAn8i z)NRX*IxPehpq|Zl(j*;aE?_&G87X!m0C4Z??tR_s?tSX1Cp{-!UAgk`9mt9!T5u># z>_LCQ$i<bAQ^t6zPn?Q~bEii)UVQ#(+g9GwRa$9csg}+1c(Y#TlNsp@OyU3$q**Ud zj&9aft+biWc1=D>iitA0PBJo?2$4xmRv>AUl_tqWK-l?Ag>{{{)@O?Ha*8U=@)A`d zjHJ|THl0jneZ^NlMvPTp5ECdE(<2852XA`Qn;v`YvAV83yK8GV$(D{8Y9}!^K<IT1 z%0NEAQPqryY&NT=ZL@MmWhJ0avI0mmrMj4_v?N7c(-49}a@I1tyquKf#AxmFUrJ%M zJgL@8UjiT?K*-J!g6~wq!U$rmYdh=hc2iYtvq_Uo>C_5zU2SbOn@s1^`9Nvdw$|s^ z>v5V;MDjd;`#aw8zdrj}{J!t|zHQ6iyL($21&6>QPGgu99~1Q}fB;~fU9OhaI;~Ar zZEWZAVv5FC?$~jfB#M*(7)1!&bq$eXc5T}bsXQx40o%@))Y`7DDrT6>W@%OkK+`lz zCrWDsakdp<M6I-DcJ*f6)oVg<&MIw^B%My@lgWfg-2tidfi9fG1#qmkNs&0wu?NsV z-i&h*%Nc!cKlmWPo)9Gn!t7nK$ZPS03TCdWs;(*k*KW>~HnUlo7`l1$d0SUTX*HQc zni0^dsg{dVaju+9vOH5n&T-q;Mr%Skx^Yb#Go9~)(x~*N+6cQeF9oP;TciHGj5`1T z35Q8UK~zX7Lxj#**Vc$QnM`b6)SG3yS`@k2+rP^s35+^}oQnj9U}szn>e)X&1t~y^ z)I$$Fw3SXAr}SVT{*U7;+y+HNBupm=0Ca7$JUd~wfSOEBI%zxGG*&0M$tFoL1v0)t zm)2%)Z*MxCDk8_ij#sD0O|=39rH}|2ux=UxVcWL#hC|fu#1|10S=%;k>qL;qSzA|| zMC-%5FV5z>r1XgSJt&{?){-%4;2g#iU+GZ(*&C*i9`=0~MjFSLk^=yHVx7clzQFVG zQPx1<?Ygd8cU@=l3`r#>v31i{>!xmWnk88-NIJ>7&KaZHrnSw+wsn?fK)UNXZ4#wS zs#z;KJ$f<8iZm^p?W(RJr3u72QAwKR6P@Iq@?50Z&TQ%<IFX@S0U+MV(ZfOK49X;^ zTu=T2L?+M!%>|=-94eBf$B@Nq<AJXSJ()myzGd)*L<G}vHz`Gd>*_T-r;?n3bUsC$ znq-}1nMyK6NTj-^Iy+kC<;;|`bUMHF;#FXo?#ygccLG2pAmwaVL>w>xq=W>PS&UK6 zw$RmiQ6zbyh<xHif@?EUiSm`)n9+$Ii1E`zfL?;YH<1gS2SVoq*b2XT0Sr{KURJ~8 zgdf7zb?s(tC3F}|l1y1)vDntGYrv$nm2SPr^FpU2l$X0@k?3Z#W-Ax(y<h9Z7(+zP zSz+hehEdYIv{sDKick@OfKsHCCQ`o0mPJt97`ThZC2WCVrEmYwC+d5mAjVUO!cK$7 z<iosS-y1G+x*5gi{Ci3)pl9cfK*Xr9kOkPex@`~@5Q*(9H<+Ypo)A!)B+fZuhwP9L z*a1l0bRrW>N<y-Lw(ZVVD@7{Law2GjoOMDj&r+k5R*Hf)?dh*$-Frvb7)<&d@v9*` z=xLNA_K^<i+|zM}yKqp)v6&PghV~j;fM7h+L(L*YXbd^qiDi@)KyRwX!NjCFDFev1 ztwklBwH`m#+90@QwW_O4F`1G!3c=P@!(Cn$(;`od@nwXgC+)LOxBKzZ7s2#&(a?t@ z1c~AAR`zPx2BQrp0!nFMuXZt_UW@<|sLHW`9Hpni$^e}Po?K6g8TOrX&N?KelSC6G zsR5+{d|xrli%G#5ie0Ui%A_jIMO2dOB%iSBTw51Kxp#QC)_O3#VPT^Mjz;;s=>{6` zN(_pE2qI%DcAgAm&R}W+70|Z>=%?HZk#oA&YJ&khZ`z|x7y`Rdm&U%-Fa#c`v^H7k zcthx2>W$JS$x8%OO1ipfnN3zGotVi12#B*tB8ZxBTFkW8N~sW72C8=`lJI6`%!}&1 z91NSBeU(Q~JAy!34CRtufd-%#(Z@)=JH+DY%Q9~DsX3}${{h(o$Ht_oe$4Sqylo%Z zV6c@0f{k+?n?Wti-DYuuN~<(CNp8}VkZjx5n`P5fSzgX&vpma;R*2LKNgw%OEKL}- zaPv3v6By3Ni5Uk>kx(3Y)?q4eG`F{BigB<*0-%FCz{ohVj$t;(-}C+W##UY!1ka^U zK>#30Or~*ldPCTzSxIT3(}I*1fY!EBt=V?2YYf7{?p`sOYm*Kl6MCCOW7ON+_$Ew< zFL1-2+=fvThH$Z$Bm`jJ*+h{0*$i=0<i5W|IvoLY%q(v!cZos#;NA2q=*i202nRi( zUbdhEajt8eF$T$?vqqV=S=V)y8m$DBF_VK!+N4^WSSQ<~Ks|oR5^{n)OyTqM<CXG7 z3b7p!#8?3X=Qak3zVO2Pz9@*1XN<_;i$i*p2K%Zf1VGf$(~C|5h;O8cL%q#NPGBg4 z>DRm;dhdm3W2U<o%w(@?8)54@TUn=dHs70dU9FWa%ZV{bY?Ljr1&rsw28w@tPVo%H zzO7KaS1f=Sj|xG&Tm?VQTOHqqNBZK<A<_<opEyF<p)ZpFUy(3|ocnEsk>`se*J5Y{ zGpeK*<wjwk;QF=dD!W-Z0i9;r<koTPcrux%(QNlxcW8nV+qd-lt8ZG^H(!Yc0b>Nv zrwRmM;P{S0f*?3BZg|4LIMPcPLo4iibcI3aExK*&L^Xbkfo~eRz{Mt)eOW+!$e!@( zud7v(n0n2wYmiV}m!_E)9E{DA0&BR3LSyqD7`l9J(dY-}wC`|(gh4T4Z>(YuB%f0p z60{uDSL_3Zh~B}$;NkTQ9NA70YUn@L2dmM+8Hmrpbrt3zzY`ak$5yddt%#In<=$cD z+ba0}%p)D|1u!-(m)LU(N3~%i8Sd@9gc2uVK@1JyxA@7iCo4pX3Sghxj!{)8SjOmE z%Sd(i5NWI@(;U0=0*;;*M{(b1^I(sRjV1>1HiQ>L*@sd}ff_LzqEir+*ytYTXJj;$ zFf=#|i#DE)UIJxk&=#J~D`~HVdr$&IeDx1TH^6uMMPLvbg=dH`Dsv0{LSrclhcX@L z#iZBD%zbghh-BVN5N>JoaqYlZc*8ju)?(m;4;5q4BFIoXCOy%As7MOL_dZt;3r9km zh6t)l54Z+*5e61}sQx_H$T8qSLuatwZpsk7@%gS$y%NRI1IX<wznwG)u0W_x8!32+ zdZ^cB@iReSeZ|FAF{E(RK>e!q-c0cDIJO|ffL2AuJqCMC+l+re^fg(%nfHcF_w{8% zSx5|)`{E;iYFj%*%{20_$0VU`7VOr9^^W;S?uKHc-rEY>%eP(|IanN-k0V9dBM(Ex zE{=LO0}LQwD7|F=zcm;~rs7+X#@Pw64e>CGL5!n@8CR0<NJjb+prP1hJQLeIrM?X~ zpZm->Jr(MkhCyIoIf3IE&G;$dSiU1esY}qkBm8&-o{sANypl(bac79z`ZE2k>KOov z)lnSF4rNqmGp?|KZS8RGt&FR1#=TN*&(n_!0{h~ssAXle1xH0|K?_DOz4xrQOIv-V z5l34*s&0`U=m{qod;Jsow8qLP7+0x@Xo(6BhdQq)9iuoHafro6e$ZCw58lR79M8*k zkPIVdr?>OCWypFLC+?=848re1cX#Yd>IPlt-}>eCUH^jp;vrlL7Ar(?p?fP+IEg)G zriZ)63gxgaGUP+T{o~?}{giXe!P`6hotv+*CK~I!QRW}V?4nqtE8}E~_tdv^koRLK z3RZ~6eV{=DOe7)430t3u?vGbYqwp9b(A`%$hFUmZRCn$PnPpU@xuuoQ8T)f=`SDlA z--`3w(+{_)j={F~Npt_9{#t;;mxABXQyV1&3w?3&km<qO`i}ROf7I3`?lk8A1GUEI Uhi+7!>;M1&07*qoM6N<$f>_(6`~Uy| literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/darken.png b/release/datafiles/brushicons/darken.png new file mode 100644 index 0000000000000000000000000000000000000000..ee312c7a04fa611cd202661342809abe3405a881 GIT binary patch literal 9653 zcmV;mB}&?fP)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NT?1Q63rJ2U_QAOJ~3K~#9!?R;sht>;zV^Q`yX!<l>s+t+qxPf@TTfE$NE(w2&( zRH0EJszC&mL=08`gfb^&Vh9zb{9))oRf0kVR1m1(PeD~npoLaIAQ4j>+X;yYj_vr~ zd&WI}?|S;<9lmd$bK)c=R7J|ZN9Ufi&)(mDzxA$n4bOVk0zTcxt+(BF`|Wp}eVzc` z@WwZ#)DbW<n#CALF~-s8&2Rdi{G#wJ|NL9m>s3mfyC-+|ba<?TBR%<)r^zd#KX`O> z6j!Sy1OOJyXuthFuGWYafMnF`zTuz!$Pd3gUfrMn$s@C)c_Qt~rEO2!(FjBUNe)kM ze)C(x_3k;#b&>?>c(yiM#1JJD{Q1vK7xyG7>|DN!00aS$uRHJ3Vrz=$Ki8glMS>_q z$Xy}{5rkmNm7dx^7{}F(7j76s5W>#IJ4pc|1P~5FAdgSdBOjf22{&CF@#Z_ej0iAL zgc(2*L|_P{kp_!VE-@j|jPNX713b$`WPpE4+ZEbRTU*=De)hA?IG@i?@7;a(-S=fL ze}yC?X%<4r8~5wK_G`cMJHK77^uPmO-F0hE$=%)4a_I+0x_;n_&)>TEipT%rzXOP? z)d~QOX7=I7_~FOgKr#TUr1S%C|G~Gt^)39;FaNqnKDr<|ieY!_qBJ5Wzy!cem+{j3 z;$%7v%Xm8gcX`rcHQSyhVAQ!rqx3~DltC^<hnqWKf-B+b!R+Fm-*n-I7u-Hl3M;yR zD0hLN1B3+V`r&*wU)^@|r5MLj-n+|p01`j}lmGz9_0h*yAANFp%jNNCMBaS+%V`E0 zQTNRV1|rZxumFqE;U+QblMy08ngNM`K$GJ$_2BTAZ~eA!-`U<#R#Ac=jYhLzB!h(? z|M4Gv;)y5DztDGn*LNpR5a7y}B|sx#Gy<eCSiYVaEreiZk6(@d=11Q+yilCYX7w~7 zi>W<8JaLsD`?wt)TjwEp02~m2Xx+Up`GE&s8Gr6)-}&%E4*`hl)e3-1%ax91or^nL z;lggbc3=-b%5}$J1_Xl93?SeDI#1)kwC-N>ny(8XyzQ-T;qzYj>f}l(-xLABNFYX= zjKd^OfhiE{mjUb?G3fr!<4u<=n3-7^#kgE_pg;;V31)D(=$_WAbYknR$;sAu;+P1N zU~zAUH(%tHo4C8hZf$O6X30GY2@>2yi3aZg1G6rQj*}VZi$u<Mw&InWr_Z@{I-P`3 zuytp318DAH=h7W;W`(7^NWrsOWOE@1F0DGhcCh;M$L1e>a=Gq&duoIL<p*!R^A!M@ z)t?{@*@%G<U?3pUK*4ARfg~+tfs(en9WP&;ME8_c4*+2Dg#6;HtWJ@XM1nvP%mBz! zRyG%o=iSM|qvTnWL4zEGoW^`hfGDF0uxuC&N`Mh2IP!-$WWxV<51#w%rAwDCUc3Zg zxm@h;@6TqlPvb&&-F^214}3LQ3{%+>T2|f=!v6ljkNm5D`E(b0<M+JDlPl|BIsN(I zlU5!fU(7-r#W#HScb#*gZ~u<(gz~?<OC)LK@Pif%w2-eDf*EPo4&vjFf8-Z_{wFug zNY`~LW?0RPh;>D-MY7e(9FVYHYyU`(ehjI5&TC%x!$1GdH*8!8>a`#*hIE2SeDW$E zds4^8SeKi2K+%-si<Q6q2Y=|TZz;ixRoCb4?sB>0lKb(@A9>Ut`mkR=^0gEU(G(5Q z0Jt%w)U8+D5B<;&mkXtolBfA%{rFS!zkFhGb$_u~c1I`a$!qCjPo{P9XdcapcKhnw z4Jn2Mrqz1&`fvFb0CE3#_3)#MtNUwJe-tD4w&N&FfN``?%m9S`TG-ja*2Fyl(oHws zM3B#W;j7o3B#_MKo-i}SkxfQn6t)HyG62>&%<%l@;u%-Cw^LMXJekDhDrE~&l!y>g zO6=UbwQo<;c+>$q06G_7<A`V8ikmKRGGb9aa<y7TNTQ1MDT+?O33kbk=i0_%IzrMm zIJ&T7H(lh-mpB<wpeMk9u7eO=iFq9&OfFhkARxJOHd8mAZ%?teJ-y||(M=aPnUF9~ z6jk&XUCcp&Ku{1Uhy+}s0gySdTzl8eF6{X3)|Oe6n-g*iCifD@g`FGkl7t*biZB%$ zTF)W{0)h@s(#bq+O)Q42_<-0Be%QHmXAVWGUlT->1&gA}vw$#P_{R^{tF@1!#aQ3R zyrRo@s>G_zYuDWa1zBETUN+bzKR8TJ?05S|-Kx`cY%vfduiWwX!R#)`-n3AlA%7z+ z$3-Pf1VC7}6Cs4%?RfdZI0}v&Ld!h+6XkWe0JxK;Y~(@8v+4>?831=bJWj{6MMR0< zL1wR*|09*(i|ivL!1D8w2udc)0x;DG69OeQ0fR2cosdMx<$xrI<Phip=uj~iqF@pr zxm*zB?hqUlvIox#D9fme_hJUJV<qYuKKuCe{cL;OamSta+;h+EciwsV(xv`csVYA$ z`wFAc_V@Q6dgudx{KtRv!4H1$Gqa%G-Q5Qs`0Cqkdxm>f1yl>o8h;Zty5gxwn$?YE z=S%|;N26c*#b12Sdw%~@R}Q}FRj<0|o_pOTG|#{B?rJ93FQUcur<aryj(%Bnp+@qF zr@CMGPyhb$kNw3bS<ttB+jpRZ!KatfEYslM#%l61y9AJ3$82{X0_GsVlqm7&gf2e* zB-dRqLyY`i|LyzM>&3YXim6-IMf6F{U^Udng8I$#go6{xdHsm)TrBBM7hRUUMhTFC z^@;*lD@qO+$*=sHw|&7q;iup6Qy=``!>1S2rG#@gIA@nE;a`;w39S=PW=PH_ufd&% zCzQDE=rYIv2XeS?HB?~Dk?3-XU9#oE|H;?Cb}||L<iGp3ANj~fh7#%qr>88f>&k*a z#9$zzk%6A*3G)>`c9ouR?SKN4XXj>s44z#?yJQPrvdnTED0!C<VC$8>>6`!Qcr<>) z8%jJHUikT6=&p6=tIk&|KUw;Go~|FRk7nKBad$LJ%azX;o|3vw$2098`N6S2c@6Ug zI)@9<U@Tu`URjm!;E@CY<DfXwO&4_Y<zkv8B~LH^vR6Fz*keyU^;FzHTnl<?zdJnc z7HdDArL3+wwo%4{pkSnNcRP+_6bwGfv2tC34L)8#XggJH7IO5qw~Of*(+N|mM^f%? zGJWmWzUH@n>)pKVbN*2QlA4#!ndk6~XCNUzBhoYq7Dt?pwg3WSAk<y6`g1R;&Ou-l z0OIcF;nE(a6HceJY)bO7%<}i_rU6#)LEazkqEdNHCCU+92@4lHoXn2Rcxi705ZDF+ z5CE6VL8)Y((-A=4{wz$#xUk2q2>^Pcs=;cBDW!-E(ugG?7G$onWiVF@+HzPZ2{OV3 zKql$h!IHGexC_S7Xex{)1L8RH@&$&#XWWbsxILi-5mw?uRhyZuSq9~#Sfh^okzSz4 zoa&1;6otyF@~)-4DT2!>f=Y{}Xu$G>obBzzE0@OOak%}qiJ4U+Pxq|I$O*r}+)}o6 z1SlF6wlCie)rh2K<vBjh%V3FDGaT9*PgQ)PJ(<x9xmGK`cDUX@TJIlqAHTMoOl;kG zG%|-<CAzI~QI1Bl>w?1W<-5R|clPF@E~-5{%qLh8j+!2oaJA;Zf+V_YHcyAMbaj9A z_*1Lp$`4M~IjNOkIZtUHT#r-~QpP!`8pF!b5F|RPfi8NDnqi1C<=7TE9?bU-lRzfH z+(qJK?f@4nr{S@WuVUo(H12JO={VeYaTJV`abN{>Vvb+)^-Cz9gHJ1)kt5F>XZQX# z@3I6DlCqVSM1yiPZITm^%#+LLD-c+(*CdaQyQiYXz(=19f!vw|Guzz?7A)i3B1k9c z868so50tA4Nd=QExB{h|XNV<AmP{;hvdP_wH7w{b-~y5x<tZ6f4iG2FfYB(BoK8Y8 zi#fxDT%bh4DI+taR1=bXGT=Q}oO3w>qN9ZPdE;cVymyut>@<^9&@{QS&CV9w;fB>J z(QLI=)*-2`C1+@Y_x8TeLsd>*hS;i2CrX}^_bneIFE=T|yks3lz};!AXW44<mlan8 zWQfSHoKbMW=+5RvATJ<dF{Y?CvRtcNJVSX_v^^WE0$bOlzg%gU$GS+uAPG*GET?HM zQF1{l2~>6&S;)o82rd^gW}^m(<osSP0&+;%isnCNyO}{D_O93EH9Rfxj>;bCoCxu= zkIz0n)0t}@dynGw*7kTjo=&$$qY+Bzy<RMq%jM$a<Rs;)$6xD$Mx)Uee8CsK;B!9b zxzBlSh_&J<!pb?zHKQEvN&3)-KJ@-S`_n)8gFnc{!q4P_zTzLg>fU?r9mSCvZagUZ zoXQ+qZVDiTK;vq)dhZ|p;jjMcul$u36l1*i-g{s9%CAt1U0ZlGNa=?e{$^&snc9<P zc6fOB<3IMJCnqPL-hwV)zWmBpzVaE*cvgw$`e=IaqG8ZK`2Gpkl%rE1#PH-3PyEa~ z-+ArYwNGh5uYdjPx3+ew`8=KB_nCa3L=UA@@*w6o6+?hwxS3pc_P+Oh;8*_hPk-{_ z_}~6Jf7g=>N=n6;7l+V(DJ%5iNy;z9#d^W$DsZH}qE=jq!?9X(JiY0qFZ=R8`lJ87 zUO%16$CMK4r~0`&TDPXq3z~QwjtnqB@UF`>5|Ey8bWad`vE*{C**tyxni+N9OW*qV zU%dN~_y77QT#&mD1L}=qC$w_G@TuXC0+K^gN(RCmBvSsK;Eu%#i-pe@JU$U%G2q5q zzx40E?5=nGhkt$kg5=)I8=Luf38YG9He8jU*__J`i=~cd^u+m6AW|wBTn^*`b;(ka zyII*_CAV8|eb)DV|G)UY?|t)mTjq}Qkt#I3?PD19$A7uze94nJuOGr4Co>1=u!;;- z^rRG0+(?4!L<>ksqY=OV2j2d@Z+q*h&oq_7)YCq4sm1e;et4p5hq`v4tJigSq{T{$ zRmqbG8QrMCmm5Ji;erDWq~xw7GkfFryy?t>KGAwwp-^hyA;@uftm_AO>bjoV*Wrm4 zORd&&DY=X=vZ6DrUvBKNB1tKE=kBh(-Mw%8rf=R@kPjXyrOwlGl@`miSa$P8w^*jt z+Pihi9HrGttF_OUK3^)i3+^t!a|HpXbuic4av31kusoPE=cS(Ho;=<DyxU*&qWcF* z-D{85odlfB^70`u223U)8h5whj)M~<$F&12mhM7wk{+!>cO@D10Y21gQZ{435Y0nC z2$Ud)8@}q*ul}<?`_o)?wk~;>e7;Kag`X_aY@X(;v{?9J>5HY$SDv3gp80I<^F>-N zle<ekfa`P$y{q5-)DH&4pb&~$y5#P1@4D{WzWqCjgpTK3*XbjVFWs?!xbA#l5UbxX zBAA7M3%e7EDUBtP7Oj~FA3&VyU2?xTNwA0;b}<@dT{M_GOzy#KGMU_e|BHYB_kYjU zYhQPsl2S@ZrM#0>)UznuQ&N}mYdkAcriayA_d#veH@{N*nRLOUd7vbf;<LNlle=7B z`Bh&<GA!bqPh4A_%+q}7*(9;$Pc^T~C`EFt)@iZoh;`B`(5oVI^ZW2uxR3-R%(OMd zUC+UV8?ZfT#11x-CD#oXZivfu>Pv~a^5$NhxpIyO&?zd{Y5}<!#vu+QktssM?ekMB zGr}M<1Vc&tiYcXPx_JNnFOKz(#WArI6%8oaElN^c%@WxqM<TEsMUG-1Mq~h{Rb8y} za>NLRfU#kFiYqrFj<~Z0Gs{lIXcFj<DY!c=r4$R+(}Q{{{*?K2WHeGh-9pHnB$g{* zt+_qHbdql+7raYFA@6d72tvfx6fr2<$!ym>UnmC-W`xrjOWK<w3so3FJ_w_|z=QPS z{<CExC9OJ;T?ih7085%?WSFw;DMwM;Tin^wbev^_7E);7s%esYF3`qIMq?FGMl!tO z)43L$=^%w&<RX~26y&;7mr}4a8Tn`wgb0R=+DyhAjd)?#FYH>3nvSdc5KI-sE{d<h zg~}*wMip3qF|jPCtSpz1GhV_PAbBy%xv)$ZyW}9oqczZNZz-7Fux*n`*qR^&w+iQE zaK%w?Fe7&EAZh0AF~by@H72rH{~E70(RpP8(7i|fJ=Y%O!m7hM`C>IQ^1`mhBfETI zvbW2Ey|xRhLQOgqVwJ!*s(^=VO6(b*W`%xRr2-DXD*#%w%`3KMr5fhIs!NdOi_T1= zXfYT~Ay_3RY^=jt(Bv*4>|DC56h>GrA}XAkasOIdDCVmCuM!bj56`wx@noJ3PP+Nh zuOD^}i~=RZILPz*Xt=@lMd&gA;L5-o8<fYAT6kR()tgqq$t+8^9DOmD0o-BvNTPFv z<m<JsI+qXwNXAfWd(7sIrO;CeT4DF{-6+t0A;@NN<@zZru$ZydR-kTd=wir`ODE-1 zaxG!G(roF6C+VsE_5N|!b($@FItlIyHjHt>p8kS3h^900X2=L#37(sJu?5Ob^)(`g zj5+v%nIzI7b2-fDOv%^esPnE9S*YE~WlUxvZ+E5?3I;M(CZaNEN@gG(c?0_6!4_1Y z2#e(n)BuRKg0xrTU|mA;Znd_PMGCYhuCB~@`NAlg-F#_09@{7~MmWqMNU^9;R_Sb@ zi`=t?E<is|K_yvoPFYTqJa2EYVY$*^1uGCp_mvw%0u{`5wn7(_+&v)&Z24|nipYfo z*8i&ULN!F$XQ)45sG)<vLWQ-gPKA<F%A#JO;(P{7u4Idq8}!806^ZMIYYR3VhZr~+ zh3O>FEY@nK7u&~b_gs}jP_1(HJlUVn(95O~G90iHJ+dUSBte%O4elM?w4Q^+Z0;ha zlMszt)3~!GlChOBivUy%Uy0LvU<(R<royB1-oZ7Fy7F^Ya(tRqbb@qwwrdrHcaTEY zNd{l0<Nz)9(0Hpxdj;!R6r#`QYfYFG2p26Ile|W%7QwQMvtjj3uu@p<Ys}d_dq+d( z^SMY`23Lyv%C(#p!RBO@6bD3|oV=7Yz%!exu%xOG3m{M#R5{kmE}ErU>Wy&H6jD^S z{H+S+x!zIO@pSYS!5tYTDdNwWbqQEA3%O<&rSeirNBuhr9YkWOX7qo~^s*dfSuUkQ zP1d=VTB{N8{K35*$-Sk8UK=1-DyG%Om%=-%IEt63idL%2ndFvZy&4W0ivV(=4dv=y zJ5`DkbGXV^DeBZpwKq(Xx$uJWW)*v{QeiB0ne2~B6b1|quq3Bj4PoW2GG9r5g_egw zdQ*--mJtg>ub6LFD|&JuV6c)xGp#}x02wSxbJcR374*zY72H93TZGD|N<s$OdX%^Z zDy>>o%Eyh@uNIQztfjtPrLL`3E=REjAZS_W<xB{Kd$Ikhp&}s4>3|DT*|{RBzSQk# zRwB1Om5o!~;bMVGTwRoR=#M^IF#GJ|vyaa{{-)GhpY9Um?%v)FdwV-OyB98AxP0mI zg^L$2+;GG8&hF06)_6S0HL5`+XQOD*b=`bEJ3Kl(Iy!#x$tRAFjt>qGjt&p^_xF#E zj{fEeXnTA6uDhTA%x6CHmMd2-T)4QsvmIlEaIV2`rI9nmlg%F*x%CVmy6d{x$?V|p z;IYU4@}UoW;NgcJ>OMo2@6VWku3WkDh4<a}xu5&O$z&|`QN<^}ZVBlyz@^HsY?*dR z)QLf{bXd?Wy__udRYAE2>(NI)@|*8|_k$0<-`)S83TStC_m*33`Ml42;azv#T@amC z816Bp)B3`5m1fv$a{AXZ9Qw20H@oI?uWOT3&lNDce*OCY{2#yd;DZldy?XVpML<`s zT)Fq&dvCw}_A9sCl9Fda>ZVY1w%~NWfNJr4!`k%BgUtfUIYj!?WPnfhWJx)5(;<Wp z{rQJ~?|0wxCx7zZu3LX*1oY-Nzj?V@w~FotqjQ5~@k!;pdAFyYJm+PnXd6$XN~fp` z!(-S^U+J!0tnB!NUBY^`{KNPB=I{OPZ~PSn6z7X&Bb*GVwP&Sr#_|klGMjQ4Jb6}? zP9MTjZhrEK=iWu)bb!VsKdNvA-0%}0pkQb#AblVg1MJ+HX;^Z!Be)o=XQpZn;e z590qSZ-|8sb*i=GyxP4^S*%KKX8#`Y?CUg;04i0zw$?e|uH<ZqTbC-Sf)zlhh_TmS zGXJ>nM5XzX%T@VxHs{p?tk+iCJrWRadiLv{b(cc=)A#@Jf4O$;)3Z|pdc`N=G(3&u zH>(0{1T38e#0Sp`$qNCKWS6k+O499OmwF7wh0Ue0?WB7yE>hxZt>rqS30!qK1x=L* zY8hqe5}x<mdtd(dK6kY``lWaM!ov?g{3&bDCf$RBI`a8X)Pqui@=TytL;Q<b7)Aqq z`wk^_j*}S|tAf7F7CJs*>IAZLtyZ>9y;N#B%}(u0(vY6e4t47qDOhL9ARC#S>&{ne zOsCsl|JrYq^dEob9gjTn$fu-1XEa6UE6+JBoz{sm_-o@>Z@xNtIf5ynOX|7|YcVAx zM<-B7j^tjtB{IG?EcR{?05*!tZ8Jy&Hps1(J@PJQy%Xhb#5a87H_c|VUwYTO9(?fq zPb;9_U!A(kGvV)<#<SXcJm^D4E$dWpC6nHlD;^wUwHAP`!{IUKs{$V-N9TjO)S%zN zAlpEppT;US3HH+*Bv|2hDL2P<9aER*q)_tdWb)eAzV5M)J@)fI_p_fUh6;b{MK4mn zya7|=)Nehh2zB6qu+c7b25zdTF@)7xvjx^2+|eb>S6HplTI;+S;{g{!f)$6Z0YPE| zO+3S+Ky4ywj;<Wj5OiS|mo6%la!^q$x$o`W@Y0vPY<Fkx10Q(s6Oi)G_34ELUp9Hw zdDj&^Y4<}g7-KA**G7)VjFt<YSan>jnbGLk5>H*{a+Srw)Tyv;M1p}D7AuA~J{Ti# zid}QQvP(*}&|-v9;{brs5CQ`cEZazjEH{QFPcFaz{`+72;urtKPyE>9k3YVlLHFHv z-?_@`l6&zZ?pm%gIY&uKuFjQmTXv11^5CFYh^3IQ?yy=Zo0!E4$1^Nf#f!UY*MN`* z1D$8;xEXZvj3MN?p0+f3<iQLX#U+B_;vOzuK#V2vYx+O*x-a>nFW%bT&O>#I2F>Qh zXCzmq4CTYqby_UF;mauvZSnw|Ce8Z1Dn^zuFh-+Ep;~CJ)}a<DGx%JZR5wk@P+0~< zhx46<&IVmW#;F;m6O00B3IXF$hN=q#p*8rWN*#7UrZ4&8FS+@qn}7M2-<81@{^PHC zUA|zKbnS3`bdua9VcBUmPsz_Li|VPG!}}pg8B3>EFx#1iaSXNY6S@>2+q5a{sXYCs z*rvX4@FdQdo>QvlQi%Xai~_c|ur&o?A?V6w-f|;HW3?UZb#y?l1`tBr-@pEjcl^}# z>(|4jTVHTI^W#}}JWEHjG++8UsY|}jW<sS1mHUra7y_kx5VgmwHF&murB*2`?8{OW zNkEtD6$1v{sr}c}`YfGurZiM2m?5{yjUz7ZVRswT3AU!#+0t|h<M0w2?DYXVNn2Z6 zU-Xifyzjm5<!vwc%FUpV=S0z)=~b!vNbCoFl=56nu6k>#I*@4;O5Qn&9EVI$%bywQ zI4f*w7SDU~tlKITyKMMI1}7pQU~7tJ-G+;M%$8^}!gyTflhi>!r*MG*T0mMbr9xpi z744kn%JfIQvV$ADq>^z;zh34T3Es;Q`LCr@5>TQcqzz<Et-X7A#2VGm)IRJSeq<j( z8^M6B5rP50bc|6{FtdRv>n$k<jNA&~p=Vgh1q&9vS8SrS9;@ZcO;+WpMi(lm(IE5h z4_aT!EbmLnouxp&?zC8@mJw`CY%&f5=}ZPPvU(mVF^SxO1`7Km7^0O=-`&B@mpC4S zKn&Q~#?~Y?7$Apnt=?RFu`3Iz#7DJR8;*p?9M7KaNjSyqEyc^mI~af*HQ3L?R^YAI zwJ1=JT6jz3v;T0X8B%^{>6I0b)DNWzr)+j9oR`fm(i#QCSeREaz^wR!G94|^OlSHT zc*Y4fE=d(U>4rG4ZapSZ@2iTav}3a=DK(H+&js-Yc=QdDg|JsSy?v27hf7*4wOo~7 zgK-qs!3;n&OBhSdJQ-<%<*09OhcPO@Wp5jMJB2J30w!YwYkFS!YM%_eDQeL`bAXb8 z(W_BqPYv!lHm$p#jiywd>uD&grS1(6d<HryT(Q<wo~f!tp^s%eC%5`n9*{AiOyO%5 zHRVZ?ZKRqJmis~s%%ejF9+kPa&o*l6ynkh?6I&^vJVnY=Y;E8wEYpFq2yM<^;ol90 zQ`J*b;?_D6wJPASyQ!`@zp#vQDqOPKn#(LQtU3@0pshVb54I$Yz+@8kwnn3offz@- zd_$a0EawfuWHw}}_t~;GUHZBBRnzpmL;VrUku>P1ad+o1(;L{G*5-_U2m&i9V$e%6 z$QL&uQu*Li=I%3=*62onDhe$LX`S*1&=3L~)^dYjHW@YJOP--+^tb|5IQpzX$AC9< zD!|bx%qE1`<C_h}Y2K?+yNb5R3tL1bj3`rdoBmXa7B>!d<zk|+-KzY`w8)Hlu<?@1 zkhx6ODd$bj**vW~&o#19u;W=b85zkCu)7_0w?YV|`*0j-R<NKv1hh_@$n?tGonF>P z&<iO}W;Qqk%3W}=+EfjDAvyFul~u}t?J00a7449K$_*{9T*E#^FVizsFI)zp6>@PQ zBo0}mg5X$76=~!sIH1Yc0K{k^U^2>a7DKesW>hdGc}4qs58rs`{S=SPLCdse^%Qj= z7RYkb4VJb>4r3~wijFEpxbU(X;HtBw#HOMBSb(a7En;eA*w#l<&1z<7su9ek<d`kf zvU7rFY2EqpEah-;GP0d58wHApX48p{VjG?%E3<`bPel*<ZAQ!LMI8H%m;oAotmXg! z1tv*EK~x*A?@Gw$t~owp;0No$K&1l?ICbhZsOL0S3O38xEb%t`!Gm7TL7s?EapqDO zQKf|@!Ix@7tL95TIPP*_v^5PEcjG7;sBsKHAVZ0ejhnqj!%X}9ayo(N{UpTZ$4W^m zFABqBrb=V1?DxUh>a$G_0?bo+s8|7{)&WwQRSLDP=zMniETc|ZkXZK7rM|o-Pe?Tu zTdsLLOEEf$7~JKvWto>WiZ&i)mxyQ_MJw?^CZX3RNmg28USX{BR4U(*ea_XqbDL{6 zsBX3Hr9M6$q;F@ZrD?$T*I-sq-?XdJ0MX01nW7>{_4rY)5&?A3<*CdS(sHTeSy!fQ z8^@8s^7+EfH0*4J+&Vs;*rmNV9$OBbMk5QYp`daka&;-T0EUg^I&7+`(_UJ?I{Kk7 zEKM#N6a)JR`&1iE&s^@$X5qOGZ@l2x1=3<0AL9i^ZZ(ej$wc)+EwJ}0U*(bwbE8F< zwCudjJ;QPA#$CuM?kI*BY5|+5ss)3^0aw13N=rc55{7cSrPFPISoS?<)t|RQs!qwK z5~h2Sx|*G5ogYTeO+nR2(F;qxzP1cr%2M@0r61(fxoxSO8~4Pe1IQEYc(O=1Z0;yG zNM*p6qme}`qX{NsZcRc?cR)rjGoUc+=VKez-8Lm}S&QQfEt>-hz6K}pRFGIxJJndT z(8F1mTLJ+(y*8)}SHdzfDfe;Iu!4P`HhP3dth0l%8y~1|KE$Op&Wq|%rkLlDiAk0c zQzwNYme~5YRgX#?J*R#gU0Fcstu8Q7nUXaK%+(JZKT~R}G~^z0Vu^HA`&DXRDw<Pi z31pi~R9hDbsy0)W45nswYIVYbEpSlWEFQ^~`&^U(szqy&g=UMiKcLvee)syxUHQsI zE^2q=9H3y>FzQ7%8kEy{s^p2m3)#TNI(C+=2Y{_9tbk9|j@P<m=C?Okv%&(k;YHP4 zs<tLI^re8HZR~JsGi!Ys>itgf<x#B@t97i^gHjZ0(8XAX(s4jqan-a|XGmp(pQ^46 zf!pj8nz3&_s~ibuP1pu=7IQa99c)+n*cwn(ATU%(=3d9X)>~DRrQfFSC@67PpTCu6 zuc+Ryx1KdNcb3;#=mD&Ub|6i(p^O^`Z4*Xs!CBL{e9-}9%WCjhCn^?gYBsP|MBCsD zwhX-lOATf&C~$4+^3uGB+QMA>U|S~wTMB~VF&4pC-6RGxU5XoPsb-;YWII+5Q!`cr z2vWoRz7H1LP|IP5UY#I4unajrwH8Cy06wcyfkc}7L-j5iNTtsWYr9j!ZYoNd@7$mo zi&kbz?_<?-pCWt++IWL)^6W{1EvRYc4_;FE8qToU_A?=3pL}gb`4TqD%@qi#a2eWx zD@$(lnntxzW!=;nbnId3I<8XH<Ea{d)H|y3DQOpnDM!6+08uUJ^Z~3Q?=hV$DYo(I z&EON>*d1yHbpvj~ssGjY)wC?4Cn~C9wq-SS>CH@f1Hm0`d75J1oLL&*IV7Icx%sWV zFq<O>4GmVIPIdK)wQZcSj676hXyh*D;hex~%lcOJQ<5t8tddoVL;Q8XW2~N`w_lBz zpy6ngW-c}jQ_D{C4VSS`gEq|Ef~krTWSE>V^}?#1)>eR)R!+)X8T2@8k#R(CrR(JS zHoApFro2i#q1w6E7aP>4^-X+(qvkCX;wCqP>Vt)*cWj71Q7e;8?)@OjHWYtY4ydOJ rO|w|-a*Ywt8)a;~OdHdr+A9AKG0v398x>y$00000NkvXXu0mjfi<{pl literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/lighten.png b/release/datafiles/brushicons/lighten.png new file mode 100644 index 0000000000000000000000000000000000000000..6dacf6dcc75793fa0ca422ee9ecc826379e411c1 GIT binary patch literal 9437 zcmV<3BqH01P)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NT?1QDc43!(r3AOJ~3K~#9!?R{yGZP!)a`qtj(_V{K!$&xJFl58UB;X$+QkcePO zrc9h*7bX?>5vsyeNz4p3Hjt{|0s?=){0O8Vg{x9jVnS8;=Rb)6Gn5CAD;QgPk{wBw zpY)#J(66W4_ny7immh2Iea`J}$#O8MP^HtYe%-fkpS$ncYp>y3-&zv+TCZ1JfBnrj z-*WJAh{*fi|ACwnL{t^3F~%;&*mWQLz)$;=!VmrMkM#XK=VWHt%q-I{vj-o1=&{Ei z+uqvJ`Fz&T=l#6zQ=j_2i+zw}MzcJh&wua-ez5C0yyu^P&u5?9-I``V|H%W_99>h9 zC|pJiq(F7jb@5Lgy$nDEfUPY<L_`v0#uT!NAkZwDWrd2sL^Oy9%{cG(C^4IcU_wTr z83{lD5h3NXPwsr??Dh@UtlW9q(aD5DiOdES3WV63*`Iyp(wELn5#qTE)8{VDUVGE} zH{N;#r*C;1B!~(KstTbhkbn>X1ynRf8i_0!st^-_kSbzA5fK7G>?LhiXy2`@tlo6f zO{$nqr~CKruDkAf+k+30Q~;_W1mC!iee7d@`X?VRPx_%B`e6zoP*o^`hUiz<#Tb9) zgC7tPo!5=)Q?JrT?ZHfA-_Pgs+0Xy{heQP5{PypD^4UEAD@)<s4_*U-$P#tQHz>xq zw7eW2e`*V=BwlgjGK3;R&R`^ws5GNUG%+<3QQuvX*=*iV&7x|sXcUPwqd;JNGE#Q; z^8fh6<=rXod;N)1$0sC(64p-MB0`EN<aMuJ|1TeVc6ZOR@!99+&t8~acXHBo!0DSG zgsMPY<5g4?f&dB75HyI!Xkto&A|j$74Faf&WQb6pH2Hd682|7iKl)>9t82bV{sDzT zH7J0f;lm&P)$`}iAAX~s_{pEjmW3ilzb!<dfG89q&;V5hG=!i)2thT(7~lW?pIW%l zzxvnzMue`ZB7)H+kQmTKg(xLx2);Zw8LAp${K!Xs=ZUjtMI`p~xri7!n{#V78L_q! zj<3h1NmyAH2+ULvARtu*G$SSF427ojUElTHA%vg%*`L8{-tg{h%-P?Rzc*ZaYVyF{ z$5)m_M5`zx87V4&QYbV4(BMn!Vw~+I0R^ByNl_(v&GD7xN!bUIA{3d6%puVXbAy?` zdo@*6&1R93g%neQgo-5!Vh{mEAVLaebKBVJFI`QR<(lJ5%S)k)>W9xypqfQm5~^q> zK_-EU*w%K+88L7=lfV4jm1mxt&U)WU09aX$uX@GutFK>K>O%B8s^Rpl4~YQ200^KY zm%8xqH{I~$Gh1h$+9F9n1r&v<P+T}JP(asL<H_SoICb;4`0MziLJ@zmRIRGN6DSB# ztu|T#p{Q$FB+WHhph6P}4GN05H2@V#5p~0;!YtyNWkLX?36=8y-GxIRJ#pg1@#7~% zWH#H|*x1<J-TfMF^xD_G?mh4M&MMg|e5fmL2w`L6>aYCrFTL1}-v84duxxaDSWdtC z#z4yz{AL<r7vJ|&KY7TFe(cA8Lg*j9OYn__?<4{gArvzb)R!2Z`O-7L`5XUXd?QUM z^{G!OrJPbumXqa_bIvK}Y}u0KoKv=(b4n>E|9aC+H~rEt{qp`B<?`u&>{rS;n`JNq z8D>Hw$!ytjPAT<$-_L*H7YC84<!tSu(MTiBgcgIvU;$PPhma64G5RV~O6eDW@!uDp zeCM5aQ8=6BOB?g6+c~AIiWt~+G6{sb=m1eawWO47so%W*^{@ZrCq5B3w&zbgvv+Bu z_vb?}>2TZ4Yv1syCDA};KtxPrxB)4k7)(SYrE5-I13}o;TefzS(ZdTPxwaZkpNJ=q z#~1`qsrKAVL<Ht{BsrX~haP@7&gR)INKqol$^<J*+J)g3BFRitDWVj~E-j!e5}42D zQRqGtRT(8lbkSA2nOXso2(zgfvca|9ZH}ZQlxWNlKq!PLjZjd*dLv&HQ)0>{2suMU z0VqMR=&_^-S7?EN!fL6@EkM$!d$aufrT*$xzV^gqWjV$`4NB9XG_&$PDD-83B2=p7 zWJZuGLZj?V)91dhbN1;SKrft_-1^GZW9!|dqXr5^=`YK$cH&kj>IsGjSC+$xqm$!D zqJX>8{Hf1we(~8IU-op*zH+sn_tr&?vHl$(B4O?1trQe1U4k$iU603)bbZf1ef09P z&rjiRQXqnq?doPezmYb!(mZi_qA@^#uy*3s60g=<^_i>7Q6Zmua`Wlurf}Wx4RM_n z=ESXOzHoW|)N`{he`UV0opAb=2TKeiTEdyKTngN*sD~Eim6{h36?nK6R1t*~S0tGG zAEH<{7zN@!g03<GkfetcbblmD6H$u!wpX1e=;y!;LJ~rwiI6lQO(-xCfeDMbASg<T zkVf+m!%Qe9pooCxFHo0J7jLd*6bK-Yg>(1v^)>m~cHMHzt#{mU$IZ9idh*1H;Zc@T z01uwaKf1B8arW%vfAv@Y>kD7_!q;a(>+9?9dCzxVfBg++t_p)OX_1oD=nDHH>EcsS zoHJA)vFrZZM?d=MPk-vAD+k{B&UfB%#~HK1#fU8Ybv<`O*oGF@?_ZK99K*8eLRD2$ zPXF;Yf8$GE`qEcf(2xA+k4yD+`<7B)S4JNTtC1ni7>P)RrR)=)Y5)*o__sgzvwM4c zhbPeY-g~c~U9$c=x<qQUGyWiprxik|#qPKp78IY>-s0d&Nw+8Vzysg>@WXF^>ZzwL zU%tG5L3iJC56x%?RwJYhZoVzT%@II=F%a(k+?<T^Aqr6}EsY{&Im6wJ_NF`UeE8wF zKl#KHSFc`e3yL|V(dj8$mXaqjB9ItVAW@+KU<qqt5P<}MH8vFS7{MUgoGXPO1<Y=` zt?jazK~-t?z2Eo!lWy|9_my}wyy1;^nz2tdPd1<1&djFMd}XuW+D)6=X=^vn<~H3k z%S?#^h9DuxQbz}G6bpJ+6sGtNYCWYac3G;vj`xw-@`G=C=-jz;7cXAKyT0RJP<U}8 zZEmN%-nMr=Fe^Tg>Q0GW)DZFaUcGwDE0?>dHLGm0a3KW|E#G+9gc`<hFfgo#pd3l{ zL^c5Uqd$5C*Wdn63y{>p2MX)Y?a|{$y5%K()%DA-xqe9@lZkJTj?~eARFOc|O{7qu zC5$bi;($nuPN%AWbvG@73O+b!f>ER=AZ2wK>uX_kStk?4V5|4pSdvM^Jd6|1*o!Se zGGV!Wkr1m<@SM@VMsbjaL$pFQ)}yONLWB~7EKLyA&C<eUW*DswFp(^xBvOV5QW63* z4>c7kETIh)>hB*8%8`*xnh??e2q9wdPy`UMlDi9~obaYM6rrlRJrHnb%Dp+ack|wi zG2+zGiK<p3kAh)RJmFVS(=09`5fBPSqn}K8>@EeT^jEg3nas&jA`ScYip0Fn6g>6i z>CRq${wwn<o4vyXG3qtPx-Q_=H?G8hwdEMpPl*Cqpdz`P8U-=|P!Ziu)D#CWR?vZv zVtfUhC!5aFtk0H3z@RX)@0l_``{Z`t+jAFZdvh!42PvX`pU+=10WNR#3cTXfQrF>{ z<CB%;5LCNJgF><hkgJB9MoK1KJg#pbO&Wp(bBRo6iR5&a`;-+36P?ZMGiNt);<M-X za%RdcC{d#TnWAO{WM^t3*qa+v&V6MbBUYE=k=3v~38#*CL9sLmD1eSck6(S4N+|Ea zrxsJ|G3RvJ_jB9XO}l&6_qMUMyEnIIzPw{5dvnix6f{DG=F1`tBBWY2Dr_zg>H8kQ z)^@rWH3mF$Ap~G$DX8lDO3<K=a}xp>022cN`ac31eHUlF^@-14oThAjZ&$Z_GufSH zqF7ELsqP(wqBPTz+?dDiemJrzXgRCQO$4%&Rix_zfaRqSRB`&|x4E&XX2ac;+ppre zRXkH-f$N$Tg1h+&dVxZvQpFz_P{V2ww5DL5d%;0v(DN6FAXa^5J=mbw@QSYSZr)Jb zfEAZekFlQ%y5}M&Cgw>5M6F~U3b$CEl~&ZQy>q&~Q;FiRoPuH$E$C)F)K);mVoZxn zJk%+AFG7d%wD>HyoW(`dq`%zBZJWb@MgXEh(qjbmG|df>QOJ@&6&#ks$rp;zD2~~% zMnCSfg+_?b+^4ht5)`8eM64Qq5fP)+*sa7nEPKQO_I~+#`TASST!+}Zi>oWElgVUx zd8O;Rg07{0Z*Ml6?d|OBWUqSstuCnRx;MS)&f9Lk{nf8}b%<ezK((ARPXRsLBl*QI ze)034`|H2>i@%u9=U?XqecL~N=b1BSy4clNX~?8U33W>lONK8ZAp|Jq^ZBEH`Imq2 z2mk$Vw4fN{nKNhJ@s4j}i(T1(#v!F2XZVZB>0)XRsOskC=7)dnS9f-HzP1IOJbCgR z?|8=zH@wm@qfs<HdeS)PAANnnHF<O@5@NV;{`^ON=XVY!sfRD<z3+YR%F0?bpZhcX zA(O|Dm5!uT(LRq;WehNkHxnU*vuDr#r{DgquU;Jg2mkN^%SK^lZdr5n2`#_(*p_I* zv+81N-iIN2su@qsM10#%ojUdQZ~fLk|MNe4ag`7E-~VQM8S@aVp}4gwvH@w30ZkYX z?L)4TN7dVyJ@CLk>bma9C!cu11>JZ5{fjR=`XmpWLmvE=H67(>mq+P+eXxQluX)YQ zx7~jGr#|_~Ll>kpD?Z$;AQbIWUI3)2=&O(rQ!&udT#nF}c00D0Ff+59E#G*<jUW2Z zFC4z0QWF~2h88b>`SPscK@%~Ed8P&sFwkm1;Xx9O;+oLzmdn>Hkbn2{A397zMH(-9 zS%Gx?2Va4LP=XxlMJ3@i4>TQ%F^{ro6@@a(*~O=-@Bir!9Ne-OSkDM9YhPWjG*DGS zU{FG-qfeF!Of#l{Kpepw18G(EN7j%0%kTZZ1*N|0uDchWC+z!D07{A3RmIFBZZG%5 zKn+k(RHOn0L!F}*BOsoUl(c97>T4Cxfwq$;PHt{)o;!E0IE;}^W}irron1@5G$ICB zS_)CIzABkA=>SNKP#Ed?f_d%8BT<j#g`u9aitP!ldZHn0&skMX<z4T7_vb$M*IsoF zZ+z38M$VF@p3}MY{&mhiF(t_)iJU2dKC_EL$|MpaD7K2H)uU1JO{M1)BglK7%_#L5 zBk#NK{*V9hAB#xbo~D%e^z$<_+1Tupjl5UOrXZ6}mpgsyoyWT1C7}|rJHF$XP!W<J zFwa%0Z7dK$bJ(7DsF^6ug6h)J(!KZI_o+{PQv2TeWH~eEoSW4#(hn%xv9MeZ6gUb< z{8)KyRtOlygoetC8_Y!gW@Ja`|79~8zx`eB0uc7%t>-V#ccytdvr?pO`BTlSV!-hu z-O5sU<#kK3LkuM$tI*;C*a&!)7tLyG!RQ+9v~R~M&}2M%>}Z_zc_=Y@(b%jy^OCoE zsaTaLz$y+zcBm*TDx_y31qUvVxxQKbYnLoc{J4@7yZ7GvVg+pr@LF*zSBR4HD`agY zOd`67uG1=>gI6{a5!HfJLjbF^u1pcaC<@R0sZdg2LS-;BXwEr0V#@*4bNtog3G;d@ zL}GC6)k4AJuyD_+16bHcikP|Ahlz<v0nZ(8Ffmn#!4ON@E9N!U0wWa3`WK^w5EvCG zK=7yzzF4mD`nF>UE?^^=ON!o(0mfm2LnLMb5Qt7jLlu!D85LF~%xlODK|^SPD_<!1 zQ3ctmsUVTF<*a^RtvI?aLfp-^78I5ZU3Xl&ET^o@O<RFJz{S<<|Gw`@5ide`#nB@_ z4<D@t;U-1t3u0&HC2li|LuCm@H*y%_RiNVP9%dZKRe%<LnF%&`%#4?=W(WUQmRzQ_ zM8iTe-~lO@N){Pepl&oJHpi!3NLJ%!Y7JdEUXW2l#4=|+bGEBH$&AyzOhFfsGrOoU zD3l?nyS9Vnh_XDZ^iKgGWN`u&qAqTs_|2Tn=}scrtcu?xCGPI!r_Sy5$-eNVJr?X# zP9E(hot{29Id!y)QCF57pMy1zCo00C%&HI(v*_Aubl?pQ%0o#ltSC;2%$j^kevwW3 zY<*(i=RVWSt91fMGKOq@Z}ViN#2^4-s8t(OkLQJ+O3;cP5R^5$expV{1<Vtp?agyG zW|NT3=@u!`$n%%xPd_)E&G`JKJql=~xaGvvtpv!`o&4;D*~)S_eZ1?UUUzCqA(KwT zv<hhm24EIPS)n6uDvr>V+}WfSFiT!ib-+lYWMki3pP94MeF&IPjV7uv<ZM0AB}<7w zp>}7ZBC7_vgA=NFe1%w<i0%&+B^-8!sMi^Ul$~kcMeX|xp=uD3r=OdC<;rYpJ6+nC zo4_g(%Tkeb!jGmb+0wk%oxL2O=P%7waq?IfRZpLoOeWez#3&}JLLp;OAp(G-u4Q-K zGnz9<)J)7g3k8J=%;$M`H&17Ip3FgKqHcbpc$SJLU^X{J$N~n{wUv+pvzcXK2yRO$ zYGf2IB%uByBE`iNLu3LNw|CPdVmh;IICo*zCw}?-^z!CBC6ZM4JB5-{%A!`GVxbtI zG-lnKn+nfgngeoWv)7=@lMn-zy0E+ypc-p6)6Y|pN%3H4b#Bg67HXde*v3|x&GPm% zP4~>@(mW|lL`(Dth?^8ZU^In_S%NA1sQ|J&HA0q`LR73Q$F&s#s6l?Mmem?U0sj4# z0<p|q?0-MI6$7qr_bJKVEMqW8tf)MEO{LPMI#A-wiOZA<!kYk;lt>ku<!mBQoWAA3 zg02_lRE6Lhg_O-M)i92QekD@QmHz>U*u;;hE=K1H5o#-Nl<<<Jz*s869=KR>U+$$_ z1nbEvN-4lCRrxG8C~U6grE0aK9_NPmyHw!6^OIgOPt*XCPR*0X)Q5S!qp;&)GFXJ+ zkg+nzycFw+bE_7JuvA{$FUs&2R;o7yYgx7a+UaHRw3uk1nQwzT)LM-YYc=310JDO@ zQmizR)FLS>E>jBcsNyJIf-Q3_g;dsxZ>=vm*OF$97+UD1wNs_UKqkiWS^H<I>>DNt zDfCnSV-|bQl1i7lOz}q*Bq;^Bau0)P4Pj~3!L?Yb(DG!I@D$+AWrV`eD`B%0Av77) z#G;Zy;jTkQKnBXvjI|tBqj4)9%f^WUSYDN+n6$!EQDCB(Vn38+`Bs&n<PE-IO(vds zqll0NU#^E#UFhXZP#|W-_Ok>6esByXj*^v~E25IhrJ$8~yPg-6jT>l9Zh;002=_tv zFBi;SzFxjwzW%P%TVL!J!1|FRM~@s?TU$SN{MgA8CyyOJe(dPc)wT7twUx<a$!k=y z0GL$_gpyL4PIouAHn+C6FI+gky|sOH^Xk^-=Elax*4EbFJprw*uD<ql-*DrNH(qz` zwa1PfUtL>`F&+x~j_b4gAH?D}wFW2$_|Pe(-JRX5n^(`B`|{bxAAjQP+4Oa)e1F{p zbnUg*-g(zu-}sGhSX!EpLsaqA?>o@?8ZK4i^xBhL3lES{v2<L}ExnwT6iT6Ybv^UU z(|`ELBac1yc{BTeDxmfC_3N&??)9&K!)ssrx`ODm!tl6qxF{nWsx$+Obpdh4V!{0d zzb<yoc@t5S)W8)`y>jKs$N%_`9((MuOP4PFtqADaYp*?X=FH7E-+b+L*X3+pXIc~r zU#!Br2<>4Jn%@ukjfHoRNPmC~@YNnHDW`YziQt*1pZfHtKlSLNkM@24^%2kqKls7f zyl=Jd0e2i>kS|Tni|=;dgNHnAA8q4BRB0b|VSEhR=^J-e0>ErG`@=^bdE}A*`8O5N zkNx;hG{OlR!R-*K9I!lNn#`hHMh_lTrNu*dfY&lY1s0hcUtPr@kVX|R932gP-~aCK z{^!qs{`3EL{ZEC?;Pipk!7=81)X&38lM4@ym2Mx!f@2dl($kTKa;&VwKJ9ynp{CMy zvHp1ISFgao@l9`f=%I&ixZ#FppMCb=tcS0{C-b=q``+WBRocT(77zS1evpSg+Hj}F z5N9ozWAy9AI>Em3QAI&11BZY3nsaX4ArS$x<lAn){f;wtY;JD<-berI6HlCdsTy?8 zz4r}lkxE;zMUKuvx<gf;;hS-%kTk}{=pOCClF);y0ucp+I<Hq0gh1KKriBbWvR6Zt zQFsWAF+{TB{W5ApTG(mhr0edw>+WxP+k?+M^YlyMd4+rLxp#ax>bV(_hDP+;{WfXQ zb}iJF4$;67cdST<gVDy&{2+@`(Gn?PXhJ0l-Ylh~K^6&wGU7mS^!kl@1<2iZ-~E=i zy!FC`3l}e5d{GU$=ibANFb|K37oUj{eE<vL&SGhgqJXzGsY(bE1A>bBXDyv$RM#DA zjClAn4!bKm9YZy?N=go^xsGj9E9GSCy6(<9@4Dm6nJ+x~<O|uRaQ8j;aM*zMdElqv zl#R~R&@R+e{$Qc9stm-7zUt(D9XS7}DC*b+jl|%@k>Vy>&tWN#HeWxy9v8Qna=?BM zXU^=%k)wbAo4#p%?a1SgKX!<j{l4%2fy2*FVZl2;LFUO)Dr_mM)D{SWB1Wi+=LC}p zqE@e~2nC;)pc(_A`;suJ==+$hp<~uaDIRJq8&`&_7njCP5BnX>5Q2^VbchUE*wolo z0Dk?~f9?6_pWjFDy6aHC<>MMkiP<=tJAsFp%*JHQ-j-dRu@4T4g;-h^SZGBMfZj-t z(t**GWq3Cu4U)x(P->?{lTfYTl}7K1;2vTT_uGYoA;S1bzWM&QtgNp3P@UrDcc;11 zSm=}?KRhXMZ)Oc&&bgMKxkzD#53PcTD9}ZOATFtEPE1Z6iy;6aU59}%BwUQIIij+( z)nXtzpa3JK?8^$pJHXs<dXvT`8N^VUPB;V|9tRXk4M65f9X1gv-};ufp1$Vv@BjYq zIoN{l_-Ehaf0;5bZ}wX|*^H#j5_hLL+kt!wjmT1|5=~TK3_hO#OI>))4NEt@VyO!d zpo^G9Q3Ve%QyASJ^@w4yc%iK%UPC1eBq%Nrg9blVUrC+NwE!N7w~~+37j5x(h#MPM ze*3q7>&lfY;lwL$+upV9-L$=%w|4V%W_@PL)+Z)wXF)2rm2FQ^YfB{;A{AJQI*Et@ zU5DfA@z{C{LEWjV_d@Q^aIp|zyl_~`7IcoCc5UxzH=&H!VLX(=JhtHr?DY{li7P8B z_rLkgpLz6ATz}iQ9|%+r#4w9i6_p6x%H~eQ2oXot;&P_|V!-vMCpVm)Orna2s<?8E zv<5E_v|~YW218yzq+!+yMt@Mla<hf|+G5Os(QK#va7!cZx5nR~%!R@ri+C1?=zrfq zsF89d^0dmAx$=hU#e<6bb!~P5`qJQ+7TA>9dTmG_`#Twrq-jRRi}%A~i=OF%9u^|z zLN>!TRIpLENTX=bXfifn!_)wgVfaj$wc~YqwnUs9<}V2eRau(o+Nuw3lckCJ6qr%` z$CrR%HosL`?rMI8s(`H*va!5|)=2XrsL5csB^Tu(hS(o$?Sm{_(XuB)v$mLIiSTkL z_NzI^yi_U0%f>((fgII&pwap$Z9>^Vw{UJC4u-fd%En}6Y&FqTRs|acRVq_@lw)x4 zAN$CW2UT@Mn`}*%#q^p=98BbBtVmI%M*J<Dyy|ZYv#I&#(mW3^26PdshyhW{U^X;D z^}$YjuZF(>ir|q{Bli||o|E8+8Wn?9c>!!RP#(am4mEZM)S`jrA|O=|ZR|0Jkd&2G zfVx?bCNhse#`%^taHtX`4|}&Sv52$~*NxJGDoN+_qWKdeoP9Drp{!sfTOv1{ti_Kq z)d{VXP#ywkIl^RM(s&zfQx;a2?#!&(Z9B3l<`#RLCHwtrr?gcQJ3huk^x_M{$bOp{ zK;MJC8GWKBDSI=U_ceJ{S)TZ?L=42qAzeOfgDOqvAb!;{6*r{|4c{VBVEb`*Yx7=4 z2ct1xgiT^1Z4lPLvuc!S8N`dj%R-cW{B$;Y7M#(`l!}v_^_=ec@DvFF0SH=S^2MXu zP_;%Eg@I_quS&!mrz8i6+(k?w#De0X8K;r=s?@HcEwsWGAu6$~P`dm@&1l(j4hqR- z#MXFd+5ThiZ@`Db`isxzc4c!un~R9_nO8RZ?VW6upkj3^qhftEPND(`LDpBp`br3) zWT2B+$oM{*Mz!dw)53gyL5&>z!E&Tpw?Jh|L2`~Y0_6gpC8L3C7|rUbwx_@yL)bRz zIHc5}2jh&vkNLitDTUEi-~qBvvNN^anUU<1T)EnBY$vmQN`fvRXD&@tL}JtsWU2Fs z6bMm$LO`)%pqVtH(9rhb&u)V#3J1+l2cWfAizR>I!oh9xIb=jY+!r081ga&Vc7v3R zeadd{QugM$!UP;<%q`*s+tYk?E9Fdz?9J@rmHBj@ow>EU=ZPUaCaMme*<^Q?XUQN? z&3&@%-R$VaQm1Px+6532RhO5vi)~U5D?-hJWG`a4L$u66#BoFp9oTR~SAwg4b9|7I zACx-qwQhqkXQt#ao@S$Yn+2(g0iP$b7g0oV#@0@L?&54V&!}T-XLB0|Tqt8lDu*4C zDK@LA88DsM)$Qbw*UEA@z8<@%0#0HO2|y?jvSP8<Xq;&uj*&nl8d^}*{21!Yjn=`7 zAylda%!>4l;6!0IOF8)sz3sCR^J6GMaLTqlO?xv^#4@jL&3AVDz9%6mSpgHuD3&tn zq@oB_Xhsfs6)j6HGk0ayV|zEpXn@3EM%$g0c}ZQ=Nms^IMMW3AgIoZgX^EyJ!}~%T zozwV^7;>(<<!vdpfHstv%vwu<k@I<mKqPma&U#D9slQZ(DFOhId9p8`-@9;mZf0gO z-OF1$DLKo(qVpq&#~LhO*Hm?x-s=UU<=T`sn{j(Lm1*0GNkmXTU$V9w)>eIAu>=4B z1WrjrK~#dHG0RJO;z;ySQVMjPh6b-!j)eP#DAiA)kzAz^%c}+AkVaSDWwYQ`SflQi zg|wWrKs3{`w+xCvEahZ{Iz64)ytls39^EDXw>FcyoiC6UDtFm!Dljy()mMg8FVq5i zt4I)847^ZOQsyj~RwdYuX_A6t<XsFgRDuMgs+Oo|9C77q$9D-R8@y8LEv3_~pnNTE zwFZ7<<Mz}P21OTeWUbqoS~AeMH%phV&S!lVV&2=uEA!2rzU2zlZ^FDOsHD{10f3>o zvt;YO#ol#i3pus7EtPX)mN7FC@ricW*~_xo+)<4&Q8XxO8BMS>!OBtyT4wx2t24)% z5hlF-Zp0T5D_hn^pA}j*Mo9z*;L~WTX4a?dRP1@Od1BwwN7|ZMb-T?P7e2Ik=(V^K zl#xl^$H6+QbyTbz5FVn=4stg>G7=QOzj>-|WrmP48Vv-IsW~GjGSpFQ-i}aHje#dH zAeKZ!&AEUe5B_T~pQCUkC_)%)n%RJAyPJ0aznYlwJfb#T3FQf7)1BJ>0FM685G}H6 z8C6X_-P8}`j9SXBs55CfRM`f+tjZy_6coecF7f8(f&(=a%^DGf4fGv!s%>v|k%>(C zK;^M=y{jcgbqKWwU}&ZTo1&mq3kvDnFwA$r0N=T>l4b-d7*h@jIe2>3KJ7ZpsbUrG zcd9RsY#oqQ)tk#IEt1WXH%YNUYmgG?4E@3TGrMt`HNXX^z}LvwH=kAZ+TaZi3v(8| z8-!KE;iiYJfxZTS#TPoes&!x1cnAK!5U5$C5B#deki!eWA_u?TdPULPnXl8z*{g?k zBu!~U8CzUHF2LyHf_u|9ziESPYr(>5&rb8?(rlpCHXRH@NlWTnf+Y-Rh-GXfq$FEI zXjqk|oJC60QjP$=+U$&2-Q<X2z@f{@+t&T`6+2cB6EV)zFe)YtgTpW&GcxqjH1wOq z2&XE|B+&6xnIY=1S^;bQzSX->#^jkgGL8epT870{Q%0Z2%4VRXZAYmNv5j!?RAT_N zY$)ql?UWf<6}9AGC510qHnf}_LZ2Gfs76sfInMKkR(X^bT4@KaEV%(Htlt+KRexK| zOA97Z+sjLmL{tcnHK3|SyuoYr2%@=H@gW%AZ8Q)tg~lPAW$`J+Y}-%(u8C+Hevf@{ z(>|I<K>^x016qqwQ9{isXG59C>8)OVXR9E%n3#%I88wh!2OA0wqOFIim~-(FlEpW) zb2h3ap~dylWg$aK<-<(Ja{{X^vzkN7K1tO9A|<QjP$^$T_}B)<H@8@k0CF@gqM3_D z!_=}<DJ3BrK#1ba9B5&+EIwIQIS8w!MJfX|tpYWQK{H!C8fCE3bwWmIUPGHQTMGv* zrEbe@5I@J*;y%KawSWq;0KbAmurRLWu+=y#09fTd45A!B`a0sHo{ic?-VDcJjaq<I joZ$Fr9N~E!R{4Jb5W&x(7T-C~00000NkvXXu0mjflH)|} literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/mix.png b/release/datafiles/brushicons/mix.png new file mode 100644 index 0000000000000000000000000000000000000000..d871d241769c93e5451565ddf4c91902e2b27804 GIT binary patch literal 10448 zcmV;>C@<HEP)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NT?1QDc43!(r3AOJ~3K~#9!?R;shW!Y8U_pQCp9o~C2S62@n+CA9VZZPh)+XLZ8 z6bz9}EQZKPKole9NWpjjJSK`lB$J>>#1Mi61QHS?ASB^eP>5n6CJHfz1n}H#W7BTB zs;j!H-f)L=_Fi9p?7h#uud3X(gNcIV`(C|Q@4oxa-DmB!*YK@xE#UKg+;Qif_uO;u z&Ce6STi*KioD%^vqgjlxi!pZHJKp}b@}lti?|;KE^f@PY&+hKI3#(~d?o1E9_isPv zxBti0!^4B{;6o33&YoS6T=zfYBe$KteE!VA$=!X2-}@!6e(!t#d%SXO`Nxke4wjj; zS3P*SA3_KrP8_hD@^YEp@s4+ftLfS6Axo00^G|;IiRG!2lWAwl{`i&iN6WdSuzU7? z0uUgb+r2yt{`kd}G+Fj{T-iS(h(d(iC6WMh77bUPI`x51pS|n69(?{VnFvDIJ$)Z3 zKmbnd>_2hs!u7=|kcUV4k;j%P<NWE4x83_yM1X-JNYF?SfgzAa8Z1V+#EeWcLIz~O z0EYlTWPpE8+ZD$D&F4GMde*bdxLhu8+`ES!dg!ZO_0^J$q*(}|Y}~K^`hWVJ_rABj z==HDvenAAyjK)c)otfrSoj$cXcY5(Rzx5XYga;pd$g{g#(z(5h&%EtV&z-)0_T<5I zvM{Z`>?MEeJ@5Ii{HuTcTOWCBMRMBl+h22KZ#T~8aX#-L9WM7iefj?BY!=q>9susz zn_j*A<P)oPK7DFp%KZ=?{q%F>a49<6+yM(%=afJ3r;FuEcR%|XtKlwJ4iN&v?%De( z0GM{GSv<-)e(<ro{`k?^$-U`x!XnbJd-h&H0tlU)A3XZxJ;`HsJ@!QZ*roODXD3}p z-geKcXa*Vq0Y-xn3`C%XU;!4R!%d<f07khJq#2M22sAmqP!DeZ@P;?OX?JJ0Y*P84 z(P$QoWU%n=cmLSMix+Qwp&$6cAIhE~z*R0w6y-D;0a}1rAQ?h1TKRJ3#PaWc|3BKk zP+Tk)K)HJW;MN1g>Aiz9C-?Vu`bqQ{7>pKZfI|HDzwp`*{ppwg{LlaEkA3u`0OHX1 z09;!4I#?tZcjw{sUOc&bbmzH?A-IK*vt=^|Bk4{E%tOzxTK3=aE#DeK`1^nFoqW!V zzA?LUE;mI0Fz$4VXP<xK<c{C{tlc{<%;vK=nOGM?Ifmw*WuLlq_hNk_n3-AVVwj(L zuDe$~k%N%?-gJLHIT+S{>8bVOPpq!(56W(oI}VQ~PhLCy_>;FS*HgL5!(CCxkl-dt zG<cE-BxO&40Y^tVJi;TNBE#(Dsk0Z(o}5iX7mb#TR!*R~M|pw_mL*CFG|Bru3^N3J z%JIp=+m8AZu1F&<t;x&tS$y^#v%Bw{PrDFfxtjB~`@R|=L6vVb0ET?m=|9_Fojh2d z1Srx#!Dt47BrOzylD4-K&z_$0+&zDdAX%S<fbwEAt!lpmjUvp7StX5xU}i>Il)Pv% zXsE)bQN>n6l+grOF^mRfzz7o@A}Kj!!vA*<-tyTqXU?2HeFngKy}EYo+G4TzJT7$q zbD#U#*M3uzY!g1sf|*$e;o7z9Kl)F8<moQ-*0;Ugvr8&xmjKPm#?a~`l#5x2U3|+A z{opMw^rkoe08~E8F0pJZ%T6-T5Q32wtQZnIxwC%s6QBO^pZK|BW+bH~mCe&=M#Q!v zYGU45juA0p5`AyJK6~om*>~8Bzw`&c<9mPf*oB~t7L>)1PA~*NwR?E>)c)?gp9Bvv z1Oi4!3>lsm@A{E<z3r_vcrnk}$A?@lx#S*fb?(Ha^QZr88V;fCv<%BMhsiy;=RD-p zzw2H9xLzpdoINjB!xNX6pT4-da&5I*r@-aj?AqSWRi!k@lG9x%+mWT5Q_?V?@6`|e z_r3o00OGa7{$rn7UAZ<?34vYIvo9=Pc+X;I#_80$oZaAVE|rLZ@?}3;uA_TK()n}e z35JE;d$34e#3Yv#*_*Dfm;2YQt;}p^7R<`gl?(Kovt7P^W`DVta}6@S`fI)>%+EXz zzP)RhhSjWFbX@ek?;oXp@ZFsl0x5^*KF2H9PhUSe*$-Vk*`%a!;@p>jn+pM$#MMr> z?BW2aPg<>g-TUs$V&rl?yLxc)`q5rLOoZyvi<OS9Opp*nm|UbBaLHXD{AiIr{lwB3 z&Yqo{?JfJ=>=BSz7FG2aDV#X_Tx@v|3e&Ei#8t<EHSFUsgvTyTuk4?5oDxELvD%3& z=Pc}=yI)fMl?YR`eir)}2MGdG?yel2ee&S^m3<s7^L%PC6vYR`@!*HuGxyPm&8ieF zb#dt803hY=(!u$I)u|%a<;tJDKJ<fk(PC_W$Ficc_o*&)^xEFVVH*4FcJbiCvfl&1 zvTQJAzrLR@UQ5>wQlB)NSPTTo3-^8vD8SI}7}Uwx;m%}nwB9@HPeRqRupC7*0E87g z5klD8iDyquc-y_Nsxb_#gfk`NYF|lOu><uUMlVv{+YAV1j8KW-L3$CLvsyPwAc~KW z07F$i5tK~DAHn2+2`&hfs#y{Rx*&H#5+RoZk{pslpaY;o)m(^zNr2>XL6Eyc@S^LK zmp5q3Xp8rnpcFw6Z4F<1eExoReB68QeJ_0B3-7t_zO!e}Y@Ss;1uVgH{btv$UHj-q zKk`R^^oNf=`sf#CL3?|9uYK(|-FfF-?nM>QtR2Tl2`#$f4UsgP8!OJ41|oLdzx(B1 z{=MIO-{-Cze9dcK^THQC;I8Iss@=R{$>b(%;~3Z9xTKPBY?jp)YG&-h!B712pZk+f zKK@x2^oBRS8D$|iEv3CLwmy!nrr6nNPGbyi1~V98CCD_yAQJOwZ^n~*hcQ5kwD`L3 z{@LZSzvY5rPD5M7CaKw44Rvfm+ncAI*~+NB`NB+-F2xQ;1;PSJlu*VDUC2fYA=h*Z z_U?cBcdi`V^)o;H(~msz$c+n1IpdZaT(V0xXG4tE(Jarpbud3MKQz<MbY+IF^AHe7 z3#i)#(u%@?V0O|OAdsH>VOYKH+g=yr<fs0{Pk!=~pWK#E+B!XTX(?@tbqod~8ZD5J znRj70F}rT&JF}%xW(btr1bQ%u!OTGeP*9HyKr{eK0EwJaP6-V1{yV?xyC>b`EpMsu zXn4_=Kj^L@d7r%R{b=pWWxl#U94ylQVLDjkb??iSd-jxMT+O<pE*_oO+wWo@m<4xH zAZTLAf{j$!>*70VKI2(ZQb>u1%iY7}UOh)r_WY`^`s&9YfBf?0%kkR&An5Y7w11dZ zgC8z(QP&b9sbE1+2nqquJh#02j-%Z<=TjJMI;9zd)$B0@15C;h=E@|C<0`^0>Cs{} zNhz+@A?I9=q}<(P`sQ!`mf!lV_wddad|d^S#_&N<`?-9TFzwdS^4{#=)cn9qvkqOy zXWq3N18zS*i(QC;F)|oKup*`6&`B6vKvsbG<kbs{ex7ody|d=Ht(q><thi}_4SbMq z4tG^40*Ka6!qC}ZOmM8$>U)0ZWBV3(@yS&PcK0)PcXq;T5+)NjvjAC(MF#H(T-iT2 z<hWYzChrK4E~+ILq*T5}6p%)&39%saF}5^U3&b*+q~tD=kX(|PvMxO}ki52^%=oN3 zrnjA&OeeOx8>Mcs+5y7V!_z`YsVkaA%VN!#j5XM10p+CFq7HzNoFqiRSwayK@M1Sr zf>sx(lF5}&S9CzDl^ONHkHa7J$z*SL?|j$A^QTXiov0xpML1RLfehxBi>)iaG%C78 zsk#OMaDWg+2u_e9B+nA$0a>6x!d*r>lwqJ9tWIX{7X9ven1Lj77yaC+{VwqCXUt>Z z?kol?r^Lt%8j$O$F*1v!jFA#3NcD|e4RlZecuO?pZUaN-p{Sa{1rC`)cxrJ*3X5SU zdnBx0P1X;(cx4Upse{4DJI+nJj^|HL=CcsYx+td+86b0kF-W&4WT}Y9i?@;-WpM)O zMX|CQ5OX$nmMwD+SB}mA;i%t{%oWHYV3R;*!Q4gSXz2h~z0>gclYNZbnZ*-3VKxcp zPItjLodh;OCzklN>{1QoOYmvcy-B2ya>&j}2q}du8}h^zkJh^qvxjDtT{Ngf(<V6q z$vnG^-h;p}3?vT@)8%L}@KcvUAm`IyW_$Bs!3xeTf^?D&r%07=pj<^rS%hpkOkHr< zkSCI*6kyF#Niwm<$tL%v$zEc26l>&0dCrF30pchd&~<_2Y#M@D1e~Zju0+BqBMYR2 zmM+v7aXm~|!?YTRk`k(IQay;2$sh{FHk+Jgl29@s6(v>8y&P`n`%JTb5Wv{<S!}7K z;4MZ4i^h{cHAn!Q%{G;-F6TnBmbG}jNfG8X>o5ZDPGdvZ3@W!&6juafh$yg}QE<WN zK4!Ooyn=|;m;xM~OVfKm1<JGXMg<u{g{@1j2GuJS+g4z}Vqp!E;DpIanpO;v3sOy> zipwZMu5p{-a-m>0Laovi)qz|D<dBLLEx)ATauDzlQ~==e7M|94M|F>MiwN<Hk1syH z(3$Hd_U_`&d}lJ5%x3eh>rg}QVYOPX*Q=wWqg<*Uf1wNNy6(j<e(?D(c){JzzB|NL zaTH<ooYfSNG&4yb|M<s0^uZ6j|NZap`~C~Ops)QKuX*5s2fEm4L?E{zyW^STnBfBm zA<)?O{U7}P@BiAb{l`Dof?|vhJn+D)U;VWjV^@tZ<|d`z&hU?C_Qz9u(#-bv_uu`` ze(dPz=<{39*|TR~{pwfWb=NZsX0#PeZ@p+c=->MK8P`;zQy|1}>EgwI_47af)KgD= zP7C_J@B6;_e7Bj;8#DY(CcjCdx24q3zLKb78(`SpOins|;?Y0;$)Ebg&$=L+OlK)2 zcTb+Skp24U?q2G3u3XA@<(XW5Y%j~@r}7_{doGm%WzX4j&N;o{1^4{qPyB<uz1`1J zt$+E;Um>}xc&i&9b??Ti$QEYPLI}5zjUM9=L+ZLAhG7!dT^wfJYSOKC=SL@Z4o>b| zKXc-#-Pys{z2?PT?EdHjkA21kz3k;LKmNvBpVCd|P{(kznlU&DvkbyaMwmIFVA;%L zOfd{yH_RuCz`=r^|GYcyc;+jA_jlj-nRMv&+PuMy8ozzIH>Vx|FrBO?A$MJxPuC%6 zGD$`T%18?u^(dN~Wi!T3B*CEEed3Ax*Mq(D9q+t_4%M2_c5UeRqkzBlRpXQLfMnKp zaW$JRrjzB)^l&~s+L;~g%nx^Fi=EkGJ~^6C4ySS1g+5we{*bwchU}TdKm6ezzQux6 z3sX<~D0RO2DxY-A`Q&IeJKUKc&ALTkAK9x#%`Uj80*Qc5xR_BeZkOr}N^WLvecRh_ zTF_@&&sZpw#;*`unoXAT>Cw*YaCf>toh+mE#sv2gkBKJGTP`Y?NO!jTa(I@?VbqDe z6W{Tj-*s$3+q;u<PM+6&Uaj+LotCS#TIYW7G}OH!hQJiqM_W_5EYp1pE_H3I|G3j7 zgmp)9X34XPj%3gGJm;R5zVzXZ!`QOP8j=JYEs8~g#27H0hG^W|0ifArY1Gd2a55Qc zmL$tG36en!WosBpN-##}l9V&R1e05GWQWlWaKkrz<2QcrgC8hWXG_^r_GO=!D?eK0 z#WFAZyjuBc?W?sfdta`6vC2owe6-B{Fbt_Lx2I+^U9FZ;x0VHCcESM%GAd4yMNgKi zE>%-1_mt8b-}L4xp~GcLNuPXT?T%~vL-H-})%=E0F|Z5%(DSZNqV{Hh&~+vli3kTI znoD$&Qi<su1@~#b(LHm~Pu!!IQ(|5!xxs8Yoj&~V%ij0C|7pYEL-L%JbIz*e9l4a- z`S$i(_mtc{r<_w#O2rr`3&ml`<&M$oWLL_{j_k@_lwLVm&ZTJSRmxt8R$u=O-#{{~ z;(ZsN>W`Lrxpw!B_pI4dtAS18I$#L8dUUkDdTn*-@@hS3-FtR)T`i=wDpRSy))bp^ z7SH51r0&wS^NaO-NL`Dr*br#Qb@J57xE}JR#8@hC?#(`{<cO$6GEX_XYu)E$7>1mZ z<y3FOazo(YR?<HLkP!qjpdzYFi4~%AfDWTty7=(JFN;uf8bo8cl(JvVZUGuKv7V42 z2g^CbGcI0UKXt9&nZ=VQ`uRNEdD}b$pG^Z|Fdw{uo(a)mecv4}_maoudQv1Jy3r)i zAyaU7TFyC^f}S>@Ucp}r0_v#8M@4H35UK1k_G|A4N+|?L8nU}M>4cmCSdcPExZJ^% zx#}nGmUD#^YpP!%Y`7WWbjF(Y!b_#O!U*!MFxmkpGfS#p%GjlZ>gosXAEeb<uA@n3 z&$we21Lw04Q6QVJ9;SVoq|~kYNlmhw<VOoiliWdyjD?KGCZd95c(rJvH-LdodaD}= zR*3{d@|3yieck(X8qS`IU9@SW6a8R0$HjWO>~~xt<!CH71k(mmF9fuDy@J9PRH1MR zgknp|%H^dLt?go-KzXh9S3uH@DLZ;xyqrR?qt#A~Mw^jcpSqk&RasuVZGphN)*T9( zTM9Pr9t%tXL39-!LeZXT`#14g1*fRy5gZtgpi+-K_(%RE8STWWoe;Wnr%%kLlTAQQ zmHP8ddp0IGk`#-XsmH#eO9c)BDllBMy~#&t09wJ%i<Z$9A@->Q&6WzmCzG6V>Y~M9 zg+)~GDLcLnYjz0k0%8>xBvzhAg{a{rrKkXofC8GAjct4g0ZDZ44pt|naD8<OFkB_5 zvnN-RuD|W<<lM<FMw`zHKF5lPHRDp1*^B_(W0k%N@Wv6!D+2RTp;T5UQPn?@SrjR^ z<jgX6x~e7;O0JN77`#s|AqJ3)!Kz$}5GrEGk)Rc!s%VwsQGZ>`bX}N$<TRR#5UlX) zM8TH*{Ahh5dsqy+#R;@S%j*Y;#Py^6*roM+7H&J;b<u7=H#K6?0d7r5o7yVf<5p~6 zkT*j?=&GyninTUmaYSc}Jym9wc|ilsB#{o8%V9=m&OVS`@{~kYYIk-Svsq9ntUy+5 z2^kv`Q3W(5Yi&hNj^_?YIgsv7S}<mS2g|)xnx)*W(yUNf;MFPBYKmO2l#xC4gB`7M zpk2JuoAK<aE}GqTW-^&r7a1cQW)P%URj8_nquC>}_&ycqU1>&j=>U~wDTl#>yR~D{ zHoq`WtYQTM>E63BWKh9ucOFtucJ~a0P@*NlT#6`#1h#Jgs*9<H$U!)U9F3l`Nm!?u z6c+1wpQrAoTHR>=q?JXzLB$Z9G`X^^dN=6em7c`a{lS9GCLsn+yD*yun#ESlbXJp7 zy=zg<YL5%@D{~oLLz-l_lw;1Zy@1v8IAC7RGl^nSNYLd*gL|Tzh9yWWmM&s84beEC z#of6`#<7f9m8DvjW{$ns0=QF#!__XRlsm~%4z;*ej4#>=cEG$=y3881L%O_}x(32K zNFgQ3;Om?npv4U|K31c>9Vu3YsKpuQ{`v&BNZo~$tI;vA;`YUAsQ$86-vq0L)lH3A z)jiXYe7O`!D;Z~XU!|5aMzAGW<yhJ%VTq`=5he611t7MhztHf@aUK!>A{DASG>m~m zBPmzXl?)?OpI+)6l^svV#v-_ve6X6!5^xr2I0_57VKlY!f@Z+#hN+g5C90KG+pi0~ zj3utADT_u~3*OE)1bBI4jzPEFTMz>G>Ue9Bv<5O`;hjw!)k`!*tJUS|ii(S?nry5B zD1|oEt9$EIsY!$v452L!&Ay;=MN2WV(of4DtJ-_1@%6moO~o75@UaBN^%_pM7Q)J# zgHt2@Ra)LggV734MMkU)y-Hj3Duhu+MZkqO*wC%Q(H(&d)}?t%Qc5ils^TrdfRBq% zeOF0vjD@GFz~X3%8!^@!A!ZDm%3rDCyS2R5!p-UdP^|$7S`m6Z6Dk%5Bm7eNktN*& zY7bW1r|N2|WJ_E%k`%?daV?crwLmS*BXk3F|HXpY7aw1IeDU#@rQZ5<mmv2}oH%*n z#P06isne&<o;iE!^yyP4PwwpQ?e5MelWD0@ZI#`&SershX}MhNAM76-9A3I~@$lgA z`u_EU{rzj#t{og4{N)qS&d$#L&wbuAp7D&^FI+fv>h#X;PK*)4Ee-zhO3krq&awZD z<kp+`&?%+G(c=34^~WFo^hZDPk&k`!qv;D&`Tl|l=)#2y4?gtJmwxGsrqhYEi7Gz( zb!$k6EnKSp$P!gogr;`Ojm6UKf-YL4afy}%m9DN&ed?3H`JVTD_`@G^_y4B?+S}W^ z{r20x?8{zs|NYM`h>pg>@K!PL1{v{|O0!|H9z&dYyx{&BzaH<JE3EA8BH~z!zk2oR zfBWs<`tXN8eC5iOzYqakxNzZt2OhZRo_j9betXVd3lqnLBH-!NhT8^d%hGH=f6Vyc z7PS6bk^w&3lQrcmO@{zJ^{GGk{rCUw```b+har7o1oVz~ykp%DW9@r`J8of+pPQVI z-|Y=g-r{99&^De%m2RLeY#+n%^c50=Lddg83c;7l{x|;1@BHWAc<-NAKyP~U4~&Ep zjRdz_NaZHWvrUsZE|;w*Z&sz_hp<vvHry85Dh-Vk>+$lfl@r`D=w=F5TL-(Cr;|Qf zL16+I*Q@k1KldO0@Q*(Jf7k!S?|;J^Z`7JwcbU{)vs*a%o3vxYe&puQwxzbM5oT@$ zCLj&6;AZuuW*7xzY-DS|48g?uSLkByLMjHT>xSLwGKK~YSt#uu?vvmAohN?rm)?8j z%2S`0fTG-=UM^2}#*SA7I1;dQT&OoZE5T427f2XAgj|k^Q6c!)Q9x=`8G{;i3#1CM zq+B6dDpDpGkf7W~cd$@M3+VdgFS`HP_q_b-wdJq;@-KbtV;}om1(ZjeW9uewx@+AW z;8a#@fv#$|-^M{5iw3y$Cr~h-#&s8ynFviL!)&q+=A{HQ>2j!~bAhOx)?1FgB>usU zMG~!P5`fiup8(P-b>1Mt2l=qKJNu6B_;#26<<I`yBaeJ`F@=X;`tY_zRy8(Tq@gYP z?Tt3+xa~StTRQ&IRt9haWbWb+EEz<4wA95^X-9A~X9IhTB4lv1@^8VsjJ55rA(RbK zDOBZJ?kXf-FF1>f%k}JNJ$G4wRvvoEOJ4cPuefyS(&fvSpZ17tq_b^gZlN-`sqw6; zNi7mrl_9q(a;;@1hO{$XbTI=k^PSmh68nPx7!~N%?iw3Z#7ZYO%8Wo|f|Er$u+reb z?StHq+*(d9{Q#Bstt@3I%Zp)i4K|xiU-!Cid;HHH|HXg%Z$48D6<+evmyY!8t<Rf& z+K`GG84kj+b|KvqcxpslLr9Z2m?c7HxeG%G*(_UuvM7#<zzxNrwbW^=&yHh_g_|^G z^W$h1gl(u6?zUXd7VCMIQDZF}?tbFL$-nZIU%9t?;v*mV@GUf`%pkeN`Kc^;0LYF$ zc}i7J>hlD_V2rVH7L1%s7^{g@jCm4M+4yPfcjt#)OhpxA5Rk{>Kz4X*QYw`TEA2E5 z_b-*iN@!?UdD)DSv^YM|8kJB<T?izyGdXic&d8Pf>7`jKdv^K54?p~}m%Z%AfBc_4 z@x&9yH0Ys+9=fI9a>>17neJNmg`%S@Wmj_L(w5y~s4^iSR$?gt#gL;7q#HfPe%7sH zOk}Y#4dA>fIN?~i+-k7rcBI5j-^6G#N2W?`F4!nATZ0Lg>)Fw2#}&52VIB9nuXy<@ z=Q}%Ps7}?O#j+;H*;Ob*WlK`hYV9MwoHLG<Sx0c1G}}bPT|_L5;Gi=n*5^*Gx*$Tc zsU{)SRt_SB+NEC{8(BMZN|m>?o0K*>5}}ke&0EY_I+oakGZr|iv>QMT7l$0(13;Jc zDHOgG$NDx&DL3k{12TQZE5G8l^SAx#ul`B_TVg+yBgT}qf0Pc6vb!X#lNQUI{ib}2 z8bcdyq+he5K+#073!pD|CaV;)0VIZj77Fi5CVHt*tBL?#2_|N!)yIYb<cttXvrnrX zjZx-U%dPbo04h_bM7kp-ODWLkZaJ}%CdE3_iW*xXRU!-b<bMDC_kYj#eDBZx?9W`i zdNrK6<N1dRKU}24MLt;M<=Tg=lzm7_-r9Ot`;SV+h+}JEJ?@R|BoF4sY>+WcyLGf> zPHEleA?1|QVwsK>X|c#dR&w=&hQVup<~V9b+vKUb4e~9%*XTLQR1b`SNqyQy2O%a8 z%k^y4&xYI$LtG8hVdyrMA>7Db-(n|eKA*q*6|eYTfA9yq^Z8$YJSgNXqG;YCQ79YN z27Q!0@h<k!N=K&ePLKAcM@APAf+o?81T>l0=~I)vooGfHcjw{6ZWm&;(jk<NTUez! z<M?2%I#p-OL^U&0PACIiP6IFu-POZ0%k{j}U$cjtJ8ToLaRV-}g%*$&Ou14RZise9 zufQAgu*ME<L>_F)^AhNk%8)2Bqfkug#8_h#q?FY6e#C4>t4)54p-dj(bYd}B$-;~b zp|l!k3kE88CT_(+Y^!uf@~)i1A;n=}&Xtwl=J;&)xwR0g0eBdxTapVFEc(doADJ!K zbf#ep#41g*Rp1+)bu05H%V?M|05E#6Y|KV41?TK44e3M5%e9a6&-u)D=P?A5+?j>* z=ce;npdpZ5XJwKdM+1j(DVsGpEGv|~S`V|s#a{MUVxRReOF3@lfkB&Uv<RT0kxq zsR9Tk<j9CDHh?##?OSEk>h^&R?_dk$@Fww*cq}V~QMtB8ffS;AU1}lHkw)ZPxR*w% zPh79Fu}-xqZQ`ujR5~Wxl%6dRA&c(CcUVfu8QE*OxO5J%kr{D|9CPcGaBQ-yrq>N| z+vsgDi8|^>V}Ri;A*?J2ZON;$A_T~oL&yM(rKuE+p0HU#<xVs@(Q2*rP<TDpcdY;b z2ti3iK~%LcOP8POLofo9iCs9`ojDalFaXnu&1M$NNM*%-n0hX$Xjt{Lbw3jfg2Pgd zwUL!u`Os$tZ#2eWYMcQX7#&*#sZF+^#wuWIa;c80N~}?1TVUVPT2yvd87~EGn1#kV z!VYZI0F?}*j4gCEii|f-V4u7n6bomX4909QLzaew$_^EBM#>!NlsTi3g-X@GQLeYo z*7ipWtj1D8eTtOlNXLdrQ@S%oWl?kKg_)&e!>QPa3L>|#d@tma4Kt|CtWYJ<sWNzq z6Rg{tArwBsAQ~LR(DP`4Pt*VflSwz5p9t20=t7w9%)1z^3=Dx4N`y8L%uQK$qY2%N zUyVs*aXp(ORw8N8Z^YfbwPv>{j9X4kRY+Bk_0){9dmD4*sLcmzD##6TR<AV9=`3fj zY#Q8i8&s0qv#Ts<$jD#_1klA0Vju!;0H?PYB^z9UqO&&tX!Gyb!D|7|F{DpI2vHh) zz$;&T<GmWSt7?n9vPGKDEySeSO^VvG<Rh>p(-?BA(jg^SyEf~rt-@L{5;@29Fm;vC z+E&AC$P?7D7iGku1L$Hpv9p?VMp_8i+X;K~5JK%foJ5u;i4sXxV_$fb#r18hc6qWM zDKpzxrlLeSM~vXoRxf08`0Ws&nW1KTD%{aTOK#)+b$$U_{{VeMhC?NM3xfF==vCm$ zGlv{g?nFqo8YX?7)iDCxY;70ZJxwPDAVv!T)2>XUV2D;G1k@0ja>qy%sy=?q^u|FH zm4jB`BWWuNjfK2dvC}P9e&c=-<H+0N(Ge@1u<AuwfP>iy7~wu<?2Uq5WmMcC=>otZ zcSD*;0aWt18fGPm5iEODU2kLK0+O<0vCiw{1kLi0{BV)WIL&EiyL0OTMMSgN)Veqh z&nnPcolVzR-#0nATEML$j?LZ!TWq*ZS3)^=qvIpC{2;KIZ_{!jrx#?H=AswdSvmaT z=;#}74&soyqkirlK)Q!@nr2yHh_<-jTdZE;p)B}%gb}%1`}M<A0<8HgoZgFFG*FWm zfIx;CAsdhP8f|CVw=Sm>h|V$Q9{m{WV8)t2Y#p<PxS+A$t3HjczOeaFr>GRjyx_$p zh<C}wA$RVvP!apor4(Hz(q-OSGD;U(VH<8td36EOro1N4$c>k~9(cIOF*=DD+~tdP zotM-_n{+Jw+0ocV8zGmH_l-)jbzkG?oRROyP0rPZFpW#`F_PTsUh=VB2tux41A@$> zxfg`JU_2FSmxpD)yBKC=N3zEuPudKVmfu0GPsKGti5er)vNxsIi!RSzSFm2|aFOb? zZQ~>|SUF$VorT?bD6QkOshv3yCzFbHcU?hZuyJrD+;@*?eu^W>6_r@tEYN7RIHJ9y z1^3DtW#ensc)(E++v3dKDU>xJdq~bQMiQW$YVNp^E^8iKiOeiBdB&y@jNOfG&Sm4X zw)UU4VTHh3hA$&!t&>|*g2R|5DU@n$7efq<AVD<Mg25uFt@Nu>cPrJT-g51=shw_> zsxso7J|gxm_BodERz@GJ8$v8Y!js27O|k-stgs$tLylwf9@{iNFHJ!;r7j%+YzTOx z+E<fNy6*f~PF>oT>bY^xTswd=(T+!}jQ!Ca(b}}VqCwH>XoBg4^JxfHk`+d;GoVJr zMO~_I@de<mA$8muZRWCWYA>poaG_rdxg0T=t9-I>u4`05QmxEfVic!S+zj2RD`6d( zRQfnt7Y{dm+M9}fi7HA96V-CYQG)c^2vzvprFyIADu88{<;<L<P{qRA?tRtB_s7<p z@D?#|Ah8=V)EcSk7-eHSK?B@)EG`|(Lz1<6PV2<b_B^6-x)SRPq)~TTQJEVMXDhNB zGpd$+mKbU?&S*^8ZJaCEfUSndRbdx7#4!csW^xw*Z|8~{Q8XWGR*fmXJx;IOupg^V z=S@MI+eN-{92DBvS&lsbn`XKSJ~fhgt4kJs`v_}d(}#y@ti~3B+SH|%t+xCR6|)C7 zf$xY_RKHVwdDPee*>-nySrwTWF}6`s8lg3U74#YVgSRrfW5gH9xh1c$Gj(I^N1s*q zx^y+x1KTvWbc3jAIE(4gR{LM8W!C0j$Tqd!7Voh3+iW@tD#WnK-^#Xl)W)xmy`p1{ zpe(73EC$&Q?Upn#4rLtUg0a4^smpRqms>pGtsj(QLs~KTEh=nL)@TE*wdrgU_LiZu z_S0_8km}e-*50wLQPE9l>RA*<E#0J`8k?ONo14UD#>jZg>jbk_DKB<R!gg2F*r~i} zHRo|!$A}oWUYZg8RtquInrtc2Bpr+GSsP@<?GkEjEE>TA=!V>o+UU!uTopGcL)Dsr z!nhr^*4xHiqYhEnum~L^n(3`mrdp#B&n^yNlZuS+?yXo4<4m?2qI_w4IQgbkp0$M* z<AJM79_ckB)kckV(`L|B(}Gqts)x8HNj2+1yQ3zbns#wJ<rsr9AZkoHeM7)3WBxQ| zuI1gU+4j-k!$)?9MuU0`Zo&=Uwdt#=^)74?6(t|Tcdww38VgEeDA1+=z?zIII$j#z zw}I9sJdN#z#T<D}_Kuyi4Gpf2dJw@_M;>a+1-A);+*F%uC$Pp@#>XU8?^$)2rMNZy zaGQMBJj2F*jWC)vIo*cOa)V(Sv(s|JWjy7^Y@oJasv#?dSw@&P!fKt?R-*@P3bdsn zFygRP#t|DU-KKWb=C!c|)lh1VDfPJA5#raD?coiCD<6X-;#jSO+5`*Sls{T$S{=h* z)kxc+X@i!=0A=fJ)I54b6}PO>7$8+AxcxG1!T8#&^8Ww=6ii0tIH(E$0000<MNUMn GLSTYYrms){ literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/multiply.png b/release/datafiles/brushicons/multiply.png new file mode 100644 index 0000000000000000000000000000000000000000..2dd32463627fa2903c91da45b22eea150f135cd7 GIT binary patch literal 10039 zcmV-7C&<`|P)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NT?1QDc43!(r3AOJ~3K~#9!?R{IYtyxvx_l-IKwbovH?{nFw`!wAxLSI0jmDo); zATf!=TNQ?il0X!zlu9&}Jm3u#1>%F{C6`K-m#TyZDIq2%@lvIEF;77gL8G7%1);eK zHcg-IbNcMFFYETtIYu7Fob&(pKD!%GOvNhJq0c#coxRtZYs_)|#y1AQ=lXcY?YG}` z*WEWiPXKTHp*Q862#5$pVvJpkvFqOarXTii3g7kJ-_!S-oRg|%Rn@#&Emy1M@zITY z@455ZwS&XM!*Krt_iN6Y)nKOf@sEDs#*M2-M+b|e8`<pZzU~$8e)qfMwf*Ivd}MLB z%%oi2xqj=p+#w*SnrO}`<u||iE#Z3l;&q?R%+#)4y>jhFzq1u$gsNS<czHUTn_1Z2 zyO#hAW|r1BH0!k+{j{6hdHZd<=k^RnLxicCkpyU_3W%Kl^ZkqYlemB0Phc>F?F;vi z1{i_VAI0fjoa_)hI?f+?WSKH<xzO>}yT6(U5WonM6cR*W2&9k#iP6-I8JQx4i6H|5 zC=39M4A9T&x<dQg*4F%)&wQo`m&@hpyL;e)2fq4izShiyq(}(CFYdqp#&5jqUB6vk z>D8}(O-jAytg5QH-)z?F<#KU+>C(9uJpbN5dfx{Cg!}J*K(nf;nO(j5*kh0V+2P^- z;_$|5b)=eK^UdG(&UgL~e%051>qj10k?aERy7h_aBuruqT}NO(-+9)vpF5q+!aCjs zK-D(ugHK=C@00D!1EFNN<IcMYs998~r~;ySqpDY)-1G@wa`!EFJmZUU&KtsjXsQN+ z3WGsm@hI)R{}a>gbLr9rG4s3IyBjbANXwh!$<7^=nAIM6Z1c$D>)ZAwT}R$}*Vj-4 z6aoea1wt?off9lQNQ?><Ga3wl&{PRh1jqyo6jOY@9vpx1J>UC%+w*OM5#<+!LXjXO zgM^>?nV-6H<;vMF^!-2ZgIO~SQ1h21Kp`O%0;C{FpfLDrh9Ds<mq$PG<3Blmp}1Hq z0RQv=z|jN5@zKHY(f($$0w_`qz$hZG{pN3c-hB`L!Y}-X4?p}cfY@&~0Mu-~vBO1D z<MviKzY~{>qiaum+F(KnQG@~pl2Do<X_6rQX7k$DerpKfNB+fI`0N+HDy!w}ABq4> zXlb3-SEpURZEtdMx0`e!L=g!hBx&Y~_U!rgxga7Up^IVb{Bu;b=!q!^Q_cNx>W@;= z8^`(DjdZ-qrW$A@VmIB{y|8!bw#j5>YW`5QXvi>wiqVV$O=eU}s!EcY*K51h<NA^8 z>`b0@=ic7#x!E+3(x)U85us32!}i6yp#<xRKr@AAO-oV@Ax<xJvx^dUGbT^o$RB@n z`N-qzKIwcWgaPGHy!D>11xV2R4+;P?-7K%gZZ2_~t_h$)C<61l3ocMncII*K!ZfO8 zS3LlLm}UqJoNQep02lzO83_W}AOgTNyRxa_Xqk>z8qL%-859&@Q)uNij3yKV#2ur+ zG9ZK)6y|pb6T|;^51#q##fuj&T(}5ey<Y9_?=KdM&*6pcea>@U{p#0{EEeZiLXjXM z5<=MDzwvMW^}l?&7y6+eev@W3_lL#$-S9~%k08bHV;A4}gFkS_3w_@kz8~hl{FaJ^ zv)p75zz;<UL4+ck_41KVed--=f5!<ol2S7B%d_T2thgdV%~Z{DQ3liXdUbrX58w@N z`0juEZ-4s43&930@WYTw5YVHe!=uCfzF&(#D5SgfK*46S{;?nbiMPD@P5y&YL!YXu znwpxand)k_eBz16o_PFItJN`JG@83kr9m}YPAT>MPyXb;Dle3C&YG92{;{jePhDAE z+h48LX}Me;9_}CPKdG9_E0<_*YVey;gPLvn&FjDGy8y)fqs@muxw^LB7YTtO*!E<- zGd<p&<*t)p^*-G~Xl6F;rXfVl8D_U!x`iO0{lZuE$;?1{XrpP;bOb$~b#{4gx_7SY zqJ$t64+lob#l6eByL+?Q%(Y@NorbN8&xMX}4VE`Ktx{U2WQ%o9*=AD_p}QVZc6Rr6 zw$I0|LwReOS=hbwCE)Nv05oqjuVG0Is_1)5$)*zqVK<rW>|EI1-tD?6-LIi|>8O?o z5(Xp0)CkKkb-AcwwaHg+Sctsi*7<zCJD=~y*qNE;Y_y`sNaBAtD^g^61yghJngL1W zvFq{1Y6oH0Ag(5ERIWBzHEdtH*UUh)LzyMh9@hKErNlTn7pE5v7C2t!t*OM|ito8) zG5oN7@g54R1-nGE<z(7}28nTcA$B|NF_$ZS;zqyewTlvC{W%gq*xtLxKv?zKehlk1 z_eAKX7h^XEKtDE^vfenzSN7BXVcH~{O(X__<mJ1+4m3bqkpQTv<(1}D2wP#Y1M|ot zbW;=oK#2Q^5W>zp?wy}Rg90EFCQ1+#ip9CaIRH~7#oWn*G<DTAC`|yU>cLSyTC5`c z!T?fTbn4C#{<H8HVFn0_@)<!hF(F}qm;z!@gMn^Q9)LhKm?~jrgsCZDW(v1nDgY|1 zxC^5}%-p8cwMP{ObzP^azd=1lJ-oUZm<Lv(p5Y6R&ppnz$K7||^MV(=;I4b_*}Hgg zc-D#)(39u#hwSg~Km72A{`imI_tB4j^z(C|ot>Rmzxp+|-+qUxt3tKAlB3ofzPR?2 znKWw{^WaPY5xeeJe(9Iq^Pb=T?3IJBeB~=&@PhkPn{O+A^VE?^4u@!Y{plll!7&`G z9#lvk9Ur{o=imORM<0Fq1I2speeQa_sq#4EgRm7h;HlI2?`ob9=aC@Cmy1omhGB7h z@bzE+RU#5X{Q0;4;%2is`#?GMHn_x_PeVI#py54Db+um6Y`I#%H0NZ1`<#=Kgl456 z<xF?T<Ujvs-+9~Z&wSh4e(s|m`N-)5rJQl*1$%YLlKxfckU-YdZ`P`Ie0&42e!T`Q ztCkxCDReIkL6fKh6hau$r?gqGzwO(;eKMK6_22)yPkiDNV+o~^fXmTRLXGE$K|n+y z1EHp>eZM(8+BenJ^0*vZEKtmk?h(Rk8h{3Og@i(p36iQgr4&NwH=FPH&VM@TCU1OW z$w$Kr|Hl2Q)+gO0-E8!Dt;=P;e$XE-(!o(WT;%memn+R#Q?li9xmX-8mdD43H~M}} z_tGQ{gZ7kyM@p0^&e&iE8YyJh+M3VjyQmda*8DYJ{k4xi`smfGSL6OcZ?LQT>EI}> zdOccX*8tCvOh6-Hq){;M*3+=)g6(XnkX;0gLd~QYD6Tm<Qz)5M!kR0$Yv^=q+Qm*J z=A4U3nyQM4eapAJ_P2iPoxJ_|f4=}pEqyRp{n~#wgK2NbnwFZ5s0hJA<mC$!3AnHm zLlDmgOM$>*kyUEy={CSimu{QQx4STjlTPSWKc%=XQpCeFzzRN?4#r(nie^ylVaal@ zITOekRDANvisbd}6a=?koXn=73yjg!&r+*V36a2s3ztLew&wFLPTcg2R*MVLN>UNw zAdRsU#0C?!a%B)TD~C&_*({r9&qLLtH;$B$qveX^trx<%?bt<`O+`YSZEXh$=g(h+ zgh@AXltndrf>(T|J6#9m%wo+t0K!b^_6en@BJTODq<}DmX+v=gYDyyj+w?}*qgVOq zC-b@8*%#ljHx2R9rE^mJwcooDo>K{E0#V8C>j+mzi)zMFF^~p80m5j6K?%}|I0R7C zq7pE7&@dnv5GUJY7rL3qbd~w=pXW)ZSN9LPz-QgL6$7_tF^F4<kQo#p7poC68%YyJ znt=xMKS=e{q9o1M41}(g&1bosjEvnbB}kZo0gzh7%BHs~*VZ7PJnV&h#-(Z3@s<md ztyu^nT{NW-86a~3bg2>z*>Mh<=dd(~Xh1)pD;7W?&^?PM>kM&n4xq#>vH*^Nnu!_6 z?6n1n<D~*zZIpsXpV-96`7G|v!)y{RUFd>vIti?RPW1fMZ>gm6o_v<KHY*O8WH1IY z5M-Eu!Z7pdwFu7CAVtY2W=g<JG^+`90|I^DlRP|1SEIzhPd*+3xit+Uva=N=h~wNw zkV;aaw35Y>psBf#%;EAdkpgQ(zzcQ9+YM$W#*!zCsY)qs)N^-04ah1q%~`NffH=+q zbX_1hn}#3~0VN1i1I-*$6w)E3T9BBr)X6c#ID~RKzFbm#uWwDf?uH4ymY|54!7Cwi zCACs}DO9l8WQuHh0~o75J6`6RqcukbUE@i>jMctMnnL(hyIq(`ty;8vNFzi`)gc5_ zwMY~O2wLoQzX+Hh!eKd~K@CDx4w;N;0TGKcEzz@>ofSu64&_PF^#aK{*yptxth`dg zQwXS$guu+8gqV1l=8i}WW~G4gkYP4hJ`7smlTx==aHaV>n8M7xC`!bEntCYXko&1= zO;1a{W95$Qj12J$k1sqv-<9i-dv|fZHJ?l-v)NYHbttKKzgn%=>(%k`arUmqU+ICm zuKV&YzyEp9fBv(+_*o%_A*xETGfGSJ#LPbSv5)=f2j2hQ_rCY3YOcTdfxhAIz4E^M z?(1S_4S^h*J~&l5w%Qax2!X=QX7h)C@CU#C>%aDwI#7)9zWeTb#VfwSTJCBM#vDre zafN@fvOihclOl3(aPTuf{Zq%s$DiAQ_V)H(@rqa6amN=qW;DvCN8dC~`bWP%<(WJ? z1wssuU%B#*x4-?#C!hSR4)prhzkX|LySmTQ75-4k4@LA?N~N%6D>MdxVSJf1)Azss zkN@*8{+G|(9RFK?`|mi-AX_fZyaa^yMLD6CNK(Ei$+Q+MxR$!s%D)yIOf75P-QD@S zFMs)a-t*qR@1M?`bIz#ms%PG4y&4cY)@pSO(U8kew_>JY7X)+eHRnF{tL2f1y!KoE z!TbK?1ONMX-}96QQq@w@RP<zol%cf?#!t0kREiAL3Sx_TAS38uHl<C@Ii-zvgoA|p zp8uTtzx=_szV)qVAIMa#y#r3XIZ7gBJmnn>2HR}bsyU^8)32b&x%WQOAW?^s%k_B% zs2O19?YH0Yqd)p%Kk_4QIYWmYeCVOl)xG&qQ!#5TF)M!n*7uvf-}IaHYI)qJe!W`s zsn7i;r9P!T^?lBL%1Je4&8q6PAxud*f8mmZ@KrB=`ES1Sou>{YRvJ@J`|v)WHzrJ1 ztHok*yf{8wEDl$z<COZGHnkwAND^!QW<}8IjhNB}Q?)E2KlH<Iy6Heqb)Jz_+V9>` zS*;d}#o_Vs!SUh2a=A#U*OaW}-(Jx+&){jf=Z(dDp_(;oR#V;G+5IQq@tr3Qq@zd9 zIcZ*R@@kz|>$F^@)jDr_O?~!ujbBH<+4Oy%UHM#stT*X7>&OHED4lLn)L*?%q^hP_ z^Igxr>%j*f8Y%VQ1+7nJ!0|$py74gvOs63VcjiSlW_G+d%KfJH!AVbj#Z?4GrG;jX z=4E*y5P9bBiMp7YK~?ZguX@!7KJb3;I!nr$vMx7yxzgiRUM%x+lUFNUt#!55<wpJa zqeVVm=H<Fyt$NKlJ4x!4@)yTgI~pwf38fmnKmjOTL%JQQs;Q=wzW4jyP$YD;OextX z9$Two|DaDga)<*0Y(W^r&P{KSwmVBPAc#SvD2rcMX}OsfO`|%cbS{OMPG%uQ*F}gb z#8iXGbUJ<Lp%?%D@Bg0kz4l3Sww!ae(%vyO^B%F8s^)Ad=ah5Gno>^5JIKXa+$gkJ zfT=m*N!3hE6>8;wX3mwVZNwrWCt7{uH+>Vyu!{Fwd2(~S%*(Z^4$-qzPen&f(<Y~M zbaZ&Q=nszi>xX@xEM=%6Mgk_)K^sYPW2do{wEns=PWJXLPp4b4o0QIe{m)(Jx%21Z zy3a$4(K~OdHJBUdT{cxHU|GFAmZ419l3H}HA!4c!DQ&vy`iHPKM!suT846G#v|27c z^w5hVtOgCDvRoX{Ey_@$S?;ZRx10^I>qqHuk*5=xZ-q&ey>p#N?xFxfQD+jUks^W+ zCzI{%^C3zXrxco*LWN=mDoiY>DkbL}-Idw^>eUmlplPbs9E#VnY9N`jr35n-p(#|= zz*vCi!mOz@8zZHQ9fK4b@DxV1fTIc(A(YBk?$<Mm;xY=YsCE?8)KoK}-llAb8(>Lg zxy+khVHSeiav_T7q!S@RH<b{klj&qSjj`*xiTCM?<VW6<Vx|hx$XGsb6_FzuT9O*0 zRvg4_2UZkJN^+93=1fV*$zqh<ZH6E*5Mm-BhB%$hW?OR!F@(--#S8<=kBYig4;D*u zPy&y+r*%8?lhw?mvS{cA;V`m!xH2HAA?v}h1+mFw+CjQ*Hkrl{C#19-(yvKD`W>(| zmOxTORincc?(%KuT9kZs1do;6pGC{eqm)Uprj#wKTzS$Y*nD?;#%{8;v%5WMtv@Rn zaD|%eREkx?V)RyfG5dlpIUEEOV7MuKiIgR?_GI5tWF;klgmeHmy#cydW-@hAVh{>K z5XYzF<T<4JA*dP<wlCi6rzxo2fHReDS<#%F2s7Oj49$ImnF-ATLyX-{2(vJ`5W4x% ziZ_n2+Sv7jq(B#Fh8Rb6-jEG9*uJ=|$Qo;C>Rzbe&!x0bzs8dyF14)IE?ouoS;&Y6 z(vn)p+V{FiYK9m<G6pGfp+|m}Mo(>3L>N%im=&7z?w^6>V1S`9YlcrI02!vCo0CDp z%=-auzW{F>CK5M}^COS1w`Sqi3tboGwo6kXCLN$s*dn9eDpljCDs<#c;0Rp_HCo<Y zTNABxjch1DN=_!?Wst%|O(8;M&f1e*(v*xW)b6Y%%p$=x-3e0$0U0Y3(Ht~&zh{6c zz0XkCjuNZ@h61P=rP~T&Lg^$-96K+#xmoF^m>MKyWKEl1j#oKQu3X!QaPNE<MQ*(~ znM|aMj1dYE7|der2YAOuQT-9=fx}9Jr9@>y)YOTu0t8S1VJXS#<rhL$!3qqd>PCej zgBC=#w?Yb*RW-vxFh@%vY8L%E$odC>5@L!YD%C0i;N%^Iu5<07bPm#&?s$py;;N?= zDu($_s%2SiRA5)GZAe@{=q1Q(5@O)A3$tmUNUYt=5}(noNv(1StitYMj#V)dLh(jG zEqFchC?M*|LRD~*pqdH=s);JrFF|6lR3m275QST_xV>d0Ym#5PW&YO12?73+sLnOS znVE@1P+-n~Ed;QN%G1wOI$a_aogmd)pN0y;yE&$0CeU@x3Q*zzjkj*JR<OP_IIQ}9 zL7b2LEY&Ff&+s=YxV?Lg`j4ghFi6EBT94U4_DK^3Nta8b>qKd2YB6qW8LZWWqxIyy zI6}P$suKhXOR9p91rVqVsuE~ueqwWQzg8<%#GWm?*y{)Oen(-)Q!#i1Rj9(eWm~+E zT4{kh3%OQ8rSsx(v2tXczgF(vYFoAbv(w9HFoPHyXy&puDABqRP=Dh_zlNz64A!7p zqHe8&%5BxgJF7TKl&FeUy36h>JkZp1&~rFdzm8%t2Cb7Sp6X*%$_yg%H*1)rH=I2L z7C-B>4=sA+|Ln~rt38^+5AoMfs?-$Lv<5h<q`yMTYgiFmaqKc;Vd$0cp+yKyMlN9I z4f>=AO|`X^4VAYC*VWRC^q+L`x*cmfgq3&onx!?K>XZVTE3U*?MXll+W5Tn|g7230 z8ft&9V0OhDl+L%7#+bUTIJ8u|SFDTzr8;n7<>rd0suS|h;$OJE6v%^CZ@74%Qg{{R z9fNaUXqbKB@rB119)Df>txxw7<j(Hyx!v9E?Va-%&hK5^JAdKA`E%#y+dJFaTa(Gu zdsL%N&WWZ)N@=-V92_1T9v(gZ_?4r>qZ<b|4i66Y_xBGE5C8fJXg;6c`<&<AdFP$C zUA}z&{Dt}UJjMvanGXLZp6<9)ig7!z%{HClL#LD$$BP>WHy(ZTQxAXWLmz(l;q-ax ze1F~qbouh-`yY7VOTYAm)9J))$SOYb>z0%bBV4L{NzbZF%d||(wPxwKp<8A-3qjLs z0}+u=e)1E)`ObHK@PmJ<s{c;~w6n8w+ikaf*_XZW-g}?ph>o?!@Ce&IB_p1xGy{wE z1met-4fm(~{p8eKnRVsRiEh34>({UUumAa5AN=44uU)(LS0bRxmoMLU-+g!8b=T$F zZp*p!a8C-wfTvR%jvdm-(~O@#;e2ogt^Z6iz-M~0l$<_v2;k!%|M+`;@Av-beSefj z{P4e&fZqJ(H?KGS&`=%P(l|-7_>6Ks`Dsr*dB(S$qHR2lDxIP(jLmSMN0S0r&bjY5 zYI(EXy!&^4=Uu=3uD_&!;&QcagcEB7w=<-2ljj-JWKPOu^yJN|blM1q<~zx!^5o@9 z8;?uWxsFQQBM79N`pwFTt}l7<gJ1cwmu^!2Z@>2IAN%;9{l(^=_}$<0y{EP2>?xBG zli^g5zeziWPs-uP#!?&kpE3wo&CoYVlp?v34hPnIL-R{9MZl19pK}>|O=+`QEmd=E z(ibQs#>wMPJo&D7{qASU%sGo*@f31-IvYFL6<`Cc?PfrHc-9PNxyjnQ^25-lW~&rY zJ8=zGwZ<9|r<CY9XHEWIDP{9*6pjW7>uhd+@4ffD_$4n}ELOkr%m4MmAO7%XE1=wP zj?ss_=~LUy2~J_f)^=(`{40rJlno5yJ9Gk3zggFDXiJ-Z(=Xj9%rvEBsvg|y3m0g2 z0K!^_mWBG=o-cT2^--3!%;hU`>QkTQTeH`_?jNh!JKp~DANj~<7E^fW!H32kxwehl zUkhGxwof|gyH50$Zu)Mu?3$vgDfKxg=ip>bsqf8+4W_2KHW{rTd)7L}<(*jh$&MAe zC`WxR4s*a2vLiX2&1bVYy<tGS=tVF3ikH3Y@y8#(diCnln%E$nv6DGNWpLBrSy7XE zx7LQNTSu-=-KLaQ%SG1YMzmfn`_zv<Luu*^Z858VN1Kh{FmVD7?U%~uXwk5a%r;f? zj-TYLIcG}p{K-_O)7iIw`|BS4^rOG{pZ?=h<xt^84?bu^+sp=oI`!2+Dr&=6HV_;M z+zdCNQjK6a=S^SCN;UUslT)&sw2_kPI}P!yNV_)2#*=nvxp%|g+PVvCQy$*3Zm%<& zZB1uetWdfq38uQcd+u+3<yY=(?|$e*AAAZ@-kJ7OSnvRl6`Q0f6+J1>69j`W#xi*= z<YdAq@YY|}<kNfxOa12f_#mg`O)H;N_OXmM6Hup-DTRSiM}BHw4z1<w-6__+MPubJ z25+TB?w!Wcy=E0|L)I0fbGsgT=%E+C_{Bf_vp@aVV~?HCpa&j!;LNzCR%kWe9A0mn zz+>4gt0lGUW7#!_^2I^15KG~jl2TI5rkYZ}*{o7ZPBgozEk5)UhD5pL4#FZ#HWr(e z4qm0$dGF?=2Vm<Ld5>l`o6Tl(34!A_{K=^M(wBV2)_m?ub&3WpmZdn(YEBt)bx+Aw zYi;;)&h?(`B!!t28KO#vh*DfZ;3i<@6Y9b&?1@75k!m81M}*pN9&(@BaIn&B(;_1) zszvIFtq{g`I_D;UPVERZ`o0oxqO|2*-u}szI;?<+z3eMqcIz#-{_3y(vV$%BhyUnx z?&VUpClC6=V<#wKoounpS#PShXc#$&v8a685UU7gaXpPo?|pZj&N_{O1_~|Is?$A- zw0U0V(6`~rTJVea^x5bYHR6ww5VlFoa;X%NZZeHs2T&x;w|91S&WBJI`S>XLxO|aX z!-Np`_piV0Z9jMY`t@+}8P7Xf=+Pn_E%M<aFW1^<OIiD5N$Xe-%luKvx=LUzy`?rP z3Nu))G}5fPN&R}$>pJOXll$IQo4i`*^~Q3B8dJ8EODm){Tt+GDXtK8U06C^vjblg& zmTWyT_$<J5y47{FE_N|?-DKLuuEw`9op-3NDm%%xwzgjK(wF|9Km0@9{=9EInH2Jj zEShH&3WW(%TA!s%FiYlr8mQ$}PK(m)1w?!T%Ytxs9=B$`sfp80=F{K{ng|RG{#L1S za6lXYIF9(!V|G3(!2q$Fo;!bWwl(+H2qDJUafB|NsEZqMzy4i<SS}QXQ`ydGuFOzS zRYoam94W2LGJ)kiTrD)y5(br{-kri|=#z3I^zm{71(HZYM7jV8uCOf1TZULGL9}WW z$IBX8Y8FBW(LZ;LK}5zd+@Pe^8pma0OMA0c?5RP5L>>6EL>oP>lW8rzD0G6>fk#D+ zMjqP$vt&7W=rhew_3pNo`9XllSvP&-R&v^j@7Do1o$&lloKDLAr5G4OrOdZN!*xkp zhUz03&ZlEHnQqT_L+k(qk!~{UVh3T<`sVuE_@EW8Xu&zFXC$G>h%7$fblE;?qn5DW zOlh2QS5h4Y`uVA3d{~L2u(8Z*E>jA4IQcOp^%F`7{KGN^Vdb~6YIm~`3DrP?4VgCq zWK&Two|<Uj;B&^QMk!*7>s3J<lIGD`k)lc*5(*u`H)TY4*bQKnvS_eun(Mb^UvpE9 zqv^C&QicKOll7^5R$1!dQ4$dVUEukhusxR`1QA6hoo_fYGQ>EIT?aEtn9a5(lbQdN zh!jVIA>Td=3AzcqakXfmIY2W3qmCoyP%YHW6P2V`@v6!#sMJ_g8y?D9*f{sHwwTFB za$o~wp<|wgsuHwJnr4!TOqn^;obel-wpr$SYWXh2X{@mhv6Q*HfpUG)x`tn6s}ox* zp*%&J=19fBr13G@rYwfG=g**Z@#$!5h7&nRjE8Lt=eHDM1G%^|L&_?r$|W;p3sCCx zX8-0aed6^aUr>qd?e5aWooUyBkPx<Zx3;EHL;w@FuM?Xs+K|$?!nQN<t5!sM=ow7R zGigvy<L=5<JX;&VYRs1+q#{Ug%&DyT$Y_C?4aK-&80ac|nJRy6>$@tY8omu1e`Ejv z2B=9yK~z&Qsga<d>ycHm2@Dwl2qA<T_SquJpgtJrqEuSRZ-@U*bgy_y@2e*YA&xUL z7B-5V$jyf73oUFBtEDhd3q}?bgL&d>1BOw(Tr1HlIn%dAR*sbi$RJ_rTW(09Ohh`@ zir&H#`=lsfU5A6?)odc9gn*rS*x3ppl<C7sq)4gs&76{1I8#m!f;I}eKUqvlL{1FI zk;plg(+>z!)ruB<*no(^_Y{A_7Ntg++5pCkZ^#BEtTiSp1JY^|K?o2iu_WlyK_(8H zX2Wt*INe>Zg0$%cK#URsrk!u3V2I)XLBrNm8~R-tWj@>BV@nm-2HWbU(cB^sy?!|r z1l6o^zlgT-_GEU%LML=yR^iuGW0jE_j!U`m9hCVXFow{T-AD`)revsXLa7T)bRd|U zWyNBh*GUPA<UZ-qBKtbcX(!uT(ghk3MP^g!V%x%GQVZ$95O3}jmj-STafFTzU)gZO zR6_9`HSiImIM{H!VZPIbL4&bJ*E0fZL%O76m{G(G!XTjo1R`h~AS&)<l@^)}x*mYo z<yvnXCHM1Nvv6T2c2Pi^!~g^`lnhyTa@J^EX`kIrClHk_=WcO~6-u#IG!Cg!C16(Y zVFXn*S2GUw<1IIp3rh*&GYlXll0wJjYo^c2+;g^J&HHM!P_ywev5Z`Kx$B-siyWhp zh(XnKu`c_Px+s&*2cZy!UGxcZcuDBb4{JRtv|Cr_G`=H;nyc36?I?-?+iYG%OPO6l zMi?lER!b>!N_R#{E=9tOGWCxn43utIH&;MYYm-oIHEBIl)n)TpFRE!StFUanwxdO= zXb>lnLCP+(?OE8~DodVcQ@OYsCljv+*>w`wf_+`AVg}WS8mHJuuHbl<Wfbab#>c^f zYw@)-Vwf){a024@%r?|gS%z&|Ml0joXg;Q<A(hBXz<p|E^_R}ru;;S!S%;FQL?Z7( zI?p?0TPKyO1V=GVQt+wBE`}It1DmL-1%X7+M&(zb?iQ*^joT&v^+~se1!6RF*1|Ue z7%D$L7oqt6VCl*Nc8bV^jHr|Dp2W7frfO(D0YGcsNGqA1R;TXtL{05uOT}(fGuH~h zH`?)dm2uF*k=J?viv~q0s|ltPZcRfFDI=3wc0e`7b(7MT2bN3mD{IJDp=I;LBxUhI zbwZ}nF)+B0>goZ5iKB@eie4&}#$oABISI?kq>_6V334>OJ|H~Cx;u!h-Ph(A{PopK z_1Z5Gi@t}<m`!qKPG+HqCAQX*RZ}U+4{OF;Y>*u1!Zq(LrRbQrP<%;X*s9yBFq*Y0 z)8Nj(AGReF)$|n)9C#)rud1VMHCht1I!swA7%g@>a`RBnvd~tLm58L~b1nwJGFPo$ zgDqBhe?+l~tpw$;xvLJ)`872ZO&bx#TDxzAwwCm=9A(J;s>FmRINHSzvj&7Z1K=f} zaR_-f#^Xx_P>yD^2KdgM)xdsmZK|Y@HV%jiDR4-98&*-`PWe2wMsAf>%U-l9R>Rnu zq^v<}1hsadMx#>&;NXcVL)B5uT60^DoPCQ~#U#p%u$|bm=+hv^CSTOm^)-WQl~~<_ zDMPP!XruVN%`j2WFqm4u`L$@YA+EPsQMPdA=hQmrTa0!jO|+$q&Ctrnu6}4ljTtfr zf6)<S%j)o3H?(L|^MO*wbSh_ptwQ&`aA+`dSqxf-y0mOVLmgqRbFgg^fvp6=*o=)} ztYPv5ImL!z)EddM__1nC%~_2gNIO~I4>?mC#chrqb%XTCGnilOP|jnNb!Z#tui3e_ znYKYHLv2{coyK)dIXlgls=0$|%oNs<C|YaedZ{shH9n$MXAxUde3*Q$6XqC7kp}Oc z#d@$YJ7JXNw@Ez=VbM*m4#ri3L*3n4!(aWoRn|@2L04^iV9FH7)?!Zm(Ym?D9e8Wz z3<M0c4-~BxojMRO+XVO^DOS~>4q&D>c84{GdLpXf)SouY)s%&a7!eiCv>9Q+4GVBo zj9(iFu26v(hgBwI8GPrMcv6ICZM@Lkk*^-HlXf;l;hOgnjAi9v+e}h+6^-`<R$r!V zvi6jutX2o51H=K+I}!VbNY}z*!-%SO4(NE*y5^WhG$Cv2DF?TKGJ-jfiu~FkHVCUu zT1&xOYSQ9Uk%MNod^BS4(sgrv8D3-cdKIM}@ID(ReaE&oVhxN<P1|@RaiUj38<K^l zcN`&+wKLh|j?wDN!Q4*TMyaE1RNGnOF17#DhqBmb__on7_lW<1{|gDrRE<RhJD>mn N002ovPDHLkV1h%b-6jA4 literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/smear.png b/release/datafiles/brushicons/smear.png new file mode 100644 index 0000000000000000000000000000000000000000..4cdc2205c46f67c3344af8fab9479d52aacf27e9 GIT binary patch literal 9358 zcmV;9Byrn`P)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NT?1QDc43!(r3AOJ~3K~#9!?R{&EUDtKq`qtj(-aAin_>xIUwn>q;CCaJZvRyZ} zTZ=Z77-$VRKN1uTP}@NscKnL%*h%`MuQdIWI6&hRZDJ#KfjSM)pe^bGwPZJz)A%JL zfh~%9SRy4xq$G+n<jmZA&)IAB$69;ub7zK@+{!=$=ngrYxx91kK5MVXx7PaB9-<%i z@v?&l4<A0V{do}4$3FgvlsXVGGniwHO^mT=KKY4XwHJl=|MCagcA8QrB1!y{lB&pC z-+I@{2TxwUbSd0?%gvIKB>NBj?jx(Km)f?I7&$QAamO9^-S<`e<9EONzu$L(7z}1m zj3A}m%flnrEFHdPscD))(}brst^t%(iBy$DNrgmp-|lAjQlp}(8buO=iJ$;TNTD31 zlSBIk)3yykNHr|(IjX8e`C>$(l9Wz9wsGv`bAERVyRQS3NI^;j5&|g!P&##H<K$zT zuX*Ksm|uA%DF|w>AtL{pVPbsX@y)2BibM&_AhFjmk&qG*DG*3r&~}CL)!f|twbx$D zjLpr>t$TONEw}u=x89|y41hU=U>o<vFMjd9ul||8=>6~iWhDiHnZXDgqCJ`>#`tTW z`~(q&n{U2Fl8B0`e*ek!XPz5ByE=`52N6p0*0<hu@4ffn$4~ssBTtM$ATS4tOikoN z2NteBva)Mw5MvyUMqwHc6G&7+M5L-nN=?Mx-OX^oBr2*=NLYl3l|&OMhk)?6jxCM` z)J|K8qC{a~&rxW;R}~@^rAMCFe8r(5118e2u;+;FE0hSDU$2jznVdSkv3FOT8^x$8 z5i^nf44|TH`j9|$-*;9itVbbXRohcykOBlS6D1HSfko)WdZ7Q!2R`_rh4}^BB>RBb zM_>Sf!>2y=+vm=m+xbEt`IV0*Nu)%gc3BXC0b($SzyZt*a0r2c5CU_EF@F5xADy|- zFZ|*!5!v0Fl<I>(8)Hd{nuZ5WTv`|sD1>M(gPB8&pZ)A-9y)c3h+;dP+A=`2F%bq9 z<{}Y2b)kLW(e=>)0Cyt8CM?bm_Us<6ERS|C4F*l%0Peb<{^_3yA^gU#{~8Xy=I?`C zDzJNFw@kZDW+Flem>b2#xn|$W@X&$z<;5lh1~}N#nixq$p+pb@s}eH_sRB?C6GH?X z&~+*zNfN0nj3}i}1po^(GbfR#lt`6?6{=v8j))1WN=gbLQkXTaZ;~k8e#4+`TL5N! zW`Qh%tB$^nl!-|R{)v>72}HIiA`mM81_%HXz>J@K<38I`*tYJ!?k*z0)E@-95P=A! zL`)!3fC)+rW)mMcm_We{FoB~;azPUju}ZSl!IV{?094g>BB>jcBvUpKVkQtpRk1xI zFsTqo1q^lbQz(PgHcv>IG!Zd~m4xg~gp`&3zk6WEXIEBMcJE#xqRC`@@#4jejg24T zLPw7sd)K>u$`v~QW2Vo{A%u$;SO4{I{pJt4(8quE6Ou$t2i^J^b~*M(u#0hsP5jtL ze`SXYedxm<A+-<NC79~jb^`$nH>(f=+Y-a+GpB$5)4$ih5O-bIc5T;nUFy2jN$MnZ zDW%k<lq5-)QrC4!lKtD+=WDOM_Ba34Z*9F$@;~;&_VBOHJ+t}T>Ue!)I-ayiL{dtU zQrC5D+fJwd;$K#gg<EgEReKNjB&137!N)GIZ+2~`m)E<s^_CQF9!y1`Cr-TWOJDk* z9wZG+Oj?;t6X0t7m2Y2I-$)yi?&78P@@BVoxowkxC@_F*+Nw(W+Sk7J>wobVQAGa7 z|9(!?&5H?26aWg!3Xq1#Oo)*KPh#LEatOo-jtjbO-`;&7gmarOw@3@aErw83g`h&B z1@|aGP2l-aoEwI~Gkbs6i4##tE!Mgcfs_&{R0sqPY#vlp+g3uL7&S=}u{TgvC15(8 zMp89bo0ZW%3kae_NtjuQlqd#j+cX-W2_z!O4vV^ul%i;YtwTYqqF^P0`4JTYi88YY zFD-=QM;AbvQUbsVg}NS7$H)s*sH#E?4~nP|38@NcQdN~RPffd4{Go1C_FWPQ3ww{M zD%nC6#I8!nwg@F;2|j#!<C)d=ngau0u%Z}#SXj9ZTz`t}a=u`NLj74HB@i|y^3da( z%S&-#p8XntfuHNtv1*ChdG`o8o>+V`B~b#Ne0qB7@r{d@x@)f*DiH`caO4ER!Ua%W z3u<&yfGLAr277=afEXYqW)QQ1^&(ey`br>A7Yxz+&8nyhktzup&L@QsNF%AMBp`Oj zVz;J%DuFCUsHqGAZrZA>h7Jwl<rP6yi+~BDq$045QL$C1ubLo41R)hQNDL(hjG|^$ zB0@?+P$Ghgy+K|^UcA)%2MCnc@Y3UlkF(`*<j8e5+;GF;>#p0gvQnRQXG$>e?Emn^ zix*FwdhoCQ>MtL8<dGL=L5quv?|Roy9Xxo*Qs4}j)oqzFhPSnBLDC*mQ6M3KV$=Mm zFMQ#f-~7f4R}Q@69q+i|hT|f|w`G%>T`~+imZjt`W|w3MM_pE4C^K`Hx_|ropFVTu z%=0Yh10Vb_ISk&ql;W9sA2X|=nr8GwM0F`!gvT5Jgc$zGZ~XdrJl;8hzWw&w&30Au zzrBY?x-B3129z`<*&KIW5)rbzIDn}aBGpB&{uZPn@}@Vv`NWC0J@(jR7cN}bvY^<d zL_2P<yJd%eSvu8;KYd|3Z8Zb{)Wi@Yi_)-(F?6F*WHxLjO<)aR@jL(`CM*&8M?d?s zF~(2--oJVL@yF}izW2R9cO`XavKYi*b=R*T;IXqC7gpQ0)5sW&f?5uxltg0)qhVmi z?xkUjJRF44FbtXy0z%-(7QL(LTghV33_kWT$D?@nd*0(_1Uh?ua{AnK^>WvBS_368 zYItQi9=&F6aX#Gp&F7R5Gnxs3MMaecO%Tz*h!HXH^5W1|vpC<(4dbxk;V>`|V%D>n zb#dVExzGL4$&(M@9q;^y-+bV5R#&a^F{jT21xk|S*^zyxWEqkIAZDmi2nYc&@WLoI z4UdLl*V14(h|BYFFbKneiNqJ=CdmLeZ~*X?uiP6h(_v)&D@*a{PF`{GkAgSctH8=5 zuu4~UnOW;WM3FHZ@My?`hGPH`F_16kfFzgXlvH2w%EQrp4=Ares&UshwzVlK6jE2G zV20=6q6&bNL;+^#Xn+t1q~pzYVZ?!%NK?}6KcIQjN@5DtNGe`xQ@0^yQQtCR(E{2W zhNzM<NR)__)uAjipkDSNRho7(oyz`|;nfF*%pgES2$sy+-Q|#DPS=WZsxhMudrJX8 zYJk|V9*9J<NPKOYe7{Ikpde^cHOPpRC_%4%+35Pi^F$D_JOVlJSPsJkWn$q(CL$sz z7>WbO?si2eE{0$kyV_l3@R=j4BTmDm9^34Nx!wSvlx1Fb<MO_h#sV=}c0+7=4%-ia zikgEF7WW(_XaS34Sh;F6)sRy13FHcgYjTFGIS0;KNlN;})6-LrZ=O26DWV5f8WDRX zddPulQI~)NM^C6Z(c+F&$!;<K%?5#4zhF**Od!g+dIGMwo__&S<SYQpxcOC!2lo#H zGxg)3sp5g_PLS7kOwmhT<U6QjnW*PSRFi;`T^LSgs1=*6G|l<88Dt9UTSm(HX%Hwd z29fvd8eDx~xM#V+{=;{v8K9TMK|s+STcf{s&bD*K9G++R4{}MPh`4}x(@HC2n1IT< ztw5q`|I4;NoDE8p43!C~nmf^)E|6O4Cl13!NiD<8xW70=v68()RbePzVDR1jizu@1 zBvny@s;HxV)#z^7>t%M^IpH@sC@GM&UA@GXeLBeV997#1g_4kE$qHietb;)$B4FeS z8)w`A%ZfmxOp&ZC$50Zrl4n6-q>dWYohfA>>DTg$TPcq{F|}>;vUN`S{Yw2jRxAcu zD+k2NmZpiS3C(xG0F}oWlu#xrN}?(rYt(I4)pmhA(e%8Yvfm_-cXIq8w#P)hjdKwz zy_A-{^!Slyt~D8G;{4qFU@#bs=9;D<uj;kq@nkX?udlDClz!w3YMSPzn{Iy1_1C}R z<*x`a)M(FcXO;pQELPP=AAR(J?|t`M-}=_n8ayxJf_~yB-*No-@g_DIE7eT8mr$3$ z=ovl{g%H4)PN(;O``dr|r~mo?X+bf@<HwKRefLjj!LEIvom2XLhCiE}&ZhPNGq0_! zed>39dwqTVhg;B|J$vrH`|d-BuCba?4^8)8)KBbtpRc$kL#IR`hV$pnefBe-*`B2C zyrB2J?|pM~3)y{c&G2g`kFsHXDS2WGX3y|zfuX;d2qBz$@YEmt!M}U{=J?<F@i!UG zAZenUhUb`2@_QvB@krv|c!>1`CdV%?&gS3(e*qEg-MjZ~Z-4vO{`_n04^;VZ=bf)p z6;X>;+lmdn1yR4!P^$?<bmb6~^C-WJ$eZ8vme@28Km5=Y7j(y+ch0_X?@td&)AqOS zucjt&KrM3h;9L={(&1Mge$DmQf8*<4zrup<xI_CF?Jo(la_B9kJUO1G=``66ixQw2 zJC|BHN(rzCZP)Uyx4h-=-gD2Fc39ADx8H8%ebpT{tX6vZg&|cU?UFvXHl4PKh`J<( z6;q-ZxQ}?D&}|Yni2UZayyf0|@7cbf+jf+~_KiYW9%y5n&OJNnl5|O}R5I;k+6ptK zT_Qqqd$kTSX5PXxEim&Pci#EcOc}`wy7ji5S5q_9UPeYBqSZ_7*{3IyX&O%?B_*QG zahkN+cCx<NO*<i=Z4-HW%9s||9uz<r4M&HM9J&A7->wU~<(6A@r-un7R~WpePl}Ck zdi3n(rS)z+6(UNa<4Kx!y0O`AjFa`U+D-wQwuyki&hFvjbuIPt>`(Ws>{(k|JA3x5 z2aLW?Hq8^EX=gWv7%&{L`4&+Ukp~{VeDQJz(4axviDfP+DF<!>Hpgjh6jRc+lZ8>k z+!5($5CI`Y2*zN@ustPa7N&pj&Ub$Ad*8LLbIkoI8c*fnGvjAg+x5+qjTJ-`m>1{x z;QryUYv;cA{q?6VOc)4(+KvK1Op-K2<}OW?nucYw6*YknK!GtuVh{ooG*~V`My+5H zVWLj;gCF|vKmTX{l!(I3x7@Nhmizv4?V;0~7caMMCpk<2P|I~EtvtJ$9zL_Vdbv~8 zq$)xnO-d;#0V#<H0qBx25Cc+@CfZNapkX2k(F;~p!M!9v48*3neEIU(vrmR;bKL`v zZFEU<J<J<pJzr-=YC4*Co-9vM5G4_lrHFDSe}%}BBm{065Mek700m&yk%4O205=>z ze(yc^gt+u-P_88B0Pguy$*W3n#-pmj)?eyO-m)hZHSnRTgC>BfiDB5VRYJi%N8U4A zukDF0?^+Ja`(I67T+5!!x~C2=)LUNmPj$Fdm+pN+uMAlgF$M-OHw^P59u7j&u+<fI zz=gdY!L`@EoGsDw4Y1@ecSyCD$$9>0^)M2moWp}X%{H2tSTYF_9W-d7Wr#YRroj0E zlG_IM&Z5aX!J1OCiWhldz`B}R!n@>{C|<yVf<(l%N7cI5pmIl~D$1n80f<yY+b)eK zX?|pGNNg!0lJ8FZiTr%@us~v!IWHrq^kB3QL4*KNZwr;eu_Jz~*Li)3DMn0Ni7||) zY4>8YZ>0f9L`&&wrbws+HoJuakvvFeT~{So?URTUq8Tyz5=E@t;BCCjY4Ek!>c<nA zp9_OPM-I)+&qWfi>~dD<Ts|u4zB(7ms<2wAWU8c)tgKKmvs174WJR{J4tcFg;dT!Z zf^@n(&quDFJGg%Yf`|~o`^FiB3*{TMyD=xmEF#f;lafNzit?y<wTMm%x)Cd**sWQa zQ8ORaB*l}Kb}a@kM%C)2_n$r7>oz>0s;XgO@2i095B-L7MX!_)tATsX**y{E`fo*J zAfit6v9pt5gI$YpOMur|lh2g3>J7re%2BUhB6~#lhhDs{$gyAfgsPGiFr8LW+Y^pe z&s}KGKi6J;U{DsLG^@--xwSxF3X6M>dCbVTsphDf%Xygxg4tlA*(_}nt;z=Er~_<H z<)Jg13v*%DLa;UxmHHfdtpSvhGQ#4XV}#sta>wWtAPW+{RnSrpM~)LUh<F3WuHpSK z&y9emo|!)J^yJ{)L5w^TEJ$Z@Ab}_>t{m-kG)akF=iH-bewt=QA*UTxKDCuB9dfuF zRMiQ&s>*0vdi3n(h1KrRzCqT59HuK~0|8-v&vm{{s<{i1&7}}Pk(({#F2XuL>Ww&a zkGZs}CDV2A0EY;)IZmfeZ?3JU-OF(hIU8L?hd}Oic>ARXF-t23C=4}Jn=lYiYwcO6 z#U&^zjCS4fy}CS>N1qr!{?u56mKQ=3xvF%(wV*{5I&(2wQcVH#&13^%%{VT1KR9o; zv4jjP7<-HBqP;=Kkuf(4*Blrf*fUsKh}eJKU6m6BmoJy>Zfhb+d3~ix-E$@IW<%yJ zmA;qt1;JkL@?NdW+1enbK~)(8?y!AzS`feXotgUl0IX9Wy?ityNU?-KNd(9am<R?q zoUNsjnRuRpniZ3^0SoRi5jc{NygGj-ugp6N1Z!JlrfA`NBG+^PFQho1+;o-tx9!G+ z(y}vVl=WYX6P3&NC><DJrroAW8JqxO?HTGDjCuJit6cvw#nzndNhO@XLz1O`>`h<` z#>Oi%c08mO3{=E7&(+&UO}uZQrCUIx-gzO(Qqw#~;PoVUH>3Wy(aTIotSF@q_?(Fp zaVnA68yEGaj4269A~}L--n-r)iZ!BaZO(vmPwL%eWN?hqU$T5oMNEI4J*6ahQpKIM zkf{Hmtf~HHr6vi_<Nb%TzgHD^K%NZ~jDJa4_XznK0^tl{RZ3?*V=1TQ)g+@tRtNab z&~sNKE`%Z@6R=so`)?Juk8E4WEy3K5W5)#IRwo3M`46bSt7htAuS%SOO6gX?U4aX? z$C&V}Bp1d!yUTe3avRwuZpitOw$lU>$%$izibM((i1#*q=Uh~T!n$;L>m)_zWGE`F z$pA_*D$*?}+Di?ymmV)YUV8jZ>9_u%O8|>YOUp}33k!?8cJJD=vS-)s-Mf~T=NA?i z7Ul+np`k#UDVXIPN2%+&&CQLqOKX=dT|R&Q+~rG`SJzfAt*u?Wc=6JuOMmkOG(SIo z^w_JezWVB`4jkCEYxn%Ze2lT*iP=)7-~J|;ZQJ(fy=6S1KDw^kSl?J(TRnUB$x{zL z_|U0S-HX)ue$fPU;J|^KZ@J~h8-Hv#9MqD_3%PEs+?KkOe~Xf7d!n8TyFE!|d4UTv z+B0Nk=F_Ji|MI=}o;>-0yogh&FGN6#i;GuXb=7NM`(sCs9^)7otfevB>rriy5q4CX z{;bK?Z?|#iw|}0UnnNKM_F4?qg@5k3=l<+}edXlIlg~c;?2kl12M!!Ke*F01!-o%C zbyZ3Npi;?aNrula=90Phy-lqG(Two66X~~+0iN$kWUeA}U?QA;{IPF-;~V#X=l-^B zUmO8_@{^yOOxu}`Zl6N%Jd&BEJoN8&%ac32YzuAU2dL5(>O$WPi}m#<D*<3Ko_zVs z_ik_H{?G#Y(1$<L%d_>$`m)XQ^l37)a_K#}U6p2ya2v0sj%aLQay-9^!P&m3t}Jk9 z+xGLH|D%&9PyXM{KRKPjTOqj~)8~BTKifp6TZGnEx-Aq7?Ypp^p7u0Uw=pI3iqC6* z7xT9}epXdxzUii$@4D;6!GnjMeDaCyXFWU*pG-w`+db~Y9k_yJ>9+6sPwI}(X6k3A zAeZ4bCqUbvpz(dU$HVNmj{r+el`4n7ezt+mY<2`BO4r|T{qY-bSX;aN$6xr54?T41 zg__te{?hyUqCsK%&=sD@hLQ{A{zWOQQ$CiUcVt5EM||cFq||oOB`tMAlSqty7=Q^a zFvkXgL$$wr6ou2cG#8}nKn{ALq7F@!wgGbx)j#~hfB*194?Vw$-G1BcedEY>(<2S_ z=(jtvbhet`_CYY6F}BH6);GGf^>%%;+nl6nE0S`7M78U5GL>m7#;Q&tT}!#5L?W3@ zRmQn<r>ajNq#g%Kd+*<4<It_Q-un92zv2A(^Upl<%n#C_pa1z^=s96r$*THnmTVw} zE=c9{iY)=XU*;Fp%}Khn-ffPhOMV(j2pl80SA=Iq2!8Sd5rx2k!2yF9Vr0`Y8zHiR zF8g2hQ4CO@pMM2-RchsSZp_)gKKma&|G6t+sBr6Tx7CVt{j;MZ>TL$iw(;nB_)nKN z+9%JC&pk6)UGK(|)Flz6Bs%SMJWZ2{Ogl+Jo#<qeE^l<}<90HYX{+ODnoQGpoF=WP zQkP`XrpYw5ovXIhlf`)EQmXm0{H<;NyR1w^mX?<P_8Z^0xUlr#gC}>;p!dA@=UxcX z$()j`&9kvQ6E8|Ht_}^hot!;CIe%f=CPm*_gBTQ;LtubJHFc7NLO@`D#uRGUgcv}e z7<e!UgJ?$&AO;SBLqOATG)1#RNf^vj=2-fGiF(MOz$QZVQosAVzw^{nPt6GE-S2tN z4%XyD1Ui}O<|M6eru9u3Po-_OlNx*j5F4Hw@cbyu4S8<F3!^Y-7`e9l?8Wx+zaFoT zQ<rMAG$s=VJFltCtecbeh{oW+KIo)Gb{@lM7)&&Qxrrt$#K19f2pj`q<PdDq#%5`W zd!}|J0M&<14F1}mf9=2h*Z)$(d~eoBnP`11Pd+_4ccI-JOPgx^olT_*Aq3kZxX=78 z&WHICUs&tb$H^+iup?O*fJ!3mI_s*F9SM?a&NjiEkfuJC#4!L+?UJa(z{4gq4T)+J zZ6gLT43!2%b`C>Gh!KIAL`8@KVB>ZLbQDfhh6O28hlNO4-|+f3?BBQlPyXbOt=JN7 zy6NWWR8F58f9JvV?|py$v9sf6SKDc8t&Va~24RM|LcQrSEzN!8p~Y#^^-Z~WxtmT! zC3nQ2qAE#KqLd2v2PtVvP8=hGorfk~eTNc>h|x-znSdmcl87iXXHJu<sE-oXMnLh` zS{f;Reky8tUwf=t5|MrT_T6~njSoEVz<4|kPfrg&d}i~R)wWGrXuvv~OsNkkRVE#% zkPJMKc`piOfRIXm-I_pU2#iQ!M(0dIKh;f(^Du^#n;xu%sYZG+tFXfum=Ww8BO@dR z1eg!n0n~4S=3Ch7J$91L&CT8Uy4QW@{`<q?zE=Y?z4w_+LTkfiOEP6>0_tX_nIO<h z%hVfHnny3;d@ZHS#mG$WGQeNEjaisdNF$D)jZlUV5d$;GW}BOan_%`xW!LIST3aO5 zrv>(N&zu;kDj2W3^YxK*dznkO=AV_;ozKR~yn=jpHp(V818WDmpfJ@`tSj%z49TO0 z?tCh%EJMG{rLqG_m<W=j6{w<#!OjV^E_f4oIKUtRq$1LFXaaNQY6=M}&!AhB+1TF9 zXBlxUJS0_7;=oa;@4)h=>J06v9A)G29GSPFGtw`5gWAgUpA!}D(OI@2xm&9Jyxl|v z6|Fnt7)Lm8gt>VQKnye-U^rj`O{OV{44a5X0x<_=hPM<!LWyQ`6w3YPoV$4g86Fn$ zur>)LiZFDwjsK-HAkdqaS}13=$RTC)!1xrXY#hqeBWGvSbB!FN`L=1{z5^u-&lDvP zX#fXMU^0voBLG;MGH7^y6e9C*fYC76tbBi>qk6p^^6c5<0cFV2=`F$(d&4O8Sdqfv z@M{@`pb|tfjV-e*y=J9CJ<eY3<Qfr_3XuRlx`{j%iEOlfdSs4=r0gx}?9GU#Q|UU5 zkr(IVuEn^#*vyYY6Fn8p3;?Yj^@<e=Y=1&a(VPgXOo&32x!pfyAhQaP13IXP49=mc zd!bHO*w)*bsY}}AZ@vMiz-D%*^t2J?en9!a0a0R_PBpPEEyS1Y9q!pZSeOgJ`Pt-@ zk)Go$F<6T`td=$VQD|h@6KS5jR!I>;l}Te`v_)C+OuN|_wB```lVq}aITE!%0--Gv z5BY_D3V}H9)JJm*vxu?~^GRbC13<WH@8HNab4v@M1SZM6sO)=p)QuX_cdTC(P1kJT z=*<U(#eGNpysnC<Q4cAkIuqt>Kh)zj`m9it=Z(zK`%@<nRLjsmW!IA#xtV%7qkbq9 z993Og@6Mc?Jh$4-kHTokJA0O`T@~~TRsFx%p?tipX2Tp7_8corWRJ8}UKX@_(+z&q zLZ(I{dvh(0r`&$Il2SRQt+*}|BO{MxTV*h7f%XEbR)AtYY-22^pPD@K<mUQj+P#>) z@(dO!)T92WSXLkOjycKDzw*wu6jxP^4!m_15*6WAaD)n=i@dbHt`8z+2+{>k_j_c0 z#dHX1q(Lfrl;cJodGOISr)i0<ttX>|CegV8H=#d(m-%a$#ehCrRRKmnOQV^SX7U|e zb?ogk6}rsMMjtfi<3zUh!JLAN9xV_%v=V2)LoOzv7ci(ER+8z&^{q2<%mj0t>An>L z)L?)Edxo!g*>LZ!#z9)i+_j#$*GuQOwZSoa{1t(Km`{i%>apSKRDxI4sm>tG+*Uc? zruc6yEM}rDUuFw(MH6zoje78)7(LQWFQ*@>S%3NtO2yB0u!?ls(Ua#UPo5hG#?nH3 z<-yUR{eu`ekGe<>jlH9a%4Eb9+UX#|{-bZJ<=t#KDCLdJQm5VlFggB1OJjZOF)g&y z^lP4U$`PX;s$1e^sYYaQ<ScONO^np{?<uX%0MtndTRJoCUug~>n%lD+ZFsZ<1Inmb z^S;;HE<@hT(HW<O?}(an0W<Y+KaLy~Ncz-XO>by+IBbhE>YoXM>ct9=p9FQlCr?5_ zv<#j4n#w#)PW{X}jln2Be&R${p{Fmj=P$IP6a%j;#eKV*mF2i=F^&cS&@J4AZ3zGX z1OG`xK~(kpGW_6^6(X?!7!;Cgf2hVY`r75Ba=@n{S7(hD8P!3%Sq(zZ7ZtjGE(2(< z)NYuw4AR+ud6^?a1Fi22p9solDm(0}Nu)u|0I2A*YwfeE-m?z@qd}M(@~*|Wycl;a z#Krm0G$qgVOGJXsdeFlEF9|~~R*)LEHbaxFRwxcE%TKo)AB94g&L&)7rSG`Si-{dO zl${jBj}^+Vm2%RWtp)C|iV9L5Geep7N8Lnmd~REtXk)WmALH4z&IMl}8dLB?3Mh(7 z&+`^^BP9LOj`)_9gxzV`^|01b)4|NI0GLhfG~-^Uhxd_>^P$D3d1h7u)1p#XL)O4D zy-sDGQ<2XO0u;T&uTVUK|DU*hlGaVJC@PfH#EMu-K$=a(r*<l0&c!b866Z3I=ixnI zuJyq2ZLPLUL#6^QZFV4E&{b3NXspg8kmXz=DnpO(YCs-pE18{^)AGEw;BmHQqoksC z{GZqE{H!<<KQAt$4M1bvy)0#8gO?&;h0B6k#K_$1s#9fqXIhQL*g(A(qQKaE>@3O* z0LoC97oV~pFAZn2mI~@n%XfJOw9Io!9i;XMSu!8ZV`lldt8zG4uRO?6%LHUa%x);I zSf$2R6N{1w_{q{4>24*J^-+sz?^i_B>8+l#FEPvQPLO|@g_gN+KZi^6A#zrfErlx0 z5V7DxJ7F-p_N<z)Um>7%qQG&N$-2A&Bx;T8MR+LT%+@ImJ0u^*R;5YhP{tWUn`!pf z*}kH0cF|tR7TMt=pQz~CRD2-kbg2TDoS|C<KjWfYvCGdue0VW8N(xvilL*MAgR13u zN<Mm+L@#5>71|t{+&!qk&j$zUjuwDZ=D2$y9y1m4JWEqNk!FaYC8bvd_fM6nsH0zx ztg2K4WW}_aZ@B79Q7*%uHo2ybMSUorYK+atT@xslnBxkZL9U%WnTPWFe%_LVnu?V2 z?vC^+D(-6Ll!Kg=76X(r{O7S;3WlNHO_aG%uXYt%qB0UnH8(6HnDtzQ{A+<U%ZIXu z?xh^P0m`Uu?UcvVZP!Ih?r)N+C-X{Wbx1jYM2kb6DK`<eW~^Gnq8UbysHnMS>#Hfj zB^$q#BDjz+vGxv|0etYi4kH)QW@B=9PBmQh?W~3pt&_0PWI?quV27FZ&k4-Ftd6R0 zk(A%FB1g!6{k2z|%1Kc5UxnLKCK`J~$hyTb6{3yZZ~=l;bA0>VLyD62sDN0juv|v| zJ5VZUA)7^}T8DKRN2*>rpW0D@d%uL?)4uLFD%qoFYrWHb`=%xZ3SpKo1Fc}8=p9PM z-#dqSEV~a)GfpZ1rDq#j=_Yv+zeh@=>Xd2bW&Ls3-dQaF2iz8piH+Rs)c^nh07*qo IM6N<$f;F`WNB{r; literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/soften.png b/release/datafiles/brushicons/soften.png new file mode 100644 index 0000000000000000000000000000000000000000..2b2e9116f30a011c9895bbc84a0ebda2ca89e219 GIT binary patch literal 9219 zcmV+eB>dZnP)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NT?1QDc43!(r3AOJ~3K~#9!?R{B{W!H7xUi;klYV0a@^~B~Nvf14d$tDeUlNzJg zkwj7oZ2^t|`NKy3EZayTS(7zUc7RBUZ0E<(PwYf6B-s9l90M_uAj(HXDURe=69pR< zn@x%#n<6F7J=O5uy=Sj{?0wF?uc|mGrhypX>tc1)>-X+Ecb`43z4oEVkNdd%@Zlpz zuG{%MMC79%`$WziL{t^3P1B5;rWuXy{=~=qMd^LN`u?_^=G>WCHZ#kXEt}DJ`|Y=% zzW@G97cc5`I%%iVcG|XG+qLa8&uv^-pG>D+*LIWX^jCiQS4N{z)3)t@``WXjQ0R@< z&d<*^%N<3O6wM%c_uZdNKiaqoppYU=VB1;FM$*g{=9ET~jagQx2nd{CZ?~p-+FF-+ zVDEU^wkesAX?g7!Nf8Q3O3w1^#qOC4-RXxnj=yRl?r!O_qX0z+A%SUY5DEawnMXHH zKfHPUwTo$S@3le*C=`b5C=^k+81H*zv!Rj5lA#JQm#&JKzk@&$dr8}s>Q4&`i&tNL zwJJ6@H@ENIsZ*!kcKaP96@Y3=$v5sxU;5J5{@0(yi{AIXU!@QNRfQsHQca_A(=?;e zX!OauKOrJIEgRQ%?YZ-t&z;}c+-lo4Pp8w#Wb&y`eOg5DlXw2Y_kXYjfdDrjTU=Zi ztt`(kFU^lfY1HUwG@6^APt)dzK#W{ogpgfl*^IQDZ9G;n8rhhbnu%!F$@z<%wAOZZ z<$?K>*iKt(j3Q}i?HDK`VrH4_vOV=&_rTfBYp$46z(tyt)~*v*6pDyUTbC~%dUSH; z?8d&;W?{a;fg`s=Rp46%2t*-BkOWOhlcc6GF(rLZMIi(PP!-7#p+L>#<$7TF%lkj@ z!KK9|-z5J7g+etcfTZcOpZ%RDo_J#S3w`+4K9Vg9MT~w~h(G~RC`6zMstRaINr9A- zYHFJ1V;}p-%!U5RKmBLY>$YI<5J=86BBj(cI%=AfRFi^8p--bPeBtvCoH-*RO*@_X zG9a=sF$I<u8WEXJ`P`*;l(ZS8xltOAM>fW&5zT~3&PWQ)`R9NB7g9>U@#~+&;p=}E z5>kQRn<4>MUp{UUMvaa~IyY|S#-sVUW;9BpCM6Z9&d()4ld7twQIqzpy;{UXgd(5` zM99TCwAm(8o3=J>^R%_ew41bfI_<LM<;4V$X6|iBnz5l|A;pv+p<<ngZcf>Dq6tYg zC5%!&zfKAk=F?kmTWi}EfE%A%pqk;(v9}9VR49mVLJ_2-?uVzHsVD&`AOKVVRs77G z_xqN@xAnl$J465h{jYK%5fz#!AVNR|6oslgHfVBzLKRSfHfA{lEh3_{?5l$qM8rS< zBz-3`MO8#-*_F*qR0SdpX})Iy6`DY3P|(FM1QkjVb;qc}ETRylnD~d7P$~c4J+SMu zd-v|W?6SQgGMQ|hJ9lnlW8=rT(6Qsk-~H~N1Hv)+UvB!Uno>G<?)<<0?caQ%3w`Y4 zpRjBs-FD%d>X*}aB)^!ZX4HK2BfqxGg+BP94~vI3`Yyp$&$k;$P^1)YB&jbkoqhD| z@BQw-9bQPgu4}ut>$)y?UG6M*mb;vD?sCqSt+U+uzjtkfoVIJPy6URm{H@>KexV#+ z{$_vpPu=?ZbYrufPIKGkoN1Yz<(#c++jctrSD)!crk1k}9yHQOvz+rY=O>eCH|cWQ zWy{QFCdSO1yDnRoyRPd#^O@g@n0)f&DNiOQtxcvGfP$p_@aZix(p>!2X+~J05aQ_v zZ@&5FZ~VnyG-meS|Mzo73fxRUk=3Pi_2qL-lCEj8k#u8(P!wVcggJ|J-Tr<1AxKYb zzRF1Wu8X;|Jg_&h_guo*QX#{ar8KkmcieerTHgN}gvC)r03kU))*K=clBD?i{mMzD zNg4rzA^^#>XWwfiu2il^88yfhUlb|von|I0%cJo~MF#I6MbH>C1P}@#N+Up-wplYQ zAtz*GHqFMh)y2IlBfxSN07?+`rn|If?YPu<<VhQ#igG)k$mYbJd@euwqv_GB7QzEY z3W#cFX=&dvk^-rV@*Of0Ax*fxWs^ym;e%&4o<84Rb#UyCk3=>6w6yoAry^xl6#6I8 zgwxhMlDo%*U}ItrJhHj6r&(ImxCVShYeyLitx;PjpwKcYqVD8<*?vvnv8SeI9@#i| zvAg=v99?4%UU#R!Uyr&lQsFlX^%zo;U4^QMKvV!xKvYyAsuZJ8#9Sif7Cbv4T~v%s z78+?Hq?nLm6d_C?Y=jhgP&2<{bLU8a6o|(NzsXQOLO?1#JEW2#WkqlW_5dU>3eDgf zL-SQIRxL0Qfe9^i9TatIHX4OOGZTuru7l<uP?k{^A2|n022<AX%Hzk6v-NS^bw_W! z@x~)ZkFM?A+dmu5RN%>T{H5p4ojY^p{=fRGzx@99zyI<qXnA@0-S7Un!-uahvq3S) z-owNnkv^{X5AA<ag$kq@jsD{ozxb_hee<O&2j2P4ciwp82{T4vTTN<q$?)8<E~Wf1 zyCg3-`el`cs;YLm`**+hyN^El=!-1q{U7*{$GV+Msh(-@XJ$3hml=bFNWYZ9N(Del z4S>|7fBqZ4zO}Wr`-0y4-uJPF74BTk%yR0E)gMX8Chpmw@Wfr!*HkhriR8RI4^?ea z^SRIc`v)I<V0%S>>utBuY*<mmLs%lU^v~31jT>9-<|MbBLoXi21@*o_A%ud!8E8hj zZ>4#hz2)S|JMVn^gAY7#{`~n~1i$o4zx;gat^#_MtPIyr0JyZ-ZcWUUBqdD%5*pQ{ zni^Hr)FcIxM+JxiBvlhhC{&P=7cwEP@o4<fk48R<UwqGd!i*q~KRG%3#Ps~7uItzb zN??AZdsmucS1qiqj(+&mR-2g=P$WfCsA@`@k~T?GN=?$#cq$G5c=QN>08kYjDp@4U z=@0+#4^E%H5AS@}KmOKzmx{WwmygR`1w;wIxO{)Jyx@g45}*oIG)Ys^q-dIy8f}s` zDfu%1QYsn0gf@+vRLxeyTc`{At6#k*U6LaxCRUdc(Oo>nh$Mb)jKz61W0#pbc4pa_ zO>(9gv(b#XGo$2y^O(&uWq*Msl>ClSQF4&d3VF@7N1E_Gkg^8rjXT_#uL`4vTa&Da z>_MSPMb(m`Nk~;rU2ar0Y13$IsLJB}Xl|SY%sChT0hUdxg(=8JXaTh`vLUKP3L>IL zmW(TRn9=|T&!Dgb(d4!)P12-gS;<n;xsmQ&9WTu%RS3k)1YXQ~f?q<8@1BElWK*&Z z7m@)GLcFLZ2#6Rd6m;1WKLBB33eikgl(u6^fY`=_>zlmx%7r6W%!|Ox>j)IzMNqup zS5ea}E+P>S3gY1LyWsC|5DmVxlGcWCkd&s;-crKZiAHplNhi}Op%p6)<9fqQEBp73 z{7vH3jn^$ubzQH1(-r*Cv40p)s$Ye4{U7K!1f+=8k`xsvBZz6H7(~7Psli19J%akh zk6*oT<B=s}UDF_@^pQt#@YtPnFr~U9vMetCD+Uo_EK-wfCB9Io@j8L_wO;%HAxaeh zRh)eF^5Fw>Nwq3?A6yO|y;B0;aYe6nQS2ba0Tux$5?Ux`=F4@@;Q2cpY;tH?DFs*a zbf2+hLM=~2AW1Q9bZvEf<-xhNl@Sgcxr1(i0f{3%2mKn$4q{N+h4@N*p-{by3ec$} z^RAT<WWC}j>vn*I^nX>~A1wxD6wk^`NJx};UM>hDFh&|~6cRK+$@^=kz#^1_Bs_~Z zuZbD{#fZ{W5D&->0K^rVaLa+0`E8ei-{nA|g9IhE7)p^yfkd4{`c4oO6Z6yrq83$$ zLd49VC<vQ|QTv{d5TQyV4$CPhMp2mch9b1ku5hNIwc+_=(}WJ?X;gJ6Nl5WJ?%|?1 zCFnVX7y*b1=~hbhGR;UATI@pPJ-!R5q0DF$$86~0^#qgjU63d=eRD&)<|wZf$1fsc zzQ-bijSCU)k|DnGc;)eOSFZKZjGD!T#qoGNKff><jr_^3Yqz#0lgZZl`g+d!Z+$_d z(dd?2PF{b*4cENtn$#3bkPr<!D<uz9mE=PYJ#^pq{`%YB{`S-xJTK#de)?zLdE&&0 zQ8QviAcv6MY~@%hd=W`0K{1_9@BPkq{`61()8A-8P1Bq>apJDKewsCR9VXhPq#suJ zvz7g9X%DFCg$oxx`)__{eSQ7MThQ9t+Ff_ub;T7|Ic7A-rUx$?7WRYh&$}kiPDN6a zo_ykoFMR&<&p!L?OIpx--}~N$g{9&?w^#UmCEpj(Ln)OU%L`{20t~~=L`vz*{bzpv z_doaI&GEnglRstID9p^YYA!LM0DYv0SVWTeB|>ZzFeQEkI9q}X;sqkIZ{NPRzvCTW z|MRc6FR1eA^{;<}gWIyBx-aE?6<MkCh1<Z1=M6#SjaD?_AN<r?n$c({#?UY5b+3Q@ z><16N$Q^dboj=A)O$L&!;WtXbDq0GUTzlmD8*cdKH@@*a3wqt_;?32v>KC2|r0LN$ zc9}UB*;YWQ6keWd#bx4eig0yh^(}9C>zBX$KXxuiqbD@m8`{<<GRDujf6}^~H@CX! zG<VrL=Qdb;(LDR~R*=7omRYZmEeqsdeCpG?EQryVdclVc+AuT<+s@WEy0)_}NA>P^ zL|?pTMuELk;GdDbpB=S6sj46Q_$Rh+*=@Jpw!2QEcg=(E5RtaE_06v8O7E#8NEaA* z3a?mMpevLfzh8ZRZvM!1*WLS_@AL~gb?Vk#g;Fo#sCyvrM9w^aacUL9uRz5ReJn*( zt*%P8JxB_p`s3Q(wF?(6JpTCOb;|~eDA?Q9G;eI?jjg;j%~En!hw`4gFrBp4Wp>$e z%dWGoV>Wg<2O^V=CfP_6npu|8ZwqB)(Gts<W=8u*?|Rqb;$lRw(w~y8sXh4U*3;+P z_03!&7(^tgE-&ce19Qi&Uf7y+mo{4fStY5OS}ONVsu0ph19Y%P)Rf-FkK)c7O7KQK zMPQ<0rXn5rfe(J@Uw-;iB9cy?I<>iFU;E1o51idRcd2bV>q~dgYu!m}&z#Q>J-R7E z)!vN{{Bf@u0a`?<Szc5shn@gYG|y3kW;D8V>C)qmKbEGWqxU_$(PhHxW<+C5dax=g znz=Dnm({C9=~3D8fzmhh0v=>IXsdWUnUV}RV__x^D%^PD#64gBa%%RxCfdUx*>X7y z>M96?dlq!u==P@W&~+BQE~<;Nj(ARilrSjAXVygH%IZp5Iq(_@aIJJqqlt|`ksSR5 z_benqt;R}iErTpUwl{V|MrBET>lZWrrS=G}zWP;ZdH?l(M+I>afR6U`;uKMEVNOe! z>{laU$__0t>UtT5#|SD5V+|-#dNeGS9zFvCNqhFcCJOWdz@pcNz+(U=)$us0+30Rc zzj3t)9c)>tNl8^%oOd!1U!aNM%GZ?Lc4kw75om)n+8h(enM9Cz5=lY{^Dl)_qi0}j zNHaAflP)hbON)&HW~|T`hG_!@N}73twsA5VN_cl9!$O9Hv6@ZJVlZ{EkTg?Gk|;D` za{LBn!Um+U;rzI{Y-KbWc>~xgD8wE<s^vblY)4w&cRWx9XJ!QSTJ$>*Qc;Q~;Y^bn zJ;psCH5g@SAsyT|x3V<SzCG}~?XUi=fQU5Vn<#{ZnxW5EtLQT5G*=H!RFI|`*pntT z6C*b>E^c%`e7aj(9hs>^N2oo?aC43Y?O2m@LYDTu8YuqI0oRJ?Nr4arDnX;Hj-wBf zj0X3`4ZFBumZdX3{P<*Ugw^F{o9c4b<SE4u7jKZ3_8u!qUh#<G4+FfenPbp!Lh=|E zOI_xL4Qo4pK6dqqXWJ*AYp*;wu8X0}DsxqC_D(e|?>ip0P1aH{5+N2iPYPYax0jX2 zArQ2gn_I3_4s(~N18h$1fk!u&7SifcB8PmiLCsm7^Pkf4+HnbJAK_;L@uomffkm+L zWxc-l^>o>$U2vWq(=NCzLX5zVo}T{TsmbAe<EGJ>U?H5%0|g>!dGE3Ev$tF{BoH3G z#K2f5idzOna>p)*j|K(m%P9t^frwJkw(`*9o6nx_uGl{=dJqX(<-m9!B`vNUt@S|Z zLQvw$e&1#P9L$c6jF>SytvUda0<E&<uaP{2vlrRi%4g1QURckUtu*6Ci_!H)4<IeC z9Sb^6;H*;Q-XpE7EKI5Rykz45YcE1&?X_VhMT$&9AaZHT9{R!7BR|?Qla-}3YP47B zVQZnFwN(pbfY^u1O3;49oQ@?TRF*tW{HOR0^oEaL1W<}V`$b2CP8-F-e7fr3{K2*H zo}~r{j^0r@QIV5-zlNnJ)0?PBr8NbG7R9rmc44IFE!Do4_XVNF9)iv4Z}v7wZBW(x zzBugoz%ciyvFc8nNEUHu+kc%2@Pt3-O$sZSBPjys76n@?l9%wlLV^&AP%%WXT^K>o zv$DE)rmQSF3IcCiuqO@#4pN+FWJrEtW7wVyZ##_1RgqB!N%UWw6II}Q)D8?HCmBNb z#f_P_XJlwF?&XWD3jXDa&Aw!;2{{6g@Wf7|3GA$~$h^F@8Wc%!3Ri4is5c`?^J<i} zTOh*dyp$}ezQdw>Lqs>D|7WL{xsa5od4XFl#i}?dV*bIs;nO0M2F0w@t$kU9(lHh5 z$sfYfC<UeZGOvZ*OO=S_351#JZ^TWCl}VLw)+WaIlA@{cVHJ~v1T5umF8-dha6lG# z6Np}C!)Zs^1k+luSOi6XmzDmG^_c-`nHEjDDDT77SO}rY$OY`yAO4$WwJKoId+#Ad z)YQlcEUeB1sPi9Sd@2idaexw+M5Pw62v-oo9WW*&Ql`R;7b*R{NMsP*TL@HwAL%<S z5VKM^dI26bXRyMytVKsLw_sgLp(hhTxpW6pcDPhN#i)eaO0-uRX0JS6dA#!YyV7rc zp-TYEd-kmC*|W5?yn5N{+TOL*%Pw18Sy^0KURqihkLNrKlo`NGYS!6x-R9=Tg^L$1 zUcB_=lTTc_c<KCw^A|5%ICt*c#fumJ?g?mdaq-ykS6_MMm4^-<TwT3vacQw>njLuF z0I1vXA={|51A1?dSk*_@bsOs&=P#Up{PD-m+<*TAXU=plQ|J3-6VSnf2Tz_lb<<5h zF*i4k8H1M){7}II$N-m$Un|EAQK%R8-at}CUMPLj$hn=RdiLxiU%BU=)2HvVmvJif zr3h$wdHK+xLpR_26UUAn*Cr{HwJ|)vxwgp&yDCjTYcd00W47V`yx(W1=1|FngBF8# z;h%f%xj*}#Up;;L^fS*q^S2_Pg9i_uIC0|0ks}8W9m?5Ikmi{dlDv@GV1}AL1I^E% zy)#WU*@Z~IgADLuPoi)YRg;R~>?03<>zm)a_q+GDZTs>F=<d7ko=n@Bj_wd8eG$pb zQXYnPyY0zcUbc<4@dB!}jk+*2!)krQ$w~m2Y)!uMm3!{F=gWUn0e$d8A0E`%e13h| z;dzEMnOV6Eo2ffgY1RmL@LKv2jcrVh7gw?J$Hyk3=a|~I{i8qngVU!^|G&*Y1)ZUc zG_bPwWc$|+k#U>QhDx`MVliy^4)t`Pp+oBZVA`d^{v13%*v4U-snqaJr?L1|Rd2cF z<Q;e1dHC=Zk3IH-oo79~2%n5*+;NY)_aAn(EbjPi_#}6Iwlqo$0AsW$>Pz6$8EYyG zfOxV%an2YmBR}3^3IsDVN6*naH=2=exbcP)H{E#Q!lgg{;(vJHfio{vgKm56>sSU* zOG9_aw%GAREv)NqvhO5v*b1J#M*n1i{BmZS&F7SZn=xqn4f}y8%?n76UHGj>H`9uE z9VV1svxZwt<9IYWb?Vl)zU}t2XCHYfJg@ZH+g>{~j$$_h($J9qvl~lix2Er`Dso0Y zb7tGxw6!){c8>2*DuI7GjTwE*eHai!5<OmA+c`xds1xmRC#Z}%Z}7^kx8C~3H@@k~ zC!c)!>8D>%gKm56ZcdoH=ftzG?A`4E<QxX{I-Bf}Yunk@G;g&zcTU!c8?wSSm;UAg zv&76N5Bh7hn^Oi+1LHz8Ne5(r0;A5}m1P@^Mki06y79z`??3q9^ZBN9>utC7h;;w8 zt0Ur|uU!dXFP@K+Y&&jjwwqhlb%hho;rIBV&c{&(vvQO{TNIUDQqH~T$>OM!RYN>_ z=mKXreU8}Lo;@pn@6B&sUfOg2{ik;k(5X|mzBt2+1#T;>jA-NyjIz2J4!9|P-<y+s zalM<gIa~QxE9ChB_uY-c3KA<bqxWTQsy9~_#vhA4IifiTf5i{!Fg(hjC(E9Af8~`| zzU^(dfA4#Led*Gr8Poa2_q=BpYl<NPPNv+P<n_(GzG+)iYg=~KTUi2{kuHpNaXu}~ z>B77&&8P7w7#$+gb-c9MZERWPvY^xofT*I31V+K1;+Hb<r2UkqGikN2HU<e}&xvCx z_WI0{kW?exZV6PKi}H{8`k#OOzy6p1+=uzW3?fxzeajwuYVyRh?dF!XnZ3`ODWxhQ z1Un+QG>Y+9_bjGEYooalCSA;^6ahi&oSiX#HK+mxQ&BT0)I?R3X3#`|n)e<|O#!Vf zL{yqxh^nx2%jzhAn#ROSX<bAH;O(DWsKX{g<(uC4rUUyA{K=pEv4bt?mRn9vr*`&< zt?%By{=NUR{_x{l&zx_kt+zVrK^aBqqg`LS4K6IA-z_m=m$@~yHd`E6VD$hCXZuRF zk~@fxv(y7KXv4_Kp2RzNGET(kBWPS_NNVnFTs7!-ec~ByMGUje>i*4a|Ni|q-E`A^ z_uaR(wUwTl9(nN5&8N?|ZQe!$=4>&=7*gt)bmc^oGU^sPMu^DbJeC(#Q5>+hGKXZ< zIR8T`qqw&3f;CtAD3vZb;N4aJo#(kdshaHjfFk17*(YqX(Rv$ueZWrQ!otGq-|&X- z-g_^uxZ!7augr&6n=P;Uv<+nn7iFLkA|j)N)#WrdhL(}P>IB>k>EKr_v%~SLBK(db zRoA1cDlue$7&@(2+g8rHttouYwg)q3kh=Q98C+oCo&ZhC%tp8q=HmAHv!`{(CRcVz zVNUocn~{K`NdjTcPS6j3gEC(T2w;Oz2CBIi5ckOm1VmL$2}n|f`dF_h=+YUyz0gVh z_&@-Vlr$xu&YVqJS&5j#Vn_NB$I3$@jiN~#>#N4nc$a=MttLA`pa9F0=)3Pjt{ABz zs_?@e5aYZ(FG{uOQF!PQ&RnesWXpb-gPE!*U~#aRAgTHQbd7*<bcO&x7A74vG9GEt zx?k+^xpG{dlzuY@1j>qY_QTp@lBI#SLwE4MIFkgHVy6z@_aKKAiN|=Or)$~bGf{^^ zh3W(Yu#7P?$5g$jR~A50n1yF8F}{pn+ss_ID%3()<3`8hG;UNAATpfj7z{7(th0x8 z3`?pNG$H{^r5OyP^!Y>OaMaY_FeHc+8XNjS2rnD`L$a0VTLx^wIyWn2yxVnwIZQ0{ zC>s?B0eQTKLPh)O9dWPJG#HQ5{9KwF#lZ^22b5fBM+&lo1-L^kDrhbOQU#4k&)goK zGEkF@63`)4WRR-6g}E4Xg<#u6aH&jRKl`qd4e2uq)jG_bj)i|r3iB7ZT;L)@QfPzm zC@n5D3v;PyTr3e8QBt<LX{E5O2a#0En*CF0WW^J)OkUG+gVGdWAuaXFQfAuS#=si0 z>Nk_ZW@M2(Ma&s-#gj!MSEzi2TT3|87vW;8cu5PNO=y(sZ6*Z=_s$*KH#av1%O+ZI ztE%taRX6&OzAJuJISaMo2m6DvaQUn6+Foz6uff@~`s?4s%*!ySw1t$U(xem|n;!QX zILq3Sr~@&9he?_B4`xl<$)vR|qv8~ruy18_{8fv4SDM{`UhL?qY;P>}9K;<nl||tP z6-i1>p@3HBGz1k287(jb3j-;qM=(yKEBaGfUWG0tfC&I|W?#?h4`!Kq%^(ouI15AC z%+BaVpYtVAj%Wa2W>1})KKWdmk{sSYzW$oU`METRE7~J$&W)mI3HDA41L_$PQM*~3 zJ3;NwNhs$`<?M9e?X!?YWVIG#A)HC|Jq(wG{wRoHN<EmbtEh(bz;bx9IuuGu*KuoN zn^T*%%n@PYCdmGbn4oDHFRW*$gl6NySVw6%fLE${Y{ToEEL0CH=yh{2`Y=19dg%B& zMC$EVsx>i8no*qe_G}wLGwcyFM1nt{9M7n`u$)N8a;758*yY0NBes2X8StoaYNq>E z2~guP4zA5zbNSr9)lq>HN@~p7TN;-0JKEs8oHqp=I{J<tFTf1noYD&!sAxisgEGvM zX0G6aw&et#VW)J^ETRB3>8$sQeOM{eT~f?TI6yXlev%++jS{7WNwH_Cx%Tk<6$gSb zKDc!6XM)K*Tc=>>ocDoaZ?EpZfOy4!_GJH|ylVW9TM^8(FDm~RD1%k~t9qwzLgw;W zHC|RUg3=%PLe`_HP%Uq8U~!2ZD1>~JfB{uGuy=IiiiNe6rb&VPu)4ItmXzk(?2xx= z6O7Z!cSK)vRbqHqht*7yHP?m>%A44QI$vA%*n&MN0K@^1Ktjt&FOf;~13rZb?YTD! z>R3et0sW)PjEOTCEyhoR$ZGP`v+a}5wnk}^?%mVuzihO3rCD8W=Ete<=Z9E-A$|I7 zm^CGVDLWjWGw52?vAZ%OBj`Q21#7g*XaH3O2U_Cr98a>0ebG`l)`J@l;HMv?W1Jvb z4)v)6BPRVhm(lzwLlhhqk$$#S0%&~ZLi^15=-H=)`Egp9)79l>Ww}{hYL*w%Xymm@ z?>w5mVOP$mFZ};9L^m*T=hhZ>@L=Yw3@?QI`swfpug;(qG4yH{15a^5b4}H_>L~yK z19VA5K~$p_6M?uopbtl8gP~y>;gw)74nGtpB1BC4qu)e>72H?EvTSU2>sxr{LKlKB zCI*!haDg;N8+cxndc>k|3YE9mvg&w)mOaQ7$$=$?V=%+a_)$6Vx6s4;`IPW02J_Tw zb|r{&XyJX>GF&leR`v)FQO*tmSU<aTe_(zDD?qPs*c*E&u$S?4v7)IE5R0jlfK?Bq ztGn*7U4en5Ozv|qwU6N(7_p;6Q8`qM*@1GwP)$GL0fTdiCEU%-KKOGs9Jux2#yVJr z7;EtV6F@&`;BLa`$Nv#5x9Zjk4I7BTEH?e_6)8I#yjVeP6i}>2!~zlzkJGE$JJV|1 z-efEj?yT}F0inzQc*#e2Whqig=4Gdy-;O@1Ll56c%z)N;F6#%WQ9#go>@a#6l^{qC zXZJ{LSSKL+jJfm&B6^mDv`UH<S}XpgLJZi!s2a4D!5Q&I0Iklx#;mYAgAX`_0+jT? z3iee8;;aHytQ{w*!)a91S-_&2@c)GX`-y@`j$PLE17HpNxL$>a8qR#37HNl-BBz(8 z)I%9(3~i>_-_Q0{ee;VBAluTkiJ6@m$));0En_-;;!-Mf2m*@2U`DSz1B;<RDI?4! zS*nu=QMk!K%gdB}6JZjAilrd5B{YS5p!cSVF;!<J!!e>tE*NIn^-#;+T@{U=@eB@z z=<rmTKI<@HpXgUrs(2M-P<EqC@$|7Fl*{u^pIj@Ya3xFhLzS!vU{mMNLV-&$Bn4FN zGnP6)XHmk3mX#!aSNfDxcQtd$0XaOJyaa6@opQ~xn#0K8CIYvTf_7C~k~$J9eQj7r zFhgz1TT%QGqnTIBn$pRyH`Fk!UCNj`f=E+Ka+ee;gTU$`P-67}5>|&g12@UGzuC{# zAPi$r%`$`|v6>oOit$?o!A<;s6H@1&1c<?RNPn+IcwtQ8&ZQ4mLp$q3NyIfm(6}sm zIz=32Iy@(^_%gHpxP%!=#XY+P#qbk$q0W>dsP|u`y6Pty2Sdo*=9ub9_kP1Q5tP2h zHxZ3-!NRVBD0^XrjN<=+(kCtAv&hopup#3{dM{m0?dTKtAyYo4eZz4;2BYuQqxT^H z(A2C#keDURfPJ!1^$wNvg#NIkBKQ6v%6ce%iHOxUSXw;Q{ZwyMtKA5K!<P-mVcD<p Z{{qs%2-i**=i2}P002ovPDHLkV1g`(_J;rf literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/subtract.png b/release/datafiles/brushicons/subtract.png new file mode 100644 index 0000000000000000000000000000000000000000..c28975ecf20e698d0a31dae480e04821322ed022 GIT binary patch literal 10173 zcmV;uCqmeXP)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NT?1QI<%S{MKTAOJ~3K~#9!?R{&IW!F{S_pQCpef49ydo&M8mOY~f)&o?QVi|03 zVhZC_nYh5NvI(YQ2#=6ICcF)n4MlK5Ab)ryBvpwMNDKiCRq!i>3PngrNHDfj*s^84 zDC;>h(#-Vq<G#+>Yvsq<`<!!IEg=V!3RSvO>b`xu@45Tz$6DX|*0+{`FZ6Nt`s>f1 zzxnyE6Ttg^`28t01Vn@)F~%y!SXKAG|400f!gv3J@2Tr$N{y-}Rn>Iu+O^%?-HR74 zsHPa>{{DVkE*CHWkRU?&-QWFBsv3fjG|0F9-EaG+KmAkj^6u=@k4*PxiIgyVkf{lQ zstAEFh2j4DKM<}quUyp0%uMas3y;j^X;6s>0KEFuuin|&F*8w3rfRDGB&j{OyJ)Ps z<BmJdojYGQbyL?7rfNpg@6^mj8#grLS3PrWe0Et6U@(NWty@R~jKE_0?Aq4(;o2#Z z2Z!mACudE<bz2or-TXB~fB;62q>vy2Lm-6|NQ|atOh^<VObiJSKz&|}4A7UfT%mn7 z9#3w%=_V1*X0xMfckjLTe$AV|*35*YNC?3f?stCYKmPYW{KI^ucfRvoO;c-1s;Zji zv)S(M?$s+-n$(Pjqf3`A0*K4y5&(rF^3dlVdhE|06Jd~Gpb-D?CqDF}AN&B{^f$lx zktgRQqd@omB!m!1ijZ>p^yxRf=}p7YC@kW60ID|KzjXD=WmO$i0-&m@H@@+WLaJF* zsHg&>^$gI%nVE%~&z*VAYrfRXmQ8IyG*tsZ1qp@3sygxN%ZrWuDF%bu%-3$`X21*p zbUA(Q#M!$g4wBlF7nV<6TAbM#R26yZ{F^BP3IPLz0wEZPKnXztBu0gb84U(NXsQG$ z0we+kiYdNW5B7ifp6~s>waJ>ni2RR2p-2#tLBh}d+|OLRc=7lP{lE|YP|^eg)cmpp zC?teJfD{A?6b1=?z=d+*;)P%M=l`sKp*WpR0l#|yVDACqsVAR$>ZvEM?d_$e0Z5{J z#hrKF^{#LH#$W#Bk39U)LjYpETmn$D#nSetjT+a+;lz5pbn()sKJ}+&22jK=n=b+L zPqx%F?|%0;hY)`BgCF3zyWf%2Qu3Q3028M9{=t=p1@+n}42Kd#NQj7!RMlb(uYdjP zPn|v!L_{Q1F)ro}Xdn#~Gl*ES<>Fdu772Fkz`_hwCF5ZjR5qyM`o_lDvuAI({)UZ> z^`@>>L`0HmG$fco#b`!>HfA(!%#4IVn?yAxj5kLoZ@TIFn_syz8ip!L-84cG5eh{$ znl><jBr}>dpqMG80;rlKRFlnD48}VQ0~J2@O!~76&y7d%m1jq<x_&&YLX3Vj<*8e~ z79c_MZxjHg>EOzv!|_fvxsJXQK!Z>O=Ef`dgp#s8i91`vsG591003f|ATV<M<gN4- z0;pyr2qc5#Px8&ChJ#siIM-;VzLP<LDF{;vEnmZELNP$xFbXUILWn_OB+V2ihX3y# zJoeS??d`3tZ2*hKe0O(uI-Pz27rOPf+ur%kceTeUF9}70h)4)wclX*q{po-5Vi)@1 zA9=qfHMfWP^!vdlB|m~+OhT;U`+n#LkMTF(_x(SRnv^uTH&rupe+e^F1E5-dRy9ja zy8FxSK6n270}p(9#f&sf<L}K|h9qe$BT}0!m&<yoNmWx_H@mx6pLpWQx~c#6H@*8; z|HH4WTqqlMztwWW38s{ue)_2=o_KO^Zx66+L`We>E*FcR_|QN4;0NyaH%f7Rs;X*g zYNlqY`}_N!`OIfN{pnBd?p`%Bx``lZG=-|Al<MX3Cx7y%@`X}LNz-gzUwCfz)W!Mb z-T8dcT)TGdi6@?T{E5d?N`M(m&3xcSbF3gjkjr}c-tYcy0CD$V`S9cO%e!@+Auxyq zy{fZkv}r`B3W^CyTHY?I8(UlB@mN!W*>xwcBgk`izoTx<%<ZTFO!a&@y|kP@D@>D7 z7!5-ZI(DLnsf8e~zWw%Byy6v`8=Jl>2E$=oER$Q1yordE=1sF`nuf3gMU!l894a4A zN>x?8@|CYVb=|4aV3aiZ5SGhjgqiu6^JavmWSY#(2qc{^48Yn5A#n4=i8E);o;`bZ zJRTcOlR|)|fg!3Tf`q{cF*U-HS@N}3GbBvsDaLqad*_B5&YU@OW;~gY)Rc^63D89P zT7aOzKtpeTTApE63*8)S+_Zh&saOS5Q>v*1F;(^Z2x}*AH8T+1pqfQmPPJYDFi5Bd zqmAn)CvG~J%i%1IhZ2Kte8-k~CBxeGEfkg$Ou#hNsh(>yGg3k|-n?nFcFKo6o9naJ z>Se7}lo-qV=p)*>#XwlG+5k*7EmAWV36rgJ!|^r%`mn(!>9xIdaktssZ<dXX1`-27 z^7PGb0S%DWA**RUyV@-F2IH;4<T{vp7GZ&j00=RXWC&q>5_e7vc<SaiXAA?e;!mtI zS0u#`S-uAc0wDdfMSvi}2s8LbqWaXS8%L04Alyfo0Rn)ue1uI*NEjfdfEd)5-SV;< z4OD}v5@tr2n%g#onZiH?K!s&<VKj&tV5X)9gQ+SE3K{^K`UjL@l)-D>Wj+x^8N<tu zFWk?zkDG74<<2|rJb%kAJKNjctCmjz9X#i6vb($c&_kd5)TjRR(MKQs;tXhgef^#9 zeAo5Y-=M120cI;0wP1MkU~=yv-7^sih*(v>@$0|-Cx7y>m%cgpwzs|Q&O7f?cQx7b zue`gM39e%G{A6`V9&mKSDgzag7cO4-wO{?!ix)4v_<-Uqw|>cDu`Kg(%#E-OZhEl4 zKe)QCL8PWB_XLzP+oS}u{r!D2d;008&z(DW%Plv@SpCr-{g1k?j~`HK>N1EfsOgP{ zwlbh@@lum^cdwe^x#yl!)!A&Onu-r`w+1!!5u4e3zA#e<U0?qVZ@=fBd;ZObKm6#U zj~pG4-^B5|D+3R<M$)ZgT`%|d51OWa=9#BeZEtT+RsB=jyD&)cB@Pw*BIZ6SHO+iJ z|2yw_&u}>Wm;d4yKL7d8_h+c-ot}KjrpW^W5rcq;LI!G+nkG%B)5o89JT>X^<>w3r zH3LLwMiE-}a%Cj>LRPS#0-~y#8UXcj`5oW+_XgGAeecV7G}cW5kkr(m$(9M0>~NOM z!6!KyhzQ3+#>nZx!QtWFbb5H<nP;4EaNj8IA83|+yAZ0NcmN5SV*pwe9b^kBFl(BI zBC7hK5B=kheB|Fh_~2*b?p|%M=XRUDgJxdq!PL=5#x^FPkucIg3+ZZ_KTAudi8;I> zK&3HzPW9N+O_jrH7E1wOV`F198c#;!lu|yDrmA9M-}FuI{)0dGeO`aZ*JmQBg%7^a zt7p7fPR*L-?8<U_*;EBe!DJLzrjX4396$z#WZ(QawR6WEcb+_Xax@x^Cu1p&Te9gQ zMchpTEaZb}FQ)hF(F~dvnii>9Xlh6_W=z~aND!MZgo3qE3_*jCL_u8YmZ^$SL~gzH z*3oFZb8=@go&eCKMk~QZyV@4vB#mWQ2ZM=PUNVT9Wi;JrsvVaWYiUXo<)Tp-o2CJ5 zJPN}~L>K}GRdw>@$r$6gbLT|D`ue&A5~7+M;ANZXM%PI>vsh3EK$s~>7=3HNXw2Kf zOw|%h%aO?@z`+EejS3C3MO>t~v9Wd2xf{pB>eg4C^p(h{SdCCKkOG=ORFc~|0yGLO zsu^>{K;~mf7>zI}K^kF3P)t$|K0Kb!rd>n;8LsU}7*?aLYOn_K^A|a&?Amm%3VhX# z;~2O$ib4F82$?_uQa&|8CL?LWSWcvWBh^~E){m^YTcKEpkdQ~KG(aR!I9k76LX5)` zlqd{_3=EgGUA(*id1b#A^6bfBRq?v5!FUvcNEJ;fL;}c^30<m0Lvo&jrtYoG6fJ{9 z^~n<kgi0BNqGk#W5{Dbt3qv(JK?G!$Ma{$vWHN}VkvN<w!1+=sc>398jGT<(#w3ge z;pA2ogu_8#A#`FfTd)?&JNT6B-ZK3pktPfSvI-%DYDC6rc!Cr#LUMp$5SXKBF;fC& zqDf7tOSoSnxqr|+7bONheklZUJPabTJ`NJZd2S;}C8<yvY5ol~HJ>Di&=?03j}jyf z0ijeB=i3ctCdQ1D#Z)C5Lv`#9r~yfZrYQ-Q3J`}$fT{{4N5c?AV&0;r2AYvjnvhN@ zp@a*T4`-Z&IOz-~4F*Mq_%Ji0i3yAb6M8H`x7;2HnQv0dv6n&x%Vna-vNnLR>}Ti8 zeCKGvs9^R%1k8%hE-;1grS@}SCM9aoe3M3q=BPsmsA`^37$7jeC1x)Om>|MwIiW!f zLRGf@0;ZWn%*M31Z_C%p7k4U8S}c^0Cw*sT3zwal(RT=-MiK%ugA!umVVWBvHJIf9 z%3X$8ck*FyIAEq3=UPVlPPGs)g_&DXWRC+i1pzIFKZCXcPcz=Jyhe5mLVWr0^5csg zxpvsQij(nVFc^$R<EpAMYHRBGe6d)}4-XHMXFdK>2UJznYhH8D?RVVqs#m@$#FB9| zLh?EDbfCjMGkff@$3FX+2R{Dsk9)H4i#edL`&)0j>#n=1ShcYNyQB|}M2>B2nsKUd zxm<qo6QB6)-~O$?(12o$cinZ@Ti^P1)?(L^v_LPU???Enk^O3DPm0Li-rmps?9Ut? z9)4j1+S%E8>s#M?!ws)+&Zvi`dw<ji{k^X*I3`D@K#1Ye#f!i6i@$i~%9WQip!dG_ zz2os(F`q{x{4SF3g6RG%6}C?#XZ$*Xp}&}{>*kZ6{P=JG)}OzK;f;U&Z)j43B}>_u zXNS=KkVmN5ljI+AET#^mY$ZZPdnIT2Y`I(vs_G4I_{vXx`cp4NGn7y|C6rIqV^_2+ z4G8V;YK4NT>Ic4Qn!+wnO#y032F&NP<zg|N&MscMD3p6%bI&u+JpI^XkG<f4R5j-y zGBwuwrJ+q1^k3>f^#K{IX&MqKC4j05Af-mlX0!QxHk(eT)5EF9K07B*e)U&>&4)ky zuZ|y(sai|aVdcY-ft2xxbubw0;9!5TSWIWLy}dnCoy}%I#^V_*sR5QeIg?bi@t9Uq zI(z-uAOG>6_^}`R;BiZ)isP9owEMQhFg;r|pD(7<>A}Ill`B_N_3+@JY@^IRbf=<Y z0W~G6A*E!M9XlqmoS1sihv)e;@6p}e-RGWr?%8Lbz4Yv*-QBB;`Fy!pw3AGdEwjW< z8_*dx)6^t2qwt4+<o(YZ&<l;Hn1Oui+E>)BT)pz_rDrc)x_I%zg)3LC%;)pPVxekn zg8%3=7l`MuPtB4hZ5mVCSl{^e@A%G@0cr1%Qff3UmTA67^F=e8H}geW*4os`HA?gO zd_JGgrnA{>+BA)7-;Cyfski6LlbmLNnNczl_vucW&YwH~+SlIK+tl6evAQt>4yW3v zA3nx_;V?wu`UENI)vH%h(o2^v&Ze`B-n)Ez3;aC=C#~7&9a+HO+1wa{nVG5z-u{kv zeC9I`c-C2(q)pP<GR@|CI8W1Anl00OuJeV?7dl(2zkV=nrn5AiEvK`2(vr{seR`Zx zLC%eouVox+P<2TYLkJQ?U4~_*s;1gB&G&xa_vaZpm^DpfpTDqB#qM6+XwM*a46p@) zOg4Setg&X1nKKV?;4z(2#80bpw@x=Yui*~63f0!uRyC*qni@nEVyZ!8I2_)0-|Ig1 zu|Jl&*1FM@ETxpPp*K@A&k>ucYD(6)Ink6-`GXvo^rDO+xbX<2{GB>q;pAh8K_tLR z@>$hXld7qG!`t6ZGR)&G7q2W2XKA)@1Dm~PwmjyMmo|&Tx?b#Gdu}#c&KC82sVRRD zL<rZom4J>SIZ^2hn89^F<I(8$SKq#~vpt!t6_e28Y1KAQY{o^Mx)h^l-c*Y-&vC2A zat2>`72ol(q+MGAwp^z8T5Y{!<_5_SLI@#8WC~Crv=T1fci-zGto?Hom5ZnSa&${l zHKlstt7q0EGl27DTGk9A%gTaaG>k+RB&w>jz6SUR*4Ea}o;_PtgZ1@w$4P1`6f;m^ zVnJ0YDW&KMJ?luld|o`=4N%=oLt!b~HK%+Nn#=+ULSdCUkf~ajTr<QF$CJsRs$9a6 zA&hDkGb&VsP%2~Ikd7>jIoI6tk)$e2wXve?px+_$39pl>nav^OcnE?a5Wr+Ijxla* zZfvY?42Pr5%@e_OKR)w4S4}Zfb>k6TjK(rW&SYrbo<_|)h`A-{F`oH83`nX9RTJSL z!b1>J27}>XINaXa-rnA>s%ktQ7vKiTx!^Y3H}UH_3+t?c9|?mo4=0bz_v8y_Xw9h_ zH9*m55R(&|8?g#oTU+DtXgr>T7)3&VnG~d!`=XmzdX6DFO#y>Zt&@3Vyy{b@$aV*2 zD_Qi`CzyF+WVVcyaKq*e<Kgh^4O=HRMs4aZCuOWqO?Cug<t$tDRD0PNzI`lvf=mpr zj=}oAlX-)SNQi_;98p4@C=F(F4WX%`#2^%eAkI(8>Nupms%n;h`VCl?!4!%b+RK$0 zg;2sWkDXI=p5G7#84lM@QsQv!v{0@b5R_$F466Fn&fw%`6{Czt&d)J3V#T=R&Ftwl z)mW4#PQ0<D@|Z)5ZhyBM87;kTo|ul50EW!cNz3h9NLtsrY}5=ffMg7k=Y^S%&kiqZ zi~QK<Pi3Jdi7aHw12cdUvH+p5YGe>H3^oRnZILPtH#16A-+8>Y-;lU=n4Y|}7>~lK zt*VN0=HyU_K?SIkN$OA?RbvlLJM$)RhAz9BG8NXzL2?$XKpa8<@hH*ENQH@-LWIhc zv?i-Yo5sj2?M`aKBoch5yQI({AY)M?nv<rUs58KnInUth5-ZDw)fsWC##?c)9>OS8 z6N=<8LmW6dZ>t7r5|TE{S`OzaP%d6xig4#d6-7>M4+aCNB4dO?1O~HM#7mCN3j%b; z8lXDs+r^8}Hq#r)3L#R0Zvtakd{>@G<_Zj?>QaRvffhv8#-Rz8R5ihZn<zDinnidb zf#n;3JQLXvWuGDyOoY(_2XPY&akvqyNw&C_h1w<tPw)U*sA3qD6jMtwU#h?^US5*8 zx>rk((ICXYVHHNhK#^EboiZn#iceH48Uj}k2Ph!{$s~>_F@%AHs?~yI&!d2-pXai{ zNsq3D0@a2pR?k3UI#VM?!w`kzQCu4v$pZ3AwydZCvgXb&St1lxqb+E1>jwrmBEG*1 zD^DL&&UA^Cn1obQH+6-C_v6?!W&&NLqyQy$)OeeX)<V{kC8t1A3>b`e`Vp5J#eeOA z1~YH(R-^o~6iYyIVztXL8_2rRhJr?CGb1VP^0NE#TuzH%9sH23{>?l%LRko^tGTjD zs(9N>2owcX4%uivVsmo8M4n}e9W9%ng_%^(cVu-u6`e&;g{nJ{7Nlllq)ssuOJzCp z;(jsvW0029$!4^YRxQ7Fc^Msj8(Y#W=X9Y&n~i{?XaU&D_%a9U;g)+4L&<^U&>4gp z%XDNfQ8rr6F1xMBab4cY!aM<<XhXibmP!?e`aUeRGB_0bf^3#N8JQz%e{)9Uu$*Dc zc^UUd)<#dXoKA+BDOC!DH7yR#is&!P@><|glEYpv1Y=g{p+sdq3GEyeY*3;TmsPZB zWkb>J!S`y;Mfy8^di@-0I|$34>M=`)&REjcM3=3~>ElucR1^~)D6xwu9XBvfp=Ex# zl!b^-dOi~dLX~LgmrPt3O{svI>r3)FWml7DRx|%s&I|Lxb&Bt-i_JM&mc{9d?Oslp zz5ICj@$%!ZM85UKE<vtuY;109tgWq|*gCPZy>nt~>%`{fWNm$IZ9EtZJxA5c<g6qu znx>h}rhEH)`}+r%E?qp>Ke)DcZGUfXcXxMxfB&!E1WhKBTW|Z48*jYv%<0o7PHauq zCNaii+53J@<ax=H)hDgE^?7>erfH^!(`$Rzo__kNhd%eYhaY;V`66Y$zi1P5`t<30 z?!EU*zx3|ma8SyG>?K{dgtR?gD*woiuk}Ek=p{@03Ef=F$(&y`m{)Z@{`lwr%kTgG zgAaaIRsWw((E9rNnKNg;?91-H_14>*(Xlo$++&1}%n^^>G@Xidg>mL;!u<umu2#+E zT32?N=r$LB_3G9C_Fw<t!3Q6_eEITU$^@N0efqAu?mB<|{OL1iQqnA@U6~XEUToX2 zZ;*PHrvLhi@xd{&{$s@ef8L8Z<n*FL0FOTU=pX;D|M|cJ4>Ub}_+My(?!W*3#j<WQ zx*hM>;~-z!Jg?sEkr$8ovm>&N7uiZjqznCH*q%O+VzA|Wv45~%H%(nHKk@NTeC%U? z{1=>{IGZn8!HKm3w_|4Id6uW2nqHlk-iy!QN=FZ2w^PafrxYThcjeww>rug;;PNna zKA-RJ?Jesi!P{=T?asUIGS%Pvz5o2wQ&0V0PEeLZ9Vsn2j;XgJ7Au#0b@GOidRYCt z9%Gc}Ij7&e_kd~Ad>lw~aYPBJya)%a+}u)O#4RPSjD)Gp=Cj3o;bG=%dU*Bf)#Y;8 zFa9`r^12&ud_{=i!3Q6_`qGp+$H^;RNYn5lXKXbqz*c}|tCPC=s+nm@xkUp|*G*kF zE^t@XCN*9)T=M7I2F_)8^bEH9FEcEci^X#30cc&<DQD~pD`aM{l+yY0=il;{x75q# zqaXdXhaZ0UCGVhBxyOp`=hzooh8nF1#K|&rG)gYKw<Cwq&3}`cy}iBpZ06a(!^6Y9 zy=zU=kW48p7K^@pwNA5fj91`sD5Y444n&AgebX$L^=LGF&wIYrfPeQ(|Mrnb9(hSS z=y^NEj^8}TsC3#&l-_SGr-hFEb<zy*n$*;FUDvfwP}4Lir6Mx&r)`cdr<Y2>rdL~Z z;@*;9F60t3CCHXaX(<`sb4gXrm_+2;zWqC<)9G(~^rH_x_}Leopw3?%xy$Fl-{%#c zmD=N89WqK<r;sZIRBb++UA}yIu~-7uG|ler?%{Om5+^fDs+oVb=iPZ<l6?%UWsz#P zX{5~U<Y`lA$rqYw)6}VnBvr)BM#Is!e9N~!{mj$9^2;B2Aq*A%+G}6itM;;$+OPgk zov0{po}wtU9&lczoBT~MGg~Z|hX)7C<x*Aark+k`i^W{EY1I|^(!FWULMW_AB+!YX zR-(ZUv!l?~g*Nni2okrpwzs#pLkL#-EqHo&V`K9xzv`>j*ET-)xd&fBly|I8&nkET zNQz~nO_OgRzfKSg!WeVqwUC1WqhvekVke)>gM)*M7cb7|bDvW`R++}{>by#x(7Hrs zS4GtoB$Rk%<>dF*i7ie5AQF&Ey6L?Ie9B>28;~@q>3#Rz_qx};?&p90XD?h>DJu>4 z-h1z{eoM_%Gnc7qi=_*AESV*>M$KymTMXr1DQ00Q%(SkT^ZBA_nx;wf`E2jnwb^{$ zG>waK@)YMI+R7s>R}-!z<VwM1@e4UeUA9MC5>e6^W#4DLD_pd^wY|NwvlFYT^Qk>O zsz1Ks%U?g9OuVU1-a*q@ww+1MB}0CAn#Se}ZTaPt`Zl>oPSdw)MuQ<DNG8pj<^FPh z%?si*E$546+xQ?mZe_O{tQ-iGg1RhT$)dyFKC-^f?Ffp<1hk9JMMk4h6)O@|RSgD1 zPlL1?FTZ3e(qRQm><zDf!>Q{|{pN3e)XA2(to?|wNw#;`>>uXkT{JeGrKHdEVYGHo zJ%vN=TOjn>B$6g+s>^-VhDIWpB^2z_n$+x`io-U|dnH%JFwcgt6@wIrZJmGU`vd0O zj(N_eiq&W|1Q=rsA}#`TRN^gu+EPd(g*4Sh_10T&{jTr&`yc-BzrK3)YS=z|`@vKX zrp>`L?N8Hep>?t*Y28?(#fLE0AG!U@&a~u~(AEu^T58k<kEv;v)8+iIsZ*0uol<I2 zoirt+lAiJ237&|}4xocOMb}Ug+9kfX_EolpZ|H|2S>+C(s)i@FPHb*&PR8TOWU{fb zF_}!f*H9m+SPwfDb&`$8<1hb;ulV1e{3Nfx{To(&CXYeUtKn4(P}w#5@K;i57M5!F zdd+-yIp4Jme>^GW1_XmjV#tmv2=jB8iMPdIDG1Hyp!H&%x^87mMc``Q87mjnO(v6b z=gw_!?|6B_U^p0!M$+d@aD*4=u?3_Av6LkYN6?P-M5?QCSWyQTAx}wVBFmYf>cN3o zQfP|?%4JQ>ajkcLF#;B>uwr>)L~?ni6_J@k$5t!@BLwWGhV7)p7zcx45HVsr8pl|9 z`@-ToI>w?Tj<ZfSyS7%kWu^uR5=#!%+ETu5-}GQ=mJ_rY_~M$aZ?U1O%hW7$jGb!J z#_P-TVKoAl6e$_d_+^4Hgxsnn1P&_+!7YsmTWi+_RT(T%%}OD&_lYAQ!u5^KGpEmt zMk5eatTr|`#^Z6jUwnPp{ma77+>y+BHQFShNQm@k@Mui}dTG?`_B&|N2O(Kh*9p+` zS#FcdC^E1vtj}C**?O+Z^xKA-<)RD%;^w(S*eogCQf5u>kr_fHA!HR}2qIqJA|#+m zMWm}8I2vR2P6^v0%WQg85IfM^<0SG{Vpk-ptMm=6H(yy5QAG9HI0!5F*d<V4&sk*( zgEV77Tiyy0%R0AR65+6tDrSo-goLc23L&houUA>F8n(8#PHb+55WUcBI2y(vrB~0< zZUZkw-k=4lxegUH6EJF_1=vZ0(Q0f;c0D&&%2P&Ik;bB&;ZidMm>&6T^2in~jgfLb zysd}NWw~YR=dI(ipuQ^Go3Vuu0ECcRvPlr4t<PZV?K;Wz>gnqK<*rU_QwjMc(lkZ3 zI_s=5?QIt8@R&hM<I}!oQM1J^=c?4_Xs)%jR&8mkVL?kZGRtAIhhQ!cH>xr5P@ez* z2QEoOK~&L}p^lZ;wy&+NZJ*j14hIB>gLvxX#$+5tgrLL_Bou@tEfcv?3s+=9&*!h& zD8)*+OzRqDMNp6O?pjK-i=vJ_r&ch1p2)TnOj}BmW${OO(IaQRr*-5C0q!cI;xd`k zcMR3USWyN5B*YM_;c(FB^3mru4IQuGEfQGpWBG3-dsP6A9pP+3h?%)zkH%py-m?yf zxopi=Ss9|tubHd13WC$;9rC`Fw2n7&TxT>wq>6)y_^24;U=pfP?noBHwdwF+E+DGN zX}uT?8d5^Q`XsE6LkPM0aNuUkCGzHy%&eJmc@UH+l5v+a=0+YOon`V(lv2!tZ9C1i zyP|E##?~KowkO-0GPR{#EUTL2h*i`V;A+`_4`@OW2?GfO?}-trNvOtty9O*W(a5SX zk+iH0K#URshLv}uV2I)!0y5xXmX`OWi{`ZrUKwZB4#o=>R{=eu5C4c0)Z8AhM5ja- zcClwcT-%h-d{(uB0R$}N#uu=>T-MvWCT;3e;xNQ9os<Yw9IR0)SNTea$VOk=h{nv4 zV!B9+MhS|fy3vDa@_2t($=X<|KqI2aXed=|n`fCj#IE;HNBTXl;H^w??2bZD4cApA z_%Uc5AJOxJK-=G@YnUKKv?VU`D?VKdkB%;^0w@x~Fb+5TSOuv<HKs)5I;&#Gk<pN^ zOfu-g+PuYVq1O%?_i^J<*jkTO6wn4S0D%k{Aq!V)jrx)H@#%B|F;fn%^0T(xhP6Z` z`p3+QjIpTSY5ige%YFpNEJ6n~y`M)348kBtm3h553SmG72q*z<aZZuRmLx|ntE6UK zdd)N;6<zM4=D{?@s3c-gHJvVUzoaV4pz_fn3aco&Lo(t0ecDaZ-51-|Ij!E2UCdQt z^mZuP%Wk#ROPUj19_LBOU8;gm0z{xzV0;cYL_#&(jDz*O^JO4$SoATu{2=>E7qquz zT8|?$=ISH`)ih}y>tbOC(<XP@77ijE9tp8F3Txxw)Z%C;+Z%B(5a07vC81@PT2j*t zs<8!YY(=i1c7dGrTs_ex3#`<^xN6khT`$VDHXp>&4!%f)7(IIGYgM~1MT(o>o!iH# zu_ew*ue7euWzn;e=t_hDFaGh-2%2PzMx|_mgV+q3;26D%A%>E`F3qw*2qYE|+lHxa zEnz8mL}Aap(k)9>+Qf!-j6DQWxr8683`53&Xo8u9DpV8tIx)n-8pDumgPvSbqckbi zPs|knwALD_wrQPGb*C#awU;gBbEBHLPypW1j)(Jvz1AI-mRZa@DCVLQ4hI|$gIBqM zjGB8uwHw!ul(smK#ZhaI8M7?Q=4$#bhp7d)AuD^mS2hLS7`u44Rb7I5FI1(mYr2z1 z!rU^+>o_v3$e1jbv~>|XOYb0e<2@r`@awCG>YDRKVlnfKOeQHYHD)1C3s2qr=2q{I zwtXS`-2lrhtVXCPiL9<nbTtMv?}lc5PPXO!q{Kd@62toah}!N-r3Stny22#)pRFLf zHlixQr$=$URsbbrmz*AAsY7mig5=5ed5CQY%C2)4a(g>prj|w1cEJnm>9^Bs4Ue@w z9B6$BkgQ4?@(Qpxgi-_071L$%iEXB*)K|l@l`K?$OW$Rlzcm8X5+4-)yY=*0E!P6y zPF&)CC*M!BwgQr!tIkcka=n_Nr>xJ5+$-|264v%(P#^e8m7yy8c|I1O&>H*JXXUk4 zdV#}ApG6P&jqUuRw5~4*uFDx^r!8Hsx8NP-dYi7IAeT&c@tZG;#x5|lwpNs_JM(dB zDfBJ-zne|8O&MEUkZ-#mW3*el{a-R@sRt!mOhcb0>lwuI4n--D>rM;X2%WiLzB@yf z+eR|ij&&I{E1M>tMQa-)^g>W;i=7#Zo9sgAmZ2>j%!-7=?N~WXZM}7mg0$86zQar< zIPcoHp%o+)Yn+1?ij~Az0r0+++KgAJ_tmbZt(}!FHZ0{%EqBv8O^=IVt${+j9Hsq0 zr+tduDraPt`5o^)NiZAA*7@evG+ijt(!0m09@?I4M^L`mYIE{ZDqkEv+5^{iOel4$ z<+&BrP3b|$uG~1YfZ4F2&B*4rmP{l{vyU>jMHzthhN87Wr}jewwKhWcnd&NxwKe$A zHhX8SL0zGnjwH}Kz9_pzHS~mvW^GNOQ!9Dst(nx81Xrj)${e9kZ_?RNcFibI4ik&? zM01q5a?UzMp|O;WGv=0uZHhZLGwt^YEVis|V}K(wWhFYuG<+V#5oK^oi}&nT+px&m zMgbjIup@@4jZXcBwWO}miLAW4q!r8Jjcdia$tsoBg07ixp__%>&TR2$L}#T-=lWc{ zMzF7x&!8n64x)<^+OyW{1ld1o+5#$Kg?puSV4>Z2EC9Zwv-38xJ~S;+O$$(ZXCuea rJz;2Tjaq<|onZgZY^9r2JIen94A~EkP?P*200000NkvXXu0mjf7-h?1 literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/texdraw.png b/release/datafiles/brushicons/texdraw.png new file mode 100644 index 0000000000000000000000000000000000000000..1241349a15e8fad8b32e5cbef8de76ffda3c2d0a GIT binary patch literal 9462 zcmV<SBnjJzP)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NT?1QI<%S{MKTAOJ~3K~#9!?R;5`W!H7xTKnEt)itqtVmEuBC{B{drbISHS#%;> z0c80@j-1GV3|I*e+p_Z~*_H<llpP>ZEGPbP><k9tKz0Hoo<8CrFob+Wacp^r2Fj8} zHb-&lZnD`!b<OqOJ$vP2pL6bgRoxU7O92e%b))LNTld|2?m2s0d+h^!qpzEe9lQ0` z+x8wOfDeD<V<~k6%#3Dj+m70{9gQCP*hlk8AN+}*lmy6VG&AFY{hPPmcK*oGt23j~ z5B<<zoj-T3Ieq_WPsx)DlItxG{^?COUAW<f9WzPk=#d}%>}UU^olGW-YkKp*178?# z)8J{wN$Wc8jK>c>^zpWvbOcG7`DEhm072_Ut^N6*{Vj4V_co=D1YmSdCY}<dZfkSj zBVT>9HIt@sNNtxo18E{{GD%Hi4}bA=)3!}BY1Bx9(0WRu831@n`pYl9(aeDk5(G#T z+msRsNoMw?hfk47a<By;0BFIkO<gh*&`2UFC7@w)2mqbQ++NjkHTB)x-2BZq-)zRM zt*zZ_cmMtOzvFw}DalBhHBA!>_vuf6`m=xX$7St4_!EK%ni-A8_VsUg=J28Q{Rg+# z*N%MuyMG%%bNclCp4{b<ZoloZJ70fh|Niy4`OZC=jo<M4AN|Z{{%1SsCb29uTUfd{ z9^0r@8i~N?{^Fi4jX&|vf3fW*6VgbWJb8Y+layeDO9a<8My-tnv|UO@H?zg1i{r7o z!{vYR=idR0nr7my3uRg4zH(*Z;Grwy9XoU8-lk2BK~i43l#<b9_UyCAmzJ(P^2l9g zodh&_T|l-exr~%Ze)-F%NC!Z6i4uiG8e8`cXv_?Nl+2itND@w()7^z{){DarKlxK1 zT9{vmMT&n6J!_0)W6iJr>aV=?(o5IA(9itr&m~U~;EKx<pph^d0a`;dBduu~Bb%n7 zHQ)XAKY#mo{kP$T+Re>PKq$}1!3)HR<L7U^{kf*)sIj)CnOOrfrevS~AMg77=ic^P zzxA6>JpMR<b}}B<hZI55NRms7>v!FA#*E`JS~r`KH8jYb?t;3tb?$6$zwdqjplO<4 z`1z0XhkxWp@&gf!AGFbEa_@a#hQVlU!*+z3k&Q-8)51sr68`kFZzHWSGqYyYwkdUp zr37ezX!JYod~7_HnMfo<*KsmY+o)-{y*>YxFW*a}aYCA#nOSmgyUvYy`Ah)Jp~)mo zCQgD(W;DYi55FmO`$FN&CZRFea2n0M_0$QZL83d&1nK$bj^BRA(-Kl@&pdjM8EHmz z))+x+jIgHhL~CelXy$F#B_k*UL6~<kv(?pomo6@zJ$tj%0LdL@M$+AyhVIswxoBo0 zDQm20Q%X+KMZ(NUODU0j_SusFNGBmtf*EO2GBYU2V3K5w!3nm>lNG@UD;N_WFEayZ zp?ENYBq+&@4v+$YM*QaK+P6k&>+8UQ1N-+M0I;*Oy|S{hxw-ibT<DHF?|koje=tjC z`4y^fW=+$qtX%!&fB8$VbfJ%Y^kbep+rzB=Mr8jPuO=>LO*?8o{Bu8hjSGF~r+)^D ze*!{VLT^EUY-ntnY(^S0njJg#^7{Ihe(ERxXv&OqT_?rjshSb7j!2`%kKA~1d3j@g zVZ6AwJvTR@HRRkUf9aP$`jMZVx)9V$K{g_Ef@XN|t^cQO*|uz2w5>G_Q=*|WYBC=G z;wOLUV;}uUmN-wz2QRtglDpKs`GG%kkG~6|AUOo3q~u+fx~}U!`N@BgFO>S1yL)|q z-|5e#q%OtR<cevO9G=uokh;`OCgaKY10Vb#fY#*z2myxpDJ~yaky1(&K){kb!5d}& z2|$vPyP@k2A3991x%b|C0m1Xq#iYOf4Ud9(4T@X|pai+x^~EpTJ06ef%)aw`zqggU z;@q(PZUlrbbu^2oA;~c$hczT{@#Vv-t8=sz&kAxp9=B4Q>XL<Z1C<iYB*6qU9K&1D z-5bN1M^3G+?~i58^U-zT*geK=mK>xYLrQTcNC<&<$GNkwdHLmIMv#f5iK4O`qiZ7? zHG{hWG9%pGBLuLR)s@T3&pdml8EGl>kVd&RrW}0&t&+p&4j_@{E`aWm2*^xNKXu#Y z<}xiwq!b3$WH2Sc6l$;5A-EG}2A5N$AtjP9)1!~PZakhhCdp_7DJ4e(bBYAv1PQo# z@(6|8C3isXzPYgv@Mpeua%*eW-CY9YlH6T#d2+ccRKY#T)!cpe-O36ZajO8VtuD%W z>C)jG1OSq<*n$v<Fw?3&x()pyDbS_((s<mSKYvqp&XSptklbnJ4l{SaoN7$@)w-Ot zd<l1D&jEMOW`J~eno%-Hmg6T03}Yxs-pU2`->;V_Mk+%3hVd0Jn?FGetzw8;D>*=d z?q1xf7dMwfO({lfa*2fHFS*npClmPg>;K8m*4J&f-G2Aoci(#Z?FSDW=#Pe7K!lsd z{L5BWRvv%+v9EmP%TGP^)Hi29i;IizeeVw*J9a#rMhTb|I#5)hSl(Tcbcuy)NC=`G zjeh@kfA{mB|D0a6aPZyle)rvXpK{M~9-6B?Lnhe|qQ>>RhZG4%KddrPGqbMiKJ}?z zd-~}YUwJ_7?RUIxXJ=gI;~Edbn%sc9MuR@h=ttmnkmg1-t@h1t-tyY#4;{Sn-ETiF zG#4)(|A+7UkK5bZ*B(&nCS?$PQZpD0H8r5A#S<_;zkS<n&n)l1+BUETW-!v4n5l@4 z5Hkf?QZm@W{7Vl#^iM{k<~M%h-#_`}6T1i0rF3oWC&FarNnu$c2q4YxyyK}uhc2^$ zkrF&vcI^f_W!^+C0;J9(V}KwdjVX0P`bR(f!)@FC`oH_P&p!L?aE7|;iMt^jve5(& zH%WjePd<12#5rq_oCHNtK;w;DIB*%mbkgB*Ef>S^CZCMirOv`Jy8qaZ|Kpj_%!fam zgTChU{r6|fU67YNVL~rh^(WI^cm36YgI54}HTbA0u-GS!oYr8;;|6-+x#KHWm!bZZ zJblkQ-g)laxr-MsHuv3kIv|k<Hstvp$T1#r5F&`W{q`s37uF&qiI@YRic`)0A;u?2 z@a%@=4tKa~ZGGX<NAAjwtKL+C@Wwa3$&9VLhp+&Ehr`S7L=kWi28jEYR+bi4<V+9= zIB1YWK~9;wnA}^zlbOkEN-rfp`@)Imo_#HtsB9ooj^q`H(|3LM+gtYpf=)%QALDR} zf=ZO&fb8Jm3rSL!vq3Y#;Uo=4($L6^@&q%`V3rdiiRaFqc>ejDK@wi<M^?i8rr>RD zS&)zdDW-@*4lo(PG^tU$l~Q<r0xmI2jO36t;pbsSV*=StX3m{GdFk?vkbxu=>PLf^ zGo~D{<&2h;T2HPFBEdb!QOL0^kdF|Sk|U)m-ikBLtUMt|AE(iU3pZVS`KXj_5ujL^ z;&{YB7AS*x#IquSSi3e!ghQd>09>9YT4ly1QrO-ejYc~W)>tG2kh{#}&X>*~d->wg z;!Y5g6k2E5rd!}Gl#vNEAW;?rVG8VlE!@Sh8Oj4yAik747$LAryn1DEZf?yCBx+nf znKaKod+X-b0zk8zen51~>rE;J1{|qFA}vuy#(E?~=3pd9x0s<=BNFcFX9xWOlDe|8 zeE7&qO%wBvl$vM0_S&tj#mEN)DOL9>B$|bZEI1TO%z`W-K*R*aErT?)F%6{LGa?zk zBtZs-!xg~sq`ma=p~FWm5W4vCjW1m|7IH(xgaKKSWM+WeNhFy8lGB(3BOnJUinJs* z17tFfdwDCVs0?E|SfodAE9qxE!}%AFzWCA+<WsV?iiEqF#aoHV!>1Sk%g!Ubio+0U zD#Yx#gLEqVo}+b-1q|_|yTZl9QzrLV-kSDF3XktaCj&GICtzlhlb~5>ha|x)ro{xe z9Q70KpjFSJ$YEQR$tAMd$Gr#1hoj6>7L!;Ql?==s<tC9;NO`gaxh&s0!iVZ+LdLUh z6n_b{N~x^9LD{-g%egC?iH|ihODUO|yPIW553+3GK!Frt`JSP&D4AghCkq;%v*nl} zD14+F%aW<jKZoJ)t|P@;!yO1$)4vOGiVw{G7BMFlE=o>V$#<dZN5B30_Ul`jx%RR5 zsGXmipP8B2w{LDV%1~U_O}4jpc6PQmHa1d9-|_*CMx*=gJN<^c?z-hQw=`|3IEt_w zd`AixnX06xpMLt$N51-nFMMHK3OwJm0e#=!efOzTr$+5a6*n%)*dU><31ZIh0W?iR z<9IxN_={isgFpDMf2{$vZF}m}sdv5W`&2DWLANkS>4zEqbY?%D+LLCsy1M$S|LRvZ zHa5Po0UbPe@LlhE*YV>gBZkE;YlvxdVfyEF#}v^i(6r5kmtOj<-~7$XmoLAn0e#>D zADEk4aQRdswrc`Q0zb&=2MZSdHP<$68VSj8P17{beC;d0{_Fqg>ki0fX7_bn=kA?% z16;r2njUbcTuH71eJaIAmnXS<^71Lg7n6I63#H`A$*sTlp6x&R)AuYd@B2E{`nSII z!2n?q`Qr4edasH`RLo`wP7KyJ=Z)dQNuQb7Idb%+yY6~qcHg$7A9~-NFTQx&lTSW* zUHjthP=$0grFO~-r0GM$x8auO=QbA>x0aSRW@jd&Ss%6CXq0AV)6C4I9i=Er76{nC z_ni;ke)}E&=3oEXwFjhHJ?}MZ3IMr=7ZwyK4gC1A7f+l#KRY{VS{V(dCL{-71ET?Q zMSNp1{HEPHas0$5KJkkm|M<tQAw#()G+i6oRVOOa<Y{nlX0&<F8^3(>Engdrb_98X zyThY!DG_oecZor3a3m>7-DtFxJc0P9|Lhaj7?5&d>J?vsba?+^adG9;8^1C)w-Lcm zK`SbVzyKR^Kqo;|kyD_Pd&IjR`RK>?4Cs2}DX2#evzNl*;^NgiUiX;U#N~373!q4Q zK<c&1L;=a&9dZas>gqHvEiS$P$9{ZjK-XO<1&EUG>7}~S*!Z^FpD?E6@)UnT3`@HW zDm>-?ksc>^Pu$rVxy$1Mo^E~Ztq(l#mf@0JXL`J@RbCL6fON~PPc_Y0lAJDiLO#JI z2N2VcO#&mC&ndd(aM$MMtVgvcrFhWy{J;;)&(9AAgk1<4N-a!%p-_;pynJcthLuvo za)|l2(@Xub5^eH41KETMl2XFv#=crkjfwBN?x#NV(`7)I7Mtuu%9NBpyCkHeH=U1D zT#y*+8MavtSCJ=&JF;jyP)6*It5=siE}cDqk~^f?+1a<e<vXTiDEowbT6Pyz>*YQ_ zw=uhKQ-UYBqsWky7;v43BS~Q-kleczK13-BYp$<7eG3L&$%~(n>+iqkJtW%#QRT$P za{@B}hyvLY_Ag(iq;eoKZF9Og+z8Qo2+t&1wx=cY@~bNcuC6W>B}Ak|4w!oaG}gPn z|NC1Af}<q80bT)A;TKiMw6wJ1Q3Z^W8(~h*2#>oPQy)WRG_+PCgvq#l?6EuYWy2pi zK!;H<NP@rRE#J{XUR(xCDp~wRT-YR`ZBjED=PF*{kz``V4Um9Fa0$8Q>ls-y!U3ez ze)X^J-q{`jZZue6=q7;<nHqPerIcC^@WAOM+s^o+h{({L0NU9x=>ge<2}YT9hhRhs zO?Qaiuu-g^6WHFKd+f~Xx3=e*=fq=43S2=r+>CHKTg55NvIEI;pz7{*mN;t1a=}<; zD0>Do!Re?#hH|OF2*AacFC0Dl!b$g0Kn=NKF?8YrO#xGhY%``9;}Q!}EtdiSf>V$+ zlYt$kJDMhE^=4248b>mR8i|JFSXnu6_W9S0cjlrtqJGG*fL^LWm#hd)n=KIgPy@Ld z8%OdVNlzJZgybYsK{bQ;<Owpj#0jvrx_s{J&D-1a0iOVwSLh`O_c+4*KcjeN?%sM9 zU#Bx`bOv|ws>Llm)i90)fK<6;RM4fwwe`ibXK&uxUL^8RR0>FCv2t*-s}xpfC2Aok zgs8y6fm<UKG$cXnlDT4<1HZ~L9Z>|}J3FIuFPvPtdMK(!U?sUs<rIQ!dK^}aK$QE# zFlw+uAy5hgEFgP;lgTK~QX#O!!jVkLx3?CaefHMzcwaEi@|-AHp2?tkgg(%7rjkdT zh1o(2yhTBNF%)k{dE){6PbRGrWL^`pjJhUWUO9B`?9HyGAauQSI8ls*GU8Ye-XWls z#R3r7W`kUfLXoh%W`SC}CKDTX?PxTKlj7`@aOKjWbLUUy)yZ7VjL((CgqgZ)=#xI? zl}CoqdhKlkYtEy|Ry)cmfMqa02-Q0~Gi^JmHG4ppUp{p1#S?+DX8urA5@CW2^*!>T zjJ=vkvTy><u+@-Y8R*Pm800k!8k7<<94TyW%=H1bbougu7tWms%M`8~k{7m3RQF0r z5U4SP1eIvYYk1=xrbaR-Q26*A!tNE&3`Gjg&ieX7p!||H*5}W@a6A^Ea7Y4b&S_PJ z2qNV3X~<NVswMX1m`q|7@>hz|tN&P}SlZg$*G(FCO?KKBUO1Uj<2hzkMYl_JG|!Ib zA2}pOy?uDV%3dgyUb;7T-+gxhJvf!Q=9D!nlq8oWH%RASJifIxmrG_vrhwjNL@<*t zk&m%Td;!imq)o6~rB(Pq<|ic(HHK1@fhyV#UcP+j^5ugllviby_F|j@<_^vtEu@^8 z2_+fh9#KG{7f@X;H&`G}Cf9JyJkP&|OO^w^9Hk1=#q*l^#5*rC<&M6>?Nhpf8hBN@ zSGawb)tY#)x~d>beR(B=GX3J93R$dwKW=z&Q{H<hC?e2E&xE33s_whyqR2ck)raY| z%)?yP@>Hf0#`#6tSq*$K5#_0n3ty3`Ir31P3P;!H#;A#$B&&}S4;flkmdyK*rQ{|h z8_=L0!tx9`yo<5*T*w^I)sj2<v^(q{ytK2>R1~y`PVgL6g(D`Z5`@AmVfS3-@76bp zH(4GAvjrA<T@L_JEc2wuTzk<O*ff;EVRxRrXEd0GCY2++YUqO+SgUV&83#jBO_?pG zESuw^WkZ{b-dLBS^OQ9&QCp3%iVUcTwbzBp$}_;5QN<{)p`mBQu#!Co;G(KfXRUT0 zG9633%-M(BS-`_83L-p?m3&KeD8g>Q@Y}C%zrOwY_Ums#z4etYK`t&W-LSN@u&}ti zfBE2ngUkE(FW+#({KDeG!raWvEDMvVl-;I^7G2kEZEdcut*))DU%2qn`r7){)vIf( zt1BxjYinzN^CoD1e*TU-Uw7ifiK9o3EHCe$Uzl&(cF<n3>+0NllW8jLpp~#zPY18A z>ozwwudZG_ckb-tk3IIp<BxaWq{{a<ZGw&*Idb~``|r8uO|!Ezs>G64b6ph>zsIFm zifby=><k-XP%Ir5baO9fp|J{zuCC{vd-i{Q<}+u`JUWP*|G!Mo;^N}bqetKP#y8z@ z$DP(TMw5I>Ky(exHLoc&<gOC(;Nu<+{obF`U2~Bf^@QKb6)?MU<;oxb?>{<o=FFu_ zm%b$vbmYj9Q>RYddh4x6jvmd8OVaeD=#`@;4h_=4(hQGJ86RAO)_+Yhz}Gv-%;%z6 zV*sCf_L<Lr?sH#!_~EXbd~+t~p@$yY8Bcm5_pUfyuP&aP5*Tvt!E2nhi?;C!qO^;; zFjT{;eT5_ljz;O|u?sic@ci%m_9Or0KcD&QPSA&b`e!s`x?fjb_E?@FO=fyt1_$?w z(zFup;kEQs@Lf!f>uX|&m6`9G+qv=Zr6Wf#%*}1n3^HqMeGMOf=u2Pt!t=vy_tn4J zOo!UlT5_#!3hlC3%ABSibpW~dJY@=H#WgbXKn0Wz)Lngvg%k{i+(Ay05oR(IO^wN@ zc9hzgZl;~g%ueR!w&Q<0iajE%<X_1X=jNNA|AoKv<dd)e%P&3lhky9rzfn6ipjY6! zJ!X0Z&C;Gv!-Kl!QPhq*Ay$5SadBg5X?<>PduDdrj#Arr(|Ak`0V80bfkD5_1n1iI zQdBY6;7F=WRua-^v|+aShP&=Qb<e5Q)wSRI-QRiQiN{~H1ZA*N!-w4S)Y=>1<few` zA_y>1Q@aujwoDj&CD&YNO}D&!^~jNnOE;{IMja_LfM}u{(Sp8RXsTvGk)VQDo9CCL z)lx%HtfOe5%>Ne%SJQ0IjJ7t`=OHZ2&;96+zTc%!ed<3v`NR{iN`m%C%5@U{JuIC< z8q$<n_4V3a${F&ag@yGahhJVkv@$z8W^ql*NDWgoheSb{2+FQ2&zB=)igJWaPPt~5 z3m2}!Opann#y2`^b^_2LDNiKd|NbA_*x2~}-}}8YXC8eej#p)VOdDZcJ0_k!vp2Wu zPZ&D%!QVk@adGYB&CeY_`NHB2>rInF^#-mpE@TBC&+Se&?5*p&2=cv3>q)MuRX$Dz zy$C?b?aGz?>+6fd=knyE(dhK)`|mz=>ZvE6+`A7=o}f2B@PIIcj&vQHGxeuR_SDyn z#|1(2a~n6`{QQX%FU&1$m<<IlItf^KFSUzK9C*Xhpi^8T`^_m>cTZvEO-Oy6m=Gpi zd+Fk#jg5H>+;l1E_|no1fBS83TU=Or?6GUa1kL^TzxnGkyapYe1=E|Vl1%-5P}Y%P zmJS`bbn|PTUtC@-#j~>Dxj!qahwQ2H#2^wtZI!E&H<*ro;qt6FG3d098|`e*y!7JH zo$Y;nT$f9@{R5mhapE2C_?|}|`Re-m`mPDO|J5cV#Ss;iiZ<<{Y=f@cQrW@GX#1vP z=Z_sbKbqNzQ>sE0K22|=iq_;pQEAf26&PaR0LnHOm<FKp6lqwp0}`%W-v8o@H@Vxc zlS|2~SD6Rj`kiz0^RcN;FG1IH?Ht;pfoTy2EfBlatAsnk?99%wo6a9Pe9@Y&RA~!g zPc`o0z{C&RW~Vi$^w8FpwAjAED<=&I!KoXT#EslF=|<1LaP#`wVkQd>J3a;<OZ6YO zyylkIyyljto_aDk>CJujoxYYfsn;de^(dYG18qVUrOH{%+BF(YZoKj3gNHALF;?E5 zCW>cyhT^-b;by(wAa+83OubRB3Z-EUf_-hFY~hgHo`3%2OE2D}vhhM4BYPdwfIJL$ zKYaM`J@?%6=%bHrZ*MpE-FJGIHfhR1^}UlU8z9s*rh4)L2Yg+#w10W!@R19nnQ?v! z4s<}7Q=u|V{XO~(XR@;8xfwS8W*KBHL@2k<MzM=^)>7A;KX>fx3n$#$-ot1Z#!j)< z%QR8a+}zw-AAImj4?o<TK7HS`XRqPjz@p^AmL0nWylGWJ1F9v}zI|Ia9=<R?znS^m zv4=<9T%uenhB6&$XC2a@HdM7p#roC?x`gX^6l`zp``R<NoI7_s<=L6GAJa_1sWMc# zDvb}m^*dX+G!^L7@fT)q)b_(n2E!?4QSJ=#8A@9lNtvbj`Ssbk%~Fw6--=R7^e!=P zphEMwmn=XubEd#(<+0U<Wdfx!w~_W~2CtD4bzO7m;^A{=k8khHm9T0L2ffI9X=$tN z!nLVeE?8r&G$p))w(nejtbtXpg4HnQ(r)RcMr<Q9nV(;4n@P`<D06S7eziOcODaqz zH$ZN|C@5v);CF<hm#M@+nJ_t&1%YYOUS2tH;l-QQH<n6!p}d-Z^+Bm}?{^tJSaHt2 zSsRXoHn)FP$CS&%h+fY@+a486N)KY4N}7~;J}j(+wjGaVf>&KJ39p>OzT*LzkBE}Y zM-y_CL@me5D!{Ca@JtJ=tdLU2PtE4W!o`a>Ub%8$GMULk@A<L3R_M##=Ja}3TxumC z8rsUN%L!-bLXaj4hMc9N=j&COf-2uK*4TX1j?Iz}l8?g6$d;G6FrFL0`v5qLw+B5A zjE;T5iVw(hlSx<IWM*}BY30g+^^K*;WRzKbyAX3;4~x*=+%nUPD+D7M7!rioL{8O6 zh?=^>04~bWaMjBx2CGYC0#f04^dU!SjjdRz7bY(=3n=&MlSJ8}sq!o{bFNFHt&PRi ztIMlvH|&gOp$2_u;Fuys7Y<_$u6oUy{+E3Pds=8|!j`8tItj9*hnqkTGl*UtPoczu z!OoqE_e)llH#JjfAxCZRu4L<)?*mnd>iK1+69my9x2_v)Z7i&<Ep2Qp?QHK$-c+m= zxfQ<e|GAcI^p^9Q_*I`CR2t=gebi=i?uBAs!lfFUs_qvNHfahFbPT5taM2UpS(wKt zYg1x~o{5$Pu24o)m|`JuHXhHetuC*wE^lqkr_>HWRt>68d*k@t8dkb!-iL!dzioH* zY7db+PgB#h@G!e9sFxF{%?HJRt5RXrL#LT1S4lA;m8rAI#F|l`Cj`wq_ZbxWGy5G8 z@^%Lhk}#RftgbGvTsgSCJ?Cx(byne{V(652yY8sJ#UPmtg&7KCs_Z=Jh3Oh}?9$j^ z8D|&($SJkzIg02TZKeW?VomzQZm>(^fH@uZcxN)2Oxk_<qSXj7!o0c*NZFsGqBG6L z#=@1AgX?QcDUE7MH)yIWTjptqf!7TJL&-gMM5?qSludh4yY$7nN|7VgaLDDQ1*8wK zT1SO2UA^n7#<iYarKB7wx2>5CbDY-hY|kz%tXtEYsY+2*A&Gl#UP0=b)z#%IR}OA% zEx1R!X~}3%;)}dR?I5!(yD(HPRhgKnAUTs$OH)CG?)tgiTPbGmhXj-)#p~vW#eDd# zPDn4j?!LFdAx@W1C8flTjk$%znc02Y=ua5pjZrAzWZbT<E?>EFXnSi;umTNcW@2xW zSlV`Sd{$=02Ov_$#aYwEDoL^LP>vqzZ05YFaNn;}PAAZo%JQ^vS4raYm#ZJlsBTVB zigP0RcE6OkwY_g^dv-Jv+mdS_ewjm?QoFXgeDUJp?d^Tl>t~tjVXz?BS6@E&9a#VX z1ZPP^K~$6PL=9IeZ^+c=bs0~}oZHf%5seoS`$qhbzeGnghxBn}?Rp|Wwk6UlK?3AH zpcI7H9{Tgb!0q>QRBcVlN5|vQ#`?ni{N`vhE}UgAUd-0l7cXBrw6VVEs#3$g$4Oqp zf!wX(bqC;bcUICer$$96<SNH;;dNpg9@T6aWq--cc@+mJJ8GLmtY<rfoU2+DyD`9d zIoJpWRZWJqQB(>p$&K~7`T4n}8#=Sz*^kGwS1uh`xq6`M+JU=JzX?j&zNP9{ZGfno zujFs2Vo5{pd(ZJ5qy$-TFx>FO%O0VsC5IwjW!JVCL_0;djmMV{KQi-8Mb>sIpAP?e z@@dgP?Ci{5U0H70Zf<UiR7#_b^@U594sC7C*OV}`hHG7-Y~F)@m(RgYFdQ@`MO~0q z^pe$Csgw|-Tdu~2p3PU;2P{&#u)MuF%V5wjj%-oStI28!aC+i1ayspU6ss(<54~bF ztx2}Bdc*q0{Ae^W`lK6`bZKa(%ckY(_naEYZ7;KBSDn0>Qf^hq{XtXw<O-w}ib}<5 zGsu%aMPnz5A?K98?}I>~&1K14s`To@G2D=^C=Xd{>ixu!dk|h`Z_;&b*R=zHUDeGO z0i4SDhBGp#%%I=kEHBz{I{M03zd>7mx-imVg)1l#1<V4@)m@v6aL5Mf8HqugTi!3U z;5?q&bWp{lT4ndz95Eo7R|(>jMIZJK423rzL%$Y1AH0&rsz*>|5U5syz3)iM5Oir` z@X|OET~A&>bydJs7(&!22sU?b<OmfTq&~i_&3!qW@!h*ZRU^v518DEcPZtexD3H6; z1_oZm4pm!L&MAVZVPhR?ubmBg?=n+i&?)0(3qoeJsxUs7{k2Uq{y|1hR(12?$l5%T zI!C2jwZCo2OQx-ZrYgUhig)&~V5cT*m~;-SqcukxsCM35Z5Tm&sTK_kWknwPj$ID+ zYzBG|Fawp*N<NjDDz+jmvy*ch^L`ey7#9mO>?HAljMNsOzS(6s6VsbRWZkJ+vui@p zE6H#Wteq1av}M&V$xHi=`c{{0dk5_(Lpp{AMpcN$>QXVPJE#mW{EFmT!SKDb9cs{M zGwiUzv~}3^QNu2r;SL<TVHs)I5Llb5>K2j%6&y6JWh+>~^cq=XaB}IU^g%%!{VpUK z=*b72JvSh$r1vJO<^@vQ1A%>?R|R+aJh-L;b+na%S|6BuSc=1WnNE^12zIKU=aeI> zAx_bzYz*?>%mzC%WW_6cV9HC#=qzOoG4DPab~JmeoW<qcTix<OR?MvJ?^-&P^SY?7 zhvfU0#T~{eyEub;clg^iUqeeYw0VQdKZkW1FIEUs+YEtyAA8^Ol(+rw^YKVDtcQt& z3fK+KDdA7v<DyTGbB93fyUKd+xv6f~6ULsuLx~v9%g`9@V#^P|GW=GV-+TdSn(CN+ zdo7yBNqu_4{!4>>XmUWAnH41z=xfg0v+sEI{NOaRSCaex1qB&)h*qSag#Z8m07*qo IM6N<$f}UTe%>V!Z literal 0 HcmV?d00001 diff --git a/release/datafiles/brushicons/vertexdraw.png b/release/datafiles/brushicons/vertexdraw.png new file mode 100644 index 0000000000000000000000000000000000000000..8bd2dc1be8ade09be40c3fd80cbc2a4633513813 GIT binary patch literal 10253 zcmV+oDDu~dP)<h;3K|Lk000e1NJLTq003YB003YJ0ssI38vW4u00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru z+6NT?1QI<%S{MKTAOJ~3K~#9!?R{ymW!F{S_pN>Iy>IN{snxB~vOLO`EM#FB41^?Q zyNVc00u}RvR00IZk0dr=27`@BDh7j-kYcC;Dv&@3Nd;`G7>Ypt03l{Fcp!i^3rUt* z>bd)k_nx!&`toD%ea^YBTeb`)RaE)t_3Lv_-+S&pYp=bAZ+&YE_;imOZoKjK+h26` zbpm+DcfK>FNWjc!)-=teX`0F8UGMy^{HEq@-}KG<`+I<lMl+)wT|0O5NV|1p|J=uJ zzWeX#nP*NnZM%Q~z=9d=YrgE~)+fGxG|VP&;;sMkpZ}|W{l2E_I_59-@TM>LU+uyh z!%FlPrcS$ic-OnWyNO*SNRp<NaQR@7N2*Eik3M>D*L9LNDMb>1(XC5K3&?rp^5$b_ zUjE=ycZJYGO%qczkS0=HRO)#D<1hXA6R!>-gb*b`Xgnp+3;?vdKmD^uKj+ztw}ucQ zL4ZWDNhy(#WM=>Kci%{wSp*v(KXe1eCdFhXAV?x9B_J?41c1(DZqIAFLVvcpx_0ZW zx0><b;NbAw-Fxr7uYbcEB^gPx5JH}~-}sGR|J@IMu)OJQZ~G=eM4mTptSz=S4~}fM zFTUleSG?%SQ+GWEplRC{K%U&sf8~ene(^)=8(3X40-@7;-t)che)o4bUF`C-Oqz82 z&G*lvO(LfW5}r7BbKADx`+e_iV%L#I;<g)~nC~IZKtf$=edU*b=M7LRpou9N-OQ%8 zGoK?!Z5tlhx#dqDe$Bi^XgZ-zi`*A2+74Ye`-4CK;@$aHu+iM5l#DL3GZ(jBc8h-P z58ePwLP!W@UO<LB?sx?NN&EBF2cEpcog_$s5J8Z}#ytYT%m7Hqj46pE;iNg;UHD8L z9KZPHZ+ZLr+PcbE%6N=s!AJ%RKk_3#bmq*NYv1VGzWqCrCkSxm+Y+FWFd6|`pqY^j zAsEd<FteB6_QY5H<Nr9mQM13l4+!-cIXXbxaoZzz-1hK^t;_4vZW`1WEFc&-3+F#} z>L-8wU;O8v{<()AdI&(%wQc{9BAC^Ie9=vhf8jm9*GOS%N{C_zW(^#O0C!Ugw!fdg z`m6s@2;qC){oUd2&$(Of?sB>EFX8%Q&%Wjre_$~tnj8WlNlXbb$>)C1O@8%*UvhbO zL+<YWcVGYdCZ&ixl>iM8Nk6iBPTtNVO)x{#sa;?aTnsz&<DWS5g2$hI(eC~+vU4*t zOYTjKZY<Mh0$>1yMVvcGi{cdfKHc8kI)CNl)8}s6n;$dFhAbK_uRwEeJVk*tNOY%} zBy8`k9wZB{$mW5E?>v3s<}R)gv|vPM!3Yb%6D`mfXy#3f$q33o5av;&J$2^fttU60 zI{SjhpSfK!5@wO4yM;h^3uZ2wnMlflg(jusBwZxToHQvd+R1N!_=^CNB9lZ3X89k@ z3`#PXBv~*x!6tdKsyNvSX2Ivf%m5lC3NV5sD9MbDvM3S6&)i!3>shq@as2r4W5<pI zSS;q3FJIo@-~Tjj^pcmp^eu1ss-l_oue|ilEQE0R@|A!0Z-3yE-RL{N>z$rl*&deF zZ_Kx|a)f*{3(cf?$9H`DHT=!nzxCTvOv#gblDkXFCKHl8{{{4Ca`&(M>N{S3$L$~d zy+2<vBQeJO*=&D{9<YoE#F3T#_1R*!8ds-rb)~!M#F>}f{1;#HI=u0V|KaQ3{DGw# zL4y{sD3ueOO}m%A;ITVi_{gcP3oBGJK@&j2X2xi04}Rc%@BPkqyt8PWr{tp}+Y-5N ztXz7{9l!s%FZ;veE9cO;H&kOOSfs^>B!}i67vKN=?<+S-!{P3p&o)*s-hT7Lx14<3 z+ti62%pDRWfbfMcoQsJ0f^FBn^=)qh(6~GYG=KpDjP&b{oH@1ilst98;BZ%Rrg|?X zoV&7hap#D8Lez=tP7pOHp$H~|G(WO_Wn=a7%=Y6#VJ4CmVJ##DQ%LGkc<6~2K5_bn zlv19k_k7>?HF8&0zHIy5reS~58~|NR@D4SgkvauKi|M0Jz2xy{Zr<Ko2a_a_ZQC|d zey2;8tsAX1w#fy-El;VOK+yJL>l0^hee&#WS9XuMWONu1V|MILQh-_VVi%GpcLyXU zcQ;A%IK8}o;=+|vPo90@{(MuQSrW?x0I?Ayml@m*kQq}#a->#n3<4*<vsk;hee$7C z+;L_1gc(WDTyDYS?s=UxN)DqtfJB<R+~KZBGAbF{cI}a;UiRqeml;V*l9|b5FeSm1 zm%SQ?;7*tsTuyP(Hf=YF5hj~=EB8Nf=jpSzf=(kyDLDenDH4PeB;buFH-jK|0HWFc ze7bwE(sfO8`;$lSK6~*7Ga2QAxjRX@+zcQcMmUJjNJ<XENtl_t@6A`Y_twu`I&tRW z4QDQ#%As#c$t*xlGs?{*8B7i%=v1TZl1YIs5s1+qKmCFyPTvM*HzzYAA-U7c9cJ!; zITcLhXk1QOz6IP>JO^A((48dR^FU;fti(?esA9JyZ{z}p&jToOsJ2CtS)j@~%lb({ zgrIyXp^+RQL3hsqRld>aUX=2PO)inJ@*$T3N-}}Z9)Br6+aE7_(TiXC%2(e0;umin zKR#TQP`#*SUtu)b<;#~Jdg#GF{nP*Z=%bH*W(KsevGJC-eASIN-sJ8Y0%ifM@i)uq z;Ma%4hBGr7h-NbRz%Ts5AOG<m>3J&$-~8q`zw(uLdU3~j5KEtC4dRDE^l|;+A?1W) z7*-vqnen=#PrvWq|NNtmo&DqkYF_-3mn{};mB%$6gne=Y9vV%Kd{$=*GfkTq0-7c@ zLBY@j52op~Gh%D=N@(!H8$a=epFin-bJFU)um8~AUcB~zQtav=hNNaR8fs}k!{jv< zPi>tILARVdJ!#UBjorr7m<J*lf{CWkxEWTPg$1l_%#9KoBK*?Ne(6UZdEHO`)K5L~ z@FRx@6jQqP>L;?vEJ9(OB4|2kPaM54opdj{`SD=7?#RVS@U@l2Wa3Rw2sA_f;o!RS zlgMHR8F7%(!PkB5Kd~_Ti68&5C!Tm>ETQ;Z>TaMDgwX^ijltq<(jHyke(^02PABn( zt+P#&0$>0^C3pZS28xtrTMTyq2&wpdqhd<2iy%^Jzu_DI*>o~}$2&?q8eV<xy~T1@ z<fRBq7!<3-pE$m8@zmC{*B?Lo!W$l6TiLag;7BwXLAX^tE^C2ftyC)|EPN8(PM^Q= z6K8I9&;CNm(;Hs@#?z-ypFe*-+;h*XOV*kH<Ts(l!DT!!i@~~6ThF}crbmyiU!G1D z*&e85GX=d;zYrt=DKR;cBe|5Ag!5OnE^Z%t=G>`smrwM8c7EDdz3Of=HaYq!Q|(2_ z`Aif67eOA~ytFcDH`gvrn|-6Fg#dA4CYU6L3(CP|qnK!<8Ay?^=ps5y2;Bb{FM0OD z4g2kSO3BPpiR6_Lr@!^Zf4gx{$gV%<`gt5qQQ0C2gfI;U>npn}(>=2V$(W%u!VH#w zJKV&?7#Ylil*2H93$4iQ&mOyLzF2+c;!S(=4HlQGnp}`IJZ-YL)XO}Jh=MbZhH#07 zu4xwX<SsL%lv4~zOaO^sh(tpd;f6?bKE1GWB6{=j$L>mMws(&@0%f!$W=w&`aYjo@ zjVD(Dk&uBWKq#>-P_Dq?DJpeJtyGL6=rVIOMnVY&?6&KzuUxva^~9MMCZAm1-Rcbo zNze%~BMX$l+)_#2fjoCjk_d<L3NIlQi4x-H6IoVIClVNipaEKnu>tY)*%!>))w7pw zxU{oHSoJ9hq!pWP8E>JCOrQaYvOEx`j6JY{yD|`$gC;OXO(5lt4AsfoMcC)ce5L6U zjY5J9Q4{aNV^6=h^Xb`(H?-ZVV1NkEAVb!Wlrdm|gc50qGUhN62_RENsob)J@*I(H z*B~7X7dUUH4s9-`?YyzzlWA<*>4Q(a+|``DbSkMyaUy_p(nulE3>l9pI26!Nb=D9d z#{|_agETZ*45Zu(BANe^1R0o3n+_JUHa7d~tBW{k=aZdtn_Zkeef~ztx;QI%99;q_ zGXvyKBFPMpoW>*=0Xaxfq@|oM$Yh?s%Nt36XYponuxgLsh7u9a+lDqdcWJAO7E`mk zzu^e;#jJ!%ax;^ZjX`o}MzR2d=LP8m;V?*Mgpj4<4$>*hYY2^do<O<FjP5csx#y=$ zo~Horg6rb;@r&EXFetrp@>Enm=WTKlG|Q_)l3<p_VuD+V`U!W?`XE#}r*Bk+OO$2r z?#s!CqsmE2c{(vzGQl17OLA5r6=4f<S^4T5K4foHLJ6qktSI*f8l?nMJ?cngo7J1q zaW<1*_OWX=|L$&OO$oAM;Xr{DVdXpXk_A<RVn{j0DFb2|Q1Qsj(kxTfKYbm0FWB*w znkK>>$gXBME53z-N>rCUk!QS7l$-^*EwKeZRnGC*<Fm(KJ#!sm?@6<^x;C9oS5{Uh zlS#f9V>h2K7K{1b-d@TP$zSV$CX>lM_q_U!SG?l37u*(_T5%L%CHO8WAek5DV~;&{ z|HuFQ!yo=|TMIm&u>pPQm%aJUJMWw{6ZN=p&7?;OHLGJR89smz0*!6ke)J<B`Q=~! zrN7dEnx?t)&O6`qrY}`*X@tIt*r)X441YPZUry~wGuz(Y{*fR4p}oDmPj5h5TU&2> z)0=L(=@zgb%2nz8II$o7e$FxF=oAP|ID6*IfBBi8xp?v7^BT}w-}=_o)peIIC1QsJ zSn7lvW%Z*8%SDM&+q7jQq`);BtL^EhKK#BP{FP5RAe+usVvOz{J&thw^5eOD;VxH_ zODYA8lwZ1Xi6hmrVoLc_$vwHdlBeV;35$F0KKVcX>)SRr*FME^PAT;+%C9-2b!w0y z*Iqmh2Sel2Y1<ekO*F%_=`3&>63E#!8nwPUUtc-cSlhql)U!1E=x^Tn<3D}&2Y>8| z=cEt3_VYfkrmZD79Dby$*5TOE0%EW<2_30v(*^UUiNO>?Y(kn&7EP1ZSN7J|b~jgd zPi~%_hIY0xf9<{NT>JaK|N9@gwuIDI&xe(@1b|$_3k!mdAGx%?dT?}o=elE;n&3y* zcg@hi%@~4=2on#cNr;mWo0)Uk3JoB7d)uuyy!XBDdFMOdeXS|W*u--nGFfj+R=s44 zxH3K1SlK?hdHKZAv(rgBzJA3TOrT(}P=J`6*Ou%DMn<%$i;XLi(|_}x_k7R050A-I z3R9o-$aTK@uC1fzZrpnM#;vDLU3dEU`uUk1OgR@IhloTvD5H!b6X>Lad2s*^Bq<VZ zX5aZ;@4RY2&o!Qcz-WNkD?W1S*y$IXeEi1ipT6bflh+?RyE@&QO%9Np$=#UKWf>95 zxswS@iAs<X6yffkAm7~B{Q7VB#-#!Ia~x7G#mMFGyx4u#?5|AsXVdv~deGRykYb`- z?sPE=X?!Gy3rWaN9i<MIgy>31DS7gA`wMS>&1>!(DfM&Vd7jgf`kR3K`eSE86K^^7 z<oe1!fz-lGabkfI4dfJ%JA&oARx}V2(83J~p;hQ&Xk#!cSG2z3E5GvNAOG`Qb+$2l zRuQyXjD&<@!Sj_6+DTY=WJ;7H!$R(GX9m4okeJu4`|zV8Dkf)4l)K6wmwSxyTi*Vy zRYGG%381{nb8$tm9Ha|P=q62f+YNs)owO?}dpWI0W+Z~c3&nu$x%Q=0VbZ?R%%m=c zv)d=yZq_9$1uvM~gV}60yYIf&{?Q+O$j0uXD7P0EAy>~e0UY#P$&H=4BRPwAkUYVi z?#h)!FV$MbRPa0(9E_1Mh8Tm2TPhMt?sENuulNd*O@*jR;^QTO839D1g>-D=;&jrj z&Gsgf7M|2PCUm2@yrLR(fMS9~D^Qfv0av1>6m}2RKlb3Ok~eJ^aupvi2h2SIYW3zX z|MCWc;HXJ&2Co3B@{6)A5edkqgd!ZI7la{K2;pD?fe4r@1bW6jTp5mwVoW?}Cn+`V z0t5%>FbW1q@cZt2Z3B6A8LX*f^%vQvnZUF%+n+Yk*cqdwlrz%=Gmu0QzywJQLgPYE zhFCf@NzKmw#*@#!pzUUtwvRf3J3%*^1Uh62?oLZ7H7;e)(`&X}@I?_hLw7=M7R@@q zb6qg&tp&J%1Oy;?&h4d~^OgWJiV2vvlgm4sZJf1j0~SQy3xr5G+>CHK8v%4Ui|#;K zCy?Kd!lh9_G^UbBi;`$e31)RY8bcuyDgq|#b{o+rS9XqF-aU4(SUYp^gk%}G;8NHC znlel!vMHEi9+y~=YPpo*S~w(Gh-6uJbP2ggu9RR#6>a0hJq63ty?3zE#_6*cu0M0} zRP^c2{t?TFVJ2ja*p)6>Rhp(aE)JmvN;NiL$?O(+g4boA93(vnmQlZAk<Gaur=(rk zKMwNZ?sZ)^yRy46UreGVa`zg9=QRPApMv6<xqIV9eVv}+@~S#@*2+XeE-IDjA~W0q zgiMm6k|Jz-z6rMnKJn5;x4OM|tV^>#+T?(P9GbIXElX-3C@WEgg)?rAyzZIH4B7F! zt3XUr7P;g!LlhU?suZ?&*WH^%JL!@o2jm)H8Dyl!md9bJD3QCebIr+5ouRBy<xT`# zaz{*!(Va|Yj01$}2x%VLxcb!DTe>uP{F#?Xp|7qP3#WucUgH$KWGaQ0Q<T{(qgqx5 zRv>fKvGyn4D_-&})l?lS9PA>ahqeoC*K}Ru2|h$u@CqK56k^EwRMJrm*Ya6Y403N2 zs)m(0%O{S5b~;IxoJb+SA$4fb*`?jBXV2f%#@U%mHvk4@WU$awprKk)SW127;JuIr z_fGdl0{hVvtIbRaffX=66NK{Ga}@wlpa^$sQ)tzs6hK(E8!$mu7OiDO(Mom69hrop z96&SM>JnS9DL`SZzY#s6I)Ywh2lH9igvER^nM6+98l8UT#!I_fdk5>6_l`@JrQ)KQ zfc!Ny0mw*VsZ$6r6l@yB&}C>c({yBos*^u4(wjWa9)NbIyE(1MDWZ+dd@-AM)2^Gu z7^=3Ev}#ZmKqayrG5D}lOB~2C6@>**tXqc9RVqRSt#%K4i?vDY+OCmw_R{r9;mn1T zSN4uNCWX7{KESv6fsv;{xuW1jUnq#8o6M0dbd?j$b7`S3+~qYmKrxO=(CK1;tBVbQ zz4=<(&Gr_ni*CkR_sgR<vs|VycjXd*Xy#>1gk=btq?=P#>~f)MRSA_6P_c+bNTn!~ z*DGUe6zu79HwE*Zy$x4ryJ_}0Wf1`^Fn11hX!MMsXC{<n%-@j<DD(=d%jJer<!@Bn z1aje_uXvP;gE2to;fZH%&B=tJh6hql2dP{=81mAE<q|;|Q<(<Vj}*_DSq9lTyR5H? zXI59Qh|(|`ui^HP*1!jVO(XjWuWrf*4+Z526cTg!8gdnAV@P{y{RNq=UrlPi$~>FP zViU^r<u&S3m0zui*2iFdDwM)kPO%+jC{78*ru7Brl6^sv^^cMtGP~C5O@=(Q&rQ&? zEr)st>ob(_E|0A|K>2>;$|cL!6_P?>?80k13r&4&k&9xG*NN-J&{u}C()1HFl4bd9 zf1-R+^kF0|u+r-W0El9hlWf@uj%^z1;BXj*xN0<5h9*@aygG|{80xEUWg16AQlBzg z7Fod#%ambkbMt`uEV5Vg!E5K>vyZW=4h*qFKT&1zjPPdkYE<UXM(AD9M|U4#eCn0D zw|--$W387t2Q0ZLcn%GPoW`lwnxSR~X&JNoEQ|58$7hev9)CmXt)J``<i_Uak<HEZ z^^K#)j&2>_I(qEb(IZFJ);HGISEth%E0bx&BpiwsF~);~{q3FYot@pYXV2{J>|WWv zva`K?`SRtRot?jV0$N*Jd&x^*cJs|QpE`N+=+R?q>uXKZK-c2Xj_R{l6;GB=MjW+6 zeCQbC{@(tT?JK8GKmE{y4?g_RL-8|I`TmRv=;X<hufF%*yY9MsHk+y^mOP*Psszd- zT&lceC6ndoI@gl>V(GY`TY5QJ>Z^isSJ#tIKJnYX^;-`-aQ`T7{{JGNjg5^{r%t`< zRd>JSB`>um7)^a)coZ8Pk`b?|G~}TY^62GN9Qvz&FL%wcWI016y067wx^(IP{LcS= z;DHA&T)6PpBA}BePu_Xwowwh9`^i(MO5>8WEEIk6sEK2PG_o|~>r2K5*P!)ZlML{w zF0$~sXci2>>8Bt4$cO*nLm&FHw)+fmP~P>fcP-j(AaWmy)Ajt~$t8s$ufBMVw;iHw zd=gbUL|s@S)mEJ<ot0}V`&&n@OeX2zp!=m?{m8HU+8_T_1@!iB{Wgu6?$4<&S6QBM zX?j^Mql;Io(()oCNEj>am@-yywER<%gHeXUb|e*odKGFy3YN@BYJKJ4#IXyrX(X6D zbZKqx!2iRK{^lS4@iTupW7QNo)S=drYgJ!$$YQB*nmBxhy!w4A6v`ggD24w*U_@x* zbkZ3GB2Y~egE>JXnkI#i%0e<VmZ_@<#AMQC35MY7v;B>=z5JeymAz9(&(EeUGW<*< z?eF~b=0SJE&wgO~LqGBG`STY)JppOFIl*(Z5$ThxEM4_#d{NiDiV$K5DTAt$NnDvN z^1}zyY_c!{gb~3!1kZ*i&@Cu~Q8YD{8WSK3TALnB!@}q!CN?KquoFWmzllI(wAbBt z`{s3Da^`$`|1bRf!w*0FyftW<?!i%dd+iH#p_HbE+(keE6&+;#*KvWn{|GRhwAXE3 z*xc9)mW(>Ov3=dqi%k=Qp|QBWb}+Hd2pWtieJjg9075@tL#|t7=#9CkS%6id14Pjb z0p1erk&V@F{D!Yh!hiaypLyhwho6@QU8O0{k?>!GrITAdw6v^-dhNJM2r_1)YSvAf zwy}9*3YHpc%_5N?8WVC6KIBa#V1=Drnw=mR%cNP)fCuQc#wBV}z~Uj8l0(rwrQ9*^ z2?+o68@_&jZ~p`DfBypy-2X`hH2AASPkB}NdsX9E&qmIrxYDW5QALhrm2IwU-+bcq z+H7CsY|@@Me&NW*HU%026zJJbTYym%7)3%26pCyzs>WQ?EjV#uBl*x70}z%9YGoM+ zOt}CSiCD-upx`O_%F4>ue9hOMe&+Ol|8GC{TrpJm+}FHD7(+*T4x6*|Pdyn;&mE8V zBsN0R>HOHn<=OPWEKQoYxwf-1ox^12jU`H@+Xbc10)kNprL~1toS*f3rEnZzm1=E2 zo0$evnt>$%DTQ;FPn^AUs!dHMw74t-*qfV2zVM5_Xk&fz!3Q6>h6Z`9`8<z^n<Jer zwYcGAc$FI$w6VIovAP?~Nk6u+ebdROkF4$F8%;y>=-Id=14C&p%nc`jAfdoeiUC7; zpnA$-4*C-K;Ah(MILRoQ*idL?(b+}ox=<u+xwo9jlgsbB@4nZ*_O(Cyqd)xYv(GMR z(7pHG`+Sp;rFD~SbT#f{n_OyszA`;no$WUvhLBcg`zMZ`UzyHH1#`>9iE6QYh_iD= zFNeo9Qm(P$A-ZDUd^rZ61t{eqK$(mO0O;c6+@<TExo|@pr{i!~%l`HAKks#`YioH^ zouWa{r9HhtDi2;w3u>)ay)o7}LsO1u%;Ng$&dFnECX<fP>g<4wk_XF(JoBzMxe}f$ ztcBOmcdS4XQ@)x@T;urR>Oi*6Rw0vsT@3q+wJy%g)W*rq!D{l_TLkoNF{x6A9gyh@ zUiSsppSb=PfARepYzg<=^XhAm73*)6`XdI=U#$JpDt4Xql4x|A6KX=-I&$&)<LB1b z_Ex5g*>pa&mLV5_45Rp4y(M1?$V<LoFoAlpltCm{t&5i$ganq_M1lk-yVM*Utj^;! z#%9q@FI_o);mTHWE98jYUep2#YkB0vi4%9-b=Up(-#?$v!#(%B`p|09Qc^y62-Xb{ zY6_LFWTE9&tTdap(@8rCaXM*_ZCp9Faj9uKqXJV1$#NrKDH?K+Ij|%q4NIp`bW~lq z3hP8wf%^)#Ql3;g%|RFE-R#`u>n>d0+TK61y|;OB=lJgaW=cWJk%}-LMqvW1uC9LG z=YRgkKKjuHhrM?W_sWJu#r}eH2&FnY3V{ksC7aOzpH25?la|0FbSsm+Nwb((2f|E< z-cxK8m;=1L5nW!XwcD<Ebcu9WaEVr`hq-OH$3p77dS-3rUOm%-X=0T2=d;u2Po2GZ zgG9*=x>*;kRL;m=9;FYh_DnkkGVg}+&ENd?MlLO7omDif?Tik=^Oirz45utbd2Y%q zTXxALHzZ>;h>SpC<mY;#hibobm!pqeH3=|@1dXCx44J1T216$EpwhPbc$&RYOqq?q z*iH@>D@g&s?!m@<K54rkP_mRluCTGBgoDx!-JoMh2^Or;D3{O5(!V3yvA*0pw%Y0` z4z=D(h~|^9Se@>Hn1nc;%!73nVrjKbE@Q25XRbK_D3u4!Et4kCX(wu*vKvSm6td;u z2yTP`Ml{hwwg;DXk3V(xmV@~!z&1`VT)A$4zOjU}u=by;@5Rn85*+tvXCi4r)6)Pr zHi9Vq5Tmv|Dsx7iUKV0isqE8A7pgdLt#dgxzt1Ijs<9LgZIV#jB3ZVED<q#B8L5Pb z1L-bTsq5wnU7B=hQu=@w)A^!VbPa(vnhUjm84z)e9CMUBu$bITy8!8iW}vyShR3BN zS$&3~Y>fxLUawQdWUxAy5IR~6=4M{&-d>!97oa1Pym}S^M{UXDa50O?3WpC~WG9ea zn(WMvba5gurpfus*I&4DT}lnWwwvxR){-}@3;H?m2wkHurEJkCRE07yYY_4#a%Ja% zERv-=jNl>`<saGb>ViDi#0$kT$NQ-U>gHv`gKPlkeS>M<H>fuLk0d3GLT3(d$q)bl z2YyLJK~%HS(oS?97G3CK1F=iZVi6W?le~f0dFZ0`mVs0z2MjZP^?$igU-#I{Ex0*K zlBWh4lP_{(zc*a9WKQLpe@}@8Gdp(#B4+I<dXjm(l#<XXD-bL1yFe73@-7qtVPaD@ zK|{)kq;j~lpH@4c=G_f;4vw6=bbZ^c&=lij?_i^iv$`!}aD~b_51CtdP4MBG_|=de z^hwPqqiKpc_e!w`2QE&QSHE8bimM+1g7wNMmd&o*R5He-5`+`I?iP|=^_Em7#OH5| zHL(z5VvHe^PTNIuFrO{DnLzijH(!ZqdKJ)HC~H#xyhOhbM=?X?&r<bjv<#Lon-Cg! zHoL5-mlIH-D%S>bs%Ls@fKCffuGmgNP;#ckO!ACk8WjZ1GfliW_}&Le^cWCG*CNig z_l|XO3LtrNdFS}<e8auTFBjcR3fV9x?>BxOgSdv?g|iq6v%Zs|?mX$0>6+=-P~Do+ z2D_4#D5c`&Io_h?Pz|g$+Klki(Jqbkub#T*LXg8$yjYE{lB<>iYx{g2gHcXIfFa5D z=d1H}1~K~d((aKfyT>KFR-Gv8h-ws9nD2Q<q@H$!LRzf*=47d%kkoUI)Q3ZPQ?`Kx zRp1WvX|ii@T|ITGe|zC84p-{es?w3&ky1!0cruA81q>r7TR7zHJshE5x(EAfI|oPH z1F5#1UEH~D-mZX@>|nm?-cR0m3%Bf)ODs^@GKyf9{8k|p*QSD++SNTA4&e}E7_b`L zri24dA1n*%7I)*%dF6Evy$z0~ZB-?DVwXbR=O86Z$}w)<GE-K%E|8SFYarV0eEr;| z>tdY1uvn~Y?;l;XE2CPNiqEY&fEwKm>3;#l`_7X>=k0fW@Ekda-b=F-WNK%`bClBw zG_|t4Y}{3ocno1+Pm;_%R6|Btw@GoSOBUKdqYGUOF$T;1X=Xu5CKpn&{dP6^M6i@> zXLo)7U?rxhh?FKNSw(4F=o9*qualt0GgUa_tiHPB3e1e+3NMw$iyZq>WaSx?j@%s5 zr^)QQo+=f16#LW^YoHY5ZK?)68Jb}FCD#w#on4&dty88GYr9G8nyjf79Kj7@K#a|q zOQ$YwAD0ZW{dRTlV8cC(Q1)WuO1FmhI{?>jXJx?F_0(U_4PZ5n%U&mkohAON8xxQ{ z=T#h`?0t73At5`69&+xN)iO`I+OYbXg`Tga!hrxGIlCB0be+Xy(T&k^S;5o9OaSKH zwCh5OC3s26G!zVa9{3P9j5~gMF%{1<7@O)ZdXF`v1VwQ$-tffh9-->NVh*u>2207l zsxd6^x>3sTl7(+7vTvuV3#^*IJcG%3uvl4yDXGTdM!UM`rhr^FZ&$W=k7WPd#pd$v z*4})>^IrIcfgrF@+55>^+6jiErlc%#8jE3M@2o1krrf;M$A(_aSKS9J=c3v24(4oV z3+Y{SgZ_PevRVV2f%sf)f%m;q!z6p}6*C1{b(`y$tnC`PT%n6i7n_t!Wb!6C-HTVw zeGp~OsiD1Qnd@H)Nd<~6tqP?-Xo;Vk6|nbG1pq5%sM4EIGT`E@G&0>iL|VhmCU^DJ z%~!p5;g!qX+pg-xDuUvJ|L^-%6q6wthz`xuXK#G={HcPP%W`8V1cz1kJpPWu66x1| z-xXD*({IG){e21xyWgO#JY6=@*$Vfd1f<;k!x{#ZUP?G*qx6gf)GUpy!a;H$*kH9Y zp$@$^c3l-I9b&t<H;34A%LJLaJVvHIH|g{@994Vzma(ecDBUU5JhS$Fsjg11YG-}^ z!QMs5sxhuc$aBZ{Af0UIo4(D074;|pMa^dX@UBo9v?&bs-UeMg^UHgtuvg|o20pLb zoP3O=qh4Wi$Hh`Jq`X?7e%6-jyw#cI7Mlv?Xb7e$TW0)&lmn(gh9sn>?=KtLLTU?+ z>Q-O*(z11^mT44Uk8^>;vKjS^^?|uY+g1*KyYHey(FR+NpuI95M~1RT9txRu2xm}R zpDPGhS}#5SZw<zosq+86q2ENHY-r|#6bliiT9|PsiH~%oZvh&bUB;4F)|}ku;XT#z zkU;A@#!V?bl3wG*`q}<N^4h*L^mW#BYSfN0rekPiRE6AFUAtEL9aJ<bxz!NDYIjs$ zg4U?fX53-3)ai58OO3m5#yfCaRo)v~b}(wLs#aE`B{($k<Y^he^ggo2=*=pfMqYjK zsJlfy&{Ox~Vc$igvLwB)?2KA#)u@JN9QwSfc8v01a>&I-anMrh53gb=j^(nPBx4lp zpo)geZG1JvsjEqS9X>Z&j&^1!3$G$C@)|OF?(Hr9%ZGHSc&w7emEBw2%0>2=Su=bq zOJGt#_Msj!@?yi2^rAVG>|eFYu$<5imS}AAMwNe#>&jlO5SF$X0*5~Kq2-BI6^ngG zW8P+@$Bj_h&6nO&!=G%JdPq8NI$poiYg<-6U8;Wf$xlzVI%Jjmj<WGbhJCt69~pnD z%D3D=TBbTm)gF1@C_F5$T7e#V&uayt!k#rU9GZy>*nVg$F!dWMa+%pH$^HKU#&>vw TFuNJb00000NkvXXu0mjfF<Bc1 literal 0 HcmV?d00001 diff --git a/source/blender/editors/datafiles/add.png.c b/source/blender/editors/datafiles/add.png.c new file mode 100644 index 00000000000..14492cfac24 --- /dev/null +++ b/source/blender/editors/datafiles/add.png.c @@ -0,0 +1,349 @@ +/* DataToC output of file <add_png> */ + +int datatoc_add_png_size= 10948; +char datatoc_add_png[]= { +137, 80, 78, 71, + 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, 0, + 4,103, 65, 77, 65, 0, 0,177,143, 11,252, 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, 0, + 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, 21, + 0, 4, 16,211, 77, 59, 52, 0, 0, 32, 0, 73, 68, 65, 84,120,218,237,125,105,176,101,215, 85,222,183,214,222,231, 78,111,236, + 89,173,150,212,106, 13,142,109,217, 42, 75, 88,146, 13,100,168, 96, 82,137,193, 21,160, 10,170, 66,146, 34, 4, 39,228, 15, 14, + 96, 18, 6, 67,126, 4, 3, 1, 50, 48, 21, 73, 5, 59, 33, 9, 25, 42, 16, 42, 78, 17, 98, 82, 41, 59,196, 56, 56, 8, 99,199, +150,236,182, 36,203,150,228,158,251,117,191,233, 14,231,156,189,215,151, 31,123,239,115,238,123,221,158,130,147, 74,170,124, 95, +119,191,247,238,187,239,220,125,214, 94,123, 13,223,250,214,106,224,139,125,220,113,250,244,185,115,247,221,250,188, 0,248,254, + 31,248,161, 24,131, 0,170, 42,170,222,251,202,123, 95, 85,111,251,161, 31, 76, 47,210,183,252,245,239,158,205,166,117,189,104, +154,166,110,154,166,169,253,112, 99,178,113,230,232,169,151,191,231, 35,225,244,233,211, 0,220, 35,143, 62, 98, 49, 90, 52,130, + 52,251,227,127,246,167, 78,223,255,213,247,156,123,228,196,157, 47, 23,234, 29, 71,226,251,222,247,219,126,107,123,254,212,115, +179,189,121, 20,209,111,253,182,183,135, 48, 24, 58,152, 1,176, 64,157, 77,119,223,246,182, 31,118, 55,195, 61,117, 27, 73,130, +220,188,231,205, 23,175,187,205, 85, 12, 42,134, 40,159,250,216,111,221,188,250, 73,146,222, 44,170, 40, 32, 4, 84,170,233, 12, +239,255,176,221,123,234, 74,181,248,175,151, 62,253, 1,231, 28, 72, 15,154,145, 34, 2, 8,136,214,236,211,159,248,245,255,252, +107,255,250,206,227,227, 71, 94,190, 62, 24, 16,132,103, 52, 81, 16, 2, 72, 61,223, 57,255,225, 95,220,186,248,187,226,252,197, +171,243, 75, 91,245, 3,119,175,190,234,254, 53, 57,113,223,215, 8, 28, 20, 66,161, 42, 40,170, 16, 56,113, 78, 68, 69, 20,234, + 61,141,148,136, 40,170, 2, 3, 4,164, 2, 6, 2, 0, 69, 28,236, 11,218, 46,215,125, 53, 30, 79,238,190,251,110, 85,153,207, +231,135,247,238,209, 71, 31,253,154, 55,124, 45, 73, 21, 17, 85,231, 92,218,184,119,191,251,221,239,255,157,247,229, 23,189,229, + 45,127,157,160, 64, 84, 85, 84,198,227,245,213,141,147,147,149,245, 83,119,189,252,158,251, 95,253, 85,175, 26, 2,112,143, 60, +242,168, 69, 51, 26,201,251, 94,245,117,175,120,236,219,239,186,239,177, 59,239,121,120,178,113,186,165,190,236,174,193,123,223, +251, 30,127,254, 83,187,207,125,102, 33, 34,163,225,228,117,127,230, 13, 52,177, 8,243,160,241,230,229, 79, 54, 77,243,246, 31, +251,113, 87,251,115, 0,204,120,226,174,175,190, 25,159,104, 27, 28, 89,103,164, 52,139,217,147,239,253, 5,198, 96,164, 55,152, +154, 1, 58, 24, 29,179,136, 79, 93,224,222,180,190,115,245,169,203,159,252, 15,161,153, 58,239, 8,120,154, 17, 2,177, 24, 23, +102,156, 45,174,255,199,255,242, 99,237,236,194,227,175, 62,114,108,115, 64, 18,132, 91, 57,122, 31, 64, 2, 2,189,243,236,215, +190,255, 63,254,197,122,113, 35, 26, 63,115,185,249,204,213,250,212,209, 65, 85,137,156, 56,247, 6, 81,133, 40, 0, 17, 8, 20, + 42, 16, 39,112,162,206,169,131,122,111, 48, 37, 37,237,148, 10,104, 2, 17, 85, 32, 10, 64,136,210,240,165,122,200,242, 55,223, +253, 61,223,187, 50, 89, 73,155,148, 62, 68, 69, 69,213,169,136, 56,117, 63,247,115, 63,115,229,202,149,219, 95,232,251,254,198, +223,140, 22, 65,192,152, 46, 43,128,168, 8, 84, 84, 0, 81, 39,170, 78, 68,156,115,170,234,212, 57,239,238,184,251,143,124,199, + 95,252,166,229, 11,249,217,108, 6, 48,105, 42, 0, 89,122, 64,112,230,220,227,103,206, 61,177,190,121,167, 27, 14,213,169, 8, + 84, 33,130,129,226, 61,255, 51,126,224, 55,255,222, 63,253,167,239,120,246,153,103, 0,248,182,105, 0, 24, 89, 55,220,155, 5, +163,172,140,221,230,170, 63,125,246,177, 87, 62,246, 23, 40,131, 74, 12, 34, 98,112, 10,167, 0, 1,195, 60, 64, 25,230,179,253, +111,253,214, 63,239,156,251, 91, 63,242,195,114,239,195,223, 20,141, 49,166,155, 18, 0, 80,217, 60,254,138, 71,190,242,173, 43, +235,155, 15,158,193,233,227, 24, 13, 81, 85,112,142,170, 20, 65,160, 50, 54, 79,125,224,151,119,174,127, 90, 85, 85,213, 85,222, +215,139, 0, 33, 68, 8, 81, 18,170,136, 92,221,120,144,178,177,179,135,143, 60,139,103, 94,224,177, 13,156, 62,137,163, 27, 24, + 86, 97,177,127,241,250,165,167,174, 94,248, 72, 61,219, 18, 73,215,209,104,230,137, 8, 18,166, 20, 82, 20, 22, 0,241, 85,213, + 26, 68,208, 68,216,220,118,119,247, 62,250,244,139, 97,250, 84,213,124,248,232,202,238,104,232, 42,175,233,240,165, 19,168,102, +158, 22, 64,133, 70, 82,200, 0, 81,192,102,123,151, 53,134,232, 42, 52,219,207, 62,253,207,175, 93,252,189,182,153,138,138, 64, + 68,100, 60,242,247,220, 49, 58,123,122, 60,172,156, 79, 87, 84,147, 19,247,127,109,210,105,166, 79,162, 36,171,193,218,107,254, +232,223,190,252,194,123, 46,126,234,221,100,164,136, 66, 8, 21, 85, 16, 34, 34,234,146, 64, 69,116,117,226,143,110, 14,229,216, +185, 63,153,222, 39, 61, 11, 2,233,197, 40, 90, 85,126, 6, 81,161, 64, 53,153, 85, 17, 21, 1,161,170, 42,162,158,180,164,201, + 16, 5, 13, 2,154,168, 16, 0, 1, 80,168,162, 4, 52, 25, 70, 5, 35,160, 2, 37, 12, 20, 17,210, 64, 37,254,159,123,200,109, +159, 61,114,228,200,230,230, 17, 0,117,189,216,222,222,158,205,102, 95,196,133, 30,120,240,193,111,254,230,111, 41,146, 45,194, + 23, 85,167,170,234,156,219,222,222,249,233,159,250, 59,159,235, 66, 63,240,131, 63,100,209,152,236, 97, 62,253,154, 54,166,168, +174,186,116, 49,117,190,242,223,255, 55,255,198,109, 46,244,189,111,253, 62, 48,125,164, 93,146,180,177,146,118, 82,156,168, 56, +167, 34,234, 92, 54, 36,199, 78,221,251,220,179,231,255,254, 79,253,232, 1, 51, 18, 66, 32,211,230,177, 51, 35,148,178, 34,225, +120,180, 49, 24,173, 15,135,227,106, 48, 28, 12, 87, 54,143,223,117,242,238,135, 30,126,253,183,188,238,143,253,233,111,249,250, +175, 58,112, 33,176,215,130,180, 24, 17, 19, 72, 53, 24,223,113,246, 43,238, 58,247,186,245,163,167,225,156, 83,168, 2,130,129, + 99, 19,208,182,250, 19, 63,249,211, 63,248,253,249, 54,213, 98,180,238, 65,163,145, 70,154, 13,199, 71,239,123,213,215, 63,240, +170,111, 24,174,159,137,116, 21,224, 4, 78,160,102,102, 98, 68,136,140,193,126,226, 39,126, 50, 95, 40,198, 24, 45,206, 23,237, +229,235,243, 11, 87, 22, 91,219,139, 69, 29,134,147, 19,167,206, 62,118,242,206,199, 91,243, 98, 16,210, 8,164, 63,208, 38,128, +193, 98, 91, 55,245,172,105,155,239,122,203, 91, 0,248,237,253,230,217, 23, 23, 91,219,109,150, 16,164, 26, 84,175,124,232,145, +245,179,175,174,131, 31, 42, 65, 33, 97,132, 18,102, 70,192,168,211,157,171,251,123, 91,102,134, 16,142, 31, 59, 46, 16, 55,211, +251,246,102,193,146,152,104, 36, 71,147,211,227,205,135,109,240,138,107,187, 67,175, 50, 25,193,105,138, 67,140,144, 96, 26, 67, +123,225,249, 15, 92,191,116, 62, 52, 57,158,248,218, 63,245,167,124,221,196,100, 65,178, 18, 9,170,225,134,175,142,182, 54,218, +222,197,179, 1,251, 51,220,119, 23, 38, 35,163, 83, 21, 32, 46, 46,191,248,228,245,139, 31,155, 79,111, 0, 36, 9,145,166,105, + 60,152,124,168, 20,101,132,243, 99, 87,141, 20, 46, 68,236,207,112,225, 42, 99,196,217, 51,178,178,130,122,255,194,214,165,167, +182, 46, 63, 61,223,187,102,108, 85, 20, 10,132, 0,194, 27,163, 64, 4, 4, 5, 74,163, 40, 28,225, 73, 1, 97,134,233, 28, 47, + 94, 65, 27,246, 55,171, 23,226,252,252,214,165,167,235,197, 54, 72, 85,161, 48,235, 49,130,151,164,208, 16, 8, 65,228, 59, 36, + 90,131, 10, 2,233,197,246,119,111, 62,249,252, 83,110,250, 91,199, 87,110,140, 71,206, 59, 85,167, 52,117, 74, 51, 75,247,225, + 9,210, 40, 42, 66,128, 74, 53, 90, 3,182,149,176, 37,196,108, 49,191,254,226,179,239,186,240,252,187, 69,244,196,145,193,253, +119, 77, 54, 86,171, 65, 69,117, 4,161, 76,199,158,158,102,162, 10, 50,203,137,108,154,253,182,157,134, 24, 1,105, 23,215, 63, +249,244, 59,175, 94,248, 61,136, 8,237,218,141,102,119, 22,239, 60, 62, 60,115, 98,180,182,234, 7, 30,128, 66, 4, 48,183,114, +244,126, 66,178,149, 78,113,163, 27, 78, 86,206,172,172,157,141, 97,122,254,195, 63,183,117,241,131, 0,132, 76,193,109,136,182, +179, 27,175,108,135,237,189,208, 4,142, 6,234,157, 64,196,173, 28,185, 63,199,171,229, 82, 49,214,195,241, 49, 17,119,225,249, +119, 93,187,240, 1, 64, 36,187,152,162,179, 96, 12,220,155,199,171, 55,154, 79, 95,170, 47, 92,107,182,247,131,156,184,239, 13, + 57,134,129,230,112, 38,219,169,180, 1, 34,162,201, 14,228,119,234,188, 8, 20,146,194, 45,167, 42, 30, 36,146, 34,137, 37,255, +195,226,125,196, 8, 65,242, 17, 36,144,162, 58,146, 20, 8,169, 76,254, 8, 74, 3,148,176,180,237,204,102,137, 66,136, 17, 52, + 19,144, 20,208,104, 0, 73, 3,105, 32,196, 0,136,129,217, 92, 80, 8, 37, 1,210,104, 4, 65, 51, 3, 97, 16, 2, 16, 90,122, +131,178,140,178,120, 67, 54, 5,146,226,206,178,134, 47, 63,190,120, 63,219, 61,238,187,239,254, 87,190,242,149,231,238,191,255, +232,145, 35,253,179,204,167, 64, 82,240,156, 63,233,246,246,246, 51,207,124,226,163, 31,253,200, 39, 63,249,201, 47,205,130, 86, + 87, 87,191,249,155,191,229,244,233, 59,205,146, 42,160, 56, 59,233, 34, 37,148,232, 74, 14, 69,210, 82,220, 88,114,206,162, 16, +248,170,250,181,127,251,111,127,255,247,159,252,194,149, 67,222,244,166, 55,189,242,149, 15,153,145,232, 60,255,129,223,150, 18, +196,247,139,232,226,250,195, 75, 74, 9, 71,191,172,178, 80, 85,167, 43,235, 39,254,193,223,253, 59,159,122,254,153,207,179,160, +239,254,158,183, 34, 45,228,150,165,148,247,197,210,199,129,213,164,229, 12,134, 19, 85,117,126,172,206, 57,231,157,115,170,206, + 57,175,170,174, 26,170,115, 43,235, 39,156,115, 39, 78, 63, 56, 24,142, 4, 6,132, 55,253,137,151,205,166,123,183, 93,144,143, +161, 45,139,232,147,154,165,213, 8, 15, 44,168,223, 60,167,213,198,209,179,206, 87, 71, 78, 62,224,253, 96, 60,217,116,110, 32, + 94, 83, 4,146,164,227,156, 83, 21,231,135,170, 58,158,172,169, 83, 21,138,226,151,126,229,183, 62,243,204,127,255,165,119,252, +227,231,158, 61, 44, 48, 31, 98,196,109, 55, 56, 25,199,108, 20,187, 64, 91, 4,244,131,201,218,230, 25, 95,141, 79,221,253,136, +211,106,178,121,198, 59, 55, 24,173,164,183, 87,133, 38,169, 74,231, 0,146,143, 17, 51, 4,144,145,209,208,198,248,237,223,254, +151, 85,229, 31,253,195, 95,124,225,133, 23,150, 37, 20,150, 78, 79, 94, 90, 8,121, 65, 16,120,167, 16,120,149,116,175,222, 15, + 39,171,167, 78,223,251,122,239,135,155,199, 95,238,188, 2, 74, 5, 4, 70, 56, 64,144,194, 60, 40, 64,129, 2,102, 76,246, 26, +150, 64, 16,198,104,161, 13, 34, 20,240,205,127,229,175, 14,170,193,247,151, 64,205,183, 33, 2,136, 70, 35, 44,178,137, 96,228, +116, 30, 9,152, 1, 34,163,129,170,202,100,164,222,235,198,209, 59,215,142,223,187,178,126,199,230,137,215,136, 32,194,153,137, + 23, 83,235, 82, 15, 73,150, 88, 0, 19,106, 74,237, 69, 65, 52,145, 16,145,216, 2, 49, 54,139,208, 46, 58,221, 55,179,183,191, +253,199,127,229, 87,254,197,249,243, 31,247,219,187, 45,193,235,219, 97,119, 63, 44, 90,219,159,197,164,174,201, 7, 82,147, 83, + 98, 85,141,212,185,151,189,226,212, 67,167, 94, 15,142,230, 11,167, 34,195, 17,132,160,106,114, 95,138,130,252, 48,237,151, 88, +142, 67,210,135, 0,220,223,185,210,212,123,251,123, 91, 49,198,124, 36,105,102, 74,229,159,251,115,223,250,219,191,253, 94,255, +129,167,183, 51,144, 84,206, 15, 13,132, 37,127,156, 86, 3, 96, 56, 57, 85,141,214,107,220,121,225,250,113, 85,255,194,150, 12, + 42,220,127, 26,206,225,142, 99,240, 30,222,193, 57,164, 32,201, 72, 65,167, 67,140, 80,128,136, 45,192,139,159,250,240,246,214, +167,218,122, 63,198,168,170, 49, 71,242, 76,136,211, 31,253, 99,127, 60,185,233,172, 1, 2,100,208, 68,138, 78, 37,125,166, 12, +134,155,147,213, 83,163,209, 49, 87,173,136, 72,221,178,105,229,233,231,161,138,203,215,225, 60,238, 61,141,149, 49,134, 21,171, + 10, 34,160,118, 7,146, 8, 83, 51,123,233,217,247,212,245,206,206,245, 23,234,197, 78,202, 83, 73,150,228,162,124,147, 0,191, + 44,161, 18,173, 80,141,121,203,160, 70, 10, 4,166,110,236,171, 53,232, 80, 68, 73, 41,201, 10, 72, 92,189, 97, 34,114,115, 7, +170, 56,115, 10,199,143,200,112,128,149, 9, 24,102,123,219,207, 89,187,120,233,185,247,153,181,139,253,235,198, 40, 20, 81, 80, +114,198,164,162,233,254, 37,137,136,244, 37,234,200, 65,184,136,128, 2,152,164, 80, 68, 4,176,228,187, 72,141,166,173,165,165, + 3,130,198,160,128, 87, 5, 56,171, 65,193, 71,207, 95,139,205, 46,218,231,221,226,127, 56,109, 55, 7,215,147, 65,202,217, 99, +178, 6, 68, 74,248, 21,106, 26,147,173, 19, 32,237,157, 55, 82,200,236, 26, 8,100,156, 82, 82, 92, 45, 72,103,147, 22, 27,179, +133, 67,235, 64, 64, 98,222,103,144,108,219, 25, 16,175, 92,248,157,122,190,117,243,234, 71,247,183, 63,157,246,222,123, 61,190, + 81, 85, 78,206,158, 25,123, 39, 43, 35,239, 52,157, 18, 21,137, 16, 5, 98, 62, 53, 42, 18, 41, 34, 84,241,194, 20,149,167, 79, + 34,198, 2, 58,228,141, 33, 1, 97,211,238,235,124,187,105,166, 22, 3, 68, 40, 94, 45,198, 48, 51,107, 94,122,246,215, 99, 59, +189,113,237,163,109,189, 71,198, 28,124, 65,219, 54, 94,217, 50,136,220,216,107, 85,228,142, 99,195,170,146,227,155,131,241,200, + 57,213,202,211, 68, 5, 17, 16,137,146,129, 22, 83, 79, 68, 50,137,199,178, 68,105,232, 16, 36,177,116, 84,218,197,142, 16,205, + 98,187,105,230,206,185,170,242,117,179,247,233,243,255,198, 98,125,227,202, 7, 99,168, 99,108,242, 70,139, 26, 33, 18, 9, 53, +163, 8,166,115, 3,100,209,152, 40, 46, 94,107,188,151,201,200,175, 77,220,104,224,142,109, 86, 78,101, 56,112,217,176, 43,124, +138, 95,211, 46,229, 80, 62, 5,159,154,221, 91,138, 57,235,197,141,208, 76, 23,211,171,177,221, 90, 76,247,103,123,159,105,155, +189,107, 23, 62, 96,108, 67,189, 7, 49, 64,133,100, 50,142, 0, 68, 73, 19,128, 84,139, 70, 21,107, 32, 64,219,182, 34,178,183, + 31,174,123,245, 78, 94,188,234,156,200,120,232, 84,117,117,236,212,105,194,185, 41, 16, 49, 17, 49,152, 80,132,233, 19,132,198, +180,139,177,217,143, 50,187,121,253,169, 24,235, 24,102,211,189, 75,180,166,153, 95,167, 20, 91, 69, 82, 41, 57, 78, 86,154,101, +136, 22,150, 98,119,192, 8, 68, 83,161,197,168,104, 12, 16, 76,163, 2, 85,229, 68,100, 52,116, 78, 85, 78,156,251, 26, 72,246, + 91,233, 48, 9, 20,146, 48, 85, 73,199, 95,179,237, 77,175, 73, 18, 45,128, 41,132, 40,160,151, 16, 84, 42, 21,233,137, 37,212, + 48,199, 14,154, 3,154,156,123,101,159, 39, 76,249,139, 0,226,139, 62, 51,191,187, 8,203, 57,207,239, 70, 80, 4,232,173,143, + 73,246,222, 72, 91,157,206, 5,169, 37,107, 49, 88, 74, 34, 4,106, 57,235, 80, 1,204, 44,103,165, 5,181,235,238,156,164, 0, + 84,120, 36, 88, 78, 37,225, 10, 98, 38,157, 23, 1, 45,131,136,217,152,102,153,164,200, 41,235, 61,192, 4,229, 41, 59, 47,150, +180, 79,146,102,102, 11,151, 19,187,188,199, 2, 24, 69, 4, 41,223, 53,129, 82, 83,154,150, 12,145, 17,100, 78,160,146,203, 32, +251,147, 15, 34,133, 3,164,229, 56,151, 57,218, 39, 65,163, 0, 52,144,201,138,166, 31, 10, 97, 52, 8, 96,197,240, 3,128,209, + 74,120,154,227, 29,230, 61,226,109, 34,196, 47, 63,190,252,248, 82,103,174,125,236, 93,249,201,120, 50, 24, 12, 70,163,113, 85, + 85,200,161,119,187, 88,212,117,189,152, 78,167, 49, 85, 61,254,143, 46,168,170,170,215,188,230,145,151,191,226, 21,103,239, 57, +235,124,169, 56, 82,160,249,156, 73, 42, 91,136,168, 42,201,231,159,127,254,227, 31,123,250,131, 31,252, 96,211, 52, 95,226, 5, +125,221,215,191,233,161,135, 30,170,124,197, 14, 55, 94, 42,250, 28,202, 28,187, 12, 31,128,115, 78, 84,154,166,249,208, 31,252, +193,187,222,245,239,255, 80, 11,242,222, 63,244,208, 67,111,124,227,215,177,139, 93, 75,209, 2, 75, 41,253,114,134,127, 48,179, + 63,152,218,139,168,234,238,238,238,207,253,236,207, 76,167,211, 47,110, 65, 71,143, 30,125,227, 27,223,120,231,157,119, 37,204, +104, 41,154, 94,122,209,114, 98,191,244,239,103, 93, 83,138, 78, 1,231,221,213, 43, 87,254,217, 47,255,242,141, 27, 55,190,160, + 5,125,215,119,125,215,120,188, 82,204,231,225, 12,191,207,228,251, 36,122, 89, 74, 5,237,211,146,172,246, 0,195,242,102,202, +104,188,246,210,133, 75, 63,243,119,127,236,243, 46, 72, 7,195, 81, 8,193,204,130,133, 37,100, 63,255, 49, 51, 35,105, 70, 99, +164,145,100,122, 38,166,111,141, 22,105,102, 49, 50, 65,124, 49,129,124,229, 58, 76,215, 33,193,135, 30,126,244,157,255,226,215, +215,214, 54, 62,207,113,142, 49,230, 13,226,109,138,196,203, 91, 3,129, 45,107,181,193, 32,206, 87,174, 26,169, 58, 95,141, 84, +213,251, 1, 84, 42,239, 5,206, 13, 42, 85, 55, 28,175, 15, 71,171,163,201,198,177, 83,103,157,226, 93,239,125,238, 95,253,242, +207,190,227, 23,222,254, 89,233, 3,143, 63,241, 4,139, 63, 5,187,130, 4, 75, 56,125,232, 28,242,208,151,170, 78,157, 23,113, +234,135,162,206,249,129,170, 83, 55, 80,231,156, 31, 57, 87, 13, 70,107,195,241,218,112,188, 62,222, 56, 45,213,104, 88,141, 30, +126,244,137,141,113,252,192,239,190,255,246, 18,162, 25, 59,160,238,224, 59, 38,188, 33,199, 17, 7, 87, 69,216,234,250,233,225, +202,198,120,229,232,218,198,105,239,134,163,149, 77, 17,129,115, 34,112, 78, 1,120,231, 68, 68,125,165,190,170,188,247,162, 66, +154, 32,154,222,125,247,217, 31,251,241,159,232,104, 44, 7,183,204, 12,183, 71,170,208,233,109, 31,195, 44,217, 34, 63, 92, 25, +142, 54, 39,107, 39,215,143,220,235,252, 96,188,118, 76, 21, 16, 39,154,147,232, 92, 50, 75,166, 52, 33, 16, 34, 77,164, 69, 49, + 82,196,253,232,143,190,253, 71,126,228,135, 15, 43, 53,115, 97,234,115, 62, 82,157,175,188,106,117,243,174,205,227,247,111,158, +120,112,243,196,203, 86,214,239,210,106, 85,252, 4, 76, 81, 39, 4, 80, 32, 7,164,217,180, 51,193,220,209, 64,131, 89, 73,223, + 85,127,224, 7,127,232,150, 5,125,182,245,116,133,194,172, 98,236, 10,135, 27,199,206, 30,187,227, 21,199, 78, 62,116,252,142, + 87,175, 31,185,183, 26,109, 86,195, 21,131, 26, 84, 65, 39, 80,129, 10, 28,224, 4, 10,168,229,122,140,177,160, 17,150, 47,186, +182,186,246, 29,111,254, 43, 7, 22,100, 75,143, 24, 99,176, 88, 55,113, 81,199, 69, 29,230,139,176,168, 99,211, 90,104, 99, 58, +236, 85, 53,169,134,171,131,209,230,112,180,233,170, 1, 68, 82,222,107,214, 85, 57,229, 22,189,135, 9,152,194,225,180, 22,163, + 89,136,161,181,104,209,226,185,123,207,189,246,181,143, 45, 41,117,175, 61,108, 3, 9, 76,103,201, 34,129, 20,239, 48, 28, 58, +175,178, 58, 1,225,215,142,157,115,110,120,252,244,171,135,163, 99,162,174, 53,117, 66, 7, 10,160,204,137, 89, 78, 77,150, 52, + 49,249,226, 54, 37, 14, 22, 17, 99,104,219, 16,154,196, 56, 50,197, 55,126,211, 55,125,236, 99, 79,167,170,179,134,104, 33,218, +188,137,243,133, 77, 23,113, 54,143,243, 38, 46, 22,182,168,109, 81,219,188,177,249,194,102,139, 56,157,219,108,193,104,131,136, + 65,104,157,153, 68, 75, 80, 80, 65,147,123, 80,185,132,218, 25,140, 65, 9,208,211, 86,197, 16, 67, 46,167, 38, 43,107, 22, 66, +248,158,239,125,107,150,208,254, 60,132,192, 23, 46,215,102,216,222,109,131, 45, 25,196, 46,155, 18,169,170,209,112, 40,235,247, +190,102, 60, 88,105,184,234,163,175, 64, 87, 28, 72,183, 77,180,164,217, 64, 70, 77,178,127, 38,197, 32,140, 97,122,243, 66, 8, +243, 24, 3,141, 80, 51, 40,205,156,234,112, 56,124,236,177,199,159,124,242,247,180,109,173, 13, 22, 35, 99,140,145,185,188, 67, + 35, 99, 49,254,201, 49, 16, 70,196,232, 98,240, 77,171, 33, 32,152,152,193, 44,171,170, 49,229, 29,146, 21,214, 16, 13,102, 98, + 6, 26,104,128, 49, 70,134,216,132,208, 46,185, 40,163,101,162,213, 55,124,227, 55,138,136, 91,248,251,175,220,104,166,243, 56, +175, 45,153, 36,233,242,167,146, 87,169, 27,172,110,220, 83,141,142,143,143,125,229,188, 93,223,218, 31, 93,220,146,182,149,166, + 69,140, 24, 84, 41, 77, 77,208,113,170,133, 25, 75,213, 51, 66, 34,148, 70,139,161,153,109,127,234,227,239,217,222,122,169,158, +222,204, 64, 66,249, 75,128,198,245,141,117, 95,183,177, 0,246,121,135,204,172, 56,243,156,183, 2,132,122,168,143,166, 49,184, +166, 17,117,210,182,104, 67, 18, 3, 0,152,101,208, 51, 49,124, 36,149,254,200, 92, 94, 51,130,140,209,154,122, 78, 11,145, 38, + 36, 12, 16,131, 10, 75,186,248,216, 99,143,251,162,114,249,192, 22,220, 74,129,156,221, 2, 16,245,163,209, 49, 95,141, 85, 39, +168, 70,173,137, 24, 46,223,192,214, 46, 86,134,216, 88,195,120,136,211,199,161, 14,195,129,169,193, 84, 53,221, 14, 4,214,210, +218,197,108,235,218,165,167,219,118, 58,221,189, 2,144, 22, 9,168,104, 90, 47,149,206,204, 68, 99,140, 62, 21,244,216,131,122, + 9,143, 77,242,180, 92,111, 37,157, 31,168, 31,168, 58, 39, 26, 76, 33,104, 26,180, 45, 96,112, 14,102, 8, 17, 46,165,175, 10, +102, 16, 69,146,232, 24,217,180,139,217,222,181,182,157,183,237, 66, 74, 93,192,204, 50,222, 96, 48, 85,129,137,137,207,105,111, +138, 44, 88, 96, 4, 90, 23, 70,103,200, 88,134, 34, 35,129,130, 78,164,175,139, 52,129,187,251, 88,212, 32, 81,121,156, 62, 41, +206, 97, 52,130, 87,169,231,215, 44, 54,211,221, 75,179,189,171, 77,189,189,189,245, 18, 45,118, 73, 62,151,172,167, 40,105, 6, + 17,138,248, 68, 70,147, 34,162,132,100, 88,190, 59, 74, 10, 5, 68,170,106,160, 90, 37,168,205,172, 3, 88,208, 6,180, 1,139, + 6,117,131,225,128,235,235, 90, 85, 24, 84,136, 64, 61,223, 13,237,254,246,245,231,183,175, 63,111,113,177,152,109,119, 64,166, +230, 90,112,151,238, 51,107, 94, 66, 97, 19,170,144,236, 9, 65,201,203,201, 43, 75, 74,150, 23, 81,200, 3,198,254,130, 34, 48, +162,141,100,195, 75, 87,247,188,114,215, 93, 84, 13,113,254,162,112, 54,221,189,218,212, 51,179, 96,198, 4, 18, 74,194, 9,173, +184, 95, 65, 18, 79,170, 49,248, 4, 83,128,160, 24,165, 64,190, 48,228, 50,119,137,217,168, 6,137,233,204, 8,132,136, 9, 42, + 83,113, 68, 20,180, 45,208,196,235,215,174,198,216, 14,230,191,137, 56, 93, 31,222, 24,250, 6, 61, 28,156,240,164, 2, 53,241, +150,192,143, 36,233, 83,169, 61, 31,251,140, 46,177,104, 36, 19,140, 9,163,106, 76,112, 93, 86,174,206, 51,208, 32,134, 16, 67, +179, 71,107,247,247, 46, 34, 54,139,197, 84, 57,115,177,105,125,168,188,122,167,162, 41,106, 19,130,122,112, 29, 90,236, 16,204, + 50,253, 51, 45,158,146,228, 83, 32,106, 88, 78, 41, 72,192, 98,104, 69,156, 35, 61,208,230, 3, 9, 5,132,161, 14,117, 91,111, + 93,189,240, 59,161,157, 93,126,225,189,102, 49,173,247,232,134, 31, 84,122,226,232,224,216,122,229,189,142, 71, 9,159,147,140, +136, 21,227,146,149, 89, 85, 0,152,249,124, 54,153,128, 55,233,160,188, 36, 48, 19, 75, 44, 60, 50, 50, 43, 56,197, 18,202, 72, +130, 33,180, 22,103,109, 59, 11,205, 44,196,133,197,152,113,102, 97, 48,186,104,109,107, 77, 48, 18,222, 65, 68,124,166, 70,106, +210, 88,201,136,161,116, 4, 45, 15, 2, 89,141, 37,235,119, 66, 62, 37,147, 45, 40, 52,139, 77,189,107, 22, 34, 91,137, 21,212, + 9,148, 97, 65,134,221,155, 31,191,118,225,119,219,102,247,198,213,167, 4, 52, 11, 29,203, 99,103, 47,136, 96,103, 26, 63,115, +181, 30,143,220,137,205,170,242,122,234,216, 80, 5,131, 10, 48, 45, 66,234,107,171, 98,230,151,162,233,132,188, 41, 18, 66,151, +115,231, 84,242, 50, 24, 97,153,225,196, 84, 14,161,129,209, 98, 29,195, 52,182, 51,139, 11,136, 74, 34,110, 83,141, 6, 85, 49, +137,209, 90,145, 42, 88, 8, 20,201,212,238,104, 84,137,170, 46,169, 98,178,166,132, 66,196, 23, 38, 34, 19,104, 42,146,128,116, +208,164,212, 25, 64,139,139,197,117, 31, 38,117, 61,171, 6,234,117,226, 33, 23, 47,254,247,157, 27,159, 88, 76, 47,237,221,124, + 46, 29,144,132,196, 38,142,135, 8, 64, 35, 52, 68, 68, 11, 77,171,211, 69,116,162, 87,182, 26, 85, 57,186, 81,121,213, 19, 71, + 6,131,129, 86, 94,188, 71, 10,127, 65,250,172, 66, 20, 17, 73,168,107,222,221, 68,191,177, 12, 9,211, 90, 90, 16, 48, 25,113, +131,180,205, 94, 51,223,106, 22,219, 49,204, 82, 70, 65, 41, 54, 44, 49, 79, 52, 99, 5,132,136, 89, 99, 42, 46, 66,232, 84, 87, +198, 46, 56, 70, 51,139,160,115, 76,104, 41,212, 72,143, 84, 72,144,242, 9,128,149,114, 34,146, 73, 16, 48,204,167,215,188,159, +182,245, 13,176,222,186,254, 33,182,139, 27, 87, 62,188,191,243,124, 12,141,145,154,252, 78,166,228,228,178,168, 21,168, 56, 21, + 40,149,198,168,139,198, 20,188,178,213,136,224,230,110,171, 78, 71, 3,231,157, 12, 43, 55, 26, 58, 81,245, 89,201,243,121,202, + 50,145,124,240,146, 73, 35, 45,134,118, 10, 32,196, 5, 90, 55,223,251, 76, 91,239, 46,102,151,155,197, 77,201, 97, 74,241, 60, + 6,104,142, 65, 68,144, 76,138, 8,196,104, 42, 10,179, 32,166,108,231, 16,193,108,110, 20,140,134,206,171,140, 71,126,101, 76, + 17,113,147, 35,247,149,178, 60,150, 73, 11, 37, 78,227, 82,118, 24, 73,206,118, 95,220,221,126,126, 49,189, 90,207,111, 48, 46, + 58, 6, 45, 59, 32,160, 68,249,194,196,139, 44, 87,101, 49,212,217,104,119, 65,152,144, 8, 68,140,168, 91,200,137,251,222,144, +209,245,194, 19,200, 16,124, 71, 33,101,103,151, 10, 96,149,173, 16, 1, 45,231,170,251,189, 30,173,201, 92,170, 62,248, 83, 1, +168, 93,129, 35,195, 60,204, 5,198, 76, 76, 86,166,234, 69,114, 95,169,150,211, 69,176, 41, 89,205,108, 11, 36, 75,213,177,243, +146,151, 76,108, 46,116, 55,159,171, 29,229, 56,119,136,127, 42, 77, 8,179,156, 96, 29,225, 36,139, 56,215,253, 82, 52, 85,172, + 82,170,119,100,118,188, 24,122,139, 96, 93, 6,204,194, 32,131,165, 93, 74, 60,206,206,184, 49, 87, 94,146, 95, 68,255, 27,150, +171, 55, 20,150,178,106,249,113,162,151, 9,193, 68,253, 43, 64,140,228, 60,220,186, 0,140,217, 36, 30,224,113,152,101, 12,150, +137,251,128,190, 72,154, 3,153,174,240, 46, 69, 28,217, 75,148,242, 79,174, 46, 39,146, 91, 82,128,130,100,168,100, 1, 0, 29, + 12,146, 10, 76, 61,220,201,206, 82,151,197,161,216,151, 84,149, 75,223, 10, 50,253, 52,253, 50,179,189,103,174, 48,230,186, 76, +246, 71, 44, 53,154, 62,211, 37,105, 98, 90, 66, 88, 90,113,112, 76,219,151,235, 59,214, 99, 69,221,121, 98,146,145,100,134, 94, + 33, 68,100, 33,116, 50, 74, 2,206, 94, 56, 29, 18, 90, 6, 28, 50, 22, 32,121,105,198, 82,142,211,156, 63, 37,241,166, 96,192, +186, 69, 48,191, 43, 73, 24,186,194, 83, 86, 96, 74,103,138,211,161,204,203,183,162, 4, 37, 76, 65,170,219,178, 48,227,129, 82, +223,203,188, 21, 17, 41,135, 84,147,208,243,153, 32, 4,102,217,246, 51, 7, 2,233,224,152, 88,206,174,242,206,101, 81, 33, 71, + 76,233, 94,210, 55,233,188, 72,222, 56,150, 29, 78, 54,152, 57,241, 98,177, 69, 7,200,118, 95, 46,152,125,249,241,229,199,151, + 31,255, 95,212, 91, 63,215, 37, 68, 86,215,214,214,215,214, 86, 86, 86, 55, 54, 55,142, 30, 57,186,177,185,185,177,190, 62, 89, + 89, 93, 89, 25, 15, 6,195, 84,163, 90,170,228, 28, 40, 90,132, 16,230,243,217,238,222,238,222,222,254,213,171, 87,246,247,246, +119,118,119,246,118,119,183,183,183,247,246,246,254,255, 19,208,100, 50,121,224,193,151,157, 57,115,230,212,201,147, 27, 27,155, +147,149,137,247, 30,196,109, 13,190,244,248,210,161,226,201,193, 47, 58,114,235, 45,124,232, 16,194,108, 58,219,217,221,185,120, +241,194, 51,159,248,196,179,207, 60, 19,190, 68,149,239, 47,153,128, 78,158, 60,249,200,163,143,190,234, 85, 15, 15,135, 3,178, +143, 42, 62,255,117,115, 72,135, 37, 92,170,196,233, 57, 4,207,217, 74,142,141,229,128,164,138,188,164,212, 77,165, 64, 0,170, +170, 47,190,248,194,127,125,239,123,207,159,255,184,153,253, 95, 21,208,234,234,234,169, 83,167, 94,253,234,135, 31,120,224,193, +132,232,176, 43, 12, 47, 85, 82, 14,201, 72,110,171, 52, 34,135, 74,200, 75,223,222,194,161,191,245,223,131, 93,115,146,152, 89, +178,204,132,204,181,248,155, 55,111,190,239,191,253,246,249,243,231,183,182,182,254,143, 8,232,228,201,147, 15, 61,244,208,185, +115,231, 78,158, 58, 21,163, 37, 66,234, 65,161, 16,248, 92,106, 35,203, 6,105,201,210, 44, 63,127,192,248,224, 54,180,254,219, +146, 1, 62,223,147, 9, 93, 99,162,251, 3,114,225,194,133, 15,126,240, 67, 79, 62,249,187,237, 31,130,230,113,224,214,222,246, +182,183,213, 77,139,142,209,213,225,142, 75, 24,228, 23, 38,231,131,119,123,232,201,219,188,236, 16,109,227,115,168,210, 33,234, +194,178,152,186,211, 7,136,168,234, 96,184,178,186,126,204, 15, 6,243,217,236, 55,127,227,223,255,167,223,248,245, 63,172,128, +190,247,173,223,215, 17, 78,216, 17,220,110, 35,149, 91, 44,207,114,105,250,160, 92,150,158,188, 85,149, 14, 30,194,204,194,112, + 29,123, 68, 83,123,112,106,149, 47, 60,141,130, 20,116, 56, 0,156,250,114, 1, 85,239,157,122, 17,129,202,104,180,182,118,228, +184,247, 67, 81,161,153, 89,168,231,251,191,248,179, 63,253, 7,191,255,254,255, 61,107,229, 51, 29,234, 80,107,201,237,106,247, + 60,100,177,114,203, 87,247,100,161, 96, 30,122, 29,115, 69,167, 35,157,151,242, 91, 78,246,212, 87,206, 15,146,125, 81,245,206, + 15, 69, 93,146,139,115, 94,213,229,217, 2,234, 82, 99,118,254,166,170, 68,188, 0,206,185,193,104,109, 56, 94, 77,204,160,225, +120,125,229,200,233,193, 96,156, 50,126, 21,170,224,231,255,217,159, 9,237,244, 55,126,237, 29,239,252,197,159,188,126,253,218, + 23, 37, 32,247,196,227, 79,228,106,124, 79,142,228,173,162,225, 23, 96,226,229,214, 39,121,219,103,161,174,114,190, 82,173,212, + 85,190,154, 12, 70,171,126, 48,241,213,200, 87,227,225,104,173, 26, 76,170,193,216, 15,198,213, 96,226,135, 19,239,199,190, 26, +251,106, 84, 13, 39, 85, 53, 76, 47,115,213,196,251,161, 86, 67, 95, 13,171,225,138, 31,140, 85, 43,184,202, 87,227,193,104, 69, +213,119,214, 34, 97, 51,109, 27,215, 87, 7,175,121,245, 31,121,237,107,191,226,242,165,203, 55,110,108,125,193, 26,116,144,238, + 33,135,197, 33,183,149,143,116,172,216, 4, 93,201, 18,178, 86, 78,200,210,200,132,254, 87, 0,186,193,104,117,227,204,120,229, +136, 58, 7,113, 43,171,199,215, 54,207, 56, 63, 20,129,186,193,104,188, 38,110, 80,184, 81,233,148,101, 28,171,199,237, 50, 22, + 80,174, 92,222, 79, 20,218, 79,102, 0, 4,129, 4,160, 32,225,162, 41, 41,171, 43,107,111,126,243,119, 70,198,127,242,142, 95, +122,238,185,103, 63,191,128,184,116, 50,249, 89,104, 65,183,213,151,108,178,164,255, 98, 73,107,114,145,121,169, 74,152,202,192, +169, 29,220,171,175,212, 15,211,236, 18,113, 3,209, 74,164,130, 80,212, 67, 60,196,105,198,123, 18,210,157,111,152, 69, 28,253, +137,205,149, 60,233, 89, 11, 64,223,139, 44, 5, 7, 17,152,193,140,153, 35, 98, 17,192,119,188,249,205,211,233,244,215,126,245, + 87,207,159,255,248,231, 20, 80,239,175, 14,221,229, 45,225,239, 45,141,103,165,247,120,169, 15, 25,165,172,211,129, 43, 4, 68, + 70,227, 35, 71, 79, 62, 56, 24,175, 11,224,171,201,250,209,179,147,181,227, 10, 7, 64,212, 81,171,210,144, 47, 80,165, 32, 38, +146,143,192,149,230,171, 30,204,237, 33, 93, 20, 24,121, 73,199,153,138,249, 61,172,153,160,214,196, 93,233, 1, 53, 34,198, 56, + 26,141,190,237,219,254,210,197, 75, 23,255,213,191,252,149,207, 22, 67,185,175,120,237,107, 59,122,246,210,159, 91,190,235, 73, + 69, 40, 84, 28, 98,169, 93, 8,135,225,166, 66, 10, 23, 8, 80, 13, 86, 39,107,119, 12,134,171,226,188,175, 70,227,149,227,195, +225,134,136, 87,173,212,121,136,131,184,212,188, 88,106,230,146,213,174, 72,167, 31,105, 33,144, 3, 49,105,167,182, 2,202,146, +170, 39,150,120,161, 8,197,176,191,125,105,239,230, 69, 11,109, 33,202, 68,144,102,182,182,182,254, 85, 95,253,213,171, 43,107, +159,248,196,249,219,104,144,153,221,222,167,103, 22, 60, 0, 68, 67, 19, 44,132,172, 39,198,238,206,197,169,120,159,239, 75, 69, + 6, 3,241,197,207,140, 38, 71,198,171,199,156, 42,160, 43,235,167, 78,220,249,154,241,202, 81,166,159,185,113,164, 79,129,129, + 26,114,115,124,238, 32, 64,186, 81, 41, 29, 16, 7, 27, 36, 58,130, 3, 82,121, 10, 75, 37,134,164,229,109,198,203, 69,193, 4, +221, 2,128, 5,179, 16, 66,211,182,139, 67, 76,217,104,209,104,143, 61,246,216,227,143, 63,254,243, 63,255,179,151, 47, 95, 62, +160, 65,143, 62,250, 40,110,231,210,141, 76,196,155, 84, 28,174,155, 68,224, 97, 36,163, 49, 24, 83,207, 96, 23, 67,165,193, 65, + 94,203, 0, 11,209,193,112,109, 56,220, 80, 55, 82, 63, 24, 78,142,172, 31, 61, 59, 24,110, 58, 29,168, 27,138,250, 82,211, 43, + 92, 24,145, 37,160, 89,250, 48,169,107,253,232, 66, 76,233, 42,120,169,246, 91, 90,223,164,156, 29,246,142, 51,151, 7, 0,134, +176,119,243,226,206,214, 75, 49, 52,125,160, 71,118, 50, 79,143,215, 61,241,250,241,100,146,134,234,100, 13,154,205,115,114, 28, +141,137, 50,148,212, 50, 4, 46,106,235,240,229, 24,151,109,242, 18, 56, 45,105,104,149, 0, 80, 17, 95, 57,239, 28, 64, 95,141, + 78,159,217, 56,179,122,255,192, 79, 0,120,217,104,218,137, 86, 46,121, 28,151, 76,246,114, 18,194, 91,243, 66,201,230,177, 35, +252,116, 85,132, 82, 2,224, 18,229,100,201, 48,228,222,146,104, 33, 44,118, 67,168, 69, 16,218, 69,189,216, 55,139,180, 92,253, +235, 26,252, 98,161, 14, 27, 64,229, 87,190,254, 43, 79, 28, 63,241,239,254,221,175, 38,176,197, 55,109, 58, 98, 18, 34,119,167, + 97,111, 26, 19, 63,171, 14,156,205, 99,180, 91,124,152,176,200, 60,251,150, 37, 2,168, 58,103,170, 17, 34,195,161, 77,142, 76, + 78,224,164,234,170, 10, 34,198,141, 13, 7, 49,119,252,164, 73, 54,197,104,200,225,196,247, 22,198,133, 90,103, 88, 74, 53,106, +233,153, 67, 94,183,227,208, 88,180,186, 93,196,118, 10, 90, 12, 77,104,235, 68, 36, 75, 81,137, 38,114, 85,105,133,164,136,138, +208, 44,152, 61,240,192, 3,223,249,157,127,237,157,239,124,199,205,155, 55,221,145, 59, 94,190, 63,179,253, 89,216,159,197,189, + 89,156,215,214, 70,134,104,109, 96,176,174, 57, 53,247, 31,165,138, 81,142, 75, 74,109, 41, 91, 0, 66,197, 85,131, 21, 95,173, + 56, 55,242,213,234,202,198, 61,227,181,179,198, 73, 19,124,107,195,104,163, 89,237,246,166,178, 63, 71,140, 8, 17, 77, 64, 27, +250, 91,101,151,249,229,233, 69,135, 18,193, 62, 3,226,178, 36,186, 42, 95, 97, 51, 11, 45, 13,119,136,205,124,111,251,194,116, +231,242, 98,182,179,152,238, 76,119,175, 46,230,219, 22, 35, 15, 70, 42, 92,186,118, 97, 39,113, 60, 30, 63,241,186,215,125,248, + 67, 31,146,211, 47,255,134,131,155, 39,184,149, 42,125, 48,189,202, 85,159,196, 77,100,199,182,162,250,209,100,245, 84, 53, 88, + 23, 17,231, 70, 71, 79, 62,124,244,142,215, 56,191,146, 18, 2,173, 70,206, 57, 8, 42,135,147, 27, 88, 91,129, 42, 84, 48, 25, + 97,125, 5,222,101,193,167,225, 54, 61,179,184,111,247, 46,132,143,229,136, 49, 87, 43,197,138, 29, 87,198, 54,154, 23, 26,176, +216,223,186,248,194,147, 59, 55, 94,164, 69,144,161,157,181, 43, 92, 56, 68, 0, 0, 10, 53, 73, 68, 65, 84,245,148,180, 30, 51, +193, 33, 92, 96, 41, 13, 22, 81,167,140,153,194,112, 40,218, 97,239, 56, 15,165, 12,133, 79, 90,136, 60, 93,229,203,202, 60, 16, +175, 90, 65, 84, 92, 5,113,132, 75,172, 96, 80, 29,115,113, 50, 10,234, 22, 58,135, 10, 84, 65, 66, 20, 94, 83,139, 58,134, 85, + 34,204, 0, 66,167,210, 9,171,175,170,119,209, 16, 59,106, 88,207, 70,111,218,186,169,247,193, 0, 96, 49,223,174,235,105,108, + 23,105,108, 96,140,173,153, 49,119,221,117,133,227,220, 5, 43,101, 43,242,173,146, 70,168, 83, 95,106,168,236, 90,249,122,189, + 97,175,252,201,238,229,164,162, 48, 3,216,207, 95, 74,166, 66,171,193,218,104,114, 12, 80,231,135,131,209,186,247, 19,239,199, +201,227, 52,166, 98,153, 47,119,165,233,189,210,100,132,149, 49,156, 66, 4,147, 17, 78, 28,193,100, 4, 0,206,137,119,172,124, +234,155, 78, 53, 67, 45,142,108,153,125, 79, 88, 96,108,147, 7,155,237, 93,217,186,244,177,166,222, 35, 17,219,249,222,206,229, +182,222, 99, 46,164, 46, 65,225,194,174,125,144,133,132, 33,203, 61,218, 34, 2, 67, 68, 82,198,219,100,152, 75,101,212,236,246, +209,245,186, 47,121,156, 68, 83, 99,119,118, 41, 68,238,184,233, 94,212,251, 31, 46, 89, 86,129, 25, 84, 25, 77, 66, 64, 26, 93, +208,180,168, 91,104, 74,196, 29, 70, 30, 2,168,230,145, 45,236, 55,152,176, 80,122, 54,205,194, 34,132, 90, 64,210,234,197,180, +105,235,182,169, 1,134,208,210, 98, 52,147, 82, 38,198,109,114,204, 37, 65, 75,215,100,153, 77,175, 41,252, 45,230,177,188, 24, + 44, 74, 92, 40, 4, 40, 68,206,204,108,234,102, 3,176,132, 37,234,253,208,251, 21, 81, 85, 29,138, 12, 5, 46,247,172, 75, 71, +170, 88, 18,153,128,148,197,130,139, 5, 59, 3,116,237, 38,156,131, 0,195, 10,199,142,202,230,154, 58, 7, 8,134, 30,163, 33, + 85, 69, 5, 49, 44, 22,211,171, 49,236, 3,136,109,189,123,243,197,189,155,159,177, 24, 0,182,237,162, 89,236,154,133, 12, 96, +231,124,227,243,131, 55, 89, 45,122, 32, 6, 66, 42,196, 91, 33,139, 72, 79,192, 41,252,138,174,145, 63, 75,174,136, 76,192, 66, +141,205,175,207, 25, 47,251,209, 49,144,142, 37,145,174,145,153, 19, 75,218,202, 37, 68,183,231, 66, 75,199, 9,100,219,178, 9, +116,150,102, 26, 81,197,212, 65,193, 16, 66,104,235,216, 54, 4, 99,168,219,166,110,219,218, 98, 3, 32,134,218, 98,107, 22, 15, + 32,189,153,236,212,157,172,131, 31,153, 74, 45, 93, 41, 33, 63, 37, 66,139, 94,108, 41,203, 75,141, 52,157,178,176, 39, 51, 17, + 38,236, 18,234,238, 31, 75, 22,187, 55, 99, 34,100, 26,209, 39,102,136,177,239, 41,145,254,184,162,181, 62, 23, 87, 17, 87,144, +236, 72,196,214, 50,189,172,142, 55,183,119,197,166, 4,193,224,236,146,182,207,137,205, 68,160,210, 12,117,199,203, 66, 19, 29, +131,193, 44,116,225,116,161,128,220, 6,124,144,219, 32, 57, 75,105,181,100,142, 69,223,240, 13,120,200,225,203,117,115,166, 80, + 24,117,178,228,212,250, 14, 8, 43,185, 99, 31,174,164, 95,201,164, 45, 66, 40, 75, 35, 58,216,135,121,157, 75,236,108,173, 9, + 18,195, 46, 22,170, 5,200,166, 13,214,180,164, 17, 81,219,153,107,110,192,246, 1,169,180, 53,191, 59,112,205, 82,126,175,135, +123,238,138,171,205,236,211, 28,223,246,127, 15, 84,175, 74,128,195, 67,152,141,115,190, 83,251, 30,198,145,222,150, 38,106, 87, +214, 22, 90,102,139, 80, 10,177, 12,125,194, 8,192, 24, 67,160, 53, 70, 85,136, 90,240,164, 43,198, 47, 44, 9, 51,171,156, 10, + 72,179, 16, 45, 56, 65, 36,219,102,119,186,243, 66,104,119, 1,137,113,190,191,253,194,124,255, 50,153,248,188, 11,225, 20, 12, + 16,169, 20,171, 99, 27,120,136,136,115, 88,157,184,213,177,115, 46,119, 31, 14,188,168,102, 0, 41,181,243,231,125, 75,228,106, + 73,221,233, 89, 6, 2, 73,228, 81,146,170,218, 91,166,164, 68, 49,250,130, 75, 46, 35,173, 82, 28,126,201,168, 81,204, 80,177, + 61, 25,238,232,199,200,148, 99, 42, 6, 68, 72, 26, 69,209,113,106,123,218,152,244, 36,159,124, 97, 37, 35, 45,210, 64,210,230, +245,252, 90, 83,223, 32, 25,195,124,127,231,211,211,221,151,210,241,233,187,252, 33,149,147, 24,220,112,160, 0,188, 87,231, 48, +172,210, 68, 10,113, 94,211,132,128, 28, 34, 11,211,204, 29,233,204,106, 10, 84,210,171,187, 65, 20,153,131,102,197, 21,247,111, +230, 19,121, 79, 14,182,245, 89,223,229,212, 19, 16, 15, 69, 71,146,233,132, 57,160, 78,111, 16, 99, 29,194, 28, 80,250, 24, 98, + 67,198,132,154,164,217,113, 37, 24, 48,177, 72, 70, 2,198, 56,157, 93,157,239,189,100, 86, 3,108,234,157,221, 27,207, 54,245, +142, 0,102,161, 94,220, 48,139, 29, 43,178, 80, 57, 25, 13,179, 58,214,193, 4,162, 26,219, 96,251,179,152,198,105, 14, 43, 93, + 25,107,229,132, 2,175, 58, 26,106,229,187,225, 89, 76, 44,113, 89, 34, 90,226,214, 74,177,244, 30,131,128,199,114,214, 87,216, +112,125, 87, 2, 10,232, 36, 69, 35,123, 63,136, 50,240,181,235, 14,182, 24,219,216, 46, 68, 53, 18,102, 13, 17,105, 49, 49, 62, + 89, 88,100, 10, 70, 11, 96, 16,146,108,235,233,165,237,235, 31,105,155,125, 17, 52,139,189,233,238, 11, 77,179, 95,226,135,212, +196,144,245, 57,243,226, 4,145,176,154,221,208,170,121,109, 59,251, 33, 33,179,227,145,219, 92,245,149, 87, 8, 7,222, 1, 78, +196,229, 8, 89,229, 96,175,145, 28,128, 8, 62,203, 84, 44,111,210,197,220,157, 31,147, 50,115,131, 40, 38,170, 15,149, 10, 1, + 51, 23,213,187,200, 60,209, 12, 99, 19,194, 66,160,172, 16, 67, 27,219, 32, 18,203,140, 13, 85,129, 17, 22,219,102,118, 37,134, +109,152,197, 24,166,123, 47, 45,102,215, 67, 51,133, 32,132,121,180, 0,166, 41, 62,217,192,119, 76,255,190,170,100,100, 95, 94, +163, 69,196, 60,222, 11,117, 43,251,179,232,189,137,192, 59, 51,218,172,206,243,146, 42,175,131, 74, 18, 27,216,171, 84, 62,199, +179, 34, 80,201,207,247, 99, 61, 50,232,214,141,206,233,248,142,210,231, 92, 61, 18, 37,165, 57,168,175,110,117,221, 75,214,183, + 20, 48,180,205, 84, 69, 72,241, 54, 14,205,126,140, 11, 13,158,128, 19,239,212, 39,255,191,104,103, 55, 46,127,104,119,235,227, + 68, 99,180,122,182, 53,159, 94, 49,171,151,208,193, 98,189, 18,161, 61,155,144, 46,202, 42,186, 92,136,237, 70,139,150,215, 90, +215,220,159,133, 60,109, 91,101,224,197,105, 58, 95, 88, 25,185,149,177, 75,173,227,163,161, 30, 89,243,131,129, 10,160, 34, 85, +165, 78, 58,103, 95, 6,171,144, 48,243,224, 82, 89,175, 8,203,250, 68,142, 75,174, 62,247,200, 64,122, 11,110,125, 73, 33,169, + 71, 27, 67, 3,213, 24,156,197,134, 22,146, 70,152, 6,109,234,132,180,135,230,102,104,247, 66,152, 25, 91,144, 22, 91, 34,118, +108,206, 28, 83, 74,169, 38,229,190, 78, 75,249,209, 82, 67, 91,126,103, 65,241, 66, 93, 68, 97, 29,186,152, 74, 54,105,248, 50, + 66,100, 29, 76,139, 18,236,251, 48, 8, 46,249,210,202, 59,239, 10, 65, 66, 80, 84, 11, 10,245, 75, 92,249, 82, 34,201, 1,101, +105,244, 44,100,244,220,233,150, 33,207,174,176, 97, 93,232, 29,173,173, 23, 55,154,102, 7,162,222,143, 22,179, 59, 23,139,235, + 21, 23, 48, 54,139,237,253,237,231,219,118, 15, 64,104,167,187, 55,159,157,239, 95, 34, 35,150,195,119, 17, 75, 77, 65, 57,227, + 74, 29, 0, 82, 16,112, 32,135,144,105,139, 83,215,157, 29,200,169, 83,219, 82, 62, 55,102, 81,106, 3,144, 38,218,201,116, 17, +177,219,185,163,146,248, 74,214, 32,175,121, 52,193,112, 32,227,161,115,154,103,252,120,203, 51,160, 58,197, 77, 71,202,186, 56, + 48,111, 74,218,178,110,244, 89,166,101,203, 18, 48, 83,216,180,201, 97, 51, 70,107, 98, 59, 19,168,145, 33,204,218, 48, 15, 97, + 1, 48,132,218, 98, 0,210, 28,171,229, 56, 18, 98,146,166,218,225,224, 74, 36,143, 76, 74,125, 28, 25, 83,205, 49, 89,158,117, +211, 33, 60,148, 50, 59, 40,185,241, 37, 35, 65,164,235, 91, 74,213, 45,167,191, 74,159,113, 70,137,212, 24, 37, 6,210,101,177, +228,118,132,146,106,244,253, 4,125,242,219,213,235, 14,102,168,157,255,234, 8, 26, 60, 24,173,168, 86,234, 6, 37, 85, 49, 90, +204,148,228,212,178,155, 8,246,221, 8, 38, 46,207, 35,234,166, 43,101, 23, 86, 98,255,146, 35,201,242, 87, 7, 34,187, 46,163, + 42,201,103, 50,245, 75,163, 0, 74,202,174, 57, 85, 44,190,160,175,116,148, 98,129, 0, 16,223, 5,182,210, 79,238, 2,210,208, +190,180, 77, 29,138,102, 29,156, 87,234,248,203,227,244,186,237, 45, 2,138,172, 99,172, 15, 17,171,186,249, 14,197, 18, 75,113, + 8,165, 7,160,111,166,203,224,147,116, 29, 36, 68, 71, 58,183, 14,214, 68,223,135,135,108,172,122, 60,173,128, 49,165, 53,135, +189,167,207,108,185, 46,240,237,176,138,228,119,138, 47,247,236, 58, 32, 59, 88,179,216,150,156, 60,117,158,188,147, 20, 59,104, + 77, 32,214, 21, 8,121, 11,169,236, 64,234, 94, 64,146,174, 6, 40,101,232, 92, 62,191,157,207,202,123,109,146, 26, 28,114,117, + 59, 75, 0, 38,217,124,119, 17,141,117, 64, 85,134,192,176,220,235, 67,237,107,189, 37,222,145,244, 95, 8,176,239, 40,200,211, +186,250,252, 45,109,139,121,246,126,189,235, 21,237,106, 78,105, 73,105,100,113,178,161, 5,179, 42,210, 68, 55,148,177,139, 11, +216,229, 90, 29,234,214,167,143,197, 92, 89,233, 7, 21,176, 71, 81,173, 76, 96,238, 60, 57, 58, 27,168, 5, 81, 42,167, 69,186, + 12, 61,205,133,131,244,103,136,121,108,164, 32, 39, 91,125,104, 88,148, 38,159, 69,162,211, 82, 46,215,100, 75,151,188, 47,110, + 18,253,140, 17,246, 93, 78,169,109, 61, 83, 56,146, 29, 43,135,137,178,156,169,201, 82,171,185, 28,164,117,176,123, 91, 46, 15, +142, 43, 19,164, 59,156, 42, 55,147,136,230,136,185,139,237,211,121, 50,148,255, 97,164,244,251, 22,239,194, 37,169,160, 27, 25, + 87,218,157, 58,236,166,180, 95,165, 59,215,148, 35,101,165, 40,219,145,142, 90,129,245, 4,146, 82,141, 30, 91, 50,116,165, 74, + 43,157, 50,210,141,246, 46,211, 39,173,164,240,217, 70,200,146, 55,226,109,138, 34,236,207, 67,137,175,200,229,225,228,125,171, +124,129,203,208, 29,184,188,228,142, 94,211, 81,109, 88, 88, 55,101, 6, 93,223,207, 86, 90,198,178, 97, 67,177, 53,229, 87,165, +216, 35,230,218, 28,251, 66, 64,215,147,148, 86,231,217, 37,157,214, 19, 48, 65, 99, 31,206, 50,251,148,146,138,119, 6, 31,214, +177, 59,216, 25,212, 3,112, 19, 14,125,102,223, 87,147, 7, 38, 98,137,168, 72, 90, 23, 51, 88,154, 84,156,179,224, 2,219, 23, + 16, 28, 6, 83,104,145, 81, 70,199, 83,227,187, 44, 19, 79,178,240,242, 97,146, 66, 61, 49, 72,170,167, 44,159,179,222,149,228, + 41,141, 20,136, 79,178, 40, 47, 72,221,242,133, 21,217, 87,155,115, 39, 48,151, 73, 2,189,164,242, 61,103, 76, 53, 53, 63,221, +202, 12,238, 96,241, 37,251, 85, 28,114,137, 5,101, 9, 29, 47, 90,215, 25,166, 46, 59, 77, 55,156, 38, 43, 44, 57,199, 20, 55, +166,255,101,161,120, 12,154, 64,217, 11,171,164, 69,154,163,135,226,226, 65,166, 81, 27, 29, 14,155,101,236,209, 91,233, 50,185, + 62, 55,175, 73,199, 52,145,146,227,119, 67, 59,203,114, 59,136,159, 75,182, 71, 14,149,131,173, 11,168, 4, 7,106, 37,194, 62, + 88,232,244, 78,186,201, 79, 41,198, 41,106,196,229,208,180,208, 77,187, 0,101,233,108,148, 46,242,206,112,244,214,168, 11,144, +178, 19, 92,126, 25,151, 96,124,246,171,252, 95,129,131,209,235, 56, 35,137,112, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/blur.png.c b/source/blender/editors/datafiles/blur.png.c new file mode 100644 index 00000000000..d737bea4ae3 --- /dev/null +++ b/source/blender/editors/datafiles/blur.png.c @@ -0,0 +1,298 @@ +/* DataToC output of file <blur_png> */ + +int datatoc_blur_png_size= 9327; +char datatoc_blur_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, + 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, 11,252, + 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, + 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, 21, 0, 4, 16,211, 77, 59, 52, 0, 0, 32, 0, + 73, 68, 65, 84,120,218,237,125, 89,172,109,217, 85,221, 24,115,173,125,206,185,205,171,215, 84,231,178, 41,155,234,136,171, 30, + 54,174,206,101, 19, 18, 59,177,171,140, 76,172, 96,132,137, 2, 31, 65, 10,157,146,208,217,198, 54, 54, 16, 41,182, 48,144, 31, + 48, 31,129, 8, 16, 40,226, 35, 16,164,240,199, 87, 76,147, 16, 97, 3, 70, 33, 64,117, 70,118,217, 46, 85,149,171,185,239,246, +231,236,189,230,204,199,156,107,237,125,238,189, 85,101, 7, 19, 5,169,206,123,186,205,121,231,236,179,246, 92,179, 29,115,204, +245,128, 47,247,241,178, 27,110,184,233,166,155, 79, 63, 79, 0,239,255,192, 7, 75, 25, 8,136, 8, 69,114,206, 93,206,185,235, + 62,244,193, 31,245, 23,165, 31,248,193, 31,234,251, 85, 41,131,170, 22, 85,213, 98,254, 80,125,235, 91,239,127,240,161, 7,247, +247,246,100,181, 90,246,171, 85,191,234,251,161, 31,250,126,181, 92,245,125,111,106,170,101,181, 90,125,223,247,126, 95,215,117, +124,215, 63,255,206,255,253,232,225,222, 81, 33,229,214,175,218,120,217, 53,139, 11, 87,205,183, 55, 55, 82, 74, 36, 41, 50,235, +186,244,220,240,202,101, 95,204,204,212, 72,187,178,215,155, 33, 39,146,166, 58,248, 39,167,173, 75,183, 18,128, 1,134,156, 96, +102, 71,199,101,213,151,237,141, 68,129,193,104, 72,219,151,110, 53, 51,127,213, 44, 67, 13,123,135,195,147,207,246, 7,135,229, +218,139, 29, 9, 0,105,235,194, 45,100,188,168,203, 60, 90,150,161, 87,144,251, 7,229,209,207, 31, 13, 5,215, 92,232,120,237, +205,111, 33, 18, 4, 52,154, 8, 65, 18, 68, 98, 74,164,144, 2,201,217,212,140, 5,133, 34,132,194, 8, 64, 0,133, 1,128,145, + 9,250, 37,109, 87,106, 63,109,108,108,222,120,227,141, 34, 60, 58, 58, 58,185,119,119,221,117,215, 91,222,122,191,153, 9, 73, +145,148,146,111,220,239,252,206,239,252,143,255,254, 7,241,162, 31,248,129, 31, 52, 24, 65, 17,161, 48, 73,202,254,232,186,156, +243,143,125,232,131, 0,100, 85, 55,174, 31,250,213,114,181,234, 87,165, 20, 83,235,251,213,106,181,252,240,135, 63, 2,128,111, +126,219,119, 60,250,249, 99,146,243, 89,190,227,230,205,107, 46,204,175,218,222, 88, 44,230, 36, 1,228,156,231,139, 69, 90,230, +155, 0,168,154, 16,203, 85,217, 59, 44,179, 76, 18,106, 5, 48,168,169, 89,218,186,230, 54,154, 2, 72,201, 4, 90,212, 14,143, +134,156,177,232, 8,139, 63,105,235,210,173, 52, 0, 72, 68,162,153,225,169,157,254,137, 47, 46, 47,158,239,230, 51,186, 72,211, +214,165,155, 1, 51, 0,180,156,184,123, 56,152,161,168,125,254,137,213,231,159, 90, 94,127,105,214,117,228,181, 55,189,149, 34, +160, 16, 48, 80, 72, 8,193, 68, 36, 74, 74,146, 32, 57, 43, 84,204,104, 48, 0, 66, 83, 18,164, 8, 80,226,109,166,248, 74, 61, + 56,253,229,135,126,248,221, 91,155, 91,190, 73,254,135, 66,161, 72, 18,146, 73,210,199, 62,246,179, 79, 62,249,228,217, 23,122, +239,143,188,175,104,129, 1,106,126, 89,162,222,162, 16,160, 36,138, 8, 41, 41, 37, 33, 83, 74, 34, 41,231,252,129, 15,188,111, +237, 66,255,234, 95,255, 27,192,239, 30, 0, 56,121,128, 32, 41, 34, 34,146, 36,165,148,124,121,238, 50, 68, 36,229,252,107,191, +246,171,143, 60,252, 48,128,220,175, 86, 0,212,108,185,178,189,195, 65,141, 91, 27,233,194,118, 30, 10,134,130, 46, 75,151, 83, +215, 37,100,144,204,146, 76,213, 12,165, 20, 10,101, 24,190,253,219,191, 35,165,244, 19, 63,254, 99,252,234,215,126, 75, 81, 43, +197,111,138, 0, 32, 92,116,114,254, 92, 78, 73,206,109,164,139, 87,117,219, 91,179,141, 69, 55,235,114,215,165, 36, 52, 3,233, +139,151,228, 75,235,114,218, 56,127,155,170,186,158,208, 20,132,169,145, 16, 90, 25,236,120, 85,118, 15,135,189,253,254,232,120, +232,251,162,165, 20, 45,106,170,170, 48, 51,109,174,206,210,246,213,183, 2, 10,133, 65, 73,194,212,128,148, 84,104,106,166, 69, +139, 90, 41,122,112, 92,174,236,245,203, 85,217,152,145, 48,162, 93,196,212,212,204,120,253,173,111,131, 9, 4, 6,250, 23, 51, +235,114,154,207, 8, 64,200,227,222,134, 66,128, 20, 18, 36,185,177,200,175,124,217,226, 85, 55,108,204,187,148,179,248,118,240, +218, 91,238, 7, 72,208,252, 27, 5, 48,128, 27,243, 52, 12, 54,168,185,223, 17,208, 32, 20,129,133,112, 92,160,164,108,111,230, + 75, 23,230, 89,181,248, 62, 3, 0,196,180,248,234, 14,143, 53,180,138,164,153,145, 32, 80, 12, 34, 0, 76,139, 43,155, 26,246, +143,134,131, 99,205,102,234,154, 12, 10, 66,216, 20,154,251,106, 24, 77, 40, 6,136, 59, 70,129, 21, 64, 8, 49, 40,140,164,153, +194,196,240,255,221,131,103, 62,123,241,226,197, 11, 23, 46, 2, 88, 46,143,119,118,118, 14, 15, 15,191,140, 11,221,122,219,109, +239,122,215,183,185, 3,101,253,230,166, 47, 34, 41,165,157,157, 43,255,254,103,126,234,133, 46,244,129, 31,253,160, 22, 53, 51, +183, 93, 2, 20,169, 54, 32,213,104, 69, 82, 74,146,114,151,223,255,190, 31, 57,227, 66,239,126,207,123,171,231, 13,149, 33, 41, + 97,252, 32, 19,133, 41,133, 27, 73,226, 75, 76,143,125,238,177, 95,252,133,255, 48,189,144, 12,195,208, 15,253, 48, 12, 67, 25, +134, 50,104, 25,180, 12,165,148, 50,184, 93, 13, 90, 74, 25,138,150, 82,134, 97, 40,131,127,189,241,198, 27,127,234,167,127,230, +228,133, 74,252,245, 55,251, 99, 24,191,123, 42,226,182, 85,180,104, 41,195, 48,244,125,191, 90,253,228, 71, 71,145,137,150,162, +237,225, 6,168,102,234, 43,136,171,169, 42,253,230, 9, 40,212,124,149,195, 48, 12, 31,253,232, 79, 71, 76,190,243,206,187, 12, +182, 92,150,103,118, 86, 87,246,203, 48, 20, 17,154,233,170,215,126, 80,115,203,138, 52, 70, 72,152, 33,182,165,254,240,154,215, +188,230, 19,127,244, 71,121,103,127,245,200, 99,199,207,236,244,230,219, 14,118,157, 92,115,190,187,106, 59,111, 45,210,246,150, + 45,212, 64, 10,147,168,186,233,121,158,163, 84, 0, 24,134,107,174,190,134, 96, 58,148,155,247, 14, 7, 53, 79, 47,212,204, 84, + 49,159, 97,217,235,225, 81,233, 7, 75,130, 36,148,106,215,161, 40,102,102,163,125,221,255,192, 3,105,227,226,215, 64,253, 41, + 95, 19,132, 86, 10, 68,160,102,171, 65,151,189, 37, 50, 73,168,174,154,170,105,104,140,191,137, 52,179,116,238,234,191, 7,142, + 23,114,103,150, 19, 69, 92,175, 76, 13,253, 96, 66, 72,114,135, 21,110, 97,124,135, 25,192,172, 86,226,190,141, 16, 83, 99, 6, + 13, 40, 69,204, 10, 76, 0, 28,152,145, 16, 65,151,145, 40,144,100, 70, 49, 51, 90,232, 49,134, 76,255, 96, 16, 52, 24,104, 48, +113,191,174, 80, 0,102, 4, 11,175,236,245,170,182, 49, 39, 23, 57, 39, 72, 18, 83, 73, 98,234, 59, 0,164,173,171,111, 53, 51, + 16,109, 81, 66,186,116, 61,197,236, 7, 61, 56, 42,123,135,195,206,222,112,112, 84, 54,230,146,147,199, 96,120, 42,136,200, 55, + 47,222,194, 42, 72,130,177, 56, 34, 37, 2, 86, 20,203,190,148, 33,196,114,116,172, 95,188,210,175,122,237,178,228, 92,223, 71, + 95,209,165, 91, 12,132, 85,175,237, 27, 39, 32, 13,138,163, 85, 81, 37, 0,250,178,193,161,232,149,221,242,228,206,176,179, 55, +172, 6, 91,204, 36, 39,130,228,117, 55, 63, 0, 26, 32, 32,219,194,114,146,156, 88, 10, 6,141, 24, 2, 8, 1, 80, 40, 2,128, + 16,247, 19, 41,165,237,205,124,233,252, 44, 27, 20, 0,161, 48, 81,143, 39,134,126,176,190,104,220, 37,197,220,201,131,180, 48, + 26,131,210, 4,128,170,238,238,151,253,195,227, 12,243, 12, 30,100,196, 31,191, 21,154,191, 23, 30, 35,204, 0, 65, 40,159, 17, + 52, 19, 19, 55, 23, 49, 5,196,160,190,237, 85,231,141, 6,170,193, 84, 9, 51,143,206, 10,152,153,194, 76, 97,160, 2,160,194, +180,198,107,131,152,185,250,170,193, 96,170, 10,131,186,174,211,212, 63,160, 46,163, 46, 94,107,129, 66,144, 32,214,236,238,165, +199,151, 21,103,219,227,230,155,111,185,227,142, 59,110,186,229,150, 75, 23, 47,142,207, 70,230, 7,122,242, 28,223,100,103,103, +231,225,135, 31,250,243, 63,255, 95,159,254,244,167,191, 50, 11,218,222,222,126,215,187,190,237,134, 27, 94,174,170, 54, 38,204, +214,114,212,154,197, 3, 99, 92, 31, 31, 50,254, 36, 66, 1,145,187,238,191,252,198,111,252,241, 31,127,242, 75, 87, 14,190,227, + 29,239,184,227,142,203,170, 99,136,137, 42,104,125,201,244,220,177, 45,165,254,176,190, 36, 47, 56,198,101,213,133,138,136, 12, +101,248,143,191,248, 11,159,251,220,231, 94,100, 65, 63,244,195,239, 65,141,117, 39,150,210, 60,211,228,207,218,106,176, 86,102, +212,181, 96, 92,202, 9,225,137, 36,146, 41,167,127,251, 19, 63,126,124,124,124,118, 1,125,239,189,247, 70,106, 96, 58,166,223, +147,224,103,167,255, 76,130, 53,108, 44,133,154, 9,215, 40,229,183,232,111,168,105, 61, 76, 85,223,244,166, 55, 63,240,192,219, + 62,243,153,207, 60,251,236,179, 39, 23,116,247, 61,247,152,122,220, 60,177,150,168, 49,208, 46,136,246,172,191, 88, 79,188,126, + 42, 56,131, 49, 10, 71, 83, 3, 98, 57,227,171,213,244,117,119,222,249,192, 3,111,123,244,145, 71,174, 92,185,210, 22,148,203, + 48, 76,172, 39,182,108, 24, 60, 92, 69, 0, 0,145,133,146,188, 90,247,251, 31,119,204, 49,155, 4, 81, 2,132, 64,162,136,133, +227, 47, 6, 90, 1,104,132,182, 93, 86, 85,138,136,169,126,215,119,127,207,172,155,189,255,253,145,143,166,215,126,221,157,170, +214, 15,186, 26,116,181,210,131,165, 30, 29,149,231,118,251,189,195, 97,119,127,216, 59, 44,203,149, 30, 29,171, 22, 27, 6, 91, +245,186, 26,116,213,219, 48,104, 95,148,128,106,168, 94,172,159,145, 81,143, 70,224, 59, 25,126, 25, 85, 95,167,251,104, 69,203, + 91,223,114,255,227,143, 63,254,244,211, 79,243,157,223,250, 47, 12,246,244,206,176,187, 63, 28,247,186,127, 88, 92,234,190, 3, + 38,160, 17,176,148, 36, 37, 92, 58,223,109,205, 83, 78,220, 92, 8,133,155,139, 36,228,124,150, 68, 56,235,146,136,228,156,146, + 80, 82,170, 90, 93,237, 98,221,110, 99,217,174,236,226,133,108, 34,249,123,191,247,113,222,112,251, 63, 13, 32,169, 69,105,131, +213,223,253,171,153,167, 0,220,152,203,246, 70, 54, 56, 58,196,237, 69, 34,121,225, 92, 78, 89, 54,231, 57, 37,233,114,172, 41, +101, 17, 74,196,244,137, 93, 78,188, 89, 43, 67,125, 73,226, 95,115,152, 9, 43,248, 96, 58,145,181, 53,117, 17, 82, 4, 69,181, + 31, 6, 24, 40, 66,226,202,160, 20, 30,173,138, 16,231,183,187, 89,151, 54,230,105, 54,147,156,210,172, 19,146,174,127, 81,203, +120,190, 65,105, 18,178,234, 20,172, 22,166, 52,203, 8, 69,101, 20,196, 6, 19,181,106,186,162,102,108, 70,109, 52,233,135, 66, + 10,173, 0, 72, 34, 30,244, 1,246,195,138,228,214, 34, 45, 22,121,158,185,185,153, 19,185,177, 72, 36,187, 46,196, 0, 64, 21, + 20, 24,163, 98,138, 84,155,160,131,114,102,185,102, 29, 0, 97,230,168, 1, 1,165,167, 34, 36,224, 94,156, 80,154,168,170,208, + 10,197,179,148, 34,160,138,187, 43, 33,184, 91,116,239,112,200,137, 87, 45,243,124, 38, 91,155, 11,161,152, 26,200, 18, 91,101, + 52,120,193, 47, 16,149, 2, 23, 17, 64,163,208,178,122,122,236, 58,102, 0, 20,254, 46,194,160, 4,105,244,100,136, 98,166, 98, + 84, 53,136,194,168, 28,104,108,119,168,171, 1, 7,135,234, 73,220, 23,190,200, 46,203, 19, 79,175,186,196, 87,189, 98, 35, 39, +110, 45,114, 18,183, 18, 33, 11, 40, 64, 9,171, 17,178, 24, 73, 19,102,247, 19, 48,255, 70,170,175, 22,145, 52, 91,100, 83,142, +112,169,105,162,136, 65, 1, 49, 19,129, 25,246, 15, 11,140, 69, 35,205, 37,221,202,101,213,151, 39,159, 81,144,207,238,245, 66, +190,236,234,121,215,241,154, 11,179,141, 69, 74, 34, 93, 54,165, 16, 5, 32, 75,213,112,149,108, 40,142,115,208,106, 14,107, 10, + 95,156,129, 84,144, 48,170,154, 99, 27,165, 20, 26, 33, 44,134,163,101, 1, 88,138, 25,104,117,179, 61,123, 36,139, 65, 84,141, +196,193,145, 2, 60, 94, 41, 5,143,127,113,149, 51, 55, 23,249,220,102, 90,204,210,213, 23,186, 36,156,207, 18, 43,160,147, 61, +127,245, 93,138,123,244,228, 83, 66,145, 35,243, 84,128,166,106, 40,208, 40,246, 56,148,186,225, 82, 43, 31, 10,204,179,105, 49, + 83, 2,102,162, 69, 77,168, 43, 16,232,251,158,228,222,254,240,116,150,156,248,216, 83, 41,145, 27,243, 36, 34,219, 27, 73,146, + 56,206,109, 4,169, 36, 21, 74,139, 44,158, 4, 77,205,133, 20, 73, 54,116,105, 94, 52,194,140,158,149,123, 54, 12, 51, 19,143, + 14, 48,136,169, 74, 20, 55,234,185, 59,160, 6, 20, 21,154,150, 34, 88, 41, 64, 28, 20, 1,186, 46,145, 92,204, 83, 18,201,128, +214, 8, 72, 51,186, 45,121, 25,100,172, 5,137,121,142,168,170, 44,138,138, 21,122,188,160,235, 83, 72,211,104, 98, 2,163,193, +132, 94, 75, 80,196, 91, 9,164, 4,126, 8,139,218, 75,161,130,213,170, 80,100,213, 27,192, 92,245,217,241, 50,215, 28,173, 57, + 42,232, 26,239,138, 26, 93, 12, 40,107,145,232, 91,237,118, 97, 38,181,106,209,184, 73, 35, 68,163,234, 16, 2,170, 74, 97, 69, +216, 4, 6,191,186, 87, 69, 4, 76,144,225,176,156,208,160, 6,161, 42, 71, 39,111, 26, 32, 98, 56,211, 8,242,158,234,132,222, + 3,161,238,225,142, 56, 6,250,240, 58,238,225,162, 56, 53, 70, 94, 2, 53,146, 16,152, 25,148, 16, 19, 47,211, 92, 47,155, 82, + 48,242, 30, 47,166,217, 50, 52, 53, 53, 56,102, 99,158,137,121,144, 51,131,169, 17, 48,245,152,110,245, 31,105, 80, 83, 16, 80, + 76,162,107, 5, 44,234, 30, 71,214,195,150, 83,189,244,120,233,241,183, 90,185,142,185,119,151, 55, 55, 54,103,179,217, 98,177, +209,117, 29, 34,245,238,143,143,151,203,229,241,193,193, 65,241,174,199,223,234,130,186,174,123,221,235,238,124,245,237,183,191, +234,149,175, 74,185,118, 28,141,144,176, 51, 47, 1, 61,221, 51,179,191,254,235,191,254,171,191,252,139, 63,249,147, 63, 89,173, + 86, 95,225, 5,125,211, 63,121,199,229,203,151,187,220, 53, 24,144,147,166,207,137,202,177, 85,248, 0,188, 21,181, 90,173, 62, +245,167,127,250,219,191,253, 95,255, 70, 11,202, 57, 95,190,124,249,237,111,255, 38,107,185,107, 67, 38, 39, 37,253,180,194, 95, + 47, 78,215, 75,123, 82, 68,118,119,119, 63,246,115, 63,123,112,112,240,229, 45,232,210,165, 75,111,127,251,219, 95,254,242,175, +114,204,104,146, 77, 79, 94, 52, 77,250, 39, 95,159,119, 77,158,157, 2, 41,167,167,158,124,242,215,126,245, 87, 79, 23,169,103, + 47,232,251,191,255,251, 55, 54,182, 70,188,119,189,194, 31, 43, 6,182, 13,155, 74, 41, 74, 29,207,249,167, 85,189,112,186,153, + 76, 41, 61,252,208,195,191,242, 43,191,244,226,205,241,127,240, 15,223,164, 69, 13, 86,172,180,170,185,198,132, 86,223,123,110, +235,145, 36,126,137, 16, 91,235, 62,182,236,105, 44,243,189,252,141,128,112,245,213, 87,191,237, 27,191,241, 15,255,231, 31,246, + 47,168,242,233,190,251,222, 96,222,198, 60, 3,107,136,176, 86, 69, 54, 65, 26, 70, 52, 97,130,151,159,126,212, 58, 42, 46,163, +250,230, 55,253,163,220,117,143, 62,250,200,243, 46,232,245,247,221,183,254,193,147,191,102,167,236,208, 78,255, 24, 88,105, 5, +243, 57,130, 92,152, 24, 69, 21,173,225,166,175,190,233,213,183,223,254,201, 79,124,226,204, 5,137,169, 70, 12, 87, 13,132,162, +253,197,243,128, 52, 58, 62,169, 35, 24, 82,119, 25,173, 45, 91, 1,143,250, 17,170,170, 90,138,150, 87,188,252, 21, 31,249,200, + 79,158,189,160,232, 9, 77,123, 67,235, 15,255,248,120,213,248,228,248,175,241,161, 21,209,169,242,165, 55, 57, 92, 19,218,213, + 74,124, 45, 32,254,221,135, 63,114,150,132,218, 37, 95,224,161, 1,233,180,223, 99, 73, 54, 89, 84,160,146,166, 14, 79, 51,202, +167,218,237,208,138, 66,169,150,226,226, 19,145, 15,252,232, 7, 79,111,217,243,172,103, 2,151,181,175,254,123,169,210, 80,191, +242,120, 5,173, 29,152, 9,200, 1,194, 17,204, 41,144, 86,111,228,220,246,185,127,249, 93,223,189,166,212,119,221,117,247,218, +235, 96,125,111,195, 96, 67,209, 97,176,226,155,160,234,233,103,232, 69,212,132,102, 54,105,147, 87, 44, 67,214, 24, 14,158,222, + 6, 36, 83,193,139,168, 82,188,152,185,116,241,210,238,238,238,227,143, 63, 30, 1, 99,226,147,173, 31,204,128,131, 67, 29,130, + 56,192,156, 48,159,167, 44,220,222,132, 25,134, 2,192,123, 41,154, 50,133, 34,166,217,196,196, 32, 6,122, 50,172, 41,156, 17, + 35,137,175, 25,110, 88, 95, 75,219, 75, 17, 17, 21,188,243, 91,190,229, 47,255,242, 47,188,235,156,190,238,117,119,170,217,114, +208,161,183,163,149,246,254,117,101,253, 96,195,128, 98,102,198, 82,204,140,253, 96, 69,173,245,141, 61,110, 84,118, 0,166, 96, + 79,236,148, 4,172, 54,129,188, 79,248, 12,247,249, 80,179,215,191,254,190, 63,248,253,223, 7,144,247,143,134, 97,176,207, 62, +177, 84,197,206,110, 63,232, 36,122,213,184, 33, 68, 78,210,101,190,236,234,153, 16, 27,139,156,147,205,103,185,203,150, 18,186, + 12, 17, 2, 16, 35,147, 17, 38, 48, 21, 21,101, 32,125,228,186, 15,173, 24,164,168, 66, 76, 53,137,204,231,243,123,239,125,253, + 39, 63,249, 9,233,123,237, 7, 45,197, 74, 41,165,185, 20, 53,115, 3,181,106, 22,102, 69,181,168, 14,197, 84,181,168, 21,119, + 41, 5,163, 95,138,151,187,209, 5, 47,110,106,243,167,252, 72,152,107, 81, 53,181,111,126,231, 59, 73,166,227,124,203,147,207, +174, 14,142,202,209, 82, 85,199,232, 25,213,147,177,221,218,162, 75, 6,172, 6, 59, 90,150,195, 35, 93,246,122,188,210, 97,240, + 34, 31, 66, 20, 5, 73, 53,215,218,232,172,142, 94, 99, 68,111, 79,236, 88,221, 89,181,171,206, 95,149, 54, 46,125, 77,209,105, +178, 17, 5, 82, 0,123,244, 21, 17, 98,195, 96,139, 78, 90, 13, 41,194, 68,138,112,214,145, 64, 78, 2, 48, 9, 39,248,221, 90, +188,107, 79,156,204, 11, 39, 61,130, 27,111,124,101, 58,119,205,171, 81,149,180,226,186, 70, 72, 13, 71,230,215,207, 66, 33, 82, + 10,109, 80, 99, 81,237, 7,237,123, 59, 94,233,241, 74, 73,172, 6, 75,130,161,152,227,208,240,230,160, 69,143,207,106, 67,135, +173,201,203,218,203,142, 90,153, 32,178, 99, 6, 54,130,122,254,175,158, 79,104,244, 91,225, 75,100,120, 71,133,147,102, 10, 65, + 88, 79, 5, 48, 12, 42,130,161,168, 8, 75, 81,113, 36, 5, 53,145,106, 88,186, 83,142,124,115, 85,125, 23,160, 80, 17, 66,169, +204,117,103,213,161,140,128, 17, 76, 39,105,180, 47, 43, 90,144, 37,250,231,116, 26,211, 0,218, 32,170,101,103,207, 59,252, 38, + 34,102,160,112,209,137, 8,147,144, 14,189,122,187,181,161, 38, 19, 15, 64, 49, 83,245, 6,109,118, 50, 26,171,136, 28,201,208, +144,161, 81,131, 99, 64, 9,105,105,189, 1,133, 84,244,216,243,205, 65, 68,230, 75,138,216, 44, 51,101, 22,129,153,144, 72,222, + 0,166,176,234,182, 68, 47,184,149,251, 22, 42, 98,150,182,175,190, 45, 80,133,216, 42,135, 94, 67, 80, 70, 58,170,147, 4, 32, + 82,244,236, 91,163,189, 53, 92,198, 39, 85,145, 19,213,208,101, 38, 25, 27,240,147,132, 13,103,122, 73,127,105,118,233,195, 96, +212, 80, 51,142,249,170,139,206, 27,209, 14,141, 58,160,236, 86,234,168,160,131,201, 25, 84,227,254, 97,168, 96,151,211,214, 34, +128,243,113, 41, 22, 52, 3,227,201, 44, 51, 58, 89,102,217, 91,237,177,188, 64,151, 28, 14, 2, 2, 24, 14, 24,202, 33, 40, 11, +193,177, 90, 65,160,105, 6, 74,237,197, 44,251, 82,212, 14,142,196, 12, 93,150,156,132,130,148, 4,193,194, 88, 91, 71,213,171, +120,115,118,109,114, 79,230,242, 8,136, 26,234, 33,187,146, 94,252,157,166,161,146, 1,205,165, 68, 85,205, 73, 74, 41, 7, 43, + 28, 30,171, 8,113,133, 0,118,246,134, 89, 39,215, 94,154, 93,125, 85,151,179,108, 44, 60,136, 48, 66,171, 19, 33, 96,161,204, + 30,125, 84,115, 80,104,204,129, 55, 54, 40,143, 81, 90,232, 88,246,180,234, 34,136,130,230, 23, 45, 5,203,126,136, 22, 27, 90, +102,129, 65, 45, 21,237,123, 93, 13,106,134,156, 16,221, 15, 4, 39,195, 73, 42,209,232,169, 4,173,180,125,233, 54, 4,180, 31, + 20, 20,178,230,236,140,133, 1,230, 40,113, 74, 16, 9, 71, 65,154, 8,251, 65,151,189,149, 98,131, 66, 53, 20,196,227,253,114, +101,135, 75,221, 61, 40, 79,239,244, 59,251,195, 48,216,225,177, 46,230, 73,213,146, 96,236, 16,182, 18, 29, 32,144, 39,138,239, +200,155,192, 17,186,168,157,171, 67, 82, 66,204, 20, 90,235, 11, 18,125,241,212,209,115, 84, 58,218, 74, 42, 76,212, 20, 34, 84, +150,162, 61,217, 13, 58, 12, 70,154,170, 25, 89,212,132, 69, 36,153, 55, 86, 28,228,134,128,204,149,137,232,253, 21, 97,164,195, + 48, 37, 39,118,167, 86,168,110,114, 69, 32, 32, 86, 43,167,128, 82,205, 70, 32, 90, 2,105, 39, 67,241,134,130,162,195,170,151, +131,227,146, 40, 79, 62,179, 18,225,165,243, 93, 22,185,246,226,108, 54,147, 46, 51,103,168,139,222, 44,135, 10,153, 43,112,227, +118, 25,221, 67,107,224,194, 38, 81,155, 6,101,217, 51,148, 2,163,154, 17, 84,223,222, 80, 57,103,158, 72, 88,161,129, 84, 93, +169, 48, 21,208,146,200,214, 70, 26,146, 21, 85, 45,176,148, 44, 90, 41,162,102, 25,222, 72, 96,253, 6, 32, 66, 76, 56, 34, 5, +105, 6,133, 2,170, 20,232, 96,132, 97, 40,102, 48, 43, 98, 52, 49,130,198,160,228, 68, 91, 84, 43, 84,236, 54, 32,166, 86,228, +120,165, 2,123,242,153, 21,137,231,118,123, 73,178,152,165,156, 56,239,210, 98,158, 40,146,107, 55, 83,233, 46,135, 17, 93, 61, +162,132,117,209,252,234, 6, 43,198, 82, 52,186, 68, 90,101,211, 8, 25, 10,136,186, 61,187,215,142,116, 95, 77,133, 2,213,129, + 42,214, 31,129,196,225,145, 26,177,152,167, 44,220, 88,228,173, 13, 35,153, 91, 27, 51,114, 1,139,182, 98, 36, 53,170,173,211, +108,102, 67, 81,127, 14,140,254, 80,203,184, 42, 42, 79, 95, 83,116,186, 68,106, 9, 77,170, 41,163,163,239, 32,188,247, 80,134, +193, 76,160,203, 82, 20,160,228, 17, 26,111,221,104,173, 96, 61,107,243,171,126,110, 95,154,159,143, 22,150,184, 51, 65,165, 14, + 88,229,167,209, 59, 67,198, 86,217, 67,162,177, 58,246,152, 13,100, 63,232, 64,193,160, 71, 71,230,132, 46, 68, 67,211, 57, 81, + 21,190, 15,127, 29, 54, 51,102,147, 52,243,108,192, 27,110,206,230,106, 81,170,118, 59,170, 57, 55,196,223,165, 66,255, 55,183, +116, 27,229, 80,163, 58,188, 64,168,159,166,222,239, 8,118, 60, 21,163, 71, 80,133, 42, 42, 83,144,244,202, 26,209, 55,176,214, + 45, 0, 44, 58, 47, 33,194,241, 29,209, 78, 54,163,213, 46, 91,253,103,167,151,209, 96, 6,113, 69,128, 53, 89, 27,148,141, 73, +226,140, 83,140, 49, 5, 48,213,192, 96,205,181, 9, 99,147,212,170,143, 15,223,197, 42,142,136, 18,214, 42,199,104,164, 90,237, +248,214,254, 18,133, 33, 0,215, 85,196,213,181, 78,170, 68,169,174,222,113,173,139,171,140, 9, 34,184,162,222,140,140, 98,193, +223,108,225,239, 45, 74,233,232,203,120, 60, 26,203, 16, 79, 31,226, 26, 74,173,145, 9,166, 53,192, 89, 37,253, 5, 45,175,133, +153,218, 28,142,178,216, 24, 12,189, 80, 47, 13, 33, 52, 25,185,128,221,141, 57, 12,224, 77,210, 9,144,193, 88,154, 90,109,199, + 5, 93, 53,196,235,201,128,182, 69, 88,124,170,153, 65,209,106, 43,212, 36,169,185,226, 74,140, 85,160,142, 1, 85,227,244, 6, + 84,160,122,209, 94, 67,237,239,161,181,178,235, 88,136,184,208,195, 38, 12,132,106,248,126,191, 96,101, 20, 40, 53, 90,173,177, +115, 33,170,192, 53,227, 94,194, 75,120, 94, 21, 27, 55,210,154,162,242,177,120,209,180,114,172,206,236,165,134,217, 75,143,151, + 30, 47, 61,254, 78,244, 91, 95,232, 18,228,246,185,115, 87,157, 59,183,181,181,125,254,194,249, 75, 23, 47,157,191,112,225,252, + 85, 87,109,110,109,111,109,109,204,102,115,199, 65,177, 6,152,213, 18,200, 48, 12,195,209,209,225,238,222,238,222,222,254, 83, + 79, 61,185,191,183,127,101,247,202,222,238,238,206,206,206,222,222,222,223, 61, 1,109,110,110,222,122,219,215,188,226, 21,175, +184,254,186,235,206,159,191,176,185,181,153,115, 62, 19,244,157,246,103,113, 10,189, 91,251,161,209, 29, 79,241,161,135, 97, 56, + 60, 56,188,178,123,229,241,199,191,240,240, 67, 15, 61,242,240,195,195, 87,168,243,253, 21, 19,208,117,215, 93,119,231, 93,119, +125,237,215,190,118, 62,159,153,141, 89,197,139, 95, 55, 82, 58, 76,112,169,248,149,173,210,142, 66,157,152, 52, 75,167, 13,221, +152,229,172,164, 80,131,249, 84,215, 99,143,125,246,119, 63,254,241, 7, 31,252, 43, 85,253,127, 42,160,237,237,237,235,175,191, +254, 53,175,121,237,173,183,222,230,136,142, 77, 7,129,198, 81, 30,123,158,171, 76,148,102,100,177,142,200,216,180,247,255, 2, + 93,110, 76, 4, 53,105,125, 75,147,212,200, 21, 16,121,238,185,231,254,224,247,127,239,193, 7, 31,124,230,153,103,254, 86, 4, +116,221,117,215, 93,190,124,249,166,155,110,186,238,250,235, 75, 81, 39,164,174, 11,197, 94,168,195, 59, 21,208,136,149,243,196, +243,107,206, 7,103,208,250,207, 36, 3,188,216,147, 81,114,250, 68, 31,192,199, 62,251,153, 63,254,228, 39, 63,245,103,159,234, +251,254, 43, 35,160, 15,125,232, 67,203, 85,223,122,223, 35,238, 56,237,217,124, 73,114,230, 73,122,242,244,201, 51, 94,118,130, +182,241, 2,170,116,130,186, 48, 53,195,102,125,211,201, 74,146, 92, 30, 47,127,247,119, 63,254,241,143,255,183,191,169,128,222, +253,158,247, 54,194,137, 53,130,219, 25, 82, 57,229,121,166, 52,153,117,185, 76,158, 60,173, 74,235, 70,120,138,215, 50,142,104, +156, 96,114,188,184,138, 17,147,238, 97,112,116, 36,245,125,255,235,191,254,159, 30,124,240,193,255,187,249,167,160, 51,172,205, + 66,140,165,202,244,239, 89,173,201,181, 39,167, 74,119, 2,177,183,169, 11,179,181,137,196,117,175, 54,189,132,157,246,118, 19, +186, 78,219,197,250,235,153, 95,189, 3,255,186,215,221,121,255,253, 15,220,112,195,203,191,240,133,207,159, 62,235,225, 69,248, +100,166,106, 47,210,126,120,126, 27, 91,239, 10,112,100,193, 76,222,121,198,179,173, 65,101,129, 62,113,242, 43, 78,127, 95,255, +132,214,204, 27,169,213, 54,101,242, 27,201, 82, 74,227, 14, 1, 32, 11,202,237,119,220,126,249,107,239,216,221,221,255,205,223, +248,207,143, 60,242,240,151,170, 65,247,220,251,250,145, 45, 82,105, 11,186,206,209, 57, 77,119, 24, 27,222,245,135, 19,147, 66, +107,220, 5, 76,222, 50, 14,101,213,182,196, 26,121,106,156,224,152,108,141, 77,252,213,152,101, 4,100,223, 24, 67, 78,101,168, +134, 52, 82, 48,166,151, 83,155,117,221, 93,119,221,253,143,223,242,214,199, 30,251,236,151,194,243, 74,247,222,115,239,212, 56, +170,221, 76, 72, 67, 19,250,237, 73,159,180,238,187,214,122, 75,103,104,224,132, 53,209, 38,177, 78,188,236,140,118,240,154,103, +138,142,156, 19,180, 29, 24,171,157,189, 41,129, 16, 19, 14,148, 77, 62,191, 81,175, 72,220,125,247,221,111,124,227,215, 63,245, +212, 83, 79, 63,253,244, 11,106,208, 61,247,158,229,132,237,236,156,120,253,149,163,187,157,128,156,211,128,222,254, 93, 43,177, + 25, 48, 91,159, 30,199,250,216, 26, 43, 20, 58, 97,212, 8,185,158,118,215,182, 37,199,110,108,149, 84, 27,189, 94,247,131,118, +138,107,168, 69,187,174,187,243,206,187,238,184,124,249,211,143, 62,250,124,190, 41,221,125,207, 61, 54,110, 64,251,123,234,183, +209,202, 38, 54,181, 54, 46,100,207,151,153,215,118,229,186,224,237,140, 76,106,146,221, 76, 74, 16,177,150, 30, 78,226,126, 72, +204, 90,172, 31, 93,190,157,176, 80,156,242,223,163,205,169,158, 59,119,213,223,255,134,111,216,222, 58,247,208, 67, 15,158,225, +102,191,251,123,190,247,108,251, 9, 22, 60, 0, 20,197,106,208, 97, 8,182, 84, 60, 79, 16, 76,194,156, 99,242, 90,200,217,140, + 89, 70,129,169,214, 81, 50,131, 54, 24,151,136, 51, 28,136,122,188,211,152,222,136,180, 73,203,145, 7,213,216,153,141,225,234, +205,165,105,208,227,201, 64, 51, 58, 51,114,125,252,117,226,191,199, 79, 2, 73,254,252,207,255,220, 19, 79, 60,113,130,224,117, +215,153,155,174,102,170,129,101,170,218,114,229, 4, 30, 43,102, 69,109, 80, 43,206,122,171,138,161,106, 49,184, 88, 27,197, 62, + 35,224, 95, 85,161,211, 67, 16, 56, 6,164,177,197,111,152,142,169, 54,108,158,210, 48,232,198, 1,174, 29,188,152, 18,173, 8, + 46,240,124,101, 51,166,174,125, 61, 69,152,154,228, 27,238,123,227,198,230,166, 31,170, 19, 97,254,240, 40,138,227,162,230,148, + 33, 55,158, 97,176,227,165, 54,124,185, 20, 88,139,202, 83, 10, 51, 41, 82, 55, 71,216, 37, 58, 81,128,194,197, 92,102, 89,234, + 33, 59,156,117, 49, 81, 66,114,150, 99,208, 19,128, 8,115,170,202,162,204,162,149, 68,167, 38, 20,241,129, 32, 35, 32,168, 45, +135,218,169,183,218,241, 32, 27, 31,101, 93, 12,209,206,178,113, 7,106,164,108,105, 65,169,180, 52, 5, 76,236,235,223,248,245, +215, 94,115,237,111,253,214,111, 58,216,194,111,253,103,223,233,239, 28,138, 61,187,219,239, 29, 20, 85, 51,195,114,176,195,163, + 82,244, 84,189,197, 70,100, 33, 71,233, 71, 85,148, 36,212, 57,103,158,223,206,155,115,103,157, 91,206,178,152, 73, 18, 24, 32, +228,188,147,148, 26,225, 26, 93,150,170, 48,210,229,145,236, 44, 41,232,116, 18, 51,148, 39,193,146, 49, 62,132, 37,171,157, 21, + 19,125,204,118, 29, 60,136,201,200,105,249, 34, 45,255, 78,121,103,231,185, 95,254,229, 95,122,238,185,231,210,197,151,189,122, +255, 80,247, 15,135,253,195,178,119, 88,142,150,218, 23, 27,138,246,131, 13, 90,199,122, 24,243, 71,190,147,161,249,181,183, 4, + 78, 6, 60,205,146, 48, 9, 69,152, 19, 72, 56,169,208,205,179,239,109,213,219,106, 80, 55,210,126,192,208,199,208,188,186,147, +170, 62, 43, 40, 64,134, 54,209, 90,251,127,235,169,183, 53,134,223, 41,233,156, 17,138, 79,166,230, 39,216,235, 19,118,146,109, +108,108,220,247,134, 55,252,217,167, 62,197, 27, 94,253,205,167, 18,213, 83, 23, 93, 47,175, 88,137,208, 28, 15,250,168, 3, 88, +117, 87,102,153, 91, 27, 41, 9,155, 5,112, 82,155,206, 58,201,153,226,175,236,210,230,194, 93, 51, 68,100, 49, 19, 63, 77,134, +100,206,146, 38, 35,241,105, 66,174, 19,174,103,148, 83,189, 57, 89, 32,243, 12,164,174, 6,197,117, 92,128, 83,183, 45, 73,172, + 4,133, 1,235,120,214,120, 6,204, 73,125,173, 41, 76, 37,242,212, 86,166, 51,157,168,173, 89,182, 26, 88, 14,108,107, 67,186, + 44,173,149,235,239, 23, 97, 81,197,224,183,110,198, 34, 43,243, 56,149, 4, 66,164,100,109, 34, 23,217,131,158, 57,117,162,149, +161, 38,235,128,201,153,224,139,197,241, 84,107,174,186,250,176,105,117, 99, 21,192, 67,163,110,153,169, 65,146,100,197,212,129, +141,167, 6,212,182,103,147, 85, 60, 85,159,172,168,209,122,229, 47,132, 68, 27,222,146, 64, 21, 67,239,252, 57,164, 26,133,138, + 90, 41, 78, 44,112, 31,207,163,227,152, 68,206, 73, 86, 27,169,203,226, 81,120, 49,147,174, 19,178,144, 76, 34, 57,215,202,138, + 72, 77,133, 88,103,251, 78,227, 78,193,196, 40,161, 60, 45, 1,109,249,104,212,110,209, 64,118,156,115, 28,214,134,162, 32,199, + 97, 2, 60,153,242,219, 26, 25, 52,154,151,141,119, 48, 1, 57,116, 50,122,192, 56,126, 97,156,163,159, 48, 24,170,213, 79,134, +236, 25,233,180, 66,133, 52, 43,208,126, 8, 51, 20,101,159, 32,226,172,100,131,153,208, 76,216, 76,164, 85,184,228, 26, 6,197, +245,133,159,153, 90, 55,154,237,154,190,177, 13, 89,198, 69, 85,144, 39,195, 40,227,177, 34,161, 74,141, 66,239, 20, 2,176, 85, +151,180,137,188, 70,118,136,214, 29,168,108, 85, 85, 31,202,165,255,219,232, 9,172, 70, 12,163,162,200,136,230,172,122,245,115, +140,146, 96, 49, 75,243,153,120, 66, 55,203, 92,204, 83,184, 42,114, 54,147,122, 64, 20, 83,114,133, 66,237,243,215,101, 53,159, +255, 60,206,234,244, 19,214, 64,115,128,102, 2,102,173,117, 20,199,233,152,145, 99,211,146,136,186, 89,109,126,102, 66, 67,105, +248,209,212,218,216, 92, 88, 36,135,193,144,165, 66,163, 9,100,237,202, 22,132, 29, 37,144, 32, 37,134,240,139,106,113, 78, 0, +100, 16,209, 70, 30, 17,170,214,164,146, 52,231,114,197,110,138,176, 97, 5,136, 19,142, 70, 22,240, 89,127,226, 84, 39,182, 86, + 66, 60, 69,154,150,204,154,233, 88,176, 76, 39,202, 98,104,231,252, 25,156,246,198,105, 9,234, 68, 5, 35,215, 74, 55,142, 89, +170,105,101,140, 88,205,226,162, 94,109,124,105, 40,125,196, 56,226, 79, 28, 20,229, 71,152, 21, 59, 58, 14, 73,116,153,199, 43, +233,146,128,236, 50, 47,108,231, 46,167, 9,139, 18,235, 83, 24,103,102,210,118, 38,126,213, 42, 21, 15, 61,163,137,121, 38, 13, +234, 73,220, 93,235,104,118,101,212,113, 18,212, 44,132, 20,130, 28,117,152,118, 98, 76,203,214,143, 4,178,202,168,171,213,110, +221, 63, 39,164, 77,226, 67,240, 56, 4, 5,147,225,116,176,235,233,132, 69,241, 0,129,202,139,173,182,193,177, 96,111,247,235, +132, 60, 26, 91, 97, 99,156,240,134, 78, 35,113,227,146,205,144, 82,174,186,216,156,211, 36,122, 85,106, 87,104,139,105,176, 69, + 44,210, 8, 39, 38, 5,164,101,113,106, 1, 84,166,152,108,204,192,215,186, 64,125, 2,198,143, 20, 48, 39,241,141, 4, 26, 63, +119,161, 81,154, 87,189,174,134, 17, 66,219,221, 31, 42,251, 89,158,219, 27,230, 89, 72,166,132,237,205,180,189,145, 82,138, 10, +116,150, 41, 18,149,190, 31,146, 82, 63,222,121,207, 62,157, 30,107,107,185,137,131,179,163,103,242,141, 41, 37,163,142, 87, 76, +103, 33,107,192,111,142,175, 57,139,240, 61,214, 70, 25,218,177, 0, 85,177,108,162,146, 22, 52, 81,192, 32, 99,158,229, 84,208, +112, 83,148, 48,102, 53,211, 1,199,203,210,151, 32,164, 5,175, 13, 39, 18, 30,118, 73, 85,109, 62, 19, 0, 57, 75, 74,152,119, +126, 34, 5, 83, 22, 63, 33, 32,140,142,230, 44, 70, 78,168,139, 62,128,100, 30, 77,198,131,118,160,230,251,181, 6,107,102, 39, +239,209,166,136, 24,180, 82,199, 49,230, 84, 60,145, 29, 49,232,132,193,203,106,116, 78,139,232, 59,222, 89,213,198, 17,154,153, +164,178,166,134,161,183, 74, 85,131,123,101,215, 78,173,148, 43,178,178,113,225, 3,108, 56, 92,150,229,160, 4, 69, 74, 63,232, +254, 97,241, 96, 55,239,100,107, 67,186, 68, 35,178,200, 98, 46, 93,110, 39,245, 88,205,163, 44,144,236,117, 12,119,204,150,109, + 20,113,134, 78,231, 42,235, 13, 84,154,165, 53, 95,194,170,145, 99, 28, 4,198,243,109, 66, 46,126,100,139,191,182, 24,156,184, +235,231,163, 68, 70,196,214, 52, 53, 63,218,182, 40,134, 82,119,205, 16, 7,168,144, 45,133,138, 72,212,102,100,137, 98,126,154, + 71,100, 65, 71, 75,189,178, 63,120, 80,219, 88,164, 11,219,185,203, 2,218, 44, 39, 32,145, 41, 50,100,225,250,172,209,180,210, + 62, 27, 35, 33,144,117,236, 40,180, 56,230, 38,198, 9,199,158, 99,170, 84, 9,152, 81, 23, 91, 27,163, 59, 81, 52,142,165, 73, +177,218, 87,175,196, 68,159,254, 66,216,145, 31, 10,232,154, 88, 3,180, 26, 61, 89, 2,235,228,138, 53,212,144, 33,196, 74,103, + 44, 40,149,151,187,236,185,127, 88,114, 86, 18, 57,169,154, 30, 46, 99,222,167,203, 50,235,232,243,217, 89,216,229, 40, 0, 3, +192, 19, 54, 37,153,220, 87, 59, 58,167,241, 29, 57,222,216,104, 27,172,195, 65,117, 89,147,233, 37,141,113,161,234,190,171,129, +132,151, 10, 85,174,213, 14, 12,174, 50, 90, 96,140, 48,101,237,212,212,246,249,117,104,201, 9,237,145,161, 78, 34,154, 49,166, +147, 20, 84,211,162,177,214,229,210,246, 15,135, 56,109, 91, 56,203, 76,226,246,133,173, 69,218,218,240, 84,147,139,185, 92, 60, +151,103, 51,241,186,183,235, 36, 53,120,189,114, 36, 28,232,203,168,113,138,141,228,138, 32,150,219, 88, 11,140, 93, 78,180, 3, + 62, 99, 14,134, 85,180,225,124,217, 14,212,180,113, 46,187, 90,106, 21,156, 54,216, 30,214, 78, 68,105,243, 49, 13,210, 98, 59, + 62, 70,107,122,212, 56,213,170, 0, 0, 3,224, 73, 68, 65, 84,212, 70,116, 20,227, 57,151,149,207,202,154,156,213, 20, 85,181, +198, 28,193, 80,108, 57,168, 84, 37,216,207,195,108, 72, 94, 63,118, 57,229, 84, 9, 18, 21,246,245,243,218,242,132, 43, 95, 39, +190,173,154, 68, 16, 91, 39, 51, 62,218,168, 42, 45,223, 80,140,186, 73,181,152,119, 33, 89, 52,120,217,140,185,220, 24,193,173, +158, 56, 18,199,112,215,206,135,143,177,180,152,202,160, 6, 75,189, 14, 71,141, 87,172, 83,119,186, 86, 83,251,216, 82,216,141, +106,225, 82, 1,248,184, 13, 15,142, 11,118, 91, 56,170,104, 1, 67,131,178,196,209, 4,243, 25, 55,230, 41,137,120,136,201, 26, +103, 64, 53,197,117,109,208,150, 7,198,166, 68, 90,214,182,198,198,115, 89,171, 85,214, 54,195, 56,205,139, 58,225,217, 26, 60, +245,244,208, 74,211,109, 72, 50,131, 15,173, 52,142,135,238,196, 74, 24, 71, 38,121,134, 29,163,119,145,147,197,181,199,176,200, +122,118,144,135,241,137,147, 48,104,100, 95,164,243,185, 9,210,196,178,154,210,104, 44, 38,165,176, 12,102, 41,196,146, 91,153, + 96, 49,105, 94,171, 62,142,137, 77,203,226,108, 68,116,195,151, 71, 29, 49,202, 40,202, 78, 5,172,216, 80,236,249,208, 26, 27, + 79, 72,170,243, 42,116,194,255,232,243,199, 2,178,157, 75, 84, 15, 8,164, 15,145,140,211,169,230, 39,115,181, 89,188,166,159, +238, 78, 26,162,238,155,168,230,115, 46, 6,192, 10,143,189,180, 3, 1, 59, 60, 46, 59, 19, 82, 68, 30,119,111, 60,185, 43, 52, + 63,112,160,134,162,105, 3, 5,171, 43,153, 30,167,215,182,247, 20,197, 99, 13,216,171,142,150,141,183, 29, 1,161, 1,242,109, +152, 46, 80,129, 74, 50,111, 71, 75, 26,140,202, 9,200, 50,194,119,238,172,218,136, 64,140, 40,182,153,217,234, 33,195, 75,178, +233, 65,245,117, 54,198,157,136,229,217,218, 36, 86,213,165, 22,178, 66,177, 26,198,214, 36,101, 13, 90, 35,168, 86,203, 90, 59, + 69, 42, 91,107, 87,217,216,116,168, 8,150,181,224,173,129, 44,105,235, 91,196,169, 98,106,182,118,206,162, 23,244, 86, 83,119, +186,235,169,153,155,213,168,137,170, 75, 6, 19,182,233, 75,218,216,210,111,125, 53, 70,244,181, 58,204, 55,126, 0, 53,219, 24, +215,219,204, 26, 91, 56,243,117,106, 36,108,213,104, 39,210, 68, 59,148,113,205,208,214,154,253, 99,114, 54, 30,149,169,117, 30, +148,205,121,185,195,103, 45, 91, 67,155,154, 15,148, 10, 2,112, 60,148, 52, 74,231, 72,150, 26,204, 28, 40,112, 29,234, 82,212, +129,117,182,179,195, 66, 70,172,152,121, 45, 65, 48, 53, 99, 35,152,107,152,156, 48, 12, 38, 57,139,151,154,110,125,225,199,170, + 49, 25,167,149, 26,235,249,160, 88, 71, 12, 49,246, 1,218, 44, 77, 67,191,173,166, 24,181, 58,241,141,157,158, 42, 51,102, 29, +218,112,237, 58,239, 91,163,139, 77,164, 50,173, 13,109,212,151,166, 92,126,254,160,249,161,106,145,139, 26,218,118,180,212,173, + 37,128,185,253,183, 51,117,188, 55,240, 29,104,157,148, 25, 89, 21, 53, 48,105,148,240,161,101, 21,222, 61,147, 62,133,230,174, +214,178,124,179,233,225,228,227,168, 60, 99,132, 22,205,224, 98,201,168, 3,181, 86,127,182,122,224, 64, 61,131, 46, 92, 75, 59, +187, 47,140, 56,138,164,112,254,168,119, 84,229, 19,101,215, 26,183,166,222, 54,128,108,173,232,212,233, 97, 5,106, 35,162,101, + 1,138,177,150,144,173, 1,172,117, 36, 45, 6,145,200, 19,112, 19, 78,124,183,113,174,166, 85, 17, 35, 81, 49, 48, 82, 95, 64, +228, 0,110, 44, 97,252,218, 64,112,133, 10,164,202, 40,208,113, 31,124,231,164,188,170,194,179, 54, 94, 88,115,118,214, 62,237, +104,103, 99, 40, 9,156,202, 8,230,152,171,182,134, 79,248,252,249,244,156,192,234,203, 84,199,227, 18,214, 36,101, 35, 30, 20, + 93,242,241, 56,214,105,103,170, 70,134,209,127, 53,110,143, 85,237,156,228, 80,118,194, 49,181,234,212,111, 56,142,125,154,140, + 97,250, 8,166,197,152,161,203, 92, 9,177, 81, 88,117,210,218,143, 68, 25,147, 22,159,138, 28, 53,179,229,163, 25,163,151,174, + 39,215,199,240,218,216, 79, 97, 77, 92,106, 73,221,150, 59, 77,243, 70,108,241, 4,225, 74,219,120, 36,177,214, 43,161,141,201, + 66,211, 59,182,147,159,226,191, 89, 8, 53,178,105,106, 90,243,164,150,160, 76,108,195,106,139,167,185,159,230,141,234,126, 84, +252,106,250, 50,155,192,248, 35, 63, 9,255, 7, 14,224,164, 93, 7, 57, 57,190, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/clone.png.c b/source/blender/editors/datafiles/clone.png.c new file mode 100644 index 00000000000..324611a2d75 --- /dev/null +++ b/source/blender/editors/datafiles/clone.png.c @@ -0,0 +1,343 @@ +/* DataToC output of file <clone_png> */ + +int datatoc_clone_png_size= 10774; +char datatoc_clone_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 96, 0, 0, + 0, 96, 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, 11,252, 97, 5, 0, 0, 0, 6, 98, + 75, 71, 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40, +155,120, 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, 21, 0, 4, 16,211, 77, 59, 52, 0, 0, 32, 0, 73, 68, 65, 84,120,218,237, +125, 89,208,101,215, 85,222, 90,107,239,125,198, 59,252,147,254, 86,183,108,203,178,100, 2,106,219,106,201, 50, 54,196, 9,161, +108, 76,149,137,147, 64,202, 84, 5, 30, 82, 64, 24, 94,108,102, 12, 24,120, 8, 46, 8,225,133,209, 85, 41,147,216,174, 60,133, +228, 33, 84, 37, 41, 94, 82, 4,140, 95,130,193, 41,136, 45, 91,131, 53, 88,106,245,244, 79,119, 58,211,222,107,229, 97,239,125, +206,185,127,183,100, 25, 68, 42,169,242, 81,247,223,247,158,255,222,115,246,217,123,237, 53,124,235, 91, 75, 0, 95,237,113,247, +197,139,247,221,247,134,219,207, 35, 0,124,232,103,127,222, 57,139, 0, 68,132, 68, 90,107,163,181, 54,230,195, 63,255,115,225, + 67, 31,252,209, 31, 19, 17, 0, 33, 36, 36, 34, 66,182,109, 85, 55, 77,103,237,250,248,191,127,234,127,190,120,245, 42,181,109, +211,181,109,215,118,157,237,108,215, 61,251,244, 19,207,191,248,194,201,209,117, 4, 6,149,252,200, 15,255,136, 49, 70, 61,116, +229,138, 48, 51, 51, 11, 60,247,220,211, 4,210, 53,205,108,239,128,210,178, 94,159,205,118,246,191,245, 31,124,171,182,157, 69, + 64, 68, 36,226,114,182,135, 32,139,211,155, 78, 8, 89, 94,243,218, 55,116,109, 43,204,218, 57,139, 8, 0,132,140,205,122,105, +187, 38,157,236, 53,173,157,151,170,237, 58,165, 24, 68,180,117,150, 0,145, 4,145,154,166, 50,197,222,222,164, 32,165, 58,219, + 41, 81, 34, 2, 2,154,157, 19, 36, 2, 0,224,245,106,249,250,187, 46, 88,235,148, 8,136,128, 0,136,160,160,118,206, 33,130, +136, 16,209, 61,175,185,215, 90, 71,196,128, 26, 0, 4, 0, 64, 3, 90,237,172, 35, 18, 0, 37, 34,136, 40,226, 0, 20, 58, 6, + 1, 0,100,116,196,244,138,150, 75,245,175,242,188,120,237,107, 95, 75,132, 85, 85,157, 95,187, 71, 30,121,228, 93,239,254, 54, + 17, 33, 68, 36, 82, 74,249,133,251,195, 63,252,195, 79,255,233,167,226,218,125,240, 71, 5, 4, 1,137, 8, 9, 21,169,229,217, + 45,203,224, 4,202, 60,255,221,223,253, 40, 0, 80, 27, 23,174,179,221,205,107, 47, 92,125,225,185,155,183,142, 87,203, 5, 51, +158,158, 28,255,242, 47,127, 4, 0,252,218,137,176,136,200,213, 23,158,205,103, 7,229,124, 55,207,114,103,219,187, 47, 94, 34, +164,247,124,251,183,147,237, 58,107,173,181,221,245,107, 95,158,204,118,159,254,252,103, 23, 71,215, 59,161,198, 1, 0,116,109, + 91,215,181,182,206, 17, 50, 17,213,117,183, 94,221,186,248,134,175,111,154,234,130,166,233,206,188,107, 59,214, 44, 16,151, 69, +152,211,178,100,165,187,206, 94, 56,184,203,186, 46,140,192,175,157,115,142,144,133,168, 72,179,214,225,206,164,176,214,138, 0, +168,176, 46,128,168,157, 99, 33, 68, 17, 68,156,231,169,115, 12, 0,136,214,161, 8, 10, 56, 68, 66,205,108, 1, 20, 17, 1,128, +136, 35, 66,231, 4, 17, 17, 24,145, 24,153, 89,224,213, 58,112,252,230,199,126,252, 39,202,162,244,139,228,255, 67,191,207, 20, + 33,162, 34,245, 91,191,245, 27,215,175, 95,191,243,133,126,234,167,127,198,177, 3, 1, 96,241,151, 69, 0, 36, 68, 32, 36, 4, + 64, 82, 72, 68,136,164,148, 34, 68,165, 20, 41,245,165, 39, 31,251,119, 31,255,247,227, 11,233,205,102, 3, 32, 16,159, 17, 71, + 7, 32, 44,207, 78, 27, 49,228, 54, 38,155,128, 82,224, 58, 66,100,212,236,224,159,253,211,127,116,249,145,119,124,242,147,159, +120,226,241,199, 1, 64,119,109,219, 63,164, 32, 32, 34, 33, 34, 98, 93,173, 79, 23, 75, 80, 38,209, 13, 40, 13, 96,235,211, 91, +243,253, 75,213,250,140,210,210,185,170,216, 61,104,234,250,123,190,231,123,149, 82,191,244,139,191,160,222,242,208, 91,132,153, + 89,216,139, 29,139, 8, 56,219,221, 58, 57, 75, 38, 59,208, 86,142, 57,207,139,229,217,105, 49,191,139, 73, 3,168,205,226,152, + 69, 93,188,120,137, 89,188,158,249,214,119,189, 75, 59,103,193, 47, 37, 0, 18,128, 32, 33,159,156,222, 58,122,225,153,253,187, +239, 89, 45, 78, 38,179,189, 23,143,111, 82,154,106,194,179,147,163,253,123,238,191,120,241, 18, 34,218,174, 67, 36, 38, 34, 34, +199,172,173,101,194,176,124, 36, 0, 64, 12,178,217, 84, 58, 45, 89,207,156, 44,116, 82, 42, 7,119, 95,184,219, 24,179,179,127, + 72, 72,182,235,188, 38, 11,138,147,144,152, 53, 59, 43,128, 72, 32,130,204, 72, 36, 32, 50,155,205, 78,186,122,115,118,131, 92, + 61, 41,139,233,164, 20,128,174,179,164, 8, 1, 73, 17, 2, 41,197, 14, 73, 33,161, 66, 34,214,214, 58, 66, 64, 33, 64, 64, 32, +182, 66, 68, 90, 39, 38,155,236,204,119,136, 46, 89,235, 16,129,136, 16,145,153,148, 66,102, 82, 68, 44, 72, 68,130,136, 66,138, +148,118,206, 49, 34,178, 32, 2, 17, 35,146,115, 14, 17,231,179,153,136, 48, 51, 34,136,160, 8, 16, 33,146,136, 35, 34, 16, 39, + 4, 36, 34, 66,138,128, 17, 80, 59,118, 20, 5,199,107, 65, 63,241,254, 32, 34, 0, 36,191,241,128, 16, 16, 17, 80, 68,136,144, + 1, 16, 5, 16, 64, 9,190,122,123,237,111,103,211,246,199,238,238,238,206,206, 46, 0, 52, 77,125,122,122,186,217,108,190,138, + 11, 61,240,198, 55,190,255,253,223, 29, 36, 51,254,227,183, 62, 17, 41,165, 78, 79,207,126,253, 95,255,171,151,187,208,207,254, +220,207,179,227,160, 15,195,238, 39,132, 96, 63,253,161,252,197, 72,105,163, 63,244, 51, 63,125, 7,123,243, 19, 63,249, 83,206, + 58,199,142,217, 9, 51,139, 8, 0,136, 8,136, 8,251,127, 0,132, 69,192,235, 71,230,111,124,251,219,238,185,116,233,115,159, +251,252,150, 26,177,214,250,239,122,253, 27,228, 0,251, 17, 9, 56, 88,158, 46,218,166,110, 54,171,100,231,176,107, 43,110, 27, + 67,238,215,126,237,215, 63,244,161, 97,104,100,173,117,225,143,115,214,197,195,191,178, 55,110, 30,221, 60, 91, 94,189,126, 19, +178,121,178,123,209,117,141,206,102,148,228,136,170,235,218, 95,249,213, 97,202,136,157,227,209, 17, 76, 24,179,115,246,249,231, +158,216, 44,143, 55, 39,215,119,118,166,182,171, 78,175, 61,171,149,114,245, 90,108,219, 57,215,117,157,181,246, 87,127,245,215, +194,133,220,112, 48, 51,247, 47,159,126,250, 9, 86,165,206,114,102,103, 69, 19,219,157,253,195,245,122,169,117,210,212,149,214, +198, 49,219,174,107,187,246, 3, 31,252, 32, 0, 16,139, 31,134,147,254, 39,243,233,241,177, 54,217,173,171,207,118, 77, 67,218, +108,206,142, 64,103,148,228, 89, 54,105,219, 42,205,138,206, 58,255, 40,206,218,131,253, 3, 4, 84, 15, 61,244, 16,128, 0,131, +244,154, 91, 96,177, 94, 82, 50,157,204,231,200,162,180, 17,233, 22,103, 75, 68, 98, 84,202, 36,157,115,119, 31, 30, 42, 53,120, + 24,223,246,158,247,104, 97, 22, 47,124, 94,247, 51, 17,130, 99, 87, 24,106,107,150,246,108,179, 18,101,178,114, 58, 39,147, 16, + 82, 93,213,169, 98,173,141, 99, 39, 32, 34, 2,136,109,219,106, 17,239,250,176, 8,121,237,230, 64,148,179,171,211, 91,139, 91, + 47, 82, 54,221,219,153,118, 78,184, 93,157,158,220, 72,203,233,225,225,197, 44, 77,153, 25, 1, 65, 0, 8,192, 90,111,216, 25, + 17, 5,128,200, 49, 32, 10, 8, 34,171,212,118, 85,146,151, 73, 57, 21, 93,234,212,128,198,131,217, 93,147, 34, 67, 68,175,176, + 72, 80,208, 59,111, 0, 96, 73, 64,152, 25,128,153,129,217, 75, 49,119,213, 26,144,146,114,167,221,172,192,181,110,115,186,147, +231, 89,162,221, 72, 76,252,166,242,239, 28,179, 22,199, 64,200, 12, 0, 14,145,152,189,114,211,155,205,106,190,119, 72,160,243, + 98,146, 38,137, 19, 22, 39, 40,226, 21, 44, 9, 1,137, 19, 32,241,219, 94,136, 65,152, 29,179,223, 80, 65, 36, 79,110, 60, 3, +214, 94,125,250,177,221, 50,213,138,132, 29, 59, 22,246, 99,112,222, 8,134, 63,126,120,204,154, 29, 19,129,128, 48, 3,128, 32, + 17,179,148, 59, 23,147,188,184,235,194, 69,173, 53, 51, 3, 17,161,176, 0, 49, 51, 34, 10, 11, 19, 1, 32, 50, 16, 2, 3,130, +210, 34,226, 24, 16,216,155, 10,102, 6,196,189,189,189,166,173,147, 36,241, 98, 34, 34,206, 57, 34, 5,194, 72,132,194, 68, 34, + 66, 64,194, 64, 8,200, 40, 90,132, 65, 0, 17, 5,144, 69, 16, 0, 68,136,168,200, 75, 0,239,181, 9, 17, 33,130, 8, 51, 18, + 49, 3, 17, 51, 0, 49,138,162,240, 17,209, 44,140, 72,225, 18,204, 18, 44, 7,248,135, 64,100, 68,100,246, 3, 17, 2, 17, 10, +254,147, 8,160, 4,189, 37,194, 90, 88, 0,135,239,247,151,136, 74,202,187,244, 10,253, 87, 0,189,222, 67, 1, 65,191,171,208, +235, 62, 45,194, 0,136,128,204, 28,205, 41, 71, 51, 23, 92, 77, 17, 63, 98, 18, 22, 65, 4, 10, 95, 98, 17, 5, 33,152,128,175, + 29,127, 45, 59,219, 31,111,120,195,253, 15, 62,248,224,125,247,223,191,183,187, 59,156, 21,129,104, 69,201, 59,156,132,132,116, +122,122,250,248,227, 95,252,171,191,250,203,167,158,122,234,213, 25,208,100, 50,121,255,251,191,251,226,197, 75,204, 60,168, 93, + 16, 0,140,254, 55,134,151,131, 93, 31, 14, 26, 94, 17, 33, 1,130, 54,230, 63,253,254,239,127,230, 51,127, 38,175, 88, 56,240, +125,239,123,223,131, 15, 94,230, 96,152,253, 32,182,190,141,209,137, 31, 6,209,251,245,231,135,228, 3,142, 97, 88,113,160, 68, + 68,214,218,143,125,236,223, 60,247,220,115, 47, 63, 32,125,255, 3, 95,215, 52,109,156,143, 59, 60, 8,246,193, 13,224,185,209, +192, 16,102,244, 3, 33,142, 47,129,217,127,184,109,235,229,106,185, 58, 61,122,247,187,191, 5,132,118,118,247, 63,250,209,143, +214,117,125,231, 1, 57,219,197, 65, 12, 65,205,104, 52, 40, 91, 3, 58,191,120,204,178,172, 90, 43, 32,205,138,116, 66,136,155, +179,155, 73,150,103,211,125, 6,168,143,175,170, 36,167,124,198,109,133,217,220,182, 43,182,205,106,189,252,133, 95,252, 37,173, +244,239,253,222,199,158,124,242,137,243, 30,214, 91, 31,125, 52,106,112,217, 58, 32, 4,180, 32, 48,156,137,103,217,185, 23,191, +252,228,151,191,244,184,144, 52,155,181, 54,198,117, 22,108,139, 4,100,114, 83,204,192, 89,215,181,109,179, 49,105,129,174,173, + 87,199, 70, 43, 43, 90, 41,213,174,207,118,247, 47,176,240,149,135, 31,126,207,123,190,253,201, 39,158, 56, 59, 59, 27,166,224, +135,126,232,135, 95, 74,220, 9,252,244, 16,146,128,160,143,153, 16,113,185, 94,118, 76, 68, 8, 32,192, 66,192,205,242, 8,116, +158, 77, 74,112, 14, 17,117,146, 45,142,174, 77,119, 15,218,106,205,206,230,229, 4,147,137,181, 29,105,195,182,233, 86, 39,247, +255,157,183,248, 40,192, 67, 22,137, 73,122,167, 79, 61,252,200, 35,225,233, 35,242, 18, 4, 73, 96, 16,172,248,147,133,111, 94, +127,190,174,107, 32,114,237,122,117,227, 5,215,110,128,187, 77, 93,101, 69, 9,140, 94, 98,242,162,228,174, 37,147, 78,246, 46, +154,124, 46,100, 54,203, 99,177,173,109,235,174, 90,238, 30, 92, 76,147, 20, 70,139,225,216,189,251, 93,223,118,245,234,213, 91, +183,110,169, 43, 87, 30, 14, 81,103, 88, 16,191,217,130, 31,220, 59,200, 32,192, 34,167,167,183,172,160, 74,103, 90, 41,176,173, +232, 68, 76,102,178,162, 93, 47, 59,150, 98,182, 39,148,152,124,166,116,106,138,185, 74,242,174,169, 69,216, 57,219, 84,235,180, +156, 90, 43, 73, 86,236,239,239,251,113,112,127, 83, 17, 16,120,243,155,223, 66,132,234,161,135,174, 12,123,139, 97,252, 42, 78, + 24, 8,138, 8, 52, 93,183,174,154,229,209,117,118,238,234, 11,207,213,181,213, 89, 97, 76,214,108,150,206,118,197,108,223,185, +174,221,172, 64,156, 99,231,227,227,166,169,234,213, 49,131, 24,132,122,125, 54,155,205, 14,246, 15,250,169, 71,136,230, 43,138, +234,189,175,191, 79, 51, 59,240,166,223,199,250,130,130,130,140,130,225, 75, 2,222,199,160,179,163,235,155,186,202, 38,179,174, +181,169,194, 52, 81, 32, 78,132, 77,146,157,222,184,138, 64,249,100,234,156, 91, 92, 63,218,221,219, 7,157,136,233,180, 74,178, +157, 3, 6, 84, 98,239,186,235, 34, 16, 56,231,162,254, 64,233,131, 76,111,129, 17, 81, 68,199, 5,241,114, 44, 34, 8, 8,128, + 2,193,193, 68, 4, 63,181,220, 88, 72,179, 41,128,100,147,204,217, 38,203, 11,165, 76,106,204,233,241, 73, 62,153,150,101,190, + 94, 45, 65, 43,219, 54,214, 90,174, 55,152,149, 69, 81,230,102,166, 8, 1, 13, 11, 3, 11, 10, 33,129, 96,216, 31,132,227,136, + 22, 81, 68,179, 99, 9, 32, 18, 48,123,125, 39, 16,124, 91,128,112, 6, 65,184,174,206, 20, 34,176,228,179,253,249,193, 61,192, +174,105, 54, 77,189,214, 73, 81,131,105, 41, 99,237,210,180,220,221, 59, 44,242, 66, 41,229,149,165, 48, 59, 9, 90, 29, 16, 16, + 4, 61,178,128, 66, 64, 76,206,235, 58, 4, 64, 65, 66,209, 78, 4,129, 65,144,131,202, 99,241,131,240,115,232, 95, 8, 34,194, +124,231, 96,113,118, 34,232,150,171,211,172,107, 73, 25, 68,209,233, 4, 16, 83,195,147, 44,219,159,207,253,141, 69,128,157, 3, +127, 35, 68, 10, 58,157, 60,222,130, 66,136, 14,144, 0, 28, 10,249,129,160,243,216, 3,106, 96, 22, 4, 65,239, 49,250,203, 49, + 0, 2,162, 48, 3, 34, 96, 56,163,149,114, 93, 83,173,151,119,221,125,143, 40, 37, 72,109,181, 94,159, 28,221,243,250,251, 19, + 83,130,119,252,252,216, 5,153,194,122, 35,138,243, 24,176, 0, 34,136, 67, 36,135, 66,136,126, 61, 28, 0,162, 67, 36, 68, 64, +100,242, 51,228,215, 8, 17,152,101,152, 29, 24, 78, 32,128, 36, 73, 58, 41,203,233,108,175,233, 90,205,117,215,217,189,253, 11, +249,197, 44,104,114, 16,113,189,121, 21,112, 72, 4, 34, 52,224, 80, 16,125, 22, 8, 18, 2,224,125,130,104,150, 1,145, 64,251, +105, 64, 20, 31,115, 32,132,127, 68, 4,132, 0,195,190, 12, 16,130, 50,103,103, 39, 89, 57,213, 73,186,127, 48, 15, 11,236,227, + 31, 0, 64, 20, 1, 68, 33, 34, 0, 97, 70, 4, 39, 68, 0, 34,140,132, 78,128, 16, 64, 24, 16, 5, 5,145,156,143, 23,132,132, +216,223,139,181,136, 0,176,151, 23, 63, 29, 24,165, 71,128, 9,130, 71,236,159, 97,103,103,127, 62,223,235,157,109,191, 91, 5, + 17,152,137,200,191, 20, 65,199,140, 30,201, 2, 32,240, 99, 37, 70, 64, 96, 32, 16, 33,191,158, 4, 8,200, 12,136,140, 66,126, + 15,129,102,118,113, 55, 8, 17, 50, 11, 17, 9,179,127, 74,199,222,155, 8,115,224,237,153,223, 51, 28,247,164, 7, 77,250, 8, + 69,132, 17, 1,137,252,238, 16, 17, 1, 34, 63, 45, 36,192, 20,188,126, 4,102, 64,234,157, 80,241, 49,172,150, 56,185, 8, 97, +219,251,123,143,130, 15,134, 56, 79, 65, 76,252,194,196, 25, 2,102,136, 55,241, 81,133, 72,152,108, 1, 97,161,112,107, 4, 16, + 31, 59,123, 61, 4,136,224,247,207, 96, 47, 1,180,248,253,217,163,142, 8, 94,103,133,117,219,142,102,252,219,222, 51,115,206, +249,168,144, 40, 64,122, 32, 20, 52, 28,160, 0,162, 32, 80,184,167,223,178,128, 18,157, 98, 16, 9,214, 35, 8, 64, 24, 80,240, + 19,209,207,102, 88,178,254,233,227,216,251,137, 29,159,233, 93, 39,102, 0,111,106,134, 87, 94,156,252, 27,175,226,188, 37, 98, +143, 55, 10,138, 48, 2, 5,128,202,155,204,175, 20,115,124,237,248,218,241, 55,143, 92,135,232,196,232, 34, 47,146, 36,201,178, +220, 24,227, 79, 90,219,213,117,211, 52,245,122,189,118,206,253,173, 15,200, 24,115,229,202,195, 95,255, 13,223,112,239,235,238, + 85, 58,226,129,130, 64,193,151,244, 33,160,143, 84, 69,228, 75, 95,250,210, 99,159,255,220,159,255,249,159,183, 49,193,243,170, + 13,232, 59,254,225,251, 46, 95,190,108,180,145, 30, 55,142,193,216, 40, 38,139,158, 95,140,240, 1, 64, 41,133,132,109,219,126, +246, 47,254,226, 15,254,224, 63,255,141, 6,164,181,190,124,249,242,123,223,251, 29,210,107, 26,129, 62,139,216,135,244,227, 8, +127, 59,178,223, 14,237, 17,137,104,177, 88,252,214,111,254,198,122,189,254,234, 6,180,183,183,247,222,247,190,247,210,165,215, +120, 31, 22,206,105, 67,216, 70, 23,182,127,190,228,152,188,119, 10,160,180,186,113,253,250, 39, 63,241,137,227,227,227, 87, 52, +160, 15,124,224, 3,121, 94,178,240, 86, 32,118,110, 2, 99, 0, 63,138,234, 71, 11,230,237,107,136,240,105, 27, 9, 9,112,141, + 82,234,177,199, 30,251,228, 39, 62,254,149,147,227,127,239,239,127, 11, 59, 22, 16, 39,174,143,154, 99,216, 40, 49, 70, 19, 31, + 25, 97, 63,121, 12,140,225,173, 15, 45,189,109,240, 38,201,175,116, 16, 61, 17, 16,112,206, 86,171,147,135, 31,121,228,201,167, +190,212, 52,205,203, 13,232,237,111,127,135, 8,179, 15, 75,229,252, 1,163, 1, 5,131, 19, 49,155, 49, 56, 33, 99,172,164, 7, +181, 0, 68,196, 58,187, 90,158, 93,127,241, 5,235, 58, 0,184,124,249, 77, 23, 46,220,253,228,147, 79,190,164,126, 97,102,136, +166, 63, 62, 41, 12,247,241,110,254,246,169,115, 47, 69,196, 89,159, 4,105,154,170, 74,178,162,173, 54, 44,172,210,194,161, 6, + 91,147, 50,204,220, 53, 13,216, 86, 23,211,111,126,231, 59, 31,120,224,129,223,249,157,223,190,227,128,200,231,148, 88, 36, 66, +218,163, 63,224, 79,220, 54,113, 33,241, 43,204,188,170,234, 91,203,234,120, 85, 45,170,102,213, 64, 39,184, 92,158, 66, 50,209, +211,131,174,107,155,211,235,160,115,199, 2, 73, 73, 73, 1, 74, 19, 81,219,212,151, 46,221,243,145,143,252,202,157, 7, 20,144, +254,237,220,208,185, 60, 81, 4,219,217, 13, 39,185,235,218,163, 91,183,206,206, 22,182,235,184,171,215,167,199, 70, 43, 52, 69, + 50,217, 7, 99,216,117,132,100,202,153, 49,134,146, 28,156, 83, 90,217,206,109, 22,139,102,179,114,236, 0,225, 95,254,242, 71, +238, 32, 67,143,190,237,209, 59, 66, 85, 91,135,120,152, 25,122,237,180, 89, 45,158,127,230,241,186,222,104, 37, 0,128,164,180, + 73,234,245,153, 82,136, 58, 65, 0, 2,168,214, 11,109, 12,119,181,107, 54,182, 58, 3,149,160, 50,168,104, 50,157,166,105, 6, +136, 68,244,141,111,127,251,159, 70,202, 72,191,100,114, 7, 97,238,209,144, 62,196,137, 33,183, 8,180, 77,117,116,116,195,164, +121, 90, 78, 93,199,109,181,106,171, 37,136,109,155,141, 54,105,125,118,211, 85,103,215,159,123, 42, 47,167, 8,192, 2,148,228, +168, 11,182, 45,114,211,182,214,218, 62,187, 33,211,201,244, 7,254,197, 15,110,205,208, 35,143,188, 85,238, 56,158,224,234, 13, +104,189,143,252,173,237, 78, 55,117, 82,204,146, 98,146,164,133, 50,137, 2, 39,108, 85, 82,100, 89, 94,173, 22,179,221,187,172, +109, 17, 56, 47,203,102,189, 96,215,102,121,169,146,140,148, 49,229, 14, 87,167,243,157, 93, 99,146,224,152,131,236,237,238, 45, + 22,139,171, 87,175,134, 93,118,103,192, 22,193, 71, 47, 12,241, 39, 2, 11,128,184,171,207, 63, 35, 58, 17,231,138,201, 14, 11, +163,184, 52, 73,218,166, 37, 39, 58,203,242, 18, 81,186,166,170,246, 46,188,182,105, 27,147,149, 68,198, 49,177,116,205,226,150, +117, 46,159,238, 42,109, 66, 78,196,187,228, 4,223,249, 93,223,245,249,207,127,206,103,157,105, 75, 15,246,128,144, 68, 61, 2, +131, 6, 23,129,186,169, 77, 98,178, 52, 43, 39, 83,232,150,171, 27,207, 74,187, 90,157,222, 80, 4, 4,182, 89, 45,235,245,218, + 9, 76,166,179,147,155, 47,164,229, 52,155, 29,170,124, 34, 40,155,179, 91,148, 20,105,154,187,182, 85,218,132,116,170,248, 76, + 22, 91,107,127,252, 39,126,114,128,244,182,108, 86,239,107,227, 8, 48, 15,200,146,188,240,252,115, 2, 68,192,183,174, 95,181, +157,155,239,223,197,166, 72,178,105, 91,111,218,166, 74,138, 89, 57,223, 95, 45, 78, 81, 37,179,189,195,229,201, 45,163, 77,181, + 89, 17,176,209,198, 7,128, 38,201,166,211,105,111,178,125, 20, 66,136,218,152,213,106,117,245,234, 11, 52,218,222, 28,132, 59, + 40,164,152, 97,139,137,182,182,107,178,204,228,211, 29, 93,236,188,230,245, 15, 76,230, 59, 39,167, 11, 69,212,174, 79,193, 54, +211,221, 11, 77,103, 5,104,186,123,152, 77,230, 45, 75, 62, 63,176,206,165,121, 89,183, 45, 3,144, 41, 28,211,238,238,222, 72, +143,132, 25,242,217,188,127,242,157,223,137,136,234,202,149, 43, 8,216,199,163, 18, 48, 1, 31,101, 33,120,131,133, 0, 2,155, +106,229, 24,187,206, 98,154,177, 0,130, 20, 69,217,214,155, 98, 50, 79,138,105,215,109, 12,202,209,141,107,164,148,176, 5, 6, +246, 25, 79,199, 40, 96,219,134, 1, 82, 67,243,217, 14,140,156,154,254,175,207, 69,206,230, 51,117,229,202,195,253,104, 64, 60, +174, 37, 33, 59, 27,253, 50,191,108,103,235, 77,215,180,155,197, 17,138,123,234,139,143,229,229, 20, 72, 17,225,250,236,200,177, + 51, 73,233, 28,167,121,158,230, 69,211, 54,105, 94,216,206,182,245,218,118,117, 98, 20,178,101,219, 30, 30, 94, 10,105, 57,220, +218, 64,125,142,224,181,175,125,157, 6,225,168,238, 48,134,146, 49,106,243, 38,155, 60, 49,200,213,171,227,249,254,197,124,182, +163,144,239,191,255,126, 74, 75, 45,205,241,181,231, 69, 25,199,194,130,108,237,100,190,219, 53,149, 49,105,219, 52, 90, 41, 78, +242,196,152,229,226,140, 0, 46, 28,222,173, 20, 49, 51, 33, 1,129,128, 16,146, 8, 32,131,144, 40,102, 70,114,206,169,183, 60, +244, 16,132, 64, 50, 46, 86, 36,111,197,216, 21, 65,192,217,110,179,169, 86,203, 51,238,234,213,226,108,185, 56, 1, 17,210,233, +100,247, 46, 68, 94, 30, 31, 77,102, 51, 69,184, 89,157, 9, 59,182, 29,170,192,226, 67,132, 36, 73,119,231,147,196, 36, 67,200, +123,167, 36, 70,200,119, 5,231,102, 64,203,133,131, 47,195,204,126,179,179,135, 65,242, 60,235, 54,139,166, 90,237,236,237, 40, +113, 96, 55,139,163,107,199,183,174,165,198,152, 52,117,206,173,215,235,157,221, 61,215, 54, 40,238,230,243,207, 46,110,124,185, +217,172,144,101,154, 37, 90,153,176,101, 96,208,252,189,169,134,176,135, 88,152,117,192, 20, 5, 0, 25, 4, 57,236,122, 97, 17, + 15,215, 2,163,160, 56,150,117,101,243,249, 97,154,151,171,245, 10,147, 34,159, 31, 20, 64, 90,227,209,205,107,123,187, 59,202, +152,174,105,190,252,236, 51,187,123,251, 74,211,238,222, 46,146,217,153, 77, 18,147,162,207,182, 70,236, 69, 60, 33,107,196,174, +100, 17,138, 66,163,163,161,192, 62,224,143,112, 54, 66,244,199, 16, 64,152,211, 68, 35,161,176,219, 44, 23,198, 36,139,163, 27, +229,108,175,105,229,224,226,235,171,205, 90, 81,102, 38,201,193,236, 32,203, 10, 0, 55,207,178, 52, 49, 16,135,130,236,105,158, +193, 9,103,127, 6,195,159,128,226, 17, 49,179,230, 32,190,140,236,225,114,132, 0,238, 0, 96, 15, 74, 1,115,119,116,243,197, +196,144, 73,202,189,195,215, 32, 17,119,109,219,108,146, 44, 63, 57, 57, 54,198, 96,187,113,150,211,178,204, 52, 36, 73,209,227, + 56, 30, 6, 10, 42, 54,224, 32, 17,122, 57,231, 79,248,132, 59, 8, 8, 6, 15, 57,220,218, 19,183,132, 35,140,194, 34,136,164, +203,233,142,216, 22, 16,154,182,211, 70, 47, 78,110,217,182,217,221,211,123,179,105, 85,109,184,179,101, 57,157, 77, 39, 62,104, +132, 64,234, 56, 39,188, 40, 32,180, 61, 14,138,122,200,167,251,117, 52,227,253, 10,121,129, 18,143,128, 33, 0,139, 0,160, 34, +165,136, 54,174, 67,102, 84,155,186,130,233,206, 62,176,128,210,203,117, 85, 22,121,145,231, 90,107, 16,137,216, 25,160, 56,143, +245,122, 45,231,247, 56, 10,114,136, 84,194,136, 61, 4,234,113, 65, 96,214, 16,145, 95, 24,139,183,231,166,244,107,134, 66, 74, +169, 52, 43, 16,173,237, 60, 65, 81,192, 48,138,216,110, 82, 22, 69,150, 18, 81,192, 76, 97,144, 14, 70,175,220, 60, 51, 34, 82, +231,124,228, 48, 2,180, 2, 76, 8, 32,136, 52,222,228,126, 22, 35, 69, 85, 56, 10,187, 48,131, 72,189, 94,156, 28, 93,179,213, +202, 24,205, 0,206,213,203, 27,207, 24,176, 69,154, 68,149, 21,125,202,173, 64,202, 19, 84,182,247,122, 76, 76,158,119,194,152, +181, 8, 96, 47,188, 65,107,163,167,132, 0, 5, 48, 63, 12,208,117, 69,106, 28,168,122, 83,177, 59,109, 55,139,221,131,187,119, +118,247,100,204, 31,242, 90, 21, 72, 64, 8,250,215, 16, 78, 5,236,213,147, 80,188, 17, 96,244,186, 26, 68,128, 0, 81, 15,209, + 32,134,189,222,195,182, 61,200,232, 23,114,103,231,160,169, 55,173, 99, 64,232,154,238,174,139,247, 77,231, 59, 94,125,112,143, + 30, 11, 18, 9,128,191, 77, 80,187,232,101,133,195,126, 35, 8,216, 52, 4, 69,231,161, 73, 79,211, 17, 10, 84, 29,255,141,209, +226,133,231, 6,175, 69, 25, 0, 80,233, 27, 55,111, 33,146,206,166,211,221, 11,147,217,140,176, 39,164,247, 80,115, 88,241, 30, + 34,240, 11,201,219,144,105,112,214, 97, 72, 50, 7,114, 76, 32,177, 10,132,175,196, 77, 47,195,219, 0, 2,131,136, 82,164, 13, + 89,231, 54,203,147, 60, 49,132,228, 31,197,111,200,254, 49,162, 24,138,132, 44, 41,247, 50, 3,253,237, 25,216, 39, 77,251,132, +170,119,124,216,167, 22,250,196,157,223,131, 3, 20,227, 33,243,240,168, 68,234,174,195, 75,214,113,158,166,158,235,228,233, 77, +128, 20,226,125,102, 34,242,105, 10, 98,150, 97, 17,217,103, 57, 24,129, 60, 4,141,136, 76,140, 66, 65, 47, 7, 64,128, 3, 78, + 29, 82, 64, 65, 35,250, 28, 67, 76,202,128, 68,180, 29, 17,203,114,114, 30,194,246,249,154,192,174,243, 48,183,231,236, 33,121, + 41,199,192,132, 18, 33,244,247,240, 9, 20,228, 8,170, 11, 11, 19,144,151, 95,138,198, 61, 44, 18,135,249,151,241,146,121, 1, + 8, 94,231,128,136,244,234,126, 11, 86,231, 40, 83,204, 48,100,184,185,151,158,128,135, 4,219, 25, 48, 18, 15, 18, 0,178, 80, +159, 19,247,172,174, 94, 16, 69,134,244, 74, 28,200, 24,219,224,145, 13, 26,141, 27, 56,154, 41, 30, 44, 20, 8,160,127,112, 65, + 96, 1, 97,240, 78, 71,111,190,251, 88, 20, 2, 79, 76,250,135, 25,118, 25,251,253,220,167,167, 48,238, 41,230, 64,109,101,102, +236, 21,124,120, 12,140, 79, 5, 33,241, 5,254,254, 16,134,194,232,131, 80, 24, 98, 99,136,209, 23,136, 8,245,143,226, 31,210, +239,178,184,100, 60,184, 44, 49, 54,129, 62, 77, 54, 8, 19,198,103, 0,233,183, 69,200,157, 65, 8,130,253,236,248,148,123,216, + 83,131, 82,103,224, 88,206,130, 36,113,131, 70,209,241, 90,167, 23, 21, 63, 31,125,138,125, 80, 75,219,115, 25,190,219,191, 16, +255, 34,200,195,104,182, 0, 35,189,174, 87, 86,128,130,113,158,196, 71,174,131,232,140,116, 26,196,193,193,121,139,115,219,104, + 96, 27,154,148,224,225,197, 85,244,195,144, 62,251, 22,150,113, 52, 36,233, 67,102,242, 83,230,159, 91,226, 46, 27,235, 92,136, +202,122, 72, 58,111,105,243, 24,177,244, 62, 86,148, 1,137, 98,205,253, 66,133,205, 51,194,155,161, 23,163,176,134, 4, 3, 35, + 38,200, 35, 51,143,192, 69,233,133,186,215,126, 99,166, 99, 52,210,140, 3,150, 28, 4,220,187,134, 2,130,192,254,156,140,224, + 80, 24, 0,132,115, 56,212,215,142,175, 29, 95, 59,190,118,252,191,159,111,125,185, 75, 32, 78,166,211,217,116, 90,150,147,249, +206,124,111,119,111,190,179, 51,159,205,138,114, 82,150,121,146,164, 24,153, 76, 35,192, 44, 98,102, 2,214,218,170,218, 44,150, +139,229,114,117,227,198,245,213,114,117,182, 56, 91, 46, 22,167,167,167,203,229,242,255,191, 9, 42,138,226,129, 55,126,221, 61, +247,220,115,225,240,112, 62,223, 41,202, 66,107, 61, 42, 47, 57,119,117,188,253, 38,231,168,180, 35,122,239,128, 88,245,135,181, +118,179,222,156, 45,206,174, 94,125,225,241, 47,126,241,137,199, 31,183,175, 82,230,251, 85,155,160,195,195,195,135, 31,121,228, + 77,111,122, 75,154, 38,210, 19, 75, 94,201,117, 37,176,158, 71,184, 84,120,139,145, 76,134, 1,226,141,236,189,209, 76,197,249, +194,152, 55,197, 8, 1, 16, 17, 61,247,220,179,255,227,143,254,232, 11, 95,120,108,228, 55,255, 95,153,160,201,100,114,225,194, +133, 55,191,249, 45, 15, 60,240, 70,210,138,144, 68,120, 75, 64,228, 14,112, 37,222, 81,104, 16,207,165,144, 71,111,111,227,208, +223,254,115,187,106,206, 7, 71,253, 76, 13, 92, 1,162,147,147,147, 79,253,201, 31,127,225, 11, 95, 56, 58, 58,250, 91,153,160, +195,195,195,203,151, 47,223,119,223,125,135, 23, 46,132,194, 37,145,237, 73,145,151,247,154,112,172,144,182,161,249, 45,180,119, +156,254,191,141,214,127, 71, 50,192, 87, 58,137,129,207,133, 68,138, 0,240,185,103,159,249,204,103,254,236,179,159,253,108,215, +117,175,206, 4,125,248,195, 31,110,218,110, 32,114,159,243,211,229,149,249,147, 91, 2,131,120,251,201, 59,124,236, 28,109,227, +101, 68,233, 28,117, 97,188, 13,251,221, 55, 84, 86, 50,243,106,181, 60, 57, 61,251,223,127,245,151,159,254,244,167,255,134, 85, + 61,186,170, 27, 25, 51,221, 95, 82, 94,110,211, 60, 99,154,204,246,188,140, 78,222, 46, 74,219,155,240, 54, 94,203, 80,162,113, +142,201,241,149, 68, 12,132,235,174, 89,157,157, 44, 22, 39, 62,168,126,224,222,139, 95,119,255,247,234, 52,251,147, 63,254,212, +227,143, 63, 46,127,173,153,210,129, 14,117,174,180,228, 78,215,146,115, 26, 75, 2,167,105,196,168, 64,188,253,115, 34, 91, 25, + 73, 1,233,115, 94, 24,227,184,225, 19,232, 99, 68,134, 8,168,123,108, 49, 64,113,194, 34, 74, 41, 36,197, 44,130,200,236, 92, +215, 89,182, 93,211,216,174,181, 93, 71, 58, 17, 52,220,109,216,118,164,140, 74, 10, 52,233,123,223,247,143,255,249,254,222, 99, +143, 61,246,223,254,235,127,249,106,245,148,150,113,115,130,151,152, 99,121,153,157, 37,183,189, 27,159,148, 59,158,237,147,185, + 30,156, 16, 22,113, 44,206,217,205,226,184,173, 54,105, 57, 69,101, 60,192,224,186, 6, 69,218,166, 74,242, 28,128,144, 20, 32, +105,237,215, 85, 66, 90,132, 72,152, 65,165,164, 51, 16, 1,219, 8, 16, 91, 43,174,147,174,106, 72,219,172,152, 21,217,131, 15, + 62,120,249,242,229,197, 98,249, 31,127,255, 63, 60,241,196,227,175, 88,130, 2, 88, 41,227,135,188,237,169,229,118, 7, 39, 20, + 53,248, 42, 2, 20,128,136, 14, 98,252,237,208, 50, 97,244, 21,159,115, 65,116,206,181, 93, 87,183,157,101, 16, 82,138, 72,156, +165,100,162, 84,238, 72,145,210, 74, 41, 79,202,178,205, 38,157,238, 42,147, 3, 41, 0, 17,215, 9,130,216, 86,108,203,206,234, +108, 10,148,196,142, 22,128,200,104, 82, 97, 39,198, 1, 10,144, 70, 36, 38, 93,183,173, 73, 51, 4, 40,139,252,251,191,255, 7, + 88,228,227, 31,255,183, 79, 62,241,196, 87,230, 84,189,237,209,183,141, 53,178,192, 8,197,130, 45, 70,193, 29,116,210,182,238, +218,202, 45,221, 65, 2, 61,230, 40,213,102,181, 56, 59, 57, 62,186,177,169, 54,174,221,156, 29, 93, 7,215, 18, 1, 2,183,213, +130,184,173, 22,183, 54,167, 55, 93,189, 17,215, 56,219,153,108,130,202, 40, 2, 69, 2, 98,133,173,171, 86,220, 90,159,237,228, +174, 49,138, 72, 41, 97,118,109, 13,206,138, 0,144,242,252, 50, 17,104, 54, 11,233,218,233,206, 94,146,164, 61,232,140, 8,111, +125,235, 91,191,233,155,190,249,198,141, 27,183,110,221,122,185, 9,122,244,209,183,221, 73, 9,203,157,125,226,237, 79, 14,234, + 86,134, 15,140, 13,122,248,125,128,222,164,169,214, 39, 55,158, 63, 57,186,214,108,206,132,109,146,102, 62,153, 67,136,236,156, +101,152,204,118,157,160, 78,203,114,182,139, 74,235,180, 48,105,142, 40,226,156, 82, 20,136,126, 34, 74,167, 42,205,149, 73,117, + 90,152,172,100,212,204, 44,206,186,174, 18,215, 2, 59,113, 22, 0,216, 57,173, 19, 83,204, 76, 86,228, 89,150,152,100,252, 96, +236,216, 24,243,240,195,143, 60,120,249,242, 83, 79, 62,121,123, 31,154, 48, 65,111,125,244, 81,129, 49,116, 36, 47,161,115,182, +126,213,147, 61,229, 21,248,227, 34,210, 89,187,169,171, 77,181,105, 89,148, 73, 76,146, 34, 42, 1,233,218, 78,233,164,152, 76, +235,213,217,241,139, 95,222, 44, 78,180, 34, 99, 18, 34,112,109,221,181, 21, 34, 25,157, 32, 8,219,186, 90,157,174,142,175,111, +206,142,148, 34,113,206,182, 13, 10,219,122,213,109,206,128, 45, 42, 35, 64, 72, 74,153,132,146, 92, 37,185,210,102,125,118,212, +172, 23,224,186,114, 50, 77,211, 92,182, 56,125, 1,163,156, 78,103,127,247,157,239,156,148,211, 47,126,241, 11,119, 80,179, 63, +248, 67, 63, 12,175, 48,116,136,121,219,219, 88,176,219, 54,223,119, 88, 9, 90, 7,133,121,189, 94,111,170, 13, 35, 10,131, 54, +137,210, 58, 36,200, 17, 80,196, 57,171, 16,210, 68, 31,221,120,145,148,153,206,246, 64,169,196, 24, 17,183, 60,185,177, 60, 57, + 46,202,217,254,133,139,190,118,155,148, 2, 1,207, 78,110,187,134,187,142,153,149, 54, 64, 10, 81,161,210,214,118, 93, 91,199, + 28, 28, 40,133, 10,209,104,189,187,187,159,101,105,160,144,244,220,207,193,217, 12,255,252,246,111,255,230,181,107,215,206, 17, +188, 30,121,165,193, 72,156,157,184,165, 60,241, 43,206,215,168, 42,183, 39, 27,217,182, 61, 57,186,126,116,227,133,182,109,149, + 86, 70, 97,187, 89,137,235,186,205,226,228,250,213,179,155,215,184, 93,119,213, 82,108,187, 89, 45, 64,216,243, 33, 66,150, 71, + 32,205,203,114,182, 91,148, 37, 17,185,174, 19,215, 85,171, 53,136,232, 36, 19, 82, 72,154,148,209, 38, 1,149, 8, 40,118,206, +182, 53,187,142,132,129, 27,224,214, 85, 75,232, 26, 0, 72,178,108, 82, 78, 34,187, 6,198, 44, 77,217,182,175,239,120,251, 55, +229, 69,225,155,234, 12, 12,184,151, 50,237,184,197, 16, 28, 84,139,192,168, 4,226,252,246,234,221, 29, 96,230,186,109, 29, 80, + 54,217, 73,211, 18,145, 58,118,202,164,198, 36, 74,161, 48,207,118,118,147,188, 40,167, 59, 38,159, 20,229, 84,167, 41,146, 74, +140, 89,156,158, 56,219, 33,170,208, 65, 75, 64,105,205, 34,214,113,146,102, 44, 14, 64,148, 82, 90, 37, 68,218, 7,104,128,128, + 4,174,173,155,245, 9,145,212,109,203,140, 58, 45, 4, 21,160,158,205,119,210, 36, 29,101, 46, 96, 59,155, 25, 41,118, 34, 0, +112,239,235,238,125,221,235,238,125,234,169, 39, 61, 39, 93, 93,185,242,240, 29,200,138, 35, 90,112, 40, 76,236, 65,127,193,200, +197,149,144, 83,198,120,170, 79,156,138,136,115,167, 71, 55, 94,124,254,105,219, 86,222,211, 85, 90,105, 98,169,150,205,242,120, +179, 94,231,147, 25,233, 12, 76,226, 0, 17,164, 89, 47, 79,142,110,214, 85,173,180,153,206,118, 77, 62, 73,138,137, 50,185, 78, + 50, 50,153, 8,145, 73, 77, 86, 32,105,147,149, 38,201, 69, 64,216,249, 76,133,117,157,184,214,103,138,242,114,138, 42,205,242, + 18, 85, 34,140,164,212,108, 54,157, 76,102,125,197, 87, 63, 70,140, 85, 96, 16, 19, 40, 24,211, 35, 7, 7, 7,111,122,211,155, + 30,123,236,177,186,174, 61,187,107,107, 55,201,150,142, 25,106, 39, 49, 54, 64,232,117, 13,202, 64, 62,192, 81,213,140,136,108, + 54,171,166,109,179,114, 71,101, 37,160, 78,178, 2, 72, 51,165,186,152,171,180, 36, 69, 93,211, 16,130, 66,114,214, 50,187,188, +156,148,229,196,104,237,243, 95, 74, 97,181, 60,169,214, 75, 95, 2, 32, 32, 64,200,206, 17,130,239, 84,194,194, 8, 98,173,107, + 59,235,237,118, 83, 85,109,179, 73,147, 76,233,212, 10,116, 93,109,109, 53,155, 76,231,211,249, 64,105,216,182,214,231,216,235, +113,154, 80, 68,242, 60,127,251, 59,222,241,191, 62,251, 89,252,190,239,251,190,109,203,222,187,123, 91, 26, 5,135,192, 34, 78, + 99,152, 20, 31, 19,245, 43,128, 0, 96,157, 93,174,150,214, 58,173, 77, 85,109,108,231,242, 98,138,198, 88,238,216,113,154, 36, +138,148, 0, 24, 69, 8,220,117, 13,145, 98,118,109,219, 16,169, 60, 43, 72, 1,219,206,152,212,218,174,174, 42,102,152,204,102, +105, 86, 8, 64,211, 52, 74, 39, 74,107, 4,113,182, 21, 97, 68,173,180,102,118,245,102,221,213,107, 66,112,206, 42,109,146, 36, +157, 78,231,147,201,132, 72,221, 1,169,243,129, 46,156,195, 5,112,172,182, 73,145, 56,209,177, 7,208, 64,222,140,115, 17,203, + 25,125,110, 63,248, 32,192,158, 16, 37, 8,194,236, 93,177,200,107,241,132, 10,102,174,171,170,174, 42, 0,215,110,206,148, 54, +179, 89,153, 24,186,121,243,121, 91, 87, 70,105, 53,153, 67,154, 17,208,170,169,150,139, 83,113,174,156, 76,178, 60, 83, 68,206, +113,219,214, 70,107, 66, 58,186,113, 77, 27, 51,157,239,131,210,168,244,166,218, 8,187, 52, 47, 5,168,107, 91,163,254,188,140, + 59, 0, 0, 9,135, 73, 68, 65, 84, 72, 41, 67,132,206, 89,215,214,136, 56,153, 76,108, 94,212,155,101,187, 90, 20,185,217,219, +191,203, 36, 9,140, 58,131,156,139, 4,135, 96,103, 92, 13,234,217, 63, 62, 5, 41, 64,138,212, 67, 15, 61,180,149, 78, 28,167, +244, 96, 32,254,143,227, 43,220, 6, 69, 68, 36, 76, 39, 8, 0,116,109,179, 60, 59, 97,182,128,154, 76, 78, 58,105, 59,219, 52, + 86, 39,185,201, 38, 73, 49, 5, 50,190, 65,151,214,102,111,111,111, 58,157, 42, 34,199,194,142, 87,167,199, 77,181, 2, 4,165, +144, 8, 25,176,110, 26, 2, 97,219,182,245,134, 67,212,238,196, 23, 17, 19, 89,219, 54,109,235, 68,144,200, 89, 91, 87,155, 68, +235,195,187, 47,206,230,187,164,244,136,249, 61, 40,159,241,214,146, 49,105,224, 28,198, 19, 95,233, 80,254,217, 27,166,144, 30, +246,125, 23, 70, 26,199,151,146, 3, 0,123, 98,157,196,106,190,192,243,241, 81,214, 64,224,237,186,174, 91,119, 93,103,242, 12, + 73, 37, 38,177,117,211, 86,235,166,110,116,154, 37, 89, 46, 72, 58,201,186,206, 25,163,218,166,181,205,198,182,117,150,102, 64, +186,235, 58,109, 18,165, 76,170, 89, 43, 58, 61,122, 49,201,138, 52, 45,156,237,170,174, 33,165, 9,196, 57, 81, 73,154,229, 19, +157,228,158,242, 92,164,217,206,108,234, 35, 56,145,161, 91, 1, 32,222,201,209,195, 65,231, 12,202, 36,168, 92, 79,254, 2, 68, + 38,208, 3,205, 5,163,123, 28, 42,146,165,199,144,197,107,227,129,175, 7, 61,153, 64,122,190,101,240,133, 68, 4,211,114, 55, + 41, 69,129,235,234, 53, 59,167,146,156,129,116, 62, 69,157,154,100,157,100,153, 74, 50, 69, 72,164,186,166, 58, 59, 90,230,229, +204,148,179,116, 58,191,245,226, 85, 96,153,238,204,108, 83,119, 2, 64, 36, 32,229,108, 87, 68, 28, 48, 0,164,132, 4,150, 89, +140, 81,206,182,208,213,121, 81, 36,121,162,136,124,226, 68,130,107, 51, 82,137,242,149,220,152,209,137, 30,136,241,211, 68,128, + 94,130,192, 55,145, 11,157, 7, 66,231, 3,216, 10,191,122, 1, 12, 84,178, 94, 86,195,228,132, 31,194,214,117,237,102,109, 37, +116, 24, 75,146, 76, 89, 97,177,216,214,174,107,192,164,181,149,110,189,200,243, 66,167, 36,148,151,187,101,145,232,102,179,102, + 43, 23,239,189, 95,235,196, 24, 67, 68,206, 89, 97,231,218,134, 81,210,188,180, 86,140,209,138, 80, 17,129,128, 82,164,148, 38, + 82,190,200,150, 69, 80,220, 24,184,139,198, 37,108,129, 97,165,111,255,207, 39,234,123,162, 32,198, 83,136,194, 78,131,199,228, +195,188, 97,223, 27, 46,114,186, 25,197,231,252,123, 74, 44,160,103,231,142, 64,196,168,176,144, 5,216,185,186,109, 16, 21, 16, +137,237, 44, 55,152,164,105,158, 16, 80,154, 36,206, 57, 97,135,236,144, 16,216, 1, 72,221,116, 34, 19, 76, 74, 66,178,128,182, +237,206, 86, 43, 69, 42,207,114, 34,104,133,156,117, 66, 46,207, 82,163,148, 86,138,130, 54,237,233,175, 99,221,123, 71,217, 24, + 76,250, 29,241,171, 33, 60,232,105,148, 35,246,145, 14,234,220,211,113,134,187,112, 80,199,177,153, 20, 32,134,246, 26, 91,128, + 96, 60,211, 67,205, 34, 68,104, 12, 57,219,137,101,148, 22, 64,111,170,198,193,196,164, 57, 41, 3,200,182,173, 69, 37,157,181, + 30, 63,214,218, 32,184,102,181,170,171, 77, 49,153,146, 54, 10,193,214, 85,195, 93, 94, 22,211, 34, 79,140,241,101,132,163, 39, +237,179, 79,183,251,241,210, 23,193,244,116,209,208,135, 35, 4,137,225,239, 86,246,106,216, 6,163, 13, 39, 2, 74,105, 96,175, +118, 49,162, 94,140, 0, 18,168,202,177,128, 28,165,167,194,202, 0,157, 6,158, 92, 79,138, 25,246,157,115,206, 58, 36,165,147, + 68, 19, 37,169, 1,165, 1,124, 95, 49,204,139, 73,193, 25,138, 93,173,150,202,164, 42,205, 69, 84,146,235, 36,159,176,235, 92, + 91, 23, 69,185,119,120,183,214,122, 48,189, 97, 97,163, 5,142, 70,249,188,233, 6, 26,240, 74, 12,138,130, 8, 34, 99, 42,118, +158, 12,100,206, 96,106, 2, 21,208,183, 3,232,167,220, 11,145,115,186,215,106,131, 1, 60,111,218,163, 77, 24, 2,187, 81,151, +198,190,212, 48, 4, 30,168,180, 54, 89,233,120, 67,232, 93,234,141,210, 38,201, 75, 4, 84, 74,186,186,105,153, 77, 86, 40,157, +152,201, 1, 8,136,179, 72, 34,136,154,112, 90,204,180,214, 74,169, 16, 88, 6,170,119, 40,146,240,102,102,204,139,234,189, 28, + 12,155,156,125,149, 71, 79, 59,130, 64, 90, 12,229,146, 94,129, 6,160, 23,209,199, 72,189, 59,196,226,233,203, 50,110,245,169, + 57,170, 93,255, 1,217, 2,199,198,164,169,126,204,241, 76,188,109, 31,217, 96,176,149, 4,130,141,115, 30,155, 65, 45,204,221, +102,113,130, 74,171, 52, 55, 73,110,210,148,144,108,219,214,155,101,211, 84, 89, 94,206,102,179, 60,203,140, 86,136,212, 11, 73, + 31,249, 96, 44, 77, 24,181,112,243, 55,242, 19, 24,206,199,137, 25, 7, 76,145, 80, 28,121,214, 97, 42,112, 52,183,183,103,138, +113,176, 67, 2,160,131, 59,192,200, 56,178,142, 97, 54,199,223,243,253,248,198, 86, 94, 24, 4,207,165, 79, 65, 0, 32, 73, 76, +166,113,117,122, 67,216,166, 89, 73,105,161,211,130,148, 22,128,214,182, 82,173,217,118,174,107, 12,194,193,238, 94, 49,153,107, +147, 14, 34, 19,122,155, 68, 99,212,219,220,248, 38, 76,136, 47,112,195,158,220,134, 81, 19,134,112,177,151, 36, 4, 96,223,217, + 68,144,251,217, 12,113, 83,228,190,191, 68, 58, 29, 1,116,204, 44,111, 43,119,137, 65,252,224,221,244, 43,232,201,203,129, 8, + 7, 61,161, 94,182,160, 3,113,174,107,156, 49, 6,201,160,179, 70,153,182, 89,215,117,149, 26,173, 4,148, 49,147,131, 75,218, +164, 90,155, 88, 39,219,163, 64, 61,126,201, 18,114,130, 61, 76,225,243,243,227,149,242, 69, 10,177, 29, 16,196, 88, 1, 3,231, + 54, 6,137,190,240,194,251,190, 40,136,145,103,140,200,224,139, 67,122,148, 6,251,170, 39, 4, 64,212,209,211,139, 78, 2,136, +111,164,137, 67,189,205, 72, 78, 96, 40,130,233,215,188, 31,122,239,133,104, 99,166,187, 23,204,100,175,107, 27, 97,235, 58, 91, + 89,167,117, 54,223,155,117, 93,173,149, 46,203,137, 49, 73,108,148, 45,177, 5,140,231,192, 6,138,127,124, 78,241, 12,196,190, +173, 80,188, 87, 44,128, 24,143, 10, 65,188, 92, 5, 63,206, 91, 29,223,134, 71,250,226,206, 33,210, 14,133,159, 56, 66,217,161, + 47,147, 0, 95,145, 48,134,156,251,109,133,145,231,139, 35,215, 98,104, 4, 51,170,164, 24,229, 70, 97,160,224,250,181,234, 42, +187, 89, 57, 1,157,102,218,228,214,113,235,120, 50,153,167,209,108,247, 90,119,104,130, 18,219,183,244,251,171,111, 90,216, 55, + 95,137, 6, 1, 99, 4,208,167, 10, 4, 96,224,248,142, 66,130, 32, 56, 48,110,120,194,192, 56,210, 75, 24, 67, 43,236,123,116, +133, 65,232, 45,186,109,236, 68, 53,126,139,129,111, 26,186,192,197, 38,151,125, 89, 64,124,200,158,240,234,175,171, 85,146,152, +122,205,174,107,144, 80, 92,151,166,153, 23, 28,140,205,147, 2,107,184,135, 66, 99,243, 30, 24,186,124,110,209,232, 7,230,180, +239,112,131,132, 65, 49, 98,111,172, 98, 15, 36,159, 83, 28, 18,180, 28,212, 87,236, 3,134,136,222,193,193,224,225,245, 12, 28, +217, 78, 17,106,232, 63,215, 7,171,209,193, 25,136,207,193,117, 21,230, 33,191, 19, 23,153,199, 86,177, 87,173,136,148,102,229, +222, 97,230,219, 42,248,254,204, 35, 29,239, 5, 48, 54, 45,151,216,115, 10, 71,181, 97, 35, 25,238,237,189,132, 18, 39, 97, 65, + 12, 13,225,183,248,201,177, 39, 43, 68,138, 10, 96,159,219,142, 81, 85, 40, 88,198,232, 91,203, 72,117,247, 16,105,172, 39,211, + 28,187,243, 2,142,158, 22, 71,113,223,104,243, 96,143,140,141, 38, 6,241, 54,132, 23, 67,217,135, 82, 74,129, 26, 49, 27,162, + 83, 16,149,216,232, 30,231,103,100, 52,149, 48, 52, 56, 11,139, 54,158,142, 94, 2,101,104,208, 22,158,206, 43,105,175,133,123, + 80, 2, 68,124,245, 15, 70, 55,192,119,251, 69, 96, 16, 26,133,103,136, 48, 42,115, 11,253, 66, 99, 41, 11,135, 50, 29,232,197, +164,215,202,204,125,113,196,136,100,222, 75, 16,110,105,244,113,237,192, 88,120,195, 57, 24,214, 98,224,131, 15, 21, 99,209, 34, +200, 80, 59, 38, 61,209,127,168, 72, 10,196,247, 62, 87, 16, 11, 71, 66,155,134, 8,170, 75, 15,184, 6,119, 17, 6, 22,123,168, +254, 60,215,200, 49,224, 65, 67,103,176,222,110,202, 16,189,241,249,174, 80,189, 18,197,209, 3,200,237, 43,191,157, 52, 8,174, + 64,168, 78, 27, 41,120,137,122,168,215,101,241, 51, 65, 96,125,197,197, 86, 49,164,112,212, 64,253,170,245,222, 76,240,240, 56, +182, 32,196,128, 86, 69,198, 61, 6,123, 77,219,140,127, 64,244, 53, 89,189,153,247,134, 76,247,245,101, 67, 89, 72, 12,150,251, +226, 35,127,106, 91, 59, 68,205, 52,242,175,199, 36,161,109, 22,236,214,132,245,142,249, 72,238,134, 98,163,222,219, 10,219,203, +183, 94, 27, 57, 88, 28,153,143, 35, 69,217, 35, 15, 67,197, 46,142,122, 54, 3, 12, 32, 96, 40,189,100,255,191, 53, 24, 71,166, +226, 91,145,198,217, 9,177, 13,241, 48,139, 65,140,163,134, 25, 87,146,240, 72, 70,250, 18,160,161,216,101, 60, 19,219, 60,165, +190, 13, 56,159,251,204, 56, 61, 21,234,155,134, 65, 96, 95, 57,129,227, 26,205,248, 41,225, 88,190, 35, 67,169, 75,208,189, 35, +252,120, 4,158,142,234,254,188,146, 71,142,113,103,136,219,250, 50,253,173,234, 25, 0,138,213, 81, 28,203, 14,101, 84,104, 51, +174,176,129,109,237,112,238,173,140,171,112,198,189, 82,110,207,211,143, 11, 2,251,226,170,168,101,101,180, 5, 71, 69,107, 65, + 11, 70, 48,189,247,172,183, 75, 91,125,165, 17, 71, 91, 60,170,110,145, 30,232, 9, 39, 25,123,253, 19,250,180,198,202, 40, 24, + 87,169,137,104,137, 10, 15,135, 58,175, 40, 29,163, 56, 24,113,136,197, 70,126,208, 86,233, 15,222,198, 82, 28,207,203,118,144, + 12, 35,103,167,183,243,184,101,200,122, 23, 39,238,166,160, 12,194,239, 66,119,119,236, 75,234, 6, 93,232,223,250,229,245, 93, +255,130,253,226, 33, 92, 10, 22, 43, 68,113,161,123, 43, 83, 56,137, 61,102,166,135,187,198, 10,229,176, 46, 50,228, 67,194,253, +227,226,142,253,148,115,204,193,219, 59,252,157,155,175,177, 38, 26,235,188, 81,230, 31,199,236,162, 88,164, 43,227,100,139,247, +212,183,116,144,247, 99, 40, 10, 86,136,199,125,160, 65, 3, 76, 36, 33,199, 9, 91,159,137,238,143, 87, 76,163,240, 24, 35,208, +221, 87, 58,134, 90, 56, 95, 84,119,238, 9,153,101, 84,164,185,165,149,207, 25,251,115,108,249,241, 87,198,223,138,243,219,211, + 15,183,169,142,193,182,247, 73,115,255,161,254, 90,128,195,151,130,223,209, 83, 27, 37, 4, 11,125,113,242,144,233,193,219,250, +142,247,150,127,212,214, 37,238, 52,230,255, 3,181,198,231,135,110, 84,158,236, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/darken.png.c b/source/blender/editors/datafiles/darken.png.c new file mode 100644 index 00000000000..9ba032f1f5e --- /dev/null +++ b/source/blender/editors/datafiles/darken.png.c @@ -0,0 +1,308 @@ +/* DataToC output of file <darken_png> */ + +int datatoc_darken_png_size= 9653; +char datatoc_darken_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 96, 0, + 0, 0, 96, 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, 11,252, 97, 5, 0, 0, 0, 6, + 98, 75, 71, 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, + 40,155,120, 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, 21, 0, 4, 16,211, 77, 59, 52, 0, 0, 32, 0, 73, 68, 65, 84,120,218, +237,124,105,172,173,231, 85,222,243,172,247,221,195,153,124, 7,219,215,118,102, 79, 81,176, 33,128, 27,135, 64,210,150,138,164, + 84,161, 81, 33,170, 65, 4,149, 68, 12, 85,255,132, 50, 39,100, 98, 8, 21,165,252, 97,232, 64, 85,130, 66, 5, 84, 16,168,224, + 79, 65, 85, 75,160,133, 86, 64, 32, 17, 83, 28,219, 9,137, 9,142,237,248,222,123,198, 61,126,239,122,250,227, 29,190,111,159, +115,226, 36, 37, 84, 69,202,190, 71,231,158,179,207,222,223,126,191,245,174,119, 13,207,122,214, 2, 62,221,199,173,183,221,118, +251,237,119,156,125,158, 0,222,240,198, 55,165,212, 17, 48, 51,154,197, 24, 71, 49,198,209,232,205,111,250,158,252,162,240, 45, +255,252, 91,215,235, 85, 74,157,187, 39,119,247,116,120,172,131, 35, 61,249,148,167,201, 43,162, 63,120,116,116, 20, 87,171, 37, + 4, 0, 22,204,104,191,253, 62,174,214,136, 22,128,100,212,235,190,225,159,253,200, 15,191, 61, 94,221,159,255,201, 35,179,163, +121, 34,237,202,165,109, 79,219,209, 8, 68, 0, 73, 14, 79,111,126,243, 91,194,245,238, 57,203,117,146, 4,233,120,182, 54, 91, +196, 16, 37, 19,252,249,207, 77, 23,247, 36, 41,236, 92,190,139, 0, 4, 1,144,175, 59,239,210, 98,107,138,231, 63,215,158,121, + 69,130, 40, 68,200, 93, 34, 9, 17,132, 96,203,149,158,218, 63, 24,199,213,141, 23,110, 24, 67, 16,194,206,197, 59, 73, 1, 34, + 4, 16, 14, 66, 32,143, 79,210, 35, 31,157,119, 9, 55, 93, 28,241,230, 59,190,140, 8, 48, 80,132, 25, 64, 18, 68, 96, 8,164, +145, 6,139, 81, 46, 49, 33,209,140,240, 44, 93, 3, 60,203, 69,100,128,127, 74,219, 21,218, 79, 91, 91,219,207,126,246,179,205, + 56,159,207, 79,239,221,125,247,221,247,101, 47,127,133, 36, 35,105, 22, 66,200, 27,247,235,191,246,107,191,243, 59,191, 93,174, +244,192, 3, 95,221,117,107, 79,201,221,221,211,114,233, 7, 71,186,126,224,138,207,223,186,248,138,199,255,226,191, 3,136,171, +213, 10, 0,141,102,246,225,199,248,225,199,220, 64, 50, 0,171,164,244, 3,111,255,193,183,189,245, 45,252,210, 47,255,186, 71, + 62,186, 32, 57,138, 97,119,235,162, 52, 34, 39,192, 4,192, 77,151,241,210,251,226,100, 58, 13,203,120, 59, 0,119,121,210, 98, + 53,219,158, 38, 96,212,185, 70,163,244, 69, 47,148, 65, 46, 69,135,155, 59, 96,130, 43,225,234,193,236,226,158,223,116,225,134, + 23,220, 62, 82, 10, 43,186,128, 40,119,129,160, 3,132, 4,232,250,225,124, 54, 95,221,118,243,165, 24,199, 82,222,187,203,119, + 0, 18, 64, 1,148, 0, 0,201,245,209,199, 87, 31,125,114,121,203,229,241,104, 68,222,124,251,203,105, 6, 26, 81,247,205, 8, + 6, 34,208, 66,176, 0,139,209,225, 38, 49,235,147, 17, 34, 65,154, 1,137,128, 64,147,227, 51,245,224,240,151,111,253,182,111, +223,217,222, 81, 86, 81,130, 32,141, 70,179, 96, 36,131,133, 31,255,241, 31,125,226,137, 39,206,191,208,119,126,215,119, 39, 79, + 16,224,202,151, 37, 64, 35, 97, 52, 2,164, 49, 88,190,158, 25, 45,132, 96,102,143, 95,141,255,230, 71,223, 56,188, 80,156,205, +102,245, 52, 33,139,169, 61, 64, 60,113,149, 31,251,184, 29, 29, 91,231, 33,121, 0, 28, 16,128,104,221,189, 47,249,129, 7, 94, + 25,127,238,103,223,249,240, 67, 15, 1,136,235,213, 10,128, 75,203,149,142,102,157,139, 59, 91,225,194,110,188,118, 96, 15, 63, +202,117,199, 96, 6, 4,130,209, 12, 32,224, 0, 58, 79,227,192,180,238, 94,243,154,175, 11, 33,188,237,173,111,225,243, 94,248, +234,228, 74, 41,223, 20, 1,192, 72, 32, 70,155,140,195, 36, 78,129, 41, 16,235,151, 1,236, 28, 49,232,254,207,227, 77,151, 44, +152,153, 89, 24,197,184, 92,116,160, 64, 10, 52, 9,102,112,184,232,158,214,171,116, 98,235,173,201,201,214,120,226,152, 8,147, + 96,113,111,135, 55, 95,228,149,155,184,187,197,110,109,110,102,102,201, 61, 10, 9, 18,220, 68,137, 6,239, 0, 3,179, 46,138, +142,147, 25,231,139, 68,206,119,182,226,149,155,167,207,185,117, 58,157,132, 81,176,117,103,117, 3,104,238, 97,231,210, 29,112, +102,133,165,188, 72,193,179, 90,100,115, 33, 8, 46,173, 58,191,118,176,250,243,199,230, 31,125,114,185,238,124,123,106,132, 0, +229, 7,111,190,243, 21, 0,153,213,159, 32, 13,217,136,129, 16, 96, 32, 32,210, 64,193,104, 6,129, 36, 45,100,129,146,182,187, + 29, 47, 95,156, 68,247,148, 85, 15, 0, 96,242,132,252,226,172,172, 78,145,148, 68,130, 64, 18,204, 0,200, 83, 86, 54, 23,142, +231,221,201,194,163,228, 89,147, 65,131, 28,132,156,198,124, 75,128, 40,163, 9,176,108, 24, 13, 74,128, 17, 38, 56,242,135, 56, +100,194,255,119, 15,158,251,236,165, 75,151, 46, 94,188, 4, 96,185, 92,236,239,239,207,102,179, 79,227, 66,119,221,125,247, 3, + 15,124, 53, 89, 12, 83,217, 18, 90, 86,222, 16,194,254,254,193,143,252,171,127,249,116, 23,122,227,247,188,201,147, 43,235, 96, + 57,253,249,224,147, 86, 30, 33, 95,204, 66, 28,197, 55,124,247,119,157,115,161,111,255,142,239,132,242,191,188, 75, 36,105,229, +240,131, 22, 12,180,144,175, 24,130, 25,105,215, 14,226,227,143,127,228, 23,126,254, 39, 55,204, 72,215,117, 42,102, 88,205,140, +136,117, 69,174, 69,178,213,202, 28,144,176, 94,107,255, 72,143,126, 12,169,123,206,107, 94,247,195, 63,255,206, 55,108, 92, 8, +234,181, 32, 47,134,116,130, 73,124,242, 42, 31,123, 82,199,199, 88,151,155,118, 64,209,148,228,139,149,191,253, 7,127,232,173, +111, 41,193,139, 85,215,231,238,238,114,185,228,146,251,241,204, 31,121,212, 31,250,176, 95, 63,242,181, 20, 12,209, 20, 13,209, + 0,184, 49,165,212,173, 87,221, 15,253,208, 15,151, 11,165,148,146,167,249, 98,253,248, 83,243,191,124, 98,113,117,127,177, 88, +118, 71, 39,233,201,107,233, 99, 79,166,117,242,104, 30,205,137,118,251,234,220, 13, 41,134, 4,166,213,122,245,250,111,249, 22, + 0,113,255,120,245,240,163,139,171,251,107, 85,127, 20, 35,247,182,227, 40, 76,128,113,180, 80,204, 0,132,254, 90,216,217,193, +214,196, 61, 1,210, 77, 55,222, 68,144,207,123,225,171,215,157, 36,144,204,231,158, 48, 51,196,145, 77, 70, 97, 20,182, 6, 22, + 50, 0,214, 57,204,240,252,231,226, 25, 87,184,183, 83, 84,108, 60,153,196,229, 42,101, 11, 82,148,136, 16, 82, 74,236,220,187, +181,111, 79,211,120,212, 1, 59, 0, 58, 23, 96,227,136,103,222,138,155, 46,113, 50, 98, 81, 62,114,181, 90, 69, 72,162,138,245, + 41,138, 78,192, 9,118,201,143,231,218,198, 98, 58, 66,210, 54, 56,186,176, 99, 55, 93,228,205,151, 56, 25, 81,160, 39,192,128, +174,131, 16, 93,137,121, 29, 34, 76, 46, 90, 89, 32, 32,185,115, 54, 83, 55,158,111, 79,177,183, 61,189,229,198,209, 77, 23, 56, +153,144, 48, 79, 20, 85,244, 24, 93,204, 65,129, 64, 80, 16, 40,136, 4, 92,162, 1,144, 57,177, 92,123,215,205, 46,236,248,238, +214,150, 89,148,155, 19,114, 11, 38,247, 18,199,133,157, 27,239,146,132, 28, 71,138, 48, 21, 27, 90,207, 34, 5, 2,130, 14, 78, +210,201, 60,109, 77, 44,134,172,248,128,216, 14,126,216,185,116,103, 14, 69,170, 95, 19, 68,148, 5,139,162,202,179,128, 48, 95, +248,199, 15,214,171,181,143,162,197, 88,223,199,188,162,203,119,170,196,170,205,107,215,221, 3, 5, 89, 94, 96, 94, 54,216, 37, + 63, 56, 76, 79,236,119,251, 71,221,170,211,116,108, 49, 16, 36,175,220,241,247,193,236, 46,200,222,180, 80,160, 33,127, 35, 45, +199, 69, 37, 76, 4, 64, 88,182, 19, 33,132,221,237,120,249,194, 56, 10,142, 28, 66,203, 60,251, 19,229,117,185, 0,184,147,166, +108,228, 65,202,179,234, 10, 78, 25, 0,119, 63, 60, 78,199,179, 69, 68,137,224, 65,102,175,152,255, 35,149,223,139,236, 35, 36, +192,242,243,146, 8, 74, 38,203, 2, 48,213, 8, 19, 2, 37, 53, 1,131, 46,200,157,144, 68,200,229,128, 36,135,228, 16,232, 0, +232, 80, 49, 23,162, 96, 18, 32,185, 92, 16,228,238, 16, 28, 20,178, 7,207, 11, 40,203,168,139,247, 98, 6,178, 99, 37,234, 26, + 62,251,248,244,253,108,123,220,113,199,157,247,220,115,207,237,119,222,121,249,210,165,254, 89,169, 42, 63, 45,251, 10,163,209, +246,247,247, 31,122,232, 3,127,252,199,127,244,193, 15,126,240, 51,179,160,221,221,221, 7, 30,248,234,219,110,123,134,123, 86, + 5, 84, 11,205, 26,127, 19, 53,186,226,169, 72,154,213,141,101,231, 76, 3, 17, 71,163, 95,250,197, 95,124,207,123,126,255, 83, + 87, 14,190,234, 85,175,186,231,158,123,221, 37, 52,207,191,241,238,106, 38,216, 47,162,197,245,167,151,148, 19,142,126, 89,117, +161, 70,242,137,167,186, 95,248, 79,255,254,241,143,253,197, 39, 89,208,183,126,219,119,160,132,193,167,151,210, 44,211,224,223, +198,106,242, 50,187, 4,144, 93,199,108,119, 32, 2,230, 32,192,148, 40,241,232,132, 46, 62,254, 36,215, 93, 48, 67,140,252, 95, +255,237,251,214,235,197,185, 11,138,169, 91,215, 69,244, 73,205, 96, 53,212,198,130,250,205,243,132,131, 19,202,121,253,136,238, + 92, 44,233, 78, 23, 93,150,189, 70, 9,144,129,245,138, 2, 87, 43, 74, 14, 24,201,175,252,154,183,125,193, 61,225,167,223,241, + 83, 31,252,224,195,167, 23,212,165,132,115, 55, 56,103,151, 44,225, 95,149, 14, 9,173, 19, 79,102, 72,206, 39,175,193,157,135, + 39,148,184,238,232, 50,200, 0, 7,114,184,111, 53, 84, 96,205,145,232,114,137, 93,178,229,194,255,201,215,191,118, 50, 25,253, +228,191,251,183, 31,249,200, 71,134, 18,234, 6,167,167, 44,173,235,202,130, 64,196, 96, 32,162,145,129,158,232, 9,243, 21, 62, +118,149,158,112,237,128, 2,147,103,231,102,128, 12,158, 93, 68,187,100, 11, 95,178,204,114, 28, 40,121,151, 16, 96,235,149,190, +233,155,255,233,120, 52,126,195, 27, 74, 60, 26, 94,248,249, 95,232,174,117,231,171,206, 87, 43, 63, 89,250,124,158,174, 31,174, +143,102,221,225,113,119, 52, 75,203,149,207, 23,158,146,186, 78,199, 51,237, 31,249,193,177, 63,121, 13,243, 5, 58,135, 11,209, + 96, 44, 95,100, 94, 89,149,240,224,145, 4, 1,227,160, 56,210, 77, 23,116,243,229, 98,154, 37, 37, 79, 47,255,178, 87, 60,246, +216, 99, 79, 61,245, 84,220, 63, 92, 11,122,106,191, 59, 60,238, 22,107, 63,158,165,172,174, 57,182, 81,198,130,160, 96,164,113, +119, 59,142, 99, 20, 12, 62,202,177,114, 93,129, 13, 62, 94, 64,104, 59, 85,109, 22,114,244,182,183,139,233, 24,211, 9, 83,170, + 71, 82,238,110, 50,125,237,215,190,230,183,126,235,221,188,237,115,254, 81, 1,146,154,151,206,153,231,240,140,103, 32, 33, 63, + 35,210, 52, 10, 22, 71,156,142,182, 0, 2, 99, 32,212, 93,179,250,115, 47,170,206, 65, 96, 20, 0,226,238,231,225,210, 30,166, + 19, 78,167,180,108, 74,242,178,204,242,247,236,166, 1, 86,240, 65,222, 31,238,162, 82,121, 77, 37,202, 17, 93, 9, 11, 23, 59, +156,204,142,205,120,105,111, 4, 16,216, 6, 2, 16, 0,151,204, 65,169,100,158,211, 17, 64,222,254, 44, 76,199,184,176,199,173, + 9, 0,122,162,170,193,106,137, 41,165,136, 12,210,136, 37, 33, 22,100,174,178,101, 48, 87, 11,218,114, 88, 40, 9, 50,194, 5, + 64, 38,233,218,193,146,180,201,184, 11,198,209,104, 42,140, 37, 3,226, 56,242,242, 5,134,192,103,220,140, 16,184, 61,161, 5, + 17, 86,226, 67, 85,155,153,173, 89, 6,229,164, 88,163,142,252,145, 94,160,200,156,234,139, 53, 20,133,202,170,242,174,165,188, + 41,130,203, 41,130, 74,139,165,104,192,242,132,156,237,237,196, 43,151,198,227,113,184,253,182,137,153, 85, 35, 79,247,172,200, +200, 9,191,193,220, 82,182,117, 4, 40, 26, 21,182, 47,223, 13,213,136,164,102,229, 57, 62,205,203, 96,137, 87, 51, 28,218, 27, + 79, 85,124,162, 61,153,209, 11,185, 86, 43,191,118,184,222, 63, 90,239, 31,117, 31,191,182,156, 76,108,221,121, 52, 50,135, 91, + 37,186,173,113, 81,142, 70,179,235,130,194,238,229,187,192,154,119,246,230,162, 46,170, 61, 59,204, 39, 88, 17,142,154, 30,149, +112,181,230,192,130, 36,186,107, 54, 79,135,179,116,117,127,245,248, 83,171,229,202, 15, 78,214, 57,169,149, 96, 57, 79,105, 31, + 92,143, 84, 20, 82,198, 57,168, 26,195,202,209, 16, 36, 58,170,129, 46,122,141,154, 97,136, 50,229,216, 22, 57, 30,204,247, 15, +147, 64, 38,193,220, 69,226,100,238, 0, 23, 43,167,225,177,143,175, 98,228,246, 52,238,109,135,233, 56,220,120,113, 20,140,147, +113, 96, 5,116, 98,142, 95,243,245, 75, 40,159,131, 79, 43,155,145, 35,207, 28,103,247,254, 54,239,178, 4, 17,146,178,149,150, + 68,131,114, 52,109,146, 19,144,204,147,203,232, 43, 16, 88,175,215, 36,143,142,187,167,162,197,192, 71,159, 12,129,220,154, 4, + 51,219,221, 10, 22, 44,227,220, 34, 72, 39,233, 25, 29, 82,254, 15,148,171, 10, 73, 5,147, 44,184, 2,165,156,103,136, 37, 74, +150, 76, 44,113,178,201,221,138, 53, 44,232, 48,224, 2,146, 27,229, 41, 25, 86, 14, 16, 39,201,128,209, 40,144,156, 78, 66, 48, +139, 57,195,132, 92,160, 68,194, 41, 35, 51,164, 84, 19,146,124, 50,224, 61, 88,156,115, 57, 2,162,163,132,248,121,227,100,178, +188,119,150, 23,236, 52,147, 84,208, 52,185,178,205,206, 22,220,225,134,213, 42,209,108,181, 86,214, 33,169,174, 37,103,104,130, +247,246,190,207, 67, 85, 78, 94,134,216,170, 77, 39, 74,158,147,247, 45, 31, 35, 47, 55, 41,194,188,100, 29, 70,192,221,105,172, +103,217,106,242,151, 21, 87, 4,100,136,200,176,156, 81,112,193,232,206,230, 69, 32, 47, 32, 98, 49,166,168, 54,178, 92,171, 92, + 60, 67,121, 86,180, 61, 27,171, 2, 91,215,164,191, 92,105,152,199,186, 72,194, 32, 9, 78,152, 44,167,105, 46, 81,114, 65, 42, + 9, 84,118, 25, 89,200,197,202, 8, 46, 23, 50,102,163, 6,136,228,252, 94, 46, 2,114, 72,217,138,230, 63,102,187,153, 65, 33, +246,174,215,229, 53, 60, 45,241,142,202, 30,233,156, 8,241,179,143,207, 62, 62,211,153,107, 31,123,143,226,246,214,246,120, 60, +158, 78,183, 70,163, 17, 74,232,189, 94, 44,150,203,229,226,228,228, 36,229,170,199, 95,235,130, 70,163,209, 23,124,193, 23,190, +224,115, 62,231,185,207,121,110,136,181,226, 40,194,202, 57,203, 53,163, 28,238, 73,250,208,135, 62,244,254, 63,251,211, 63,248, +131, 63,200,197,194,207,228,130,190,226, 31,190,234,222,123,239, 29,197,145, 26,110, 60, 40,250,156,202, 28, 91,110, 10, 32,132, + 64,227,106,181,122,239, 31,254,225,175,254,234,175,252,149, 22, 20, 99,188,247,222,123, 95,249,202,175, 80,139, 93, 91,120, 52, + 72,233,135, 25,254,102,102,191,153,218,147,102,118,120,120,248,227, 63,246,163, 39, 39, 39,159,222,130, 46, 95,190,252,202, 87, +190,242, 25,207,120, 86,137,231,250,104,122,240,162, 97,208, 63,248,254, 9,215,148,163, 83, 32,196,240,228, 19, 79,252,204, 59, +223,121,237,218,181, 79,105, 65,175,127,253,235,183,182,118,170,249, 60,157,225,247,153,124,159, 68, 15,165, 84,242, 32,230, 56, + 21, 67,128, 97,184,153, 92,119,246,190,247,125,224, 87,254,243, 79,127,242,226,248,223,254, 59,127,215,147, 11, 74, 74,197,152, + 23,135,208,126, 41, 43,244,226, 73,202, 47,197,197,122,193,232, 42,112,164,190,162, 86, 92,137,195,177, 90,115, 60,189,233,165, + 47,251,242, 63,250,163,255,189, 94, 63,157,202,199,148, 18,234,167,250,185, 59, 90,183,166,208, 11,154,120, 28,142, 12, 48, 64, +240,174,203, 53, 18,144,158,113,116, 79, 16,124,177,228,114,173,217, 60,125,252,154, 25,117,223, 75,223,250,248, 95,188,251,145, +247,255,250, 39, 92,144,187, 15, 3,234,141, 99, 39,180,114,193,240,169,225,143, 2,146, 67, 82, 74, 6,194, 29, 36, 82,254,158, +224,142,197, 10,139,133,207, 23, 60, 62, 17, 96, 49,224,198, 91,191,244,239,190,236,174,119,252,135,127,125,254,130,228,222,203, + 27,155,249,120, 9,164, 74,102, 54, 92,149,160,217,156,203, 14,139,165,142,103,244,196,249, 82, 32, 82, 42, 25, 92, 14,228, 1, +117,201, 82,146,187, 89,217, 96, 37,183, 91,111,125,214,247,125,255,191,248,190,239,125,243,121, 91,230,142,243,145, 42, 52,189, +237, 99, 24,244,199,127,185,230,124,201,147, 57,175, 31,194, 29, 39, 51, 7,232,176,138, 12, 85,244,164, 20, 82,220, 72,130,235, + 68, 11, 72, 73,163, 17,191,255, 7,222,254,189,111,123,235,169,207, 52,149,194,212,211, 62,114,169,197,243,143,126,120,162,107, +135,186,118,160,171,215,117,120,164,197, 74,139, 85,201,147, 8, 25,221,168,193,151, 27, 65, 56,225,130, 3, 14,164,228,174, 36, + 51,123,227,247,188,233,204,130, 62,209,122, 90,161, 80,106,223, 33,200,113,120,172,235, 7,120,234,186,158,218,215,225,137, 22, + 75,173,214,114, 41,185,140, 48,178,162, 51,172, 95,110,236,177, 34, 73, 41,121,231,238,174,189,221,189,111,252,166,111,222, 88, +144, 15, 30, 41,165,206,211,114,149, 22,203,180, 88,118,243, 69,183, 88,166,213,218,187,117,202, 28,165,213, 74,171,181,207,151, + 62, 95, 42,185, 11,238, 46,192,115, 5, 1,167,117, 48,215,219,114, 25, 32,215,176, 60,152, 51,231,165,158,228,158, 60,221,254, +188,219, 95,244,162,251, 7, 74,221,107,143,214,157, 4,156,204,242,242, 33, 49, 6, 76, 38, 33, 26,119,183,225,142,131, 19, 36, +199,181, 3, 44,150,238, 66,114,146, 30,173, 66,119, 37, 25,245, 1, 62,212,107, 82, 54, 99,193, 16,205, 67, 64, 8,148, 32,135, + 27,190,234,213,175,254,179, 63,251,211, 92,117,182, 46,121,151,124,190, 74,243,133,159, 44,210,108,158,230,171,180, 88,248, 98, +233,139,165,207, 87,158,159, 63,158,249,108,238,243, 69, 90, 46,147,187, 75, 62,128,235,116, 10,189,171,223,253,212, 15, 6,196, +160, 16,138, 90,186,228,238,114,239,186,238,219,190,253, 59,138,132,142,231, 93,215,233, 35,143, 47,221,177,127,184,238,124, 96, + 16,171,223, 48, 34,152,133,128, 11,187, 19,137, 41,141, 37,146, 22,173,153, 7, 31, 64,156,234, 93,114,191, 56, 73,176,136, 27, +118, 49, 26,101, 93, 52,152, 59, 76,238,193,108, 50,153,220,127,255,139,127,255,247,127,207,214,107, 95,119,158,146, 82, 74, 73, +165,188,147, 85,212,179, 40,220, 83, 82,151,242,107, 60, 43, 83,166,135,213, 91,247, 65,109,214, 55,191, 82,251,153,116,193,163, +121,160, 36,149,226,179,187,220,147,187, 92, 95,249, 85, 95, 69, 50, 44,226,157, 79, 92, 91,157,204,211,124,233,217, 36,177,229, + 79, 53,175,202, 40, 69,114,172,214,105,177,234,136,117,210, 42,208,171, 34,115,243,251,240, 87,184,144, 4, 35,204,180, 53,197, + 93,207,193,133, 27,176, 61,105,196, 14, 54,147, 37,215, 13, 23,110,136,203,117,234, 75,137,185,242,230, 94,157,185,114,142, 8, +208, 41, 42,215,106, 1,185, 25,198, 33, 14, 36,145, 41, 66,195,237,243, 83, 43, 51,194, 32, 51, 4, 67, 73,251,138, 41,165,106, +186,120,255,253, 47,142,245,143,197, 49,177, 20, 21, 13, 40,217, 45, 74, 82, 92,205, 18,217, 37, 71, 34,176, 28, 69,142, 98, 32, + 70,100, 0,166, 85, 93,172,243,114,196, 8,134,128,177, 97,123,138, 43, 55, 34,142,184,179, 5, 51,203, 78,196,104, 18,232,144, + 41,184, 59, 45,165, 20, 11,214,211,131,122, 42,254,148,249,116,100, 52, 82, 64,221, 66,200,157, 36,150, 43, 95,173,185, 61,193, +116,146,111, 37, 23,188, 75, 69, 33,239,114,131, 8, 66,196,214, 20, 49, 40,219,201,108,215, 61, 95, 40, 7, 14,102,132,211, 25, + 75,218,155, 35, 11, 85, 24, 65, 62, 8,163,189,192,131,244,226,254,179,101, 35, 37,173, 58,144, 93, 8, 30,131, 0, 75,154,102, +100,152,178,237, 41, 71, 81,219, 91,220,217,210,116,156,101,131, 22, 82,104,224,170,105,146,123, 46,208,198, 76, 70, 99, 21, 81, + 70, 50,188,226,211,185, 22,156,233, 32,133, 93,228, 34,152,183, 20,228,186, 83,151, 82,176, 52, 25,249,104, 20,132, 8,134,140, +218, 76,198, 28,141,120, 97,215, 47,236, 90,140,154,142,171,251, 16, 76, 21,196, 46,138,175,194,133,202, 40,108, 70, 21, 88,128, + 49,177, 44,167,172, 44,151,144, 51, 94,194, 26, 32,121, 49,203,185,176, 76, 23,187,228, 32,198,163, 53,208,109,111, 41,152,221, +176,109,147, 73,216,154, 32, 4,183, 10,231,100,112,197, 81,111, 48, 35,118,238, 32,105,230,238, 49,195, 20,153, 53, 38,178, 88, +255, 26,175, 54,209,121,101, 2,208,189, 71,253, 61,215, 30,228,194,170,195, 58,249, 98, 53, 51,242,194,174,198, 35,187,124, 97, +178,183,203,130,189,182, 11,171, 66, 77, 58, 21, 98,149,192, 55,170,128,135,108, 74,236, 25,159,102,133,126, 91,165, 2, 14,192, + 43, 0, 90,180,205, 43,182,102,165, 26,230,192,170, 75,144,230,139,206, 76,163,104, 49, 24, 77, 33, 88, 37, 39,108,172,195, 90, +208,228, 46, 32,236, 92,186,171, 20, 70, 88, 45, 34, 42,156,154,113,255, 90, 91, 40,230,170,252,175, 18, 17, 90, 15,207,182, 80, +241,100,158, 14, 78,186,249,210,175, 31,118, 14,140, 2, 37,196, 56,200,243,250,104,184,193,246, 69,232, 49,255,224,202,192, 27, + 27,148,199,146, 90,120, 93, 19,213,155, 86,193,201, 44, 75,183, 28,125, 49,151, 1,220, 97,249, 72,162,115,133,228,235,181,175, + 58,151, 16, 3, 72,198, 80,107,123,204,230,141,165,208, 83, 9, 90, 97,247,242,221, 40,208,126, 33,200,102,113,229,250, 41, 43, +176,152,177,214, 86,160,110,108,232, 98,200,145, 75, 39,229, 83,114, 45, 97,185,210,108,233,135, 39,233,169,253,245,254,113,215, +117,154, 45,124, 58, 9,238, 10, 54,140,113,193,158,254,130, 56,136,166, 51,242,102,200, 8, 93, 9,158,155,122,177, 5,202, 78, +245, 53, 34,135,140, 57,248,130,153, 36,210, 33,115, 57,204,232, 76,201,215,228,168,243,174, 19, 89,168,221,201,101, 76,102, 33, +111,119,166, 20, 10, 6, 50, 86, 38,162, 50,104, 74,102, 32, 29,121, 3,250,227,193, 22, 84,160, 8,139,229, 13,212, 0,136,182, +130,180, 87,227, 96, 93, 66,242,110,181,182,147, 69, 10,180, 39,174,174,204,120,249,194, 40,154,221,124,105, 60, 30,219, 40, 50, + 70, 56,204, 32, 72,177,168, 80, 86,233,108,160,139,220,179,133, 46, 64, 63, 79, 65, 37, 89,114, 78, 89, 78,147, 60,111,111,177, + 97,185,210, 96, 5, 43, 16, 72,247,149, 27, 67, 2, 21,204,118,182, 66, 23,148,220, 61, 33, 7,108,249,110, 92,138,200,133, 4, +214,255,170,241, 66, 53, 68,217,103,168, 63, 96,168,161,131,192, 66,133,181,172, 78,133,146, 83,202,162, 94,161,226,124, 6, 76, +174,100,139,149, 27,244,196,213, 21,137,235,135,107, 11, 54, 29,135, 24, 56, 25,133,233, 36,208, 44,214,106,166, 23,219,199,106, +247, 92,149, 67, 80,173,114,245, 60,217,159,208,208,203,166, 17, 50, 28,176, 18, 61,178, 36,178, 36, 65,151, 27, 13,238, 29,221, +180,158,131,196,108,238, 34,166,147, 16,141, 91,211,184,179, 37,146,177,149, 49,139, 0, 84, 12, 95,137,211,124, 96, 11, 10,126, +166,194,163,243,222,193, 53,142,186,242,115, 86,114,124,154, 85,116,130,116,121,182,107, 21,132,119,144, 66,215, 73, 6, 95,166, +228, 0, 45,246,208,120,171, 70,123, 5,235, 89, 20,162,207,232,107, 77,152, 20, 8, 23, 45, 27,147,188, 70,170, 22,193,178,139, +179, 97,245, 77,176, 82, 88,237,107,204,217, 61,123, 71, 67,231,243,185, 72, 90, 6, 87,138,251,202,181,156, 22,193,230,100,149, + 20, 7, 68,157,156,188,148, 52,192, 51,155,171,176,164,170, 16, 11, 32, 80, 25, 84, 57,214,203, 46,154,165, 90,234,141,112,210, + 20, 82, 84,182,252,173, 10,230,185,222, 81,216,241,116,244, 22,193, 29, 25, 37, 41,226,207,153,117, 9, 88, 51, 11,185,102, 23, +165,242, 82, 74, 71,253, 59, 10, 29, 68, 98,169,102,244,127,206,244,178, 28,101, 89, 46,165, 66, 77,214,185,150, 90,171, 17,240, +252,193,189, 30,201,189,165,133, 94, 27, 32, 88, 42,166,213,198,151,194, 59,171, 56,138,151,168,138, 86,170,203,153,228,150, 99, +189, 26, 14, 26,139, 0,114,161, 13,229,234, 94, 59, 85,138, 19,115,184,202, 87, 41,234,212, 74,181, 55, 76,146,185,240,130,242, +102, 21,123,175, 82, 97, 44,117,153,236,143, 74, 20, 6, 12, 14,176, 36,167, 91, 13, 97,229,173, 50, 95, 73,127,133,150,135, 65, +122, 83,142, 64,150, 17, 11, 67,175,152,111, 87, 43,122,114, 32, 96,176,146, 66, 51,173, 66, 24, 0, 25, 44, 75,115,213,114,156, + 21,244,204, 75, 21,220, 65,122, 91,132,202,167, 74, 66, 6,218,122,148,184, 6, 42,173, 90, 85,202,199,141,215,175, 22,146,228, +172,165,190, 93,165,174,173, 86, 46, 71,177, 6, 32,104, 89,232,229, 76, 8,132,123,177,253,170,161, 34, 32,202,233,128, 11, 82, +217,185, 34,170,190,212,237,104, 86, 34,183, 61,149,141, 83,221,225, 98,129, 74, 92, 93,148,119,232,143, 62, 91, 48,251,236,227, +179,143,207, 62,254,166,212, 91,159,238, 18,228,238,222,222, 13,123,123, 59, 59,187, 23, 46, 94,184,124,233,242,133,139, 23, 47, +220,112,195,246,206,238,206,206,214,120, 60,201, 53,170, 65, 37,103,163,104,209,117,221,124, 62, 59, 60, 58, 60, 58, 58,126,242, +201, 39,142,143,142, 15, 14, 15,142, 14, 15,247,247,247,143,142,142,254,230, 9,104,123,123,251,174,187,159,255,204,103, 62,243, +150, 43, 87, 46, 92,184,184,189,179, 29, 99,132,112,174,193,111,165,145, 51,197,147,205, 31, 26,185,245, 12, 31,186,235,186,217, +201,236,224,240,224,177,199,254,242,161, 15,124,224,225,135, 30,234, 62, 67,149,239,207,152,128,174, 92,185,242,133,247,221,247, +185,159,251,194,201,100, 44,245, 81,197, 39,191,110, 9,233, 48,192,165,202,175,108,153,118, 73,212,137, 65,177,116, 88,208, 45, +189,156, 44,245, 85, 65,185, 7,235,209, 71, 63,242,155,239,126,247,131, 15,190,223,221,255,159, 10,104,119,119,247,150, 91,110, +249,188,207,123,225, 93,119,221, 93, 16,157, 86, 24,238, 49,165,211,250,194,115,149,102,216,107,114,250,215, 51, 28,250,179,223, + 55,187,230,114,175,107,147, 84,207, 21, 48,187,126,253,250,255,252, 31,191,245,224,131, 15, 94,189,122,245,175, 69, 64, 87,174, + 92,185,247,222,123,111,191,253,246, 43,183,220,146,146,103, 66,234,166, 80,116,182,224,116,190,128,106,241,124,195,218,244,204, +131,205, 2,202, 57, 68,250,211,100,128, 79,246,100, 73, 57,115,211, 33,132, 15,253,249,135,127,239,119,223,243, 39,127,242,222, +174, 91,127,102, 4,244,230, 55,191,121,185, 90,183,138,238, 6,163,115,131,100,241, 73,229,188,121,183,167,158, 60,231,101,167, +104, 27, 79,163, 74,167,168, 11,195, 99,216, 78, 95,233,174, 93,172,236,248,132, 93,194,122,181,252,195,247,252,230,239,253,238, +111,252, 21, 5, 20,231,139,101, 35,156, 12,168,181,103,165,114,198,242, 12,105, 50,155,114, 25, 60,121, 86,149, 78, 31,194, 82, +207,168,242,106,165,108,246,205,101,164,229,138,194, 16,156, 98, 73,167, 64,121,205, 71,136,229, 82, 71, 39,185,147, 99,124,247, + 61,175,184,247,243,255, 65,242,213,111,252,215,159,251,232,163, 15,226,255, 42,111,136,133, 14,117,170,181,228,188,218,189, 78, + 89,172, 74,110,102,255, 30,242,236,235, 52,144, 0, 42, 85,189,182,214, 57,224,174,228,108,137, 91,151, 42,169,130, 21, 64,168, +136,177,215, 95, 50,255,184,240, 68,165,249,146,203, 85,249,117, 54,231,213, 3,172,215, 86,219, 61, 18, 16,111,122,246,235,158, +117,151, 66,250,211,247,255,241,127,185,118,237,211,179, 83, 3,122,197, 39,226, 52, 60,141,228, 55,171, 2,108, 4, 44,157, 5, +196, 7,207, 10,201, 11, 1,147,100,151,176,238, 74,210,237, 98,151,122, 12,198,133,205,165,177,237,164,123, 46, 46, 82,226,106, +173,229, 58,163, 9, 92,117, 57, 5, 77,149, 8,106, 25,101,233, 18,158,247,220,123, 95,254,247, 62,119,181, 58,250,165,119,253, +194,195, 15, 63,252, 41,107,208, 38,221,131,131, 58,242,249, 79,212,131, 82,129,242, 76,160, 87, 67,252,139, 89, 24, 70, 3,125, +251, 14, 37,117,142,147, 25, 23,171,130,190,204, 22, 58, 62, 97,234, 4,178,115,173, 86,182, 78,189, 84,106, 57,205, 78,237, 75, +210,144,158,208, 14,117,235, 26, 41, 88,103,202, 32, 27,153,156,235,206, 87,107, 76,167,219, 95,255,218,111,148,244, 31,127,230, + 29,143, 60,242,200,167,164, 65,103, 52, 69,231, 43,207, 57, 44,157,214,137, 50,248,107,227, 88,111,190, 58,121, 57,130, 41,161, + 75,234,186, 12,107, 49, 37, 36, 71, 39, 80, 72,142,228, 94,186, 37, 50,190, 54, 44,246,110, 16, 0, 54,138,203,109, 51, 72, 4, + 54,200,173,150, 61,242, 46,102,189, 19,229,110,196, 55,124,227, 55,205,102,179, 95,122,215,187, 30,124,240,253, 79, 43,160,222, + 95,157,186,203, 51,225,239,153,198,179,218,123, 60,232, 67, 70, 45,235, 84,112, 37,147,222,151, 43, 30, 28, 99,181, 22,128,174, +195,225, 49,231,171, 2, 31, 37, 71,231,131,186,212,160,223,193, 32,219, 64,161,159,198, 42, 54, 9,246,211, 28, 36, 88,225,119, + 41, 55,199,118, 29, 83,151,231,164, 80,242,233,100,242,218,215,190,238,177,143, 61,246,243, 63,247,179,159, 40,134, 10,127,235, + 69, 47, 82,191,188, 1, 83,227,212,111, 61,169, 8,117,224,128,176,209, 46,116, 6,110,170,168, 49,132,213, 90,179, 5,214, 29, +220,209, 37,204, 87, 88,173,209, 90,235,188, 25,227, 1, 23, 66,130, 21,135,174, 1, 65, 98, 3, 77, 60,195,163, 64,109, 34,106, +142,174, 28,211, 16,116, 97, 23,151, 46, 42,148,114, 80, 81, 44,185,239,237,221,240,210,151,189,108,119,103,239, 3, 31,120,240, + 19,144,242,206,245,233,133, 5, 95, 54,121,213,121,215, 21, 61,105,247, 67, 48, 24, 99, 44,157,215, 70,142,199,140,150, 11,158, + 88,117, 92,173,153,209,232,217, 18, 79, 93,231,114,149,197,193,212,169,176,110, 68,130,129, 26, 22, 43,134, 55, 62, 24, 35,112, +138, 93,115,190,178, 75, 74,181,208, 98,132, 81,227, 0,128,209, 16, 2, 3, 17, 44,219, 72,135, 44, 55,134, 37, 79, 46,191,255, +254,251, 95,252,226, 23,255,196, 79,252,216,227,143, 63,190,161, 65,247,221,119,223,185,202,235,146,123,241, 35,238, 90,174, 50, + 57, 71, 73, 74,174,206,149,114, 91,118,141,161,242,224,160, 88,136,165,144,176,238,176, 90, 41,155,152,197, 10,199, 51, 44, 87, +197,139,187,106,215,128,144, 7, 3,157,103,234,184, 25,116,242,140, 33,228,185,158,182, 52,121,228,193, 12, 25,197, 37,130,225, +226, 30, 46, 94, 64,140, 37,241,107,250, 63,244,186, 47,249,162, 47,222,218,222,206, 67,117,138, 6,205,230,197,103, 36, 87,166, + 12,229,195,211,117, 90, 44,189,225,203, 41, 13,109,242, 0,156, 38,205,250,188, 42, 70,150, 49, 48, 70,163, 73,161, 90,104,174, +214,161, 22, 41, 51,248, 92,154, 84, 55, 77,201, 80, 89, 6, 68,135,243,157,133,206, 6, 93, 67,198,169, 25,166, 19,140, 2,105, + 10, 1,227, 81,134,170, 11, 3,161, 53,248,165, 74, 29,118, 64,166, 47,249,226, 47,185,249,166,155,127,249,151,223,149,193, 22, +254,227,175,121, 93,190, 96,151,116,237,112,125,116,146,220, 37, 97,217,105, 54, 79,201,207, 44,139,234,169,154,195,251, 33, 73, + 25, 75,167, 87, 48,219,153,134,113, 12,181,238, 19,186, 20, 32,219,180, 41,236,169, 60,253,167,216,166,190,112,240, 36,206,152, +158, 83,170,231, 82,137, 0, 72,140, 2,182,183,176, 53, 5, 97, 33,232,202,101,222,114, 35, 71, 99,181, 29,236,117,116, 64,175, + 6, 16, 66,220,223,191,254,142,119,252,212,245,235,215,195,165, 91, 95,112, 60,243,227, 89,119, 60, 75, 71,179, 52, 95,250, 58, +169, 75,190,206,102, 66,165, 8,149,251,143, 88, 24, 2,165,123, 16,181,199,172, 53,120,182,126,165, 86, 41, 43,236,203, 82, 21, + 73, 64,151,235, 21, 3, 6,221,169,253,215,211,250, 44,157,115,166, 52, 84, 40,152, 33,183,202,141, 35, 46,238, 97,119, 27,211, + 9,182,166,216,217,210,116, 10,227,240, 18, 27,236,245, 1, 59, 73, 91, 91, 91, 95,244,146,151,188,239,189,239,229,109, 47,248, +202,205,160,144,231, 68,209,155,233, 85,169,250, 72,236, 7,125,148,242, 92, 77,174,122,107,170, 58,144,105, 20, 74,222, 57,138, + 28,135, 76, 80,203,159, 25,234, 56, 43,108,106, 22,207,123,242,172,219, 42, 21,187,108,248, 70, 6, 39, 34, 32, 96,107,138,103, +221,134,139,123,204,150,104, 50,194,120, 92,230,147,212, 65, 63,167,112,129, 1, 90, 64, 90, 48,165, 66, 97, 56, 21,237,156,230, +202,244, 71,189,178,131, 27,187,164,146,113, 74,191, 94,230, 24, 9,222,203, 17,249,175,165, 83, 18, 80,162, 33,164, 13,100, 77, +173,189,123,120,196, 26,213,208,212, 62,236, 28,126,100, 31, 65, 27,193,128,173, 17,130, 1,192,116,140, 81, 84, 48,179,129, 41, +235, 45, 41, 7,140,220, 10,224,161,103, 88,201, 5, 11, 22,189, 87,108,162,181, 30,171,229,203, 77, 86,229,169, 70, 23, 42,168, +209, 32,243,239, 15, 90, 95,202, 44,239, 75,201,157,165, 64,190,238,180, 88,166,150, 17,108, 77,108, 50, 14, 3,233, 76, 6, 50, +178,122, 30, 41, 49,137,220,128, 6, 10,251, 36, 24,162,149, 79,223,221,193,205,151, 56, 30,131, 64, 12,216,217,198,214, 36, 53, + 24, 32,135,113,173,222, 92,123,177, 43, 11,170,196, 71,181, 89, 27,142,132,200, 28,207,158,238, 73, 56,197,236, 45,197,203,198, + 59, 24,128, 28, 53,216,207,195, 86,224,173,215,181, 40, 80,143, 90,120, 75,228,179,255,112,167, 25, 82,126,103,233,149, 21,144, +212, 15,165, 9,167,108,118, 41,156,151,205, 46,210, 26, 5,196, 88,152, 87, 49,192,172,248,130, 50, 29, 45,209, 76,103,250, 25, +120,198, 9, 54, 46, 73, 21, 60,233,134, 56,176,110, 61, 38, 81,239,171,138,168,180, 99,179, 41, 41, 53,144, 87,207, 5,241, 6, +120,244, 13,146,133,176, 87, 57,189,125,145, 58,135, 75, 90, 44,181, 92,149, 95,131,113, 20,215,193, 12, 64, 52, 75, 24, 75,205, + 60, 25,105,130,229,168,111,111,135, 49, 42,191,101,111, 27,123, 59,133, 44, 22, 2, 38, 99, 4,107,122, 94,249,106,159, 12,188, + 41,106,209, 64,115,128,146,129,209,171, 81,101, 79, 13,238, 57, 54,173,187,159,141,166, 84,158,235,105, 40,172,165,238, 13, 15, +124, 6, 58, 42, 92,177,214, 85,158,169,170, 68,161,143,101, 60, 39,183,250, 87, 30,144, 49,161, 76,225,107, 22, 53,229, 73,146, +109,164,154, 17,150,251, 66, 12,204,163, 67, 6, 30,149,185,182,207, 54,106,234,188,127,101,170, 19, 91, 41,161, 60, 69,202, 83, +108,109,224, 42, 44,211,129,178, 8,109,206, 95,225,223, 13,134, 83,213, 83, 83,226,214, 58, 18,181, 42,224,176,187,169,174, 57, +191,176,140,114, 42, 92,178,218,154,203, 44, 50,172, 58, 16, 9,160,173, 61, 68, 15,182, 36,141,192,100, 18,246,182, 70,163,145, +129, 24, 71,187,124, 67,156, 78, 44,231, 13,193,100, 54,100,169,247,217,178, 54, 93,250,185,248, 85,211,244,188, 67,253, 17,203, +145, 52,232,167,113,119,231, 48,211, 27,216,157,214,230,140,126, 8, 2, 43, 41, 98,208, 75, 50,200, 23, 55, 33, 82,249,224, 84, +230,238, 51,150,214,232, 70,128, 42, 10, 45, 9,105,157,242, 7,208, 16, 2, 28,214,114,131, 96, 54, 25, 53,227, 75,158,161,101, +244,184, 2, 85, 56,250,172, 65,199,128, 55,116, 42,192,209, 41,204, 38,132,216,227,155, 13,198,105,222,171, 82,187,138,182,200, + 11, 91, 68, 37,140, 40, 83,116,155,254, 84,138, 22, 55, 14,118,229, 98,162,176,221,170,252,202,180,200,140,122,176,241,146,203, +144,185, 76,214, 41,231, 77,206,217, 60,173, 59,207, 53,178, 81,176,227, 89, 55, 25, 25,201, 16,176,187, 29,118,183, 66, 8,165, +251,112, 28,105, 86,176,160, 60, 4,180, 78,155,200,244,202,220,157, 94,214, 70,208, 11, 41, 78,102, 54, 56, 4,202, 93,112,177, +218, 84, 13,123, 33, 57,244, 62,149, 85,202,129,237, 41,112, 71, 21,237,144,128,202, 13, 45,174, 92,195, 62, 69, 47,211, 51, 85, + 47, 92, 6,161, 21,114,113, 33, 36, 14, 89,164,130,224, 88, 75, 21,105,228, 40, 56,160,201,216, 0,196,104, 33, 96, 50,202,113, + 22, 67,180,210,102, 84, 48, 37,121, 69,251,123, 15,223,120,232,253, 20,143,204, 65,203,180,102,245, 20,117, 32, 22,200,114,211, + 13,150,182, 70, 14, 99, 42,158,138,142, 42, 69,184,240,178, 26,224,170,179,165,196,166,161,253, 88,128,170,131, 45, 98,106,101, +216,214, 71, 82,205,106,102,104,170, 17,204,165,228,152, 45,211,178,115,130,102,105,221,249,241, 44,229,112,112, 50,178,157, 45, + 27, 5,138,136,102,211,137,141, 98, 27,158, 37, 43,179,133,107, 79, 69, 15,250,109, 70,203,234, 69, 28,251,142,152, 1, 26,126, +172,230, 0, 0, 5, 38, 73, 68, 65, 84, 27,174,239, 74,200,231,174, 57, 62, 98,224, 7,235,193, 64,165, 3, 14, 56,117,234, 53, +168,231, 52, 87, 10, 54,203,217, 44,241, 54,251,193,131, 94,206, 65,158,136, 80,113,230, 82, 24, 81,165,133, 38,193,151,106, 67, +171,230, 75, 63, 56,238,114, 96,180, 53, 13, 23,119,227, 40, 26,168,113, 12, 64, 32, 67,137,144,141,155,189, 70,195, 76,251,252, +114, 58,129,232,253, 36,196,230,199, 74, 73, 42, 47, 10,195, 99,166, 74, 99,172,236,247,193,217,234,179, 77, 14, 2,204, 83,121, +168, 88, 1,164,214, 1, 82,154, 85, 10,181,174,232,124,118,250, 44,163, 78, 90,144, 88,246,209,165,190,188, 38, 79, 72, 53, 22, + 91,174,121, 60, 75, 49, 58,137, 24,220,229,179,101,153,151, 52,138, 54, 30,101,151,136,104, 28, 69, 43,241, 65, 38,161,215, 38, + 73, 86, 90, 99, 94, 97,172,243, 84, 42,223,145,125,206,213,188,115,155,107, 54,168,110,181,238,165, 62, 62, 30,164,111,103,167, +165,105,192,247,215, 96, 86, 80,223,180,171,210, 0,209,203,184,153,162, 34, 72,245,248, 81,174, 18, 1,116,208,229,169,204, 21, +210,114,169,227, 89, 87,166,109, 27,199,145,193,242,249,194,206, 52,236,108,133,220, 58, 62,157,216,165,189, 56, 30, 91, 14,157, + 70, 35, 11,173,161,160,114, 36,114,117, 41,182, 0,134,141,228, 58,108,170,169,211, 94, 90,191, 58,250,161, 48, 44, 77, 46, 26, + 20, 3,251, 8,251, 84, 27, 77,207, 92,238,207,102,225,185, 14,111,188,224,216, 5,210, 98, 27, 31,227, 5, 70,110, 53,142,250, +201, 68,245, 66, 45,176,247, 42, 95,229,146, 13,115,163, 69,151,180,236,188,206, 61,195,113,236,198, 93,200, 41,238, 40,134, 24, +106, 1,155,168,170, 5,131,197, 1, 87,190,150, 74, 75, 64,217, 18,134,114,187,165,211,109,128, 88,246, 61,103,213,159,183, 66, +170, 78,201,166, 18,166,123,146,186,154,157,103,157, 31, 70,207, 77, 65,213, 72,209, 11, 75,189,190,182, 12, 94,202, 82,245, 66, +165, 31,228,212,185,109,169,156, 27,247,196,165, 3,200, 19,237,120,178, 72, 56,108,238, 40, 55, 72,101,192,151,163,145, 69, 43, +163, 9, 38, 99,110, 77, 66, 78,119, 64, 70, 47, 51,160, 48,236,231, 99, 27,214,221, 54, 37,111, 89,139,227, 11, 45,155, 3, 10, +190, 6, 39,241, 84,144, 88, 83, 59,213, 88,179,208,195, 89,151, 91, 2, 1, 58,189, 54,168, 12, 87,194, 50, 50, 41,247,113,212, +176,130,125,159, 54,122,132, 71,172,179,131,178, 27, 31,168,111, 62,196,165, 53,206,139,234, 81,166,152,231,144,137, 73,150, 18, + 83, 39,133, 34,150,216,250,183, 85,143, 74, 29, 61,167,126, 28, 93, 89, 64,233,173, 46, 48, 80,153,146, 53, 8,204,213, 15, 28, + 63, 83,106,171, 52,228, 30,115, 98,137,116, 84,251, 85,106, 95, 42,154, 83,105, 9,100,155, 75, 84, 91, 23, 9,170, 54, 83,150, + 12,166,102,118,106,117,194,130, 45,112, 80,220, 44, 30,201,149,251, 92,148, 1,170, 69,107,145,133,102,139,180, 63,160,216,196, +126,247,250,201, 93,249,202, 69, 46,106,119,228, 28,160, 96,216, 48,234, 69, 54, 26,148,211,121,170,228,137,193, 11,217,192,198, + 58,118,150,173, 7,128,173, 41,172,128, 79,213,142,215,186,100,230,183, 55, 88,179,194, 2,181,225, 69,213, 92,170,182, 38, 53, +244,165,128,160,109,236,112,107, 51,107,125, 26,234,253, 78,241,229, 81,173, 19,171,117,172,213,131, 82, 20,107,208,197, 88,135, +210,113, 64, 90,113,213,180, 86,103, 72,101,131,159,170,174, 13,129,219,236, 19,154,177,111, 62,171, 28, 9,103, 77,216, 6,115, + 22,115, 55, 72, 29,108, 87,250,216, 26, 80, 85, 32, 48, 84, 73,230, 94,199,190,214, 91, 85,147,165,223,166,239, 40, 40,113, 87, +159,191,149,102,175,168,222,175,183,158, 53, 54,119,150,215, 89,232, 1,172,135,118, 32, 77,180,161,140, 27, 7,109, 19, 70,111, +193, 89,211,183,124,209, 1,100,203,106,240, 89, 39, 42, 22,109,106, 54,176, 86, 68,219,224, 12,182, 12,189, 4, 75, 13,102, 46, + 40,112,109,234,242,210,188,136,218,194, 92,251, 96, 91, 39, 2, 91, 10,130,225, 49, 22,193, 88,221, 36, 6, 51, 93,138, 27,107, +169,102,161,112,100, 59, 86, 15, 83, 51, 86, 3, 8, 82,195,252,190, 15, 22,219, 80,203, 97,135, 94,157, 32, 61,176, 12, 57, 63, +181, 22, 67,215, 0, 62,171, 82,129, 68,154,251, 67,245, 46, 26, 72,165,207, 13,107,187, 83,195,110, 42, 74,153,239,220,160, 26, +139, 86,102, 74,239, 99,213,115,159, 34,124, 8,218,120,131,109,242,236, 73,130, 45,168,105,230, 15, 94, 82,248, 26,206,176,217, +246, 51, 33, 98,159,124,109, 70,249, 18, 54,202,205, 21, 8,169,112, 25,218,129, 43, 75,110,244,154, 70,181, 81,101,221,212, 25, +116,236, 97,234, 58,174, 82,213,227,169, 26,127,212, 59,170,242, 41,105, 23,135, 41, 71,189,109, 0, 81, 45,233,244, 1,172, 34, +239, 49,157, 44, 41,182,241,234,205,224, 19,222,216, 29,106, 6,117, 3,110,194,169,255,213,247,213,180, 44,162, 39, 42,170, 98, +182,101, 53,117,233,205, 76,122, 3,193, 29,110,121,154, 98,223,156, 89, 26,223, 57, 36,158,212,185,249,173,189, 48,155, 35, 7, + 13, 13, 86,161, 78,117,245,138,181,109,156,177,140, 60, 84, 99,104,228, 46,230,225,156,192,106,203,250, 86,245, 83,146, 42,247, +172,146, 85,138, 67,252,117,192, 99,172,158,161,183, 95,141,152,160,225,104,148,102, 46, 54, 13, 83,203, 78,243, 13,151,177, 79, +131, 54,204,220,130,169,138, 17,100,152,156, 48,245,194,170,157,214, 86,128,150, 86, 78,202, 92, 25,244, 56,108,145,113, 68,111, +165,235,228,250, 54,186,133, 67,166,188, 74, 60,161,218,185,215, 23, 27,212,167,245, 77,124,131,163,230, 45, 20,226, 38, 55,131, +234,131,133,166,119,108,136, 63, 81, 43,147, 77,238,253, 32,202, 54, 20,127, 88, 14,168,167, 10, 77,179, 88,237,114,141, 17,208, + 27,101,108,188, 76, 27,211,164,218, 42,255, 15, 49,206,148,201, 27, 21, 95, 6, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/lighten.png.c b/source/blender/editors/datafiles/lighten.png.c new file mode 100644 index 00000000000..7059d11de21 --- /dev/null +++ b/source/blender/editors/datafiles/lighten.png.c @@ -0,0 +1,301 @@ +/* DataToC output of file <lighten_png> */ + +int datatoc_lighten_png_size= 9437; +char datatoc_lighten_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, 1, + 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, 11,252, 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, + 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, + 73, 77, 69, 7,218, 7, 21, 0, 4, 17,164, 74, 11,162, 0, 0, 32, 0, 73, 68, 65, 84,120,218,237,125,105,144,109,215, 85,222, +250,214,222,231,246,248,102, 61,201,146, 44,219,146,108, 34,233,225, 65,179,237,144,136, 96, 73,166, 76,156, 96, 23, 38, 21,248, + 17,170,194, 84, 73,204, 12, 54, 54,144,170,224, 2, 2,127,192,252, 8,164, 32,133,171, 82, 84, 98, 66, 85,248,231, 63,137, 0, + 51,148, 7,144, 43, 24, 91,122,146, 29, 73,150,159,244,158,223,208,175,167,219,247,158,189,215,151, 31,107,239,125,206,237,110, +201,114, 48,169, 80,165,211,173,126,221,183,111,159,187,239,218,107,175,225, 91,223, 90, 18,249, 90,175, 87, 92,127,253,205, 55, +223,114,240,113,136,200,251,222,255,129,156, 19, 68, 84, 21,170, 49,198, 46,198,216,117, 31,252,192, 79,251,147,194, 15,253,240, +143,244,253, 60,231,100,102,217,204, 44,211, 47,179, 7, 31,124,232,177,199, 31,219,222,218,210,249,124,214,207,231,253,188,239, + 83,159,250,190,139,125,144,100, 70,179, 60,159,207,127,240, 7,126,176,235, 58,188,231,159,127,207,103,159,220,221,154,102, 64, +255,201, 3,215, 28, 93, 83,145, 40, 92, 70, 12,164, 64,117,210,117,241, 79, 30,189, 12, 64, 4,128,173, 45, 67, 68, 68, 18,101, +198, 20,178,137, 32,208, 44,154,101,133,138,192, 68, 52,136, 8,205, 56,239,247, 40, 49,155,134, 96, 66, 70,161, 25, 9, 64, 0, + 17, 33,229,179, 79,238,124,230,236,246, 13,215,172,220,121,219,209,201,132, 66,137,204, 6, 21, 10,132,216,155,217,159,125,230, +210,151,206, 77, 17,226,185, 11,211,231, 46,205, 94,123,211,250, 55,222,122, 4,167,111,121, 27, 36,136, 10, 8,170, 10,161, 42, +144,128, 16, 0, 5, 84, 52, 70, 26,137, 44, 25,170, 16, 19,129,144, 42, 98, 66, 17, 17, 2, 65,236, 37,109, 87,104,223,173,172, +172,222,116,211, 77,170,152, 78,167,251,247,238,174,187,238,122,219,131, 15,145, 84, 0,170, 33, 4,223,184,143,125,236, 99,127, +250, 39, 31, 47, 79,250,161, 31,250, 97, 10, 33, 80, 85, 40,130,134,232, 87,215,197, 24,127,230,131, 31, 16, 17,157,215,141,235, + 83,175,210, 71,237,193, 76, 99,223,207,231,243,217,207,255,252,135, 68, 4,223,252,246,239,126,242,217, 61, 0, 43, 75,225,221, + 15, 94, 3,129,200, 18,117,201, 55, 40,198,184,180,188, 28, 31,127,106, 11,170, 36, 94,113,227, 50,132, 34, 66,206, 96, 36,145, +168, 52,163, 72, 52, 49, 53, 19, 81,223, 93,146,217,108,222, 79,205,162,106,176,104, 20,137, 52,163, 64, 96,125, 50, 82,118,247, +242,255,248,196,229,221, 41,239,123,253,137, 83,199, 39, 36,133, 18,214, 78,222, 34, 66,138, 40,228,117,175, 94,255, 47, 31,123, +118,119,207,178,241,217,231,231,207, 94,152, 93,119,114,210,117,192,233,155, 31,132,170, 64, 93,227, 85, 84, 20,130, 0, 9,208, + 16, 52,136,198,104, 98, 74,130, 34, 34,162, 32, 13, 2,168,138,100,136, 80,160, 52,249,122, 93, 24,255,240, 35, 63,250, 99,107, +171,107,190, 73,254, 1,133, 66, 53, 40,128,160,225,195, 31,254,213,243,231,207, 31,126,163,159,248,201,159,202,150,133, 34, 70, +191, 45, 68,160,128, 40, 20, 34,208, 0, 85, 5, 52,132,160, 64, 8, 65, 53,196, 24,223,255,254,159, 90,184,209,191,250,215,255, + 70,132,174,169, 34,130,209, 37,144, 24,208, 69,133, 40, 37,104, 8,190, 60, 55, 25,170, 26, 98,252,200, 71,126,231,137,179,103, + 69, 36,246,243,185,136, 24, 57,155,115,107, 55, 25,177,182, 18,142,175,199,165, 73, 88, 89, 22, 8,204, 84, 16, 32, 32, 85, 5, + 52, 35, 37,231, 12,133,166,244, 93,223,245,221, 33,132,159,251,217,159,193,107,222,240,238,108,204,217,223,148,191, 55, 92,123, +106,242,192,221,199, 87,150, 68, 68,171, 40, 35, 25, 41, 42,128, 82, 40, 52, 0,208,224, 75,235, 98,156,237, 37, 1, 5,160, 64, + 73, 81, 37,121,205,241,149,229, 73,217, 7,146, 34, 20,153,139,204, 33,209, 12,115,131,153,191,123, 53, 85, 85,205,102,145,146, +133, 20, 83,130,132,138, 37, 10, 98, 16, 1, 69, 32, 66, 10,102,115,219,216,234, 47, 93, 77,150,229,154,227, 75,203, 75,161,139, +234,135,207, 79,160,154, 69, 90, 18,170,104, 38, 65, 38,129,138,216,214,118,202, 25, 49,112, 58,147,191,252,220,149,103,158,155, +206,122,223, 74, 0, 88, 89,142,175,122,197,242,171,175, 95, 89,234, 66,244, 59,170,225,244,173, 15,137, 0,190, 0, 8,160, 36, +151,186,240,240, 55,221,240,228, 51, 91,103,159,218, 34, 73, 64, 5, 20,133,170, 80, 92, 56, 46, 80, 64,215, 87,227,201,227, 75, + 56,117,243,183,248,235,248,163, 66, 17,127,178, 84,173,170,191, 19, 40, 8, 81,173, 54, 90, 1,161,168,107, 89, 36,205, 53, 89, +160, 66, 19, 8, 13, 10,138,184, 53, 0, 21, 74, 17,117,195,168,194, 44,226,154,101, 66, 0,164, 9,149,242,255,221,133, 67, 31, + 61,113,226,196,241,227, 39, 68,100, 54,219,219,216,216,216,221,221,253, 26,110,244,218,215,189,238, 61,239,249,206, 42,217, 42, +124,168, 43,111, 8, 97, 99,227,234,175,252,242, 47,189,216,141,222,255,211, 31,176,108,116,123, 88, 78,191,250,198, 64,203, 21, +252,102, 26, 98, 23,223,247, 83, 63,121,200,141,126,236,199,127, 66,232, 31,190, 75,240,141,133,239, 36, 2, 20, 33, 20, 51, 18, +212,151, 24,158,249,210, 51,191,249, 27,255, 97,124, 35, 77, 41,245,169, 79, 41,165,156, 82, 78,150,147,229,148,115,206, 41,231, +108,217,146,229,156, 83,182,156,115, 74, 41, 39,255,122,211, 77, 55,253,210, 47,253,242,254, 27,229,242,233,127,236, 87,202, 57, +155,101, 48, 3, 25,102, 66, 35,201,108,217,114, 78, 41,245,125,223,207,127,225, 23, 7,145,169,229,108,237,162,209, 72, 35,205, +132, 22,131,197, 96, 1, 86, 12,135,144, 16, 49, 49,250, 42, 83, 74,233, 23,127,241,223, 23,159,124,231,157,119, 81, 56,155,229, + 75, 27,243,171,219, 57,165,172,138, 24,216,117, 50, 9,132,186,232, 0, 81, 63,181,164,148,109,169,223,188,254,245,175,255,228, + 39, 62, 17, 55,182,231, 79, 60,179,119,105,163,247,231, 67, 48,233,112,219,205,107,223,240,170, 37,209, 64,102, 64, 68, 76,100, +184, 1, 41,160, 24, 76, 68, 36,165,107, 78, 93, 3, 65,216,213, 91,182,118,147,209,195, 11, 35,185,182, 26, 78,159,136, 39,143, +199, 24, 4, 80,169,246,220, 76, 68, 4,230,119, 36, 57,156,175,135, 30,126, 56,206,230,217, 45, 72, 81, 34,200,202, 4, 43, 75, +218,133,225, 22, 34,201, 76, 84, 41,162, 20,201, 46, 45,160, 44, 18,152,207,231, 81,232, 62, 20, 85, 25, 37, 70,116,209, 85,187, +153, 90, 1,146, 8,179,169, 25,178,193,181,222,109,142,164, 36,148,104,204, 16, 64, 40,132, 40,141, 80, 80,193,122, 35, 95, 20, + 83, 98,202, 38, 8, 57, 67, 68, 1, 40, 65,176,232,177,164, 8, 87,104,129,128,194,106,169,203, 45, 64,210,168,123,179,252,252, +165,254,234, 86,190,246,196,100,101, 57,198, 64, 13, 74,211,160, 52,179,242, 62, 40,244,101,128, 34, 84,170,229,100, 70,144, 42, + 66,163,236, 76,211,231,190,176,115,246,233, 29, 64, 47,156,152,220,250,202,213, 99,235,221,164,163, 6, 10, 69,233, 47,203,176, +118,226, 86, 40,234, 9,134, 8, 87,150,195,137,163,147,227, 71,162,128,187,211,252,169,207,110,126,241,217, 29, 95,246,116,207, +190,114,181,159,247,214, 69,141,177,254, 29, 32, 34, 97,237,228,173, 20, 20, 43, 93,130, 48, 28, 93,143,199,143,116,125,207, 63, +125,244,242,179,207, 79,225,111, 82, 32,130,148,237,234,102, 62,191,145, 54,182,210, 60,113,121,162, 49, 64,128,176,118,226,214, + 18,175,214, 91,245,153,171,203, 81, 33,159,123,114,243,233,231,166,112,221,240, 13,113,157, 21,230,196,173,105,190,112,121,254, +212,115,179, 47,127,101,190,177,157,112,250,150, 7, 75, 12, 35, 90,194,153,178, 92, 10,220,172,168,135, 22,229,149,154, 23, 17, + 21,120,184, 21, 84, 17,133, 20, 87, 36,152,251, 31,162, 88, 55, 24, 5,226, 62,130,174, 50, 2,144,164,135, 20,116,127, 36, 74, + 19, 81,138,249,182, 87,157, 39,232,231,192, 12, 66, 18, 66,163,137,144, 52, 33, 77, 40, 48, 17,129, 9,139,185, 32, 40, 74,138, +144, 70,243, 16,195, 76, 40, 38,160,136,128,230, 47, 80,151, 81, 23,111,174,101, 20, 8, 32,144,133,115,247,242,245, 53,249,217, +118,221,114,203,173,119,220,113,199,205,183,222,122,242,196,137,225, 81,150, 83, 0, 15,158,203, 63,186,177,177,113,246,236,227, +127,245, 87,255,235, 11, 95,248,194,215,103, 65,235,235,235,239,121,207,119, 94,127,253, 13,102,174, 10,131, 49,105,145,146,212, +232, 10,251, 34,233,226, 83, 81,156, 51, 84, 32,177,235,254,219, 71, 63,250,233, 79,127,234,165, 43, 7,222,249,206,119,222,113, +199, 25,179,193,197,136, 44,252,117, 61,119, 67,216,134, 22,215,239, 95,146, 39, 28,195,178,234, 66, 85, 85, 83, 78,255,241, 55, +127,227, 75, 95,250,210, 87, 89,208,143,252,232,143, 75,245,117,251,150, 82, 95, 87, 70, 31, 11,171,145, 33,205, 24,137, 72,134, +165,236, 19,158,106, 0, 16, 98,248,183, 63,247,179,123,123,123,135, 39,208,247,222,123,175,159, 93,178,254, 59,186, 68,106,180, + 51,254, 32,139,167, 21, 66,168,197,238,184, 27, 22, 20,159,214,222,226,224, 74, 73,183, 39,246,192, 3,223,252,240,195,111,127, +234,169,167, 46, 95,190,188,127, 65,119,223,115, 15,205,104, 7, 86, 35,164, 13,110,190, 45,194,205, 17, 64,128, 49, 16,238,253, +220,156,140,242, 33, 10, 81, 44, 45,141, 34,101, 57,195,221,141,246,166, 59,239,124,248,225,183, 63,249,196, 19, 87,175, 94,109, + 11,138, 57,165,209,233, 41, 91,150,146, 39, 50, 34,144, 24, 84, 32, 81,161, 1, 96, 9,107, 98, 16,129, 4,128, 53, 54, 20,241, + 24,193, 32,218,156, 43,133, 32, 5,204,110,186,173,237,178,153, 65, 85,105,246,189,223,247,253,147,110,242,190,247,149,120, 52, +188,225,141,119,154,177, 79, 54, 79, 54,159,219,206,204,166,211,124,101,179,223,218, 77,155,219,105,107, 55,207,230, 54,221, 51, +203, 76,137, 2,134, 32, 33,200, 82, 71, 7,111, 20, 11,122, 87, 20,166,248, 14,106, 61,165, 44,118, 89,170,190,142,247,145,217, +242,131,111,123,232,220,185,115, 23, 47, 94,196,187,190,227, 95, 80,120,113, 35,109,110,167,189,222,182,119, 61, 48, 43, 62,144, +234, 78,137, 93,212, 16,241,247, 94,189,122,203, 43,151,187,168, 53,171,108,178,112, 33, 5, 17, 45,223,120,216,132, 26,198,112, + 48, 48,172,135,160, 28, 73,245, 68, 54, 0,248,163, 63,122, 4,215,223,254, 79, 11,144,212,194, 7, 10,235,207,237,209,227, 71, +186,229, 37,125,213,245,203,175,185,126, 73, 33,147,137,111,144,142,212,209,127, 84,145, 64,214, 77,164, 80,160, 37,140, 45,162, +226,128, 72,140, 78,167,170,127,117, 55, 45,130, 10, 62, 56,104,130, 81,164, 39, 32,101,117, 25,235,107, 97,117, 89, 39, 19,197, + 96,171,247,217, 88,146, 73,196, 60,140, 19,207,216,139, 45, 65, 50, 97,185,125,145, 16,171, 81,240,156,209,191, 70,113,144,134, + 67,180, 66, 53,214,163,171, 70, 66,132, 18,131, 44, 77, 16,213,205,210,194,101,102, 24,173, 14, 48,145, 44,162, 36, 82,134, 8, + 82, 18, 2, 52, 15, 53, 21, 42, 44,161, 13, 20,234,239, 31, 14,202,145,145, 77,154, 16,210, 0, 8, 33, 98,240, 80, 4, 16,177, +146,187, 11,165,156,240,166, 55, 20,161,170,186, 61, 16,112,103,202,189, 57,183,119,243,222,140, 49,226,212,209,137,170, 86, 35, +143,130, 97, 82, 60,225, 87, 81,211, 44, 46, 34, 17, 16, 10, 70,163,159, 76,120,236, 46, 5,167,244, 87,182,170,153,204,201, 82, + 34, 13,251,246,138,196,188,207, 20, 60,245,229,233,206, 94,126,254, 43,243, 43,155,189,195, 4, 49,234, 53,199,186, 46,224,213, + 55,174,196,128,181,229, 24,212, 79,137, 2, 89,160, 34,185,156, 26, 5, 50, 1, 80, 17,221, 78,212, 20, 7, 48, 86,208,129,144, + 98,124, 5,156, 39,155,206,210,172,207,150, 69,192,160, 48,178,239,153, 50, 63,251,228,118,223,219,115, 23,103,123,115, 43,233, + 7, 41,162,125,159,207, 95, 50, 1, 46,111,245, 10,188,226,212, 82,215,225,154,227,147,149,229, 16, 84,187, 72,131, 66,178, 8, +144,171,134,155, 70, 74, 38, 93, 60,174,111, 32, 77, 26,130, 4,115,137, 76,103,137,228,116,150,251,148, 21, 8, 19,157,205,236, + 51,103, 55,114,226,179,231,247,114,102,202, 45, 40, 81,163, 0,153,162,102, 4,100,103,106, 34,216,155, 27, 84,206,125,101, 30, + 35, 86,151,227,145,213,176, 60, 9,167,142,119, 65,177, 52, 9, 40,128,142, 68,143, 95,125,151, 74, 40,239,193,167, 22, 83,235, + 49,231,116,218,247,115,219,217, 77,187,123,214,247,182,177,181,187, 55,183,103,190,188, 99, 38,123,115,207,124, 20, 52, 66,133, +230,203, 34, 13, 34,164, 90, 54, 42,108, 46, 16,233,251, 30,192,214,118,186, 24, 53, 6, 60,115, 33, 4, 96,101, 41,168,234,250, + 74,208,160,142,115, 19, 2, 24, 0, 19, 3, 1,250, 63, 2, 26,125, 23,103,189,245,137,207, 95,156,166,108,125,111, 87,183,123, + 51,217,157,102,162, 88, 78, 33,169,238, 29,132,162, 52,211,146,220,152,199,238,126, 56,178, 41,104, 57,171,204, 77, 4,178,147, + 85,164,235, 2,128,229,165, 16, 84,113,250,230,183,185,177,168,102,195,221,149,219,175,226,185, 85, 60, 83, 98,129,235,154, 21, +130,187,249, 10,122,129, 66,165, 82,197, 31, 24, 80,195,106, 17,180,166, 96,158,123,193, 65,101,208,243, 23,136, 32, 86,125,102, + 61,216,160,216,240,138,174,241,110,222, 80,220,128, 21,151, 80,143,177,159, 11,186,231, 34, 40, 38,230, 73, 4, 68,173,100, 29, + 10,183, 88,158,149, 86,212,174,189,115,186,189, 83,137,226,176,156,130, 98, 20, 45,232,102, 61,212, 86, 64,196, 98, 76,139, 76, + 60,212, 41,122, 47, 66,135,242,180,248, 44,183,156,197, 69,212,164,191,220,201,109,155,195,128, 70, 0,162, 66,210, 99, 4,245, + 52,205, 13,145, 81,200,146, 64, 21, 28,150,195,201, 23,138,209, 40,142,217,176, 70, 63,238,180,133, 70,136,208,220,167,179,254, + 18, 20,163, 9, 68,172, 26,126, 17, 17,163,213,216,173,196, 59, 44,123,196, 1,246,126,249,122,249,250, 91,203, 92,135,216,187, +139,171, 43,171,147,201,100,121,121,165,235,186,130,174,165,126,111,111, 54,155,237,237,236,236,100,175,122,252,173, 46,168,235, +186, 55,189,233,206,219,110,191,253,213,175,122,117,136, 97,136, 64,181,156, 51, 79, 1, 61,220, 35,249,197, 47,126,241,243,159, +251,235,191,248,139,191,152,207,231, 95,231, 5,125,219, 63,126,231,153, 51,103,186,216,213, 88,105,200,164, 71, 9,117, 75, 16, + 75,134, 47, 34, 33, 4, 40,230,243,249,163,127,249,151,127,240, 7,255,253,111,180,160, 24,227,153, 51,103,222,241,142,111, 99, +139, 93,217,128,198, 33,165, 31,103,248,139,201,233, 98,106, 15,168,234,230,230,230,135,127,237, 87,119,118,118,190,182, 5,157, + 60,121,242, 29,239,120,199, 13, 55,188,210, 49,163, 81, 52, 61,122,210, 56,232, 31,125,125,193, 53,121,116, 42, 18, 98,184,112, +254,252, 71,126,231,119, 14, 38,169,135, 47,232,189,239,125,239,202,202, 90, 53,159,251, 51,252, 33,147,199,144,149,142,164, 84, +209, 62,143, 83,101, 12, 48,140, 55, 19, 33,132,179,103,207,254,167,223,254,173,175, 94, 28,255, 7,255,240, 1,203, 70, 97,102, +110, 89,115,245, 9, 45,191,247,216,150,104,194,179,234, 98,107,222,135, 33,122,170, 25, 79,205, 68,124,219, 79,157, 58,245,246, +111,253,214, 63,255,243, 63,123,113,149, 15,247,223,255,102,122, 25,243, 16,172,161,184,181, 42,178, 1,105,144, 1, 77, 24, 16, +237, 67,174,146, 71,213,219,152, 61,240,192, 63,234,186,238,201, 39,159,120,193, 5,221,119,255,253,139, 47, 60,250, 36, 15,156, + 67, 30,252,150, 53, 29,229,104,151, 71,233,125,125,176,130, 41,175,121,205,205,183,221,126,251,167, 62,249,201, 67, 23,164, 52, + 43, 62,220,172, 32, 20,237, 83, 94, 0,164,169,232,171,144, 16, 83, 49,208,209, 92,142,208,151,118, 59,182,151, 48, 51,179,156, + 45,223,120,195,141, 31,250,208, 47, 28,190,160, 82, 19, 26,215,134, 22, 47,127,249,242,172,225, 65, 19, 49,136,121,166, 6, 16, + 48,208,106, 64,225, 65, 18,141,226,154,208,238,150,203,215, 44,144,127,247,243, 31, 58, 76, 66, 69, 26, 47,122, 89,129,116,252, + 7, 95,129,130, 80,130, 28,234, 69, 37,225, 53, 15, 52, 29,139, 49,143,178,105, 21,133, 50,203,217,197,167,170,239,255,233, 15, + 28,220,178, 23, 88,207, 8, 46,107, 95, 93,175, 52, 80, 85, 66, 96, 80, 66,169,163, 79,150, 10, 76, 51,166,128, 64, 28,193, 28, + 3,105, 85,246, 71,214,143,252,203,239,253,190, 5,165,190,235,174,187, 23,158, 39,236,251, 82, 0, 74,137,217, 85,197,204, 35, +110, 47,247,196, 64, 13, 80, 80, 84,164, 2, 5, 67,157,163, 22, 35, 32,158,145,148,180,104, 0,234,107, 21,207,129,182,147, 39, + 78,110,110,110,158, 59,119,174, 56,140,145, 77,102,159, 72,145,157, 93, 75,190, 52, 34, 6, 89, 90, 10, 81,177,190, 42,153, 50, +233, 0, 72,140, 80, 24,233,249,130,121,237,200, 35, 81,143,229,133,161,158,179,138,237, 9,173,122,162, 33,108,207, 89, 85, 77, +229, 93,239,126,247,231, 62,247,215, 94,117, 14,111,124,211,157, 70,206,146,165,158,211,185,245,254,117,206, 62, 49, 37,201, 36, +137,156, 41,130, 62,179,139, 66,202, 36, 18, 35, 40,182,138,167,213,163, 81,242, 77,165,231, 20, 35,200,123,159,205, 40,245, 25, + 35,239,187,239,254,143,255,241, 31,139, 72,220,158,166,148,248,244,243, 51, 51,217,216,236,147,141,188, 87,203,166, 32,147, 78, +151, 59,125,235,157,199,186,224, 37,161, 18,177, 59,190,227,152, 80, 17,146, 31, 48,207, 85,170,109, 44, 16, 65,115,216,158,119, +168,153, 40,205,130,234,210,210,210,189,247,222,247,169, 79,125, 82,251,222,250,100, 57, 51,231,156,155,213, 49,210, 15, 40,219, +177,176, 92, 15, 20, 56, 10, 72,252, 88,121,109, 86, 8, 24,197,132,134,202,139, 27,204, 68,253,102,100, 71,232,255,101, 51, 26, +191,253, 93,239, 2, 16,246,226,173,231, 47,207,119,166,121, 58,179, 82,164,109,249, 83,205,171, 98,192,241, 35,221,202, 82,120, +229,117, 75,177, 67, 12, 37, 33,171,208,226, 2,216, 8,120,149, 23,205,106,107,193,232, 26,238,180,111,199, 42,208,100, 60,122, +236,104,156,245,121, 40, 49,122,209,216,172, 58,243,146,183,122,169, 88,149, 40,192, 42, 14, 68,118,168, 40, 43, 42,164,103, 34, + 5, 7, 46,143,185,190, 89,253,107,151, 44, 76,252,184,146, 20,187,247,222,251, 98, 5,109, 11,240, 90,113, 43, 87,136,146,243, + 43,100,109, 37, 76, 34,186,136,174,211, 42,158,131, 87, 54, 19, 17,213,130, 84, 67, 0,171,180,174, 76, 17,194, 40, 10,207,253, +169, 80, 82, 96, 66,101, 48, 51,104,206, 57, 58, 98,203, 1,212,115,252,213,227, 9,243,122, 43, 68, 98,112,238,213, 66,193,227, +176,112,207,170, 3, 88,216, 71,138,152,185,215,135,137,137, 73, 1,207, 29,111, 48, 49, 85,136,193, 16, 75,218, 43,230, 53,214, + 2, 35, 20,201,250, 23,163,132, 16, 24, 21, 40, 64,240,168, 14,190, 88,174,241,250,182, 99, 9, 46, 96, 35,152, 75,138,222,142, + 1,198, 97,131, 67, 36,102, 2, 16,136, 78, 70, 67, 21,145, 35, 25, 21, 86, 37,204,107,200, 12, 65, 67,104,129, 43, 95, 40,248, + 81, 5,217,170,169, 32,145,179,229,172,126, 95,173, 56,186, 46, 66,220,205,182, 22, 20,150, 13, 93,119, 92,187, 44,167,172,204, + 77, 91,129, 62,192,197,213,236,255,190,239, 73, 17, 47, 66,120,197,209, 35, 63, 15, 31,173, 6,225, 38, 69,233, 11, 98,103,230, + 37,110, 51,139, 67,101, 9, 70, 55,114, 24,226, 85,160,226,234, 30,102, 28,200, 85,128, 22,126,153, 9, 54,119,204,140,151,174, +102, 7,255, 87,150, 92,166,181, 68,195, 66, 51,224, 1, 41,151, 74, 22, 25, 89,160,110, 52, 37, 54,199,167, 93, 72, 86,227,102, +106, 13, 93, 57, 94,144, 81, 68,196, 50,103, 61,115,182,171, 59,201,140,211,189, 76, 65, 23,145, 51,187,168, 49, 40,148, 33,168, +187,182,131,229,136,178, 60,171,244, 79, 1, 32,100,113, 2, 21,162, 46,110,161,248,205,156,205,233, 78, 34,218,172,138,223, 36, + 37,238,238,229,167,206,237,245,201,190,240,165, 61, 22,236, 84, 78, 30,237, 38,157,158, 62, 57, 57,117,180,139, 81, 87,150, 29, +159,131, 53,143, 39, 42,194,162,204,170, 16, 17,179,232,218,107,116,224, 13, 13,202, 67, 73, 45,172, 40, 78,137,204,154,124, 74, +126,145, 77,250,108,125, 98,223,231, 62,211,204,171,117, 2, 72, 50,134,108,125,111,243,100,164,196, 32, 0, 98,168, 85, 27, 84, +143,231,133,158, 74,208,138, 30, 16,148, 53,187,126,163, 70, 62, 5,204, 19,163,237,205,115, 54,102,147,144,205,233, 22, 41,209, +200,243,151,230, 79, 63, 55,157,205,248,252,165, 61, 10,104,164,184,229,196,213,173, 4,200,213,157,252,236,133,217,202,114, 56, +125,188,235,162, 94,119,106, 73, 33,147, 78,196,180, 10,105, 8, 6, 96, 22, 71, 89,161, 35,111, 42,142,208,149,220,217,164, 22, + 48, 75, 94, 82,117,192, 72,163,100, 99,223, 91,159,153,179,211,125, 8,152, 80,141, 38,170, 48,228,108, 61,208, 37, 75,137, 64, +161,118,103,163, 34,171, 6,186,131, 19,170,120,124,133, 88,153,136,238, 15, 21, 37, 28,118,134,168,215, 25,132,148,157,105,223, + 69,237,251, 12,161,106, 16,145,167,159,155,126,229,202,108,107, 59, 93,218,152,155,192, 42, 18,203, 82,145,117,194,143,166, 44, +217,210,188,215,157,189, 28,160,231, 47,205, 85,113,242, 88, 23, 85, 79,159,152, 76, 38,218, 69,196, 40, 38,170, 66, 33, 99, 81, + 33, 2,128,163,174,101,119,221, 51,154, 51, 72,212, 76,204, 60, 11, 5,133, 10,204,231,121,119, 55, 79,103,121,158,204, 65,103, +162,110,126,163,120,150,138, 38, 96, 54, 55, 69,200, 2, 6,213,181,149,144, 2,179,153,101, 97, 8,110, 75, 41,106,100, 20, 47, + 36,160,254, 35, 34,197,197, 20, 67,100, 2, 24,183,119,211, 36, 98, 58,179,108, 56,119, 97,214, 39,126,249,252,244,242,230, 60, + 37,146, 84,247, 59,133,146, 83,202,162, 86,161, 98,161, 24,160, 52,102,221,155,155, 10,207, 95,154, 3,114,101,179,215,160,203, +147, 16, 3,150,186,176,188, 20,160, 26,107, 53,211,207, 83,145, 73,241, 96,104,117,110,206, 83, 22,106,159, 8,216,198, 86,154, +205,242,246, 52, 77,247,204,229,210, 60, 41, 76, 68, 75,244, 8,136,155, 20, 64, 96, 52,133,138, 89,130, 41,251,169, 0,178, 59, + 53, 66,150,151, 66, 84,172, 44,199,181, 21, 2,168, 65,126,173,150,213, 26, 66, 1,254,253,150, 2,177,204, 94,236,127, 63,187, + 21, 3,174,110,247, 41,201,222, 44, 99, 48, 72,172,168, 60,124, 77,165,210,165, 58, 80,226,204,137,203,148, 10,194,155, 0,148, +148, 72, 21,155,229,108, 34, 80,156,190,229,193,130,174, 23,230, 84,133,224, 27,133,148,205, 46,213, 48,142,133,126, 37, 82,206, +149,255, 1,135,216,196,143,168, 46, 70,231, 10, 17,106, 43,112,148,240,146,165,192, 88, 42,194, 30,184, 88,113, 95,238,165, 91, + 4,235,201, 42, 74, 41,192, 45, 85,249, 44, 55, 40,108,174,230,165,106,181,163, 30,231,134,248,187, 84,224,191,243,147, 94, 50, + 79,212, 0,146, 78,205,147,198,212,135,121,189,163,176,227, 97, 50, 88,132,225,144,177, 50,200,188, 20,235,137,115,171, 22,136, +176, 84, 94,220, 47,202,240, 23, 86,170, 55, 4,107, 89,181,254,218,233,101,240,180,152,104,160,153,111,131, 59,212, 90,141, 16, +107, 53,224, 42, 0,179,130,193, 82,172, 52,146,212, 34, 41, 43, 46, 83, 10,239,168,226, 40, 94,130, 45,115, 44,133, 84,214,138, +111,173, 47, 57,215,146,102,141, 24, 90,232,165,181, 83,165,196, 64, 38,198,242, 89,251,103,170,236, 27, 38, 9, 41,244, 83,255, + 99, 22,123,207,146, 74,151,186, 76,241, 71, 21, 36, 41, 5,184,114, 15,131,105, 13, 97,105,213,193,181, 88,170,208,242,100,148, +240, 20,224,206,101,132,194,208, 43, 97,179, 21, 33, 52, 25,213,196,162,146, 66,225,174, 67, 70, 64, 6,202,210,140,181, 28, 87, +163,113, 43, 30,203,198,137, 2, 88, 94,149,164,152,180,194, 83, 81, 96,162,153, 98, 63,148,101,249, 86,149,160,228, 13,190, 97, + 77, 38,158,121,163,136,144, 5, 95,174,135, 84, 93,232,229, 76, 80, 32,102,197,246,179, 4, 2,126,112, 12, 38,142,146,149,157, + 43,162,146,202,165,160,149,120,187,158, 23,148,141, 27,104, 77,110,129, 6, 10, 8,247, 65,247, 47, 23,204, 94,190, 94,190, 94, +190,254,174,212, 91, 95,236, 22,192,250,145, 35, 71,143, 28, 89, 91, 91, 63,118,252,216,201, 19, 39,143, 29, 63,126,236,232,209, +213,181,245,181,181,149,201,100,201,107, 84,178, 0,152, 85, 12,132,146, 82,154, 78,119, 55,183, 54,183,182,182, 47, 92, 56,191, +189,181,125,117,243,234,214,230,230,198,198,198,214,214,214,223, 61, 1,173,174,174,190,246,117,223,112,227,141, 55, 94,119,237, +181,199,142, 29, 95, 93, 91,141, 49, 30, 10,250,142,235,179,251, 31,196,226, 55,181, 6, 40, 7,248,208, 41,165,221,157,221,171, +155, 87,207,157,251,242,217,199, 31,127,226,236,217,244,117,170,124,127,221, 4,116,237,181,215,222,121,215, 93,223,248,141,111, + 88, 90,154,144, 67, 84,241,213,239, 59,208,250, 26, 46, 85,227,244,218,147, 92, 11, 15,144, 81,177,116, 92,208, 45,189,156,149, + 20, 74,161,119,117, 61,243,204,211,127,248,200, 35,143, 61,246,121, 51,251,127, 42,160,245,245,245,235,174,187,238,245,175,127, +195,107, 95,251,186,130,232,180,194,240,184,114,184, 40, 35, 28,170, 52, 3,139,117, 1,113,198, 98,193,253, 5,191, 46,118,205, +121, 19, 81,147,212,192, 21, 80,189,114,229,202,199,255,248,143, 30,123,236,177, 75,151, 46,253,173, 8,232,218,107,175, 61,115, +230,204,205, 55,223,124,237,117,215,229,108, 94,103, 90, 20, 10, 95,172,194,187, 8,237, 97, 17,154,223, 15,249,141,133,119,144, + 72,127,128, 12,240,213, 30, 44, 41,167,119,244,137,224,153,167,159,250,244,167, 63,245,232,163,143,246,125,255,245, 17,208, 7, + 63,248,193,217,188,111,181,239, 1,119, 28, 97,144, 47, 77,206,139,239,118,223,131,135, 60,109, 31,109,227, 69, 84,105, 31,117, + 97,124, 12,219,233, 27,119, 86, 2,192,108, 54,251,195, 71, 30,121,228,145,255,249, 55, 21,208,143,253,248, 79, 52,194, 9, 27, +193,237, 16,169, 28,176, 60, 99,154,204,162, 92, 70, 15, 30, 84,165,197, 67,120,128,215, 50, 66, 5, 22,153, 28, 95, 93,197, 32, +144, 70, 21, 47, 28, 29, 13,125,223,255,238,239,254,231,207,127,254,243,255,119,253, 79,133,206,224,244,129,214,193, 49,230,124, +212,207,195, 74,147, 11, 15,142,149,110, 31,197,130, 99, 19, 54,210,211,145,134,114,172,172,195, 62,237,123,137,161,166,210,118, +177,254,120,232, 87,175,192,191,241, 77,111,122,232,161,135,111,184,225,134,103,159,125,246,224,172,135,175,194, 39,243,185, 10, +251,222,227,161, 85,218,195, 79, 22, 15,252, 52,126,144,135, 62,218,112,167,198, 16,103, 45,152, 99,244,235,197, 58,193,190,242, + 81, 69, 65, 41, 3,135,127,248,154,115,110,220, 33, 17, 1,178,228,219,110,191,253,142, 51,119,108,110,110,255,222, 71,255,235, + 19, 79,156,125,169, 26,116,207,189,247, 13,108,145, 74, 91,176, 69,142,206, 65,186, 67, 85,159,225,155,113,167,144, 52,198,197, +232, 30,237,193,146,208,131,170, 2, 17, 5,131, 58,175, 87, 20,132, 64,217,202,166,133, 12, 61,178, 87, 67,148, 81,120, 8,141, + 49, 68,178,226,253, 50,106, 67, 90,216,105,227,164,235,238,186,235,238,111,121,219,131,207, 60,243,244, 75,225,121,133,123,239, +185,119,124, 56,234,185, 25,145,134, 70,244,219,253, 54,105,209,118, 45,212,150, 14,209,192, 17,119,172, 72,135,131,209,198,208, +252, 32,139, 82,209, 18, 41, 97,104, 66, 37, 10,222, 44,165,163, 65, 22, 9,132, 50,226, 64,113,244,250,141,122, 5,200,221,119, +223,253,150,183,188,245,194,133, 11, 23, 47, 94,124, 81, 13,186,231,222,195,140, 48, 15,143,137, 23,159,137, 17,125, 0, 11,225, +206, 98,105,143,162,128,183, 53,169, 74, 8, 18, 3,130,138,250,103, 45,157, 99, 84,215, 29,107,140,120,248, 51, 14,187, 43, 59, + 29, 67, 53,182, 74, 74, 14,171,185,142,109, 83, 43,229,100,235,186,238,206, 59,239,186,227,204,153, 47, 60,249,228, 11,217,166, +112,247, 61,247,112,216,128,246,121,224,167,225,148,141,206,212,208, 46,212, 84,254, 96,161,178,170, 12,196,139,190,234,228,126, + 29, 56,255,168, 40,234,216, 5,141,196,224,196,145,226, 38, 91,207, 97, 41,143, 54, 95, 63,188, 30, 23,183,153,114,192,126, 15, +103,206,236,200,145,163,127,255,155,190,105,125,237,200,227,143, 63,118,136,153,253,190,239,255,129,195,207, 79, 97,193, 59, 63, + 65,230,201, 82, 42,108, 41,171,212, 22, 8,130, 34, 70,168,138,231, 4,147, 9,162, 86,175,171, 8, 5,159,151,160, 26, 3,161, +251,146, 48,169,232,251,152,173,161, 99,214, 72, 41, 30,106, 45, 27, 87,134,171, 23,151,198, 78, 15,251, 29,205, 16,130,141,254, +116,136, 12, 90,216,212,216, 86, 0,126,253,215,127,237,249,231,159,223, 71,240,186,235, 80,191,229,227, 26, 74,137,217, 56,155, + 59,129,135,153,204,198,100,204,222,150, 93,157,177, 15, 14,138,133, 88, 90, 22, 88,104, 69, 16,128,222, 72,143,210,129,209,148, +101,120, 55, 35, 13,146,197,136, 80,106,167, 68,147, 80,173,224,149, 70,239,138,224, 30, 98, 17,247,219,133,131, 33,194,248, 72, +190,249,254,183,172,172,174,250, 80,157,226,230,119,167,185,210, 88,232,148, 33, 63, 60, 41,113,111,102, 13, 95,206,185,150,159, +185, 72, 97,134, 15,173,130,136, 40,208, 69,132, 32, 46,169,107, 78, 76, 78, 29,139, 33, 0, 34, 93,135,129, 48, 36, 92,140,175, + 57,162,178,180,213, 98, 32, 58,160, 0, 35,165,236,203, 10,197, 59,192,220,112,122,147,198, 38, 25,196, 80,154, 78, 56, 4, 29, + 30, 7, 20, 74, 13, 64,230, 74, 29, 54, 17, 42,223,250,150,183,158,190,230,244,239,255,254,239, 57,216,130,239,248,103,223,227, +127,153, 50, 47,111,246, 91, 59,217,140,164,204, 18,119,167, 57,219,129,124, 11,141,200, 82,169, 18, 77, 84, 96, 12, 62,159, 0, + 75, 93,120,205, 13, 75, 55,189, 98,169, 11, 16,160,139,152, 68, 81, 5, 15, 49, 83, 24,221, 31,245,136, 97,177,120,161,173, 36, + 94, 67, 37, 12, 36, 40, 46, 16,131, 6, 63, 86, 95, 73,157,208,181, 0, 30,136,183,146,143,211, 23,109,241,119,136, 27, 27, 87, +126,251,183,127,235,202,149, 43,225,196, 43,110,219,222,181,237,221,180,189,155,183,118,243,116,102,125,102,202,214, 39, 38,107, +103, 65, 42,183,149,109, 79, 81,107, 75, 37, 23, 34, 21, 88,138, 58,137,136, 1, 93,135,227,235,241,216,122, 12, 65,221,169,171, +247, 66,238,207,112,177, 16, 96,188,112, 88,202, 22,116,142,157,118,109,239,105, 55,161,140,216, 97, 60,148,194, 60,182,225, 11, +236,245, 17, 59,137, 43, 43, 43,247,191,249,205,159,121,244, 81, 92,127,219,183, 31, 8, 84, 15,196, 48,139, 86, 21,149, 8,221, +202,230, 78,196, 8, 17, 71,214,226,114,167, 0, 98,192,245,167, 39, 55,156,158, 76,162,138,136,170,184,114,141,180, 6, 47, 16, +180, 99, 65,113, 6, 67, 94, 64,164, 97,214, 10, 70,127, 80,195,114,179,133,251,218, 98,204,129,209,108,167,253,112, 75, 35,238, +183,198,223,160,204,133,194, 32,139,120, 22,135,232,127,223, 65,168,145,114, 37,242,180,202,151,185,242,134,234,197,131,138,251, +117,109,118, 1,250,210,224,151, 22,216,148,218,122,109, 72, 31,251, 59, 25,143,164,105, 70,198,139,247,195, 98,139,158,233,130, + 30, 22, 34,230, 66, 54,195, 54, 84,176, 81,183, 72,163,104,208,104, 50, 54, 96,195,212, 0,145, 97,248, 76,153,181,227,117,122, +182, 68,156, 28,230, 47, 9, 9, 85, 89,154,232,218,170, 15,110,147,165,137,250, 20,152, 81,252,199,151,128, 97, 54,191, 85, 90, +238,106,126,133,170,128,173, 23,178,177,188,134,214, 72,243, 34,168,201, 96,184, 37, 23,229, 33,134,216, 31,108,237,131, 44, 92, +209,178, 39, 67,179,182,152,100,137,240,114, 40,246,171, 57,199,188, 84, 41,197,203,198, 64, 27,129, 28,213,121,160,209,250, 40, +109, 66,217, 64,183,112,110, 32, 14,134,184, 47,202,198,100,101,108, 53,209, 84, 86, 5, 27, 5, 85, 42, 83,122,148, 99,112,240, + 31,251,200,145, 7, 85,117, 68,155,108, 77,150,197,244,154, 74, 28, 76,228,104,172, 72, 81,165, 70,252, 45,156,188,234,111, 11, +179,169,249,231,210, 60, 15, 48, 6,116, 17,170,136, 1, 81,203, 96, 54, 52, 66,245,193, 78,124,175,134,191, 0,138,224,145, 84, + 35,247, 22,118,158,147,224,136, 26, 21,131, 86,121, 1,108, 52, 80, 30,192,171, 14, 53,118, 7,212,162,129,230, 34, 32, 85, 16, +109,236, 49,135,144,148,149, 85,128,186, 89,144, 38, 50,143, 64,198,249,150, 53,112,168, 18, 37, 15,123,183, 47,177,136,180, 16, +215,141,210,130, 42, 73,231,243,162,249, 19, 35,156,125, 50, 62,161,172, 96, 37, 91, 34, 55,156,172,197,143, 50,213, 9,173,148, + 80, 30, 2,104, 57,194,100, 96,210,120, 27,109, 83, 22, 86,151,238,204,172,218,109, 59,178, 41,230, 22,123,156, 37,251,253,107, +167,180, 85, 19, 59, 62,198, 67,244,226, 11,195,200,126,155, 25, 64,223,131,189, 25,125,162, 39, 41,123, 51,155,247, 53,121, 85, + 89,158,248,176, 68, 12,196,201, 33, 93, 62,108,131, 42, 77,232, 32,126,213, 50, 21, 55,165, 11, 13,223, 34, 81, 96,251,113,119, +107,243, 94, 70, 7,163, 49, 95,132, 77, 98, 34,109, 16,214,192,179,106,148,105, 25,196,139,195,203, 66,148,125,252,116, 54,122, + 22,156,209,203,148,138,147,156,245,156,238,249,240, 20, 9, 1, 1, 8, 90, 99,242,197,163,219, 80,181, 70, 23,133,129,104,196, +175, 74,196, 28,167, 36, 7,136,220, 69, 76, 33,196,130,226,161, 25,167,145,247,170,212,174,162, 45,180,194, 22, 33, 42,177,172, + 80,186,252, 69,205,104,217,114, 14, 10,201,101,196,214,120,104,217,254, 99,239,111,192,135,194,250,139,207,230,118,101,115, 62, +155,139,136,244,153, 87, 54,251,237,157,108,149,160, 98,117, 43,163, 98,125, 53, 78,162, 2, 8, 65,214, 87,195,250, 74, 8,161, +100,160,147, 88,200,248, 62,154, 70,181,232,170,211,194,124,126, 65,141, 28,252,193,114,164, 90,183, 64,101, 74, 65,114,142, 53, + 2,229, 2,158, 37,163,129,108, 24,205,234,169,182,167,192, 29, 67,216, 54,234, 56,164,212,161, 7,227,140,193,143,249,190,153, + 41,133,209, 86,224, 1,178, 79,178, 51,181,221,153,145,236,147, 92,185,218,111,108, 39,179,125, 74,130, 46, 32,103, 46, 77, 84, + 68, 98,212, 16,100,169,243,137, 20, 8, 81,125, 66, 64,177, 98,160,153, 52,162,208,208,246,225,207,110,131, 40, 10, 7,205, 80, + 7,160,181, 87,139, 37,127,225,194,193,109,243, 57,100, 68, 64,220, 23, 29,161, 4,170, 37,160,118,131,148,140,125,202,110,239, + 82,246,230,186,194, 4, 28,102,204, 45,226, 4,219,211,124,117, 43,229, 76,138,236,205,236,226,149,249,116,158,157,185,181,187, +231,137, 33, 60, 38,170, 14,158,217,100,119,150,103,201, 32, 80,205,125,178,237,221,236,232,197, 82,167,107, 43,218, 5, 16, 18, + 85,151,151,180,139,109, 82, 15, 43, 66,205,130,100, 47, 98,184, 67,180,204, 65,196,113, 68, 14, 29,216,112, 67, 87,130,171,126, +115,124,144,145, 31,148, 58,240,181,110,131, 49,103,166,228, 49,158,102,163,121,155, 5,169,138, 1,159, 39,178, 23, 81, 68,114, +198,214, 78,126,238,226,108, 54,207,168, 99,107,103,115, 27, 7, 92, 40, 99, 71, 42,135, 29,146, 41, 54,171,169, 25, 48,157,217, +213,237,228,145,215,202,114, 56,190, 30,187,168, 2, 78, 98, 16, 9, 64, 40, 17,178, 98,177,215,104,156,105, 31,142,145, 64, 36, + 26, 90, 80,213,252, 24,234,204,141,214,193,139, 33, 84,170, 4,204,138,244,141,224, 68, 97, 54, 75, 57,249, 13,189,237,179, 17, +243, 99, 40, 65,112,202,182, 61, 77,123, 51, 82,196, 50,175,110,205,119,118,251,190, 39, 33, 41, 89, 1, 19,202, 40,150, 50,234, +164,162, 8, 85,104, 70, 14,121, 21, 45, 75, 46, 51,119,101,214, 99,123, 55,199,104,128,196, 96, 70,219,157,149,121, 73, 93,212, + 73, 87,198, 85, 69, 69, 23,189,131, 92, 0,159,105,137,166, 36,195,251, 66, 27,157,211,248,142, 24,114,174,186,229,109, 41,182, +128, 54,148,152,204, 90, 75,129,145,243,121,134, 64, 36,119,157,206,122, 75,201,169,191, 84,133, 41, 2, 0,145,121,178, 47,159, +223,187,112,121,110,102,102, 50,221,203, 91, 59, 41, 57,203,191,162,243, 35,136,199, 26, 44, 95,215, 84,117,153,222,235, 5,163, +229,218,148, 54,155,113,123, 55,149,105,219,138, 73, 68, 80, 63, 95,178,182, 28,214, 86,125, 95,177, 4, 0, 0, 4, 78, 73, 68, + 65, 84,130,163, 49,203, 75,122,226, 72,244, 81, 82, 10,116,157,134, 6,175, 87,142,132,251,133, 40,213, 79,161,145, 92,165, 16, +203,171, 5,226,144, 70, 87,222,101,179,224, 86, 88,163,238,150,133,180,156,179, 64, 52,211,178,183, 12,138, 64, 44,229,100,133, + 58, 61,157,217,188,183,190,207, 30,221, 37,255,183, 54,147,186,157, 47,144, 22, 42,119,217,109, 42, 48, 52,180,213, 87,134, 84, + 47,212, 2,123,171, 72, 16, 89, 12,188, 80, 84, 82,230, 44,153, 86, 37,216,142,105,146,130, 99,228, 93, 12, 49, 84,130, 4,164, +170,150,168,104, 28,113,229,107,199,119, 9, 40, 27,188, 82,234, 45,165,211,173,160,124, 45,110,181, 6,126,100,227,246,212, 20, + 6, 69, 23,112,100,173,219,153, 90, 50,208,184, 55, 75,151,175,206,103,125, 22, 98,222,219,197, 43,243,205,157,190,229, 10,213, +111,194,188, 41,168,164,212,222, 1,128,161,185,179,100,235,190,197,222,117,103, 11, 57,181,183, 45,149,115, 99,150, 49, 51, 17, +241,137,118,216,217,203,178,217,220, 81,141, 49, 81, 52, 40,106, 25, 77,176, 52,193,202, 82, 8, 90,102,252, 68,171, 51,199,154, + 17, 38,188,253,110,196, 23, 16, 43, 91,214, 70,159, 21, 90, 54, 70, 73, 4, 7,224,211,104,170,102,214,167,236, 84,236,121,178, +121, 98,223,211, 71,218,154, 89,117,187,205, 26, 23, 62,180,121,232,181,184, 18,148,145, 73,222,199,193, 58,171,117, 84,172, 28, + 16, 30,162,206, 14,114, 55, 62, 50, 18, 20,191,191,121,170,110,101,134,144, 50, 26, 13, 4,145,169, 57, 35, 39, 50,212, 81,108, +222,142, 80, 83,141,129, 39, 48, 32,150, 68, 67,205,185,128, 32, 15,254,107, 48,159,163,112, 37, 40, 66, 24,108,154,217,128,106, +187,155,119, 0,191,154,152,241, 60,162, 54, 93, 9,229, 9,100,211,157,218,254, 0,142,254,207, 16, 45,178,107, 25, 85, 77, 62, +221,212, 15,227,140, 90,202,174,168, 51,105, 57, 84,217, 6,188,172,202, 33,182, 20, 20,195,228, 46,241,230,230,130, 3, 53, 20, +205, 26, 17,133, 13,244, 29,116,170,109,111,117,145,137, 76,249, 64,229,177,114,189,171, 37, 70,117, 8,181, 7, 96,104,166, 3, +155,162,160, 85, 11, 10,233,220, 48,204,119,192, 0,223,185,177,146,102, 4, 42, 24, 83, 14, 9, 57,120,122,214, 62,237, 58,204, +169, 98, 21,238,119,170, 47,143,108, 29,144, 85,213,155,203, 42, 45,146,205,147, 55, 73,177, 65,107,144, 18,232, 12,253,193,251, + 51,187,113,154, 53,192, 5,168,192,215,200,216, 55,159, 85,246,218,224, 13, 14, 11,115, 22,189, 27,132, 85,195,225,166,135,173, +129,190, 6,128,197, 23, 58,187,170,117, 95,214,120, 7,254,191, 16,168, 89,164, 15,252,170,198,144,195, 11,192, 34, 7,191,222, +122, 69,209,220,153,175,211,202,217,171,135,118, 36, 77,105, 67, 25, 91, 92, 64, 46,192,232,227,130,123,211, 55,191,105,131,108, +107,193,194,106,207, 78,243,228,210,108,160,214, 54, 29, 12, 67, 73, 75,234, 92,130, 37, 12,103,136,101,108, 36,164, 36, 91, 67, +104, 88,149,166,156, 69, 74,211, 82,142, 0,190,218,236,140, 88,221,228,136, 97,192,161,203,201,219,214,253,244, 21, 59, 86, 15, + 19, 49,206,212, 48, 42, 38, 12,131,195, 48, 32, 51, 50,244,210, 52,244,155,196, 8,167, 42,205, 36,208,241, 84,153, 33,234,176, + 90, 1,107,253,190,213,187, 80,198,228,153, 58, 50,142, 3,196, 90,134,197, 85, 83, 70,159,200,202,102,160,164,109, 71,169, 14, +177,141,112,241, 84, 99, 0,180,108, 40,235, 89,237,148, 25, 88, 21,181,228, 96, 37,133, 47, 90, 54,180,156, 29, 66,159, 26,215, +168, 70, 81, 62, 57,206,243,135, 86,121,148, 22, 90,105, 7,174, 44,185, 1, 42,172,223, 23, 27, 85,127, 91,204, 75, 11, 38, 81, +219,203, 75,146, 68, 84, 8,144, 53,160,170, 70,188,193,107,245, 8,162,185, 87,241, 33, 24,222,109, 52, 16, 48,133,198, 33,156, +101,241, 41,197,108,219, 80, 0,174,137,104, 27,126,143,125,112,211, 62,154, 71, 65, 1,218, 56, 3, 90,139, 81, 81, 66,205, 42, +103, 67,153,199,233,173, 94,126,103,171, 32,184,152,152,138, 86, 25, 53,144, 95, 7, 27, 10, 14,162,173,135,169,152,115,241, 17, +146,197, 55,180,115, 54,170, 37,161,197,245,209,101, 33, 67, 74,229,195, 76,199,115, 2,171, 45,179,154, 67,202, 62, 73,213, 1, + 34, 37,171,228, 80, 41, 95, 68,248,216, 6,198, 55,183, 88,145, 0,114, 52, 46,162,153,139, 69,195,212,178, 83, 41, 37, 33, 27, + 64,136,226,205, 28,104, 97,181, 44, 62, 89, 86, 57, 8,171,166, 69, 42, 3, 53,173, 2, 53,138, 65, 51, 91, 60, 26,101,176,210, +117, 66, 70,105, 94, 67,155, 50, 91, 11, 7, 45,165,110,203,109, 16, 63,199,216,226, 62,194,149,181,128, 10,178, 0,191,130, 67, +176, 48,174,229,176,213, 56, 43, 0, 88,229, 62, 12,162, 28, 64,250, 58,226,163,158,141,218, 69,222, 12,199, 96,141, 90,128, 84, +156,224,248,105, 28,225,121, 28, 86,249,127, 0, 16,193,207,161, 22,223, 57,207, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/mix.png.c b/source/blender/editors/datafiles/mix.png.c new file mode 100644 index 00000000000..5acf62b7cfe --- /dev/null +++ b/source/blender/editors/datafiles/mix.png.c @@ -0,0 +1,333 @@ +/* DataToC output of file <mix_png> */ + +int datatoc_mix_png_size= 10448; +char datatoc_mix_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, + 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, 11,252, 97, + 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, + 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, 21, 0, 4, 17,164, 74, 11,162, 0, 0, 32, 0, 73, + 68, 65, 84,120,218,237,124,105,172,101,217, 85,222,247,173,189,207, 29,222,123, 53, 87, 87, 15, 30,218, 61,216,216,110, 48,238, +182,219, 3,225, 71, 20, 12,145, 76, 44,134,200, 72, 64, 20, 35,230, 72,193,120, 0, 60, 38,138, 66, 36,147,160, 72,196, 16,130, + 4, 4, 18, 18, 36, 32, 36,225, 87, 80,136, 98, 32, 38, 10, 49,134, 4,240,220,109, 99,211,110,186,170,171,186,170,222,112,135, +115,246, 94, 95,126,236,189,207,189,175,170,220,182,131,137,130,228,251, 94,189, 87,239,190,251,206,221,103,237,181,215,240,173, +111, 45,224,243,125,220,113,231,157,247,220,115,239,205,207, 19,192, 91,222,250,246,156, 19, 1, 51,163, 89,140,177,139, 49,118, +221, 59,222,254,182,242,162,240,250,239,127,195, 48,244, 57, 39,119,207,238,238,185, 11,171,105, 92,238, 76, 15,190,247,111, 63, +231,183,255,199,213,195,195,131,240,224, 67, 15,122,206,158, 93,144, 92,247, 63,227, 35,183,157,190,124,254,204,193,201,221,125, +135,223,251, 37,175,126,239,123,255,123,188,114,109,249,199,143, 44, 14,150,153,180, 87, 61,120,185, 31, 66, 8, 33, 78, 28,176, +156,242,114,153,222,241,142,119,134,171,233,217,235, 33, 75,146,171,243, 79,126,250,137,229,169,147,147,105,103,202,254,248,149, +243, 71,203,185,164,176,123,246,126, 2, 16, 32,157,219,189, 60, 12,254,248,197,149, 52, 89,246,119, 92,217, 63, 35,136, 66,132, +220, 37,146, 0,115, 22, 13, 87,158, 58,245,129, 79,159,189,235,188, 30,124,254, 48,153, 8, 66,216, 61,125, 31, 41, 64, 0, 78, +237,236, 63,113,237,194,245,197, 41,144,135, 71,249,145,199,150, 41,227,252,233,142,183,221,251, 85, 68,128,129, 34, 72,208, 72, + 16,129, 33,144, 70, 26, 44, 70,185,196,140, 76, 51, 66, 6,100,192, 0,135, 0, 64,100,128,127, 78,219, 21,198,255,205,231, 59, +207,122,214,179,204,184, 92, 46,111,220,187,135, 30,122,232,171, 94,245,213,146,140,164, 89, 8,161,108,220,175,255,250,127,250, +157,247,190,183,190,232,245,175,255,126, 65, 4,205,140,198, 73,167,157,153,230, 83,157, 62,181, 58,119,122,241, 55,191,245, 23, + 0,132, 7, 31,124,200,179,187, 92,210,185,189,139,207,188,237, 79,207,157,190,126,246,228,193,116,178, 48,173,191,236, 37,127, +235, 61,239,249,175,252,171,127,253, 91, 31,121,108, 69,114,218,241,219, 95,115,101,111, 55,206,231,113, 62,239, 32, 29, 46,247, + 62,125,249,254,233,108, 22,214,241, 30, 0,238,218,155, 94,189,252,228, 19,171,117, 62,125,106, 98,202,253, 16, 30,253,244,115, +228,112, 41, 58,220,220, 1, 11, 88,231,148, 63,241,167,139,229, 74,119, 63,251, 25,171,225, 46, 87, 14, 17, 2,194,238,217,251, + 41, 0,152,118,171, 89, 60,202, 57,126,240,177,187,254,248,209,217,201,189,233,116,194, 34,210,176,123,246, 94, 64, 2, 8,157, +156, 31, 60,250,228, 61,201, 99,118, 61,246, 68,255,216,165,245,237,103, 39, 93, 71,222,118,207,171,104, 6, 26, 1, 1, 70,131, + 17, 12, 68,160,133, 96, 1, 22,163,195, 77,162, 32, 0, 70,185, 19,164, 25,144, 9, 8, 52, 57,190, 80, 15,110,255,240,134, 55, +190,105,119,103,183,108, 82,249,160,209,104, 22,140,100,176,240,238,119,255,216,197,139, 23,111,125,161, 31,248,193, 31,202,158, + 33,192, 85, 46, 75, 20,229, 52, 26, 1, 90,128, 89, 32, 25, 66, 48, 90,249,114,230,196,242,239,126,255, 63,218,190, 80, 92, 44, + 22, 64,185,123, 0,224,214, 3,196,233,189,131, 51, 39,247,247,118,250, 73,244, 24, 24,140, 22,104,128, 66,252,247,191,240,218, + 15,253,233,151,255,252,207,255,235,143,125,244,163, 0,226,208,247, 0, 92, 90,247, 58, 88, 36, 23,119,231,225,244, 94, 60,185, +123,116,231,185,139, 33,184,133,144,179,101, 51, 6, 35,233, 78, 8,204, 67,207,176, 90,246,223,242, 45,223, 26, 66,248,251,127, +239,157,124,206,139,190, 49,187,114, 46, 55, 69, 0, 48,238,116,139,103,159,127,226,228,142,223,253,172,221, 59, 46,204,230,179, + 56,153, 88, 23, 67, 57,134,230,158,101,159,186,116,247, 98,125, 34,152,153, 89,232, 98,152,159,122,174,187, 87, 61,145,131,144, +251,222,116,127, 62, 57, 24,214,126,233,169,245,227, 79,172,174,237, 15,202,110,148, 59, 14,143, 38, 79, 94, 59,253,248,147,183, + 45,215, 83,185,202,195, 93, 81,200,144,224, 38, 74, 52,120,146, 8, 36,101, 79,128, 1, 71, 71, 58, 60,194, 35,159, 34,195,236, +228,169,179, 23,206,158,156, 77, 67, 23,141,150,140, 86, 78,160,185, 71,121,130, 12,150, 37, 74, 9, 52,201,251, 62, 12, 51, 4, +122,202,241,201,195,219,142,250, 19,174, 72, 35, 47,173,201,203,243, 89,124,246, 29,179,187,239,156, 79,187, 16, 99,185,154,243, +182,251,190, 26, 32, 65,149,111, 52, 0,134,124,215,233, 63,219, 95,157, 60, 88,159, 4, 40,210, 64,193,104, 6,129, 36, 45, 20, +129,146,182,183, 19,207,158,158,242,220, 61,127,141, 32, 89,159,133,128,242, 98, 52,173,106,191, 3,141, 34,204,138, 89, 37,141, +132, 96,102, 70, 90,148,188,104, 50,104,168,194,166, 81,197, 86, 67,148,209, 4, 88, 49,140, 6,101,192, 8, 19, 28, 34, 41, 57, +100,194,255,119, 15,222,242,217, 51,103,206,156, 62,125, 6,192,122,189,186,118,237,218, 98,177,248, 60, 46,116,255,115,159,251, +218,215,126, 83,147,108, 19, 62,205,130,153, 89, 8,225,218,181,235, 63,250, 79,126,228,233, 46,244,214,183,189,221,179, 75, 42, +103,151, 0,205,202,198,208,234, 35,148,139, 89,136, 93,124,203, 15,253,224, 45, 46,244,166, 55,255, 0, 84, 62,202, 46,177,108, + 44,203, 78, 50,208, 16,130,145, 22,172, 24, 18, 59,185,179,126,244, 19,159,254,241,159,248,185, 99,102, 36,165, 36,149,205,211, +104, 70,196,182, 34,106, 98,222, 89,142, 17, 49, 98, 18,125,111,190, 62,123,234,224,217,119,216,139,191,244, 7,191,227,123,127, +244,216,133,160,141, 22,148,197,144, 78, 48, 4, 63,181,123,120,246,212,254,238,188,159, 4, 15, 49, 4, 2, 70, 71, 12, 25,158, + 23,239,250,145,119,189,237,173, 53,120, 49,207,217,199,135, 92, 46,185,228, 30,108,117,238,196,165,243,167,255,108, 26, 14,161, +236,180, 12,203, 52,135,201, 61,185,231, 60,228,212,191,235, 93,255,184, 94, 40,231,156, 61, 47, 87,195, 19,151,151,159,190,184, +186,114,109,181, 90,167,192,229,222,236,218,222,206, 85,165, 52,200,146,211, 93, 40,219,145,165,156, 83,210, 48,160,239,213, 15, +253,247,189,254,245, 0,226,181,195,254, 99,159, 90, 93,185, 54, 84, 9,129, 93,212,179, 47, 44, 95,120,207, 98,103,198,233,212, +186,156,221,224,110, 46,149,136,129,242,101, 63, 91,174,163,123, 70,210,249,115,231, 9,134,133,221,123,176, 72, 94,196, 36,151, + 20,217,155,174,175,151,251,215,174,173,204,108,103, 22,204,202,209,149, 11,244,156,179, 93,190,126,102,127,185,151,115, 13, 50, +190,250,107,190, 38,204,207, 60, 15,190,189,107,152,134,213,172, 91,116, 92,244,189,239, 31,165,126,240,221,157, 24, 2, 41,135, +231, 62,199, 43,215, 79, 95, 63, 58,217, 15, 93, 61,217,164,164,112,226,220,151,128,155, 11, 1,152,196,213, 78,183,236,226, 0, +169, 79, 90,173,125,221,251,238,204, 98,228,114, 61,187,122,112,242,250,209, 94, 63, 76,132,234,210,139,149,142,174, 76,144, 16, + 68,152, 92,164, 28,112,201, 93, 32,252,104,145, 62,253,196,210, 24,206,158,157,155,237, 45,251,221,236, 17,144, 89, 22, 85,245, + 24, 41,156, 56,251, 92,108,121, 16, 10,211,174,159,196, 85,199,129, 53,236,227, 48,132,199, 46, 77,175,236,159,115,156, 18, 66, +121,177,218,137, 44,231, 44,236,158,187, 95, 82,253,149, 8, 83,180,126, 22,251, 24, 7, 9, 2, 83,238,174, 28,157,125,242,224, +252,149,125, 28, 45,243,124,106, 49, 20,197, 7,196,241,224,135,221, 51,247,209,136,205,170, 20, 45,117,113,232,226, 0, 32,229, +238,210,193,249,131,213,169, 34,215,229,202,159,188, 62,244,131,119,209, 98,108,127,199,178,162,179,247,169, 46,116,244,218,222, +197, 97, 26,251,236,118,241,224,194,178,223, 3,192,178,108, 48,101,191,190,159, 47, 94, 75,215, 14, 82,159, 52,155, 88, 12, 4, +201, 11,247,126, 13, 40,192,208,238, 24,212,201,217,225,206,100,113,180,222, 59,236, 79, 66,213,179,176, 28, 69, 51, 0,132, 21, + 59, 17, 66,216,219,137,103, 79, 77,120,219,189,175,170, 49, 12,172,132, 51, 37,228,106, 95, 73, 90,177, 3,245, 30, 70, 47, 82, +222,219, 12, 8,102,140, 80,137,224, 65,122, 17,157,179, 90, 55, 74, 32,138,143,144, 0, 67, 85, 62, 17,148, 76,197, 31,193,228, +128, 9, 46, 8,148,170, 89, 18, 5,186, 32,119, 66, 18, 33,151, 3,146, 28,146, 67,160, 3,160, 67,213, 92,136,130, 73,128,228, +114, 65,144,187, 67,240,162,235,148,151, 55,104,203,104,139,247,154,160, 20, 65, 16,109, 13, 95,124,124,254,126,118,124,220,123, +239,125, 47,124,225, 11,239,185,239,190,179,103,206,108,158, 85, 61, 5, 44,193,115,253,102,215,174, 93,251,232, 71, 63,242, 71, +127,244,135,143, 62,250,232, 23,102, 65,123,123,123,175,125,237, 55,221,121,231, 93,238, 69, 21,208,172, 29,199, 72, 9, 45,186, +226, 13,145, 52,155, 27, 43,206,153, 6, 34,118,221,191,251,229, 95,254,189,223,123,223,231,174, 28,124,205,107, 94,243,194, 23, + 62,224,174,230,106,170,221,188, 97,201,228, 38,108,227, 24,215,223,184,164,146,112,108,150,213, 22,106,102,236,194,193, 79,252, +243,159,251,147, 79, 62,254, 89, 22,244,134, 55,190, 25,101, 33, 55, 45,165,189, 47,182, 62,142,173,166,216,217,104, 78, 99, 12, +110, 6, 51, 24, 97, 37,200, 52,196, 32, 18,243,105,111,198,147,123,135, 49, 64,138,180,248,186,239,254,217,229,178,191,229,130, + 98, 78, 67, 91,196, 38,169,217, 90, 13,117,108, 65,219,155,167,157,217,202,168,189,249,194, 76,147, 46,197, 14, 70, 5,194, 2, + 73,148, 80,198, 12, 93,200, 70, 11, 33,215,116, 11,246,238,127,250,119,174, 28,220,245, 51, 63,253,211,143, 60,242,200,141, 11, + 74, 57,227,150, 27, 92,178, 75, 54,103, 67,140,214,209, 44,207,186,117, 48, 63, 49, 63, 52,211,206,116,101,134,174,243, 16, 16, + 72, 11,168,219, 5,210,138,194,129, 96,118,210, 25, 32,144,158,251, 97, 88,189,238,219, 94, 23,227,228,167,254,197, 79,126,242, +147,159,220,150, 80,218, 58, 61,117,105, 41,109,140,117, 12, 6, 34, 26, 45,144,144,153,119, 97, 56, 49,187,110,230, 59,179,165, + 81,102, 8,148,220, 4,122, 48,137,193,204, 65, 3, 80, 80,143, 12, 64, 52, 0, 74, 0,137,156, 83, 78, 9, 12,242,254, 59,191, +235,187, 39,221,228, 45,111,169,241,104,120,209,151, 63,232,174, 33,121,159,188,239,253,104,237,203,101,190,186, 63, 28, 44,210, +254, 97, 58, 88,228,117,239,203,149,123,246,148,100, 92,205,186,163, 46, 30,157,216,219,239, 98, 31,152, 5,119, 81, 32,104, 98, +201,130,141, 84,217,235,226, 59,106, 62,227, 89, 82, 82, 72,137,135,203,221,195,229, 94, 61, 71, 82,246,252,170,175,250,234,199, + 31,127,252,242,229,203,241,218,254, 32,232,242,181,180,127,152, 86,131, 31, 46,114, 81,215, 18, 35,169, 96, 65, 80, 8, 10, 1, +207, 60,183,188,251,142,163,221, 57,231, 83, 24,109, 58,165, 25,131,213,236, 49, 4, 3, 76,202, 17,230,202, 36,139,227, 42,194, + 47,233,209, 98, 53, 73, 41,174,214, 33,231, 92,143,164,220,221,100,250,230,111,254,150,223,250,173,247,240,206, 23,124, 93, 5, +146,198,240, 65, 80,251,185,124,149, 48,237,214,209,242,222,236,224,212,252,192, 76,179, 14, 93,199,103,222,181, 27, 3,110, 63, + 63,139, 93,136,129, 49, 50, 24, 67,176, 34,165,226,208, 73, 24, 92, 64, 86,128,248,228,213, 11,139,126,158,114,151,189,179,230, +184,173,154, 46,210,172,184,105,128, 13,124,144,111, 14,119, 85, 41, 2,136,214, 79,194,208,217, 96, 76,112,172,214,234,123,126, +232, 99,251, 22,120,241,201, 85, 8,118,247, 51,119,119,118,194,108, 18, 38, 19, 55,179, 0, 89,139, 69, 6,239, 8, 92,217, 63, + 55,228,184, 90,239, 38,239, 8,144, 46,170, 37, 23,164, 84,190, 70, 20,144, 70,172, 9,177, 32,243, 49,182, 52, 87, 11,196, 50, +153,164,228, 46,146,144, 92,146,153,178, 46, 61, 53,144,188,182,159,204,248,172, 59,166,183,157,155, 76, 39,182,187, 27,165,110, +177,218, 1,194,213,195,211, 66, 72,169, 43,154, 69,203, 98,205,152,140, 53,216,102, 1,229,164,216,162, 14,128,144,156, 36, 68, +192, 89, 66, 17, 18,240, 98, 55, 85,130, 86, 23,168,146,201,149, 80, 87,116, 64,171,149, 25,245,193,143,195, 31,245,201,100,111, +119,239,124,215,197,243,167, 79,150,157,168, 33, 33, 69, 56, 85,236,129, 12,230,150,139,173, 43,191, 52, 42,186, 68,169,186, 6, + 1,112,128, 16, 69, 8, 78,144, 34, 36,207, 18,228, 1, 89,160, 64,194, 93, 70, 58,148, 97,160, 29,172, 78,102,239, 22,253,238, +122,152,129, 36,115, 23,253,220,169,253, 46,240,238,103,204, 99,224,238, 44, 6, 43,167,196,200, 12, 26,144,235,169, 49, 50,139, +164,140,145, 18, 40, 72,245,141, 92, 13,116, 80, 1,120, 75, 52,229,110, 3, 67,231,161,168,154,193, 5, 14,153, 66,120,106,113, + 70, 10,139, 97, 39,123, 36,172, 94, 77,214, 15,186,120,101, 13,242,169,131,193,200, 59,206, 77,187,142,231, 79, 79,230,179, 16, +204,186, 40,167, 17, 25, 32,115,129, 49, 72,183, 40,100,169,136,199,139,183,146, 28,101,113, 2,233, 69,177,178, 27, 16,115, 54, +119,150, 45,115, 15, 87,142,206, 0,225,168,223,145,204, 21,200, 34, 96,147, 64,102,193,220, 69,226,104,233, 0, 87,189,211,240, +248,147,125,140,220,153,197, 19, 59, 97, 54, 9,231, 78,119,193, 56,157, 4, 54, 64, 39,150,248,181,236, 82, 13,229, 75,240,105, +213,189, 73,164,144,114,200,206, 73, 8, 41,133, 44, 27,242,196, 21,143,214,187, 18,179,135,102,149, 93, 52,168, 68,211, 38, 57, + 1,201, 60,187,140,222,131,192, 48, 12, 36, 15, 14,211,229,104, 49,240, 83,151, 66, 32,231,211, 96,102,123,243, 96,193, 10,206, + 45,130,116,146, 14,167, 72,149,111,160, 92, 69, 72, 89,132,108, 57, 76, 93,112,217,144, 39,146,165, 20, 96,205, 82, 73, 50,177, +198,201, 38,247,166,201, 94, 98,119, 20,107,228, 70,121,206,134,222, 1,226, 40, 27,208,117,129,228,108, 26,130, 89, 4,156,168, + 57,174, 68,194, 41, 35, 11,164,132,150, 46,212, 24,113, 61, 76, 87,195,180, 26,136,146, 18,170,109, 82, 61,136,148,201, 32, 10, +197, 54,155,156,102,146, 80, 50, 33, 21, 37, 85,205,189, 28,110,232,251, 76,179,126, 16,192,216,244, 89,108,169,164,224, 45, 70, + 5,139,198,147, 64, 53, 72, 0,156,205, 54,149,173, 46,231, 66,178,150,181,120,189, 73, 17,230, 53,235, 48, 2,238, 78, 99, 67, +216, 12, 42,183, 84, 20, 87, 4,100,136, 40,176,156, 81,112,193,232, 62,102,183,128,188,130,136,213,152, 2, 28,157, 75,211,123, + 64, 5,202,179,242, 70, 5, 25, 66,133,173, 75,174, 6,213, 43, 21,219, 86, 96,192, 98, 97, 13,146,224,132,201, 74,154, 86, 12, +145, 11, 82, 77,160,138,203, 40, 66,174,113,155,224,114,161, 96, 54, 66,173,210, 20,213,129, 92, 4,228,144,138, 21, 45,191,164, +224,114, 16,240, 17, 84, 0,224,242, 22,158,214,120, 71,117,143,116,139, 8,241,139,143, 47, 62,190,208,153,235, 38,246,238,226, +206,124,103, 50,153,204,102,243,174,235, 80, 67,239, 97,181, 90,175,215,171,163,163,163, 92,170, 30,127,161, 11,234,186,238,197, + 47,126,240,249, 47,120,193,221,207,190, 59,196, 86,113, 20, 97,245,156,213, 20,144, 52, 51, 73, 31,255,248,199, 63,244,193, 15, +188,255,253,239,239,251,254, 11,188,160,175,253, 27,175,121,224,129, 7,186,216,105, 68, 32,183, 33,187,227,153,227,152,225, 3, + 8, 33,208,216,247,253, 31,252,254,239,255,218,175,253,199, 63,215,130, 98,140, 15, 60,240,192,171, 95,253,181, 26, 99, 87,141, + 48,230, 38,165,223,206,240,143,103,246,199, 83,123,210,204,246,247,247,223,253,207,126,236,232,232,232,243, 91,208,217,179,103, + 95,253,234, 87,223,117,215, 51, 11,102,180, 21, 77,111,189,104, 59,232,223,250,250, 25,215, 84,162, 83, 32,196,112,233,226,197, +127,245,243, 63,255,212, 83, 79,125, 78, 11,250,190,239,251,190,249,124,183,153,207, 27, 51,252, 77, 38,191, 73,162,183,165,212, +208,190,146,168, 98, 27, 96,216,222, 76, 78, 58,125,226,209, 63,254,201,159,250,197,207,186, 32,155, 76,103, 41, 37,119, 79,158, +182,144,253,250,233,238, 94,234,117,174, 92,202,119,229,153, 92,126,108, 47,203,229,167,242, 31,151,123, 46,149, 2,101,207,217, +115,206, 57,189,224, 5,247,252,228, 79,252,131,189,189,221,207, 82,173,127,249,203, 95, 33,185,171,120,171, 27, 31,117,239,198, +170,200, 22,102,211, 66, 8,183,144,141, 30,227, 16, 67,234,186, 33,134, 97, 18,215, 93, 28,102,221,106,210,173,118,231, 71, 39, +119, 14, 78,238, 92, 63,115,226,169,221,217,193,215,189,230,197, 93,236,254,232, 3,143,125,198, 5,189,236,229, 47, 63,254,198, + 91,159,210, 77,231, 80,199,112,180,154, 49, 56, 9,179, 12,194, 76, 70,152, 57,161, 96,217,204, 99, 76, 49, 12, 93, 55,204, 39, +139,192,193,130,158,255,188, 59,238,120,230, 43,127,247,119,223,247,153,116,232,245,218,188,193,141, 26,191,125,186, 55,167, 30, + 0, 48,157,172, 39, 33,119, 93,154, 79,215, 33,104, 50, 73, 70, 6,202, 72, 11, 26,245, 40,154,155,101, 51,198, 78, 36,193,160, +220,125,226,137,251,215,131,189,243, 29,239,188,133, 14,213,154,208,118,109,232,248,163,128,191,245, 85,227,147,242,128,100,214, +119,113, 53,155, 46,166,147,229,206,244,112, 62, 61,218,153, 29,237,204, 15,119,102,139,157,217, 98, 62, 57,154, 79, 14,167,113, +217,133, 62, 90, 95,254,144,185,135,134,236,153,196, 63,252,225, 31,190,197,130, 84, 11, 83, 79,251, 40,117,190,250, 42,159,116, +203,249,228,104, 54, 59,220,153, 31,205,186, 69, 96, 31,217,171, 69,205, 46,184,168, 2,137,128, 78,184,152, 81, 48,110,151,234, + 13, 74,110,102,111,125,219,219,111, 90,208,103, 90,207, 88, 40,148,198,175, 16, 92,154, 77,150,243,233,209,206,236,112,119,186, + 63,157, 44,163,245,198, 4,247, 18,143,137, 38,208, 91, 46, 42,152, 72,119,182,251,114,120,150,202, 97,212,137,189, 19,223,241, +157,223,117,108, 65,219,187,147,115, 78,158,215,125, 94,173,243,106,157,150,171,180, 90,231,126,240, 52,212,189, 34,134,192, 20, +216, 71, 91, 83,185, 44,211,125, 11, 46,117,109,171,255,184,211, 37,132,117, 71,114,102,201,179,138,142,100,207,247, 60,231,158, +151,190,244,225,141,195,216,178,201, 26,146, 4, 28, 45,138, 69,130,196, 24, 48,157,134,104,220,219, 1,160,217,100,105,212,206, +244,112, 50, 25,106,150, 36,203, 52, 9,146, 65, 12,101,107, 24, 74, 74, 48, 70,231,146,148, 51,192, 4,147, 91,114,100,135,209, + 13,112,195, 55,124,227, 55,126,240,131, 31, 40, 85,103, 75,217, 83,246,101,159,151, 43, 63, 90,229,197, 50, 47,251,188, 90,249, +106,237,171,181, 47,123, 95,174,124,177,202, 71,203,124,180,204,253, 48, 12,169, 47,183,167,102, 51, 93,173,150, 81,183,150, 5, + 99,118,194, 1, 7, 50, 42, 78,145, 69, 79,150,171, 46, 85, 83, 42,247,148,210, 27,223,244,230, 42,161,195,101, 74, 73,159,124, + 98,237,142,107,251, 67,242, 45,239,213,252,134, 81, 49,176, 11,254,208,243,174, 78,162,246,102,128,208,117, 38, 24,137, 8, 7, + 36,154, 75,116,146, 82,137,233, 29, 5,247,105,190,209, 61,115,209, 79,220,163,151, 83, 98, 94, 42,185,193,108, 58,157, 62,252, +240,203,222,247,190,255,105,195,224, 67,242,156,149,115,206,170,229, 29,185,148,219,249,246,246, 91,247,148,220, 61,167,156, 83, + 82, 74,197, 24, 40, 11,197, 97,200,229,142,209,235,100, 87,202,202,142,236,202, 94,148, 94, 57, 89,206,165,104,233, 85,202, 94, +137, 86, 95,255, 13,223, 64, 50,172,226,125, 23,159,234,143,150,121,185,118,247,141,247,172,217, 83,171,129, 77,226, 58, 96, 8, +186,122,116,180,190,122,109,117,233,242,106, 61,104,221,123,118,116, 93, 45,164,181, 42, 83,169,191,214, 20,155,114, 22,207,228, + 54,164,238,210,181,243,139,245,124, 72, 93,139,174,216, 16,104,200,117,242,212,201,184, 30,242,166,196, 88, 42,111,238,205, 62, +171,228,136,168, 69, 50, 79, 57,187,107,221,231,100, 24,134,156,146,229, 84,111,195,114, 67,224,224, 86,210, 63, 2,144, 17, 4, + 50,160, 34,170, 76,137, 21,162,115,128, 14,163, 90,186,248,240,195, 47,139, 80,115, 26, 68, 99,185,148,178, 95,205,110, 1, 26, + 53,177,158,144, 33, 7,203, 57,195, 51, 46, 94, 94, 63,117,173,223,153,197,147, 39,250,249, 60,220,121,219, 60, 4,159, 77, 3, + 98, 48, 31,188,129,158, 9,209, 97,125,223, 29, 46,247,146,199,229,122, 82, 36, 34,186,209, 36,208, 33, 83,112,119, 90,206, 57, +150,130,158, 54,160, 94,193, 95, 11, 2,234,168,199, 71, 69,107, 11, 16,169,236, 50,246,107,239, 7, 74, 41, 4, 72, 26,178,187, + 56,233,132,156, 1, 88,144, 50, 72,184,220,193,148,185,234, 39,238,150,115,133, 20,107,170, 95, 33,108,184, 25,225,116,198,154, +246,194, 75,165,185,194, 8,242,173, 48,218, 1, 39, 51, 75,170, 95,202,216,165,132,234,234, 7,238, 31,164,213, 90,174,163, 73, +103,207,184, 99, 22, 3,231,179, 16, 81, 32,155,176, 30,166,125,154,164,212,173,250, 73, 77,178,155,228, 71, 11, 74,147,220, 65, +138,140,133,140,198, 38,162,130,100,120,181,104,162, 55,128,129, 78,122,171, 27, 9, 86,137, 4, 67,242,148,185,234,125,221,251, +116, 26,206,158,138, 93,180,105,164, 19,253, 96, 57,199,197,122,186,236,119, 92, 33,229,104, 44, 55, 4,211, 6, 82, 47, 4,180, +122,189,130,194, 22, 84,161,112, 10,132, 98, 75,202,202,229,165, 20,173,237, 98,158, 64,121,173,246, 87, 64,210,141, 41, 59,122, + 92,188,156, 66,176,163,213, 78,140, 70,155,145, 93,159,186,156, 75, 85, 89, 94,188,109,129,192,188,214, 29, 10,154, 91, 10, 54, +238, 30, 11, 76, 1, 65,116, 21, 30, 66,209,158,106,251, 55,241, 90, 5,167,168,230, 17, 28, 24,143,160, 82,143, 60,248, 71,254, + 36, 25,237,196,169,157, 16,186,115,167, 79,204,166,147, 77, 64, 78,149,250,243, 77,123, 54, 38, 56,146, 20,139,153,169,199,190, +162, 75, 5, 14, 2, 42, 48, 92,180,189,201, 71,104, 0, 90,193,207,139,150,209, 21, 33,246,169, 3,205,150, 10,193, 39,147,156, +114,234,162,197, 96,133, 69, 84,240, 41, 59,190, 14,107,118, 8,238, 2, 98, 21, 23, 36, 86,158, 70,133,168,225, 37,165,168, 0, +142,128, 2,154,151,141,109,124, 8, 1, 73,116,239, 14, 86, 39,165,112,125,117, 10, 48, 92, 37,168,179, 39, 87,147,174,191,237, +236,228,220,201, 46, 70,155,207, 10, 62,199,138,136, 53,227, 82,149,217,140, 0,220, 99,149,190, 10,240,198, 17,202, 43, 2,243, + 81,161, 84, 86, 39, 81,213, 63,145, 89, 20, 41,183,228,204, 50,119,186,170, 38, 18, 74,174,144,125, 24,188, 79, 46, 33, 6,144, +140,193,170, 92,138, 16, 42, 98,200,145,160, 21,161,170,104,149,226, 81,127, 93,204,116, 93,152,128,228, 52,154,139, 16,172,240, +235, 68,193,150,253,252,104,125, 34,123, 88, 12,187,197, 9,180, 67,203,235, 7,137,196,245,163,252,216,165,245,124, 22,110, 59, +221,117,209,110, 63, 55, 53, 98,210, 1,110, 77, 72,155,218, 42,221,227, 86,108, 95,144, 55, 67, 65,232,170,171,241,138,181, 54, +100,113, 68,103,139, 61, 85,102,150,121, 65, 3,205, 36,145, 14,153,203, 97, 70,103,206, 62,144, 93,242,148, 68, 86,106,119,118, + 25,179, 89, 80, 41,172, 64, 86,108, 9, 25, 27, 19, 81, 5, 52, 37,107,109, 69, 78,142,231, 14, 72, 57,144,238, 78, 90, 48,102, +128, 7,203,189, 85,154,165,220,173,210,172, 80, 89,224,213, 41,213,106,138, 92,176,148,145, 61,245,131, 29,173,114,160, 93,188, +210,155,241,236,169, 46,154,221,118,102, 50,153, 88, 23, 25, 35, 28,102, 16,164, 88, 85,168,170,136,163,217, 35,178,248, 62, 21, +231, 93,105, 70,117,233, 0,149,101, 41,135,193,131,187,181, 99,209, 54,191, 48, 79,172, 98, 5, 2,233,222,187, 49,100, 80,193, +108,119, 30, 82, 80,118,247, 12,133, 80,162, 37,193, 92,138, 40,133, 4,182,111, 0,170,139,169,134,200, 65, 56,134, 28,141,158, +178, 73, 88,167,153, 20, 22,235,121,159,167,238,166, 90,221,104,254,164,149, 69,189, 65,197, 16,156, 52,185,178,173,122, 55,232, +226,149,158,196,213,253,193,130,205, 38, 33, 6, 78,187, 48,155, 6,154,197, 86,205,116, 86,147, 83,189,107, 81,206,106,143, 11, +242, 43,115, 25, 93, 67,154,100,183,148, 99,206,177,189,128,213,243, 56, 96, 94,206, 51,137, 98, 82, 72,208,229, 70,131,123,162, +155,134, 37, 72, 44,150, 46, 98, 54, 13,209, 56,159,197,221,185, 72,198,177,140, 89,149,165, 90,151,102,142,189,216, 2,184, 83, +134,195,213, 46,168,148, 59,201, 82, 14,181,184, 86,140, 47,218, 9,118,192,188, 86,186,204, 26,180, 67,186,188,152,186, 6,194, + 59, 72, 33, 37,201,224,235,156, 29,160,197, 13, 52, 62, 86,163,189, 29, 41, 86,133,168,197, 25,231,254,250, 4,183, 72,221,133, +148,171,209, 49,176,226,246,197,106,168,254,178, 86,223, 4,171,133,213, 77,141, 89,213, 61,211,144,124,185, 20, 73, 43, 25,103, +117, 95,165,150, 51, 70,176, 37, 89,229, 88,218, 40, 97,137,168,182, 17, 37,244, 43, 5, 32,182,164,191,208,240,203,113, 30, 17, +255, 34, 21,170, 58, 52,140,129, 67, 35, 41, 87,210,149, 12, 35, 83,159, 94,234, 29,149, 29, 79,199,198, 34,184,151,124,176,154, +203, 18,112, 22,105, 56, 10, 11,185, 97, 52,181,242,130,102,192,234,134,169,150,147, 37,170,149, 85,219,175, 11,189,140, 37,174, +169, 41,139, 70, 89, 11,222,206, 54, 4,120,121, 99,142, 65,183,220, 91, 16, 2,247,234,120,107,145,180, 6, 50, 99,225,157, 77, + 28,213, 75, 52, 69,171,213,229,234,138,138,139,171,154,108,172, 2, 40,133, 54,212,171,123,235, 84,169, 73,132, 23, 12,161, 45, + 14,205,190,160,114, 69, 75, 49,178,210, 79,203, 31,171,218,123,169,241,245,188,226, 77,197, 27,214,240,177, 4,197,245, 26, 78, +183, 22,194,202,155,131, 83, 35,253, 85, 90,222, 70,131,209, 10, 79, 69, 70,172, 12,189, 74, 91,244, 42,132, 81, 70, 69,192,133, + 55,216,208,173,194,209, 29,129, 12,214,165,121, 75, 82, 74, 45, 16,170,226, 45,193,128,143,139, 80,125, 87, 73,112,140,133,167, +170,192,226,104,138, 27, 49,214, 27, 33,102, 12,156,202, 95,169,226,187,181,188,214,194,205,234, 1, 80,173, 1, 8, 90, 17,122, + 61, 19, 42, 22, 7, 35,252, 82,249,145, 37,221, 3,106, 15, 86,219,167,234,106,170,100, 75, 92, 53,146, 20,197,186,113, 45,149, + 86,181, 64, 45,204, 35,116, 3,116,255,197,130,217, 23, 31, 95,124,124,241,241,151,165,222,250,116,151, 32,247, 78,156, 56,121, +226,196,238,238,222,169,211,167,206,158, 57,123,234,244,233, 83, 39, 79,238,236,238,237,238,206, 39,147,105,169, 81,109,149,221, +182, 88,155, 66, 74,105,185, 92,236, 31,236, 31, 28, 28, 94,186,116,241,240,224,240,250,254,245,131,253,253,107,215,174, 29, 28, + 28,252,229, 19,208,206,206,206,253,207,125,222, 51,158,241,140,219, 47, 92, 56,117,234,244,206,238, 78,140, 17,194, 45, 13,254, +241, 74,205,177,106,206,177,255,140,228,214,155,248,208, 41,165,197,209,226,250,254,245,199, 31,255,244, 71, 63,242,145,143,125, +244,163,233, 11, 84,249,254,130, 9,232,194,133, 11, 15, 62,244,208,151,126,233,139,166,211,137,180,137, 42, 62,251,117,107, 72, +135, 45, 92,170,254,200, 18, 85, 87,132,166,118,203,141,197,210,237,130, 46, 90,163,113,137,150, 5,149,174,174, 79,125,234,147, +191,249,158,247,124,248,195, 31,114,247,255,167, 2,218,219,219,187,253,246,219,191,236,203, 94,116,255,253,207, 45,136,142,198, +194,240, 86, 49,241, 6, 25,241,150, 74,179, 97,177, 30, 67,156,121,188,224,254, 25,191, 30,239,154, 43,172,236,237, 34,226, 88, +139,191,122,245,234,127,251,237,223,250,240,135, 63,124,229,202,149,191, 16, 1, 93,184,112,225,129, 7, 30,184,231,158,123, 46, +220,126,123,206, 94, 11, 19,199,132, 34,224,233,212,134,219, 6,105,203,210,108, 63,127,204,248,224, 22,180,254, 91,146, 1, 62, +219,147, 53,229, 44, 77,135, 0, 62,245,169, 63,249,253,247,255,238,251,223,255,191,135, 33,125, 97, 4,244,142,119,188, 99,221, + 15, 99,237,123,131, 59,110, 97,144,159,155,156,143,223,237, 13, 79,222,226,101, 55,208, 54,158, 70,149,110,160, 46,108, 31,195, +241,244, 21, 18,131, 66,200,179, 73, 10,193,151,203,254, 55,254,203,239,252,231,223,120,239,159, 87, 64,111,122,243, 15,140,132, + 19,141, 4,183, 91, 72,229, 38,203,179, 77,147, 57, 46,151,173, 39,111, 86,165,227,135,176, 82, 89, 54,220, 22,219, 42, 13,141, + 20,235,241,242,173,149, 19,220, 50,232,102, 10, 86, 91, 7,187,152,167,147, 62, 90, 65, 97, 2, 24,215,171,244, 51, 63,247, 31, +254,240,143, 62,254,127,215,255,196,239,127,195, 27,111,212,154, 91,119,153,212, 94,179, 91, 56,249,155,180, 99,195,126,228,230, +207,182,165,182,173, 17,102,110, 5, 38, 32, 13,178,224,102,245,165,102, 24, 5,100,108,100,107,192, 12,193,196,250, 87,232, 98, +238, 66, 42, 6,170,235,134,221,233, 50,134, 6, 14, 89, 40,237, 30,238,147,223,252,157, 39,126,241,151,222,123,229,202, 83,159, +151,128,162,220,159, 94, 46, 79,119,198,142, 87, 5, 56, 18,176,116, 92,168, 55, 60, 43,193, 80, 26, 23, 72, 24, 61,132, 92,142, +137, 81, 33,248,216, 81, 64,106, 84, 25,131, 26,117, 11,164, 10,177,164, 92, 33, 90, 42, 82, 38, 24,144,160,220, 70,119,176, 80, + 72, 11,232,250,229, 47,186,255,217,247,188,252,234,181,229,175,252,242, 47,125,236, 99, 31,251, 92, 5,148, 71,156, 99,235, 38, +111,186,107,221, 28,224, 84, 86,108,129,174,106,183,223,198, 65, 29,139, 6,184,245, 39, 80, 48,159,198,117, 23,147,153, 8, 77, + 38,195,108,178, 14,230,165, 4, 52,233,114,168,164,115,129,168,157,214, 91,142,190, 36,254,193,142, 69, 18,173,105, 18,128,213, +122,159, 0,210, 42,117,222, 32,194, 7,249,176,183, 59,251,142,239,248,118,151,254,229,207,254,220, 35,143,124,118, 49,133,135, + 95,250,240,182, 69, 86, 53, 54, 91,164,161, 45,250,237,141, 54,233,184,237, 58, 86, 91, 58,254,210, 86, 6,112, 2,100,238,226, + 16, 44, 25, 68,122,180,212,197, 84,105, 71,112, 51,103, 3,123,140, 34,100,112,180,242,111,193,188,140,181,237,175, 33,148, 13, + 81, 41, 84,229, 90,238, 42, 36, 95, 47, 56,139,139,203,245,236,104, 61,119, 89,129, 86, 30,122,201, 75, 94,249,202,175,184,116, +233,210,229,203,151,159,246,136,109,164,179,109,100,110,161, 50,184,169,241,172,170, 73, 45, 18, 87,149, 33,183, 42,114,173,101, + 38,134,180, 51, 93,116, 49, 3, 48,243,157,217,106, 18,251,130,255, 24, 21,232,213,238, 26, 27, 84,196, 74, 39, 55,202,140, 64, +101,130,147, 69, 58,176,210,224,192,237,131,220,144,220, 90, 78, 46,253, 0,149,247,173, 44,101, 40,203,139, 97,115, 13, 54,155, + 77, 95,247,186,111,123,252,207, 30,255,197,127,251,111, 62, 83, 12, 21, 94,242,210,151,142,244,236,173,207,155,126,218,144,138, + 26, 25, 14,194,177,118, 33,221, 20,120,106, 68, 93, 67, 72,147, 56,152, 37, 66,102,185, 11, 67, 8,217, 44, 91,129,178, 40,142, +138,192, 13,197,161,181,212,105,171,207,142, 99,141,133,155, 52,101,243,227,104, 22,132,109,168, 22,238,182, 92,207, 22,235,121, +150, 81, 99, 45, 28,238,126,226,196,201,191,242,149, 95,185,183,123,226, 35, 31,249,240, 45, 52,168,204, 32,185,197,249,169, 44, +120, 0,200,142, 62,121, 74, 85, 79,234,243, 4,193, 96,140,177,114, 22,140,156, 76, 24,171,137, 85,140,121, 18, 83,217,248,105, +236,119,231,135, 93, 76, 69, 21, 99, 16,144,199,226, 64,118,120,107, 82, 42,149, 11, 43,237, 52, 13,247, 47,149,196, 74,104,104, + 88,121,217,140,145,180, 56, 62,209, 26,149, 80, 73, 93, 8, 36,178, 51, 57,115, 70,206,200,149,251,233,165, 89, 43,123,118,249, +195, 15, 63,252,178,151,189,236,199,127,252,159, 61,241,196, 19,199, 52,232,161,135, 30,186,165,223,114,201,189, 98,153,238, 90, +247,133,162,163, 44,101, 87,114,229,210,150,221, 98,168, 50, 33, 32, 86, 98, 41, 0,197,144,163, 13,164, 27, 61,198,126,214,173, + 99, 76,100,177, 50, 13,224,188, 41, 56,225, 88,185,220,106,176,231,118,164,196, 77,223,196,104, 50, 71,166, 74,109, 46,216, 40, + 48, 91,131, 9,151,235,217,209,106,199, 21,182,195, 97, 29,247,186,175,120,249, 43,231, 59, 59,101,168, 78,213,160,197,178, 38, +199,217, 85, 40, 67,101, 75, 82,210,106,237, 35,190,156, 51,142,149, 89, 71,112,154, 52,219, 68,196, 93, 68, 44,140,224,160, 51, + 39,214,231, 78,173,186, 32, 66,179,169, 38, 33,213, 86, 14, 34,132,218,165, 95, 28, 27, 89, 59,115, 74,149,183,180,155,148, 54, + 58, 18,161,148, 53,205, 91,204, 89, 58,150,216,132, 51, 22, 56,170,180, 27, 64, 13, 23,135, 28,221, 3, 64,151,245, 41, 20,190, + 20,199,250, 54, 73, 41, 55,234,176, 3, 50,125,197, 43,191,226,182,243,183,253,234,175,254, 74, 1, 91, 98, 63,148, 35,198,148, +181,127,148, 14,142,178,187, 36,172,147, 22,203,156,253,166,124,139, 26, 67, 27,110,164, 95,179,162, 64,209, 68,176, 11,160, 47, +119, 38,171, 20,179, 1, 36,134,129, 22, 10,239, 74, 38,122,169, 80,171,138, 0, 94, 9, 38,102,168,213,199,134, 1,228,140, 16, + 74,179, 79,171, 29,141, 81,230, 88,203,173,245, 24, 0, 42, 83,167, 68,186, 35, 37, 75, 41,208,232,110, 57,177,146, 38,197, 58, +211,138, 26, 91, 33, 85, 34, 11,247,228,126,255,253,247,127,207,247,124,239,207,254,236,207, 92,189,122, 53,156,185,227,249,135, + 11, 63, 92,164,195, 69, 62, 88,228,229,218,135,172,148,125, 72, 74,222,218,122, 88,251,143, 74,197,136, 99,107, 97, 61,238,141, +237, 36, 15,230,198,108,144, 49, 77,187,117,180,101, 78,105,221,231, 33,229,148,211, 98,153,142, 22,105,177,200, 67, 86,114,245, +131,134,193,107,127,230, 56,106, 70,219,228,169,186, 13,242, 45,190,215,232, 57,202, 84, 15,140,129, 73,125,218, 69, 7, 33, 38, + 15,203,245,108,213,207,134,220, 13, 67, 92, 13,211, 97,232, 54,149, 33,220,200, 94,223, 98, 39,105, 62,159,191,252, 21,175,248, + 95,127,240, 7,188,243,249, 95,127, 60, 40,228, 45,162,104,222, 34, 81, 40, 27,215, 6,125,148, 61,241, 46,246,209, 74, 71,166, +239, 78,143,246,166, 71, 70, 23, 16,130, 38,209,141, 4, 52,153,216,233, 83,147,189,157,104, 70, 26,119,231,225,196,110, 23, 98, +181,210, 33,148,142, 91, 88,165, 58,227,248, 96,174, 58, 85,103,203, 68, 53, 51, 83, 78, 40, 3, 93, 78, 3, 48, 12,221,213,195, + 51,203,245,188,212, 95,179,135,156, 59,108, 19,175,113, 3, 46,176,133, 22,144, 22, 76,185, 82, 24,110,136,118, 70,175,192, 27, +243,176,198, 14,110, 68, 30,108,202,243, 18,232,148,202,144, 40, 50,163, 80, 76,233,196, 88, 99, 20,164,148,212,247,126,196,108, + 70,171, 77,126,140,161, 76, 30,225,116, 98, 49, 88,201,194,140, 12,161,180, 26,104, 11, 6, 42,119, 38,110,197, 65,108,171,116, + 71,242,174,156,194, 33,197, 97, 96,206,149,149,223,230,248,108,247,185,181, 16,170, 1,120, 24,169, 91,146, 11, 22, 44,250,200, +236, 31,153, 45,216,116,166, 97, 12,196, 42, 77,179, 85,224, 27,157,117, 43,243, 39,203,104,152, 48, 0, 48,122,176,108,204, 70, + 47, 5,231,236, 42, 13,233, 67,202,203,181,143,244,207,249,204,118,231, 49, 4,146,220,153,133,243,231,166,243, 89,160, 33,144, + 93,103,101,146, 29, 71, 3,135,113, 41,155, 53, 57, 44, 43,148,189, 90, 15,179,195,197, 94,246, 88, 98,159,245, 48, 75, 57,110, +230,129, 65,155,106,179,198, 94,236, 90, 64, 46, 22,169, 2, 8, 37,228,200,136, 44, 54,128, 55,166,237, 91,101,212,234,246,129, + 13,239, 96, 11,228,240, 38,241,145,120, 44, 43,132, 81,185,182, 70,129, 20,162,124, 93,106, 33,210,145, 70,228, 92,184,151, 70, +170, 79, 92,175,179,177, 78,181, 41,109,226,172,218, 84, 58, 38,219,148,158, 45, 16, 33,139,238,197,119, 88, 74,200, 25,217,107, +185,184,116, 14,176,145, 25,113,139, 28,115,235,148,112,108,178,172,166,215, 13,113,219,232,109, 48,137, 58,234, 71, 99,128,225, + 45, 33,172, 44, 8,109,201,171,178, 34, 4,200,152, 67,200, 0,140,165,169, 20,141,158,176, 89, 65,229, 78, 52, 58,209,106,173, +245, 80,120, 61,215,119,173, 0, 0, 8, 65, 73, 68, 65, 84,181, 48, 75,151,159,234, 67, 48, 2,147,137, 93, 56,219,157, 57, 21, + 67, 48, 0,211,137,205,102, 22,204, 72,101,197,126,152,122, 46,169,104, 88,245,179,117, 63, 19, 12,130,195, 82,142,181,145,149, + 91,249,208,103, 5,111, 52,198, 96,106,156, 1, 25, 24, 29, 91, 4,169, 77,182,160,198, 42, 96,107,114,169,142,170, 74,172, 81, + 99, 91, 96,223,210, 90, 84,118, 87, 25, 47, 5,109,152,133,198, 58,194, 14,108,212, 0,149, 12,163,140, 45,116, 53,138,140, 55, + 78, 96,159,188, 31, 20, 11,103,154, 12,198,108, 48, 67,150,134,132,202, 14, 21,114, 70,202, 28,233,148, 57,163,145,133, 74,213, +191, 81,174,183,207,214,246, 71, 11,172,198, 82, 66,125,138,148,231, 72,199,134, 73, 83,186, 51, 70,101, 81,115,233,133,153,165, + 99,195,169,216,136, 10, 34,183,176,124, 47,228,147, 13, 51,168,205,172, 80, 37,209,169, 50,120,138, 19,172,219,155, 33, 20, 62, +194, 32, 26, 28,196,208,243,104,129, 79,212, 0, 5,147, 73, 55,155,159, 8,214,129,232, 66,152,239,204,187, 24,173, 12, 12,129, + 21, 74,132, 54, 16,204, 77, 89,119,163, 9,221,140, 95,141, 73,100,113, 61,155, 35, 86, 34,105,208,111,196,221,189,181,102,183, + 40,140, 91, 78, 77, 85, 72, 85,144,245,212,140,177,123, 27,115,229,168,205, 7,106, 42,200, 13,114, 86,175, 52,206,233, 44,103, +175,108, 26,220,115, 27, 84,146,220,179,171, 44,104,200,200, 96, 8, 4,208,197, 16, 98, 32, 2,110, 0,167,183, 24, 37, 27, 92, +129,162,179, 54,255,104,243,239,216,193,107, 1,206, 49,164, 79, 66, 8, 81, 26,123,192, 43, 95,124,227,189, 26,181,171,106,139, +188,178, 69,154,207, 45,196,164,218, 77,138,218,178,228, 35,176, 37,211, 24,114,171,210, 33, 37, 88,187, 54,235,172,173,194, 90, + 49, 18, 57,199,245, 48,117,149,208,218, 86,195,108,200, 19,212,177, 23,101,196,161, 3,232, 98, 58,177,179,154,116, 70, 90, 8, +216,219, 9,123,243, 16, 66,237, 62,156, 68,150, 38,137, 18, 73, 86, 99, 95,120,148,197,245,109,172,118,121,178, 30, 41, 51,219, + 88,166,162, 68, 57, 71,140,224,210, 86, 47,100,115,248,237, 16,160,153,161,102,123, 42,220,209, 68, 75,110,227,253,117,126, 1, + 90,255, 0,125, 67,134, 67, 37,124, 11,130,249, 24,232, 85,224,203, 51,135, 28, 83,238, 68, 72,182, 26, 38,125,158,213, 49, 2, +220,108,109, 23,220, 61, 77, 39, 6, 32, 70, 11, 1,211,174, 76,164, 96,136, 86, 38, 4,212, 16,153,114,199, 72, 20,170, 62,126, +204,244,198, 65, 20,149,131, 86,224, 35,105, 43, 10,141,133,188, 87,177,211, 45, 86,126,227,126, 17,227,200,219,227,209, 17, 43, +157,176,234, 69, 89,128,131,217, 9, 24,225, 62,102,236,141,130, 93,101, 84,220, 32,233, 2,192, 33,119, 67,154, 72, 1, 84,242, +184, 26,102, 37,138, 17, 44,123, 84, 93,111, 99,227, 2,146,178, 99,177,206,235,228, 4,205,242,144,252,112,145,203, 56,205,105, +103,187,115,235, 2, 69, 68,179,217,212,186, 56, 14,207, 42,208, 91,157, 77,215, 88,223, 55, 57,185, 90,192,173, 34,142,205,222, + 3, 91,108,184, 77, 87, 66, 57,119,163,227, 35,182,252, 32,176,153,111,211,114, 34,167, 23,100,152,230,162, 23,219, 89, 57,252, +226,232,232, 27,111, 14,226,144,186,163,126,238, 30, 64,186,135,117,154,102, 89, 97,136,182,184,223, 91,172, 94,225,161, 44,248, +122,132, 17,185, 92,251,245,195, 84, 2,172,249, 44,156,222,139, 93, 52, 80,147, 24,128, 64,134, 26, 33, 27,143,247, 26,109,103, +218,183, 46,167, 19,136,206, 49,230, 30,253, 24,235, 96,198,154, 64,108, 29,179,134,184,160,177,223,171, 62,141,174,190,176,249, + 80,167,168, 20,200,188,224,197, 37,136,119,201,197, 33,119,238,177, 80, 17,251,212,165, 20, 93, 38,210,101,222, 90, 50, 74, 23, + 90, 97, 27,110, 76,121,117, 1,210,166,188, 38,207,200,141,151,187, 30,120,184,200, 49, 58,137, 24,220,229,139,117,157,151,212, + 69,155,116, 44,253,217,209,216, 69, 27, 33,151,146,247,141, 74,178,117, 95,227,232,156,145,239,200, 77,206,213,134, 48,141, 75, +241, 49,146,220,234, 94,242,177, 93, 8, 66,174, 96, 3,130,204,163,185, 23,132,189, 96, 60, 21,106,151,135,101,191,187, 24,102, +101, 71,178,199, 33, 79,218, 12,147,150,223, 65,173, 79,197, 53, 66,137, 26, 35,210,178, 55,165,215,139, 46,207, 94, 87,176, 94, +235,112,145,234,180,109,227, 36, 50, 88, 57, 95,216,157,133,221,121, 40,173,227,179,169,157, 57, 17, 39,147,138,118,119, 93, 65, + 98,176,113,112, 37,220,119,143,104,126,138, 35,201, 21,149, 88,222, 44,208,104,181, 56,162,189,163, 5,247,202, 26,101,227,107, +214,120,192, 81, 17,219,226,204,221, 41,148, 53, 32,123, 72,206, 50, 70, 18,160,156,106,238,184,145, 46,107, 30, 92,137,204, 44, + 51,121,198,166, 17,140,221,141,109,206,101,227,179,182,246,159,182, 97,133,192, 91,134, 47, 35,101,173,147, 91, 83,130,195,152, + 38, 41,148,106,109, 23, 67, 12,141, 32, 65, 52,213,130,193, 34,168,173,244,171, 82,119, 43,213,164,222,114,237,181,169,157,110, +149,170, 50,226,156, 62, 34,246, 46,246, 57,150,241, 86, 70, 31,172, 27, 66, 44, 67,194,147,199, 62, 77,178, 2,137,172,176, 30, +102, 67,142, 99,243, 30,219, 52, 62, 47, 77, 65, 53,165, 46, 29, 0,108, 8,120,163,218, 87,147, 81,186,238,252, 88, 78, 93,218, +150,234,185,113,207, 92, 59,128, 50,209,142, 71,171,140,253,209, 29,209,218,180,189,162, 65,209,234,104,130,233,132,243,105, 8, + 86,146, 21, 70,175, 51,160, 70,197, 69, 93,170,111,241, 5,224,173, 33,117,220, 26,109,230,178,110,106, 47,170,152,112,161, 95, + 11,185, 28, 49,152,171,124,178,112,174,107, 84, 65, 82,173,204, 92, 98, 20,167, 83,220, 12,221,169, 43, 97, 29,153, 84,250, 56, + 90, 23, 15, 55,125,218,155,138,125,137, 42, 74, 11, 19,213,114,198, 81,130,244,218, 8, 85,248,220,165,122,171,232, 42,128,101, +150,229,204,156,164, 80,197,194,219,238,125,213,200,247,199,214,156,240, 22, 49,111, 32,177, 27, 50,212, 26,169,234, 24,101, 99, + 59, 65, 3,220,120, 44, 46, 29,203, 67,146,181,122, 78,235,196,208,246, 60,162,113,186, 18,235, 11,164, 81,119, 90, 81,153, 27, + 16,103, 43,178, 27, 51,170,150,124,150, 24,106, 51,206,104, 76,217,109,156, 43,216,128,173,134,199, 85, 97, 23, 57,196, 49, 5, +229,102,114, 23, 0,111,231,138, 26, 81, 52, 31,107, 86,141, 41,190, 61, 78,175,220,176, 31,171, 78,231, 77, 65,155,219, 69,190, +113, 28, 20,218,216, 89,142, 61, 0,155,102,186, 10, 62, 53,146,121,171, 75, 22,126,251, 8,107, 98,211,135,135,106,172,198, 22, +129,218,212,165,150,173,182,252, 15, 21,179, 7, 55,129,239,136, 85, 84,191, 83,125,121,212,216, 1,217,118,119,116, 89, 21,153, + 24, 49,182, 81, 82, 26,161, 53,130, 21,244, 25,251,131,183, 50,187, 99,196, 23,201,185, 37,175,177, 51,117, 99,236, 71,159, 85, +247,186,116, 53,214, 3,219, 52,183,116,131,168,105, 56,139,233,209, 86,251, 95,171,101,214,230, 95,200, 54,181,222, 22,239,176, +246,219,108, 58, 10, 42,196,176,201,223,202,182,120,212,198,175,143,189,162, 99,141,160, 44,169,140, 44, 6,217, 14,237,150, 52, + 49, 14,101, 28,227,130,177,190,176,169,203,114, 76,151, 91, 60,224,173, 31,148, 99, 67, 90, 49,248, 45, 42,108, 81,214,104, 3, +173,181,233,108, 18,246,150,161,179,246,211,110,206,144,234,216, 72,214,222,177,173, 81,209, 77,105,234, 89, 20, 70, 45,221,164, +160, 26,155,157, 25,155,155,196,102,198,200,120,204,235, 4,179, 86, 41, 47,118, 76,194,118, 87,211,216,169,188,105, 53,231,113, + 90,199,136, 24,183, 94,154, 17,253, 86, 11, 49,212,154,108, 41,209, 36, 29,139,237, 89, 27,100,197,237, 18,106,109, 44, 26,193, + 2,232,134,220,144,218,232,203,168, 92, 21, 55, 40, 67,213,154,129,194,184, 29,181,214,219,198, 93,163, 14, 81,216,176, 8, 29, + 35,154,233,173, 83,166, 90,163, 17,207, 46, 14, 96,147,138,140,240,238,173, 88, 15,227, 76,182, 27,162,124,105,123, 56,249,166, + 85,158,181,133, 22,227,129,171, 75, 30,233, 53, 35,213, 70,141,117,211,102,208, 85,211,130, 86, 53,170,135,184, 38, 73, 53,235, + 65,187,163, 38,159,154,118,113, 59,229, 24,131, 50, 32,106, 76, 58,125, 67,192, 44, 99,254, 52,102,174,229,221,171,217,246,209, +224,195, 71,118,135, 70,131,122, 12,110,194, 13,223,181,233,171,169,245, 46,108, 17, 21, 37, 31,195,119,175,160,144, 26, 11, 74, + 99, 40,208,166, 0,192,154,140, 42, 58, 94, 26,223,183,129,214, 38, 60,141,237,133,197, 28,121, 77,246,142,157,179, 13, 13,174, +142,122, 16,193, 88, 71, 30,106,203, 5,183, 9,130,220, 84,155,107, 39,176,198, 89,198,199, 36, 85,239, 89,117,152,165,184, 53, +253,112,155,124,215, 60,195,198,126,141, 48,154, 54, 57,221,134,207,114,131, 97, 26,179,211,114,195,101, 60,229,198,108,160,182, + 96,170, 33, 43,133, 89, 70,152, 54,194,106,157,214, 86,163, 7,109, 10,180,165, 34, 48,226,176, 85,198, 17, 27, 43,221,166,118, +212,230,181,177, 4,213, 80,106,142, 41,245,184,220, 17,226,215,150,237,225, 13,132, 43, 31,131, 36,226, 88,173,132,218, 4, 11, +220,148, 63, 90,103, 90, 29,195, 95,213, 72,219,161,105,131,150,198, 0,101,235,108,212, 60,122, 68, 21,183,172,209, 24, 32, 85, + 39,184,253, 50,109,193,248,218,172,242,255, 0, 2, 20, 76, 70,229, 56,168, 10, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/multiply.png.c b/source/blender/editors/datafiles/multiply.png.c new file mode 100644 index 00000000000..6648ecdf5d2 --- /dev/null +++ b/source/blender/editors/datafiles/multiply.png.c @@ -0,0 +1,320 @@ +/* DataToC output of file <multiply_png> */ + +int datatoc_multiply_png_size= 10039; +char datatoc_multiply_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 96, 0, 0, 0, + 96, 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, 11,252, 97, 5, 0, 0, 0, 6, 98, 75, + 71, 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155, +120, 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, 21, 0, 4, 17,164, 74, 11,162, 0, 0, 32, 0, 73, 68, 65, 84,120,218,237,125, + 91,176,173, 89, 85,222,247,141, 57,255,181,214, 94,123,239,115,217,167,251, 52,221, 45, 66, 95, 64,160,149,216, 77, 55, 32, 49, +137,196, 91, 21,134,138,146, 64, 20,171,148, 74, 52,149, 60,224, 13, 21, 5,226,131,229, 37,151, 74,149,151,170,132, 7, 41, 33, + 38, 38,241, 82,165,121, 49, 79, 65, 19, 65,163,160, 17, 5,161,185, 9, 54, 77,159,238,115,250,236,179, 47,235,246,207, 57, 70, + 30,198,156,243,255,247, 62,187, 27, 80, 76,197, 42,214,161,207, 57,123,157,189,215,154,107,204,113,253,198, 55, 6,192,231,250, +120,198,237,183,223,117,215,221, 55, 63, 79, 0,111,252,161, 55,229,156, 8,136, 8, 69, 98,140, 93,140,177,235,222,252,166, 31, +246,111, 10,223,245,221,223,211,247,155,156,147,170,102, 85,213,188, 90, 45, 87,171,229,241,209,141,123,239,185,243,218,181,131, +195,195,195,112,255, 3,247,107,206,154,213, 96,166,246,241,143,126,224,198,141,171, 71, 71, 7,139,163, 27,217,236,235,190,238, + 21,239,126,247,187,227,181,253,229,159,124,100,113,184,204,164, 92,222,185,126,235,185,220, 33, 32,168,154,104,206, 41,229, 55, +191,249, 45,225,122,250,226,117,159,205,204,212,174, 94,189,114,237, 70,191,179, 21, 98,132,170, 93,188,120,121, 58,155,155, 89, +216,222,187,151, 0, 12,102,150,214, 55, 52,235,181, 27,253,180,155,220,121,251,109,187,231,246, 12, 70, 67,132,169,154,145, 4, +104,166, 10,136,156,255,243,253,139,249,147,184,127,222, 79, 96, 48,132,237, 11,247,144, 6, 24,129,212, 31,197,233, 94,156,236, + 16, 60, 58,206, 31,121,100,153, 50,110,185,208,241,214,187,191,154, 8, 16,192, 8,146, 20, 18, 68, 96, 8,164,144, 2,137,209, +212,140, 25,153, 34,132,137, 33, 3, 2, 40, 12, 0,140, 12,208,207,234,186, 66,251,219,214,214,252,153,207,124,166, 8,151,203, +229,233,187,123,224,129, 7,190,250,107,190,214,204,132,164, 72, 8,193, 47,238,191,255,198,111,188,235, 93,191, 93, 94,233,213, +175,126, 77, 74,189,230,172,170,170,185,223,108,214,235,229,114,113,124,233,210,185, 23, 60,255,222, 63,122,223, 7, 0,132,251, +239,127, 64,179,170,169,153, 93,189,250,216, 99,143,253,217,225,225,254,226,240,198,106,117,164,154, 95,243,205,223,246,206,119, +254, 15,126,213,215,127,235, 71, 30, 89,145,236, 2,239,186,245,137,233, 36, 76, 98, 12, 93, 71, 96, 62,223,121,214,179,159, 59, +157,205,194, 58,222, 5, 64,213, 54,235,131, 79, 95,217,239,147,237,204, 3,161,100,184,227,206,187, 9,168, 89, 84,168,168, 2, +162,121,163,170, 87,158,220,244, 9, 95,114,247, 45,119, 60,227,139,114,206, 27,194,128,104,170, 6,130, 10,131, 65, 97,241, 40, +237,189,255, 19,211,237,115,233,210, 5, 49,243,187,219,187, 27, 48, 3, 72,203,155,227,201,206, 29,148,152,213, 30,121,108,243, +200,227,235,219,246, 38, 93, 71,222,122,215,215, 80, 4, 20, 2, 6, 8, 5, 66, 48, 16,129, 18,130, 4, 72,140, 10, 21, 51, 26, + 12,128,208, 84, 9, 82, 4,200, 4, 12, 20, 83,124,190, 30, 28,127,241, 61,223,251,125,219,243,109,131, 17,229, 23,133, 66,145, + 32, 36,131,132,159,249,153,159,186,114,229,202,217, 47,244,253, 63,240,131, 89, 51, 12, 80,243,151, 37, 64, 33, 33, 20, 2,164, + 32, 72,160, 48,248,107,134, 32, 33, 44,151, 71, 63,241,227, 63, 57,126,161,184, 88, 44, 0,255,244, 0,192,209, 3,196,241,209, +193,241,209,254,102,179, 2, 40, 82, 13,192, 40, 34,175,253,230,111,124,222,125, 15,254,194, 47,252,135, 15, 63,252, 48,128,216, +111, 54, 0,212,108,189,177,195, 69, 82,227,246, 86, 56,191, 19,151,139,163,107, 79,124,218, 96, 66, 9, 81,132, 2, 6,146, 80, +154, 33,105,146, 32,253,102,243,218,215,126,107, 8,225, 71,254,197, 91,248,236, 23,190, 42,171,229,236, 31,138, 0, 76,104,105, +157,215, 87,167, 93,190,109,111,114,113,183,155,116, 33, 68, 17, 9, 34, 36,105,230,138,246,236,249,246,185, 32, 34, 34,161,139, + 97,235,252,115, 84,181,232,137, 41, 8, 83,205,253,113,234,143, 82,210, 27,199,249,218,141,116,188,202,166, 26,104, 36, 98, 55, +221,217,189,176,119,233,182,201,100,102,106,254, 80,181,104,200, 48,131,138,209,140, 2, 77,102, 84, 75,170, 74,146,154,215,107, +187,214,227,250,145,236,236, 76,158,117,231,222,222,238,185,217, 52,144,210,167, 36, 20, 17,161, 80, 84,195,246,197,187,161, 4, +235,137, 64, 51,133,102, 77, 75, 82, 13, 33, 78, 47,116,179,139, 18,119, 51, 38, 79,222,200, 31,127,116,249,200,227,235, 62,233, +124, 38,132, 1,229, 80,188,245,158,175, 5, 72,208,252, 15, 10, 0, 51,221, 44,175,197,110, 46,113,155,174, 9,160, 65, 40, 2, +243,187, 11, 46, 80, 82,118,230,113,239,194, 52,170,102, 87, 61, 0,128,152,102, 8, 12,156,108, 93, 34, 0, 24, 0,170, 25, 9, + 2,217, 32, 2,192, 52,187,178,169,225,104,153,142, 87, 26,205,212, 53, 25, 20, 20, 97, 83,104,229, 53,140, 38, 20, 3,196, 29, +163,192, 50, 32,132, 24, 20,230,119, 8, 19,195,255,119, 15,158,249,236,197,139, 23, 47, 92,184, 8, 96,189, 94,237,239,239, 47, + 22,139,207,225,133,238,125,206,115, 94,253,234,215,144, 44, 22,231, 87, 66,145, 32, 34, 18, 66,216,223,191,241,111,254,245,191, +124,186, 23,250,161, 31,126,147,102, 53,247,135,197,250,221,240, 73, 41,143, 32,197,240, 99, 23,223,248,131, 63,112,198, 11,125, +223, 27,190, 31,230,191,252,150,138,133,179,220,100, 16,192, 15, 69, 9, 65,132, 34,155,245,242,145, 79,125,234, 29,111,127,199, + 9, 55,146, 82, 50,243,203,179,230, 70,172,184, 34, 66,205, 84,205,114, 81, 6,211,245,122,117,124,180, 15,224, 13,111,248,238, +127,251,111,127,250,196, 11,193, 6, 45,240,195,144, 74, 16,208,163,163,195,163,195,253,190, 95,139, 64, 40,164,187,245, 64,193, +102,179,254,177, 31,255,137,183,188,249, 77,254,131, 82, 67,159,170,170,154,154,154,169,153,234,106,181,124,226,137,199,158,120, +252, 83,171,213, 49, 96, 52,154,187, 78,165, 65, 53, 91, 78, 41,245,253, 79,254,228,191, 42, 47,148,115,206,154,151,171,254,177, +171,203, 79, 93, 89, 93,219, 95,173,214,105,185, 92, 30, 30,238, 31,236, 63,169,154,203, 43,151,104,111,106,240,155, 81,131,154, +109,250,205,235,191,235,187, 0,196,253,163,205,135, 63,185,186,182,223, 23, 9,129, 33,216,246,100,189, 51, 61,222,157,229,174, +147, 96,245, 62,221, 66,104,102, 54,237,166, 33, 68,205, 25,102,183, 92,186,133, 32,159,253,194, 87,245,201,204, 64,122,104,163, +105,210,116, 4, 61,158,117,118,121,111,186,119,174,235,162,132, 32, 20, 15, 7, 70,200,197,189,203,187,187,123,179,217,204,181, + 98, 50,157,134,173,139,207,133,142,111, 13,150, 55, 57,173, 82, 90,167,100,139,117, 78,217,102, 83, 17,161,187, 30, 82,118,118, +247,118,182,207,199,174, 67,121,107,154, 89,216,189,244, 37,224,240, 66, 0, 52,111, 52,175, 97, 73, 13,170,232,123, 75,201,166, + 19, 6, 97, 55,153,237,236, 92,216,222,222,237,186, 41,221,175,161,120,233,168,150, 9, 18, 6, 35,196,212, 8,203, 48,117,185, +168, 98,181,201, 87,111, 88,136,188,227,214,249,124,190, 59,159,239,198,216,153,153,230,108,180,162,199, 72,226,127, 55, 43, 82, +100,121, 5, 83,115,241,154, 1, 73,229,177,235,241,198,106, 7, 97,215, 32,174, 38,110, 84,174, 54, 89, 53,108, 95,186,215,204, + 64,180, 67,153, 37,211, 30,214,251,199,165,196, 56, 57, 23,167, 23, 14, 22, 56, 94,230,173,169,196,224,138,239,185,101, 49,252, +176,125,241, 30, 10,171, 5,187, 68,179,229,100,218,131, 6,137,113,122, 33,118, 59,238, 49,151, 43,125,226, 70,191,233,181,139, + 18, 99,253, 57, 18, 64,216,222,187,199, 64, 88,245,218,126, 12,235, 53,247, 68,232,166, 23, 99, 55, 7, 64, 63, 54,152,178,222, + 56,200, 87,246,211,254, 97,218, 36,155, 77, 36, 6,130,228,229,187,191, 14, 52, 64, 92,145, 0,168,169,229,149,230, 85, 8, 91, + 97,178, 3,243,200, 34,116, 83, 20, 1, 64,136,251,137, 16,194,206, 60,238,157,159, 68,131, 2, 32, 20, 38, 74, 16, 20,138,197, +185,196, 57, 0, 83, 37,197,220,201,131, 52,117,213, 53, 40, 77, 0,168,234,193, 81, 62, 90,172, 34,252,194, 0, 82, 93,116,234, +206, 17,254,179,240, 24, 97, 6, 8,138,242, 25, 65, 51, 49, 33, 97,128,152, 2, 98, 80,131,129,110, 81, 30,128, 64, 53,152, 42, + 97,102,132,169, 41, 96,102, 10,183, 94, 42, 0, 42,172,184, 11,163, 65,204,220,166,213,181, 71, 21, 6,117, 93,167,169,191, 65, + 61, 70, 61,188,186, 25,152, 7, 86,162,158,225, 11,143,207, 61,206,182,199,221,119,223,243,130, 23,188,224,174,123,238,217,187, +120,113,120,214,138, 21,208,147,231,242,135,236,239,239, 63,252,240,135,254,248,143,223,247,209,143,126,244,243,115,160,157,157, +157, 87,191,250, 53,183,223,126,135,170,171, 66,181,187,146,163,214, 28,190,184,246,147,153, 52,107, 24,243,224, 76, 1, 17,187, +238, 87,126,233,151,222,243,158,223,255,236,149,131,175,124,229, 43, 95,240,130,251, 84,155,111, 43,126,243,212,145, 73, 14,135, +104,121,253,233, 35,121,193, 49, 28,171, 30, 84, 72, 30, 29, 31,188,227,231,223,254,169, 71, 31,125,250, 3,197,123,238,125,238, +122,189,169,242, 56,227,131,176, 21, 55,224,169,211,248,239,106,158, 16,231,145, 32,199,151,139, 77,191,134, 97,113,124,240,245, + 95,255, 85, 34, 18, 66,252,249,183,255,226,102,179, 57,251, 64, 57,245, 54,184,196,155, 79, 67, 59,113,160,225, 61, 77,117,181, + 94,209,108,185, 90,192, 52,231,100,128,251,156,147,146,132,102,165, 32,229, 76,119,200,228, 63,255,103,223,121,219,237,207,124, +219,219,126,238,163, 31,249,200,233, 3,165,156,113,230, 5,123,117,201,146,254, 85,233,144, 64,214,212,111,214,170,118,124,124, + 3,176,126,189, 6, 45,171,150, 27, 4, 41,116, 47, 12, 65,147,168, 3, 20, 66, 24,209,167,180, 89,175,191,237,219,190,125, 50, +153,188,245,223,255,187, 79,124,226, 19, 99, 9,165,145,128,203,209, 82, 66,141,231,136, 65, 64, 68, 33, 3,161,166,170,125,191, + 57, 60,218, 55,213,213,242,184, 28, 91, 44, 80,204,143,238, 17,194,107, 26,128, 6,119,133,132, 66,145, 9,146,170, 57,165, 20, + 66,232, 55,155,239,248,206,127, 58,233, 38,111,124, 99,201, 71,195, 11,255,198,253,170,214, 39,221, 36,221,108,244,120,173,203, +101,190,126,208, 31, 46,210,193, 81, 58, 92,228,245, 70,151, 43,205, 89, 83,178,229,114,185, 88, 28, 47,150,199,199,135, 55,250, +126, 77,247,210, 36, 13,131,246,148,130, 71, 74,148, 40,206,216, 96, 6, 26, 41,100,216,218,154,207,231,187,168, 21, 85,214,252, + 53, 95,253,181,143, 62,250,232,213,171, 87,227,254, 65,111,176,171,251,233,224, 40,173,122, 61, 90,100,215, 0,207,145, 76, 64, + 35, 97,164, 81, 48,239,214,211,176,232,130,237,108,169,144, 93, 4,141, 66,205,164, 24, 40,174, 57, 57, 83, 40,153, 86,194,154, + 43,183,107,232,116,107,218,197, 78, 36,230,156,139, 73,154,170,138,137,125,203,183,188,246,183,126,235,157,188,253,249,127,191, + 0, 73, 45,125, 48, 88,253,218,127, 55,131,105,111,200,154,150,154,142,168, 8,193, 66,228,229, 11, 19, 9,184,176, 19, 67, 16, +207, 7, 75,129,192, 98,145, 85,106,234,233, 54,192, 75,151,110,155,205,183,187, 48,137,147, 78,232, 85, 63,165,184, 46, 82,196, +195, 52,192, 10, 62,152, 14,198, 93, 84,138,102, 80,237, 97,201,114,175, 57, 19,200, 25, 84,124,242,202,138,228,245,237, 20, 4, +183, 94,156,204,166,161, 11,140,209,212,207, 82,171, 81, 9,145,192,133, 11,151, 67,236,182,230,243, 46, 78,220,244,140, 86,139, + 11,210, 74, 82, 17,225, 32,141,177, 20,196, 6, 19,181,114,101, 16, 53, 43,135, 75,166,217, 44,155,103,207, 67,213,163, 55,142, +148,144,163,229,138,228,173, 23,194,185,237,216, 69,153, 77, 69, 66,156,109,109, 7, 9,231,207, 95,132,132, 73, 55,113,148, 69, + 53,123,130, 87,124,166, 59, 93, 7,229,204, 98,205, 58, 0,194, 76,233,246, 9,165,167, 34,238,249,172,164,128, 48,133,105, 67, +113, 12,106, 74, 35, 0,219,244, 70,216,163, 87,249,233, 39,243,185,221,217, 23,223,177, 55, 13,241,210,165,115, 82,252,181,223, +187, 17,158, 83, 9,104, 2, 81,201,238,235, 8, 87, 71,139,106,198, 82, 49,144, 6, 64, 1,194,104,132, 65, 9,210,138, 56, 4, + 80,212,162, 18, 48,119,208, 48, 32, 24, 16, 39,219,100, 23,186,153,200,116,149,249,240,159,231, 73,167, 87,247, 15,186,192,103, +221,185, 21, 3,183,103, 49,136, 91,137,144, 25, 20, 32, 23,171, 17, 50, 27, 73, 19, 70,154,129, 6,243, 63, 72,245,211,162, 36, +205,214, 12,132,174,149,205,103,185,156,140,140,221, 46, 37, 72,152,129, 1,144, 90,197,202,166,183, 43,215,214, 32,159, 60,236, +133,124,198,165,105,215,241,150, 11,147,173, 89, 8, 34, 93, 52,165, 16, 25, 32,115, 1,116,169, 18, 13,217,113, 14,154,231,176, + 52,135,104, 64, 63,160, 43, 22, 64, 32,208, 61,139, 39,235, 12,113,114, 14,160,196, 45,178, 0,142,128,154,137, 25,200,236,181, + 5,137,227,165, 2, 92,109,148,130, 71,159,216,196,200,249, 44,238,206,195,108, 18, 46, 93,232,130,112, 58, 9,172,128, 78,244, +252,213,111,169,164,242,158,124,150,183, 54, 43, 14,152,100, 48, 6, 50, 16,100,152,128,194, 48,243,234,181, 8,206,212, 32, 69, +201, 40,102, 74,192, 76, 52,171, 9,117, 3, 2,125,223,147, 60, 60, 74, 87,163,196,192, 79, 62, 30, 2,185, 53, 13, 34,178,179, + 21, 36,136,227,220, 70,144, 74, 82,161,180,146,197,147,160,169,185,144,204,225,242, 48,145, 2,107, 68,192, 11,117,199,219, 13, +102, 38,198,146, 39,139,169, 74, 41,110,212,115,119, 64, 13,200, 42, 52,205, 89,176, 81,128, 56,206, 2,116, 93, 32, 57,155,134, + 32, 18, 1, 37, 8, 83, 3,205, 28, 83, 20,210, 33,165, 90,144,152,177,212,201, 49,196, 56,132,114, 58,190, 92, 82,124,175,111, + 77,188,238,134, 9,189,150,160,136,153,193, 43, 33,115, 37,181, 82,123, 41, 84,176,217,100,138,108,122, 3, 24,171, 62, 59, 94, +230,154,163, 53, 71, 5, 93,227, 73,192,140,213,190, 74,154, 66,248, 85,187, 93,152, 73,173, 90,180,124, 72, 35, 68, 75,213, 33, + 4, 84,181, 72, 20, 6, 8, 90,236,117,191, 8,152, 32,194, 97, 57,161, 65, 13, 66, 85, 14,153,140,105, 1, 17,139, 51, 45,209, +179,152,157, 21, 71, 97, 14,229, 73,209,245, 2,201, 58,216,231,181, 26,172,188, 82,195, 83, 8,168,145,132,192,204,160,132,152, +120,153,230,142, 72, 13,102,165,128,242,144, 97, 54, 88, 62, 12, 90,224,147, 82,183, 87,112,165,249, 59,152,194,204,189, 40, 74, +196,129,154,122, 40,227,144,251,169,105, 77, 79, 75,190, 99,229,142,236,140, 12,241, 11,143, 47, 60, 62,223,149,235,144,123,119, +113,190, 53,159, 76, 38,179,217, 86,215,117, 40,169,119,191, 90,173,215,235,213,241,241,113,246,174,199, 95,233,129,186,174,251, +242, 47,191,255,121,207,127,254,179,190,248, 89, 33,134, 33,170, 74,177, 51, 74, 75,244,196,204, 62,246,177,143,253,233, 7,222, +255,222,247,190,247,169,106,174,191,248,129,190,225,239,189,242,190,251,238,235, 98,103, 13,129, 28,154, 62, 56, 85, 57,182,218, + 20, 64, 8,129,194,205,102,243,135,127,240, 7,191,254,235,191,246,151, 58, 80,140,241,190,251,238,123,197, 43,190,193, 90,238, +106, 13,198, 28, 74,250,113,133,127,178,178, 63, 89,218,147, 34,114,112,112,240, 51, 63,253, 83,199,199,199,159,219,129,246,246, +246, 94,241,138, 87,220,113,199, 23, 57,102, 52,202,166, 71,223, 52, 78,250, 71,191, 63,229,153, 60, 59, 5, 66, 12,143, 95,185, +242,142,183,191,253,201, 39,159,252,172, 14,244,250,215,191,126,107,107,187,186,207,211, 21,254, 80,201, 15, 69,244, 88, 74,165, +176,101, 43, 52, 6,128, 97,124,153, 52,211,247,191,255,143,255,243, 47,254,151,207,220, 28,255, 91,127,251,239, 56,205, 32, 91, + 46,206,188, 4,132,246, 69, 57,161,150, 72, 82,190, 40,201,180, 22, 44,184,150,186,214,202,191, 22, 28, 76, 45,107,222,221,221, +249,187, 47,127,249,123,222,243,222,190,239,159,206,156,115,206,168,239,170,103,222,104,189, 26, 16, 58,214,106,117, 12,209,144, +203, 79,183, 98,166, 97, 23, 4,115,238, 53,231, 62,245,171,229,145,136,188,246, 91,254,193,251,254,228, 3,255,251,119,223,243, +148, 7, 82,213, 82,210, 84,244,100,132,148,161,181, 11,198, 79,181, 98, 84,138, 12,212, 10, 98,139,122, 32, 35,232, 97, 54,165, + 77,206, 57,165,141,119,132,131,132,251,158,255,156,251,191,252,193,183,190,245,173,103, 31,200, 84,173,189, 3, 78,188, 57, 74, + 34,101, 60,229, 29, 12, 6,219,108,214,170, 57,165,126,211,175,160,200,185,247, 62,210, 32, 81,135,146,203,245,121, 6,168, 25, + 96,230,237,183,223,241,163, 63,250, 99, 63,242, 35,111, 57, 67,135, 30,124,232,161,210,213,189,249, 81, 83, 49,107, 45, 49, 43, +127, 0,214,247,155,190,223,244,155,245,106,121,220,167,126,189, 90,244,169,207,253, 38,165, 62,165, 62,245,125,206,125,202, 73, + 53,101,205,170,234,181, 33, 76, 73, 57,127,225,146,132,240, 85, 47,127,249,111,190,243,157,167, 14, 36, 86, 26, 83, 79,251,240, + 62,159, 55, 38, 76, 87,171,197, 98,113,188, 56, 62, 92, 44, 14, 87,171,227,148,250,156, 54,181, 32,168, 72, 18,107,254,102, 69, +208,234,141,152,210, 5, 83,181, 44, 34, 63,244,195,111,186,233, 64, 79,117,158,145, 84,218,239,222, 81, 89,173, 22,139,197,225, +241,241,193,241,225,193,114,185, 72,169,215,148,172,228,223, 94,209, 54,207,224,105,185,231,141,197,124,161,154, 53,107, 86, 83, +221,221,217,253, 39,223,241,157, 39, 14,164,163, 71,206, 57,105, 94,111,242,106,157, 87,235,180, 92,165,213, 58,111,122, 77,125, +246,118,141, 95, 71,191,217,244,125,159, 93,249, 92,130,172, 55,233, 57,235,200, 4, 0, 40,157,110, 82,212, 95,189, 79,164,170, +166, 89,243, 93,207,190,235,193, 7, 31, 26, 41,245,224, 5,173, 79,102,192,241, 66,147,186,241, 49, 6, 76,167, 33, 10,119,230, + 69, 54,102,118,188, 56,202,253,166,246,193, 73, 79,125,197, 85, 4, 70,165,133,102,143,230,101,121, 33, 16,121,230,239,137,186, +152,154, 65, 85,240, 77,175,122,213, 7, 62,240,126,239, 58, 75,202,154,178, 46, 55,121,185,210,227, 85, 94, 44,243,114,147, 87, + 43, 93,173,117,181,214,229, 70,253,249,163, 69, 62, 94,230,229,186, 95,173,122,205, 57, 59, 73,234,148,242, 23,199, 88, 59, 26, + 44,252, 9,165, 26,189, 64, 1, 40, 94, 67,186, 29,169,170,169,166,148,190,247,251,222, 80, 36,116,180, 76, 41,217, 39, 30, 91, +171, 98,255,160, 79, 58,114,136, 3, 2,108, 65, 24,196,206, 77,111,144,182, 59, 75, 49, 32,136, 65,164, 40,139, 95, 88,105,185, +153, 23, 77,163, 58,165,116, 46,133,152, 78,102, 33, 68,215, 69,136, 42,196, 84,131,200,116, 58,125,232,161, 23,255,254,239,255, +158,244,189,246, 73,115,182,156,115,182,210,222, 49, 53,243, 30,177,153,170,230,108, 41,231,148,115,202,154, 82, 78,201, 59,200, +197, 90,220, 40,180, 89,128,169, 57,225, 73,213, 76, 77, 21,106,229,127,102,206,149,169,109,196, 34, 33, 39, 90,125,227, 55,125, + 19,201,176,138,247, 92,121,114,115,188,204,203,181,170, 14,209,179, 84, 79, 69, 71, 77,211, 38,167,116,116,116,120,184,232, 15, +142,250,235,135,125,159, 44,101,168, 33, 70, 2, 38,213, 65, 27, 73,115, 99,167,177,148,180,254,186, 49, 78,246,246, 46, 79,167, + 91,177,155,148,206,126,253,207, 93,231,185,243,231,226,186,207, 67,139,209, 59,111,170, 53,152, 27,232, 93, 54, 85, 40, 96, 89, +189, 61,150,161, 76,217,146, 90,116,175, 33, 98,170, 16, 41,109,186,234,250,135,176, 54, 70,190,107, 87, 25, 10, 80, 33,180, 90, + 46, 62,244,208,139, 35,172, 6, 13,162,178, 92, 28,208, 45,202, 80,162, 89,238,173,122,183,156, 13,176,235, 71,233,112,145,167, + 19,153,111,133, 73,148,189,115,157, 72,238,162, 0, 66, 81,103, 18,168,145, 34,130, 16, 39,147,237,237,243, 33, 74, 23,167, 20, +154,153, 66,133, 98, 6, 42, 76, 44,168, 42, 37,231, 28,221,149,218, 0,234,213, 19,176,160,105,170,214, 28,138,215,178,106, 32, +153,179,165, 4, 51, 21,161, 41, 84,213,192, 88,128,231,194,172,169, 52, 27, 35,165,139, 29,131, 20, 27,240, 20, 70,181,128,163, + 10, 21, 33,148,202, 88,238,215, 51,139,226, 50, 10,173,168,118, 20,212,212, 84, 51,161,222,166,108,136, 27, 96, 73,101,185,204, +155, 94, 97, 22,130,220,114, 33,138,232,164, 19, 33, 66, 55,149, 16,166,147,233,100, 58,141,177,235,186,137,247,233,139,228, 71, +222,147, 98,166, 10,210,200, 88, 62,112, 21,145, 35, 25, 90,146, 26,163, 86, 28,196,109, 7, 86, 20, 76, 74,114,146,179,230, 76, + 73,200,201, 98,148,221,109,134, 32, 49, 16, 98, 34, 33,134, 56,157,206,102, 91,115, 9, 49,132,206,109,197, 12, 3,202,143,138, +186, 85, 15, 22, 75,114, 80, 2,143,185,167,117, 59,243,147,213,204,164,178,104,232, 6,225, 48,178,121,184, 50, 32,169, 33,235, +193,177, 5,177,201,100,218, 65,186,110, 54,153,198, 16, 39,164,180, 28,210,175, 73, 65,250, 29,176, 52,150, 64, 82, 68, 85,163, +195, 20,238,242,109,232, 90,148,124,117, 4,143,149,220,159, 69,203,204,163,148, 73,177,166,148, 45,171, 92,121,210, 36,216,124, +119,123,198,110,178,181,179,187, 61,105,173, 63, 43, 25,112,133,154,236, 84,138, 85,194, 98,244, 86,123, 49,251,130, 46, 57, 28, + 4, 20, 96,184, 41,124,137,148, 37,179,246,100,223, 81,100, 37, 37,128,132,116, 0, 55,189, 1,186, 88,102, 50,117, 81, 98, 16, + 10, 66, 16,199,167,228,228, 57,164,250, 33,168, 26, 16,182, 47,222,235,167, 41,168,221,128, 51,149,110, 89,209,156,156, 8, 51, +221, 20, 12,205,125,131,153, 9,205, 2, 67,140,221, 78, 8,179, 48,185, 16,186,249,209,138, 55,142,177,218,216,245,131,164, 64, + 23,104,134, 24, 71,117,222,144, 13, 55,216,190,184,172,200, 26,107,104,234, 94,168,224,207,165,180, 80,191,198,147, 34, 46,181, +172,214, 46, 93, 5,246, 89,200,136, 6,210,146, 90,200,218,247,186, 73,106,134, 24, 64, 50, 6, 41,114,161, 71,126,150, 70, 79, +109, 85, 68, 24, 80,212,152, 21,154,244,238,159,129,229, 96,128,161, 49,107,134, 79, 38, 0, 25,166,161,155,147, 65,194,204,251, + 1,110,191, 0,111, 28, 38, 18, 55,142,243, 35,143,175,183,102,225,214, 11, 93, 23,229,182, 75, 83, 33, 38, 29,160, 82,216, 34, +163,222, 42, 85,227,168, 42,116,228, 77,224, 8, 93, 9, 53, 90,222, 94, 91, 19,173,116,141,108, 40, 64, 74, 78, 38,226,101,144, +194, 68, 77, 33, 66,101,206,218,147, 93,210,148,140, 44,212,238,172, 38,204, 34,193, 53,221, 9, 83, 6, 1, 25, 43, 19,209, 28, + 52,117,191,103,128, 41,189,207, 80,216,142, 18,172, 0,134, 2,168, 25,165,219, 10, 97, 66,233, 36, 76, 28, 59, 47,184,185, 89, +233,166,152, 26, 36,101,100, 77,155, 94,142, 87, 57, 80,174, 92,219,136,112,239,124, 23, 69,110,189, 56,153, 76,164,139,140, 17, + 10, 17, 24,204, 98,237, 7,120,199, 70, 81,253, 17,233,129,195, 74,131,165, 68,101, 66,212,212,137,175, 2, 4, 80, 0, 97, 41, +201,234,229, 23, 66, 86,193, 10, 12,164,234, 70,133, 33,131, 22, 68,182,183, 66, 10,150, 85, 53,195, 66, 48, 71, 75, 33,106, 22, +253, 58,200,250, 7,128, 18, 98,138, 35, 42,213, 42, 2,224,228, 29,132,174,115,237,161,116, 14,210,151,238,120,137,245,226,170, +167, 21, 42,134,249, 79,170,101, 89,109, 84, 96, 87,174,109, 72, 92, 63,232, 37,200,108, 18, 98,224,180, 11,179,105,160, 72,172, +221,204, 18,159,209,174, 73,173,114, 8,172,194,238, 98,142, 85, 49, 18, 66,241, 70, 64, 45,120, 61,242, 40, 32,234,201, 66, 85, +112,146,160,154, 10, 5,170,137, 42,214, 47, 65, 98,177, 84, 35,102,211, 16,133, 91,179,184,189,101, 36,107,146, 95,187,101,254, +214,197, 9, 1,254,146,168,206, 53,196,153,153,137, 68, 80, 96,206,127, 45, 4,176,138,202,211,207, 84, 58, 93, 34, 21,157, 32, +213, 91,159,134, 10,194,187, 57,166,100, 38,208,117,206, 10, 80,226, 0,141,183,110,180, 86,176,190, 52, 56,172,250,126, 65,156, +143,252, 44,213, 40,254,207,240, 55, 42,184,189,123,141,250,143,165,250, 48, 72,197, 34, 90,143,217, 64,246, 73, 19, 5, 73,151, + 75,163,235, 68,105,104,106, 49,110,107, 25,172,213,132,163,245,228,189, 56, 66,189, 8,170, 19, 4, 10, 75,170,130,144, 5, 16, +168, 12,170, 18,104,104,126, 98,115,112,191, 86, 43, 85,196,158, 45,187,216,235, 7,246,126, 71, 97,199, 83, 49,120, 4, 85,168, +194,188,101, 91,188,144, 90,105,129, 59, 11,185, 86, 66,165,243,226,113,177,114,100,157,191, 86,238,222,106, 91,181,254,179,211, +203,104, 48,131, 24, 27,104,230,178, 54, 40,209,186, 17, 80,127,227, 70,191,134,169, 22, 12,214,160, 90,162,110,173,131,202,109, +213,198, 59,171, 56, 74,148,168,138, 86,186,203,238, 43, 60,208,212,116,208,115, 56, 85,191,142, 98, 49, 6,173,147, 42,158,234, + 99, 84,202, 12, 34,242, 55,107,152,164, 55,156, 61, 4, 22, 63,235,180, 15, 45,122,228,255,236,205, 37,171, 61,154,194, 15,241, +215, 80,170,212, 20,214,180, 6, 56,171,164,191, 66,203,107, 88, 17, 91,113,236, 50, 98, 97,232,149,240,161, 69, 8, 77, 70, 46, + 96,231, 13,250,164, 8, 77,181,181,149, 13,149,183, 7,215,213,210,139,244,159,116,241,186, 29,107, 59,132,149,119,245,154,165, + 53,158,234,148, 2,155, 43,174,196, 88, 69,173,226, 27, 99,194,179,205,130,239,150,246, 26,106,127,175, 96,118,197, 27,148,206, +183,150,198,152,186,173, 56,180, 84,187, 87,172,140, 2,165, 58,112, 97,229,230,138,168,170, 19,242,207,226, 95,184,189, 20,200, +131, 86,111,184,120,160, 82,120, 21,229, 29,131,115, 95,104,152,125,225,241,133,199, 23, 30,127, 93,250,173, 79,247, 18,228,206, +238,238,185,221,221,237,237,157,243, 23,206,239, 93,220, 59,127,225,194,249,115,231,230,219, 59,219,219, 91,147,201,212,123, 84, +163, 78,206,137,166, 69, 74,105,185, 92, 28, 28, 30, 28, 30, 30, 61,254,248,149,163,195,163, 27, 7, 55, 14, 15, 14,246,247,247, + 15, 15, 15,255,250, 9,104, 62,159,223,251,156,231,222,121,231,157,183, 93,190,124,254,252,133,249,246, 60,198, 8,195,153, 14, +255, 38,158,238,184, 83,138,113, 59,176,205, 54,157,226, 67,167,148, 22,199,139, 27, 7, 55, 30,125,244, 83, 15,127,232, 67, 31, +126,248,225,244,121,234,124,127,222, 4,116,249,242,229,251, 31,120,224, 75,191,244,133,211,233,196,108,200, 42, 62,243,235,150, +148, 14, 35, 92,170,124, 73,207,170, 75,203,180, 76,203,181,102,233,184,161, 91,102, 57, 11, 65,211,107, 3, 17,145, 79,126,242, + 19,191,249,206,119,126,240,131,127,170,170,255, 79, 5,180,179,179,115,219,109,183,125,217,151,189,240,222,123,159,227,136,142, +181,198,240, 8,219, 61, 37, 35,158,169, 52, 3,139,245, 4,226,204,147, 13,247,167,252,253,228,212, 92,153,117,229,208,137,110, +189,248,235,215,175,255,175,255,249, 91, 31,252,224, 7,175, 93,187,246, 87, 34,160,203,151, 47,223,119,223,125,119,221,117,215, +229,219,110,203,185,244,112, 79, 10,197,128,167, 83, 27,142, 29,210,200,211,140,159, 63,225,124,112, 6,173,255, 76, 50,192,103, +122,178,148,156, 62,116, 8,224,227, 31,255,248,123,126,239,247,254,232,125,127,148, 70,252,240,191,148,128,222,252,230, 55,175, + 55,253,208, 80, 29,218,210, 56, 73,178,248,140,114, 62,249,105, 79, 61,121,198,183,157,162,109, 60,141, 42,157,162, 46,140,205, +112,160, 71,147, 2, 88,206,185,239, 55,106,121,179,222,188,251,119,126,231, 93,191,253,174,191,164,128,226,114,181,110,132, 19, +107, 4,183, 51,164,114,147,231, 25,211,100, 78,202,101,244,228,205,170,116,218, 8,135,230, 59,201,167,242,228,229, 75, 27,143, + 75,212,185,142, 74,220, 35, 8,164,156,250,205,202,137,174, 47,121,241,131, 95,249,178,151,110, 82,254,111,191,246,235, 31,251, +248,159,253,197,230,159,248,221,223,243,189,167,181,230,236, 41,147, 17,147,225, 84,144,191, 73, 59,134, 79,202,225,199,198, 82, + 27,249,159, 50, 8, 88,205,208, 55, 73,148, 34,185,146, 14, 7,214,123, 67,243, 75, 49, 69,192,144,114,159,115, 25,123, 77,105, +179, 90, 45, 85,115,109,210, 23, 40, 36,198,201,227, 79, 60,249,174,119,253,238,103,201,204, 57,139, 94,241, 20,114,121, 58, 27, + 59,217, 21, 96, 3,173,237,102, 64,124,120,214, 12,102,185,201,218,187,242,195,208,167,102,171, 20, 81, 59,113, 13, 86,181,198, + 26, 17,167,148,232, 57,103, 77,254, 94, 41,101,243,109, 20,142, 6, 9,235,108,110,127,239,189,247,188,248, 37, 47, 91, 44, 86, +191,242,203,255,245,195, 31,254,240,103, 43,160,220,112,142,209,135,188,233, 83,219,205, 9, 78, 97,197,214,118,106, 67,252, 43, +137, 97,148, 13, 12,227, 59,116, 2, 81,191, 89,215,113,104, 75,155,126,211, 47,221, 40,204, 52,165,100,170, 30,220,235, 11, 23, +104,119, 0,194, 90,135,150,133,250,221,158, 47,120,102,245, 81,150,181,204,229, 43,114,234, 83,159,230, 91,179,215,189,238, 31, +171,217, 59,222,254,243, 31,249,200,103, 22, 83,120,232,193,135,198, 30,185,182,141,219, 95, 11, 94,114,182, 79, 58,233,187, 78, +244,150,110,250,110,181,236,154,162,170, 41,245, 57, 39,231,224,100, 77,169,239,205,137, 13,166,166,185, 54, 25,173, 32,123,214, + 58,198,229,157, 88,249,201,142, 21,186, 40, 71,125, 46, 14,115,192, 21,178, 35, 57,157,205,103,179, 57,189, 97, 64,188,232, 69, + 47,250,138,151,189,236,241,199, 31,191,122,245,234,211,154,216, 32,157,177,147, 57, 67,101,112,211,224, 89, 81,147,122,183,214, +134,172, 91, 71,174, 78,221,166,148, 86,203, 69,214,228, 70,180, 94, 45,251,212,143, 62, 67,105,234, 12,109, 49,171,127, 71,155, +141,224, 48,113, 2, 14,237,151,202,231,104,209,176,142,204, 54, 85,243,142,159,228,172, 57,103, 74,242,252,201, 84,167,211,217, +183,127,251,235, 30,253,244,163,191,248,159,254,227, 83,229, 80,225, 69, 15, 62,104, 67,219,204, 6,131, 58,245,213, 64, 42,106, +195, 88, 54, 16, 28, 9,220, 12, 55,161, 82,141, 96, 57,231, 77, 95,204, 74, 53,247,105,147, 83,178,156,180,145,146,234, 59, 13, +241,172, 72,187, 54,199,198,147,118,104,185,119,195,223,218,186, 11,107, 83, 30,222,178,110,175, 51,155,109, 77,103, 91,172, 80, +186, 39, 9,166,186,187,123,238,111,126,229, 87,238,108,239,126,232, 67, 31,124, 10, 82,222,153,246, 83, 88,240, 0,144, 21,155, +164, 41, 21, 61, 41,207, 19, 4,131, 48,198, 50,121, 45,228,100,194, 40,240,214, 95,214,228,211,124, 6, 75,253,230,248,248, 32, +167,228, 77, 43,159, 84,246,177,140, 54, 19, 80,167,145, 41,133,129, 81, 71,126,106, 95, 14,173,229,237,221, 41,214,189, 69, 99, +229, 47, 6,111,165, 69,238,157,198,210,189,102, 21,110, 67,214, 21,164,115,187, 30,122,232,161, 23,191,248,197, 63,251,179, 63, +253,216, 99,143,157,208,160, 7, 30,120,224,204,184,165, 86,104, 53,222, 28, 94,111,156,192, 99,217, 44,171, 37,181,236, 99,217, + 53,135,242,197, 65,177, 16, 75,225,154,146, 82, 82,205,166,154, 82,191,217,172, 82, 74, 78, 52,187,169, 45, 62,244, 19,134, 68, +185,229, 14,194, 34, 76, 54, 22,155,149, 14, 94,165,216,121,239,230,164, 7, 96,235, 23,121,143,102, 54,155,205,102,115, 9,129, +227, 54,252,201,168,251,210,151,124,197,214,124,238, 75,117,138, 6, 45,150,165, 56,206,106, 78, 25,114,117, 79,201, 86,107,109, +248,114,206,245,158,236, 36,133,153, 20, 25,162, 74,136,136, 82, 92, 65,224, 38, 96,229, 19,234,194, 44,236,137, 66,246,145,106, + 34,141, 71,132,218,112, 30,114,159,218,112,176,210,108,211, 34, 35, 43,170, 69,234,137,173, 16,198,118, 58,231, 38,128, 78,237, + 8, 52,250,190, 18,111,162,180,229, 93,222,254,201,149, 58,172,128,137,189,236, 43, 94,118,235, 45,183,254,234,175,254,178,131, + 45,252,135,255,232,117,238,229, 82,182, 39, 15,250,195, 99, 39, 40, 97,157,108,177,204, 89,111,170,183,104, 24, 57,136,177,168, +124,219, 16,171, 8,102,113, 61,141, 75,239,125,119,157,206, 58,141,129, 6, 10, 45,212,170,211, 61,139,180,121, 94,231,208,183, +225,202, 90,240,139,247,244,217,232, 21, 53,226,143,146, 16,182, 73,204,114,169, 20,145,110, 50,141, 93, 7, 80, 36,204,183,119, +118,118,206,135, 80, 22,249,248, 40,249,184,124,145, 90,195,132, 16,247,247,175,191,237,109, 63,119,253,250,245,112,241, 25,207, + 59, 90,232,209, 34, 29, 45,242,225, 34, 47,215,218,103, 75, 89,251,100, 73,235, 88, 15,203,252, 81,201,186, 74, 96, 45,189,165, + 54, 42, 10, 51, 88,174, 52,210,172,186, 73,253,122,211,235, 58,233,102,147,251,222, 86,155,188, 90,231,245,198,114,134, 26, 83, +182,148, 75, 43,164, 54, 92, 70, 41,235,104,178,182,246, 0, 57,166, 89,141, 99, 72, 9,150,108, 61, 50,248, 44,192,116,186,213, +117,179, 46,118, 49,118,221,100,218,197,174,198,183, 49,157,119,168,174, 42, 59,201,182,182,182, 94,242,210,151,254,159, 63,252, + 67,222,254,188,111, 60,153, 20,242,140, 44,154,103, 20, 10,133, 9, 83, 90,159,165, 76, 48, 75,230,125, 26,168,229, 85, 78,139, +210,236, 5, 68,124, 2,203,130,112,119, 30,183,102,190,169,137,211, 78,230,211,224, 11,154, 8, 12, 12,254, 86,169,114,112, 64, + 28, 0, 56,142,248,211, 99,118, 62, 43,193, 0,177,155,158, 59,127,113,182, 53,247,215, 8, 33,198,216,113,132, 46,157,168,139, + 27,113,191,254, 93,130, 88, 46, 20,134, 83,217,206,105,174,204, 80, 80, 85, 70, 41,107, 28, 41,173,204, 50,129,229, 61, 92, 45, + 52,211, 18, 6,149,163,222,157,194,104,232,147,114, 35,244,241,114, 3, 5,146, 72, 66, 68,186, 0, 9,174,176, 44,202, 91,134, + 88, 43, 65,180,106, 21,199,203, 26, 90,106, 22, 66, 8,209, 63,119,140, 65, 68,198, 48,220,160,164,214, 26,199,101, 99, 75,123, +179, 86,236,169, 65,130, 68, 29,248,179, 68, 27, 61,174,147,105, 45,189, 40,116,130,214,129, 71, 69,141, 70, 30,219, 0,179,100, + 57,121,232, 51,205, 80,245,238,182,150,249, 65,128,200, 89, 55,125,227, 86,114,218,137,239,215, 1, 56,157,240,252, 78,156, 78, +202,254,165, 24, 24, 66,165,204,183, 66,195,117, 73, 91,134,234, 35, 25,206,167, 99, 55,153,110,207,119, 67,236, 0, 4,145,110, + 50,235, 98, 7, 97,211,250,230,250,219,248,160, 21,174,104,193, 57,171,103, 36,161,200,136, 44, 62,224,116,217, 62,106,163,150, +176,223, 76,105,156,114, 87, 82, 29, 6,250,249,169,100,124, 88,137,163,176,177,204,107, 46, 83, 10,120, 56,249, 49, 37,245, 19, + 74, 9,252,195, 50, 6, 97,229,183,177,106,119,179, 16, 9,213, 64,130, 13,153, 55, 1,100, 83, 81, 49,158,154,104,224,224,115, +198,169, 70, 41, 98,138,235, 85, 65, 28,146,230,209, 90,145,162, 74, 28, 18, 10, 29,193, 55,101, 68,120,216, 13, 96,149,178,104, +176,108,154,235,183,101, 95,115, 83,141,163,233,180, 85, 82,134, 1,232,147,245,169,124, 86, 89,234,225, 81, 18, 17, 0, 93,224, +249,157,176, 61,151, 32, 4, 17, 69, 38,157,111, 56, 50, 50,196, 56,141, 93, 7, 51, 74,152,205,182, 38,147,153,255,148,136, 20, + 71,131, 33,223, 62, 11, 9,186, 9,188,113,181,104,160, 57, 64, 51, 1,163,142, 35,230, 80, 45,212,205, 19,149,164, 88,241,170, +202, 45,168,212, 88, 84, 27, 30,202, 90,216, 56,247,178,182,152,201, 71,114, 96, 3,100,161, 99,158,134,170, 18,180, 76,154,102, +146,137, 76,153, 57,211,156,241, 27,157,182, 89,230,122,106,249, 46,196,105,172,177, 14,177,148,185,187,129,114,125,210,186,134, + 95,101,171, 19, 91, 43,161, 60, 69,154,230, 72,197,192,164,241, 49,218,166, 44,134,182,231,207,160,117,241,233,104,107,134, 19, + 57, 72,140,135,109, 11,231,183, 20, 98, 3,185,184, 50, 67,202, 42,167,202, 37, 51,101, 11, 80,234,244,102,255,230, 44,125,226, +245, 35, 95, 80,137,237,237,238,210,197,157,105,215,129,144, 16,182,118,183,182,166, 81, 68, 0, 19,183,175, 19,155, 45,218,144, +210,184,194,182, 51,241,171, 86, 68,122,232, 25, 76,204, 51,105, 80, 79,227,238,202, 86, 60, 91, 27,193,106,204,151, 34,164, 34, + 72,112,204,169,172,249,200,104,129,153, 13,197,184, 97, 24,232, 42,124,153, 42,127,109,235,187, 42,165, 26,190, 13, 27,127,100, + 0, 0, 6,168, 73, 68, 65, 84, 83, 49,169,145,160,160,235,145, 85,178, 9, 12, 25, 1, 8, 33,132, 26,246,217, 34,202,160, 62, + 24,232,162, 84, 90,201,111,135,255, 78,116,175,120, 74,239,171, 39, 10, 33,142, 51, 50, 22, 54,138,157,200,205,134,233, 11, 45, +108, 17,171,165, 48, 80, 11, 70, 22, 19,131,121,226,107, 3,134, 81,189, 92, 43,209, 43, 57,211,183, 69, 86,142,149, 7,200, 32, + 97,234, 91,110, 72,161, 76, 68, 58,215,138,222,194, 19,251,164, 40, 96, 93,135,131,227,213,108, 34,164,132,128,157,121,216,217, + 10, 33,148,233,195, 73,164, 72,169,244,205,156,146, 89, 56, 83, 78, 15,130, 54, 10,186, 63, 89, 76, 74, 68, 78, 12,200,145,200, + 57,150,211, 15, 8, 83,213,138, 22,125,216,128,136,193,247, 20,127,195, 22,165, 70,153,218, 0,198,140,111,200, 6, 37,172, 53, + 38, 43, 3,210,106, 18, 65, 8, 16, 40,177, 36,232,210, 65, 38, 14,155,102,195,114, 83, 56,221, 93,175,130,180,233, 5, 64,140, + 18, 2,166,157,111,164, 96,136,226, 0, 65,195,214, 84, 27,250, 93, 25,101, 62,219,224, 99, 75, 21,216, 6,219,234,166,209,220, + 34, 16,189,126, 57, 21, 4,213,172,114,191,136,182,242,246,100,118,196, 66, 39,116, 94, 86,225,215, 85, 99,149,145, 26,142, 75, +185,241, 29,148,249, 32, 48,134,208,149,221, 72, 12, 18,166,100,168,109, 66,169, 11, 77,116, 32,152,155,101,197, 98,157,215, 73, + 9,138,228, 62,233,209, 34,251, 58,205,105, 39,219, 91,210, 5, 26, 17, 69,102, 83,233, 98,219,194,100, 82, 11,233,193, 16,111, +238, 20,151, 6,110, 17,113,132,142, 14, 95,217,112,195, 84, 66,241, 29, 53,240, 17,163, 56,216,112,188, 97,190,211,134, 65,131, +177, 71,215, 51, 2,107, 67,186,164, 99,152, 81,196, 12,194, 32,161, 3, 4, 34,104, 27, 32, 42,238,101,149, 22,154, 13,186, 30, +128,216,229, 90,111, 28, 37,247,243, 91,179,112, 97, 39,118, 81, 64,155,196, 0, 4, 50,148, 12, 89,120,114,214,104, 92,105,159, +221, 78, 39, 16,149, 45,231,110,113,140, 21, 74,177, 86, 52, 14,169, 82, 37, 96, 86,240, 97, 4, 85, 53, 87, 51, 14,246,227, 45, + 55,149, 11, 75, 9,226, 51, 12, 32, 37,146, 66,199,229,107,166,207,202,220,115,182, 97,205,251,106,180, 80,179,241, 50,177,140, + 92,121,185,235,158, 71,139, 28,163,146,136, 65,213,116,177, 46,251,146,186, 40,147,206, 7,161, 16,133, 93,244, 9,114,120, 73, +232,207, 15,107, 61, 42,180, 91, 87,231, 52,190, 35,135,154,171,214,232,237, 40,138, 1,219,108, 94, 69, 75,153, 93, 66, 70, 24, + 40,135, 86, 75, 41,115, 74,119, 70, 73, 46, 69,194,140, 50,245,143, 36, 12,148,110, 88, 55, 87, 64, 83,107,147, 80,109, 53,105, + 61, 83,213,101,243, 89, 47,170,105, 46,171,176,108,189,182,163, 69,170,104, 16, 39,145, 65,202, 46,179,237, 89,216,222, 42, 75, +158,103, 83,185,184, 27, 39, 19,175, 7,217,117, 18,216,130,125, 93,172, 98, 6,213,136, 26,167,216, 72,174,224,120,150,101, 20, +234,107,198,199,193,131,107,241,181, 52, 98,152, 47, 39,112, 2,226,247,204, 54,212, 82, 89,134,109, 90, 70, 43,227,220,104, 62, +166,166, 33,149,200, 76,192,125,106,101,245,151,206,216,176,231,178,242, 89,135,146,166, 68, 34,239, 66, 58,207, 59,101, 91, 39, +149,170, 4, 71, 49, 77, 82,240,169,200, 46,134, 24,106, 3,155,168,170, 5,129, 68,208, 70,229, 87,161,238, 22,170, 73,141,219, + 37,255,245, 73,183,134, 5, 98, 52,115,214,194, 55, 2, 24, 42, 63, 62, 23,161,248,254, 96,233,202, 2,118,138,200,132,140,168, +147,238,158,196,182,185,166,106,104, 62, 1, 64,107,222, 72, 43,153,158, 86,167,238,244, 68, 77,237, 99, 75,197,110, 84, 51,215, + 10,192, 55,218,241,120,149,113,208,194,145,215,122, 0,139, 6, 69, 41,171, 9,166, 19,110, 77, 67, 16, 41, 35,147, 90,118, 64, + 53,197,117,147,210,150, 7,150, 75,241, 43,107,200, 88,161,101,243,196, 36,101,241, 65,117, 66,166,210, 49, 48,184,144,234,234, + 1,131,137,163,137, 28,138, 94, 42,149,198, 97,233, 78, 57, 9,203,202,164,146,123, 23, 9,114, 52,189, 62, 32, 60,198,186, 59, +136,172,221,215,230, 24,252,245,213, 75,245,218, 47, 16,139,190,135,204,152, 77,114,102, 78,102,161,136, 37,182,214,146, 85, 83, + 41,201, 15,107,198, 92,108,144, 28,231,194, 53,239, 45,165,232,152,184, 80,124, 73, 96,216,170,219,171, 48,154,181, 42,211,224, +206,191, 31,182, 37, 20,213,244, 21, 15, 28,120, 38, 37,175,170,163,109, 53, 90, 18,180, 58, 76, 89, 42, 24, 45,118, 58,114,243, + 80,207,178,208, 86,144,149,136,164,230,115, 46, 6,192, 50, 87,173, 94,131, 45, 86,121,127, 68,177,137,173, 4,229,176,185,171, + 14,208,249, 53, 53, 20, 77, 27, 17,197, 90,187,111,132,182,150,244,178, 28,101,200,253,170,196,132, 39, 56,218,197, 15,179, 6, +132, 58, 3,224, 37,159,113, 8,121, 54,198,227, 75, 4, 80,142,102,179, 6,248,206,157,213,192,126,112,109,170,164,144, 54, 14, +136, 10, 41,112, 72,124, 27, 86, 81,226, 78,249, 60,181, 70,110,149, 86,203, 94,180, 42, 86,195,216,154,164,172, 65,107, 4,181, +118,161, 70,163, 83, 5,224,224,137, 41, 67,213, 81,205, 90,115, 91,142,156,125,139, 89,197, 36,202,140,176,157,216,179,232,211, + 32,198, 38, 95,212,213,245, 53,131,107,149, 88,221,131, 41, 67,175,119,104,163,248,188,205, 48, 81,208, 48,152, 90,191,249,181, +104,180, 33,174,183, 89, 81,182,112,230,231,212, 58,232, 91,140,118, 36, 77,180,165,140,205,208,202,199,174,126,104, 68,141, 25, + 50, 7,127,209, 17,100,203,234,240, 91, 55,180,104, 83,243,129, 82,199,116, 42,103,130,173, 66,247,189,112,104, 48,115, 89, 12, + 90,135,186,180,108, 67, 67, 29, 97,174,115,176,109, 18,129,173, 4,193,216,140,141, 96,172, 97,242, 4, 57,197,134, 98,212, 26, +201,178,248,177,106, 76,205, 89,141, 32, 72, 59, 89,223, 15, 57, 83, 27,197,109,142, 29,117,131,244,200, 51,152, 95,236, 80,206, + 99,148,117,104, 27,232,175,217,185,182,153,182, 65, 42, 67,109, 88,199,157,198,117, 77, 57, 59,205,151,170,185,131,106,204, 20, +214,145, 40, 90,107,228,122,169, 49,128, 53, 62,162, 85,103, 17, 91, 83,124,152,124,174, 19,230, 24, 74,145, 6,239,158,197,122, +176, 49, 59, 97,148,229,183, 73, 61, 12, 97,209, 77,175, 14,198, 85,131, 67,221,221, 90,195, 95,253,187, 85,214, 77,221, 65, 87, +109,123, 96,202, 20,199,214, 98, 78,253,209,186,185,198, 29,120,107,230, 12, 4, 12,180, 15, 20,173, 21,157, 58, 16, 48,219, 4, +248, 32, 41, 86,213,160, 14, 96,166, 54,118,135, 53,135,122, 34,170,225,212,159, 54,204,213,148,133,137, 24, 17, 21,205,180, 25, + 97,193, 13, 11,112, 84,140, 95, 27, 8,174, 80,129, 24,135, 85, 38,100, 25,124,231,152,120, 82,132,103,109,188,208,221,145,175, + 30,177,147,118, 54, 68,225,154,247, 18,140,101,229, 97,219, 76, 82,118, 21,141,247, 4, 86, 95,166,109,178,246,148,164,172, 86, + 7,165, 3,196, 1,210, 59, 17,251,135, 72,215,194, 98,195,136,170,118, 14,232,120,213,186,230,152, 70, 52, 33,107,235, 41, 7, +183,129, 50,130, 57,144,138,252,218, 33, 54, 8,171, 78, 90, 75,193, 91,106,210,226, 83,145,131,102,182,124, 52, 98,240,210,117, +115,125, 25, 94, 99,245,122, 21,165, 30,240, 62, 27, 38,125,199,182, 54, 98, 13,140, 77, 77,219,120, 36,113,162, 87, 66, 27,146, +133,166,119, 28, 33,145,181, 51,217,228,142,209,234,203,193,220, 78,218, 70,169,163,109, 84,219, 89,227, 46,181,255,211,135,178, +216,103,248,182,209, 48,247,136,255,128,255, 11, 9,203, 84,141, 69, 4, 59,160, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/smear.png.c b/source/blender/editors/datafiles/smear.png.c new file mode 100644 index 00000000000..2e6f73d3fb1 --- /dev/null +++ b/source/blender/editors/datafiles/smear.png.c @@ -0,0 +1,299 @@ +/* DataToC output of file <smear_png> */ + +int datatoc_smear_png_size= 9358; +char datatoc_smear_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, + 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, 11, +252, 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13, +215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, 21, 0, 4, 17,164, 74, 11,162, 0, 0, 32, + 0, 73, 68, 65, 84,120,218,237,125,107,140, 93,215,117,222,250,214,222,231,222, 59, 79,114,248,146, 73, 73,182, 73,145,182, 37, +202,169,222,178, 93, 55,182, 91,139, 54,148, 24,104, 13, 56, 63, 18, 20, 13, 80,219, 65, 30,118,252,138,237,216, 73,250,163,175, + 52,253,147, 56, 64,227, 20,109, 98, 35,118,129, 58, 13,208,160, 45,234, 2,181,100, 55,150,211,248, 37, 35,129, 45,138,122, 88, + 34, 37, 70,164, 36,138, 51,228,204,220,123,207,217,107,245,199, 90,123,239,115,103,134,150,220,202, 64, 3,232, 14, 57,156,185, +188,115,238, 62,107,175,199,183,214,250,214, 30,162, 31,246,241,178,131, 7, 15, 31, 62,178,253,121, 16,209,199, 62,254,137,148, + 58, 16, 49, 51,152, 99,140, 77,140,177,105, 62,249,137, 95,181, 23,133,247,255,242, 7,218,118,154, 82, 39, 34, 73,252,147,146, +170,200, 91,223,122,215,201, 7, 79, 94,190,116, 41,220,124,203,205,146,146, 36,251, 15,253,238, 35,171,171,151,218,182,147, 24, + 57, 48,221,113,199, 29,247,221,247, 85,252,227,119,191,251,191,223,119,129, 24, 12,102, 80,140, 32,165,221,203,195, 35,215, 44, + 29,190,102,169,105,154, 65,211,132,167, 54,174, 1,148, 84,137, 84,149, 68, 73,133, 68,117,223,238,102,247, 82,163,162,170, 26, + 69, 18,131,137,160, 0, 72, 72,161, 28,165,147, 67,251, 6,211,182, 13, 65, 72, 53, 44,238, 57,170,170, 68,249, 98, 68,162,146, +148, 78, 62,182,113,236,229,115,126,119, 11,187,175, 3,148, 72, 65, 74, 4, 18, 2, 41, 1, 80, 58,117,102,227,228, 99,155,175, +121,229,124,152, 95,121, 37, 41, 8,106,175, 33, 34,255,154, 97, 98,124,224,241,205,168,162,138, 68, 9,204, 32,177,215, 49,145, +144, 18, 17, 41, 16, 72, 94,208,118,133,242,213,220,220,252,181,215, 94,203,140,205,205,205,173,123,119,203, 45,183,252,189,183, +222,165,170, 12,128, 57,132, 96, 27,247,197, 47,126,241,190,175,254,153,191,232,253,239,255,101, 37, 5,129,153,193, 8, 28,162, + 61,154, 38,198,248,107,159,252, 4, 17,133,155,111,190, 69,146,136,138,170,126,255,201,245,103,158, 27, 63,187, 58,141,129, 7, + 17, 74,242,214,183,222,117,239,189,247,224,199, 79,252,204, 35, 79,140, 65, 32, 48, 7,138, 76, 77,228, 67, 7, 22,174, 63,178, +178,107,105, 16, 99, 28,142, 70, 97, 26, 15, 19, 72, 84, 65, 68,164,170, 72, 74, 77,196,222,221,205,112,192, 36, 42,170, 81, 72, + 88,132,136,149, 68, 19, 41,135,128,240,183,142, 45,142, 6,212, 78, 91,137,162, 68, 97, 97,207, 81,104,190, 87, 21, 34, 21,165, + 71,158,216,124,197,161, 33, 3, 38,210,176,176,231,136,237, 43,148, 8,154, 95,175,143,158,153,156, 58,189,177,119, 87,156, 27, +197,168, 41, 17, 51,145,253, 12,160,162,108,250,144, 64,116,223,119, 86, 41,172, 71, 33, 97, 85,219, 83, 98,144, 2, 4, 48, 19, + 37, 16, 41,129, 69,232,197,122,160,255,205, 7, 62,248,161,133,249, 5,219, 36,251,128,217, 71, 96, 0,129,195,167, 62,245,219, +231,206,157,219,249, 66, 31,249,149,143, 38, 73,164, 68,162,118, 89, 16,129, 1, 98, 48,136,192, 1,204, 12,112, 8,129,129, 16, + 2,115,136, 49,126,252,227, 31,157,185,208, 47,252,226, 47, 17,217,221,155,148,234,131, 64, 27, 99, 73,137,154,134, 7, 77, 92, + 90, 24, 18, 40,132,104, 46,131,153, 67,140,159,253,236,103, 30, 58,117,138,136, 98, 59,157,218, 50, 64,180, 49, 17, 6, 22,230, + 34, 17, 61,117,161,125,224,209,245,209, 0, 0,119, 34,195, 38, 44,206, 15,246,236, 30,174, 44,143,118, 47, 13, 6, 77,224, 0, +238,186,159,254,233,159, 9, 33,252,198,175,255, 26, 14,190,230,239,131, 92, 42,176,123, 99,183, 76,187, 77,102, 34, 66, 8,152, + 27,197,197,185,102,223,202,240,208,129,249,229,197, 38, 4, 6, 56,216,210,154, 24, 73, 68,161, 68, 16, 2,171, 18, 51, 9,169, + 2, 80, 16, 19, 67, 4, 28,208,117, 42, 34, 73, 18,169, 44,140, 40,165, 78, 5, 0, 11, 51, 51, 39,145,168,148, 72,149,132, 21, +170, 96,146,142,136, 9,170, 74, 74, 10, 33, 82,152, 53,174,111,146, 40,221,126,195,160,109, 91, 0,102,124,102,129, 44,130,171, +142,190,141,148,137, 73, 9,254,137,148,148, 9, 68,182, 40, 34, 16, 43, 0, 6, 8, 0, 19,192,140,159,124,227, 62,219, 82,216, +182,238,191,238, 46, 34,192,212, 31, 4,187, 16,129, 8,164, 68, 76, 32, 82,128, 9, 74, 12,102, 19, 31, 56,152, 64,193, 12, 48, +129,163, 72,114, 65, 19, 17,177, 74,178,213,193,148, 85,160, 0, 84,213,118, 34,169, 27,148, 36, 83, 54, 17, 98, 38, 16, 69, 85, +177, 61, 35, 48,169, 16, 72, 5, 12,117,243, 83, 40,131,213, 54, 79, 72,153, 52, 17, 49,136,149,132,236, 77,132,148,149,254,191, +123, 96,199,103, 87, 86, 86,118,239, 94, 33,162,201,100,124,241,226,197,141,141,141, 31,226, 66, 71,143, 29,123,215,187,126,202, + 21, 58,255, 99,166,207,204, 33,132,139, 23, 87,255,245,111,253,230, 15,186,208,199,127,245, 19,146, 68, 77, 7,221,250, 25,118, + 57,246, 71,176,139,113,136, 77,252,216, 71,127,101,135, 11,125,232,195, 31, 33,181, 15,219, 37,152,234,217,118, 3, 1, 12, 55, +171, 16, 2,219, 18,195,233, 51,167,127,255,211,191,215,191, 16,119, 93,215,118,109,215,117, 93,234,186,212, 73,234, 36,117, 41, +165,212,165,148, 36, 73,151, 82,215,117, 73,146,253,219,217,231,107,175,189,246, 55,255,213,111,109,189, 80,242, 63,246,195,246, +240,175,206, 61,179,249,220,234,120,125, 99, 58,158,180, 73, 68, 82, 74,146, 82,215,117,109,219, 78,167,255,226, 95, 86,145,133, + 91,111,189, 85,123, 15,247, 36,164, 73,244,193,199, 46,175,111,118,109,167,151,215,187,181,245,150, 20,110, 30, 76, 69,160, 39, + 78,188,237, 75, 95,250,159, 30, 36, 13, 76, 76, 90,153, 76, 19,224,106,253,149,111, 95, 88,223, 72, 27,147,238,226,165,246,242, +102,183,118,185,109,147,128, 40, 48,128,108,218,170, 74,250,218,215,190,246,235,127,241, 23, 81, 68,254,199,255,126, 78,212,205, +139, 9, 74, 20, 0, 10,202, 10,144,134,200, 76,136,145, 3, 79, 98,224, 38,114, 8,196, 8,142, 11,186,110,223,222,125, 32,132, +115,155, 47,183, 72, 11,195, 45,134, 80, 84,133,160, 66,162, 5,247, 40, 64, 77,224,249, 81,156, 27,134,192, 51,123,127,215,137, + 19, 81, 73, 45,214,186, 18,129,148, 18, 41, 84, 8, 4, 14,108, 30, 84, 84,219, 86, 66,160, 24, 53, 73, 18,177, 55, 80, 85, 37, + 96, 58,157, 70, 82, 53, 87,155,149,209, 62, 11, 8,162, 68, 73,152, 89,137,148, 40, 6,106,219, 52, 26,160, 9, 36, 34,200, 14, +139,186,142,148,162,104,130,173, 67, 65,172,162, 96, 37,130,249, 17, 21, 2,137, 50,179, 8, 47, 45,132,227, 71, 23, 64,154, 82, + 2,192, 10,133,186, 30, 83,199,200, 11, 84,168,170, 66, 12, 15,138,168, 16, 9,169, 10,105, 82, 85,149, 51, 79, 77,187, 86,252, +161,110, 84,246, 93, 18, 9, 11,123,143,170, 42,217, 66, 21,196,174, 74,200,182, 8, 37,100, 9, 62,124,122,227,153,213,246,154, + 3, 3, 95,176,162, 24,126, 88, 88,185, 14, 92,127,138,236,114,190, 96,133, 66,253, 89, 34, 37, 16, 54, 38,242,208,227,155,203, + 75,113, 97,158,253, 26,128,129,159,235,212,177,106,137,218,121,247, 8, 57,158, 88,124, 50, 37, 81, 2,158,124,122,122,234,241, +141,139,151,186,107,175, 26, 42, 17, 8, 56,112,228, 4,193,194, 5, 80, 93, 11,106,116, 82,128, 41,131, 93, 6,123,128, 34,128, + 24, 32, 38,102, 16,179,129,245, 34, 87,119,250, 74, 32, 79, 23, 12,209,251,205,170,168, 10,145, 42, 9, 25,206, 39,133, 16, 72, + 35,169,171, 36, 32,118,199, 98,183,166,128, 42,129, 44, 70,168,169, 12, 1,110,218,170,172,134, 14, 13,226,229, 21, 65, 85,139, +128, 9,162,164, 34,176,141, 81,177, 85,168,175,154, 32, 68, 4, 33, 21, 53, 72, 12, 37, 7,140,162,102, 85, 34, 66, 74, 66, 80, + 34,130,138,189, 65, 94, 70, 94,188,212,251, 7, 8,148,215,240,210,227,135,143,179,229,113,228,200,117, 55,220,112,195,225,235, +174,219,179,178, 82,159,117,103, 74, 48,240,236,255,240,197,139, 23, 79,157,122,240,175,254,234, 47, 31,121,228,145, 23,103, 65, +139,139,139,239,122,215, 79, 29, 60,120,200, 82,224, 12,152,213,109,153, 50,134,183,181,108, 65,210, 30, 83, 81, 32, 33,129, 98, +211,252,167, 47,124,225,155,223,252,198, 11, 87, 14,188,227, 29,239,184,225,134,227, 34,197,183,101,147,154, 93, 50, 12, 59,150, +165,228, 47,102,151,100, 9, 71, 93, 86, 94, 40, 51,115,151,186,127,251,251,159, 62,115,230,204,243, 44,232, 3, 31,252, 48, 57, + 12,222,186,148,226,153,122, 31, 51,171,161,154,102,244, 68, 68,117, 41, 91,132,199, 28, 0,132, 24,254,201,111,252,250,120, 60, +222, 57,129,190,253,246,219,205,118, 85,243,191,189,135, 71,186, 45, 31,249, 6,148, 52, 37,217, 28,119, 93, 18, 17,178,188, 56, +128,169, 23, 34,213, 69,175,254, 22,164, 34,242,166, 55,189,249,196,137,183, 61,246,216, 99, 23, 46, 92,216,178,160,216,165, 68, + 59,110,176,187,101,135,127, 89, 58,213,137, 63,125, 97, 58,109, 53, 4, 0,212,196, 16, 35,139,210,176,137, 49,116,163, 81,100, + 54,108, 38, 77, 96, 13, 96,241, 60, 0, 34, 38, 44, 17,249, 71, 63,251,179, 49,198, 79,255,222,191,121,252,241,199,235,219,190, +247,189, 63,119, 37,117,103,178, 24,196, 96,117,215,175, 32,224,177,179, 27, 23, 86,219,182,211,200, 24,141,130, 90, 14,165,148, + 68, 99, 8,163, 97, 96,198,238,165, 97,140, 60, 28,132,209, 48, 12,154, 16, 2, 66,224,200, 22,189,171,234, 91,201, 98,208, 12, + 62,246, 49,199,163,120,247,123,222,227,102, 4, 58,123,126,114,250,220,116,245,114,215,117, 90, 3, 37, 48,106,120,101, 57, 30, +189,102,110,113, 62,220,251,205,231,148, 16, 51,154, 9,129, 69, 69,149, 6, 77, 16,209,192,136, 17, 49,240,242,226,208, 86,179, + 56,223,204, 13,227,176,225,225, 48, 48, 16, 98,214,179,153,117,113,224,240,185,207,253,209,201,147, 15,224, 29,239,252,135,223, +124,224,114, 86, 87,173,242, 49,167,207, 4, 5, 74,146,228,217,145,125,167,100, 25,146, 2, 32,102,168, 82, 8, 8, 1, 49,240, +194, 40, 54, 13,143,134, 97,215,210, 96, 56,136,203,243,113, 48, 8,195,129,137,196, 23,228, 38,201, 0, 56,112, 0,240,149,175, +220, 27, 46,211, 97,100,253, 43, 75,241,232, 78, 94,113,241,143,130, 55,220,171,192,202, 35,176, 74, 87,118,153, 89,235, 65, 68, +145, 49, 28,240,104,200,131,134, 99, 0, 17, 49,144, 47,231,128, 36,151,228,148, 84, 95,241,202,195,209,125, 15, 40,175, 65,170, +113,215, 55,182,181, 41, 41, 20, 82, 87,167, 96,134,231,225,162, 10,128,148, 68, 1,102,232,104,128, 16, 8,164,227,205,118, 97, +196,129,153, 72, 83,210,236, 63,160,121,211, 74, 98, 10,213, 72, 42, 94,106, 83,183, 33,101, 81,223, 50, 98,209, 2,218, 28,134, +168,146, 50, 72,148,136,148,213,161, 44, 51,160, 94,246, 33, 85,154,118, 50,157,202,254,149,225,213, 7,134,204, 32, 64, 68, 8, +150,204,218,221,229,144, 99, 78,215,138,114,170, 49,163, 14,123, 75, 1, 64,106,128,216,176, 30,136, 68,179, 72,124,109,154,124, +191, 72, 84,160, 32,104, 82, 53,200,136,148, 40, 65,175,125,217,232,250,195,243, 68, 16,177, 60, 2, 57,240, 88, 14,195, 4,101, + 98,225, 68, 38, 34, 34, 40, 24,138, 3,199,238,118, 69, 40, 46,134, 96, 25,187,218, 93,100,240,153, 35,171, 35, 78,195,165, 30, +219,236,133,185,222, 0,160,148,101, 94,119,227,242,190,149,198, 2, 49, 89,118, 67,108,121, 14,219, 15,128,138,154,131, 17, 22, +247, 28, 37,104, 1,139,100, 88,185,106, 52,213,144, 82,242, 9,228, 10,135,107,114,134,171, 57, 7,206, 90, 73, 74,250,196,211, +211, 83,143,111,158, 58,189, 41,162, 7, 86, 26, 17,123, 37,122,200,129,106, 81,151,128, 3, 71, 79,168, 57,209,226,142, 84,201, +110, 49,255,205, 6,129, 89,191, 96, 78,129, 76, 32,202,185,122, 2,174,185,158,127, 1, 82,228, 44, 0,204,184,249, 85,139, 7, +247, 15, 3, 51,245,227,160,169,226,129,235, 78,144,215,119, 76,209, 75, 94,228, 59,168,100,153,168,231, 71, 84,147,128,146, 93, + 24, 78,102,168, 21,155,172, 52,205,249,182, 25,100, 10,235, 91, 70,202,249,105, 16, 40, 48, 6,145,247,236, 26, 92,125, 96,184, +103,185,193,254,195,119,169, 25,160,151,196, 65, 64,209, 30, 91,163,191,119,206,182,115,197, 28,158,103,248, 15,114, 73,163,136, +184,128,121,211, 74, 43, 99,152,128,202,186,173, 64,162,106,255,203,182, 63,156, 13, 74,148, 12,149, 9,169,154, 59,209,156, 46, +144, 90,234, 39, 14,195, 69, 73, 45,195,205,184,191, 56, 68,177,146,189, 66, 85, 97, 40, 94, 96,240,221,253,139, 40,178,239, 36, + 85, 81,130,170,168,163,125,213,232,110,217,235,101,118,219, 57,225, 55, 57, 40, 41,144,181, 93,189,196,150,125, 58,200,243, 28, + 85,219, 9,133,146,144,101,201, 10, 98,241,172,131, 65, 36, 34, 96,228, 10, 27,103,220, 0,203,138, 64,164, 76,145,172, 44,199, + 80, 18,181,146,103, 65, 97,164,142, 26,212,157, 41,101, 31,233,215,242,139, 91, 41,143, 61, 49,181,109,243,178,117, 78,250,253, + 74,253, 60, 86, 44, 6, 90, 43, 7,196,202,150,166,137,170, 9,205,119,193, 0,149,199, 24,148, 80, 38, 42, 74,162, 42, 30,107, +212,109, 86,213,118,129, 60,209,244,188,158,178,223, 36,144,119,114,252, 33,182,199, 68,189,141,115, 17, 43,189,148,150,189,244, +248,145,103,174, 53, 25,104,226,252,220,252, 96, 48, 24,141,230,154,166, 33,175,234,181,227,241,100, 50, 25,175,175,175,167,148, +126,228, 11,106,154,230,166,155,110,126,205,245,215,191,226,229,175, 8, 49,212,104,207,110,103,150, 2, 26, 44, 86,213, 71, 31, +125,244,129,239,125,247, 91,223,250,214,212, 26, 60, 47,226,130,126,226, 39,223,113,252,248,241, 38, 54, 25, 43,213, 76,186,151, + 80,151,192,232, 25, 62, 17,133, 16,192,152, 78,167,247,127,251,219,127,250,167,255,249,255,105, 65, 49,198,227,199,143,223,125, +247, 79,104,193,174,125,160,157, 83,250,126,134, 63,155,156,206,166,246, 0, 51,175,173,173,125,234,119,126,123,125,125,253,135, + 91,208,158, 61,123,238,190,251,238, 67,135,174,177,154, 81, 15, 77,247, 94,212, 79,236,123,159,175,184, 38, 67,167, 68, 33,134, +243,231,206,125,246, 51,159,217,158,164,238,188,160,247,189,239,125,115,115, 11,217,125,110,205,240,107, 38,143,178, 97,125, 41, +121, 98, 11,102,207,240,107,129,161,191,153, 8, 33,156,122,240,212, 31,252,193,191,123,254,230,248,223,249,241, 55, 25,205, 32, +105,162,156,134,231,152, 80,242,123, 37, 34,241, 72,226,223,120,136,245, 4, 38,199, 47, 47,206,230,224, 2,127, 1, 17,237,221, +187,247,109,111,127,251,215,254,252,107,237, 15, 84,249,112,231,157,175, 83, 21, 81,139, 86,219,138, 13,189, 5, 81,191,210, 80, +171, 9, 68,116,229, 16,148,243, 40,191,140,200,155,223,244,150,216, 52, 15, 63,252,208, 21, 23,116,199,157,119,206,190,113,239, + 79, 15, 73,211,246,183,238,175,166, 38,112, 64, 45,114,245,224, 92, 17,173,210,225, 87, 30,126,205,245,215,127,227,235, 95,191, +194,130,238,184, 67,251, 23,237, 47, 9,179,114,232, 45,165, 60, 57,158,166,233, 52,217, 14,139, 18,160, 25, 59,151, 90, 57, 74, + 9,176, 8,109,215,242,174,183,188,229,239,222,115,207,151,118, 88,208,109,183,223,110,229,125,213, 29, 54,172, 86,122,250,133, + 33, 85, 34,237,146, 62,183, 54,157,182,137,136,186, 36,134, 21, 83,162, 24,184,143,120,161,208,109, 18, 54,136,252,230,183,188, +229,222,123,239,217,190,160,219,118,148,194,246,141, 66, 89, 30,104, 99,156,206, 61, 59,233,146,116, 73,173, 84, 50,237,100,218, + 10, 51,166, 93, 34, 66,114,123,181, 14, 50,102,222,194, 51, 45, 48,243, 29,119,222,249,213, 76, 25,201, 11,186,245,182,157, 87, + 83, 51,213, 94, 70, 70, 32,162,213, 75,237,217,167, 39,147,105, 26, 79, 36, 37, 37,162,205,113,154,180,218,118,178,190,217, 77, + 59, 33,160,109, 19,121,123,202,152, 22,216, 30, 20, 64, 24, 13, 71,135,143, 28,185,255,219,223,174, 11,186,229,150, 91,117,167, +135, 9, 36, 87, 24,188,166, 79,138,141,113,122,244,236,230,165,245,110, 60, 21, 34, 74,162,227, 73,154,118,186,177,217,110,140, +147,245,178,218, 78, 1,154,182,137,128,192,206,238,225,226,117, 45,245,243,236, 79,247,172,236, 89, 91, 91, 59,123,246,172, 7, +140,190, 79, 54,205, 19,161,105,103, 55,134, 24, 48, 28,176,249, 22, 81, 18,145, 7, 30,189,124,241,114, 7,208,160, 65,219,137, +101, 46, 41, 41, 7,110, 2, 54,199,105,110, 20, 83,210,182,147,133, 81,195,220, 17,233,104, 16, 1, 33, 69, 8,198, 96,200,176, + 61, 37,102, 22,166,127,240,206,119,126,239,123,223,181,174,115,204,253, 41, 26, 79,229,225, 51,227,103, 86,219,245,205,148,141, + 21, 68, 20,152, 23,231,248,224,254,225,177,107,231,190,247,253,245,167, 46, 76, 24, 8,129,218,142, 2, 64, 76,146, 52, 68,230, + 46, 77,148,154,134,101,179, 21, 53,129, 16, 64,129, 49, 69, 98, 16, 2, 19, 52, 88, 46, 64, 70,173, 96, 18, 97,162, 78,245,131, + 31,250,240, 63,255,103,255,148,136,194,205,183,220,178, 57,150,251,254,114,237,161,211,155, 23, 47,183,109, 39, 57, 76, 0, 80, +203,117, 39,173, 60,187,154, 30, 62,179,185,122,185, 83,213,164, 42, 66, 32, 77, 74, 41, 41, 1, 41,137, 8, 1,232,146, 48, 16, + 3, 82,146, 38,218, 79,211,160, 97, 34, 10,209, 11, 86, 85,193,189, 36, 64, 12,196,166,185,124,249,242,217,179, 79,134,105,115, +221, 3,143,109,116, 73,115, 61,204, 27, 99, 61, 95,103, 70,106, 58,154,119,158, 44, 79, 81, 16, 37, 17,147,165,136,114, 38,127, +133,200,146, 36, 4,110, 26, 16, 97, 56, 8, 0, 5, 96,214,145,129,106,217, 0, 55, 28, 63,126,239, 61,247,132,184,244,106, 80, +174, 36,231, 0,238,249, 83,201,171, 74,113,198,163,170,194,214, 95,234, 76,222,178, 39, 21, 53,240,161,170,131, 38,128,169,137, + 97,216,176, 85, 66,193, 61, 71,222, 51, 91,175,237,137, 46,239, 90, 14,203,251, 95, 77, 94, 92,203,158,204,186,167, 14, 47,212, + 91, 94,246, 79,117,184, 84,151,238,125, 66,175, 12, 89, 21, 49, 6, 6, 48, 55, 12,243, 35, 30, 14, 66,211,176,213, 21,118,192, +133,189, 30,193,181,215,190,156, 45,209,243, 13,176,228, 48,119, 72,181,151,201,121,254,104,245, 48, 18,162,156,195,131, 61,205, + 54,154,152, 88, 50, 9, 17, 29, 52,104,162,101,136, 58,157,166,192,249, 2,146,219, 6,246,206,162,201, 59,193,154, 82,178,138, + 23,121, 97,192,186,154, 90,194,187,228,152, 40, 94,192,130,130, 68,196,181, 71,213,186,215,160,114, 71,164, 42,202,164,195, 1, +136, 84, 68,219, 46,141, 39,105,126,100,110, 72,108, 41, 34,146,239, 78,252,137,252,124,244,176, 64, 98,149, 57, 47, 35,168,244, + 96,180, 16, 65,132, 0, 81,111, 11,149,194,177, 35,126,171,215,121,125,137, 41, 70, 76, 91,137, 49,140,167,105,247, 98,179,111, +165, 1, 72, 68, 75,233,107,166, 72,168, 4, 54,187,133, 2,145, 60, 72,103, 93, 87, 37, 88,237,147,136, 20,162, 25, 49,250, 18, + 69,172,221,224,109,188,204,105,240,181,216,234,199, 19,153,159, 11,131, 64, 71, 14,205,205,207, 69, 18,175,236,114, 86,232, 92, + 62, 42,233,190, 58, 23,202,170,176, 90,169,100,170,164,144,172,172, 80, 49,179, 83,175,247,100, 69,182,178, 14,121,173, 74,225, +118, 15, 17,130,116,186, 60,207, 71,174,158, 59,184,127, 4,130,136, 16,193,251,198, 25,132, 11,229, 27,180,187, 49, 39,198, 44, + 34,209,125,147,146, 66,212,138,242,168,120,181,136, 78, 10,186, 17, 43,163,216,173, 89,153, 81, 51, 31,213, 36,197,147,150,118, + 45, 6, 47, 70,213,234,165,247,159, 61,220,235, 54, 60,161,170,170, 97, 97,239,171,128,236, 15,253,134,115, 69,175,148, 16,171, +129,123,205,217, 61, 17,229,250,111, 69, 99, 32,162, 78,244,177,179,147, 97,131, 93,139,113, 75,128,215, 89,147,207,148,181,234, + 13,194,194,202, 81,175, 95, 34,123, 68,247,135, 94,188,174,200,177, 95,249,132,170,146, 21, 48,157, 86, 81,219, 19,142, 85,207, + 93,104,207, 63,215, 94,125, 96, 80, 22,163, 52,171,204, 69,185,181, 64, 95, 10,139,123,143,121,204,200,184,169,230,168,154,203, +121,153, 7,130,217, 96,162,217, 44,109, 19,173,202, 6,228,168, 3,108, 78,229,161, 51,155, 11,115, 97,215, 66,176, 54, 18,149, +250, 28,122,173, 1,148,146, 50,194,226,158, 99,132,220,114,114,199,232, 20, 32, 11, 18,190, 85,208, 82, 16, 71,142, 19, 53,136, +120, 3,198,174,225,253, 48,207,141,128,167,158,153, 62,241,244,228,224,222, 65,140, 60, 19, 44, 72,103,113, 32,129, 40, 44,174, + 28,237,117, 52, 73,137, 93,231,220,163,103,126,154,102, 69, 33,167, 29, 85, 62,181,149, 44, 29,114,184, 28, 84,213, 9,185,170, +202,104, 91,122,244,236,230,133,213,238,208,190, 65,214,131, 28,166, 43,102, 3, 1, 97,126,207,117,190, 77,170,185, 11,145,205, +165, 16, 64,145,155, 45,228, 46,194, 58, 63,234,141, 56,115,143,185,180,170, 37,211,117,240, 0,135, 8,180, 57, 78,167, 78,111, +174,173,167,221,203,113, 16, 57, 27, 93, 69,135, 64,238,117,120,251,165, 7, 49, 75, 43, 6, 40, 12, 53, 84,155, 48, 16, 80,107, +237, 89,168,197, 37, 40, 42,140,118,221,242,189,186, 60,150, 71,159, 24, 63,254,212, 88,132,150, 23, 66, 19,185,170,116,191,181, +160, 69, 20, 58,115, 49, 91, 82, 77, 1,243,205,100, 3, 97,205, 56, 46,119, 63, 56,111,182,177,132, 12, 44, 24,123,139,235,162, +189, 65,199,145, 49, 55, 10,215, 28, 24, 29,216, 51, 88, 90,136,216,127,221, 93,149, 19, 5,151, 47,151,236,110,107, 34, 74,121, +125,165, 73,221,115, 37,240,102, 67,230, 45,149,190,151,245, 5,193, 94,239,242, 94,173,203,217,218, 32,165, 65, 85, 25, 3,238, +176,125,117, 90, 16,191,246,157,153,250,252, 0,172, 83, 32,189,124, 52, 35, 72,177,132, 64, 73, 4,200, 14,152, 8, 6, 56,156, +173,165,146,153,120,158,130,154, 21,147,181, 1, 11,238, 49, 17, 56,146,144,188, 58,127, 38,175,204, 59, 10, 4,107, 91,100,166, +104,225,123, 34,215,116, 0, 47,164, 56,159,220,116,149,250,183,237,198,132,210,178, 51,102,148,245, 95,140, 19,149,203,247, 40, + 29, 24, 96,166,221,166, 74, 25,156, 0, 98,237, 25,234, 27,140,121,249, 44,171, 92,255, 50,197,214,156,237, 73, 37,156,192, 67, +146,165,127,236, 77, 96, 11,198,198, 43, 51,118, 60,164, 22, 12, 84,196, 55,207,213,219, 71, 77,188,111,160,165, 91, 64,164,222, +121, 33,201, 82,211, 60, 71,224,245, 36,120, 55,163,254,183,209,203, 76, 72,172, 40,165, 15,248,156,137, 20,113, 42,145,216, 27, + 23,245,166,140, 41, 9, 74, 34, 57,130,105,222,187,222, 32,138, 53,162,108,109,206,128,115, 79,234,221,101,100,112,140,210, 95, +178,124, 78, 69, 76,127,157, 61,165, 36,121, 82,197,157,181,144,168,255,161,172,169,254,102,165, 38, 9,207,227,253,135,179,191, + 87, 21,119, 64,158, 13, 19,140,127, 73, 89,247, 8,249, 26, 2,225, 12, 97, 85, 74,103, 62, 99, 41,167,229,213, 36,163, 68, 86, + 7,248,206,208,115, 87, 35, 46,132, 34, 35, 19,176, 89,191,251,111, 21,183,143,108, 91,200, 45,193,220,142, 99,199, 4,226, 86, + 39, 4,148,249, 15,168,191,171,102,234, 98,175, 74,156,129, 74,233, 86,193, 93,129, 11,183,199,152,240,172, 36, 23,198, 60,187, +203,121, 2,114, 27,217, 38,110,200,249,145,182,211, 4, 18,201,137, 99,134,138, 68, 10, 21,136,247, 54,125,231, 92, 84,132,194, +186,116,120,235, 36, 69,231,100, 40, 42,173,201, 0, 74, 49, 42,210, 45, 41,218, 75, 13,179,151, 30, 47, 61, 94,122,252, 77,233, +183,254,160, 75, 0,139, 75, 75,203, 75, 75, 11, 11,139,187,118,239,218,179,178,103,215,238,221,187,150,151,231, 23, 22, 23, 22, +230, 6,131,161,161, 64,154, 41,152,229, 28, 71,169,235,186,205,205,141,181, 75,107,151, 46, 93, 62,127,254,220,229, 75,151, 87, +215, 86, 47,173,173, 93,188,120,241,210,165, 75,127,243, 4, 52, 63, 63,127,244,216,171,174,190,250,234,171, 14, 28,216,181,107, +247,252,194,124,140,177,223,137,217, 82,166,223,254, 38,152,109,219,246,232,189,101, 60,161, 62,186,174,219, 88,223, 88, 93, 91, + 61,123,246,201, 83, 15, 62,248,208,169, 83,221,139,212,249,126,209, 4,116,224,192,129,155,111,185,229,198, 27,127,108, 56, 28, +212,146,203, 11,185,110,173,220,150,186,148,127,139,146,105,123,162,158, 11,187, 61, 73,101,121,129, 11, 51,218, 51,100,102,230, +211,167, 31,255,242,189,247,158, 60,249,128,188,136, 83,169, 47, 68, 64,139,139,139, 87, 93,117,213,107, 95,251, 99, 71,143, 30, +227, 24, 24,172,165, 49,220,235, 81,109,145, 17,118, 84,154,254,172,201,214,111,183,113,232,183,127,158,157,154, 67, 33, 23,246, + 90, 12,214,133,127,238,185,231,254,236,127,125,229,228,201,147,207, 62,251,236,143, 68, 64, 7, 14, 28, 56,126,252,248,225,195, +135, 15, 92,117, 85, 74, 2,160, 82,201,103, 73,134,207, 47,230,146,185,247,189, 77,173, 2,209,140,240,182, 19,233,183,145, 1, +158,239, 73,100,174, 34,115, 96, 34,156,126,252,177,111,126,227, 27,247,127,231,254,182,109, 95, 28, 1,125,242,147,159,156, 76, +219,153,142,110,159, 66,240, 60,146,153,165, 60,244,239,118,203,147, 59,188,108, 11,109,227, 7,168,210, 22,234, 66,223, 12,139, +245,245, 39, 43, 1, 96, 50,158,124,249,203,247,110,111,229,254,208, 2,250,208,135, 63,210,203,179,245,202,250,178,205,243,244, +105, 50,179,114,233, 61,185, 93,149,102,141,112, 27,175,165,142,104,108, 97,114, 60,191,138,193,217,190,168,174, 44,112,104,219, +246,243,159,255,163,147, 39, 79,254,223,205, 63, 57,157,193, 91, 33,185, 30,211,231,124,228, 63,219, 68,166, 91,132,214, 87,186, + 45, 20, 11,237,187,176,158,158,246, 52, 84,183, 49, 37,244,138,207,107,127, 23,243,183, 59,126, 86, 85,102,190,233,166,155,239, +186,235,196,193,131,135,158,124,242,137,237,103, 61, 60, 15,159, 76, 69,116,219, 61,238,196, 29,184,130,101,233,182,239,250, 79, +234,142,207,102,234,103,166, 32,151,225, 54, 39, 64,219,160,160,241,125,184,199,195,236,183,143, 0, 75, 77,149, 42,135,191,126, +182,129,206,108,118, 4, 36, 74,215,223,112,253,241, 27,111, 88, 91,187,252,199, 95,248,143, 15, 61,116,234,133,154,216, 47,254, +210,251,250,162, 65, 97,251,208, 21,158,200,134,146, 11,229,254, 69, 41,172, 83, 62,150,160,119,100, 66,239, 71,124,230, 15,164, +212,118,210, 37, 45,117, 66,147, 72,140,126, 24,128, 9, 45, 48,199, 6,129, 67,181,191,124, 20,133,211,184, 52, 23,164,235, 64, + 14,122,161,162, 14, 77,149,182, 1,115, 16,213, 63,252,195,127,255,240, 67, 15, 61,191,137,221,126,219,237,125,227,200,118,211, + 35, 13,245,232,183, 59,178,116,182,154,223,246, 65, 48,157, 49,182,201, 84,214, 55,186,181,245,118,125,179,219,156,164,105, 43, +146,114,129, 68,181,235,116, 50,149,105, 43,198,170, 78, 34, 93, 75,185,162, 68, 34,153, 77, 85,198,185,115,167,170, 79, 32,164, + 30, 7, 74,123,239,223, 99,227,208,173,183,222,250,250,215,191,225,252,249,243,207, 60,243,204, 15,210,160,159,255,249, 95,232, + 57, 97, 92,201,170,250,108,150,108, 32,133, 46, 72,229,244,138, 45, 1,189, 95,230, 23,213,205, 73,186,180,222,109,142,165, 75, +126, 26, 73, 8, 28, 35,184, 87,132,103, 70, 8,126,242, 3, 17,133,192,129,193, 1,131, 24, 98,100,211, 50, 27, 33,178,129, 46, +251, 95,246, 81, 12, 80,159,159,127, 5,120, 85,106,229,118,110,204,217,191, 62,251, 31, 62,255,185, 43, 97,168,112,235,109,183, +213,138,116,253,179,163, 35,234,109, 6,205,182,241,232,121,248, 79,151, 55,218, 39,207,143,207, 61, 51, 89, 93,239,198,147,212, + 37, 17,165, 36, 58,237,116, 60, 77,147,137, 76, 59, 73, 66,157,232,100,146, 46,111,116,235,227,118, 50,149,105,171,227,105,154, + 76,211,120,156, 38,173,168, 82,151,100,210,166,201, 52,181,157,171,182,213,147,197,120,230, 82,170,249,179,252,173,109,254,187, +172, 76, 68,150,150,150,255,246, 27,223,184,184,176,244,224,131, 39,119,208,160,247,188,247,231, 94, 8,210,201,156,146,172,205, +179,177, 60, 19, 47, 74, 47,174, 14, 13,182,157,156, 61, 63, 57,127, 97,218, 38, 69,223, 89,131, 24, 20,152, 67, 96,128, 68, 53, +117,146,132, 66, 64, 96,127,198, 20,106,216,132, 24, 64,160, 24,120, 48, 8,131,104, 71, 15, 32, 6, 14,129, 67, 64,211,112, 52, + 69,179, 67, 73, 24,204, 84,230, 88,250,128,137,122,200,160,192, 38, 66,245, 82,191,251,187,191,243,212, 83, 79,205, 8,232,221, +239,121,207, 14,214,228, 67, 4, 58,153,234,230, 36,173,111,166,245, 77, 25, 79,165,109,181,147, 26,124, 3, 16, 27,158, 27,240, +252, 40,204, 13,121,110,196, 11,163, 48,104, 24,185,182,251,236,197,246,241,191, 30,175,143, 83,151,106,180, 52, 38, 19, 7, 59, +175,169,204,172,155,147,246,136,198,224,192, 62,232,164, 68,118, 30,195,104, 24, 76, 52,129,185,137, 38, 44,196,192, 49,114, 8, + 28, 3, 98,228, 16,108,210,198,102,105,137,123,166,118, 37, 0,213,135, 78, 12,254,218,159,127,237,191,253,215,255, 82,195,124, +111,214, 72,153,104,125, 44, 79, 62, 61, 57,119,161,221, 28, 75,155,106,252,157, 77,165, 10, 33, 4,219, 34,184,207,252, 45,206, +135,249, 17, 95, 88,235,214,199,201, 42,197,176, 35, 89, 24,128, 74, 34,237, 58,235,170,147, 29, 9,146,107,206, 54,193,156,144, +166, 62,150,196, 49, 0, 80,237,146,168,196,192,195, 38, 52, 13,137,106, 18,109, 35, 6, 49, 12,149, 6, 68,118, 14, 67, 72,136, + 17,129,153, 68, 69,136, 2, 96,227,118, 5,116, 20, 78, 84,134, 5, 41, 83,135,133, 72, 89,223,240,250, 55,236,223,183,255, 79, +254,228,143,173,216, 18,110,186,233,230,233, 84, 78,159, 27,127,231,193,245,239,125,127,253,177,179,227,103, 87,219,105,107,173, +142,114, 80, 6, 97,134,185, 66,189,233, 50, 45,205,125,228,161,197,105,210,245, 77,185,120,185,155, 78, 69, 37,119,196,160,162, + 42, 73, 83,162,148, 10,247, 7, 41,105, 74, 78, 28, 35,130,157,135, 38, 94,125,135, 18,137,136,209, 74,152,153,128, 36,146,146, +136, 40, 51,103, 78,147,170,168,143, 18,214, 70, 64,241,215, 90, 26, 41,125,126, 42,106,121, 95,123,172, 90, 18,145,125,251,246, +221,120,227,141, 15, 60,240,192,120, 60, 14, 79, 79, 15, 63,124,102,243,153,213,182, 77, 91,104,192, 58,155, 76,169, 15, 41, 85, + 38, 29,168,144, 12, 60,144,121, 47, 10,101,128,144, 74,127,221,154, 64,101, 8,140, 72, 97, 70,231, 76, 66, 63,213, 77,139,243, + 48,134,148,155, 30,172,133,169, 70,122, 49,171,176,195, 24,152, 17,236, 28, 35, 35, 36, 6, 4,152, 15,218, 1,212,111,129,230, + 91,216,235, 61,118,146,206,205,205,221,249,186,215,125,231,254,251,195,226,190, 87, 3, 51,189,247,153, 76, 66,107,195,101, 75, + 50,101,104, 2,234,102,166,153, 32,208, 75,203,212, 27, 85,154, 71, 47,225,124, 45,165,204,197,200, 76,239, 50,192, 95,187,141, + 89,152, 82, 72, 35,142,159,141, 80,134, 16, 17, 3, 51,200,102,155,155,134,155, 96,246, 72,101,215,234, 73, 90, 91, 36,213,167, + 5,246,115,207,156, 24,169, 42, 24,175,187,243,245,145,116,123,153, 75,183,230,159,149,214,157,207,198,202,188,130,124,119, 54, +202, 38, 54, 3,107, 7,186,160, 48,213, 84,172, 43,239,202, 12,201,163,134,238,124, 42,171, 44, 67,191,204,165,178, 3, 73,152, + 8,146,164, 21,168,162,137,193,206, 9,180, 46,120, 19,120, 56,192, 32, 2,164, 34,210,117,104, 2,115,230,106, 10, 9, 43,207, +160, 91,148,217,216,222,204,103, 25,113, 44, 60, 36, 85, 81,226,192, 81,168,239,192,242,166,234, 12,237,169, 28,101,227,241, 28, +153,183,161, 51,210, 47,122,131,218,202,244,159, 19, 21,239,209, 89,182, 32,185, 91,170,253,188,221, 68, 5, 21,173, 59,227, 24, + 71, 56,112,132,185,121, 13, 64, 12, 52, 28, 96, 56, 96, 2, 77,166, 41,137, 12,155,136, 70, 2, 49, 7,101,134,183, 20, 65, 66, +137,102,115, 20,202,253,230,156,187,121, 3, 25, 30, 22,242,176, 54, 9, 37,138, 48,116,181,141,255,165, 51, 32,208,155,151, 90, + 40,103,181,200, 33,101,244,192,248, 20,168,108, 28,202,212, 35,103,103,212,115,141, 28,164,249,182,105,225,190, 3, 37, 11,207, + 20, 37, 16,105, 0, 7, 80, 96, 50,140, 19, 35, 0, 88,154, 50,104,120,126, 20, 34,243,112,128,209, 48,216,172,124,127,162,163, +122,189, 29,242,236,217,228, 1,101,200,210,233, 45,194, 20,123,195, 40,245, 88,145,194,225,240,107, 25,133,160, 18, 68, 50,141, + 45,179, 44,189,102,165, 66, 61,206, 94,237,228, 26, 17,148, 10,145, 0, 62,186,137, 60, 22,137,108,180,126,122,100,142,135,164, +236, 45,233,236,205,136,166, 83,233, 58,141,145, 23,231,227,174,197,184,188,216,204,143, 66, 19, 61, 21,205, 12, 0,173, 30,245, +138, 21, 10,108,127, 66, 75,209,156, 8,170, 76,136, 66,149,185,221, 63,101, 32,179, 10,144, 3, 58,168,136, 12,206,161,169,123, +161, 78, 87,216,214,219,153,169, 75,218,228,111,190, 1,167,192,102,118,167,244,180, 17,230,126, 64,249,192, 1, 81, 98,154, 78, + 53,177, 46, 45,196,151,237, 29,238,217, 61, 88,152, 11,193,249,217,228,148,145,158,227, 44, 49, 88,139, 59,172,150, 53,251, 81, +104,100,217, 19,105,158,188, 86, 73, 17, 66,149, 73, 99, 99,180, 69, 89,242, 76,187,217, 24,180,230, 16,249,147,100,178,121, 57, + 18,181, 64, 2,161, 45, 19, 15,249,133,126, 10,129, 56,239,212, 71,115, 11,179,136,178, 16,243, 73, 99, 22, 3, 64,184,106,239, +224,200, 53,115, 75, 11,161, 4, 38,201,188,168,236,123,119,212,141, 26,210,119,172, 95, 21, 77,215,108,224,232,205, 7,133,197, +125, 71,253,188,174,138,168, 81, 15, 41,164, 58, 19,230,108, 63,212,227, 53,250,172, 80,148,231,141,204,209,251, 83, 39, 16, 84, +203,208, 63,101,215,147, 25,185,153,122, 57,163,126, 40, 20, 28, 85, 93, 91,239,206,156,155, 60,183,218,205,143,194,104,200, 59, +123,150,173, 93, 21,244, 11, 85,253,191,216,161,124,188,173,102,195, 28, 22,246, 28, 43, 76,100,143,180, 85, 94, 22,180,123,211, + 13,126,212, 66,166, 70, 34,123,115, 45,142,167,220,126,185,146, 82, 57,166,173,184, 46, 19, 35, 35,143,101, 91,101, 48,107,129, +246, 2,170, 86,128, 98, 62,108, 99, 44,167,159,154, 60,242,228,230,250,102,218,189,152,189,242, 12, 22, 41,212,163,254,168, 88, + 86, 31,244,142, 57,201,208,191,242,206,182, 20, 87, 85,141, 14,188,117, 22, 18, 21,225, 86,112,132, 10,160,139,188,180,190,174, + 15, 34,102, 8,210, 5, 78,247,123,100,125,197,116, 8,105,164, 65, 42,122,148,227, 70, 30,121,240,209, 53,167,105,137,174,173, + 39,163,132, 38,209,185, 1, 55,161, 63,128,151,249,107,152,197,128, 62, 91, 85, 1, 70, 63, 75,163,153,147,102,242, 29, 92,117, +236,237, 51, 21,186,204,206, 70, 31, 52,231,227, 68,182,246,193,156,130,139, 30, 45, 16, 59,180, 18,103,192, 67, 46, 38,161, 23, + 48,168, 30, 86,146,233,196,245,173, 51,114,204, 4,115,157,233,190, 21, 2,212, 96,128, 3,123,134,175,120,217,112,239,174,198, + 65, 90,201,220,181,158,185,215, 75,231,183,181,193, 49,123,252, 21,129,128,152, 79,136, 38,234,177,225,234, 84,130, 87,213,169, +206, 32,204,220, 86, 57,223,166,248,111, 45, 44,102,162, 45, 95,102, 11,114, 69, 19,114,188,141,122,240,160, 24, 61,210, 77, 47, +167, 31,170, 89,127,250, 14, 74,197,207,117,176,138,116,219,209,147,231, 38, 79,158, 27, 7,198,210, 66,124,229,193,209,161,253, +131, 24, 57,143,186, 72, 14,141,189,163,138,202,100,196, 21,218,233, 32,194,254,163,111,171,229,221,108, 57, 40,229,141,204, 82, +167,222, 1, 48, 57,254, 67, 75, 99,125,235, 49, 45,180,211,244,107,158,116,202, 17,163, 30,170, 91,226,101,169, 70,100,112,228, + 44,112,234, 77,140,212,247,239, 41,173,207, 0,212, 73, 9, 91, 58, 51,237, 95,105, 14, 31,154,219,179, 28,109,120,180, 4, 3, +202,168, 89,243,190,215,219, 46, 67,222,204,209, 25,167,133,239,136,154,115, 1, 51,245,113, 63,142, 28, 21, 72,250,212, 94, 77, +111,104,118, 56,108,139, 51,234,159, 9,130,234,197, 10,143,159, 4,117,192, 39, 79, 66, 65,180, 12,157,250,154,202, 60, 77, 78, +253,204, 58,141,193, 40, 62,126,226, 68, 86,161,167, 47,180,231, 47,180,162, 20, 3,175, 44,197,125,187,155,149,229,184,107, 49, +142, 6, 1,208, 45,220,132,109, 9, 0, 0, 3,255, 73, 68, 65, 84,245,252, 50,252,224,147, 21, 34,177, 0, 24, 20,146,107,127, +168,198, 51,250,218,229,164,114,192,167, 33, 87,103,141, 22, 25,213, 65,187, 89, 13, 66,207, 23, 21,186,126, 46, 3,104,175,212, +110,152,179, 12,210,217,127,121,153, 35, 67, 3,173,239, 12,159, 8,202,103, 42, 59,236,171, 73,164, 65,205, 0,168,232,179,107, +237,179,171,222,179, 15, 1,163, 65,152, 27,242,174,197,184,188, 24,119, 45,196,197,249,208, 52, 37,207,245, 75, 68,130,206,122, +208,194,255, 47, 9, 67, 46, 86,144, 26,183, 54, 67,147,172, 86, 40, 14, 44,203, 79,183, 28, 31,133, 66,152,206, 38, 92, 96,165, +239,184,205,139,137, 29, 59,148,157, 20,196,143, 21,202,175,149,114,210,154,173, 5,238,176,138, 10, 82, 30, 51, 67,153,246, 71, +221, 68,113,124,110, 91,155,104, 99,179, 91, 31,227,217,181,206, 5, 95, 32, 26, 83,240, 67, 10, 40,138, 74,207,243, 22,116, 35, + 36,253,210,142,248,150,149,132,221,105,217,245,176,214, 82,211,193,204,175, 0,152, 77,237, 52,227, 94,167,135,247,145,143,243, +161,197,167,121,102, 86, 2,211,162, 82, 88, 67,214,192, 50,189, 78,101,158, 83,145,207, 14, 2, 20,189,195,175, 80, 60,130,255, +159,184,125,146,214, 77,177, 40, 42,148,212,196,138, 88, 74, 64,154, 77,197,167,118, 42, 98,206,197, 46,239, 18,231, 50,144,231, +225, 61, 96,174,245,192,241,109,173,182, 76, 67,166, 2, 46,109,118, 32, 95,208, 85, 83,242,104,172,206, 36,144,229, 92, 34, 42, + 67,143,240,106, 64, 30,106, 43,153,157,150,211,242,188,182,224,113,182,102,163,164,162,118,252,159,215,238,252,172, 56, 18, 63, + 47, 46,163, 13, 64, 99,221,189, 44,101, 99,131,151, 34, 96,133,203,130, 90,196,200,220,235,170, 83,101,123,103, 90,141,197,216, + 64,189, 23,162,192,216,124,236, 44,202, 12, 0,202, 80,152, 23,159,178, 31, 47, 13,103,179,150, 10,234, 80,203,119,121, 6,180, +204,115, 73, 29,164,246, 8, 89, 50, 31,205, 99,102,249,184,171,114, 56, 88,175, 60,200, 81,203, 4,100, 69,204,110, 40,174, 88, +165,198, 86, 19,139,146, 9,248,201,210, 25,233,110, 37,149,245, 81,139,106,239, 87, 68,212,233,173,158,179, 47, 49,203,237, 78, +144,127,153,133,150,185,112, 63,135, 75,243, 33,114, 86,148, 45,133, 42,205, 16,177,224, 67, 59, 97, 48,187,246,172,154,176, 95, + 33,160,117,162,192,113,151,201,186,188, 1, 36,106,141,235, 69,120, 40,225,204,214, 41, 14, 59, 36, 31,198, 86,165, 73,229, 80, +198, 25, 67,155,105,246,215,217,190,162,111,118,209, 94,201, 22,217,225, 35,159,168,232,218, 84,124, 32,231,116,169, 2,151,156, +161, 91, 5, 63,227,162, 92,177,203,207, 64,124,120, 49, 55, 74, 10, 88, 42,147, 8,200,165,131,170,229,121, 74, 62,122,152, 68, + 47, 99,201, 21,218, 28,154,220, 61,168,192,207, 7, 7,234,142, 22,128, 83,230,184,123, 33, 30, 51, 21,242, 60, 75, 83, 60,145, +102,136,161, 37,165, 87, 5,247, 79,149,169,168,163, 95,143,172,170, 84, 3,100,197,180,154,111,184,234, 75, 81, 46,195,159, 54, +185,166,142, 69,125, 40,159,106,140,205,199, 93, 19, 40,150,152,227, 10,156, 65,174,157, 61,153,135,242,250,126,222,146,132,154, +138,148,242,238,142,244, 41, 42,238,106,230,148,131,156,149, 22, 3,148, 50,252,231,177, 92, 10,134,161,222, 77,148,185, 80,175, +118, 21, 91,162, 50, 18, 74, 53, 55, 44, 35,152,245, 92,132,252,107,129, 52,203,135,178,135,238,165, 28,189, 1,202,168,110,237, +148,199,212,109,215, 69, 75,238,111,146,170, 39,243, 74,101,117, 72, 57,128, 68,139, 67,157, 41, 55, 17,182,102,172, 90,195,162, + 25, 70,143,168,168,185,102,235,171, 41,193, 37, 27,191,148, 34,184,144, 48,177,246, 14,155, 1,124,240,189, 14, 35, 23,209,102, + 99,114,119, 78, 53, 92,245,237,172,134, 18,173,147,176,209,100, 65,181, 50, 96,135,153,246,207, 9,204,190,172,142,170,111,145, +148,223,179, 34, 71,200,126,253,181, 87,156,202, 73, 80,245, 95,133,219, 83, 38, 26,123, 67,200,186,197, 49, 21,162,141,221,112, + 1,130, 84,115,124,251,221, 67,138,146,246,168,128, 88,171,176, 92, 70,254, 59, 80, 42,104, 33,155, 69,166, 90,135,117, 25, 71, +170, 94, 58,159,218, 81,129,123,191,132,225,211,190,238, 56, 42,217,163,103,107,189,211,125,251,166, 38, 5, 10, 97,150, 48, 3, +173, 96,161,232, 29, 74,197,223, 59,135,121, 44,187, 15, 77, 51, 78, 42, 0,165,103, 27, 90,233, 38,121, 18,191, 71, 74,163,234, +148,105,230,101,253,113,216,222, 89, 44,255, 7,220, 22,142,137,141,220,236,213, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/soften.png.c b/source/blender/editors/datafiles/soften.png.c new file mode 100644 index 00000000000..c50e3064e30 --- /dev/null +++ b/source/blender/editors/datafiles/soften.png.c @@ -0,0 +1,295 @@ +/* DataToC output of file <soften_png> */ + +int datatoc_soften_png_size= 9219; +char datatoc_soften_png[]= { +137, 80, 78, + 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, + 0, 4,103, 65, 77, 65, 0, 0,177,143, 11,252, 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, + 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, + 21, 0, 4, 17,164, 74, 11,162, 0, 0, 32, 0, 73, 68, 65, 84,120,218,237,125, 89,140,101,215,117,221, 94,251,220,247,106,236, + 42,118,245,196,230, 32,178,217,221, 18,201, 38, 13,118,147, 26,163,216,145, 68, 82, 10,109, 1,142, 0,249,195, 70,254, 44,219, + 72, 34, 89,147, 53, 81,118,128, 72,137,108,231,199,209, 79,236, 68, 48, 36,216,254,136, 28, 3, 49,146, 32,202, 71, 68, 41,142, +228, 88, 19, 5, 27, 22,155, 77,138, 33,155, 34, 37,206, 61,213,240,222,189,103,175,124,236,125,206,189,175,170, 56, 40,166,129, + 24,224,235, 98,117,213,235,247,238, 59,119,159, 61,174,189,246,161,200,143,251,184,252,240,225, 35, 71,174,219,249, 60, 68,228, +163, 31,251, 68,206, 29, 68, 84, 21,170, 77,211,140,154,166, 25,141,238,254,196,199,253, 69,233,125,191,250,254,182,157,230,220, +153, 89, 54, 51,203,150, 45,155,209,120,251,237,183,159,190,255,254, 75, 23, 47,234,116, 58,105,167,211,118,218,182, 93,219,181, +237, 51,207,109, 92, 88,159, 76,167, 93,215,118,147,233,244, 87,126,249, 87, 70,163, 81,211,182,237,127,251,218,179,162, 80,232, +141,215,206,207,207, 53,203, 29, 69,148, 20,205, 32,121,247,221,159, 76, 63,218,184, 10,160,144, 34, 76, 96,219, 89,206, 70,210, +204, 22,230,148, 70,146,141, 89, 86,168, 8, 8,156, 95,111,183,166,121,218, 90,151,121, 96,239,120,218,182, 41,153,144,105,121, +237, 24, 73, 17, 10, 73, 74,206,242,236,197,238,153, 11,221,233,135, 55,142,191,106, 33,238,110,233,178,163, 0, 69, 8, 33,129, +105,107, 16, 10, 0,202,153, 71, 55, 78, 63,188,121,253,181,139,105,113,239,181, 66, 8, 40, 20,134,236, 40, 20, 81,184, 24,239, +123,100,179,161,145,200,146,161, 10, 49,151,174,138,152,191,131, 64, 18,123, 73,219,149,234, 79, 11, 11,139, 87, 95,125,181, 42, + 54, 55, 55,183,239,221,169, 83,167,222,118,251, 29, 36, 21,128,106, 74,201, 55,238, 75, 95,250,210,215,254,215,159,197,139,222, +247,190, 95,165, 16, 2, 85,133, 34,105, 82, 77,163,113,211, 52,163,209,104,244,201,187, 63, 33, 34, 58, 45, 27,215,118,237,185, +243,155,207,157,223,216,220,106,219, 54, 79,167,211,201,100,242,169, 79,125, 90, 68,240,147,119,254,194,247,127,176, 5,129, 0, + 55, 31, 91, 92, 92, 24,173, 44,207, 47, 47,205,143, 71,105,212,232,104, 52,154,155,159, 79,211,230,136, 64,140, 92, 94,132,144, + 93,103,217,140,180,156,109, 60, 86, 49, 26,217,152,152,154,137,104,215,201,249,139,156,180,214,118,118,229,129,249,148,216, 78, + 91,107,140, 34,105,105,237, 24, 40, 34, 98,102,153,236,178, 61,245, 92,247,192,217,205,107,174,152, 83,192, 69,154,150,214,174, + 19, 87, 20,138,136, 76, 91,151, 47, 31,122,116,114,230,236,198,190,213,102, 97,190,193,129, 35,183, 67, 85,224, 91, 5, 8, 68, + 33, 72,144, 4, 77, 73,147,164,166, 49, 49, 37,125, 79, 69, 33, 4, 4, 80, 21,201, 16,161, 64,205,228,229,122, 96,248,203,251, + 63,240,193,165,197, 37,223, 36,255, 3,133, 66, 53, 41,128,164,233,179,159,253,157, 39,158,120, 98,247, 11,125,248,215, 62,146, + 45, 11, 69,140,126, 89,136, 64, 1, 81, 40, 68,160, 9,170, 10,104, 74, 73,129,148,146,106,106,154,230, 99, 31,251,200,204,133, +254,201, 63,253,103,210,235,182, 96,240, 16, 72,206, 52, 34,165,212, 52, 58,106,154,148, 84,147,130, 72,161, 79,163, 47,124,225, +243, 15,156, 57, 35, 34, 77, 59,157,250, 50, 32,178, 49, 49, 5,150, 22, 26, 17,153, 78,249,220,165,118,148,180, 25,165,185, 81, + 26,143, 71, 54,198,168, 17,205,132, 74,206, 72, 10,205,249,231,127,254, 23, 82, 74,191,241,235,159,196,225,235,127, 22, 18, 82, +129,223,155, 34, 1, 87, 95, 62,110, 18, 70,141,142, 71, 58, 55,110,230,198,163,249,185,102, 52, 74,163, 38, 37, 21,168,206,207, + 37, 64,147,170,170,166, 81,147,246,172,189, 90,196, 68,132, 34,160, 9, 68,200,197, 57,180,217, 38, 83,155,182, 54,109,243,180, +181,201,180,155,180,121, 58,237,178,229,229,197, 4,144,102,238,109, 72,154,177,161,100, 33,197,148, 32,161, 98,157,136,110, 78, +217,118,162, 9, 73, 53, 37,140, 82, 62,191, 78, 10, 22,230,211, 91,111, 91,107,219, 22,128, 27,159, 91,160,154,225,208,177,183, + 11, 85, 84, 40,136,111, 66, 17,164,164,238,135,167,157,169, 40, 1, 40, 32, 0, 84, 0, 85,252,204,155,247,251,150,194,183,245, +192,209, 59, 68, 0, 1,253,175,114, 33, 17, 21,154, 40, 32, 66, 64, 5, 20,133,170, 59, 54,104,114,129, 66, 21, 80,129, 54,102, + 57, 4, 45, 34,162,180,236,171,131, 24, 68,196, 64, 0, 36,125, 39, 50, 69, 85, 68,104,217,149,205, 76, 84, 5, 34, 13,105,190, +103, 2, 21,154, 64,104, 80,208,197, 47, 4, 21, 74, 17,117,199,168,194, 44,162, 16,165,152,248,135,152, 80, 41,255,223, 61,176, +235,179,123,247,238,189,236,178,189, 34, 50,153,108,157, 59,119,110, 99, 99,227,199,184,208,177,227,199,223,253,238,159, 3,194, + 49,249, 95,110,250,170,154, 82, 58,119,238,252,191,254,237,223,124,161, 11,125,236,227,159,176,108, 36,221,118,225,155,234,151, +211,120, 36,191,152,166,102,212,124,244, 35,191,182,203,133, 62,248,161, 15,139,135, 54,250, 46,193, 85,207,183, 27, 72, 80,164, + 20,110, 36,169, 47, 49,157,125,244,236,239,253,238,191, 29, 94, 72,187,174,107,187,182,235,186, 46,119, 93,238, 44,119,150,187, +156,115,238,114,206,150,173,179,220,249,191,119,109,132,156,182,107,175,186,234,170,223,252,173,223,222,126,161, 28, 95,254,102, +127,248, 79,221,250,250,116, 99,179,157, 78,115,219,229,156,105,153,157,229,156,173,107,219,118, 58,253, 87,159,233, 69,166,150, +179, 13, 30, 52,210, 72,179,156,243, 51,231, 39,147,105, 55,233,114,219,101,203,204,102, 38,198,204,156,187, 46, 91,151,187,174, +235, 62,243,153,223,138,152,124,242,228, 41, 79, 38, 38,173, 77,166, 25,128,130,164,252,240,233, 45, 51,210, 92,252,213,105, 70, + 88,162, 16,226,233, 7,111,190,249,230,111,252,197, 95, 52,102,246,223,255,247,115, 70, 10,220, 76, 64,145,213,165,116,245,229, +115, 77,146,174,105,178,145,116, 99,132, 80, 20, 98, 10,132, 57,139,116,221,254,125,251, 33, 72, 79,108,190,202, 72,248,174,139, +185,179, 60,176, 55,177,247, 92,194,216, 82, 33,195,151,165, 52,179,247,119,220,121,103, 90,222,255, 26,132,197, 81, 68, 0, 33, + 57, 63,214, 28, 34, 17,146,164,248,251,253,202, 73,165, 73, 26, 1,131, 34, 0,201,180,103,223,107, 36,174, 84,174, 71, 25, 53, +200, 20, 95, 20, 41,241,157,102, 38, 43,203,163,241, 72, 69, 6,239, 32, 69,208, 24, 51, 4, 16, 10, 33, 74, 35, 64,153,182, 89, + 51, 44, 33, 39,100, 99, 54,205,198,181,213,197,189, 43, 35,192,114, 22, 0, 74, 16,245,166,187,180,103,237,184,212,120,228, 73, + 27,160,138,114, 59,160,200,230,196,158,124, 46, 63,250,163,233,209,171, 22,194, 3, 70, 10,136,106,103,105,105,223, 49,146, 2, +169,139,242, 29, 50, 19, 33, 77,184,190,101,147, 73,152,225,131,103, 55,158, 62,223, 94,117,112,236,142,143, 68, 53,252,180,180, +247,168,167, 34,101, 85, 20,250, 39,209,132,211,214, 60,146,187,199,132, 96, 99, 98, 15, 60,178,185,178,167, 89, 90,212,184, 6, +124, 69,107, 71, 25, 11,173, 81, 91, 40,160,208, 50, 41,162,238,228,125,217,126, 77,224,177,167,166,103, 30,217, 56,119,177,187, +250,208, 28, 93, 99, 15, 94,119,167,192, 95,143,186, 48, 82,225, 55, 11,245, 24, 82,146, 93,133,170,136, 64, 84, 0, 81, 64, 84, + 84, 33,170, 20,163, 80,196, 92, 34,229, 22, 60, 59, 33, 93, 84,140, 77, 22, 26,105, 34,164,152,144, 98, 20, 33, 76, 32,108,132, + 20,122, 80, 51,191, 99,115,231, 72,128, 20,136,199, 8,191,201, 80, 62, 66, 64, 42, 61, 59,164,146, 34,101, 69,112, 5,246, 0, + 36, 48, 10,205,224, 27, 67,243, 85, 48, 86, 45, 48, 17,129, 9, 45,116, 29, 20,117,107, 54, 26,133, 66, 51, 19,138,185,174,131, +230, 31, 80,150, 81, 22, 31, 57, 7, 75, 6, 83,214,240,202,227,199,143,179,245,113,221,117, 71,111,188,241,198, 35, 71,143,174, +237,221,219, 63, 27,206, 84,224,201,115,252,165,231,206,157, 59,115,230,254,191,250,171,191,252,254,247,191,255,242, 44,104,121, +121,249,221,239,254,185,195,135,175, 48,179, 65, 49,200,222,195,196, 31,145, 62,174,247, 15,237,127, 82,133, 10,164, 25,141,254, +227, 23,191,248,173,111,125,243,165, 43, 7,222,249,206,119,222,120,227, 9, 51, 70, 97, 91, 77,106,118,201,240,220,177, 46,165, +252, 48,187, 36, 47, 56,250,101,149,133,170,170,118,185,251,119,191,247,187,143, 62,250,232,139, 44,232,253, 31,248,144,199,186, +157, 75,169,158,105,240,103,102, 53,210,151, 25,131,133, 72,191,148,193, 74, 5, 64, 74, 13,128,212,164,127,254, 27,191,190,181, +181,181,251,130,222,251,222,247,177,134, 21,238, 92,205,204,114,234,142,213, 31, 73,201, 38,238,217,160,240,196, 93,213,215, 84, + 50, 44,137,228,188, 60, 15, 85,109, 82,243,185,207,253,251, 7, 31,124, 96,123, 69,127,235,109,183,209,108, 88, 81,196, 67, 88, + 34,181,244,207,212,103,141, 27, 91,237,230, 36,183,157, 67, 47, 30,198, 5,245,190, 64, 33,132,130,192, 25,104, 70,186,111,165, +121,156,189,229,228,201, 59,239,124,251,131, 15, 60,112,254,252,249, 94, 4,191,244, 75,191,252,124,234,174, 2,122,149,172, 12, +215, 79, 0,184,180,217,110, 77,204,149, 36, 37, 77, 0, 18, 26,213,164,154, 26, 85,213,212, 36, 5,146, 71, 5,136, 2, 36, 85, + 19, 73, 40, 84,144,146, 23, 50, 33,174,241,104,252,209,143, 70, 62,138, 95,124,207,123,194,140, 32,143, 63, 57, 57,251,196,244, +252,165,174,235,216, 7, 74, 96,126,164,123, 87,154, 99, 87, 45,172,173,142,126,248,212, 86,155,153, 20, 80, 36, 69, 82,168,106, + 74,154,146, 54, 73, 83, 74, 77,210,212,120, 42, 13,255,120,244, 8,128, 0, 80, 21, 29, 42, 89, 36,203,233, 15,255,240, 15, 78, +159,190, 15,239,124,215, 63,254,214,125,151,138,186,178,151,143,203, 93, 5, 68, 9,191,184,124,127,179,188,224,133, 54, 18,160, + 10, 85, 52, 73, 83,210,164,104,154,148, 26,109,146, 54, 41,249, 51, 0, 82, 42, 25,191,132, 54,141,155, 84,205, 86,195, 91,168, + 11,250,171, 95,189, 39, 93,146, 35, 40, 38, 86,151, 18,209, 93, 60,197,136, 36,126,110,140,197,121, 53, 99,151,153, 59,118,102, +217,152, 77,114,166, 25,179,209,140,185, 51,163,228,128,243,152,205, 51,101,127,129, 37,148,252,142, 81, 81,114,144,210, 10,121, +205,181, 71,154,240, 61,144,178, 6,235,141, 59,220,153,175, 10,163,134, 91,147,172,136,236, 65,161, 73, 69,213,146,162, 73, 72, + 85, 78, 93,110, 84, 53,105,211,104,108,168,202,226,252,104,110,156, 4,204, 57, 23,255, 1,150, 77,171,133, 41,200, 70,104, 1, +181, 49,178, 33,170, 69, 10, 34,162, 70,150,140, 43,119,152,210, 0, 7,207,160,176, 4,209,228,182, 44, 77,210,164,101, 89,201, + 82,210,185,145,238, 93, 29, 47,205, 39, 85, 8,196,204, 4, 94,204,122,130, 95, 66,142,239,158,131,114,100, 83,178, 14, 23,146, + 1, 16, 66,188,168, 38, 8,136, 24, 41, 20,116,217, 19, 63, 0, 97, 98, 10,209, 76, 87,148,182, 99, 74,128,216,198,132,235,155, +188,246,202,133, 35, 87,204,139,192,204,235, 8, 20,223, 69, 80,188,224, 87, 81,211, 44, 46, 34, 17, 16, 10,226,224,241,187,224, +239,112, 16, 13,190,180,146,214,134,113,144,148,166,209,222, 82,194,217,137, 70,116,149, 73, 39,211, 41,161, 21, 43, 13,227,122, +195, 77, 43,251,247,142,252, 77,226,213,141,215, 45, 80,117, 93,175,126,211, 21,252,208,177,127, 24, 80,170, 95,133,116,253, 31, +232, 56, 4,164,136,214,146, 20, 21, 40, 35,136,105,166, 24, 68,189,254,169,193, 69, 3, 61,130,250,197,143, 95,189,112,227,145, + 37, 99, 93,211, 32,166,244,145, 71,113,240,216,157,116, 48,165,186, 35,178, 44, 46,254, 43, 6, 17, 98, 44, 82,147,108, 37,190, + 80,168,241, 58,129,246,181, 94,252, 0, 33, 74, 21, 0, 85,156,124,245,242,225, 3,115, 73,181, 42,120, 31, 92, 14, 30,189, 83, + 2,223,113, 69,175,117, 81,236, 32,197, 1, 22, 1, 40, 18, 90, 40,102,230,203,117,207,224,249, 59, 29,108,114,104, 90, 41, 5, + 87,243,116,159,177,101, 66, 45, 79, 67, 32, 73, 49,110,116,109,117,124,229,193,185,181,149, 17, 14, 28,185,131,110,128, 1,137, + 35, 62, 7,253, 26,203, 14, 98, 80,218,133,248, 74,124,161, 80,189,140, 10,208,169, 36,243,174,149, 17,100,189,226, 40,235,118, +128,132,244,127, 85,223, 31, 45, 6,101, 20,207,202, 76, 72, 72,148,120, 94, 46, 8, 35, 48, 70, 26,110, 20, 18, 52, 65,201,251, +107,167,192, 34,148,130, 36, 60,139, 55,175,137, 25,254,197,136,210, 84, 16, 15,200, 14, 0,196, 21,154,112,203,129,151,249,109, +151,130,223,229, 64,161,131, 4, 37,182, 24, 74,145, 72,129, 68,157, 67,250, 78, 16, 20, 19,243,212, 4,162, 22, 85,135, 66,196, +204,160, 40, 8,155,134, 81,251,158,144, 16,161, 74, 35, 14,203, 41, 40, 70, 81,152,245,134, 34,180,208,174,112,166,161,181,225, +249, 99,211,132, 14,229,105, 84,117, 40, 73, 72,241, 58,238,225,162, 56, 37,232, 57,132, 24, 1,136, 10,233, 86, 74,245, 50,205, + 72, 23, 90,236, 66,228, 61,190, 11,168,161,204,104, 20,199,108,232,226,245, 4,147,244, 93,144, 40, 52,125,115, 67,186,230, 40, +175, 21,199, 47, 34, 98,190,199, 34,131,141, 11, 17,239,146, 33,190,242,120,229,241,114, 87,174,245,209,140,154,197,133,197,241, +120, 60, 63,191, 48, 26,141,252,201,174,107,183,182, 38,147,201,214,250,250,122,206,249,111,125, 65,163,209,232,150, 91, 78, 94, +127,195, 13,215,188,234,154,212, 20, 76,144, 16, 13, 59, 43, 37, 15, 84,149,228, 67, 15, 61,116,223,247,254,250,219,223,254,246, +212, 27, 60, 47,227,130,126,250,103,222,121,226,196,137, 81, 51, 98, 69, 32,135,144,221,108,229, 88, 43,124, 17, 73, 41, 65, 49, +157, 78,239,253,206,119,254,244, 79,255,211,223,104, 65, 77,211,156, 56,113,226,174,187,126,154, 53,119, 29, 38,218,165,164, 31, + 86,248,179,149,253,108,105, 15,168,234,133, 11, 23, 62,251,111,126,103,125,125,253,199, 91,208,218,218,218, 93,119,221,117,197, + 21, 87, 57,102, 52,200,166, 7, 47, 26, 22,246,131,239,207,187, 38,207, 78, 69, 82,147,158,124,226,137, 47,124,254,243,207, 62, +251,236, 75, 90,208,123,223,251,222,133,133,165,226, 62,183, 87,248,125, 37,223, 23,209, 67, 41,149, 28,203, 11,103, 25, 2, 12, +195,205, 68, 74,233,204,253,103,126,255,247, 63,247,226,205,241,191,255,147, 63,101,217, 40,204,204,181,106, 46, 49,161, 0,125, +164,136, 88, 68,146,248, 37, 66,108, 20, 48, 37,126, 5, 56, 91,130, 11,226, 5, 34,178,111,223,190,183,191,227, 29, 95,255,243, +175,183, 47,168,242,233,245,175,127,131,131,219,178,163,186, 47,229,124, 21, 89,169,243,133,219,192,137,231, 13, 65,229,141, 86, + 52,225, 31,252,212, 91,154,209,104, 39,198,208, 47,232,117,175,127,253,236, 7, 15,190,200, 29,118,200,157, 63,198, 75, 77, 6, +146,173,225, 55, 74,193, 42, 90, 10,143, 92,123,228,250, 27,110,248,230, 55,190,241, 60, 11,122,221,235,226,205,213,178,234, 23, +158, 7,164,233,209, 53,118,153, 57, 23,217, 86, 64,169, 20, 94,158,107,197,101,226,111,138,112,117,101,245, 45,111,121,235,151, +191,252, 63,118, 46, 72,163, 39, 52,219, 27,218,214, 39, 50,198,207,185,127,210,186,156, 55,183,186,233, 52,119,217, 58,231, 54, + 88,124,209, 60,251,244, 86,144,191,139,150, 89,175,144, 45, 11,228, 95,124,234,211,187, 44,136,209,152,122,193,135, 13,218, 48, + 52, 10,219,206,214, 55,186,182,179, 46, 71,245,238,119, 68, 95,188,103, 70,129,189, 83,224,159,145,189,159, 29,181, 62,169,170, + 31,251,248, 39,182,111,217,109,183,222,182,187, 78,162,119,205,131,239, 16,145,182,181,245,205,174,234, 74,239,169, 36, 72, 23, + 24,120, 10,175, 88, 89,160, 43,148, 30,191, 95,125,126,110,254,200,117,215,221,251,157,239,244, 11, 58,117,234,214, 93,133, 82, + 47,226,168,123, 32,240, 68,206, 60,127,113,106, 21,194,175, 64,197, 16,125, 44, 69, 84,173,174, 74,182, 61, 72, 10,163,250,227, +218,222,181, 11, 23, 46, 60,254,248,227,117,203, 6,139, 40,216,219,214, 52,111,108,230,141,173,188, 53,205, 82,114, 86,135,242, +158,187, 48,157,180,214,101,118,217,114,203,174,179,174, 99, 54,118, 57, 7, 34,147,141, 38,217, 72, 19,154, 89,150,210,111, 11, +101,100,209, 18,203,153,102, 70,251, 71,239,122,215,226,226, 98, 68,176,210,159,146,173,169, 61,248,232,214,211,231,219,245,205, + 92, 34, 24, 68, 36,169, 46, 47,232,225, 3,115,199,174, 94,216,154,116,151, 54, 91, 0, 89, 37,169,154, 90, 42,247, 77,170, 16, +210, 72, 3,116,176, 70,212,148,222,198,143,226,206, 27, 74,240, 70, 61, 69, 96,162, 98,166, 34, 29,249,129, 15,126,232, 95,126, +250, 83, 34,146, 78,158, 58,181,185,101, 95,251,203, 11, 15,156,221, 60,119,169,109, 59,235, 75,119,208,107,221, 73,107,207,156, +207, 15, 61,186, 41, 66,213,222,141, 15,252,113,175, 26, 1, 90, 68,169, 89, 94, 84, 42,135,158, 0, 81, 52,207, 81,131,102, 52, +186,116,233,210,227,143, 63,150,166,163,163,247, 61,188,209,101,194,235,102, 68, 99, 76,122,176, 42, 42,154,185, 49, 86,151,213, +171, 69,233, 81,217,242,129,210, 55,244, 2, 30,100, 56,104,171,120, 60,153,146, 12, 56, 99, 97, 38, 14, 42,220,120,226,196, 61, + 95,254,114,106,246,188, 38,218,195, 33,217,114, 57, 12,234, 42, 8,132,123, 22,116,220,232,246,166,238,208,117, 22,189, 46,170, +139,178,142,120, 78,129,148, 48, 40,199,103,214, 68,227,202,234, 74, 90, 57,240, 26, 9,112,173,116, 76,163,137,141, 64,145, 28, +253, 4,247, 44, 36, 65,173,198, 74,109, 45,131, 44, 65,182, 55,118, 67, 70,101, 73,125,235, 23, 51,254,165,246, 8,174,190,250, + 85,105,121,255,245,126, 71, 5,113, 17,128,142,246,244,226, 20, 81,112, 97, 78, 75,152,236, 87, 35, 97,202, 14, 45, 49,234,122, + 25,134,199, 8, 42, 11, 99, 13, 40, 81,122, 52, 44,150, 30, 62, 3, 2, 73,123,246,191, 38, 10,244, 2,192,162,215,134,192, 99, + 0, 38,213,241, 56,170,217,232,110, 74,191,113,181, 8, 29,108, 89,169, 73, 73, 85, 89,156,119, 50, 16, 95,160,137,225,202,215, +148,221,118,102, 83,129, 17,104,131, 52,218, 28, 19,200,153, 68,144,121, 18, 73, 66, 9,243, 47,133, 81,163,103, 96,108, 72, 51, + 53, 35,147, 46, 47, 52, 75,139,141, 2,102,172,208, 23,134,105, 3, 5, 74,154,121,131,182,113, 50, 26, 74,120,119, 36,195, 66, +134,132,177,154, 77,206, 98, 48,117,176,144, 52, 83, 77,146, 40, 52, 97,114,252, 6,102,194, 6,164,176,225,252,184,185,108,101, + 52, 26,121, 3,216, 42, 40,196, 30, 62,170,229, 62,181,108, 71, 90,222,119, 60, 80, 5,103,102, 4,244, 90,244, 59, 16, 82, 81, +138, 38,225, 76,147, 26, 61,198, 61, 32, 53, 24,101,105, 33, 29,220, 55,183,178, 52,210,190, 61,240,188,237,175,254,173,128,136, + 52,225,155, 40,132,133,154,161,207, 87,171,232, 50,232, 52, 87, 15, 78, 84,144,166, 26,216,147, 38, 53, 19, 35, 55, 51, 46,110, +116, 63,124,186, 91, 91, 29,153,169, 67, 71,168, 61,201,112,115,142, 5,237, 88,147,115, 66,150,246,189, 26, 40,254,208, 1,215, +138,232, 73,129, 16, 5, 42, 65,163,172,142,163, 15,146,140, 6,247,197, 13,187,184, 97,150,165, 51, 62,252,248,100,110,132,213, +229,102,155,234,114,214,228, 41,197, 15, 23,111,144,150,246, 30, 43, 73, 94,241,136,225, 15, 3,188,174,153, 99,208,112, 66,242, + 24, 22, 75, 93,230,133, 13,107, 59,127, 62,118,245,137,103,219, 39,159,107,175, 60, 56,174,139,161,204, 42,115, 85,110,246, 78, + 53, 45,239, 59, 30,182, 77,214, 82, 48, 18, 33, 22, 56, 79, 10, 93,194,183,151,149,199, 33, 16,180,153,155, 91,174, 84, 14,115, +151,168, 3,108, 78,237,129, 71, 55,151, 22,210,234, 82, 34,135,124,176, 65,205, 89,158,243,159,210,242,218,113, 9,104, 31,225, +103, 2,241,166, 64, 80,129, 69,176,242,101,189,190,247,245,116,217,166, 93,112,158, 29,211, 46,184, 45, 66,140,192,143,158,158, +254,224,169,201,225,125,227,166,209,153, 96, 33,156,205, 3, 5, 34,105,121,239,177,242,179,183, 92, 52, 36, 16, 30,189,196,192, + 88, 39,138, 91, 6, 69,114,199, 46,135,143, 6, 5,234,203, 41, 6,168,129,136, 82,209,182,242,208,227,155,207,158,239,174,216, + 63, 46,122, 16, 9, 90,229,192,120, 31, 37, 45,174, 29,173,245, 64,233, 66, 80,226,202,126,223,101,255, 28,204,142,142,140,152, + 49, 59,173, 58, 0,145, 2,173,178,230,175,145, 60,132,179, 23,217,220,202,103,206,110, 94, 88,207,151,173, 52,227, 70,139,209, +245, 70, 15, 32, 45,175, 29, 11, 58, 78,224,172, 82,228,222, 35,173,172, 44, 76,169,248,188,100,227, 0,107, 47, 66,101,237,181, + 97, 38, 69,138, 76, 66, 32,114,105,203, 30,250,193,214, 35, 63,218, 50,147,149,165, 52,106,180, 87,233, 97,107,161,160,181, 85, + 11,100,128,216,135,202, 74,208,126,196,156,142, 37, 34, 84,150, 60, 78,252,167,248, 13,244,134,143, 95, 4, 80,138, 64,251, 69, + 71,131, 78, 27,197,194,124,186,234,224,252,193,181,241,158,165, 6, 7,142,222, 81, 57, 81,145,147,123,191,134,165, 39,211,155, +168, 72,165, 53, 5,133, 22,197,179,160,118, 97,164,231, 45,213,190,151,247, 5,161,197, 30,130,205,234,111,246, 54, 72,109, 80, +213,252,190, 56,236,248,192, 48,247,168,177,234, 78,155, 72, 22,113,104,219,127,157, 9,240,132, 63,231, 77, 10, 43,153, 35, 41, + 2,231, 22, 5, 91, 43,146,151,240,190, 66,130, 16,138, 80, 49, 68,176, 93, 24, 65,208,179,178,186,120,166,172, 44, 58, 10, 2, +111, 91,176, 39, 14, 4, 14, 82,156,103,100, 72,126, 97, 99,216,158, 12,111, 59,140,201, 85,145, 81, 6, 73,244, 95,156, 19, 85, +224,123,212, 14, 12, 34, 39, 25, 66,247,197,141,153,183,103,100,104, 48,238,229,139,172, 10,254,229,138,205,190,100,172, 9, 57, + 2,144,240,196, 78,163, 9,236,172,177,200,188,188,181, 26, 20, 73,113, 10, 87,108, 94,168, 55, 35, 73,243,106,148,181, 91, 32, +194,232,188,148, 44,170,190,195,162,123, 67, 68, 55,163,255,103,167,151,185,144,148,168,121,129, 91, 46,197,170, 56, 41, 98,254, +193,189,225,211, 34,147, 6,197,172,212,173,125, 89,132,210, 49, 21,235,201, 31,194,210, 40, 5,165,250, 50,175,133,221, 75,149, +136,229, 9,132,153,235,111,196, 77,138,149, 73,149,112,214, 38,198,248,146,162,169,241, 97, 21,147,132, 4, 44,229,111, 46,254, +158,180,112, 64, 22,120, 19,136, 94,103,195,105, 71,217, 4,211, 90,176, 88, 4, 69,127,151,149,254,142,245,153, 1,106,153, 22, + 77,186, 40,239,195,213, 88, 8,161,202,200, 5,236,214, 31,254,155,102,181, 42, 96,209,123,239, 33, 69,212,212,200, 9, 44,172, +206, 4,168,243, 31, 96,124, 42, 11,117,113,128, 18,151, 68,165, 22,176, 8, 87, 16,194, 29, 48, 38, 36, 82,166,194,140, 23, 41, +253,189, 72,100, 16,221, 91, 8, 84,130, 31,233, 59, 45, 16,179, 82, 56,122, 1, 30, 54,103,176,194,182,172, 69, 71, 49,183, 96, + 93, 74,161, 39, 19, 65,185,116, 7, 83,118,184, 84, 62,197,168,132,219, 74,180, 87, 26,102,175, 60, 94,121,188,242,248,187,210, +111,125,161, 75, 0,203,123,246,172,236,217,179,180,180,188,122,217,234,218,222,181,213,203, 46, 91, 93, 89, 89, 92, 90, 94, 90, + 90, 24,143,231, 60, 11,148, 25,192, 76,106,214,217,117,221,230,230,198,133,139, 23, 46, 94,188,244,228,147, 79, 92,186,120,233, +252,133,243, 23, 47, 92, 56,119,238,220,197,139, 23,255,238, 9,104,113,113,241,216,241, 87, 95,121,229,149,135, 14, 30, 92, 93, +189,108,113,105,177,105,154, 29,120,222, 0,168,219,241, 33,219,168,180, 3,122,111,143, 88,213, 71,215,117, 27,235, 27,231, 47, +156,127,252,241,199,206,220,127,255, 3,103,206,116, 47, 83,231,251,101, 19,208,193,131, 7, 79,158, 58,117,211, 77, 63, 49, 55, + 55,142, 25,131,151, 16,252, 80,193, 3,200, 0,151,138, 95, 43,199, 13, 81,168, 23,246,222, 64, 82, 69, 94, 40,125,211,200,185, +157,165,122,246,236, 35, 95,185,231,158,211,167,239,179,151,113, 42,245,165, 8,104,121,121,249,208,161, 67, 55,223,252, 19,199, +142, 29,215, 38, 41,148,181, 49, 60,192,185,182,201, 8,187, 42, 77, 63,107, 50, 3, 95, 99,182,225,254,188,223,103,167,230, 80, +201,133,131, 22,131,119,225,159,123,238,185, 63,251,159, 95, 61,125,250,244, 51,207, 60,243,183, 34,160,131, 7, 15,158, 56,113, +226,200,145, 35, 7, 15, 29,202,217, 80,144,230,153, 22,146,188,144,218, 96,134,154, 62, 3,205,207,160,189, 51, 77, 53,217,133, + 72,191,131, 12,240, 98, 79,162,112, 21, 85,147,138,224,236, 35, 15,127,235,155,223,188,247,187,247,182,109,251,242, 8,232,238, +187,239,158, 76,219,153,142,238, 16, 37,125, 17,201,204, 82, 30,134,119,187,237,201, 93, 94,182,141,182,241, 2,170,180,141,186, + 48, 52,195,106,125,195,201, 74, 0,152,108, 77,190,242,149,123,238,185,231,203,127, 83, 1,125,240, 67, 31, 30,212,217,124,126, +125,217,225,121,134, 52,153, 89,185, 12,155,169, 59, 84,105,214, 8,119,240, 90,250, 17,141,109, 76,142, 23, 87,177,242,199,199, + 38,162,231,152,218,182,253,163, 63,250,131,211,167, 79,255,191,205, 63, 5,157,161,140, 52,176,178,247,100,251,215, 14,145,113, +155,208,134, 74,183,141, 98, 49,108,248, 14,245,116,160,161, 67,234,253, 96,218,165,194,254, 28, 60, 63,216,198, 97,155,169,212, +240, 78,167,177,248, 85, 85,111,185,229,228, 29,119,220,121,248,240, 21,143, 61,246,131,157,103, 61,188, 8,159,140,102,220,113, +143,187,247, 31,118,181, 44,238,248,109,248, 36,119,125,182, 52, 74, 11, 0, 99,180, 40,234, 75,224,211, 25,107, 42, 12,128,120, +178, 64,113,206, 24, 45, 35, 63,222, 98, 10, 4, 51, 51, 71,207,209, 59, 55,154,145,111,184,241,134, 19, 55,221,120,225,194,165, + 63,254,226,127,120,224,129, 51, 47, 85,131,110,123,237,235, 88, 6, 80, 75, 67,119,200,182,216,241, 68, 45,172,235,110,178,239, + 36,114,216, 10,158,189, 70,255,100,129,252,114,102,155,205,231,148,131,155, 49,104,251, 13,251,129, 40,205, 11, 72,143, 93,248, +173, 71, 55,211,138,120, 29, 38,148, 94,179,134, 91, 76,227,120, 52, 58,117,234,214,183,190,237,246,179,103, 31,121, 41, 60,175, +244,218,219, 94, 59, 52,142, 98, 55, 3,210,208,144,255,179, 27, 75,103,183,166,239,172, 42,114, 70, 63,115,102,219,218,180,181, + 54, 91,118,142,239, 80, 42,129,127, 58,141, 25,125,203,125, 24, 16, 67, 18, 61, 94, 92,219, 57, 69, 34,168, 19,237,113, 39,168, +140, 58,111,240,202,173,183,222,250,198, 55,190,233,201, 39,159,124,250,233,167, 95, 80,131,110,123,237,110, 78,152,187,231,196, +179,175,236,221,237, 0,228, 28, 6,244, 58,155,236,144,107,219,217,214, 52,111,181, 57,119, 78,214,137, 27,178,194, 54,151,254, +230, 2,179,196,204, 39, 15,250,107,181,155, 83, 6, 81, 3,227, 66, 52, 73, 7,100,128, 2,163,206,222,149,101, 27,141, 70, 39, + 79,158,186,241,196,137,239, 63,248,224,243,249,166,116,235,109,183,245,136,116,255,181,171, 35,226,160,175, 93, 9, 96, 47,158, +143,147,108, 59,110,108,182,155, 91,214,117,133, 19,206,225,247,248,161,206,199, 81, 6,179,114,148, 65, 91, 20,149, 93, 82,206, +189,232,201,226,168,147, 85, 67, 60,122,232, 2,103, 56,125,142,216,218,158, 61, 43,127,239,205,111, 94, 94,218,115,255,253,167, +119, 17,208,169, 83,183,190, 56,195,139, 5,110, 43,172,140,104,228, 13,140,178,186, 25, 14,184, 41,126,223,155,147,124,113,189, +155,180, 57, 91,249, 87, 43,228,249, 1,247,221,141,194, 10, 18, 43, 51,163,247,101,110,170, 55, 87, 22,198, 31,139, 61, 57,162, + 57, 8,127,197, 15,233, 48, 60,202,160, 39,203,158,120,127,229,149, 87,190,237,109,183,127,239,123,127,125,233,210,165, 25,211, +249,197,247,188,103, 23,107,138, 33, 2, 78,166,220,156,228,245,205,188,190,105, 91, 83,107, 91,118,214, 91, 89, 2,154,145, 46, +140,117,113, 62, 45,204,233,194,188, 46,205,167,241, 40, 24, 29, 34,210,117,188,180,217,109,108, 89,229,178,160,212, 10,128,168, +162,140, 4, 70,193,159,226,151, 50,241,164,253,148,167, 51,105,181,175, 54, 6, 9, 99,207,137, 99, 41,246,250,204,146,144, 84, + 35,221,110, 9, 84,157,139,242,143,249,250,159,127,253,191,254,151,255,220,135,249,193, 12, 34, 85,100,125,203, 30,123,106,242, +196,179,237,230,150,181,153,189,207,155, 41,165, 42, 33, 4, 59, 34,184, 52,138,241, 88,247, 44,166, 67,107,163,185, 17, 38, 93, +204,168, 20, 1, 65,235,156,157, 49,126, 53,168, 2, 6, 83, 81, 51, 40,212, 68, 85,148,102,208, 68,129,154,247, 30, 76, 77, 1, +173, 45, 68, 84,154, 93,136,170,176,115,203,234, 40,128,154,198,196, 75,105, 93, 68, 6,224,237,159, 92,168,195, 38, 66,229,155, +222,248,166, 3,251, 15,252,201,159,252,177,131, 45,233,150, 91, 78, 78,167,118,246,137,173,239,222,191,254,189,255,179,254,240, +227, 91,207,156,111,167,173,183, 58,234, 65, 25, 69,233,163, 93, 95,187, 13, 46, 44,162,223, 45, 49, 97,151,185, 53,181, 54, 91, + 28, 88, 96,245, 0, 11,103,251, 74,182,146, 59,136,143,179,212, 3, 51,104,195,200,201,158,196, 59,120, 50, 78,196,232, 35,104, + 92,103, 72,106,238,109, 92, 53,232,119,125,226, 25,109, 69, 12,179,205,234,254,205,108,255,254,253, 55,221,116,211,125,247,221, +183,181,181,149,158,154, 30,121,240,209,205,167,207,183,109,222, 70, 3,230,108, 49,197, 24, 82,234,153,116,229, 68,147, 50,234, + 22, 59, 70,136,200,226, 60,150, 23, 85, 81, 28,176,183, 50,135,100,213, 56,255, 67, 42,163,184,182,239,130, 53, 87,250, 40,149, + 46, 57,224,221, 85,254,157,231,185, 61,169,154,236,251,128, 34,226,214,217, 39,108,179,209,122, 27,123,125,192, 78,226,194,194, +194,235,223,240,134,239,222,123, 47,174,184,225,103,119,175,204,135, 87,155, 45,175,250,180, 13,101, 10, 23,101,160, 17, 34, 34, +163,132,213,229, 52, 55,134,150,145,191,234, 4,220, 13,233,224, 87, 45,179,195,241,171, 34,252,142, 34, 85,215,163,170, 42, 49, +100,128, 24, 58,173, 87,219, 86,206,186,173, 41,124,206,182, 7, 51,103,144,186,250,194, 25, 92, 96,224,158, 0, 77,202,204, 70, +184, 19,230,226,246,250,179,167,117,199, 38, 87,118, 73, 97, 78,248, 40,155,145,128,162, 73, 2, 97,206, 78,208, 15,127,131, 50, + 95, 8, 8, 96,131, 81, 6,170,185, 23, 16,247,201, 9, 4, 68, 85, 77, 9, 72, 82,133,250, 88,175, 40,232,210, 25,188,189,208, + 73,253,248, 64, 0,144,148, 52, 37,159,206,156, 77, 90, 89,137,152,195, 98, 71,250, 17,199,202, 67, 34,141,162, 73, 27,235,171, +198,210,120,151,126, 50,173, 38, 59, 65,160, 0,203,147,232,187,239, 67,174, 24,169, 34,170,240,195, 30, 16,227,188, 61, 47, 74, +181,232, 81,120,232, 18,206, 92,173, 8,100,203,126,152,131,153,170, 40, 96,113,176,152, 32,169,250, 0,116,141,128,113,116,134, + 0, 64, 22, 38, 29, 53, 50, 30,105,210,186, 95,236,241,185,114, 92,158,148,126, 51, 7, 4,202,138,115,246,195,218, 98,146,165, +129,183, 67,119,240,191, 56,147, 4,150, 98,167, 14,223,247, 32,135, 21,137,199,120,163,167,107,217,226, 51, 81,135, 66,133,234, + 4, 3,176,140, 49, 51,199, 84,189,168, 87, 22, 64, 82,152,133,103, 45, 49,190,140, 95,219,204, 92,183, 42,212, 66, 88,227, 70, +199,227, 52,110, 84, 19, 32, 50,156,232, 24, 12, 47,239,172,179,135,117, 12, 75,170, 21, 52, 34, 1, 76,165, 25, 12,163,244,249, + 67,229,112,212,212,223, 48, 36,136, 20, 26, 27,250, 65, 8, 47, 27,253, 67,178,149,232, 91, 6,108,193, 58, 55, 43,101,188,219, +117,129, 57, 76, 44,244, 40, 27, 21, 8, 1,121,188,135, 66, 69,251,233, 29,113,175,212, 52, 24,143,211,252, 92,154, 27,197,193, + 10,197, 7,148, 92,104, 71, 10,178,131, 5,184, 67, 45, 42,104, 46, 2, 82, 5,141, 73,207,220, 30,158, 50, 80,147,140, 18,208, + 33, 85,100,144,170,187,133,185, 24,116,133, 96,219, 68,112,169, 76, 95, 63,251,174,146, 13,233, 51, 10,213, 58,204,157,142,133, +127, 76, 10,243, 23,184, 92,224, 34, 67, 82,104,131,241, 40, 45, 46, 52, 11,115,169,105, 92, 44, 17, 25, 81, 82,182,186,105,165, +176,173, 7,145, 84,203,154,253, 83,105,100,197, 19,177, 76, 94,211,114,131,210, 20, 96, 33, 45,245,202, 82,102,218,221,198,192, + 26,179,234, 55,147,194,102,100,145, 60, 69,204, 25,113,197,147, 69, 34, 87,168,124,133, 91, 75, 56,211, 23,225, 98,172,120, 73, + 11,159, 77,104,148,235,109, 38, 5, 7,247,206, 29,218, 55, 55, 55, 6,203, 38, 90,112,171,170,239,221, 85, 55,250,144,190, 43, +126, 85, 57, 11,181,226, 7,251,131,178,112,249,171,239,218, 94,111,178,175,193,217,179,250,235,223,196,204,203, 48,168,180,133, +148,164,210,164, 20, 28,155, 30,247, 26, 56,203,218,146,168, 3, 49,129,135, 73,153,245, 15,102, 77,219,201,164,181, 46,163,226, + 20,154,176,111,101,116,252, 85,139,123, 87,154,221,128, 94,236,232,170,108,111, 44,245, 28,196, 29, 51,149, 69,225, 7, 21, 73, + 74, 77,161,128, 86,231, 52, 4, 21, 10, 25, 45, 48, 4, 11, 3, 41,167, 71, 48, 78,163, 43,250, 83, 90, 94,133, 46, 37,128, 9, + 0,115,102, 95,207,234, 15,102,153,122,205, 32, 16,228, 56, 11, 67,218,204,206,232, 69,159,243, 37, 81,142,104, 0, 96,102, 79, +157,155, 62,249, 92,155,146, 28,222, 63,190,254,154,197,249,185, 52,136, 43,218, 35,108,206,141,162,104, 9,246, 78, 11, 3,234, + 25, 18, 81,187, 89,156, 59, 65,237,207, 73, 40,231, 76,229,236,116,224,237,179,144, 69,100,181, 22,100, 33,156, 73,245, 61, 12, +151,132,254, 40,136, 97, 74, 61,152,175,171,168,134,244,192,114,120,178, 58, 20, 74, 74,215,113,107, 98,155, 83,155,182,204, 17, + 97,226, 38,200,254,140,152,160,105, 25, 47,172,103,167,132,102,227,194, 88, 71,105, 56,128, 87,170,121,108,195,235,156, 44, 84, + 15, 44,232,117,115, 48,250, 48, 59,162,122,232,248, 59, 68,234,237, 87,170, 53, 49, 76,154, 81,156,244,246,108, 27, 65, 51,236, + 17, 51, 68,130, 63,160, 28,207,168,187,176,156, 72,199,114,166, 34,204,216,229,194,234, 35,182,125,116, 25,240,168,113,106,166, +251, 86, 9, 80,227, 49, 14,174,205, 93,115,249,220,190,213, 81,129, 19, 74,106,204,218, 91, 26,150,243, 59,218,224,187,156, 55, + 5, 28, 58,250,142, 30, 47,192, 12,223,156,210, 11, 25,168,104, 66,141,131, 50,204,147,102,174,224,131,182,229, 4,158, 97,167, +116,208, 44,162, 0, 52,233,172,247,139,125, 88, 41,211, 93, 82,204, 75, 56, 64, 54,128,126,146, 32,106,141, 18,165,133, 73,177, +103,169,185,246,240,252, 21, 7,130, 49, 62,184,116,239,103,130,201, 60, 91,167, 96,231,156,247,129, 99,111,175,238,191,128,120, +197,127,246,100,255,161,188,106,252,143, 91, 17,204,180, 47, 42,255, 23, 40,131, 85,253,171,122,167,111, 66,230,242, 89, 53, 94, + 86, 52,130,210, 31,249, 66,214,163,169, 80, 45,111,112, 96,113,137, 29, 40,132,124,148,128, 1, 85, 57,176,119,116,228,138,133, +181,149,166, 73,129,252,176,186,180,193,150,148,230,219,236,144,183,106, 19,140,211,202,119, 68, 95,115, 85, 98,120, 89,135,213, + 76,146, 53,215,134, 13,202,155,216,133, 58, 95, 91,246,216,130, 61, 41, 0,196, 1,144, 64, 66,203, 73, 47,145, 73,244, 3, 62, +133, 9,237,185, 55, 10,234, 88, 69, 4, 1,253,163,203,140,137, 51, 24, 45,198, 79,130,200,106,242,212,179,237,147,207,182, 70, +105,146,238,221,211,236,191,108,180,119,165, 89, 93,110,230,199,169,240,231,135, 88,127, 33,125,250,109,152, 53, 37,129, 41, 59, + 28,159, 51,232, 90,213,177,187, 50, 35, 35,232, 61,184, 5,107,180,202,104, 0, 85, 5, 7, 90,226,240, 28, 79,178,140,125,209, + 82, 56,214,131, 27, 15,224,167, 31,164, 99,156, 32, 90, 14,245,169, 3, 35, 38,253, 57,151,209,252, 41, 67, 20, 28, 22,145,126, +182, 85, 2,104,124,230, 66,251,204,249,232,217,167,132,249,113, 90,152,211,213,229,102,101,185, 89, 93,106,150, 23,211,104,228, +181, 74,239, 60,154,190, 97, 87,206,168, 47,252,255, 50, 68, 55, 48,113,231,214, 22,118,240, 96,230,172, 12, 47,132,252,250,233, +240, 8,175,206,160, 21, 49,244,106, 22, 3, 79,113, 65,115, 77,213,184,234, 41, 0, 0, 3,116, 73, 68, 65, 84,163, 22, 19,129, +184, 58,160, 15, 71,102,131,161, 97, 26,225,149, 96, 47, 14, 63, 20, 39, 34, 68, 76,251,163,223, 68,131, 21,220, 87,196,178,108, +108,118,235, 91,120,230, 66, 23,130, 47, 38, 6,149, 20,112,129, 52, 70, 27,120, 94,148,122,196,162,112, 10,149,183,216,178,234, +120,131,150, 61,200, 21,201,129, 37,134, 99, 48,195,204,248, 81, 57,240,183,208,195,251,249,148,240, 43, 6,243,212,107,118, 37, +136,115,104,225,125,216, 50, 92, 49,104, 86,246, 8, 15, 81,206, 14, 2, 88, 63,187,116,127, 96,126, 4, 43, 64,175,112,216, 27, +123, 40,176,151,241,116,177,162,169, 16, 16,139,169,148,128, 85, 15,164,171,187,238,176, 93,129,129,164, 76,238,115, 48,181,143, +225, 28, 24,177,163, 67, 81, 57, 84,140,217,129,114,193, 80, 77, 63,226, 1,131,115,137, 37,220,205,204, 62,248,115, 54, 28,184, +245,225,198, 58, 88,134, 24,107,240,255, 19, 64, 63,104,224,110,194,232,199,255, 17, 44,183,234,214, 10, 13, 27,136,193, 44, 54, +253,238, 21, 41, 59, 27,188, 88, 65,109, 20, 80,172, 70,196, 2, 18, 15,143,211,171,219, 59,211,106,220,222,100, 44, 19,238,172, +242, 43, 1,161,204, 0,120,201, 71,120,101, 41, 82, 73,230,101,167,157,223,142, 62,169, 67, 15,223, 73,204,128,214,121, 46,235, + 7,169, 81, 64,208,122,236, 48,122, 25,149, 32, 72, 14,103,247, 72,109, 88, 39, 32,251,140,185,244, 7, 34,122,150,132,180, 74, +138, 21, 90, 43,254,165, 66, 12,216,193,168, 26,180,149,193, 25,241, 69, 0,173,206,190,198,172,176, 59,131, 15, 56,132, 2,148, +244,192, 10,246, 85, 7,226,172, 2, 85,172, 29, 39,169,195,105, 84,212, 89,192,162,154,240,255,133, 0,251,137,130, 72,142, 93, +214,245, 3, 96, 13,251,184, 94,133,135, 26,206,124,157, 22,105,135,149, 34,167,151,166,212, 67, 25,103, 12,109,166,217,223,207, +246, 85,125,243,139, 14, 32,219,210,180,137,153,157, 26,201,165,250, 64, 45, 99, 58,125,226, 82, 42,116, 8, 2,138,194, 96, 70, +175, 60, 3,139,161, 64, 41, 35,204, 37, 89,170,147, 8, 81,184,201, 64,203,203,148,124, 19, 97, 18,131,138,165, 32,180, 37, 52, +133,123,160,247,166,138, 49, 85,103, 37,195, 49,162, 74, 46, 24,102,217,245, 80,203,222, 93, 21,141,159,241, 12, 14,134,232,240, + 84,153, 62,235, 48, 97,159,232, 87, 85,170,120, 21,100, 80,118,163, 76,241,244,177, 33,148,203,243, 79,159, 92, 43,165,112, 37, + 75,244, 67,149,172, 9, 96, 83,231,208, 66,129, 75, 49, 36, 5, 84,238, 51,150, 58, 64,103, 81,194,135,150,149, 36,126, 87,250, +148, 84,119, 53,115,202, 1, 57, 60,156,188, 4,109, 31,157,114,205,178,154,195,200,224, 38, 2,183,146,130,118, 85, 91,146, 58, + 18, 42,125,109, 88, 71, 48, 67,109,202, 91, 81,252, 17,163,153, 87,203,154,210,201,175, 55,212, 48,172, 93,202,152, 58,130, 72, + 83, 75,114,151, 20, 42,131,192,234, 33, 80, 98,245, 0, 18, 86,135, 58, 3, 55,201,182,191,217,207,213, 32, 12, 99, 80,205, 50, +132, 35,177,154, 26, 92,138,241, 91, 5,193, 77,252,127, 19, 82,231,159, 4,136,193,119, 72,127,175, 69,120, 97, 76,225,206,165, + 15, 87, 67, 59,235, 67, 73,196, 53, 66,208,184, 44,122, 58, 69, 28,102, 58, 60, 39,176,248, 50,179,254,184,132, 25, 73,197, 61, +187, 5,197,240, 19,118,161,206,148, 34,168,247, 95,165,186,234, 39, 26, 7, 67,200,220,230,152,234, 73,247,126,195, 53, 17,148, +190,198, 55, 17,141,113,193,194,174,130, 40,123, 97,133,140,226,255,129,210, 39, 45,226,179,200,210,227,176, 33,227, 70,122, 47, + 93, 78,237,232, 19,247, 33, 83, 62,166,125,195,113, 64, 6,163,239,213,163,247, 32,255,208,212,172, 66,144,152, 37,204,128,125, +178, 80,245, 14,149,244,132,254,176,164, 34,247,254, 32,202,122, 40,126,137,136,213, 54, 88, 90, 60,213,253, 84,111, 84,171,221, + 8,130,195,151, 13,199, 97,217,175,242,255, 2,210,193, 8,215, 78, 23,231,219, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/startup.blend.c b/source/blender/editors/datafiles/startup.blend.c index 6685e279549..4b743921153 100644 --- a/source/blender/editors/datafiles/startup.blend.c +++ b/source/blender/editors/datafiles/startup.blend.c @@ -1,1684 +1,1694 @@ /* DataToC output of file <startup_blend> */ -int datatoc_startup_blend_size= 308360; +int datatoc_startup_blend_size= 310044; char datatoc_startup_blend[]= { - 66, 76, 69, 78, 68, 69, 82, 95, -118, 50, 53, 50, 82, 69, 78, 68, 32, 0, 0, 0,156,231,146, 2, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, - 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 76, 79, 66, 16, 1, 0, 0, -188,230,146, 2,201, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 53, 5, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1,216, 91, 9, 3, - 48, 0, 11, 3, 0, 16, 0, 0,128, 32, 4, 0, 67, 58, 92, 68,111, 99,117,109,101,110,116,115, 32, 97,110,100, 32, 83,101,116, -116,105,110,103,115, 92, 80,104,111,101,110,105,120, 92, 65,112,112,108,105, 99, 97,116,105,111,110, 32, 68, 97,116, 97, 92, 66, -108,101,110,100,101,114, 32, 70,111,117,110,100, 97,116,105,111,110, 92, 66,108,101,110,100,101,114, 92, 50, 46, 53, 50, 92, 99, -111,110,102,105,103, 92,115,116, 97,114,116,117,112, 46, 98,108,101,110,100, 0,204,204,204,204,204,204,204,204,204,204,204,204, + 66, 76, 69, 78, 68, 69, 82, 95,118, 50, 53, 50, 82, 69, 78, 68, 32, 0, 0, 0,156,231,148, 2, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 71, 76, 79, 66, 16, 1, 0, 0,188,230,148, 2,201, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 53, 5, 0, 0, 0, +250, 0, 0, 0, 1, 0, 0, 1,232, 89, 11, 3, 72,254, 12, 3, 0, 16, 0, 0,128, 32, 4, 0, 67, 58, 92, 68,111, 99,117,109, +101,110,116,115, 32, 97,110,100, 32, 83,101,116,116,105,110,103,115, 92, 80,104,111,101,110,105,120, 92, 65,112,112,108,105, 99, + 97,116,105,111,110, 32, 68, 97,116, 97, 92, 66,108,101,110,100,101,114, 32, 70,111,117,110,100, 97,116,105,111,110, 92, 66,108, +101,110,100,101,114, 92, 50, 46, 53, 50, 92, 99,111,110,102,105,103, 92,115,116, 97,114,116,117,112, 46, 98,108,101,110,100, 0, 204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, 204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, 204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, 87, 77, 0, 0, -168, 0, 0, 0,120,178, 8, 3,111, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 87, 77, 87,105,110, 77, 97,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,136,179, 8, 3,136,179, 8, 3,136,179, 8, 3,136,179, 8, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,178, 88, 3,176,178, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 24, 71, 3, 8, 24, 71, 3, 8, 24, 71, 3, 8, 25, 71, 3, 8, 25, 71, 3, 8, 25, 71, 3, 68, 65, 84, 65,148, 0, 0, 0, -136,179, 8, 3,112, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 25, 71, 3, 1, 0, 0, 0, 0, 0, 0, 0, -216, 91, 9, 3, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,136, 6,202, 3, 0, 0, 0, 0, 1, 0,238, 3, 0, 0, 1, 0, 0, 0, 0, 0, - 8, 28, 71, 3,232,131, 7, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,248,253, 88, 3, 8,193, 89, 3, 8,193, 89, 3, - 72,128, 7, 3,192,129, 7, 3, 56,131, 7, 3, 56,131, 7, 3,232,131, 7, 3, 64, 72, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 78, 0, 0,140, 0, 0, 0,128,180, 8, 3,195, 0, 0, 0, 1, 0, 0, 0,192, 3, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112,181, 8, 3,104,189, 8, 3,224,189, 8, 3,224,203, 8, 3, 96,204, 8, 3,144,250, 8, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, +204,204,204,204,204,204,204,204, 87, 77, 0, 0,168, 0, 0, 0,144,176, 10, 3,110, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 87,105,110, 77, 97,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,177, 10, 3,160,177, 10, 3,160,177, 10, 3,160,177, 10, 3, + 3, 0, 0, 0, 0, 0, 0, 0, 80, 88,104, 3, 80,196,122, 3, 0, 0, 0, 0, 0, 0, 0, 0,120,253,104, 3, 32,169, 10, 3, + 16, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 19,245, 2, +232,116,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 56, 20, 73, 3, 56, 20, 73, 3, 56, 20, 73, 3, 56, 21, 73, 3, 56, 21, 73, 3, + 56, 21, 73, 3, 68, 65, 84, 65,148, 0, 0, 0,160,177, 10, 3,111, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208, 21, 73, 3, 1, 0, 0, 0, 0, 0, 0, 0,232, 89, 11, 3, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,136, 6,202, 3, 0, 0, 0, 0, + 1, 0,238, 3, 0, 0, 1, 0, 0, 0, 0, 0,224, 23, 73, 3,192,129, 9, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, +104,167, 10, 3, 0, 88,122, 3,160,195,122, 3, 88, 25, 73, 3,208, 26, 73, 3, 16,129, 9, 3, 16,129, 9, 3,192,129, 9, 3, +120, 71, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,152,178, 10, 3,195, 0, 0, 0, 1, 0, 0, 0, +216, 1, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,179, 10, 3,128,187, 10, 3,248,187, 10, 3, +248,201, 10, 3,120,202, 10, 3,168,248, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,112,181, 8, 3,196, 0, 0, 0, 1, 0, 0, 0,232,181, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232,181, 8, 3,196, 0, 0, 0, 1, 0, 0, 0, 96,182, 8, 3, -112,181, 8, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96,182, 8, 3,196, 0, 0, 0, - 1, 0, 0, 0,216,182, 8, 3,232,181, 8, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -216,182, 8, 3,196, 0, 0, 0, 1, 0, 0, 0, 80,183, 8, 3, 96,182, 8, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 80,183, 8, 3,196, 0, 0, 0, 1, 0, 0, 0,200,183, 8, 3,216,182, 8, 3, 0, 0, 0, 0, - 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200,183, 8, 3,196, 0, 0, 0, 1, 0, 0, 0, 64,184, 8, 3, - 80,183, 8, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64,184, 8, 3,196, 0, 0, 0, - 1, 0, 0, 0,184,184, 8, 3,200,183, 8, 3, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -184,184, 8, 3,196, 0, 0, 0, 1, 0, 0, 0, 48,185, 8, 3, 64,184, 8, 3, 0, 0, 0, 0, 32, 4,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 48,185, 8, 3,196, 0, 0, 0, 1, 0, 0, 0,168,185, 8, 3,184,184, 8, 3, 0, 0, 0, 0, - 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,185, 8, 3,196, 0, 0, 0, 1, 0, 0, 0, 32,186, 8, 3, - 48,185, 8, 3, 0, 0, 0, 0,254, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32,186, 8, 3,196, 0, 0, 0, - 1, 0, 0, 0,152,186, 8, 3,168,185, 8, 3, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -152,186, 8, 3,196, 0, 0, 0, 1, 0, 0, 0, 16,187, 8, 3, 32,186, 8, 3, 0, 0, 0, 0, 32, 4, 84, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 16,187, 8, 3,196, 0, 0, 0, 1, 0, 0, 0,136,187, 8, 3,152,186, 8, 3, 0, 0, 0, 0, -192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,187, 8, 3,196, 0, 0, 0, 1, 0, 0, 0, 0,188, 8, 3, - 16,187, 8, 3, 0, 0, 0, 0,192, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0,188, 8, 3,196, 0, 0, 0, - 1, 0, 0, 0,120,188, 8, 3,136,187, 8, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -120,188, 8, 3,196, 0, 0, 0, 1, 0, 0, 0,240,188, 8, 3, 0,188, 8, 3, 0, 0, 0, 0,192, 1, 0, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,240,188, 8, 3,196, 0, 0, 0, 1, 0, 0, 0,104,189, 8, 3,120,188, 8, 3, 0, 0, 0, 0, - 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,189, 8, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -240,188, 8, 3, 0, 0, 0, 0,254, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,189, 8, 3,197, 0, 0, 0, - 1, 0, 0, 0, 96,190, 8, 3, 0, 0, 0, 0,232,181, 8, 3, 96,182, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 96,190, 8, 3,197, 0, 0, 0, 1, 0, 0, 0,224,190, 8, 3,224,189, 8, 3,232,181, 8, 3, 80,183, 8, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,190, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,191, 8, 3, - 96,190, 8, 3, 96,182, 8, 3,200,183, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,191, 8, 3, -197, 0, 0, 0, 1, 0, 0, 0,224,191, 8, 3,224,190, 8, 3, 80,183, 8, 3,200,183, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,224,191, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,192, 8, 3, 96,191, 8, 3,112,181, 8, 3, - 64,184, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,192, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, -224,192, 8, 3,224,191, 8, 3,216,182, 8, 3, 64,184, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -224,192, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,193, 8, 3, 96,192, 8, 3,200,183, 8, 3,184,184, 8, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,193, 8, 3,197, 0, 0, 0, 1, 0, 0, 0,224,193, 8, 3,224,192, 8, 3, - 64,184, 8, 3, 48,185, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,193, 8, 3,197, 0, 0, 0, - 1, 0, 0, 0, 96,194, 8, 3, 96,193, 8, 3,216,182, 8, 3,168,185, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 96,194, 8, 3,197, 0, 0, 0, 1, 0, 0, 0,224,194, 8, 3,224,193, 8, 3, 48,185, 8, 3,168,185, 8, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,194, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,195, 8, 3, - 96,194, 8, 3,112,181, 8, 3, 32,186, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,195, 8, 3, -197, 0, 0, 0, 1, 0, 0, 0,224,195, 8, 3,224,194, 8, 3,184,184, 8, 3,152,186, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,224,195, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,196, 8, 3, 96,195, 8, 3, 64,184, 8, 3, -152,186, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,196, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, -224,196, 8, 3,224,195, 8, 3, 32,186, 8, 3,152,186, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -224,196, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,197, 8, 3, 96,196, 8, 3, 32,186, 8, 3, 16,187, 8, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,197, 8, 3,197, 0, 0, 0, 1, 0, 0, 0,224,197, 8, 3,224,196, 8, 3, -152,186, 8, 3, 16,187, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,197, 8, 3,197, 0, 0, 0, - 1, 0, 0, 0, 96,198, 8, 3, 96,197, 8, 3, 80,183, 8, 3,136,187, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 96,198, 8, 3,197, 0, 0, 0, 1, 0, 0, 0,224,198, 8, 3,224,197, 8, 3,184,184, 8, 3,136,187, 8, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,198, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,199, 8, 3, - 96,198, 8, 3, 16,187, 8, 3,136,187, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,199, 8, 3, -197, 0, 0, 0, 1, 0, 0, 0,224,199, 8, 3,224,198, 8, 3, 32,186, 8, 3, 0,188, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,224,199, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,200, 8, 3, 96,199, 8, 3, 16,187, 8, 3, -120,188, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,200, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, -224,200, 8, 3,224,199, 8, 3, 0,188, 8, 3,120,188, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -224,200, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,201, 8, 3, 96,200, 8, 3, 48,185, 8, 3,240,188, 8, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,201, 8, 3,197, 0, 0, 0, 1, 0, 0, 0,224,201, 8, 3,224,200, 8, 3, -184,184, 8, 3,240,188, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,201, 8, 3,197, 0, 0, 0, - 1, 0, 0, 0, 96,202, 8, 3, 96,201, 8, 3,200,183, 8, 3,104,189, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 96,202, 8, 3,197, 0, 0, 0, 1, 0, 0, 0,224,202, 8, 3,224,201, 8, 3,168,185, 8, 3,104,189, 8, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,202, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 96,203, 8, 3, - 96,202, 8, 3,240,188, 8, 3,104,189, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,203, 8, 3, -197, 0, 0, 0, 1, 0, 0, 0,224,203, 8, 3,224,202, 8, 3, 80,183, 8, 3, 0,188, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,224,203, 8, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,203, 8, 3,136,187, 8, 3, -120,188, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 96,204, 8, 3,199, 0, 0, 0, 1, 0, 0, 0, -232,207, 8, 3, 0, 0, 0, 0, 80,183, 8, 3,232,181, 8, 3, 96,182, 8, 3,200,183, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, - 40, 3, 9, 3, 40, 3, 9, 3, 40,205, 8, 3,136,206, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 40,205, 8, 3,200, 0, 0, 0, 1, 0, 0, 0,136,206, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136,206, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 40,205, 8, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, - 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, - 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, -214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -232,207, 8, 3,199, 0, 0, 0, 1, 0, 0, 0,176,212, 8, 3, 96,204, 8, 3, 64,184, 8, 3, 48,185, 8, 3,168,185, 8, 3, -216,182, 8, 3, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 51, 1, 0, 0, 4, 4,222, 0, 52, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,211, 8, 3,112,211, 8, 3,176,208, 8, 3, 16,210, 8, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,208, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, - 16,210, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 94, 67, - 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, - 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, - 31, 0,222, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, - 51, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 16,210, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,208, 8, 3, 0, 0, 0, 0, 0, 0, 94, 67, 0, 64, 80,196, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 77, 67, 1,128,138,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0, - 20, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, - 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,222, 0, 21, 1,205, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -222, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,112,211, 8, 3,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,176,212, 8, 3,199, 0, 0, 0, - 1, 0, 0, 0, 88,217, 8, 3,232,207, 8, 3,112,181, 8, 3, 32,186, 8, 3,152,186, 8, 3, 64,184, 8, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 15, 15, 32, 4, 84, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 56,216, 8, 3, 56,216, 8, 3,120,213, 8, 3,216,214, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,213, 8, 3,200, 0, 0, 0, 1, 0, 0, 0,216,214, 8, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,132, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 32, 4, 26, 0, 32, 4, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,214, 8, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,120,213, 8, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192, -246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 18, 0, 0, 0, 57, 0, 0, 0, 0, 0,128, 63, - 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, - 8, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, - 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 58, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -188, 0, 0, 0, 56,216, 8, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 88,217, 8, 3,199, 0, 0, 0, 1, 0, 0, 0, -176,223, 8, 3,176,212, 8, 3, 48,185, 8, 3,240,188, 8, 3,104,189, 8, 3,168,185, 8, 3, 0, 0, 0, 0, 33, 4, 0, 0, -254, 4, 0, 0, 53, 1, 0, 0, 47, 2, 0, 0, 3, 3,222, 0,251, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -224,220, 8, 3,224,220, 8, 3, 32,218, 8, 3,128,219, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 32,218, 8, 3,200, 0, 0, 0, 1, 0, 0, 0,128,219, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -221, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, 26, 0,222, 0, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 22, 2, 0, 0, 47, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,219, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 32,218, 8, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0,100, 66, 0, 0,131, 67, - 0, 0, 79,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,222, 0, -225, 0,205, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, - 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,225, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0, -224,220, 8, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64,222, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 64,222, 8, 3,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, - 13, 0, 0, 0,176,222, 8, 3, 68, 65, 84, 65,156, 0, 0, 0,176,222, 8, 3,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 48, 0, 11, 3, 19, 0, 0, 0, 1, 0, 1, 0, 48, 0, 11, 3, 20, 0, 0, 0, 1, 0, 1, 0, 48, 0, 11, 3, - 21, 0, 1, 0, 1, 0, 1, 0, 48, 0, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,240, 22, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0, -152, 29, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,160,112, 12, 3, 0, 0, 0, 0, 1, 0, 1, 0,224, 39, 11, 3, 0, 0, 0, 0, - 1, 0, 1, 0,176,205, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,160, 35, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,160, 18, 11, 3, - 0, 0, 0, 0, 1, 0, 1, 0, 88, 25, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,208, 17, 11, 3, 68, 65, 84, 65, 96, 0, 0, 0, -176,223, 8, 3,199, 0, 0, 0, 1, 0, 0, 0,104,236, 8, 3, 88,217, 8, 3, 16,187, 8, 3,136,187, 8, 3,184,184, 8, 3, -152,186, 8, 3, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,186, 2, 0, 0, 1, 1, 95, 2,102, 2, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,235, 8, 3, 8,235, 8, 3,120,224, 8, 3,248,229, 8, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,224, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, -216,225, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 23, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,179, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, + 0,180, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0,180, 10, 3, +196, 0, 0, 0, 1, 0, 0, 0,120,180, 10, 3,136,179, 10, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,120,180, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,240,180, 10, 3, 0,180, 10, 3, 0, 0, 0, 0,254, 4,214, 2, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,180, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,104,181, 10, 3,120,180, 10, 3, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,181, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, +224,181, 10, 3,240,180, 10, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224,181, 10, 3, +196, 0, 0, 0, 1, 0, 0, 0, 88,182, 10, 3,104,181, 10, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 88,182, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,208,182, 10, 3,224,181, 10, 3, 0, 0, 0, 0, 32, 4, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208,182, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 72,183, 10, 3, 88,182, 10, 3, + 0, 0, 0, 0, 32, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,183, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, +192,183, 10, 3,208,182, 10, 3, 0, 0, 0, 0, 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192,183, 10, 3, +196, 0, 0, 0, 1, 0, 0, 0, 56,184, 10, 3, 72,183, 10, 3, 0, 0, 0, 0,254, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 56,184, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,176,184, 10, 3,192,183, 10, 3, 0, 0, 0, 0, 0, 0, 84, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,184, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 40,185, 10, 3, 56,184, 10, 3, + 0, 0, 0, 0, 32, 4, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,185, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, +160,185, 10, 3,176,184, 10, 3, 0, 0, 0, 0,192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,185, 10, 3, +196, 0, 0, 0, 1, 0, 0, 0, 24,186, 10, 3, 40,185, 10, 3, 0, 0, 0, 0,192, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 24,186, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,144,186, 10, 3,160,185, 10, 3, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144,186, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 8,187, 10, 3, 24,186, 10, 3, + 0, 0, 0, 0,192, 1, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8,187, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, +128,187, 10, 3,144,186, 10, 3, 0, 0, 0, 0, 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128,187, 10, 3, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8,187, 10, 3, 0, 0, 0, 0,254, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,248,187, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,120,188, 10, 3, 0, 0, 0, 0, 0,180, 10, 3,120,180, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,188, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,188, 10, 3, +248,187, 10, 3, 0,180, 10, 3,104,181, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,188, 10, 3, +197, 0, 0, 0, 1, 0, 0, 0,120,189, 10, 3,120,188, 10, 3,120,180, 10, 3,224,181, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,120,189, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,189, 10, 3,248,188, 10, 3,104,181, 10, 3, +224,181, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,189, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, +120,190, 10, 3,120,189, 10, 3,136,179, 10, 3, 88,182, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +120,190, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,190, 10, 3,248,189, 10, 3,240,180, 10, 3, 88,182, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,190, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,120,191, 10, 3,120,190, 10, 3, +224,181, 10, 3,208,182, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,191, 10, 3,197, 0, 0, 0, + 1, 0, 0, 0,248,191, 10, 3,248,190, 10, 3, 88,182, 10, 3, 72,183, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,248,191, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,120,192, 10, 3,120,191, 10, 3,240,180, 10, 3,192,183, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,192, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,192, 10, 3, +248,191, 10, 3, 72,183, 10, 3,192,183, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,192, 10, 3, +197, 0, 0, 0, 1, 0, 0, 0,120,193, 10, 3,120,192, 10, 3,136,179, 10, 3, 56,184, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,120,193, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,193, 10, 3,248,192, 10, 3,208,182, 10, 3, +176,184, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,193, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, +120,194, 10, 3,120,193, 10, 3, 88,182, 10, 3,176,184, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +120,194, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,194, 10, 3,248,193, 10, 3, 56,184, 10, 3,176,184, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,194, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,120,195, 10, 3,120,194, 10, 3, + 56,184, 10, 3, 40,185, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,195, 10, 3,197, 0, 0, 0, + 1, 0, 0, 0,248,195, 10, 3,248,194, 10, 3,176,184, 10, 3, 40,185, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,248,195, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,120,196, 10, 3,120,195, 10, 3,104,181, 10, 3,160,185, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,196, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,196, 10, 3, +248,195, 10, 3,208,182, 10, 3,160,185, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,196, 10, 3, +197, 0, 0, 0, 1, 0, 0, 0,120,197, 10, 3,120,196, 10, 3, 40,185, 10, 3,160,185, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,120,197, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,197, 10, 3,248,196, 10, 3, 56,184, 10, 3, + 24,186, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,197, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, +120,198, 10, 3,120,197, 10, 3, 40,185, 10, 3,144,186, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +120,198, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,198, 10, 3,248,197, 10, 3, 24,186, 10, 3,144,186, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,198, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,120,199, 10, 3,120,198, 10, 3, + 72,183, 10, 3, 8,187, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,199, 10, 3,197, 0, 0, 0, + 1, 0, 0, 0,248,199, 10, 3,248,198, 10, 3,208,182, 10, 3, 8,187, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,248,199, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,120,200, 10, 3,120,199, 10, 3,224,181, 10, 3,128,187, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,200, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,200, 10, 3, +248,199, 10, 3,192,183, 10, 3,128,187, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,200, 10, 3, +197, 0, 0, 0, 1, 0, 0, 0,120,201, 10, 3,120,200, 10, 3, 8,187, 10, 3,128,187, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,120,201, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,201, 10, 3,248,200, 10, 3,104,181, 10, 3, + 24,186, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,201, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,120,201, 10, 3,160,185, 10, 3,144,186, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, +120,202, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 0,206, 10, 3, 0, 0, 0, 0,104,181, 10, 3, 0,180, 10, 3,120,180, 10, 3, +224,181, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 64, 1, 11, 3, 64, 1, 11, 3, 64,203, 10, 3,160,204, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,203, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, +160,204, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, - 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 95, 2, - 26, 0, 95, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, + 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, +213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -216,225, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, 56,227, 8, 3,120,224, 8, 3, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, - 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, - 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 1, 0, 0,193, 1, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 76, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160,204, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64,203, 10, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,227, 8, 3,200, 0, 0, 0, 1, 0, 0, 0,152,228, 8, 3,216,225, 8, 3, - 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 0,206, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,200,210, 10, 3,120,202, 10, 3, + 88,182, 10, 3, 72,183, 10, 3,192,183, 10, 3,240,180, 10, 3, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, + 51, 1, 0, 0, 4, 4,222, 0, 52, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,209, 10, 3,136,209, 10, 3, +200,206, 10, 3, 40,208, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +200,206, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 40,208, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, + 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, 31, 0,222, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 33, 4, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 51, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +222, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,228, 8, 3,200, 0, 0, 0, - 1, 0, 0, 0,248,229, 8, 3, 56,227, 8, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0, -162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, - 6, 0,180, 0,148, 3,163, 0,130, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 31, 4, 0, 0, -111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40,208, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,200,206, 10, 3, + 0, 0, 0, 0, 0, 0, 94, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 77, 67, 1,128,138,195, 0, 0, 0, 0, +205, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,222, 0, 21, 1,205, 0, 21, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,136,209, 10, 3,165, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,200,210, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,112,215, 10, 3, 0,206, 10, 3,136,179, 10, 3, 56,184, 10, 3, +176,184, 10, 3, 88,182, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 15, 15, 32, 4, + 84, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,214, 10, 3, 80,214, 10, 3,144,211, 10, 3,240,212, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144,211, 10, 3,200, 0, 0, 0, + 1, 0, 0, 0,240,212, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0,132, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, + 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0, 32, 4, 26, 0, 32, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,248,229, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152,228, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, +248, 0, 0, 0,240,212, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144,211, 10, 3, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, + 18, 0, 0, 0, 57, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, + 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 80,214, 10, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 95, 2, 76, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, +112,215, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,200,221, 10, 3,200,210, 10, 3, 72,183, 10, 3, 8,187, 10, 3,128,187, 10, 3, +192,183, 10, 3, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 47, 2, 0, 0, 3, 3,222, 0,251, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,218, 10, 3,248,218, 10, 3, 56,216, 10, 3,152,217, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,216, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, +152,217, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 94, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, + 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, + 26, 0,222, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 22, 2, 0, 0, + 47, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88,231, 8, 3, 68, 65, 84, 65, 72, 3, 0, 0, 88,231, 8, 3,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,134,144, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, - 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188, -166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, - 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, - 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62, -215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62,145,180,109,188, -243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, 99,240,191, 62, -110,116, 85, 63, 80,185, 70,188, 0, 0, 82,180,206, 44,182,190,198,158, 47, 62, 36,239, 74, 63, 0, 0, 8,179, 67,108,117,194, -183,204,216, 65,104,156, 5,194,212,247,159,192,235, 62,114, 66, 59,254,213,193,157,225, 3, 66, 55, 8,160, 64, 68,239,209, 62, - 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188, -166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62, -215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62,145,180,109,188, -243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65,255,189, 88, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, - 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,234,108, 69, 59, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +152,217, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,216, 10, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, + 0, 0, 0, 0, 0, 0,100, 66, 0, 0,131, 67, 0, 0, 79,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, 18, 0, 0, 0, +224, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 18, 0, 0, 0, +224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, + 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,222, 0,225, 0,205, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +222, 0,225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,248,218, 10, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,220, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 88,220, 10, 3, +223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,200,220, 10, 3, 68, 65, 84, 65,156, 0, 0, 0,200,220, 10, 3, +222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 72,254, 12, 3, 19, 0, 0, 0, 1, 0, 1, 0, 72,254, 12, 3, + 20, 0, 0, 0, 1, 0, 1, 0, 72,254, 12, 3, 21, 0, 1, 0, 1, 0, 1, 0, 72,254, 12, 3, 0, 0, 0, 0, 1, 0, 1, 0, + 8, 21, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,168, 27, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,176,110, 14, 3, 0, 0, 0, 0, + 1, 0, 1, 0,240, 37, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,192,203, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,176, 33, 13, 3, + 0, 0, 0, 0, 1, 0, 1, 0,184, 16, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,104, 23, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, +232, 15, 13, 3, 68, 65, 84, 65, 96, 0, 0, 0,200,221, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,128,234, 10, 3,112,215, 10, 3, + 40,185, 10, 3,160,185, 10, 3,208,182, 10, 3,176,184, 10, 3, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0, +186, 2, 0, 0, 1, 1, 95, 2,102, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,233, 10, 3, 32,233, 10, 3, +144,222, 10, 3, 16,228, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +144,222, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,240,223, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0,192, 23, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 95, 2, 26, 0, 95, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 95, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,223, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 80,225, 10, 3,144,222, 10, 3, + 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0,193, 1, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 76, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 32, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,235, 8, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, - 88, 25, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,104,236, 8, 3,199, 0, 0, 0, - 1, 0, 0, 0,104,244, 8, 3,176,223, 8, 3, 32,186, 8, 3, 0,188, 8, 3,120,188, 8, 3, 16,187, 8, 3, 0, 0, 0, 0, - 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,255, 0, 0, 0, 2, 2,192, 1,171, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,176,242, 8, 3,176,242, 8, 3, 48,237, 8, 3, 80,241, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,237, 8, 3,200, 0, 0, 0, 1, 0, 0, 0,144,238, 8, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144,238, 8, 3,200, 0, 0, 0, - 1, 0, 0, 0,240,239, 8, 3, 48,237, 8, 3, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 67, 0, 0,254,194, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, - 6, 0,217, 0,145, 0,200, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, -111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0,145, 0, 0, 0, 2, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,225, 10, 3,200, 0, 0, 0, + 1, 0, 0, 0,176,226, 10, 3,240,223, 10, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0, +231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, +142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, + 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, +111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, + 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,240,239, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, 80,241, 8, 3,144,238, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,191, 1, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 0, 0, 0,176,226, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 16,228, 10, 3, 80,225, 10, 3, 0, 0, 0, 0, 0, 0, 35, 67, + 0,128, 96,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, + 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,148, 3,163, 0,130, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 4, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,241, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -240,239, 8, 3, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, - 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, - 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,231, 0,145, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,228, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +176,226, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,176,242, 8, 3, -164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 76, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,229, 10, 3, 68, 65, 84, 65, 72, 3, 0, 0,112,229, 10, 3, +159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,134,144, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, + 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, + 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62, +166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192, +248,209,213, 64, 0, 0,128, 63,178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, + 26, 63,185, 62, 35, 44,185, 62,145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, + 9,185,108, 65,214,211,111, 65, 99,240,191, 62,110,116, 85, 63, 80,185, 70,188, 0, 0, 82,180,206, 44,182,190,198,158, 47, 62, + 36,239, 74, 63, 0, 0, 8,179, 67,108,117,194,183,204,216, 65,104,156, 5,194,212,247,159,192,235, 62,114, 66, 59,254,213,193, +157,225, 3, 66, 55, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, + 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214,211,111,193, 0, 0,128, 63,178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, + 26, 63,185, 62, 35, 44,185, 62,145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, + 9,185,108, 65,214,211,111, 65,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, + 0, 0, 0, 0, 0, 0, 0, 0,234,108, 69, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,243, 8, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -232,243, 8, 3, 24, 1, 0, 0, 1, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,104,244, 8, 3,199, 0, 0, 0, 1, 0, 0, 0,144,250, 8, 3,104,236, 8, 3, - 0,188, 8, 3, 80,183, 8, 3,136,187, 8, 3,120,188, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0, -186, 2, 0, 0, 12, 12,192, 1,186, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,249, 8, 3, 80,249, 8, 3, - 48,245, 8, 3,240,247, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 48,245, 8, 3,200, 0, 0, 0, 1, 0, 0, 0,144,246, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 98, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144,246, 8, 3,200, 0, 0, 0, 1, 0, 0, 0,240,247, 8, 3, 48,245, 8, 3, - 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,199,195, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,200, 0,160, 1,200, 0,142, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,160, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,247, 8, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,144,246, 8, 3, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 32,193, - 0, 0,104, 68, 0, 0,199,195, 0, 0, 0, 0,231, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, -230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 4, - 4, 0,248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0, 0, 0,191, 1, 0, 0, - 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 0,160, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 32, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,233, 10, 3,160, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104, 23, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,128,234, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,128,242, 10, 3,200,221, 10, 3, 56,184, 10, 3, 24,186, 10, 3, +144,186, 10, 3, 40,185, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,255, 0, 0, 0, 2, 2,192, 1, +171, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,240, 10, 3,200,240, 10, 3, 72,235, 10, 3,104,239, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,235, 10, 3,200, 0, 0, 0, + 1, 0, 0, 0,168,236, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, + 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, + 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -216, 0, 0, 0, 80,249, 8, 3, 25, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 0, 0, 0,168,236, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 8,238, 10, 3, 72,235, 10, 3, 0, 0, 0, 0, 0, 0, 72, 67, + 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,254,194, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, + 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, + 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0,145, 0,200, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,217, 0,145, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,238, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,104,239, 10, 3, +168,236, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 2, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,144,250, 8, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -104,244, 8, 3,240,188, 8, 3,184,184, 8, 3,200,183, 8, 3,104,189, 8, 3, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, - 49, 2, 0, 0,186, 2, 0, 0, 1, 1,222, 0,138, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 1, 9, 3, -200, 1, 9, 3, 88,251, 8, 3,184,252, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 88,251, 8, 3,200, 0, 0, 0, 1, 0, 0, 0,184,252, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 64, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, - 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,132, 1, 24, 0,132, 1, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0, 49, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,252, 8, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 88,251, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104,239, 10, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8,238, 10, 3, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, + 18, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, +111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0, +191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,254, 8, 3, 68, 65, 84, 65, 72, 3, 0, 0, 24,254, 8, 3, -159, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,109,100, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, -149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, -152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, - 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, - 77,255,170, 64, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191,142,164,206, 63,250,192,142, 63, -180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, 81, 21, 64,191,119, 24,172,191, -216, 49, 49, 65,152, 9, 52, 65,231, 70,158, 62, 24,234,167, 62,160,206,159,187, 0, 0,170,180,243, 26,182,189,252, 74,179, 61, -195,111,128, 62, 0, 0,124, 51,211,120, 21,194,144, 5, 2, 66, 10,136,213,193,193,214,159,192,219, 38, 19, 66,196,173,255,193, -158,101,210, 65,173, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, -149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, -152, 9, 52,193, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191,142,164,206, 63,250,192,142, 63, -180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, 81, 21, 64,191,119, 24,172,191, -216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190, 0, 0, 32, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 13,133, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,208, 0, 0, 0,200,240, 10, 3,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,242, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0,242, 10, 3, 23, 1, 0, 0, 1, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,128,242, 10, 3,199, 0, 0, 0, + 1, 0, 0, 0,168,248, 10, 3,128,234, 10, 3, 24,186, 10, 3,104,181, 10, 3,160,185, 10, 3,144,186, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0,186, 2, 0, 0, 12, 12,192, 1,186, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,104,247, 10, 3,104,247, 10, 3, 72,243, 10, 3, 8,246, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,243, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,168,244, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,192, 98, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 1, 9, 3,160, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 88, 25, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0, -140, 0, 0, 0,192, 3, 9, 3,195, 0, 0, 0, 1, 0, 0, 0,216, 91, 9, 3,128,180, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,176, 4, 9, 3,200, 10, 9, 3, 64, 11, 9, 3,200, 21, 9, 3, 72, 22, 9, 3,216, 52, 9, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,244, 10, 3,200, 0, 0, 0, + 1, 0, 0, 0, 8,246, 10, 3, 72,243, 10, 3, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 72, 67, 0, 0,199,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, + 6, 0,200, 0,160, 1,200, 0,142, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, + 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,160, 1, 0, 0, 2, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,176, 4, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, 40, 5, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40, 5, 9, 3,196, 0, 0, 0, 1, 0, 0, 0,160, 5, 9, 3,176, 4, 9, 3, - 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160, 5, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, - 24, 6, 9, 3, 40, 5, 9, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24, 6, 9, 3, -196, 0, 0, 0, 1, 0, 0, 0,144, 6, 9, 3,160, 5, 9, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,144, 6, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, 8, 7, 9, 3, 24, 6, 9, 3, 0, 0, 0, 0, 0, 0,187, 2, - 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8, 7, 9, 3,196, 0, 0, 0, 1, 0, 0, 0,128, 7, 9, 3,144, 6, 9, 3, - 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128, 7, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, -248, 7, 9, 3, 8, 7, 9, 3, 0, 0, 0, 0, 20, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248, 7, 9, 3, -196, 0, 0, 0, 1, 0, 0, 0,112, 8, 9, 3,128, 7, 9, 3, 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,112, 8, 9, 3,196, 0, 0, 0, 1, 0, 0, 0,232, 8, 9, 3,248, 7, 9, 3, 0, 0, 0, 0, 20, 4,187, 2, - 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232, 8, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, 96, 9, 9, 3,112, 8, 9, 3, - 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96, 9, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, -216, 9, 9, 3,232, 8, 9, 3, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216, 9, 9, 3, -196, 0, 0, 0, 1, 0, 0, 0, 80, 10, 9, 3, 96, 9, 9, 3, 0, 0, 0, 0, 0, 2, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 80, 10, 9, 3,196, 0, 0, 0, 1, 0, 0, 0,200, 10, 9, 3,216, 9, 9, 3, 0, 0, 0, 0, 0, 2, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200, 10, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80, 10, 9, 3, - 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 11, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, -192, 11, 9, 3, 0, 0, 0, 0, 40, 5, 9, 3,160, 5, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -192, 11, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 12, 9, 3, 64, 11, 9, 3, 40, 5, 9, 3,144, 6, 9, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 12, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 12, 9, 3,192, 11, 9, 3, -160, 5, 9, 3, 8, 7, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 12, 9, 3,197, 0, 0, 0, - 1, 0, 0, 0, 64, 13, 9, 3, 64, 12, 9, 3,144, 6, 9, 3, 8, 7, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 64, 13, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 13, 9, 3,192, 12, 9, 3, 24, 6, 9, 3,248, 7, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 13, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 14, 9, 3, - 64, 13, 9, 3,128, 7, 9, 3,248, 7, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 14, 9, 3, -197, 0, 0, 0, 1, 0, 0, 0,192, 14, 9, 3,192, 13, 9, 3, 8, 7, 9, 3,112, 8, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,192, 14, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 15, 9, 3, 64, 14, 9, 3,144, 6, 9, 3, -112, 8, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 15, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, -192, 15, 9, 3,192, 14, 9, 3,128, 7, 9, 3,112, 8, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -192, 15, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, 72, 16, 9, 3, 64, 15, 9, 3, 8, 7, 9, 3,248, 7, 9, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 16, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,200, 16, 9, 3,192, 15, 9, 3, -144, 6, 9, 3,232, 8, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 16, 9, 3,197, 0, 0, 0, - 1, 0, 0, 0, 72, 17, 9, 3, 72, 16, 9, 3,112, 8, 9, 3, 96, 9, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 72, 17, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,200, 17, 9, 3,200, 16, 9, 3,232, 8, 9, 3, 96, 9, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 17, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, 72, 18, 9, 3, - 72, 17, 9, 3,232, 8, 9, 3,216, 9, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 18, 9, 3, -197, 0, 0, 0, 1, 0, 0, 0,200, 18, 9, 3,200, 17, 9, 3, 96, 9, 9, 3,216, 9, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,200, 18, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, 72, 19, 9, 3, 72, 18, 9, 3,176, 4, 9, 3, - 80, 10, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 19, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, -200, 19, 9, 3,200, 18, 9, 3, 80, 10, 9, 3,200, 10, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -200, 19, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, 72, 20, 9, 3, 72, 19, 9, 3, 24, 6, 9, 3,200, 10, 9, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 20, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,200, 20, 9, 3,200, 19, 9, 3, -128, 7, 9, 3,200, 10, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 20, 9, 3,197, 0, 0, 0, - 1, 0, 0, 0, 72, 21, 9, 3, 72, 20, 9, 3,216, 9, 9, 3, 80, 10, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 72, 21, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,200, 21, 9, 3,200, 20, 9, 3, 96, 9, 9, 3,200, 10, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 21, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 72, 21, 9, 3,176, 4, 9, 3,232, 8, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 72, 22, 9, 3, -199, 0, 0, 0, 1, 0, 0, 0,208, 25, 9, 3, 0, 0, 0, 0,144, 6, 9, 3, 40, 5, 9, 3,160, 5, 9, 3, 8, 7, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 0, 0, 64, 91, 9, 3, 64, 91, 9, 3, 16, 23, 9, 3,112, 24, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16, 23, 9, 3,200, 0, 0, 0, 1, 0, 0, 0,112, 24, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, +248, 0, 0, 0, 8,246, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,168,244, 10, 3, 0, 0, 32,193, 0, 0,104, 68, + 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0,199,195, 0, 0, 0, 0,231, 0, 0, 0,248, 0, 0, 0, + 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, + 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, + 74, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,200, 0, 0, 0,191, 1, 0, 0, 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,104,247, 10, 3, 24, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,168,248, 10, 3, +199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128,242, 10, 3, 8,187, 10, 3,208,182, 10, 3,224,181, 10, 3,128,187, 10, 3, + 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 1, 1,222, 0,138, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,224,255, 10, 3,224,255, 10, 3,112,249, 10, 3,208,250, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,249, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,208,250, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 64, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,132, 1, 24, 0,132, 1, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0, 49, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112, 24, 9, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 23, 9, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,250, 10, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,112,249, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0,208, 25, 9, 3,199, 0, 0, 0, 1, 0, 0, 0,120, 30, 9, 3, 72, 22, 9, 3,200, 10, 9, 3, -128, 7, 9, 3,248, 7, 9, 3, 24, 6, 9, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, - 15, 15,234, 0, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 88, 29, 9, 3, 88, 29, 9, 3,152, 26, 9, 3, -248, 27, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152, 26, 9, 3, -200, 0, 0, 0, 1, 0, 0, 0,248, 27, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,116, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0,128,190, 67, 0,192, 25, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,234, 0, 26, 0,234, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 26, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0, +254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,138, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,252, 10, 3, + 68, 65, 84, 65, 72, 3, 0, 0, 48,252, 10, 3,159, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,216,109,100, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, + 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, + 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, + 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, + 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, + 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, + 8,165, 39,191,142,164,206, 63,250,192,142, 63,180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, + 50,247,227,190, 81, 21, 64,191,119, 24,172,191,216, 49, 49, 65,152, 9, 52, 65,231, 70,158, 62, 24,234,167, 62,160,206,159,187, + 0, 0,170,180,243, 26,182,189,252, 74,179, 61,195,111,128, 62, 0, 0,124, 51,211,120, 21,194,144, 5, 2, 66, 10,136,213,193, +193,214,159,192,219, 38, 19, 66,196,173,255,193,158,101,210, 65,173, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, + 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, + 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, + 8,165, 39,191,142,164,206, 63,250,192,142, 63,180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, + 50,247,227,190, 81, 21, 64,191,119, 24,172,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, + 2, 35,171,190, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 13,133, 59, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 7, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,224,255, 10, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104, 23, 13, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,216, 1, 11, 3,195, 0, 0, 0, 1, 0, 0, 0,232, 89, 11, 3, +152,178, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 2, 11, 3,224, 8, 11, 3, 88, 9, 11, 3,216, 19, 11, 3, + 88, 20, 11, 3,232, 50, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200, 2, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 64, 3, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64, 3, 11, 3,196, 0, 0, 0, + 1, 0, 0, 0,184, 3, 11, 3,200, 2, 11, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +184, 3, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 48, 4, 11, 3, 64, 3, 11, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 48, 4, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,168, 4, 11, 3,184, 3, 11, 3, 0, 0, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168, 4, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 5, 11, 3, + 48, 4, 11, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 5, 11, 3,196, 0, 0, 0, + 1, 0, 0, 0,152, 5, 11, 3,168, 4, 11, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +152, 5, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 16, 6, 11, 3, 32, 5, 11, 3, 0, 0, 0, 0, 20, 4, 64, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 16, 6, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,136, 6, 11, 3,152, 5, 11, 3, 0, 0, 0, 0, +254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136, 6, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 7, 11, 3, + 16, 6, 11, 3, 0, 0, 0, 0, 20, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 7, 11, 3,196, 0, 0, 0, + 1, 0, 0, 0,120, 7, 11, 3,136, 6, 11, 3, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +120, 7, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,240, 7, 11, 3, 0, 7, 11, 3, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,240, 7, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,104, 8, 11, 3,120, 7, 11, 3, 0, 0, 0, 0, + 0, 2, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104, 8, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,224, 8, 11, 3, +240, 7, 11, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224, 8, 11, 3,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,104, 8, 11, 3, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 88, 9, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 9, 11, 3, 0, 0, 0, 0, 64, 3, 11, 3,184, 3, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 9, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 10, 11, 3, 88, 9, 11, 3, + 64, 3, 11, 3,168, 4, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 10, 11, 3,197, 0, 0, 0, + 1, 0, 0, 0,216, 10, 11, 3,216, 9, 11, 3,184, 3, 11, 3, 32, 5, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,216, 10, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 11, 11, 3, 88, 10, 11, 3,168, 4, 11, 3, 32, 5, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 11, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 11, 11, 3, +216, 10, 11, 3, 48, 4, 11, 3, 16, 6, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 11, 11, 3, +197, 0, 0, 0, 1, 0, 0, 0, 88, 12, 11, 3, 88, 11, 11, 3,152, 5, 11, 3, 16, 6, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 88, 12, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 12, 11, 3,216, 11, 11, 3, 32, 5, 11, 3, +136, 6, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 12, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, + 88, 13, 11, 3, 88, 12, 11, 3,168, 4, 11, 3,136, 6, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 88, 13, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 13, 11, 3,216, 12, 11, 3,152, 5, 11, 3,136, 6, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 13, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 14, 11, 3, 88, 13, 11, 3, + 32, 5, 11, 3, 16, 6, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 14, 11, 3,197, 0, 0, 0, + 1, 0, 0, 0,216, 14, 11, 3,216, 13, 11, 3,168, 4, 11, 3, 0, 7, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,216, 14, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 15, 11, 3, 88, 14, 11, 3,136, 6, 11, 3,120, 7, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 15, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 15, 11, 3, +216, 14, 11, 3, 0, 7, 11, 3,120, 7, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 15, 11, 3, +197, 0, 0, 0, 1, 0, 0, 0, 88, 16, 11, 3, 88, 15, 11, 3, 0, 7, 11, 3,240, 7, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 88, 16, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 16, 11, 3,216, 15, 11, 3,120, 7, 11, 3, +240, 7, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 16, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, + 88, 17, 11, 3, 88, 16, 11, 3,200, 2, 11, 3,104, 8, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 88, 17, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 17, 11, 3,216, 16, 11, 3,104, 8, 11, 3,224, 8, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 17, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 18, 11, 3, 88, 17, 11, 3, + 48, 4, 11, 3,224, 8, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 18, 11, 3,197, 0, 0, 0, + 1, 0, 0, 0,216, 18, 11, 3,216, 17, 11, 3,152, 5, 11, 3,224, 8, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,216, 18, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 19, 11, 3, 88, 18, 11, 3,240, 7, 11, 3,104, 8, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 19, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 19, 11, 3, +216, 18, 11, 3,120, 7, 11, 3,224, 8, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 19, 11, 3, +197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88, 19, 11, 3,200, 2, 11, 3, 0, 7, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 96, 0, 0, 0, 88, 20, 11, 3,199, 0, 0, 0, 1, 0, 0, 0,224, 23, 11, 3, 0, 0, 0, 0,168, 4, 11, 3, + 64, 3, 11, 3,184, 3, 11, 3, 32, 5, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, + 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 80, 89, 11, 3, 80, 89, 11, 3, 32, 21, 11, 3, +128, 22, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 21, 11, 3, +200, 0, 0, 0, 1, 0, 0, 0,128, 22, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,248, 27, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152, 26, 9, 3, 0, 0, 64,192, - 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -233, 0, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, - 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,234, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,128, 22, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32, 21, 11, 3, 0, 0, 0, 0, + 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0, +129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 88, 29, 9, 3,176, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,224, 23, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, +136, 28, 11, 3, 88, 20, 11, 3,224, 8, 11, 3,152, 5, 11, 3, 16, 6, 11, 3, 48, 4, 11, 3, 0, 0, 0, 0, 21, 4, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,234, 0, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, +104, 27, 11, 3,104, 27, 11, 3,168, 24, 11, 3, 8, 26, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,168, 24, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 8, 26, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0,192,116, 68, 0, 0, 0, 0, 0, 0,208, 65, 0,128,190, 67, 0,192, 25, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +233, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 26, 0,234, 0, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8, 26, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,168, 24, 11, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, + 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, + 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,234, 0, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, + 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, +104, 27, 11, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,136, 28, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, 80, 33, 11, 3, +224, 23, 11, 3,152, 5, 11, 3,136, 6, 11, 3, 32, 5, 11, 3, 16, 6, 11, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, + 65, 0, 0, 0,186, 2, 0, 0, 4, 4,234, 0,122, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 32, 11, 3, + 16, 32, 11, 3, 80, 29, 11, 3,176, 30, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 80, 29, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,176, 30, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0,156, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176, 30, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 80, 29, 11, 3, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 88, 67, 0,192, 22,196, + 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0, 91, 2,217, 0, + 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,155, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 16, 32, 11, 3, +165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 96, 0, 0, 0, 80, 33, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, 8, 46, 11, 3,136, 28, 11, 3,104, 8, 11, 3, +240, 7, 11, 3,120, 7, 11, 3,224, 8, 11, 3, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, + 1, 1, 19, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 44, 11, 3,168, 44, 11, 3, 24, 34, 11, 3, +152, 39, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24, 34, 11, 3, +200, 0, 0, 0, 1, 0, 0, 0,120, 35, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0,192, 4, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0, 19, 2, 26, 0, 19, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, + 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 26, 0, + 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,120, 35, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,216, 36, 11, 3, 24, 34, 11, 3, 0, 0, 0, 0, + 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0, +160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,250, 0, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216, 36, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, + 56, 38, 11, 3,120, 35, 11, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, + 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, +120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 56, 38, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,152, 39, 11, 3,216, 36, 11, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,184,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, +129, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, +129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,130, 1,163, 0,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 19, 4, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152, 39, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56, 38, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 40, 11, 3, 68, 65, 84, 65, 72, 3, 0, 0,248, 40, 11, 3,159, 0, 0, 0, + 1, 0, 0, 0, 37,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249,173,116, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, + 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, + 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, + 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, 56, 53,101, 63, + 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, 77,255,170, 64, + 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63, +149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65, +152, 9, 52, 65, 80, 25,195, 62,218,249,206, 62, 0,237,196,187, 0, 0, 96,179,234, 2,170,189,191, 98,167, 61, 1,208,111, 62, + 0, 0,224, 49,254,120, 21,194,182, 5, 2, 66, 70,136,213,193,239,214,159,192, 5, 39, 19, 66, 15,174,255,193,217,101,210, 65, +219, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, + 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, + 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63, +149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65, +152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, + 0, 0, 0, 0,223, 34, 9, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168, 44, 11, 3,160, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0,104, 23, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, + 8, 46, 11, 3,199, 0, 0, 0, 1, 0, 0, 0,232, 50, 11, 3, 80, 33, 11, 3, 0, 7, 11, 3,168, 4, 11, 3,136, 6, 11, 3, +120, 7, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 16, 16, 20, 4,166, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 49, 11, 3,144, 49, 11, 3,208, 46, 11, 3, 48, 48, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208, 46, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, + 48, 48, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, + 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, + 26, 0, 20, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0, + 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 48, 48, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 46, 11, 3, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, + 0, 0, 0, 68,110,142,241,195, 55,199,120, 68,240, 80,128,193,136, 2, 4, 68, 3, 4, 0, 0, 20, 4, 0, 0, 18, 0, 0, 0, +139, 1, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 18, 0, 0, 0, +139, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,236, 81,184, 61, 10,215, 19, 64, 10, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 20, 4,140, 1, 3, 4,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 19, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 4,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,244, 0, 0, 0,144, 49, 11, 3,177, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 61,181, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,232, 50, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 8, 46, 11, 3,200, 2, 11, 3, 0, 7, 11, 3,240, 7, 11, 3,104, 8, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, +255, 1, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 6, 6, 0, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208, 55, 11, 3,208, 55, 11, 3,176, 51, 11, 3,112, 54, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,176, 51, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 16, 53, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 2, 26, 0, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16, 53, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, +112, 54, 11, 3,176, 51, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +112, 54, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 53, 11, 3, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 67, 0, 0, 0,191, 0, 0,192, 63, 0, 0, 64, 60, 0, 0,125, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, +250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255, 1, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0,208, 55, 11, 3,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, + 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,232, 89, 11, 3,195, 0, 0, 0, + 1, 0, 0, 0,232, 18, 12, 3,216, 1, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 90, 11, 3, 0, 96, 11, 3, +120, 96, 11, 3,248,104, 11, 3,120,105, 11, 3,160,185, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, + 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,116,170, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216, 90, 11, 3,196, 0, 0, 0, + 1, 0, 0, 0, 80, 91, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 80, 91, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,200, 91, 11, 3,216, 90, 11, 3, 0, 0, 0, 0, 0, 0,202, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,200, 91, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 64, 92, 11, 3, 80, 91, 11, 3, 0, 0, 0, 0, +136, 6,202, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64, 92, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,184, 92, 11, 3, +200, 91, 11, 3, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184, 92, 11, 3,196, 0, 0, 0, + 1, 0, 0, 0, 48, 93, 11, 3, 64, 92, 11, 3, 0, 0, 0, 0, 0, 0,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 48, 93, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,168, 93, 11, 3,184, 92, 11, 3, 0, 0, 0, 0,136, 6,175, 3, 1, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,168, 93, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 94, 11, 3, 48, 93, 11, 3, 0, 0, 0, 0, +108, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 94, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,152, 94, 11, 3, +168, 93, 11, 3, 0, 0, 0, 0,108, 5,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152, 94, 11, 3,196, 0, 0, 0, + 1, 0, 0, 0, 16, 95, 11, 3, 32, 94, 11, 3, 0, 0, 0, 0,108, 5, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 16, 95, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,136, 95, 11, 3,152, 94, 11, 3, 0, 0, 0, 0,136, 6, 4, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,136, 95, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 96, 11, 3, 16, 95, 11, 3, 0, 0, 0, 0, + 0, 0, 80, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 96, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +136, 95, 11, 3, 0, 0, 0, 0,108, 5, 80, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120, 96, 11, 3,197, 0, 0, 0, + 1, 0, 0, 0,248, 96, 11, 3, 0, 0, 0, 0, 80, 91, 11, 3,200, 91, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,248, 96, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,120, 97, 11, 3,120, 96, 11, 3, 80, 91, 11, 3,184, 92, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120, 97, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,248, 97, 11, 3, +248, 96, 11, 3,200, 91, 11, 3, 48, 93, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248, 97, 11, 3, +197, 0, 0, 0, 1, 0, 0, 0,120, 98, 11, 3,120, 97, 11, 3,184, 92, 11, 3, 48, 93, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,120, 98, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,248, 98, 11, 3,248, 97, 11, 3,216, 90, 11, 3, +168, 93, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248, 98, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, +120, 99, 11, 3,120, 98, 11, 3, 64, 92, 11, 3,168, 93, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +120, 99, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,248, 99, 11, 3,248, 98, 11, 3,184, 92, 11, 3, 32, 94, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248, 99, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,120,100, 11, 3,120, 99, 11, 3, + 48, 93, 11, 3, 32, 94, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,100, 11, 3,197, 0, 0, 0, + 1, 0, 0, 0,248,100, 11, 3,248, 99, 11, 3,168, 93, 11, 3,152, 94, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,248,100, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,120,101, 11, 3,120,100, 11, 3, 32, 94, 11, 3,152, 94, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,101, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,248,101, 11, 3, +248,100, 11, 3, 48, 93, 11, 3, 16, 95, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,101, 11, 3, +197, 0, 0, 0, 1, 0, 0, 0,120,102, 11, 3,120,101, 11, 3, 64, 92, 11, 3, 16, 95, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,120,102, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,248,102, 11, 3,248,101, 11, 3,152, 94, 11, 3, + 16, 95, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,102, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, +120,103, 11, 3,120,102, 11, 3,216, 90, 11, 3,136, 95, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +120,103, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,248,103, 11, 3,248,102, 11, 3,184, 92, 11, 3,136, 95, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,103, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,120,104, 11, 3,120,103, 11, 3, + 32, 94, 11, 3, 0, 96, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,104, 11, 3,197, 0, 0, 0, + 1, 0, 0, 0,248,104, 11, 3,248,103, 11, 3,168, 93, 11, 3, 0, 96, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,248,104, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120,104, 11, 3,136, 95, 11, 3, 0, 96, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,120,105, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, 0,109, 11, 3, + 0, 0, 0, 0,184, 92, 11, 3, 80, 91, 11, 3,200, 91, 11, 3, 48, 93, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, +176, 3, 0, 0,202, 3, 0, 0, 7, 7,137, 6, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 8, 0,240,187,245, 2, 80, 18, 12, 3, + 80, 18, 12, 3, 64,106, 11, 3,160,107, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 80,181, 90, 3,176,127, 3, 3, 68, 65, 84, 65, +248, 0, 0, 0, 64,106, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,160,107, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,147, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,176, 3, 0, 0,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,137, 6, 26, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,160,189,245, 2, 96,207,113, 3, 96,207,113, 3, 0, 0, 0, 0, 0, 0, 0, 0,112,132, 9, 3,216,136, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160,107, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 64,106, 11, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, + 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 3, 0, 0,202, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,188,245, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 0,109, 11, 3, +199, 0, 0, 0, 1, 0, 0, 0,144,174, 11, 3,120,105, 11, 3,168, 93, 11, 3,152, 94, 11, 3, 16, 95, 11, 3, 64, 92, 11, 3, + 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 4, 4, 28, 1, 4, 3, 1, 0, 0, 0, 0, 0, + 0, 0, 8, 0, 40,184,245, 2, 48,167, 11, 3,240,173, 11, 3,200,109, 11, 3, 40,111, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, +192,243,244, 2, 64,130, 9, 3, 68, 65, 84, 65,248, 0, 0, 0,200,109, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 40,111, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,142, 67, 0, 0, 0, 0, + 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 28, 1, 31, 0, 28, 1, + 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0,229, 2, 0, 0, 3, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,187,245, 2,104,254, 91, 3,104,254, 91, 3, 0, 0, 0, 0, + 0, 0, 0, 0,184,139, 9, 3,200,141, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40,111, 11, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,200,109, 11, 3, 0, 0, 0, 0, 0, 0,142, 67, 0,128, 86,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,133, 67, 0, 64, 57,196, 0, 0, 0, 0, 11, 1, 0, 0, 28, 1, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, + 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0, 28, 1,229, 2, 11, 1,229, 2, 0, 0,120,196, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0, +136, 6, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1,229, 2, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,185,245, 2, +192,142,117, 3,208,255,104, 3,136,112, 11, 3,136,165, 11, 3,248,142, 9, 3, 56,147, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,136,112, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 48,114, 11, 3, 0, 0, 0, 0,216,185,245, 2, + 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,220,255, 11, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 48,114, 11, 3, +198, 0, 0, 0, 1, 0, 0, 0,216,115, 11, 3,136,112, 11, 3,120,139, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 11, 1, 61, 0, + 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,216,115, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,128,117, 11, 3, + 48,114, 11, 3,144,141, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, + 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0,128,117, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 40,119, 11, 3,216,115, 11, 3,168,143, 3, 3, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,140,254, 11, 1,203, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 40,119, 11, 3,198, 0, 0, 0, + 1, 0, 0, 0,208,120, 11, 3,128,117, 11, 3,192,145, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110, +116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110, +116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254, 11, 1, 58, 0, 20, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208,120, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,120,122, 11, 3, 40,119, 11, 3, +216,147, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 70,117,108,108, 32, 83, 97,109,112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254, 11, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +120,122, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 32,124, 11, 3,208,120, 11, 3,240,149, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100, +105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,253, + 11, 1,102, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32,124, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, +200,125, 11, 3,120,122, 11, 3, 8,152, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,253, 11, 1,130, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,200,125, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,112,127, 11, 3, 32,124, 11, 3, 56,156, 3, 3, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,242,252, 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,112,127, 11, 3, +198, 0, 0, 0, 1, 0, 0, 0, 24,129, 11, 3,200,125, 11, 3, 80,158, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, + 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218,252, 11, 1, 0, 0, + 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 24,129, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,192,130, 11, 3, +112,127, 11, 3,104,160, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,252, 11, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0,192,130, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,104,132, 11, 3, 24,129, 11, 3,128,162, 3, 3, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,170,252, 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,104,132, 11, 3,198, 0, 0, 0, + 1, 0, 0, 0, 16,134, 11, 3,192,130, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99, +111,110,116,101,120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99, +111,110,116,101,120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41,255, 7, 1,179, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 16,134, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,184,135, 11, 3,104,132, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102,254, 7, 1,171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +184,135, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 96,137, 11, 3, 16,134, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,110,102,108, +117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,253, + 7, 1, 36, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 96,137, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, + 8,139, 11, 3,184,135, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111, +109, 95,112,114,111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111, +109, 95,112,114,111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,117,115,116,111,109, 32, 80,114,111,112,101,114,116,105,101, +115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,253, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0, 8,139, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,176,140, 11, 3, 96,137, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 87,254, 7, 1,186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,176,140, 11, 3, +198, 0, 0, 0, 1, 0, 0, 0, 88,142, 11, 3, 8,139, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,253, 7, 1, 36, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 88,142, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 0,144, 11, 3, +176,140, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109, +112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109, +112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 32, 83, 97,109,112,108,105,110,103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,252, 7, 1,212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0, 0,144, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,168,145, 11, 3, 88,142, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 73,109, 97,103,101, 32, 77, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,251, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,168,145, 11, 3,198, 0, 0, 0, + 1, 0, 0, 0, 80,147, 11, 3, 0,144, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99, +111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99, +111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114,115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,254, 7, 1, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80,147, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,248,148, 11, 3,168,145, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161,253, 7, 1,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +248,148, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,160,150, 11, 3, 80,147, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,119,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,119,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,111,100, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139,253, + 7, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,160,150, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, + 72,152, 11, 3,248,148, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105, +110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105, +110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0, 72,152, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,240,153, 11, 3,160,150, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,123,253, 7, 1,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,240,153, 11, 3, +198, 0, 0, 0, 1, 0, 0, 0,152,155, 11, 3, 72,152, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,105,110,116, 32, 68,101, +110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,253, 7, 1,179, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,152,155, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 64,157, 11, 3, +240,153, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115, +105,116,121, 95,116,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115, +105,116,121, 95,116,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,253, 7, 1,102, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0, 64,157, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,232,158, 11, 3,152,155, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,139,253, 7, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,232,158, 11, 3,198, 0, 0, 0, + 1, 0, 0, 0,144,160, 11, 3, 64,157, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, + 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, + 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,253, 7, 1,183, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,144,160, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 56,162, 11, 3,232,158, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, + 56,162, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,224,163, 11, 3,144,160, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,100,105,115,116,111,114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,100,105,115,116,111,114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,116, +111,114,116,101,100, 32, 78,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211,253, + 7, 1,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,224,163, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, +136,165, 11, 3, 56,162, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,254, 7, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,136,165, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224,163, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,183,253, 7, 1,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 48,167, 11, 3, +165, 0, 0, 0, 1, 0, 0, 0,240,173, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,248,135, 91, 3,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,112,168, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,208,169, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 51, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,169, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, + 48,171, 11, 3,112,168, 11, 3, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, + 0, 64,101,196, 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0, +149, 3,223, 0,149, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0, +148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 48,171, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,144,172, 11, 3,208,169, 11, 3, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, + 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, + 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,153, 5, 60, 0,153, 5, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240, 0, 0, 0,136, 6, 0, 0, 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +153, 5, 60, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144,172, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,171, 11, 3, + 0, 0, 0, 0, 0,128,175, 68, 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0, +136, 5, 0, 0,153, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 2, 0, 3, 3, 2, 0, 0, 4, 6, 0,153, 5, 89, 3,136, 5, 89, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0,240,173, 11, 3,168, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 48,167, 11, 3,112,168, 11, 3,144,172, 11, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, + 68, 65, 84, 65, 96, 0, 0, 0,144,174, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, 56,179, 11, 3, 0,109, 11, 3,216, 90, 11, 3, +136, 95, 11, 3, 0, 96, 11, 3,168, 93, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, + 15, 15,108, 5, 80, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,147,245, 2, 24,178, 11, 3, 24,178, 11, 3, 88,175, 11, 3, +184,176, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,168,143, 9, 3, 96,131, 9, 3, 68, 65, 84, 65,248, 0, 0, 0, 88,175, 11, 3, +200, 0, 0, 0, 1, 0, 0, 0,184,176, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,137, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0,128,173, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,108, 5, 26, 0,108, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +107, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 26, 0, + 5, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,149,245, 2, +120,233,244, 2,120,233,244, 2, 0, 0, 0, 0, 0, 0, 0, 0,136,149, 10, 3,152,151, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,184,176, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88,175, 11, 3, 0, 0, 64,192, + 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +107, 5, 0, 0, 18, 0, 0, 0, 53, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, + 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,108, 5, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 26, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 54, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,104,148,245, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,152, 10, 3, +224,157, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 24,178, 11, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,120, 30, 9, 3,199, 0, 0, 0, 1, 0, 0, 0, 64, 35, 9, 3,208, 25, 9, 3,128, 7, 9, 3,112, 8, 9, 3, - 8, 7, 9, 3,248, 7, 9, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,186, 2, 0, 0, 4, 4,234, 0, -122, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 9, 3, 0, 34, 9, 3, 64, 31, 9, 3,160, 32, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64, 31, 9, 3,200, 0, 0, 0, - 1, 0, 0, 0,160, 32, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, - 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, - 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, -156, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,160, 32, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 31, 9, 3, 0, 0, 0, 0, 0, 0,105, 67, - 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 88, 67, 0,192, 22,196, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, - 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, - 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0, 91, 2,217, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,155, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,234, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 0, 34, 9, 3,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 64, 35, 9, 3, -199, 0, 0, 0, 1, 0, 0, 0,248, 47, 9, 3,120, 30, 9, 3, 80, 10, 9, 3,216, 9, 9, 3, 96, 9, 9, 3,200, 10, 9, 3, - 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 1, 1, 19, 2, 20, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 46, 9, 3,152, 46, 9, 3, 8, 36, 9, 3,136, 41, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8, 36, 9, 3,200, 0, 0, 0, 1, 0, 0, 0,104, 37, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 4, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 19, 2, 26, 0, 19, 2, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104, 37, 9, 3, -200, 0, 0, 0, 1, 0, 0, 0,200, 38, 9, 3, 8, 36, 9, 3, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, - 1, 2, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,250, 0, - 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,200, 38, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 40, 40, 9, 3,104, 37, 9, 3, 0, 0, 0, 0, - 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0, -160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40, 40, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, -136, 41, 9, 3,200, 38, 9, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, - 0, 0,184,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, -130, 1,163, 0,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, - 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -136, 41, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 40, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232, 42, 9, 3, 68, 65, 84, 65, 72, 3, 0, 0,232, 42, 9, 3,159, 0, 0, 0, 1, 0, 0, 0, 37,101,230, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249,173,116, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, - 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, - 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63, -192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, - 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191, -244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, - 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, 80, 25,195, 62,218,249,206, 62, - 0,237,196,187, 0, 0, 96,179,234, 2,170,189,191, 98,167, 61, 1,208,111, 62, 0, 0,224, 49,254,120, 21,194,182, 5, 2, 66, - 70,136,213,193,239,214,159,192, 5, 39, 19, 66, 15,174,255,193,217,101,210, 65,219, 40,160, 64,221,149, 47, 63, 85,126,162,190, - 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, - 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191, -244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, - 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, - 44, 8, 90,190, 2, 35,171,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,223, 34, 9, 59, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190, -237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,152, 46, 9, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 88, 25, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, - 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,248, 47, 9, 3,199, 0, 0, 0, 1, 0, 0, 0, -216, 52, 9, 3, 64, 35, 9, 3,232, 8, 9, 3,144, 6, 9, 3,112, 8, 9, 3, 96, 9, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 16, 16, 20, 4,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 51, 9, 3,128, 51, 9, 3,192, 48, 9, 3, 32, 50, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,192, 48, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 32, 50, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 50, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,192, 48, 9, 3, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,110,142,241,195, 55,199,120, 68, -240, 80,128,193,136, 2, 4, 68, 3, 4, 0, 0, 20, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,250, 70, 0, 0,250, 70,236, 81,184, 61, 10,215, 19, 64, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 20, 4, -140, 1, 3, 4,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 47, 1, 0, 0, -186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,244, 0, 0, 0, -128, 51, 9, 3,177, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 19, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 61,181, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0,216, 52, 9, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248, 47, 9, 3,176, 4, 9, 3, -232, 8, 9, 3,216, 9, 9, 3, 80, 10, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, - 6, 6, 0, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 57, 9, 3,192, 57, 9, 3,160, 53, 9, 3, - 96, 56, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160, 53, 9, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 55, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 0, 2, 26, 0, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 0, 55, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 96, 56, 9, 3,160, 53, 9, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96, 56, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 55, 9, 3, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0,191, 0, 0,192, 63, - 0, 0, 64, 60, 0, 0,125, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 26, 0, 0, 0, - 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0, -192, 57, 9, 3,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,216, 91, 9, 3,195, 0, 0, 0, 1, 0, 0, 0,216, 20, 10, 3,192, 3, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 92, 9, 3,240, 97, 9, 3,104, 98, 9, 3,232,106, 9, 3,104,107, 9, 3, -144,187, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,117,170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200, 92, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, 64, 93, 9, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64, 93, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, -184, 93, 9, 3,200, 92, 9, 3, 0, 0, 0, 0, 0, 0,202, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184, 93, 9, 3, -196, 0, 0, 0, 1, 0, 0, 0, 48, 94, 9, 3, 64, 93, 9, 3, 0, 0, 0, 0,136, 6,202, 3, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 48, 94, 9, 3,196, 0, 0, 0, 1, 0, 0, 0,168, 94, 9, 3,184, 93, 9, 3, 0, 0, 0, 0,136, 6, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168, 94, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 95, 9, 3, 48, 94, 9, 3, - 0, 0, 0, 0, 0, 0,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 95, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, -152, 95, 9, 3,168, 94, 9, 3, 0, 0, 0, 0,136, 6,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152, 95, 9, 3, -196, 0, 0, 0, 1, 0, 0, 0, 16, 96, 9, 3, 32, 95, 9, 3, 0, 0, 0, 0,108, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 16, 96, 9, 3,196, 0, 0, 0, 1, 0, 0, 0,136, 96, 9, 3,152, 95, 9, 3, 0, 0, 0, 0,108, 5,175, 3, - 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136, 96, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 97, 9, 3, 16, 96, 9, 3, - 0, 0, 0, 0,108, 5, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 97, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, -120, 97, 9, 3,136, 96, 9, 3, 0, 0, 0, 0,136, 6, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120, 97, 9, 3, -196, 0, 0, 0, 1, 0, 0, 0,240, 97, 9, 3, 0, 97, 9, 3, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,240, 97, 9, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120, 97, 9, 3, 0, 0, 0, 0,108, 5, 80, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104, 98, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 98, 9, 3, 0, 0, 0, 0, - 64, 93, 9, 3,184, 93, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 98, 9, 3,197, 0, 0, 0, - 1, 0, 0, 0,104, 99, 9, 3,104, 98, 9, 3, 64, 93, 9, 3,168, 94, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,104, 99, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 99, 9, 3,232, 98, 9, 3,184, 93, 9, 3, 32, 95, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 99, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,104,100, 9, 3, -104, 99, 9, 3,168, 94, 9, 3, 32, 95, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,100, 9, 3, -197, 0, 0, 0, 1, 0, 0, 0,232,100, 9, 3,232, 99, 9, 3,200, 92, 9, 3,152, 95, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,232,100, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,104,101, 9, 3,104,100, 9, 3, 48, 94, 9, 3, -152, 95, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,101, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, -232,101, 9, 3,232,100, 9, 3,168, 94, 9, 3, 16, 96, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -232,101, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,104,102, 9, 3,104,101, 9, 3, 32, 95, 9, 3, 16, 96, 9, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,102, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,232,102, 9, 3,232,101, 9, 3, -152, 95, 9, 3,136, 96, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232,102, 9, 3,197, 0, 0, 0, - 1, 0, 0, 0,104,103, 9, 3,104,102, 9, 3, 16, 96, 9, 3,136, 96, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,104,103, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,232,103, 9, 3,232,102, 9, 3, 32, 95, 9, 3, 0, 97, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232,103, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,104,104, 9, 3, -104,103, 9, 3, 48, 94, 9, 3, 0, 97, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,104, 9, 3, -197, 0, 0, 0, 1, 0, 0, 0,232,104, 9, 3,232,103, 9, 3,136, 96, 9, 3, 0, 97, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,232,104, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,104,105, 9, 3,104,104, 9, 3,200, 92, 9, 3, -120, 97, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,105, 9, 3,197, 0, 0, 0, 1, 0, 0, 0, -232,105, 9, 3,232,104, 9, 3,168, 94, 9, 3,120, 97, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -232,105, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,104,106, 9, 3,104,105, 9, 3, 16, 96, 9, 3,240, 97, 9, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,106, 9, 3,197, 0, 0, 0, 1, 0, 0, 0,232,106, 9, 3,232,105, 9, 3, -152, 95, 9, 3,240, 97, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232,106, 9, 3,197, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,104,106, 9, 3,120, 97, 9, 3,240, 97, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,104,107, 9, 3,199, 0, 0, 0, 1, 0, 0, 0,240,110, 9, 3, 0, 0, 0, 0,168, 94, 9, 3, 64, 93, 9, 3, -184, 93, 9, 3, 32, 95, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,176, 3, 0, 0,202, 3, 0, 0, 7, 7,137, 6, - 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 8, 0,240,187,243, 2, 64, 20, 10, 3, 64, 20, 10, 3, 48,108, 9, 3,144,109, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0,128,127, 1, 3,112, 2,243, 2, 68, 65, 84, 65,248, 0, 0, 0, 48,108, 9, 3,200, 0, 0, 0, - 1, 0, 0, 0,144,109, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, - 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, -176, 3, 0, 0,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, 2, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,189,243, 2,104,218,102, 3, -104,218,102, 3, 0, 0, 0, 0, 0, 0, 0, 0,152,134, 7, 3, 0,139, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,144,109, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,108, 9, 3, 0, 0, 0, 0, 0,240,109, 69, - 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, - 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, - 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 3, 0, 0,202, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,224,188,243, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,240,110, 9, 3,199, 0, 0, 0, 1, 0, 0, 0,128,176, 9, 3, -104,107, 9, 3,152, 95, 9, 3,136, 96, 9, 3, 0, 97, 9, 3, 48, 94, 9, 3, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, - 0, 0, 0, 0, 3, 3, 0, 0, 4, 4, 28, 1, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 40,184,243, 2, 32,169, 9, 3, -224,175, 9, 3,184,111, 9, 3, 24,113, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 80,220,242, 2,104,132, 7, 3, 68, 65, 84, 65, -248, 0, 0, 0,184,111, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 24,113, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,142, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, - 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 28, 1, 31, 0, 28, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0,229, 2, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 28, 1, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48,187,243, 2, 32, 87,102, 3, 32, 87,102, 3, 0, 0, 0, 0, 0, 0, 0, 0,224,141, 7, 3, 72,144, 8, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24,113, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -184,111, 9, 3, 0, 0, 0, 0, 0, 0,142, 67, 0,128, 86,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,133, 67, 0, 64, 57,196, - 0, 0, 0, 0, 11, 1, 0, 0, 28, 1, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 28, 1,229, 2, 11, 1, -229, 2, 0, 0,232,192, 88, 3, 1, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1,229, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,185,243, 2, 8, 46,106, 3,192, 68,102, 3,120,114, 9, 3, -120,167, 9, 3,120,145, 8, 3, 24,149, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,120,114, 9, 3, -198, 0, 0, 0, 1, 0, 0, 0, 32,116, 9, 3, 0, 0, 0, 0,216,185,243, 2, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, - 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, - 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255, 11, 1, 36, 0, - 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32,116, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,200,117, 9, 3, -120,114, 9, 3, 0,140, 1, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 11, 1, 61, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,200,117, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,112,119, 9, 3, 32,116, 9, 3, 24,142, 1, 3, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,111,255, 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,112,119, 9, 3,198, 0, 0, 0, - 1, 0, 0, 0, 24,121, 9, 3,200,117, 9, 3, 48,144, 1, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105, -109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105, -109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254, 11, 1,203, 0, 0, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 24,121, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,192,122, 9, 3,112,119, 9, 3, - 72,146, 1, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254, 11, 1, 58, 0, 20, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -192,122, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,104,124, 9, 3, 24,121, 9, 3, 96,148, 1, 3, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,117,108,108, - 32, 83, 97,109,112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254, - 11, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,104,124, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, - 16,126, 9, 3,192,122, 9, 3,120,150, 1, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,253, 11, 1,102, 0, 0, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0, 16,126, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,184,127, 9, 3,104,124, 9, 3,144,152, 1, 3, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 10,253, 11, 1,130, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,184,127, 9, 3, -198, 0, 0, 0, 1, 0, 0, 0, 96,129, 9, 3, 16,126, 9, 3,192,156, 1, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97, -110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,252, 11, 1, 0, 0, - 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 96,129, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 8,131, 9, 3, -184,127, 9, 3,216,158, 1, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101, -115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101, -115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218,252, 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, - 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 8,131, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,176,132, 9, 3, 96,129, 9, 3,240,160, 1, 3, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,194,252, 11, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,176,132, 9, 3,198, 0, 0, 0, - 1, 0, 0, 0, 88,134, 9, 3, 8,131, 9, 3, 8,163, 1, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97, -107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97, -107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,252, 11, 1, 0, 0, 0, 0, 0, 0, - 4, 0, 7, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 88,134, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 0,136, 9, 3,176,132, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,116,101,120,116,117, -114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,116,101,120,116,117, -114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41,255, 7, 1,179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 0,136, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,168,137, 9, 3, 88,134, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,112,112, -105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102,254, - 7, 1,171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,168,137, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, - 80,139, 9, 3, 0,136, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117, -101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117, -101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,253, 7, 1, 36, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0, 80,139, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,248,140, 9, 3,168,137, 9, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114,111,112,115, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114,111,112,115, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 67,117,115,116,111,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 18,253, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,248,140, 9, 3, -198, 0, 0, 0, 1, 0, 0, 0,160,142, 9, 3, 80,139, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,101,118,105,101,119, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,254, 7, 1,186, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,160,142, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 72,144, 9, 3, -248,140, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,253, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 72,144, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,240,145, 9, 3,160,142, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 73,109, 97,103,101, 32, 83, 97,109,112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 84,252, 7, 1,212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,240,145, 9, 3,198, 0, 0, 0, - 1, 0, 0, 0,152,147, 9, 3, 72,144, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105, -109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105, -109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 32, 77, 97,112,112,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 7, 1, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,152,147, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 64,149, 9, 3,240,145, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,254, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 64,149, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,232,150, 9, 3,152,147, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,108,111,117, -100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161,253, - 7, 1,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,232,150, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, -144,152, 9, 3, 64,149, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,119,111,111,100, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,119,111,111,100, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139,253, 7, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,144,152, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 56,154, 9, 3,232,150, 9, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 56,154, 9, 3, -198, 0, 0, 0, 1, 0, 0, 0,224,155, 9, 3,144,152, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,111,114,111,110,111,105, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123,253, 7, 1,196, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,224,155, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,136,157, 9, 3, - 56,154, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115, -105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115, -105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,105,110,116, 32, 68,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,253, 7, 1,179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,136,157, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 48,159, 9, 3,224,155, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95,116,117,114, 98,117,108,101,110, - 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95,116,117,114, 98,117,108,101,110, - 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 14,253, 7, 1,102, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 48,159, 9, 3,198, 0, 0, 0, - 1, 0, 0, 0,216,160, 9, 3,136,157, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, -117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, -117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77,117,115,103,114, 97,118,101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139,253, 7, 1,180, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,216,160, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,128,162, 9, 3, 48,159, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,253, 7, 1,183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -128,162, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 40,164, 9, 3,216,160, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,103,105, - 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,254, - 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 40,164, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, -208,165, 9, 3,128,162, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,100,105,115,116,111, -114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,100,105,115,116,111, -114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,116,111,114,116,101,100, 32, 78,111,105,115,101, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211,253, 7, 1,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,208,165, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,120,167, 9, 3, 40,164, 9, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 66,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2,254, 7, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,120,167, 9, 3, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,165, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,117, 99, 99,105, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,183,253, 7, 1,136, 0, + 96, 0, 0, 0, 56,179, 11, 3,199, 0, 0, 0, 1, 0, 0, 0,160,185, 11, 3,144,174, 11, 3,152, 94, 11, 3, 32, 94, 11, 3, + 48, 93, 11, 3, 16, 95, 11, 3, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, 5, 3, 0, 0,174, 3, 0, 0, 3, 3, 28, 1, +170, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,145,245, 2,192,182, 11, 3,192,182, 11, 3, 0,180, 11, 3, 96,181, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0,232,147, 10, 3,136,137, 9, 3, 68, 65, 84, 65,248, 0, 0, 0, 0,180, 11, 3,200, 0, 0, 0, + 1, 0, 0, 0, 96,181, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0,142, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, + 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0, 28, 1, 26, 0, 28, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, +149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 26, 0, 7, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,146,245, 2,200,217,107, 3, +200,217,107, 3, 0, 0, 0, 0, 0, 0, 0, 0,192,160, 10, 3,208,162, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 96,181, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,180, 11, 3, 0, 0, 0, 0, 0,128,131, 67, + 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,133, 67, 0, 0,252,194, 0, 0, 0, 0, 11, 1, 0, 0, 28, 1, 0, 0, + 18, 0, 0, 0,143, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, + 18, 0, 0, 0,143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 18, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 28, 1,144, 0, 11, 1,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, 5, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 28, 1,144, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,248,145,245, 2, 32, 82,104, 3, 32, 82,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,164, 10, 3, 40,166, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,192,182, 11, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 32,169, 9, 3,165, 0, 0, 0, 1, 0, 0, 0,224,175, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,249,109, 3,240,249,109, 3, 32,184, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, - 0, 0, 0, 0, 32,133, 89, 3,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,170, 9, 3, -200, 0, 0, 0, 1, 0, 0, 0,192,171, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,192,171, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 32,173, 9, 3, 96,170, 9, 3, 0, 0, 0, 0, - 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, 0, 0, 0, 0,223, 0, 0, 0, -240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0,149, 3,223, 0,149, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,173, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, -128,174, 9, 3,192,171, 9, 3, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, - 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, - 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,153, 5, - 60, 0,153, 5, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 89, 3, 0, 0, -148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, 0, 0, 4, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -128,174, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32,173, 9, 3, 0, 0, 0, 0, 0,128,175, 68, 0, 0,137,195, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0,136, 5, 0, 0,153, 5, 0, 0, 0, 0, 0, 0, - 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, - 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, - 2, 0, 3, 3, 2, 0, 0, 4, 6, 0,153, 5, 89, 3,136, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0,224,175, 9, 3,168, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32,169, 9, 3, - 96,170, 9, 3,128,174, 9, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,128,176, 9, 3, -199, 0, 0, 0, 1, 0, 0, 0, 40,181, 9, 3,240,110, 9, 3,200, 92, 9, 3,120, 97, 9, 3,240, 97, 9, 3,152, 95, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 15, 15,108, 5, 80, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0,120,147,243, 2, 8,180, 9, 3, 8,180, 9, 3, 72,177, 9, 3,168,178, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, -248,132, 7, 3,176,139, 7, 3, 68, 65, 84, 65,248, 0, 0, 0, 72,177, 9, 3,200, 0, 0, 0, 1, 0, 0, 0,168,178, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128,137, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,173, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, + 32,184, 11, 3,223, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,144,184, 11, 3, 68, 65, 84, 65,168, 0, 0, 0, +144,184, 11, 3,222, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 72,254, 12, 3, 19, 0, 0, 0, 1, 0, 1, 0, + 72,254, 12, 3, 20, 0, 0, 0, 1, 0, 1, 0, 72,254, 12, 3, 21, 0, 1, 0, 1, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 8, 21, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,168, 27, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,176,110, 14, 3, + 0, 0, 0, 0, 1, 0, 1, 0,240, 37, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,192,203, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, +176, 33, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,184, 16, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,104, 23, 13, 3, 0, 0, 0, 0, + 1, 0, 1, 0,232, 15, 13, 3, 21, 0, 0, 0, 1, 0, 1, 0, 72,254, 12, 3, 68, 65, 84, 65, 96, 0, 0, 0,160,185, 11, 3, +199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,179, 11, 3,136, 95, 11, 3,184, 92, 11, 3, 32, 94, 11, 3, 0, 96, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 81, 0, 0, 0,174, 3, 0, 0, 1, 1,108, 5, 94, 3, 1, 0, 0, 0, 0, 0, + 0, 0, 8, 0,232,149,245, 2,128,218, 11, 3,176, 17, 12, 3,104,186, 11, 3,112,213, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 24,138, 9, 3,216,166, 10, 3, 68, 65, 84, 65,248, 0, 0, 0,104,186, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,200,187, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,173, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, + 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,108, 5, 26, 0,108, 5, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 26, 0, 5, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,149,243, 2, 8,224, 90, 3, 8,224, 90, 3, 0, 0, 0, 0, - 0, 0, 0, 0,248,151, 8, 3, 8,154, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,178, 9, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72,177, 9, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, -112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 18, 0, 0, 0, 53, 0, 0, 0, - 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, - 4, 0, 0, 4, 8, 0,108, 5, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 5, 0, 0, 26, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 54, 0, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,148,243, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,155, 8, 3, 80,160, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,188, 0, 0, 0, 8,180, 9, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 81, 0, 0, 0,106, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 26, 0, 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,159,245, 2,120,201, 90, 3,120,201, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0,184,170, 10, 3, 72, 64, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200,187, 11, 3, +200, 0, 0, 0, 1, 0, 0, 0, 8,209, 11, 3,104,186, 11, 3, 0, 0, 0, 0, 0, 0, 32, 67, 0, 0, 27,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67, 0, 0, 27,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,107, 2, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,107, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,160, 0,108, 2,143, 0,108, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +159, 0, 0, 0, 67, 1, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,108, 2, + 10, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0,160, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,156,245, 2, +208, 66,105, 3,208, 66,105, 3, 40,189, 11, 3,184,220,112, 3,120, 65, 3, 3,136, 67, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0, 40,189, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,208,190, 11, 3, 0, 0, 0, 0,224, 82, 9, 3, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 42,254,143, 0,190, 1, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 40,181, 9, 3,199, 0, 0, 0, - 1, 0, 0, 0,144,187, 9, 3,128,176, 9, 3,136, 96, 9, 3, 16, 96, 9, 3, 32, 95, 9, 3, 0, 97, 9, 3, 0, 0, 0, 0, -109, 5, 0, 0,136, 6, 0, 0, 5, 3, 0, 0,174, 3, 0, 0, 3, 3, 28, 1,170, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,145,243, 2,176,184, 9, 3,176,184, 9, 3,240,181, 9, 3, 80,183, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 64,140, 7, 3, -200,149, 8, 3, 68, 65, 84, 65,248, 0, 0, 0,240,181, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 80,183, 9, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,142, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 28, 1, 26, 0, 28, 1, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 26, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,146,243, 2,240,113,101, 3,240,113,101, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 48,163, 8, 3, 64,165, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,183, 9, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,240,181, 9, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128,133, 67, 0, 0,252,194, 0, 0, 0, 0, 11, 1, 0, 0, 28, 1, 0, 0, 18, 0, 0, 0,143, 0, 0, 0, 0, 0, 0, 0, - 10, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0,143, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, - 6, 0, 28, 1,144, 0, 11, 1,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, - 5, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1,144, 0, 8, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,145,243, 2, 40,250,105, 3, - 40,250,105, 3, 0, 0, 0, 0, 0, 0, 0, 0,112,166, 8, 3,152,168, 8, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -252, 0, 0, 0,176,184, 9, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 56,208,101, 3, 56,208,101, 3, 16,186, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 16,186, 9, 3,223, 0, 0, 0, 1, 0, 0, 0, - 14, 0, 0, 0, 14, 0, 0, 0,128,186, 9, 3, 68, 65, 84, 65,168, 0, 0, 0,128,186, 9, 3,222, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 48, 0, 11, 3, 19, 0, 0, 0, 1, 0, 1, 0, 48, 0, 11, 3, 20, 0, 0, 0, 1, 0, 1, 0, - 48, 0, 11, 3, 21, 0, 1, 0, 1, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,240, 22, 11, 3, 0, 0, 0, 0, - 1, 0, 1, 0,152, 29, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,160,112, 12, 3, 0, 0, 0, 0, 1, 0, 1, 0,224, 39, 11, 3, - 0, 0, 0, 0, 1, 0, 1, 0,176,205, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,160, 35, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0, -160, 18, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0, 88, 25, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,208, 17, 11, 3, 21, 0, 0, 0, - 1, 0, 1, 0, 48, 0, 11, 3, 68, 65, 84, 65, 96, 0, 0, 0,144,187, 9, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 40,181, 9, 3,120, 97, 9, 3,168, 94, 9, 3, 16, 96, 9, 3,240, 97, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, - 81, 0, 0, 0,174, 3, 0, 0, 1, 1,108, 5, 94, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0,232,149,243, 2,112,220, 9, 3, -160, 19, 10, 3, 88,188, 9, 3, 96,215, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 88,150, 8, 3,104,253, 88, 3, 68, 65, 84, 65, -248, 0, 0, 0, 88,188, 9, 3,200, 0, 0, 0, 1, 0, 0, 0,184,189, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,173, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,108, 5, 26, 0,108, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 81, 0, 0, 0,106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,108, 5, 26, 0, 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 56,159,243, 2,232, 60,104, 3,232, 60,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, 40,173, 8, 3, 16, 65, 1, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,189, 9, 3,200, 0, 0, 0, 1, 0, 0, 0,248,210, 9, 3, - 88,188, 9, 3, 0, 0, 0, 0, 0, 0, 32, 67, 0, 0, 27,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 0, 27,196, - 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,107, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,107, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,108, 2,143, 0, -108, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0, 67, 1, 0, 0,174, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,108, 2, 10, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, -160, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,156,243, 2, 64, 30,243, 2, 64, 30,243, 2, 24,191, 9, 3, - 80,209, 9, 3, 64, 66, 1, 3, 80, 68, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 24,191, 9, 3, -198, 0, 0, 0, 1, 0, 0, 0,192,192, 9, 3, 0, 0, 0, 0,136, 83, 7, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208,190, 11, 3, +198, 0, 0, 0, 1, 0, 0, 0,120,192, 11, 3, 40,189, 11, 3, 0,108, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84, -111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,254,143, 0,190, 1, - 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,114,117,115,104, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90,254,143, 0,142, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,192,192, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,104,194, 9, 3, - 24,191, 9, 3,168,108, 7, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,120,192, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 32,194, 11, 3, +208,190, 11, 3, 24,110, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115, +104, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +104, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117,254,143, 0,115, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,252,143, 0,213, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,104,194, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 16,196, 9, 3,192,192, 9, 3,192,110, 7, 3, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101,120,116,117,114,101, 0, 0, 0, + 64, 1, 0, 0, 32,194, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,200,195, 11, 3,120,192, 11, 3, 48,112, 9, 3, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101,120,116,117,114,101, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,136,252,143, 0,213, 1, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,127,253,143, 0,195, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 16,196, 9, 3,198, 0, 0, 0, - 1, 0, 0, 0,184,197, 9, 3,104,194, 9, 3,216,112, 7, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,200,195, 11, 3,198, 0, 0, 0, + 1, 0, 0, 0,112,197, 11, 3, 32,194, 11, 3, 72,114, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95, 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,114,111,107,101, 0, 0, 0, 0, 0, 0, +111,108,115, 95, 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130,253,143, 0,195, 0, 0, 0, 0, 0, - 4, 0, 4, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,253,143, 0,231, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,184,197, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 96,199, 9, 3, 16,196, 9, 3, -240,114, 7, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 99,117, -114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 99,117, -114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 67,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,112,197, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 24,199, 11, 3,200,195, 11, 3, + 96,116, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112, +112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112, +112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,253,143, 0,231, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,253,143, 0, 91, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 96,199, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 8,201, 9, 3,184,197, 9, 3, 8,117, 7, 3, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, + 24,199, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,192,200, 11, 3,112,197, 11, 3,120,118, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, + 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101, - 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76,253, -143, 0,153, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166,253, +143, 0, 36, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 8,201, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, -176,202, 9, 3, 96,199, 9, 3, 32,119, 7, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, - 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, - 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,192,200, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, +104,202, 11, 3, 24,199, 11, 3,144,120, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, + 95,115,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, + 95,115,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,169,253,143, 0, 36, 0, 0, 0, 0, 0, 4, 0, 4, 0, - 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,253,143, 0,225, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,176,202, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 88,204, 9, 3, 8,201, 9, 3, 56,121, 7, 3, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109,109,101,116,114,121, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,104,202, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 16,204, 11, 3,192,200, 11, 3,168,122, 9, 3, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109,109,101,116,114,121, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,142,253,143, 0,135, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 73,253,143, 0,132, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 88,204, 9, 3, -198, 0, 0, 0, 1, 0, 0, 0, 0,206, 9, 3,176,202, 9, 3, 80,123, 7, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 16,204, 11, 3, +198, 0, 0, 0, 1, 0, 0, 0,184,205, 11, 3,104,202, 11, 3,200, 80, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,173,253,143, 0, 80, 0, - 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,101,105,103,104,116, 32, 84, +111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,254,143, 0,124, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 0,206, 9, 3,198, 0, 0, 0, 1, 0, 0, 0,168,207, 9, 3, - 88,204, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103, -104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,184,205, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 96,207, 11, 3, + 16,204, 11, 3,216,126, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103, +104,116,112, 97,105,110,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103, -104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,101,105,103,104,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108,255,183, 0,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +104,116,112, 97,105,110,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123,253,143, 0,124, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,168,207, 9, 3,198, 0, 0, 0, 1, 0, 0, 0, 80,209, 9, 3, 0,206, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 95,111,112,116,105, -111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 95,111,112,116,105, -111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 1, 0, 0, 96,207, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,184,220,112, 3,184,205, 11, 3,248,144, 9, 3, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 39,253,183, 0,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,114,111,106,101, 99,116, 32, 80, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,241,252,143, 0, 9, 1, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80,209, 9, 3,198, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,168,207, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,184,220,112, 3,198, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 96,207, 11, 3,192,124, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95,118,101,114,116,101,120,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,111,106,101, 99,116, 32, 80, 97,105,110, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157,252,183, 0, 9, 1, 20, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +111,108,115, 95,118,101,114,116,101,120,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,254,143, 0, 80, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,210, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 0,214, 9, 3,184,189, 9, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,209, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 16,212, 11, 3,200,187, 11, 3, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0, 90,195, 0, 0, 0, 0, 0, 0, 0, 0,227,102, 16, 67, 24, 30, 90,195, 0, 0, 0, 0, 143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,216, 0,143, 0,216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,107, 0, 0, 0, 66, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,216, 0, 11, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,157,243, 2,224,208,114, 3,224,208,114, 3, 88,212, 9, 3, 88,212, 9, 3, -128, 69, 1, 3,144, 71, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 88,212, 9, 3,198, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,157,243, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,157,245, 2, 40, 23,113, 3, 40, 23,113, 3,104,210, 11, 3,104,210, 11, 3, +184, 68, 3, 3,200, 70, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,104,210, 11, 3,198, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,157,245, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97, 115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97, 115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,101,114, 97,116,111,114, 0,100, 32, 69, -120,101, 99,117,116,101, 0,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 32, 80, 97,105,110, +116, 32, 84,111,103,103,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,255,144, 0, 16, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0,214, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 96,215, 9, 3,248,210, 9, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,212, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,112,213, 11, 3, 8,209, 11, 3, 0, 0, 0, 0, 0, 0, 52, 67, 0,192,115,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,115,196, 0, 0, 0, 0, 163, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,207, 3,163, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0,107, 5, 0, 0,107, 0, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,151,243, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,215, 9, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0,214, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,151,245, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,213, 11, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 16,212, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 0, 0,107, 5, 0, 0, -107, 0, 0, 0,174, 3, 0, 0,160, 0, 0, 0,107, 5, 0, 0,107, 0, 0, 0,174, 3, 0, 0,204, 4, 68, 3, 12, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,150,243, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,100, 1, 3,224, 99, 1, 3, 0, 0, 0, 0,192,216, 9, 3, 68, 65, 84, 65, - 72, 3, 0, 0,192,216, 9, 3,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +107, 0, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,204, 4, 68, 3, 12, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,150,245, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 99, 3, 3, 24, 99, 3, 3, 0, 0, 0, 0,208,214, 11, 3, 68, 65, 84, 65, + 72, 3, 0, 0,208,214, 11, 3,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92,165,205, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,218,205, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, @@ -1695,7 +1705,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,220,161,108, 65,158,210,111, 65, 86, 68,214, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 68,214, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 68,214, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, -158,210,111, 65,203,189,102, 65, 0, 0, 0, 0, 0, 0, 0, 0,184, 44,195, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +158,210,111, 65,162,123, 94, 65, 0, 0, 0, 0, 0, 0, 0, 0,184, 44,195, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1705,15 +1715,15 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 30, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -112,220, 9, 3,160, 0, 0, 0, 1, 0, 0, 0,144,224, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +128,218, 11, 3,160, 0, 0, 0, 1, 0, 0, 0,160,222, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 88, 25, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104, 23, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 24, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 64,156, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,221, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 48,223, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,219, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 64,221, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 48, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,197, 68, 0, 0,200, 65, 0,224,197, 68, 0, 0,200, 65, @@ -1721,8 +1731,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,223, 9, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,208,221, 9, 3, 0, 0, 0, 0, 0,128,241, 67, 0,128, 90,196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,221, 11, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,224,219, 11, 3, 0, 0, 0, 0, 0,128,241, 67, 0,128, 90,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,195, 68, 0, 64,111,196, 0, 0, 0, 0, 31, 6, 0, 0, 48, 6, 0, 0, 18, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, 30, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 30, 6, 0, 0, 18, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, @@ -1730,21 +1740,21 @@ char datatoc_startup_blend[]= { 119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -252, 0, 0, 0,144,224, 9, 3,169, 0, 0, 0, 1, 0, 0, 0,160,236, 9, 3,112,220, 9, 3,208,221, 9, 3, 48,223, 9, 3, +252, 0, 0, 0,160,222, 11, 3,169, 0, 0, 0, 1, 0, 0, 0,176,234, 11, 3,128,218, 11, 3,224,219, 11, 3, 64,221, 11, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,225, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 11, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,240,225, 9, 3,223, 0, 0, 0, 1, 0, 0, 0, - 93, 0, 0, 0, 93, 0, 0, 0, 96,226, 9, 3, 68, 65, 84, 65, 92, 4, 0, 0, 96,226, 9, 3,222, 0, 0, 0, 93, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 11, 3, 19, 0, 0, 0, 1, 0, 0, 0, 48, 0, 11, 3, 20, 0, 0, 0, 1, 0, 0, 0, - 48, 0, 11, 3, 21, 0, 0, 0, 1, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0,240, 22, 11, 3, 0, 0, 0, 0, - 1, 0, 0, 0,152, 29, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0,160,112, 12, 3, 0, 0, 0, 0, 1, 0, 0, 0,224, 39, 11, 3, - 0, 0, 0, 0, 1, 0, 0, 0,176,205, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0,160, 35, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, -160, 18, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, 88, 25, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0,208, 17, 11, 3, 30, 0,255,255, + 0, 0, 0, 0, 0, 0, 11, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 0,224, 11, 3,223, 0, 0, 0, 1, 0, 0, 0, + 93, 0, 0, 0, 93, 0, 0, 0,112,224, 11, 3, 68, 65, 84, 65, 92, 4, 0, 0,112,224, 11, 3,222, 0, 0, 0, 93, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 72,254, 12, 3, 19, 0, 0, 0, 1, 0, 0, 0, 72,254, 12, 3, 20, 0, 0, 0, 1, 0, 0, 0, + 72,254, 12, 3, 21, 0, 0, 0, 1, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, 1, 0, 0, 0, 8, 21, 13, 3, 0, 0, 0, 0, + 1, 0, 0, 0,168, 27, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,176,110, 14, 3, 0, 0, 0, 0, 1, 0, 0, 0,240, 37, 13, 3, + 0, 0, 0, 0, 1, 0, 0, 0,192,203, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,176, 33, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, +184, 16, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,104, 23, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,232, 15, 13, 3, 30, 0,255,255, 0, 0, 1, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 7, 0, @@ -1775,7 +1785,7 @@ char datatoc_startup_blend[]= { 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 32,231, 9, 3,200, 0, 0, 0, 1, 0, 0, 0,128,232, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 67, +248, 0, 0, 0, 48,229, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,144,230, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,197, 68, 0, 0,200, 65, 0,224,197, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -1783,16 +1793,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,232, 9, 3,200, 0, 0, 0, 1, 0, 0, 0,224,233, 9, 3, - 32,231, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144,230, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,240,231, 11, 3, + 48,229, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,233, 9, 3, -200, 0, 0, 0, 1, 0, 0, 0, 64,235, 9, 3,128,232, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,231, 11, 3, +200, 0, 0, 0, 1, 0, 0, 0, 80,233, 11, 3,144,230, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1800,7 +1810,7 @@ char datatoc_startup_blend[]= { 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 64,235, 9, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224,233, 9, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 80,233, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240,231, 11, 3, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 38,192, 0, 0,102, 64, 0,192,179,191, 0,224, 25, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 0, 0, 0, 0, 0, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1808,8 +1818,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0,160,236, 9, 3,170, 0, 0, 0, 1, 0, 0, 0, -160, 19, 10, 3,144,224, 9, 3, 32,231, 9, 3, 64,235, 9, 3, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0,176,234, 11, 3,170, 0, 0, 0, 1, 0, 0, 0, +176, 17, 12, 3,160,222, 11, 3, 48,229, 11, 3, 80,233, 11, 3, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -2074,7 +2084,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 32, 14, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,128, 15, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, 0, 0, 0, 0, + 48, 12, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,144, 13, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -2082,7 +2092,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 15, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,224, 16, 10, 3, 32, 14, 10, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144, 13, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,240, 14, 12, 3, 48, 12, 12, 3, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, 0, 0, 0, 0, 223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2090,8 +2100,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224, 16, 10, 3,200, 0, 0, 0, - 1, 0, 0, 0, 64, 18, 10, 3,128, 15, 10, 3, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240, 14, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0, 80, 16, 12, 3,144, 13, 12, 3, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, @@ -2099,7 +2109,7 @@ char datatoc_startup_blend[]= { 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 64, 18, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224, 16, 10, 3, 0, 0, 0, 0, 0,128,175, 68, +248, 0, 0, 0, 80, 16, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240, 14, 12, 3, 0, 0, 0, 0, 0,128,175, 68, 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0,136, 5, 0, 0,153, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, @@ -2107,65 +2117,65 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0,160, 19, 10, 3,168, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -160,236, 9, 3, 32, 14, 10, 3, 64, 18, 10, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0,176, 17, 12, 3,168, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +176,234, 11, 3, 48, 12, 12, 3, 80, 16, 12, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, -216, 20, 10, 3,195, 0, 0, 0, 1, 0, 0, 0,184, 78, 10, 3,216, 91, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97, +232, 18, 12, 3,195, 0, 0, 0, 1, 0, 0, 0,200, 76, 12, 3,232, 89, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97, 109,101, 32, 76,111,103,105, 99, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 21, 10, 3,224, 27, 10, 3, 88, 28, 10, 3, 88, 38, 10, 3,216, 38, 10, 3,200, 71, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +216, 19, 12, 3,240, 25, 12, 3,104, 26, 12, 3,104, 36, 12, 3,232, 36, 12, 3,216, 69, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 72,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -200, 21, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 64, 22, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 64, 22, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,184, 22, 10, 3,200, 21, 10, 3, 0, 0, 0, 0, - 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184, 22, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 48, 23, 10, 3, - 64, 22, 10, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 48, 23, 10, 3,196, 0, 0, 0, - 1, 0, 0, 0,168, 23, 10, 3,184, 22, 10, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -168, 23, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 24, 10, 3, 48, 23, 10, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 32, 24, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,152, 24, 10, 3,168, 23, 10, 3, 0, 0, 0, 0, -254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152, 24, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 16, 25, 10, 3, - 32, 24, 10, 3, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 16, 25, 10, 3,196, 0, 0, 0, - 1, 0, 0, 0,136, 25, 10, 3,152, 24, 10, 3, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -136, 25, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 26, 10, 3, 16, 25, 10, 3, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 0, 26, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,120, 26, 10, 3,136, 25, 10, 3, 0, 0, 0, 0, -254, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120, 26, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,240, 26, 10, 3, - 0, 26, 10, 3, 0, 0, 0, 0,124, 3, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240, 26, 10, 3,196, 0, 0, 0, - 1, 0, 0, 0,104, 27, 10, 3,120, 26, 10, 3, 0, 0, 0, 0,124, 3,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -104, 27, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,224, 27, 10, 3,240, 26, 10, 3, 0, 0, 0, 0,212, 0, 20, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,224, 27, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104, 27, 10, 3, 0, 0, 0, 0, -212, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 28, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 28, 10, 3, - 0, 0, 0, 0, 64, 22, 10, 3,184, 22, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 28, 10, 3, -197, 0, 0, 0, 1, 0, 0, 0, 88, 29, 10, 3, 88, 28, 10, 3, 64, 22, 10, 3,168, 23, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 88, 29, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 29, 10, 3,216, 28, 10, 3,184, 22, 10, 3, - 32, 24, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 29, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, - 88, 30, 10, 3, 88, 29, 10, 3,168, 23, 10, 3, 32, 24, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 88, 30, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 30, 10, 3,216, 29, 10, 3,168, 23, 10, 3,152, 24, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 30, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 31, 10, 3, 88, 30, 10, 3, -152, 24, 10, 3, 16, 25, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 31, 10, 3,197, 0, 0, 0, - 1, 0, 0, 0,216, 31, 10, 3,216, 30, 10, 3, 48, 23, 10, 3,136, 25, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,216, 31, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 32, 10, 3, 88, 31, 10, 3, 16, 25, 10, 3,136, 25, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 32, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 32, 10, 3, -216, 31, 10, 3,200, 21, 10, 3,152, 24, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 32, 10, 3, -197, 0, 0, 0, 1, 0, 0, 0, 88, 33, 10, 3, 88, 32, 10, 3,200, 21, 10, 3,136, 25, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 88, 33, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 33, 10, 3,216, 32, 10, 3, 32, 24, 10, 3, - 0, 26, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 33, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, - 88, 34, 10, 3, 88, 33, 10, 3, 48, 23, 10, 3, 0, 26, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 88, 34, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 34, 10, 3,216, 33, 10, 3, 16, 25, 10, 3, 0, 26, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 34, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 35, 10, 3, 88, 34, 10, 3, -120, 26, 10, 3,240, 26, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 35, 10, 3,197, 0, 0, 0, - 1, 0, 0, 0,216, 35, 10, 3,216, 34, 10, 3, 32, 24, 10, 3,240, 26, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,216, 35, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 36, 10, 3, 88, 35, 10, 3, 0, 26, 10, 3,120, 26, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 36, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 36, 10, 3, -216, 35, 10, 3,152, 24, 10, 3,104, 27, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 36, 10, 3, -197, 0, 0, 0, 1, 0, 0, 0, 88, 37, 10, 3, 88, 36, 10, 3,120, 26, 10, 3,104, 27, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 88, 37, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 37, 10, 3,216, 36, 10, 3,168, 23, 10, 3, -224, 27, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 37, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, - 88, 38, 10, 3, 88, 37, 10, 3,240, 26, 10, 3,224, 27, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 88, 38, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216, 37, 10, 3,104, 27, 10, 3,224, 27, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,216, 38, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 96, 42, 10, 3, 0, 0, 0, 0, -168, 23, 10, 3, 64, 22, 10, 3,184, 22, 10, 3, 32, 24, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, -214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 32, 78, 10, 3, 32, 78, 10, 3, -160, 39, 10, 3, 0, 41, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -160, 39, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 41, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, +216, 19, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 80, 20, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 80, 20, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,200, 20, 12, 3,216, 19, 12, 3, 0, 0, 0, 0, + 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200, 20, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 64, 21, 12, 3, + 80, 20, 12, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64, 21, 12, 3,196, 0, 0, 0, + 1, 0, 0, 0,184, 21, 12, 3,200, 20, 12, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +184, 21, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 48, 22, 12, 3, 64, 21, 12, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 48, 22, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,168, 22, 12, 3,184, 21, 12, 3, 0, 0, 0, 0, +254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168, 22, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 23, 12, 3, + 48, 22, 12, 3, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 23, 12, 3,196, 0, 0, 0, + 1, 0, 0, 0,152, 23, 12, 3,168, 22, 12, 3, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +152, 23, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 16, 24, 12, 3, 32, 23, 12, 3, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 16, 24, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,136, 24, 12, 3,152, 23, 12, 3, 0, 0, 0, 0, +254, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136, 24, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 25, 12, 3, + 16, 24, 12, 3, 0, 0, 0, 0,124, 3, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 25, 12, 3,196, 0, 0, 0, + 1, 0, 0, 0,120, 25, 12, 3,136, 24, 12, 3, 0, 0, 0, 0,124, 3,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +120, 25, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,240, 25, 12, 3, 0, 25, 12, 3, 0, 0, 0, 0,212, 0, 20, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,240, 25, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120, 25, 12, 3, 0, 0, 0, 0, +212, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104, 26, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 26, 12, 3, + 0, 0, 0, 0, 80, 20, 12, 3,200, 20, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 26, 12, 3, +197, 0, 0, 0, 1, 0, 0, 0,104, 27, 12, 3,104, 26, 12, 3, 80, 20, 12, 3,184, 21, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,104, 27, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 27, 12, 3,232, 26, 12, 3,200, 20, 12, 3, + 48, 22, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 27, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, +104, 28, 12, 3,104, 27, 12, 3,184, 21, 12, 3, 48, 22, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +104, 28, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 28, 12, 3,232, 27, 12, 3,184, 21, 12, 3,168, 22, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 28, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,104, 29, 12, 3,104, 28, 12, 3, +168, 22, 12, 3, 32, 23, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104, 29, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0,232, 29, 12, 3,232, 28, 12, 3, 64, 21, 12, 3,152, 23, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,232, 29, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,104, 30, 12, 3,104, 29, 12, 3, 32, 23, 12, 3,152, 23, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104, 30, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 30, 12, 3, +232, 29, 12, 3,216, 19, 12, 3,168, 22, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 30, 12, 3, +197, 0, 0, 0, 1, 0, 0, 0,104, 31, 12, 3,104, 30, 12, 3,216, 19, 12, 3,152, 23, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,104, 31, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 31, 12, 3,232, 30, 12, 3, 48, 22, 12, 3, + 16, 24, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 31, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, +104, 32, 12, 3,104, 31, 12, 3, 64, 21, 12, 3, 16, 24, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +104, 32, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 32, 12, 3,232, 31, 12, 3, 32, 23, 12, 3, 16, 24, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 32, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,104, 33, 12, 3,104, 32, 12, 3, +136, 24, 12, 3, 0, 25, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104, 33, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0,232, 33, 12, 3,232, 32, 12, 3, 48, 22, 12, 3, 0, 25, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,232, 33, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,104, 34, 12, 3,104, 33, 12, 3, 16, 24, 12, 3,136, 24, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104, 34, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 34, 12, 3, +232, 33, 12, 3,168, 22, 12, 3,120, 25, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 34, 12, 3, +197, 0, 0, 0, 1, 0, 0, 0,104, 35, 12, 3,104, 34, 12, 3,136, 24, 12, 3,120, 25, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,104, 35, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 35, 12, 3,232, 34, 12, 3,184, 21, 12, 3, +240, 25, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 35, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, +104, 36, 12, 3,104, 35, 12, 3, 0, 25, 12, 3,240, 25, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +104, 36, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232, 35, 12, 3,120, 25, 12, 3,240, 25, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,232, 36, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,112, 40, 12, 3, 0, 0, 0, 0, +184, 21, 12, 3, 80, 20, 12, 3,200, 20, 12, 3, 48, 22, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, +214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 48, 76, 12, 3, 48, 76, 12, 3, +176, 37, 12, 3, 16, 39, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +176, 37, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 16, 39, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -2173,7 +2183,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0, 41, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,160, 39, 10, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16, 39, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176, 37, 12, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, 112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2181,11 +2191,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 96, 42, 10, 3,199, 0, 0, 0, - 1, 0, 0, 0, 40, 47, 10, 3,216, 38, 10, 3,136, 25, 10, 3, 16, 25, 10, 3, 0, 26, 10, 3, 48, 23, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,112, 40, 12, 3,199, 0, 0, 0, + 1, 0, 0, 0, 56, 45, 12, 3,232, 36, 12, 3,152, 23, 12, 3, 32, 23, 12, 3, 16, 24, 12, 3, 64, 21, 12, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 4, 4,234, 0, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,232, 45, 10, 3,232, 45, 10, 3, 40, 43, 10, 3,136, 44, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40, 43, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,136, 44, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0,248, 43, 12, 3,248, 43, 12, 3, 56, 41, 12, 3,152, 42, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56, 41, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,152, 42, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, @@ -2193,8 +2203,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0,245, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136, 44, 10, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 40, 43, 10, 3, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152, 42, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 56, 41, 12, 3, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, 254,255, 88, 67,254,255,116,195, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, @@ -2202,18 +2212,18 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -216, 0, 0, 0,232, 45, 10, 3,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +216, 0, 0, 0,248, 43, 12, 3,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0, -160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 40, 47, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,168, 52, 10, 3, - 96, 42, 10, 3,200, 21, 10, 3,152, 24, 10, 3, 16, 25, 10, 3,136, 25, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, - 0, 0, 0, 0, 19, 1, 0, 0, 17, 17, 20, 4, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 52, 10, 3, - 16, 52, 10, 3,240, 47, 10, 3,176, 50, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,240, 47, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 80, 49, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, +160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 56, 45, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,184, 50, 12, 3, +112, 40, 12, 3,216, 19, 12, 3,168, 22, 12, 3, 32, 23, 12, 3,152, 23, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, + 0, 0, 0, 0, 19, 1, 0, 0, 17, 17, 20, 4, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 50, 12, 3, + 32, 50, 12, 3, 0, 46, 12, 3,192, 48, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 0, 46, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 96, 47, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -2221,16 +2231,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 49, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,176, 50, 10, 3, -240, 47, 10, 3, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,122,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,122,195, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96, 47, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,192, 48, 12, 3, + 0, 46, 12, 3, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,122,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,122,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,250, 0,203, 0, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,250, 0, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176, 50, 10, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80, 49, 10, 3, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192, 48, 12, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96, 47, 12, 3, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67, 4, 0, 39,195, 0,224,180, 68, 1, 0,224,194, 0, 0,176, 67, 39, 3, 0, 0, 56, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, @@ -2238,13 +2248,13 @@ char datatoc_startup_blend[]= { 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 3,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 52, 0, 0, 0, 16, 52, 10, 3,178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 52, 0, 0, 0, 32, 50, 12, 3,178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,168, 52, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 16, 59, 10, 3, - 40, 47, 10, 3,120, 26, 10, 3,240, 26, 10, 3, 32, 24, 10, 3, 0, 26, 10, 3, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, - 21, 1, 0, 0,186, 2, 0, 0, 9, 9,130, 1,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 56, 10, 3, - 48, 56, 10, 3,112, 53, 10, 3,208, 54, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,112, 53, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,208, 54, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,184, 50, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 32, 57, 12, 3, + 56, 45, 12, 3,136, 24, 12, 3, 0, 25, 12, 3, 48, 22, 12, 3, 16, 24, 12, 3, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, + 21, 1, 0, 0,186, 2, 0, 0, 9, 9,130, 1,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 54, 12, 3, + 64, 54, 12, 3,128, 51, 12, 3,224, 52, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,128, 51, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,224, 52, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,193, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,181, 67, 0, 0,200, 65, 0,128,181, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -2252,15 +2262,15 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208, 54, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -112, 53, 10, 3, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224, 52, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +128, 51, 12, 3, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0, 126, 86, 5, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,130, 1,140, 1,130, 1, 140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0, 48, 56, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0, 64, 54, 12, 3, 172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2281,11 +2291,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16, 59, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,200, 71, 10, 3,168, 52, 10, 3, -104, 27, 10, 3,224, 27, 10, 3,240, 26, 10, 3,120, 26, 10, 3, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, -186, 2, 0, 0, 1, 1,167, 2,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 70, 10, 3,104, 70, 10, 3, -216, 59, 10, 3, 88, 65, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -216, 59, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 56, 61, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 32, 57, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,216, 69, 12, 3,184, 50, 12, 3, +120, 25, 12, 3,240, 25, 12, 3, 0, 25, 12, 3,136, 24, 12, 3, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, +186, 2, 0, 0, 1, 1,167, 2,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 68, 12, 3,120, 68, 12, 3, +232, 57, 12, 3,104, 63, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +232, 57, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 72, 59, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 56, 0,192, 41, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -2293,7 +2303,7 @@ char datatoc_startup_blend[]= { 213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56, 61, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,152, 62, 10, 3,216, 59, 10, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72, 59, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,168, 60, 12, 3,232, 57, 12, 3, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, 143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2301,8 +2311,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,213, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,140, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152, 62, 10, 3,200, 0, 0, 0, - 1, 0, 0, 0,248, 63, 10, 3, 56, 61, 10, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168, 60, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0, 8, 62, 12, 3, 72, 59, 12, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0, 231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, @@ -2310,7 +2320,7 @@ char datatoc_startup_blend[]= { 47, 1, 0, 0, 47, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,248, 63, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 88, 65, 10, 3,152, 62, 10, 3, 0, 0, 0, 0, 0, 0, 35, 67, +248, 0, 0, 0, 8, 62, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,104, 63, 12, 3,168, 60, 12, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 23,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, @@ -2318,15 +2328,15 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,123, 3, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88, 65, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -248, 63, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104, 63, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 8, 62, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 66, 10, 3, 68, 65, 84, 65, 72, 3, 0, 0,184, 66, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 64, 12, 3, 68, 65, 84, 65, 72, 3, 0, 0,200, 64, 12, 3, 159, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -2353,20 +2363,20 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104, 70, 10, 3,160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120, 68, 12, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 88, 25, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104, 23, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,200, 71, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 59, 10, 3,152, 24, 10, 3,168, 23, 10, 3, -224, 27, 10, 3,104, 27, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 3, 3,212, 0, -166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 75, 10, 3, 80, 75, 10, 3,144, 72, 10, 3,240, 73, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144, 72, 10, 3,200, 0, 0, 0, - 1, 0, 0, 0,240, 73, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 96, 0, 0, 0,216, 69, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32, 57, 12, 3,168, 22, 12, 3,184, 21, 12, 3, +240, 25, 12, 3,120, 25, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 3, 3,212, 0, +166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 73, 12, 3, 96, 73, 12, 3,160, 70, 12, 3, 0, 72, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160, 70, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 72, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 83, 67, 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, @@ -2374,7 +2384,7 @@ char datatoc_startup_blend[]= { 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,240, 73, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144, 72, 10, 3, 0, 0, 0, 0, 0,128,131, 67, +248, 0, 0, 0, 0, 72, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,160, 70, 12, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 80, 66, 0, 0,119, 67, 0, 0,189,195, 0, 0, 0, 0,195, 0, 0, 0,212, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, @@ -2382,81 +2392,81 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0, 80, 75, 10, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0, 96, 73, 12, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 76, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 74, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, -176, 76, 10, 3,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 32, 77, 10, 3, 68, 65, 84, 65,156, 0, 0, 0, - 32, 77, 10, 3,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 0, 11, 3, 19, 0, 0, 0, 1, 0, 1, 0, - 48, 0, 11, 3, 20, 0, 0, 0, 1, 0, 1, 0, 48, 0, 11, 3, 21, 0, 1, 0, 1, 0, 1, 0, 48, 0, 11, 3, 0, 0, 0, 0, - 1, 0, 1, 0,240, 22, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,152, 29, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,160,112, 12, 3, - 0, 0, 0, 0, 1, 0, 1, 0,224, 39, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,176,205, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0, -160, 35, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,160, 18, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0, 88, 25, 11, 3, 0, 0, 0, 0, - 1, 0, 1, 0,208, 17, 11, 3, 83, 78, 0, 0,140, 0, 0, 0,184, 78, 10, 3,195, 0, 0, 0, 1, 0, 0, 0, 80,143, 10, 3, -216, 20, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 79, 10, 3, 56, 86, 10, 3,176, 86, 10, 3,176, 97, 10, 3, - 48, 98, 10, 3, 80,136, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192, 74, 12, 3,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 48, 75, 12, 3, 68, 65, 84, 65,156, 0, 0, 0, + 48, 75, 12, 3,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 72,254, 12, 3, 19, 0, 0, 0, 1, 0, 1, 0, + 72,254, 12, 3, 20, 0, 0, 0, 1, 0, 1, 0, 72,254, 12, 3, 21, 0, 1, 0, 1, 0, 1, 0, 72,254, 12, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 8, 21, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,168, 27, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,176,110, 14, 3, + 0, 0, 0, 0, 1, 0, 1, 0,240, 37, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,192,203, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, +176, 33, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,184, 16, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,104, 23, 13, 3, 0, 0, 0, 0, + 1, 0, 1, 0,232, 15, 13, 3, 83, 78, 0, 0,140, 0, 0, 0,200, 76, 12, 3,195, 0, 0, 0, 1, 0, 0, 0,104,141, 12, 3, +232, 18, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 77, 12, 3, 72, 84, 12, 3,192, 84, 12, 3,192, 95, 12, 3, + 72, 96, 12, 3,104,134, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168, 79, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 80, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 80, 10, 3,196, 0, 0, 0, - 1, 0, 0, 0,152, 80, 10, 3,168, 79, 10, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -152, 80, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 16, 81, 10, 3, 32, 80, 10, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 16, 81, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,136, 81, 10, 3,152, 80, 10, 3, 0, 0, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136, 81, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 82, 10, 3, - 16, 81, 10, 3, 0, 0, 0, 0, 0, 0,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 82, 10, 3,196, 0, 0, 0, - 1, 0, 0, 0,120, 82, 10, 3,136, 81, 10, 3, 0, 0, 0, 0,254, 4,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -120, 82, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,240, 82, 10, 3, 0, 82, 10, 3, 0, 0, 0, 0,244, 3,187, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,240, 82, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,104, 83, 10, 3,120, 82, 10, 3, 0, 0, 0, 0, -244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104, 83, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,224, 83, 10, 3, -240, 82, 10, 3, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224, 83, 10, 3,196, 0, 0, 0, - 1, 0, 0, 0, 88, 84, 10, 3,104, 83, 10, 3, 0, 0, 0, 0,244, 3, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 88, 84, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,208, 84, 10, 3,224, 83, 10, 3, 0, 0, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,208, 84, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 72, 85, 10, 3, 88, 84, 10, 3, 0, 0, 0, 0, -248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72, 85, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,192, 85, 10, 3, -208, 84, 10, 3, 0, 0, 0, 0,244, 3, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192, 85, 10, 3,196, 0, 0, 0, - 1, 0, 0, 0, 56, 86, 10, 3, 72, 85, 10, 3, 0, 0, 0, 0,254, 4, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 56, 86, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192, 85, 10, 3, 0, 0, 0, 0,248, 1,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,176, 86, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 48, 87, 10, 3, 0, 0, 0, 0, 32, 80, 10, 3, -152, 80, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 87, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, -176, 87, 10, 3,176, 86, 10, 3, 32, 80, 10, 3,136, 81, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -176, 87, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 48, 88, 10, 3, 48, 87, 10, 3,152, 80, 10, 3, 0, 82, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 88, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,176, 88, 10, 3,176, 87, 10, 3, -136, 81, 10, 3, 0, 82, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176, 88, 10, 3,197, 0, 0, 0, - 1, 0, 0, 0, 48, 89, 10, 3, 48, 88, 10, 3, 0, 82, 10, 3,120, 82, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 48, 89, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,176, 89, 10, 3,176, 88, 10, 3, 16, 81, 10, 3,240, 82, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176, 89, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 48, 90, 10, 3, - 48, 89, 10, 3,168, 79, 10, 3,104, 83, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 90, 10, 3, -197, 0, 0, 0, 1, 0, 0, 0,176, 90, 10, 3,176, 89, 10, 3,136, 81, 10, 3,104, 83, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,176, 90, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 48, 91, 10, 3, 48, 90, 10, 3,120, 82, 10, 3, -224, 83, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 91, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, -176, 91, 10, 3,176, 90, 10, 3,240, 82, 10, 3,224, 83, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -176, 91, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 48, 92, 10, 3, 48, 91, 10, 3,168, 79, 10, 3, 88, 84, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 92, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,176, 92, 10, 3,176, 91, 10, 3, -240, 82, 10, 3, 88, 84, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176, 92, 10, 3,197, 0, 0, 0, - 1, 0, 0, 0, 48, 93, 10, 3, 48, 92, 10, 3,104, 83, 10, 3,208, 84, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 48, 93, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,176, 93, 10, 3,176, 92, 10, 3,224, 83, 10, 3,208, 84, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176, 93, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 48, 94, 10, 3, - 48, 93, 10, 3, 88, 84, 10, 3,208, 84, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 94, 10, 3, -197, 0, 0, 0, 1, 0, 0, 0,176, 94, 10, 3,176, 93, 10, 3,240, 82, 10, 3, 72, 85, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,176, 94, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 48, 95, 10, 3, 48, 94, 10, 3,120, 82, 10, 3, - 72, 85, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 95, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, -176, 95, 10, 3,176, 94, 10, 3, 0, 82, 10, 3,192, 85, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -176, 95, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 48, 96, 10, 3, 48, 95, 10, 3, 16, 81, 10, 3,192, 85, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 96, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,176, 96, 10, 3,176, 95, 10, 3, - 72, 85, 10, 3,192, 85, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176, 96, 10, 3,197, 0, 0, 0, - 1, 0, 0, 0, 48, 97, 10, 3, 48, 96, 10, 3,136, 81, 10, 3, 56, 86, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 48, 97, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,176, 97, 10, 3,176, 96, 10, 3,120, 82, 10, 3, 56, 86, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176, 97, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 48, 97, 10, 3,208, 84, 10, 3, 56, 86, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 48, 98, 10, 3, -199, 0, 0, 0, 1, 0, 0, 0,184,101, 10, 3, 0, 0, 0, 0,136, 81, 10, 3, 32, 80, 10, 3,152, 80, 10, 3, 0, 82, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184, 77, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 48, 78, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 48, 78, 12, 3,196, 0, 0, 0, + 1, 0, 0, 0,168, 78, 12, 3,184, 77, 12, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +168, 78, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 79, 12, 3, 48, 78, 12, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 32, 79, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,152, 79, 12, 3,168, 78, 12, 3, 0, 0, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152, 79, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 16, 80, 12, 3, + 32, 79, 12, 3, 0, 0, 0, 0, 0, 0,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 16, 80, 12, 3,196, 0, 0, 0, + 1, 0, 0, 0,136, 80, 12, 3,152, 79, 12, 3, 0, 0, 0, 0,254, 4,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +136, 80, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 81, 12, 3, 16, 80, 12, 3, 0, 0, 0, 0,244, 3,187, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 0, 81, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,120, 81, 12, 3,136, 80, 12, 3, 0, 0, 0, 0, +244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120, 81, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,240, 81, 12, 3, + 0, 81, 12, 3, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240, 81, 12, 3,196, 0, 0, 0, + 1, 0, 0, 0,104, 82, 12, 3,120, 81, 12, 3, 0, 0, 0, 0,244, 3, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +104, 82, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,224, 82, 12, 3,240, 81, 12, 3, 0, 0, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,224, 82, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 88, 83, 12, 3,104, 82, 12, 3, 0, 0, 0, 0, +248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 88, 83, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,208, 83, 12, 3, +224, 82, 12, 3, 0, 0, 0, 0,244, 3, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208, 83, 12, 3,196, 0, 0, 0, + 1, 0, 0, 0, 72, 84, 12, 3, 88, 83, 12, 3, 0, 0, 0, 0,254, 4, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 72, 84, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 83, 12, 3, 0, 0, 0, 0,248, 1,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,192, 84, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 85, 12, 3, 0, 0, 0, 0, 48, 78, 12, 3, +168, 78, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 85, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, +192, 85, 12, 3,192, 84, 12, 3, 48, 78, 12, 3,152, 79, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +192, 85, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 86, 12, 3, 64, 85, 12, 3,168, 78, 12, 3, 16, 80, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 86, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 86, 12, 3,192, 85, 12, 3, +152, 79, 12, 3, 16, 80, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 86, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0, 64, 87, 12, 3, 64, 86, 12, 3, 16, 80, 12, 3,136, 80, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 64, 87, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 87, 12, 3,192, 86, 12, 3, 32, 79, 12, 3, 0, 81, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 87, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 88, 12, 3, + 64, 87, 12, 3,184, 77, 12, 3,120, 81, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 88, 12, 3, +197, 0, 0, 0, 1, 0, 0, 0,192, 88, 12, 3,192, 87, 12, 3,152, 79, 12, 3,120, 81, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,192, 88, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 89, 12, 3, 64, 88, 12, 3,136, 80, 12, 3, +240, 81, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 89, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, +192, 89, 12, 3,192, 88, 12, 3, 0, 81, 12, 3,240, 81, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +192, 89, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 90, 12, 3, 64, 89, 12, 3,184, 77, 12, 3,104, 82, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 90, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 90, 12, 3,192, 89, 12, 3, + 0, 81, 12, 3,104, 82, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 90, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0, 64, 91, 12, 3, 64, 90, 12, 3,120, 81, 12, 3,224, 82, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 64, 91, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 91, 12, 3,192, 90, 12, 3,240, 81, 12, 3,224, 82, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 91, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 92, 12, 3, + 64, 91, 12, 3,104, 82, 12, 3,224, 82, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 92, 12, 3, +197, 0, 0, 0, 1, 0, 0, 0,192, 92, 12, 3,192, 91, 12, 3, 0, 81, 12, 3, 88, 83, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,192, 92, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 93, 12, 3, 64, 92, 12, 3,136, 80, 12, 3, + 88, 83, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 93, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, +192, 93, 12, 3,192, 92, 12, 3, 16, 80, 12, 3,208, 83, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +192, 93, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 94, 12, 3, 64, 93, 12, 3, 32, 79, 12, 3,208, 83, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 94, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 94, 12, 3,192, 93, 12, 3, + 88, 83, 12, 3,208, 83, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 94, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0, 64, 95, 12, 3, 64, 94, 12, 3,152, 79, 12, 3, 72, 84, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 64, 95, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 95, 12, 3,192, 94, 12, 3,136, 80, 12, 3, 72, 84, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 95, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 64, 95, 12, 3,224, 82, 12, 3, 72, 84, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 72, 96, 12, 3, +199, 0, 0, 0, 1, 0, 0, 0,208, 99, 12, 3, 0, 0, 0, 0,152, 79, 12, 3, 48, 78, 12, 3,168, 78, 12, 3, 16, 80, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 0, 0,184,142, 10, 3,184,142, 10, 3,248, 98, 10, 3, 88,100, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248, 98, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 88,100, 10, 3, + 7, 0, 0, 0, 0, 0, 0, 0,208,140, 12, 3,208,140, 12, 3, 16, 97, 12, 3,112, 98, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16, 97, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,112, 98, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, @@ -2464,8 +2474,8 @@ char datatoc_startup_blend[]= { 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,100, 10, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248, 98, 10, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112, 98, 12, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 97, 12, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, @@ -2473,11 +2483,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0,184,101, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,128,106, 10, 3, 48, 98, 10, 3,240, 82, 10, 3, - 72, 85, 10, 3,192, 85, 10, 3, 16, 81, 10, 3, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, - 4, 4, 10, 1, 12, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,105, 10, 3, 64,105, 10, 3,128,102, 10, 3, -224,103, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,102, 10, 3, -200, 0, 0, 0, 1, 0, 0, 0,224,103, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, + 68, 65, 84, 65, 96, 0, 0, 0,208, 99, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,152,104, 12, 3, 72, 96, 12, 3, 0, 81, 12, 3, + 88, 83, 12, 3,208, 83, 12, 3, 32, 79, 12, 3, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, + 4, 4, 10, 1, 12, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,103, 12, 3, 88,103, 12, 3,152,100, 12, 3, +248,101, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,100, 12, 3, +200, 0, 0, 0, 1, 0, 0, 0,248,101, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, @@ -2485,7 +2495,7 @@ char datatoc_startup_blend[]= { 254, 4, 0, 0,237, 1, 0, 0, 11, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,224,103, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128,102, 10, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,248,101, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152,100, 12, 3, 0, 0, 0, 0, 0,128,132, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255,120, 67,255,127,246,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 248, 0, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, @@ -2493,7 +2503,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 64,105, 10, 3,165, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 88,103, 12, 3,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2501,11 +2511,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -128,106, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,224,111, 10, 3,184,101, 10, 3, 88, 84, 10, 3,208, 84, 10, 3,224, 83, 10, 3, -240, 82, 10, 3, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,251, 1, 28, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,110, 10, 3, 8,110, 10, 3, 72,107, 10, 3,168,108, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,107, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, -168,108, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, +152,104, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,248,109, 12, 3,208, 99, 12, 3,104, 82, 12, 3,224, 82, 12, 3,240, 81, 12, 3, + 0, 81, 12, 3, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,251, 1, 28, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,108, 12, 3, 32,108, 12, 3, 96,105, 12, 3,192,106, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,105, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, +192,106, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, @@ -2513,7 +2523,7 @@ char datatoc_startup_blend[]= { 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -168,108, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72,107, 10, 3, 0, 0, 0, 0, 0, 0,253, 67, 0, 0, 0, 0, +192,106, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,105, 12, 3, 0, 0, 0, 0, 0, 0,253, 67, 0, 0, 0, 0, 0, 0, 48, 65, 0, 0, 0, 0, 0, 0,245, 67, 0, 0, 0, 0, 0, 0,129, 67,234, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, @@ -2521,7 +2531,7 @@ char datatoc_startup_blend[]= { 249, 1, 0, 0,243, 3, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 251, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0, 8,110, 10, 3,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0, 32,108, 12, 3,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2533,11 +2543,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,224,111, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,152,124, 10, 3, -128,106, 10, 3,208, 84, 10, 3, 56, 86, 10, 3,120, 82, 10, 3,224, 83, 10, 3, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, - 29, 1, 0, 0,186, 2, 0, 0, 1, 1,251, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,123, 10, 3, - 56,123, 10, 3,168,112, 10, 3, 40,118, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,168,112, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 8,114, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,248,109, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,176,122, 12, 3, +152,104, 12, 3,224, 82, 12, 3, 72, 84, 12, 3,136, 80, 12, 3,240, 81, 12, 3, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, + 29, 1, 0, 0,186, 2, 0, 0, 1, 1,251, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,121, 12, 3, + 80,121, 12, 3,192,110, 12, 3, 64,116, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,192,110, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 32,112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -2545,16 +2555,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,114, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,104,115, 10, 3, -168,112, 10, 3, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,112, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,128,113, 12, 3, +192,110, 12, 3, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,249, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,132, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104,115, 10, 3, -200, 0, 0, 0, 1, 0, 0, 0,200,116, 10, 3, 8,114, 10, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,113, 12, 3, +200, 0, 0, 0, 1, 0, 0, 0,224,114, 12, 3, 32,112, 12, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, @@ -2562,7 +2572,7 @@ char datatoc_startup_blend[]= { 243, 3, 0, 0, 55, 1, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,200,116, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 40,118, 10, 3,104,115, 10, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,224,114, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 64,116, 12, 3,128,113, 12, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0, 180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, @@ -2570,16 +2580,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,243, 3, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40,118, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,200,116, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,116, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,224,114, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0, 186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,119, 10, 3, 68, 65, 84, 65, 72, 3, 0, 0, -136,119, 10, 3,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,117, 12, 3, 68, 65, 84, 65, 72, 3, 0, 0, +160,117, 12, 3,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,240,182, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63, 143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2605,20 +2615,20 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,123, 10, 3, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,121, 12, 3, 160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 88, 25, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104, 23, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0,152,124, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,248,129, 10, 3,224,111, 10, 3,168, 79, 10, 3, -104, 83, 10, 3,208, 84, 10, 3, 88, 84, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, - 18, 18,248, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,128, 10, 3, 32,128, 10, 3, 96,125, 10, 3, -192,126, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,125, 10, 3, -200, 0, 0, 0, 1, 0, 0, 0,192,126, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, 0, 0, 0, 0, 0, 0,208, 65, + 68, 65, 84, 65, 96, 0, 0, 0,176,122, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 16,128, 12, 3,248,109, 12, 3,184, 77, 12, 3, +120, 81, 12, 3,224, 82, 12, 3,104, 82, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, + 18, 18,248, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,126, 12, 3, 56,126, 12, 3,120,123, 12, 3, +216,124, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,123, 12, 3, +200, 0, 0, 0, 1, 0, 0, 0,216,124, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, @@ -2626,7 +2636,7 @@ char datatoc_startup_blend[]= { 247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,192,126, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,125, 10, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,216,124, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120,123, 12, 3, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0, 65, 67, 0, 0, 0, 0, 0,128,243, 67, 0, 0, 0, 0, 0, 0,129, 67,231, 1, 0, 0, 248, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -2634,7 +2644,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0, 32,128, 10, 3,181, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0, 56,126, 12, 3,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2646,11 +2656,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,121,116,104,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,248,129, 10, 3,199, 0, 0, 0, - 1, 0, 0, 0, 80,136, 10, 3,152,124, 10, 3, 72, 85, 10, 3,120, 82, 10, 3, 0, 82, 10, 3,192, 85, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16,128, 12, 3,199, 0, 0, 0, + 1, 0, 0, 0,104,134, 12, 3,176,122, 12, 3, 88, 83, 12, 3,136, 80, 12, 3, 16, 80, 12, 3,208, 83, 12, 3, 0, 0, 0, 0, 245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0,186, 2, 0, 0, 3, 3, 10, 1,174, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128,133, 10, 3,128,133, 10, 3,192,130, 10, 3, 32,132, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,130, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 32,132, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0,152,131, 12, 3,152,131, 12, 3,216,128, 12, 3, 56,130, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,128, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 56,130, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,149, 67, 0, 0,200, 65, 0,128,149, 67, 0, 0,200, 65, @@ -2658,8 +2668,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0, 38, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,132, 10, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,192,130, 10, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,130, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,216,128, 12, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 67, 0, 0, 2,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, @@ -2667,26 +2677,26 @@ char datatoc_startup_blend[]= { 39, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -252, 0, 0, 0,128,133, 10, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +252, 0, 0, 0,152,131, 12, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,134, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,132, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,224,134, 10, 3,223, 0, 0, 0, 1, 0, 0, 0, - 13, 0, 0, 0, 13, 0, 0, 0, 80,135, 10, 3, 68, 65, 84, 65,156, 0, 0, 0, 80,135, 10, 3,222, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 48, 0, 11, 3, 19, 0, 0, 0, 1, 0, 1, 0, 48, 0, 11, 3, 20, 0, 0, 0, 1, 0, 1, 0, - 48, 0, 11, 3, 21, 0, 1, 0, 1, 0, 1, 0, 48, 0, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,240, 22, 11, 3, 0, 0, 0, 0, - 1, 0, 1, 0,152, 29, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,160,112, 12, 3, 0, 0, 0, 0, 1, 0, 1, 0,224, 39, 11, 3, - 0, 0, 0, 0, 1, 0, 1, 0,176,205, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,160, 35, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0, -160, 18, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0, 88, 25, 11, 3, 0, 0, 0, 0, 1, 0, 1, 0,208, 17, 11, 3, 68, 65, 84, 65, - 96, 0, 0, 0, 80,136, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248,129, 10, 3,104, 83, 10, 3,136, 81, 10, 3, - 56, 86, 10, 3,208, 84, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 9, 9,248, 1, -158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,139, 10, 3,216,139, 10, 3, 24,137, 10, 3,120,138, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24,137, 10, 3,200, 0, 0, 0, - 1, 0, 0, 0,120,138, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 73, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,248,132, 12, 3,223, 0, 0, 0, 1, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0,104,133, 12, 3, 68, 65, 84, 65,156, 0, 0, 0,104,133, 12, 3,222, 0, 0, 0, 13, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 72,254, 12, 3, 19, 0, 0, 0, 1, 0, 1, 0, 72,254, 12, 3, 20, 0, 0, 0, 1, 0, 1, 0, + 72,254, 12, 3, 21, 0, 1, 0, 1, 0, 1, 0, 72,254, 12, 3, 0, 0, 0, 0, 1, 0, 1, 0, 8, 21, 13, 3, 0, 0, 0, 0, + 1, 0, 1, 0,168, 27, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,176,110, 14, 3, 0, 0, 0, 0, 1, 0, 1, 0,240, 37, 13, 3, + 0, 0, 0, 0, 1, 0, 1, 0,192,203, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,176, 33, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, +184, 16, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,104, 23, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,232, 15, 13, 3, 68, 65, 84, 65, + 96, 0, 0, 0,104,134, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16,128, 12, 3,120, 81, 12, 3,152, 79, 12, 3, + 72, 84, 12, 3,224, 82, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 9, 9,248, 1, +158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,137, 12, 3,240,137, 12, 3, 48,135, 12, 3,144,136, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,135, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0,144,136, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 73, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, @@ -2694,7 +2704,7 @@ char datatoc_startup_blend[]= { 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,120,138, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 24,137, 10, 3, 0, 0, 0, 0, 0,224,189, 68, +248, 0, 0, 0,144,136, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,135, 12, 3, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,236,140, 21, 68, 20, 51,102, 68,120, 83, 49, 67, 68,214,212, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, @@ -2702,7 +2712,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0,216,139, 10, 3,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0,240,137, 12, 3,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,231, 1, 0, 0,243, 1, 0, 0,122, 1, 0, 0,124, 1, 0, 0, @@ -2723,41 +2733,41 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, - 80,143, 10, 3,195, 0, 0, 0, 1, 0, 0, 0,200,208, 10, 3,184, 78, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86, +104,141, 12, 3,195, 0, 0, 0, 1, 0, 0, 0,216,206, 12, 3,200, 76, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72,144, 10, 3,144,147, 10, 3, 8,148, 10, 3, 8,153, 10, 3,136,153, 10, 3,120,195, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88,142, 12, 3,160,145, 12, 3, 24,146, 12, 3, 24,151, 12, 3,152,151, 12, 3,136,193, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 72,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 72,144, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,192,144, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,192,144, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 56,145, 10, 3, 72,144, 10, 3, 0, 0, 0, 0, - 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 56,145, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,176,145, 10, 3, -192,144, 10, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,145, 10, 3,196, 0, 0, 0, - 1, 0, 0, 0, 40,146, 10, 3, 56,145, 10, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 40,146, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,160,146, 10, 3,176,145, 10, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,160,146, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 24,147, 10, 3, 40,146, 10, 3, 0, 0, 0, 0, -254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24,147, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,144,147, 10, 3, -160,146, 10, 3, 0, 0, 0, 0,132, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144,147, 10, 3,196, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 24,147, 10, 3, 0, 0, 0, 0,132, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 8,148, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,136,148, 10, 3, 0, 0, 0, 0,192,144, 10, 3, 56,145, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136,148, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 8,149, 10, 3, 8,148, 10, 3, -192,144, 10, 3, 40,146, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,149, 10, 3,197, 0, 0, 0, - 1, 0, 0, 0,136,149, 10, 3,136,148, 10, 3, 56,145, 10, 3,160,146, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,136,149, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 8,150, 10, 3, 8,149, 10, 3, 40,146, 10, 3,160,146, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,150, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,136,150, 10, 3, -136,149, 10, 3, 40,146, 10, 3, 24,147, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136,150, 10, 3, -197, 0, 0, 0, 1, 0, 0, 0, 8,151, 10, 3, 8,150, 10, 3, 72,144, 10, 3,144,147, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 8,151, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,136,151, 10, 3,136,150, 10, 3, 72,144, 10, 3, - 40,146, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136,151, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, - 8,152, 10, 3, 8,151, 10, 3, 24,147, 10, 3,144,147, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 8,152, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,136,152, 10, 3,136,151, 10, 3,160,146, 10, 3, 24,147, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136,152, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 8,153, 10, 3, 8,152, 10, 3, -176,145, 10, 3,144,147, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,153, 10, 3,197, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,136,152, 10, 3,176,145, 10, 3,160,146, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,136,153, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 16,157, 10, 3, 0, 0, 0, 0, 40,146, 10, 3,192,144, 10, 3, - 56,145, 10, 3,160,146, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, - 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 48,208, 10, 3, 48,208, 10, 3, 80,154, 10, 3,176,155, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,154, 10, 3,200, 0, 0, 0, - 1, 0, 0, 0,176,155, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 88,142, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,208,142, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,208,142, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 72,143, 12, 3, 88,142, 12, 3, 0, 0, 0, 0, + 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,143, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,192,143, 12, 3, +208,142, 12, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192,143, 12, 3,196, 0, 0, 0, + 1, 0, 0, 0, 56,144, 12, 3, 72,143, 12, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 56,144, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,176,144, 12, 3,192,143, 12, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,176,144, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 40,145, 12, 3, 56,144, 12, 3, 0, 0, 0, 0, +254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,145, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,160,145, 12, 3, +176,144, 12, 3, 0, 0, 0, 0,132, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,145, 12, 3,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 40,145, 12, 3, 0, 0, 0, 0,132, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 24,146, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,152,146, 12, 3, 0, 0, 0, 0,208,142, 12, 3, 72,143, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,146, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,147, 12, 3, 24,146, 12, 3, +208,142, 12, 3, 56,144, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,147, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0,152,147, 12, 3,152,146, 12, 3, 72,143, 12, 3,176,144, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,152,147, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,148, 12, 3, 24,147, 12, 3, 56,144, 12, 3,176,144, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,148, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,152,148, 12, 3, +152,147, 12, 3, 56,144, 12, 3, 40,145, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,148, 12, 3, +197, 0, 0, 0, 1, 0, 0, 0, 24,149, 12, 3, 24,148, 12, 3, 88,142, 12, 3,160,145, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 24,149, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,152,149, 12, 3,152,148, 12, 3, 88,142, 12, 3, + 56,144, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,149, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, + 24,150, 12, 3, 24,149, 12, 3, 40,145, 12, 3,160,145, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 24,150, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,152,150, 12, 3,152,149, 12, 3,176,144, 12, 3, 40,145, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,150, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,151, 12, 3, 24,150, 12, 3, +192,143, 12, 3,160,145, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,151, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,152,150, 12, 3,192,143, 12, 3,176,144, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,152,151, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 32,155, 12, 3, 0, 0, 0, 0, 56,144, 12, 3,208,142, 12, 3, + 72,143, 12, 3,176,144, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, + 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 64,206, 12, 3, 64,206, 12, 3, 96,152, 12, 3,192,153, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,152, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0,192,153, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, @@ -2765,7 +2775,7 @@ char datatoc_startup_blend[]= { 188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,176,155, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80,154, 10, 3, 0, 0, 0, 0, 0,240,109, 69, +248, 0, 0, 0,192,153, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,152, 12, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, @@ -2773,11 +2783,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16,157, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,120,195, 10, 3, -136,153, 10, 3, 72,144, 10, 3, 40,146, 10, 3, 24,147, 10, 3,144,147, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, - 0, 0, 0, 0,186, 2, 0, 0, 6, 6,132, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,161, 10, 3, -248,161, 10, 3,216,157, 10, 3,152,160, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,216,157, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 56,159, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 32,155, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,136,193, 12, 3, +152,151, 12, 3, 88,142, 12, 3, 56,144, 12, 3, 40,145, 12, 3,160,145, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, + 0, 0, 0, 0,186, 2, 0, 0, 6, 6,132, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,160, 12, 3, + 8,160, 12, 3,232,155, 12, 3,168,158, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,232,155, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 72,157, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 33, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -2785,16 +2795,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,159, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,152,160, 10, 3, -216,157, 10, 3, 0, 0, 0, 0, 0, 0, 91, 67, 0, 0, 40,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 74, 67,254, 63, 40,196, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,157, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,168,158, 12, 3, +232,155, 12, 3, 0, 0, 0, 0, 0, 0, 91, 67, 0, 0, 40,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 74, 67,254, 63, 40,196, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,161, 2,203, 0, 161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,161, 2, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,160, 10, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,159, 10, 3, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,158, 12, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72,157, 12, 3, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 102,102, 38,190,205,204,148, 63, 51, 51, 13,191,154,153,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1, 0, 0, 0, 0, 0, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2802,7 +2812,7 @@ char datatoc_startup_blend[]= { 131, 2, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 33, 0, 0,248,161, 10, 3,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 33, 0, 0, 8,160, 12, 3,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3067,11 +3077,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,120,195, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 16,157, 10, 3,144,147, 10, 3, 24,147, 10, 3,160,146, 10, 3,176,145, 10, 3, 0, 0, 0, 0,133, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,136,193, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 32,155, 12, 3,160,145, 12, 3, 40,145, 12, 3,176,144, 12, 3,192,143, 12, 3, 0, 0, 0, 0,133, 2, 0, 0, 254, 4, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 1, 1,122, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208,206, 10, 3,208,206, 10, 3, 64,196, 10, 3,192,201, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 64,196, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,160,197, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, +224,204, 12, 3,224,204, 12, 3, 80,194, 12, 3,208,199, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 80,194, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,176,195, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 30, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, @@ -3079,8 +3089,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160,197, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, - 0,199, 10, 3, 64,196, 10, 3, 0, 0, 0, 0, 0, 0, 32, 67, 0, 64, 10,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,195, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, + 16,197, 12, 3, 80,194, 12, 3, 0, 0, 0, 0, 0, 0, 32, 67, 0, 64, 10,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 10,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, @@ -3088,7 +3098,7 @@ char datatoc_startup_blend[]= { 186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 41, 2, 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 0,199, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 96,200, 10, 3,160,197, 10, 3, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,242,194, + 16,197, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,112,198, 12, 3,176,195, 12, 3, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,242,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 91, 90,242,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, @@ -3096,7 +3106,7 @@ char datatoc_startup_blend[]= { 133, 2, 0, 0, 36, 3, 0, 0, 26, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 0,120, 0, 0, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,200, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,192,201, 10, 3, 0,199, 10, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,198, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,208,199, 12, 3, 16,197, 12, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,255,191,126,196, 0, 0, 0, 0, 163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3104,16 +3114,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,201, 10, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 96,200, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,199, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,112,198, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 3, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,203, 10, 3, 68, 65, 84, 65, - 72, 3, 0, 0, 32,203, 10, 3,159, 0, 0, 0, 1, 0, 0, 0,193,198,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,201, 12, 3, 68, 65, 84, 65, + 72, 3, 0, 0, 48,201, 12, 3,159, 0, 0, 0, 1, 0, 0, 0,193,198,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, @@ -3140,64 +3150,64 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -208,206, 10, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +224,204, 12, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 88, 25, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104, 23, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,200,208, 10, 3,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80,143, 10, 3, + 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,216,206, 12, 3,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104,141, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105,100,101,111, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,209, 10, 3,224,214, 10, 3, 88,215, 10, 3,216,223, 10, 3, 88,224, 10, 3, - 16,248, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,207, 12, 3,248,212, 12, 3,112,213, 12, 3,240,221, 12, 3,112,222, 12, 3, + 40,246, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184,209, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 48,210, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 48,210, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, -168,210, 10, 3,184,209, 10, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,210, 10, 3, -196, 0, 0, 0, 1, 0, 0, 0, 32,211, 10, 3, 48,210, 10, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 32,211, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,152,211, 10, 3,168,210, 10, 3, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152,211, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 16,212, 10, 3, 32,211, 10, 3, - 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 16,212, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, -136,212, 10, 3,152,211, 10, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,212, 10, 3, -196, 0, 0, 0, 1, 0, 0, 0, 0,213, 10, 3, 16,212, 10, 3, 0, 0, 0, 0,254, 4, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 0,213, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,120,213, 10, 3,136,212, 10, 3, 0, 0, 0, 0, 0, 0, 64, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120,213, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,240,213, 10, 3, 0,213, 10, 3, - 0, 0, 0, 0, 52, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,213, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, -104,214, 10, 3,120,213, 10, 3, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,214, 10, 3, -196, 0, 0, 0, 1, 0, 0, 0,224,214, 10, 3,240,213, 10, 3, 0, 0, 0, 0, 52, 2, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,224,214, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104,214, 10, 3, 0, 0, 0, 0,254, 4, 64, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,215, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216,215, 10, 3, 0, 0, 0, 0, - 48,210, 10, 3,168,210, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,215, 10, 3,197, 0, 0, 0, - 1, 0, 0, 0, 88,216, 10, 3, 88,215, 10, 3, 48,210, 10, 3,152,211, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 88,216, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216,216, 10, 3,216,215, 10, 3,168,210, 10, 3, 16,212, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,216, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88,217, 10, 3, - 88,216, 10, 3,152,211, 10, 3, 16,212, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,217, 10, 3, -197, 0, 0, 0, 1, 0, 0, 0,216,217, 10, 3,216,216, 10, 3, 16,212, 10, 3,136,212, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,216,217, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88,218, 10, 3, 88,217, 10, 3,184,209, 10, 3, - 0,213, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,218, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, -216,218, 10, 3,216,217, 10, 3,152,211, 10, 3,120,213, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -216,218, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88,219, 10, 3, 88,218, 10, 3, 0,213, 10, 3,240,213, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,219, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216,219, 10, 3,216,218, 10, 3, -240,213, 10, 3,104,214, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,219, 10, 3,197, 0, 0, 0, - 1, 0, 0, 0, 88,220, 10, 3, 88,219, 10, 3,120,213, 10, 3,104,214, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 88,220, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216,220, 10, 3,216,219, 10, 3,136,212, 10, 3,224,214, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,220, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88,221, 10, 3, - 88,220, 10, 3, 32,211, 10, 3,224,214, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,221, 10, 3, -197, 0, 0, 0, 1, 0, 0, 0,216,221, 10, 3,216,220, 10, 3, 0,213, 10, 3,224,214, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,216,221, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88,222, 10, 3, 88,221, 10, 3,184,209, 10, 3, - 32,211, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,222, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, -216,222, 10, 3,216,221, 10, 3, 16,212, 10, 3,120,213, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -216,222, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 88,223, 10, 3, 88,222, 10, 3,136,212, 10, 3,104,214, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,223, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,216,223, 10, 3,216,222, 10, 3, -152,211, 10, 3,240,213, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,223, 10, 3,197, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 88,223, 10, 3,136,212, 10, 3,240,213, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0, 88,224, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,224,227, 10, 3, 0, 0, 0, 0,152,211, 10, 3, 48,210, 10, 3, -168,210, 10, 3, 16,212, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, - 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,152,255, 10, 3,152,255, 10, 3, 32,225, 10, 3,128,226, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,225, 10, 3,200, 0, 0, 0, - 1, 0, 0, 0,128,226, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200,207, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 72,208, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,208, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, +192,208, 12, 3,200,207, 12, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192,208, 12, 3, +196, 0, 0, 0, 1, 0, 0, 0, 56,209, 12, 3, 72,208, 12, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 56,209, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,176,209, 12, 3,192,208, 12, 3, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,209, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 40,210, 12, 3, 56,209, 12, 3, + 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,210, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, +160,210, 12, 3,176,209, 12, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,210, 12, 3, +196, 0, 0, 0, 1, 0, 0, 0, 24,211, 12, 3, 40,210, 12, 3, 0, 0, 0, 0,254, 4, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 24,211, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,144,211, 12, 3,160,210, 12, 3, 0, 0, 0, 0, 0, 0, 64, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144,211, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 8,212, 12, 3, 24,211, 12, 3, + 0, 0, 0, 0, 52, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8,212, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, +128,212, 12, 3,144,211, 12, 3, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128,212, 12, 3, +196, 0, 0, 0, 1, 0, 0, 0,248,212, 12, 3, 8,212, 12, 3, 0, 0, 0, 0, 52, 2, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,248,212, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128,212, 12, 3, 0, 0, 0, 0,254, 4, 64, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,213, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,240,213, 12, 3, 0, 0, 0, 0, + 72,208, 12, 3,192,208, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,240,213, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0,112,214, 12, 3,112,213, 12, 3, 72,208, 12, 3,176,209, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,112,214, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,240,214, 12, 3,240,213, 12, 3,192,208, 12, 3, 40,210, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,240,214, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,112,215, 12, 3, +112,214, 12, 3,176,209, 12, 3, 40,210, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,215, 12, 3, +197, 0, 0, 0, 1, 0, 0, 0,240,215, 12, 3,240,214, 12, 3, 40,210, 12, 3,160,210, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,240,215, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,112,216, 12, 3,112,215, 12, 3,200,207, 12, 3, + 24,211, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,216, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, +240,216, 12, 3,240,215, 12, 3,176,209, 12, 3,144,211, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +240,216, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,112,217, 12, 3,112,216, 12, 3, 24,211, 12, 3, 8,212, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,217, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,240,217, 12, 3,240,216, 12, 3, + 8,212, 12, 3,128,212, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,240,217, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0,112,218, 12, 3,112,217, 12, 3,144,211, 12, 3,128,212, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,112,218, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,240,218, 12, 3,240,217, 12, 3,160,210, 12, 3,248,212, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,240,218, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,112,219, 12, 3, +112,218, 12, 3, 56,209, 12, 3,248,212, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,219, 12, 3, +197, 0, 0, 0, 1, 0, 0, 0,240,219, 12, 3,240,218, 12, 3, 24,211, 12, 3,248,212, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,240,219, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,112,220, 12, 3,112,219, 12, 3,200,207, 12, 3, + 56,209, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,220, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, +240,220, 12, 3,240,219, 12, 3, 40,210, 12, 3,144,211, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +240,220, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,112,221, 12, 3,112,220, 12, 3,160,210, 12, 3,128,212, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,221, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,240,221, 12, 3,240,220, 12, 3, +176,209, 12, 3, 8,212, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,240,221, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,112,221, 12, 3,160,210, 12, 3, 8,212, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,112,222, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,248,225, 12, 3, 0, 0, 0, 0,176,209, 12, 3, 72,208, 12, 3, +192,208, 12, 3, 40,210, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, + 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,176,253, 12, 3,176,253, 12, 3, 56,223, 12, 3,152,224, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,223, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0,152,224, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, @@ -3205,7 +3215,7 @@ char datatoc_startup_blend[]= { 188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,128,226, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32,225, 10, 3, 0, 0, 0, 0, 0,240,109, 69, +248, 0, 0, 0,152,224, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,223, 12, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, @@ -3213,11 +3223,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,224,227, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,136,232, 10, 3, - 88,224, 10, 3,184,209, 10, 3, 0,213, 10, 3,224,214, 10, 3, 32,211, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,255, 4, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,231, 10, 3, -104,231, 10, 3,168,228, 10, 3, 8,230, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,168,228, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 8,230, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,248,225, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,160,230, 12, 3, +112,222, 12, 3,200,207, 12, 3, 24,211, 12, 3,248,212, 12, 3, 56,209, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,255, 4, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,229, 12, 3, +128,229, 12, 3,192,226, 12, 3, 32,228, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,192,226, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 32,228, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -3225,26 +3235,26 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,230, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -168,228, 10, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,228, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +192,226, 12, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0,104,231, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0,128,229, 12, 3, 176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,136,232, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 16,240, 10, 3,224,227, 10, 3, - 0,213, 10, 3,240,213, 10, 3,136,212, 10, 3,224,214, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, - 83, 1, 0, 0, 8, 8,255, 4, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,238, 10, 3,208,238, 10, 3, - 80,233, 10, 3,112,237, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 80,233, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,176,234, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 39, 68, 0, 0, 0, 0, + 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,160,230, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 40,238, 12, 3,248,225, 12, 3, + 24,211, 12, 3, 8,212, 12, 3,160,210, 12, 3,248,212, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, + 83, 1, 0, 0, 8, 8,255, 4, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,236, 12, 3,232,236, 12, 3, +104,231, 12, 3,136,235, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +104,231, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,200,232, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 96,191, 68, 0, 0,200, 65, 0, 96,191, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -3252,7 +3262,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,234, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 16,236, 10, 3, 80,233, 10, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200,232, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 40,234, 12, 3,104,231, 12, 3, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,121,195, 0, 0, 0, 0, 203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3260,8 +3270,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4, 0, 0,254, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,249, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,236, 10, 3,200, 0, 0, 0, - 1, 0, 0, 0,112,237, 10, 3,176,234, 10, 3, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40,234, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0,136,235, 12, 3,200,232, 12, 3, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, @@ -3269,7 +3279,7 @@ char datatoc_startup_blend[]= { 83, 1, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,112,237, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16,236, 10, 3, 0, 0, 0, 0, 0, 0,122, 67, +248, 0, 0, 0,136,235, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,234, 12, 3, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66, @@ -3277,18 +3287,18 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,208,238, 10, 3,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,232,236, 12, 3,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16,240, 10, 3, -199, 0, 0, 0, 1, 0, 0, 0, 16,248, 10, 3,136,232, 10, 3,240,213, 10, 3,152,211, 10, 3,120,213, 10, 3,104,214, 10, 3, + 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 40,238, 12, 3, +199, 0, 0, 0, 1, 0, 0, 0, 40,246, 12, 3,160,230, 12, 3, 8,212, 12, 3,176,209, 12, 3,144,211, 12, 3,128,212, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, 2, 2, 52, 2,102, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88,246, 10, 3, 88,246, 10, 3,216,240, 10, 3,248,244, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,240, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 56,242, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0,112,244, 12, 3,112,244, 12, 3,240,238, 12, 3, 16,243, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,238, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 80,240, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 13, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, @@ -3296,8 +3306,8 @@ char datatoc_startup_blend[]= { 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,242, 10, 3, -200, 0, 0, 0, 1, 0, 0, 0,152,243, 10, 3,216,240, 10, 3, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,240, 12, 3, +200, 0, 0, 0, 1, 0, 0, 0,176,241, 12, 3,240,238, 12, 3, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,157,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, @@ -3305,7 +3315,7 @@ char datatoc_startup_blend[]= { 216, 0, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 76, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,152,243, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,248,244, 10, 3, 56,242, 10, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,176,241, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 16,243, 12, 3, 80,240, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3313,8 +3323,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,244, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,152,243, 10, 3, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,243, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,176,241, 12, 3, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 91, 1, @@ -3322,19 +3332,19 @@ char datatoc_startup_blend[]= { 186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, - 88,246, 10, 3,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, +112,244, 12, 3,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144,247, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,144,247, 10, 3, 24, 1, 0, 0, 1, 0, 0, 0, 48, 0, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16,248, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 16,240, 10, 3,104,214, 10, 3,120,213, 10, 3, 16,212, 10, 3,136,212, 10, 3, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, - 85, 1, 0, 0,186, 2, 0, 0, 8, 8,202, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,254, 10, 3, - 88,254, 10, 3,216,248, 10, 3,248,252, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,216,248, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 56,250, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 15, 68, +168,245, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,168,245, 12, 3, 23, 1, 0, 0, 1, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 40,246, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 40,238, 12, 3,128,212, 12, 3,144,211, 12, 3, 40,210, 12, 3,160,210, 12, 3, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, + 85, 1, 0, 0,186, 2, 0, 0, 8, 8,202, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,252, 12, 3, +112,252, 12, 3,240,246, 12, 3, 16,251, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,240,246, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 80,248, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 15, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 50, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 64, 50, 68, 0, 0,200, 65, 0, 64, 50, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -3342,16 +3352,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,250, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,152,251, 10, 3, -216,248, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,248, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,176,249, 12, 3, +240,246, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,251, 10, 3, -200, 0, 0, 0, 1, 0, 0, 0,248,252, 10, 3, 56,250, 10, 3, 0, 0,112,195, 0, 0,112, 67, 0, 0, 7,195, 0, 0, 7, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,249, 12, 3, +200, 0, 0, 0, 1, 0, 0, 0, 16,251, 12, 3, 80,248, 12, 3, 0, 0,112,195, 0, 0,112, 67, 0, 0, 7,195, 0, 0, 7, 67, 105, 42,145,196,105, 42,145, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, @@ -3359,7 +3369,7 @@ char datatoc_startup_blend[]= { 254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 76, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,248,252, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152,251, 10, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 16,251, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,249, 12, 3, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 201, 2, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, @@ -3367,7 +3377,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 88,254, 10, 3,166, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,112,252, 12, 3,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3375,12 +3385,12 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 0, 0,120, 5, 0, 0, - 48, 0, 11, 3,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99, -101,110,101, 0,116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 6, 11, 3, - 0, 0, 0, 0, 88, 25, 11, 3,240, 22, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,144, 8, 11, 3,144, 9, 11, 3,144, 8, 11, 3, + 72,254, 12, 3,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99, +101,110,101, 0,116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 4, 13, 3, + 0, 0, 0, 0,104, 23, 13, 3, 8, 21, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0,168, 6, 13, 3,168, 7, 13, 3,168, 6, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 10, 11, 3,192,250,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 8, 13, 3,176, 63,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3390,7 +3400,7 @@ char datatoc_startup_blend[]= { 1, 0, 0, 0, 6, 0, 50, 0,141, 0,128, 7, 56, 4, 8, 0, 8, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, 90, 0, 1, 0, 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 11, 3, 16, 16, 11, 3, 0, 0, 1, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 14, 13, 3, 40, 14, 13, 3, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 98, 97, 99,107, 98,117, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3413,31 +3423,31 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, 68, 69, 82, 95, 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63,102,166,171, 67, 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160, 16, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 88,127, 12, 3, 1, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, + 0, 0, 0, 0,184, 14, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0,104,125, 14, 3, 1, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 32, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 5, 0, 60, 0, 5, 0, 1, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0, 180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4,205,204,204, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0, 16, 6, 11, 3, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0, 40, 4, 13, 3, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 6, 11, 3,192, 6, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,192, 6, 11, 3, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 4, 13, 3,216, 4, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,216, 4, 13, 3, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,110,101,116,119,111,114,107, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 7, 11, 3,112, 7, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,112, 7, 11, 3, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 5, 13, 3,136, 5, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,136, 5, 13, 3, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,101,114,118,101,114, 95, 97,100,100,114,101,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 8, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 10, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 32, 8, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, 91,100,101,102, 97,117,108,116, - 93, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0,144, 8, 11, 3,133, 0, 0, 0, 1, 0, 0, 0, 16, 9, 11, 3, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,102, 2,162, 1,152, 29, 11, 3, 68, 65, 84, 65, 28, 0, 0, 0, 16, 9, 11, 3, -133, 0, 0, 0, 1, 0, 0, 0,144, 9, 11, 3,144, 8, 11, 3, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 25, 3,180, 2, -160, 35, 11, 3, 68, 65, 84, 65, 28, 0, 0, 0,144, 9, 11, 3,133, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 9, 11, 3, - 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,135, 0,246, 1, 88, 25, 11, 3, 68, 65, 84, 65,144, 1, 0, 0, 16, 10, 11, 3, -153, 0, 0, 0, 1, 0, 0, 0, 8, 12, 11, 3, 24, 13, 11, 3, 40, 14, 11, 3, 0, 0,128, 63, 1, 0, 1, 0,205,204, 76, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 6, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 10, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 56, 6, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 91,100,101,102, 97,117,108,116, + 93, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0,168, 6, 13, 3,133, 0, 0, 0, 1, 0, 0, 0, 40, 7, 13, 3, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,102, 2,162, 1,168, 27, 13, 3, 68, 65, 84, 65, 28, 0, 0, 0, 40, 7, 13, 3, +133, 0, 0, 0, 1, 0, 0, 0,168, 7, 13, 3,168, 6, 13, 3, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 25, 3,180, 2, +176, 33, 13, 3, 68, 65, 84, 65, 28, 0, 0, 0,168, 7, 13, 3,133, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 7, 13, 3, + 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,135, 0,246, 1,104, 23, 13, 3, 68, 65, 84, 65,144, 1, 0, 0, 40, 8, 13, 3, +153, 0, 0, 0, 1, 0, 0, 0, 32, 10, 13, 3, 48, 11, 13, 3, 64, 12, 13, 3, 0, 0,128, 63, 1, 0, 1, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, 32, 0, 32, 0, 32, 0, 1, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152, 15, 11, 3, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 2, 0, 2, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16,101,118, 3, + 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, @@ -3447,199 +3457,2787 @@ char datatoc_startup_blend[]= { 205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, 72,225,122, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 44, 0, 0, 0, - 8, 12, 11, 3,152, 0, 0, 0, 1, 0, 0, 0,152, 12, 11, 3, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, + 32, 10, 13, 3,152, 0, 0, 0, 1, 0, 0, 0,176, 10, 13, 3, 0, 0, 0, 0, 7, 0, 0, 0,232,116,103, 3,255,255,255,128, 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0, -152, 12, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0,176,198, 12, 3, 48,124, 12, 3,136, 0, 71, 3,232,203, 12, 3, 16,136, 12, 3, -120,193, 12, 3,240,156, 12, 3, 68, 65, 84, 65, 44, 0, 0, 0, 24, 13, 11, 3,152, 0, 0, 0, 1, 0, 0, 0,168, 13, 11, 3, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0,168, 13, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0,176,198, 12, 3, - 48,124, 12, 3,136, 0, 71, 3,232,203, 12, 3, 16,136, 12, 3,120,193, 12, 3,240,156, 12, 3, 68, 65, 84, 65, 96, 0, 0, 0, - 40, 14, 11, 3,151, 0, 0, 0, 1, 0, 0, 0,240, 14, 11, 3, 5, 0, 0, 0, 17, 0, 0, 0,176,178, 88, 3,255,100,100,128, - 1, 0, 0, 0,129, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,128,130,169, 66,134, 78,144, 65, 74,254,199,188, +176, 10, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,192,196, 14, 3, 64,122, 14, 3,136, 0, 73, 3,248,201, 14, 3, 32,134, 14, 3, +136,191, 14, 3, 0,155, 14, 3, 68, 65, 84, 65, 44, 0, 0, 0, 48, 11, 13, 3,152, 0, 0, 0, 1, 0, 0, 0,192, 11, 13, 3, + 0, 0, 0, 0, 7, 0, 0, 0,216, 19,245, 2,200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0,192, 11, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,192,196, 14, 3, + 64,122, 14, 3,136, 0, 73, 3,248,201, 14, 3, 32,134, 14, 3,136,191, 14, 3, 0,155, 14, 3, 68, 65, 84, 65, 96, 0, 0, 0, + 64, 12, 13, 3,151, 0, 0, 0, 1, 0, 0, 0, 8, 13, 13, 3, 5, 0, 0, 0, 17, 0, 0, 0,104,135,118, 3,255,100,100,128, + 1, 0, 0, 0,128, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,188,229,219, 65,251,110, 40, 65,178, 96, 71,189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 68, 0, 0, 0,240, 14, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, -216,130, 12, 3, 72,141, 12, 3,184,151, 12, 3, 96,167, 12, 3,152,172, 12, 3, 0,230, 12, 3,112,240, 12, 3,168,245, 12, 3, -192, 5, 71, 3,208,177, 12, 3, 8,183, 12, 3, 64,188, 12, 3, 32,209, 12, 3, 88,214, 12, 3,144,219, 12, 3,200,224, 12, 3, -248, 10, 71, 3, 68, 65, 84, 65, 16, 0, 0, 0,152, 15, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, 40,162, 12, 3,224,250, 12, 3, -128,146, 12, 3, 56,235, 12, 3, 68, 65, 84, 65, 72, 0, 0, 0, 16, 16, 11, 3,139, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 68, 0, 0, 0, 8, 13, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, +232,128, 14, 3, 88,139, 14, 3,200,149, 14, 3,112,165, 14, 3,168,170, 14, 3, 16,228, 14, 3,128,238, 14, 3,184,243, 14, 3, +176, 3, 73, 3,224,175, 14, 3, 24,181, 14, 3, 80,186, 14, 3, 48,207, 14, 3,104,212, 14, 3,160,217, 14, 3,216,222, 14, 3, +232, 8, 73, 3, 68, 65, 84, 65, 16, 0, 0, 0, 16,101,118, 3, 0, 0, 0, 0, 1, 0, 0, 0,240,248, 14, 3,144,144, 14, 3, + 72,233, 14, 3, 40, 0,104, 3, 68, 65, 84, 65, 72, 0, 0, 0, 40, 14, 13, 3,139, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 76, 97,121,101,114, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 67, 65, 0, 0,104, 0, 0, 0,208, 17, 11, 3, 29, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 65, 0, 0,104, 0, 0, 0,232, 15, 13, 3, 29, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63,205,204,204, 61, 0, 0,200, 66, 0, 0, 12, 66,161, 14,234, 64, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 76, 65, 0, 0,108, 1, 0, 0,160, 18, 11, 3, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 65, 0, 0,108, 1, 0, 0,184, 16, 13, 3, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,247,255,239, 65, - 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,112, 20, 11, 3, 2, 0, 0, 0, 46, 26,128, 63, + 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,136, 18, 13, 3, 2, 0, 0, 0, 46, 26,128, 63, 25, 4,240, 65, 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 11, 3, 0, 1, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 111, 18,131, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 22, 11, 3, - 68, 65, 84, 65, 16, 1, 0, 0,112, 20, 11, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 20, 13, 3, + 68, 65, 84, 65, 16, 1, 0, 0,136, 18, 13, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63,242, 4, 53,191, -243, 4, 53, 63,232, 21, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +243, 4, 53, 63, 0, 20, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 21, 11, 3, 81, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 22, 11, 3, 19, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0, 20, 13, 3, 80, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128, 20, 13, 3, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 87, 79, 0, 0,120, 1, 0, 0,240, 22, 11, 3,132, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 87, 79, 0, 0,112, 1, 0, 0, 8, 21, 13, 3,132, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114, 99, 80, 61,114, 99, 80, 61, -114, 99, 80, 61, 0, 0, 0, 0,199, 54, 36, 60,199, 54, 36, 60,199, 54, 36, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, -205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0,128, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 64, - 0, 0,200, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, - 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 61, - 0, 0, 5, 0, 0, 0, 0, 0, 10,215,163, 59, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114, 99, 80, 61,199, 54, 36, 60,199, 54, 36, 60,199, 54, 36, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, + 0, 0, 32, 0,128, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 64, 0, 0,200, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,112, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 61, 0, 0, 5, 0, 0, 0, 0, 0, + 10,215,163, 59, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 24, 11, 3, 68, 65, 84, 65, 32, 0, 0, 0,208, 24, 11, 3, 19, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0, 88, 25, 11, 3,121, 0, 0, 0, 1, 0, 0, 0,152, 29, 11, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,224, 22, 13, 3, 68, 65, 84, 65, 32, 0, 0, 0,224, 22, 13, 3, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, +220, 3, 0, 0,104, 23, 13, 3,121, 0, 0, 0, 1, 0, 0, 0,168, 27, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 17, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, - 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, - 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,232, 15, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222,149, 47, 63, 53, 70, 58, 63, +222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,149, 84, 28,191, + 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,125,103,133, 51, +176,219,194,178, 0, 0, 0, 0,190, 32, 66, 51, 1, 0,128, 63,168,200,153, 51, 0, 0, 0, 0, 32,206, 18,179,126,126,149, 50, + 1, 0,128, 63, 0, 0, 0, 0,241,251,133, 52,172,182, 27,180,174,236,252, 51, 0, 0,128, 63, 0, 0,128, 63,157,190,215, 49, +167,170, 4, 52, 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, 33, 69, 15, 51, 0, 0, 0,128, 73,254, 67, 51,243, 97,106, 49, + 0, 0,128, 63, 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, 0, 0,128, 53, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,187,225, 16, 63, 0, 0,128, 63,205,204,204, 62,237, 54, 32, 63, + 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -222,149, 47, 63, 53, 70, 58, 63,222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, - 7,165, 39, 63,149, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0,168, 27, 13, 3,121, 0, 0, 0, 1, 0, 0, 0, +176, 33, 13, 3,104, 23, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 40,196,109, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,110, 14, 3, 0, 0, 0, 0, + 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, + 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,232, 31, 13, 3, 80, 32, 13, 3, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63,222,149, 47, 63, 52, 70, 58, 63,179, 56, 49,188, 0, 0, 0,128, 86,126,162,190,227,251,159, 62, + 56, 53,101, 63, 0, 0, 0,128, 7,165, 39, 63,149, 84, 28,191, 50,247,227, 62, 0, 0, 0,128,110,101,239, 64,151, 62,208,192, + 77,255,170, 64, 0, 0,128, 63, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, 79, 66, 0, 0, + 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63, +169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 32, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,152,252,244, 2,152,179, 90, 3, 25, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 4, 0, 0, 0,232, 31, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, 80, 32, 13, 3, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0,184, 32, 13, 3,124, 0, 0, 0, 1, 0, 0, 0, + 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,205,204, 76, 62, + 10,215,163, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0,176, 33, 13, 3,121, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,168, 27, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 16, 13, 3, + 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63, +112,236,188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229,123, 38, 63, 87, 43, 98, 61,229,229,238, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54,236,148,190, 25,134,116, 63,236, 13, 98,189, 0, 0, 0, 0,221,102, 69,191, + 57,174, 76,190, 34,194, 26, 63, 0, 0, 0, 0, 37,255, 16, 63,241,161, 95, 62,164,111, 75, 63, 0, 0, 0, 0,154,112,130, 64, +183,178,128, 63,112,236,188, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63,125,103,133, 51,176,219,194,178, 0, 0, 0, 0,190, 32, 66, 51, 1, 0,128, 63,168,200,153, 51, 0, 0, 0, 0, - 32,206, 18,179,126,126,149, 50, 1, 0,128, 63, 0, 0, 0, 0,241,251,133, 52,172,182, 27,180,174,236,252, 51, 0, 0,128, 63, - 0, 0,128, 63,157,190,215, 49,167,170, 4, 52, 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, 33, 69, 15, 51, 0, 0, 0,128, - 73,254, 67, 51,243, 97,106, 49, 0, 0,128, 63, 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, 0, 0,128, 53, 0, 0,128, 63, - 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,187,225, 16, 63, 0, 0,128, 63, -205,204,204, 62,237, 54, 32, 63, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, - 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 35,233,134, 49,251,110, 17,179, 0, 0, 0, 0, 49,158,141, 50, + 1, 0,128, 63,126,214,237, 50, 0, 0, 0, 0,155,248, 28,178,199,139, 96,177,254,255,127, 63, 0, 0, 0, 0, 80,136,159,178, +192, 4,158,178,209,114,143,179, 0, 0,128, 63, 53,236,148,190,222,102, 69,191, 37,255, 16, 63, 0, 0, 0,128, 24,134,116, 63, + 57,174, 76,190,240,161, 95, 62, 0, 0, 0,128,235, 13, 98,189, 34,194, 26, 63,166,111, 75, 63, 0, 0, 0,128,208, 19, 13, 63, +234, 65,102,190, 10, 10,231,192, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 68, 0, + 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, + 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0,152, 29, 11, 3, -121, 0, 0, 0, 1, 0, 0, 0,160, 35, 11, 3, 88, 25, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112, -104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 26, 71, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160,112, 12, 3, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 33, 11, 3, 64, 34, 11, 3, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,222,149, 47, 63, 52, 70, 58, 63,179, 56, 49,188, 0, 0, 0,128, - 86,126,162,190,227,251,159, 62, 56, 53,101, 63, 0, 0, 0,128, 7,165, 39, 63,149, 84, 28,191, 50,247,227, 62, 0, 0, 0,128, -110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, - 0, 0, 68, 0, 79, 66, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, - 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 64, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 34, 11, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 15,243, 2,136,246, 88, 3, - 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,216, 33, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 4, 0, 0, 0, 64, 34, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0,168, 34, 11, 3, -124, 0, 0, 0, 1, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205,204,204, 61,205,204, 76, 62, 10,215,163, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0, -160, 35, 11, 3,121, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152, 29, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97, -109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160, 18, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 65, 0, 0,160, 2, 0, 0,240, 37, 13, 3, 44, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 50, 0,205,204, 76, 62, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 4, 0, 67, 0, 64, 3, 67, 0, 64, 3, 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61, 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,248, 40, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229,123, 38, 63, - 87, 43, 98, 61,229,229,238, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54,236,148,190, 25,134,116, 63,236, 13, 98,189, - 0, 0, 0, 0,221,102, 69,191, 57,174, 76,190, 34,194, 26, 63, 0, 0, 0, 0, 37,255, 16, 63,241,161, 95, 62,164,111, 75, 63, - 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 35,233,134, 49,251,110, 17,179, - 0, 0, 0, 0, 49,158,141, 50, 1, 0,128, 63,126,214,237, 50, 0, 0, 0, 0,155,248, 28,178,199,139, 96,177,254,255,127, 63, - 0, 0, 0, 0, 80,136,159,178,192, 4,158,178,209,114,143,179, 0, 0,128, 63, 53,236,148,190,222,102, 69,191, 37,255, 16, 63, - 0, 0, 0,128, 24,134,116, 63, 57,174, 76,190,240,161, 95, 62, 0, 0, 0,128,235, 13, 98,189, 34,194, 26, 63,166,111, 75, 63, - 0, 0, 0,128,208, 19, 13, 63,234, 65,102,190, 10, 10,231,192, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, - 5, 0, 1, 0, 0, 0, 68, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, - 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0, -143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 42, 13, 3, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111,148, 26, 63,111,148, 26, 63, +111,148, 26, 63,205,204, 76, 61,205,204,204, 61,102,102,166, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,248, 40, 13, 3, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,203, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,104, 42, 13, 3, 19, 0, 0, 0, + 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 1, 0, 1, 0, 49, 0, 49, 0,240, 42, 13, 3, + 88, 59, 13, 3, 68, 65, 84, 65, 0, 16, 0, 0,240, 42, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0, + 88, 59, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0, 48, 1, 0, 0,192,203, 13, 3, 39, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 7, 0, 8, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 1, 0, + 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,205, 13, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88,205, 13, 3, 19, 0, 0, 0, + 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 14, 0, 13, 0,224,205, 13, 3, + 72,222, 13, 3, 68, 65, 84, 65, 0, 16, 0, 0,224,205, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 68, 65, 84, 65, 0,144, 0, 0, + 72,222, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0, 40, 1, 0, 0,176,110, 14, 3, 54, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0,160, 2, 0, 0,224, 39, 11, 3, 44, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63, -205,204, 76, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, -205,204, 76, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 50, 0,205,204, 76, 62, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 18, 0, 10,215,163, 59, - 10,215,163, 59, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 4, 0, 67, 0, 64, 3, 67, 0, 64, 3, 1, 0, 4, 0, 12, 0, 4, 0, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61, 0, 0, 0, 63,205,204,204, 61, -205,204,204, 61, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63,232, 42, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,112, 14, 3,240,119, 14, 3,208,120, 14, 3, 0, 0, 0, 0, 96,114, 14, 3, + 64,117, 14, 3, 0, 0, 0, 0, 24,109,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,112, 14, 3, + 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,115, 14, 3, 1, 0, 0, 0, + 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,118, 14, 3, 3, 0, 0, 0, 5, 0, 0, 0, + 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 30, 0, 6, 0, 1, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, 64,112, 14, 3, 0, 0, 0, 0, 1, 0, 0, 0,240, 37, 13, 3, + 68, 65, 84, 65, 84, 1, 0, 0,168,112, 14, 3, 87, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 44, 11, 3, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -111,148, 26, 63,111,148, 26, 63,111,148, 26, 63,205,204, 76, 61,205,204,204, 61,102,102,166, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 8, 1, 0, 0,232, 42, 11, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,205, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,114, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0, - 88, 44, 11, 3, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 1, 0, 1, 0, - 49, 0, 49, 0,224, 44, 11, 3, 72, 61, 11, 3, 68, 65, 84, 65, 0, 16, 0, 0,224, 44, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3647,7 +6245,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, 96,114, 14, 3, 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63, +255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191, +230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191,253,255,127,191, 0, 0,128,191, 26,182, 26,182, 26,182,255,127, + 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63, +247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, 1, 0, 0, 0,245,255,127, 63, 5, 0,128,191, 0, 0,128, 63, +230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191,250,255,127,191, 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, + 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73,230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65, + 84, 1, 0, 0,136,115, 14, 3, 87, 1, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,117, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3656,2657 +6263,43 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0, 64,117, 14, 3, 57, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 35, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, + 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 5, 0, 0, 0, + 0, 0, 35, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65, 84, 1, 0, 0, 56,118, 14, 3, 87, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,119, 14, 3, + 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208,120, 14, 3, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24,109,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 0,144, 0, 0, 72, 61, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0, 48, 1, 0, 0,176,205, 11, 3, - 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 84,101,120, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 62, 0, 0,160, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 7, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -205,204,204, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 72,207, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 72,207, 11, 3, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, - 14, 0, 13, 0,208,207, 11, 3, 56,224, 11, 3, 68, 65, 84, 65, 0, 16, 0, 0,208,207, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 68, 65, 84, 65, 0,144, 0, 0, 56,224, 11, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0, 40, 1, 0, 0,160,112, 12, 3, - 54, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 67,117, 98,101, 0,112, -104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,114, 12, 3,224,121, 12, 3,192,122, 12, 3, - 0, 0, 0, 0, 80,116, 12, 3, 48,119, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,152,114, 12, 3, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120,117, 12, 3, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,120, 12, 3, - 2, 0, 0, 0, 5, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, 0, 0, 0, 0, 4, 0,128, 63, - 4, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 30, 0, 6, 0, - 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, 48,114, 12, 3, 0, 0, 0, 0, - 1, 0, 0, 0,224, 39, 11, 3, 68, 65, 84, 65, 84, 1, 0, 0,152,114, 12, 3, 88, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,116, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, 80,116, 12, 3, 60, 0, 0, 0, - 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, 1, 0, 0, 0, 0, 0,128, 63, - 0, 0,128,191, 0, 0,128,191,230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191,253,255,127,191, 0, 0,128,191, - 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, 26,182,255,127, - 1, 0, 0, 0, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, 1, 0, 0, 0,245,255,127, 63, - 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191,250,255,127,191, 0, 0,128, 63, - 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73,230, 73,255,127, - 1, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0,120,117, 12, 3, 88, 1, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,119, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0, 48,119, 12, 3, 57, 0, 0, 0, 12, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, - 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65, 84, 1, 0, 0, 40,120, 12, 3, 88, 1, 0, 0, - 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,224,121, 12, 3, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,192,122, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,120, 0, 0, 0, -224,121, 12, 3, 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, - 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, - 6, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 2, 68, 65, 84, 65, 8, 1, 0, 0,192,122, 12, 3, 67, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,120, 0, 0, 0,240,119, 14, 3, 56, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 7, 0, 0, 0, + 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, + 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, 68, 65, 84, 65, + 8, 1, 0, 0,208,120, 14, 3, 67, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 66, 82, 0, 0,196, 2, 0, 0, 48,124, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0,216,130, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,200,128, 12, 3, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, -124,124, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, + 24,109,104, 3, 61, 0, 0, 0, 24, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255, 66, 82, 0, 0,196, 2, 0, 0, 64,122, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, +232,128, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, 48, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 23, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0,216,126, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, @@ -6314,64 +6307,19 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,200,128, 12, 3, - 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 64,130, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, - 64,130, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, - 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, -196, 2, 0, 0,216,130, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, 16,136, 12, 3, 48,124, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 66,108,111, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 23, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0,134, 12, 3, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 32,243,242, 2, 1, 0, 0, 0, 0, 0, 0, 0,248, 60,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 48,153, 91, 3, 17, 0, 0, 0, 0, 0, 0, 0, +168,169, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, - 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 36,131, 12, 3, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 0,134, 12, 3, 83, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,120,135, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,120,135, 12, 3, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, - 16,136, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, 72,141, 12, 3,216,130, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108, -117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 56,139, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,140,122, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6380,170 +6328,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 92,136, 12, 3, 32, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 56,139, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,176,140, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,176,140, 12, 3, 81, 1, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, - 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 72,141, 12, 3, - 87, 1, 0, 0, 1, 0, 0, 0,128,146, 12, 3, 16,136, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, 97,121, 0, 48, - 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 24, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,112,144, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 72, 26,104, 3, - 2, 0, 0, 0, 0, 0, 0, 0,248, 62,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, - 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,148,141, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,112,144, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, - 46, 95,255,186,224,255,127,191,114, 97,255,186,232,145, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,232,145, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,128,146, 12, 3, 87, 1, 0, 0, - 1, 0, 0, 0,184,151, 12, 3, 72,141, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,149, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,204,146, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,168,149, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, - 14,215,126,191, 46,189,194, 61, 32,151, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 32,151, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,184,151, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, -240,156, 12, 3,128,146, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,114,101, 97,115,101, 0, 48, 48, 49, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 25, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 0,224,154, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,168, 69,106, 3, 3, 0, 0, 0, 0, 0, 0, 0, -200, 79, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 4,152, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,224,154, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,228, 97,175,190, 50,131,112, 63,218,243,127,191, - 10,183,157,188, 88,156, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,216,126, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, + 46,189,194, 61, 80,128, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 88,156, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215, 35, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,240,156, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, 40,162, 12, 3, -184,151, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, 0, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 24,160, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 80,128, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,232,128, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 32,134, 14, 3, + 64,122, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,111, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 16,132, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -6551,7 +6350,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6559,11 +6358,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 8, 1, 0, 0, 60,157, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 4, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, + 68, 65, 84, 65, 8, 1, 0, 0, 52,129, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, @@ -6572,21 +6371,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 16, 1, 0, 0, 24,160, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 16, 1, 0, 0, 16,132, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, -144,161, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, +136,133, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0,144,161, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 40,162, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, 96,167, 12, 3,240,156, 12, 3, - 75,247,105, 0, 0, 0, 0, 0, 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, - 80,165, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0,136,133, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 32,134, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 88,139, 14, 3,232,128, 14, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 2, 24, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, + 72,137, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -6594,7 +6393,1036 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,200,235,107, 3, 18, 0, 0, 0, 0, 0, 0, 0,248, 77,104, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, + 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 8, 1, 0, 0,108,134, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, + 72,137, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, + 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,192,138, 14, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,192,138, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 0, 0,196, 2, 0, 0, 88,139, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,144,144, 14, 3, 32,134, 14, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 67,108, 97,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,128,142, 14, 3, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 4, 8, 0, 0, 0, 0, 10, 0, 0, 0, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, + 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, +164,139, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,128,142, 14, 3, + 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,248,143, 14, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, +248,143, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, + 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, +196, 2, 0, 0,144,144, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,200,149, 14, 3, 88,139, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 31, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,184,147, 14, 3, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,160, 7, 92, 3, 19, 0, 0, 0, 0, 0, 0, 0, 40,136,118, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,220,144, 14, 3, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,184,147, 14, 3, 82, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 48,149, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 48,149, 14, 3, + 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, +200,149, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 0,155, 14, 3,144,144, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,114, +101, 97,115,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,240,152, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 20,150, 14, 3, 32, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,240,152, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, +228, 97,175,190, 50,131,112, 63,218,243,127,191, 10,183,157,188,104,154, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,104,154, 14, 3, 80, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 64, 63, + 10,215, 35, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 0,155, 14, 3, + 86, 1, 0, 0, 1, 0, 0, 0, 56,160, 14, 3,200,149, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, + 0, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 25, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 40,158, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,240,244, 90, 3, + 20, 0, 0, 0, 0, 0, 0, 0, 80,108,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 76,155, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 40,158, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, + 54,189,194, 61, 14,215,126,191, 46,189,194, 61,160,159, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,160,159, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 56,160, 14, 3, 86, 1, 0, 0, + 1, 0, 0, 0,112,165, 14, 3, 0,155, 14, 3, 40, 0,104, 3, 0, 0, 0, 0, 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 29, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 96,163, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,160, 89,118, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 48,236, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, + 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,132,160, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 96,163, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186, +224,255,127,191,114, 97,255,186,216,164, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,216,164, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,112,165, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, +168,170, 14, 3, 56,160, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,105,108,108, 47, 68,101,101,112,101,110, 0, 48, 48, + 49, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0,152,168, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,188,165, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,152,168, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186, 16,170, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 16,170, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,168,170, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,224,175, 14, 3, +112,165, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,108, 97,116,116,101,110, 47, 67,111,110,116,114, 97,115,116, 0, 48, + 48, 49, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,208,173, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 4, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 8, 1, 0, 0,244,170, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, + 16, 1, 0, 0,208,173, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, + 72,175, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 72,175, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,224,175, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 24,181, 14, 3,168,170, 14, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, 97, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, + 8,179, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, + 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 8, 1, 0, 0, 44,176, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, + 8,179, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, + 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,128,180, 14, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,128,180, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, +215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 0, 0,196, 2, 0, 0, 24,181, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 80,186, 14, 3,224,175, 14, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 73,110,102,108, 97,116,101, 47, 68,101,102,108, 97,116,101, 0, 48, 48, 49, 0, 0, 0, 2, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 64,184, 14, 3, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, + 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0, +100,181, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 64,184, 14, 3, + 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,184,185, 14, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, +184,185, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, + 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, +196, 2, 0, 0, 80,186, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,136,191, 14, 3, 24,181, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,120,189, 14, 3, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 20,174,199, 62, 20,174,199, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,156,186, 14, 3, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,120,189, 14, 3, 82, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,240,190, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,240,190, 14, 3, + 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, +136,191, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,192,196, 14, 3, 80,186, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105, +103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 26, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,176,194, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0,160,103, 3, 21, 0, 0, 0, 0, 0, 0, 0,136,174,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,212,191, 14, 3, 32, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,176,194, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 40,196, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40,196, 14, 3, 80, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, + 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,192,196, 14, 3, + 86, 1, 0, 0, 1, 0, 0, 0,248,201, 14, 3,136,191, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 22, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,232,199, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 8,177,107, 3, + 22, 0, 0, 0, 0, 0, 0, 0, 32,243,244, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 12,197, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,232,199, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, + 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 96,201, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 96,201, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,248,201, 14, 3, 86, 1, 0, 0, + 1, 0, 0, 0, 48,207, 14, 3,192,196, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117,108,116,105,112,108,121, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 27, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 32,205, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,208, 81,105, 3, 23, 0, 0, 0, + 0, 0, 0, 0, 40, 57, 91, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 68,202, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 32,205, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, + 14,215,126,191, 46,189,194, 61,152,206, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,152,206, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 48,207, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, +104,212, 14, 3,248,201, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 78,117,100,103,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0, 88,210, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,124,207, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0, 88,210, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186,208,211, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,208,211, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,104,212, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,160,217, 14, 3, + 48,207, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,105,110, 99,104, 47, 77, 97,103,110,105,102,121, 0, 48, 48, 49, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,144,215, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 4, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, + 68, 65, 84, 65, 8, 1, 0, 0,180,212, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, + 16, 1, 0, 0,144,215, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, + 8,217, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 8,217, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,160,217, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,216,222, 14, 3,104,212, 14, 3, + 9,186,107, 0, 0, 0, 0, 0, 66, 82, 80,111,108,105,115,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +200,220, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 1, 0, 0, 0, 0, + 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, + 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, + 8, 1, 0, 0,236,217, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, +200,220, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, + 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 64,222, 14, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0, 64,222, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, +215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 0, 0,196, 2, 0, 0,216,222, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 16,228, 14, 3,160,217, 14, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 83, 99,114, 97,112,101, 47, 80,101, 97,107,115, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0,226, 14, 3, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, + 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, + 36,223, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 0,226, 14, 3, + 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,120,227, 14, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, +120,227, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, + 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, +196, 2, 0, 0, 16,228, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 72,233, 14, 3,216,222, 14, 3,164, 25,110, 0, 0, 0, 0, 0, + 66, 82, 83, 99,117,108,112,116, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 34, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 56,231, 14, 3, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,240, 41,125, 3, 4, 0, 0, 0, 0, 0, 0, 0,168,193, 91, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0,160,119, 78, 63, 0, 0,128, 63, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 92,228, 14, 3, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 56,231, 14, 3, 82, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,176,232, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,176,232, 14, 3, + 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, + 72,233, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,128,238, 14, 3, 16,228, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109, +101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 32, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,112,236, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +232, 93,105, 3, 24, 0, 0, 0, 0, 0, 0, 0, 56,232,244, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,148,233, 14, 3, 32, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,112,236, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,232,237, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,232,237, 14, 3, 80, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, + 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,128,238, 14, 3, + 86, 1, 0, 0, 1, 0, 0, 0,184,243, 14, 3, 72,233, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, + 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,241, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,204,238, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,168,241, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186, 32,243, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 32,243, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,184,243, 14, 3, 86, 1, 0, 0, + 1, 0, 0, 0,240,248, 14, 3,128,238, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,110, 97,107,101, 32, 72,111,111,107, + 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,224,246, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 4,244, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,224,246, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186, +224,255,127,191,114, 97,255,186, 88,248, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 88,248, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,240,248, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, +136, 0, 73, 3,184,243, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 33, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0, 24,252, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 40, 38, 92, 3, 25, 0, 0, 0, 0, 0, 0, 0, +120,197,109, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 60,249, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0, 24,252, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, + 46,189,194, 61,144,253, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,144,253, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,136, 0, 73, 3, 86, 1, 0, 0, 1, 0, 0, 0, 40, 0,104, 3, +240,248, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,117, 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 2, 28, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 40,254, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,192, 7,104, 3, 26, 0, 0, 0, 0, 0, 0, 0, 64, 38,105, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 8, 1, 0, 0,212, 0, 73, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, + 16, 1, 0, 0, 40,254, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, +160,255, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0,160,255, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 40, 0,104, 3, 86, 1, 0, 0, 1, 0, 0, 0,176, 3, 73, 3,136, 0, 73, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,101,120, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 3, 30, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, + 56, 94, 92, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,184, 5,113, 3, 27, 0, 0, 0, 0, 0, 0, 0, 48,236, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6606,7 +7434,7 @@ char datatoc_startup_blend[]= { 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, - 8, 1, 0, 0,116,162, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 1, 0, 0,116, 0,104, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, @@ -6615,20 +7443,20 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, - 80,165, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 56, 94, 92, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,200,166, 12, 3, + 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,120, 80,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 48, 0, 0, 0,200,166, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 48, 0, 0, 0,120, 80,105, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0,196, 2, 0, 0, 96,167, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0,152,172, 12, 3, 40,162, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 70,105,108,108, 47, 68,101,101,112,101,110, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, - 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,136,170, 12, 3, + 66, 82, 0, 0,196, 2, 0, 0,176, 3, 73, 3, 86, 1, 0, 0, 1, 0, 0, 0,232, 8, 73, 3, 40, 0,104, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 84,104,117,109, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,216, 6, 73, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, @@ -6637,7 +7465,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,232,227,103, 3, 5, 0, 0, 0, 0, 0, 0, 0,152,232, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6645,354 +7473,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, - 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, -172,167, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,136,170, 12, 3, - 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 0,172, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, - 0,172, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, - 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, -196, 2, 0, 0,152,172, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0,208,177, 12, 3, 96,167, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 70,108, 97,116,116,101,110, 47, 67,111,110,116,114, 97,115,116, 0, 48, 48, 49, 0, 0, 2, 0, 0, 3, 27, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,192,175, 12, 3, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 75,104, 3, 6, 0, 0, 0, 0, 0, 0, 0, 0, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, - 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,228,172, 12, 3, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,192,175, 12, 3, 83, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 56,177, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,177, 12, 3, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, -208,177, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, 8,183, 12, 3,152,172, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, - 97, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 28, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,248,180, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 88,236,105, 3, 7, 0, 0, 0, 0, 0, 0, 0,248, 31, 91, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, - 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 28,178, 12, 3, 32, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,248,180, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, -224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,112,182, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,112,182, 12, 3, 81, 1, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63, -143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 8,183, 12, 3, - 87, 1, 0, 0, 1, 0, 0, 0, 64,188, 12, 3,208,177, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 73,110,102,108, 97,116, -101, 47, 68,101,102,108, 97,116,101, 0, 48, 48, 49, 0, 0, 0, 2, 0, 0, 3, 29, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 48,186, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 56, 32,106, 3, - 8, 0, 0, 0, 0, 0, 0, 0, 24,252,101, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, - 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0, 84,183, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 48,186, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, - 46, 95,255,186,224,255,127,191,114, 97,255,186,168,187, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,168,187, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 64,188, 12, 3, 87, 1, 0, 0, - 1, 0, 0, 0,120,193, 12, 3, 8,183, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 30, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,104,191, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 40,212,103, 3, 9, 0, 0, 0, - 0, 0, 0, 0,136, 87, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,140,188, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,104,191, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186, -224,255,127,191,114, 97,255,186,224,192, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,224,192, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,120,193, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, -176,198, 12, 3, 64,188, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105,103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 0,160,196, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,196,193, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,160,196, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61, 24,198, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 24,198, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,176,198, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0,232,203, 12, 3, -120,193, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,216,201, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 8, 1, 0, 0,252,198, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 16, 1, 0, 0,216,201, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, - 80,203, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0, 80,203, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,232,203, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, 32,209, 12, 3,176,198, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117,108,116,105,112,108,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, - 16,207, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, - 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 8, 1, 0, 0, 52,204, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, - 16,207, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,136,208, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 48, 0, 0, 0,136,208, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, - 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0,196, 2, 0, 0, 32,209, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, 88,214, 12, 3,232,203, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 78,117,100,103,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, - 31, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 72,212, 12, 3, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,112, 12, 91, 3, 10, 0, 0, 0, 0, 0, 0, 0, 56, 91, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, + 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, -108,209, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +252, 3, 73, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, @@ -7000,21 +7485,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 72,212, 12, 3, - 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,216, 6, 73, 3, + 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,192,213, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 80, 8, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, -192,213, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, + 80, 8, 73, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, -196, 2, 0, 0, 88,214, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0,144,219, 12, 3, 32,209, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 80,105,110, 99,104, 47, 77, 97,103,110,105,102,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 2, 0, 0, 3, 32, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,128,217, 12, 3, 1, 0, 1, 0, +196, 2, 0, 0,232, 8, 73, 3, 86, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176, 3, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 84,119,105,115,116, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 12, 73, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7023,7 +7508,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,200,166,101, 3, 11, 0, 0, 0, 0, 0, 0, 0,232, 94, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7031,10 +7516,10 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, - 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0,164,214, 12, 3, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, + 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 52, 9, 73, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -7043,73 +7528,37 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,128,217, 12, 3, 83, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 16, 12, 73, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,248,218, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,136, 13, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,248,218, 12, 3, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, -144,219, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0,200,224, 12, 3, 88,214, 12, 3, 9,186,107, 0, 0, 0, 0, 0, 66, 82, 80,111, -108,105,115,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 33, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,184,222, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136, 13, 73, 3, + 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 85, 83, 69, 82,248, 12, 0, 0, +224,249,240, 1,194, 0, 0, 0, 1, 0, 0, 0, 33, 8, 17, 1, 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 75,104, 3, 6, 0, 0, 0, 0, 0, 0, 0,216,208,101, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85,115,101,114,115, + 47,116,111,110, 47, 68,101,115,107,116,111,112, 47, 0, 45,112,111,119,101,114,112, 99, 47, 98,105,110, 47, 98,108,101,110,100, +101,114, 46, 97,112,112, 47, 67,111,110,116,101,110,116,115, 47, 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 9, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, - 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,220,219, 12, 3, 32, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,184,222, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, -224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 48,224, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 48,224, 12, 3, 81, 1, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63, -143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,200,224, 12, 3, - 87, 1, 0, 0, 1, 0, 0, 0, 0,230, 12, 3,144,219, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83, 99,114, 97,112,101, - 47, 80,101, 97,107,115, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 34, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,240,227, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,168,220,105, 3, - 12, 0, 0, 0, 0, 0, 0, 0,136,212,101, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7117,84 +7566,24 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, - 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 20,225, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,240,227, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, - 46, 95,255,186,224,255,127,191,114, 97,255,186,104,229, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,104,229, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 0,230, 12, 3, 87, 1, 0, 0, - 1, 0, 0, 0, 56,235, 12, 3,200,224, 12, 3,164, 25,110, 0, 0, 0, 0, 0, 66, 82, 83, 99,117,108,112,116, 68,114, 97,119, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 22, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 40,233, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,144,101,104, 3, 4, 0, 0, 0, - 0, 0, 0, 0, 64, 17, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0,230,104, 64, 63, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, - 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 76,230, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 40,233, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186, -224,255,127,191,114, 97,255,186,160,234, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,160,234, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 56,235, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0, -112,240, 12, 3, 0,230, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 0, 96,238, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7202,369 +7591,37 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,132,235, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 96,238, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61,216,239, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, + 2, 0, 94, 1, 8, 0, 0, 0, 3, 0, 0, 0, 56, 52, 39, 1, 0, 0, 0, 0, 2, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0, + 68,172, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0,128, 0, 0, 0, 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0,128, 27, 73, 3, +128, 27, 73, 3,120,100, 3, 3,120,100, 3, 3,136,125, 3, 3,136,125, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,216,239, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,112,240, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0,168,245, 12, 3, - 56,235, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 35, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,152,243, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,248,176,101, 3, 13, 0, 0, 0, 0, 0, 0, 0, 88, 24,114, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 2, 0, 25, 0, 1, 0, 20, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63, +205,204, 76, 63,205,204, 76, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 30, 90,100,191, +154,153,153, 62,102,102,102, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31,250,254, 62, 9, 0, 0, 63,156,153, 25, 63, + 0, 0, 0, 0,205,204, 76, 62,205,204, 76, 62,205,204, 76, 62, 0, 0,128, 63, 44,135, 22, 63, 32,133,235, 62,184,243,125, 62, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,195, 73, 76, 63, 42,135, 86, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 43,135, 61, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 16, 47, 93, 62, 58,180,200,190, 24, 47, 93,190, 0, 0, 0, 0, 1, 0, 14, 0, + 0, 0, 25, 0, 15, 0,120, 0, 60, 0, 3, 0,128, 0, 0, 0, 0, 0, 0, 0,144, 31, 15, 0, 6, 0, 25, 0, 8, 0, 10, 0, +200, 0, 0, 0,100, 0,100, 0, 0, 0, 0, 0, 2, 0, 1, 0, 10, 0, 50, 0,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, - 0, 0, 0, 0, 5, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 8, 1, 0, 0,188,240, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 16, 1, 0, 0,152,243, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, - 16,245, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0, 16,245, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,168,245, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0,224,250, 12, 3,112,240, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,110, 97,107,101, 32, 72,111,111,107, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 3, 36, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, -208,248, 12, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,200, 4, 90, 3, 14, 0, 0, 0, 0, 0, 0, 0, 96,253,102, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, - 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 8, 1, 0, 0,244,245, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, -208,248, 12, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 72,250, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 48, 0, 0, 0, 72,250, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, -215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0,196, 2, 0, 0,224,250, 12, 3, 87, 1, 0, 0, 1, 0, 0, 0,136, 0, 71, 3,168,245, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 8,254, 12, 3, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, - 44,251, 12, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 8,254, 12, 3, - 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,128,255, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, -128,255, 12, 3, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, - 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, -196, 2, 0, 0,136, 0, 71, 3, 87, 1, 0, 0, 1, 0, 0, 0,192, 5, 71, 3,224,250, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 83,117, 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,176, 3, 71, 3, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,212, 0, 71, 3, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,176, 3, 71, 3, 83, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 40, 5, 71, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40, 5, 71, 3, - 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, -192, 5, 71, 3, 87, 1, 0, 0, 1, 0, 0, 0,248, 10, 71, 3,136, 0, 71, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,104, -117,109, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 37, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,232, 8, 71, 3, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -168,149,107, 3, 15, 0, 0, 0, 0, 0, 0, 0,176,255,102, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, - 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 12, 6, 71, 3, 32, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,232, 8, 71, 3, 83, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, -224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 96, 10, 71, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 96, 10, 71, 3, 81, 1, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63, -143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,248, 10, 71, 3, - 87, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192, 5, 71, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,119,105,115,116, 0, - 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 38, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 32, 14, 71, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 72,170,105, 3, - 16, 0, 0, 0, 0, 0, 0, 0, 40,255,242, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 68, 11, 71, 3, 32, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 32, 14, 71, 3, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, - 46, 95,255,186,224,255,127,191,114, 97,255,186,152, 15, 71, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,152, 15, 71, 3, 81, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 85, 83, 69, 82,248, 12, 0, 0, 0,201,238, 1,194, 0, 0, 0, - 1, 0, 0, 0, 33, 8, 17, 1, 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85,115,101,114,115, 47,116,111,110, 47, 68,101,115, -107,116,111,112, 47, 0, 45,112,111,119,101,114,112, 99, 47, 98,105,110, 47, 98,108,101,110,100,101,114, 46, 97,112,112, 47, 67, -111,110,116,101,110,116,115, 47, 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 2, 0, 94, 1, 8, 0, 0, 0, - 3, 0, 0, 0, 56, 52, 39, 1, 0, 0, 0, 0, 2, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0, 68,172, 0, 0, 36, 0, 0, 0, - 2, 0, 0, 0,128, 0, 0, 0, 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0,144, 29, 71, 3,144, 29, 71, 3, 64,101, 1, 3, - 64,101, 1, 3,232,125, 1, 3,232,125, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, - 1, 0, 2, 0, 25, 0, 1, 0, 20, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 30, 90,100,191,154,153,153, 62,102,102,102, 63, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31,250,254, 62, 9, 0, 0, 63,156,153, 25, 63, 0, 0, 0, 0,205,204, 76, 62, -205,204, 76, 62,205,204, 76, 62, 0, 0,128, 63, 44,135, 22, 63, 32,133,235, 62,184,243,125, 62, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,195, 73, 76, 63, 42,135, 86, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 43,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 16, 47, 93, 62, 58,180,200,190, 24, 47, 93,190, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 25, 0, 15, 0,120, 0, - 60, 0, 3, 0,128, 0, 0, 0, 0, 0, 0, 0,144, 31, 15, 0, 6, 0, 25, 0, 8, 0, 10, 0,200, 0, 0, 0,100, 0,100, 0, - 0, 0, 0, 0, 2, 0, 1, 0, 10, 0, 50, 0,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, @@ -7586,180 +7643,33 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 48, 29, 0, 0,144, 29, 71, 3,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,101,102, 97,117,108,116, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255, -100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255, -100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255, -153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, - 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 70, 70, 70,255, - 70, 70, 70,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255, -100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255, -153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255, -153,153,153,255,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, - 70, 70, 70,255,255,255,255,255,255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 63, 63, 63,255, - 86,128,194,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 25, 25, 25,230, - 45, 45, 45,230,100,100,100,255,160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, - 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, 25, 25, 25,255,128,128,128,255, -100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50,180, 80, 80, 80,180, -100,100,100,180,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255,190,190,190,255, -100,100,100,180, 68, 68, 68,255, 0, 0, 0,255,255,255,255,255, 0, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, - 86,128,194,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,115,190, 76,255, 90,166, 51,255, -240,235,100,255,215,211, 75,255,180, 0,255,255,153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0,243,133, 57, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 29, 0, 0,128, 27, 73, 3,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, + 25, 25, 25,255,153,153,153,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0,255, 70, 70, 70,255, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, + 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, + 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 25, 25,255,180,180,180,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, + 25, 25, 25,255,180,180,180,255,153,153,153,255,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, + 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255,255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, + 0, 0, 0,255, 63, 63, 63,255, 86,128,194,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, + 0, 0, 0,255, 25, 25, 25,230, 45, 45, 45,230,100,100,100,255,160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, + 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, + 25, 25, 25,255,128,128,128,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, + 50, 50, 50,180, 80, 80, 80,180,100,100,100,180,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, + 0, 0, 0,255,190,190,190,255,100,100,100,180, 68, 68, 68,255, 0, 0, 0,255,255,255,255,255, 0, 0, 5, 0,251,255, 0, 0, + 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, +115,190, 76,255, 90,166, 51,255,240,235,100,255,215,211, 75,255,180, 0,255,255,153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, - 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255,204, 0,153,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, -200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, -240,255, 64,255,240,144,160,255,255,255,255,255, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 76, 76,255, 0, 0, 0, 0, -250,250,250,255, 15, 15, 15,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100,255,140, 25,255,250,250,250,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,130,130,130,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, - 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, -128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, -128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,250,250,250,255,250,250,250,255,250,250,250,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, - 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, -144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255, -124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, - 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, 114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, -200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, -240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, - 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255, -128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, -128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, - 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, -144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255, -124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, - 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,109, 88,129,255, - 78,152, 62,255, 46,143,143,255,169, 84,124,255,126,126, 80,255,162, 95,111,255,109,145,131,255,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0,255,255,255, 10,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, -200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, -240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255,110,110,110,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,132,132,132,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255, 94, 94, 94,255,172,172,172,255, 17, 27, 60,100, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,195,195,195,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, - 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, -128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, -128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255, 64, 64, 64,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, - 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, -144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,100, 0, 0,255, - 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, - 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, 255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, 200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, 240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, @@ -7771,17 +7681,107 @@ char datatoc_startup_blend[]= { 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,255,255,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255,204, 0,153,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255,255,255,255,255, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 76, 76,255, 0, 0, 0, 0,250,250,250,255, 15, 15, 15,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +145,145,145,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100,255,140, 25,255,250,250,250,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,130,130,130,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250,250,250,255,250,250,250,255,250,250,250,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, + 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255, +255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, 128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, 128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,155,155,155,160,100,100,100,255,108,105,111,255, -104,106,117,255,105,117,110,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255, +124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, + 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255, +255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 81,105,135,255,109, 88,129,255, 78,152, 62,255, 46,143,143,255,169, 84,124,255,126,126, 80,255,162, 95,111,255,109,145,131,255, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0,255,255,255, 10,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, +110,110,110,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, +132,132,132,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 94, 94, 94,255,172,172,172,255, 17, 27, 60,100, 94, 94, 94,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,195,195,195,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, 255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, 255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, @@ -7789,7 +7789,52 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0,153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255, +255, 0, 0,255, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0,100, 0, 0,255, 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,255,255,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,155,155,155,160, +100,100,100,255,108,105,111,255,104,106,117,255,105,117,110,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, @@ -7800,7 +7845,7 @@ char datatoc_startup_blend[]= { 240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, 114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, @@ -7808,949 +7853,958 @@ char datatoc_startup_blend[]= { 255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, 200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, 240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,128,255,255,255,255,255,255, 0,170, 0,255, -220, 96, 96,255,220, 96, 96,255, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255, -247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255, -131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255, -240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255, -111,182,171,255, 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0,244,201, 12,255,238,194, 54,255, -243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0,111, 47,106,255,152, 69,190,255, -211, 48,214,255, 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0,141,141,141,255,176,176,176,255, -222,222,222,255, 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, - 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,128,255,255, +255,255,255,255, 0,170, 0,255,220, 96, 96,255,220, 96, 96,255, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 68, 78, 65, 49,248,226, 0, 0,216,190,116, 3, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69,208, 11, 0, 0, - 42,110,101,120,116, 0, 42,112,114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, 0, 42,108, 97,115,116, 0,120, - 0,121, 0,122, 0,119, 0,120,109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, 97,120, 0, 42,112,111,105,110, -116,101,114, 0,103,114,111,117,112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0,115,117, 98,116,121,112,101, 0, -102,108, 97,103, 0,110, 97,109,101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0,100, 97,116, 97, 0,108,101,110, 0,116,111,116, - 97,108,108,101,110, 0, 42,110,101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 50, 52, 93, 0,117,115, 0,105, 99, -111,110, 95,105,100, 0, 42,112,114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, 98,108,111, 99,107, 0, 42,102, -105,108,101,100, 97,116, 97, 0,110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,108,101,112, 97,116,104, 91, 50, 52, 48, 93, 0, -116,111,116, 0,112, 97,100, 0, 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, 93, 0, 99,104, 97,110,103,101, -100, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 95,116,105,109,101,115,116, 97,109,112, 91, 50, 93, 0, 42,114,101, 99,116, 91, - 50, 93, 0, 42,111, 98, 0, 98,108,111, 99,107,116,121,112,101, 0, 97,100,114, 99,111,100,101, 0,110, 97,109,101, 91, 49, 50, - 56, 93, 0, 42, 98,112, 0, 42, 98,101,122,116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, 99,116, 0,118, 97,114,116,121, -112,101, 0,116,111,116,118,101,114,116, 0,105,112,111, 0,101,120,116,114, 97,112, 0,114,116, 0, 98,105,116,109, 97,115,107, - 0,115,108,105,100,101, 95,109,105,110, 0,115,108,105,100,101, 95,109, 97,120, 0, 99,117,114,118, 97,108, 0, 42,100,114,105, -118,101,114, 0, 99,117,114,118,101, 0, 99,117,114, 0,115,104,111,119,107,101,121, 0,109,117,116,101,105,112,111, 0,112,111, -115, 0,114,101,108, 97,116,105,118,101, 0,116,111,116,101,108,101,109, 0,112, 97,100, 50, 0, 42,119,101,105,103,104,116,115, - 0,118,103,114,111,117,112, 91, 51, 50, 93, 0,115,108,105,100,101,114,109,105,110, 0,115,108,105,100,101,114,109, 97,120, 0, - 42, 97,100,116, 0, 42,114,101,102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, 0,101,108,101,109,115,105,122, -101, 0, 98,108,111, 99,107, 0, 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101,121, 0,115,108,117,114,112,104, - 0, 42,108,105,110,101, 0, 42,102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101,110,111, 0,115,116, 97,114,116, - 0,101,110,100, 0,112, 97,100, 49, 0,102,108, 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, 0,112, 97,100, 91, 52, 93, 0, - 42,110, 97,109,101, 0,110,108,105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108, 0, 42,115,101,108,108, 0, 99, -117,114, 99, 0,115,101,108, 99, 0,109, 97,114,107,101,114,115, 0, 42,117,110,100,111, 95, 98,117,102, 0,117,110,100,111, 95, -112,111,115, 0,117,110,100,111, 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,109,116,105,109,101, 0,115,105,122, -101, 0,115,101,101,107, 0,112, 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0, 99,108,105,112,115,116, 97, 0, 99,108, -105,112,101,110,100, 0,108,101,110,115, 0,111,114,116,104,111, 95,115, 99, 97,108,101, 0,100,114, 97,119,115,105,122,101, 0, -115,104,105,102,116,120, 0,115,104,105,102,116,121, 0, 89, 70, 95,100,111,102,100,105,115,116, 0, 42,100,111,102, 95,111, 98, - 0,102,114, 97,109,101,110,114, 0,102,114, 97,109,101,115, 0,111,102,102,115,101,116, 0,115,102,114, 97, 0,102,105,101, 95, -105,109, 97, 0, 99,121, 99,108, 0,111,107, 0,109,117,108,116,105, 95,105,110,100,101,120, 0,108, 97,121,101,114, 0,112, 97, -115,115, 0,109,101,110,117,110,114, 0, 42,115, 99,101,110,101, 0,105, 98,117,102,115, 0, 42,103,112,117,116,101,120,116,117, -114,101, 0, 42, 97,110,105,109, 0, 42,114,114, 0, 42,114,101,110,100,101,114,115, 91, 56, 93, 0,114,101,110,100,101,114, 95, -115,108,111,116, 0,108, 97,115,116, 95,114,101,110,100,101,114, 95,115,108,111,116, 0,115,111,117,114, 99,101, 0,108, 97,115, -116,102,114, 97,109,101, 0,116,112, 97,103,101,102,108, 97,103, 0,116,111,116, 98,105,110,100, 0,120,114,101,112, 0,121,114, -101,112, 0,116,119,115,116, 97, 0,116,119,101,110,100, 0, 98,105,110,100, 99,111,100,101, 0, 42,114,101,112, 98,105,110,100, - 0, 42,112, 97, 99,107,101,100,102,105,108,101, 0, 42,112,114,101,118,105,101,119, 0,108, 97,115,116,117,112,100, 97,116,101, - 0,108, 97,115,116,117,115,101,100, 0, 97,110,105,109,115,112,101,101,100, 0,103,101,110, 95,120, 0,103,101,110, 95,121, 0, -103,101,110, 95,116,121,112,101, 0, 97,115,112,120, 0, 97,115,112,121, 0,116,101,120, 99,111, 0,109, 97,112,116,111, 0,109, - 97,112,116,111,110,101,103, 0, 98,108,101,110,100,116,121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116,101,120, 0,117, -118,110, 97,109,101, 91, 51, 50, 93, 0,112,114,111,106,120, 0,112,114,111,106,121, 0,112,114,111,106,122, 0,109, 97,112,112, -105,110,103, 0,111,102,115, 91, 51, 93, 0,115,105,122,101, 91, 51, 93, 0,114,111,116, 0,116,101,120,102,108, 97,103, 0, 99, -111,108,111,114,109,111,100,101,108, 0,112,109, 97,112,116,111, 0,112,109, 97,112,116,111,110,101,103, 0,110,111,114,109, 97, -112,115,112, 97, 99,101, 0,119,104,105, 99,104, 95,111,117,116,112,117,116, 0, 98,114,117,115,104, 95,109, 97,112, 95,109,111, -100,101, 0,112, 97,100, 91, 55, 93, 0,114, 0,103, 0, 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111,108,102, 97, 99, - 0,118, 97,114,102, 97, 99, 0,110,111,114,102, 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, 0, 99, -111,108,115,112,101, 99,102, 97, 99, 0,109,105,114,114,102, 97, 99, 0, 97,108,112,104, 97,102, 97, 99, 0,100,105,102,102,102, - 97, 99, 0,115,112,101, 99,102, 97, 99, 0,101,109,105,116,102, 97, 99, 0,104, 97,114,100,102, 97, 99, 0,114, 97,121,109,105, -114,114,102, 97, 99, 0,116,114, 97,110,115,108,102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99,111,108,101,109,105,116,102, 97, - 99, 0, 99,111,108,114,101,102,108,102, 97, 99, 0, 99,111,108,116,114, 97,110,115,102, 97, 99, 0,100,101,110,115,102, 97, 99, - 0,115, 99, 97,116,116,101,114,102, 97, 99, 0,114,101,102,108,102, 97, 99, 0,116,105,109,101,102, 97, 99, 0,108,101,110,103, -116,104,102, 97, 99, 0, 99,108,117,109,112,102, 97, 99, 0,107,105,110,107,102, 97, 99, 0,114,111,117,103,104,102, 97, 99, 0, -112, 97,100,101,110,115,102, 97, 99, 0,108,105,102,101,102, 97, 99, 0,115,105,122,101,102, 97, 99, 0,105,118,101,108,102, 97, - 99, 0,112,118,101,108,102, 97, 99, 0,115,104, 97,100,111,119,102, 97, 99, 0,122,101,110,117,112,102, 97, 99, 0,122,101,110, -100,111,119,110,102, 97, 99, 0, 98,108,101,110,100,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0, 42,104, 97,110,100, -108,101, 0, 42,112,110, 97,109,101, 0, 42,115,116,110, 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97,114,115, 0, 42, -118, 97,114,115,116,114, 0, 42,114,101,115,117,108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, 93, 0, 40, 42, -100,111,105,116, 41, 40, 41, 0, 40, 42,105,110,115,116, 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, 42, 99, 97,108, -108, 98, 97, 99,107, 41, 40, 41, 0,118,101,114,115,105,111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42,105,109, 97, 0, - 42, 99,117, 98,101, 91, 54, 93, 0,105,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, 93, 91, 51, 93, - 0,115,116,121,112,101, 0,118,105,101,119,115, 99, 97,108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101,114,101,115, 0, -100,101,112,116,104, 0,114,101, 99, 97,108, 99, 0,108, 97,115,116,115,105,122,101, 0,102, 97,108,108,111,102,102, 95,116,121, -112,101, 0,102, 97,108,108,111,102,102, 95,115,111,102,116,110,101,115,115, 0,114, 97,100,105,117,115, 0, 99,111,108,111,114, - 95,115,111,117,114, 99,101, 0,116,111,116,112,111,105,110,116,115, 0,112,100,112, 97,100, 0,112,115,121,115, 0,112,115,121, -115, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0, 42,112,111, -105,110,116, 95,116,114,101,101, 0, 42,112,111,105,110,116, 95,100, 97,116, 97, 0,110,111,105,115,101, 95,115,105,122,101, 0, -110,111,105,115,101, 95,100,101,112,116,104, 0,110,111,105,115,101, 95,105,110,102,108,117,101,110, 99,101, 0,110,111,105,115, -101, 95, 98, 97,115,105,115, 0,112,100,112, 97,100, 51, 91, 51, 93, 0,110,111,105,115,101, 95,102, 97, 99, 0,115,112,101,101, -100, 95,115, 99, 97,108,101, 0, 42, 99,111, 98, 97, 0,114,101,115,111,108, 91, 51, 93, 0,105,110,116,101,114,112, 95,116,121, -112,101, 0,102,105,108,101, 95,102,111,114,109, 97,116, 0,101,120,116,101,110,100, 0,115,109,111,107,101,100, 95,116,121,112, -101, 0,105,110,116, 95,109,117,108,116,105,112,108,105,101,114, 0,115,116,105,108,108, 95,102,114, 97,109,101, 0,115,111,117, -114, 99,101, 95,112, 97,116,104, 91, 50, 52, 48, 93, 0, 42,100, 97,116, 97,115,101,116, 0, 99, 97, 99,104,101,100,102,114, 97, -109,101, 0,110,111,105,115,101,115,105,122,101, 0,116,117,114, 98,117,108, 0, 98,114,105,103,104,116, 0, 99,111,110,116,114, - 97,115,116, 0,115, 97,116,117,114, 97,116,105,111,110, 0,114,102, 97, 99, 0,103,102, 97, 99, 0, 98,102, 97, 99, 0,102,105, -108,116,101,114,115,105,122,101, 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, 97,114,105,116,121, 0,109,103, 95,111, - 99,116, 97,118,101,115, 0,109,103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97,105,110, 0,100,105,115,116, 95, 97,109, -111,117,110,116, 0,110,115, 95,111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, 0,118,110, 95,119, 50, 0,118,110, 95, -119, 51, 0,118,110, 95,119, 52, 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105,115,116,109, 0,118,110, 95, 99,111,108, -116,121,112,101, 0,110,111,105,115,101,100,101,112,116,104, 0,110,111,105,115,101,116,121,112,101, 0,110,111,105,115,101, 98, - 97,115,105,115, 0,110,111,105,115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, 97,103, 0, 99,114,111,112,120,109,105, -110, 0, 99,114,111,112,121,109,105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114,111,112,121,109, 97,120, 0,116,101,120, -102,105,108,116,101,114, 0, 97,102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101,112,101, 97,116, 0, 99,104,101, - 99,107,101,114,100,105,115,116, 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42,110,111,100,101,116,114,101,101, 0, 42, -112,108,117,103,105,110, 0, 42,101,110,118, 0, 42,112,100, 0, 42,118,100, 0,117,115,101, 95,110,111,100,101,115, 0,108,111, - 99, 91, 51, 93, 0,114,111,116, 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105,110, 91, 51, 93, 0,109, 97,120, - 91, 51, 93, 0,109,111,100,101, 0,116,111,116,101,120, 0,115,104,100,119,114, 0,115,104,100,119,103, 0,115,104,100,119, 98, - 0,115,104,100,119,112, 97,100, 0,101,110,101,114,103,121, 0,100,105,115,116, 0,115,112,111,116,115,105,122,101, 0,115,112, -111,116, 98,108,101,110,100, 0,104, 97,105,110,116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, 42, 99,117,114,102, 97,108,108, -111,102,102, 0,115,104, 97,100,115,112,111,116,115,105,122,101, 0, 98,105, 97,115, 0,115,111,102,116, 0, 99,111,109,112,114, -101,115,115,116,104,114,101,115,104, 0,112, 97,100, 53, 91, 51, 93, 0, 98,117,102,115,105,122,101, 0,115, 97,109,112, 0, 98, -117,102,102,101,114,115, 0,102,105,108,116,101,114,116,121,112,101, 0, 98,117,102,102,108, 97,103, 0, 98,117,102,116,121,112, -101, 0,114, 97,121, 95,115, 97,109,112, 0,114, 97,121, 95,115, 97,109,112,121, 0,114, 97,121, 95,115, 97,109,112,122, 0,114, - 97,121, 95,115, 97,109,112, 95,116,121,112,101, 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, 97,114,101, 97, 95,115,105,122, -101, 0, 97,114,101, 97, 95,115,105,122,101,121, 0, 97,114,101, 97, 95,115,105,122,101,122, 0, 97,100, 97,112,116, 95,116,104, -114,101,115,104, 0,114, 97,121, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0,116,101,120, 97, 99,116, 0,115,104, 97,100, -104, 97,108,111,115,116,101,112, 0,115,117,110, 95,101,102,102,101, 99,116, 95,116,121,112,101, 0,115,107,121, 98,108,101,110, -100,116,121,112,101, 0,104,111,114,105,122,111,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,112,114,101, 97,100, 0, -115,117,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,117,110, 95,115,105,122,101, 0, 98, 97, 99,107,115, 99, 97,116, -116,101,114,101,100, 95,108,105,103,104,116, 0,115,117,110, 95,105,110,116,101,110,115,105,116,121, 0, 97,116,109, 95,116,117, -114, 98,105,100,105,116,121, 0, 97,116,109, 95,105,110,115, 99, 97,116,116,101,114,105,110,103, 95,102, 97, 99,116,111,114, 0, - 97,116,109, 95,101,120,116,105,110, 99,116,105,111,110, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,100,105,115,116, 97,110, - 99,101, 95,102, 97, 99,116,111,114, 0,115,107,121, 98,108,101,110,100,102, 97, 99, 0,115,107,121, 95,101,120,112,111,115,117, -114,101, 0,115,107,121, 95, 99,111,108,111,114,115,112, 97, 99,101, 0,112, 97,100, 52, 91, 54, 93, 0, 42,109,116,101,120, 91, - 49, 56, 93, 0,112,114, 95,116,101,120,116,117,114,101, 0,112, 97,100, 54, 91, 54, 93, 0,100,101,110,115,105,116,121, 0,101, -109,105,115,115,105,111,110, 0,115, 99, 97,116,116,101,114,105,110,103, 0,114,101,102,108,101, 99,116,105,111,110, 0,101,109, -105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,116,114, 97,110,115,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, - 93, 0,114,101,102,108,101, 99,116,105,111,110, 95, 99,111,108, 91, 51, 93, 0,100,101,110,115,105,116,121, 95,115, 99, 97,108, -101, 0,100,101,112,116,104, 95, 99,117,116,111,102,102, 0, 97,115,121,109,109,101,116,114,121, 0,115,116,101,112,115,105,122, -101, 95,116,121,112,101, 0,115,104, 97,100,101,102,108, 97,103, 0,115,104, 97,100,101, 95,116,121,112,101, 0,112,114,101, 99, - 97, 99,104,101, 95,114,101,115,111,108,117,116,105,111,110, 0,115,116,101,112,115,105,122,101, 0,109,115, 95,100,105,102,102, - 0,109,115, 95,105,110,116,101,110,115,105,116,121, 0,109,115, 95,115,112,114,101, 97,100, 0,109, 97,116,101,114,105, 97,108, - 95,116,121,112,101, 0,115,112,101, 99,114, 0,115,112,101, 99,103, 0,115,112,101, 99, 98, 0,109,105,114,114, 0,109,105,114, -103, 0,109,105,114, 98, 0, 97,109, 98,114, 0, 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, 98, 0,101,109,105,116, 0, 97, -110,103, 0,115,112,101, 99,116,114, 97, 0,114, 97,121, 95,109,105,114,114,111,114, 0, 97,108,112,104, 97, 0,114,101,102, 0, -115,112,101, 99, 0,122,111,102,102,115, 0, 97,100,100, 0,116,114, 97,110,115,108,117, 99,101,110, 99,121, 0,118,111,108, 0, -102,114,101,115,110,101,108, 95,109,105,114, 0,102,114,101,115,110,101,108, 95,109,105,114, 95,105, 0,102,114,101,115,110,101, -108, 95,116,114, 97, 0,102,114,101,115,110,101,108, 95,116,114, 97, 95,105, 0,102,105,108,116,101,114, 0,116,120, 95,108,105, -109,105,116, 0,116,120, 95,102, 97,108,108,111,102,102, 0,114, 97,121, 95,100,101,112,116,104, 0,114, 97,121, 95,100,101,112, -116,104, 95,116,114, 97, 0,104, 97,114, 0,115,101,101,100, 49, 0,115,101,101,100, 50, 0,103,108,111,115,115, 95,109,105,114, - 0,103,108,111,115,115, 95,116,114, 97, 0,115, 97,109,112, 95,103,108,111,115,115, 95,109,105,114, 0,115, 97,109,112, 95,103, -108,111,115,115, 95,116,114, 97, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,109,105,114, 0, 97,100, 97,112,116, 95, -116,104,114,101,115,104, 95,116,114, 97, 0, 97,110,105,115,111, 95,103,108,111,115,115, 95,109,105,114, 0,100,105,115,116, 95, -109,105,114, 0,102, 97,100,101,116,111, 95,109,105,114, 0,115,104, 97,100,101, 95,102,108, 97,103, 0,109,111,100,101, 95,108, - 0,102,108, 97,114,101, 99, 0,115,116, 97,114, 99, 0,108,105,110,101, 99, 0,114,105,110,103, 99, 0,104, 97,115,105,122,101, - 0,102,108, 97,114,101,115,105,122,101, 0,115,117, 98,115,105,122,101, 0,102,108, 97,114,101, 98,111,111,115,116, 0,115,116, -114, 97,110,100, 95,115,116, 97, 0,115,116,114, 97,110,100, 95,101,110,100, 0,115,116,114, 97,110,100, 95,101, 97,115,101, 0, -115,116,114, 97,110,100, 95,115,117,114,102,110,111,114, 0,115,116,114, 97,110,100, 95,109,105,110, 0,115,116,114, 97,110,100, - 95,119,105,100,116,104,102, 97,100,101, 0,115,116,114, 97,110,100, 95,117,118,110, 97,109,101, 91, 51, 50, 93, 0,115, 98,105, - 97,115, 0,108, 98,105, 97,115, 0,115,104, 97,100, 95, 97,108,112,104, 97, 0,115,101,112,116,101,120, 0,114,103, 98,115,101, -108, 0,112,114, 95,116,121,112,101, 0,112,114, 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109,112, 0,109,108, 95,102,108, 97, -103, 0,100,105,102,102, 95,115,104, 97,100,101,114, 0,115,112,101, 99, 95,115,104, 97,100,101,114, 0,114,111,117,103,104,110, -101,115,115, 0,114,101,102,114, 97, 99, 0,112, 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0,100, 97,114,107,110,101,115,115, - 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42,114, 97,109,112, 95,115,112,101, 99, 0,114, 97,109,112,105,110, 95, 99,111,108, - 0,114, 97,109,112,105,110, 95,115,112,101, 99, 0,114, 97,109,112, 98,108,101,110,100, 95, 99,111,108, 0,114, 97,109,112, 98, -108,101,110,100, 95,115,112,101, 99, 0,114, 97,109,112, 95,115,104,111,119, 0,112, 97,100, 51, 0,114, 97,109,112,102, 97, 99, - 95, 99,111,108, 0,114, 97,109,112,102, 97, 99, 95,115,112,101, 99, 0, 42,103,114,111,117,112, 0,102,114,105, 99,116,105,111, -110, 0,102,104, 0,114,101,102,108,101, 99,116, 0,102,104,100,105,115,116, 0,120,121,102,114,105, 99,116, 0,100,121,110, 97, -109,111,100,101, 0,115,115,115, 95,114, 97,100,105,117,115, 91, 51, 93, 0,115,115,115, 95, 99,111,108, 91, 51, 93, 0,115,115, -115, 95,101,114,114,111,114, 0,115,115,115, 95,115, 99, 97,108,101, 0,115,115,115, 95,105,111,114, 0,115,115,115, 95, 99,111, -108,102, 97, 99, 0,115,115,115, 95,116,101,120,102, 97, 99, 0,115,115,115, 95,102,114,111,110,116, 0,115,115,115, 95, 98, 97, - 99,107, 0,115,115,115, 95,102,108, 97,103, 0,115,115,115, 95,112,114,101,115,101,116, 0,109, 97,112,116,111, 95,116,101,120, -116,117,114,101,100, 0,112, 97,100, 52, 0,103,112,117,109, 97,116,101,114,105, 97,108, 0,110, 97,109,101, 91, 50, 53, 54, 93, - 0, 42, 98, 98, 0,105, 49, 0,106, 49, 0,107, 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115,101,108, 99,111,108, 49, 0,115, -101,108, 99,111,108, 50, 0,113,117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,101,120,112,121, 0,101,120,112,122, 0,114, 97, -100, 0,114, 97,100, 50, 0,115, 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,101,108,101,109,115, 0,100,105,115,112, 0, 42, -101,100,105,116,101,108,101,109,115, 0, 42, 42,109, 97,116, 0,102,108, 97,103, 50, 0,116,111,116, 99,111,108, 0,119,105,114, -101,115,105,122,101, 0,114,101,110,100,101,114,115,105,122,101, 0,116,104,114,101,115,104, 0, 42,108, 97,115,116,101,108,101, -109, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,104,116, 0,104, 49, 0,104, 50, 0,102, 49, - 0,102, 50, 0,102, 51, 0,104,105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110,114, 0,112,110,116,115,117, 0, -112,110,116,115,118, 0,114,101,115,111,108,117, 0,114,101,115,111,108,118, 0,111,114,100,101,114,117, 0,111,114,100,101,114, -118, 0,102,108, 97,103,117, 0,102,108, 97,103,118, 0, 42,107,110,111,116,115,117, 0, 42,107,110,111,116,115,118, 0,116,105, -108,116, 95,105,110,116,101,114,112, 0,114, 97,100,105,117,115, 95,105,110,116,101,114,112, 0, 99,104, 97,114,105,100,120, 0, -107,101,114,110, 0,104, 0,110,117,114, 98, 0, 42,101,100,105,116,110,117,114, 98, 0, 42, 98,101,118,111, 98,106, 0, 42,116, - 97,112,101,114,111, 98,106, 0, 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,112, 97,116,104, 0, 42,107,101,121, 0, - 98,101,118, 0,100,114, 97,119,102,108, 97,103, 0,116,119,105,115,116, 95,109,111,100,101, 0,112, 97,100, 91, 50, 93, 0,116, -119,105,115,116, 95,115,109,111,111,116,104, 0,115,109, 97,108,108, 99, 97,112,115, 95,115, 99, 97,108,101, 0,112, 97,116,104, -108,101,110, 0, 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0,101,120,116, 50, 0,114,101,115, -111,108,117, 95,114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117, 0, 42,108, 97,115,116,115,101, -108, 0,115,112, 97, 99,101,109,111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101,100,105,115,116, 0,115,104,101, - 97,114, 0,102,115,105,122,101, 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, 0,117,108,104,101,105,103,104, -116, 0,120,111,102, 0,121,111,102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, 0, 42,115,101,108, 98,111,120, -101,115, 0, 42,101,100,105,116,102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, 42,118,102,111,110,116, 0, 42, -118,102,111,110,116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0,115,101,112, 99,104, 97,114, 0, - 99,116,105,109,101, 0,116,111,116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0,115,101,108,115,116, 97,114,116, - 0,115,101,108,101,110,100, 0, 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, 0,101,102,102,101, 99,116, 0, - 42,109,102, 97, 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109,118,101,114,116, 0, 42,109,101, -100,103,101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107,121, 0, 42,116,101,120, 99,111, -109,101,115,104, 0, 42,109,115,101,108,101, 99,116, 0, 42,101,100,105,116, 95,109,101,115,104, 0,118,100, 97,116, 97, 0,101, -100, 97,116, 97, 0,102,100, 97,116, 97, 0,116,111,116,101,100,103,101, 0,116,111,116,102, 97, 99,101, 0,116,111,116,115,101, -108,101, 99,116, 0, 97, 99,116, 95,102, 97, 99,101, 0,101,100,105,116,102,108, 97,103, 0, 99,117, 98,101,109, 97,112,115,105, -122,101, 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98,100,105,118,114, 0,115,117, 98, -115,117,114,102,116,121,112,101, 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,103,101, 0,117,118, 91, 52, 93, 91, 50, 93, - 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, 97,112, 0,118, 49, 0,118, 50, - 0,118, 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,119,101,105,103,104,116, 0,100,101,102, - 95,110,114, 0, 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0,110,111, 91, 51, 93, 0,117,118, - 91, 50, 93, 0, 99,111, 91, 50, 93, 0,105,110,100,101,120, 0,102, 0,105, 0,115, 91, 50, 53, 54, 93, 0,116,111,116,100,105, -115,112, 0, 40, 42,100,105,115,112,115, 41, 40, 41, 0,118, 91, 52, 93, 0,109,105,100, 0,118, 91, 50, 93, 0, 42,102, 97, 99, -101,115, 0, 42, 99,111,108,102, 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,118,101,114,116,115, 0,108,101,118,101,108, -115, 0,108,101,118,101,108, 95, 99,111,117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101,119,108,118,108, 0,101,100,103, -101,108,118,108, 0,112,105,110,108,118,108, 0,114,101,110,100,101,114,108,118,108, 0,117,115,101, 95, 99,111,108, 0, 42,101, -100,103,101, 95,102,108, 97,103,115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, 42,118,101,114,116, 95,109, 97, -112, 0, 42,101,100,103,101, 95,109, 97,112, 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42,111,108,100, 95,101,100,103,101, -115, 0,115,116, 97, 99,107,105,110,100,101,120, 0, 42,101,114,114,111,114, 0,109,111,100,105,102,105,101,114, 0,115,117, 98, -100,105,118, 84,121,112,101, 0,114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, 67, 97, 99,104,101, 0, 42,109, - 67, 97, 99,104,101, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,101,110,103,116,104, 0,114, 97,110,100, -111,109,105,122,101, 0,115,101,101,100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116, 97,114,116, 95, 99, 97,112, 0, 42,101, -110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, 95,111, 98, 0,111,102,102,115, -101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115,116, 0,102,105,116, 95,116,121, -112,101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105,115, 0,116,111,108,101,114, 97, -110, 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103,108,101, 0,118, 97,108,117,101, - 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, 0,101, 95,102,108, 97,103,115, - 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, 91, 51, 50, 93, 0, 42,100,111, -109, 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,116,105,109,101, 0, 42,116,101,120,116,117,114,101, 0,115, -116,114,101,110,103,116,104, 0,100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118,101,108, 0,116,101,120,109, 97, -112,112,105,110,103, 0, 42,109, 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101,114, 95,110, 97,109,101, 91, 51, - 50, 93, 0,117,118,108, 97,121,101,114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,116,111,114,115, 91, 49, 48, 93, 0, 42, -105,109, 97,103,101, 0,110,117,109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112,101, 99,116,120, 0, 97,115,112, -101, 99,116,121, 0,115, 99, 97,108,101,120, 0,115, 99, 97,108,101,121, 0,112,101,114, 99,101,110,116, 0,102, 97, 99,101, 67, -111,117,110,116, 0,102, 97, 99, 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99,101,110,116,101,114, 0,115,116, - 97,114,116,120, 0,115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111,119, 0,115,112,101,101,100, 0, -100, 97,109,112, 0,102, 97,108,108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105,102,101,116,105,109,101, 0,100, -101,102,111,114,109,102,108, 97,103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, 0,115,117, 98,116, 97,114,103, -101,116, 91, 51, 50, 93, 0,112, 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116, 91, 51, 93, 0, 42, -105,110,100,101,120, 97,114, 0,116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, 99,108,111,116,104, 79, 98,106, -101, 99,116, 0, 42,115,105,109, 95,112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114,109,115, 0, 42,112,111,105,110, -116, 95, 99, 97, 99,104,101, 0,112,116, 99, 97, 99,104,101,115, 0, 42,120, 0, 42,120,110,101,119, 0, 42,120,111,108,100, 0, - 42, 99,117,114,114,101,110,116, 95,120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, 0, 42, 99,117,114,114,101,110, -116, 95,118, 0, 42,109,102, 97, 99,101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109,102, 97, 99,101,115, 0, 42, 98, -118,104,116,114,101,101, 0, 42,118, 0, 42,100,109, 0, 99,102,114, 97, 0,111,112,101,114, 97,116,105,111,110, 0,118,101,114, -116,101,120, 0,116,111,116,105,110,102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,122,101, 0, 42, 98,105,110,100,105, -110,102,108,117,101,110, 99,101,115, 0, 42, 98,105,110,100,111,102,102,115,101,116,115, 0, 42, 98,105,110,100, 99, 97,103,101, - 99,111,115, 0,116,111,116, 99, 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,100, 0, 42,100,121,110,105,110,102, -108,117,101,110, 99,101,115, 0, 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0,100,121,110,103,114,105,100,115, -105,122,101, 0,100,121,110, 99,101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108,108,119,105,100,116,104, 0, 98, -105,110,100,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42, 98,105,110,100,119,101,105,103,104,116,115, 0, 42, 98,105,110,100, 99, -111,115, 0, 40, 42, 98,105,110,100,102,117,110, 99, 41, 40, 41, 0, 42,112,115,121,115, 0,116,111,116,100,109,118,101,114,116, - 0,116,111,116,100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,111,115,105,116,105,111,110, 0,114, 97, -110,100,111,109, 95,112,111,115,105,116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103,114,111,117,112, 0,112,114,111, -116,101, 99,116, 0,108,118,108, 0,115, 99,117,108,112,116,108,118,108, 0,116,111,116,108,118,108, 0,115,105,109,112,108,101, - 0, 42,102,115,115, 0, 42,116, 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, 0,118,103,114,111,117,112, 95, -110, 97,109,101, 91, 51, 50, 93, 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, 84,121,112,101, 0,115,104,114, -105,110,107, 79,112,116,115, 0,112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, 76,101,118,101,108,115, 0, 42, -111,114,105,103,105,110, 0,102, 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111,114,105,103,105,110, 79,112,116, -115, 0,111,102,102,115,101,116, 95,102, 97, 99, 0, 99,114,101, 97,115,101, 95,105,110,110,101,114, 0, 99,114,101, 97,115,101, - 95,111,117,116,101,114, 0, 99,114,101, 97,115,101, 95,114,105,109, 0, 42,111, 98, 95, 97,120,105,115, 0,115,116,101,112,115, - 0,114,101,110,100,101,114, 95,115,116,101,112,115, 0,105,116,101,114, 0,115, 99,114,101,119, 95,111,102,115, 0, 97,110,103, -108,101, 0,112,110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111,112,110,116,115,119, 0,116,121, -112,101,117, 0,116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, 0,100,117, 0,100,118, 0,100, -119, 0, 42,100,101,102, 0, 42,108, 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, 97,116, 91, 52, 93, 91, 52, 93, - 0, 42,101,100,105,116,108, 97,116,116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99,117,108,112,116, 0,112, 97,114, -116,121,112,101, 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115,117, 98,115,116,114, 91, 51, 50, - 93, 0, 42,116,114, 97, 99,107, 0, 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103,114,111,117,112, 0, 42,112,114, -111,120,121, 95,102,114,111,109, 0, 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, 98, 0, 42,112,111,115,101, 0, - 42,103,112,100, 0, 97,118,115, 0, 42,109,112, 97,116,104, 0, 99,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101, -108,115, 0,100,101,102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115, 0,114,101,115,116,111,114,101, 95,109,111,100, -101, 0, 42,109, 97,116, 98,105,116,115, 0, 97, 99,116, 99,111,108, 0,100,108,111, 99, 91, 51, 93, 0,111,114,105,103, 91, 51, - 93, 0,100,115,105,122,101, 91, 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116, 91, 52, 93, 0,114,111,116, 65, -120,105,115, 91, 51, 93, 0,100,114,111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110,103,108,101, 0,100,114,111,116, - 65,110,103,108,101, 0,111, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105,110,118, 91, 52, 93, 91, 52, 93, - 0,108, 97,121, 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,112,114,111,116,101, 99,116,102,108, - 97,103, 0,116,114, 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102,108, 97,103, 0,105,112,111,102, -108, 97,103, 0,105,112,111,119,105,110, 0,115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105,115,102,108, 97,103, 0, 98,111, -117,110,100,116,121,112,101, 0,100,117,112,111,110, 0,100,117,112,111,102,102, 0,100,117,112,115,116, 97, 0,100,117,112,101, -110,100, 0,115,102, 0,109, 97,115,115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116,105, 97, 0,102,111,114,109,102, - 97, 99,116,111,114, 0,114,100, 97,109,112,105,110,103, 0,109, 97,114,103,105,110, 0,109, 97,120, 95,118,101,108, 0,109,105, -110, 95,118,101,108, 0,109, 95, 99,111,110,116, 97, 99,116, 80,114,111, 99,101,115,115,105,110,103, 84,104,114,101,115,104,111, -108,100, 0,114,111,116,109,111,100,101, 0,100,116, 0,100,116,120, 0,101,109,112,116,121, 95,100,114, 97,119,116,121,112,101, - 0,112, 97,100, 49, 91, 51, 93, 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0,100,117,112,102, 97, 99,101,115, - 99, 97, 0,112,114,111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108,101,114,115, 0, 97, 99,116,117, - 97,116,111,114,115, 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, 97,109,101,102,108, 97,103, 0, -103, 97,109,101,102,108, 97,103, 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97,103, 0, 97,110,105,115,111,116, -114,111,112,105, 99, 70,114,105, 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97,105,110,116,115, 0,110,108, 97, -115,116,114,105,112,115, 0,104,111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115,116,101,109, 0, 42,115,111,102, -116, 0, 42,100,117,112, 95,103,114,111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97,103, 0,114,101,115,116,114,105, - 99,116,102,108, 97,103, 0,115,104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, 0,114,101, 99, 97,108, 99,111, - 0, 98,111,100,121, 95,116,121,112,101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 42,100,101, -114,105,118,101,100, 68,101,102,111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97,108, 0,108, 97,115,116, 68, 97, -116, 97, 77, 97,115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0,103,112,117,108, 97,109,112, 0, -112, 99, 95,105,100,115, 0, 42,100,117,112,108,105,108,105,115,116, 0, 99,117,114,105,110,100,101,120, 0, 97, 99,116,105,118, -101, 0,111,114,105,103,108, 97,121, 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116,101,100, 0,111,109, 97,116, 91, - 52, 93, 91, 52, 93, 0,111,114, 99,111, 91, 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111,114, 99,101,102,105,101,108,100, - 0,115,104, 97,112,101, 0,116,101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110,107, 95, 97,120,105,115, 0,122, -100,105,114, 0,102, 95,115,116,114,101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95,102,108,111,119, 0,102, 95,115, -105,122,101, 0,102, 95,112,111,119,101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100,105,115,116, 0,102, 95,112,111, -119,101,114, 95,114, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,100, 0,112,100,101,102, 95,100, 97,109,112, 0,112,100, -101,102, 95,114,100, 97,109,112, 0,112,100,101,102, 95,112,101,114,109, 0,112,100,101,102, 95,102,114,105, 99,116, 0,112,100, -101,102, 95,114,102,114,105, 99,116, 0,112,100,101,102, 95,115,116,105, 99,107,110,101,115,115, 0, 97, 98,115,111,114,112,116, -105,111,110, 0,112,100,101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105,102,116, 0,112,100,101,102, 95, -115, 98,111,102,116, 0, 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111,119, 0,107,105,110,107, 95,102, -114,101,113, 0,107,105,110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0,102,114,101,101, 95,101,110,100, - 0,116,101,120, 95,110, 97, 98,108, 97, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0,119,101,105,103,104,116, 91, 49, - 51, 93, 0,103,108,111, 98, 97,108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93, 0,102,114, 97,109,101, 0,116,111, -116,112,111,105,110,116, 0,100, 97,116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,120, 95, 97,114,114, 97,121, 0, 42, -100, 97,116, 97, 91, 56, 93, 0, 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, 0,115,105,109,102,114, 97,109,101, 0,115,116, - 97,114,116,102,114, 97,109,101, 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, 97,109,101, 0,108, 97,115,116, - 95,101,120, 97, 99,116, 0,110, 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,109,101, 91, 54, 52, 93, 0,105,110, -102,111, 91, 54, 52, 93, 0,112, 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97, 99,104,101, 0, 42,101,100,105,116, - 0, 40, 42,102,114,101,101, 95,101,100,105,116, 41, 40, 41, 0,108,105,110, 83,116,105,102,102, 0, 97,110,103, 83,116,105,102, -102, 0,118,111,108,117,109,101, 0,118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,116,101,114, 97,116,105,111,110,115, - 0,100,105,116,101,114, 97,116,105,111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,115, 0,107, 83, 82, 72, 82, 95, 67, - 76, 0,107, 83, 75, 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82, 95, 83, 80, 76, 84, 95, 67, 76, 0, -107, 83, 75, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 86, 67, 70, 0,107, 68, 80, - 0,107, 68, 71, 0,107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77, 84, 0,107, 67, 72, 82, 0,107, 75, - 72, 82, 0,107, 83, 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,108, 97,103,115, 0,110,117,109, 99, -108,117,115,116,101,114,105,116,101,114, 97,116,105,111,110,115, 0,119,101,108,100,105,110,103, 0,116,111,116,115,112,114,105, -110,103, 0, 42, 98,112,111,105,110,116, 0, 42, 98,115,112,114,105,110,103, 0,109,115,103, 95,108,111, 99,107, 0,109,115,103, - 95,118, 97,108,117,101, 0,110,111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71, 95, 77, 97,115,115, 91, 51, 50, 93, - 0,103,114, 97,118, 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, 0,112,104,121,115,105, 99,115, - 95,115,112,101,101,100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114,105, 99,116, 0,109,105,110,103, -111, 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116,103,114,111,117,112, 0,110, 97, -109,101,100, 86, 71, 95, 83,111,102,116,103,111, 97,108, 91, 51, 50, 93, 0,102,117,122,122,121,110,101,115,115, 0,105,110,115, -112,114,105,110,103, 0,105,110,102,114,105, 99,116, 0,110, 97,109,101,100, 86, 71, 95, 83,112,114,105,110,103, 95, 75, 91, 51, - 50, 93, 0,101,102,114, 97, 0,105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115,111,108,118,101,114,102,108, 97, -103,115, 0, 42, 42,107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, 99,111,110,100,115,112,114,105, -110,103, 0, 99,111,108, 98, 97,108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108,115,116,105,102,102, 0,115, 98, - 99, 95,109,111,100,101, 0, 97,101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, 0,109, 97,120,108,111,111,112, -115, 0, 99,104,111,107,101, 0,115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, 99, 0,115,112,114,105,110,103, -112,114,101,108,111, 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116,105,102,102, 0,105,110,112,117, -115,104, 0, 42,112,111,105,110,116, 99, 97, 99,104,101, 0, 42,101,102,102,101, 99,116,111,114, 95,119,101,105,103,104,116,115, - 0,108, 99,111,109, 91, 51, 93, 0,108,114,111,116, 91, 51, 93, 91, 51, 93, 0,108,115, 99, 97,108,101, 91, 51, 93, 91, 51, 93, - 0,112, 97,100, 52, 91, 52, 93, 0, 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,101,100,111,112,116,105,111, -110,115, 0,114,101,115,111,108,117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119,114,101,115,120,121,122, 0,114, -101, 97,108,115,105,122,101, 0,103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114,101,110,100,101,114, 68,105,115, -112,108, 97,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0,118,105,115, 99,111,115,105,116, -121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0,103,114, 97,118,120, 0,103,114, - 97,118,121, 0,103,114, 97,118,122, 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, 69,110,100, 0, 98, 97,107,101, - 83,116, 97,114,116, 0, 98, 97,107,101, 69,110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82,101,102,105,110,101, 0,105,110, -105, 86,101,108,120, 0,105,110,105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111,114,103, 77,101,115,104, 0, 42, -109,101,115,104, 83,117,114,102, 97, 99,101, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102,100, 97,116, 97, 80, 97,116,104, - 91, 50, 52, 48, 93, 0, 98, 98, 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, 51, 93, 0,116,121,112,101, 70, -108, 97,103,115, 0,100,111,109, 97,105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117,109,101, 73,110,105,116, 84,121, -112,101, 0,112, 97,114,116, 83,108,105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116,101, 84,114, 97, 99,101,114,115, - 0,103,101,110,101,114, 97,116,101, 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, 99,101, 83,109,111,111,116,104, -105,110,103, 0,115,117,114,102, 97, 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 83,105, -122,101, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70,105,101,108,100, 83,105,122,101, - 0, 42,109,101,115,104, 83,117,114,102, 78,111,114,109, 97,108,115, 0, 99,112,115, 84,105,109,101, 83,116, 97,114,116, 0, 99, -112,115, 84,105,109,101, 69,110,100, 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116,114, 97, 99,116,102,111,114, 99, -101, 83,116,114,101,110,103,116,104, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97,100,105,117,115, 0,118,101,108, -111, 99,105,116,121,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, - 82, 97,100,105,117,115, 0,108, 97,115,116,103,111,111,100,102,114, 97,109,101, 0,109,105,115,116,121,112,101, 0,104,111,114, -114, 0,104,111,114,103, 0,104,111,114, 98, 0,104,111,114,107, 0,122,101,110,114, 0,122,101,110,103, 0,122,101,110, 98, 0, -122,101,110,107, 0, 97,109, 98,107, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101,120,112, 0,114, - 97,110,103,101, 0,108,105,110,102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97, 99,116,105,118, -105,116,121, 66,111,120, 82, 97,100,105,117,115, 0,115,107,121,116,121,112,101, 0,111, 99, 99,108,117,115,105,111,110, 82,101, -115, 0,112,104,121,115,105, 99,115, 69,110,103,105,110,101, 0,116,105, 99,114, 97,116,101, 0,109, 97,120,108,111,103,105, 99, -115,116,101,112, 0,112,104,121,115,117, 98,115,116,101,112, 0,109, 97,120,112,104,121,115,116,101,112, 0,109,105,115,105, 0, -109,105,115,116,115,116, 97, 0,109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0,115,116, 97,114,114, 0,115,116, - 97,114,103, 0,115,116, 97,114, 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, 0,115,116, 97,114,109,105,110, -100,105,115,116, 0,115,116, 97,114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105,115,101, 0,100,111,102,115,116, - 97, 0,100,111,102,101,110,100, 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97,111,100,105,115,116, 0, 97,111, -100,105,115,116,102, 97, 99, 0, 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, 97,111,109,111,100,101, 0, 97, -111,115, 97,109,112, 0, 97,111,109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97,100, 97,112,116, 95,116,104,114, -101,115,104, 0, 97,111, 95, 97,100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97,111, 95, 97,112,112,114,111,120, - 95,101,114,114,111,114, 0, 97,111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116,105,111,110, 0, 97,111, 95,105, -110,100,105,114,101, 99,116, 95,101,110,101,114,103,121, 0, 97,111, 95,101,110,118, 95,101,110,101,114,103,121, 0, 97,111, 95, -112, 97,100, 50, 0, 97,111, 95,105,110,100,105,114,101, 99,116, 95, 98,111,117,110, 99,101,115, 0, 97,111, 95,112, 97,100, 0, - 97,111, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, 95,109,101,116,104,111,100, 0, - 97,111, 95, 97,112,112,114,111,120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101,114,101, 0, 42, 97,111,116, 97, - 98,108,101,115, 0,112, 97,100, 91, 51, 93, 0,115,101,108, 99,111,108, 0,115,120, 0,115,121, 0, 42,108,112, 70,111,114,109, - 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, 98, 70,111,114,109, 97,116, 0, 99, 98, 80, 97,114,109,115, 0,102, 99, 99, - 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108,101,114, 0,100,119, 75,101,121, 70,114, 97,109,101, 69,118,101,114,121, 0, -100,119, 81,117, 97,108,105,116,121, 0,100,119, 66,121,116,101,115, 80,101,114, 83,101, 99,111,110,100, 0,100,119, 70,108, 97, -103,115, 0,100,119, 73,110,116,101,114,108,101, 97,118,101, 69,118,101,114,121, 0, 97,118,105, 99,111,100,101, 99,110, 97,109, -101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114,109,115, 0, 42,112, 97,100, 0, 99,100, 83,105,122,101, 0,113,116, 99,111, -100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 99,111,100,101, 99, 84,121,112,101, 0, 99,111,100,101, 99, 83,112, 97,116, -105, 97,108, 81,117, 97,108,105,116,121, 0, 99,111,100,101, 99, 0, 99,111,100,101, 99, 70,108, 97,103,115, 0, 99,111,108,111, -114, 68,101,112,116,104, 0, 99,111,100,101, 99, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 83, -112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, - 0,107,101,121, 70,114, 97,109,101, 82, 97,116,101, 0, 98,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 99,111,100,101, 99, - 84,121,112,101, 0, 97,117,100,105,111, 83, 97,109,112,108,101, 82, 97,116,101, 0, 97,117,100,105,111, 66,105,116, 68,101,112, -116,104, 0, 97,117,100,105,111, 67,104, 97,110,110,101,108,115, 0, 97,117,100,105,111, 67,111,100,101, 99, 70,108, 97,103,115, - 0, 97,117,100,105,111, 66,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 95, 99,111,100,101, 99, 0,118,105,100,101,111, 95, - 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95,109,105,120,114, - 97,116,101, 0, 97,117,100,105,111, 95,118,111,108,117,109,101, 0,103,111,112, 95,115,105,122,101, 0,114, 99, 95,109,105,110, - 95,114, 97,116,101, 0,114, 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102,102,101,114, 95,115,105,122,101, - 0,109,117,120, 95,112, 97, 99,107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116,101, 0,109,105,120,114, 97,116, -101, 0,109, 97,105,110, 0,115,112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,111,112,112,108,101,114, 95,102, 97, - 99,116,111,114, 0,100,105,115,116, 97,110, 99,101, 95,109,111,100,101,108, 0, 42,109, 97,116, 95,111,118,101,114,114,105,100, -101, 0, 42,108,105,103,104,116, 95,111,118,101,114,114,105,100,101, 0,108, 97,121, 95,122,109, 97,115,107, 0,108, 97,121,102, -108, 97,103, 0,112, 97,115,115,102,108, 97,103, 0,112, 97,115,115, 95,120,111,114, 0, 42, 97,118,105, 99,111,100,101, 99,100, - 97,116, 97, 0, 42,113,116, 99,111,100,101, 99,100, 97,116, 97, 0,113,116, 99,111,100,101, 99,115,101,116,116,105,110,103,115, - 0,102,102, 99,111,100,101, 99,100, 97,116, 97, 0,115,117, 98,102,114, 97,109,101, 0,112,115,102,114, 97, 0,112,101,102,114, - 97, 0,105,109, 97,103,101,115, 0,102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97,100,115, 0,102,114, 97,109,101,108, -101,110, 0, 98,108,117,114,102, 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101,100,103,101, 66, 0,102,117,108, -108,115, 99,114,101,101,110, 0,120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113,112,108, 97,121, 0, 97,116,116, -114,105, 98, 0,114,116, 50, 0,102,114, 97,109,101, 95,115,116,101,112, 0,115,116,101,114,101,111,109,111,100,101, 0,100,105, -109,101,110,115,105,111,110,115,112,114,101,115,101,116, 0,109, 97,120,105,109,115,105,122,101, 0,120,115, 99,104, 0,121,115, - 99,104, 0,120,112, 97,114,116,115, 0,121,112, 97,114,116,115, 0,119,105,110,112,111,115, 0,112,108, 97,110,101,115, 0,105, -109,116,121,112,101, 0,115,117, 98,105,109,116,121,112,101, 0,113,117, 97,108,105,116,121, 0,100,105,115,112,108, 97,121,109, -111,100,101, 0,114,112, 97,100, 49, 0,114,112, 97,100, 50, 0,115, 99,101,109,111,100,101, 0,114, 97,121,116,114, 97, 99,101, - 95,111,112,116,105,111,110,115, 0,114, 97,121,116,114, 97, 99,101, 95,115,116,114,117, 99,116,117,114,101, 0,114,101,110,100, -101,114,101,114, 0,111, 99,114,101,115, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, 0,102,114,115, 95,115,101, 99, - 0,101,100,103,101,105,110,116, 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100,105,115,112,114,101, 99,116, 0, -108, 97,121,101,114,115, 0, 97, 99,116,108, 97,121, 0,109, 98,108,117,114, 95,115, 97,109,112,108,101,115, 0,120, 97,115,112, - 0,121, 97,115,112, 0,102,114,115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, 0, 99,111,108,111,114, 95,109, -103,116, 95,102,108, 97,103, 0,112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117,101, 0,112,111,115,116,115, 97, -116, 0,100,105,116,104,101,114, 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95,111,115, 97, 0, 98, 97,107,101, - 95,102,105,108,116,101,114, 0, 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102,108, 97,103, 0, 98, 97,107,101, - 95,110,111,114,109, 97,108, 95,115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95,115,112,108,105,116, 0, 98, 97, -107,101, 95,109, 97,120,100,105,115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, 0, 98, 97,107,101, 95,112, 97, -100, 0, 98, 97, 99,107, 98,117,102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0,115,116, 97,109,112, 0,115,116, - 97,109,112, 95,102,111,110,116, 95,105,100, 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, 49, 54, 48, 93, 0,102,103, 95, -115,116, 97,109,112, 91, 52, 93, 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, 0,115,101,113, 95,112,114,101,118, 95,116,121, -112,101, 0,115,101,113, 95,114,101,110,100, 95,116,121,112,101, 0,115,101,113, 95,102,108, 97,103, 0,112, 97,100, 53, 91, 53, - 93, 0,115,105,109,112,108,105,102,121, 95,102,108, 97,103, 0,115,105,109,112,108,105,102,121, 95,115,117, 98,115,117,114,102, - 0,115,105,109,112,108,105,102,121, 95,115,104, 97,100,111,119,115, 97,109,112,108,101,115, 0,115,105,109,112,108,105,102,121, - 95,112, 97,114,116,105, 99,108,101,115, 0,115,105,109,112,108,105,102,121, 95, 97,111,115,115,115, 0, 99,105,110,101,111,110, -119,104,105,116,101, 0, 99,105,110,101,111,110, 98,108, 97, 99,107, 0, 99,105,110,101,111,110,103, 97,109,109, 97, 0,106,112, - 50, 95,112,114,101,115,101,116, 0,106,112, 50, 95,100,101,112,116,104, 0,114,112, 97,100, 51, 0,100,111,109,101,114,101,115, - 0,100,111,109,101,109,111,100,101, 0,100,111,109,101, 97,110,103,108,101, 0,100,111,109,101,116,105,108,116, 0,100,111,109, -101,114,101,115, 98,117,102, 0, 42,100,111,109,101,116,101,120,116, 0,101,110,103,105,110,101, 91, 51, 50, 93, 0,112, 97,114, -116,105, 99,108,101, 95,112,101,114, 99, 0,115,117, 98,115,117,114,102, 95,109, 97,120, 0,115,104, 97,100, 98,117,102,115, 97, -109,112,108,101, 95,109, 97,120, 0, 97,111, 95,101,114,114,111,114, 0,116,105,108,116, 0,114,101,115, 98,117,102, 0, 42,119, - 97,114,112,116,101,120,116, 0, 99,111,108, 91, 51, 93, 0,109, 97,116,109,111,100,101, 0,102,114, 97,109,105,110,103, 0,114, -116, 49, 0,100,111,109,101, 0,115,116,101,114,101,111,102,108, 97,103, 0,101,121,101,115,101,112, 97,114, 97,116,105,111,110, - 0, 42, 99, 97,109,101,114, 97, 0, 42, 42, 98,114,117,115,104,101,115, 0, 97, 99,116,105,118,101, 95, 98,114,117,115,104, 95, -105,110,100,101,120, 0, 98,114,117,115,104, 95, 99,111,117,110,116, 0, 42,112, 97,105,110,116, 95, 99,117,114,115,111,114, 0, -112, 97,105,110,116, 95, 99,117,114,115,111,114, 95, 99,111,108, 91, 52, 93, 0,112, 97,105,110,116, 0,115,101, 97,109, 95, 98, -108,101,101,100, 0,110,111,114,109, 97,108, 95, 97,110,103,108,101, 0,115, 99,114,101,101,110, 95,103,114, 97, 98, 95,115,105, -122,101, 91, 50, 93, 0, 42,112, 97,105,110,116, 99,117,114,115,111,114, 0,105,110,118,101,114,116, 0,116,111,116,114,101,107, -101,121, 0,116,111,116, 97,100,100,107,101,121, 0, 98,114,117,115,104,116,121,112,101, 0, 98,114,117,115,104, 91, 55, 93, 0, -101,109,105,116,116,101,114,100,105,115,116, 0,115,101,108,101, 99,116,109,111,100,101, 0,101,100,105,116,116,121,112,101, 0, -100,114, 97,119, 95,115,116,101,112, 0,102, 97,100,101, 95,102,114, 97,109,101,115, 0,110, 97,109,101, 91, 51, 54, 93, 0,109, - 97,116, 91, 51, 93, 91, 51, 93, 0,114, 97,100,105, 97,108, 95,115,121,109,109, 91, 51, 93, 0,108, 97,115,116, 95,120, 0,108, - 97,115,116, 95,121, 0,108, 97,115,116, 95, 97,110,103,108,101, 0,100,114, 97,119, 95, 97,110, 99,104,111,114,101,100, 0, 97, -110, 99,104,111,114,101,100, 95,115,105,122,101, 0, 97,110, 99,104,111,114,101,100, 95,108,111, 99, 97,116,105,111,110, 91, 51, - 93, 0, 97,110, 99,104,111,114,101,100, 95,105,110,105,116,105, 97,108, 95,109,111,117,115,101, 91, 50, 93, 0,100,114, 97,119, - 95,112,114,101,115,115,117,114,101, 0,112,114,101,115,115,117,114,101, 95,118, 97,108,117,101, 0,115,112,101, 99,105, 97,108, - 95,114,111,116, 97,116,105,111,110, 0, 42,118,112, 97,105,110,116, 95,112,114,101,118, 0, 42,119,112, 97,105,110,116, 95,112, -114,101,118, 0, 42,118,112, 97,105,110,116, 0, 42,119,112, 97,105,110,116, 0,118,103,114,111,117,112, 95,119,101,105,103,104, -116, 0, 99,111,114,110,101,114,116,121,112,101, 0,101,100,105,116, 98,117,116,102,108, 97,103, 0,106,111,105,110,116,114,105, -108,105,109,105,116, 0,100,101,103,114, 0,116,117,114,110, 0,101,120,116,114, 95,111,102,102,115, 0,100,111,117, 98,108,105, -109,105,116, 0,110,111,114,109, 97,108,115,105,122,101, 0, 97,117,116,111,109,101,114,103,101, 0,115,101,103,109,101,110,116, -115, 0,114,105,110,103,115, 0,118,101,114,116,105, 99,101,115, 0,117,110,119,114, 97,112,112,101,114, 0,117,118, 99, 97,108, - 99, 95,114, 97,100,105,117,115, 0,117,118, 99, 97,108, 99, 95, 99,117, 98,101,115,105,122,101, 0,117,118, 99, 97,108, 99, 95, -109, 97,114,103,105,110, 0,117,118, 99, 97,108, 99, 95,109, 97,112,100,105,114, 0,117,118, 99, 97,108, 99, 95,109, 97,112, 97, -108,105,103,110, 0,117,118, 99, 97,108, 99, 95,102,108, 97,103, 0,117,118, 95,102,108, 97,103, 0,117,118, 95,115,101,108,101, - 99,116,109,111,100,101, 0,117,118, 95,112, 97,100, 91, 50, 93, 0, 97,117,116,111,105,107, 95, 99,104, 97,105,110,108,101,110, - 0,105,109, 97,112, 97,105,110,116, 0,112, 97,114,116,105, 99,108,101, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 95, -115,105,122,101, 0,115,101,108,101, 99,116, 95,116,104,114,101,115,104, 0, 99,108,101, 97,110, 95,116,104,114,101,115,104, 0, - 97,117,116,111,107,101,121, 95,109,111,100,101, 0, 97,117,116,111,107,101,121, 95,102,108, 97,103, 0,114,101,116,111,112,111, - 95,109,111,100,101, 0,114,101,116,111,112,111, 95,112, 97,105,110,116, 95,116,111,111,108, 0,108,105,110,101, 95,100,105,118, - 0,101,108,108,105,112,115,101, 95,100,105,118, 0,114,101,116,111,112,111, 95,104,111,116,115,112,111,116, 0,109,117,108,116, -105,114,101,115, 95,115,117, 98,100,105,118, 95,116,121,112,101, 0,115,107,103,101,110, 95,114,101,115,111,108,117,116,105,111, -110, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,105,110,116,101,114,110, 97,108, 0,115,107,103,101,110, - 95,116,104,114,101,115,104,111,108,100, 95,101,120,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,108,101,110,103,116,104, - 95,114, 97,116,105,111, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, - 97,110,103,108,101, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 99,111,114,114,101,108, 97,116,105,111,110, 95,108,105, -109,105,116, 0,115,107,103,101,110, 95,115,121,109,109,101,116,114,121, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,114, -101,116, 97,114,103,101,116, 95, 97,110,103,108,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114, -103,101,116, 95,108,101,110,103,116,104, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, - 95,100,105,115,116, 97,110, 99,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,111,112,116,105,111,110,115, 0,115, -107,103,101,110, 95,112,111,115,116,112,114,111, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 95,112, 97,115,115,101, -115, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110,115, 91, 51, 93, 0,115,107,103,101,110, 95,109,117, -108,116,105, 95,108,101,118,101,108, 0, 42,115,107,103,101,110, 95,116,101,109,112,108, 97,116,101, 0, 98,111,110,101, 95,115, -107,101,116, 99,104,105,110,103, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 95, 99,111,110,118,101,114,116, 0, -115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110, 95,110,117,109, 98,101,114, 0,115,107,103,101,110, 95,114, -101,116, 97,114,103,101,116, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,114, -111,108,108, 0,115,107,103,101,110, 95,115,105,100,101, 95,115,116,114,105,110,103, 91, 56, 93, 0,115,107,103,101,110, 95,110, -117,109, 95,115,116,114,105,110,103, 91, 56, 93, 0,101,100,103,101, 95,109,111,100,101, 0,115,110, 97,112, 95,109,111,100,101, - 0,115,110, 97,112, 95,102,108, 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0,112,114,111,112,111,114,116,105,111, -110, 97,108, 0,112,114,111,112, 95,109,111,100,101, 0, 97,117,116,111, 95,110,111,114,109, 97,108,105,122,101, 0,105,110,116, -112, 97,100, 0,116,111,116,111, 98,106, 0,116,111,116,108, 97,109,112, 0,116,111,116,111, 98,106,115,101,108, 0,116,111,116, - 99,117,114,118,101, 0,116,111,116,109,101,115,104, 0,116,111,116, 97,114,109, 97,116,117,114,101, 0,115, 99, 97,108,101, 95, -108,101,110,103,116,104, 0,115,121,115,116,101,109, 0,103,114, 97,118,105,116,121, 91, 51, 93, 0,113,117,105, 99,107, 95, 99, - 97, 99,104,101, 95,115,116,101,112, 0, 42,119,111,114,108,100, 0, 42,115,101,116, 0, 98, 97,115,101, 0, 42, 98, 97,115, 97, - 99,116, 0, 42,111, 98,101,100,105,116, 0, 99,117,114,115,111,114, 91, 51, 93, 0,116,119, 99,101,110,116, 91, 51, 93, 0,116, -119,109,105,110, 91, 51, 93, 0,116,119,109, 97,120, 91, 51, 93, 0,108, 97,121, 97, 99,116, 0, 42,101,100, 0, 42,116,111,111, -108,115,101,116,116,105,110,103,115, 0, 42,115,116, 97,116,115, 0, 97,117,100,105,111, 0,116,114, 97,110,115,102,111,114,109, - 95,115,112, 97, 99,101,115, 0, 42,115,111,117,110,100, 95,115, 99,101,110,101, 0, 42,115,111,117,110,100, 95,115, 99,101,110, -101, 95,104, 97,110,100,108,101, 0, 42,102,112,115, 95,105,110,102,111, 0, 42,116,104,101, 68, 97,103, 0,100, 97,103,105,115, -118, 97,108,105,100, 0,100, 97,103,102,108, 97,103,115, 0,106,117,109,112,102,114, 97,109,101, 0,112, 97,100, 53, 0, 97, 99, -116,105,118,101, 95,107,101,121,105,110,103,115,101,116, 0,107,101,121,105,110,103,115,101,116,115, 0,103,109, 0,117,110,105, -116, 0,112,104,121,115,105, 99,115, 95,115,101,116,116,105,110,103,115, 0, 98,108,101,110,100, 0,118,105,101,119, 0,119,105, -110,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,105,110,118, - 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,105,110,118, 91, 52, 93, 91, - 52, 93, 0,118,105,101,119,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116,111, 98, 91, 52, 93, 91, - 52, 93, 0,116,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,122,102, 97, 99, 0, - 99, 97,109,100,120, 0, 99, 97,109,100,121, 0,112,105,120,115,105,122,101, 0, 99, 97,109,122,111,111,109, 0,118,105,101,119, - 98,117,116, 0,116,119,100,114, 97,119,102,108, 97,103, 0,114,102,108, 97,103, 0,118,105,101,119,108,111, 99,107, 0,112,101, -114,115,112, 0, 99,108,105,112, 91, 54, 93, 91, 52, 93, 0, 99,108,105,112, 95,108,111, 99, 97,108, 91, 54, 93, 91, 52, 93, 0, - 42, 99,108,105,112, 98, 98, 0, 42,108,111, 99, 97,108,118,100, 0, 42,114,105, 0, 42,114,101,116,111,112,111, 95,118,105,101, -119, 95,100, 97,116, 97, 0, 42,100,101,112,116,104,115, 0, 42,115,109,115, 0, 42,115,109,111,111,116,104, 95,116,105,109,101, -114, 0,108,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,108,112,101,114,115,112, 0,108,118,105,101,119, 0,103,114,105,100, -118,105,101,119, 0,116,119, 97,110,103,108,101, 91, 51, 93, 0,112, 97,100,102, 0,114,101,103,105,111,110, 98, 97,115,101, 0, -115,112, 97, 99,101,116,121,112,101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, 99,107,104, 97,110,100,108,101, -114, 91, 56, 93, 0,108, 97,121, 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0, 98,103,112,105, 99, 98, 97, -115,101, 0, 42, 98,103,112,105, 99, 0,111, 98, 95, 99,101,110,116,114,101, 95, 98,111,110,101, 91, 51, 50, 93, 0,100,114, 97, -119,116,121,112,101, 0,115, 99,101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0,112,105,118,111,116, 95,108, 97,115, -116, 0,103,114,105,100, 0,110,101, 97,114, 0,102, 97,114, 0,103,114,105,100,108,105,110,101,115, 0,103,114,105,100,102,108, - 97,103, 0,103,114,105,100,115,117, 98,100,105,118, 0,109,111,100,101,115,101,108,101, 99,116, 0,107,101,121,102,108, 97,103, -115, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101, 0,116,119,102,108, 97,103, 0, 99,117,115,116,111,109,100, 97,116, - 97, 95,109, 97,115,107, 0, 97,102,116,101,114,100,114, 97,119, 0,122, 98,117,102, 0,120,114, 97,121, 0,110,100,111,102,109, -111,100,101, 0,110,100,111,102,102,105,108,116,101,114, 0, 42,112,114,111,112,101,114,116,105,101,115, 95,115,116,111,114, 97, -103,101, 0,118,101,114,116, 0,104,111,114, 0,109, 97,115,107, 0,109,105,110, 91, 50, 93, 0,109, 97,120, 91, 50, 93, 0,109, -105,110,122,111,111,109, 0,109, 97,120,122,111,111,109, 0,115, 99,114,111,108,108, 0,115, 99,114,111,108,108, 95,117,105, 0, -107,101,101,112,116,111,116, 0,107,101,101,112,122,111,111,109, 0,107,101,101,112,111,102,115, 0, 97,108,105,103,110, 0,119, -105,110,120, 0,119,105,110,121, 0,111,108,100,119,105,110,120, 0,111,108,100,119,105,110,121, 0, 42,116, 97, 98, 95,111,102, -102,115,101,116, 0,116, 97, 98, 95,110,117,109, 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99,114,101,101,110, 0,118, 50,100, - 0, 42, 97,100,115, 0,103,104,111,115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, 97,112, 0, 99,117,114,115,111, -114, 86, 97,108, 0,109, 97,105,110, 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117,115,101,114, 0,114,101, 95, 97, -108,105,103,110, 0,112,114,101,118,105,101,119, 0,112, 97,116,104,102,108, 97,103, 0,100, 97,116, 97,105, 99,111,110, 0, 42, -112,105,110,105,100, 0,114,101,110,100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104,111,119,110, 0,122,101, 98,114, - 97, 0,122,111,111,109, 0,116,105,116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,102,105,108,101, 91, 56, - 48, 93, 0,114,101,110, 97,109,101,102,105,108,101, 91, 56, 48, 93, 0,115,111,114,116, 0,100,105,115,112,108, 97,121, 0, 97, - 99,116,105,118,101, 95, 98,111,111,107,109, 97,114,107, 0, 97, 99,116,105,118,101, 95,102,105,108,101, 0,115,101,108,115,116, - 97,116,101, 0,102, 95,102,112, 0,102,112, 95,115,116,114, 91, 56, 93, 0,115, 99,114,111,108,108, 95,111,102,102,115,101,116, - 0, 42,112, 97,114, 97,109,115, 0, 42,102,105,108,101,115, 0, 42,102,111,108,100,101,114,115, 95,112,114,101,118, 0, 42,102, -111,108,100,101,114,115, 95,110,101,120,116, 0, 42,111,112, 0, 42,115,109,111,111,116,104,115, 99,114,111,108,108, 95,116,105, -109,101,114, 0, 42,108, 97,121,111,117,116, 0,114,101, 99,101,110,116,110,114, 0, 98,111,111,107,109, 97,114,107,110,114, 0, -115,121,115,116,101,109,110,114, 0,116,114,101,101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97,114, 99,104, 95, -115,116,114,105,110,103, 91, 51, 50, 93, 0,115,101, 97,114, 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, 95,102,108, 97, -103,115, 0,100,111, 95, 0,111,117,116,108,105,110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0, 42, 99,117,109, - 97,112, 0,105,109, 97,110,114, 0, 99,117,114,116,105,108,101, 0,105,109,116,121,112,101,110,114, 0,108,111, 99,107, 0,112, -105,110, 0,100,116, 95,117,118, 0,115,116,105, 99,107,121, 0,100,116, 95,117,118,115,116,114,101,116, 99,104, 0, 99,117,114, -115,111,114, 91, 50, 93, 0, 99,101,110,116,120, 0, 99,101,110,116,121, 0,115, 99,111,112,101,115, 0,115, 97,109,112,108,101, - 95,108,105,110,101, 95,104,105,115,116, 0, 42,116,101,120,116, 0,116,111,112, 0,118,105,101,119,108,105,110,101,115, 0,108, -104,101,105,103,104,116, 0, 99,119,105,100,116,104, 0,108,105,110,101,110,114,115, 95,116,111,116, 0,108,101,102,116, 0,115, -104,111,119,108,105,110,101,110,114,115, 0,116, 97, 98,110,117,109, 98,101,114, 0,115,104,111,119,115,121,110,116, 97,120, 0, -111,118,101,114,119,114,105,116,101, 0,108,105,118,101, 95,101,100,105,116, 0,112,105,120, 95,112,101,114, 95,108,105,110,101, - 0,116,120,116,115, 99,114,111,108,108, 0,116,120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100,111,112,108,117, -103,105,110,115, 0,102,105,110,100,115,116,114, 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99,101,115,116,114, 91, 50, 53, 54, - 93, 0, 42,112,121, 95,100,114, 97,119, 0, 42,112,121, 95,101,118,101,110,116, 0, 42,112,121, 95, 98,117,116,116,111,110, 0, - 42,112,121, 95, 98,114,111,119,115,101,114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,111, 98, 97,108,100,105, - 99,116, 0,108, 97,115,116,115,112, 97, 99,101, 0,115, 99,114,105,112,116,110, 97,109,101, 91, 50, 53, 54, 93, 0,115, 99,114, -105,112,116, 97,114,103, 91, 50, 53, 54, 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,117,116, 95,114,101,102,115, 0, 42, 97, -114,114, 97,121, 0, 99, 97, 99,104,101,115, 0, 99, 97, 99,104,101, 95,100,105,115,112,108, 97,121, 0,114,101,100,114, 97,119, -115, 0, 42,105,100, 0, 97,115,112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, 0,109,121, 0, 42,101,100,105, -116,116,114,101,101, 0,116,114,101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,109,101,110,117, 0,110,117,109,116, -105,108,101,115,120, 0,110,117,109,116,105,108,101,115,121, 0,118,105,101,119,114,101, 99,116, 0, 98,111,111,107,109, 97,114, -107,114,101, 99,116, 0,115, 99,114,111,108,108,112,111,115, 0,115, 99,114,111,108,108,104,101,105,103,104,116, 0,115, 99,114, -111,108,108, 97,114,101, 97, 0,114,101,116,118, 97,108, 0,112,114,118, 95,119, 0,112,114,118, 95,104, 0, 40, 42,114,101,116, -117,114,110,102,117,110, 99, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95,101,118,101,110,116, 41, 40, 41, - 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95, 97,114,103,115, 41, 40, 41, 0, 42, 97,114,103, 49, 0, 42, 97,114,103, - 50, 0, 42,109,101,110,117,112, 0, 42,112,117,112,109,101,110,117, 0, 42,105,109,103, 0,108,101,110, 95, 97,108,108,111, 99, - 0, 99,117,114,115,111,114, 0,114,112,116, 95,109, 97,115,107, 0,115, 99,114,111,108,108, 98, 97, 99,107, 0,104,105,115,116, -111,114,121, 0,112,114,111,109,112,116, 91, 50, 53, 54, 93, 0,108, 97,110,103,117, 97,103,101, 91, 51, 50, 93, 0,115,101,108, - 95,115,116, 97,114,116, 0,115,101,108, 95,101,110,100, 0,102,105,108,116,101,114, 91, 54, 52, 93, 0,102,105,108,101,110, 97, -109,101, 91, 50, 53, 54, 93, 0, 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,100, 0,114, 95,116,111, 95,108, 0, -112,111,105,110,116,115, 0,107,101,114,110,105,110,103, 0,105,116, 97,108,105, 99, 0, 98,111,108,100, 0,115,104, 97,100,111, -119, 0,115,104, 97,100,120, 0,115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, 97, 0,115,104, 97,100,111,119, - 99,111,108,111,114, 0,112, 97,110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, 98,101,108, 0,119,105,100,103, -101,116,108, 97, 98,101,108, 0,119,105,100,103,101,116, 0,112, 97,110,101,108,122,111,111,109, 0,109,105,110,108, 97, 98,101, -108, 99,104, 97,114,115, 0,109,105,110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111,108,117,109,110,115,112, 97, 99, -101, 0,116,101,109,112,108, 97,116,101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, 0, 98,117,116,116,111,110,115, -112, 97, 99,101,120, 0, 98,117,116,116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108,115,112, 97, 99,101, 0,112, 97, -110,101,108,111,117,116,101,114, 0,112, 97,100, 91, 49, 93, 0,111,117,116,108,105,110,101, 91, 52, 93, 0,105,110,110,101,114, - 91, 52, 93, 0,105,110,110,101,114, 95,115,101,108, 91, 52, 93, 0,105,116,101,109, 91, 52, 93, 0,116,101,120,116, 91, 52, 93, - 0,116,101,120,116, 95,115,101,108, 91, 52, 93, 0,115,104, 97,100,101,100, 0,115,104, 97,100,101,116,111,112, 0,115,104, 97, -100,101,100,111,119,110, 0, 97,108,112,104, 97, 95, 99,104,101, 99,107, 0,105,110,110,101,114, 95, 97,110,105,109, 91, 52, 93, - 0,105,110,110,101,114, 95, 97,110,105,109, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 91, 52, 93, 0, -105,110,110,101,114, 95,107,101,121, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 91, 52, 93, - 0,105,110,110,101,114, 95,100,114,105,118,101,110, 95,115,101,108, 91, 52, 93, 0,119, 99,111,108, 95,114,101,103,117,108, 97, -114, 0,119, 99,111,108, 95,116,111,111,108, 0,119, 99,111,108, 95,116,101,120,116, 0,119, 99,111,108, 95,114, 97,100,105,111, - 0,119, 99,111,108, 95,111,112,116,105,111,110, 0,119, 99,111,108, 95,116,111,103,103,108,101, 0,119, 99,111,108, 95,110,117, -109, 0,119, 99,111,108, 95,110,117,109,115,108,105,100,101,114, 0,119, 99,111,108, 95,109,101,110,117, 0,119, 99,111,108, 95, -112,117,108,108,100,111,119,110, 0,119, 99,111,108, 95,109,101,110,117, 95, 98, 97, 99,107, 0,119, 99,111,108, 95,109,101,110, -117, 95,105,116,101,109, 0,119, 99,111,108, 95, 98,111,120, 0,119, 99,111,108, 95,115, 99,114,111,108,108, 0,119, 99,111,108, - 95,112,114,111,103,114,101,115,115, 0,119, 99,111,108, 95,108,105,115,116, 95,105,116,101,109, 0,119, 99,111,108, 95,115,116, - 97,116,101, 0,105, 99,111,110,102,105,108,101, 91, 56, 48, 93, 0, 98, 97, 99,107, 91, 52, 93, 0,116,105,116,108,101, 91, 52, - 93, 0,116,101,120,116, 95,104,105, 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,105, -116,108,101, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120, -116, 95,104,105, 91, 52, 93, 0, 98,117,116,116,111,110, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,105,116,108,101, 91, 52, - 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 95,104,105, 91, - 52, 93, 0,108,105,115,116, 91, 52, 93, 0,108,105,115,116, 95,116,105,116,108,101, 91, 52, 93, 0,108,105,115,116, 95,116,101, -120,116, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,112, 97,110,101,108, 91, 52, 93, 0,112, - 97,110,101,108, 95,116,105,116,108,101, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 91, 52, 93, 0,112, 97,110,101, -108, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93, 0,115,104, 97,100,101, 50, 91, 52, 93, - 0,104,105,108,105,116,101, 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,101, 91, 52, 93, 0,115,101,108,101, 99, -116, 91, 52, 93, 0,108, 97,109,112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, 52, 93, 0,103,114,111,117,112, 91, 52, 93, 0, -103,114,111,117,112, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,111,114,109, 91, 52, 93, 0,118,101,114, -116,101,120, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 91, 52, 93, 0, -101,100,103,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101, 97,109, 91, 52, 93, 0,101,100,103,101, - 95,115,104, 97,114,112, 91, 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, 93, 0,101,100,103,101, 95, 99, -114,101, 97,115,101, 91, 52, 93, 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0, -102, 97, 99,101, 95,100,111,116, 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0,118,101,114,116,101,120, 95,110,111,114, -109, 97,108, 91, 52, 93, 0, 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110,101, 95,112,111,115,101, 91, 52, - 93, 0,115,116,114,105,112, 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, 52, 93, 0, 99,102,114, 97,109, -101, 91, 52, 93, 0,110,117,114, 98, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,118,108,105,110,101, 91, 52, 93, - 0, 97, 99,116, 95,115,112,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95,117,108,105,110,101, 91, 52, 93, - 0,110,117,114, 98, 95,115,101,108, 95,118,108,105,110,101, 91, 52, 93, 0,108, 97,115,116,115,101,108, 95,112,111,105,110,116, - 91, 52, 93, 0,104, 97,110,100,108,101, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,117,116,111, 91, 52, - 93, 0,104, 97,110,100,108,101, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,108,105,103,110, 91, 52, 93, - 0,104, 97,110,100,108,101, 95,115,101,108, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97, -117,116,111, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, - 95,115,101,108, 95, 97,108,105,103,110, 91, 52, 93, 0,100,115, 95, 99,104, 97,110,110,101,108, 91, 52, 93, 0,100,115, 95,115, -117, 98, 99,104, 97,110,110,101,108, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,111,117,116,112,117,116, 91, 52, 93, 0, 99, -111,110,115,111,108,101, 95,105,110,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,102,111, 91, 52, 93, 0, - 99,111,110,115,111,108,101, 95,101,114,114,111,114, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95, 99,117,114,115,111,114, 91, - 52, 93, 0,118,101,114,116,101,120, 95,115,105,122,101, 0,102, 97, 99,101,100,111,116, 95,115,105,122,101, 0, 98,112, 97,100, - 91, 50, 93, 0,115,121,110,116, 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,120,110, 91, 52, 93, 0,115,121,110,116, 97,120, - 98, 91, 52, 93, 0,115,121,110,116, 97,120,118, 91, 52, 93, 0,115,121,110,116, 97,120, 99, 91, 52, 93, 0,109,111,118,105,101, - 91, 52, 93, 0,105,109, 97,103,101, 91, 52, 93, 0,115, 99,101,110,101, 91, 52, 93, 0, 97,117,100,105,111, 91, 52, 93, 0,101, -102,102,101, 99,116, 91, 52, 93, 0,112,108,117,103,105,110, 91, 52, 93, 0,116,114, 97,110,115,105,116,105,111,110, 91, 52, 93, - 0,109,101,116, 97, 91, 52, 93, 0,101,100,105,116,109,101,115,104, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,104, 97,110,100, -108,101, 95,118,101,114,116,101,120, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,101,108,101, 99, -116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,105,122,101, 0,104,112, 97,100, 91, 55, 93, 0, -112,114,101,118,105,101,119, 95, 98, 97, 99,107, 91, 52, 93, 0,115,111,108,105,100, 91, 52, 93, 0,116,117,105, 0,116, 98,117, -116,115, 0,116,118, 51,100, 0,116,102,105,108,101, 0,116,105,112,111, 0,116,105,110,102,111, 0,116,115,110,100, 0,116, 97, - 99,116, 0,116,110,108, 97, 0,116,115,101,113, 0,116,105,109, 97, 0,116,105,109, 97,115,101,108, 0,116,101,120,116, 0,116, -111,111,112,115, 0,116,116,105,109,101, 0,116,110,111,100,101, 0,116,108,111,103,105, 99, 0,116,117,115,101,114,112,114,101, -102, 0,116, 99,111,110,115,111,108,101, 0,116, 97,114,109, 91, 50, 48, 93, 0, 97, 99,116,105,118,101, 95,116,104,101,109,101, - 95, 97,114,101, 97, 0,109,111,100,117,108,101, 91, 54, 52, 93, 0,115,112,101, 99, 91, 52, 93, 0,100,117,112,102,108, 97,103, - 0,115, 97,118,101,116,105,109,101, 0,116,101,109,112,100,105,114, 91, 49, 54, 48, 93, 0,102,111,110,116,100,105,114, 91, 49, - 54, 48, 93, 0,114,101,110,100,101,114,100,105,114, 91, 49, 54, 48, 93, 0,116,101,120,116,117,100,105,114, 91, 49, 54, 48, 93, - 0,112,108,117,103,116,101,120,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,115,101,113,100,105,114, 91, 49, 54, 48, 93, - 0,112,121,116,104,111,110,100,105,114, 91, 49, 54, 48, 93, 0,115,111,117,110,100,100,105,114, 91, 49, 54, 48, 93, 0,105,109, - 97,103,101, 95,101,100,105,116,111,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 91, 50, 52, 48, 93, - 0, 97,110,105,109, 95,112,108, 97,121,101,114, 95,112,114,101,115,101,116, 0,118, 50,100, 95,109,105,110, 95,103,114,105,100, -115,105,122,101, 0,116,105,109,101, 99,111,100,101, 95,115,116,121,108,101, 0,118,101,114,115,105,111,110,115, 0,100, 98,108, - 95, 99,108,105, 99,107, 95,116,105,109,101, 0,103, 97,109,101,102,108, 97,103,115, 0,119,104,101,101,108,108,105,110,101,115, - 99,114,111,108,108, 0,117,105,102,108, 97,103, 0,108, 97,110,103,117, 97,103,101, 0,117,115,101,114,112,114,101,102, 0,118, -105,101,119,122,111,111,109, 0,109,105,120, 98,117,102,115,105,122,101, 0, 97,117,100,105,111,100,101,118,105, 99,101, 0, 97, -117,100,105,111,114, 97,116,101, 0, 97,117,100,105,111,102,111,114,109, 97,116, 0, 97,117,100,105,111, 99,104, 97,110,110,101, -108,115, 0,100,112,105, 0,101,110, 99,111,100,105,110,103, 0,116,114, 97,110,115,111,112,116,115, 0,109,101,110,117,116,104, -114,101,115,104,111,108,100, 49, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 50, 0,116,104,101,109,101,115, 0,117, -105,102,111,110,116,115, 0,117,105,115,116,121,108,101,115, 0,107,101,121,109, 97,112,115, 0, 97,100,100,111,110,115, 0,107, -101,121, 99,111,110,102,105,103,115,116,114, 91, 54, 52, 93, 0,117,110,100,111,115,116,101,112,115, 0,117,110,100,111,109,101, -109,111,114,121, 0,103,112, 95,109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103,112, 95,101,117, 99,108,105,100,101, - 97,110,100,105,115,116, 0,103,112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101,116,116,105,110,103,115, 0,116, 98, 95, -108,101,102,116,109,111,117,115,101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, 0,108,105,103,104,116, 91, 51, 93, - 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,115,101,116,116,105,110,103,115, 0,116,119, 95,104,111,116,115,112,111, -116, 0,116,119, 95,102,108, 97,103, 0,116,119, 95,104, 97,110,100,108,101,115,105,122,101, 0,116,119, 95,115,105,122,101, 0, -116,101,120,116,105,109,101,111,117,116, 0,116,101,120, 99,111,108,108,101, 99,116,114, 97,116,101, 0,119,109,100,114, 97,119, -109,101,116,104,111,100, 0,109,101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101,102,101,116, 99,104,102,114, 97, -109,101,115, 0,102,114, 97,109,101,115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95,114,111,116, 95, 97,110,103,108, -101, 0,111, 98, 99,101,110,116,101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114,118,105, 98,114,105,103,104,116, - 0,114,101, 99,101,110,116, 95,102,105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101,119,116,120, 0,103,108,114,101, -115,108,105,109,105,116, 0,110,100,111,102, 95,112, 97,110, 0,110,100,111,102, 95,114,111,116, 97,116,101, 0, 99,117,114,115, -115,105,122,101, 0, 99,111,108,111,114, 95,112,105, 99,107,101,114, 95,116,121,112,101, 0,105,112,111, 95,110,101,119, 0,107, -101,121,104, 97,110,100,108,101,115, 95,110,101,119, 0,115, 99,114, 99, 97,115,116,102,112,115, 0,115, 99,114, 99, 97,115,116, -119, 97,105,116, 0,112,114,111,112,119,105,100,116,104, 0,118,101,114,115,101,109, 97,115,116,101,114, 91, 49, 54, 48, 93, 0, -118,101,114,115,101,117,115,101,114, 91, 49, 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108,105,112, 0, 99,111, 98, 97, 95, -119,101,105,103,104,116, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,115,105,122,101, - 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,117,110,112,114,111,106,101, 99,116,101, -100, 95,114, 97,100,105,117,115, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95, 97,108, -112,104, 97, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,111,118,101,114,108, 97,121, 95, 99,111,108, 91, 51, 93, 0, -118,101,114,116, 98, 97,115,101, 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,115,101, 0, 42,110,101,119,115, - 99,101,110,101, 0,102,117,108,108, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0,100,111, 95,114,101,102,114,101, -115,104, 0,100,111, 95,100,114, 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, 97,119, 95,112, 97,105,110,116, - 99,117,114,115,111,114, 0,100,111, 95,100,114, 97,119, 95,100,114, 97,103, 0,115,119, 97,112, 0,109, 97,105,110,119,105,110, - 0,115,117, 98,119,105,110, 97, 99,116,105,118,101, 0, 42, 97,110,105,109,116,105,109,101,114, 0, 42, 99,111,110,116,101,120, -116, 0,104, 97,110,100,108,101,114, 91, 56, 93, 0, 42,110,101,119,118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42, -116,121,112,101, 0,112, 97,110,101,108,110, 97,109,101, 91, 54, 52, 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100, -114, 97,119,110, 97,109,101, 91, 54, 52, 93, 0,111,102,115,120, 0,111,102,115,121, 0,115,105,122,101,120, 0,115,105,122,101, -121, 0,108, 97, 98,101,108,111,102,115, 0,114,117,110,116,105,109,101, 95,102,108, 97,103, 0, 99,111,110,116,114,111,108, 0, -115,110, 97,112, 0,115,111,114,116,111,114,100,101,114, 0, 42,112, 97,110,101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101, -100, 97,116, 97, 0,108,105,115,116, 95,115, 99,114,111,108,108, 0,108,105,115,116, 95,115,105,122,101, 0,108,105,115,116, 95, -108, 97,115,116, 95,108,101,110, 0,108,105,115,116, 95,103,114,105,112, 95,115,105,122,101, 0,108,105,115,116, 95,115,101, 97, -114, 99,104, 91, 54, 52, 93, 0, 42,118, 51, 0, 42,118, 52, 0, 42,102,117,108,108, 0, 98,117,116,115,112, 97, 99,101,116,121, -112,101, 0,104,101, 97,100,101,114,116,121,112,101, 0,115,112, 97, 99,101,100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, - 0, 97, 99,116,105,111,110,122,111,110,101,115, 0,119,105,110,114, 99,116, 0,100,114, 97,119,114, 99,116, 0,115,119,105,110, -105,100, 0,114,101,103,105,111,110,116,121,112,101, 0, 97,108,105,103,110,109,101,110,116, 0,100,111, 95,100,114, 97,119, 95, -111,118,101,114,108, 97,121, 0,117,105, 98,108,111, 99,107,115, 0,112, 97,110,101,108,115, 0, 42,104,101, 97,100,101,114,115, -116,114, 0, 42,114,101,103,105,111,110,100, 97,116, 97, 0,115,117, 98,118,115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114, -115,105,111,110, 0,112, 97,100,115, 0,109,105,110,118,101,114,115,105,111,110, 0,109,105,110,115,117, 98,118,101,114,115,105, -111,110, 0, 42, 99,117,114,115, 99,114,101,101,110, 0, 42, 99,117,114,115, 99,101,110,101, 0,102,105,108,101,102,108, 97,103, -115, 0,103,108,111, 98, 97,108,102, 0,102,105,108,101,110, 97,109,101, 91, 50, 52, 48, 93, 0,110, 97,109,101, 91, 56, 48, 93, - 0, 42,105, 98,117,102, 0, 42,105, 98,117,102, 95, 99,111,109,112, 0, 42,115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, - 0,110,114, 0, 98,111,116,116,111,109, 0,114,105,103,104,116, 0,120,111,102,115, 0,121,111,102,115, 0,108,105,102,116, 91, - 51, 93, 0,103, 97,109,109, 97, 91, 51, 93, 0,103, 97,105,110, 91, 51, 93, 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110, -101, 0,115,116, 97,114,116,115,116,105,108,108, 0,101,110,100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, - 0,111,114,120, 0,111,114,121, 0, 42, 99,114,111,112, 0, 42,116,114, 97,110,115,102,111,114,109, 0, 42, 99,111,108,111,114, - 95, 98, 97,108, 97,110, 99,101, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, - 95,115,116, 97,114,116,115,116,105,108,108, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,101,110,100,115,116,105,108,108, - 0, 42,105, 98,117,102, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42,105, 98,117,102, 95,101,110,100,115,116,105,108,108, - 0, 42,105,110,115,116, 97,110, 99,101, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110, -116, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100, -111,102,115, 0,109, 97, 99,104,105,110,101, 0,115,116, 97,114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,115, 97, -116, 0,109,117,108, 0,104, 97,110,100,115,105,122,101, 0, 97,110,105,109, 95,112,114,101,115,101,101,107, 0, 42,115,116,114, -105,112, 0, 42,115, 99,101,110,101, 95, 99, 97,109,101,114, 97, 0,101,102,102,101, 99,116, 95,102, 97,100,101,114, 0,115,112, -101,101,100, 95,102, 97,100,101,114, 0, 42,115,101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, - 97,115,101, 0, 42,115,111,117,110,100, 0, 42,115, 99,101,110,101, 95,115,111,117,110,100, 0,108,101,118,101,108, 0,112, 97, -110, 0,115, 99,101,110,101,110,114, 0,109,117,108,116,105, 99, 97,109, 95,115,111,117,114, 99,101, 0,115,116,114,111, 98,101, - 0, 42,101,102,102,101, 99,116,100, 97,116, 97, 0, 97,110,105,109, 95,115,116, 97,114,116,111,102,115, 0, 97,110,105,109, 95, -101,110,100,111,102,115, 0, 98,108,101,110,100, 95,109,111,100,101, 0, 98,108,101,110,100, 95,111,112, 97, 99,105,116,121, 0, - 42,111,108,100, 98, 97,115,101,112, 0, 42,112, 97,114,115,101,113, 0, 42,115,101,113, 98, 97,115,101,112, 0,109,101,116, 97, -115,116, 97, 99,107, 0, 42, 97, 99,116, 95,115,101,113, 0, 97, 99,116, 95,105,109, 97,103,101,100,105,114, 91, 50, 53, 54, 93, - 0, 97, 99,116, 95,115,111,117,110,100,100,105,114, 91, 50, 53, 54, 93, 0,111,118,101,114, 95,111,102,115, 0,111,118,101,114, - 95, 99,102,114, 97, 0,111,118,101,114, 95,102,108, 97,103, 0,111,118,101,114, 95, 98,111,114,100,101,114, 0,101,100,103,101, - 87,105,100,116,104, 0,102,111,114,119, 97,114,100, 0,119,105,112,101,116,121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, - 97,109,112, 0,102, 66,111,111,115,116, 0,100, 68,105,115,116, 0,100, 81,117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109, -112, 0, 83, 99, 97,108,101,120, 73,110,105, 0, 83, 99, 97,108,101,121, 73,110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, - 83, 99, 97,108,101,121, 70,105,110, 0,120, 73,110,105, 0,120, 70,105,110, 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111, -116, 73,110,105, 0,114,111,116, 70,105,110, 0,105,110,116,101,114,112,111,108, 97,116,105,111,110, 0,117,110,105,102,111,114, -109, 95,115, 99, 97,108,101, 0, 42,102,114, 97,109,101, 77, 97,112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97, -115,116, 86, 97,108,105,100, 70,114, 97,109,101, 0, 98,117,116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97, - 0,116,111,116,112, 97,114,116, 0,110,111,114,109,102, 97, 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116, -101,120,102, 97, 99, 0,114, 97,110,100,108,105,102,101, 0,102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, - 0,109, 97,120,108,101,110, 0,100,101,102,118,101, 99, 91, 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, - 93, 0, 99,104,105,108,100, 91, 52, 93, 0,109, 97,116, 91, 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116, - 0,115,116, 97,116,105, 99,115,116,101,112, 0,111,109, 97,116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101, -120, 0,102,108, 97,103, 50,110,101,103, 0,118,101,114,116,103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109, -101, 91, 51, 50, 93, 0,118,103,114,111,117,112,110, 97,109,101, 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110, -102, 97, 99, 0,117,115,101,100, 0,117,115,101,100,101,108,101,109, 0, 42,112,111,105,110, 0,114,101,115,101,116,100,105,115, -116, 0,108, 97,115,116,118, 97,108, 0, 42,109, 97, 0,107,101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114, -103,101,116, 78, 97,109,101, 91, 51, 50, 93, 0,116,111,103,103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, - 91, 51, 50, 93, 0,109, 97,120,118, 97,108,117,101, 91, 51, 50, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,105,111,110, - 0,109, 97,116,101,114,105, 97,108, 78, 97,109,101, 91, 51, 50, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,114,111,112, -110, 97,109,101, 91, 51, 50, 93, 0,109, 97,116,110, 97,109,101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111, -115,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0, 99,111,110,115,116,114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114, -111,109, 79, 98,106,101, 99,116, 0,115,117, 98,106,101, 99,116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116, -121,112,101, 0,112,117,108,115,101, 0,102,114,101,113, 0,116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0, -116, 97,112, 0,106,111,121,105,110,100,101,120, 0, 97,120,105,115, 95,115,105,110,103,108,101, 0, 97,120,105,115,102, 0, 98, -117,116,116,111,110, 0,104, 97,116, 0,104, 97,116,102, 0,112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, - 93, 0, 42,109,121,110,101,119, 0,105,110,112,117,116,115, 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,108,105,110, -107,115, 0,118, 97,108,111, 0,115,116, 97,116,101, 95,109, 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111, -112, 91, 51, 50, 93, 0, 98,108,101,110,100,105,110, 0,112,114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,115,101,116, - 0,115,116,114,105,100,101, 97,120,105,115, 0,115,116,114,105,100,101,108,101,110,103,116,104, 0,115,110,100,110,114, 0,112, - 97,100, 51, 91, 50, 93, 0,112,105,116, 99,104, 0,115,111,117,110,100, 51, 68, 0,112, 97,100, 54, 91, 49, 93, 0, 42,109,101, - 0,108,105,110, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108, -111, 99, 97,108,102,108, 97,103, 0,100,121,110, 95,111,112,101,114, 97,116,105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, - 51, 93, 0,102,111,114, 99,101,114,111,116, 91, 51, 93, 0,108,105,110,101, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, - 0, 97,110,103,117,108, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 42,114,101,102,101,114,101,110, 99,101, 0,109, -105,110, 0,109, 97,120, 0,114,111,116,100, 97,109,112, 0,109,105,110,108,111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, - 51, 93, 0,109,105,110,114,111,116, 91, 51, 93, 0,109, 97,120,114,111,116, 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51, - 50, 93, 0, 98,117,116,115,116, 97, 0, 98,117,116,101,110,100, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110, -116, 95, 97,114,103, 95, 49, 0,105,110,116, 95, 97,114,103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108, -111, 97,116, 95, 97,114,103, 95, 50, 0,116,111, 80,114,111,112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, - 99,116, 0, 98,111,100,121, 84,121,112,101, 0,102,105,108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105, -110, 97,109,101, 91, 54, 52, 93, 0,105,110,116, 95, 97,114,103, 0,102,108,111, 97,116, 95, 97,114,103, 0, 42,115,117, 98,116, - 97,114,103,101,116, 0,103,111, 0, 97, 99, 99,101,108,108,101,114, 97,116,105,111,110, 0,109, 97,120,115,112,101,101,100, 0, -109, 97,120,114,111,116,115,112,101,101,100, 0,109, 97,120,116,105,108,116,115,112,101,101,100, 0,116,105,108,116,100, 97,109, -112, 0,115,112,101,101,100,100, 97,109,112, 0,109,105,110, 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101, -102,101,114,101,110, 99,101, 95,100,105,115,116, 97,110, 99,101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,101, 0,114,111, -108,108,111,102,102, 95,102, 97, 99,116,111,114, 0, 99,111,110,101, 95,105,110,110,101,114, 95, 97,110,103,108,101, 0, 99,111, -110,101, 95,111,117,116,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42, -110,101,119,112, 97, 99,107,101,100,102,105,108,101, 0, 97,116,116,101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, - 99,101, 0, 42, 99, 97, 99,104,101, 0, 42,112,108, 97,121, 98, 97, 99,107, 95,104, 97,110,100,108,101, 0, 42, 97,114,101, 97, - 0, 42,108, 97,109,112,114,101,110, 0,103,111, 98,106,101, 99,116, 0,100,117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 42, -112,114,111,112, 0, 99,104,105,108,100, 98, 97,115,101, 0,114,111,108,108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, - 91, 51, 93, 0, 98,111,110,101, 95,109, 97,116, 91, 51, 93, 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97, -114,109, 95,116, 97,105,108, 91, 51, 93, 0, 97,114,109, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0, -122,119,105,100,116,104, 0,101, 97,115,101, 49, 0,101, 97,115,101, 50, 0,114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95, -116, 97,105,108, 0, 98,111,110,101, 98, 97,115,101, 0, 99,104, 97,105,110, 98, 97,115,101, 0, 42,101,100, 98,111, 0, 42, 97, - 99,116, 95, 98,111,110,101, 0, 42, 97, 99,116, 95,101,100, 98,111,110,101, 0, 42,115,107,101,116, 99,104, 0,108, 97,121,101, -114, 95,112,114,111,116,101, 99,116,101,100, 0,103,104,111,115,116,101,112, 0,103,104,111,115,116,115,105,122,101, 0,103,104, -111,115,116,116,121,112,101, 0,112, 97,116,104,115,105,122,101, 0,103,104,111,115,116,115,102, 0,103,104,111,115,116,101,102, - 0,112, 97,116,104,115,102, 0,112, 97,116,104,101,102, 0,112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,111, -105,110,116,115, 0,115,116, 97,114,116, 95,102,114, 97,109,101, 0,101,110,100, 95,102,114, 97,109,101, 0,103,104,111,115,116, - 95,115,102, 0,103,104,111,115,116, 95,101,102, 0,103,104,111,115,116, 95, 98, 99, 0,103,104,111,115,116, 95, 97, 99, 0,103, -104,111,115,116, 95,116,121,112,101, 0,103,104,111,115,116, 95,115,116,101,112, 0,103,104,111,115,116, 95,102,108, 97,103, 0, -112, 97,116,104, 95,116,121,112,101, 0,112, 97,116,104, 95,115,116,101,112, 0,112, 97,116,104, 95,118,105,101,119,102,108, 97, -103, 0,112, 97,116,104, 95, 98, 97,107,101,102,108, 97,103, 0,112, 97,116,104, 95,115,102, 0,112, 97,116,104, 95,101,102, 0, -112, 97,116,104, 95, 98, 99, 0,112, 97,116,104, 95, 97, 99, 0, 99,111,110,115,116,102,108, 97,103, 0,105,107,102,108, 97,103, - 0,115,101,108,101, 99,116,102,108, 97,103, 0, 97,103,114,112, 95,105,110,100,101,120, 0, 42, 98,111,110,101, 0, 42, 99,104, -105,108,100, 0,105,107,116,114,101,101, 0, 42, 98, 95, 98,111,110,101, 95,109, 97,116,115, 0, 42,100,117, 97,108, 95,113,117, - 97,116, 0, 42, 98, 95, 98,111,110,101, 95,100,117, 97,108, 95,113,117, 97,116,115, 0,101,117,108, 91, 51, 93, 0, 99,104, 97, -110, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95, -104,101, 97,100, 91, 51, 93, 0,112,111,115,101, 95,116, 97,105,108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, - 0,108,105,109,105,116,109, 97,120, 91, 51, 93, 0,115,116,105,102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101, -116, 99,104, 0,105,107,114,111,116,119,101,105,103,104,116, 0,105,107,108,105,110,119,101,105,103,104,116, 0, 42, 99,117,115, -116,111,109, 0, 42, 99,117,115,116,111,109, 95,116,120, 0, 99,104, 97,110, 98, 97,115,101, 0, 42, 99,104, 97,110,104, 97,115, -104, 0,112,114,111,120,121, 95,108, 97,121,101,114, 0,115,116,114,105,100,101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 99, -121, 99,108,105, 99, 95,111,102,102,115,101,116, 91, 51, 93, 0, 97,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,103, -114,111,117,112, 0,105,107,115,111,108,118,101,114, 0, 42,105,107,100, 97,116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,112, -114,111,120,121, 95, 97, 99,116, 95, 98,111,110,101, 91, 51, 50, 93, 0,110,117,109,105,116,101,114, 0,110,117,109,115,116,101, -112, 0,109,105,110,115,116,101,112, 0,109, 97,120,115,116,101,112, 0,115,111,108,118,101,114, 0,102,101,101,100, 98, 97, 99, -107, 0,109, 97,120,118,101,108, 0,100, 97,109,112,109, 97,120, 0,100, 97,109,112,101,112,115, 0, 99,104, 97,110,110,101,108, -115, 0, 99,117,115,116,111,109, 67,111,108, 0, 99,115, 0, 99,117,114,118,101,115, 0,103,114,111,117,112,115, 0, 97, 99,116, -105,118,101, 95,109, 97,114,107,101,114, 0, 42,115,111,117,114, 99,101, 0, 42,102,105,108,116,101,114, 95,103,114,112, 0,102, -105,108,116,101,114,102,108, 97,103, 0, 97,100,115, 0,116,105,109,101,115,108,105,100,101, 0, 42,103,114,112, 0,116,101,109, -112, 0,110, 97,109,101, 91, 51, 48, 93, 0,111,119,110,115,112, 97, 99,101, 0,116, 97,114,115,112, 97, 99,101, 0,101,110,102, -111,114, 99,101, 0,104,101, 97,100,116, 97,105,108, 0,108,105,110, 95,101,114,114,111,114, 0,114,111,116, 95,101,114,114,111, -114, 0, 42,116, 97,114, 0,109, 97,116,114,105,120, 91, 52, 93, 91, 52, 93, 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100, -101,114, 0,116, 97,114,110,117,109, 0,116, 97,114,103,101,116,115, 0,105,116,101,114, 97,116,105,111,110,115, 0,114,111,111, -116, 98,111,110,101, 0,109, 97,120, 95,114,111,111,116, 98,111,110,101, 0, 42,112,111,108,101,116, 97,114, 0,112,111,108,101, -115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112,111,108,101, 97,110,103,108,101, 0,111,114,105,101,110,116,119,101, -105,103,104,116, 0,103,114, 97, 98,116, 97,114,103,101,116, 91, 51, 93, 0,110,117,109,112,111,105,110,116,115, 0, 99,104, 97, -105,110,108,101,110, 0,120,122, 83, 99, 97,108,101, 77,111,100,101, 0,114,101,115,101,114,118,101,100, 49, 0,114,101,115,101, -114,118,101,100, 50, 0,109,105,110,109, 97,120,102,108, 97,103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0, -108,111, 99,107,102,108, 97,103, 0,102,111,108,108,111,119,102,108, 97,103, 0,118,111,108,109,111,100,101, 0,112,108, 97,110, -101, 0,111,114,103,108,101,110,103,116,104, 0, 98,117,108,103,101, 0,112,105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, - 0, 97,120, 88, 0, 97,120, 89, 0, 97,120, 90, 0,109,105,110, 76,105,109,105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105, -116, 91, 54, 93, 0,101,120,116,114, 97, 70,122, 0,105,110,118,109, 97,116, 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116, -111, 0,109, 97,112, 91, 51, 93, 0,101,120,112,111, 0,102,114,111,109, 95,109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, - 97,120, 91, 51, 93, 0,116,111, 95,109,105,110, 91, 51, 93, 0,116,111, 95,109, 97,120, 91, 51, 93, 0,114,111,116, 65,120,105, -115, 0,122,109,105,110, 0,122,109, 97,120, 0,112, 97,100, 91, 57, 93, 0, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,110, -111, 95,114,111,116, 95, 97,120,105,115, 0,115,116,114,105,100,101, 95, 97,120,105,115, 0, 99,117,114,109,111,100, 0, 97, 99, -116,115,116, 97,114,116, 0, 97, 99,116,101,110,100, 0, 97, 99,116,111,102,102,115, 0,115,116,114,105,100,101,108,101,110, 0, -115, 99, 97,108,101, 0, 98,108,101,110,100,111,117,116, 0,115,116,114,105,100,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, - 0,111,102,102,115, 95, 98,111,110,101, 91, 51, 50, 93, 0,104, 97,115,105,110,112,117,116, 0,104, 97,115,111,117,116,112,117, -116, 0,100, 97,116, 97,116,121,112,101, 0,115,111, 99,107,101,116,116,121,112,101, 0, 42,110,101,119, 95,115,111, 99,107, 0, -110,115, 0,108,105,109,105,116, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 0,105,110,116,101,114,110, 0,115,116, 97, 99, -107, 95,105,110,100,101,120, 95,101,120,116, 0,108,111, 99,120, 0,108,111, 99,121, 0,111,119,110, 95,105,110,100,101,120, 0, -116,111, 95,105,110,100,101,120, 0, 42,116,111,115,111, 99,107, 0, 42,108,105,110,107, 0, 42,110,101,119, 95,110,111,100,101, - 0,108, 97,115,116,121, 0,111,117,116,112,117,116,115, 0, 42,115,116,111,114, 97,103,101, 0,109,105,110,105,119,105,100,116, -104, 0, 99,117,115,116,111,109, 49, 0, 99,117,115,116,111,109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117,115,116,111,109, - 52, 0,110,101,101,100, 95,101,120,101, 99, 0,101,120,101, 99, 0, 42,116,104,114,101, 97,100,100, 97,116, 97, 0,116,111,116, -114, 0, 98,117,116,114, 0,112,114,118,114, 0, 42, 98,108,111, 99,107, 0, 42,116,121,112,101,105,110,102,111, 0, 42,102,114, -111,109,110,111,100,101, 0, 42,116,111,110,111,100,101, 0, 42,102,114,111,109,115,111, 99,107, 0,110,111,100,101,115, 0,108, -105,110,107,115, 0, 42,115,116, 97, 99,107, 0, 42,116,104,114,101, 97,100,115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, - 97, 99,107,115,105,122,101, 0, 99,117,114, 95,105,110,100,101,120, 0, 97,108,108,116,121,112,101,115, 0, 42,111,119,110,116, -121,112,101, 0,112, 97,100, 50, 91, 50, 93, 0, 40, 42,112,114,111,103,114,101,115,115, 41, 40, 41, 0, 40, 42,115,116, 97,116, -115, 95,100,114, 97,119, 41, 40, 41, 0, 40, 42,116,101,115,116, 95, 98,114,101, 97,107, 41, 40, 41, 0, 42,116, 98,104, 0, 42, -112,114,104, 0, 42,115,100,104, 0, 99,121, 99,108,105, 99, 0,109,111,118,105,101, 0,115, 97,109,112,108,101,115, 0,109,105, -110,115,112,101,101,100, 0,112,101,114, 99,101,110,116,120, 0,112,101,114, 99,101,110,116,121, 0, 98,111,107,101,104, 0,103, - 97,109,109, 97, 0, 99,117,114,118,101,100, 0,105,109, 97,103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109, 97,103,101, - 95,105,110, 95,104,101,105,103,104,116, 0, 99,101,110,116,101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,115,112,105, -110, 0,119,114, 97,112, 0,115,105,103,109, 97, 95, 99,111,108,111,114, 0,115,105,103,109, 97, 95,115,112, 97, 99,101, 0,104, -117,101, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116,114,101,110,103,116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, - 91, 52, 93, 0, 97,108,103,111,114,105,116,104,109, 0, 99,104, 97,110,110,101,108, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, - 50, 0, 99,111,108,110, 97,109,101, 91, 51, 50, 93, 0, 98,107,116,121,112,101, 0,114,111,116, 97,116,105,111,110, 0,103, 97, -109, 99,111, 0,110,111, 95,122, 98,117,102, 0,102,115,116,111,112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115, -104, 0, 42,100,105, 99,116, 0, 42,110,111,100,101, 0, 97,110,103,108,101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109, -105,120, 0,116,104,114,101,115,104,111,108,100, 0,102, 97,100,101, 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102, -105,116, 0,115,108,111,112,101, 91, 51, 93, 0,112,111,119,101,114, 91, 51, 93, 0,108,105,102,116, 95,108,103,103, 91, 51, 93, - 0,108,105,109, 99,104, 97,110, 0,117,110,115,112,105,108,108, 0,108,105,109,115, 99, 97,108,101, 0,117,115,112,105,108,108, -114, 0,117,115,112,105,108,108,103, 0,117,115,112,105,108,108, 98, 0,115,104,111,114,116,121, 0,109,105,110,116, 97, 98,108, -101, 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95,105,110, 91, 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, - 42, 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42,112,114,101,109,117,108,116, 97, 98,108,101, 0,112,114,101,115,101, -116, 0, 99,104, 97,110,103,101,100, 95,116,105,109,101,115,116, 97,109,112, 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99, -109, 91, 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, 0,119,104,105,116,101, 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0, -115, 97,109,112,108,101, 91, 51, 93, 0,120, 95,114,101,115,111,108,117,116,105,111,110, 0,100, 97,116, 97, 95,114, 91, 50, 53, - 54, 93, 0,100, 97,116, 97, 95,103, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95, 98, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95, -108,117,109, 97, 91, 50, 53, 54, 93, 0,115, 97,109,112,108,101, 95,102,117,108,108, 0,115, 97,109,112,108,101, 95,108,105,110, -101,115, 0, 97, 99, 99,117,114, 97, 99,121, 0,119, 97,118,101,102,114,109, 95,109,111,100,101, 0,119, 97,118,101,102,114,109, - 95, 97,108,112,104, 97, 0,119, 97,118,101,102,114,109, 95,121,102, 97, 99, 0,119, 97,118,101,102,114,109, 95,104,101,105,103, -104,116, 0,118,101, 99,115, 99,111,112,101, 95, 97,108,112,104, 97, 0,118,101, 99,115, 99,111,112,101, 95,104,101,105,103,104, -116, 0,109,105,110,109, 97,120, 91, 51, 93, 91, 50, 93, 0,104,105,115,116, 0, 42,119, 97,118,101,102,111,114,109, 95, 49, 0, - 42,119, 97,118,101,102,111,114,109, 95, 50, 0, 42,119, 97,118,101,102,111,114,109, 95, 51, 0, 42,118,101, 99,115, 99,111,112, -101, 0,119, 97,118,101,102,111,114,109, 95,116,111,116, 0,111,102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,109, -116,101,120, 0, 42,105, 99,111,110, 95,105,109, 98,117,102, 0,105, 99,111,110, 0,112, 97,100, 50, 91, 55, 93, 0,105, 99,111, -110, 95,102,105,108,101,112, 97,116,104, 91, 50, 52, 48, 93, 0,110,111,114,109, 97,108, 95,119,101,105,103,104,116, 0,106,105, -116,116,101,114, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,114, 97,100,105,117,115, 0,115,109,111,111,116,104, - 95,115,116,114,111,107,101, 95,102, 97, 99,116,111,114, 0,114, 97,116,101, 0,114,103, 98, 91, 51, 93, 0,115, 99,117,108,112, -116, 95,112,108, 97,110,101, 0,112,108, 97,110,101, 95,111,102,102,115,101,116, 0,115, 99,117,108,112,116, 95,116,111,111,108, - 0,118,101,114,116,101,120,112, 97,105,110,116, 95,116,111,111,108, 0,105,109, 97,103,101,112, 97,105,110,116, 95,116,111,111, -108, 0, 97,117,116,111,115,109,111,111,116,104, 95,102, 97, 99,116,111,114, 0, 99,114,101, 97,115,101, 95,112,105,110, 99,104, - 95,102, 97, 99,116,111,114, 0,112,108, 97,110,101, 95,116,114,105,109, 0,116,101,120,116,117,114,101, 95,115, 97,109,112,108, -101, 95, 98,105, 97,115, 0,116,101,120,116,117,114,101, 95,111,118,101,114,108, 97,121, 95, 97,108,112,104, 97, 0,117,110,112, -114,111,106,101, 99,116,101,100, 95,114, 97,100,105,117,115, 0, 97,100,100, 95, 99,111,108, 91, 51, 93, 0,115,117, 98, 95, 99, -111,108, 91, 51, 93, 0, 97, 99,116,105,118,101, 95,114,110,100, 0, 97, 99,116,105,118,101, 95, 99,108,111,110,101, 0, 97, 99, -116,105,118,101, 95,109, 97,115,107, 0, 42,108, 97,121,101,114,115, 0,116,111,116,108, 97,121,101,114, 0,109, 97,120,108, 97, -121,101,114, 0,116,111,116,115,105,122,101, 0, 42,112,111,111,108, 0, 42,101,120,116,101,114,110, 97,108, 0,118,101,108, 91, - 51, 93, 0,114,111,116, 91, 52, 93, 0, 97,118,101, 91, 51, 93, 0, 42,103,114,111,117,110,100, 0,119, 97,110,100,101,114, 91, - 51, 93, 0,110,117,109, 0,112, 97,114,101,110,116, 0,112, 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0, -102,111,102,102,115,101,116, 0,114,116, 91, 50, 93, 0,112,114,101,118, 95,115,116, 97,116,101, 0, 42,104, 97,105,114, 0, 42, - 98,111,105,100, 0,100,105,101,116,105,109,101, 0,110,117,109, 95,100,109, 99, 97, 99,104,101, 0,104, 97,105,114, 95,105,110, -100,101,120, 0, 97,108,105,118,101, 0,115,112,114,105,110,103, 95,107, 0,114,101,115,116, 95,108,101,110,103,116,104, 0,118, -105,115, 99,111,115,105,116,121, 95,111,109,101,103, 97, 0,118,105,115, 99,111,115,105,116,121, 95, 98,101,116, 97, 0,115,116, -105,102,102,110,101,115,115, 95,107, 0,115,116,105,102,102,110,101,115,115, 95,107,110,101, 97,114, 0,114,101,115,116, 95,100, -101,110,115,105,116,121, 0, 98,117,111,121, 97,110, 99,121, 0, 42, 98,111,105,100,115, 0, 42,102,108,117,105,100, 0,100,105, -115,116,114, 0,112,104,121,115,116,121,112,101, 0, 97,118,101,109,111,100,101, 0,114,101, 97, 99,116,101,118,101,110,116, 0, -100,114, 97,119, 0,100,114, 97,119, 95, 97,115, 0,100,114, 97,119, 95,115,105,122,101, 0, 99,104,105,108,100,116,121,112,101, - 0,114,101,110, 95, 97,115, 0,115,117, 98,102,114, 97,109,101,115, 0,114,101,110, 95,115,116,101,112, 0,104, 97,105,114, 95, -115,116,101,112, 0,107,101,121,115, 95,115,116,101,112, 0, 97,100, 97,112,116, 95, 97,110,103,108,101, 0, 97,100, 97,112,116, - 95,112,105,120, 0,114,111,116,102,114,111,109, 0,105,110,116,101,103,114, 97,116,111,114, 0, 98, 98, 95, 97,108,105,103,110, - 0, 98, 98, 95,117,118, 95,115,112,108,105,116, 0, 98, 98, 95, 97,110,105,109, 0, 98, 98, 95,115,112,108,105,116, 95,111,102, -102,115,101,116, 0, 98, 98, 95,116,105,108,116, 0, 98, 98, 95,114, 97,110,100, 95,116,105,108,116, 0, 98, 98, 95,111,102,102, -115,101,116, 91, 50, 93, 0,115,105,109,112,108,105,102,121, 95,114,101,102,115,105,122,101, 0,115,105,109,112,108,105,102,121, - 95,114, 97,116,101, 0,115,105,109,112,108,105,102,121, 95,116,114, 97,110,115,105,116,105,111,110, 0,115,105,109,112,108,105, -102,121, 95,118,105,101,119,112,111,114,116, 0,116,105,109,101,116,119,101, 97,107, 0,106,105,116,102, 97, 99, 0,101,102,102, - 95,104, 97,105,114, 0,103,114,105,100, 95,114,101,115, 0,112, 97,114,116,102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116, 97, -110,112,104, 97,115,101, 0,114,101, 97, 99,116,102, 97, 99, 0,111, 98, 95,118,101,108, 91, 51, 93, 0, 97,118,101,102, 97, 99, - 0,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,114,111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, - 99, 0,114, 97,110,100,115,105,122,101, 0,114,101, 97, 99,116,115,104, 97,112,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97, -103,102, 97, 99, 0, 98,114,111,119,110,102, 97, 99, 0,100, 97,109,112,102, 97, 99, 0,114, 97,110,100,108,101,110,103,116,104, - 0, 99,104,105,108,100, 95,110, 98,114, 0,114,101,110, 95, 99,104,105,108,100, 95,110, 98,114, 0,112, 97,114,101,110,116,115, - 0, 99,104,105,108,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,110,100,115,105,122,101, 0, 99,104,105,108,100,114, 97, -100, 0, 99,104,105,108,100,102,108, 97,116, 0, 99,108,117,109,112,112,111,119, 0,114,111,117,103,104, 49, 0,114,111,117,103, -104, 49, 95,115,105,122,101, 0,114,111,117,103,104, 50, 0,114,111,117,103,104, 50, 95,115,105,122,101, 0,114,111,117,103,104, - 50, 95,116,104,114,101,115, 0,114,111,117,103,104, 95,101,110,100, 0,114,111,117,103,104, 95,101,110,100, 95,115,104, 97,112, -101, 0, 99,108,101,110,103,116,104, 0, 99,108,101,110,103,116,104, 95,116,104,114,101,115, 0, 98,114, 97,110, 99,104, 95,116, -104,114,101,115, 0,100,114, 97,119, 95,108,105,110,101, 91, 50, 93, 0,112, 97,116,104, 95,115,116, 97,114,116, 0,112, 97,116, -104, 95,101,110,100, 0,116,114, 97,105,108, 95, 99,111,117,110,116, 0,107,101,121,101,100, 95,108,111,111,112,115, 0,100,117, -112,108,105,119,101,105,103,104,116,115, 0, 42,101,102,102, 95,103,114,111,117,112, 0, 42,100,117,112, 95,111, 98, 0, 42, 98, - 98, 95,111, 98, 0, 42,112,100, 50, 0, 42,112, 97,114,116, 0, 42,112, 97,114,116,105, 99,108,101,115, 0, 42, 42,112, 97,116, -104, 99, 97, 99,104,101, 0, 42, 42, 99,104,105,108,100, 99, 97, 99,104,101, 0,112, 97,116,104, 99, 97, 99,104,101, 98,117,102, -115, 0, 99,104,105,108,100, 99, 97, 99,104,101, 98,117,102,115, 0, 42, 99,108,109,100, 0, 42,104, 97,105,114, 95,105,110, 95, -100,109, 0, 42,104, 97,105,114, 95,111,117,116, 95,100,109, 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42,108, 97,116,116, -105, 99,101, 0,116,114,101,101, 95,102,114, 97,109,101, 0,116,111,116, 99,104,105,108,100, 0,116,111,116, 99, 97, 99,104,101, -100, 0,116,111,116, 99,104,105,108,100, 99, 97, 99,104,101, 0,116, 97,114,103,101,116, 95,112,115,121,115, 0,116,111,116,107, -101,121,101,100, 0, 98, 97,107,101,115,112, 97, 99,101, 0, 98, 98, 95,117,118,110, 97,109,101, 91, 51, 93, 91, 51, 50, 93, 0, -118,103,114,111,117,112, 91, 49, 50, 93, 0,118,103, 95,110,101,103, 0,114,116, 51, 0, 42,114,101,110,100,101,114,100, 97,116, - 97, 0, 42,101,102,102,101, 99,116,111,114,115, 0, 42,116,114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97,110,100, 0, 67, -100,105,115, 0, 67,118,105, 0,115,116,114,117, 99,116,117,114, 97,108, 0, 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98, -101,110,100, 0,109, 97,120, 95,115,116,114,117, 99,116, 0,109, 97,120, 95,115,104,101, 97,114, 0, 97,118,103, 95,115,112,114, -105,110,103, 95,108,101,110, 0,116,105,109,101,115, 99, 97,108,101, 0,101,102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108, -101, 0,101,102,102, 95,119,105,110,100, 95,115, 99, 97,108,101, 0,115,105,109, 95,116,105,109,101, 95,111,108,100, 0,118,101, -108,111, 99,105,116,121, 95,115,109,111,111,116,104, 0, 99,111,108,108,105,100,101,114, 95,102,114,105, 99,116,105,111,110, 0, -115,116,101,112,115, 80,101,114, 70,114, 97,109,101, 0,112,114,101,114,111,108,108, 0,109, 97,120,115,112,114,105,110,103,108, -101,110, 0,115,111,108,118,101,114, 95,116,121,112,101, 0,118,103,114,111,117,112, 95, 98,101,110,100, 0,118,103,114,111,117, -112, 95,109, 97,115,115, 0,118,103,114,111,117,112, 95,115,116,114,117, 99,116, 0,115,104, 97,112,101,107,101,121, 95,114,101, -115,116, 0,112,114,101,115,101,116,115, 0,114,101,115,101,116, 0, 42, 99,111,108,108,105,115,105,111,110, 95,108,105,115,116, - 0,101,112,115,105,108,111,110, 0,115,101,108,102, 95,102,114,105, 99,116,105,111,110, 0,115,101,108,102,101,112,115,105,108, -111,110, 0,115,101,108,102, 95,108,111,111,112, 95, 99,111,117,110,116, 0,108,111,111,112, 95, 99,111,117,110,116, 0,112,114, -101,115,115,117,114,101, 0,116,104,105, 99,107,110,101,115,115, 0,115,116,114,111,107,101,115, 0,102,114, 97,109,101,110,117, -109, 0, 42, 97, 99,116,102,114, 97,109,101, 0,103,115,116,101,112, 0,105,110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102, -102,101,114, 95,115,105,122,101, 0,115, 98,117,102,102,101,114, 95,115,102,108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, - 42,116,121,112,101,115,116,114, 0, 42,109,101,115,115, 97,103,101, 0,108,105,115,116, 0,112,114,105,110,116,108,101,118,101, -108, 0,115,116,111,114,101,108,101,118,101,108, 0, 42,114,101,112,111,114,116,116,105,109,101,114, 0,103,114,101,121,115, 99, - 97,108,101, 0,119,105,100,116,104,102, 97, 99, 0, 42,119,105,110,100,114, 97,119, 97, 98,108,101, 0, 42,119,105,110, 97, 99, -116,105,118,101, 0,119,105,110,100,111,119,115, 0,105,110,105,116,105, 97,108,105,122,101,100, 0,102,105,108,101, 95,115, 97, -118,101,100, 0,111,112, 95,117,110,100,111, 95,100,101,112,116,104, 0,111,112,101,114, 97,116,111,114,115, 0,113,117,101,117, -101, 0,114,101,112,111,114,116,115, 0,106,111, 98,115, 0,112, 97,105,110,116, 99,117,114,115,111,114,115, 0,100,114, 97,103, -115, 0,107,101,121, 99,111,110,102,105,103,115, 0, 42,100,101,102, 97,117,108,116, 99,111,110,102, 0,116,105,109,101,114,115, - 0, 42, 97,117,116,111,115, 97,118,101,116,105,109,101,114, 0, 42,103,104,111,115,116,119,105,110, 0,103,114, 97, 98, 99,117, -114,115,111,114, 0, 42,110,101,119,115, 99,114,101,101,110, 0,115, 99,114,101,101,110,110, 97,109,101, 91, 51, 50, 93, 0,112, -111,115,120, 0,112,111,115,121, 0,119,105,110,100,111,119,115,116, 97,116,101, 0,109,111,110,105,116,111,114, 0,108, 97,115, -116, 99,117,114,115,111,114, 0, 97,100,100,109,111,117,115,101,109,111,118,101, 0, 42,101,118,101,110,116,115,116, 97,116,101, - 0, 42, 99,117,114,115,119,105,110, 0, 42,116,119,101, 97,107, 0,100,114, 97,119,109,101,116,104,111,100, 0,100,114, 97,119, -102, 97,105,108, 0, 42,100,114, 97,119,100, 97,116, 97, 0,109,111,100, 97,108,104, 97,110,100,108,101,114,115, 0,115,117, 98, -119,105,110,100,111,119,115, 0,103,101,115,116,117,114,101, 0,105,100,110, 97,109,101, 91, 54, 52, 93, 0,112,114,111,112,118, - 97,108,117,101, 0,115,104,105,102,116, 0, 99,116,114,108, 0, 97,108,116, 0,111,115,107,101,121, 0,107,101,121,109,111,100, -105,102,105,101,114, 0,109, 97,112,116,121,112,101, 0, 42,112,116,114, 0,105,116,101,109,115, 0,115,112, 97, 99,101,105,100, - 0,114,101,103,105,111,110,105,100, 0,107,109,105, 95,105,100, 0, 40, 42,112,111,108,108, 41, 40, 41, 0, 42,109,111,100, 97, -108, 95,105,116,101,109,115, 0, 98, 97,115,101,110, 97,109,101, 91, 54, 52, 93, 0, 97, 99,116,107,101,121,109, 97,112, 0, 42, - 99,117,115,116,111,109,100, 97,116, 97, 0, 42,112,121, 95,105,110,115,116, 97,110, 99,101, 0, 42,114,101,112,111,114,116,115, - 0,109, 97, 99,114,111, 0, 42,111,112,109, 0, 42,101,100, 97,116, 97, 0,105,110,102,108,117,101,110, 99,101, 0, 42, 99,111, -101,102,102,105, 99,105,101,110,116,115, 0, 97,114,114, 97,121,115,105,122,101, 0,112,111,108,121, 95,111,114,100,101,114, 0, - 97,109,112,108,105,116,117,100,101, 0,112,104, 97,115,101, 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, 97,115,101, - 95,111,102,102,115,101,116, 0,118, 97,108,117,101, 95,111,102,102,115,101,116, 0,109,105,100,118, 97,108, 0, 98,101,102,111, -114,101, 95,109,111,100,101, 0, 97,102,116,101,114, 95,109,111,100,101, 0, 98,101,102,111,114,101, 95, 99,121, 99,108,101,115, - 0, 97,102,116,101,114, 95, 99,121, 99,108,101,115, 0,114,101, 99,116, 0,112,104, 97,115,101, 0,109,111,100,105,102,105, 99, - 97,116,105,111,110, 0,115,116,101,112, 95,115,105,122,101, 0, 42,114,110, 97, 95,112, 97,116,104, 0,112, 99,104, 97,110, 95, -110, 97,109,101, 91, 51, 50, 93, 0,116,114, 97,110,115, 67,104, 97,110, 0,105,100,116,121,112,101, 0,116, 97,114,103,101,116, -115, 91, 56, 93, 0,110,117,109, 95,116, 97,114,103,101,116,115, 0,118, 97,114,105, 97, 98,108,101,115, 0,101,120,112,114,101, -115,115,105,111,110, 91, 50, 53, 54, 93, 0, 42,101,120,112,114, 95, 99,111,109,112, 0,118,101, 99, 91, 50, 93, 0, 42,102,112, -116, 0, 97,114,114, 97,121, 95,105,110,100,101,120, 0, 99,111,108,111,114, 95,109,111,100,101, 0, 99,111,108,111,114, 91, 51, - 93, 0,102,114,111,109, 91, 49, 50, 56, 93, 0,116,111, 91, 49, 50, 56, 93, 0,109, 97,112,112,105,110,103,115, 0,115,116,114, -105,112,115, 0, 42,114,101,109, 97,112, 0,102, 99,117,114,118,101,115, 0,115,116,114,105,112, 95,116,105,109,101, 0, 98,108, -101,110,100,109,111,100,101, 0,101,120,116,101,110,100,109,111,100,101, 0,103,114,111,117,112, 91, 54, 52, 93, 0,103,114,111, -117,112,109,111,100,101, 0,107,101,121,105,110,103,102,108, 97,103, 0,112, 97,116,104,115, 0,116,121,112,101,105,110,102,111, - 91, 54, 52, 93, 0, 97, 99,116,105,118,101, 95,112, 97,116,104, 0, 42,116,109,112, 97, 99,116, 0,110,108, 97, 95,116,114, 97, - 99,107,115, 0, 42, 97, 99,116,115,116,114,105,112, 0,100,114,105,118,101,114,115, 0,111,118,101,114,114,105,100,101,115, 0, - 97, 99,116, 95, 98,108,101,110,100,109,111,100,101, 0, 97, 99,116, 95,101,120,116,101,110,100,109,111,100,101, 0, 97, 99,116, - 95,105,110,102,108,117,101,110, 99,101, 0,114,117,108,101, 0,111,112,116,105,111,110,115, 0,102,101, 97,114, 95,102, 97, 99, -116,111,114, 0,115,105,103,110, 97,108, 95,105,100, 0,108,111,111,107, 95, 97,104,101, 97,100, 0,111,108,111, 99, 91, 51, 93, - 0,113,117,101,117,101, 95,115,105,122,101, 0,119, 97,110,100,101,114, 0,102,108,101,101, 95,100,105,115,116, 97,110, 99,101, - 0,104,101, 97,108,116,104, 0,115,116, 97,116,101, 95,105,100, 0,114,117,108,101,115, 0, 99,111,110,100,105,116,105,111,110, -115, 0, 97, 99,116,105,111,110,115, 0,114,117,108,101,115,101,116, 95,116,121,112,101, 0,114,117,108,101, 95,102,117,122,122, -105,110,101,115,115, 0,108, 97,115,116, 95,115,116, 97,116,101, 95,105,100, 0,108, 97,110,100,105,110,103, 95,115,109,111,111, -116,104,110,101,115,115, 0, 98, 97,110,107,105,110,103, 0, 97,103,103,114,101,115,115,105,111,110, 0, 97,105,114, 95,109,105, -110, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, - 99, 0, 97,105,114, 95,109, 97,120, 95, 97,118,101, 0, 97,105,114, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, - 0,108, 97,110,100, 95,106,117,109,112, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95,115,112,101,101,100, 0, -108, 97,110,100, 95,109, 97,120, 95, 97, 99, 99, 0,108, 97,110,100, 95,109, 97,120, 95, 97,118,101, 0,108, 97,110,100, 95,112, -101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,115,116,105, 99,107, 95,102,111,114, 99,101, 0,115, -116, 97,116,101,115, 0, 42,115,109,100, 0, 42,102,108,117,105,100, 95,103,114,111,117,112, 0, 42, 99,111,108,108, 95,103,114, -111,117,112, 0, 42,119,116, 0, 42,116,101,120, 95,119,116, 0, 42,116,101,120, 95,115,104, 97,100,111,119, 0, 42,115,104, 97, -100,111,119, 0,112, 48, 91, 51, 93, 0,112, 49, 91, 51, 93, 0,100,120, 0,111,109,101,103, 97, 0,116,101,109,112, 65,109, 98, - 0, 98,101,116, 97, 0,114,101,115, 91, 51, 93, 0, 97,109,112,108,105,102,121, 0,109, 97,120,114,101,115, 0,118,105,101,119, -115,101,116,116,105,110,103,115, 0,110,111,105,115,101, 0,100,105,115,115, 95,112,101,114, 99,101,110,116, 0,100,105,115,115, - 95,115,112,101,101,100, 0,114,101,115, 95,119,116, 91, 51, 93, 0,100,120, 95,119,116, 0,118, 51,100,110,117,109, 0, 99, 97, - 99,104,101, 95, 99,111,109,112, 0, 99, 97, 99,104,101, 95,104,105,103,104, 95, 99,111,109,112, 0, 42,112,111,105,110,116, 95, - 99, 97, 99,104,101, 91, 50, 93, 0,112,116, 99, 97, 99,104,101,115, 91, 50, 93, 0,118,101,108,111, 99,105,116,121, 91, 51, 93, - 0,118,103,114,112, 95,104,101, 97,116, 95,115, 99, 97,108,101, 91, 50, 93, 0,118,103,114,111,117,112, 95,102,108,111,119, 0, -118,103,114,111,117,112, 95,100,101,110,115,105,116,121, 0,118,103,114,111,117,112, 95,104,101, 97,116, 0, 42,112,111,105,110, -116,115, 95,111,108,100, 0, 42,118,101,108, 0,109, 97,116, 95,111,108,100, 91, 52, 93, 91, 52, 93, 0, 0, 0, 84, 89, 80, 69, -212, 1, 0, 0, 99,104, 97,114, 0,117, 99,104, 97,114, 0,115,104,111,114,116, 0,117,115,104,111,114,116, 0,105,110,116, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +154, 0, 0,255,189, 17, 17,255,247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, + 30,145, 9,255, 89,183, 11,255,131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0, +169, 41, 78,255,193, 65,106,255,240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, + 36,120, 90,255, 60,149,121,255,111,182,171,255, 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0, +244,201, 12,255,238,194, 54,255,243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0, +111, 47,106,255,152, 69,190,255,211, 48,214,255, 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0, +141,141,141,255,176,176,176,255,222,222,222,255, 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, + 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 68, 78, 65, 49,112,226, 0, 0,192, 75,125, 3, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, + 78, 65, 77, 69,200, 11, 0, 0, 42,110,101,120,116, 0, 42,112,114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, + 0, 42,108, 97,115,116, 0,120, 0,121, 0,122, 0,119, 0,120,109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, + 97,120, 0, 42,112,111,105,110,116,101,114, 0,103,114,111,117,112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0, +115,117, 98,116,121,112,101, 0,102,108, 97,103, 0,110, 97,109,101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0,100, 97,116, 97, + 0,108,101,110, 0,116,111,116, 97,108,108,101,110, 0, 42,110,101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 50, + 52, 93, 0,117,115, 0,105, 99,111,110, 95,105,100, 0, 42,112,114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, + 98,108,111, 99,107, 0, 42,102,105,108,101,100, 97,116, 97, 0,110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,108,101,112, 97, +116,104, 91, 50, 52, 48, 93, 0,116,111,116, 0,112, 97,100, 0, 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, + 93, 0, 99,104, 97,110,103,101,100, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 95,116,105,109,101,115,116, 97,109,112, 91, 50, + 93, 0, 42,114,101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, 98,108,111, 99,107,116,121,112,101, 0, 97,100,114, 99,111,100,101, + 0,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, 42, 98,101,122,116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, + 99,116, 0,118, 97,114,116,121,112,101, 0,116,111,116,118,101,114,116, 0,105,112,111, 0,101,120,116,114, 97,112, 0,114,116, + 0, 98,105,116,109, 97,115,107, 0,115,108,105,100,101, 95,109,105,110, 0,115,108,105,100,101, 95,109, 97,120, 0, 99,117,114, +118, 97,108, 0, 42,100,114,105,118,101,114, 0, 99,117,114,118,101, 0, 99,117,114, 0,115,104,111,119,107,101,121, 0,109,117, +116,101,105,112,111, 0,112,111,115, 0,114,101,108, 97,116,105,118,101, 0,116,111,116,101,108,101,109, 0,112, 97,100, 50, 0, + 42,119,101,105,103,104,116,115, 0,118,103,114,111,117,112, 91, 51, 50, 93, 0,115,108,105,100,101,114,109,105,110, 0,115,108, +105,100,101,114,109, 97,120, 0, 42, 97,100,116, 0, 42,114,101,102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, + 0,101,108,101,109,115,105,122,101, 0, 98,108,111, 99,107, 0, 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101, +121, 0,115,108,117,114,112,104, 0, 42,108,105,110,101, 0, 42,102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101, +110,111, 0,115,116, 97,114,116, 0,101,110,100, 0,112, 97,100, 49, 0,102,108, 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, + 0,112, 97,100, 91, 52, 93, 0, 42,110, 97,109,101, 0,110,108,105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108, + 0, 42,115,101,108,108, 0, 99,117,114, 99, 0,115,101,108, 99, 0,109, 97,114,107,101,114,115, 0, 42,117,110,100,111, 95, 98, +117,102, 0,117,110,100,111, 95,112,111,115, 0,117,110,100,111, 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,109, +116,105,109,101, 0,115,105,122,101, 0,115,101,101,107, 0,112, 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0, 99,108, +105,112,115,116, 97, 0, 99,108,105,112,101,110,100, 0,108,101,110,115, 0,111,114,116,104,111, 95,115, 99, 97,108,101, 0,100, +114, 97,119,115,105,122,101, 0,115,104,105,102,116,120, 0,115,104,105,102,116,121, 0, 89, 70, 95,100,111,102,100,105,115,116, + 0, 42,100,111,102, 95,111, 98, 0,102,114, 97,109,101,110,114, 0,102,114, 97,109,101,115, 0,111,102,102,115,101,116, 0,115, +102,114, 97, 0,102,105,101, 95,105,109, 97, 0, 99,121, 99,108, 0,111,107, 0,109,117,108,116,105, 95,105,110,100,101,120, 0, +108, 97,121,101,114, 0,112, 97,115,115, 0,109,101,110,117,110,114, 0, 42,115, 99,101,110,101, 0,105, 98,117,102,115, 0, 42, +103,112,117,116,101,120,116,117,114,101, 0, 42, 97,110,105,109, 0, 42,114,114, 0, 42,114,101,110,100,101,114,115, 91, 56, 93, + 0,114,101,110,100,101,114, 95,115,108,111,116, 0,108, 97,115,116, 95,114,101,110,100,101,114, 95,115,108,111,116, 0,115,111, +117,114, 99,101, 0,108, 97,115,116,102,114, 97,109,101, 0,116,112, 97,103,101,102,108, 97,103, 0,116,111,116, 98,105,110,100, + 0,120,114,101,112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119,101,110,100, 0, 98,105,110,100, 99,111,100,101, 0, + 42,114,101,112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108,101, 0, 42,112,114,101,118,105,101,119, 0,108, 97, +115,116,117,112,100, 97,116,101, 0,108, 97,115,116,117,115,101,100, 0, 97,110,105,109,115,112,101,101,100, 0,103,101,110, 95, +120, 0,103,101,110, 95,121, 0,103,101,110, 95,116,121,112,101, 0, 97,115,112,120, 0, 97,115,112,121, 0,116,101,120, 99,111, + 0,109, 97,112,116,111, 0,109, 97,112,116,111,110,101,103, 0, 98,108,101,110,100,116,121,112,101, 0, 42,111, 98,106,101, 99, +116, 0, 42,116,101,120, 0,117,118,110, 97,109,101, 91, 51, 50, 93, 0,112,114,111,106,120, 0,112,114,111,106,121, 0,112,114, +111,106,122, 0,109, 97,112,112,105,110,103, 0,111,102,115, 91, 51, 93, 0,115,105,122,101, 91, 51, 93, 0,114,111,116, 0,116, +101,120,102,108, 97,103, 0, 99,111,108,111,114,109,111,100,101,108, 0,112,109, 97,112,116,111, 0,112,109, 97,112,116,111,110, +101,103, 0,110,111,114,109, 97,112,115,112, 97, 99,101, 0,119,104,105, 99,104, 95,111,117,116,112,117,116, 0, 98,114,117,115, +104, 95,109, 97,112, 95,109,111,100,101, 0,112, 97,100, 91, 55, 93, 0,114, 0,103, 0, 98, 0,107, 0,100,101,102, 95,118, 97, +114, 0, 99,111,108,102, 97, 99, 0,118, 97,114,102, 97, 99, 0,110,111,114,102, 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, + 97,114,112,102, 97, 99, 0, 99,111,108,115,112,101, 99,102, 97, 99, 0,109,105,114,114,102, 97, 99, 0, 97,108,112,104, 97,102, + 97, 99, 0,100,105,102,102,102, 97, 99, 0,115,112,101, 99,102, 97, 99, 0,101,109,105,116,102, 97, 99, 0,104, 97,114,100,102, + 97, 99, 0,114, 97,121,109,105,114,114,102, 97, 99, 0,116,114, 97,110,115,108,102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99, +111,108,101,109,105,116,102, 97, 99, 0, 99,111,108,114,101,102,108,102, 97, 99, 0, 99,111,108,116,114, 97,110,115,102, 97, 99, + 0,100,101,110,115,102, 97, 99, 0,115, 99, 97,116,116,101,114,102, 97, 99, 0,114,101,102,108,102, 97, 99, 0,116,105,109,101, +102, 97, 99, 0,108,101,110,103,116,104,102, 97, 99, 0, 99,108,117,109,112,102, 97, 99, 0,107,105,110,107,102, 97, 99, 0,114, +111,117,103,104,102, 97, 99, 0,112, 97,100,101,110,115,102, 97, 99, 0,108,105,102,101,102, 97, 99, 0,115,105,122,101,102, 97, + 99, 0,105,118,101,108,102, 97, 99, 0,112,118,101,108,102, 97, 99, 0,115,104, 97,100,111,119,102, 97, 99, 0,122,101,110,117, +112,102, 97, 99, 0,122,101,110,100,111,119,110,102, 97, 99, 0, 98,108,101,110,100,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, + 48, 93, 0, 42,104, 97,110,100,108,101, 0, 42,112,110, 97,109,101, 0, 42,115,116,110, 97,109,101,115, 0,115,116,121,112,101, +115, 0,118, 97,114,115, 0, 42,118, 97,114,115,116,114, 0, 42,114,101,115,117,108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, + 97, 91, 51, 50, 93, 0, 40, 42,100,111,105,116, 41, 40, 41, 0, 40, 42,105,110,115,116, 97,110, 99,101, 95,105,110,105,116, 41, + 40, 41, 0, 40, 42, 99, 97,108,108, 98, 97, 99,107, 41, 40, 41, 0,118,101,114,115,105,111,110, 0, 97, 0,105,112,111,116,121, +112,101, 0, 42,105,109, 97, 0, 42, 99,117, 98,101, 91, 54, 93, 0,105,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, + 97,116, 91, 51, 93, 91, 51, 93, 0,115,116,121,112,101, 0,118,105,101,119,115, 99, 97,108,101, 0,110,111,116,108, 97,121, 0, + 99,117, 98,101,114,101,115, 0,100,101,112,116,104, 0,114,101, 99, 97,108, 99, 0,108, 97,115,116,115,105,122,101, 0,102, 97, +108,108,111,102,102, 95,116,121,112,101, 0,102, 97,108,108,111,102,102, 95,115,111,102,116,110,101,115,115, 0,114, 97,100,105, +117,115, 0, 99,111,108,111,114, 95,115,111,117,114, 99,101, 0,116,111,116,112,111,105,110,116,115, 0,112,100,112, 97,100, 0, +112,115,121,115, 0,112,115,121,115, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115, +112, 97, 99,101, 0, 42,112,111,105,110,116, 95,116,114,101,101, 0, 42,112,111,105,110,116, 95,100, 97,116, 97, 0,110,111,105, +115,101, 95,115,105,122,101, 0,110,111,105,115,101, 95,100,101,112,116,104, 0,110,111,105,115,101, 95,105,110,102,108,117,101, +110, 99,101, 0,110,111,105,115,101, 95, 98, 97,115,105,115, 0,112,100,112, 97,100, 51, 91, 51, 93, 0,110,111,105,115,101, 95, +102, 97, 99, 0,115,112,101,101,100, 95,115, 99, 97,108,101, 0, 42, 99,111, 98, 97, 0,114,101,115,111,108, 91, 51, 93, 0,105, +110,116,101,114,112, 95,116,121,112,101, 0,102,105,108,101, 95,102,111,114,109, 97,116, 0,101,120,116,101,110,100, 0,115,109, +111,107,101,100, 95,116,121,112,101, 0,105,110,116, 95,109,117,108,116,105,112,108,105,101,114, 0,115,116,105,108,108, 95,102, +114, 97,109,101, 0,115,111,117,114, 99,101, 95,112, 97,116,104, 91, 50, 52, 48, 93, 0, 42,100, 97,116, 97,115,101,116, 0, 99, + 97, 99,104,101,100,102,114, 97,109,101, 0,110,111,105,115,101,115,105,122,101, 0,116,117,114, 98,117,108, 0, 98,114,105,103, +104,116, 0, 99,111,110,116,114, 97,115,116, 0,115, 97,116,117,114, 97,116,105,111,110, 0,114,102, 97, 99, 0,103,102, 97, 99, + 0, 98,102, 97, 99, 0,102,105,108,116,101,114,115,105,122,101, 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, 97,114, +105,116,121, 0,109,103, 95,111, 99,116, 97,118,101,115, 0,109,103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97,105,110, + 0,100,105,115,116, 95, 97,109,111,117,110,116, 0,110,115, 95,111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, 0,118, +110, 95,119, 50, 0,118,110, 95,119, 51, 0,118,110, 95,119, 52, 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105,115,116, +109, 0,118,110, 95, 99,111,108,116,121,112,101, 0,110,111,105,115,101,100,101,112,116,104, 0,110,111,105,115,101,116,121,112, +101, 0,110,111,105,115,101, 98, 97,115,105,115, 0,110,111,105,115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, 97,103, + 0, 99,114,111,112,120,109,105,110, 0, 99,114,111,112,121,109,105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114,111,112, +121,109, 97,120, 0,116,101,120,102,105,108,116,101,114, 0, 97,102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101, +112,101, 97,116, 0, 99,104,101, 99,107,101,114,100,105,115,116, 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42,110,111, +100,101,116,114,101,101, 0, 42,112,108,117,103,105,110, 0, 42,101,110,118, 0, 42,112,100, 0, 42,118,100, 0,117,115,101, 95, +110,111,100,101,115, 0,108,111, 99, 91, 51, 93, 0,114,111,116, 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105, +110, 91, 51, 93, 0,109, 97,120, 91, 51, 93, 0,109,111,100,101, 0,116,111,116,101,120, 0,115,104,100,119,114, 0,115,104,100, +119,103, 0,115,104,100,119, 98, 0,115,104,100,119,112, 97,100, 0,101,110,101,114,103,121, 0,100,105,115,116, 0,115,112,111, +116,115,105,122,101, 0,115,112,111,116, 98,108,101,110,100, 0,104, 97,105,110,116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, + 42, 99,117,114,102, 97,108,108,111,102,102, 0,115,104, 97,100,115,112,111,116,115,105,122,101, 0, 98,105, 97,115, 0,115,111, +102,116, 0, 99,111,109,112,114,101,115,115,116,104,114,101,115,104, 0,112, 97,100, 53, 91, 51, 93, 0, 98,117,102,115,105,122, +101, 0,115, 97,109,112, 0, 98,117,102,102,101,114,115, 0,102,105,108,116,101,114,116,121,112,101, 0, 98,117,102,102,108, 97, +103, 0, 98,117,102,116,121,112,101, 0,114, 97,121, 95,115, 97,109,112, 0,114, 97,121, 95,115, 97,109,112,121, 0,114, 97,121, + 95,115, 97,109,112,122, 0,114, 97,121, 95,115, 97,109,112, 95,116,121,112,101, 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, + 97,114,101, 97, 95,115,105,122,101, 0, 97,114,101, 97, 95,115,105,122,101,121, 0, 97,114,101, 97, 95,115,105,122,101,122, 0, + 97,100, 97,112,116, 95,116,104,114,101,115,104, 0,114, 97,121, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0,116,101,120, + 97, 99,116, 0,115,104, 97,100,104, 97,108,111,115,116,101,112, 0,115,117,110, 95,101,102,102,101, 99,116, 95,116,121,112,101, + 0,115,107,121, 98,108,101,110,100,116,121,112,101, 0,104,111,114,105,122,111,110, 95, 98,114,105,103,104,116,110,101,115,115, + 0,115,112,114,101, 97,100, 0,115,117,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,117,110, 95,115,105,122,101, 0, + 98, 97, 99,107,115, 99, 97,116,116,101,114,101,100, 95,108,105,103,104,116, 0,115,117,110, 95,105,110,116,101,110,115,105,116, +121, 0, 97,116,109, 95,116,117,114, 98,105,100,105,116,121, 0, 97,116,109, 95,105,110,115, 99, 97,116,116,101,114,105,110,103, + 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,101,120,116,105,110, 99,116,105,111,110, 95,102, 97, 99,116,111,114, 0, 97,116, +109, 95,100,105,115,116, 97,110, 99,101, 95,102, 97, 99,116,111,114, 0,115,107,121, 98,108,101,110,100,102, 97, 99, 0,115,107, +121, 95,101,120,112,111,115,117,114,101, 0,115,107,121, 95, 99,111,108,111,114,115,112, 97, 99,101, 0,112, 97,100, 52, 91, 54, + 93, 0, 42,109,116,101,120, 91, 49, 56, 93, 0,112,114, 95,116,101,120,116,117,114,101, 0,112, 97,100, 54, 91, 54, 93, 0,100, +101,110,115,105,116,121, 0,101,109,105,115,115,105,111,110, 0,115, 99, 97,116,116,101,114,105,110,103, 0,114,101,102,108,101, + 99,116,105,111,110, 0,101,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,116,114, 97,110,115,109,105,115,115,105, +111,110, 95, 99,111,108, 91, 51, 93, 0,114,101,102,108,101, 99,116,105,111,110, 95, 99,111,108, 91, 51, 93, 0,100,101,110,115, +105,116,121, 95,115, 99, 97,108,101, 0,100,101,112,116,104, 95, 99,117,116,111,102,102, 0, 97,115,121,109,109,101,116,114,121, + 0,115,116,101,112,115,105,122,101, 95,116,121,112,101, 0,115,104, 97,100,101,102,108, 97,103, 0,115,104, 97,100,101, 95,116, +121,112,101, 0,112,114,101, 99, 97, 99,104,101, 95,114,101,115,111,108,117,116,105,111,110, 0,115,116,101,112,115,105,122,101, + 0,109,115, 95,100,105,102,102, 0,109,115, 95,105,110,116,101,110,115,105,116,121, 0,109,115, 95,115,112,114,101, 97,100, 0, +109, 97,116,101,114,105, 97,108, 95,116,121,112,101, 0,115,112,101, 99,114, 0,115,112,101, 99,103, 0,115,112,101, 99, 98, 0, +109,105,114,114, 0,109,105,114,103, 0,109,105,114, 98, 0, 97,109, 98,114, 0, 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, + 98, 0,101,109,105,116, 0, 97,110,103, 0,115,112,101, 99,116,114, 97, 0,114, 97,121, 95,109,105,114,114,111,114, 0, 97,108, +112,104, 97, 0,114,101,102, 0,115,112,101, 99, 0,122,111,102,102,115, 0, 97,100,100, 0,116,114, 97,110,115,108,117, 99,101, +110, 99,121, 0,118,111,108, 0,102,114,101,115,110,101,108, 95,109,105,114, 0,102,114,101,115,110,101,108, 95,109,105,114, 95, +105, 0,102,114,101,115,110,101,108, 95,116,114, 97, 0,102,114,101,115,110,101,108, 95,116,114, 97, 95,105, 0,102,105,108,116, +101,114, 0,116,120, 95,108,105,109,105,116, 0,116,120, 95,102, 97,108,108,111,102,102, 0,114, 97,121, 95,100,101,112,116,104, + 0,114, 97,121, 95,100,101,112,116,104, 95,116,114, 97, 0,104, 97,114, 0,115,101,101,100, 49, 0,115,101,101,100, 50, 0,103, +108,111,115,115, 95,109,105,114, 0,103,108,111,115,115, 95,116,114, 97, 0,115, 97,109,112, 95,103,108,111,115,115, 95,109,105, +114, 0,115, 97,109,112, 95,103,108,111,115,115, 95,116,114, 97, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,109,105, +114, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,116,114, 97, 0, 97,110,105,115,111, 95,103,108,111,115,115, 95,109, +105,114, 0,100,105,115,116, 95,109,105,114, 0,102, 97,100,101,116,111, 95,109,105,114, 0,115,104, 97,100,101, 95,102,108, 97, +103, 0,109,111,100,101, 95,108, 0,102,108, 97,114,101, 99, 0,115,116, 97,114, 99, 0,108,105,110,101, 99, 0,114,105,110,103, + 99, 0,104, 97,115,105,122,101, 0,102,108, 97,114,101,115,105,122,101, 0,115,117, 98,115,105,122,101, 0,102,108, 97,114,101, + 98,111,111,115,116, 0,115,116,114, 97,110,100, 95,115,116, 97, 0,115,116,114, 97,110,100, 95,101,110,100, 0,115,116,114, 97, +110,100, 95,101, 97,115,101, 0,115,116,114, 97,110,100, 95,115,117,114,102,110,111,114, 0,115,116,114, 97,110,100, 95,109,105, +110, 0,115,116,114, 97,110,100, 95,119,105,100,116,104,102, 97,100,101, 0,115,116,114, 97,110,100, 95,117,118,110, 97,109,101, + 91, 51, 50, 93, 0,115, 98,105, 97,115, 0,108, 98,105, 97,115, 0,115,104, 97,100, 95, 97,108,112,104, 97, 0,115,101,112,116, +101,120, 0,114,103, 98,115,101,108, 0,112,114, 95,116,121,112,101, 0,112,114, 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109, +112, 0,109,108, 95,102,108, 97,103, 0,100,105,102,102, 95,115,104, 97,100,101,114, 0,115,112,101, 99, 95,115,104, 97,100,101, +114, 0,114,111,117,103,104,110,101,115,115, 0,114,101,102,114, 97, 99, 0,112, 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0, +100, 97,114,107,110,101,115,115, 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42,114, 97,109,112, 95,115,112,101, 99, 0,114, 97, +109,112,105,110, 95, 99,111,108, 0,114, 97,109,112,105,110, 95,115,112,101, 99, 0,114, 97,109,112, 98,108,101,110,100, 95, 99, +111,108, 0,114, 97,109,112, 98,108,101,110,100, 95,115,112,101, 99, 0,114, 97,109,112, 95,115,104,111,119, 0,112, 97,100, 51, + 0,114, 97,109,112,102, 97, 99, 95, 99,111,108, 0,114, 97,109,112,102, 97, 99, 95,115,112,101, 99, 0, 42,103,114,111,117,112, + 0,102,114,105, 99,116,105,111,110, 0,102,104, 0,114,101,102,108,101, 99,116, 0,102,104,100,105,115,116, 0,120,121,102,114, +105, 99,116, 0,100,121,110, 97,109,111,100,101, 0,115,115,115, 95,114, 97,100,105,117,115, 91, 51, 93, 0,115,115,115, 95, 99, +111,108, 91, 51, 93, 0,115,115,115, 95,101,114,114,111,114, 0,115,115,115, 95,115, 99, 97,108,101, 0,115,115,115, 95,105,111, +114, 0,115,115,115, 95, 99,111,108,102, 97, 99, 0,115,115,115, 95,116,101,120,102, 97, 99, 0,115,115,115, 95,102,114,111,110, +116, 0,115,115,115, 95, 98, 97, 99,107, 0,115,115,115, 95,102,108, 97,103, 0,115,115,115, 95,112,114,101,115,101,116, 0,109, + 97,112,116,111, 95,116,101,120,116,117,114,101,100, 0,112, 97,100, 52, 0,103,112,117,109, 97,116,101,114,105, 97,108, 0,110, + 97,109,101, 91, 50, 53, 54, 93, 0, 42, 98, 98, 0,105, 49, 0,106, 49, 0,107, 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115, +101,108, 99,111,108, 49, 0,115,101,108, 99,111,108, 50, 0,113,117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,101,120,112,121, + 0,101,120,112,122, 0,114, 97,100, 0,114, 97,100, 50, 0,115, 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,101,108,101,109, +115, 0,100,105,115,112, 0, 42,101,100,105,116,101,108,101,109,115, 0, 42, 42,109, 97,116, 0,102,108, 97,103, 50, 0,116,111, +116, 99,111,108, 0,119,105,114,101,115,105,122,101, 0,114,101,110,100,101,114,115,105,122,101, 0,116,104,114,101,115,104, 0, + 42,108, 97,115,116,101,108,101,109, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,104,116, 0, +104, 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104,105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110, +114, 0,112,110,116,115,117, 0,112,110,116,115,118, 0,114,101,115,111,108,117, 0,114,101,115,111,108,118, 0,111,114,100,101, +114,117, 0,111,114,100,101,114,118, 0,102,108, 97,103,117, 0,102,108, 97,103,118, 0, 42,107,110,111,116,115,117, 0, 42,107, +110,111,116,115,118, 0,116,105,108,116, 95,105,110,116,101,114,112, 0,114, 97,100,105,117,115, 95,105,110,116,101,114,112, 0, + 99,104, 97,114,105,100,120, 0,107,101,114,110, 0,104, 0,110,117,114, 98, 0, 42,101,100,105,116,110,117,114, 98, 0, 42, 98, +101,118,111, 98,106, 0, 42,116, 97,112,101,114,111, 98,106, 0, 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,112, 97, +116,104, 0, 42,107,101,121, 0, 98,101,118, 0,100,114, 97,119,102,108, 97,103, 0,116,119,105,115,116, 95,109,111,100,101, 0, +112, 97,100, 91, 50, 93, 0,116,119,105,115,116, 95,115,109,111,111,116,104, 0,115,109, 97,108,108, 99, 97,112,115, 95,115, 99, + 97,108,101, 0,112, 97,116,104,108,101,110, 0, 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0, +101,120,116, 50, 0,114,101,115,111,108,117, 95,114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117, + 0, 42,108, 97,115,116,115,101,108, 0,115,112, 97, 99,101,109,111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101, +100,105,115,116, 0,115,104,101, 97,114, 0,102,115,105,122,101, 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, + 0,117,108,104,101,105,103,104,116, 0,120,111,102, 0,121,111,102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, + 0, 42,115,101,108, 98,111,120,101,115, 0, 42,101,100,105,116,102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, + 42,118,102,111,110,116, 0, 42,118,102,111,110,116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0, +115,101,112, 99,104, 97,114, 0, 99,116,105,109,101, 0,116,111,116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0, +115,101,108,115,116, 97,114,116, 0,115,101,108,101,110,100, 0, 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, + 0,101,102,102,101, 99,116, 0, 42,109,102, 97, 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109, +118,101,114,116, 0, 42,109,101,100,103,101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107, +121, 0, 42,116,101,120, 99,111,109,101,115,104, 0, 42,109,115,101,108,101, 99,116, 0, 42,101,100,105,116, 95,109,101,115,104, + 0,118,100, 97,116, 97, 0,101,100, 97,116, 97, 0,102,100, 97,116, 97, 0,116,111,116,101,100,103,101, 0,116,111,116,102, 97, + 99,101, 0,116,111,116,115,101,108,101, 99,116, 0, 97, 99,116, 95,102, 97, 99,101, 0,101,100,105,116,102,108, 97,103, 0, 99, +117, 98,101,109, 97,112,115,105,122,101, 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98, +100,105,118,114, 0,115,117, 98,115,117,114,102,116,121,112,101, 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,103,101, 0, +117,118, 91, 52, 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, + 97,112, 0,118, 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,119,101, +105,103,104,116, 0,100,101,102, 95,110,114, 0, 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0, +110,111, 91, 51, 93, 0,117,118, 91, 50, 93, 0, 99,111, 91, 50, 93, 0,105,110,100,101,120, 0,102, 0,105, 0,115, 91, 50, 53, + 54, 93, 0,116,111,116,100,105,115,112, 0, 40, 42,100,105,115,112,115, 41, 40, 41, 0,118, 91, 52, 93, 0,109,105,100, 0,118, + 91, 50, 93, 0, 42,102, 97, 99,101,115, 0, 42, 99,111,108,102, 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,118,101,114, +116,115, 0,108,101,118,101,108,115, 0,108,101,118,101,108, 95, 99,111,117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101, +119,108,118,108, 0,101,100,103,101,108,118,108, 0,112,105,110,108,118,108, 0,114,101,110,100,101,114,108,118,108, 0,117,115, +101, 95, 99,111,108, 0, 42,101,100,103,101, 95,102,108, 97,103,115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, + 42,118,101,114,116, 95,109, 97,112, 0, 42,101,100,103,101, 95,109, 97,112, 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42, +111,108,100, 95,101,100,103,101,115, 0,115,116, 97, 99,107,105,110,100,101,120, 0, 42,101,114,114,111,114, 0,109,111,100,105, +102,105,101,114, 0,115,117, 98,100,105,118, 84,121,112,101, 0,114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, + 67, 97, 99,104,101, 0, 42,109, 67, 97, 99,104,101, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,101,110, +103,116,104, 0,114, 97,110,100,111,109,105,122,101, 0,115,101,101,100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116, 97,114, +116, 95, 99, 97,112, 0, 42,101,110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, + 95,111, 98, 0,111,102,102,115,101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115, +116, 0,102,105,116, 95,116,121,112,101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105, +115, 0,116,111,108,101,114, 97,110, 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103, +108,101, 0,118, 97,108,117,101, 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, + 0,101, 95,102,108, 97,103,115, 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, + 91, 51, 50, 93, 0, 42,100,111,109, 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,116,105,109,101, 0, 42,116, +101,120,116,117,114,101, 0,115,116,114,101,110,103,116,104, 0,100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118, +101,108, 0,116,101,120,109, 97,112,112,105,110,103, 0, 42,109, 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101, +114, 95,110, 97,109,101, 91, 51, 50, 93, 0,117,118,108, 97,121,101,114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,116,111, +114,115, 91, 49, 48, 93, 0, 42,105,109, 97,103,101, 0,110,117,109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112, +101, 99,116,120, 0, 97,115,112,101, 99,116,121, 0,115, 99, 97,108,101,120, 0,115, 99, 97,108,101,121, 0,112,101,114, 99,101, +110,116, 0,102, 97, 99,101, 67,111,117,110,116, 0,102, 97, 99, 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99, +101,110,116,101,114, 0,115,116, 97,114,116,120, 0,115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111, +119, 0,115,112,101,101,100, 0,100, 97,109,112, 0,102, 97,108,108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105, +102,101,116,105,109,101, 0,100,101,102,111,114,109,102,108, 97,103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, + 0,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112, 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99, +101,110,116, 91, 51, 93, 0, 42,105,110,100,101,120, 97,114, 0,116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, + 99,108,111,116,104, 79, 98,106,101, 99,116, 0, 42,115,105,109, 95,112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114, +109,115, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 0,112,116, 99, 97, 99,104,101,115, 0, 42,120, 0, 42,120,110,101, +119, 0, 42,120,111,108,100, 0, 42, 99,117,114,114,101,110,116, 95,120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, + 0, 42, 99,117,114,114,101,110,116, 95,118, 0, 42,109,102, 97, 99,101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109, +102, 97, 99,101,115, 0, 42, 98,118,104,116,114,101,101, 0, 42,118, 0, 42,100,109, 0, 99,102,114, 97, 0,111,112,101,114, 97, +116,105,111,110, 0,118,101,114,116,101,120, 0,116,111,116,105,110,102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,122, +101, 0, 42, 98,105,110,100,105,110,102,108,117,101,110, 99,101,115, 0, 42, 98,105,110,100,111,102,102,115,101,116,115, 0, 42, + 98,105,110,100, 99, 97,103,101, 99,111,115, 0,116,111,116, 99, 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,100, + 0, 42,100,121,110,105,110,102,108,117,101,110, 99,101,115, 0, 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0, +100,121,110,103,114,105,100,115,105,122,101, 0,100,121,110, 99,101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108, +108,119,105,100,116,104, 0, 98,105,110,100,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42, 98,105,110,100,119,101,105,103,104,116, +115, 0, 42, 98,105,110,100, 99,111,115, 0, 40, 42, 98,105,110,100,102,117,110, 99, 41, 40, 41, 0, 42,112,115,121,115, 0,116, +111,116,100,109,118,101,114,116, 0,116,111,116,100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,111,115, +105,116,105,111,110, 0,114, 97,110,100,111,109, 95,112,111,115,105,116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103, +114,111,117,112, 0,112,114,111,116,101, 99,116, 0,108,118,108, 0,115, 99,117,108,112,116,108,118,108, 0,116,111,116,108,118, +108, 0,115,105,109,112,108,101, 0, 42,102,115,115, 0, 42,116, 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, + 0,118,103,114,111,117,112, 95,110, 97,109,101, 91, 51, 50, 93, 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, + 84,121,112,101, 0,115,104,114,105,110,107, 79,112,116,115, 0,112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, + 76,101,118,101,108,115, 0, 42,111,114,105,103,105,110, 0,102, 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111, +114,105,103,105,110, 79,112,116,115, 0,111,102,102,115,101,116, 95,102, 97, 99, 0, 99,114,101, 97,115,101, 95,105,110,110,101, +114, 0, 99,114,101, 97,115,101, 95,111,117,116,101,114, 0, 99,114,101, 97,115,101, 95,114,105,109, 0, 42,111, 98, 95, 97,120, +105,115, 0,115,116,101,112,115, 0,114,101,110,100,101,114, 95,115,116,101,112,115, 0,105,116,101,114, 0,115, 99,114,101,119, + 95,111,102,115, 0, 97,110,103,108,101, 0,112,110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111, +112,110,116,115,119, 0,116,121,112,101,117, 0,116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, + 0,100,117, 0,100,118, 0,100,119, 0, 42,100,101,102, 0, 42,108, 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, + 97,116, 91, 52, 93, 91, 52, 93, 0, 42,101,100,105,116,108, 97,116,116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99, +117,108,112,116, 0,112, 97,114,116,121,112,101, 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115, +117, 98,115,116,114, 91, 51, 50, 93, 0, 42,116,114, 97, 99,107, 0, 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103, +114,111,117,112, 0, 42,112,114,111,120,121, 95,102,114,111,109, 0, 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, + 98, 0, 42,112,111,115,101, 0, 42,103,112,100, 0, 97,118,115, 0, 42,109,112, 97,116,104, 0, 99,111,110,115,116,114, 97,105, +110,116, 67,104, 97,110,110,101,108,115, 0,100,101,102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115, 0,114,101,115, +116,111,114,101, 95,109,111,100,101, 0, 42,109, 97,116, 98,105,116,115, 0, 97, 99,116, 99,111,108, 0,100,108,111, 99, 91, 51, + 93, 0,111,114,105,103, 91, 51, 93, 0,100,115,105,122,101, 91, 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116, + 91, 52, 93, 0,114,111,116, 65,120,105,115, 91, 51, 93, 0,100,114,111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110, +103,108,101, 0,100,114,111,116, 65,110,103,108,101, 0,111, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105, +110,118, 91, 52, 93, 91, 52, 93, 0,108, 97,121, 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,112, +114,111,116,101, 99,116,102,108, 97,103, 0,116,114, 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102, +108, 97,103, 0,105,112,111,102,108, 97,103, 0,105,112,111,119,105,110, 0,115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105, +115,102,108, 97,103, 0, 98,111,117,110,100,116,121,112,101, 0,100,117,112,111,110, 0,100,117,112,111,102,102, 0,100,117,112, +115,116, 97, 0,100,117,112,101,110,100, 0,115,102, 0,109, 97,115,115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116, +105, 97, 0,102,111,114,109,102, 97, 99,116,111,114, 0,114,100, 97,109,112,105,110,103, 0,109, 97,114,103,105,110, 0,109, 97, +120, 95,118,101,108, 0,109,105,110, 95,118,101,108, 0,109, 95, 99,111,110,116, 97, 99,116, 80,114,111, 99,101,115,115,105,110, +103, 84,104,114,101,115,104,111,108,100, 0,114,111,116,109,111,100,101, 0,100,116, 0,100,116,120, 0,101,109,112,116,121, 95, +100,114, 97,119,116,121,112,101, 0,112, 97,100, 49, 91, 51, 93, 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0, +100,117,112,102, 97, 99,101,115, 99, 97, 0,112,114,111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108, +101,114,115, 0, 97, 99,116,117, 97,116,111,114,115, 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, + 97,109,101,102,108, 97,103, 0,103, 97,109,101,102,108, 97,103, 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97, +103, 0, 97,110,105,115,111,116,114,111,112,105, 99, 70,114,105, 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97, +105,110,116,115, 0,110,108, 97,115,116,114,105,112,115, 0,104,111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115, +116,101,109, 0, 42,115,111,102,116, 0, 42,100,117,112, 95,103,114,111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97, +103, 0,114,101,115,116,114,105, 99,116,102,108, 97,103, 0,115,104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, + 0,114,101, 99, 97,108, 99,111, 0, 98,111,100,121, 95,116,121,112,101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116, +105,110,103,115, 0, 42,100,101,114,105,118,101,100, 68,101,102,111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97, +108, 0,108, 97,115,116, 68, 97,116, 97, 77, 97,115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0, +103,112,117,108, 97,109,112, 0,112, 99, 95,105,100,115, 0, 42,100,117,112,108,105,108,105,115,116, 0, 99,117,114,105,110,100, +101,120, 0, 97, 99,116,105,118,101, 0,111,114,105,103,108, 97,121, 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116, +101,100, 0,111,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111,114, 99,111, 91, 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111, +114, 99,101,102,105,101,108,100, 0,115,104, 97,112,101, 0,116,101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110, +107, 95, 97,120,105,115, 0,122,100,105,114, 0,102, 95,115,116,114,101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95, +102,108,111,119, 0,102, 95,115,105,122,101, 0,102, 95,112,111,119,101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100, +105,115,116, 0,102, 95,112,111,119,101,114, 95,114, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,100, 0,112,100,101,102, + 95,100, 97,109,112, 0,112,100,101,102, 95,114,100, 97,109,112, 0,112,100,101,102, 95,112,101,114,109, 0,112,100,101,102, 95, +102,114,105, 99,116, 0,112,100,101,102, 95,114,102,114,105, 99,116, 0,112,100,101,102, 95,115,116,105, 99,107,110,101,115,115, + 0, 97, 98,115,111,114,112,116,105,111,110, 0,112,100,101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105, +102,116, 0,112,100,101,102, 95,115, 98,111,102,116, 0, 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111, +119, 0,107,105,110,107, 95,102,114,101,113, 0,107,105,110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0, +102,114,101,101, 95,101,110,100, 0,116,101,120, 95,110, 97, 98,108, 97, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0, +119,101,105,103,104,116, 91, 49, 51, 93, 0,103,108,111, 98, 97,108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93, 0, +102,114, 97,109,101, 0,116,111,116,112,111,105,110,116, 0,100, 97,116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,120, + 95, 97,114,114, 97,121, 0, 42,100, 97,116, 97, 91, 56, 93, 0, 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, 0,115,105,109, +102,114, 97,109,101, 0,115,116, 97,114,116,102,114, 97,109,101, 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, + 97,109,101, 0,108, 97,115,116, 95,101,120, 97, 99,116, 0,110, 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,109, +101, 91, 54, 52, 93, 0,105,110,102,111, 91, 54, 52, 93, 0,112, 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97, 99, +104,101, 0, 42,101,100,105,116, 0, 40, 42,102,114,101,101, 95,101,100,105,116, 41, 40, 41, 0,108,105,110, 83,116,105,102,102, + 0, 97,110,103, 83,116,105,102,102, 0,118,111,108,117,109,101, 0,118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,116, +101,114, 97,116,105,111,110,115, 0,100,105,116,101,114, 97,116,105,111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,115, + 0,107, 83, 82, 72, 82, 95, 67, 76, 0,107, 83, 75, 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82, 95, + 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 75, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76, 0, +107, 86, 67, 70, 0,107, 68, 80, 0,107, 68, 71, 0,107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77, 84, + 0,107, 67, 72, 82, 0,107, 75, 72, 82, 0,107, 83, 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,108, + 97,103,115, 0,110,117,109, 99,108,117,115,116,101,114,105,116,101,114, 97,116,105,111,110,115, 0,119,101,108,100,105,110,103, + 0,116,111,116,115,112,114,105,110,103, 0, 42, 98,112,111,105,110,116, 0, 42, 98,115,112,114,105,110,103, 0,109,115,103, 95, +108,111, 99,107, 0,109,115,103, 95,118, 97,108,117,101, 0,110,111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71, 95, + 77, 97,115,115, 91, 51, 50, 93, 0,103,114, 97,118, 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, + 0,112,104,121,115,105, 99,115, 95,115,112,101,101,100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114, +105, 99,116, 0,109,105,110,103,111, 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116, +103,114,111,117,112, 0,110, 97,109,101,100, 86, 71, 95, 83,111,102,116,103,111, 97,108, 91, 51, 50, 93, 0,102,117,122,122,121, +110,101,115,115, 0,105,110,115,112,114,105,110,103, 0,105,110,102,114,105, 99,116, 0,110, 97,109,101,100, 86, 71, 95, 83,112, +114,105,110,103, 95, 75, 91, 51, 50, 93, 0,101,102,114, 97, 0,105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115, +111,108,118,101,114,102,108, 97,103,115, 0, 42, 42,107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, + 99,111,110,100,115,112,114,105,110,103, 0, 99,111,108, 98, 97,108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108, +115,116,105,102,102, 0,115, 98, 99, 95,109,111,100,101, 0, 97,101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, + 0,109, 97,120,108,111,111,112,115, 0, 99,104,111,107,101, 0,115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, + 99, 0,115,112,114,105,110,103,112,114,101,108,111, 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116, +105,102,102, 0,105,110,112,117,115,104, 0, 42,112,111,105,110,116, 99, 97, 99,104,101, 0, 42,101,102,102,101, 99,116,111,114, + 95,119,101,105,103,104,116,115, 0,108, 99,111,109, 91, 51, 93, 0,108,114,111,116, 91, 51, 93, 91, 51, 93, 0,108,115, 99, 97, +108,101, 91, 51, 93, 91, 51, 93, 0,112, 97,100, 52, 91, 52, 93, 0, 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, + 99,101,100,111,112,116,105,111,110,115, 0,114,101,115,111,108,117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119, +114,101,115,120,121,122, 0,114,101, 97,108,115,105,122,101, 0,103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114, +101,110,100,101,114, 68,105,115,112,108, 97,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0, +118,105,115, 99,111,115,105,116,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0, +103,114, 97,118,120, 0,103,114, 97,118,121, 0,103,114, 97,118,122, 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, + 69,110,100, 0, 98, 97,107,101, 83,116, 97,114,116, 0, 98, 97,107,101, 69,110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82, +101,102,105,110,101, 0,105,110,105, 86,101,108,120, 0,105,110,105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111, +114,103, 77,101,115,104, 0, 42,109,101,115,104, 83,117,114,102, 97, 99,101, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102, +100, 97,116, 97, 80, 97,116,104, 91, 50, 52, 48, 93, 0, 98, 98, 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, + 51, 93, 0,116,121,112,101, 70,108, 97,103,115, 0,100,111,109, 97,105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117, +109,101, 73,110,105,116, 84,121,112,101, 0,112, 97,114,116, 83,108,105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116, +101, 84,114, 97, 99,101,114,115, 0,103,101,110,101,114, 97,116,101, 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, + 99,101, 83,109,111,111,116,104,105,110,103, 0,115,117,114,102, 97, 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, + 99,108,101, 73,110,102, 83,105,122,101, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70, +105,101,108,100, 83,105,122,101, 0, 42,109,101,115,104, 83,117,114,102, 78,111,114,109, 97,108,115, 0, 99,112,115, 84,105,109, +101, 83,116, 97,114,116, 0, 99,112,115, 84,105,109,101, 69,110,100, 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116, +114, 97, 99,116,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97, +100,105,117,115, 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99, +105,116,121,102,111,114, 99,101, 82, 97,100,105,117,115, 0,108, 97,115,116,103,111,111,100,102,114, 97,109,101, 0,109,105,115, +116,121,112,101, 0,104,111,114,114, 0,104,111,114,103, 0,104,111,114, 98, 0,122,101,110,114, 0,122,101,110,103, 0,122,101, +110, 98, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101,120,112, 0,114, 97,110,103,101, 0,108,105, +110,102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97, 99,116,105,118,105,116,121, 66,111,120, 82, + 97,100,105,117,115, 0,115,107,121,116,121,112,101, 0,111, 99, 99,108,117,115,105,111,110, 82,101,115, 0,112,104,121,115,105, + 99,115, 69,110,103,105,110,101, 0,116,105, 99,114, 97,116,101, 0,109, 97,120,108,111,103,105, 99,115,116,101,112, 0,112,104, +121,115,117, 98,115,116,101,112, 0,109, 97,120,112,104,121,115,116,101,112, 0,109,105,115,105, 0,109,105,115,116,115,116, 97, + 0,109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0,115,116, 97,114,114, 0,115,116, 97,114,103, 0,115,116, 97, +114, 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, 0,115,116, 97,114,109,105,110,100,105,115,116, 0,115,116, + 97,114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105,115,101, 0,100,111,102,115,116, 97, 0,100,111,102,101,110, +100, 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97,111,100,105,115,116, 0, 97,111,100,105,115,116,102, 97, 99, + 0, 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, 97,111,109,111,100,101, 0, 97,111,115, 97,109,112, 0, 97, +111,109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0, 97,111, 95, + 97,100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97,111, 95, 97,112,112,114,111,120, 95,101,114,114,111,114, 0, + 97,111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116,105,111,110, 0, 97,111, 95,105,110,100,105,114,101, 99,116, + 95,101,110,101,114,103,121, 0, 97,111, 95,101,110,118, 95,101,110,101,114,103,121, 0, 97,111, 95,112, 97,100, 50, 0, 97,111, + 95,105,110,100,105,114,101, 99,116, 95, 98,111,117,110, 99,101,115, 0, 97,111, 95,112, 97,100, 0, 97,111, 95,115, 97,109,112, + 95,109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, 95,109,101,116,104,111,100, 0, 97,111, 95, 97,112,112,114, +111,120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101,114,101, 0, 42, 97,111,116, 97, 98,108,101,115, 0,112, 97, +100, 91, 51, 93, 0,115,101,108, 99,111,108, 0,115,120, 0,115,121, 0, 42,108,112, 70,111,114,109, 97,116, 0, 42,108,112, 80, + 97,114,109,115, 0, 99, 98, 70,111,114,109, 97,116, 0, 99, 98, 80, 97,114,109,115, 0,102, 99, 99, 84,121,112,101, 0,102, 99, + 99, 72, 97,110,100,108,101,114, 0,100,119, 75,101,121, 70,114, 97,109,101, 69,118,101,114,121, 0,100,119, 81,117, 97,108,105, +116,121, 0,100,119, 66,121,116,101,115, 80,101,114, 83,101, 99,111,110,100, 0,100,119, 70,108, 97,103,115, 0,100,119, 73,110, +116,101,114,108,101, 97,118,101, 69,118,101,114,121, 0, 97,118,105, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, + 42, 99,100, 80, 97,114,109,115, 0, 42,112, 97,100, 0, 99,100, 83,105,122,101, 0,113,116, 99,111,100,101, 99,110, 97,109,101, + 91, 49, 50, 56, 93, 0, 99,111,100,101, 99, 84,121,112,101, 0, 99,111,100,101, 99, 83,112, 97,116,105, 97,108, 81,117, 97,108, +105,116,121, 0, 99,111,100,101, 99, 0, 99,111,100,101, 99, 70,108, 97,103,115, 0, 99,111,108,111,114, 68,101,112,116,104, 0, + 99,111,100,101, 99, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 83,112, 97,116,105, 97,108, 81, +117, 97,108,105,116,121, 0,109,105,110, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0,107,101,121, 70,114, 97, +109,101, 82, 97,116,101, 0, 98,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 99,111,100,101, 99, 84,121,112,101, 0, 97,117, +100,105,111, 83, 97,109,112,108,101, 82, 97,116,101, 0, 97,117,100,105,111, 66,105,116, 68,101,112,116,104, 0, 97,117,100,105, +111, 67,104, 97,110,110,101,108,115, 0, 97,117,100,105,111, 67,111,100,101, 99, 70,108, 97,103,115, 0, 97,117,100,105,111, 66, +105,116, 82, 97,116,101, 0, 97,117,100,105,111, 95, 99,111,100,101, 99, 0,118,105,100,101,111, 95, 98,105,116,114, 97,116,101, + 0, 97,117,100,105,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95,109,105,120,114, 97,116,101, 0, 97,117,100, +105,111, 95,118,111,108,117,109,101, 0,103,111,112, 95,115,105,122,101, 0,114, 99, 95,109,105,110, 95,114, 97,116,101, 0,114, + 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102,102,101,114, 95,115,105,122,101, 0,109,117,120, 95,112, 97, + 99,107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116,101, 0,109,105,120,114, 97,116,101, 0,109, 97,105,110, 0, +115,112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,111,112,112,108,101,114, 95,102, 97, 99,116,111,114, 0,100,105, +115,116, 97,110, 99,101, 95,109,111,100,101,108, 0, 42,109, 97,116, 95,111,118,101,114,114,105,100,101, 0, 42,108,105,103,104, +116, 95,111,118,101,114,114,105,100,101, 0,108, 97,121, 95,122,109, 97,115,107, 0,108, 97,121,102,108, 97,103, 0,112, 97,115, +115,102,108, 97,103, 0,112, 97,115,115, 95,120,111,114, 0, 42, 97,118,105, 99,111,100,101, 99,100, 97,116, 97, 0, 42,113,116, + 99,111,100,101, 99,100, 97,116, 97, 0,113,116, 99,111,100,101, 99,115,101,116,116,105,110,103,115, 0,102,102, 99,111,100,101, + 99,100, 97,116, 97, 0,115,117, 98,102,114, 97,109,101, 0,112,115,102,114, 97, 0,112,101,102,114, 97, 0,105,109, 97,103,101, +115, 0,102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97,100,115, 0,102,114, 97,109,101,108,101,110, 0, 98,108,117,114, +102, 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101,100,103,101, 66, 0,102,117,108,108,115, 99,114,101,101,110, + 0,120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113,112,108, 97,121, 0, 97,116,116,114,105, 98, 0,114,116, 50, + 0,102,114, 97,109,101, 95,115,116,101,112, 0,115,116,101,114,101,111,109,111,100,101, 0,100,105,109,101,110,115,105,111,110, +115,112,114,101,115,101,116, 0,109, 97,120,105,109,115,105,122,101, 0,120,115, 99,104, 0,121,115, 99,104, 0,120,112, 97,114, +116,115, 0,121,112, 97,114,116,115, 0,119,105,110,112,111,115, 0,112,108, 97,110,101,115, 0,105,109,116,121,112,101, 0,115, +117, 98,105,109,116,121,112,101, 0,113,117, 97,108,105,116,121, 0,100,105,115,112,108, 97,121,109,111,100,101, 0,114,112, 97, +100, 49, 0,114,112, 97,100, 50, 0,115, 99,101,109,111,100,101, 0,114, 97,121,116,114, 97, 99,101, 95,111,112,116,105,111,110, +115, 0,114, 97,121,116,114, 97, 99,101, 95,115,116,114,117, 99,116,117,114,101, 0,114,101,110,100,101,114,101,114, 0,111, 99, +114,101,115, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, 0,102,114,115, 95,115,101, 99, 0,101,100,103,101,105,110, +116, 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100,105,115,112,114,101, 99,116, 0,108, 97,121,101,114,115, 0, + 97, 99,116,108, 97,121, 0,109, 98,108,117,114, 95,115, 97,109,112,108,101,115, 0,120, 97,115,112, 0,121, 97,115,112, 0,102, +114,115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, 0, 99,111,108,111,114, 95,109,103,116, 95,102,108, 97,103, + 0,112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117,101, 0,112,111,115,116,115, 97,116, 0,100,105,116,104,101, +114, 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95,111,115, 97, 0, 98, 97,107,101, 95,102,105,108,116,101,114, + 0, 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102,108, 97,103, 0, 98, 97,107,101, 95,110,111,114,109, 97,108, + 95,115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95,115,112,108,105,116, 0, 98, 97,107,101, 95,109, 97,120,100, +105,115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, 0, 98, 97,107,101, 95,112, 97,100, 0, 98, 97, 99,107, 98, +117,102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0,115,116, 97,109,112, 0,115,116, 97,109,112, 95,102,111,110, +116, 95,105,100, 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, 49, 54, 48, 93, 0,102,103, 95,115,116, 97,109,112, 91, 52, + 93, 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, 0,115,101,113, 95,112,114,101,118, 95,116,121,112,101, 0,115,101,113, 95, +114,101,110,100, 95,116,121,112,101, 0,115,101,113, 95,102,108, 97,103, 0,112, 97,100, 53, 91, 53, 93, 0,115,105,109,112,108, +105,102,121, 95,102,108, 97,103, 0,115,105,109,112,108,105,102,121, 95,115,117, 98,115,117,114,102, 0,115,105,109,112,108,105, +102,121, 95,115,104, 97,100,111,119,115, 97,109,112,108,101,115, 0,115,105,109,112,108,105,102,121, 95,112, 97,114,116,105, 99, +108,101,115, 0,115,105,109,112,108,105,102,121, 95, 97,111,115,115,115, 0, 99,105,110,101,111,110,119,104,105,116,101, 0, 99, +105,110,101,111,110, 98,108, 97, 99,107, 0, 99,105,110,101,111,110,103, 97,109,109, 97, 0,106,112, 50, 95,112,114,101,115,101, +116, 0,106,112, 50, 95,100,101,112,116,104, 0,114,112, 97,100, 51, 0,100,111,109,101,114,101,115, 0,100,111,109,101,109,111, +100,101, 0,100,111,109,101, 97,110,103,108,101, 0,100,111,109,101,116,105,108,116, 0,100,111,109,101,114,101,115, 98,117,102, + 0, 42,100,111,109,101,116,101,120,116, 0,101,110,103,105,110,101, 91, 51, 50, 93, 0,112, 97,114,116,105, 99,108,101, 95,112, +101,114, 99, 0,115,117, 98,115,117,114,102, 95,109, 97,120, 0,115,104, 97,100, 98,117,102,115, 97,109,112,108,101, 95,109, 97, +120, 0, 97,111, 95,101,114,114,111,114, 0,116,105,108,116, 0,114,101,115, 98,117,102, 0, 42,119, 97,114,112,116,101,120,116, + 0, 99,111,108, 91, 51, 93, 0,109, 97,116,109,111,100,101, 0,102,114, 97,109,105,110,103, 0,114,116, 49, 0,100,111,109,101, + 0,115,116,101,114,101,111,102,108, 97,103, 0,101,121,101,115,101,112, 97,114, 97,116,105,111,110, 0, 42, 99, 97,109,101,114, + 97, 0, 42, 42, 98,114,117,115,104,101,115, 0, 97, 99,116,105,118,101, 95, 98,114,117,115,104, 95,105,110,100,101,120, 0, 98, +114,117,115,104, 95, 99,111,117,110,116, 0, 42,112, 97,105,110,116, 95, 99,117,114,115,111,114, 0,112, 97,105,110,116, 95, 99, +117,114,115,111,114, 95, 99,111,108, 91, 52, 93, 0,112, 97,105,110,116, 0,115,101, 97,109, 95, 98,108,101,101,100, 0,110,111, +114,109, 97,108, 95, 97,110,103,108,101, 0,115, 99,114,101,101,110, 95,103,114, 97, 98, 95,115,105,122,101, 91, 50, 93, 0, 42, +112, 97,105,110,116, 99,117,114,115,111,114, 0,105,110,118,101,114,116, 0,116,111,116,114,101,107,101,121, 0,116,111,116, 97, +100,100,107,101,121, 0, 98,114,117,115,104,116,121,112,101, 0, 98,114,117,115,104, 91, 55, 93, 0,101,109,105,116,116,101,114, +100,105,115,116, 0,115,101,108,101, 99,116,109,111,100,101, 0,101,100,105,116,116,121,112,101, 0,100,114, 97,119, 95,115,116, +101,112, 0,102, 97,100,101, 95,102,114, 97,109,101,115, 0,110, 97,109,101, 91, 51, 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, + 93, 0,114, 97,100,105, 97,108, 95,115,121,109,109, 91, 51, 93, 0,108, 97,115,116, 95,120, 0,108, 97,115,116, 95,121, 0,108, + 97,115,116, 95, 97,110,103,108,101, 0,100,114, 97,119, 95, 97,110, 99,104,111,114,101,100, 0, 97,110, 99,104,111,114,101,100, + 95,115,105,122,101, 0, 97,110, 99,104,111,114,101,100, 95,108,111, 99, 97,116,105,111,110, 91, 51, 93, 0, 97,110, 99,104,111, +114,101,100, 95,105,110,105,116,105, 97,108, 95,109,111,117,115,101, 91, 50, 93, 0,100,114, 97,119, 95,112,114,101,115,115,117, +114,101, 0,112,114,101,115,115,117,114,101, 95,118, 97,108,117,101, 0,115,112,101, 99,105, 97,108, 95,114,111,116, 97,116,105, +111,110, 0, 42,118,112, 97,105,110,116, 95,112,114,101,118, 0, 42,119,112, 97,105,110,116, 95,112,114,101,118, 0, 42,118,112, + 97,105,110,116, 0, 42,119,112, 97,105,110,116, 0,118,103,114,111,117,112, 95,119,101,105,103,104,116, 0, 99,111,114,110,101, +114,116,121,112,101, 0,101,100,105,116, 98,117,116,102,108, 97,103, 0,106,111,105,110,116,114,105,108,105,109,105,116, 0,100, +101,103,114, 0,116,117,114,110, 0,101,120,116,114, 95,111,102,102,115, 0,100,111,117, 98,108,105,109,105,116, 0,110,111,114, +109, 97,108,115,105,122,101, 0, 97,117,116,111,109,101,114,103,101, 0,115,101,103,109,101,110,116,115, 0,114,105,110,103,115, + 0,118,101,114,116,105, 99,101,115, 0,117,110,119,114, 97,112,112,101,114, 0,117,118, 99, 97,108, 99, 95,114, 97,100,105,117, +115, 0,117,118, 99, 97,108, 99, 95, 99,117, 98,101,115,105,122,101, 0,117,118, 99, 97,108, 99, 95,109, 97,114,103,105,110, 0, +117,118, 99, 97,108, 99, 95,109, 97,112,100,105,114, 0,117,118, 99, 97,108, 99, 95,109, 97,112, 97,108,105,103,110, 0,117,118, + 99, 97,108, 99, 95,102,108, 97,103, 0,117,118, 95,102,108, 97,103, 0,117,118, 95,115,101,108,101, 99,116,109,111,100,101, 0, +117,118, 95,112, 97,100, 91, 50, 93, 0, 97,117,116,111,105,107, 95, 99,104, 97,105,110,108,101,110, 0,105,109, 97,112, 97,105, +110,116, 0,112, 97,114,116,105, 99,108,101, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 95,115,105,122,101, 0,115,101, +108,101, 99,116, 95,116,104,114,101,115,104, 0, 99,108,101, 97,110, 95,116,104,114,101,115,104, 0, 97,117,116,111,107,101,121, + 95,109,111,100,101, 0, 97,117,116,111,107,101,121, 95,102,108, 97,103, 0,114,101,116,111,112,111, 95,109,111,100,101, 0,114, +101,116,111,112,111, 95,112, 97,105,110,116, 95,116,111,111,108, 0,108,105,110,101, 95,100,105,118, 0,101,108,108,105,112,115, +101, 95,100,105,118, 0,114,101,116,111,112,111, 95,104,111,116,115,112,111,116, 0,109,117,108,116,105,114,101,115, 95,115,117, + 98,100,105,118, 95,116,121,112,101, 0,115,107,103,101,110, 95,114,101,115,111,108,117,116,105,111,110, 0,115,107,103,101,110, + 95,116,104,114,101,115,104,111,108,100, 95,105,110,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,116,104,114,101,115,104, +111,108,100, 95,101,120,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,114, 97,116,105,111, 0, +115,107,103,101,110, 95,108,101,110,103,116,104, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 97,110,103,108,101, 95,108, +105,109,105,116, 0,115,107,103,101,110, 95, 99,111,114,114,101,108, 97,116,105,111,110, 95,108,105,109,105,116, 0,115,107,103, +101,110, 95,115,121,109,109,101,116,114,121, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, + 95, 97,110,103,108,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,108,101,110, +103,116,104, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,100,105,115,116, 97,110, + 99,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,112,111, +115,116,112,114,111, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 95,112, 97,115,115,101,115, 0,115,107,103,101,110, + 95,115,117, 98,100,105,118,105,115,105,111,110,115, 91, 51, 93, 0,115,107,103,101,110, 95,109,117,108,116,105, 95,108,101,118, +101,108, 0, 42,115,107,103,101,110, 95,116,101,109,112,108, 97,116,101, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110, +103, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 95, 99,111,110,118,101,114,116, 0,115,107,103,101,110, 95,115, +117, 98,100,105,118,105,115,105,111,110, 95,110,117,109, 98,101,114, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, + 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,114,111,108,108, 0,115,107,103, +101,110, 95,115,105,100,101, 95,115,116,114,105,110,103, 91, 56, 93, 0,115,107,103,101,110, 95,110,117,109, 95,115,116,114,105, +110,103, 91, 56, 93, 0,101,100,103,101, 95,109,111,100,101, 0,115,110, 97,112, 95,109,111,100,101, 0,115,110, 97,112, 95,102, +108, 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 0,112,114,111, +112, 95,109,111,100,101, 0, 97,117,116,111, 95,110,111,114,109, 97,108,105,122,101, 0,105,110,116,112, 97,100, 0,116,111,116, +111, 98,106, 0,116,111,116,108, 97,109,112, 0,116,111,116,111, 98,106,115,101,108, 0,116,111,116, 99,117,114,118,101, 0,116, +111,116,109,101,115,104, 0,116,111,116, 97,114,109, 97,116,117,114,101, 0,115, 99, 97,108,101, 95,108,101,110,103,116,104, 0, +115,121,115,116,101,109, 0,103,114, 97,118,105,116,121, 91, 51, 93, 0,113,117,105, 99,107, 95, 99, 97, 99,104,101, 95,115,116, +101,112, 0, 42,119,111,114,108,100, 0, 42,115,101,116, 0, 98, 97,115,101, 0, 42, 98, 97,115, 97, 99,116, 0, 42,111, 98,101, +100,105,116, 0, 99,117,114,115,111,114, 91, 51, 93, 0,116,119, 99,101,110,116, 91, 51, 93, 0,116,119,109,105,110, 91, 51, 93, + 0,116,119,109, 97,120, 91, 51, 93, 0,108, 97,121, 97, 99,116, 0, 42,101,100, 0, 42,116,111,111,108,115,101,116,116,105,110, +103,115, 0, 42,115,116, 97,116,115, 0, 97,117,100,105,111, 0,116,114, 97,110,115,102,111,114,109, 95,115,112, 97, 99,101,115, + 0, 42,115,111,117,110,100, 95,115, 99,101,110,101, 0, 42,115,111,117,110,100, 95,115, 99,101,110,101, 95,104, 97,110,100,108, +101, 0, 42,102,112,115, 95,105,110,102,111, 0, 42,116,104,101, 68, 97,103, 0,100, 97,103,105,115,118, 97,108,105,100, 0,100, + 97,103,102,108, 97,103,115, 0,106,117,109,112,102,114, 97,109,101, 0,112, 97,100, 53, 0, 97, 99,116,105,118,101, 95,107,101, +121,105,110,103,115,101,116, 0,107,101,121,105,110,103,115,101,116,115, 0,103,109, 0,117,110,105,116, 0,112,104,121,115,105, + 99,115, 95,115,101,116,116,105,110,103,115, 0, 98,108,101,110,100, 0,118,105,101,119, 0,119,105,110,109, 97,116, 91, 52, 93, + 91, 52, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,105,110,118, 91, 52, 93, 91, 52, 93, 0, +112,101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,105,110,118, 91, 52, 93, 91, 52, 93, 0,118,105,101,119, +109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,116,119,109, 97, +116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,122,102, 97, 99, 0, 99, 97,109,100,120, 0, 99, + 97,109,100,121, 0,112,105,120,115,105,122,101, 0, 99, 97,109,122,111,111,109, 0,118,105,101,119, 98,117,116, 0,116,119,100, +114, 97,119,102,108, 97,103, 0,114,102,108, 97,103, 0,118,105,101,119,108,111, 99,107, 0,112,101,114,115,112, 0, 99,108,105, +112, 91, 54, 93, 91, 52, 93, 0, 99,108,105,112, 95,108,111, 99, 97,108, 91, 54, 93, 91, 52, 93, 0, 42, 99,108,105,112, 98, 98, + 0, 42,108,111, 99, 97,108,118,100, 0, 42,114,105, 0, 42,114,101,116,111,112,111, 95,118,105,101,119, 95,100, 97,116, 97, 0, + 42,100,101,112,116,104,115, 0, 42,115,109,115, 0, 42,115,109,111,111,116,104, 95,116,105,109,101,114, 0,108,118,105,101,119, +113,117, 97,116, 91, 52, 93, 0,108,112,101,114,115,112, 0,108,118,105,101,119, 0,103,114,105,100,118,105,101,119, 0,116,119, + 97,110,103,108,101, 91, 51, 93, 0,112, 97,100,102, 0,114,101,103,105,111,110, 98, 97,115,101, 0,115,112, 97, 99,101,116,121, +112,101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, 99,107,104, 97,110,100,108,101,114, 91, 56, 93, 0,108, 97, +121, 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0, 98,103,112,105, 99, 98, 97,115,101, 0, 42, 98,103,112, +105, 99, 0,111, 98, 95, 99,101,110,116,114,101, 95, 98,111,110,101, 91, 51, 50, 93, 0,100,114, 97,119,116,121,112,101, 0,115, + 99,101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0,112,105,118,111,116, 95,108, 97,115,116, 0,103,114,105,100, 0, +110,101, 97,114, 0,102, 97,114, 0,103,114,105,100,108,105,110,101,115, 0,103,114,105,100,102,108, 97,103, 0,103,114,105,100, +115,117, 98,100,105,118, 0,109,111,100,101,115,101,108,101, 99,116, 0,107,101,121,102,108, 97,103,115, 0,116,119,116,121,112, +101, 0,116,119,109,111,100,101, 0,116,119,102,108, 97,103, 0, 99,117,115,116,111,109,100, 97,116, 97, 95,109, 97,115,107, 0, + 97,102,116,101,114,100,114, 97,119, 0,122, 98,117,102, 0,120,114, 97,121, 0,110,100,111,102,109,111,100,101, 0,110,100,111, +102,102,105,108,116,101,114, 0, 42,112,114,111,112,101,114,116,105,101,115, 95,115,116,111,114, 97,103,101, 0,118,101,114,116, + 0,104,111,114, 0,109, 97,115,107, 0,109,105,110, 91, 50, 93, 0,109, 97,120, 91, 50, 93, 0,109,105,110,122,111,111,109, 0, +109, 97,120,122,111,111,109, 0,115, 99,114,111,108,108, 0,115, 99,114,111,108,108, 95,117,105, 0,107,101,101,112,116,111,116, + 0,107,101,101,112,122,111,111,109, 0,107,101,101,112,111,102,115, 0, 97,108,105,103,110, 0,119,105,110,120, 0,119,105,110, +121, 0,111,108,100,119,105,110,120, 0,111,108,100,119,105,110,121, 0, 42,116, 97, 98, 95,111,102,102,115,101,116, 0,116, 97, + 98, 95,110,117,109, 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99,114,101,101,110, 0,118, 50,100, 0, 42, 97,100,115, 0,103, +104,111,115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, 97,112, 0, 99,117,114,115,111,114, 86, 97,108, 0,109, 97, +105,110, 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117,115,101,114, 0,114,101, 95, 97,108,105,103,110, 0,112,114, +101,118,105,101,119, 0,112, 97,116,104,102,108, 97,103, 0,100, 97,116, 97,105, 99,111,110, 0, 42,112,105,110,105,100, 0,114, +101,110,100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104,111,119,110, 0,122,101, 98,114, 97, 0,122,111,111,109, 0, +116,105,116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,102,105,108,101, 91, 56, 48, 93, 0,114,101,110, 97, +109,101,102,105,108,101, 91, 56, 48, 93, 0,115,111,114,116, 0,100,105,115,112,108, 97,121, 0, 97, 99,116,105,118,101, 95, 98, +111,111,107,109, 97,114,107, 0, 97, 99,116,105,118,101, 95,102,105,108,101, 0,115,101,108,115,116, 97,116,101, 0,102, 95,102, +112, 0,102,112, 95,115,116,114, 91, 56, 93, 0,115, 99,114,111,108,108, 95,111,102,102,115,101,116, 0, 42,112, 97,114, 97,109, +115, 0, 42,102,105,108,101,115, 0, 42,102,111,108,100,101,114,115, 95,112,114,101,118, 0, 42,102,111,108,100,101,114,115, 95, +110,101,120,116, 0, 42,111,112, 0, 42,115,109,111,111,116,104,115, 99,114,111,108,108, 95,116,105,109,101,114, 0, 42,108, 97, +121,111,117,116, 0,114,101, 99,101,110,116,110,114, 0, 98,111,111,107,109, 97,114,107,110,114, 0,115,121,115,116,101,109,110, +114, 0,116,114,101,101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97,114, 99,104, 95,115,116,114,105,110,103, 91, + 51, 50, 93, 0,115,101, 97,114, 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, 95,102,108, 97,103,115, 0,100,111, 95, 0, +111,117,116,108,105,110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0, 42, 99,117,109, 97,112, 0,105,109, 97,110, +114, 0, 99,117,114,116,105,108,101, 0,105,109,116,121,112,101,110,114, 0,108,111, 99,107, 0,112,105,110, 0,100,116, 95,117, +118, 0,115,116,105, 99,107,121, 0,100,116, 95,117,118,115,116,114,101,116, 99,104, 0, 99,117,114,115,111,114, 91, 50, 93, 0, + 99,101,110,116,120, 0, 99,101,110,116,121, 0,115, 99,111,112,101,115, 0,115, 97,109,112,108,101, 95,108,105,110,101, 95,104, +105,115,116, 0, 42,116,101,120,116, 0,116,111,112, 0,118,105,101,119,108,105,110,101,115, 0,108,104,101,105,103,104,116, 0, + 99,119,105,100,116,104, 0,108,105,110,101,110,114,115, 95,116,111,116, 0,108,101,102,116, 0,115,104,111,119,108,105,110,101, +110,114,115, 0,116, 97, 98,110,117,109, 98,101,114, 0,115,104,111,119,115,121,110,116, 97,120, 0,111,118,101,114,119,114,105, +116,101, 0,108,105,118,101, 95,101,100,105,116, 0,112,105,120, 95,112,101,114, 95,108,105,110,101, 0,116,120,116,115, 99,114, +111,108,108, 0,116,120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100,111,112,108,117,103,105,110,115, 0,102,105, +110,100,115,116,114, 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99,101,115,116,114, 91, 50, 53, 54, 93, 0, 42,112,121, 95,100, +114, 97,119, 0, 42,112,121, 95,101,118,101,110,116, 0, 42,112,121, 95, 98,117,116,116,111,110, 0, 42,112,121, 95, 98,114,111, +119,115,101,114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,111, 98, 97,108,100,105, 99,116, 0,108, 97,115,116, +115,112, 97, 99,101, 0,115, 99,114,105,112,116,110, 97,109,101, 91, 50, 53, 54, 93, 0,115, 99,114,105,112,116, 97,114,103, 91, + 50, 53, 54, 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,117,116, 95,114,101,102,115, 0, 42, 97,114,114, 97,121, 0, 99, 97, + 99,104,101,115, 0, 99, 97, 99,104,101, 95,100,105,115,112,108, 97,121, 0,114,101,100,114, 97,119,115, 0, 42,105,100, 0, 97, +115,112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, 0,109,121, 0, 42,101,100,105,116,116,114,101,101, 0,116, +114,101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,109,101,110,117, 0,110,117,109,116,105,108,101,115,120, 0,110, +117,109,116,105,108,101,115,121, 0,118,105,101,119,114,101, 99,116, 0, 98,111,111,107,109, 97,114,107,114,101, 99,116, 0,115, + 99,114,111,108,108,112,111,115, 0,115, 99,114,111,108,108,104,101,105,103,104,116, 0,115, 99,114,111,108,108, 97,114,101, 97, + 0,114,101,116,118, 97,108, 0,112,114,118, 95,119, 0,112,114,118, 95,104, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, + 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95,101,118,101,110,116, 41, 40, 41, 0, 40, 42,114,101,116,117, +114,110,102,117,110, 99, 95, 97,114,103,115, 41, 40, 41, 0, 42, 97,114,103, 49, 0, 42, 97,114,103, 50, 0, 42,109,101,110,117, +112, 0, 42,112,117,112,109,101,110,117, 0, 42,105,109,103, 0,108,101,110, 95, 97,108,108,111, 99, 0, 99,117,114,115,111,114, + 0,114,112,116, 95,109, 97,115,107, 0,115, 99,114,111,108,108, 98, 97, 99,107, 0,104,105,115,116,111,114,121, 0,112,114,111, +109,112,116, 91, 50, 53, 54, 93, 0,108, 97,110,103,117, 97,103,101, 91, 51, 50, 93, 0,115,101,108, 95,115,116, 97,114,116, 0, +115,101,108, 95,101,110,100, 0,102,105,108,116,101,114, 91, 54, 52, 93, 0,102,105,108,101,110, 97,109,101, 91, 50, 53, 54, 93, + 0, 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,100, 0,114, 95,116,111, 95,108, 0,112,111,105,110,116,115, 0, +107,101,114,110,105,110,103, 0,105,116, 97,108,105, 99, 0, 98,111,108,100, 0,115,104, 97,100,111,119, 0,115,104, 97,100,120, + 0,115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, 97, 0,115,104, 97,100,111,119, 99,111,108,111,114, 0,112, + 97,110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, 98,101,108, 0,119,105,100,103,101,116,108, 97, 98,101,108, + 0,119,105,100,103,101,116, 0,112, 97,110,101,108,122,111,111,109, 0,109,105,110,108, 97, 98,101,108, 99,104, 97,114,115, 0, +109,105,110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111,108,117,109,110,115,112, 97, 99,101, 0,116,101,109,112,108, + 97,116,101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, 0, 98,117,116,116,111,110,115,112, 97, 99,101,120, 0, 98, +117,116,116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108,115,112, 97, 99,101, 0,112, 97,110,101,108,111,117,116,101, +114, 0,112, 97,100, 91, 49, 93, 0,111,117,116,108,105,110,101, 91, 52, 93, 0,105,110,110,101,114, 91, 52, 93, 0,105,110,110, +101,114, 95,115,101,108, 91, 52, 93, 0,105,116,101,109, 91, 52, 93, 0,116,101,120,116, 91, 52, 93, 0,116,101,120,116, 95,115, +101,108, 91, 52, 93, 0,115,104, 97,100,101,100, 0,115,104, 97,100,101,116,111,112, 0,115,104, 97,100,101,100,111,119,110, 0, + 97,108,112,104, 97, 95, 99,104,101, 99,107, 0,105,110,110,101,114, 95, 97,110,105,109, 91, 52, 93, 0,105,110,110,101,114, 95, + 97,110,105,109, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 91, 52, 93, 0,105,110,110,101,114, 95,107, +101,121, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 91, 52, 93, 0,105,110,110,101,114, 95, +100,114,105,118,101,110, 95,115,101,108, 91, 52, 93, 0,119, 99,111,108, 95,114,101,103,117,108, 97,114, 0,119, 99,111,108, 95, +116,111,111,108, 0,119, 99,111,108, 95,116,101,120,116, 0,119, 99,111,108, 95,114, 97,100,105,111, 0,119, 99,111,108, 95,111, +112,116,105,111,110, 0,119, 99,111,108, 95,116,111,103,103,108,101, 0,119, 99,111,108, 95,110,117,109, 0,119, 99,111,108, 95, +110,117,109,115,108,105,100,101,114, 0,119, 99,111,108, 95,109,101,110,117, 0,119, 99,111,108, 95,112,117,108,108,100,111,119, +110, 0,119, 99,111,108, 95,109,101,110,117, 95, 98, 97, 99,107, 0,119, 99,111,108, 95,109,101,110,117, 95,105,116,101,109, 0, +119, 99,111,108, 95, 98,111,120, 0,119, 99,111,108, 95,115, 99,114,111,108,108, 0,119, 99,111,108, 95,112,114,111,103,114,101, +115,115, 0,119, 99,111,108, 95,108,105,115,116, 95,105,116,101,109, 0,119, 99,111,108, 95,115,116, 97,116,101, 0,105, 99,111, +110,102,105,108,101, 91, 56, 48, 93, 0, 98, 97, 99,107, 91, 52, 93, 0,116,105,116,108,101, 91, 52, 93, 0,116,101,120,116, 95, +104,105, 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,105,116,108,101, 91, 52, 93, 0, +104,101, 97,100,101,114, 95,116,101,120,116, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 95,104,105, 91, 52, 93, + 0, 98,117,116,116,111,110, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,105,116,108,101, 91, 52, 93, 0, 98,117,116,116,111, +110, 95,116,101,120,116, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,108,105,115,116, + 91, 52, 93, 0,108,105,115,116, 95,116,105,116,108,101, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 91, 52, 93, 0,108, +105,115,116, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,112, 97,110,101,108, 91, 52, 93, 0,112, 97,110,101,108, 95,116,105, +116,108,101, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 95, +104,105, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93, 0,115,104, 97,100,101, 50, 91, 52, 93, 0,104,105,108,105,116,101, + 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,101, 91, 52, 93, 0,115,101,108,101, 99,116, 91, 52, 93, 0,108, 97, +109,112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, 52, 93, 0,103,114,111,117,112, 91, 52, 93, 0,103,114,111,117,112, 95, 97, + 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,111,114,109, 91, 52, 93, 0,118,101,114,116,101,120, 91, 52, 93, 0, +118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 91, 52, 93, 0,101,100,103,101, 95,115,101, +108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101, 97,109, 91, 52, 93, 0,101,100,103,101, 95,115,104, 97,114,112, 91, + 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, 93, 0,101,100,103,101, 95, 99,114,101, 97,115,101, 91, 52, + 93, 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,102, 97, 99,101, 95,100,111, +116, 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0,118,101,114,116,101,120, 95,110,111,114,109, 97,108, 91, 52, 93, 0, + 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110,101, 95,112,111,115,101, 91, 52, 93, 0,115,116,114,105,112, + 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, 52, 93, 0, 99,102,114, 97,109,101, 91, 52, 93, 0,110,117, +114, 98, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,118,108,105,110,101, 91, 52, 93, 0, 97, 99,116, 95,115,112, +108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115, +101,108, 95,118,108,105,110,101, 91, 52, 93, 0,108, 97,115,116,115,101,108, 95,112,111,105,110,116, 91, 52, 93, 0,104, 97,110, +100,108,101, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,117,116,111, 91, 52, 93, 0,104, 97,110,100,108, +101, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,108,105,103,110, 91, 52, 93, 0,104, 97,110,100,108,101, + 95,115,101,108, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97,117,116,111, 91, 52, 93, 0, +104, 97,110,100,108,101, 95,115,101,108, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97,108, +105,103,110, 91, 52, 93, 0,100,115, 95, 99,104, 97,110,110,101,108, 91, 52, 93, 0,100,115, 95,115,117, 98, 99,104, 97,110,110, +101,108, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,111,117,116,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95, +105,110,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,102,111, 91, 52, 93, 0, 99,111,110,115,111,108,101, + 95,101,114,114,111,114, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95, 99,117,114,115,111,114, 91, 52, 93, 0,118,101,114,116, +101,120, 95,115,105,122,101, 0,102, 97, 99,101,100,111,116, 95,115,105,122,101, 0, 98,112, 97,100, 91, 50, 93, 0,115,121,110, +116, 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,120,110, 91, 52, 93, 0,115,121,110,116, 97,120, 98, 91, 52, 93, 0,115,121, +110,116, 97,120,118, 91, 52, 93, 0,115,121,110,116, 97,120, 99, 91, 52, 93, 0,109,111,118,105,101, 91, 52, 93, 0,105,109, 97, +103,101, 91, 52, 93, 0,115, 99,101,110,101, 91, 52, 93, 0, 97,117,100,105,111, 91, 52, 93, 0,101,102,102,101, 99,116, 91, 52, + 93, 0,112,108,117,103,105,110, 91, 52, 93, 0,116,114, 97,110,115,105,116,105,111,110, 91, 52, 93, 0,109,101,116, 97, 91, 52, + 93, 0,101,100,105,116,109,101,115,104, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116, +101,120, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,104, 97, +110,100,108,101, 95,118,101,114,116,101,120, 95,115,105,122,101, 0,104,112, 97,100, 91, 55, 93, 0,112,114,101,118,105,101,119, + 95, 98, 97, 99,107, 91, 52, 93, 0,115,111,108,105,100, 91, 52, 93, 0,116,117,105, 0,116, 98,117,116,115, 0,116,118, 51,100, + 0,116,102,105,108,101, 0,116,105,112,111, 0,116,105,110,102,111, 0,116,115,110,100, 0,116, 97, 99,116, 0,116,110,108, 97, + 0,116,115,101,113, 0,116,105,109, 97, 0,116,105,109, 97,115,101,108, 0,116,101,120,116, 0,116,111,111,112,115, 0,116,116, +105,109,101, 0,116,110,111,100,101, 0,116,108,111,103,105, 99, 0,116,117,115,101,114,112,114,101,102, 0,116, 99,111,110,115, +111,108,101, 0,116, 97,114,109, 91, 50, 48, 93, 0, 97, 99,116,105,118,101, 95,116,104,101,109,101, 95, 97,114,101, 97, 0,109, +111,100,117,108,101, 91, 54, 52, 93, 0,115,112,101, 99, 91, 52, 93, 0,100,117,112,102,108, 97,103, 0,115, 97,118,101,116,105, +109,101, 0,116,101,109,112,100,105,114, 91, 49, 54, 48, 93, 0,102,111,110,116,100,105,114, 91, 49, 54, 48, 93, 0,114,101,110, +100,101,114,100,105,114, 91, 49, 54, 48, 93, 0,116,101,120,116,117,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,116,101, +120,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,115,101,113,100,105,114, 91, 49, 54, 48, 93, 0,112,121,116,104,111,110, +100,105,114, 91, 49, 54, 48, 93, 0,115,111,117,110,100,100,105,114, 91, 49, 54, 48, 93, 0,105,109, 97,103,101, 95,101,100,105, +116,111,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112, +108, 97,121,101,114, 95,112,114,101,115,101,116, 0,118, 50,100, 95,109,105,110, 95,103,114,105,100,115,105,122,101, 0,116,105, +109,101, 99,111,100,101, 95,115,116,121,108,101, 0,118,101,114,115,105,111,110,115, 0,100, 98,108, 95, 99,108,105, 99,107, 95, +116,105,109,101, 0,103, 97,109,101,102,108, 97,103,115, 0,119,104,101,101,108,108,105,110,101,115, 99,114,111,108,108, 0,117, +105,102,108, 97,103, 0,108, 97,110,103,117, 97,103,101, 0,117,115,101,114,112,114,101,102, 0,118,105,101,119,122,111,111,109, + 0,109,105,120, 98,117,102,115,105,122,101, 0, 97,117,100,105,111,100,101,118,105, 99,101, 0, 97,117,100,105,111,114, 97,116, +101, 0, 97,117,100,105,111,102,111,114,109, 97,116, 0, 97,117,100,105,111, 99,104, 97,110,110,101,108,115, 0,100,112,105, 0, +101,110, 99,111,100,105,110,103, 0,116,114, 97,110,115,111,112,116,115, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, + 49, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 50, 0,116,104,101,109,101,115, 0,117,105,102,111,110,116,115, 0, +117,105,115,116,121,108,101,115, 0,107,101,121,109, 97,112,115, 0, 97,100,100,111,110,115, 0,107,101,121, 99,111,110,102,105, +103,115,116,114, 91, 54, 52, 93, 0,117,110,100,111,115,116,101,112,115, 0,117,110,100,111,109,101,109,111,114,121, 0,103,112, + 95,109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103,112, 95,101,117, 99,108,105,100,101, 97,110,100,105,115,116, 0, +103,112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101,116,116,105,110,103,115, 0,116, 98, 95,108,101,102,116,109,111,117, +115,101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, 0,108,105,103,104,116, 91, 51, 93, 0,115, 99,117,108,112,116, + 95,112, 97,105,110,116, 95,115,101,116,116,105,110,103,115, 0,116,119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108, + 97,103, 0,116,119, 95,104, 97,110,100,108,101,115,105,122,101, 0,116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101, +111,117,116, 0,116,101,120, 99,111,108,108,101, 99,116,114, 97,116,101, 0,119,109,100,114, 97,119,109,101,116,104,111,100, 0, +109,101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101,102,101,116, 99,104,102,114, 97,109,101,115, 0,102,114, 97, +109,101,115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95,114,111,116, 95, 97,110,103,108,101, 0,111, 98, 99,101,110, +116,101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114,118,105, 98,114,105,103,104,116, 0,114,101, 99,101,110,116, + 95,102,105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101,119,116,120, 0,103,108,114,101,115,108,105,109,105,116, 0, +110,100,111,102, 95,112, 97,110, 0,110,100,111,102, 95,114,111,116, 97,116,101, 0, 99,117,114,115,115,105,122,101, 0, 99,111, +108,111,114, 95,112,105, 99,107,101,114, 95,116,121,112,101, 0,105,112,111, 95,110,101,119, 0,107,101,121,104, 97,110,100,108, +101,115, 95,110,101,119, 0,115, 99,114, 99, 97,115,116,102,112,115, 0,115, 99,114, 99, 97,115,116,119, 97,105,116, 0,112,114, +111,112,119,105,100,116,104, 0,118,101,114,115,101,109, 97,115,116,101,114, 91, 49, 54, 48, 93, 0,118,101,114,115,101,117,115, +101,114, 91, 49, 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108,105,112, 0, 99,111, 98, 97, 95,119,101,105,103,104,116, 0, +115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,115,105,122,101, 0,115, 99,117,108,112,116, + 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,117,110,112,114,111,106,101, 99,116,101,100, 95,114, 97,100,105,117, +115, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95, 97,108,112,104, 97, 0,115, 99,117, +108,112,116, 95,112, 97,105,110,116, 95,111,118,101,114,108, 97,121, 95, 99,111,108, 91, 51, 93, 0,118,101,114,116, 98, 97,115, +101, 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,115,101, 0, 42,110,101,119,115, 99,101,110,101, 0,102,117, +108,108, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0,100,111, 95,114,101,102,114,101,115,104, 0,100,111, 95,100, +114, 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, 97,119, 95,112, 97,105,110,116, 99,117,114,115,111,114, 0, +100,111, 95,100,114, 97,119, 95,100,114, 97,103, 0,115,119, 97,112, 0,109, 97,105,110,119,105,110, 0,115,117, 98,119,105,110, + 97, 99,116,105,118,101, 0, 42, 97,110,105,109,116,105,109,101,114, 0, 42, 99,111,110,116,101,120,116, 0,104, 97,110,100,108, +101,114, 91, 56, 93, 0, 42,110,101,119,118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42,116,121,112,101, 0,112, 97, +110,101,108,110, 97,109,101, 91, 54, 52, 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, 97,119,110, 97,109,101, + 91, 54, 52, 93, 0,111,102,115,120, 0,111,102,115,121, 0,115,105,122,101,120, 0,115,105,122,101,121, 0,108, 97, 98,101,108, +111,102,115, 0,114,117,110,116,105,109,101, 95,102,108, 97,103, 0, 99,111,110,116,114,111,108, 0,115,110, 97,112, 0,115,111, +114,116,111,114,100,101,114, 0, 42,112, 97,110,101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101,100, 97,116, 97, 0,108,105, +115,116, 95,115, 99,114,111,108,108, 0,108,105,115,116, 95,115,105,122,101, 0,108,105,115,116, 95,108, 97,115,116, 95,108,101, +110, 0,108,105,115,116, 95,103,114,105,112, 95,115,105,122,101, 0,108,105,115,116, 95,115,101, 97,114, 99,104, 91, 54, 52, 93, + 0, 42,118, 51, 0, 42,118, 52, 0, 42,102,117,108,108, 0, 98,117,116,115,112, 97, 99,101,116,121,112,101, 0,104,101, 97,100, +101,114,116,121,112,101, 0,115,112, 97, 99,101,100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, 0, 97, 99,116,105,111,110, +122,111,110,101,115, 0,119,105,110,114, 99,116, 0,100,114, 97,119,114, 99,116, 0,115,119,105,110,105,100, 0,114,101,103,105, +111,110,116,121,112,101, 0, 97,108,105,103,110,109,101,110,116, 0,100,111, 95,100,114, 97,119, 95,111,118,101,114,108, 97,121, + 0,117,105, 98,108,111, 99,107,115, 0,112, 97,110,101,108,115, 0, 42,104,101, 97,100,101,114,115,116,114, 0, 42,114,101,103, +105,111,110,100, 97,116, 97, 0,115,117, 98,118,115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115,105,111,110, 0,112, 97, +100,115, 0,109,105,110,118,101,114,115,105,111,110, 0,109,105,110,115,117, 98,118,101,114,115,105,111,110, 0, 42, 99,117,114, +115, 99,114,101,101,110, 0, 42, 99,117,114,115, 99,101,110,101, 0,102,105,108,101,102,108, 97,103,115, 0,103,108,111, 98, 97, +108,102, 0,102,105,108,101,110, 97,109,101, 91, 50, 52, 48, 93, 0,110, 97,109,101, 91, 56, 48, 93, 0, 42,105, 98,117,102, 0, + 42,105, 98,117,102, 95, 99,111,109,112, 0, 42,115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0,110,114, 0, 98,111,116, +116,111,109, 0,114,105,103,104,116, 0,120,111,102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93, 0,103, 97,109,109, + 97, 91, 51, 93, 0,103, 97,105,110, 91, 51, 93, 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110,101, 0,115,116, 97,114,116, +115,116,105,108,108, 0,101,110,100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0,111,114,120, 0,111,114, +121, 0, 42, 99,114,111,112, 0, 42,116,114, 97,110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, 98, 97,108, 97,110, 99, +101, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,115,116, 97,114,116,115, +116,105,108,108, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,101,110,100,115,116,105,108,108, 0, 42,105, 98,117,102, 95, +115,116, 97,114,116,115,116,105,108,108, 0, 42,105, 98,117,102, 95,101,110,100,115,116,105,108,108, 0, 42,105,110,115,116, 97, +110, 99,101, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, 95,112,114,105,118, 97, +116,101, 95,100, 97,116, 97, 0, 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111,102,115, 0,109, 97, 99, +104,105,110,101, 0,115,116, 97,114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,115, 97,116, 0,109,117,108, 0,104, + 97,110,100,115,105,122,101, 0, 97,110,105,109, 95,112,114,101,115,101,101,107, 0, 42,115,116,114,105,112, 0, 42,115, 99,101, +110,101, 95, 99, 97,109,101,114, 97, 0,101,102,102,101, 99,116, 95,102, 97,100,101,114, 0,115,112,101,101,100, 95,102, 97,100, +101,114, 0, 42,115,101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42,115,111, +117,110,100, 0, 42,115, 99,101,110,101, 95,115,111,117,110,100, 0,108,101,118,101,108, 0,112, 97,110, 0,115, 99,101,110,101, +110,114, 0,109,117,108,116,105, 99, 97,109, 95,115,111,117,114, 99,101, 0,115,116,114,111, 98,101, 0, 42,101,102,102,101, 99, +116,100, 97,116, 97, 0, 97,110,105,109, 95,115,116, 97,114,116,111,102,115, 0, 97,110,105,109, 95,101,110,100,111,102,115, 0, + 98,108,101,110,100, 95,109,111,100,101, 0, 98,108,101,110,100, 95,111,112, 97, 99,105,116,121, 0, 42,111,108,100, 98, 97,115, +101,112, 0, 42,112, 97,114,115,101,113, 0, 42,115,101,113, 98, 97,115,101,112, 0,109,101,116, 97,115,116, 97, 99,107, 0, 42, + 97, 99,116, 95,115,101,113, 0, 97, 99,116, 95,105,109, 97,103,101,100,105,114, 91, 50, 53, 54, 93, 0, 97, 99,116, 95,115,111, +117,110,100,100,105,114, 91, 50, 53, 54, 93, 0,111,118,101,114, 95,111,102,115, 0,111,118,101,114, 95, 99,102,114, 97, 0,111, +118,101,114, 95,102,108, 97,103, 0,111,118,101,114, 95, 98,111,114,100,101,114, 0,101,100,103,101, 87,105,100,116,104, 0,102, +111,114,119, 97,114,100, 0,119,105,112,101,116,121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109,112, 0,102, 66,111, +111,115,116, 0,100, 68,105,115,116, 0,100, 81,117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0, 83, 99, 97,108,101, +120, 73,110,105, 0, 83, 99, 97,108,101,121, 73,110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, 83, 99, 97,108,101,121, 70, +105,110, 0,120, 73,110,105, 0,120, 70,105,110, 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111,116, 73,110,105, 0,114,111, +116, 70,105,110, 0,105,110,116,101,114,112,111,108, 97,116,105,111,110, 0,117,110,105,102,111,114,109, 95,115, 99, 97,108,101, + 0, 42,102,114, 97,109,101, 77, 97,112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115,116, 86, 97,108,105,100, + 70,114, 97,109,101, 0, 98,117,116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,116,111,116,112, 97,114, +116, 0,110,111,114,109,102, 97, 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,120,102, 97, 99, 0,114, + 97,110,100,108,105,102,101, 0,102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,109, 97,120,108,101,110, + 0,100,101,102,118,101, 99, 91, 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, 0, 99,104,105,108,100, + 91, 52, 93, 0,109, 97,116, 91, 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,115,116, 97,116,105, 99, +115,116,101,112, 0,111,109, 97,116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101,120, 0,102,108, 97,103, 50, +110,101,103, 0,118,101,114,116,103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, 91, 51, 50, 93, 0,118, +103,114,111,117,112,110, 97,109,101, 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102, 97, 99, 0,117,115,101, +100, 0,117,115,101,100,101,108,101,109, 0, 42,112,111,105,110, 0,114,101,115,101,116,100,105,115,116, 0,108, 97,115,116,118, + 97,108, 0, 42,109, 97, 0,107,101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,101,116, 78, 97,109,101, + 91, 51, 50, 93, 0,116,111,103,103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91, 51, 50, 93, 0,109, 97, +120,118, 97,108,117,101, 91, 51, 50, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,105,111,110, 0,109, 97,116,101,114,105, + 97,108, 78, 97,109,101, 91, 51, 50, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,114,111,112,110, 97,109,101, 91, 51, 50, + 93, 0,109, 97,116,110, 97,109,101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111,115,101, 99,104, 97,110,110, +101,108, 91, 51, 50, 93, 0, 99,111,110,115,116,114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114,111,109, 79, 98,106,101, 99, +116, 0,115,117, 98,106,101, 99,116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116,121,112,101, 0,112,117,108, +115,101, 0,102,114,101,113, 0,116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,116, 97,112, 0,106,111,121, +105,110,100,101,120, 0, 97,120,105,115, 95,115,105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, 0,104, + 97,116, 0,104, 97,116,102, 0,112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0, 42,109,121,110,101, +119, 0,105,110,112,117,116,115, 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,108,105,110,107,115, 0,118, 97,108,111, + 0,115,116, 97,116,101, 95,109, 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111,112, 91, 51, 50, 93, 0, 98, +108,101,110,100,105,110, 0,112,114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,115,101,116, 0,115,116,114,105,100,101, + 97,120,105,115, 0,115,116,114,105,100,101,108,101,110,103,116,104, 0,115,110,100,110,114, 0,112, 97,100, 51, 91, 50, 93, 0, +112,105,116, 99,104, 0,115,111,117,110,100, 51, 68, 0,112, 97,100, 54, 91, 49, 93, 0, 42,109,101, 0,108,105,110, 86,101,108, +111, 99,105,116,121, 91, 51, 93, 0, 97,110,103, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108,102,108, 97, +103, 0,100,121,110, 95,111,112,101,114, 97,116,105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,102,111,114, 99, +101,114,111,116, 91, 51, 93, 0,108,105,110,101, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103,117,108, 97, +114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 42,114,101,102,101,114,101,110, 99,101, 0,109,105,110, 0,109, 97,120, 0, +114,111,116,100, 97,109,112, 0,109,105,110,108,111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, 51, 93, 0,109,105,110,114, +111,116, 91, 51, 93, 0,109, 97,120,114,111,116, 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51, 50, 93, 0, 98,117,116,115, +116, 97, 0, 98,117,116,101,110,100, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, 97,114,103, 95, 49, + 0,105,110,116, 95, 97,114,103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97,116, 95, 97,114,103, + 95, 50, 0,116,111, 80,114,111,112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, 99,116, 0, 98,111,100,121, + 84,121,112,101, 0,102,105,108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97,109,101, 91, 54, 52, + 93, 0,105,110,116, 95, 97,114,103, 0,102,108,111, 97,116, 95, 97,114,103, 0, 42,115,117, 98,116, 97,114,103,101,116, 0,103, +111, 0,109,105,110, 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101,102,101,114,101,110, 99,101, 95,100,105, +115,116, 97,110, 99,101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,101, 0,114,111,108,108,111,102,102, 95,102, 97, 99,116, +111,114, 0, 99,111,110,101, 95,105,110,110,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95, 97, +110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42,110,101,119,112, 97, 99,107,101,100,102, +105,108,101, 0, 97,116,116,101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, 97, 99,104,101, 0, + 42,112,108, 97,121, 98, 97, 99,107, 95,104, 97,110,100,108,101, 0, 42, 97,114,101, 97, 0, 42,108, 97,109,112,114,101,110, 0, +103,111, 98,106,101, 99,116, 0,100,117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 42,112,114,111,112, 0, 99,104,105,108,100, + 98, 97,115,101, 0,114,111,108,108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98,111,110,101, 95,109, + 97,116, 91, 51, 93, 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97,105,108, 91, 51, 93, + 0, 97,114,109, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0,122,119,105,100,116,104, 0,101, 97,115, +101, 49, 0,101, 97,115,101, 50, 0,114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95,116, 97,105,108, 0, 98,111,110,101, 98, + 97,115,101, 0, 99,104, 97,105,110, 98, 97,115,101, 0, 42,101,100, 98,111, 0, 42, 97, 99,116, 95, 98,111,110,101, 0, 42, 97, + 99,116, 95,101,100, 98,111,110,101, 0, 42,115,107,101,116, 99,104, 0,108, 97,121,101,114, 95,112,114,111,116,101, 99,116,101, +100, 0,103,104,111,115,116,101,112, 0,103,104,111,115,116,115,105,122,101, 0,103,104,111,115,116,116,121,112,101, 0,112, 97, +116,104,115,105,122,101, 0,103,104,111,115,116,115,102, 0,103,104,111,115,116,101,102, 0,112, 97,116,104,115,102, 0,112, 97, +116,104,101,102, 0,112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,111,105,110,116,115, 0,115,116, 97,114,116, + 95,102,114, 97,109,101, 0,101,110,100, 95,102,114, 97,109,101, 0,103,104,111,115,116, 95,115,102, 0,103,104,111,115,116, 95, +101,102, 0,103,104,111,115,116, 95, 98, 99, 0,103,104,111,115,116, 95, 97, 99, 0,103,104,111,115,116, 95,116,121,112,101, 0, +103,104,111,115,116, 95,115,116,101,112, 0,103,104,111,115,116, 95,102,108, 97,103, 0,112, 97,116,104, 95,116,121,112,101, 0, +112, 97,116,104, 95,115,116,101,112, 0,112, 97,116,104, 95,118,105,101,119,102,108, 97,103, 0,112, 97,116,104, 95, 98, 97,107, +101,102,108, 97,103, 0,112, 97,116,104, 95,115,102, 0,112, 97,116,104, 95,101,102, 0,112, 97,116,104, 95, 98, 99, 0,112, 97, +116,104, 95, 97, 99, 0, 99,111,110,115,116,102,108, 97,103, 0,105,107,102,108, 97,103, 0,115,101,108,101, 99,116,102,108, 97, +103, 0, 97,103,114,112, 95,105,110,100,101,120, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105,107,116,114,101,101, + 0, 42, 98, 95, 98,111,110,101, 95,109, 97,116,115, 0, 42,100,117, 97,108, 95,113,117, 97,116, 0, 42, 98, 95, 98,111,110,101, + 95,100,117, 97,108, 95,113,117, 97,116,115, 0,101,117,108, 91, 51, 93, 0, 99,104, 97,110, 95,109, 97,116, 91, 52, 93, 91, 52, + 93, 0,112,111,115,101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, 51, 93, 0,112,111, +115,101, 95,116, 97,105,108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105,109,105,116,109, 97,120, 91, + 51, 93, 0,115,116,105,102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, 0,105,107,114,111,116,119, +101,105,103,104,116, 0,105,107,108,105,110,119,101,105,103,104,116, 0, 42, 99,117,115,116,111,109, 0, 42, 99,117,115,116,111, +109, 95,116,120, 0, 99,104, 97,110, 98, 97,115,101, 0, 42, 99,104, 97,110,104, 97,115,104, 0,112,114,111,120,121, 95,108, 97, +121,101,114, 0,115,116,114,105,100,101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, 95,111,102,102,115, +101,116, 91, 51, 93, 0, 97,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,103,114,111,117,112, 0,105,107,115,111,108, +118,101,114, 0, 42,105,107,100, 97,116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,112,114,111,120,121, 95, 97, 99,116, 95, 98, +111,110,101, 91, 51, 50, 93, 0,110,117,109,105,116,101,114, 0,110,117,109,115,116,101,112, 0,109,105,110,115,116,101,112, 0, +109, 97,120,115,116,101,112, 0,115,111,108,118,101,114, 0,102,101,101,100, 98, 97, 99,107, 0,109, 97,120,118,101,108, 0,100, + 97,109,112,109, 97,120, 0,100, 97,109,112,101,112,115, 0, 99,104, 97,110,110,101,108,115, 0, 99,117,115,116,111,109, 67,111, +108, 0, 99,115, 0, 99,117,114,118,101,115, 0,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,109, 97,114,107,101,114, + 0, 42,115,111,117,114, 99,101, 0, 42,102,105,108,116,101,114, 95,103,114,112, 0,102,105,108,116,101,114,102,108, 97,103, 0, + 97,100,115, 0,116,105,109,101,115,108,105,100,101, 0, 42,103,114,112, 0,116,101,109,112, 0,110, 97,109,101, 91, 51, 48, 93, + 0,111,119,110,115,112, 97, 99,101, 0,116, 97,114,115,112, 97, 99,101, 0,101,110,102,111,114, 99,101, 0,104,101, 97,100,116, + 97,105,108, 0,108,105,110, 95,101,114,114,111,114, 0,114,111,116, 95,101,114,114,111,114, 0, 42,116, 97,114, 0,109, 97,116, +114,105,120, 91, 52, 93, 91, 52, 93, 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100,101,114, 0,116, 97,114,110,117,109, 0, +116, 97,114,103,101,116,115, 0,105,116,101,114, 97,116,105,111,110,115, 0,114,111,111,116, 98,111,110,101, 0,109, 97,120, 95, +114,111,111,116, 98,111,110,101, 0, 42,112,111,108,101,116, 97,114, 0,112,111,108,101,115,117, 98,116, 97,114,103,101,116, 91, + 51, 50, 93, 0,112,111,108,101, 97,110,103,108,101, 0,111,114,105,101,110,116,119,101,105,103,104,116, 0,103,114, 97, 98,116, + 97,114,103,101,116, 91, 51, 93, 0,110,117,109,112,111,105,110,116,115, 0, 99,104, 97,105,110,108,101,110, 0,120,122, 83, 99, + 97,108,101, 77,111,100,101, 0,114,101,115,101,114,118,101,100, 49, 0,114,101,115,101,114,118,101,100, 50, 0,109,105,110,109, + 97,120,102,108, 97,103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99,107,102,108, 97,103, 0,102, +111,108,108,111,119,102,108, 97,103, 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103,108,101,110,103,116, +104, 0, 98,117,108,103,101, 0,112,105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120, 88, 0, 97,120, 89, 0, 97, +120, 90, 0,109,105,110, 76,105,109,105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54, 93, 0,101,120,116,114, 97, + 70,122, 0,105,110,118,109, 97,116, 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109, 97,112, 91, 51, 93, 0,101, +120,112,111, 0,102,114,111,109, 95,109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91, 51, 93, 0,116,111, 95,109, +105,110, 91, 51, 93, 0,116,111, 95,109, 97,120, 91, 51, 93, 0,114,111,116, 65,120,105,115, 0,122,109,105,110, 0,122,109, 97, +120, 0,112, 97,100, 91, 57, 93, 0, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, 95, 97,120,105,115, + 0,115,116,114,105,100,101, 95, 97,120,105,115, 0, 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114,116, 0, 97, 99,116, +101,110,100, 0, 97, 99,116,111,102,102,115, 0,115,116,114,105,100,101,108,101,110, 0,115, 99, 97,108,101, 0, 98,108,101,110, +100,111,117,116, 0,115,116,114,105,100,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,111,102,102,115, 95, 98,111,110,101, + 91, 51, 50, 93, 0,104, 97,115,105,110,112,117,116, 0,104, 97,115,111,117,116,112,117,116, 0,100, 97,116, 97,116,121,112,101, + 0,115,111, 99,107,101,116,116,121,112,101, 0, 42,110,101,119, 95,115,111, 99,107, 0,110,115, 0,108,105,109,105,116, 0,115, +116, 97, 99,107, 95,105,110,100,101,120, 0,105,110,116,101,114,110, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 95,101,120, +116, 0,108,111, 99,120, 0,108,111, 99,121, 0,111,119,110, 95,105,110,100,101,120, 0,116,111, 95,105,110,100,101,120, 0, 42, +116,111,115,111, 99,107, 0, 42,108,105,110,107, 0, 42,110,101,119, 95,110,111,100,101, 0,108, 97,115,116,121, 0,111,117,116, +112,117,116,115, 0, 42,115,116,111,114, 97,103,101, 0,109,105,110,105,119,105,100,116,104, 0, 99,117,115,116,111,109, 49, 0, + 99,117,115,116,111,109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117,115,116,111,109, 52, 0,110,101,101,100, 95,101,120,101, + 99, 0,101,120,101, 99, 0, 42,116,104,114,101, 97,100,100, 97,116, 97, 0,116,111,116,114, 0, 98,117,116,114, 0,112,114,118, +114, 0, 42, 98,108,111, 99,107, 0, 42,116,121,112,101,105,110,102,111, 0, 42,102,114,111,109,110,111,100,101, 0, 42,116,111, +110,111,100,101, 0, 42,102,114,111,109,115,111, 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0, 42,115,116, 97, 99, +107, 0, 42,116,104,114,101, 97,100,115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, 97, 99,107,115,105,122,101, 0, 99,117, +114, 95,105,110,100,101,120, 0, 97,108,108,116,121,112,101,115, 0, 42,111,119,110,116,121,112,101, 0,112, 97,100, 50, 91, 50, + 93, 0, 40, 42,112,114,111,103,114,101,115,115, 41, 40, 41, 0, 40, 42,115,116, 97,116,115, 95,100,114, 97,119, 41, 40, 41, 0, + 40, 42,116,101,115,116, 95, 98,114,101, 97,107, 41, 40, 41, 0, 42,116, 98,104, 0, 42,112,114,104, 0, 42,115,100,104, 0, 99, +121, 99,108,105, 99, 0,109,111,118,105,101, 0,115, 97,109,112,108,101,115, 0,109, 97,120,115,112,101,101,100, 0,109,105,110, +115,112,101,101,100, 0,112,101,114, 99,101,110,116,120, 0,112,101,114, 99,101,110,116,121, 0, 98,111,107,101,104, 0,103, 97, +109,109, 97, 0, 99,117,114,118,101,100, 0,105,109, 97,103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109, 97,103,101, 95, +105,110, 95,104,101,105,103,104,116, 0, 99,101,110,116,101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,115,112,105,110, + 0,119,114, 97,112, 0,115,105,103,109, 97, 95, 99,111,108,111,114, 0,115,105,103,109, 97, 95,115,112, 97, 99,101, 0,104,117, +101, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116,114,101,110,103,116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, 91, + 52, 93, 0, 97,108,103,111,114,105,116,104,109, 0, 99,104, 97,110,110,101,108, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, + 0, 99,111,108,110, 97,109,101, 91, 51, 50, 93, 0, 98,107,116,121,112,101, 0,114,111,116, 97,116,105,111,110, 0,103, 97,109, + 99,111, 0,110,111, 95,122, 98,117,102, 0,102,115,116,111,112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, + 0, 42,100,105, 99,116, 0, 42,110,111,100,101, 0, 97,110,103,108,101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105, +120, 0,116,104,114,101,115,104,111,108,100, 0,102, 97,100,101, 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105, +116, 0,115,108,111,112,101, 91, 51, 93, 0,112,111,119,101,114, 91, 51, 93, 0,108,105,102,116, 95,108,103,103, 91, 51, 93, 0, +108,105,109, 99,104, 97,110, 0,117,110,115,112,105,108,108, 0,108,105,109,115, 99, 97,108,101, 0,117,115,112,105,108,108,114, + 0,117,115,112,105,108,108,103, 0,117,115,112,105,108,108, 98, 0,115,104,111,114,116,121, 0,109,105,110,116, 97, 98,108,101, + 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95,105,110, 91, 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, 42, + 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42,112,114,101,109,117,108,116, 97, 98,108,101, 0,112,114,101,115,101,116, + 0, 99,104, 97,110,103,101,100, 95,116,105,109,101,115,116, 97,109,112, 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99,109, + 91, 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, 0,119,104,105,116,101, 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0,115, + 97,109,112,108,101, 91, 51, 93, 0,120, 95,114,101,115,111,108,117,116,105,111,110, 0,100, 97,116, 97, 95,114, 91, 50, 53, 54, + 93, 0,100, 97,116, 97, 95,103, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95, 98, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,108, +117,109, 97, 91, 50, 53, 54, 93, 0,115, 97,109,112,108,101, 95,102,117,108,108, 0,115, 97,109,112,108,101, 95,108,105,110,101, +115, 0, 97, 99, 99,117,114, 97, 99,121, 0,119, 97,118,101,102,114,109, 95,109,111,100,101, 0,119, 97,118,101,102,114,109, 95, + 97,108,112,104, 97, 0,119, 97,118,101,102,114,109, 95,121,102, 97, 99, 0,119, 97,118,101,102,114,109, 95,104,101,105,103,104, +116, 0,118,101, 99,115, 99,111,112,101, 95, 97,108,112,104, 97, 0,118,101, 99,115, 99,111,112,101, 95,104,101,105,103,104,116, + 0,109,105,110,109, 97,120, 91, 51, 93, 91, 50, 93, 0,104,105,115,116, 0, 42,119, 97,118,101,102,111,114,109, 95, 49, 0, 42, +119, 97,118,101,102,111,114,109, 95, 50, 0, 42,119, 97,118,101,102,111,114,109, 95, 51, 0, 42,118,101, 99,115, 99,111,112,101, + 0,119, 97,118,101,102,111,114,109, 95,116,111,116, 0,111,102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,109,116, +101,120, 0, 42,105, 99,111,110, 95,105,109, 98,117,102, 0,105, 99,111,110, 0,112, 97,100, 50, 91, 55, 93, 0,105, 99,111,110, + 95,102,105,108,101,112, 97,116,104, 91, 50, 52, 48, 93, 0,110,111,114,109, 97,108, 95,119,101,105,103,104,116, 0,106,105,116, +116,101,114, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,114, 97,100,105,117,115, 0,115,109,111,111,116,104, 95, +115,116,114,111,107,101, 95,102, 97, 99,116,111,114, 0,114, 97,116,101, 0,114,103, 98, 91, 51, 93, 0,115, 99,117,108,112,116, + 95,112,108, 97,110,101, 0,112,108, 97,110,101, 95,111,102,102,115,101,116, 0,115, 99,117,108,112,116, 95,116,111,111,108, 0, +118,101,114,116,101,120,112, 97,105,110,116, 95,116,111,111,108, 0,105,109, 97,103,101,112, 97,105,110,116, 95,116,111,111,108, + 0, 97,117,116,111,115,109,111,111,116,104, 95,102, 97, 99,116,111,114, 0, 99,114,101, 97,115,101, 95,112,105,110, 99,104, 95, +102, 97, 99,116,111,114, 0,112,108, 97,110,101, 95,116,114,105,109, 0,116,101,120,116,117,114,101, 95,115, 97,109,112,108,101, + 95, 98,105, 97,115, 0,116,101,120,116,117,114,101, 95,111,118,101,114,108, 97,121, 95, 97,108,112,104, 97, 0,117,110,112,114, +111,106,101, 99,116,101,100, 95,114, 97,100,105,117,115, 0, 97,100,100, 95, 99,111,108, 91, 51, 93, 0,115,117, 98, 95, 99,111, +108, 91, 51, 93, 0, 97, 99,116,105,118,101, 95,114,110,100, 0, 97, 99,116,105,118,101, 95, 99,108,111,110,101, 0, 97, 99,116, +105,118,101, 95,109, 97,115,107, 0, 42,108, 97,121,101,114,115, 0,116,111,116,108, 97,121,101,114, 0,109, 97,120,108, 97,121, +101,114, 0,116,111,116,115,105,122,101, 0, 42,112,111,111,108, 0, 42,101,120,116,101,114,110, 97,108, 0,118,101,108, 91, 51, + 93, 0,114,111,116, 91, 52, 93, 0, 97,118,101, 91, 51, 93, 0, 42,103,114,111,117,110,100, 0,119, 97,110,100,101,114, 91, 51, + 93, 0,110,117,109, 0,112, 97,114,101,110,116, 0,112, 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0,102, +111,102,102,115,101,116, 0,114,116, 91, 50, 93, 0,112,114,101,118, 95,115,116, 97,116,101, 0, 42,104, 97,105,114, 0, 42, 98, +111,105,100, 0,100,105,101,116,105,109,101, 0,110,117,109, 95,100,109, 99, 97, 99,104,101, 0,104, 97,105,114, 95,105,110,100, +101,120, 0, 97,108,105,118,101, 0,115,112,114,105,110,103, 95,107, 0,114,101,115,116, 95,108,101,110,103,116,104, 0,118,105, +115, 99,111,115,105,116,121, 95,111,109,101,103, 97, 0,118,105,115, 99,111,115,105,116,121, 95, 98,101,116, 97, 0,115,116,105, +102,102,110,101,115,115, 95,107, 0,115,116,105,102,102,110,101,115,115, 95,107,110,101, 97,114, 0,114,101,115,116, 95,100,101, +110,115,105,116,121, 0, 98,117,111,121, 97,110, 99,121, 0, 42, 98,111,105,100,115, 0, 42,102,108,117,105,100, 0,100,105,115, +116,114, 0,112,104,121,115,116,121,112,101, 0, 97,118,101,109,111,100,101, 0,114,101, 97, 99,116,101,118,101,110,116, 0,100, +114, 97,119, 0,100,114, 97,119, 95, 97,115, 0,100,114, 97,119, 95,115,105,122,101, 0, 99,104,105,108,100,116,121,112,101, 0, +114,101,110, 95, 97,115, 0,115,117, 98,102,114, 97,109,101,115, 0,114,101,110, 95,115,116,101,112, 0,104, 97,105,114, 95,115, +116,101,112, 0,107,101,121,115, 95,115,116,101,112, 0, 97,100, 97,112,116, 95, 97,110,103,108,101, 0, 97,100, 97,112,116, 95, +112,105,120, 0,114,111,116,102,114,111,109, 0,105,110,116,101,103,114, 97,116,111,114, 0, 98, 98, 95, 97,108,105,103,110, 0, + 98, 98, 95,117,118, 95,115,112,108,105,116, 0, 98, 98, 95, 97,110,105,109, 0, 98, 98, 95,115,112,108,105,116, 95,111,102,102, +115,101,116, 0, 98, 98, 95,116,105,108,116, 0, 98, 98, 95,114, 97,110,100, 95,116,105,108,116, 0, 98, 98, 95,111,102,102,115, +101,116, 91, 50, 93, 0,115,105,109,112,108,105,102,121, 95,114,101,102,115,105,122,101, 0,115,105,109,112,108,105,102,121, 95, +114, 97,116,101, 0,115,105,109,112,108,105,102,121, 95,116,114, 97,110,115,105,116,105,111,110, 0,115,105,109,112,108,105,102, +121, 95,118,105,101,119,112,111,114,116, 0,116,105,109,101,116,119,101, 97,107, 0,106,105,116,102, 97, 99, 0,101,102,102, 95, +104, 97,105,114, 0,103,114,105,100, 95,114,101,115, 0,112, 97,114,116,102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116, 97,110, +112,104, 97,115,101, 0,114,101, 97, 99,116,102, 97, 99, 0,111, 98, 95,118,101,108, 91, 51, 93, 0, 97,118,101,102, 97, 99, 0, +112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,114,111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, 99, + 0,114, 97,110,100,115,105,122,101, 0,114,101, 97, 99,116,115,104, 97,112,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97,103, +102, 97, 99, 0, 98,114,111,119,110,102, 97, 99, 0,100, 97,109,112,102, 97, 99, 0,114, 97,110,100,108,101,110,103,116,104, 0, + 99,104,105,108,100, 95,110, 98,114, 0,114,101,110, 95, 99,104,105,108,100, 95,110, 98,114, 0,112, 97,114,101,110,116,115, 0, + 99,104,105,108,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,110,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,100, + 0, 99,104,105,108,100,102,108, 97,116, 0, 99,108,117,109,112,112,111,119, 0,114,111,117,103,104, 49, 0,114,111,117,103,104, + 49, 95,115,105,122,101, 0,114,111,117,103,104, 50, 0,114,111,117,103,104, 50, 95,115,105,122,101, 0,114,111,117,103,104, 50, + 95,116,104,114,101,115, 0,114,111,117,103,104, 95,101,110,100, 0,114,111,117,103,104, 95,101,110,100, 95,115,104, 97,112,101, + 0, 99,108,101,110,103,116,104, 0, 99,108,101,110,103,116,104, 95,116,104,114,101,115, 0, 98,114, 97,110, 99,104, 95,116,104, +114,101,115, 0,100,114, 97,119, 95,108,105,110,101, 91, 50, 93, 0,112, 97,116,104, 95,115,116, 97,114,116, 0,112, 97,116,104, + 95,101,110,100, 0,116,114, 97,105,108, 95, 99,111,117,110,116, 0,107,101,121,101,100, 95,108,111,111,112,115, 0,100,117,112, +108,105,119,101,105,103,104,116,115, 0, 42,101,102,102, 95,103,114,111,117,112, 0, 42,100,117,112, 95,111, 98, 0, 42, 98, 98, + 95,111, 98, 0, 42,112,100, 50, 0, 42,112, 97,114,116, 0, 42,112, 97,114,116,105, 99,108,101,115, 0, 42, 42,112, 97,116,104, + 99, 97, 99,104,101, 0, 42, 42, 99,104,105,108,100, 99, 97, 99,104,101, 0,112, 97,116,104, 99, 97, 99,104,101, 98,117,102,115, + 0, 99,104,105,108,100, 99, 97, 99,104,101, 98,117,102,115, 0, 42, 99,108,109,100, 0, 42,104, 97,105,114, 95,105,110, 95,100, +109, 0, 42,104, 97,105,114, 95,111,117,116, 95,100,109, 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42,108, 97,116,116,105, + 99,101, 0,116,114,101,101, 95,102,114, 97,109,101, 0,116,111,116, 99,104,105,108,100, 0,116,111,116, 99, 97, 99,104,101,100, + 0,116,111,116, 99,104,105,108,100, 99, 97, 99,104,101, 0,116, 97,114,103,101,116, 95,112,115,121,115, 0,116,111,116,107,101, +121,101,100, 0, 98, 97,107,101,115,112, 97, 99,101, 0, 98, 98, 95,117,118,110, 97,109,101, 91, 51, 93, 91, 51, 50, 93, 0,118, +103,114,111,117,112, 91, 49, 50, 93, 0,118,103, 95,110,101,103, 0,114,116, 51, 0, 42,114,101,110,100,101,114,100, 97,116, 97, + 0, 42,101,102,102,101, 99,116,111,114,115, 0, 42,116,114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97,110,100, 0, 67,100, +105,115, 0, 67,118,105, 0,115,116,114,117, 99,116,117,114, 97,108, 0, 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98,101, +110,100, 0,109, 97,120, 95,115,116,114,117, 99,116, 0,109, 97,120, 95,115,104,101, 97,114, 0, 97,118,103, 95,115,112,114,105, +110,103, 95,108,101,110, 0,116,105,109,101,115, 99, 97,108,101, 0,101,102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108,101, + 0,101,102,102, 95,119,105,110,100, 95,115, 99, 97,108,101, 0,115,105,109, 95,116,105,109,101, 95,111,108,100, 0,118,101,108, +111, 99,105,116,121, 95,115,109,111,111,116,104, 0, 99,111,108,108,105,100,101,114, 95,102,114,105, 99,116,105,111,110, 0,115, +116,101,112,115, 80,101,114, 70,114, 97,109,101, 0,112,114,101,114,111,108,108, 0,109, 97,120,115,112,114,105,110,103,108,101, +110, 0,115,111,108,118,101,114, 95,116,121,112,101, 0,118,103,114,111,117,112, 95, 98,101,110,100, 0,118,103,114,111,117,112, + 95,109, 97,115,115, 0,118,103,114,111,117,112, 95,115,116,114,117, 99,116, 0,115,104, 97,112,101,107,101,121, 95,114,101,115, +116, 0,112,114,101,115,101,116,115, 0,114,101,115,101,116, 0, 42, 99,111,108,108,105,115,105,111,110, 95,108,105,115,116, 0, +101,112,115,105,108,111,110, 0,115,101,108,102, 95,102,114,105, 99,116,105,111,110, 0,115,101,108,102,101,112,115,105,108,111, +110, 0,115,101,108,102, 95,108,111,111,112, 95, 99,111,117,110,116, 0,108,111,111,112, 95, 99,111,117,110,116, 0,112,114,101, +115,115,117,114,101, 0,116,104,105, 99,107,110,101,115,115, 0,115,116,114,111,107,101,115, 0,102,114, 97,109,101,110,117,109, + 0, 42, 97, 99,116,102,114, 97,109,101, 0,103,115,116,101,112, 0,105,110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102, +101,114, 95,115,105,122,101, 0,115, 98,117,102,102,101,114, 95,115,102,108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, 42, +116,121,112,101,115,116,114, 0, 42,109,101,115,115, 97,103,101, 0,108,105,115,116, 0,112,114,105,110,116,108,101,118,101,108, + 0,115,116,111,114,101,108,101,118,101,108, 0, 42,114,101,112,111,114,116,116,105,109,101,114, 0,103,114,101,121,115, 99, 97, +108,101, 0,119,105,100,116,104,102, 97, 99, 0, 42,119,105,110,100,114, 97,119, 97, 98,108,101, 0, 42,119,105,110, 97, 99,116, +105,118,101, 0,119,105,110,100,111,119,115, 0,105,110,105,116,105, 97,108,105,122,101,100, 0,102,105,108,101, 95,115, 97,118, +101,100, 0,111,112, 95,117,110,100,111, 95,100,101,112,116,104, 0,111,112,101,114, 97,116,111,114,115, 0,113,117,101,117,101, + 0,114,101,112,111,114,116,115, 0,106,111, 98,115, 0,112, 97,105,110,116, 99,117,114,115,111,114,115, 0,100,114, 97,103,115, + 0,107,101,121, 99,111,110,102,105,103,115, 0, 42,100,101,102, 97,117,108,116, 99,111,110,102, 0,116,105,109,101,114,115, 0, + 42, 97,117,116,111,115, 97,118,101,116,105,109,101,114, 0, 42,103,104,111,115,116,119,105,110, 0,103,114, 97, 98, 99,117,114, +115,111,114, 0, 42,110,101,119,115, 99,114,101,101,110, 0,115, 99,114,101,101,110,110, 97,109,101, 91, 51, 50, 93, 0,112,111, +115,120, 0,112,111,115,121, 0,119,105,110,100,111,119,115,116, 97,116,101, 0,109,111,110,105,116,111,114, 0,108, 97,115,116, + 99,117,114,115,111,114, 0, 97,100,100,109,111,117,115,101,109,111,118,101, 0, 42,101,118,101,110,116,115,116, 97,116,101, 0, + 42, 99,117,114,115,119,105,110, 0, 42,116,119,101, 97,107, 0,100,114, 97,119,109,101,116,104,111,100, 0,100,114, 97,119,102, + 97,105,108, 0, 42,100,114, 97,119,100, 97,116, 97, 0,109,111,100, 97,108,104, 97,110,100,108,101,114,115, 0,115,117, 98,119, +105,110,100,111,119,115, 0,103,101,115,116,117,114,101, 0,105,100,110, 97,109,101, 91, 54, 52, 93, 0,112,114,111,112,118, 97, +108,117,101, 0,115,104,105,102,116, 0, 99,116,114,108, 0, 97,108,116, 0,111,115,107,101,121, 0,107,101,121,109,111,100,105, +102,105,101,114, 0,109, 97,112,116,121,112,101, 0, 42,112,116,114, 0,105,116,101,109,115, 0,115,112, 97, 99,101,105,100, 0, +114,101,103,105,111,110,105,100, 0,107,109,105, 95,105,100, 0, 40, 42,112,111,108,108, 41, 40, 41, 0, 42,109,111,100, 97,108, + 95,105,116,101,109,115, 0, 98, 97,115,101,110, 97,109,101, 91, 54, 52, 93, 0, 97, 99,116,107,101,121,109, 97,112, 0, 42, 99, +117,115,116,111,109,100, 97,116, 97, 0, 42,112,121, 95,105,110,115,116, 97,110, 99,101, 0, 42,114,101,112,111,114,116,115, 0, +109, 97, 99,114,111, 0, 42,111,112,109, 0, 42,101,100, 97,116, 97, 0,105,110,102,108,117,101,110, 99,101, 0, 42, 99,111,101, +102,102,105, 99,105,101,110,116,115, 0, 97,114,114, 97,121,115,105,122,101, 0,112,111,108,121, 95,111,114,100,101,114, 0, 97, +109,112,108,105,116,117,100,101, 0,112,104, 97,115,101, 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, 97,115,101, 95, +111,102,102,115,101,116, 0,118, 97,108,117,101, 95,111,102,102,115,101,116, 0,109,105,100,118, 97,108, 0, 98,101,102,111,114, +101, 95,109,111,100,101, 0, 97,102,116,101,114, 95,109,111,100,101, 0, 98,101,102,111,114,101, 95, 99,121, 99,108,101,115, 0, + 97,102,116,101,114, 95, 99,121, 99,108,101,115, 0,114,101, 99,116, 0,112,104, 97,115,101, 0,109,111,100,105,102,105, 99, 97, +116,105,111,110, 0,115,116,101,112, 95,115,105,122,101, 0, 42,114,110, 97, 95,112, 97,116,104, 0,112, 99,104, 97,110, 95,110, + 97,109,101, 91, 51, 50, 93, 0,116,114, 97,110,115, 67,104, 97,110, 0,105,100,116,121,112,101, 0,116, 97,114,103,101,116,115, + 91, 56, 93, 0,110,117,109, 95,116, 97,114,103,101,116,115, 0,118, 97,114,105, 97, 98,108,101,115, 0,101,120,112,114,101,115, +115,105,111,110, 91, 50, 53, 54, 93, 0, 42,101,120,112,114, 95, 99,111,109,112, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, + 0, 97,114,114, 97,121, 95,105,110,100,101,120, 0, 99,111,108,111,114, 95,109,111,100,101, 0, 99,111,108,111,114, 91, 51, 93, + 0,102,114,111,109, 91, 49, 50, 56, 93, 0,116,111, 91, 49, 50, 56, 93, 0,109, 97,112,112,105,110,103,115, 0,115,116,114,105, +112,115, 0, 42,114,101,109, 97,112, 0,102, 99,117,114,118,101,115, 0,115,116,114,105,112, 95,116,105,109,101, 0, 98,108,101, +110,100,109,111,100,101, 0,101,120,116,101,110,100,109,111,100,101, 0,103,114,111,117,112, 91, 54, 52, 93, 0,103,114,111,117, +112,109,111,100,101, 0,107,101,121,105,110,103,102,108, 97,103, 0,112, 97,116,104,115, 0,116,121,112,101,105,110,102,111, 91, + 54, 52, 93, 0, 97, 99,116,105,118,101, 95,112, 97,116,104, 0, 42,116,109,112, 97, 99,116, 0,110,108, 97, 95,116,114, 97, 99, +107,115, 0, 42, 97, 99,116,115,116,114,105,112, 0,100,114,105,118,101,114,115, 0,111,118,101,114,114,105,100,101,115, 0, 97, + 99,116, 95, 98,108,101,110,100,109,111,100,101, 0, 97, 99,116, 95,101,120,116,101,110,100,109,111,100,101, 0, 97, 99,116, 95, +105,110,102,108,117,101,110, 99,101, 0,114,117,108,101, 0,111,112,116,105,111,110,115, 0,102,101, 97,114, 95,102, 97, 99,116, +111,114, 0,115,105,103,110, 97,108, 95,105,100, 0,108,111,111,107, 95, 97,104,101, 97,100, 0,111,108,111, 99, 91, 51, 93, 0, +113,117,101,117,101, 95,115,105,122,101, 0,119, 97,110,100,101,114, 0,102,108,101,101, 95,100,105,115,116, 97,110, 99,101, 0, +104,101, 97,108,116,104, 0,115,116, 97,116,101, 95,105,100, 0,114,117,108,101,115, 0, 99,111,110,100,105,116,105,111,110,115, + 0, 97, 99,116,105,111,110,115, 0,114,117,108,101,115,101,116, 95,116,121,112,101, 0,114,117,108,101, 95,102,117,122,122,105, +110,101,115,115, 0,108, 97,115,116, 95,115,116, 97,116,101, 95,105,100, 0,108, 97,110,100,105,110,103, 95,115,109,111,111,116, +104,110,101,115,115, 0, 98, 97,110,107,105,110,103, 0, 97,103,103,114,101,115,115,105,111,110, 0, 97,105,114, 95,109,105,110, + 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, 99, + 0, 97,105,114, 95,109, 97,120, 95, 97,118,101, 0, 97,105,114, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0, +108, 97,110,100, 95,106,117,109,112, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95,115,112,101,101,100, 0,108, + 97,110,100, 95,109, 97,120, 95, 97, 99, 99, 0,108, 97,110,100, 95,109, 97,120, 95, 97,118,101, 0,108, 97,110,100, 95,112,101, +114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,115,116,105, 99,107, 95,102,111,114, 99,101, 0,115,116, + 97,116,101,115, 0, 42,115,109,100, 0, 42,102,108,117,105,100, 95,103,114,111,117,112, 0, 42, 99,111,108,108, 95,103,114,111, +117,112, 0, 42,119,116, 0, 42,116,101,120, 95,119,116, 0, 42,116,101,120, 95,115,104, 97,100,111,119, 0, 42,115,104, 97,100, +111,119, 0,112, 48, 91, 51, 93, 0,112, 49, 91, 51, 93, 0,100,120, 0,111,109,101,103, 97, 0,116,101,109,112, 65,109, 98, 0, + 98,101,116, 97, 0,114,101,115, 91, 51, 93, 0, 97,109,112,108,105,102,121, 0,109, 97,120,114,101,115, 0,118,105,101,119,115, +101,116,116,105,110,103,115, 0,110,111,105,115,101, 0,100,105,115,115, 95,112,101,114, 99,101,110,116, 0,100,105,115,115, 95, +115,112,101,101,100, 0,114,101,115, 95,119,116, 91, 51, 93, 0,100,120, 95,119,116, 0,118, 51,100,110,117,109, 0, 99, 97, 99, +104,101, 95, 99,111,109,112, 0, 99, 97, 99,104,101, 95,104,105,103,104, 95, 99,111,109,112, 0, 42,112,111,105,110,116, 95, 99, + 97, 99,104,101, 91, 50, 93, 0,112,116, 99, 97, 99,104,101,115, 91, 50, 93, 0,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, +118,103,114,112, 95,104,101, 97,116, 95,115, 99, 97,108,101, 91, 50, 93, 0,118,103,114,111,117,112, 95,102,108,111,119, 0,118, +103,114,111,117,112, 95,100,101,110,115,105,116,121, 0,118,103,114,111,117,112, 95,104,101, 97,116, 0, 42,112,111,105,110,116, +115, 95,111,108,100, 0, 42,118,101,108, 0,109, 97,116, 95,111,108,100, 91, 52, 93, 91, 52, 93, 0, 0, 0, 0, 84, 89, 80, 69, +211, 1, 0, 0, 99,104, 97,114, 0,117, 99,104, 97,114, 0,115,104,111,114,116, 0,117,115,104,111,114,116, 0,105,110,116, 0, 108,111,110,103, 0,117,108,111,110,103, 0,102,108,111, 97,116, 0,100,111,117, 98,108,101, 0,118,111,105,100, 0, 76,105,110, 107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76,105,115,116, 66, 97,115,101, 0,118,101, 99, 50,115, 0,118,101, 99, 50,102, 0, 118,101, 99, 50,105, 0,118,101, 99, 50,100, 0,118,101, 99, 51,105, 0,118,101, 99, 51,102, 0,118,101, 99, 51,100, 0,118,101, @@ -8870,774 +8924,772 @@ char datatoc_startup_blend[]= { 115,115, 97,103,101, 65, 99,116,117, 97,116,111,114, 0, 98, 71, 97,109,101, 65, 99,116,117, 97,116,111,114, 0, 98, 86,105,115, 105, 98,105,108,105,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 84,119,111, 68, 70,105,108,116,101,114, 65, 99,116,117, 97, 116,111,114, 0, 98, 80, 97,114,101,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83,116, 97,116,101, 65, 99,116,117, 97,116, -111,114, 0, 98, 65,114,109, 97,116,117,114,101, 65, 99,116,117, 97,116,111,114, 0, 70,114,101,101, 67, 97,109,101,114, 97, 0, - 83,112, 97, 99,101, 83,111,117,110,100, 0, 71,114,111,117,112, 79, 98,106,101, 99,116, 0, 66,111,110,101, 0, 98, 65,114,109, - 97,116,117,114,101, 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 86,101,114,116, 0, 98, 80,111,115,101, 67,104, 97,110,110, -101,108, 0, 71, 72, 97,115,104, 0, 98, 73, 75, 80, 97,114, 97,109, 0, 98, 73,116, 97,115, 99, 0, 98, 65, 99,116,105,111,110, - 71,114,111,117,112, 0, 83,112, 97, 99,101, 65, 99,116,105,111,110, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110,101,108, - 0, 98, 67,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 0, - 98, 67,111,110,115,116,114, 97,105,110,116, 84, 97,114,103,101,116, 0, 98, 80,121,116,104,111,110, 67,111,110,115,116,114, 97, -105,110,116, 0, 98, 75,105,110,101,109, 97,116,105, 99, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,112,108,105,110,101, - 73, 75, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97, 99,107, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, - 98, 82,111,116, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,105,107, -101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, - 98, 83, 97,109,101, 86,111,108,117,109,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115, 76,105,107,101, - 67,111,110,115,116,114, 97,105,110,116, 0, 98, 77,105,110, 77, 97,120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99, -116,105,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99,107, 84,114, 97, 99,107, 67,111,110,115,116,114, 97, -105,110,116, 0, 98, 68, 97,109,112, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, - 80, 97,116,104, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,116,114,101,116, 99,104, 84,111, 67,111,110,115,116,114, 97, -105,110,116, 0, 98, 82,105,103,105,100, 66,111,100,121, 74,111,105,110,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67, -108, 97,109,112, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,104,105,108,100, 79,102, 67,111,110,115,116,114, 97, -105,110,116, 0, 98, 84,114, 97,110,115,102,111,114,109, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 80,105,118,111,116, 67, -111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82, -111,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,109,105,116, 67,111,110,115, -116,114, 97,105,110,116, 0, 98, 68,105,115,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,104,114, -105,110,107,119,114, 97,112, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 77,111,100,105,102,105,101, -114, 0, 98, 65, 99,116,105,111,110, 83,116,114,105,112, 0, 98, 78,111,100,101, 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83, -111, 99,107,101,116, 0, 98, 78,111,100,101, 76,105,110,107, 0, 98, 78,111,100,101, 0, 98, 78,111,100,101, 80,114,101,118,105, -101,119, 0,117,105, 66,108,111, 99,107, 0, 98, 78,111,100,101, 84,121,112,101, 0, 78,111,100,101, 73,109, 97,103,101, 65,110, -105,109, 0, 78,111,100,101, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111, -100,101, 66,105,108, 97,116,101,114, 97,108, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 72,117,101, 83, 97,116, 0, 78, -111,100,101, 73,109, 97,103,101, 70,105,108,101, 0, 78,111,100,101, 67,104,114,111,109, 97, 0, 78,111,100,101, 84,119,111, 88, - 89,115, 0, 78,111,100,101, 84,119,111, 70,108,111, 97,116,115, 0, 78,111,100,101, 71,101,111,109,101,116,114,121, 0, 78,111, -100,101, 86,101,114,116,101,120, 67,111,108, 0, 78,111,100,101, 68,101,102,111, 99,117,115, 0, 78,111,100,101, 83, 99,114,105, -112,116, 68,105, 99,116, 0, 78,111,100,101, 71,108, 97,114,101, 0, 78,111,100,101, 84,111,110,101,109, 97,112, 0, 78,111,100, -101, 76,101,110,115, 68,105,115,116, 0, 78,111,100,101, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 78,111,100,101, 67, -111,108,111,114,115,112,105,108,108, 0, 84,101,120, 78,111,100,101, 79,117,116,112,117,116, 0, 67,117,114,118,101, 77, 97,112, - 80,111,105,110,116, 0, 67,117,114,118,101, 77, 97,112, 0, 66,114,117,115,104, 67,108,111,110,101, 0, 67,117,115,116,111,109, - 68, 97,116, 97, 76, 97,121,101,114, 0, 67,117,115,116,111,109, 68, 97,116, 97, 69,120,116,101,114,110, 97,108, 0, 72, 97,105, -114, 75,101,121, 0, 80, 97,114,116,105, 99,108,101, 75,101,121, 0, 66,111,105,100, 80, 97,114,116,105, 99,108,101, 0, 66,111, -105,100, 68, 97,116, 97, 0, 67,104,105,108,100, 80, 97,114,116,105, 99,108,101, 0, 80, 97,114,116,105, 99,108,101, 84, 97,114, -103,101,116, 0, 80, 97,114,116,105, 99,108,101, 68,117,112,108,105, 87,101,105,103,104,116, 0, 80, 97,114,116,105, 99,108,101, - 68, 97,116, 97, 0, 83, 80, 72, 70,108,117,105,100, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 83,101, -116,116,105,110,103,115, 0, 66,111,105,100, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 67, 97, 99,104, -101, 75,101,121, 0, 75, 68, 84,114,101,101, 0, 80, 97,114,116,105, 99,108,101, 68,114, 97,119, 68, 97,116, 97, 0, 76,105,110, -107, 78,111,100,101, 0, 98, 71, 80, 68,115,112,111,105,110,116, 0, 98, 71, 80, 68,115,116,114,111,107,101, 0, 98, 71, 80, 68, -102,114, 97,109,101, 0, 98, 71, 80, 68,108, 97,121,101,114, 0, 82,101,112,111,114,116, 0, 82,101,112,111,114,116, 76,105,115, -116, 0, 82,101,112,111,114,116, 84,105,109,101,114, 73,110,102,111, 0,119,109, 87,105,110,100,111,119, 77, 97,110, 97,103,101, -114, 0,119,109, 87,105,110,100,111,119, 0,119,109, 75,101,121, 67,111,110,102,105,103, 0,119,109, 69,118,101,110,116, 0,119, -109, 83,117, 98, 87,105,110,100,111,119, 0,119,109, 71,101,115,116,117,114,101, 0,119,109, 75,101,121, 77, 97,112, 73,116,101, -109, 0, 80,111,105,110,116,101,114, 82, 78, 65, 0,119,109, 75,101,121, 77, 97,112, 0,119,109, 79,112,101,114, 97,116,111,114, - 84,121,112,101, 0, 70, 77,111,100,105,102,105,101,114, 0, 70, 77,111,100, 95, 71,101,110,101,114, 97,116,111,114, 0, 70, 77, -111,100, 95, 70,117,110, 99,116,105,111,110, 71,101,110,101,114, 97,116,111,114, 0, 70, 67, 77, 95, 69,110,118,101,108,111,112, -101, 68, 97,116, 97, 0, 70, 77,111,100, 95, 69,110,118,101,108,111,112,101, 0, 70, 77,111,100, 95, 67,121, 99,108,101,115, 0, - 70, 77,111,100, 95, 80,121,116,104,111,110, 0, 70, 77,111,100, 95, 76,105,109,105,116,115, 0, 70, 77,111,100, 95, 78,111,105, -115,101, 0, 70, 77,111,100, 95, 83,116,101,112,112,101,100, 0, 68,114,105,118,101,114, 84, 97,114,103,101,116, 0, 68,114,105, -118,101,114, 86, 97,114, 0, 67,104, 97,110,110,101,108, 68,114,105,118,101,114, 0, 70, 80,111,105,110,116, 0, 70, 67,117,114, -118,101, 0, 65,110,105,109, 77, 97,112, 80, 97,105,114, 0, 65,110,105,109, 77, 97,112,112,101,114, 0, 78,108, 97, 83,116,114, -105,112, 0, 78,108, 97, 84,114, 97, 99,107, 0, 75, 83, 95, 80, 97,116,104, 0, 75,101,121,105,110,103, 83,101,116, 0, 65,110, -105,109, 79,118,101,114,114,105,100,101, 0, 73,100, 65,100,116, 84,101,109,112,108, 97,116,101, 0, 66,111,105,100, 82,117,108, -101, 0, 66,111,105,100, 82,117,108,101, 71,111, 97,108, 65,118,111,105,100, 0, 66,111,105,100, 82,117,108,101, 65,118,111,105, -100, 67,111,108,108,105,115,105,111,110, 0, 66,111,105,100, 82,117,108,101, 70,111,108,108,111,119, 76,101, 97,100,101,114, 0, - 66,111,105,100, 82,117,108,101, 65,118,101,114, 97,103,101, 83,112,101,101,100, 0, 66,111,105,100, 82,117,108,101, 70,105,103, -104,116, 0, 66,111,105,100, 83,116, 97,116,101, 0, 70, 76, 85, 73, 68, 95, 51, 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, - 69, 0, 0, 0, 84, 76, 69, 78, 1, 0, 1, 0, 2, 0, 2, 0, 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 0, 0, 8, 0, 12, 0, - 8, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, 12, 0, 24, 0, 16, 0, 16, 0, 32, 0, 16, 0, 16, 0, 20, 0, 76, 0, 52, 0, - 40, 2, 0, 0, 32, 0,140, 0,220, 3, 92, 0, 36, 0, 56, 0, 84, 0,112, 0,124, 0, 56, 0, 24, 0, 40, 0,120, 0, 12, 0, -104, 0, 36, 0,120, 5,156, 1, 0, 0, 0, 0, 0, 0, 8, 1, 48, 1, 84, 1, 24, 0, 8, 3,168, 0, 0, 0, 72, 0, 32, 1, -152, 0,132, 0,108, 1, 16, 1, 56, 0, 88, 0,160, 2, 76, 0, 60, 1, 0, 0,108, 0,104, 0,148, 0, 56, 0, 8, 0, 16, 0, - 92, 1, 0, 0, 0, 0, 0, 0, 40, 1, 20, 0, 44, 0, 60, 0, 24, 0, 12, 0, 12, 0, 4, 0, 8, 0, 8, 0, 0, 0, 28, 0, - 84, 0, 32, 0, 8, 0, 12, 0, 8, 0, 8, 0, 4, 0, 4, 0, 0, 1, 32, 0, 12, 0, 16, 0, 64, 0, 24, 0, 12, 0, 40, 0, - 64, 0, 80, 0,100, 0,108, 0, 80, 0,108, 0,128, 0, 76, 0, 72, 0,120, 0, 72, 0, 84, 0,188, 0, 48, 0,168, 0,160, 0, -172, 0, 72, 0,104, 0,116, 0,196, 0,112, 0,224, 0, 64, 0, 92, 0, 0, 0,144, 0, 32, 0,240, 1,112, 0, 0, 0, 88, 0, - 0, 0, 0, 0, 76, 0, 8, 0, 8, 0,244, 0, 88, 0,124, 1, 84, 0, 76, 0, 72, 0, 72, 0,176, 1,120, 0,116, 0, 64, 0, -120, 0, 92, 0,220, 0, 40, 0, 0, 0, 92, 0,148, 0, 72, 0, 48, 0, 20, 0,120, 0,144, 0, 88, 1,208, 0,180, 0, 0, 0, - 68, 0, 92, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,120, 1, 28, 0,176, 0,144, 0, 64, 0, 60, 0, 24, 0, 72, 0,232, 3, - 56, 0, 20, 0, 16, 0,100, 0, 84, 0, 24, 0,196, 2, 44, 0, 16, 0,156, 0, 80, 0, 96, 0, 44, 0,144, 1, 32, 0, 8, 0, - 24, 0, 56, 2, 0, 0, 0, 0, 72, 0, 72, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 0, 40, 0,140, 0, 48, 0,140, 0, -208, 0, 24, 0,216, 0,216, 0,200, 1, 60, 0, 0, 0,120, 0, 0, 0,252, 0, 12, 0, 12, 0, 24, 33,112, 16, 24, 16,192, 0, -124, 2, 80, 2, 40, 0, 36, 0,188, 0,244, 0, 52, 0,140, 2, 28, 0,112, 1, 88, 0, 16, 1, 32, 0,224, 0, 32, 0, 32, 0, -112, 2,104, 1, 16, 0, 48, 29, 72, 0, 56, 0,248, 12, 20, 0, 24, 0, 64, 1, 0, 0, 0, 0, 96, 0, 0, 0,248, 0, 0, 0, - 16, 1, 80, 0, 28, 0, 16, 0, 8, 0, 44, 0,252, 0,240, 0,168, 1,216, 0, 92, 1, 16, 0, 12, 0, 24, 0, 52, 0, 16, 0, - 20, 0, 16, 0, 24, 0, 56, 1, 0, 0, 56, 0, 52, 0, 48, 0, 8, 0, 44, 0, 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, - 40, 0,108, 0, 72, 0, 68, 0, 76, 0, 80, 0, 60, 0,128, 0, 76, 0, 60, 0, 12, 0, 92, 0, 68, 0, 32, 0, 80, 0, 16, 0, - 76, 0,108, 0, 84, 0, 28, 0, 96, 0, 56, 0, 56, 0,108, 0,140, 0, 4, 0, 20, 0, 12, 0, 8, 0, 80, 0, 40, 0,188, 0, - 24, 0, 16, 1,144, 0, 16, 0,204, 1, 0, 0, 4, 0, 40, 0,104, 0,216, 0, 64, 0, 44, 0, 72, 0,116, 0, 60, 0,112, 0, - 16, 0, 52, 0, 44, 0, 44, 0, 44, 0, 8, 0, 36, 0, 68, 0, 64, 0, 44, 0, 44, 0, 20, 0, 52, 0, 96, 0, 12, 0,108, 0, - 92, 0, 52, 0, 28, 0, 28, 0, 28, 0, 52, 0, 20, 0, 60, 0,140, 0, 36, 0,120, 0, 32, 0,180, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, 44, 0, 8, 0, 8, 0, 64, 0, 32, 0, 24, 0, 8, 0, 24, 0, 32, 0, 8, 0, - 84, 0, 20, 0, 32, 0, 12, 0, 44, 0, 20, 0, 68, 0,240, 0, 24, 0, 56, 0, 52, 0, 20, 0, 64, 0, 28, 0, 20, 0,180, 0, - 36, 0,200, 1, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 20, 0, 24, 0,172, 0, 24, 0, 28, 0, 20, 0,168, 0,148, 0, -152, 0, 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 96, 0, 0, 0, 88, 0, 20, 0, 24, 0, 16, 0, 20, 0, 8, 0, 8, 0, 24, 0, - 20, 0, 20, 0, 48, 0,208, 1, 28, 1, 16, 0, 68, 0, 0, 1, 20, 0,160, 0, 88, 0, 96, 0,152, 0, 20, 0, 56, 0, 48, 0, - 68, 0, 56, 0, 92, 0, 64, 0, 56, 0, 96, 0, 0, 0, 0, 0, 83, 84, 82, 67,153, 1, 0, 0, 10, 0, 2, 0, 10, 0, 0, 0, - 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0, 11, 0, 1, 0, 9, 0, 2, 0, 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4, 0, - 13, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0, 14, 0, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0, 15, 0, 2, 0, 4, 0, 5, 0, - 4, 0, 6, 0, 16, 0, 2, 0, 8, 0, 5, 0, 8, 0, 6, 0, 17, 0, 3, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, - 18, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 19, 0, 3, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, - 20, 0, 4, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 4, 0, 8, 0, 21, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, - 7, 0, 7, 0, 7, 0, 8, 0, 22, 0, 4, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 8, 0, 8, 0, 23, 0, 4, 0, - 4, 0, 9, 0, 4, 0, 10, 0, 4, 0, 11, 0, 4, 0, 12, 0, 24, 0, 4, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, - 7, 0, 12, 0, 25, 0, 4, 0, 9, 0, 13, 0, 12, 0, 14, 0, 4, 0, 15, 0, 4, 0, 16, 0, 26, 0, 10, 0, 26, 0, 0, 0, - 26, 0, 1, 0, 0, 0, 17, 0, 0, 0, 18, 0, 2, 0, 19, 0, 0, 0, 20, 0, 4, 0, 21, 0, 25, 0, 22, 0, 4, 0, 23, 0, - 4, 0, 24, 0, 27, 0, 9, 0, 9, 0, 0, 0, 9, 0, 1, 0, 27, 0, 25, 0, 28, 0, 26, 0, 0, 0, 27, 0, 2, 0, 28, 0, - 2, 0, 19, 0, 4, 0, 29, 0, 26, 0, 30, 0, 28, 0, 8, 0, 27, 0, 31, 0, 27, 0, 32, 0, 29, 0, 33, 0, 0, 0, 34, 0, - 0, 0, 35, 0, 4, 0, 36, 0, 4, 0, 37, 0, 28, 0, 38, 0, 30, 0, 5, 0, 4, 0, 39, 0, 4, 0, 40, 0, 2, 0, 41, 0, - 2, 0, 42, 0, 4, 0, 43, 0, 31, 0, 6, 0, 32, 0, 44, 0, 2, 0, 45, 0, 2, 0, 46, 0, 2, 0, 17, 0, 2, 0, 19, 0, - 0, 0, 47, 0, 33, 0, 21, 0, 33, 0, 0, 0, 33, 0, 1, 0, 34, 0, 48, 0, 35, 0, 49, 0, 24, 0, 50, 0, 24, 0, 51, 0, - 2, 0, 45, 0, 2, 0, 46, 0, 2, 0, 52, 0, 2, 0, 53, 0, 2, 0, 54, 0, 2, 0, 55, 0, 2, 0, 19, 0, 2, 0, 56, 0, - 7, 0, 11, 0, 7, 0, 12, 0, 4, 0, 57, 0, 7, 0, 58, 0, 7, 0, 59, 0, 7, 0, 60, 0, 31, 0, 61, 0, 36, 0, 7, 0, - 27, 0, 31, 0, 12, 0, 62, 0, 24, 0, 63, 0, 2, 0, 45, 0, 2, 0, 64, 0, 2, 0, 65, 0, 2, 0, 37, 0, 37, 0, 16, 0, - 37, 0, 0, 0, 37, 0, 1, 0, 7, 0, 66, 0, 7, 0, 60, 0, 2, 0, 17, 0, 2, 0, 46, 0, 2, 0, 67, 0, 2, 0, 19, 0, - 4, 0, 68, 0, 4, 0, 69, 0, 9, 0, 2, 0, 7, 0, 70, 0, 0, 0, 20, 0, 0, 0, 71, 0, 7, 0, 72, 0, 7, 0, 73, 0, - 38, 0, 13, 0, 27, 0, 31, 0, 39, 0, 74, 0, 37, 0, 75, 0, 0, 0, 76, 0, 4, 0, 77, 0, 7, 0, 60, 0, 12, 0, 78, 0, - 36, 0, 79, 0, 27, 0, 80, 0, 2, 0, 17, 0, 2, 0, 81, 0, 2, 0, 82, 0, 2, 0, 19, 0, 40, 0, 6, 0, 40, 0, 0, 0, - 40, 0, 1, 0, 0, 0, 83, 0, 0, 0, 84, 0, 4, 0, 23, 0, 4, 0, 85, 0, 41, 0, 10, 0, 41, 0, 0, 0, 41, 0, 1, 0, - 4, 0, 86, 0, 4, 0, 87, 0, 4, 0, 88, 0, 4, 0, 89, 0, 4, 0, 14, 0, 4, 0, 90, 0, 0, 0, 91, 0, 0, 0, 92, 0, - 42, 0, 15, 0, 27, 0, 31, 0, 0, 0, 93, 0, 4, 0, 90, 0, 4, 0, 94, 0, 12, 0, 95, 0, 40, 0, 96, 0, 40, 0, 97, 0, - 4, 0, 98, 0, 4, 0, 99, 0, 12, 0,100, 0, 0, 0,101, 0, 4, 0,102, 0, 4, 0,103, 0, 9, 0,104, 0, 8, 0,105, 0, - 43, 0, 3, 0, 4, 0,106, 0, 4, 0,107, 0, 9, 0, 2, 0, 44, 0, 15, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 7, 0,108, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0,111, 0, 7, 0,112, 0, 7, 0,113, 0, 7, 0,114, 0, - 7, 0,115, 0, 7, 0,116, 0, 36, 0, 79, 0, 32, 0,117, 0, 45, 0, 13, 0, 4, 0,118, 0, 4, 0,119, 0, 4, 0,120, 0, - 4, 0,121, 0, 2, 0,122, 0, 2, 0,123, 0, 2, 0, 19, 0, 2, 0,124, 0, 2, 0,125, 0, 2, 0,126, 0, 2, 0,127, 0, - 2, 0,128, 0, 46, 0,129, 0, 47, 0, 32, 0, 27, 0, 31, 0, 0, 0, 34, 0, 12, 0,130, 0, 48, 0,131, 0, 49, 0,132, 0, - 50, 0,133, 0, 50, 0,134, 0, 2, 0,135, 0, 2, 0,136, 0, 2, 0,124, 0, 2, 0, 19, 0, 2, 0,137, 0, 2, 0, 17, 0, - 4, 0,138, 0, 2, 0,139, 0, 2, 0,140, 0, 2, 0,141, 0, 2, 0,142, 0, 2, 0,143, 0, 2, 0,144, 0, 4, 0,145, 0, - 4, 0,146, 0, 43, 0,147, 0, 30, 0,148, 0, 7, 0,149, 0, 4, 0,150, 0, 2, 0,151, 0, 2, 0,152, 0, 2, 0,153, 0, - 2, 0,154, 0, 7, 0,155, 0, 7, 0,156, 0, 51, 0, 63, 0, 2, 0,157, 0, 2, 0,158, 0, 2, 0,159, 0, 2, 0,160, 0, - 32, 0,161, 0, 52, 0,162, 0, 0, 0,163, 0, 0, 0,164, 0, 0, 0,165, 0, 0, 0,166, 0, 0, 0,167, 0, 7, 0,168, 0, - 7, 0,169, 0, 7, 0,170, 0, 2, 0,171, 0, 2, 0,172, 0, 2, 0,173, 0, 2, 0,174, 0, 2, 0,175, 0, 2, 0,176, 0, - 0, 0,177, 0, 0, 0,178, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0, 56, 0, - 7, 0,184, 0, 7, 0,185, 0, 7, 0,186, 0, 7, 0,187, 0, 7, 0,188, 0, 7, 0,189, 0, 7, 0,190, 0, 7, 0,191, 0, - 7, 0,192, 0, 7, 0,193, 0, 7, 0,194, 0, 7, 0,195, 0, 7, 0,196, 0, 7, 0,197, 0, 7, 0,198, 0, 7, 0,199, 0, - 7, 0,200, 0, 7, 0,201, 0, 7, 0,202, 0, 7, 0,203, 0, 7, 0,204, 0, 7, 0,205, 0, 7, 0,206, 0, 7, 0,207, 0, - 7, 0,208, 0, 7, 0,209, 0, 7, 0,210, 0, 7, 0,211, 0, 7, 0,212, 0, 7, 0,213, 0, 7, 0,214, 0, 7, 0,215, 0, - 7, 0,216, 0, 7, 0,217, 0, 7, 0,218, 0, 53, 0, 15, 0, 0, 0,219, 0, 9, 0,220, 0, 0, 0,221, 0, 0, 0,222, 0, - 4, 0,223, 0, 4, 0,224, 0, 9, 0,225, 0, 7, 0,226, 0, 7, 0,227, 0, 7, 0,228, 0, 4, 0,229, 0, 9, 0,230, 0, - 9, 0,231, 0, 4, 0,232, 0, 4, 0, 37, 0, 54, 0, 6, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,233, 0, - 7, 0, 66, 0, 4, 0, 63, 0, 55, 0, 5, 0, 2, 0, 19, 0, 2, 0, 36, 0, 2, 0, 63, 0, 2, 0,234, 0, 54, 0,228, 0, - 56, 0, 17, 0, 32, 0,161, 0, 47, 0,235, 0, 57, 0,236, 0, 7, 0,237, 0, 7, 0,238, 0, 2, 0, 17, 0, 2, 0,239, 0, - 7, 0,109, 0, 7, 0,110, 0, 7, 0,240, 0, 4, 0,241, 0, 2, 0,242, 0, 2, 0,243, 0, 4, 0,124, 0, 4, 0,138, 0, - 2, 0,244, 0, 2, 0,245, 0, 58, 0, 22, 0, 2, 0, 19, 0, 2, 0,246, 0, 7, 0,247, 0, 7, 0,248, 0, 2, 0,137, 0, - 2, 0,249, 0, 4, 0,250, 0, 4, 0,251, 0, 32, 0,161, 0, 4, 0,252, 0, 2, 0,253, 0, 2, 0,254, 0, 9, 0,255, 0, - 7, 0, 0, 1, 7, 0, 1, 1, 2, 0, 2, 1, 2, 0, 3, 1, 2, 0, 4, 1, 2, 0, 5, 1, 7, 0, 6, 1, 7, 0, 7, 1, - 55, 0, 8, 1, 59, 0, 13, 0, 4, 0, 9, 1, 4, 0, 10, 1, 2, 0, 11, 1, 2, 0, 19, 0, 2, 0, 12, 1, 2, 0, 13, 1, - 32, 0,161, 0, 7, 0, 14, 1, 4, 0, 15, 1, 0, 0, 16, 1, 7, 0, 17, 1, 4, 0, 18, 1, 4, 0,124, 0, 52, 0, 63, 0, - 27, 0, 31, 0, 39, 0, 74, 0, 7, 0, 19, 1, 7, 0, 20, 1, 7, 0, 21, 1, 7, 0, 22, 1, 7, 0, 23, 1, 7, 0, 24, 1, - 7, 0, 25, 1, 7, 0, 26, 1, 7, 0, 27, 1, 7, 0, 69, 0, 7, 0, 28, 1, 7, 0, 29, 1, 7, 0, 30, 1, 7, 0, 31, 1, - 7, 0, 32, 1, 7, 0, 33, 1, 7, 0, 34, 1, 7, 0, 35, 1, 7, 0, 36, 1, 7, 0, 37, 1, 7, 0, 38, 1, 7, 0, 39, 1, - 2, 0, 40, 1, 2, 0, 41, 1, 2, 0, 42, 1, 2, 0, 43, 1, 2, 0, 44, 1, 2, 0, 45, 1, 2, 0, 46, 1, 2, 0, 19, 0, - 2, 0, 17, 0, 2, 0,239, 0, 7, 0, 47, 1, 7, 0, 48, 1, 7, 0, 49, 1, 7, 0, 50, 1, 4, 0, 51, 1, 4, 0, 52, 1, - 2, 0, 53, 1, 2, 0, 54, 1, 2, 0, 12, 1, 2, 0,122, 0, 4, 0, 23, 0, 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, - 7, 0, 55, 1, 7, 0, 56, 1, 7, 0, 89, 0, 45, 0, 57, 1, 60, 0, 58, 1, 36, 0, 79, 0, 47, 0,235, 0, 53, 0, 59, 1, - 55, 0, 8, 1, 56, 0, 60, 1, 30, 0,148, 0, 58, 0, 61, 1, 59, 0, 62, 1, 0, 0, 63, 1, 0, 0,178, 0, 61, 0, 8, 0, - 7, 0, 64, 1, 7, 0, 65, 1, 7, 0,169, 0, 4, 0, 19, 0, 7, 0, 66, 1, 7, 0, 67, 1, 7, 0, 68, 1, 32, 0, 44, 0, - 62, 0, 72, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 69, 1, 2, 0,172, 0, 2, 0, 70, 1, - 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,182, 0, 7, 0, 71, 1, 7, 0, 72, 1, 7, 0, 73, 1, 7, 0, 74, 1, - 7, 0, 75, 1, 7, 0, 76, 1, 7, 0, 77, 1, 7, 0, 78, 1, 7, 0, 79, 1, 7, 0, 80, 1, 7, 0, 81, 1, 63, 0, 82, 1, - 2, 0,246, 0, 2, 0, 69, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0, 83, 1, 7, 0, 84, 1, 7, 0, 85, 1, 7, 0, 86, 1, - 7, 0, 87, 1, 2, 0, 88, 1, 2, 0, 89, 1, 2, 0, 90, 1, 2, 0, 91, 1, 0, 0, 92, 1, 0, 0, 93, 1, 2, 0, 94, 1, - 2, 0, 95, 1, 2, 0, 96, 1, 2, 0, 97, 1, 2, 0, 98, 1, 7, 0, 99, 1, 7, 0,100, 1, 7, 0,101, 1, 7, 0,102, 1, - 2, 0,103, 1, 2, 0, 89, 0, 2, 0,104, 1, 2, 0,105, 1, 2, 0,106, 1, 2, 0,107, 1, 7, 0,108, 1, 7, 0,109, 1, - 7, 0,110, 1, 7, 0,111, 1, 7, 0,112, 1, 7, 0,113, 1, 7, 0,114, 1, 7, 0,115, 1, 7, 0,116, 1, 7, 0,117, 1, - 7, 0,118, 1, 7, 0,119, 1, 2, 0,120, 1, 0, 0,121, 1, 36, 0, 79, 0, 51, 0,122, 1, 2, 0,123, 1, 0, 0,124, 1, - 30, 0,148, 0, 64, 0, 2, 0, 27, 0, 31, 0, 36, 0, 79, 0, 65, 0, 18, 0, 7, 0,125, 1, 7, 0,126, 1, 7, 0,127, 1, - 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, 7, 0,131, 1, 7, 0,132, 1, 7, 0,133, 1, 7, 0,134, 1, 2, 0,135, 1, - 2, 0,136, 1, 2, 0,137, 1, 2, 0,138, 1, 7, 0,139, 1, 7, 0,140, 1, 7, 0,141, 1, 7, 0,142, 1, 66, 0,124, 0, - 27, 0, 31, 0, 39, 0, 74, 0, 2, 0,143, 1, 2, 0, 19, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,144, 1, - 7, 0,145, 1, 7, 0,146, 1, 7, 0,147, 1, 7, 0,148, 1, 7, 0,149, 1, 7, 0,150, 1, 7, 0,151, 1, 7, 0,152, 1, - 7, 0,153, 1, 7, 0,154, 1, 7, 0,155, 1, 7, 0,156, 1, 7, 0,157, 1, 7, 0,158, 1, 7, 0,159, 1, 7, 0,160, 1, - 7, 0,161, 1, 7, 0,162, 1, 7, 0,163, 1, 65, 0,164, 1, 7, 0,165, 1, 7, 0,166, 1, 7, 0,167, 1, 7, 0,168, 1, - 7, 0,169, 1, 7, 0,170, 1, 7, 0,171, 1, 2, 0,172, 1, 2, 0,173, 1, 2, 0,174, 1, 0, 0,175, 1, 0, 0,176, 1, - 7, 0,177, 1, 7, 0,178, 1, 2, 0,179, 1, 2, 0,180, 1, 7, 0,181, 1, 7, 0,182, 1, 7, 0,183, 1, 7, 0,184, 1, - 2, 0,185, 1, 2, 0,186, 1, 4, 0, 69, 1, 4, 0,187, 1, 2, 0,188, 1, 2, 0,189, 1, 2, 0,190, 1, 2, 0,191, 1, - 7, 0,192, 1, 7, 0,193, 1, 7, 0,194, 1, 7, 0,195, 1, 7, 0,196, 1, 7, 0,197, 1, 7, 0,198, 1, 7, 0,199, 1, - 7, 0,200, 1, 7, 0,201, 1, 0, 0,202, 1, 7, 0,203, 1, 7, 0,204, 1, 7, 0,205, 1, 4, 0,206, 1, 0, 0,207, 1, - 0, 0,104, 1, 0, 0,208, 1, 0, 0, 63, 1, 2, 0,209, 1, 2, 0,210, 1, 2, 0,123, 1, 2, 0,211, 1, 2, 0,212, 1, - 2, 0,213, 1, 7, 0,214, 1, 7, 0,215, 1, 7, 0,216, 1, 7, 0,217, 1, 7, 0,218, 1, 2, 0,157, 0, 2, 0,158, 0, - 55, 0,219, 1, 55, 0,220, 1, 0, 0,221, 1, 0, 0,222, 1, 0, 0,223, 1, 0, 0,224, 1, 2, 0,225, 1, 2, 0,226, 1, - 7, 0,227, 1, 7, 0,228, 1, 51, 0,122, 1, 60, 0, 58, 1, 36, 0, 79, 0, 67, 0,229, 1, 30, 0,148, 0, 7, 0,230, 1, - 7, 0,231, 1, 7, 0,232, 1, 7, 0,233, 1, 7, 0,234, 1, 2, 0,235, 1, 2, 0, 69, 0, 7, 0,236, 1, 7, 0,237, 1, - 7, 0,238, 1, 7, 0,239, 1, 7, 0,240, 1, 7, 0,241, 1, 7, 0,242, 1, 7, 0,243, 1, 7, 0,244, 1, 2, 0,245, 1, - 2, 0,246, 1, 4, 0,247, 1, 4, 0,248, 1, 12, 0,249, 1, 68, 0, 4, 0, 27, 0, 31, 0, 0, 0,250, 1, 69, 0, 2, 0, - 43, 0,147, 0, 70, 0, 26, 0, 70, 0, 0, 0, 70, 0, 1, 0, 71, 0,251, 1, 4, 0,252, 1, 4, 0,253, 1, 4, 0,254, 1, - 4, 0,255, 1, 4, 0, 0, 2, 4, 0, 1, 2, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 2, 2, 2, 0, 3, 2, 7, 0, 5, 0, - 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 4, 2, 7, 0, 5, 2, 7, 0, 6, 2, 7, 0, 7, 2, 7, 0, 8, 2, 7, 0, 9, 2, - 7, 0, 10, 2, 7, 0, 23, 0, 7, 0, 11, 2, 7, 0, 12, 2, 72, 0, 20, 0, 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, - 12, 0, 13, 2, 12, 0, 14, 2, 12, 0, 15, 2, 36, 0, 79, 0, 66, 0, 16, 2, 0, 0, 19, 0, 0, 0, 17, 2, 2, 0, 18, 2, - 2, 0,171, 0, 2, 0, 37, 0, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 7, 0, 19, 2, 7, 0, 20, 2, 7, 0, 21, 2, - 70, 0, 22, 2, 35, 0, 11, 0, 7, 0, 23, 2, 7, 0, 24, 2, 7, 0, 25, 2, 7, 0,248, 0, 2, 0, 54, 0, 0, 0, 26, 2, - 0, 0, 27, 2, 0, 0, 28, 2, 0, 0, 29, 2, 0, 0, 30, 2, 0, 0, 31, 2, 34, 0, 7, 0, 7, 0, 32, 2, 7, 0, 24, 2, - 7, 0, 25, 2, 2, 0, 28, 2, 2, 0, 31, 2, 7, 0,248, 0, 7, 0, 37, 0, 73, 0, 21, 0, 73, 0, 0, 0, 73, 0, 1, 0, - 2, 0, 17, 0, 2, 0, 33, 2, 2, 0, 31, 2, 2, 0, 19, 0, 2, 0, 34, 2, 2, 0, 35, 2, 2, 0, 36, 2, 2, 0, 37, 2, - 2, 0, 38, 2, 2, 0, 39, 2, 2, 0, 40, 2, 2, 0, 41, 2, 7, 0, 42, 2, 7, 0, 43, 2, 34, 0, 48, 0, 35, 0, 49, 0, - 2, 0, 44, 2, 2, 0, 45, 2, 4, 0, 46, 2, 74, 0, 5, 0, 2, 0, 47, 2, 2, 0, 33, 2, 0, 0, 19, 0, 0, 0, 37, 0, - 2, 0, 69, 0, 75, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 8, 0, 7, 0, 48, 2, 76, 0, 68, 0, 27, 0, 31, 0, - 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 49, 2, 12, 0, 14, 2, 12, 0, 50, 2, 32, 0, 51, 2, 32, 0, 52, 2, 32, 0, 53, 2, - 36, 0, 79, 0, 77, 0, 54, 2, 38, 0, 55, 2, 66, 0, 16, 2, 12, 0, 56, 2, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, - 2, 0,171, 0, 2, 0, 89, 0, 2, 0, 57, 2, 2, 0, 58, 2, 2, 0, 59, 2, 7, 0, 60, 2, 7, 0, 61, 2, 2, 0, 62, 2, - 2, 0, 18, 2, 2, 0, 19, 0, 2, 0, 63, 2, 7, 0, 64, 2, 7, 0, 65, 2, 7, 0, 66, 2, 2, 0, 36, 2, 2, 0, 37, 2, - 2, 0, 67, 2, 2, 0, 68, 2, 4, 0, 69, 2, 9, 0, 70, 2, 2, 0, 23, 0, 2, 0, 95, 0, 2, 0, 66, 0, 2, 0, 71, 2, - 7, 0, 72, 2, 7, 0, 73, 2, 7, 0, 74, 2, 7, 0, 75, 2, 7, 0, 76, 2, 7, 0, 77, 2, 7, 0, 78, 2, 7, 0, 79, 2, - 7, 0, 80, 2, 7, 0, 81, 2, 0, 0, 82, 2, 78, 0, 83, 2, 79, 0, 84, 2, 0, 0, 85, 2, 68, 0, 86, 2, 68, 0, 87, 2, - 68, 0, 88, 2, 68, 0, 89, 2, 4, 0, 90, 2, 7, 0, 91, 2, 4, 0, 92, 2, 4, 0, 93, 2, 75, 0, 94, 2, 4, 0, 95, 2, - 4, 0, 96, 2, 74, 0, 97, 2, 74, 0, 98, 2, 80, 0, 41, 0, 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 99, 2, - 36, 0, 79, 0, 38, 0, 55, 2, 66, 0, 16, 2, 81, 0,100, 2, 82, 0,101, 2, 83, 0,102, 2, 84, 0,103, 2, 85, 0,104, 2, - 86, 0,105, 2, 87, 0,106, 2, 88, 0,107, 2, 80, 0,108, 2, 89, 0,109, 2, 90, 0,110, 2, 91, 0,111, 2, 91, 0,112, 2, - 91, 0,113, 2, 4, 0, 53, 0, 4, 0,114, 2, 4, 0,115, 2, 4, 0,116, 2, 4, 0,117, 2, 2, 0,171, 0, 2, 0,118, 2, - 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 7, 0,119, 2, 4, 0, 57, 2, 2, 0,120, 2, 2, 0, 19, 0, 2, 0,121, 2, - 2, 0,122, 2, 2, 0, 18, 2, 2, 0,123, 2, 92, 0,124, 2, 93, 0,125, 2, 83, 0, 8, 0, 9, 0,126, 2, 7, 0,127, 2, - 4, 0,128, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, 2, 0,130, 2, 2, 0,131, 2, 81, 0, 7, 0, 4, 0,132, 2, - 4, 0,133, 2, 4, 0,134, 2, 4, 0,135, 2, 2, 0, 33, 2, 0, 0,136, 2, 0, 0, 19, 0, 85, 0, 5, 0, 4, 0,132, 2, - 4, 0,133, 2, 0, 0,137, 2, 0, 0,138, 2, 2, 0, 19, 0, 94, 0, 2, 0, 4, 0,139, 2, 7, 0, 25, 2, 86, 0, 3, 0, - 94, 0,140, 2, 4, 0,141, 2, 4, 0, 19, 0, 84, 0, 6, 0, 7, 0,142, 2, 2, 0,143, 2, 2, 0, 33, 2, 0, 0, 19, 0, - 0, 0,138, 2, 0, 0, 59, 2, 87, 0, 4, 0, 0, 0,233, 0, 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 95, 0, 6, 0, - 47, 0,126, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, 2, 0,130, 2, 2, 0,131, 2, 96, 0, 1, 0, 7, 0,144, 2, - 97, 0, 5, 0, 0, 0,233, 0, 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 4, 0, 37, 0, 88, 0, 1, 0, 7, 0,145, 2, - 89, 0, 2, 0, 4, 0,146, 2, 4, 0, 17, 0, 82, 0, 7, 0, 7, 0,127, 2, 47, 0,126, 2, 0, 0, 19, 0, 0, 0,129, 2, - 2, 0, 69, 1, 2, 0,130, 2, 2, 0,131, 2, 98, 0, 1, 0, 7, 0,147, 2, 99, 0, 1, 0, 4, 0,148, 2,100, 0, 1, 0, - 0, 0,149, 2,101, 0, 1, 0, 7, 0,127, 2,102, 0, 3, 0, 4, 0,150, 2, 0, 0, 92, 0, 7, 0,151, 2,103, 0, 4, 0, - 7, 0,233, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0,104, 0, 1, 0,103, 0,128, 2,105, 0, 5, 0, 4, 0,152, 2, - 4, 0,153, 2, 0, 0, 19, 0, 0, 0, 33, 2, 0, 0, 59, 2,106, 0, 2, 0, 4, 0,154, 2, 4, 0,153, 2,107, 0, 10, 0, -107, 0, 0, 0,107, 0, 1, 0,105, 0,155, 2,104, 0,156, 2,106, 0,157, 2, 4, 0, 53, 0, 4, 0,115, 2, 4, 0,114, 2, - 4, 0, 37, 0, 84, 0,158, 2, 92, 0, 14, 0, 12, 0,159, 2, 84, 0,158, 2, 0, 0,160, 2, 0, 0,161, 2, 0, 0,162, 2, - 0, 0,163, 2, 0, 0,164, 2, 0, 0,165, 2, 0, 0,166, 2, 0, 0, 19, 0, 91, 0,111, 2, 91, 0,113, 2, 2, 0,167, 2, - 0, 0,168, 2, 93, 0, 8, 0, 4, 0,169, 2, 4, 0,170, 2, 81, 0,171, 2, 85, 0,172, 2, 4, 0,115, 2, 4, 0,114, 2, - 4, 0, 53, 0, 4, 0, 37, 0,108, 0, 9, 0,108, 0, 0, 0,108, 0, 1, 0, 4, 0, 17, 0, 4, 0, 69, 1, 4, 0,173, 2, - 4, 0, 37, 0, 0, 0, 20, 0, 46, 0,129, 0, 0, 0,174, 2,109, 0, 7, 0,108, 0,175, 2, 2, 0,176, 2, 2, 0,159, 2, - 2, 0,177, 2, 2, 0, 90, 0, 9, 0,178, 2, 9, 0,179, 2,110, 0, 3, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0, 20, 0, -111, 0, 5, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0, 20, 0, 2, 0,180, 2, 0, 0,181, 2,112, 0, 5, 0,108, 0,175, 2, - 7, 0, 87, 0, 7, 0,182, 2, 4, 0,183, 2, 4, 0,184, 2,113, 0, 5, 0,108, 0,175, 2, 32, 0,185, 2, 0, 0, 71, 0, - 4, 0, 69, 1, 4, 0, 19, 0,114, 0, 13, 0,108, 0,175, 2, 32, 0,186, 2, 32, 0,187, 2, 32, 0,188, 2, 32, 0,189, 2, - 7, 0,190, 2, 7, 0,191, 2, 7, 0,182, 2, 7, 0,192, 2, 4, 0,193, 2, 4, 0,194, 2, 4, 0, 90, 0, 4, 0,195, 2, -115, 0, 5, 0,108, 0,175, 2, 2, 0,196, 2, 2, 0, 19, 0, 7, 0,197, 2, 32, 0,198, 2,116, 0, 3, 0,108, 0,175, 2, - 7, 0,199, 2, 4, 0, 90, 0,117, 0, 10, 0,108, 0,175, 2, 7, 0,200, 2, 4, 0,201, 2, 4, 0, 37, 0, 2, 0, 90, 0, - 2, 0,202, 2, 2, 0,203, 2, 2, 0,204, 2, 7, 0,205, 2, 0, 0,206, 2,118, 0, 3, 0,108, 0,175, 2, 7, 0, 37, 0, - 4, 0, 17, 0,119, 0, 6, 0,108, 0,175, 2,120, 0,207, 2,121, 0,208, 2,122, 0,209, 2, 7, 0,210, 2, 4, 0, 17, 0, -123, 0, 11, 0,108, 0,175, 2, 52, 0,211, 2, 7, 0,212, 2, 4, 0,213, 2, 0, 0,206, 2, 7, 0,214, 2, 4, 0,215, 2, - 32, 0,216, 2, 0, 0,217, 2, 4, 0,218, 2, 4, 0, 37, 0,124, 0, 12, 0,108, 0,175, 2, 32, 0,219, 2, 47, 0,220, 2, - 4, 0, 90, 0, 4, 0,221, 2, 7, 0,222, 2, 7, 0,223, 2, 7, 0,224, 2, 7, 0,225, 2, 0, 0,217, 2, 4, 0,218, 2, - 4, 0, 37, 0,125, 0, 3, 0,108, 0,175, 2, 7, 0,226, 2, 4, 0,227, 2,126, 0, 5, 0,108, 0,175, 2, 7, 0,228, 2, - 0, 0,206, 2, 2, 0, 19, 0, 2, 0,229, 2,127, 0, 8, 0,108, 0,175, 2, 32, 0,161, 0, 7, 0,228, 2, 7, 0,248, 0, - 7, 0,106, 0, 0, 0,206, 2, 2, 0, 19, 0, 2, 0, 17, 0,128, 0, 21, 0,108, 0,175, 2, 32, 0,230, 2, 0, 0,206, 2, - 52, 0,211, 2, 32, 0,216, 2, 2, 0, 19, 0, 2, 0, 37, 0, 7, 0,231, 2, 7, 0,232, 2, 7, 0,233, 2, 7, 0, 64, 2, - 7, 0,234, 2, 7, 0,235, 2, 7, 0,236, 2, 7, 0,237, 2, 4, 0,215, 2, 4, 0,218, 2, 0, 0,217, 2, 7, 0,238, 2, - 7, 0,239, 2, 7, 0, 89, 0,129, 0, 7, 0,108, 0,175, 2, 2, 0,240, 2, 2, 0,241, 2, 4, 0, 69, 0, 32, 0,161, 0, - 7, 0,242, 2, 0, 0,206, 2,130, 0, 10, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0,243, 2, 7, 0,244, 2, 7, 0,245, 2, - 7, 0,237, 2, 4, 0,246, 2, 4, 0,247, 2, 7, 0,248, 2, 0, 0, 20, 0,131, 0, 1, 0,108, 0,175, 2,132, 0, 7, 0, -108, 0,175, 2, 46, 0,129, 0,133, 0,249, 2,134, 0,250, 2,135, 0,251, 2,136, 0,252, 2, 12, 0,253, 2,137, 0, 13, 0, -108, 0,175, 2, 84, 0,254, 2, 84, 0,255, 2, 84, 0, 0, 3, 84, 0, 1, 3, 84, 0, 2, 3, 84, 0, 3, 3, 81, 0, 4, 3, - 4, 0, 5, 3, 4, 0, 6, 3, 7, 0,210, 2, 7, 0, 37, 0,138, 0, 7, 3,139, 0, 7, 0,108, 0,175, 2, 84, 0,254, 2, - 84, 0, 8, 3,140, 0, 9, 3,141, 0, 7, 3, 4, 0, 10, 3, 4, 0, 5, 3,142, 0, 4, 0,108, 0,175, 2, 32, 0,161, 0, - 4, 0, 11, 3, 4, 0, 37, 0,143, 0, 2, 0, 4, 0, 12, 3, 7, 0, 25, 2,144, 0, 2, 0, 4, 0,120, 0, 4, 0, 13, 3, -145, 0, 24, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0,206, 2, 2, 0, 14, 3, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 37, 0, -143, 0, 15, 3, 4, 0, 16, 3, 7, 0, 17, 3, 4, 0, 53, 0, 4, 0, 18, 3,144, 0, 19, 3,143, 0, 20, 3, 4, 0, 21, 3, - 4, 0, 22, 3, 4, 0, 23, 3, 4, 0, 13, 3, 7, 0, 24, 3, 7, 0, 25, 3, 7, 0, 26, 3, 7, 0, 27, 3, 7, 0, 28, 3, - 9, 0, 29, 3,146, 0, 8, 0,108, 0,175, 2,147, 0, 30, 3,140, 0, 9, 3, 4, 0, 31, 3, 4, 0, 32, 3, 4, 0, 33, 3, - 2, 0, 19, 0, 2, 0, 56, 0,148, 0, 8, 0,108, 0,175, 2, 32, 0, 44, 0, 2, 0,252, 0, 2, 0, 19, 0, 2, 0,196, 2, - 2, 0, 56, 0, 7, 0, 34, 3, 7, 0, 35, 3,149, 0, 5, 0,108, 0,175, 2, 4, 0, 36, 3, 2, 0, 19, 0, 2, 0, 37, 3, - 7, 0, 38, 3,150, 0, 8, 0,108, 0,175, 2, 0, 0, 39, 3, 0, 0, 40, 3, 0, 0,165, 2, 0, 0, 41, 3, 0, 0, 42, 3, - 0, 0, 90, 0, 0, 0, 59, 2,151, 0, 3, 0,108, 0,175, 2,152, 0, 43, 3,136, 0,252, 2,153, 0, 10, 0,108, 0,175, 2, - 32, 0, 44, 3, 32, 0, 45, 3, 0, 0, 46, 3, 7, 0, 47, 3, 2, 0, 48, 3, 2, 0, 49, 3, 0, 0, 50, 3, 0, 0, 51, 3, - 0, 0,181, 2,154, 0, 9, 0,108, 0,175, 2, 32, 0, 52, 3, 0, 0, 46, 3, 7, 0, 53, 3, 7, 0, 54, 3, 0, 0, 69, 1, - 0, 0,196, 2, 0, 0, 55, 3, 0, 0, 37, 0,155, 0, 1, 0,108, 0,175, 2,156, 0, 8, 0,108, 0,175, 2, 0, 0,206, 2, - 7, 0,120, 0, 7, 0, 56, 3, 7, 0, 57, 3, 7, 0, 58, 3, 7, 0, 59, 3, 4, 0, 19, 0,157, 0, 9, 0,108, 0,175, 2, - 32, 0, 60, 3, 4, 0, 61, 3, 4, 0, 62, 3, 4, 0, 63, 3, 7, 0, 64, 3, 7, 0, 65, 3, 2, 0,196, 2, 2, 0, 19, 0, -158, 0, 28, 0, 27, 0, 31, 0, 2, 0, 34, 2, 2, 0, 35, 2, 2, 0, 66, 3, 2, 0, 19, 0, 2, 0, 67, 3, 2, 0, 68, 3, - 2, 0, 69, 3, 2, 0, 69, 0, 0, 0, 70, 3, 0, 0, 71, 3, 0, 0, 72, 3, 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 73, 3, - 7, 0, 74, 3, 7, 0, 75, 3, 7, 0, 76, 3, 7, 0, 77, 3, 7, 0, 78, 3, 34, 0, 79, 3, 36, 0, 79, 0, 38, 0, 55, 2, - 86, 0,105, 2, 0, 0, 71, 0, 7, 0, 80, 3, 7, 0, 81, 3,158, 0, 82, 3,159, 0, 3, 0,159, 0, 0, 0,159, 0, 1, 0, - 0, 0, 20, 0, 71, 0, 3, 0, 7, 0, 83, 3, 4, 0, 19, 0, 4, 0, 37, 0, 32, 0,126, 0, 27, 0, 31, 0, 39, 0, 74, 0, -160, 0, 84, 3, 2, 0, 17, 0, 2, 0, 85, 3, 4, 0, 86, 3, 4, 0, 87, 3, 4, 0, 88, 3, 0, 0, 89, 3, 32, 0, 38, 0, - 32, 0, 90, 3, 32, 0, 91, 3, 32, 0, 92, 3, 32, 0, 93, 3, 36, 0, 79, 0, 77, 0, 54, 2, 71, 0,251, 1,161, 0, 94, 3, -161, 0, 95, 3,162, 0, 96, 3, 9, 0, 2, 0,163, 0, 97, 3,164, 0, 98, 3,165, 0, 99, 3, 12, 0,100, 3, 12, 0, 99, 2, - 12, 0, 14, 2, 12, 0,101, 3, 12, 0,102, 3, 4, 0, 69, 1, 4, 0,103, 3, 66, 0, 16, 2, 0, 0,104, 3, 4, 0, 18, 2, - 4, 0,105, 3, 7, 0, 64, 1, 7, 0,106, 3, 7, 0,107, 3, 7, 0,169, 0, 7, 0,108, 3, 7, 0, 65, 1, 7, 0,109, 3, - 7, 0, 4, 2, 7, 0,110, 3, 7, 0,111, 3, 7, 0,112, 3, 7, 0,113, 3, 7, 0,114, 3, 7, 0,115, 3, 7, 0,244, 2, - 7, 0,116, 3, 7, 0,237, 0, 4, 0,117, 3, 2, 0, 19, 0, 2, 0,118, 3, 2, 0,119, 3, 2, 0,120, 3, 2, 0,121, 3, - 2, 0,122, 3, 2, 0,123, 3, 2, 0,124, 3, 2, 0,125, 3, 2, 0,126, 3, 2, 0,127, 3, 2, 0,128, 3, 4, 0,129, 3, - 4, 0,130, 3, 4, 0,131, 3, 4, 0,132, 3, 7, 0,133, 3, 7, 0, 91, 2, 7, 0,134, 3, 7, 0,135, 3, 7, 0,136, 3, - 7, 0,137, 3, 7, 0,138, 3, 7, 0,212, 0, 7, 0,139, 3, 7, 0,140, 3, 7, 0,141, 3, 7, 0,142, 3, 2, 0,143, 3, - 0, 0,144, 3, 0, 0,145, 3, 0, 0,146, 3, 0, 0,147, 3, 7, 0,148, 3, 7, 0,149, 3, 12, 0,150, 3, 12, 0,151, 3, - 12, 0,152, 3, 12, 0,153, 3, 7, 0,154, 3, 2, 0,146, 2, 2, 0,155, 3, 7, 0,128, 2, 4, 0,156, 3, 4, 0,157, 3, -166, 0,158, 3, 2, 0,159, 3, 2, 0,244, 0, 7, 0,160, 3, 12, 0,161, 3, 12, 0,162, 3, 12, 0,163, 3, 12, 0,164, 3, -167, 0, 61, 1,168, 0,165, 3, 67, 0,166, 3, 2, 0,167, 3, 2, 0,168, 3, 2, 0,169, 3, 2, 0,170, 3, 7, 0,120, 2, - 2, 0,171, 3, 2, 0,172, 3,152, 0,173, 3,140, 0,174, 3,140, 0,175, 3, 4, 0,176, 3, 4, 0,177, 3, 4, 0,178, 3, - 4, 0, 69, 0, 12, 0,179, 3, 12, 0,180, 3, 12, 0,181, 3,169, 0, 14, 0,169, 0, 0, 0,169, 0, 1, 0, 32, 0, 38, 0, - 7, 0,244, 2, 7, 0, 66, 1, 7, 0,245, 2, 7, 0,237, 2, 0, 0, 20, 0, 4, 0,246, 2, 4, 0,247, 2, 4, 0,182, 3, - 2, 0, 17, 0, 2, 0,183, 3, 7, 0,248, 2,170, 0, 12, 0,170, 0, 0, 0,170, 0, 1, 0, 32, 0, 44, 0, 4, 0,184, 3, - 4, 0,146, 2, 4, 0,185, 3, 4, 0, 17, 0, 4, 0,186, 3, 7, 0, 66, 1, 7, 0,187, 3, 7, 0,188, 3, 7, 0,144, 2, -167, 0, 40, 0, 4, 0, 19, 0, 2, 0,189, 3, 2, 0,190, 3, 2, 0,237, 2, 2, 0,191, 3, 2, 0,192, 3, 2, 0,193, 3, - 2, 0,194, 3, 2, 0,195, 3, 7, 0,196, 3, 7, 0,197, 3, 7, 0,198, 3, 7, 0,199, 3, 7, 0,200, 3, 7, 0,201, 3, - 7, 0,202, 3, 7, 0,203, 3, 7, 0,204, 3, 7, 0,205, 3, 7, 0,206, 3, 7, 0,207, 3, 7, 0,208, 3, 7, 0,209, 3, - 7, 0,210, 3, 7, 0,211, 3, 7, 0,212, 3, 7, 0,213, 3, 7, 0,214, 3, 7, 0,215, 3, 7, 0,216, 3, 7, 0,217, 3, - 7, 0,218, 3, 7, 0,219, 3, 7, 0,220, 3, 7, 0,221, 3, 7, 0,222, 3, 52, 0,162, 0,171, 0,223, 3, 7, 0,224, 3, - 4, 0,184, 2,172, 0, 5, 0, 67, 0,229, 1, 7, 0,225, 3, 7, 0,226, 3, 2, 0, 19, 0, 2, 0,227, 3,173, 0, 9, 0, -173, 0, 0, 0,173, 0, 1, 0, 4, 0,228, 3, 4, 0,229, 3, 4, 0,230, 3, 4, 0, 19, 0, 4, 0,231, 3, 9, 0,232, 3, - 9, 0,233, 3,136, 0, 19, 0,136, 0, 0, 0,136, 0, 1, 0, 4, 0, 19, 0, 4, 0,234, 3, 4, 0,235, 3, 4, 0,236, 3, - 4, 0,237, 3, 4, 0,238, 3, 4, 0,239, 3, 4, 0,229, 3, 4, 0,146, 2, 4, 0, 56, 0, 0, 0,240, 3, 0, 0,241, 3, - 0, 0,242, 3, 0, 0,243, 3, 12, 0,244, 3,174, 0,245, 3, 9, 0,246, 3,175, 0, 1, 0, 7, 0, 32, 2,166, 0, 30, 0, - 4, 0, 19, 0, 7, 0,247, 3, 7, 0,248, 3, 7, 0,249, 3, 4, 0,250, 3, 4, 0,251, 3, 4, 0,252, 3, 4, 0,253, 3, - 7, 0,254, 3, 7, 0,255, 3, 7, 0, 0, 4, 7, 0, 1, 4, 7, 0, 2, 4, 7, 0, 3, 4, 7, 0, 4, 4, 7, 0, 5, 4, - 7, 0, 6, 4, 7, 0, 7, 4, 7, 0, 8, 4, 7, 0, 9, 4, 7, 0, 10, 4, 7, 0, 11, 4, 7, 0, 12, 4, 7, 0, 13, 4, - 7, 0, 14, 4, 7, 0, 15, 4, 4, 0, 16, 4, 4, 0, 17, 4, 7, 0, 18, 4, 7, 0,139, 3,168, 0, 54, 0, 4, 0,229, 3, - 4, 0, 19, 4,176, 0, 20, 4,177, 0, 21, 4, 0, 0, 37, 0, 0, 0, 22, 4, 2, 0, 23, 4, 7, 0, 24, 4, 0, 0, 25, 4, - 7, 0, 26, 4, 7, 0, 27, 4, 7, 0, 28, 4, 7, 0, 29, 4, 7, 0, 30, 4, 7, 0, 31, 4, 7, 0, 32, 4, 7, 0, 33, 4, - 7, 0, 34, 4, 2, 0, 35, 4, 0, 0, 36, 4, 2, 0, 37, 4, 7, 0, 38, 4, 7, 0, 39, 4, 0, 0, 40, 4, 4, 0,121, 0, - 4, 0, 41, 4, 4, 0, 42, 4, 2, 0, 43, 4, 2, 0, 44, 4,175, 0, 45, 4, 4, 0, 46, 4, 4, 0, 81, 0, 7, 0, 47, 4, - 7, 0, 48, 4, 7, 0, 49, 4, 7, 0, 50, 4, 2, 0, 51, 4, 2, 0, 52, 4, 2, 0, 53, 4, 2, 0, 54, 4, 2, 0, 55, 4, - 2, 0, 56, 4, 2, 0, 57, 4, 2, 0, 58, 4,178, 0, 59, 4, 7, 0, 60, 4, 7, 0, 61, 4,136, 0, 62, 4, 12, 0,253, 2, -172, 0, 63, 4, 7, 0, 64, 4, 7, 0, 65, 4, 7, 0, 66, 4, 0, 0, 67, 4,152, 0, 51, 0,151, 0, 68, 4, 2, 0, 17, 0, - 2, 0, 69, 4, 2, 0, 70, 4, 2, 0, 71, 4, 7, 0, 72, 4, 2, 0, 73, 4, 2, 0, 74, 4, 7, 0, 75, 4, 2, 0, 76, 4, - 2, 0, 77, 4, 7, 0, 78, 4, 7, 0, 79, 4, 7, 0, 80, 4, 7, 0, 81, 4, 7, 0, 82, 4, 4, 0, 83, 4, 4, 0, 84, 4, - 7, 0, 85, 4, 4, 0, 86, 4, 7, 0, 87, 4, 7, 0, 88, 4, 7, 0, 89, 4, 80, 0, 90, 4, 80, 0, 91, 4, 80, 0, 92, 4, - 0, 0, 93, 4, 7, 0, 94, 4, 7, 0, 95, 4, 36, 0, 79, 0, 2, 0, 96, 4, 0, 0, 97, 4, 0, 0, 98, 4, 7, 0, 99, 4, - 4, 0,100, 4, 7, 0,101, 4, 7, 0,102, 4, 4, 0,103, 4, 4, 0, 19, 0, 7, 0,104, 4, 7, 0,105, 4, 7, 0,106, 4, - 84, 0,107, 4, 7, 0,108, 4, 7, 0,109, 4, 7, 0,110, 4, 7, 0,111, 4, 7, 0,112, 4, 7, 0,113, 4, 7, 0,114, 4, - 4, 0,115, 4,179, 0, 78, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0,172, 0, 2, 0, 70, 1, 2, 0,104, 1, 2, 0,116, 4, - 7, 0,117, 4, 7, 0,118, 4, 7, 0,119, 4, 7, 0,120, 4, 7, 0,121, 4, 7, 0,122, 4, 7, 0,123, 4, 7, 0,124, 4, - 7, 0,150, 1, 7, 0,152, 1, 7, 0,151, 1, 7, 0,125, 4, 4, 0,126, 4, 7, 0,127, 4, 7, 0,128, 4, 7, 0,129, 4, - 7, 0,130, 4, 7, 0,131, 4, 7, 0,132, 4, 7, 0,133, 4, 2, 0,134, 4, 2, 0, 69, 1, 2, 0,135, 4, 2, 0,136, 4, - 2, 0,137, 4, 2, 0,138, 4, 2, 0,139, 4, 2, 0,140, 4, 7, 0,141, 4, 7, 0,142, 4, 7, 0,143, 4, 7, 0,144, 4, - 7, 0,145, 4, 7, 0,146, 4, 7, 0,147, 4, 7, 0,148, 4, 7, 0,149, 4, 7, 0,150, 4, 7, 0,151, 4, 7, 0,152, 4, - 2, 0,153, 4, 2, 0,154, 4, 2, 0,155, 4, 2, 0,156, 4, 7, 0,157, 4, 7, 0,158, 4, 7, 0,159, 4, 7, 0,160, 4, - 2, 0,161, 4, 2, 0,162, 4, 2, 0,163, 4, 2, 0,164, 4, 7, 0,165, 4, 7, 0,166, 4, 7, 0,167, 4, 7, 0,168, 4, - 7, 0,169, 4, 7, 0,170, 4, 7, 0,171, 4, 2, 0,172, 4, 2, 0,173, 4, 2, 0,174, 4, 2, 0,175, 4, 2, 0,176, 4, - 2, 0, 19, 0, 7, 0,177, 4, 7, 0,178, 4, 36, 0, 79, 0, 51, 0,122, 1, 2, 0,123, 1, 2, 0,179, 4, 30, 0,148, 0, -180, 0, 8, 0,180, 0, 0, 0,180, 0, 1, 0, 4, 0,117, 3, 4, 0,180, 4, 4, 0, 19, 0, 2, 0,181, 4, 2, 0,182, 4, - 32, 0,161, 0,181, 0, 13, 0, 9, 0,183, 4, 9, 0,184, 4, 4, 0,185, 4, 4, 0,186, 4, 4, 0,187, 4, 4, 0,188, 4, - 4, 0,189, 4, 4, 0,190, 4, 4, 0,191, 4, 4, 0,192, 4, 4, 0,193, 4, 4, 0, 37, 0, 0, 0,194, 4,182, 0, 5, 0, - 9, 0,195, 4, 9, 0,196, 4, 4, 0,197, 4, 4, 0, 69, 0, 0, 0,198, 4,183, 0, 17, 0, 4, 0,199, 4, 4, 0,200, 4, - 4, 0,201, 4, 4, 0,202, 4, 4, 0,203, 4, 4, 0,204, 4, 4, 0,205, 4, 4, 0,206, 4, 4, 0,207, 4, 4, 0,208, 4, - 4, 0,209, 4, 4, 0,210, 4, 2, 0,211, 4, 2, 0,212, 4, 4, 0,213, 4, 4, 0,214, 4, 4, 0, 89, 0,184, 0, 15, 0, - 4, 0, 17, 0, 4, 0,201, 4, 4, 0,215, 4, 4, 0,216, 4, 4, 0,217, 4, 4, 0,218, 4, 7, 0,219, 4, 4, 0,220, 4, - 4, 0, 90, 0, 4, 0,221, 4, 4, 0,222, 4, 4, 0,223, 4, 4, 0,224, 4, 4, 0,225, 4, 26, 0, 30, 0,185, 0, 7, 0, - 4, 0,226, 4, 7, 0,227, 4, 7, 0,228, 4, 7, 0,229, 4, 4, 0,230, 4, 2, 0, 19, 0, 2, 0, 37, 0,186, 0, 11, 0, -186, 0, 0, 0,186, 0, 1, 0, 0, 0, 20, 0, 66, 0,231, 4, 67, 0,232, 4, 4, 0,117, 3, 4, 0,233, 4, 4, 0,234, 4, - 4, 0, 37, 0, 4, 0,235, 4, 4, 0,236, 4,187, 0,111, 0,181, 0,237, 4,182, 0,238, 4,183, 0,239, 4,184, 0,240, 4, - 4, 0, 10, 3, 4, 0,121, 0, 4, 0, 41, 4, 7, 0,241, 4, 4, 0,242, 4, 4, 0,243, 4, 4, 0,244, 4, 4, 0,245, 4, - 2, 0, 19, 0, 2, 0,246, 4, 7, 0,247, 4, 7, 0,248, 4, 7, 0,249, 4, 7, 0,250, 4, 7, 0,251, 4, 2, 0,252, 4, - 2, 0,253, 4, 2, 0,254, 4, 2, 0,255, 4, 2, 0,243, 0, 2, 0, 0, 5, 2, 0, 1, 5, 2, 0, 2, 5, 2, 0, 3, 5, - 2, 0, 4, 5, 2, 0, 91, 1, 2, 0,106, 0, 2, 0, 5, 5, 2, 0, 6, 5, 2, 0, 7, 5, 2, 0, 8, 5, 2, 0, 9, 5, - 2, 0, 10, 5, 2, 0, 11, 5, 2, 0, 12, 5, 2, 0, 13, 5, 2, 0, 92, 1, 2, 0, 14, 5, 2, 0, 15, 5, 2, 0, 16, 5, - 2, 0, 17, 5, 4, 0, 18, 5, 4, 0, 69, 1, 4, 0, 19, 5, 2, 0, 20, 5, 2, 0, 21, 5, 2, 0, 22, 5, 2, 0,248, 1, - 2, 0, 23, 5, 2, 0, 24, 5, 2, 0, 25, 5, 2, 0, 26, 5, 24, 0, 27, 5, 24, 0, 28, 5, 23, 0, 29, 5, 12, 0, 30, 5, - 2, 0, 31, 5, 2, 0, 32, 5, 7, 0, 33, 5, 7, 0, 34, 5, 7, 0, 35, 5, 7, 0, 36, 5, 4, 0, 37, 5, 7, 0, 38, 5, - 7, 0, 39, 5, 7, 0, 40, 5, 7, 0, 41, 5, 2, 0, 42, 5, 2, 0, 43, 5, 2, 0, 44, 5, 2, 0, 45, 5, 2, 0, 46, 5, - 2, 0, 47, 5, 7, 0, 48, 5, 7, 0, 49, 5, 7, 0, 50, 5, 0, 0, 51, 5, 0, 0, 52, 5, 4, 0, 53, 5, 2, 0, 54, 5, - 2, 0,226, 1, 0, 0, 55, 5, 7, 0, 56, 5, 7, 0, 57, 5, 0, 0, 58, 5, 0, 0, 59, 5, 0, 0, 60, 5, 0, 0, 61, 5, - 4, 0, 62, 5, 2, 0, 63, 5, 2, 0, 64, 5, 7, 0, 65, 5, 7, 0, 66, 5, 2, 0, 67, 5, 2, 0, 68, 5, 7, 0, 69, 5, - 2, 0, 70, 5, 2, 0, 71, 5, 4, 0, 72, 5, 2, 0, 73, 5, 2, 0, 74, 5, 2, 0, 75, 5, 2, 0, 76, 5, 7, 0, 77, 5, - 7, 0, 69, 0, 42, 0, 78, 5, 0, 0, 79, 5,188, 0, 9, 0,188, 0, 0, 0,188, 0, 1, 0, 0, 0, 20, 0, 2, 0, 80, 5, - 2, 0, 81, 5, 2, 0, 82, 5, 2, 0, 89, 0, 7, 0, 83, 5, 7, 0, 69, 0,189, 0, 7, 0, 2, 0,201, 2, 2, 0, 69, 1, - 2, 0, 65, 3, 2, 0, 84, 5, 7, 0, 85, 5, 7, 0, 69, 0, 42, 0, 86, 5,190, 0, 5, 0, 7, 0, 87, 5, 0, 0, 17, 0, - 0, 0, 89, 0, 0, 0, 69, 0, 0, 0,226, 1,191, 0, 28, 0, 7, 0,132, 4, 7, 0,133, 4, 2, 0, 69, 1, 2, 0, 19, 0, - 2, 0, 88, 5, 2, 0,179, 4, 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4, 2, 0,138, 4, 2, 0,139, 4, 2, 0,140, 4, -190, 0, 89, 5, 2, 0,252, 4, 2, 0,253, 4, 2, 0,254, 4, 2, 0,255, 4, 2, 0,243, 0, 2, 0, 0, 5, 2, 0, 90, 5, - 2, 0, 1, 5,189, 0, 91, 5, 2, 0, 92, 5, 2, 0, 3, 5, 2, 0, 6, 5, 2, 0, 7, 5, 7, 0, 93, 5, 7, 0, 89, 0, -192, 0, 6, 0,192, 0, 0, 0,192, 0, 1, 0, 4, 0,228, 3, 0, 0,240, 3, 4, 0, 19, 0, 32, 0, 94, 5,193, 0, 6, 0, -194, 0, 95, 5, 4, 0, 96, 5, 4, 0, 97, 5, 9, 0, 98, 5, 0, 0, 99, 5, 4, 0, 90, 0,195, 0, 8, 0,193, 0,100, 5, - 2, 0, 19, 0, 2, 0, 37, 0, 2, 0,101, 5, 2, 0,102, 5, 2, 0,103, 5, 4, 0, 89, 0, 9, 0,104, 5,196, 0, 6, 0, - 2, 0,106, 0, 2, 0,234, 3, 2, 0,105, 5, 2, 0,195, 2, 4, 0, 19, 0, 7, 0,212, 2,197, 0, 14, 0, 2, 0, 19, 0, - 2, 0,106, 5, 2, 0,107, 5, 2, 0,108, 5,196, 0,109, 5, 9, 0,104, 5, 7, 0,110, 5, 7, 0, 56, 0, 4, 0,111, 5, - 4, 0,112, 5, 4, 0,113, 5, 4, 0,114, 5, 46, 0,129, 0, 32, 0,161, 0,198, 0, 4, 0,198, 0, 0, 0,198, 0, 1, 0, - 0, 0,115, 5, 7, 0,116, 5,199, 0, 14, 0,193, 0,100, 5, 4, 0, 90, 0, 4, 0,117, 5, 7, 0,118, 5, 7, 0,119, 5, - 7, 0,120, 5, 4, 0,121, 5, 4, 0,122, 5, 7, 0,123, 5, 7, 0,124, 5, 4, 0,125, 5, 7, 0,126, 5, 7, 0,127, 5, - 4, 0, 37, 0,200, 0, 7, 0,193, 0,100, 5, 2, 0, 19, 0, 2, 0, 37, 0, 4, 0, 36, 0, 4, 0,128, 5, 86, 0,129, 5, - 9, 0,104, 5,201, 0, 74, 0,200, 0,130, 5,200, 0,131, 5,199, 0, 84, 3, 7, 0,132, 5, 2, 0,133, 5, 2, 0,134, 5, - 7, 0,135, 5, 7, 0,136, 5, 2, 0,234, 3, 2, 0,137, 5, 7, 0,138, 5, 7, 0,139, 5, 7, 0,140, 5, 2, 0,141, 5, - 2, 0,111, 5, 2, 0,142, 5, 2, 0,143, 5, 2, 0,144, 5, 2, 0,145, 5, 7, 0,146, 5, 7, 0,147, 5, 7, 0,148, 5, - 2, 0,149, 5, 2, 0,150, 5, 2, 0,151, 5, 2, 0,152, 5, 2, 0,153, 5, 2, 0,154, 5, 2, 0,155, 5,195, 0,156, 5, -197, 0,157, 5, 7, 0,158, 5, 7, 0,159, 5, 7, 0,160, 5, 2, 0,161, 5, 2, 0,162, 5, 0, 0,163, 5, 0, 0,164, 5, - 0, 0,165, 5, 0, 0,166, 5, 0, 0,167, 5, 0, 0,168, 5, 2, 0,169, 5, 7, 0,170, 5, 7, 0,171, 5, 7, 0,172, 5, - 7, 0,173, 5, 7, 0,174, 5, 7, 0,175, 5, 7, 0,176, 5, 7, 0,177, 5, 7, 0,178, 5, 7, 0,179, 5, 2, 0,180, 5, - 0, 0,181, 5, 0, 0,182, 5, 0, 0,183, 5, 0, 0,184, 5, 32, 0,185, 5, 0, 0,186, 5, 0, 0,187, 5, 0, 0,188, 5, - 0, 0,189, 5, 0, 0,190, 5, 0, 0,191, 5, 0, 0,192, 5, 0, 0,193, 5, 2, 0,194, 5, 2, 0,195, 5, 2, 0,196, 5, - 2, 0,197, 5, 2, 0,198, 5, 4, 0,199, 5, 4, 0,200, 5,202, 0, 8, 0, 4, 0,201, 5, 4, 0,202, 5, 4, 0,203, 5, - 4, 0,204, 5, 4, 0,205, 5, 4, 0,206, 5, 4, 0, 53, 0, 4, 0,115, 2,203, 0, 3, 0, 7, 0,207, 5, 2, 0,208, 5, - 2, 0, 19, 0,204, 0, 4, 0, 7, 0,209, 5, 4, 0, 19, 0, 4, 0,210, 5, 4, 0, 56, 0, 46, 0, 42, 0, 27, 0, 31, 0, - 39, 0, 74, 0, 32, 0, 94, 5,179, 0,211, 5, 46, 0,212, 5, 47, 0,235, 0, 12, 0,213, 5,180, 0,214, 5, 32, 0,215, 5, - 7, 0,216, 5, 7, 0,217, 5, 7, 0,218, 5, 7, 0,219, 5, 4, 0,117, 3, 4, 0,220, 5, 4, 0, 89, 0, 2, 0, 19, 0, - 2, 0, 63, 1, 60, 0, 58, 1,205, 0,221, 5,201, 0,222, 5,206, 0,223, 5,187, 0,179, 0,185, 0,224, 5, 12, 0,100, 0, - 12, 0,225, 5, 9, 0,226, 5, 9, 0,227, 5, 9, 0,228, 5,207, 0,229, 5, 2, 0,230, 5, 2, 0,231, 5, 2, 0,244, 0, - 2, 0,232, 5, 4, 0,233, 5, 4, 0,234, 5, 12, 0,235, 5,190, 0, 89, 5,191, 0,236, 5,203, 0,237, 5,163, 0, 97, 3, -204, 0,238, 5,208, 0, 11, 0,208, 0, 0, 0,208, 0, 1, 0, 47, 0,235, 0, 45, 0, 57, 1, 7, 0, 79, 2, 7, 0, 80, 2, - 7, 0,106, 0, 7, 0,239, 5, 2, 0,240, 5, 2, 0, 19, 0, 7, 0, 69, 0,209, 0, 39, 0, 7, 0,241, 5, 7, 0,242, 5, - 7, 0,243, 5, 7, 0,244, 5, 7, 0,245, 5, 7, 0,246, 5, 7, 0,247, 5, 7, 0,248, 5, 7, 0,249, 5, 7, 0, 76, 1, - 7, 0,250, 5, 7, 0,251, 5, 7, 0,252, 5, 7, 0,253, 5, 7, 0,168, 0, 2, 0,254, 5, 2, 0,255, 5, 2, 0, 0, 6, - 2, 0, 37, 0, 2, 0, 1, 6, 2, 0, 2, 6, 2, 0, 3, 6, 2, 0,240, 5, 7, 0, 4, 6, 7, 0, 5, 6, 71, 0, 6, 6, -163, 0, 97, 3,209, 0, 7, 6,210, 0, 8, 6,211, 0, 9, 6,212, 0, 10, 6,213, 0, 11, 6,214, 0, 12, 6, 7, 0, 13, 6, - 2, 0, 14, 6, 2, 0, 15, 6, 7, 0, 16, 6, 7, 0, 17, 6, 7, 0, 18, 6,215, 0, 55, 0,216, 0, 0, 0,216, 0, 1, 0, - 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 7, 0,249, 5, 7, 0, 76, 1, 7, 0, 89, 0, 4, 0, 23, 6, - 2, 0, 3, 6, 2, 0,240, 5, 32, 0, 94, 5, 32, 0, 24, 6, 12, 0, 25, 6,208, 0, 26, 6,215, 0, 7, 6, 0, 0, 27, 6, - 4, 0,117, 3, 4, 0,220, 5, 2, 0, 28, 6, 2, 0, 69, 0, 2, 0, 29, 6, 2, 0, 30, 6, 2, 0,226, 1, 2, 0, 19, 0, - 2, 0, 17, 2, 2, 0, 31, 6, 7, 0,111, 0, 7, 0, 32, 6, 7, 0, 16, 6, 7, 0, 18, 6, 7, 0, 33, 6, 7, 0, 34, 6, - 7, 0,168, 0, 7, 0,216, 5, 2, 0, 35, 6, 2, 0,248, 1, 2, 0, 36, 6, 2, 0, 37, 6, 2, 0, 38, 6, 2, 0, 39, 6, - 2, 0, 40, 6, 2, 0, 41, 6, 2, 0, 42, 6, 2, 0, 0, 6, 4, 0, 43, 6, 12, 0, 44, 6, 2, 0, 45, 6, 2, 0,129, 2, - 2, 0, 46, 6, 0, 0, 47, 6, 0, 0, 48, 6, 9, 0, 49, 6,163, 0, 97, 3,217, 0, 24, 0, 24, 0, 36, 0, 24, 0, 63, 0, - 23, 0, 50, 6, 23, 0, 51, 6, 23, 0, 52, 6, 7, 0, 53, 6, 7, 0, 54, 6, 7, 0, 55, 6, 7, 0, 56, 6, 2, 0, 57, 6, - 2, 0, 58, 6, 2, 0, 59, 6, 2, 0, 60, 6, 2, 0, 61, 6, 2, 0, 19, 0, 2, 0, 62, 6, 2, 0, 63, 6, 2, 0, 64, 6, - 2, 0, 65, 6, 2, 0, 66, 6, 2, 0, 30, 6, 7, 0, 67, 6, 4, 0, 68, 6, 4, 0, 69, 6,216, 0, 6, 0,216, 0, 0, 0, -216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,218, 0, 8, 0,216, 0, 0, 0,216, 0, 1, 0, - 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,219, 0, 70, 6, 46, 0,129, 0,220, 0, 14, 0,216, 0, 0, 0, -216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6,221, 0, 72, 6, 12, 0, 73, 6, - 2, 0, 69, 1, 2, 0, 74, 6, 4, 0, 19, 0, 7, 0, 75, 6, 4, 0, 30, 6,222, 0, 20, 0,216, 0, 0, 0,216, 0, 1, 0, - 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,210, 0, 8, 6,217, 0, 71, 6, 2, 0, 76, 6, 2, 0, 77, 6, - 2, 0, 78, 6, 2, 0, 79, 6, 2, 0, 62, 6, 2, 0, 80, 6, 0, 0, 19, 0, 0, 0,179, 4, 9, 0, 54, 2, 4, 0, 81, 6, - 4, 0, 82, 6, 27, 0, 83, 6,223, 0, 18, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, - 2, 0, 22, 6,217, 0, 71, 6, 7, 0, 79, 2, 7, 0, 80, 2, 2, 0, 76, 6, 2, 0, 84, 6, 2, 0, 85, 6, 2, 0, 86, 6, - 4, 0, 19, 0, 7, 0, 87, 6, 4, 0,240, 5, 4, 0, 37, 0,163, 0, 97, 3,224, 0, 15, 0, 0, 0, 88, 6, 0, 0, 89, 6, - 0, 0, 90, 6, 0, 0, 91, 6, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 92, 6, 2, 0, 93, 6, 2, 0,169, 1, 2, 0, 94, 6, - 4, 0, 95, 6, 4, 0, 96, 6, 2, 0, 97, 6, 2, 0, 37, 0, 0, 0, 98, 6,225, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, - 12, 0, 19, 6, 4, 0, 20, 6, 4, 0, 99, 6,224, 0,100, 6,226, 0,101, 6, 12, 0,102, 6, 12, 0,103, 6,227, 0,104, 6, -214, 0,105, 6,228, 0,106, 6, 2, 0,107, 6, 2, 0,108, 6, 2, 0,109, 6, 2, 0, 69, 0,229, 0, 17, 0,216, 0, 0, 0, -216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6, 12, 0,110, 6,230, 0,111, 6, - 0, 0,112, 6,231, 0,113, 6, 4, 0,114, 6, 4, 0,115, 6, 2, 0, 19, 0, 2, 0,116, 6, 2, 0,117, 6, 2, 0, 37, 0, -232, 0, 32, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 47, 0,220, 2, - 45, 0, 57, 1, 63, 0,118, 6, 2, 0,128, 0, 2, 0,119, 6, 2, 0, 69, 0, 2, 0,120, 6, 4, 0, 19, 0, 2, 0,121, 6, - 2, 0,122, 6, 2, 0,123, 6, 2, 0,226, 1, 0, 0,124, 6, 0, 0,125, 6, 0, 0,126, 6, 0, 0, 30, 6, 7, 0,127, 6, - 7, 0, 79, 2, 7, 0, 80, 2, 7, 0, 87, 6, 7, 0,248, 1, 7, 0,128, 6, 7, 0,129, 6,163, 0, 97, 3,233, 0,130, 6, -234, 0,131, 6,235, 0, 11, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, - 2, 0, 74, 6, 2, 0, 19, 0, 4, 0, 37, 0,221, 0, 72, 6,217, 0, 71, 6,236, 0, 27, 0,216, 0, 0, 0,216, 0, 1, 0, - 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 42, 0,132, 6, 4, 0,133, 6, 4, 0,134, 6, 2, 0, 90, 0, - 2, 0,128, 0, 2, 0,135, 6, 0, 0,136, 6, 0, 0,137, 6, 4, 0,138, 6, 4, 0,139, 6, 4, 0,140, 6, 4, 0,141, 6, - 2, 0,142, 6, 2, 0,143, 6, 7, 0,144, 6, 23, 0,145, 6, 23, 0,146, 6, 4, 0,147, 6, 4, 0,148, 6, 0, 0,149, 6, - 0, 0,150, 6,237, 0, 10, 0, 27, 0, 31, 0, 9, 0,151, 6, 9, 0,152, 6, 9, 0,153, 6, 9, 0,154, 6, 9, 0,155, 6, - 4, 0, 90, 0, 4, 0,156, 6, 0, 0,157, 6, 0, 0,158, 6,238, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, - 4, 0, 20, 6, 7, 0, 21, 6,237, 0,159, 6, 2, 0, 90, 0, 2, 0,128, 0, 4, 0, 89, 0, 9, 0,160, 6,239, 0, 9, 0, -239, 0, 0, 0,239, 0, 1, 0, 4, 0, 17, 0, 4, 0, 19, 0, 7, 0,161, 6, 4, 0, 23, 0, 4, 0,236, 3, 4, 0,237, 3, - 4, 0,124, 0,240, 0, 11, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6,217, 0, 71, 6, - 12, 0,162, 6, 4, 0,163, 6, 4, 0, 37, 0, 4, 0, 19, 0, 4, 0,164, 6,241, 0, 25, 0,216, 0, 0, 0,216, 0, 1, 0, - 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6, 27, 0,165, 6, 27, 0, 80, 0, 2, 0, 19, 0, - 2, 0,128, 0, 7, 0,166, 6, 9, 0,167, 6, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0, 87, 6, 7, 0, 18, 6, 7, 0,168, 6, - 7, 0,169, 6, 60, 0, 58, 1, 60, 0,170, 6, 4, 0,171, 6, 2, 0,172, 6, 2, 0, 37, 0,163, 0, 97, 3,242, 0, 10, 0, -216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 2, 0, 19, 0, 2, 0,126, 3, - 4, 0, 37, 0,163, 0, 97, 3,243, 0, 42, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, - 2, 0, 22, 6,217, 0, 71, 6,226, 0,101, 6, 0, 0, 88, 6, 0, 0, 89, 6, 0, 0, 90, 6, 2, 0, 17, 0, 2, 0,173, 6, - 2, 0, 19, 0, 2, 0, 92, 6, 9, 0,167, 6, 4, 0, 95, 6, 4, 0,174, 6, 4, 0,175, 6, 4, 0, 96, 6, 23, 0,176, 6, - 23, 0,177, 6, 7, 0,178, 6, 7, 0,179, 6, 7, 0,180, 6, 7, 0,166, 6, 2, 0,181, 6, 2, 0,234, 0, 2, 0,169, 1, - 2, 0, 94, 6, 2, 0, 37, 0, 2, 0, 89, 0, 2, 0,182, 6, 2, 0,183, 6, 9, 0,184, 6, 9, 0,185, 6, 9, 0,186, 6, - 9, 0,187, 6, 9, 0,188, 6, 2, 0,189, 6, 0, 0,190, 6, 57, 0,191, 6,244, 0, 7, 0,244, 0, 0, 0,244, 0, 1, 0, - 4, 0,192, 6, 4, 0, 23, 0, 0, 0, 83, 0, 4, 0,193, 6, 4, 0, 17, 0,245, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, - 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6, 4, 0, 17, 0, 4, 0,194, 6, 4, 0, 19, 0, 4, 0,135, 6, - 12, 0,195, 6, 12, 0,196, 6, 0, 0,197, 6, 0, 0,198, 6, 4, 0,199, 6, 4, 0,200, 6,246, 0, 6, 0,216, 0, 0, 0, -216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 4, 0, 37, 0, 0, 0,201, 6,247, 0, 7, 0,247, 0, 0, 0,247, 0, 1, 0, - 0, 0,202, 6, 2, 0,203, 6, 2, 0,204, 6, 2, 0,205, 6, 2, 0, 37, 0,248, 0, 12, 0, 2, 0,204, 6, 2, 0,206, 6, - 2, 0,207, 6, 0, 0,181, 2, 2, 0,208, 6, 2, 0,209, 6, 2, 0,210, 6, 2, 0,211, 6, 2, 0,212, 6, 2, 0, 62, 6, - 7, 0,213, 6, 7, 0,214, 6,249, 0, 18, 0,249, 0, 0, 0,249, 0, 1, 0, 0, 0,240, 3,248, 0,215, 6,248, 0,216, 6, -248, 0,217, 6,248, 0,218, 6, 7, 0,219, 6, 2, 0,220, 6, 2, 0,221, 6, 2, 0,222, 6, 2, 0,223, 6, 2, 0,224, 6, - 2, 0,225, 6, 2, 0,226, 6, 2, 0,227, 6, 2, 0,228, 6, 2, 0,229, 6,250, 0, 10, 0, 0, 0,230, 6, 0, 0,231, 6, - 0, 0,232, 6, 0, 0,233, 6, 0, 0,234, 6, 0, 0,235, 6, 2, 0,236, 6, 2, 0,237, 6, 2, 0,238, 6, 2, 0,239, 6, -251, 0, 8, 0, 0, 0,240, 6, 0, 0,241, 6, 0, 0,242, 6, 0, 0,243, 6, 0, 0,244, 6, 0, 0,245, 6, 7, 0,239, 5, - 7, 0, 37, 0,252, 0, 18, 0,250, 0,246, 6,250, 0,247, 6,250, 0,248, 6,250, 0,249, 6,250, 0,250, 6,250, 0,251, 6, -250, 0,252, 6,250, 0,253, 6,250, 0,254, 6,250, 0,255, 6,250, 0, 0, 7,250, 0, 1, 7,250, 0, 2, 7,250, 0, 3, 7, -250, 0, 4, 7,250, 0, 5, 7,251, 0, 6, 7, 0, 0, 7, 7,253, 0, 92, 0, 0, 0, 8, 7, 0, 0, 9, 7, 0, 0,234, 6, - 0, 0, 10, 7, 0, 0, 11, 7, 0, 0, 12, 7, 0, 0, 13, 7, 0, 0, 14, 7, 0, 0, 15, 7, 0, 0, 16, 7, 0, 0, 17, 7, - 0, 0, 18, 7, 0, 0, 19, 7, 0, 0, 20, 7, 0, 0, 21, 7, 0, 0, 22, 7, 0, 0, 23, 7, 0, 0, 24, 7, 0, 0, 25, 7, - 0, 0, 26, 7, 0, 0, 27, 7, 0, 0, 28, 7, 0, 0, 29, 7, 0, 0, 30, 7, 0, 0, 31, 7, 0, 0, 32, 7, 0, 0, 33, 7, - 0, 0, 34, 7, 0, 0, 35, 7, 0, 0, 36, 7, 0, 0, 37, 7, 0, 0, 38, 7, 0, 0, 39, 7, 0, 0, 40, 7, 0, 0, 41, 7, - 0, 0, 42, 7, 0, 0, 43, 7, 0, 0, 44, 7, 0, 0, 45, 7, 0, 0, 46, 7, 0, 0, 47, 7, 0, 0, 48, 7, 0, 0, 49, 7, - 0, 0, 50, 7, 0, 0, 51, 7, 0, 0, 52, 7, 0, 0, 53, 7, 0, 0, 54, 7, 0, 0, 55, 7, 0, 0, 56, 7, 0, 0, 57, 7, - 0, 0, 58, 7, 0, 0, 59, 7, 0, 0, 60, 7, 0, 0, 61, 7, 0, 0, 62, 7, 0, 0, 63, 7, 0, 0, 64, 7, 0, 0, 65, 7, - 0, 0, 66, 7, 0, 0, 67, 7, 0, 0, 68, 7, 0, 0, 69, 7, 0, 0, 70, 7, 0, 0, 71, 7, 0, 0, 72, 7, 0, 0, 73, 7, - 0, 0, 74, 7, 0, 0, 75, 7, 0, 0, 76, 7, 0, 0, 77, 7, 0, 0, 78, 7, 0, 0, 79, 7, 0, 0, 80, 7, 0, 0, 81, 7, - 0, 0, 82, 7, 0, 0, 83, 7, 0, 0, 84, 7, 0, 0, 85, 7, 0, 0, 86, 7, 0, 0, 87, 7, 0, 0, 88, 7, 0, 0, 89, 7, - 0, 0, 90, 7, 0, 0, 91, 7, 0, 0, 92, 7, 0, 0, 93, 7, 0, 0, 94, 7, 0, 0, 95, 7, 0, 0, 96, 7, 0, 0, 97, 7, - 0, 0, 98, 7,254, 0, 5, 0, 0, 0, 99, 7, 0, 0, 32, 7, 0, 0, 34, 7, 2, 0, 19, 0, 2, 0, 37, 0,255, 0, 25, 0, -255, 0, 0, 0,255, 0, 1, 0, 0, 0, 20, 0,252, 0,100, 7,253, 0,101, 7,253, 0,102, 7,253, 0,103, 7,253, 0,104, 7, -253, 0,105, 7,253, 0,106, 7,253, 0,107, 7,253, 0,108, 7,253, 0,109, 7,253, 0,110, 7,253, 0,111, 7,253, 0,112, 7, -253, 0,113, 7,253, 0,114, 7,253, 0,115, 7,253, 0,116, 7,253, 0,117, 7,253, 0,118, 7,254, 0,119, 7, 4, 0,120, 7, - 4, 0, 37, 0, 0, 1, 3, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0,121, 7, 1, 1, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, - 7, 0,128, 2, 7, 0,122, 7, 7, 0, 32, 2, 2, 1, 88, 0, 4, 0, 19, 0, 4, 0,123, 7, 4, 0,124, 7, 0, 0,125, 7, - 0, 0,126, 7, 0, 0,127, 7, 0, 0,128, 7, 0, 0,129, 7, 0, 0,130, 7, 0, 0,131, 7, 0, 0,132, 7, 0, 0,133, 7, - 0, 0,134, 7, 4, 0,135, 7, 2, 0,136, 7, 2, 0,137, 7, 2, 0,138, 7, 2, 0,139, 7, 4, 0,140, 7, 4, 0,141, 7, - 4, 0,142, 7, 4, 0,143, 7, 2, 0,144, 7, 2, 0,145, 7, 4, 0,146, 7, 4, 0,147, 7, 4, 0,148, 7, 4, 0,149, 7, - 4, 0,150, 7, 4, 0,195, 6, 4, 0,151, 7, 2, 0,152, 7, 2, 0,153, 7, 2, 0,154, 7, 2, 0,155, 7, 12, 0,156, 7, - 12, 0,157, 7, 12, 0,158, 7, 12, 0,159, 7, 12, 0,160, 7, 0, 0,161, 7, 2, 0,162, 7, 2, 0,163, 7, 2, 0,164, 7, - 2, 0,165, 7, 2, 0,166, 7, 2, 0,167, 7, 2, 0,168, 7, 2, 0,169, 7, 1, 1,170, 7, 2, 0,171, 7, 2, 0,172, 7, - 2, 0,173, 7, 2, 0,174, 7, 2, 0,175, 7, 2, 0,176, 7, 2, 0,177, 7, 2, 0,178, 7, 4, 0,179, 7, 4, 0,180, 7, - 2, 0,181, 7, 2, 0,182, 7, 2, 0,183, 7, 2, 0,184, 7, 2, 0,185, 7, 2, 0,186, 7, 2, 0,187, 7, 2, 0,188, 7, - 2, 0,189, 7, 2, 0,190, 7, 2, 0,191, 7, 2, 0,192, 7, 2, 0,193, 7, 2, 0,194, 7, 2, 0,195, 7, 2, 0,196, 7, - 2, 0,197, 7, 2, 0,179, 4, 0, 0,198, 7, 0, 0,199, 7, 7, 0,200, 7, 2, 0,161, 5, 2, 0,162, 5, 55, 0,201, 7, - 4, 0,202, 7, 7, 0,203, 7, 7, 0,204, 7, 7, 0,205, 7,219, 0, 21, 0, 27, 0, 31, 0, 12, 0,206, 7, 12, 0,207, 7, - 12, 0,208, 7, 12, 0, 19, 6, 46, 0,129, 0, 46, 0,209, 7, 2, 0,210, 7, 2, 0,211, 7, 2, 0,212, 7, 2, 0,213, 7, - 2, 0,214, 7, 2, 0,215, 7, 2, 0,216, 7, 2, 0,217, 7, 2, 0,218, 7, 2, 0,219, 7, 4, 0, 69, 0,214, 0,220, 7, - 9, 0,221, 7, 2, 0,222, 7, 3, 1, 5, 0, 3, 1, 0, 0, 3, 1, 1, 0, 3, 1,223, 7, 13, 0,224, 7, 4, 0, 19, 0, - 4, 1, 7, 0, 4, 1, 0, 0, 4, 1, 1, 0, 3, 1,225, 7, 3, 1,226, 7, 2, 0, 28, 5, 2, 0, 19, 0, 4, 0, 37, 0, - 5, 1, 25, 0, 5, 1, 0, 0, 5, 1, 1, 0, 6, 1,227, 7, 7, 1,106, 6, 0, 0,228, 7, 0, 0,229, 7, 0, 0,230, 7, - 2, 0,231, 7, 2, 0,232, 7, 2, 0,233, 7, 2, 0,234, 7, 2, 0,235, 7, 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,236, 7, - 2, 0,237, 7, 2, 0,238, 7, 4, 0,239, 7, 5, 1,240, 7, 9, 0,241, 7, 4, 0,242, 7, 4, 0,243, 7, 4, 0,244, 7, - 4, 0,245, 7, 0, 0,246, 7, 8, 1, 22, 0, 8, 1, 0, 0, 8, 1, 1, 0, 3, 1,225, 7, 3, 1,226, 7, 3, 1,247, 7, - 3, 1,248, 7,219, 0,249, 7, 23, 0, 51, 0, 0, 0, 20, 6, 0, 0,250, 7, 2, 0, 63, 6, 2, 0, 64, 6, 2, 0,251, 7, - 2, 0, 37, 0, 2, 0,213, 7, 2, 0,193, 6, 2, 0, 19, 0, 9, 1,227, 7, 12, 0,252, 7, 12, 0, 19, 6, 12, 0,253, 7, - 12, 0,254, 7, 10, 1, 24, 0, 10, 1, 0, 0, 10, 1, 1, 0,217, 0, 71, 6, 23, 0,255, 7, 23, 0, 0, 8, 2, 0, 63, 6, - 2, 0, 64, 6, 2, 0, 1, 8, 2, 0, 2, 8, 2, 0, 3, 8, 2, 0, 19, 0, 7, 0, 75, 2, 2, 0,233, 7, 2, 0,234, 7, - 2, 0,212, 7, 2, 0, 4, 8, 2, 0,217, 7, 2, 0,179, 4, 11, 1,227, 7, 12, 0, 5, 8, 12, 0, 6, 8, 12, 0,253, 7, - 0, 0, 7, 8, 9, 0, 8, 8, 12, 1, 12, 0, 0, 0, 9, 8, 2, 0, 10, 8, 2, 0, 11, 8, 2, 0, 12, 8, 2, 0, 13, 8, - 2, 0, 15, 5, 2, 0, 10, 5,219, 0, 14, 8, 46, 0, 15, 8, 4, 0, 16, 8, 4, 0, 17, 8, 0, 0, 18, 8, 13, 1, 1, 0, - 0, 0, 19, 8, 14, 1, 8, 0, 57, 0, 20, 8, 57, 0, 21, 8, 14, 1, 22, 8, 14, 1, 23, 8, 14, 1, 24, 8, 2, 0,124, 0, - 2, 0, 19, 0, 4, 0, 25, 8, 15, 1, 4, 0, 4, 0,133, 6, 4, 0, 26, 8, 4, 0,138, 6, 4, 0, 27, 8, 16, 1, 2, 0, - 4, 0, 28, 8, 4, 0, 29, 8, 17, 1, 5, 0, 7, 0, 30, 8, 7, 0, 31, 8, 7, 0, 32, 8, 4, 0, 19, 0, 4, 0, 37, 0, - 18, 1, 6, 0, 0, 0, 33, 8, 0, 0, 90, 6, 49, 0,132, 0, 2, 0,106, 0, 2, 0, 14, 5, 4, 0, 37, 0, 19, 1, 21, 0, - 19, 1, 0, 0, 19, 1, 1, 0, 4, 0, 56, 0, 4, 0, 23, 0, 4, 0, 28, 0, 4, 0, 34, 8, 4, 0, 35, 8, 4, 0, 36, 8, - 13, 1, 37, 8, 0, 0, 33, 8, 4, 0, 38, 8, 4, 0, 39, 8, 18, 1, 91, 3, 15, 1, 40, 8, 16, 1, 41, 8, 17, 1, 42, 8, - 14, 1, 43, 8, 14, 1, 44, 8, 14, 1, 45, 8, 57, 0, 46, 8, 57, 0, 47, 8, 20, 1, 12, 0, 0, 0,250, 1, 9, 0,220, 0, - 0, 0,221, 0, 4, 0,224, 0, 4, 0,232, 0, 9, 0,225, 0, 7, 0,227, 0, 7, 0,228, 0, 9, 0, 48, 8, 9, 0, 49, 8, - 9, 0,229, 0, 9, 0,231, 0, 21, 1, 48, 0, 21, 1, 0, 0, 21, 1, 1, 0, 9, 0, 50, 8, 9, 0, 26, 0, 0, 0, 27, 0, - 4, 0, 19, 0, 4, 0, 17, 0, 4, 0, 23, 0, 4, 0, 87, 0, 4, 0, 51, 8, 4, 0, 52, 8, 4, 0, 35, 8, 4, 0, 36, 8, - 4, 0, 53, 8, 4, 0,243, 0, 4, 0, 54, 8, 4, 0, 55, 8, 7, 0, 56, 8, 7, 0, 37, 0, 7, 0, 57, 8, 7, 0, 58, 8, - 4, 0,121, 0, 4, 0, 59, 8, 19, 1, 60, 8, 36, 0, 79, 0, 46, 0,129, 0, 32, 0, 61, 8, 49, 0,132, 0, 7, 0, 62, 8, - 7, 0, 63, 8, 20, 1, 59, 1, 21, 1, 64, 8, 21, 1, 65, 8, 21, 1, 66, 8, 12, 0, 67, 8, 22, 1, 68, 8, 9, 0, 69, 8, - 7, 0,249, 3, 7, 0, 70, 8, 7, 0, 71, 8, 4, 0, 72, 8, 4, 0, 73, 8, 7, 0, 74, 8, 9, 0, 75, 8, 4, 0, 76, 8, - 4, 0, 77, 8, 4, 0, 78, 8, 7, 0, 79, 8, 23, 1, 4, 0, 23, 1, 0, 0, 23, 1, 1, 0, 12, 0, 80, 8, 21, 1, 81, 8, -205, 0, 11, 0, 12, 0, 82, 8, 12, 0, 67, 8, 12, 0, 83, 8, 21, 1, 84, 8, 0, 0, 85, 8, 0, 0, 86, 8, 4, 0, 87, 8, - 4, 0, 88, 8, 4, 0, 89, 8, 4, 0, 37, 0, 24, 0, 90, 8, 24, 1, 4, 0, 7, 0, 91, 8, 7, 0, 65, 3, 2, 0, 92, 8, - 2, 0, 93, 8, 25, 1, 6, 0, 7, 0, 94, 8, 7, 0, 95, 8, 7, 0, 96, 8, 7, 0, 97, 8, 4, 0, 98, 8, 4, 0, 99, 8, - 26, 1, 13, 0, 7, 0,100, 8, 7, 0,101, 8, 7, 0,102, 8, 7, 0,103, 8, 7, 0,104, 8, 7, 0,105, 8, 7, 0,106, 8, - 7, 0,107, 8, 7, 0,108, 8, 7, 0,109, 8, 4, 0,226, 2, 4, 0,110, 8, 4, 0,111, 8, 27, 1, 2, 0, 7, 0, 87, 5, - 7, 0, 37, 0, 28, 1, 5, 0, 7, 0,112, 8, 7, 0,113, 8, 4, 0, 90, 0, 4, 0,182, 2, 4, 0,114, 8, 29, 1, 6, 0, - 29, 1, 0, 0, 29, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,115, 8, 2, 0, 56, 0, 30, 1, 8, 0, 30, 1, 0, 0, - 30, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,115, 8, 2, 0, 56, 0, 7, 0, 23, 0, 7, 0,121, 0, 31, 1, 45, 0, - 31, 1, 0, 0, 31, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,115, 8, 2, 0,239, 0, 2, 0, 35, 4, 2, 0,116, 8, - 7, 0,117, 8, 7, 0, 88, 0, 7, 0,239, 2, 4, 0,118, 8, 4, 0, 81, 0, 4, 0,184, 2, 7, 0,119, 8, 7, 0,120, 8, - 7, 0,121, 8, 7, 0,122, 8, 7, 0,123, 8, 7, 0,124, 8, 7, 0,236, 2, 7, 0, 56, 1, 7, 0,125, 8, 7, 0,126, 8, - 7, 0, 37, 0, 7, 0,127, 8, 7, 0,128, 8, 7, 0,129, 8, 2, 0,130, 8, 2, 0,131, 8, 2, 0,132, 8, 2, 0,133, 8, - 2, 0,134, 8, 2, 0,135, 8, 2, 0,136, 8, 2, 0,137, 8, 2, 0, 17, 2, 2, 0,138, 8, 2, 0, 14, 2, 2, 0,139, 8, - 0, 0,140, 8, 0, 0,141, 8, 7, 0,237, 0, 32, 1,142, 8, 67, 0,229, 1, 33, 1, 16, 0, 33, 1, 0, 0, 33, 1, 1, 0, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,115, 8, 2, 0,239, 0, 7, 0,231, 2, 7, 0,232, 2, 7, 0,233, 2, 7, 0, 64, 2, - 7, 0,234, 2, 7, 0,235, 2, 7, 0,143, 8, 7, 0,236, 2, 7, 0,238, 2, 7, 0,239, 2,231, 0, 5, 0, 2, 0, 17, 0, - 2, 0, 25, 8, 2, 0, 19, 0, 2, 0,144, 8, 27, 0,165, 6,230, 0, 3, 0, 4, 0, 68, 0, 4, 0,145, 8,231, 0, 2, 0, - 34, 1, 7, 0, 34, 1, 0, 0, 34, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, 9, 0,146, 8, - 35, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0,147, 8, 4, 0,148, 8, 4, 0, 37, 0, 36, 1, 4, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 2, 0, 89, 0, 2, 0, 69, 0, 37, 1, 4, 0, 0, 0, 20, 0, 66, 0,149, 8, 7, 0, 76, 1, 7, 0, 37, 0, - 38, 1, 6, 0, 2, 0,150, 8, 2, 0,151, 8, 2, 0, 17, 0, 2, 0,152, 8, 0, 0,153, 8, 0, 0,154, 8, 39, 1, 5, 0, - 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0,155, 8, 0, 0,156, 8, 40, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, - 0, 0, 20, 0, 41, 1, 4, 0, 2, 0,157, 8, 2, 0,158, 8, 2, 0, 19, 0, 2, 0, 37, 0, 42, 1, 6, 0, 0, 0, 20, 0, - 0, 0,159, 8, 2, 0,160, 8, 2, 0,236, 2, 2, 0, 69, 1, 2, 0, 69, 0, 43, 1, 5, 0, 0, 0, 20, 0, 7, 0, 65, 3, - 7, 0,129, 4, 2, 0, 19, 0, 2, 0,196, 2, 44, 1, 3, 0, 0, 0, 20, 0, 4, 0,184, 2, 4, 0,157, 8, 45, 1, 7, 0, - 0, 0, 20, 0, 7, 0,129, 4, 0, 0,161, 8, 0, 0,162, 8, 2, 0, 69, 1, 2, 0, 89, 0, 4, 0,163, 8, 46, 1, 4, 0, - 0, 0,164, 8, 0, 0,165, 8, 4, 0, 17, 0, 7, 0,200, 2, 47, 1, 3, 0, 32, 0,166, 8, 0, 0,167, 8, 0, 0,168, 8, - 48, 1, 18, 0, 48, 1, 0, 0, 48, 1, 1, 0, 2, 0, 17, 0, 2, 0,169, 8, 2, 0, 19, 0, 2, 0,170, 8, 2, 0,171, 8, - 2, 0,172, 8, 2, 0, 89, 0, 2, 0, 69, 0, 0, 0, 20, 0, 9, 0, 2, 0, 49, 1,173, 8, 32, 0, 44, 0, 2, 0,105, 5, - 2, 0, 70, 8, 2, 0,174, 8, 2, 0, 37, 0, 50, 1, 11, 0, 0, 0, 20, 0, 0, 0, 17, 0, 0, 0,175, 8, 2, 0, 19, 0, - 2, 0,196, 2, 2, 0,176, 8, 4, 0,177, 8, 4, 0,178, 8, 4, 0,179, 8, 4, 0,180, 8, 4, 0,181, 8, 51, 1, 1, 0, - 0, 0,182, 8, 52, 1, 4, 0, 42, 0,132, 6, 0, 0,121, 7, 4, 0, 69, 1, 4, 0, 19, 0, 49, 1, 18, 0, 49, 1, 0, 0, - 49, 1, 1, 0, 49, 1,183, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,184, 8, 2, 0,172, 8, 2, 0,169, 8, 2, 0,185, 8, - 2, 0, 69, 0, 2, 0,226, 1, 0, 0, 20, 0, 9, 0, 2, 0, 53, 1,173, 8, 48, 1,186, 8, 2, 0, 15, 0, 2, 0,187, 8, - 4, 0,188, 8, 54, 1, 3, 0, 4, 0,210, 2, 4, 0, 37, 0, 32, 0, 44, 0, 55, 1, 12, 0,161, 0,189, 8, 2, 0, 17, 0, - 2, 0, 19, 0, 4, 0,117, 8, 4, 0, 88, 0, 0, 0, 20, 0, 0, 0,190, 8, 2, 0,191, 8, 2, 0,192, 8, 2, 0,193, 8, - 2, 0,194, 8, 7, 0,195, 8, 56, 1, 13, 0, 2, 0, 19, 0, 2, 0,196, 8, 4, 0, 89, 0, 4, 0, 69, 0, 2, 0,197, 8, - 7, 0,249, 3, 7, 0,198, 8, 22, 1, 68, 8, 57, 1,199, 8, 2, 0, 17, 0, 2, 0,248, 1, 2, 0,233, 5, 2, 0,200, 8, - 58, 1, 11, 0, 4, 0,210, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 44, 0, 80, 0,201, 8, 0, 0, 20, 0, 7, 0,202, 8, - 7, 0,203, 8, 7, 0,134, 3, 2, 0,204, 8, 2, 0,205, 8, 59, 1, 5, 0, 2, 0, 17, 0, 2, 0, 89, 0, 4, 0, 37, 0, - 46, 0,129, 0, 32, 0, 94, 5, 60, 1, 5, 0, 4, 0, 37, 0, 4, 0, 17, 0, 0, 0, 20, 0, 0, 0,155, 8, 32, 0, 44, 0, - 61, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,169, 8, 2, 0,135, 3, 7, 0,206, 8, 7, 0,207, 8, 7, 0,179, 4, - 7, 0,147, 3, 7, 0,106, 3, 7, 0,109, 3, 7, 0,208, 8, 7, 0,209, 8, 32, 0,210, 8, 62, 1, 10, 0, 2, 0, 19, 0, - 2, 0, 17, 0, 4, 0,117, 8, 4, 0, 88, 0, 0, 0, 20, 0, 0, 0,190, 8, 2, 0, 89, 0, 2, 0, 69, 0, 2, 0,226, 1, - 2, 0,248, 1, 63, 1, 8, 0, 32, 0, 44, 0, 7, 0,233, 2, 7, 0,211, 8, 7, 0,212, 8, 7, 0, 37, 0, 2, 0, 89, 0, - 2, 0,196, 2, 7, 0, 69, 0, 64, 1, 12, 0, 2, 0, 17, 0, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0,236, 2, 2, 0,210, 2, - 2, 0,213, 8, 4, 0, 37, 0, 7, 0,214, 8, 7, 0,215, 8, 7, 0,216, 8, 7, 0,217, 8, 0, 0,218, 8, 65, 1, 9, 0, - 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,117, 8, 4, 0, 88, 0, 0, 0, 20, 0, 2, 0,179, 4, 2, 0, 63, 0, 2, 0,219, 8, - 2, 0,220, 8, 66, 1, 7, 0, 4, 0,184, 2, 4, 0,221, 8, 4, 0,222, 8, 4, 0,223, 8, 7, 0,224, 8, 7, 0,225, 8, - 0, 0,161, 8, 67, 1, 7, 0, 0, 0,226, 8, 32, 0,227, 8, 0, 0,167, 8, 2, 0,228, 8, 2, 0, 89, 0, 4, 0, 69, 0, - 0, 0,168, 8, 68, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,117, 8, 4, 0, 88, 0, 0, 0,229, 8, 0, 0,230, 8, - 69, 1, 1, 0, 4, 0, 19, 0, 70, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,231, 8, 7, 0,232, 8, - 42, 0,132, 6, 71, 1, 4, 0, 0, 0, 59, 2, 2, 0, 19, 0, 4, 0, 17, 0, 32, 0, 44, 0, 72, 1, 2, 0, 4, 0, 17, 0, - 4, 0, 52, 6, 73, 1, 6, 0, 0, 0,164, 8, 0, 0,165, 8, 4, 0, 17, 0, 7, 0, 25, 2, 32, 0, 44, 3, 32, 0,233, 8, - 53, 1, 10, 0, 53, 1, 0, 0, 53, 1, 1, 0, 53, 1,183, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,169, 8, 2, 0,234, 8, - 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 44, 0, 74, 1, 10, 0, 7, 0,134, 3, 7, 0,235, 8, 7, 0,236, 8, 7, 0,237, 8, - 7, 0,238, 8, 4, 0, 19, 0, 7, 0,213, 8, 7, 0,239, 8, 7, 0,240, 8, 7, 0, 37, 0, 57, 1, 8, 0, 7, 0,241, 8, - 7, 0,242, 8, 7, 0,243, 8, 7, 0,244, 8, 7, 0,245, 8, 7, 0,246, 8, 7, 0,247, 8, 7, 0,248, 8, 22, 1, 16, 0, - 27, 0, 31, 0, 0, 0, 34, 0, 43, 0,147, 0, 9, 0,220, 0, 43, 0,249, 8, 36, 0, 79, 0, 7, 0,249, 3, 7, 0,250, 8, - 7, 0,198, 8, 7, 0,241, 8, 7, 0,242, 8, 7, 0,251, 8, 4, 0, 90, 0, 4, 0, 37, 0, 9, 0,252, 8, 9, 0,253, 8, - 75, 1, 15, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 8, 1,254, 8,217, 0, 71, 6, - 22, 1, 68, 8, 2, 0, 69, 1, 2, 0,196, 8, 2, 0, 79, 2, 2, 0, 80, 2, 2, 0, 19, 0, 2, 0,122, 6, 4, 0, 69, 0, - 76, 1, 6, 0, 76, 1, 0, 0, 76, 1, 1, 0, 32, 0, 44, 0, 9, 0,255, 8, 4, 0,244, 0, 4, 0, 37, 0, 67, 0, 4, 0, - 27, 0, 31, 0, 12, 0, 0, 9, 4, 0,126, 0, 7, 0, 1, 9, 77, 1, 27, 0, 77, 1, 0, 0, 77, 1, 1, 0, 26, 0, 2, 9, - 77, 1, 38, 0, 12, 0, 3, 9, 0, 0, 20, 0, 7, 0, 4, 9, 7, 0, 5, 9, 7, 0, 6, 9, 7, 0, 7, 9, 4, 0, 19, 0, - 7, 0, 8, 9, 7, 0, 9, 9, 7, 0, 10, 9, 7, 0, 76, 1, 7, 0, 25, 2, 7, 0, 11, 9, 7, 0,182, 2, 7, 0, 12, 9, - 7, 0, 13, 9, 7, 0, 14, 9, 7, 0, 15, 9, 7, 0, 16, 9, 7, 0,169, 0, 4, 0,126, 0, 2, 0,142, 5, 2, 0,179, 4, - 78, 1, 25, 0, 27, 0, 31, 0, 39, 0, 74, 0, 12, 0, 17, 9, 12, 0, 18, 9, 12, 0, 19, 9, 77, 1, 20, 9, 9, 0, 21, 9, - 9, 0, 22, 9, 4, 0, 19, 0, 4, 0, 28, 6, 2, 0,240, 2, 2, 0, 81, 6, 4, 0, 37, 0, 4, 0,126, 0, 4, 0, 23, 9, - 2, 0, 24, 9, 2, 0, 25, 9, 2, 0, 26, 9, 2, 0, 27, 9, 4, 0, 28, 9, 4, 0, 29, 9, 4, 0, 30, 9, 4, 0, 31, 9, - 4, 0, 32, 9, 4, 0, 33, 9, 79, 1, 2, 0, 7, 0,142, 2, 4, 0, 19, 0,165, 0, 5, 0, 79, 1, 34, 9, 4, 0,182, 2, - 4, 0, 35, 9, 4, 0, 36, 9, 4, 0, 19, 0,164, 0, 16, 0, 4, 0, 37, 9, 4, 0, 38, 9, 4, 0, 39, 9, 4, 0, 40, 9, - 2, 0, 41, 9, 2, 0, 42, 9, 2, 0, 43, 9, 2, 0,244, 0, 2, 0, 44, 9, 2, 0, 45, 9, 2, 0, 46, 9, 2, 0, 47, 9, - 4, 0, 48, 9, 4, 0, 49, 9, 4, 0, 50, 9, 4, 0, 51, 9, 80, 1, 44, 0, 80, 1, 0, 0, 80, 1, 1, 0, 26, 0, 2, 9, - 12, 0,161, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0, 52, 9, 2, 0, 53, 9, 2, 0, 54, 9, 2, 0,120, 3, 2, 0, 55, 9, - 4, 0, 62, 2, 4, 0, 30, 9, 4, 0, 31, 9, 77, 1, 56, 9, 80, 1, 38, 0, 80, 1, 57, 9, 12, 0, 58, 9, 9, 0, 59, 9, - 9, 0, 60, 9, 9, 0, 61, 9, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 62, 9, 7, 0, 4, 2, 7, 0,111, 3, 7, 0,113, 3, - 2, 0,143, 3, 2, 0, 37, 0, 7, 0, 63, 9, 7, 0, 64, 9, 7, 0,116, 3, 7, 0, 65, 9, 7, 0, 66, 9, 7, 0, 67, 9, - 7, 0, 68, 9, 7, 0, 69, 9, 7, 0, 70, 9, 7, 0, 71, 9, 7, 0, 72, 9, 7, 0, 54, 2,165, 0, 99, 3, 32, 0, 73, 9, - 80, 1, 74, 9,162, 0, 14, 0, 12, 0, 75, 9, 81, 1, 76, 9, 2, 0, 19, 0, 2, 0, 77, 9, 7, 0, 91, 2, 7, 0, 78, 9, - 7, 0, 79, 9, 12, 0, 80, 9, 4, 0, 81, 9, 4, 0, 82, 9, 9, 0, 83, 9, 9, 0, 84, 9,164, 0, 98, 3, 0, 0, 85, 9, - 82, 1, 1, 0, 4, 0, 82, 9, 83, 1, 12, 0, 4, 0, 82, 9, 7, 0,181, 8, 2, 0, 86, 9, 2, 0, 87, 9, 7, 0, 88, 9, - 7, 0, 89, 9, 2, 0, 90, 9, 2, 0, 19, 0, 7, 0, 91, 9, 7, 0, 92, 9, 7, 0, 93, 9, 7, 0, 94, 9, 84, 1, 7, 0, - 84, 1, 0, 0, 84, 1, 1, 0, 12, 0, 95, 9, 4, 0, 19, 0, 4, 0, 96, 9, 0, 0,240, 3,254, 0, 97, 9,161, 0, 7, 0, - 27, 0, 31, 0, 12, 0, 98, 9, 12, 0, 75, 9, 12, 0, 99, 9, 12, 0,100, 0, 4, 0, 19, 0, 4, 0,100, 9,221, 0, 5, 0, - 27, 0,101, 9, 12, 0, 75, 9, 67, 0,102, 9, 4, 0,103, 9, 4, 0, 19, 0, 85, 1, 13, 0,216, 0, 0, 0,216, 0, 1, 0, - 12, 0, 19, 6, 4, 0, 20, 6, 7, 0, 21, 6, 2, 0, 22, 6,217, 0, 71, 6,161, 0, 94, 3,221, 0,104, 9, 0, 0, 69, 1, - 0, 0, 74, 6, 2, 0, 19, 0, 7, 0,105, 9, 86, 1, 8, 0, 86, 1, 0, 0, 86, 1, 1, 0, 84, 1,106, 9, 36, 0, 79, 0, - 12, 0,100, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0,107, 9, 87, 1, 5, 0, 87, 1, 0, 0, 87, 1, 1, 0, 36, 0, 79, 0, - 2, 0, 19, 0, 0, 0,108, 9, 88, 1, 14, 0, 88, 1, 0, 0, 88, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, - 0, 0,109, 9, 0, 0,110, 9, 0, 0,108, 9, 7, 0,111, 9, 7, 0,112, 9, 4, 0, 37, 0, 36, 0, 79, 0, 7, 0,113, 9, - 7, 0,114, 9, 89, 1, 9, 0, 89, 1, 0, 0, 89, 1, 1, 0, 32, 0,115, 9, 0, 0,243, 2, 7, 0,116, 9, 2, 0,117, 9, - 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,118, 9, 90, 1, 7, 0, 42, 0,132, 6, 26, 0, 2, 9, 4, 0, 19, 0, 4, 0,119, 9, - 12, 0,120, 9, 32, 0,115, 9, 0, 0,243, 2, 91, 1, 15, 0, 32, 0,115, 9, 2, 0,121, 9, 2, 0, 19, 0, 2, 0,122, 9, - 2, 0,123, 9, 0, 0,243, 2, 32, 0,124, 9, 0, 0,125, 9, 7, 0,126, 9, 7, 0, 25, 2, 7, 0,127, 9, 7, 0,128, 9, - 2, 0, 17, 0, 2, 0, 69, 1, 7, 0, 76, 1, 92, 1, 6, 0, 32, 0,115, 9, 7, 0, 34, 9, 2, 0,129, 9, 2, 0,130, 9, - 2, 0, 19, 0, 2, 0,131, 9, 93, 1, 6, 0, 32, 0,115, 9, 4, 0,132, 9, 4, 0,133, 9, 4, 0, 90, 0, 4, 0, 37, 0, - 0, 0,243, 2, 94, 1, 4, 0, 32, 0,115, 9, 4, 0, 19, 0, 4, 0,132, 9, 0, 0,243, 2, 95, 1, 4, 0, 32, 0,115, 9, - 4, 0, 19, 0, 4, 0,132, 9, 0, 0,243, 2, 96, 1, 4, 0, 32, 0,115, 9, 4, 0, 19, 0, 4, 0,132, 9, 0, 0,243, 2, - 97, 1, 2, 0, 4, 0, 19, 0, 7, 0,249, 3, 98, 1, 2, 0, 32, 0,115, 9, 0, 0,243, 2, 99, 1, 10, 0, 32, 0,115, 9, - 4, 0,134, 9, 7, 0,120, 0, 4, 0, 19, 0, 2, 0,125, 6, 2, 0,135, 9, 2, 0, 89, 0, 2, 0, 69, 0, 7, 0,136, 9, - 0, 0,243, 2,100, 1, 10, 0, 32, 0,115, 9, 2, 0, 17, 0, 2, 0, 43, 4, 4, 0, 87, 0, 4, 0, 88, 0, 7, 0,211, 8, - 7, 0,212, 8, 4, 0, 37, 0,161, 0,189, 8, 0, 0,243, 2,101, 1, 4, 0, 32, 0,115, 9, 4, 0,121, 3, 4, 0,137, 9, - 0, 0,243, 2,102, 1, 4, 0, 32, 0,115, 9, 4, 0,121, 3, 4, 0, 37, 0, 0, 0,243, 2,103, 1, 6, 0, 32, 0,115, 9, - 7, 0,120, 0, 7, 0, 56, 3, 4, 0,138, 9, 2, 0,121, 3, 2, 0,122, 3,104, 1, 6, 0, 32, 0,115, 9, 4, 0,139, 9, - 4, 0,140, 9, 7, 0,141, 9, 7, 0,142, 9, 0, 0,243, 2,105, 1, 16, 0, 32, 0,115, 9, 32, 0, 57, 9, 4, 0, 17, 0, - 7, 0,143, 9, 7, 0,144, 9, 7, 0,145, 9, 7, 0,146, 9, 7, 0,147, 9, 7, 0,148, 9, 7, 0,149, 9, 7, 0,150, 9, - 7, 0,151, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 89, 0, 2, 0, 69, 0,106, 1, 3, 0, 32, 0,115, 9, 4, 0, 19, 0, - 4, 0, 17, 2,107, 1, 5, 0, 32, 0,115, 9, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,152, 9, 0, 0,243, 2,108, 1, 10, 0, - 32, 0,115, 9, 0, 0,243, 2, 2, 0,153, 9, 2, 0,154, 9, 0, 0,155, 9, 0, 0,156, 9, 7, 0,157, 9, 7, 0,158, 9, - 7, 0,159, 9, 7, 0,160, 9,109, 1, 5, 0, 32, 0,115, 9, 0, 0,243, 2, 7, 0,190, 2, 2, 0,161, 9, 2, 0, 19, 0, -110, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,162, 9, 7, 0,163, 9, 2, 0, 19, 0, - 2, 0, 17, 2,111, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,162, 9, 7, 0,163, 9, - 2, 0, 19, 0, 2, 0, 17, 2,112, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,162, 9, - 7, 0,163, 9, 2, 0, 19, 0, 2, 0, 17, 2,113, 1, 7, 0, 32, 0,115, 9, 0, 0,243, 2, 7, 0, 76, 1, 7, 0, 85, 1, - 2, 0, 19, 0, 2, 0, 69, 1, 4, 0, 37, 0,114, 1, 5, 0, 32, 0, 44, 3, 7, 0, 76, 1, 2, 0, 48, 3, 0, 0, 50, 3, - 0, 0,164, 9,115, 1, 10, 0,115, 1, 0, 0,115, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0,165, 9, 7, 0, 19, 1, - 7, 0, 20, 1, 2, 0, 95, 9, 2, 0,166, 9, 32, 0, 44, 0,116, 1, 22, 0,116, 1, 0, 0,116, 1, 1, 0, 2, 0, 19, 0, - 2, 0, 69, 1, 2, 0,167, 9, 2, 0,168, 9, 36, 0, 79, 0,161, 0,189, 8, 32, 0,161, 0, 7, 0, 87, 0, 7, 0, 88, 0, - 7, 0,169, 9, 7, 0,170, 9, 7, 0,171, 9, 7, 0,172, 9, 7, 0,229, 2, 7, 0,173, 9, 7, 0,191, 8, 7, 0,174, 9, - 0, 0,175, 9, 0, 0,176, 9, 12, 0,102, 3,117, 1, 8, 0, 7, 0, 32, 2, 7, 0,211, 8, 7, 0,212, 8, 9, 0, 2, 0, - 2, 0,177, 9, 2, 0,178, 9, 2, 0,179, 9, 2, 0,180, 9,118, 1, 18, 0,118, 1, 0, 0,118, 1, 1, 0,118, 1,181, 9, - 0, 0, 20, 0,117, 1,182, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,183, 9, 2, 0,184, 9, 2, 0,185, 9, 2, 0,186, 9, - 4, 0, 89, 0, 7, 0,187, 9, 7, 0,188, 9, 4, 0,189, 9, 4, 0,190, 9,118, 1,191, 9,119, 1,192, 9,120, 1, 33, 0, -120, 1, 0, 0,120, 1, 1, 0,120, 1,193, 9, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 34, 8, 2, 0, 70, 8, - 2, 0,194, 9, 2, 0,128, 0, 2, 0,184, 9, 2, 0, 25, 8, 12, 0,184, 8, 12, 0,195, 9, 27, 0,165, 6, 9, 0,196, 9, - 7, 0,187, 9, 7, 0,188, 9, 7, 0, 64, 2, 7, 0,197, 9, 2, 0,198, 9, 2, 0,199, 9, 7, 0,200, 9, 7, 0,201, 9, - 2, 0,202, 9, 2, 0,203, 9, 9, 0,204, 9, 24, 0,205, 9, 24, 0,206, 9, 24, 0,207, 9,121, 1,148, 0,122, 1,208, 9, -123, 1,209, 9,119, 1, 8, 0,119, 1, 0, 0,119, 1, 1, 0,120, 1,210, 9,120, 1,211, 9,118, 1,212, 9,118, 1,191, 9, - 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 22, 0, 27, 0, 31, 0, 39, 0, 74, 0,163, 0, 97, 3, 12, 0,213, 9, 12, 0,214, 9, -117, 1,215, 9, 12, 0,216, 9, 4, 0, 17, 0, 4, 0,217, 9, 4, 0,218, 9, 4, 0,219, 9, 4, 0, 19, 0, 4, 0, 37, 0, - 12, 0,220, 9,123, 1,221, 9, 4, 0,222, 9, 9, 0,223, 9, 9, 0,224, 9, 4, 0,225, 9, 9, 0,226, 9, 9, 0,227, 9, - 9, 0,228, 9,124, 1, 6, 0, 4, 0,119, 0, 4, 0,121, 0, 4, 0, 25, 8, 0, 0,229, 9, 0, 0,230, 9, 2, 0, 37, 0, -125, 1, 16, 0, 2, 0,233, 7, 2, 0,234, 7, 2, 0,231, 9, 2, 0,236, 8, 2, 0,232, 9, 2, 0, 67, 0, 7, 0,228, 2, - 7, 0,233, 9, 7, 0,234, 9, 2, 0, 91, 1, 0, 0,235, 9, 0, 0,236, 9, 2, 0,237, 9, 2, 0, 37, 0, 4, 0,238, 9, - 4, 0,239, 9,126, 1, 9, 0, 7, 0,240, 9, 7, 0,241, 9, 7, 0,251, 8, 7, 0, 65, 3, 7, 0,242, 9, 7, 0, 87, 6, - 2, 0, 63, 3, 0, 0,243, 9, 0, 0, 37, 0,127, 1, 4, 0, 7, 0,244, 9, 7, 0,245, 9, 2, 0, 63, 3, 2, 0, 37, 0, -128, 1, 3, 0, 7, 0,246, 9, 7, 0, 56, 8, 7, 0, 15, 0,129, 1, 7, 0, 0, 0,250, 1, 2, 0, 12, 5, 2, 0, 13, 5, - 2, 0, 14, 5, 2, 0,201, 4, 4, 0,121, 0, 4, 0, 41, 4,130, 1, 9, 0, 7, 0,247, 9, 7, 0,248, 9, 7, 0,249, 9, - 7, 0, 75, 2, 7, 0,250, 9, 7, 0,251, 9, 7, 0,252, 9, 2, 0,253, 9, 2, 0,254, 9,131, 1, 4, 0, 2, 0,255, 9, - 2, 0, 0, 10, 2, 0, 1, 10, 2, 0, 2, 10,132, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,133, 1, 2, 0, 0, 0,163, 0, - 0, 0, 3, 10,134, 1, 1, 0, 0, 0, 20, 0,135, 1, 10, 0, 0, 0, 4, 10, 0, 0, 5, 10, 0, 0, 80, 6, 0, 0, 6, 10, - 2, 0,231, 9, 2, 0, 7, 10, 7, 0, 8, 10, 7, 0, 9, 10, 7, 0, 10, 10, 7, 0,173, 9,136, 1, 2, 0, 9, 0, 11, 10, - 9, 0, 12, 10,137, 1, 11, 0, 0, 0, 14, 5, 0, 0, 17, 0, 0, 0, 63, 3, 0, 0, 65, 3, 0, 0, 13, 10, 0, 0,106, 0, - 0, 0, 59, 2, 7, 0, 14, 10, 7, 0, 15, 10, 7, 0, 16, 10, 7, 0, 17, 10,138, 1, 8, 0, 7, 0,150, 8, 7, 0,120, 0, - 7, 0,236, 9, 7, 0,147, 2, 7, 0, 18, 10, 7, 0,233, 0, 7, 0, 19, 10, 4, 0, 17, 0,139, 1, 4, 0, 2, 0, 20, 10, - 2, 0, 21, 10, 2, 0, 22, 10, 2, 0, 37, 0,140, 1, 7, 0, 7, 0, 23, 10, 7, 0,190, 2, 7, 0, 24, 10, 7, 0, 30, 8, - 7, 0, 31, 8, 7, 0, 32, 8, 7, 0, 25, 10,141, 1, 6, 0, 2, 0, 26, 10, 2, 0, 27, 10, 7, 0, 28, 10, 7, 0, 29, 10, - 7, 0, 30, 10, 7, 0, 31, 10,142, 1, 1, 0, 0, 0, 20, 0,143, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 19, 0, - 2, 0, 32, 10,144, 1, 10, 0, 2, 0,229, 3, 2, 0, 19, 0, 7, 0,129, 4, 7, 0, 33, 10, 7, 0, 34, 10, 7, 0, 35, 10, - 7, 0, 36, 10,143, 1, 37, 10,143, 1, 38, 10,143, 1, 39, 10, 63, 0, 11, 0, 4, 0, 19, 0, 4, 0, 63, 0, 4, 0, 40, 10, - 4, 0, 41, 10, 24, 0, 42, 10, 24, 0, 43, 10,144, 1, 44, 10, 7, 0, 45, 10, 7, 0, 46, 10, 7, 0, 47, 10, 7, 0, 48, 10, -234, 0, 10, 0, 4, 0, 95, 9, 4, 0, 49, 10, 7, 0, 50, 10, 7, 0, 51, 10, 7, 0, 52, 10, 7, 0, 53, 10, 7, 0, 10, 0, - 7, 0, 12, 0, 4, 0, 69, 1, 4, 0,233, 2,233, 0, 18, 0, 4, 0,124, 0, 4, 0, 54, 10, 4, 0, 55, 10, 7, 0, 56, 10, - 4, 0, 57, 10, 7, 0, 58, 10, 7, 0, 59, 10, 4, 0, 60, 10, 7, 0, 61, 10, 4, 0, 62, 10, 7, 0, 63, 10,234, 0, 64, 10, - 7, 0, 65, 10, 7, 0, 66, 10, 7, 0, 67, 10, 7, 0, 68, 10, 4, 0, 69, 10, 4, 0, 37, 0,145, 1, 4, 0, 47, 0,220, 2, - 7, 0, 70, 10, 7, 0,158, 1, 7, 0, 37, 0,194, 0, 35, 0, 27, 0, 31, 0,145, 1, 71, 10, 63, 0, 37, 10, 51, 0, 72, 10, - 57, 0, 73, 10, 0, 0, 74, 10, 0, 0, 75, 10, 30, 0,148, 0, 0, 0, 76, 10, 7, 0, 77, 10, 2, 0,239, 5, 2, 0, 37, 0, - 4, 0,106, 0, 4, 0, 19, 0, 7, 0, 78, 10, 4, 0, 72, 2, 4, 0, 79, 10, 7, 0, 80, 10, 7, 0, 81, 10, 7, 0, 82, 10, - 7, 0,158, 1, 4, 0, 83, 10, 7, 0, 84, 10, 0, 0, 85, 10, 0, 0, 86, 10, 0, 0, 87, 10, 0, 0,226, 1, 7, 0, 88, 10, - 7, 0, 89, 10, 7, 0, 90, 10, 7, 0, 91, 10, 4, 0, 92, 10, 7, 0, 93, 10, 7, 0, 94, 10, 7, 0, 95, 10,146, 1, 10, 0, - 4, 0, 17, 0, 4, 0,120, 0, 4, 0, 19, 0, 4, 0,183, 3, 4, 0, 96, 10, 4, 0, 97, 10, 4, 0, 98, 10, 0, 0, 92, 0, - 0, 0, 20, 0, 9, 0, 2, 0,147, 1, 1, 0, 0, 0, 18, 8, 91, 0, 7, 0,146, 1, 99, 10, 4, 0,100, 10, 4, 0,101, 10, - 4, 0,102, 10, 4, 0, 37, 0, 9, 0,103, 10,147, 1,104, 10,148, 1, 5, 0, 7, 0,142, 2, 7, 0,210, 2, 7, 0, 25, 2, - 2, 0,118, 2, 2, 0, 37, 0,149, 1, 5, 0, 7, 0,142, 2, 7, 0,105, 10, 7, 0,106, 10, 7, 0,107, 10, 7, 0,210, 2, -150, 1, 5, 0, 32, 0,108, 10,151, 1, 22, 0, 7, 0,209, 5, 7, 0,109, 10, 7, 0, 56, 0,152, 1, 7, 0, 4, 0,110, 10, - 4, 0,111, 10, 4, 0,112, 10, 7, 0,113, 10, 7, 0,114, 10, 7, 0,115, 10, 7, 0, 56, 0,153, 1, 8, 0,153, 1, 0, 0, -153, 1, 1, 0, 32, 0, 44, 0, 4, 0,252, 0, 2, 0, 19, 0, 2, 0, 69, 1, 7, 0,210, 2, 7, 0,158, 8,154, 1, 6, 0, -154, 1, 0, 0,154, 1, 1, 0, 32, 0, 44, 0, 2, 0,195, 2, 2, 0, 19, 0, 2, 0,116, 10,155, 1, 17, 0,149, 1,177, 3, -149, 1,117, 10,148, 1,118, 10,149, 1,142, 8,150, 1,119, 10, 4, 0, 81, 0, 7, 0,210, 2, 7, 0,239, 2, 7, 0,120, 10, - 4, 0,110, 10, 4, 0,121, 10, 7, 0,114, 10, 7, 0,115, 10, 7, 0,106, 0, 4, 0,122, 10, 2, 0, 19, 0, 2, 0,123, 10, -156, 1, 9, 0, 7, 0,124, 10, 7, 0,248, 0, 7, 0,125, 10, 7, 0,126, 10, 7, 0,127, 10, 7, 0,128, 10, 7, 0,129, 10, - 7, 0,130, 10, 7, 0,131, 10,157, 1,111, 0, 27, 0, 31, 0, 39, 0, 74, 0,158, 1,132, 10,156, 1,133, 10,172, 0, 63, 4, - 4, 0, 19, 0, 2, 0, 17, 0, 2, 0,153, 9, 2, 0,134, 10, 2, 0,135, 10, 2, 0,143, 3, 2, 0,136, 10, 2, 0,137, 10, - 2, 0,138, 10, 2, 0,139, 10, 2, 0,140, 10, 2, 0,141, 10, 2, 0,142, 10, 2, 0,143, 10, 2, 0,113, 5, 2, 0,144, 10, - 2, 0,145, 10, 2, 0,146, 10, 2, 0,147, 10, 2, 0,148, 10, 2, 0, 14, 2, 2, 0,135, 8, 2, 0,110, 8, 2, 0,149, 10, - 2, 0,150, 10, 2, 0,193, 3, 2, 0,194, 3, 2, 0,151, 10, 2, 0,152, 10, 2, 0,153, 10, 2, 0,154, 10, 7, 0,155, 10, - 7, 0,156, 10, 7, 0,157, 10, 2, 0, 62, 5, 2, 0,158, 10, 7, 0,159, 10, 7, 0,160, 10, 7, 0,161, 10, 7, 0,117, 8, - 7, 0, 88, 0, 7, 0,239, 2, 7, 0,123, 8, 7, 0,162, 10, 7, 0,163, 10, 7, 0,164, 10, 4, 0,118, 8, 4, 0,116, 8, - 4, 0,165, 10, 7, 0,119, 8, 7, 0,120, 8, 7, 0,121, 8, 7, 0,166, 10, 7, 0,167, 10, 7, 0,168, 10, 7, 0,169, 10, - 7, 0,170, 10, 7, 0, 56, 0, 7, 0,171, 10, 7, 0,172, 10, 7, 0,173, 10, 7, 0,174, 10, 7, 0,134, 3, 7, 0,106, 0, - 7, 0,175, 10, 7, 0,176, 10, 7, 0,177, 10, 7, 0,178, 10, 7, 0,179, 10, 7, 0,180, 10, 7, 0,181, 10, 4, 0,182, 10, - 4, 0,183, 10, 7, 0,184, 10, 7, 0,185, 10, 7, 0,186, 10, 7, 0,187, 10, 7, 0,188, 10, 7, 0,207, 0, 7, 0,189, 10, - 7, 0,220, 3, 7, 0,218, 3, 7, 0,219, 3, 7, 0,190, 10, 7, 0,191, 10, 7, 0,192, 10, 7, 0,193, 10, 7, 0,194, 10, - 7, 0,195, 10, 7, 0,196, 10, 7, 0,197, 10, 7, 0,198, 10, 7, 0,199, 10, 7, 0,200, 10, 7, 0,201, 10, 7, 0,202, 10, - 4, 0,203, 10, 4, 0,204, 10, 67, 0,166, 3, 12, 0,205, 10, 67, 0,206, 10, 32, 0,207, 10, 32, 0,208, 10, 36, 0, 79, 0, -167, 0, 61, 1,167, 0,209, 10,147, 0, 44, 0,147, 0, 0, 0,147, 0, 1, 0,157, 1,210, 10,155, 1,211, 10,152, 1, 57, 9, -174, 0,245, 3, 9, 0,246, 3,159, 1,212, 10,159, 1,213, 10, 12, 0,214, 10, 12, 0,215, 10,132, 0,216, 10,140, 0,217, 10, -140, 0,218, 10, 32, 0,219, 10, 32, 0,220, 10, 32, 0, 38, 0, 12, 0,120, 9, 0, 0, 20, 0, 7, 0,237, 0, 7, 0, 10, 3, - 7, 0,221, 10, 4, 0,184, 2, 4, 0, 56, 0, 4, 0, 19, 0, 4, 0,118, 8, 4, 0,222, 10, 4, 0,223, 10, 4, 0,224, 10, - 2, 0,244, 0, 2, 0,225, 10, 2, 0,226, 10, 2, 0,227, 10, 0, 0,228, 10, 2, 0,229, 10, 2, 0,230, 10, 2, 0,231, 10, - 9, 0,232, 10,136, 0, 62, 4, 12, 0,253, 2, 12, 0,233, 10,160, 1,234, 10,161, 1,235, 10, 7, 0,236, 10,134, 0, 37, 0, -162, 1,252, 8, 7, 0, 32, 4, 7, 0,237, 10, 7, 0,238, 10, 7, 0,209, 5, 7, 0,144, 3, 7, 0,134, 3, 7, 0,239, 10, - 7, 0, 74, 2, 7, 0,240, 10, 7, 0,241, 10, 7, 0,242, 10, 7, 0,243, 10, 7, 0,244, 10, 7, 0,245, 10, 7, 0, 33, 4, - 7, 0,246, 10, 7, 0,247, 10, 7, 0,248, 10, 7, 0, 34, 4, 7, 0, 30, 4, 7, 0, 31, 4, 7, 0,249, 10, 7, 0,250, 10, - 4, 0,251, 10, 4, 0, 90, 0, 4, 0,252, 10, 4, 0,253, 10, 2, 0,254, 10, 2, 0,255, 10, 2, 0, 0, 11, 2, 0, 1, 11, - 2, 0, 2, 11, 2, 0, 3, 11, 2, 0, 4, 11, 2, 0,179, 4,172, 0, 63, 4,135, 0, 9, 0,162, 1, 5, 11, 7, 0, 6, 11, - 7, 0, 7, 11, 7, 0,230, 1, 7, 0, 8, 11, 4, 0, 90, 0, 2, 0, 9, 11, 2, 0, 10, 11, 67, 0,229, 1,163, 1, 4, 0, - 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 11, 11,164, 1, 6, 0,164, 1, 0, 0,164, 1, 1, 0,163, 1, 34, 9, - 4, 0,250, 0, 2, 0, 12, 11, 2, 0, 19, 0,165, 1, 5, 0,165, 1, 0, 0,165, 1, 1, 0, 12, 0, 13, 11, 4, 0, 14, 11, - 4, 0, 19, 0,166, 1, 9, 0,166, 1, 0, 0,166, 1, 1, 0, 12, 0,119, 0,165, 1, 15, 11, 4, 0, 19, 0, 2, 0, 12, 11, - 2, 0, 16, 11, 7, 0, 91, 0, 0, 0, 17, 11,163, 0, 6, 0, 27, 0, 31, 0, 12, 0, 30, 5, 4, 0, 19, 0, 2, 0, 18, 11, - 2, 0, 19, 11, 9, 0, 20, 11,167, 1, 7, 0,167, 1, 0, 0,167, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, - 0, 0, 21, 11, 0, 0, 22, 11,168, 1, 6, 0, 12, 0, 23, 11, 4, 0, 24, 11, 4, 0, 25, 11, 4, 0, 19, 0, 4, 0, 37, 0, -214, 0, 26, 11,169, 1, 3, 0, 7, 0, 87, 5, 7, 0, 27, 11, 7, 0, 28, 11,170, 1, 17, 0, 27, 0, 31, 0,171, 1, 29, 11, -171, 1, 30, 11, 12, 0, 31, 11, 4, 0, 32, 11, 2, 0, 33, 11, 2, 0, 34, 11, 12, 0, 35, 11, 12, 0, 36, 11,168, 1, 37, 11, - 12, 0, 38, 11, 12, 0, 39, 11, 12, 0, 40, 11, 12, 0, 41, 11,172, 1, 42, 11, 12, 0, 43, 11,214, 0, 44, 11,171, 1, 31, 0, -171, 1, 0, 0,171, 1, 1, 0, 9, 0, 45, 11, 4, 0,211, 7, 2, 0, 46, 11, 2, 0, 37, 0,219, 0, 70, 6,219, 0, 47, 11, - 0, 0, 48, 11, 2, 0, 49, 11, 2, 0, 50, 11, 2, 0,233, 7, 2, 0,234, 7, 2, 0, 51, 11, 2, 0, 52, 11, 2, 0,183, 3, - 2, 0,193, 6, 2, 0, 53, 11, 2, 0, 54, 11, 2, 0,222, 9,173, 1, 55, 11,174, 1, 56, 11,175, 1, 57, 11, 4, 0, 58, 11, - 4, 0, 59, 11, 9, 0, 60, 11, 12, 0, 36, 11, 12, 0,253, 7, 12, 0, 61, 11, 12, 0, 62, 11, 12, 0, 63, 11,176, 1, 17, 0, -176, 1, 0, 0,176, 1, 1, 0, 0, 0, 64, 11, 26, 0, 30, 0, 2, 0, 65, 11, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0, 66, 11, - 2, 0, 67, 11, 2, 0, 68, 11, 2, 0, 69, 11, 2, 0, 70, 11, 2, 0, 19, 0, 2, 0, 71, 11, 2, 0, 31, 0, 2, 0, 37, 0, -177, 1, 72, 11,178, 1, 10, 0,178, 1, 0, 0,178, 1, 1, 0, 12, 0, 73, 11, 0, 0, 64, 11, 2, 0, 74, 11, 2, 0, 75, 11, - 2, 0, 19, 0, 2, 0, 76, 11, 4, 0, 77, 11, 9, 0, 78, 11,172, 1, 7, 0,172, 1, 0, 0,172, 1, 1, 0, 0, 0, 64, 11, - 0, 0, 79, 11, 12, 0,159, 7, 4, 0, 80, 11, 4, 0, 19, 0,227, 0, 14, 0,227, 0, 0, 0,227, 0, 1, 0, 0, 0, 64, 11, - 26, 0, 30, 0,179, 1,227, 7, 9, 0, 81, 11, 9, 0, 82, 11,177, 1, 72, 11,168, 1, 83, 11, 12, 0, 84, 11,227, 0, 85, 11, - 7, 1,106, 6, 2, 0, 19, 0, 2, 0,179, 4,180, 1, 8, 0,180, 1, 0, 0,180, 1, 1, 0, 9, 0, 2, 0, 9, 0, 86, 11, - 0, 0,240, 3, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0, 87, 11,181, 1, 5, 0, 7, 0, 88, 11, 4, 0, 89, 11, 4, 0, 90, 11, - 4, 0, 69, 1, 4, 0, 19, 0,182, 1, 6, 0, 7, 0, 91, 11, 7, 0, 92, 11, 7, 0, 93, 11, 7, 0, 94, 11, 4, 0, 17, 0, - 4, 0, 19, 0,183, 1, 5, 0, 7, 0,211, 8, 7, 0,212, 8, 7, 0,210, 2, 2, 0, 28, 2, 2, 0, 29, 2,184, 1, 5, 0, -183, 1, 2, 0, 4, 0, 53, 0, 7, 0, 95, 11, 7, 0,211, 8, 7, 0,212, 8,185, 1, 4, 0, 2, 0, 96, 11, 2, 0, 97, 11, - 2, 0, 98, 11, 2, 0, 99, 11,186, 1, 2, 0, 42, 0,159, 6, 26, 0, 2, 9,187, 1, 3, 0, 24, 0,100, 11, 4, 0, 19, 0, - 4, 0, 37, 0,188, 1, 6, 0, 7, 0,106, 0, 7, 0,212, 2, 7, 0,101, 11, 7, 0, 37, 0, 2, 0,243, 0, 2, 0,102, 11, -189, 1, 5, 0, 7, 0,103, 11, 7, 0,120, 0, 7, 0, 35, 9, 7, 0, 36, 9, 4, 0, 19, 0,190, 1, 6, 0, 27, 0,165, 6, - 0, 0,104, 11, 0, 0,105, 11, 2, 0,106, 11, 2, 0, 19, 0, 4, 0,107, 11,191, 1, 7, 0,191, 1, 0, 0,191, 1, 1, 0, - 0, 0,240, 3,190, 1,108, 11, 2, 0,109, 11, 2, 0, 17, 0, 7, 0, 60, 0,192, 1, 7, 0, 12, 0,110, 11, 0, 0,111, 11, - 9, 0,112, 11, 7, 0, 60, 0, 7, 0, 87, 11, 4, 0, 17, 0, 4, 0, 19, 0,193, 1, 3, 0, 7, 0,113, 11, 4, 0, 19, 0, - 4, 0, 37, 0,194, 1, 15, 0,194, 1, 0, 0,194, 1, 1, 0, 84, 1,106, 9,192, 1, 61, 0, 12, 0,102, 3, 35, 0, 49, 0, -193, 1,114, 11, 4, 0, 53, 0, 7, 0, 60, 0, 2, 0, 19, 0, 2, 0, 12, 1, 4, 0,115, 11, 0, 0,104, 11, 4, 0,116, 11, - 7, 0,117, 11,195, 1, 2, 0, 0, 0,118, 11, 0, 0,119, 11,196, 1, 4, 0,196, 1, 0, 0,196, 1, 1, 0,161, 0, 44, 3, - 12, 0,120, 11,197, 1, 24, 0,197, 1, 0, 0,197, 1, 1, 0, 12, 0,121, 11,161, 0,189, 8,196, 1,122, 11, 12, 0,123, 11, - 12, 0,102, 3, 0, 0,240, 3, 7, 0, 87, 11, 7, 0,124, 11, 7, 0, 87, 0, 7, 0, 88, 0, 7, 0,169, 9, 7, 0,170, 9, - 7, 0,229, 2, 7, 0,173, 9, 7, 0,191, 8, 7, 0,174, 9, 2, 0,125, 11, 2, 0,126, 11, 2, 0, 89, 0, 2, 0, 17, 0, - 4, 0, 19, 0, 4, 0, 69, 0,198, 1, 6, 0,198, 1, 0, 0,198, 1, 1, 0, 12, 0,121, 11, 4, 0, 19, 0, 4, 0,146, 2, - 0, 0,240, 3,199, 1, 11, 0,199, 1, 0, 0,199, 1, 1, 0, 27, 0,165, 6, 0, 0,127, 11, 4, 0,107, 11, 2, 0,128, 11, - 2, 0, 37, 0, 0, 0,104, 11, 4, 0,115, 11, 2, 0, 19, 0, 2, 0,129, 11,200, 1, 8, 0,200, 1, 0, 0,200, 1, 1, 0, - 12, 0,130, 11, 0, 0,240, 3, 0, 0,131, 11, 2, 0, 19, 0, 2, 0,129, 11, 4, 0,132, 11,201, 1, 5, 0,201, 1, 0, 0, -201, 1, 1, 0, 0, 0,104, 11, 4, 0,115, 11, 7, 0,200, 2, 39, 0, 12, 0,161, 0, 94, 3,161, 0,133, 11,196, 1,122, 11, - 12, 0,134, 11,197, 1,135, 11, 12, 0,136, 11, 12, 0,137, 11, 4, 0, 19, 0, 4, 0,244, 0, 2, 0,138, 11, 2, 0,139, 11, - 7, 0,140, 11,202, 1, 2, 0, 27, 0, 31, 0, 39, 0, 74, 0,203, 1, 5, 0,203, 1, 0, 0,203, 1, 1, 0, 4, 0, 17, 0, - 4, 0, 19, 0, 0, 0, 20, 0,204, 1, 6, 0,203, 1,141, 11, 32, 0, 44, 0, 4, 0,142, 11, 7, 0,143, 11, 4, 0,144, 11, - 4, 0, 95, 9,205, 1, 3, 0,203, 1,141, 11, 4, 0,142, 11, 7, 0,145, 11,206, 1, 8, 0,203, 1,141, 11, 32, 0, 44, 0, - 7, 0, 64, 1, 7, 0,146, 11, 7, 0, 10, 3, 7, 0,251, 8, 4, 0,142, 11, 4, 0,147, 11,207, 1, 5, 0,203, 1,141, 11, - 7, 0,148, 11, 7, 0, 70, 8, 7, 0,235, 2, 7, 0, 56, 0,208, 1, 3, 0,203, 1,141, 11, 7, 0,251, 8, 7, 0,149, 11, -151, 1, 4, 0, 7, 0,150, 11, 7, 0,177, 10, 2, 0,151, 11, 2, 0, 69, 1,209, 1, 14, 0,209, 1, 0, 0,209, 1, 1, 0, - 12, 0,152, 11, 12, 0,153, 11, 12, 0,154, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0,155, 11, 7, 0,156, 11, - 4, 0,144, 11, 4, 0, 95, 9, 7, 0,249, 3, 7, 0,237, 2,158, 1, 23, 0, 4, 0,142, 11, 4, 0,157, 11, 7, 0,158, 11, - 7, 0, 56, 0, 7, 0,159, 11, 7, 0,233, 2, 7, 0,150, 11, 7, 0,160, 11, 7, 0,212, 2, 7, 0, 56, 10, 7, 0,129, 4, - 7, 0,161, 11, 7, 0,162, 11, 7, 0,163, 11, 7, 0,164, 11, 7, 0,165, 11, 7, 0,166, 11, 7, 0,167, 11, 7, 0,168, 11, - 7, 0,169, 11, 7, 0,170, 11, 7, 0,171, 11, 12, 0,172, 11,120, 0, 36, 0,119, 0,173, 11,210, 1,133, 10, 67, 0,174, 11, - 67, 0,206, 10, 67, 0,175, 11,211, 1,176, 11, 48, 0,162, 0, 48, 0,177, 11, 48, 0,178, 11, 7, 0,179, 11, 7, 0,180, 11, - 7, 0,181, 11, 7, 0,182, 11, 7, 0,183, 11, 7, 0,107, 9, 7, 0,184, 11, 7, 0,158, 1, 7, 0,185, 11, 4, 0,186, 11, - 4, 0,187, 11, 4, 0,188, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0,189, 11, 2, 0,190, 11, 2, 0,191, 11, 4, 0,192, 11, - 7, 0,212, 2, 4, 0,193, 11, 7, 0,194, 11, 4, 0,195, 11, 4, 0,196, 11, 4, 0,197, 11,136, 0,198, 11, 12, 0,199, 11, -172, 0, 63, 4,121, 0, 11, 0,119, 0,173, 11,147, 0, 30, 3, 7, 0,125, 1, 7, 0,107, 9, 7, 0,200, 11, 7, 0,201, 11, - 2, 0,202, 11, 2, 0,203, 11, 2, 0,204, 11, 2, 0, 17, 0, 4, 0, 37, 0,122, 0, 13, 0,119, 0,173, 11,138, 0, 7, 3, -140, 0, 9, 3, 7, 0, 34, 9, 7, 0,205, 11, 7, 0,206, 11, 7, 0, 66, 1, 7, 0,207, 11, 4, 0,129, 9, 4, 0, 5, 3, +111,114, 0, 98, 65,114,109, 97,116,117,114,101, 65, 99,116,117, 97,116,111,114, 0, 83,112, 97, 99,101, 83,111,117,110,100, 0, + 71,114,111,117,112, 79, 98,106,101, 99,116, 0, 66,111,110,101, 0, 98, 65,114,109, 97,116,117,114,101, 0, 98, 77,111,116,105, +111,110, 80, 97,116,104, 86,101,114,116, 0, 98, 80,111,115,101, 67,104, 97,110,110,101,108, 0, 71, 72, 97,115,104, 0, 98, 73, + 75, 80, 97,114, 97,109, 0, 98, 73,116, 97,115, 99, 0, 98, 65, 99,116,105,111,110, 71,114,111,117,112, 0, 83,112, 97, 99,101, + 65, 99,116,105,111,110, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110, +116, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,111,110,115,116,114, 97,105,110,116, + 84, 97,114,103,101,116, 0, 98, 80,121,116,104,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 75,105,110,101,109, 97, +116,105, 99, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,112,108,105,110,101, 73, 75, 67,111,110,115,116,114, 97,105,110, +116, 0, 98, 84,114, 97, 99,107, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,101, 76,105,107,101, + 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, + 0, 98, 83,105,122,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83, 97,109,101, 86,111,108,117,109,101, + 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, + 98, 77,105,110, 77, 97,120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 67,111,110,115,116,114, 97, +105,110,116, 0, 98, 76,111, 99,107, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68, 97,109,112, 84,114, + 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111,110,115,116,114, 97, +105,110,116, 0, 98, 83,116,114,101,116, 99,104, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,105,103,105,100, 66, +111,100,121, 74,111,105,110,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, 67,111,110,115,116, +114, 97,105,110,116, 0, 98, 67,104,105,108,100, 79,102, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115,102, +111,114,109, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 80,105,118,111,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, + 76,111, 99, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 76,105,109,105,116, 67,111,110,115, +116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68,105,115, +116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,104,114,105,110,107,119,114, 97,112, 67,111,110,115, +116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 77,111,100,105,102,105,101,114, 0, 98, 65, 99,116,105,111,110, 83,116, +114,105,112, 0, 98, 78,111,100,101, 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 0, 98, 78,111,100,101, + 76,105,110,107, 0, 98, 78,111,100,101, 0, 98, 78,111,100,101, 80,114,101,118,105,101,119, 0,117,105, 66,108,111, 99,107, 0, + 98, 78,111,100,101, 84,121,112,101, 0, 78,111,100,101, 73,109, 97,103,101, 65,110,105,109, 0, 78,111,100,101, 66,108,117,114, + 68, 97,116, 97, 0, 78,111,100,101, 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 66,105,108, 97,116,101,114, 97,108, + 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 72,117,101, 83, 97,116, 0, 78,111,100,101, 73,109, 97,103,101, 70,105,108, +101, 0, 78,111,100,101, 67,104,114,111,109, 97, 0, 78,111,100,101, 84,119,111, 88, 89,115, 0, 78,111,100,101, 84,119,111, 70, +108,111, 97,116,115, 0, 78,111,100,101, 71,101,111,109,101,116,114,121, 0, 78,111,100,101, 86,101,114,116,101,120, 67,111,108, + 0, 78,111,100,101, 68,101,102,111, 99,117,115, 0, 78,111,100,101, 83, 99,114,105,112,116, 68,105, 99,116, 0, 78,111,100,101, + 71,108, 97,114,101, 0, 78,111,100,101, 84,111,110,101,109, 97,112, 0, 78,111,100,101, 76,101,110,115, 68,105,115,116, 0, 78, +111,100,101, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 78,111,100,101, 67,111,108,111,114,115,112,105,108,108, 0, 84, +101,120, 78,111,100,101, 79,117,116,112,117,116, 0, 67,117,114,118,101, 77, 97,112, 80,111,105,110,116, 0, 67,117,114,118,101, + 77, 97,112, 0, 66,114,117,115,104, 67,108,111,110,101, 0, 67,117,115,116,111,109, 68, 97,116, 97, 76, 97,121,101,114, 0, 67, +117,115,116,111,109, 68, 97,116, 97, 69,120,116,101,114,110, 97,108, 0, 72, 97,105,114, 75,101,121, 0, 80, 97,114,116,105, 99, +108,101, 75,101,121, 0, 66,111,105,100, 80, 97,114,116,105, 99,108,101, 0, 66,111,105,100, 68, 97,116, 97, 0, 67,104,105,108, +100, 80, 97,114,116,105, 99,108,101, 0, 80, 97,114,116,105, 99,108,101, 84, 97,114,103,101,116, 0, 80, 97,114,116,105, 99,108, +101, 68,117,112,108,105, 87,101,105,103,104,116, 0, 80, 97,114,116,105, 99,108,101, 68, 97,116, 97, 0, 83, 80, 72, 70,108,117, +105,100, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 83,101,116,116,105,110,103,115, 0, 66,111,105,100, + 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 75, 68, 84,114,101,101, + 0, 80, 97,114,116,105, 99,108,101, 68,114, 97,119, 68, 97,116, 97, 0, 76,105,110,107, 78,111,100,101, 0, 98, 71, 80, 68,115, +112,111,105,110,116, 0, 98, 71, 80, 68,115,116,114,111,107,101, 0, 98, 71, 80, 68,102,114, 97,109,101, 0, 98, 71, 80, 68,108, + 97,121,101,114, 0, 82,101,112,111,114,116, 0, 82,101,112,111,114,116, 76,105,115,116, 0, 82,101,112,111,114,116, 84,105,109, +101,114, 73,110,102,111, 0,119,109, 87,105,110,100,111,119, 77, 97,110, 97,103,101,114, 0,119,109, 87,105,110,100,111,119, 0, +119,109, 75,101,121, 67,111,110,102,105,103, 0,119,109, 69,118,101,110,116, 0,119,109, 83,117, 98, 87,105,110,100,111,119, 0, +119,109, 71,101,115,116,117,114,101, 0,119,109, 75,101,121, 77, 97,112, 73,116,101,109, 0, 80,111,105,110,116,101,114, 82, 78, + 65, 0,119,109, 75,101,121, 77, 97,112, 0,119,109, 79,112,101,114, 97,116,111,114, 84,121,112,101, 0, 70, 77,111,100,105,102, +105,101,114, 0, 70, 77,111,100, 95, 71,101,110,101,114, 97,116,111,114, 0, 70, 77,111,100, 95, 70,117,110, 99,116,105,111,110, + 71,101,110,101,114, 97,116,111,114, 0, 70, 67, 77, 95, 69,110,118,101,108,111,112,101, 68, 97,116, 97, 0, 70, 77,111,100, 95, + 69,110,118,101,108,111,112,101, 0, 70, 77,111,100, 95, 67,121, 99,108,101,115, 0, 70, 77,111,100, 95, 80,121,116,104,111,110, + 0, 70, 77,111,100, 95, 76,105,109,105,116,115, 0, 70, 77,111,100, 95, 78,111,105,115,101, 0, 70, 77,111,100, 95, 83,116,101, +112,112,101,100, 0, 68,114,105,118,101,114, 84, 97,114,103,101,116, 0, 68,114,105,118,101,114, 86, 97,114, 0, 67,104, 97,110, +110,101,108, 68,114,105,118,101,114, 0, 70, 80,111,105,110,116, 0, 70, 67,117,114,118,101, 0, 65,110,105,109, 77, 97,112, 80, + 97,105,114, 0, 65,110,105,109, 77, 97,112,112,101,114, 0, 78,108, 97, 83,116,114,105,112, 0, 78,108, 97, 84,114, 97, 99,107, + 0, 75, 83, 95, 80, 97,116,104, 0, 75,101,121,105,110,103, 83,101,116, 0, 65,110,105,109, 79,118,101,114,114,105,100,101, 0, + 73,100, 65,100,116, 84,101,109,112,108, 97,116,101, 0, 66,111,105,100, 82,117,108,101, 0, 66,111,105,100, 82,117,108,101, 71, +111, 97,108, 65,118,111,105,100, 0, 66,111,105,100, 82,117,108,101, 65,118,111,105,100, 67,111,108,108,105,115,105,111,110, 0, + 66,111,105,100, 82,117,108,101, 70,111,108,108,111,119, 76,101, 97,100,101,114, 0, 66,111,105,100, 82,117,108,101, 65,118,101, +114, 97,103,101, 83,112,101,101,100, 0, 66,111,105,100, 82,117,108,101, 70,105,103,104,116, 0, 66,111,105,100, 83,116, 97,116, +101, 0, 70, 76, 85, 73, 68, 95, 51, 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 0, 0, 84, 76, 69, 78, 1, 0, 1, 0, + 2, 0, 2, 0, 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 0, 0, 8, 0, 12, 0, 8, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, + 12, 0, 24, 0, 16, 0, 16, 0, 32, 0, 16, 0, 16, 0, 20, 0, 76, 0, 52, 0, 40, 2, 0, 0, 32, 0,140, 0,220, 3, 92, 0, + 36, 0, 56, 0, 84, 0,112, 0,124, 0, 56, 0, 24, 0, 40, 0,120, 0, 12, 0,104, 0, 36, 0,120, 5,156, 1, 0, 0, 0, 0, + 0, 0, 8, 1, 48, 1, 84, 1, 24, 0, 8, 3,168, 0, 0, 0, 72, 0, 32, 1,152, 0,132, 0,108, 1, 16, 1, 56, 0, 88, 0, +160, 2, 76, 0, 60, 1, 0, 0,108, 0,104, 0,148, 0, 56, 0, 8, 0, 16, 0, 92, 1, 0, 0, 0, 0, 0, 0, 40, 1, 20, 0, + 44, 0, 60, 0, 24, 0, 12, 0, 12, 0, 4, 0, 8, 0, 8, 0, 0, 0, 28, 0, 84, 0, 32, 0, 8, 0, 12, 0, 8, 0, 8, 0, + 4, 0, 4, 0, 0, 1, 32, 0, 12, 0, 16, 0, 64, 0, 24, 0, 12, 0, 40, 0, 64, 0, 80, 0,100, 0,108, 0, 80, 0,108, 0, +128, 0, 76, 0, 72, 0,120, 0, 72, 0, 84, 0,188, 0, 48, 0,168, 0,160, 0,172, 0, 72, 0,104, 0,116, 0,196, 0,112, 0, +224, 0, 64, 0, 92, 0, 0, 0,144, 0, 32, 0,240, 1,112, 0, 0, 0, 88, 0, 0, 0, 0, 0, 76, 0, 8, 0, 8, 0,244, 0, + 88, 0,124, 1, 84, 0, 76, 0, 72, 0, 72, 0,176, 1,120, 0,116, 0, 64, 0,120, 0, 92, 0,220, 0, 40, 0, 0, 0, 92, 0, +148, 0, 72, 0, 48, 0, 20, 0,120, 0,144, 0, 88, 1,208, 0,180, 0, 0, 0, 68, 0, 92, 0, 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0,112, 1, 28, 0,176, 0,144, 0, 64, 0, 60, 0, 24, 0, 72, 0,232, 3, 56, 0, 20, 0, 16, 0,100, 0, 84, 0, 24, 0, +196, 2, 44, 0, 16, 0,156, 0, 80, 0, 96, 0, 44, 0,144, 1, 32, 0, 8, 0, 24, 0, 56, 2, 0, 0, 0, 0, 72, 0, 72, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 0, 40, 0,140, 0, 48, 0,140, 0,208, 0, 24, 0,216, 0,216, 0,200, 1, 60, 0, + 0, 0,120, 0, 0, 0,252, 0, 12, 0, 12, 0, 24, 33,112, 16, 24, 16,192, 0,124, 2, 80, 2, 40, 0, 36, 0,188, 0,244, 0, + 52, 0,140, 2, 28, 0,112, 1, 88, 0, 16, 1, 32, 0,224, 0, 32, 0, 32, 0,112, 2,104, 1, 16, 0, 48, 29, 72, 0, 56, 0, +248, 12, 20, 0, 24, 0, 64, 1, 0, 0, 0, 0, 96, 0, 0, 0,248, 0, 0, 0, 16, 1, 80, 0, 28, 0, 16, 0, 8, 0, 44, 0, +252, 0,240, 0,168, 1,216, 0, 92, 1, 16, 0, 12, 0, 24, 0, 52, 0, 16, 0, 20, 0, 16, 0, 24, 0, 56, 1, 0, 0, 56, 0, + 52, 0, 48, 0, 8, 0, 44, 0, 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 72, 0, 68, 0, 76, 0, 80, 0, + 60, 0,128, 0, 76, 0, 60, 0, 12, 0, 92, 0, 68, 0, 32, 0, 80, 0, 16, 0, 76, 0,108, 0, 84, 0, 28, 0, 96, 0, 56, 0, + 56, 0,108, 0,140, 0, 4, 0, 20, 0, 12, 0, 8, 0, 80, 0,188, 0, 24, 0, 16, 1,144, 0, 16, 0,204, 1, 0, 0, 4, 0, + 40, 0,104, 0,216, 0, 64, 0, 44, 0, 72, 0,116, 0, 60, 0,112, 0, 16, 0, 52, 0, 44, 0, 44, 0, 44, 0, 8, 0, 36, 0, + 68, 0, 64, 0, 44, 0, 44, 0, 20, 0, 52, 0, 96, 0, 12, 0,108, 0, 92, 0, 52, 0, 28, 0, 28, 0, 28, 0, 52, 0, 20, 0, + 60, 0,140, 0, 36, 0,120, 0, 32, 0,180, 0, 0, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, 44, 0, + 8, 0, 8, 0, 64, 0, 32, 0, 24, 0, 8, 0, 24, 0, 32, 0, 8, 0, 84, 0, 20, 0, 32, 0, 12, 0, 44, 0, 20, 0, 68, 0, +240, 0, 24, 0, 56, 0, 52, 0, 20, 0, 64, 0, 28, 0, 20, 0,180, 0, 36, 0,200, 1, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 20, 0, 24, 0,172, 0, 24, 0, 28, 0, 20, 0,168, 0,148, 0,152, 0, 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 96, 0, + 0, 0, 88, 0, 20, 0, 24, 0, 16, 0, 20, 0, 8, 0, 8, 0, 24, 0, 20, 0, 20, 0, 48, 0,208, 1, 28, 1, 16, 0, 68, 0, + 0, 1, 20, 0,160, 0, 88, 0, 96, 0,152, 0, 20, 0, 56, 0, 48, 0, 68, 0, 56, 0, 92, 0, 64, 0, 56, 0, 96, 0, 0, 0, + 0, 0, 0, 0, 83, 84, 82, 67,152, 1, 0, 0, 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0, + 11, 0, 1, 0, 9, 0, 2, 0, 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4, 0, 13, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0, + 14, 0, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0, 15, 0, 2, 0, 4, 0, 5, 0, 4, 0, 6, 0, 16, 0, 2, 0, 8, 0, 5, 0, + 8, 0, 6, 0, 17, 0, 3, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 18, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0, + 7, 0, 7, 0, 19, 0, 3, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 20, 0, 4, 0, 4, 0, 5, 0, 4, 0, 6, 0, + 4, 0, 7, 0, 4, 0, 8, 0, 21, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 8, 0, 22, 0, 4, 0, + 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 8, 0, 8, 0, 23, 0, 4, 0, 4, 0, 9, 0, 4, 0, 10, 0, 4, 0, 11, 0, + 4, 0, 12, 0, 24, 0, 4, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 25, 0, 4, 0, 9, 0, 13, 0, + 12, 0, 14, 0, 4, 0, 15, 0, 4, 0, 16, 0, 26, 0, 10, 0, 26, 0, 0, 0, 26, 0, 1, 0, 0, 0, 17, 0, 0, 0, 18, 0, + 2, 0, 19, 0, 0, 0, 20, 0, 4, 0, 21, 0, 25, 0, 22, 0, 4, 0, 23, 0, 4, 0, 24, 0, 27, 0, 9, 0, 9, 0, 0, 0, + 9, 0, 1, 0, 27, 0, 25, 0, 28, 0, 26, 0, 0, 0, 27, 0, 2, 0, 28, 0, 2, 0, 19, 0, 4, 0, 29, 0, 26, 0, 30, 0, + 28, 0, 8, 0, 27, 0, 31, 0, 27, 0, 32, 0, 29, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 4, 0, 36, 0, 4, 0, 37, 0, + 28, 0, 38, 0, 30, 0, 5, 0, 4, 0, 39, 0, 4, 0, 40, 0, 2, 0, 41, 0, 2, 0, 42, 0, 4, 0, 43, 0, 31, 0, 6, 0, + 32, 0, 44, 0, 2, 0, 45, 0, 2, 0, 46, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 47, 0, 33, 0, 21, 0, 33, 0, 0, 0, + 33, 0, 1, 0, 34, 0, 48, 0, 35, 0, 49, 0, 24, 0, 50, 0, 24, 0, 51, 0, 2, 0, 45, 0, 2, 0, 46, 0, 2, 0, 52, 0, + 2, 0, 53, 0, 2, 0, 54, 0, 2, 0, 55, 0, 2, 0, 19, 0, 2, 0, 56, 0, 7, 0, 11, 0, 7, 0, 12, 0, 4, 0, 57, 0, + 7, 0, 58, 0, 7, 0, 59, 0, 7, 0, 60, 0, 31, 0, 61, 0, 36, 0, 7, 0, 27, 0, 31, 0, 12, 0, 62, 0, 24, 0, 63, 0, + 2, 0, 45, 0, 2, 0, 64, 0, 2, 0, 65, 0, 2, 0, 37, 0, 37, 0, 16, 0, 37, 0, 0, 0, 37, 0, 1, 0, 7, 0, 66, 0, + 7, 0, 60, 0, 2, 0, 17, 0, 2, 0, 46, 0, 2, 0, 67, 0, 2, 0, 19, 0, 4, 0, 68, 0, 4, 0, 69, 0, 9, 0, 2, 0, + 7, 0, 70, 0, 0, 0, 20, 0, 0, 0, 71, 0, 7, 0, 72, 0, 7, 0, 73, 0, 38, 0, 13, 0, 27, 0, 31, 0, 39, 0, 74, 0, + 37, 0, 75, 0, 0, 0, 76, 0, 4, 0, 77, 0, 7, 0, 60, 0, 12, 0, 78, 0, 36, 0, 79, 0, 27, 0, 80, 0, 2, 0, 17, 0, + 2, 0, 81, 0, 2, 0, 82, 0, 2, 0, 19, 0, 40, 0, 6, 0, 40, 0, 0, 0, 40, 0, 1, 0, 0, 0, 83, 0, 0, 0, 84, 0, + 4, 0, 23, 0, 4, 0, 85, 0, 41, 0, 10, 0, 41, 0, 0, 0, 41, 0, 1, 0, 4, 0, 86, 0, 4, 0, 87, 0, 4, 0, 88, 0, + 4, 0, 89, 0, 4, 0, 14, 0, 4, 0, 90, 0, 0, 0, 91, 0, 0, 0, 92, 0, 42, 0, 15, 0, 27, 0, 31, 0, 0, 0, 93, 0, + 4, 0, 90, 0, 4, 0, 94, 0, 12, 0, 95, 0, 40, 0, 96, 0, 40, 0, 97, 0, 4, 0, 98, 0, 4, 0, 99, 0, 12, 0,100, 0, + 0, 0,101, 0, 4, 0,102, 0, 4, 0,103, 0, 9, 0,104, 0, 8, 0,105, 0, 43, 0, 3, 0, 4, 0,106, 0, 4, 0,107, 0, + 9, 0, 2, 0, 44, 0, 15, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,108, 0, 7, 0,109, 0, + 7, 0,110, 0, 7, 0,111, 0, 7, 0,112, 0, 7, 0,113, 0, 7, 0,114, 0, 7, 0,115, 0, 7, 0,116, 0, 36, 0, 79, 0, + 32, 0,117, 0, 45, 0, 13, 0, 4, 0,118, 0, 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, 2, 0,122, 0, 2, 0,123, 0, + 2, 0, 19, 0, 2, 0,124, 0, 2, 0,125, 0, 2, 0,126, 0, 2, 0,127, 0, 2, 0,128, 0, 46, 0,129, 0, 47, 0, 32, 0, + 27, 0, 31, 0, 0, 0, 34, 0, 12, 0,130, 0, 48, 0,131, 0, 49, 0,132, 0, 50, 0,133, 0, 50, 0,134, 0, 2, 0,135, 0, + 2, 0,136, 0, 2, 0,124, 0, 2, 0, 19, 0, 2, 0,137, 0, 2, 0, 17, 0, 4, 0,138, 0, 2, 0,139, 0, 2, 0,140, 0, + 2, 0,141, 0, 2, 0,142, 0, 2, 0,143, 0, 2, 0,144, 0, 4, 0,145, 0, 4, 0,146, 0, 43, 0,147, 0, 30, 0,148, 0, + 7, 0,149, 0, 4, 0,150, 0, 2, 0,151, 0, 2, 0,152, 0, 2, 0,153, 0, 2, 0,154, 0, 7, 0,155, 0, 7, 0,156, 0, + 51, 0, 63, 0, 2, 0,157, 0, 2, 0,158, 0, 2, 0,159, 0, 2, 0,160, 0, 32, 0,161, 0, 52, 0,162, 0, 0, 0,163, 0, + 0, 0,164, 0, 0, 0,165, 0, 0, 0,166, 0, 0, 0,167, 0, 7, 0,168, 0, 7, 0,169, 0, 7, 0,170, 0, 2, 0,171, 0, + 2, 0,172, 0, 2, 0,173, 0, 2, 0,174, 0, 2, 0,175, 0, 2, 0,176, 0, 0, 0,177, 0, 0, 0,178, 0, 7, 0,179, 0, + 7, 0,180, 0, 7, 0,181, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0, 56, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0,186, 0, + 7, 0,187, 0, 7, 0,188, 0, 7, 0,189, 0, 7, 0,190, 0, 7, 0,191, 0, 7, 0,192, 0, 7, 0,193, 0, 7, 0,194, 0, + 7, 0,195, 0, 7, 0,196, 0, 7, 0,197, 0, 7, 0,198, 0, 7, 0,199, 0, 7, 0,200, 0, 7, 0,201, 0, 7, 0,202, 0, + 7, 0,203, 0, 7, 0,204, 0, 7, 0,205, 0, 7, 0,206, 0, 7, 0,207, 0, 7, 0,208, 0, 7, 0,209, 0, 7, 0,210, 0, + 7, 0,211, 0, 7, 0,212, 0, 7, 0,213, 0, 7, 0,214, 0, 7, 0,215, 0, 7, 0,216, 0, 7, 0,217, 0, 7, 0,218, 0, + 53, 0, 15, 0, 0, 0,219, 0, 9, 0,220, 0, 0, 0,221, 0, 0, 0,222, 0, 4, 0,223, 0, 4, 0,224, 0, 9, 0,225, 0, + 7, 0,226, 0, 7, 0,227, 0, 7, 0,228, 0, 4, 0,229, 0, 9, 0,230, 0, 9, 0,231, 0, 4, 0,232, 0, 4, 0, 37, 0, + 54, 0, 6, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,233, 0, 7, 0, 66, 0, 4, 0, 63, 0, 55, 0, 5, 0, + 2, 0, 19, 0, 2, 0, 36, 0, 2, 0, 63, 0, 2, 0,234, 0, 54, 0,228, 0, 56, 0, 17, 0, 32, 0,161, 0, 47, 0,235, 0, + 57, 0,236, 0, 7, 0,237, 0, 7, 0,238, 0, 2, 0, 17, 0, 2, 0,239, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0,240, 0, + 4, 0,241, 0, 2, 0,242, 0, 2, 0,243, 0, 4, 0,124, 0, 4, 0,138, 0, 2, 0,244, 0, 2, 0,245, 0, 58, 0, 22, 0, + 2, 0, 19, 0, 2, 0,246, 0, 7, 0,247, 0, 7, 0,248, 0, 2, 0,137, 0, 2, 0,249, 0, 4, 0,250, 0, 4, 0,251, 0, + 32, 0,161, 0, 4, 0,252, 0, 2, 0,253, 0, 2, 0,254, 0, 9, 0,255, 0, 7, 0, 0, 1, 7, 0, 1, 1, 2, 0, 2, 1, + 2, 0, 3, 1, 2, 0, 4, 1, 2, 0, 5, 1, 7, 0, 6, 1, 7, 0, 7, 1, 55, 0, 8, 1, 59, 0, 13, 0, 4, 0, 9, 1, + 4, 0, 10, 1, 2, 0, 11, 1, 2, 0, 19, 0, 2, 0, 12, 1, 2, 0, 13, 1, 32, 0,161, 0, 7, 0, 14, 1, 4, 0, 15, 1, + 0, 0, 16, 1, 7, 0, 17, 1, 4, 0, 18, 1, 4, 0,124, 0, 52, 0, 63, 0, 27, 0, 31, 0, 39, 0, 74, 0, 7, 0, 19, 1, + 7, 0, 20, 1, 7, 0, 21, 1, 7, 0, 22, 1, 7, 0, 23, 1, 7, 0, 24, 1, 7, 0, 25, 1, 7, 0, 26, 1, 7, 0, 27, 1, + 7, 0, 69, 0, 7, 0, 28, 1, 7, 0, 29, 1, 7, 0, 30, 1, 7, 0, 31, 1, 7, 0, 32, 1, 7, 0, 33, 1, 7, 0, 34, 1, + 7, 0, 35, 1, 7, 0, 36, 1, 7, 0, 37, 1, 7, 0, 38, 1, 7, 0, 39, 1, 2, 0, 40, 1, 2, 0, 41, 1, 2, 0, 42, 1, + 2, 0, 43, 1, 2, 0, 44, 1, 2, 0, 45, 1, 2, 0, 46, 1, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,239, 0, 7, 0, 47, 1, + 7, 0, 48, 1, 7, 0, 49, 1, 7, 0, 50, 1, 4, 0, 51, 1, 4, 0, 52, 1, 2, 0, 53, 1, 2, 0, 54, 1, 2, 0, 12, 1, + 2, 0,122, 0, 4, 0, 23, 0, 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, 7, 0, 55, 1, 7, 0, 56, 1, 7, 0, 89, 0, + 45, 0, 57, 1, 60, 0, 58, 1, 36, 0, 79, 0, 47, 0,235, 0, 53, 0, 59, 1, 55, 0, 8, 1, 56, 0, 60, 1, 30, 0,148, 0, + 58, 0, 61, 1, 59, 0, 62, 1, 0, 0, 63, 1, 0, 0,178, 0, 61, 0, 8, 0, 7, 0, 64, 1, 7, 0, 65, 1, 7, 0,169, 0, + 4, 0, 19, 0, 7, 0, 66, 1, 7, 0, 67, 1, 7, 0, 68, 1, 32, 0, 44, 0, 62, 0, 72, 0, 27, 0, 31, 0, 39, 0, 74, 0, + 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 69, 1, 2, 0,172, 0, 2, 0, 70, 1, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, + 7, 0,182, 0, 7, 0, 71, 1, 7, 0, 72, 1, 7, 0, 73, 1, 7, 0, 74, 1, 7, 0, 75, 1, 7, 0, 76, 1, 7, 0, 77, 1, + 7, 0, 78, 1, 7, 0, 79, 1, 7, 0, 80, 1, 7, 0, 81, 1, 63, 0, 82, 1, 2, 0,246, 0, 2, 0, 69, 0, 7, 0,109, 0, + 7, 0,110, 0, 7, 0, 83, 1, 7, 0, 84, 1, 7, 0, 85, 1, 7, 0, 86, 1, 7, 0, 87, 1, 2, 0, 88, 1, 2, 0, 89, 1, + 2, 0, 90, 1, 2, 0, 91, 1, 0, 0, 92, 1, 0, 0, 93, 1, 2, 0, 94, 1, 2, 0, 95, 1, 2, 0, 96, 1, 2, 0, 97, 1, + 2, 0, 98, 1, 7, 0, 99, 1, 7, 0,100, 1, 7, 0,101, 1, 7, 0,102, 1, 2, 0,103, 1, 2, 0, 89, 0, 2, 0,104, 1, + 2, 0,105, 1, 2, 0,106, 1, 2, 0,107, 1, 7, 0,108, 1, 7, 0,109, 1, 7, 0,110, 1, 7, 0,111, 1, 7, 0,112, 1, + 7, 0,113, 1, 7, 0,114, 1, 7, 0,115, 1, 7, 0,116, 1, 7, 0,117, 1, 7, 0,118, 1, 7, 0,119, 1, 2, 0,120, 1, + 0, 0,121, 1, 36, 0, 79, 0, 51, 0,122, 1, 2, 0,123, 1, 0, 0,124, 1, 30, 0,148, 0, 64, 0, 2, 0, 27, 0, 31, 0, + 36, 0, 79, 0, 65, 0, 18, 0, 7, 0,125, 1, 7, 0,126, 1, 7, 0,127, 1, 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, + 7, 0,131, 1, 7, 0,132, 1, 7, 0,133, 1, 7, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 2, 0,137, 1, 2, 0,138, 1, + 7, 0,139, 1, 7, 0,140, 1, 7, 0,141, 1, 7, 0,142, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0,143, 1, + 2, 0, 19, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,144, 1, 7, 0,145, 1, 7, 0,146, 1, 7, 0,147, 1, + 7, 0,148, 1, 7, 0,149, 1, 7, 0,150, 1, 7, 0,151, 1, 7, 0,152, 1, 7, 0,153, 1, 7, 0,154, 1, 7, 0,155, 1, + 7, 0,156, 1, 7, 0,157, 1, 7, 0,158, 1, 7, 0,159, 1, 7, 0,160, 1, 7, 0,161, 1, 7, 0,162, 1, 7, 0,163, 1, + 65, 0,164, 1, 7, 0,165, 1, 7, 0,166, 1, 7, 0,167, 1, 7, 0,168, 1, 7, 0,169, 1, 7, 0,170, 1, 7, 0,171, 1, + 2, 0,172, 1, 2, 0,173, 1, 2, 0,174, 1, 0, 0,175, 1, 0, 0,176, 1, 7, 0,177, 1, 7, 0,178, 1, 2, 0,179, 1, + 2, 0,180, 1, 7, 0,181, 1, 7, 0,182, 1, 7, 0,183, 1, 7, 0,184, 1, 2, 0,185, 1, 2, 0,186, 1, 4, 0, 69, 1, + 4, 0,187, 1, 2, 0,188, 1, 2, 0,189, 1, 2, 0,190, 1, 2, 0,191, 1, 7, 0,192, 1, 7, 0,193, 1, 7, 0,194, 1, + 7, 0,195, 1, 7, 0,196, 1, 7, 0,197, 1, 7, 0,198, 1, 7, 0,199, 1, 7, 0,200, 1, 7, 0,201, 1, 0, 0,202, 1, + 7, 0,203, 1, 7, 0,204, 1, 7, 0,205, 1, 4, 0,206, 1, 0, 0,207, 1, 0, 0,104, 1, 0, 0,208, 1, 0, 0, 63, 1, + 2, 0,209, 1, 2, 0,210, 1, 2, 0,123, 1, 2, 0,211, 1, 2, 0,212, 1, 2, 0,213, 1, 7, 0,214, 1, 7, 0,215, 1, + 7, 0,216, 1, 7, 0,217, 1, 7, 0,218, 1, 2, 0,157, 0, 2, 0,158, 0, 55, 0,219, 1, 55, 0,220, 1, 0, 0,221, 1, + 0, 0,222, 1, 0, 0,223, 1, 0, 0,224, 1, 2, 0,225, 1, 2, 0,226, 1, 7, 0,227, 1, 7, 0,228, 1, 51, 0,122, 1, + 60, 0, 58, 1, 36, 0, 79, 0, 67, 0,229, 1, 30, 0,148, 0, 7, 0,230, 1, 7, 0,231, 1, 7, 0,232, 1, 7, 0,233, 1, + 7, 0,234, 1, 2, 0,235, 1, 2, 0, 69, 0, 7, 0,236, 1, 7, 0,237, 1, 7, 0,238, 1, 7, 0,239, 1, 7, 0,240, 1, + 7, 0,241, 1, 7, 0,242, 1, 7, 0,243, 1, 7, 0,244, 1, 2, 0,245, 1, 2, 0,246, 1, 4, 0,247, 1, 4, 0,248, 1, + 12, 0,249, 1, 68, 0, 4, 0, 27, 0, 31, 0, 0, 0,250, 1, 69, 0, 2, 0, 43, 0,147, 0, 70, 0, 26, 0, 70, 0, 0, 0, + 70, 0, 1, 0, 71, 0,251, 1, 4, 0,252, 1, 4, 0,253, 1, 4, 0,254, 1, 4, 0,255, 1, 4, 0, 0, 2, 4, 0, 1, 2, + 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 2, 2, 2, 0, 3, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 4, 2, + 7, 0, 5, 2, 7, 0, 6, 2, 7, 0, 7, 2, 7, 0, 8, 2, 7, 0, 9, 2, 7, 0, 10, 2, 7, 0, 23, 0, 7, 0, 11, 2, + 7, 0, 12, 2, 72, 0, 20, 0, 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 13, 2, 12, 0, 14, 2, 12, 0, 15, 2, + 36, 0, 79, 0, 66, 0, 16, 2, 0, 0, 19, 0, 0, 0, 17, 2, 2, 0, 18, 2, 2, 0,171, 0, 2, 0, 37, 0, 7, 0, 64, 1, + 7, 0,169, 0, 7, 0, 65, 1, 7, 0, 19, 2, 7, 0, 20, 2, 7, 0, 21, 2, 70, 0, 22, 2, 35, 0, 11, 0, 7, 0, 23, 2, + 7, 0, 24, 2, 7, 0, 25, 2, 7, 0,248, 0, 2, 0, 54, 0, 0, 0, 26, 2, 0, 0, 27, 2, 0, 0, 28, 2, 0, 0, 29, 2, + 0, 0, 30, 2, 0, 0, 31, 2, 34, 0, 7, 0, 7, 0, 32, 2, 7, 0, 24, 2, 7, 0, 25, 2, 2, 0, 28, 2, 2, 0, 31, 2, + 7, 0,248, 0, 7, 0, 37, 0, 73, 0, 21, 0, 73, 0, 0, 0, 73, 0, 1, 0, 2, 0, 17, 0, 2, 0, 33, 2, 2, 0, 31, 2, + 2, 0, 19, 0, 2, 0, 34, 2, 2, 0, 35, 2, 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 38, 2, 2, 0, 39, 2, 2, 0, 40, 2, + 2, 0, 41, 2, 7, 0, 42, 2, 7, 0, 43, 2, 34, 0, 48, 0, 35, 0, 49, 0, 2, 0, 44, 2, 2, 0, 45, 2, 4, 0, 46, 2, + 74, 0, 5, 0, 2, 0, 47, 2, 2, 0, 33, 2, 0, 0, 19, 0, 0, 0, 37, 0, 2, 0, 69, 0, 75, 0, 4, 0, 7, 0, 5, 0, + 7, 0, 6, 0, 7, 0, 8, 0, 7, 0, 48, 2, 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 49, 2, + 12, 0, 14, 2, 12, 0, 50, 2, 32, 0, 51, 2, 32, 0, 52, 2, 32, 0, 53, 2, 36, 0, 79, 0, 77, 0, 54, 2, 38, 0, 55, 2, + 66, 0, 16, 2, 12, 0, 56, 2, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 2, 0,171, 0, 2, 0, 89, 0, 2, 0, 57, 2, + 2, 0, 58, 2, 2, 0, 59, 2, 7, 0, 60, 2, 7, 0, 61, 2, 2, 0, 62, 2, 2, 0, 18, 2, 2, 0, 19, 0, 2, 0, 63, 2, + 7, 0, 64, 2, 7, 0, 65, 2, 7, 0, 66, 2, 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 67, 2, 2, 0, 68, 2, 4, 0, 69, 2, + 9, 0, 70, 2, 2, 0, 23, 0, 2, 0, 95, 0, 2, 0, 66, 0, 2, 0, 71, 2, 7, 0, 72, 2, 7, 0, 73, 2, 7, 0, 74, 2, + 7, 0, 75, 2, 7, 0, 76, 2, 7, 0, 77, 2, 7, 0, 78, 2, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0, 81, 2, 0, 0, 82, 2, + 78, 0, 83, 2, 79, 0, 84, 2, 0, 0, 85, 2, 68, 0, 86, 2, 68, 0, 87, 2, 68, 0, 88, 2, 68, 0, 89, 2, 4, 0, 90, 2, + 7, 0, 91, 2, 4, 0, 92, 2, 4, 0, 93, 2, 75, 0, 94, 2, 4, 0, 95, 2, 4, 0, 96, 2, 74, 0, 97, 2, 74, 0, 98, 2, + 80, 0, 41, 0, 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 99, 2, 36, 0, 79, 0, 38, 0, 55, 2, 66, 0, 16, 2, + 81, 0,100, 2, 82, 0,101, 2, 83, 0,102, 2, 84, 0,103, 2, 85, 0,104, 2, 86, 0,105, 2, 87, 0,106, 2, 88, 0,107, 2, + 80, 0,108, 2, 89, 0,109, 2, 90, 0,110, 2, 91, 0,111, 2, 91, 0,112, 2, 91, 0,113, 2, 4, 0, 53, 0, 4, 0,114, 2, + 4, 0,115, 2, 4, 0,116, 2, 4, 0,117, 2, 2, 0,171, 0, 2, 0,118, 2, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, + 7, 0,119, 2, 4, 0, 57, 2, 2, 0,120, 2, 2, 0, 19, 0, 2, 0,121, 2, 2, 0,122, 2, 2, 0, 18, 2, 2, 0,123, 2, + 92, 0,124, 2, 93, 0,125, 2, 83, 0, 8, 0, 9, 0,126, 2, 7, 0,127, 2, 4, 0,128, 2, 0, 0, 19, 0, 0, 0,129, 2, + 2, 0, 69, 1, 2, 0,130, 2, 2, 0,131, 2, 81, 0, 7, 0, 4, 0,132, 2, 4, 0,133, 2, 4, 0,134, 2, 4, 0,135, 2, + 2, 0, 33, 2, 0, 0,136, 2, 0, 0, 19, 0, 85, 0, 5, 0, 4, 0,132, 2, 4, 0,133, 2, 0, 0,137, 2, 0, 0,138, 2, + 2, 0, 19, 0, 94, 0, 2, 0, 4, 0,139, 2, 7, 0, 25, 2, 86, 0, 3, 0, 94, 0,140, 2, 4, 0,141, 2, 4, 0, 19, 0, + 84, 0, 6, 0, 7, 0,142, 2, 2, 0,143, 2, 2, 0, 33, 2, 0, 0, 19, 0, 0, 0,138, 2, 0, 0, 59, 2, 87, 0, 4, 0, + 0, 0,233, 0, 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 95, 0, 6, 0, 47, 0,126, 2, 0, 0, 19, 0, 0, 0,129, 2, + 2, 0, 69, 1, 2, 0,130, 2, 2, 0,131, 2, 96, 0, 1, 0, 7, 0,144, 2, 97, 0, 5, 0, 0, 0,233, 0, 0, 0,179, 0, + 0, 0,180, 0, 0, 0,181, 0, 4, 0, 37, 0, 88, 0, 1, 0, 7, 0,145, 2, 89, 0, 2, 0, 4, 0,146, 2, 4, 0, 17, 0, + 82, 0, 7, 0, 7, 0,127, 2, 47, 0,126, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, 2, 0,130, 2, 2, 0,131, 2, + 98, 0, 1, 0, 7, 0,147, 2, 99, 0, 1, 0, 4, 0,148, 2,100, 0, 1, 0, 0, 0,149, 2,101, 0, 1, 0, 7, 0,127, 2, +102, 0, 3, 0, 4, 0,150, 2, 0, 0, 92, 0, 7, 0,151, 2,103, 0, 4, 0, 7, 0,233, 0, 7, 0,179, 0, 7, 0,180, 0, + 7, 0,181, 0,104, 0, 1, 0,103, 0,128, 2,105, 0, 5, 0, 4, 0,152, 2, 4, 0,153, 2, 0, 0, 19, 0, 0, 0, 33, 2, + 0, 0, 59, 2,106, 0, 2, 0, 4, 0,154, 2, 4, 0,153, 2,107, 0, 10, 0,107, 0, 0, 0,107, 0, 1, 0,105, 0,155, 2, +104, 0,156, 2,106, 0,157, 2, 4, 0, 53, 0, 4, 0,115, 2, 4, 0,114, 2, 4, 0, 37, 0, 84, 0,158, 2, 92, 0, 14, 0, + 12, 0,159, 2, 84, 0,158, 2, 0, 0,160, 2, 0, 0,161, 2, 0, 0,162, 2, 0, 0,163, 2, 0, 0,164, 2, 0, 0,165, 2, + 0, 0,166, 2, 0, 0, 19, 0, 91, 0,111, 2, 91, 0,113, 2, 2, 0,167, 2, 0, 0,168, 2, 93, 0, 8, 0, 4, 0,169, 2, + 4, 0,170, 2, 81, 0,171, 2, 85, 0,172, 2, 4, 0,115, 2, 4, 0,114, 2, 4, 0, 53, 0, 4, 0, 37, 0,108, 0, 9, 0, +108, 0, 0, 0,108, 0, 1, 0, 4, 0, 17, 0, 4, 0, 69, 1, 4, 0,173, 2, 4, 0, 37, 0, 0, 0, 20, 0, 46, 0,129, 0, + 0, 0,174, 2,109, 0, 7, 0,108, 0,175, 2, 2, 0,176, 2, 2, 0,159, 2, 2, 0,177, 2, 2, 0, 90, 0, 9, 0,178, 2, + 9, 0,179, 2,110, 0, 3, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0, 20, 0,111, 0, 5, 0,108, 0,175, 2, 32, 0,161, 0, + 0, 0, 20, 0, 2, 0,180, 2, 0, 0,181, 2,112, 0, 5, 0,108, 0,175, 2, 7, 0, 87, 0, 7, 0,182, 2, 4, 0,183, 2, + 4, 0,184, 2,113, 0, 5, 0,108, 0,175, 2, 32, 0,185, 2, 0, 0, 71, 0, 4, 0, 69, 1, 4, 0, 19, 0,114, 0, 13, 0, +108, 0,175, 2, 32, 0,186, 2, 32, 0,187, 2, 32, 0,188, 2, 32, 0,189, 2, 7, 0,190, 2, 7, 0,191, 2, 7, 0,182, 2, + 7, 0,192, 2, 4, 0,193, 2, 4, 0,194, 2, 4, 0, 90, 0, 4, 0,195, 2,115, 0, 5, 0,108, 0,175, 2, 2, 0,196, 2, + 2, 0, 19, 0, 7, 0,197, 2, 32, 0,198, 2,116, 0, 3, 0,108, 0,175, 2, 7, 0,199, 2, 4, 0, 90, 0,117, 0, 10, 0, +108, 0,175, 2, 7, 0,200, 2, 4, 0,201, 2, 4, 0, 37, 0, 2, 0, 90, 0, 2, 0,202, 2, 2, 0,203, 2, 2, 0,204, 2, + 7, 0,205, 2, 0, 0,206, 2,118, 0, 3, 0,108, 0,175, 2, 7, 0, 37, 0, 4, 0, 17, 0,119, 0, 6, 0,108, 0,175, 2, +120, 0,207, 2,121, 0,208, 2,122, 0,209, 2, 7, 0,210, 2, 4, 0, 17, 0,123, 0, 11, 0,108, 0,175, 2, 52, 0,211, 2, + 7, 0,212, 2, 4, 0,213, 2, 0, 0,206, 2, 7, 0,214, 2, 4, 0,215, 2, 32, 0,216, 2, 0, 0,217, 2, 4, 0,218, 2, + 4, 0, 37, 0,124, 0, 12, 0,108, 0,175, 2, 32, 0,219, 2, 47, 0,220, 2, 4, 0, 90, 0, 4, 0,221, 2, 7, 0,222, 2, + 7, 0,223, 2, 7, 0,224, 2, 7, 0,225, 2, 0, 0,217, 2, 4, 0,218, 2, 4, 0, 37, 0,125, 0, 3, 0,108, 0,175, 2, + 7, 0,226, 2, 4, 0,227, 2,126, 0, 5, 0,108, 0,175, 2, 7, 0,228, 2, 0, 0,206, 2, 2, 0, 19, 0, 2, 0,229, 2, +127, 0, 8, 0,108, 0,175, 2, 32, 0,161, 0, 7, 0,228, 2, 7, 0,248, 0, 7, 0,106, 0, 0, 0,206, 2, 2, 0, 19, 0, + 2, 0, 17, 0,128, 0, 21, 0,108, 0,175, 2, 32, 0,230, 2, 0, 0,206, 2, 52, 0,211, 2, 32, 0,216, 2, 2, 0, 19, 0, + 2, 0, 37, 0, 7, 0,231, 2, 7, 0,232, 2, 7, 0,233, 2, 7, 0, 64, 2, 7, 0,234, 2, 7, 0,235, 2, 7, 0,236, 2, + 7, 0,237, 2, 4, 0,215, 2, 4, 0,218, 2, 0, 0,217, 2, 7, 0,238, 2, 7, 0,239, 2, 7, 0, 89, 0,129, 0, 7, 0, +108, 0,175, 2, 2, 0,240, 2, 2, 0,241, 2, 4, 0, 69, 0, 32, 0,161, 0, 7, 0,242, 2, 0, 0,206, 2,130, 0, 10, 0, +108, 0,175, 2, 32, 0,161, 0, 0, 0,243, 2, 7, 0,244, 2, 7, 0,245, 2, 7, 0,237, 2, 4, 0,246, 2, 4, 0,247, 2, + 7, 0,248, 2, 0, 0, 20, 0,131, 0, 1, 0,108, 0,175, 2,132, 0, 7, 0,108, 0,175, 2, 46, 0,129, 0,133, 0,249, 2, +134, 0,250, 2,135, 0,251, 2,136, 0,252, 2, 12, 0,253, 2,137, 0, 13, 0,108, 0,175, 2, 84, 0,254, 2, 84, 0,255, 2, + 84, 0, 0, 3, 84, 0, 1, 3, 84, 0, 2, 3, 84, 0, 3, 3, 81, 0, 4, 3, 4, 0, 5, 3, 4, 0, 6, 3, 7, 0,210, 2, + 7, 0, 37, 0,138, 0, 7, 3,139, 0, 7, 0,108, 0,175, 2, 84, 0,254, 2, 84, 0, 8, 3,140, 0, 9, 3,141, 0, 7, 3, + 4, 0, 10, 3, 4, 0, 5, 3,142, 0, 4, 0,108, 0,175, 2, 32, 0,161, 0, 4, 0, 11, 3, 4, 0, 37, 0,143, 0, 2, 0, + 4, 0, 12, 3, 7, 0, 25, 2,144, 0, 2, 0, 4, 0,120, 0, 4, 0, 13, 3,145, 0, 24, 0,108, 0,175, 2, 32, 0,161, 0, + 0, 0,206, 2, 2, 0, 14, 3, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 37, 0,143, 0, 15, 3, 4, 0, 16, 3, 7, 0, 17, 3, + 4, 0, 53, 0, 4, 0, 18, 3,144, 0, 19, 3,143, 0, 20, 3, 4, 0, 21, 3, 4, 0, 22, 3, 4, 0, 23, 3, 4, 0, 13, 3, + 7, 0, 24, 3, 7, 0, 25, 3, 7, 0, 26, 3, 7, 0, 27, 3, 7, 0, 28, 3, 9, 0, 29, 3,146, 0, 8, 0,108, 0,175, 2, +147, 0, 30, 3,140, 0, 9, 3, 4, 0, 31, 3, 4, 0, 32, 3, 4, 0, 33, 3, 2, 0, 19, 0, 2, 0, 56, 0,148, 0, 8, 0, +108, 0,175, 2, 32, 0, 44, 0, 2, 0,252, 0, 2, 0, 19, 0, 2, 0,196, 2, 2, 0, 56, 0, 7, 0, 34, 3, 7, 0, 35, 3, +149, 0, 5, 0,108, 0,175, 2, 4, 0, 36, 3, 2, 0, 19, 0, 2, 0, 37, 3, 7, 0, 38, 3,150, 0, 8, 0,108, 0,175, 2, + 0, 0, 39, 3, 0, 0, 40, 3, 0, 0,165, 2, 0, 0, 41, 3, 0, 0, 42, 3, 0, 0, 90, 0, 0, 0, 59, 2,151, 0, 3, 0, +108, 0,175, 2,152, 0, 43, 3,136, 0,252, 2,153, 0, 10, 0,108, 0,175, 2, 32, 0, 44, 3, 32, 0, 45, 3, 0, 0, 46, 3, + 7, 0, 47, 3, 2, 0, 48, 3, 2, 0, 49, 3, 0, 0, 50, 3, 0, 0, 51, 3, 0, 0,181, 2,154, 0, 9, 0,108, 0,175, 2, + 32, 0, 52, 3, 0, 0, 46, 3, 7, 0, 53, 3, 7, 0, 54, 3, 0, 0, 69, 1, 0, 0,196, 2, 0, 0, 55, 3, 0, 0, 37, 0, +155, 0, 1, 0,108, 0,175, 2,156, 0, 8, 0,108, 0,175, 2, 0, 0,206, 2, 7, 0,120, 0, 7, 0, 56, 3, 7, 0, 57, 3, + 7, 0, 58, 3, 7, 0, 59, 3, 4, 0, 19, 0,157, 0, 9, 0,108, 0,175, 2, 32, 0, 60, 3, 4, 0, 61, 3, 4, 0, 62, 3, + 4, 0, 63, 3, 7, 0, 64, 3, 7, 0, 65, 3, 2, 0,196, 2, 2, 0, 19, 0,158, 0, 28, 0, 27, 0, 31, 0, 2, 0, 34, 2, + 2, 0, 35, 2, 2, 0, 66, 3, 2, 0, 19, 0, 2, 0, 67, 3, 2, 0, 68, 3, 2, 0, 69, 3, 2, 0, 69, 0, 0, 0, 70, 3, + 0, 0, 71, 3, 0, 0, 72, 3, 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 73, 3, 7, 0, 74, 3, 7, 0, 75, 3, 7, 0, 76, 3, + 7, 0, 77, 3, 7, 0, 78, 3, 34, 0, 79, 3, 36, 0, 79, 0, 38, 0, 55, 2, 86, 0,105, 2, 0, 0, 71, 0, 7, 0, 80, 3, + 7, 0, 81, 3,158, 0, 82, 3,159, 0, 3, 0,159, 0, 0, 0,159, 0, 1, 0, 0, 0, 20, 0, 71, 0, 3, 0, 7, 0, 83, 3, + 4, 0, 19, 0, 4, 0, 37, 0, 32, 0,126, 0, 27, 0, 31, 0, 39, 0, 74, 0,160, 0, 84, 3, 2, 0, 17, 0, 2, 0, 85, 3, + 4, 0, 86, 3, 4, 0, 87, 3, 4, 0, 88, 3, 0, 0, 89, 3, 32, 0, 38, 0, 32, 0, 90, 3, 32, 0, 91, 3, 32, 0, 92, 3, + 32, 0, 93, 3, 36, 0, 79, 0, 77, 0, 54, 2, 71, 0,251, 1,161, 0, 94, 3,161, 0, 95, 3,162, 0, 96, 3, 9, 0, 2, 0, +163, 0, 97, 3,164, 0, 98, 3,165, 0, 99, 3, 12, 0,100, 3, 12, 0, 99, 2, 12, 0, 14, 2, 12, 0,101, 3, 12, 0,102, 3, + 4, 0, 69, 1, 4, 0,103, 3, 66, 0, 16, 2, 0, 0,104, 3, 4, 0, 18, 2, 4, 0,105, 3, 7, 0, 64, 1, 7, 0,106, 3, + 7, 0,107, 3, 7, 0,169, 0, 7, 0,108, 3, 7, 0, 65, 1, 7, 0,109, 3, 7, 0, 4, 2, 7, 0,110, 3, 7, 0,111, 3, + 7, 0,112, 3, 7, 0,113, 3, 7, 0,114, 3, 7, 0,115, 3, 7, 0,244, 2, 7, 0,116, 3, 7, 0,237, 0, 4, 0,117, 3, + 2, 0, 19, 0, 2, 0,118, 3, 2, 0,119, 3, 2, 0,120, 3, 2, 0,121, 3, 2, 0,122, 3, 2, 0,123, 3, 2, 0,124, 3, + 2, 0,125, 3, 2, 0,126, 3, 2, 0,127, 3, 2, 0,128, 3, 4, 0,129, 3, 4, 0,130, 3, 4, 0,131, 3, 4, 0,132, 3, + 7, 0,133, 3, 7, 0, 91, 2, 7, 0,134, 3, 7, 0,135, 3, 7, 0,136, 3, 7, 0,137, 3, 7, 0,138, 3, 7, 0,212, 0, + 7, 0,139, 3, 7, 0,140, 3, 7, 0,141, 3, 7, 0,142, 3, 2, 0,143, 3, 0, 0,144, 3, 0, 0,145, 3, 0, 0,146, 3, + 0, 0,147, 3, 7, 0,148, 3, 7, 0,149, 3, 12, 0,150, 3, 12, 0,151, 3, 12, 0,152, 3, 12, 0,153, 3, 7, 0,154, 3, + 2, 0,146, 2, 2, 0,155, 3, 7, 0,128, 2, 4, 0,156, 3, 4, 0,157, 3,166, 0,158, 3, 2, 0,159, 3, 2, 0,244, 0, + 7, 0,160, 3, 12, 0,161, 3, 12, 0,162, 3, 12, 0,163, 3, 12, 0,164, 3,167, 0, 61, 1,168, 0,165, 3, 67, 0,166, 3, + 2, 0,167, 3, 2, 0,168, 3, 2, 0,169, 3, 2, 0,170, 3, 7, 0,120, 2, 2, 0,171, 3, 2, 0,172, 3,152, 0,173, 3, +140, 0,174, 3,140, 0,175, 3, 4, 0,176, 3, 4, 0,177, 3, 4, 0,178, 3, 4, 0, 69, 0, 12, 0,179, 3, 12, 0,180, 3, + 12, 0,181, 3,169, 0, 14, 0,169, 0, 0, 0,169, 0, 1, 0, 32, 0, 38, 0, 7, 0,244, 2, 7, 0, 66, 1, 7, 0,245, 2, + 7, 0,237, 2, 0, 0, 20, 0, 4, 0,246, 2, 4, 0,247, 2, 4, 0,182, 3, 2, 0, 17, 0, 2, 0,183, 3, 7, 0,248, 2, +170, 0, 12, 0,170, 0, 0, 0,170, 0, 1, 0, 32, 0, 44, 0, 4, 0,184, 3, 4, 0,146, 2, 4, 0,185, 3, 4, 0, 17, 0, + 4, 0,186, 3, 7, 0, 66, 1, 7, 0,187, 3, 7, 0,188, 3, 7, 0,144, 2,167, 0, 40, 0, 4, 0, 19, 0, 2, 0,189, 3, + 2, 0,190, 3, 2, 0,237, 2, 2, 0,191, 3, 2, 0,192, 3, 2, 0,193, 3, 2, 0,194, 3, 2, 0,195, 3, 7, 0,196, 3, + 7, 0,197, 3, 7, 0,198, 3, 7, 0,199, 3, 7, 0,200, 3, 7, 0,201, 3, 7, 0,202, 3, 7, 0,203, 3, 7, 0,204, 3, + 7, 0,205, 3, 7, 0,206, 3, 7, 0,207, 3, 7, 0,208, 3, 7, 0,209, 3, 7, 0,210, 3, 7, 0,211, 3, 7, 0,212, 3, + 7, 0,213, 3, 7, 0,214, 3, 7, 0,215, 3, 7, 0,216, 3, 7, 0,217, 3, 7, 0,218, 3, 7, 0,219, 3, 7, 0,220, 3, + 7, 0,221, 3, 7, 0,222, 3, 52, 0,162, 0,171, 0,223, 3, 7, 0,224, 3, 4, 0,184, 2,172, 0, 5, 0, 67, 0,229, 1, + 7, 0,225, 3, 7, 0,226, 3, 2, 0, 19, 0, 2, 0,227, 3,173, 0, 9, 0,173, 0, 0, 0,173, 0, 1, 0, 4, 0,228, 3, + 4, 0,229, 3, 4, 0,230, 3, 4, 0, 19, 0, 4, 0,231, 3, 9, 0,232, 3, 9, 0,233, 3,136, 0, 19, 0,136, 0, 0, 0, +136, 0, 1, 0, 4, 0, 19, 0, 4, 0,234, 3, 4, 0,235, 3, 4, 0,236, 3, 4, 0,237, 3, 4, 0,238, 3, 4, 0,239, 3, + 4, 0,229, 3, 4, 0,146, 2, 4, 0, 56, 0, 0, 0,240, 3, 0, 0,241, 3, 0, 0,242, 3, 0, 0,243, 3, 12, 0,244, 3, +174, 0,245, 3, 9, 0,246, 3,175, 0, 1, 0, 7, 0, 32, 2,166, 0, 30, 0, 4, 0, 19, 0, 7, 0,247, 3, 7, 0,248, 3, + 7, 0,249, 3, 4, 0,250, 3, 4, 0,251, 3, 4, 0,252, 3, 4, 0,253, 3, 7, 0,254, 3, 7, 0,255, 3, 7, 0, 0, 4, + 7, 0, 1, 4, 7, 0, 2, 4, 7, 0, 3, 4, 7, 0, 4, 4, 7, 0, 5, 4, 7, 0, 6, 4, 7, 0, 7, 4, 7, 0, 8, 4, + 7, 0, 9, 4, 7, 0, 10, 4, 7, 0, 11, 4, 7, 0, 12, 4, 7, 0, 13, 4, 7, 0, 14, 4, 7, 0, 15, 4, 4, 0, 16, 4, + 4, 0, 17, 4, 7, 0, 18, 4, 7, 0,139, 3,168, 0, 54, 0, 4, 0,229, 3, 4, 0, 19, 4,176, 0, 20, 4,177, 0, 21, 4, + 0, 0, 37, 0, 0, 0, 22, 4, 2, 0, 23, 4, 7, 0, 24, 4, 0, 0, 25, 4, 7, 0, 26, 4, 7, 0, 27, 4, 7, 0, 28, 4, + 7, 0, 29, 4, 7, 0, 30, 4, 7, 0, 31, 4, 7, 0, 32, 4, 7, 0, 33, 4, 7, 0, 34, 4, 2, 0, 35, 4, 0, 0, 36, 4, + 2, 0, 37, 4, 7, 0, 38, 4, 7, 0, 39, 4, 0, 0, 40, 4, 4, 0,121, 0, 4, 0, 41, 4, 4, 0, 42, 4, 2, 0, 43, 4, + 2, 0, 44, 4,175, 0, 45, 4, 4, 0, 46, 4, 4, 0, 81, 0, 7, 0, 47, 4, 7, 0, 48, 4, 7, 0, 49, 4, 7, 0, 50, 4, + 2, 0, 51, 4, 2, 0, 52, 4, 2, 0, 53, 4, 2, 0, 54, 4, 2, 0, 55, 4, 2, 0, 56, 4, 2, 0, 57, 4, 2, 0, 58, 4, +178, 0, 59, 4, 7, 0, 60, 4, 7, 0, 61, 4,136, 0, 62, 4, 12, 0,253, 2,172, 0, 63, 4, 7, 0, 64, 4, 7, 0, 65, 4, + 7, 0, 66, 4, 0, 0, 67, 4,152, 0, 51, 0,151, 0, 68, 4, 2, 0, 17, 0, 2, 0, 69, 4, 2, 0, 70, 4, 2, 0, 71, 4, + 7, 0, 72, 4, 2, 0, 73, 4, 2, 0, 74, 4, 7, 0, 75, 4, 2, 0, 76, 4, 2, 0, 77, 4, 7, 0, 78, 4, 7, 0, 79, 4, + 7, 0, 80, 4, 7, 0, 81, 4, 7, 0, 82, 4, 4, 0, 83, 4, 4, 0, 84, 4, 7, 0, 85, 4, 4, 0, 86, 4, 7, 0, 87, 4, + 7, 0, 88, 4, 7, 0, 89, 4, 80, 0, 90, 4, 80, 0, 91, 4, 80, 0, 92, 4, 0, 0, 93, 4, 7, 0, 94, 4, 7, 0, 95, 4, + 36, 0, 79, 0, 2, 0, 96, 4, 0, 0, 97, 4, 0, 0, 98, 4, 7, 0, 99, 4, 4, 0,100, 4, 7, 0,101, 4, 7, 0,102, 4, + 4, 0,103, 4, 4, 0, 19, 0, 7, 0,104, 4, 7, 0,105, 4, 7, 0,106, 4, 84, 0,107, 4, 7, 0,108, 4, 7, 0,109, 4, + 7, 0,110, 4, 7, 0,111, 4, 7, 0,112, 4, 7, 0,113, 4, 7, 0,114, 4, 4, 0,115, 4,179, 0, 76, 0, 27, 0, 31, 0, + 39, 0, 74, 0, 2, 0,172, 0, 2, 0, 70, 1, 2, 0,104, 1, 2, 0,116, 4, 7, 0,117, 4, 7, 0,118, 4, 7, 0,119, 4, + 7, 0,120, 4, 7, 0,121, 4, 7, 0,122, 4, 7, 0,150, 1, 7, 0,152, 1, 7, 0,151, 1, 7, 0, 69, 0, 4, 0,123, 4, + 7, 0,124, 4, 7, 0,125, 4, 7, 0,126, 4, 7, 0,127, 4, 7, 0,128, 4, 7, 0,129, 4, 7, 0,130, 4, 2, 0,131, 4, + 2, 0, 69, 1, 2, 0,132, 4, 2, 0,133, 4, 2, 0,134, 4, 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4, 7, 0,138, 4, + 7, 0,139, 4, 7, 0,140, 4, 7, 0,141, 4, 7, 0,142, 4, 7, 0,143, 4, 7, 0,144, 4, 7, 0,145, 4, 7, 0,146, 4, + 7, 0,147, 4, 7, 0,148, 4, 7, 0,149, 4, 2, 0,150, 4, 2, 0,151, 4, 2, 0,152, 4, 2, 0,153, 4, 7, 0,154, 4, + 7, 0,155, 4, 7, 0,156, 4, 7, 0,157, 4, 2, 0,158, 4, 2, 0,159, 4, 2, 0,160, 4, 2, 0,161, 4, 7, 0,162, 4, + 7, 0,163, 4, 7, 0,164, 4, 7, 0,165, 4, 7, 0,166, 4, 7, 0,167, 4, 7, 0,168, 4, 2, 0,169, 4, 2, 0,170, 4, + 2, 0,171, 4, 2, 0,172, 4, 2, 0,173, 4, 2, 0, 19, 0, 7, 0,174, 4, 7, 0,175, 4, 36, 0, 79, 0, 51, 0,122, 1, + 2, 0,123, 1, 2, 0,176, 4, 30, 0,148, 0,180, 0, 8, 0,180, 0, 0, 0,180, 0, 1, 0, 4, 0,117, 3, 4, 0,177, 4, + 4, 0, 19, 0, 2, 0,178, 4, 2, 0,179, 4, 32, 0,161, 0,181, 0, 13, 0, 9, 0,180, 4, 9, 0,181, 4, 4, 0,182, 4, + 4, 0,183, 4, 4, 0,184, 4, 4, 0,185, 4, 4, 0,186, 4, 4, 0,187, 4, 4, 0,188, 4, 4, 0,189, 4, 4, 0,190, 4, + 4, 0, 37, 0, 0, 0,191, 4,182, 0, 5, 0, 9, 0,192, 4, 9, 0,193, 4, 4, 0,194, 4, 4, 0, 69, 0, 0, 0,195, 4, +183, 0, 17, 0, 4, 0,196, 4, 4, 0,197, 4, 4, 0,198, 4, 4, 0,199, 4, 4, 0,200, 4, 4, 0,201, 4, 4, 0,202, 4, + 4, 0,203, 4, 4, 0,204, 4, 4, 0,205, 4, 4, 0,206, 4, 4, 0,207, 4, 2, 0,208, 4, 2, 0,209, 4, 4, 0,210, 4, + 4, 0,211, 4, 4, 0, 89, 0,184, 0, 15, 0, 4, 0, 17, 0, 4, 0,198, 4, 4, 0,212, 4, 4, 0,213, 4, 4, 0,214, 4, + 4, 0,215, 4, 7, 0,216, 4, 4, 0,217, 4, 4, 0, 90, 0, 4, 0,218, 4, 4, 0,219, 4, 4, 0,220, 4, 4, 0,221, 4, + 4, 0,222, 4, 26, 0, 30, 0,185, 0, 7, 0, 4, 0,223, 4, 7, 0,224, 4, 7, 0,225, 4, 7, 0,226, 4, 4, 0,227, 4, + 2, 0, 19, 0, 2, 0, 37, 0,186, 0, 11, 0,186, 0, 0, 0,186, 0, 1, 0, 0, 0, 20, 0, 66, 0,228, 4, 67, 0,229, 4, + 4, 0,117, 3, 4, 0,230, 4, 4, 0,231, 4, 4, 0, 37, 0, 4, 0,232, 4, 4, 0,233, 4,187, 0,111, 0,181, 0,234, 4, +182, 0,235, 4,183, 0,236, 4,184, 0,237, 4, 4, 0, 10, 3, 4, 0,121, 0, 4, 0, 41, 4, 7, 0,238, 4, 4, 0,239, 4, + 4, 0,240, 4, 4, 0,241, 4, 4, 0,242, 4, 2, 0, 19, 0, 2, 0,243, 4, 7, 0,244, 4, 7, 0,245, 4, 7, 0,246, 4, + 7, 0,247, 4, 7, 0,248, 4, 2, 0,249, 4, 2, 0,250, 4, 2, 0,251, 4, 2, 0,252, 4, 2, 0,243, 0, 2, 0,253, 4, + 2, 0,254, 4, 2, 0,255, 4, 2, 0, 0, 5, 2, 0, 1, 5, 2, 0, 91, 1, 2, 0,106, 0, 2, 0, 2, 5, 2, 0, 3, 5, + 2, 0, 4, 5, 2, 0, 5, 5, 2, 0, 6, 5, 2, 0, 7, 5, 2, 0, 8, 5, 2, 0, 9, 5, 2, 0, 10, 5, 2, 0, 92, 1, + 2, 0, 11, 5, 2, 0, 12, 5, 2, 0, 13, 5, 2, 0, 14, 5, 4, 0, 15, 5, 4, 0, 69, 1, 4, 0, 16, 5, 2, 0, 17, 5, + 2, 0, 18, 5, 2, 0, 19, 5, 2, 0,248, 1, 2, 0, 20, 5, 2, 0, 21, 5, 2, 0, 22, 5, 2, 0, 23, 5, 24, 0, 24, 5, + 24, 0, 25, 5, 23, 0, 26, 5, 12, 0, 27, 5, 2, 0, 28, 5, 2, 0, 29, 5, 7, 0, 30, 5, 7, 0, 31, 5, 7, 0, 32, 5, + 7, 0, 33, 5, 4, 0, 34, 5, 7, 0, 35, 5, 7, 0, 36, 5, 7, 0, 37, 5, 7, 0, 38, 5, 2, 0, 39, 5, 2, 0, 40, 5, + 2, 0, 41, 5, 2, 0, 42, 5, 2, 0, 43, 5, 2, 0, 44, 5, 7, 0, 45, 5, 7, 0, 46, 5, 7, 0, 47, 5, 0, 0, 48, 5, + 0, 0, 49, 5, 4, 0, 50, 5, 2, 0, 51, 5, 2, 0,226, 1, 0, 0, 52, 5, 7, 0, 53, 5, 7, 0, 54, 5, 0, 0, 55, 5, + 0, 0, 56, 5, 0, 0, 57, 5, 0, 0, 58, 5, 4, 0, 59, 5, 2, 0, 60, 5, 2, 0, 61, 5, 7, 0, 62, 5, 7, 0, 63, 5, + 2, 0, 64, 5, 2, 0, 65, 5, 7, 0, 66, 5, 2, 0, 67, 5, 2, 0, 68, 5, 4, 0, 69, 5, 2, 0, 70, 5, 2, 0, 71, 5, + 2, 0, 72, 5, 2, 0, 73, 5, 7, 0, 74, 5, 7, 0, 69, 0, 42, 0, 75, 5, 0, 0, 76, 5,188, 0, 9, 0,188, 0, 0, 0, +188, 0, 1, 0, 0, 0, 20, 0, 2, 0, 77, 5, 2, 0, 78, 5, 2, 0, 79, 5, 2, 0, 89, 0, 7, 0, 80, 5, 7, 0, 69, 0, +189, 0, 7, 0, 2, 0,201, 2, 2, 0, 69, 1, 2, 0, 65, 3, 2, 0, 81, 5, 7, 0, 82, 5, 7, 0, 69, 0, 42, 0, 83, 5, +190, 0, 5, 0, 7, 0, 84, 5, 0, 0, 17, 0, 0, 0, 89, 0, 0, 0, 69, 0, 0, 0,226, 1,191, 0, 28, 0, 7, 0,129, 4, + 7, 0,130, 4, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0, 85, 5, 2, 0,176, 4, 2, 0,132, 4, 2, 0,133, 4, 2, 0,134, 4, + 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4,190, 0, 86, 5, 2, 0,249, 4, 2, 0,250, 4, 2, 0,251, 4, 2, 0,252, 4, + 2, 0,243, 0, 2, 0,253, 4, 2, 0, 87, 5, 2, 0,254, 4,189, 0, 88, 5, 2, 0, 89, 5, 2, 0, 0, 5, 2, 0, 3, 5, + 2, 0, 4, 5, 7, 0, 90, 5, 7, 0, 89, 0,192, 0, 6, 0,192, 0, 0, 0,192, 0, 1, 0, 4, 0,228, 3, 0, 0,240, 3, + 4, 0, 19, 0, 32, 0, 91, 5,193, 0, 6, 0,194, 0, 92, 5, 4, 0, 93, 5, 4, 0, 94, 5, 9, 0, 95, 5, 0, 0, 96, 5, + 4, 0, 90, 0,195, 0, 8, 0,193, 0, 97, 5, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 98, 5, 2, 0, 99, 5, 2, 0,100, 5, + 4, 0, 89, 0, 9, 0,101, 5,196, 0, 6, 0, 2, 0,106, 0, 2, 0,234, 3, 2, 0,102, 5, 2, 0,195, 2, 4, 0, 19, 0, + 7, 0,212, 2,197, 0, 14, 0, 2, 0, 19, 0, 2, 0,103, 5, 2, 0,104, 5, 2, 0,105, 5,196, 0,106, 5, 9, 0,101, 5, + 7, 0,107, 5, 7, 0, 56, 0, 4, 0,108, 5, 4, 0,109, 5, 4, 0,110, 5, 4, 0,111, 5, 46, 0,129, 0, 32, 0,161, 0, +198, 0, 4, 0,198, 0, 0, 0,198, 0, 1, 0, 0, 0,112, 5, 7, 0,113, 5,199, 0, 14, 0,193, 0, 97, 5, 4, 0, 90, 0, + 4, 0,114, 5, 7, 0,115, 5, 7, 0,116, 5, 7, 0,117, 5, 4, 0,118, 5, 4, 0,119, 5, 7, 0,120, 5, 7, 0,121, 5, + 4, 0,122, 5, 7, 0,123, 5, 7, 0,124, 5, 4, 0, 37, 0,200, 0, 7, 0,193, 0, 97, 5, 2, 0, 19, 0, 2, 0, 37, 0, + 4, 0, 36, 0, 4, 0,125, 5, 86, 0,126, 5, 9, 0,101, 5,201, 0, 74, 0,200, 0,127, 5,200, 0,128, 5,199, 0, 84, 3, + 7, 0,129, 5, 2, 0,130, 5, 2, 0,131, 5, 7, 0,132, 5, 7, 0,133, 5, 2, 0,234, 3, 2, 0,134, 5, 7, 0,135, 5, + 7, 0,136, 5, 7, 0,137, 5, 2, 0,138, 5, 2, 0,108, 5, 2, 0,139, 5, 2, 0,140, 5, 2, 0,141, 5, 2, 0,142, 5, + 7, 0,143, 5, 7, 0,144, 5, 7, 0,145, 5, 2, 0,146, 5, 2, 0,147, 5, 2, 0,148, 5, 2, 0,149, 5, 2, 0,150, 5, + 2, 0,151, 5, 2, 0,152, 5,195, 0,153, 5,197, 0,154, 5, 7, 0,155, 5, 7, 0,156, 5, 7, 0,157, 5, 2, 0,158, 5, + 2, 0,159, 5, 0, 0,160, 5, 0, 0,161, 5, 0, 0,162, 5, 0, 0,163, 5, 0, 0,164, 5, 0, 0,165, 5, 2, 0,166, 5, + 7, 0,167, 5, 7, 0,168, 5, 7, 0,169, 5, 7, 0,170, 5, 7, 0,171, 5, 7, 0,172, 5, 7, 0,173, 5, 7, 0,174, 5, + 7, 0,175, 5, 7, 0,176, 5, 2, 0,177, 5, 0, 0,178, 5, 0, 0,179, 5, 0, 0,180, 5, 0, 0,181, 5, 32, 0,182, 5, + 0, 0,183, 5, 0, 0,184, 5, 0, 0,185, 5, 0, 0,186, 5, 0, 0,187, 5, 0, 0,188, 5, 0, 0,189, 5, 0, 0,190, 5, + 2, 0,191, 5, 2, 0,192, 5, 2, 0,193, 5, 2, 0,194, 5, 2, 0,195, 5, 4, 0,196, 5, 4, 0,197, 5,202, 0, 8, 0, + 4, 0,198, 5, 4, 0,199, 5, 4, 0,200, 5, 4, 0,201, 5, 4, 0,202, 5, 4, 0,203, 5, 4, 0, 53, 0, 4, 0,115, 2, +203, 0, 3, 0, 7, 0,204, 5, 2, 0,205, 5, 2, 0, 19, 0,204, 0, 4, 0, 7, 0,206, 5, 4, 0, 19, 0, 4, 0,207, 5, + 4, 0, 56, 0, 46, 0, 42, 0, 27, 0, 31, 0, 39, 0, 74, 0, 32, 0, 91, 5,179, 0,208, 5, 46, 0,209, 5, 47, 0,235, 0, + 12, 0,210, 5,180, 0,211, 5, 32, 0,212, 5, 7, 0,213, 5, 7, 0,214, 5, 7, 0,215, 5, 7, 0,216, 5, 4, 0,117, 3, + 4, 0,217, 5, 4, 0, 89, 0, 2, 0, 19, 0, 2, 0, 63, 1, 60, 0, 58, 1,205, 0,218, 5,201, 0,219, 5,206, 0,220, 5, +187, 0,179, 0,185, 0,221, 5, 12, 0,100, 0, 12, 0,222, 5, 9, 0,223, 5, 9, 0,224, 5, 9, 0,225, 5,207, 0,226, 5, + 2, 0,227, 5, 2, 0,228, 5, 2, 0,244, 0, 2, 0,229, 5, 4, 0,230, 5, 4, 0,231, 5, 12, 0,232, 5,190, 0, 86, 5, +191, 0,233, 5,203, 0,234, 5,163, 0, 97, 3,204, 0,235, 5,208, 0, 11, 0,208, 0, 0, 0,208, 0, 1, 0, 47, 0,235, 0, + 45, 0, 57, 1, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0,106, 0, 7, 0,236, 5, 2, 0,237, 5, 2, 0, 19, 0, 7, 0, 69, 0, +209, 0, 39, 0, 7, 0,238, 5, 7, 0,239, 5, 7, 0,240, 5, 7, 0,241, 5, 7, 0,242, 5, 7, 0,243, 5, 7, 0,244, 5, + 7, 0,245, 5, 7, 0,246, 5, 7, 0, 76, 1, 7, 0,247, 5, 7, 0,248, 5, 7, 0,249, 5, 7, 0,250, 5, 7, 0,168, 0, + 2, 0,251, 5, 2, 0,252, 5, 2, 0,253, 5, 2, 0, 37, 0, 2, 0,254, 5, 2, 0,255, 5, 2, 0, 0, 6, 2, 0,237, 5, + 7, 0, 1, 6, 7, 0, 2, 6, 71, 0, 3, 6,163, 0, 97, 3,209, 0, 4, 6,210, 0, 5, 6,211, 0, 6, 6,212, 0, 7, 6, +213, 0, 8, 6,214, 0, 9, 6, 7, 0, 10, 6, 2, 0, 11, 6, 2, 0, 12, 6, 7, 0, 13, 6, 7, 0, 14, 6, 7, 0, 15, 6, +215, 0, 55, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6, 7, 0,246, 5, + 7, 0, 76, 1, 7, 0, 89, 0, 4, 0, 20, 6, 2, 0, 0, 6, 2, 0,237, 5, 32, 0, 91, 5, 32, 0, 21, 6, 12, 0, 22, 6, +208, 0, 23, 6,215, 0, 4, 6, 0, 0, 24, 6, 4, 0,117, 3, 4, 0,217, 5, 2, 0, 25, 6, 2, 0, 69, 0, 2, 0, 26, 6, + 2, 0, 27, 6, 2, 0,226, 1, 2, 0, 19, 0, 2, 0, 17, 2, 2, 0, 28, 6, 7, 0,111, 0, 7, 0, 29, 6, 7, 0, 13, 6, + 7, 0, 15, 6, 7, 0, 30, 6, 7, 0, 31, 6, 7, 0,168, 0, 7, 0,213, 5, 2, 0, 32, 6, 2, 0,248, 1, 2, 0, 33, 6, + 2, 0, 34, 6, 2, 0, 35, 6, 2, 0, 36, 6, 2, 0, 37, 6, 2, 0, 38, 6, 2, 0, 39, 6, 2, 0,253, 5, 4, 0, 40, 6, + 12, 0, 41, 6, 2, 0, 42, 6, 2, 0,129, 2, 2, 0, 43, 6, 0, 0, 44, 6, 0, 0, 45, 6, 9, 0, 46, 6,163, 0, 97, 3, +217, 0, 24, 0, 24, 0, 36, 0, 24, 0, 63, 0, 23, 0, 47, 6, 23, 0, 48, 6, 23, 0, 49, 6, 7, 0, 50, 6, 7, 0, 51, 6, + 7, 0, 52, 6, 7, 0, 53, 6, 2, 0, 54, 6, 2, 0, 55, 6, 2, 0, 56, 6, 2, 0, 57, 6, 2, 0, 58, 6, 2, 0, 19, 0, + 2, 0, 59, 6, 2, 0, 60, 6, 2, 0, 61, 6, 2, 0, 62, 6, 2, 0, 63, 6, 2, 0, 27, 6, 7, 0, 64, 6, 4, 0, 65, 6, + 4, 0, 66, 6,216, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6, +218, 0, 8, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6,219, 0, 67, 6, + 46, 0,129, 0,220, 0, 14, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6, +217, 0, 68, 6,221, 0, 69, 6, 12, 0, 70, 6, 2, 0, 69, 1, 2, 0, 71, 6, 4, 0, 19, 0, 7, 0, 72, 6, 4, 0, 27, 6, +222, 0, 20, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6,210, 0, 5, 6, +217, 0, 68, 6, 2, 0, 73, 6, 2, 0, 74, 6, 2, 0, 75, 6, 2, 0, 76, 6, 2, 0, 59, 6, 2, 0, 77, 6, 0, 0, 19, 0, + 0, 0,176, 4, 9, 0, 54, 2, 4, 0, 78, 6, 4, 0, 79, 6, 27, 0, 80, 6,223, 0, 18, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6,217, 0, 68, 6, 7, 0, 79, 2, 7, 0, 80, 2, 2, 0, 73, 6, + 2, 0, 81, 6, 2, 0, 82, 6, 2, 0, 83, 6, 4, 0, 19, 0, 7, 0, 84, 6, 4, 0,237, 5, 4, 0, 37, 0,163, 0, 97, 3, +224, 0, 15, 0, 0, 0, 85, 6, 0, 0, 86, 6, 0, 0, 87, 6, 0, 0, 88, 6, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 89, 6, + 2, 0, 90, 6, 2, 0,169, 1, 2, 0, 91, 6, 4, 0, 92, 6, 4, 0, 93, 6, 2, 0, 94, 6, 2, 0, 37, 0, 0, 0, 95, 6, +225, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 4, 0, 96, 6,224, 0, 97, 6,226, 0, 98, 6, + 12, 0, 99, 6, 12, 0,100, 6,227, 0,101, 6,214, 0,102, 6,228, 0,103, 6, 2, 0,104, 6, 2, 0,105, 6, 2, 0,106, 6, + 2, 0, 69, 0,229, 0, 17, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6, +217, 0, 68, 6, 12, 0,107, 6,230, 0,108, 6, 0, 0,109, 6,231, 0,110, 6, 4, 0,111, 6, 4, 0,112, 6, 2, 0, 19, 0, + 2, 0,113, 6, 2, 0,114, 6, 2, 0, 37, 0,232, 0, 32, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, + 7, 0, 18, 6, 2, 0, 19, 6, 47, 0,220, 2, 45, 0, 57, 1, 63, 0,115, 6, 2, 0,128, 0, 2, 0,116, 6, 2, 0, 69, 0, + 2, 0,117, 6, 4, 0, 19, 0, 2, 0,118, 6, 2, 0,119, 6, 2, 0,120, 6, 2, 0,226, 1, 0, 0,121, 6, 0, 0,122, 6, + 0, 0,123, 6, 0, 0, 27, 6, 7, 0,124, 6, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0, 84, 6, 7, 0,248, 1, 7, 0,125, 6, + 7, 0,126, 6,163, 0, 97, 3,233, 0,127, 6,234, 0,128, 6,235, 0, 11, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, + 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6, 2, 0, 71, 6, 2, 0, 19, 0, 4, 0, 37, 0,221, 0, 69, 6,217, 0, 68, 6, +236, 0, 27, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6, 42, 0,129, 6, + 4, 0,130, 6, 4, 0,131, 6, 2, 0, 90, 0, 2, 0,128, 0, 2, 0,132, 6, 0, 0,133, 6, 0, 0,134, 6, 4, 0,135, 6, + 4, 0,136, 6, 4, 0,137, 6, 4, 0,138, 6, 2, 0,139, 6, 2, 0,140, 6, 7, 0,141, 6, 23, 0,142, 6, 23, 0,143, 6, + 4, 0,144, 6, 4, 0,145, 6, 0, 0,146, 6, 0, 0,147, 6,237, 0, 10, 0, 27, 0, 31, 0, 9, 0,148, 6, 9, 0,149, 6, + 9, 0,150, 6, 9, 0,151, 6, 9, 0,152, 6, 4, 0, 90, 0, 4, 0,153, 6, 0, 0,154, 6, 0, 0,155, 6,238, 0, 10, 0, +216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6,237, 0,156, 6, 2, 0, 90, 0, 2, 0,128, 0, + 4, 0, 89, 0, 9, 0,157, 6,239, 0, 9, 0,239, 0, 0, 0,239, 0, 1, 0, 4, 0, 17, 0, 4, 0, 19, 0, 7, 0,158, 6, + 4, 0, 23, 0, 4, 0,236, 3, 4, 0,237, 3, 4, 0,124, 0,240, 0, 11, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, + 4, 0, 17, 6, 7, 0, 18, 6,217, 0, 68, 6, 12, 0,159, 6, 4, 0,160, 6, 4, 0, 37, 0, 4, 0, 19, 0, 4, 0,161, 6, +241, 0, 25, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6,217, 0, 68, 6, + 27, 0,162, 6, 27, 0, 80, 0, 2, 0, 19, 0, 2, 0,128, 0, 7, 0,163, 6, 9, 0,164, 6, 7, 0, 79, 2, 7, 0, 80, 2, + 7, 0, 84, 6, 7, 0, 15, 6, 7, 0,165, 6, 7, 0,166, 6, 60, 0, 58, 1, 60, 0,167, 6, 4, 0,168, 6, 2, 0,169, 6, + 2, 0, 37, 0,163, 0, 97, 3,242, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, + 2, 0, 19, 6, 2, 0, 19, 0, 2, 0,126, 3, 4, 0, 37, 0,163, 0, 97, 3,243, 0, 42, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6,217, 0, 68, 6,226, 0, 98, 6, 0, 0, 85, 6, 0, 0, 86, 6, + 0, 0, 87, 6, 2, 0, 17, 0, 2, 0,170, 6, 2, 0, 19, 0, 2, 0, 89, 6, 9, 0,164, 6, 4, 0, 92, 6, 4, 0,171, 6, + 4, 0,172, 6, 4, 0, 93, 6, 23, 0,173, 6, 23, 0,174, 6, 7, 0,175, 6, 7, 0,176, 6, 7, 0,177, 6, 7, 0,163, 6, + 2, 0,178, 6, 2, 0,234, 0, 2, 0,169, 1, 2, 0, 91, 6, 2, 0, 37, 0, 2, 0, 89, 0, 2, 0,179, 6, 2, 0,180, 6, + 9, 0,181, 6, 9, 0,182, 6, 9, 0,183, 6, 9, 0,184, 6, 9, 0,185, 6, 2, 0,186, 6, 0, 0,187, 6, 57, 0,188, 6, +244, 0, 7, 0,244, 0, 0, 0,244, 0, 1, 0, 4, 0,189, 6, 4, 0, 23, 0, 0, 0, 83, 0, 4, 0,190, 6, 4, 0, 17, 0, +245, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6, 4, 0, 17, 0, + 4, 0,191, 6, 4, 0, 19, 0, 4, 0,132, 6, 12, 0,192, 6, 12, 0,193, 6, 0, 0,194, 6, 0, 0,195, 6, 4, 0,196, 6, + 4, 0,197, 6,246, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 4, 0, 37, 0, 0, 0,198, 6, +247, 0, 7, 0,247, 0, 0, 0,247, 0, 1, 0, 0, 0,199, 6, 2, 0,200, 6, 2, 0,201, 6, 2, 0,202, 6, 2, 0, 37, 0, +248, 0, 12, 0, 2, 0,201, 6, 2, 0,203, 6, 2, 0,204, 6, 0, 0,181, 2, 2, 0,205, 6, 2, 0,206, 6, 2, 0,207, 6, + 2, 0,208, 6, 2, 0,209, 6, 2, 0, 59, 6, 7, 0,210, 6, 7, 0,211, 6,249, 0, 18, 0,249, 0, 0, 0,249, 0, 1, 0, + 0, 0,240, 3,248, 0,212, 6,248, 0,213, 6,248, 0,214, 6,248, 0,215, 6, 7, 0,216, 6, 2, 0,217, 6, 2, 0,218, 6, + 2, 0,219, 6, 2, 0,220, 6, 2, 0,221, 6, 2, 0,222, 6, 2, 0,223, 6, 2, 0,224, 6, 2, 0,225, 6, 2, 0,226, 6, +250, 0, 10, 0, 0, 0,227, 6, 0, 0,228, 6, 0, 0,229, 6, 0, 0,230, 6, 0, 0,231, 6, 0, 0,232, 6, 2, 0,233, 6, + 2, 0,234, 6, 2, 0,235, 6, 2, 0,236, 6,251, 0, 8, 0, 0, 0,237, 6, 0, 0,238, 6, 0, 0,239, 6, 0, 0,240, 6, + 0, 0,241, 6, 0, 0,242, 6, 7, 0,236, 5, 7, 0, 37, 0,252, 0, 18, 0,250, 0,243, 6,250, 0,244, 6,250, 0,245, 6, +250, 0,246, 6,250, 0,247, 6,250, 0,248, 6,250, 0,249, 6,250, 0,250, 6,250, 0,251, 6,250, 0,252, 6,250, 0,253, 6, +250, 0,254, 6,250, 0,255, 6,250, 0, 0, 7,250, 0, 1, 7,250, 0, 2, 7,251, 0, 3, 7, 0, 0, 4, 7,253, 0, 92, 0, + 0, 0, 5, 7, 0, 0, 6, 7, 0, 0,231, 6, 0, 0, 7, 7, 0, 0, 8, 7, 0, 0, 9, 7, 0, 0, 10, 7, 0, 0, 11, 7, + 0, 0, 12, 7, 0, 0, 13, 7, 0, 0, 14, 7, 0, 0, 15, 7, 0, 0, 16, 7, 0, 0, 17, 7, 0, 0, 18, 7, 0, 0, 19, 7, + 0, 0, 20, 7, 0, 0, 21, 7, 0, 0, 22, 7, 0, 0, 23, 7, 0, 0, 24, 7, 0, 0, 25, 7, 0, 0, 26, 7, 0, 0, 27, 7, + 0, 0, 28, 7, 0, 0, 29, 7, 0, 0, 30, 7, 0, 0, 31, 7, 0, 0, 32, 7, 0, 0, 33, 7, 0, 0, 34, 7, 0, 0, 35, 7, + 0, 0, 36, 7, 0, 0, 37, 7, 0, 0, 38, 7, 0, 0, 39, 7, 0, 0, 40, 7, 0, 0, 41, 7, 0, 0, 42, 7, 0, 0, 43, 7, + 0, 0, 44, 7, 0, 0, 45, 7, 0, 0, 46, 7, 0, 0, 47, 7, 0, 0, 48, 7, 0, 0, 49, 7, 0, 0, 50, 7, 0, 0, 51, 7, + 0, 0, 52, 7, 0, 0, 53, 7, 0, 0, 54, 7, 0, 0, 55, 7, 0, 0, 56, 7, 0, 0, 57, 7, 0, 0, 58, 7, 0, 0, 59, 7, + 0, 0, 60, 7, 0, 0, 61, 7, 0, 0, 62, 7, 0, 0, 63, 7, 0, 0, 64, 7, 0, 0, 65, 7, 0, 0, 66, 7, 0, 0, 67, 7, + 0, 0, 68, 7, 0, 0, 69, 7, 0, 0, 70, 7, 0, 0, 71, 7, 0, 0, 72, 7, 0, 0, 73, 7, 0, 0, 74, 7, 0, 0, 75, 7, + 0, 0, 76, 7, 0, 0, 77, 7, 0, 0, 78, 7, 0, 0, 79, 7, 0, 0, 80, 7, 0, 0, 81, 7, 0, 0, 82, 7, 0, 0, 83, 7, + 0, 0, 84, 7, 0, 0, 85, 7, 0, 0, 86, 7, 0, 0, 87, 7, 0, 0, 88, 7, 0, 0, 89, 7, 0, 0, 90, 7, 0, 0, 91, 7, + 0, 0, 92, 7, 0, 0, 93, 7, 0, 0, 94, 7, 0, 0, 95, 7,254, 0, 5, 0, 0, 0, 96, 7, 0, 0, 29, 7, 0, 0, 31, 7, + 2, 0, 19, 0, 2, 0, 37, 0,255, 0, 25, 0,255, 0, 0, 0,255, 0, 1, 0, 0, 0, 20, 0,252, 0, 97, 7,253, 0, 98, 7, +253, 0, 99, 7,253, 0,100, 7,253, 0,101, 7,253, 0,102, 7,253, 0,103, 7,253, 0,104, 7,253, 0,105, 7,253, 0,106, 7, +253, 0,107, 7,253, 0,108, 7,253, 0,109, 7,253, 0,110, 7,253, 0,111, 7,253, 0,112, 7,253, 0,113, 7,253, 0,114, 7, +253, 0,115, 7,254, 0,116, 7, 4, 0,117, 7, 4, 0, 37, 0, 0, 1, 3, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0,118, 7, + 1, 1, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,128, 2, 7, 0,119, 7, 7, 0, 32, 2, 2, 1, 88, 0, 4, 0, 19, 0, + 4, 0,120, 7, 4, 0,121, 7, 0, 0,122, 7, 0, 0,123, 7, 0, 0,124, 7, 0, 0,125, 7, 0, 0,126, 7, 0, 0,127, 7, + 0, 0,128, 7, 0, 0,129, 7, 0, 0,130, 7, 0, 0,131, 7, 4, 0,132, 7, 2, 0,133, 7, 2, 0,134, 7, 2, 0,135, 7, + 2, 0,136, 7, 4, 0,137, 7, 4, 0,138, 7, 4, 0,139, 7, 4, 0,140, 7, 2, 0,141, 7, 2, 0,142, 7, 4, 0,143, 7, + 4, 0,144, 7, 4, 0,145, 7, 4, 0,146, 7, 4, 0,147, 7, 4, 0,192, 6, 4, 0,148, 7, 2, 0,149, 7, 2, 0,150, 7, + 2, 0,151, 7, 2, 0,152, 7, 12, 0,153, 7, 12, 0,154, 7, 12, 0,155, 7, 12, 0,156, 7, 12, 0,157, 7, 0, 0,158, 7, + 2, 0,159, 7, 2, 0,160, 7, 2, 0,161, 7, 2, 0,162, 7, 2, 0,163, 7, 2, 0,164, 7, 2, 0,165, 7, 2, 0,166, 7, + 1, 1,167, 7, 2, 0,168, 7, 2, 0,169, 7, 2, 0,170, 7, 2, 0,171, 7, 2, 0,172, 7, 2, 0,173, 7, 2, 0,174, 7, + 2, 0,175, 7, 4, 0,176, 7, 4, 0,177, 7, 2, 0,178, 7, 2, 0,179, 7, 2, 0,180, 7, 2, 0,181, 7, 2, 0,182, 7, + 2, 0,183, 7, 2, 0,184, 7, 2, 0,185, 7, 2, 0,186, 7, 2, 0,187, 7, 2, 0,188, 7, 2, 0,189, 7, 2, 0,190, 7, + 2, 0,191, 7, 2, 0,192, 7, 2, 0,193, 7, 2, 0,194, 7, 2, 0,176, 4, 0, 0,195, 7, 0, 0,196, 7, 7, 0,197, 7, + 2, 0,158, 5, 2, 0,159, 5, 55, 0,198, 7, 4, 0,199, 7, 7, 0,200, 7, 7, 0,201, 7, 7, 0,202, 7,219, 0, 21, 0, + 27, 0, 31, 0, 12, 0,203, 7, 12, 0,204, 7, 12, 0,205, 7, 12, 0, 16, 6, 46, 0,129, 0, 46, 0,206, 7, 2, 0,207, 7, + 2, 0,208, 7, 2, 0,209, 7, 2, 0,210, 7, 2, 0,211, 7, 2, 0,212, 7, 2, 0,213, 7, 2, 0,214, 7, 2, 0,215, 7, + 2, 0,216, 7, 4, 0, 69, 0,214, 0,217, 7, 9, 0,218, 7, 2, 0,219, 7, 3, 1, 5, 0, 3, 1, 0, 0, 3, 1, 1, 0, + 3, 1,220, 7, 13, 0,221, 7, 4, 0, 19, 0, 4, 1, 7, 0, 4, 1, 0, 0, 4, 1, 1, 0, 3, 1,222, 7, 3, 1,223, 7, + 2, 0, 25, 5, 2, 0, 19, 0, 4, 0, 37, 0, 5, 1, 25, 0, 5, 1, 0, 0, 5, 1, 1, 0, 6, 1,224, 7, 7, 1,103, 6, + 0, 0,225, 7, 0, 0,226, 7, 0, 0,227, 7, 2, 0,228, 7, 2, 0,229, 7, 2, 0,230, 7, 2, 0,231, 7, 2, 0,232, 7, + 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,233, 7, 2, 0,234, 7, 2, 0,235, 7, 4, 0,236, 7, 5, 1,237, 7, 9, 0,238, 7, + 4, 0,239, 7, 4, 0,240, 7, 4, 0,241, 7, 4, 0,242, 7, 0, 0,243, 7, 8, 1, 22, 0, 8, 1, 0, 0, 8, 1, 1, 0, + 3, 1,222, 7, 3, 1,223, 7, 3, 1,244, 7, 3, 1,245, 7,219, 0,246, 7, 23, 0, 51, 0, 0, 0, 17, 6, 0, 0,247, 7, + 2, 0, 60, 6, 2, 0, 61, 6, 2, 0,248, 7, 2, 0, 37, 0, 2, 0,210, 7, 2, 0,190, 6, 2, 0, 19, 0, 9, 1,224, 7, + 12, 0,249, 7, 12, 0, 16, 6, 12, 0,250, 7, 12, 0,251, 7, 10, 1, 24, 0, 10, 1, 0, 0, 10, 1, 1, 0,217, 0, 68, 6, + 23, 0,252, 7, 23, 0,253, 7, 2, 0, 60, 6, 2, 0, 61, 6, 2, 0,254, 7, 2, 0,255, 7, 2, 0, 0, 8, 2, 0, 19, 0, + 7, 0, 75, 2, 2, 0,230, 7, 2, 0,231, 7, 2, 0,209, 7, 2, 0, 1, 8, 2, 0,214, 7, 2, 0,176, 4, 11, 1,224, 7, + 12, 0, 2, 8, 12, 0, 3, 8, 12, 0,250, 7, 0, 0, 4, 8, 9, 0, 5, 8, 12, 1, 12, 0, 0, 0, 6, 8, 2, 0, 7, 8, + 2, 0, 8, 8, 2, 0, 9, 8, 2, 0, 10, 8, 2, 0, 12, 5, 2, 0, 7, 5,219, 0, 11, 8, 46, 0, 12, 8, 4, 0, 13, 8, + 4, 0, 14, 8, 0, 0, 15, 8, 13, 1, 1, 0, 0, 0, 16, 8, 14, 1, 8, 0, 57, 0, 17, 8, 57, 0, 18, 8, 14, 1, 19, 8, + 14, 1, 20, 8, 14, 1, 21, 8, 2, 0,124, 0, 2, 0, 19, 0, 4, 0, 22, 8, 15, 1, 4, 0, 4, 0,130, 6, 4, 0, 23, 8, + 4, 0,135, 6, 4, 0, 24, 8, 16, 1, 2, 0, 4, 0, 25, 8, 4, 0, 26, 8, 17, 1, 5, 0, 7, 0, 27, 8, 7, 0, 28, 8, + 7, 0, 29, 8, 4, 0, 19, 0, 4, 0, 37, 0, 18, 1, 6, 0, 0, 0, 30, 8, 0, 0, 87, 6, 49, 0,132, 0, 2, 0,106, 0, + 2, 0, 11, 5, 4, 0, 37, 0, 19, 1, 21, 0, 19, 1, 0, 0, 19, 1, 1, 0, 4, 0, 56, 0, 4, 0, 23, 0, 4, 0, 28, 0, + 4, 0, 31, 8, 4, 0, 32, 8, 4, 0, 33, 8, 13, 1, 34, 8, 0, 0, 30, 8, 4, 0, 35, 8, 4, 0, 36, 8, 18, 1, 91, 3, + 15, 1, 37, 8, 16, 1, 38, 8, 17, 1, 39, 8, 14, 1, 40, 8, 14, 1, 41, 8, 14, 1, 42, 8, 57, 0, 43, 8, 57, 0, 44, 8, + 20, 1, 12, 0, 0, 0,250, 1, 9, 0,220, 0, 0, 0,221, 0, 4, 0,224, 0, 4, 0,232, 0, 9, 0,225, 0, 7, 0,227, 0, + 7, 0,228, 0, 9, 0, 45, 8, 9, 0, 46, 8, 9, 0,229, 0, 9, 0,231, 0, 21, 1, 48, 0, 21, 1, 0, 0, 21, 1, 1, 0, + 9, 0, 47, 8, 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 19, 0, 4, 0, 17, 0, 4, 0, 23, 0, 4, 0, 87, 0, 4, 0, 48, 8, + 4, 0, 49, 8, 4, 0, 32, 8, 4, 0, 33, 8, 4, 0, 50, 8, 4, 0,243, 0, 4, 0, 51, 8, 4, 0, 52, 8, 7, 0, 53, 8, + 7, 0, 37, 0, 7, 0, 54, 8, 7, 0, 55, 8, 4, 0,121, 0, 4, 0, 56, 8, 19, 1, 57, 8, 36, 0, 79, 0, 46, 0,129, 0, + 32, 0, 58, 8, 49, 0,132, 0, 7, 0, 59, 8, 7, 0, 60, 8, 20, 1, 59, 1, 21, 1, 61, 8, 21, 1, 62, 8, 21, 1, 63, 8, + 12, 0, 64, 8, 22, 1, 65, 8, 9, 0, 66, 8, 7, 0,249, 3, 7, 0, 67, 8, 7, 0, 68, 8, 4, 0, 69, 8, 4, 0, 70, 8, + 7, 0, 71, 8, 9, 0, 72, 8, 4, 0, 73, 8, 4, 0, 74, 8, 4, 0, 75, 8, 7, 0, 76, 8, 23, 1, 4, 0, 23, 1, 0, 0, + 23, 1, 1, 0, 12, 0, 77, 8, 21, 1, 78, 8,205, 0, 11, 0, 12, 0, 79, 8, 12, 0, 64, 8, 12, 0, 80, 8, 21, 1, 81, 8, + 0, 0, 82, 8, 0, 0, 83, 8, 4, 0, 84, 8, 4, 0, 85, 8, 4, 0, 86, 8, 4, 0, 37, 0, 24, 0, 87, 8, 24, 1, 4, 0, + 7, 0, 88, 8, 7, 0, 65, 3, 2, 0, 89, 8, 2, 0, 90, 8, 25, 1, 6, 0, 7, 0, 91, 8, 7, 0, 92, 8, 7, 0, 93, 8, + 7, 0, 94, 8, 4, 0, 95, 8, 4, 0, 96, 8, 26, 1, 13, 0, 7, 0, 97, 8, 7, 0, 98, 8, 7, 0, 99, 8, 7, 0,100, 8, + 7, 0,101, 8, 7, 0,102, 8, 7, 0,103, 8, 7, 0,104, 8, 7, 0,105, 8, 7, 0,106, 8, 4, 0,226, 2, 4, 0,107, 8, + 4, 0,108, 8, 27, 1, 2, 0, 7, 0, 84, 5, 7, 0, 37, 0, 28, 1, 5, 0, 7, 0,109, 8, 7, 0,110, 8, 4, 0, 90, 0, + 4, 0,182, 2, 4, 0,111, 8, 29, 1, 6, 0, 29, 1, 0, 0, 29, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,112, 8, + 2, 0, 56, 0, 30, 1, 8, 0, 30, 1, 0, 0, 30, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,112, 8, 2, 0, 56, 0, + 7, 0, 23, 0, 7, 0,121, 0, 31, 1, 45, 0, 31, 1, 0, 0, 31, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,112, 8, + 2, 0,239, 0, 2, 0, 35, 4, 2, 0,113, 8, 7, 0,114, 8, 7, 0, 88, 0, 7, 0,239, 2, 4, 0,115, 8, 4, 0, 81, 0, + 4, 0,184, 2, 7, 0,116, 8, 7, 0,117, 8, 7, 0,118, 8, 7, 0,119, 8, 7, 0,120, 8, 7, 0,121, 8, 7, 0,236, 2, + 7, 0, 56, 1, 7, 0,122, 8, 7, 0,123, 8, 7, 0, 37, 0, 7, 0,124, 8, 7, 0,125, 8, 7, 0,126, 8, 2, 0,127, 8, + 2, 0,128, 8, 2, 0,129, 8, 2, 0,130, 8, 2, 0,131, 8, 2, 0,132, 8, 2, 0,133, 8, 2, 0,134, 8, 2, 0, 17, 2, + 2, 0,135, 8, 2, 0, 14, 2, 2, 0,136, 8, 0, 0,137, 8, 0, 0,138, 8, 7, 0,237, 0, 32, 1,139, 8, 67, 0,229, 1, + 33, 1, 16, 0, 33, 1, 0, 0, 33, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,112, 8, 2, 0,239, 0, 7, 0,231, 2, + 7, 0,232, 2, 7, 0,233, 2, 7, 0, 64, 2, 7, 0,234, 2, 7, 0,235, 2, 7, 0,140, 8, 7, 0,236, 2, 7, 0,238, 2, + 7, 0,239, 2,231, 0, 5, 0, 2, 0, 17, 0, 2, 0, 22, 8, 2, 0, 19, 0, 2, 0,141, 8, 27, 0,162, 6,230, 0, 3, 0, + 4, 0, 68, 0, 4, 0,142, 8,231, 0, 2, 0, 34, 1, 7, 0, 34, 1, 0, 0, 34, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 4, 0, 22, 0, 9, 0,143, 8, 35, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0,144, 8, 4, 0,145, 8, + 4, 0, 37, 0, 36, 1, 4, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 89, 0, 2, 0, 69, 0, 37, 1, 4, 0, 0, 0, 20, 0, + 66, 0,146, 8, 7, 0, 76, 1, 7, 0, 37, 0, 38, 1, 6, 0, 2, 0,147, 8, 2, 0,148, 8, 2, 0, 17, 0, 2, 0,149, 8, + 0, 0,150, 8, 0, 0,151, 8, 39, 1, 5, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0,152, 8, 0, 0,153, 8, + 40, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 41, 1, 4, 0, 2, 0,154, 8, 2, 0,155, 8, 2, 0, 19, 0, + 2, 0, 37, 0, 42, 1, 6, 0, 0, 0, 20, 0, 0, 0,156, 8, 2, 0,157, 8, 2, 0,236, 2, 2, 0, 69, 1, 2, 0, 69, 0, + 43, 1, 5, 0, 0, 0, 20, 0, 7, 0, 65, 3, 7, 0,126, 4, 2, 0, 19, 0, 2, 0,196, 2, 44, 1, 3, 0, 0, 0, 20, 0, + 4, 0,184, 2, 4, 0,154, 8, 45, 1, 7, 0, 0, 0, 20, 0, 7, 0,126, 4, 0, 0,158, 8, 0, 0,159, 8, 2, 0, 69, 1, + 2, 0, 89, 0, 4, 0,160, 8, 46, 1, 4, 0, 0, 0,161, 8, 0, 0,162, 8, 4, 0, 17, 0, 7, 0,200, 2, 47, 1, 3, 0, + 32, 0,163, 8, 0, 0,164, 8, 0, 0,165, 8, 48, 1, 18, 0, 48, 1, 0, 0, 48, 1, 1, 0, 2, 0, 17, 0, 2, 0,166, 8, + 2, 0, 19, 0, 2, 0,167, 8, 2, 0,168, 8, 2, 0,169, 8, 2, 0, 89, 0, 2, 0, 69, 0, 0, 0, 20, 0, 9, 0, 2, 0, + 49, 1,170, 8, 32, 0, 44, 0, 2, 0,102, 5, 2, 0, 67, 8, 2, 0,171, 8, 2, 0, 37, 0, 50, 1, 11, 0, 0, 0, 20, 0, + 0, 0, 17, 0, 0, 0,172, 8, 2, 0, 19, 0, 2, 0,196, 2, 2, 0,173, 8, 4, 0,174, 8, 4, 0,175, 8, 4, 0,176, 8, + 4, 0,177, 8, 4, 0,178, 8, 51, 1, 1, 0, 0, 0,179, 8, 52, 1, 4, 0, 42, 0,129, 6, 0, 0,118, 7, 4, 0, 69, 1, + 4, 0, 19, 0, 49, 1, 18, 0, 49, 1, 0, 0, 49, 1, 1, 0, 49, 1,180, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,181, 8, + 2, 0,169, 8, 2, 0,166, 8, 2, 0,182, 8, 2, 0, 69, 0, 2, 0,226, 1, 0, 0, 20, 0, 9, 0, 2, 0, 53, 1,170, 8, + 48, 1,183, 8, 2, 0, 15, 0, 2, 0,184, 8, 4, 0,185, 8, 54, 1, 3, 0, 4, 0,210, 2, 4, 0, 37, 0, 32, 0, 44, 0, + 55, 1, 12, 0,161, 0,186, 8, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,114, 8, 4, 0, 88, 0, 0, 0, 20, 0, 0, 0,187, 8, + 2, 0,188, 8, 2, 0,189, 8, 2, 0,190, 8, 2, 0,191, 8, 7, 0,192, 8, 56, 1, 13, 0, 2, 0, 19, 0, 2, 0,193, 8, + 4, 0, 89, 0, 4, 0, 69, 0, 2, 0,194, 8, 7, 0,249, 3, 7, 0,195, 8, 22, 1, 65, 8, 57, 1,196, 8, 2, 0, 17, 0, + 2, 0,248, 1, 2, 0,230, 5, 2, 0,197, 8, 58, 1, 11, 0, 4, 0,210, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 44, 0, + 80, 0,198, 8, 0, 0, 20, 0, 7, 0,199, 8, 7, 0,200, 8, 7, 0,134, 3, 2, 0,201, 8, 2, 0,202, 8, 59, 1, 5, 0, + 2, 0, 17, 0, 2, 0, 89, 0, 4, 0, 37, 0, 46, 0,129, 0, 32, 0, 91, 5, 60, 1, 5, 0, 4, 0, 37, 0, 4, 0, 17, 0, + 0, 0, 20, 0, 0, 0,152, 8, 32, 0, 44, 0, 61, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,166, 8, 2, 0,135, 3, + 7, 0,203, 8, 7, 0,204, 8, 7, 0,176, 4, 7, 0,147, 3, 7, 0,106, 3, 7, 0,109, 3, 7, 0,205, 8, 7, 0,206, 8, + 32, 0,207, 8, 62, 1, 10, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,114, 8, 4, 0, 88, 0, 0, 0, 20, 0, 0, 0,187, 8, + 2, 0, 89, 0, 2, 0, 69, 0, 2, 0,226, 1, 2, 0,248, 1, 63, 1, 8, 0, 32, 0, 44, 0, 7, 0,233, 2, 7, 0,208, 8, + 7, 0,209, 8, 7, 0, 37, 0, 2, 0, 89, 0, 2, 0,196, 2, 7, 0, 69, 0, 64, 1, 12, 0, 2, 0, 17, 0, 2, 0, 69, 1, + 2, 0, 19, 0, 2, 0,236, 2, 2, 0,210, 2, 2, 0,210, 8, 4, 0, 37, 0, 7, 0,211, 8, 7, 0,212, 8, 7, 0,213, 8, + 7, 0,214, 8, 0, 0,215, 8, 65, 1, 9, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,114, 8, 4, 0, 88, 0, 0, 0, 20, 0, + 2, 0,176, 4, 2, 0, 63, 0, 2, 0,216, 8, 2, 0,217, 8, 66, 1, 7, 0, 4, 0,184, 2, 4, 0,218, 8, 4, 0,219, 8, + 4, 0,220, 8, 7, 0,221, 8, 7, 0,222, 8, 0, 0,158, 8, 67, 1, 7, 0, 0, 0,223, 8, 32, 0,224, 8, 0, 0,164, 8, + 2, 0,225, 8, 2, 0, 89, 0, 4, 0, 69, 0, 0, 0,165, 8, 68, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,114, 8, + 4, 0, 88, 0, 0, 0,226, 8, 0, 0,227, 8, 69, 1, 1, 0, 4, 0, 19, 0, 70, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 4, 0,228, 8, 7, 0,229, 8, 42, 0,129, 6, 71, 1, 4, 0, 0, 0, 59, 2, 2, 0, 19, 0, 4, 0, 17, 0, + 32, 0, 44, 0, 72, 1, 2, 0, 4, 0, 17, 0, 4, 0, 49, 6, 73, 1, 6, 0, 0, 0,161, 8, 0, 0,162, 8, 4, 0, 17, 0, + 7, 0, 25, 2, 32, 0, 44, 3, 32, 0,230, 8, 53, 1, 10, 0, 53, 1, 0, 0, 53, 1, 1, 0, 53, 1,180, 8, 2, 0, 17, 0, + 2, 0, 19, 0, 2, 0,166, 8, 2, 0,231, 8, 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 44, 0, 57, 1, 8, 0, 7, 0,232, 8, + 7, 0,233, 8, 7, 0,234, 8, 7, 0,235, 8, 7, 0,236, 8, 7, 0,237, 8, 7, 0,238, 8, 7, 0,239, 8, 22, 1, 16, 0, + 27, 0, 31, 0, 0, 0, 34, 0, 43, 0,147, 0, 9, 0,220, 0, 43, 0,240, 8, 36, 0, 79, 0, 7, 0,249, 3, 7, 0,241, 8, + 7, 0,195, 8, 7, 0,232, 8, 7, 0,233, 8, 7, 0,242, 8, 4, 0, 90, 0, 4, 0, 37, 0, 9, 0,243, 8, 9, 0,244, 8, + 74, 1, 15, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 8, 1,245, 8,217, 0, 68, 6, + 22, 1, 65, 8, 2, 0, 69, 1, 2, 0,193, 8, 2, 0, 79, 2, 2, 0, 80, 2, 2, 0, 19, 0, 2, 0,119, 6, 4, 0, 69, 0, + 75, 1, 6, 0, 75, 1, 0, 0, 75, 1, 1, 0, 32, 0, 44, 0, 9, 0,246, 8, 4, 0,244, 0, 4, 0, 37, 0, 67, 0, 4, 0, + 27, 0, 31, 0, 12, 0,247, 8, 4, 0,126, 0, 7, 0,248, 8, 76, 1, 27, 0, 76, 1, 0, 0, 76, 1, 1, 0, 26, 0,249, 8, + 76, 1, 38, 0, 12, 0,250, 8, 0, 0, 20, 0, 7, 0,251, 8, 7, 0,252, 8, 7, 0,253, 8, 7, 0,254, 8, 4, 0, 19, 0, + 7, 0,255, 8, 7, 0, 0, 9, 7, 0, 1, 9, 7, 0, 76, 1, 7, 0, 25, 2, 7, 0, 2, 9, 7, 0,182, 2, 7, 0, 3, 9, + 7, 0, 4, 9, 7, 0, 5, 9, 7, 0, 6, 9, 7, 0, 7, 9, 7, 0,169, 0, 4, 0,126, 0, 2, 0,139, 5, 2, 0,176, 4, + 77, 1, 25, 0, 27, 0, 31, 0, 39, 0, 74, 0, 12, 0, 8, 9, 12, 0, 9, 9, 12, 0, 10, 9, 76, 1, 11, 9, 9, 0, 12, 9, + 9, 0, 13, 9, 4, 0, 19, 0, 4, 0, 25, 6, 2, 0,240, 2, 2, 0, 78, 6, 4, 0, 37, 0, 4, 0,126, 0, 4, 0, 14, 9, + 2, 0, 15, 9, 2, 0, 16, 9, 2, 0, 17, 9, 2, 0, 18, 9, 4, 0, 19, 9, 4, 0, 20, 9, 4, 0, 21, 9, 4, 0, 22, 9, + 4, 0, 23, 9, 4, 0, 24, 9, 78, 1, 2, 0, 7, 0,142, 2, 4, 0, 19, 0,165, 0, 5, 0, 78, 1, 25, 9, 4, 0,182, 2, + 4, 0, 26, 9, 4, 0, 27, 9, 4, 0, 19, 0,164, 0, 16, 0, 4, 0, 28, 9, 4, 0, 29, 9, 4, 0, 30, 9, 4, 0, 31, 9, + 2, 0, 32, 9, 2, 0, 33, 9, 2, 0, 34, 9, 2, 0,244, 0, 2, 0, 35, 9, 2, 0, 36, 9, 2, 0, 37, 9, 2, 0, 38, 9, + 4, 0, 39, 9, 4, 0, 40, 9, 4, 0, 41, 9, 4, 0, 42, 9, 79, 1, 44, 0, 79, 1, 0, 0, 79, 1, 1, 0, 26, 0,249, 8, + 12, 0,161, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0, 43, 9, 2, 0, 44, 9, 2, 0, 45, 9, 2, 0,120, 3, 2, 0, 46, 9, + 4, 0, 62, 2, 4, 0, 21, 9, 4, 0, 22, 9, 76, 1, 47, 9, 79, 1, 38, 0, 79, 1, 48, 9, 12, 0, 49, 9, 9, 0, 50, 9, + 9, 0, 51, 9, 9, 0, 52, 9, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 53, 9, 7, 0, 4, 2, 7, 0,111, 3, 7, 0,113, 3, + 2, 0,143, 3, 2, 0, 37, 0, 7, 0, 54, 9, 7, 0, 55, 9, 7, 0,116, 3, 7, 0, 56, 9, 7, 0, 57, 9, 7, 0, 58, 9, + 7, 0, 59, 9, 7, 0, 60, 9, 7, 0, 61, 9, 7, 0, 62, 9, 7, 0, 63, 9, 7, 0, 54, 2,165, 0, 99, 3, 32, 0, 64, 9, + 79, 1, 65, 9,162, 0, 14, 0, 12, 0, 66, 9, 80, 1, 67, 9, 2, 0, 19, 0, 2, 0, 68, 9, 7, 0, 91, 2, 7, 0, 69, 9, + 7, 0, 70, 9, 12, 0, 71, 9, 4, 0, 72, 9, 4, 0, 73, 9, 9, 0, 74, 9, 9, 0, 75, 9,164, 0, 98, 3, 0, 0, 76, 9, + 81, 1, 1, 0, 4, 0, 73, 9, 82, 1, 12, 0, 4, 0, 73, 9, 7, 0,178, 8, 2, 0, 77, 9, 2, 0, 78, 9, 7, 0, 79, 9, + 7, 0, 80, 9, 2, 0, 81, 9, 2, 0, 19, 0, 7, 0, 82, 9, 7, 0, 83, 9, 7, 0, 84, 9, 7, 0, 85, 9, 83, 1, 7, 0, + 83, 1, 0, 0, 83, 1, 1, 0, 12, 0, 86, 9, 4, 0, 19, 0, 4, 0, 87, 9, 0, 0,240, 3,254, 0, 88, 9,161, 0, 7, 0, + 27, 0, 31, 0, 12, 0, 89, 9, 12, 0, 66, 9, 12, 0, 90, 9, 12, 0,100, 0, 4, 0, 19, 0, 4, 0, 91, 9,221, 0, 5, 0, + 27, 0, 92, 9, 12, 0, 66, 9, 67, 0, 93, 9, 4, 0, 94, 9, 4, 0, 19, 0, 84, 1, 13, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6,217, 0, 68, 6,161, 0, 94, 3,221, 0, 95, 9, 0, 0, 69, 1, + 0, 0, 71, 6, 2, 0, 19, 0, 7, 0, 96, 9, 85, 1, 8, 0, 85, 1, 0, 0, 85, 1, 1, 0, 83, 1, 97, 9, 36, 0, 79, 0, + 12, 0,100, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0, 98, 9, 86, 1, 5, 0, 86, 1, 0, 0, 86, 1, 1, 0, 36, 0, 79, 0, + 2, 0, 19, 0, 0, 0, 99, 9, 87, 1, 14, 0, 87, 1, 0, 0, 87, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, + 0, 0,100, 9, 0, 0,101, 9, 0, 0, 99, 9, 7, 0,102, 9, 7, 0,103, 9, 4, 0, 37, 0, 36, 0, 79, 0, 7, 0,104, 9, + 7, 0,105, 9, 88, 1, 9, 0, 88, 1, 0, 0, 88, 1, 1, 0, 32, 0,106, 9, 0, 0,243, 2, 7, 0,107, 9, 2, 0,108, 9, + 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,109, 9, 89, 1, 7, 0, 42, 0,129, 6, 26, 0,249, 8, 4, 0, 19, 0, 4, 0,110, 9, + 12, 0,111, 9, 32, 0,106, 9, 0, 0,243, 2, 90, 1, 15, 0, 32, 0,106, 9, 2, 0,112, 9, 2, 0, 19, 0, 2, 0,113, 9, + 2, 0,114, 9, 0, 0,243, 2, 32, 0,115, 9, 0, 0,116, 9, 7, 0,117, 9, 7, 0, 25, 2, 7, 0,118, 9, 7, 0,119, 9, + 2, 0, 17, 0, 2, 0, 69, 1, 7, 0, 76, 1, 91, 1, 6, 0, 32, 0,106, 9, 7, 0, 25, 9, 2, 0,120, 9, 2, 0,121, 9, + 2, 0, 19, 0, 2, 0,122, 9, 92, 1, 6, 0, 32, 0,106, 9, 4, 0,123, 9, 4, 0,124, 9, 4, 0, 90, 0, 4, 0, 37, 0, + 0, 0,243, 2, 93, 1, 4, 0, 32, 0,106, 9, 4, 0, 19, 0, 4, 0,123, 9, 0, 0,243, 2, 94, 1, 4, 0, 32, 0,106, 9, + 4, 0, 19, 0, 4, 0,123, 9, 0, 0,243, 2, 95, 1, 4, 0, 32, 0,106, 9, 4, 0, 19, 0, 4, 0,123, 9, 0, 0,243, 2, + 96, 1, 2, 0, 4, 0, 19, 0, 7, 0,249, 3, 97, 1, 2, 0, 32, 0,106, 9, 0, 0,243, 2, 98, 1, 10, 0, 32, 0,106, 9, + 4, 0,125, 9, 7, 0,120, 0, 4, 0, 19, 0, 2, 0,122, 6, 2, 0,126, 9, 2, 0, 89, 0, 2, 0, 69, 0, 7, 0,127, 9, + 0, 0,243, 2, 99, 1, 10, 0, 32, 0,106, 9, 2, 0, 17, 0, 2, 0, 43, 4, 4, 0, 87, 0, 4, 0, 88, 0, 7, 0,208, 8, + 7, 0,209, 8, 4, 0, 37, 0,161, 0,186, 8, 0, 0,243, 2,100, 1, 4, 0, 32, 0,106, 9, 4, 0,121, 3, 4, 0,128, 9, + 0, 0,243, 2,101, 1, 4, 0, 32, 0,106, 9, 4, 0,121, 3, 4, 0, 37, 0, 0, 0,243, 2,102, 1, 6, 0, 32, 0,106, 9, + 7, 0,120, 0, 7, 0, 56, 3, 4, 0,129, 9, 2, 0,121, 3, 2, 0,122, 3,103, 1, 6, 0, 32, 0,106, 9, 4, 0,130, 9, + 4, 0,131, 9, 7, 0,132, 9, 7, 0,133, 9, 0, 0,243, 2,104, 1, 16, 0, 32, 0,106, 9, 32, 0, 48, 9, 4, 0, 17, 0, + 7, 0,134, 9, 7, 0,135, 9, 7, 0,136, 9, 7, 0,137, 9, 7, 0,138, 9, 7, 0,139, 9, 7, 0,140, 9, 7, 0,141, 9, + 7, 0,142, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 89, 0, 2, 0, 69, 0,105, 1, 3, 0, 32, 0,106, 9, 4, 0, 19, 0, + 4, 0, 17, 2,106, 1, 5, 0, 32, 0,106, 9, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,143, 9, 0, 0,243, 2,107, 1, 10, 0, + 32, 0,106, 9, 0, 0,243, 2, 2, 0,144, 9, 2, 0,145, 9, 0, 0,146, 9, 0, 0,147, 9, 7, 0,148, 9, 7, 0,149, 9, + 7, 0,150, 9, 7, 0,151, 9,108, 1, 5, 0, 32, 0,106, 9, 0, 0,243, 2, 7, 0,190, 2, 2, 0,152, 9, 2, 0, 19, 0, +109, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,153, 9, 7, 0,154, 9, 2, 0, 19, 0, + 2, 0, 17, 2,110, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,153, 9, 7, 0,154, 9, + 2, 0, 19, 0, 2, 0, 17, 2,111, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,153, 9, + 7, 0,154, 9, 2, 0, 19, 0, 2, 0, 17, 2,112, 1, 7, 0, 32, 0,106, 9, 0, 0,243, 2, 7, 0, 76, 1, 7, 0, 85, 1, + 2, 0, 19, 0, 2, 0, 69, 1, 4, 0, 37, 0,113, 1, 5, 0, 32, 0, 44, 3, 7, 0, 76, 1, 2, 0, 48, 3, 0, 0, 50, 3, + 0, 0,155, 9,114, 1, 10, 0,114, 1, 0, 0,114, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0,156, 9, 7, 0, 19, 1, + 7, 0, 20, 1, 2, 0, 86, 9, 2, 0,157, 9, 32, 0, 44, 0,115, 1, 22, 0,115, 1, 0, 0,115, 1, 1, 0, 2, 0, 19, 0, + 2, 0, 69, 1, 2, 0,158, 9, 2, 0,159, 9, 36, 0, 79, 0,161, 0,186, 8, 32, 0,161, 0, 7, 0, 87, 0, 7, 0, 88, 0, + 7, 0,160, 9, 7, 0,161, 9, 7, 0,162, 9, 7, 0,163, 9, 7, 0,229, 2, 7, 0,164, 9, 7, 0,188, 8, 7, 0,165, 9, + 0, 0,166, 9, 0, 0,167, 9, 12, 0,102, 3,116, 1, 8, 0, 7, 0, 32, 2, 7, 0,208, 8, 7, 0,209, 8, 9, 0, 2, 0, + 2, 0,168, 9, 2, 0,169, 9, 2, 0,170, 9, 2, 0,171, 9,117, 1, 18, 0,117, 1, 0, 0,117, 1, 1, 0,117, 1,172, 9, + 0, 0, 20, 0,116, 1,173, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,174, 9, 2, 0,175, 9, 2, 0,176, 9, 2, 0,177, 9, + 4, 0, 89, 0, 7, 0,178, 9, 7, 0,179, 9, 4, 0,180, 9, 4, 0,181, 9,117, 1,182, 9,118, 1,183, 9,119, 1, 33, 0, +119, 1, 0, 0,119, 1, 1, 0,119, 1,184, 9, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 31, 8, 2, 0, 67, 8, + 2, 0,185, 9, 2, 0,128, 0, 2, 0,175, 9, 2, 0, 22, 8, 12, 0,181, 8, 12, 0,186, 9, 27, 0,162, 6, 9, 0,187, 9, + 7, 0,178, 9, 7, 0,179, 9, 7, 0, 64, 2, 7, 0,188, 9, 2, 0,189, 9, 2, 0,190, 9, 7, 0,191, 9, 7, 0,192, 9, + 2, 0,193, 9, 2, 0,194, 9, 9, 0,195, 9, 24, 0,196, 9, 24, 0,197, 9, 24, 0,198, 9,120, 1,148, 0,121, 1,199, 9, +122, 1,200, 9,118, 1, 8, 0,118, 1, 0, 0,118, 1, 1, 0,119, 1,201, 9,119, 1,202, 9,117, 1,203, 9,117, 1,182, 9, + 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 22, 0, 27, 0, 31, 0, 39, 0, 74, 0,163, 0, 97, 3, 12, 0,204, 9, 12, 0,205, 9, +116, 1,206, 9, 12, 0,207, 9, 4, 0, 17, 0, 4, 0,208, 9, 4, 0,209, 9, 4, 0,210, 9, 4, 0, 19, 0, 4, 0, 37, 0, + 12, 0,211, 9,122, 1,212, 9, 4, 0,213, 9, 9, 0,214, 9, 9, 0,215, 9, 4, 0,216, 9, 9, 0,217, 9, 9, 0,218, 9, + 9, 0,219, 9,123, 1, 6, 0, 4, 0,119, 0, 4, 0,121, 0, 4, 0, 22, 8, 0, 0,220, 9, 0, 0,221, 9, 2, 0, 37, 0, +124, 1, 16, 0, 2, 0,230, 7, 2, 0,231, 7, 2, 0,222, 9, 2, 0,223, 9, 2, 0,224, 9, 2, 0, 67, 0, 7, 0,228, 2, + 7, 0,225, 9, 7, 0,226, 9, 2, 0, 91, 1, 0, 0,227, 9, 0, 0,228, 9, 2, 0,229, 9, 2, 0, 37, 0, 4, 0,230, 9, + 4, 0,231, 9,125, 1, 9, 0, 7, 0,232, 9, 7, 0,233, 9, 7, 0,242, 8, 7, 0, 65, 3, 7, 0,234, 9, 7, 0, 84, 6, + 2, 0, 63, 3, 0, 0,235, 9, 0, 0, 37, 0,126, 1, 4, 0, 7, 0,236, 9, 7, 0,237, 9, 2, 0, 63, 3, 2, 0, 37, 0, +127, 1, 3, 0, 7, 0,238, 9, 7, 0, 53, 8, 7, 0, 15, 0,128, 1, 7, 0, 0, 0,250, 1, 2, 0, 9, 5, 2, 0, 10, 5, + 2, 0, 11, 5, 2, 0,198, 4, 4, 0,121, 0, 4, 0, 41, 4,129, 1, 9, 0, 7, 0,239, 9, 7, 0,240, 9, 7, 0,241, 9, + 7, 0, 75, 2, 7, 0,242, 9, 7, 0,243, 9, 7, 0,244, 9, 2, 0,245, 9, 2, 0,246, 9,130, 1, 4, 0, 2, 0,247, 9, + 2, 0,248, 9, 2, 0,249, 9, 2, 0,250, 9,131, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,132, 1, 2, 0, 0, 0,163, 0, + 0, 0,251, 9,133, 1, 1, 0, 0, 0, 20, 0,134, 1, 10, 0, 0, 0,252, 9, 0, 0,253, 9, 0, 0, 77, 6, 0, 0,254, 9, + 2, 0,222, 9, 2, 0,255, 9, 7, 0, 0, 10, 7, 0, 1, 10, 7, 0, 2, 10, 7, 0,164, 9,135, 1, 2, 0, 9, 0, 3, 10, + 9, 0, 4, 10,136, 1, 11, 0, 0, 0, 11, 5, 0, 0, 17, 0, 0, 0, 63, 3, 0, 0, 65, 3, 0, 0, 5, 10, 0, 0,106, 0, + 0, 0, 59, 2, 7, 0, 6, 10, 7, 0, 7, 10, 7, 0, 8, 10, 7, 0, 9, 10,137, 1, 8, 0, 7, 0,147, 8, 7, 0,120, 0, + 7, 0,228, 9, 7, 0,147, 2, 7, 0, 10, 10, 7, 0,233, 0, 7, 0, 11, 10, 4, 0, 17, 0,138, 1, 4, 0, 2, 0, 12, 10, + 2, 0, 13, 10, 2, 0, 14, 10, 2, 0, 37, 0,139, 1, 7, 0, 7, 0, 15, 10, 7, 0,190, 2, 7, 0, 16, 10, 7, 0, 27, 8, + 7, 0, 28, 8, 7, 0, 29, 8, 7, 0, 17, 10,140, 1, 6, 0, 2, 0, 18, 10, 2, 0, 19, 10, 7, 0, 20, 10, 7, 0, 21, 10, + 7, 0, 22, 10, 7, 0, 23, 10,141, 1, 1, 0, 0, 0, 20, 0,142, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 19, 0, + 2, 0, 24, 10,143, 1, 10, 0, 2, 0,229, 3, 2, 0, 19, 0, 7, 0,126, 4, 7, 0, 25, 10, 7, 0, 26, 10, 7, 0, 27, 10, + 7, 0, 28, 10,142, 1, 29, 10,142, 1, 30, 10,142, 1, 31, 10, 63, 0, 11, 0, 4, 0, 19, 0, 4, 0, 63, 0, 4, 0, 32, 10, + 4, 0, 33, 10, 24, 0, 34, 10, 24, 0, 35, 10,143, 1, 36, 10, 7, 0, 37, 10, 7, 0, 38, 10, 7, 0, 39, 10, 7, 0, 40, 10, +234, 0, 10, 0, 4, 0, 86, 9, 4, 0, 41, 10, 7, 0, 42, 10, 7, 0, 43, 10, 7, 0, 44, 10, 7, 0, 45, 10, 7, 0, 10, 0, + 7, 0, 12, 0, 4, 0, 69, 1, 4, 0,233, 2,233, 0, 18, 0, 4, 0,124, 0, 4, 0, 46, 10, 4, 0, 47, 10, 7, 0, 48, 10, + 4, 0, 49, 10, 7, 0, 50, 10, 7, 0, 51, 10, 4, 0, 52, 10, 7, 0, 53, 10, 4, 0, 54, 10, 7, 0, 55, 10,234, 0, 56, 10, + 7, 0, 57, 10, 7, 0, 58, 10, 7, 0, 59, 10, 7, 0, 60, 10, 4, 0, 61, 10, 4, 0, 37, 0,144, 1, 4, 0, 47, 0,220, 2, + 7, 0, 62, 10, 7, 0,158, 1, 7, 0, 37, 0,194, 0, 35, 0, 27, 0, 31, 0,144, 1, 63, 10, 63, 0, 29, 10, 51, 0, 64, 10, + 57, 0, 65, 10, 0, 0, 66, 10, 0, 0, 67, 10, 30, 0,148, 0, 0, 0, 68, 10, 7, 0, 69, 10, 2, 0,236, 5, 2, 0, 37, 0, + 4, 0,106, 0, 4, 0, 19, 0, 7, 0, 70, 10, 4, 0, 72, 2, 4, 0, 71, 10, 7, 0, 72, 10, 7, 0, 73, 10, 7, 0, 74, 10, + 7, 0,158, 1, 4, 0, 75, 10, 7, 0, 76, 10, 0, 0, 77, 10, 0, 0, 78, 10, 0, 0, 79, 10, 0, 0,226, 1, 7, 0, 80, 10, + 7, 0, 81, 10, 7, 0, 82, 10, 7, 0, 83, 10, 4, 0, 84, 10, 7, 0, 85, 10, 7, 0, 86, 10, 7, 0, 87, 10,145, 1, 10, 0, + 4, 0, 17, 0, 4, 0,120, 0, 4, 0, 19, 0, 4, 0,183, 3, 4, 0, 88, 10, 4, 0, 89, 10, 4, 0, 90, 10, 0, 0, 92, 0, + 0, 0, 20, 0, 9, 0, 2, 0,146, 1, 1, 0, 0, 0, 15, 8, 91, 0, 7, 0,145, 1, 91, 10, 4, 0, 92, 10, 4, 0, 93, 10, + 4, 0, 94, 10, 4, 0, 37, 0, 9, 0, 95, 10,146, 1, 96, 10,147, 1, 5, 0, 7, 0,142, 2, 7, 0,210, 2, 7, 0, 25, 2, + 2, 0,118, 2, 2, 0, 37, 0,148, 1, 5, 0, 7, 0,142, 2, 7, 0, 97, 10, 7, 0, 98, 10, 7, 0, 99, 10, 7, 0,210, 2, +149, 1, 5, 0, 32, 0,100, 10,150, 1, 22, 0, 7, 0,206, 5, 7, 0,101, 10, 7, 0, 56, 0,151, 1, 7, 0, 4, 0,102, 10, + 4, 0,103, 10, 4, 0,104, 10, 7, 0,105, 10, 7, 0,106, 10, 7, 0,107, 10, 7, 0, 56, 0,152, 1, 8, 0,152, 1, 0, 0, +152, 1, 1, 0, 32, 0, 44, 0, 4, 0,252, 0, 2, 0, 19, 0, 2, 0, 69, 1, 7, 0,210, 2, 7, 0,155, 8,153, 1, 6, 0, +153, 1, 0, 0,153, 1, 1, 0, 32, 0, 44, 0, 2, 0,195, 2, 2, 0, 19, 0, 2, 0,108, 10,154, 1, 17, 0,148, 1,177, 3, +148, 1,109, 10,147, 1,110, 10,148, 1,139, 8,149, 1,111, 10, 4, 0, 81, 0, 7, 0,210, 2, 7, 0,239, 2, 7, 0,112, 10, + 4, 0,102, 10, 4, 0,113, 10, 7, 0,106, 10, 7, 0,107, 10, 7, 0,106, 0, 4, 0,114, 10, 2, 0, 19, 0, 2, 0,115, 10, +155, 1, 9, 0, 7, 0,116, 10, 7, 0,248, 0, 7, 0,117, 10, 7, 0,118, 10, 7, 0,119, 10, 7, 0,120, 10, 7, 0,121, 10, + 7, 0,122, 10, 7, 0,123, 10,156, 1,111, 0, 27, 0, 31, 0, 39, 0, 74, 0,157, 1,124, 10,155, 1,125, 10,172, 0, 63, 4, + 4, 0, 19, 0, 2, 0, 17, 0, 2, 0,144, 9, 2, 0,126, 10, 2, 0,127, 10, 2, 0,143, 3, 2, 0,128, 10, 2, 0,129, 10, + 2, 0,130, 10, 2, 0,131, 10, 2, 0,132, 10, 2, 0,133, 10, 2, 0,134, 10, 2, 0,135, 10, 2, 0,110, 5, 2, 0,136, 10, + 2, 0,137, 10, 2, 0,138, 10, 2, 0,139, 10, 2, 0,140, 10, 2, 0, 14, 2, 2, 0,132, 8, 2, 0,107, 8, 2, 0,141, 10, + 2, 0,142, 10, 2, 0,193, 3, 2, 0,194, 3, 2, 0,143, 10, 2, 0,144, 10, 2, 0,145, 10, 2, 0,146, 10, 7, 0,147, 10, + 7, 0,148, 10, 7, 0,149, 10, 2, 0, 59, 5, 2, 0,150, 10, 7, 0,151, 10, 7, 0,152, 10, 7, 0,153, 10, 7, 0,114, 8, + 7, 0, 88, 0, 7, 0,239, 2, 7, 0,120, 8, 7, 0,154, 10, 7, 0,155, 10, 7, 0,156, 10, 4, 0,115, 8, 4, 0,113, 8, + 4, 0,157, 10, 7, 0,116, 8, 7, 0,117, 8, 7, 0,118, 8, 7, 0,158, 10, 7, 0,159, 10, 7, 0,160, 10, 7, 0,161, 10, + 7, 0,162, 10, 7, 0, 56, 0, 7, 0,163, 10, 7, 0,164, 10, 7, 0,165, 10, 7, 0,166, 10, 7, 0,134, 3, 7, 0,106, 0, + 7, 0,167, 10, 7, 0,168, 10, 7, 0,169, 10, 7, 0,170, 10, 7, 0,171, 10, 7, 0,172, 10, 7, 0,173, 10, 4, 0,174, 10, + 4, 0,175, 10, 7, 0,176, 10, 7, 0,177, 10, 7, 0,178, 10, 7, 0,179, 10, 7, 0,180, 10, 7, 0,207, 0, 7, 0,181, 10, + 7, 0,220, 3, 7, 0,218, 3, 7, 0,219, 3, 7, 0,182, 10, 7, 0,183, 10, 7, 0,184, 10, 7, 0,185, 10, 7, 0,186, 10, + 7, 0,187, 10, 7, 0,188, 10, 7, 0,189, 10, 7, 0,190, 10, 7, 0,191, 10, 7, 0,192, 10, 7, 0,193, 10, 7, 0,194, 10, + 4, 0,195, 10, 4, 0,196, 10, 67, 0,166, 3, 12, 0,197, 10, 67, 0,198, 10, 32, 0,199, 10, 32, 0,200, 10, 36, 0, 79, 0, +167, 0, 61, 1,167, 0,201, 10,147, 0, 44, 0,147, 0, 0, 0,147, 0, 1, 0,156, 1,202, 10,154, 1,203, 10,151, 1, 48, 9, +174, 0,245, 3, 9, 0,246, 3,158, 1,204, 10,158, 1,205, 10, 12, 0,206, 10, 12, 0,207, 10,132, 0,208, 10,140, 0,209, 10, +140, 0,210, 10, 32, 0,211, 10, 32, 0,212, 10, 32, 0, 38, 0, 12, 0,111, 9, 0, 0, 20, 0, 7, 0,237, 0, 7, 0, 10, 3, + 7, 0,213, 10, 4, 0,184, 2, 4, 0, 56, 0, 4, 0, 19, 0, 4, 0,115, 8, 4, 0,214, 10, 4, 0,215, 10, 4, 0,216, 10, + 2, 0,244, 0, 2, 0,217, 10, 2, 0,218, 10, 2, 0,219, 10, 0, 0,220, 10, 2, 0,221, 10, 2, 0,222, 10, 2, 0,223, 10, + 9, 0,224, 10,136, 0, 62, 4, 12, 0,253, 2, 12, 0,225, 10,159, 1,226, 10,160, 1,227, 10, 7, 0,228, 10,134, 0, 37, 0, +161, 1,243, 8, 7, 0, 32, 4, 7, 0,229, 10, 7, 0,230, 10, 7, 0,206, 5, 7, 0,144, 3, 7, 0,134, 3, 7, 0,231, 10, + 7, 0, 74, 2, 7, 0,232, 10, 7, 0,233, 10, 7, 0,234, 10, 7, 0,235, 10, 7, 0,236, 10, 7, 0,237, 10, 7, 0, 33, 4, + 7, 0,238, 10, 7, 0,239, 10, 7, 0,240, 10, 7, 0, 34, 4, 7, 0, 30, 4, 7, 0, 31, 4, 7, 0,241, 10, 7, 0,242, 10, + 4, 0,243, 10, 4, 0, 90, 0, 4, 0,244, 10, 4, 0,245, 10, 2, 0,246, 10, 2, 0,247, 10, 2, 0,248, 10, 2, 0,249, 10, + 2, 0,250, 10, 2, 0,251, 10, 2, 0,252, 10, 2, 0,176, 4,172, 0, 63, 4,135, 0, 9, 0,161, 1,253, 10, 7, 0,254, 10, + 7, 0,255, 10, 7, 0,230, 1, 7, 0, 0, 11, 4, 0, 90, 0, 2, 0, 1, 11, 2, 0, 2, 11, 67, 0,229, 1,162, 1, 4, 0, + 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 3, 11,163, 1, 6, 0,163, 1, 0, 0,163, 1, 1, 0,162, 1, 25, 9, + 4, 0,250, 0, 2, 0, 4, 11, 2, 0, 19, 0,164, 1, 5, 0,164, 1, 0, 0,164, 1, 1, 0, 12, 0, 5, 11, 4, 0, 6, 11, + 4, 0, 19, 0,165, 1, 9, 0,165, 1, 0, 0,165, 1, 1, 0, 12, 0,119, 0,164, 1, 7, 11, 4, 0, 19, 0, 2, 0, 4, 11, + 2, 0, 8, 11, 7, 0, 91, 0, 0, 0, 9, 11,163, 0, 6, 0, 27, 0, 31, 0, 12, 0, 27, 5, 4, 0, 19, 0, 2, 0, 10, 11, + 2, 0, 11, 11, 9, 0, 12, 11,166, 1, 7, 0,166, 1, 0, 0,166, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, + 0, 0, 13, 11, 0, 0, 14, 11,167, 1, 6, 0, 12, 0, 15, 11, 4, 0, 16, 11, 4, 0, 17, 11, 4, 0, 19, 0, 4, 0, 37, 0, +214, 0, 18, 11,168, 1, 3, 0, 7, 0, 84, 5, 7, 0, 19, 11, 7, 0, 20, 11,169, 1, 17, 0, 27, 0, 31, 0,170, 1, 21, 11, +170, 1, 22, 11, 12, 0, 23, 11, 4, 0, 24, 11, 2, 0, 25, 11, 2, 0, 26, 11, 12, 0, 27, 11, 12, 0, 28, 11,167, 1, 29, 11, + 12, 0, 30, 11, 12, 0, 31, 11, 12, 0, 32, 11, 12, 0, 33, 11,171, 1, 34, 11, 12, 0, 35, 11,214, 0, 36, 11,170, 1, 31, 0, +170, 1, 0, 0,170, 1, 1, 0, 9, 0, 37, 11, 4, 0,208, 7, 2, 0, 38, 11, 2, 0, 37, 0,219, 0, 67, 6,219, 0, 39, 11, + 0, 0, 40, 11, 2, 0, 41, 11, 2, 0, 42, 11, 2, 0,230, 7, 2, 0,231, 7, 2, 0, 43, 11, 2, 0, 44, 11, 2, 0,183, 3, + 2, 0,190, 6, 2, 0, 45, 11, 2, 0, 46, 11, 2, 0,213, 9,172, 1, 47, 11,173, 1, 48, 11,174, 1, 49, 11, 4, 0, 50, 11, + 4, 0, 51, 11, 9, 0, 52, 11, 12, 0, 28, 11, 12, 0,250, 7, 12, 0, 53, 11, 12, 0, 54, 11, 12, 0, 55, 11,175, 1, 17, 0, +175, 1, 0, 0,175, 1, 1, 0, 0, 0, 56, 11, 26, 0, 30, 0, 2, 0, 57, 11, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0, 58, 11, + 2, 0, 59, 11, 2, 0, 60, 11, 2, 0, 61, 11, 2, 0, 62, 11, 2, 0, 19, 0, 2, 0, 63, 11, 2, 0, 31, 0, 2, 0, 37, 0, +176, 1, 64, 11,177, 1, 10, 0,177, 1, 0, 0,177, 1, 1, 0, 12, 0, 65, 11, 0, 0, 56, 11, 2, 0, 66, 11, 2, 0, 67, 11, + 2, 0, 19, 0, 2, 0, 68, 11, 4, 0, 69, 11, 9, 0, 70, 11,171, 1, 7, 0,171, 1, 0, 0,171, 1, 1, 0, 0, 0, 56, 11, + 0, 0, 71, 11, 12, 0,156, 7, 4, 0, 72, 11, 4, 0, 19, 0,227, 0, 14, 0,227, 0, 0, 0,227, 0, 1, 0, 0, 0, 56, 11, + 26, 0, 30, 0,178, 1,224, 7, 9, 0, 73, 11, 9, 0, 74, 11,176, 1, 64, 11,167, 1, 75, 11, 12, 0, 76, 11,227, 0, 77, 11, + 7, 1,103, 6, 2, 0, 19, 0, 2, 0,176, 4,179, 1, 8, 0,179, 1, 0, 0,179, 1, 1, 0, 9, 0, 2, 0, 9, 0, 78, 11, + 0, 0,240, 3, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0, 79, 11,180, 1, 5, 0, 7, 0, 80, 11, 4, 0, 81, 11, 4, 0, 82, 11, + 4, 0, 69, 1, 4, 0, 19, 0,181, 1, 6, 0, 7, 0, 83, 11, 7, 0, 84, 11, 7, 0, 85, 11, 7, 0, 86, 11, 4, 0, 17, 0, + 4, 0, 19, 0,182, 1, 5, 0, 7, 0,208, 8, 7, 0,209, 8, 7, 0,210, 2, 2, 0, 28, 2, 2, 0, 29, 2,183, 1, 5, 0, +182, 1, 2, 0, 4, 0, 53, 0, 7, 0, 87, 11, 7, 0,208, 8, 7, 0,209, 8,184, 1, 4, 0, 2, 0, 88, 11, 2, 0, 89, 11, + 2, 0, 90, 11, 2, 0, 91, 11,185, 1, 2, 0, 42, 0,156, 6, 26, 0,249, 8,186, 1, 3, 0, 24, 0, 92, 11, 4, 0, 19, 0, + 4, 0, 37, 0,187, 1, 6, 0, 7, 0,106, 0, 7, 0,212, 2, 7, 0, 93, 11, 7, 0, 37, 0, 2, 0,243, 0, 2, 0, 94, 11, +188, 1, 5, 0, 7, 0, 95, 11, 7, 0,120, 0, 7, 0, 26, 9, 7, 0, 27, 9, 4, 0, 19, 0,189, 1, 6, 0, 27, 0,162, 6, + 0, 0, 96, 11, 0, 0, 97, 11, 2, 0, 98, 11, 2, 0, 19, 0, 4, 0, 99, 11,190, 1, 7, 0,190, 1, 0, 0,190, 1, 1, 0, + 0, 0,240, 3,189, 1,100, 11, 2, 0,101, 11, 2, 0, 17, 0, 7, 0, 60, 0,191, 1, 7, 0, 12, 0,102, 11, 0, 0,103, 11, + 9, 0,104, 11, 7, 0, 60, 0, 7, 0, 79, 11, 4, 0, 17, 0, 4, 0, 19, 0,192, 1, 3, 0, 7, 0,105, 11, 4, 0, 19, 0, + 4, 0, 37, 0,193, 1, 15, 0,193, 1, 0, 0,193, 1, 1, 0, 83, 1, 97, 9,191, 1, 61, 0, 12, 0,102, 3, 35, 0, 49, 0, +192, 1,106, 11, 4, 0, 53, 0, 7, 0, 60, 0, 2, 0, 19, 0, 2, 0, 12, 1, 4, 0,107, 11, 0, 0, 96, 11, 4, 0,108, 11, + 7, 0,109, 11,194, 1, 2, 0, 0, 0,110, 11, 0, 0,111, 11,195, 1, 4, 0,195, 1, 0, 0,195, 1, 1, 0,161, 0, 44, 3, + 12, 0,112, 11,196, 1, 24, 0,196, 1, 0, 0,196, 1, 1, 0, 12, 0,113, 11,161, 0,186, 8,195, 1,114, 11, 12, 0,115, 11, + 12, 0,102, 3, 0, 0,240, 3, 7, 0, 79, 11, 7, 0,116, 11, 7, 0, 87, 0, 7, 0, 88, 0, 7, 0,160, 9, 7, 0,161, 9, + 7, 0,229, 2, 7, 0,164, 9, 7, 0,188, 8, 7, 0,165, 9, 2, 0,117, 11, 2, 0,118, 11, 2, 0, 89, 0, 2, 0, 17, 0, + 4, 0, 19, 0, 4, 0, 69, 0,197, 1, 6, 0,197, 1, 0, 0,197, 1, 1, 0, 12, 0,113, 11, 4, 0, 19, 0, 4, 0,146, 2, + 0, 0,240, 3,198, 1, 11, 0,198, 1, 0, 0,198, 1, 1, 0, 27, 0,162, 6, 0, 0,119, 11, 4, 0, 99, 11, 2, 0,120, 11, + 2, 0, 37, 0, 0, 0, 96, 11, 4, 0,107, 11, 2, 0, 19, 0, 2, 0,121, 11,199, 1, 8, 0,199, 1, 0, 0,199, 1, 1, 0, + 12, 0,122, 11, 0, 0,240, 3, 0, 0,123, 11, 2, 0, 19, 0, 2, 0,121, 11, 4, 0,124, 11,200, 1, 5, 0,200, 1, 0, 0, +200, 1, 1, 0, 0, 0, 96, 11, 4, 0,107, 11, 7, 0,200, 2, 39, 0, 12, 0,161, 0, 94, 3,161, 0,125, 11,195, 1,114, 11, + 12, 0,126, 11,196, 1,127, 11, 12, 0,128, 11, 12, 0,129, 11, 4, 0, 19, 0, 4, 0,244, 0, 2, 0,130, 11, 2, 0,131, 11, + 7, 0,132, 11,201, 1, 2, 0, 27, 0, 31, 0, 39, 0, 74, 0,202, 1, 5, 0,202, 1, 0, 0,202, 1, 1, 0, 4, 0, 17, 0, + 4, 0, 19, 0, 0, 0, 20, 0,203, 1, 6, 0,202, 1,133, 11, 32, 0, 44, 0, 4, 0,134, 11, 7, 0,135, 11, 4, 0,136, 11, + 4, 0, 86, 9,204, 1, 3, 0,202, 1,133, 11, 4, 0,134, 11, 7, 0,137, 11,205, 1, 8, 0,202, 1,133, 11, 32, 0, 44, 0, + 7, 0, 64, 1, 7, 0,138, 11, 7, 0, 10, 3, 7, 0,242, 8, 4, 0,134, 11, 4, 0,139, 11,206, 1, 5, 0,202, 1,133, 11, + 7, 0,140, 11, 7, 0, 67, 8, 7, 0,235, 2, 7, 0, 56, 0,207, 1, 3, 0,202, 1,133, 11, 7, 0,242, 8, 7, 0,141, 11, +150, 1, 4, 0, 7, 0,142, 11, 7, 0,169, 10, 2, 0,143, 11, 2, 0, 69, 1,208, 1, 14, 0,208, 1, 0, 0,208, 1, 1, 0, + 12, 0,144, 11, 12, 0,145, 11, 12, 0,146, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0,147, 11, 7, 0,148, 11, + 4, 0,136, 11, 4, 0, 86, 9, 7, 0,249, 3, 7, 0,237, 2,157, 1, 23, 0, 4, 0,134, 11, 4, 0,149, 11, 7, 0,150, 11, + 7, 0, 56, 0, 7, 0,151, 11, 7, 0,233, 2, 7, 0,142, 11, 7, 0,152, 11, 7, 0,212, 2, 7, 0, 48, 10, 7, 0,126, 4, + 7, 0,153, 11, 7, 0,154, 11, 7, 0,155, 11, 7, 0,156, 11, 7, 0,157, 11, 7, 0,158, 11, 7, 0,159, 11, 7, 0,160, 11, + 7, 0,161, 11, 7, 0,162, 11, 7, 0,163, 11, 12, 0,164, 11,120, 0, 36, 0,119, 0,165, 11,209, 1,125, 10, 67, 0,166, 11, + 67, 0,198, 10, 67, 0,167, 11,210, 1,168, 11, 48, 0,162, 0, 48, 0,169, 11, 48, 0,170, 11, 7, 0,171, 11, 7, 0,172, 11, + 7, 0,173, 11, 7, 0,174, 11, 7, 0,175, 11, 7, 0, 98, 9, 7, 0,176, 11, 7, 0,158, 1, 7, 0,177, 11, 4, 0,178, 11, + 4, 0,179, 11, 4, 0,180, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0,181, 11, 2, 0,182, 11, 2, 0,183, 11, 4, 0,184, 11, + 7, 0,212, 2, 4, 0,185, 11, 7, 0,186, 11, 4, 0,187, 11, 4, 0,188, 11, 4, 0,189, 11,136, 0,190, 11, 12, 0,191, 11, +172, 0, 63, 4,121, 0, 11, 0,119, 0,165, 11,147, 0, 30, 3, 7, 0,125, 1, 7, 0, 98, 9, 7, 0,192, 11, 7, 0,193, 11, + 2, 0,194, 11, 2, 0,195, 11, 2, 0,196, 11, 2, 0, 17, 0, 4, 0, 37, 0,122, 0, 13, 0,119, 0,165, 11,138, 0, 7, 3, +140, 0, 9, 3, 7, 0, 25, 9, 7, 0,197, 11, 7, 0,198, 11, 7, 0, 66, 1, 7, 0,199, 11, 4, 0,120, 9, 4, 0, 5, 3, 2, 0, 17, 0, 2, 0, 37, 0, 4, 0, 69, 0, 69, 78, 68, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; diff --git a/source/blender/editors/datafiles/subtract.png.c b/source/blender/editors/datafiles/subtract.png.c new file mode 100644 index 00000000000..475f20b3eff --- /dev/null +++ b/source/blender/editors/datafiles/subtract.png.c @@ -0,0 +1,324 @@ +/* DataToC output of file <subtract_png> */ + +int datatoc_subtract_png_size= 10173; +char datatoc_subtract_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, 1, + 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, 11,252, 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, + 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, + 73, 77, 69, 7,218, 7, 21, 0, 4, 18, 61, 67, 90, 24, 0, 0, 32, 0, 73, 68, 65, 84,120,218,237,125,107,144,101,215, 85,222, +247,173,189,207,125,245, 99,186,123, 52, 15, 73,150, 61,163, 7,214, 3, 84,150, 98, 25,108,112, 98, 10,227, 84,153,184,192,174, +178, 9,166, 98, 8,143,144, 63, 38,188, 13,150, 13, 69,112, 66, 32,127,120, 36, 36, 85,137, 19, 72, 12, 1, 12, 85,240, 43,132, + 10, 69, 72, 72, 72, 48,182, 83,216,178,101,189, 40,235, 57, 51,210,204,244,244,227,190,206,217,107,229,199,218,251,156,115, 91, + 45, 33, 7,147, 10, 85,186, 83,234,190,125,187,239,185,251,236,199, 90,223,250,214,183,150,128, 47,244,113,246,250,235,207,159, +191,249,249,175, 19,192,251,126,248,253, 41, 53, 4, 68,132, 34, 49,198, 42,198, 88, 85,247,191,255, 71,252,143,194,119,255,131, +239,169,235,101, 74,141,170, 38, 85,213,116,237,218,181,221,221,221,139, 23, 46,168,166, 24,227,254,254,126, 92, 46, 23, 48, 0, +144, 32, 66,249,221,223,253, 79,170, 26,130,144, 52,200,183,254,221,111,251,167, 63,253, 83,241,242,238,236,211,143, 76,247,103, +137,148, 48,123,144,169, 9,129,170, 8,129, 48,133,225,254,251, 63, 16,174, 54,175, 92,212,201,204, 76,237,217, 11,143,204,230, +105, 80,137, 8, 0,188,250,213,175,222,217,217, 49, 51, 81, 77,166,106,170,254, 36,169, 61,183,187,104,172,186,227,142, 59,206, +157, 59, 95, 55,117, 83,215, 17,166,106, 70,210,239,212,204, 70, 27, 55, 52,227, 87, 61,115,109,124,118, 89, 15, 96, 48,132,181, +173, 91, 72, 3,140,192, 98,250,236,218,214,249,225,218, 41,146, 7,135,233,145, 39,103, 77,194,117, 91, 21, 79,221,252, 53, 68, +128, 0, 70,144,164,144, 32, 2, 67, 32,133, 20, 72,140,166,102, 76, 72, 20, 33, 76, 12, 9, 16, 64,125, 94,140, 12,208,151,180, + 92,161,125, 54, 30, 79,110,186,233, 38, 17,206,102,179,163,107,119,239,189,247,126,205,155,191,214,204,132,164, 72, 8,193, 23, +238,119,126,231, 63,254,247, 63,252,195,124,165,119,190,243, 93, 77, 83,107, 74,170,170,154,230,179,217,238,238,238,213, 43, 87, +154,212,140,134,163, 75,151, 46, 2,136,203,229, 18, 0,133, 34,242,208,231, 30,122,236,207, 30, 19, 97,144, 96,160, 16,255,240, + 39, 62,244,163, 31,252, 0,223,244, 55,191,249,145, 39,231, 36,163, 64,247,254, 36,132, 16, 72,138,144,114,250,244,233, 55,189, +233, 77,195,209, 40, 44,226,121, 0,170, 54,221,191,116,245,202,101, 85, 29, 84, 2,160,170,170, 55,190,241,141, 66,170, 89, 84, +168,168, 2,162,245, 12,208,195,153,153,133,155,207,157,121,205,107,190,212,204,150, 77,109, 64, 52, 85, 3, 65, 5, 9,133,196, +170, 58,241,234,203,139,141,253, 41, 6,131,218,204,215,110,231,102,192, 12, 0,116, 57,125,238,196,217,187, 37, 14,146,218,147, + 23,150, 79, 94, 90,156,217, 25, 84, 21,121,234,252,155, 41, 2, 10, 1, 3,132, 2, 33, 24,136, 64, 9, 65, 2, 36, 70,133,138, + 25, 13, 6, 64,104,170, 4, 41, 2, 36, 2, 6,138, 41,190, 88, 15,246,127,248,158,239,253,190,181,201,154,193,136,252,143, 66, +161, 72, 16,146, 65,194,207,253,220,207, 92,188,120,241,248, 11,253,192, 15,254, 80,210, 4, 3,212,252,178, 4, 40, 36,132, 66, +128, 20, 4, 9, 20, 6, 9,126,192,133,114,225,226,133, 95,248,231,255,172,127,161, 56,157, 78, 1,191,123, 0, 96,239, 1,226, +169, 39,159,122,234,169, 39,175,237,237,165,166, 1, 72,162,124,197,157,119,222,245,174,111,252,198, 95,254,229,143, 60,252,208, + 67, 0, 98,189, 92, 2, 80,179,197,210,246,167,141, 26,215,198,225,196,122,188,116,241,210,167, 62,245,167,102, 6, 80,196, 47, +155, 47, 1,243, 79,182,212, 52,239,126,247, 55,135, 16,126,244,131, 31,224,185,187,223,145,212, 82,242,155, 34, 0, 19,166,249, +254,193,149,135, 5,245,218, 40, 12,135, 18, 68, 72,136,136,143, 84,213, 98, 12,175,127,253,235, 79,157, 62, 19, 68, 68, 36, 84, + 49, 46,230, 13,104, 32, 13, 20, 51,136, 88,178,229,226, 90,106, 22, 9,118,237,192,194, 12, 85, 37,227, 97, 24, 84, 54,168,226, +250,198,198,217,179,103,111,184,254,134,141,141,245,166,174, 85, 68, 68,146,106, 52, 36,152, 65,197,104, 70,129, 54,102, 52,109, +204,140,132, 65,155, 68, 53, 38,140, 55, 71, 39,111,186,233,250,155, 95,185, 51, 26,134, 42, 74,221, 52, 66, 17, 17, 10, 69, 53, +154, 54, 48,129, 36, 51,154, 53,160,152, 41,165, 2,168,154, 36, 84,147,205, 87, 12,198, 59, 12, 3, 21, 62,246, 76,250,179, 11, +207,141, 71,241,149,103, 71,175,186,126, 60,172, 66,140,126, 53,229,169, 91,190, 22, 32, 65,243,111, 20, 0,166,233,224,202,163, +195,241, 78, 53,185,142,190, 19, 64,131, 80, 4,230,198, 43,248,132,146,178, 62,137, 59, 91,195,168,154,124, 65, 0, 0, 98,154, + 32, 48,114,253,228,173,244, 21, 2,168,102, 36, 8, 36,131,228, 79,242,205,166,134,131, 89,115, 56,215,104,166,190,147, 65,129, + 41, 8, 83, 10, 45, 95,195,104, 66, 49, 64,220, 48, 10, 44, 1, 66,136, 65, 97, 36,205, 20, 38,134,255,239, 30, 60,246,213,237, +237,237,173,173,109, 0,139,197,124,119,119,119, 58,157,126, 1, 23,186,245,182,219,222,249,206,119,181,199, 41, 47, 9, 69,130, +136, 72, 8, 97,119,247,218, 63,253,233,127,242, 98, 23,250,225, 31,121,191, 38, 53,183,135,249,244,251,193, 39, 37, 63,130, 95, + 76, 66,172,226,251,126,232, 7,143,241, 55,223,247,253, 63,144,154,148, 52,185, 55, 85, 51,115,127, 9, 51, 83, 3,160, 90,126, + 86, 53, 75, 77,186,251,203,238, 62,119,254,252, 3, 15,124,122,197,140, 52, 77,227,239,205, 91,134, 36,105, 44, 35, 82,155, 45, +151,203,122,169, 73, 85, 83, 93, 55,187,187, 87,159,120,226,201,186,169,255,246, 55,189,251, 87,255,195,175,172, 92, 40, 27,118, +191,213,114,194, 9,166,148,158,126,250,169, 39,158,120,114,111,111, 15,176,108, 68, 72, 33, 72, 46, 23,139,159,248,208, 63,250, +224, 7,238,247, 55, 74,113,125,170,170,106,106,106,166,102,170,251,251,251,159,249,204,103, 62,253,233, 79,239,238, 94, 53, 51, +186,137, 32,105, 52,133,170,165,148,234,229,242, 39,127,242,167,242,133, 82, 74, 73,211,108, 94, 95,120,110,246,212,197,249,229, +221,249,124,209, 92,187,118,237,137, 39,158,120,252,137,199, 83, 74,128, 25, 76,205,124,224, 70,115,172, 32, 66,144,203,122,249, +222,239,254,110, 0,113,247, 96,249,240,227,243,203,187,117,158, 33, 48,136, 5,189,170,179,103,180,105, 68,168, 10,138, 9, 73, + 90,222, 46,170, 27, 91, 91,227,241, 88, 83,130,217,117, 39,175, 35,200,115,119,191,163,110,204,204,237,168, 1, 76,245,124, 57, +189,180,156, 62, 43, 76,147, 81, 24, 13, 67, 16, 58,118,162,136,169,133, 32,175,190,253,246, 87,188,226, 21,155, 27,155,190, 43, + 6,195, 97, 92, 44,147, 91,144,188,137,136,148,230, 77,179,104,154,134,176, 3, 69,147,108,109, 28, 42, 31, 79, 74, 85, 85,189, +242,149,175, 60,117,221,169,209, 96,148, 52,249, 16,150,203,101,132,153,249,152,243,102,132,166,100,154,204,204, 8, 36,157, 47, + 12,192,218, 8, 33,112,243,196,137, 51,103,206,158, 61,123,118, 60, 30, 27, 77,147, 66,128,166,129, 33,170, 37,130,132,193, 8, + 49, 53,194,146, 89,242,181, 86, 51, 36, 76,231, 41,198,120,102,123,231,134, 27,206,156, 57,115,102, 60,153,144,212,148,140,101, + 9,208, 68,250, 90,128,160,193, 64, 67,111,127, 90,158, 97, 86, 11,221, 28,108,220,180,125,221,169, 88, 5, 83, 83,170,169, 4, + 49, 85,245,251, 8,107, 39,111, 53, 51, 16,221,160,154, 69, 90, 78,181, 94, 0, 48, 72,168, 6,163,141,235, 39, 39,110, 58,152, +203,225, 44,141,135, 18,131,111,124,199,150,121, 37,195,218,246, 45, 20,150, 19, 76,192, 52,213,169,158,107, 51, 51, 82, 66, 53, +222,188,105,180,118,202,135, 61,155,235,179,215,234,101,173, 85,148, 24,203,251,232, 35,218,185,197, 64, 88,177,218, 0, 76, 53, + 45, 82, 51, 23, 9,147,173,115,195,241, 54, 0,250,176,193, 38,233,181,189,116,113,183,217,221,111,150,141,141, 6, 18, 3, 65, +242,244,205,111, 1, 13,144,214, 33,171,105, 61,187,218, 44,246, 6,227,173,193,228, 58,152,123, 22, 97,129,137, 0, 8, 49,146, +100, 8, 97,125, 18,119, 78, 12,120,234,230, 55,103, 12, 3,177,226, 79,172, 51, 87, 36,197, 15, 89,190, 7, 7, 2, 32,253,179, + 69,128, 32,194, 8, 51,248, 70,162,250,212,169, 27, 71,144,102, 32,220, 71,152, 1, 2,128,180,124,132, 77, 76, 72, 24, 32,166, +128, 24,212,151,221,242,178, 27, 13, 84,131,169, 18,102, 70,152,154,219, 54,133,153,194, 64, 5, 64,133,101,115, 97, 52,136, 25, + 96,166,166, 6,131,169, 42, 12, 10, 26, 0,154,250, 7,148, 97,148,193,107,222,101, 62, 17, 68, 25,195,203,143, 47,220,207,182, +143,155,111,190,229,206, 59,239, 60,127,203, 45, 59,219,219,221,171,150, 79, 1, 29, 60,231,111,178,187,187,251,208, 67,159,251, +212,167,254,244,209, 71, 31,253,226, 12,104,125,125,253,157,239,124,215,245,215,223,160,170,214, 1,102, 43, 24,181, 96,120,244, + 96,114,239, 33,221, 51, 17, 10,136, 88, 85,191,241,235,191,254, 39,127,242,177,151,190, 57,248,182,183,189,237,206, 59,239, 82, +119, 53,217,243,175,188,187,152, 9,174, 98,245,252,100,117, 72, 30,112,116,195, 42, 3, 21,146, 23, 46, 94,248,181, 95,253,213, +139, 23, 47,188,248,128,226, 45,183,126,201, 98,177, 44,243,113,204,141,176, 13,110,122,176,191, 63,184,186,174, 65,164,166, 41, +247, 4,148, 51,219,164, 4,179,253,253,125, 51,123,250,233,167,207,157, 59,119,203, 45, 55,199, 88,253,209, 31,253,143,186,174, +143, 31, 80,106,234, 50,136, 46,168,233,141,134,182, 50,160,110,241, 82,147,118,119,175,154,225,185,231,158, 83,213,217,108,166, +154,138, 15,113,183, 6, 53,245, 17,155,217,124,190, 48, 83, 7, 93, 95,255, 13,111,191,231,158,123,254,205,135, 63,252,232,163, +143, 28, 29,144,223,196,241,187, 43, 3, 15,182, 70,210,173, 99, 93, 47,247,247, 15,154,166,126,230,153,167, 85,109,111,111, 79, + 85,253, 83,219,187, 48, 72,241, 37, 14, 21,252, 34,230, 62, 42, 53,205,124, 62,255, 59,239,121,207,112, 56,252,151,255,226, 23, + 62,255,249,207,247,103,168,233,157,158,124,201,166,201, 3, 2, 17,131,128,136, 66, 6,106,147,154, 38, 77,167,211,199,159,120, + 60, 53,233,242,229,231, 12, 6, 53, 3, 68,104, 70, 17, 90,246,114,101, 36,249, 66, 86,176,160, 2,162,170,154, 26, 0,245,114, +249, 29,223,249,247, 6,213,224,125,239,203,120, 52,214, 77, 2,144,212,212,160,201,150, 9,150,236,112,150,204,193, 39, 57, 26, +136, 8,199, 67,198,200,233,193,193,225,225,222,116,122,120,225,153,103,156,112,112,223, 40,238, 31,104,150,125,187, 16,170,160, +120, 0, 9,154, 99, 0, 90, 21, 29,100, 11, 41, 48,107,154,134, 34,170,250,161, 15,253,227,143,124,228,223, 63,248,224,103,227, +238, 94,109,176,231,118,155,189,131,102, 94,235,193,212,209, 71,198, 54, 38,160,145, 48,210, 64, 11,233,106,154, 63, 75, 75,166, +137, 57,188, 33, 64,165, 49,123, 78,245,216,211, 77,149,195,106, 22, 75, 1, 96, 99, 99, 99, 52, 26, 79, 70,227,148, 82, 62,146, +166,170, 98, 98,223,244, 77,239,254,131, 63,248,125, 94,127,199,215,103, 34,169,133, 15,190,208,171,103,188, 89, 78,205,154,229, +236,202,114,122,217, 84, 5, 74,193,100, 20, 88,166,144,204,254, 28, 64, 6,135,100,223,252, 56,181,115,199, 29,119,158, 60,121, +114, 52, 26,141, 39, 99, 41,142, 91,178,233, 34, 69,220, 77, 3, 44,228,131,105, 47,166,247,235,209, 12,154, 22,154, 22,169, 89, +104,106, 72, 52,102, 76,220, 63, 72, 16,155, 47,132,130,181, 81, 12, 65,131,144, 68, 65, 92,234,150,169,138, 81, 68,110,189,245, +214,209,104,188,115,114,103, 50,158, 0,208,164, 70, 43,193, 69,187,218, 22,225, 36,141,101, 88, 7,131,137, 90, 94, 50,136,154, +101, 52,221,104,170, 29,151, 22,107,105, 74, 19,229,162, 81, 24,155,166, 1,108, 60, 10,195, 74, 68, 24, 2, 7, 85,117,242,228, +201, 24,227,185,115,231, 68,194,250,250,186, 4, 18,162,154, 28,224,101,155,233, 70,215, 73, 57,179, 88, 80, 7, 64,152, 41, 73, + 24,125,107,192,104,204,219,194, 76,213, 18, 76,203,145,201, 38,192,193, 4,161,141, 10, 13,179, 69, 92,164,184,177,177,117,211, +185, 27,199,195,234,214, 87,157,244,149,200,168, 88,141, 80, 51,144, 2,154, 64, 84,146,219, 58, 2, 52, 10, 45,170, 25,115,196, + 64,230, 99, 73, 24,141, 48, 40, 65, 26, 97, 70, 80, 76, 82, 14, 62, 60,158,207,166, 93, 68, 0, 25,174,237, 72, 24, 86,163,173, +106,176, 6,242,243, 23, 57,168,236,218,116,175, 10,124,213,141,227, 24,184, 54,138, 65,252,148, 8,153, 64, 1, 82, 62, 53, 66, + 38, 35,105,194, 88, 78,164,127, 35,213, 90,186,214,143,172,185, 91,161, 88,136,144,144, 71,171, 52, 64, 36, 80, 56, 90,191, 94, + 66,140,195, 19,148, 40, 12,134, 12, 12,151,181, 93,188,188, 0,121,101,191, 22,242,236,201, 97, 85,241,186,173,193,120, 20,130, + 72, 21, 77, 41, 68, 2,200,148, 9, 93,170, 68, 67,114,158,131,166,238,173,204, 20, 45,131, 68,245,201, 19, 6,132, 74, 25,132, +162,102, 10, 13, 18,135, 27,215, 11, 67, 53, 58, 65, 4,100,150, 69,205,196, 12,100, 50,136,170,145, 56,156, 41,192,249, 82, 41, +120,250,217,101,140,156,140,226,198, 36,140, 6,225,228, 86, 21,132,195, 65, 96, 33,116, 98, 49, 91,176, 22,202, 59,248,148,236, +222, 50,253, 36,145, 38, 12, 3,178, 10, 33,132,106, 68,198,106,120,130, 20, 48, 66,114,128, 96, 16,152,163,105, 49, 83, 2,102, +162, 73, 77,168, 75,184, 95, 35,185,127,208, 60, 23, 37, 6, 62,126, 41, 4,114, 60, 12, 34,178, 62, 14, 18,196,121,110, 35, 72, + 37,169, 80, 26,105,254, 13, 52, 53,159, 36,136,208, 24, 7, 19,143, 18, 36, 14, 1,161, 84, 20,231,219, 13,102, 38,198,140,147, +197, 84, 37, 27, 67,117,236, 14,168, 1, 73,133,166, 41, 9,150, 10, 16,135, 73,128,170, 10, 36, 71,195, 16, 68, 98,222,162,166, + 6,154,145, 80,154,144, 78, 41,161,132, 11,150, 15,103,156,132, 56,233, 12, 38, 13, 6, 69,134,248, 48, 51,163,137, 9,140, 6, + 19,122, 44, 65,183,220, 30, 9,153,111, 82,203,177,151, 66, 5,203,101,162,200,178, 54,128,177,236,103,231,203,124,231,104,193, +168, 96,246, 65, 4,204,138,207, 46, 48,133,240,165,246,115, 97, 38, 37,106,209,124,147, 70,136,230,168, 67, 8,168,106,158, 81, + 24, 32, 48,191, 37,102, 47, 8,152, 32,194,105, 57,161, 65, 13, 66, 85,182,254, 2,166,153, 68,204,198,180,184,111,203,215,202, + 23,119, 42, 79, 90, 44,148,143, 39,125,103,102, 11,151,157,153,209,119, 8,160, 70, 18, 2, 51,131, 18, 98,226, 97,154, 27, 34, + 53,152,229, 0,202, 93,134, 89,119,242, 97,112, 56, 96,166, 25,231, 90, 70,251, 78,181, 16, 48,133,153, 91, 81,100,143, 3, 53, + 5, 1, 45,134, 63,131,182, 2, 79, 51,222,177,188, 70,118, 12, 66,124,249,241,242,227,139, 29,185,118,216,187,138,147,241,100, + 48, 24,140, 70,227,170,170, 50,106,107,234,249,124,177, 88,204, 15, 15, 15,147,103, 61,254, 82, 7, 84, 85,213,107, 94,115,207, +237,119,220,241,170, 87,190, 42,196,146,113, 52, 66,242, 57,243,116,160,195, 61, 51,123,236,177,199, 62,251,153, 7, 62,254,241, +143,123,178,240,139, 57,160,175,251, 91,111,187,235,174,187,170, 88,181,177, 2,187,164, 15,142, 68,142,109,108,154,113,170,112, +185, 92,126,242, 19,159,248,237,223,254,173,191,208,128, 98,140,119,221,117,215, 91,223,250,117,214, 98,215,146,180, 64, 47,164, +239, 71,248,171,145,253,106,104, 79,138,200,222,222,222,207,253,236,207, 28, 30, 30,126, 97, 3,218,217,217,121,235, 91,223,122, +195, 13,175,112,206,168,135,166,123,127,212, 7,253,189,175, 47, 56, 38, 71,167, 64,136,225,210,197,139,191,244,139,191,120,229, +202,149,151, 52,160,247,190,247,189,227,241, 90, 49,159, 71, 35,252, 46,146,239,130,232,254, 44, 21,182, 79, 36,103,252, 58,130, +161,191,152,172,235,230,147,159,252,248,111,255,214,159,191,136,225,141,127,253,111,104, 82,131, 37, 75,217,152,103,135,208,254, +144, 71,168,217,147,228, 31,114, 44,166, 14,164,108, 37, 66, 69,123, 37,103,249,108,185, 92, 12,170,234, 13,111,248,202, 79,125, +250, 83, 47, 68, 51,148, 80, 58, 37,148, 79,213, 99, 87,180, 44, 13, 8,237,239,106,133,130,170,234, 7,190,105,154,194, 46, 80, + 77, 1,106, 74, 6,204,231,179,229, 98, 49,157,206, 46, 94,186, 40,148,123, 94,115,207, 51,207, 60,253,216, 99,143,189,224,128, + 84, 53,231, 32, 50, 53,214,251,165,161, 77, 23,244, 95,234, 63,245, 1, 25,172,105, 26, 18, 41, 37,128,170, 10, 32,165, 70,205, +102,179,249,124, 54,155, 78,167,211,195,169,199, 62, 59, 39, 79,126,245, 87,127,205,135, 63,252,175,142, 31,144,169, 90, 75,212, + 97,229,195,145,129,148,241,136,117, 48, 24,236,224, 96,127,177, 88, 76,103,179,189,189, 61, 83,157,205,102, 64,198,227, 25, 44, +169, 1,150, 60, 57,147, 84,181,241,152, 86, 83, 58,123,253,217, 31,255,241,159,248,177, 31,251,224,113, 75,166,138,227,153, 42, +180,251,182,195, 48, 61, 91, 52,159, 47,166,211,233,193,193,193,149, 43, 87, 84,245,240,224,160,108,163,204, 62,116,167,162, 99, + 1, 53, 37,170, 33,165,100,149, 29, 59, 38,177,156,152,122,209,135,231,249, 52,239,209,221,221,221,231,158,123,238,217,103,159, +189,244,236,165,221,221,171,139,249,124,185, 88,180,147, 76,146, 45,179,196, 78, 27,208, 25, 54,211,212, 36, 53,163,240,135,127, +228,253,207, 27,208, 11,141,167,152,129,124,234,218, 87,212,174, 92,189,242,236,165,103, 47, 93,186,120,241,194,133, 43, 87,174, +204,231,243,197, 98,161,106,109,130,255,232, 52, 23,136,231,176, 79,205,146, 38,109, 26, 83,219, 88,223,248,246,239,248,206,149, + 1,105,239,145, 82,106, 52, 45,150,105,190, 72,243, 69, 51,155, 55,243, 69, 90,214,218,212,201, 53, 74,243,249,124, 62,159,207, +166,179,217,108,218, 52,141,106,223,140,230,128,169,183,231,203,147,156,102,128,153, 81, 50, 18,247,233, 78,154,206,159, 59,255, +218,215,222,215,219,212,221,238,177,186, 49, 3, 14,167,218,168, 31, 62,198,128,225, 48, 68,225,250, 4, 41,233,213,171, 87, 82, +210, 75,151, 46,206,166,179,140,222,187,124,123, 11,252, 61, 5, 39,173,217,232, 29, 89,192,224,217,220, 24,130,153,153,170, 10, +222,254,142,119,124,230, 51, 15,120,214, 89,154,164, 77,210,217, 50,205,230,122, 56, 79,211, 89,154, 45,211,124,174,243,133,206, + 23, 58, 91,170,191,126, 48,109,166,179, 52,157, 45,167,179,121,210,146,208, 0,125,122,156, 81, 65,206,141,148,175,101, 28,106, + 80,117, 73, 19, 67, 8, 18, 68, 93,134,101,166,170,166,218, 52,205,247,126,223,247,231, 25, 58,152, 53, 77, 99,159,191,176, 80, +197,238, 94,221,104,207, 32,118, 12,176, 5,130, 76, 54,125,210,172,177,102,145,153, 51, 15,112,224, 49,157, 82,196, 79,171,115, +183, 78, 55, 58,175,225, 14,187, 10,213,214,214, 86, 53,168, 0,154, 26, 68, 21, 98,170, 65,100, 56, 28,222,119,223,235, 62,246, +177, 63,150,186,214,186,209,148, 44,165,148,178,161, 55, 83, 51,207, 17,155,169,106, 74,214,184, 57,209,148, 82,249,131, 28,152, +244,162,140, 34,184,241, 8,164,252,157, 58, 95,225,228, 99,136, 65, 36,192, 74,242, 89,213, 84,147,170,169,125,195,219,223, 78, + 50,204,227, 45, 23,175, 44, 15,103,105,182,112, 3,155,189,103,182, 60,230,145,151, 54,139,195,186, 94,236, 95,123,110, 54, 91, +206, 22,245,124,169, 41,127, 16, 68, 8,215,184,149,128,142, 34, 57, 81,233, 12,152,193,117, 63,227,209,232,246, 87,223,190,179, +179, 61,153,172, 21,147,208,227,105,213, 54, 79,108,198, 69,157,186, 20,163,103,222, 84,139, 51,207,113,171,199,114, 6, 95,120, + 21,223,241,177,164, 93, 91, 2,182, 92,166,248, 90,109,189, 99,230, 6,201, 16, 66, 8, 33, 71,100, 10, 80, 33,180, 18, 46,222, +119,223,235, 34,172,253,115, 20,149,139,167,253,114,116, 75, 82, 53,165,122,225,171,103,214, 36, 51,128,243,101, 90,214, 12, 34, +203,202,130, 96, 52,140, 68, 22, 36,170,170,179,190, 6,248, 8,214,214,214,206,158, 61, 91, 85,131,245,245,117,199, 73,106, 42, + 20, 51, 80, 97, 98, 65, 85, 41, 41,165,232, 9, 61,235, 72,189,124, 94, 60,221, 13, 80,221, 76, 67, 97, 41,219, 53,167,124, 19, +154,204, 2, 10, 66, 97,149, 58,144,169, 90,152, 92, 51,196, 16,199,147,201,160,170, 92,194,145, 33,140,106, 22, 51, 42, 84,132, + 80, 42, 99,222,144,142, 44,140, 57,215,220,243,145,164, 42, 76,181,177,162,236,160,223, 33,243, 9,175,147,169,153,205, 33,228, +120, 8,130, 33, 16,192,100, 50,142, 49,110,108,110,108,172,111, 12,135,163,205,205, 19,193,117, 63, 62,243, 61, 87, 77, 49, 83, +117,227, 17, 93,140,198, 50, 69,206,100,104,222,158, 70,205, 60,136,185, 37,233, 49,158,249, 62, 12, 72,170, 10, 85, 19,225, 32, +194, 67, 16, 82, 6,131,225, 96, 56,220,222,218,222,222,222,174,170,106, 60, 30, 23,224, 6,201,185,224, 54,220, 55,241,235, 58, + 11,235,172,130, 31, 9,131, 49, 15, 39,143,204,247,228, 11,103,104,205,169, 26, 53, 64,209,104, 16,147, 19,155, 27,177, 10, 91, + 91, 91,227,241,104, 60,158,132, 24, 69, 66,127,153, 20,164,150,251,162,155, 88,122,142, 33, 58, 77, 1,131, 81,173,147,121,100, +188,234, 83,167,200,118, 7,102, 43, 89,244,214, 39,152,121, 98,100,182,140,148,112,195,230, 13,227,225,240,236, 13, 91, 39, 54, + 70,109,234, 47, 39,101,172, 80, 77,118, 4, 98,229, 44, 91,244, 84,123,217, 24,190,125, 44,123,130, 76, 12,175,142,193,250,190, +147,121,131,139, 72,136,132, 72, 28, 81, 66,157, 40, 13,102,115, 13,161,169,162,196, 32, 20,132, 32,206, 79,201,234, 56,164,189, +170,106,150,127,250, 13, 88,150,193, 20,138, 26,218,203,149, 25,133, 80,194, 50,143,157, 83,116,158,223, 16, 6, 25, 14,215, 78, + 82,226,112,237,180, 80,174, 28, 16,148,101, 90, 12,170,250,212,206,224,228,102, 21,163,140, 71,206,207, 49, 51, 98,197,184,228, +205,236,233, 53,213, 88,148, 39, 78,188,177,165,242,152, 67,139,110,127,183, 27, 25, 45,189,110,158,152,142,148, 0,134,204,210, + 73,203,237, 91, 72, 90,215,186,108,212, 12, 49,128,100, 12,146,231,133,153,143,207, 14, 47,107,139,252,216,231, 79,101,161, 38, +137, 44,100,202, 3, 51,128, 18,178, 0,161,176,106,100, 16, 50, 12, 54, 6,147,109,145, 42, 14, 55, 51, 74, 85,223,121,188,182, +223,144,184,118,152,158,188,180, 24,143,194,169,173,170,138,114,230,228, 80,136, 65, 5,168,148, 73,234, 80, 29, 85, 99, 15, 77, + 59,243, 38,112,134, 46,187,154, 50, 21,214,201, 65,114, 22,172, 64, 28, 66, 0,241, 40,209,204, 72,133,137,154, 66,132,202,148, +180, 38,171, 70,155,198,200, 44,237, 78,106,194, 36, 18,124,167,187,164,208, 32, 32, 99, 81, 34,154,147,166,158,168, 51,192,148, + 57,207,224,235, 18, 43,203,134,213, 25,113,171,198, 91,113,176, 30,194, 40, 84, 19,138,228, 48, 67, 28, 56, 58,111,171, 6,105, + 18,146, 54,203, 90, 14,231, 41, 80, 46, 94, 94,138,112,231, 68, 21, 69, 78,109, 15, 6, 3,169, 34, 99,132, 66, 4, 6,179, 88, +196, 75,142,205, 11, 2,116,198, 26,160, 58,235,219,197,139,208, 54,211, 27,201, 10, 33, 82,130,111, 2, 99, 89,124, 87,158, 72, +230, 10, 12,164,234, 82,133, 33,129, 22, 68,214,198,161, 9,150, 84, 53,193,130,155, 40, 53,136,154, 69,120, 34,129,229, 27,128, + 60, 19,217, 16,101,159, 34, 21, 76,132,209, 2, 7,113, 19, 12,113,184, 17,171, 73,182,184,150,133,218, 38, 6, 79,240, 0, 90, +168, 98, 24,148, 20, 83, 75, 50, 95,170,192, 46, 94, 94,146,184,186, 87, 75,144,209, 32,196,192, 97, 21, 70,195, 64,145, 88, 80, +157, 50, 39,157,138, 79, 84, 43, 26, 2, 87, 16, 7, 40, 33, 1,201, 36,142, 40, 49,132,129,132,170,213,130,100,207,163,128,168, +159,231,178,193, 73,143,174,133, 2,213,134, 42, 86,207, 64, 98, 58, 83, 35, 70,195, 16,133,227, 81, 92, 27, 27,201, 2,242, 75, +182,172,168, 0,178,230,206, 47, 89, 34, 20, 86,163, 45,104,114,235, 7, 6, 55, 34,190,191, 11, 43, 79, 31, 83,206,116,137,148, +152,132, 84, 83, 55,117,133,132,247,227,216, 52,102, 2, 93,164,164, 0, 37,118,212,120,155,141,214, 66,214,147, 37,167, 64, 82, + 12, 24,140,119,250, 17,151, 26,197,127,237,129, 6, 51,111,239, 86,163,252,178, 20, 75, 64,114, 98,181,203, 49, 27,200,186,209, +134,130, 70,103, 51, 35, 41,238,242,178,251,242, 92, 78,139, 96, 29,252,144,173,254,205, 60, 56, 66, 89, 8,170,171,185,178, 74, +170,120,219, 76, 8, 20, 5, 85, 14,217,104, 62, 98,115,114,191, 68,158,101,138, 29, 45,155,160,133,153, 84,207,119,100,117, 60, + 21,157, 69, 80,133,170, 59,144, 22,164,102, 99,164, 78, 49, 20, 75,101, 57,243,226,126, 49,251, 99,144,150,211,201,102,180,146, + 86, 45,191,118,121, 25, 29,125, 27, 91,210, 44,231,116,161, 68,155,141,128,162,104, 1,216,202,248, 50, 7,235,225,150,123, 16, + 67,201,129,228,208, 25,132, 26,203,116,100, 47, 81, 54, 90,206, 46,187,173,200,113, 93,222,201,194, 60, 1,158,104, 67,190,186, +150, 74, 21,135,250, 62, 44,181, 50, 56, 20,251,130,108,150, 60, 25,153, 35,107,127,115, 70,228,176,156, 97,204,121, 25,247, 71, +214, 70, 79,180,156, 78,134,153, 41, 85, 10,132, 53, 45, 14,206,138,232, 47,203,242, 90,224, 81,146,195, 94, 47, 4, 99, 86,232, +161, 68,101, 62, 9,237, 28, 21,108, 80,162, 19,151, 85,180,105,101, 67,209,237,193,247,106,206, 69,250, 59,125,122,253, 28,107, + 59, 8,203,159,234, 49, 75,135,206, 88,210,214, 68,151,173,202,233,227, 82, 6, 84, 20, 19, 30, 40,177,139, 40, 29, 55, 48, 79, +161,101,126,185,148,133,136, 79,122, 62, 19, 6, 66,149,104,233,151, 76, 92, 24, 77,169,128,154,235, 75,242, 58,101, 87,147,103, + 86, 51,255, 87,206, 11,243,194,117,138,239,172,139,205, 57, 90,150,197,233,139,237, 94, 78,152,189,252,120,249,241,242,227,175, + 68,190,245,197, 46, 65,174,111,108,108,110,108,172,173,173,159,216, 58,177,179,189,115, 98,107,235,196,230,230,100,109,125,109, +109, 60, 24, 12, 61, 71,213,203,228,172, 36, 45,154,166,153,205,166,123,251,123,251,251, 7,151, 46, 93, 60,216, 63,184,182,119, +109,127,111,111,119,119,119,127,127,255,175,222, 4, 77, 38,147, 91,111,251,146, 27,111,188,241,204,233,211, 39, 78,108, 77,214, + 38, 49,198, 99,217,251,126, 78,228,121,201,147,213, 39,173,184,245,121,122,232,166,105,166,135,211,107,123,215,158,126,250,169, +135, 62,247,185,135, 31,122,168,249, 34,101,190,191,104, 19,116,250,244,233,123,238,189,247, 75,191,244,238,225,112, 80,202,132, +236, 37, 93,183,132,180, 61, 94, 42,255,200,142,175,245, 64,157,232, 37, 75,251, 9,221, 92,203,201,156, 95, 53,152, 87,117, 61, +254,248,231,255,203,239,255,254,131, 15,126, 86, 85,255,159, 78,208,250,250,250,153, 51,103,190,236,203,238,190,245,214,219,156, +209,177, 54, 49,220, 99,132,142,204, 17,143,221, 52,157,138,117,133,113,230,106,194,253, 5,191,174, 86,205,229, 90, 87,118,153, +232, 54, 23,127,245,234,213,255,246, 95,255,224,193, 7, 31,188,124,249,242, 95,202, 4,157, 62,125,250,174,187,238, 58,127,254, +252,233, 51,103, 82,210, 44,166, 93,153, 20, 3, 94,108,219,176,111,144,122,150,166,255,250,138,241,193, 49,178,254, 99,197, 0, +127,222,139, 57,228,244,162, 67, 0,143, 62,250,232, 31,255,175,255,249,192, 3, 15, 52, 61,125,248, 95,104,130,238,191,255,254, +197,178,110, 51,186, 29,239,216,227, 32, 95,218, 60,175,222,237,145, 23,143,249,179, 35,178,141, 23,217, 74, 71,164, 11,253, 99, +216,158, 62,144, 98,176,229,124,177,127,176, 95, 55, 77, 93, 47, 63,241,241, 79,124,236, 99,127,252, 23,156,160, 56,155, 47, 90, +193,137,181, 2,183, 99,102,229,121,150,167,159,154, 94,157,151,222,139,207,223, 74, 71, 15, 97,183, 83,201,254,167, 20, 34,162, +119,229,222, 83,235, 81,193,158,224,242, 48,117, 62,159,239,239,237, 45,235, 37,193,219,110,187,237,206,187,238, 50,213,223,251, +189,255,252,212, 83, 79,253, 95, 78, 80,150, 67, 29, 41, 45, 57,142,169,183, 35, 22, 43,151,124,117,242,134,146,122, 88,253,187, + 30, 99,148,231, 57,167,223,188,247,128,105,210,124, 28, 72,115,113, 68, 9,169,188, 8, 7,173,220,220, 82, 97,196, 45, 37,175, +140,132,169,205,230,179,197,124,225, 97,230,108,122,120,245,234,213,229,114,217, 47,254, 56,121,242,186, 27,111,124, 69,136,225, +193, 7, 31,188,250,210,148, 57,199,201, 43, 94, 72,211,240, 34,103,108, 53, 43,192, 86,128,101,171,147,186,250,170,153,105, 74, +185, 69, 3, 80,215, 77, 93, 55, 46,112, 87,213, 38, 53, 94, 53, 92,242,231,218, 6,206,101,120,244, 12,182,251, 47, 51, 44,151, +139,197,114,233, 1,104, 93,215, 41,103,236, 11, 43,100,102,176,148,210,249,243,231,223,242,150,183,212,203,230,163, 31,253,181, +135, 31,126,248, 37,239,160, 85,185,199,138,238,231,216, 23, 90,134, 26,173, 8,196,201, 50,116, 52, 74, 46,188,183, 35,135,209, +205,127,147,154,189,189,189,249,108,230,217,192,195,195,195,189,189,107, 77,211,144, 76, 41, 45, 22,139,190,125,181, 78,179,113, +140, 87,224,113, 40,165, 88,136, 14, 68,136, 79,125,211, 44,151,245,104, 52,124,207,123,190,213,128,127,247, 75,255,246,145, 71, + 30,121, 73, 59,232,121, 59,197,142,223, 60,199,168,116,218, 74,148,222,111, 45,167,133,142,252,117,210, 12,240,154,212,212,117, + 93,215,181, 79, 80,211, 52, 41,165, 34, 50,242,167,109,142, 46,167,151, 74,193,166, 87, 91,116,226,222,146, 95, 46,228, 18, 51, + 37,200,150, 74,105, 41, 25,223,115, 73, 85,205,152, 68,228,219,190,253, 59,166,211,233,111,124,244,163, 15, 62,248,217, 23,157, +160,206, 95, 29,185,203,231,193,223,231, 21,158,149,218,227, 94, 29, 50, 74, 90,167,144, 43, 4, 84,109, 62,155, 93,190,124,121, +177, 88, 2,214, 52,205,238,238,238,225,116,234, 18, 39, 51, 75,170,153,127,182,231,221,121, 95,146,125, 12,172,101,145,106,183, +105,164,204,237,228,105, 83,104,201, 23,154,105,211,212,169,137, 36, 85,196,204, 70,195,209,183,124,203,183, 62,253,204,211,191, +242,203, 31,121, 33, 12, 21,254,218,107, 95,219,171,246,178,149,218,175,254, 79,157,168, 40,111,158,162, 40,180, 30,112, 94,165, +155,252, 77, 48, 51, 91, 44,151,135, 7, 7,203,229, 82, 85,235,166,158, 78,103,139,197, 92,181,105,213, 21,249,210,189,105,206, + 66, 40,172, 72, 36,208,137,162, 86,162,193, 14,179,163,208,214,133, 54,244,123, 8, 18,183,182,182,183,183,183, 67, 8, 86,250, + 45,120,122,119, 99, 99,243, 43,191,234,171,214,215, 54, 62,247,185, 7, 95, 64,148,119,172, 79,207, 42,120, 0, 72,138,101,163, + 77,147,111, 32,191, 78, 16, 12,194, 24,115,229,181,144,131, 1,163,100, 59,234, 98, 39,159,204,131,131,131,139, 23, 47,206,231, +115,159, 83, 63, 86,153,198,239,234,188, 74,158,208,186, 68,102, 87, 69,213, 21, 36,148,120,101,229,228,247,215,137, 45, 78, 0, + 32, 18,144, 75,186,233,189, 5,124,202, 97, 89, 27,144, 52,169,233,125,247,221,247,186,215,189,238,231,127,254,103, 47, 92, 88, + 41, 43, 13,247,222,123,239,177,126, 75,205, 84, 51,151,169,106,139,165, 11,120, 44,153, 37,181, 70,205,107, 6, 91, 12,229, 94, + 41,102, 97, 41,204,180,174,151,243,249,162,105,154,166, 73,243,249,108,239,218,181,217,124,222, 52,141,139,113,242, 20,231, 35, +218,202, 35, 45, 87, 19,174, 36,228, 74,193,101,241, 11, 57, 71, 93,182, 71, 91, 18, 81,210, 24,101,223,103,189, 43, 92,180,188, +181,189,189,179,179, 19,171,170,243,169, 61, 61,170, 63,190,226,203, 95, 63,158, 76,188,169, 78,222, 65,211, 89,182,157, 73,205, + 37, 67,126,120,154,198,230, 11,109,249,229,148,250, 54,185, 71, 78,211,183,106, 70,131, 33, 34, 72, 38,205,155,229,254,114,126, +205, 11,226, 52, 45,231,139,101,219,248, 32, 59,110,101,183, 27,172, 28, 8,148,130,186, 44, 94,201,162,195,222, 62,178,190,206, +237, 8,138,200, 4,180,139,206, 69, 70,163, 81, 21, 43, 18, 85, 85, 13, 6, 67, 79,131,180, 26, 47,191,100, 42,210, 97, 5, 76, +236, 13,175,127,195,169,235, 78,253,230,111,126,212,201,150,184,172,253,136,177, 73,182,119,216,236, 31,230,229, 93, 52, 54,157, +165,164,207,243, 97,180,118, 80, 61,133, 67,238, 91, 32,244,218, 36,146, 38,105,170,203,125,213,134, 70, 34,153, 37, 20,236,211, +154,212,236,158,138,195, 54,205,123, 37, 87,197, 48,207,134,176, 21,131, 20,136,109,157,127,232,251, 3,230,220,142,121,206,166, +138,213,104, 52, 4, 24, 99, 12, 34, 46, 2,117, 84,226, 45,126,218, 82, 72, 35,133, 52,213, 70,245,214, 91,111,253,174,239,250, +251, 31,254,240,191,190,122,245,106,216, 62,123,251,193, 84, 15,166,205,193, 52,237, 79,211,108,161,117,178, 38,105,221, 88,163, +197,135, 48,215, 31,185,253,203,206,180,228,150,208,214, 13,153, 90,106,212, 5,143,169,105,150,211,229,252,176,169, 83,147, 82, +157, 82,106, 82,157, 52, 37,164,146,158,241,222, 9,158,136,205, 14,160,131, 59, 69,215, 80, 18,218, 37,190,183,246, 85,182,133, +111,232,135, 34, 89,229, 14,160,170,134, 39,182, 78,108,110,110, 78,198,227,201,100,178,177,177, 49,153, 76,188,215, 80, 31,169, + 88, 15, 59, 21,117,146,141,199,227, 47,255,138,175,248,223,159,252, 36,175,191,253, 27, 86,125, 38,143, 65,209,171,225, 85, 11, + 80,217, 53,250,240, 87, 82,106, 22,150,106,247,122,205,124,119, 57,223,181, 12,127, 60, 41,229, 6, 4,131, 74, 98,200,142, 42, + 8,243,115,152,137,183,197, 96, 41, 8,205,231,160,245, 98,157,186,110,101, 76, 69,224,106,222, 25, 43, 23,213, 77, 38,147,115, +231,206,109,111,239,120,121,194, 96, 56, 24,141, 70,210,231, 76,112,132, 23,232,177, 5,164, 4,177,148, 37, 12, 71,208,142,245, + 68,170,171,113, 88, 81, 7, 23, 33, 79, 73,101, 34,203,153,161,234,193,129, 89, 82,104,139, 6,202,101, 77,205,113,173,119,126, + 49, 2, 22,172,176, 98,121, 98, 68,114,121,166, 21,145,153, 67,199, 86, 44, 3, 35, 4,236,166,134,237,164,196, 24, 7,131, 97, + 16, 49, 98, 60, 26,199, 88,121,251,194,226, 59, 58,198,162, 36,142,179, 78, 54,187,182, 86,186,101,166, 6, 9, 18, 75, 14,213, +218, 82,190,110,223,244, 96,106,150, 19,180, 25,248,226,154,173,111,177,161,170,203,212, 44,115,140,157,106,211,198,235,203,243, + 97, 53, 2,150, 20, 41, 25,208,248,101,130, 48,132,220,170, 37, 4, 14, 43, 9,193, 45,141, 9, 91,107,215, 6, 85, 25, 44, 81, +205, 74, 33,179,247,137, 35, 32,194,245,141,205, 51,167,207,140, 70, 35, 16, 85,172, 54, 54, 55,198,227,113,187, 95,124,125,217, +253,203,194,207,220,145,204,122, 53,218, 36,161, 72,136,244,104,240,104, 77, 2,122,105,212,236,246, 59,104,209, 7, 33, 89, 84, +215, 9,208,243, 89,110,147,203, 40, 50,176, 46,172,207, 92,108,217,122,174,202,244,219,134,154,229,162, 12, 2,226,230,185, 67, +216, 44, 41,221, 82,102, 77,239,145, 25, 66, 36, 33,100, 21, 99, 8, 34, 94,223, 34, 36,160, 73, 69,164,171, 29, 56, 26, 99,246, + 78, 9,219, 34,203,108,122, 85, 16, 59,208,220,227, 36,242, 86, 98, 87, 36,170,171,244, 13,173, 55, 95, 89, 21, 81, 68,245,218, + 56, 8, 43,248,216, 37, 80, 96,207, 89,101, 10,131, 52, 99, 65, 91,222, 10, 17,203, 58,183, 93, 18,225,176,146, 42,102,139, 43, +132,132,172,161, 10, 33,172,175,175, 87, 89,174, 26,182,182,183, 78,108,110,134, 16,189,208,108, 56, 26,198, 32,165, 87,207,209, +110, 3, 47, 68,222,160, 5,170,185, 14, 21, 52, 19, 48,106,161, 5,216, 73,131,209,106,108, 74,118, 61, 55, 87,202, 83, 70, 88, +145,198,162,156,225, 82, 51, 4,152, 30,249,108,242,200, 22, 45,141,145,114, 62,188,173,135,207,101,185,101,235,231,173,227,178, +160,190, 42,219,155,177,133, 16, 0,132,144, 91,178, 73, 16,162,173,207, 96,235,237, 58,201,245,234,233,234,254,229,174, 78,108, + 83, 9,249, 37,210, 52, 69,182, 58,235,172, 50,237,109, 22,235,240,152, 65, 75,227,211,190,102, 81,179,197, 46,231,170,212,231, +104,174,181,181, 86,109,105,171, 97, 65, 75, 53, 50,203, 97,178,135, 96, 46, 16, 55,170, 49,241, 80,159, 0, 0, 7, 46, 73, 68, + 65, 84,209,150,161,142,149,215,182,175,173,173,109,159,218, 25, 14, 7, 4,135,131,120,234,228,198,100, 28, 69,132,160,196, 16, + 36, 20,132, 37, 45, 19,185, 82, 11, 87,100, 66,207,231,175,218, 40,197, 74,184, 76,235, 26,101, 69, 80,143,242,238, 90, 74,179, +139,162,142, 61,167, 86, 48,125,158,200,182, 19, 76, 91, 74,147,101,241, 71,121,209, 35,103,190,167,117,228, 10, 1,238, 42,162, +226, 50,153,212,119, 12,213,196, 88, 81, 6, 0, 36,196, 16,171,225,112,208,231,242,209,231, 54, 13, 29,175,224, 45, 18, 88,240, + 99,249,111, 37,123, 85, 0,142, 29,225,108, 66,136,153,185, 97,143,198, 97, 47,222,179, 14,136,185,108,205, 86, 89, 25,162,204, +175,153,171,182, 10,130,211,231, 29,242,190,149,180,142, 55,114, 92,103, 52, 66,164,138,131,137,248,168, 24,227, 96, 18,170, 81, +238, 72, 22,195,181,233,240, 96, 46, 32,170,200,105,189, 24, 13, 26, 82, 66,192,250, 36,172,143, 67, 8,185,250,112,224,102,203, + 37,242,230,146,204,172,153,114,121, 16,148, 40,146,113,151, 51,230, 70, 30, 34,157,101,242, 77,148, 82,204,131,109, 59,205,181, +187,162,109,200,198,214, 31,117,182, 39,219,155, 50,181,165, 92, 44,171,154,228,136, 85,212, 23,224,106,217,127, 15,104, 66, 17, + 9, 3, 9, 3,239,137, 17,170, 73,168,198,126,187, 6, 44, 50,209,200,170, 49,145,180,172, 13, 64,140, 18, 2,134,149,119,164, + 96,136,226, 29, 2, 50,224, 97,150,150,247,165,139,230,181, 13, 94, 25,103,214, 14,198, 11, 22, 87, 1, 61,162, 15,255,136, 19, +212,220, 30,176, 68,167, 68, 23,118,177,103, 65, 92,219,148,207,124, 86,181,130, 1, 4, 44,229,198, 23,176,188, 92,214,219,187, + 38,109,234, 84,226, 48,196, 49,157,148, 8, 85, 28,172, 81, 42, 87,249, 74,136,200, 70, 95,219,136,198,204,146, 98,186, 72,139, + 70, 9,138,164,186,209,131,105,242,120,127, 88,201,218, 88,170, 64, 35,162,200,104, 40, 85,108,155,103,153, 59,196,174,247, 80, + 71,250, 61,175,224,173, 76,113,236,142, 66, 79, 13,215, 85, 37,248, 49,104, 29, 31,209,243,131, 64,219,223,166,107,152, 32, 69, +180, 37, 46,242, 43, 62, 93, 11,143,142, 46,172, 2, 40, 18,194, 48, 14, 55,252, 88, 5,169, 66, 53,166, 68,228, 58,171, 98,199, +145,209,144,175, 76, 50,232,194,218,188,197,108,161,215, 14, 26,247,113,227, 81,216, 90,143, 85, 20,208, 6, 49, 0,129, 12, 25, + 33, 11, 87,107,141,250,145,246,241,233,116, 2, 49, 83, 14,174,242,179,182,221,134,181, 68, 37,250,199,204,138,140,177,168,223, +105,253, 98, 9,203,126, 4,200, 44, 66, 7, 52,189,159, 71, 9, 12,194, 32, 72,149,121,189, 56, 10, 97, 64, 6, 8, 40, 1,109, +113, 78,145,201,150, 36, 71, 47,171,164,102, 93,122,205, 52, 33, 21, 93,238,162,230,193, 52,197,168, 36, 98, 80, 53,157, 46,114, +191,164, 42,202,160,242,209, 33, 10,171, 40,185, 67, 50,225,253,125,218, 77,210,221, 23,219,214, 57,173,222,145, 93,204, 85, 98, +244,118, 40,218,203,110,181,213, 75,154, 19, 93, 30,231, 73,200, 93,170,130, 80, 2, 68,160, 86, 96,124, 14, 55, 68, 66, 53,220, +140,131,245,188,243,101, 32,113, 88,244, 49,185,252, 32,251, 74, 23,180,183,100, 90,143, 35, 51,230,234, 36, 5,213, 52,105, 30, +235, 98, 97, 7,211, 38,119,219, 22, 14, 34, 29, 30, 9,177, 54, 10,107,227,224,212,226,104, 40,219, 27,113, 48, 16,223,243, 85, + 37,161,101,151, 90, 82,211, 12,170,177, 5,107,108, 69,174,160,118,129,156,245, 92, 61,209, 37, 11,172,212,193,184,106,212,221, + 93, 47,202,181, 54, 31,196,210, 14,190, 72,132, 24, 61,122,234,107, 85,187, 47, 69,138,155,223,157,219,199,168,177, 37,206, 74, +175,180,174,207,101,209,179,146,232, 74,132, 0, 47,254,241,209, 8,154,100,139, 70,165,108,130,131,216, 12,154,224, 24,189,138, + 33,134,146,192, 46,205,178, 65, 8, 36, 22, 16,219,134,169,109, 45, 97, 41,120, 68, 97,207,189,210, 45, 75, 85,218,196,134,118, +140, 61, 4, 82,185,132, 31,170, 12, 67,198,129,104,130,153,132, 42, 84, 19,250, 58, 49,196,193, 26,195,144,108,131,158, 92, 81, +163, 52, 41,213, 79,204, 21, 0,180,214, 26,169,182,105,157, 82,117,167, 43, 49,181,151, 45,229,115,163,154,184, 80, 0,222,209, +142,135,243,132,189,214, 29,149,150, 89,204, 59, 40,230,162, 19, 14, 7, 28, 15,131, 87,185,129,140,154,123, 64,181, 27,215,143, +148,182, 56,144,197, 81,107,143, 25,179, 44,203,230,106,250, 46,135,169, 5,184, 33, 43,123,189, 87, 54, 5,222, 24,187,120,183, + 85, 93,130,122, 47, 84,165,177,107,186,147, 71,194,220, 50,201,235, 56, 50,172,200,152, 44,151,180,117, 17, 59, 75,239, 32,119, +227, 61, 35, 97,240,235,171,135,234,154,243, 69, 98, 49,243,140, 76, 38, 41, 49, 53,102, 33, 79, 11, 79,221,252,230, 86,239,143, +182,125, 33,250,221, 0,203, 44,172, 70,168, 40,137,172,174, 76,116, 53, 6, 52,239,134,102,125, 78,182,229,253,164,196, 62,165, + 18,195,250,253,136,218,238, 74,165, 6,190, 28,186,194, 36,247,159,173, 32,187, 54,162, 42,193,167, 71,113,189, 86, 0, 37,100, +151,156, 30, 98,169, 67,110,123,130,228,201,246,121,136,109, 8,202,174,115, 23,114,123, 59, 95,166,150, 69,211,118,193, 11,236, +233,183,211,107, 13,143,181, 61, 28,104,125, 9,144,172, 74, 26,242, 10,176, 56,132, 82, 3,208, 21,211,101,242,137,109,166,167, +212, 87,195,178,149, 44, 84,127, 75,223,101,158,191, 53, 2,212, 18, 31, 20,254,187,245,244, 89, 45,215, 2,223, 78, 92,226,126, + 39,223, 79,180,182, 2,146,157,171,206, 77,187,114,189,154,161,167,172,207,139,220, 43,242,177, 18,214,246, 99, 80, 31,248, 74, +149,161, 42,251,121, 62, 22,159,208, 26,251,214,103,229,181, 86,122,129,195, 74,159, 69, 15,248,141,237,252,162,180,174, 47, 8, +174,203, 25,101,167, 45, 93,174,183,224, 29,230,122,155,174,162, 32,151, 76,119,241,155, 47,139,198, 46, 48,180,182, 86,148,173, + 59,243,113,106, 41,244, 45,251,191,155, 77,180, 77, 25, 91, 92,144,111,187, 31, 99,180, 91,187,253, 95, 50,104,169, 7, 37, 90, + 76, 67,159, 38,235, 25,196,242, 14, 69, 41,144,235, 78, 11,219, 8,157,185, 96,190, 59, 67,150,219, 70, 50,215,142,117, 25, 52, + 43,155, 38,159, 69,107, 27, 35,244, 66, 80,107,139,157, 25,139,155,236, 66,233,150,161, 45, 29,204,138,132,195,237, 88, 57, 76, +109,189,117,143,130,180,213,248,190,195, 76, 37, 56,239,218,184,161, 21, 36, 20,107,156,131, 22,138,149,196, 88, 1,240,190,149, +218,140, 87,169,247,213,174,166,173,157,149, 46, 54, 44,229, 78, 45,119,211, 58, 77,143,139, 97,173,129, 66,187, 28,165,253, 64, +167,125,138,221, 42,103,100,150,249, 29,239, 61, 73, 48, 27,202,214,249,230,214, 52, 93, 40,210,210,187,199,169, 30,218,158,108, + 71, 80,190,217,106,115,242, 82, 42, 95, 28, 62,218, 3,215,118, 76, 40,117,171,229,185, 21,213, 77,233, 65,199,174,220, 56,179, +128,217,176,161,205,200,230,183,150, 76, 36, 74,179,143, 50,183, 69, 25,128,246,134,162,181, 65,167,246, 67, 3,181, 54, 66,247, +153,234, 42,140,181, 53,248,208, 54,123,103,173, 65, 93,161,155,142, 36,208, 59,190, 40,187, 69, 53,244,132,138,102,109, 77,161, + 83, 43,121,232,173,153,212,150, 4, 87,168, 64,202, 28,161, 80,111,210,217, 80,118,205, 40, 80, 14, 19,139,244, 68,115,148,184, +114,206, 58, 69,161,177,148,141, 51,230,150,135,109,138, 59, 55, 51,237,247, 9, 44,182,172,109, 99,128, 35, 51,101, 37, 58,200, + 52,124, 30,197, 17,101,112, 75,139,247,236, 87,219,176,200,218, 70, 1, 29, 88,176, 35,134,169,141, 78,253,134,181,164,174,209, +137,172,188,187,164, 21,203,226,141,107,197,186,201, 42,149,214,130,174,153,112,161,155,133,221,206,108,241,104, 68,103,165, 75, +231,250, 92,188, 70,176,175,148,207,160, 37, 27, 14,162,139, 18,218,179,214,235, 4,217, 63,106,218, 2, 42, 98,133,123,165,117, + 96,161,221,119, 44, 0,190,164,179,243, 54,178, 62, 52, 45, 81, 77, 11, 80,122,103, 35,199,209, 61, 97,104,107,141, 90,128,148, +157, 96,255,207,108,165,155, 84, 59,202,255, 3, 12,217, 15,142, 80,147,252, 33, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/texdraw.png.c b/source/blender/editors/datafiles/texdraw.png.c new file mode 100644 index 00000000000..42f9f08d1d7 --- /dev/null +++ b/source/blender/editors/datafiles/texdraw.png.c @@ -0,0 +1,302 @@ +/* DataToC output of file <texdraw_png> */ + +int datatoc_texdraw_png_size= 9462; +char datatoc_texdraw_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 96, 0, 0, + 0, 96, 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, 11,252, 97, 5, 0, 0, 0, 6, 98, + 75, 71, 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40, +155,120, 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, 21, 0, 4, 18, 61, 67, 90, 24, 0, 0, 32, 0, 73, 68, 65, 84,120,218,237, +124, 89,140,101,215,117,221, 90,251,222, 87,213, 53,177,122, 98, 55,123,160, 40, 78,146,200,166, 68, 54, 69, 89,116, 34, 91, 1, +100,249, 67,142,156,200,128, 12, 88, 9, 16,219,178,243, 39,217,150, 7, 13,148, 29, 32, 81, 44, 39,254,113,236, 12, 6,226, 64, +118, 2, 36,158, 62,226, 32, 48,132,124, 68,113,108,121,136, 6,202,146, 69, 54, 71,113,234,110,178,217, 67,117,205,245,222, 61, +123,229, 99,159,115,238,125, 85,221, 20, 21, 75, 1, 12,232,117,163,234,189, 91,247,221,123,238, 57,123, 92,123,237, 3,124,163, +175,155,142, 29,187,245,214,219,246, 30, 39,128, 15,127,228, 99, 41,117, 4,204,140,102,109,219,142,218,182, 29,141, 30,250,216, + 71,243, 73, 31,252,137,159,148, 4,200,104, 52, 51,227,129,253,155,183,222,118,254,200,209,171, 51,163,209, 15,253,208, 95,157, + 63,119,174, 57,125,255,105, 79,201,147, 11,146,235, 45, 15,254,233, 77, 55, 93,184,225,134, 29, 51, 73,233,232,145, 31,252,236, +103,255,164,157, 76, 38,140,107,122,243,192, 3, 95, 24,111,211,224,105,198, 73,235, 58,237,140,199, 15, 61,244,241,182,155,116, + 4, 73,154,249,100,226,238, 0, 65,235, 70,173,253,249,159,253, 45,114, 44,247, 54,165,142, 4, 96,116, 78, 38,158, 18,165,110, +107,115,223, 35, 95,125,179, 53,147,166,113, 72,109,151, 58, 3,105, 34,109, 50, 73, 77, 99, 15,127,241,116,211,182, 77, 51,105, +212, 72,130,208,122, 74,162, 25, 0,120, 74,250,203, 47,189,209,204,129, 14, 18, 4, 72, 20,219,148, 18, 9, 73,102,246,165,135, + 79,145, 73,114,176, 5, 32, 0,104,193,174, 77, 93, 50, 19,208, 72, 34, 41, 37,160, 97,114, 8, 0,157,201,220, 94,213,114, 53, +245,221,220,220,252,205, 55,223,108,198,173,173,173,221,107,119,255,253,247,191,227,123,222, 41,201, 72,154, 53, 77, 19, 11,247, +233, 79,127,250,179,127,242,199,101,237, 62,248, 19,130, 8,154, 25,141,198,246,245,111,120,230,240,161,245,253, 7,183,215,215, +142,124,255,187,127, 27, 64,115,250,244,253,158,220,229,146,110,191,237,177, 59, 95,127,102,255,254,245,185,249,206, 61,153,141, +223,240,250, 31,253,204,103,254,103, 59,233, 38,177, 44, 52, 91, 88,186, 56, 30,219,168, 85, 26,137,192,231,254,226,158, 46,141, + 63,241,207,127,177,237, 38, 19,210, 72,156, 60,121,126,188,147,148, 96,132, 75, 4,215, 54, 70,173,141, 5,180, 93, 74, 70, 55, +179,197,165,139,227,177,187,195,229,127,241,231,223, 1,140,154,102,226,173, 11,101, 89,228,190,114,101,225,224,161, 43,227, 29, + 59,115,230,222,166, 77,141, 65, 82, 94,187,148,146,209,101,246,236,179,199,151,150,174, 60,242,200, 93,102,157, 4, 52,121, 93, + 64,182, 41,185,140,148, 72,126,249,203,167, 72, 7, 64,118,137, 18,133, 68, 26, 91,247, 14,104,204, 12,128,148,204,152,146, 72, + 18, 78,154,211,221,133,111,214,139,195, 15, 63,249, 83, 31, 90,152, 95,136, 69,138,127, 12, 61,107,140,100, 99,205,175,254,234, +175,188,244,210, 75,215,190,208,207,252,236,207, 37, 79, 16,224,138,203, 18,160,145, 48, 26, 1, 90, 67, 51, 35,173,105, 26, 35, +155,166,161, 53,223,253,246, 63,127,251,119,253,183,225,133,218,205,205, 77, 64, 40,207,200,193, 11,196,137,227,231,111,189,253, +185,166,229,168,177,182,165,153, 89, 3, 51,166,100,159,254, 31,239,250,252,231,222,246, 91,191,245,155, 79, 60,254, 56,128,118, + 50, 30,215,135, 20, 65,210, 72,146, 75,139,235,119,221,115,198,140,227, 49, 90, 55,155,145, 53, 52,200,157,238,130,186,181,117, +238,108,111,191,239,125,255,160,105,154, 95,248,249,143,243,135,127,228, 71,242, 3, 17,140, 31,180,209,104,114,239,125, 95,134, +193,104,109,195,118,132,153,145,141, 70, 77,211,194, 72, 1, 18,254,244,179,111, 35,173, 49, 51,179,102,212,182, 41,117,136,165, + 4,104,128,104,244, 59,238,124,108, 60,150,153, 72, 36, 67,215,113, 50, 81,219,168,105,184,189, 61,255,149, 47,223, 75,163,113, + 66,154,155,153, 89,114,111,187,206,141,121,249, 76, 0,204,161,201, 36, 77, 38, 78,130, 76,102, 52,195, 35, 15,191, 41,117,251, + 66,225,204, 38,161, 49,217,112, 26,205,189,245,212, 9,164, 65,162, 59,205, 4,233,249,231,142,223,126,199,211, 18, 82,106,207, + 60,122,143, 25,105, 70,116,214, 24, 65,107,140,176,166,241, 68,107,104,108,104,230,109,215, 37, 35, 40, 3, 65,152,119, 50,179, +213,213,125,151, 46, 46,158, 61,123,179,212, 0,201, 29,102, 70,210,221,154,134,238,214,152,185,104,102, 34, 41,107,172,105, 83, + 74, 78,210, 69,194,204, 73, 75, 41,145,124,246,217,147, 0, 72, 39, 33, 81,130, 25,105, 82, 50, 51, 40,201, 96,146,100,141,193, + 9,182,201,147, 21,193, 9, 43, 24, 19, 31, 47, 51, 3,104,161,120, 48,130, 36, 40,201,140, 14,144, 2,129, 70,252,230,233,218, +183, 70,105,235,235,192,129, 3,251,247, 31, 0,176,179,179,189,178,178,178,185,185,249, 13, 92,232,142, 59,239,124,239,123,127, + 48, 75,102,249, 21,170,111,102, 77,211,172,172, 92,253,229,127,249, 75,175,116,161,143,124,244, 99,158, 60,219,195,172,253, 70, +100,255, 25,175, 38, 46,102, 77, 59,106, 63,252,115, 63,123,141, 11,125,232,167,127, 6,138,127, 2, 66, 91, 66,111, 65,128,108, +104,108,154,108, 70, 26, 51,154, 29, 59,246,242,250,250,151,126,234, 39,255,104,202,140,116, 93, 39,197,226,169,154, 17,177,142, + 72,163,198,143,220,120,113,121,121, 99,126, 97,188,184,184, 61, 55, 55,161, 53,228,220, 39,127,233,151, 63,250,145,159,157,186, + 16,212, 75, 65, 54, 34,116,130,102,120,240,173,255,167,109,217,182,108, 90,180,173, 53, 13, 83,162,161, 51,106, 50, 30,255,226, + 39,127,233, 99, 31,253, 72,150, 56, 79,201, 7, 47,185,228,146,187,212,189,249,129, 63,115,143,191, 11,162, 32, 57, 4,165,164, +228, 93,151,186,174,235, 62,249,201,127,145, 47,148,250,151,187,123,125,127,223,233,207,165,164, 46,197,215,228,138,105,148, 28, +158,212, 77,144,186,212, 77, 38,227,201,248, 3, 31,252, 32,128,214,229, 0, 8, 1,134,248, 41, 46, 31, 88,145, 82, 74, 20, 64, +192,146, 60,193, 27,101,255, 9, 64,146,146,187,161,235, 14, 31, 58, 76,176,185,247,222,123, 1,193,243,210,197,164,191,254, 13, +143,130,121, 13,138, 92, 9,160, 4,185,220,245,197, 47,220, 59, 30,143,234,204,190,243,123,191,183,149,187,226,220,176,253,110, + 4,132, 46,117, 52,139,167, 33,201, 49, 36,135, 53, 36,112,241,229,195,171,171,115,180, 20,207, 10,114, 60, 30,183, 82,156,234, +146,133,117, 3,149, 18,204, 36,193, 4, 52, 28,195, 91,209,221, 27,195,153, 71, 78,173,173,239,143,101,205,243,209,117,225,216, + 61,198,109,150, 28,164, 32, 67, 74,113, 39, 72, 8,129,119,199,185,179,175,121,249,229, 99, 70,144,137,164,137,162,178, 28,163, +107, 35, 26, 53,131,187, 1, 50, 35,220,221, 35, 4,176,152,213,149,203,203,207, 60,123,167, 25,105, 41,244,144, 70,185, 53,166, + 28,125, 2,173,146,195,232, 14, 32,145,230, 46,128,238,146, 8,200, 76, 79, 63,117,219,230,230, 50, 45, 73,164, 20, 6,214,100, + 48, 37,193, 20,106,175,214, 33,184, 19,102, 6,151, 83,164, 33, 37,146, 48,211,163,143,188,110, 60,158, 55, 38,201,104, 4, 41, + 37, 71, 3,115,138, 4,225, 4, 9,184,121,242, 8,133,220, 37,119, 64,238,190,185,177, 15,240,103,190,118,114,107,107,214,221, + 93, 2,228,146,220, 93,114,121,114,185, 43, 84,193, 61,201,213,220,125,247,221,202, 10, 27,113,171, 0,172,173, 46,202,121,233, +210,225, 28, 4, 0,146,178,216,130, 16,136, 48,211,170, 62,186, 13,253, 33, 41,208,165,248,210,120,220,158, 63,127, 83,118,206, +146,153,145,144,220,105,230, 14, 51,119,192,156,106, 76,249,213,186,156,180,124, 9,119,101,207, 1,119,207,102,128,116,119,154, + 81, 50, 72,150,227, 39, 9, 12, 99, 40, 73,222,202, 5,246,223,175,151, 40, 70, 42, 66,250,134,241, 21, 48,155, 63, 65, 12,173, + 98,136, 90, 43, 57, 64,130,238, 94,220,169, 23, 55,151, 67, 77, 41, 70,108,114,137,132,229, 47,185,212, 32, 39, 19,248,246,235, +255,201,207,214,215,109,183,221,126,247,221,119,223,122,251,237, 7, 15, 28,232,143,134, 93, 64,132,155,198,252,203, 86, 86, 86, + 30,127,252,177,175,124,229,203, 79, 61,245,212, 55,103, 64,139,139,139,239,125,239, 15, 30, 59,118, 60,156, 70, 9,152, 21, 58, + 80, 84,161, 88,222, 93,145,116,137,133,107, 72, 8,162, 29,141,126,255,119,127,247,243,159,255,156, 94,181,112,240,221,239,126, +247,221,119,159,114,207,114, 30,154,171, 61, 67, 38,217, 15,162,198,245,187,135, 20, 9, 71, 63,172, 50, 80, 51,179,174,235, 62, +245,169, 95,123,250,233, 23, 95,121, 64,237,237,119,188,110,103,103, 92,230,227, 26, 15,194,154,220,128,187, 70,131, 62,205,232, + 71,224,117,144,230, 70, 52,173,246,205,111,222,242,218,231, 15, 29,188,242,221,111, 63, 45, 52, 23, 47, 30,255,135,239,251,143, +219,219,219,215, 30, 80,234, 38,101, 16,125, 82, 51, 24, 13, 53, 53,160,169,197, 19, 48, 63,191,125,219,109,207, 44,239,191,218, + 54,176, 6,102, 48,210,154,152,169,136,142, 16, 51, 5, 89, 82, 50,216,194,252, 75, 15, 61,244, 79, 70,163,230, 55,126,227,223, + 63,249,228, 19,187, 7,212,165,116,109,237, 39,194,100,230, 73, 97, 89, 34, 8, 32,205,239,188,227,169, 67,135, 46,179,129,145, + 18, 60, 89,118,237, 6, 58,101,222, 68, 46, 2,164,206, 35, 99,128, 32, 35,141, 41,117, 66,250, 71, 63,252,195,109,219,254,250, +191,251,183,207, 62,251,236,112,134,186,235,137,187, 33, 28,178,209, 4, 15, 55, 73,128, 39, 79, 62,119,252,196, 57,107,144,156, + 4, 69, 81, 64,227,141, 91, 56,112, 25,195,116,210,225,113, 45, 23,195,240, 38,159,140,217,165,206,194, 49,186,255,216,143,255, +227,153,209,204,135, 63,156,131,190,230,244,253,247,103,203, 93,144,151, 60, 97, 66, 47, 88,245, 39,211, 93,119,253,213,129,131, + 87, 0,120, 53,248,168, 41,176,216, 39,141,156,214, 96,201,227, 6,122,225,185,227, 43, 87,151,161,254,149, 60,125,207, 59,222, +121,238,220,185,139, 23, 47, 54,247,221,119, 58, 32,145, 8, 54,228,249, 30,200, 49, 30,114, 16, 34,136,186,253,246, 39,230, 23, +214, 34, 36,137,152, 3,160,138, 83,205,254, 33,198, 39, 72,240,236,134,229, 14,119,184,107,109,125,225,209, 71,238,202,142,171, +222, 84,130,240,198, 55,190,201,140,173,187,135,176, 0,128,135,195,203,239, 68, 17,112, 17, 6,136,251,151, 86,150, 22, 86,228, + 76, 16, 9, 56,104,144, 68, 65, 78,153,187,152,220, 91,193,147,153,201,108, 74, 47, 37, 63,251,194,137,231,158,125, 45,152,168, +108, 32, 82,142,228, 21,136,211,119,125,247,219, 91,247, 4,130, 78, 69,174, 31,227,112,138,130, 74,148,224,128,236,224,225, 11, + 73, 82,151,179, 65, 51,193,225, 36, 13, 70,210,208,200,140,242, 4, 51,208, 96,150, 19, 34,137,231,206,158,120,254,249,155, 65, + 18, 94,236, 71, 86,194,252,166,224,109,109, 89,144,144, 2, 41,166,136, 66, 14, 48, 25,193, 52,169, 81,187,149, 82,120,127, 2, + 46, 49, 75,140,228,144, 53,225,231, 97, 70, 99, 2,217, 77,102,206,157, 61,121,233,242,141,144,129, 36, 20,234, 71,131,152, 51, +166, 28,176,229,140,150,148, 90, 79,174, 12, 34,193, 61,199, 81,200,177, 45,144,143, 16,150,146, 35,165, 42,222,138, 51,205,172, + 60, 33, 72, 31,167,209,133, 11, 55, 93,124,249,168,148,109, 17,160, 88,153,226,120,196, 64, 22, 40,131,121,196,179, 34,129, 88, +187, 54, 73,132, 67,161,225, 0, 92,158, 39, 90,101,198, 37, 82,216,222, 30,141, 70, 59, 17,214, 88, 36, 4,144,187,204,228,206, +151,206, 31,123,249,226,209,226, 78, 16,147, 20, 90,103,217,166, 91,224, 45,148,145, 9, 52, 32, 81, 22, 3, 97, 10,236,129, 45, +220,197,176, 25,202, 3, 85, 32,190,148, 59, 24, 33,176, 75,188,122,101,113,110,110,205, 12, 36,106, 92, 62,153, 52,207, 63,123, +235,230,214, 2, 64,179,156,126, 64,116,203,235, 77, 42, 5, 6, 28,169, 67, 34, 45, 81, 70,198,122, 36, 68,230, 96, 36, 72,183, +152,161, 88, 35, 18,238,234,103, 7,253, 1,146,186,178,178,124,248,200, 75, 77, 19,243,143,148,154,103,190,246,218,173,173,197, +200, 7, 4, 41, 85,247, 42, 36,154,133,137, 44, 56, 20, 74,204,130, 44, 33, 64,196, 4,197, 45,131, 52,180, 49, 13,164,220, 51, + 34, 25,191, 36, 65, 6,134,195, 21,192,241,164,189,244,242,161,195, 71, 46, 16,186,248,242,141, 47, 93, 56, 22,114, 67,196,132, + 1, 89,146,100,102,128,220, 73, 36,153, 1,146,211,152, 4, 35, 32, 7, 41,138,180, 36, 55, 3,100, 50,143,123,121, 43,169,168, + 12, 99, 58, 88,164, 71,112, 43,233,103, 60,195,249, 23,143,190,248,210, 17,228, 83,178,182,138,132,187,153,197, 91,137,201,195, +167, 24, 0,203,206, 35,188,138,195, 16,106, 42,196,236,184,131,116, 42,252,158,163,117,143, 5, 12,241,164,187,194,197,196, 83, + 38,247, 88,222,154,246, 73, 10,143,239, 69, 39, 3, 52, 9, 39, 96,102,146,147,160, 89,104,135, 36,193, 44,166,197, 4,183, 28, +245, 19,238,160, 85,207,162,200, 97, 91,149,201, 37,178,218,199,189, 7,201,135,163,204, 83, 22,147, 88, 24,149, 12,204, 29,229, + 38,145, 85, 72,121,178, 5,185, 44,223, 58,194,135,234,102, 66,198,179,110, 20,127, 9,180, 74,169,172,189, 65,217,186, 84,203, +185, 43,155,137,143, 53, 50, 75, 41,153,153,187,155,101, 72, 15,178,108,225, 64,129, 20, 97,249,158,161,178, 40,153, 97, 8, 39, + 11, 26,159,179,229,152, 33, 40,124,164, 27,203,146,169,207, 63,135,225,240,174, 35,197, 91,195, 29, 8, 87,211,191, 11,113,138, + 15,204,254, 22, 49, 39, 22, 46, 74, 78, 88,201,119,161,234, 71,191,253,250,246,235, 91,153,185,246,177,247,168,157,159,155,159, +153,153,217,183,111,110, 52,202, 80, 92,215, 77,182,183,119,118,118,182, 55, 54, 54, 82, 74,223,242, 1,141, 70,163,251,238, 59, +253,134,187,238,186,229, 53,183, 52,109,169, 56,138,176, 28,124, 71, 10, 24,153,170,164,167,159,126,250,209, 71,190,250,133, 47, +124, 97, 92, 10, 60,223,180, 1,125,223,223,125,247,169, 83,167, 70,237, 72, 21, 55, 46,201,216, 32,161,174, 9, 98,206,240, 1, + 52, 77, 67,227,120, 60,126,248,139, 95,252,131, 63,248,175,127,173, 1,181,109,123,234,212,169,119,189,235,251, 84, 45, 77, 65, +183, 48, 72,233,135, 25,254,116,102, 63,157,218,147,102,182,186,186,250,171,255,234, 87, 54, 54, 54,190,177, 1, 29, 60,120,240, + 93,239,122,215,241,227, 39, 35,134,197, 46,107,136,105,116, 97,250,231,117,199, 20,209, 41,208,180,205,133,151, 94,250,173,223, +252,205,203,151, 47,191,170, 1,125,224, 3, 31,152,155, 91,112,249, 84, 34,182,107, 2, 75, 2, 63,200,234, 7, 11, 22,254, 53, +215, 54,109, 26, 9,201,112, 77,211, 52,207,124,237, 43,191,254,235,255,233,235, 14,200,102,102,247,117, 93,231,238,157,119, 3, + 92,191,226,154, 30,112,167, 92, 73,174, 2,125, 42,197, 71,151, 39,185,123,242,242, 41,197, 23,147,123,138, 11,165,228,201,201, +173,191,247,158,237, 63,249,211,247, 44, 47,239,251, 58,213,250,183,190,245,193, 0, 97, 17,249,226,244,171,122,175,138, 70, 84, +204,102, 8, 78, 12,214, 55,231,141,225,194, 73,159,153,217, 57,114,244,165,187,238,122,100,118,223,182,164, 31,122,223,157, 47, +190,120,219,147, 79, 62,121, 93,251,226,238, 80,133,116, 53,165,118,202, 11,164,233, 67,195,183,225,150,231,231, 54, 23, 22,183, +150,150, 54,102,103, 38,163, 89, 31,181,221,104,148,102,102,211,204,204,164, 29,165, 40, 74, 22, 8,216,191,247,157, 15,222,126, +251, 29,255,230, 95,255,218,181, 7,164, 90, 61,239, 53,107, 10, 0,185,134, 23, 22, 20, 40, 13,252,248,177, 23, 79,156, 60, 63, + 59, 59,105, 90, 25, 13,166, 38, 36, 7, 96, 3,163, 1,114, 69,124, 99, 49,252,166,221, 58,113,252,196, 39, 62,241,139, 31,255, +248,199,174, 33, 67,185, 38, 52, 93, 27,218, 85, 39, 42,210,228,105,112,112,102,180,121,207, 27,191,124,243, 45, 95, 27,141,118, + 4,121,130,187,195,163,112, 41, 17,114, 38,119,137, 65,107,112, 36, 41, 73,221,104,180,149, 60,129,248,167,255,236, 19,215, 24, +144,114, 97,234, 21, 95,129,116,120,255, 97,113,113,229,212, 27,191, 50, 55,183, 17,193, 80, 65, 43, 42,136,192, 0, 27,114, 64, + 39, 65, 84,145, 83,160,147,123,196,187, 31,249,232,199,246, 12,232,122,227, 41,168, 71, 15,179,151,194,225,226,226,213, 59, 94, +247,152,217,196,229,114,148, 11,160, 72,123, 64,234,181,202, 68, 1,201,221, 29,114, 8, 73,234,234, 52, 47, 45, 46,189,255,199, +126,124,106, 64,215, 93, 41, 5,136,146,239,233,165,186,209,216,248,182,219,159, 48,166,228,242, 20,127, 65, 12, 75,187, 13, 42, + 60,229,255,145, 30, 39,119, 79,220,217, 25,185,203,227, 2,158,110,125,237,173, 15, 60,240,150,225,146, 93,103,122,188,174, 85, + 94, 16,151,128,116,203,173, 79, 53,205, 88,146,156, 46,121, 66, 62,193, 37, 7, 16,211,144, 77, 2, 35,153,207, 41,186,228,112, +215,230,230,172, 71,181, 39,165,120,208,247,252,192, 15,204,207,207, 15, 6,132, 93, 8, 26, 74, 45, 76,125,161, 80,144,176,188, +124,105,233,134,149, 82,195,114,136,249,183,211, 75,253,178, 18,109,242, 60, 3,217,132, 10,146, 82,194,230,198,190, 90, 78,141, +137,239,186,238,167, 62,244,211,101, 64,152, 22,155,236, 68,202,148,148, 63,187, 36,164,163, 55,157,143, 83, 92,144, 24,235, 25, +182, 89, 14, 87,145, 39,135, 59,178,104, 59, 80, 70,236,142,171, 87,151, 60, 46,157, 61,128,146, 59,164,217,217,217,183,188,229, + 59,166,100, 40,251,132,124, 90,118, 23, 85,235,229, 62, 63,183, 49,187,111, 83,130, 39,184,163,200,144,148, 24,112,157,135, 35, + 73, 97, 36,144,220,187, 20, 62, 68, 41, 10,107,174,175, 61,125, 11, 6, 94,201,139,159,145,235,239,191,231, 61, 36,219, 2, 81, +229,196,199,115, 2, 51, 0,136, 2,217, 19,246, 47, 95,166,164,114, 32, 50,109,115,186, 57,220, 8,209,123, 8,207, 36, 90,182, +167, 37,243,242,171, 43, 7,174,174, 46, 21, 37, 68,164, 68, 14,152,123, 2, 52,214,187,191,255,251, 91, 8,130,163, 36,189, 1, + 94, 1, 84,225, 23, 85,199,180,180,180,226, 81, 5,140,146, 27, 97, 78,207, 8,143,187, 27, 83, 31, 67,101, 52,180, 86, 34,132, +201,184,125,236,177, 59,242,101,195, 31, 57, 64,135, 81, 48, 72,130,191,229, 45,223,209, 66, 94, 92, 6, 75, 42, 89,252, 69, 92, +216, 36,161,109, 82, 51, 26,231, 42, 94,224,145,100, 98,198, 13,144,128, 70,112, 9,185,230,235, 25, 89, 51,194, 1,164,212,126, +245,175,238,222,217, 30, 1,110, 52, 88, 96,232, 38,129, 14,153, 26,119,167,165,148, 90, 15,240,192,233, 37,219,206,248,162,136, +200,208,157, 0,218,217, 49,233, 1,217,132, 9, 70,153,117,135, 96, 68, 10, 77,119,136,222,176, 81,172,159, 19,216,222,158,123, +236,204,235,183,182,231,153,231,196, 99, 73, 10, 92, 65, 56,220,140,112, 58, 91,197, 41,204,178, 3,201,115,160,234,238,117,150, + 56,106,199,114,193, 88,102, 40,123, 6, 51,193,233,168, 64,134,114,169,193, 8,192,197,151, 47, 28, 61,251,194, 73,247, 81, 64, + 13,185, 98, 49,116,226, 2, 77, 1, 83,137,108, 51,166, 24,227, 18, 11, 82, 45,151, 2, 0,130, 83,144, 53,147,129, 29,166, 59, +154, 38,103,245,102, 80, 2, 26, 71, 50,135, 26,137,134,228, 88, 89, 57,112,246,249,215,140,119,230,162, 54,162,126,200,176,128, + 94,170, 65,151,172, 8, 77,155, 45, 16,251, 80, 3,185, 26, 27, 71,242, 31, 73, 79, 25,113,132,228, 36, 83, 65, 53,131,248,228, + 9, 50,183,196, 9,176,182,186,124,238,236,205,219,219,243, 1,159, 0,153, 87,232, 37, 8,247, 56,194,252, 63,163,120,102,238, +222,122, 22, 95,167, 51,107,116, 6,119,242,170,197, 45, 61,213, 48,142, 5,128, 84,185,100, 84,208,165,196,181,245,197,179,103, +111,222,218, 94, 36,242, 80, 84, 10, 72,101,177,114,112,178,171, 20, 86,104, 37,106, 33, 40,132,168,192,194,129, 91, 35, 20, 52, + 36, 65,236,146,185, 98,154, 3,191,202, 50, 29, 81, 4,224, 59, 59,163,115, 47,156, 92,185,122, 40,170, 70, 96, 37,185, 76,229, + 20,130,108,122, 28, 86,140, 64,148,251,195, 48,106,176, 66, 33, 80, 10, 4, 44, 32,123,128,147,201, 40,206, 82, 33,176,196,194, +145, 76,201,183,183, 22,158,125,246,214,241,120, 95, 48,206,242,156, 40, 89,158,201,160,122,132, 62,208,115,166,146, 71,156,133, +217, 66, 11,188, 69, 65,126, 49, 20,111, 71,121,227, 1,252, 79, 38,173, 18,100, 94, 19,178,140,186, 38, 93, 94, 57,116,238,236, +205,174,166, 32,116,189,116, 56, 81,140,132, 50,226, 88, 16,222, 33,160,149,197, 2, 16,217,102,131, 92,141, 66,145,176,188,102, +129, 90,187, 38, 19, 27,119,237,104, 52,137,147,226,236,148,112,229,210,161,115,231, 79,230,213,201, 92,205,140,207,149,196,132, +153,186,107,232,147, 62,230,149, 71,134,208,122,237,109, 3,107,206,163,201, 86, 59,202, 41,128,101, 48, 63, 8,213, 59, 59, 51, +109, 59,169, 53,123, 64,151, 95, 62,116,238,197, 19,129,178,102,254, 80, 84, 18, 97,130, 12,245, 61,242,161,140,189,154, 73,178, +112, 2,206,176,213,144, 96, 25,232,204, 97, 24,228, 53, 12, 26,148, 18, 51, 28, 41,108,110,204,245, 1,182,116,249,242,129, 23, +206,157, 8,203, 20,174, 27,146, 23,182, 77, 84,247, 74, 73, 16,168, 49,132, 4,149,104,202,107,120,227, 30,166, 70, 50, 40, 80, +248,248, 29,194,238, 21,208, 12, 69, 10,206,206,250,250, 66,160,252,146, 54,214,231,207,190,112, 60, 22,160,112, 72, 2,106,206, +105, 85,133, 8, 34,228,243,105,200, 84,152,170, 37,246,228,152, 76, 98, 21,242, 87,138,210,171,255, 88,164, 88,218,218,220,215, + 77, 26,119, 77,118,218, 23, 94, 56,153, 82,227, 57,102, 85, 69,183, 75,117, 52,207,142,231, 31, 57, 36, 70,189,125,120,192,202, + 94, 40,149, 94,186, 55,119,223,125,119, 1, 61, 56,149,185,230,148, 53, 43,148, 36,151, 37, 55, 72,231, 95, 60,190,181, 53,151, + 75,102, 69,166,128,222,102, 68, 48,147, 47,145,143,177, 74,124, 1,206, 57,164, 77,176, 92,165, 85,248, 64,230, 39, 37, 16, 53, +134, 82,148,129, 42,218, 14, 94,190,124,232,242,229,131, 40,148, 87,101,149,246, 98,156, 2,230, 14,206, 30, 45,164,156,153, 9, + 37, 25,227, 30, 81, 64,161, 23, 80, 93, 46, 55, 88, 32, 78, 38,215,112,205, 60,207,191,134, 75,150, 3,190, 28,165, 10,211,197, +243,154,249,196, 59, 47, 50,229,142,190,194,237, 83,186,130, 26,120, 85,186, 87,184,125,151,213,154,120,176,186,170, 32, 74,125, +121, 37,131, 50,253,226,160, 10, 89,172,127, 63,110,120,113, 83,222,123, 40, 40, 34,208, 72,207,132,162, 97,170,238,187,230,162, +200, 60, 49,213,135,233,181,204,195, 92,214,242, 84,166, 18,198,249, 69,219, 89, 13,124, 49, 17,229,169,144, 11, 95,145,169, 57, +242, 80,156, 10, 71,215,231,198,168,137,156, 36,171,143, 18, 15, 25, 90, 86,150,204,251,144,165,228, 38, 37, 27,208,160, 30,194, +242, 12, 57,188,139,177,245, 92,200, 28,208,213,146, 59,250,180, 59,236, 31,188,180,179,208, 84, 20,180,136, 78,240, 28, 85,133, + 35, 38,169, 18,132,194, 44, 97,247, 92,230,239,214, 55,138, 55, 89, 30, 6,179, 5, 22,122, 93, 15, 0, 81, 44,243,164,200, 92, +123,209, 25,216, 52,148,193, 97,119,158,189,103, 52,152,134, 38,149, 35,188,106,232,131, 26, 88,171,111,121, 25, 7, 67, 82, 77, +153, 45,166, 44,155,227,162,101, 67,155,139,222, 88,151,162,243,148, 53, 47, 81, 91,141,177,138, 12,168,136,181,215,133,202,202, + 51,192,155, 81,197, 40,175,161,161,103,196,176,146, 61, 7,224,162,170, 80,103,173,118, 31, 50, 29, 75,189,204,217,135,220, 89, +192,195, 42, 10, 34, 60,142,149,124, 75,117, 40,194,110,192,240,219,175,111,191,190,253,250,246,235,111, 66,189,245,149, 46, 65, + 46, 46, 45,221,176,180,180,176,176,184,188,127,249,224,129,131,203,251,247, 47,223,112,195,252,194,226,194,194,220,204,204, 44, + 11,147,169,148,221,166,138, 22, 93,215,109,109,109,174,174,173,174,173,173, 95,184,240,210,250,218,250,213,213,171,107,171,171, + 43, 43, 43,107,107,107,127,243, 38,104,126,126,254,142, 59, 95,119,226,196,137,163, 71,142, 44, 47,239,159, 95,152,111,219,118, +208, 94,178,235,234,220,123,147,105, 42,237,160,149,176, 86, 79, 7,175,174,235, 54, 55, 54,175,174, 94, 61,119,238,236,227,143, + 61,246,196,227,143,119,223,164,202,247, 55,109,130,142, 28, 57,114,250,254,251,239,185,231, 77,179,179, 51,170,196,146, 87,115, + 93, 21, 16,191,199,165, 88,138,107, 42,212,236, 12, 27, 98, 80, 44, 29, 22,116,115, 47,103,161,177, 10,138,174,174,231,158,123, +246,127,125,230, 51,103,206, 60, 58,136,155,255,191, 76,208,226,226,226,209,163, 71,223,248,198, 55,221,113,199,157,214, 54, 70, +147,124, 74, 64,116, 13,206, 53,175, 41, 52,228,174, 18,242,224,227, 30, 14,253,222,159,211, 93,115,145, 28,245,132,223,202, 21, + 48,187,114,229,202, 31,255,239, 63, 58,115,230,204,165, 75,151,190, 37, 19,116,228,200,145, 83,167, 78,221,122,235,173, 71,142, + 30,205,141, 75,210,244,164,232,149,163, 38, 14, 13,210,192,210, 12,143, 79, 25, 31, 92,131,214,127, 77, 50,192,215, 59,200,204, +231,162, 89, 99, 0,159,123,246,153,207,127,238,115, 95,124,248,225,174,155,124,115, 38,232,161,135, 30,218, 25, 79,122, 34,247, +174, 56, 93,175, 46,158,156, 18, 24,114,239,193,107,156,182,139,182,241, 10,162,180,139,186, 48, 84,195,170,125,133, 36, 8,142, + 70,233,232,177, 11, 55,220,240,252,239,252,246, 35,255,229, 63,159,249,235, 78,208,135,126,250,103, 52,100,186, 95, 87, 94,246, + 88,158, 33, 77,102,122, 94, 6, 7,247,138,210,180, 18,238,225,181,244, 84,240, 93, 76,142,235,107, 98,136,149,153,239,155,219, +185,241,240,165, 35, 71, 47,204,205,109,211, 12, 50,107,108,125, 13, 31,127,232, 75, 95,248,194,243,195,108,247,213,191,218, 76, +135,218,213, 90,114,173,110, 10,237,178, 88,202,156,166, 30,117, 0,185,247, 60,101, 10,101,197, 53, 50,243, 64, 5,148, 14,212, + 93,125,137,133, 20, 12,134,220, 65, 78,147, 17,102, 50, 19, 77,141,201,168,118,148,218,153,110,166,157,204,204, 78,230,230,182, +227,127, 59,138, 61, 34,172,228, 95,201, 19,231,230,155,159,255,133,191,243,228,147,175,255,203, 47, 61,246,135,127,248,223,191, + 81, 59, 53,160, 87,224,186, 61,102,122, 5,205,210,158, 79,195,131,186,230, 81,212,142, 59, 33, 86,126,123,113,113, 99,105,105, +125,110,110,123,102,118,220,142, 82,219,120,211,120, 76, 13, 1, 35, 96,160,129, 65,191,204, 4,231,218,245, 82, 84, 49,216,224, + 72,170, 76, 86, 18,210,104,180, 97,182,249,134,187,238, 62,117,207,169,213,213,181,223,251,221,223,121,226,137,199, 95,181, 4, +101,176, 82,195,135,220,243,212,218, 27,224,228,166,134,232, 34, 8, 48, 81, 83,187, 18, 12,182, 76, 24,124, 37,215, 92,104, 77, +183,188,124,245,200,145,139, 75, 55,172,141, 70, 29, 41, 51,128,104,162, 27,209,130,190, 93,104,170,102, 65,145,160,130, 88,155, +231,151,164,213, 82, 67, 80,172,163,104,161,204,255, 23, 8, 87,211,108,207,140,182, 54,214,231, 33, 44,204,207,253,232,143,190, +223,165, 79,125,234, 63, 60,249,196, 19,175, 74,130,246, 72,202,117, 18,254, 61, 44,157, 66, 26,210,148, 90,245,245,218, 93,202, + 25,242,162,133,133,245, 35,135, 95, 94, 62,180, 50, 59, 59,102,113, 77,202, 72, 13, 83, 52,135, 68, 65,153, 8,202,174, 43,207, +151, 35,100,138,114,132, 77, 78,185,102,150, 11, 23,174,194, 76,142, 98, 73,198, 55, 58,107,118, 2,208, 33, 41, 79, 36,223,255, +254, 31,219,216,216,248,253,223,251,189, 51,103, 30,125, 37,142, 87,101,126, 76, 27, 97, 93, 59, 38,158, 62,179, 55,183,234, 79, + 24, 58,244,193,223, 65,106,113,113,237,228,205,207, 29, 63,249,194,226, 13,235, 77,147, 66,245, 6,174, 51, 46,100, 5, 31,207, +237, 78, 54,236,173,235,187, 8,242,189, 74,235, 73,174,169, 85, 62, 78, 6,189, 8, 64,201,237,202,149,253,235,235,139,195,231, +242,228,163,209,232,244,233,251,239, 62,117,234,169, 39,159,220,187, 15, 77,158,160, 55, 63,240,128, 48,132,142,116, 29,155, 51, +245,167, 74,246,212,215,141,199, 5, 65,243,115, 27, 55,223,252,252,137, 19, 47,204, 45,108,152, 13, 5, 47, 58, 9, 88,120, 47, +181,139, 78, 28,120,195,210,160, 83, 92, 34,251,205, 41, 88,119, 79, 97,229, 77, 72,125,157,152, 16, 38, 93,123,233,226,161,141, +141,121, 12,220,116, 41,232,248,210,210, 13,127,251,109,111, 91, 92, 88,122,236,177,107,196, 4,205,253,247,191,249,235, 51,188, + 6, 29,157, 5,211,155,170,146, 76,253,125, 80,214,145, 96,150, 14, 29,184,116,243,107,158, 95, 92, 94, 45,197,179,178,224,185, + 63, 43,170,135,236,169,242,196, 32, 18, 64,109,149,171,147, 55,152,142,126,225,242,172, 56, 49,232,180,143, 27,237,108,207,188, +244,226,209,157,237,125,125, 92,151, 75,184,253, 3,156, 56,113,226, 29,239,248,158, 71, 30,249,234,250,250,250,174, 9,186,255, +213, 38, 35,197, 17, 21,149,138, 54,237,162,108,131,174,220, 82,217,193,204,104,251,166, 99,231,143, 29, 59, 63,154,217,137, 83, +170, 66, 21, 62, 77,111,164,138,214,228, 66, 81,105,210,201, 21, 24, 98,224, 0,202, 54, 23,152, 6,160,243, 20,105, 88,178, 3, + 18,174, 92,222,255,226,139, 55,185,219,174,147, 75,201,171, 87,153, 7,223,250,157,115,243,243,177,169, 78, 47, 65,215,115,237, + 28,218,163,129,105, 17, 6, 45, 16,187,213,171,132, 59,194,236,204,206,177,155,206, 31, 58,124,209,154,174, 84,105, 11, 97, 79, + 53,238,225,192,196, 15,219,102,167, 53,167,244,208,214,150,180,216,190,193, 43, 39, 13, 8,193,169, 27,150,196,141,220, 53,233, + 70,207,191,112,243,250,218, 98, 38, 11, 13, 59, 62, 6, 31, 75,245, 31,183,188,230,150,215,188,230,150,167,158,122, 50, 56,233, +205,125,247,157,190,150, 54,169,215, 37,214,245, 40,157,254, 3,109, 66, 22,165,202, 89,204,218, 53, 26, 77,110,188,241,229,131, +135, 47,133, 49, 86,222,158, 38,138,103,121,134,226,187,170,225,102,189,222, 32,118, 66,127, 76,189, 81,175, 10,165, 97, 13,130, +125,109,161,108,225,144,220,158,127,254,228, 75, 47,222,164,178,241, 66, 29, 35,123, 29,211,128, 60, 12,119, 63,124,248,240, 61, +247,220,243,232,163,143,110,111,111, 55,247,221,119,122,151, 54,105,202, 65,245,189,147, 44, 27, 32,212, 53,166,122,242, 1, 7, +124, 93,179,180,127,121,229,240,145, 11,163,153,113,126, 10, 14,116, 64,153, 83,161, 50, 77,253, 61,250, 13,103,178,178,229,185, + 25, 54,254,102, 25,100, 45, 68, 40,183,207, 70,177,139,117,214, 82,215,156, 63,119,236,236, 11, 39,220,219,222,195,104, 24,198, + 78,177,215,203, 52, 81,210,220,220,220, 91, 31,124,240, 75, 15, 63,220,156, 62,125,223,180,103,175,225,222,192,162,228,193,150, + 29,187, 6,188,105, 85, 66, 3,170, 37,213,190,125, 91, 55, 30,190, 48, 63,191,153,249,220,177,135, 71,221, 92,162, 92, 43,134, + 50, 29,106,103, 29,210,160, 54, 84,181, 72,197,250,214, 10,186,132,235,120, 20,108,111,237,251,218, 51,183,156, 59,119, 60,229, +217,153,182, 31,211, 76,193,169, 50, 84,185, 42,141, 15,190,245, 59, 91,185, 52, 21,232,212,241, 23,102,111,212,246,195, 76, 6, +195, 41,102, 81,238, 12,242, 25, 74, 91, 27, 73,153,165,249,249,245,217,185,205, 82,145, 84,223,138, 82, 74,244, 46, 49,111,160, + 66,243,184,151, 44, 64, 52,115,166,192,104,229,177,213,134,101, 2,165, 49,183,145,246,105, 6,175,145, 18,117, 93,115,233,226, +225,115,103,143,111,239,204,149,176,106, 15, 7,189,200,123,105,105,171,237,194,181,169, 91, 46, 88, 99,173, 52, 37,188,131,182, +239, 92,127,172,129, 85,175,130,213, 48,230,210,110,233,165, 70,108, 35, 51,153,159, 95,107,155, 73,207,148, 40,115,111,166,126, +181, 60, 11, 75, 42, 76, 38, 55, 64,110,193, 40, 40,101,227,224,119,132,163,151,169,196, 64,153, 48, 57,148, 5,129,105,210, 94, + 94, 57,112,225,197,155,214, 55,150, 74,123,161,188,154,127,245, 65,169,114,239,119, 25, 61, 88,113,206,190, 89, 27,142,132, 54, +183,127, 86,199,148,203,195,136, 94,207, 65,219, 30, 21, 76, 74, 15, 98,157, 74,154,148,121, 62, 44,172,132,182, 29,143,102,130, + 87, 93, 49, 9,175,156,194,190,227, 1,153,143,136,146,204, 71, 19,114,148, 68, 45,199,203, 42,192,172,140,240, 76, 11,172,172, +144, 82,199, 79,205,230,198,194,197,139, 55, 94,185,114, 96, 50,153,201, 67,239,249,177,188, 86,232,203,222,230,244,122, 87, 92, +106, 37, 32, 26,218,202,172,203, 9,103,232, 66,144, 38, 11,134,156,165,163,231,235, 85,153,130, 42,223, 50,214,216,124,212,142, +205,146, 15,146,143,194,203,200,150,151,185, 48,158, 27,192,251, 0, 56,139,183, 7, 61, 14,140,142,125,193,138, 15,200,115,147, + 73, 87,221,100,102,117,117,105,229,202,129,245,141,165,201,100,148, 89,125,187, 16,115, 94, 15,139,208,222,220, 50,211,139, 43, + 4, 35, 25, 24, 18,132,216, 68, 78,213, 72,136,154,186,194, 0, 46,202,209,112,213,203, 41, 6,171, 75,100, 2, 82,225,120,244, + 33, 71,105,141,173, 88,169, 23, 38, 47, 51, 11, 40,247,234,147, 68,217,161,169,242, 44, 51,115,174, 75,163,173,141,197,213,171, +203,171,107, 55,236,140,103,161, 6,125,104,224,152, 34, 69, 23, 14, 99, 13,174,122,205,154,254,151,125, 5,123, 90,104,105,194, +150,167, 54, 58, 9,178,164,135,155, 64, 15, 51,136, 94, 29, 79,161,196,130,193,206,157,138,247, 75, 86,149, 55, 53, 83,105, 33, + 71,109,239,174,100,235,154,239, 3, 85,137,234,249,101,166, 19, 4,209, 32,183,174, 27,109,109, 44,172,173, 45,109,108, 44,237, +108,239, 75,222, 84,172, 21,185, 21,190,239,255,185,150,108,244,150,243,154,248, 85,159, 30, 84, 26,229,128,125,212,102,115,238, +133, 98, 95,194,165, 26,155,170,238, 23, 17, 54,105, 10, 16,116, 12,167, 15,112,209, 19,221, 89,152,199, 40,107, 83, 98,136,158, +137,150, 5,174, 80, 70, 84,152, 98, 33,113, 54, 30,207,174,173, 46,175,174, 46,111,109,205,167,212, 14, 64, 86, 13,170, 79,123, +227,248,222, 26, 86,186,104,222,135,131, 61,191,109,119,245,106, 15,145, 59, 79, 83,211,180,240, 48,187, 44,168,151, 19,168,205, + 7,197,128,171, 82, 97,213, 67,167,153, 39, 87, 73, 49, 33,149,169,179,201,196,154, 81,159, 39, 4,205, 59,247, 25, 20,250, 51, +251, 29, 17,242,118, 7, 16,146, 48,153,204,172,174, 46,175, 92, 57,184,189, 61,231,110, 5,117, 86,225,163, 98,232,148,119,187, +238,168,191,197, 32,153, 13,133, 25, 10, 99,170,236, 60,233,133,233, 26,116,236,210,216, 96, 25,103, 24, 0,200, 41,181,234, 57, +138,232, 27,109,166, 2,139, 98, 77,250,196,110,176, 75,227,128, 57, 29,246,120,103, 50,154, 76,218,125,249,162,213, 8, 49,194, +188,186, 11, 72,217,159,163,162, 51,205,198,198,194,149,149,131,235,107, 75, 41,141,106, 74, 55,104,170, 43, 91,230,105,136,129, +215, 13, 2, 67,201, 61,118, 68,170,180, 35,148, 77,123, 81,187,244,197,186, 74,145, 35,213,112,200,229,165, 5,164, 15,176, 90, + 71,133, 48, 93,189,235,170,198,181,158, 94,165,164, 28, 41,183,173,153, 13,115,156,214,238,108,207, 46, 44,172, 91,211,155,169, + 74, 81, 85, 33,137,123,110, 94, 65,234,154,213,213,229, 43, 87, 14,110,109, 45,184, 71,187,105,201,104, 80,226,139,188, 69,237, + 32,179, 44,187, 48, 84, 46, 85,153,152,169, 32, 57,147, 83, 75, 83, 65,133,238,250,185,221, 91, 41,102,239,135, 4,148, 36,197, +235,230,135,197,124,248,174, 78, 72, 47,188,238,190,183,193, 33, 78,151, 79, 37,165,196,141,141,185,133,197,153,217,125,219,232, + 79, 24,226,141, 81, 40,224,100,220,174,174, 46, 95,185,114,104,123,107, 78,176, 2, 13,102,102, 98,111,146, 88,218,118,114,124, + 86,102,198, 7, 32, 82,198,197, 89,211,197, 42, 73,177,239, 80,142, 30,234,108,230,188,169,112,223,175, 83, 78, 39,208,150,202, +242,180,113, 87, 73,226,243,151,171, 31,204,168,110, 78, 80,138,115, 34,250,118,191,148,184,181,189,111,107,123,118, 52, 19,219, +146,107, 32,126,153, 67,155, 82,187,182,186,124,241,226,225,237,237,125,213,235,103,153,234, 97,176, 32,216, 87, 95, 62,247, 29, + 89, 0, 0, 4,103, 73, 68, 65, 84,147,239, 68, 13, 87, 42,111,200,212,231,117, 25, 79,202,156,219,210,160, 17,141, 23, 17,251, + 70,252,144,191, 68, 71, 52,135,244,113,101,237,122, 34, 64,182, 37,210, 43, 65, 2,228, 62,160, 20,132,215, 30,250,243,194,192, +237,247,115, 84,109, 77,202, 71,199,227,209,198,250,194,252,252,230,104, 52, 46,156,101, 47, 94,204,214,215, 23, 47, 95, 58,180, +177,190,232,170, 82,195,190,199, 73, 94,195,129,220,173,225,117, 7,224,114,119, 86,210, 50,167, 70, 69, 40,228, 42,199,113,225, +117, 98, 27, 30,213,108, 25,101,127,201,204,121, 21, 7, 40, 59,106,155, 68,172,103, 59,132,156,171, 90, 21,187, 49,192,121, 57, +216, 8, 6, 85, 77,134,181, 81, 84, 10, 46,201,141,245,185,249,249,185,165, 27, 58,179,222,217,143,199,179, 87, 46, 29, 88,185, +122,160,235,218,129,187, 80,191, 9, 74,217,190,165,234, 87,109,128,168,155,175,228,111,168, 98, 73, 67,238,123,207,241, 29,164, + 4, 89,112, 48,220,240,196,203, 30,161,170, 37,135, 34, 94,101,215,182, 24, 68, 59, 69,183,141,199,151, 15, 63, 50,243, 77, 69, +214,118, 42,159, 14,255,122,242,105,209, 64,236,236,204, 94, 93, 89,110,218,110,110,110,139, 84, 74,163,141,245,133, 75,151, 14, +109,109,205,215,148, 48,179,134,107, 93,162,108,222,131,126,151,207,193, 78, 48, 28, 52, 37, 69, 93,144, 86,244,146,213, 89,169, +148, 16,163, 91,174,198,134,158,205, 87,217, 7, 44, 82,185,176,188,189, 57,203, 96,208, 48,142,108, 81,207,171,201,106, 9,112, +122,226, 51,114, 58,237,131, 20,171, 44,178, 15,189, 98, 53,173, 73,182,178,122,195,250,198,252,104, 52, 49,250,164, 27,149,116, +105,104,167,203,166,229,234,247,156, 26,200,109, 47,179,101, 87,157,188,153, 82,110, 85,200,253, 65, 83,252,228, 10,164, 21,138, + 74,197,106, 51,200,147, 63, 69, 99, 39,138, 33,231,148,191,239,131, 64,160,205,101,201, 92,170,244,234,194, 49,220,144,175, 40, + 15, 89,107,234,253,196,144,123, 16, 94,102,111,210,117,109,215,181, 3,128, 93,213,205, 23, 1,156,202,249,134, 51, 50,168,204, +160,223,224, 44, 47,218,112, 58,250,202, 88,191, 65, 91,126,186, 48,210, 97,133, 43, 40, 17, 5,204, 2,206,213, 93,155,140,112, +200, 6,233, 25,137, 65,155, 91,222, 47,180,224, 60,158,219,116, 80,197,164, 90,101,247,218, 28, 49, 32,153, 87, 9,226,148, 69, + 31,246, 14, 12,133, 55, 31, 67,191, 22, 61, 31,188,146,198,170, 71, 80,101, 16,168, 86,130,189,239, 72,202, 16,116,105, 98,240, +210, 56, 18, 93, 79, 94, 64,117, 85,192, 85, 24, 66,212, 40, 8, 54,119,111,228, 8, 21, 27,164, 62,190,173,205,125, 57,155,241, +221,187, 66, 85, 35,202,193, 3,104,239,202, 79, 23, 13,114, 40,144,187,211, 6, 6, 94,197, 14, 85, 91, 86,206, 41,130,168, 97, + 99, 29,106,175,157, 13,122,239, 50, 83, 97,208, 41,227,101, 11, 66,102,180,170, 48, 62,152,253,181, 77, 51,254, 65, 70, 79, 86, +117,243,225,200,218, 60,146, 58, 71,165, 91,181,191,109,201, 75,166,173,131,166, 42,191,154,138,119,246,176, 96,167, 38,108,152, +116, 14,171,163, 53, 71, 27,168,118,222, 92,109, 24, 65,123,169, 22, 13, 12,101, 69, 30,250,142, 93, 14,246,108, 6,122, 16, 48, + 3,149,209, 74, 62,149,153, 42,182, 34, 45,179,147,115, 27,243,126, 22,179, 24, 23, 11, 51,236, 36,241,129,140,212, 22,160,190, +217,101, 56, 19,211,155, 67,100,221,169, 90,179,107, 66,209, 43,201,112, 16,172,157, 19, 28,180,101,213, 47,201, 75,251,142,250, + 86,151,108,123, 7,237, 40, 67, 58,134, 6, 70, 85,136,198,234, 82, 49,170, 59,168, 12, 48,252,138,228, 91,193,240,189,180, 29, +106,208,104, 51,236,176,193,180,117,216,245, 81,195, 46,156,225, 14, 28,187, 97, 25,105,216, 16, 88,155,171,234, 22,146, 3, 21, + 28, 52,173,101, 43, 88,192,244, 26, 89, 99,112,114,233,166,244, 65, 65, 28,253, 46, 36, 25,232,201, 7,157, 61, 55, 32,171,164, +247, 38,170,230, 5, 82,219, 3,129,125,159, 87, 5,119,250, 60,184,166, 2,117,180,149,129, 90, 31,152,123, 88,138,195,121,153, + 78,146, 49, 8,118,170,159,231,148, 35,171, 33, 78,209,166,108, 12,242,223,204, 6, 59, 51,100,197, 43,123, 96,202, 75,200,232, + 44,101, 13, 49,239, 62, 26,118, 52,123,172,156,197,229,221, 91,221,242, 65, 86,204,172,237,239, 90, 58,148,243,186,168,175,135, +228,251,151,197, 29,198, 41,187, 56,131,123,119,248,219, 53, 95, 67, 75, 52,180,121,131,202, 63,135,117, 26, 47, 86, 8, 83,219, + 12,129,125, 31,123,223,242,148,183,253,239,243,241, 72, 52,172,135,137,132, 10,216, 13,206, 41,225, 79,222,227,162, 79,143,115, +135, 64,237,187,202,122,239,185,169,110,215, 19,198,158,191, 67,137, 24,206,203,208, 24,237, 98,203, 15,191, 50,252, 86,153,223, +124, 1,105,154,234,152,125,123, 45,154,199, 73,125,122,194,254, 75,131,125,104,114, 64,153,153, 21, 37, 20,232,107,206,220,179, +239,120,245,252,224, 52,179, 87,146,251,255, 5, 5, 25,118,136, 86,164,160,133, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/vertexdraw.png.c b/source/blender/editors/datafiles/vertexdraw.png.c new file mode 100644 index 00000000000..65977d10d99 --- /dev/null +++ b/source/blender/editors/datafiles/vertexdraw.png.c @@ -0,0 +1,327 @@ +/* DataToC output of file <vertexdraw_png> */ + +int datatoc_vertexdraw_png_size= 10253; +char datatoc_vertexdraw_png[]= { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, + 72, 68, 82, 0, 0, 0, 96, 0, 0, 0, 96, 8, 2, 0, 0, 1, 26,253,208,249, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,143, + 11,252, 97, 5, 0, 0, 0, 6, 98, 75, 71, 68, 0, 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, + 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 7,116, 73, 77, 69, 7,218, 7, 21, 0, 4, 18, 61, 67, 90, 24, 0, 0, + 32, 0, 73, 68, 65, 84,120,218,237,125,105,176,101,215, 85,222,247,173,125,238,189,111,236,225,169,213,173,209,178, 60,202,150, + 44,100, 97, 25, 12,132, 36,101,187,138, 24, 76, 2, 21,243,131, 84, 2, 4,200,143, 36, 54, 96, 6,131,141, 73, 42, 6,131,147, +144, 98,168, 2, 42,144, 64, 8, 73, 5,108,170, 24,138, 64,254, 0, 33,102, 50,120, 32,128, 53, 11, 73,150, 90,234,185,251,141, +247,158,179,247,250,242, 99,239,125,206,185,175, 91,182, 12, 38, 85, 84,249,232,245,235,115, 79,223,123,238, 62,107,175,189,134, +111,125,107, 11,248,116,143, 27,110,188,241,246,219, 95,116,245,117, 2,120,199,119,190, 51,165, 72,192,204,104,214, 52,205,164, +105,154,201,228, 93,239,252,174,252,166,230,109,223,244,205,251,251,123,128,140, 70, 51,163, 29, 93, 59,119,244, 72,187,117,100, +255,220,199,110,190,251,239,233,153,103, 78, 55,109,187,128, 0,192,130, 25,237,107,190,236,231,214, 39,190,126, 52,204, 38,112, +226,173,255,242,159,255,171,127,253,190,166,235, 58,230, 47,246,240,166, 47,248, 95,237,194, 27,195, 74,244, 22,166, 78,187,123, +120,215,187,190,187,137, 93, 36, 72,146,166,149,112,249, 96,145, 71,170, 73,240,143, 62,122,111,215,117,146, 55, 41, 69, 18,128, +209,173, 75, 73, 11,200,121,229,242,230, 99,103, 94,254,224, 83,119,133,208, 66, 77, 19, 83, 52,144, 38, 82, 93, 84,234,120,255, +227, 47,253,248, 19,175, 14, 33,132, 16, 37, 65,104, 60, 37,209, 12, 0,180,187, 63,253,179, 71, 63,231,217,139,183,134, 16, 33, + 65,128, 68,177, 73, 41,145,144,100,102,255,243,119,223, 72,154, 89, 4, 27, 32, 63,116, 3,198, 38,197,100, 38, 32, 72, 34, 41, + 37, 32, 48, 57, 4,128,206,100,110,207,107,186, 66,127,182,186,186,118,235,173,183,154,241,224,224,224,240,220,221,123,239,189, +175,127,195, 27, 37, 25, 73,179, 16, 66,158,184,223,248,141, 95,255,221, 15,126,176,188,233,109,111,251, 38, 65, 68,158, 55,110, +172, 45,182, 54, 15,142,108,182, 47,190,229,169, 87,188,232,201, 83,119, 61, 6,160,105,219, 22, 64,158,220,207,127,229,135,238, +126,241, 67,235, 27, 88, 93, 51, 2,161,211,123,222,243,189,239,126,247,119, 55, 93,236,242,180, 76,154,116,251,205,247,207,163, + 77, 34,167, 9, 18,158, 56,119,115,219,182,223,251,125,239,109, 98,215,145, 70,226,182, 27,159,152,239, 33,206, 64, 66, 93,106, +125,229,151,127,231, 13, 80, 43,160,137, 41, 25,221,204,166,182, 51,159, 35, 72,109, 27, 30,217,185,229, 79, 30,126,205,188, 69, +104, 58,161, 78,139,220, 23, 45,218, 14, 93, 55,251,131, 63,255,226,221,249, 86,176,209,220,165,148,140, 46,179, 51, 23,183, 94, +118,139,126,237, 15,222, 0, 76, 66, 72, 8,101, 94, 64,134, 59,238,120, 5, 0, 73,251,243,213, 7,158,188,195,157, 36, 72,129, + 16, 65,144,198,198, 61, 2,193,204, 0, 72,201,140, 41,137, 36,225,164, 57,221, 93,248, 76, 29, 28,191,248,230,111,121,251,250, +218,186,202, 88,202,120,140,102,193, 72, 6, 11, 63,242, 35, 63,116,230,204,153,107,223,232,219,190,253, 59,146, 39, 8,112,229, +219, 18,160,145, 48, 26, 1, 90,160,153,145, 12, 33, 24,205, 66, 48,179,151,223,246,196, 87,253,227,255, 56,190, 81,179,191,191, + 15, 8,245, 25, 57, 58, 64,220,113,219, 35,119,220,246,240,137,173,203,235,211,110, 26,212, 24, 44, 32, 24, 56, 11,231, 63,118, +234, 39,127,253, 95,252,231,159,254,185,135, 31,122, 8, 64,211,181,109,255,144, 34,152,213,129,124,209, 77,143,127,225, 61,191, +215, 72, 97,106, 74,136, 98, 8,102, 13, 28,136, 0,119, 83, 10,182,191,159,190,250,171,255, 81, 8,225,123,222,253,221,225,238, +207,185, 91,238,238,114,185,242, 47,225,250, 99,207,190,230, 21,127, 96, 49, 38,154, 28, 2, 33, 73, 76, 9, 49,201,231,126,208, + 77,126,245,131, 95,114,121,119, 67,238,238,254,119, 95,255,250, 38,165,136, 60,149, 0, 13, 16, 73, 63,178,122, 78,222,206, 35, + 77, 48, 67,211,169, 93, 96, 18, 92, 12, 59,243,227,159, 56,243,130,199,159,125,209,238,254, 49,178,115, 51, 51, 75,238, 77,140, +110, 44,211,103, 2, 96, 0,132, 69,156, 59, 72,139,226, 20,251, 62,221,222,221, 58,127,229,228,211,231,110,219,155, 31, 51,203, +134, 44, 26, 45,175, 64,115,111, 60, 69,129, 52, 72,116,167,153, 36,108,239,173, 30, 36, 11,174,200,230,129,135,239, 60,125,225, +230, 46,174, 17,180, 96, 68,103,193, 8, 11,193, 19, 45,208, 24,104,230, 77,140,201, 8,202, 64, 16,230, 81,164, 61,117,230,228, +173, 39, 55,158, 58,251,130,199,159,185, 93, 50, 18,102,145,164,187,133, 64,119, 11,102, 46,154,153, 72,202,130,133, 38,165,228, + 36, 93, 36,204,156, 52, 41, 45,218,201,111,127,248,139, 0,146, 34,147, 68, 9,102,249, 31,205, 12, 74, 50,152, 36, 89, 48, 56, +193, 38,121,178,170, 56,217, 10,102,193,231,195,204, 0, 26, 37, 10, 48,130, 36, 40,201,140,142,178, 40, 17,196,207,220, 90,251, +235, 89,180,253,113,252,248,241, 99,199,142, 3, 88, 44,230,151, 47, 95,222,223,223,255, 52,110,244,146,151,190,244, 45,111,249, +170,162,153,245,175,188,244,205, 44,132,112,249,242,149,127,247,111,127,224,147,221,232, 59,191,235,157,158, 92,217, 30,150,213, +111,204,183,179,114,132,124, 51, 11,205,164,121,199,119,124,251, 53,252,205,219,191,245,219, 82, 76,201,147,123,146,187, 75,202, + 38, 19,146, 60,255, 5,244,103,114,247,175,251,234, 59, 94,126,199,237, 31,252,189, 63, 95, 50, 35, 49,198,252,217,108,127,139, + 30,176,140, 8,196,145,149,253,245,217, 98,182, 26, 87,167,113,117,165,187,233,196,153,151,221,252, 23, 95,242, 58,188,241,139, +255,225,235,223,252,129,165, 27, 65,131, 22,176, 40,149, 19,156, 77,187,151,190,224,177, 59, 94,248,200,169,173, 11, 43, 84, 51, + 65, 19, 64,194,102,198,104,106, 15,126,224,125,239,253,206,119,188,179,104,156,167,228,163, 35,219, 18,185,111,172, 92,122,205, + 29,191,255,185, 47,251,195,227, 43,231,208,185, 55, 84, 99, 41, 88,164,197,136, 36,135,230, 30, 23,223,255,253,239, 43, 55, 74, +195,225,238,158,207, 54, 86, 47,222,126,243,195,183,156,124,220,219,212,137, 29,204, 29, 18, 36,128,240,133, 47,156,139,136,249, +130,109,215,190,245,109,111, 3,208,184, 60, 7, 52,128, 1, 2,140,244,235,142,156, 57,181,245,148, 60,117,193,224,112, 87,114, +166,122, 47, 38,156,187,178,117,113,231,136,123, 66,212,137,235, 78, 16, 53, 40,161, 8, 38,130, 52, 63,178,126,101, 99,245,242, +204,246,227, 66, 97, 38,146, 22, 97, 45, 36, 5, 83, 72,234, 82,120,232,137, 23, 62,113,250,134,148, 82,158,168,247,124,223,247, + 53,114, 87, 86,190,108,251,221,166, 97,127,210, 28, 0, 93, 76,240, 14, 53,160,145, 58, 5, 67,139,233,163, 79,189,228,241,103, +110,222,222, 91, 7,147, 36,144,109,219, 54, 82,126,167, 75,150,173, 27,173, 53,182,201, 5,193, 45, 79,169,156, 64,208,246, 98, +235, 19,103,111,125,242,236,109, 87,118,143,184,100,116, 24, 16, 99,118,236, 78, 82,128, 89,242, 98, 23,146, 39,119, 7, 36, 38, +119, 55, 73,243, 56,189,188,127,226,194,149, 83, 79,158,125,225,254,124, 83,160, 89, 18,203, 4, 0,177, 17, 36,151, 25,220, 13, +144, 25, 83, 66,114,164, 86,110, 12, 2, 39,190,179, 88,187,184,125,242,161, 79,220,113,101,247,132, 25, 73,208, 92,110,193,228, +238,121,157, 53, 74, 14,163, 59,128, 68,154,187,220,225,174, 72, 50, 42, 25,219,118,237,145,167, 94,246,232,233,151, 25, 73, 75, +146,153,201,100, 48, 37,193,148,151,189, 26,135,224, 78,152, 25, 92, 78,113,209, 54,109, 55,137, 17, 38,155,119, 43,247, 63,113, +231,233,179,183,130, 78, 35, 72, 41, 57, 2,204, 41, 18,132, 19, 36,224,141, 39, 55,131, 32,119, 0,162,217,254,124,186,123,176, +210,117, 77,114,251,147, 71,239, 62,123,241, 6, 51, 25,229,130,185, 59, 73,185,220, 12, 32, 29, 70, 56,136,208, 72, 74, 14,194, + 73,152,153,187,239,205, 87,183,247,214,207, 92, 58,113,230,226, 13,103, 46,156,202,161,111, 74,201, 44, 64, 78, 51,202,205, 36, + 25, 76, 14, 35,232, 84,163,236,146, 73,129, 46, 17,136,209, 30, 63,253,130, 39, 78,223, 6,102, 55, 39, 51, 35, 33,185,211,204, + 29,102,238,128, 57, 21, 76,229,104, 92, 78, 90,190, 5,220, 85, 60, 7, 92, 78,208,157, 36,221,243, 64,100,144,172,196, 79, 18, +168, 98,183, 36,111,228, 2,135,207, 3, 40,114,168,182, 69,146, 89,160,202, 58,203,250, 73, 65,132,160,124, 42,161,145, 28, 32, + 65,119,207, 1, 85,190,209,232, 94,148,242,136, 77, 46,145,176,242, 33,151, 2, 74, 50,129,207, 30,127, 41, 63,219, 31, 47,122, +209,139, 95,249,202, 87,222,254,226, 23,111, 29, 63, 62, 92,149, 80,189,168,101, 95, 97, 52,218,229,203,151, 31,122,232,193, 63, +253,211,255,251,232,163,143,126,102, 6,180,177,177,241,150,183,124,213,141, 55,222,228,238, 26, 2,102, 1,172,241, 55,203,233, +224,215,135,195,134, 51, 51, 26,136,102, 50,249,192, 47,252,194, 31,255,241, 31,233,121, 43, 7,223,252,230, 55,191,242,149,119, +122,113,199,121, 16, 75,159,102, 13,226,135, 65,244,113,253,225, 33,229,132, 99, 24, 86, 29,168,153,241,186,163, 79,191,239,223, +255,252,163,143,157,253,228, 3,106, 94,252,146,151, 45, 22,109,149,199, 53, 30,132,125,114, 3, 30, 26, 77,142,124, 86,103, 11, + 51, 77,155, 24, 2,154, 38, 53, 65,193,208, 4, 15,166,233,180, 51, 98,107,243, 74,104,240,194, 27, 63,241,134,159, 63,233,126, +115,210,234,189,175,255,208,222, 94,188,246,128, 82,236,234, 32,134,164,102, 52, 26,106,105, 64,195,228, 53, 22, 79,109,157, 13, + 65,183,156, 60, 61,105,210,145,141,221,198,212,152, 7, 34, 24,130,137,166,208,184, 25, 86,155,133, 5,172,109,204,141, 18, 27, + 34,252,210,207,126,233, 71, 30,121,221, 79,254,212, 79, 61,242,240, 35,135, 7, 20, 83,186,246,234, 39,178,201, 44, 66, 97,157, + 34,104, 58,105, 79, 28,189, 48,157,116, 47,186,249,241, 96,186,238,200,197, 73,240,181,149,197,100,226, 77, 80, 8, 52, 67,254, +225,224,186,243,147,200, 98, 7, 25,113,144,210,193,215,125,237, 63,177, 48,251,137, 31,255,177, 39,158,120, 98, 44,161,248, 92, +234,110,160, 19,132,209, 4, 39,141,193,226,108,210, 30, 93,223,126,241, 45, 15, 78, 39,241,134,173,179, 77,147, 2, 96, 0, 65, + 37,120, 0, 41, 6,138,148,101, 91, 12,119, 0, 8,169,248,124,163, 98, 74,177,139, 32, 82,106,191,225, 27,255,217,116, 50,125, +199, 59, 74, 60, 26, 94,125,239,189,197,114, 87,228,165, 8, 76, 24, 20,171,196,159, 56,190,113,241,212,214,179,215, 31, 63,251, +194, 27, 30, 95, 91,217,181,148,224, 72, 52, 25, 65,184, 85, 61, 46,107,129, 99,173, 84, 43, 37, 44,124, 18,221, 78,159,191,241, + 19,103,110,117,207,254, 66,201,211, 27, 94,255,198,211,167, 79,159, 63,127, 62,220,115,207,171, 75,214,153,255,228, 55,161,198, +193,101, 60, 48,139,193,186, 83, 91,207,188,232,166, 71,143,174, 95,158, 78, 22,217, 30,168,100, 51, 5,189, 82,191, 16, 36, 1, + 41, 49, 57,146, 35,185,148,152,132,243, 87,182, 46,110, 31,123,230,220,169,115,151, 79,244,129,118,126,218, 87,189,234,110, 51, + 54, 57,250, 41, 83,237, 69,200,249, 76, 20, 1, 23, 65, 30,221,188,180, 50,105, 55,215, 46, 77,155,125,163,167,133, 0,113, 98, + 38,152, 36,135, 11,202,193,101,163,152,104,164, 25, 72,145,176,232, 34, 58, 76, 8,220,255, 23, 47,121,246,194, 13,251,237,122, + 74,201,204, 82,137,228,149, 17,167,191,245,197,127,187,113, 79,200,174, 63,231,250,121, 28, 78, 81,217, 34, 10,132, 48, 13, 7, +235, 43,187, 43,211, 61,179, 5,201,152,161, 52,194, 12,150,127, 59,220,196,196, 24, 25,204,131,148,195, 48,128, 11,173,200,237, +207, 30,187,107,190, 88,125,230,226, 77,123,243, 13, 22,151,170,154, 92,144, 53, 60,109,178,184,212,203, 60,139,136,130, 51,143, +134,112,137,134,174,105, 22,242,228, 46, 51,165,148, 83, 12, 73, 76, 0,137, 96,136, 68, 67, 23,225,134, 72,116, 62,189,176,115, + 34,122,243,241,199,238, 74,106,182,119,143, 58, 2,101,180, 36,102, 76,129,198,113, 70, 75, 74,141, 39, 87, 1,145,144,129, 39, + 64, 40,177, 45, 80,174,192,225, 41, 42,117, 74,173, 84,140, 34,232, 50,115, 52, 70, 66, 9, 6,236,182,235,173,175, 92,186,178, +245,196,153, 23, 38,159, 92,222,221,234, 13, 7, 73,208, 9, 49, 35, 11,148,193,220, 82, 73,222,129, 60,119, 77,146, 8,135,242, + 10, 47, 33, 21,137, 18,226,231, 19, 89, 86, 79, 39, 18, 24,133,160, 1, 90,138,177, 1,241,244,217, 23,204,219,213,179,151,110, +184,180,179, 69, 88,245, 41, 9,164, 21,155,110, 25,111,161,140, 76,160, 1,137,178, 60, 16,166,140, 61,176,129,187, 50, 16,151, +131, 38, 48, 71, 77, 32,229,142, 12,213,201,219, 69,216,231,202,124,165,233, 18,141, 66,130, 12, 81, 19,239,194, 99, 79,191,184, +243,233,217,139, 55,180,221,170, 96,128, 8,207, 32, 67,214,144,148, 49, 96,129,132, 18,105,137, 50,230, 48, 18, 9, 32, 83, 69, +169,220,178,132,242, 28,145,112,215, 32, 29, 12, 23, 56,111,167, 14,109, 46,166,237,188,177,224,147,105,108,219,233,131, 79,188, +220,213,156,189,116, 42,169, 73,113, 34,128,116,210, 72, 33,209, 12, 25,143, 41, 56, 20,208, 79,117,214, 16, 32,199, 4,213, 45, +131, 52, 52, 89, 12,164,220, 11, 34,153,255,146, 4, 25,152, 77,155, 14, 22,179, 54, 54,251,235,171,139, 56,105,231,147,157,115, +155, 93,156, 61,125,254, 70,201,186, 56, 43,120, 28, 93, 2, 41, 51, 3,228, 78, 34,201, 12,144,156,198, 36, 24, 1, 57, 72, 81, +164,165,156, 47,200,100,158,191,203, 27, 73,128,103,241,102,113,176,106,143,224,134, 18, 17,207,219,134, 54, 57,119,105,171,139, + 22, 83,179,187,191,225, 8,243,197,172,132, 74,114, 51,147,148,141, 65,114,103, 70,178, 0,131,231, 5,233, 4,225, 48, 72,102, +132,144,165,227, 14,210, 41,203,107, 8,141,123,158, 64,185,203,140,238, 50, 51,185,231,167, 76,158,167, 0,238,130,235,226,246, +241,139,219,199, 48, 40,189,114,242, 84, 84, 63,231,109,114, 18, 52,203,171, 67,146, 96,150,197, 98,130, 91,137,250, 9,119,208, +250, 32, 84, 57,167,111, 84,133, 75,148,101,239,238,203,201,135,163,202, 73, 74,121, 58, 49, 88, 50,193, 29,245, 75,114, 86, 33, + 21, 97, 11,114, 89,249,234, 28, 62,100,111, 84, 66, 9,168,228,172, 40,247, 7, 26,165, 4, 82, 61,234, 72,100,155,213,155,209, +113, 54,147, 95,246,177,107, 54,255,238,110,101, 77, 9,178, 98,225, 64,129, 20, 97,229, 59,243,146, 5, 85,131, 98, 72, 57,198, + 41, 3, 98, 25, 80,241,200,204,210, 44, 83,214, 63,125, 29,123, 47,216,241,149,154, 38,194, 29,200,174,102, 56, 43,190,133,130, + 74, 84,151, 61,145,103,188, 81,148,156, 5,185, 45,177, 5, 63, 85,206,241,217,227,179,199, 95, 61,115, 29, 98,239, 73,179,182, +186, 54,157, 78, 87, 86, 86, 39,147, 73,190, 24, 99, 55,159, 47, 22,139,249,222,222, 94,202, 17,201, 95,235,128, 38,147,201, 61, +247,188,250,142, 87,188,226,182, 23,220, 22,154, 90,113, 20, 97, 37,248, 46, 41, 32,153, 23,230, 99,143, 61,118,255,199,255,252, +195, 31,254,112, 91, 11, 60,159,177, 1,125,233,151,189,249,206, 59,239,156, 52, 19,245,184,113,205,164, 71, 9, 53,171, 99, 44, + 25, 62,128, 16, 2,141,109,219,126,244, 35, 31,249,229, 95,254,165,191,210,128,154,166,185,243,206, 59,223,244,166, 47, 85,111, +105,132,190,138,216,167,244,227, 12,127, 57,179, 95, 78,237, 73, 51,219,222,222,254,145, 31,254,161,189,189,189, 79,111, 64, 91, + 91, 91,111,122,211,155,110,186,233, 22,176, 31,202, 85,233,253, 56,177, 31,253,126,206, 49,229,232, 20, 8, 77, 56,123,230,204, +127,249,153,159,185,120,241,226,243, 26,208, 91,223,250,214,213,213,117,151, 47, 37, 98,135, 4, 88,234,132, 28,101,245,163, 9, +203, 69,137, 82,219,180,101, 36,164,192, 53, 27,171,237,233,167, 62,252,190, 31,252,149, 79, 57, 32,155,206, 86, 98,140,238, 30, + 61,142,112,253,242,227,185,124,225, 46, 87,146, 75, 42, 5,141,148, 95,186,114,137, 35,213,178, 98, 74,249, 83,201, 61,185,187, +146,167,228, 41, 9,139,123,239, 62,249, 63,254,235,219, 54, 55,215, 62,197,114, 78, 41,245, 46,202,175, 57,163,117,106,144, 33, +215, 94, 60, 14, 7, 67,227,211,105,219, 24, 38, 77, 52,195,180,233, 44,112, 26, 18,200,217, 52, 26,181,190, 58, 95, 95, 57,216, + 88,219,191,229,212,179, 52,251,232,111,222,249,227, 63,125,246, 7,127,236,137,231,164, 15,188,246,243, 62,175,166,173, 37, 56, + 28,126,164,171,214,225,216,209, 2, 98,176, 52, 9, 29,169,105,211, 5,243,166,137,193, 20, 66,108, 66,154, 78, 22, 77,147,214, + 87,246,214,215,118, 55, 87,119, 79,110,158,157,134,118,182, 50,127,237,189,235, 92,251,251,191,255,251, 31,185,182,132,212, 87, +207,135,149,181, 4,128, 92,195, 11, 11,130,142, 31,185,180,190,122,112,116,125,231,186, 99,151,154,224, 71,215,119,205,208,192, +205, 24,130,140, 8, 19, 15,166, 73,136,147, 16,155,153,115,218, 10, 13, 32,122,123,219,173, 55,188,247,189,239,121,231, 59,223, +125,173, 41,203,216,196,115, 32, 50, 89,111, 75, 86,189,100,139,184, 50, 61,216, 88,217, 62,186,121,249,196,209,179,211, 73, 58, +190,126,197, 26, 76,160, 96,176, 80,128,152,156,215,150,236, 7, 70, 70,180,169,139,141, 43,146,211,127,243,158,247,124,207,187, + 15,143,201, 84, 10, 83,159,244,200,117,190,250,174,173,163,231,110,220,122,250,198,173,167, 78, 93,119,250,248,250,249,153, 29, + 76, 57, 23, 32,135,136, 68, 58, 40,163,140, 34, 19,232,164,131,121,113, 0, 14, 36, 41, 18,110,102,223,249, 93,239,188,106, 64, +207, 53,158,130,192,104,128,217, 43, 62,114,234,216,233, 23,156,124,252,198,235,159,190,229,228,147,215, 31, 59,187, 58,221,155, + 77, 14,144,156,201,221,152,211,101, 25, 17,202,185,147, 9, 76,137, 74,144, 18, 20,225,238,158, 32,223,220,216,252,250,111,248, +198,165, 1,249,115, 28, 82, 46,197,200,229,240,188,216,125,214,236,175, 76,247,103,211,249,116,122,208,216,194,144, 98,162, 92, +238,116, 49, 11,105,124, 36,135, 11, 73,200, 79, 29,165, 14,150,132,232, 74, 73, 41,121,242,116,251, 11,111,127,205,107,238, 27, + 41,245,115,225,121,158,211,146,250,155,128,252,250, 99,103, 66, 19,111, 57,245,228,250,202, 62,129,212,194, 76,113, 98,129, 18, + 13,228, 20,144, 59,130,229,187, 86, 52, 16, 18,208,194, 13, 9,161, 85,232, 98,104, 99, 48, 42, 87,180,190,226, 43,191,242,227, + 31,255,243, 92,117,182, 49,124, 86, 17,180, 90,140,132,132, 98,193,243,149, 16,218, 73, 88,120,100, 74,148, 35,195, 66,238,112, +103, 6,189, 92,144,152,215,173,251,240,163, 34, 42, 38,103, 76,148,187,202, 31,151,123,140,241, 91,222,254,173, 85, 66, 99, 70, + 9,160,188,202,115,113, 69,176, 28,164, 11, 77,232, 38, 77,119,219, 13,127, 49,157,180, 43, 43,123, 57,173, 72,102, 36,130,195, + 11,197,128,238,185,246,165, 84, 97,210,190,210,204,164, 46,134,179,219, 39,218,110,214, 37, 43, 5, 47,152,220,131,217,108, 54, +187,239,190,215,254,209, 31,125,200,198,238,162, 40,183, 23, 23, 33, 87,207, 53, 1, 28,244, 92,201,141,157,185, 35, 57,139,119, +144, 60,193,157,238,202,149, 68, 47,213, 90,197, 84,240, 60, 23, 28,140,145, 49,134, 24,131,138, 91, 42, 18, 74,238,114,253,131, +175,248, 10,146, 77,133,168, 74,226,227, 37,129, 25, 1, 68,162,133,116,108,227,226,116,210,173,205,246, 38,147, 22,158,212, 58, + 38,116,163,185,188,162, 26,116,128, 98,130, 68, 43, 80,148,211, 1, 87,162,165, 20,118, 15,214, 63,246,224,171,146, 55,109, 23, +114, 21, 31, 48, 7,204, 61, 1,106,245,230, 47,255,242, 6,130,224,168, 73,111, 6,175, 0,170,242,139,178, 46, 17, 9,200,166, +132, 34, 28,164, 23,132, 33, 87, 8,225, 96, 2,129, 8,152, 43, 4,122,198, 61, 92, 25,142,139, 98, 76, 60,104, 39, 41, 53,238, + 2, 4, 7,232, 48, 10, 6, 73,240,251,238,123,109, 3,121,117, 25,172,169,100,245, 23,217,167,153,192,180, 50,219,159, 54,209, +216, 25,163,164,148, 51,211, 4, 51,144, 68, 18,192, 4, 73, 12, 66,227, 66, 80,134, 88, 58, 52, 73,205,206,254,198,147,207,190, +160,237,102,151,182,143, 58,130, 59, 65, 55,154, 4, 58,100, 10,238, 78, 75, 41, 53, 46,101,208,211,107,182, 93,240, 69, 17, 57, + 67,119, 66,110, 22,205, 58,192,115, 93, 48,235,173, 5,184,128, 4, 4, 32,121,206,237,165,156,243,150, 0, 51,138, 9,152,183, +147,203, 59,155,109,156,181,109, 3, 22, 68,222, 11,132, 72, 56,220,140,112, 58, 27, 1,116, 56,139,238, 64, 89, 39,144,223,143, +194,165, 81, 64, 52,166,146, 72,139,146,104, 76, 9,102,117, 61, 26, 67, 33, 19, 42, 2, 38,236,118, 27,209, 39, 87,118,142, 93, +222, 61,118,176, 88, 59,115,241,132,100, 25,184,224, 82,216, 0,154, 50, 76, 37,178, 41,152, 98, 30,151, 88,145,106,185,148,225, + 90, 56, 36, 89,136,100, 89,119,116, 9,185, 72,174,148, 96, 70, 21,109,227,196, 61, 5,203,211,189,119,176,210,198,233,179, 23, +174, 63,115,241, 84,244,233,206,254, 17,203,136, 97, 38,100,141,216,149, 46, 89, 85,154,166, 56, 46, 14,161, 6, 74, 53, 54, 95, +201,236, 22,121,130,215,101,159, 28, 36, 61, 9,150, 81,191, 98,145,205,185, 31,167,164, 93,217, 63, 14,242,226,238,117, 93, 55, +187,178,187, 49, 95, 76,162, 38,114,247, 26,132,231, 53, 1,150,159,130,226,153,185,123,227, 69,125,157,158,225,242,170, 58,117, +214,202, 68, 66, 46, 42,149,233, 34, 51,220, 2,132, 76,146,162,146, 34,108,123,190, 9,183, 7, 62,241,210, 69,183,186,189,119, +172, 75,179, 62,218,228,128,131, 28,154,179, 97, 45, 75,106, 32, 40, 43, 81,133,133, 51,110,141,188,238,153,203, 12,217,241,187, +171, 64, 76, 82, 22,185,228, 52, 67, 20, 23,221,170, 20,182,119,215,221,155, 69, 59,233,146, 37, 7,228, 26, 96, 25,100,164,198, +150,199, 97,168, 40,145,187,178,115,205,201, 79,157,161,172, 80,229, 78, 4, 92,114, 71, 76,141,209,157, 76,102,140, 3,132,233, + 8,105, 30,218,184,250,212,217, 91,186, 52,121,252,153,151, 72,161,175,174, 25, 11,167,132, 68, 94,227, 20,189,100, 42,133,150, + 83,148,217, 44,163, 90, 86, 6, 86, 32,115,212,177,246, 39,222, 43, 94,242, 44,213, 84, 29, 42, 28,236, 34,163,135,182, 11,109, +215,116, 93,227, 9, 62, 68, 87,240, 10, 30,150, 20, 98,200,250, 84,210, 81, 13,215,242, 89, 83, 12,114,111, 20,170,134,149, 57, +203, 39,142,131,118, 58, 73,150,156, 72, 33,192, 33,117,104,208,217,165,221,173,103,207,223,212,198,217,153, 75, 55, 0, 6,101, +100,176,208, 84,160,161, 90, 82, 88, 74,125,230,224,189,144, 6,247, 78,247, 70, 2,251,209, 20,171,205, 76, 9,129, 21, 48, 63, + 19,132,242,218,115, 21, 0, 81,160, 8,119,107, 83,104,213,164, 20, 64, 88,182, 27, 48, 65, 86, 22,173,101, 68,209, 74,117,201, + 29,153,132,162, 28, 64, 51,219,234, 18, 91,176, 41, 64, 97,173,191, 17, 61,162, 58,130, 94,101, 7,243, 89,215,132,197,124, 50, +153, 68, 78,220, 26,157,126,230,198, 75,187, 91,123, 7,235,151,247,142, 75,150,165,226,162,153,128,252, 53, 52, 1,200, 72, 98, +169, 83, 8, 48, 20,108, 26,197,208,101,104, 50,211,116,100,133,170,147, 63, 49,210,155, 60,206, 30,128,118,167,187, 57,173,200, + 41,162,141,205,124, 49,155,119,211,174,155,196, 24,170,182,148,180,106, 80, 22, 64, 37,178, 29, 49,248,176, 84, 75, 28,200, 49, + 21,133, 5, 80,172, 91,134,207, 85, 42, 66, 5,173,118, 15,123,139,181, 73,236,218,174,145,116,246,210,245, 73,225,204,133,147, + 87,246,142, 58, 38,133,187,233, 62,192,183,249,129,145,167, 65,185,162,224, 69, 95, 40,136,162,155,204,145, 45,116,149, 19,205, +115,105,161, 47,220,229, 53, 56, 64, 49,142, 74,208,233, 98,128,171,139, 13,128,189,249, 90,219,205,246, 22,171,139,110,198, 90, +247,203,163, 55,179, 92,166, 48,119,229, 18,128,104,230,101, 76,132,101, 8,154,164,155, 83, 86,236,114,161,106, 85, 9,149, 18, + 80,177,136, 69, 72,165, 40,147,215, 43, 99,108, 20,236,233,115, 55, 5,243,157,189, 13, 87,104,187,105,246, 57,101, 17, 1, 44, + 48,119, 14,117,104,244,140,161,103, 38,148,100,204,223,145, 11, 40,244, 10,170,203,229,134, 82,229,111, 84,220, 4,114,225,161, +175,120,148,139,131, 49, 64,231,225,137,103,110,205,201,132,161,134, 7, 82, 79, 7,169, 92, 61, 24,242,210,133,229, 18, 65, 25, + 83,153, 6,214,143, 20,207,153, 89, 6,217, 57,187,172,175,137,103, 86, 87,175,136,210, 48, 26,175,225,246,144,214,192, 7,128, + 77, 35,251, 9,175,110,202, 7, 15, 5,229, 8, 20, 18,115,249, 26,114, 21,104, 99, 72,123,106,253, 5,153,173, 95, 77,106,191, +202, 60,155,203, 98, 19,202,244,229, 53,234, 82,149, 95,173,137,214,199, 96,125, 42,148,194, 87, 78,177, 29,101, 40, 78, 9,197, +166,245, 5,232,146,125, 65,146,245,143,146, 31, 50,187,214,234, 77,134, 60,180,207, 77,208,179, 45,135,122, 8,235, 51,148,240, + 46,143,173, 60, 64,249,126,228,202, 37,203,215, 21,146, 66, 97,236,194,107, 59, 11, 77,125,108,145,139, 98,144,215,137,235,197, +208, 87,134,178,210,244, 19, 52,146,101,249,108,127,162,124, 82,244, 97, 36, 45,176,210,235, 6, 0,136, 98,149,147,108,217, 9, +142,109, 26,234,224,112, 24,134,184,106, 52, 88,134, 38, 85, 34,188, 58,139,121, 24,234,171,111,101, 26, 71, 67, 82,159, 50, 91, + 22, 89,193, 14,203,148, 97,108,115,243,128,250, 44,178, 87,243,193,107,231,224,179,143,177,170, 14, 12,177, 67, 63, 81,101,241, +140,240,102,244,106, 84,230,208, 70,232, 93,209, 71,119, 31, 97,124,234,149,186,183,126, 99,166, 99,173,151, 57, 7, 44,185, 40, +120, 14, 13,133,156,198,169,215,154,161,102, 7,105, 25,179,251, 44,139,241,179,199,103,143,207, 30,127, 67,234,173,159,236, 22, +228,198,230,230,145,205,205,245,245,141,163,199,142,110, 29,223, 58,122,236,216,209, 35, 71,214,214, 55,214,215, 87,167,211, 25, + 43,147,105,196, 36, 28,138, 22, 49,198,131,131,253,237,157,237,157,157,221,179,103,207,236,238,236, 94,217,190,178,179,189,125, +249,242,229,157,157,157,191,121, 2, 90, 91, 91,123,201, 75, 95,118,243,205, 55,159, 58,121,242,232,209, 99,107,235,107, 77,211, + 64,215,226,208,142,234,179, 87, 21, 79,150, 79, 70, 28,181, 67,124,232, 24,227,254,222,254,149,237, 43,167, 79, 63,253,208,131, + 15, 62,252,208, 67,241, 51, 84,249,254,140, 9,232,228,201,147,175,190,247,222,187,238,186,123, 54,155,170, 39,150, 60,159,251, +170, 4,202, 35, 92,170,188,100, 37,147,229,232, 58,215,146,251, 98,233,184,160, 91,122, 57, 89,234,171,130,114, 87,215,147, 79, + 62,241,219,191,245, 91, 15, 60,112,255, 40,110,254,255, 34,160,141,141,141, 83,167, 78,189,234, 85,119,191,228, 37, 47,181, 38, + 24, 77,125, 97,120, 20, 27, 28,146, 17,175,169, 52,228,161, 18,242,232,229, 85, 28,250,171,127, 47,119,205,177,100, 57, 67, 37, +186,175,197, 95,186,116,233,255,252,206,255,126,224,129, 7, 46, 92,184,240,215, 34,160,147, 39, 79,222,121,231,157,183,223,126, +251,201, 83,167, 74,227,146,180, 44, 20,125,242,168,137, 99,131, 52,178, 52,227,235, 75,198, 7,215,160,245, 95,147, 12,240,169, + 46,178,240,185,104, 22, 12,192,233,167, 31,253,200,135,255,224, 67, 31,250,179,182,251, 12,113, 80,222,245,174,119, 45,218,110, + 32,114, 31,138,211,245,252,226,201, 37,133, 33,175,190,120,141,183, 29,162,109,124, 18, 85, 58, 68, 93, 88, 34,213, 86,157, 42, +157,149,107, 43,251, 91, 71,174, 76, 38,233,224,160,251,165, 95,253,200,175,252,218, 31,255, 85, 5,244,246,111,253, 54,141,153, +238,207,169, 47, 87, 89,158,113,105,122, 89, 46,163,139, 87,171,210,242, 34, 36, 72, 24, 43,237,152, 50, 86,112,180,252, 83,145, +131, 81,134,194,118, 36, 21,130,122, 21,106, 66, 10,150,204, 72,106,125,229,224,196,177, 11,179,105, 36,152, 60,116,105,109,239, +192,255,195,143,254,230, 31,254,241, 51,127, 57, 99,213, 20, 58,212,161,214,146,107, 85, 95,117,200, 98,169,112,154, 56,124,134, +188,250,125, 42, 20,202, 30,215, 40,133,255, 66, 96, 68,104,226,116,210, 25, 5, 34, 80, 77, 19,131, 57, 65, 35,154, 38,133,144, +202, 66, 50, 53,150,169,171, 8,196,100,210,101, 9,134,224,235,179,253,141,181,189,252,158,141,149,189, 83, 71,207,207,166, 45, + 50,252, 76, 35,237,239,252,244,230, 65,119,195,207,126, 96,250, 67, 63,241,240,249,243, 23, 63, 61, 1,105,188, 57,193,115,180, + 17,233,147,172, 44, 93,245,106,124, 81,215,188,138, 16, 98, 8, 41,131,170,147, 73, 92,153, 45,242,195, 7,211,108,178, 48, 2, +132, 17,193, 60, 4,207,134, 39,208, 45, 40,131, 81, 52, 53,150, 26, 19, 32, 11, 90,155, 30, 76,195,194,232, 36, 38, 54, 39, 91, +176, 19, 67, 41,191,137, 64,100,180,215,221,119,251,230,117, 95,114,230,124,122,255, 47,252,252,195, 15, 63,252,188, 53,104,153, +238,193, 81,122,123,237, 11,117,161,148,166,134,220, 69, 64, 1, 21, 29,100,253,215,113,129,187,255, 8, 48,157,180,215,109, 94, +216,220,216, 11,150,140, 58,186,177,125,221,209,139, 77, 19,131,161,177,184,190,118, 48,177,206, 8, 26,140, 40,125, 43,203, 63, + 0, 66, 63, 96, 67,174, 91,100,232,141,185,168, 89,128, 85,162, 3, 68,209, 12, 1,222, 18,237,145,141,213,111,252,134,175, 77, +194,127,250,169,159,121,228,145,135,159,151, 6, 93,165, 41,207,145,240, 95,131,165,147, 91, 61,180,180,172,134,122,237,184, 74, + 8, 50,102,163,106,214, 77,154,182,177,121, 99, 10,150, 26,107,205, 34,145, 32, 26, 19,114, 17, 62,228, 77, 36, 96,133,157, 92, +154,157, 32, 24,203,164, 89,207,128, 7,232,181,198, 37,106, 82,192,226, 33,152,146, 67,209, 61,165,220, 49,239, 9, 8,255,244, + 27,190,126,127,111,255, 3,239,127,255, 3, 15,220,255, 73, 5, 52,248,171, 67, 79,121, 85,248,123, 85,227, 89,207, 70,206,165, +184,210,169,207, 81, 69,142,101,149,109,174,108,223,124,226,244,218,108, 95,228,108,210,158, 56,126,225,200,198, 54, 5, 26, 2, + 20,232,217, 78, 91,128, 81, 20, 24, 69, 66, 13, 20,138,108, 50,170,198, 92,211, 45, 56,113, 97, 35,249,208, 25, 3, 16,150, 10, +106,101, 25, 8, 76,185, 0, 22,137, 88,200, 56,160,224, 41,249,202,202,202,215,124,205,215,158,126,230,244,127,255,111, 63,247, + 92, 49, 84,248,220,215,188, 70, 24, 67, 71,122, 14,155,179,244, 79, 61, 25, 77,207, 29,143,247, 36, 54, 66,211,233,252,216,198, +229,217,244,192, 44, 77,154,184,185,182,179, 50,157,195,100,230,141, 37, 74,165,219, 5,165,207, 2,130, 81, 8,165,181,133, 86, +156,159,245,123,165,112, 28, 96,149,106,109, 63,155,153, 6, 83,154,129, 37, 0, 41,133,115,151, 79,156,189,116,170, 77, 77, 38, +180,184, 44, 3,216,155,155, 71,190,240,139,190,104, 99,125,243,193, 7, 31,184,134, 6,121,173,249, 60,143,136,155, 35,157, 46, +181,184,225,100,120,149, 27, 23,180,177,186,187,177,186, 27,204, 73, 63,182,177,125,211,201,167,143,172,237,228, 27, 77, 67,244, +232,217,184, 36, 3, 67,105, 46,204, 13, 39,129, 32,161,192, 80,138, 1, 67,121,160,122,202, 97, 14,250, 18,248,224,103,218,242, + 56,201, 40,154,216, 80,104,101,209,217, 69,235,186, 80, 36,108,185,183,156,201,147,203,239,187,239,190,215,190,246,181, 63,250, +163, 63,252,236,179,207, 46,105,208,189,247,222,251,124,147,145,165,117,147,109,116, 53,238, 99,155, 92,106,126,190, 50, 61, 88, +157,237, 55, 33,134,144, 86,103,251, 39,142,158, 95,153,206, 73, 5,115,203,196,137,106,177,124,136,179,115, 69, 47,135,199, 53, + 82,174,177,226, 33,186, 98,223,124, 57, 6,159, 5, 40,229, 33, 64,153,140, 7, 0,232,226,228,220,165,235,159,185,112, 67, 27, +167,227,112, 88,203,254,245,243, 63,239,117,171,107,107,121, 83,157,162, 65,207,165, 61,189, 65, 42, 15, 94, 77, 11,106,173, 86, +189, 49,214, 56, 67, 83,142,104,204,226,250,234,206,201, 99,103, 38,147,142,208,234,236,128,140,146, 7,203,136, 60,243,174, 55, +185, 18,158, 43,172,133,215,208,119,172, 64, 18, 83,190,154, 75, 92,227,248,225,234, 64,182,206, 86, 33,147,128, 93, 12,251,139, +181, 46,206,204,212,198,201,206,193,106,242,218, 91, 4,244,109, 49,169, 82,135, 29,144,233, 11, 94,247, 5,215,159,184,254, 23, +127,241,253, 25,108, 9,247,220,243,234,107,144, 21,235,111,149,250, 35, 6,208, 95,172,253,211, 42,118,157,245,146,104,116,154, + 19,106, 66,220, 58,114,241,250,227,231,214,215,246, 86,166,139,217,116, 62,181,150, 33, 23,128, 12,163,248, 91,189, 37, 95, 10, +200, 75,190, 95, 48,129,122,177,148, 65, 36, 87,173,139,151, 26,132, 4,150,218, 68,130, 4, 39,187,212, 28, 28,172,206,227, 52, +198,102,209, 78, 47, 93, 57,126,225,202, 86,114, 43,228,136,222, 94,212, 2, 10,107,121,228,196,137, 19,119,221,117,215,253,247, +223, 63,159,207,195, 61,247,188,250,208,106,210, 82, 82, 62,120, 8,214, 13, 16,106, 10,149,175,100,161,229, 86,172, 52,155,182, +211, 73, 59, 9,113, 58,105,143,109, 92, 57,182,113,169,105, 58,163, 2, 83, 8,201,114, 35, 95, 41, 26,114,144, 57,176, 36, 38, + 13, 75,167, 80,116, 84, 93,184, 10,235, 68, 85,129,251, 10,183, 82,158, 84, 58,205, 65, 23,231,221,236,220,229,235, 46, 92,222, +218,222, 63,178,189,183,121,113,231,248,238,254,102, 74, 65,203,145,138, 48, 30, 70, 97, 2,172,174,174,126,222,231,127,254,199, + 62,250,209, 6,135,189,119, 14,247,202,134, 68,197,254,130,116, 8,165, 58, 58, 10,129, 10, 75, 37,155,209, 0,159, 77,247,103, +147,150,192, 36,116, 43,147,189, 73,179,152, 88, 7,194, 76,136,222, 83,108, 20,152, 3,188,188, 17, 93, 94,169,181,219,174,120, +116,137,116, 88,112,137, 86,170,135,185,109,183,199, 66,234,188,122,102,109,230, 94, 61,211,130,105, 98,148,246,231,179,211,231, + 79,157,189,120,131, 68,201, 14,186, 89, 23,173, 84,206,200, 94, 30,165, 15,173,246, 76, 59, 5, 50,239,134,242,205,223,252,246, + 70, 46, 45,101,157, 85, 52,172,237,140, 14,193,243,150, 63,200, 12,167, 44, 69,121,110,202, 44, 91,118,201, 36, 55, 36, 99, 52, +136,140, 64, 97,228,231,122,162,135,106,191,115,151,163,143, 93, 53, 9, 48,137, 4,141,162, 92, 12,153,167, 37, 6, 67, 38,243, +160,210,182,250,120,154,189, 81, 76,153,141,192,216, 78, 14, 22, 43, 73, 1,192,238,193,198,124, 62,105,187, 32, 80,178,148, 66, +174,176,177,164,132,131,210, 14,221,160, 99, 73, 9, 22,172,209, 40,151,207,202,210,191, 35,219,177,190,220, 59,182,218,234, 41, + 14,181,222, 75,136,230,147,176, 88,157,238,129,152,132, 56,157,204,131,117, 22, 98,105,181, 78, 46, 99,173,112,103,174, 57, 0, + 40,149, 7,206, 45,147, 38,207,105, 39,106,159,178, 27, 72, 26, 20,178,229,224, 8,110,132, 0, 70, 52,209, 67,182, 7,151,118, +143, 63,117,246,150,131,249, 42,192, 54, 78, 47, 92,185,110,127,190,177,132,179,176,246,159,171,239,197,206, 46, 18, 28,247,104, +103, 34,105, 66,211,211, 0, 56, 54,130, 40,253, 16,163,182, 61, 42,115, 70,157, 94, 22, 98, 85,169,236,211, 74, 23,170, 56,112, +173,115, 57, 54,191,207, 37,120,170,177, 20, 15,109,146, 80,220, 34, 89,182,134, 43, 36,159, 28, 25,169,132,136, 3,233, 46, 87, +169,235,230, 10, 93,154,116,105, 82,250,128, 23,211,249,162, 89,116, 13,129, 54,154, 11,181,127, 25, 16,113,141, 28,115,148, 60, +176,152,220, 76,187, 0,233,134,102,160,185,176,134,199,165, 35, 89,125,134,161,108,141, 7,190, 94,175, 83,197,100,176, 58,151, + 16, 58, 90, 12,230,102, 94,235,222, 94,156,132, 23,160, 35,147,188,122, 22, 1, 71,109,201,227,112, 49,139,201, 10,135, 15, 94, +100, 39,144, 93,154,236,204,143,116,113, 34, 48,166,201,249,203,215, 95,184,114, 93, 74, 13,192,182,155,238, 47,214,146, 55,172, + 11,250, 57,240, 8, 93,163, 47,165,108,209, 40, 84,133, 50, 48,107, 16,242, 38,114,101,231,129, 44,146,165, 59,140,224, 34, 22, +229, 31,217,240,234,130, 60,215,196, 11,197, 50,199,251,169, 6,234,230,101,195,131,108, 0,232,125,131,105,222, 55,168, 54,254, +143, 36, 37,140, 66,103, 14,111,201, 16, 0, 0, 7,126, 73, 68, 65, 84,179,210,210, 78,116, 30, 22, 93,232, 98, 3,177, 75,205, + 98, 17, 22,109,147,188,129,216,121,232,162,245,150,129, 84, 38, 7, 12, 51,125,245,127,185, 80, 95,247,216,203, 45,184, 57, 74, +146,167, 6, 25,147, 47,114, 99,191, 55, 92,181,100, 78,229,154,127, 79,137, 5, 51, 59,119, 4, 34,102,237, 40,122,146,121,188, +148,146,208, 41, 43, 16, 43,239,187, 64, 20,157,242, 46, 20, 2, 97, 98, 83, 54, 65, 67,202,137,164,114,184,180,159, 86, 59,159, +230,221, 13,118, 14,142,156,187,116,125,219,173,208, 20,227,100,239, 96,163,141,179,186, 45, 98,112,133,202, 57, 15,153, 91,120, + 77,240,225,154,248,213,144, 30,244, 73,205, 40,163,105,138, 57,247, 74,177, 7, 7, 46, 78,150, 87,191, 95, 4,138,171, 31, 1, +130,245,202, 40,150,205,174,220, 84, 50,198,164, 18,132, 19,189,238, 22,146, 93,245,150, 84, 38,196,231,111,139, 53,177, 16, 99, + 98,140, 33,147, 78,219, 69,115, 48,159, 45,186,153, 64,247,176, 55, 95,137,105,122, 21,208, 91, 40,107, 82,255,188, 68,191, 15, + 71, 49, 67,229,207, 82,245,106,180, 12,150, 48,155, 16, 26,120, 54,187,172,168,151, 19, 80,161, 42,215, 6,114,170,103,122,107, +128, 78, 11, 79,174,216, 78, 65, 80,114,166,196, 76,242,140, 98, 26, 21, 4,205, 51, 77,188, 56,248,222, 7, 73,244, 24, 16, 72, +215, 34,206,182,247,142,117,113, 10, 32,121,115,121,231,248,238,124,195,189,201, 47, 23,221, 76, 10,217, 48, 39,239, 55,126, 29, +131,184,134,222,133,179, 24, 10,179,190,147,161,238, 60,233,149,233,154,233,216, 80,221,154,210, 6,187,146,149, 40,165,226,230, + 57,222,162,230, 80, 13,172, 54,218,140,240,211,209, 46,141,245,175,158,186,230, 66,144,195, 84,188, 88,141,174,146,171,150, 2, +107,251,124, 30,131, 81, 78, 68,128, 33,201,246,231,171,243,118, 6, 49,250,244,210,238,145, 43,187,199, 37,187, 86,157, 40,235, +136,106, 20, 87,152,239,121, 71,164,158,118,132, 66, 90,172,251,230,100,169,161,144,212,115,142,212,135, 67,121, 83,182,129, 5, + 85,224, 14,244,105,178,107,112, 93, 61,117,170,127,123,225, 43, 14, 87,234,215,170,210,145,221,145, 82, 72, 41,120, 50,137, 41, + 5, 12, 35, 40, 91, 56,228,237, 61, 28,161, 95,186, 7,251,107, 59, 7, 71,220, 3,169,182,157, 93,220,185,110,222,174,128,148, +236, 96,190,234,222, 79,222,120, 11,183,236,148, 75, 44, 80,218, 50,138, 96,150,252, 86, 33, 20,215,166,130,154,218,213, 61, 28, + 14,225, 16, 99, 24,176, 26,220,166,132, 3, 78, 31, 44, 11,234, 22,119,227,207,121,229,117, 15,189, 13,142,165,109, 85, 37,122, + 98,151, 66,222,231, 32, 37, 75,202, 49,110,222, 50, 83, 86,186, 46,144,148,187,107, 32,218,238,124,253,220,165,235, 98,156,192, +176, 88,172,108,239, 31, 93,180, 43,163, 90,152,138,207,173, 58,128, 26,221, 13,233,127, 1,196,251,206,147, 66,231,237,119,125, +240, 28, 57,136,222, 75,179, 20,100,106,103,196,115,148,211, 9, 52,181,178,188,108,220, 85,147,120, 12, 97, 96, 79,146,204, 61, + 84, 67, 70, 89,183, 73,113,169, 75, 22,218, 64,163, 11, 93, 12, 49, 6,203,253,105,102, 65, 73, 38, 23, 82,178,253,118, 53,249, + 68,176,148,108,103,119,125,255, 96, 37,166,169,136,148, 38, 41, 89, 69,105, 92,232, 19,250,146,175,147,160,198, 51, 85, 56,227, +172,190,186,228, 10,204,140,226, 10, 47,149,198,139, 28,251, 82,100,229, 25,147,142,220, 28,210,167,201,236,187,158, 42, 21,120, + 20,251,212, 20,107,160, 20,228,109,170, 6, 61, 25,154, 96,250, 37,215, 15,221,157, 93,156,228,173, 83,166, 19,107,187, 73,236, +154,172,169, 22, 28,193, 13, 98, 64,140,205,153, 75,167, 46,110, 31,151, 12,178,253,118,117,239, 96,195, 61,140, 80,246, 98,227, + 74,183,134,247, 59, 0,215,111,103,101,192,214,245,212, 95,207, 13, 96, 53,142,203, 94, 39,135,157, 37,254,170, 27, 19,144, 61, +231, 85, 28,161,236,125,119, 33, 33, 33, 59,136, 30,114,238,151,213, 50, 79,186,218,176,250,154,133,158,175,165,194,129, 0, 33, + 57,187, 24, 72,116,157,197,100,209,141,209,114, 89,193,211,196, 76, 0,230,221,180,235, 66,138, 37,120, 73,201, 52, 20, 12,122, + 30,248, 16, 55,140, 59,126,122, 49, 21,207, 51, 24,155,234, 47,122,143, 53,164, 4, 69,113, 48,222,240,196,235, 30,161,234,193, + 98, 14,177,126, 6, 75,201,190,170, 49, 44,240,186, 81,202,240,146,133,111, 42,178,111,167,170, 11,172,154,191, 60,131,201,121, +176, 88, 89,132, 41,169,198,226, 70,187,186,232,166,128, 92, 54,111, 87,182,119,143,100,255,221,197,230,242,238,214,222,124,195, +243, 94,248,133,129, 32,176, 80,217,251,201, 89,218, 9,134,163,166,164, 44,114, 26,139, 97,100,239,172, 42,188,166,220,188,213, +199,134, 94,204, 87,221, 7, 44,231,162,217,242, 14,230,108,104, 11,233, 93,116,131,254,125,125,178, 90, 3,156,129,248, 92,109, +129,247,189, 82,195, 36,123,239, 21, 51, 5, 89,117,155,235,152,172,237, 26,185, 92,161,139, 77, 23,155,148, 76,100,242, 38, 57, +221,139, 87,206,125, 16,101,207,169,161,189,102,153,235, 95, 10, 73, 5,138, 45,173, 10,165, 63,104,137,159,156, 21,176,247, 82, + 5, 0, 43,102,168,210,155, 80, 50,224,226,172, 52, 50,221, 61, 68, 90,195,205, 38,119,245,212,205, 87,189,119,225,149,203,221, +219,174,234,197, 42,130,226,131,255,239,251, 85, 20,147, 33, 25,136, 14,205,211,103,111,124,246,252,169,130,154,203,114, 99, 40, + 4,135, 85,247, 60,254,142,195, 18,233,215,126,223, 21, 85,165,211,111,196,230,253,125, 10, 11,187,223,160,173, 60, 93, 54,210, +217, 10,247,160, 4,164,220,253,195, 26, 6,148, 94, 74, 56,100,163,244,140, 4,212, 44,141,173,194, 65,114, 31,216, 96,181, 51, +161, 14,189, 54,118, 93, 21, 41, 29, 98,187,184, 55,135,216,114,203, 4,153,186, 60, 70,166, 62, 55,233,244, 55, 28, 85,123,250, +150,177,170,221, 40,221, 41,213, 60,179,246,125,169,174, 78,175,106,103,125,254,193,222, 69,201,170, 49,174, 70,200,115,199,247, + 32,157,108,231,155,190,205,130, 21,245, 40, 0, 69,205,102,252,240,174, 80, 25,180, 41, 12,246,222, 6, 93, 61,243,203,123,166, +176, 87,230, 67, 6, 62,175,219,156,124,140,164,163, 94, 97,115,199,197, 82, 51,164,188, 90,160,126,214,150,235,188,213,153,229, + 22,155, 10,229,104, 8,166, 41, 91,102,252,131,148, 3,166, 65,134, 36,164,166,239, 47, 27,218, 66,106, 11,142,234, 86, 95,249, +210,178,117,168,150,105, 20, 95,143,115,129,195,178, 25,245,140,245,129,185, 70,219, 86, 14,126,187,239,162, 67,209, 6, 91,142, +160,189, 50, 31, 71,134,178, 71, 30, 10,153,118, 8,103, 80, 91,159, 43, 8, 88, 90, 47, 61,255,111, 13,198,153,169,242,255,190, +161,223, 68,160,108,104,230,131, 20, 11, 17,166, 90,152,113, 39,137,143,116,164,111, 1, 26,154, 93,198,146, 88,214,156,220,231, +225, 61,213,242,144, 64,235, 59,198, 77, 41, 61,146, 94,227,197,250,217,254, 67,242,218,190, 51,244,117,214,116,106,212,142, 50, +166, 99,104,100, 84,133,220, 88, 93,187, 86,250, 29, 84, 52, 42,185,213, 16,194,106,119, 84, 95,130,214,168,209,102,220, 97,179, +212,233,115,213, 75,141,187,112,198, 59,112, 92, 85,222, 27, 90,118, 48,106,174,170, 86, 86,163, 37, 56, 52,241,228,105, 25,192, +244, 62,178,198,232,205, 42,157, 70, 94,125,241,168,187, 69, 61,208, 83,247,226, 97,223, 69,163,178, 36,189,175,236,140, 90,107, +213,168,134,103, 28,250,188,170,118,140,242, 96,114,200,197, 70,113,208, 82,235, 15,175, 98, 41,142,229,178,156, 36, 99, 20,236, +160,138,134,203,109,124, 53,196,169,171, 73,125, 29, 62, 55, 90,142,118,102, 40, 11,175, 34, 47,242, 26, 50,122,238,237, 45,254, +203,135,116,169,120,172,146,197,149,221, 91,221,202, 69,246,152, 89, 51,124, 43, 75, 96, 82, 65,246,161, 30, 50,242, 98,195,147, +244,162, 57,148,236, 95,181,202,176,156,208, 14,150,104,108,243, 70,149,127,142,235,202, 94,173, 16,150,182, 25, 2,135, 62,246, +161,229,137, 86, 21,139,125, 71, 99,222,102,164,199,141, 80,218,205,151,222, 83,195,159,108,152,122, 72, 58,111, 58, 94,191,211, +107, 91, 86, 62, 93,170,126,247,201, 79, 79,182, 58,100,149,251,142,178,241, 71,134,125,186, 71, 31, 25,127,170,202,183,220, 64, + 90,166, 58, 74,213, 30,121,223, 40, 60, 44,175, 90,129, 30,122,207,107, 5,161,194,158, 53, 50, 28,154,137, 11,216,126,104, 43, + 48,245, 27, 42,114,153,217, 43,201,253,255, 1,198,119,120,131, 48,187, 25,202, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 236d40cc2ce..8cbcd0e9402 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -103,6 +103,7 @@ static int qtest() {return 0;} ImBuf* get_brush_icon(Brush *brush) { + /* Sculpt */ extern char datatoc_blob_png; extern char datatoc_clay_png; extern char datatoc_crease_png; @@ -120,6 +121,20 @@ ImBuf* get_brush_icon(Brush *brush) extern char datatoc_thumb_png; extern char datatoc_twist_png; + /* Paint */ + extern char datatoc_add_png; + extern char datatoc_blur_png; + extern char datatoc_clone_png; + extern char datatoc_darken_png; + extern char datatoc_lighten_png; + extern char datatoc_mix_png; + extern char datatoc_multiply_png; + extern char datatoc_smear_png; + extern char datatoc_soften_png; + extern char datatoc_subtract_png; + extern char datatoc_texdraw_png; + extern char datatoc_vertexdraw_png; + extern int datatoc_blob_png_size; extern int datatoc_clay_png_size; extern int datatoc_crease_png_size; @@ -137,8 +152,22 @@ ImBuf* get_brush_icon(Brush *brush) extern int datatoc_thumb_png_size; extern int datatoc_twist_png_size; + extern int datatoc_add_png_size; + extern int datatoc_blur_png_size; + extern int datatoc_clone_png_size; + extern int datatoc_darken_png_size; + extern int datatoc_lighten_png_size; + extern int datatoc_mix_png_size; + extern int datatoc_multiply_png_size; + extern int datatoc_smear_png_size; + extern int datatoc_soften_png_size; + extern int datatoc_subtract_png_size; + extern int datatoc_texdraw_png_size; + extern int datatoc_vertexdraw_png_size; + void *icon_data[]= { 0, + &datatoc_blob_png, &datatoc_clay_png, &datatoc_crease_png, @@ -155,10 +184,24 @@ ImBuf* get_brush_icon(Brush *brush) &datatoc_snake_hook_png, &datatoc_thumb_png, &datatoc_twist_png, + + &datatoc_add_png, + &datatoc_blur_png, + &datatoc_clone_png, + &datatoc_darken_png, + &datatoc_lighten_png, + &datatoc_mix_png, + &datatoc_multiply_png, + &datatoc_smear_png, + &datatoc_soften_png, + &datatoc_subtract_png, + &datatoc_texdraw_png, + &datatoc_vertexdraw_png, }; size_t icon_size[]= { 0, + datatoc_blob_png_size, datatoc_clay_png_size, datatoc_crease_png_size, @@ -175,11 +218,24 @@ ImBuf* get_brush_icon(Brush *brush) datatoc_snake_hook_png_size, datatoc_thumb_png_size, datatoc_twist_png_size, + + datatoc_add_png_size, + datatoc_blur_png_size, + datatoc_clone_png_size, + datatoc_darken_png_size, + datatoc_lighten_png_size, + datatoc_mix_png_size, + datatoc_multiply_png_size, + datatoc_smear_png_size, + datatoc_soften_png_size, + datatoc_subtract_png_size, + datatoc_texdraw_png_size, + datatoc_vertexdraw_png_size, }; static const int flags = IB_rect|IB_multilayer|IB_metadata; - static const int default_icon = BRUSH_ICON_DRAW; + static const int default_icon = BRUSH_ICON_SCULPTDRAW; char path[240]; char *folder; diff --git a/source/blender/makesdna/DNA_brush_types.h b/source/blender/makesdna/DNA_brush_types.h index 01f9ddbe5f1..4a174d6471a 100644 --- a/source/blender/makesdna/DNA_brush_types.h +++ b/source/blender/makesdna/DNA_brush_types.h @@ -149,10 +149,11 @@ typedef struct Brush { /* Internal Icons */ #define BRUSH_ICON_FILE 0 + #define BRUSH_ICON_BLOB 1 #define BRUSH_ICON_CLAY 2 #define BRUSH_ICON_CREASE 3 -#define BRUSH_ICON_DRAW 4 +#define BRUSH_ICON_SCULPTDRAW 4 #define BRUSH_ICON_FILL 5 #define BRUSH_ICON_FLATTEN 6 #define BRUSH_ICON_GRAB 7 @@ -165,7 +166,21 @@ typedef struct Brush { #define BRUSH_ICON_SNAKE_HOOK 14 #define BRUSH_ICON_THUMB 15 #define BRUSH_ICON_TWIST 16 -#define BRUSH_ICON_COUNT 17 + +#define BRUSH_ICON_ADD 17 +#define BRUSH_ICON_BLUR 18 +#define BRUSH_ICON_CLONE 19 +#define BRUSH_ICON_DARKEN 20 +#define BRUSH_ICON_LIGHTEN 21 +#define BRUSH_ICON_MIX 22 +#define BRUSH_ICON_MULTIPLY 23 +#define BRUSH_ICON_SMEAR 24 +#define BRUSH_ICON_SOFTEN 25 +#define BRUSH_ICON_SUBTRACT 26 +#define BRUSH_ICON_TEXDRAW 27 +#define BRUSH_ICON_VERTEXDRAW 28 + +#define BRUSH_ICON_COUNT 29 /* ImagePaintSettings.tool */ #define PAINT_TOOL_DRAW 0 diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c index c6f77c9fce2..491819441e2 100644 --- a/source/blender/makesrna/intern/rna_brush.c +++ b/source/blender/makesrna/intern/rna_brush.c @@ -265,7 +265,7 @@ static void rna_def_brush(BlenderRNA *brna) {BRUSH_ICON_BLOB, "BLOB", 0, "Blob", ""}, {BRUSH_ICON_CREASE, "CREASE", 0, "Crease", ""}, {BRUSH_ICON_CLAY, "CLAY", 0, "Clay", ""}, - {BRUSH_ICON_DRAW, "DRAW", 0, "Draw", ""}, + {BRUSH_ICON_SCULPTDRAW, "SCULPTDRAW", 0, "Sculpt Draw", ""}, {BRUSH_ICON_FILL, "FILL", 0, "Fill", ""}, {BRUSH_ICON_FLATTEN, "FLATTEN", 0, "Flatten", ""}, {BRUSH_ICON_GRAB, "GRAB", 0, "Grab", ""}, @@ -278,6 +278,18 @@ static void rna_def_brush(BlenderRNA *brna) {BRUSH_ICON_SMOOTH, "SMOOTH", 0, "Smooth", ""}, {BRUSH_ICON_SNAKE_HOOK, "SNAKE_HOOK", 0, "Snake Hook", ""}, {BRUSH_ICON_THUMB, "THUMB", 0, "Thumb", ""}, + {BRUSH_ICON_ADD, "ADD", 0, "Add", ""}, + {BRUSH_ICON_BLUR, "BLUR", 0, "Blur", ""}, + {BRUSH_ICON_CLONE, "CLONE", 0, "Clone", ""}, + {BRUSH_ICON_DARKEN, "DARKEN", 0, "Darken", ""}, + {BRUSH_ICON_LIGHTEN, "LIGHTEN", 0, "Lighten", ""}, + {BRUSH_ICON_MIX, "MIX", 0, "Mix", ""}, + {BRUSH_ICON_MULTIPLY, "MULTIPLY", 0, "Multiply", ""}, + {BRUSH_ICON_SMEAR, "SMEAR", 0, "Smear", ""}, + {BRUSH_ICON_SOFTEN, "SOFTEN", 0, "Soften", ""}, + {BRUSH_ICON_SUBTRACT, "SUBTRACT", 0, "Subtract", ""}, + {BRUSH_ICON_TEXDRAW, "TEXDRAW", 0, "Texture Draw", ""}, + {BRUSH_ICON_VERTEXDRAW, "VERTEXDRAW", 0, "Vertex Draw", ""}, {0, NULL, 0, NULL, NULL}}; FunctionRNA *func; From 4c526245240178077516948784c3a51971a35830 Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Wed, 21 Jul 2010 01:39:18 +0000 Subject: [PATCH 594/674] * enabled tablet pressure for strength for all brushes --- .../blender/editors/datafiles/startup.blend.c | 2470 ++++++++--------- 1 file changed, 1235 insertions(+), 1235 deletions(-) diff --git a/source/blender/editors/datafiles/startup.blend.c b/source/blender/editors/datafiles/startup.blend.c index 4b743921153..7c042fabe0e 100644 --- a/source/blender/editors/datafiles/startup.blend.c +++ b/source/blender/editors/datafiles/startup.blend.c @@ -5,7 +5,7 @@ char datatoc_startup_blend[]= { 66, 76, 69, 78, 68, 69, 82, 95,118, 50, 53, 50, 82, 69, 78, 68, 32, 0, 0, 0,156,231,148, 2, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 76, 79, 66, 16, 1, 0, 0,188,230,148, 2,201, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 53, 5, 0, 0, 0, -250, 0, 0, 0, 1, 0, 0, 1,232, 89, 11, 3, 72,254, 12, 3, 0, 16, 0, 0,128, 32, 4, 0, 67, 58, 92, 68,111, 99,117,109, +250, 0, 0, 0, 1, 0, 0, 1,152, 99, 11, 3,160, 9, 13, 3, 0, 16, 0, 0,128, 32, 4, 0, 67, 58, 92, 68,111, 99,117,109, 101,110,116,115, 32, 97,110,100, 32, 83,101,116,116,105,110,103,115, 92, 80,104,111,101,110,105,120, 92, 65,112,112,108,105, 99, 97,116,105,111,110, 32, 68, 97,116, 97, 92, 66,108,101,110,100,101,114, 32, 70,111,117,110,100, 97,116,105,111,110, 92, 66,108, 101,110,100,101,114, 92, 50, 46, 53, 50, 92, 99,111,110,102,105,103, 92,115,116, 97,114,116,117,112, 46, 98,108,101,110,100, 0, @@ -13,90 +13,90 @@ char datatoc_startup_blend[]= { 204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, 204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, 204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,204,204,204,204,204,204,204, 87, 77, 0, 0,168, 0, 0, 0,144,176, 10, 3,110, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +204,204,204,204,204,204,204,204, 87, 77, 0, 0,168, 0, 0, 0, 64,186, 10, 3,110, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 87,105,110, 77, 97,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,177, 10, 3,160,177, 10, 3,160,177, 10, 3,160,177, 10, 3, - 3, 0, 0, 0, 0, 0, 0, 0, 80, 88,104, 3, 80,196,122, 3, 0, 0, 0, 0, 0, 0, 0, 0,120,253,104, 3, 32,169, 10, 3, - 16, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 19,245, 2, -232,116,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 56, 20, 73, 3, 56, 20, 73, 3, 56, 20, 73, 3, 56, 21, 73, 3, 56, 21, 73, 3, - 56, 21, 73, 3, 68, 65, 84, 65,148, 0, 0, 0,160,177, 10, 3,111, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 21, 73, 3, 1, 0, 0, 0, 0, 0, 0, 0,232, 89, 11, 3, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,187, 10, 3, 80,187, 10, 3, 80,187, 10, 3, 80,187, 10, 3, + 3, 0, 0, 0, 0, 0, 0, 0,112,252,244, 2,192,188,119, 3, 0, 0, 0, 0, 0, 0, 0, 0,224,238,103, 3,200,173,111, 7, + 16, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 45, 93, 3, +128, 44,119, 3, 0, 0, 0, 0, 0, 0, 0, 0,176, 38, 73, 3,176, 38, 73, 3,176, 38, 73, 3, 64,172, 91, 3, 64,172, 91, 3, + 64,172, 91, 3, 68, 65, 84, 65,148, 0, 0, 0, 80,187, 10, 3,111, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 39, 73, 3, 1, 0, 0, 0, 0, 0, 0, 0,152, 99, 11, 3, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,136, 6,202, 3, 0, 0, 0, 0, - 1, 0,238, 3, 0, 0, 1, 0, 0, 0, 0, 0,224, 23, 73, 3,192,129, 9, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, -104,167, 10, 3, 0, 88,122, 3,160,195,122, 3, 88, 25, 73, 3,208, 26, 73, 3, 16,129, 9, 3, 16,129, 9, 3,192,129, 9, 3, -120, 71, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,152,178, 10, 3,195, 0, 0, 0, 1, 0, 0, 0, -216, 1, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,179, 10, 3,128,187, 10, 3,248,187, 10, 3, -248,201, 10, 3,120,202, 10, 3,168,248, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0,238, 3, 0, 0, 1, 0, 0, 0, 0, 0,168, 42, 73, 3, 56,147, 9, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, +248, 64, 3, 3,192, 15,123, 3,176, 13,105, 3, 32, 44, 73, 3, 16,145, 9, 3,136,146, 9, 3,136,146, 9, 3, 56,147, 9, 3, +144, 79, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, 72,188, 10, 3,195, 0, 0, 0, 1, 0, 0, 0, +136, 11, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,189, 10, 3, 48,197, 10, 3,168,197, 10, 3, +168,211, 10, 3, 40,212, 10, 3, 88, 2, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,179, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, - 0,180, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0,180, 10, 3, -196, 0, 0, 0, 1, 0, 0, 0,120,180, 10, 3,136,179, 10, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,120,180, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,240,180, 10, 3, 0,180, 10, 3, 0, 0, 0, 0,254, 4,214, 2, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,180, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,104,181, 10, 3,120,180, 10, 3, - 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,181, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, -224,181, 10, 3,240,180, 10, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224,181, 10, 3, -196, 0, 0, 0, 1, 0, 0, 0, 88,182, 10, 3,104,181, 10, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 88,182, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,208,182, 10, 3,224,181, 10, 3, 0, 0, 0, 0, 32, 4, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208,182, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 72,183, 10, 3, 88,182, 10, 3, - 0, 0, 0, 0, 32, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,183, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, -192,183, 10, 3,208,182, 10, 3, 0, 0, 0, 0, 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192,183, 10, 3, -196, 0, 0, 0, 1, 0, 0, 0, 56,184, 10, 3, 72,183, 10, 3, 0, 0, 0, 0,254, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 56,184, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,176,184, 10, 3,192,183, 10, 3, 0, 0, 0, 0, 0, 0, 84, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,184, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 40,185, 10, 3, 56,184, 10, 3, - 0, 0, 0, 0, 32, 4, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,185, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, -160,185, 10, 3,176,184, 10, 3, 0, 0, 0, 0,192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,185, 10, 3, -196, 0, 0, 0, 1, 0, 0, 0, 24,186, 10, 3, 40,185, 10, 3, 0, 0, 0, 0,192, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 24,186, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,144,186, 10, 3,160,185, 10, 3, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144,186, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 8,187, 10, 3, 24,186, 10, 3, - 0, 0, 0, 0,192, 1, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8,187, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, -128,187, 10, 3,144,186, 10, 3, 0, 0, 0, 0, 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128,187, 10, 3, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8,187, 10, 3, 0, 0, 0, 0,254, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,248,187, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,120,188, 10, 3, 0, 0, 0, 0, 0,180, 10, 3,120,180, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,188, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,188, 10, 3, -248,187, 10, 3, 0,180, 10, 3,104,181, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,188, 10, 3, -197, 0, 0, 0, 1, 0, 0, 0,120,189, 10, 3,120,188, 10, 3,120,180, 10, 3,224,181, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,120,189, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,189, 10, 3,248,188, 10, 3,104,181, 10, 3, -224,181, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,189, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, -120,190, 10, 3,120,189, 10, 3,136,179, 10, 3, 88,182, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -120,190, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,190, 10, 3,248,189, 10, 3,240,180, 10, 3, 88,182, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,190, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,120,191, 10, 3,120,190, 10, 3, -224,181, 10, 3,208,182, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,191, 10, 3,197, 0, 0, 0, - 1, 0, 0, 0,248,191, 10, 3,248,190, 10, 3, 88,182, 10, 3, 72,183, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,248,191, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,120,192, 10, 3,120,191, 10, 3,240,180, 10, 3,192,183, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,192, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,192, 10, 3, -248,191, 10, 3, 72,183, 10, 3,192,183, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,192, 10, 3, -197, 0, 0, 0, 1, 0, 0, 0,120,193, 10, 3,120,192, 10, 3,136,179, 10, 3, 56,184, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,120,193, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,193, 10, 3,248,192, 10, 3,208,182, 10, 3, -176,184, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,193, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, -120,194, 10, 3,120,193, 10, 3, 88,182, 10, 3,176,184, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -120,194, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,194, 10, 3,248,193, 10, 3, 56,184, 10, 3,176,184, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,194, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,120,195, 10, 3,120,194, 10, 3, - 56,184, 10, 3, 40,185, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,195, 10, 3,197, 0, 0, 0, - 1, 0, 0, 0,248,195, 10, 3,248,194, 10, 3,176,184, 10, 3, 40,185, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,248,195, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,120,196, 10, 3,120,195, 10, 3,104,181, 10, 3,160,185, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,196, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,196, 10, 3, -248,195, 10, 3,208,182, 10, 3,160,185, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,196, 10, 3, -197, 0, 0, 0, 1, 0, 0, 0,120,197, 10, 3,120,196, 10, 3, 40,185, 10, 3,160,185, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,120,197, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,197, 10, 3,248,196, 10, 3, 56,184, 10, 3, - 24,186, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,197, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, -120,198, 10, 3,120,197, 10, 3, 40,185, 10, 3,144,186, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -120,198, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,198, 10, 3,248,197, 10, 3, 24,186, 10, 3,144,186, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,198, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,120,199, 10, 3,120,198, 10, 3, - 72,183, 10, 3, 8,187, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,199, 10, 3,197, 0, 0, 0, - 1, 0, 0, 0,248,199, 10, 3,248,198, 10, 3,208,182, 10, 3, 8,187, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,248,199, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,120,200, 10, 3,120,199, 10, 3,224,181, 10, 3,128,187, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,200, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,200, 10, 3, -248,199, 10, 3,192,183, 10, 3,128,187, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,200, 10, 3, -197, 0, 0, 0, 1, 0, 0, 0,120,201, 10, 3,120,200, 10, 3, 8,187, 10, 3,128,187, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,120,201, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,248,201, 10, 3,248,200, 10, 3,104,181, 10, 3, - 24,186, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,201, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,120,201, 10, 3,160,185, 10, 3,144,186, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -120,202, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 0,206, 10, 3, 0, 0, 0, 0,104,181, 10, 3, 0,180, 10, 3,120,180, 10, 3, -224,181, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 64, 1, 11, 3, 64, 1, 11, 3, 64,203, 10, 3,160,204, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,203, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, -160,204, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 56,189, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, +176,189, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,189, 10, 3, +196, 0, 0, 0, 1, 0, 0, 0, 40,190, 10, 3, 56,189, 10, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 40,190, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,160,190, 10, 3,176,189, 10, 3, 0, 0, 0, 0,254, 4,214, 2, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,190, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 24,191, 10, 3, 40,190, 10, 3, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24,191, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, +144,191, 10, 3,160,190, 10, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144,191, 10, 3, +196, 0, 0, 0, 1, 0, 0, 0, 8,192, 10, 3, 24,191, 10, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 8,192, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,128,192, 10, 3,144,191, 10, 3, 0, 0, 0, 0, 32, 4, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128,192, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,248,192, 10, 3, 8,192, 10, 3, + 0, 0, 0, 0, 32, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248,192, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, +112,193, 10, 3,128,192, 10, 3, 0, 0, 0, 0, 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,112,193, 10, 3, +196, 0, 0, 0, 1, 0, 0, 0,232,193, 10, 3,248,192, 10, 3, 0, 0, 0, 0,254, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,232,193, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 96,194, 10, 3,112,193, 10, 3, 0, 0, 0, 0, 0, 0, 84, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96,194, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,216,194, 10, 3,232,193, 10, 3, + 0, 0, 0, 0, 32, 4, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216,194, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, + 80,195, 10, 3, 96,194, 10, 3, 0, 0, 0, 0,192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 80,195, 10, 3, +196, 0, 0, 0, 1, 0, 0, 0,200,195, 10, 3,216,194, 10, 3, 0, 0, 0, 0,192, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,200,195, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 64,196, 10, 3, 80,195, 10, 3, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64,196, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,184,196, 10, 3,200,195, 10, 3, + 0, 0, 0, 0,192, 1, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184,196, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, + 48,197, 10, 3, 64,196, 10, 3, 0, 0, 0, 0, 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 48,197, 10, 3, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,184,196, 10, 3, 0, 0, 0, 0,254, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,168,197, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,198, 10, 3, 0, 0, 0, 0,176,189, 10, 3, 40,190, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,198, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,198, 10, 3, +168,197, 10, 3,176,189, 10, 3, 24,191, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,198, 10, 3, +197, 0, 0, 0, 1, 0, 0, 0, 40,199, 10, 3, 40,198, 10, 3, 40,190, 10, 3,144,191, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 40,199, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,199, 10, 3,168,198, 10, 3, 24,191, 10, 3, +144,191, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,199, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, + 40,200, 10, 3, 40,199, 10, 3, 56,189, 10, 3, 8,192, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 40,200, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,200, 10, 3,168,199, 10, 3,160,190, 10, 3, 8,192, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,200, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,201, 10, 3, 40,200, 10, 3, +144,191, 10, 3,128,192, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,201, 10, 3,197, 0, 0, 0, + 1, 0, 0, 0,168,201, 10, 3,168,200, 10, 3, 8,192, 10, 3,248,192, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,168,201, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,202, 10, 3, 40,201, 10, 3,160,190, 10, 3,112,193, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,202, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,202, 10, 3, +168,201, 10, 3,248,192, 10, 3,112,193, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,202, 10, 3, +197, 0, 0, 0, 1, 0, 0, 0, 40,203, 10, 3, 40,202, 10, 3, 56,189, 10, 3,232,193, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 40,203, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,203, 10, 3,168,202, 10, 3,128,192, 10, 3, + 96,194, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,203, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, + 40,204, 10, 3, 40,203, 10, 3, 8,192, 10, 3, 96,194, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 40,204, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,204, 10, 3,168,203, 10, 3,232,193, 10, 3, 96,194, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,204, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,205, 10, 3, 40,204, 10, 3, +232,193, 10, 3,216,194, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,205, 10, 3,197, 0, 0, 0, + 1, 0, 0, 0,168,205, 10, 3,168,204, 10, 3, 96,194, 10, 3,216,194, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,168,205, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,206, 10, 3, 40,205, 10, 3, 24,191, 10, 3, 80,195, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,206, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,206, 10, 3, +168,205, 10, 3,128,192, 10, 3, 80,195, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,206, 10, 3, +197, 0, 0, 0, 1, 0, 0, 0, 40,207, 10, 3, 40,206, 10, 3,216,194, 10, 3, 80,195, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 40,207, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,207, 10, 3,168,206, 10, 3,232,193, 10, 3, +200,195, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,207, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, + 40,208, 10, 3, 40,207, 10, 3,216,194, 10, 3, 64,196, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 40,208, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,208, 10, 3,168,207, 10, 3,200,195, 10, 3, 64,196, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,208, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,209, 10, 3, 40,208, 10, 3, +248,192, 10, 3,184,196, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,209, 10, 3,197, 0, 0, 0, + 1, 0, 0, 0,168,209, 10, 3,168,208, 10, 3,128,192, 10, 3,184,196, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,168,209, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,210, 10, 3, 40,209, 10, 3,144,191, 10, 3, 48,197, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,210, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,210, 10, 3, +168,209, 10, 3,112,193, 10, 3, 48,197, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,210, 10, 3, +197, 0, 0, 0, 1, 0, 0, 0, 40,211, 10, 3, 40,210, 10, 3,184,196, 10, 3, 48,197, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 40,211, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,211, 10, 3,168,210, 10, 3, 24,191, 10, 3, +200,195, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,211, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 40,211, 10, 3, 80,195, 10, 3, 64,196, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, + 40,212, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,176,215, 10, 3, 0, 0, 0, 0, 24,191, 10, 3,176,189, 10, 3, 40,190, 10, 3, +144,191, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,240, 10, 11, 3,240, 10, 11, 3,240,212, 10, 3, 80,214, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,212, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, + 80,214, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, @@ -104,7 +104,7 @@ char datatoc_startup_blend[]= { 213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -160,204, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64,203, 10, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, + 80,214, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240,212, 10, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, @@ -112,11 +112,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 0,206, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,200,210, 10, 3,120,202, 10, 3, - 88,182, 10, 3, 72,183, 10, 3,192,183, 10, 3,240,180, 10, 3, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 51, 1, 0, 0, 4, 4,222, 0, 52, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,209, 10, 3,136,209, 10, 3, -200,206, 10, 3, 40,208, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -200,206, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 40,208, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,176,215, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,120,220, 10, 3, 40,212, 10, 3, + 8,192, 10, 3,248,192, 10, 3,112,193, 10, 3,160,190, 10, 3, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, + 51, 1, 0, 0, 4, 4,222, 0, 52, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,219, 10, 3, 56,219, 10, 3, +120,216, 10, 3,216,217, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +120,216, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,216,217, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -124,7 +124,7 @@ char datatoc_startup_blend[]= { 33, 4, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 51, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40,208, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,200,206, 10, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,217, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120,216, 10, 3, 0, 0, 0, 0, 0, 0, 94, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 77, 67, 1,128,138,195, 0, 0, 0, 0, 205, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -132,7 +132,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,136,209, 10, 3,165, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 56,219, 10, 3,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -140,11 +140,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,200,210, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,112,215, 10, 3, 0,206, 10, 3,136,179, 10, 3, 56,184, 10, 3, -176,184, 10, 3, 88,182, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 15, 15, 32, 4, - 84, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,214, 10, 3, 80,214, 10, 3,144,211, 10, 3,240,212, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144,211, 10, 3,200, 0, 0, 0, - 1, 0, 0, 0,240,212, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 96, 0, 0, 0,120,220, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 32,225, 10, 3,176,215, 10, 3, 56,189, 10, 3,232,193, 10, 3, + 96,194, 10, 3, 8,192, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 15, 15, 32, 4, + 84, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 10, 3, 0,224, 10, 3, 64,221, 10, 3,160,222, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,221, 10, 3,200, 0, 0, 0, + 1, 0, 0, 0,160,222, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,132, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, @@ -152,7 +152,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,240,212, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144,211, 10, 3, 0, 0, 64,192, 0, 0,126, 67, +248, 0, 0, 0,160,222, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64,221, 10, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 18, 0, 0, 0, 57, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, @@ -160,18 +160,18 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 80,214, 10, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 0,224, 10, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -112,215, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,200,221, 10, 3,200,210, 10, 3, 72,183, 10, 3, 8,187, 10, 3,128,187, 10, 3, -192,183, 10, 3, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 47, 2, 0, 0, 3, 3,222, 0,251, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,218, 10, 3,248,218, 10, 3, 56,216, 10, 3,152,217, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,216, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, -152,217, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 94, 67, + 32,225, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,120,231, 10, 3,120,220, 10, 3,248,192, 10, 3,184,196, 10, 3, 48,197, 10, 3, +112,193, 10, 3, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 47, 2, 0, 0, 3, 3,222, 0,251, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,228, 10, 3,168,228, 10, 3,232,225, 10, 3, 72,227, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232,225, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, + 72,227, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, @@ -179,7 +179,7 @@ char datatoc_startup_blend[]= { 47, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -152,217, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,216, 10, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, + 72,227, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232,225, 10, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0,100, 66, 0, 0,131, 67, 0, 0, 79,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, 18, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 18, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, @@ -187,26 +187,26 @@ char datatoc_startup_blend[]= { 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 0,225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,248,218, 10, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,168,228, 10, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,220, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,230, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 88,220, 10, 3, -223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,200,220, 10, 3, 68, 65, 84, 65,156, 0, 0, 0,200,220, 10, 3, -222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 72,254, 12, 3, 19, 0, 0, 0, 1, 0, 1, 0, 72,254, 12, 3, - 20, 0, 0, 0, 1, 0, 1, 0, 72,254, 12, 3, 21, 0, 1, 0, 1, 0, 1, 0, 72,254, 12, 3, 0, 0, 0, 0, 1, 0, 1, 0, - 8, 21, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,168, 27, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,176,110, 14, 3, 0, 0, 0, 0, - 1, 0, 1, 0,240, 37, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,192,203, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,176, 33, 13, 3, - 0, 0, 0, 0, 1, 0, 1, 0,184, 16, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,104, 23, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, -232, 15, 13, 3, 68, 65, 84, 65, 96, 0, 0, 0,200,221, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,128,234, 10, 3,112,215, 10, 3, - 40,185, 10, 3,160,185, 10, 3,208,182, 10, 3,176,184, 10, 3, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0, -186, 2, 0, 0, 1, 1, 95, 2,102, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,233, 10, 3, 32,233, 10, 3, -144,222, 10, 3, 16,228, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -144,222, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,240,223, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 8,230, 10, 3, +223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,120,230, 10, 3, 68, 65, 84, 65,156, 0, 0, 0,120,230, 10, 3, +222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,160, 9, 13, 3, 19, 0, 0, 0, 1, 0, 1, 0,160, 9, 13, 3, + 20, 0, 0, 0, 1, 0, 1, 0,160, 9, 13, 3, 21, 0, 1, 0, 1, 0, 1, 0,160, 9, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, + 96, 32, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 39, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 8,122, 14, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 72, 49, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 24,215, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 8, 45, 13, 3, + 0, 0, 0, 0, 1, 0, 1, 0, 16, 28, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,192, 34, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, + 64, 27, 13, 3, 68, 65, 84, 65, 96, 0, 0, 0,120,231, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 48,244, 10, 3, 32,225, 10, 3, +216,194, 10, 3, 80,195, 10, 3,128,192, 10, 3, 96,194, 10, 3, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0, +186, 2, 0, 0, 1, 1, 95, 2,102, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,242, 10, 3,208,242, 10, 3, + 64,232, 10, 3,192,237, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 64,232, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,160,233, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 23, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -214,7 +214,7 @@ char datatoc_startup_blend[]= { 193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,223, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 80,225, 10, 3,144,222, 10, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160,233, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0,235, 10, 3, 64,232, 10, 3, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, 143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -222,8 +222,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0,193, 1, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 76, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,225, 10, 3,200, 0, 0, 0, - 1, 0, 0, 0,176,226, 10, 3,240,223, 10, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0,235, 10, 3,200, 0, 0, 0, + 1, 0, 0, 0, 96,236, 10, 3,160,233, 10, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0, 231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, @@ -231,7 +231,7 @@ char datatoc_startup_blend[]= { 111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,176,226, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 16,228, 10, 3, 80,225, 10, 3, 0, 0, 0, 0, 0, 0, 35, 67, +248, 0, 0, 0, 96,236, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,192,237, 10, 3, 0,235, 10, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, @@ -239,15 +239,15 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 31, 4, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,228, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -176,226, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,237, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 96,236, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 76, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,229, 10, 3, 68, 65, 84, 65, 72, 3, 0, 0,112,229, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,239, 10, 3, 68, 65, 84, 65, 72, 3, 0, 0, 32,239, 10, 3, 159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,134,144, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, @@ -274,20 +274,20 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 32, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,233, 10, 3,160, 0, 0, 0, + 32, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,242, 10, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104, 23, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,192, 34, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,128,234, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,128,242, 10, 3,200,221, 10, 3, 56,184, 10, 3, 24,186, 10, 3, -144,186, 10, 3, 40,185, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,255, 0, 0, 0, 2, 2,192, 1, -171, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,240, 10, 3,200,240, 10, 3, 72,235, 10, 3,104,239, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,235, 10, 3,200, 0, 0, 0, - 1, 0, 0, 0,168,236, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 96, 0, 0, 0, 48,244, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 48,252, 10, 3,120,231, 10, 3,232,193, 10, 3,200,195, 10, 3, + 64,196, 10, 3,216,194, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,255, 0, 0, 0, 2, 2,192, 1, +171, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,250, 10, 3,120,250, 10, 3,248,244, 10, 3, 24,249, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,244, 10, 3,200, 0, 0, 0, + 1, 0, 0, 0, 88,246, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, @@ -295,7 +295,7 @@ char datatoc_startup_blend[]= { 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,168,236, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 8,238, 10, 3, 72,235, 10, 3, 0, 0, 0, 0, 0, 0, 72, 67, +248, 0, 0, 0, 88,246, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,184,247, 10, 3,248,244, 10, 3, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,254,194, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, @@ -303,16 +303,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0,145, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,238, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,104,239, 10, 3, -168,236, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,247, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 24,249, 10, 3, + 88,246, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104,239, 10, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8,238, 10, 3, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24,249, 10, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,184,247, 10, 3, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, @@ -320,19 +320,19 @@ char datatoc_startup_blend[]= { 191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,208, 0, 0, 0,200,240, 10, 3,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,208, 0, 0, 0,120,250, 10, 3,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,242, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0,242, 10, 3, 23, 1, 0, 0, 1, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,128,242, 10, 3,199, 0, 0, 0, - 1, 0, 0, 0,168,248, 10, 3,128,234, 10, 3, 24,186, 10, 3,104,181, 10, 3,160,185, 10, 3,144,186, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176,251, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,251, 10, 3, 23, 1, 0, 0, 1, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 48,252, 10, 3,199, 0, 0, 0, + 1, 0, 0, 0, 88, 2, 11, 3, 48,244, 10, 3,200,195, 10, 3, 24,191, 10, 3, 80,195, 10, 3, 64,196, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0,186, 2, 0, 0, 12, 12,192, 1,186, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,104,247, 10, 3,104,247, 10, 3, 72,243, 10, 3, 8,246, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,243, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,168,244, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 24, 1, 11, 3, 24, 1, 11, 3,248,252, 10, 3,184,255, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,252, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 88,254, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 98, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, @@ -340,8 +340,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,244, 10, 3,200, 0, 0, 0, - 1, 0, 0, 0, 8,246, 10, 3, 72,243, 10, 3, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,254, 10, 3,200, 0, 0, 0, + 1, 0, 0, 0,184,255, 10, 3,248,252, 10, 3, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,199,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, @@ -349,7 +349,7 @@ char datatoc_startup_blend[]= { 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,160, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 8,246, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,168,244, 10, 3, 0, 0, 32,193, 0, 0,104, 68, +248, 0, 0, 0,184,255, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88,254, 10, 3, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0,199,195, 0, 0, 0, 0,231, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, @@ -357,18 +357,18 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,200, 0, 0, 0,191, 1, 0, 0, 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,104,247, 10, 3, 24, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 24, 1, 11, 3, 24, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,168,248, 10, 3, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128,242, 10, 3, 8,187, 10, 3,208,182, 10, 3,224,181, 10, 3,128,187, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 88, 2, 11, 3, +199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,252, 10, 3,184,196, 10, 3,128,192, 10, 3,144,191, 10, 3, 48,197, 10, 3, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 1, 1,222, 0,138, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,224,255, 10, 3,224,255, 10, 3,112,249, 10, 3,208,250, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,249, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,208,250, 10, 3, + 0, 0, 0, 0, 0, 0, 0, 0,144, 9, 11, 3,144, 9, 11, 3, 32, 3, 11, 3,128, 4, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 3, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,128, 4, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 64, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, @@ -376,16 +376,16 @@ char datatoc_startup_blend[]= { 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0, 49, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,250, 10, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,112,249, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 4, 11, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32, 3, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0, 254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,252, 10, 3, - 68, 65, 84, 65, 72, 3, 0, 0, 48,252, 10, 3,159, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 5, 11, 3, + 68, 65, 84, 65, 72, 3, 0, 0,224, 5, 11, 3,159, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,109,100, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, @@ -412,72 +412,72 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,224,255, 10, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 0, 0, 0,144, 9, 11, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104, 23, 13, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,192, 34, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,216, 1, 11, 3,195, 0, 0, 0, 1, 0, 0, 0,232, 89, 11, 3, -152,178, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 2, 11, 3,224, 8, 11, 3, 88, 9, 11, 3,216, 19, 11, 3, - 88, 20, 11, 3,232, 50, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,136, 11, 11, 3,195, 0, 0, 0, 1, 0, 0, 0,152, 99, 11, 3, + 72,188, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 12, 11, 3,144, 18, 11, 3, 8, 19, 11, 3,136, 29, 11, 3, + 8, 30, 11, 3,152, 60, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200, 2, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 64, 3, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64, 3, 11, 3,196, 0, 0, 0, - 1, 0, 0, 0,184, 3, 11, 3,200, 2, 11, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -184, 3, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 48, 4, 11, 3, 64, 3, 11, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 48, 4, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,168, 4, 11, 3,184, 3, 11, 3, 0, 0, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168, 4, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 5, 11, 3, - 48, 4, 11, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 5, 11, 3,196, 0, 0, 0, - 1, 0, 0, 0,152, 5, 11, 3,168, 4, 11, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -152, 5, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 16, 6, 11, 3, 32, 5, 11, 3, 0, 0, 0, 0, 20, 4, 64, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 16, 6, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,136, 6, 11, 3,152, 5, 11, 3, 0, 0, 0, 0, -254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136, 6, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 7, 11, 3, - 16, 6, 11, 3, 0, 0, 0, 0, 20, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 7, 11, 3,196, 0, 0, 0, - 1, 0, 0, 0,120, 7, 11, 3,136, 6, 11, 3, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -120, 7, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,240, 7, 11, 3, 0, 7, 11, 3, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,240, 7, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,104, 8, 11, 3,120, 7, 11, 3, 0, 0, 0, 0, - 0, 2, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104, 8, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,224, 8, 11, 3, -240, 7, 11, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224, 8, 11, 3,196, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,104, 8, 11, 3, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 88, 9, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 9, 11, 3, 0, 0, 0, 0, 64, 3, 11, 3,184, 3, 11, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 9, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 10, 11, 3, 88, 9, 11, 3, - 64, 3, 11, 3,168, 4, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 10, 11, 3,197, 0, 0, 0, - 1, 0, 0, 0,216, 10, 11, 3,216, 9, 11, 3,184, 3, 11, 3, 32, 5, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,216, 10, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 11, 11, 3, 88, 10, 11, 3,168, 4, 11, 3, 32, 5, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 11, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 11, 11, 3, -216, 10, 11, 3, 48, 4, 11, 3, 16, 6, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 11, 11, 3, -197, 0, 0, 0, 1, 0, 0, 0, 88, 12, 11, 3, 88, 11, 11, 3,152, 5, 11, 3, 16, 6, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 88, 12, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 12, 11, 3,216, 11, 11, 3, 32, 5, 11, 3, -136, 6, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 12, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, - 88, 13, 11, 3, 88, 12, 11, 3,168, 4, 11, 3,136, 6, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 88, 13, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 13, 11, 3,216, 12, 11, 3,152, 5, 11, 3,136, 6, 11, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 13, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 14, 11, 3, 88, 13, 11, 3, - 32, 5, 11, 3, 16, 6, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 14, 11, 3,197, 0, 0, 0, - 1, 0, 0, 0,216, 14, 11, 3,216, 13, 11, 3,168, 4, 11, 3, 0, 7, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,216, 14, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 15, 11, 3, 88, 14, 11, 3,136, 6, 11, 3,120, 7, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 15, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 15, 11, 3, -216, 14, 11, 3, 0, 7, 11, 3,120, 7, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 15, 11, 3, -197, 0, 0, 0, 1, 0, 0, 0, 88, 16, 11, 3, 88, 15, 11, 3, 0, 7, 11, 3,240, 7, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 88, 16, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 16, 11, 3,216, 15, 11, 3,120, 7, 11, 3, -240, 7, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 16, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, - 88, 17, 11, 3, 88, 16, 11, 3,200, 2, 11, 3,104, 8, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 88, 17, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 17, 11, 3,216, 16, 11, 3,104, 8, 11, 3,224, 8, 11, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 17, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 18, 11, 3, 88, 17, 11, 3, - 48, 4, 11, 3,224, 8, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 18, 11, 3,197, 0, 0, 0, - 1, 0, 0, 0,216, 18, 11, 3,216, 17, 11, 3,152, 5, 11, 3,224, 8, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,216, 18, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 88, 19, 11, 3, 88, 18, 11, 3,240, 7, 11, 3,104, 8, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 19, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,216, 19, 11, 3, -216, 18, 11, 3,120, 7, 11, 3,224, 8, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 19, 11, 3, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88, 19, 11, 3,200, 2, 11, 3, 0, 7, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0, 88, 20, 11, 3,199, 0, 0, 0, 1, 0, 0, 0,224, 23, 11, 3, 0, 0, 0, 0,168, 4, 11, 3, - 64, 3, 11, 3,184, 3, 11, 3, 32, 5, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, - 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 80, 89, 11, 3, 80, 89, 11, 3, 32, 21, 11, 3, -128, 22, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 21, 11, 3, -200, 0, 0, 0, 1, 0, 0, 0,128, 22, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120, 12, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,240, 12, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240, 12, 11, 3,196, 0, 0, 0, + 1, 0, 0, 0,104, 13, 11, 3,120, 12, 11, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +104, 13, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,224, 13, 11, 3,240, 12, 11, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,224, 13, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 88, 14, 11, 3,104, 13, 11, 3, 0, 0, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 88, 14, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,208, 14, 11, 3, +224, 13, 11, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208, 14, 11, 3,196, 0, 0, 0, + 1, 0, 0, 0, 72, 15, 11, 3, 88, 14, 11, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 72, 15, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,192, 15, 11, 3,208, 14, 11, 3, 0, 0, 0, 0, 20, 4, 64, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,192, 15, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 56, 16, 11, 3, 72, 15, 11, 3, 0, 0, 0, 0, +254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 56, 16, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,176, 16, 11, 3, +192, 15, 11, 3, 0, 0, 0, 0, 20, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176, 16, 11, 3,196, 0, 0, 0, + 1, 0, 0, 0, 40, 17, 11, 3, 56, 16, 11, 3, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 40, 17, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,160, 17, 11, 3,176, 16, 11, 3, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,160, 17, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 24, 18, 11, 3, 40, 17, 11, 3, 0, 0, 0, 0, + 0, 2, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24, 18, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,144, 18, 11, 3, +160, 17, 11, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144, 18, 11, 3,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 24, 18, 11, 3, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 8, 19, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 19, 11, 3, 0, 0, 0, 0,240, 12, 11, 3,104, 13, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 19, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 8, 20, 11, 3, 8, 19, 11, 3, +240, 12, 11, 3, 88, 14, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 20, 11, 3,197, 0, 0, 0, + 1, 0, 0, 0,136, 20, 11, 3,136, 19, 11, 3,104, 13, 11, 3,208, 14, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,136, 20, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 8, 21, 11, 3, 8, 20, 11, 3, 88, 14, 11, 3,208, 14, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 21, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 21, 11, 3, +136, 20, 11, 3,224, 13, 11, 3,192, 15, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 21, 11, 3, +197, 0, 0, 0, 1, 0, 0, 0, 8, 22, 11, 3, 8, 21, 11, 3, 72, 15, 11, 3,192, 15, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 8, 22, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 22, 11, 3,136, 21, 11, 3,208, 14, 11, 3, + 56, 16, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 22, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, + 8, 23, 11, 3, 8, 22, 11, 3, 88, 14, 11, 3, 56, 16, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 8, 23, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 23, 11, 3,136, 22, 11, 3, 72, 15, 11, 3, 56, 16, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 23, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 8, 24, 11, 3, 8, 23, 11, 3, +208, 14, 11, 3,192, 15, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 24, 11, 3,197, 0, 0, 0, + 1, 0, 0, 0,136, 24, 11, 3,136, 23, 11, 3, 88, 14, 11, 3,176, 16, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,136, 24, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 8, 25, 11, 3, 8, 24, 11, 3, 56, 16, 11, 3, 40, 17, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 25, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 25, 11, 3, +136, 24, 11, 3,176, 16, 11, 3, 40, 17, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 25, 11, 3, +197, 0, 0, 0, 1, 0, 0, 0, 8, 26, 11, 3, 8, 25, 11, 3,176, 16, 11, 3,160, 17, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 8, 26, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 26, 11, 3,136, 25, 11, 3, 40, 17, 11, 3, +160, 17, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 26, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, + 8, 27, 11, 3, 8, 26, 11, 3,120, 12, 11, 3, 24, 18, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 8, 27, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 27, 11, 3,136, 26, 11, 3, 24, 18, 11, 3,144, 18, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 27, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 8, 28, 11, 3, 8, 27, 11, 3, +224, 13, 11, 3,144, 18, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 28, 11, 3,197, 0, 0, 0, + 1, 0, 0, 0,136, 28, 11, 3,136, 27, 11, 3, 72, 15, 11, 3,144, 18, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,136, 28, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 8, 29, 11, 3, 8, 28, 11, 3,160, 17, 11, 3, 24, 18, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 29, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 29, 11, 3, +136, 28, 11, 3, 40, 17, 11, 3,144, 18, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 29, 11, 3, +197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8, 29, 11, 3,120, 12, 11, 3,176, 16, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 96, 0, 0, 0, 8, 30, 11, 3,199, 0, 0, 0, 1, 0, 0, 0,144, 33, 11, 3, 0, 0, 0, 0, 88, 14, 11, 3, +240, 12, 11, 3,104, 13, 11, 3,208, 14, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, + 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 99, 11, 3, 0, 99, 11, 3,208, 30, 11, 3, + 48, 32, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208, 30, 11, 3, +200, 0, 0, 0, 1, 0, 0, 0, 48, 32, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, @@ -485,7 +485,7 @@ char datatoc_startup_blend[]= { 254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,128, 22, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32, 21, 11, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 48, 32, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 30, 11, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0, 129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, @@ -493,11 +493,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,224, 23, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, -136, 28, 11, 3, 88, 20, 11, 3,224, 8, 11, 3,152, 5, 11, 3, 16, 6, 11, 3, 48, 4, 11, 3, 0, 0, 0, 0, 21, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,144, 33, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, + 56, 38, 11, 3, 8, 30, 11, 3,144, 18, 11, 3, 72, 15, 11, 3,192, 15, 11, 3,224, 13, 11, 3, 0, 0, 0, 0, 21, 4, 0, 0, 254, 4, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,234, 0, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -104, 27, 11, 3,104, 27, 11, 3,168, 24, 11, 3, 8, 26, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,168, 24, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 8, 26, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 37, 11, 3, 24, 37, 11, 3, 88, 34, 11, 3,184, 35, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 88, 34, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,184, 35, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,116, 68, 0, 0, 0, 0, 0, 0,208, 65, 0,128,190, 67, 0,192, 25, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, @@ -505,8 +505,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8, 26, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,168, 24, 11, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184, 35, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 88, 34, 11, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,234, 0, @@ -514,17 +514,17 @@ char datatoc_startup_blend[]= { 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, -104, 27, 11, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 24, 37, 11, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,136, 28, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, 80, 33, 11, 3, -224, 23, 11, 3,152, 5, 11, 3,136, 6, 11, 3, 32, 5, 11, 3, 16, 6, 11, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, - 65, 0, 0, 0,186, 2, 0, 0, 4, 4,234, 0,122, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 32, 11, 3, - 16, 32, 11, 3, 80, 29, 11, 3,176, 30, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 80, 29, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,176, 30, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, + 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 56, 38, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 43, 11, 3, +144, 33, 11, 3, 72, 15, 11, 3, 56, 16, 11, 3,208, 14, 11, 3,192, 15, 11, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, + 65, 0, 0, 0,186, 2, 0, 0, 4, 4,234, 0,122, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 41, 11, 3, +192, 41, 11, 3, 0, 39, 11, 3, 96, 40, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 0, 39, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 96, 40, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -532,15 +532,15 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0,156, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176, 30, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 80, 29, 11, 3, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 88, 67, 0,192, 22,196, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96, 40, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 39, 11, 3, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 88, 67, 0,192, 22,196, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0, 91, 2,217, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,155, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 16, 32, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,192, 41, 11, 3, 165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -548,11 +548,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0, 80, 33, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, 8, 46, 11, 3,136, 28, 11, 3,104, 8, 11, 3, -240, 7, 11, 3,120, 7, 11, 3,224, 8, 11, 3, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, - 1, 1, 19, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 44, 11, 3,168, 44, 11, 3, 24, 34, 11, 3, -152, 39, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24, 34, 11, 3, -200, 0, 0, 0, 1, 0, 0, 0,120, 35, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, + 68, 65, 84, 65, 96, 0, 0, 0, 0, 43, 11, 3,199, 0, 0, 0, 1, 0, 0, 0,184, 55, 11, 3, 56, 38, 11, 3, 24, 18, 11, 3, +160, 17, 11, 3, 40, 17, 11, 3,144, 18, 11, 3, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, + 1, 1, 19, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 54, 11, 3, 88, 54, 11, 3,200, 43, 11, 3, + 72, 49, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 43, 11, 3, +200, 0, 0, 0, 1, 0, 0, 0, 40, 45, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 4, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, @@ -560,7 +560,7 @@ char datatoc_startup_blend[]= { 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,120, 35, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,216, 36, 11, 3, 24, 34, 11, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 40, 45, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,136, 46, 11, 3,200, 43, 11, 3, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0, 160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, @@ -568,8 +568,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,250, 0, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216, 36, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, - 56, 38, 11, 3,120, 35, 11, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136, 46, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, +232, 47, 11, 3, 40, 45, 11, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, @@ -577,7 +577,7 @@ char datatoc_startup_blend[]= { 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 56, 38, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,152, 39, 11, 3,216, 36, 11, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, +232, 47, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 72, 49, 11, 3,136, 46, 11, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,184,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, 129, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, 129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, @@ -585,7 +585,7 @@ char datatoc_startup_blend[]= { 19, 4, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152, 39, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56, 38, 11, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72, 49, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232, 47, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -593,7 +593,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 40, 11, 3, 68, 65, 84, 65, 72, 3, 0, 0,248, 40, 11, 3,159, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 50, 11, 3, 68, 65, 84, 65, 72, 3, 0, 0,168, 50, 11, 3,159, 0, 0, 0, 1, 0, 0, 0, 37,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249,173,116, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, @@ -620,20 +620,20 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168, 44, 11, 3,160, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88, 54, 11, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0,104, 23, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0,192, 34, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, - 8, 46, 11, 3,199, 0, 0, 0, 1, 0, 0, 0,232, 50, 11, 3, 80, 33, 11, 3, 0, 7, 11, 3,168, 4, 11, 3,136, 6, 11, 3, -120, 7, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 16, 16, 20, 4,166, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 49, 11, 3,144, 49, 11, 3,208, 46, 11, 3, 48, 48, 11, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208, 46, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, - 48, 48, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, +184, 55, 11, 3,199, 0, 0, 0, 1, 0, 0, 0,152, 60, 11, 3, 0, 43, 11, 3,176, 16, 11, 3, 88, 14, 11, 3, 56, 16, 11, 3, + 40, 17, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 16, 16, 20, 4,166, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 59, 11, 3, 64, 59, 11, 3,128, 56, 11, 3,224, 57, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 56, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, +224, 57, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, @@ -641,7 +641,7 @@ char datatoc_startup_blend[]= { 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 48, 48, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 46, 11, 3, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, +224, 57, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 56, 11, 3, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,110,142,241,195, 55,199,120, 68,240, 80,128,193,136, 2, 4, 68, 3, 4, 0, 0, 20, 4, 0, 0, 18, 0, 0, 0, 139, 1, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 18, 0, 0, 0, 139, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,236, 81,184, 61, 10,215, 19, 64, 10, 0, 0, 0, @@ -649,19 +649,19 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 19, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,244, 0, 0, 0,144, 49, 11, 3,177, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,244, 0, 0, 0, 64, 59, 11, 3,177, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 61,181, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 61,181, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,232, 50, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 8, 46, 11, 3,200, 2, 11, 3, 0, 7, 11, 3,240, 7, 11, 3,104, 8, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,152, 60, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,184, 55, 11, 3,120, 12, 11, 3,176, 16, 11, 3,160, 17, 11, 3, 24, 18, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 6, 6, 0, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 55, 11, 3,208, 55, 11, 3,176, 51, 11, 3,112, 54, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,176, 51, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 16, 53, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, +128, 65, 11, 3,128, 65, 11, 3, 96, 61, 11, 3, 32, 64, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 96, 61, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,192, 62, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, @@ -669,8 +669,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16, 53, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, -112, 54, 11, 3,176, 51, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192, 62, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, + 32, 64, 11, 3, 96, 61, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -678,7 +678,7 @@ char datatoc_startup_blend[]= { 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -112, 54, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 53, 11, 3, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 32, 64, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192, 62, 11, 3, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0,191, 0, 0,192, 63, 0, 0, 64, 60, 0, 0,125, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -686,7 +686,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,255, 1, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0,208, 55, 11, 3,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0,128, 65, 11, 3,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, @@ -951,93 +951,93 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,232, 89, 11, 3,195, 0, 0, 0, - 1, 0, 0, 0,232, 18, 12, 3,216, 1, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 90, 11, 3, 0, 96, 11, 3, -120, 96, 11, 3,248,104, 11, 3,120,105, 11, 3,160,185, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,116,170, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216, 90, 11, 3,196, 0, 0, 0, - 1, 0, 0, 0, 80, 91, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 80, 91, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,200, 91, 11, 3,216, 90, 11, 3, 0, 0, 0, 0, 0, 0,202, 3, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,200, 91, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 64, 92, 11, 3, 80, 91, 11, 3, 0, 0, 0, 0, -136, 6,202, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64, 92, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,184, 92, 11, 3, -200, 91, 11, 3, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184, 92, 11, 3,196, 0, 0, 0, - 1, 0, 0, 0, 48, 93, 11, 3, 64, 92, 11, 3, 0, 0, 0, 0, 0, 0,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 48, 93, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,168, 93, 11, 3,184, 92, 11, 3, 0, 0, 0, 0,136, 6,175, 3, 1, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,168, 93, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 94, 11, 3, 48, 93, 11, 3, 0, 0, 0, 0, -108, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 94, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,152, 94, 11, 3, -168, 93, 11, 3, 0, 0, 0, 0,108, 5,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152, 94, 11, 3,196, 0, 0, 0, - 1, 0, 0, 0, 16, 95, 11, 3, 32, 94, 11, 3, 0, 0, 0, 0,108, 5, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 16, 95, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,136, 95, 11, 3,152, 94, 11, 3, 0, 0, 0, 0,136, 6, 4, 3, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,136, 95, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 96, 11, 3, 16, 95, 11, 3, 0, 0, 0, 0, - 0, 0, 80, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 96, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -136, 95, 11, 3, 0, 0, 0, 0,108, 5, 80, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120, 96, 11, 3,197, 0, 0, 0, - 1, 0, 0, 0,248, 96, 11, 3, 0, 0, 0, 0, 80, 91, 11, 3,200, 91, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,248, 96, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,120, 97, 11, 3,120, 96, 11, 3, 80, 91, 11, 3,184, 92, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120, 97, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,248, 97, 11, 3, -248, 96, 11, 3,200, 91, 11, 3, 48, 93, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248, 97, 11, 3, -197, 0, 0, 0, 1, 0, 0, 0,120, 98, 11, 3,120, 97, 11, 3,184, 92, 11, 3, 48, 93, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,120, 98, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,248, 98, 11, 3,248, 97, 11, 3,216, 90, 11, 3, -168, 93, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248, 98, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, -120, 99, 11, 3,120, 98, 11, 3, 64, 92, 11, 3,168, 93, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -120, 99, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,248, 99, 11, 3,248, 98, 11, 3,184, 92, 11, 3, 32, 94, 11, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248, 99, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,120,100, 11, 3,120, 99, 11, 3, - 48, 93, 11, 3, 32, 94, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,100, 11, 3,197, 0, 0, 0, - 1, 0, 0, 0,248,100, 11, 3,248, 99, 11, 3,168, 93, 11, 3,152, 94, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,248,100, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,120,101, 11, 3,120,100, 11, 3, 32, 94, 11, 3,152, 94, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,101, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,248,101, 11, 3, -248,100, 11, 3, 48, 93, 11, 3, 16, 95, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,101, 11, 3, -197, 0, 0, 0, 1, 0, 0, 0,120,102, 11, 3,120,101, 11, 3, 64, 92, 11, 3, 16, 95, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,120,102, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,248,102, 11, 3,248,101, 11, 3,152, 94, 11, 3, - 16, 95, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,102, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, -120,103, 11, 3,120,102, 11, 3,216, 90, 11, 3,136, 95, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -120,103, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,248,103, 11, 3,248,102, 11, 3,184, 92, 11, 3,136, 95, 11, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,103, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,120,104, 11, 3,120,103, 11, 3, - 32, 94, 11, 3, 0, 96, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,104, 11, 3,197, 0, 0, 0, - 1, 0, 0, 0,248,104, 11, 3,248,103, 11, 3,168, 93, 11, 3, 0, 96, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,248,104, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120,104, 11, 3,136, 95, 11, 3, 0, 96, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,120,105, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, 0,109, 11, 3, - 0, 0, 0, 0,184, 92, 11, 3, 80, 91, 11, 3,200, 91, 11, 3, 48, 93, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, -176, 3, 0, 0,202, 3, 0, 0, 7, 7,137, 6, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 8, 0,240,187,245, 2, 80, 18, 12, 3, - 80, 18, 12, 3, 64,106, 11, 3,160,107, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 80,181, 90, 3,176,127, 3, 3, 68, 65, 84, 65, -248, 0, 0, 0, 64,106, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,160,107, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,147, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,152, 99, 11, 3,195, 0, 0, 0, + 1, 0, 0, 0, 64, 30, 12, 3,136, 11, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,100, 11, 3,176,105, 11, 3, + 40,106, 11, 3,168,114, 11, 3, 40,115, 11, 3, 80,195, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, + 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,116,170, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,100, 11, 3,196, 0, 0, 0, + 1, 0, 0, 0, 0,101, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 0,101, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,120,101, 11, 3,136,100, 11, 3, 0, 0, 0, 0, 0, 0,202, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,120,101, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,240,101, 11, 3, 0,101, 11, 3, 0, 0, 0, 0, +136, 6,202, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,101, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,104,102, 11, 3, +120,101, 11, 3, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,102, 11, 3,196, 0, 0, 0, + 1, 0, 0, 0,224,102, 11, 3,240,101, 11, 3, 0, 0, 0, 0, 0, 0,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +224,102, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 88,103, 11, 3,104,102, 11, 3, 0, 0, 0, 0,136, 6,175, 3, 1, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 88,103, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,208,103, 11, 3,224,102, 11, 3, 0, 0, 0, 0, +108, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208,103, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 72,104, 11, 3, + 88,103, 11, 3, 0, 0, 0, 0,108, 5,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,104, 11, 3,196, 0, 0, 0, + 1, 0, 0, 0,192,104, 11, 3,208,103, 11, 3, 0, 0, 0, 0,108, 5, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +192,104, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 56,105, 11, 3, 72,104, 11, 3, 0, 0, 0, 0,136, 6, 4, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 56,105, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,176,105, 11, 3,192,104, 11, 3, 0, 0, 0, 0, + 0, 0, 80, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,105, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 56,105, 11, 3, 0, 0, 0, 0,108, 5, 80, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,106, 11, 3,197, 0, 0, 0, + 1, 0, 0, 0,168,106, 11, 3, 0, 0, 0, 0, 0,101, 11, 3,120,101, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,168,106, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,107, 11, 3, 40,106, 11, 3, 0,101, 11, 3,104,102, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,107, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,168,107, 11, 3, +168,106, 11, 3,120,101, 11, 3,224,102, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,107, 11, 3, +197, 0, 0, 0, 1, 0, 0, 0, 40,108, 11, 3, 40,107, 11, 3,104,102, 11, 3,224,102, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 40,108, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,168,108, 11, 3,168,107, 11, 3,136,100, 11, 3, + 88,103, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,108, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, + 40,109, 11, 3, 40,108, 11, 3,240,101, 11, 3, 88,103, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 40,109, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,168,109, 11, 3,168,108, 11, 3,104,102, 11, 3,208,103, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,109, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,110, 11, 3, 40,109, 11, 3, +224,102, 11, 3,208,103, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,110, 11, 3,197, 0, 0, 0, + 1, 0, 0, 0,168,110, 11, 3,168,109, 11, 3, 88,103, 11, 3, 72,104, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,168,110, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,111, 11, 3, 40,110, 11, 3,208,103, 11, 3, 72,104, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,111, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,168,111, 11, 3, +168,110, 11, 3,224,102, 11, 3,192,104, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,111, 11, 3, +197, 0, 0, 0, 1, 0, 0, 0, 40,112, 11, 3, 40,111, 11, 3,240,101, 11, 3,192,104, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 40,112, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,168,112, 11, 3,168,111, 11, 3, 72,104, 11, 3, +192,104, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,112, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, + 40,113, 11, 3, 40,112, 11, 3,136,100, 11, 3, 56,105, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 40,113, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,168,113, 11, 3,168,112, 11, 3,104,102, 11, 3, 56,105, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,113, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,114, 11, 3, 40,113, 11, 3, +208,103, 11, 3,176,105, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,114, 11, 3,197, 0, 0, 0, + 1, 0, 0, 0,168,114, 11, 3,168,113, 11, 3, 88,103, 11, 3,176,105, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,168,114, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,114, 11, 3, 56,105, 11, 3,176,105, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 40,115, 11, 3,199, 0, 0, 0, 1, 0, 0, 0,176,118, 11, 3, + 0, 0, 0, 0,104,102, 11, 3, 0,101, 11, 3,120,101, 11, 3,224,102, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, +176, 3, 0, 0,202, 3, 0, 0, 7, 7,137, 6, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 8, 0,240,187,245, 2,168, 29, 12, 3, +168, 29, 12, 3,240,115, 11, 3, 80,117, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,200, 5,104, 3,240, 50, 5, 3, 68, 65, 84, 65, +248, 0, 0, 0,240,115, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 80,117, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,176, 3, 0, 0,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160,189,245, 2, 96,207,113, 3, 96,207,113, 3, 0, 0, 0, 0, 0, 0, 0, 0,112,132, 9, 3,216,136, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160,107, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 64,106, 11, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, + 0, 0, 0, 0,160,189,245, 2,160,255,105, 3,160,255,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 96, 59,104, 3, 80,154, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,117, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +240,115, 11, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 3, 0, 0,202, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,188,245, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 0,109, 11, 3, -199, 0, 0, 0, 1, 0, 0, 0,144,174, 11, 3,120,105, 11, 3,168, 93, 11, 3,152, 94, 11, 3, 16, 95, 11, 3, 64, 92, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,176,118, 11, 3, +199, 0, 0, 0, 1, 0, 0, 0, 64,184, 11, 3, 40,115, 11, 3, 88,103, 11, 3, 72,104, 11, 3,192,104, 11, 3,240,101, 11, 3, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 4, 4, 28, 1, 4, 3, 1, 0, 0, 0, 0, 0, - 0, 0, 8, 0, 40,184,245, 2, 48,167, 11, 3,240,173, 11, 3,200,109, 11, 3, 40,111, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, -192,243,244, 2, 64,130, 9, 3, 68, 65, 84, 65,248, 0, 0, 0,200,109, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 40,111, 11, 3, + 0, 0, 8, 0, 40,184,245, 2,224,176, 11, 3,160,183, 11, 3,120,119, 11, 3,216,120, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, +104,243,244, 2, 80, 41, 73, 3, 68, 65, 84, 65,248, 0, 0, 0,120,119, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,216,120, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,142, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 28, 1, 31, 0, 28, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0,229, 2, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,187,245, 2,104,254, 91, 3,104,254, 91, 3, 0, 0, 0, 0, - 0, 0, 0, 0,184,139, 9, 3,200,141, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40,111, 11, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,200,109, 11, 3, 0, 0, 0, 0, 0, 0,142, 67, 0,128, 86,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,187,245, 2,192, 80,108, 3,192, 80,108, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 12,245, 2, 64,159, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,120, 11, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120,119, 11, 3, 0, 0, 0, 0, 0, 0,142, 67, 0,128, 86,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,133, 67, 0, 64, 57,196, 0, 0, 0, 0, 11, 1, 0, 0, 28, 1, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0, 28, 1,229, 2, 11, 1,229, 2, 0, 0,120,196, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0, + 18, 0, 0, 4, 6, 0, 28, 1,229, 2, 11, 1,229, 2, 0, 0,160, 5, 91, 3, 1, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0, 136, 6, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1,229, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,185,245, 2, -192,142,117, 3,208,255,104, 3,136,112, 11, 3,136,165, 11, 3,248,142, 9, 3, 56,147, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,136,112, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 48,114, 11, 3, 0, 0, 0, 0,216,185,245, 2, +104,140,124, 3, 96, 88, 92, 3, 56,122, 11, 3, 56,175, 11, 3,176,219, 91, 3,104,164, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0, 56,122, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,224,123, 11, 3, 0, 0, 0, 0,216,185,245, 2, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1047,8 +1047,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0,220,255, 11, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 48,114, 11, 3, -198, 0, 0, 0, 1, 0, 0, 0,216,115, 11, 3,136,112, 11, 3,120,139, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,224,123, 11, 3, +198, 0, 0, 0, 1, 0, 0, 0,136,125, 11, 3, 56,122, 11, 3,136,169, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1058,8 +1058,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,216,115, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,128,117, 11, 3, - 48,114, 11, 3,144,141, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,136,125, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 48,127, 11, 3, +224,123, 11, 3,160,171, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1069,7 +1069,7 @@ char datatoc_startup_blend[]= { 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,128,117, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 40,119, 11, 3,216,115, 11, 3,168,143, 3, 3, 0, 0, 0, 0, + 64, 1, 0, 0, 48,127, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,216,128, 11, 3,136,125, 11, 3,184,173, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1079,8 +1079,8 @@ char datatoc_startup_blend[]= { 0, 0,140,254, 11, 1,203, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 40,119, 11, 3,198, 0, 0, 0, - 1, 0, 0, 0,208,120, 11, 3,128,117, 11, 3,192,145, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,216,128, 11, 3,198, 0, 0, 0, + 1, 0, 0, 0,128,130, 11, 3, 48,127, 11, 3,208,175, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110, 116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110, 116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1090,8 +1090,8 @@ char datatoc_startup_blend[]= { 0, 0, 6, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208,120, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,120,122, 11, 3, 40,119, 11, 3, -216,147, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,128,130, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 40,132, 11, 3,216,128, 11, 3, +232,177, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1101,7 +1101,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -120,122, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 32,124, 11, 3,208,120, 11, 3,240,149, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, + 40,132, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,208,133, 11, 3,128,130, 11, 3, 0,180, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1111,8 +1111,8 @@ char datatoc_startup_blend[]= { 11, 1,102, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32,124, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, -200,125, 11, 3,120,122, 11, 3, 8,152, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208,133, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, +120,135, 11, 3, 40,132, 11, 3, 24,182, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1122,7 +1122,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,200,125, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,112,127, 11, 3, 32,124, 11, 3, 56,156, 3, 3, + 68, 65, 84, 65, 64, 1, 0, 0,120,135, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 32,137, 11, 3,208,133, 11, 3, 72,186, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, @@ -1132,8 +1132,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0,242,252, 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,112,127, 11, 3, -198, 0, 0, 0, 1, 0, 0, 0, 24,129, 11, 3,200,125, 11, 3, 80,158, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32,137, 11, 3, +198, 0, 0, 0, 1, 0, 0, 0,200,138, 11, 3,120,135, 11, 3, 96,188, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1143,8 +1143,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 24,129, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,192,130, 11, 3, -112,127, 11, 3,104,160, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,200,138, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,112,140, 11, 3, + 32,137, 11, 3,120,190, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1154,7 +1154,7 @@ char datatoc_startup_blend[]= { 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,192,130, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,104,132, 11, 3, 24,129, 11, 3,128,162, 3, 3, 0, 0, 0, 0, + 64, 1, 0, 0,112,140, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 24,142, 11, 3,200,138, 11, 3,144,192, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1164,8 +1164,8 @@ char datatoc_startup_blend[]= { 0, 0,170,252, 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,104,132, 11, 3,198, 0, 0, 0, - 1, 0, 0, 0, 16,134, 11, 3,192,130, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 24,142, 11, 3,198, 0, 0, 0, + 1, 0, 0, 0,192,143, 11, 3,112,140, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99, 111,110,116,101,120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99, 111,110,116,101,120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1175,7 +1175,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 16,134, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,184,135, 11, 3,104,132, 11, 3, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,192,143, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,104,145, 11, 3, 24,142, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, @@ -1186,7 +1186,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -184,135, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 96,137, 11, 3, 16,134, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, +104,145, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 16,147, 11, 3,192,143, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1196,8 +1196,8 @@ char datatoc_startup_blend[]= { 7, 1, 36, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 96,137, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, - 8,139, 11, 3,184,135, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 16,147, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, +184,148, 11, 3,104,145, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111, 109, 95,112,114,111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111, 109, 95,112,114,111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1207,7 +1207,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0, 8,139, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,176,140, 11, 3, 96,137, 11, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,184,148, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 96,150, 11, 3, 16,147, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1217,8 +1217,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 87,254, 7, 1,186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,176,140, 11, 3, -198, 0, 0, 0, 1, 0, 0, 0, 88,142, 11, 3, 8,139, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 96,150, 11, 3, +198, 0, 0, 0, 1, 0, 0, 0, 8,152, 11, 3,184,148, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1228,8 +1228,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 88,142, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 0,144, 11, 3, -176,140, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 8,152, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,176,153, 11, 3, + 96,150, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109, 112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109, 112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1239,7 +1239,7 @@ char datatoc_startup_blend[]= { 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 0,144, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,168,145, 11, 3, 88,142, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 1, 0, 0,176,153, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 88,155, 11, 3, 8,152, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1249,8 +1249,8 @@ char datatoc_startup_blend[]= { 0, 0, 0,251, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,168,145, 11, 3,198, 0, 0, 0, - 1, 0, 0, 0, 80,147, 11, 3, 0,144, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 88,155, 11, 3,198, 0, 0, 0, + 1, 0, 0, 0, 0,157, 11, 3,176,153, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99, 111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99, 111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1260,7 +1260,7 @@ char datatoc_startup_blend[]= { 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80,147, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,248,148, 11, 3,168,145, 11, 3, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 0,157, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,168,158, 11, 3, 88,155, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, @@ -1271,7 +1271,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -248,148, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,160,150, 11, 3, 80,147, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, +168,158, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 80,160, 11, 3, 0,157, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,119,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,119,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1281,8 +1281,8 @@ char datatoc_startup_blend[]= { 7, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,160,150, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, - 72,152, 11, 3,248,148, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80,160, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, +248,161, 11, 3,168,158, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1292,7 +1292,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0, 72,152, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,240,153, 11, 3,160,150, 11, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,248,161, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,160,163, 11, 3, 80,160, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1302,8 +1302,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0,123,253, 7, 1,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,240,153, 11, 3, -198, 0, 0, 0, 1, 0, 0, 0,152,155, 11, 3, 72,152, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,160,163, 11, 3, +198, 0, 0, 0, 1, 0, 0, 0, 72,165, 11, 3,248,161, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1313,8 +1313,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,152,155, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 64,157, 11, 3, -240,153, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 72,165, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,240,166, 11, 3, +160,163, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115, 105,116,121, 95,116,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115, 105,116,121, 95,116,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1324,7 +1324,7 @@ char datatoc_startup_blend[]= { 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 64,157, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,232,158, 11, 3,152,155, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 1, 0, 0,240,166, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,152,168, 11, 3, 72,165, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1334,8 +1334,8 @@ char datatoc_startup_blend[]= { 0, 0,139,253, 7, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,232,158, 11, 3,198, 0, 0, 0, - 1, 0, 0, 0,144,160, 11, 3, 64,157, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,152,168, 11, 3,198, 0, 0, 0, + 1, 0, 0, 0, 64,170, 11, 3,240,166, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1345,7 +1345,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,144,160, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 56,162, 11, 3,232,158, 11, 3, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 64,170, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,232,171, 11, 3,152,168, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1356,7 +1356,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 56,162, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,224,163, 11, 3,144,160, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, +232,171, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,144,173, 11, 3, 64,170, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,100,105,115,116,111,114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,100,105,115,116,111,114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1366,8 +1366,8 @@ char datatoc_startup_blend[]= { 7, 1,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,224,163, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, -136,165, 11, 3, 56,162, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,144,173, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, + 56,175, 11, 3,232,171, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1377,7 +1377,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,136,165, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224,163, 11, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0, 56,175, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144,173, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1387,15 +1387,15 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0,183,253, 7, 1,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 48,167, 11, 3, -165, 0, 0, 0, 1, 0, 0, 0,240,173, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,224,176, 11, 3, +165, 0, 0, 0, 1, 0, 0, 0,160,183, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,248,135, 91, 3,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,112,168, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,208,169, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 88,161, 91, 3,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 32,178, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,128,179, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, @@ -1403,8 +1403,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,169, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, - 48,171, 11, 3,112,168, 11, 3, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,179, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, +224,180, 11, 3, 32,178, 11, 3, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0, @@ -1412,7 +1412,7 @@ char datatoc_startup_blend[]= { 148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 48,171, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,144,172, 11, 3,208,169, 11, 3, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, +224,180, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 64,182, 11, 3,128,179, 11, 3, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -1420,7 +1420,7 @@ char datatoc_startup_blend[]= { 240, 0, 0, 0,136, 6, 0, 0, 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 5, 60, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144,172, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,171, 11, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,182, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224,180, 11, 3, 0, 0, 0, 0, 0,128,175, 68, 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0, 136, 5, 0, 0,153, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1428,189 +1428,189 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0,240,173, 11, 3,168, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 48,167, 11, 3,112,168, 11, 3,144,172, 11, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0,160,183, 11, 3,168, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,224,176, 11, 3, 32,178, 11, 3, 64,182, 11, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0,144,174, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, 56,179, 11, 3, 0,109, 11, 3,216, 90, 11, 3, -136, 95, 11, 3, 0, 96, 11, 3,168, 93, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, - 15, 15,108, 5, 80, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,147,245, 2, 24,178, 11, 3, 24,178, 11, 3, 88,175, 11, 3, -184,176, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,168,143, 9, 3, 96,131, 9, 3, 68, 65, 84, 65,248, 0, 0, 0, 88,175, 11, 3, -200, 0, 0, 0, 1, 0, 0, 0,184,176, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,137, 68, 0, 0, 0, 0, 0, 0,208, 65, + 68, 65, 84, 65, 96, 0, 0, 0, 64,184, 11, 3,199, 0, 0, 0, 1, 0, 0, 0,232,188, 11, 3,176,118, 11, 3,136,100, 11, 3, + 56,105, 11, 3,176,105, 11, 3, 88,103, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, + 15, 15,108, 5, 80, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,147,245, 2,200,187, 11, 3,200,187, 11, 3, 8,185, 11, 3, +104,186, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,128, 26,104, 3,232,149, 9, 3, 68, 65, 84, 65,248, 0, 0, 0, 8,185, 11, 3, +200, 0, 0, 0, 1, 0, 0, 0,104,186, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,137, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,173, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,108, 5, 26, 0,108, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 26, 0, 5, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,149,245, 2, -120,233,244, 2,120,233,244, 2, 0, 0, 0, 0, 0, 0, 0, 0,136,149, 10, 3,152,151, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,184,176, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88,175, 11, 3, 0, 0, 64,192, + 0, 24,120, 3, 0, 24,120, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48,157, 9, 3, 88,169, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,104,186, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8,185, 11, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 107, 5, 0, 0, 18, 0, 0, 0, 53, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,108, 5, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 26, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 54, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104,148,245, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,152, 10, 3, -224,157, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 24,178, 11, 3,176, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,104,148,245, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,170, 10, 3, +160,175, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0,200,187, 11, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0, 56,179, 11, 3,199, 0, 0, 0, 1, 0, 0, 0,160,185, 11, 3,144,174, 11, 3,152, 94, 11, 3, 32, 94, 11, 3, - 48, 93, 11, 3, 16, 95, 11, 3, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, 5, 3, 0, 0,174, 3, 0, 0, 3, 3, 28, 1, -170, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,145,245, 2,192,182, 11, 3,192,182, 11, 3, 0,180, 11, 3, 96,181, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0,232,147, 10, 3,136,137, 9, 3, 68, 65, 84, 65,248, 0, 0, 0, 0,180, 11, 3,200, 0, 0, 0, - 1, 0, 0, 0, 96,181, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 96, 0, 0, 0,232,188, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, 80,195, 11, 3, 64,184, 11, 3, 72,104, 11, 3,208,103, 11, 3, +224,102, 11, 3,192,104, 11, 3, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, 5, 3, 0, 0,174, 3, 0, 0, 3, 3, 28, 1, +170, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,145,245, 2,112,192, 11, 3,112,192, 11, 3,176,189, 11, 3, 16,191, 11, 3, + 0, 0, 0, 0, 0, 0, 0, 0,200,160, 10, 3, 24, 14,245, 2, 68, 65, 84, 65,248, 0, 0, 0,176,189, 11, 3,200, 0, 0, 0, + 1, 0, 0, 0, 16,191, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,142, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 28, 1, 26, 0, 28, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, 149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 26, 0, 7, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,146,245, 2,200,217,107, 3, -200,217,107, 3, 0, 0, 0, 0, 0, 0, 0, 0,192,160, 10, 3,208,162, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 96,181, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,180, 11, 3, 0, 0, 0, 0, 0,128,131, 67, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,146,245, 2,136,253,103, 3, +136,253,103, 3, 0, 0, 0, 0, 0, 0, 0, 0,128,178, 10, 3,144,180, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 16,191, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,189, 11, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,133, 67, 0, 0,252,194, 0, 0, 0, 0, 11, 1, 0, 0, 28, 1, 0, 0, 18, 0, 0, 0,143, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0,143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 28, 1,144, 0, 11, 1,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, 5, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1,144, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,248,145,245, 2, 32, 82,104, 3, 32, 82,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,164, 10, 3, 40,166, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,192,182, 11, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,248,145,245, 2, 56,169,111, 7, 56,169,111, 7, 0, 0, 0, 0, 0, 0, 0, 0,192,181, 10, 3, 72, 64, 3, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,112,192, 11, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,249,109, 3,240,249,109, 3, 32,184, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 40,123, 3,160, 40,123, 3,208,193, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, - 32,184, 11, 3,223, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,144,184, 11, 3, 68, 65, 84, 65,168, 0, 0, 0, -144,184, 11, 3,222, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 72,254, 12, 3, 19, 0, 0, 0, 1, 0, 1, 0, - 72,254, 12, 3, 20, 0, 0, 0, 1, 0, 1, 0, 72,254, 12, 3, 21, 0, 1, 0, 1, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 8, 21, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,168, 27, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,176,110, 14, 3, - 0, 0, 0, 0, 1, 0, 1, 0,240, 37, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,192,203, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, -176, 33, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,184, 16, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,104, 23, 13, 3, 0, 0, 0, 0, - 1, 0, 1, 0,232, 15, 13, 3, 21, 0, 0, 0, 1, 0, 1, 0, 72,254, 12, 3, 68, 65, 84, 65, 96, 0, 0, 0,160,185, 11, 3, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,179, 11, 3,136, 95, 11, 3,184, 92, 11, 3, 32, 94, 11, 3, 0, 96, 11, 3, +208,193, 11, 3,223, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 64,194, 11, 3, 68, 65, 84, 65,168, 0, 0, 0, + 64,194, 11, 3,222, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,160, 9, 13, 3, 19, 0, 0, 0, 1, 0, 1, 0, +160, 9, 13, 3, 20, 0, 0, 0, 1, 0, 1, 0,160, 9, 13, 3, 21, 0, 1, 0, 1, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 96, 32, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 39, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 8,122, 14, 3, + 0, 0, 0, 0, 1, 0, 1, 0, 72, 49, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 24,215, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, + 8, 45, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 16, 28, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,192, 34, 13, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 64, 27, 13, 3, 21, 0, 0, 0, 1, 0, 1, 0,160, 9, 13, 3, 68, 65, 84, 65, 96, 0, 0, 0, 80,195, 11, 3, +199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232,188, 11, 3, 56,105, 11, 3,104,102, 11, 3,208,103, 11, 3,176,105, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 81, 0, 0, 0,174, 3, 0, 0, 1, 1,108, 5, 94, 3, 1, 0, 0, 0, 0, 0, - 0, 0, 8, 0,232,149,245, 2,128,218, 11, 3,176, 17, 12, 3,104,186, 11, 3,112,213, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 24,138, 9, 3,216,166, 10, 3, 68, 65, 84, 65,248, 0, 0, 0,104,186, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,200,187, 11, 3, + 0, 0, 8, 0,232,149,245, 2,216,229, 11, 3, 8, 29, 12, 3, 24,196, 11, 3,200,224, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, +168,218,103, 3, 40,226,123, 3, 68, 65, 84, 65,248, 0, 0, 0, 24,196, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,120,197, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,173, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,108, 5, 26, 0,108, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 81, 0, 0, 0,106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 26, 0, 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,159,245, 2,120,201, 90, 3,120,201, 90, 3, 0, 0, 0, 0, - 0, 0, 0, 0,184,170, 10, 3, 72, 64, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200,187, 11, 3, -200, 0, 0, 0, 1, 0, 0, 0, 8,209, 11, 3,104,186, 11, 3, 0, 0, 0, 0, 0, 0, 32, 67, 0, 0, 27,196, 0, 0, 0, 0, + 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,159,245, 2,216,160,109, 3,216,160,109, 3, 0, 0, 0, 0, + 0, 0, 0, 0,216, 68, 3, 3, 96, 72, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,197, 11, 3, +200, 0, 0, 0, 1, 0, 0, 0, 96,220, 11, 3, 24,196, 11, 3, 0, 0, 0, 0, 0, 0, 32, 67, 0, 0, 27,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 0, 27,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,107, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,107, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,108, 2,143, 0,108, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 67, 1, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,108, 2, 10, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0,160, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,156,245, 2, -208, 66,105, 3,208, 66,105, 3, 40,189, 11, 3,184,220,112, 3,120, 65, 3, 3,136, 67, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0, 40,189, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,208,190, 11, 3, 0, 0, 0, 0,224, 82, 9, 3, +160, 61, 93, 3,160, 61, 93, 3,216,198, 11, 3,184,218, 11, 3,144, 73, 3, 3,160, 75, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,216,198, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,128,200, 11, 3, 0, 0, 0, 0, 72, 96, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 42,254,143, 0,190, 1, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 42,254,143, 0,190, 1, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208,190, 11, 3, -198, 0, 0, 0, 1, 0, 0, 0,120,192, 11, 3, 40,189, 11, 3, 0,108, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,128,200, 11, 3, +198, 0, 0, 0, 1, 0, 0, 0, 40,202, 11, 3,216,198, 11, 3,104,121, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90,254,143, 0,142, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117,254,143, 0,115, 1, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,120,192, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 32,194, 11, 3, -208,190, 11, 3, 24,110, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 40,202, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,208,203, 11, 3, +128,200, 11, 3,128,123, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115, 104, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115, 104, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,252,143, 0,213, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,252,143, 0,213, 1, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 32,194, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,200,195, 11, 3,120,192, 11, 3, 48,112, 9, 3, 0, 0, 0, 0, + 64, 1, 0, 0,208,203, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,120,205, 11, 3, 40,202, 11, 3,152,125, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,127,253,143, 0,195, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,154,253,143, 0,195, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,200,195, 11, 3,198, 0, 0, 0, - 1, 0, 0, 0,112,197, 11, 3, 32,194, 11, 3, 72,114, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,120,205, 11, 3,198, 0, 0, 0, + 1, 0, 0, 0, 32,207, 11, 3,208,203, 11, 3,176,127, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, 111,108,115, 95, 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, 111,108,115, 95, 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,253,143, 0,231, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94,253,143, 0,231, 0, 0, 0, 0, 0, + 4, 0, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,112,197, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 24,199, 11, 3,200,195, 11, 3, - 96,116, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32,207, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,200,208, 11, 3,120,205, 11, 3, +200,129, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112, 112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112, 112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,253,143, 0, 91, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,186,253,143, 0, 91, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 24,199, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,192,200, 11, 3,112,197, 11, 3,120,118, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, +200,208, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,112,210, 11, 3, 32,207, 11, 3,224,131, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166,253, -143, 0, 36, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193,253, +143, 0, 36, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,192,200, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, -104,202, 11, 3, 24,199, 11, 3,144,120, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,112,210, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, + 24,212, 11, 3,200,208, 11, 3,248,133, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,253,143, 0,225, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,253,143, 0,225, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,104,202, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 16,204, 11, 3,192,200, 11, 3,168,122, 9, 3, + 68, 65, 84, 65, 64, 1, 0, 0, 24,212, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,192,213, 11, 3,112,210, 11, 3, 16,136, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 73,253,143, 0,132, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 73,253,143, 0,132, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 16,204, 11, 3, -198, 0, 0, 0, 1, 0, 0, 0,184,205, 11, 3,104,202, 11, 3,200, 80, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,192,213, 11, 3, +198, 0, 0, 0, 1, 0, 0, 0,104,215, 11, 3, 24,212, 11, 3, 48, 94, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1620,8 +1620,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,184,205, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 96,207, 11, 3, - 16,204, 11, 3,216,126, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,104,215, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 16,217, 11, 3, +192,213, 11, 3, 64,140, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103, 104,116,112, 97,105,110,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103, 104,116,112, 97,105,110,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1631,7 +1631,7 @@ char datatoc_startup_blend[]= { 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 96,207, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,184,220,112, 3,184,205, 11, 3,248,144, 9, 3, 0, 0, 0, 0, + 64, 1, 0, 0, 16,217, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,184,218, 11, 3,104,215, 11, 3, 88,142, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, @@ -1641,8 +1641,8 @@ char datatoc_startup_blend[]= { 0, 0,241,252,143, 0, 9, 1, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,184,220,112, 3,198, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 96,207, 11, 3,192,124, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,184,218, 11, 3,198, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 16,217, 11, 3, 40,138, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, 111,108,115, 95,118,101,114,116,101,120,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, 111,108,115, 95,118,101,114,116,101,120,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1652,15 +1652,15 @@ char datatoc_startup_blend[]= { 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,209, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 16,212, 11, 3,200,187, 11, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,220, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,104,223, 11, 3,120,197, 11, 3, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0, 90,195, 0, 0, 0, 0, 0, 0, 0, 0,227,102, 16, 67, 24, 30, 90,195, 0, 0, 0, 0, 143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,216, 0,143, 0,216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,107, 0, 0, 0, 66, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,216, 0, 11, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,157,245, 2, 40, 23,113, 3, 40, 23,113, 3,104,210, 11, 3,104,210, 11, 3, -184, 68, 3, 3,200, 70, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,104,210, 11, 3,198, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,157,245, 2,232,179,129, 3,232,179,129, 3,192,221, 11, 3,192,221, 11, 3, +208, 76, 3, 3,224, 78, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,192,221, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,157,245, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97, 115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97, @@ -1671,7 +1671,7 @@ char datatoc_startup_blend[]= { 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,212, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,112,213, 11, 3, 8,209, 11, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104,223, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,200,224, 11, 3, 96,220, 11, 3, 0, 0, 0, 0, 0, 0, 52, 67, 0,192,115,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,115,196, 0, 0, 0, 0, 163, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1679,16 +1679,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0,107, 5, 0, 0,107, 0, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,151,245, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,213, 11, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 16,212, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200,224, 11, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,104,223, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 0, 0,107, 5, 0, 0, -107, 0, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,204, 4, 68, 3, 12, 0, 0, 0, +107, 0, 0, 0,174, 3, 0, 0,160, 0, 0, 0,107, 5, 0, 0,107, 0, 0, 0,174, 3, 0, 0,204, 4, 68, 3, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,150,245, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 99, 3, 3, 24, 99, 3, 3, 0, 0, 0, 0,208,214, 11, 3, 68, 65, 84, 65, - 72, 3, 0, 0,208,214, 11, 3,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,107, 3, 3, 48,107, 3, 3, 0, 0, 0, 0, 40,226, 11, 3, 68, 65, 84, 65, + 72, 3, 0, 0, 40,226, 11, 3,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92,165,205, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,218,205, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, @@ -1715,15 +1715,15 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 30, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -128,218, 11, 3,160, 0, 0, 0, 1, 0, 0, 0,160,222, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +216,229, 11, 3,160, 0, 0, 0, 1, 0, 0, 0,248,233, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104, 23, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,192, 34, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 24, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 64,156, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,219, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 64,221, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,231, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,152,232, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 48, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,197, 68, 0, 0,200, 65, 0,224,197, 68, 0, 0,200, 65, @@ -1731,8 +1731,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,221, 11, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,224,219, 11, 3, 0, 0, 0, 0, 0,128,241, 67, 0,128, 90,196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,232, 11, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 56,231, 11, 3, 0, 0, 0, 0, 0,128,241, 67, 0,128, 90,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,195, 68, 0, 64,111,196, 0, 0, 0, 0, 31, 6, 0, 0, 48, 6, 0, 0, 18, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, 30, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 30, 6, 0, 0, 18, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, @@ -1740,21 +1740,21 @@ char datatoc_startup_blend[]= { 119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -252, 0, 0, 0,160,222, 11, 3,169, 0, 0, 0, 1, 0, 0, 0,176,234, 11, 3,128,218, 11, 3,224,219, 11, 3, 64,221, 11, 3, +252, 0, 0, 0,248,233, 11, 3,169, 0, 0, 0, 1, 0, 0, 0, 8,246, 11, 3,216,229, 11, 3, 56,231, 11, 3,152,232, 11, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,235, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 11, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 0,224, 11, 3,223, 0, 0, 0, 1, 0, 0, 0, - 93, 0, 0, 0, 93, 0, 0, 0,112,224, 11, 3, 68, 65, 84, 65, 92, 4, 0, 0,112,224, 11, 3,222, 0, 0, 0, 93, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 72,254, 12, 3, 19, 0, 0, 0, 1, 0, 0, 0, 72,254, 12, 3, 20, 0, 0, 0, 1, 0, 0, 0, - 72,254, 12, 3, 21, 0, 0, 0, 1, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, 1, 0, 0, 0, 8, 21, 13, 3, 0, 0, 0, 0, - 1, 0, 0, 0,168, 27, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,176,110, 14, 3, 0, 0, 0, 0, 1, 0, 0, 0,240, 37, 13, 3, - 0, 0, 0, 0, 1, 0, 0, 0,192,203, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,176, 33, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, -184, 16, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,104, 23, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,232, 15, 13, 3, 30, 0,255,255, + 0, 0, 0, 0, 0, 0, 11, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 88,235, 11, 3,223, 0, 0, 0, 1, 0, 0, 0, + 93, 0, 0, 0, 93, 0, 0, 0,200,235, 11, 3, 68, 65, 84, 65, 92, 4, 0, 0,200,235, 11, 3,222, 0, 0, 0, 93, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160, 9, 13, 3, 19, 0, 0, 0, 1, 0, 0, 0,160, 9, 13, 3, 20, 0, 0, 0, 1, 0, 0, 0, +160, 9, 13, 3, 21, 0, 0, 0, 1, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 96, 32, 13, 3, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 39, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 8,122, 14, 3, 0, 0, 0, 0, 1, 0, 0, 0, 72, 49, 13, 3, + 0, 0, 0, 0, 1, 0, 0, 0, 24,215, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 8, 45, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, + 16, 28, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,192, 34, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 64, 27, 13, 3, 30, 0,255,255, 0, 0, 1, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 7, 0, @@ -1785,7 +1785,7 @@ char datatoc_startup_blend[]= { 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 48,229, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,144,230, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 67, +248, 0, 0, 0,136,240, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,232,241, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,197, 68, 0, 0,200, 65, 0,224,197, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -1793,16 +1793,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144,230, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,240,231, 11, 3, - 48,229, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232,241, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 72,243, 11, 3, +136,240, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,231, 11, 3, -200, 0, 0, 0, 1, 0, 0, 0, 80,233, 11, 3,144,230, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,243, 11, 3, +200, 0, 0, 0, 1, 0, 0, 0,168,244, 11, 3,232,241, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1810,7 +1810,7 @@ char datatoc_startup_blend[]= { 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 80,233, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240,231, 11, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,168,244, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72,243, 11, 3, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 38,192, 0, 0,102, 64, 0,192,179,191, 0,224, 25, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 0, 0, 0, 0, 0, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1818,8 +1818,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0,176,234, 11, 3,170, 0, 0, 0, 1, 0, 0, 0, -176, 17, 12, 3,160,222, 11, 3, 48,229, 11, 3, 80,233, 11, 3, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0, 8,246, 11, 3,170, 0, 0, 0, 1, 0, 0, 0, + 8, 29, 12, 3,248,233, 11, 3,136,240, 11, 3,168,244, 11, 3, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -2084,7 +2084,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 48, 12, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,144, 13, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, 0, 0, 0, 0, +136, 23, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,232, 24, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -2092,7 +2092,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144, 13, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,240, 14, 12, 3, 48, 12, 12, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232, 24, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 72, 26, 12, 3,136, 23, 12, 3, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, 0, 0, 0, 0, 223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2100,8 +2100,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240, 14, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0, 80, 16, 12, 3,144, 13, 12, 3, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72, 26, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0,168, 27, 12, 3,232, 24, 12, 3, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, @@ -2109,7 +2109,7 @@ char datatoc_startup_blend[]= { 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 80, 16, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240, 14, 12, 3, 0, 0, 0, 0, 0,128,175, 68, +248, 0, 0, 0,168, 27, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72, 26, 12, 3, 0, 0, 0, 0, 0,128,175, 68, 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0,136, 5, 0, 0,153, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, @@ -2117,65 +2117,65 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0,176, 17, 12, 3,168, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -176,234, 11, 3, 48, 12, 12, 3, 80, 16, 12, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0, 8, 29, 12, 3,168, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 8,246, 11, 3,136, 23, 12, 3,168, 27, 12, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, -232, 18, 12, 3,195, 0, 0, 0, 1, 0, 0, 0,200, 76, 12, 3,232, 89, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97, + 64, 30, 12, 3,195, 0, 0, 0, 1, 0, 0, 0, 48, 88, 12, 3,152, 99, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97, 109,101, 32, 76,111,103,105, 99, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 19, 12, 3,240, 25, 12, 3,104, 26, 12, 3,104, 36, 12, 3,232, 36, 12, 3,216, 69, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 72,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 31, 12, 3, 72, 37, 12, 3,192, 37, 12, 3,192, 47, 12, 3, 72, 48, 12, 3, 64, 81, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, +160, 9, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -216, 19, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 80, 20, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 80, 20, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,200, 20, 12, 3,216, 19, 12, 3, 0, 0, 0, 0, - 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200, 20, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 64, 21, 12, 3, - 80, 20, 12, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64, 21, 12, 3,196, 0, 0, 0, - 1, 0, 0, 0,184, 21, 12, 3,200, 20, 12, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -184, 21, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 48, 22, 12, 3, 64, 21, 12, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 48, 22, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,168, 22, 12, 3,184, 21, 12, 3, 0, 0, 0, 0, -254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168, 22, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 23, 12, 3, - 48, 22, 12, 3, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 23, 12, 3,196, 0, 0, 0, - 1, 0, 0, 0,152, 23, 12, 3,168, 22, 12, 3, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -152, 23, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 16, 24, 12, 3, 32, 23, 12, 3, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 16, 24, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,136, 24, 12, 3,152, 23, 12, 3, 0, 0, 0, 0, -254, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136, 24, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 25, 12, 3, - 16, 24, 12, 3, 0, 0, 0, 0,124, 3, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 25, 12, 3,196, 0, 0, 0, - 1, 0, 0, 0,120, 25, 12, 3,136, 24, 12, 3, 0, 0, 0, 0,124, 3,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -120, 25, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,240, 25, 12, 3, 0, 25, 12, 3, 0, 0, 0, 0,212, 0, 20, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,240, 25, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120, 25, 12, 3, 0, 0, 0, 0, -212, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104, 26, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 26, 12, 3, - 0, 0, 0, 0, 80, 20, 12, 3,200, 20, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 26, 12, 3, -197, 0, 0, 0, 1, 0, 0, 0,104, 27, 12, 3,104, 26, 12, 3, 80, 20, 12, 3,184, 21, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,104, 27, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 27, 12, 3,232, 26, 12, 3,200, 20, 12, 3, - 48, 22, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 27, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, -104, 28, 12, 3,104, 27, 12, 3,184, 21, 12, 3, 48, 22, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -104, 28, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 28, 12, 3,232, 27, 12, 3,184, 21, 12, 3,168, 22, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 28, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,104, 29, 12, 3,104, 28, 12, 3, -168, 22, 12, 3, 32, 23, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104, 29, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0,232, 29, 12, 3,232, 28, 12, 3, 64, 21, 12, 3,152, 23, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,232, 29, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,104, 30, 12, 3,104, 29, 12, 3, 32, 23, 12, 3,152, 23, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104, 30, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 30, 12, 3, -232, 29, 12, 3,216, 19, 12, 3,168, 22, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 30, 12, 3, -197, 0, 0, 0, 1, 0, 0, 0,104, 31, 12, 3,104, 30, 12, 3,216, 19, 12, 3,152, 23, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,104, 31, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 31, 12, 3,232, 30, 12, 3, 48, 22, 12, 3, - 16, 24, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 31, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, -104, 32, 12, 3,104, 31, 12, 3, 64, 21, 12, 3, 16, 24, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -104, 32, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 32, 12, 3,232, 31, 12, 3, 32, 23, 12, 3, 16, 24, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 32, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,104, 33, 12, 3,104, 32, 12, 3, -136, 24, 12, 3, 0, 25, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104, 33, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0,232, 33, 12, 3,232, 32, 12, 3, 48, 22, 12, 3, 0, 25, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,232, 33, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,104, 34, 12, 3,104, 33, 12, 3, 16, 24, 12, 3,136, 24, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104, 34, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 34, 12, 3, -232, 33, 12, 3,168, 22, 12, 3,120, 25, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 34, 12, 3, -197, 0, 0, 0, 1, 0, 0, 0,104, 35, 12, 3,104, 34, 12, 3,136, 24, 12, 3,120, 25, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,104, 35, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,232, 35, 12, 3,232, 34, 12, 3,184, 21, 12, 3, -240, 25, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 35, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, -104, 36, 12, 3,104, 35, 12, 3, 0, 25, 12, 3,240, 25, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -104, 36, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232, 35, 12, 3,120, 25, 12, 3,240, 25, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,232, 36, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,112, 40, 12, 3, 0, 0, 0, 0, -184, 21, 12, 3, 80, 20, 12, 3,200, 20, 12, 3, 48, 22, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, -214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 48, 76, 12, 3, 48, 76, 12, 3, -176, 37, 12, 3, 16, 39, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -176, 37, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 16, 39, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, + 48, 31, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,168, 31, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,168, 31, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 32, 12, 3, 48, 31, 12, 3, 0, 0, 0, 0, + 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 32, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,152, 32, 12, 3, +168, 31, 12, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152, 32, 12, 3,196, 0, 0, 0, + 1, 0, 0, 0, 16, 33, 12, 3, 32, 32, 12, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 16, 33, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,136, 33, 12, 3,152, 32, 12, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,136, 33, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 34, 12, 3, 16, 33, 12, 3, 0, 0, 0, 0, +254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 34, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,120, 34, 12, 3, +136, 33, 12, 3, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120, 34, 12, 3,196, 0, 0, 0, + 1, 0, 0, 0,240, 34, 12, 3, 0, 34, 12, 3, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +240, 34, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,104, 35, 12, 3,120, 34, 12, 3, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,104, 35, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,224, 35, 12, 3,240, 34, 12, 3, 0, 0, 0, 0, +254, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224, 35, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 88, 36, 12, 3, +104, 35, 12, 3, 0, 0, 0, 0,124, 3, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 88, 36, 12, 3,196, 0, 0, 0, + 1, 0, 0, 0,208, 36, 12, 3,224, 35, 12, 3, 0, 0, 0, 0,124, 3,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +208, 36, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 72, 37, 12, 3, 88, 36, 12, 3, 0, 0, 0, 0,212, 0, 20, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 72, 37, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 36, 12, 3, 0, 0, 0, 0, +212, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 37, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 38, 12, 3, + 0, 0, 0, 0,168, 31, 12, 3, 32, 32, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 38, 12, 3, +197, 0, 0, 0, 1, 0, 0, 0,192, 38, 12, 3,192, 37, 12, 3,168, 31, 12, 3, 16, 33, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,192, 38, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 39, 12, 3, 64, 38, 12, 3, 32, 32, 12, 3, +136, 33, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 39, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, +192, 39, 12, 3,192, 38, 12, 3, 16, 33, 12, 3,136, 33, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +192, 39, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 40, 12, 3, 64, 39, 12, 3, 16, 33, 12, 3, 0, 34, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 40, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 40, 12, 3,192, 39, 12, 3, + 0, 34, 12, 3,120, 34, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 40, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0, 64, 41, 12, 3, 64, 40, 12, 3,152, 32, 12, 3,240, 34, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 64, 41, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 41, 12, 3,192, 40, 12, 3,120, 34, 12, 3,240, 34, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 41, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 42, 12, 3, + 64, 41, 12, 3, 48, 31, 12, 3, 0, 34, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 42, 12, 3, +197, 0, 0, 0, 1, 0, 0, 0,192, 42, 12, 3,192, 41, 12, 3, 48, 31, 12, 3,240, 34, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,192, 42, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 43, 12, 3, 64, 42, 12, 3,136, 33, 12, 3, +104, 35, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 43, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, +192, 43, 12, 3,192, 42, 12, 3,152, 32, 12, 3,104, 35, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +192, 43, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 44, 12, 3, 64, 43, 12, 3,120, 34, 12, 3,104, 35, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 44, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 44, 12, 3,192, 43, 12, 3, +224, 35, 12, 3, 88, 36, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 44, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0, 64, 45, 12, 3, 64, 44, 12, 3,136, 33, 12, 3, 88, 36, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 64, 45, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 45, 12, 3,192, 44, 12, 3,104, 35, 12, 3,224, 35, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 45, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 46, 12, 3, + 64, 45, 12, 3, 0, 34, 12, 3,208, 36, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 46, 12, 3, +197, 0, 0, 0, 1, 0, 0, 0,192, 46, 12, 3,192, 45, 12, 3,224, 35, 12, 3,208, 36, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,192, 46, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 47, 12, 3, 64, 46, 12, 3, 16, 33, 12, 3, + 72, 37, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 47, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, +192, 47, 12, 3,192, 46, 12, 3, 88, 36, 12, 3, 72, 37, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +192, 47, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 47, 12, 3,208, 36, 12, 3, 72, 37, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 72, 48, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,208, 51, 12, 3, 0, 0, 0, 0, + 16, 33, 12, 3,168, 31, 12, 3, 32, 32, 12, 3,136, 33, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, +214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,152, 87, 12, 3,152, 87, 12, 3, + 16, 49, 12, 3,112, 50, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 16, 49, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,112, 50, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -2183,7 +2183,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16, 39, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176, 37, 12, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112, 50, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 49, 12, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, 112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2191,11 +2191,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,112, 40, 12, 3,199, 0, 0, 0, - 1, 0, 0, 0, 56, 45, 12, 3,232, 36, 12, 3,152, 23, 12, 3, 32, 23, 12, 3, 16, 24, 12, 3, 64, 21, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,208, 51, 12, 3,199, 0, 0, 0, + 1, 0, 0, 0,152, 56, 12, 3, 72, 48, 12, 3,240, 34, 12, 3,120, 34, 12, 3,104, 35, 12, 3,152, 32, 12, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 4, 4,234, 0, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,248, 43, 12, 3,248, 43, 12, 3, 56, 41, 12, 3,152, 42, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56, 41, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,152, 42, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 88, 55, 12, 3, 88, 55, 12, 3,152, 52, 12, 3,248, 53, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152, 52, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,248, 53, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, @@ -2203,8 +2203,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0,245, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152, 42, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 56, 41, 12, 3, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248, 53, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,152, 52, 12, 3, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, 254,255, 88, 67,254,255,116,195, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, @@ -2212,18 +2212,18 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -216, 0, 0, 0,248, 43, 12, 3,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +216, 0, 0, 0, 88, 55, 12, 3,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0, -160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 56, 45, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,184, 50, 12, 3, -112, 40, 12, 3,216, 19, 12, 3,168, 22, 12, 3, 32, 23, 12, 3,152, 23, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, - 0, 0, 0, 0, 19, 1, 0, 0, 17, 17, 20, 4, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 50, 12, 3, - 32, 50, 12, 3, 0, 46, 12, 3,192, 48, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 0, 46, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 96, 47, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, +160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,152, 56, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 24, 62, 12, 3, +208, 51, 12, 3, 48, 31, 12, 3, 0, 34, 12, 3,120, 34, 12, 3,240, 34, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, + 0, 0, 0, 0, 19, 1, 0, 0, 17, 17, 20, 4, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 61, 12, 3, +128, 61, 12, 3, 96, 57, 12, 3, 32, 60, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 96, 57, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,192, 58, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -2231,16 +2231,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96, 47, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,192, 48, 12, 3, - 0, 46, 12, 3, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,122,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,122,195, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192, 58, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 32, 60, 12, 3, + 96, 57, 12, 3, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,122,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,122,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,250, 0,203, 0, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,250, 0, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192, 48, 12, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96, 47, 12, 3, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 60, 12, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192, 58, 12, 3, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67, 4, 0, 39,195, 0,224,180, 68, 1, 0,224,194, 0, 0,176, 67, 39, 3, 0, 0, 56, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, @@ -2248,13 +2248,13 @@ char datatoc_startup_blend[]= { 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 3,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 52, 0, 0, 0, 32, 50, 12, 3,178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 52, 0, 0, 0,128, 61, 12, 3,178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,184, 50, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 32, 57, 12, 3, - 56, 45, 12, 3,136, 24, 12, 3, 0, 25, 12, 3, 48, 22, 12, 3, 16, 24, 12, 3, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, - 21, 1, 0, 0,186, 2, 0, 0, 9, 9,130, 1,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 54, 12, 3, - 64, 54, 12, 3,128, 51, 12, 3,224, 52, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,128, 51, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,224, 52, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 24, 62, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,136, 68, 12, 3, +152, 56, 12, 3,224, 35, 12, 3, 88, 36, 12, 3,136, 33, 12, 3,104, 35, 12, 3, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, + 21, 1, 0, 0,186, 2, 0, 0, 9, 9,130, 1,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 65, 12, 3, +168, 65, 12, 3,224, 62, 12, 3, 72, 64, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,224, 62, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 72, 64, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,193, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,181, 67, 0, 0,200, 65, 0,128,181, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -2262,15 +2262,15 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224, 52, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -128, 51, 12, 3, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72, 64, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +224, 62, 12, 3, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0, 126, 86, 5, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,130, 1,140, 1,130, 1, 140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0, 64, 54, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0,168, 65, 12, 3, 172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2291,11 +2291,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 32, 57, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,216, 69, 12, 3,184, 50, 12, 3, -120, 25, 12, 3,240, 25, 12, 3, 0, 25, 12, 3,136, 24, 12, 3, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, -186, 2, 0, 0, 1, 1,167, 2,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 68, 12, 3,120, 68, 12, 3, -232, 57, 12, 3,104, 63, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -232, 57, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 72, 59, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,136, 68, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 64, 81, 12, 3, 24, 62, 12, 3, +208, 36, 12, 3, 72, 37, 12, 3, 88, 36, 12, 3,224, 35, 12, 3, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, +186, 2, 0, 0, 1, 1,167, 2,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 79, 12, 3,224, 79, 12, 3, + 80, 69, 12, 3,208, 74, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 80, 69, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,176, 70, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 56, 0,192, 41, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -2303,7 +2303,7 @@ char datatoc_startup_blend[]= { 213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72, 59, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,168, 60, 12, 3,232, 57, 12, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176, 70, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 16, 72, 12, 3, 80, 69, 12, 3, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, 143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2311,8 +2311,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,213, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,140, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168, 60, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0, 8, 62, 12, 3, 72, 59, 12, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16, 72, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0,112, 73, 12, 3,176, 70, 12, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0, 231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, @@ -2320,7 +2320,7 @@ char datatoc_startup_blend[]= { 47, 1, 0, 0, 47, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 8, 62, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,104, 63, 12, 3,168, 60, 12, 3, 0, 0, 0, 0, 0, 0, 35, 67, +248, 0, 0, 0,112, 73, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,208, 74, 12, 3, 16, 72, 12, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 23,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, @@ -2328,15 +2328,15 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,123, 3, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104, 63, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 8, 62, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208, 74, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +112, 73, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 64, 12, 3, 68, 65, 84, 65, 72, 3, 0, 0,200, 64, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 76, 12, 3, 68, 65, 84, 65, 72, 3, 0, 0, 48, 76, 12, 3, 159, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -2363,20 +2363,20 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120, 68, 12, 3,160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224, 79, 12, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104, 23, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,192, 34, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,216, 69, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32, 57, 12, 3,168, 22, 12, 3,184, 21, 12, 3, -240, 25, 12, 3,120, 25, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 3, 3,212, 0, -166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 73, 12, 3, 96, 73, 12, 3,160, 70, 12, 3, 0, 72, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160, 70, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 72, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 96, 0, 0, 0, 64, 81, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136, 68, 12, 3, 0, 34, 12, 3, 16, 33, 12, 3, + 72, 37, 12, 3,208, 36, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 3, 3,212, 0, +166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 84, 12, 3,200, 84, 12, 3, 8, 82, 12, 3,104, 83, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8, 82, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0,104, 83, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 83, 67, 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, @@ -2384,7 +2384,7 @@ char datatoc_startup_blend[]= { 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 0, 72, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,160, 70, 12, 3, 0, 0, 0, 0, 0,128,131, 67, +248, 0, 0, 0,104, 83, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8, 82, 12, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 80, 66, 0, 0,119, 67, 0, 0,189,195, 0, 0, 0, 0,195, 0, 0, 0,212, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, @@ -2392,81 +2392,81 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0, 96, 73, 12, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,200, 84, 12, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 74, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 86, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, -192, 74, 12, 3,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 48, 75, 12, 3, 68, 65, 84, 65,156, 0, 0, 0, - 48, 75, 12, 3,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 72,254, 12, 3, 19, 0, 0, 0, 1, 0, 1, 0, - 72,254, 12, 3, 20, 0, 0, 0, 1, 0, 1, 0, 72,254, 12, 3, 21, 0, 1, 0, 1, 0, 1, 0, 72,254, 12, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 8, 21, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,168, 27, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,176,110, 14, 3, - 0, 0, 0, 0, 1, 0, 1, 0,240, 37, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,192,203, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, -176, 33, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,184, 16, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,104, 23, 13, 3, 0, 0, 0, 0, - 1, 0, 1, 0,232, 15, 13, 3, 83, 78, 0, 0,140, 0, 0, 0,200, 76, 12, 3,195, 0, 0, 0, 1, 0, 0, 0,104,141, 12, 3, -232, 18, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 77, 12, 3, 72, 84, 12, 3,192, 84, 12, 3,192, 95, 12, 3, - 72, 96, 12, 3,104,134, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 40, 86, 12, 3,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,152, 86, 12, 3, 68, 65, 84, 65,156, 0, 0, 0, +152, 86, 12, 3,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,160, 9, 13, 3, 19, 0, 0, 0, 1, 0, 1, 0, +160, 9, 13, 3, 20, 0, 0, 0, 1, 0, 1, 0,160, 9, 13, 3, 21, 0, 1, 0, 1, 0, 1, 0,160, 9, 13, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 96, 32, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 39, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 8,122, 14, 3, + 0, 0, 0, 0, 1, 0, 1, 0, 72, 49, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 24,215, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, + 8, 45, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 16, 28, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,192, 34, 13, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 64, 27, 13, 3, 83, 78, 0, 0,140, 0, 0, 0, 48, 88, 12, 3,195, 0, 0, 0, 1, 0, 0, 0,200,152, 12, 3, + 64, 30, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 89, 12, 3,176, 95, 12, 3, 40, 96, 12, 3, 40,107, 12, 3, +168,107, 12, 3,200,145, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184, 77, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 48, 78, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 48, 78, 12, 3,196, 0, 0, 0, - 1, 0, 0, 0,168, 78, 12, 3,184, 77, 12, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -168, 78, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 79, 12, 3, 48, 78, 12, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 32, 79, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,152, 79, 12, 3,168, 78, 12, 3, 0, 0, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152, 79, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 16, 80, 12, 3, - 32, 79, 12, 3, 0, 0, 0, 0, 0, 0,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 16, 80, 12, 3,196, 0, 0, 0, - 1, 0, 0, 0,136, 80, 12, 3,152, 79, 12, 3, 0, 0, 0, 0,254, 4,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -136, 80, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 81, 12, 3, 16, 80, 12, 3, 0, 0, 0, 0,244, 3,187, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 0, 81, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,120, 81, 12, 3,136, 80, 12, 3, 0, 0, 0, 0, -244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120, 81, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,240, 81, 12, 3, - 0, 81, 12, 3, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240, 81, 12, 3,196, 0, 0, 0, - 1, 0, 0, 0,104, 82, 12, 3,120, 81, 12, 3, 0, 0, 0, 0,244, 3, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -104, 82, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,224, 82, 12, 3,240, 81, 12, 3, 0, 0, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,224, 82, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 88, 83, 12, 3,104, 82, 12, 3, 0, 0, 0, 0, -248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 88, 83, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,208, 83, 12, 3, -224, 82, 12, 3, 0, 0, 0, 0,244, 3, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208, 83, 12, 3,196, 0, 0, 0, - 1, 0, 0, 0, 72, 84, 12, 3, 88, 83, 12, 3, 0, 0, 0, 0,254, 4, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 72, 84, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 83, 12, 3, 0, 0, 0, 0,248, 1,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,192, 84, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 85, 12, 3, 0, 0, 0, 0, 48, 78, 12, 3, -168, 78, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 85, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, -192, 85, 12, 3,192, 84, 12, 3, 48, 78, 12, 3,152, 79, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -192, 85, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 86, 12, 3, 64, 85, 12, 3,168, 78, 12, 3, 16, 80, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 86, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 86, 12, 3,192, 85, 12, 3, -152, 79, 12, 3, 16, 80, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 86, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0, 64, 87, 12, 3, 64, 86, 12, 3, 16, 80, 12, 3,136, 80, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 64, 87, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 87, 12, 3,192, 86, 12, 3, 32, 79, 12, 3, 0, 81, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 87, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 88, 12, 3, - 64, 87, 12, 3,184, 77, 12, 3,120, 81, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 88, 12, 3, -197, 0, 0, 0, 1, 0, 0, 0,192, 88, 12, 3,192, 87, 12, 3,152, 79, 12, 3,120, 81, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,192, 88, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 89, 12, 3, 64, 88, 12, 3,136, 80, 12, 3, -240, 81, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 89, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, -192, 89, 12, 3,192, 88, 12, 3, 0, 81, 12, 3,240, 81, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -192, 89, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 90, 12, 3, 64, 89, 12, 3,184, 77, 12, 3,104, 82, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 90, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 90, 12, 3,192, 89, 12, 3, - 0, 81, 12, 3,104, 82, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 90, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0, 64, 91, 12, 3, 64, 90, 12, 3,120, 81, 12, 3,224, 82, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 64, 91, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 91, 12, 3,192, 90, 12, 3,240, 81, 12, 3,224, 82, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 91, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 92, 12, 3, - 64, 91, 12, 3,104, 82, 12, 3,224, 82, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 92, 12, 3, -197, 0, 0, 0, 1, 0, 0, 0,192, 92, 12, 3,192, 91, 12, 3, 0, 81, 12, 3, 88, 83, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,192, 92, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 93, 12, 3, 64, 92, 12, 3,136, 80, 12, 3, - 88, 83, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 93, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, -192, 93, 12, 3,192, 92, 12, 3, 16, 80, 12, 3,208, 83, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -192, 93, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 94, 12, 3, 64, 93, 12, 3, 32, 79, 12, 3,208, 83, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 94, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 94, 12, 3,192, 93, 12, 3, - 88, 83, 12, 3,208, 83, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 94, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0, 64, 95, 12, 3, 64, 94, 12, 3,152, 79, 12, 3, 72, 84, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 64, 95, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 95, 12, 3,192, 94, 12, 3,136, 80, 12, 3, 72, 84, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 95, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 64, 95, 12, 3,224, 82, 12, 3, 72, 84, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 72, 96, 12, 3, -199, 0, 0, 0, 1, 0, 0, 0,208, 99, 12, 3, 0, 0, 0, 0,152, 79, 12, 3, 48, 78, 12, 3,168, 78, 12, 3, 16, 80, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 89, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,152, 89, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152, 89, 12, 3,196, 0, 0, 0, + 1, 0, 0, 0, 16, 90, 12, 3, 32, 89, 12, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 16, 90, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,136, 90, 12, 3,152, 89, 12, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,136, 90, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 91, 12, 3, 16, 90, 12, 3, 0, 0, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 91, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,120, 91, 12, 3, +136, 90, 12, 3, 0, 0, 0, 0, 0, 0,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120, 91, 12, 3,196, 0, 0, 0, + 1, 0, 0, 0,240, 91, 12, 3, 0, 91, 12, 3, 0, 0, 0, 0,254, 4,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +240, 91, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,104, 92, 12, 3,120, 91, 12, 3, 0, 0, 0, 0,244, 3,187, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,104, 92, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,224, 92, 12, 3,240, 91, 12, 3, 0, 0, 0, 0, +244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224, 92, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 88, 93, 12, 3, +104, 92, 12, 3, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 88, 93, 12, 3,196, 0, 0, 0, + 1, 0, 0, 0,208, 93, 12, 3,224, 92, 12, 3, 0, 0, 0, 0,244, 3, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +208, 93, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 72, 94, 12, 3, 88, 93, 12, 3, 0, 0, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 72, 94, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,192, 94, 12, 3,208, 93, 12, 3, 0, 0, 0, 0, +248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192, 94, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 56, 95, 12, 3, + 72, 94, 12, 3, 0, 0, 0, 0,244, 3, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 56, 95, 12, 3,196, 0, 0, 0, + 1, 0, 0, 0,176, 95, 12, 3,192, 94, 12, 3, 0, 0, 0, 0,254, 4, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +176, 95, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56, 95, 12, 3, 0, 0, 0, 0,248, 1,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 40, 96, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,168, 96, 12, 3, 0, 0, 0, 0,152, 89, 12, 3, + 16, 90, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 96, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, + 40, 97, 12, 3, 40, 96, 12, 3,152, 89, 12, 3, 0, 91, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 40, 97, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,168, 97, 12, 3,168, 96, 12, 3, 16, 90, 12, 3,120, 91, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 97, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 40, 98, 12, 3, 40, 97, 12, 3, + 0, 91, 12, 3,120, 91, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 98, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0,168, 98, 12, 3,168, 97, 12, 3,120, 91, 12, 3,240, 91, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,168, 98, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 40, 99, 12, 3, 40, 98, 12, 3,136, 90, 12, 3,104, 92, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 99, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,168, 99, 12, 3, +168, 98, 12, 3, 32, 89, 12, 3,224, 92, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 99, 12, 3, +197, 0, 0, 0, 1, 0, 0, 0, 40,100, 12, 3, 40, 99, 12, 3, 0, 91, 12, 3,224, 92, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 40,100, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,168,100, 12, 3,168, 99, 12, 3,240, 91, 12, 3, + 88, 93, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,100, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, + 40,101, 12, 3, 40,100, 12, 3,104, 92, 12, 3, 88, 93, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 40,101, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,168,101, 12, 3,168,100, 12, 3, 32, 89, 12, 3,208, 93, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,101, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,102, 12, 3, 40,101, 12, 3, +104, 92, 12, 3,208, 93, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,102, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0,168,102, 12, 3,168,101, 12, 3,224, 92, 12, 3, 72, 94, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,168,102, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,103, 12, 3, 40,102, 12, 3, 88, 93, 12, 3, 72, 94, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,103, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,168,103, 12, 3, +168,102, 12, 3,208, 93, 12, 3, 72, 94, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,103, 12, 3, +197, 0, 0, 0, 1, 0, 0, 0, 40,104, 12, 3, 40,103, 12, 3,104, 92, 12, 3,192, 94, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 40,104, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,168,104, 12, 3,168,103, 12, 3,240, 91, 12, 3, +192, 94, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,104, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, + 40,105, 12, 3, 40,104, 12, 3,120, 91, 12, 3, 56, 95, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 40,105, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,168,105, 12, 3,168,104, 12, 3,136, 90, 12, 3, 56, 95, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,105, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,106, 12, 3, 40,105, 12, 3, +192, 94, 12, 3, 56, 95, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,106, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0,168,106, 12, 3,168,105, 12, 3, 0, 91, 12, 3,176, 95, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,168,106, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,107, 12, 3, 40,106, 12, 3,240, 91, 12, 3,176, 95, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,107, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +168,106, 12, 3, 72, 94, 12, 3,176, 95, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,168,107, 12, 3, +199, 0, 0, 0, 1, 0, 0, 0, 48,111, 12, 3, 0, 0, 0, 0, 0, 91, 12, 3,152, 89, 12, 3, 16, 90, 12, 3,120, 91, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 0, 0,208,140, 12, 3,208,140, 12, 3, 16, 97, 12, 3,112, 98, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16, 97, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,112, 98, 12, 3, + 7, 0, 0, 0, 0, 0, 0, 0, 48,152, 12, 3, 48,152, 12, 3,112,108, 12, 3,208,109, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,108, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,208,109, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, @@ -2474,8 +2474,8 @@ char datatoc_startup_blend[]= { 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112, 98, 12, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 97, 12, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,109, 12, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,112,108, 12, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, @@ -2483,11 +2483,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0,208, 99, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,152,104, 12, 3, 72, 96, 12, 3, 0, 81, 12, 3, - 88, 83, 12, 3,208, 83, 12, 3, 32, 79, 12, 3, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, - 4, 4, 10, 1, 12, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,103, 12, 3, 88,103, 12, 3,152,100, 12, 3, -248,101, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,100, 12, 3, -200, 0, 0, 0, 1, 0, 0, 0,248,101, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, + 68, 65, 84, 65, 96, 0, 0, 0, 48,111, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,248,115, 12, 3,168,107, 12, 3,104, 92, 12, 3, +192, 94, 12, 3, 56, 95, 12, 3,136, 90, 12, 3, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, + 4, 4, 10, 1, 12, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,114, 12, 3,184,114, 12, 3,248,111, 12, 3, + 88,113, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,111, 12, 3, +200, 0, 0, 0, 1, 0, 0, 0, 88,113, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, @@ -2495,7 +2495,7 @@ char datatoc_startup_blend[]= { 254, 4, 0, 0,237, 1, 0, 0, 11, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,248,101, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152,100, 12, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 88,113, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248,111, 12, 3, 0, 0, 0, 0, 0,128,132, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255,120, 67,255,127,246,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 248, 0, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, @@ -2503,7 +2503,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 88,103, 12, 3,165, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,184,114, 12, 3,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2511,11 +2511,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -152,104, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,248,109, 12, 3,208, 99, 12, 3,104, 82, 12, 3,224, 82, 12, 3,240, 81, 12, 3, - 0, 81, 12, 3, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,251, 1, 28, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,108, 12, 3, 32,108, 12, 3, 96,105, 12, 3,192,106, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,105, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, -192,106, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, +248,115, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 88,121, 12, 3, 48,111, 12, 3,208, 93, 12, 3, 72, 94, 12, 3, 88, 93, 12, 3, +104, 92, 12, 3, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,251, 1, 28, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,119, 12, 3,128,119, 12, 3,192,116, 12, 3, 32,118, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,116, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, + 32,118, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, @@ -2523,7 +2523,7 @@ char datatoc_startup_blend[]= { 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -192,106, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,105, 12, 3, 0, 0, 0, 0, 0, 0,253, 67, 0, 0, 0, 0, + 32,118, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192,116, 12, 3, 0, 0, 0, 0, 0, 0,253, 67, 0, 0, 0, 0, 0, 0, 48, 65, 0, 0, 0, 0, 0, 0,245, 67, 0, 0, 0, 0, 0, 0,129, 67,234, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, @@ -2531,7 +2531,7 @@ char datatoc_startup_blend[]= { 249, 1, 0, 0,243, 3, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 251, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0, 32,108, 12, 3,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0,128,119, 12, 3,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2543,11 +2543,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,248,109, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,176,122, 12, 3, -152,104, 12, 3,224, 82, 12, 3, 72, 84, 12, 3,136, 80, 12, 3,240, 81, 12, 3, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, - 29, 1, 0, 0,186, 2, 0, 0, 1, 1,251, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,121, 12, 3, - 80,121, 12, 3,192,110, 12, 3, 64,116, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,192,110, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 32,112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 88,121, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 16,134, 12, 3, +248,115, 12, 3, 72, 94, 12, 3,176, 95, 12, 3,240, 91, 12, 3, 88, 93, 12, 3, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, + 29, 1, 0, 0,186, 2, 0, 0, 1, 1,251, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,132, 12, 3, +176,132, 12, 3, 32,122, 12, 3,160,127, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 32,122, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,128,123, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -2555,16 +2555,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,112, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,128,113, 12, 3, -192,110, 12, 3, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,123, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,224,124, 12, 3, + 32,122, 12, 3, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,249, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,132, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,113, 12, 3, -200, 0, 0, 0, 1, 0, 0, 0,224,114, 12, 3, 32,112, 12, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,124, 12, 3, +200, 0, 0, 0, 1, 0, 0, 0, 64,126, 12, 3,128,123, 12, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, @@ -2572,7 +2572,7 @@ char datatoc_startup_blend[]= { 243, 3, 0, 0, 55, 1, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,224,114, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 64,116, 12, 3,128,113, 12, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 64,126, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,160,127, 12, 3,224,124, 12, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0, 180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, @@ -2580,16 +2580,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,243, 3, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,116, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,224,114, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160,127, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 64,126, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0, 186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,117, 12, 3, 68, 65, 84, 65, 72, 3, 0, 0, -160,117, 12, 3,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 12, 3, 68, 65, 84, 65, 72, 3, 0, 0, + 0,129, 12, 3,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,240,182, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63, 143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2615,20 +2615,20 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,121, 12, 3, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,132, 12, 3, 160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104, 23, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,192, 34, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0,176,122, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 16,128, 12, 3,248,109, 12, 3,184, 77, 12, 3, -120, 81, 12, 3,224, 82, 12, 3,104, 82, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, - 18, 18,248, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,126, 12, 3, 56,126, 12, 3,120,123, 12, 3, -216,124, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,123, 12, 3, -200, 0, 0, 0, 1, 0, 0, 0,216,124, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, 0, 0, 0, 0, 0, 0,208, 65, + 68, 65, 84, 65, 96, 0, 0, 0, 16,134, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,112,139, 12, 3, 88,121, 12, 3, 32, 89, 12, 3, +224, 92, 12, 3, 72, 94, 12, 3,208, 93, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, + 18, 18,248, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,137, 12, 3,152,137, 12, 3,216,134, 12, 3, + 56,136, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,134, 12, 3, +200, 0, 0, 0, 1, 0, 0, 0, 56,136, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, @@ -2636,7 +2636,7 @@ char datatoc_startup_blend[]= { 247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,216,124, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120,123, 12, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 56,136, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216,134, 12, 3, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0, 65, 67, 0, 0, 0, 0, 0,128,243, 67, 0, 0, 0, 0, 0, 0,129, 67,231, 1, 0, 0, 248, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -2644,7 +2644,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0, 56,126, 12, 3,181, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0,152,137, 12, 3,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2656,11 +2656,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,121,116,104,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16,128, 12, 3,199, 0, 0, 0, - 1, 0, 0, 0,104,134, 12, 3,176,122, 12, 3, 88, 83, 12, 3,136, 80, 12, 3, 16, 80, 12, 3,208, 83, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,112,139, 12, 3,199, 0, 0, 0, + 1, 0, 0, 0,200,145, 12, 3, 16,134, 12, 3,192, 94, 12, 3,240, 91, 12, 3,120, 91, 12, 3, 56, 95, 12, 3, 0, 0, 0, 0, 245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0,186, 2, 0, 0, 3, 3, 10, 1,174, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,152,131, 12, 3,152,131, 12, 3,216,128, 12, 3, 56,130, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,128, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 56,130, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0,248,142, 12, 3,248,142, 12, 3, 56,140, 12, 3,152,141, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,140, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,152,141, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,149, 67, 0, 0,200, 65, 0,128,149, 67, 0, 0,200, 65, @@ -2668,8 +2668,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0, 38, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,130, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,216,128, 12, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,141, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 56,140, 12, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 67, 0, 0, 2,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, @@ -2677,26 +2677,26 @@ char datatoc_startup_blend[]= { 39, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -252, 0, 0, 0,152,131, 12, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +252, 0, 0, 0,248,142, 12, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,132, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,144, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,248,132, 12, 3,223, 0, 0, 0, 1, 0, 0, 0, - 13, 0, 0, 0, 13, 0, 0, 0,104,133, 12, 3, 68, 65, 84, 65,156, 0, 0, 0,104,133, 12, 3,222, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 72,254, 12, 3, 19, 0, 0, 0, 1, 0, 1, 0, 72,254, 12, 3, 20, 0, 0, 0, 1, 0, 1, 0, - 72,254, 12, 3, 21, 0, 1, 0, 1, 0, 1, 0, 72,254, 12, 3, 0, 0, 0, 0, 1, 0, 1, 0, 8, 21, 13, 3, 0, 0, 0, 0, - 1, 0, 1, 0,168, 27, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,176,110, 14, 3, 0, 0, 0, 0, 1, 0, 1, 0,240, 37, 13, 3, - 0, 0, 0, 0, 1, 0, 1, 0,192,203, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,176, 33, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, -184, 16, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,104, 23, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,232, 15, 13, 3, 68, 65, 84, 65, - 96, 0, 0, 0,104,134, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16,128, 12, 3,120, 81, 12, 3,152, 79, 12, 3, - 72, 84, 12, 3,224, 82, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 9, 9,248, 1, -158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,137, 12, 3,240,137, 12, 3, 48,135, 12, 3,144,136, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,135, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0,144,136, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 73, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 88,144, 12, 3,223, 0, 0, 0, 1, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0,200,144, 12, 3, 68, 65, 84, 65,156, 0, 0, 0,200,144, 12, 3,222, 0, 0, 0, 13, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0,160, 9, 13, 3, 19, 0, 0, 0, 1, 0, 1, 0,160, 9, 13, 3, 20, 0, 0, 0, 1, 0, 1, 0, +160, 9, 13, 3, 21, 0, 1, 0, 1, 0, 1, 0,160, 9, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 96, 32, 13, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 39, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 8,122, 14, 3, 0, 0, 0, 0, 1, 0, 1, 0, 72, 49, 13, 3, + 0, 0, 0, 0, 1, 0, 1, 0, 24,215, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 8, 45, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, + 16, 28, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,192, 34, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 64, 27, 13, 3, 68, 65, 84, 65, + 96, 0, 0, 0,200,145, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,112,139, 12, 3,224, 92, 12, 3, 0, 91, 12, 3, +176, 95, 12, 3, 72, 94, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 9, 9,248, 1, +158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,149, 12, 3, 80,149, 12, 3,144,146, 12, 3,240,147, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144,146, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0,240,147, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 73, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, @@ -2704,7 +2704,7 @@ char datatoc_startup_blend[]= { 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,144,136, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,135, 12, 3, 0, 0, 0, 0, 0,224,189, 68, +248, 0, 0, 0,240,147, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144,146, 12, 3, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,236,140, 21, 68, 20, 51,102, 68,120, 83, 49, 67, 68,214,212, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, @@ -2712,7 +2712,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0,240,137, 12, 3,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0, 80,149, 12, 3,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,231, 1, 0, 0,243, 1, 0, 0,122, 1, 0, 0,124, 1, 0, 0, @@ -2733,41 +2733,41 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, -104,141, 12, 3,195, 0, 0, 0, 1, 0, 0, 0,216,206, 12, 3,200, 76, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86, +200,152, 12, 3,195, 0, 0, 0, 1, 0, 0, 0, 56,218, 12, 3, 48, 88, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88,142, 12, 3,160,145, 12, 3, 24,146, 12, 3, 24,151, 12, 3,152,151, 12, 3,136,193, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 72,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +184,153, 12, 3, 0,157, 12, 3,120,157, 12, 3,120,162, 12, 3,248,162, 12, 3,232,204, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, +160, 9, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 88,142, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,208,142, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,208,142, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 72,143, 12, 3, 88,142, 12, 3, 0, 0, 0, 0, - 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,143, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,192,143, 12, 3, -208,142, 12, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192,143, 12, 3,196, 0, 0, 0, - 1, 0, 0, 0, 56,144, 12, 3, 72,143, 12, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 56,144, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,176,144, 12, 3,192,143, 12, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,176,144, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 40,145, 12, 3, 56,144, 12, 3, 0, 0, 0, 0, -254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,145, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,160,145, 12, 3, -176,144, 12, 3, 0, 0, 0, 0,132, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,145, 12, 3,196, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 40,145, 12, 3, 0, 0, 0, 0,132, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 24,146, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,152,146, 12, 3, 0, 0, 0, 0,208,142, 12, 3, 72,143, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,146, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,147, 12, 3, 24,146, 12, 3, -208,142, 12, 3, 56,144, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,147, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0,152,147, 12, 3,152,146, 12, 3, 72,143, 12, 3,176,144, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,152,147, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,148, 12, 3, 24,147, 12, 3, 56,144, 12, 3,176,144, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,148, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,152,148, 12, 3, -152,147, 12, 3, 56,144, 12, 3, 40,145, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,148, 12, 3, -197, 0, 0, 0, 1, 0, 0, 0, 24,149, 12, 3, 24,148, 12, 3, 88,142, 12, 3,160,145, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 24,149, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,152,149, 12, 3,152,148, 12, 3, 88,142, 12, 3, - 56,144, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,149, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, - 24,150, 12, 3, 24,149, 12, 3, 40,145, 12, 3,160,145, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 24,150, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,152,150, 12, 3,152,149, 12, 3,176,144, 12, 3, 40,145, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,150, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 24,151, 12, 3, 24,150, 12, 3, -192,143, 12, 3,160,145, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,151, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,152,150, 12, 3,192,143, 12, 3,176,144, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,152,151, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 32,155, 12, 3, 0, 0, 0, 0, 56,144, 12, 3,208,142, 12, 3, - 72,143, 12, 3,176,144, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, - 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 64,206, 12, 3, 64,206, 12, 3, 96,152, 12, 3,192,153, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,152, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0,192,153, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, +184,153, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 48,154, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 48,154, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,168,154, 12, 3,184,153, 12, 3, 0, 0, 0, 0, + 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,154, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 32,155, 12, 3, + 48,154, 12, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32,155, 12, 3,196, 0, 0, 0, + 1, 0, 0, 0,152,155, 12, 3,168,154, 12, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +152,155, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 16,156, 12, 3, 32,155, 12, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 16,156, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,136,156, 12, 3,152,155, 12, 3, 0, 0, 0, 0, +254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,156, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0,157, 12, 3, + 16,156, 12, 3, 0, 0, 0, 0,132, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0,157, 12, 3,196, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,136,156, 12, 3, 0, 0, 0, 0,132, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +120,157, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,248,157, 12, 3, 0, 0, 0, 0, 48,154, 12, 3,168,154, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,157, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,120,158, 12, 3,120,157, 12, 3, + 48,154, 12, 3,152,155, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,158, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0,248,158, 12, 3,248,157, 12, 3,168,154, 12, 3, 16,156, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,248,158, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,120,159, 12, 3,120,158, 12, 3,152,155, 12, 3, 16,156, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,159, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,248,159, 12, 3, +248,158, 12, 3,152,155, 12, 3,136,156, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,159, 12, 3, +197, 0, 0, 0, 1, 0, 0, 0,120,160, 12, 3,120,159, 12, 3,184,153, 12, 3, 0,157, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,120,160, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,248,160, 12, 3,248,159, 12, 3,184,153, 12, 3, +152,155, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,160, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, +120,161, 12, 3,120,160, 12, 3,136,156, 12, 3, 0,157, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +120,161, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,248,161, 12, 3,248,160, 12, 3, 16,156, 12, 3,136,156, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,161, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,120,162, 12, 3,120,161, 12, 3, + 32,155, 12, 3, 0,157, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,162, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,248,161, 12, 3, 32,155, 12, 3, 16,156, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,248,162, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,128,166, 12, 3, 0, 0, 0, 0,152,155, 12, 3, 48,154, 12, 3, +168,154, 12, 3, 16,156, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, + 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,160,217, 12, 3,160,217, 12, 3,192,163, 12, 3, 32,165, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,163, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0, 32,165, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, @@ -2775,7 +2775,7 @@ char datatoc_startup_blend[]= { 188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,192,153, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,152, 12, 3, 0, 0, 0, 0, 0,240,109, 69, +248, 0, 0, 0, 32,165, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192,163, 12, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, @@ -2783,11 +2783,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 32,155, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,136,193, 12, 3, -152,151, 12, 3, 88,142, 12, 3, 56,144, 12, 3, 40,145, 12, 3,160,145, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, - 0, 0, 0, 0,186, 2, 0, 0, 6, 6,132, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,160, 12, 3, - 8,160, 12, 3,232,155, 12, 3,168,158, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,232,155, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 72,157, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,128,166, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,232,204, 12, 3, +248,162, 12, 3,184,153, 12, 3,152,155, 12, 3,136,156, 12, 3, 0,157, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, + 0, 0, 0, 0,186, 2, 0, 0, 6, 6,132, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,171, 12, 3, +104,171, 12, 3, 72,167, 12, 3, 8,170, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 72,167, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,168,168, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 33, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -2795,16 +2795,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,157, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,168,158, 12, 3, -232,155, 12, 3, 0, 0, 0, 0, 0, 0, 91, 67, 0, 0, 40,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 74, 67,254, 63, 40,196, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,168, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 8,170, 12, 3, + 72,167, 12, 3, 0, 0, 0, 0, 0, 0, 91, 67, 0, 0, 40,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 74, 67,254, 63, 40,196, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,161, 2,203, 0, 161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,161, 2, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,158, 12, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72,157, 12, 3, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,170, 12, 3, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,168,168, 12, 3, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 102,102, 38,190,205,204,148, 63, 51, 51, 13,191,154,153,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1, 0, 0, 0, 0, 0, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2812,7 +2812,7 @@ char datatoc_startup_blend[]= { 131, 2, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 33, 0, 0, 8,160, 12, 3,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 33, 0, 0,104,171, 12, 3,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3077,11 +3077,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,136,193, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 32,155, 12, 3,160,145, 12, 3, 40,145, 12, 3,176,144, 12, 3,192,143, 12, 3, 0, 0, 0, 0,133, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,232,204, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,128,166, 12, 3, 0,157, 12, 3,136,156, 12, 3, 16,156, 12, 3, 32,155, 12, 3, 0, 0, 0, 0,133, 2, 0, 0, 254, 4, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 1, 1,122, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -224,204, 12, 3,224,204, 12, 3, 80,194, 12, 3,208,199, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 80,194, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,176,195, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 64,216, 12, 3, 64,216, 12, 3,176,205, 12, 3, 48,211, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,176,205, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 16,207, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 30, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, @@ -3089,8 +3089,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,195, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, - 16,197, 12, 3, 80,194, 12, 3, 0, 0, 0, 0, 0, 0, 32, 67, 0, 64, 10,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,207, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, +112,208, 12, 3,176,205, 12, 3, 0, 0, 0, 0, 0, 0, 32, 67, 0, 64, 10,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 10,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, @@ -3098,7 +3098,7 @@ char datatoc_startup_blend[]= { 186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 41, 2, 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 16,197, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,112,198, 12, 3,176,195, 12, 3, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,242,194, +112,208, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,208,209, 12, 3, 16,207, 12, 3, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,242,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 91, 90,242,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, @@ -3106,7 +3106,7 @@ char datatoc_startup_blend[]= { 133, 2, 0, 0, 36, 3, 0, 0, 26, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 0,120, 0, 0, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,198, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,208,199, 12, 3, 16,197, 12, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,209, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 48,211, 12, 3,112,208, 12, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,255,191,126,196, 0, 0, 0, 0, 163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3114,16 +3114,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,199, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,112,198, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,211, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,208,209, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 3, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,201, 12, 3, 68, 65, 84, 65, - 72, 3, 0, 0, 48,201, 12, 3,159, 0, 0, 0, 1, 0, 0, 0,193,198,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,212, 12, 3, 68, 65, 84, 65, + 72, 3, 0, 0,144,212, 12, 3,159, 0, 0, 0, 1, 0, 0, 0,193,198,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, @@ -3150,64 +3150,64 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -224,204, 12, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 64,216, 12, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104, 23, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,192, 34, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,216,206, 12, 3,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104,141, 12, 3, + 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, 56,218, 12, 3,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,200,152, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105,100,101,111, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,207, 12, 3,248,212, 12, 3,112,213, 12, 3,240,221, 12, 3,112,222, 12, 3, - 40,246, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,219, 12, 3, 80,224, 12, 3,200,224, 12, 3, 72,233, 12, 3,200,233, 12, 3, +128, 1, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200,207, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 72,208, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,208, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, -192,208, 12, 3,200,207, 12, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192,208, 12, 3, -196, 0, 0, 0, 1, 0, 0, 0, 56,209, 12, 3, 72,208, 12, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 56,209, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,176,209, 12, 3,192,208, 12, 3, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,209, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 40,210, 12, 3, 56,209, 12, 3, - 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,210, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, -160,210, 12, 3,176,209, 12, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,210, 12, 3, -196, 0, 0, 0, 1, 0, 0, 0, 24,211, 12, 3, 40,210, 12, 3, 0, 0, 0, 0,254, 4, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 24,211, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,144,211, 12, 3,160,210, 12, 3, 0, 0, 0, 0, 0, 0, 64, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144,211, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 8,212, 12, 3, 24,211, 12, 3, - 0, 0, 0, 0, 52, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8,212, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, -128,212, 12, 3,144,211, 12, 3, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128,212, 12, 3, -196, 0, 0, 0, 1, 0, 0, 0,248,212, 12, 3, 8,212, 12, 3, 0, 0, 0, 0, 52, 2, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,248,212, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128,212, 12, 3, 0, 0, 0, 0,254, 4, 64, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,213, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,240,213, 12, 3, 0, 0, 0, 0, - 72,208, 12, 3,192,208, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,240,213, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0,112,214, 12, 3,112,213, 12, 3, 72,208, 12, 3,176,209, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,112,214, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,240,214, 12, 3,240,213, 12, 3,192,208, 12, 3, 40,210, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,240,214, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,112,215, 12, 3, -112,214, 12, 3,176,209, 12, 3, 40,210, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,215, 12, 3, -197, 0, 0, 0, 1, 0, 0, 0,240,215, 12, 3,240,214, 12, 3, 40,210, 12, 3,160,210, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,240,215, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,112,216, 12, 3,112,215, 12, 3,200,207, 12, 3, - 24,211, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,216, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, -240,216, 12, 3,240,215, 12, 3,176,209, 12, 3,144,211, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -240,216, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,112,217, 12, 3,112,216, 12, 3, 24,211, 12, 3, 8,212, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,217, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,240,217, 12, 3,240,216, 12, 3, - 8,212, 12, 3,128,212, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,240,217, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0,112,218, 12, 3,112,217, 12, 3,144,211, 12, 3,128,212, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,112,218, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,240,218, 12, 3,240,217, 12, 3,160,210, 12, 3,248,212, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,240,218, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,112,219, 12, 3, -112,218, 12, 3, 56,209, 12, 3,248,212, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,219, 12, 3, -197, 0, 0, 0, 1, 0, 0, 0,240,219, 12, 3,240,218, 12, 3, 24,211, 12, 3,248,212, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,240,219, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,112,220, 12, 3,112,219, 12, 3,200,207, 12, 3, - 56,209, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,220, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, -240,220, 12, 3,240,219, 12, 3, 40,210, 12, 3,144,211, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -240,220, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,112,221, 12, 3,112,220, 12, 3,160,210, 12, 3,128,212, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,221, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,240,221, 12, 3,240,220, 12, 3, -176,209, 12, 3, 8,212, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,240,221, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,112,221, 12, 3,160,210, 12, 3, 8,212, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,112,222, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,248,225, 12, 3, 0, 0, 0, 0,176,209, 12, 3, 72,208, 12, 3, -192,208, 12, 3, 40,210, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, - 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,176,253, 12, 3,176,253, 12, 3, 56,223, 12, 3,152,224, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,223, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0,152,224, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,219, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,160,219, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,219, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, + 24,220, 12, 3, 40,219, 12, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24,220, 12, 3, +196, 0, 0, 0, 1, 0, 0, 0,144,220, 12, 3,160,219, 12, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,144,220, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 8,221, 12, 3, 24,220, 12, 3, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8,221, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,128,221, 12, 3,144,220, 12, 3, + 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128,221, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, +248,221, 12, 3, 8,221, 12, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248,221, 12, 3, +196, 0, 0, 0, 1, 0, 0, 0,112,222, 12, 3,128,221, 12, 3, 0, 0, 0, 0,254, 4, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,112,222, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,232,222, 12, 3,248,221, 12, 3, 0, 0, 0, 0, 0, 0, 64, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232,222, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 96,223, 12, 3,112,222, 12, 3, + 0, 0, 0, 0, 52, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96,223, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, +216,223, 12, 3,232,222, 12, 3, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216,223, 12, 3, +196, 0, 0, 0, 1, 0, 0, 0, 80,224, 12, 3, 96,223, 12, 3, 0, 0, 0, 0, 52, 2, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 80,224, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216,223, 12, 3, 0, 0, 0, 0,254, 4, 64, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,224, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 72,225, 12, 3, 0, 0, 0, 0, +160,219, 12, 3, 24,220, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72,225, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0,200,225, 12, 3,200,224, 12, 3,160,219, 12, 3, 8,221, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,200,225, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 72,226, 12, 3, 72,225, 12, 3, 24,220, 12, 3,128,221, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72,226, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,200,226, 12, 3, +200,225, 12, 3, 8,221, 12, 3,128,221, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,226, 12, 3, +197, 0, 0, 0, 1, 0, 0, 0, 72,227, 12, 3, 72,226, 12, 3,128,221, 12, 3,248,221, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 72,227, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,200,227, 12, 3,200,226, 12, 3, 40,219, 12, 3, +112,222, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,227, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, + 72,228, 12, 3, 72,227, 12, 3, 8,221, 12, 3,232,222, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 72,228, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,200,228, 12, 3,200,227, 12, 3,112,222, 12, 3, 96,223, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,228, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 72,229, 12, 3, 72,228, 12, 3, + 96,223, 12, 3,216,223, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72,229, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0,200,229, 12, 3,200,228, 12, 3,232,222, 12, 3,216,223, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,200,229, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 72,230, 12, 3, 72,229, 12, 3,248,221, 12, 3, 80,224, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72,230, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,200,230, 12, 3, +200,229, 12, 3,144,220, 12, 3, 80,224, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,230, 12, 3, +197, 0, 0, 0, 1, 0, 0, 0, 72,231, 12, 3, 72,230, 12, 3,112,222, 12, 3, 80,224, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 72,231, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,200,231, 12, 3,200,230, 12, 3, 40,219, 12, 3, +144,220, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,231, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, + 72,232, 12, 3, 72,231, 12, 3,128,221, 12, 3,232,222, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 72,232, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,200,232, 12, 3,200,231, 12, 3,248,221, 12, 3,216,223, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,232, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 72,233, 12, 3, 72,232, 12, 3, + 8,221, 12, 3, 96,223, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72,233, 12, 3,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,200,232, 12, 3,248,221, 12, 3, 96,223, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,200,233, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 80,237, 12, 3, 0, 0, 0, 0, 8,221, 12, 3,160,219, 12, 3, + 24,220, 12, 3,128,221, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, + 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 8, 9, 13, 3, 8, 9, 13, 3,144,234, 12, 3,240,235, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144,234, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0,240,235, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, @@ -3215,7 +3215,7 @@ char datatoc_startup_blend[]= { 188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,152,224, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,223, 12, 3, 0, 0, 0, 0, 0,240,109, 69, +248, 0, 0, 0,240,235, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144,234, 12, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, @@ -3223,11 +3223,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,248,225, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,160,230, 12, 3, -112,222, 12, 3,200,207, 12, 3, 24,211, 12, 3,248,212, 12, 3, 56,209, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,255, 4, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,229, 12, 3, -128,229, 12, 3,192,226, 12, 3, 32,228, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,192,226, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 32,228, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 80,237, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,248,241, 12, 3, +200,233, 12, 3, 40,219, 12, 3,112,222, 12, 3, 80,224, 12, 3,144,220, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,255, 4, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,240, 12, 3, +216,240, 12, 3, 24,238, 12, 3,120,239, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 24,238, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,120,239, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -3235,26 +3235,26 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,228, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -192,226, 12, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,239, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 24,238, 12, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0,128,229, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0,216,240, 12, 3, 176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,160,230, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 40,238, 12, 3,248,225, 12, 3, - 24,211, 12, 3, 8,212, 12, 3,160,210, 12, 3,248,212, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, - 83, 1, 0, 0, 8, 8,255, 4, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,236, 12, 3,232,236, 12, 3, -104,231, 12, 3,136,235, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -104,231, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,200,232, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 39, 68, 0, 0, 0, 0, + 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,248,241, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,128,249, 12, 3, 80,237, 12, 3, +112,222, 12, 3, 96,223, 12, 3,248,221, 12, 3, 80,224, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, + 83, 1, 0, 0, 8, 8,255, 4, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,248, 12, 3, 64,248, 12, 3, +192,242, 12, 3,224,246, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +192,242, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 32,244, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 96,191, 68, 0, 0,200, 65, 0, 96,191, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -3262,7 +3262,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200,232, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 40,234, 12, 3,104,231, 12, 3, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,244, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,128,245, 12, 3,192,242, 12, 3, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,121,195, 0, 0, 0, 0, 203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3270,8 +3270,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4, 0, 0,254, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,249, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40,234, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0,136,235, 12, 3,200,232, 12, 3, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,245, 12, 3,200, 0, 0, 0, + 1, 0, 0, 0,224,246, 12, 3, 32,244, 12, 3, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, @@ -3279,7 +3279,7 @@ char datatoc_startup_blend[]= { 83, 1, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,136,235, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,234, 12, 3, 0, 0, 0, 0, 0, 0,122, 67, +248, 0, 0, 0,224,246, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128,245, 12, 3, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66, @@ -3287,18 +3287,18 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,232,236, 12, 3,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 64,248, 12, 3,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 40,238, 12, 3, -199, 0, 0, 0, 1, 0, 0, 0, 40,246, 12, 3,160,230, 12, 3, 8,212, 12, 3,176,209, 12, 3,144,211, 12, 3,128,212, 12, 3, + 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,128,249, 12, 3, +199, 0, 0, 0, 1, 0, 0, 0,128, 1, 13, 3,248,241, 12, 3, 96,223, 12, 3, 8,221, 12, 3,232,222, 12, 3,216,223, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, 2, 2, 52, 2,102, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112,244, 12, 3,112,244, 12, 3,240,238, 12, 3, 16,243, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,238, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 80,240, 12, 3, + 0, 0, 0, 0, 0, 0, 0, 0,200,255, 12, 3,200,255, 12, 3, 72,250, 12, 3,104,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,250, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,168,251, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 13, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, @@ -3306,8 +3306,8 @@ char datatoc_startup_blend[]= { 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,240, 12, 3, -200, 0, 0, 0, 1, 0, 0, 0,176,241, 12, 3,240,238, 12, 3, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,251, 12, 3, +200, 0, 0, 0, 1, 0, 0, 0, 8,253, 12, 3, 72,250, 12, 3, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,157,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, @@ -3315,7 +3315,7 @@ char datatoc_startup_blend[]= { 216, 0, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 76, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,176,241, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 16,243, 12, 3, 80,240, 12, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 8,253, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,104,254, 12, 3,168,251, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3323,8 +3323,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,243, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,176,241, 12, 3, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104,254, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 8,253, 12, 3, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 91, 1, @@ -3332,19 +3332,19 @@ char datatoc_startup_blend[]= { 186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, -112,244, 12, 3,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, +200,255, 12, 3,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168,245, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,168,245, 12, 3, 23, 1, 0, 0, 1, 0, 0, 0, 72,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 40,246, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 40,238, 12, 3,128,212, 12, 3,144,211, 12, 3, 40,210, 12, 3,160,210, 12, 3, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, - 85, 1, 0, 0,186, 2, 0, 0, 8, 8,202, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,252, 12, 3, -112,252, 12, 3,240,246, 12, 3, 16,251, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,240,246, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 80,248, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 15, 68, + 0, 1, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 0, 1, 13, 3, 23, 1, 0, 0, 1, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,128, 1, 13, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +128,249, 12, 3,216,223, 12, 3,232,222, 12, 3,128,221, 12, 3,248,221, 12, 3, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, + 85, 1, 0, 0,186, 2, 0, 0, 8, 8,202, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 7, 13, 3, +200, 7, 13, 3, 72, 2, 13, 3,104, 6, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 72, 2, 13, 3,200, 0, 0, 0, 1, 0, 0, 0,168, 3, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 15, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 50, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 64, 50, 68, 0, 0,200, 65, 0, 64, 50, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, @@ -3352,16 +3352,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,248, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,176,249, 12, 3, -240,246, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168, 3, 13, 3,200, 0, 0, 0, 1, 0, 0, 0, 8, 5, 13, 3, + 72, 2, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,249, 12, 3, -200, 0, 0, 0, 1, 0, 0, 0, 16,251, 12, 3, 80,248, 12, 3, 0, 0,112,195, 0, 0,112, 67, 0, 0, 7,195, 0, 0, 7, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8, 5, 13, 3, +200, 0, 0, 0, 1, 0, 0, 0,104, 6, 13, 3,168, 3, 13, 3, 0, 0,112,195, 0, 0,112, 67, 0, 0, 7,195, 0, 0, 7, 67, 105, 42,145,196,105, 42,145, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, @@ -3369,7 +3369,7 @@ char datatoc_startup_blend[]= { 254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 76, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 16,251, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,249, 12, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,104, 6, 13, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8, 5, 13, 3, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 201, 2, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, @@ -3377,7 +3377,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,112,252, 12, 3,166, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,200, 7, 13, 3,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3385,12 +3385,12 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 0, 0,120, 5, 0, 0, - 72,254, 12, 3,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99, -101,110,101, 0,116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 4, 13, 3, - 0, 0, 0, 0,104, 23, 13, 3, 8, 21, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0,168, 6, 13, 3,168, 7, 13, 3,168, 6, 13, 3, +160, 9, 13, 3,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99, +101,110,101, 0,116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 15, 13, 3, + 0, 0, 0, 0,192, 34, 13, 3, 96, 32, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 13, 3, 0, 19, 13, 3, 0, 18, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 8, 13, 3,176, 63,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 19, 13, 3,136,172,112, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3400,7 +3400,7 @@ char datatoc_startup_blend[]= { 1, 0, 0, 0, 6, 0, 50, 0,141, 0,128, 7, 56, 4, 8, 0, 8, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, 90, 0, 1, 0, 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 14, 13, 3, 40, 14, 13, 3, 0, 0, 1, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 25, 13, 3,128, 25, 13, 3, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 98, 97, 99,107, 98,117, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3423,30 +3423,30 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, 68, 69, 82, 95, 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63,102,166,171, 67, 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,184, 14, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0,104,125, 14, 3, 1, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 26, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0,136,137, 14, 3, 1, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 32, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 5, 0, 60, 0, 5, 0, 1, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0, 180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4,205,204,204, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0, 40, 4, 13, 3, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,128, 15, 13, 3, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 4, 13, 3,216, 4, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,216, 4, 13, 3, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 16, 13, 3, 48, 16, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0, 48, 16, 13, 3, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,110,101,116,119,111,114,107, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 5, 13, 3,136, 5, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,136, 5, 13, 3, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 16, 13, 3,224, 16, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,224, 16, 13, 3, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,101,114,118,101,114, 95, 97,100,100,114,101,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 6, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 10, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 56, 6, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 91,100,101,102, 97,117,108,116, - 93, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0,168, 6, 13, 3,133, 0, 0, 0, 1, 0, 0, 0, 40, 7, 13, 3, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,102, 2,162, 1,168, 27, 13, 3, 68, 65, 84, 65, 28, 0, 0, 0, 40, 7, 13, 3, -133, 0, 0, 0, 1, 0, 0, 0,168, 7, 13, 3,168, 6, 13, 3, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 25, 3,180, 2, -176, 33, 13, 3, 68, 65, 84, 65, 28, 0, 0, 0,168, 7, 13, 3,133, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 7, 13, 3, - 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,135, 0,246, 1,104, 23, 13, 3, 68, 65, 84, 65,144, 1, 0, 0, 40, 8, 13, 3, -153, 0, 0, 0, 1, 0, 0, 0, 32, 10, 13, 3, 48, 11, 13, 3, 64, 12, 13, 3, 0, 0,128, 63, 1, 0, 1, 0,205,204, 76, 63, + 0, 0, 0, 0, 0, 0, 0, 0,144, 17, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 10, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,144, 17, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 91,100,101,102, 97,117,108,116, + 93, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0, 0, 18, 13, 3,133, 0, 0, 0, 1, 0, 0, 0,128, 18, 13, 3, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,102, 2,162, 1, 0, 39, 13, 3, 68, 65, 84, 65, 28, 0, 0, 0,128, 18, 13, 3, +133, 0, 0, 0, 1, 0, 0, 0, 0, 19, 13, 3, 0, 18, 13, 3, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 25, 3,180, 2, + 8, 45, 13, 3, 68, 65, 84, 65, 28, 0, 0, 0, 0, 19, 13, 3,133, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 18, 13, 3, + 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,135, 0,246, 1,192, 34, 13, 3, 68, 65, 84, 65,144, 1, 0, 0,128, 19, 13, 3, +153, 0, 0, 0, 1, 0, 0, 0,120, 21, 13, 3,136, 22, 13, 3,152, 23, 13, 3, 0, 0,128, 63, 1, 0, 1, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, 32, 0, 32, 0, 32, 0, 1, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16,101,118, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8, 25, 13, 3, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, @@ -3457,52 +3457,52 @@ char datatoc_startup_blend[]= { 205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, 72,225,122, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 44, 0, 0, 0, - 32, 10, 13, 3,152, 0, 0, 0, 1, 0, 0, 0,176, 10, 13, 3, 0, 0, 0, 0, 7, 0, 0, 0,232,116,103, 3,255,255,255,128, +120, 21, 13, 3,152, 0, 0, 0, 1, 0, 0, 0, 8, 22, 13, 3, 0, 0, 0, 0, 7, 0, 0, 0,128, 44,119, 3,255,255,255,128, 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0, -176, 10, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,192,196, 14, 3, 64,122, 14, 3,136, 0, 73, 3,248,201, 14, 3, 32,134, 14, 3, -136,191, 14, 3, 0,155, 14, 3, 68, 65, 84, 65, 44, 0, 0, 0, 48, 11, 13, 3,152, 0, 0, 0, 1, 0, 0, 0,192, 11, 13, 3, - 0, 0, 0, 0, 7, 0, 0, 0,216, 19,245, 2,200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0,192, 11, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,192,196, 14, 3, - 64,122, 14, 3,136, 0, 73, 3,248,201, 14, 3, 32,134, 14, 3,136,191, 14, 3, 0,155, 14, 3, 68, 65, 84, 65, 96, 0, 0, 0, - 64, 12, 13, 3,151, 0, 0, 0, 1, 0, 0, 0, 8, 13, 13, 3, 5, 0, 0, 0, 17, 0, 0, 0,104,135,118, 3,255,100,100,128, - 1, 0, 0, 0,128, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,188,229,219, 65,251,110, 40, 65,178, 96, 71,189, + 8, 22, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,224,208, 14, 3, 96,134, 14, 3,248, 10, 73, 3, 24,214, 14, 3, 64,146, 14, 3, +168,203, 14, 3, 32,167, 14, 3, 68, 65, 84, 65, 44, 0, 0, 0,136, 22, 13, 3,152, 0, 0, 0, 1, 0, 0, 0, 24, 23, 13, 3, + 0, 0, 0, 0, 7, 0, 0, 0, 16,231,129, 3,200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0, 24, 23, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,224,208, 14, 3, + 96,134, 14, 3,248, 10, 73, 3, 24,214, 14, 3, 64,146, 14, 3,168,203, 14, 3, 32,167, 14, 3, 68, 65, 84, 65, 96, 0, 0, 0, +152, 23, 13, 3,151, 0, 0, 0, 1, 0, 0, 0, 96, 24, 13, 3, 5, 0, 0, 0, 17, 0, 0, 0,248, 45, 93, 3,255,100,100,128, + 1, 0, 0, 0,128, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 24,213, 29, 66,100, 86, 88, 65, 18, 67,166,190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 68, 0, 0, 0, 8, 13, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, -232,128, 14, 3, 88,139, 14, 3,200,149, 14, 3,112,165, 14, 3,168,170, 14, 3, 16,228, 14, 3,128,238, 14, 3,184,243, 14, 3, -176, 3, 73, 3,224,175, 14, 3, 24,181, 14, 3, 80,186, 14, 3, 48,207, 14, 3,104,212, 14, 3,160,217, 14, 3,216,222, 14, 3, -232, 8, 73, 3, 68, 65, 84, 65, 16, 0, 0, 0, 16,101,118, 3, 0, 0, 0, 0, 1, 0, 0, 0,240,248, 14, 3,144,144, 14, 3, - 72,233, 14, 3, 40, 0,104, 3, 68, 65, 84, 65, 72, 0, 0, 0, 40, 14, 13, 3,139, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 68, 0, 0, 0, 96, 24, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, + 8,141, 14, 3,120,151, 14, 3,232,161, 14, 3,144,177, 14, 3,200,182, 14, 3, 48,240, 14, 3,160,250, 14, 3,136, 0, 73, 3, +104, 21, 73, 3, 0,188, 14, 3, 56,193, 14, 3,112,198, 14, 3, 80,219, 14, 3,136,224, 14, 3,192,229, 14, 3,248,234, 14, 3, +160, 26, 73, 3, 68, 65, 84, 65, 16, 0, 0, 0, 8, 25, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,192, 5, 73, 3,176,156, 14, 3, +104,245, 14, 3, 48, 16, 73, 3, 68, 65, 84, 65, 72, 0, 0, 0,128, 25, 13, 3,139, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 76, 97,121,101,114, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 67, 65, 0, 0,104, 0, 0, 0,232, 15, 13, 3, 29, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 65, 0, 0,104, 0, 0, 0, 64, 27, 13, 3, 29, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63,205,204,204, 61, 0, 0,200, 66, 0, 0, 12, 66,161, 14,234, 64, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 76, 65, 0, 0,108, 1, 0, 0,184, 16, 13, 3, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 65, 0, 0,108, 1, 0, 0, 16, 28, 13, 3, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,247,255,239, 65, - 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,136, 18, 13, 3, 2, 0, 0, 0, 46, 26,128, 63, + 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,224, 29, 13, 3, 2, 0, 0, 0, 46, 26,128, 63, 25, 4,240, 65, 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 11, 3, 0, 1, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 111, 18,131, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 20, 13, 3, - 68, 65, 84, 65, 16, 1, 0, 0,136, 18, 13, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 31, 13, 3, + 68, 65, 84, 65, 16, 1, 0, 0,224, 29, 13, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63,242, 4, 53,191, -243, 4, 53, 63, 0, 20, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +243, 4, 53, 63, 88, 31, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0, 20, 13, 3, 80, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128, 20, 13, 3, 19, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 31, 13, 3, 80, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,216, 31, 13, 3, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 87, 79, 0, 0,112, 1, 0, 0, 8, 21, 13, 3,132, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 87, 79, 0, 0,112, 1, 0, 0, 96, 32, 13, 3,132, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114, 99, 80, 61,114, 99, 80, 61, 114, 99, 80, 61,199, 54, 36, 60,199, 54, 36, 60,199, 54, 36, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3514,14 +3514,14 @@ char datatoc_startup_blend[]= { 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,224, 22, 13, 3, 68, 65, 84, 65, 32, 0, 0, 0,224, 22, 13, 3, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 34, 13, 3, 68, 65, 84, 65, 32, 0, 0, 0, 56, 34, 13, 3, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, -220, 3, 0, 0,104, 23, 13, 3,121, 0, 0, 0, 1, 0, 0, 0,168, 27, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +220, 3, 0, 0,192, 34, 13, 3,121, 0, 0, 0, 1, 0, 0, 0, 0, 39, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232, 15, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 27, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3547,16 +3547,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0,168, 27, 13, 3,121, 0, 0, 0, 1, 0, 0, 0, -176, 33, 13, 3,104, 23, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0, 0, 39, 13, 3,121, 0, 0, 0, 1, 0, 0, 0, + 8, 45, 13, 3,192, 34, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 40,196,109, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,110, 14, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 32, 91, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,122, 14, 3, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,232, 31, 13, 3, 80, 32, 13, 3, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 43, 13, 3,168, 43, 13, 3, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3576,21 +3576,21 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 32, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,152,252,244, 2,152,179, 90, 3, 25, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 44, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 24,208, 90, 3,184,249, 91, 3, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 4, 0, 0, 0,232, 31, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, 80, 32, 13, 3, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0,184, 32, 13, 3,124, 0, 0, 0, 1, 0, 0, 0, + 4, 0, 0, 0, 64, 43, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,168, 43, 13, 3, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0, 16, 44, 13, 3,124, 0, 0, 0, 1, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,205,204, 76, 62, 10,215,163, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0,176, 33, 13, 3,121, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,168, 27, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0, 8, 45, 13, 3,121, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 39, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 16, 13, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 28, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3617,7 +3617,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 77, 65, 0, 0,160, 2, 0, 0,240, 37, 13, 3, 44, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 65, 0, 0,160, 2, 0, 0, 72, 49, 13, 3, 44, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3632,14 +3632,14 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61, 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,248, 40, 13, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 80, 52, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 42, 13, 3, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 53, 13, 3, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111,148, 26, 63,111,148, 26, 63, 111,148, 26, 63,205,204, 76, 61,205,204,204, 61,102,102,166, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,248, 40, 13, 3, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,203, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 80, 52, 13, 3, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,215, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -3647,9 +3647,9 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,104, 42, 13, 3, 19, 0, 0, 0, - 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 1, 0, 1, 0, 49, 0, 49, 0,240, 42, 13, 3, - 88, 59, 13, 3, 68, 65, 84, 65, 0, 16, 0, 0,240, 42, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,192, 53, 13, 3, 19, 0, 0, 0, + 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 1, 0, 1, 0, 49, 0, 49, 0, 72, 54, 13, 3, +176, 70, 13, 3, 68, 65, 84, 65, 0, 16, 0, 0, 72, 54, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3778,7 +3778,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0, - 88, 59, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176, 70, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4930,7 +4930,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0, 48, 1, 0, 0,192,203, 13, 3, 39, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0, 48, 1, 0, 0, 24,215, 13, 3, 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -4939,10 +4939,10 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,205, 13, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88,205, 13, 3, 19, 0, 0, 0, - 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 14, 0, 13, 0,224,205, 13, 3, - 72,222, 13, 3, 68, 65, 84, 65, 0, 16, 0, 0,224,205, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,216, 13, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,216, 13, 3, 19, 0, 0, 0, + 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 14, 0, 13, 0, 56,217, 13, 3, +160,233, 13, 3, 68, 65, 84, 65, 0, 16, 0, 0, 56,217, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, @@ -5071,7 +5071,7 @@ char datatoc_startup_blend[]= { 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 68, 65, 84, 65, 0,144, 0, 0, - 72,222, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, +160,233, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, @@ -6223,20 +6223,20 @@ char datatoc_startup_blend[]= { 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0, 40, 1, 0, 0,176,110, 14, 3, 54, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0, 40, 1, 0, 0, 8,122, 14, 3, 54, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,112, 14, 3,240,119, 14, 3,208,120, 14, 3, 0, 0, 0, 0, 96,114, 14, 3, - 64,117, 14, 3, 0, 0, 0, 0, 24,109,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,112, 14, 3, - 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,115, 14, 3, 1, 0, 0, 0, - 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,118, 14, 3, 3, 0, 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,123, 14, 3, 72,131, 14, 3, 40,132, 14, 3, 0, 0, 0, 0,184,125, 14, 3, +152,128, 14, 3, 0, 0, 0, 0,152,133, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 14, 3, + 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,126, 14, 3, 1, 0, 0, 0, + 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,129, 14, 3, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 30, 0, 6, 0, 1, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, 64,112, 14, 3, 0, 0, 0, 0, 1, 0, 0, 0,240, 37, 13, 3, - 68, 65, 84, 65, 84, 1, 0, 0,168,112, 14, 3, 87, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,152,123, 14, 3, 0, 0, 0, 0, 1, 0, 0, 0, 72, 49, 13, 3, + 68, 65, 84, 65, 84, 1, 0, 0, 0,124, 14, 3, 87, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,114, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,125, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6245,16 +6245,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, 96,114, 14, 3, 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0,184,125, 14, 3, 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63, 255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191, 230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191,253,255,127,191, 0, 0,128,191, 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63, 247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, 1, 0, 0, 0,245,255,127, 63, 5, 0,128,191, 0, 0,128, 63, 230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191,250,255,127,191, 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73,230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65, - 84, 1, 0, 0,136,115, 14, 3, 87, 1, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 1, 0, 0,224,126, 14, 3, 87, 1, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,117, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,128, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6263,28 +6263,28 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0, 64,117, 14, 3, 57, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0,152,128, 14, 3, 57, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 6, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65, 84, 1, 0, 0, 56,118, 14, 3, 87, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65, 84, 1, 0, 0,144,129, 14, 3, 87, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,119, 14, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,131, 14, 3, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208,120, 14, 3, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 40,132, 14, 3, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 24,109,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,152,133, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,120, 0, 0, 0,240,119, 14, 3, 56, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,120, 0, 0, 0, 72,131, 14, 3, 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, 68, 65, 84, 65, - 8, 1, 0, 0,208,120, 14, 3, 67, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 8, 1, 0, 0, 40,132, 14, 3, 67, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, @@ -6293,13 +6293,13 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, - 24,109,104, 3, 61, 0, 0, 0, 24, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +152,133, 14, 3, 61, 0, 0, 0, 24, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255, 66, 82, 0, 0,196, 2, 0, 0, 64,122, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, -232,128, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, 48, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 23, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 0,216,126, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,255,255,255,255,255,255,255,255,255, 66, 82, 0, 0,196, 2, 0, 0, 96,134, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, + 8,141, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, 48, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 40, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0,248,138, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, @@ -6307,19 +6307,19 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 48,153, 91, 3, 17, 0, 0, 0, 0, 0, 0, 0, -168,169, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 24,253,125, 3, 17, 0, 0, 0, 0, 0, 0, 0, +112,219,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 4, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,140,122, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,172,134, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6328,21 +6328,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,216,126, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,248,138, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61, 80,128, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 46,189,194, 61,112,140, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 80,128, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,112,140, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,232,128, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 32,134, 14, 3, - 64,122, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,111, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 16,132, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 8,141, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 64,146, 14, 3, + 96,134, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,111, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 23, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 48,144, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -6350,7 +6350,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,176,160,105, 3, 1, 0, 0, 0, 0, 0, 0, 0,224, 53, 92, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6358,11 +6358,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, - 68, 65, 84, 65, 8, 1, 0, 0, 52,129, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 8, 1, 0, 0, 84,141, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, @@ -6371,21 +6371,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 16, 1, 0, 0, 16,132, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, + 16, 1, 0, 0, 48,144, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, -136,133, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +168,145, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0,136,133, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0,168,145, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 32,134, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 88,139, 14, 3,232,128, 14, 3, + 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 64,146, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,120,151, 14, 3, 8,141, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 2, 24, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, - 72,137, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 2, 41, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +104,149, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -6393,7 +6393,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,200,235,107, 3, 18, 0, 0, 0, 0, 0, 0, 0,248, 77,104, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 80, 0,123, 3, 18, 0, 0, 0, 0, 0, 0, 0,224, 58,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6401,11 +6401,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 8, 1, 0, 0,108,134, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 1, 0, 0,140,146, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, @@ -6414,20 +6414,20 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, - 72,137, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +104,149, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,192,138, 14, 3, + 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,224,150, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 48, 0, 0, 0,192,138, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 48, 0, 0, 0,224,150, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0,196, 2, 0, 0, 88,139, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,144,144, 14, 3, 32,134, 14, 3, 0, 0, 0, 0, + 66, 82, 0, 0,196, 2, 0, 0,120,151, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,176,156, 14, 3, 64,146, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, 97,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,128,142, 14, 3, + 24, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,160,154, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, @@ -6436,7 +6436,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63,136, 37,108, 3, 2, 0, 0, 0, 0, 0, 0, 0,240,136,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6444,11 +6444,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 4, 8, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, -164,139, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +196,151, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, @@ -6456,21 +6456,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,128,142, 14, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,160,154, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,248,143, 14, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 24,156, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, -248,143, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, + 24,156, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, -196, 2, 0, 0,144,144, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,200,149, 14, 3, 88,139, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 31, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,184,147, 14, 3, 1, 0, 1, 0, +196, 2, 0, 0,176,156, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,232,161, 14, 3,120,151, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 47, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,216,159, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6479,7 +6479,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,160, 7, 92, 3, 19, 0, 0, 0, 0, 0, 0, 0, 40,136,118, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 24,243,123, 3, 19, 0, 0, 0, 0, 0, 0, 0,112,247,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6487,10 +6487,10 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,220,144, 14, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,252,156, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -6499,21 +6499,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,184,147, 14, 3, 82, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,216,159, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 48,149, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 80,161, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 48,149, 14, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 80,161, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, -200,149, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 0,155, 14, 3,144,144, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,114, -101, 97,115,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,240,152, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, +232,161, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 32,167, 14, 3,176,156, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,114, +101, 97,115,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 25, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16,165, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6522,7 +6522,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +184, 85,108, 3, 3, 0, 0, 0, 0, 0, 0, 0, 56,126,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6530,10 +6530,10 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, 205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, - 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 20,150, 14, 3, 32, 0, 0, 0, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 52,162, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, @@ -6542,21 +6542,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,240,152, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 16,165, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, -228, 97,175,190, 50,131,112, 63,218,243,127,191, 10,183,157,188,104,154, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +228, 97,175,190, 50,131,112, 63,218,243,127,191, 10,183,157,188,136,166, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,104,154, 14, 3, 80, 1, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136,166, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 64, 63, - 10,215, 35, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 0,155, 14, 3, - 86, 1, 0, 0, 1, 0, 0, 0, 56,160, 14, 3,200,149, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, - 0, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 25, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 40,158, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10,215, 35, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 32,167, 14, 3, + 86, 1, 0, 0, 1, 0, 0, 0, 88,172, 14, 3,232,161, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, + 0, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 42, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 72,170, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, @@ -6564,8 +6564,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,240,244, 90, 3, - 20, 0, 0, 0, 0, 0, 0, 0, 80,108,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 80,183,129, 3, + 20, 0, 0, 0, 0, 0, 0, 0,184, 20, 91, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6573,10 +6573,10 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 76,155, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,108,167, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, @@ -6585,21 +6585,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 40,158, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 72,170, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, - 54,189,194, 61, 14,215,126,191, 46,189,194, 61,160,159, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 54,189,194, 61, 14,215,126,191, 46,189,194, 61,192,171, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,160,159, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,192,171, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 56,160, 14, 3, 86, 1, 0, 0, - 1, 0, 0, 0,112,165, 14, 3, 0,155, 14, 3, 40, 0,104, 3, 0, 0, 0, 0, 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 29, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 96,163, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 88,172, 14, 3, 86, 1, 0, 0, + 1, 0, 0, 0,144,177, 14, 3, 32,167, 14, 3, 40, 0,104, 3, 0, 0, 0, 0, 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,128,175, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, @@ -6607,8 +6607,8 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,160, 89,118, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 48,236, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6619,7 +6619,7 @@ char datatoc_startup_blend[]= { 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, - 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,132,160, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, + 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,164,172, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6628,21 +6628,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 96,163, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,128,175, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186, -224,255,127,191,114, 97,255,186,216,164, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +224,255,127,191,114, 97,255,186,248,176, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,216,164, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,248,176, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,112,165, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, -168,170, 14, 3, 56,160, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,105,108,108, 47, 68,101,101,112,101,110, 0, 48, 48, - 49, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 0,152,168, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,144,177, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, +200,182, 14, 3, 88,172, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,105,108,108, 47, 68,101,101,112,101,110, 0, 48, 48, + 49, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0,184,180, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, @@ -6650,8 +6650,8 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,168,117,109, 3, 5, 0, 0, 0, 0, 0, 0, 0, +232,220,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6659,10 +6659,10 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,188,165, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,220,177, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6671,21 +6671,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,152,168, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,184,180, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186, 16,170, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114, 97,255,186, 48,182, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 16,170, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 48,182, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,168,170, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,224,175, 14, 3, -112,165, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,108, 97,116,116,101,110, 47, 67,111,110,116,114, 97,115,116, 0, 48, - 48, 49, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,208,173, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,200,182, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 0,188, 14, 3, +144,177, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,108, 97,116,116,101,110, 47, 67,111,110,116,114, 97,115,116, 0, 48, + 48, 49, 0, 0, 2, 0, 0, 3, 27, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,240,185, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -6693,7 +6693,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,184,165,109, 3, 6, 0, 0, 0, 0, 0, 0, 0,192,222,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6701,11 +6701,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 8, 1, 0, 0,244,170, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 8, 1, 0, 0, 20,183, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, @@ -6714,21 +6714,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 16, 1, 0, 0,208,173, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, + 16, 1, 0, 0,240,185, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, - 72,175, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +104,187, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0, 72,175, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0,104,187, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,224,175, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 24,181, 14, 3,168,170, 14, 3, + 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 0,188, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 56,193, 14, 3,200,182, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, 97, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, - 8,179, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 3, 28, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, + 40,191, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -6736,7 +6736,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,248, 87,104, 3, 7, 0, 0, 0, 0, 0, 0, 0,240,245,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6748,7 +6748,7 @@ char datatoc_startup_blend[]= { 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 8, 1, 0, 0, 44,176, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 1, 0, 0, 76,188, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, @@ -6757,20 +6757,20 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, - 8,179, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 40,191, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,128,180, 14, 3, + 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,160,192, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 48, 0, 0, 0,128,180, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 48, 0, 0, 0,160,192, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0,196, 2, 0, 0, 24,181, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 80,186, 14, 3,224,175, 14, 3, 0, 0, 0, 0, + 66, 82, 0, 0,196, 2, 0, 0, 56,193, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,112,198, 14, 3, 0,188, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 73,110,102,108, 97,116,101, 47, 68,101,102,108, 97,116,101, 0, 48, 48, 49, 0, 0, 0, 2, 0, 0, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 64,184, 14, 3, + 29, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 96,196, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, @@ -6779,7 +6779,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 64,201,103, 3, 8, 0, 0, 0, 0, 0, 0, 0,160,249,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6787,11 +6787,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0, -100,181, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +132,193, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, @@ -6799,21 +6799,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 64,184, 14, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 96,196, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,184,185, 14, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,216,197, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, -184,185, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, +216,197, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, -196, 2, 0, 0, 80,186, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,136,191, 14, 3, 24,181, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,120,189, 14, 3, 1, 0, 1, 0, +196, 2, 0, 0,112,198, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,168,203, 14, 3, 56,193, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 30, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,152,201, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6822,7 +6822,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,192,242, 90, 3, 9, 0, 0, 0, 0, 0, 0, 0,128,232,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6830,10 +6830,10 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, - 20,174,199, 62, 20,174,199, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,156,186, 14, 3, + 20,174,199, 62, 20,174,199, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,188,198, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -6842,21 +6842,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,120,189, 14, 3, 82, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,152,201, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,240,190, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 16,203, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,240,190, 14, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 16,203, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, -136,191, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,192,196, 14, 3, 80,186, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105, -103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 26, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,176,194, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, +168,203, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,224,208, 14, 3,112,198, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105, +103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 43, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,208,206, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -6865,7 +6865,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0,160,103, 3, 21, 0, 0, 0, 0, 0, 0, 0,136,174,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112, 35,131, 3, 21, 0, 0, 0, 0, 0, 0, 0,184, 50, 91, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6873,10 +6873,10 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, 205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,212,191, 14, 3, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,244,203, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, @@ -6885,21 +6885,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,176,194, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,208,206, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 40,196, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 72,208, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40,196, 14, 3, 80, 1, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72,208, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, - 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,192,196, 14, 3, - 86, 1, 0, 0, 1, 0, 0, 0,248,201, 14, 3,136,191, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 22, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,232,199, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,224,208, 14, 3, + 86, 1, 0, 0, 1, 0, 0, 0, 24,214, 14, 3,168,203, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 39, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 8,212, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, @@ -6907,8 +6907,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 8,177,107, 3, - 22, 0, 0, 0, 0, 0, 0, 0, 32,243,244, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,232,178,103, 3, + 22, 0, 0, 0, 0, 0, 0, 0, 88,238,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6916,10 +6916,10 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 12,197, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 44,209, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, @@ -6928,21 +6928,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,232,199, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 8,212, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, - 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 96,201, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 54,189,194, 61, 14,215,126,191, 46,189,194, 61,128,213, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 96,201, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,128,213, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,248,201, 14, 3, 86, 1, 0, 0, - 1, 0, 0, 0, 48,207, 14, 3,192,196, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117,108,116,105,112,108,121, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 27, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 32,205, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 24,214, 14, 3, 86, 1, 0, 0, + 1, 0, 0, 0, 80,219, 14, 3,224,208, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117,108,116,105,112,108,121, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 44, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 64,217, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, @@ -6950,8 +6950,8 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,208, 81,105, 3, 23, 0, 0, 0, - 0, 0, 0, 0, 40, 57, 91, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 72,223,104, 3, 23, 0, 0, 0, + 0, 0, 0, 0, 64, 51, 91, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6959,10 +6959,10 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 68,202, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,100,214, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6971,21 +6971,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 32,205, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 64,217, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, - 14,215,126,191, 46,189,194, 61,152,206, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14,215,126,191, 46,189,194, 61,184,218, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,152,206, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,184,218, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 48,207, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, -104,212, 14, 3,248,201, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 78,117,100,103,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 0, 88,210, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 80,219, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, +136,224, 14, 3, 24,214, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 78,117,100,103,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 31, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0,120,222, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, @@ -6993,8 +6993,8 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 80,184,104, 3, 10, 0, 0, 0, 0, 0, 0, 0, + 48,236,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7002,10 +7002,10 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,124,207, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,156,219, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -7014,21 +7014,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 88,210, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,120,222, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,208,211, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114, 97,255,186,240,223, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,208,211, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,240,223, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,104,212, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,160,217, 14, 3, - 48,207, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,105,110, 99,104, 47, 77, 97,103,110,105,102,121, 0, 48, 48, 49, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,144,215, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,136,224, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,192,229, 14, 3, + 80,219, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,105,110, 99,104, 47, 77, 97,103,110,105,102,121, 0, 48, 48, 49, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 32, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,176,227, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -7036,7 +7036,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,184, 64,106, 3, 11, 0, 0, 0, 0, 0, 0, 0, 40,193,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7044,11 +7044,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, - 68, 65, 84, 65, 8, 1, 0, 0,180,212, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 8, 1, 0, 0,212,224, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, @@ -7057,21 +7057,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 16, 1, 0, 0,144,215, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, + 16, 1, 0, 0,176,227, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, - 8,217, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 40,229, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0, 8,217, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 40,229, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,160,217, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,216,222, 14, 3,104,212, 14, 3, + 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,192,229, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,248,234, 14, 3,136,224, 14, 3, 9,186,107, 0, 0, 0, 0, 0, 66, 82, 80,111,108,105,115,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, -200,220, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 3, 33, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +232,232, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -7079,7 +7079,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,144,131,104, 3, 6, 0, 0, 0, 0, 0, 0, 0,216,196,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7091,7 +7091,7 @@ char datatoc_startup_blend[]= { 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 8, 1, 0, 0,236,217, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 1, 0, 0, 12,230, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, @@ -7100,20 +7100,20 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, -200,220, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, +232,232, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 64,222, 14, 3, + 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 96,234, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 48, 0, 0, 0, 64,222, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 48, 0, 0, 0, 96,234, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0,196, 2, 0, 0,216,222, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 16,228, 14, 3,160,217, 14, 3, 0, 0, 0, 0, + 66, 82, 0, 0,196, 2, 0, 0,248,234, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 48,240, 14, 3,192,229, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83, 99,114, 97,112,101, 47, 80,101, 97,107,115, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0,226, 14, 3, + 34, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 32,238, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, @@ -7122,7 +7122,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 56, 36,104, 3, 12, 0, 0, 0, 0, 0, 0, 0,240, 31, 91, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7130,11 +7130,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, - 36,223, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68,235, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, @@ -7142,21 +7142,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 0,226, 14, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 32,238, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,120,227, 14, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,152,239, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, -120,227, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, +152,239, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, -196, 2, 0, 0, 16,228, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 72,233, 14, 3,216,222, 14, 3,164, 25,110, 0, 0, 0, 0, 0, - 66, 82, 83, 99,117,108,112,116, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 34, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 56,231, 14, 3, 1, 0, 1, 0, +196, 2, 0, 0, 48,240, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,104,245, 14, 3,248,234, 14, 3,164, 25,110, 0, 0, 0, 0, 0, + 66, 82, 83, 99,117,108,112,116, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 22, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 88,243, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7165,7 +7165,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,240, 41,125, 3, 4, 0, 0, 0, 0, 0, 0, 0,168,193, 91, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,104,194, 91, 3, 4, 0, 0, 0, 0, 0, 0, 0,192, 15,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7173,10 +7173,10 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0,160,119, 78, 63, 0, 0,128, 63, - 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 92,228, 14, 3, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,124,240, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -7185,21 +7185,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 56,231, 14, 3, 82, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 88,243, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,176,232, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,208,244, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,176,232, 14, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,208,244, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, - 72,233, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,128,238, 14, 3, 16,228, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109, -101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 32, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,112,236, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, +104,245, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,160,250, 14, 3, 48,240, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109, +101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 48, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,144,248, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -7208,7 +7208,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -232, 93,105, 3, 24, 0, 0, 0, 0, 0, 0, 0, 56,232,244, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +224, 20,108, 3, 24, 0, 0, 0, 0, 0, 0, 0,136,174,107, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7216,10 +7216,10 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, 205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,148,233, 14, 3, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,180,245, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, @@ -7228,21 +7228,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,112,236, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,144,248, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,232,237, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 8,250, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,232,237, 14, 3, 80, 1, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8,250, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, - 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,128,238, 14, 3, - 86, 1, 0, 0, 1, 0, 0, 0,184,243, 14, 3, 72,233, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, - 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,241, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,160,250, 14, 3, + 86, 1, 0, 0, 1, 0, 0, 0,136, 0, 73, 3,104,245, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, + 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 35, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,200,253, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, @@ -7250,8 +7250,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 72,224, 90, 3, + 13, 0, 0, 0, 0, 0, 0, 0,160, 35, 91, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7259,10 +7259,10 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,204,238, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,236,250, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, @@ -7271,21 +7271,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,168,241, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,200,253, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, - 46, 95,255,186,224,255,127,191,114, 97,255,186, 32,243, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 46, 95,255,186,224,255,127,191,114, 97,255,186, 64,255, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 32,243, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 64,255, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,184,243, 14, 3, 86, 1, 0, 0, - 1, 0, 0, 0,240,248, 14, 3,128,238, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,110, 97,107,101, 32, 72,111,111,107, - 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,224,246, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,136, 0, 73, 3, 86, 1, 0, 0, + 1, 0, 0, 0,192, 5, 73, 3,160,250, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,110, 97,107,101, 32, 72,111,111,107, + 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 36, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,176, 3, 73, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, @@ -7293,8 +7293,8 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 88, 32, 92, 3, 14, 0, 0, 0, + 0, 0, 0, 0,152, 67,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7305,7 +7305,7 @@ char datatoc_startup_blend[]= { 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 4,244, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,212, 0, 73, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7314,21 +7314,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,224,246, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,176, 3, 73, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186, -224,255,127,191,114, 97,255,186, 88,248, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +224,255,127,191,114, 97,255,186, 40, 5, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 88,248, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40, 5, 73, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,240,248, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, -136, 0, 73, 3,184,243, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 33, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 0, 24,252, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,192, 5, 73, 3, 86, 1, 0, 0, 1, 0, 0, 0, +248, 10, 73, 3,136, 0, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 49, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0,232, 8, 73, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, @@ -7336,8 +7336,8 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 40, 38, 92, 3, 25, 0, 0, 0, 0, 0, 0, 0, -120,197,109, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,176, 95,119, 3, 25, 0, 0, 0, 0, 0, 0, 0, + 72,253,123, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7345,10 +7345,10 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 4, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 60,249, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 12, 6, 73, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, @@ -7357,21 +7357,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0, 24,252, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,232, 8, 73, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61,144,253, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 46,189,194, 61, 96, 10, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,144,253, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 96, 10, 73, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,136, 0, 73, 3, 86, 1, 0, 0, 1, 0, 0, 0, 40, 0,104, 3, -240,248, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,117, 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 2, 28, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 40,254, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,248, 10, 73, 3, 86, 1, 0, 0, 1, 0, 0, 0, 48, 16, 73, 3, +192, 5, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,117, 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 2, 45, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 32, 14, 73, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -7379,7 +7379,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,192, 7,104, 3, 26, 0, 0, 0, 0, 0, 0, 0, 64, 38,105, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,232,175,105, 3, 26, 0, 0, 0, 0, 0, 0, 0,208, 29,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7387,11 +7387,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 8, 1, 0, 0,212, 0, 73, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 8, 1, 0, 0, 68, 11, 73, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, @@ -7400,21 +7400,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 16, 1, 0, 0, 40,254, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 16, 1, 0, 0, 32, 14, 73, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, -160,255, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152, 15, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0,160,255, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0,152, 15, 73, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 40, 0,104, 3, 86, 1, 0, 0, 1, 0, 0, 0,176, 3, 73, 3,136, 0, 73, 3, + 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 48, 16, 73, 3, 86, 1, 0, 0, 1, 0, 0, 0,104, 21, 73, 3,248, 10, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,101,120, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 3, 30, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, - 56, 94, 92, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 3, 46, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, + 88, 19, 73, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -7422,7 +7422,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,184, 5,113, 3, 27, 0, 0, 0, 0, 0, 0, 0, 48,236, 90, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,104, 48,128, 3, 27, 0, 0, 0, 0, 0, 0, 0,120,177, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7430,11 +7430,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, - 8, 1, 0, 0,116, 0,104, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 1, 0, 0,124, 16, 73, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, @@ -7443,20 +7443,20 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, - 56, 94, 92, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 88, 19, 73, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,120, 80,105, 3, + 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,208, 20, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 48, 0, 0, 0,120, 80,105, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 48, 0, 0, 0,208, 20, 73, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0,196, 2, 0, 0,176, 3, 73, 3, 86, 1, 0, 0, 1, 0, 0, 0,232, 8, 73, 3, 40, 0,104, 3, 0, 0, 0, 0, + 66, 82, 0, 0,196, 2, 0, 0,104, 21, 73, 3, 86, 1, 0, 0, 1, 0, 0, 0,160, 26, 73, 3, 48, 16, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,104,117,109, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,216, 6, 73, 3, + 37, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,144, 24, 73, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, @@ -7465,7 +7465,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63,112, 11,119, 3, 15, 0, 0, 0, 0, 0, 0, 0,152, 72,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7473,11 +7473,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, -252, 3, 73, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +180, 21, 73, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, @@ -7485,21 +7485,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,216, 6, 73, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,144, 24, 73, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 80, 8, 73, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 8, 26, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, - 80, 8, 73, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, + 8, 26, 73, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, -196, 2, 0, 0,232, 8, 73, 3, 86, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176, 3, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 84,119,105,115,116, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 12, 73, 3, 1, 0, 1, 0, +196, 2, 0, 0,160, 26, 73, 3, 86, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104, 21, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 84,119,105,115,116, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 38, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,200, 29, 73, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7508,7 +7508,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,200,253,106, 3, 16, 0, 0, 0, 0, 0, 0, 0,232, 74,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7516,10 +7516,10 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, - 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 52, 9, 73, 3, + 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,236, 26, 73, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -7528,19 +7528,19 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 16, 12, 73, 3, 82, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,200, 29, 73, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,136, 13, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 64, 31, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136, 13, 73, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 64, 31, 73, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 85, 83, 69, 82,248, 12, 0, 0, -224,249,240, 1,194, 0, 0, 0, 1, 0, 0, 0, 33, 8, 17, 1, 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, +192, 1,241, 1,194, 0, 0, 0, 1, 0, 0, 0, 33, 8, 17, 1, 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7597,8 +7597,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 2, 0, 94, 1, 8, 0, 0, 0, 3, 0, 0, 0, 56, 52, 39, 1, 0, 0, 0, 0, 2, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0, - 68,172, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0,128, 0, 0, 0, 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0,128, 27, 73, 3, -128, 27, 73, 3,120,100, 3, 3,120,100, 3, 3,136,125, 3, 3,136,125, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68,172, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0,128, 0, 0, 0, 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0, 56, 45, 73, 3, + 56, 45, 73, 3,144,108, 3, 3,144,108, 3, 3, 88, 34, 2, 3, 88, 34, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 2, 0, 25, 0, 1, 0, 20, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63, @@ -7644,7 +7644,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0,243,133, 57, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 29, 0, 0,128, 27, 73, 3,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 29, 0, 0, 56, 45, 73, 3,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, @@ -7878,7 +7878,7 @@ char datatoc_startup_blend[]= { 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 68, 78, 65, 49,112,226, 0, 0,192, 75,125, 3, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, + 1, 0, 0, 0, 0, 0, 0, 0, 68, 78, 65, 49,112,226, 0, 0, 0,221,126, 3, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69,200, 11, 0, 0, 42,110,101,120,116, 0, 42,112,114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, 0, 42,108, 97,115,116, 0,120, 0,121, 0,122, 0,119, 0,120,109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, 97,120, 0, 42,112,111,105,110,116,101,114, 0,103,114,111,117,112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0, From 51bd50f746e56ade6fdfe04882af5f0d4b38367a Mon Sep 17 00:00:00 2001 From: Andrea Weikert <elubie@gmx.net> Date: Wed, 21 Jul 2010 05:49:48 +0000 Subject: [PATCH 595/674] == installation paths == Hopefully last fix for path issues for this release * The config folder should also be searched for in the 'local' path for local installations (This code was already there, but removed in revision 30440) --- source/blender/blenlib/intern/path_util.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 470676cb461..d3e2b8f83e5 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -953,6 +953,7 @@ char *BLI_get_folder(int folder_id, char *subfolder) return NULL; case BLENDER_USER_DATAFILES: + if (get_path_local(path, "datafiles", subfolder)) break; if (get_path_user(path, "datafiles", subfolder, "BLENDER_USER_DATAFILES")) break; return NULL; @@ -973,6 +974,7 @@ char *BLI_get_folder(int folder_id, char *subfolder) return NULL; case BLENDER_USER_CONFIG: + if (get_path_local(path, "config", subfolder)) break; if (get_path_user(path, "config", subfolder, "BLENDER_USER_CONFIG")) break; return NULL; @@ -988,6 +990,7 @@ char *BLI_get_folder(int folder_id, char *subfolder) return NULL; case BLENDER_USER_SCRIPTS: + if (get_path_local(path, "scripts", subfolder)) break; if (get_path_user(path, "scripts", subfolder, "BLENDER_USER_SCRIPTS")) break; return NULL; From d17ce0f148d5cb5d11cc3b1591b397865f3fb641 Mon Sep 17 00:00:00 2001 From: Joerg Mueller <nexyon@gmail.com> Date: Wed, 21 Jul 2010 07:55:53 +0000 Subject: [PATCH 596/674] Merging revision 30567 from my GSoC branch, log: Fix for sound not possible to load when file unsaved. --- source/blender/blenkernel/intern/sound.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c index f780e71d5cd..ca39355976b 100644 --- a/source/blender/blenkernel/intern/sound.c +++ b/source/blender/blenkernel/intern/sound.c @@ -122,10 +122,15 @@ struct bSound* sound_new_file(struct Main *bmain, char* filename) bSound* sound = NULL; char str[FILE_MAX]; + char *path; + int len; strcpy(str, filename); - BLI_path_abs(str, bmain->name); + + path = /*bmain ? bmain->name :*/ G.sce; + + BLI_path_abs(str, path); len = strlen(filename); while(len > 0 && filename[len-1] != '/' && filename[len-1] != '\\') @@ -258,7 +263,7 @@ void sound_load(struct Main *bmain, struct bSound* sound) if(sound->id.lib) path = sound->id.lib->filepath; else - path = bmain ? bmain->name : G.sce; + path = /*bmain ? bmain->name :*/ G.sce; BLI_path_abs(fullpath, path); From 6b2c4dfe734efa738d5e698eeb478003b5279f80 Mon Sep 17 00:00:00 2001 From: Tom Musgrove <LetterRip@gmail.com> Date: Wed, 21 Jul 2010 08:23:57 +0000 Subject: [PATCH 597/674] making this consistent with texture brush selector in the 3d viewport --- release/scripts/ui/space_image.py | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/release/scripts/ui/space_image.py b/release/scripts/ui/space_image.py index e9c963db7b3..5afe7153d73 100644 --- a/release/scripts/ui/space_image.py +++ b/release/scripts/ui/space_image.py @@ -562,22 +562,10 @@ class IMAGE_PT_paint(bpy.types.Panel): toolsettings = context.tool_settings.image_paint brush = toolsettings.brush - wide_ui = context.region.width > narrowui col = layout.split().column() row = col.row() - row.template_list(toolsettings, "brushes", toolsettings, "active_brush_index", rows=2) - - col.template_ID(toolsettings, "brush", new="brush.add") - - if wide_ui: - sub = layout.row(align=True) - else: - sub = layout.column(align=True) - sub.prop_enum(brush, "imagepaint_tool", 'DRAW') - sub.prop_enum(brush, "imagepaint_tool", 'SOFTEN') - sub.prop_enum(brush, "imagepaint_tool", 'CLONE') - sub.prop_enum(brush, "imagepaint_tool", 'SMEAR') + col.template_ID_preview(toolsettings, "brush", new="brush.add", filter="is_imapaint_brush", rows=3, cols=8) if brush: col = layout.column() From 2ea8a71d877f55f229b75fcfbff5fd9eff801629 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Wed, 21 Jul 2010 09:25:00 +0000 Subject: [PATCH 598/674] 2.5: move some do_versions compatibility code under < 253 check. --- source/blender/blenloader/intern/readfile.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index de2a3cd47cc..bf31f6ac818 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10853,12 +10853,13 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } - /* put 2.50 compatibility code here until next subversion bump */ + if (main->versionfile < 253) { Object *ob; Scene *scene; bScreen *sc; Tex *tex; + Brush *brush; for (sc= main->screen.first; sc; sc= sc->id.next) { ScrArea *sa; @@ -10974,12 +10975,9 @@ static void do_versions(FileData *fd, Library *lib, Main *main) SEQ_END } } - } - { /* GSOC 2010 Sculpt - New settings for Brush */ - Brush *brush; for (brush= main->brush.first; brush; brush= brush->id.next) { /* Sanity Check */ @@ -11052,6 +11050,10 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } + /* put compatibility code here until next subversion bump */ + { + } + /* WATCH IT!!!: pointers from libdata have not been converted yet here! */ /* WATCH IT 2!: Userdef struct init has to be in editors/interface/resources.c! */ From f59afb5f998d98f2039e9f4278ff7773815a3029 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Wed, 21 Jul 2010 09:39:21 +0000 Subject: [PATCH 599/674] Unified size only works for sculpt, so only modify it in sculpt mode. --- source/blender/editors/sculpt_paint/paint_ops.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index 5e2d5f46800..fa9aae1a1e7 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -78,10 +78,11 @@ static int brush_scale_size_exec(bContext *C, wmOperator *op) /*int type = RNA_enum_get(op->ptr, "type");*/ Paint *paint = paint_get_active(CTX_data_scene(C)); Brush *br = paint_brush(paint); + Object *ob = CTX_data_active_object(C); float factor = RNA_float_get(op->ptr, "scalar"); if (br) { - if (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE) { + if (ob && (ob->mode & OB_MODE_SCULPT) && (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE)) { U.sculpt_paint_unified_size *= factor; } else { From ea008f862dd10067d18c47e45604b39f9adf1f19 Mon Sep 17 00:00:00 2001 From: Tom Musgrove <LetterRip@gmail.com> Date: Wed, 21 Jul 2010 10:29:23 +0000 Subject: [PATCH 600/674] forcing unfied size to off right now, since the other paint modes don't understand it. It can be renabled if jason has time to look at it (should be an easy fix, but it is far too late in the evening here for me to look). --- source/blender/editors/interface/resources.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index ff05dc41c9a..5ac6faa979e 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -1532,6 +1532,6 @@ void init_userdef_do_versions(void) if (U.sculpt_paint_unified_size == 0) U.sculpt_paint_unified_size = 35; - if (G.main->versionfile < 252 || (G.main->versionfile == 252 && G.main->subversionfile < 5)) - U.sculpt_paint_settings |= SCULPT_PAINT_USE_UNIFIED_SIZE; + if (G.main->versionfile < 253 || (G.main->versionfile == 253 && G.main->subversionfile < 1)) + U.sculpt_paint_settings &= ~SCULPT_PAINT_USE_UNIFIED_SIZE; } From edeef8bcd7af488bb11f03464d0bce7757eefcf8 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Wed, 21 Jul 2010 10:39:51 +0000 Subject: [PATCH 601/674] Revert revision 30441: [#22876] Add new scene, stacker ".00" bug This commit broke unique datablock naming, tried to fix it properly but the code here is too tricky to change now, will just reopen the bug report. --- source/blender/blenkernel/BKE_library.h | 3 +- source/blender/blenkernel/intern/library.c | 40 ++++++++++------------ 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/source/blender/blenkernel/BKE_library.h b/source/blender/blenkernel/BKE_library.h index fcf7ae85738..cb61a08f3ba 100644 --- a/source/blender/blenkernel/BKE_library.h +++ b/source/blender/blenkernel/BKE_library.h @@ -63,7 +63,7 @@ void free_libblock_us(struct ListBase *lb, void *idv); void free_main(struct Main *mainvar); void tag_main(struct Main *mainvar, int tag); -int splitIDname(char *name, char *left, int *nr); +void splitIDname(char *name, char *left, int *nr); void rename_id(struct ID *id, char *name); void test_idbutton(char *name); void text_idbutton(struct ID *id, char *text); @@ -85,3 +85,4 @@ void set_free_windowmanager_cb(void (*func)(struct bContext *, struct wmWindowMa #define ID_FALLBACK_NAME "Untitled" #endif + diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index 8b035ff1bba..fdc98d9ed29 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -995,7 +995,7 @@ void IMAnames_to_pupstring(char **str, char *title, char *extraops, ListBase *lb /* used by buttons.c library.c mball.c */ -int splitIDname(char *name, char *left, int *nr) +void splitIDname(char *name, char *left, int *nr) { int a; @@ -1003,21 +1003,19 @@ int splitIDname(char *name, char *left, int *nr) strncpy(left, name, 21); a= strlen(name); - if(a>1 && name[a-1]=='.') return a; + if(a>1 && name[a-1]=='.') return; while(a--) { if( name[a]=='.' ) { left[a]= 0; *nr= atol(name+a+1); - return a; + return; } if( isdigit(name[a])==0 ) break; left[a]= 0; } strcpy(left, name); - - return a; } static void sort_alpha_id(ListBase *lb, ID *id) @@ -1079,7 +1077,8 @@ static ID *is_dupid(ListBase *lb, ID *id, char *name) static int check_for_dupid(ListBase *lb, ID *id, char *name) { ID *idtest; - int nr= 0, nrtest, a, left_len; + int nr= 0, nrtest, a; + const int maxtest=32; char left[32], leftest[32], in_use[32]; /* make sure input name is terminated properly */ @@ -1096,25 +1095,22 @@ static int check_for_dupid(ListBase *lb, ID *id, char *name) /* we have a dup; need to make a new name */ /* quick check so we can reuse one of first 32 ids if vacant */ - memset(in_use, 0, sizeof(in_use)); + memset(in_use, 0, maxtest); /* get name portion, number portion ("name.number") */ - left_len= splitIDname(name, left, &nr); + splitIDname( name, left, &nr); /* if new name will be too long, truncate it */ if(nr>999 && strlen(left)>16) left[16]= 0; else if(strlen(left)>17) left[17]= 0; - if(left_len) { - for(idtest= lb->first; idtest; idtest= idtest->next) { - if( (id != idtest) && - (idtest->lib == NULL) && - (*name == *(idtest->name+2)) && - (strncmp(name, idtest->name+2, left_len)==0) && - (splitIDname(idtest->name+2, leftest, &nrtest) == left_len) - - ) { - if(nrtest < sizeof(in_use)) + for( idtest = lb->first; idtest; idtest = idtest->next ) { + if( id != idtest && idtest->lib == NULL ) { + splitIDname(idtest->name+2, leftest, &nrtest); + /* if base names match... */ + /* optimized */ + if( *left == *leftest && strcmp(left, leftest)==0 ) { + if(nrtest < maxtest) in_use[nrtest]= 1; /* mark as used */ if(nr <= nrtest) nr= nrtest+1; /* track largest unused */ @@ -1123,7 +1119,7 @@ static int check_for_dupid(ListBase *lb, ID *id, char *name) } /* decide which value of nr to use */ - for(a=0; a < sizeof(in_use); a++) { + for(a=0; a<maxtest; a++) { if(a>=nr) break; /* stop when we've check up to biggest */ if( in_use[a]==0 ) { /* found an unused value */ nr = a; @@ -1133,9 +1129,8 @@ static int check_for_dupid(ListBase *lb, ID *id, char *name) /* If the original name has no numeric suffix, * rather than just chopping and adding numbers, - * shave off the end chars until we have a unique name. - * Check the null terminators match as well so we dont get Cube.000 -> Cube.00 */ - if (nr==0 && name[left_len] == left[left_len]) { + * shave off the end chars until we have a unique name */ + if (nr==0) { int len = strlen(name)-1; idtest= is_dupid(lb, id, name); @@ -1394,3 +1389,4 @@ void rename_id(ID *id, char *name) new_id(lb, id, name); } + From e3428ae73f04d8a85cd2ec9aa8dcf91eee1ec27c Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Wed, 21 Jul 2010 10:44:46 +0000 Subject: [PATCH 602/674] Change back automatic draw method to triple buffer for Intel cards, overlap is not working reliable and flickering on various configurations, will try to find out what these are, but for now probably better to have correct than fast drawing. --- source/blender/windowmanager/intern/wm_draw.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index 7e0ee7226c5..899c7728af9 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -686,9 +686,11 @@ static int wm_automatic_draw_method(wmWindow *win) /* ATI opensource driver is known to be very slow at this */ if(GPU_type_matches(GPU_DEVICE_ATI, GPU_OS_UNIX, GPU_DRIVER_OPENSOURCE)) return USER_DRAW_OVERLAP; +#if 0 /* also Intel drivers don't work well with this */ else if(GPU_type_matches(GPU_DEVICE_INTEL, GPU_OS_ANY, GPU_DRIVER_ANY)) return USER_DRAW_OVERLAP; +#endif /* Windows software driver darkens color on each redraw */ else if(GPU_type_matches(GPU_DEVICE_SOFTWARE, GPU_OS_WIN, GPU_DRIVER_SOFTWARE)) return USER_DRAW_OVERLAP_FLIP; From 66ce15b7afb67f2f4d6e626505c66b19ff42118d Mon Sep 17 00:00:00 2001 From: Ton Roosendaal <ton@blender.org> Date: Wed, 21 Jul 2010 11:12:26 +0000 Subject: [PATCH 603/674] Added a donations link in the splash. --- source/blender/windowmanager/intern/wm_operators.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 3a39e871025..9fff73165b8 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -1212,6 +1212,7 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *arg_unuse split = uiLayoutSplit(layout, 0, 0); col = uiLayoutColumn(split, 0); uiItemL(col, "Links", 0); + uiItemStringO(col, "Donations", ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/blenderorg/blender-foundation/donation-payment/"); uiItemStringO(col, "Release Log", ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/development/release-logs/blender-250/"); uiItemStringO(col, "Manual", ICON_URL, "WM_OT_url_open", "url", "http://wiki.blender.org/index.php/Doc:Manual"); uiItemStringO(col, "Blender Website", ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/"); From e3ad451ae1ebe56e40473ff96018a47b3a1e4ef7 Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Wed, 21 Jul 2010 11:58:23 +0000 Subject: [PATCH 604/674] * closed small gap at top of appearance panel --- release/scripts/ui/space_view3d_toolbar.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index dabd26f6aad..f902ba86a3f 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -1108,9 +1108,9 @@ class VIEW3D_PT_tools_brush_appearance(PaintPanel): settings = self.paint_settings(context) brush = settings.brush - col = layout.column(); - if context.sculpt_object and context.tool_settings.sculpt: + col = layout.column(); + #if brush.sculpt_tool in ('DRAW', 'INFLATE', 'CLAY', 'CLAY_TUBES', 'PINCH', 'CREASE', 'BLOB', 'FLATTEN', 'FILL', 'SCRAPE'): if brush.sculpt_tool in ('DRAW', 'INFLATE', 'CLAY', 'PINCH', 'CREASE', 'BLOB', 'FLATTEN', 'FILL', 'SCRAPE'): col.prop(brush, "add_col", text="Add Color") @@ -1118,7 +1118,7 @@ class VIEW3D_PT_tools_brush_appearance(PaintPanel): else: col.prop(brush, "add_col", text="Color") - col.separator() + col.separator() col = layout.column() col.label(text="Icon:") From 9d0a67fdc41830f75851e9f0154271a25721fe1f Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Wed, 21 Jul 2010 14:08:55 +0000 Subject: [PATCH 605/674] Fix #22921: Default human meta-rig will not export to FBX. Still missed a check in my previous fix for this. --- release/scripts/io/export_fbx.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index 6469a59c8ff..bb846b0335a 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -2782,7 +2782,7 @@ Takes: {''') # Set the action active for my_bone in ob_arms: - if blenAction in my_bone.blenActionList: + if ob.animation_data and blenAction in my_bone.blenActionList: ob.animation_data.action = blenAction # print '\t\tSetting Action!', blenAction # scene.update(1) From 8eb594b74be479eda1cddc28291d7df27aa70dd5 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Wed, 21 Jul 2010 14:09:45 +0000 Subject: [PATCH 606/674] Fix #22870: Can't save modified non-packed images. File exist check wasn't taking into account that there could be relative paths. --- source/blender/editors/space_image/image_ops.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index 3e269634b27..03fc7dad016 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -127,10 +127,15 @@ static int space_image_file_exists_poll(bContext *C) SpaceImage *sima= CTX_wm_space_image(C); ImBuf *ibuf; void *lock; - int poll; - + int poll= 0; + char name[FILE_MAX]; + ibuf= ED_space_image_acquire_buffer(sima, &lock); - poll= (ibuf && BLI_exists(ibuf->name) && BLI_is_writable(ibuf->name)); + if(ibuf) { + BLI_strncpy(name, ibuf->name, FILE_MAX); + BLI_path_abs(name, G.sce); + poll= (BLI_exists(name) && BLI_is_writable(name)); + } ED_space_image_release_buffer(sima, lock); return poll; @@ -1030,6 +1035,8 @@ static int save_exec(bContext *C, wmOperator *op) BLI_strncpy(name, ibuf->name, FILE_MAX); if(name[0]==0) BLI_strncpy(name, G.ima, FILE_MAX); + else + BLI_path_abs(name, G.sce); if(BLI_exists(name) && BLI_is_writable(name)) { rr= BKE_image_acquire_renderresult(scene, ima); From ee6be64a2c0a8c0b04d71ec19fce239e519932e1 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Wed, 21 Jul 2010 14:11:19 +0000 Subject: [PATCH 607/674] Fix #22897: text insert operator only worked for one character, now inserts the whole string. --- source/blender/editors/curve/editfont.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c index 69ba432e778..20355de0e73 100644 --- a/source/blender/editors/curve/editfont.c +++ b/source/blender/editors/curve/editfont.c @@ -1229,7 +1229,7 @@ static int insert_text_exec(bContext *C, wmOperator *op) Object *obedit= CTX_data_edit_object(C); char *inserted_utf8; wchar_t *inserted_text, first; - int len; + int a, len; if(!RNA_property_is_set(op->ptr, "text")) return OPERATOR_CANCELLED; @@ -1241,13 +1241,12 @@ static int insert_text_exec(bContext *C, wmOperator *op) utf8towchar(inserted_text, inserted_utf8); first= inserted_text[0]; + for(a=0; a<len; a++) + insert_into_textbuf(obedit, inserted_text[a]); + MEM_freeN(inserted_text); MEM_freeN(inserted_utf8); - if(!first) - return OPERATOR_CANCELLED; - - insert_into_textbuf(obedit, first); kill_selection(obedit, 1); text_update_edited(C, scene, obedit, 1, 0); From ff00aa1b7ea71c44177762a72c23835af16073d2 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Wed, 21 Jul 2010 14:13:48 +0000 Subject: [PATCH 608/674] Fix #22786: displace node doesn't work with procedural textures. --- source/blender/nodes/intern/CMP_util.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/source/blender/nodes/intern/CMP_util.c b/source/blender/nodes/intern/CMP_util.c index f3e00cb37f8..bcb038bccc3 100644 --- a/source/blender/nodes/intern/CMP_util.c +++ b/source/blender/nodes/intern/CMP_util.c @@ -1125,7 +1125,19 @@ void convolve(CompBuf* dst, CompBuf* in1, CompBuf* in2) // sets fcol to pixelcolor at (x, y) void qd_getPixel(CompBuf* src, int x, int y, float* col) { - if ((x >= 0) && (x < src->x) && (y >= 0) && (y < src->y)) { + if(src->rect_procedural) { + float bc[4]; + src->rect_procedural(src, bc, (float)x/(float)src->xrad, (float)y/(float)src->yrad); + + switch(src->type){ + /* these fallthrough to get all the channels */ + case CB_RGBA: col[3]=bc[3]; + case CB_VEC3: col[2]=bc[2]; + case CB_VEC2: col[1]=bc[1]; + case CB_VAL: col[0]=bc[0]; + } + } + else if ((x >= 0) && (x < src->x) && (y >= 0) && (y < src->y)) { float* bc = &src->rect[(x + y*src->x)*src->type]; switch(src->type){ /* these fallthrough to get all the channels */ From 44160c97474215d7ed71b2b03bb971889ce4b18e Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Wed, 21 Jul 2010 15:22:11 +0000 Subject: [PATCH 609/674] Fix #20196: division by zero in edge slide with two overlapping loops. --- source/blender/editors/transform/transform.c | 5 +++-- source/blender/editors/transform/transform_input.c | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index beea3c9bee4..86fdb81e0d9 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -4780,10 +4780,11 @@ int doEdgeSlide(TransInfo *t, float perc) //Non prop code look = vertlist; while(look) { - float newlen; + float newlen, edgelen; ev = look->link; tempsv = BLI_ghash_lookup(vertgh,ev); - newlen = (len / len_v3v3(editedge_getOtherVert(tempsv->up,ev)->co,editedge_getOtherVert(tempsv->down,ev)->co)); + edgelen = len_v3v3(editedge_getOtherVert(tempsv->up,ev)->co,editedge_getOtherVert(tempsv->down,ev)->co); + newlen = (edgelen != 0.0f)? (len / edgelen): 0.0f; if(newlen > 1.0) {newlen = 1.0;} if(newlen < 0.0) {newlen = 0.0;} if(flip == 0) { diff --git a/source/blender/editors/transform/transform_input.c b/source/blender/editors/transform/transform_input.c index d7ebd28f604..b7cb34802cc 100644 --- a/source/blender/editors/transform/transform_input.c +++ b/source/blender/editors/transform/transform_input.c @@ -197,17 +197,17 @@ void InputCustomRatio(TransInfo *t, MouseInput *mi, short mval[2], float output[ mdx = (mi->precision_mval[0] + (float)(mval[0] - mi->precision_mval[0]) / 10.0f) - data[2]; mdy = (mi->precision_mval[1] + (float)(mval[1] - mi->precision_mval[1]) / 10.0f) - data[3]; - distance = (mdx*dx + mdy*dy) / length; + distance = (length != 0.0f)? (mdx*dx + mdy*dy) / length: 0.0f; } else { short mdx, mdy; mdx = mval[0] - data[2]; mdy = mval[1] - data[3]; - distance = (mdx*dx + mdy*dy) / length; + distance = (length != 0.0f)? (mdx*dx + mdy*dy) / length: 0.0f; } - output[0] = distance / length; + output[0] = (length != 0.0f)? distance / length: 0.0f; } } From 6a8ce04e543dd04678504db960bf19be1b487429 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Wed, 21 Jul 2010 15:23:49 +0000 Subject: [PATCH 610/674] Fix #20084: merging triangles with different normals into a quad would create a hole, just crappy editmesh code, no need to merge to bmesh. --- source/blender/editors/mesh/editmesh_tools.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index 52e1b3636ea..4477f375aab 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -3094,21 +3094,21 @@ static void givequadverts(EditFace *efa, EditFace *efa1, EditVert **v1, EditVert if VTEST(efa1, 1, efa) { *v3= efa1->v1; - *v4= efa1->v2; + *v4= (efa1->v2 == *v2)? efa1->v3: efa1->v2; vindex[2]= 0; - vindex[3]= 1; + vindex[3]= (efa1->v2 == *v2)? 2: 1; } else if VTEST(efa1, 2, efa) { *v3= efa1->v2; - *v4= efa1->v3; + *v4= (efa1->v3 == *v2)? efa1->v1: efa1->v3; vindex[2]= 1; - vindex[3]= 2; + vindex[3]= (efa1->v3 == *v2)? 0: 2; } else if VTEST(efa1, 3, efa) { *v3= efa1->v3; - *v4= efa1->v1; + *v4= (efa1->v1 == *v2)? efa1->v2: efa1->v1; vindex[2]= 2; - vindex[3]= 0; + vindex[3]= (efa1->v1 == *v2)? 1: 0; } else *v3= *v4= NULL; From b72af8c09a37854fa71f26b3d929cda41e003e44 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Wed, 21 Jul 2010 15:58:15 +0000 Subject: [PATCH 611/674] Fix #20983: cloth and smoke point cache step was not enforced to 1. --- source/blender/blenkernel/intern/cloth.c | 3 +++ .../makesrna/intern/rna_object_force.c | 25 ++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c index ce5bca1da56..b9b1c16c0c4 100644 --- a/source/blender/blenkernel/intern/cloth.c +++ b/source/blender/blenkernel/intern/cloth.c @@ -144,6 +144,9 @@ void cloth_init ( ClothModifierData *clmd ) if(!clmd->sim_parms->effector_weights) clmd->sim_parms->effector_weights = BKE_add_effector_weights(NULL); + + if(clmd->point_cache) + clmd->point_cache->step = 1; } static BVHTree *bvhselftree_build_from_cloth (ClothModifierData *clmd, float epsilon) diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c index 97c429209de..d253201fbc1 100644 --- a/source/blender/makesrna/intern/rna_object_force.c +++ b/source/blender/makesrna/intern/rna_object_force.c @@ -294,6 +294,29 @@ static void rna_Cache_active_point_cache_index_set(struct PointerRNA *ptr, int v BLI_freelistN(&pidlist); } +static void rna_PointCache_step_range(PointerRNA *ptr, int *min, int *max) +{ + Object *ob = ptr->id.data; + PointCache *cache= ptr->data; + PTCacheID *pid; + ListBase pidlist; + + *min= 1; + *max= 20; + + BKE_ptcache_ids_from_object(&pidlist, ob, NULL, 0); + + for(pid=pidlist.first; pid; pid=pid->next) { + if(pid->cache == cache) { + if(ELEM3(pid->type, PTCACHE_TYPE_CLOTH, PTCACHE_TYPE_SMOKE_DOMAIN, PTCACHE_TYPE_SMOKE_HIGHRES)) + *max= 1; + break; + } + } + + BLI_freelistN(&pidlist); +} + static char *rna_CollisionSettings_path(PointerRNA *ptr) { Object *ob= (Object*)ptr->id.data; @@ -670,7 +693,6 @@ static EnumPropertyItem *rna_Effector_shape_itemf(bContext *C, PointerRNA *ptr, } } - #else static void rna_def_pointcache(BlenderRNA *brna) @@ -694,6 +716,7 @@ static void rna_def_pointcache(BlenderRNA *brna) prop= RNA_def_property(srna, "step", PROP_INT, PROP_NONE); RNA_def_property_range(prop, 1, 20); + RNA_def_property_int_funcs(prop, NULL, NULL, "rna_PointCache_step_range"); RNA_def_property_ui_text(prop, "Cache Step", "Number of frames between cached frames"); RNA_def_property_update(prop, NC_OBJECT, "rna_Cache_change"); From 678892805ebcc97eafe9faf543c1e90e991776e9 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Wed, 21 Jul 2010 16:18:00 +0000 Subject: [PATCH 612/674] Fix #22883: interface panels blank when drawing axis constraint. GL_DEPTH_TEST was not incorrectly enabled in wireframe mode. --- .../blender/editors/transform/transform_constraints.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c index fd5e0580911..0177d458868 100644 --- a/source/blender/editors/transform/transform_constraints.c +++ b/source/blender/editors/transform/transform_constraints.c @@ -620,6 +620,8 @@ void drawConstraint(const struct bContext *C, TransInfo *t) if (tc->mode & CON_SELECT) { float vec[3]; char col2[3] = {255,255,255}; + int depth_test_enabled; + convertViewVec(t, vec, (short)(t->mval[0] - t->con.imval[0]), (short)(t->mval[1] - t->con.imval[1])); add_v3_v3(vec, tc->center); @@ -629,15 +631,18 @@ void drawConstraint(const struct bContext *C, TransInfo *t) glColor3ubv((GLubyte *)col2); - glDisable(GL_DEPTH_TEST); + depth_test_enabled = glIsEnabled(GL_DEPTH_TEST); + if(depth_test_enabled) + glDisable(GL_DEPTH_TEST); + setlinestyle(1); glBegin(GL_LINE_STRIP); glVertex3fv(tc->center); glVertex3fv(vec); glEnd(); setlinestyle(0); - // TRANSFORM_FIX_ME - //if(G.vd->zbuf) + + if(depth_test_enabled) glEnable(GL_DEPTH_TEST); } From 4536a4c6104085f39fe8fcd1c27f37caa3cd8950 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Wed, 21 Jul 2010 16:20:54 +0000 Subject: [PATCH 613/674] Fix #22841: crash rendering scene with opengl in sequencer as part of animation. Only allow this from main thread, opengl can't be called from render threads. It was already disabled in background mode. For now I'm going to consider this a limitation. --- source/blender/blenkernel/intern/sequencer.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 94aa2c62f1a..61415eb4a52 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -55,6 +55,7 @@ #include "BLI_listbase.h" #include "BLI_path_util.h" #include "BLI_string.h" +#include "BLI_threads.h" #include <pthread.h> #include "IMB_imbuf.h" @@ -2258,7 +2259,7 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int seq->scene->markers.first= seq->scene->markers.last= NULL; #endif - if(sequencer_view3d_cb && doseq_gl && (seq->scene == scene || have_seq==0) && seq->scene->camera) { + if(sequencer_view3d_cb && BLI_thread_is_main() && doseq_gl && (seq->scene == scene || have_seq==0) && seq->scene->camera) { /* opengl offscreen render */ scene_update_for_newframe(seq->scene, seq->scene->lay); se->ibuf= sequencer_view3d_cb(seq->scene, seqrectx, seqrecty, scene->r.seq_prev_type); From 64de3feb37a3892ff244d63b7ac62a97ab4379f2 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Wed, 21 Jul 2010 16:49:43 +0000 Subject: [PATCH 614/674] Fix #22813: black 3d view with overlap mode + operator doing backbuffer draw for selection but not selecting anything. --- source/blender/editors/space_view3d/view3d_draw.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index f282bc204a6..86a12cd6221 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -1116,6 +1116,7 @@ void backdrawview3d(Scene *scene, ARegion *ar, View3D *v3d) } v3d->flag &= ~V3D_INVALID_BACKBUF; + ar->swap= 0; /* mark invalid backbuf for wm draw */ G.f &= ~G_BACKBUFSEL; v3d->zbuf= FALSE; From 969c0fd718ed500fedfdeb1b4a5c0026febdb975 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Wed, 21 Jul 2010 17:37:40 +0000 Subject: [PATCH 615/674] Fix #22894: sequencer drag & drop wasn't working anymore. --- .../editors/space_sequencer/sequencer_add.c | 9 +++++++++ .../editors/space_sequencer/space_sequencer.c | 16 +++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index 01a99ed2b1f..c4c3701a18a 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -341,6 +341,9 @@ static int sequencer_add_movie_strip_exec(bContext *C, wmOperator *op) static int sequencer_add_movie_strip_invoke(bContext *C, wmOperator *op, wmEvent *event) { + if(RNA_collection_length(op->ptr, "files") || RNA_property_is_set(op->ptr, "filepath")) + return sequencer_add_movie_strip_exec(C, op); + if(!ED_operator_sequencer_active(C)) { BKE_report(op->reports, RPT_ERROR, "Sequencer area not active"); return OPERATOR_CANCELLED; @@ -389,6 +392,9 @@ static int sequencer_add_sound_strip_exec(bContext *C, wmOperator *op) static int sequencer_add_sound_strip_invoke(bContext *C, wmOperator *op, wmEvent *event) { + if(RNA_collection_length(op->ptr, "files") || RNA_property_is_set(op->ptr, "filepath")) + return sequencer_add_sound_strip_exec(C, op); + if(!ED_operator_sequencer_active(C)) { BKE_report(op->reports, RPT_ERROR, "Sequencer area not active"); return OPERATOR_CANCELLED; @@ -486,6 +492,9 @@ static int sequencer_add_image_strip_exec(bContext *C, wmOperator *op) static int sequencer_add_image_strip_invoke(bContext *C, wmOperator *op, wmEvent *event) { + if(RNA_collection_length(op->ptr, "files")) + return sequencer_add_image_strip_exec(C, op); + if(!ED_operator_sequencer_active(C)) { BKE_report(op->reports, RPT_ERROR, "Sequencer area not active"); return OPERATOR_CANCELLED; diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c index 586b76268e4..4cf25ab9585 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.c +++ b/source/blender/editors/space_sequencer/space_sequencer.c @@ -35,6 +35,7 @@ #include "BLI_blenlib.h" #include "BLI_math.h" +#include "BLI_path_util.h" #include "BKE_context.h" #include "BKE_screen.h" @@ -322,7 +323,20 @@ static int sound_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) static void sequencer_drop_copy(wmDrag *drag, wmDropBox *drop) { /* copy drag path to properties */ - RNA_string_set(drop->ptr, "filepath", drag->path); + if(RNA_struct_find_property(drop->ptr, "filepath")) + RNA_string_set(drop->ptr, "filepath", drag->path); + + if(RNA_struct_find_property(drop->ptr, "directory")) { + PointerRNA itemptr; + char dir[FILE_MAX], file[FILE_MAX]; + + BLI_split_dirfile(drag->path, dir, file); + + RNA_string_set(drop->ptr, "directory", dir); + + RNA_collection_add(drop->ptr, "files", &itemptr); + RNA_string_set(&itemptr, "name", file); + } } /* this region dropbox definition */ From 7925de141502b2d94bead44f422a9c55531267a9 Mon Sep 17 00:00:00 2001 From: Diego Borghetti <bdiego@gmail.com> Date: Wed, 21 Jul 2010 19:49:43 +0000 Subject: [PATCH 616/674] Fix #22894 [#22894] SEQUENCER; Drag & Drop into VSE as strip sends user to file manager for import - MS Windows The invoke function for both operator don't check the the filepath property (this come from the drop event), so always open the file browser. Note that this problem is still there for Image, but there is something else there, because the op SEQUENCER_OT_image_strip_add never got this property (filepath). I check and the problem seems to be the missing WM_FILESEL_FILEPATH when call WM_operator_properties_filesel. The problem is that if I put this flag in the function, the image strip stop working, so have to check a little more about this. (Any idea why ?) --- source/blender/editors/space_sequencer/sequencer_add.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index c4c3701a18a..4d51ac05fbd 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -352,6 +352,10 @@ static int sequencer_add_movie_strip_invoke(bContext *C, wmOperator *op, wmEvent if(!RNA_property_is_set(op->ptr, "relative_path")) RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + /* This is for drag and drop */ + if(RNA_property_is_set(op->ptr, "filepath")) + return sequencer_add_movie_strip_exec(C, op); + sequencer_generic_invoke_xy__internal(C, op, event, 0); WM_event_add_fileselect(C, op); @@ -403,6 +407,10 @@ static int sequencer_add_sound_strip_invoke(bContext *C, wmOperator *op, wmEvent if(!RNA_property_is_set(op->ptr, "relative_path")) RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + /* This is for drag and drop */ + if(RNA_property_is_set(op->ptr, "filepath")) + return sequencer_add_sound_strip_exec(C, op); + sequencer_generic_invoke_xy__internal(C, op, event, 0); WM_event_add_fileselect(C, op); From 188d1384fe79782354c969571a7a196f01b36716 Mon Sep 17 00:00:00 2001 From: Matt Ebb <matt@mke3.net> Date: Wed, 21 Jul 2010 22:57:48 +0000 Subject: [PATCH 617/674] Fix de/select all operator naming for consistency --- source/blender/editors/armature/editarmature.c | 4 ++-- source/blender/editors/mesh/editmesh_mods.c | 2 +- source/blender/editors/metaball/mball_edit.c | 2 +- source/blender/editors/object/object_select.c | 2 +- source/blender/editors/space_file/file_ops.c | 2 +- source/blender/editors/space_node/node_select.c | 2 +- source/blender/editors/space_sequencer/sequencer_select.c | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index 0cf6ce3656e..f8e793bd178 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -4095,7 +4095,7 @@ void ARMATURE_OT_select_all(wmOperatorType *ot) { /* identifiers */ - ot->name= "deselect all editbone"; + ot->name= "Select or Deselect All"; ot->idname= "ARMATURE_OT_select_all"; /* api callbacks */ @@ -5213,7 +5213,7 @@ void POSE_OT_select_all(wmOperatorType *ot) { /* identifiers */ - ot->name= "deselect all bones"; + ot->name= "Select or Deselect All"; ot->idname= "POSE_OT_select_all"; /* api callbacks */ diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c index 9fb3f717122..4bea6488adb 100644 --- a/source/blender/editors/mesh/editmesh_mods.c +++ b/source/blender/editors/mesh/editmesh_mods.c @@ -3420,7 +3420,7 @@ static int select_all_exec(bContext *C, wmOperator *op) void MESH_OT_select_all(wmOperatorType *ot) { /* identifiers */ - ot->name= "Select/Deselect All"; + ot->name= "Select or Deselect All"; ot->description= "Change selection of all vertices, edges or faces"; ot->idname= "MESH_OT_select_all"; diff --git a/source/blender/editors/metaball/mball_edit.c b/source/blender/editors/metaball/mball_edit.c index 4a199622990..eb344b1e5fe 100644 --- a/source/blender/editors/metaball/mball_edit.c +++ b/source/blender/editors/metaball/mball_edit.c @@ -204,7 +204,7 @@ static int select_all_exec(bContext *C, wmOperator *op) void MBALL_OT_select_all(wmOperatorType *ot) { /* identifiers */ - ot->name= "Select/Deselect All"; + ot->name= "Select or Deselect All"; ot->description= "Change selection of all meta elements"; ot->idname= "MBALL_OT_select_all"; diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c index 8e3d613e02e..7eedefc358b 100644 --- a/source/blender/editors/object/object_select.c +++ b/source/blender/editors/object/object_select.c @@ -760,7 +760,7 @@ void OBJECT_OT_select_all(wmOperatorType *ot) { /* identifiers */ - ot->name= "deselect all"; + ot->name= "Select or Deselect All"; ot->description = "Change selection of all visible objects in scene"; ot->idname= "OBJECT_OT_select_all"; diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index bd7be303e33..2a50b505c57 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -333,7 +333,7 @@ static int file_select_all_exec(bContext *C, wmOperator *op) void FILE_OT_select_all_toggle(wmOperatorType *ot) { /* identifiers */ - ot->name= "Select/Deselect all files"; + ot->name= "Select/Deselect All Files"; ot->description= "Select/deselect all files"; ot->idname= "FILE_OT_select_all_toggle"; diff --git a/source/blender/editors/space_node/node_select.c b/source/blender/editors/space_node/node_select.c index ccd1555e1a2..2cccbf17bea 100644 --- a/source/blender/editors/space_node/node_select.c +++ b/source/blender/editors/space_node/node_select.c @@ -271,7 +271,7 @@ static int node_select_all_exec(bContext *C, wmOperator *op) void NODE_OT_select_all(wmOperatorType *ot) { /* identifiers */ - ot->name = "Select/Deselect All"; + ot->name = "Select or Deselect All"; ot->description = "(De)select all nodes"; ot->idname = "NODE_OT_select_all"; diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c index 83fa8bffd58..449204900e8 100644 --- a/source/blender/editors/space_sequencer/sequencer_select.c +++ b/source/blender/editors/space_sequencer/sequencer_select.c @@ -247,7 +247,7 @@ static int sequencer_deselect_exec(bContext *C, wmOperator *op) void SEQUENCER_OT_select_all_toggle(struct wmOperatorType *ot) { /* identifiers */ - ot->name= "(De)Select All"; + ot->name= "Select or Deselect All"; ot->idname= "SEQUENCER_OT_select_all_toggle"; ot->description="Select or deselect all strips"; From ea5fdcbd67de5846990acb8d1ae8cbb06b637fc8 Mon Sep 17 00:00:00 2001 From: Tom Musgrove <LetterRip@gmail.com> Date: Thu, 22 Jul 2010 05:59:50 +0000 Subject: [PATCH 618/674] finished making uv paint panel consistent with the 3d view painting panel, asked Matt and he said the inconsistency was unintentional --- release/scripts/ui/space_image.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/release/scripts/ui/space_image.py b/release/scripts/ui/space_image.py index 5afe7153d73..2b5fefbdb1a 100644 --- a/release/scripts/ui/space_image.py +++ b/release/scripts/ui/space_image.py @@ -592,6 +592,30 @@ class IMAGE_PT_paint(bpy.types.Panel): col.prop(brush, "clone_alpha", text="Alpha") +class IMAGE_PT_tools_brush_texture(bpy.types.Panel): + bl_space_type = 'IMAGE_EDITOR' + bl_region_type = 'UI' + bl_label = "Texture" + bl_default_closed = True + + def poll(self, context): + sima = context.space_data + toolsettings = context.tool_settings.image_paint + return sima.show_paint and toolsettings.brush + + def draw(self, context): + layout = self.layout + + toolsettings = context.tool_settings.image_paint + brush = toolsettings.brush + +# tex_slot = brush.texture_slot + + col = layout.column() + + col.template_ID_preview(brush, "texture", new="texture.new", rows=3, cols=8) + + class IMAGE_PT_paint_stroke(bpy.types.Panel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'UI' @@ -657,6 +681,7 @@ classes = [ IMAGE_HT_header, IMAGE_PT_image_properties, IMAGE_PT_paint, + IMAGE_PT_tools_brush_texture, IMAGE_PT_paint_stroke, IMAGE_PT_paint_curve, IMAGE_PT_game_properties, From 9ded4bcc13e92483d1ddfeafa3a2aacccd3d3a23 Mon Sep 17 00:00:00 2001 From: Peter Schlaile <peter@schlaile.de> Date: Thu, 22 Jul 2010 08:57:23 +0000 Subject: [PATCH 619/674] == Sequencer == Bugfix: toggling deinterlace properly updates movie files now --- source/blender/makesrna/intern/rna_sequencer.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index ec8b45db306..0484f3e711e 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -466,6 +466,16 @@ static void rna_Sequence_update(Main *bmain, Scene *scene, PointerRNA *ptr) seq_update_sound(scene, ptr->data); } +static void rna_Sequence_update_reopen_files(Main *bmain, Scene *scene, PointerRNA *ptr) +{ + Editing *ed= seq_give_editing(scene, FALSE); + + free_imbuf_seq(scene, &ed->seqbase, FALSE, FALSE); + + if(RNA_struct_is_a(ptr->type, &RNA_SoundSequence)) + seq_update_sound(scene, ptr->data); +} + static void rna_Sequence_mute_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Editing *ed= seq_give_editing(scene, FALSE); @@ -960,6 +970,7 @@ static void rna_def_filter_video(StructRNA *srna) prop= RNA_def_property(srna, "de_interlace", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_FILTERY); RNA_def_property_ui_text(prop, "De-Interlace", "For video movies to remove fields"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update_reopen_files"); prop= RNA_def_property(srna, "premultiply", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MAKE_PREMUL); From 617711f7bf01e9846d97c6dc748606b8a207760f Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Thu, 22 Jul 2010 10:02:02 +0000 Subject: [PATCH 620/674] Attempt to fix black 3d view with texture paint + overlap draw mode. --- source/blender/windowmanager/intern/wm_draw.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index 899c7728af9..7c0d0d0514c 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -189,6 +189,12 @@ static void wm_method_draw_overlap_all(bContext *C, wmWindow *win, int exchange) ARegion *ar; static rcti rect= {0, 0, 0, 0}; + /* back needs to be ok for swap, if not, mark for redraw */ + for(sa= screen->areabase.first; sa; sa= sa->next) + for(ar= sa->regionbase.first; ar; ar= ar->next) + if(ar->swinid && !(ar->swap & WIN_BACK_OK)) + ar->do_draw= RGN_DRAW; + /* flush overlapping regions */ if(screen->regionbase.first) { /* flush redraws of area regions up to overlapping regions */ From 97f91ed3fab6d43ab4887ce7892254d17d8915a9 Mon Sep 17 00:00:00 2001 From: Tom Musgrove <LetterRip@gmail.com> Date: Thu, 22 Jul 2010 10:56:27 +0000 Subject: [PATCH 621/674] this fixes the bug that occurs when using pen tablet controlled pressure and the first daub is at maximum pressure - the bug is actually in brush_painter_paint(BrushPainter *painter, BrushFunc func, float *pos, double time, float pressure, void *user) according to brecht, but 'seems more complicated than expected to properly fix this' so this work around has been approved --- source/blender/editors/sculpt_paint/paint_image.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index ef8c33007a2..776c884d79e 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -4829,6 +4829,11 @@ static void paint_apply_event(bContext *C, wmOperator *op, wmEvent *event) windows for some tablets, then we just skip first touch .. */ if ((pop->s.brush->flag & (BRUSH_ALPHA_PRESSURE|BRUSH_SIZE_PRESSURE|BRUSH_SPACING_PRESSURE)) && tablet && (pressure >= 0.99f)) return; + + /* at zero pressure we should do nothing 1/2^12 is .0002 which is the sensitivity of the most sensitive pen tablet available*/ + if ((pop->s.brush->flag & (BRUSH_ALPHA_PRESSURE|BRUSH_SIZE_PRESSURE|BRUSH_SPACING_PRESSURE)) && tablet && (pressure <= 0.0002f)) + return; + } /* fill in stroke */ From 7c3375a6fb61cb0007b702c3120326fa423764f0 Mon Sep 17 00:00:00 2001 From: Tom Musgrove <LetterRip@gmail.com> Date: Thu, 22 Jul 2010 10:59:03 +0000 Subject: [PATCH 622/674] just a note on where to look later --- source/blender/editors/sculpt_paint/paint_image.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index 776c884d79e..4b352e7f9d9 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -4830,7 +4830,9 @@ static void paint_apply_event(bContext *C, wmOperator *op, wmEvent *event) if ((pop->s.brush->flag & (BRUSH_ALPHA_PRESSURE|BRUSH_SIZE_PRESSURE|BRUSH_SPACING_PRESSURE)) && tablet && (pressure >= 0.99f)) return; - /* at zero pressure we should do nothing 1/2^12 is .0002 which is the sensitivity of the most sensitive pen tablet available*/ + /* This can be removed once fixed properly in + brush_painter_paint(BrushPainter *painter, BrushFunc func, float *pos, double time, float pressure, void *user) + at zero pressure we should do nothing 1/2^12 is .0002 which is the sensitivity of the most sensitive pen tablet available*/ if ((pop->s.brush->flag & (BRUSH_ALPHA_PRESSURE|BRUSH_SIZE_PRESSURE|BRUSH_SPACING_PRESSURE)) && tablet && (pressure <= 0.0002f)) return; From aa2f0b1e429c8de23e8de1423d875ac1b462e516 Mon Sep 17 00:00:00 2001 From: Tom Musgrove <LetterRip@gmail.com> Date: Thu, 22 Jul 2010 11:21:21 +0000 Subject: [PATCH 623/674] yet another inconsistency fix curve in uv editmode was using the drop down menu for picking curves instead of the icons --- release/scripts/ui/space_image.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/release/scripts/ui/space_image.py b/release/scripts/ui/space_image.py index 2b5fefbdb1a..907725a4ef7 100644 --- a/release/scripts/ui/space_image.py +++ b/release/scripts/ui/space_image.py @@ -665,8 +665,15 @@ class IMAGE_PT_paint_curve(bpy.types.Panel): brush = toolsettings.brush layout.template_curve_mapping(brush, "curve") - layout.operator_menu_enum("brush.curve_preset", "shape") + row = layout.row(align=True) + row.operator("brush.curve_preset", icon="SMOOTHCURVE", text="").shape = 'SMOOTH' + row.operator("brush.curve_preset", icon="SPHERECURVE", text="").shape = 'ROUND' + row.operator("brush.curve_preset", icon="ROOTCURVE", text="").shape = 'ROOT' + row.operator("brush.curve_preset", icon="SHARPCURVE", text="").shape = 'SHARP' + row.operator("brush.curve_preset", icon="LINCURVE", text="").shape = 'LINE' + row.operator("brush.curve_preset", icon="NOCURVE", text="").shape = 'MAX' + row.operator("brush.curve_preset", icon="RNDCURVE", text="").shape = 'MID9' classes = [ IMAGE_MT_view, From 33cb2f93ff2e02ac45c20e6b4251a48600a83cb0 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin <sergey.vfx@gmail.com> Date: Thu, 22 Jul 2010 11:27:54 +0000 Subject: [PATCH 624/674] Fix #22661: Multires/Sculpt Segfult - Show error message in multires modifier if there is no MDISPS layer - Sculpt on basis mesh if there is no the same layer --- source/blender/editors/sculpt_paint/sculpt.c | 8 +++++++- source/blender/modifiers/intern/MOD_multires.c | 11 +++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 645441e415f..f5e93edb674 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -112,8 +112,14 @@ void ED_sculpt_force_update(bContext *C) it's the last modifier on the stack and it is not on the first level */ struct MultiresModifierData *sculpt_multires_active(Scene *scene, Object *ob) { + Mesh *me= (Mesh*)ob->data; ModifierData *md, *nmd; - + + if(!CustomData_get_layer(&me->fdata, CD_MDISPS)) { + /* multires can't work without displacement layer */ + return NULL; + } + for(md= modifiers_getVirtualModifierList(ob); md; md= md->next) { if(md->type == eModifierType_Multires) { MultiresModifierData *mmd= (MultiresModifierData*)md; diff --git a/source/blender/modifiers/intern/MOD_multires.c b/source/blender/modifiers/intern/MOD_multires.c index 71e31656799..766a3756d4a 100644 --- a/source/blender/modifiers/intern/MOD_multires.c +++ b/source/blender/modifiers/intern/MOD_multires.c @@ -38,6 +38,8 @@ #include "BKE_paint.h" #include "BKE_particle.h" +#include "DNA_mesh_types.h" + static void initData(ModifierData *md) { MultiresModifierData *mmd = (MultiresModifierData*)md; @@ -66,6 +68,15 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *dm, int sculpting= (ob->mode & OB_MODE_SCULPT) && ss; MultiresModifierData *mmd = (MultiresModifierData*)md; DerivedMesh *result; + Mesh *me= (Mesh*)ob->data; + + if(mmd->totlvl) { + if(!CustomData_get_layer(&me->fdata, CD_MDISPS)) { + /* multires can't work without displacement layer */ + modifier_setError(md, "Modifier needs mesh with displacement data."); + return dm; + } + } result = multires_dm_create_from_derived(mmd, 0, dm, ob, useRenderParams, isFinalCalc); From 5d2e08cdee2bf5fd546a08eef4bdcbcc2f63d665 Mon Sep 17 00:00:00 2001 From: Matt Ebb <matt@mke3.net> Date: Thu, 22 Jul 2010 11:54:12 +0000 Subject: [PATCH 625/674] Fix for volume render light cache: Now the bounding box for the light cache's voxel grid is calculated in global space, rather than camera space as it was previously. This fixes flickering lighting on static volumes with camera motion, caused by the camera space bounding box changing from frame to frame. --- .../render/intern/include/render_types.h | 2 + .../render/intern/include/volume_precache.h | 8 +- .../render/intern/source/volume_precache.c | 95 +++++++++++++++---- .../blender/render/intern/source/volumetric.c | 21 ++-- 4 files changed, 92 insertions(+), 34 deletions(-) diff --git a/source/blender/render/intern/include/render_types.h b/source/blender/render/intern/include/render_types.h index 331474a85e3..2b0de46f2e6 100644 --- a/source/blender/render/intern/include/render_types.h +++ b/source/blender/render/intern/include/render_types.h @@ -464,6 +464,7 @@ typedef struct VolPrecachePart struct RayObject *tree; struct ShadeInput *shi; struct ObjectInstanceRen *obi; + float viewmat[4][4]; int num; int minx, maxx; int miny, maxy; @@ -477,6 +478,7 @@ typedef struct VolPrecachePart typedef struct VolumePrecache { int res[3]; + float *bbmin, *bbmax; float *data_r; float *data_g; float *data_b; diff --git a/source/blender/render/intern/include/volume_precache.h b/source/blender/render/intern/include/volume_precache.h index 73e0a3e0415..3ddf8380241 100644 --- a/source/blender/render/intern/include/volume_precache.h +++ b/source/blender/render/intern/include/volume_precache.h @@ -25,9 +25,11 @@ * * ***** END GPL LICENSE BLOCK ***** */ - -void volume_precache(Render *re); -void free_volume_precache(Render *re); + +void global_bounds_obi(Render *re, ObjectInstanceRen *obi, float *bbmin, float *bbmax); int point_inside_volume_objectinstance(Render *re, ObjectInstanceRen *obi, float *co); +void volume_precache(Render *re); +void free_volume_precache(Render *re); + #define VOL_MS_TIMESTEP 0.1f diff --git a/source/blender/render/intern/source/volume_precache.c b/source/blender/render/intern/source/volume_precache.c index 0af05c3cdee..b94a9770876 100644 --- a/source/blender/render/intern/source/volume_precache.c +++ b/source/blender/render/intern/source/volume_precache.c @@ -115,6 +115,47 @@ int point_inside_obi(RayObject *tree, ObjectInstanceRen *obi, float *co) else return 1; } +/* find the bounding box of an objectinstance in global space */ +void global_bounds_obi(Render *re, ObjectInstanceRen *obi, float *bbmin, float *bbmax) +{ + ObjectRen *obr = obi->obr; + VolumePrecache *vp = obi->volume_precache; + VertRen *ver= NULL; + float co[3]; + int a; + + if (vp->bbmin != NULL && vp->bbmax != NULL) { + copy_v3_v3(bbmin, vp->bbmin); + copy_v3_v3(bbmax, vp->bbmax); + return; + } + + vp->bbmin = MEM_callocN(sizeof(float)*3, "volume precache min boundbox corner"); + vp->bbmax = MEM_callocN(sizeof(float)*3, "volume precache max boundbox corner"); + + INIT_MINMAX(bbmin, bbmax); + + for(a=0; a<obr->totvert; a++) { + if((a & 255)==0) ver= obr->vertnodes[a>>8].vert; + else ver++; + + copy_v3_v3(co, ver->co); + + /* transformed object instance in camera space */ + if(obi->flag & R_TRANSFORMED) + mul_m4_v3(obi->mat, co); + + /* convert to global space */ + mul_m4_v3(re->viewinv, co); + + DO_MINMAX(co, vp->bbmin, vp->bbmax); + } + + copy_v3_v3(bbmin, vp->bbmin); + copy_v3_v3(bbmax, vp->bbmax); + +} + /* *** light cache filtering *** */ static float get_avg_surrounds(float *cache, int *res, int xx, int yy, int zz) @@ -443,7 +484,7 @@ static void *vol_precache_part(void *data) RayObject *tree = pa->tree; ShadeInput *shi = pa->shi; float scatter_col[3] = {0.f, 0.f, 0.f}; - float co[3]; + float co[3], cco[3]; int x, y, z, i; const int res[3]= {pa->res[0], pa->res[1], pa->res[2]}; @@ -455,24 +496,29 @@ static void *vol_precache_part(void *data) for (x=pa->minx; x < pa->maxx; x++) { co[0] = pa->bbmin[0] + (pa->voxel[0] * (x + 0.5f)); - + + /* convert from world->camera space for shading */ + mul_v3_m4v3(cco, pa->viewmat, co); + i= V_I(x, y, z, res); // don't bother if the point is not inside the volume mesh - if (!point_inside_obi(tree, obi, co)) { + if (!point_inside_obi(tree, obi, cco)) { obi->volume_precache->data_r[i] = -1.0f; obi->volume_precache->data_g[i] = -1.0f; obi->volume_precache->data_b[i] = -1.0f; continue; } - copy_v3_v3(shi->view, co); + /* this view coordinate is very wrong! */ + copy_v3_v3(shi->view, cco); normalize_v3(shi->view); - vol_get_scattering(shi, scatter_col, co); + vol_get_scattering(shi, scatter_col, cco); obi->volume_precache->data_r[i] = scatter_col[0]; obi->volume_precache->data_g[i] = scatter_col[1]; obi->volume_precache->data_b[i] = scatter_col[2]; + } } } @@ -503,7 +549,7 @@ static void precache_init_parts(Render *re, RayObject *tree, ShadeInput *shi, Ob int i=0, x, y, z; float voxel[3]; int sizex, sizey, sizez; - float *bbmin=obi->obr->boundbox[0], *bbmax=obi->obr->boundbox[1]; + float bbmin[3], bbmax[3]; int *res; int minx, maxx; int miny, maxy; @@ -517,11 +563,13 @@ static void precache_init_parts(Render *re, RayObject *tree, ShadeInput *shi, Ob parts[0] = parts[1] = parts[2] = totthread; res = vp->res; + /* using boundbox in worldspace */ + global_bounds_obi(re, obi, bbmin, bbmax); sub_v3_v3v3(voxel, bbmax, bbmin); - voxel[0] /= res[0]; - voxel[1] /= res[1]; - voxel[2] /= res[2]; + voxel[0] /= (float)res[0]; + voxel[1] /= (float)res[1]; + voxel[2] /= (float)res[2]; for (x=0; x < parts[0]; x++) { sizex = ceil(res[0] / (float)parts[0]); @@ -550,8 +598,10 @@ static void precache_init_parts(Render *re, RayObject *tree, ShadeInput *shi, Ob pa->tree = tree; pa->shi = shi; pa->obi = obi; - VECCOPY(pa->bbmin, bbmin); - VECCOPY(pa->voxel, voxel); + copy_m4_m4(pa->viewmat, re->viewmat); + + copy_v3_v3(pa->bbmin, bbmin); + copy_v3_v3(pa->voxel, voxel); VECCOPY(pa->res, res); pa->minx = minx; pa->maxx = maxx; @@ -582,10 +632,14 @@ static VolPrecachePart *precache_get_new_part(Render *re) return nextpa; } -static int precache_resolution(VolumePrecache *vp, float *bbmin, float *bbmax, int res) +/* calculate resolution from bounding box in world space */ +static int precache_resolution(Render *re, VolumePrecache *vp, ObjectInstanceRen *obi, int res) { float dim[3], div; + float bbmin[3], bbmax[3]; + /* bound box in global space */ + global_bounds_obi(re, obi, bbmin, bbmax); sub_v3_v3v3(dim, bbmax, bbmin); div = MAX3(dim[0], dim[1], dim[2]); @@ -593,9 +647,9 @@ static int precache_resolution(VolumePrecache *vp, float *bbmin, float *bbmax, i dim[1] /= div; dim[2] /= div; - vp->res[0] = dim[0] * (float)res; - vp->res[1] = dim[1] * (float)res; - vp->res[2] = dim[2] * (float)res; + vp->res[0] = ceil(dim[0] * res); + vp->res[1] = ceil(dim[1] * res); + vp->res[2] = ceil(dim[2] * res); if ((vp->res[0] < 1) || (vp->res[1] < 1) || (vp->res[2] < 1)) return 0; @@ -615,7 +669,6 @@ void vol_precache_objectinstance_threads(Render *re, ObjectInstanceRen *obi, Mat RayObject *tree; ShadeInput shi; ListBase threads; - float *bbmin=obi->obr->boundbox[0], *bbmax=obi->obr->boundbox[1]; int parts[3] = {1, 1, 1}, totparts; int caching=1, counter=0; @@ -627,15 +680,13 @@ void vol_precache_objectinstance_threads(Render *re, ObjectInstanceRen *obi, Mat /* create a raytree with just the faces of the instanced ObjectRen, * used for checking if the cached point is inside or outside. */ - //tree = create_raytree_obi(obi, bbmin, bbmax); tree = makeraytree_object(&R, obi); if (!tree) return; - INIT_MINMAX(bbmin, bbmax); - RE_rayobject_merge_bb( tree, bbmin, bbmax); vp = MEM_callocN(sizeof(VolumePrecache), "volume light cache"); + obi->volume_precache = vp; - if (!precache_resolution(vp, bbmin, bbmax, ma->vol.precache_resolution)) { + if (!precache_resolution(re, vp, obi, ma->vol.precache_resolution)) { MEM_freeN(vp); vp = NULL; return; @@ -649,7 +700,7 @@ void vol_precache_objectinstance_threads(Render *re, ObjectInstanceRen *obi, Mat vp = NULL; return; } - obi->volume_precache = vp; + //obi->volume_precache = vp; /* Need a shadeinput to calculate scattering */ precache_setup_shadeinput(re, obi, ma, &shi); @@ -749,6 +800,8 @@ void free_volume_precache(Render *re) MEM_freeN(obi->volume_precache->data_r); MEM_freeN(obi->volume_precache->data_g); MEM_freeN(obi->volume_precache->data_b); + MEM_freeN(obi->volume_precache->bbmin); + MEM_freeN(obi->volume_precache->bbmax); MEM_freeN(obi->volume_precache); obi->volume_precache = NULL; } diff --git a/source/blender/render/intern/source/volumetric.c b/source/blender/render/intern/source/volumetric.c index c74bb9d4a55..0a26677f7e6 100644 --- a/source/blender/render/intern/source/volumetric.c +++ b/source/blender/render/intern/source/volumetric.c @@ -205,7 +205,7 @@ static void vol_trace_behind(ShadeInput *shi, VlakRen *vlr, float *co, float *co } else { shadeSkyView(col, co, shi->view, NULL, shi->thread); shadeSunView(col, shi->view); - } + } } @@ -214,18 +214,19 @@ static void vol_get_precached_scattering(ShadeInput *shi, float *scatter_col, fl { VolumePrecache *vp = shi->obi->volume_precache; float bbmin[3], bbmax[3], dim[3]; - float sample_co[3]; + float world_co[3], sample_co[3]; if (!vp) return; - /* convert input coords to 0.0, 1.0 */ - VECCOPY(bbmin, shi->obi->obr->boundbox[0]); - VECCOPY(bbmax, shi->obi->obr->boundbox[1]); + /* find sample point in global space bounding box 0.0-1.0 */ + global_bounds_obi(re, shi->obi, bbmin, bbmax); sub_v3_v3v3(dim, bbmax, bbmin); + mul_v3_m4v3(world_co, re->viewinv, co); - sample_co[0] = ((co[0] - bbmin[0]) / dim[0]); - sample_co[1] = ((co[1] - bbmin[1]) / dim[1]); - sample_co[2] = ((co[2] - bbmin[2]) / dim[2]); + /* sample_co in 0.0-1.0 */ + sample_co[0] = (world_co[0] - bbmin[0]) / dim[0]; + sample_co[1] = (world_co[1] - bbmin[1]) / dim[1]; + sample_co[2] = (world_co[2] - bbmin[2]) / dim[2]; scatter_col[0] = voxel_sample_triquadratic(vp->data_r, vp->res, sample_co); scatter_col[1] = voxel_sample_triquadratic(vp->data_g, vp->res, sample_co); @@ -602,7 +603,7 @@ static void volumeintegrate(struct ShadeInput *shi, float *col, float *co, float const float density = vol_get_density(shi, p); if (density > 0.01f) { - float scatter_col[3], emit_col[3]; + float scatter_col[3] = {0.f, 0.f, 0.f}, emit_col[3]; const float stepd = (t0 - pt0) * density; /* transmittance component (alpha) */ @@ -619,7 +620,7 @@ static void volumeintegrate(struct ShadeInput *shi, float *col, float *co, float p2[1] = p[1] + (step_vec[1] * 0.5); p2[2] = p[2] + (step_vec[2] * 0.5); - vol_get_precached_scattering(shi, scatter_col, p2); + vol_get_precached_scattering(&R, shi, scatter_col, p2); } else vol_get_scattering(shi, scatter_col, p); From f5d7fc6da5faddbf6a15d924c36d077fe6eb13e2 Mon Sep 17 00:00:00 2001 From: Matt Ebb <matt@mke3.net> Date: Thu, 22 Jul 2010 12:02:39 +0000 Subject: [PATCH 626/674] committed wrong version of this file --- source/blender/render/intern/source/volume_precache.c | 1 - source/blender/render/intern/source/volumetric.c | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/source/blender/render/intern/source/volume_precache.c b/source/blender/render/intern/source/volume_precache.c index b94a9770876..d3e8f4058c5 100644 --- a/source/blender/render/intern/source/volume_precache.c +++ b/source/blender/render/intern/source/volume_precache.c @@ -700,7 +700,6 @@ void vol_precache_objectinstance_threads(Render *re, ObjectInstanceRen *obi, Mat vp = NULL; return; } - //obi->volume_precache = vp; /* Need a shadeinput to calculate scattering */ precache_setup_shadeinput(re, obi, ma, &shi); diff --git a/source/blender/render/intern/source/volumetric.c b/source/blender/render/intern/source/volumetric.c index 0a26677f7e6..af456185daf 100644 --- a/source/blender/render/intern/source/volumetric.c +++ b/source/blender/render/intern/source/volumetric.c @@ -210,7 +210,7 @@ static void vol_trace_behind(ShadeInput *shi, VlakRen *vlr, float *co, float *co /* trilinear interpolation */ -static void vol_get_precached_scattering(ShadeInput *shi, float *scatter_col, float *co) +static void vol_get_precached_scattering(Render *re, ShadeInput *shi, float *scatter_col, float *co) { VolumePrecache *vp = shi->obi->volume_precache; float bbmin[3], bbmax[3], dim[3]; From da04afe78eac85b837da85b2bb6a26c08face44d Mon Sep 17 00:00:00 2001 From: Matt Ebb <matt@mke3.net> Date: Thu, 22 Jul 2010 12:30:17 +0000 Subject: [PATCH 627/674] Fix [#22946] Camera inside volume gives bad results --- source/blender/render/intern/source/shadeinput.c | 13 ++++++------- source/blender/render/intern/source/volumetric.c | 2 -- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/source/blender/render/intern/source/shadeinput.c b/source/blender/render/intern/source/shadeinput.c index 5938e2ce2e0..2f0f5c72070 100644 --- a/source/blender/render/intern/source/shadeinput.c +++ b/source/blender/render/intern/source/shadeinput.c @@ -142,11 +142,6 @@ void shade_material_loop(ShadeInput *shi, ShadeResult *shr) if((shi->layflag & SCE_LAY_SKY) && (R.r.alphamode==R_ADDSKY)) shr->alpha= 1.0f; } - - if(R.r.mode & R_RAYTRACE) { - if (R.render_volumes_inside.first) - shade_volume_inside(shi, shr); - } } @@ -168,8 +163,12 @@ void shade_input_do_shade(ShadeInput *shi, ShadeResult *shr) shade_input_init_material(shi); if (shi->mat->material_type == MA_TYPE_VOLUME) { - if(R.r.mode & R_RAYTRACE) - shade_volume_outside(shi, shr); + if(R.r.mode & R_RAYTRACE) { + if (R.render_volumes_inside.first) + shade_volume_inside(shi, shr); + else + shade_volume_outside(shi, shr); + } } else { /* MA_TYPE_SURFACE, MA_TYPE_WIRE */ shade_material_loop(shi, shr); } diff --git a/source/blender/render/intern/source/volumetric.c b/source/blender/render/intern/source/volumetric.c index af456185daf..21a0ab1d2a8 100644 --- a/source/blender/render/intern/source/volumetric.c +++ b/source/blender/render/intern/source/volumetric.c @@ -785,8 +785,6 @@ void shade_volume_inside(ShadeInput *shi, ShadeResult *shr) ObjectInstanceRen *obi_backup; float prev_alpha = shr->alpha; - //if (BLI_countlist(&R.render_volumes_inside) == 0) return; - /* XXX: extend to multiple volumes perhaps later */ mat_backup = shi->mat; obi_backup = shi->obi; From 3d22402720304969d106c191a80cef09617417a9 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Thu, 22 Jul 2010 12:51:04 +0000 Subject: [PATCH 628/674] Fix #22940: material rename crash, delete selection in a text button was not working correct. --- source/blender/editors/interface/interface_handlers.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index c8eefac43f9..54deac5d060 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -1155,7 +1155,7 @@ static int ui_textedit_delete_selection(uiBut *but, uiHandleButtonData *data) int len= strlen(str); int change= 0; if(but->selsta != but->selend && len) { - memmove( str+but->selsta, str+but->selend, len+1 ); + memmove( str+but->selsta, str+but->selend, len-but->selsta+1 ); change= 1; } From b26a87fcd036548ed5002b0c598f1b79d8efa6f9 Mon Sep 17 00:00:00 2001 From: Peter Schlaile <peter@schlaile.de> Date: Thu, 22 Jul 2010 14:02:05 +0000 Subject: [PATCH 629/674] Bugfix: Mem cache limit wasn't updated, when changed in userpref. --- source/blender/makesrna/SConscript | 2 +- source/blender/makesrna/intern/rna_userdef.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/source/blender/makesrna/SConscript b/source/blender/makesrna/SConscript index 1558eef713e..07e14379072 100644 --- a/source/blender/makesrna/SConscript +++ b/source/blender/makesrna/SConscript @@ -6,7 +6,7 @@ objs = [] o = SConscript('intern/SConscript') objs += o -incs = '#/intern/guardedalloc #/intern/audaspace/intern ../blenkernel ../blenlib ../makesdna intern .' +incs = '#/intern/guardedalloc #/intern/memutil #/intern/audaspace/intern ../blenkernel ../blenlib ../makesdna intern .' incs += ' ../windowmanager ../editors/include ../gpu ../imbuf ../ikplugin' incs += ' ../render/extern/include' diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 36c6b9b0a10..f0ec5f8087d 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -51,6 +51,7 @@ #include "BKE_global.h" #include "MEM_guardedalloc.h" +#include "MEM_CacheLimiterC-Api.h" static void rna_userdef_update(Main *bmain, Scene *scene, PointerRNA *ptr) { @@ -171,6 +172,11 @@ static void rna_UserDef_audio_update(Main *bmain, Scene *scene, PointerRNA *ptr) sound_init(bmain); } +static void rna_Userdef_memcache_update(Main *bmain, Scene *scene, PointerRNA *ptr) +{ + MEM_CacheLimiter_set_maximum(U.memcachelimit * 1024 * 1024); +} + static void rna_UserDef_weight_color_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Object *ob; @@ -2477,6 +2483,7 @@ static void rna_def_userdef_system(BlenderRNA *brna) RNA_def_property_int_sdna(prop, NULL, "memcachelimit"); RNA_def_property_range(prop, 0, (sizeof(void *) ==8)? 1024*16: 1024); /* 32 bit 2 GB, 64 bit 16 GB */ RNA_def_property_ui_text(prop, "Memory Cache Limit", "Memory cache limit in sequencer (megabytes)"); + RNA_def_property_update(prop, 0, "rna_Userdef_memcache_update"); prop= RNA_def_property(srna, "frame_server_port", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "frameserverport"); From bc42ff687e25a08ace100f0581946e06818b74f3 Mon Sep 17 00:00:00 2001 From: Joilnen Leite <joilnen.leite@gmail.com> Date: Thu, 22 Jul 2010 15:09:41 +0000 Subject: [PATCH 630/674] Fixing this error: In file included from /home/joilnen/blender/obj/linux-glibc2.9-i386/blender/makesrna/rna_userdef_gen.c:612: ./rna_userdef.c:54:35: error: MEM_CacheLimiterC-Api.h: No such file or directory make[4]: *** [/home/joilnen/blender/obj/linux-glibc2.9-i386/blender/makesrna/rna_userdef_gen.o] Error 1 --- source/blender/makesrna/intern/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/makesrna/intern/Makefile b/source/blender/makesrna/intern/Makefile index 8aef06e762d..6b28c56105b 100644 --- a/source/blender/makesrna/intern/Makefile +++ b/source/blender/makesrna/intern/Makefile @@ -46,6 +46,7 @@ endif CFLAGS += $(LEVEL_1_C_WARNINGS) CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include +CPPFLAGS += -I$(NAN_MEMUTIL)/include CPPFLAGS += -I../../../../intern/audaspace/intern CPPFLAGS += -I../../blenlib CPPFLAGS += -I../../blenkernel From 528cce431380d53176ce7a9f5835612e2536566a Mon Sep 17 00:00:00 2001 From: Peter Schlaile <peter@schlaile.de> Date: Thu, 22 Jul 2010 15:16:20 +0000 Subject: [PATCH 631/674] Broke cmake on Userpref patch... sorry. --- source/blender/makesrna/intern/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/makesrna/intern/CMakeLists.txt b/source/blender/makesrna/intern/CMakeLists.txt index 207e4e15a72..72eb2069bc8 100644 --- a/source/blender/makesrna/intern/CMakeLists.txt +++ b/source/blender/makesrna/intern/CMakeLists.txt @@ -42,6 +42,7 @@ SET(SRC INCLUDE_DIRECTORIES( ../../../../intern/audaspace/intern ../../../../intern/guardedalloc + ../../../../intern/memutil .. ../../makesdna ../../blenkernel From 3b5b761a56424987790bd1aad6fcb9ac1f0a281b Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Thu, 22 Jul 2010 18:56:46 +0000 Subject: [PATCH 632/674] == Sculpt/Paint Fixes == * Fix: unify strength and size did work consistently with other paint modes * Fix: If [ and ] keys were used to resize a brush it was not possible to increase the size of the brush if it went under 10 pixels * Fix: Made interpretation of brush size consistent across all modes, Texture/Image paint interpreted brush size as the diameter while all the other modes interpret it as radius * Fix: The default spacing for vertex paint brushes was 3%, should be 10% * Fix: due to fixes to unified strength, re-enabled 'Unify Size' by default * Fix: Unified size and strength were stored in UserPrefs, moved this to ToolSettings * Fix: The setting of pressure sensitivity was not unified when strength or size were unified. Now the appropriate pressure sensitivity setting is also unified across all brushes when corresponding unification option is selected * Fix: When using [ and ] to resize the brush it didn't immediately redraw * Fix: fkey resizing/"re-strength-ing" was not working consistently accross all paint modes due to only sculpt mode having full support for unified size and strength, now it works properly. * Fix: other paint modes did expose the ability to have a custom brush colors, so I added the small bit of code to allow it. Note: I made all of the other paint mode brushes white. Note2: Actually, probably want to make the paint modes use the selected color for painting instead of a constant brush color. * I had removed OPTYPE_REGISTER from some Sculpt/Paint operators but in this commit I add them back. I'm not completely sure what this option does so I don't want to disturb it for now. --- release/scripts/ui/space_view3d_toolbar.py | 89 +- source/blender/blenkernel/BKE_brush.h | 24 +- source/blender/blenkernel/intern/brush.c | 348 +- source/blender/blenloader/intern/readfile.c | 15 + .../blender/editors/datafiles/startup.blend.c | 12430 ++++++++-------- source/blender/editors/interface/resources.c | 13 - .../editors/sculpt_paint/paint_image.c | 98 +- .../blender/editors/sculpt_paint/paint_ops.c | 44 +- .../editors/sculpt_paint/paint_stroke.c | 58 +- .../editors/sculpt_paint/paint_utils.c | 2 +- .../editors/sculpt_paint/paint_vertex.c | 22 +- source/blender/editors/sculpt_paint/sculpt.c | 97 +- .../blender/editors/space_image/image_draw.c | 2 +- source/blender/makesdna/DNA_scene_types.h | 13 + source/blender/makesdna/DNA_userdef_types.h | 11 +- source/blender/makesrna/intern/rna_brush.c | 87 +- source/blender/makesrna/intern/rna_scene.c | 10 + source/blender/makesrna/intern/rna_userdef.c | 29 - 18 files changed, 6874 insertions(+), 6518 deletions(-) diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index f902ba86a3f..589428dfe4d 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -555,7 +555,6 @@ class VIEW3D_PT_tools_brush(PaintPanel): # Sculpt Mode # elif context.sculpt_object and brush: - edit = context.user_preferences.edit col = layout.column() @@ -564,21 +563,12 @@ class VIEW3D_PT_tools_brush(PaintPanel): row = col.row(align=True) - if edit.sculpt_paint_use_unified_size: - if edit.sculpt_paint_unified_lock_brush_size: - row.prop(edit, "sculpt_paint_unified_lock_brush_size", toggle=True, text="", icon='LOCKED') - row.prop(edit, "sculpt_paint_unified_unprojected_radius", text="Radius", slider=True) - else: - row.prop(edit, "sculpt_paint_unified_lock_brush_size", toggle=True, text="", icon='UNLOCKED') - row.prop(edit, "sculpt_paint_unified_size", text="Radius", slider=True) - + if brush.use_locked_size: + row.prop(brush, "use_locked_size", toggle=True, text="", icon='LOCKED') + row.prop(brush, "unprojected_radius", text="Radius", slider=True) else: - if brush.lock_brush_size: - row.prop(brush, "lock_brush_size", toggle=True, text="", icon='LOCKED') - row.prop(brush, "unprojected_radius", text="Radius", slider=True) - else: - row.prop(brush, "lock_brush_size", toggle=True, text="", icon='UNLOCKED') - row.prop(brush, "size", text="Radius", slider=True) + row.prop(brush, "use_locked_size", toggle=True, text="", icon='UNLOCKED') + row.prop(brush, "size", text="Radius", slider=True) row.prop(brush, "use_size_pressure", toggle=True, text="") @@ -594,11 +584,7 @@ class VIEW3D_PT_tools_brush(PaintPanel): else: row.prop(brush, "use_space_atten", toggle=True, text="", icon='UNLOCKED') - if edit.sculpt_paint_use_unified_strength: - row.prop(edit, "sculpt_paint_unified_strength", text="Unified Strength", slider=True) - else: - row.prop(brush, "strength", text="Strength", slider=True) - + row.prop(brush, "strength", text="Strength", slider=True) row.prop(brush, "use_strength_pressure", text="") @@ -710,11 +696,11 @@ class VIEW3D_PT_tools_brush(PaintPanel): col.prop(brush, "color", text="") row = col.row(align=True) - row.prop(brush, "size", slider=True) + row.prop(brush, "size", text="Radius", slider=True) row.prop(brush, "use_size_pressure", toggle=True, text="") row = col.row(align=True) - row.prop(brush, "strength", slider=True) + row.prop(brush, "strength", text="Strength", slider=True) row.prop(brush, "use_strength_pressure", toggle=True, text="") row = col.row(align=True) @@ -735,12 +721,13 @@ class VIEW3D_PT_tools_brush(PaintPanel): layout.prop(context.tool_settings, "auto_normalize", text="Auto Normalize") col = layout.column() + row = col.row(align=True) - row.prop(brush, "size", slider=True) + row.prop(brush, "size", text="Radius", slider=True) row.prop(brush, "use_size_pressure", toggle=True, text="") row = col.row(align=True) - row.prop(brush, "strength", slider=True) + row.prop(brush, "strength", text="Strength", slider=True) row.prop(brush, "use_strength_pressure", toggle=True, text="") row = col.row(align=True) @@ -755,11 +742,11 @@ class VIEW3D_PT_tools_brush(PaintPanel): col.prop(brush, "color", text="") row = col.row(align=True) - row.prop(brush, "size", slider=True) + row.prop(brush, "size", text="Radius", slider=True) row.prop(brush, "use_size_pressure", toggle=True, text="") row = col.row(align=True) - row.prop(brush, "strength", slider=True) + row.prop(brush, "strength", text="Strength", slider=True) row.prop(brush, "use_strength_pressure", toggle=True, text="") # XXX - TODO @@ -1032,7 +1019,8 @@ class VIEW3D_PT_sculpt_options(PaintPanel): wide_ui = context.region.width > narrowui - sculpt = context.tool_settings.sculpt + tool_settings = context.tool_settings + sculpt = tool_settings.sculpt settings = self.paint_settings(context) brush = settings.brush @@ -1040,10 +1028,9 @@ class VIEW3D_PT_sculpt_options(PaintPanel): col = split.column() - edit = context.user_preferences.edit col.label(text="Unified Settings:") - col.prop(edit, "sculpt_paint_use_unified_size", text="Size") - col.prop(edit, "sculpt_paint_use_unified_strength", text="Strength") + col.prop(tool_settings, "sculpt_paint_use_unified_size", text="Size") + col.prop(tool_settings, "sculpt_paint_use_unified_strength", text="Strength") if wide_ui: col = split.column() @@ -1108,17 +1095,19 @@ class VIEW3D_PT_tools_brush_appearance(PaintPanel): settings = self.paint_settings(context) brush = settings.brush - if context.sculpt_object and context.tool_settings.sculpt: - col = layout.column(); + col = layout.column(); - #if brush.sculpt_tool in ('DRAW', 'INFLATE', 'CLAY', 'CLAY_TUBES', 'PINCH', 'CREASE', 'BLOB', 'FLATTEN', 'FILL', 'SCRAPE'): + if context.sculpt_object and context.tool_settings.sculpt: + #if brush.sculpt_tool in ('DRAW', 'INFLATE', 'CLAY', 'PINCH', 'CREASE', 'BLOB', 'FLATTEN', 'FILL', 'SCRAPE', 'CLAY_TUBES'): if brush.sculpt_tool in ('DRAW', 'INFLATE', 'CLAY', 'PINCH', 'CREASE', 'BLOB', 'FLATTEN', 'FILL', 'SCRAPE'): col.prop(brush, "add_col", text="Add Color") col.prop(brush, "sub_col", text="Subtract Color") else: col.prop(brush, "add_col", text="Color") + else: + col.prop(brush, "add_col", text="Color") - col.separator() + col.separator() col = layout.column() col.label(text="Icon:") @@ -1154,7 +1143,8 @@ class VIEW3D_PT_tools_weightpaint_options(View3DPanel): def draw(self, context): layout = self.layout - wpaint = context.tool_settings.weight_paint + tool_settings = context.tool_settings + wpaint = tool_settings.weight_paint col = layout.column() col.prop(wpaint, "all_faces") @@ -1167,6 +1157,10 @@ class VIEW3D_PT_tools_weightpaint_options(View3DPanel): col.prop(mesh, "use_mirror_x") col.prop(mesh, "use_mirror_topology") + col.label(text="Unified Settings:") + col.prop(tool_settings, "sculpt_paint_use_unified_size", text="Size") + col.prop(tool_settings, "sculpt_paint_use_unified_strength", text="Strength") + # Commented out because the Apply button isn't an operator yet, making these settings useless # col.label(text="Gamma:") # col.prop(wpaint, "gamma", text="") @@ -1186,7 +1180,8 @@ class VIEW3D_PT_tools_vertexpaint(View3DPanel): def draw(self, context): layout = self.layout - vpaint = context.tool_settings.vertex_paint + tool_settings = context.tool_settings + vpaint = tool_settings.vertex_paint col = layout.column() #col.prop(vpaint, "mode", text="") @@ -1194,6 +1189,10 @@ class VIEW3D_PT_tools_vertexpaint(View3DPanel): col.prop(vpaint, "normals") col.prop(vpaint, "spray") + col.label(text="Unified Settings:") + col.prop(tool_settings, "sculpt_paint_use_unified_size", text="Size") + col.prop(tool_settings, "sculpt_paint_use_unified_strength", text="Strength") + # Commented out because the Apply button isn't an operator yet, making these settings useless # col.label(text="Gamma:") # col.prop(vpaint, "gamma", text="") @@ -1272,6 +1271,23 @@ class VIEW3D_PT_tools_projectpaint(View3DPanel): sub.operator("image.save_dirty", text="Save All Edited") +class VIEW3D_PT_imagepaint_options(PaintPanel): + bl_label = "Options" + bl_default_closed = True + + def poll(self, context): + return (context.texture_paint_object and context.tool_settings.image_paint) + + def draw(self, context): + layout = self.layout + + col = layout.column() + + tool_settings = context.tool_settings + col.label(text="Unified Settings:") + col.prop(tool_settings, "sculpt_paint_use_unified_size", text="Size") + col.prop(tool_settings, "sculpt_paint_use_unified_strength", text="Strength") + class VIEW3D_MT_tools_projectpaint_clone(bpy.types.Menu): bl_label = "Clone Layer" @@ -1385,6 +1401,7 @@ classes = [ VIEW3D_PT_sculpt_options, VIEW3D_PT_tools_vertexpaint, VIEW3D_PT_tools_weightpaint_options, + VIEW3D_PT_imagepaint_options, VIEW3D_PT_tools_projectpaint, VIEW3D_MT_tools_projectpaint_clone, diff --git a/source/blender/blenkernel/BKE_brush.h b/source/blender/blenkernel/BKE_brush.h index 75fdb719a62..3ad902c41fe 100644 --- a/source/blender/blenkernel/BKE_brush.h +++ b/source/blender/blenkernel/BKE_brush.h @@ -88,14 +88,24 @@ void brush_radial_control_invoke(struct wmOperator *op, struct Brush *br, float int brush_radial_control_exec(struct wmOperator *op, struct Brush *br, float size_weight); /* unified strength and size */ -int sculpt_get_brush_size(struct Brush *brush); -void sculpt_set_brush_size(struct Brush *brush, int size); -int sculpt_get_lock_brush_size(struct Brush *brush); -float sculpt_get_brush_unprojected_radius(struct Brush *brush); -void sculpt_set_brush_unprojected_radius(struct Brush *brush, float unprojected_radius); -float sculpt_get_brush_alpha(struct Brush *brush); -void sculpt_set_brush_alpha(struct Brush *brush, float alpha); +int brush_size(struct Brush *brush); +void brush_set_size(struct Brush *brush, int value); + +int brush_use_locked_size(struct Brush *brush); +void brush_set_use_locked_size(struct Brush *brush, int value); + +int brush_use_alpha_pressure(struct Brush *brush); +void brush_set_use_alpha_pressure(struct Brush *brush, int value); + +int brush_use_size_pressure(struct Brush *brush); +void brush_set_use_size_pressure(struct Brush *brush, int value); + +float brush_unprojected_radius(struct Brush *brush); +void brush_set_unprojected_radius(struct Brush *brush, float value); + +float brush_alpha(struct Brush *brush); +void brush_set_alpha(struct Brush *brush, float value); #endif diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index 8e3cc0751b5..ac600f7ef4e 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -38,6 +38,7 @@ #include "DNA_windowmanager_types.h" #include "WM_types.h" +#include "WM_api.h" #include "RNA_access.h" @@ -357,9 +358,10 @@ void brush_sample_tex(Brush *brush, float *xy, float *rgba) if (mtex && mtex->tex) { float co[3], tin, tr, tg, tb, ta; int hasrgb; - - co[0]= xy[0]/(brush->size >> 1); - co[1]= xy[1]/(brush->size >> 1); + const int radius= brush_size(brush); + + co[0]= xy[0]/radius; + co[1]= xy[1]/radius; co[2]= 0.0f; hasrgb= externtex(mtex, co, &tin, &tr, &tg, &tb, &ta); @@ -382,23 +384,24 @@ void brush_sample_tex(Brush *brush, float *xy, float *rgba) } -void brush_imbuf_new(Brush *brush, short flt, short texfall, int size, ImBuf **outbuf) +void brush_imbuf_new(Brush *brush, short flt, short texfall, int bufsize, ImBuf **outbuf) { ImBuf *ibuf; float xy[2], dist, rgba[4], *dstf; int x, y, rowbytes, xoff, yoff, imbflag; - int maxsize = brush->size >> 1; + const int radius= brush_size(brush); char *dst, crgb[3]; + const float alpha= brush_alpha(brush); imbflag= (flt)? IB_rectfloat: IB_rect; - xoff = -size/2.0f + 0.5f; - yoff = -size/2.0f + 0.5f; - rowbytes= size*4; + xoff = -bufsize/2.0f + 0.5f; + yoff = -bufsize/2.0f + 0.5f; + rowbytes= bufsize*4; if (*outbuf) ibuf= *outbuf; else - ibuf= IMB_allocImBuf(size, size, 32, imbflag, 0); + ibuf= IMB_allocImBuf(bufsize, bufsize, 32, imbflag, 0); if (flt) { for (y=0; y < ibuf->y; y++) { @@ -412,7 +415,7 @@ void brush_imbuf_new(Brush *brush, short flt, short texfall, int size, ImBuf **o dist = sqrt(xy[0]*xy[0] + xy[1]*xy[1]); VECCOPY(dstf, brush->rgb); - dstf[3]= brush->alpha*brush_curve_strength_clamp(brush, dist, maxsize); + dstf[3]= alpha*brush_curve_strength_clamp(brush, dist, radius); } else if (texfall == 1) { brush_sample_tex(brush, xy, dstf); @@ -425,7 +428,7 @@ void brush_imbuf_new(Brush *brush, short flt, short texfall, int size, ImBuf **o dstf[0] = rgba[0]*brush->rgb[0]; dstf[1] = rgba[1]*brush->rgb[1]; dstf[2] = rgba[2]*brush->rgb[2]; - dstf[3] = rgba[3]*brush->alpha*brush_curve_strength_clamp(brush, dist, maxsize); + dstf[3] = rgba[3]*alpha*brush_curve_strength_clamp(brush, dist, radius); } } } @@ -448,7 +451,7 @@ void brush_imbuf_new(Brush *brush, short flt, short texfall, int size, ImBuf **o dst[0]= crgb[0]; dst[1]= crgb[1]; dst[2]= crgb[2]; - dst[3]= FTOCHAR(brush->alpha*brush_curve_strength(brush, dist, maxsize)); + dst[3]= FTOCHAR(alpha*brush_curve_strength(brush, dist, radius)); } else if (texfall == 1) { brush_sample_tex(brush, xy, rgba); @@ -464,7 +467,7 @@ void brush_imbuf_new(Brush *brush, short flt, short texfall, int size, ImBuf **o dst[0] = FTOCHAR(rgba[0]*brush->rgb[0]); dst[1] = FTOCHAR(rgba[1]*brush->rgb[1]); dst[2] = FTOCHAR(rgba[2]*brush->rgb[2]); - dst[3] = FTOCHAR(rgba[3]*brush->alpha*brush_curve_strength_clamp(brush, dist, maxsize)); + dst[3] = FTOCHAR(rgba[3]*alpha*brush_curve_strength_clamp(brush, dist, radius)); } } } @@ -478,7 +481,7 @@ void brush_imbuf_new(Brush *brush, short flt, short texfall, int size, ImBuf **o typedef struct BrushPainterCache { short enabled; - int size; /* size override, if 0 uses brush->size */ + int size; /* size override, if 0 uses brush_size(brush) */ short flt; /* need float imbuf? */ short texonly; /* no alpha, color or fallof, only texture in imbuf */ @@ -523,8 +526,8 @@ BrushPainter *brush_painter_new(Brush *brush) painter->firsttouch= 1; painter->cache.lastsize= -1; /* force ibuf create in refresh */ - painter->startsize = brush->size; - painter->startalpha = brush->alpha; + painter->startsize = brush_size(brush); + painter->startalpha = brush_alpha(brush); painter->startjitter = brush->jitter; painter->startspacing = brush->spacing; @@ -557,8 +560,8 @@ void brush_painter_free(BrushPainter *painter) { Brush *brush = painter->brush; - brush->size = painter->startsize; - brush->alpha = painter->startalpha; + brush_set_size(brush, painter->startsize); + brush_set_alpha(brush, painter->startalpha); brush->jitter = painter->startjitter; brush->spacing = painter->startspacing; @@ -575,9 +578,10 @@ static void brush_painter_do_partial(BrushPainter *painter, ImBuf *oldtexibuf, i float *bf, *mf, *tf, *otf=NULL, xoff, yoff, xy[2], rgba[4]; char *b, *m, *t, *ot= NULL; int dotexold, origx= x, origy= y; + const int radius= brush_size(brush); - xoff = -brush->size/2.0f + 0.5f; - yoff = -brush->size/2.0f + 0.5f; + xoff = -radius + 0.5f; + yoff = -radius + 0.5f; xoff += (int)pos[0] - (int)painter->startpaintpos[0]; yoff += (int)pos[1] - (int)painter->startpaintpos[1]; @@ -659,14 +663,15 @@ static void brush_painter_fixed_tex_partial_update(BrushPainter *painter, float BrushPainterCache *cache= &painter->cache; ImBuf *oldtexibuf, *ibuf; int imbflag, destx, desty, srcx, srcy, w, h, x1, y1, x2, y2; + const int diameter= 2*brush_size(brush); imbflag= (cache->flt)? IB_rectfloat: IB_rect; if (!cache->ibuf) - cache->ibuf= IMB_allocImBuf(brush->size, brush->size, 32, imbflag, 0); + cache->ibuf= IMB_allocImBuf(diameter, diameter, 32, imbflag, 0); ibuf= cache->ibuf; oldtexibuf= cache->texibuf; - cache->texibuf= IMB_allocImBuf(brush->size, brush->size, 32, imbflag, 0); + cache->texibuf= IMB_allocImBuf(diameter, diameter, 32, imbflag, 0); if (oldtexibuf) { srcx= srcy= 0; @@ -713,9 +718,13 @@ static void brush_painter_refresh_cache(BrushPainter *painter, float *pos) MTex *mtex= &brush->mtex; int size; short flt; + const int radius= brush_size(brush); + const float alpha= brush_alpha(brush); - if ((brush->size != cache->lastsize) || (brush->alpha != cache->lastalpha) - || (brush->jitter != cache->lastjitter)) { + if (radius != cache->lastsize || + alpha != cache->lastalpha || + brush->jitter != cache->lastjitter) + { if (cache->ibuf) { IMB_freeImBuf(cache->ibuf); cache->ibuf= NULL; @@ -726,7 +735,7 @@ static void brush_painter_refresh_cache(BrushPainter *painter, float *pos) } flt= cache->flt; - size= (cache->size)? cache->size: brush->size; + size= (cache->size)? cache->size: radius; if (!(mtex && mtex->tex) || (mtex->tex->type==0)) { brush_imbuf_new(brush, flt, 0, size, &cache->ibuf); @@ -738,8 +747,8 @@ static void brush_painter_refresh_cache(BrushPainter *painter, float *pos) else brush_imbuf_new(brush, flt, 2, size, &cache->ibuf); - cache->lastsize= brush->size; - cache->lastalpha= brush->alpha; + cache->lastsize= radius; + cache->lastalpha= alpha; cache->lastjitter= brush->jitter; } else if ((brush->flag & BRUSH_FIXED_TEX) && mtex && mtex->tex) { @@ -758,10 +767,10 @@ void brush_painter_break_stroke(BrushPainter *painter) static void brush_apply_pressure(BrushPainter *painter, Brush *brush, float pressure) { - if (brush->flag & BRUSH_ALPHA_PRESSURE) - brush->alpha = MAX2(0.0, painter->startalpha*pressure); - if (brush->flag & BRUSH_SIZE_PRESSURE) - brush->size = MAX2(1.0, painter->startsize*pressure); + if (brush_use_alpha_pressure(brush)) + brush_set_alpha(brush, MAX2(0.0, painter->startalpha*pressure)); + if (brush_use_size_pressure(brush)) + brush_set_size(brush, MAX2(1.0, painter->startsize*pressure)); if (brush->flag & BRUSH_JITTER_PRESSURE) brush->jitter = MAX2(0.0, painter->startjitter*pressure); if (brush->flag & BRUSH_SPACING_PRESSURE) @@ -772,6 +781,7 @@ void brush_jitter_pos(Brush *brush, float *pos, float *jitterpos) { if(brush->jitter){ float rand_pos[2]; + const int radius= brush_size(brush); // find random position within a circle of diameter 1 do { @@ -779,8 +789,8 @@ void brush_jitter_pos(Brush *brush, float *pos, float *jitterpos) rand_pos[1] = BLI_frand()-0.5f; } while (len_v2(rand_pos) > 0.5f); - jitterpos[0] = pos[0] + 2*rand_pos[0]*brush->size*brush->jitter; - jitterpos[1] = pos[1] + 2*rand_pos[1]*brush->size*brush->jitter; + jitterpos[0] = pos[0] + 2*rand_pos[0]*radius*brush->jitter; + jitterpos[1] = pos[1] + 2*rand_pos[1]*radius*brush->jitter; } else { VECCOPY2D(jitterpos, pos); @@ -819,7 +829,7 @@ int brush_painter_paint(BrushPainter *painter, BrushFunc func, float *pos, doubl double starttime, curtime= time; /* compute brush spacing adapted to brush size */ - spacing= brush->rate; //brush->size*brush->spacing*0.01f; + spacing= brush->rate; //brush_size(brush)*brush->spacing*0.01f; /* setup starting time, direction vector and accumulated time */ starttime= painter->accumtime; @@ -850,11 +860,12 @@ int brush_painter_paint(BrushPainter *painter, BrushFunc func, float *pos, doubl else { float startdistance, spacing, step, paintpos[2], dmousepos[2], finalpos[2]; float t, len, press; + const int radius= brush_size(brush); - /* compute brush spacing adapted to brush size, spacing may depend + /* compute brush spacing adapted to brush radius, spacing may depend on pressure, so update it */ brush_apply_pressure(painter, brush, painter->lastpressure); - spacing= MAX2(1.0f, brush->size)*brush->spacing*0.01f; + spacing= MAX2(1.0f, radius)*brush->spacing*0.01f; /* setup starting distance, direction vector and accumulated distance */ startdistance= painter->accumdistance; @@ -871,7 +882,7 @@ int brush_painter_paint(BrushPainter *painter, BrushFunc func, float *pos, doubl t = step/len; press= (1.0f-t)*painter->lastpressure + t*pressure; brush_apply_pressure(painter, brush, press); - spacing= MAX2(1.0f, brush->size)*brush->spacing*0.01f; + spacing= MAX2(1.0f, radius)*brush->spacing*0.01f; brush_jitter_pos(brush, paintpos, finalpos); @@ -921,8 +932,8 @@ int brush_painter_paint(BrushPainter *painter, BrushFunc func, float *pos, doubl painter->lastmousepos[1]= pos[1]; painter->lastpressure= pressure; - brush->alpha = painter->startalpha; - brush->size = painter->startsize; + brush_set_alpha(brush, painter->startalpha); + brush_set_size(brush, painter->startsize); brush->jitter = painter->startjitter; brush->spacing = painter->startspacing; @@ -1041,9 +1052,9 @@ void brush_radial_control_invoke(wmOperator *op, Brush *br, float size_weight) float original_value= 0; if(mode == WM_RADIALCONTROL_SIZE) - original_value = sculpt_get_brush_size(br) * size_weight; + original_value = brush_size(br) * size_weight; else if(mode == WM_RADIALCONTROL_STRENGTH) - original_value = sculpt_get_brush_alpha(br); + original_value = brush_alpha(br); else if(mode == WM_RADIALCONTROL_ANGLE) { MTex *mtex = brush_active_texture(br); if(mtex) @@ -1061,15 +1072,15 @@ int brush_radial_control_exec(wmOperator *op, Brush *br, float size_weight) const float conv = 0.017453293; if(mode == WM_RADIALCONTROL_SIZE) - if (sculpt_get_lock_brush_size(br)) { + if (brush_use_locked_size(br)) { float initial_value = RNA_float_get(op->ptr, "initial_value"); - const float unprojected_radius = sculpt_get_brush_unprojected_radius(br); - sculpt_set_brush_unprojected_radius(br, unprojected_radius * new_value/initial_value * size_weight); + const float unprojected_radius = brush_unprojected_radius(br); + brush_set_unprojected_radius(br, unprojected_radius * new_value/initial_value * size_weight); } else - sculpt_set_brush_size(br, new_value * size_weight); + brush_set_size(br, new_value * size_weight); else if(mode == WM_RADIALCONTROL_STRENGTH) - sculpt_set_brush_alpha(br, new_value); + brush_set_alpha(br, new_value); else if(mode == WM_RADIALCONTROL_ANGLE) { MTex *mtex = brush_active_texture(br); if(mtex) @@ -1078,3 +1089,248 @@ int brush_radial_control_exec(wmOperator *op, Brush *br, float size_weight) return OPERATOR_FINISHED; } + +/* Unified Size and Strength */ + +static void set_unified_settings(Brush *brush, short flag, int value) +{ + Scene *sce; + for (sce= G.main->scene.first; sce; sce= sce->id.next) { + if (sce->toolsettings && + ELEM4(brush, + paint_brush(&(sce->toolsettings->imapaint.paint)), + paint_brush(&(sce->toolsettings->vpaint->paint)), + paint_brush(&(sce->toolsettings->wpaint->paint)), + paint_brush(&(sce->toolsettings->sculpt->paint)))) + { + if (value) + sce->toolsettings->sculpt_paint_settings |= flag; + else + sce->toolsettings->sculpt_paint_settings &= ~flag; + } + } +} + +static short unified_settings(Brush *brush) +{ + Scene *sce; + for (sce= G.main->scene.first; sce; sce= sce->id.next) { + if (sce->toolsettings && + ELEM4(brush, + paint_brush(&(sce->toolsettings->imapaint.paint)), + paint_brush(&(sce->toolsettings->vpaint->paint)), + paint_brush(&(sce->toolsettings->wpaint->paint)), + paint_brush(&(sce->toolsettings->sculpt->paint)))) + { + return sce->toolsettings->sculpt_paint_settings; + } + } + + return 0; +} + +static void set_unified_size(Brush *brush, int value) +{ + Scene *sce; + for (sce= G.main->scene.first; sce; sce= sce->id.next) { + if (sce->toolsettings && + ELEM4(brush, + paint_brush(&(sce->toolsettings->imapaint.paint)), + paint_brush(&(sce->toolsettings->vpaint->paint)), + paint_brush(&(sce->toolsettings->wpaint->paint)), + paint_brush(&(sce->toolsettings->sculpt->paint)))) + { + sce->toolsettings->sculpt_paint_unified_size= value; + } + } +} + +static int unified_size(Brush *brush) +{ + Scene *sce; + for (sce= G.main->scene.first; sce; sce= sce->id.next) { + if (sce->toolsettings && + ELEM4(brush, + paint_brush(&(sce->toolsettings->imapaint.paint)), + paint_brush(&(sce->toolsettings->vpaint->paint)), + paint_brush(&(sce->toolsettings->wpaint->paint)), + paint_brush(&(sce->toolsettings->sculpt->paint)))) + { + return sce->toolsettings->sculpt_paint_unified_size; + } + } + + return 35; // XXX magic number +} + +static void set_unified_alpha(Brush *brush, float value) +{ + Scene *sce; + for (sce= G.main->scene.first; sce; sce= sce->id.next) { + if (sce->toolsettings && + ELEM4(brush, + paint_brush(&(sce->toolsettings->imapaint.paint)), + paint_brush(&(sce->toolsettings->vpaint->paint)), + paint_brush(&(sce->toolsettings->wpaint->paint)), + paint_brush(&(sce->toolsettings->sculpt->paint)))) + { + sce->toolsettings->sculpt_paint_unified_alpha= value; + } + } +} + +static float unified_alpha(Brush *brush) +{ + Scene *sce; + for (sce= G.main->scene.first; sce; sce= sce->id.next) { + if (sce->toolsettings && + ELEM4(brush, + paint_brush(&(sce->toolsettings->imapaint.paint)), + paint_brush(&(sce->toolsettings->vpaint->paint)), + paint_brush(&(sce->toolsettings->wpaint->paint)), + paint_brush(&(sce->toolsettings->sculpt->paint)))) + { + return sce->toolsettings->sculpt_paint_unified_alpha; + } + } + + return 0.5f; // XXX magic number +} + +static void set_unified_unprojected_radius(Brush *brush, float value) +{ + Scene *sce; + for (sce= G.main->scene.first; sce; sce= sce->id.next) { + if (sce->toolsettings && + ELEM4(brush, + paint_brush(&(sce->toolsettings->imapaint.paint)), + paint_brush(&(sce->toolsettings->vpaint->paint)), + paint_brush(&(sce->toolsettings->wpaint->paint)), + paint_brush(&(sce->toolsettings->sculpt->paint)))) + { + sce->toolsettings->sculpt_paint_unified_unprojected_radius= value; + } + } +} + +static float unified_unprojected_radius(Brush *brush) +{ + Scene *sce; + for (sce= G.main->scene.first; sce; sce= sce->id.next) { + if (sce->toolsettings && + ELEM4(brush, + paint_brush(&(sce->toolsettings->imapaint.paint)), + paint_brush(&(sce->toolsettings->vpaint->paint)), + paint_brush(&(sce->toolsettings->wpaint->paint)), + paint_brush(&(sce->toolsettings->sculpt->paint)))) + { + return sce->toolsettings->sculpt_paint_unified_unprojected_radius; + } + } + + return 0.125f; // XXX magic number +} +void brush_set_size(Brush *brush, int size) +{ + if (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_SIZE) + set_unified_size(brush, size); + else + brush->size= size; + + WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); +} + +int brush_size(Brush *brush) +{ + return (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_SIZE) ? unified_size(brush) : brush->size; +} + +void brush_set_use_locked_size(Brush *brush, int value) +{ + if (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_SIZE) { + set_unified_settings(brush, SCULPT_PAINT_UNIFIED_LOCK_BRUSH_SIZE, value); + } + else { + if (value) + brush->flag |= BRUSH_LOCK_SIZE; + else + brush->flag &= ~BRUSH_LOCK_SIZE; + } + + WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); +} + +int brush_use_locked_size(Brush *brush) +{ + return (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_SIZE) ? (unified_settings(brush) & SCULPT_PAINT_UNIFIED_LOCK_BRUSH_SIZE) : (brush->flag & BRUSH_LOCK_SIZE); +} + +void brush_set_use_size_pressure(Brush *brush, int value) +{ + if (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_SIZE) { + set_unified_settings(brush, SCULPT_PAINT_UNIFIED_SIZE_PRESSURE, value); + } + else { + if (value) + brush->flag |= BRUSH_SIZE_PRESSURE; + else + brush->flag &= ~BRUSH_SIZE_PRESSURE; + } + + WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); +} + +int brush_use_size_pressure(Brush *brush) +{ + return (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_SIZE) ? (unified_settings(brush) & SCULPT_PAINT_UNIFIED_SIZE_PRESSURE) : (brush->flag & BRUSH_SIZE_PRESSURE); +} + +void brush_set_use_alpha_pressure(Brush *brush, int value) +{ + if (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_ALPHA) { + set_unified_settings(brush, SCULPT_PAINT_UNIFIED_ALPHA_PRESSURE, value); + } + else { + if (value) + brush->flag |= BRUSH_ALPHA_PRESSURE; + else + brush->flag &= ~BRUSH_ALPHA_PRESSURE; + } + + WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); +} + +int brush_use_alpha_pressure(Brush *brush) +{ + return (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_ALPHA) ? (unified_settings(brush) & SCULPT_PAINT_UNIFIED_ALPHA_PRESSURE) : (brush->flag & BRUSH_ALPHA_PRESSURE); +} + +void brush_set_unprojected_radius(Brush *brush, float unprojected_radius) +{ + if (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_SIZE) + set_unified_unprojected_radius(brush, unprojected_radius); + else + brush->unprojected_radius= unprojected_radius; + + WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); +} + +float brush_unprojected_radius(Brush *brush) +{ + return (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_SIZE) ? unified_unprojected_radius(brush) : brush->unprojected_radius; +} + +void brush_set_alpha(Brush *brush, float alpha) +{ + if (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_ALPHA) + set_unified_alpha(brush, alpha); + else + brush->alpha= alpha; + + WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); +} + +float brush_alpha(Brush *brush) +{ + return (unified_settings(brush) & SCULPT_PAINT_USE_UNIFIED_ALPHA) ? unified_alpha(brush) : brush->alpha; +} diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index bf31f6ac818..87034717a93 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -11050,6 +11050,21 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } + /* GSOC Sculpt 2010 - Sanity check on Sculpt/Paint settings */ + if (main->versionfile < 253) { + Scene *sce; + for (sce= main->brush.first; sce; sce= sce->id.next) { + if (sce->toolsettings->sculpt_paint_unified_alpha == 0) + sce->toolsettings->sculpt_paint_unified_alpha = 0.5f; + + if (sce->toolsettings->sculpt_paint_unified_unprojected_radius == 0) + sce->toolsettings->sculpt_paint_unified_unprojected_radius = 0.125f; + + if (sce->toolsettings->sculpt_paint_unified_size == 0) + sce->toolsettings->sculpt_paint_unified_size = 35; + } + } + /* put compatibility code here until next subversion bump */ { } diff --git a/source/blender/editors/datafiles/startup.blend.c b/source/blender/editors/datafiles/startup.blend.c index 7c042fabe0e..cecca2e9636 100644 --- a/source/blender/editors/datafiles/startup.blend.c +++ b/source/blender/editors/datafiles/startup.blend.c @@ -1,102 +1,484 @@ /* DataToC output of file <startup_blend> */ -int datatoc_startup_blend_size= 310044; +int datatoc_startup_blend_size= 310404; char datatoc_startup_blend[]= { - 66, 76, 69, 78, 68, 69, 82, 95,118, 50, 53, 50, 82, 69, 78, 68, 32, 0, 0, 0,156,231,148, 2, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 71, 76, 79, 66, 16, 1, 0, 0,188,230,148, 2,201, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 53, 5, 0, 0, 0, -250, 0, 0, 0, 1, 0, 0, 1,152, 99, 11, 3,160, 9, 13, 3, 0, 16, 0, 0,128, 32, 4, 0, 67, 58, 92, 68,111, 99,117,109, -101,110,116,115, 32, 97,110,100, 32, 83,101,116,116,105,110,103,115, 92, 80,104,111,101,110,105,120, 92, 65,112,112,108,105, 99, - 97,116,105,111,110, 32, 68, 97,116, 97, 92, 66,108,101,110,100,101,114, 32, 70,111,117,110,100, 97,116,105,111,110, 92, 66,108, -101,110,100,101,114, 92, 50, 46, 53, 50, 92, 99,111,110,102,105,103, 92,115,116, 97,114,116,117,112, 46, 98,108,101,110,100, 0, -204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,204,204,204,204,204,204,204, 87, 77, 0, 0,168, 0, 0, 0, 64,186, 10, 3,110, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 87,105,110, 77, 97,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,187, 10, 3, 80,187, 10, 3, 80,187, 10, 3, 80,187, 10, 3, - 3, 0, 0, 0, 0, 0, 0, 0,112,252,244, 2,192,188,119, 3, 0, 0, 0, 0, 0, 0, 0, 0,224,238,103, 3,200,173,111, 7, - 16, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 45, 93, 3, -128, 44,119, 3, 0, 0, 0, 0, 0, 0, 0, 0,176, 38, 73, 3,176, 38, 73, 3,176, 38, 73, 3, 64,172, 91, 3, 64,172, 91, 3, - 64,172, 91, 3, 68, 65, 84, 65,148, 0, 0, 0, 80,187, 10, 3,111, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 39, 73, 3, 1, 0, 0, 0, 0, 0, 0, 0,152, 99, 11, 3, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,136, 6,202, 3, 0, 0, 0, 0, - 1, 0,238, 3, 0, 0, 1, 0, 0, 0, 0, 0,168, 42, 73, 3, 56,147, 9, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, -248, 64, 3, 3,192, 15,123, 3,176, 13,105, 3, 32, 44, 73, 3, 16,145, 9, 3,136,146, 9, 3,136,146, 9, 3, 56,147, 9, 3, -144, 79, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, 72,188, 10, 3,195, 0, 0, 0, 1, 0, 0, 0, -136, 11, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,189, 10, 3, 48,197, 10, 3,168,197, 10, 3, -168,211, 10, 3, 40,212, 10, 3, 88, 2, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 76, 69, 78, + 68, 69, 82, 95,118, 50, 53, 51, 82, 69, 78, 68, 32, 0, 0, 0, 24,245,203, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, +250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 76, 79, 66, + 16, 1, 0, 0, 24,244,203, 1,201, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 48, 0, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1, +144,199, 61, 2,144, 57, 63, 2, 0, 16, 0, 0,128, 32, 4, 0, 67, 58, 92, 68,111, 99,117,109,101,110,116,115, 32, 97,110,100, + 32, 83,101,116,116,105,110,103,115, 92, 80,104,111,101,110,105,120, 92, 65,112,112,108,105, 99, 97,116,105,111,110, 32, 68, 97, +116, 97, 92, 66,108,101,110,100,101,114, 32, 70,111,117,110,100, 97,116,105,111,110, 92, 66,108,101,110,100,101,114, 92, 50, 46, + 53, 51, 92, 99,111,110,102,105,103, 92,115,116, 97,114,116,117,112, 46, 98,108,101,110,100, 0,176, 23,159, 0,154,104,157, 0, +136, 6, 0, 0, 1, 0, 0, 0,184,244,203, 1, 40, 68,224, 5, 32, 0, 0, 0, 24,245,203, 1,141, 60,121, 0,104, 11, 6, 6, + 24,245,203, 1, 32, 0, 0, 0, 24,245,203, 1, 32, 0, 0, 0,144,199, 61, 2, 40, 68,224, 5,239, 61,121, 0, 24,245,203, 1, +144, 57, 63, 2, 82, 69, 78, 68, 32, 0, 0, 0, 24,245,203, 1, 0, 0, 0, 0, 1, 0, 0, 0,138, 64,121, 0, 0, 0, 0, 0, + 0, 0, 0, 0,152, 51, 61, 2, 40, 68,224, 5,144,199, 61, 2, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, + 87, 77, 0, 0,168, 0, 0, 0,200, 53, 61, 2,110, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 87, 77, 87,105,110, 77, 97,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176, 54, 61, 2,176, 54, 61, 2,176, 54, 61, 2,176, 54, 61, 2, 3, 0, 0, 0, 0, 0, 0, 0, +248, 86,225, 5,144,214,224, 5, 0, 0, 0, 0, 0, 0, 0, 0,232, 19,225, 5,216,109,237, 5, 16, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 75,224, 5,248, 73,224, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 8,111, 65, 2, 8,111, 65, 2, 8,111, 65, 2,176, 58, 65, 2,176, 58, 65, 2,176, 58, 65, 2, 68, 65, 84, 65, +148, 0, 0, 0,176, 54, 61, 2,111, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 59, 65, 2, 1, 0, 0, 0, + 0, 0, 0, 0,144,199, 61, 2, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,136, 6,202, 3, 0, 0, 0, 0, 1, 0,236, 3, 0, 0, 1, 0, + 0, 0, 0, 0, 8, 60, 65, 2, 8, 64, 65, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 32, 38, 61, 2,152, 71,223, 5, +200, 1,223, 5, 48, 61, 65, 2, 88, 62, 65, 2,128, 63, 65, 2,128, 63, 65, 2, 8, 64, 65, 2,136, 48, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,136, 55, 61, 2,195, 0, 0, 0, 1, 0, 0, 0, 72,121, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 56, 61, 2, 48, 62, 61, 2,136, 62, 61, 2, 40, 72, 61, 2,128, 72, 61, 2, + 8,113, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0,144, 57, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 56,189, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, -176,189, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,189, 10, 3, -196, 0, 0, 0, 1, 0, 0, 0, 40,190, 10, 3, 56,189, 10, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 40,190, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,160,190, 10, 3,176,189, 10, 3, 0, 0, 0, 0,254, 4,214, 2, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,190, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 24,191, 10, 3, 40,190, 10, 3, - 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24,191, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, -144,191, 10, 3,160,190, 10, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144,191, 10, 3, -196, 0, 0, 0, 1, 0, 0, 0, 8,192, 10, 3, 24,191, 10, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 8,192, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,128,192, 10, 3,144,191, 10, 3, 0, 0, 0, 0, 32, 4, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128,192, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,248,192, 10, 3, 8,192, 10, 3, - 0, 0, 0, 0, 32, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248,192, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, -112,193, 10, 3,128,192, 10, 3, 0, 0, 0, 0, 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,112,193, 10, 3, -196, 0, 0, 0, 1, 0, 0, 0,232,193, 10, 3,248,192, 10, 3, 0, 0, 0, 0,254, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,232,193, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 96,194, 10, 3,112,193, 10, 3, 0, 0, 0, 0, 0, 0, 84, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96,194, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,216,194, 10, 3,232,193, 10, 3, - 0, 0, 0, 0, 32, 4, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216,194, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, - 80,195, 10, 3, 96,194, 10, 3, 0, 0, 0, 0,192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 80,195, 10, 3, -196, 0, 0, 0, 1, 0, 0, 0,200,195, 10, 3,216,194, 10, 3, 0, 0, 0, 0,192, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,200,195, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, 64,196, 10, 3, 80,195, 10, 3, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64,196, 10, 3,196, 0, 0, 0, 1, 0, 0, 0,184,196, 10, 3,200,195, 10, 3, - 0, 0, 0, 0,192, 1, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184,196, 10, 3,196, 0, 0, 0, 1, 0, 0, 0, - 48,197, 10, 3, 64,196, 10, 3, 0, 0, 0, 0, 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 48,197, 10, 3, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,184,196, 10, 3, 0, 0, 0, 0,254, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,168,197, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,198, 10, 3, 0, 0, 0, 0,176,189, 10, 3, 40,190, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,198, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,198, 10, 3, -168,197, 10, 3,176,189, 10, 3, 24,191, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,198, 10, 3, -197, 0, 0, 0, 1, 0, 0, 0, 40,199, 10, 3, 40,198, 10, 3, 40,190, 10, 3,144,191, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 40,199, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,199, 10, 3,168,198, 10, 3, 24,191, 10, 3, -144,191, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,199, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, - 40,200, 10, 3, 40,199, 10, 3, 56,189, 10, 3, 8,192, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 40,200, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,200, 10, 3,168,199, 10, 3,160,190, 10, 3, 8,192, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,200, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,201, 10, 3, 40,200, 10, 3, -144,191, 10, 3,128,192, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,201, 10, 3,197, 0, 0, 0, - 1, 0, 0, 0,168,201, 10, 3,168,200, 10, 3, 8,192, 10, 3,248,192, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,168,201, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,202, 10, 3, 40,201, 10, 3,160,190, 10, 3,112,193, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,202, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,202, 10, 3, -168,201, 10, 3,248,192, 10, 3,112,193, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,202, 10, 3, -197, 0, 0, 0, 1, 0, 0, 0, 40,203, 10, 3, 40,202, 10, 3, 56,189, 10, 3,232,193, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 40,203, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,203, 10, 3,168,202, 10, 3,128,192, 10, 3, - 96,194, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,203, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, - 40,204, 10, 3, 40,203, 10, 3, 8,192, 10, 3, 96,194, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 40,204, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,204, 10, 3,168,203, 10, 3,232,193, 10, 3, 96,194, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,204, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,205, 10, 3, 40,204, 10, 3, -232,193, 10, 3,216,194, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,205, 10, 3,197, 0, 0, 0, - 1, 0, 0, 0,168,205, 10, 3,168,204, 10, 3, 96,194, 10, 3,216,194, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,168,205, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,206, 10, 3, 40,205, 10, 3, 24,191, 10, 3, 80,195, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,206, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,206, 10, 3, -168,205, 10, 3,128,192, 10, 3, 80,195, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,206, 10, 3, -197, 0, 0, 0, 1, 0, 0, 0, 40,207, 10, 3, 40,206, 10, 3,216,194, 10, 3, 80,195, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 40,207, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,207, 10, 3,168,206, 10, 3,232,193, 10, 3, -200,195, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,207, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, - 40,208, 10, 3, 40,207, 10, 3,216,194, 10, 3, 64,196, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 40,208, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,208, 10, 3,168,207, 10, 3,200,195, 10, 3, 64,196, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,208, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,209, 10, 3, 40,208, 10, 3, -248,192, 10, 3,184,196, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,209, 10, 3,197, 0, 0, 0, - 1, 0, 0, 0,168,209, 10, 3,168,208, 10, 3,128,192, 10, 3,184,196, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,168,209, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,210, 10, 3, 40,209, 10, 3,144,191, 10, 3, 48,197, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,210, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,210, 10, 3, -168,209, 10, 3,112,193, 10, 3, 48,197, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,210, 10, 3, -197, 0, 0, 0, 1, 0, 0, 0, 40,211, 10, 3, 40,210, 10, 3,184,196, 10, 3, 48,197, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 40,211, 10, 3,197, 0, 0, 0, 1, 0, 0, 0,168,211, 10, 3,168,210, 10, 3, 24,191, 10, 3, -200,195, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,211, 10, 3,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 40,211, 10, 3, 80,195, 10, 3, 64,196, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, - 40,212, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,176,215, 10, 3, 0, 0, 0, 0, 24,191, 10, 3,176,189, 10, 3, 40,190, 10, 3, -144,191, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,240, 10, 11, 3,240, 10, 11, 3,240,212, 10, 3, 80,214, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,212, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, - 80,214, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 88, 56, 61, 2,196, 0, 0, 0, 1, 0, 0, 0,176, 56, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176, 56, 61, 2,196, 0, 0, 0, 1, 0, 0, 0, + 8, 57, 61, 2, 88, 56, 61, 2, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8, 57, 61, 2, +196, 0, 0, 0, 1, 0, 0, 0, 96, 57, 61, 2,176, 56, 61, 2, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 96, 57, 61, 2,196, 0, 0, 0, 1, 0, 0, 0,184, 57, 61, 2, 8, 57, 61, 2, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184, 57, 61, 2,196, 0, 0, 0, 1, 0, 0, 0, 16, 58, 61, 2, 96, 57, 61, 2, + 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 16, 58, 61, 2,196, 0, 0, 0, 1, 0, 0, 0, +104, 58, 61, 2,184, 57, 61, 2, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104, 58, 61, 2, +196, 0, 0, 0, 1, 0, 0, 0,192, 58, 61, 2, 16, 58, 61, 2, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,192, 58, 61, 2,196, 0, 0, 0, 1, 0, 0, 0, 24, 59, 61, 2,104, 58, 61, 2, 0, 0, 0, 0, 32, 4,187, 2, + 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24, 59, 61, 2,196, 0, 0, 0, 1, 0, 0, 0,112, 59, 61, 2,192, 58, 61, 2, + 0, 0, 0, 0, 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,112, 59, 61, 2,196, 0, 0, 0, 1, 0, 0, 0, +200, 59, 61, 2, 24, 59, 61, 2, 0, 0, 0, 0,254, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200, 59, 61, 2, +196, 0, 0, 0, 1, 0, 0, 0, 32, 60, 61, 2,112, 59, 61, 2, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 32, 60, 61, 2,196, 0, 0, 0, 1, 0, 0, 0,120, 60, 61, 2,200, 59, 61, 2, 0, 0, 0, 0, 32, 4, 84, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120, 60, 61, 2,196, 0, 0, 0, 1, 0, 0, 0,208, 60, 61, 2, 32, 60, 61, 2, + 0, 0, 0, 0,192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208, 60, 61, 2,196, 0, 0, 0, 1, 0, 0, 0, + 40, 61, 61, 2,120, 60, 61, 2, 0, 0, 0, 0,192, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40, 61, 61, 2, +196, 0, 0, 0, 1, 0, 0, 0,128, 61, 61, 2,208, 60, 61, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,128, 61, 61, 2,196, 0, 0, 0, 1, 0, 0, 0,216, 61, 61, 2, 40, 61, 61, 2, 0, 0, 0, 0,192, 1, 0, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216, 61, 61, 2,196, 0, 0, 0, 1, 0, 0, 0, 48, 62, 61, 2,128, 61, 61, 2, + 0, 0, 0, 0, 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 48, 62, 61, 2,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,216, 61, 61, 2, 0, 0, 0, 0,254, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 62, 61, 2, +197, 0, 0, 0, 1, 0, 0, 0,224, 62, 61, 2, 0, 0, 0, 0,176, 56, 61, 2, 8, 57, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,224, 62, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, 56, 63, 61, 2,136, 62, 61, 2,176, 56, 61, 2, +184, 57, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56, 63, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, +144, 63, 61, 2,224, 62, 61, 2, 8, 57, 61, 2, 16, 58, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +144, 63, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,232, 63, 61, 2, 56, 63, 61, 2,184, 57, 61, 2, 16, 58, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232, 63, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, 64, 64, 61, 2,144, 63, 61, 2, + 88, 56, 61, 2,104, 58, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 64, 61, 2,197, 0, 0, 0, + 1, 0, 0, 0,152, 64, 61, 2,232, 63, 61, 2, 96, 57, 61, 2,104, 58, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,152, 64, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,240, 64, 61, 2, 64, 64, 61, 2, 16, 58, 61, 2,192, 58, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,240, 64, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, 72, 65, 61, 2, +152, 64, 61, 2,104, 58, 61, 2, 24, 59, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 65, 61, 2, +197, 0, 0, 0, 1, 0, 0, 0,160, 65, 61, 2,240, 64, 61, 2, 96, 57, 61, 2,112, 59, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,160, 65, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,248, 65, 61, 2, 72, 65, 61, 2, 24, 59, 61, 2, +112, 59, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248, 65, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, + 80, 66, 61, 2,160, 65, 61, 2, 88, 56, 61, 2,200, 59, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 80, 66, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,168, 66, 61, 2,248, 65, 61, 2,192, 58, 61, 2, 32, 60, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 66, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, 0, 67, 61, 2, 80, 66, 61, 2, +104, 58, 61, 2, 32, 60, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0, 67, 61, 2,197, 0, 0, 0, + 1, 0, 0, 0, 88, 67, 61, 2,168, 66, 61, 2,200, 59, 61, 2, 32, 60, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 88, 67, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,176, 67, 61, 2, 0, 67, 61, 2,200, 59, 61, 2,120, 60, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176, 67, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, 8, 68, 61, 2, + 88, 67, 61, 2, 32, 60, 61, 2,120, 60, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 68, 61, 2, +197, 0, 0, 0, 1, 0, 0, 0, 96, 68, 61, 2,176, 67, 61, 2,184, 57, 61, 2,208, 60, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 96, 68, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,184, 68, 61, 2, 8, 68, 61, 2,192, 58, 61, 2, +208, 60, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184, 68, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, + 16, 69, 61, 2, 96, 68, 61, 2,120, 60, 61, 2,208, 60, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 16, 69, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,104, 69, 61, 2,184, 68, 61, 2,200, 59, 61, 2, 40, 61, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104, 69, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,192, 69, 61, 2, 16, 69, 61, 2, +120, 60, 61, 2,128, 61, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 69, 61, 2,197, 0, 0, 0, + 1, 0, 0, 0, 24, 70, 61, 2,104, 69, 61, 2, 40, 61, 61, 2,128, 61, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 24, 70, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,112, 70, 61, 2,192, 69, 61, 2, 24, 59, 61, 2,216, 61, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112, 70, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,200, 70, 61, 2, + 24, 70, 61, 2,192, 58, 61, 2,216, 61, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200, 70, 61, 2, +197, 0, 0, 0, 1, 0, 0, 0, 32, 71, 61, 2,112, 70, 61, 2, 16, 58, 61, 2, 48, 62, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 32, 71, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,120, 71, 61, 2,200, 70, 61, 2,112, 59, 61, 2, + 48, 62, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120, 71, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, +208, 71, 61, 2, 32, 71, 61, 2,216, 61, 61, 2, 48, 62, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +208, 71, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, 40, 72, 61, 2,120, 71, 61, 2,184, 57, 61, 2, 40, 61, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 72, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 71, 61, 2, +208, 60, 61, 2,128, 61, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,128, 72, 61, 2,199, 0, 0, 0, + 1, 0, 0, 0,144, 75, 61, 2, 0, 0, 0, 0,184, 57, 61, 2,176, 56, 61, 2, 8, 57, 61, 2, 16, 58, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0,216,120, 61, 2,216,120, 61, 2, 32, 73, 61, 2, 88, 74, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 73, 61, 2,200, 0, 0, 0, 1, 0, 0, 0, 88, 74, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88, 74, 61, 2,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 32, 73, 61, 2, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, + 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,144, 75, 61, 2,199, 0, 0, 0, 1, 0, 0, 0,184, 79, 61, 2,128, 72, 61, 2,104, 58, 61, 2, 24, 59, 61, 2, +112, 59, 61, 2, 96, 57, 61, 2, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 51, 1, 0, 0, 4, 4,222, 0, + 52, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 78, 61, 2,160, 78, 61, 2, 48, 76, 61, 2,104, 77, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48, 76, 61, 2,200, 0, 0, 0, + 1, 0, 0, 0,104, 77, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, + 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, + 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,222, 0, 31, 0,222, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, + 21, 1, 0, 0, 51, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 31, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,104, 77, 61, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48, 76, 61, 2, 0, 0, 0, 0, 0, 0, 94, 67, + 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 77, 67, 1,128,138,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, + 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, + 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,222, 0, 21, 1,205, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,222, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,160, 78, 61, 2,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,184, 79, 61, 2, +199, 0, 0, 0, 1, 0, 0, 0,200, 83, 61, 2,144, 75, 61, 2, 88, 56, 61, 2,200, 59, 61, 2, 32, 60, 61, 2,104, 58, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 15, 15, 32, 4, 84, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,200, 82, 61, 2,200, 82, 61, 2, 88, 80, 61, 2,144, 81, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88, 80, 61, 2,200, 0, 0, 0, 1, 0, 0, 0,144, 81, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,132, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 32, 4, 26, 0, 32, 4, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144, 81, 61, 2, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88, 80, 61, 2, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, +112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 18, 0, 0, 0, 57, 0, 0, 0, + 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, + 4, 0, 0, 4, 8, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 4, 0, 0, 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 58, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,188, 0, 0, 0,200, 82, 61, 2,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,200, 83, 61, 2,199, 0, 0, 0, + 1, 0, 0, 0, 72, 89, 61, 2,184, 79, 61, 2, 24, 59, 61, 2,216, 61, 61, 2, 48, 62, 61, 2,112, 59, 61, 2, 0, 0, 0, 0, + 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 47, 2, 0, 0, 3, 3,222, 0,251, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,216, 86, 61, 2,216, 86, 61, 2,104, 84, 61, 2,160, 85, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104, 84, 61, 2,200, 0, 0, 0, 1, 0, 0, 0,160, 85, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, 26, 0,222, 0, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 22, 2, 0, 0, 47, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160, 85, 61, 2,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,104, 84, 61, 2, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0,100, 66, + 0, 0,131, 67, 0, 0, 79,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0, +204, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, + 6, 0,222, 0,225, 0,205, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, + 53, 1, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,225, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +252, 0, 0, 0,216, 86, 61, 2,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 88, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 24, 88, 61, 2,223, 0, 0, 0, 1, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0,104, 88, 61, 2, 68, 65, 84, 65,156, 0, 0, 0,104, 88, 61, 2,222, 0, 0, 0, 13, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0,144, 57, 63, 2, 19, 0, 0, 0, 1, 0, 1, 0,144, 57, 63, 2, 20, 0, 0, 0, 1, 0, 1, 0, +144, 57, 63, 2, 21, 0, 1, 0, 1, 0, 1, 0,144, 57, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0,176, 76, 63, 2, 0, 0, 0, 0, + 1, 0, 1, 0,224, 82, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0,216,163, 64, 2, 0, 0, 0, 0, 1, 0, 1, 0,128, 92, 63, 2, + 0, 0, 0, 0, 1, 0, 1, 0,136, 1, 64, 2, 0, 0, 0, 0, 1, 0, 1, 0, 96, 88, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0, +248, 72, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0,192, 78, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0, 80, 72, 63, 2, 68, 65, 84, 65, + 96, 0, 0, 0, 72, 89, 61, 2,199, 0, 0, 0, 1, 0, 0, 0,192,100, 61, 2,200, 83, 61, 2,120, 60, 61, 2,208, 60, 61, 2, +192, 58, 61, 2, 32, 60, 61, 2, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,186, 2, 0, 0, 1, 1, 95, 2, +102, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 99, 61, 2,136, 99, 61, 2,232, 89, 61, 2,200, 94, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232, 89, 61, 2,200, 0, 0, 0, + 1, 0, 0, 0, 32, 91, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0,192, 23, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, + 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0, 95, 2, 26, 0, 95, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, + 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 32, 91, 61, 2,200, 0, 0, 0, 1, 0, 0, 0, 88, 92, 61, 2,232, 89, 61, 2, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,193, 1, 0, 0,193, 1, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 76, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88, 92, 61, 2,200, 0, 0, 0, 1, 0, 0, 0,144, 93, 61, 2, + 32, 91, 61, 2, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, + 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0, +102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,111, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144, 93, 61, 2, +200, 0, 0, 0, 1, 0, 0, 0,200, 94, 61, 2, 88, 92, 61, 2, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,180, 0,148, 3,163, 0,130, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, + 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,200, 94, 61, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144, 93, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 76, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 61, 2, 68, 65, 84, 65, 72, 3, 0, 0, 0, 96, 61, 2,159, 0, 0, 0, 1, 0, 0, 0, + 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,134,144, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, + 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, +185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, +178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62, +145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, + 99,240,191, 62,110,116, 85, 63, 80,185, 70,188, 0, 0, 82,180,206, 44,182,190,198,158, 47, 62, 36,239, 74, 63, 0, 0, 8,179, + 67,108,117,194,183,204,216, 65,104,156, 5,194,212,247,159,192,235, 62,114, 66, 59,254,213,193,157,225, 3, 66, 55, 8,160, 64, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, +178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62, +145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, +255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, +234,108, 69, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 32, 33, 12, 66, 85,152,137, 66, +116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136, 99, 61, 2,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 7, 0,192, 78, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,192,100, 61, 2, +199, 0, 0, 0, 1, 0, 0, 0,168,107, 61, 2, 72, 89, 61, 2,200, 59, 61, 2, 40, 61, 61, 2,128, 61, 61, 2,120, 60, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,255, 0, 0, 0, 2, 2,192, 1,171, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64,106, 61, 2, 64,106, 61, 2, 96,101, 61, 2, 8,105, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,101, 61, 2,200, 0, 0, 0, 1, 0, 0, 0,152,102, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, 26, 0,192, 1, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,102, 61, 2, +200, 0, 0, 0, 1, 0, 0, 0,208,103, 61, 2, 96,101, 61, 2, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,254,194, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, + 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, + 0, 0, 0, 4, 6, 0,217, 0,145, 0,200, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +216, 0, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0,145, 0, + 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,208,103, 61, 2,200, 0, 0, 0, 1, 0, 0, 0, 8,105, 61, 2,152,102, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,105, 61, 2,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,208,103, 61, 2, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, + 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0,111, 18,131, 58,111, 18,131, 58, + 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,231, 0, +145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0,191, 1, 0, 0,111, 0, 0, 0, +255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, + 64,106, 61, 2,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,107, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 80,107, 61, 2, 23, 1, 0, 0, 1, 0, 0, 0,144, 57, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,168,107, 61, 2,199, 0, 0, 0, 1, 0, 0, 0, 8,113, 61, 2, +192,100, 61, 2, 40, 61, 61, 2,184, 57, 61, 2,208, 60, 61, 2,128, 61, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, + 1, 1, 0, 0,186, 2, 0, 0, 12, 12,192, 1,186, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,111, 61, 2, +240,111, 61, 2, 72,108, 61, 2,184,110, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 72,108, 61, 2,200, 0, 0, 0, 1, 0, 0, 0,128,109, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 98, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,109, 61, 2,200, 0, 0, 0, 1, 0, 0, 0,184,110, 61, 2, + 72,108, 61, 2, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,199,195, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,200, 0,160, 1,200, 0, +142, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 27, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,160, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,110, 61, 2, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128,109, 61, 2, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194, 0, 0, 0, 0, + 0, 0, 32,193, 0, 0,104, 68, 0, 0,199,195, 0, 0, 0, 0,231, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, + 0, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 2, 4, 4, 0,248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0, 0, 0, +191, 1, 0, 0, 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 0,160, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,216, 0, 0, 0,240,111, 61, 2, 24, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 57, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 2, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 8,113, 61, 2,199, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,168,107, 61, 2,216, 61, 61, 2,192, 58, 61, 2, 16, 58, 61, 2, 48, 62, 61, 2, 0, 0, 0, 0, 33, 4, 0, 0, +254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 1, 1,222, 0,138, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160,119, 61, 2,160,119, 61, 2,168,113, 61, 2,224,114, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,168,113, 61, 2,200, 0, 0, 0, 1, 0, 0, 0,224,114, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 64, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +131, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,132, 1, 24, 0,132, 1, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0, 49, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,114, 61, 2,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,168,113, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0, +186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,138, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,116, 61, 2, 68, 65, 84, 65, 72, 3, 0, 0, + 24,116, 61, 2,159, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +216,109,100, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, + 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63, +225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190, +254,221,192,190,152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190, +228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64, +151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191,142,164,206, 63, +250,192,142, 63,180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, 81, 21, 64,191, +119, 24,172,191,216, 49, 49, 65,152, 9, 52, 65,231, 70,158, 62, 24,234,167, 62,160,206,159,187, 0, 0,170,180,243, 26,182,189, +252, 74,179, 61,195,111,128, 62, 0, 0,124, 51,211,120, 21,194,144, 5, 2, 66, 10,136,213,193,193,214,159,192,219, 38, 19, 66, +196,173,255,193,158,101,210, 65,173, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63, +225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190, +254,221,192,190,152, 9, 52,193, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191,142,164,206, 63, +250,192,142, 63,180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, 81, 21, 64,191, +119, 24,172,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190, 0, 0, 32, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 13,133, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160,119, 61, 2, +160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,192, 78, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, + 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 78, 0, 0,140, 0, 0, 0, 72,121, 61, 2,195, 0, 0, 0, 1, 0, 0, 0,144,199, 61, 2,136, 55, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 24,122, 61, 2,144,126, 61, 2,232,126, 61, 2, 32,134, 61, 2,120,134, 61, 2,128,161, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0,144, 57, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 24,122, 61, 2,196, 0, 0, 0, 1, 0, 0, 0,112,122, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,112,122, 61, 2,196, 0, 0, 0, 1, 0, 0, 0,200,122, 61, 2, + 24,122, 61, 2, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,200,122, 61, 2,196, 0, 0, 0, + 1, 0, 0, 0, 32,123, 61, 2,112,122, 61, 2, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 32,123, 61, 2,196, 0, 0, 0, 1, 0, 0, 0,120,123, 61, 2,200,122, 61, 2, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,120,123, 61, 2,196, 0, 0, 0, 1, 0, 0, 0,208,123, 61, 2, 32,123, 61, 2, 0, 0, 0, 0, + 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208,123, 61, 2,196, 0, 0, 0, 1, 0, 0, 0, 40,124, 61, 2, +120,123, 61, 2, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,124, 61, 2,196, 0, 0, 0, + 1, 0, 0, 0,128,124, 61, 2,208,123, 61, 2, 0, 0, 0, 0, 20, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +128,124, 61, 2,196, 0, 0, 0, 1, 0, 0, 0,216,124, 61, 2, 40,124, 61, 2, 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,216,124, 61, 2,196, 0, 0, 0, 1, 0, 0, 0, 48,125, 61, 2,128,124, 61, 2, 0, 0, 0, 0, + 20, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 48,125, 61, 2,196, 0, 0, 0, 1, 0, 0, 0,136,125, 61, 2, +216,124, 61, 2, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,125, 61, 2,196, 0, 0, 0, + 1, 0, 0, 0,224,125, 61, 2, 48,125, 61, 2, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +224,125, 61, 2,196, 0, 0, 0, 1, 0, 0, 0, 56,126, 61, 2,136,125, 61, 2, 0, 0, 0, 0, 0, 2, 20, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 56,126, 61, 2,196, 0, 0, 0, 1, 0, 0, 0,144,126, 61, 2,224,125, 61, 2, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144,126, 61, 2,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 56,126, 61, 2, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232,126, 61, 2,197, 0, 0, 0, + 1, 0, 0, 0, 64,127, 61, 2, 0, 0, 0, 0,112,122, 61, 2,200,122, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 64,127, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,152,127, 61, 2,232,126, 61, 2,112,122, 61, 2,120,123, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,127, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,240,127, 61, 2, + 64,127, 61, 2,200,122, 61, 2,208,123, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,240,127, 61, 2, +197, 0, 0, 0, 1, 0, 0, 0, 72,128, 61, 2,152,127, 61, 2,120,123, 61, 2,208,123, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 72,128, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,160,128, 61, 2,240,127, 61, 2, 32,123, 61, 2, +128,124, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,160,128, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, +248,128, 61, 2, 72,128, 61, 2, 40,124, 61, 2,128,124, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +248,128, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, 80,129, 61, 2,160,128, 61, 2,208,123, 61, 2,216,124, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,129, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,168,129, 61, 2,248,128, 61, 2, +120,123, 61, 2,216,124, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,129, 61, 2,197, 0, 0, 0, + 1, 0, 0, 0, 0,130, 61, 2, 80,129, 61, 2, 40,124, 61, 2,216,124, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 0,130, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, 88,130, 61, 2,168,129, 61, 2,208,123, 61, 2,128,124, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,130, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,176,130, 61, 2, + 0,130, 61, 2,120,123, 61, 2, 48,125, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,130, 61, 2, +197, 0, 0, 0, 1, 0, 0, 0, 8,131, 61, 2, 88,130, 61, 2,216,124, 61, 2,136,125, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 8,131, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, 96,131, 61, 2,176,130, 61, 2, 48,125, 61, 2, +136,125, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,131, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, +184,131, 61, 2, 8,131, 61, 2, 48,125, 61, 2,224,125, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +184,131, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, 16,132, 61, 2, 96,131, 61, 2,136,125, 61, 2,224,125, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 16,132, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,104,132, 61, 2,184,131, 61, 2, + 24,122, 61, 2, 56,126, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,132, 61, 2,197, 0, 0, 0, + 1, 0, 0, 0,192,132, 61, 2, 16,132, 61, 2, 56,126, 61, 2,144,126, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,192,132, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, 24,133, 61, 2,104,132, 61, 2, 32,123, 61, 2,144,126, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,133, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,112,133, 61, 2, +192,132, 61, 2, 40,124, 61, 2,144,126, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,133, 61, 2, +197, 0, 0, 0, 1, 0, 0, 0,200,133, 61, 2, 24,133, 61, 2,224,125, 61, 2, 56,126, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,200,133, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, 32,134, 61, 2,112,133, 61, 2,136,125, 61, 2, +144,126, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 32,134, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,200,133, 61, 2, 24,122, 61, 2, 48,125, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, +120,134, 61, 2,199, 0, 0, 0, 1, 0, 0, 0,136,137, 61, 2, 0, 0, 0, 0,120,123, 61, 2,112,122, 61, 2,200,122, 61, 2, +208,123, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 32,199, 61, 2, 32,199, 61, 2, 24,135, 61, 2, 80,136, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24,135, 61, 2,200, 0, 0, 0, 1, 0, 0, 0, + 80,136, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, @@ -104,7 +486,7 @@ char datatoc_startup_blend[]= { 213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 80,214, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240,212, 10, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, + 80,136, 61, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 24,135, 61, 2, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, @@ -112,372 +494,1991 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,176,215, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,120,220, 10, 3, 40,212, 10, 3, - 8,192, 10, 3,248,192, 10, 3,112,193, 10, 3,160,190, 10, 3, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 51, 1, 0, 0, 4, 4,222, 0, 52, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,219, 10, 3, 56,219, 10, 3, -120,216, 10, 3,216,217, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -120,216, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,216,217, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, - 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, 31, 0,222, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 4, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 51, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -222, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,136,137, 61, 2,199, 0, 0, 0, 1, 0, 0, 0,152,141, 61, 2,120,134, 61, 2, +144,126, 61, 2, 40,124, 61, 2,128,124, 61, 2, 32,123, 61, 2, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, + 63, 0, 0, 0, 15, 15,234, 0, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,152,140, 61, 2,152,140, 61, 2, + 40,138, 61, 2, 96,139, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 40,138, 61, 2,200, 0, 0, 0, 1, 0, 0, 0, 96,139, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,116, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0,128,190, 67, 0,192, 25, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 26, 0,234, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +234, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,217, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120,216, 10, 3, - 0, 0, 0, 0, 0, 0, 94, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 77, 67, 1,128,138,195, 0, 0, 0, 0, -205, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,222, 0, 21, 1,205, 0, 21, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,139, 61, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,138, 61, 2, + 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, 0, 0, 0, 0, 0, 0, 72, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,233, 0, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, +205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,234, 0, 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 56,219, 10, 3,165, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0,152,140, 61, 2,176, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, + 68, 65, 84, 65, 96, 0, 0, 0,152,141, 61, 2,199, 0, 0, 0, 1, 0, 0, 0,192,145, 61, 2,136,137, 61, 2, 40,124, 61, 2, +216,124, 61, 2,208,123, 61, 2,128,124, 61, 2, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,186, 2, 0, 0, + 4, 4,234, 0,122, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,144, 61, 2,168,144, 61, 2, 56,142, 61, 2, +112,143, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,142, 61, 2, +200, 0, 0, 0, 1, 0, 0, 0,112,143, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0, +254, 4, 0, 0,156, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 31, 0, + 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,112,143, 61, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,142, 61, 2, 0, 0, 0, 0, + 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 88, 67, 0,192, 22,196, 0, 0, 0, 0,217, 0, 0, 0, +234, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +216, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0, 91, 2,217, 0, 91, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,155, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,168,144, 61, 2,165, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,120,220, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 32,225, 10, 3,176,215, 10, 3, 56,189, 10, 3,232,193, 10, 3, - 96,194, 10, 3, 8,192, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 15, 15, 32, 4, - 84, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 10, 3, 0,224, 10, 3, 64,221, 10, 3,160,222, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,221, 10, 3,200, 0, 0, 0, - 1, 0, 0, 0,160,222, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0,132, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, - 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0, 32, 4, 26, 0, 32, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,160,222, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64,221, 10, 3, 0, 0, 64,192, 0, 0,126, 67, - 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, - 18, 0, 0, 0, 57, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, - 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, 0,224, 10, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, - 32,225, 10, 3,199, 0, 0, 0, 1, 0, 0, 0,120,231, 10, 3,120,220, 10, 3,248,192, 10, 3,184,196, 10, 3, 48,197, 10, 3, -112,193, 10, 3, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 47, 2, 0, 0, 3, 3,222, 0,251, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,228, 10, 3,168,228, 10, 3,232,225, 10, 3, 72,227, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232,225, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, - 72,227, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 94, 67, + 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, +192,145, 61, 2,199, 0, 0, 0, 1, 0, 0, 0, 56,157, 61, 2,152,141, 61, 2, 56,126, 61, 2,224,125, 61, 2,136,125, 61, 2, +144,126, 61, 2, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 1, 1, 19, 2, 20, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 61, 2, 0,156, 61, 2, 96,146, 61, 2, 64,151, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,146, 61, 2,200, 0, 0, 0, 1, 0, 0, 0, +152,147, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 4, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, - 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, - 26, 0,222, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 22, 2, 0, 0, - 47, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 19, 2, + 26, 0, 19, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 72,227, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232,225, 10, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, - 0, 0, 0, 0, 0, 0,100, 66, 0, 0,131, 67, 0, 0, 79,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, 18, 0, 0, 0, -224, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 18, 0, 0, 0, -224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, - 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,222, 0,225, 0,205, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -222, 0,225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152,147, 61, 2,200, 0, 0, 0, 1, 0, 0, 0,208,148, 61, 2, 96,146, 61, 2, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, + 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, + 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 0, 0, 1, 2, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0,250, 0, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,168,228, 10, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,148, 61, 2,200, 0, 0, 0, 1, 0, 0, 0, 8,150, 61, 2,152,147, 61, 2, + 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,230, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 8,230, 10, 3, -223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,120,230, 10, 3, 68, 65, 84, 65,156, 0, 0, 0,120,230, 10, 3, -222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,160, 9, 13, 3, 19, 0, 0, 0, 1, 0, 1, 0,160, 9, 13, 3, - 20, 0, 0, 0, 1, 0, 1, 0,160, 9, 13, 3, 21, 0, 1, 0, 1, 0, 1, 0,160, 9, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, - 96, 32, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 39, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 8,122, 14, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 72, 49, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 24,215, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 8, 45, 13, 3, - 0, 0, 0, 0, 1, 0, 1, 0, 16, 28, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,192, 34, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, - 64, 27, 13, 3, 68, 65, 84, 65, 96, 0, 0, 0,120,231, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 48,244, 10, 3, 32,225, 10, 3, -216,194, 10, 3, 80,195, 10, 3,128,192, 10, 3, 96,194, 10, 3, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0, -186, 2, 0, 0, 1, 1, 95, 2,102, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,242, 10, 3,208,242, 10, 3, - 64,232, 10, 3,192,237, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 64,232, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,160,233, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0,192, 23, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 95, 2, 26, 0, 95, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 95, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160,233, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0,235, 10, 3, 64,232, 10, 3, - 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0,193, 1, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 76, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0,235, 10, 3,200, 0, 0, 0, - 1, 0, 0, 0, 96,236, 10, 3,160,233, 10, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0, -231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, - 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, -111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, - 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,150, 61, 2,200, 0, 0, 0, + 1, 0, 0, 0, 64,151, 61, 2,208,148, 61, 2, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 35, 67, 0, 0,184,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, +162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, + 6, 0,180, 0,130, 1,163, 0,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 19, 4, 0, 0, + 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 96,236, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,192,237, 10, 3, 0,235, 10, 3, 0, 0, 0, 0, 0, 0, 35, 67, - 0,128, 96,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, - 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,148, 3,163, 0,130, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 4, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,237, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 96,236, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 0, 0, 0, 64,151, 61, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8,150, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 76, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,239, 10, 3, 68, 65, 84, 65, 72, 3, 0, 0, 32,239, 10, 3, -159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,134,144, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, - 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, - 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62, -166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192, -248,209,213, 64, 0, 0,128, 63,178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, - 26, 63,185, 62, 35, 44,185, 62,145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, - 9,185,108, 65,214,211,111, 65, 99,240,191, 62,110,116, 85, 63, 80,185, 70,188, 0, 0, 82,180,206, 44,182,190,198,158, 47, 62, - 36,239, 74, 63, 0, 0, 8,179, 67,108,117,194,183,204,216, 65,104,156, 5,194,212,247,159,192,235, 62,114, 66, 59,254,213,193, -157,225, 3, 66, 55, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, - 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214,211,111,193, 0, 0,128, 63,178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, - 26, 63,185, 62, 35, 44,185, 62,145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, - 9,185,108, 65,214,211,111, 65,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, - 0, 0, 0, 0, 0, 0, 0, 0,234,108, 69, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, + 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 19, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,120,152, 61, 2, 68, 65, 84, 65, 72, 3, 0, 0,120,152, 61, 2,159, 0, 0, 0, 1, 0, 0, 0, 37,101,230, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249,173,116, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, + 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, + 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, + 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63, +150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 4, 6,158, 63, +214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188, +123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, 80, 25,195, 62, +218,249,206, 62, 0,237,196,187, 0, 0, 96,179,234, 2,170,189,191, 98,167, 61, 1,208,111, 62, 0, 0,224, 49,254,120, 21,194, +182, 5, 2, 66, 70,136,213,193,239,214,159,192, 5, 39, 19, 66, 15,174,255,193,217,101,210, 65,219, 40,160, 64,221,149, 47, 63, + 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, + 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, 4, 6,158, 63, +214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63,149, 84, 28, 63, 1,127,159,188, +123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, + 78,162,246,190, 44, 8, 90,190, 2, 35,171,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,223, 34, 9, 59, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, + 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0,156, 61, 2,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, +192, 78, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 56,157, 61, 2,199, 0, 0, 0, + 1, 0, 0, 0,128,161, 61, 2,192,145, 61, 2, 48,125, 61, 2,120,123, 61, 2,216,124, 61, 2,136,125, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 16, 16, 20, 4,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 72,160, 61, 2, 72,160, 61, 2,216,157, 61, 2, 16,159, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,157, 61, 2,200, 0, 0, 0, 1, 0, 0, 0, 16,159, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,159, 61, 2,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,216,157, 61, 2, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,110,142,241,195, + 55,199,120, 68,240, 80,128,193,136, 2, 4, 68, 3, 4, 0, 0, 20, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, + 2, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,236, 81,184, 61, 10,215, 19, 64, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, + 0, 0, 20, 4,140, 1, 3, 4,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, + 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,140, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +244, 0, 0, 0, 72,160, 61, 2,177, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 19, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,144, 57, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 6, 61,181, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,128,161, 61, 2,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,157, 61, 2, + 24,122, 61, 2, 48,125, 61, 2,224,125, 61, 2, 56,126, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, + 19, 1, 0, 0, 6, 6, 0, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,165, 61, 2,200,165, 61, 2, + 32,162, 61, 2,144,164, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 32,162, 61, 2,200, 0, 0, 0, 1, 0, 0, 0, 88,163, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 2, 26, 0, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,163, 61, 2,200, 0, 0, 0, 1, 0, 0, 0,144,164, 61, 2, 32,162, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144,164, 61, 2,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 88,163, 61, 2, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0,191, + 0, 0,192, 63, 0, 0, 64, 60, 0, 0,125, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, + 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,250, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 33, 0, 0,200,165, 61, 2,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0, +154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,144,199, 61, 2,195, 0, 0, 0, 1, 0, 0, 0, 0,113, 62, 2, + 72,121, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,200, 61, 2, 40,204, 61, 2,128,204, 61, 2, 88,210, 61, 2, +176,210, 61, 2, 96, 26, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0,144, 57, 63, 2, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 21, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96,200, 61, 2,196, 0, 0, 0, 1, 0, 0, 0,184,200, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184,200, 61, 2,196, 0, 0, 0, + 1, 0, 0, 0, 16,201, 61, 2, 96,200, 61, 2, 0, 0, 0, 0, 0, 0,202, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 16,201, 61, 2,196, 0, 0, 0, 1, 0, 0, 0,104,201, 61, 2,184,200, 61, 2, 0, 0, 0, 0,136, 6,202, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,104,201, 61, 2,196, 0, 0, 0, 1, 0, 0, 0,192,201, 61, 2, 16,201, 61, 2, 0, 0, 0, 0, +136, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192,201, 61, 2,196, 0, 0, 0, 1, 0, 0, 0, 24,202, 61, 2, +104,201, 61, 2, 0, 0, 0, 0, 0, 0,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24,202, 61, 2,196, 0, 0, 0, + 1, 0, 0, 0,112,202, 61, 2,192,201, 61, 2, 0, 0, 0, 0,136, 6,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +112,202, 61, 2,196, 0, 0, 0, 1, 0, 0, 0,200,202, 61, 2, 24,202, 61, 2, 0, 0, 0, 0,112, 5, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,200,202, 61, 2,196, 0, 0, 0, 1, 0, 0, 0, 32,203, 61, 2,112,202, 61, 2, 0, 0, 0, 0, +112, 5,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32,203, 61, 2,196, 0, 0, 0, 1, 0, 0, 0,120,203, 61, 2, +200,202, 61, 2, 0, 0, 0, 0,112, 5, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120,203, 61, 2,196, 0, 0, 0, + 1, 0, 0, 0,208,203, 61, 2, 32,203, 61, 2, 0, 0, 0, 0,136, 6, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +208,203, 61, 2,196, 0, 0, 0, 1, 0, 0, 0, 40,204, 61, 2,120,203, 61, 2, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 40,204, 61, 2,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,203, 61, 2, 0, 0, 0, 0, +112, 5, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,128,204, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,216,204, 61, 2, + 0, 0, 0, 0,184,200, 61, 2, 16,201, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,204, 61, 2, +197, 0, 0, 0, 1, 0, 0, 0, 48,205, 61, 2,128,204, 61, 2,184,200, 61, 2,192,201, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 48,205, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,136,205, 61, 2,216,204, 61, 2, 16,201, 61, 2, + 24,202, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136,205, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, +224,205, 61, 2, 48,205, 61, 2,192,201, 61, 2, 24,202, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +224,205, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, 56,206, 61, 2,136,205, 61, 2, 96,200, 61, 2,112,202, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,206, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,144,206, 61, 2,224,205, 61, 2, +104,201, 61, 2,112,202, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,144,206, 61, 2,197, 0, 0, 0, + 1, 0, 0, 0,232,206, 61, 2, 56,206, 61, 2,192,201, 61, 2,200,202, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,232,206, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, 64,207, 61, 2,144,206, 61, 2, 24,202, 61, 2,200,202, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64,207, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,152,207, 61, 2, +232,206, 61, 2,112,202, 61, 2, 32,203, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,207, 61, 2, +197, 0, 0, 0, 1, 0, 0, 0,240,207, 61, 2, 64,207, 61, 2,200,202, 61, 2, 32,203, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,240,207, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, 72,208, 61, 2,152,207, 61, 2, 24,202, 61, 2, +120,203, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72,208, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, +160,208, 61, 2,240,207, 61, 2,104,201, 61, 2,120,203, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +160,208, 61, 2,197, 0, 0, 0, 1, 0, 0, 0,248,208, 61, 2, 72,208, 61, 2, 32,203, 61, 2,120,203, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,208, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, 80,209, 61, 2,160,208, 61, 2, + 96,200, 61, 2,208,203, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,209, 61, 2,197, 0, 0, 0, + 1, 0, 0, 0,168,209, 61, 2,248,208, 61, 2,192,201, 61, 2,208,203, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,168,209, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, 0,210, 61, 2, 80,209, 61, 2,200,202, 61, 2, 40,204, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0,210, 61, 2,197, 0, 0, 0, 1, 0, 0, 0, 88,210, 61, 2, +168,209, 61, 2,112,202, 61, 2, 40,204, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,210, 61, 2, +197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,210, 61, 2,208,203, 61, 2, 40,204, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 96, 0, 0, 0,176,210, 61, 2,199, 0, 0, 0, 1, 0, 0, 0,192,213, 61, 2, 0, 0, 0, 0,192,201, 61, 2, +184,200, 61, 2, 16,201, 61, 2, 24,202, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,176, 3, 0, 0,202, 3, 0, 0, + 7, 7,137, 6, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 8, 0,168,103, 42, 2,144,112, 62, 2,144,112, 62, 2, 80,211, 61, 2, +136,212, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0,152,224, 41, 2,216, 64, 65, 2, 68, 65, 84, 65,248, 0, 0, 0, 80,211, 61, 2, +200, 0, 0, 0, 1, 0, 0, 0,136,212, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,147, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +136, 6, 0, 0,176, 3, 0, 0,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, + 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,105, 42, 2, + 88,186,223, 5, 88,186,223, 5, 0, 0, 0, 0, 0, 0, 0, 0, 24, 66, 65, 2,144, 69, 65, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,136,212, 61, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80,211, 61, 2, 0, 0, 0, 0, + 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0, +129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 3, 0, 0,202, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,120,104, 42, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,192,213, 61, 2,199, 0, 0, 0, 1, 0, 0, 0, +200, 16, 62, 2,176,210, 61, 2,112,202, 61, 2, 32,203, 61, 2,120,203, 61, 2,104,201, 61, 2, 0, 0, 0, 0,113, 5, 0, 0, +136, 6, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 4, 4, 24, 1, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0,104,100, 42, 2, + 80, 10, 62, 2, 72, 16, 62, 2, 96,214, 61, 2,152,215, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 72, 65, 65, 2,136, 70, 65, 2, + 68, 65, 84, 65,248, 0, 0, 0, 96,214, 61, 2,200, 0, 0, 0, 1, 0, 0, 0,152,215, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,160, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,140, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 23, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 1, 31, 0, 24, 1, 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,113, 5, 0, 0,136, 6, 0, 0,229, 2, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 24, 1, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8,103, 42, 2,224, 61,224, 5,224, 61,224, 5, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 60, 2, +192, 1, 60, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,215, 61, 2,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 96,214, 61, 2, 0, 0, 0, 0, 0, 0,140, 67, 0,128, 86,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, + 0, 64, 57,196, 0, 0, 0, 0, 7, 1, 0, 0, 24, 1, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 24, 1, +229, 2, 7, 1,229, 2, 0, 0,184,184, 41, 2, 1, 0, 0, 0, 0, 0, 0, 0,113, 5, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, +228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 1,229, 2, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,101, 42, 2, 40, 15,223, 5,192,146,236, 5, +208,216, 61, 2,208, 8, 62, 2,168, 2, 60, 2,128, 5, 60, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +208,216, 61, 2,198, 0, 0, 0, 1, 0, 0, 0, 80,218, 61, 2, 0, 0, 0, 0,216,101, 42, 2, 0, 0, 0, 0, 66, 85, 84, 84, + 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, + 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116, +101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255, + 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80,218, 61, 2,198, 0, 0, 0, 1, 0, 0, 0, +208,219, 61, 2,208,216, 61, 2, 56,168, 53, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 7, 1, 61, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,208,219, 61, 2,198, 0, 0, 0, 1, 0, 0, 0, 80,221, 61, 2, 80,218, 61, 2, 8,170, 53, 2, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,111,255, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80,221, 61, 2, +198, 0, 0, 0, 1, 0, 0, 0,208,222, 61, 2,208,219, 61, 2,216,171, 53, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111, +110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254, 7, 1,203, 0, + 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208,222, 61, 2,198, 0, 0, 0, 1, 0, 0, 0, 80,224, 61, 2, + 80,221, 61, 2,168,173, 53, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105, +110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105, +110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254, 7, 1, 58, 0, 20, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0, 80,224, 61, 2,198, 0, 0, 0, 1, 0, 0, 0,208,225, 61, 2,208,222, 61, 2,120,175, 53, 2, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 70,117,108,108, 32, 83, 97,109,112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 34,254, 7, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208,225, 61, 2,198, 0, 0, 0, + 1, 0, 0, 0, 80,227, 61, 2, 80,224, 61, 2, 72,177, 53, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, + 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, + 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,253, 7, 1,102, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80,227, 61, 2,198, 0, 0, 0, 1, 0, 0, 0,208,228, 61, 2,208,225, 61, 2, + 24,179, 53, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,253, 7, 1,130, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 28, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +208,228, 61, 2,198, 0, 0, 0, 1, 0, 0, 0, 80,230, 61, 2, 80,227, 61, 2,184,182, 53, 2, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102, +111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,252, + 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80,230, 61, 2,198, 0, 0, 0, 1, 0, 0, 0, +208,231, 61, 2,208,228, 61, 2,136,184, 53, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112, +114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112, +114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218,252, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,208,231, 61, 2,198, 0, 0, 0, 1, 0, 0, 0, 80,233, 61, 2, 80,230, 61, 2, 88,186, 53, 2, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,194,252, 7, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80,233, 61, 2, +198, 0, 0, 0, 1, 0, 0, 0,208,234, 61, 2,208,231, 61, 2, 40,188, 53, 2, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,252, 7, 1, 0, 0, + 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208,234, 61, 2,198, 0, 0, 0, 1, 0, 0, 0, 80,236, 61, 2, + 80,233, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,116, +101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,116, +101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41,255, 7, 1,179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0, 80,236, 61, 2,198, 0, 0, 0, 1, 0, 0, 0,208,237, 61, 2,208,234, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,102,254, 7, 1,171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208,237, 61, 2,198, 0, 0, 0, + 1, 0, 0, 0, 80,239, 61, 2, 80,236, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105, +110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105, +110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,110,102,108,117,101,110, 99,101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,253, 7, 1, 36, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80,239, 61, 2,198, 0, 0, 0, 1, 0, 0, 0,208,240, 61, 2,208,237, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114,111,112,115, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114,111,112,115, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67,117,115,116,111,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,253, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +208,240, 61, 2,198, 0, 0, 0, 1, 0, 0, 0, 80,242, 61, 2, 80,239, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,101,118, +105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,254, + 7, 1,186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80,242, 61, 2,198, 0, 0, 0, 1, 0, 0, 0, +208,243, 61, 2,208,240, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,253, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,208,243, 61, 2,198, 0, 0, 0, 1, 0, 0, 0, 80,245, 61, 2, 80,242, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110,103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109,112,108,105,110,103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 73,109, 97,103,101, 32, 83, 97,109,112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84,252, 7, 1,212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80,245, 61, 2, +198, 0, 0, 0, 1, 0, 0, 0,208,246, 61, 2,208,243, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 32, 77, 97, +112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 7, 1, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208,246, 61, 2,198, 0, 0, 0, 1, 0, 0, 0, 80,248, 61, 2, + 80,245, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,108,111,114,115, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,108,111,114,115, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,254, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0, 80,248, 61, 2,198, 0, 0, 0, 1, 0, 0, 0,208,249, 61, 2,208,246, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,161,253, 7, 1,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208,249, 61, 2,198, 0, 0, 0, + 1, 0, 0, 0, 80,251, 61, 2, 80,248, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,119, +111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,119, +111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139,253, 7, 1,180, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80,251, 61, 2,198, 0, 0, 0, 1, 0, 0, 0,208,252, 61, 2,208,249, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +208,252, 61, 2,198, 0, 0, 0, 1, 0, 0, 0, 80,254, 61, 2, 80,251, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,111,114,111, +110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123,253, + 7, 1,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80,254, 61, 2,198, 0, 0, 0, 1, 0, 0, 0, +208,255, 61, 2,208,252, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116, +100,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116, +100,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,105,110,116, 32, 68,101,110,115,105,116,121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,253, 7, 1,179, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,208,255, 61, 2,198, 0, 0, 0, 1, 0, 0, 0, 80, 1, 62, 2, 80,254, 61, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95,116,117,114, 98, +117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 95,116,117,114, 98, +117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 14,253, 7, 1,102, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80, 1, 62, 2, +198, 0, 0, 0, 1, 0, 0, 0,208, 2, 62, 2,208,255, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77,117,115,103,114, 97,118,101, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139,253, 7, 1,180, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208, 2, 62, 2,198, 0, 0, 0, 1, 0, 0, 0, 80, 4, 62, 2, + 80, 1, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,114, 98,108,101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,114, 98,108,101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,253, 7, 1,183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0, 80, 4, 62, 2,198, 0, 0, 0, 1, 0, 0, 0,208, 5, 62, 2,208, 2, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208, 5, 62, 2,198, 0, 0, 0, + 1, 0, 0, 0, 80, 7, 62, 2, 80, 4, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,100, +105,115,116,111,114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,100, +105,115,116,111,114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,116,111,114,116,101,100, 32, 78,111, +105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211,253, 7, 1,108, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80, 7, 62, 2,198, 0, 0, 0, 1, 0, 0, 0,208, 8, 62, 2,208, 5, 62, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,254, 7, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +208, 8, 62, 2,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80, 7, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, + 85, 82, 69, 95, 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,117, 99, + 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,183,253, + 7, 1,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 80, 10, 62, 2,165, 0, 0, 0, 1, 0, 0, 0, + 72, 16, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 1, 0, 0, 0, 0, 0,216,212,222, 5,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +104, 11, 62, 2,200, 0, 0, 0, 1, 0, 0, 0,160, 12, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160, 12, 62, 2,200, 0, 0, 0, 1, 0, 0, 0,216, 13, 62, 2,104, 11, 62, 2, + 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, 0, 0, 0, 0, +223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0,149, 3,223, 0,149, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216, 13, 62, 2,200, 0, 0, 0, + 1, 0, 0, 0, 16, 15, 62, 2,160, 12, 62, 2, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, + 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,179, 68, + 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,153, 5, 60, 0,153, 5, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, + 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, 0, 0, 4, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 16, 15, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216, 13, 62, 2, 0, 0, 0, 0, 0,128,175, 68, + 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0,136, 5, 0, 0,153, 5, 0, 0, + 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, + 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 2, 2, 0, 0, 2, 0, 3, 3, 2, 0, 0, 4, 6, 0,153, 5, 89, 3,136, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0, 72, 16, 62, 2,168, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 80, 10, 62, 2,104, 11, 62, 2, 16, 15, 62, 2, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, +200, 16, 62, 2,199, 0, 0, 0, 1, 0, 0, 0,216, 20, 62, 2,192,213, 61, 2, 96,200, 61, 2,208,203, 61, 2, 40,204, 61, 2, +112,202, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 15, 15,112, 5, 84, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0,200, 68, 42, 2,216, 19, 62, 2,216, 19, 62, 2,104, 17, 62, 2,160, 18, 62, 2, 0, 0, 0, 0, + 0, 0, 0, 0,248, 70, 65, 2,120, 6, 60, 2, 68, 65, 84, 65,248, 0, 0, 0,104, 17, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, +160, 18, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,137, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,174, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, + 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,112, 5, + 26, 0,112, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 5, 26, 0, 5, 0, 1, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 70, 42, 2,152, 49,224, 5,152, 49,224, 5, + 0, 0, 0, 0, 0, 0, 0, 0,184, 7, 60, 2, 80, 9, 60, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +160, 18, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104, 17, 62, 2, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, + 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, 18, 0, 0, 0, + 57, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, + 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,112, 5, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,111, 5, 0, 0, 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112, 5, 58, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152, 69, 42, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 10, 60, 2, 56, 14, 60, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0,216, 19, 62, 2,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,216, 20, 62, 2, +199, 0, 0, 0, 1, 0, 0, 0, 96, 26, 62, 2,200, 16, 62, 2, 32,203, 61, 2,200,202, 61, 2, 24,202, 61, 2,120,203, 61, 2, + 0, 0, 0, 0,113, 5, 0, 0,136, 6, 0, 0, 5, 3, 0, 0,174, 3, 0, 0, 3, 3, 24, 1,170, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0,184, 66, 42, 2,232, 23, 62, 2,232, 23, 62, 2,120, 21, 62, 2,176, 22, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, +232, 6, 60, 2, 48, 15, 60, 2, 68, 65, 84, 65,248, 0, 0, 0,120, 21, 62, 2,200, 0, 0, 0, 1, 0, 0, 0,176, 22, 62, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,140, 67, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 1, 26, 0, 24, 1, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,113, 5, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 1, 26, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 68, 42, 2,128,124,224, 5,128,124,224, 5, 0, 0, 0, 0, + 0, 0, 0, 0,136, 32, 61, 2, 32, 34, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176, 22, 62, 2, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120, 21, 62, 2, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,131, 67, 0, 0,252,194, 0, 0, 0, 0, 7, 1, 0, 0, 24, 1, 0, 0, 18, 0, 0, 0,143, 0, 0, 0, + 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 18, 0, 0, 0,143, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, + 0, 0, 0, 4, 6, 0, 24, 1,144, 0, 7, 1,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,113, 5, 0, 0, +136, 6, 0, 0, 5, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 1,144, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 67, 42, 2, +176, 19,223, 5,176, 19,223, 5, 0, 0, 0, 0, 0, 0, 0, 0, 8, 35, 61, 2,184, 36, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,252, 0, 0, 0,232, 23, 62, 2,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 13,253, 5, 80, 13,253, 5, 40, 25, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 40, 25, 62, 2,223, 0, 0, 0, + 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,120, 25, 62, 2, 68, 65, 84, 65,168, 0, 0, 0,120, 25, 62, 2,222, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,144, 57, 63, 2, 19, 0, 0, 0, 1, 0, 1, 0,144, 57, 63, 2, 20, 0, 0, 0, + 1, 0, 1, 0,144, 57, 63, 2, 21, 0, 1, 0, 1, 0, 0, 0,144, 57, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0,176, 76, 63, 2, + 0, 0, 0, 0, 1, 0, 1, 0,224, 82, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0,216,163, 64, 2, 0, 0, 0, 0, 1, 0, 1, 0, +128, 92, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0,136, 1, 64, 2, 0, 0, 0, 0, 1, 0, 1, 0, 96, 88, 63, 2, 0, 0, 0, 0, + 1, 0, 1, 0,248, 72, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0,192, 78, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0, 80, 72, 63, 2, + 21, 0, 0, 0, 1, 0, 1, 0,144, 57, 63, 2, 68, 65, 84, 65, 96, 0, 0, 0, 96, 26, 62, 2,199, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,216, 20, 62, 2,208,203, 61, 2,192,201, 61, 2,200,202, 61, 2, 40,204, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, +111, 5, 0, 0, 85, 0, 0, 0,174, 3, 0, 0, 1, 1,112, 5, 90, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0,216, 70, 42, 2, + 32, 59, 62, 2, 16,112, 62, 2, 0, 27, 62, 2, 96, 54, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0,160, 15, 60, 2,176, 37, 61, 2, + 68, 65, 84, 65,248, 0, 0, 0, 0, 27, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 56, 28, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,174, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +111, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,112, 5, 26, 0,112, 5, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112, 5, 26, 0, 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,232, 78, 42, 2,128,188,236, 5,128,188,236, 5, 0, 0, 0, 0, 0, 0, 0, 0, 64, 40, 61, 2, + 0, 43, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56, 28, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, +112, 50, 62, 2, 0, 27, 62, 2, 0, 0, 0, 0, 0, 0, 32, 67, 0, 0, 26,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, + 1, 0, 26,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,103, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,103, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, +104, 2,143, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0, 71, 1, 0, 0, +174, 3, 0, 0, 0, 0, 0, 0,159, 0, 0, 0, 71, 1, 0, 0,174, 3, 0, 0,160, 0,104, 2, 10, 0, 5, 0, 3, 0, 0, 0, + 0, 0, 0, 0,160, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 76, 42, 2, 8, 92,239, 5, 8, 92,239, 5, +112, 29, 62, 2,240, 48, 62, 2,232, 43, 61, 2,128, 45, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +112, 29, 62, 2,198, 0, 0, 0, 1, 0, 0, 0,240, 30, 62, 2, 0, 0, 0, 0, 88,110, 59, 2, 0, 0, 0, 0, 86, 73, 69, 87, + 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, + 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, + 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,254, +143, 0,190, 1, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,240, 30, 62, 2,198, 0, 0, 0, 1, 0, 0, 0, +112, 32, 62, 2,112, 29, 62, 2, 24,132, 59, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, + 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, + 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117,254,143, 0,115, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,112, 32, 62, 2,198, 0, 0, 0, 1, 0, 0, 0,240, 33, 62, 2,240, 30, 62, 2,232,133, 59, 2, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101,120,116,117,114, +101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101,120,116,117,114, +101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 88,252,143, 0,213, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,240, 33, 62, 2, +198, 0, 0, 0, 1, 0, 0, 0,112, 35, 62, 2,112, 32, 62, 2,184,135, 59, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,114,111,107,101, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228,253,143, 0,121, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,112, 35, 62, 2,198, 0, 0, 0, 1, 0, 0, 0,240, 36, 62, 2, +240, 33, 62, 2,136,137, 59, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115, +104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115, +104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94,253,143, 0,231, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0,240, 36, 62, 2,198, 0, 0, 0, 1, 0, 0, 0,112, 38, 62, 2,112, 35, 62, 2, 88,139, 59, 2, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, 97,110, 99,101, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, 97,110, 99,101, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 65,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 96,253,143, 0,133, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,112, 38, 62, 2,198, 0, 0, 0, + 1, 0, 0, 0,240, 39, 62, 2,240, 36, 62, 2, 40,141, 59, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,169,253,143, 0, 36, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,240, 39, 62, 2,198, 0, 0, 0, 1, 0, 0, 0,112, 41, 62, 2,112, 38, 62, 2, +248,142, 59, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109,109,101,116,114, +121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109,109,101,116,114, +121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,253,143, 0,225, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, +112, 41, 62, 2,198, 0, 0, 0, 1, 0, 0, 0,240, 42, 62, 2,240, 39, 62, 2,200,144, 59, 2, 0, 0, 0, 0, 86, 73, 69, 87, + 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, + 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105, +111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121,253, +143, 0,132, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,240, 42, 62, 2,198, 0, 0, 0, 1, 0, 0, 0, +112, 44, 62, 2,112, 41, 62, 2,136,108, 59, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, +119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, +119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,101,105,103,104,116, 32, 84,111,111,108,115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,254,143, 0,124, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 64, 1, 0, 0,112, 44, 62, 2,198, 0, 0, 0, 1, 0, 0, 0,240, 45, 62, 2,240, 42, 62, 2,104,148, 59, 2, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 95, +111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 95, +111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,181,253,143, 0,190, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,240, 45, 62, 2, +198, 0, 0, 0, 1, 0, 0, 0,112, 47, 62, 2,112, 44, 62, 2, 8,152, 59, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,111,106,101, 99,116, 32, + 80, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,252,143, 0, 9, 1, + 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,112, 47, 62, 2,198, 0, 0, 0, 1, 0, 0, 0,240, 48, 62, 2, +240, 45, 62, 2,152,146, 59, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,118,101,114,116, +101,120,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,118,101,114,116, +101,120,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,197,253,143, 0,146, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0,240, 48, 62, 2,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,112, 47, 62, 2, 56,150, 59, 2, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,105,109, 97,103,101,112, 97,105,110,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,105,109, 97,103,101,112, 97,105,110,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,146,253,143, 0, 80, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112, 50, 62, 2,200, 0, 0, 0, + 1, 0, 0, 0, 40, 53, 62, 2, 56, 28, 62, 2, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0, 90,195, 0, 0, 0, 0, 0, 0, 0, 0, +227,102, 16, 67, 24, 30, 90,195, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0, +142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, + 6, 0,160, 0,216, 0,143, 0,216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0, +111, 0, 0, 0, 70, 1, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,111, 0, 0, 0, 70, 1, 0, 0,160, 0,216, 0, 11, 0, 6, 0, + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 77, 42, 2,184,196,223, 5, +184,196,223, 5,168, 51, 62, 2,168, 51, 62, 2,104, 46, 61, 2, 0, 48, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 1, 0, 0,168, 51, 62, 2,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 77, 42, 2, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 99,117,108,112,116, 32, 77,111,100,101, 0, 32, 77,111,100,101, 0,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,216,255,144, 0, 16, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40, 53, 62, 2,200, 0, 0, 0, + 1, 0, 0, 0, 96, 54, 62, 2,112, 50, 62, 2, 0, 0, 0, 0, 0, 0, 52, 67, 0,192,115,196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 35, 67, 0,192,115,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, +162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, + 6, 0,180, 0,207, 3,163, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 5, 0, 0,111, 5, 0, 0, +111, 0, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 72, 42, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 96, 54, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 53, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 32, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,242, 10, 3,160, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,192, 34, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,160, 0, 0, 0,111, 5, 0, 0,111, 0, 0, 0,174, 3, 0, 0,160, 0, 0, 0,111, 5, 0, 0,111, 0, 0, 0, +174, 3, 0, 0,208, 4, 64, 3, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0,168, 71, 42, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 35, 54, 2, 48, 35, 54, 2, + 0, 0, 0, 0,152, 55, 62, 2, 68, 65, 84, 65, 72, 3, 0, 0,152, 55, 62, 2,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,197, 78,207, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,218,205, 76,190, 0, 0, 0, 0, 68,239,209, 62, + 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188, +166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,210,111,193, 0, 0,128, 63, 68,239,209, 62, + 70,119,105, 63,192, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,144, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, + 35, 44,185,190, 42, 61,228, 62, 0, 0, 0, 0,164, 95, 68, 65,141,120,173,192,225,208,213, 64, 0, 0,128, 63,178,157,229, 62, +147,145, 38,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 77,147,160, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188, +182,140,185, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,220,161,108, 65,158,210,111, 65,190,240,191, 62, + 90,116, 85, 63,240,178, 70,188, 0, 0, 0, 51,151, 1,126,190,229,221,244, 61,133,121, 13, 63, 0, 0,204,179,230,117,117,194, + 58,213,216, 65,167,161, 5,194,236,254,159,192,240, 49,114, 66,195,242,213,193,140,218, 3, 66,145, 0,160, 64, 68,239,209, 62, + 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188, +166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,210,111,193, 0, 0,128, 63,178,157,229, 62, +147,145, 38,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 77,147,160, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188, +182,140,185, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,220,161,108, 65,158,210,111, 65, 60,146,213, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,146,213, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 60,146,213, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, + 56,186,224,190,237,203,148,190, 3,236,234,190,158,210,111, 65,162,123, 94, 65, 0, 0, 0, 0, 0, 0, 0, 0,126,138,194, 58, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0, 48,244, 10, 3,199, 0, 0, 0, 1, 0, 0, 0, 48,252, 10, 3,120,231, 10, 3,232,193, 10, 3,200,195, 10, 3, - 64,196, 10, 3,216,194, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,255, 0, 0, 0, 2, 2,192, 1, -171, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,250, 10, 3,120,250, 10, 3,248,244, 10, 3, 24,249, 10, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,244, 10, 3,200, 0, 0, 0, - 1, 0, 0, 0, 88,246, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, - 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, - 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 30, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 59, 62, 2,160, 0, 0, 0, 1, 0, 0, 0,200, 62, 62, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, +192, 78, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 24, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +205,204,204, 61, 0, 64,156, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88, 60, 62, 2,200, 0, 0, 0, + 1, 0, 0, 0,144, 61, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 48, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,197, 68, + 0, 0,200, 65, 0,224,197, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, + 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 88,246, 10, 3,200, 0, 0, 0, 1, 0, 0, 0,184,247, 10, 3,248,244, 10, 3, 0, 0, 0, 0, 0, 0, 72, 67, - 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,254,194, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, - 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, - 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0,145, 0,200, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,217, 0,145, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 0, 0, 0,144, 61, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88, 60, 62, 2, 0, 0, 0, 0, 0,128,241, 67, + 0,128, 90,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,195, 68, 0, 64,111,196, 0, 0, 0, 0, 31, 6, 0, 0, 48, 6, 0, 0, + 18, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, 30, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 30, 6, 0, 0, + 18, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 18, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 48, 6,207, 3, 31, 6,189, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 6,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,247, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 24,249, 10, 3, - 88,246, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24,249, 10, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,184,247, 10, 3, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, - 18, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, -111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0, -191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 0,145, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,208, 0, 0, 0,120,250, 10, 3,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,200, 62, 62, 2,169, 0, 0, 0, 1, 0, 0, 0,216, 73, 62, 2, + 32, 59, 62, 2, 88, 60, 62, 2,144, 61, 62, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,176,251, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,251, 10, 3, 23, 1, 0, 0, 1, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 48,252, 10, 3,199, 0, 0, 0, - 1, 0, 0, 0, 88, 2, 11, 3, 48,244, 10, 3,200,195, 10, 3, 24,191, 10, 3, 80,195, 10, 3, 64,196, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0,186, 2, 0, 0, 12, 12,192, 1,186, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 24, 1, 11, 3, 24, 1, 11, 3,248,252, 10, 3,184,255, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,252, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 88,254, 10, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0,192, 98, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 64, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, + 8, 64, 62, 2,223, 0, 0, 0, 1, 0, 0, 0, 93, 0, 0, 0, 93, 0, 0, 0, 88, 64, 62, 2, 68, 65, 84, 65, 92, 4, 0, 0, + 88, 64, 62, 2,222, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 57, 63, 2, 19, 0, 0, 0, 1, 0, 0, 0, +144, 57, 63, 2, 20, 0, 0, 0, 1, 0, 0, 0,144, 57, 63, 2, 21, 0, 0, 0, 1, 0, 0, 0,144, 57, 63, 2, 0, 0, 0, 0, + 1, 0, 0, 0,176, 76, 63, 2, 0, 0, 0, 0, 1, 0, 0, 0,224, 82, 63, 2, 0, 0, 0, 0, 1, 0, 0, 0,216,163, 64, 2, + 0, 0, 0, 0, 1, 0, 0, 0,128, 92, 63, 2, 0, 0, 0, 0, 1, 0, 0, 0,136, 1, 64, 2, 0, 0, 0, 0, 1, 0, 0, 0, + 96, 88, 63, 2, 0, 0, 0, 0, 1, 0, 0, 0,248, 72, 63, 2, 0, 0, 0, 0, 1, 0, 0, 0,192, 78, 63, 2, 0, 0, 0, 0, + 1, 0, 0, 0, 80, 72, 63, 2, 30, 0,255,255, 0, 0, 1, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 31, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 6, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 31, 0, 9, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 11, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 14, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 31, 0, 17, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 22, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 31, 0, 25, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, + 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, + 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, + 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, + 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 9, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 12, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 17, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 25, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 28, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 33, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248, 68, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 48, 70, 62, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,197, 68, 0, 0,200, 65, 0,224,197, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,254, 10, 3,200, 0, 0, 0, - 1, 0, 0, 0,184,255, 10, 3,248,252, 10, 3, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 67, 0, 0,199,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, - 6, 0,200, 0,160, 1,200, 0,142, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, - 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,160, 1, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48, 70, 62, 2, +200, 0, 0, 0, 1, 0, 0, 0,104, 71, 62, 2,248, 68, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,104, 71, 62, 2,200, 0, 0, 0, 1, 0, 0, 0,160, 72, 62, 2, 48, 70, 62, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160, 72, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,104, 71, 62, 2, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 38,192, 0, 0,102, 64, + 0,192,179,191, 0,224, 25, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 0, 0, 0, 0, 0, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, + 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0, +216, 73, 62, 2,170, 0, 0, 0, 1, 0, 0, 0, 16,112, 62, 2,200, 62, 62, 2,248, 68, 62, 2,160, 72, 62, 2, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62, +100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,107, 62, 2,200, 0, 0, 0, 1, 0, 0, 0,104,108, 62, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104,108, 62, 2,200, 0, 0, 0, + 1, 0, 0, 0,160,109, 62, 2, 48,107, 62, 2, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 95, 67, 0, 64,101,196, 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, + 6, 0,240, 0,149, 3,223, 0,149, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, + 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,184,255, 10, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88,254, 10, 3, 0, 0, 32,193, 0, 0,104, 68, - 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0,199,195, 0, 0, 0, 0,231, 0, 0, 0,248, 0, 0, 0, - 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, - 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, - 74, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,200, 0, 0, 0,191, 1, 0, 0, 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 0, 0, 0,160,109, 62, 2,200, 0, 0, 0, 1, 0, 0, 0,216,110, 62, 2,104,108, 62, 2, 0, 0, 0, 0, 0, 32,179, 68, + 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, + 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,153, 5, 60, 0,153, 5, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,153, 5, 60, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 24, 1, 11, 3, 24, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,110, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +160,109, 62, 2, 0, 0, 0, 0, 0,128,175, 68, 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, + 0, 0, 0, 0,136, 5, 0, 0,153, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 2, 0, 3, 3, 2, 0, 0, 4, 6, 0,153, 5, 89, 3,136, 5, + 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0, 16,112, 62, 2, +168, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216, 73, 62, 2, 48,107, 62, 2,216,110, 62, 2, 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255, +255,255, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, 0,113, 62, 2,195, 0, 0, 0, 1, 0, 0, 0, 8,161, 62, 2,144,199, 61, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97,109,101, 32, 76,111,103,105, 99, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,113, 62, 2, 72,118, 62, 2,160,118, 62, 2,128,125, 62, 2,216,125, 62, 2, + 24,155, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0,144, 57, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208,113, 62, 2,196, 0, 0, 0, 1, 0, 0, 0, 40,114, 62, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,114, 62, 2,196, 0, 0, 0, 1, 0, 0, 0, +128,114, 62, 2,208,113, 62, 2, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128,114, 62, 2, +196, 0, 0, 0, 1, 0, 0, 0,216,114, 62, 2, 40,114, 62, 2, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,216,114, 62, 2,196, 0, 0, 0, 1, 0, 0, 0, 48,115, 62, 2,128,114, 62, 2, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 48,115, 62, 2,196, 0, 0, 0, 1, 0, 0, 0,136,115, 62, 2,216,114, 62, 2, + 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,115, 62, 2,196, 0, 0, 0, 1, 0, 0, 0, +224,115, 62, 2, 48,115, 62, 2, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224,115, 62, 2, +196, 0, 0, 0, 1, 0, 0, 0, 56,116, 62, 2,136,115, 62, 2, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 56,116, 62, 2,196, 0, 0, 0, 1, 0, 0, 0,144,116, 62, 2,224,115, 62, 2, 0, 0, 0, 0, 20, 4, 20, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144,116, 62, 2,196, 0, 0, 0, 1, 0, 0, 0,232,116, 62, 2, 56,116, 62, 2, + 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232,116, 62, 2,196, 0, 0, 0, 1, 0, 0, 0, + 64,117, 62, 2,144,116, 62, 2, 0, 0, 0, 0,254, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64,117, 62, 2, +196, 0, 0, 0, 1, 0, 0, 0,152,117, 62, 2,232,116, 62, 2, 0, 0, 0, 0,124, 3, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,152,117, 62, 2,196, 0, 0, 0, 1, 0, 0, 0,240,117, 62, 2, 64,117, 62, 2, 0, 0, 0, 0,124, 3,187, 2, + 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,117, 62, 2,196, 0, 0, 0, 1, 0, 0, 0, 72,118, 62, 2,152,117, 62, 2, + 0, 0, 0, 0,212, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,118, 62, 2,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,240,117, 62, 2, 0, 0, 0, 0,212, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,160,118, 62, 2, +197, 0, 0, 0, 1, 0, 0, 0,248,118, 62, 2, 0, 0, 0, 0, 40,114, 62, 2,128,114, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,248,118, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, 80,119, 62, 2,160,118, 62, 2, 40,114, 62, 2, + 48,115, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,119, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, +168,119, 62, 2,248,118, 62, 2,128,114, 62, 2,136,115, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +168,119, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, 0,120, 62, 2, 80,119, 62, 2, 48,115, 62, 2,136,115, 62, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0,120, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, 88,120, 62, 2,168,119, 62, 2, + 48,115, 62, 2,224,115, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,120, 62, 2,197, 0, 0, 0, + 1, 0, 0, 0,176,120, 62, 2, 0,120, 62, 2,224,115, 62, 2, 56,116, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,176,120, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, 8,121, 62, 2, 88,120, 62, 2,216,114, 62, 2,144,116, 62, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,121, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, 96,121, 62, 2, +176,120, 62, 2, 56,116, 62, 2,144,116, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,121, 62, 2, +197, 0, 0, 0, 1, 0, 0, 0,184,121, 62, 2, 8,121, 62, 2,208,113, 62, 2,224,115, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,184,121, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, 16,122, 62, 2, 96,121, 62, 2,208,113, 62, 2, +144,116, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 16,122, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, +104,122, 62, 2,184,121, 62, 2,136,115, 62, 2,232,116, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +104,122, 62, 2,197, 0, 0, 0, 1, 0, 0, 0,192,122, 62, 2, 16,122, 62, 2,216,114, 62, 2,232,116, 62, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192,122, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, 24,123, 62, 2,104,122, 62, 2, + 56,116, 62, 2,232,116, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,123, 62, 2,197, 0, 0, 0, + 1, 0, 0, 0,112,123, 62, 2,192,122, 62, 2, 64,117, 62, 2,152,117, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,112,123, 62, 2,197, 0, 0, 0, 1, 0, 0, 0,200,123, 62, 2, 24,123, 62, 2,136,115, 62, 2,152,117, 62, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,123, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, 32,124, 62, 2, +112,123, 62, 2,232,116, 62, 2, 64,117, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 32,124, 62, 2, +197, 0, 0, 0, 1, 0, 0, 0,120,124, 62, 2,200,123, 62, 2,224,115, 62, 2,240,117, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,120,124, 62, 2,197, 0, 0, 0, 1, 0, 0, 0,208,124, 62, 2, 32,124, 62, 2, 64,117, 62, 2, +240,117, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,124, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, + 40,125, 62, 2,120,124, 62, 2, 48,115, 62, 2, 72,118, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 40,125, 62, 2,197, 0, 0, 0, 1, 0, 0, 0,128,125, 62, 2,208,124, 62, 2,152,117, 62, 2, 72,118, 62, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,128,125, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,125, 62, 2, +240,117, 62, 2, 72,118, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,216,125, 62, 2,199, 0, 0, 0, + 1, 0, 0, 0,232,128, 62, 2, 0, 0, 0, 0, 48,115, 62, 2, 40,114, 62, 2,128,114, 62, 2,136,115, 62, 2, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0,152,160, 62, 2,152,160, 62, 2,120,126, 62, 2,176,127, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,126, 62, 2,200, 0, 0, 0, 1, 0, 0, 0,176,127, 62, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,127, 62, 2,200, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,120,126, 62, 2, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, + 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,232,128, 62, 2,199, 0, 0, 0, 1, 0, 0, 0, 16,133, 62, 2,216,125, 62, 2,144,116, 62, 2, 56,116, 62, 2, +232,116, 62, 2,216,114, 62, 2, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 4, 4,234, 0, + 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,131, 62, 2,248,131, 62, 2,136,129, 62, 2,192,130, 62, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136,129, 62, 2,200, 0, 0, 0, + 1, 0, 0, 0,192,130, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, + 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, + 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, +245, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,192,130, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136,129, 62, 2, 0, 0, 0, 0, 0, 0,105, 67, + 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 88, 67,254,255,116,195, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, + 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, + 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0,245, 0,217, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,234, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,248,131, 62, 2,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 88, 2, 11, 3, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,252, 10, 3,184,196, 10, 3,128,192, 10, 3,144,191, 10, 3, 48,197, 10, 3, - 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 1, 1,222, 0,138, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144, 9, 11, 3,144, 9, 11, 3, 32, 3, 11, 3,128, 4, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 3, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,128, 4, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 16,133, 62, 2, +199, 0, 0, 0, 1, 0, 0, 0,208,137, 62, 2,232,128, 62, 2,208,113, 62, 2,224,115, 62, 2, 56,116, 62, 2,144,116, 62, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 17, 17, 20, 4, 20, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88,137, 62, 2, 88,137, 62, 2,176,133, 62, 2, 32,136, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,133, 62, 2,200, 0, 0, 0, 1, 0, 0, 0,232,134, 62, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,132, 1, 24, 0,132, 1, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0, 49, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 4, 11, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32, 3, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232,134, 62, 2, +200, 0, 0, 0, 1, 0, 0, 0, 32,136, 62, 2,176,133, 62, 2, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,122,195, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,122,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, + 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,220, 0,250, 0,203, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +219, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,250, 0, + 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 32,136, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232,134, 62, 2, 0, 0, 0, 0, + 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67, 4, 0, 39,195, 0,224,180, 68, 1, 0,224,194, 0, 0,176, 67, 39, 3, 0, 0, + 56, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 38, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, 0, 0, 0, 63, + 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 56, 3,250, 0, 39, 3,232, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 3,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 52, 0, 0, 0, 88,137, 62, 2,178, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,208,137, 62, 2, +199, 0, 0, 0, 1, 0, 0, 0,160,143, 62, 2, 16,133, 62, 2, 64,117, 62, 2,152,117, 62, 2,136,115, 62, 2,232,116, 62, 2, + 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 9, 9,130, 1,166, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,224,140, 62, 2,224,140, 62, 2,112,138, 62, 2,168,139, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,138, 62, 2,200, 0, 0, 0, 1, 0, 0, 0,168,139, 62, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,193, 67, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,181, 67, 0, 0,200, 65, 0,128,181, 67, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,130, 1, 26, 0,130, 1, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,139, 62, 2, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,112,138, 62, 2, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, + 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0,126, 86, 5, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, + 0, 0, 0, 4, 10, 0,130, 1,140, 1,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0, +254, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0, -254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,138, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 5, 11, 3, - 68, 65, 84, 65, 72, 3, 0, 0,224, 5, 11, 3,159, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216,109,100, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, - 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, - 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, - 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, - 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, - 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, - 8,165, 39,191,142,164,206, 63,250,192,142, 63,180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, - 50,247,227,190, 81, 21, 64,191,119, 24,172,191,216, 49, 49, 65,152, 9, 52, 65,231, 70,158, 62, 24,234,167, 62,160,206,159,187, - 0, 0,170,180,243, 26,182,189,252, 74,179, 61,195,111,128, 62, 0, 0,124, 51,211,120, 21,194,144, 5, 2, 66, 10,136,213,193, -193,214,159,192,219, 38, 19, 66,196,173,255,193,158,101,210, 65,173, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, - 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, - 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, - 8,165, 39,191,142,164,206, 63,250,192,142, 63,180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, - 50,247,227,190, 81, 21, 64,191,119, 24,172,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, - 2, 35,171,190, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 13,133, 59, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,124, 2, 0, 0,224,140, 62, 2,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,160,143, 62, 2,199, 0, 0, 0, + 1, 0, 0, 0, 24,155, 62, 2,208,137, 62, 2,240,117, 62, 2, 72,118, 62, 2,152,117, 62, 2, 64,117, 62, 2, 0, 0, 0, 0, +213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 1, 1,167, 2,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,224,153, 62, 2,224,153, 62, 2, 64,144, 62, 2, 32,149, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,144, 62, 2,200, 0, 0, 0, 1, 0, 0, 0,120,145, 62, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 56, 0,192, 41, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,166, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,167, 2, 26, 0,167, 2, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,145, 62, 2,200, 0, 0, 0, + 1, 0, 0, 0,176,146, 62, 2, 64,144, 62, 2, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, +142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, + 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,213, 0, 0, 0, + 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,140, 1, 0, 0, 5, 0, + 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,176,146, 62, 2,200, 0, 0, 0, 1, 0, 0, 0,232,147, 62, 2,120,145, 62, 2, 0, 0, 0, 0, 0, 0, 16, 67, + 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0, 47, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232,147, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 32,149, 62, 2, +176,146, 62, 2, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 23,196, + 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,112, 2,163, 0, + 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123, 3, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,149, 62, 2, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232,147, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0, +123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2,140, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,150, 62, 2, + 68, 65, 84, 65, 72, 3, 0, 0, 88,150, 62, 2,159, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,126,177,113, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,121,195, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 7, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,144, 9, 11, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,192, 34, 13, 3, 0, 0, 0, 0, + 0, 0, 0, 0,149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 6, 63,156, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, + 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,224,153, 62, 2,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,192, 78, 63, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,136, 11, 11, 3,195, 0, 0, 0, 1, 0, 0, 0,152, 99, 11, 3, - 72,188, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 12, 11, 3,144, 18, 11, 3, 8, 19, 11, 3,136, 29, 11, 3, - 8, 30, 11, 3,152, 60, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 24,155, 62, 2,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +160,143, 62, 2,224,115, 62, 2, 48,115, 62, 2, 72,118, 62, 2,240,117, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, + 21, 1, 0, 0,186, 2, 0, 0, 3, 3,212, 0,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,158, 62, 2, + 40,158, 62, 2,184,155, 62, 2,240,156, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,184,155, 62, 2,200, 0, 0, 0, 1, 0, 0, 0,240,156, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 83, 67, 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,212, 0, 26, 0,212, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,212, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120, 12, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,240, 12, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240, 12, 11, 3,196, 0, 0, 0, - 1, 0, 0, 0,104, 13, 11, 3,120, 12, 11, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -104, 13, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,224, 13, 11, 3,240, 12, 11, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,224, 13, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 88, 14, 11, 3,104, 13, 11, 3, 0, 0, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 88, 14, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,208, 14, 11, 3, -224, 13, 11, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208, 14, 11, 3,196, 0, 0, 0, - 1, 0, 0, 0, 72, 15, 11, 3, 88, 14, 11, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 72, 15, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,192, 15, 11, 3,208, 14, 11, 3, 0, 0, 0, 0, 20, 4, 64, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,192, 15, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 56, 16, 11, 3, 72, 15, 11, 3, 0, 0, 0, 0, -254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 56, 16, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,176, 16, 11, 3, -192, 15, 11, 3, 0, 0, 0, 0, 20, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176, 16, 11, 3,196, 0, 0, 0, - 1, 0, 0, 0, 40, 17, 11, 3, 56, 16, 11, 3, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 40, 17, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,160, 17, 11, 3,176, 16, 11, 3, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,160, 17, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 24, 18, 11, 3, 40, 17, 11, 3, 0, 0, 0, 0, - 0, 2, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24, 18, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,144, 18, 11, 3, -160, 17, 11, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144, 18, 11, 3,196, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 24, 18, 11, 3, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 8, 19, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 19, 11, 3, 0, 0, 0, 0,240, 12, 11, 3,104, 13, 11, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 19, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 8, 20, 11, 3, 8, 19, 11, 3, -240, 12, 11, 3, 88, 14, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 20, 11, 3,197, 0, 0, 0, - 1, 0, 0, 0,136, 20, 11, 3,136, 19, 11, 3,104, 13, 11, 3,208, 14, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,136, 20, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 8, 21, 11, 3, 8, 20, 11, 3, 88, 14, 11, 3,208, 14, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 21, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 21, 11, 3, -136, 20, 11, 3,224, 13, 11, 3,192, 15, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 21, 11, 3, -197, 0, 0, 0, 1, 0, 0, 0, 8, 22, 11, 3, 8, 21, 11, 3, 72, 15, 11, 3,192, 15, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 8, 22, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 22, 11, 3,136, 21, 11, 3,208, 14, 11, 3, - 56, 16, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 22, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, - 8, 23, 11, 3, 8, 22, 11, 3, 88, 14, 11, 3, 56, 16, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 8, 23, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 23, 11, 3,136, 22, 11, 3, 72, 15, 11, 3, 56, 16, 11, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 23, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 8, 24, 11, 3, 8, 23, 11, 3, -208, 14, 11, 3,192, 15, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 24, 11, 3,197, 0, 0, 0, - 1, 0, 0, 0,136, 24, 11, 3,136, 23, 11, 3, 88, 14, 11, 3,176, 16, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,136, 24, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 8, 25, 11, 3, 8, 24, 11, 3, 56, 16, 11, 3, 40, 17, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 25, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 25, 11, 3, -136, 24, 11, 3,176, 16, 11, 3, 40, 17, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 25, 11, 3, -197, 0, 0, 0, 1, 0, 0, 0, 8, 26, 11, 3, 8, 25, 11, 3,176, 16, 11, 3,160, 17, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 8, 26, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 26, 11, 3,136, 25, 11, 3, 40, 17, 11, 3, -160, 17, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 26, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, - 8, 27, 11, 3, 8, 26, 11, 3,120, 12, 11, 3, 24, 18, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 8, 27, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 27, 11, 3,136, 26, 11, 3, 24, 18, 11, 3,144, 18, 11, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 27, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 8, 28, 11, 3, 8, 27, 11, 3, -224, 13, 11, 3,144, 18, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 28, 11, 3,197, 0, 0, 0, - 1, 0, 0, 0,136, 28, 11, 3,136, 27, 11, 3, 72, 15, 11, 3,144, 18, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,136, 28, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 8, 29, 11, 3, 8, 28, 11, 3,160, 17, 11, 3, 24, 18, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8, 29, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,136, 29, 11, 3, -136, 28, 11, 3, 40, 17, 11, 3,144, 18, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136, 29, 11, 3, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8, 29, 11, 3,120, 12, 11, 3,176, 16, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0, 8, 30, 11, 3,199, 0, 0, 0, 1, 0, 0, 0,144, 33, 11, 3, 0, 0, 0, 0, 88, 14, 11, 3, -240, 12, 11, 3,104, 13, 11, 3,208, 14, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, - 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 99, 11, 3, 0, 99, 11, 3,208, 30, 11, 3, - 48, 32, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208, 30, 11, 3, -200, 0, 0, 0, 1, 0, 0, 0, 48, 32, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,156, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +184,155, 62, 2, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 80, 66, 0, 0,119, 67, 0, 0,189,195, + 0, 0, 0, 0,195, 0, 0, 0,212, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,212, 0,140, 1,195, 0, +122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0, 40,158, 62, 2, +169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,104,159, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,104,159, 62, 2,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, +184,159, 62, 2, 68, 65, 84, 65,156, 0, 0, 0,184,159, 62, 2,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, +144, 57, 63, 2, 19, 0, 0, 0, 1, 0, 1, 0,144, 57, 63, 2, 20, 0, 0, 0, 1, 0, 1, 0,144, 57, 63, 2, 21, 0, 1, 0, + 1, 0, 1, 0,144, 57, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0,176, 76, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0,224, 82, 63, 2, + 0, 0, 0, 0, 1, 0, 1, 0,216,163, 64, 2, 0, 0, 0, 0, 1, 0, 1, 0,128, 92, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0, +136, 1, 64, 2, 0, 0, 0, 0, 1, 0, 1, 0, 96, 88, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0,248, 72, 63, 2, 0, 0, 0, 0, + 1, 0, 1, 0,192, 78, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0, 80, 72, 63, 2, 83, 78, 0, 0,140, 0, 0, 0, 8,161, 62, 2, +195, 0, 0, 0, 1, 0, 0, 0,216,214, 62, 2, 0,113, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116, +105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,161, 62, 2, +168,166, 62, 2, 0,167, 62, 2,144,174, 62, 2,232,174, 62, 2,152,208, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0,144, 57, 63, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216,161, 62, 2, +196, 0, 0, 0, 1, 0, 0, 0, 48,162, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 48,162, 62, 2,196, 0, 0, 0, 1, 0, 0, 0,136,162, 62, 2,216,161, 62, 2, 0, 0, 0, 0, 0, 0,214, 2, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,162, 62, 2,196, 0, 0, 0, 1, 0, 0, 0,224,162, 62, 2, 48,162, 62, 2, + 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224,162, 62, 2,196, 0, 0, 0, 1, 0, 0, 0, + 56,163, 62, 2,136,162, 62, 2, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 56,163, 62, 2, +196, 0, 0, 0, 1, 0, 0, 0,144,163, 62, 2,224,162, 62, 2, 0, 0, 0, 0, 0, 0,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,144,163, 62, 2,196, 0, 0, 0, 1, 0, 0, 0,232,163, 62, 2, 56,163, 62, 2, 0, 0, 0, 0,254, 4,187, 2, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232,163, 62, 2,196, 0, 0, 0, 1, 0, 0, 0, 64,164, 62, 2,144,163, 62, 2, + 0, 0, 0, 0,244, 3,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 64,164, 62, 2,196, 0, 0, 0, 1, 0, 0, 0, +152,164, 62, 2,232,163, 62, 2, 0, 0, 0, 0,244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152,164, 62, 2, +196, 0, 0, 0, 1, 0, 0, 0,240,164, 62, 2, 64,164, 62, 2, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,240,164, 62, 2,196, 0, 0, 0, 1, 0, 0, 0, 72,165, 62, 2,152,164, 62, 2, 0, 0, 0, 0,244, 3, 28, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,165, 62, 2,196, 0, 0, 0, 1, 0, 0, 0,160,165, 62, 2,240,164, 62, 2, + 0, 0, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,165, 62, 2,196, 0, 0, 0, 1, 0, 0, 0, +248,165, 62, 2, 72,165, 62, 2, 0, 0, 0, 0,248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248,165, 62, 2, +196, 0, 0, 0, 1, 0, 0, 0, 80,166, 62, 2,160,165, 62, 2, 0, 0, 0, 0,244, 3, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 80,166, 62, 2,196, 0, 0, 0, 1, 0, 0, 0,168,166, 62, 2,248,165, 62, 2, 0, 0, 0, 0,254, 4, 12, 2, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,166, 62, 2,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80,166, 62, 2, + 0, 0, 0, 0,248, 1,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0,167, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, + 88,167, 62, 2, 0, 0, 0, 0, 48,162, 62, 2,136,162, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 88,167, 62, 2,197, 0, 0, 0, 1, 0, 0, 0,176,167, 62, 2, 0,167, 62, 2, 48,162, 62, 2, 56,163, 62, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,167, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, 8,168, 62, 2, 88,167, 62, 2, +136,162, 62, 2,144,163, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,168, 62, 2,197, 0, 0, 0, + 1, 0, 0, 0, 96,168, 62, 2,176,167, 62, 2, 56,163, 62, 2,144,163, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 96,168, 62, 2,197, 0, 0, 0, 1, 0, 0, 0,184,168, 62, 2, 8,168, 62, 2,144,163, 62, 2,232,163, 62, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184,168, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, 16,169, 62, 2, + 96,168, 62, 2,224,162, 62, 2, 64,164, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 16,169, 62, 2, +197, 0, 0, 0, 1, 0, 0, 0,104,169, 62, 2,184,168, 62, 2,216,161, 62, 2,152,164, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,104,169, 62, 2,197, 0, 0, 0, 1, 0, 0, 0,192,169, 62, 2, 16,169, 62, 2, 56,163, 62, 2, +152,164, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192,169, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, + 24,170, 62, 2,104,169, 62, 2,232,163, 62, 2,240,164, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, + 24,170, 62, 2,197, 0, 0, 0, 1, 0, 0, 0,112,170, 62, 2,192,169, 62, 2, 64,164, 62, 2,240,164, 62, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,170, 62, 2,197, 0, 0, 0, 1, 0, 0, 0,200,170, 62, 2, 24,170, 62, 2, +216,161, 62, 2, 72,165, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,170, 62, 2,197, 0, 0, 0, + 1, 0, 0, 0, 32,171, 62, 2,112,170, 62, 2, 64,164, 62, 2, 72,165, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 32,171, 62, 2,197, 0, 0, 0, 1, 0, 0, 0,120,171, 62, 2,200,170, 62, 2,152,164, 62, 2,160,165, 62, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,171, 62, 2,197, 0, 0, 0, 1, 0, 0, 0,208,171, 62, 2, + 32,171, 62, 2,240,164, 62, 2,160,165, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,171, 62, 2, +197, 0, 0, 0, 1, 0, 0, 0, 40,172, 62, 2,120,171, 62, 2, 72,165, 62, 2,160,165, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 40,172, 62, 2,197, 0, 0, 0, 1, 0, 0, 0,128,172, 62, 2,208,171, 62, 2, 64,164, 62, 2, +248,165, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,128,172, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, +216,172, 62, 2, 40,172, 62, 2,232,163, 62, 2,248,165, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +216,172, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, 48,173, 62, 2,128,172, 62, 2,144,163, 62, 2, 80,166, 62, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,173, 62, 2,197, 0, 0, 0, 1, 0, 0, 0,136,173, 62, 2,216,172, 62, 2, +224,162, 62, 2, 80,166, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136,173, 62, 2,197, 0, 0, 0, + 1, 0, 0, 0,224,173, 62, 2, 48,173, 62, 2,248,165, 62, 2, 80,166, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,224,173, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, 56,174, 62, 2,136,173, 62, 2, 56,163, 62, 2,168,166, 62, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,174, 62, 2,197, 0, 0, 0, 1, 0, 0, 0,144,174, 62, 2, +224,173, 62, 2,232,163, 62, 2,168,166, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,144,174, 62, 2, +197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,174, 62, 2,160,165, 62, 2,168,166, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 96, 0, 0, 0,232,174, 62, 2,199, 0, 0, 0, 1, 0, 0, 0,248,177, 62, 2, 0, 0, 0, 0, 56,163, 62, 2, + 48,162, 62, 2,136,162, 62, 2,144,163, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, + 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,104,214, 62, 2,104,214, 62, 2,136,175, 62, 2, +192,176, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136,175, 62, 2, +200, 0, 0, 0, 1, 0, 0, 0,192,176, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, @@ -485,7 +2486,7 @@ char datatoc_startup_blend[]= { 254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 48, 32, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 30, 11, 3, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,192,176, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136,175, 62, 2, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0, 129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, @@ -493,1336 +2494,340 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,144, 33, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, - 56, 38, 11, 3, 8, 30, 11, 3,144, 18, 11, 3, 72, 15, 11, 3,192, 15, 11, 3,224, 13, 11, 3, 0, 0, 0, 0, 21, 4, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,234, 0, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 24, 37, 11, 3, 24, 37, 11, 3, 88, 34, 11, 3,184, 35, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 88, 34, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,184, 35, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0,192,116, 68, 0, 0, 0, 0, 0, 0,208, 65, 0,128,190, 67, 0,192, 25, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,248,177, 62, 2,199, 0, 0, 0, 1, 0, 0, 0, + 32,182, 62, 2,232,174, 62, 2, 64,164, 62, 2,248,165, 62, 2, 80,166, 62, 2,224,162, 62, 2, 0, 0, 0, 0,245, 3, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 4, 4, 10, 1, 12, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8,181, 62, 2, 8,181, 62, 2,152,178, 62, 2,208,179, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,152,178, 62, 2,200, 0, 0, 0, 1, 0, 0, 0,208,179, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -233, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 26, 0,234, 0, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, 31, 0, 10, 1, 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0,237, 1, 0, 0, 11, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184, 35, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 88, 34, 11, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, - 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, - 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,234, 0, - 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, - 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,179, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,152,178, 62, 2, 0, 0, 0, 0, 0,128,132, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255,120, 67, +255,127,246,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 10, 1, +237, 1,249, 0,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, +236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0, - 24, 37, 11, 3,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 56, 38, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 43, 11, 3, -144, 33, 11, 3, 72, 15, 11, 3, 56, 16, 11, 3,208, 14, 11, 3,192, 15, 11, 3, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, - 65, 0, 0, 0,186, 2, 0, 0, 4, 4,234, 0,122, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 41, 11, 3, -192, 41, 11, 3, 0, 39, 11, 3, 96, 40, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 0, 39, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 96, 40, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, - 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0,156, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96, 40, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 39, 11, 3, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 88, 67, 0,192, 22,196, - 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0, 91, 2,217, 0, - 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,155, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,192, 41, 11, 3, -165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, + 8,181, 62, 2,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0, 0, 43, 11, 3,199, 0, 0, 0, 1, 0, 0, 0,184, 55, 11, 3, 56, 38, 11, 3, 24, 18, 11, 3, -160, 17, 11, 3, 40, 17, 11, 3,144, 18, 11, 3, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, - 1, 1, 19, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 54, 11, 3, 88, 54, 11, 3,200, 43, 11, 3, - 72, 49, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 43, 11, 3, -200, 0, 0, 0, 1, 0, 0, 0, 40, 45, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,192, 4, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 19, 2, 26, 0, 19, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, - 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 32,182, 62, 2,199, 0, 0, 0, 1, 0, 0, 0,224,186, 62, 2,248,177, 62, 2, + 72,165, 62, 2,160,165, 62, 2,240,164, 62, 2, 64,164, 62, 2, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, + 27, 1, 0, 0, 18, 18,251, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,185, 62, 2, 48,185, 62, 2, +192,182, 62, 2,248,183, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +192,182, 62, 2,200, 0, 0, 0, 1, 0, 0, 0,248,183, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 40, 45, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,136, 46, 11, 3,200, 43, 11, 3, 0, 0, 0, 0, - 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0, -160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,250, 0, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,183, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192,182, 62, 2, + 0, 0, 0, 0, 0, 0,253, 67, 0, 0, 0, 0, 0, 0, 48, 65, 0, 0, 0, 0, 0, 0,245, 67, 0, 0, 0, 0, 0, 0,129, 67, +234, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,233, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,251, 1, 2, 1,234, 1, 2, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136, 46, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, -232, 47, 11, 3, 40, 45, 11, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, - 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, -120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0, 48,185, 62, 2,181, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,224,186, 62, 2, +199, 0, 0, 0, 1, 0, 0, 0, 88,198, 62, 2, 32,182, 62, 2,160,165, 62, 2,168,166, 62, 2,232,163, 62, 2,240,164, 62, 2, + 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 1, 1,251, 1,158, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32,197, 62, 2, 32,197, 62, 2,128,187, 62, 2, 96,192, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,187, 62, 2,200, 0, 0, 0, 1, 0, 0, 0,184,188, 62, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,188, 62, 2, +200, 0, 0, 0, 1, 0, 0, 0,240,189, 62, 2,128,187, 62, 2, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0, +249, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,132, 1, + 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,240,189, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 40,191, 62, 2,184,188, 62, 2, 0, 0, 0, 0, + 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0, +160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40,191, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, + 96,192, 62, 2,240,189, 62, 2, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, +122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243, 3, 0, 0,243, 3, 0, 0, 55, 1, 0, 0, +186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -232, 47, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 72, 49, 11, 3,136, 46, 11, 3, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,184,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, -129, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, -129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,130, 1,163, 0,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 4, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72, 49, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232, 47, 11, 3, + 96,192, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,191, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +251, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 50, 11, 3, 68, 65, 84, 65, 72, 3, 0, 0,168, 50, 11, 3,159, 0, 0, 0, - 1, 0, 0, 0, 37,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249,173,116, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, - 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, - 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, - 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, 56, 53,101, 63, - 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, 77,255,170, 64, - 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63, -149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65, -152, 9, 52, 65, 80, 25,195, 62,218,249,206, 62, 0,237,196,187, 0, 0, 96,179,234, 2,170,189,191, 98,167, 61, 1,208,111, 62, - 0, 0,224, 49,254,120, 21,194,182, 5, 2, 66, 70,136,213,193,239,214,159,192, 5, 39, 19, 66, 15,174,255,193,217,101,210, 65, -219, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, - 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, - 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63, -149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65, -152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152,193, 62, 2, 68, 65, 84, 65, 72, 3, 0, 0,152,193, 62, 2,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,240,182, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190, +184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63, +176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, + 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62,242,252, 18,191, +222,160, 81,191,184,158, 81,191,117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63, +129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, + 0,247, 70,188, 0,192, 32,182, 15,232,143,190,210,186, 10, 62, 44, 83, 32, 63, 0,192, 24, 54,215,104, 25,196,133,132,135, 67, + 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,158, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190, +184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62,242,252, 18,191, +222,160, 81,191,184,158, 81,191,117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63, +129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, - 0, 0, 0, 0,223, 34, 9, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190, +237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,138, 93,108, 59, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 32,197, 62, 2,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,192, 78, 63, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, + 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 88,198, 62, 2,199, 0, 0, 0, 1, 0, 0, 0, + 24,203, 62, 2,224,186, 62, 2,216,161, 62, 2,152,164, 62, 2,160,165, 62, 2, 72,165, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, +247, 1, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,248, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +104,201, 62, 2,104,201, 62, 2,248,198, 62, 2, 48,200, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,248,198, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 48,200, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,231, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,200, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,248,198, 62, 2, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0, 65, 67, 0, 0, 0, 0, 0,128,243, 67, + 0, 0, 0, 0, 0, 0,129, 67,231, 1, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,248, 1, + 2, 1,231, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 26, 0, 0, 0, + 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0, +104,201, 62, 2,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,121,116,104,111,110, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0, 24,203, 62, 2,199, 0, 0, 0, 1, 0, 0, 0,152,208, 62, 2, 88,198, 62, 2,248,165, 62, 2,232,163, 62, 2, +144,163, 62, 2, 80,166, 62, 2, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0,186, 2, 0, 0, 3, 3, 10, 1, +174, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,206, 62, 2, 40,206, 62, 2,184,203, 62, 2,240,204, 62, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,203, 62, 2,200, 0, 0, 0, + 1, 0, 0, 0,240,204, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0,133, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,149, 67, + 0, 0,200, 65, 0,128,149, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0, 10, 1, 26, 0, 10, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, + 13, 2, 0, 0, 38, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88, 54, 11, 3,160, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0,192, 34, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -184, 55, 11, 3,199, 0, 0, 0, 1, 0, 0, 0,152, 60, 11, 3, 0, 43, 11, 3,176, 16, 11, 3, 88, 14, 11, 3, 56, 16, 11, 3, - 40, 17, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 16, 16, 20, 4,166, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 59, 11, 3, 64, 59, 11, 3,128, 56, 11, 3,224, 57, 11, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 56, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, -224, 57, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, - 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, - 26, 0, 20, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0, - 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -224, 57, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 56, 11, 3, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, - 0, 0, 0, 68,110,142,241,195, 55,199,120, 68,240, 80,128,193,136, 2, 4, 68, 3, 4, 0, 0, 20, 4, 0, 0, 18, 0, 0, 0, -139, 1, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 18, 0, 0, 0, -139, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,236, 81,184, 61, 10,215, 19, 64, 10, 0, 0, 0, - 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 20, 4,140, 1, 3, 4,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 4,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,244, 0, 0, 0, 64, 59, 11, 3,177, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 61,181, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,152, 60, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,184, 55, 11, 3,120, 12, 11, 3,176, 16, 11, 3,160, 17, 11, 3, 24, 18, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, -255, 1, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 6, 6, 0, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 65, 11, 3,128, 65, 11, 3, 96, 61, 11, 3, 32, 64, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 96, 61, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,192, 62, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 2, 26, 0, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192, 62, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, - 32, 64, 11, 3, 96, 61, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, - 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 32, 64, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192, 62, 11, 3, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0,191, 0, 0,192, 63, 0, 0, 64, 60, 0, 0,125, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, -250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 1, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0,128, 65, 11, 3,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, - 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,152, 99, 11, 3,195, 0, 0, 0, - 1, 0, 0, 0, 64, 30, 12, 3,136, 11, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,100, 11, 3,176,105, 11, 3, - 40,106, 11, 3,168,114, 11, 3, 40,115, 11, 3, 80,195, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,116,170, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,100, 11, 3,196, 0, 0, 0, - 1, 0, 0, 0, 0,101, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 0,101, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,120,101, 11, 3,136,100, 11, 3, 0, 0, 0, 0, 0, 0,202, 3, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,120,101, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,240,101, 11, 3, 0,101, 11, 3, 0, 0, 0, 0, -136, 6,202, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,101, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,104,102, 11, 3, -120,101, 11, 3, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,102, 11, 3,196, 0, 0, 0, - 1, 0, 0, 0,224,102, 11, 3,240,101, 11, 3, 0, 0, 0, 0, 0, 0,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -224,102, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 88,103, 11, 3,104,102, 11, 3, 0, 0, 0, 0,136, 6,175, 3, 1, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 88,103, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,208,103, 11, 3,224,102, 11, 3, 0, 0, 0, 0, -108, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208,103, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 72,104, 11, 3, - 88,103, 11, 3, 0, 0, 0, 0,108, 5,175, 3, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 72,104, 11, 3,196, 0, 0, 0, - 1, 0, 0, 0,192,104, 11, 3,208,103, 11, 3, 0, 0, 0, 0,108, 5, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -192,104, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 56,105, 11, 3, 72,104, 11, 3, 0, 0, 0, 0,136, 6, 4, 3, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 56,105, 11, 3,196, 0, 0, 0, 1, 0, 0, 0,176,105, 11, 3,192,104, 11, 3, 0, 0, 0, 0, - 0, 0, 80, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,105, 11, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 56,105, 11, 3, 0, 0, 0, 0,108, 5, 80, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,106, 11, 3,197, 0, 0, 0, - 1, 0, 0, 0,168,106, 11, 3, 0, 0, 0, 0, 0,101, 11, 3,120,101, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,168,106, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,107, 11, 3, 40,106, 11, 3, 0,101, 11, 3,104,102, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,107, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,168,107, 11, 3, -168,106, 11, 3,120,101, 11, 3,224,102, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,107, 11, 3, -197, 0, 0, 0, 1, 0, 0, 0, 40,108, 11, 3, 40,107, 11, 3,104,102, 11, 3,224,102, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 40,108, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,168,108, 11, 3,168,107, 11, 3,136,100, 11, 3, - 88,103, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,108, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, - 40,109, 11, 3, 40,108, 11, 3,240,101, 11, 3, 88,103, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 40,109, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,168,109, 11, 3,168,108, 11, 3,104,102, 11, 3,208,103, 11, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,109, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,110, 11, 3, 40,109, 11, 3, -224,102, 11, 3,208,103, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,110, 11, 3,197, 0, 0, 0, - 1, 0, 0, 0,168,110, 11, 3,168,109, 11, 3, 88,103, 11, 3, 72,104, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,168,110, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,111, 11, 3, 40,110, 11, 3,208,103, 11, 3, 72,104, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,111, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,168,111, 11, 3, -168,110, 11, 3,224,102, 11, 3,192,104, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,111, 11, 3, -197, 0, 0, 0, 1, 0, 0, 0, 40,112, 11, 3, 40,111, 11, 3,240,101, 11, 3,192,104, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 40,112, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,168,112, 11, 3,168,111, 11, 3, 72,104, 11, 3, -192,104, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,112, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, - 40,113, 11, 3, 40,112, 11, 3,136,100, 11, 3, 56,105, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 40,113, 11, 3,197, 0, 0, 0, 1, 0, 0, 0,168,113, 11, 3,168,112, 11, 3,104,102, 11, 3, 56,105, 11, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,113, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,114, 11, 3, 40,113, 11, 3, -208,103, 11, 3,176,105, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,114, 11, 3,197, 0, 0, 0, - 1, 0, 0, 0,168,114, 11, 3,168,113, 11, 3, 88,103, 11, 3,176,105, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,168,114, 11, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,114, 11, 3, 56,105, 11, 3,176,105, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 40,115, 11, 3,199, 0, 0, 0, 1, 0, 0, 0,176,118, 11, 3, - 0, 0, 0, 0,104,102, 11, 3, 0,101, 11, 3,120,101, 11, 3,224,102, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, -176, 3, 0, 0,202, 3, 0, 0, 7, 7,137, 6, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 8, 0,240,187,245, 2,168, 29, 12, 3, -168, 29, 12, 3,240,115, 11, 3, 80,117, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,200, 5,104, 3,240, 50, 5, 3, 68, 65, 84, 65, -248, 0, 0, 0,240,115, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 80,117, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,147, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,176, 3, 0, 0,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,137, 6, 26, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160,189,245, 2,160,255,105, 3,160,255,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 96, 59,104, 3, 80,154, 9, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,117, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -240,115, 11, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, - 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 3, 0, 0,202, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,188,245, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,176,118, 11, 3, -199, 0, 0, 0, 1, 0, 0, 0, 64,184, 11, 3, 40,115, 11, 3, 88,103, 11, 3, 72,104, 11, 3,192,104, 11, 3,240,101, 11, 3, - 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 4, 4, 28, 1, 4, 3, 1, 0, 0, 0, 0, 0, - 0, 0, 8, 0, 40,184,245, 2,224,176, 11, 3,160,183, 11, 3,120,119, 11, 3,216,120, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, -104,243,244, 2, 80, 41, 73, 3, 68, 65, 84, 65,248, 0, 0, 0,120,119, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,216,120, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,142, 67, 0, 0, 0, 0, - 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 28, 1, 31, 0, 28, 1, - 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0,229, 2, 0, 0, 3, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,187,245, 2,192, 80,108, 3,192, 80,108, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 8, 12,245, 2, 64,159, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,120, 11, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120,119, 11, 3, 0, 0, 0, 0, 0, 0,142, 67, 0,128, 86,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,133, 67, 0, 64, 57,196, 0, 0, 0, 0, 11, 1, 0, 0, 28, 1, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, - 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0, 28, 1,229, 2, 11, 1,229, 2, 0, 0,160, 5, 91, 3, 1, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0, -136, 6, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1,229, 2, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,185,245, 2, -104,140,124, 3, 96, 88, 92, 3, 56,122, 11, 3, 56,175, 11, 3,176,219, 91, 3,104,164, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0, 56,122, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,224,123, 11, 3, 0, 0, 0, 0,216,185,245, 2, - 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,220,255, 11, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,224,123, 11, 3, -198, 0, 0, 0, 1, 0, 0, 0,136,125, 11, 3, 56,122, 11, 3,136,169, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 11, 1, 61, 0, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,136,125, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 48,127, 11, 3, -224,123, 11, 3,160,171, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, - 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 48,127, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,216,128, 11, 3,136,125, 11, 3,184,173, 3, 3, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,140,254, 11, 1,203, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,216,128, 11, 3,198, 0, 0, 0, - 1, 0, 0, 0,128,130, 11, 3, 48,127, 11, 3,208,175, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110, -116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110, -116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254, 11, 1, 58, 0, 20, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,128,130, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 40,132, 11, 3,216,128, 11, 3, -232,177, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 70,117,108,108, 32, 83, 97,109,112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254, 11, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 40,132, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,208,133, 11, 3,128,130, 11, 3, 0,180, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100, -105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,253, - 11, 1,102, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208,133, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, -120,135, 11, 3, 40,132, 11, 3, 24,182, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,253, 11, 1,130, 0, 0, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,120,135, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 32,137, 11, 3,208,133, 11, 3, 72,186, 3, 3, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,242,252, 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32,137, 11, 3, -198, 0, 0, 0, 1, 0, 0, 0,200,138, 11, 3,120,135, 11, 3, 96,188, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, - 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218,252, 11, 1, 0, 0, - 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,200,138, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,112,140, 11, 3, - 32,137, 11, 3,120,190, 3, 3, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,252, 11, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, - 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,112,140, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 24,142, 11, 3,200,138, 11, 3,144,192, 3, 3, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,170,252, 11, 1, 0, 0, 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 24,142, 11, 3,198, 0, 0, 0, - 1, 0, 0, 0,192,143, 11, 3,112,140, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99, -111,110,116,101,120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99, -111,110,116,101,120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41,255, 7, 1,179, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,192,143, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,104,145, 11, 3, 24,142, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102,254, 7, 1,171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -104,145, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 16,147, 11, 3,192,143, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,110,102,108, -117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,253, - 7, 1, 36, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 16,147, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, -184,148, 11, 3,104,145, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111, -109, 95,112,114,111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,117,115,116,111, -109, 95,112,114,111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,117,115,116,111,109, 32, 80,114,111,112,101,114,116,105,101, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,253, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,184,148, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 96,150, 11, 3, 16,147, 11, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 87,254, 7, 1,186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 96,150, 11, 3, -198, 0, 0, 0, 1, 0, 0, 0, 8,152, 11, 3,184,148, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,253, 7, 1, 36, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 8,152, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,176,153, 11, 3, - 96,150, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109, -112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,115, 97,109, -112,108,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,109, 97,103,101, 32, 83, 97,109,112,108,105,110,103, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,252, 7, 1,212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,176,153, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 88,155, 11, 3, 8,152, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,109, 97,103,101, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 73,109, 97,103,101, 32, 77, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,251, 7, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 88,155, 11, 3,198, 0, 0, 0, - 1, 0, 0, 0, 0,157, 11, 3,176,153, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99, -111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99, -111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108,111,114,115, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,254, 7, 1, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 0,157, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,168,158, 11, 3, 88,155, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 67,108,111,117,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161,253, 7, 1,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -168,158, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 80,160, 11, 3, 0,157, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95,119,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95,119,111,111,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,111,111,100, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139,253, - 7, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80,160, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, -248,161, 11, 3,168,158, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,108,117,103,105, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,108,117,103,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,248,161, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,160,163, 11, 3, 80,160, 11, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,118,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86,111,114,111,110,111,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,123,253, 7, 1,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,160,163, 11, 3, -198, 0, 0, 0, 1, 0, 0, 0, 72,165, 11, 3,248,161, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,112,111,105,110,116,100,101,110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,105,110,116, 32, 68,101, -110,115,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,253, 7, 1,179, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 72,165, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,240,166, 11, 3, -160,163, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115, -105,116,121, 95,116,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,112,111,105,110,116,100,101,110,115, -105,116,121, 95,116,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,117,114, 98,117,108,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,253, 7, 1,102, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,240,166, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,152,168, 11, 3, 72,165, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 77,117,115,103,114, 97,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,139,253, 7, 1,180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,152,168, 11, 3,198, 0, 0, 0, - 1, 0, 0, 0, 64,170, 11, 3,240,166, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, - 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, - 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,114, 98,108,101, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,253, 7, 1,183, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 64,170, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,232,171, 11, 3,152,168, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,103,105, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,254, 7, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -232,171, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,144,173, 11, 3, 64,170, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95,100,105,115,116,111,114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, - 85, 82, 69, 95, 80, 84, 95,100,105,115,116,111,114,116,101,100,110,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,116, -111,114,116,101,100, 32, 78,111,105,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211,253, - 7, 1,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,144,173, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, - 56,175, 11, 3,232,171, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 98,108,101,110,100, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,108,101,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,254, 7, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0, 56,175, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144,173, 11, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,115,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83,116,117, 99, 99,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,183,253, 7, 1,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,224,176, 11, 3, -165, 0, 0, 0, 1, 0, 0, 0,160,183, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 88,161, 91, 3,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 32,178, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,128,179, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 51, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,179, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, -224,180, 11, 3, 32,178, 11, 3, 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, - 0, 64,101,196, 0, 0, 0, 0,223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0, -149, 3,223, 0,149, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0, -148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -224,180, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 64,182, 11, 3,128,179, 11, 3, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, - 0, 0,112, 66, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, - 59, 0, 0, 0, 0, 0,179, 68, 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,153, 5, 60, 0,153, 5, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 0, 0, 0,136, 6, 0, 0, 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 5, 60, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,182, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224,180, 11, 3, - 0, 0, 0, 0, 0,128,175, 68, 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0, -136, 5, 0, 0,153, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 2, 0, 3, 3, 2, 0, 0, 4, 6, 0,153, 5, 89, 3,136, 5, 89, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0,160,183, 11, 3,168, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,224,176, 11, 3, 32,178, 11, 3, 64,182, 11, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0, 64,184, 11, 3,199, 0, 0, 0, 1, 0, 0, 0,232,188, 11, 3,176,118, 11, 3,136,100, 11, 3, - 56,105, 11, 3,176,105, 11, 3, 88,103, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, - 15, 15,108, 5, 80, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,147,245, 2,200,187, 11, 3,200,187, 11, 3, 8,185, 11, 3, -104,186, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0,128, 26,104, 3,232,149, 9, 3, 68, 65, 84, 65,248, 0, 0, 0, 8,185, 11, 3, -200, 0, 0, 0, 1, 0, 0, 0,104,186, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,137, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,128,173, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,108, 5, 26, 0,108, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 26, 0, - 5, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,149,245, 2, - 0, 24,120, 3, 0, 24,120, 3, 0, 0, 0, 0, 0, 0, 0, 0, 48,157, 9, 3, 88,169, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,104,186, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8,185, 11, 3, 0, 0, 64,192, - 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -107, 5, 0, 0, 18, 0, 0, 0, 53, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, - 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,108, 5, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 26, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 54, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104,148,245, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,170, 10, 3, -160,175, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0,200,187, 11, 3,176, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,232,188, 11, 3,199, 0, 0, 0, 1, 0, 0, 0, 80,195, 11, 3, 64,184, 11, 3, 72,104, 11, 3,208,103, 11, 3, -224,102, 11, 3,192,104, 11, 3, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, 5, 3, 0, 0,174, 3, 0, 0, 3, 3, 28, 1, -170, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,145,245, 2,112,192, 11, 3,112,192, 11, 3,176,189, 11, 3, 16,191, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0,200,160, 10, 3, 24, 14,245, 2, 68, 65, 84, 65,248, 0, 0, 0,176,189, 11, 3,200, 0, 0, 0, - 1, 0, 0, 0, 16,191, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0,142, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, - 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0, 28, 1, 26, 0, 28, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, -149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 26, 0, 7, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,146,245, 2,136,253,103, 3, -136,253,103, 3, 0, 0, 0, 0, 0, 0, 0, 0,128,178, 10, 3,144,180, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 16,191, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,189, 11, 3, 0, 0, 0, 0, 0,128,131, 67, - 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,133, 67, 0, 0,252,194, 0, 0, 0, 0, 11, 1, 0, 0, 28, 1, 0, 0, - 18, 0, 0, 0,143, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, - 18, 0, 0, 0,143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 18, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 28, 1,144, 0, 11, 1,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,109, 5, 0, 0,136, 6, 0, 0, 5, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 28, 1,144, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,248,145,245, 2, 56,169,111, 7, 56,169,111, 7, 0, 0, 0, 0, 0, 0, 0, 0,192,181, 10, 3, 72, 64, 3, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,112,192, 11, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +248, 0, 0, 0,240,204, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,184,203, 62, 2, 0, 0, 0, 0, 0,128,131, 67, + 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 67, 0, 0, 2,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, + 18, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, + 18, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 10, 1,148, 0,249, 0,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 39, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10, 1,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0, 40,206, 62, 2,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 40,123, 3,160, 40,123, 3,208,193, 11, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,207, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, -208,193, 11, 3,223, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 64,194, 11, 3, 68, 65, 84, 65,168, 0, 0, 0, - 64,194, 11, 3,222, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,160, 9, 13, 3, 19, 0, 0, 0, 1, 0, 1, 0, -160, 9, 13, 3, 20, 0, 0, 0, 1, 0, 1, 0,160, 9, 13, 3, 21, 0, 1, 0, 1, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 96, 32, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 39, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 8,122, 14, 3, - 0, 0, 0, 0, 1, 0, 1, 0, 72, 49, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 24,215, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, - 8, 45, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 16, 28, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,192, 34, 13, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 64, 27, 13, 3, 21, 0, 0, 0, 1, 0, 1, 0,160, 9, 13, 3, 68, 65, 84, 65, 96, 0, 0, 0, 80,195, 11, 3, -199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232,188, 11, 3, 56,105, 11, 3,104,102, 11, 3,208,103, 11, 3,176,105, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 81, 0, 0, 0,174, 3, 0, 0, 1, 1,108, 5, 94, 3, 1, 0, 0, 0, 0, 0, - 0, 0, 8, 0,232,149,245, 2,216,229, 11, 3, 8, 29, 12, 3, 24,196, 11, 3,200,224, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, -168,218,103, 3, 40,226,123, 3, 68, 65, 84, 65,248, 0, 0, 0, 24,196, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,120,197, 11, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,173, 68, 0, 0, 0, 0, +104,207, 62, 2,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,184,207, 62, 2, 68, 65, 84, 65,156, 0, 0, 0, +184,207, 62, 2,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,144, 57, 63, 2, 19, 0, 0, 0, 1, 0, 1, 0, +144, 57, 63, 2, 20, 0, 0, 0, 1, 0, 1, 0,144, 57, 63, 2, 21, 0, 1, 0, 1, 0, 1, 0,144, 57, 63, 2, 0, 0, 0, 0, + 1, 0, 1, 0,176, 76, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0,224, 82, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0,216,163, 64, 2, + 0, 0, 0, 0, 1, 0, 1, 0,128, 92, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0,136, 1, 64, 2, 0, 0, 0, 0, 1, 0, 1, 0, + 96, 88, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0,248, 72, 63, 2, 0, 0, 0, 0, 1, 0, 1, 0,192, 78, 63, 2, 0, 0, 0, 0, + 1, 0, 1, 0, 80, 72, 63, 2, 68, 65, 84, 65, 96, 0, 0, 0,152,208, 62, 2,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 24,203, 62, 2,152,164, 62, 2, 56,163, 62, 2,168,166, 62, 2,160,165, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, + 29, 1, 0, 0,186, 2, 0, 0, 9, 9,248, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,211, 62, 2, +168,211, 62, 2, 56,209, 62, 2,112,210, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 56,209, 62, 2,200, 0, 0, 0, 1, 0, 0, 0,112,210, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 73, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,210, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 56,209, 62, 2, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,236,140, 21, 68, 20, 51,102, 68,120, 83, 49, 67, + 68,214,212, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,248, 1,132, 1,248, 1, +132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0,168,211, 62, 2, +172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,231, 1, 0, 0, +243, 1, 0, 0,122, 1, 0, 0,124, 1, 0, 0,231, 1, 0, 0,243, 1, 0, 0, 4, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,216,214, 62, 2,195, 0, 0, 0, 1, 0, 0, 0,200, 18, 63, 2, 8,161, 62, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,215, 62, 2, 16,218, 62, 2,104,218, 62, 2,216,221, 62, 2, 48,222, 62, 2, +224, 6, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0,144, 57, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,215, 62, 2,196, 0, 0, 0, 1, 0, 0, 0, 0,216, 62, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0,216, 62, 2,196, 0, 0, 0, 1, 0, 0, 0, + 88,216, 62, 2,168,215, 62, 2, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 88,216, 62, 2, +196, 0, 0, 0, 1, 0, 0, 0,176,216, 62, 2, 0,216, 62, 2, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0,176,216, 62, 2,196, 0, 0, 0, 1, 0, 0, 0, 8,217, 62, 2, 88,216, 62, 2, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8,217, 62, 2,196, 0, 0, 0, 1, 0, 0, 0, 96,217, 62, 2,176,216, 62, 2, + 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96,217, 62, 2,196, 0, 0, 0, 1, 0, 0, 0, +184,217, 62, 2, 8,217, 62, 2, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184,217, 62, 2, +196, 0, 0, 0, 1, 0, 0, 0, 16,218, 62, 2, 96,217, 62, 2, 0, 0, 0, 0,132, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, + 20, 0, 0, 0, 16,218, 62, 2,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,184,217, 62, 2, 0, 0, 0, 0,132, 2, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,218, 62, 2,197, 0, 0, 0, 1, 0, 0, 0,192,218, 62, 2, 0, 0, 0, 0, + 0,216, 62, 2, 88,216, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192,218, 62, 2,197, 0, 0, 0, + 1, 0, 0, 0, 24,219, 62, 2,104,218, 62, 2, 0,216, 62, 2, 8,217, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 24,219, 62, 2,197, 0, 0, 0, 1, 0, 0, 0,112,219, 62, 2,192,218, 62, 2, 88,216, 62, 2, 96,217, 62, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,219, 62, 2,197, 0, 0, 0, 1, 0, 0, 0,200,219, 62, 2, + 24,219, 62, 2, 8,217, 62, 2, 96,217, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,219, 62, 2, +197, 0, 0, 0, 1, 0, 0, 0, 32,220, 62, 2,112,219, 62, 2, 8,217, 62, 2,184,217, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 32,220, 62, 2,197, 0, 0, 0, 1, 0, 0, 0,120,220, 62, 2,200,219, 62, 2,168,215, 62, 2, + 16,218, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,220, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, +208,220, 62, 2, 32,220, 62, 2,168,215, 62, 2, 8,217, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +208,220, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, 40,221, 62, 2,120,220, 62, 2,184,217, 62, 2, 16,218, 62, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,221, 62, 2,197, 0, 0, 0, 1, 0, 0, 0,128,221, 62, 2,208,220, 62, 2, + 96,217, 62, 2,184,217, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,128,221, 62, 2,197, 0, 0, 0, + 1, 0, 0, 0,216,221, 62, 2, 40,221, 62, 2,176,216, 62, 2, 16,218, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,216,221, 62, 2,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128,221, 62, 2,176,216, 62, 2, 96,217, 62, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 48,222, 62, 2,199, 0, 0, 0, 1, 0, 0, 0, 64,225, 62, 2, + 0, 0, 0, 0, 8,217, 62, 2, 0,216, 62, 2, 88,216, 62, 2, 96,217, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, +188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 88, 18, 63, 2, + 88, 18, 63, 2,208,222, 62, 2, 8,224, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,208,222, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 8,224, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,224, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +208,222, 62, 2, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, + 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 64,225, 62, 2, +199, 0, 0, 0, 1, 0, 0, 0,224, 6, 63, 2, 48,222, 62, 2,168,215, 62, 2, 8,217, 62, 2,184,217, 62, 2, 16,218, 62, 2, + 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 6, 6,132, 2,187, 2, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,136,229, 62, 2,136,229, 62, 2,224,225, 62, 2, 80,228, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,225, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 24,227, 62, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 33, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,108, 5, 26, 0,108, 5, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0, 81, 0, 0, 0,106, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 5, 26, 0, 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,159,245, 2,216,160,109, 3,216,160,109, 3, 0, 0, 0, 0, - 0, 0, 0, 0,216, 68, 3, 3, 96, 72, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,197, 11, 3, -200, 0, 0, 0, 1, 0, 0, 0, 96,220, 11, 3, 24,196, 11, 3, 0, 0, 0, 0, 0, 0, 32, 67, 0, 0, 27,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67, 0, 0, 27,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,107, 2, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,107, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,132, 2, 26, 0,132, 2, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24,227, 62, 2, +200, 0, 0, 0, 1, 0, 0, 0, 80,228, 62, 2,224,225, 62, 2, 0, 0, 0, 0, 0, 0, 91, 67, 0, 0, 40,196, 0, 0, 0, 0, + 0, 0, 0, 0,254,255, 74, 67,254, 63, 40,196, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, + 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,160, 0,108, 2,143, 0,108, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -159, 0, 0, 0, 67, 1, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,108, 2, - 10, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0,160, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,156,245, 2, -160, 61, 93, 3,160, 61, 93, 3,216,198, 11, 3,184,218, 11, 3,144, 73, 3, 3,160, 75, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,216,198, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,128,200, 11, 3, 0, 0, 0, 0, 72, 96, 9, 3, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, + 18, 0, 0, 4, 6, 0,220, 0,161, 2,203, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +219, 0, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,161, 2, + 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0, 80,228, 62, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 24,227, 62, 2, 0, 0, 0, 0, + 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67,102,102, 38,190,205,204,148, 63, 51, 51, 13,191,154,153,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +168, 1, 0, 0, 0, 0, 0, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 42,254,143, 0,190, 1, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0,131, 2, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,168, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,128,200, 11, 3, -198, 0, 0, 0, 1, 0, 0, 0, 40,202, 11, 3,216,198, 11, 3,104,121, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,114,117,115,104, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117,254,143, 0,115, 1, - 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 40,202, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,208,203, 11, 3, -128,200, 11, 3,128,123, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115, -104, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115, -104, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,252,143, 0,213, 1, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,208,203, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,120,205, 11, 3, 40,202, 11, 3,152,125, 9, 3, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,154,253,143, 0,195, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,120,205, 11, 3,198, 0, 0, 0, - 1, 0, 0, 0, 32,207, 11, 3,208,203, 11, 3,176,127, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95, 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95, 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94,253,143, 0,231, 0, 0, 0, 0, 0, - 4, 0, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32,207, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,200,208, 11, 3,120,205, 11, 3, -200,129, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112, -112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112, -112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,186,253,143, 0, 91, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -200,208, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,112,210, 11, 3, 32,207, 11, 3,224,131, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193,253, -143, 0, 36, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,112,210, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, - 24,212, 11, 3,200,208, 11, 3,248,133, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, - 95,115,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, - 95,115,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,253,143, 0,225, 0, 0, 0, 0, 0, 4, 0, 4, 0, - 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0, 24,212, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,192,213, 11, 3,112,210, 11, 3, 16,136, 9, 3, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 73,253,143, 0,132, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,192,213, 11, 3, -198, 0, 0, 0, 1, 0, 0, 0,104,215, 11, 3, 24,212, 11, 3, 48, 94, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,101,105,103,104,116, 32, 84, -111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,254,143, 0,124, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,104,215, 11, 3,198, 0, 0, 0, 1, 0, 0, 0, 16,217, 11, 3, -192,213, 11, 3, 64,140, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103, -104,116,112, 97,105,110,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103, -104,116,112, 97,105,110,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123,253,143, 0,124, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 16,217, 11, 3,198, 0, 0, 0, 1, 0, 0, 0,184,218, 11, 3,104,215, 11, 3, 88,142, 9, 3, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,114,111,106,101, 99,116, 32, 80, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,241,252,143, 0, 9, 1, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,184,218, 11, 3,198, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 16,217, 11, 3, 40,138, 9, 3, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95,118,101,114,116,101,120,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95,118,101,114,116,101,120,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,254,143, 0, 80, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,220, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,104,223, 11, 3,120,197, 11, 3, - 0, 0, 0, 0, 0, 0, 33, 67, 0, 0, 90,195, 0, 0, 0, 0, 0, 0, 0, 0,227,102, 16, 67, 24, 30, 90,195, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,216, 0,143, 0,216, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,107, 0, 0, 0, 66, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,216, 0, 11, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,157,245, 2,232,179,129, 3,232,179,129, 3,192,221, 11, 3,192,221, 11, 3, -208, 76, 3, 3,224, 78, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,192,221, 11, 3,198, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,157,245, 2, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97, -115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97, -115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 32, 80, 97,105,110, -116, 32, 84,111,103,103,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,255,144, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104,223, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,200,224, 11, 3, 96,220, 11, 3, - 0, 0, 0, 0, 0, 0, 52, 67, 0,192,115,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,115,196, 0, 0, 0, 0, -163, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,207, 3,163, 0,207, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 5, 0, 0,107, 5, 0, 0,107, 0, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,151,245, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200,224, 11, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,104,223, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 0, 0,107, 5, 0, 0, -107, 0, 0, 0,174, 3, 0, 0,160, 0, 0, 0,107, 5, 0, 0,107, 0, 0, 0,174, 3, 0, 0,204, 4, 68, 3, 12, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,150,245, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,107, 3, 3, 48,107, 3, 3, 0, 0, 0, 0, 40,226, 11, 3, 68, 65, 84, 65, - 72, 3, 0, 0, 40,226, 11, 3,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 92,165,205, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0,218,205, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,158,210,111,193, 0, 0,128, 63, 68,239,209, 62, 70,119,105, 63,192, 84, 89,188, 0, 0, 0, 0, - 53,177,205,190,144, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 42, 61,228, 62, 0, 0, 0, 0, -164, 95, 68, 65,141,120,173,192,225,208,213, 64, 0, 0,128, 63,178,157,229, 62,195, 59, 37,191,222,160, 81,191,184,158, 81,191, -117, 90,127, 63,202, 73,159, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,243, 15,184, 63,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0,220,161,108, 65,158,210,111, 65,130,240,191, 62,104,116, 85, 63, 16,183, 70,188, 0, 0, 0,180, - 24, 7,128,190,175,215,246, 61, 76,158, 14, 63, 0, 0, 56, 52,230,117,117,194, 58,213,216, 65,167,161, 5,194,236,254,159,192, -240, 49,114, 66,195,242,213,193,140,218, 3, 66,145, 0,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,158,210,111,193, 0, 0,128, 63,178,157,229, 62,195, 59, 37,191,222,160, 81,191,184,158, 81,191, -117, 90,127, 63,202, 73,159, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,243, 15,184, 63,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0,220,161,108, 65,158,210,111, 65, 86, 68,214, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 68,214, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 68,214, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, -158,210,111, 65,162,123, 94, 65, 0, 0, 0, 0, 0, 0, 0, 0,184, 44,195, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 30, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -216,229, 11, 3,160, 0, 0, 0, 1, 0, 0, 0,248,233, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,192, 34, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 24, - 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 64,156, 69, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,231, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,152,232, 11, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0,192, 48, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,197, 68, 0, 0,200, 65, 0,224,197, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,232, 11, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 56,231, 11, 3, 0, 0, 0, 0, 0,128,241, 67, 0,128, 90,196, 0, 0, 0, 0, 0, 0, 0, 0, - 0,224,195, 68, 0, 64,111,196, 0, 0, 0, 0, 31, 6, 0, 0, 48, 6, 0, 0, 18, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, - 30, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 30, 6, 0, 0, 18, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, - 6, 0, 48, 6,207, 3, 31, 6,189, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, -119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,207, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -252, 0, 0, 0,248,233, 11, 3,169, 0, 0, 0, 1, 0, 0, 0, 8,246, 11, 3,216,229, 11, 3, 56,231, 11, 3,152,232, 11, 3, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,235, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 11, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 88,235, 11, 3,223, 0, 0, 0, 1, 0, 0, 0, - 93, 0, 0, 0, 93, 0, 0, 0,200,235, 11, 3, 68, 65, 84, 65, 92, 4, 0, 0,200,235, 11, 3,222, 0, 0, 0, 93, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160, 9, 13, 3, 19, 0, 0, 0, 1, 0, 0, 0,160, 9, 13, 3, 20, 0, 0, 0, 1, 0, 0, 0, -160, 9, 13, 3, 21, 0, 0, 0, 1, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 96, 32, 13, 3, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 39, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 8,122, 14, 3, 0, 0, 0, 0, 1, 0, 0, 0, 72, 49, 13, 3, - 0, 0, 0, 0, 1, 0, 0, 0, 24,215, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 8, 45, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, - 16, 28, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,192, 34, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 64, 27, 13, 3, 30, 0,255,255, - 0, 0, 1, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 31, 0, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 7, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 31, 0, 10, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 11, 0, 0, 0, 1, 0, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 15, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 31, 0, 18, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 23, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 31, 0, 26, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 1, 0, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, - 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, - 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, - 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, - 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, - 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 1, 0, - 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 2, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 10, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 13, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 18, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 26, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 29, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,136,240, 11, 3,200, 0, 0, 0, 1, 0, 0, 0,232,241, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,197, 68, 0, 0,200, 65, 0,224,197, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232,241, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 72,243, 11, 3, -136,240, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,243, 11, 3, -200, 0, 0, 0, 1, 0, 0, 0,168,244, 11, 3,232,241, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, - 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 7, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,168,244, 11, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72,243, 11, 3, 0, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 38,192, 0, 0,102, 64, 0,192,179,191, 0,224, 25, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 6, 0, 0, 0, 0, 0, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0, 8,246, 11, 3,170, 0, 0, 0, 1, 0, 0, 0, - 8, 29, 12, 3,248,233, 11, 3,136,240, 11, 3,168,244, 11, 3, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 33, 0, 0,136,229, 62, 2,170, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2083,458 +3088,71 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -136, 23, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,232, 24, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 32,209, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0,209, 68, 0, 0,200, 65, 0, 0,209, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,137, 6, 26, 0,137, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,136, 6, 0, 0,149, 3, 0, 0,174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -137, 6, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232, 24, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 72, 26, 12, 3,136, 23, 12, 3, - 0, 0, 0, 0, 0, 0,112, 67, 0, 64,101,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 67, 0, 64,101,196, 0, 0, 0, 0, -223, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,240, 0,149, 3,223, 0,149, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 0, 0, 0, 0, 0, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0,149, 3, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72, 26, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0,168, 27, 12, 3,232, 24, 12, 3, 0, 0, 0, 0, 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, - 0, 32,179, 68, 0, 0, 0, 0, 0, 0,112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,179, 68, - 0, 0,108, 66, 0, 0,179, 68, 0, 0,108, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,153, 5, 60, 0,153, 5, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, - 89, 3, 0, 0,148, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 60, 0, 0, 0, 4, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,168, 27, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72, 26, 12, 3, 0, 0, 0, 0, 0,128,175, 68, - 0, 0,137,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 68, 0, 64, 86,196, 0, 0, 0, 0,136, 5, 0, 0,153, 5, 0, 0, - 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,135, 5, 0, 0, - 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 2, 2, 0, 0, 2, 0, 3, 3, 2, 0, 0, 4, 6, 0,153, 5, 89, 3,136, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240, 0, 0, 0,136, 6, 0, 0, 0, 0, 0, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,153, 5, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 60, 0, 0, 0, 8, 29, 12, 3,168, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 8,246, 11, 3,136, 23, 12, 3,168, 27, 12, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,255,255,255,255, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, - 64, 30, 12, 3,195, 0, 0, 0, 1, 0, 0, 0, 48, 88, 12, 3,152, 99, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97, -109,101, 32, 76,111,103,105, 99, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 31, 12, 3, 72, 37, 12, 3,192, 37, 12, 3,192, 47, 12, 3, 72, 48, 12, 3, 64, 81, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, -160, 9, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 48, 31, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,168, 31, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,168, 31, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 32, 32, 12, 3, 48, 31, 12, 3, 0, 0, 0, 0, - 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 32, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,152, 32, 12, 3, -168, 31, 12, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152, 32, 12, 3,196, 0, 0, 0, - 1, 0, 0, 0, 16, 33, 12, 3, 32, 32, 12, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 16, 33, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,136, 33, 12, 3,152, 32, 12, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,136, 33, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 34, 12, 3, 16, 33, 12, 3, 0, 0, 0, 0, -254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 34, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,120, 34, 12, 3, -136, 33, 12, 3, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120, 34, 12, 3,196, 0, 0, 0, - 1, 0, 0, 0,240, 34, 12, 3, 0, 34, 12, 3, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -240, 34, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,104, 35, 12, 3,120, 34, 12, 3, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,104, 35, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,224, 35, 12, 3,240, 34, 12, 3, 0, 0, 0, 0, -254, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224, 35, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 88, 36, 12, 3, -104, 35, 12, 3, 0, 0, 0, 0,124, 3, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 88, 36, 12, 3,196, 0, 0, 0, - 1, 0, 0, 0,208, 36, 12, 3,224, 35, 12, 3, 0, 0, 0, 0,124, 3,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -208, 36, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 72, 37, 12, 3, 88, 36, 12, 3, 0, 0, 0, 0,212, 0, 20, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 72, 37, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 36, 12, 3, 0, 0, 0, 0, -212, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 37, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 38, 12, 3, - 0, 0, 0, 0,168, 31, 12, 3, 32, 32, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 38, 12, 3, -197, 0, 0, 0, 1, 0, 0, 0,192, 38, 12, 3,192, 37, 12, 3,168, 31, 12, 3, 16, 33, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,192, 38, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 39, 12, 3, 64, 38, 12, 3, 32, 32, 12, 3, -136, 33, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 39, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, -192, 39, 12, 3,192, 38, 12, 3, 16, 33, 12, 3,136, 33, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -192, 39, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 40, 12, 3, 64, 39, 12, 3, 16, 33, 12, 3, 0, 34, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 40, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 40, 12, 3,192, 39, 12, 3, - 0, 34, 12, 3,120, 34, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 40, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0, 64, 41, 12, 3, 64, 40, 12, 3,152, 32, 12, 3,240, 34, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 64, 41, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 41, 12, 3,192, 40, 12, 3,120, 34, 12, 3,240, 34, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 41, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 42, 12, 3, - 64, 41, 12, 3, 48, 31, 12, 3, 0, 34, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 42, 12, 3, -197, 0, 0, 0, 1, 0, 0, 0,192, 42, 12, 3,192, 41, 12, 3, 48, 31, 12, 3,240, 34, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,192, 42, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 43, 12, 3, 64, 42, 12, 3,136, 33, 12, 3, -104, 35, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 43, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, -192, 43, 12, 3,192, 42, 12, 3,152, 32, 12, 3,104, 35, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -192, 43, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 44, 12, 3, 64, 43, 12, 3,120, 34, 12, 3,104, 35, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 44, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 44, 12, 3,192, 43, 12, 3, -224, 35, 12, 3, 88, 36, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 44, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0, 64, 45, 12, 3, 64, 44, 12, 3,136, 33, 12, 3, 88, 36, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 64, 45, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,192, 45, 12, 3,192, 44, 12, 3,104, 35, 12, 3,224, 35, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 45, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 46, 12, 3, - 64, 45, 12, 3, 0, 34, 12, 3,208, 36, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 46, 12, 3, -197, 0, 0, 0, 1, 0, 0, 0,192, 46, 12, 3,192, 45, 12, 3,224, 35, 12, 3,208, 36, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,192, 46, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 64, 47, 12, 3, 64, 46, 12, 3, 16, 33, 12, 3, - 72, 37, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 47, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, -192, 47, 12, 3,192, 46, 12, 3, 88, 36, 12, 3, 72, 37, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -192, 47, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 47, 12, 3,208, 36, 12, 3, 72, 37, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 72, 48, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,208, 51, 12, 3, 0, 0, 0, 0, - 16, 33, 12, 3,168, 31, 12, 3, 32, 32, 12, 3,136, 33, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, -214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,152, 87, 12, 3,152, 87, 12, 3, - 16, 49, 12, 3,112, 50, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 16, 49, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,112, 50, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112, 50, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 49, 12, 3, - 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, -112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,208, 51, 12, 3,199, 0, 0, 0, - 1, 0, 0, 0,152, 56, 12, 3, 72, 48, 12, 3,240, 34, 12, 3,120, 34, 12, 3,104, 35, 12, 3,152, 32, 12, 3, 0, 0, 0, 0, - 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 4, 4,234, 0, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 55, 12, 3, 88, 55, 12, 3,152, 52, 12, 3,248, 53, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152, 52, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,248, 53, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0,245, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248, 53, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,152, 52, 12, 3, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, -254,255, 88, 67,254,255,116,195, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, - 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, - 6, 0,234, 0,245, 0,217, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0,245, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -216, 0, 0, 0, 88, 55, 12, 3,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0, -160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,152, 56, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 24, 62, 12, 3, -208, 51, 12, 3, 48, 31, 12, 3, 0, 34, 12, 3,120, 34, 12, 3,240, 34, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, - 0, 0, 0, 0, 19, 1, 0, 0, 17, 17, 20, 4, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 61, 12, 3, -128, 61, 12, 3, 96, 57, 12, 3, 32, 60, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 96, 57, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,192, 58, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192, 58, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 32, 60, 12, 3, - 96, 57, 12, 3, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,122,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,122,195, - 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,250, 0,203, 0, -250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,250, 0, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 60, 12, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192, 58, 12, 3, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67, - 4, 0, 39,195, 0,224,180, 68, 1, 0,224,194, 0, 0,176, 67, 39, 3, 0, 0, 56, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, - 0, 0, 0, 0, 38, 3, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, - 0, 0, 0, 4, 0, 0, 56, 3,250, 0, 39, 3,232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, - 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 3,250, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 52, 0, 0, 0,128, 61, 12, 3,178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 24, 62, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,136, 68, 12, 3, -152, 56, 12, 3,224, 35, 12, 3, 88, 36, 12, 3,136, 33, 12, 3,104, 35, 12, 3, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, - 21, 1, 0, 0,186, 2, 0, 0, 9, 9,130, 1,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 65, 12, 3, -168, 65, 12, 3,224, 62, 12, 3, 72, 64, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,224, 62, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 72, 64, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,193, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,181, 67, 0, 0,200, 65, 0,128,181, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,130, 1, 26, 0,130, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,130, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72, 64, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -224, 62, 12, 3, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0, -126, 86, 5, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,130, 1,140, 1,130, 1, -140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0,168, 65, 12, 3, -172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,136, 68, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 64, 81, 12, 3, 24, 62, 12, 3, -208, 36, 12, 3, 72, 37, 12, 3, 88, 36, 12, 3,224, 35, 12, 3, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, -186, 2, 0, 0, 1, 1,167, 2,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 79, 12, 3,224, 79, 12, 3, - 80, 69, 12, 3,208, 74, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 80, 69, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,176, 70, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 56, 0,192, 41, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 2, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,167, 2, 26, 0,167, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176, 70, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 16, 72, 12, 3, 80, 69, 12, 3, - 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,213, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,140, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16, 72, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0,112, 73, 12, 3,176, 70, 12, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0, -231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, - 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, - 47, 1, 0, 0, 47, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, - 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,112, 73, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,208, 74, 12, 3, 16, 72, 12, 3, 0, 0, 0, 0, 0, 0, 35, 67, - 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 23,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, - 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,112, 2,163, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,123, 3, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208, 74, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -112, 73, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 76, 12, 3, 68, 65, 84, 65, 72, 3, 0, 0, 48, 76, 12, 3, -159, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63,149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126,177,113, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65,214,211,111, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 63,156, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224, 79, 12, 3,160, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,192, 34, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0, 64, 81, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136, 68, 12, 3, 0, 34, 12, 3, 16, 33, 12, 3, - 72, 37, 12, 3,208, 36, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 3, 3,212, 0, -166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 84, 12, 3,200, 84, 12, 3, 8, 82, 12, 3,104, 83, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8, 82, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0,104, 83, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 83, 67, - 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,212, 0, 26, 0,212, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, - 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,104, 83, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8, 82, 12, 3, 0, 0, 0, 0, 0,128,131, 67, - 0, 0,228,194, 0, 0, 0, 0, 0, 0, 80, 66, 0, 0,119, 67, 0, 0,189,195, 0, 0, 0, 0,195, 0, 0, 0,212, 0, 0, 0, - 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, - 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,212, 0,140, 1,195, 0,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,212, 0,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,252, 0, 0, 0,200, 84, 12, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 86, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, - 40, 86, 12, 3,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,152, 86, 12, 3, 68, 65, 84, 65,156, 0, 0, 0, -152, 86, 12, 3,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,160, 9, 13, 3, 19, 0, 0, 0, 1, 0, 1, 0, -160, 9, 13, 3, 20, 0, 0, 0, 1, 0, 1, 0,160, 9, 13, 3, 21, 0, 1, 0, 1, 0, 1, 0,160, 9, 13, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 96, 32, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 39, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 8,122, 14, 3, - 0, 0, 0, 0, 1, 0, 1, 0, 72, 49, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 24,215, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, - 8, 45, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 16, 28, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,192, 34, 13, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 64, 27, 13, 3, 83, 78, 0, 0,140, 0, 0, 0, 48, 88, 12, 3,195, 0, 0, 0, 1, 0, 0, 0,200,152, 12, 3, - 64, 30, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 89, 12, 3,176, 95, 12, 3, 40, 96, 12, 3, 40,107, 12, 3, -168,107, 12, 3,200,145, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32, 89, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,152, 89, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152, 89, 12, 3,196, 0, 0, 0, - 1, 0, 0, 0, 16, 90, 12, 3, 32, 89, 12, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 16, 90, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,136, 90, 12, 3,152, 89, 12, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,136, 90, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 91, 12, 3, 16, 90, 12, 3, 0, 0, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 91, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,120, 91, 12, 3, -136, 90, 12, 3, 0, 0, 0, 0, 0, 0,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,120, 91, 12, 3,196, 0, 0, 0, - 1, 0, 0, 0,240, 91, 12, 3, 0, 91, 12, 3, 0, 0, 0, 0,254, 4,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -240, 91, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,104, 92, 12, 3,120, 91, 12, 3, 0, 0, 0, 0,244, 3,187, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,104, 92, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,224, 92, 12, 3,240, 91, 12, 3, 0, 0, 0, 0, -244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,224, 92, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 88, 93, 12, 3, -104, 92, 12, 3, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 88, 93, 12, 3,196, 0, 0, 0, - 1, 0, 0, 0,208, 93, 12, 3,224, 92, 12, 3, 0, 0, 0, 0,244, 3, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -208, 93, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 72, 94, 12, 3, 88, 93, 12, 3, 0, 0, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 72, 94, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,192, 94, 12, 3,208, 93, 12, 3, 0, 0, 0, 0, -248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192, 94, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 56, 95, 12, 3, - 72, 94, 12, 3, 0, 0, 0, 0,244, 3, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 56, 95, 12, 3,196, 0, 0, 0, - 1, 0, 0, 0,176, 95, 12, 3,192, 94, 12, 3, 0, 0, 0, 0,254, 4, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -176, 95, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56, 95, 12, 3, 0, 0, 0, 0,248, 1,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 40, 96, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,168, 96, 12, 3, 0, 0, 0, 0,152, 89, 12, 3, - 16, 90, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 96, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, - 40, 97, 12, 3, 40, 96, 12, 3,152, 89, 12, 3, 0, 91, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 40, 97, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,168, 97, 12, 3,168, 96, 12, 3, 16, 90, 12, 3,120, 91, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 97, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 40, 98, 12, 3, 40, 97, 12, 3, - 0, 91, 12, 3,120, 91, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 98, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0,168, 98, 12, 3,168, 97, 12, 3,120, 91, 12, 3,240, 91, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,168, 98, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 40, 99, 12, 3, 40, 98, 12, 3,136, 90, 12, 3,104, 92, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 99, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,168, 99, 12, 3, -168, 98, 12, 3, 32, 89, 12, 3,224, 92, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168, 99, 12, 3, -197, 0, 0, 0, 1, 0, 0, 0, 40,100, 12, 3, 40, 99, 12, 3, 0, 91, 12, 3,224, 92, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 40,100, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,168,100, 12, 3,168, 99, 12, 3,240, 91, 12, 3, - 88, 93, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,100, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, - 40,101, 12, 3, 40,100, 12, 3,104, 92, 12, 3, 88, 93, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 40,101, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,168,101, 12, 3,168,100, 12, 3, 32, 89, 12, 3,208, 93, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,101, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,102, 12, 3, 40,101, 12, 3, -104, 92, 12, 3,208, 93, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,102, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0,168,102, 12, 3,168,101, 12, 3,224, 92, 12, 3, 72, 94, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,168,102, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,103, 12, 3, 40,102, 12, 3, 88, 93, 12, 3, 72, 94, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,103, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,168,103, 12, 3, -168,102, 12, 3,208, 93, 12, 3, 72, 94, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,103, 12, 3, -197, 0, 0, 0, 1, 0, 0, 0, 40,104, 12, 3, 40,103, 12, 3,104, 92, 12, 3,192, 94, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 40,104, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,168,104, 12, 3,168,103, 12, 3,240, 91, 12, 3, -192, 94, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,104, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, - 40,105, 12, 3, 40,104, 12, 3,120, 91, 12, 3, 56, 95, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 40,105, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,168,105, 12, 3,168,104, 12, 3,136, 90, 12, 3, 56, 95, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,105, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,106, 12, 3, 40,105, 12, 3, -192, 94, 12, 3, 56, 95, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,106, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0,168,106, 12, 3,168,105, 12, 3, 0, 91, 12, 3,176, 95, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,168,106, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 40,107, 12, 3, 40,106, 12, 3,240, 91, 12, 3,176, 95, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,107, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -168,106, 12, 3, 72, 94, 12, 3,176, 95, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,168,107, 12, 3, -199, 0, 0, 0, 1, 0, 0, 0, 48,111, 12, 3, 0, 0, 0, 0, 0, 91, 12, 3,152, 89, 12, 3, 16, 90, 12, 3,120, 91, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 0, 0, 48,152, 12, 3, 48,152, 12, 3,112,108, 12, 3,208,109, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,108, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,208,109, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,109, 12, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,112,108, 12, 3, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0, 48,111, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,248,115, 12, 3,168,107, 12, 3,104, 92, 12, 3, -192, 94, 12, 3, 56, 95, 12, 3,136, 90, 12, 3, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, - 4, 4, 10, 1, 12, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,114, 12, 3,184,114, 12, 3,248,111, 12, 3, - 88,113, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,111, 12, 3, -200, 0, 0, 0, 1, 0, 0, 0, 88,113, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, - 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 10, 1, 31, 0, 10, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0, -254, 4, 0, 0,237, 1, 0, 0, 11, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 31, 0, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 88,113, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248,111, 12, 3, 0, 0, 0, 0, - 0,128,132, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255,120, 67,255,127,246,195, 0, 0, 0, 0,249, 0, 0, 0, - 10, 1, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -248, 0, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 10, 1,237, 1,249, 0,237, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,184,114, 12, 3,165, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -248,115, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 88,121, 12, 3, 48,111, 12, 3,208, 93, 12, 3, 72, 94, 12, 3, 88, 93, 12, 3, -104, 92, 12, 3, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,251, 1, 28, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,119, 12, 3,128,119, 12, 3,192,116, 12, 3, 32,118, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,116, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, - 32,118, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, +224, 6, 63, 2,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64,225, 62, 2, 16,218, 62, 2,184,217, 62, 2, 96,217, 62, 2, +176,216, 62, 2, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 1, 1,122, 2,187, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 17, 63, 2, 32, 17, 63, 2,128, 7, 63, 2, 96, 12, 63, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 7, 63, 2,200, 0, 0, 0, 1, 0, 0, 0, +184, 8, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 30, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, - 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, - 26, 0,251, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,122, 2, + 26, 0,122, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 32,118, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192,116, 12, 3, 0, 0, 0, 0, 0, 0,253, 67, 0, 0, 0, 0, - 0, 0, 48, 65, 0, 0, 0, 0, 0, 0,245, 67, 0, 0, 0, 0, 0, 0,129, 67,234, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, - 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 1, 0, 0, 0, 0, 0, 0, - 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, - 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,251, 1, 2, 1,234, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -249, 1, 0, 0,243, 3, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -251, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +184, 8, 63, 2,200, 0, 0, 0, 1, 0, 0, 0,240, 9, 63, 2,128, 7, 63, 2, 0, 0, 0, 0, 0, 0, 32, 67, 0, 64, 10,196, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 10,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, + 40, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, + 40, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 41, 2,143, 0, 41, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +133, 2, 0, 0, 36, 3, 0, 0,146, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160, 0, 41, 2, 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0,128,119, 12, 3,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240, 9, 63, 2,200, 0, 0, 0, 1, 0, 0, 0, 40, 11, 63, 2,184, 8, 63, 2, + 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,242,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 91, 90,242,194, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,120, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0, 26, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 0, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40, 11, 63, 2,200, 0, 0, 0, + 1, 0, 0, 0, 96, 12, 63, 2,240, 9, 63, 2, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 35, 67,255,191,126,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, +162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, + 6, 0,180, 0, 13, 4,163, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0, + 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 96, 12, 63, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 11, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 37, 3, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,218, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,152, 13, 63, 2, 68, 65, 84, 65, 72, 3, 0, 0,152, 13, 63, 2,159, 0, 0, 0, 1, 0, 0, 0,193,198,198, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, + 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188, +166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 69,239,209, 62, + 70,119,105, 63,160, 84, 89,188, 0, 0, 0, 0, 52,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, + 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,188,173, 54, 64,136, 95,161,191,147,231,198, 63, 0, 0,128, 63, 12, 2, 35, 63, +208,249,224,190, 48,180, 81,191,184,158, 81,191,130, 71,181, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188, +206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,101, 98, 82, 64, 0, 25, 95, 64,101, 47,135, 62, +134, 86, 22, 63, 32,243, 11,188, 0, 0,160,179,195, 15,188,190,132, 75, 53, 62,216,125, 81, 63, 0, 0,192,179,115, 77,100,193, + 17,173,201, 64,181,148,248,192,202,247,159,192,233, 74, 87, 65,247, 46,190,192, 88,106,234, 64, 44, 8,160, 64, 68,239,209, 62, + 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188, +166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 12, 2, 35, 63, +208,249,224,190, 48,180, 81,191,184,158, 81,191,130, 71,181, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188, +206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,101, 98, 82, 64, 0, 25, 95, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, + 56,186,224,190,237,203,148,190, 3,236,234,190, 0, 25, 95, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0,116, 16, 50, 59, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2542,1114 +3160,508 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 88,121, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 16,134, 12, 3, -248,115, 12, 3, 72, 94, 12, 3,176, 95, 12, 3,240, 91, 12, 3, 88, 93, 12, 3, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, - 29, 1, 0, 0,186, 2, 0, 0, 1, 1,251, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,132, 12, 3, -176,132, 12, 3, 32,122, 12, 3,160,127, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 32,122, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,128,123, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,123, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,224,124, 12, 3, - 32,122, 12, 3, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, - 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, - 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,249, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,132, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,124, 12, 3, -200, 0, 0, 0, 1, 0, 0, 0, 64,126, 12, 3,128,123, 12, 3, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, - 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0, -243, 3, 0, 0, 55, 1, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 64,126, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,160,127, 12, 3,224,124, 12, 3, 0, 0, 0, 0, - 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0, -180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,243, 3, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160,127, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 64,126, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0, -186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 12, 3, 68, 65, 84, 65, 72, 3, 0, 0, - 0,129, 12, 3,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 42,240,182, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, - 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63, -143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190, -142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65, -111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62,242,252, 18,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, - 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, - 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, 0,247, 70,188, 0,192, 32,182, 15,232,143,190, -210,186, 10, 62, 44, 83, 32, 63, 0,192, 24, 54,215,104, 25,196,133,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68, -158, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63, -143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62,242,252, 18,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, - 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, - 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65, -214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,138, 93,108, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,132, 12, 3, -160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,192, 34, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, - 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0, 16,134, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,112,139, 12, 3, 88,121, 12, 3, 32, 89, 12, 3, -224, 92, 12, 3, 72, 94, 12, 3,208, 93, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, - 18, 18,248, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,137, 12, 3,152,137, 12, 3,216,134, 12, 3, - 56,136, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,134, 12, 3, -200, 0, 0, 0, 1, 0, 0, 0, 56,136, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 56,136, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216,134, 12, 3, 0, 0, 0, 0, - 0,128,251, 67, 0, 0, 0, 0, 0, 0, 65, 67, 0, 0, 0, 0, 0,128,243, 67, 0, 0, 0, 0, 0, 0,129, 67,231, 1, 0, 0, -248, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -230, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,248, 1, 2, 1,231, 1, 2, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0,152,137, 12, 3,181, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112,121,116,104,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,112,139, 12, 3,199, 0, 0, 0, - 1, 0, 0, 0,200,145, 12, 3, 16,134, 12, 3,192, 94, 12, 3,240, 91, 12, 3,120, 91, 12, 3, 56, 95, 12, 3, 0, 0, 0, 0, -245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0,186, 2, 0, 0, 3, 3, 10, 1,174, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,248,142, 12, 3,248,142, 12, 3, 56,140, 12, 3,152,141, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,140, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,152,141, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,149, 67, 0, 0,200, 65, 0,128,149, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, 26, 0, 10, 1, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0, 38, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,141, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 56,140, 12, 3, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,121, 67, 0, 0, 2,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0, -248, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, - 6, 0, 10, 1,148, 0,249, 0,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, - 39, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,148, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -252, 0, 0, 0,248,142, 12, 3,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,144, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 88,144, 12, 3,223, 0, 0, 0, 1, 0, 0, 0, - 13, 0, 0, 0, 13, 0, 0, 0,200,144, 12, 3, 68, 65, 84, 65,156, 0, 0, 0,200,144, 12, 3,222, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0,160, 9, 13, 3, 19, 0, 0, 0, 1, 0, 1, 0,160, 9, 13, 3, 20, 0, 0, 0, 1, 0, 1, 0, -160, 9, 13, 3, 21, 0, 1, 0, 1, 0, 1, 0,160, 9, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 96, 32, 13, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 39, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 8,122, 14, 3, 0, 0, 0, 0, 1, 0, 1, 0, 72, 49, 13, 3, - 0, 0, 0, 0, 1, 0, 1, 0, 24,215, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 8, 45, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, - 16, 28, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0,192, 34, 13, 3, 0, 0, 0, 0, 1, 0, 1, 0, 64, 27, 13, 3, 68, 65, 84, 65, - 96, 0, 0, 0,200,145, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,112,139, 12, 3,224, 92, 12, 3, 0, 91, 12, 3, -176, 95, 12, 3, 72, 94, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 9, 9,248, 1, -158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,149, 12, 3, 80,149, 12, 3,144,146, 12, 3,240,147, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144,146, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0,240,147, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 73, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, - 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, - 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,240,147, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144,146, 12, 3, 0, 0, 0, 0, 0,224,189, 68, - 0, 0, 0, 0, 0,192, 22, 68,236,140, 21, 68, 20, 51,102, 68,120, 83, 49, 67, 68,214,212, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, - 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, - 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,248, 1,132, 1,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0, 80,149, 12, 3,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,231, 1, 0, 0,243, 1, 0, 0,122, 1, 0, 0,124, 1, 0, 0, -231, 1, 0, 0,243, 1, 0, 0, 4, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, -200,152, 12, 3,195, 0, 0, 0, 1, 0, 0, 0, 56,218, 12, 3, 48, 88, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86, - 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184,153, 12, 3, 0,157, 12, 3,120,157, 12, 3,120,162, 12, 3,248,162, 12, 3,232,204, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, -160, 9, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -184,153, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 48,154, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 48,154, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,168,154, 12, 3,184,153, 12, 3, 0, 0, 0, 0, - 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,154, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 32,155, 12, 3, - 48,154, 12, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 32,155, 12, 3,196, 0, 0, 0, - 1, 0, 0, 0,152,155, 12, 3,168,154, 12, 3, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -152,155, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 16,156, 12, 3, 32,155, 12, 3, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 16,156, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,136,156, 12, 3,152,155, 12, 3, 0, 0, 0, 0, -254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,136,156, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0,157, 12, 3, - 16,156, 12, 3, 0, 0, 0, 0,132, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0,157, 12, 3,196, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,136,156, 12, 3, 0, 0, 0, 0,132, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -120,157, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,248,157, 12, 3, 0, 0, 0, 0, 48,154, 12, 3,168,154, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,157, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,120,158, 12, 3,120,157, 12, 3, - 48,154, 12, 3,152,155, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,158, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0,248,158, 12, 3,248,157, 12, 3,168,154, 12, 3, 16,156, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,248,158, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,120,159, 12, 3,120,158, 12, 3,152,155, 12, 3, 16,156, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,159, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,248,159, 12, 3, -248,158, 12, 3,152,155, 12, 3,136,156, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,159, 12, 3, -197, 0, 0, 0, 1, 0, 0, 0,120,160, 12, 3,120,159, 12, 3,184,153, 12, 3, 0,157, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,120,160, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,248,160, 12, 3,248,159, 12, 3,184,153, 12, 3, -152,155, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,160, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, -120,161, 12, 3,120,160, 12, 3,136,156, 12, 3, 0,157, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -120,161, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,248,161, 12, 3,248,160, 12, 3, 16,156, 12, 3,136,156, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,161, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,120,162, 12, 3,120,161, 12, 3, - 32,155, 12, 3, 0,157, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,162, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,248,161, 12, 3, 32,155, 12, 3, 16,156, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,248,162, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,128,166, 12, 3, 0, 0, 0, 0,152,155, 12, 3, 48,154, 12, 3, -168,154, 12, 3, 16,156, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, - 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,160,217, 12, 3,160,217, 12, 3,192,163, 12, 3, 32,165, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,163, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0, 32,165, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, - 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, -188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 32,165, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192,163, 12, 3, 0, 0, 0, 0, 0,240,109, 69, - 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, - 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, - 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,128,166, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,232,204, 12, 3, -248,162, 12, 3,184,153, 12, 3,152,155, 12, 3,136,156, 12, 3, 0,157, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, - 0, 0, 0, 0,186, 2, 0, 0, 6, 6,132, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,171, 12, 3, -104,171, 12, 3, 72,167, 12, 3, 8,170, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 72,167, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,168,168, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 33, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,132, 2, 26, 0,132, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,132, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,168, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 8,170, 12, 3, - 72,167, 12, 3, 0, 0, 0, 0, 0, 0, 91, 67, 0, 0, 40,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 74, 67,254, 63, 40,196, - 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,161, 2,203, 0, -161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,161, 2, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,170, 12, 3, -200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,168,168, 12, 3, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, -102,102, 38,190,205,204,148, 63, 51, 51, 13,191,154,153,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1, 0, 0, 0, 0, 0, 0,161, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, -131, 2, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1,161, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 33, 0, 0,104,171, 12, 3,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0, -100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,232,204, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,128,166, 12, 3, 0,157, 12, 3,136,156, 12, 3, 16,156, 12, 3, 32,155, 12, 3, 0, 0, 0, 0,133, 2, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 1, 1,122, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64,216, 12, 3, 64,216, 12, 3,176,205, 12, 3, 48,211, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,176,205, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 16,207, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 30, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,122, 2, 26, 0,122, 2, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,122, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,207, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, -112,208, 12, 3,176,205, 12, 3, 0, 0, 0, 0, 0, 0, 32, 67, 0, 64, 10,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, - 0, 64, 10,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, - 41, 2,143, 0, 41, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0,146, 0, 0, 0, -186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 41, 2, 0, 0, 5, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -112,208, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,208,209, 12, 3, 16,207, 12, 3, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,242,194, - 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 91, 90,242,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, -119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -133, 2, 0, 0, 36, 3, 0, 0, 26, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 0,120, 0, 0, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,209, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 48,211, 12, 3,112,208, 12, 3, - 0, 0, 0, 0, 0, 0, 35, 67, 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,255,191,126,196, 0, 0, 0, 0, -163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, 13, 4,163, 0,251, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,211, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,208,209, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 3, 0, 0,254, 4, 0, 0, - 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218, 1,161, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,212, 12, 3, 68, 65, 84, 65, - 72, 3, 0, 0,144,212, 12, 3,159, 0, 0, 0, 1, 0, 0, 0,193,198,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,160, 84, 89,188, 0, 0, 0, 0, - 52,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, -188,173, 54, 64,136, 95,161,191,147,231,198, 63, 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191, -130, 71,181, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0,101, 98, 82, 64, 0, 25, 95, 64,101, 47,135, 62,134, 86, 22, 63, 32,243, 11,188, 0, 0,160,179, -195, 15,188,190,132, 75, 53, 62,216,125, 81, 63, 0, 0,192,179,115, 77,100,193, 17,173,201, 64,181,148,248,192,202,247,159,192, -233, 74, 87, 65,247, 46,190,192, 88,106,234, 64, 44, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191, -130, 71,181, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0,101, 98, 82, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, - 0, 25, 95, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0,116, 16, 50, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 64,216, 12, 3,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,192, 34, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, - 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, 56,218, 12, 3,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,200,152, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105,100,101,111, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,219, 12, 3, 80,224, 12, 3,200,224, 12, 3, 72,233, 12, 3,200,233, 12, 3, -128, 1, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 40,219, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,160,219, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,219, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, - 24,220, 12, 3, 40,219, 12, 3, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 24,220, 12, 3, -196, 0, 0, 0, 1, 0, 0, 0,144,220, 12, 3,160,219, 12, 3, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,144,220, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 8,221, 12, 3, 24,220, 12, 3, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 8,221, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,128,221, 12, 3,144,220, 12, 3, - 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128,221, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, -248,221, 12, 3, 8,221, 12, 3, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248,221, 12, 3, -196, 0, 0, 0, 1, 0, 0, 0,112,222, 12, 3,128,221, 12, 3, 0, 0, 0, 0,254, 4, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0,112,222, 12, 3,196, 0, 0, 0, 1, 0, 0, 0,232,222, 12, 3,248,221, 12, 3, 0, 0, 0, 0, 0, 0, 64, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,232,222, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 96,223, 12, 3,112,222, 12, 3, - 0, 0, 0, 0, 52, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96,223, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, -216,223, 12, 3,232,222, 12, 3, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216,223, 12, 3, -196, 0, 0, 0, 1, 0, 0, 0, 80,224, 12, 3, 96,223, 12, 3, 0, 0, 0, 0, 52, 2, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 80,224, 12, 3,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216,223, 12, 3, 0, 0, 0, 0,254, 4, 64, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,224, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 72,225, 12, 3, 0, 0, 0, 0, -160,219, 12, 3, 24,220, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72,225, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0,200,225, 12, 3,200,224, 12, 3,160,219, 12, 3, 8,221, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,200,225, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 72,226, 12, 3, 72,225, 12, 3, 24,220, 12, 3,128,221, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72,226, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,200,226, 12, 3, -200,225, 12, 3, 8,221, 12, 3,128,221, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,226, 12, 3, -197, 0, 0, 0, 1, 0, 0, 0, 72,227, 12, 3, 72,226, 12, 3,128,221, 12, 3,248,221, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 72,227, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,200,227, 12, 3,200,226, 12, 3, 40,219, 12, 3, -112,222, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,227, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, - 72,228, 12, 3, 72,227, 12, 3, 8,221, 12, 3,232,222, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 72,228, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,200,228, 12, 3,200,227, 12, 3,112,222, 12, 3, 96,223, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,228, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 72,229, 12, 3, 72,228, 12, 3, - 96,223, 12, 3,216,223, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72,229, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0,200,229, 12, 3,200,228, 12, 3,232,222, 12, 3,216,223, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,200,229, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 72,230, 12, 3, 72,229, 12, 3,248,221, 12, 3, 80,224, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72,230, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,200,230, 12, 3, -200,229, 12, 3,144,220, 12, 3, 80,224, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,230, 12, 3, -197, 0, 0, 0, 1, 0, 0, 0, 72,231, 12, 3, 72,230, 12, 3,112,222, 12, 3, 80,224, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 72,231, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,200,231, 12, 3,200,230, 12, 3, 40,219, 12, 3, -144,220, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,231, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, - 72,232, 12, 3, 72,231, 12, 3,128,221, 12, 3,232,222, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 72,232, 12, 3,197, 0, 0, 0, 1, 0, 0, 0,200,232, 12, 3,200,231, 12, 3,248,221, 12, 3,216,223, 12, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,232, 12, 3,197, 0, 0, 0, 1, 0, 0, 0, 72,233, 12, 3, 72,232, 12, 3, - 8,221, 12, 3, 96,223, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72,233, 12, 3,197, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,200,232, 12, 3,248,221, 12, 3, 96,223, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,200,233, 12, 3,199, 0, 0, 0, 1, 0, 0, 0, 80,237, 12, 3, 0, 0, 0, 0, 8,221, 12, 3,160,219, 12, 3, - 24,220, 12, 3,128,221, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, - 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 8, 9, 13, 3, 8, 9, 13, 3,144,234, 12, 3,240,235, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144,234, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0,240,235, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, - 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, -188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,240,235, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144,234, 12, 3, 0, 0, 0, 0, 0,240,109, 69, - 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, - 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, - 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 80,237, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,248,241, 12, 3, -200,233, 12, 3, 40,219, 12, 3,112,222, 12, 3, 80,224, 12, 3,144,220, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,255, 4, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,240, 12, 3, -216,240, 12, 3, 24,238, 12, 3,120,239, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 24,238, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,120,239, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 17, 63, 2,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, +192, 78, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,200, 18, 63, 2,195, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,216,214, 62, 2, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105,100,101,111, 32, 69,100,105,116, +105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 19, 63, 2, 96, 23, 63, 2, +184, 23, 63, 2,144, 29, 63, 2,232, 29, 63, 2,136, 50, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0,144, 57, 63, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152, 19, 63, 2,196, 0, 0, 0, + 1, 0, 0, 0,240, 19, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +240, 19, 63, 2,196, 0, 0, 0, 1, 0, 0, 0, 72, 20, 63, 2,152, 19, 63, 2, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 72, 20, 63, 2,196, 0, 0, 0, 1, 0, 0, 0,160, 20, 63, 2,240, 19, 63, 2, 0, 0, 0, 0, +254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160, 20, 63, 2,196, 0, 0, 0, 1, 0, 0, 0,248, 20, 63, 2, + 72, 20, 63, 2, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248, 20, 63, 2,196, 0, 0, 0, + 1, 0, 0, 0, 80, 21, 63, 2,160, 20, 63, 2, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, + 80, 21, 63, 2,196, 0, 0, 0, 1, 0, 0, 0,168, 21, 63, 2,248, 20, 63, 2, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0,168, 21, 63, 2,196, 0, 0, 0, 1, 0, 0, 0, 0, 22, 63, 2, 80, 21, 63, 2, 0, 0, 0, 0, +254, 4, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 22, 63, 2,196, 0, 0, 0, 1, 0, 0, 0, 88, 22, 63, 2, +168, 21, 63, 2, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 88, 22, 63, 2,196, 0, 0, 0, + 1, 0, 0, 0,176, 22, 63, 2, 0, 22, 63, 2, 0, 0, 0, 0, 52, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, +176, 22, 63, 2,196, 0, 0, 0, 1, 0, 0, 0, 8, 23, 63, 2, 88, 22, 63, 2, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 20, 0, 0, 0, 8, 23, 63, 2,196, 0, 0, 0, 1, 0, 0, 0, 96, 23, 63, 2,176, 22, 63, 2, 0, 0, 0, 0, + 52, 2, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96, 23, 63, 2,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 8, 23, 63, 2, 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184, 23, 63, 2,197, 0, 0, 0, + 1, 0, 0, 0, 16, 24, 63, 2, 0, 0, 0, 0,240, 19, 63, 2, 72, 20, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0, 16, 24, 63, 2,197, 0, 0, 0, 1, 0, 0, 0,104, 24, 63, 2,184, 23, 63, 2,240, 19, 63, 2,248, 20, 63, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104, 24, 63, 2,197, 0, 0, 0, 1, 0, 0, 0,192, 24, 63, 2, + 16, 24, 63, 2, 72, 20, 63, 2, 80, 21, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 24, 63, 2, +197, 0, 0, 0, 1, 0, 0, 0, 24, 25, 63, 2,104, 24, 63, 2,248, 20, 63, 2, 80, 21, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0, 24, 25, 63, 2,197, 0, 0, 0, 1, 0, 0, 0,112, 25, 63, 2,192, 24, 63, 2, 80, 21, 63, 2, +168, 21, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112, 25, 63, 2,197, 0, 0, 0, 1, 0, 0, 0, +200, 25, 63, 2, 24, 25, 63, 2,152, 19, 63, 2, 0, 22, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +200, 25, 63, 2,197, 0, 0, 0, 1, 0, 0, 0, 32, 26, 63, 2,112, 25, 63, 2,248, 20, 63, 2, 88, 22, 63, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 32, 26, 63, 2,197, 0, 0, 0, 1, 0, 0, 0,120, 26, 63, 2,200, 25, 63, 2, + 0, 22, 63, 2,176, 22, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120, 26, 63, 2,197, 0, 0, 0, + 1, 0, 0, 0,208, 26, 63, 2, 32, 26, 63, 2,176, 22, 63, 2, 8, 23, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,208, 26, 63, 2,197, 0, 0, 0, 1, 0, 0, 0, 40, 27, 63, 2,120, 26, 63, 2, 88, 22, 63, 2, 8, 23, 63, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 27, 63, 2,197, 0, 0, 0, 1, 0, 0, 0,128, 27, 63, 2, +208, 26, 63, 2,168, 21, 63, 2, 96, 23, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,128, 27, 63, 2, +197, 0, 0, 0, 1, 0, 0, 0,216, 27, 63, 2, 40, 27, 63, 2,160, 20, 63, 2, 96, 23, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,216, 27, 63, 2,197, 0, 0, 0, 1, 0, 0, 0, 48, 28, 63, 2,128, 27, 63, 2, 0, 22, 63, 2, + 96, 23, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 28, 63, 2,197, 0, 0, 0, 1, 0, 0, 0, +136, 28, 63, 2,216, 27, 63, 2,152, 19, 63, 2,160, 20, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, +136, 28, 63, 2,197, 0, 0, 0, 1, 0, 0, 0,224, 28, 63, 2, 48, 28, 63, 2, 80, 21, 63, 2, 88, 22, 63, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224, 28, 63, 2,197, 0, 0, 0, 1, 0, 0, 0, 56, 29, 63, 2,136, 28, 63, 2, +168, 21, 63, 2, 8, 23, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56, 29, 63, 2,197, 0, 0, 0, + 1, 0, 0, 0,144, 29, 63, 2,224, 28, 63, 2,248, 20, 63, 2,176, 22, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 24, 0, 0, 0,144, 29, 63, 2,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56, 29, 63, 2,168, 21, 63, 2,176, 22, 63, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,232, 29, 63, 2,199, 0, 0, 0, 1, 0, 0, 0,248, 32, 63, 2, + 0, 0, 0, 0,248, 20, 63, 2,240, 19, 63, 2, 72, 20, 63, 2, 80, 21, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, +188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 32, 57, 63, 2, + 32, 57, 63, 2,136, 30, 63, 2,192, 31, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0,136, 30, 63, 2,200, 0, 0, 0, 1, 0, 0, 0,192, 31, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,239, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 24,238, 12, 3, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, - 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, - 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,255, 4, 38, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192, 31, 63, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +136, 30, 63, 2, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, + 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,188, 0, 0, 0,216,240, 12, 3, -176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,248,241, 12, 3,199, 0, 0, 0, 1, 0, 0, 0,128,249, 12, 3, 80,237, 12, 3, -112,222, 12, 3, 96,223, 12, 3,248,221, 12, 3, 80,224, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, - 83, 1, 0, 0, 8, 8,255, 4, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,248, 12, 3, 64,248, 12, 3, -192,242, 12, 3,224,246, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -192,242, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 32,244, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 39, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 96,191, 68, 0, 0,200, 65, 0, 96,191, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,244, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,128,245, 12, 3,192,242, 12, 3, - 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,121,195, 0, 0, 0, 0, -203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,249, 0,203, 0,249, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4, 0, 0,254, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,249, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,245, 12, 3,200, 0, 0, 0, - 1, 0, 0, 0,224,246, 12, 3, 32,244, 12, 3, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, - 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, - 83, 1, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,224,246, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128,245, 12, 3, 0, 0, 0, 0, 0, 0,122, 67, - 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, - 18, 0, 0, 0,248, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, 64,248, 12, 3,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,128,249, 12, 3, -199, 0, 0, 0, 1, 0, 0, 0,128, 1, 13, 3,248,241, 12, 3, 96,223, 12, 3, 8,221, 12, 3,232,222, 12, 3,216,223, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, 2, 2, 52, 2,102, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200,255, 12, 3,200,255, 12, 3, 72,250, 12, 3,104,254, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,250, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,168,251, 12, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 13, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,248, 32, 63, 2, +199, 0, 0, 0, 1, 0, 0, 0, 8, 37, 63, 2,232, 29, 63, 2,152, 19, 63, 2, 0, 22, 63, 2, 96, 23, 63, 2,160, 20, 63, 2, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,255, 4, 64, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 36, 63, 2, 8, 36, 63, 2,152, 33, 63, 2,208, 34, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152, 33, 63, 2,200, 0, 0, 0, 1, 0, 0, 0,208, 34, 63, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 52, 2, 26, 0, 52, 2, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,251, 12, 3, -200, 0, 0, 0, 1, 0, 0, 0, 8,253, 12, 3, 72,250, 12, 3, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,157,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, - 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, - 0, 0, 0, 4, 6, 0,217, 0, 76, 1,200, 0, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 76, 1, - 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208, 34, 63, 2, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152, 33, 63, 2, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, +112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, + 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, + 4, 0, 0, 4, 8, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 8,253, 12, 3,200, 0, 0, 0, 1, 0, 0, 0,104,254, 12, 3,168,251, 12, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,188, 0, 0, 0, 8, 36, 63, 2,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 8, 37, 63, 2,199, 0, 0, 0, + 1, 0, 0, 0,160, 43, 63, 2,248, 32, 63, 2, 0, 22, 63, 2,176, 22, 63, 2,168, 21, 63, 2, 96, 23, 63, 2, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 83, 1, 0, 0, 8, 8,255, 4, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,136, 42, 63, 2,136, 42, 63, 2,168, 37, 63, 2, 80, 41, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168, 37, 63, 2,200, 0, 0, 0, 1, 0, 0, 0,224, 38, 63, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104,254, 12, 3,200, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 8,253, 12, 3, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, - 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0,111, 18,131, 58,111, 18,131, 58, - 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 91, 1, - 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0, 51, 2, 0, 0,111, 1, 0, 0, -186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 96,191, 68, 0, 0,200, 65, 0, 96,191, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, -200,255, 12, 3,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224, 38, 63, 2,200, 0, 0, 0, + 1, 0, 0, 0, 24, 40, 63, 2,168, 37, 63, 2, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,121,195, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 75, 67, 0, 0,121,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, +202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, + 6, 0,220, 0,249, 0,203, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4, 0, 0,254, 4, 0, 0, + 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,249, 0, 0, 0, 4, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +248, 0, 0, 0, 24, 40, 63, 2,200, 0, 0, 0, 1, 0, 0, 0, 80, 41, 63, 2,224, 38, 63, 2, 0, 0,112,196, 0, 0,112, 68, + 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, + 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 83, 1, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 41, 63, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 24, 40, 63, 2, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, + 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, + 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0, 35, 4,249, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,136, 42, 63, 2, +166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 0, 1, 13, 3, 23, 1, 0, 0, 1, 0, 0, 0,160, 9, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,128, 1, 13, 3,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -128,249, 12, 3,216,223, 12, 3,232,222, 12, 3,128,221, 12, 3,248,221, 12, 3, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, - 85, 1, 0, 0,186, 2, 0, 0, 8, 8,202, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 7, 13, 3, -200, 7, 13, 3, 72, 2, 13, 3,104, 6, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 72, 2, 13, 3,200, 0, 0, 0, 1, 0, 0, 0,168, 3, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 15, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 50, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 64, 50, 68, 0, 0,200, 65, 0, 64, 50, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,202, 2, 26, 0,202, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,202, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 96, 0, 0, 0,160, 43, 63, 2,199, 0, 0, 0, 1, 0, 0, 0,136, 50, 63, 2, 8, 37, 63, 2,176, 22, 63, 2, +248, 20, 63, 2, 88, 22, 63, 2, 8, 23, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, + 2, 2, 52, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 49, 63, 2, 32, 49, 63, 2, 64, 44, 63, 2, +232, 47, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64, 44, 63, 2, +200, 0, 0, 0, 1, 0, 0, 0,120, 45, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 13, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0, 52, 2, 26, 0, 52, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 51, 2, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2, 26, 0, + 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168, 3, 13, 3,200, 0, 0, 0, 1, 0, 0, 0, 8, 5, 13, 3, - 72, 2, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,120, 45, 63, 2,200, 0, 0, 0, 1, 0, 0, 0,176, 46, 63, 2, 64, 44, 63, 2, 0, 0, 0, 0, + 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,157,195, 0, 0, 0, 0,200, 0, 0, 0, +217, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +199, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0, 76, 1,200, 0, 58, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 76, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176, 46, 63, 2,200, 0, 0, 0, 1, 0, 0, 0, +232, 47, 63, 2,120, 45, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 51, 2, 0, 0,111, 1, 0, 0, +186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8, 5, 13, 3, -200, 0, 0, 0, 1, 0, 0, 0,104, 6, 13, 3,168, 3, 13, 3, 0, 0,112,195, 0, 0,112, 67, 0, 0, 7,195, 0, 0, 7, 67, -105, 42,145,196,105, 42,145, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 75, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 4, 0, 0,202, 2, 76, 1,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0, -254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 76, 1, - 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, +232, 47, 63, 2,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176, 46, 63, 2, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, + 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, + 75, 1, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 18, 0, 0, 0, + 75, 1, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +217, 0, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,104, 6, 13, 3,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8, 5, 13, 3, 0, 0, 0, 0, - 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, - 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, -201, 2, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, - 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,200, 7, 13, 3,166, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 32, 49, 63, 2,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 0, 0,120, 5, 0, 0, -160, 9, 13, 3,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99, -101,110,101, 0,116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 15, 13, 3, - 0, 0, 0, 0,192, 34, 13, 3, 96, 32, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 13, 3, 0, 19, 13, 3, 0, 18, 13, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 19, 13, 3,136,172,112, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, -250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 6, 0, 50, 0,141, 0,128, 7, 56, 4, 8, 0, 8, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, 90, 0, 1, 0, - 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 25, 13, 3,128, 25, 13, 3, 0, 0, 1, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 5, 0, 2, 0, 1, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 98, 97, 99,107, 98,117, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 50, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48, 50, 63, 2, 23, 1, 0, 0, 1, 0, 0, 0,144, 57, 63, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,136, 50, 63, 2, +199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,160, 43, 63, 2, 8, 23, 63, 2, 88, 22, 63, 2, 80, 21, 63, 2,168, 21, 63, 2, + 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, 8, 8,202, 2,102, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 56, 63, 2, 8, 56, 63, 2, 40, 51, 63, 2,208, 54, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40, 51, 63, 2,200, 0, 0, 0, 1, 0, 0, 0, 96, 52, 63, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 15, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 50, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 64, 50, 68, 0, 0,200, 65, 0, 64, 50, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,202, 2, 26, 0,202, 2, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96, 52, 63, 2, +200, 0, 0, 0, 1, 0, 0, 0,152, 53, 63, 2, 40, 51, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,116,109,112, 92, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, +254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,248, 0, 0, 0,152, 53, 63, 2,200, 0, 0, 0, 1, 0, 0, 0,208, 54, 63, 2, 96, 52, 63, 2, 0, 0,112,195, + 0, 0,112, 67, 0, 0, 7,195, 0, 0, 7, 67,105, 42,145,196,105, 42,145, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +201, 2, 0, 0, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, + 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 4, 0, 0,202, 2, 76, 1,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 76, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208, 54, 63, 2,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,152, 53, 63, 2, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, + 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, + 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,202, 2, + 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 5, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, + 8, 56, 63, 2,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 16, 0, 0, 0,128, 63, 0, 0,128, 63,173, 2, 95, 0,154,153,217, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, - 68, 69, 82, 95, 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, - 0, 0,128, 63,102,166,171, 67, 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 26, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0,136,137, 14, 3, 1, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, - 0, 0, 0, 0, 32, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 5, 0, 60, 0, 5, 0, 1, 0, 5, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0, -180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4,205,204,204, 61, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,128, 15, 13, 3, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 16, 13, 3, 48, 16, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0, 48, 16, 13, 3, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 6, 0, 0, 0,110,101,116,119,111,114,107, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 16, 13, 3,224, 16, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,224, 16, 13, 3, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,115,101,114,118,101,114, 95, 97,100,100,114,101,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144, 17, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 10, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,144, 17, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 91,100,101,102, 97,117,108,116, - 93, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0, 0, 18, 13, 3,133, 0, 0, 0, 1, 0, 0, 0,128, 18, 13, 3, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,102, 2,162, 1, 0, 39, 13, 3, 68, 65, 84, 65, 28, 0, 0, 0,128, 18, 13, 3, -133, 0, 0, 0, 1, 0, 0, 0, 0, 19, 13, 3, 0, 18, 13, 3, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 25, 3,180, 2, - 8, 45, 13, 3, 68, 65, 84, 65, 28, 0, 0, 0, 0, 19, 13, 3,133, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 18, 13, 3, - 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,135, 0,246, 1,192, 34, 13, 3, 68, 65, 84, 65,144, 1, 0, 0,128, 19, 13, 3, -153, 0, 0, 0, 1, 0, 0, 0,120, 21, 13, 3,136, 22, 13, 3,152, 23, 13, 3, 0, 0,128, 63, 1, 0, 1, 0,205,204, 76, 63, - 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, 32, 0, 32, 0, 32, 0, 1, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8, 25, 13, 3, - 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 2, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, - 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, - 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, - 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, - 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 10,215, 35, 60,205,204,204, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 0,205,204,204, 61, -205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, 72,225,122, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 44, 0, 0, 0, -120, 21, 13, 3,152, 0, 0, 0, 1, 0, 0, 0, 8, 22, 13, 3, 0, 0, 0, 0, 7, 0, 0, 0,128, 44,119, 3,255,255,255,128, - 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0, - 8, 22, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,224,208, 14, 3, 96,134, 14, 3,248, 10, 73, 3, 24,214, 14, 3, 64,146, 14, 3, -168,203, 14, 3, 32,167, 14, 3, 68, 65, 84, 65, 44, 0, 0, 0,136, 22, 13, 3,152, 0, 0, 0, 1, 0, 0, 0, 24, 23, 13, 3, - 0, 0, 0, 0, 7, 0, 0, 0, 16,231,129, 3,200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0, 24, 23, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,224,208, 14, 3, - 96,134, 14, 3,248, 10, 73, 3, 24,214, 14, 3, 64,146, 14, 3,168,203, 14, 3, 32,167, 14, 3, 68, 65, 84, 65, 96, 0, 0, 0, -152, 23, 13, 3,151, 0, 0, 0, 1, 0, 0, 0, 96, 24, 13, 3, 5, 0, 0, 0, 17, 0, 0, 0,248, 45, 93, 3,255,100,100,128, - 1, 0, 0, 0,128, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 24,213, 29, 66,100, 86, 88, 65, 18, 67,166,190, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 67, 0, 0,120, 5, 0, 0,144, 57, 63, 2,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99,101,110,101, 0,116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 72, 63, 63, 2, 0, 0, 0, 0,192, 78, 63, 2,176, 76, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 65, 63, 2, 8, 66, 63, 2, 72, 65, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 68, 0, 0, 0, 96, 24, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, - 8,141, 14, 3,120,151, 14, 3,232,161, 14, 3,144,177, 14, 3,200,182, 14, 3, 48,240, 14, 3,160,250, 14, 3,136, 0, 73, 3, -104, 21, 73, 3, 0,188, 14, 3, 56,193, 14, 3,112,198, 14, 3, 80,219, 14, 3,136,224, 14, 3,192,229, 14, 3,248,234, 14, 3, -160, 26, 73, 3, 68, 65, 84, 65, 16, 0, 0, 0, 8, 25, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,192, 5, 73, 3,176,156, 14, 3, -104,245, 14, 3, 48, 16, 73, 3, 68, 65, 84, 65, 72, 0, 0, 0,128, 25, 13, 3,139, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82,101,110,100,101,114, 76, 97,121,101,114, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 67, 65, 0, 0,104, 0, 0, 0, 64, 27, 13, 3, 29, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63,205,204,204, 61, 0, 0,200, 66, - 0, 0, 12, 66,161, 14,234, 64, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 76, 65, 0, 0,108, 1, 0, 0, 16, 28, 13, 3, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 76, 65, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,247,255,239, 65, - 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,224, 29, 13, 3, 2, 0, 0, 0, 46, 26,128, 63, - 25, 4,240, 65, 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64, 11, 3, 0, 1, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -111, 18,131, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 66, 63, 2, 80,142,223, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 31, 13, 3, - 68, 65, 84, 65, 16, 1, 0, 0,224, 29, 13, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63,242, 4, 53,191, -243, 4, 53, 63, 88, 31, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88, 31, 13, 3, 80, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,216, 31, 13, 3, 19, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 87, 79, 0, 0,112, 1, 0, 0, 96, 32, 13, 3,132, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114, 99, 80, 61,114, 99, 80, 61, -114, 99, 80, 61,199, 54, 36, 60,199, 54, 36, 60,199, 54, 36, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, - 0, 0, 32, 0,128, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 64, 0, 0,200, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,112, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 61, 0, 0, 5, 0, 0, 0, 0, 0, - 10,215,163, 59, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 56, 34, 13, 3, 68, 65, 84, 65, 32, 0, 0, 0, 56, 34, 13, 3, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, -220, 3, 0, 0,192, 34, 13, 3,121, 0, 0, 0, 1, 0, 0, 0, 0, 39, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64, 27, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222,149, 47, 63, 53, 70, 58, 63, -222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,149, 84, 28,191, - 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,125,103,133, 51, -176,219,194,178, 0, 0, 0, 0,190, 32, 66, 51, 1, 0,128, 63,168,200,153, 51, 0, 0, 0, 0, 32,206, 18,179,126,126,149, 50, - 1, 0,128, 63, 0, 0, 0, 0,241,251,133, 52,172,182, 27,180,174,236,252, 51, 0, 0,128, 63, 0, 0,128, 63,157,190,215, 49, -167,170, 4, 52, 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, 33, 69, 15, 51, 0, 0, 0,128, 73,254, 67, 51,243, 97,106, 49, - 0, 0,128, 63, 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, 0, 0,128, 53, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,187,225, 16, 63, 0, 0,128, 63,205,204,204, 62,237, 54, 32, 63, - 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, +100, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2, +224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 50, 0,141, 0,128, 7, 56, 4, 8, 0, 8, 0, 0, 0, + 24, 0, 17, 0, 0, 0, 0, 0, 90, 0, 1, 0, 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 71, 63, 2, + 96, 71, 63, 2, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0, 0, 39, 13, 3,121, 0, 0, 0, 1, 0, 0, 0, - 8, 45, 13, 3,192, 34, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 32, 91, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,122, 14, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 47,116,109,112, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 5, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 16, 0, 0, 0,128, 63, + 0, 0,128, 63,173, 2, 95, 0,154,153,217, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, 68, 69, 82, 95, 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63,102,166,171, 67, 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 71, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0,200,177, 64, 2, + 1, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 32, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 5, 0, + 60, 0, 5, 0, 1, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, + 32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, +128, 7, 56, 4,205,204,204, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +195,245, 28,193, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0, 72, 63, 63, 2, 16, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 63, 63, 2,216, 63, 63, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,216, 63, 63, 2, 16, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,110,101,116,119,111,114,107, 95,114,101,110,100,101,114, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 64, 63, 2,104, 64, 63, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 76, 0, 0, 0,104, 64, 63, 2, 16, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,101,114,118,101,114, 95, 97,100,100,114,101,115,115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 64, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,248, 64, 63, 2, 0, 0, 0, 0, + 1, 0, 0, 0, 91,100,101,102, 97,117,108,116, 93, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0, 72, 65, 63, 2,133, 0, 0, 0, + 1, 0, 0, 0,168, 65, 63, 2, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,104, 2,160, 1,224, 82, 63, 2, + 68, 65, 84, 65, 28, 0, 0, 0,168, 65, 63, 2,133, 0, 0, 0, 1, 0, 0, 0, 8, 66, 63, 2, 72, 65, 63, 2, 1, 0, 0, 0, + 2, 0, 0, 0, 0, 4, 0, 0, 28, 3,179, 2, 96, 88, 63, 2, 68, 65, 84, 65, 28, 0, 0, 0, 8, 66, 63, 2,133, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,168, 65, 63, 2, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,136, 0,244, 1,192, 78, 63, 2, + 68, 65, 84, 65,160, 1, 0, 0,104, 66, 63, 2,153, 0, 0, 0, 1, 0, 0, 0, 72, 68, 63, 2, 24, 69, 63, 2,232, 69, 63, 2, + 0, 0,128, 63, 1, 0, 1, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, + 0, 0, 1, 0, 32, 0, 32, 0, 32, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 16, 71, 63, 2, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 80, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, 50, 0, 10, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, 50, 0, 10, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 10,215, 35, 60,205,204,204, 61, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0,250, 0,205,204,204, 61,205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, 72,225,122, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 68, 65, 84, 65, 44, 0, 0, 0, 72, 68, 63, 2, +152, 0, 0, 0, 1, 0, 0, 0,184, 68, 63, 2, 0, 0, 0, 0, 7, 0, 0, 0, 80, 7,224, 5,255,255,255,128, 1, 0, 0, 0, + 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0,184, 68, 63, 2, + 0, 0, 0, 0, 1, 0, 0, 0,248,242, 64, 2,192,174, 64, 2,144, 39, 65, 2,192,247, 64, 2,152,185, 64, 2, 48,238, 64, 2, +184,204, 64, 2, 68, 65, 84, 65, 44, 0, 0, 0, 24, 69, 63, 2,152, 0, 0, 0, 1, 0, 0, 0,136, 69, 63, 2, 0, 0, 0, 0, + 7, 0, 0, 0,104, 75,224, 5,200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0,136, 69, 63, 2, 0, 0, 0, 0, 1, 0, 0, 0,248,242, 64, 2,192,174, 64, 2, +144, 39, 65, 2,192,247, 64, 2,152,185, 64, 2, 48,238, 64, 2,184,204, 64, 2, 68, 65, 84, 65, 96, 0, 0, 0,232, 69, 63, 2, +151, 0, 0, 0, 1, 0, 0, 0,136, 70, 63, 2, 5, 0, 0, 0, 17, 0, 0, 0,248, 73,224, 5,255,100,100,128, 1, 0, 0, 0, +128, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 91,105,203, 66,125,249, 30, 67, 15,225,126,190, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 68, 0, 0, 0,136, 70, 63, 2, 0, 0, 0, 0, 1, 0, 0, 0,208,180, 64, 2, + 96,190, 64, 2,240,199, 64, 2, 72,214, 64, 2, 16,219, 64, 2,168, 15, 65, 2, 56, 25, 65, 2, 0, 30, 65, 2, 32, 49, 65, 2, +216,223, 64, 2,160,228, 64, 2,104,233, 64, 2,136,252, 64, 2, 80, 1, 65, 2, 24, 6, 65, 2,224, 10, 65, 2,232, 53, 65, 2, + 68, 65, 84, 65, 16, 0, 0, 0, 16, 71, 63, 2, 0, 0, 0, 0, 1, 0, 0, 0,200, 34, 65, 2, 40,195, 64, 2,112, 20, 65, 2, + 88, 44, 65, 2, 68, 65, 84, 65, 72, 0, 0, 0, 96, 71, 63, 2,139, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82,101,110,100,101,114, 76, 97,121,101,114, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 67, 65, 0, 0,104, 0, 0, 0, 80, 72, 63, 2, 29, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63,205,204,204, 61, 0, 0,200, 66, 0, 0, 12, 66, +161, 14,234, 64, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, +108, 1, 0, 0,248, 72, 63, 2, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 65, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,247,255,239, 65, 0, 0,150, 66, +154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,168, 74, 63, 2, 2, 0, 0, 0, 46, 26,128, 63, 25, 4,240, 65, + 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 11, 3, 0, + 1, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111, 18,131, 58, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 76, 63, 2, 68, 65, 84, 65, + 16, 1, 0, 0,168, 74, 63, 2, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63, +248, 75, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,248, 75, 63, 2, 80, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80, 76, 63, 2, 19, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 87, 79, 0, 0,112, 1, 0, 0,176, 76, 63, 2,132, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114, 99, 80, 61,114, 99, 80, 61,114, 99, 80, 61, +199, 54, 36, 60,199, 54, 36, 60,199, 54, 36, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0, +128, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 64, 0, 0,200, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 61, 0, 0, 5, 0, 0, 0, 0, 0, 10,215,163, 59, + 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 78, 63, 2, 68, 65, 84, 65, 32, 0, 0, 0, 96, 78, 63, 2, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0, +192, 78, 63, 2,121, 0, 0, 0, 1, 0, 0, 0,224, 82, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97, +109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80, 72, 63, 2, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,254,141, 63, +192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222,149, 47, 63, 53, 70, 58, 63,222, 56, 49,188, + 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,149, 84, 28,191, 51,247,227, 62, + 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,125,103,133, 51,176,219,194,178, + 0, 0, 0, 0,190, 32, 66, 51, 1, 0,128, 63,168,200,153, 51, 0, 0, 0, 0, 32,206, 18,179,126,126,149, 50, 1, 0,128, 63, + 0, 0, 0, 0,241,251,133, 52,172,182, 27,180,174,236,252, 51, 0, 0,128, 63, 0, 0,128, 63,157,190,215, 49,167,170, 4, 52, + 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, 33, 69, 15, 51, 0, 0, 0,128, 73,254, 67, 51,243, 97,106, 49, 0, 0,128, 63, + 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, 0, 0,128, 53, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, + 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,187,225, 16, 63, 0, 0,128, 63,205,204,204, 62,237, 54, 32, 63, 0, 0, 0, 0, +143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0,224, 82, 63, 2,121, 0, 0, 0, 1, 0, 0, 0, 96, 88, 63, 2, +192, 78, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 40, 41,222, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,163, 64, 2, 0, 0, 0, 0, 1, 0, 0, 0, +250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0, +250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 87, 63, 2, 72, 87, 63, 2, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,222,149, 47, 63, 52, 70, 58, 63,179, 56, 49,188, 0, 0, 0,128, 86,126,162,190,227,251,159, 62, 56, 53,101, 63, + 0, 0, 0,128, 7,165, 39, 63,149, 84, 28,191, 50,247,227, 62, 0, 0, 0,128,110,101,239, 64,151, 62,208,192, 77,255,170, 64, + 0, 0,128, 63, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, 79, 66, 0, 0, 7, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, + 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 87, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,176, 87,225, 5,200,116,222, 5, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, + 0, 87, 63, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, 72, 87, 63, 2, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0,144, 87, 63, 2,124, 0, 0, 0, 1, 0, 0, 0, 0,192, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,205,204, 76, 62, 10,215,163, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0, 96, 88, 63, 2,121, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,224, 82, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 72, 63, 2, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 64, 43, 13, 3,168, 43, 13, 3, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229,123, 38, 63, 87, 43, 98, 61,229,229,238, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 54,236,148,190, 25,134,116, 63,236, 13, 98,189, 0, 0, 0, 0,221,102, 69,191, 57,174, 76,190, + 34,194, 26, 63, 0, 0, 0, 0, 37,255, 16, 63,241,161, 95, 62,164,111, 75, 63, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63, +112,236,188, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63,222,149, 47, 63, 52, 70, 58, 63,179, 56, 49,188, 0, 0, 0,128, 86,126,162,190,227,251,159, 62, - 56, 53,101, 63, 0, 0, 0,128, 7,165, 39, 63,149, 84, 28,191, 50,247,227, 62, 0, 0, 0,128,110,101,239, 64,151, 62,208,192, - 77,255,170, 64, 0, 0,128, 63, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, 79, 66, 0, 0, - 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 35,233,134, 49,251,110, 17,179, 0, 0, 0, 0, 49,158,141, 50, 1, 0,128, 63, +126,214,237, 50, 0, 0, 0, 0,155,248, 28,178,199,139, 96,177,254,255,127, 63, 0, 0, 0, 0, 80,136,159,178,192, 4,158,178, +209,114,143,179, 0, 0,128, 63, 53,236,148,190,222,102, 69,191, 37,255, 16, 63, 0, 0, 0,128, 24,134,116, 63, 57,174, 76,190, +240,161, 95, 62, 0, 0, 0,128,235, 13, 98,189, 34,194, 26, 63,166,111, 75, 63, 0, 0, 0,128,208, 19, 13, 63,234, 65,102,190, + 10, 10,231,192, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 68, 0, 79, 66, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63, 169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 44, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 24,208, 90, 3,184,249, 91, 3, 25, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 4, 0, 0, 0, 64, 43, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,168, 43, 13, 3, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0, 16, 44, 13, 3,124, 0, 0, 0, 1, 0, 0, 0, - 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,205,204, 76, 62, - 10,215,163, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0, 8, 45, 13, 3,121, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 39, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 28, 13, 3, - 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63, -112,236,188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229,123, 38, 63, 87, 43, 98, 61,229,229,238, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54,236,148,190, 25,134,116, 63,236, 13, 98,189, 0, 0, 0, 0,221,102, 69,191, - 57,174, 76,190, 34,194, 26, 63, 0, 0, 0, 0, 37,255, 16, 63,241,161, 95, 62,164,111, 75, 63, 0, 0, 0, 0,154,112,130, 64, -183,178,128, 63,112,236,188, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 35,233,134, 49,251,110, 17,179, 0, 0, 0, 0, 49,158,141, 50, - 1, 0,128, 63,126,214,237, 50, 0, 0, 0, 0,155,248, 28,178,199,139, 96,177,254,255,127, 63, 0, 0, 0, 0, 80,136,159,178, -192, 4,158,178,209,114,143,179, 0, 0,128, 63, 53,236,148,190,222,102, 69,191, 37,255, 16, 63, 0, 0, 0,128, 24,134,116, 63, - 57,174, 76,190,240,161, 95, 62, 0, 0, 0,128,235, 13, 98,189, 34,194, 26, 63,166,111, 75, 63, 0, 0, 0,128,208, 19, 13, 63, -234, 65,102,190, 10, 10,231,192, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 68, 0, - 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, - 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 77, 65, 0, 0,160, 2, 0, 0, 72, 49, 13, 3, 44, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0, +160, 2, 0, 0,128, 92, 63, 2, 44, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 50, 0,205,204, 76, 62, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 4, 0, 67, 0, 64, 3, 67, 0, 64, 3, 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 50, 0,205,204, 76, 62, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 2, 0, + 50, 0, 0, 6, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 4, 0, 67, 0, 64, 3, 67, 0, 64, 3, 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61, 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 80, 52, 13, 3, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61, 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 96, 95, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 53, 13, 3, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111,148, 26, 63,111,148, 26, 63, -111,148, 26, 63,205,204, 76, 61,205,204,204, 61,102,102,166, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 80, 52, 13, 3, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,215, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 96, 63, 2, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111,148, 26, 63,111,148, 26, 63,111,148, 26, 63, +205,204, 76, 61,205,204,204, 61,102,102,166, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 96, 95, 63, 2, 32, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 1, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,192, 53, 13, 3, 19, 0, 0, 0, - 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 1, 0, 1, 0, 49, 0, 49, 0, 72, 54, 13, 3, -176, 70, 13, 3, 68, 65, 84, 65, 0, 16, 0, 0, 72, 54, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,168, 96, 63, 2, 19, 0, 0, 0, 1, 0, 0, 0, + 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 1, 0, 1, 0, 49, 0, 49, 0, 8, 97, 63, 2, 72,113, 63, 2, + 68, 65, 84, 65, 0, 16, 0, 0, 8, 97, 63, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3777,8 +3789,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0, -176, 70, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0, 72,113, 63, 2, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4930,19 +4942,19 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0, 48, 1, 0, 0, 24,215, 13, 3, 39, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 7, 0, 8, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 1, 0, - 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,216, 13, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,176,216, 13, 3, 19, 0, 0, 0, - 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 14, 0, 13, 0, 56,217, 13, 3, -160,233, 13, 3, 68, 65, 84, 65, 0, 16, 0, 0, 56,217, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0, 48, 1, 0, 0,136, 1, 64, 2, 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 7, 0, 8, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 2, 64, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248, 2, 64, 2, 19, 0, 0, 0, 1, 0, 0, 0, + 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1, 0, 14, 0, 13, 0, 88, 3, 64, 2,152, 19, 64, 2, + 68, 65, 84, 65, 0, 16, 0, 0, 88, 3, 64, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, @@ -5070,8 +5082,8 @@ char datatoc_startup_blend[]= { 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 68, 65, 84, 65, 0,144, 0, 0, -160,233, 13, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 68, 65, 84, 65, 0,144, 0, 0,152, 19, 64, 2, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, @@ -6223,20 +6235,20 @@ char datatoc_startup_blend[]= { 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0, 40, 1, 0, 0, 8,122, 14, 3, 54, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,123, 14, 3, 72,131, 14, 3, 40,132, 14, 3, 0, 0, 0, 0,184,125, 14, 3, -152,128, 14, 3, 0, 0, 0, 0,152,133, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 14, 3, - 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,126, 14, 3, 1, 0, 0, 0, - 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,129, 14, 3, 3, 0, 0, 0, 5, 0, 0, 0, - 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 30, 0, 6, 0, 1, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,152,123, 14, 3, 0, 0, 0, 0, 1, 0, 0, 0, 72, 49, 13, 3, - 68, 65, 84, 65, 84, 1, 0, 0, 0,124, 14, 3, 87, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0, 40, 1, 0, 0,216,163, 64, 2, 54, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64,165, 64, 2, 32,172, 64, 2,216,172, 64, 2, 0, 0, 0, 0, 32,167, 64, 2,184,169, 64, 2, + 0, 0, 0, 0, 32,174, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,165, 64, 2, 1, 0, 0, 0, + 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,168, 64, 2, 1, 0, 0, 0, 5, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,170, 64, 2, 3, 0, 0, 0, 5, 0, 0, 0, 80, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 30, 0, 6, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, 64,165, 64, 2, 0, 0, 0, 0, 1, 0, 0, 0,128, 92, 63, 2, 68, 65, 84, 65, + 84, 1, 0, 0,136,165, 64, 2, 87, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,125, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,167, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6245,16 +6257,16 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0,184,125, 14, 3, 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63, -255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191, -230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191,253,255,127,191, 0, 0,128,191, 26,182, 26,182, 26,182,255,127, - 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63, -247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, 1, 0, 0, 0,245,255,127, 63, 5, 0,128,191, 0, 0,128, 63, -230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191,250,255,127,191, 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, - 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73,230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65, - 84, 1, 0, 0,224,126, 14, 3, 87, 1, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, 32,167, 64, 2, 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63, + 0, 0,128,191,230, 73,230, 73, 26,182,255,127, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191,230, 73, 26,182, + 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191,253,255,127,191, 0, 0,128,191, 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0, +250,255,127,191, 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63,247,255,127, 63, + 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, 1, 0, 0, 0,245,255,127, 63, 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182, +230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191,250,255,127,191, 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0, +255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73,230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0, + 32,168, 64, 2, 87, 1, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,128, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,169, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6263,86 +6275,43 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0,152,128, 14, 3, 57, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 35, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, - 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 35, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 6, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65, 84, 1, 0, 0,144,129, 14, 3, 87, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, + 68, 65, 84, 65,144, 0, 0, 0,184,169, 64, 2, 57, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, + 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 35, 0, 68, 65, 84, 65, 84, 1, 0, 0,136,170, 64, 2, 87, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,131, 14, 3, - 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40,132, 14, 3, 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,152,133, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,172, 64, 2, 5, 0, 0, 0, + 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101, +120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,172, 64, 2, + 6, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32,174, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,120, 0, 0, 0, 72,131, 14, 3, 56, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 7, 0, 0, 0, - 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, - 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, 68, 65, 84, 65, - 8, 1, 0, 0, 40,132, 14, 3, 67, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,120, 0, 0, 0, 32,172, 64, 2, 56, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, + 5, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, 68, 65, 84, 65, 8, 1, 0, 0, +216,172, 64, 2, 67, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -152,133, 14, 3, 61, 0, 0, 0, 24, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 32,174, 64, 2, + 61, 0, 0, 0, 24, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255, 66, 82, 0, 0,196, 2, 0, 0, 96,134, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, - 8,141, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, 48, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 40, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 0,248,138, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 24,253,125, 3, 17, 0, 0, 0, 0, 0, 0, 0, -112,219,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 4, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,172,134, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,248,138, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61,112,140, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,112,140, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 8,141, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 64,146, 14, 3, - 96,134, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,111, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 23, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 48,144, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,255,255,255,255,255, 66, 82, 0, 0,196, 2, 0, 0,192,174, 64, 2, 86, 1, 0, 0, 1, 0, 0, 0,208,180, 64, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 2, 23, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 16,179, 64, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, @@ -6350,1036 +6319,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,176,160,105, 3, 1, 0, 0, 0, 0, 0, 0, 0,224, 53, 92, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, - 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, - 68, 65, 84, 65, 8, 1, 0, 0, 84,141, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 16, 1, 0, 0, 48,144, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, -168,145, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0,168,145, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 64,146, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,120,151, 14, 3, 8,141, 14, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 2, 41, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, -104,149, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 80, 0,123, 3, 18, 0, 0, 0, 0, 0, 0, 0,224, 58,106, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, - 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 8, 1, 0, 0,140,146, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, -104,149, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,224,150, 14, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 48, 0, 0, 0,224,150, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, - 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0,196, 2, 0, 0,120,151, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,176,156, 14, 3, 64,146, 14, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 67,108, 97,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, - 24, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,160,154, 14, 3, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,136, 37,108, 3, 2, 0, 0, 0, 0, 0, 0, 0,240,136,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, - 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, -196,151, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,160,154, 14, 3, - 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 24,156, 14, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, - 24,156, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, - 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, -196, 2, 0, 0,176,156, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,232,161, 14, 3,120,151, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 47, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,216,159, 14, 3, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 24,243,123, 3, 19, 0, 0, 0, 0, 0, 0, 0,112,247,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,252,156, 14, 3, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,216,159, 14, 3, 82, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 80,161, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 80,161, 14, 3, - 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, -232,161, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 32,167, 14, 3,176,156, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,114, -101, 97,115,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 25, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16,165, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -184, 85,108, 3, 3, 0, 0, 0, 0, 0, 0, 0, 56,126,108, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, - 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 52,162, 14, 3, 32, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 16,165, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, -228, 97,175,190, 50,131,112, 63,218,243,127,191, 10,183,157,188,136,166, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136,166, 14, 3, 80, 1, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 64, 63, - 10,215, 35, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 32,167, 14, 3, - 86, 1, 0, 0, 1, 0, 0, 0, 88,172, 14, 3,232,161, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, - 0, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 42, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 72,170, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 80,183,129, 3, - 20, 0, 0, 0, 0, 0, 0, 0,184, 20, 91, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,108,167, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 72,170, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, - 54,189,194, 61, 14,215,126,191, 46,189,194, 61,192,171, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,192,171, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 88,172, 14, 3, 86, 1, 0, 0, - 1, 0, 0, 0,144,177, 14, 3, 32,167, 14, 3, 40, 0,104, 3, 0, 0, 0, 0, 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,128,175, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, - 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,164,172, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,128,175, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186, -224,255,127,191,114, 97,255,186,248,176, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,248,176, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,144,177, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, -200,182, 14, 3, 88,172, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,105,108,108, 47, 68,101,101,112,101,110, 0, 48, 48, - 49, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 0,184,180, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,168,117,109, 3, 5, 0, 0, 0, 0, 0, 0, 0, -232,220,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,220,177, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,184,180, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186, 48,182, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 48,182, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,200,182, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 0,188, 14, 3, -144,177, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,108, 97,116,116,101,110, 47, 67,111,110,116,114, 97,115,116, 0, 48, - 48, 49, 0, 0, 2, 0, 0, 3, 27, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,240,185, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,184,165,109, 3, 6, 0, 0, 0, 0, 0, 0, 0,192,222,103, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, - 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 8, 1, 0, 0, 20,183, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 16, 1, 0, 0,240,185, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, -104,187, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0,104,187, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 0,188, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 56,193, 14, 3,200,182, 14, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, 97, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 3, 28, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, - 40,191, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,248, 87,104, 3, 7, 0, 0, 0, 0, 0, 0, 0,240,245,106, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, - 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 8, 1, 0, 0, 76,188, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, - 40,191, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,160,192, 14, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 48, 0, 0, 0,160,192, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, -215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0,196, 2, 0, 0, 56,193, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,112,198, 14, 3, 0,188, 14, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 73,110,102,108, 97,116,101, 47, 68,101,102,108, 97,116,101, 0, 48, 48, 49, 0, 0, 0, 2, 0, 0, 3, - 29, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 96,196, 14, 3, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 64,201,103, 3, 8, 0, 0, 0, 0, 0, 0, 0,160,249,106, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, - 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0, -132,193, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 96,196, 14, 3, - 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,216,197, 14, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, -216,197, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, - 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, -196, 2, 0, 0,112,198, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,168,203, 14, 3, 56,193, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 30, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,152,201, 14, 3, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,192,242, 90, 3, 9, 0, 0, 0, 0, 0, 0, 0,128,232,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, - 20,174,199, 62, 20,174,199, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,188,198, 14, 3, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,152,201, 14, 3, 82, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 16,203, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 16,203, 14, 3, - 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, -168,203, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,224,208, 14, 3,112,198, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105, -103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 43, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,208,206, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -112, 35,131, 3, 21, 0, 0, 0, 0, 0, 0, 0,184, 50, 91, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,244,203, 14, 3, 32, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,208,206, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 72,208, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72,208, 14, 3, 80, 1, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, - 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,224,208, 14, 3, - 86, 1, 0, 0, 1, 0, 0, 0, 24,214, 14, 3,168,203, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 39, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 8,212, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,232,178,103, 3, - 22, 0, 0, 0, 0, 0, 0, 0, 88,238,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 44,209, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 8,212, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, - 54,189,194, 61, 14,215,126,191, 46,189,194, 61,128,213, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,128,213, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 24,214, 14, 3, 86, 1, 0, 0, - 1, 0, 0, 0, 80,219, 14, 3,224,208, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117,108,116,105,112,108,121, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 44, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 64,217, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 72,223,104, 3, 23, 0, 0, 0, - 0, 0, 0, 0, 64, 51, 91, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,100,214, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 64,217, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, - 14,215,126,191, 46,189,194, 61,184,218, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,184,218, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 80,219, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, -136,224, 14, 3, 24,214, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 78,117,100,103,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 31, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 0,120,222, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 80,184,104, 3, 10, 0, 0, 0, 0, 0, 0, 0, - 48,236,103, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,156,219, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,120,222, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, -114, 97,255,186,240,223, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,240,223, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,136,224, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,192,229, 14, 3, - 80,219, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,105,110, 99,104, 47, 77, 97,103,110,105,102,121, 0, 48, 48, 49, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 32, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,176,227, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,184, 64,106, 3, 11, 0, 0, 0, 0, 0, 0, 0, 40,193,103, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, - 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, - 68, 65, 84, 65, 8, 1, 0, 0,212,224, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 16, 1, 0, 0,176,227, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, - 40,229, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0, 40,229, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,192,229, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,248,234, 14, 3,136,224, 14, 3, - 9,186,107, 0, 0, 0, 0, 0, 66, 82, 80,111,108,105,115,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 3, 33, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, -232,232, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,144,131,104, 3, 6, 0, 0, 0, 0, 0, 0, 0,216,196,103, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 1, 0, 0, 0, 0, - 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, - 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 8, 1, 0, 0, 12,230, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, -232,232, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 96,234, 14, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 48, 0, 0, 0, 96,234, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, -215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0,196, 2, 0, 0,248,234, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0, 48,240, 14, 3,192,229, 14, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 83, 99,114, 97,112,101, 47, 80,101, 97,107,115, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, - 34, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 32,238, 14, 3, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 56, 36,104, 3, 12, 0, 0, 0, 0, 0, 0, 0,240, 31, 91, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, - 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, - 68,235, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 32,238, 14, 3, - 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,152,239, 14, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, -152,239, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, - 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, -196, 2, 0, 0, 48,240, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,104,245, 14, 3,248,234, 14, 3,164, 25,110, 0, 0, 0, 0, 0, - 66, 82, 83, 99,117,108,112,116, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 22, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 88,243, 14, 3, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,104,194, 91, 3, 4, 0, 0, 0, 0, 0, 0, 0,192, 15,105, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0,160,119, 78, 63, 0, 0,128, 63, - 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,124,240, 14, 3, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 88,243, 14, 3, 82, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,208,244, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,208,244, 14, 3, - 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, -104,245, 14, 3, 86, 1, 0, 0, 1, 0, 0, 0,160,250, 14, 3, 48,240, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109, -101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 48, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,144,248, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -224, 20,108, 3, 24, 0, 0, 0, 0, 0, 0, 0,136,174,107, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,180,245, 14, 3, 32, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,144,248, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 8,250, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8,250, 14, 3, 80, 1, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, - 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,160,250, 14, 3, - 86, 1, 0, 0, 1, 0, 0, 0,136, 0, 73, 3,104,245, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, - 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 35, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,200,253, 14, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 72,224, 90, 3, - 13, 0, 0, 0, 0, 0, 0, 0,160, 35, 91, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,236,250, 14, 3, 32, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,200,253, 14, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, - 46, 95,255,186,224,255,127,191,114, 97,255,186, 64,255, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 64,255, 14, 3, 80, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,136, 0, 73, 3, 86, 1, 0, 0, - 1, 0, 0, 0,192, 5, 73, 3,160,250, 14, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,110, 97,107,101, 32, 72,111,111,107, - 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 36, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,176, 3, 73, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 88, 32, 92, 3, 14, 0, 0, 0, - 0, 0, 0, 0,152, 67,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,212, 0, 73, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,176, 3, 73, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186, -224,255,127,191,114, 97,255,186, 40, 5, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40, 5, 73, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,192, 5, 73, 3, 86, 1, 0, 0, 1, 0, 0, 0, -248, 10, 73, 3,136, 0, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 49, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 0,232, 8, 73, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,176, 95,119, 3, 25, 0, 0, 0, 0, 0, 0, 0, - 72,253,123, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 4, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 12, 6, 73, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 16, 1, 0, 0,232, 8, 73, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61, 96, 10, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 96, 10, 73, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,248, 10, 73, 3, 86, 1, 0, 0, 1, 0, 0, 0, 48, 16, 73, 3, -192, 5, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,117, 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 2, 45, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 32, 14, 73, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,232,175,105, 3, 26, 0, 0, 0, 0, 0, 0, 0,208, 29,106, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,128, 68,225, 5, 17, 0, 0, 0, 0, 0, 0, 0,104,124,222, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7388,10 +6328,10 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 8, 1, 0, 0, 68, 11, 73, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 8, 1, 0, 0, 12,175, 64, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, @@ -7400,21 +6340,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 16, 1, 0, 0, 32, 14, 73, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 16, 1, 0, 0, 16,179, 64, 2, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, -152, 15, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96,180, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0,152, 15, 73, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 96,180, 64, 2, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 48, 16, 73, 3, 86, 1, 0, 0, 1, 0, 0, 0,104, 21, 73, 3,248, 10, 73, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,101,120, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 3, 46, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, - 88, 19, 73, 3, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,208,180, 64, 2, 86, 1, 0, 0, 1, 0, 0, 0,152,185, 64, 2,192,174, 64, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,111, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 3, 34, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +216,183, 64, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -7422,7 +6362,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,104, 48,128, 3, 27, 0, 0, 0, 0, 0, 0, 0,120,177, 10, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,120, 18,248, 5, 1, 0, 0, 0, 0, 0, 0, 0, 72,164,222, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7430,11 +6370,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, - 8, 1, 0, 0,124, 16, 73, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 1, 0, 0, 28,181, 64, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, @@ -7443,20 +6383,20 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, - 88, 19, 73, 3, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, +216,183, 64, 2, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,208, 20, 73, 3, + 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 40,185, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 48, 0, 0, 0,208, 20, 73, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 48, 0, 0, 0, 40,185, 64, 2, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0,196, 2, 0, 0,104, 21, 73, 3, 86, 1, 0, 0, 1, 0, 0, 0,160, 26, 73, 3, 48, 16, 73, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 84,104,117,109, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, - 37, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,144, 24, 73, 3, + 66, 82, 0, 0,196, 2, 0, 0,152,185, 64, 2, 86, 1, 0, 0, 1, 0, 0, 0, 96,190, 64, 2,208,180, 64, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 66,108,117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, + 24, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,160,188, 64, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, @@ -7465,7 +6405,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,112, 11,119, 3, 15, 0, 0, 0, 0, 0, 0, 0,152, 72,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0,246,222, 5, 18, 0, 0, 0, 0, 0, 0, 0, 72,154,222, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7473,11 +6413,11 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, - 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, -180, 21, 73, 3, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, +228,185, 64, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, @@ -7485,21 +6425,21 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,144, 24, 73, 3, - 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,160,188, 64, 2, + 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 8, 26, 73, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,240,189, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, - 8, 26, 73, 3, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, - 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, -196, 2, 0, 0,160, 26, 73, 3, 86, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104, 21, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 84,119,105,115,116, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 38, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,200, 29, 73, 3, 1, 0, 1, 0, +240,189, 64, 2, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, + 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, +196, 2, 0, 0, 96,190, 64, 2, 86, 1, 0, 0, 1, 0, 0, 0, 40,195, 64, 2,152,185, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 67,108, 97,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 35, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,104,193, 64, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7508,7 +6448,7 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,200,253,106, 3, 16, 0, 0, 0, 0, 0, 0, 0,232, 74,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,168,144,251, 5, 2, 0, 0, 0, 0, 0, 0, 0,192,213,224, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7516,10 +6456,10 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, 102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, - 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,236, 26, 73, 3, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,172,190, 64, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, @@ -7528,37 +6468,73 @@ char datatoc_startup_blend[]= { 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,200, 29, 73, 3, 82, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,104,193, 64, 2, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 64, 31, 73, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,184,194, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 64, 31, 73, 3, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,184,194, 64, 2, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, - 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 85, 83, 69, 82,248, 12, 0, 0, -192, 1,241, 1,194, 0, 0, 0, 1, 0, 0, 0, 33, 8, 17, 1, 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, + 40,195, 64, 2, 86, 1, 0, 0, 1, 0, 0, 0,240,199, 64, 2, 96,190, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, +111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 30, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 48,198, 64, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +112,162,225, 5, 19, 0, 0, 0, 0, 0, 0, 0,248,218, 41, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85,115,101,114,115, - 47,116,111,110, 47, 68,101,115,107,116,111,112, 47, 0, 45,112,111,119,101,114,112, 99, 47, 98,105,110, 47, 98,108,101,110,100, -101,114, 46, 97,112,112, 47, 67,111,110,116,101,110,116,115, 47, 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,116,195, 64, 2, 32, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 48,198, 64, 2, 82, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,128,199, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,128,199, 64, 2, 80, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, + 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,240,199, 64, 2, + 86, 1, 0, 0, 1, 0, 0, 0,184,204, 64, 2, 40,195, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,114,101, 97,115,101, + 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 36, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,248,202, 64, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,144, 71,244, 5, + 3, 0, 0, 0, 0, 0, 0, 0,128,116,236, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7566,24 +6542,84 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35, 0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, + 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 60,200, 64, 2, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,248,202, 64, 2, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,228, 97,175,190, + 50,131,112, 63,218,243,127,191, 10,183,157,188, 72,204, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72,204, 64, 2, 80, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215, 35, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,184,204, 64, 2, 86, 1, 0, 0, + 1, 0, 0, 0,128,209, 64, 2,240,199, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, 0, 48, 54, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 25, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,192,207, 64, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 16, 84,235, 5, 20, 0, 0, 0, + 0, 0, 0, 0,176,164,222, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 4,205, 64, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,192,207, 64, 2, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, + 14,215,126,191, 46,189,194, 61, 16,209, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 16,209, 64, 2, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,128,209, 64, 2, 86, 1, 0, 0, 1, 0, 0, 0, + 72,214, 64, 2,184,204, 64, 2, 40, 0,104, 3, 0, 0, 0, 0, 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0,136,212, 64, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7591,1837 +6627,2813 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, + 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,204,209, 64, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,136,212, 64, 2, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186,216,213, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, - 2, 0, 94, 1, 8, 0, 0, 0, 3, 0, 0, 0, 56, 52, 39, 1, 0, 0, 0, 0, 2, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0, - 68,172, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0,128, 0, 0, 0, 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0, 56, 45, 73, 3, - 56, 45, 73, 3,144,108, 3, 3,144,108, 3, 3, 88, 34, 2, 3, 88, 34, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,216,213, 64, 2, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 72,214, 64, 2, 86, 1, 0, 0, 1, 0, 0, 0, 16,219, 64, 2, +128,209, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,105,108,108, 47, 68,101,101,112,101,110, 0, 48, 48, 49, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 37, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 80,217, 64, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 80, 96,237, 5, 5, 0, 0, 0, 0, 0, 0, 0,200, 63,224, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 2, 0, 25, 0, 1, 0, 20, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63, -205,204, 76, 63,205,204, 76, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 30, 90,100,191, -154,153,153, 62,102,102,102, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31,250,254, 62, 9, 0, 0, 63,156,153, 25, 63, - 0, 0, 0, 0,205,204, 76, 62,205,204, 76, 62,205,204, 76, 62, 0, 0,128, 63, 44,135, 22, 63, 32,133,235, 62,184,243,125, 62, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,195, 73, 76, 63, 42,135, 86, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 43,135, 61, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 16, 47, 93, 62, 58,180,200,190, 24, 47, 93,190, 0, 0, 0, 0, 1, 0, 14, 0, - 0, 0, 25, 0, 15, 0,120, 0, 60, 0, 3, 0,128, 0, 0, 0, 0, 0, 0, 0,144, 31, 15, 0, 6, 0, 25, 0, 8, 0, 10, 0, -200, 0, 0, 0,100, 0,100, 0, 0, 0, 0, 0, 2, 0, 1, 0, 10, 0, 50, 0,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 8, 1, 0, 0,148,214, 64, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, + 16, 1, 0, 0, 80,217, 64, 2, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, +160,218, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, - 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0,243,133, 57, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 29, 0, 0, 56, 45, 73, 3,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, - 25, 25, 25,255,153,153,153,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0,255, 70, 70, 70,255, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, - 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, - 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 25, 25,255,180,180,180,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, - 25, 25, 25,255,180,180,180,255,153,153,153,255,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, - 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255,255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, - 0, 0, 0,255, 63, 63, 63,255, 86,128,194,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, - 0, 0, 0,255, 25, 25, 25,230, 45, 45, 45,230,100,100,100,255,160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, - 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, - 25, 25, 25,255,128,128,128,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, - 50, 50, 50,180, 80, 80, 80,180,100,100,100,180,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, - 0, 0, 0,255,190,190,190,255,100,100,100,180, 68, 68, 68,255, 0, 0, 0,255,255,255,255,255, 0, 0, 5, 0,251,255, 0, 0, - 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, -115,190, 76,255, 90,166, 51,255,240,235,100,255,215,211, 75,255,180, 0,255,255,153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, -200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, -240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255,204, 0,153,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, - 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, -128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255,255,255,255,255, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, -128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 76, 76, 76,255, 0, 0, 0, 0,250,250,250,255, 15, 15, 15,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -145,145,145,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100,255,140, 25,255,250,250,250,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,130,130,130,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, - 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, -144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250,250,250,255,250,250,250,255,250,250,250,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, - 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255, -255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, -200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, -240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, - 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, -128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, -128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, - 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, -144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255, -124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, - 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, - 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255, -255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, -200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, -240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 81,105,135,255,109, 88,129,255, 78,152, 62,255, 46,143,143,255,169, 84,124,255,126,126, 80,255,162, 95,111,255,109,145,131,255, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0,255,255,255, 10,255,133, 0, 60,255,133, 0,255, - 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, -128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, -128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, -110,110,110,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -132,132,132,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 94, 94, 94,255,172,172,172,255, 17, 27, 60,100, 94, 94, 94,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,195,195,195,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, - 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, -144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255, -255, 0, 0,255, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 0, 0,100, 0, 0,255, 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, -200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, -240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, - 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, -128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, -128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,255,255,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, - 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, -144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,155,155,155,160, -100,100,100,255,108,105,111,255,104,106,117,255,105,117,110,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, - 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, - 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, -240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, -200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, -240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, -240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, - 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, -128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, -128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,128,255,255, -255,255,255,255, 0,170, 0,255,220, 96, 96,255,220, 96, 96,255, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -154, 0, 0,255,189, 17, 17,255,247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, - 30,145, 9,255, 89,183, 11,255,131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0, -169, 41, 78,255,193, 65,106,255,240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, - 36,120, 90,255, 60,149,121,255,111,182,171,255, 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0, -244,201, 12,255,238,194, 54,255,243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0, -111, 47,106,255,152, 69,190,255,211, 48,214,255, 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0, -141,141,141,255,176,176,176,255,222,222,222,255, 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, - 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 68, 78, 65, 49,112,226, 0, 0, 0,221,126, 3, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, - 78, 65, 77, 69,200, 11, 0, 0, 42,110,101,120,116, 0, 42,112,114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, - 0, 42,108, 97,115,116, 0,120, 0,121, 0,122, 0,119, 0,120,109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, - 97,120, 0, 42,112,111,105,110,116,101,114, 0,103,114,111,117,112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0, -115,117, 98,116,121,112,101, 0,102,108, 97,103, 0,110, 97,109,101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0,100, 97,116, 97, - 0,108,101,110, 0,116,111,116, 97,108,108,101,110, 0, 42,110,101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 50, - 52, 93, 0,117,115, 0,105, 99,111,110, 95,105,100, 0, 42,112,114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, - 98,108,111, 99,107, 0, 42,102,105,108,101,100, 97,116, 97, 0,110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,108,101,112, 97, -116,104, 91, 50, 52, 48, 93, 0,116,111,116, 0,112, 97,100, 0, 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, - 93, 0, 99,104, 97,110,103,101,100, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 95,116,105,109,101,115,116, 97,109,112, 91, 50, - 93, 0, 42,114,101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, 98,108,111, 99,107,116,121,112,101, 0, 97,100,114, 99,111,100,101, - 0,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, 42, 98,101,122,116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, - 99,116, 0,118, 97,114,116,121,112,101, 0,116,111,116,118,101,114,116, 0,105,112,111, 0,101,120,116,114, 97,112, 0,114,116, - 0, 98,105,116,109, 97,115,107, 0,115,108,105,100,101, 95,109,105,110, 0,115,108,105,100,101, 95,109, 97,120, 0, 99,117,114, -118, 97,108, 0, 42,100,114,105,118,101,114, 0, 99,117,114,118,101, 0, 99,117,114, 0,115,104,111,119,107,101,121, 0,109,117, -116,101,105,112,111, 0,112,111,115, 0,114,101,108, 97,116,105,118,101, 0,116,111,116,101,108,101,109, 0,112, 97,100, 50, 0, - 42,119,101,105,103,104,116,115, 0,118,103,114,111,117,112, 91, 51, 50, 93, 0,115,108,105,100,101,114,109,105,110, 0,115,108, -105,100,101,114,109, 97,120, 0, 42, 97,100,116, 0, 42,114,101,102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, - 0,101,108,101,109,115,105,122,101, 0, 98,108,111, 99,107, 0, 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101, -121, 0,115,108,117,114,112,104, 0, 42,108,105,110,101, 0, 42,102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101, -110,111, 0,115,116, 97,114,116, 0,101,110,100, 0,112, 97,100, 49, 0,102,108, 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, - 0,112, 97,100, 91, 52, 93, 0, 42,110, 97,109,101, 0,110,108,105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108, - 0, 42,115,101,108,108, 0, 99,117,114, 99, 0,115,101,108, 99, 0,109, 97,114,107,101,114,115, 0, 42,117,110,100,111, 95, 98, -117,102, 0,117,110,100,111, 95,112,111,115, 0,117,110,100,111, 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,109, -116,105,109,101, 0,115,105,122,101, 0,115,101,101,107, 0,112, 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0, 99,108, -105,112,115,116, 97, 0, 99,108,105,112,101,110,100, 0,108,101,110,115, 0,111,114,116,104,111, 95,115, 99, 97,108,101, 0,100, -114, 97,119,115,105,122,101, 0,115,104,105,102,116,120, 0,115,104,105,102,116,121, 0, 89, 70, 95,100,111,102,100,105,115,116, - 0, 42,100,111,102, 95,111, 98, 0,102,114, 97,109,101,110,114, 0,102,114, 97,109,101,115, 0,111,102,102,115,101,116, 0,115, -102,114, 97, 0,102,105,101, 95,105,109, 97, 0, 99,121, 99,108, 0,111,107, 0,109,117,108,116,105, 95,105,110,100,101,120, 0, -108, 97,121,101,114, 0,112, 97,115,115, 0,109,101,110,117,110,114, 0, 42,115, 99,101,110,101, 0,105, 98,117,102,115, 0, 42, -103,112,117,116,101,120,116,117,114,101, 0, 42, 97,110,105,109, 0, 42,114,114, 0, 42,114,101,110,100,101,114,115, 91, 56, 93, - 0,114,101,110,100,101,114, 95,115,108,111,116, 0,108, 97,115,116, 95,114,101,110,100,101,114, 95,115,108,111,116, 0,115,111, -117,114, 99,101, 0,108, 97,115,116,102,114, 97,109,101, 0,116,112, 97,103,101,102,108, 97,103, 0,116,111,116, 98,105,110,100, - 0,120,114,101,112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119,101,110,100, 0, 98,105,110,100, 99,111,100,101, 0, - 42,114,101,112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108,101, 0, 42,112,114,101,118,105,101,119, 0,108, 97, -115,116,117,112,100, 97,116,101, 0,108, 97,115,116,117,115,101,100, 0, 97,110,105,109,115,112,101,101,100, 0,103,101,110, 95, -120, 0,103,101,110, 95,121, 0,103,101,110, 95,116,121,112,101, 0, 97,115,112,120, 0, 97,115,112,121, 0,116,101,120, 99,111, - 0,109, 97,112,116,111, 0,109, 97,112,116,111,110,101,103, 0, 98,108,101,110,100,116,121,112,101, 0, 42,111, 98,106,101, 99, -116, 0, 42,116,101,120, 0,117,118,110, 97,109,101, 91, 51, 50, 93, 0,112,114,111,106,120, 0,112,114,111,106,121, 0,112,114, -111,106,122, 0,109, 97,112,112,105,110,103, 0,111,102,115, 91, 51, 93, 0,115,105,122,101, 91, 51, 93, 0,114,111,116, 0,116, -101,120,102,108, 97,103, 0, 99,111,108,111,114,109,111,100,101,108, 0,112,109, 97,112,116,111, 0,112,109, 97,112,116,111,110, -101,103, 0,110,111,114,109, 97,112,115,112, 97, 99,101, 0,119,104,105, 99,104, 95,111,117,116,112,117,116, 0, 98,114,117,115, -104, 95,109, 97,112, 95,109,111,100,101, 0,112, 97,100, 91, 55, 93, 0,114, 0,103, 0, 98, 0,107, 0,100,101,102, 95,118, 97, -114, 0, 99,111,108,102, 97, 99, 0,118, 97,114,102, 97, 99, 0,110,111,114,102, 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, - 97,114,112,102, 97, 99, 0, 99,111,108,115,112,101, 99,102, 97, 99, 0,109,105,114,114,102, 97, 99, 0, 97,108,112,104, 97,102, - 97, 99, 0,100,105,102,102,102, 97, 99, 0,115,112,101, 99,102, 97, 99, 0,101,109,105,116,102, 97, 99, 0,104, 97,114,100,102, - 97, 99, 0,114, 97,121,109,105,114,114,102, 97, 99, 0,116,114, 97,110,115,108,102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99, -111,108,101,109,105,116,102, 97, 99, 0, 99,111,108,114,101,102,108,102, 97, 99, 0, 99,111,108,116,114, 97,110,115,102, 97, 99, - 0,100,101,110,115,102, 97, 99, 0,115, 99, 97,116,116,101,114,102, 97, 99, 0,114,101,102,108,102, 97, 99, 0,116,105,109,101, -102, 97, 99, 0,108,101,110,103,116,104,102, 97, 99, 0, 99,108,117,109,112,102, 97, 99, 0,107,105,110,107,102, 97, 99, 0,114, -111,117,103,104,102, 97, 99, 0,112, 97,100,101,110,115,102, 97, 99, 0,108,105,102,101,102, 97, 99, 0,115,105,122,101,102, 97, - 99, 0,105,118,101,108,102, 97, 99, 0,112,118,101,108,102, 97, 99, 0,115,104, 97,100,111,119,102, 97, 99, 0,122,101,110,117, -112,102, 97, 99, 0,122,101,110,100,111,119,110,102, 97, 99, 0, 98,108,101,110,100,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, - 48, 93, 0, 42,104, 97,110,100,108,101, 0, 42,112,110, 97,109,101, 0, 42,115,116,110, 97,109,101,115, 0,115,116,121,112,101, -115, 0,118, 97,114,115, 0, 42,118, 97,114,115,116,114, 0, 42,114,101,115,117,108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, - 97, 91, 51, 50, 93, 0, 40, 42,100,111,105,116, 41, 40, 41, 0, 40, 42,105,110,115,116, 97,110, 99,101, 95,105,110,105,116, 41, - 40, 41, 0, 40, 42, 99, 97,108,108, 98, 97, 99,107, 41, 40, 41, 0,118,101,114,115,105,111,110, 0, 97, 0,105,112,111,116,121, -112,101, 0, 42,105,109, 97, 0, 42, 99,117, 98,101, 91, 54, 93, 0,105,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, - 97,116, 91, 51, 93, 91, 51, 93, 0,115,116,121,112,101, 0,118,105,101,119,115, 99, 97,108,101, 0,110,111,116,108, 97,121, 0, - 99,117, 98,101,114,101,115, 0,100,101,112,116,104, 0,114,101, 99, 97,108, 99, 0,108, 97,115,116,115,105,122,101, 0,102, 97, -108,108,111,102,102, 95,116,121,112,101, 0,102, 97,108,108,111,102,102, 95,115,111,102,116,110,101,115,115, 0,114, 97,100,105, -117,115, 0, 99,111,108,111,114, 95,115,111,117,114, 99,101, 0,116,111,116,112,111,105,110,116,115, 0,112,100,112, 97,100, 0, -112,115,121,115, 0,112,115,121,115, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115, -112, 97, 99,101, 0, 42,112,111,105,110,116, 95,116,114,101,101, 0, 42,112,111,105,110,116, 95,100, 97,116, 97, 0,110,111,105, -115,101, 95,115,105,122,101, 0,110,111,105,115,101, 95,100,101,112,116,104, 0,110,111,105,115,101, 95,105,110,102,108,117,101, -110, 99,101, 0,110,111,105,115,101, 95, 98, 97,115,105,115, 0,112,100,112, 97,100, 51, 91, 51, 93, 0,110,111,105,115,101, 95, -102, 97, 99, 0,115,112,101,101,100, 95,115, 99, 97,108,101, 0, 42, 99,111, 98, 97, 0,114,101,115,111,108, 91, 51, 93, 0,105, -110,116,101,114,112, 95,116,121,112,101, 0,102,105,108,101, 95,102,111,114,109, 97,116, 0,101,120,116,101,110,100, 0,115,109, -111,107,101,100, 95,116,121,112,101, 0,105,110,116, 95,109,117,108,116,105,112,108,105,101,114, 0,115,116,105,108,108, 95,102, -114, 97,109,101, 0,115,111,117,114, 99,101, 95,112, 97,116,104, 91, 50, 52, 48, 93, 0, 42,100, 97,116, 97,115,101,116, 0, 99, - 97, 99,104,101,100,102,114, 97,109,101, 0,110,111,105,115,101,115,105,122,101, 0,116,117,114, 98,117,108, 0, 98,114,105,103, -104,116, 0, 99,111,110,116,114, 97,115,116, 0,115, 97,116,117,114, 97,116,105,111,110, 0,114,102, 97, 99, 0,103,102, 97, 99, - 0, 98,102, 97, 99, 0,102,105,108,116,101,114,115,105,122,101, 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, 97,114, -105,116,121, 0,109,103, 95,111, 99,116, 97,118,101,115, 0,109,103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97,105,110, - 0,100,105,115,116, 95, 97,109,111,117,110,116, 0,110,115, 95,111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, 0,118, -110, 95,119, 50, 0,118,110, 95,119, 51, 0,118,110, 95,119, 52, 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105,115,116, -109, 0,118,110, 95, 99,111,108,116,121,112,101, 0,110,111,105,115,101,100,101,112,116,104, 0,110,111,105,115,101,116,121,112, -101, 0,110,111,105,115,101, 98, 97,115,105,115, 0,110,111,105,115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, 97,103, - 0, 99,114,111,112,120,109,105,110, 0, 99,114,111,112,121,109,105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114,111,112, -121,109, 97,120, 0,116,101,120,102,105,108,116,101,114, 0, 97,102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101, -112,101, 97,116, 0, 99,104,101, 99,107,101,114,100,105,115,116, 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42,110,111, -100,101,116,114,101,101, 0, 42,112,108,117,103,105,110, 0, 42,101,110,118, 0, 42,112,100, 0, 42,118,100, 0,117,115,101, 95, -110,111,100,101,115, 0,108,111, 99, 91, 51, 93, 0,114,111,116, 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105, -110, 91, 51, 93, 0,109, 97,120, 91, 51, 93, 0,109,111,100,101, 0,116,111,116,101,120, 0,115,104,100,119,114, 0,115,104,100, -119,103, 0,115,104,100,119, 98, 0,115,104,100,119,112, 97,100, 0,101,110,101,114,103,121, 0,100,105,115,116, 0,115,112,111, -116,115,105,122,101, 0,115,112,111,116, 98,108,101,110,100, 0,104, 97,105,110,116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, - 42, 99,117,114,102, 97,108,108,111,102,102, 0,115,104, 97,100,115,112,111,116,115,105,122,101, 0, 98,105, 97,115, 0,115,111, -102,116, 0, 99,111,109,112,114,101,115,115,116,104,114,101,115,104, 0,112, 97,100, 53, 91, 51, 93, 0, 98,117,102,115,105,122, -101, 0,115, 97,109,112, 0, 98,117,102,102,101,114,115, 0,102,105,108,116,101,114,116,121,112,101, 0, 98,117,102,102,108, 97, -103, 0, 98,117,102,116,121,112,101, 0,114, 97,121, 95,115, 97,109,112, 0,114, 97,121, 95,115, 97,109,112,121, 0,114, 97,121, - 95,115, 97,109,112,122, 0,114, 97,121, 95,115, 97,109,112, 95,116,121,112,101, 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, - 97,114,101, 97, 95,115,105,122,101, 0, 97,114,101, 97, 95,115,105,122,101,121, 0, 97,114,101, 97, 95,115,105,122,101,122, 0, - 97,100, 97,112,116, 95,116,104,114,101,115,104, 0,114, 97,121, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0,116,101,120, - 97, 99,116, 0,115,104, 97,100,104, 97,108,111,115,116,101,112, 0,115,117,110, 95,101,102,102,101, 99,116, 95,116,121,112,101, - 0,115,107,121, 98,108,101,110,100,116,121,112,101, 0,104,111,114,105,122,111,110, 95, 98,114,105,103,104,116,110,101,115,115, - 0,115,112,114,101, 97,100, 0,115,117,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,117,110, 95,115,105,122,101, 0, - 98, 97, 99,107,115, 99, 97,116,116,101,114,101,100, 95,108,105,103,104,116, 0,115,117,110, 95,105,110,116,101,110,115,105,116, -121, 0, 97,116,109, 95,116,117,114, 98,105,100,105,116,121, 0, 97,116,109, 95,105,110,115, 99, 97,116,116,101,114,105,110,103, - 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,101,120,116,105,110, 99,116,105,111,110, 95,102, 97, 99,116,111,114, 0, 97,116, -109, 95,100,105,115,116, 97,110, 99,101, 95,102, 97, 99,116,111,114, 0,115,107,121, 98,108,101,110,100,102, 97, 99, 0,115,107, -121, 95,101,120,112,111,115,117,114,101, 0,115,107,121, 95, 99,111,108,111,114,115,112, 97, 99,101, 0,112, 97,100, 52, 91, 54, - 93, 0, 42,109,116,101,120, 91, 49, 56, 93, 0,112,114, 95,116,101,120,116,117,114,101, 0,112, 97,100, 54, 91, 54, 93, 0,100, -101,110,115,105,116,121, 0,101,109,105,115,115,105,111,110, 0,115, 99, 97,116,116,101,114,105,110,103, 0,114,101,102,108,101, - 99,116,105,111,110, 0,101,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,116,114, 97,110,115,109,105,115,115,105, -111,110, 95, 99,111,108, 91, 51, 93, 0,114,101,102,108,101, 99,116,105,111,110, 95, 99,111,108, 91, 51, 93, 0,100,101,110,115, -105,116,121, 95,115, 99, 97,108,101, 0,100,101,112,116,104, 95, 99,117,116,111,102,102, 0, 97,115,121,109,109,101,116,114,121, - 0,115,116,101,112,115,105,122,101, 95,116,121,112,101, 0,115,104, 97,100,101,102,108, 97,103, 0,115,104, 97,100,101, 95,116, -121,112,101, 0,112,114,101, 99, 97, 99,104,101, 95,114,101,115,111,108,117,116,105,111,110, 0,115,116,101,112,115,105,122,101, - 0,109,115, 95,100,105,102,102, 0,109,115, 95,105,110,116,101,110,115,105,116,121, 0,109,115, 95,115,112,114,101, 97,100, 0, -109, 97,116,101,114,105, 97,108, 95,116,121,112,101, 0,115,112,101, 99,114, 0,115,112,101, 99,103, 0,115,112,101, 99, 98, 0, -109,105,114,114, 0,109,105,114,103, 0,109,105,114, 98, 0, 97,109, 98,114, 0, 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, - 98, 0,101,109,105,116, 0, 97,110,103, 0,115,112,101, 99,116,114, 97, 0,114, 97,121, 95,109,105,114,114,111,114, 0, 97,108, -112,104, 97, 0,114,101,102, 0,115,112,101, 99, 0,122,111,102,102,115, 0, 97,100,100, 0,116,114, 97,110,115,108,117, 99,101, -110, 99,121, 0,118,111,108, 0,102,114,101,115,110,101,108, 95,109,105,114, 0,102,114,101,115,110,101,108, 95,109,105,114, 95, -105, 0,102,114,101,115,110,101,108, 95,116,114, 97, 0,102,114,101,115,110,101,108, 95,116,114, 97, 95,105, 0,102,105,108,116, -101,114, 0,116,120, 95,108,105,109,105,116, 0,116,120, 95,102, 97,108,108,111,102,102, 0,114, 97,121, 95,100,101,112,116,104, - 0,114, 97,121, 95,100,101,112,116,104, 95,116,114, 97, 0,104, 97,114, 0,115,101,101,100, 49, 0,115,101,101,100, 50, 0,103, -108,111,115,115, 95,109,105,114, 0,103,108,111,115,115, 95,116,114, 97, 0,115, 97,109,112, 95,103,108,111,115,115, 95,109,105, -114, 0,115, 97,109,112, 95,103,108,111,115,115, 95,116,114, 97, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,109,105, -114, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,116,114, 97, 0, 97,110,105,115,111, 95,103,108,111,115,115, 95,109, -105,114, 0,100,105,115,116, 95,109,105,114, 0,102, 97,100,101,116,111, 95,109,105,114, 0,115,104, 97,100,101, 95,102,108, 97, -103, 0,109,111,100,101, 95,108, 0,102,108, 97,114,101, 99, 0,115,116, 97,114, 99, 0,108,105,110,101, 99, 0,114,105,110,103, - 99, 0,104, 97,115,105,122,101, 0,102,108, 97,114,101,115,105,122,101, 0,115,117, 98,115,105,122,101, 0,102,108, 97,114,101, - 98,111,111,115,116, 0,115,116,114, 97,110,100, 95,115,116, 97, 0,115,116,114, 97,110,100, 95,101,110,100, 0,115,116,114, 97, -110,100, 95,101, 97,115,101, 0,115,116,114, 97,110,100, 95,115,117,114,102,110,111,114, 0,115,116,114, 97,110,100, 95,109,105, -110, 0,115,116,114, 97,110,100, 95,119,105,100,116,104,102, 97,100,101, 0,115,116,114, 97,110,100, 95,117,118,110, 97,109,101, - 91, 51, 50, 93, 0,115, 98,105, 97,115, 0,108, 98,105, 97,115, 0,115,104, 97,100, 95, 97,108,112,104, 97, 0,115,101,112,116, -101,120, 0,114,103, 98,115,101,108, 0,112,114, 95,116,121,112,101, 0,112,114, 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109, -112, 0,109,108, 95,102,108, 97,103, 0,100,105,102,102, 95,115,104, 97,100,101,114, 0,115,112,101, 99, 95,115,104, 97,100,101, -114, 0,114,111,117,103,104,110,101,115,115, 0,114,101,102,114, 97, 99, 0,112, 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0, -100, 97,114,107,110,101,115,115, 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42,114, 97,109,112, 95,115,112,101, 99, 0,114, 97, -109,112,105,110, 95, 99,111,108, 0,114, 97,109,112,105,110, 95,115,112,101, 99, 0,114, 97,109,112, 98,108,101,110,100, 95, 99, -111,108, 0,114, 97,109,112, 98,108,101,110,100, 95,115,112,101, 99, 0,114, 97,109,112, 95,115,104,111,119, 0,112, 97,100, 51, - 0,114, 97,109,112,102, 97, 99, 95, 99,111,108, 0,114, 97,109,112,102, 97, 99, 95,115,112,101, 99, 0, 42,103,114,111,117,112, - 0,102,114,105, 99,116,105,111,110, 0,102,104, 0,114,101,102,108,101, 99,116, 0,102,104,100,105,115,116, 0,120,121,102,114, -105, 99,116, 0,100,121,110, 97,109,111,100,101, 0,115,115,115, 95,114, 97,100,105,117,115, 91, 51, 93, 0,115,115,115, 95, 99, -111,108, 91, 51, 93, 0,115,115,115, 95,101,114,114,111,114, 0,115,115,115, 95,115, 99, 97,108,101, 0,115,115,115, 95,105,111, -114, 0,115,115,115, 95, 99,111,108,102, 97, 99, 0,115,115,115, 95,116,101,120,102, 97, 99, 0,115,115,115, 95,102,114,111,110, -116, 0,115,115,115, 95, 98, 97, 99,107, 0,115,115,115, 95,102,108, 97,103, 0,115,115,115, 95,112,114,101,115,101,116, 0,109, - 97,112,116,111, 95,116,101,120,116,117,114,101,100, 0,112, 97,100, 52, 0,103,112,117,109, 97,116,101,114,105, 97,108, 0,110, - 97,109,101, 91, 50, 53, 54, 93, 0, 42, 98, 98, 0,105, 49, 0,106, 49, 0,107, 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115, -101,108, 99,111,108, 49, 0,115,101,108, 99,111,108, 50, 0,113,117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,101,120,112,121, - 0,101,120,112,122, 0,114, 97,100, 0,114, 97,100, 50, 0,115, 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,101,108,101,109, -115, 0,100,105,115,112, 0, 42,101,100,105,116,101,108,101,109,115, 0, 42, 42,109, 97,116, 0,102,108, 97,103, 50, 0,116,111, -116, 99,111,108, 0,119,105,114,101,115,105,122,101, 0,114,101,110,100,101,114,115,105,122,101, 0,116,104,114,101,115,104, 0, - 42,108, 97,115,116,101,108,101,109, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,104,116, 0, -104, 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104,105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110, -114, 0,112,110,116,115,117, 0,112,110,116,115,118, 0,114,101,115,111,108,117, 0,114,101,115,111,108,118, 0,111,114,100,101, -114,117, 0,111,114,100,101,114,118, 0,102,108, 97,103,117, 0,102,108, 97,103,118, 0, 42,107,110,111,116,115,117, 0, 42,107, -110,111,116,115,118, 0,116,105,108,116, 95,105,110,116,101,114,112, 0,114, 97,100,105,117,115, 95,105,110,116,101,114,112, 0, - 99,104, 97,114,105,100,120, 0,107,101,114,110, 0,104, 0,110,117,114, 98, 0, 42,101,100,105,116,110,117,114, 98, 0, 42, 98, -101,118,111, 98,106, 0, 42,116, 97,112,101,114,111, 98,106, 0, 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,112, 97, -116,104, 0, 42,107,101,121, 0, 98,101,118, 0,100,114, 97,119,102,108, 97,103, 0,116,119,105,115,116, 95,109,111,100,101, 0, -112, 97,100, 91, 50, 93, 0,116,119,105,115,116, 95,115,109,111,111,116,104, 0,115,109, 97,108,108, 99, 97,112,115, 95,115, 99, - 97,108,101, 0,112, 97,116,104,108,101,110, 0, 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0, -101,120,116, 50, 0,114,101,115,111,108,117, 95,114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117, - 0, 42,108, 97,115,116,115,101,108, 0,115,112, 97, 99,101,109,111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101, -100,105,115,116, 0,115,104,101, 97,114, 0,102,115,105,122,101, 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, - 0,117,108,104,101,105,103,104,116, 0,120,111,102, 0,121,111,102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, - 0, 42,115,101,108, 98,111,120,101,115, 0, 42,101,100,105,116,102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, - 42,118,102,111,110,116, 0, 42,118,102,111,110,116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0, -115,101,112, 99,104, 97,114, 0, 99,116,105,109,101, 0,116,111,116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0, -115,101,108,115,116, 97,114,116, 0,115,101,108,101,110,100, 0, 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, - 0,101,102,102,101, 99,116, 0, 42,109,102, 97, 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109, -118,101,114,116, 0, 42,109,101,100,103,101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107, -121, 0, 42,116,101,120, 99,111,109,101,115,104, 0, 42,109,115,101,108,101, 99,116, 0, 42,101,100,105,116, 95,109,101,115,104, - 0,118,100, 97,116, 97, 0,101,100, 97,116, 97, 0,102,100, 97,116, 97, 0,116,111,116,101,100,103,101, 0,116,111,116,102, 97, - 99,101, 0,116,111,116,115,101,108,101, 99,116, 0, 97, 99,116, 95,102, 97, 99,101, 0,101,100,105,116,102,108, 97,103, 0, 99, -117, 98,101,109, 97,112,115,105,122,101, 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98, -100,105,118,114, 0,115,117, 98,115,117,114,102,116,121,112,101, 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,103,101, 0, -117,118, 91, 52, 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, - 97,112, 0,118, 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,119,101, -105,103,104,116, 0,100,101,102, 95,110,114, 0, 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0, -110,111, 91, 51, 93, 0,117,118, 91, 50, 93, 0, 99,111, 91, 50, 93, 0,105,110,100,101,120, 0,102, 0,105, 0,115, 91, 50, 53, - 54, 93, 0,116,111,116,100,105,115,112, 0, 40, 42,100,105,115,112,115, 41, 40, 41, 0,118, 91, 52, 93, 0,109,105,100, 0,118, - 91, 50, 93, 0, 42,102, 97, 99,101,115, 0, 42, 99,111,108,102, 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,118,101,114, -116,115, 0,108,101,118,101,108,115, 0,108,101,118,101,108, 95, 99,111,117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101, -119,108,118,108, 0,101,100,103,101,108,118,108, 0,112,105,110,108,118,108, 0,114,101,110,100,101,114,108,118,108, 0,117,115, -101, 95, 99,111,108, 0, 42,101,100,103,101, 95,102,108, 97,103,115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, - 42,118,101,114,116, 95,109, 97,112, 0, 42,101,100,103,101, 95,109, 97,112, 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42, -111,108,100, 95,101,100,103,101,115, 0,115,116, 97, 99,107,105,110,100,101,120, 0, 42,101,114,114,111,114, 0,109,111,100,105, -102,105,101,114, 0,115,117, 98,100,105,118, 84,121,112,101, 0,114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, - 67, 97, 99,104,101, 0, 42,109, 67, 97, 99,104,101, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,101,110, -103,116,104, 0,114, 97,110,100,111,109,105,122,101, 0,115,101,101,100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116, 97,114, -116, 95, 99, 97,112, 0, 42,101,110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, - 95,111, 98, 0,111,102,102,115,101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115, -116, 0,102,105,116, 95,116,121,112,101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105, -115, 0,116,111,108,101,114, 97,110, 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103, -108,101, 0,118, 97,108,117,101, 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, - 0,101, 95,102,108, 97,103,115, 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, - 91, 51, 50, 93, 0, 42,100,111,109, 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,116,105,109,101, 0, 42,116, -101,120,116,117,114,101, 0,115,116,114,101,110,103,116,104, 0,100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118, -101,108, 0,116,101,120,109, 97,112,112,105,110,103, 0, 42,109, 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101, -114, 95,110, 97,109,101, 91, 51, 50, 93, 0,117,118,108, 97,121,101,114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,116,111, -114,115, 91, 49, 48, 93, 0, 42,105,109, 97,103,101, 0,110,117,109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112, -101, 99,116,120, 0, 97,115,112,101, 99,116,121, 0,115, 99, 97,108,101,120, 0,115, 99, 97,108,101,121, 0,112,101,114, 99,101, -110,116, 0,102, 97, 99,101, 67,111,117,110,116, 0,102, 97, 99, 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99, -101,110,116,101,114, 0,115,116, 97,114,116,120, 0,115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111, -119, 0,115,112,101,101,100, 0,100, 97,109,112, 0,102, 97,108,108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105, -102,101,116,105,109,101, 0,100,101,102,111,114,109,102,108, 97,103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, - 0,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112, 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99, -101,110,116, 91, 51, 93, 0, 42,105,110,100,101,120, 97,114, 0,116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, - 99,108,111,116,104, 79, 98,106,101, 99,116, 0, 42,115,105,109, 95,112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114, -109,115, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 0,112,116, 99, 97, 99,104,101,115, 0, 42,120, 0, 42,120,110,101, -119, 0, 42,120,111,108,100, 0, 42, 99,117,114,114,101,110,116, 95,120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, - 0, 42, 99,117,114,114,101,110,116, 95,118, 0, 42,109,102, 97, 99,101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109, -102, 97, 99,101,115, 0, 42, 98,118,104,116,114,101,101, 0, 42,118, 0, 42,100,109, 0, 99,102,114, 97, 0,111,112,101,114, 97, -116,105,111,110, 0,118,101,114,116,101,120, 0,116,111,116,105,110,102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,122, -101, 0, 42, 98,105,110,100,105,110,102,108,117,101,110, 99,101,115, 0, 42, 98,105,110,100,111,102,102,115,101,116,115, 0, 42, - 98,105,110,100, 99, 97,103,101, 99,111,115, 0,116,111,116, 99, 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,100, - 0, 42,100,121,110,105,110,102,108,117,101,110, 99,101,115, 0, 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0, -100,121,110,103,114,105,100,115,105,122,101, 0,100,121,110, 99,101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108, -108,119,105,100,116,104, 0, 98,105,110,100,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42, 98,105,110,100,119,101,105,103,104,116, -115, 0, 42, 98,105,110,100, 99,111,115, 0, 40, 42, 98,105,110,100,102,117,110, 99, 41, 40, 41, 0, 42,112,115,121,115, 0,116, -111,116,100,109,118,101,114,116, 0,116,111,116,100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,111,115, -105,116,105,111,110, 0,114, 97,110,100,111,109, 95,112,111,115,105,116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103, -114,111,117,112, 0,112,114,111,116,101, 99,116, 0,108,118,108, 0,115, 99,117,108,112,116,108,118,108, 0,116,111,116,108,118, -108, 0,115,105,109,112,108,101, 0, 42,102,115,115, 0, 42,116, 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, - 0,118,103,114,111,117,112, 95,110, 97,109,101, 91, 51, 50, 93, 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, - 84,121,112,101, 0,115,104,114,105,110,107, 79,112,116,115, 0,112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, - 76,101,118,101,108,115, 0, 42,111,114,105,103,105,110, 0,102, 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111, -114,105,103,105,110, 79,112,116,115, 0,111,102,102,115,101,116, 95,102, 97, 99, 0, 99,114,101, 97,115,101, 95,105,110,110,101, -114, 0, 99,114,101, 97,115,101, 95,111,117,116,101,114, 0, 99,114,101, 97,115,101, 95,114,105,109, 0, 42,111, 98, 95, 97,120, -105,115, 0,115,116,101,112,115, 0,114,101,110,100,101,114, 95,115,116,101,112,115, 0,105,116,101,114, 0,115, 99,114,101,119, - 95,111,102,115, 0, 97,110,103,108,101, 0,112,110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111, -112,110,116,115,119, 0,116,121,112,101,117, 0,116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, - 0,100,117, 0,100,118, 0,100,119, 0, 42,100,101,102, 0, 42,108, 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, - 97,116, 91, 52, 93, 91, 52, 93, 0, 42,101,100,105,116,108, 97,116,116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99, -117,108,112,116, 0,112, 97,114,116,121,112,101, 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115, -117, 98,115,116,114, 91, 51, 50, 93, 0, 42,116,114, 97, 99,107, 0, 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103, -114,111,117,112, 0, 42,112,114,111,120,121, 95,102,114,111,109, 0, 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, - 98, 0, 42,112,111,115,101, 0, 42,103,112,100, 0, 97,118,115, 0, 42,109,112, 97,116,104, 0, 99,111,110,115,116,114, 97,105, -110,116, 67,104, 97,110,110,101,108,115, 0,100,101,102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115, 0,114,101,115, -116,111,114,101, 95,109,111,100,101, 0, 42,109, 97,116, 98,105,116,115, 0, 97, 99,116, 99,111,108, 0,100,108,111, 99, 91, 51, - 93, 0,111,114,105,103, 91, 51, 93, 0,100,115,105,122,101, 91, 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116, - 91, 52, 93, 0,114,111,116, 65,120,105,115, 91, 51, 93, 0,100,114,111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110, -103,108,101, 0,100,114,111,116, 65,110,103,108,101, 0,111, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105, -110,118, 91, 52, 93, 91, 52, 93, 0,108, 97,121, 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,112, -114,111,116,101, 99,116,102,108, 97,103, 0,116,114, 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102, -108, 97,103, 0,105,112,111,102,108, 97,103, 0,105,112,111,119,105,110, 0,115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105, -115,102,108, 97,103, 0, 98,111,117,110,100,116,121,112,101, 0,100,117,112,111,110, 0,100,117,112,111,102,102, 0,100,117,112, -115,116, 97, 0,100,117,112,101,110,100, 0,115,102, 0,109, 97,115,115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116, -105, 97, 0,102,111,114,109,102, 97, 99,116,111,114, 0,114,100, 97,109,112,105,110,103, 0,109, 97,114,103,105,110, 0,109, 97, -120, 95,118,101,108, 0,109,105,110, 95,118,101,108, 0,109, 95, 99,111,110,116, 97, 99,116, 80,114,111, 99,101,115,115,105,110, -103, 84,104,114,101,115,104,111,108,100, 0,114,111,116,109,111,100,101, 0,100,116, 0,100,116,120, 0,101,109,112,116,121, 95, -100,114, 97,119,116,121,112,101, 0,112, 97,100, 49, 91, 51, 93, 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0, -100,117,112,102, 97, 99,101,115, 99, 97, 0,112,114,111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108, -101,114,115, 0, 97, 99,116,117, 97,116,111,114,115, 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, - 97,109,101,102,108, 97,103, 0,103, 97,109,101,102,108, 97,103, 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97, -103, 0, 97,110,105,115,111,116,114,111,112,105, 99, 70,114,105, 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97, -105,110,116,115, 0,110,108, 97,115,116,114,105,112,115, 0,104,111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115, -116,101,109, 0, 42,115,111,102,116, 0, 42,100,117,112, 95,103,114,111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97, -103, 0,114,101,115,116,114,105, 99,116,102,108, 97,103, 0,115,104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, - 0,114,101, 99, 97,108, 99,111, 0, 98,111,100,121, 95,116,121,112,101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116, -105,110,103,115, 0, 42,100,101,114,105,118,101,100, 68,101,102,111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97, -108, 0,108, 97,115,116, 68, 97,116, 97, 77, 97,115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0, -103,112,117,108, 97,109,112, 0,112, 99, 95,105,100,115, 0, 42,100,117,112,108,105,108,105,115,116, 0, 99,117,114,105,110,100, -101,120, 0, 97, 99,116,105,118,101, 0,111,114,105,103,108, 97,121, 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116, -101,100, 0,111,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111,114, 99,111, 91, 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111, -114, 99,101,102,105,101,108,100, 0,115,104, 97,112,101, 0,116,101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110, -107, 95, 97,120,105,115, 0,122,100,105,114, 0,102, 95,115,116,114,101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95, -102,108,111,119, 0,102, 95,115,105,122,101, 0,102, 95,112,111,119,101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100, -105,115,116, 0,102, 95,112,111,119,101,114, 95,114, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,100, 0,112,100,101,102, - 95,100, 97,109,112, 0,112,100,101,102, 95,114,100, 97,109,112, 0,112,100,101,102, 95,112,101,114,109, 0,112,100,101,102, 95, -102,114,105, 99,116, 0,112,100,101,102, 95,114,102,114,105, 99,116, 0,112,100,101,102, 95,115,116,105, 99,107,110,101,115,115, - 0, 97, 98,115,111,114,112,116,105,111,110, 0,112,100,101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105, -102,116, 0,112,100,101,102, 95,115, 98,111,102,116, 0, 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111, -119, 0,107,105,110,107, 95,102,114,101,113, 0,107,105,110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0, -102,114,101,101, 95,101,110,100, 0,116,101,120, 95,110, 97, 98,108, 97, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0, -119,101,105,103,104,116, 91, 49, 51, 93, 0,103,108,111, 98, 97,108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93, 0, -102,114, 97,109,101, 0,116,111,116,112,111,105,110,116, 0,100, 97,116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,120, - 95, 97,114,114, 97,121, 0, 42,100, 97,116, 97, 91, 56, 93, 0, 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, 0,115,105,109, -102,114, 97,109,101, 0,115,116, 97,114,116,102,114, 97,109,101, 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, - 97,109,101, 0,108, 97,115,116, 95,101,120, 97, 99,116, 0,110, 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,109, -101, 91, 54, 52, 93, 0,105,110,102,111, 91, 54, 52, 93, 0,112, 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97, 99, -104,101, 0, 42,101,100,105,116, 0, 40, 42,102,114,101,101, 95,101,100,105,116, 41, 40, 41, 0,108,105,110, 83,116,105,102,102, - 0, 97,110,103, 83,116,105,102,102, 0,118,111,108,117,109,101, 0,118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,116, -101,114, 97,116,105,111,110,115, 0,100,105,116,101,114, 97,116,105,111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,115, - 0,107, 83, 82, 72, 82, 95, 67, 76, 0,107, 83, 75, 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82, 95, - 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 75, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76, 0, -107, 86, 67, 70, 0,107, 68, 80, 0,107, 68, 71, 0,107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77, 84, - 0,107, 67, 72, 82, 0,107, 75, 72, 82, 0,107, 83, 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,108, - 97,103,115, 0,110,117,109, 99,108,117,115,116,101,114,105,116,101,114, 97,116,105,111,110,115, 0,119,101,108,100,105,110,103, - 0,116,111,116,115,112,114,105,110,103, 0, 42, 98,112,111,105,110,116, 0, 42, 98,115,112,114,105,110,103, 0,109,115,103, 95, -108,111, 99,107, 0,109,115,103, 95,118, 97,108,117,101, 0,110,111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71, 95, - 77, 97,115,115, 91, 51, 50, 93, 0,103,114, 97,118, 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, - 0,112,104,121,115,105, 99,115, 95,115,112,101,101,100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114, -105, 99,116, 0,109,105,110,103,111, 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116, -103,114,111,117,112, 0,110, 97,109,101,100, 86, 71, 95, 83,111,102,116,103,111, 97,108, 91, 51, 50, 93, 0,102,117,122,122,121, -110,101,115,115, 0,105,110,115,112,114,105,110,103, 0,105,110,102,114,105, 99,116, 0,110, 97,109,101,100, 86, 71, 95, 83,112, -114,105,110,103, 95, 75, 91, 51, 50, 93, 0,101,102,114, 97, 0,105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115, -111,108,118,101,114,102,108, 97,103,115, 0, 42, 42,107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, - 99,111,110,100,115,112,114,105,110,103, 0, 99,111,108, 98, 97,108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108, -115,116,105,102,102, 0,115, 98, 99, 95,109,111,100,101, 0, 97,101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, - 0,109, 97,120,108,111,111,112,115, 0, 99,104,111,107,101, 0,115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, - 99, 0,115,112,114,105,110,103,112,114,101,108,111, 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116, -105,102,102, 0,105,110,112,117,115,104, 0, 42,112,111,105,110,116, 99, 97, 99,104,101, 0, 42,101,102,102,101, 99,116,111,114, - 95,119,101,105,103,104,116,115, 0,108, 99,111,109, 91, 51, 93, 0,108,114,111,116, 91, 51, 93, 91, 51, 93, 0,108,115, 99, 97, -108,101, 91, 51, 93, 91, 51, 93, 0,112, 97,100, 52, 91, 52, 93, 0, 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, - 99,101,100,111,112,116,105,111,110,115, 0,114,101,115,111,108,117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119, -114,101,115,120,121,122, 0,114,101, 97,108,115,105,122,101, 0,103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114, -101,110,100,101,114, 68,105,115,112,108, 97,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0, -118,105,115, 99,111,115,105,116,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0, -103,114, 97,118,120, 0,103,114, 97,118,121, 0,103,114, 97,118,122, 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, - 69,110,100, 0, 98, 97,107,101, 83,116, 97,114,116, 0, 98, 97,107,101, 69,110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82, -101,102,105,110,101, 0,105,110,105, 86,101,108,120, 0,105,110,105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111, -114,103, 77,101,115,104, 0, 42,109,101,115,104, 83,117,114,102, 97, 99,101, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102, -100, 97,116, 97, 80, 97,116,104, 91, 50, 52, 48, 93, 0, 98, 98, 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, - 51, 93, 0,116,121,112,101, 70,108, 97,103,115, 0,100,111,109, 97,105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117, -109,101, 73,110,105,116, 84,121,112,101, 0,112, 97,114,116, 83,108,105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116, -101, 84,114, 97, 99,101,114,115, 0,103,101,110,101,114, 97,116,101, 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, - 99,101, 83,109,111,111,116,104,105,110,103, 0,115,117,114,102, 97, 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, - 99,108,101, 73,110,102, 83,105,122,101, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70, -105,101,108,100, 83,105,122,101, 0, 42,109,101,115,104, 83,117,114,102, 78,111,114,109, 97,108,115, 0, 99,112,115, 84,105,109, -101, 83,116, 97,114,116, 0, 99,112,115, 84,105,109,101, 69,110,100, 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116, -114, 97, 99,116,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97, -100,105,117,115, 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99, -105,116,121,102,111,114, 99,101, 82, 97,100,105,117,115, 0,108, 97,115,116,103,111,111,100,102,114, 97,109,101, 0,109,105,115, -116,121,112,101, 0,104,111,114,114, 0,104,111,114,103, 0,104,111,114, 98, 0,122,101,110,114, 0,122,101,110,103, 0,122,101, -110, 98, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101,120,112, 0,114, 97,110,103,101, 0,108,105, -110,102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97, 99,116,105,118,105,116,121, 66,111,120, 82, - 97,100,105,117,115, 0,115,107,121,116,121,112,101, 0,111, 99, 99,108,117,115,105,111,110, 82,101,115, 0,112,104,121,115,105, - 99,115, 69,110,103,105,110,101, 0,116,105, 99,114, 97,116,101, 0,109, 97,120,108,111,103,105, 99,115,116,101,112, 0,112,104, -121,115,117, 98,115,116,101,112, 0,109, 97,120,112,104,121,115,116,101,112, 0,109,105,115,105, 0,109,105,115,116,115,116, 97, - 0,109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0,115,116, 97,114,114, 0,115,116, 97,114,103, 0,115,116, 97, -114, 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, 0,115,116, 97,114,109,105,110,100,105,115,116, 0,115,116, - 97,114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105,115,101, 0,100,111,102,115,116, 97, 0,100,111,102,101,110, -100, 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97,111,100,105,115,116, 0, 97,111,100,105,115,116,102, 97, 99, - 0, 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, 97,111,109,111,100,101, 0, 97,111,115, 97,109,112, 0, 97, -111,109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0, 97,111, 95, - 97,100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97,111, 95, 97,112,112,114,111,120, 95,101,114,114,111,114, 0, - 97,111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116,105,111,110, 0, 97,111, 95,105,110,100,105,114,101, 99,116, - 95,101,110,101,114,103,121, 0, 97,111, 95,101,110,118, 95,101,110,101,114,103,121, 0, 97,111, 95,112, 97,100, 50, 0, 97,111, - 95,105,110,100,105,114,101, 99,116, 95, 98,111,117,110, 99,101,115, 0, 97,111, 95,112, 97,100, 0, 97,111, 95,115, 97,109,112, - 95,109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, 95,109,101,116,104,111,100, 0, 97,111, 95, 97,112,112,114, -111,120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101,114,101, 0, 42, 97,111,116, 97, 98,108,101,115, 0,112, 97, -100, 91, 51, 93, 0,115,101,108, 99,111,108, 0,115,120, 0,115,121, 0, 42,108,112, 70,111,114,109, 97,116, 0, 42,108,112, 80, - 97,114,109,115, 0, 99, 98, 70,111,114,109, 97,116, 0, 99, 98, 80, 97,114,109,115, 0,102, 99, 99, 84,121,112,101, 0,102, 99, - 99, 72, 97,110,100,108,101,114, 0,100,119, 75,101,121, 70,114, 97,109,101, 69,118,101,114,121, 0,100,119, 81,117, 97,108,105, -116,121, 0,100,119, 66,121,116,101,115, 80,101,114, 83,101, 99,111,110,100, 0,100,119, 70,108, 97,103,115, 0,100,119, 73,110, -116,101,114,108,101, 97,118,101, 69,118,101,114,121, 0, 97,118,105, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, - 42, 99,100, 80, 97,114,109,115, 0, 42,112, 97,100, 0, 99,100, 83,105,122,101, 0,113,116, 99,111,100,101, 99,110, 97,109,101, - 91, 49, 50, 56, 93, 0, 99,111,100,101, 99, 84,121,112,101, 0, 99,111,100,101, 99, 83,112, 97,116,105, 97,108, 81,117, 97,108, -105,116,121, 0, 99,111,100,101, 99, 0, 99,111,100,101, 99, 70,108, 97,103,115, 0, 99,111,108,111,114, 68,101,112,116,104, 0, - 99,111,100,101, 99, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 83,112, 97,116,105, 97,108, 81, -117, 97,108,105,116,121, 0,109,105,110, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0,107,101,121, 70,114, 97, -109,101, 82, 97,116,101, 0, 98,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 99,111,100,101, 99, 84,121,112,101, 0, 97,117, -100,105,111, 83, 97,109,112,108,101, 82, 97,116,101, 0, 97,117,100,105,111, 66,105,116, 68,101,112,116,104, 0, 97,117,100,105, -111, 67,104, 97,110,110,101,108,115, 0, 97,117,100,105,111, 67,111,100,101, 99, 70,108, 97,103,115, 0, 97,117,100,105,111, 66, -105,116, 82, 97,116,101, 0, 97,117,100,105,111, 95, 99,111,100,101, 99, 0,118,105,100,101,111, 95, 98,105,116,114, 97,116,101, - 0, 97,117,100,105,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95,109,105,120,114, 97,116,101, 0, 97,117,100, -105,111, 95,118,111,108,117,109,101, 0,103,111,112, 95,115,105,122,101, 0,114, 99, 95,109,105,110, 95,114, 97,116,101, 0,114, - 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102,102,101,114, 95,115,105,122,101, 0,109,117,120, 95,112, 97, - 99,107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116,101, 0,109,105,120,114, 97,116,101, 0,109, 97,105,110, 0, -115,112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,111,112,112,108,101,114, 95,102, 97, 99,116,111,114, 0,100,105, -115,116, 97,110, 99,101, 95,109,111,100,101,108, 0, 42,109, 97,116, 95,111,118,101,114,114,105,100,101, 0, 42,108,105,103,104, -116, 95,111,118,101,114,114,105,100,101, 0,108, 97,121, 95,122,109, 97,115,107, 0,108, 97,121,102,108, 97,103, 0,112, 97,115, -115,102,108, 97,103, 0,112, 97,115,115, 95,120,111,114, 0, 42, 97,118,105, 99,111,100,101, 99,100, 97,116, 97, 0, 42,113,116, - 99,111,100,101, 99,100, 97,116, 97, 0,113,116, 99,111,100,101, 99,115,101,116,116,105,110,103,115, 0,102,102, 99,111,100,101, - 99,100, 97,116, 97, 0,115,117, 98,102,114, 97,109,101, 0,112,115,102,114, 97, 0,112,101,102,114, 97, 0,105,109, 97,103,101, -115, 0,102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97,100,115, 0,102,114, 97,109,101,108,101,110, 0, 98,108,117,114, -102, 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101,100,103,101, 66, 0,102,117,108,108,115, 99,114,101,101,110, - 0,120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113,112,108, 97,121, 0, 97,116,116,114,105, 98, 0,114,116, 50, - 0,102,114, 97,109,101, 95,115,116,101,112, 0,115,116,101,114,101,111,109,111,100,101, 0,100,105,109,101,110,115,105,111,110, -115,112,114,101,115,101,116, 0,109, 97,120,105,109,115,105,122,101, 0,120,115, 99,104, 0,121,115, 99,104, 0,120,112, 97,114, -116,115, 0,121,112, 97,114,116,115, 0,119,105,110,112,111,115, 0,112,108, 97,110,101,115, 0,105,109,116,121,112,101, 0,115, -117, 98,105,109,116,121,112,101, 0,113,117, 97,108,105,116,121, 0,100,105,115,112,108, 97,121,109,111,100,101, 0,114,112, 97, -100, 49, 0,114,112, 97,100, 50, 0,115, 99,101,109,111,100,101, 0,114, 97,121,116,114, 97, 99,101, 95,111,112,116,105,111,110, -115, 0,114, 97,121,116,114, 97, 99,101, 95,115,116,114,117, 99,116,117,114,101, 0,114,101,110,100,101,114,101,114, 0,111, 99, -114,101,115, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, 0,102,114,115, 95,115,101, 99, 0,101,100,103,101,105,110, -116, 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100,105,115,112,114,101, 99,116, 0,108, 97,121,101,114,115, 0, - 97, 99,116,108, 97,121, 0,109, 98,108,117,114, 95,115, 97,109,112,108,101,115, 0,120, 97,115,112, 0,121, 97,115,112, 0,102, -114,115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, 0, 99,111,108,111,114, 95,109,103,116, 95,102,108, 97,103, - 0,112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117,101, 0,112,111,115,116,115, 97,116, 0,100,105,116,104,101, -114, 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95,111,115, 97, 0, 98, 97,107,101, 95,102,105,108,116,101,114, - 0, 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102,108, 97,103, 0, 98, 97,107,101, 95,110,111,114,109, 97,108, - 95,115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95,115,112,108,105,116, 0, 98, 97,107,101, 95,109, 97,120,100, -105,115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, 0, 98, 97,107,101, 95,112, 97,100, 0, 98, 97, 99,107, 98, -117,102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0,115,116, 97,109,112, 0,115,116, 97,109,112, 95,102,111,110, -116, 95,105,100, 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, 49, 54, 48, 93, 0,102,103, 95,115,116, 97,109,112, 91, 52, - 93, 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, 0,115,101,113, 95,112,114,101,118, 95,116,121,112,101, 0,115,101,113, 95, -114,101,110,100, 95,116,121,112,101, 0,115,101,113, 95,102,108, 97,103, 0,112, 97,100, 53, 91, 53, 93, 0,115,105,109,112,108, -105,102,121, 95,102,108, 97,103, 0,115,105,109,112,108,105,102,121, 95,115,117, 98,115,117,114,102, 0,115,105,109,112,108,105, -102,121, 95,115,104, 97,100,111,119,115, 97,109,112,108,101,115, 0,115,105,109,112,108,105,102,121, 95,112, 97,114,116,105, 99, -108,101,115, 0,115,105,109,112,108,105,102,121, 95, 97,111,115,115,115, 0, 99,105,110,101,111,110,119,104,105,116,101, 0, 99, -105,110,101,111,110, 98,108, 97, 99,107, 0, 99,105,110,101,111,110,103, 97,109,109, 97, 0,106,112, 50, 95,112,114,101,115,101, -116, 0,106,112, 50, 95,100,101,112,116,104, 0,114,112, 97,100, 51, 0,100,111,109,101,114,101,115, 0,100,111,109,101,109,111, -100,101, 0,100,111,109,101, 97,110,103,108,101, 0,100,111,109,101,116,105,108,116, 0,100,111,109,101,114,101,115, 98,117,102, - 0, 42,100,111,109,101,116,101,120,116, 0,101,110,103,105,110,101, 91, 51, 50, 93, 0,112, 97,114,116,105, 99,108,101, 95,112, -101,114, 99, 0,115,117, 98,115,117,114,102, 95,109, 97,120, 0,115,104, 97,100, 98,117,102,115, 97,109,112,108,101, 95,109, 97, -120, 0, 97,111, 95,101,114,114,111,114, 0,116,105,108,116, 0,114,101,115, 98,117,102, 0, 42,119, 97,114,112,116,101,120,116, - 0, 99,111,108, 91, 51, 93, 0,109, 97,116,109,111,100,101, 0,102,114, 97,109,105,110,103, 0,114,116, 49, 0,100,111,109,101, - 0,115,116,101,114,101,111,102,108, 97,103, 0,101,121,101,115,101,112, 97,114, 97,116,105,111,110, 0, 42, 99, 97,109,101,114, - 97, 0, 42, 42, 98,114,117,115,104,101,115, 0, 97, 99,116,105,118,101, 95, 98,114,117,115,104, 95,105,110,100,101,120, 0, 98, -114,117,115,104, 95, 99,111,117,110,116, 0, 42,112, 97,105,110,116, 95, 99,117,114,115,111,114, 0,112, 97,105,110,116, 95, 99, -117,114,115,111,114, 95, 99,111,108, 91, 52, 93, 0,112, 97,105,110,116, 0,115,101, 97,109, 95, 98,108,101,101,100, 0,110,111, -114,109, 97,108, 95, 97,110,103,108,101, 0,115, 99,114,101,101,110, 95,103,114, 97, 98, 95,115,105,122,101, 91, 50, 93, 0, 42, -112, 97,105,110,116, 99,117,114,115,111,114, 0,105,110,118,101,114,116, 0,116,111,116,114,101,107,101,121, 0,116,111,116, 97, -100,100,107,101,121, 0, 98,114,117,115,104,116,121,112,101, 0, 98,114,117,115,104, 91, 55, 93, 0,101,109,105,116,116,101,114, -100,105,115,116, 0,115,101,108,101, 99,116,109,111,100,101, 0,101,100,105,116,116,121,112,101, 0,100,114, 97,119, 95,115,116, -101,112, 0,102, 97,100,101, 95,102,114, 97,109,101,115, 0,110, 97,109,101, 91, 51, 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, - 93, 0,114, 97,100,105, 97,108, 95,115,121,109,109, 91, 51, 93, 0,108, 97,115,116, 95,120, 0,108, 97,115,116, 95,121, 0,108, - 97,115,116, 95, 97,110,103,108,101, 0,100,114, 97,119, 95, 97,110, 99,104,111,114,101,100, 0, 97,110, 99,104,111,114,101,100, - 95,115,105,122,101, 0, 97,110, 99,104,111,114,101,100, 95,108,111, 99, 97,116,105,111,110, 91, 51, 93, 0, 97,110, 99,104,111, -114,101,100, 95,105,110,105,116,105, 97,108, 95,109,111,117,115,101, 91, 50, 93, 0,100,114, 97,119, 95,112,114,101,115,115,117, -114,101, 0,112,114,101,115,115,117,114,101, 95,118, 97,108,117,101, 0,115,112,101, 99,105, 97,108, 95,114,111,116, 97,116,105, -111,110, 0, 42,118,112, 97,105,110,116, 95,112,114,101,118, 0, 42,119,112, 97,105,110,116, 95,112,114,101,118, 0, 42,118,112, - 97,105,110,116, 0, 42,119,112, 97,105,110,116, 0,118,103,114,111,117,112, 95,119,101,105,103,104,116, 0, 99,111,114,110,101, -114,116,121,112,101, 0,101,100,105,116, 98,117,116,102,108, 97,103, 0,106,111,105,110,116,114,105,108,105,109,105,116, 0,100, -101,103,114, 0,116,117,114,110, 0,101,120,116,114, 95,111,102,102,115, 0,100,111,117, 98,108,105,109,105,116, 0,110,111,114, -109, 97,108,115,105,122,101, 0, 97,117,116,111,109,101,114,103,101, 0,115,101,103,109,101,110,116,115, 0,114,105,110,103,115, - 0,118,101,114,116,105, 99,101,115, 0,117,110,119,114, 97,112,112,101,114, 0,117,118, 99, 97,108, 99, 95,114, 97,100,105,117, -115, 0,117,118, 99, 97,108, 99, 95, 99,117, 98,101,115,105,122,101, 0,117,118, 99, 97,108, 99, 95,109, 97,114,103,105,110, 0, -117,118, 99, 97,108, 99, 95,109, 97,112,100,105,114, 0,117,118, 99, 97,108, 99, 95,109, 97,112, 97,108,105,103,110, 0,117,118, - 99, 97,108, 99, 95,102,108, 97,103, 0,117,118, 95,102,108, 97,103, 0,117,118, 95,115,101,108,101, 99,116,109,111,100,101, 0, -117,118, 95,112, 97,100, 91, 50, 93, 0, 97,117,116,111,105,107, 95, 99,104, 97,105,110,108,101,110, 0,105,109, 97,112, 97,105, -110,116, 0,112, 97,114,116,105, 99,108,101, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 95,115,105,122,101, 0,115,101, -108,101, 99,116, 95,116,104,114,101,115,104, 0, 99,108,101, 97,110, 95,116,104,114,101,115,104, 0, 97,117,116,111,107,101,121, - 95,109,111,100,101, 0, 97,117,116,111,107,101,121, 95,102,108, 97,103, 0,114,101,116,111,112,111, 95,109,111,100,101, 0,114, -101,116,111,112,111, 95,112, 97,105,110,116, 95,116,111,111,108, 0,108,105,110,101, 95,100,105,118, 0,101,108,108,105,112,115, -101, 95,100,105,118, 0,114,101,116,111,112,111, 95,104,111,116,115,112,111,116, 0,109,117,108,116,105,114,101,115, 95,115,117, - 98,100,105,118, 95,116,121,112,101, 0,115,107,103,101,110, 95,114,101,115,111,108,117,116,105,111,110, 0,115,107,103,101,110, - 95,116,104,114,101,115,104,111,108,100, 95,105,110,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,116,104,114,101,115,104, -111,108,100, 95,101,120,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,114, 97,116,105,111, 0, -115,107,103,101,110, 95,108,101,110,103,116,104, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 97,110,103,108,101, 95,108, -105,109,105,116, 0,115,107,103,101,110, 95, 99,111,114,114,101,108, 97,116,105,111,110, 95,108,105,109,105,116, 0,115,107,103, -101,110, 95,115,121,109,109,101,116,114,121, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, - 95, 97,110,103,108,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,108,101,110, -103,116,104, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,100,105,115,116, 97,110, - 99,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,112,111, -115,116,112,114,111, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 95,112, 97,115,115,101,115, 0,115,107,103,101,110, - 95,115,117, 98,100,105,118,105,115,105,111,110,115, 91, 51, 93, 0,115,107,103,101,110, 95,109,117,108,116,105, 95,108,101,118, -101,108, 0, 42,115,107,103,101,110, 95,116,101,109,112,108, 97,116,101, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110, -103, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 95, 99,111,110,118,101,114,116, 0,115,107,103,101,110, 95,115, -117, 98,100,105,118,105,115,105,111,110, 95,110,117,109, 98,101,114, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, - 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,114,111,108,108, 0,115,107,103, -101,110, 95,115,105,100,101, 95,115,116,114,105,110,103, 91, 56, 93, 0,115,107,103,101,110, 95,110,117,109, 95,115,116,114,105, -110,103, 91, 56, 93, 0,101,100,103,101, 95,109,111,100,101, 0,115,110, 97,112, 95,109,111,100,101, 0,115,110, 97,112, 95,102, -108, 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 0,112,114,111, -112, 95,109,111,100,101, 0, 97,117,116,111, 95,110,111,114,109, 97,108,105,122,101, 0,105,110,116,112, 97,100, 0,116,111,116, -111, 98,106, 0,116,111,116,108, 97,109,112, 0,116,111,116,111, 98,106,115,101,108, 0,116,111,116, 99,117,114,118,101, 0,116, -111,116,109,101,115,104, 0,116,111,116, 97,114,109, 97,116,117,114,101, 0,115, 99, 97,108,101, 95,108,101,110,103,116,104, 0, -115,121,115,116,101,109, 0,103,114, 97,118,105,116,121, 91, 51, 93, 0,113,117,105, 99,107, 95, 99, 97, 99,104,101, 95,115,116, -101,112, 0, 42,119,111,114,108,100, 0, 42,115,101,116, 0, 98, 97,115,101, 0, 42, 98, 97,115, 97, 99,116, 0, 42,111, 98,101, -100,105,116, 0, 99,117,114,115,111,114, 91, 51, 93, 0,116,119, 99,101,110,116, 91, 51, 93, 0,116,119,109,105,110, 91, 51, 93, - 0,116,119,109, 97,120, 91, 51, 93, 0,108, 97,121, 97, 99,116, 0, 42,101,100, 0, 42,116,111,111,108,115,101,116,116,105,110, -103,115, 0, 42,115,116, 97,116,115, 0, 97,117,100,105,111, 0,116,114, 97,110,115,102,111,114,109, 95,115,112, 97, 99,101,115, - 0, 42,115,111,117,110,100, 95,115, 99,101,110,101, 0, 42,115,111,117,110,100, 95,115, 99,101,110,101, 95,104, 97,110,100,108, -101, 0, 42,102,112,115, 95,105,110,102,111, 0, 42,116,104,101, 68, 97,103, 0,100, 97,103,105,115,118, 97,108,105,100, 0,100, - 97,103,102,108, 97,103,115, 0,106,117,109,112,102,114, 97,109,101, 0,112, 97,100, 53, 0, 97, 99,116,105,118,101, 95,107,101, -121,105,110,103,115,101,116, 0,107,101,121,105,110,103,115,101,116,115, 0,103,109, 0,117,110,105,116, 0,112,104,121,115,105, - 99,115, 95,115,101,116,116,105,110,103,115, 0, 98,108,101,110,100, 0,118,105,101,119, 0,119,105,110,109, 97,116, 91, 52, 93, - 91, 52, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,105,110,118, 91, 52, 93, 91, 52, 93, 0, -112,101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,105,110,118, 91, 52, 93, 91, 52, 93, 0,118,105,101,119, -109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,116,119,109, 97, -116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,122,102, 97, 99, 0, 99, 97,109,100,120, 0, 99, - 97,109,100,121, 0,112,105,120,115,105,122,101, 0, 99, 97,109,122,111,111,109, 0,118,105,101,119, 98,117,116, 0,116,119,100, -114, 97,119,102,108, 97,103, 0,114,102,108, 97,103, 0,118,105,101,119,108,111, 99,107, 0,112,101,114,115,112, 0, 99,108,105, -112, 91, 54, 93, 91, 52, 93, 0, 99,108,105,112, 95,108,111, 99, 97,108, 91, 54, 93, 91, 52, 93, 0, 42, 99,108,105,112, 98, 98, - 0, 42,108,111, 99, 97,108,118,100, 0, 42,114,105, 0, 42,114,101,116,111,112,111, 95,118,105,101,119, 95,100, 97,116, 97, 0, - 42,100,101,112,116,104,115, 0, 42,115,109,115, 0, 42,115,109,111,111,116,104, 95,116,105,109,101,114, 0,108,118,105,101,119, -113,117, 97,116, 91, 52, 93, 0,108,112,101,114,115,112, 0,108,118,105,101,119, 0,103,114,105,100,118,105,101,119, 0,116,119, - 97,110,103,108,101, 91, 51, 93, 0,112, 97,100,102, 0,114,101,103,105,111,110, 98, 97,115,101, 0,115,112, 97, 99,101,116,121, -112,101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, 99,107,104, 97,110,100,108,101,114, 91, 56, 93, 0,108, 97, -121, 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0, 98,103,112,105, 99, 98, 97,115,101, 0, 42, 98,103,112, -105, 99, 0,111, 98, 95, 99,101,110,116,114,101, 95, 98,111,110,101, 91, 51, 50, 93, 0,100,114, 97,119,116,121,112,101, 0,115, - 99,101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0,112,105,118,111,116, 95,108, 97,115,116, 0,103,114,105,100, 0, -110,101, 97,114, 0,102, 97,114, 0,103,114,105,100,108,105,110,101,115, 0,103,114,105,100,102,108, 97,103, 0,103,114,105,100, -115,117, 98,100,105,118, 0,109,111,100,101,115,101,108,101, 99,116, 0,107,101,121,102,108, 97,103,115, 0,116,119,116,121,112, -101, 0,116,119,109,111,100,101, 0,116,119,102,108, 97,103, 0, 99,117,115,116,111,109,100, 97,116, 97, 95,109, 97,115,107, 0, - 97,102,116,101,114,100,114, 97,119, 0,122, 98,117,102, 0,120,114, 97,121, 0,110,100,111,102,109,111,100,101, 0,110,100,111, -102,102,105,108,116,101,114, 0, 42,112,114,111,112,101,114,116,105,101,115, 95,115,116,111,114, 97,103,101, 0,118,101,114,116, - 0,104,111,114, 0,109, 97,115,107, 0,109,105,110, 91, 50, 93, 0,109, 97,120, 91, 50, 93, 0,109,105,110,122,111,111,109, 0, -109, 97,120,122,111,111,109, 0,115, 99,114,111,108,108, 0,115, 99,114,111,108,108, 95,117,105, 0,107,101,101,112,116,111,116, - 0,107,101,101,112,122,111,111,109, 0,107,101,101,112,111,102,115, 0, 97,108,105,103,110, 0,119,105,110,120, 0,119,105,110, -121, 0,111,108,100,119,105,110,120, 0,111,108,100,119,105,110,121, 0, 42,116, 97, 98, 95,111,102,102,115,101,116, 0,116, 97, - 98, 95,110,117,109, 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99,114,101,101,110, 0,118, 50,100, 0, 42, 97,100,115, 0,103, -104,111,115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, 97,112, 0, 99,117,114,115,111,114, 86, 97,108, 0,109, 97, -105,110, 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117,115,101,114, 0,114,101, 95, 97,108,105,103,110, 0,112,114, -101,118,105,101,119, 0,112, 97,116,104,102,108, 97,103, 0,100, 97,116, 97,105, 99,111,110, 0, 42,112,105,110,105,100, 0,114, -101,110,100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104,111,119,110, 0,122,101, 98,114, 97, 0,122,111,111,109, 0, -116,105,116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,102,105,108,101, 91, 56, 48, 93, 0,114,101,110, 97, -109,101,102,105,108,101, 91, 56, 48, 93, 0,115,111,114,116, 0,100,105,115,112,108, 97,121, 0, 97, 99,116,105,118,101, 95, 98, -111,111,107,109, 97,114,107, 0, 97, 99,116,105,118,101, 95,102,105,108,101, 0,115,101,108,115,116, 97,116,101, 0,102, 95,102, -112, 0,102,112, 95,115,116,114, 91, 56, 93, 0,115, 99,114,111,108,108, 95,111,102,102,115,101,116, 0, 42,112, 97,114, 97,109, -115, 0, 42,102,105,108,101,115, 0, 42,102,111,108,100,101,114,115, 95,112,114,101,118, 0, 42,102,111,108,100,101,114,115, 95, -110,101,120,116, 0, 42,111,112, 0, 42,115,109,111,111,116,104,115, 99,114,111,108,108, 95,116,105,109,101,114, 0, 42,108, 97, -121,111,117,116, 0,114,101, 99,101,110,116,110,114, 0, 98,111,111,107,109, 97,114,107,110,114, 0,115,121,115,116,101,109,110, -114, 0,116,114,101,101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97,114, 99,104, 95,115,116,114,105,110,103, 91, - 51, 50, 93, 0,115,101, 97,114, 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, 95,102,108, 97,103,115, 0,100,111, 95, 0, -111,117,116,108,105,110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0, 42, 99,117,109, 97,112, 0,105,109, 97,110, -114, 0, 99,117,114,116,105,108,101, 0,105,109,116,121,112,101,110,114, 0,108,111, 99,107, 0,112,105,110, 0,100,116, 95,117, -118, 0,115,116,105, 99,107,121, 0,100,116, 95,117,118,115,116,114,101,116, 99,104, 0, 99,117,114,115,111,114, 91, 50, 93, 0, - 99,101,110,116,120, 0, 99,101,110,116,121, 0,115, 99,111,112,101,115, 0,115, 97,109,112,108,101, 95,108,105,110,101, 95,104, -105,115,116, 0, 42,116,101,120,116, 0,116,111,112, 0,118,105,101,119,108,105,110,101,115, 0,108,104,101,105,103,104,116, 0, - 99,119,105,100,116,104, 0,108,105,110,101,110,114,115, 95,116,111,116, 0,108,101,102,116, 0,115,104,111,119,108,105,110,101, -110,114,115, 0,116, 97, 98,110,117,109, 98,101,114, 0,115,104,111,119,115,121,110,116, 97,120, 0,111,118,101,114,119,114,105, -116,101, 0,108,105,118,101, 95,101,100,105,116, 0,112,105,120, 95,112,101,114, 95,108,105,110,101, 0,116,120,116,115, 99,114, -111,108,108, 0,116,120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100,111,112,108,117,103,105,110,115, 0,102,105, -110,100,115,116,114, 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99,101,115,116,114, 91, 50, 53, 54, 93, 0, 42,112,121, 95,100, -114, 97,119, 0, 42,112,121, 95,101,118,101,110,116, 0, 42,112,121, 95, 98,117,116,116,111,110, 0, 42,112,121, 95, 98,114,111, -119,115,101,114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,111, 98, 97,108,100,105, 99,116, 0,108, 97,115,116, -115,112, 97, 99,101, 0,115, 99,114,105,112,116,110, 97,109,101, 91, 50, 53, 54, 93, 0,115, 99,114,105,112,116, 97,114,103, 91, - 50, 53, 54, 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,117,116, 95,114,101,102,115, 0, 42, 97,114,114, 97,121, 0, 99, 97, - 99,104,101,115, 0, 99, 97, 99,104,101, 95,100,105,115,112,108, 97,121, 0,114,101,100,114, 97,119,115, 0, 42,105,100, 0, 97, -115,112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, 0,109,121, 0, 42,101,100,105,116,116,114,101,101, 0,116, -114,101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,109,101,110,117, 0,110,117,109,116,105,108,101,115,120, 0,110, -117,109,116,105,108,101,115,121, 0,118,105,101,119,114,101, 99,116, 0, 98,111,111,107,109, 97,114,107,114,101, 99,116, 0,115, - 99,114,111,108,108,112,111,115, 0,115, 99,114,111,108,108,104,101,105,103,104,116, 0,115, 99,114,111,108,108, 97,114,101, 97, - 0,114,101,116,118, 97,108, 0,112,114,118, 95,119, 0,112,114,118, 95,104, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, - 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95,101,118,101,110,116, 41, 40, 41, 0, 40, 42,114,101,116,117, -114,110,102,117,110, 99, 95, 97,114,103,115, 41, 40, 41, 0, 42, 97,114,103, 49, 0, 42, 97,114,103, 50, 0, 42,109,101,110,117, -112, 0, 42,112,117,112,109,101,110,117, 0, 42,105,109,103, 0,108,101,110, 95, 97,108,108,111, 99, 0, 99,117,114,115,111,114, - 0,114,112,116, 95,109, 97,115,107, 0,115, 99,114,111,108,108, 98, 97, 99,107, 0,104,105,115,116,111,114,121, 0,112,114,111, -109,112,116, 91, 50, 53, 54, 93, 0,108, 97,110,103,117, 97,103,101, 91, 51, 50, 93, 0,115,101,108, 95,115,116, 97,114,116, 0, -115,101,108, 95,101,110,100, 0,102,105,108,116,101,114, 91, 54, 52, 93, 0,102,105,108,101,110, 97,109,101, 91, 50, 53, 54, 93, - 0, 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,100, 0,114, 95,116,111, 95,108, 0,112,111,105,110,116,115, 0, -107,101,114,110,105,110,103, 0,105,116, 97,108,105, 99, 0, 98,111,108,100, 0,115,104, 97,100,111,119, 0,115,104, 97,100,120, - 0,115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, 97, 0,115,104, 97,100,111,119, 99,111,108,111,114, 0,112, - 97,110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, 98,101,108, 0,119,105,100,103,101,116,108, 97, 98,101,108, - 0,119,105,100,103,101,116, 0,112, 97,110,101,108,122,111,111,109, 0,109,105,110,108, 97, 98,101,108, 99,104, 97,114,115, 0, -109,105,110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111,108,117,109,110,115,112, 97, 99,101, 0,116,101,109,112,108, - 97,116,101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, 0, 98,117,116,116,111,110,115,112, 97, 99,101,120, 0, 98, -117,116,116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108,115,112, 97, 99,101, 0,112, 97,110,101,108,111,117,116,101, -114, 0,112, 97,100, 91, 49, 93, 0,111,117,116,108,105,110,101, 91, 52, 93, 0,105,110,110,101,114, 91, 52, 93, 0,105,110,110, -101,114, 95,115,101,108, 91, 52, 93, 0,105,116,101,109, 91, 52, 93, 0,116,101,120,116, 91, 52, 93, 0,116,101,120,116, 95,115, -101,108, 91, 52, 93, 0,115,104, 97,100,101,100, 0,115,104, 97,100,101,116,111,112, 0,115,104, 97,100,101,100,111,119,110, 0, - 97,108,112,104, 97, 95, 99,104,101, 99,107, 0,105,110,110,101,114, 95, 97,110,105,109, 91, 52, 93, 0,105,110,110,101,114, 95, - 97,110,105,109, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 91, 52, 93, 0,105,110,110,101,114, 95,107, -101,121, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 91, 52, 93, 0,105,110,110,101,114, 95, -100,114,105,118,101,110, 95,115,101,108, 91, 52, 93, 0,119, 99,111,108, 95,114,101,103,117,108, 97,114, 0,119, 99,111,108, 95, -116,111,111,108, 0,119, 99,111,108, 95,116,101,120,116, 0,119, 99,111,108, 95,114, 97,100,105,111, 0,119, 99,111,108, 95,111, -112,116,105,111,110, 0,119, 99,111,108, 95,116,111,103,103,108,101, 0,119, 99,111,108, 95,110,117,109, 0,119, 99,111,108, 95, -110,117,109,115,108,105,100,101,114, 0,119, 99,111,108, 95,109,101,110,117, 0,119, 99,111,108, 95,112,117,108,108,100,111,119, -110, 0,119, 99,111,108, 95,109,101,110,117, 95, 98, 97, 99,107, 0,119, 99,111,108, 95,109,101,110,117, 95,105,116,101,109, 0, -119, 99,111,108, 95, 98,111,120, 0,119, 99,111,108, 95,115, 99,114,111,108,108, 0,119, 99,111,108, 95,112,114,111,103,114,101, -115,115, 0,119, 99,111,108, 95,108,105,115,116, 95,105,116,101,109, 0,119, 99,111,108, 95,115,116, 97,116,101, 0,105, 99,111, -110,102,105,108,101, 91, 56, 48, 93, 0, 98, 97, 99,107, 91, 52, 93, 0,116,105,116,108,101, 91, 52, 93, 0,116,101,120,116, 95, -104,105, 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,105,116,108,101, 91, 52, 93, 0, -104,101, 97,100,101,114, 95,116,101,120,116, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 95,104,105, 91, 52, 93, - 0, 98,117,116,116,111,110, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,105,116,108,101, 91, 52, 93, 0, 98,117,116,116,111, -110, 95,116,101,120,116, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,108,105,115,116, - 91, 52, 93, 0,108,105,115,116, 95,116,105,116,108,101, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 91, 52, 93, 0,108, -105,115,116, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,112, 97,110,101,108, 91, 52, 93, 0,112, 97,110,101,108, 95,116,105, -116,108,101, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 95, -104,105, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93, 0,115,104, 97,100,101, 50, 91, 52, 93, 0,104,105,108,105,116,101, - 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,101, 91, 52, 93, 0,115,101,108,101, 99,116, 91, 52, 93, 0,108, 97, -109,112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, 52, 93, 0,103,114,111,117,112, 91, 52, 93, 0,103,114,111,117,112, 95, 97, - 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,111,114,109, 91, 52, 93, 0,118,101,114,116,101,120, 91, 52, 93, 0, -118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 91, 52, 93, 0,101,100,103,101, 95,115,101, -108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101, 97,109, 91, 52, 93, 0,101,100,103,101, 95,115,104, 97,114,112, 91, - 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, 93, 0,101,100,103,101, 95, 99,114,101, 97,115,101, 91, 52, - 93, 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,102, 97, 99,101, 95,100,111, -116, 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0,118,101,114,116,101,120, 95,110,111,114,109, 97,108, 91, 52, 93, 0, - 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110,101, 95,112,111,115,101, 91, 52, 93, 0,115,116,114,105,112, - 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, 52, 93, 0, 99,102,114, 97,109,101, 91, 52, 93, 0,110,117, -114, 98, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,118,108,105,110,101, 91, 52, 93, 0, 97, 99,116, 95,115,112, -108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115, -101,108, 95,118,108,105,110,101, 91, 52, 93, 0,108, 97,115,116,115,101,108, 95,112,111,105,110,116, 91, 52, 93, 0,104, 97,110, -100,108,101, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,117,116,111, 91, 52, 93, 0,104, 97,110,100,108, -101, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,108,105,103,110, 91, 52, 93, 0,104, 97,110,100,108,101, - 95,115,101,108, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97,117,116,111, 91, 52, 93, 0, -104, 97,110,100,108,101, 95,115,101,108, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97,108, -105,103,110, 91, 52, 93, 0,100,115, 95, 99,104, 97,110,110,101,108, 91, 52, 93, 0,100,115, 95,115,117, 98, 99,104, 97,110,110, -101,108, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,111,117,116,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95, -105,110,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,102,111, 91, 52, 93, 0, 99,111,110,115,111,108,101, - 95,101,114,114,111,114, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95, 99,117,114,115,111,114, 91, 52, 93, 0,118,101,114,116, -101,120, 95,115,105,122,101, 0,102, 97, 99,101,100,111,116, 95,115,105,122,101, 0, 98,112, 97,100, 91, 50, 93, 0,115,121,110, -116, 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,120,110, 91, 52, 93, 0,115,121,110,116, 97,120, 98, 91, 52, 93, 0,115,121, -110,116, 97,120,118, 91, 52, 93, 0,115,121,110,116, 97,120, 99, 91, 52, 93, 0,109,111,118,105,101, 91, 52, 93, 0,105,109, 97, -103,101, 91, 52, 93, 0,115, 99,101,110,101, 91, 52, 93, 0, 97,117,100,105,111, 91, 52, 93, 0,101,102,102,101, 99,116, 91, 52, - 93, 0,112,108,117,103,105,110, 91, 52, 93, 0,116,114, 97,110,115,105,116,105,111,110, 91, 52, 93, 0,109,101,116, 97, 91, 52, - 93, 0,101,100,105,116,109,101,115,104, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116, -101,120, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,104, 97, -110,100,108,101, 95,118,101,114,116,101,120, 95,115,105,122,101, 0,104,112, 97,100, 91, 55, 93, 0,112,114,101,118,105,101,119, - 95, 98, 97, 99,107, 91, 52, 93, 0,115,111,108,105,100, 91, 52, 93, 0,116,117,105, 0,116, 98,117,116,115, 0,116,118, 51,100, - 0,116,102,105,108,101, 0,116,105,112,111, 0,116,105,110,102,111, 0,116,115,110,100, 0,116, 97, 99,116, 0,116,110,108, 97, - 0,116,115,101,113, 0,116,105,109, 97, 0,116,105,109, 97,115,101,108, 0,116,101,120,116, 0,116,111,111,112,115, 0,116,116, -105,109,101, 0,116,110,111,100,101, 0,116,108,111,103,105, 99, 0,116,117,115,101,114,112,114,101,102, 0,116, 99,111,110,115, -111,108,101, 0,116, 97,114,109, 91, 50, 48, 93, 0, 97, 99,116,105,118,101, 95,116,104,101,109,101, 95, 97,114,101, 97, 0,109, -111,100,117,108,101, 91, 54, 52, 93, 0,115,112,101, 99, 91, 52, 93, 0,100,117,112,102,108, 97,103, 0,115, 97,118,101,116,105, -109,101, 0,116,101,109,112,100,105,114, 91, 49, 54, 48, 93, 0,102,111,110,116,100,105,114, 91, 49, 54, 48, 93, 0,114,101,110, -100,101,114,100,105,114, 91, 49, 54, 48, 93, 0,116,101,120,116,117,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,116,101, -120,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,115,101,113,100,105,114, 91, 49, 54, 48, 93, 0,112,121,116,104,111,110, -100,105,114, 91, 49, 54, 48, 93, 0,115,111,117,110,100,100,105,114, 91, 49, 54, 48, 93, 0,105,109, 97,103,101, 95,101,100,105, -116,111,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112, -108, 97,121,101,114, 95,112,114,101,115,101,116, 0,118, 50,100, 95,109,105,110, 95,103,114,105,100,115,105,122,101, 0,116,105, -109,101, 99,111,100,101, 95,115,116,121,108,101, 0,118,101,114,115,105,111,110,115, 0,100, 98,108, 95, 99,108,105, 99,107, 95, -116,105,109,101, 0,103, 97,109,101,102,108, 97,103,115, 0,119,104,101,101,108,108,105,110,101,115, 99,114,111,108,108, 0,117, -105,102,108, 97,103, 0,108, 97,110,103,117, 97,103,101, 0,117,115,101,114,112,114,101,102, 0,118,105,101,119,122,111,111,109, - 0,109,105,120, 98,117,102,115,105,122,101, 0, 97,117,100,105,111,100,101,118,105, 99,101, 0, 97,117,100,105,111,114, 97,116, -101, 0, 97,117,100,105,111,102,111,114,109, 97,116, 0, 97,117,100,105,111, 99,104, 97,110,110,101,108,115, 0,100,112,105, 0, -101,110, 99,111,100,105,110,103, 0,116,114, 97,110,115,111,112,116,115, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, - 49, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 50, 0,116,104,101,109,101,115, 0,117,105,102,111,110,116,115, 0, -117,105,115,116,121,108,101,115, 0,107,101,121,109, 97,112,115, 0, 97,100,100,111,110,115, 0,107,101,121, 99,111,110,102,105, -103,115,116,114, 91, 54, 52, 93, 0,117,110,100,111,115,116,101,112,115, 0,117,110,100,111,109,101,109,111,114,121, 0,103,112, - 95,109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103,112, 95,101,117, 99,108,105,100,101, 97,110,100,105,115,116, 0, -103,112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101,116,116,105,110,103,115, 0,116, 98, 95,108,101,102,116,109,111,117, -115,101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, 0,108,105,103,104,116, 91, 51, 93, 0,115, 99,117,108,112,116, - 95,112, 97,105,110,116, 95,115,101,116,116,105,110,103,115, 0,116,119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108, - 97,103, 0,116,119, 95,104, 97,110,100,108,101,115,105,122,101, 0,116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101, -111,117,116, 0,116,101,120, 99,111,108,108,101, 99,116,114, 97,116,101, 0,119,109,100,114, 97,119,109,101,116,104,111,100, 0, -109,101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101,102,101,116, 99,104,102,114, 97,109,101,115, 0,102,114, 97, -109,101,115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95,114,111,116, 95, 97,110,103,108,101, 0,111, 98, 99,101,110, -116,101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114,118,105, 98,114,105,103,104,116, 0,114,101, 99,101,110,116, - 95,102,105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101,119,116,120, 0,103,108,114,101,115,108,105,109,105,116, 0, -110,100,111,102, 95,112, 97,110, 0,110,100,111,102, 95,114,111,116, 97,116,101, 0, 99,117,114,115,115,105,122,101, 0, 99,111, -108,111,114, 95,112,105, 99,107,101,114, 95,116,121,112,101, 0,105,112,111, 95,110,101,119, 0,107,101,121,104, 97,110,100,108, -101,115, 95,110,101,119, 0,115, 99,114, 99, 97,115,116,102,112,115, 0,115, 99,114, 99, 97,115,116,119, 97,105,116, 0,112,114, -111,112,119,105,100,116,104, 0,118,101,114,115,101,109, 97,115,116,101,114, 91, 49, 54, 48, 93, 0,118,101,114,115,101,117,115, -101,114, 91, 49, 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108,105,112, 0, 99,111, 98, 97, 95,119,101,105,103,104,116, 0, -115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,115,105,122,101, 0,115, 99,117,108,112,116, - 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,117,110,112,114,111,106,101, 99,116,101,100, 95,114, 97,100,105,117, -115, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95, 97,108,112,104, 97, 0,115, 99,117, -108,112,116, 95,112, 97,105,110,116, 95,111,118,101,114,108, 97,121, 95, 99,111,108, 91, 51, 93, 0,118,101,114,116, 98, 97,115, -101, 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,115,101, 0, 42,110,101,119,115, 99,101,110,101, 0,102,117, -108,108, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0,100,111, 95,114,101,102,114,101,115,104, 0,100,111, 95,100, -114, 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, 97,119, 95,112, 97,105,110,116, 99,117,114,115,111,114, 0, -100,111, 95,100,114, 97,119, 95,100,114, 97,103, 0,115,119, 97,112, 0,109, 97,105,110,119,105,110, 0,115,117, 98,119,105,110, - 97, 99,116,105,118,101, 0, 42, 97,110,105,109,116,105,109,101,114, 0, 42, 99,111,110,116,101,120,116, 0,104, 97,110,100,108, -101,114, 91, 56, 93, 0, 42,110,101,119,118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42,116,121,112,101, 0,112, 97, -110,101,108,110, 97,109,101, 91, 54, 52, 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, 97,119,110, 97,109,101, - 91, 54, 52, 93, 0,111,102,115,120, 0,111,102,115,121, 0,115,105,122,101,120, 0,115,105,122,101,121, 0,108, 97, 98,101,108, -111,102,115, 0,114,117,110,116,105,109,101, 95,102,108, 97,103, 0, 99,111,110,116,114,111,108, 0,115,110, 97,112, 0,115,111, -114,116,111,114,100,101,114, 0, 42,112, 97,110,101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101,100, 97,116, 97, 0,108,105, -115,116, 95,115, 99,114,111,108,108, 0,108,105,115,116, 95,115,105,122,101, 0,108,105,115,116, 95,108, 97,115,116, 95,108,101, -110, 0,108,105,115,116, 95,103,114,105,112, 95,115,105,122,101, 0,108,105,115,116, 95,115,101, 97,114, 99,104, 91, 54, 52, 93, - 0, 42,118, 51, 0, 42,118, 52, 0, 42,102,117,108,108, 0, 98,117,116,115,112, 97, 99,101,116,121,112,101, 0,104,101, 97,100, -101,114,116,121,112,101, 0,115,112, 97, 99,101,100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, 0, 97, 99,116,105,111,110, -122,111,110,101,115, 0,119,105,110,114, 99,116, 0,100,114, 97,119,114, 99,116, 0,115,119,105,110,105,100, 0,114,101,103,105, -111,110,116,121,112,101, 0, 97,108,105,103,110,109,101,110,116, 0,100,111, 95,100,114, 97,119, 95,111,118,101,114,108, 97,121, - 0,117,105, 98,108,111, 99,107,115, 0,112, 97,110,101,108,115, 0, 42,104,101, 97,100,101,114,115,116,114, 0, 42,114,101,103, -105,111,110,100, 97,116, 97, 0,115,117, 98,118,115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115,105,111,110, 0,112, 97, -100,115, 0,109,105,110,118,101,114,115,105,111,110, 0,109,105,110,115,117, 98,118,101,114,115,105,111,110, 0, 42, 99,117,114, -115, 99,114,101,101,110, 0, 42, 99,117,114,115, 99,101,110,101, 0,102,105,108,101,102,108, 97,103,115, 0,103,108,111, 98, 97, -108,102, 0,102,105,108,101,110, 97,109,101, 91, 50, 52, 48, 93, 0,110, 97,109,101, 91, 56, 48, 93, 0, 42,105, 98,117,102, 0, - 42,105, 98,117,102, 95, 99,111,109,112, 0, 42,115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0,110,114, 0, 98,111,116, -116,111,109, 0,114,105,103,104,116, 0,120,111,102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93, 0,103, 97,109,109, - 97, 91, 51, 93, 0,103, 97,105,110, 91, 51, 93, 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110,101, 0,115,116, 97,114,116, -115,116,105,108,108, 0,101,110,100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0,111,114,120, 0,111,114, -121, 0, 42, 99,114,111,112, 0, 42,116,114, 97,110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, 98, 97,108, 97,110, 99, -101, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,115,116, 97,114,116,115, -116,105,108,108, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,101,110,100,115,116,105,108,108, 0, 42,105, 98,117,102, 95, -115,116, 97,114,116,115,116,105,108,108, 0, 42,105, 98,117,102, 95,101,110,100,115,116,105,108,108, 0, 42,105,110,115,116, 97, -110, 99,101, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, 95,112,114,105,118, 97, -116,101, 95,100, 97,116, 97, 0, 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111,102,115, 0,109, 97, 99, -104,105,110,101, 0,115,116, 97,114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,115, 97,116, 0,109,117,108, 0,104, - 97,110,100,115,105,122,101, 0, 97,110,105,109, 95,112,114,101,115,101,101,107, 0, 42,115,116,114,105,112, 0, 42,115, 99,101, -110,101, 95, 99, 97,109,101,114, 97, 0,101,102,102,101, 99,116, 95,102, 97,100,101,114, 0,115,112,101,101,100, 95,102, 97,100, -101,114, 0, 42,115,101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42,115,111, -117,110,100, 0, 42,115, 99,101,110,101, 95,115,111,117,110,100, 0,108,101,118,101,108, 0,112, 97,110, 0,115, 99,101,110,101, -110,114, 0,109,117,108,116,105, 99, 97,109, 95,115,111,117,114, 99,101, 0,115,116,114,111, 98,101, 0, 42,101,102,102,101, 99, -116,100, 97,116, 97, 0, 97,110,105,109, 95,115,116, 97,114,116,111,102,115, 0, 97,110,105,109, 95,101,110,100,111,102,115, 0, - 98,108,101,110,100, 95,109,111,100,101, 0, 98,108,101,110,100, 95,111,112, 97, 99,105,116,121, 0, 42,111,108,100, 98, 97,115, -101,112, 0, 42,112, 97,114,115,101,113, 0, 42,115,101,113, 98, 97,115,101,112, 0,109,101,116, 97,115,116, 97, 99,107, 0, 42, - 97, 99,116, 95,115,101,113, 0, 97, 99,116, 95,105,109, 97,103,101,100,105,114, 91, 50, 53, 54, 93, 0, 97, 99,116, 95,115,111, -117,110,100,100,105,114, 91, 50, 53, 54, 93, 0,111,118,101,114, 95,111,102,115, 0,111,118,101,114, 95, 99,102,114, 97, 0,111, -118,101,114, 95,102,108, 97,103, 0,111,118,101,114, 95, 98,111,114,100,101,114, 0,101,100,103,101, 87,105,100,116,104, 0,102, -111,114,119, 97,114,100, 0,119,105,112,101,116,121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109,112, 0,102, 66,111, -111,115,116, 0,100, 68,105,115,116, 0,100, 81,117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0, 83, 99, 97,108,101, -120, 73,110,105, 0, 83, 99, 97,108,101,121, 73,110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, 83, 99, 97,108,101,121, 70, -105,110, 0,120, 73,110,105, 0,120, 70,105,110, 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111,116, 73,110,105, 0,114,111, -116, 70,105,110, 0,105,110,116,101,114,112,111,108, 97,116,105,111,110, 0,117,110,105,102,111,114,109, 95,115, 99, 97,108,101, - 0, 42,102,114, 97,109,101, 77, 97,112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115,116, 86, 97,108,105,100, - 70,114, 97,109,101, 0, 98,117,116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,116,111,116,112, 97,114, -116, 0,110,111,114,109,102, 97, 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,120,102, 97, 99, 0,114, - 97,110,100,108,105,102,101, 0,102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,109, 97,120,108,101,110, - 0,100,101,102,118,101, 99, 91, 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, 0, 99,104,105,108,100, - 91, 52, 93, 0,109, 97,116, 91, 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,115,116, 97,116,105, 99, -115,116,101,112, 0,111,109, 97,116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101,120, 0,102,108, 97,103, 50, -110,101,103, 0,118,101,114,116,103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, 91, 51, 50, 93, 0,118, -103,114,111,117,112,110, 97,109,101, 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102, 97, 99, 0,117,115,101, -100, 0,117,115,101,100,101,108,101,109, 0, 42,112,111,105,110, 0,114,101,115,101,116,100,105,115,116, 0,108, 97,115,116,118, - 97,108, 0, 42,109, 97, 0,107,101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,101,116, 78, 97,109,101, - 91, 51, 50, 93, 0,116,111,103,103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91, 51, 50, 93, 0,109, 97, -120,118, 97,108,117,101, 91, 51, 50, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,105,111,110, 0,109, 97,116,101,114,105, - 97,108, 78, 97,109,101, 91, 51, 50, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,114,111,112,110, 97,109,101, 91, 51, 50, - 93, 0,109, 97,116,110, 97,109,101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111,115,101, 99,104, 97,110,110, -101,108, 91, 51, 50, 93, 0, 99,111,110,115,116,114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114,111,109, 79, 98,106,101, 99, -116, 0,115,117, 98,106,101, 99,116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116,121,112,101, 0,112,117,108, -115,101, 0,102,114,101,113, 0,116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,116, 97,112, 0,106,111,121, -105,110,100,101,120, 0, 97,120,105,115, 95,115,105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, 0,104, - 97,116, 0,104, 97,116,102, 0,112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0, 42,109,121,110,101, -119, 0,105,110,112,117,116,115, 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,108,105,110,107,115, 0,118, 97,108,111, - 0,115,116, 97,116,101, 95,109, 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111,112, 91, 51, 50, 93, 0, 98, -108,101,110,100,105,110, 0,112,114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,115,101,116, 0,115,116,114,105,100,101, - 97,120,105,115, 0,115,116,114,105,100,101,108,101,110,103,116,104, 0,115,110,100,110,114, 0,112, 97,100, 51, 91, 50, 93, 0, -112,105,116, 99,104, 0,115,111,117,110,100, 51, 68, 0,112, 97,100, 54, 91, 49, 93, 0, 42,109,101, 0,108,105,110, 86,101,108, -111, 99,105,116,121, 91, 51, 93, 0, 97,110,103, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108,102,108, 97, -103, 0,100,121,110, 95,111,112,101,114, 97,116,105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,102,111,114, 99, -101,114,111,116, 91, 51, 93, 0,108,105,110,101, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103,117,108, 97, -114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 42,114,101,102,101,114,101,110, 99,101, 0,109,105,110, 0,109, 97,120, 0, -114,111,116,100, 97,109,112, 0,109,105,110,108,111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, 51, 93, 0,109,105,110,114, -111,116, 91, 51, 93, 0,109, 97,120,114,111,116, 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51, 50, 93, 0, 98,117,116,115, -116, 97, 0, 98,117,116,101,110,100, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, 97,114,103, 95, 49, - 0,105,110,116, 95, 97,114,103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97,116, 95, 97,114,103, - 95, 50, 0,116,111, 80,114,111,112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, 99,116, 0, 98,111,100,121, - 84,121,112,101, 0,102,105,108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97,109,101, 91, 54, 52, - 93, 0,105,110,116, 95, 97,114,103, 0,102,108,111, 97,116, 95, 97,114,103, 0, 42,115,117, 98,116, 97,114,103,101,116, 0,103, -111, 0,109,105,110, 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101,102,101,114,101,110, 99,101, 95,100,105, -115,116, 97,110, 99,101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,101, 0,114,111,108,108,111,102,102, 95,102, 97, 99,116, -111,114, 0, 99,111,110,101, 95,105,110,110,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95, 97, -110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42,110,101,119,112, 97, 99,107,101,100,102, -105,108,101, 0, 97,116,116,101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, 97, 99,104,101, 0, - 42,112,108, 97,121, 98, 97, 99,107, 95,104, 97,110,100,108,101, 0, 42, 97,114,101, 97, 0, 42,108, 97,109,112,114,101,110, 0, -103,111, 98,106,101, 99,116, 0,100,117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 42,112,114,111,112, 0, 99,104,105,108,100, - 98, 97,115,101, 0,114,111,108,108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98,111,110,101, 95,109, - 97,116, 91, 51, 93, 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97,105,108, 91, 51, 93, - 0, 97,114,109, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0,122,119,105,100,116,104, 0,101, 97,115, -101, 49, 0,101, 97,115,101, 50, 0,114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95,116, 97,105,108, 0, 98,111,110,101, 98, - 97,115,101, 0, 99,104, 97,105,110, 98, 97,115,101, 0, 42,101,100, 98,111, 0, 42, 97, 99,116, 95, 98,111,110,101, 0, 42, 97, - 99,116, 95,101,100, 98,111,110,101, 0, 42,115,107,101,116, 99,104, 0,108, 97,121,101,114, 95,112,114,111,116,101, 99,116,101, -100, 0,103,104,111,115,116,101,112, 0,103,104,111,115,116,115,105,122,101, 0,103,104,111,115,116,116,121,112,101, 0,112, 97, -116,104,115,105,122,101, 0,103,104,111,115,116,115,102, 0,103,104,111,115,116,101,102, 0,112, 97,116,104,115,102, 0,112, 97, -116,104,101,102, 0,112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,111,105,110,116,115, 0,115,116, 97,114,116, - 95,102,114, 97,109,101, 0,101,110,100, 95,102,114, 97,109,101, 0,103,104,111,115,116, 95,115,102, 0,103,104,111,115,116, 95, -101,102, 0,103,104,111,115,116, 95, 98, 99, 0,103,104,111,115,116, 95, 97, 99, 0,103,104,111,115,116, 95,116,121,112,101, 0, -103,104,111,115,116, 95,115,116,101,112, 0,103,104,111,115,116, 95,102,108, 97,103, 0,112, 97,116,104, 95,116,121,112,101, 0, -112, 97,116,104, 95,115,116,101,112, 0,112, 97,116,104, 95,118,105,101,119,102,108, 97,103, 0,112, 97,116,104, 95, 98, 97,107, -101,102,108, 97,103, 0,112, 97,116,104, 95,115,102, 0,112, 97,116,104, 95,101,102, 0,112, 97,116,104, 95, 98, 99, 0,112, 97, -116,104, 95, 97, 99, 0, 99,111,110,115,116,102,108, 97,103, 0,105,107,102,108, 97,103, 0,115,101,108,101, 99,116,102,108, 97, -103, 0, 97,103,114,112, 95,105,110,100,101,120, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105,107,116,114,101,101, - 0, 42, 98, 95, 98,111,110,101, 95,109, 97,116,115, 0, 42,100,117, 97,108, 95,113,117, 97,116, 0, 42, 98, 95, 98,111,110,101, - 95,100,117, 97,108, 95,113,117, 97,116,115, 0,101,117,108, 91, 51, 93, 0, 99,104, 97,110, 95,109, 97,116, 91, 52, 93, 91, 52, - 93, 0,112,111,115,101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, 51, 93, 0,112,111, -115,101, 95,116, 97,105,108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105,109,105,116,109, 97,120, 91, - 51, 93, 0,115,116,105,102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, 0,105,107,114,111,116,119, -101,105,103,104,116, 0,105,107,108,105,110,119,101,105,103,104,116, 0, 42, 99,117,115,116,111,109, 0, 42, 99,117,115,116,111, -109, 95,116,120, 0, 99,104, 97,110, 98, 97,115,101, 0, 42, 99,104, 97,110,104, 97,115,104, 0,112,114,111,120,121, 95,108, 97, -121,101,114, 0,115,116,114,105,100,101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, 95,111,102,102,115, -101,116, 91, 51, 93, 0, 97,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,103,114,111,117,112, 0,105,107,115,111,108, -118,101,114, 0, 42,105,107,100, 97,116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,112,114,111,120,121, 95, 97, 99,116, 95, 98, -111,110,101, 91, 51, 50, 93, 0,110,117,109,105,116,101,114, 0,110,117,109,115,116,101,112, 0,109,105,110,115,116,101,112, 0, -109, 97,120,115,116,101,112, 0,115,111,108,118,101,114, 0,102,101,101,100, 98, 97, 99,107, 0,109, 97,120,118,101,108, 0,100, - 97,109,112,109, 97,120, 0,100, 97,109,112,101,112,115, 0, 99,104, 97,110,110,101,108,115, 0, 99,117,115,116,111,109, 67,111, -108, 0, 99,115, 0, 99,117,114,118,101,115, 0,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,109, 97,114,107,101,114, - 0, 42,115,111,117,114, 99,101, 0, 42,102,105,108,116,101,114, 95,103,114,112, 0,102,105,108,116,101,114,102,108, 97,103, 0, - 97,100,115, 0,116,105,109,101,115,108,105,100,101, 0, 42,103,114,112, 0,116,101,109,112, 0,110, 97,109,101, 91, 51, 48, 93, - 0,111,119,110,115,112, 97, 99,101, 0,116, 97,114,115,112, 97, 99,101, 0,101,110,102,111,114, 99,101, 0,104,101, 97,100,116, - 97,105,108, 0,108,105,110, 95,101,114,114,111,114, 0,114,111,116, 95,101,114,114,111,114, 0, 42,116, 97,114, 0,109, 97,116, -114,105,120, 91, 52, 93, 91, 52, 93, 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100,101,114, 0,116, 97,114,110,117,109, 0, -116, 97,114,103,101,116,115, 0,105,116,101,114, 97,116,105,111,110,115, 0,114,111,111,116, 98,111,110,101, 0,109, 97,120, 95, -114,111,111,116, 98,111,110,101, 0, 42,112,111,108,101,116, 97,114, 0,112,111,108,101,115,117, 98,116, 97,114,103,101,116, 91, - 51, 50, 93, 0,112,111,108,101, 97,110,103,108,101, 0,111,114,105,101,110,116,119,101,105,103,104,116, 0,103,114, 97, 98,116, - 97,114,103,101,116, 91, 51, 93, 0,110,117,109,112,111,105,110,116,115, 0, 99,104, 97,105,110,108,101,110, 0,120,122, 83, 99, - 97,108,101, 77,111,100,101, 0,114,101,115,101,114,118,101,100, 49, 0,114,101,115,101,114,118,101,100, 50, 0,109,105,110,109, - 97,120,102,108, 97,103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99,107,102,108, 97,103, 0,102, -111,108,108,111,119,102,108, 97,103, 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103,108,101,110,103,116, -104, 0, 98,117,108,103,101, 0,112,105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120, 88, 0, 97,120, 89, 0, 97, -120, 90, 0,109,105,110, 76,105,109,105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54, 93, 0,101,120,116,114, 97, - 70,122, 0,105,110,118,109, 97,116, 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109, 97,112, 91, 51, 93, 0,101, -120,112,111, 0,102,114,111,109, 95,109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91, 51, 93, 0,116,111, 95,109, -105,110, 91, 51, 93, 0,116,111, 95,109, 97,120, 91, 51, 93, 0,114,111,116, 65,120,105,115, 0,122,109,105,110, 0,122,109, 97, -120, 0,112, 97,100, 91, 57, 93, 0, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, 95, 97,120,105,115, - 0,115,116,114,105,100,101, 95, 97,120,105,115, 0, 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114,116, 0, 97, 99,116, -101,110,100, 0, 97, 99,116,111,102,102,115, 0,115,116,114,105,100,101,108,101,110, 0,115, 99, 97,108,101, 0, 98,108,101,110, -100,111,117,116, 0,115,116,114,105,100,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,111,102,102,115, 95, 98,111,110,101, - 91, 51, 50, 93, 0,104, 97,115,105,110,112,117,116, 0,104, 97,115,111,117,116,112,117,116, 0,100, 97,116, 97,116,121,112,101, - 0,115,111, 99,107,101,116,116,121,112,101, 0, 42,110,101,119, 95,115,111, 99,107, 0,110,115, 0,108,105,109,105,116, 0,115, -116, 97, 99,107, 95,105,110,100,101,120, 0,105,110,116,101,114,110, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 95,101,120, -116, 0,108,111, 99,120, 0,108,111, 99,121, 0,111,119,110, 95,105,110,100,101,120, 0,116,111, 95,105,110,100,101,120, 0, 42, -116,111,115,111, 99,107, 0, 42,108,105,110,107, 0, 42,110,101,119, 95,110,111,100,101, 0,108, 97,115,116,121, 0,111,117,116, -112,117,116,115, 0, 42,115,116,111,114, 97,103,101, 0,109,105,110,105,119,105,100,116,104, 0, 99,117,115,116,111,109, 49, 0, - 99,117,115,116,111,109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117,115,116,111,109, 52, 0,110,101,101,100, 95,101,120,101, - 99, 0,101,120,101, 99, 0, 42,116,104,114,101, 97,100,100, 97,116, 97, 0,116,111,116,114, 0, 98,117,116,114, 0,112,114,118, -114, 0, 42, 98,108,111, 99,107, 0, 42,116,121,112,101,105,110,102,111, 0, 42,102,114,111,109,110,111,100,101, 0, 42,116,111, -110,111,100,101, 0, 42,102,114,111,109,115,111, 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0, 42,115,116, 97, 99, -107, 0, 42,116,104,114,101, 97,100,115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, 97, 99,107,115,105,122,101, 0, 99,117, -114, 95,105,110,100,101,120, 0, 97,108,108,116,121,112,101,115, 0, 42,111,119,110,116,121,112,101, 0,112, 97,100, 50, 91, 50, - 93, 0, 40, 42,112,114,111,103,114,101,115,115, 41, 40, 41, 0, 40, 42,115,116, 97,116,115, 95,100,114, 97,119, 41, 40, 41, 0, - 40, 42,116,101,115,116, 95, 98,114,101, 97,107, 41, 40, 41, 0, 42,116, 98,104, 0, 42,112,114,104, 0, 42,115,100,104, 0, 99, -121, 99,108,105, 99, 0,109,111,118,105,101, 0,115, 97,109,112,108,101,115, 0,109, 97,120,115,112,101,101,100, 0,109,105,110, -115,112,101,101,100, 0,112,101,114, 99,101,110,116,120, 0,112,101,114, 99,101,110,116,121, 0, 98,111,107,101,104, 0,103, 97, -109,109, 97, 0, 99,117,114,118,101,100, 0,105,109, 97,103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109, 97,103,101, 95, -105,110, 95,104,101,105,103,104,116, 0, 99,101,110,116,101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,115,112,105,110, - 0,119,114, 97,112, 0,115,105,103,109, 97, 95, 99,111,108,111,114, 0,115,105,103,109, 97, 95,115,112, 97, 99,101, 0,104,117, -101, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116,114,101,110,103,116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, 91, - 52, 93, 0, 97,108,103,111,114,105,116,104,109, 0, 99,104, 97,110,110,101,108, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, - 0, 99,111,108,110, 97,109,101, 91, 51, 50, 93, 0, 98,107,116,121,112,101, 0,114,111,116, 97,116,105,111,110, 0,103, 97,109, - 99,111, 0,110,111, 95,122, 98,117,102, 0,102,115,116,111,112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, - 0, 42,100,105, 99,116, 0, 42,110,111,100,101, 0, 97,110,103,108,101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105, -120, 0,116,104,114,101,115,104,111,108,100, 0,102, 97,100,101, 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105, -116, 0,115,108,111,112,101, 91, 51, 93, 0,112,111,119,101,114, 91, 51, 93, 0,108,105,102,116, 95,108,103,103, 91, 51, 93, 0, -108,105,109, 99,104, 97,110, 0,117,110,115,112,105,108,108, 0,108,105,109,115, 99, 97,108,101, 0,117,115,112,105,108,108,114, - 0,117,115,112,105,108,108,103, 0,117,115,112,105,108,108, 98, 0,115,104,111,114,116,121, 0,109,105,110,116, 97, 98,108,101, - 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95,105,110, 91, 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, 42, - 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42,112,114,101,109,117,108,116, 97, 98,108,101, 0,112,114,101,115,101,116, - 0, 99,104, 97,110,103,101,100, 95,116,105,109,101,115,116, 97,109,112, 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99,109, - 91, 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, 0,119,104,105,116,101, 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0,115, - 97,109,112,108,101, 91, 51, 93, 0,120, 95,114,101,115,111,108,117,116,105,111,110, 0,100, 97,116, 97, 95,114, 91, 50, 53, 54, - 93, 0,100, 97,116, 97, 95,103, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95, 98, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,108, -117,109, 97, 91, 50, 53, 54, 93, 0,115, 97,109,112,108,101, 95,102,117,108,108, 0,115, 97,109,112,108,101, 95,108,105,110,101, -115, 0, 97, 99, 99,117,114, 97, 99,121, 0,119, 97,118,101,102,114,109, 95,109,111,100,101, 0,119, 97,118,101,102,114,109, 95, - 97,108,112,104, 97, 0,119, 97,118,101,102,114,109, 95,121,102, 97, 99, 0,119, 97,118,101,102,114,109, 95,104,101,105,103,104, -116, 0,118,101, 99,115, 99,111,112,101, 95, 97,108,112,104, 97, 0,118,101, 99,115, 99,111,112,101, 95,104,101,105,103,104,116, - 0,109,105,110,109, 97,120, 91, 51, 93, 91, 50, 93, 0,104,105,115,116, 0, 42,119, 97,118,101,102,111,114,109, 95, 49, 0, 42, -119, 97,118,101,102,111,114,109, 95, 50, 0, 42,119, 97,118,101,102,111,114,109, 95, 51, 0, 42,118,101, 99,115, 99,111,112,101, - 0,119, 97,118,101,102,111,114,109, 95,116,111,116, 0,111,102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,109,116, -101,120, 0, 42,105, 99,111,110, 95,105,109, 98,117,102, 0,105, 99,111,110, 0,112, 97,100, 50, 91, 55, 93, 0,105, 99,111,110, - 95,102,105,108,101,112, 97,116,104, 91, 50, 52, 48, 93, 0,110,111,114,109, 97,108, 95,119,101,105,103,104,116, 0,106,105,116, -116,101,114, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,114, 97,100,105,117,115, 0,115,109,111,111,116,104, 95, -115,116,114,111,107,101, 95,102, 97, 99,116,111,114, 0,114, 97,116,101, 0,114,103, 98, 91, 51, 93, 0,115, 99,117,108,112,116, - 95,112,108, 97,110,101, 0,112,108, 97,110,101, 95,111,102,102,115,101,116, 0,115, 99,117,108,112,116, 95,116,111,111,108, 0, -118,101,114,116,101,120,112, 97,105,110,116, 95,116,111,111,108, 0,105,109, 97,103,101,112, 97,105,110,116, 95,116,111,111,108, - 0, 97,117,116,111,115,109,111,111,116,104, 95,102, 97, 99,116,111,114, 0, 99,114,101, 97,115,101, 95,112,105,110, 99,104, 95, -102, 97, 99,116,111,114, 0,112,108, 97,110,101, 95,116,114,105,109, 0,116,101,120,116,117,114,101, 95,115, 97,109,112,108,101, - 95, 98,105, 97,115, 0,116,101,120,116,117,114,101, 95,111,118,101,114,108, 97,121, 95, 97,108,112,104, 97, 0,117,110,112,114, -111,106,101, 99,116,101,100, 95,114, 97,100,105,117,115, 0, 97,100,100, 95, 99,111,108, 91, 51, 93, 0,115,117, 98, 95, 99,111, -108, 91, 51, 93, 0, 97, 99,116,105,118,101, 95,114,110,100, 0, 97, 99,116,105,118,101, 95, 99,108,111,110,101, 0, 97, 99,116, -105,118,101, 95,109, 97,115,107, 0, 42,108, 97,121,101,114,115, 0,116,111,116,108, 97,121,101,114, 0,109, 97,120,108, 97,121, -101,114, 0,116,111,116,115,105,122,101, 0, 42,112,111,111,108, 0, 42,101,120,116,101,114,110, 97,108, 0,118,101,108, 91, 51, - 93, 0,114,111,116, 91, 52, 93, 0, 97,118,101, 91, 51, 93, 0, 42,103,114,111,117,110,100, 0,119, 97,110,100,101,114, 91, 51, - 93, 0,110,117,109, 0,112, 97,114,101,110,116, 0,112, 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0,102, -111,102,102,115,101,116, 0,114,116, 91, 50, 93, 0,112,114,101,118, 95,115,116, 97,116,101, 0, 42,104, 97,105,114, 0, 42, 98, -111,105,100, 0,100,105,101,116,105,109,101, 0,110,117,109, 95,100,109, 99, 97, 99,104,101, 0,104, 97,105,114, 95,105,110,100, -101,120, 0, 97,108,105,118,101, 0,115,112,114,105,110,103, 95,107, 0,114,101,115,116, 95,108,101,110,103,116,104, 0,118,105, -115, 99,111,115,105,116,121, 95,111,109,101,103, 97, 0,118,105,115, 99,111,115,105,116,121, 95, 98,101,116, 97, 0,115,116,105, -102,102,110,101,115,115, 95,107, 0,115,116,105,102,102,110,101,115,115, 95,107,110,101, 97,114, 0,114,101,115,116, 95,100,101, -110,115,105,116,121, 0, 98,117,111,121, 97,110, 99,121, 0, 42, 98,111,105,100,115, 0, 42,102,108,117,105,100, 0,100,105,115, -116,114, 0,112,104,121,115,116,121,112,101, 0, 97,118,101,109,111,100,101, 0,114,101, 97, 99,116,101,118,101,110,116, 0,100, -114, 97,119, 0,100,114, 97,119, 95, 97,115, 0,100,114, 97,119, 95,115,105,122,101, 0, 99,104,105,108,100,116,121,112,101, 0, -114,101,110, 95, 97,115, 0,115,117, 98,102,114, 97,109,101,115, 0,114,101,110, 95,115,116,101,112, 0,104, 97,105,114, 95,115, -116,101,112, 0,107,101,121,115, 95,115,116,101,112, 0, 97,100, 97,112,116, 95, 97,110,103,108,101, 0, 97,100, 97,112,116, 95, -112,105,120, 0,114,111,116,102,114,111,109, 0,105,110,116,101,103,114, 97,116,111,114, 0, 98, 98, 95, 97,108,105,103,110, 0, - 98, 98, 95,117,118, 95,115,112,108,105,116, 0, 98, 98, 95, 97,110,105,109, 0, 98, 98, 95,115,112,108,105,116, 95,111,102,102, -115,101,116, 0, 98, 98, 95,116,105,108,116, 0, 98, 98, 95,114, 97,110,100, 95,116,105,108,116, 0, 98, 98, 95,111,102,102,115, -101,116, 91, 50, 93, 0,115,105,109,112,108,105,102,121, 95,114,101,102,115,105,122,101, 0,115,105,109,112,108,105,102,121, 95, -114, 97,116,101, 0,115,105,109,112,108,105,102,121, 95,116,114, 97,110,115,105,116,105,111,110, 0,115,105,109,112,108,105,102, -121, 95,118,105,101,119,112,111,114,116, 0,116,105,109,101,116,119,101, 97,107, 0,106,105,116,102, 97, 99, 0,101,102,102, 95, -104, 97,105,114, 0,103,114,105,100, 95,114,101,115, 0,112, 97,114,116,102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116, 97,110, -112,104, 97,115,101, 0,114,101, 97, 99,116,102, 97, 99, 0,111, 98, 95,118,101,108, 91, 51, 93, 0, 97,118,101,102, 97, 99, 0, -112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,114,111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, 99, - 0,114, 97,110,100,115,105,122,101, 0,114,101, 97, 99,116,115,104, 97,112,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97,103, -102, 97, 99, 0, 98,114,111,119,110,102, 97, 99, 0,100, 97,109,112,102, 97, 99, 0,114, 97,110,100,108,101,110,103,116,104, 0, - 99,104,105,108,100, 95,110, 98,114, 0,114,101,110, 95, 99,104,105,108,100, 95,110, 98,114, 0,112, 97,114,101,110,116,115, 0, - 99,104,105,108,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,110,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,100, - 0, 99,104,105,108,100,102,108, 97,116, 0, 99,108,117,109,112,112,111,119, 0,114,111,117,103,104, 49, 0,114,111,117,103,104, - 49, 95,115,105,122,101, 0,114,111,117,103,104, 50, 0,114,111,117,103,104, 50, 95,115,105,122,101, 0,114,111,117,103,104, 50, - 95,116,104,114,101,115, 0,114,111,117,103,104, 95,101,110,100, 0,114,111,117,103,104, 95,101,110,100, 95,115,104, 97,112,101, - 0, 99,108,101,110,103,116,104, 0, 99,108,101,110,103,116,104, 95,116,104,114,101,115, 0, 98,114, 97,110, 99,104, 95,116,104, -114,101,115, 0,100,114, 97,119, 95,108,105,110,101, 91, 50, 93, 0,112, 97,116,104, 95,115,116, 97,114,116, 0,112, 97,116,104, - 95,101,110,100, 0,116,114, 97,105,108, 95, 99,111,117,110,116, 0,107,101,121,101,100, 95,108,111,111,112,115, 0,100,117,112, -108,105,119,101,105,103,104,116,115, 0, 42,101,102,102, 95,103,114,111,117,112, 0, 42,100,117,112, 95,111, 98, 0, 42, 98, 98, - 95,111, 98, 0, 42,112,100, 50, 0, 42,112, 97,114,116, 0, 42,112, 97,114,116,105, 99,108,101,115, 0, 42, 42,112, 97,116,104, - 99, 97, 99,104,101, 0, 42, 42, 99,104,105,108,100, 99, 97, 99,104,101, 0,112, 97,116,104, 99, 97, 99,104,101, 98,117,102,115, - 0, 99,104,105,108,100, 99, 97, 99,104,101, 98,117,102,115, 0, 42, 99,108,109,100, 0, 42,104, 97,105,114, 95,105,110, 95,100, -109, 0, 42,104, 97,105,114, 95,111,117,116, 95,100,109, 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42,108, 97,116,116,105, - 99,101, 0,116,114,101,101, 95,102,114, 97,109,101, 0,116,111,116, 99,104,105,108,100, 0,116,111,116, 99, 97, 99,104,101,100, - 0,116,111,116, 99,104,105,108,100, 99, 97, 99,104,101, 0,116, 97,114,103,101,116, 95,112,115,121,115, 0,116,111,116,107,101, -121,101,100, 0, 98, 97,107,101,115,112, 97, 99,101, 0, 98, 98, 95,117,118,110, 97,109,101, 91, 51, 93, 91, 51, 50, 93, 0,118, -103,114,111,117,112, 91, 49, 50, 93, 0,118,103, 95,110,101,103, 0,114,116, 51, 0, 42,114,101,110,100,101,114,100, 97,116, 97, - 0, 42,101,102,102,101, 99,116,111,114,115, 0, 42,116,114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97,110,100, 0, 67,100, -105,115, 0, 67,118,105, 0,115,116,114,117, 99,116,117,114, 97,108, 0, 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98,101, -110,100, 0,109, 97,120, 95,115,116,114,117, 99,116, 0,109, 97,120, 95,115,104,101, 97,114, 0, 97,118,103, 95,115,112,114,105, -110,103, 95,108,101,110, 0,116,105,109,101,115, 99, 97,108,101, 0,101,102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108,101, - 0,101,102,102, 95,119,105,110,100, 95,115, 99, 97,108,101, 0,115,105,109, 95,116,105,109,101, 95,111,108,100, 0,118,101,108, -111, 99,105,116,121, 95,115,109,111,111,116,104, 0, 99,111,108,108,105,100,101,114, 95,102,114,105, 99,116,105,111,110, 0,115, -116,101,112,115, 80,101,114, 70,114, 97,109,101, 0,112,114,101,114,111,108,108, 0,109, 97,120,115,112,114,105,110,103,108,101, -110, 0,115,111,108,118,101,114, 95,116,121,112,101, 0,118,103,114,111,117,112, 95, 98,101,110,100, 0,118,103,114,111,117,112, - 95,109, 97,115,115, 0,118,103,114,111,117,112, 95,115,116,114,117, 99,116, 0,115,104, 97,112,101,107,101,121, 95,114,101,115, -116, 0,112,114,101,115,101,116,115, 0,114,101,115,101,116, 0, 42, 99,111,108,108,105,115,105,111,110, 95,108,105,115,116, 0, -101,112,115,105,108,111,110, 0,115,101,108,102, 95,102,114,105, 99,116,105,111,110, 0,115,101,108,102,101,112,115,105,108,111, -110, 0,115,101,108,102, 95,108,111,111,112, 95, 99,111,117,110,116, 0,108,111,111,112, 95, 99,111,117,110,116, 0,112,114,101, -115,115,117,114,101, 0,116,104,105, 99,107,110,101,115,115, 0,115,116,114,111,107,101,115, 0,102,114, 97,109,101,110,117,109, - 0, 42, 97, 99,116,102,114, 97,109,101, 0,103,115,116,101,112, 0,105,110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102, -101,114, 95,115,105,122,101, 0,115, 98,117,102,102,101,114, 95,115,102,108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, 42, -116,121,112,101,115,116,114, 0, 42,109,101,115,115, 97,103,101, 0,108,105,115,116, 0,112,114,105,110,116,108,101,118,101,108, - 0,115,116,111,114,101,108,101,118,101,108, 0, 42,114,101,112,111,114,116,116,105,109,101,114, 0,103,114,101,121,115, 99, 97, -108,101, 0,119,105,100,116,104,102, 97, 99, 0, 42,119,105,110,100,114, 97,119, 97, 98,108,101, 0, 42,119,105,110, 97, 99,116, -105,118,101, 0,119,105,110,100,111,119,115, 0,105,110,105,116,105, 97,108,105,122,101,100, 0,102,105,108,101, 95,115, 97,118, -101,100, 0,111,112, 95,117,110,100,111, 95,100,101,112,116,104, 0,111,112,101,114, 97,116,111,114,115, 0,113,117,101,117,101, - 0,114,101,112,111,114,116,115, 0,106,111, 98,115, 0,112, 97,105,110,116, 99,117,114,115,111,114,115, 0,100,114, 97,103,115, - 0,107,101,121, 99,111,110,102,105,103,115, 0, 42,100,101,102, 97,117,108,116, 99,111,110,102, 0,116,105,109,101,114,115, 0, - 42, 97,117,116,111,115, 97,118,101,116,105,109,101,114, 0, 42,103,104,111,115,116,119,105,110, 0,103,114, 97, 98, 99,117,114, -115,111,114, 0, 42,110,101,119,115, 99,114,101,101,110, 0,115, 99,114,101,101,110,110, 97,109,101, 91, 51, 50, 93, 0,112,111, -115,120, 0,112,111,115,121, 0,119,105,110,100,111,119,115,116, 97,116,101, 0,109,111,110,105,116,111,114, 0,108, 97,115,116, - 99,117,114,115,111,114, 0, 97,100,100,109,111,117,115,101,109,111,118,101, 0, 42,101,118,101,110,116,115,116, 97,116,101, 0, - 42, 99,117,114,115,119,105,110, 0, 42,116,119,101, 97,107, 0,100,114, 97,119,109,101,116,104,111,100, 0,100,114, 97,119,102, - 97,105,108, 0, 42,100,114, 97,119,100, 97,116, 97, 0,109,111,100, 97,108,104, 97,110,100,108,101,114,115, 0,115,117, 98,119, -105,110,100,111,119,115, 0,103,101,115,116,117,114,101, 0,105,100,110, 97,109,101, 91, 54, 52, 93, 0,112,114,111,112,118, 97, -108,117,101, 0,115,104,105,102,116, 0, 99,116,114,108, 0, 97,108,116, 0,111,115,107,101,121, 0,107,101,121,109,111,100,105, -102,105,101,114, 0,109, 97,112,116,121,112,101, 0, 42,112,116,114, 0,105,116,101,109,115, 0,115,112, 97, 99,101,105,100, 0, -114,101,103,105,111,110,105,100, 0,107,109,105, 95,105,100, 0, 40, 42,112,111,108,108, 41, 40, 41, 0, 42,109,111,100, 97,108, - 95,105,116,101,109,115, 0, 98, 97,115,101,110, 97,109,101, 91, 54, 52, 93, 0, 97, 99,116,107,101,121,109, 97,112, 0, 42, 99, -117,115,116,111,109,100, 97,116, 97, 0, 42,112,121, 95,105,110,115,116, 97,110, 99,101, 0, 42,114,101,112,111,114,116,115, 0, -109, 97, 99,114,111, 0, 42,111,112,109, 0, 42,101,100, 97,116, 97, 0,105,110,102,108,117,101,110, 99,101, 0, 42, 99,111,101, -102,102,105, 99,105,101,110,116,115, 0, 97,114,114, 97,121,115,105,122,101, 0,112,111,108,121, 95,111,114,100,101,114, 0, 97, -109,112,108,105,116,117,100,101, 0,112,104, 97,115,101, 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, 97,115,101, 95, -111,102,102,115,101,116, 0,118, 97,108,117,101, 95,111,102,102,115,101,116, 0,109,105,100,118, 97,108, 0, 98,101,102,111,114, -101, 95,109,111,100,101, 0, 97,102,116,101,114, 95,109,111,100,101, 0, 98,101,102,111,114,101, 95, 99,121, 99,108,101,115, 0, - 97,102,116,101,114, 95, 99,121, 99,108,101,115, 0,114,101, 99,116, 0,112,104, 97,115,101, 0,109,111,100,105,102,105, 99, 97, -116,105,111,110, 0,115,116,101,112, 95,115,105,122,101, 0, 42,114,110, 97, 95,112, 97,116,104, 0,112, 99,104, 97,110, 95,110, - 97,109,101, 91, 51, 50, 93, 0,116,114, 97,110,115, 67,104, 97,110, 0,105,100,116,121,112,101, 0,116, 97,114,103,101,116,115, - 91, 56, 93, 0,110,117,109, 95,116, 97,114,103,101,116,115, 0,118, 97,114,105, 97, 98,108,101,115, 0,101,120,112,114,101,115, -115,105,111,110, 91, 50, 53, 54, 93, 0, 42,101,120,112,114, 95, 99,111,109,112, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, - 0, 97,114,114, 97,121, 95,105,110,100,101,120, 0, 99,111,108,111,114, 95,109,111,100,101, 0, 99,111,108,111,114, 91, 51, 93, - 0,102,114,111,109, 91, 49, 50, 56, 93, 0,116,111, 91, 49, 50, 56, 93, 0,109, 97,112,112,105,110,103,115, 0,115,116,114,105, -112,115, 0, 42,114,101,109, 97,112, 0,102, 99,117,114,118,101,115, 0,115,116,114,105,112, 95,116,105,109,101, 0, 98,108,101, -110,100,109,111,100,101, 0,101,120,116,101,110,100,109,111,100,101, 0,103,114,111,117,112, 91, 54, 52, 93, 0,103,114,111,117, -112,109,111,100,101, 0,107,101,121,105,110,103,102,108, 97,103, 0,112, 97,116,104,115, 0,116,121,112,101,105,110,102,111, 91, - 54, 52, 93, 0, 97, 99,116,105,118,101, 95,112, 97,116,104, 0, 42,116,109,112, 97, 99,116, 0,110,108, 97, 95,116,114, 97, 99, -107,115, 0, 42, 97, 99,116,115,116,114,105,112, 0,100,114,105,118,101,114,115, 0,111,118,101,114,114,105,100,101,115, 0, 97, - 99,116, 95, 98,108,101,110,100,109,111,100,101, 0, 97, 99,116, 95,101,120,116,101,110,100,109,111,100,101, 0, 97, 99,116, 95, -105,110,102,108,117,101,110, 99,101, 0,114,117,108,101, 0,111,112,116,105,111,110,115, 0,102,101, 97,114, 95,102, 97, 99,116, -111,114, 0,115,105,103,110, 97,108, 95,105,100, 0,108,111,111,107, 95, 97,104,101, 97,100, 0,111,108,111, 99, 91, 51, 93, 0, -113,117,101,117,101, 95,115,105,122,101, 0,119, 97,110,100,101,114, 0,102,108,101,101, 95,100,105,115,116, 97,110, 99,101, 0, -104,101, 97,108,116,104, 0,115,116, 97,116,101, 95,105,100, 0,114,117,108,101,115, 0, 99,111,110,100,105,116,105,111,110,115, - 0, 97, 99,116,105,111,110,115, 0,114,117,108,101,115,101,116, 95,116,121,112,101, 0,114,117,108,101, 95,102,117,122,122,105, -110,101,115,115, 0,108, 97,115,116, 95,115,116, 97,116,101, 95,105,100, 0,108, 97,110,100,105,110,103, 95,115,109,111,111,116, -104,110,101,115,115, 0, 98, 97,110,107,105,110,103, 0, 97,103,103,114,101,115,115,105,111,110, 0, 97,105,114, 95,109,105,110, - 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, 99, - 0, 97,105,114, 95,109, 97,120, 95, 97,118,101, 0, 97,105,114, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0, -108, 97,110,100, 95,106,117,109,112, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95,115,112,101,101,100, 0,108, - 97,110,100, 95,109, 97,120, 95, 97, 99, 99, 0,108, 97,110,100, 95,109, 97,120, 95, 97,118,101, 0,108, 97,110,100, 95,112,101, -114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,115,116,105, 99,107, 95,102,111,114, 99,101, 0,115,116, - 97,116,101,115, 0, 42,115,109,100, 0, 42,102,108,117,105,100, 95,103,114,111,117,112, 0, 42, 99,111,108,108, 95,103,114,111, -117,112, 0, 42,119,116, 0, 42,116,101,120, 95,119,116, 0, 42,116,101,120, 95,115,104, 97,100,111,119, 0, 42,115,104, 97,100, -111,119, 0,112, 48, 91, 51, 93, 0,112, 49, 91, 51, 93, 0,100,120, 0,111,109,101,103, 97, 0,116,101,109,112, 65,109, 98, 0, - 98,101,116, 97, 0,114,101,115, 91, 51, 93, 0, 97,109,112,108,105,102,121, 0,109, 97,120,114,101,115, 0,118,105,101,119,115, -101,116,116,105,110,103,115, 0,110,111,105,115,101, 0,100,105,115,115, 95,112,101,114, 99,101,110,116, 0,100,105,115,115, 95, -115,112,101,101,100, 0,114,101,115, 95,119,116, 91, 51, 93, 0,100,120, 95,119,116, 0,118, 51,100,110,117,109, 0, 99, 97, 99, -104,101, 95, 99,111,109,112, 0, 99, 97, 99,104,101, 95,104,105,103,104, 95, 99,111,109,112, 0, 42,112,111,105,110,116, 95, 99, - 97, 99,104,101, 91, 50, 93, 0,112,116, 99, 97, 99,104,101,115, 91, 50, 93, 0,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, -118,103,114,112, 95,104,101, 97,116, 95,115, 99, 97,108,101, 91, 50, 93, 0,118,103,114,111,117,112, 95,102,108,111,119, 0,118, -103,114,111,117,112, 95,100,101,110,115,105,116,121, 0,118,103,114,111,117,112, 95,104,101, 97,116, 0, 42,112,111,105,110,116, -115, 95,111,108,100, 0, 42,118,101,108, 0,109, 97,116, 95,111,108,100, 91, 52, 93, 91, 52, 93, 0, 0, 0, 0, 84, 89, 80, 69, -211, 1, 0, 0, 99,104, 97,114, 0,117, 99,104, 97,114, 0,115,104,111,114,116, 0,117,115,104,111,114,116, 0,105,110,116, 0, -108,111,110,103, 0,117,108,111,110,103, 0,102,108,111, 97,116, 0,100,111,117, 98,108,101, 0,118,111,105,100, 0, 76,105,110, -107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76,105,115,116, 66, 97,115,101, 0,118,101, 99, 50,115, 0,118,101, 99, 50,102, 0, -118,101, 99, 50,105, 0,118,101, 99, 50,100, 0,118,101, 99, 51,105, 0,118,101, 99, 51,102, 0,118,101, 99, 51,100, 0,118,101, - 99, 52,105, 0,118,101, 99, 52,102, 0,118,101, 99, 52,100, 0,114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, 80,114,111,112, -101,114,116,121, 68, 97,116, 97, 0, 73, 68, 80,114,111,112,101,114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70, -105,108,101, 68, 97,116, 97, 0, 80,114,101,118,105,101,119, 73,109, 97,103,101, 0, 73,112,111, 68,114,105,118,101,114, 0, 79, - 98,106,101, 99,116, 0, 73,112,111, 67,117,114,118,101, 0, 66, 80,111,105,110,116, 0, 66,101,122, 84,114,105,112,108,101, 0, - 73,112,111, 0, 75,101,121, 66,108,111, 99,107, 0, 75,101,121, 0, 65,110,105,109, 68, 97,116, 97, 0, 84,101,120,116, 76,105, -110,101, 0, 84,101,120,116, 77, 97,114,107,101,114, 0, 84,101,120,116, 0, 80, 97, 99,107,101,100, 70,105,108,101, 0, 67, 97, -109,101,114, 97, 0, 73,109, 97,103,101, 85,115,101,114, 0, 83, 99,101,110,101, 0, 73,109, 97,103,101, 0, 71, 80, 85, 84,101, -120,116,117,114,101, 0, 97,110,105,109, 0, 82,101,110,100,101,114, 82,101,115,117,108,116, 0, 77, 84,101,120, 0, 84,101,120, - 0, 80,108,117,103,105,110, 84,101,120, 0, 67, 66, 68, 97,116, 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, 69,110,118, 77, - 97,112, 0, 73,109, 66,117,102, 0, 80,111,105,110,116, 68,101,110,115,105,116,121, 0, 86,111,120,101,108, 68, 97,116, 97, 0, - 98, 78,111,100,101, 84,114,101,101, 0, 84,101,120, 77, 97,112,112,105,110,103, 0, 76, 97,109,112, 0, 67,117,114,118,101, 77, - 97,112,112,105,110,103, 0, 87, 97,118,101, 0, 86,111,108,117,109,101, 83,101,116,116,105,110,103,115, 0, 77, 97,116,101,114, -105, 97,108, 0, 71,114,111,117,112, 0, 86, 70,111,110,116, 0, 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108, -101,109, 0, 66,111,117,110,100, 66,111,120, 0, 77,101,116, 97, 66, 97,108,108, 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110, -102,111, 0, 84,101,120,116, 66,111,120, 0, 67,117,114,118,101, 0, 80, 97,116,104, 0, 83,101,108, 66,111,120, 0, 69,100,105, -116, 70,111,110,116, 0, 77,101,115,104, 0, 77, 70, 97, 99,101, 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86, -101,114,116, 0, 77, 69,100,103,101, 0, 77, 68,101,102,111,114,109, 86,101,114,116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99, -107,121, 0, 77, 83,101,108,101, 99,116, 0, 69,100,105,116, 77,101,115,104, 0, 67,117,115,116,111,109, 68, 97,116, 97, 0, 77, -117,108,116,105,114,101,115, 0, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 0, 77, 68,101,102,111,114, -109, 87,101,105,103,104,116, 0, 77, 84,101,120, 80,111,108,121, 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111,111,112, 67,111, -108, 0, 77, 70,108,111, 97,116, 80,114,111,112,101,114,116,121, 0, 77, 73,110,116, 80,114,111,112,101,114,116,121, 0, 77, 83, -116,114,105,110,103, 80,114,111,112,101,114,116,121, 0, 79,114,105,103, 83,112, 97, 99,101, 70, 97, 99,101, 0, 77, 68,105,115, -112,115, 0, 77,117,108,116,105,114,101,115, 67,111,108, 0, 77,117,108,116,105,114,101,115, 67,111,108, 70, 97, 99,101, 0, 77, -117,108,116,105,114,101,115, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 69,100,103,101, 0, 77,117,108,116,105,114,101, -115, 76,101,118,101,108, 0, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,105,102, -105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,114,118, -101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,117,105,108,100, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, - 77, 97,115,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114,114, 97,121, 77,111,100,105,102,105,101,114, 68, 97, -116, 97, 0, 77,105,114,114,111,114, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,100,103,101, 83,112,108,105,116, 77, -111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,101,118,101,108, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 77, -101,115,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 77,111,100,105,102,105,101,114, 68, 97,116, - 97, 0, 83,109,111,107,101, 68,111,109, 97,105,110, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 70,108,111,119, 83, -101,116,116,105,110,103,115, 0, 83,109,111,107,101, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 68,105,115,112,108, 97, - 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 85, 86, 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,114, - 68, 97,116, 97, 0, 68,101, 99,105,109, 97,116,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,104, - 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67, 97,115,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87, 97, -118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114,109, 97,116,117,114,101, 77,111,100,105,102,105,101,114, 68, - 97,116, 97, 0, 72,111,111,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,100, -105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116, -104, 0, 67,108,111,116,104, 83,105,109, 83,101,116,116,105,110,103,115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,116, -105,110,103,115, 0, 80,111,105,110,116, 67, 97, 99,104,101, 0, 67,111,108,108,105,115,105,111,110, 77,111,100,105,102,105,101, -114, 68, 97,116, 97, 0, 66, 86, 72, 84,114,101,101, 0, 83,117,114,102, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, - 97, 0, 68,101,114,105,118,101,100, 77,101,115,104, 0, 66, 86, 72, 84,114,101,101, 70,114,111,109, 77,101,115,104, 0, 66,111, -111,108,101, 97,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101, 0, - 77, 68,101,102, 67,101,108,108, 0, 77,101,115,104, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, - 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, - 99,108,101, 83,121,115,116,101,109, 0, 80, 97,114,116,105, 99,108,101, 73,110,115,116, 97,110, 99,101, 77,111,100,105,102,105, -101,114, 68, 97,116, 97, 0, 69,120,112,108,111,100,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,117,108,116,105, -114,101,115, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 77,111,100,105,102,105,101,114, - 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 83,104,114,105,110,107,119,114, 97,112, - 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,105,109,112,108,101, 68,101,102,111,114,109, 77,111,100,105,102,105,101, -114, 68, 97,116, 97, 0, 83,104, 97,112,101, 75,101,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,108,105,100, -105,102,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83, 99,114,101,119, 77,111,100,105,102,105,101,114, 68, 97,116, - 97, 0, 76, 97,116,116,105, 99,101, 0, 98, 68,101,102,111,114,109, 71,114,111,117,112, 0, 83, 99,117,108,112,116, 83,101,115, -115,105,111,110, 0, 98, 65, 99,116,105,111,110, 0, 98, 80,111,115,101, 0, 98, 71, 80,100, 97,116, 97, 0, 98, 65,110,105,109, - 86,105,122, 83,101,116,116,105,110,103,115, 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 0, 66,117,108,108,101,116, 83,111, -102,116, 66,111,100,121, 0, 80, 97,114,116, 68,101,102,108,101, 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 79, 98, 72,111, -111,107, 0, 68,117,112,108,105, 79, 98,106,101, 99,116, 0, 82, 78, 71, 0, 69,102,102,101, 99,116,111,114, 87,101,105,103,104, -116,115, 0, 80, 84, 67, 97, 99,104,101, 77,101,109, 0, 80, 84, 67, 97, 99,104,101, 69,100,105,116, 0, 83, 66, 86,101,114,116, -101,120, 0, 66,111,100,121, 80,111,105,110,116, 0, 66,111,100,121, 83,112,114,105,110,103, 0, 83, 66, 83, 99,114, 97,116, 99, -104, 0, 87,111,114,108,100, 0, 66, 97,115,101, 0, 65,118,105, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116, -105,109,101, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 83,101,116,116,105, -110,103,115, 0, 70, 70, 77,112,101,103, 67,111,100,101, 99, 68, 97,116, 97, 0, 65,117,100,105,111, 68, 97,116, 97, 0, 83, 99, -101,110,101, 82,101,110,100,101,114, 76, 97,121,101,114, 0, 82,101,110,100,101,114, 68, 97,116, 97, 0, 82,101,110,100,101,114, - 80,114,111,102,105,108,101, 0, 71, 97,109,101, 68,111,109,101, 0, 71, 97,109,101, 70,114, 97,109,105,110,103, 0, 71, 97,109, -101, 68, 97,116, 97, 0, 84,105,109,101, 77, 97,114,107,101,114, 0, 80, 97,105,110,116, 0, 66,114,117,115,104, 0, 73,109, 97, -103,101, 80, 97,105,110,116, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 66,114,117,115,104, 68, 97,116, - 97, 0, 80, 97,114,116,105, 99,108,101, 69,100,105,116, 83,101,116,116,105,110,103,115, 0, 84,114, 97,110,115,102,111,114,109, - 79,114,105,101,110,116, 97,116,105,111,110, 0, 83, 99,117,108,112,116, 0, 86, 80, 97,105,110,116, 0, 84,111,111,108, 83,101, -116,116,105,110,103,115, 0, 98, 83,116, 97,116,115, 0, 85,110,105,116, 83,101,116,116,105,110,103,115, 0, 80,104,121,115,105, - 99,115, 83,101,116,116,105,110,103,115, 0, 69,100,105,116,105,110,103, 0, 83, 99,101,110,101, 83,116, 97,116,115, 0, 68, 97, -103, 70,111,114,101,115,116, 0, 66, 71,112,105, 99, 0, 82,101,103,105,111,110, 86,105,101,119, 51, 68, 0, 82,101,110,100,101, -114, 73,110,102,111, 0, 82,101,116,111,112,111, 86,105,101,119, 68, 97,116, 97, 0, 86,105,101,119, 68,101,112,116,104,115, 0, - 83,109,111,111,116,104, 86,105,101,119, 83,116,111,114,101, 0,119,109, 84,105,109,101,114, 0, 86,105,101,119, 51, 68, 0, 83, -112, 97, 99,101, 76,105,110,107, 0, 86,105,101,119, 50, 68, 0, 83,112, 97, 99,101, 73,110,102,111, 0, 98, 83, 99,114,101,101, -110, 0, 83,112, 97, 99,101, 73,112,111, 0, 98, 68,111,112,101, 83,104,101,101,116, 0, 83,112, 97, 99,101, 66,117,116,115, 0, - 83,112, 97, 99,101, 83,101,113, 0, 70,105,108,101, 83,101,108,101, 99,116, 80, 97,114, 97,109,115, 0, 83,112, 97, 99,101, 70, -105,108,101, 0, 70,105,108,101, 76,105,115,116, 0,119,109, 79,112,101,114, 97,116,111,114, 0, 70,105,108,101, 76, 97,121,111, -117,116, 0, 83,112, 97, 99,101, 79,111,112,115, 0, 84,114,101,101, 83,116,111,114,101, 0, 84,114,101,101, 83,116,111,114,101, - 69,108,101,109, 0, 83,112, 97, 99,101, 73,109, 97,103,101, 0, 83, 99,111,112,101,115, 0, 72,105,115,116,111,103,114, 97,109, - 0, 83,112, 97, 99,101, 78,108, 97, 0, 83,112, 97, 99,101, 84,101,120,116, 0, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, - 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 84,105,109,101, 67, 97, 99,104,101, 0, 83,112, 97, 99,101, 84,105,109,101, 0, - 83,112, 97, 99,101, 78,111,100,101, 0, 83,112, 97, 99,101, 76,111,103,105, 99, 0, 83,112, 97, 99,101, 73,109, 97, 83,101,108, - 0, 67,111,110,115,111,108,101, 76,105,110,101, 0, 83,112, 97, 99,101, 67,111,110,115,111,108,101, 0, 83,112, 97, 99,101, 85, -115,101,114, 80,114,101,102, 0,117,105, 70,111,110,116, 0,117,105, 70,111,110,116, 83,116,121,108,101, 0,117,105, 83,116,121, -108,101, 0,117,105, 87,105,100,103,101,116, 67,111,108,111,114,115, 0,117,105, 87,105,100,103,101,116, 83,116, 97,116,101, 67, -111,108,111,114,115, 0, 84,104,101,109,101, 85, 73, 0, 84,104,101,109,101, 83,112, 97, 99,101, 0, 84,104,101,109,101, 87,105, -114,101, 67,111,108,111,114, 0, 98, 84,104,101,109,101, 0, 98, 65,100,100,111,110, 0, 83,111,108,105,100, 76,105,103,104,116, - 0, 85,115,101,114, 68,101,102, 0, 83, 99,114, 86,101,114,116, 0, 83, 99,114, 69,100,103,101, 0, 80, 97,110,101,108, 0, 80, - 97,110,101,108, 84,121,112,101, 0,117,105, 76, 97,121,111,117,116, 0, 83, 99,114, 65,114,101, 97, 0, 83,112, 97, 99,101, 84, -121,112,101, 0, 65, 82,101,103,105,111,110, 0, 65, 82,101,103,105,111,110, 84,121,112,101, 0, 70,105,108,101, 71,108,111, 98, - 97,108, 0, 83,116,114,105,112, 69,108,101,109, 0, 84, 83,116,114,105,112, 69,108,101,109, 0, 83,116,114,105,112, 67,114,111, -112, 0, 83,116,114,105,112, 84,114, 97,110,115,102,111,114,109, 0, 83,116,114,105,112, 67,111,108,111,114, 66, 97,108, 97,110, - 99,101, 0, 83,116,114,105,112, 80,114,111,120,121, 0, 83,116,114,105,112, 0, 80,108,117,103,105,110, 83,101,113, 0, 83,101, -113,117,101,110, 99,101, 0, 98, 83,111,117,110,100, 0, 77,101,116, 97, 83,116, 97, 99,107, 0, 87,105,112,101, 86, 97,114,115, - 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, 97,110,115,102,111,114,109, 86, 97,114,115, 0, 83,111,108,105,100, 67,111,108, -111,114, 86, 97,114,115, 0, 83,112,101,101,100, 67,111,110,116,114,111,108, 86, 97,114,115, 0, 69,102,102,101, 99,116, 0, 66, -117,105,108,100, 69,102,102, 0, 80, 97,114,116, 69,102,102, 0, 80, 97,114,116,105, 99,108,101, 0, 87, 97,118,101, 69,102,102, - 0, 98, 80,114,111,112,101,114,116,121, 0, 98, 78,101, 97,114, 83,101,110,115,111,114, 0, 98, 77,111,117,115,101, 83,101,110, -115,111,114, 0, 98, 84,111,117, 99,104, 83,101,110,115,111,114, 0, 98, 75,101,121, 98,111, 97,114,100, 83,101,110,115,111,114, - 0, 98, 80,114,111,112,101,114,116,121, 83,101,110,115,111,114, 0, 98, 65, 99,116,117, 97,116,111,114, 83,101,110,115,111,114, - 0, 98, 68,101,108, 97,121, 83,101,110,115,111,114, 0, 98, 67,111,108,108,105,115,105,111,110, 83,101,110,115,111,114, 0, 98, - 82, 97,100, 97,114, 83,101,110,115,111,114, 0, 98, 82, 97,110,100,111,109, 83,101,110,115,111,114, 0, 98, 82, 97,121, 83,101, -110,115,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 83,101,110,115,111,114, 0, 98, 77,101,115,115, 97,103,101, 83,101,110, -115,111,114, 0, 98, 83,101,110,115,111,114, 0, 98, 67,111,110,116,114,111,108,108,101,114, 0, 98, 74,111,121,115,116,105, 99, -107, 83,101,110,115,111,114, 0, 98, 69,120,112,114,101,115,115,105,111,110, 67,111,110,116, 0, 98, 80,121,116,104,111,110, 67, -111,110,116, 0, 98, 65, 99,116,117, 97,116,111,114, 0, 98, 65,100,100, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, - 0, 98, 65, 99,116,105,111,110, 65, 99,116,117, 97,116,111,114, 0, 98, 83,111,117,110,100, 65, 99,116,117, 97,116,111,114, 0, - 83,111,117,110,100, 51, 68, 0, 98, 69,100,105,116, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83, 99,101, -110,101, 65, 99,116,117, 97,116,111,114, 0, 98, 80,114,111,112,101,114,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 79, 98, -106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 73,112,111, 65, 99,116,117, 97,116,111,114, 0, 98, 67, 97,109,101,114, - 97, 65, 99,116,117, 97,116,111,114, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 71, -114,111,117,112, 65, 99,116,117, 97,116,111,114, 0, 98, 82, 97,110,100,111,109, 65, 99,116,117, 97,116,111,114, 0, 98, 77,101, -115,115, 97,103,101, 65, 99,116,117, 97,116,111,114, 0, 98, 71, 97,109,101, 65, 99,116,117, 97,116,111,114, 0, 98, 86,105,115, -105, 98,105,108,105,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 84,119,111, 68, 70,105,108,116,101,114, 65, 99,116,117, 97, -116,111,114, 0, 98, 80, 97,114,101,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83,116, 97,116,101, 65, 99,116,117, 97,116, -111,114, 0, 98, 65,114,109, 97,116,117,114,101, 65, 99,116,117, 97,116,111,114, 0, 83,112, 97, 99,101, 83,111,117,110,100, 0, - 71,114,111,117,112, 79, 98,106,101, 99,116, 0, 66,111,110,101, 0, 98, 65,114,109, 97,116,117,114,101, 0, 98, 77,111,116,105, -111,110, 80, 97,116,104, 86,101,114,116, 0, 98, 80,111,115,101, 67,104, 97,110,110,101,108, 0, 71, 72, 97,115,104, 0, 98, 73, - 75, 80, 97,114, 97,109, 0, 98, 73,116, 97,115, 99, 0, 98, 65, 99,116,105,111,110, 71,114,111,117,112, 0, 83,112, 97, 99,101, - 65, 99,116,105,111,110, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110, -116, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,111,110,115,116,114, 97,105,110,116, - 84, 97,114,103,101,116, 0, 98, 80,121,116,104,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 75,105,110,101,109, 97, -116,105, 99, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,112,108,105,110,101, 73, 75, 67,111,110,115,116,114, 97,105,110, -116, 0, 98, 84,114, 97, 99,107, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,101, 76,105,107,101, - 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, - 0, 98, 83,105,122,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83, 97,109,101, 86,111,108,117,109,101, - 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, - 98, 77,105,110, 77, 97,120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 67,111,110,115,116,114, 97, -105,110,116, 0, 98, 76,111, 99,107, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68, 97,109,112, 84,114, - 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111,110,115,116,114, 97, -105,110,116, 0, 98, 83,116,114,101,116, 99,104, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,105,103,105,100, 66, -111,100,121, 74,111,105,110,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, 67,111,110,115,116, -114, 97,105,110,116, 0, 98, 67,104,105,108,100, 79,102, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115,102, -111,114,109, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 80,105,118,111,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, - 76,111, 99, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 76,105,109,105,116, 67,111,110,115, -116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68,105,115, -116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,104,114,105,110,107,119,114, 97,112, 67,111,110,115, -116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 77,111,100,105,102,105,101,114, 0, 98, 65, 99,116,105,111,110, 83,116, -114,105,112, 0, 98, 78,111,100,101, 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 0, 98, 78,111,100,101, - 76,105,110,107, 0, 98, 78,111,100,101, 0, 98, 78,111,100,101, 80,114,101,118,105,101,119, 0,117,105, 66,108,111, 99,107, 0, - 98, 78,111,100,101, 84,121,112,101, 0, 78,111,100,101, 73,109, 97,103,101, 65,110,105,109, 0, 78,111,100,101, 66,108,117,114, - 68, 97,116, 97, 0, 78,111,100,101, 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 66,105,108, 97,116,101,114, 97,108, - 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 72,117,101, 83, 97,116, 0, 78,111,100,101, 73,109, 97,103,101, 70,105,108, -101, 0, 78,111,100,101, 67,104,114,111,109, 97, 0, 78,111,100,101, 84,119,111, 88, 89,115, 0, 78,111,100,101, 84,119,111, 70, -108,111, 97,116,115, 0, 78,111,100,101, 71,101,111,109,101,116,114,121, 0, 78,111,100,101, 86,101,114,116,101,120, 67,111,108, - 0, 78,111,100,101, 68,101,102,111, 99,117,115, 0, 78,111,100,101, 83, 99,114,105,112,116, 68,105, 99,116, 0, 78,111,100,101, - 71,108, 97,114,101, 0, 78,111,100,101, 84,111,110,101,109, 97,112, 0, 78,111,100,101, 76,101,110,115, 68,105,115,116, 0, 78, -111,100,101, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 78,111,100,101, 67,111,108,111,114,115,112,105,108,108, 0, 84, -101,120, 78,111,100,101, 79,117,116,112,117,116, 0, 67,117,114,118,101, 77, 97,112, 80,111,105,110,116, 0, 67,117,114,118,101, - 77, 97,112, 0, 66,114,117,115,104, 67,108,111,110,101, 0, 67,117,115,116,111,109, 68, 97,116, 97, 76, 97,121,101,114, 0, 67, -117,115,116,111,109, 68, 97,116, 97, 69,120,116,101,114,110, 97,108, 0, 72, 97,105,114, 75,101,121, 0, 80, 97,114,116,105, 99, -108,101, 75,101,121, 0, 66,111,105,100, 80, 97,114,116,105, 99,108,101, 0, 66,111,105,100, 68, 97,116, 97, 0, 67,104,105,108, -100, 80, 97,114,116,105, 99,108,101, 0, 80, 97,114,116,105, 99,108,101, 84, 97,114,103,101,116, 0, 80, 97,114,116,105, 99,108, -101, 68,117,112,108,105, 87,101,105,103,104,116, 0, 80, 97,114,116,105, 99,108,101, 68, 97,116, 97, 0, 83, 80, 72, 70,108,117, -105,100, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 83,101,116,116,105,110,103,115, 0, 66,111,105,100, - 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 75, 68, 84,114,101,101, - 0, 80, 97,114,116,105, 99,108,101, 68,114, 97,119, 68, 97,116, 97, 0, 76,105,110,107, 78,111,100,101, 0, 98, 71, 80, 68,115, -112,111,105,110,116, 0, 98, 71, 80, 68,115,116,114,111,107,101, 0, 98, 71, 80, 68,102,114, 97,109,101, 0, 98, 71, 80, 68,108, - 97,121,101,114, 0, 82,101,112,111,114,116, 0, 82,101,112,111,114,116, 76,105,115,116, 0, 82,101,112,111,114,116, 84,105,109, -101,114, 73,110,102,111, 0,119,109, 87,105,110,100,111,119, 77, 97,110, 97,103,101,114, 0,119,109, 87,105,110,100,111,119, 0, -119,109, 75,101,121, 67,111,110,102,105,103, 0,119,109, 69,118,101,110,116, 0,119,109, 83,117, 98, 87,105,110,100,111,119, 0, -119,109, 71,101,115,116,117,114,101, 0,119,109, 75,101,121, 77, 97,112, 73,116,101,109, 0, 80,111,105,110,116,101,114, 82, 78, - 65, 0,119,109, 75,101,121, 77, 97,112, 0,119,109, 79,112,101,114, 97,116,111,114, 84,121,112,101, 0, 70, 77,111,100,105,102, -105,101,114, 0, 70, 77,111,100, 95, 71,101,110,101,114, 97,116,111,114, 0, 70, 77,111,100, 95, 70,117,110, 99,116,105,111,110, - 71,101,110,101,114, 97,116,111,114, 0, 70, 67, 77, 95, 69,110,118,101,108,111,112,101, 68, 97,116, 97, 0, 70, 77,111,100, 95, - 69,110,118,101,108,111,112,101, 0, 70, 77,111,100, 95, 67,121, 99,108,101,115, 0, 70, 77,111,100, 95, 80,121,116,104,111,110, - 0, 70, 77,111,100, 95, 76,105,109,105,116,115, 0, 70, 77,111,100, 95, 78,111,105,115,101, 0, 70, 77,111,100, 95, 83,116,101, -112,112,101,100, 0, 68,114,105,118,101,114, 84, 97,114,103,101,116, 0, 68,114,105,118,101,114, 86, 97,114, 0, 67,104, 97,110, -110,101,108, 68,114,105,118,101,114, 0, 70, 80,111,105,110,116, 0, 70, 67,117,114,118,101, 0, 65,110,105,109, 77, 97,112, 80, - 97,105,114, 0, 65,110,105,109, 77, 97,112,112,101,114, 0, 78,108, 97, 83,116,114,105,112, 0, 78,108, 97, 84,114, 97, 99,107, - 0, 75, 83, 95, 80, 97,116,104, 0, 75,101,121,105,110,103, 83,101,116, 0, 65,110,105,109, 79,118,101,114,114,105,100,101, 0, - 73,100, 65,100,116, 84,101,109,112,108, 97,116,101, 0, 66,111,105,100, 82,117,108,101, 0, 66,111,105,100, 82,117,108,101, 71, -111, 97,108, 65,118,111,105,100, 0, 66,111,105,100, 82,117,108,101, 65,118,111,105,100, 67,111,108,108,105,115,105,111,110, 0, - 66,111,105,100, 82,117,108,101, 70,111,108,108,111,119, 76,101, 97,100,101,114, 0, 66,111,105,100, 82,117,108,101, 65,118,101, -114, 97,103,101, 83,112,101,101,100, 0, 66,111,105,100, 82,117,108,101, 70,105,103,104,116, 0, 66,111,105,100, 83,116, 97,116, -101, 0, 70, 76, 85, 73, 68, 95, 51, 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 0, 0, 84, 76, 69, 78, 1, 0, 1, 0, - 2, 0, 2, 0, 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 0, 0, 8, 0, 12, 0, 8, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, - 12, 0, 24, 0, 16, 0, 16, 0, 32, 0, 16, 0, 16, 0, 20, 0, 76, 0, 52, 0, 40, 2, 0, 0, 32, 0,140, 0,220, 3, 92, 0, - 36, 0, 56, 0, 84, 0,112, 0,124, 0, 56, 0, 24, 0, 40, 0,120, 0, 12, 0,104, 0, 36, 0,120, 5,156, 1, 0, 0, 0, 0, - 0, 0, 8, 1, 48, 1, 84, 1, 24, 0, 8, 3,168, 0, 0, 0, 72, 0, 32, 1,152, 0,132, 0,108, 1, 16, 1, 56, 0, 88, 0, -160, 2, 76, 0, 60, 1, 0, 0,108, 0,104, 0,148, 0, 56, 0, 8, 0, 16, 0, 92, 1, 0, 0, 0, 0, 0, 0, 40, 1, 20, 0, - 44, 0, 60, 0, 24, 0, 12, 0, 12, 0, 4, 0, 8, 0, 8, 0, 0, 0, 28, 0, 84, 0, 32, 0, 8, 0, 12, 0, 8, 0, 8, 0, - 4, 0, 4, 0, 0, 1, 32, 0, 12, 0, 16, 0, 64, 0, 24, 0, 12, 0, 40, 0, 64, 0, 80, 0,100, 0,108, 0, 80, 0,108, 0, -128, 0, 76, 0, 72, 0,120, 0, 72, 0, 84, 0,188, 0, 48, 0,168, 0,160, 0,172, 0, 72, 0,104, 0,116, 0,196, 0,112, 0, -224, 0, 64, 0, 92, 0, 0, 0,144, 0, 32, 0,240, 1,112, 0, 0, 0, 88, 0, 0, 0, 0, 0, 76, 0, 8, 0, 8, 0,244, 0, - 88, 0,124, 1, 84, 0, 76, 0, 72, 0, 72, 0,176, 1,120, 0,116, 0, 64, 0,120, 0, 92, 0,220, 0, 40, 0, 0, 0, 92, 0, -148, 0, 72, 0, 48, 0, 20, 0,120, 0,144, 0, 88, 1,208, 0,180, 0, 0, 0, 68, 0, 92, 0, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0,112, 1, 28, 0,176, 0,144, 0, 64, 0, 60, 0, 24, 0, 72, 0,232, 3, 56, 0, 20, 0, 16, 0,100, 0, 84, 0, 24, 0, -196, 2, 44, 0, 16, 0,156, 0, 80, 0, 96, 0, 44, 0,144, 1, 32, 0, 8, 0, 24, 0, 56, 2, 0, 0, 0, 0, 72, 0, 72, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 0, 40, 0,140, 0, 48, 0,140, 0,208, 0, 24, 0,216, 0,216, 0,200, 1, 60, 0, - 0, 0,120, 0, 0, 0,252, 0, 12, 0, 12, 0, 24, 33,112, 16, 24, 16,192, 0,124, 2, 80, 2, 40, 0, 36, 0,188, 0,244, 0, - 52, 0,140, 2, 28, 0,112, 1, 88, 0, 16, 1, 32, 0,224, 0, 32, 0, 32, 0,112, 2,104, 1, 16, 0, 48, 29, 72, 0, 56, 0, -248, 12, 20, 0, 24, 0, 64, 1, 0, 0, 0, 0, 96, 0, 0, 0,248, 0, 0, 0, 16, 1, 80, 0, 28, 0, 16, 0, 8, 0, 44, 0, -252, 0,240, 0,168, 1,216, 0, 92, 1, 16, 0, 12, 0, 24, 0, 52, 0, 16, 0, 20, 0, 16, 0, 24, 0, 56, 1, 0, 0, 56, 0, - 52, 0, 48, 0, 8, 0, 44, 0, 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 72, 0, 68, 0, 76, 0, 80, 0, - 60, 0,128, 0, 76, 0, 60, 0, 12, 0, 92, 0, 68, 0, 32, 0, 80, 0, 16, 0, 76, 0,108, 0, 84, 0, 28, 0, 96, 0, 56, 0, - 56, 0,108, 0,140, 0, 4, 0, 20, 0, 12, 0, 8, 0, 80, 0,188, 0, 24, 0, 16, 1,144, 0, 16, 0,204, 1, 0, 0, 4, 0, - 40, 0,104, 0,216, 0, 64, 0, 44, 0, 72, 0,116, 0, 60, 0,112, 0, 16, 0, 52, 0, 44, 0, 44, 0, 44, 0, 8, 0, 36, 0, - 68, 0, 64, 0, 44, 0, 44, 0, 20, 0, 52, 0, 96, 0, 12, 0,108, 0, 92, 0, 52, 0, 28, 0, 28, 0, 28, 0, 52, 0, 20, 0, - 60, 0,140, 0, 36, 0,120, 0, 32, 0,180, 0, 0, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, 44, 0, - 8, 0, 8, 0, 64, 0, 32, 0, 24, 0, 8, 0, 24, 0, 32, 0, 8, 0, 84, 0, 20, 0, 32, 0, 12, 0, 44, 0, 20, 0, 68, 0, -240, 0, 24, 0, 56, 0, 52, 0, 20, 0, 64, 0, 28, 0, 20, 0,180, 0, 36, 0,200, 1, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 20, 0, 24, 0,172, 0, 24, 0, 28, 0, 20, 0,168, 0,148, 0,152, 0, 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 96, 0, - 0, 0, 88, 0, 20, 0, 24, 0, 16, 0, 20, 0, 8, 0, 8, 0, 24, 0, 20, 0, 20, 0, 48, 0,208, 1, 28, 1, 16, 0, 68, 0, - 0, 1, 20, 0,160, 0, 88, 0, 96, 0,152, 0, 20, 0, 56, 0, 48, 0, 68, 0, 56, 0, 92, 0, 64, 0, 56, 0, 96, 0, 0, 0, - 0, 0, 0, 0, 83, 84, 82, 67,152, 1, 0, 0, 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0, - 11, 0, 1, 0, 9, 0, 2, 0, 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4, 0, 13, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0, - 14, 0, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0, 15, 0, 2, 0, 4, 0, 5, 0, 4, 0, 6, 0, 16, 0, 2, 0, 8, 0, 5, 0, - 8, 0, 6, 0, 17, 0, 3, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 18, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0, - 7, 0, 7, 0, 19, 0, 3, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 20, 0, 4, 0, 4, 0, 5, 0, 4, 0, 6, 0, - 4, 0, 7, 0, 4, 0, 8, 0, 21, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 8, 0, 22, 0, 4, 0, - 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 8, 0, 8, 0, 23, 0, 4, 0, 4, 0, 9, 0, 4, 0, 10, 0, 4, 0, 11, 0, - 4, 0, 12, 0, 24, 0, 4, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 25, 0, 4, 0, 9, 0, 13, 0, - 12, 0, 14, 0, 4, 0, 15, 0, 4, 0, 16, 0, 26, 0, 10, 0, 26, 0, 0, 0, 26, 0, 1, 0, 0, 0, 17, 0, 0, 0, 18, 0, - 2, 0, 19, 0, 0, 0, 20, 0, 4, 0, 21, 0, 25, 0, 22, 0, 4, 0, 23, 0, 4, 0, 24, 0, 27, 0, 9, 0, 9, 0, 0, 0, - 9, 0, 1, 0, 27, 0, 25, 0, 28, 0, 26, 0, 0, 0, 27, 0, 2, 0, 28, 0, 2, 0, 19, 0, 4, 0, 29, 0, 26, 0, 30, 0, - 28, 0, 8, 0, 27, 0, 31, 0, 27, 0, 32, 0, 29, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 4, 0, 36, 0, 4, 0, 37, 0, - 28, 0, 38, 0, 30, 0, 5, 0, 4, 0, 39, 0, 4, 0, 40, 0, 2, 0, 41, 0, 2, 0, 42, 0, 4, 0, 43, 0, 31, 0, 6, 0, - 32, 0, 44, 0, 2, 0, 45, 0, 2, 0, 46, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 47, 0, 33, 0, 21, 0, 33, 0, 0, 0, - 33, 0, 1, 0, 34, 0, 48, 0, 35, 0, 49, 0, 24, 0, 50, 0, 24, 0, 51, 0, 2, 0, 45, 0, 2, 0, 46, 0, 2, 0, 52, 0, - 2, 0, 53, 0, 2, 0, 54, 0, 2, 0, 55, 0, 2, 0, 19, 0, 2, 0, 56, 0, 7, 0, 11, 0, 7, 0, 12, 0, 4, 0, 57, 0, - 7, 0, 58, 0, 7, 0, 59, 0, 7, 0, 60, 0, 31, 0, 61, 0, 36, 0, 7, 0, 27, 0, 31, 0, 12, 0, 62, 0, 24, 0, 63, 0, - 2, 0, 45, 0, 2, 0, 64, 0, 2, 0, 65, 0, 2, 0, 37, 0, 37, 0, 16, 0, 37, 0, 0, 0, 37, 0, 1, 0, 7, 0, 66, 0, - 7, 0, 60, 0, 2, 0, 17, 0, 2, 0, 46, 0, 2, 0, 67, 0, 2, 0, 19, 0, 4, 0, 68, 0, 4, 0, 69, 0, 9, 0, 2, 0, - 7, 0, 70, 0, 0, 0, 20, 0, 0, 0, 71, 0, 7, 0, 72, 0, 7, 0, 73, 0, 38, 0, 13, 0, 27, 0, 31, 0, 39, 0, 74, 0, - 37, 0, 75, 0, 0, 0, 76, 0, 4, 0, 77, 0, 7, 0, 60, 0, 12, 0, 78, 0, 36, 0, 79, 0, 27, 0, 80, 0, 2, 0, 17, 0, - 2, 0, 81, 0, 2, 0, 82, 0, 2, 0, 19, 0, 40, 0, 6, 0, 40, 0, 0, 0, 40, 0, 1, 0, 0, 0, 83, 0, 0, 0, 84, 0, - 4, 0, 23, 0, 4, 0, 85, 0, 41, 0, 10, 0, 41, 0, 0, 0, 41, 0, 1, 0, 4, 0, 86, 0, 4, 0, 87, 0, 4, 0, 88, 0, - 4, 0, 89, 0, 4, 0, 14, 0, 4, 0, 90, 0, 0, 0, 91, 0, 0, 0, 92, 0, 42, 0, 15, 0, 27, 0, 31, 0, 0, 0, 93, 0, - 4, 0, 90, 0, 4, 0, 94, 0, 12, 0, 95, 0, 40, 0, 96, 0, 40, 0, 97, 0, 4, 0, 98, 0, 4, 0, 99, 0, 12, 0,100, 0, - 0, 0,101, 0, 4, 0,102, 0, 4, 0,103, 0, 9, 0,104, 0, 8, 0,105, 0, 43, 0, 3, 0, 4, 0,106, 0, 4, 0,107, 0, - 9, 0, 2, 0, 44, 0, 15, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,108, 0, 7, 0,109, 0, - 7, 0,110, 0, 7, 0,111, 0, 7, 0,112, 0, 7, 0,113, 0, 7, 0,114, 0, 7, 0,115, 0, 7, 0,116, 0, 36, 0, 79, 0, - 32, 0,117, 0, 45, 0, 13, 0, 4, 0,118, 0, 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, 2, 0,122, 0, 2, 0,123, 0, - 2, 0, 19, 0, 2, 0,124, 0, 2, 0,125, 0, 2, 0,126, 0, 2, 0,127, 0, 2, 0,128, 0, 46, 0,129, 0, 47, 0, 32, 0, - 27, 0, 31, 0, 0, 0, 34, 0, 12, 0,130, 0, 48, 0,131, 0, 49, 0,132, 0, 50, 0,133, 0, 50, 0,134, 0, 2, 0,135, 0, - 2, 0,136, 0, 2, 0,124, 0, 2, 0, 19, 0, 2, 0,137, 0, 2, 0, 17, 0, 4, 0,138, 0, 2, 0,139, 0, 2, 0,140, 0, - 2, 0,141, 0, 2, 0,142, 0, 2, 0,143, 0, 2, 0,144, 0, 4, 0,145, 0, 4, 0,146, 0, 43, 0,147, 0, 30, 0,148, 0, - 7, 0,149, 0, 4, 0,150, 0, 2, 0,151, 0, 2, 0,152, 0, 2, 0,153, 0, 2, 0,154, 0, 7, 0,155, 0, 7, 0,156, 0, - 51, 0, 63, 0, 2, 0,157, 0, 2, 0,158, 0, 2, 0,159, 0, 2, 0,160, 0, 32, 0,161, 0, 52, 0,162, 0, 0, 0,163, 0, - 0, 0,164, 0, 0, 0,165, 0, 0, 0,166, 0, 0, 0,167, 0, 7, 0,168, 0, 7, 0,169, 0, 7, 0,170, 0, 2, 0,171, 0, - 2, 0,172, 0, 2, 0,173, 0, 2, 0,174, 0, 2, 0,175, 0, 2, 0,176, 0, 0, 0,177, 0, 0, 0,178, 0, 7, 0,179, 0, - 7, 0,180, 0, 7, 0,181, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0, 56, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0,186, 0, - 7, 0,187, 0, 7, 0,188, 0, 7, 0,189, 0, 7, 0,190, 0, 7, 0,191, 0, 7, 0,192, 0, 7, 0,193, 0, 7, 0,194, 0, - 7, 0,195, 0, 7, 0,196, 0, 7, 0,197, 0, 7, 0,198, 0, 7, 0,199, 0, 7, 0,200, 0, 7, 0,201, 0, 7, 0,202, 0, - 7, 0,203, 0, 7, 0,204, 0, 7, 0,205, 0, 7, 0,206, 0, 7, 0,207, 0, 7, 0,208, 0, 7, 0,209, 0, 7, 0,210, 0, - 7, 0,211, 0, 7, 0,212, 0, 7, 0,213, 0, 7, 0,214, 0, 7, 0,215, 0, 7, 0,216, 0, 7, 0,217, 0, 7, 0,218, 0, - 53, 0, 15, 0, 0, 0,219, 0, 9, 0,220, 0, 0, 0,221, 0, 0, 0,222, 0, 4, 0,223, 0, 4, 0,224, 0, 9, 0,225, 0, - 7, 0,226, 0, 7, 0,227, 0, 7, 0,228, 0, 4, 0,229, 0, 9, 0,230, 0, 9, 0,231, 0, 4, 0,232, 0, 4, 0, 37, 0, - 54, 0, 6, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,233, 0, 7, 0, 66, 0, 4, 0, 63, 0, 55, 0, 5, 0, - 2, 0, 19, 0, 2, 0, 36, 0, 2, 0, 63, 0, 2, 0,234, 0, 54, 0,228, 0, 56, 0, 17, 0, 32, 0,161, 0, 47, 0,235, 0, - 57, 0,236, 0, 7, 0,237, 0, 7, 0,238, 0, 2, 0, 17, 0, 2, 0,239, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0,240, 0, - 4, 0,241, 0, 2, 0,242, 0, 2, 0,243, 0, 4, 0,124, 0, 4, 0,138, 0, 2, 0,244, 0, 2, 0,245, 0, 58, 0, 22, 0, - 2, 0, 19, 0, 2, 0,246, 0, 7, 0,247, 0, 7, 0,248, 0, 2, 0,137, 0, 2, 0,249, 0, 4, 0,250, 0, 4, 0,251, 0, - 32, 0,161, 0, 4, 0,252, 0, 2, 0,253, 0, 2, 0,254, 0, 9, 0,255, 0, 7, 0, 0, 1, 7, 0, 1, 1, 2, 0, 2, 1, - 2, 0, 3, 1, 2, 0, 4, 1, 2, 0, 5, 1, 7, 0, 6, 1, 7, 0, 7, 1, 55, 0, 8, 1, 59, 0, 13, 0, 4, 0, 9, 1, - 4, 0, 10, 1, 2, 0, 11, 1, 2, 0, 19, 0, 2, 0, 12, 1, 2, 0, 13, 1, 32, 0,161, 0, 7, 0, 14, 1, 4, 0, 15, 1, - 0, 0, 16, 1, 7, 0, 17, 1, 4, 0, 18, 1, 4, 0,124, 0, 52, 0, 63, 0, 27, 0, 31, 0, 39, 0, 74, 0, 7, 0, 19, 1, - 7, 0, 20, 1, 7, 0, 21, 1, 7, 0, 22, 1, 7, 0, 23, 1, 7, 0, 24, 1, 7, 0, 25, 1, 7, 0, 26, 1, 7, 0, 27, 1, - 7, 0, 69, 0, 7, 0, 28, 1, 7, 0, 29, 1, 7, 0, 30, 1, 7, 0, 31, 1, 7, 0, 32, 1, 7, 0, 33, 1, 7, 0, 34, 1, - 7, 0, 35, 1, 7, 0, 36, 1, 7, 0, 37, 1, 7, 0, 38, 1, 7, 0, 39, 1, 2, 0, 40, 1, 2, 0, 41, 1, 2, 0, 42, 1, - 2, 0, 43, 1, 2, 0, 44, 1, 2, 0, 45, 1, 2, 0, 46, 1, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,239, 0, 7, 0, 47, 1, - 7, 0, 48, 1, 7, 0, 49, 1, 7, 0, 50, 1, 4, 0, 51, 1, 4, 0, 52, 1, 2, 0, 53, 1, 2, 0, 54, 1, 2, 0, 12, 1, - 2, 0,122, 0, 4, 0, 23, 0, 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, 7, 0, 55, 1, 7, 0, 56, 1, 7, 0, 89, 0, - 45, 0, 57, 1, 60, 0, 58, 1, 36, 0, 79, 0, 47, 0,235, 0, 53, 0, 59, 1, 55, 0, 8, 1, 56, 0, 60, 1, 30, 0,148, 0, - 58, 0, 61, 1, 59, 0, 62, 1, 0, 0, 63, 1, 0, 0,178, 0, 61, 0, 8, 0, 7, 0, 64, 1, 7, 0, 65, 1, 7, 0,169, 0, - 4, 0, 19, 0, 7, 0, 66, 1, 7, 0, 67, 1, 7, 0, 68, 1, 32, 0, 44, 0, 62, 0, 72, 0, 27, 0, 31, 0, 39, 0, 74, 0, - 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 69, 1, 2, 0,172, 0, 2, 0, 70, 1, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, - 7, 0,182, 0, 7, 0, 71, 1, 7, 0, 72, 1, 7, 0, 73, 1, 7, 0, 74, 1, 7, 0, 75, 1, 7, 0, 76, 1, 7, 0, 77, 1, - 7, 0, 78, 1, 7, 0, 79, 1, 7, 0, 80, 1, 7, 0, 81, 1, 63, 0, 82, 1, 2, 0,246, 0, 2, 0, 69, 0, 7, 0,109, 0, - 7, 0,110, 0, 7, 0, 83, 1, 7, 0, 84, 1, 7, 0, 85, 1, 7, 0, 86, 1, 7, 0, 87, 1, 2, 0, 88, 1, 2, 0, 89, 1, - 2, 0, 90, 1, 2, 0, 91, 1, 0, 0, 92, 1, 0, 0, 93, 1, 2, 0, 94, 1, 2, 0, 95, 1, 2, 0, 96, 1, 2, 0, 97, 1, - 2, 0, 98, 1, 7, 0, 99, 1, 7, 0,100, 1, 7, 0,101, 1, 7, 0,102, 1, 2, 0,103, 1, 2, 0, 89, 0, 2, 0,104, 1, - 2, 0,105, 1, 2, 0,106, 1, 2, 0,107, 1, 7, 0,108, 1, 7, 0,109, 1, 7, 0,110, 1, 7, 0,111, 1, 7, 0,112, 1, - 7, 0,113, 1, 7, 0,114, 1, 7, 0,115, 1, 7, 0,116, 1, 7, 0,117, 1, 7, 0,118, 1, 7, 0,119, 1, 2, 0,120, 1, - 0, 0,121, 1, 36, 0, 79, 0, 51, 0,122, 1, 2, 0,123, 1, 0, 0,124, 1, 30, 0,148, 0, 64, 0, 2, 0, 27, 0, 31, 0, - 36, 0, 79, 0, 65, 0, 18, 0, 7, 0,125, 1, 7, 0,126, 1, 7, 0,127, 1, 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, - 7, 0,131, 1, 7, 0,132, 1, 7, 0,133, 1, 7, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 2, 0,137, 1, 2, 0,138, 1, - 7, 0,139, 1, 7, 0,140, 1, 7, 0,141, 1, 7, 0,142, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0,143, 1, - 2, 0, 19, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,144, 1, 7, 0,145, 1, 7, 0,146, 1, 7, 0,147, 1, - 7, 0,148, 1, 7, 0,149, 1, 7, 0,150, 1, 7, 0,151, 1, 7, 0,152, 1, 7, 0,153, 1, 7, 0,154, 1, 7, 0,155, 1, - 7, 0,156, 1, 7, 0,157, 1, 7, 0,158, 1, 7, 0,159, 1, 7, 0,160, 1, 7, 0,161, 1, 7, 0,162, 1, 7, 0,163, 1, - 65, 0,164, 1, 7, 0,165, 1, 7, 0,166, 1, 7, 0,167, 1, 7, 0,168, 1, 7, 0,169, 1, 7, 0,170, 1, 7, 0,171, 1, - 2, 0,172, 1, 2, 0,173, 1, 2, 0,174, 1, 0, 0,175, 1, 0, 0,176, 1, 7, 0,177, 1, 7, 0,178, 1, 2, 0,179, 1, - 2, 0,180, 1, 7, 0,181, 1, 7, 0,182, 1, 7, 0,183, 1, 7, 0,184, 1, 2, 0,185, 1, 2, 0,186, 1, 4, 0, 69, 1, - 4, 0,187, 1, 2, 0,188, 1, 2, 0,189, 1, 2, 0,190, 1, 2, 0,191, 1, 7, 0,192, 1, 7, 0,193, 1, 7, 0,194, 1, - 7, 0,195, 1, 7, 0,196, 1, 7, 0,197, 1, 7, 0,198, 1, 7, 0,199, 1, 7, 0,200, 1, 7, 0,201, 1, 0, 0,202, 1, - 7, 0,203, 1, 7, 0,204, 1, 7, 0,205, 1, 4, 0,206, 1, 0, 0,207, 1, 0, 0,104, 1, 0, 0,208, 1, 0, 0, 63, 1, - 2, 0,209, 1, 2, 0,210, 1, 2, 0,123, 1, 2, 0,211, 1, 2, 0,212, 1, 2, 0,213, 1, 7, 0,214, 1, 7, 0,215, 1, - 7, 0,216, 1, 7, 0,217, 1, 7, 0,218, 1, 2, 0,157, 0, 2, 0,158, 0, 55, 0,219, 1, 55, 0,220, 1, 0, 0,221, 1, - 0, 0,222, 1, 0, 0,223, 1, 0, 0,224, 1, 2, 0,225, 1, 2, 0,226, 1, 7, 0,227, 1, 7, 0,228, 1, 51, 0,122, 1, - 60, 0, 58, 1, 36, 0, 79, 0, 67, 0,229, 1, 30, 0,148, 0, 7, 0,230, 1, 7, 0,231, 1, 7, 0,232, 1, 7, 0,233, 1, - 7, 0,234, 1, 2, 0,235, 1, 2, 0, 69, 0, 7, 0,236, 1, 7, 0,237, 1, 7, 0,238, 1, 7, 0,239, 1, 7, 0,240, 1, - 7, 0,241, 1, 7, 0,242, 1, 7, 0,243, 1, 7, 0,244, 1, 2, 0,245, 1, 2, 0,246, 1, 4, 0,247, 1, 4, 0,248, 1, - 12, 0,249, 1, 68, 0, 4, 0, 27, 0, 31, 0, 0, 0,250, 1, 69, 0, 2, 0, 43, 0,147, 0, 70, 0, 26, 0, 70, 0, 0, 0, - 70, 0, 1, 0, 71, 0,251, 1, 4, 0,252, 1, 4, 0,253, 1, 4, 0,254, 1, 4, 0,255, 1, 4, 0, 0, 2, 4, 0, 1, 2, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 2, 2, 2, 0, 3, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 4, 2, - 7, 0, 5, 2, 7, 0, 6, 2, 7, 0, 7, 2, 7, 0, 8, 2, 7, 0, 9, 2, 7, 0, 10, 2, 7, 0, 23, 0, 7, 0, 11, 2, - 7, 0, 12, 2, 72, 0, 20, 0, 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 13, 2, 12, 0, 14, 2, 12, 0, 15, 2, - 36, 0, 79, 0, 66, 0, 16, 2, 0, 0, 19, 0, 0, 0, 17, 2, 2, 0, 18, 2, 2, 0,171, 0, 2, 0, 37, 0, 7, 0, 64, 1, - 7, 0,169, 0, 7, 0, 65, 1, 7, 0, 19, 2, 7, 0, 20, 2, 7, 0, 21, 2, 70, 0, 22, 2, 35, 0, 11, 0, 7, 0, 23, 2, - 7, 0, 24, 2, 7, 0, 25, 2, 7, 0,248, 0, 2, 0, 54, 0, 0, 0, 26, 2, 0, 0, 27, 2, 0, 0, 28, 2, 0, 0, 29, 2, - 0, 0, 30, 2, 0, 0, 31, 2, 34, 0, 7, 0, 7, 0, 32, 2, 7, 0, 24, 2, 7, 0, 25, 2, 2, 0, 28, 2, 2, 0, 31, 2, - 7, 0,248, 0, 7, 0, 37, 0, 73, 0, 21, 0, 73, 0, 0, 0, 73, 0, 1, 0, 2, 0, 17, 0, 2, 0, 33, 2, 2, 0, 31, 2, - 2, 0, 19, 0, 2, 0, 34, 2, 2, 0, 35, 2, 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 38, 2, 2, 0, 39, 2, 2, 0, 40, 2, - 2, 0, 41, 2, 7, 0, 42, 2, 7, 0, 43, 2, 34, 0, 48, 0, 35, 0, 49, 0, 2, 0, 44, 2, 2, 0, 45, 2, 4, 0, 46, 2, - 74, 0, 5, 0, 2, 0, 47, 2, 2, 0, 33, 2, 0, 0, 19, 0, 0, 0, 37, 0, 2, 0, 69, 0, 75, 0, 4, 0, 7, 0, 5, 0, - 7, 0, 6, 0, 7, 0, 8, 0, 7, 0, 48, 2, 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 49, 2, - 12, 0, 14, 2, 12, 0, 50, 2, 32, 0, 51, 2, 32, 0, 52, 2, 32, 0, 53, 2, 36, 0, 79, 0, 77, 0, 54, 2, 38, 0, 55, 2, - 66, 0, 16, 2, 12, 0, 56, 2, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 2, 0,171, 0, 2, 0, 89, 0, 2, 0, 57, 2, - 2, 0, 58, 2, 2, 0, 59, 2, 7, 0, 60, 2, 7, 0, 61, 2, 2, 0, 62, 2, 2, 0, 18, 2, 2, 0, 19, 0, 2, 0, 63, 2, - 7, 0, 64, 2, 7, 0, 65, 2, 7, 0, 66, 2, 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 67, 2, 2, 0, 68, 2, 4, 0, 69, 2, - 9, 0, 70, 2, 2, 0, 23, 0, 2, 0, 95, 0, 2, 0, 66, 0, 2, 0, 71, 2, 7, 0, 72, 2, 7, 0, 73, 2, 7, 0, 74, 2, - 7, 0, 75, 2, 7, 0, 76, 2, 7, 0, 77, 2, 7, 0, 78, 2, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0, 81, 2, 0, 0, 82, 2, - 78, 0, 83, 2, 79, 0, 84, 2, 0, 0, 85, 2, 68, 0, 86, 2, 68, 0, 87, 2, 68, 0, 88, 2, 68, 0, 89, 2, 4, 0, 90, 2, - 7, 0, 91, 2, 4, 0, 92, 2, 4, 0, 93, 2, 75, 0, 94, 2, 4, 0, 95, 2, 4, 0, 96, 2, 74, 0, 97, 2, 74, 0, 98, 2, - 80, 0, 41, 0, 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 99, 2, 36, 0, 79, 0, 38, 0, 55, 2, 66, 0, 16, 2, - 81, 0,100, 2, 82, 0,101, 2, 83, 0,102, 2, 84, 0,103, 2, 85, 0,104, 2, 86, 0,105, 2, 87, 0,106, 2, 88, 0,107, 2, - 80, 0,108, 2, 89, 0,109, 2, 90, 0,110, 2, 91, 0,111, 2, 91, 0,112, 2, 91, 0,113, 2, 4, 0, 53, 0, 4, 0,114, 2, - 4, 0,115, 2, 4, 0,116, 2, 4, 0,117, 2, 2, 0,171, 0, 2, 0,118, 2, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, - 7, 0,119, 2, 4, 0, 57, 2, 2, 0,120, 2, 2, 0, 19, 0, 2, 0,121, 2, 2, 0,122, 2, 2, 0, 18, 2, 2, 0,123, 2, - 92, 0,124, 2, 93, 0,125, 2, 83, 0, 8, 0, 9, 0,126, 2, 7, 0,127, 2, 4, 0,128, 2, 0, 0, 19, 0, 0, 0,129, 2, - 2, 0, 69, 1, 2, 0,130, 2, 2, 0,131, 2, 81, 0, 7, 0, 4, 0,132, 2, 4, 0,133, 2, 4, 0,134, 2, 4, 0,135, 2, - 2, 0, 33, 2, 0, 0,136, 2, 0, 0, 19, 0, 85, 0, 5, 0, 4, 0,132, 2, 4, 0,133, 2, 0, 0,137, 2, 0, 0,138, 2, - 2, 0, 19, 0, 94, 0, 2, 0, 4, 0,139, 2, 7, 0, 25, 2, 86, 0, 3, 0, 94, 0,140, 2, 4, 0,141, 2, 4, 0, 19, 0, - 84, 0, 6, 0, 7, 0,142, 2, 2, 0,143, 2, 2, 0, 33, 2, 0, 0, 19, 0, 0, 0,138, 2, 0, 0, 59, 2, 87, 0, 4, 0, - 0, 0,233, 0, 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 95, 0, 6, 0, 47, 0,126, 2, 0, 0, 19, 0, 0, 0,129, 2, - 2, 0, 69, 1, 2, 0,130, 2, 2, 0,131, 2, 96, 0, 1, 0, 7, 0,144, 2, 97, 0, 5, 0, 0, 0,233, 0, 0, 0,179, 0, - 0, 0,180, 0, 0, 0,181, 0, 4, 0, 37, 0, 88, 0, 1, 0, 7, 0,145, 2, 89, 0, 2, 0, 4, 0,146, 2, 4, 0, 17, 0, - 82, 0, 7, 0, 7, 0,127, 2, 47, 0,126, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, 2, 0,130, 2, 2, 0,131, 2, - 98, 0, 1, 0, 7, 0,147, 2, 99, 0, 1, 0, 4, 0,148, 2,100, 0, 1, 0, 0, 0,149, 2,101, 0, 1, 0, 7, 0,127, 2, -102, 0, 3, 0, 4, 0,150, 2, 0, 0, 92, 0, 7, 0,151, 2,103, 0, 4, 0, 7, 0,233, 0, 7, 0,179, 0, 7, 0,180, 0, - 7, 0,181, 0,104, 0, 1, 0,103, 0,128, 2,105, 0, 5, 0, 4, 0,152, 2, 4, 0,153, 2, 0, 0, 19, 0, 0, 0, 33, 2, - 0, 0, 59, 2,106, 0, 2, 0, 4, 0,154, 2, 4, 0,153, 2,107, 0, 10, 0,107, 0, 0, 0,107, 0, 1, 0,105, 0,155, 2, -104, 0,156, 2,106, 0,157, 2, 4, 0, 53, 0, 4, 0,115, 2, 4, 0,114, 2, 4, 0, 37, 0, 84, 0,158, 2, 92, 0, 14, 0, - 12, 0,159, 2, 84, 0,158, 2, 0, 0,160, 2, 0, 0,161, 2, 0, 0,162, 2, 0, 0,163, 2, 0, 0,164, 2, 0, 0,165, 2, - 0, 0,166, 2, 0, 0, 19, 0, 91, 0,111, 2, 91, 0,113, 2, 2, 0,167, 2, 0, 0,168, 2, 93, 0, 8, 0, 4, 0,169, 2, - 4, 0,170, 2, 81, 0,171, 2, 85, 0,172, 2, 4, 0,115, 2, 4, 0,114, 2, 4, 0, 53, 0, 4, 0, 37, 0,108, 0, 9, 0, -108, 0, 0, 0,108, 0, 1, 0, 4, 0, 17, 0, 4, 0, 69, 1, 4, 0,173, 2, 4, 0, 37, 0, 0, 0, 20, 0, 46, 0,129, 0, - 0, 0,174, 2,109, 0, 7, 0,108, 0,175, 2, 2, 0,176, 2, 2, 0,159, 2, 2, 0,177, 2, 2, 0, 90, 0, 9, 0,178, 2, - 9, 0,179, 2,110, 0, 3, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0, 20, 0,111, 0, 5, 0,108, 0,175, 2, 32, 0,161, 0, - 0, 0, 20, 0, 2, 0,180, 2, 0, 0,181, 2,112, 0, 5, 0,108, 0,175, 2, 7, 0, 87, 0, 7, 0,182, 2, 4, 0,183, 2, - 4, 0,184, 2,113, 0, 5, 0,108, 0,175, 2, 32, 0,185, 2, 0, 0, 71, 0, 4, 0, 69, 1, 4, 0, 19, 0,114, 0, 13, 0, -108, 0,175, 2, 32, 0,186, 2, 32, 0,187, 2, 32, 0,188, 2, 32, 0,189, 2, 7, 0,190, 2, 7, 0,191, 2, 7, 0,182, 2, - 7, 0,192, 2, 4, 0,193, 2, 4, 0,194, 2, 4, 0, 90, 0, 4, 0,195, 2,115, 0, 5, 0,108, 0,175, 2, 2, 0,196, 2, - 2, 0, 19, 0, 7, 0,197, 2, 32, 0,198, 2,116, 0, 3, 0,108, 0,175, 2, 7, 0,199, 2, 4, 0, 90, 0,117, 0, 10, 0, -108, 0,175, 2, 7, 0,200, 2, 4, 0,201, 2, 4, 0, 37, 0, 2, 0, 90, 0, 2, 0,202, 2, 2, 0,203, 2, 2, 0,204, 2, - 7, 0,205, 2, 0, 0,206, 2,118, 0, 3, 0,108, 0,175, 2, 7, 0, 37, 0, 4, 0, 17, 0,119, 0, 6, 0,108, 0,175, 2, -120, 0,207, 2,121, 0,208, 2,122, 0,209, 2, 7, 0,210, 2, 4, 0, 17, 0,123, 0, 11, 0,108, 0,175, 2, 52, 0,211, 2, - 7, 0,212, 2, 4, 0,213, 2, 0, 0,206, 2, 7, 0,214, 2, 4, 0,215, 2, 32, 0,216, 2, 0, 0,217, 2, 4, 0,218, 2, - 4, 0, 37, 0,124, 0, 12, 0,108, 0,175, 2, 32, 0,219, 2, 47, 0,220, 2, 4, 0, 90, 0, 4, 0,221, 2, 7, 0,222, 2, - 7, 0,223, 2, 7, 0,224, 2, 7, 0,225, 2, 0, 0,217, 2, 4, 0,218, 2, 4, 0, 37, 0,125, 0, 3, 0,108, 0,175, 2, - 7, 0,226, 2, 4, 0,227, 2,126, 0, 5, 0,108, 0,175, 2, 7, 0,228, 2, 0, 0,206, 2, 2, 0, 19, 0, 2, 0,229, 2, -127, 0, 8, 0,108, 0,175, 2, 32, 0,161, 0, 7, 0,228, 2, 7, 0,248, 0, 7, 0,106, 0, 0, 0,206, 2, 2, 0, 19, 0, - 2, 0, 17, 0,128, 0, 21, 0,108, 0,175, 2, 32, 0,230, 2, 0, 0,206, 2, 52, 0,211, 2, 32, 0,216, 2, 2, 0, 19, 0, - 2, 0, 37, 0, 7, 0,231, 2, 7, 0,232, 2, 7, 0,233, 2, 7, 0, 64, 2, 7, 0,234, 2, 7, 0,235, 2, 7, 0,236, 2, - 7, 0,237, 2, 4, 0,215, 2, 4, 0,218, 2, 0, 0,217, 2, 7, 0,238, 2, 7, 0,239, 2, 7, 0, 89, 0,129, 0, 7, 0, -108, 0,175, 2, 2, 0,240, 2, 2, 0,241, 2, 4, 0, 69, 0, 32, 0,161, 0, 7, 0,242, 2, 0, 0,206, 2,130, 0, 10, 0, -108, 0,175, 2, 32, 0,161, 0, 0, 0,243, 2, 7, 0,244, 2, 7, 0,245, 2, 7, 0,237, 2, 4, 0,246, 2, 4, 0,247, 2, - 7, 0,248, 2, 0, 0, 20, 0,131, 0, 1, 0,108, 0,175, 2,132, 0, 7, 0,108, 0,175, 2, 46, 0,129, 0,133, 0,249, 2, -134, 0,250, 2,135, 0,251, 2,136, 0,252, 2, 12, 0,253, 2,137, 0, 13, 0,108, 0,175, 2, 84, 0,254, 2, 84, 0,255, 2, - 84, 0, 0, 3, 84, 0, 1, 3, 84, 0, 2, 3, 84, 0, 3, 3, 81, 0, 4, 3, 4, 0, 5, 3, 4, 0, 6, 3, 7, 0,210, 2, - 7, 0, 37, 0,138, 0, 7, 3,139, 0, 7, 0,108, 0,175, 2, 84, 0,254, 2, 84, 0, 8, 3,140, 0, 9, 3,141, 0, 7, 3, - 4, 0, 10, 3, 4, 0, 5, 3,142, 0, 4, 0,108, 0,175, 2, 32, 0,161, 0, 4, 0, 11, 3, 4, 0, 37, 0,143, 0, 2, 0, - 4, 0, 12, 3, 7, 0, 25, 2,144, 0, 2, 0, 4, 0,120, 0, 4, 0, 13, 3,145, 0, 24, 0,108, 0,175, 2, 32, 0,161, 0, - 0, 0,206, 2, 2, 0, 14, 3, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 37, 0,143, 0, 15, 3, 4, 0, 16, 3, 7, 0, 17, 3, - 4, 0, 53, 0, 4, 0, 18, 3,144, 0, 19, 3,143, 0, 20, 3, 4, 0, 21, 3, 4, 0, 22, 3, 4, 0, 23, 3, 4, 0, 13, 3, - 7, 0, 24, 3, 7, 0, 25, 3, 7, 0, 26, 3, 7, 0, 27, 3, 7, 0, 28, 3, 9, 0, 29, 3,146, 0, 8, 0,108, 0,175, 2, -147, 0, 30, 3,140, 0, 9, 3, 4, 0, 31, 3, 4, 0, 32, 3, 4, 0, 33, 3, 2, 0, 19, 0, 2, 0, 56, 0,148, 0, 8, 0, -108, 0,175, 2, 32, 0, 44, 0, 2, 0,252, 0, 2, 0, 19, 0, 2, 0,196, 2, 2, 0, 56, 0, 7, 0, 34, 3, 7, 0, 35, 3, -149, 0, 5, 0,108, 0,175, 2, 4, 0, 36, 3, 2, 0, 19, 0, 2, 0, 37, 3, 7, 0, 38, 3,150, 0, 8, 0,108, 0,175, 2, - 0, 0, 39, 3, 0, 0, 40, 3, 0, 0,165, 2, 0, 0, 41, 3, 0, 0, 42, 3, 0, 0, 90, 0, 0, 0, 59, 2,151, 0, 3, 0, -108, 0,175, 2,152, 0, 43, 3,136, 0,252, 2,153, 0, 10, 0,108, 0,175, 2, 32, 0, 44, 3, 32, 0, 45, 3, 0, 0, 46, 3, - 7, 0, 47, 3, 2, 0, 48, 3, 2, 0, 49, 3, 0, 0, 50, 3, 0, 0, 51, 3, 0, 0,181, 2,154, 0, 9, 0,108, 0,175, 2, - 32, 0, 52, 3, 0, 0, 46, 3, 7, 0, 53, 3, 7, 0, 54, 3, 0, 0, 69, 1, 0, 0,196, 2, 0, 0, 55, 3, 0, 0, 37, 0, -155, 0, 1, 0,108, 0,175, 2,156, 0, 8, 0,108, 0,175, 2, 0, 0,206, 2, 7, 0,120, 0, 7, 0, 56, 3, 7, 0, 57, 3, - 7, 0, 58, 3, 7, 0, 59, 3, 4, 0, 19, 0,157, 0, 9, 0,108, 0,175, 2, 32, 0, 60, 3, 4, 0, 61, 3, 4, 0, 62, 3, - 4, 0, 63, 3, 7, 0, 64, 3, 7, 0, 65, 3, 2, 0,196, 2, 2, 0, 19, 0,158, 0, 28, 0, 27, 0, 31, 0, 2, 0, 34, 2, - 2, 0, 35, 2, 2, 0, 66, 3, 2, 0, 19, 0, 2, 0, 67, 3, 2, 0, 68, 3, 2, 0, 69, 3, 2, 0, 69, 0, 0, 0, 70, 3, - 0, 0, 71, 3, 0, 0, 72, 3, 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 73, 3, 7, 0, 74, 3, 7, 0, 75, 3, 7, 0, 76, 3, - 7, 0, 77, 3, 7, 0, 78, 3, 34, 0, 79, 3, 36, 0, 79, 0, 38, 0, 55, 2, 86, 0,105, 2, 0, 0, 71, 0, 7, 0, 80, 3, - 7, 0, 81, 3,158, 0, 82, 3,159, 0, 3, 0,159, 0, 0, 0,159, 0, 1, 0, 0, 0, 20, 0, 71, 0, 3, 0, 7, 0, 83, 3, - 4, 0, 19, 0, 4, 0, 37, 0, 32, 0,126, 0, 27, 0, 31, 0, 39, 0, 74, 0,160, 0, 84, 3, 2, 0, 17, 0, 2, 0, 85, 3, - 4, 0, 86, 3, 4, 0, 87, 3, 4, 0, 88, 3, 0, 0, 89, 3, 32, 0, 38, 0, 32, 0, 90, 3, 32, 0, 91, 3, 32, 0, 92, 3, - 32, 0, 93, 3, 36, 0, 79, 0, 77, 0, 54, 2, 71, 0,251, 1,161, 0, 94, 3,161, 0, 95, 3,162, 0, 96, 3, 9, 0, 2, 0, -163, 0, 97, 3,164, 0, 98, 3,165, 0, 99, 3, 12, 0,100, 3, 12, 0, 99, 2, 12, 0, 14, 2, 12, 0,101, 3, 12, 0,102, 3, - 4, 0, 69, 1, 4, 0,103, 3, 66, 0, 16, 2, 0, 0,104, 3, 4, 0, 18, 2, 4, 0,105, 3, 7, 0, 64, 1, 7, 0,106, 3, - 7, 0,107, 3, 7, 0,169, 0, 7, 0,108, 3, 7, 0, 65, 1, 7, 0,109, 3, 7, 0, 4, 2, 7, 0,110, 3, 7, 0,111, 3, - 7, 0,112, 3, 7, 0,113, 3, 7, 0,114, 3, 7, 0,115, 3, 7, 0,244, 2, 7, 0,116, 3, 7, 0,237, 0, 4, 0,117, 3, - 2, 0, 19, 0, 2, 0,118, 3, 2, 0,119, 3, 2, 0,120, 3, 2, 0,121, 3, 2, 0,122, 3, 2, 0,123, 3, 2, 0,124, 3, - 2, 0,125, 3, 2, 0,126, 3, 2, 0,127, 3, 2, 0,128, 3, 4, 0,129, 3, 4, 0,130, 3, 4, 0,131, 3, 4, 0,132, 3, - 7, 0,133, 3, 7, 0, 91, 2, 7, 0,134, 3, 7, 0,135, 3, 7, 0,136, 3, 7, 0,137, 3, 7, 0,138, 3, 7, 0,212, 0, - 7, 0,139, 3, 7, 0,140, 3, 7, 0,141, 3, 7, 0,142, 3, 2, 0,143, 3, 0, 0,144, 3, 0, 0,145, 3, 0, 0,146, 3, - 0, 0,147, 3, 7, 0,148, 3, 7, 0,149, 3, 12, 0,150, 3, 12, 0,151, 3, 12, 0,152, 3, 12, 0,153, 3, 7, 0,154, 3, - 2, 0,146, 2, 2, 0,155, 3, 7, 0,128, 2, 4, 0,156, 3, 4, 0,157, 3,166, 0,158, 3, 2, 0,159, 3, 2, 0,244, 0, - 7, 0,160, 3, 12, 0,161, 3, 12, 0,162, 3, 12, 0,163, 3, 12, 0,164, 3,167, 0, 61, 1,168, 0,165, 3, 67, 0,166, 3, - 2, 0,167, 3, 2, 0,168, 3, 2, 0,169, 3, 2, 0,170, 3, 7, 0,120, 2, 2, 0,171, 3, 2, 0,172, 3,152, 0,173, 3, -140, 0,174, 3,140, 0,175, 3, 4, 0,176, 3, 4, 0,177, 3, 4, 0,178, 3, 4, 0, 69, 0, 12, 0,179, 3, 12, 0,180, 3, - 12, 0,181, 3,169, 0, 14, 0,169, 0, 0, 0,169, 0, 1, 0, 32, 0, 38, 0, 7, 0,244, 2, 7, 0, 66, 1, 7, 0,245, 2, - 7, 0,237, 2, 0, 0, 20, 0, 4, 0,246, 2, 4, 0,247, 2, 4, 0,182, 3, 2, 0, 17, 0, 2, 0,183, 3, 7, 0,248, 2, -170, 0, 12, 0,170, 0, 0, 0,170, 0, 1, 0, 32, 0, 44, 0, 4, 0,184, 3, 4, 0,146, 2, 4, 0,185, 3, 4, 0, 17, 0, - 4, 0,186, 3, 7, 0, 66, 1, 7, 0,187, 3, 7, 0,188, 3, 7, 0,144, 2,167, 0, 40, 0, 4, 0, 19, 0, 2, 0,189, 3, - 2, 0,190, 3, 2, 0,237, 2, 2, 0,191, 3, 2, 0,192, 3, 2, 0,193, 3, 2, 0,194, 3, 2, 0,195, 3, 7, 0,196, 3, - 7, 0,197, 3, 7, 0,198, 3, 7, 0,199, 3, 7, 0,200, 3, 7, 0,201, 3, 7, 0,202, 3, 7, 0,203, 3, 7, 0,204, 3, - 7, 0,205, 3, 7, 0,206, 3, 7, 0,207, 3, 7, 0,208, 3, 7, 0,209, 3, 7, 0,210, 3, 7, 0,211, 3, 7, 0,212, 3, - 7, 0,213, 3, 7, 0,214, 3, 7, 0,215, 3, 7, 0,216, 3, 7, 0,217, 3, 7, 0,218, 3, 7, 0,219, 3, 7, 0,220, 3, - 7, 0,221, 3, 7, 0,222, 3, 52, 0,162, 0,171, 0,223, 3, 7, 0,224, 3, 4, 0,184, 2,172, 0, 5, 0, 67, 0,229, 1, - 7, 0,225, 3, 7, 0,226, 3, 2, 0, 19, 0, 2, 0,227, 3,173, 0, 9, 0,173, 0, 0, 0,173, 0, 1, 0, 4, 0,228, 3, - 4, 0,229, 3, 4, 0,230, 3, 4, 0, 19, 0, 4, 0,231, 3, 9, 0,232, 3, 9, 0,233, 3,136, 0, 19, 0,136, 0, 0, 0, -136, 0, 1, 0, 4, 0, 19, 0, 4, 0,234, 3, 4, 0,235, 3, 4, 0,236, 3, 4, 0,237, 3, 4, 0,238, 3, 4, 0,239, 3, - 4, 0,229, 3, 4, 0,146, 2, 4, 0, 56, 0, 0, 0,240, 3, 0, 0,241, 3, 0, 0,242, 3, 0, 0,243, 3, 12, 0,244, 3, -174, 0,245, 3, 9, 0,246, 3,175, 0, 1, 0, 7, 0, 32, 2,166, 0, 30, 0, 4, 0, 19, 0, 7, 0,247, 3, 7, 0,248, 3, - 7, 0,249, 3, 4, 0,250, 3, 4, 0,251, 3, 4, 0,252, 3, 4, 0,253, 3, 7, 0,254, 3, 7, 0,255, 3, 7, 0, 0, 4, - 7, 0, 1, 4, 7, 0, 2, 4, 7, 0, 3, 4, 7, 0, 4, 4, 7, 0, 5, 4, 7, 0, 6, 4, 7, 0, 7, 4, 7, 0, 8, 4, - 7, 0, 9, 4, 7, 0, 10, 4, 7, 0, 11, 4, 7, 0, 12, 4, 7, 0, 13, 4, 7, 0, 14, 4, 7, 0, 15, 4, 4, 0, 16, 4, - 4, 0, 17, 4, 7, 0, 18, 4, 7, 0,139, 3,168, 0, 54, 0, 4, 0,229, 3, 4, 0, 19, 4,176, 0, 20, 4,177, 0, 21, 4, - 0, 0, 37, 0, 0, 0, 22, 4, 2, 0, 23, 4, 7, 0, 24, 4, 0, 0, 25, 4, 7, 0, 26, 4, 7, 0, 27, 4, 7, 0, 28, 4, - 7, 0, 29, 4, 7, 0, 30, 4, 7, 0, 31, 4, 7, 0, 32, 4, 7, 0, 33, 4, 7, 0, 34, 4, 2, 0, 35, 4, 0, 0, 36, 4, - 2, 0, 37, 4, 7, 0, 38, 4, 7, 0, 39, 4, 0, 0, 40, 4, 4, 0,121, 0, 4, 0, 41, 4, 4, 0, 42, 4, 2, 0, 43, 4, - 2, 0, 44, 4,175, 0, 45, 4, 4, 0, 46, 4, 4, 0, 81, 0, 7, 0, 47, 4, 7, 0, 48, 4, 7, 0, 49, 4, 7, 0, 50, 4, - 2, 0, 51, 4, 2, 0, 52, 4, 2, 0, 53, 4, 2, 0, 54, 4, 2, 0, 55, 4, 2, 0, 56, 4, 2, 0, 57, 4, 2, 0, 58, 4, -178, 0, 59, 4, 7, 0, 60, 4, 7, 0, 61, 4,136, 0, 62, 4, 12, 0,253, 2,172, 0, 63, 4, 7, 0, 64, 4, 7, 0, 65, 4, - 7, 0, 66, 4, 0, 0, 67, 4,152, 0, 51, 0,151, 0, 68, 4, 2, 0, 17, 0, 2, 0, 69, 4, 2, 0, 70, 4, 2, 0, 71, 4, - 7, 0, 72, 4, 2, 0, 73, 4, 2, 0, 74, 4, 7, 0, 75, 4, 2, 0, 76, 4, 2, 0, 77, 4, 7, 0, 78, 4, 7, 0, 79, 4, - 7, 0, 80, 4, 7, 0, 81, 4, 7, 0, 82, 4, 4, 0, 83, 4, 4, 0, 84, 4, 7, 0, 85, 4, 4, 0, 86, 4, 7, 0, 87, 4, - 7, 0, 88, 4, 7, 0, 89, 4, 80, 0, 90, 4, 80, 0, 91, 4, 80, 0, 92, 4, 0, 0, 93, 4, 7, 0, 94, 4, 7, 0, 95, 4, - 36, 0, 79, 0, 2, 0, 96, 4, 0, 0, 97, 4, 0, 0, 98, 4, 7, 0, 99, 4, 4, 0,100, 4, 7, 0,101, 4, 7, 0,102, 4, - 4, 0,103, 4, 4, 0, 19, 0, 7, 0,104, 4, 7, 0,105, 4, 7, 0,106, 4, 84, 0,107, 4, 7, 0,108, 4, 7, 0,109, 4, - 7, 0,110, 4, 7, 0,111, 4, 7, 0,112, 4, 7, 0,113, 4, 7, 0,114, 4, 4, 0,115, 4,179, 0, 76, 0, 27, 0, 31, 0, - 39, 0, 74, 0, 2, 0,172, 0, 2, 0, 70, 1, 2, 0,104, 1, 2, 0,116, 4, 7, 0,117, 4, 7, 0,118, 4, 7, 0,119, 4, - 7, 0,120, 4, 7, 0,121, 4, 7, 0,122, 4, 7, 0,150, 1, 7, 0,152, 1, 7, 0,151, 1, 7, 0, 69, 0, 4, 0,123, 4, - 7, 0,124, 4, 7, 0,125, 4, 7, 0,126, 4, 7, 0,127, 4, 7, 0,128, 4, 7, 0,129, 4, 7, 0,130, 4, 2, 0,131, 4, - 2, 0, 69, 1, 2, 0,132, 4, 2, 0,133, 4, 2, 0,134, 4, 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4, 7, 0,138, 4, - 7, 0,139, 4, 7, 0,140, 4, 7, 0,141, 4, 7, 0,142, 4, 7, 0,143, 4, 7, 0,144, 4, 7, 0,145, 4, 7, 0,146, 4, - 7, 0,147, 4, 7, 0,148, 4, 7, 0,149, 4, 2, 0,150, 4, 2, 0,151, 4, 2, 0,152, 4, 2, 0,153, 4, 7, 0,154, 4, - 7, 0,155, 4, 7, 0,156, 4, 7, 0,157, 4, 2, 0,158, 4, 2, 0,159, 4, 2, 0,160, 4, 2, 0,161, 4, 7, 0,162, 4, - 7, 0,163, 4, 7, 0,164, 4, 7, 0,165, 4, 7, 0,166, 4, 7, 0,167, 4, 7, 0,168, 4, 2, 0,169, 4, 2, 0,170, 4, - 2, 0,171, 4, 2, 0,172, 4, 2, 0,173, 4, 2, 0, 19, 0, 7, 0,174, 4, 7, 0,175, 4, 36, 0, 79, 0, 51, 0,122, 1, - 2, 0,123, 1, 2, 0,176, 4, 30, 0,148, 0,180, 0, 8, 0,180, 0, 0, 0,180, 0, 1, 0, 4, 0,117, 3, 4, 0,177, 4, - 4, 0, 19, 0, 2, 0,178, 4, 2, 0,179, 4, 32, 0,161, 0,181, 0, 13, 0, 9, 0,180, 4, 9, 0,181, 4, 4, 0,182, 4, - 4, 0,183, 4, 4, 0,184, 4, 4, 0,185, 4, 4, 0,186, 4, 4, 0,187, 4, 4, 0,188, 4, 4, 0,189, 4, 4, 0,190, 4, - 4, 0, 37, 0, 0, 0,191, 4,182, 0, 5, 0, 9, 0,192, 4, 9, 0,193, 4, 4, 0,194, 4, 4, 0, 69, 0, 0, 0,195, 4, -183, 0, 17, 0, 4, 0,196, 4, 4, 0,197, 4, 4, 0,198, 4, 4, 0,199, 4, 4, 0,200, 4, 4, 0,201, 4, 4, 0,202, 4, - 4, 0,203, 4, 4, 0,204, 4, 4, 0,205, 4, 4, 0,206, 4, 4, 0,207, 4, 2, 0,208, 4, 2, 0,209, 4, 4, 0,210, 4, - 4, 0,211, 4, 4, 0, 89, 0,184, 0, 15, 0, 4, 0, 17, 0, 4, 0,198, 4, 4, 0,212, 4, 4, 0,213, 4, 4, 0,214, 4, - 4, 0,215, 4, 7, 0,216, 4, 4, 0,217, 4, 4, 0, 90, 0, 4, 0,218, 4, 4, 0,219, 4, 4, 0,220, 4, 4, 0,221, 4, - 4, 0,222, 4, 26, 0, 30, 0,185, 0, 7, 0, 4, 0,223, 4, 7, 0,224, 4, 7, 0,225, 4, 7, 0,226, 4, 4, 0,227, 4, - 2, 0, 19, 0, 2, 0, 37, 0,186, 0, 11, 0,186, 0, 0, 0,186, 0, 1, 0, 0, 0, 20, 0, 66, 0,228, 4, 67, 0,229, 4, - 4, 0,117, 3, 4, 0,230, 4, 4, 0,231, 4, 4, 0, 37, 0, 4, 0,232, 4, 4, 0,233, 4,187, 0,111, 0,181, 0,234, 4, -182, 0,235, 4,183, 0,236, 4,184, 0,237, 4, 4, 0, 10, 3, 4, 0,121, 0, 4, 0, 41, 4, 7, 0,238, 4, 4, 0,239, 4, - 4, 0,240, 4, 4, 0,241, 4, 4, 0,242, 4, 2, 0, 19, 0, 2, 0,243, 4, 7, 0,244, 4, 7, 0,245, 4, 7, 0,246, 4, - 7, 0,247, 4, 7, 0,248, 4, 2, 0,249, 4, 2, 0,250, 4, 2, 0,251, 4, 2, 0,252, 4, 2, 0,243, 0, 2, 0,253, 4, - 2, 0,254, 4, 2, 0,255, 4, 2, 0, 0, 5, 2, 0, 1, 5, 2, 0, 91, 1, 2, 0,106, 0, 2, 0, 2, 5, 2, 0, 3, 5, - 2, 0, 4, 5, 2, 0, 5, 5, 2, 0, 6, 5, 2, 0, 7, 5, 2, 0, 8, 5, 2, 0, 9, 5, 2, 0, 10, 5, 2, 0, 92, 1, - 2, 0, 11, 5, 2, 0, 12, 5, 2, 0, 13, 5, 2, 0, 14, 5, 4, 0, 15, 5, 4, 0, 69, 1, 4, 0, 16, 5, 2, 0, 17, 5, - 2, 0, 18, 5, 2, 0, 19, 5, 2, 0,248, 1, 2, 0, 20, 5, 2, 0, 21, 5, 2, 0, 22, 5, 2, 0, 23, 5, 24, 0, 24, 5, - 24, 0, 25, 5, 23, 0, 26, 5, 12, 0, 27, 5, 2, 0, 28, 5, 2, 0, 29, 5, 7, 0, 30, 5, 7, 0, 31, 5, 7, 0, 32, 5, - 7, 0, 33, 5, 4, 0, 34, 5, 7, 0, 35, 5, 7, 0, 36, 5, 7, 0, 37, 5, 7, 0, 38, 5, 2, 0, 39, 5, 2, 0, 40, 5, - 2, 0, 41, 5, 2, 0, 42, 5, 2, 0, 43, 5, 2, 0, 44, 5, 7, 0, 45, 5, 7, 0, 46, 5, 7, 0, 47, 5, 0, 0, 48, 5, - 0, 0, 49, 5, 4, 0, 50, 5, 2, 0, 51, 5, 2, 0,226, 1, 0, 0, 52, 5, 7, 0, 53, 5, 7, 0, 54, 5, 0, 0, 55, 5, - 0, 0, 56, 5, 0, 0, 57, 5, 0, 0, 58, 5, 4, 0, 59, 5, 2, 0, 60, 5, 2, 0, 61, 5, 7, 0, 62, 5, 7, 0, 63, 5, - 2, 0, 64, 5, 2, 0, 65, 5, 7, 0, 66, 5, 2, 0, 67, 5, 2, 0, 68, 5, 4, 0, 69, 5, 2, 0, 70, 5, 2, 0, 71, 5, - 2, 0, 72, 5, 2, 0, 73, 5, 7, 0, 74, 5, 7, 0, 69, 0, 42, 0, 75, 5, 0, 0, 76, 5,188, 0, 9, 0,188, 0, 0, 0, -188, 0, 1, 0, 0, 0, 20, 0, 2, 0, 77, 5, 2, 0, 78, 5, 2, 0, 79, 5, 2, 0, 89, 0, 7, 0, 80, 5, 7, 0, 69, 0, -189, 0, 7, 0, 2, 0,201, 2, 2, 0, 69, 1, 2, 0, 65, 3, 2, 0, 81, 5, 7, 0, 82, 5, 7, 0, 69, 0, 42, 0, 83, 5, -190, 0, 5, 0, 7, 0, 84, 5, 0, 0, 17, 0, 0, 0, 89, 0, 0, 0, 69, 0, 0, 0,226, 1,191, 0, 28, 0, 7, 0,129, 4, - 7, 0,130, 4, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0, 85, 5, 2, 0,176, 4, 2, 0,132, 4, 2, 0,133, 4, 2, 0,134, 4, - 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4,190, 0, 86, 5, 2, 0,249, 4, 2, 0,250, 4, 2, 0,251, 4, 2, 0,252, 4, - 2, 0,243, 0, 2, 0,253, 4, 2, 0, 87, 5, 2, 0,254, 4,189, 0, 88, 5, 2, 0, 89, 5, 2, 0, 0, 5, 2, 0, 3, 5, - 2, 0, 4, 5, 7, 0, 90, 5, 7, 0, 89, 0,192, 0, 6, 0,192, 0, 0, 0,192, 0, 1, 0, 4, 0,228, 3, 0, 0,240, 3, - 4, 0, 19, 0, 32, 0, 91, 5,193, 0, 6, 0,194, 0, 92, 5, 4, 0, 93, 5, 4, 0, 94, 5, 9, 0, 95, 5, 0, 0, 96, 5, - 4, 0, 90, 0,195, 0, 8, 0,193, 0, 97, 5, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 98, 5, 2, 0, 99, 5, 2, 0,100, 5, - 4, 0, 89, 0, 9, 0,101, 5,196, 0, 6, 0, 2, 0,106, 0, 2, 0,234, 3, 2, 0,102, 5, 2, 0,195, 2, 4, 0, 19, 0, - 7, 0,212, 2,197, 0, 14, 0, 2, 0, 19, 0, 2, 0,103, 5, 2, 0,104, 5, 2, 0,105, 5,196, 0,106, 5, 9, 0,101, 5, - 7, 0,107, 5, 7, 0, 56, 0, 4, 0,108, 5, 4, 0,109, 5, 4, 0,110, 5, 4, 0,111, 5, 46, 0,129, 0, 32, 0,161, 0, -198, 0, 4, 0,198, 0, 0, 0,198, 0, 1, 0, 0, 0,112, 5, 7, 0,113, 5,199, 0, 14, 0,193, 0, 97, 5, 4, 0, 90, 0, - 4, 0,114, 5, 7, 0,115, 5, 7, 0,116, 5, 7, 0,117, 5, 4, 0,118, 5, 4, 0,119, 5, 7, 0,120, 5, 7, 0,121, 5, - 4, 0,122, 5, 7, 0,123, 5, 7, 0,124, 5, 4, 0, 37, 0,200, 0, 7, 0,193, 0, 97, 5, 2, 0, 19, 0, 2, 0, 37, 0, - 4, 0, 36, 0, 4, 0,125, 5, 86, 0,126, 5, 9, 0,101, 5,201, 0, 74, 0,200, 0,127, 5,200, 0,128, 5,199, 0, 84, 3, - 7, 0,129, 5, 2, 0,130, 5, 2, 0,131, 5, 7, 0,132, 5, 7, 0,133, 5, 2, 0,234, 3, 2, 0,134, 5, 7, 0,135, 5, - 7, 0,136, 5, 7, 0,137, 5, 2, 0,138, 5, 2, 0,108, 5, 2, 0,139, 5, 2, 0,140, 5, 2, 0,141, 5, 2, 0,142, 5, - 7, 0,143, 5, 7, 0,144, 5, 7, 0,145, 5, 2, 0,146, 5, 2, 0,147, 5, 2, 0,148, 5, 2, 0,149, 5, 2, 0,150, 5, - 2, 0,151, 5, 2, 0,152, 5,195, 0,153, 5,197, 0,154, 5, 7, 0,155, 5, 7, 0,156, 5, 7, 0,157, 5, 2, 0,158, 5, - 2, 0,159, 5, 0, 0,160, 5, 0, 0,161, 5, 0, 0,162, 5, 0, 0,163, 5, 0, 0,164, 5, 0, 0,165, 5, 2, 0,166, 5, - 7, 0,167, 5, 7, 0,168, 5, 7, 0,169, 5, 7, 0,170, 5, 7, 0,171, 5, 7, 0,172, 5, 7, 0,173, 5, 7, 0,174, 5, - 7, 0,175, 5, 7, 0,176, 5, 2, 0,177, 5, 0, 0,178, 5, 0, 0,179, 5, 0, 0,180, 5, 0, 0,181, 5, 32, 0,182, 5, - 0, 0,183, 5, 0, 0,184, 5, 0, 0,185, 5, 0, 0,186, 5, 0, 0,187, 5, 0, 0,188, 5, 0, 0,189, 5, 0, 0,190, 5, - 2, 0,191, 5, 2, 0,192, 5, 2, 0,193, 5, 2, 0,194, 5, 2, 0,195, 5, 4, 0,196, 5, 4, 0,197, 5,202, 0, 8, 0, - 4, 0,198, 5, 4, 0,199, 5, 4, 0,200, 5, 4, 0,201, 5, 4, 0,202, 5, 4, 0,203, 5, 4, 0, 53, 0, 4, 0,115, 2, -203, 0, 3, 0, 7, 0,204, 5, 2, 0,205, 5, 2, 0, 19, 0,204, 0, 4, 0, 7, 0,206, 5, 4, 0, 19, 0, 4, 0,207, 5, - 4, 0, 56, 0, 46, 0, 42, 0, 27, 0, 31, 0, 39, 0, 74, 0, 32, 0, 91, 5,179, 0,208, 5, 46, 0,209, 5, 47, 0,235, 0, - 12, 0,210, 5,180, 0,211, 5, 32, 0,212, 5, 7, 0,213, 5, 7, 0,214, 5, 7, 0,215, 5, 7, 0,216, 5, 4, 0,117, 3, - 4, 0,217, 5, 4, 0, 89, 0, 2, 0, 19, 0, 2, 0, 63, 1, 60, 0, 58, 1,205, 0,218, 5,201, 0,219, 5,206, 0,220, 5, -187, 0,179, 0,185, 0,221, 5, 12, 0,100, 0, 12, 0,222, 5, 9, 0,223, 5, 9, 0,224, 5, 9, 0,225, 5,207, 0,226, 5, - 2, 0,227, 5, 2, 0,228, 5, 2, 0,244, 0, 2, 0,229, 5, 4, 0,230, 5, 4, 0,231, 5, 12, 0,232, 5,190, 0, 86, 5, -191, 0,233, 5,203, 0,234, 5,163, 0, 97, 3,204, 0,235, 5,208, 0, 11, 0,208, 0, 0, 0,208, 0, 1, 0, 47, 0,235, 0, - 45, 0, 57, 1, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0,106, 0, 7, 0,236, 5, 2, 0,237, 5, 2, 0, 19, 0, 7, 0, 69, 0, -209, 0, 39, 0, 7, 0,238, 5, 7, 0,239, 5, 7, 0,240, 5, 7, 0,241, 5, 7, 0,242, 5, 7, 0,243, 5, 7, 0,244, 5, - 7, 0,245, 5, 7, 0,246, 5, 7, 0, 76, 1, 7, 0,247, 5, 7, 0,248, 5, 7, 0,249, 5, 7, 0,250, 5, 7, 0,168, 0, - 2, 0,251, 5, 2, 0,252, 5, 2, 0,253, 5, 2, 0, 37, 0, 2, 0,254, 5, 2, 0,255, 5, 2, 0, 0, 6, 2, 0,237, 5, - 7, 0, 1, 6, 7, 0, 2, 6, 71, 0, 3, 6,163, 0, 97, 3,209, 0, 4, 6,210, 0, 5, 6,211, 0, 6, 6,212, 0, 7, 6, -213, 0, 8, 6,214, 0, 9, 6, 7, 0, 10, 6, 2, 0, 11, 6, 2, 0, 12, 6, 7, 0, 13, 6, 7, 0, 14, 6, 7, 0, 15, 6, -215, 0, 55, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6, 7, 0,246, 5, - 7, 0, 76, 1, 7, 0, 89, 0, 4, 0, 20, 6, 2, 0, 0, 6, 2, 0,237, 5, 32, 0, 91, 5, 32, 0, 21, 6, 12, 0, 22, 6, -208, 0, 23, 6,215, 0, 4, 6, 0, 0, 24, 6, 4, 0,117, 3, 4, 0,217, 5, 2, 0, 25, 6, 2, 0, 69, 0, 2, 0, 26, 6, - 2, 0, 27, 6, 2, 0,226, 1, 2, 0, 19, 0, 2, 0, 17, 2, 2, 0, 28, 6, 7, 0,111, 0, 7, 0, 29, 6, 7, 0, 13, 6, - 7, 0, 15, 6, 7, 0, 30, 6, 7, 0, 31, 6, 7, 0,168, 0, 7, 0,213, 5, 2, 0, 32, 6, 2, 0,248, 1, 2, 0, 33, 6, - 2, 0, 34, 6, 2, 0, 35, 6, 2, 0, 36, 6, 2, 0, 37, 6, 2, 0, 38, 6, 2, 0, 39, 6, 2, 0,253, 5, 4, 0, 40, 6, - 12, 0, 41, 6, 2, 0, 42, 6, 2, 0,129, 2, 2, 0, 43, 6, 0, 0, 44, 6, 0, 0, 45, 6, 9, 0, 46, 6,163, 0, 97, 3, -217, 0, 24, 0, 24, 0, 36, 0, 24, 0, 63, 0, 23, 0, 47, 6, 23, 0, 48, 6, 23, 0, 49, 6, 7, 0, 50, 6, 7, 0, 51, 6, - 7, 0, 52, 6, 7, 0, 53, 6, 2, 0, 54, 6, 2, 0, 55, 6, 2, 0, 56, 6, 2, 0, 57, 6, 2, 0, 58, 6, 2, 0, 19, 0, - 2, 0, 59, 6, 2, 0, 60, 6, 2, 0, 61, 6, 2, 0, 62, 6, 2, 0, 63, 6, 2, 0, 27, 6, 7, 0, 64, 6, 4, 0, 65, 6, - 4, 0, 66, 6,216, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6, -218, 0, 8, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6,219, 0, 67, 6, - 46, 0,129, 0,220, 0, 14, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6, -217, 0, 68, 6,221, 0, 69, 6, 12, 0, 70, 6, 2, 0, 69, 1, 2, 0, 71, 6, 4, 0, 19, 0, 7, 0, 72, 6, 4, 0, 27, 6, -222, 0, 20, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6,210, 0, 5, 6, -217, 0, 68, 6, 2, 0, 73, 6, 2, 0, 74, 6, 2, 0, 75, 6, 2, 0, 76, 6, 2, 0, 59, 6, 2, 0, 77, 6, 0, 0, 19, 0, - 0, 0,176, 4, 9, 0, 54, 2, 4, 0, 78, 6, 4, 0, 79, 6, 27, 0, 80, 6,223, 0, 18, 0,216, 0, 0, 0,216, 0, 1, 0, - 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6,217, 0, 68, 6, 7, 0, 79, 2, 7, 0, 80, 2, 2, 0, 73, 6, - 2, 0, 81, 6, 2, 0, 82, 6, 2, 0, 83, 6, 4, 0, 19, 0, 7, 0, 84, 6, 4, 0,237, 5, 4, 0, 37, 0,163, 0, 97, 3, -224, 0, 15, 0, 0, 0, 85, 6, 0, 0, 86, 6, 0, 0, 87, 6, 0, 0, 88, 6, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 89, 6, - 2, 0, 90, 6, 2, 0,169, 1, 2, 0, 91, 6, 4, 0, 92, 6, 4, 0, 93, 6, 2, 0, 94, 6, 2, 0, 37, 0, 0, 0, 95, 6, -225, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 4, 0, 96, 6,224, 0, 97, 6,226, 0, 98, 6, - 12, 0, 99, 6, 12, 0,100, 6,227, 0,101, 6,214, 0,102, 6,228, 0,103, 6, 2, 0,104, 6, 2, 0,105, 6, 2, 0,106, 6, - 2, 0, 69, 0,229, 0, 17, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6, -217, 0, 68, 6, 12, 0,107, 6,230, 0,108, 6, 0, 0,109, 6,231, 0,110, 6, 4, 0,111, 6, 4, 0,112, 6, 2, 0, 19, 0, - 2, 0,113, 6, 2, 0,114, 6, 2, 0, 37, 0,232, 0, 32, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, - 7, 0, 18, 6, 2, 0, 19, 6, 47, 0,220, 2, 45, 0, 57, 1, 63, 0,115, 6, 2, 0,128, 0, 2, 0,116, 6, 2, 0, 69, 0, - 2, 0,117, 6, 4, 0, 19, 0, 2, 0,118, 6, 2, 0,119, 6, 2, 0,120, 6, 2, 0,226, 1, 0, 0,121, 6, 0, 0,122, 6, - 0, 0,123, 6, 0, 0, 27, 6, 7, 0,124, 6, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0, 84, 6, 7, 0,248, 1, 7, 0,125, 6, - 7, 0,126, 6,163, 0, 97, 3,233, 0,127, 6,234, 0,128, 6,235, 0, 11, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, - 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6, 2, 0, 71, 6, 2, 0, 19, 0, 4, 0, 37, 0,221, 0, 69, 6,217, 0, 68, 6, -236, 0, 27, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6, 42, 0,129, 6, - 4, 0,130, 6, 4, 0,131, 6, 2, 0, 90, 0, 2, 0,128, 0, 2, 0,132, 6, 0, 0,133, 6, 0, 0,134, 6, 4, 0,135, 6, - 4, 0,136, 6, 4, 0,137, 6, 4, 0,138, 6, 2, 0,139, 6, 2, 0,140, 6, 7, 0,141, 6, 23, 0,142, 6, 23, 0,143, 6, - 4, 0,144, 6, 4, 0,145, 6, 0, 0,146, 6, 0, 0,147, 6,237, 0, 10, 0, 27, 0, 31, 0, 9, 0,148, 6, 9, 0,149, 6, - 9, 0,150, 6, 9, 0,151, 6, 9, 0,152, 6, 4, 0, 90, 0, 4, 0,153, 6, 0, 0,154, 6, 0, 0,155, 6,238, 0, 10, 0, -216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6,237, 0,156, 6, 2, 0, 90, 0, 2, 0,128, 0, - 4, 0, 89, 0, 9, 0,157, 6,239, 0, 9, 0,239, 0, 0, 0,239, 0, 1, 0, 4, 0, 17, 0, 4, 0, 19, 0, 7, 0,158, 6, - 4, 0, 23, 0, 4, 0,236, 3, 4, 0,237, 3, 4, 0,124, 0,240, 0, 11, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, - 4, 0, 17, 6, 7, 0, 18, 6,217, 0, 68, 6, 12, 0,159, 6, 4, 0,160, 6, 4, 0, 37, 0, 4, 0, 19, 0, 4, 0,161, 6, -241, 0, 25, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6,217, 0, 68, 6, - 27, 0,162, 6, 27, 0, 80, 0, 2, 0, 19, 0, 2, 0,128, 0, 7, 0,163, 6, 9, 0,164, 6, 7, 0, 79, 2, 7, 0, 80, 2, - 7, 0, 84, 6, 7, 0, 15, 6, 7, 0,165, 6, 7, 0,166, 6, 60, 0, 58, 1, 60, 0,167, 6, 4, 0,168, 6, 2, 0,169, 6, - 2, 0, 37, 0,163, 0, 97, 3,242, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, - 2, 0, 19, 6, 2, 0, 19, 0, 2, 0,126, 3, 4, 0, 37, 0,163, 0, 97, 3,243, 0, 42, 0,216, 0, 0, 0,216, 0, 1, 0, - 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6,217, 0, 68, 6,226, 0, 98, 6, 0, 0, 85, 6, 0, 0, 86, 6, - 0, 0, 87, 6, 2, 0, 17, 0, 2, 0,170, 6, 2, 0, 19, 0, 2, 0, 89, 6, 9, 0,164, 6, 4, 0, 92, 6, 4, 0,171, 6, - 4, 0,172, 6, 4, 0, 93, 6, 23, 0,173, 6, 23, 0,174, 6, 7, 0,175, 6, 7, 0,176, 6, 7, 0,177, 6, 7, 0,163, 6, - 2, 0,178, 6, 2, 0,234, 0, 2, 0,169, 1, 2, 0, 91, 6, 2, 0, 37, 0, 2, 0, 89, 0, 2, 0,179, 6, 2, 0,180, 6, - 9, 0,181, 6, 9, 0,182, 6, 9, 0,183, 6, 9, 0,184, 6, 9, 0,185, 6, 2, 0,186, 6, 0, 0,187, 6, 57, 0,188, 6, -244, 0, 7, 0,244, 0, 0, 0,244, 0, 1, 0, 4, 0,189, 6, 4, 0, 23, 0, 0, 0, 83, 0, 4, 0,190, 6, 4, 0, 17, 0, -245, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6, 4, 0, 17, 0, - 4, 0,191, 6, 4, 0, 19, 0, 4, 0,132, 6, 12, 0,192, 6, 12, 0,193, 6, 0, 0,194, 6, 0, 0,195, 6, 4, 0,196, 6, - 4, 0,197, 6,246, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 4, 0, 37, 0, 0, 0,198, 6, -247, 0, 7, 0,247, 0, 0, 0,247, 0, 1, 0, 0, 0,199, 6, 2, 0,200, 6, 2, 0,201, 6, 2, 0,202, 6, 2, 0, 37, 0, -248, 0, 12, 0, 2, 0,201, 6, 2, 0,203, 6, 2, 0,204, 6, 0, 0,181, 2, 2, 0,205, 6, 2, 0,206, 6, 2, 0,207, 6, - 2, 0,208, 6, 2, 0,209, 6, 2, 0, 59, 6, 7, 0,210, 6, 7, 0,211, 6,249, 0, 18, 0,249, 0, 0, 0,249, 0, 1, 0, - 0, 0,240, 3,248, 0,212, 6,248, 0,213, 6,248, 0,214, 6,248, 0,215, 6, 7, 0,216, 6, 2, 0,217, 6, 2, 0,218, 6, - 2, 0,219, 6, 2, 0,220, 6, 2, 0,221, 6, 2, 0,222, 6, 2, 0,223, 6, 2, 0,224, 6, 2, 0,225, 6, 2, 0,226, 6, -250, 0, 10, 0, 0, 0,227, 6, 0, 0,228, 6, 0, 0,229, 6, 0, 0,230, 6, 0, 0,231, 6, 0, 0,232, 6, 2, 0,233, 6, - 2, 0,234, 6, 2, 0,235, 6, 2, 0,236, 6,251, 0, 8, 0, 0, 0,237, 6, 0, 0,238, 6, 0, 0,239, 6, 0, 0,240, 6, - 0, 0,241, 6, 0, 0,242, 6, 7, 0,236, 5, 7, 0, 37, 0,252, 0, 18, 0,250, 0,243, 6,250, 0,244, 6,250, 0,245, 6, -250, 0,246, 6,250, 0,247, 6,250, 0,248, 6,250, 0,249, 6,250, 0,250, 6,250, 0,251, 6,250, 0,252, 6,250, 0,253, 6, -250, 0,254, 6,250, 0,255, 6,250, 0, 0, 7,250, 0, 1, 7,250, 0, 2, 7,251, 0, 3, 7, 0, 0, 4, 7,253, 0, 92, 0, - 0, 0, 5, 7, 0, 0, 6, 7, 0, 0,231, 6, 0, 0, 7, 7, 0, 0, 8, 7, 0, 0, 9, 7, 0, 0, 10, 7, 0, 0, 11, 7, - 0, 0, 12, 7, 0, 0, 13, 7, 0, 0, 14, 7, 0, 0, 15, 7, 0, 0, 16, 7, 0, 0, 17, 7, 0, 0, 18, 7, 0, 0, 19, 7, - 0, 0, 20, 7, 0, 0, 21, 7, 0, 0, 22, 7, 0, 0, 23, 7, 0, 0, 24, 7, 0, 0, 25, 7, 0, 0, 26, 7, 0, 0, 27, 7, - 0, 0, 28, 7, 0, 0, 29, 7, 0, 0, 30, 7, 0, 0, 31, 7, 0, 0, 32, 7, 0, 0, 33, 7, 0, 0, 34, 7, 0, 0, 35, 7, - 0, 0, 36, 7, 0, 0, 37, 7, 0, 0, 38, 7, 0, 0, 39, 7, 0, 0, 40, 7, 0, 0, 41, 7, 0, 0, 42, 7, 0, 0, 43, 7, - 0, 0, 44, 7, 0, 0, 45, 7, 0, 0, 46, 7, 0, 0, 47, 7, 0, 0, 48, 7, 0, 0, 49, 7, 0, 0, 50, 7, 0, 0, 51, 7, - 0, 0, 52, 7, 0, 0, 53, 7, 0, 0, 54, 7, 0, 0, 55, 7, 0, 0, 56, 7, 0, 0, 57, 7, 0, 0, 58, 7, 0, 0, 59, 7, - 0, 0, 60, 7, 0, 0, 61, 7, 0, 0, 62, 7, 0, 0, 63, 7, 0, 0, 64, 7, 0, 0, 65, 7, 0, 0, 66, 7, 0, 0, 67, 7, - 0, 0, 68, 7, 0, 0, 69, 7, 0, 0, 70, 7, 0, 0, 71, 7, 0, 0, 72, 7, 0, 0, 73, 7, 0, 0, 74, 7, 0, 0, 75, 7, - 0, 0, 76, 7, 0, 0, 77, 7, 0, 0, 78, 7, 0, 0, 79, 7, 0, 0, 80, 7, 0, 0, 81, 7, 0, 0, 82, 7, 0, 0, 83, 7, - 0, 0, 84, 7, 0, 0, 85, 7, 0, 0, 86, 7, 0, 0, 87, 7, 0, 0, 88, 7, 0, 0, 89, 7, 0, 0, 90, 7, 0, 0, 91, 7, - 0, 0, 92, 7, 0, 0, 93, 7, 0, 0, 94, 7, 0, 0, 95, 7,254, 0, 5, 0, 0, 0, 96, 7, 0, 0, 29, 7, 0, 0, 31, 7, - 2, 0, 19, 0, 2, 0, 37, 0,255, 0, 25, 0,255, 0, 0, 0,255, 0, 1, 0, 0, 0, 20, 0,252, 0, 97, 7,253, 0, 98, 7, -253, 0, 99, 7,253, 0,100, 7,253, 0,101, 7,253, 0,102, 7,253, 0,103, 7,253, 0,104, 7,253, 0,105, 7,253, 0,106, 7, -253, 0,107, 7,253, 0,108, 7,253, 0,109, 7,253, 0,110, 7,253, 0,111, 7,253, 0,112, 7,253, 0,113, 7,253, 0,114, 7, -253, 0,115, 7,254, 0,116, 7, 4, 0,117, 7, 4, 0, 37, 0, 0, 1, 3, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0,118, 7, - 1, 1, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,128, 2, 7, 0,119, 7, 7, 0, 32, 2, 2, 1, 88, 0, 4, 0, 19, 0, - 4, 0,120, 7, 4, 0,121, 7, 0, 0,122, 7, 0, 0,123, 7, 0, 0,124, 7, 0, 0,125, 7, 0, 0,126, 7, 0, 0,127, 7, - 0, 0,128, 7, 0, 0,129, 7, 0, 0,130, 7, 0, 0,131, 7, 4, 0,132, 7, 2, 0,133, 7, 2, 0,134, 7, 2, 0,135, 7, - 2, 0,136, 7, 4, 0,137, 7, 4, 0,138, 7, 4, 0,139, 7, 4, 0,140, 7, 2, 0,141, 7, 2, 0,142, 7, 4, 0,143, 7, - 4, 0,144, 7, 4, 0,145, 7, 4, 0,146, 7, 4, 0,147, 7, 4, 0,192, 6, 4, 0,148, 7, 2, 0,149, 7, 2, 0,150, 7, - 2, 0,151, 7, 2, 0,152, 7, 12, 0,153, 7, 12, 0,154, 7, 12, 0,155, 7, 12, 0,156, 7, 12, 0,157, 7, 0, 0,158, 7, - 2, 0,159, 7, 2, 0,160, 7, 2, 0,161, 7, 2, 0,162, 7, 2, 0,163, 7, 2, 0,164, 7, 2, 0,165, 7, 2, 0,166, 7, - 1, 1,167, 7, 2, 0,168, 7, 2, 0,169, 7, 2, 0,170, 7, 2, 0,171, 7, 2, 0,172, 7, 2, 0,173, 7, 2, 0,174, 7, - 2, 0,175, 7, 4, 0,176, 7, 4, 0,177, 7, 2, 0,178, 7, 2, 0,179, 7, 2, 0,180, 7, 2, 0,181, 7, 2, 0,182, 7, - 2, 0,183, 7, 2, 0,184, 7, 2, 0,185, 7, 2, 0,186, 7, 2, 0,187, 7, 2, 0,188, 7, 2, 0,189, 7, 2, 0,190, 7, - 2, 0,191, 7, 2, 0,192, 7, 2, 0,193, 7, 2, 0,194, 7, 2, 0,176, 4, 0, 0,195, 7, 0, 0,196, 7, 7, 0,197, 7, - 2, 0,158, 5, 2, 0,159, 5, 55, 0,198, 7, 4, 0,199, 7, 7, 0,200, 7, 7, 0,201, 7, 7, 0,202, 7,219, 0, 21, 0, - 27, 0, 31, 0, 12, 0,203, 7, 12, 0,204, 7, 12, 0,205, 7, 12, 0, 16, 6, 46, 0,129, 0, 46, 0,206, 7, 2, 0,207, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0,160,218, 64, 2, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 16,219, 64, 2, 86, 1, 0, 0, 1, 0, 0, 0,216,223, 64, 2, 72,214, 64, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,108, 97,116,116,101,110, 47, 67,111,110,116,114, 97,115,116, 0, 48, 48, 49, 0, 0, + 2, 0, 0, 3, 38, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, + 24,222, 64, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,160,214,248, 5, 6, 0, 0, 0, 0, 0, 0, 0,200,212, 41, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, + 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, + 8, 1, 0, 0, 92,219, 64, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, + 24,222, 64, 2, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, + 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,104,223, 64, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,104,223, 64, 2, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, +215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 0, 0,196, 2, 0, 0,216,223, 64, 2, 86, 1, 0, 0, 1, 0, 0, 0,160,228, 64, 2, 16,219, 64, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 71,114, 97, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, + 39, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,224,226, 64, 2, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,176, 32,223, 5, 7, 0, 0, 0, 0, 0, 0, 0,216,215,224, 5, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, + 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, + 36,224, 64, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,224,226, 64, 2, + 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 48,228, 64, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, + 48,228, 64, 2, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, + 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, +196, 2, 0, 0,160,228, 64, 2, 86, 1, 0, 0, 1, 0, 0, 0,104,233, 64, 2,216,223, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 73,110,102,108, 97,116,101, 47, 68,101,102,108, 97,116,101, 0, 48, 48, 49, 0, 0, 0, 2, 0, 0, 3, 40, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,231, 64, 2, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 16,105,239, 5, 8, 0, 0, 0, 0, 0, 0, 0,120, 39,222, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, + 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, 68, 65, 84, 65, 8, 1, 0, 0,236,228, 64, 2, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,168,231, 64, 2, 82, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,248,232, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,248,232, 64, 2, + 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, +104,233, 64, 2, 86, 1, 0, 0, 1, 0, 0, 0, 48,238, 64, 2,160,228, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76, 97, +121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 41, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,112,236, 64, 2, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 8,180,239, 5, 9, 0, 0, 0, 0, 0, 0, 0,144, 68,224, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, + 20,174,199, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,180,233, 64, 2, 32, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,112,236, 64, 2, 82, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, +224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,192,237, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,192,237, 64, 2, 80, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63, +143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 48,238, 64, 2, + 86, 1, 0, 0, 1, 0, 0, 0,248,242, 64, 2,104,233, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105,103,104,116,101, +110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 56,241, 64, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,176,136,236, 5, + 21, 0, 0, 0, 0, 0, 0, 0,144,191,239, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,124,238, 64, 2, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 56,241, 64, 2, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, + 54,189,194, 61, 14,215,126,191, 46,189,194, 61,136,242, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136,242, 64, 2, 80, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,248,242, 64, 2, 86, 1, 0, 0, + 1, 0, 0, 0,192,247, 64, 2, 48,238, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 22, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0,246, 64, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,112,107,225, 5, 22, 0, 0, 0, + 0, 0, 0, 0, 40,233, 41, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 68,243, 64, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 0,246, 64, 2, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, + 14,215,126,191, 46,189,194, 61, 80,247, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 80,247, 64, 2, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,192,247, 64, 2, 86, 1, 0, 0, 1, 0, 0, 0, +136,252, 64, 2,248,242, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117,108,116,105,112,108,121, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 27, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0,200,250, 64, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,200,145,223, 5, 23, 0, 0, 0, 0, 0, 0, 0, + 80, 96,235, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 12,248, 64, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0,200,250, 64, 2, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, + 46,189,194, 61, 24,252, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 24,252, 64, 2, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,136,252, 64, 2, 86, 1, 0, 0, 1, 0, 0, 0, 80, 1, 65, 2, +192,247, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 78,117,100,103,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 3, 42, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,144,255, 64, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,128, 95,225, 5, 10, 0, 0, 0, 0, 0, 0, 0,200,200, 41, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 8, 1, 0, 0,212,252, 64, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, + 16, 1, 0, 0,144,255, 64, 2, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, +224, 0, 65, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0,224, 0, 65, 2, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 80, 1, 65, 2, 86, 1, 0, 0, 1, 0, 0, 0, 24, 6, 65, 2,136,252, 64, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,105,110, 99,104, 47, 77, 97,103,110,105,102,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, + 2, 0, 0, 3, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, + 88, 4, 65, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,128, 24, 5, 6, 11, 0, 0, 0, 0, 0, 0, 0, 32, 72,223, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, + 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, 68, 65, 84, 65, + 8, 1, 0, 0,156, 1, 65, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, + 88, 4, 65, 2, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, + 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,168, 5, 65, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,168, 5, 65, 2, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, +215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 0, 0,196, 2, 0, 0, 24, 6, 65, 2, 86, 1, 0, 0, 1, 0, 0, 0,224, 10, 65, 2, 80, 1, 65, 2, 9,186,107, 0, + 0, 0, 0, 0, 66, 82, 80,111,108,105,115,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, + 44, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 32, 9, 65, 2, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 80,176,225, 5, 6, 0, 0, 0, 0, 0, 0, 0,112,223, 41, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 1, 0, 0, 0, 0, 10, 0, 0, 0, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, + 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, +100, 6, 65, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 32, 9, 65, 2, + 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,112, 10, 65, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, +112, 10, 65, 2, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, + 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, +196, 2, 0, 0,224, 10, 65, 2, 86, 1, 0, 0, 1, 0, 0, 0,168, 15, 65, 2, 24, 6, 65, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 83, 99,114, 97,112,101, 47, 80,101, 97,107,115, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 45, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,232, 13, 65, 2, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,160, 81,244, 5, 12, 0, 0, 0, 0, 0, 0, 0,240,118,239, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 44, 11, 65, 2, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,232, 13, 65, 2, 82, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 56, 15, 65, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56, 15, 65, 2, + 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, +168, 15, 65, 2, 86, 1, 0, 0, 1, 0, 0, 0,112, 20, 65, 2,224, 10, 65, 2,164, 25,110, 0, 0, 0, 0, 0, 66, 82, 83, 99, +117,108,112,116, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 33, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,176, 18, 65, 2, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 64,155,249, 5, 4, 0, 0, 0, 0, 0, 0, 0,104,132,239, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0,160,119, 78, 63, 0, 0,128, 63, 20,174,199, 62, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,244, 15, 65, 2, 32, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,176, 18, 65, 2, 82, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, +224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 0, 20, 65, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 0, 20, 65, 2, 80, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63, +143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,112, 20, 65, 2, + 86, 1, 0, 0, 1, 0, 0, 0, 56, 25, 65, 2,168, 15, 65, 2, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,101, 97,114, 0, + 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 31, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,120, 23, 65, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,192,101,244, 5, + 24, 0, 0, 0, 0, 0, 0, 0, 0,200,223, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,188, 20, 65, 2, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,120, 23, 65, 2, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, + 54,189,194, 61, 14,215,126,191, 46,189,194, 61,200, 24, 65, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200, 24, 65, 2, 80, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 56, 25, 65, 2, 86, 1, 0, 0, + 1, 0, 0, 0, 0, 30, 65, 2,112, 20, 65, 2, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, 0, 48, 48, 49, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 46, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 64, 28, 65, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 32,121,225, 5, 13, 0, 0, 0, + 0, 0, 0, 0,192,119,239, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,132, 25, 65, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 64, 28, 65, 2, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186, +224,255,127,191,114, 97,255,186,144, 29, 65, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,144, 29, 65, 2, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, 0, 30, 65, 2, 86, 1, 0, 0, 1, 0, 0, 0, +200, 34, 65, 2, 56, 25, 65, 2, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,110, 97,107,101, 32, 72,111,111,107, 0, 48, 48, 49, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 47, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0, 8, 33, 65, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 88,162,246, 5, 14, 0, 0, 0, 0, 0, 0, 0, +184,122,239, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 76, 30, 65, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 16, 1, 0, 0, 8, 33, 65, 2, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191, +114, 97,255,186, 88, 34, 65, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 88, 34, 65, 2, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,200, 34, 65, 2, 86, 1, 0, 0, 1, 0, 0, 0,144, 39, 65, 2, + 0, 30, 65, 2, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 2, 32, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0,208, 37, 65, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,112,169,224, 5, 25, 0, 0, 0, 0, 0, 0, 0, 24,207,225, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 8, 1, 0, 0, 20, 35, 65, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, + 16, 1, 0, 0,208, 37, 65, 2, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, + 32, 39, 65, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 32, 39, 65, 2, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0,144, 39, 65, 2, 86, 1, 0, 0, 1, 0, 0, 0, 88, 44, 65, 2,200, 34, 65, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,117, 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 2, 28, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +152, 42, 65, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 64, 80,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 32,162,224, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, + 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 8, 1, 0, 0,220, 39, 65, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, +152, 42, 65, 2, 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, + 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,232, 43, 65, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,232, 43, 65, 2, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 0, 0,196, 2, 0, 0, 88, 44, 65, 2, 86, 1, 0, 0, 1, 0, 0, 0, 32, 49, 65, 2,144, 39, 65, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 84,101,120, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, + 29, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 96, 47, 65, 2, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 64,190,224, 5, 27, 0, 0, 0, 0, 0, 0, 0,240, 29,222, 5, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 51, 51, 51, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, +164, 44, 65, 2, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 96, 47, 65, 2, + 82, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,176, 48, 65, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, +176, 48, 65, 2, 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, + 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, +196, 2, 0, 0, 32, 49, 65, 2, 86, 1, 0, 0, 1, 0, 0, 0,232, 53, 65, 2, 88, 44, 65, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 84,104,117,109, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 48, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 40, 52, 65, 2, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 88, 37,239, 5, 15, 0, 0, 0, 0, 0, 0, 0, 24,123,239, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0, +102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, + 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,108, 49, 65, 2, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0, 40, 52, 65, 2, 82, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,120, 53, 65, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,120, 53, 65, 2, + 80, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, + 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,196, 2, 0, 0, +232, 53, 65, 2, 86, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32, 49, 65, 2, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,119, +105,115,116, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 49, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,240, 56, 65, 2, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +112, 96,246, 5, 16, 0, 0, 0, 0, 0, 0, 0,240, 12,253, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, + 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 52, 54, 65, 2, 32, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 16, 1, 0, 0,240, 56, 65, 2, 82, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, +224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 64, 58, 65, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 64, 58, 65, 2, 80, 1, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63, +143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 85, 83, 69, 82,240, 12, 0, 0,160,190, 42, 1, +194, 0, 0, 0, 1, 0, 0, 0, 33, 8, 17, 1, 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85,115,101,114,115, 47,116,111,110, + 47, 68,101,115,107,116,111,112, 47, 0, 45,112,111,119,101,114,112, 99, 47, 98,105,110, 47, 98,108,101,110,100,101,114, 46, 97, +112,112, 47, 67,111,110,116,101,110,116,115, 47, 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 2, 0, 94, 1, + 8, 0, 0, 0, 3, 0, 0, 0, 56, 52, 39, 1, 0, 0, 0, 0, 2, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0, 68,172, 0, 0, + 36, 0, 0, 0, 2, 0, 0, 0,128, 0, 0, 0, 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0,224, 71, 65, 2,224, 71, 65, 2, + 64, 36, 54, 2, 64, 36, 54, 2,224,221, 52, 2,224,221, 52, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 2, 0, 25, 0, 1, 0, 20, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63, +205,204, 76, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 30, 90,100,191,154,153,153, 62, +102,102,102, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31,250,254, 62, 9, 0, 0, 63,156,153, 25, 63, 0, 0, 0, 0, +205,204, 76, 62,205,204, 76, 62,205,204, 76, 62, 0, 0,128, 63, 44,135, 22, 63, 32,133,235, 62,184,243,125, 62, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,195, 73, 76, 63, 42,135, 86, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 43,135, 61, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 16, 47, 93, 62, 58,180,200,190, 24, 47, 93,190, 0, 0, 0, 0, 14, 0, 0, 0, 25, 0, 15, 0, +120, 0, 60, 0, 3, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0,144, 31, 15, 0, 6, 0, 25, 0, 8, 0, 10, 0,200, 0, 0, 0, +100, 0,100, 0, 0, 0, 0, 0, 2, 0, 1, 0, 10, 0, 50, 0,200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 8, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 29, 0, 0, +224, 71, 65, 2,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, + 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, + 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255,153,153,153,255, + 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 86,128,194,255, +255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255, +255,255,255,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, + 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255, + 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255, +128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255, +255,255,255,255,255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 63, 63, 63,255, 86,128,194,255, +255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 25, 25, 25,230, 45, 45, 45,230, +100,100,100,255,160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255, +255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, 25, 25, 25,255,128,128,128,255,100,100,100,255, + 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50,180, 80, 80, 80,180,100,100,100,180, +128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255,190,190,190,255,100,100,100,180, + 68, 68, 68,255, 0, 0, 0,255,255,255,255,255, 0, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,115,190, 76,255, 90,166, 51,255,240,235,100,255, +215,211, 75,255,180, 0,255,255,153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, + 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, + 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, + 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, + 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, + 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, + 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, + 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100, +127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, + 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, + 75, 75, 75,255,204, 0,153,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, + 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255, +240,144,160,255,255,255,255,255, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 76, 76,255, 0, 0, 0, 0,250,250,250,255, + 15, 15, 15,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,160,160,160,100,127,112,112,100,255,140, 25,255,250,250,250,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, +130,130,130,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255, +219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, + 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, +219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, + 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,250,250,250,255,250,250,250,255,250,250,250,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, + 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, + 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, + 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255, +241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, + 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60, +255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, +144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, + 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255,124,137,150,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, + 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, + 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, + 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, + 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, + 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, + 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, + 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,173,173,173,255, +127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, + 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, + 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, + 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, +255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255, +219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, + 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, +219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, + 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, + 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, + 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, + 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255, +241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, + 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60, +255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255, +144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, + 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255,124,137,150,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, + 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, + 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, + 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, + 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, + 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,109, 88,129,255, 78,152, 62,255, + 46,143,143,255,169, 84,124,255,126,126, 80,255,162, 95,111,255,109,145,131,255,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, + 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, + 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100, +127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, + 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, + 75, 75, 75,255, 0, 0, 0, 0,255,255,255, 10,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, + 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255,110,110,110,255, 0, 0, 0, 0, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,132,132,132,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255, 94, 94, 94,255,172,172,172,255, 17, 27, 60,100, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, +195,195,195,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255, +219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, + 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, +219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, + 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,153,153,255, + 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, + 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, + 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255, 64, 64, 64,255, 0, 0, 0,255, +241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, + 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60, +255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, +144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, + 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,100, 0, 0,255, 0, 0,200,255, +128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, + 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, + 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, + 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, + 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, + 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, + 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, + 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,173,173,173,255, +127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, + 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, + 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, + 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, +255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,255,255,255, +219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, + 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, +219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, + 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,155,155,155,160,100,100,100,255,108,105,111,255,104,106,117,255, +105,117,110,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100,100,100,255, + 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, + 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, + 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255, +241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, + 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60, +255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, +144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, + 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, + 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, + 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, + 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, + 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, + 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, + 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, + 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100, +127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, + 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, + 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, + 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,128,255,255,255,255,255,255, 0,170, 0,255,220, 96, 96,255, +220, 96, 96,255, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255,247, 10, 10,255, + 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255,131,239, 29,255, + 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255,240, 93,145,255, + 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255,111,182,171,255, + 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0,244,201, 12,255,238,194, 54,255,243,255, 0,255, + 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0,111, 47,106,255,152, 69,190,255,211, 48,214,255, + 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0,141,141,141,255,176,176,176,255,222,222,222,255, + 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 78, 65, 49, +124,226, 0, 0,136, 40, 5, 6, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69,200, 11, 0, 0, 42,110,101,120, +116, 0, 42,112,114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, 0, 42,108, 97,115,116, 0,120, 0,121, 0,122, + 0,119, 0,120,109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, 97,120, 0, 42,112,111,105,110,116,101,114, 0, +103,114,111,117,112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0,115,117, 98,116,121,112,101, 0,102,108, 97,103, + 0,110, 97,109,101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0,100, 97,116, 97, 0,108,101,110, 0,116,111,116, 97,108,108,101, +110, 0, 42,110,101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 50, 52, 93, 0,117,115, 0,105, 99,111,110, 95,105, +100, 0, 42,112,114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, 98,108,111, 99,107, 0, 42,102,105,108,101,100, + 97,116, 97, 0,110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,108,101,112, 97,116,104, 91, 50, 52, 48, 93, 0,116,111,116, 0, +112, 97,100, 0, 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 91, 50, 93, + 0, 99,104, 97,110,103,101,100, 95,116,105,109,101,115,116, 97,109,112, 91, 50, 93, 0, 42,114,101, 99,116, 91, 50, 93, 0, 42, +111, 98, 0, 98,108,111, 99,107,116,121,112,101, 0, 97,100,114, 99,111,100,101, 0,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, + 98,112, 0, 42, 98,101,122,116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, 99,116, 0,118, 97,114,116,121,112,101, 0,116, +111,116,118,101,114,116, 0,105,112,111, 0,101,120,116,114, 97,112, 0,114,116, 0, 98,105,116,109, 97,115,107, 0,115,108,105, +100,101, 95,109,105,110, 0,115,108,105,100,101, 95,109, 97,120, 0, 99,117,114,118, 97,108, 0, 42,100,114,105,118,101,114, 0, + 99,117,114,118,101, 0, 99,117,114, 0,115,104,111,119,107,101,121, 0,109,117,116,101,105,112,111, 0,112,111,115, 0,114,101, +108, 97,116,105,118,101, 0,116,111,116,101,108,101,109, 0,112, 97,100, 50, 0, 42,119,101,105,103,104,116,115, 0,118,103,114, +111,117,112, 91, 51, 50, 93, 0,115,108,105,100,101,114,109,105,110, 0,115,108,105,100,101,114,109, 97,120, 0, 42, 97,100,116, + 0, 42,114,101,102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, 0,101,108,101,109,115,105,122,101, 0, 98,108, +111, 99,107, 0, 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101,121, 0,115,108,117,114,112,104, 0, 42,108,105, +110,101, 0, 42,102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101,110,111, 0,115,116, 97,114,116, 0,101,110,100, + 0,112, 97,100, 49, 0,102,108, 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, 0,112, 97,100, 91, 52, 93, 0, 42,110, 97,109, +101, 0,110,108,105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108, 0, 42,115,101,108,108, 0, 99,117,114, 99, 0, +115,101,108, 99, 0,109, 97,114,107,101,114,115, 0, 42,117,110,100,111, 95, 98,117,102, 0,117,110,100,111, 95,112,111,115, 0, +117,110,100,111, 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,109,116,105,109,101, 0,115,105,122,101, 0,115,101, +101,107, 0,112, 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0, 99,108,105,112,115,116, 97, 0, 99,108,105,112,101,110, +100, 0,108,101,110,115, 0,111,114,116,104,111, 95,115, 99, 97,108,101, 0,100,114, 97,119,115,105,122,101, 0,115,104,105,102, +116,120, 0,115,104,105,102,116,121, 0, 89, 70, 95,100,111,102,100,105,115,116, 0, 42,100,111,102, 95,111, 98, 0,102,114, 97, +109,101,110,114, 0,102,114, 97,109,101,115, 0,111,102,102,115,101,116, 0,115,102,114, 97, 0,102,105,101, 95,105,109, 97, 0, + 99,121, 99,108, 0,111,107, 0,109,117,108,116,105, 95,105,110,100,101,120, 0,108, 97,121,101,114, 0,112, 97,115,115, 0,109, +101,110,117,110,114, 0, 42,115, 99,101,110,101, 0,105, 98,117,102,115, 0, 42,103,112,117,116,101,120,116,117,114,101, 0, 42, + 97,110,105,109, 0, 42,114,114, 0, 42,114,101,110,100,101,114,115, 91, 56, 93, 0,114,101,110,100,101,114, 95,115,108,111,116, + 0,108, 97,115,116, 95,114,101,110,100,101,114, 95,115,108,111,116, 0,115,111,117,114, 99,101, 0,108, 97,115,116,102,114, 97, +109,101, 0,116,112, 97,103,101,102,108, 97,103, 0,116,111,116, 98,105,110,100, 0,120,114,101,112, 0,121,114,101,112, 0,116, +119,115,116, 97, 0,116,119,101,110,100, 0, 98,105,110,100, 99,111,100,101, 0, 42,114,101,112, 98,105,110,100, 0, 42,112, 97, + 99,107,101,100,102,105,108,101, 0, 42,112,114,101,118,105,101,119, 0,108, 97,115,116,117,112,100, 97,116,101, 0,108, 97,115, +116,117,115,101,100, 0, 97,110,105,109,115,112,101,101,100, 0,103,101,110, 95,120, 0,103,101,110, 95,121, 0,103,101,110, 95, +116,121,112,101, 0, 97,115,112,120, 0, 97,115,112,121, 0,116,101,120, 99,111, 0,109, 97,112,116,111, 0,109, 97,112,116,111, +110,101,103, 0, 98,108,101,110,100,116,121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116,101,120, 0,117,118,110, 97,109, +101, 91, 51, 50, 93, 0,112,114,111,106,120, 0,112,114,111,106,121, 0,112,114,111,106,122, 0,109, 97,112,112,105,110,103, 0, +111,102,115, 91, 51, 93, 0,115,105,122,101, 91, 51, 93, 0,114,111,116, 0,116,101,120,102,108, 97,103, 0, 99,111,108,111,114, +109,111,100,101,108, 0,112,109, 97,112,116,111, 0,112,109, 97,112,116,111,110,101,103, 0,110,111,114,109, 97,112,115,112, 97, + 99,101, 0,119,104,105, 99,104, 95,111,117,116,112,117,116, 0, 98,114,117,115,104, 95,109, 97,112, 95,109,111,100,101, 0,112, + 97,100, 91, 55, 93, 0,114, 0,103, 0, 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111,108,102, 97, 99, 0,118, 97,114, +102, 97, 99, 0,110,111,114,102, 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, 0, 99,111,108,115,112, +101, 99,102, 97, 99, 0,109,105,114,114,102, 97, 99, 0, 97,108,112,104, 97,102, 97, 99, 0,100,105,102,102,102, 97, 99, 0,115, +112,101, 99,102, 97, 99, 0,101,109,105,116,102, 97, 99, 0,104, 97,114,100,102, 97, 99, 0,114, 97,121,109,105,114,114,102, 97, + 99, 0,116,114, 97,110,115,108,102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99,111,108,101,109,105,116,102, 97, 99, 0, 99,111, +108,114,101,102,108,102, 97, 99, 0, 99,111,108,116,114, 97,110,115,102, 97, 99, 0,100,101,110,115,102, 97, 99, 0,115, 99, 97, +116,116,101,114,102, 97, 99, 0,114,101,102,108,102, 97, 99, 0,116,105,109,101,102, 97, 99, 0,108,101,110,103,116,104,102, 97, + 99, 0, 99,108,117,109,112,102, 97, 99, 0,107,105,110,107,102, 97, 99, 0,114,111,117,103,104,102, 97, 99, 0,112, 97,100,101, +110,115,102, 97, 99, 0,108,105,102,101,102, 97, 99, 0,115,105,122,101,102, 97, 99, 0,105,118,101,108,102, 97, 99, 0,112,118, +101,108,102, 97, 99, 0,115,104, 97,100,111,119,102, 97, 99, 0,122,101,110,117,112,102, 97, 99, 0,122,101,110,100,111,119,110, +102, 97, 99, 0, 98,108,101,110,100,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0, 42,104, 97,110,100,108,101, 0, 42, +112,110, 97,109,101, 0, 42,115,116,110, 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97,114,115, 0, 42,118, 97,114,115, +116,114, 0, 42,114,101,115,117,108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, 93, 0, 40, 42,100,111,105,116, + 41, 40, 41, 0, 40, 42,105,110,115,116, 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, 42, 99, 97,108,108, 98, 97, 99, +107, 41, 40, 41, 0,118,101,114,115,105,111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42,105,109, 97, 0, 42, 99,117, 98, +101, 91, 54, 93, 0,105,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, 93, 91, 51, 93, 0,115,116,121, +112,101, 0,118,105,101,119,115, 99, 97,108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101,114,101,115, 0,100,101,112,116, +104, 0,114,101, 99, 97,108, 99, 0,108, 97,115,116,115,105,122,101, 0,102, 97,108,108,111,102,102, 95,116,121,112,101, 0,102, + 97,108,108,111,102,102, 95,115,111,102,116,110,101,115,115, 0,114, 97,100,105,117,115, 0, 99,111,108,111,114, 95,115,111,117, +114, 99,101, 0,116,111,116,112,111,105,110,116,115, 0,112,100,112, 97,100, 0,112,115,121,115, 0,112,115,121,115, 95, 99, 97, + 99,104,101, 95,115,112, 97, 99,101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0, 42,112,111,105,110,116, 95, +116,114,101,101, 0, 42,112,111,105,110,116, 95,100, 97,116, 97, 0,110,111,105,115,101, 95,115,105,122,101, 0,110,111,105,115, +101, 95,100,101,112,116,104, 0,110,111,105,115,101, 95,105,110,102,108,117,101,110, 99,101, 0,110,111,105,115,101, 95, 98, 97, +115,105,115, 0,112,100,112, 97,100, 51, 91, 51, 93, 0,110,111,105,115,101, 95,102, 97, 99, 0,115,112,101,101,100, 95,115, 99, + 97,108,101, 0, 42, 99,111, 98, 97, 0,114,101,115,111,108, 91, 51, 93, 0,105,110,116,101,114,112, 95,116,121,112,101, 0,102, +105,108,101, 95,102,111,114,109, 97,116, 0,101,120,116,101,110,100, 0,115,109,111,107,101,100, 95,116,121,112,101, 0,105,110, +116, 95,109,117,108,116,105,112,108,105,101,114, 0,115,116,105,108,108, 95,102,114, 97,109,101, 0,115,111,117,114, 99,101, 95, +112, 97,116,104, 91, 50, 52, 48, 93, 0, 42,100, 97,116, 97,115,101,116, 0, 99, 97, 99,104,101,100,102,114, 97,109,101, 0,110, +111,105,115,101,115,105,122,101, 0,116,117,114, 98,117,108, 0, 98,114,105,103,104,116, 0, 99,111,110,116,114, 97,115,116, 0, +115, 97,116,117,114, 97,116,105,111,110, 0,114,102, 97, 99, 0,103,102, 97, 99, 0, 98,102, 97, 99, 0,102,105,108,116,101,114, +115,105,122,101, 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, 97,114,105,116,121, 0,109,103, 95,111, 99,116, 97,118, +101,115, 0,109,103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97,105,110, 0,100,105,115,116, 95, 97,109,111,117,110,116, + 0,110,115, 95,111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, 0,118,110, 95,119, 50, 0,118,110, 95,119, 51, 0,118, +110, 95,119, 52, 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105,115,116,109, 0,118,110, 95, 99,111,108,116,121,112,101, + 0,110,111,105,115,101,100,101,112,116,104, 0,110,111,105,115,101,116,121,112,101, 0,110,111,105,115,101, 98, 97,115,105,115, + 0,110,111,105,115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, 97,103, 0, 99,114,111,112,120,109,105,110, 0, 99,114, +111,112,121,109,105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114,111,112,121,109, 97,120, 0,116,101,120,102,105,108,116, +101,114, 0, 97,102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101,112,101, 97,116, 0, 99,104,101, 99,107,101,114, +100,105,115,116, 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42,110,111,100,101,116,114,101,101, 0, 42,112,108,117,103, +105,110, 0, 42,101,110,118, 0, 42,112,100, 0, 42,118,100, 0,117,115,101, 95,110,111,100,101,115, 0,108,111, 99, 91, 51, 93, + 0,114,111,116, 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105,110, 91, 51, 93, 0,109, 97,120, 91, 51, 93, 0, +109,111,100,101, 0,116,111,116,101,120, 0,115,104,100,119,114, 0,115,104,100,119,103, 0,115,104,100,119, 98, 0,115,104,100, +119,112, 97,100, 0,101,110,101,114,103,121, 0,100,105,115,116, 0,115,112,111,116,115,105,122,101, 0,115,112,111,116, 98,108, +101,110,100, 0,104, 97,105,110,116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, 42, 99,117,114,102, 97,108,108,111,102,102, 0, +115,104, 97,100,115,112,111,116,115,105,122,101, 0, 98,105, 97,115, 0,115,111,102,116, 0, 99,111,109,112,114,101,115,115,116, +104,114,101,115,104, 0,112, 97,100, 53, 91, 51, 93, 0, 98,117,102,115,105,122,101, 0,115, 97,109,112, 0, 98,117,102,102,101, +114,115, 0,102,105,108,116,101,114,116,121,112,101, 0, 98,117,102,102,108, 97,103, 0, 98,117,102,116,121,112,101, 0,114, 97, +121, 95,115, 97,109,112, 0,114, 97,121, 95,115, 97,109,112,121, 0,114, 97,121, 95,115, 97,109,112,122, 0,114, 97,121, 95,115, + 97,109,112, 95,116,121,112,101, 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, 97,114,101, 97, 95,115,105,122,101, 0, 97,114, +101, 97, 95,115,105,122,101,121, 0, 97,114,101, 97, 95,115,105,122,101,122, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, + 0,114, 97,121, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0,116,101,120, 97, 99,116, 0,115,104, 97,100,104, 97,108,111, +115,116,101,112, 0,115,117,110, 95,101,102,102,101, 99,116, 95,116,121,112,101, 0,115,107,121, 98,108,101,110,100,116,121,112, +101, 0,104,111,114,105,122,111,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,112,114,101, 97,100, 0,115,117,110, 95, + 98,114,105,103,104,116,110,101,115,115, 0,115,117,110, 95,115,105,122,101, 0, 98, 97, 99,107,115, 99, 97,116,116,101,114,101, +100, 95,108,105,103,104,116, 0,115,117,110, 95,105,110,116,101,110,115,105,116,121, 0, 97,116,109, 95,116,117,114, 98,105,100, +105,116,121, 0, 97,116,109, 95,105,110,115, 99, 97,116,116,101,114,105,110,103, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95, +101,120,116,105,110, 99,116,105,111,110, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,100,105,115,116, 97,110, 99,101, 95,102, + 97, 99,116,111,114, 0,115,107,121, 98,108,101,110,100,102, 97, 99, 0,115,107,121, 95,101,120,112,111,115,117,114,101, 0,115, +107,121, 95, 99,111,108,111,114,115,112, 97, 99,101, 0,112, 97,100, 52, 91, 54, 93, 0, 42,109,116,101,120, 91, 49, 56, 93, 0, +112,114, 95,116,101,120,116,117,114,101, 0,112, 97,100, 54, 91, 54, 93, 0,100,101,110,115,105,116,121, 0,101,109,105,115,115, +105,111,110, 0,115, 99, 97,116,116,101,114,105,110,103, 0,114,101,102,108,101, 99,116,105,111,110, 0,101,109,105,115,115,105, +111,110, 95, 99,111,108, 91, 51, 93, 0,116,114, 97,110,115,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,114,101, +102,108,101, 99,116,105,111,110, 95, 99,111,108, 91, 51, 93, 0,100,101,110,115,105,116,121, 95,115, 99, 97,108,101, 0,100,101, +112,116,104, 95, 99,117,116,111,102,102, 0, 97,115,121,109,109,101,116,114,121, 0,115,116,101,112,115,105,122,101, 95,116,121, +112,101, 0,115,104, 97,100,101,102,108, 97,103, 0,115,104, 97,100,101, 95,116,121,112,101, 0,112,114,101, 99, 97, 99,104,101, + 95,114,101,115,111,108,117,116,105,111,110, 0,115,116,101,112,115,105,122,101, 0,109,115, 95,100,105,102,102, 0,109,115, 95, +105,110,116,101,110,115,105,116,121, 0,109,115, 95,115,112,114,101, 97,100, 0,109, 97,116,101,114,105, 97,108, 95,116,121,112, +101, 0,115,112,101, 99,114, 0,115,112,101, 99,103, 0,115,112,101, 99, 98, 0,109,105,114,114, 0,109,105,114,103, 0,109,105, +114, 98, 0, 97,109, 98,114, 0, 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, 98, 0,101,109,105,116, 0, 97,110,103, 0,115, +112,101, 99,116,114, 97, 0,114, 97,121, 95,109,105,114,114,111,114, 0, 97,108,112,104, 97, 0,114,101,102, 0,115,112,101, 99, + 0,122,111,102,102,115, 0, 97,100,100, 0,116,114, 97,110,115,108,117, 99,101,110, 99,121, 0,118,111,108, 0,102,114,101,115, +110,101,108, 95,109,105,114, 0,102,114,101,115,110,101,108, 95,109,105,114, 95,105, 0,102,114,101,115,110,101,108, 95,116,114, + 97, 0,102,114,101,115,110,101,108, 95,116,114, 97, 95,105, 0,102,105,108,116,101,114, 0,116,120, 95,108,105,109,105,116, 0, +116,120, 95,102, 97,108,108,111,102,102, 0,114, 97,121, 95,100,101,112,116,104, 0,114, 97,121, 95,100,101,112,116,104, 95,116, +114, 97, 0,104, 97,114, 0,115,101,101,100, 49, 0,115,101,101,100, 50, 0,103,108,111,115,115, 95,109,105,114, 0,103,108,111, +115,115, 95,116,114, 97, 0,115, 97,109,112, 95,103,108,111,115,115, 95,109,105,114, 0,115, 97,109,112, 95,103,108,111,115,115, + 95,116,114, 97, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,109,105,114, 0, 97,100, 97,112,116, 95,116,104,114,101, +115,104, 95,116,114, 97, 0, 97,110,105,115,111, 95,103,108,111,115,115, 95,109,105,114, 0,100,105,115,116, 95,109,105,114, 0, +102, 97,100,101,116,111, 95,109,105,114, 0,115,104, 97,100,101, 95,102,108, 97,103, 0,109,111,100,101, 95,108, 0,102,108, 97, +114,101, 99, 0,115,116, 97,114, 99, 0,108,105,110,101, 99, 0,114,105,110,103, 99, 0,104, 97,115,105,122,101, 0,102,108, 97, +114,101,115,105,122,101, 0,115,117, 98,115,105,122,101, 0,102,108, 97,114,101, 98,111,111,115,116, 0,115,116,114, 97,110,100, + 95,115,116, 97, 0,115,116,114, 97,110,100, 95,101,110,100, 0,115,116,114, 97,110,100, 95,101, 97,115,101, 0,115,116,114, 97, +110,100, 95,115,117,114,102,110,111,114, 0,115,116,114, 97,110,100, 95,109,105,110, 0,115,116,114, 97,110,100, 95,119,105,100, +116,104,102, 97,100,101, 0,115,116,114, 97,110,100, 95,117,118,110, 97,109,101, 91, 51, 50, 93, 0,115, 98,105, 97,115, 0,108, + 98,105, 97,115, 0,115,104, 97,100, 95, 97,108,112,104, 97, 0,115,101,112,116,101,120, 0,114,103, 98,115,101,108, 0,112,114, + 95,116,121,112,101, 0,112,114, 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109,112, 0,109,108, 95,102,108, 97,103, 0,100,105, +102,102, 95,115,104, 97,100,101,114, 0,115,112,101, 99, 95,115,104, 97,100,101,114, 0,114,111,117,103,104,110,101,115,115, 0, +114,101,102,114, 97, 99, 0,112, 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0,100, 97,114,107,110,101,115,115, 0, 42,114, 97, +109,112, 95, 99,111,108, 0, 42,114, 97,109,112, 95,115,112,101, 99, 0,114, 97,109,112,105,110, 95, 99,111,108, 0,114, 97,109, +112,105,110, 95,115,112,101, 99, 0,114, 97,109,112, 98,108,101,110,100, 95, 99,111,108, 0,114, 97,109,112, 98,108,101,110,100, + 95,115,112,101, 99, 0,114, 97,109,112, 95,115,104,111,119, 0,112, 97,100, 51, 0,114, 97,109,112,102, 97, 99, 95, 99,111,108, + 0,114, 97,109,112,102, 97, 99, 95,115,112,101, 99, 0, 42,103,114,111,117,112, 0,102,114,105, 99,116,105,111,110, 0,102,104, + 0,114,101,102,108,101, 99,116, 0,102,104,100,105,115,116, 0,120,121,102,114,105, 99,116, 0,100,121,110, 97,109,111,100,101, + 0,115,115,115, 95,114, 97,100,105,117,115, 91, 51, 93, 0,115,115,115, 95, 99,111,108, 91, 51, 93, 0,115,115,115, 95,101,114, +114,111,114, 0,115,115,115, 95,115, 99, 97,108,101, 0,115,115,115, 95,105,111,114, 0,115,115,115, 95, 99,111,108,102, 97, 99, + 0,115,115,115, 95,116,101,120,102, 97, 99, 0,115,115,115, 95,102,114,111,110,116, 0,115,115,115, 95, 98, 97, 99,107, 0,115, +115,115, 95,102,108, 97,103, 0,115,115,115, 95,112,114,101,115,101,116, 0,109, 97,112,116,111, 95,116,101,120,116,117,114,101, +100, 0,112, 97,100, 52, 0,103,112,117,109, 97,116,101,114,105, 97,108, 0,110, 97,109,101, 91, 50, 53, 54, 93, 0, 42, 98, 98, + 0,105, 49, 0,106, 49, 0,107, 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115,101,108, 99,111,108, 49, 0,115,101,108, 99,111, +108, 50, 0,113,117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,101,120,112,121, 0,101,120,112,122, 0,114, 97,100, 0,114, 97, +100, 50, 0,115, 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,101,108,101,109,115, 0,100,105,115,112, 0, 42,101,100,105,116, +101,108,101,109,115, 0, 42, 42,109, 97,116, 0,102,108, 97,103, 50, 0,116,111,116, 99,111,108, 0,119,105,114,101,115,105,122, +101, 0,114,101,110,100,101,114,115,105,122,101, 0,116,104,114,101,115,104, 0, 42,108, 97,115,116,101,108,101,109, 0,118,101, + 99, 91, 51, 93, 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,104,116, 0,104, 49, 0,104, 50, 0,102, 49, 0,102, 50, 0, +102, 51, 0,104,105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110,114, 0,112,110,116,115,117, 0,112,110,116,115, +118, 0,114,101,115,111,108,117, 0,114,101,115,111,108,118, 0,111,114,100,101,114,117, 0,111,114,100,101,114,118, 0,102,108, + 97,103,117, 0,102,108, 97,103,118, 0, 42,107,110,111,116,115,117, 0, 42,107,110,111,116,115,118, 0,116,105,108,116, 95,105, +110,116,101,114,112, 0,114, 97,100,105,117,115, 95,105,110,116,101,114,112, 0, 99,104, 97,114,105,100,120, 0,107,101,114,110, + 0,104, 0,110,117,114, 98, 0, 42,101,100,105,116,110,117,114, 98, 0, 42, 98,101,118,111, 98,106, 0, 42,116, 97,112,101,114, +111, 98,106, 0, 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,112, 97,116,104, 0, 42,107,101,121, 0, 98,101,118, 0, +100,114, 97,119,102,108, 97,103, 0,116,119,105,115,116, 95,109,111,100,101, 0,112, 97,100, 91, 50, 93, 0,116,119,105,115,116, + 95,115,109,111,111,116,104, 0,115,109, 97,108,108, 99, 97,112,115, 95,115, 99, 97,108,101, 0,112, 97,116,104,108,101,110, 0, + 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0,101,120,116, 50, 0,114,101,115,111,108,117, 95, +114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117, 0, 42,108, 97,115,116,115,101,108, 0,115,112, + 97, 99,101,109,111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101,100,105,115,116, 0,115,104,101, 97,114, 0,102, +115,105,122,101, 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, 0,117,108,104,101,105,103,104,116, 0,120,111, +102, 0,121,111,102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, 0, 42,115,101,108, 98,111,120,101,115, 0, 42, +101,100,105,116,102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, 42,118,102,111,110,116, 0, 42,118,102,111,110, +116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0,115,101,112, 99,104, 97,114, 0, 99,116,105,109, +101, 0,116,111,116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0,115,101,108,115,116, 97,114,116, 0,115,101,108, +101,110,100, 0, 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, 0,101,102,102,101, 99,116, 0, 42,109,102, 97, + 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109,118,101,114,116, 0, 42,109,101,100,103,101, 0, + 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107,121, 0, 42,116,101,120, 99,111,109,101,115,104, + 0, 42,109,115,101,108,101, 99,116, 0, 42,101,100,105,116, 95,109,101,115,104, 0,118,100, 97,116, 97, 0,101,100, 97,116, 97, + 0,102,100, 97,116, 97, 0,116,111,116,101,100,103,101, 0,116,111,116,102, 97, 99,101, 0,116,111,116,115,101,108,101, 99,116, + 0, 97, 99,116, 95,102, 97, 99,101, 0,101,100,105,116,102,108, 97,103, 0, 99,117, 98,101,109, 97,112,115,105,122,101, 0,115, +109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98,100,105,118,114, 0,115,117, 98,115,117,114,102, +116,121,112,101, 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,103,101, 0,117,118, 91, 52, 93, 91, 50, 93, 0, 99,111,108, + 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, 97,112, 0,118, 49, 0,118, 50, 0,118, 51, 0, +118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,119,101,105,103,104,116, 0,100,101,102, 95,110,114, 0, + 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0,110,111, 91, 51, 93, 0,117,118, 91, 50, 93, 0, + 99,111, 91, 50, 93, 0,105,110,100,101,120, 0,102, 0,105, 0,115, 91, 50, 53, 54, 93, 0,116,111,116,100,105,115,112, 0, 40, + 42,100,105,115,112,115, 41, 40, 41, 0,118, 91, 52, 93, 0,109,105,100, 0,118, 91, 50, 93, 0, 42,102, 97, 99,101,115, 0, 42, + 99,111,108,102, 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,118,101,114,116,115, 0,108,101,118,101,108,115, 0,108,101, +118,101,108, 95, 99,111,117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101,119,108,118,108, 0,101,100,103,101,108,118,108, + 0,112,105,110,108,118,108, 0,114,101,110,100,101,114,108,118,108, 0,117,115,101, 95, 99,111,108, 0, 42,101,100,103,101, 95, +102,108, 97,103,115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, 42,118,101,114,116, 95,109, 97,112, 0, 42,101, +100,103,101, 95,109, 97,112, 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42,111,108,100, 95,101,100,103,101,115, 0,115,116, + 97, 99,107,105,110,100,101,120, 0, 42,101,114,114,111,114, 0,109,111,100,105,102,105,101,114, 0,115,117, 98,100,105,118, 84, +121,112,101, 0,114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, 67, 97, 99,104,101, 0, 42,109, 67, 97, 99,104, +101, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,101,110,103,116,104, 0,114, 97,110,100,111,109,105,122, +101, 0,115,101,101,100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116, 97,114,116, 95, 99, 97,112, 0, 42,101,110,100, 95, 99, + 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, 95,111, 98, 0,111,102,102,115,101,116, 91, 51, + 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115,116, 0,102,105,116, 95,116,121,112,101, 0,111, +102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105,115, 0,116,111,108,101,114, 97,110, 99,101, 0, + 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103,108,101, 0,118, 97,108,117,101, 0,114,101,115, + 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, 0,101, 95,102,108, 97,103,115, 0, 98,101,118, +101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, 91, 51, 50, 93, 0, 42,100,111,109, 97,105,110, + 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,116,105,109,101, 0, 42,116,101,120,116,117,114,101, 0,115,116,114,101,110, +103,116,104, 0,100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118,101,108, 0,116,101,120,109, 97,112,112,105,110, +103, 0, 42,109, 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101,114, 95,110, 97,109,101, 91, 51, 50, 93, 0,117, +118,108, 97,121,101,114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,116,111,114,115, 91, 49, 48, 93, 0, 42,105,109, 97,103, +101, 0,110,117,109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112,101, 99,116,120, 0, 97,115,112,101, 99,116,121, + 0,115, 99, 97,108,101,120, 0,115, 99, 97,108,101,121, 0,112,101,114, 99,101,110,116, 0,102, 97, 99,101, 67,111,117,110,116, + 0,102, 97, 99, 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99,101,110,116,101,114, 0,115,116, 97,114,116,120, + 0,115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111,119, 0,115,112,101,101,100, 0,100, 97,109,112, + 0,102, 97,108,108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105,102,101,116,105,109,101, 0,100,101,102,111,114, +109,102,108, 97,103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, 0,115,117, 98,116, 97,114,103,101,116, 91, 51, + 50, 93, 0,112, 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116, 91, 51, 93, 0, 42,105,110,100,101, +120, 97,114, 0,116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, 99,108,111,116,104, 79, 98,106,101, 99,116, 0, + 42,115,105,109, 95,112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114,109,115, 0, 42,112,111,105,110,116, 95, 99, 97, + 99,104,101, 0,112,116, 99, 97, 99,104,101,115, 0, 42,120, 0, 42,120,110,101,119, 0, 42,120,111,108,100, 0, 42, 99,117,114, +114,101,110,116, 95,120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, 0, 42, 99,117,114,114,101,110,116, 95,118, 0, + 42,109,102, 97, 99,101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109,102, 97, 99,101,115, 0, 42, 98,118,104,116,114, +101,101, 0, 42,118, 0, 42,100,109, 0, 99,102,114, 97, 0,111,112,101,114, 97,116,105,111,110, 0,118,101,114,116,101,120, 0, +116,111,116,105,110,102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,122,101, 0, 42, 98,105,110,100,105,110,102,108,117, +101,110, 99,101,115, 0, 42, 98,105,110,100,111,102,102,115,101,116,115, 0, 42, 98,105,110,100, 99, 97,103,101, 99,111,115, 0, +116,111,116, 99, 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,100, 0, 42,100,121,110,105,110,102,108,117,101,110, + 99,101,115, 0, 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0,100,121,110,103,114,105,100,115,105,122,101, 0, +100,121,110, 99,101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108,108,119,105,100,116,104, 0, 98,105,110,100,109, + 97,116, 91, 52, 93, 91, 52, 93, 0, 42, 98,105,110,100,119,101,105,103,104,116,115, 0, 42, 98,105,110,100, 99,111,115, 0, 40, + 42, 98,105,110,100,102,117,110, 99, 41, 40, 41, 0, 42,112,115,121,115, 0,116,111,116,100,109,118,101,114,116, 0,116,111,116, +100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,111,115,105,116,105,111,110, 0,114, 97,110,100,111,109, + 95,112,111,115,105,116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103,114,111,117,112, 0,112,114,111,116,101, 99,116, + 0,108,118,108, 0,115, 99,117,108,112,116,108,118,108, 0,116,111,116,108,118,108, 0,115,105,109,112,108,101, 0, 42,102,115, +115, 0, 42,116, 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, 0,118,103,114,111,117,112, 95,110, 97,109,101, + 91, 51, 50, 93, 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, 84,121,112,101, 0,115,104,114,105,110,107, 79, +112,116,115, 0,112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, 76,101,118,101,108,115, 0, 42,111,114,105,103, +105,110, 0,102, 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111,114,105,103,105,110, 79,112,116,115, 0,111,102, +102,115,101,116, 95,102, 97, 99, 0, 99,114,101, 97,115,101, 95,105,110,110,101,114, 0, 99,114,101, 97,115,101, 95,111,117,116, +101,114, 0, 99,114,101, 97,115,101, 95,114,105,109, 0, 42,111, 98, 95, 97,120,105,115, 0,115,116,101,112,115, 0,114,101,110, +100,101,114, 95,115,116,101,112,115, 0,105,116,101,114, 0,115, 99,114,101,119, 95,111,102,115, 0, 97,110,103,108,101, 0,112, +110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111,112,110,116,115,119, 0,116,121,112,101,117, 0, +116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, 0,100,117, 0,100,118, 0,100,119, 0, 42,100, +101,102, 0, 42,108, 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42,101,100, +105,116,108, 97,116,116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99,117,108,112,116, 0,112, 97,114,116,121,112,101, + 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115,117, 98,115,116,114, 91, 51, 50, 93, 0, 42,116, +114, 97, 99,107, 0, 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103,114,111,117,112, 0, 42,112,114,111,120,121, 95, +102,114,111,109, 0, 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, 98, 0, 42,112,111,115,101, 0, 42,103,112,100, + 0, 97,118,115, 0, 42,109,112, 97,116,104, 0, 99,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108,115, 0,100, +101,102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115, 0,114,101,115,116,111,114,101, 95,109,111,100,101, 0, 42,109, + 97,116, 98,105,116,115, 0, 97, 99,116, 99,111,108, 0,100,108,111, 99, 91, 51, 93, 0,111,114,105,103, 91, 51, 93, 0,100,115, +105,122,101, 91, 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116, 91, 52, 93, 0,114,111,116, 65,120,105,115, 91, + 51, 93, 0,100,114,111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110,103,108,101, 0,100,114,111,116, 65,110,103,108, +101, 0,111, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105,110,118, 91, 52, 93, 91, 52, 93, 0,108, 97,121, + 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,112,114,111,116,101, 99,116,102,108, 97,103, 0,116, +114, 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102,108, 97,103, 0,105,112,111,102,108, 97,103, 0, +105,112,111,119,105,110, 0,115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105,115,102,108, 97,103, 0, 98,111,117,110,100,116, +121,112,101, 0,100,117,112,111,110, 0,100,117,112,111,102,102, 0,100,117,112,115,116, 97, 0,100,117,112,101,110,100, 0,115, +102, 0,109, 97,115,115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116,105, 97, 0,102,111,114,109,102, 97, 99,116,111, +114, 0,114,100, 97,109,112,105,110,103, 0,109, 97,114,103,105,110, 0,109, 97,120, 95,118,101,108, 0,109,105,110, 95,118,101, +108, 0,109, 95, 99,111,110,116, 97, 99,116, 80,114,111, 99,101,115,115,105,110,103, 84,104,114,101,115,104,111,108,100, 0,114, +111,116,109,111,100,101, 0,100,116, 0,100,116,120, 0,101,109,112,116,121, 95,100,114, 97,119,116,121,112,101, 0,112, 97,100, + 49, 91, 51, 93, 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0,100,117,112,102, 97, 99,101,115, 99, 97, 0,112, +114,111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108,101,114,115, 0, 97, 99,116,117, 97,116,111,114, +115, 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, 97,109,101,102,108, 97,103, 0,103, 97,109,101, +102,108, 97,103, 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97,103, 0, 97,110,105,115,111,116,114,111,112,105, + 99, 70,114,105, 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97,105,110,116,115, 0,110,108, 97,115,116,114,105, +112,115, 0,104,111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115,116,101,109, 0, 42,115,111,102,116, 0, 42,100, +117,112, 95,103,114,111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97,103, 0,114,101,115,116,114,105, 99,116,102,108, + 97,103, 0,115,104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, 0,114,101, 99, 97,108, 99,111, 0, 98,111,100, +121, 95,116,121,112,101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 42,100,101,114,105,118,101, +100, 68,101,102,111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97,108, 0,108, 97,115,116, 68, 97,116, 97, 77, 97, +115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0,103,112,117,108, 97,109,112, 0,112, 99, 95,105, +100,115, 0, 42,100,117,112,108,105,108,105,115,116, 0, 99,117,114,105,110,100,101,120, 0, 97, 99,116,105,118,101, 0,111,114, +105,103,108, 97,121, 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116,101,100, 0,111,109, 97,116, 91, 52, 93, 91, 52, + 93, 0,111,114, 99,111, 91, 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111,114, 99,101,102,105,101,108,100, 0,115,104, 97, +112,101, 0,116,101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110,107, 95, 97,120,105,115, 0,122,100,105,114, 0, +102, 95,115,116,114,101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95,102,108,111,119, 0,102, 95,115,105,122,101, 0, +102, 95,112,111,119,101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100,105,115,116, 0,102, 95,112,111,119,101,114, 95, +114, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,100, 0,112,100,101,102, 95,100, 97,109,112, 0,112,100,101,102, 95,114, +100, 97,109,112, 0,112,100,101,102, 95,112,101,114,109, 0,112,100,101,102, 95,102,114,105, 99,116, 0,112,100,101,102, 95,114, +102,114,105, 99,116, 0,112,100,101,102, 95,115,116,105, 99,107,110,101,115,115, 0, 97, 98,115,111,114,112,116,105,111,110, 0, +112,100,101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105,102,116, 0,112,100,101,102, 95,115, 98,111,102, +116, 0, 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111,119, 0,107,105,110,107, 95,102,114,101,113, 0, +107,105,110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0,102,114,101,101, 95,101,110,100, 0,116,101,120, + 95,110, 97, 98,108, 97, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0,119,101,105,103,104,116, 91, 49, 51, 93, 0,103, +108,111, 98, 97,108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93, 0,102,114, 97,109,101, 0,116,111,116,112,111,105, +110,116, 0,100, 97,116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,120, 95, 97,114,114, 97,121, 0, 42,100, 97,116, 97, + 91, 56, 93, 0, 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, 0,115,105,109,102,114, 97,109,101, 0,115,116, 97,114,116,102, +114, 97,109,101, 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, 97,109,101, 0,108, 97,115,116, 95,101,120, 97, + 99,116, 0,110, 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,109,101, 91, 54, 52, 93, 0,105,110,102,111, 91, 54, + 52, 93, 0,112, 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97, 99,104,101, 0, 42,101,100,105,116, 0, 40, 42,102, +114,101,101, 95,101,100,105,116, 41, 40, 41, 0,108,105,110, 83,116,105,102,102, 0, 97,110,103, 83,116,105,102,102, 0,118,111, +108,117,109,101, 0,118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,116,101,114, 97,116,105,111,110,115, 0,100,105,116, +101,114, 97,116,105,111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,115, 0,107, 83, 82, 72, 82, 95, 67, 76, 0,107, 83, + 75, 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 75, 95, + 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 86, 67, 70, 0,107, 68, 80, 0,107, 68, 71, + 0,107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77, 84, 0,107, 67, 72, 82, 0,107, 75, 72, 82, 0,107, + 83, 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,108, 97,103,115, 0,110,117,109, 99,108,117,115,116, +101,114,105,116,101,114, 97,116,105,111,110,115, 0,119,101,108,100,105,110,103, 0,116,111,116,115,112,114,105,110,103, 0, 42, + 98,112,111,105,110,116, 0, 42, 98,115,112,114,105,110,103, 0,109,115,103, 95,108,111, 99,107, 0,109,115,103, 95,118, 97,108, +117,101, 0,110,111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71, 95, 77, 97,115,115, 91, 51, 50, 93, 0,103,114, 97, +118, 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, 0,112,104,121,115,105, 99,115, 95,115,112,101, +101,100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114,105, 99,116, 0,109,105,110,103,111, 97,108, 0, +109, 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116,103,114,111,117,112, 0,110, 97,109,101,100, 86, + 71, 95, 83,111,102,116,103,111, 97,108, 91, 51, 50, 93, 0,102,117,122,122,121,110,101,115,115, 0,105,110,115,112,114,105,110, +103, 0,105,110,102,114,105, 99,116, 0,110, 97,109,101,100, 86, 71, 95, 83,112,114,105,110,103, 95, 75, 91, 51, 50, 93, 0,101, +102,114, 97, 0,105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115,111,108,118,101,114,102,108, 97,103,115, 0, 42, + 42,107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, 99,111,110,100,115,112,114,105,110,103, 0, 99, +111,108, 98, 97,108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108,115,116,105,102,102, 0,115, 98, 99, 95,109,111, +100,101, 0, 97,101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, 0,109, 97,120,108,111,111,112,115, 0, 99,104, +111,107,101, 0,115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, 99, 0,115,112,114,105,110,103,112,114,101,108, +111, 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116,105,102,102, 0,105,110,112,117,115,104, 0, 42, +112,111,105,110,116, 99, 97, 99,104,101, 0, 42,101,102,102,101, 99,116,111,114, 95,119,101,105,103,104,116,115, 0,108, 99,111, +109, 91, 51, 93, 0,108,114,111,116, 91, 51, 93, 91, 51, 93, 0,108,115, 99, 97,108,101, 91, 51, 93, 91, 51, 93, 0,112, 97,100, + 52, 91, 52, 93, 0, 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,101,100,111,112,116,105,111,110,115, 0,114, +101,115,111,108,117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119,114,101,115,120,121,122, 0,114,101, 97,108,115, +105,122,101, 0,103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114,101,110,100,101,114, 68,105,115,112,108, 97,121, + 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0,118,105,115, 99,111,115,105,116,121, 77,111,100, +101, 0,118,105,115, 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0,103,114, 97,118,120, 0,103,114, 97,118,121, 0, +103,114, 97,118,122, 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, 69,110,100, 0, 98, 97,107,101, 83,116, 97,114, +116, 0, 98, 97,107,101, 69,110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82,101,102,105,110,101, 0,105,110,105, 86,101,108, +120, 0,105,110,105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111,114,103, 77,101,115,104, 0, 42,109,101,115,104, + 83,117,114,102, 97, 99,101, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102,100, 97,116, 97, 80, 97,116,104, 91, 50, 52, 48, + 93, 0, 98, 98, 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, 51, 93, 0,116,121,112,101, 70,108, 97,103,115, + 0,100,111,109, 97,105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117,109,101, 73,110,105,116, 84,121,112,101, 0,112, + 97,114,116, 83,108,105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116,101, 84,114, 97, 99,101,114,115, 0,103,101,110, +101,114, 97,116,101, 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, 99,101, 83,109,111,111,116,104,105,110,103, 0, +115,117,114,102, 97, 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 83,105,122,101, 0,112, + 97,114,116,105, 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70,105,101,108,100, 83,105,122,101, 0, 42,109,101, +115,104, 83,117,114,102, 78,111,114,109, 97,108,115, 0, 99,112,115, 84,105,109,101, 83,116, 97,114,116, 0, 99,112,115, 84,105, +109,101, 69,110,100, 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 83,116,114, +101,110,103,116,104, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97,100,105,117,115, 0,118,101,108,111, 99,105,116, +121,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 82, 97,100,105, +117,115, 0,108, 97,115,116,103,111,111,100,102,114, 97,109,101, 0,109,105,115,116,121,112,101, 0,104,111,114,114, 0,104,111, +114,103, 0,104,111,114, 98, 0,122,101,110,114, 0,122,101,110,103, 0,122,101,110, 98, 0,102, 97,115,116, 99,111,108, 0,101, +120,112,111,115,117,114,101, 0,101,120,112, 0,114, 97,110,103,101, 0,108,105,110,102, 97, 99, 0,108,111,103,102, 97, 99, 0, +103,114, 97,118,105,116,121, 0, 97, 99,116,105,118,105,116,121, 66,111,120, 82, 97,100,105,117,115, 0,115,107,121,116,121,112, +101, 0,111, 99, 99,108,117,115,105,111,110, 82,101,115, 0,112,104,121,115,105, 99,115, 69,110,103,105,110,101, 0,116,105, 99, +114, 97,116,101, 0,109, 97,120,108,111,103,105, 99,115,116,101,112, 0,112,104,121,115,117, 98,115,116,101,112, 0,109, 97,120, +112,104,121,115,116,101,112, 0,109,105,115,105, 0,109,105,115,116,115,116, 97, 0,109,105,115,116,100,105,115,116, 0,109,105, +115,116,104,105, 0,115,116, 97,114,114, 0,115,116, 97,114,103, 0,115,116, 97,114, 98, 0,115,116, 97,114,107, 0,115,116, 97, +114,115,105,122,101, 0,115,116, 97,114,109,105,110,100,105,115,116, 0,115,116, 97,114,100,105,115,116, 0,115,116, 97,114, 99, +111,108,110,111,105,115,101, 0,100,111,102,115,116, 97, 0,100,111,102,101,110,100, 0,100,111,102,109,105,110, 0,100,111,102, +109, 97,120, 0, 97,111,100,105,115,116, 0, 97,111,100,105,115,116,102, 97, 99, 0, 97,111,101,110,101,114,103,121, 0, 97,111, + 98,105, 97,115, 0, 97,111,109,111,100,101, 0, 97,111,115, 97,109,112, 0, 97,111,109,105,120, 0, 97,111, 99,111,108,111,114, + 0, 97,111, 95, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0, 97,111, 95, 97,100, 97,112,116, 95,115,112,101,101,100, 95, +102, 97, 99, 0, 97,111, 95, 97,112,112,114,111,120, 95,101,114,114,111,114, 0, 97,111, 95, 97,112,112,114,111,120, 95, 99,111, +114,114,101, 99,116,105,111,110, 0, 97,111, 95,105,110,100,105,114,101, 99,116, 95,101,110,101,114,103,121, 0, 97,111, 95,101, +110,118, 95,101,110,101,114,103,121, 0, 97,111, 95,112, 97,100, 50, 0, 97,111, 95,105,110,100,105,114,101, 99,116, 95, 98,111, +117,110, 99,101,115, 0, 97,111, 95,112, 97,100, 0, 97,111, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0, 97,111, 95,103, + 97,116,104,101,114, 95,109,101,116,104,111,100, 0, 97,111, 95, 97,112,112,114,111,120, 95,112, 97,115,115,101,115, 0, 42, 97, +111,115,112,104,101,114,101, 0, 42, 97,111,116, 97, 98,108,101,115, 0,112, 97,100, 91, 51, 93, 0,115,101,108, 99,111,108, 0, +115,120, 0,115,121, 0, 42,108,112, 70,111,114,109, 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, 98, 70,111,114,109, 97, +116, 0, 99, 98, 80, 97,114,109,115, 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108,101,114, 0,100,119, 75, +101,121, 70,114, 97,109,101, 69,118,101,114,121, 0,100,119, 81,117, 97,108,105,116,121, 0,100,119, 66,121,116,101,115, 80,101, +114, 83,101, 99,111,110,100, 0,100,119, 70,108, 97,103,115, 0,100,119, 73,110,116,101,114,108,101, 97,118,101, 69,118,101,114, +121, 0, 97,118,105, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114,109,115, 0, 42,112, 97, +100, 0, 99,100, 83,105,122,101, 0,113,116, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 99,111,100,101, 99, 84, +121,112,101, 0, 99,111,100,101, 99, 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0, 99,111,100,101, 99, 0, 99,111, +100,101, 99, 70,108, 97,103,115, 0, 99,111,108,111,114, 68,101,112,116,104, 0, 99,111,100,101, 99, 84,101,109,112,111,114, 97, +108, 81,117, 97,108,105,116,121, 0,109,105,110, 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 84,101, +109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0,107,101,121, 70,114, 97,109,101, 82, 97,116,101, 0, 98,105,116, 82, 97, +116,101, 0, 97,117,100,105,111, 99,111,100,101, 99, 84,121,112,101, 0, 97,117,100,105,111, 83, 97,109,112,108,101, 82, 97,116, +101, 0, 97,117,100,105,111, 66,105,116, 68,101,112,116,104, 0, 97,117,100,105,111, 67,104, 97,110,110,101,108,115, 0, 97,117, +100,105,111, 67,111,100,101, 99, 70,108, 97,103,115, 0, 97,117,100,105,111, 66,105,116, 82, 97,116,101, 0, 97,117,100,105,111, + 95, 99,111,100,101, 99, 0,118,105,100,101,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, 98,105,116,114, 97, +116,101, 0, 97,117,100,105,111, 95,109,105,120,114, 97,116,101, 0, 97,117,100,105,111, 95,118,111,108,117,109,101, 0,103,111, +112, 95,115,105,122,101, 0,114, 99, 95,109,105,110, 95,114, 97,116,101, 0,114, 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, + 99, 95, 98,117,102,102,101,114, 95,115,105,122,101, 0,109,117,120, 95,112, 97, 99,107,101,116, 95,115,105,122,101, 0,109,117, +120, 95,114, 97,116,101, 0,109,105,120,114, 97,116,101, 0,109, 97,105,110, 0,115,112,101,101,100, 95,111,102, 95,115,111,117, +110,100, 0,100,111,112,112,108,101,114, 95,102, 97, 99,116,111,114, 0,100,105,115,116, 97,110, 99,101, 95,109,111,100,101,108, + 0, 42,109, 97,116, 95,111,118,101,114,114,105,100,101, 0, 42,108,105,103,104,116, 95,111,118,101,114,114,105,100,101, 0,108, + 97,121, 95,122,109, 97,115,107, 0,108, 97,121,102,108, 97,103, 0,112, 97,115,115,102,108, 97,103, 0,112, 97,115,115, 95,120, +111,114, 0, 42, 97,118,105, 99,111,100,101, 99,100, 97,116, 97, 0, 42,113,116, 99,111,100,101, 99,100, 97,116, 97, 0,113,116, + 99,111,100,101, 99,115,101,116,116,105,110,103,115, 0,102,102, 99,111,100,101, 99,100, 97,116, 97, 0,115,117, 98,102,114, 97, +109,101, 0,112,115,102,114, 97, 0,112,101,102,114, 97, 0,105,109, 97,103,101,115, 0,102,114, 97,109, 97,112,116,111, 0,116, +104,114,101, 97,100,115, 0,102,114, 97,109,101,108,101,110, 0, 98,108,117,114,102, 97, 99, 0,101,100,103,101, 82, 0,101,100, +103,101, 71, 0,101,100,103,101, 66, 0,102,117,108,108,115, 99,114,101,101,110, 0,120,112,108, 97,121, 0,121,112,108, 97,121, + 0,102,114,101,113,112,108, 97,121, 0, 97,116,116,114,105, 98, 0,114,116, 50, 0,102,114, 97,109,101, 95,115,116,101,112, 0, +115,116,101,114,101,111,109,111,100,101, 0,100,105,109,101,110,115,105,111,110,115,112,114,101,115,101,116, 0,109, 97,120,105, +109,115,105,122,101, 0,120,115, 99,104, 0,121,115, 99,104, 0,120,112, 97,114,116,115, 0,121,112, 97,114,116,115, 0,119,105, +110,112,111,115, 0,112,108, 97,110,101,115, 0,105,109,116,121,112,101, 0,115,117, 98,105,109,116,121,112,101, 0,113,117, 97, +108,105,116,121, 0,100,105,115,112,108, 97,121,109,111,100,101, 0,114,112, 97,100, 49, 0,114,112, 97,100, 50, 0,115, 99,101, +109,111,100,101, 0,114, 97,121,116,114, 97, 99,101, 95,111,112,116,105,111,110,115, 0,114, 97,121,116,114, 97, 99,101, 95,115, +116,114,117, 99,116,117,114,101, 0,114,101,110,100,101,114,101,114, 0,111, 99,114,101,115, 0, 97,108,112,104, 97,109,111,100, +101, 0,111,115, 97, 0,102,114,115, 95,115,101, 99, 0,101,100,103,101,105,110,116, 0,115, 97,102,101,116,121, 0, 98,111,114, +100,101,114, 0,100,105,115,112,114,101, 99,116, 0,108, 97,121,101,114,115, 0, 97, 99,116,108, 97,121, 0,109, 98,108,117,114, + 95,115, 97,109,112,108,101,115, 0,120, 97,115,112, 0,121, 97,115,112, 0,102,114,115, 95,115,101, 99, 95, 98, 97,115,101, 0, +103, 97,117,115,115, 0, 99,111,108,111,114, 95,109,103,116, 95,102,108, 97,103, 0,112,111,115,116,103, 97,109,109, 97, 0,112, +111,115,116,104,117,101, 0,112,111,115,116,115, 97,116, 0,100,105,116,104,101,114, 95,105,110,116,101,110,115,105,116,121, 0, + 98, 97,107,101, 95,111,115, 97, 0, 98, 97,107,101, 95,102,105,108,116,101,114, 0, 98, 97,107,101, 95,109,111,100,101, 0, 98, + 97,107,101, 95,102,108, 97,103, 0, 98, 97,107,101, 95,110,111,114,109, 97,108, 95,115,112, 97, 99,101, 0, 98, 97,107,101, 95, +113,117, 97,100, 95,115,112,108,105,116, 0, 98, 97,107,101, 95,109, 97,120,100,105,115,116, 0, 98, 97,107,101, 95, 98,105, 97, +115,100,105,115,116, 0, 98, 97,107,101, 95,112, 97,100, 0, 98, 97, 99,107, 98,117,102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, + 49, 54, 48, 93, 0,115,116, 97,109,112, 0,115,116, 97,109,112, 95,102,111,110,116, 95,105,100, 0,115,116, 97,109,112, 95,117, +100, 97,116, 97, 91, 49, 54, 48, 93, 0,102,103, 95,115,116, 97,109,112, 91, 52, 93, 0, 98,103, 95,115,116, 97,109,112, 91, 52, + 93, 0,115,101,113, 95,112,114,101,118, 95,116,121,112,101, 0,115,101,113, 95,114,101,110,100, 95,116,121,112,101, 0,115,101, +113, 95,102,108, 97,103, 0,112, 97,100, 53, 91, 53, 93, 0,115,105,109,112,108,105,102,121, 95,102,108, 97,103, 0,115,105,109, +112,108,105,102,121, 95,115,117, 98,115,117,114,102, 0,115,105,109,112,108,105,102,121, 95,115,104, 97,100,111,119,115, 97,109, +112,108,101,115, 0,115,105,109,112,108,105,102,121, 95,112, 97,114,116,105, 99,108,101,115, 0,115,105,109,112,108,105,102,121, + 95, 97,111,115,115,115, 0, 99,105,110,101,111,110,119,104,105,116,101, 0, 99,105,110,101,111,110, 98,108, 97, 99,107, 0, 99, +105,110,101,111,110,103, 97,109,109, 97, 0,106,112, 50, 95,112,114,101,115,101,116, 0,106,112, 50, 95,100,101,112,116,104, 0, +114,112, 97,100, 51, 0,100,111,109,101,114,101,115, 0,100,111,109,101,109,111,100,101, 0,100,111,109,101, 97,110,103,108,101, + 0,100,111,109,101,116,105,108,116, 0,100,111,109,101,114,101,115, 98,117,102, 0, 42,100,111,109,101,116,101,120,116, 0,101, +110,103,105,110,101, 91, 51, 50, 93, 0,112, 97,114,116,105, 99,108,101, 95,112,101,114, 99, 0,115,117, 98,115,117,114,102, 95, +109, 97,120, 0,115,104, 97,100, 98,117,102,115, 97,109,112,108,101, 95,109, 97,120, 0, 97,111, 95,101,114,114,111,114, 0,116, +105,108,116, 0,114,101,115, 98,117,102, 0, 42,119, 97,114,112,116,101,120,116, 0, 99,111,108, 91, 51, 93, 0,109, 97,116,109, +111,100,101, 0,102,114, 97,109,105,110,103, 0,114,116, 49, 0,100,111,109,101, 0,115,116,101,114,101,111,102,108, 97,103, 0, +101,121,101,115,101,112, 97,114, 97,116,105,111,110, 0, 42, 99, 97,109,101,114, 97, 0, 42, 42, 98,114,117,115,104,101,115, 0, + 97, 99,116,105,118,101, 95, 98,114,117,115,104, 95,105,110,100,101,120, 0, 98,114,117,115,104, 95, 99,111,117,110,116, 0, 42, +112, 97,105,110,116, 95, 99,117,114,115,111,114, 0,112, 97,105,110,116, 95, 99,117,114,115,111,114, 95, 99,111,108, 91, 52, 93, + 0,112, 97,105,110,116, 0,115,101, 97,109, 95, 98,108,101,101,100, 0,110,111,114,109, 97,108, 95, 97,110,103,108,101, 0,115, + 99,114,101,101,110, 95,103,114, 97, 98, 95,115,105,122,101, 91, 50, 93, 0, 42,112, 97,105,110,116, 99,117,114,115,111,114, 0, +105,110,118,101,114,116, 0,116,111,116,114,101,107,101,121, 0,116,111,116, 97,100,100,107,101,121, 0, 98,114,117,115,104,116, +121,112,101, 0, 98,114,117,115,104, 91, 55, 93, 0,101,109,105,116,116,101,114,100,105,115,116, 0,115,101,108,101, 99,116,109, +111,100,101, 0,101,100,105,116,116,121,112,101, 0,100,114, 97,119, 95,115,116,101,112, 0,102, 97,100,101, 95,102,114, 97,109, +101,115, 0,110, 97,109,101, 91, 51, 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, 93, 0,114, 97,100,105, 97,108, 95,115,121,109, +109, 91, 51, 93, 0,108, 97,115,116, 95,120, 0,108, 97,115,116, 95,121, 0,108, 97,115,116, 95, 97,110,103,108,101, 0,100,114, + 97,119, 95, 97,110, 99,104,111,114,101,100, 0, 97,110, 99,104,111,114,101,100, 95,115,105,122,101, 0, 97,110, 99,104,111,114, +101,100, 95,108,111, 99, 97,116,105,111,110, 91, 51, 93, 0, 97,110, 99,104,111,114,101,100, 95,105,110,105,116,105, 97,108, 95, +109,111,117,115,101, 91, 50, 93, 0,100,114, 97,119, 95,112,114,101,115,115,117,114,101, 0,112,114,101,115,115,117,114,101, 95, +118, 97,108,117,101, 0,115,112,101, 99,105, 97,108, 95,114,111,116, 97,116,105,111,110, 0, 42,118,112, 97,105,110,116, 95,112, +114,101,118, 0, 42,119,112, 97,105,110,116, 95,112,114,101,118, 0, 42,118,112, 97,105,110,116, 0, 42,119,112, 97,105,110,116, + 0,118,103,114,111,117,112, 95,119,101,105,103,104,116, 0, 99,111,114,110,101,114,116,121,112,101, 0,101,100,105,116, 98,117, +116,102,108, 97,103, 0,106,111,105,110,116,114,105,108,105,109,105,116, 0,100,101,103,114, 0,116,117,114,110, 0,101,120,116, +114, 95,111,102,102,115, 0,100,111,117, 98,108,105,109,105,116, 0,110,111,114,109, 97,108,115,105,122,101, 0, 97,117,116,111, +109,101,114,103,101, 0,115,101,103,109,101,110,116,115, 0,114,105,110,103,115, 0,118,101,114,116,105, 99,101,115, 0,117,110, +119,114, 97,112,112,101,114, 0,117,118, 99, 97,108, 99, 95,114, 97,100,105,117,115, 0,117,118, 99, 97,108, 99, 95, 99,117, 98, +101,115,105,122,101, 0,117,118, 99, 97,108, 99, 95,109, 97,114,103,105,110, 0,117,118, 99, 97,108, 99, 95,109, 97,112,100,105, +114, 0,117,118, 99, 97,108, 99, 95,109, 97,112, 97,108,105,103,110, 0,117,118, 99, 97,108, 99, 95,102,108, 97,103, 0,117,118, + 95,102,108, 97,103, 0,117,118, 95,115,101,108,101, 99,116,109,111,100,101, 0,117,118, 95,112, 97,100, 91, 50, 93, 0, 97,117, +116,111,105,107, 95, 99,104, 97,105,110,108,101,110, 0,105,109, 97,112, 97,105,110,116, 0,112, 97,114,116,105, 99,108,101, 0, +112,114,111,112,111,114,116,105,111,110, 97,108, 95,115,105,122,101, 0,115,101,108,101, 99,116, 95,116,104,114,101,115,104, 0, + 99,108,101, 97,110, 95,116,104,114,101,115,104, 0, 97,117,116,111,107,101,121, 95,109,111,100,101, 0, 97,117,116,111,107,101, +121, 95,102,108, 97,103, 0,114,101,116,111,112,111, 95,109,111,100,101, 0,114,101,116,111,112,111, 95,112, 97,105,110,116, 95, +116,111,111,108, 0,108,105,110,101, 95,100,105,118, 0,101,108,108,105,112,115,101, 95,100,105,118, 0,114,101,116,111,112,111, + 95,104,111,116,115,112,111,116, 0,109,117,108,116,105,114,101,115, 95,115,117, 98,100,105,118, 95,116,121,112,101, 0,115,107, +103,101,110, 95,114,101,115,111,108,117,116,105,111,110, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,105, +110,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,101,120,116,101,114,110, 97,108, + 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,114, 97,116,105,111, 0,115,107,103,101,110, 95,108,101,110,103,116,104, + 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 97,110,103,108,101, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 99, +111,114,114,101,108, 97,116,105,111,110, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,115,121,109,109,101,116,114,121, 95, +108,105,109,105,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95, 97,110,103,108,101, 95,119,101,105,103,104, +116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,108,101,110,103,116,104, 95,119,101,105,103,104,116, 0,115, +107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,100,105,115,116, 97,110, 99,101, 95,119,101,105,103,104,116, 0,115,107, +103,101,110, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 0,115,107,103,101,110, 95, +112,111,115,116,112,114,111, 95,112, 97,115,115,101,115, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110, +115, 91, 51, 93, 0,115,107,103,101,110, 95,109,117,108,116,105, 95,108,101,118,101,108, 0, 42,115,107,103,101,110, 95,116,101, +109,112,108, 97,116,101, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 0, 98,111,110,101, 95,115,107,101,116, 99, +104,105,110,103, 95, 99,111,110,118,101,114,116, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110, 95,110, +117,109, 98,101,114, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,111,112,116,105,111,110,115, 0,115,107,103, +101,110, 95,114,101,116, 97,114,103,101,116, 95,114,111,108,108, 0,115,107,103,101,110, 95,115,105,100,101, 95,115,116,114,105, +110,103, 91, 56, 93, 0,115,107,103,101,110, 95,110,117,109, 95,115,116,114,105,110,103, 91, 56, 93, 0,101,100,103,101, 95,109, +111,100,101, 0,115,110, 97,112, 95,109,111,100,101, 0,115,110, 97,112, 95,102,108, 97,103, 0,115,110, 97,112, 95,116, 97,114, +103,101,116, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 0,112,114,111,112, 95,109,111,100,101, 0, 97,117,116,111, 95, +110,111,114,109, 97,108,105,122,101, 0,105,110,116,112, 97,100, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,115,101, +116,116,105,110,103,115, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,115,105,122,101, + 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,117,110,112,114,111,106,101, 99,116,101, +100, 95,114, 97,100,105,117,115, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95, 97,108, +112,104, 97, 0,116,111,116,111, 98,106, 0,116,111,116,108, 97,109,112, 0,116,111,116,111, 98,106,115,101,108, 0,116,111,116, + 99,117,114,118,101, 0,116,111,116,109,101,115,104, 0,116,111,116, 97,114,109, 97,116,117,114,101, 0,115, 99, 97,108,101, 95, +108,101,110,103,116,104, 0,115,121,115,116,101,109, 0,103,114, 97,118,105,116,121, 91, 51, 93, 0,113,117,105, 99,107, 95, 99, + 97, 99,104,101, 95,115,116,101,112, 0, 42,119,111,114,108,100, 0, 42,115,101,116, 0, 98, 97,115,101, 0, 42, 98, 97,115, 97, + 99,116, 0, 42,111, 98,101,100,105,116, 0, 99,117,114,115,111,114, 91, 51, 93, 0,116,119, 99,101,110,116, 91, 51, 93, 0,116, +119,109,105,110, 91, 51, 93, 0,116,119,109, 97,120, 91, 51, 93, 0,108, 97,121, 97, 99,116, 0, 42,101,100, 0, 42,116,111,111, +108,115,101,116,116,105,110,103,115, 0, 42,115,116, 97,116,115, 0, 97,117,100,105,111, 0,116,114, 97,110,115,102,111,114,109, + 95,115,112, 97, 99,101,115, 0, 42,115,111,117,110,100, 95,115, 99,101,110,101, 0, 42,115,111,117,110,100, 95,115, 99,101,110, +101, 95,104, 97,110,100,108,101, 0, 42,102,112,115, 95,105,110,102,111, 0, 42,116,104,101, 68, 97,103, 0,100, 97,103,105,115, +118, 97,108,105,100, 0,100, 97,103,102,108, 97,103,115, 0,106,117,109,112,102,114, 97,109,101, 0,112, 97,100, 53, 0, 97, 99, +116,105,118,101, 95,107,101,121,105,110,103,115,101,116, 0,107,101,121,105,110,103,115,101,116,115, 0,103,109, 0,117,110,105, +116, 0,112,104,121,115,105, 99,115, 95,115,101,116,116,105,110,103,115, 0, 98,108,101,110,100, 0,118,105,101,119, 0,119,105, +110,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,105,110,118, + 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,105,110,118, 91, 52, 93, 91, + 52, 93, 0,118,105,101,119,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116,111, 98, 91, 52, 93, 91, + 52, 93, 0,116,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,122,102, 97, 99, 0, + 99, 97,109,100,120, 0, 99, 97,109,100,121, 0,112,105,120,115,105,122,101, 0, 99, 97,109,122,111,111,109, 0,118,105,101,119, + 98,117,116, 0,116,119,100,114, 97,119,102,108, 97,103, 0,114,102,108, 97,103, 0,118,105,101,119,108,111, 99,107, 0,112,101, +114,115,112, 0, 99,108,105,112, 91, 54, 93, 91, 52, 93, 0, 99,108,105,112, 95,108,111, 99, 97,108, 91, 54, 93, 91, 52, 93, 0, + 42, 99,108,105,112, 98, 98, 0, 42,108,111, 99, 97,108,118,100, 0, 42,114,105, 0, 42,114,101,116,111,112,111, 95,118,105,101, +119, 95,100, 97,116, 97, 0, 42,100,101,112,116,104,115, 0, 42,115,109,115, 0, 42,115,109,111,111,116,104, 95,116,105,109,101, +114, 0,108,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,108,112,101,114,115,112, 0,108,118,105,101,119, 0,103,114,105,100, +118,105,101,119, 0,116,119, 97,110,103,108,101, 91, 51, 93, 0,112, 97,100,102, 0,114,101,103,105,111,110, 98, 97,115,101, 0, +115,112, 97, 99,101,116,121,112,101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, 99,107,104, 97,110,100,108,101, +114, 91, 56, 93, 0,108, 97,121, 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0, 98,103,112,105, 99, 98, 97, +115,101, 0, 42, 98,103,112,105, 99, 0,111, 98, 95, 99,101,110,116,114,101, 95, 98,111,110,101, 91, 51, 50, 93, 0,100,114, 97, +119,116,121,112,101, 0,115, 99,101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0,112,105,118,111,116, 95,108, 97,115, +116, 0,103,114,105,100, 0,110,101, 97,114, 0,102, 97,114, 0,103,114,105,100,108,105,110,101,115, 0,103,114,105,100,102,108, + 97,103, 0,103,114,105,100,115,117, 98,100,105,118, 0,109,111,100,101,115,101,108,101, 99,116, 0,107,101,121,102,108, 97,103, +115, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101, 0,116,119,102,108, 97,103, 0, 99,117,115,116,111,109,100, 97,116, + 97, 95,109, 97,115,107, 0, 97,102,116,101,114,100,114, 97,119, 0,122, 98,117,102, 0,120,114, 97,121, 0,110,100,111,102,109, +111,100,101, 0,110,100,111,102,102,105,108,116,101,114, 0, 42,112,114,111,112,101,114,116,105,101,115, 95,115,116,111,114, 97, +103,101, 0,118,101,114,116, 0,104,111,114, 0,109, 97,115,107, 0,109,105,110, 91, 50, 93, 0,109, 97,120, 91, 50, 93, 0,109, +105,110,122,111,111,109, 0,109, 97,120,122,111,111,109, 0,115, 99,114,111,108,108, 0,115, 99,114,111,108,108, 95,117,105, 0, +107,101,101,112,116,111,116, 0,107,101,101,112,122,111,111,109, 0,107,101,101,112,111,102,115, 0, 97,108,105,103,110, 0,119, +105,110,120, 0,119,105,110,121, 0,111,108,100,119,105,110,120, 0,111,108,100,119,105,110,121, 0, 42,116, 97, 98, 95,111,102, +102,115,101,116, 0,116, 97, 98, 95,110,117,109, 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99,114,101,101,110, 0,118, 50,100, + 0, 42, 97,100,115, 0,103,104,111,115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, 97,112, 0, 99,117,114,115,111, +114, 86, 97,108, 0,109, 97,105,110, 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117,115,101,114, 0,114,101, 95, 97, +108,105,103,110, 0,112,114,101,118,105,101,119, 0,112, 97,116,104,102,108, 97,103, 0,100, 97,116, 97,105, 99,111,110, 0, 42, +112,105,110,105,100, 0,114,101,110,100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104,111,119,110, 0,122,101, 98,114, + 97, 0,122,111,111,109, 0,116,105,116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,102,105,108,101, 91, 56, + 48, 93, 0,114,101,110, 97,109,101,102,105,108,101, 91, 56, 48, 93, 0,115,111,114,116, 0,100,105,115,112,108, 97,121, 0, 97, + 99,116,105,118,101, 95, 98,111,111,107,109, 97,114,107, 0, 97, 99,116,105,118,101, 95,102,105,108,101, 0,115,101,108,115,116, + 97,116,101, 0,102, 95,102,112, 0,102,112, 95,115,116,114, 91, 56, 93, 0,115, 99,114,111,108,108, 95,111,102,102,115,101,116, + 0, 42,112, 97,114, 97,109,115, 0, 42,102,105,108,101,115, 0, 42,102,111,108,100,101,114,115, 95,112,114,101,118, 0, 42,102, +111,108,100,101,114,115, 95,110,101,120,116, 0, 42,111,112, 0, 42,115,109,111,111,116,104,115, 99,114,111,108,108, 95,116,105, +109,101,114, 0, 42,108, 97,121,111,117,116, 0,114,101, 99,101,110,116,110,114, 0, 98,111,111,107,109, 97,114,107,110,114, 0, +115,121,115,116,101,109,110,114, 0,116,114,101,101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97,114, 99,104, 95, +115,116,114,105,110,103, 91, 51, 50, 93, 0,115,101, 97,114, 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, 95,102,108, 97, +103,115, 0,100,111, 95, 0,111,117,116,108,105,110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0, 42, 99,117,109, + 97,112, 0,105,109, 97,110,114, 0, 99,117,114,116,105,108,101, 0,105,109,116,121,112,101,110,114, 0,108,111, 99,107, 0,112, +105,110, 0,100,116, 95,117,118, 0,115,116,105, 99,107,121, 0,100,116, 95,117,118,115,116,114,101,116, 99,104, 0, 99,117,114, +115,111,114, 91, 50, 93, 0, 99,101,110,116,120, 0, 99,101,110,116,121, 0,115, 99,111,112,101,115, 0,115, 97,109,112,108,101, + 95,108,105,110,101, 95,104,105,115,116, 0, 42,116,101,120,116, 0,116,111,112, 0,118,105,101,119,108,105,110,101,115, 0,108, +104,101,105,103,104,116, 0, 99,119,105,100,116,104, 0,108,105,110,101,110,114,115, 95,116,111,116, 0,108,101,102,116, 0,115, +104,111,119,108,105,110,101,110,114,115, 0,116, 97, 98,110,117,109, 98,101,114, 0,115,104,111,119,115,121,110,116, 97,120, 0, +111,118,101,114,119,114,105,116,101, 0,108,105,118,101, 95,101,100,105,116, 0,112,105,120, 95,112,101,114, 95,108,105,110,101, + 0,116,120,116,115, 99,114,111,108,108, 0,116,120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100,111,112,108,117, +103,105,110,115, 0,102,105,110,100,115,116,114, 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99,101,115,116,114, 91, 50, 53, 54, + 93, 0, 42,112,121, 95,100,114, 97,119, 0, 42,112,121, 95,101,118,101,110,116, 0, 42,112,121, 95, 98,117,116,116,111,110, 0, + 42,112,121, 95, 98,114,111,119,115,101,114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,111, 98, 97,108,100,105, + 99,116, 0,108, 97,115,116,115,112, 97, 99,101, 0,115, 99,114,105,112,116,110, 97,109,101, 91, 50, 53, 54, 93, 0,115, 99,114, +105,112,116, 97,114,103, 91, 50, 53, 54, 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,117,116, 95,114,101,102,115, 0, 42, 97, +114,114, 97,121, 0, 99, 97, 99,104,101,115, 0, 99, 97, 99,104,101, 95,100,105,115,112,108, 97,121, 0,114,101,100,114, 97,119, +115, 0, 42,105,100, 0, 97,115,112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, 0,109,121, 0, 42,101,100,105, +116,116,114,101,101, 0,116,114,101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,109,101,110,117, 0,110,117,109,116, +105,108,101,115,120, 0,110,117,109,116,105,108,101,115,121, 0,118,105,101,119,114,101, 99,116, 0, 98,111,111,107,109, 97,114, +107,114,101, 99,116, 0,115, 99,114,111,108,108,112,111,115, 0,115, 99,114,111,108,108,104,101,105,103,104,116, 0,115, 99,114, +111,108,108, 97,114,101, 97, 0,114,101,116,118, 97,108, 0,112,114,118, 95,119, 0,112,114,118, 95,104, 0, 40, 42,114,101,116, +117,114,110,102,117,110, 99, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95,101,118,101,110,116, 41, 40, 41, + 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95, 97,114,103,115, 41, 40, 41, 0, 42, 97,114,103, 49, 0, 42, 97,114,103, + 50, 0, 42,109,101,110,117,112, 0, 42,112,117,112,109,101,110,117, 0, 42,105,109,103, 0,108,101,110, 95, 97,108,108,111, 99, + 0, 99,117,114,115,111,114, 0,114,112,116, 95,109, 97,115,107, 0,115, 99,114,111,108,108, 98, 97, 99,107, 0,104,105,115,116, +111,114,121, 0,112,114,111,109,112,116, 91, 50, 53, 54, 93, 0,108, 97,110,103,117, 97,103,101, 91, 51, 50, 93, 0,115,101,108, + 95,115,116, 97,114,116, 0,115,101,108, 95,101,110,100, 0,102,105,108,116,101,114, 91, 54, 52, 93, 0,102,105,108,101,110, 97, +109,101, 91, 50, 53, 54, 93, 0, 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,100, 0,114, 95,116,111, 95,108, 0, +112,111,105,110,116,115, 0,107,101,114,110,105,110,103, 0,105,116, 97,108,105, 99, 0, 98,111,108,100, 0,115,104, 97,100,111, +119, 0,115,104, 97,100,120, 0,115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, 97, 0,115,104, 97,100,111,119, + 99,111,108,111,114, 0,112, 97,110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, 98,101,108, 0,119,105,100,103, +101,116,108, 97, 98,101,108, 0,119,105,100,103,101,116, 0,112, 97,110,101,108,122,111,111,109, 0,109,105,110,108, 97, 98,101, +108, 99,104, 97,114,115, 0,109,105,110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111,108,117,109,110,115,112, 97, 99, +101, 0,116,101,109,112,108, 97,116,101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, 0, 98,117,116,116,111,110,115, +112, 97, 99,101,120, 0, 98,117,116,116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108,115,112, 97, 99,101, 0,112, 97, +110,101,108,111,117,116,101,114, 0,112, 97,100, 91, 49, 93, 0,111,117,116,108,105,110,101, 91, 52, 93, 0,105,110,110,101,114, + 91, 52, 93, 0,105,110,110,101,114, 95,115,101,108, 91, 52, 93, 0,105,116,101,109, 91, 52, 93, 0,116,101,120,116, 91, 52, 93, + 0,116,101,120,116, 95,115,101,108, 91, 52, 93, 0,115,104, 97,100,101,100, 0,115,104, 97,100,101,116,111,112, 0,115,104, 97, +100,101,100,111,119,110, 0, 97,108,112,104, 97, 95, 99,104,101, 99,107, 0,105,110,110,101,114, 95, 97,110,105,109, 91, 52, 93, + 0,105,110,110,101,114, 95, 97,110,105,109, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 91, 52, 93, 0, +105,110,110,101,114, 95,107,101,121, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 91, 52, 93, + 0,105,110,110,101,114, 95,100,114,105,118,101,110, 95,115,101,108, 91, 52, 93, 0,119, 99,111,108, 95,114,101,103,117,108, 97, +114, 0,119, 99,111,108, 95,116,111,111,108, 0,119, 99,111,108, 95,116,101,120,116, 0,119, 99,111,108, 95,114, 97,100,105,111, + 0,119, 99,111,108, 95,111,112,116,105,111,110, 0,119, 99,111,108, 95,116,111,103,103,108,101, 0,119, 99,111,108, 95,110,117, +109, 0,119, 99,111,108, 95,110,117,109,115,108,105,100,101,114, 0,119, 99,111,108, 95,109,101,110,117, 0,119, 99,111,108, 95, +112,117,108,108,100,111,119,110, 0,119, 99,111,108, 95,109,101,110,117, 95, 98, 97, 99,107, 0,119, 99,111,108, 95,109,101,110, +117, 95,105,116,101,109, 0,119, 99,111,108, 95, 98,111,120, 0,119, 99,111,108, 95,115, 99,114,111,108,108, 0,119, 99,111,108, + 95,112,114,111,103,114,101,115,115, 0,119, 99,111,108, 95,108,105,115,116, 95,105,116,101,109, 0,119, 99,111,108, 95,115,116, + 97,116,101, 0,105, 99,111,110,102,105,108,101, 91, 56, 48, 93, 0, 98, 97, 99,107, 91, 52, 93, 0,116,105,116,108,101, 91, 52, + 93, 0,116,101,120,116, 95,104,105, 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,105, +116,108,101, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120, +116, 95,104,105, 91, 52, 93, 0, 98,117,116,116,111,110, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,105,116,108,101, 91, 52, + 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 95,104,105, 91, + 52, 93, 0,108,105,115,116, 91, 52, 93, 0,108,105,115,116, 95,116,105,116,108,101, 91, 52, 93, 0,108,105,115,116, 95,116,101, +120,116, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,112, 97,110,101,108, 91, 52, 93, 0,112, + 97,110,101,108, 95,116,105,116,108,101, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 91, 52, 93, 0,112, 97,110,101, +108, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93, 0,115,104, 97,100,101, 50, 91, 52, 93, + 0,104,105,108,105,116,101, 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,101, 91, 52, 93, 0,115,101,108,101, 99, +116, 91, 52, 93, 0,108, 97,109,112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, 52, 93, 0,103,114,111,117,112, 91, 52, 93, 0, +103,114,111,117,112, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,111,114,109, 91, 52, 93, 0,118,101,114, +116,101,120, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 91, 52, 93, 0, +101,100,103,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101, 97,109, 91, 52, 93, 0,101,100,103,101, + 95,115,104, 97,114,112, 91, 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, 93, 0,101,100,103,101, 95, 99, +114,101, 97,115,101, 91, 52, 93, 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0, +102, 97, 99,101, 95,100,111,116, 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0,118,101,114,116,101,120, 95,110,111,114, +109, 97,108, 91, 52, 93, 0, 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110,101, 95,112,111,115,101, 91, 52, + 93, 0,115,116,114,105,112, 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, 52, 93, 0, 99,102,114, 97,109, +101, 91, 52, 93, 0,110,117,114, 98, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,118,108,105,110,101, 91, 52, 93, + 0, 97, 99,116, 95,115,112,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95,117,108,105,110,101, 91, 52, 93, + 0,110,117,114, 98, 95,115,101,108, 95,118,108,105,110,101, 91, 52, 93, 0,108, 97,115,116,115,101,108, 95,112,111,105,110,116, + 91, 52, 93, 0,104, 97,110,100,108,101, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,117,116,111, 91, 52, + 93, 0,104, 97,110,100,108,101, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,108,105,103,110, 91, 52, 93, + 0,104, 97,110,100,108,101, 95,115,101,108, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97, +117,116,111, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, + 95,115,101,108, 95, 97,108,105,103,110, 91, 52, 93, 0,100,115, 95, 99,104, 97,110,110,101,108, 91, 52, 93, 0,100,115, 95,115, +117, 98, 99,104, 97,110,110,101,108, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,111,117,116,112,117,116, 91, 52, 93, 0, 99, +111,110,115,111,108,101, 95,105,110,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,102,111, 91, 52, 93, 0, + 99,111,110,115,111,108,101, 95,101,114,114,111,114, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95, 99,117,114,115,111,114, 91, + 52, 93, 0,118,101,114,116,101,120, 95,115,105,122,101, 0,102, 97, 99,101,100,111,116, 95,115,105,122,101, 0, 98,112, 97,100, + 91, 50, 93, 0,115,121,110,116, 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,120,110, 91, 52, 93, 0,115,121,110,116, 97,120, + 98, 91, 52, 93, 0,115,121,110,116, 97,120,118, 91, 52, 93, 0,115,121,110,116, 97,120, 99, 91, 52, 93, 0,109,111,118,105,101, + 91, 52, 93, 0,105,109, 97,103,101, 91, 52, 93, 0,115, 99,101,110,101, 91, 52, 93, 0, 97,117,100,105,111, 91, 52, 93, 0,101, +102,102,101, 99,116, 91, 52, 93, 0,112,108,117,103,105,110, 91, 52, 93, 0,116,114, 97,110,115,105,116,105,111,110, 91, 52, 93, + 0,109,101,116, 97, 91, 52, 93, 0,101,100,105,116,109,101,115,104, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,104, 97,110,100, +108,101, 95,118,101,114,116,101,120, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,101,108,101, 99, +116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,105,122,101, 0,104,112, 97,100, 91, 55, 93, 0, +112,114,101,118,105,101,119, 95, 98, 97, 99,107, 91, 52, 93, 0,115,111,108,105,100, 91, 52, 93, 0,116,117,105, 0,116, 98,117, +116,115, 0,116,118, 51,100, 0,116,102,105,108,101, 0,116,105,112,111, 0,116,105,110,102,111, 0,116,115,110,100, 0,116, 97, + 99,116, 0,116,110,108, 97, 0,116,115,101,113, 0,116,105,109, 97, 0,116,105,109, 97,115,101,108, 0,116,101,120,116, 0,116, +111,111,112,115, 0,116,116,105,109,101, 0,116,110,111,100,101, 0,116,108,111,103,105, 99, 0,116,117,115,101,114,112,114,101, +102, 0,116, 99,111,110,115,111,108,101, 0,116, 97,114,109, 91, 50, 48, 93, 0, 97, 99,116,105,118,101, 95,116,104,101,109,101, + 95, 97,114,101, 97, 0,109,111,100,117,108,101, 91, 54, 52, 93, 0,115,112,101, 99, 91, 52, 93, 0,100,117,112,102,108, 97,103, + 0,115, 97,118,101,116,105,109,101, 0,116,101,109,112,100,105,114, 91, 49, 54, 48, 93, 0,102,111,110,116,100,105,114, 91, 49, + 54, 48, 93, 0,114,101,110,100,101,114,100,105,114, 91, 49, 54, 48, 93, 0,116,101,120,116,117,100,105,114, 91, 49, 54, 48, 93, + 0,112,108,117,103,116,101,120,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,115,101,113,100,105,114, 91, 49, 54, 48, 93, + 0,112,121,116,104,111,110,100,105,114, 91, 49, 54, 48, 93, 0,115,111,117,110,100,100,105,114, 91, 49, 54, 48, 93, 0,105,109, + 97,103,101, 95,101,100,105,116,111,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 91, 50, 52, 48, 93, + 0, 97,110,105,109, 95,112,108, 97,121,101,114, 95,112,114,101,115,101,116, 0,118, 50,100, 95,109,105,110, 95,103,114,105,100, +115,105,122,101, 0,116,105,109,101, 99,111,100,101, 95,115,116,121,108,101, 0,118,101,114,115,105,111,110,115, 0,100, 98,108, + 95, 99,108,105, 99,107, 95,116,105,109,101, 0,103, 97,109,101,102,108, 97,103,115, 0,119,104,101,101,108,108,105,110,101,115, + 99,114,111,108,108, 0,117,105,102,108, 97,103, 0,108, 97,110,103,117, 97,103,101, 0,117,115,101,114,112,114,101,102, 0,118, +105,101,119,122,111,111,109, 0,109,105,120, 98,117,102,115,105,122,101, 0, 97,117,100,105,111,100,101,118,105, 99,101, 0, 97, +117,100,105,111,114, 97,116,101, 0, 97,117,100,105,111,102,111,114,109, 97,116, 0, 97,117,100,105,111, 99,104, 97,110,110,101, +108,115, 0,100,112,105, 0,101,110, 99,111,100,105,110,103, 0,116,114, 97,110,115,111,112,116,115, 0,109,101,110,117,116,104, +114,101,115,104,111,108,100, 49, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 50, 0,116,104,101,109,101,115, 0,117, +105,102,111,110,116,115, 0,117,105,115,116,121,108,101,115, 0,107,101,121,109, 97,112,115, 0, 97,100,100,111,110,115, 0,107, +101,121, 99,111,110,102,105,103,115,116,114, 91, 54, 52, 93, 0,117,110,100,111,115,116,101,112,115, 0,117,110,100,111,109,101, +109,111,114,121, 0,103,112, 95,109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103,112, 95,101,117, 99,108,105,100,101, + 97,110,100,105,115,116, 0,103,112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101,116,116,105,110,103,115, 0,116, 98, 95, +108,101,102,116,109,111,117,115,101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, 0,108,105,103,104,116, 91, 51, 93, + 0,116,119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108, 97,103, 0,116,119, 95,104, 97,110,100,108,101,115,105,122, +101, 0,116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101,111,117,116, 0,116,101,120, 99,111,108,108,101, 99,116,114, + 97,116,101, 0,119,109,100,114, 97,119,109,101,116,104,111,100, 0,109,101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112, +114,101,102,101,116, 99,104,102,114, 97,109,101,115, 0,102,114, 97,109,101,115,101,114,118,101,114,112,111,114,116, 0,112, 97, +100, 95,114,111,116, 95, 97,110,103,108,101, 0,111, 98, 99,101,110,116,101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, + 0,114,118,105, 98,114,105,103,104,116, 0,114,101, 99,101,110,116, 95,102,105,108,101,115, 0,115,109,111,111,116,104, 95,118, +105,101,119,116,120, 0,103,108,114,101,115,108,105,109,105,116, 0,110,100,111,102, 95,112, 97,110, 0,110,100,111,102, 95,114, +111,116, 97,116,101, 0, 99,117,114,115,115,105,122,101, 0, 99,111,108,111,114, 95,112,105, 99,107,101,114, 95,116,121,112,101, + 0,105,112,111, 95,110,101,119, 0,107,101,121,104, 97,110,100,108,101,115, 95,110,101,119, 0,115, 99,114, 99, 97,115,116,102, +112,115, 0,115, 99,114, 99, 97,115,116,119, 97,105,116, 0,112,114,111,112,119,105,100,116,104, 0,118,101,114,115,101,109, 97, +115,116,101,114, 91, 49, 54, 48, 93, 0,118,101,114,115,101,117,115,101,114, 91, 49, 54, 48, 93, 0,103,108, 97,108,112,104, 97, + 99,108,105,112, 0, 99,111, 98, 97, 95,119,101,105,103,104,116, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,111,118, +101,114,108, 97,121, 95, 99,111,108, 91, 51, 93, 0,118,101,114,116, 98, 97,115,101, 0,101,100,103,101, 98, 97,115,101, 0, 97, +114,101, 97, 98, 97,115,101, 0, 42,110,101,119,115, 99,101,110,101, 0,102,117,108,108, 0,119,105,110,105,100, 0,100,111, 95, +100,114, 97,119, 0,100,111, 95,114,101,102,114,101,115,104, 0,100,111, 95,100,114, 97,119, 95,103,101,115,116,117,114,101, 0, +100,111, 95,100,114, 97,119, 95,112, 97,105,110,116, 99,117,114,115,111,114, 0,100,111, 95,100,114, 97,119, 95,100,114, 97,103, + 0,115,119, 97,112, 0,109, 97,105,110,119,105,110, 0,115,117, 98,119,105,110, 97, 99,116,105,118,101, 0, 42, 97,110,105,109, +116,105,109,101,114, 0, 42, 99,111,110,116,101,120,116, 0,104, 97,110,100,108,101,114, 91, 56, 93, 0, 42,110,101,119,118, 0, +118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42,116,121,112,101, 0,112, 97,110,101,108,110, 97,109,101, 91, 54, 52, 93, 0, +116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, 97,119,110, 97,109,101, 91, 54, 52, 93, 0,111,102,115,120, 0,111,102, +115,121, 0,115,105,122,101,120, 0,115,105,122,101,121, 0,108, 97, 98,101,108,111,102,115, 0,114,117,110,116,105,109,101, 95, +102,108, 97,103, 0, 99,111,110,116,114,111,108, 0,115,110, 97,112, 0,115,111,114,116,111,114,100,101,114, 0, 42,112, 97,110, +101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101,100, 97,116, 97, 0,108,105,115,116, 95,115, 99,114,111,108,108, 0,108,105, +115,116, 95,115,105,122,101, 0,108,105,115,116, 95,108, 97,115,116, 95,108,101,110, 0,108,105,115,116, 95,103,114,105,112, 95, +115,105,122,101, 0,108,105,115,116, 95,115,101, 97,114, 99,104, 91, 54, 52, 93, 0, 42,118, 51, 0, 42,118, 52, 0, 42,102,117, +108,108, 0, 98,117,116,115,112, 97, 99,101,116,121,112,101, 0,104,101, 97,100,101,114,116,121,112,101, 0,115,112, 97, 99,101, +100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, 0, 97, 99,116,105,111,110,122,111,110,101,115, 0,119,105,110,114, 99,116, + 0,100,114, 97,119,114, 99,116, 0,115,119,105,110,105,100, 0,114,101,103,105,111,110,116,121,112,101, 0, 97,108,105,103,110, +109,101,110,116, 0,100,111, 95,100,114, 97,119, 95,111,118,101,114,108, 97,121, 0,117,105, 98,108,111, 99,107,115, 0,112, 97, +110,101,108,115, 0, 42,104,101, 97,100,101,114,115,116,114, 0, 42,114,101,103,105,111,110,100, 97,116, 97, 0,115,117, 98,118, +115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115,105,111,110, 0,112, 97,100,115, 0,109,105,110,118,101,114,115,105,111, +110, 0,109,105,110,115,117, 98,118,101,114,115,105,111,110, 0, 42, 99,117,114,115, 99,114,101,101,110, 0, 42, 99,117,114,115, + 99,101,110,101, 0,102,105,108,101,102,108, 97,103,115, 0,103,108,111, 98, 97,108,102, 0,102,105,108,101,110, 97,109,101, 91, + 50, 52, 48, 93, 0,110, 97,109,101, 91, 56, 48, 93, 0, 42,105, 98,117,102, 0, 42,105, 98,117,102, 95, 99,111,109,112, 0, 42, +115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0,110,114, 0, 98,111,116,116,111,109, 0,114,105,103,104,116, 0,120,111, +102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93, 0,103, 97,109,109, 97, 91, 51, 93, 0,103, 97,105,110, 91, 51, 93, + 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110,101, 0,115,116, 97,114,116,115,116,105,108,108, 0,101,110,100,115,116,105, +108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0,111,114,120, 0,111,114,121, 0, 42, 99,114,111,112, 0, 42,116,114, 97, +110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, 98, 97,108, 97,110, 99,101, 0, 42,116,115,116,114,105,112,100, 97,116, + 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42,116,115,116,114,105,112, +100, 97,116, 97, 95,101,110,100,115,116,105,108,108, 0, 42,105, 98,117,102, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42, +105, 98,117,102, 95,101,110,100,115,116,105,108,108, 0, 42,105,110,115,116, 97,110, 99,101, 95,112,114,105,118, 97,116,101, 95, +100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42,116,109,112, + 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111,102,115, 0,109, 97, 99,104,105,110,101, 0,115,116, 97,114,116,100,105, +115,112, 0,101,110,100,100,105,115,112, 0,115, 97,116, 0,109,117,108, 0,104, 97,110,100,115,105,122,101, 0, 97,110,105,109, + 95,112,114,101,115,101,101,107, 0, 42,115,116,114,105,112, 0, 42,115, 99,101,110,101, 95, 99, 97,109,101,114, 97, 0,101,102, +102,101, 99,116, 95,102, 97,100,101,114, 0,115,112,101,101,100, 95,102, 97,100,101,114, 0, 42,115,101,113, 49, 0, 42,115,101, +113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42,115,111,117,110,100, 0, 42,115, 99,101,110,101, 95,115, +111,117,110,100, 0,108,101,118,101,108, 0,112, 97,110, 0,115, 99,101,110,101,110,114, 0,109,117,108,116,105, 99, 97,109, 95, +115,111,117,114, 99,101, 0,115,116,114,111, 98,101, 0, 42,101,102,102,101, 99,116,100, 97,116, 97, 0, 97,110,105,109, 95,115, +116, 97,114,116,111,102,115, 0, 97,110,105,109, 95,101,110,100,111,102,115, 0, 98,108,101,110,100, 95,109,111,100,101, 0, 98, +108,101,110,100, 95,111,112, 97, 99,105,116,121, 0, 42,111,108,100, 98, 97,115,101,112, 0, 42,112, 97,114,115,101,113, 0, 42, +115,101,113, 98, 97,115,101,112, 0,109,101,116, 97,115,116, 97, 99,107, 0, 42, 97, 99,116, 95,115,101,113, 0, 97, 99,116, 95, +105,109, 97,103,101,100,105,114, 91, 50, 53, 54, 93, 0, 97, 99,116, 95,115,111,117,110,100,100,105,114, 91, 50, 53, 54, 93, 0, +111,118,101,114, 95,111,102,115, 0,111,118,101,114, 95, 99,102,114, 97, 0,111,118,101,114, 95,102,108, 97,103, 0,111,118,101, +114, 95, 98,111,114,100,101,114, 0,101,100,103,101, 87,105,100,116,104, 0,102,111,114,119, 97,114,100, 0,119,105,112,101,116, +121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109,112, 0,102, 66,111,111,115,116, 0,100, 68,105,115,116, 0,100, 81, +117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0, 83, 99, 97,108,101,120, 73,110,105, 0, 83, 99, 97,108,101,121, 73, +110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, 83, 99, 97,108,101,121, 70,105,110, 0,120, 73,110,105, 0,120, 70,105,110, + 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111,116, 73,110,105, 0,114,111,116, 70,105,110, 0,105,110,116,101,114,112,111, +108, 97,116,105,111,110, 0,117,110,105,102,111,114,109, 95,115, 99, 97,108,101, 0, 42,102,114, 97,109,101, 77, 97,112, 0,103, +108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115,116, 86, 97,108,105,100, 70,114, 97,109,101, 0, 98,117,116,116,121,112, +101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,116,111,116,112, 97,114,116, 0,110,111,114,109,102, 97, 99, 0,111, 98, +102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,120,102, 97, 99, 0,114, 97,110,100,108,105,102,101, 0,102,111,114, 99, +101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,109, 97,120,108,101,110, 0,100,101,102,118,101, 99, 91, 51, 93, 0,109, +117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, 0, 99,104,105,108,100, 91, 52, 93, 0,109, 97,116, 91, 52, 93, 0,116, +101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,115,116, 97,116,105, 99,115,116,101,112, 0,111,109, 97,116, 0,116,105, +109,101,116,101,120, 0,115,112,101,101,100,116,101,120, 0,102,108, 97,103, 50,110,101,103, 0,118,101,114,116,103,114,111,117, +112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, 91, 51, 50, 93, 0,118,103,114,111,117,112,110, 97,109,101, 95,118, 91, + 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102, 97, 99, 0,117,115,101,100, 0,117,115,101,100,101,108,101,109, 0, 42, +112,111,105,110, 0,114,101,115,101,116,100,105,115,116, 0,108, 97,115,116,118, 97,108, 0, 42,109, 97, 0,107,101,121, 0,113, +117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,101,116, 78, 97,109,101, 91, 51, 50, 93, 0,116,111,103,103,108,101, 78, + 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91, 51, 50, 93, 0,109, 97,120,118, 97,108,117,101, 91, 51, 50, 93, 0,100, +101,108, 97,121, 0,100,117,114, 97,116,105,111,110, 0,109, 97,116,101,114,105, 97,108, 78, 97,109,101, 91, 51, 50, 93, 0,100, + 97,109,112,116,105,109,101,114, 0,112,114,111,112,110, 97,109,101, 91, 51, 50, 93, 0,109, 97,116,110, 97,109,101, 91, 51, 50, + 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111,115,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0, 99,111,110,115,116, +114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114,111,109, 79, 98,106,101, 99,116, 0,115,117, 98,106,101, 99,116, 91, 51, 50, + 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116,121,112,101, 0,112,117,108,115,101, 0,102,114,101,113, 0,116,111,116,108, +105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,116, 97,112, 0,106,111,121,105,110,100,101,120, 0, 97,120,105,115, 95,115, +105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, 0,104, 97,116, 0,104, 97,116,102, 0,112,114,101, 99, +105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0, 42,109,121,110,101,119, 0,105,110,112,117,116,115, 0,116,111,116, +115,108,105,110,107,115, 0, 42, 42,115,108,105,110,107,115, 0,118, 97,108,111, 0,115,116, 97,116,101, 95,109, 97,115,107, 0, + 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111,112, 91, 51, 50, 93, 0, 98,108,101,110,100,105,110, 0,112,114,105,111,114, +105,116,121, 0,101,110,100, 95,114,101,115,101,116, 0,115,116,114,105,100,101, 97,120,105,115, 0,115,116,114,105,100,101,108, +101,110,103,116,104, 0,115,110,100,110,114, 0,112, 97,100, 51, 91, 50, 93, 0,112,105,116, 99,104, 0,115,111,117,110,100, 51, + 68, 0,112, 97,100, 54, 91, 49, 93, 0, 42,109,101, 0,108,105,110, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103, + 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108,102,108, 97,103, 0,100,121,110, 95,111,112,101,114, 97,116, +105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,102,111,114, 99,101,114,111,116, 91, 51, 93, 0,108,105,110,101, + 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103,117,108, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, + 0, 42,114,101,102,101,114,101,110, 99,101, 0,109,105,110, 0,109, 97,120, 0,114,111,116,100, 97,109,112, 0,109,105,110,108, +111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, 51, 93, 0,109,105,110,114,111,116, 91, 51, 93, 0,109, 97,120,114,111,116, + 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51, 50, 93, 0, 98,117,116,115,116, 97, 0, 98,117,116,101,110,100, 0,100,105, +115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, 97,114,103, 95, 49, 0,105,110,116, 95, 97,114,103, 95, 50, 0,102, +108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97,116, 95, 97,114,103, 95, 50, 0,116,111, 80,114,111,112, 78, 97,109, +101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, 99,116, 0, 98,111,100,121, 84,121,112,101, 0,102,105,108,101,110, 97,109, +101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97,109,101, 91, 54, 52, 93, 0,105,110,116, 95, 97,114,103, 0,102,108, +111, 97,116, 95, 97,114,103, 0, 42,115,117, 98,116, 97,114,103,101,116, 0,103,111, 0,109,105,110, 95,103, 97,105,110, 0,109, + 97,120, 95,103, 97,105,110, 0,114,101,102,101,114,101,110, 99,101, 95,100,105,115,116, 97,110, 99,101, 0,109, 97,120, 95,100, +105,115,116, 97,110, 99,101, 0,114,111,108,108,111,102,102, 95,102, 97, 99,116,111,114, 0, 99,111,110,101, 95,105,110,110,101, +114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117, +116,101,114, 95,103, 97,105,110, 0, 42,110,101,119,112, 97, 99,107,101,100,102,105,108,101, 0, 97,116,116,101,110,117, 97,116, +105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, 97, 99,104,101, 0, 42,112,108, 97,121, 98, 97, 99,107, 95,104, 97, +110,100,108,101, 0, 42, 97,114,101, 97, 0, 42,108, 97,109,112,114,101,110, 0,103,111, 98,106,101, 99,116, 0,100,117,112,108, +105, 95,111,102,115, 91, 51, 93, 0, 42,112,114,111,112, 0, 99,104,105,108,100, 98, 97,115,101, 0,114,111,108,108, 0,104,101, + 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98,111,110,101, 95,109, 97,116, 91, 51, 93, 91, 51, 93, 0, 97,114,109, + 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97,105,108, 91, 51, 93, 0, 97,114,109, 95,109, 97,116, 91, 52, 93, 91, + 52, 93, 0,120,119,105,100,116,104, 0,122,119,105,100,116,104, 0,101, 97,115,101, 49, 0,101, 97,115,101, 50, 0,114, 97,100, + 95,104,101, 97,100, 0,114, 97,100, 95,116, 97,105,108, 0, 98,111,110,101, 98, 97,115,101, 0, 99,104, 97,105,110, 98, 97,115, +101, 0, 42,101,100, 98,111, 0, 42, 97, 99,116, 95, 98,111,110,101, 0, 42, 97, 99,116, 95,101,100, 98,111,110,101, 0, 42,115, +107,101,116, 99,104, 0,108, 97,121,101,114, 95,112,114,111,116,101, 99,116,101,100, 0,103,104,111,115,116,101,112, 0,103,104, +111,115,116,115,105,122,101, 0,103,104,111,115,116,116,121,112,101, 0,112, 97,116,104,115,105,122,101, 0,103,104,111,115,116, +115,102, 0,103,104,111,115,116,101,102, 0,112, 97,116,104,115,102, 0,112, 97,116,104,101,102, 0,112, 97,116,104, 98, 99, 0, +112, 97,116,104, 97, 99, 0, 42,112,111,105,110,116,115, 0,115,116, 97,114,116, 95,102,114, 97,109,101, 0,101,110,100, 95,102, +114, 97,109,101, 0,103,104,111,115,116, 95,115,102, 0,103,104,111,115,116, 95,101,102, 0,103,104,111,115,116, 95, 98, 99, 0, +103,104,111,115,116, 95, 97, 99, 0,103,104,111,115,116, 95,116,121,112,101, 0,103,104,111,115,116, 95,115,116,101,112, 0,103, +104,111,115,116, 95,102,108, 97,103, 0,112, 97,116,104, 95,116,121,112,101, 0,112, 97,116,104, 95,115,116,101,112, 0,112, 97, +116,104, 95,118,105,101,119,102,108, 97,103, 0,112, 97,116,104, 95, 98, 97,107,101,102,108, 97,103, 0,112, 97,116,104, 95,115, +102, 0,112, 97,116,104, 95,101,102, 0,112, 97,116,104, 95, 98, 99, 0,112, 97,116,104, 95, 97, 99, 0, 99,111,110,115,116,102, +108, 97,103, 0,105,107,102,108, 97,103, 0,115,101,108,101, 99,116,102,108, 97,103, 0, 97,103,114,112, 95,105,110,100,101,120, + 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105,107,116,114,101,101, 0, 42, 98, 95, 98,111,110,101, 95,109, 97,116, +115, 0, 42,100,117, 97,108, 95,113,117, 97,116, 0, 42, 98, 95, 98,111,110,101, 95,100,117, 97,108, 95,113,117, 97,116,115, 0, +101,117,108, 91, 51, 93, 0, 99,104, 97,110, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,109, 97,116, 91, 52, + 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, 51, 93, 0,112,111,115,101, 95,116, 97,105,108, 91, 51, 93, 0,108, +105,109,105,116,109,105,110, 91, 51, 93, 0,108,105,109,105,116,109, 97,120, 91, 51, 93, 0,115,116,105,102,102,110,101,115,115, + 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, 0,105,107,114,111,116,119,101,105,103,104,116, 0,105,107,108,105,110,119, +101,105,103,104,116, 0, 42, 99,117,115,116,111,109, 0, 42, 99,117,115,116,111,109, 95,116,120, 0, 99,104, 97,110, 98, 97,115, +101, 0, 42, 99,104, 97,110,104, 97,115,104, 0,112,114,111,120,121, 95,108, 97,121,101,114, 0,115,116,114,105,100,101, 95,111, +102,102,115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, 95,111,102,102,115,101,116, 91, 51, 93, 0, 97,103,114,111,117,112, +115, 0, 97, 99,116,105,118,101, 95,103,114,111,117,112, 0,105,107,115,111,108,118,101,114, 0, 42,105,107,100, 97,116, 97, 0, + 42,105,107,112, 97,114, 97,109, 0,112,114,111,120,121, 95, 97, 99,116, 95, 98,111,110,101, 91, 51, 50, 93, 0,110,117,109,105, +116,101,114, 0,110,117,109,115,116,101,112, 0,109,105,110,115,116,101,112, 0,109, 97,120,115,116,101,112, 0,115,111,108,118, +101,114, 0,102,101,101,100, 98, 97, 99,107, 0,109, 97,120,118,101,108, 0,100, 97,109,112,109, 97,120, 0,100, 97,109,112,101, +112,115, 0, 99,104, 97,110,110,101,108,115, 0, 99,117,115,116,111,109, 67,111,108, 0, 99,115, 0, 99,117,114,118,101,115, 0, +103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,109, 97,114,107,101,114, 0, 42,115,111,117,114, 99,101, 0, 42,102,105, +108,116,101,114, 95,103,114,112, 0,102,105,108,116,101,114,102,108, 97,103, 0, 97,100,115, 0,116,105,109,101,115,108,105,100, +101, 0, 42,103,114,112, 0,116,101,109,112, 0,110, 97,109,101, 91, 51, 48, 93, 0,111,119,110,115,112, 97, 99,101, 0,116, 97, +114,115,112, 97, 99,101, 0,101,110,102,111,114, 99,101, 0,104,101, 97,100,116, 97,105,108, 0,108,105,110, 95,101,114,114,111, +114, 0,114,111,116, 95,101,114,114,111,114, 0, 42,116, 97,114, 0,109, 97,116,114,105,120, 91, 52, 93, 91, 52, 93, 0,115,112, + 97, 99,101, 0,114,111,116, 79,114,100,101,114, 0,116, 97,114,110,117,109, 0,116, 97,114,103,101,116,115, 0,105,116,101,114, + 97,116,105,111,110,115, 0,114,111,111,116, 98,111,110,101, 0,109, 97,120, 95,114,111,111,116, 98,111,110,101, 0, 42,112,111, +108,101,116, 97,114, 0,112,111,108,101,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112,111,108,101, 97,110,103,108, +101, 0,111,114,105,101,110,116,119,101,105,103,104,116, 0,103,114, 97, 98,116, 97,114,103,101,116, 91, 51, 93, 0,110,117,109, +112,111,105,110,116,115, 0, 99,104, 97,105,110,108,101,110, 0,120,122, 83, 99, 97,108,101, 77,111,100,101, 0,114,101,115,101, +114,118,101,100, 49, 0,114,101,115,101,114,118,101,100, 50, 0,109,105,110,109, 97,120,102,108, 97,103, 0,115,116,117, 99,107, + 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99,107,102,108, 97,103, 0,102,111,108,108,111,119,102,108, 97,103, 0,118,111, +108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103,108,101,110,103,116,104, 0, 98,117,108,103,101, 0,112,105,118, 88, + 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120, 88, 0, 97,120, 89, 0, 97,120, 90, 0,109,105,110, 76,105,109,105,116, 91, + 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54, 93, 0,101,120,116,114, 97, 70,122, 0,105,110,118,109, 97,116, 91, 52, 93, + 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109, 97,112, 91, 51, 93, 0,101,120,112,111, 0,102,114,111,109, 95,109,105,110, + 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91, 51, 93, 0,116,111, 95,109,105,110, 91, 51, 93, 0,116,111, 95,109, 97,120, + 91, 51, 93, 0,114,111,116, 65,120,105,115, 0,122,109,105,110, 0,122,109, 97,120, 0,112, 97,100, 91, 57, 93, 0, 99,104, 97, +110,110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, 95, 97,120,105,115, 0,115,116,114,105,100,101, 95, 97,120,105,115, + 0, 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114,116, 0, 97, 99,116,101,110,100, 0, 97, 99,116,111,102,102,115, 0, +115,116,114,105,100,101,108,101,110, 0,115, 99, 97,108,101, 0, 98,108,101,110,100,111,117,116, 0,115,116,114,105,100,101, 99, +104, 97,110,110,101,108, 91, 51, 50, 93, 0,111,102,102,115, 95, 98,111,110,101, 91, 51, 50, 93, 0,104, 97,115,105,110,112,117, +116, 0,104, 97,115,111,117,116,112,117,116, 0,100, 97,116, 97,116,121,112,101, 0,115,111, 99,107,101,116,116,121,112,101, 0, + 42,110,101,119, 95,115,111, 99,107, 0,110,115, 0,108,105,109,105,116, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 0,105, +110,116,101,114,110, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 95,101,120,116, 0,108,111, 99,120, 0,108,111, 99,121, 0, +111,119,110, 95,105,110,100,101,120, 0,116,111, 95,105,110,100,101,120, 0, 42,116,111,115,111, 99,107, 0, 42,108,105,110,107, + 0, 42,110,101,119, 95,110,111,100,101, 0,108, 97,115,116,121, 0,111,117,116,112,117,116,115, 0, 42,115,116,111,114, 97,103, +101, 0,109,105,110,105,119,105,100,116,104, 0, 99,117,115,116,111,109, 49, 0, 99,117,115,116,111,109, 50, 0, 99,117,115,116, +111,109, 51, 0, 99,117,115,116,111,109, 52, 0,110,101,101,100, 95,101,120,101, 99, 0,101,120,101, 99, 0, 42,116,104,114,101, + 97,100,100, 97,116, 97, 0,116,111,116,114, 0, 98,117,116,114, 0,112,114,118,114, 0, 42, 98,108,111, 99,107, 0, 42,116,121, +112,101,105,110,102,111, 0, 42,102,114,111,109,110,111,100,101, 0, 42,116,111,110,111,100,101, 0, 42,102,114,111,109,115,111, + 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0, 42,115,116, 97, 99,107, 0, 42,116,104,114,101, 97,100,115,116, 97, + 99,107, 0,105,110,105,116, 0,115,116, 97, 99,107,115,105,122,101, 0, 99,117,114, 95,105,110,100,101,120, 0, 97,108,108,116, +121,112,101,115, 0, 42,111,119,110,116,121,112,101, 0,112, 97,100, 50, 91, 50, 93, 0, 40, 42,112,114,111,103,114,101,115,115, + 41, 40, 41, 0, 40, 42,115,116, 97,116,115, 95,100,114, 97,119, 41, 40, 41, 0, 40, 42,116,101,115,116, 95, 98,114,101, 97,107, + 41, 40, 41, 0, 42,116, 98,104, 0, 42,112,114,104, 0, 42,115,100,104, 0, 99,121, 99,108,105, 99, 0,109,111,118,105,101, 0, +115, 97,109,112,108,101,115, 0,109, 97,120,115,112,101,101,100, 0,109,105,110,115,112,101,101,100, 0,112,101,114, 99,101,110, +116,120, 0,112,101,114, 99,101,110,116,121, 0, 98,111,107,101,104, 0,103, 97,109,109, 97, 0, 99,117,114,118,101,100, 0,105, +109, 97,103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109, 97,103,101, 95,105,110, 95,104,101,105,103,104,116, 0, 99,101, +110,116,101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,115,112,105,110, 0,119,114, 97,112, 0,115,105,103,109, 97, 95, + 99,111,108,111,114, 0,115,105,103,109, 97, 95,115,112, 97, 99,101, 0,104,117,101, 0,116, 49, 0,116, 50, 0,116, 51, 0,102, +115,116,114,101,110,103,116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, 91, 52, 93, 0, 97,108,103,111,114,105,116,104,109, + 0, 99,104, 97,110,110,101,108, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, 0, 99,111,108,110, 97,109,101, 91, 51, 50, 93, + 0, 98,107,116,121,112,101, 0,114,111,116, 97,116,105,111,110, 0,103, 97,109, 99,111, 0,110,111, 95,122, 98,117,102, 0,102, +115,116,111,112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, 0, 42,100,105, 99,116, 0, 42,110,111,100,101, + 0, 97,110,103,108,101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105,120, 0,116,104,114,101,115,104,111,108,100, 0, +102, 97,100,101, 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105,116, 0,115,108,111,112,101, 91, 51, 93, 0,112, +111,119,101,114, 91, 51, 93, 0,108,105,102,116, 95,108,103,103, 91, 51, 93, 0,108,105,109, 99,104, 97,110, 0,117,110,115,112, +105,108,108, 0,108,105,109,115, 99, 97,108,101, 0,117,115,112,105,108,108,114, 0,117,115,112,105,108,108,103, 0,117,115,112, +105,108,108, 98, 0,115,104,111,114,116,121, 0,109,105,110,116, 97, 98,108,101, 0,109, 97,120,116, 97, 98,108,101, 0,101,120, +116, 95,105,110, 91, 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, 42, 99,117,114,118,101, 0, 42,116, 97, 98,108,101, + 0, 42,112,114,101,109,117,108,116, 97, 98,108,101, 0,112,114,101,115,101,116, 0, 99,104, 97,110,103,101,100, 95,116,105,109, +101,115,116, 97,109,112, 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, + 0,119,104,105,116,101, 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, 93, 0,120, 95,114, +101,115,111,108,117,116,105,111,110, 0,100, 97,116, 97, 95,114, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,103, 91, 50, 53, 54, + 93, 0,100, 97,116, 97, 95, 98, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,108,117,109, 97, 91, 50, 53, 54, 93, 0,115, 97,109, +112,108,101, 95,102,117,108,108, 0,115, 97,109,112,108,101, 95,108,105,110,101,115, 0, 97, 99, 99,117,114, 97, 99,121, 0,119, + 97,118,101,102,114,109, 95,109,111,100,101, 0,119, 97,118,101,102,114,109, 95, 97,108,112,104, 97, 0,119, 97,118,101,102,114, +109, 95,121,102, 97, 99, 0,119, 97,118,101,102,114,109, 95,104,101,105,103,104,116, 0,118,101, 99,115, 99,111,112,101, 95, 97, +108,112,104, 97, 0,118,101, 99,115, 99,111,112,101, 95,104,101,105,103,104,116, 0,109,105,110,109, 97,120, 91, 51, 93, 91, 50, + 93, 0,104,105,115,116, 0, 42,119, 97,118,101,102,111,114,109, 95, 49, 0, 42,119, 97,118,101,102,111,114,109, 95, 50, 0, 42, +119, 97,118,101,102,111,114,109, 95, 51, 0, 42,118,101, 99,115, 99,111,112,101, 0,119, 97,118,101,102,111,114,109, 95,116,111, +116, 0,111,102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,109,116,101,120, 0, 42,105, 99,111,110, 95,105,109, 98, +117,102, 0,105, 99,111,110, 0,112, 97,100, 50, 91, 55, 93, 0,105, 99,111,110, 95,102,105,108,101,112, 97,116,104, 91, 50, 52, + 48, 93, 0,110,111,114,109, 97,108, 95,119,101,105,103,104,116, 0,106,105,116,116,101,114, 0,115,109,111,111,116,104, 95,115, +116,114,111,107,101, 95,114, 97,100,105,117,115, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,102, 97, 99,116,111, +114, 0,114, 97,116,101, 0,114,103, 98, 91, 51, 93, 0,115, 99,117,108,112,116, 95,112,108, 97,110,101, 0,112,108, 97,110,101, + 95,111,102,102,115,101,116, 0,115, 99,117,108,112,116, 95,116,111,111,108, 0,118,101,114,116,101,120,112, 97,105,110,116, 95, +116,111,111,108, 0,105,109, 97,103,101,112, 97,105,110,116, 95,116,111,111,108, 0, 97,117,116,111,115,109,111,111,116,104, 95, +102, 97, 99,116,111,114, 0, 99,114,101, 97,115,101, 95,112,105,110, 99,104, 95,102, 97, 99,116,111,114, 0,112,108, 97,110,101, + 95,116,114,105,109, 0,116,101,120,116,117,114,101, 95,115, 97,109,112,108,101, 95, 98,105, 97,115, 0,116,101,120,116,117,114, +101, 95,111,118,101,114,108, 97,121, 95, 97,108,112,104, 97, 0,117,110,112,114,111,106,101, 99,116,101,100, 95,114, 97,100,105, +117,115, 0, 97,100,100, 95, 99,111,108, 91, 51, 93, 0,115,117, 98, 95, 99,111,108, 91, 51, 93, 0, 97, 99,116,105,118,101, 95, +114,110,100, 0, 97, 99,116,105,118,101, 95, 99,108,111,110,101, 0, 97, 99,116,105,118,101, 95,109, 97,115,107, 0, 42,108, 97, +121,101,114,115, 0,116,111,116,108, 97,121,101,114, 0,109, 97,120,108, 97,121,101,114, 0,116,111,116,115,105,122,101, 0, 42, +112,111,111,108, 0, 42,101,120,116,101,114,110, 97,108, 0,118,101,108, 91, 51, 93, 0,114,111,116, 91, 52, 93, 0, 97,118,101, + 91, 51, 93, 0, 42,103,114,111,117,110,100, 0,119, 97,110,100,101,114, 91, 51, 93, 0,110,117,109, 0,112, 97,114,101,110,116, + 0,112, 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0,102,111,102,102,115,101,116, 0,114,116, 91, 50, 93, + 0,112,114,101,118, 95,115,116, 97,116,101, 0, 42,104, 97,105,114, 0, 42, 98,111,105,100, 0,100,105,101,116,105,109,101, 0, +110,117,109, 95,100,109, 99, 97, 99,104,101, 0,104, 97,105,114, 95,105,110,100,101,120, 0, 97,108,105,118,101, 0,115,112,114, +105,110,103, 95,107, 0,114,101,115,116, 95,108,101,110,103,116,104, 0,118,105,115, 99,111,115,105,116,121, 95,111,109,101,103, + 97, 0,118,105,115, 99,111,115,105,116,121, 95, 98,101,116, 97, 0,115,116,105,102,102,110,101,115,115, 95,107, 0,115,116,105, +102,102,110,101,115,115, 95,107,110,101, 97,114, 0,114,101,115,116, 95,100,101,110,115,105,116,121, 0, 98,117,111,121, 97,110, + 99,121, 0, 42, 98,111,105,100,115, 0, 42,102,108,117,105,100, 0,100,105,115,116,114, 0,112,104,121,115,116,121,112,101, 0, + 97,118,101,109,111,100,101, 0,114,101, 97, 99,116,101,118,101,110,116, 0,100,114, 97,119, 0,100,114, 97,119, 95, 97,115, 0, +100,114, 97,119, 95,115,105,122,101, 0, 99,104,105,108,100,116,121,112,101, 0,114,101,110, 95, 97,115, 0,115,117, 98,102,114, + 97,109,101,115, 0,114,101,110, 95,115,116,101,112, 0,104, 97,105,114, 95,115,116,101,112, 0,107,101,121,115, 95,115,116,101, +112, 0, 97,100, 97,112,116, 95, 97,110,103,108,101, 0, 97,100, 97,112,116, 95,112,105,120, 0,114,111,116,102,114,111,109, 0, +105,110,116,101,103,114, 97,116,111,114, 0, 98, 98, 95, 97,108,105,103,110, 0, 98, 98, 95,117,118, 95,115,112,108,105,116, 0, + 98, 98, 95, 97,110,105,109, 0, 98, 98, 95,115,112,108,105,116, 95,111,102,102,115,101,116, 0, 98, 98, 95,116,105,108,116, 0, + 98, 98, 95,114, 97,110,100, 95,116,105,108,116, 0, 98, 98, 95,111,102,102,115,101,116, 91, 50, 93, 0,115,105,109,112,108,105, +102,121, 95,114,101,102,115,105,122,101, 0,115,105,109,112,108,105,102,121, 95,114, 97,116,101, 0,115,105,109,112,108,105,102, +121, 95,116,114, 97,110,115,105,116,105,111,110, 0,115,105,109,112,108,105,102,121, 95,118,105,101,119,112,111,114,116, 0,116, +105,109,101,116,119,101, 97,107, 0,106,105,116,102, 97, 99, 0,101,102,102, 95,104, 97,105,114, 0,103,114,105,100, 95,114,101, +115, 0,112, 97,114,116,102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116, 97,110,112,104, 97,115,101, 0,114,101, 97, 99,116,102, + 97, 99, 0,111, 98, 95,118,101,108, 91, 51, 93, 0, 97,118,101,102, 97, 99, 0,112,104, 97,115,101,102, 97, 99, 0,114, 97,110, +100,114,111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,115,105,122,101, 0,114,101, + 97, 99,116,115,104, 97,112,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97,103,102, 97, 99, 0, 98,114,111,119,110,102, 97, 99, + 0,100, 97,109,112,102, 97, 99, 0,114, 97,110,100,108,101,110,103,116,104, 0, 99,104,105,108,100, 95,110, 98,114, 0,114,101, +110, 95, 99,104,105,108,100, 95,110, 98,114, 0,112, 97,114,101,110,116,115, 0, 99,104,105,108,100,115,105,122,101, 0, 99,104, +105,108,100,114, 97,110,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,100, 0, 99,104,105,108,100,102,108, 97,116, 0, 99, +108,117,109,112,112,111,119, 0,114,111,117,103,104, 49, 0,114,111,117,103,104, 49, 95,115,105,122,101, 0,114,111,117,103,104, + 50, 0,114,111,117,103,104, 50, 95,115,105,122,101, 0,114,111,117,103,104, 50, 95,116,104,114,101,115, 0,114,111,117,103,104, + 95,101,110,100, 0,114,111,117,103,104, 95,101,110,100, 95,115,104, 97,112,101, 0, 99,108,101,110,103,116,104, 0, 99,108,101, +110,103,116,104, 95,116,104,114,101,115, 0, 98,114, 97,110, 99,104, 95,116,104,114,101,115, 0,100,114, 97,119, 95,108,105,110, +101, 91, 50, 93, 0,112, 97,116,104, 95,115,116, 97,114,116, 0,112, 97,116,104, 95,101,110,100, 0,116,114, 97,105,108, 95, 99, +111,117,110,116, 0,107,101,121,101,100, 95,108,111,111,112,115, 0,100,117,112,108,105,119,101,105,103,104,116,115, 0, 42,101, +102,102, 95,103,114,111,117,112, 0, 42,100,117,112, 95,111, 98, 0, 42, 98, 98, 95,111, 98, 0, 42,112,100, 50, 0, 42,112, 97, +114,116, 0, 42,112, 97,114,116,105, 99,108,101,115, 0, 42, 42,112, 97,116,104, 99, 97, 99,104,101, 0, 42, 42, 99,104,105,108, +100, 99, 97, 99,104,101, 0,112, 97,116,104, 99, 97, 99,104,101, 98,117,102,115, 0, 99,104,105,108,100, 99, 97, 99,104,101, 98, +117,102,115, 0, 42, 99,108,109,100, 0, 42,104, 97,105,114, 95,105,110, 95,100,109, 0, 42,104, 97,105,114, 95,111,117,116, 95, +100,109, 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42,108, 97,116,116,105, 99,101, 0,116,114,101,101, 95,102,114, 97,109, +101, 0,116,111,116, 99,104,105,108,100, 0,116,111,116, 99, 97, 99,104,101,100, 0,116,111,116, 99,104,105,108,100, 99, 97, 99, +104,101, 0,116, 97,114,103,101,116, 95,112,115,121,115, 0,116,111,116,107,101,121,101,100, 0, 98, 97,107,101,115,112, 97, 99, +101, 0, 98, 98, 95,117,118,110, 97,109,101, 91, 51, 93, 91, 51, 50, 93, 0,118,103,114,111,117,112, 91, 49, 50, 93, 0,118,103, + 95,110,101,103, 0,114,116, 51, 0, 42,114,101,110,100,101,114,100, 97,116, 97, 0, 42,101,102,102,101, 99,116,111,114,115, 0, + 42,116,114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97,110,100, 0, 67,100,105,115, 0, 67,118,105, 0,115,116,114,117, 99, +116,117,114, 97,108, 0, 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98,101,110,100, 0,109, 97,120, 95,115,116,114,117, 99, +116, 0,109, 97,120, 95,115,104,101, 97,114, 0, 97,118,103, 95,115,112,114,105,110,103, 95,108,101,110, 0,116,105,109,101,115, + 99, 97,108,101, 0,101,102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108,101, 0,101,102,102, 95,119,105,110,100, 95,115, 99, + 97,108,101, 0,115,105,109, 95,116,105,109,101, 95,111,108,100, 0,118,101,108,111, 99,105,116,121, 95,115,109,111,111,116,104, + 0, 99,111,108,108,105,100,101,114, 95,102,114,105, 99,116,105,111,110, 0,115,116,101,112,115, 80,101,114, 70,114, 97,109,101, + 0,112,114,101,114,111,108,108, 0,109, 97,120,115,112,114,105,110,103,108,101,110, 0,115,111,108,118,101,114, 95,116,121,112, +101, 0,118,103,114,111,117,112, 95, 98,101,110,100, 0,118,103,114,111,117,112, 95,109, 97,115,115, 0,118,103,114,111,117,112, + 95,115,116,114,117, 99,116, 0,115,104, 97,112,101,107,101,121, 95,114,101,115,116, 0,112,114,101,115,101,116,115, 0,114,101, +115,101,116, 0, 42, 99,111,108,108,105,115,105,111,110, 95,108,105,115,116, 0,101,112,115,105,108,111,110, 0,115,101,108,102, + 95,102,114,105, 99,116,105,111,110, 0,115,101,108,102,101,112,115,105,108,111,110, 0,115,101,108,102, 95,108,111,111,112, 95, + 99,111,117,110,116, 0,108,111,111,112, 95, 99,111,117,110,116, 0,112,114,101,115,115,117,114,101, 0,116,104,105, 99,107,110, +101,115,115, 0,115,116,114,111,107,101,115, 0,102,114, 97,109,101,110,117,109, 0, 42, 97, 99,116,102,114, 97,109,101, 0,103, +115,116,101,112, 0,105,110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102,101,114, 95,115,105,122,101, 0,115, 98,117,102, +102,101,114, 95,115,102,108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, 42,116,121,112,101,115,116,114, 0, 42,109,101,115, +115, 97,103,101, 0,108,105,115,116, 0,112,114,105,110,116,108,101,118,101,108, 0,115,116,111,114,101,108,101,118,101,108, 0, + 42,114,101,112,111,114,116,116,105,109,101,114, 0,103,114,101,121,115, 99, 97,108,101, 0,119,105,100,116,104,102, 97, 99, 0, + 42,119,105,110,100,114, 97,119, 97, 98,108,101, 0, 42,119,105,110, 97, 99,116,105,118,101, 0,119,105,110,100,111,119,115, 0, +105,110,105,116,105, 97,108,105,122,101,100, 0,102,105,108,101, 95,115, 97,118,101,100, 0,111,112, 95,117,110,100,111, 95,100, +101,112,116,104, 0,111,112,101,114, 97,116,111,114,115, 0,113,117,101,117,101, 0,114,101,112,111,114,116,115, 0,106,111, 98, +115, 0,112, 97,105,110,116, 99,117,114,115,111,114,115, 0,100,114, 97,103,115, 0,107,101,121, 99,111,110,102,105,103,115, 0, + 42,100,101,102, 97,117,108,116, 99,111,110,102, 0,116,105,109,101,114,115, 0, 42, 97,117,116,111,115, 97,118,101,116,105,109, +101,114, 0, 42,103,104,111,115,116,119,105,110, 0,103,114, 97, 98, 99,117,114,115,111,114, 0, 42,110,101,119,115, 99,114,101, +101,110, 0,115, 99,114,101,101,110,110, 97,109,101, 91, 51, 50, 93, 0,112,111,115,120, 0,112,111,115,121, 0,119,105,110,100, +111,119,115,116, 97,116,101, 0,109,111,110,105,116,111,114, 0,108, 97,115,116, 99,117,114,115,111,114, 0, 97,100,100,109,111, +117,115,101,109,111,118,101, 0, 42,101,118,101,110,116,115,116, 97,116,101, 0, 42, 99,117,114,115,119,105,110, 0, 42,116,119, +101, 97,107, 0,100,114, 97,119,109,101,116,104,111,100, 0,100,114, 97,119,102, 97,105,108, 0, 42,100,114, 97,119,100, 97,116, + 97, 0,109,111,100, 97,108,104, 97,110,100,108,101,114,115, 0,115,117, 98,119,105,110,100,111,119,115, 0,103,101,115,116,117, +114,101, 0,105,100,110, 97,109,101, 91, 54, 52, 93, 0,112,114,111,112,118, 97,108,117,101, 0,115,104,105,102,116, 0, 99,116, +114,108, 0, 97,108,116, 0,111,115,107,101,121, 0,107,101,121,109,111,100,105,102,105,101,114, 0,109, 97,112,116,121,112,101, + 0, 42,112,116,114, 0,105,116,101,109,115, 0,115,112, 97, 99,101,105,100, 0,114,101,103,105,111,110,105,100, 0,107,109,105, + 95,105,100, 0, 40, 42,112,111,108,108, 41, 40, 41, 0, 42,109,111,100, 97,108, 95,105,116,101,109,115, 0, 98, 97,115,101,110, + 97,109,101, 91, 54, 52, 93, 0, 97, 99,116,107,101,121,109, 97,112, 0, 42, 99,117,115,116,111,109,100, 97,116, 97, 0, 42,112, +121, 95,105,110,115,116, 97,110, 99,101, 0, 42,114,101,112,111,114,116,115, 0,109, 97, 99,114,111, 0, 42,111,112,109, 0, 42, +101,100, 97,116, 97, 0,105,110,102,108,117,101,110, 99,101, 0, 42, 99,111,101,102,102,105, 99,105,101,110,116,115, 0, 97,114, +114, 97,121,115,105,122,101, 0,112,111,108,121, 95,111,114,100,101,114, 0, 97,109,112,108,105,116,117,100,101, 0,112,104, 97, +115,101, 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, 97,115,101, 95,111,102,102,115,101,116, 0,118, 97,108,117,101, + 95,111,102,102,115,101,116, 0,109,105,100,118, 97,108, 0, 98,101,102,111,114,101, 95,109,111,100,101, 0, 97,102,116,101,114, + 95,109,111,100,101, 0, 98,101,102,111,114,101, 95, 99,121, 99,108,101,115, 0, 97,102,116,101,114, 95, 99,121, 99,108,101,115, + 0,114,101, 99,116, 0,112,104, 97,115,101, 0,109,111,100,105,102,105, 99, 97,116,105,111,110, 0,115,116,101,112, 95,115,105, +122,101, 0, 42,114,110, 97, 95,112, 97,116,104, 0,112, 99,104, 97,110, 95,110, 97,109,101, 91, 51, 50, 93, 0,116,114, 97,110, +115, 67,104, 97,110, 0,105,100,116,121,112,101, 0,116, 97,114,103,101,116,115, 91, 56, 93, 0,110,117,109, 95,116, 97,114,103, +101,116,115, 0,118, 97,114,105, 97, 98,108,101,115, 0,101,120,112,114,101,115,115,105,111,110, 91, 50, 53, 54, 93, 0, 42,101, +120,112,114, 95, 99,111,109,112, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, 0, 97,114,114, 97,121, 95,105,110,100,101,120, + 0, 99,111,108,111,114, 95,109,111,100,101, 0, 99,111,108,111,114, 91, 51, 93, 0,102,114,111,109, 91, 49, 50, 56, 93, 0,116, +111, 91, 49, 50, 56, 93, 0,109, 97,112,112,105,110,103,115, 0,115,116,114,105,112,115, 0, 42,114,101,109, 97,112, 0,102, 99, +117,114,118,101,115, 0,115,116,114,105,112, 95,116,105,109,101, 0, 98,108,101,110,100,109,111,100,101, 0,101,120,116,101,110, +100,109,111,100,101, 0,103,114,111,117,112, 91, 54, 52, 93, 0,103,114,111,117,112,109,111,100,101, 0,107,101,121,105,110,103, +102,108, 97,103, 0,112, 97,116,104,115, 0,116,121,112,101,105,110,102,111, 91, 54, 52, 93, 0, 97, 99,116,105,118,101, 95,112, + 97,116,104, 0, 42,116,109,112, 97, 99,116, 0,110,108, 97, 95,116,114, 97, 99,107,115, 0, 42, 97, 99,116,115,116,114,105,112, + 0,100,114,105,118,101,114,115, 0,111,118,101,114,114,105,100,101,115, 0, 97, 99,116, 95, 98,108,101,110,100,109,111,100,101, + 0, 97, 99,116, 95,101,120,116,101,110,100,109,111,100,101, 0, 97, 99,116, 95,105,110,102,108,117,101,110, 99,101, 0,114,117, +108,101, 0,111,112,116,105,111,110,115, 0,102,101, 97,114, 95,102, 97, 99,116,111,114, 0,115,105,103,110, 97,108, 95,105,100, + 0,108,111,111,107, 95, 97,104,101, 97,100, 0,111,108,111, 99, 91, 51, 93, 0,113,117,101,117,101, 95,115,105,122,101, 0,119, + 97,110,100,101,114, 0,102,108,101,101, 95,100,105,115,116, 97,110, 99,101, 0,104,101, 97,108,116,104, 0,115,116, 97,116,101, + 95,105,100, 0,114,117,108,101,115, 0, 99,111,110,100,105,116,105,111,110,115, 0, 97, 99,116,105,111,110,115, 0,114,117,108, +101,115,101,116, 95,116,121,112,101, 0,114,117,108,101, 95,102,117,122,122,105,110,101,115,115, 0,108, 97,115,116, 95,115,116, + 97,116,101, 95,105,100, 0,108, 97,110,100,105,110,103, 95,115,109,111,111,116,104,110,101,115,115, 0, 98, 97,110,107,105,110, +103, 0, 97,103,103,114,101,115,115,105,111,110, 0, 97,105,114, 95,109,105,110, 95,115,112,101,101,100, 0, 97,105,114, 95,109, + 97,120, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, 99, 0, 97,105,114, 95,109, 97,120, 95, 97,118,101, + 0, 97,105,114, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,106,117,109,112, 95,115,112, +101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95, 97, 99, 99, 0, +108, 97,110,100, 95,109, 97,120, 95, 97,118,101, 0,108, 97,110,100, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, + 0,108, 97,110,100, 95,115,116,105, 99,107, 95,102,111,114, 99,101, 0,115,116, 97,116,101,115, 0, 42,115,109,100, 0, 42,102, +108,117,105,100, 95,103,114,111,117,112, 0, 42, 99,111,108,108, 95,103,114,111,117,112, 0, 42,119,116, 0, 42,116,101,120, 95, +119,116, 0, 42,116,101,120, 95,115,104, 97,100,111,119, 0, 42,115,104, 97,100,111,119, 0,112, 48, 91, 51, 93, 0,112, 49, 91, + 51, 93, 0,100,120, 0,111,109,101,103, 97, 0,116,101,109,112, 65,109, 98, 0, 98,101,116, 97, 0,114,101,115, 91, 51, 93, 0, + 97,109,112,108,105,102,121, 0,109, 97,120,114,101,115, 0,118,105,101,119,115,101,116,116,105,110,103,115, 0,110,111,105,115, +101, 0,100,105,115,115, 95,112,101,114, 99,101,110,116, 0,100,105,115,115, 95,115,112,101,101,100, 0,114,101,115, 95,119,116, + 91, 51, 93, 0,100,120, 95,119,116, 0,118, 51,100,110,117,109, 0, 99, 97, 99,104,101, 95, 99,111,109,112, 0, 99, 97, 99,104, +101, 95,104,105,103,104, 95, 99,111,109,112, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 91, 50, 93, 0,112,116, 99, 97, + 99,104,101,115, 91, 50, 93, 0,118,101,108,111, 99,105,116,121, 91, 51, 93, 0,118,103,114,112, 95,104,101, 97,116, 95,115, 99, + 97,108,101, 91, 50, 93, 0,118,103,114,111,117,112, 95,102,108,111,119, 0,118,103,114,111,117,112, 95,100,101,110,115,105,116, +121, 0,118,103,114,111,117,112, 95,104,101, 97,116, 0, 42,112,111,105,110,116,115, 95,111,108,100, 0, 42,118,101,108, 0,109, + 97,116, 95,111,108,100, 91, 52, 93, 91, 52, 93, 0, 0, 0, 0, 84, 89, 80, 69,211, 1, 0, 0, 99,104, 97,114, 0,117, 99,104, + 97,114, 0,115,104,111,114,116, 0,117,115,104,111,114,116, 0,105,110,116, 0,108,111,110,103, 0,117,108,111,110,103, 0,102, +108,111, 97,116, 0,100,111,117, 98,108,101, 0,118,111,105,100, 0, 76,105,110,107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76, +105,115,116, 66, 97,115,101, 0,118,101, 99, 50,115, 0,118,101, 99, 50,102, 0,118,101, 99, 50,105, 0,118,101, 99, 50,100, 0, +118,101, 99, 51,105, 0,118,101, 99, 51,102, 0,118,101, 99, 51,100, 0,118,101, 99, 52,105, 0,118,101, 99, 52,102, 0,118,101, + 99, 52,100, 0,114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, 80,114,111,112,101,114,116,121, 68, 97,116, 97, 0, 73, 68, 80, +114,111,112,101,114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70,105,108,101, 68, 97,116, 97, 0, 80,114,101,118, +105,101,119, 73,109, 97,103,101, 0, 73,112,111, 68,114,105,118,101,114, 0, 79, 98,106,101, 99,116, 0, 73,112,111, 67,117,114, +118,101, 0, 66, 80,111,105,110,116, 0, 66,101,122, 84,114,105,112,108,101, 0, 73,112,111, 0, 75,101,121, 66,108,111, 99,107, + 0, 75,101,121, 0, 65,110,105,109, 68, 97,116, 97, 0, 84,101,120,116, 76,105,110,101, 0, 84,101,120,116, 77, 97,114,107,101, +114, 0, 84,101,120,116, 0, 80, 97, 99,107,101,100, 70,105,108,101, 0, 67, 97,109,101,114, 97, 0, 73,109, 97,103,101, 85,115, +101,114, 0, 83, 99,101,110,101, 0, 73,109, 97,103,101, 0, 71, 80, 85, 84,101,120,116,117,114,101, 0, 97,110,105,109, 0, 82, +101,110,100,101,114, 82,101,115,117,108,116, 0, 77, 84,101,120, 0, 84,101,120, 0, 80,108,117,103,105,110, 84,101,120, 0, 67, + 66, 68, 97,116, 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, 69,110,118, 77, 97,112, 0, 73,109, 66,117,102, 0, 80,111,105, +110,116, 68,101,110,115,105,116,121, 0, 86,111,120,101,108, 68, 97,116, 97, 0, 98, 78,111,100,101, 84,114,101,101, 0, 84,101, +120, 77, 97,112,112,105,110,103, 0, 76, 97,109,112, 0, 67,117,114,118,101, 77, 97,112,112,105,110,103, 0, 87, 97,118,101, 0, + 86,111,108,117,109,101, 83,101,116,116,105,110,103,115, 0, 77, 97,116,101,114,105, 97,108, 0, 71,114,111,117,112, 0, 86, 70, +111,110,116, 0, 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108,101,109, 0, 66,111,117,110,100, 66,111,120, 0, + 77,101,116, 97, 66, 97,108,108, 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110,102,111, 0, 84,101,120,116, 66,111,120, 0, 67, +117,114,118,101, 0, 80, 97,116,104, 0, 83,101,108, 66,111,120, 0, 69,100,105,116, 70,111,110,116, 0, 77,101,115,104, 0, 77, + 70, 97, 99,101, 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86,101,114,116, 0, 77, 69,100,103,101, 0, 77, 68, +101,102,111,114,109, 86,101,114,116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99,107,121, 0, 77, 83,101,108,101, 99,116, 0, 69, +100,105,116, 77,101,115,104, 0, 67,117,115,116,111,109, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 0, 80, 97,114,116, +105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 0, 77, 68,101,102,111,114,109, 87,101,105,103,104,116, 0, 77, 84,101,120, + 80,111,108,121, 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111,111,112, 67,111,108, 0, 77, 70,108,111, 97,116, 80,114,111,112, +101,114,116,121, 0, 77, 73,110,116, 80,114,111,112,101,114,116,121, 0, 77, 83,116,114,105,110,103, 80,114,111,112,101,114,116, +121, 0, 79,114,105,103, 83,112, 97, 99,101, 70, 97, 99,101, 0, 77, 68,105,115,112,115, 0, 77,117,108,116,105,114,101,115, 67, +111,108, 0, 77,117,108,116,105,114,101,115, 67,111,108, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 70, 97, 99,101, 0, + 77,117,108,116,105,114,101,115, 69,100,103,101, 0, 77,117,108,116,105,114,101,115, 76,101,118,101,108, 0, 77,111,100,105,102, +105,101,114, 68, 97,116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116, +105, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,114,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, + 97, 0, 66,117,105,108,100, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 97,115,107, 77,111,100,105,102,105,101,114, + 68, 97,116, 97, 0, 65,114,114, 97,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,105,114,114,111,114, 77,111,100, +105,102,105,101,114, 68, 97,116, 97, 0, 69,100,103,101, 83,112,108,105,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, + 66,101,118,101,108, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 77,101,115,104, 77,111,100,105,102,105,101,114, 68, + 97,116, 97, 0, 83,109,111,107,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 68,111,109, 97,105, +110, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 70,108,111,119, 83,101,116,116,105,110,103,115, 0, 83,109,111,107, +101, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 68,105,115,112,108, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97, +116, 97, 0, 85, 86, 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101, 99,105,109, 97,116, +101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, + 0, 67, 97,115,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87, 97,118,101, 77,111,100,105,102,105,101,114, 68, 97, +116, 97, 0, 65,114,109, 97,116,117,114,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 72,111,111,107, 77,111,100,105, +102,105,101,114, 68, 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108, +111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 0, 67,108,111,116,104, 83,105,109, 83,101, +116,116,105,110,103,115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 80,111,105,110,116, 67, 97, + 99,104,101, 0, 67,111,108,108,105,115,105,111,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 86, 72, 84,114,101, +101, 0, 83,117,114,102, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101,114,105,118,101,100, 77,101,115, +104, 0, 66, 86, 72, 84,114,101,101, 70,114,111,109, 77,101,115,104, 0, 66,111,111,108,101, 97,110, 77,111,100,105,102,105,101, +114, 68, 97,116, 97, 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101, 0, 77, 68,101,102, 67,101,108,108, 0, 77,101,115, +104, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116, +101,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 0, 80, 97, +114,116,105, 99,108,101, 73,110,115,116, 97,110, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,120,112,108,111, +100,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 77,111,100,105,102,105,101,114, 68, + 97,116, 97, 0, 70,108,117,105,100,115,105,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105, +109, 83,101,116,116,105,110,103,115, 0, 83,104,114,105,110,107,119,114, 97,112, 77,111,100,105,102,105,101,114, 68, 97,116, 97, + 0, 83,105,109,112,108,101, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,104, 97,112,101, 75, +101,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,108,105,100,105,102,121, 77,111,100,105,102,105,101,114, 68, + 97,116, 97, 0, 83, 99,114,101,119, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 0, 98, 68, +101,102,111,114,109, 71,114,111,117,112, 0, 83, 99,117,108,112,116, 83,101,115,115,105,111,110, 0, 98, 65, 99,116,105,111,110, + 0, 98, 80,111,115,101, 0, 98, 71, 80,100, 97,116, 97, 0, 98, 65,110,105,109, 86,105,122, 83,101,116,116,105,110,103,115, 0, + 98, 77,111,116,105,111,110, 80, 97,116,104, 0, 66,117,108,108,101,116, 83,111,102,116, 66,111,100,121, 0, 80, 97,114,116, 68, +101,102,108,101, 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 79, 98, 72,111,111,107, 0, 68,117,112,108,105, 79, 98,106,101, + 99,116, 0, 82, 78, 71, 0, 69,102,102,101, 99,116,111,114, 87,101,105,103,104,116,115, 0, 80, 84, 67, 97, 99,104,101, 77,101, +109, 0, 80, 84, 67, 97, 99,104,101, 69,100,105,116, 0, 83, 66, 86,101,114,116,101,120, 0, 66,111,100,121, 80,111,105,110,116, + 0, 66,111,100,121, 83,112,114,105,110,103, 0, 83, 66, 83, 99,114, 97,116, 99,104, 0, 87,111,114,108,100, 0, 66, 97,115,101, + 0, 65,118,105, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 68, 97,116, 97, + 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 83,101,116,116,105,110,103,115, 0, 70, 70, 77,112,101,103, 67,111, +100,101, 99, 68, 97,116, 97, 0, 65,117,100,105,111, 68, 97,116, 97, 0, 83, 99,101,110,101, 82,101,110,100,101,114, 76, 97,121, +101,114, 0, 82,101,110,100,101,114, 68, 97,116, 97, 0, 82,101,110,100,101,114, 80,114,111,102,105,108,101, 0, 71, 97,109,101, + 68,111,109,101, 0, 71, 97,109,101, 70,114, 97,109,105,110,103, 0, 71, 97,109,101, 68, 97,116, 97, 0, 84,105,109,101, 77, 97, +114,107,101,114, 0, 80, 97,105,110,116, 0, 66,114,117,115,104, 0, 73,109, 97,103,101, 80, 97,105,110,116, 83,101,116,116,105, +110,103,115, 0, 80, 97,114,116,105, 99,108,101, 66,114,117,115,104, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 69,100, +105,116, 83,101,116,116,105,110,103,115, 0, 84,114, 97,110,115,102,111,114,109, 79,114,105,101,110,116, 97,116,105,111,110, 0, + 83, 99,117,108,112,116, 0, 86, 80, 97,105,110,116, 0, 84,111,111,108, 83,101,116,116,105,110,103,115, 0, 98, 83,116, 97,116, +115, 0, 85,110,105,116, 83,101,116,116,105,110,103,115, 0, 80,104,121,115,105, 99,115, 83,101,116,116,105,110,103,115, 0, 69, +100,105,116,105,110,103, 0, 83, 99,101,110,101, 83,116, 97,116,115, 0, 68, 97,103, 70,111,114,101,115,116, 0, 66, 71,112,105, + 99, 0, 82,101,103,105,111,110, 86,105,101,119, 51, 68, 0, 82,101,110,100,101,114, 73,110,102,111, 0, 82,101,116,111,112,111, + 86,105,101,119, 68, 97,116, 97, 0, 86,105,101,119, 68,101,112,116,104,115, 0, 83,109,111,111,116,104, 86,105,101,119, 83,116, +111,114,101, 0,119,109, 84,105,109,101,114, 0, 86,105,101,119, 51, 68, 0, 83,112, 97, 99,101, 76,105,110,107, 0, 86,105,101, +119, 50, 68, 0, 83,112, 97, 99,101, 73,110,102,111, 0, 98, 83, 99,114,101,101,110, 0, 83,112, 97, 99,101, 73,112,111, 0, 98, + 68,111,112,101, 83,104,101,101,116, 0, 83,112, 97, 99,101, 66,117,116,115, 0, 83,112, 97, 99,101, 83,101,113, 0, 70,105,108, +101, 83,101,108,101, 99,116, 80, 97,114, 97,109,115, 0, 83,112, 97, 99,101, 70,105,108,101, 0, 70,105,108,101, 76,105,115,116, + 0,119,109, 79,112,101,114, 97,116,111,114, 0, 70,105,108,101, 76, 97,121,111,117,116, 0, 83,112, 97, 99,101, 79,111,112,115, + 0, 84,114,101,101, 83,116,111,114,101, 0, 84,114,101,101, 83,116,111,114,101, 69,108,101,109, 0, 83,112, 97, 99,101, 73,109, + 97,103,101, 0, 83, 99,111,112,101,115, 0, 72,105,115,116,111,103,114, 97,109, 0, 83,112, 97, 99,101, 78,108, 97, 0, 83,112, + 97, 99,101, 84,101,120,116, 0, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, + 84,105,109,101, 67, 97, 99,104,101, 0, 83,112, 97, 99,101, 84,105,109,101, 0, 83,112, 97, 99,101, 78,111,100,101, 0, 83,112, + 97, 99,101, 76,111,103,105, 99, 0, 83,112, 97, 99,101, 73,109, 97, 83,101,108, 0, 67,111,110,115,111,108,101, 76,105,110,101, + 0, 83,112, 97, 99,101, 67,111,110,115,111,108,101, 0, 83,112, 97, 99,101, 85,115,101,114, 80,114,101,102, 0,117,105, 70,111, +110,116, 0,117,105, 70,111,110,116, 83,116,121,108,101, 0,117,105, 83,116,121,108,101, 0,117,105, 87,105,100,103,101,116, 67, +111,108,111,114,115, 0,117,105, 87,105,100,103,101,116, 83,116, 97,116,101, 67,111,108,111,114,115, 0, 84,104,101,109,101, 85, + 73, 0, 84,104,101,109,101, 83,112, 97, 99,101, 0, 84,104,101,109,101, 87,105,114,101, 67,111,108,111,114, 0, 98, 84,104,101, +109,101, 0, 98, 65,100,100,111,110, 0, 83,111,108,105,100, 76,105,103,104,116, 0, 85,115,101,114, 68,101,102, 0, 83, 99,114, + 86,101,114,116, 0, 83, 99,114, 69,100,103,101, 0, 80, 97,110,101,108, 0, 80, 97,110,101,108, 84,121,112,101, 0,117,105, 76, + 97,121,111,117,116, 0, 83, 99,114, 65,114,101, 97, 0, 83,112, 97, 99,101, 84,121,112,101, 0, 65, 82,101,103,105,111,110, 0, + 65, 82,101,103,105,111,110, 84,121,112,101, 0, 70,105,108,101, 71,108,111, 98, 97,108, 0, 83,116,114,105,112, 69,108,101,109, + 0, 84, 83,116,114,105,112, 69,108,101,109, 0, 83,116,114,105,112, 67,114,111,112, 0, 83,116,114,105,112, 84,114, 97,110,115, +102,111,114,109, 0, 83,116,114,105,112, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 83,116,114,105,112, 80,114,111,120, +121, 0, 83,116,114,105,112, 0, 80,108,117,103,105,110, 83,101,113, 0, 83,101,113,117,101,110, 99,101, 0, 98, 83,111,117,110, +100, 0, 77,101,116, 97, 83,116, 97, 99,107, 0, 87,105,112,101, 86, 97,114,115, 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, + 97,110,115,102,111,114,109, 86, 97,114,115, 0, 83,111,108,105,100, 67,111,108,111,114, 86, 97,114,115, 0, 83,112,101,101,100, + 67,111,110,116,114,111,108, 86, 97,114,115, 0, 69,102,102,101, 99,116, 0, 66,117,105,108,100, 69,102,102, 0, 80, 97,114,116, + 69,102,102, 0, 80, 97,114,116,105, 99,108,101, 0, 87, 97,118,101, 69,102,102, 0, 98, 80,114,111,112,101,114,116,121, 0, 98, + 78,101, 97,114, 83,101,110,115,111,114, 0, 98, 77,111,117,115,101, 83,101,110,115,111,114, 0, 98, 84,111,117, 99,104, 83,101, +110,115,111,114, 0, 98, 75,101,121, 98,111, 97,114,100, 83,101,110,115,111,114, 0, 98, 80,114,111,112,101,114,116,121, 83,101, +110,115,111,114, 0, 98, 65, 99,116,117, 97,116,111,114, 83,101,110,115,111,114, 0, 98, 68,101,108, 97,121, 83,101,110,115,111, +114, 0, 98, 67,111,108,108,105,115,105,111,110, 83,101,110,115,111,114, 0, 98, 82, 97,100, 97,114, 83,101,110,115,111,114, 0, + 98, 82, 97,110,100,111,109, 83,101,110,115,111,114, 0, 98, 82, 97,121, 83,101,110,115,111,114, 0, 98, 65,114,109, 97,116,117, +114,101, 83,101,110,115,111,114, 0, 98, 77,101,115,115, 97,103,101, 83,101,110,115,111,114, 0, 98, 83,101,110,115,111,114, 0, + 98, 67,111,110,116,114,111,108,108,101,114, 0, 98, 74,111,121,115,116,105, 99,107, 83,101,110,115,111,114, 0, 98, 69,120,112, +114,101,115,115,105,111,110, 67,111,110,116, 0, 98, 80,121,116,104,111,110, 67,111,110,116, 0, 98, 65, 99,116,117, 97,116,111, +114, 0, 98, 65,100,100, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 65, 99,116,105,111,110, 65, 99,116,117, + 97,116,111,114, 0, 98, 83,111,117,110,100, 65, 99,116,117, 97,116,111,114, 0, 83,111,117,110,100, 51, 68, 0, 98, 69,100,105, +116, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83, 99,101,110,101, 65, 99,116,117, 97,116,111,114, 0, 98, + 80,114,111,112,101,114,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, + 0, 98, 73,112,111, 65, 99,116,117, 97,116,111,114, 0, 98, 67, 97,109,101,114, 97, 65, 99,116,117, 97,116,111,114, 0, 98, 67, +111,110,115,116,114, 97,105,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 71,114,111,117,112, 65, 99,116,117, 97,116,111,114, + 0, 98, 82, 97,110,100,111,109, 65, 99,116,117, 97,116,111,114, 0, 98, 77,101,115,115, 97,103,101, 65, 99,116,117, 97,116,111, +114, 0, 98, 71, 97,109,101, 65, 99,116,117, 97,116,111,114, 0, 98, 86,105,115,105, 98,105,108,105,116,121, 65, 99,116,117, 97, +116,111,114, 0, 98, 84,119,111, 68, 70,105,108,116,101,114, 65, 99,116,117, 97,116,111,114, 0, 98, 80, 97,114,101,110,116, 65, + 99,116,117, 97,116,111,114, 0, 98, 83,116, 97,116,101, 65, 99,116,117, 97,116,111,114, 0, 98, 65,114,109, 97,116,117,114,101, + 65, 99,116,117, 97,116,111,114, 0, 83,112, 97, 99,101, 83,111,117,110,100, 0, 71,114,111,117,112, 79, 98,106,101, 99,116, 0, + 66,111,110,101, 0, 98, 65,114,109, 97,116,117,114,101, 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 86,101,114,116, 0, 98, + 80,111,115,101, 67,104, 97,110,110,101,108, 0, 71, 72, 97,115,104, 0, 98, 73, 75, 80, 97,114, 97,109, 0, 98, 73,116, 97,115, + 99, 0, 98, 65, 99,116,105,111,110, 71,114,111,117,112, 0, 83,112, 97, 99,101, 65, 99,116,105,111,110, 0, 98, 65, 99,116,105, +111,110, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108, 0, 98, 67,111, +110,115,116,114, 97,105,110,116, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 84, 97,114,103,101,116, 0, 98, 80,121,116,104, +111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 75,105,110,101,109, 97,116,105, 99, 67,111,110,115,116,114, 97,105,110, +116, 0, 98, 83,112,108,105,110,101, 73, 75, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97, 99,107, 84,111, 67,111, +110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, + 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,107,101, 67,111, +110,115,116,114, 97,105,110,116, 0, 98, 83, 97,109,101, 86,111,108,117,109,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, + 84,114, 97,110,115, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 77,105,110, 77, 97,120, 67,111,110,115,116, +114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99,107, 84,114, 97, + 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68, 97,109,112, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110, +116, 0, 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,116,114,101,116, 99,104, + 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,105,103,105,100, 66,111,100,121, 74,111,105,110,116, 67,111,110,115, +116,114, 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,104,105,108,100, + 79,102, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115,102,111,114,109, 67,111,110,115,116,114, 97,105,110, +116, 0, 98, 80,105,118,111,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 76,105,109,105,116, 67,111,110,115, +116,114, 97,105,110,116, 0, 98, 82,111,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, + 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68,105,115,116, 76,105,109,105,116, 67,111,110,115,116,114, + 97,105,110,116, 0, 98, 83,104,114,105,110,107,119,114, 97,112, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105, +111,110, 77,111,100,105,102,105,101,114, 0, 98, 65, 99,116,105,111,110, 83,116,114,105,112, 0, 98, 78,111,100,101, 83,116, 97, + 99,107, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 0, 98, 78,111,100,101, 76,105,110,107, 0, 98, 78,111,100,101, 0, 98, + 78,111,100,101, 80,114,101,118,105,101,119, 0,117,105, 66,108,111, 99,107, 0, 98, 78,111,100,101, 84,121,112,101, 0, 78,111, +100,101, 73,109, 97,103,101, 65,110,105,109, 0, 78,111,100,101, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 68, 66,108, +117,114, 68, 97,116, 97, 0, 78,111,100,101, 66,105,108, 97,116,101,114, 97,108, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100, +101, 72,117,101, 83, 97,116, 0, 78,111,100,101, 73,109, 97,103,101, 70,105,108,101, 0, 78,111,100,101, 67,104,114,111,109, 97, + 0, 78,111,100,101, 84,119,111, 88, 89,115, 0, 78,111,100,101, 84,119,111, 70,108,111, 97,116,115, 0, 78,111,100,101, 71,101, +111,109,101,116,114,121, 0, 78,111,100,101, 86,101,114,116,101,120, 67,111,108, 0, 78,111,100,101, 68,101,102,111, 99,117,115, + 0, 78,111,100,101, 83, 99,114,105,112,116, 68,105, 99,116, 0, 78,111,100,101, 71,108, 97,114,101, 0, 78,111,100,101, 84,111, +110,101,109, 97,112, 0, 78,111,100,101, 76,101,110,115, 68,105,115,116, 0, 78,111,100,101, 67,111,108,111,114, 66, 97,108, 97, +110, 99,101, 0, 78,111,100,101, 67,111,108,111,114,115,112,105,108,108, 0, 84,101,120, 78,111,100,101, 79,117,116,112,117,116, + 0, 67,117,114,118,101, 77, 97,112, 80,111,105,110,116, 0, 67,117,114,118,101, 77, 97,112, 0, 66,114,117,115,104, 67,108,111, +110,101, 0, 67,117,115,116,111,109, 68, 97,116, 97, 76, 97,121,101,114, 0, 67,117,115,116,111,109, 68, 97,116, 97, 69,120,116, +101,114,110, 97,108, 0, 72, 97,105,114, 75,101,121, 0, 80, 97,114,116,105, 99,108,101, 75,101,121, 0, 66,111,105,100, 80, 97, +114,116,105, 99,108,101, 0, 66,111,105,100, 68, 97,116, 97, 0, 67,104,105,108,100, 80, 97,114,116,105, 99,108,101, 0, 80, 97, +114,116,105, 99,108,101, 84, 97,114,103,101,116, 0, 80, 97,114,116,105, 99,108,101, 68,117,112,108,105, 87,101,105,103,104,116, + 0, 80, 97,114,116,105, 99,108,101, 68, 97,116, 97, 0, 83, 80, 72, 70,108,117,105,100, 83,101,116,116,105,110,103,115, 0, 80, + 97,114,116,105, 99,108,101, 83,101,116,116,105,110,103,115, 0, 66,111,105,100, 83,101,116,116,105,110,103,115, 0, 80, 97,114, +116,105, 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 75, 68, 84,114,101,101, 0, 80, 97,114,116,105, 99,108,101, 68,114, 97, +119, 68, 97,116, 97, 0, 76,105,110,107, 78,111,100,101, 0, 98, 71, 80, 68,115,112,111,105,110,116, 0, 98, 71, 80, 68,115,116, +114,111,107,101, 0, 98, 71, 80, 68,102,114, 97,109,101, 0, 98, 71, 80, 68,108, 97,121,101,114, 0, 82,101,112,111,114,116, 0, + 82,101,112,111,114,116, 76,105,115,116, 0, 82,101,112,111,114,116, 84,105,109,101,114, 73,110,102,111, 0,119,109, 87,105,110, +100,111,119, 77, 97,110, 97,103,101,114, 0,119,109, 87,105,110,100,111,119, 0,119,109, 75,101,121, 67,111,110,102,105,103, 0, +119,109, 69,118,101,110,116, 0,119,109, 83,117, 98, 87,105,110,100,111,119, 0,119,109, 71,101,115,116,117,114,101, 0,119,109, + 75,101,121, 77, 97,112, 73,116,101,109, 0, 80,111,105,110,116,101,114, 82, 78, 65, 0,119,109, 75,101,121, 77, 97,112, 0,119, +109, 79,112,101,114, 97,116,111,114, 84,121,112,101, 0, 70, 77,111,100,105,102,105,101,114, 0, 70, 77,111,100, 95, 71,101,110, +101,114, 97,116,111,114, 0, 70, 77,111,100, 95, 70,117,110, 99,116,105,111,110, 71,101,110,101,114, 97,116,111,114, 0, 70, 67, + 77, 95, 69,110,118,101,108,111,112,101, 68, 97,116, 97, 0, 70, 77,111,100, 95, 69,110,118,101,108,111,112,101, 0, 70, 77,111, +100, 95, 67,121, 99,108,101,115, 0, 70, 77,111,100, 95, 80,121,116,104,111,110, 0, 70, 77,111,100, 95, 76,105,109,105,116,115, + 0, 70, 77,111,100, 95, 78,111,105,115,101, 0, 70, 77,111,100, 95, 83,116,101,112,112,101,100, 0, 68,114,105,118,101,114, 84, + 97,114,103,101,116, 0, 68,114,105,118,101,114, 86, 97,114, 0, 67,104, 97,110,110,101,108, 68,114,105,118,101,114, 0, 70, 80, +111,105,110,116, 0, 70, 67,117,114,118,101, 0, 65,110,105,109, 77, 97,112, 80, 97,105,114, 0, 65,110,105,109, 77, 97,112,112, +101,114, 0, 78,108, 97, 83,116,114,105,112, 0, 78,108, 97, 84,114, 97, 99,107, 0, 75, 83, 95, 80, 97,116,104, 0, 75,101,121, +105,110,103, 83,101,116, 0, 65,110,105,109, 79,118,101,114,114,105,100,101, 0, 73,100, 65,100,116, 84,101,109,112,108, 97,116, +101, 0, 66,111,105,100, 82,117,108,101, 0, 66,111,105,100, 82,117,108,101, 71,111, 97,108, 65,118,111,105,100, 0, 66,111,105, +100, 82,117,108,101, 65,118,111,105,100, 67,111,108,108,105,115,105,111,110, 0, 66,111,105,100, 82,117,108,101, 70,111,108,108, +111,119, 76,101, 97,100,101,114, 0, 66,111,105,100, 82,117,108,101, 65,118,101,114, 97,103,101, 83,112,101,101,100, 0, 66,111, +105,100, 82,117,108,101, 70,105,103,104,116, 0, 66,111,105,100, 83,116, 97,116,101, 0, 70, 76, 85, 73, 68, 95, 51, 68, 0, 87, + 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 0, 0, 84, 76, 69, 78, 1, 0, 1, 0, 2, 0, 2, 0, 4, 0, 4, 0, 4, 0, 4, 0, + 8, 0, 0, 0, 8, 0, 12, 0, 8, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, 12, 0, 24, 0, 16, 0, 16, 0, 32, 0, 16, 0, + 16, 0, 20, 0, 76, 0, 52, 0, 40, 2, 0, 0, 32, 0,140, 0,220, 3, 92, 0, 36, 0, 56, 0, 84, 0,112, 0,124, 0, 56, 0, + 24, 0, 40, 0,120, 0, 12, 0,104, 0, 36, 0,120, 5,156, 1, 0, 0, 0, 0, 0, 0, 8, 1, 48, 1, 84, 1, 24, 0, 8, 3, +168, 0, 0, 0, 72, 0, 32, 1,152, 0,132, 0,108, 1, 16, 1, 56, 0, 88, 0,160, 2, 76, 0, 60, 1, 0, 0,108, 0,104, 0, +148, 0, 56, 0, 8, 0, 16, 0, 92, 1, 0, 0, 0, 0, 0, 0, 40, 1, 20, 0, 44, 0, 60, 0, 24, 0, 12, 0, 12, 0, 4, 0, + 8, 0, 8, 0, 0, 0, 28, 0, 84, 0, 32, 0, 8, 0, 12, 0, 8, 0, 8, 0, 4, 0, 4, 0, 0, 1, 32, 0, 12, 0, 16, 0, + 64, 0, 24, 0, 12, 0, 40, 0, 64, 0, 80, 0,100, 0,108, 0, 80, 0,108, 0,128, 0, 76, 0, 72, 0,120, 0, 72, 0, 84, 0, +188, 0, 48, 0,168, 0,160, 0,172, 0, 72, 0,104, 0,116, 0,196, 0,112, 0,224, 0, 64, 0, 92, 0, 0, 0,144, 0, 32, 0, +240, 1,112, 0, 0, 0, 88, 0, 0, 0, 0, 0, 76, 0, 8, 0, 8, 0,244, 0, 88, 0,124, 1, 84, 0, 76, 0, 72, 0, 72, 0, +176, 1,120, 0,116, 0, 64, 0,120, 0, 92, 0,220, 0, 40, 0, 0, 0, 92, 0,148, 0, 72, 0, 48, 0, 20, 0,120, 0,144, 0, + 88, 1,208, 0,180, 0, 0, 0, 68, 0, 92, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,112, 1, 28, 0,176, 0,144, 0, 64, 0, + 60, 0, 24, 0, 72, 0,232, 3, 56, 0, 20, 0, 16, 0,100, 0, 84, 0, 24, 0,196, 2, 44, 0, 16, 0,156, 0, 80, 0, 96, 0, + 44, 0,160, 1, 32, 0, 8, 0, 24, 0, 56, 2, 0, 0, 0, 0, 72, 0, 72, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 0, + 40, 0,140, 0, 48, 0,140, 0,208, 0, 24, 0,216, 0,216, 0,200, 1, 60, 0, 0, 0,120, 0, 0, 0,252, 0, 12, 0, 12, 0, + 24, 33,112, 16, 24, 16,192, 0,124, 2, 80, 2, 40, 0, 36, 0,188, 0,244, 0, 52, 0,140, 2, 28, 0,112, 1, 88, 0, 16, 1, + 32, 0,224, 0, 32, 0, 32, 0,112, 2,104, 1, 16, 0, 48, 29, 72, 0, 56, 0,240, 12, 20, 0, 24, 0, 64, 1, 0, 0, 0, 0, + 96, 0, 0, 0,248, 0, 0, 0, 16, 1, 80, 0, 28, 0, 16, 0, 8, 0, 44, 0,252, 0,240, 0,168, 1,216, 0, 92, 1, 16, 0, + 12, 0, 24, 0, 52, 0, 16, 0, 20, 0, 16, 0, 24, 0, 56, 1, 0, 0, 56, 0, 52, 0, 48, 0, 8, 0, 44, 0, 72, 0,104, 0, + 40, 0, 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 72, 0, 68, 0, 76, 0, 80, 0, 60, 0,128, 0, 76, 0, 60, 0, 12, 0, 92, 0, + 68, 0, 32, 0, 80, 0, 16, 0, 76, 0,108, 0, 84, 0, 28, 0, 96, 0, 56, 0, 56, 0,108, 0,140, 0, 4, 0, 20, 0, 12, 0, + 8, 0, 80, 0,188, 0, 24, 0, 16, 1,144, 0, 16, 0,204, 1, 0, 0, 4, 0, 40, 0,104, 0,216, 0, 64, 0, 44, 0, 72, 0, +116, 0, 60, 0,112, 0, 16, 0, 52, 0, 44, 0, 44, 0, 44, 0, 8, 0, 36, 0, 68, 0, 64, 0, 44, 0, 44, 0, 20, 0, 52, 0, + 96, 0, 12, 0,108, 0, 92, 0, 52, 0, 28, 0, 28, 0, 28, 0, 52, 0, 20, 0, 60, 0,140, 0, 36, 0,120, 0, 32, 0,180, 0, + 0, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, 44, 0, 8, 0, 8, 0, 64, 0, 32, 0, 24, 0, 8, 0, + 24, 0, 32, 0, 8, 0, 84, 0, 20, 0, 32, 0, 12, 0, 44, 0, 20, 0, 68, 0,240, 0, 24, 0, 56, 0, 52, 0, 20, 0, 64, 0, + 28, 0, 20, 0,180, 0, 36, 0,200, 1, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 20, 0, 24, 0,172, 0, 24, 0, 28, 0, + 20, 0,168, 0,148, 0,152, 0, 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 96, 0, 0, 0, 88, 0, 20, 0, 24, 0, 16, 0, 20, 0, + 8, 0, 8, 0, 24, 0, 20, 0, 20, 0, 48, 0,208, 1, 28, 1, 16, 0, 68, 0, 0, 1, 20, 0,160, 0, 88, 0, 96, 0,152, 0, + 20, 0, 56, 0, 48, 0, 68, 0, 56, 0, 92, 0, 64, 0, 56, 0, 96, 0, 0, 0, 0, 0, 0, 0, 83, 84, 82, 67,152, 1, 0, 0, + 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0, 11, 0, 1, 0, 9, 0, 2, 0, 12, 0, 2, 0, + 9, 0, 3, 0, 9, 0, 4, 0, 13, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0, 14, 0, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0, + 15, 0, 2, 0, 4, 0, 5, 0, 4, 0, 6, 0, 16, 0, 2, 0, 8, 0, 5, 0, 8, 0, 6, 0, 17, 0, 3, 0, 4, 0, 5, 0, + 4, 0, 6, 0, 4, 0, 7, 0, 18, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 19, 0, 3, 0, 8, 0, 5, 0, + 8, 0, 6, 0, 8, 0, 7, 0, 20, 0, 4, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 4, 0, 8, 0, 21, 0, 4, 0, + 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 8, 0, 22, 0, 4, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, + 8, 0, 8, 0, 23, 0, 4, 0, 4, 0, 9, 0, 4, 0, 10, 0, 4, 0, 11, 0, 4, 0, 12, 0, 24, 0, 4, 0, 7, 0, 9, 0, + 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 25, 0, 4, 0, 9, 0, 13, 0, 12, 0, 14, 0, 4, 0, 15, 0, 4, 0, 16, 0, + 26, 0, 10, 0, 26, 0, 0, 0, 26, 0, 1, 0, 0, 0, 17, 0, 0, 0, 18, 0, 2, 0, 19, 0, 0, 0, 20, 0, 4, 0, 21, 0, + 25, 0, 22, 0, 4, 0, 23, 0, 4, 0, 24, 0, 27, 0, 9, 0, 9, 0, 0, 0, 9, 0, 1, 0, 27, 0, 25, 0, 28, 0, 26, 0, + 0, 0, 27, 0, 2, 0, 28, 0, 2, 0, 19, 0, 4, 0, 29, 0, 26, 0, 30, 0, 28, 0, 8, 0, 27, 0, 31, 0, 27, 0, 32, 0, + 29, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 4, 0, 36, 0, 4, 0, 37, 0, 28, 0, 38, 0, 30, 0, 5, 0, 4, 0, 39, 0, + 4, 0, 40, 0, 2, 0, 41, 0, 2, 0, 42, 0, 4, 0, 43, 0, 31, 0, 6, 0, 32, 0, 44, 0, 2, 0, 45, 0, 2, 0, 46, 0, + 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 47, 0, 33, 0, 21, 0, 33, 0, 0, 0, 33, 0, 1, 0, 34, 0, 48, 0, 35, 0, 49, 0, + 24, 0, 50, 0, 24, 0, 51, 0, 2, 0, 45, 0, 2, 0, 46, 0, 2, 0, 52, 0, 2, 0, 53, 0, 2, 0, 54, 0, 2, 0, 55, 0, + 2, 0, 19, 0, 2, 0, 56, 0, 7, 0, 11, 0, 7, 0, 12, 0, 4, 0, 57, 0, 7, 0, 58, 0, 7, 0, 59, 0, 7, 0, 60, 0, + 31, 0, 61, 0, 36, 0, 7, 0, 27, 0, 31, 0, 12, 0, 62, 0, 24, 0, 63, 0, 2, 0, 45, 0, 2, 0, 64, 0, 2, 0, 65, 0, + 2, 0, 37, 0, 37, 0, 16, 0, 37, 0, 0, 0, 37, 0, 1, 0, 7, 0, 66, 0, 7, 0, 60, 0, 2, 0, 17, 0, 2, 0, 46, 0, + 2, 0, 67, 0, 2, 0, 19, 0, 4, 0, 68, 0, 4, 0, 69, 0, 9, 0, 2, 0, 7, 0, 70, 0, 0, 0, 20, 0, 0, 0, 71, 0, + 7, 0, 72, 0, 7, 0, 73, 0, 38, 0, 13, 0, 27, 0, 31, 0, 39, 0, 74, 0, 37, 0, 75, 0, 0, 0, 76, 0, 4, 0, 77, 0, + 7, 0, 60, 0, 12, 0, 78, 0, 36, 0, 79, 0, 27, 0, 80, 0, 2, 0, 17, 0, 2, 0, 81, 0, 2, 0, 82, 0, 2, 0, 19, 0, + 40, 0, 6, 0, 40, 0, 0, 0, 40, 0, 1, 0, 0, 0, 83, 0, 0, 0, 84, 0, 4, 0, 23, 0, 4, 0, 85, 0, 41, 0, 10, 0, + 41, 0, 0, 0, 41, 0, 1, 0, 4, 0, 86, 0, 4, 0, 87, 0, 4, 0, 88, 0, 4, 0, 89, 0, 4, 0, 14, 0, 4, 0, 90, 0, + 0, 0, 91, 0, 0, 0, 92, 0, 42, 0, 15, 0, 27, 0, 31, 0, 0, 0, 93, 0, 4, 0, 90, 0, 4, 0, 94, 0, 12, 0, 95, 0, + 40, 0, 96, 0, 40, 0, 97, 0, 4, 0, 98, 0, 4, 0, 99, 0, 12, 0,100, 0, 0, 0,101, 0, 4, 0,102, 0, 4, 0,103, 0, + 9, 0,104, 0, 8, 0,105, 0, 43, 0, 3, 0, 4, 0,106, 0, 4, 0,107, 0, 9, 0, 2, 0, 44, 0, 15, 0, 27, 0, 31, 0, + 39, 0, 74, 0, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,108, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0,111, 0, 7, 0,112, 0, + 7, 0,113, 0, 7, 0,114, 0, 7, 0,115, 0, 7, 0,116, 0, 36, 0, 79, 0, 32, 0,117, 0, 45, 0, 13, 0, 4, 0,118, 0, + 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, 2, 0,122, 0, 2, 0,123, 0, 2, 0, 19, 0, 2, 0,124, 0, 2, 0,125, 0, + 2, 0,126, 0, 2, 0,127, 0, 2, 0,128, 0, 46, 0,129, 0, 47, 0, 32, 0, 27, 0, 31, 0, 0, 0, 34, 0, 12, 0,130, 0, + 48, 0,131, 0, 49, 0,132, 0, 50, 0,133, 0, 50, 0,134, 0, 2, 0,135, 0, 2, 0,136, 0, 2, 0,124, 0, 2, 0, 19, 0, + 2, 0,137, 0, 2, 0, 17, 0, 4, 0,138, 0, 2, 0,139, 0, 2, 0,140, 0, 2, 0,141, 0, 2, 0,142, 0, 2, 0,143, 0, + 2, 0,144, 0, 4, 0,145, 0, 4, 0,146, 0, 43, 0,147, 0, 30, 0,148, 0, 7, 0,149, 0, 4, 0,150, 0, 2, 0,151, 0, + 2, 0,152, 0, 2, 0,153, 0, 2, 0,154, 0, 7, 0,155, 0, 7, 0,156, 0, 51, 0, 63, 0, 2, 0,157, 0, 2, 0,158, 0, + 2, 0,159, 0, 2, 0,160, 0, 32, 0,161, 0, 52, 0,162, 0, 0, 0,163, 0, 0, 0,164, 0, 0, 0,165, 0, 0, 0,166, 0, + 0, 0,167, 0, 7, 0,168, 0, 7, 0,169, 0, 7, 0,170, 0, 2, 0,171, 0, 2, 0,172, 0, 2, 0,173, 0, 2, 0,174, 0, + 2, 0,175, 0, 2, 0,176, 0, 0, 0,177, 0, 0, 0,178, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,182, 0, + 7, 0,183, 0, 7, 0, 56, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0,186, 0, 7, 0,187, 0, 7, 0,188, 0, 7, 0,189, 0, + 7, 0,190, 0, 7, 0,191, 0, 7, 0,192, 0, 7, 0,193, 0, 7, 0,194, 0, 7, 0,195, 0, 7, 0,196, 0, 7, 0,197, 0, + 7, 0,198, 0, 7, 0,199, 0, 7, 0,200, 0, 7, 0,201, 0, 7, 0,202, 0, 7, 0,203, 0, 7, 0,204, 0, 7, 0,205, 0, + 7, 0,206, 0, 7, 0,207, 0, 7, 0,208, 0, 7, 0,209, 0, 7, 0,210, 0, 7, 0,211, 0, 7, 0,212, 0, 7, 0,213, 0, + 7, 0,214, 0, 7, 0,215, 0, 7, 0,216, 0, 7, 0,217, 0, 7, 0,218, 0, 53, 0, 15, 0, 0, 0,219, 0, 9, 0,220, 0, + 0, 0,221, 0, 0, 0,222, 0, 4, 0,223, 0, 4, 0,224, 0, 9, 0,225, 0, 7, 0,226, 0, 7, 0,227, 0, 7, 0,228, 0, + 4, 0,229, 0, 9, 0,230, 0, 9, 0,231, 0, 4, 0,232, 0, 4, 0, 37, 0, 54, 0, 6, 0, 7, 0,179, 0, 7, 0,180, 0, + 7, 0,181, 0, 7, 0,233, 0, 7, 0, 66, 0, 4, 0, 63, 0, 55, 0, 5, 0, 2, 0, 19, 0, 2, 0, 36, 0, 2, 0, 63, 0, + 2, 0,234, 0, 54, 0,228, 0, 56, 0, 17, 0, 32, 0,161, 0, 47, 0,235, 0, 57, 0,236, 0, 7, 0,237, 0, 7, 0,238, 0, + 2, 0, 17, 0, 2, 0,239, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0,240, 0, 4, 0,241, 0, 2, 0,242, 0, 2, 0,243, 0, + 4, 0,124, 0, 4, 0,138, 0, 2, 0,244, 0, 2, 0,245, 0, 58, 0, 22, 0, 2, 0, 19, 0, 2, 0,246, 0, 7, 0,247, 0, + 7, 0,248, 0, 2, 0,137, 0, 2, 0,249, 0, 4, 0,250, 0, 4, 0,251, 0, 32, 0,161, 0, 4, 0,252, 0, 2, 0,253, 0, + 2, 0,254, 0, 9, 0,255, 0, 7, 0, 0, 1, 7, 0, 1, 1, 2, 0, 2, 1, 2, 0, 3, 1, 2, 0, 4, 1, 2, 0, 5, 1, + 7, 0, 6, 1, 7, 0, 7, 1, 55, 0, 8, 1, 59, 0, 13, 0, 4, 0, 9, 1, 4, 0, 10, 1, 2, 0, 11, 1, 2, 0, 19, 0, + 2, 0, 12, 1, 2, 0, 13, 1, 32, 0,161, 0, 7, 0, 14, 1, 4, 0, 15, 1, 0, 0, 16, 1, 7, 0, 17, 1, 4, 0, 18, 1, + 4, 0,124, 0, 52, 0, 63, 0, 27, 0, 31, 0, 39, 0, 74, 0, 7, 0, 19, 1, 7, 0, 20, 1, 7, 0, 21, 1, 7, 0, 22, 1, + 7, 0, 23, 1, 7, 0, 24, 1, 7, 0, 25, 1, 7, 0, 26, 1, 7, 0, 27, 1, 7, 0, 69, 0, 7, 0, 28, 1, 7, 0, 29, 1, + 7, 0, 30, 1, 7, 0, 31, 1, 7, 0, 32, 1, 7, 0, 33, 1, 7, 0, 34, 1, 7, 0, 35, 1, 7, 0, 36, 1, 7, 0, 37, 1, + 7, 0, 38, 1, 7, 0, 39, 1, 2, 0, 40, 1, 2, 0, 41, 1, 2, 0, 42, 1, 2, 0, 43, 1, 2, 0, 44, 1, 2, 0, 45, 1, + 2, 0, 46, 1, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,239, 0, 7, 0, 47, 1, 7, 0, 48, 1, 7, 0, 49, 1, 7, 0, 50, 1, + 4, 0, 51, 1, 4, 0, 52, 1, 2, 0, 53, 1, 2, 0, 54, 1, 2, 0, 12, 1, 2, 0,122, 0, 4, 0, 23, 0, 4, 0,119, 0, + 4, 0,120, 0, 4, 0,121, 0, 7, 0, 55, 1, 7, 0, 56, 1, 7, 0, 89, 0, 45, 0, 57, 1, 60, 0, 58, 1, 36, 0, 79, 0, + 47, 0,235, 0, 53, 0, 59, 1, 55, 0, 8, 1, 56, 0, 60, 1, 30, 0,148, 0, 58, 0, 61, 1, 59, 0, 62, 1, 0, 0, 63, 1, + 0, 0,178, 0, 61, 0, 8, 0, 7, 0, 64, 1, 7, 0, 65, 1, 7, 0,169, 0, 4, 0, 19, 0, 7, 0, 66, 1, 7, 0, 67, 1, + 7, 0, 68, 1, 32, 0, 44, 0, 62, 0, 72, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 69, 1, + 2, 0,172, 0, 2, 0, 70, 1, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,182, 0, 7, 0, 71, 1, 7, 0, 72, 1, + 7, 0, 73, 1, 7, 0, 74, 1, 7, 0, 75, 1, 7, 0, 76, 1, 7, 0, 77, 1, 7, 0, 78, 1, 7, 0, 79, 1, 7, 0, 80, 1, + 7, 0, 81, 1, 63, 0, 82, 1, 2, 0,246, 0, 2, 0, 69, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0, 83, 1, 7, 0, 84, 1, + 7, 0, 85, 1, 7, 0, 86, 1, 7, 0, 87, 1, 2, 0, 88, 1, 2, 0, 89, 1, 2, 0, 90, 1, 2, 0, 91, 1, 0, 0, 92, 1, + 0, 0, 93, 1, 2, 0, 94, 1, 2, 0, 95, 1, 2, 0, 96, 1, 2, 0, 97, 1, 2, 0, 98, 1, 7, 0, 99, 1, 7, 0,100, 1, + 7, 0,101, 1, 7, 0,102, 1, 2, 0,103, 1, 2, 0, 89, 0, 2, 0,104, 1, 2, 0,105, 1, 2, 0,106, 1, 2, 0,107, 1, + 7, 0,108, 1, 7, 0,109, 1, 7, 0,110, 1, 7, 0,111, 1, 7, 0,112, 1, 7, 0,113, 1, 7, 0,114, 1, 7, 0,115, 1, + 7, 0,116, 1, 7, 0,117, 1, 7, 0,118, 1, 7, 0,119, 1, 2, 0,120, 1, 0, 0,121, 1, 36, 0, 79, 0, 51, 0,122, 1, + 2, 0,123, 1, 0, 0,124, 1, 30, 0,148, 0, 64, 0, 2, 0, 27, 0, 31, 0, 36, 0, 79, 0, 65, 0, 18, 0, 7, 0,125, 1, + 7, 0,126, 1, 7, 0,127, 1, 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, 7, 0,131, 1, 7, 0,132, 1, 7, 0,133, 1, + 7, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 2, 0,137, 1, 2, 0,138, 1, 7, 0,139, 1, 7, 0,140, 1, 7, 0,141, 1, + 7, 0,142, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0,143, 1, 2, 0, 19, 0, 7, 0,179, 0, 7, 0,180, 0, + 7, 0,181, 0, 7, 0,144, 1, 7, 0,145, 1, 7, 0,146, 1, 7, 0,147, 1, 7, 0,148, 1, 7, 0,149, 1, 7, 0,150, 1, + 7, 0,151, 1, 7, 0,152, 1, 7, 0,153, 1, 7, 0,154, 1, 7, 0,155, 1, 7, 0,156, 1, 7, 0,157, 1, 7, 0,158, 1, + 7, 0,159, 1, 7, 0,160, 1, 7, 0,161, 1, 7, 0,162, 1, 7, 0,163, 1, 65, 0,164, 1, 7, 0,165, 1, 7, 0,166, 1, + 7, 0,167, 1, 7, 0,168, 1, 7, 0,169, 1, 7, 0,170, 1, 7, 0,171, 1, 2, 0,172, 1, 2, 0,173, 1, 2, 0,174, 1, + 0, 0,175, 1, 0, 0,176, 1, 7, 0,177, 1, 7, 0,178, 1, 2, 0,179, 1, 2, 0,180, 1, 7, 0,181, 1, 7, 0,182, 1, + 7, 0,183, 1, 7, 0,184, 1, 2, 0,185, 1, 2, 0,186, 1, 4, 0, 69, 1, 4, 0,187, 1, 2, 0,188, 1, 2, 0,189, 1, + 2, 0,190, 1, 2, 0,191, 1, 7, 0,192, 1, 7, 0,193, 1, 7, 0,194, 1, 7, 0,195, 1, 7, 0,196, 1, 7, 0,197, 1, + 7, 0,198, 1, 7, 0,199, 1, 7, 0,200, 1, 7, 0,201, 1, 0, 0,202, 1, 7, 0,203, 1, 7, 0,204, 1, 7, 0,205, 1, + 4, 0,206, 1, 0, 0,207, 1, 0, 0,104, 1, 0, 0,208, 1, 0, 0, 63, 1, 2, 0,209, 1, 2, 0,210, 1, 2, 0,123, 1, + 2, 0,211, 1, 2, 0,212, 1, 2, 0,213, 1, 7, 0,214, 1, 7, 0,215, 1, 7, 0,216, 1, 7, 0,217, 1, 7, 0,218, 1, + 2, 0,157, 0, 2, 0,158, 0, 55, 0,219, 1, 55, 0,220, 1, 0, 0,221, 1, 0, 0,222, 1, 0, 0,223, 1, 0, 0,224, 1, + 2, 0,225, 1, 2, 0,226, 1, 7, 0,227, 1, 7, 0,228, 1, 51, 0,122, 1, 60, 0, 58, 1, 36, 0, 79, 0, 67, 0,229, 1, + 30, 0,148, 0, 7, 0,230, 1, 7, 0,231, 1, 7, 0,232, 1, 7, 0,233, 1, 7, 0,234, 1, 2, 0,235, 1, 2, 0, 69, 0, + 7, 0,236, 1, 7, 0,237, 1, 7, 0,238, 1, 7, 0,239, 1, 7, 0,240, 1, 7, 0,241, 1, 7, 0,242, 1, 7, 0,243, 1, + 7, 0,244, 1, 2, 0,245, 1, 2, 0,246, 1, 4, 0,247, 1, 4, 0,248, 1, 12, 0,249, 1, 68, 0, 4, 0, 27, 0, 31, 0, + 0, 0,250, 1, 69, 0, 2, 0, 43, 0,147, 0, 70, 0, 26, 0, 70, 0, 0, 0, 70, 0, 1, 0, 71, 0,251, 1, 4, 0,252, 1, + 4, 0,253, 1, 4, 0,254, 1, 4, 0,255, 1, 4, 0, 0, 2, 4, 0, 1, 2, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 2, 2, + 2, 0, 3, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 4, 2, 7, 0, 5, 2, 7, 0, 6, 2, 7, 0, 7, 2, + 7, 0, 8, 2, 7, 0, 9, 2, 7, 0, 10, 2, 7, 0, 23, 0, 7, 0, 11, 2, 7, 0, 12, 2, 72, 0, 20, 0, 27, 0, 31, 0, + 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 13, 2, 12, 0, 14, 2, 12, 0, 15, 2, 36, 0, 79, 0, 66, 0, 16, 2, 0, 0, 19, 0, + 0, 0, 17, 2, 2, 0, 18, 2, 2, 0,171, 0, 2, 0, 37, 0, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 7, 0, 19, 2, + 7, 0, 20, 2, 7, 0, 21, 2, 70, 0, 22, 2, 35, 0, 11, 0, 7, 0, 23, 2, 7, 0, 24, 2, 7, 0, 25, 2, 7, 0,248, 0, + 2, 0, 54, 0, 0, 0, 26, 2, 0, 0, 27, 2, 0, 0, 28, 2, 0, 0, 29, 2, 0, 0, 30, 2, 0, 0, 31, 2, 34, 0, 7, 0, + 7, 0, 32, 2, 7, 0, 24, 2, 7, 0, 25, 2, 2, 0, 28, 2, 2, 0, 31, 2, 7, 0,248, 0, 7, 0, 37, 0, 73, 0, 21, 0, + 73, 0, 0, 0, 73, 0, 1, 0, 2, 0, 17, 0, 2, 0, 33, 2, 2, 0, 31, 2, 2, 0, 19, 0, 2, 0, 34, 2, 2, 0, 35, 2, + 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 38, 2, 2, 0, 39, 2, 2, 0, 40, 2, 2, 0, 41, 2, 7, 0, 42, 2, 7, 0, 43, 2, + 34, 0, 48, 0, 35, 0, 49, 0, 2, 0, 44, 2, 2, 0, 45, 2, 4, 0, 46, 2, 74, 0, 5, 0, 2, 0, 47, 2, 2, 0, 33, 2, + 0, 0, 19, 0, 0, 0, 37, 0, 2, 0, 69, 0, 75, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 8, 0, 7, 0, 48, 2, + 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 74, 0, 71, 0,251, 1, 12, 0, 49, 2, 12, 0, 14, 2, 12, 0, 50, 2, 32, 0, 51, 2, + 32, 0, 52, 2, 32, 0, 53, 2, 36, 0, 79, 0, 77, 0, 54, 2, 38, 0, 55, 2, 66, 0, 16, 2, 12, 0, 56, 2, 7, 0, 64, 1, + 7, 0,169, 0, 7, 0, 65, 1, 2, 0,171, 0, 2, 0, 89, 0, 2, 0, 57, 2, 2, 0, 58, 2, 2, 0, 59, 2, 7, 0, 60, 2, + 7, 0, 61, 2, 2, 0, 62, 2, 2, 0, 18, 2, 2, 0, 19, 0, 2, 0, 63, 2, 7, 0, 64, 2, 7, 0, 65, 2, 7, 0, 66, 2, + 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 67, 2, 2, 0, 68, 2, 4, 0, 69, 2, 9, 0, 70, 2, 2, 0, 23, 0, 2, 0, 95, 0, + 2, 0, 66, 0, 2, 0, 71, 2, 7, 0, 72, 2, 7, 0, 73, 2, 7, 0, 74, 2, 7, 0, 75, 2, 7, 0, 76, 2, 7, 0, 77, 2, + 7, 0, 78, 2, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0, 81, 2, 0, 0, 82, 2, 78, 0, 83, 2, 79, 0, 84, 2, 0, 0, 85, 2, + 68, 0, 86, 2, 68, 0, 87, 2, 68, 0, 88, 2, 68, 0, 89, 2, 4, 0, 90, 2, 7, 0, 91, 2, 4, 0, 92, 2, 4, 0, 93, 2, + 75, 0, 94, 2, 4, 0, 95, 2, 4, 0, 96, 2, 74, 0, 97, 2, 74, 0, 98, 2, 80, 0, 41, 0, 27, 0, 31, 0, 39, 0, 74, 0, + 71, 0,251, 1, 12, 0, 99, 2, 36, 0, 79, 0, 38, 0, 55, 2, 66, 0, 16, 2, 81, 0,100, 2, 82, 0,101, 2, 83, 0,102, 2, + 84, 0,103, 2, 85, 0,104, 2, 86, 0,105, 2, 87, 0,106, 2, 88, 0,107, 2, 80, 0,108, 2, 89, 0,109, 2, 90, 0,110, 2, + 91, 0,111, 2, 91, 0,112, 2, 91, 0,113, 2, 4, 0, 53, 0, 4, 0,114, 2, 4, 0,115, 2, 4, 0,116, 2, 4, 0,117, 2, + 2, 0,171, 0, 2, 0,118, 2, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 7, 0,119, 2, 4, 0, 57, 2, 2, 0,120, 2, + 2, 0, 19, 0, 2, 0,121, 2, 2, 0,122, 2, 2, 0, 18, 2, 2, 0,123, 2, 92, 0,124, 2, 93, 0,125, 2, 83, 0, 8, 0, + 9, 0,126, 2, 7, 0,127, 2, 4, 0,128, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, 2, 0,130, 2, 2, 0,131, 2, + 81, 0, 7, 0, 4, 0,132, 2, 4, 0,133, 2, 4, 0,134, 2, 4, 0,135, 2, 2, 0, 33, 2, 0, 0,136, 2, 0, 0, 19, 0, + 85, 0, 5, 0, 4, 0,132, 2, 4, 0,133, 2, 0, 0,137, 2, 0, 0,138, 2, 2, 0, 19, 0, 94, 0, 2, 0, 4, 0,139, 2, + 7, 0, 25, 2, 86, 0, 3, 0, 94, 0,140, 2, 4, 0,141, 2, 4, 0, 19, 0, 84, 0, 6, 0, 7, 0,142, 2, 2, 0,143, 2, + 2, 0, 33, 2, 0, 0, 19, 0, 0, 0,138, 2, 0, 0, 59, 2, 87, 0, 4, 0, 0, 0,233, 0, 0, 0,179, 0, 0, 0,180, 0, + 0, 0,181, 0, 95, 0, 6, 0, 47, 0,126, 2, 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, 2, 0,130, 2, 2, 0,131, 2, + 96, 0, 1, 0, 7, 0,144, 2, 97, 0, 5, 0, 0, 0,233, 0, 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 4, 0, 37, 0, + 88, 0, 1, 0, 7, 0,145, 2, 89, 0, 2, 0, 4, 0,146, 2, 4, 0, 17, 0, 82, 0, 7, 0, 7, 0,127, 2, 47, 0,126, 2, + 0, 0, 19, 0, 0, 0,129, 2, 2, 0, 69, 1, 2, 0,130, 2, 2, 0,131, 2, 98, 0, 1, 0, 7, 0,147, 2, 99, 0, 1, 0, + 4, 0,148, 2,100, 0, 1, 0, 0, 0,149, 2,101, 0, 1, 0, 7, 0,127, 2,102, 0, 3, 0, 4, 0,150, 2, 0, 0, 92, 0, + 7, 0,151, 2,103, 0, 4, 0, 7, 0,233, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0,104, 0, 1, 0,103, 0,128, 2, +105, 0, 5, 0, 4, 0,152, 2, 4, 0,153, 2, 0, 0, 19, 0, 0, 0, 33, 2, 0, 0, 59, 2,106, 0, 2, 0, 4, 0,154, 2, + 4, 0,153, 2,107, 0, 10, 0,107, 0, 0, 0,107, 0, 1, 0,105, 0,155, 2,104, 0,156, 2,106, 0,157, 2, 4, 0, 53, 0, + 4, 0,115, 2, 4, 0,114, 2, 4, 0, 37, 0, 84, 0,158, 2, 92, 0, 14, 0, 12, 0,159, 2, 84, 0,158, 2, 0, 0,160, 2, + 0, 0,161, 2, 0, 0,162, 2, 0, 0,163, 2, 0, 0,164, 2, 0, 0,165, 2, 0, 0,166, 2, 0, 0, 19, 0, 91, 0,111, 2, + 91, 0,113, 2, 2, 0,167, 2, 0, 0,168, 2, 93, 0, 8, 0, 4, 0,169, 2, 4, 0,170, 2, 81, 0,171, 2, 85, 0,172, 2, + 4, 0,115, 2, 4, 0,114, 2, 4, 0, 53, 0, 4, 0, 37, 0,108, 0, 9, 0,108, 0, 0, 0,108, 0, 1, 0, 4, 0, 17, 0, + 4, 0, 69, 1, 4, 0,173, 2, 4, 0, 37, 0, 0, 0, 20, 0, 46, 0,129, 0, 0, 0,174, 2,109, 0, 7, 0,108, 0,175, 2, + 2, 0,176, 2, 2, 0,159, 2, 2, 0,177, 2, 2, 0, 90, 0, 9, 0,178, 2, 9, 0,179, 2,110, 0, 3, 0,108, 0,175, 2, + 32, 0,161, 0, 0, 0, 20, 0,111, 0, 5, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0, 20, 0, 2, 0,180, 2, 0, 0,181, 2, +112, 0, 5, 0,108, 0,175, 2, 7, 0, 87, 0, 7, 0,182, 2, 4, 0,183, 2, 4, 0,184, 2,113, 0, 5, 0,108, 0,175, 2, + 32, 0,185, 2, 0, 0, 71, 0, 4, 0, 69, 1, 4, 0, 19, 0,114, 0, 13, 0,108, 0,175, 2, 32, 0,186, 2, 32, 0,187, 2, + 32, 0,188, 2, 32, 0,189, 2, 7, 0,190, 2, 7, 0,191, 2, 7, 0,182, 2, 7, 0,192, 2, 4, 0,193, 2, 4, 0,194, 2, + 4, 0, 90, 0, 4, 0,195, 2,115, 0, 5, 0,108, 0,175, 2, 2, 0,196, 2, 2, 0, 19, 0, 7, 0,197, 2, 32, 0,198, 2, +116, 0, 3, 0,108, 0,175, 2, 7, 0,199, 2, 4, 0, 90, 0,117, 0, 10, 0,108, 0,175, 2, 7, 0,200, 2, 4, 0,201, 2, + 4, 0, 37, 0, 2, 0, 90, 0, 2, 0,202, 2, 2, 0,203, 2, 2, 0,204, 2, 7, 0,205, 2, 0, 0,206, 2,118, 0, 3, 0, +108, 0,175, 2, 7, 0, 37, 0, 4, 0, 17, 0,119, 0, 6, 0,108, 0,175, 2,120, 0,207, 2,121, 0,208, 2,122, 0,209, 2, + 7, 0,210, 2, 4, 0, 17, 0,123, 0, 11, 0,108, 0,175, 2, 52, 0,211, 2, 7, 0,212, 2, 4, 0,213, 2, 0, 0,206, 2, + 7, 0,214, 2, 4, 0,215, 2, 32, 0,216, 2, 0, 0,217, 2, 4, 0,218, 2, 4, 0, 37, 0,124, 0, 12, 0,108, 0,175, 2, + 32, 0,219, 2, 47, 0,220, 2, 4, 0, 90, 0, 4, 0,221, 2, 7, 0,222, 2, 7, 0,223, 2, 7, 0,224, 2, 7, 0,225, 2, + 0, 0,217, 2, 4, 0,218, 2, 4, 0, 37, 0,125, 0, 3, 0,108, 0,175, 2, 7, 0,226, 2, 4, 0,227, 2,126, 0, 5, 0, +108, 0,175, 2, 7, 0,228, 2, 0, 0,206, 2, 2, 0, 19, 0, 2, 0,229, 2,127, 0, 8, 0,108, 0,175, 2, 32, 0,161, 0, + 7, 0,228, 2, 7, 0,248, 0, 7, 0,106, 0, 0, 0,206, 2, 2, 0, 19, 0, 2, 0, 17, 0,128, 0, 21, 0,108, 0,175, 2, + 32, 0,230, 2, 0, 0,206, 2, 52, 0,211, 2, 32, 0,216, 2, 2, 0, 19, 0, 2, 0, 37, 0, 7, 0,231, 2, 7, 0,232, 2, + 7, 0,233, 2, 7, 0, 64, 2, 7, 0,234, 2, 7, 0,235, 2, 7, 0,236, 2, 7, 0,237, 2, 4, 0,215, 2, 4, 0,218, 2, + 0, 0,217, 2, 7, 0,238, 2, 7, 0,239, 2, 7, 0, 89, 0,129, 0, 7, 0,108, 0,175, 2, 2, 0,240, 2, 2, 0,241, 2, + 4, 0, 69, 0, 32, 0,161, 0, 7, 0,242, 2, 0, 0,206, 2,130, 0, 10, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0,243, 2, + 7, 0,244, 2, 7, 0,245, 2, 7, 0,237, 2, 4, 0,246, 2, 4, 0,247, 2, 7, 0,248, 2, 0, 0, 20, 0,131, 0, 1, 0, +108, 0,175, 2,132, 0, 7, 0,108, 0,175, 2, 46, 0,129, 0,133, 0,249, 2,134, 0,250, 2,135, 0,251, 2,136, 0,252, 2, + 12, 0,253, 2,137, 0, 13, 0,108, 0,175, 2, 84, 0,254, 2, 84, 0,255, 2, 84, 0, 0, 3, 84, 0, 1, 3, 84, 0, 2, 3, + 84, 0, 3, 3, 81, 0, 4, 3, 4, 0, 5, 3, 4, 0, 6, 3, 7, 0,210, 2, 7, 0, 37, 0,138, 0, 7, 3,139, 0, 7, 0, +108, 0,175, 2, 84, 0,254, 2, 84, 0, 8, 3,140, 0, 9, 3,141, 0, 7, 3, 4, 0, 10, 3, 4, 0, 5, 3,142, 0, 4, 0, +108, 0,175, 2, 32, 0,161, 0, 4, 0, 11, 3, 4, 0, 37, 0,143, 0, 2, 0, 4, 0, 12, 3, 7, 0, 25, 2,144, 0, 2, 0, + 4, 0,120, 0, 4, 0, 13, 3,145, 0, 24, 0,108, 0,175, 2, 32, 0,161, 0, 0, 0,206, 2, 2, 0, 14, 3, 2, 0, 19, 0, + 2, 0, 69, 1, 2, 0, 37, 0,143, 0, 15, 3, 4, 0, 16, 3, 7, 0, 17, 3, 4, 0, 53, 0, 4, 0, 18, 3,144, 0, 19, 3, +143, 0, 20, 3, 4, 0, 21, 3, 4, 0, 22, 3, 4, 0, 23, 3, 4, 0, 13, 3, 7, 0, 24, 3, 7, 0, 25, 3, 7, 0, 26, 3, + 7, 0, 27, 3, 7, 0, 28, 3, 9, 0, 29, 3,146, 0, 8, 0,108, 0,175, 2,147, 0, 30, 3,140, 0, 9, 3, 4, 0, 31, 3, + 4, 0, 32, 3, 4, 0, 33, 3, 2, 0, 19, 0, 2, 0, 56, 0,148, 0, 8, 0,108, 0,175, 2, 32, 0, 44, 0, 2, 0,252, 0, + 2, 0, 19, 0, 2, 0,196, 2, 2, 0, 56, 0, 7, 0, 34, 3, 7, 0, 35, 3,149, 0, 5, 0,108, 0,175, 2, 4, 0, 36, 3, + 2, 0, 19, 0, 2, 0, 37, 3, 7, 0, 38, 3,150, 0, 8, 0,108, 0,175, 2, 0, 0, 39, 3, 0, 0, 40, 3, 0, 0,165, 2, + 0, 0, 41, 3, 0, 0, 42, 3, 0, 0, 90, 0, 0, 0, 59, 2,151, 0, 3, 0,108, 0,175, 2,152, 0, 43, 3,136, 0,252, 2, +153, 0, 10, 0,108, 0,175, 2, 32, 0, 44, 3, 32, 0, 45, 3, 0, 0, 46, 3, 7, 0, 47, 3, 2, 0, 48, 3, 2, 0, 49, 3, + 0, 0, 50, 3, 0, 0, 51, 3, 0, 0,181, 2,154, 0, 9, 0,108, 0,175, 2, 32, 0, 52, 3, 0, 0, 46, 3, 7, 0, 53, 3, + 7, 0, 54, 3, 0, 0, 69, 1, 0, 0,196, 2, 0, 0, 55, 3, 0, 0, 37, 0,155, 0, 1, 0,108, 0,175, 2,156, 0, 8, 0, +108, 0,175, 2, 0, 0,206, 2, 7, 0,120, 0, 7, 0, 56, 3, 7, 0, 57, 3, 7, 0, 58, 3, 7, 0, 59, 3, 4, 0, 19, 0, +157, 0, 9, 0,108, 0,175, 2, 32, 0, 60, 3, 4, 0, 61, 3, 4, 0, 62, 3, 4, 0, 63, 3, 7, 0, 64, 3, 7, 0, 65, 3, + 2, 0,196, 2, 2, 0, 19, 0,158, 0, 28, 0, 27, 0, 31, 0, 2, 0, 34, 2, 2, 0, 35, 2, 2, 0, 66, 3, 2, 0, 19, 0, + 2, 0, 67, 3, 2, 0, 68, 3, 2, 0, 69, 3, 2, 0, 69, 0, 0, 0, 70, 3, 0, 0, 71, 3, 0, 0, 72, 3, 0, 0, 17, 0, + 4, 0, 37, 0, 7, 0, 73, 3, 7, 0, 74, 3, 7, 0, 75, 3, 7, 0, 76, 3, 7, 0, 77, 3, 7, 0, 78, 3, 34, 0, 79, 3, + 36, 0, 79, 0, 38, 0, 55, 2, 86, 0,105, 2, 0, 0, 71, 0, 7, 0, 80, 3, 7, 0, 81, 3,158, 0, 82, 3,159, 0, 3, 0, +159, 0, 0, 0,159, 0, 1, 0, 0, 0, 20, 0, 71, 0, 3, 0, 7, 0, 83, 3, 4, 0, 19, 0, 4, 0, 37, 0, 32, 0,126, 0, + 27, 0, 31, 0, 39, 0, 74, 0,160, 0, 84, 3, 2, 0, 17, 0, 2, 0, 85, 3, 4, 0, 86, 3, 4, 0, 87, 3, 4, 0, 88, 3, + 0, 0, 89, 3, 32, 0, 38, 0, 32, 0, 90, 3, 32, 0, 91, 3, 32, 0, 92, 3, 32, 0, 93, 3, 36, 0, 79, 0, 77, 0, 54, 2, + 71, 0,251, 1,161, 0, 94, 3,161, 0, 95, 3,162, 0, 96, 3, 9, 0, 2, 0,163, 0, 97, 3,164, 0, 98, 3,165, 0, 99, 3, + 12, 0,100, 3, 12, 0, 99, 2, 12, 0, 14, 2, 12, 0,101, 3, 12, 0,102, 3, 4, 0, 69, 1, 4, 0,103, 3, 66, 0, 16, 2, + 0, 0,104, 3, 4, 0, 18, 2, 4, 0,105, 3, 7, 0, 64, 1, 7, 0,106, 3, 7, 0,107, 3, 7, 0,169, 0, 7, 0,108, 3, + 7, 0, 65, 1, 7, 0,109, 3, 7, 0, 4, 2, 7, 0,110, 3, 7, 0,111, 3, 7, 0,112, 3, 7, 0,113, 3, 7, 0,114, 3, + 7, 0,115, 3, 7, 0,244, 2, 7, 0,116, 3, 7, 0,237, 0, 4, 0,117, 3, 2, 0, 19, 0, 2, 0,118, 3, 2, 0,119, 3, + 2, 0,120, 3, 2, 0,121, 3, 2, 0,122, 3, 2, 0,123, 3, 2, 0,124, 3, 2, 0,125, 3, 2, 0,126, 3, 2, 0,127, 3, + 2, 0,128, 3, 4, 0,129, 3, 4, 0,130, 3, 4, 0,131, 3, 4, 0,132, 3, 7, 0,133, 3, 7, 0, 91, 2, 7, 0,134, 3, + 7, 0,135, 3, 7, 0,136, 3, 7, 0,137, 3, 7, 0,138, 3, 7, 0,212, 0, 7, 0,139, 3, 7, 0,140, 3, 7, 0,141, 3, + 7, 0,142, 3, 2, 0,143, 3, 0, 0,144, 3, 0, 0,145, 3, 0, 0,146, 3, 0, 0,147, 3, 7, 0,148, 3, 7, 0,149, 3, + 12, 0,150, 3, 12, 0,151, 3, 12, 0,152, 3, 12, 0,153, 3, 7, 0,154, 3, 2, 0,146, 2, 2, 0,155, 3, 7, 0,128, 2, + 4, 0,156, 3, 4, 0,157, 3,166, 0,158, 3, 2, 0,159, 3, 2, 0,244, 0, 7, 0,160, 3, 12, 0,161, 3, 12, 0,162, 3, + 12, 0,163, 3, 12, 0,164, 3,167, 0, 61, 1,168, 0,165, 3, 67, 0,166, 3, 2, 0,167, 3, 2, 0,168, 3, 2, 0,169, 3, + 2, 0,170, 3, 7, 0,120, 2, 2, 0,171, 3, 2, 0,172, 3,152, 0,173, 3,140, 0,174, 3,140, 0,175, 3, 4, 0,176, 3, + 4, 0,177, 3, 4, 0,178, 3, 4, 0, 69, 0, 12, 0,179, 3, 12, 0,180, 3, 12, 0,181, 3,169, 0, 14, 0,169, 0, 0, 0, +169, 0, 1, 0, 32, 0, 38, 0, 7, 0,244, 2, 7, 0, 66, 1, 7, 0,245, 2, 7, 0,237, 2, 0, 0, 20, 0, 4, 0,246, 2, + 4, 0,247, 2, 4, 0,182, 3, 2, 0, 17, 0, 2, 0,183, 3, 7, 0,248, 2,170, 0, 12, 0,170, 0, 0, 0,170, 0, 1, 0, + 32, 0, 44, 0, 4, 0,184, 3, 4, 0,146, 2, 4, 0,185, 3, 4, 0, 17, 0, 4, 0,186, 3, 7, 0, 66, 1, 7, 0,187, 3, + 7, 0,188, 3, 7, 0,144, 2,167, 0, 40, 0, 4, 0, 19, 0, 2, 0,189, 3, 2, 0,190, 3, 2, 0,237, 2, 2, 0,191, 3, + 2, 0,192, 3, 2, 0,193, 3, 2, 0,194, 3, 2, 0,195, 3, 7, 0,196, 3, 7, 0,197, 3, 7, 0,198, 3, 7, 0,199, 3, + 7, 0,200, 3, 7, 0,201, 3, 7, 0,202, 3, 7, 0,203, 3, 7, 0,204, 3, 7, 0,205, 3, 7, 0,206, 3, 7, 0,207, 3, + 7, 0,208, 3, 7, 0,209, 3, 7, 0,210, 3, 7, 0,211, 3, 7, 0,212, 3, 7, 0,213, 3, 7, 0,214, 3, 7, 0,215, 3, + 7, 0,216, 3, 7, 0,217, 3, 7, 0,218, 3, 7, 0,219, 3, 7, 0,220, 3, 7, 0,221, 3, 7, 0,222, 3, 52, 0,162, 0, +171, 0,223, 3, 7, 0,224, 3, 4, 0,184, 2,172, 0, 5, 0, 67, 0,229, 1, 7, 0,225, 3, 7, 0,226, 3, 2, 0, 19, 0, + 2, 0,227, 3,173, 0, 9, 0,173, 0, 0, 0,173, 0, 1, 0, 4, 0,228, 3, 4, 0,229, 3, 4, 0,230, 3, 4, 0, 19, 0, + 4, 0,231, 3, 9, 0,232, 3, 9, 0,233, 3,136, 0, 19, 0,136, 0, 0, 0,136, 0, 1, 0, 4, 0, 19, 0, 4, 0,234, 3, + 4, 0,235, 3, 4, 0,236, 3, 4, 0,237, 3, 4, 0,238, 3, 4, 0,239, 3, 4, 0,229, 3, 4, 0,146, 2, 4, 0, 56, 0, + 0, 0,240, 3, 0, 0,241, 3, 0, 0,242, 3, 0, 0,243, 3, 12, 0,244, 3,174, 0,245, 3, 9, 0,246, 3,175, 0, 1, 0, + 7, 0, 32, 2,166, 0, 30, 0, 4, 0, 19, 0, 7, 0,247, 3, 7, 0,248, 3, 7, 0,249, 3, 4, 0,250, 3, 4, 0,251, 3, + 4, 0,252, 3, 4, 0,253, 3, 7, 0,254, 3, 7, 0,255, 3, 7, 0, 0, 4, 7, 0, 1, 4, 7, 0, 2, 4, 7, 0, 3, 4, + 7, 0, 4, 4, 7, 0, 5, 4, 7, 0, 6, 4, 7, 0, 7, 4, 7, 0, 8, 4, 7, 0, 9, 4, 7, 0, 10, 4, 7, 0, 11, 4, + 7, 0, 12, 4, 7, 0, 13, 4, 7, 0, 14, 4, 7, 0, 15, 4, 4, 0, 16, 4, 4, 0, 17, 4, 7, 0, 18, 4, 7, 0,139, 3, +168, 0, 54, 0, 4, 0,229, 3, 4, 0, 19, 4,176, 0, 20, 4,177, 0, 21, 4, 0, 0, 37, 0, 0, 0, 22, 4, 2, 0, 23, 4, + 7, 0, 24, 4, 0, 0, 25, 4, 7, 0, 26, 4, 7, 0, 27, 4, 7, 0, 28, 4, 7, 0, 29, 4, 7, 0, 30, 4, 7, 0, 31, 4, + 7, 0, 32, 4, 7, 0, 33, 4, 7, 0, 34, 4, 2, 0, 35, 4, 0, 0, 36, 4, 2, 0, 37, 4, 7, 0, 38, 4, 7, 0, 39, 4, + 0, 0, 40, 4, 4, 0,121, 0, 4, 0, 41, 4, 4, 0, 42, 4, 2, 0, 43, 4, 2, 0, 44, 4,175, 0, 45, 4, 4, 0, 46, 4, + 4, 0, 81, 0, 7, 0, 47, 4, 7, 0, 48, 4, 7, 0, 49, 4, 7, 0, 50, 4, 2, 0, 51, 4, 2, 0, 52, 4, 2, 0, 53, 4, + 2, 0, 54, 4, 2, 0, 55, 4, 2, 0, 56, 4, 2, 0, 57, 4, 2, 0, 58, 4,178, 0, 59, 4, 7, 0, 60, 4, 7, 0, 61, 4, +136, 0, 62, 4, 12, 0,253, 2,172, 0, 63, 4, 7, 0, 64, 4, 7, 0, 65, 4, 7, 0, 66, 4, 0, 0, 67, 4,152, 0, 51, 0, +151, 0, 68, 4, 2, 0, 17, 0, 2, 0, 69, 4, 2, 0, 70, 4, 2, 0, 71, 4, 7, 0, 72, 4, 2, 0, 73, 4, 2, 0, 74, 4, + 7, 0, 75, 4, 2, 0, 76, 4, 2, 0, 77, 4, 7, 0, 78, 4, 7, 0, 79, 4, 7, 0, 80, 4, 7, 0, 81, 4, 7, 0, 82, 4, + 4, 0, 83, 4, 4, 0, 84, 4, 7, 0, 85, 4, 4, 0, 86, 4, 7, 0, 87, 4, 7, 0, 88, 4, 7, 0, 89, 4, 80, 0, 90, 4, + 80, 0, 91, 4, 80, 0, 92, 4, 0, 0, 93, 4, 7, 0, 94, 4, 7, 0, 95, 4, 36, 0, 79, 0, 2, 0, 96, 4, 0, 0, 97, 4, + 0, 0, 98, 4, 7, 0, 99, 4, 4, 0,100, 4, 7, 0,101, 4, 7, 0,102, 4, 4, 0,103, 4, 4, 0, 19, 0, 7, 0,104, 4, + 7, 0,105, 4, 7, 0,106, 4, 84, 0,107, 4, 7, 0,108, 4, 7, 0,109, 4, 7, 0,110, 4, 7, 0,111, 4, 7, 0,112, 4, + 7, 0,113, 4, 7, 0,114, 4, 4, 0,115, 4,179, 0, 76, 0, 27, 0, 31, 0, 39, 0, 74, 0, 2, 0,172, 0, 2, 0, 70, 1, + 2, 0,104, 1, 2, 0,116, 4, 7, 0,117, 4, 7, 0,118, 4, 7, 0,119, 4, 7, 0,120, 4, 7, 0,121, 4, 7, 0,122, 4, + 7, 0,150, 1, 7, 0,152, 1, 7, 0,151, 1, 7, 0, 69, 0, 4, 0,123, 4, 7, 0,124, 4, 7, 0,125, 4, 7, 0,126, 4, + 7, 0,127, 4, 7, 0,128, 4, 7, 0,129, 4, 7, 0,130, 4, 2, 0,131, 4, 2, 0, 69, 1, 2, 0,132, 4, 2, 0,133, 4, + 2, 0,134, 4, 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4, 7, 0,138, 4, 7, 0,139, 4, 7, 0,140, 4, 7, 0,141, 4, + 7, 0,142, 4, 7, 0,143, 4, 7, 0,144, 4, 7, 0,145, 4, 7, 0,146, 4, 7, 0,147, 4, 7, 0,148, 4, 7, 0,149, 4, + 2, 0,150, 4, 2, 0,151, 4, 2, 0,152, 4, 2, 0,153, 4, 7, 0,154, 4, 7, 0,155, 4, 7, 0,156, 4, 7, 0,157, 4, + 2, 0,158, 4, 2, 0,159, 4, 2, 0,160, 4, 2, 0,161, 4, 7, 0,162, 4, 7, 0,163, 4, 7, 0,164, 4, 7, 0,165, 4, + 7, 0,166, 4, 7, 0,167, 4, 7, 0,168, 4, 2, 0,169, 4, 2, 0,170, 4, 2, 0,171, 4, 2, 0,172, 4, 2, 0,173, 4, + 2, 0, 19, 0, 7, 0,174, 4, 7, 0,175, 4, 36, 0, 79, 0, 51, 0,122, 1, 2, 0,123, 1, 2, 0,176, 4, 30, 0,148, 0, +180, 0, 8, 0,180, 0, 0, 0,180, 0, 1, 0, 4, 0,117, 3, 4, 0,177, 4, 4, 0, 19, 0, 2, 0,178, 4, 2, 0,179, 4, + 32, 0,161, 0,181, 0, 13, 0, 9, 0,180, 4, 9, 0,181, 4, 4, 0,182, 4, 4, 0,183, 4, 4, 0,184, 4, 4, 0,185, 4, + 4, 0,186, 4, 4, 0,187, 4, 4, 0,188, 4, 4, 0,189, 4, 4, 0,190, 4, 4, 0, 37, 0, 0, 0,191, 4,182, 0, 5, 0, + 9, 0,192, 4, 9, 0,193, 4, 4, 0,194, 4, 4, 0, 69, 0, 0, 0,195, 4,183, 0, 17, 0, 4, 0,196, 4, 4, 0,197, 4, + 4, 0,198, 4, 4, 0,199, 4, 4, 0,200, 4, 4, 0,201, 4, 4, 0,202, 4, 4, 0,203, 4, 4, 0,204, 4, 4, 0,205, 4, + 4, 0,206, 4, 4, 0,207, 4, 2, 0,208, 4, 2, 0,209, 4, 4, 0,210, 4, 4, 0,211, 4, 4, 0, 89, 0,184, 0, 15, 0, + 4, 0, 17, 0, 4, 0,198, 4, 4, 0,212, 4, 4, 0,213, 4, 4, 0,214, 4, 4, 0,215, 4, 7, 0,216, 4, 4, 0,217, 4, + 4, 0, 90, 0, 4, 0,218, 4, 4, 0,219, 4, 4, 0,220, 4, 4, 0,221, 4, 4, 0,222, 4, 26, 0, 30, 0,185, 0, 7, 0, + 4, 0,223, 4, 7, 0,224, 4, 7, 0,225, 4, 7, 0,226, 4, 4, 0,227, 4, 2, 0, 19, 0, 2, 0, 37, 0,186, 0, 11, 0, +186, 0, 0, 0,186, 0, 1, 0, 0, 0, 20, 0, 66, 0,228, 4, 67, 0,229, 4, 4, 0,117, 3, 4, 0,230, 4, 4, 0,231, 4, + 4, 0, 37, 0, 4, 0,232, 4, 4, 0,233, 4,187, 0,111, 0,181, 0,234, 4,182, 0,235, 4,183, 0,236, 4,184, 0,237, 4, + 4, 0, 10, 3, 4, 0,121, 0, 4, 0, 41, 4, 7, 0,238, 4, 4, 0,239, 4, 4, 0,240, 4, 4, 0,241, 4, 4, 0,242, 4, + 2, 0, 19, 0, 2, 0,243, 4, 7, 0,244, 4, 7, 0,245, 4, 7, 0,246, 4, 7, 0,247, 4, 7, 0,248, 4, 2, 0,249, 4, + 2, 0,250, 4, 2, 0,251, 4, 2, 0,252, 4, 2, 0,243, 0, 2, 0,253, 4, 2, 0,254, 4, 2, 0,255, 4, 2, 0, 0, 5, + 2, 0, 1, 5, 2, 0, 91, 1, 2, 0,106, 0, 2, 0, 2, 5, 2, 0, 3, 5, 2, 0, 4, 5, 2, 0, 5, 5, 2, 0, 6, 5, + 2, 0, 7, 5, 2, 0, 8, 5, 2, 0, 9, 5, 2, 0, 10, 5, 2, 0, 92, 1, 2, 0, 11, 5, 2, 0, 12, 5, 2, 0, 13, 5, + 2, 0, 14, 5, 4, 0, 15, 5, 4, 0, 69, 1, 4, 0, 16, 5, 2, 0, 17, 5, 2, 0, 18, 5, 2, 0, 19, 5, 2, 0,248, 1, + 2, 0, 20, 5, 2, 0, 21, 5, 2, 0, 22, 5, 2, 0, 23, 5, 24, 0, 24, 5, 24, 0, 25, 5, 23, 0, 26, 5, 12, 0, 27, 5, + 2, 0, 28, 5, 2, 0, 29, 5, 7, 0, 30, 5, 7, 0, 31, 5, 7, 0, 32, 5, 7, 0, 33, 5, 4, 0, 34, 5, 7, 0, 35, 5, + 7, 0, 36, 5, 7, 0, 37, 5, 7, 0, 38, 5, 2, 0, 39, 5, 2, 0, 40, 5, 2, 0, 41, 5, 2, 0, 42, 5, 2, 0, 43, 5, + 2, 0, 44, 5, 7, 0, 45, 5, 7, 0, 46, 5, 7, 0, 47, 5, 0, 0, 48, 5, 0, 0, 49, 5, 4, 0, 50, 5, 2, 0, 51, 5, + 2, 0,226, 1, 0, 0, 52, 5, 7, 0, 53, 5, 7, 0, 54, 5, 0, 0, 55, 5, 0, 0, 56, 5, 0, 0, 57, 5, 0, 0, 58, 5, + 4, 0, 59, 5, 2, 0, 60, 5, 2, 0, 61, 5, 7, 0, 62, 5, 7, 0, 63, 5, 2, 0, 64, 5, 2, 0, 65, 5, 7, 0, 66, 5, + 2, 0, 67, 5, 2, 0, 68, 5, 4, 0, 69, 5, 2, 0, 70, 5, 2, 0, 71, 5, 2, 0, 72, 5, 2, 0, 73, 5, 7, 0, 74, 5, + 7, 0, 69, 0, 42, 0, 75, 5, 0, 0, 76, 5,188, 0, 9, 0,188, 0, 0, 0,188, 0, 1, 0, 0, 0, 20, 0, 2, 0, 77, 5, + 2, 0, 78, 5, 2, 0, 79, 5, 2, 0, 89, 0, 7, 0, 80, 5, 7, 0, 69, 0,189, 0, 7, 0, 2, 0,201, 2, 2, 0, 69, 1, + 2, 0, 65, 3, 2, 0, 81, 5, 7, 0, 82, 5, 7, 0, 69, 0, 42, 0, 83, 5,190, 0, 5, 0, 7, 0, 84, 5, 0, 0, 17, 0, + 0, 0, 89, 0, 0, 0, 69, 0, 0, 0,226, 1,191, 0, 28, 0, 7, 0,129, 4, 7, 0,130, 4, 2, 0, 69, 1, 2, 0, 19, 0, + 2, 0, 85, 5, 2, 0,176, 4, 2, 0,132, 4, 2, 0,133, 4, 2, 0,134, 4, 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4, +190, 0, 86, 5, 2, 0,249, 4, 2, 0,250, 4, 2, 0,251, 4, 2, 0,252, 4, 2, 0,243, 0, 2, 0,253, 4, 2, 0, 87, 5, + 2, 0,254, 4,189, 0, 88, 5, 2, 0, 89, 5, 2, 0, 0, 5, 2, 0, 3, 5, 2, 0, 4, 5, 7, 0, 90, 5, 7, 0, 89, 0, +192, 0, 6, 0,192, 0, 0, 0,192, 0, 1, 0, 4, 0,228, 3, 0, 0,240, 3, 4, 0, 19, 0, 32, 0, 91, 5,193, 0, 6, 0, +194, 0, 92, 5, 4, 0, 93, 5, 4, 0, 94, 5, 9, 0, 95, 5, 0, 0, 96, 5, 4, 0, 90, 0,195, 0, 8, 0,193, 0, 97, 5, + 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 98, 5, 2, 0, 99, 5, 2, 0,100, 5, 4, 0, 89, 0, 9, 0,101, 5,196, 0, 6, 0, + 2, 0,106, 0, 2, 0,234, 3, 2, 0,102, 5, 2, 0,195, 2, 4, 0, 19, 0, 7, 0,212, 2,197, 0, 14, 0, 2, 0, 19, 0, + 2, 0,103, 5, 2, 0,104, 5, 2, 0,105, 5,196, 0,106, 5, 9, 0,101, 5, 7, 0,107, 5, 7, 0, 56, 0, 4, 0,108, 5, + 4, 0,109, 5, 4, 0,110, 5, 4, 0,111, 5, 46, 0,129, 0, 32, 0,161, 0,198, 0, 4, 0,198, 0, 0, 0,198, 0, 1, 0, + 0, 0,112, 5, 7, 0,113, 5,199, 0, 14, 0,193, 0, 97, 5, 4, 0, 90, 0, 4, 0,114, 5, 7, 0,115, 5, 7, 0,116, 5, + 7, 0,117, 5, 4, 0,118, 5, 4, 0,119, 5, 7, 0,120, 5, 7, 0,121, 5, 4, 0,122, 5, 7, 0,123, 5, 7, 0,124, 5, + 4, 0, 37, 0,200, 0, 7, 0,193, 0, 97, 5, 2, 0, 19, 0, 2, 0, 37, 0, 4, 0, 36, 0, 4, 0,125, 5, 86, 0,126, 5, + 9, 0,101, 5,201, 0, 79, 0,200, 0,127, 5,200, 0,128, 5,199, 0, 84, 3, 7, 0,129, 5, 2, 0,130, 5, 2, 0,131, 5, + 7, 0,132, 5, 7, 0,133, 5, 2, 0,234, 3, 2, 0,134, 5, 7, 0,135, 5, 7, 0,136, 5, 7, 0,137, 5, 2, 0,138, 5, + 2, 0,108, 5, 2, 0,139, 5, 2, 0,140, 5, 2, 0,141, 5, 2, 0,142, 5, 7, 0,143, 5, 7, 0,144, 5, 7, 0,145, 5, + 2, 0,146, 5, 2, 0,147, 5, 2, 0,148, 5, 2, 0,149, 5, 2, 0,150, 5, 2, 0,151, 5, 2, 0,152, 5,195, 0,153, 5, +197, 0,154, 5, 7, 0,155, 5, 7, 0,156, 5, 7, 0,157, 5, 2, 0,158, 5, 2, 0,159, 5, 0, 0,160, 5, 0, 0,161, 5, + 0, 0,162, 5, 0, 0,163, 5, 0, 0,164, 5, 0, 0,165, 5, 2, 0,166, 5, 7, 0,167, 5, 7, 0,168, 5, 7, 0,169, 5, + 7, 0,170, 5, 7, 0,171, 5, 7, 0,172, 5, 7, 0,173, 5, 7, 0,174, 5, 7, 0,175, 5, 7, 0,176, 5, 2, 0,177, 5, + 0, 0,178, 5, 0, 0,179, 5, 0, 0,180, 5, 0, 0,181, 5, 32, 0,182, 5, 0, 0,183, 5, 0, 0,184, 5, 0, 0,185, 5, + 0, 0,186, 5, 0, 0,187, 5, 0, 0,188, 5, 0, 0,189, 5, 0, 0,190, 5, 2, 0,191, 5, 2, 0,192, 5, 2, 0,193, 5, + 2, 0,194, 5, 2, 0,195, 5, 4, 0,196, 5, 4, 0,197, 5, 2, 0,198, 5, 2, 0, 37, 0, 4, 0,199, 5, 7, 0,200, 5, + 7, 0,201, 5,202, 0, 8, 0, 4, 0,202, 5, 4, 0,203, 5, 4, 0,204, 5, 4, 0,205, 5, 4, 0,206, 5, 4, 0,207, 5, + 4, 0, 53, 0, 4, 0,115, 2,203, 0, 3, 0, 7, 0,208, 5, 2, 0,209, 5, 2, 0, 19, 0,204, 0, 4, 0, 7, 0,210, 5, + 4, 0, 19, 0, 4, 0,211, 5, 4, 0, 56, 0, 46, 0, 42, 0, 27, 0, 31, 0, 39, 0, 74, 0, 32, 0, 91, 5,179, 0,212, 5, + 46, 0,213, 5, 47, 0,235, 0, 12, 0,214, 5,180, 0,215, 5, 32, 0,216, 5, 7, 0,217, 5, 7, 0,218, 5, 7, 0,219, 5, + 7, 0,220, 5, 4, 0,117, 3, 4, 0,221, 5, 4, 0, 89, 0, 2, 0, 19, 0, 2, 0, 63, 1, 60, 0, 58, 1,205, 0,222, 5, +201, 0,223, 5,206, 0,224, 5,187, 0,179, 0,185, 0,225, 5, 12, 0,100, 0, 12, 0,226, 5, 9, 0,227, 5, 9, 0,228, 5, + 9, 0,229, 5,207, 0,230, 5, 2, 0,231, 5, 2, 0,232, 5, 2, 0,244, 0, 2, 0,233, 5, 4, 0,234, 5, 4, 0,235, 5, + 12, 0,236, 5,190, 0, 86, 5,191, 0,237, 5,203, 0,238, 5,163, 0, 97, 3,204, 0,239, 5,208, 0, 11, 0,208, 0, 0, 0, +208, 0, 1, 0, 47, 0,235, 0, 45, 0, 57, 1, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0,106, 0, 7, 0,240, 5, 2, 0,241, 5, + 2, 0, 19, 0, 7, 0, 69, 0,209, 0, 39, 0, 7, 0,242, 5, 7, 0,243, 5, 7, 0,244, 5, 7, 0,245, 5, 7, 0,246, 5, + 7, 0,247, 5, 7, 0,248, 5, 7, 0,249, 5, 7, 0,250, 5, 7, 0, 76, 1, 7, 0,251, 5, 7, 0,252, 5, 7, 0,253, 5, + 7, 0,254, 5, 7, 0,168, 0, 2, 0,255, 5, 2, 0, 0, 6, 2, 0, 1, 6, 2, 0, 37, 0, 2, 0, 2, 6, 2, 0, 3, 6, + 2, 0, 4, 6, 2, 0,241, 5, 7, 0, 5, 6, 7, 0, 6, 6, 71, 0, 7, 6,163, 0, 97, 3,209, 0, 8, 6,210, 0, 9, 6, +211, 0, 10, 6,212, 0, 11, 6,213, 0, 12, 6,214, 0, 13, 6, 7, 0, 14, 6, 2, 0, 15, 6, 2, 0, 16, 6, 7, 0, 17, 6, + 7, 0, 18, 6, 7, 0, 19, 6,215, 0, 55, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 20, 6, 4, 0, 21, 6, 7, 0, 22, 6, + 2, 0, 23, 6, 7, 0,250, 5, 7, 0, 76, 1, 7, 0, 89, 0, 4, 0, 24, 6, 2, 0, 4, 6, 2, 0,241, 5, 32, 0, 91, 5, + 32, 0, 25, 6, 12, 0, 26, 6,208, 0, 27, 6,215, 0, 8, 6, 0, 0, 28, 6, 4, 0,117, 3, 4, 0,221, 5, 2, 0, 29, 6, + 2, 0, 69, 0, 2, 0, 30, 6, 2, 0, 31, 6, 2, 0,226, 1, 2, 0, 19, 0, 2, 0, 17, 2, 2, 0, 32, 6, 7, 0,111, 0, + 7, 0, 33, 6, 7, 0, 17, 6, 7, 0, 19, 6, 7, 0, 34, 6, 7, 0, 35, 6, 7, 0,168, 0, 7, 0,217, 5, 2, 0, 36, 6, + 2, 0,248, 1, 2, 0, 37, 6, 2, 0, 38, 6, 2, 0, 39, 6, 2, 0, 40, 6, 2, 0, 41, 6, 2, 0, 42, 6, 2, 0, 43, 6, + 2, 0, 1, 6, 4, 0, 44, 6, 12, 0, 45, 6, 2, 0, 46, 6, 2, 0,129, 2, 2, 0, 47, 6, 0, 0, 48, 6, 0, 0, 49, 6, + 9, 0, 50, 6,163, 0, 97, 3,217, 0, 24, 0, 24, 0, 36, 0, 24, 0, 63, 0, 23, 0, 51, 6, 23, 0, 52, 6, 23, 0, 53, 6, + 7, 0, 54, 6, 7, 0, 55, 6, 7, 0, 56, 6, 7, 0, 57, 6, 2, 0, 58, 6, 2, 0, 59, 6, 2, 0, 60, 6, 2, 0, 61, 6, + 2, 0, 62, 6, 2, 0, 19, 0, 2, 0, 63, 6, 2, 0, 64, 6, 2, 0, 65, 6, 2, 0, 66, 6, 2, 0, 67, 6, 2, 0, 31, 6, + 7, 0, 68, 6, 4, 0, 69, 6, 4, 0, 70, 6,216, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 20, 6, 4, 0, 21, 6, + 7, 0, 22, 6, 2, 0, 23, 6,218, 0, 8, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 20, 6, 4, 0, 21, 6, 7, 0, 22, 6, + 2, 0, 23, 6,219, 0, 71, 6, 46, 0,129, 0,220, 0, 14, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 20, 6, 4, 0, 21, 6, + 7, 0, 22, 6, 2, 0, 23, 6,217, 0, 72, 6,221, 0, 73, 6, 12, 0, 74, 6, 2, 0, 69, 1, 2, 0, 75, 6, 4, 0, 19, 0, + 7, 0, 76, 6, 4, 0, 31, 6,222, 0, 20, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 20, 6, 4, 0, 21, 6, 7, 0, 22, 6, + 2, 0, 23, 6,210, 0, 9, 6,217, 0, 72, 6, 2, 0, 77, 6, 2, 0, 78, 6, 2, 0, 79, 6, 2, 0, 80, 6, 2, 0, 63, 6, + 2, 0, 81, 6, 0, 0, 19, 0, 0, 0,176, 4, 9, 0, 54, 2, 4, 0, 82, 6, 4, 0, 83, 6, 27, 0, 84, 6,223, 0, 18, 0, +216, 0, 0, 0,216, 0, 1, 0, 12, 0, 20, 6, 4, 0, 21, 6, 7, 0, 22, 6, 2, 0, 23, 6,217, 0, 72, 6, 7, 0, 79, 2, + 7, 0, 80, 2, 2, 0, 77, 6, 2, 0, 85, 6, 2, 0, 86, 6, 2, 0, 87, 6, 4, 0, 19, 0, 7, 0, 88, 6, 4, 0,241, 5, + 4, 0, 37, 0,163, 0, 97, 3,224, 0, 15, 0, 0, 0, 89, 6, 0, 0, 90, 6, 0, 0, 91, 6, 0, 0, 92, 6, 2, 0, 17, 0, + 2, 0, 19, 0, 2, 0, 93, 6, 2, 0, 94, 6, 2, 0,169, 1, 2, 0, 95, 6, 4, 0, 96, 6, 4, 0, 97, 6, 2, 0, 98, 6, + 2, 0, 37, 0, 0, 0, 99, 6,225, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 20, 6, 4, 0, 21, 6, 4, 0,100, 6, +224, 0,101, 6,226, 0,102, 6, 12, 0,103, 6, 12, 0,104, 6,227, 0,105, 6,214, 0,106, 6,228, 0,107, 6, 2, 0,108, 6, + 2, 0,109, 6, 2, 0,110, 6, 2, 0, 69, 0,229, 0, 17, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 20, 6, 4, 0, 21, 6, + 7, 0, 22, 6, 2, 0, 23, 6,217, 0, 72, 6, 12, 0,111, 6,230, 0,112, 6, 0, 0,113, 6,231, 0,114, 6, 4, 0,115, 6, + 4, 0,116, 6, 2, 0, 19, 0, 2, 0,117, 6, 2, 0,118, 6, 2, 0, 37, 0,232, 0, 32, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 20, 6, 4, 0, 21, 6, 7, 0, 22, 6, 2, 0, 23, 6, 47, 0,220, 2, 45, 0, 57, 1, 63, 0,119, 6, 2, 0,128, 0, + 2, 0,120, 6, 2, 0, 69, 0, 2, 0,121, 6, 4, 0, 19, 0, 2, 0,122, 6, 2, 0,123, 6, 2, 0,124, 6, 2, 0,226, 1, + 0, 0,125, 6, 0, 0,126, 6, 0, 0,127, 6, 0, 0, 31, 6, 7, 0,128, 6, 7, 0, 79, 2, 7, 0, 80, 2, 7, 0, 88, 6, + 7, 0,248, 1, 7, 0,129, 6, 7, 0,130, 6,163, 0, 97, 3,233, 0,131, 6,234, 0,132, 6,235, 0, 11, 0,216, 0, 0, 0, +216, 0, 1, 0, 12, 0, 20, 6, 4, 0, 21, 6, 7, 0, 22, 6, 2, 0, 23, 6, 2, 0, 75, 6, 2, 0, 19, 0, 4, 0, 37, 0, +221, 0, 73, 6,217, 0, 72, 6,236, 0, 27, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 20, 6, 4, 0, 21, 6, 7, 0, 22, 6, + 2, 0, 23, 6, 42, 0,133, 6, 4, 0,134, 6, 4, 0,135, 6, 2, 0, 90, 0, 2, 0,128, 0, 2, 0,136, 6, 0, 0,137, 6, + 0, 0,138, 6, 4, 0,139, 6, 4, 0,140, 6, 4, 0,141, 6, 4, 0,142, 6, 2, 0,143, 6, 2, 0,144, 6, 7, 0,145, 6, + 23, 0,146, 6, 23, 0,147, 6, 4, 0,148, 6, 4, 0,149, 6, 0, 0,150, 6, 0, 0,151, 6,237, 0, 10, 0, 27, 0, 31, 0, + 9, 0,152, 6, 9, 0,153, 6, 9, 0,154, 6, 9, 0,155, 6, 9, 0,156, 6, 4, 0, 90, 0, 4, 0,157, 6, 0, 0,158, 6, + 0, 0,159, 6,238, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 20, 6, 4, 0, 21, 6, 7, 0, 22, 6,237, 0,160, 6, + 2, 0, 90, 0, 2, 0,128, 0, 4, 0, 89, 0, 9, 0,161, 6,239, 0, 9, 0,239, 0, 0, 0,239, 0, 1, 0, 4, 0, 17, 0, + 4, 0, 19, 0, 7, 0,162, 6, 4, 0, 23, 0, 4, 0,236, 3, 4, 0,237, 3, 4, 0,124, 0,240, 0, 11, 0,216, 0, 0, 0, +216, 0, 1, 0, 12, 0, 20, 6, 4, 0, 21, 6, 7, 0, 22, 6,217, 0, 72, 6, 12, 0,163, 6, 4, 0,164, 6, 4, 0, 37, 0, + 4, 0, 19, 0, 4, 0,165, 6,241, 0, 25, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 20, 6, 4, 0, 21, 6, 7, 0, 22, 6, + 2, 0, 23, 6,217, 0, 72, 6, 27, 0,166, 6, 27, 0, 80, 0, 2, 0, 19, 0, 2, 0,128, 0, 7, 0,167, 6, 9, 0,168, 6, + 7, 0, 79, 2, 7, 0, 80, 2, 7, 0, 88, 6, 7, 0, 19, 6, 7, 0,169, 6, 7, 0,170, 6, 60, 0, 58, 1, 60, 0,171, 6, + 4, 0,172, 6, 2, 0,173, 6, 2, 0, 37, 0,163, 0, 97, 3,242, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 20, 6, + 4, 0, 21, 6, 7, 0, 22, 6, 2, 0, 23, 6, 2, 0, 19, 0, 2, 0,126, 3, 4, 0, 37, 0,163, 0, 97, 3,243, 0, 42, 0, +216, 0, 0, 0,216, 0, 1, 0, 12, 0, 20, 6, 4, 0, 21, 6, 7, 0, 22, 6, 2, 0, 23, 6,217, 0, 72, 6,226, 0,102, 6, + 0, 0, 89, 6, 0, 0, 90, 6, 0, 0, 91, 6, 2, 0, 17, 0, 2, 0,174, 6, 2, 0, 19, 0, 2, 0, 93, 6, 9, 0,168, 6, + 4, 0, 96, 6, 4, 0,175, 6, 4, 0,176, 6, 4, 0, 97, 6, 23, 0,177, 6, 23, 0,178, 6, 7, 0,179, 6, 7, 0,180, 6, + 7, 0,181, 6, 7, 0,167, 6, 2, 0,182, 6, 2, 0,234, 0, 2, 0,169, 1, 2, 0, 95, 6, 2, 0, 37, 0, 2, 0, 89, 0, + 2, 0,183, 6, 2, 0,184, 6, 9, 0,185, 6, 9, 0,186, 6, 9, 0,187, 6, 9, 0,188, 6, 9, 0,189, 6, 2, 0,190, 6, + 0, 0,191, 6, 57, 0,192, 6,244, 0, 7, 0,244, 0, 0, 0,244, 0, 1, 0, 4, 0,193, 6, 4, 0, 23, 0, 0, 0, 83, 0, + 4, 0,194, 6, 4, 0, 17, 0,245, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 20, 6, 4, 0, 21, 6, 7, 0, 22, 6, + 2, 0, 23, 6, 4, 0, 17, 0, 4, 0,195, 6, 4, 0, 19, 0, 4, 0,136, 6, 12, 0,196, 6, 12, 0,197, 6, 0, 0,198, 6, + 0, 0,199, 6, 4, 0,200, 6, 4, 0,201, 6,246, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 20, 6, 4, 0, 21, 6, + 4, 0, 37, 0, 0, 0,202, 6,247, 0, 7, 0,247, 0, 0, 0,247, 0, 1, 0, 0, 0,203, 6, 2, 0,204, 6, 2, 0,205, 6, + 2, 0,206, 6, 2, 0, 37, 0,248, 0, 12, 0, 2, 0,205, 6, 2, 0,207, 6, 2, 0,208, 6, 0, 0,181, 2, 2, 0,209, 6, + 2, 0,210, 6, 2, 0,211, 6, 2, 0,212, 6, 2, 0,213, 6, 2, 0, 63, 6, 7, 0,214, 6, 7, 0,215, 6,249, 0, 18, 0, +249, 0, 0, 0,249, 0, 1, 0, 0, 0,240, 3,248, 0,216, 6,248, 0,217, 6,248, 0,218, 6,248, 0,219, 6, 7, 0,220, 6, + 2, 0,221, 6, 2, 0,222, 6, 2, 0,223, 6, 2, 0,224, 6, 2, 0,225, 6, 2, 0,226, 6, 2, 0,227, 6, 2, 0,228, 6, + 2, 0,229, 6, 2, 0,230, 6,250, 0, 10, 0, 0, 0,231, 6, 0, 0,232, 6, 0, 0,233, 6, 0, 0,234, 6, 0, 0,235, 6, + 0, 0,236, 6, 2, 0,237, 6, 2, 0,238, 6, 2, 0,239, 6, 2, 0,240, 6,251, 0, 8, 0, 0, 0,241, 6, 0, 0,242, 6, + 0, 0,243, 6, 0, 0,244, 6, 0, 0,245, 6, 0, 0,246, 6, 7, 0,240, 5, 7, 0, 37, 0,252, 0, 18, 0,250, 0,247, 6, +250, 0,248, 6,250, 0,249, 6,250, 0,250, 6,250, 0,251, 6,250, 0,252, 6,250, 0,253, 6,250, 0,254, 6,250, 0,255, 6, +250, 0, 0, 7,250, 0, 1, 7,250, 0, 2, 7,250, 0, 3, 7,250, 0, 4, 7,250, 0, 5, 7,250, 0, 6, 7,251, 0, 7, 7, + 0, 0, 8, 7,253, 0, 92, 0, 0, 0, 9, 7, 0, 0, 10, 7, 0, 0,235, 6, 0, 0, 11, 7, 0, 0, 12, 7, 0, 0, 13, 7, + 0, 0, 14, 7, 0, 0, 15, 7, 0, 0, 16, 7, 0, 0, 17, 7, 0, 0, 18, 7, 0, 0, 19, 7, 0, 0, 20, 7, 0, 0, 21, 7, + 0, 0, 22, 7, 0, 0, 23, 7, 0, 0, 24, 7, 0, 0, 25, 7, 0, 0, 26, 7, 0, 0, 27, 7, 0, 0, 28, 7, 0, 0, 29, 7, + 0, 0, 30, 7, 0, 0, 31, 7, 0, 0, 32, 7, 0, 0, 33, 7, 0, 0, 34, 7, 0, 0, 35, 7, 0, 0, 36, 7, 0, 0, 37, 7, + 0, 0, 38, 7, 0, 0, 39, 7, 0, 0, 40, 7, 0, 0, 41, 7, 0, 0, 42, 7, 0, 0, 43, 7, 0, 0, 44, 7, 0, 0, 45, 7, + 0, 0, 46, 7, 0, 0, 47, 7, 0, 0, 48, 7, 0, 0, 49, 7, 0, 0, 50, 7, 0, 0, 51, 7, 0, 0, 52, 7, 0, 0, 53, 7, + 0, 0, 54, 7, 0, 0, 55, 7, 0, 0, 56, 7, 0, 0, 57, 7, 0, 0, 58, 7, 0, 0, 59, 7, 0, 0, 60, 7, 0, 0, 61, 7, + 0, 0, 62, 7, 0, 0, 63, 7, 0, 0, 64, 7, 0, 0, 65, 7, 0, 0, 66, 7, 0, 0, 67, 7, 0, 0, 68, 7, 0, 0, 69, 7, + 0, 0, 70, 7, 0, 0, 71, 7, 0, 0, 72, 7, 0, 0, 73, 7, 0, 0, 74, 7, 0, 0, 75, 7, 0, 0, 76, 7, 0, 0, 77, 7, + 0, 0, 78, 7, 0, 0, 79, 7, 0, 0, 80, 7, 0, 0, 81, 7, 0, 0, 82, 7, 0, 0, 83, 7, 0, 0, 84, 7, 0, 0, 85, 7, + 0, 0, 86, 7, 0, 0, 87, 7, 0, 0, 88, 7, 0, 0, 89, 7, 0, 0, 90, 7, 0, 0, 91, 7, 0, 0, 92, 7, 0, 0, 93, 7, + 0, 0, 94, 7, 0, 0, 95, 7, 0, 0, 96, 7, 0, 0, 97, 7, 0, 0, 98, 7, 0, 0, 99, 7,254, 0, 5, 0, 0, 0,100, 7, + 0, 0, 33, 7, 0, 0, 35, 7, 2, 0, 19, 0, 2, 0, 37, 0,255, 0, 25, 0,255, 0, 0, 0,255, 0, 1, 0, 0, 0, 20, 0, +252, 0,101, 7,253, 0,102, 7,253, 0,103, 7,253, 0,104, 7,253, 0,105, 7,253, 0,106, 7,253, 0,107, 7,253, 0,108, 7, +253, 0,109, 7,253, 0,110, 7,253, 0,111, 7,253, 0,112, 7,253, 0,113, 7,253, 0,114, 7,253, 0,115, 7,253, 0,116, 7, +253, 0,117, 7,253, 0,118, 7,253, 0,119, 7,254, 0,120, 7, 4, 0,121, 7, 4, 0, 37, 0, 0, 1, 3, 0, 0, 1, 0, 0, + 0, 1, 1, 0, 0, 0,122, 7, 1, 1, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,128, 2, 7, 0,123, 7, 7, 0, 32, 2, + 2, 1, 86, 0, 4, 0, 19, 0, 4, 0,124, 7, 4, 0,125, 7, 0, 0,126, 7, 0, 0,127, 7, 0, 0,128, 7, 0, 0,129, 7, + 0, 0,130, 7, 0, 0,131, 7, 0, 0,132, 7, 0, 0,133, 7, 0, 0,134, 7, 0, 0,135, 7, 4, 0,136, 7, 2, 0,137, 7, + 2, 0,138, 7, 2, 0,139, 7, 2, 0,140, 7, 4, 0,141, 7, 4, 0,142, 7, 4, 0,143, 7, 4, 0,144, 7, 2, 0,145, 7, + 2, 0,146, 7, 4, 0,147, 7, 4, 0,148, 7, 4, 0,149, 7, 4, 0,150, 7, 4, 0,151, 7, 4, 0,196, 6, 4, 0,152, 7, + 2, 0,153, 7, 2, 0,154, 7, 2, 0,155, 7, 2, 0,156, 7, 12, 0,157, 7, 12, 0,158, 7, 12, 0,159, 7, 12, 0,160, 7, + 12, 0,161, 7, 0, 0,162, 7, 2, 0,163, 7, 2, 0,164, 7, 2, 0,165, 7, 2, 0,166, 7, 2, 0,167, 7, 2, 0,168, 7, + 2, 0,169, 7, 2, 0,170, 7, 1, 1,171, 7, 2, 0,172, 7, 2, 0,173, 7, 2, 0,174, 7, 2, 0,175, 7, 2, 0,176, 7, + 2, 0,177, 7, 2, 0,178, 7, 2, 0, 69, 0, 4, 0,179, 7, 4, 0,180, 7, 2, 0,181, 7, 2, 0,182, 7, 2, 0,183, 7, + 2, 0,184, 7, 2, 0,185, 7, 2, 0,186, 7, 2, 0,187, 7, 2, 0,188, 7, 2, 0,189, 7, 2, 0,190, 7, 2, 0,191, 7, + 2, 0,192, 7, 2, 0,193, 7, 2, 0,194, 7, 2, 0,195, 7, 2, 0,196, 7, 2, 0,197, 7, 2, 0,176, 4, 0, 0,198, 7, + 0, 0,199, 7, 7, 0,200, 7, 2, 0,158, 5, 2, 0,159, 5, 55, 0,201, 7, 7, 0,202, 7, 4, 0,226, 1,219, 0, 21, 0, + 27, 0, 31, 0, 12, 0,203, 7, 12, 0,204, 7, 12, 0,205, 7, 12, 0, 20, 6, 46, 0,129, 0, 46, 0,206, 7, 2, 0,207, 7, 2, 0,208, 7, 2, 0,209, 7, 2, 0,210, 7, 2, 0,211, 7, 2, 0,212, 7, 2, 0,213, 7, 2, 0,214, 7, 2, 0,215, 7, 2, 0,216, 7, 4, 0, 69, 0,214, 0,217, 7, 9, 0,218, 7, 2, 0,219, 7, 3, 1, 5, 0, 3, 1, 0, 0, 3, 1, 1, 0, 3, 1,220, 7, 13, 0,221, 7, 4, 0, 19, 0, 4, 1, 7, 0, 4, 1, 0, 0, 4, 1, 1, 0, 3, 1,222, 7, 3, 1,223, 7, - 2, 0, 25, 5, 2, 0, 19, 0, 4, 0, 37, 0, 5, 1, 25, 0, 5, 1, 0, 0, 5, 1, 1, 0, 6, 1,224, 7, 7, 1,103, 6, + 2, 0, 25, 5, 2, 0, 19, 0, 4, 0, 37, 0, 5, 1, 25, 0, 5, 1, 0, 0, 5, 1, 1, 0, 6, 1,224, 7, 7, 1,107, 6, 0, 0,225, 7, 0, 0,226, 7, 0, 0,227, 7, 2, 0,228, 7, 2, 0,229, 7, 2, 0,230, 7, 2, 0,231, 7, 2, 0,232, 7, 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,233, 7, 2, 0,234, 7, 2, 0,235, 7, 4, 0,236, 7, 5, 1,237, 7, 9, 0,238, 7, 4, 0,239, 7, 4, 0,240, 7, 4, 0,241, 7, 4, 0,242, 7, 0, 0,243, 7, 8, 1, 22, 0, 8, 1, 0, 0, 8, 1, 1, 0, - 3, 1,222, 7, 3, 1,223, 7, 3, 1,244, 7, 3, 1,245, 7,219, 0,246, 7, 23, 0, 51, 0, 0, 0, 17, 6, 0, 0,247, 7, - 2, 0, 60, 6, 2, 0, 61, 6, 2, 0,248, 7, 2, 0, 37, 0, 2, 0,210, 7, 2, 0,190, 6, 2, 0, 19, 0, 9, 1,224, 7, - 12, 0,249, 7, 12, 0, 16, 6, 12, 0,250, 7, 12, 0,251, 7, 10, 1, 24, 0, 10, 1, 0, 0, 10, 1, 1, 0,217, 0, 68, 6, - 23, 0,252, 7, 23, 0,253, 7, 2, 0, 60, 6, 2, 0, 61, 6, 2, 0,254, 7, 2, 0,255, 7, 2, 0, 0, 8, 2, 0, 19, 0, + 3, 1,222, 7, 3, 1,223, 7, 3, 1,244, 7, 3, 1,245, 7,219, 0,246, 7, 23, 0, 51, 0, 0, 0, 21, 6, 0, 0,247, 7, + 2, 0, 64, 6, 2, 0, 65, 6, 2, 0,248, 7, 2, 0, 37, 0, 2, 0,210, 7, 2, 0,194, 6, 2, 0, 19, 0, 9, 1,224, 7, + 12, 0,249, 7, 12, 0, 20, 6, 12, 0,250, 7, 12, 0,251, 7, 10, 1, 24, 0, 10, 1, 0, 0, 10, 1, 1, 0,217, 0, 72, 6, + 23, 0,252, 7, 23, 0,253, 7, 2, 0, 64, 6, 2, 0, 65, 6, 2, 0,254, 7, 2, 0,255, 7, 2, 0, 0, 8, 2, 0, 19, 0, 7, 0, 75, 2, 2, 0,230, 7, 2, 0,231, 7, 2, 0,209, 7, 2, 0, 1, 8, 2, 0,214, 7, 2, 0,176, 4, 11, 1,224, 7, 12, 0, 2, 8, 12, 0, 3, 8, 12, 0,250, 7, 0, 0, 4, 8, 9, 0, 5, 8, 12, 1, 12, 0, 0, 0, 6, 8, 2, 0, 7, 8, 2, 0, 8, 8, 2, 0, 9, 8, 2, 0, 10, 8, 2, 0, 12, 5, 2, 0, 7, 5,219, 0, 11, 8, 46, 0, 12, 8, 4, 0, 13, 8, 4, 0, 14, 8, 0, 0, 15, 8, 13, 1, 1, 0, 0, 0, 16, 8, 14, 1, 8, 0, 57, 0, 17, 8, 57, 0, 18, 8, 14, 1, 19, 8, - 14, 1, 20, 8, 14, 1, 21, 8, 2, 0,124, 0, 2, 0, 19, 0, 4, 0, 22, 8, 15, 1, 4, 0, 4, 0,130, 6, 4, 0, 23, 8, - 4, 0,135, 6, 4, 0, 24, 8, 16, 1, 2, 0, 4, 0, 25, 8, 4, 0, 26, 8, 17, 1, 5, 0, 7, 0, 27, 8, 7, 0, 28, 8, - 7, 0, 29, 8, 4, 0, 19, 0, 4, 0, 37, 0, 18, 1, 6, 0, 0, 0, 30, 8, 0, 0, 87, 6, 49, 0,132, 0, 2, 0,106, 0, + 14, 1, 20, 8, 14, 1, 21, 8, 2, 0,124, 0, 2, 0, 19, 0, 4, 0, 22, 8, 15, 1, 4, 0, 4, 0,134, 6, 4, 0, 23, 8, + 4, 0,139, 6, 4, 0, 24, 8, 16, 1, 2, 0, 4, 0, 25, 8, 4, 0, 26, 8, 17, 1, 5, 0, 7, 0, 27, 8, 7, 0, 28, 8, + 7, 0, 29, 8, 4, 0, 19, 0, 4, 0, 37, 0, 18, 1, 6, 0, 0, 0, 30, 8, 0, 0, 91, 6, 49, 0,132, 0, 2, 0,106, 0, 2, 0, 11, 5, 4, 0, 37, 0, 19, 1, 21, 0, 19, 1, 0, 0, 19, 1, 1, 0, 4, 0, 56, 0, 4, 0, 23, 0, 4, 0, 28, 0, 4, 0, 31, 8, 4, 0, 32, 8, 4, 0, 33, 8, 13, 1, 34, 8, 0, 0, 30, 8, 4, 0, 35, 8, 4, 0, 36, 8, 18, 1, 91, 3, 15, 1, 37, 8, 16, 1, 38, 8, 17, 1, 39, 8, 14, 1, 40, 8, 14, 1, 41, 8, 14, 1, 42, 8, 57, 0, 43, 8, 57, 0, 44, 8, @@ -9449,7 +9461,7 @@ char datatoc_startup_blend[]= { 2, 0,135, 8, 2, 0, 14, 2, 2, 0,136, 8, 0, 0,137, 8, 0, 0,138, 8, 7, 0,237, 0, 32, 1,139, 8, 67, 0,229, 1, 33, 1, 16, 0, 33, 1, 0, 0, 33, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,112, 8, 2, 0,239, 0, 7, 0,231, 2, 7, 0,232, 2, 7, 0,233, 2, 7, 0, 64, 2, 7, 0,234, 2, 7, 0,235, 2, 7, 0,140, 8, 7, 0,236, 2, 7, 0,238, 2, - 7, 0,239, 2,231, 0, 5, 0, 2, 0, 17, 0, 2, 0, 22, 8, 2, 0, 19, 0, 2, 0,141, 8, 27, 0,162, 6,230, 0, 3, 0, + 7, 0,239, 2,231, 0, 5, 0, 2, 0, 17, 0, 2, 0, 22, 8, 2, 0, 19, 0, 2, 0,141, 8, 27, 0,166, 6,230, 0, 3, 0, 4, 0, 68, 0, 4, 0,142, 8,231, 0, 2, 0, 34, 1, 7, 0, 34, 1, 0, 0, 34, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, 9, 0,143, 8, 35, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0,144, 8, 4, 0,145, 8, 4, 0, 37, 0, 36, 1, 4, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 89, 0, 2, 0, 69, 0, 37, 1, 4, 0, 0, 0, 20, 0, @@ -9464,14 +9476,14 @@ char datatoc_startup_blend[]= { 2, 0, 19, 0, 2, 0,167, 8, 2, 0,168, 8, 2, 0,169, 8, 2, 0, 89, 0, 2, 0, 69, 0, 0, 0, 20, 0, 9, 0, 2, 0, 49, 1,170, 8, 32, 0, 44, 0, 2, 0,102, 5, 2, 0, 67, 8, 2, 0,171, 8, 2, 0, 37, 0, 50, 1, 11, 0, 0, 0, 20, 0, 0, 0, 17, 0, 0, 0,172, 8, 2, 0, 19, 0, 2, 0,196, 2, 2, 0,173, 8, 4, 0,174, 8, 4, 0,175, 8, 4, 0,176, 8, - 4, 0,177, 8, 4, 0,178, 8, 51, 1, 1, 0, 0, 0,179, 8, 52, 1, 4, 0, 42, 0,129, 6, 0, 0,118, 7, 4, 0, 69, 1, + 4, 0,177, 8, 4, 0,178, 8, 51, 1, 1, 0, 0, 0,179, 8, 52, 1, 4, 0, 42, 0,133, 6, 0, 0,122, 7, 4, 0, 69, 1, 4, 0, 19, 0, 49, 1, 18, 0, 49, 1, 0, 0, 49, 1, 1, 0, 49, 1,180, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,181, 8, 2, 0,169, 8, 2, 0,166, 8, 2, 0,182, 8, 2, 0, 69, 0, 2, 0,226, 1, 0, 0, 20, 0, 9, 0, 2, 0, 53, 1,170, 8, 48, 1,183, 8, 2, 0, 15, 0, 2, 0,184, 8, 4, 0,185, 8, 54, 1, 3, 0, 4, 0,210, 2, 4, 0, 37, 0, 32, 0, 44, 0, 55, 1, 12, 0,161, 0,186, 8, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,114, 8, 4, 0, 88, 0, 0, 0, 20, 0, 0, 0,187, 8, 2, 0,188, 8, 2, 0,189, 8, 2, 0,190, 8, 2, 0,191, 8, 7, 0,192, 8, 56, 1, 13, 0, 2, 0, 19, 0, 2, 0,193, 8, 4, 0, 89, 0, 4, 0, 69, 0, 2, 0,194, 8, 7, 0,249, 3, 7, 0,195, 8, 22, 1, 65, 8, 57, 1,196, 8, 2, 0, 17, 0, - 2, 0,248, 1, 2, 0,230, 5, 2, 0,197, 8, 58, 1, 11, 0, 4, 0,210, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 44, 0, + 2, 0,248, 1, 2, 0,234, 5, 2, 0,197, 8, 58, 1, 11, 0, 4, 0,210, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 44, 0, 80, 0,198, 8, 0, 0, 20, 0, 7, 0,199, 8, 7, 0,200, 8, 7, 0,134, 3, 2, 0,201, 8, 2, 0,202, 8, 59, 1, 5, 0, 2, 0, 17, 0, 2, 0, 89, 0, 4, 0, 37, 0, 46, 0,129, 0, 32, 0, 91, 5, 60, 1, 5, 0, 4, 0, 37, 0, 4, 0, 17, 0, 0, 0, 20, 0, 0, 0,152, 8, 32, 0, 44, 0, 61, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,166, 8, 2, 0,135, 3, @@ -9485,22 +9497,22 @@ char datatoc_startup_blend[]= { 4, 0,220, 8, 7, 0,221, 8, 7, 0,222, 8, 0, 0,158, 8, 67, 1, 7, 0, 0, 0,223, 8, 32, 0,224, 8, 0, 0,164, 8, 2, 0,225, 8, 2, 0, 89, 0, 4, 0, 69, 0, 0, 0,165, 8, 68, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,114, 8, 4, 0, 88, 0, 0, 0,226, 8, 0, 0,227, 8, 69, 1, 1, 0, 4, 0, 19, 0, 70, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 4, 0,228, 8, 7, 0,229, 8, 42, 0,129, 6, 71, 1, 4, 0, 0, 0, 59, 2, 2, 0, 19, 0, 4, 0, 17, 0, - 32, 0, 44, 0, 72, 1, 2, 0, 4, 0, 17, 0, 4, 0, 49, 6, 73, 1, 6, 0, 0, 0,161, 8, 0, 0,162, 8, 4, 0, 17, 0, + 2, 0, 19, 0, 4, 0,228, 8, 7, 0,229, 8, 42, 0,133, 6, 71, 1, 4, 0, 0, 0, 59, 2, 2, 0, 19, 0, 4, 0, 17, 0, + 32, 0, 44, 0, 72, 1, 2, 0, 4, 0, 17, 0, 4, 0, 53, 6, 73, 1, 6, 0, 0, 0,161, 8, 0, 0,162, 8, 4, 0, 17, 0, 7, 0, 25, 2, 32, 0, 44, 3, 32, 0,230, 8, 53, 1, 10, 0, 53, 1, 0, 0, 53, 1, 1, 0, 53, 1,180, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,166, 8, 2, 0,231, 8, 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 44, 0, 57, 1, 8, 0, 7, 0,232, 8, 7, 0,233, 8, 7, 0,234, 8, 7, 0,235, 8, 7, 0,236, 8, 7, 0,237, 8, 7, 0,238, 8, 7, 0,239, 8, 22, 1, 16, 0, 27, 0, 31, 0, 0, 0, 34, 0, 43, 0,147, 0, 9, 0,220, 0, 43, 0,240, 8, 36, 0, 79, 0, 7, 0,249, 3, 7, 0,241, 8, 7, 0,195, 8, 7, 0,232, 8, 7, 0,233, 8, 7, 0,242, 8, 4, 0, 90, 0, 4, 0, 37, 0, 9, 0,243, 8, 9, 0,244, 8, - 74, 1, 15, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 8, 1,245, 8,217, 0, 68, 6, - 22, 1, 65, 8, 2, 0, 69, 1, 2, 0,193, 8, 2, 0, 79, 2, 2, 0, 80, 2, 2, 0, 19, 0, 2, 0,119, 6, 4, 0, 69, 0, + 74, 1, 15, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 20, 6, 4, 0, 21, 6, 7, 0, 22, 6, 8, 1,245, 8,217, 0, 72, 6, + 22, 1, 65, 8, 2, 0, 69, 1, 2, 0,193, 8, 2, 0, 79, 2, 2, 0, 80, 2, 2, 0, 19, 0, 2, 0,123, 6, 4, 0, 69, 0, 75, 1, 6, 0, 75, 1, 0, 0, 75, 1, 1, 0, 32, 0, 44, 0, 9, 0,246, 8, 4, 0,244, 0, 4, 0, 37, 0, 67, 0, 4, 0, 27, 0, 31, 0, 12, 0,247, 8, 4, 0,126, 0, 7, 0,248, 8, 76, 1, 27, 0, 76, 1, 0, 0, 76, 1, 1, 0, 26, 0,249, 8, 76, 1, 38, 0, 12, 0,250, 8, 0, 0, 20, 0, 7, 0,251, 8, 7, 0,252, 8, 7, 0,253, 8, 7, 0,254, 8, 4, 0, 19, 0, 7, 0,255, 8, 7, 0, 0, 9, 7, 0, 1, 9, 7, 0, 76, 1, 7, 0, 25, 2, 7, 0, 2, 9, 7, 0,182, 2, 7, 0, 3, 9, 7, 0, 4, 9, 7, 0, 5, 9, 7, 0, 6, 9, 7, 0, 7, 9, 7, 0,169, 0, 4, 0,126, 0, 2, 0,139, 5, 2, 0,176, 4, 77, 1, 25, 0, 27, 0, 31, 0, 39, 0, 74, 0, 12, 0, 8, 9, 12, 0, 9, 9, 12, 0, 10, 9, 76, 1, 11, 9, 9, 0, 12, 9, - 9, 0, 13, 9, 4, 0, 19, 0, 4, 0, 25, 6, 2, 0,240, 2, 2, 0, 78, 6, 4, 0, 37, 0, 4, 0,126, 0, 4, 0, 14, 9, + 9, 0, 13, 9, 4, 0, 19, 0, 4, 0, 29, 6, 2, 0,240, 2, 2, 0, 82, 6, 4, 0, 37, 0, 4, 0,126, 0, 4, 0, 14, 9, 2, 0, 15, 9, 2, 0, 16, 9, 2, 0, 17, 9, 2, 0, 18, 9, 4, 0, 19, 9, 4, 0, 20, 9, 4, 0, 21, 9, 4, 0, 22, 9, 4, 0, 23, 9, 4, 0, 24, 9, 78, 1, 2, 0, 7, 0,142, 2, 4, 0, 19, 0,165, 0, 5, 0, 78, 1, 25, 9, 4, 0,182, 2, 4, 0, 26, 9, 4, 0, 27, 9, 4, 0, 19, 0,164, 0, 16, 0, 4, 0, 28, 9, 4, 0, 29, 9, 4, 0, 30, 9, 4, 0, 31, 9, @@ -9518,13 +9530,13 @@ char datatoc_startup_blend[]= { 83, 1, 0, 0, 83, 1, 1, 0, 12, 0, 86, 9, 4, 0, 19, 0, 4, 0, 87, 9, 0, 0,240, 3,254, 0, 88, 9,161, 0, 7, 0, 27, 0, 31, 0, 12, 0, 89, 9, 12, 0, 66, 9, 12, 0, 90, 9, 12, 0,100, 0, 4, 0, 19, 0, 4, 0, 91, 9,221, 0, 5, 0, 27, 0, 92, 9, 12, 0, 66, 9, 67, 0, 93, 9, 4, 0, 94, 9, 4, 0, 19, 0, 84, 1, 13, 0,216, 0, 0, 0,216, 0, 1, 0, - 12, 0, 16, 6, 4, 0, 17, 6, 7, 0, 18, 6, 2, 0, 19, 6,217, 0, 68, 6,161, 0, 94, 3,221, 0, 95, 9, 0, 0, 69, 1, - 0, 0, 71, 6, 2, 0, 19, 0, 7, 0, 96, 9, 85, 1, 8, 0, 85, 1, 0, 0, 85, 1, 1, 0, 83, 1, 97, 9, 36, 0, 79, 0, + 12, 0, 20, 6, 4, 0, 21, 6, 7, 0, 22, 6, 2, 0, 23, 6,217, 0, 72, 6,161, 0, 94, 3,221, 0, 95, 9, 0, 0, 69, 1, + 0, 0, 75, 6, 2, 0, 19, 0, 7, 0, 96, 9, 85, 1, 8, 0, 85, 1, 0, 0, 85, 1, 1, 0, 83, 1, 97, 9, 36, 0, 79, 0, 12, 0,100, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0, 98, 9, 86, 1, 5, 0, 86, 1, 0, 0, 86, 1, 1, 0, 36, 0, 79, 0, 2, 0, 19, 0, 0, 0, 99, 9, 87, 1, 14, 0, 87, 1, 0, 0, 87, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0,100, 9, 0, 0,101, 9, 0, 0, 99, 9, 7, 0,102, 9, 7, 0,103, 9, 4, 0, 37, 0, 36, 0, 79, 0, 7, 0,104, 9, 7, 0,105, 9, 88, 1, 9, 0, 88, 1, 0, 0, 88, 1, 1, 0, 32, 0,106, 9, 0, 0,243, 2, 7, 0,107, 9, 2, 0,108, 9, - 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,109, 9, 89, 1, 7, 0, 42, 0,129, 6, 26, 0,249, 8, 4, 0, 19, 0, 4, 0,110, 9, + 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,109, 9, 89, 1, 7, 0, 42, 0,133, 6, 26, 0,249, 8, 4, 0, 19, 0, 4, 0,110, 9, 12, 0,111, 9, 32, 0,106, 9, 0, 0,243, 2, 90, 1, 15, 0, 32, 0,106, 9, 2, 0,112, 9, 2, 0, 19, 0, 2, 0,113, 9, 2, 0,114, 9, 0, 0,243, 2, 32, 0,115, 9, 0, 0,116, 9, 7, 0,117, 9, 7, 0, 25, 2, 7, 0,118, 9, 7, 0,119, 9, 2, 0, 17, 0, 2, 0, 69, 1, 7, 0, 76, 1, 91, 1, 6, 0, 32, 0,106, 9, 7, 0, 25, 9, 2, 0,120, 9, 2, 0,121, 9, @@ -9532,7 +9544,7 @@ char datatoc_startup_blend[]= { 0, 0,243, 2, 93, 1, 4, 0, 32, 0,106, 9, 4, 0, 19, 0, 4, 0,123, 9, 0, 0,243, 2, 94, 1, 4, 0, 32, 0,106, 9, 4, 0, 19, 0, 4, 0,123, 9, 0, 0,243, 2, 95, 1, 4, 0, 32, 0,106, 9, 4, 0, 19, 0, 4, 0,123, 9, 0, 0,243, 2, 96, 1, 2, 0, 4, 0, 19, 0, 7, 0,249, 3, 97, 1, 2, 0, 32, 0,106, 9, 0, 0,243, 2, 98, 1, 10, 0, 32, 0,106, 9, - 4, 0,125, 9, 7, 0,120, 0, 4, 0, 19, 0, 2, 0,122, 6, 2, 0,126, 9, 2, 0, 89, 0, 2, 0, 69, 0, 7, 0,127, 9, + 4, 0,125, 9, 7, 0,120, 0, 4, 0, 19, 0, 2, 0,126, 6, 2, 0,126, 9, 2, 0, 89, 0, 2, 0, 69, 0, 7, 0,127, 9, 0, 0,243, 2, 99, 1, 10, 0, 32, 0,106, 9, 2, 0, 17, 0, 2, 0, 43, 4, 4, 0, 87, 0, 4, 0, 88, 0, 7, 0,208, 8, 7, 0,209, 8, 4, 0, 37, 0,161, 0,186, 8, 0, 0,243, 2,100, 1, 4, 0, 32, 0,106, 9, 4, 0,121, 3, 4, 0,128, 9, 0, 0,243, 2,101, 1, 4, 0, 32, 0,106, 9, 4, 0,121, 3, 4, 0, 37, 0, 0, 0,243, 2,102, 1, 6, 0, 32, 0,106, 9, @@ -9557,7 +9569,7 @@ char datatoc_startup_blend[]= { 0, 0, 20, 0,116, 1,173, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,174, 9, 2, 0,175, 9, 2, 0,176, 9, 2, 0,177, 9, 4, 0, 89, 0, 7, 0,178, 9, 7, 0,179, 9, 4, 0,180, 9, 4, 0,181, 9,117, 1,182, 9,118, 1,183, 9,119, 1, 33, 0, 119, 1, 0, 0,119, 1, 1, 0,119, 1,184, 9, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 31, 8, 2, 0, 67, 8, - 2, 0,185, 9, 2, 0,128, 0, 2, 0,175, 9, 2, 0, 22, 8, 12, 0,181, 8, 12, 0,186, 9, 27, 0,162, 6, 9, 0,187, 9, + 2, 0,185, 9, 2, 0,128, 0, 2, 0,175, 9, 2, 0, 22, 8, 12, 0,181, 8, 12, 0,186, 9, 27, 0,166, 6, 9, 0,187, 9, 7, 0,178, 9, 7, 0,179, 9, 7, 0, 64, 2, 7, 0,188, 9, 2, 0,189, 9, 2, 0,190, 9, 7, 0,191, 9, 7, 0,192, 9, 2, 0,193, 9, 2, 0,194, 9, 9, 0,195, 9, 24, 0,196, 9, 24, 0,197, 9, 24, 0,198, 9,120, 1,148, 0,121, 1,199, 9, 122, 1,200, 9,118, 1, 8, 0,118, 1, 0, 0,118, 1, 1, 0,119, 1,201, 9,119, 1,202, 9,117, 1,203, 9,117, 1,182, 9, @@ -9567,13 +9579,13 @@ char datatoc_startup_blend[]= { 9, 0,219, 9,123, 1, 6, 0, 4, 0,119, 0, 4, 0,121, 0, 4, 0, 22, 8, 0, 0,220, 9, 0, 0,221, 9, 2, 0, 37, 0, 124, 1, 16, 0, 2, 0,230, 7, 2, 0,231, 7, 2, 0,222, 9, 2, 0,223, 9, 2, 0,224, 9, 2, 0, 67, 0, 7, 0,228, 2, 7, 0,225, 9, 7, 0,226, 9, 2, 0, 91, 1, 0, 0,227, 9, 0, 0,228, 9, 2, 0,229, 9, 2, 0, 37, 0, 4, 0,230, 9, - 4, 0,231, 9,125, 1, 9, 0, 7, 0,232, 9, 7, 0,233, 9, 7, 0,242, 8, 7, 0, 65, 3, 7, 0,234, 9, 7, 0, 84, 6, + 4, 0,231, 9,125, 1, 9, 0, 7, 0,232, 9, 7, 0,233, 9, 7, 0,242, 8, 7, 0, 65, 3, 7, 0,234, 9, 7, 0, 88, 6, 2, 0, 63, 3, 0, 0,235, 9, 0, 0, 37, 0,126, 1, 4, 0, 7, 0,236, 9, 7, 0,237, 9, 2, 0, 63, 3, 2, 0, 37, 0, 127, 1, 3, 0, 7, 0,238, 9, 7, 0, 53, 8, 7, 0, 15, 0,128, 1, 7, 0, 0, 0,250, 1, 2, 0, 9, 5, 2, 0, 10, 5, 2, 0, 11, 5, 2, 0,198, 4, 4, 0,121, 0, 4, 0, 41, 4,129, 1, 9, 0, 7, 0,239, 9, 7, 0,240, 9, 7, 0,241, 9, 7, 0, 75, 2, 7, 0,242, 9, 7, 0,243, 9, 7, 0,244, 9, 2, 0,245, 9, 2, 0,246, 9,130, 1, 4, 0, 2, 0,247, 9, 2, 0,248, 9, 2, 0,249, 9, 2, 0,250, 9,131, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,132, 1, 2, 0, 0, 0,163, 0, - 0, 0,251, 9,133, 1, 1, 0, 0, 0, 20, 0,134, 1, 10, 0, 0, 0,252, 9, 0, 0,253, 9, 0, 0, 77, 6, 0, 0,254, 9, + 0, 0,251, 9,133, 1, 1, 0, 0, 0, 20, 0,134, 1, 10, 0, 0, 0,252, 9, 0, 0,253, 9, 0, 0, 81, 6, 0, 0,254, 9, 2, 0,222, 9, 2, 0,255, 9, 7, 0, 0, 10, 7, 0, 1, 10, 7, 0, 2, 10, 7, 0,164, 9,135, 1, 2, 0, 9, 0, 3, 10, 9, 0, 4, 10,136, 1, 11, 0, 0, 0, 11, 5, 0, 0, 17, 0, 0, 0, 63, 3, 0, 0, 65, 3, 0, 0, 5, 10, 0, 0,106, 0, 0, 0, 59, 2, 7, 0, 6, 10, 7, 0, 7, 10, 7, 0, 8, 10, 7, 0, 9, 10,137, 1, 8, 0, 7, 0,147, 8, 7, 0,120, 0, @@ -9589,7 +9601,7 @@ char datatoc_startup_blend[]= { 4, 0, 49, 10, 7, 0, 50, 10, 7, 0, 51, 10, 4, 0, 52, 10, 7, 0, 53, 10, 4, 0, 54, 10, 7, 0, 55, 10,234, 0, 56, 10, 7, 0, 57, 10, 7, 0, 58, 10, 7, 0, 59, 10, 7, 0, 60, 10, 4, 0, 61, 10, 4, 0, 37, 0,144, 1, 4, 0, 47, 0,220, 2, 7, 0, 62, 10, 7, 0,158, 1, 7, 0, 37, 0,194, 0, 35, 0, 27, 0, 31, 0,144, 1, 63, 10, 63, 0, 29, 10, 51, 0, 64, 10, - 57, 0, 65, 10, 0, 0, 66, 10, 0, 0, 67, 10, 30, 0,148, 0, 0, 0, 68, 10, 7, 0, 69, 10, 2, 0,236, 5, 2, 0, 37, 0, + 57, 0, 65, 10, 0, 0, 66, 10, 0, 0, 67, 10, 30, 0,148, 0, 0, 0, 68, 10, 7, 0, 69, 10, 2, 0,240, 5, 2, 0, 37, 0, 4, 0,106, 0, 4, 0, 19, 0, 7, 0, 70, 10, 4, 0, 72, 2, 4, 0, 71, 10, 7, 0, 72, 10, 7, 0, 73, 10, 7, 0, 74, 10, 7, 0,158, 1, 4, 0, 75, 10, 7, 0, 76, 10, 0, 0, 77, 10, 0, 0, 78, 10, 0, 0, 79, 10, 0, 0,226, 1, 7, 0, 80, 10, 7, 0, 81, 10, 7, 0, 82, 10, 7, 0, 83, 10, 4, 0, 84, 10, 7, 0, 85, 10, 7, 0, 86, 10, 7, 0, 87, 10,145, 1, 10, 0, @@ -9597,7 +9609,7 @@ char datatoc_startup_blend[]= { 0, 0, 20, 0, 9, 0, 2, 0,146, 1, 1, 0, 0, 0, 15, 8, 91, 0, 7, 0,145, 1, 91, 10, 4, 0, 92, 10, 4, 0, 93, 10, 4, 0, 94, 10, 4, 0, 37, 0, 9, 0, 95, 10,146, 1, 96, 10,147, 1, 5, 0, 7, 0,142, 2, 7, 0,210, 2, 7, 0, 25, 2, 2, 0,118, 2, 2, 0, 37, 0,148, 1, 5, 0, 7, 0,142, 2, 7, 0, 97, 10, 7, 0, 98, 10, 7, 0, 99, 10, 7, 0,210, 2, -149, 1, 5, 0, 32, 0,100, 10,150, 1, 22, 0, 7, 0,206, 5, 7, 0,101, 10, 7, 0, 56, 0,151, 1, 7, 0, 4, 0,102, 10, +149, 1, 5, 0, 32, 0,100, 10,150, 1, 22, 0, 7, 0,210, 5, 7, 0,101, 10, 7, 0, 56, 0,151, 1, 7, 0, 4, 0,102, 10, 4, 0,103, 10, 4, 0,104, 10, 7, 0,105, 10, 7, 0,106, 10, 7, 0,107, 10, 7, 0, 56, 0,152, 1, 8, 0,152, 1, 0, 0, 152, 1, 1, 0, 32, 0, 44, 0, 4, 0,252, 0, 2, 0, 19, 0, 2, 0, 69, 1, 7, 0,210, 2, 7, 0,155, 8,153, 1, 6, 0, 153, 1, 0, 0,153, 1, 1, 0, 32, 0, 44, 0, 2, 0,195, 2, 2, 0, 19, 0, 2, 0,108, 10,154, 1, 17, 0,148, 1,177, 3, @@ -9624,7 +9636,7 @@ char datatoc_startup_blend[]= { 7, 0,213, 10, 4, 0,184, 2, 4, 0, 56, 0, 4, 0, 19, 0, 4, 0,115, 8, 4, 0,214, 10, 4, 0,215, 10, 4, 0,216, 10, 2, 0,244, 0, 2, 0,217, 10, 2, 0,218, 10, 2, 0,219, 10, 0, 0,220, 10, 2, 0,221, 10, 2, 0,222, 10, 2, 0,223, 10, 9, 0,224, 10,136, 0, 62, 4, 12, 0,253, 2, 12, 0,225, 10,159, 1,226, 10,160, 1,227, 10, 7, 0,228, 10,134, 0, 37, 0, -161, 1,243, 8, 7, 0, 32, 4, 7, 0,229, 10, 7, 0,230, 10, 7, 0,206, 5, 7, 0,144, 3, 7, 0,134, 3, 7, 0,231, 10, +161, 1,243, 8, 7, 0, 32, 4, 7, 0,229, 10, 7, 0,230, 10, 7, 0,210, 5, 7, 0,144, 3, 7, 0,134, 3, 7, 0,231, 10, 7, 0, 74, 2, 7, 0,232, 10, 7, 0,233, 10, 7, 0,234, 10, 7, 0,235, 10, 7, 0,236, 10, 7, 0,237, 10, 7, 0, 33, 4, 7, 0,238, 10, 7, 0,239, 10, 7, 0,240, 10, 7, 0, 34, 4, 7, 0, 30, 4, 7, 0, 31, 4, 7, 0,241, 10, 7, 0,242, 10, 4, 0,243, 10, 4, 0, 90, 0, 4, 0,244, 10, 4, 0,245, 10, 2, 0,246, 10, 2, 0,247, 10, 2, 0,248, 10, 2, 0,249, 10, @@ -9639,24 +9651,24 @@ char datatoc_startup_blend[]= { 214, 0, 18, 11,168, 1, 3, 0, 7, 0, 84, 5, 7, 0, 19, 11, 7, 0, 20, 11,169, 1, 17, 0, 27, 0, 31, 0,170, 1, 21, 11, 170, 1, 22, 11, 12, 0, 23, 11, 4, 0, 24, 11, 2, 0, 25, 11, 2, 0, 26, 11, 12, 0, 27, 11, 12, 0, 28, 11,167, 1, 29, 11, 12, 0, 30, 11, 12, 0, 31, 11, 12, 0, 32, 11, 12, 0, 33, 11,171, 1, 34, 11, 12, 0, 35, 11,214, 0, 36, 11,170, 1, 31, 0, -170, 1, 0, 0,170, 1, 1, 0, 9, 0, 37, 11, 4, 0,208, 7, 2, 0, 38, 11, 2, 0, 37, 0,219, 0, 67, 6,219, 0, 39, 11, +170, 1, 0, 0,170, 1, 1, 0, 9, 0, 37, 11, 4, 0,208, 7, 2, 0, 38, 11, 2, 0, 37, 0,219, 0, 71, 6,219, 0, 39, 11, 0, 0, 40, 11, 2, 0, 41, 11, 2, 0, 42, 11, 2, 0,230, 7, 2, 0,231, 7, 2, 0, 43, 11, 2, 0, 44, 11, 2, 0,183, 3, - 2, 0,190, 6, 2, 0, 45, 11, 2, 0, 46, 11, 2, 0,213, 9,172, 1, 47, 11,173, 1, 48, 11,174, 1, 49, 11, 4, 0, 50, 11, + 2, 0,194, 6, 2, 0, 45, 11, 2, 0, 46, 11, 2, 0,213, 9,172, 1, 47, 11,173, 1, 48, 11,174, 1, 49, 11, 4, 0, 50, 11, 4, 0, 51, 11, 9, 0, 52, 11, 12, 0, 28, 11, 12, 0,250, 7, 12, 0, 53, 11, 12, 0, 54, 11, 12, 0, 55, 11,175, 1, 17, 0, 175, 1, 0, 0,175, 1, 1, 0, 0, 0, 56, 11, 26, 0, 30, 0, 2, 0, 57, 11, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0, 58, 11, 2, 0, 59, 11, 2, 0, 60, 11, 2, 0, 61, 11, 2, 0, 62, 11, 2, 0, 19, 0, 2, 0, 63, 11, 2, 0, 31, 0, 2, 0, 37, 0, 176, 1, 64, 11,177, 1, 10, 0,177, 1, 0, 0,177, 1, 1, 0, 12, 0, 65, 11, 0, 0, 56, 11, 2, 0, 66, 11, 2, 0, 67, 11, 2, 0, 19, 0, 2, 0, 68, 11, 4, 0, 69, 11, 9, 0, 70, 11,171, 1, 7, 0,171, 1, 0, 0,171, 1, 1, 0, 0, 0, 56, 11, - 0, 0, 71, 11, 12, 0,156, 7, 4, 0, 72, 11, 4, 0, 19, 0,227, 0, 14, 0,227, 0, 0, 0,227, 0, 1, 0, 0, 0, 56, 11, + 0, 0, 71, 11, 12, 0,160, 7, 4, 0, 72, 11, 4, 0, 19, 0,227, 0, 14, 0,227, 0, 0, 0,227, 0, 1, 0, 0, 0, 56, 11, 26, 0, 30, 0,178, 1,224, 7, 9, 0, 73, 11, 9, 0, 74, 11,176, 1, 64, 11,167, 1, 75, 11, 12, 0, 76, 11,227, 0, 77, 11, - 7, 1,103, 6, 2, 0, 19, 0, 2, 0,176, 4,179, 1, 8, 0,179, 1, 0, 0,179, 1, 1, 0, 9, 0, 2, 0, 9, 0, 78, 11, + 7, 1,107, 6, 2, 0, 19, 0, 2, 0,176, 4,179, 1, 8, 0,179, 1, 0, 0,179, 1, 1, 0, 9, 0, 2, 0, 9, 0, 78, 11, 0, 0,240, 3, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0, 79, 11,180, 1, 5, 0, 7, 0, 80, 11, 4, 0, 81, 11, 4, 0, 82, 11, 4, 0, 69, 1, 4, 0, 19, 0,181, 1, 6, 0, 7, 0, 83, 11, 7, 0, 84, 11, 7, 0, 85, 11, 7, 0, 86, 11, 4, 0, 17, 0, 4, 0, 19, 0,182, 1, 5, 0, 7, 0,208, 8, 7, 0,209, 8, 7, 0,210, 2, 2, 0, 28, 2, 2, 0, 29, 2,183, 1, 5, 0, 182, 1, 2, 0, 4, 0, 53, 0, 7, 0, 87, 11, 7, 0,208, 8, 7, 0,209, 8,184, 1, 4, 0, 2, 0, 88, 11, 2, 0, 89, 11, - 2, 0, 90, 11, 2, 0, 91, 11,185, 1, 2, 0, 42, 0,156, 6, 26, 0,249, 8,186, 1, 3, 0, 24, 0, 92, 11, 4, 0, 19, 0, + 2, 0, 90, 11, 2, 0, 91, 11,185, 1, 2, 0, 42, 0,160, 6, 26, 0,249, 8,186, 1, 3, 0, 24, 0, 92, 11, 4, 0, 19, 0, 4, 0, 37, 0,187, 1, 6, 0, 7, 0,106, 0, 7, 0,212, 2, 7, 0, 93, 11, 7, 0, 37, 0, 2, 0,243, 0, 2, 0, 94, 11, -188, 1, 5, 0, 7, 0, 95, 11, 7, 0,120, 0, 7, 0, 26, 9, 7, 0, 27, 9, 4, 0, 19, 0,189, 1, 6, 0, 27, 0,162, 6, +188, 1, 5, 0, 7, 0, 95, 11, 7, 0,120, 0, 7, 0, 26, 9, 7, 0, 27, 9, 4, 0, 19, 0,189, 1, 6, 0, 27, 0,166, 6, 0, 0, 96, 11, 0, 0, 97, 11, 2, 0, 98, 11, 2, 0, 19, 0, 4, 0, 99, 11,190, 1, 7, 0,190, 1, 0, 0,190, 1, 1, 0, 0, 0,240, 3,189, 1,100, 11, 2, 0,101, 11, 2, 0, 17, 0, 7, 0, 60, 0,191, 1, 7, 0, 12, 0,102, 11, 0, 0,103, 11, 9, 0,104, 11, 7, 0, 60, 0, 7, 0, 79, 11, 4, 0, 17, 0, 4, 0, 19, 0,192, 1, 3, 0, 7, 0,105, 11, 4, 0, 19, 0, @@ -9667,7 +9679,7 @@ char datatoc_startup_blend[]= { 12, 0,102, 3, 0, 0,240, 3, 7, 0, 79, 11, 7, 0,116, 11, 7, 0, 87, 0, 7, 0, 88, 0, 7, 0,160, 9, 7, 0,161, 9, 7, 0,229, 2, 7, 0,164, 9, 7, 0,188, 8, 7, 0,165, 9, 2, 0,117, 11, 2, 0,118, 11, 2, 0, 89, 0, 2, 0, 17, 0, 4, 0, 19, 0, 4, 0, 69, 0,197, 1, 6, 0,197, 1, 0, 0,197, 1, 1, 0, 12, 0,113, 11, 4, 0, 19, 0, 4, 0,146, 2, - 0, 0,240, 3,198, 1, 11, 0,198, 1, 0, 0,198, 1, 1, 0, 27, 0,162, 6, 0, 0,119, 11, 4, 0, 99, 11, 2, 0,120, 11, + 0, 0,240, 3,198, 1, 11, 0,198, 1, 0, 0,198, 1, 1, 0, 27, 0,166, 6, 0, 0,119, 11, 4, 0, 99, 11, 2, 0,120, 11, 2, 0, 37, 0, 0, 0, 96, 11, 4, 0,107, 11, 2, 0, 19, 0, 2, 0,121, 11,199, 1, 8, 0,199, 1, 0, 0,199, 1, 1, 0, 12, 0,122, 11, 0, 0,240, 3, 0, 0,123, 11, 2, 0, 19, 0, 2, 0,121, 11, 4, 0,124, 11,200, 1, 5, 0,200, 1, 0, 0, 200, 1, 1, 0, 0, 0, 96, 11, 4, 0,107, 11, 7, 0,200, 2, 39, 0, 12, 0,161, 0, 94, 3,161, 0,125, 11,195, 1,114, 11, diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index 5ac6faa979e..3f943f7b1b0 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -1521,17 +1521,4 @@ void init_userdef_do_versions(void) /* this timer uses U */ // XXX reset_autosave(); - /* GSOC Sculpt 2010 - Sanity check on Sculpt/Paint settings */ - - if (U.sculpt_paint_unified_alpha == 0) - U.sculpt_paint_unified_alpha = 0.5f; - - if (U.sculpt_paint_unified_unprojected_radius == 0) - U.sculpt_paint_unified_unprojected_radius = 0.125f; - - if (U.sculpt_paint_unified_size == 0) - U.sculpt_paint_unified_size = 35; - - if (G.main->versionfile < 253 || (G.main->versionfile == 253 && G.main->subversionfile < 1)) - U.sculpt_paint_settings &= ~SCULPT_PAINT_USE_UNIFIED_SIZE; } diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index 4b352e7f9d9..c1d1f709c5e 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -1334,7 +1334,7 @@ float project_paint_uvpixel_mask( // This only works when the opacity dosnt change while painting, stylus pressure messes with this // so dont use it. - // if (ps->is_airbrush==0) mask *= ps->brush->alpha; + // if (ps->is_airbrush==0) mask *= brush_alpha(ps->brush); return mask; } @@ -2809,6 +2809,8 @@ static void project_paint_begin(ProjPaintState *ps) MVert *mv; MemArena *arena; /* at the moment this is just ps->arena_mt[0], but use this to show were not multithreading */ + + const int diameter= 2*brush_size(ps->brush); /* ---- end defines ---- */ @@ -3030,11 +3032,11 @@ static void project_paint_begin(ProjPaintState *ps) if(ps->source==PROJ_SRC_VIEW) { #ifdef PROJ_DEBUG_WINCLIP - CLAMP(ps->screenMin[0], (float)(-ps->brush->size), (float)(ps->winx + ps->brush->size)); - CLAMP(ps->screenMax[0], (float)(-ps->brush->size), (float)(ps->winx + ps->brush->size)); + CLAMP(ps->screenMin[0], (float)(-diameter), (float)(ps->winx + diameter)); + CLAMP(ps->screenMax[0], (float)(-diameter), (float)(ps->winx + diameter)); - CLAMP(ps->screenMin[1], (float)(-ps->brush->size), (float)(ps->winy + ps->brush->size)); - CLAMP(ps->screenMax[1], (float)(-ps->brush->size), (float)(ps->winy + ps->brush->size)); + CLAMP(ps->screenMin[1], (float)(-diameter), (float)(ps->winy + diameter)); + CLAMP(ps->screenMax[1], (float)(-diameter), (float)(ps->winy + diameter)); #endif } else { /* reprojection, use bounds */ @@ -3049,8 +3051,8 @@ static void project_paint_begin(ProjPaintState *ps) ps->screen_width = ps->screenMax[0] - ps->screenMin[0]; ps->screen_height = ps->screenMax[1] - ps->screenMin[1]; - ps->buckets_x = (int)(ps->screen_width / (((float)ps->brush->size) / PROJ_BUCKET_BRUSH_DIV)); - ps->buckets_y = (int)(ps->screen_height / (((float)ps->brush->size) / PROJ_BUCKET_BRUSH_DIV)); + ps->buckets_x = (int)(ps->screen_width / (((float)diameter) / PROJ_BUCKET_BRUSH_DIV)); + ps->buckets_y = (int)(ps->screen_height / (((float)diameter) / PROJ_BUCKET_BRUSH_DIV)); /* printf("\tscreenspace bucket division x:%d y:%d\n", ps->buckets_x, ps->buckets_y); */ @@ -3448,16 +3450,16 @@ static int project_bucket_iter_init(ProjPaintState *ps, const float mval_f[2]) { if(ps->source==PROJ_SRC_VIEW) { float min_brush[2], max_brush[2]; - float size_half = ((float)ps->brush->size) * 0.5f; + const float radius = (float)brush_size(ps->brush); /* so we dont have a bucket bounds that is way too small to paint into */ - // if (size_half < 1.0f) size_half = 1.0f; // this dosnt work yet :/ + // if (radius < 1.0f) radius = 1.0f; // this doesn't work yet :/ - min_brush[0] = mval_f[0] - size_half; - min_brush[1] = mval_f[1] - size_half; + min_brush[0] = mval_f[0] - radius; + min_brush[1] = mval_f[1] - radius; - max_brush[0] = mval_f[0] + size_half; - max_brush[1] = mval_f[1] + size_half; + max_brush[0] = mval_f[0] + radius; + max_brush[1] = mval_f[1] + radius; /* offset to make this a valid bucket index */ project_paint_bucket_bounds(ps, min_brush, max_brush, ps->bucketMin, ps->bucketMax); @@ -3486,6 +3488,8 @@ static int project_bucket_iter_init(ProjPaintState *ps, const float mval_f[2]) static int project_bucket_iter_next(ProjPaintState *ps, int *bucket_index, rctf *bucket_bounds, const float mval[2]) { + const int diameter= 2*brush_size(ps->brush); + if (ps->thread_tot > 1) BLI_lock_thread(LOCK_CUSTOM1); @@ -3498,7 +3502,7 @@ static int project_bucket_iter_next(ProjPaintState *ps, int *bucket_index, rctf project_bucket_bounds(ps, ps->context_bucket_x, ps->context_bucket_y, bucket_bounds); if ( (ps->source != PROJ_SRC_VIEW) || - project_bucket_isect_circle(ps->context_bucket_x, ps->context_bucket_y, mval, (float)(ps->brush->size * ps->brush->size), bucket_bounds) + project_bucket_isect_circle(ps->context_bucket_x, ps->context_bucket_y, mval, (float)(diameter*diameter), bucket_bounds) ) { *bucket_index = ps->context_bucket_x + (ps->context_bucket_y * ps->buckets_x); ps->context_bucket_x++; @@ -3685,7 +3689,6 @@ static void *do_projectpaint_thread(void *ph_v) float rgba[4], alpha, dist_nosqrt, dist; - float brush_size_sqared; float falloff; int bucket_index; int is_floatbuf = 0; @@ -3697,14 +3700,15 @@ static void *do_projectpaint_thread(void *ph_v) float co[2]; float mask = 1.0f; /* airbrush wont use mask */ unsigned short mask_short; - float size_half = ((float)ps->brush->size) * 0.5f; + const float radius= (float)brush_size(ps->brush); + const float radius_squared= radius*radius; /* avoid a square root with every dist comparison */ + short lock_alpha= ELEM(ps->brush->blend, IMB_BLEND_ERASE_ALPHA, IMB_BLEND_ADD_ALPHA) ? 0 : ps->brush->flag & BRUSH_LOCK_ALPHA; LinkNode *smearPixels = NULL; LinkNode *smearPixels_f = NULL; MemArena *smearArena = NULL; /* mem arena for this brush projection only */ - if (tool==PAINT_TOOL_SMEAR) { pos_ofs[0] = pos[0] - lastpos[0]; pos_ofs[1] = pos[1] - lastpos[1]; @@ -3712,9 +3716,6 @@ static void *do_projectpaint_thread(void *ph_v) smearArena = BLI_memarena_new(1<<16, "paint smear arena"); } - /* avoid a square root with every dist comparison */ - brush_size_sqared = (float)(ps->brush->size * ps->brush->size); - /* printf("brush bounds %d %d %d %d\n", bucketMin[0], bucketMin[1], bucketMax[0], bucketMax[1]); */ while (project_bucket_iter_next(ps, &bucket_index, &bucket_bounds, pos)) { @@ -3735,7 +3736,7 @@ static void *do_projectpaint_thread(void *ph_v) bicubic_interpolation_color(ps->reproject_ibuf, projPixel->newColor.ch, NULL, projPixel->projCoSS[0], projPixel->projCoSS[1]); if(projPixel->newColor.ch[3]) { mask = ((float)projPixel->mask)/65535.0f; - blend_color_mix_accum(projPixel->pixel.ch_pt, projPixel->origColor.ch, projPixel->newColor.ch, (mask*projPixel->newColor.ch[3])); + blend_color_mix_accum(projPixel->pixel.ch_pt, projPixel->origColor.ch, projPixel->newColor.ch, (int)(mask*projPixel->newColor.ch[3])); } } @@ -3750,9 +3751,11 @@ static void *do_projectpaint_thread(void *ph_v) /*dist = len_v2v2(projPixel->projCoSS, pos);*/ /* correct but uses a sqrtf */ dist_nosqrt = Vec2Lenf_nosqrt(projPixel->projCoSS, pos); - /*if (dist < s->brush->size) {*/ /* correct but uses a sqrtf */ - if (dist_nosqrt < brush_size_sqared && (dist=sqrtf(dist_nosqrt)) < size_half) { - falloff = brush_curve_strength_clamp(ps->brush, dist, size_half); + /*if (dist < radius) {*/ /* correct but uses a sqrtf */ + if (dist_nosqrt <= radius_squared) { + dist=sqrtf(dist_nosqrt); + + falloff = brush_curve_strength_clamp(ps->brush, dist, radius); if (falloff > 0.0f) { if (ps->is_texbrush) { @@ -3764,7 +3767,7 @@ static void *do_projectpaint_thread(void *ph_v) if (ps->is_airbrush) { /* for an aurbrush there is no real mask, so just multiply the alpha by it */ - alpha *= falloff * ps->brush->alpha; + alpha *= falloff * brush_alpha(ps->brush); mask = ((float)projPixel->mask)/65535.0f; } else { @@ -3772,7 +3775,7 @@ static void *do_projectpaint_thread(void *ph_v) falloff = 1.0f - falloff; falloff = 1.0f - (falloff * falloff); - mask_short = (unsigned short)(projPixel->mask * (ps->brush->alpha * falloff)); + mask_short = (unsigned short)(projPixel->mask * (brush_alpha(ps->brush) * falloff)); if (mask_short > projPixel->mask_max) { mask = ((float)mask_short)/65535.0f; projPixel->mask_max = mask_short; @@ -4520,7 +4523,7 @@ typedef struct PaintOperation { int first; int prevmouse[2]; float prev_pressure; /* need this since we dont get tablet events for pressure change */ - int brush_size_orig; + int orig_brush_size; double starttime; ViewContext vc; @@ -4653,7 +4656,7 @@ static int texture_paint_init(bContext *C, wmOperator *op) if(pop->mode == PAINT_MODE_3D && (pop->s.tool == PAINT_TOOL_CLONE)) pop->s.tool = PAINT_TOOL_DRAW; pop->s.blend = brush->blend; - pop->brush_size_orig= brush->size; + pop->orig_brush_size= brush_size(brush); if(pop->mode != PAINT_MODE_2D) { pop->s.ob = OBACT; @@ -4685,8 +4688,8 @@ static int texture_paint_init(bContext *C, wmOperator *op) return 0; /* Dont allow brush size below 2 */ - if (brush->size <= 1) - brush->size = 2; + if (brush_size(brush) < 2) + brush_set_size(brush, 2); /* allocate and initialize spacial data structures */ project_paint_begin(&pop->ps); @@ -4756,7 +4759,7 @@ static void paint_exit(bContext *C, wmOperator *op) brush_painter_free(pop->painter); if(pop->mode == PAINT_MODE_3D_PROJECT) { - pop->ps.brush->size = pop->brush_size_orig; + brush_set_size(pop->ps.brush, pop->orig_brush_size); project_paint_end(&pop->ps); } @@ -4827,7 +4830,7 @@ static void paint_apply_event(bContext *C, wmOperator *op, wmEvent *event) /* special exception here for too high pressure values on first touch in windows for some tablets, then we just skip first touch .. */ - if ((pop->s.brush->flag & (BRUSH_ALPHA_PRESSURE|BRUSH_SIZE_PRESSURE|BRUSH_SPACING_PRESSURE)) && tablet && (pressure >= 0.99f)) + if (tablet && (pressure >= 0.99f) && (pop->s.brush->flag & BRUSH_SPACING_PRESSURE) && brush_use_alpha_pressure(pop->s.brush) && brush_use_size_pressure(pop->s.brush)) return; /* This can be removed once fixed properly in @@ -4946,9 +4949,14 @@ static int get_imapaint_zoom(bContext *C, float *zoomx, float *zoomy) static void brush_drawcursor(bContext *C, int x, int y, void *customdata) { Brush *brush= image_paint_brush(C); + Paint *paint= paint_get_active(CTX_data_scene(C)); - if(brush) { + if(paint && brush) { float zoomx, zoomy; + + if(!(paint->flags & PAINT_SHOW_BRUSH)) + return; + glPushMatrix(); glTranslatef((float)x, (float)y, 0.0f); @@ -4956,13 +4964,13 @@ static void brush_drawcursor(bContext *C, int x, int y, void *customdata) if(get_imapaint_zoom(C, &zoomx, &zoomy)) glScalef(zoomx, zoomy, 1.0f); - glColor4ub(255, 255, 255, 128); + glColor4f(brush->add_col[0], brush->add_col[1], brush->add_col[2], 0.5f); glEnable( GL_LINE_SMOOTH ); glEnable(GL_BLEND); - glutil_draw_lined_arc(0, (float)(M_PI*2.0), brush->size*0.5f, 40); + glutil_draw_lined_arc(0, (float)(M_PI*2.0), (float)brush_size(brush), 40); glDisable(GL_BLEND); glDisable( GL_LINE_SMOOTH ); - + glPopMatrix(); } } @@ -4986,7 +4994,7 @@ static int paint_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *eve ToolSettings *ts = CTX_data_scene(C)->toolsettings; get_imapaint_zoom(C, &zoom, &zoom); toggle_paint_cursor(C, !ts->imapaint.paintcursor); - brush_radial_control_invoke(op, paint_brush(&ts->imapaint.paint), 0.5f * zoom); + brush_radial_control_invoke(op, paint_brush(&ts->imapaint.paint), zoom); return WM_radial_control_invoke(C, op, event); } @@ -5006,7 +5014,7 @@ static int paint_radial_control_exec(bContext *C, wmOperator *op) int ret; char str[256]; get_imapaint_zoom(C, &zoom, &zoom); - ret = brush_radial_control_exec(op, brush, 2.0f / zoom); + ret = brush_radial_control_exec(op, brush, 1.0f / zoom); WM_radial_control_string(op, str, 256); WM_event_add_notifier(C, NC_BRUSH|NA_EDITED, brush); @@ -5313,14 +5321,14 @@ static int texture_paint_radial_control_invoke(bContext *C, wmOperator *op, wmEv { ToolSettings *ts = CTX_data_scene(C)->toolsettings; toggle_paint_cursor(C, !ts->imapaint.paintcursor); - brush_radial_control_invoke(op, paint_brush(&ts->imapaint.paint), 0.5); + brush_radial_control_invoke(op, paint_brush(&ts->imapaint.paint), 1); return WM_radial_control_invoke(C, op, event); } static int texture_paint_radial_control_exec(bContext *C, wmOperator *op) { Brush *brush = paint_brush(&CTX_data_scene(C)->toolsettings->imapaint.paint); - int ret = brush_radial_control_exec(op, brush, 2); + int ret = brush_radial_control_exec(op, brush, 1); char str[256]; WM_radial_control_string(op, str, 256); @@ -5356,7 +5364,7 @@ void PAINT_OT_texture_paint_radial_control(wmOperatorType *ot) ot->poll= texture_paint_poll; /* flags */ - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING; } @@ -5425,8 +5433,8 @@ static int texture_paint_camera_project_exec(bContext *C, wmOperator *op) /* override */ ps.is_texbrush= 0; ps.is_airbrush= 1; - orig_brush_size= ps.brush->size; - ps.brush->size= 32; /* cover the whole image */ + orig_brush_size= brush_size(ps.brush); + brush_set_size(ps.brush, 32); /* cover the whole image */ ps.tool= PAINT_TOOL_DRAW; /* so pixels are initialized with minimal info */ @@ -5439,7 +5447,7 @@ static int texture_paint_camera_project_exec(bContext *C, wmOperator *op) project_paint_begin(&ps); if(ps.dm==NULL) { - ps.brush->size= orig_brush_size; + brush_set_size(ps.brush, orig_brush_size); return OPERATOR_CANCELLED; } else { @@ -5463,7 +5471,7 @@ static int texture_paint_camera_project_exec(bContext *C, wmOperator *op) project_paint_end(&ps); scene->toolsettings->imapaint.flag &= ~IMAGEPAINT_DRAWING; - ps.brush->size= orig_brush_size; + brush_set_size(ps.brush, orig_brush_size); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index fa9aae1a1e7..fd9df0e1bbb 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -69,24 +69,44 @@ void BRUSH_OT_add(wmOperatorType *ot) ot->exec= brush_add_exec; /* flags */ - ot->flag= OPTYPE_UNDO; + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } static int brush_scale_size_exec(bContext *C, wmOperator *op) { - /*int type = RNA_enum_get(op->ptr, "type");*/ - Paint *paint = paint_get_active(CTX_data_scene(C)); - Brush *br = paint_brush(paint); - Object *ob = CTX_data_active_object(C); - float factor = RNA_float_get(op->ptr, "scalar"); + Paint *paint= paint_get_active(CTX_data_scene(C)); + Brush *brush= paint_brush(paint); + Object *ob= CTX_data_active_object(C); + float scalar= RNA_float_get(op->ptr, "scalar"); - if (br) { - if (ob && (ob->mode & OB_MODE_SCULPT) && (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE)) { - U.sculpt_paint_unified_size *= factor; + if (brush) { + // pixel radius + { + const int old_size= brush_size(brush); + int size= (int)(scalar*old_size); + + if (old_size == size) + if (scalar > 1) { + size++; + } + else if (scalar < 1) { + size--; + } + + CLAMP(size, 1, 2000); // XXX magic number + + brush_set_size(brush, size); } - else { - br->size *= factor; + + // unprojected radius + { + float unprojected_radius= scalar*brush_unprojected_radius(brush); + + if (unprojected_radius < 0.001) // XXX magic number + unprojected_radius= 0.001f; + + brush_set_unprojected_radius(brush, unprojected_radius); } } @@ -104,7 +124,7 @@ void BRUSH_OT_scale_size(wmOperatorType *ot) ot->exec= brush_scale_size_exec; /* flags */ - ot->flag= OPTYPE_UNDO; + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; RNA_def_float(ot->srna, "scalar", 1, 0, 2, "Scalar", "Factor to scale brush size by", 0, 2); } diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c index 81f471481fb..5eeb8492019 100644 --- a/source/blender/editors/sculpt_paint/paint_stroke.c +++ b/source/blender/editors/sculpt_paint/paint_stroke.c @@ -227,7 +227,7 @@ static int same_snap(Snapshot* snap, Brush* brush, ViewContext* vc) mtex->size[1] == snap->size[1] && mtex->size[2] == snap->size[2] && mtex->rot == snap->rot) && - ((mtex->brush_map_mode == MTEX_MAP_MODE_FIXED && sculpt_get_brush_size(brush) <= snap->brush_size) || (sculpt_get_brush_size(brush) == snap->brush_size)) && // make brush smaller shouldn't cause a resample + ((mtex->brush_map_mode == MTEX_MAP_MODE_FIXED && brush_size(brush) <= snap->brush_size) || (brush_size(brush) == snap->brush_size)) && // make brush smaller shouldn't cause a resample mtex->brush_map_mode == snap->brush_map_mode && vc->ar->winx == snap->winx && vc->ar->winy == snap->winy; @@ -248,7 +248,7 @@ static void make_snap(Snapshot* snap, Brush* brush, ViewContext* vc) snap->rot = -1; } - snap->brush_size = sculpt_get_brush_size(brush); + snap->brush_size = brush_size(brush); snap->winx = vc->ar->winx; snap->winy = vc->ar->winy; } @@ -289,7 +289,7 @@ int load_tex(Sculpt *sd, Brush* br, ViewContext* vc) make_snap(&snap, br, vc); if (br->mtex.brush_map_mode == MTEX_MAP_MODE_FIXED) { - int s = sculpt_get_brush_size(br); + int s = brush_size(br); int r = 1; for (s >>= 1; s > 0; s >>= 1) @@ -330,7 +330,7 @@ int load_tex(Sculpt *sd, Brush* br, ViewContext* vc) // largely duplicated from tex_strength const float rotation = -br->mtex.rot; - float diameter = sculpt_get_brush_size(br); + float radius = brush_size(br); int index = j*size + i; float x; float avg; @@ -342,8 +342,8 @@ int load_tex(Sculpt *sd, Brush* br, ViewContext* vc) y -= 0.5f; if (br->mtex.brush_map_mode == MTEX_MAP_MODE_TILED) { - x *= vc->ar->winx / diameter; - y *= vc->ar->winy / diameter; + x *= vc->ar->winx / radius; + y *= vc->ar->winy / radius; } else { x *= 2; @@ -488,10 +488,10 @@ int sculpt_get_brush_geometry(bContext* C, int x, int y, int* pixel_radius, floa memcpy(viewport, stroke->mats.viewport, sizeof(int[4])); if (stroke->vc.obact->sculpt && stroke->vc.obact->sculpt->pbvh && sculpt_stroke_get_location(C, stroke, location, window)) { - *pixel_radius = project_brush_radius(stroke->vc.rv3d, sculpt_get_brush_unprojected_radius(stroke->brush), location, &stroke->mats); + *pixel_radius = project_brush_radius(stroke->vc.rv3d, brush_unprojected_radius(stroke->brush), location, &stroke->mats); if (*pixel_radius == 0) - *pixel_radius = sculpt_get_brush_size(stroke->brush); + *pixel_radius = brush_size(stroke->brush); mul_m4_v3(stroke->vc.obact->sculpt->ob->obmat, location); @@ -501,7 +501,7 @@ int sculpt_get_brush_geometry(bContext* C, int x, int y, int* pixel_radius, floa Sculpt* sd = CTX_data_tool_settings(C)->sculpt; Brush* brush = paint_brush(&sd->paint); - *pixel_radius = sculpt_get_brush_size(brush); + *pixel_radius = brush_size(brush); hit = 0; } @@ -556,7 +556,7 @@ static void paint_draw_cursor(bContext *C, int x, int y, void *unused) float* col; float alpha; - float visual_strength = sculpt_get_brush_alpha(brush)*sculpt_get_brush_alpha(brush); + float visual_strength = brush_alpha(brush)*brush_alpha(brush); const float min_alpha = 0.20f; const float max_alpha = 0.80f; @@ -577,13 +577,13 @@ static void paint_draw_cursor(bContext *C, int x, int y, void *unused) } } - if(!sculpt_get_lock_brush_size(brush) && !(paint->flags & PAINT_SHOW_BRUSH)) + if(!brush_use_locked_size(brush) && !(paint->flags & PAINT_SHOW_BRUSH)) return; hit = sculpt_get_brush_geometry(C, x, y, &pixel_radius, location, modelview, projection, viewport); - if (sculpt_get_lock_brush_size(brush)) - sculpt_set_brush_size(brush, pixel_radius); + if (brush_use_locked_size(brush)) + brush_set_size(brush, pixel_radius); // XXX: no way currently to know state of pen flip or invert key modifier without starting a stroke flip = 1; @@ -633,7 +633,7 @@ static void paint_draw_cursor(bContext *C, int x, int y, void *unused) glTranslatef(-0.5f, -0.5f, 0); - if (sd->draw_pressure && (brush->flag & BRUSH_SIZE_PRESSURE)) { + if (sd->draw_pressure && brush_use_size_pressure(brush)) { glTranslatef(0.5f, 0.5f, 0); glScalef(1.0f/sd->pressure_value, 1.0f/sd->pressure_value, 1); glTranslatef(-0.5f, -0.5f, 0); @@ -662,17 +662,19 @@ static void paint_draw_cursor(bContext *C, int x, int y, void *unused) glVertex2f(sd->anchored_initial_mouse[0]-sd->anchored_size - vc.ar->winrct.xmin, sd->anchored_initial_mouse[1]+sd->anchored_size - vc.ar->winrct.ymin); } else { + const int radius= brush_size(brush); + glTexCoord2f(0, 0); - glVertex2f((float)x-sculpt_get_brush_size(brush), (float)y-sculpt_get_brush_size(brush)); + glVertex2f((float)x-radius, (float)y-radius); glTexCoord2f(1, 0); - glVertex2f((float)x+sculpt_get_brush_size(brush), (float)y-sculpt_get_brush_size(brush)); + glVertex2f((float)x+radius, (float)y-radius); glTexCoord2f(1, 1); - glVertex2f((float)x+sculpt_get_brush_size(brush), (float)y+sculpt_get_brush_size(brush)); + glVertex2f((float)x+radius, (float)y+radius); glTexCoord2f(0, 1); - glVertex2f((float)x-sculpt_get_brush_size(brush), (float)y+sculpt_get_brush_size(brush)); + glVertex2f((float)x-radius, (float)y+radius); } } else { @@ -702,7 +704,7 @@ static void paint_draw_cursor(bContext *C, int x, int y, void *unused) // XXX duplicated from brush_strength & paint_stroke_add_step, refactor later //wmEvent* event = CTX_wm_window(C)->eventstate; - if (sd->draw_pressure && (brush->flag & BRUSH_ALPHA_PRESSURE)) + if (sd->draw_pressure && brush_use_alpha_pressure(brush)) visual_strength *= sd->pressure_value; // don't show effect of strength past the soft limit @@ -715,14 +717,14 @@ static void paint_draw_cursor(bContext *C, int x, int y, void *unused) if (brush->flag & BRUSH_ANCHORED) unprojected_radius = unproject_brush_radius(CTX_data_active_object(C), &vc, location, 8); else - unprojected_radius = unproject_brush_radius(CTX_data_active_object(C), &vc, location, sculpt_get_brush_size(brush)); + unprojected_radius = unproject_brush_radius(CTX_data_active_object(C), &vc, location, brush_size(brush)); } - if (sd->draw_pressure && (brush->flag & BRUSH_SIZE_PRESSURE)) + if (sd->draw_pressure && brush_use_size_pressure(brush)) unprojected_radius *= sd->pressure_value; - if (!sculpt_get_lock_brush_size(brush)) - sculpt_set_brush_unprojected_radius(brush, unprojected_radius); + if (!brush_use_locked_size(brush)) + brush_set_unprojected_radius(brush, unprojected_radius); if(!(paint->flags & PAINT_SHOW_BRUSH)) return; @@ -754,7 +756,7 @@ static void paint_draw_cursor(bContext *C, int x, int y, void *unused) } else { glTranslatef((float)x, (float)y, 0.0f); - glutil_draw_lined_arc(0.0, M_PI*2.0, sculpt_get_brush_size(brush), 40); + glutil_draw_lined_arc(0.0, M_PI*2.0, brush_size(brush), 40); glTranslatef(-(float)x, -(float)y, 0.0f); } @@ -767,12 +769,12 @@ static void paint_draw_cursor(bContext *C, int x, int y, void *unused) if(!(paint->flags & PAINT_SHOW_BRUSH)) return; - glColor4ubv(paint_get_active(CTX_data_scene(C))->paint_cursor_col); + glColor4f(brush->add_col[0], brush->add_col[1], brush->add_col[2], 0.5f); glEnable(GL_LINE_SMOOTH); glEnable(GL_BLEND); glTranslatef((float)x, (float)y, 0.0f); - glutil_draw_lined_arc(0.0, M_PI*2.0, brush->size, 40); // XXX: for now use the brushes size instead of potentially using the unified size because the feature has been enabled for sculpt + glutil_draw_lined_arc(0.0, M_PI*2.0, brush_size(brush), 40); // XXX: for now use the brushes size instead of potentially using the unified size because the feature has been enabled for sculpt glTranslatef((float)-x, (float)-y, 0.0f); glDisable(GL_BLEND); @@ -909,10 +911,10 @@ static int paint_space_stroke(bContext *C, wmOperator *op, wmEvent *event, const if(event->custom == EVT_DATA_TABLET) { wmTabletData *wmtab= event->customdata; if(wmtab->Active != EVT_TABLET_NONE) - pressure = stroke->brush->flag & BRUSH_SIZE_PRESSURE ? wmtab->Pressure : 1; + pressure = brush_use_size_pressure(stroke->brush) ? wmtab->Pressure : 1; } - scale = (sculpt_get_brush_size(stroke->brush)*pressure*stroke->brush->spacing/50.0f) / length; + scale = (brush_size(stroke->brush)*pressure*stroke->brush->spacing/50.0f) / length; mul_v2_fl(vec, scale); steps = (int)(1.0f / scale); diff --git a/source/blender/editors/sculpt_paint/paint_utils.c b/source/blender/editors/sculpt_paint/paint_utils.c index 21ea6cb7f75..ecce64f2d10 100644 --- a/source/blender/editors/sculpt_paint/paint_utils.c +++ b/source/blender/editors/sculpt_paint/paint_utils.c @@ -229,7 +229,7 @@ void BRUSH_OT_curve_preset(wmOperatorType *ot) ot->exec= brush_curve_preset_exec; ot->poll= brush_curve_preset_poll; - ot->flag= OPTYPE_UNDO; + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; RNA_def_enum(ot->srna, "shape", prop_shape_items, CURVE_PRESET_SMOOTH, "Mode", ""); } diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c index c1ef23e44a2..93555613b07 100644 --- a/source/blender/editors/sculpt_paint/paint_vertex.c +++ b/source/blender/editors/sculpt_paint/paint_vertex.c @@ -663,7 +663,7 @@ static void vpaint_blend(VPaint *vp, unsigned int *col, unsigned int *colorig, u unsigned int testcol=0, a; char *cp, *ct, *co; - alpha= (int)(255.0*brush->alpha); + alpha= (int)(255.0*brush_alpha(brush)); if(brush->vertexpaint_tool==VP_MIX || brush->vertexpaint_tool==VP_BLUR) testcol= mcol_blend( *colorig, paintcol, alpha); else if(brush->vertexpaint_tool==VP_ADD) testcol= mcol_add( *colorig, paintcol, alpha); @@ -733,23 +733,24 @@ static float calc_vp_alpha_dl(VPaint *vp, ViewContext *vc, float vpimat[][3], fl float fac, fac_2, size, dx, dy; float alpha; short vertco[2]; - + const int radius= brush_size(brush); + project_short_noclip(vc->ar, vert_nor, vertco); dx= mval[0]-vertco[0]; dy= mval[1]-vertco[1]; - if (brush->flag & BRUSH_SIZE_PRESSURE) - size = pressure * brush->size; + if (brush_use_size_pressure(brush)) + size = pressure * radius; else - size = brush->size; + size = radius; fac_2= dx*dx + dy*dy; if(fac_2 > size*size) return 0.f; fac = sqrtf(fac_2); - alpha= brush->alpha * brush_curve_strength_clamp(brush, fac, size); + alpha= brush_alpha(brush) * brush_curve_strength_clamp(brush, fac, size); - if (brush->flag & BRUSH_ALPHA_PRESSURE) + if (brush_use_alpha_pressure(brush)) alpha *= pressure; if(vp->flag & VP_NORMALS) { @@ -813,7 +814,7 @@ static void wpaint_blend(VPaint *wp, MDeformWeight *dw, MDeformWeight *uw, float if((wp->flag & VP_SPRAY)==0) { float testw=0.0f; - alpha= brush->alpha; + alpha= brush_alpha(brush); if(tool==VP_MIX || tool==VP_BLUR) testw = paintval*alpha + uw->weight*(1.0-alpha); else if(tool==VP_ADD) @@ -1454,7 +1455,7 @@ static void wpaint_stroke_update_step(bContext *C, struct PaintStroke *stroke, P /* which faces are involved */ if(wp->flag & VP_AREA) { - totindex= sample_backbuf_area(vc, indexar, me->totface, mval[0], mval[1], brush->size); + totindex= sample_backbuf_area(vc, indexar, me->totface, mval[0], mval[1], brush_size(brush)); } else { indexar[0]= view3d_sample_backbuf(vc, mval[0], mval[1]); @@ -1740,7 +1741,6 @@ void PAINT_OT_vertex_paint_toggle(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - } @@ -1874,7 +1874,7 @@ static void vpaint_stroke_update_step(bContext *C, struct PaintStroke *stroke, P /* which faces are involved */ if(vp->flag & VP_AREA) { - totindex= sample_backbuf_area(vc, indexar, me->totface, mval[0], mval[1], brush->size); + totindex= sample_backbuf_area(vc, indexar, me->totface, mval[0], mval[1], brush_size(brush)); } else { indexar[0]= view3d_sample_backbuf(vc, mval[0], mval[1]); diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index f5e93edb674..3faba35485e 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -589,9 +589,10 @@ static float brush_strength(Sculpt *sd, StrokeCache *cache, float feather) Brush *brush = paint_brush(&sd->paint); /* Primary strength input; square it to make lower values more sensitive */ - float alpha = sculpt_get_brush_alpha(brush)*sculpt_get_brush_alpha(brush); + const root_alpha = brush_alpha(brush); + float alpha = root_alpha*root_alpha; float dir = brush->flag & BRUSH_DIR_IN ? -1 : 1; - float pressure = brush->flag & BRUSH_ALPHA_PRESSURE ? cache->pressure : 1; + float pressure = brush_use_alpha_pressure(brush) ? cache->pressure : 1; float pen_flip = cache->pen_flip ? -1 : 1; float invert = cache->invert ? -1 : 1; float accum = integrate_overlap(brush); @@ -739,7 +740,7 @@ static float tex_strength(SculptSession *ss, Brush *br, float *point, const floa else if(ss->texcache) { float rotation = -mtex->rot; float x, y, point_2d[3]; - float diameter; + float radius; /* if the active area is being applied for symmetry, flip it across the symmetry axis and rotate it back to the orignal @@ -760,7 +761,7 @@ static float tex_strength(SculptSession *ss, Brush *br, float *point, const floa point_2d[0] -= ss->cache->tex_mouse[0]; point_2d[1] -= ss->cache->tex_mouse[1]; - diameter = ss->cache->pixel_radius; // use pressure adjusted size for fixed mode + radius = ss->cache->pixel_radius; // use pressure adjusted size for fixed mode x = point_2d[0]; y = point_2d[1]; @@ -768,7 +769,7 @@ static float tex_strength(SculptSession *ss, Brush *br, float *point, const floa else /* else (mtex->brush_map_mode == MTEX_MAP_MODE_TILED), leave the coordinates relative to the screen */ { - diameter = sculpt_get_brush_size(br); // use unadjusted size for tiled mode + radius = brush_size(br); // use unadjusted size for tiled mode x = point_2d[0] - ss->cache->vc->ar->winrct.xmin; y = point_2d[1] - ss->cache->vc->ar->winrct.ymin; @@ -782,8 +783,8 @@ static float tex_strength(SculptSession *ss, Brush *br, float *point, const floa y -= 0.5f; } - x *= ss->cache->vc->ar->winx / diameter; - y *= ss->cache->vc->ar->winy / diameter; + x *= ss->cache->vc->ar->winx / radius; + y *= ss->cache->vc->ar->winy / radius; /* it is probably worth optimizing for those cases where the texture is not rotated by skipping the calls to @@ -1253,8 +1254,8 @@ static void do_crease_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int /* we divide out the squared alpha and multiply by the squared crease to give us the pinch strength */ - if(sculpt_get_brush_alpha(brush) > 0.0f) - crease_correction = brush->crease_pinch_factor*brush->crease_pinch_factor/(sculpt_get_brush_alpha(brush)*sculpt_get_brush_alpha(brush)); + if(brush_alpha(brush) > 0.0f) + crease_correction = brush->crease_pinch_factor*brush->crease_pinch_factor/(brush_alpha(brush)*brush_alpha(brush)); else crease_correction = brush->crease_pinch_factor*brush->crease_pinch_factor; @@ -1807,7 +1808,12 @@ static void calc_area_normal_and_flatten_center(Sculpt *sd, SculptSession *ss, P normalize_v3(an); // fc - mul_v3_fl(fc, 1.0f / count); + if (count != 0) { + mul_v3_fl(fc, 1.0f / count); + } + else { + zero_v3(fc); + } } static void calc_sculpt_plane(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode, float an[3], float fc[3]) @@ -2614,6 +2620,7 @@ static void do_symmetrical_brush_actions(Sculpt *sd, SculptSession *ss) static void sculpt_update_tex(Sculpt *sd, SculptSession *ss) { Brush *brush = paint_brush(&sd->paint); + const int radius= brush_size(brush); if(ss->texcache) { MEM_freeN(ss->texcache); @@ -2621,9 +2628,9 @@ static void sculpt_update_tex(Sculpt *sd, SculptSession *ss) } /* Need to allocate a bigger buffer for bigger brush size */ - ss->texcache_side = 2*sculpt_get_brush_size(brush); + ss->texcache_side = 2*radius; if(!ss->texcache || ss->texcache_side > ss->texcache_actual) { - ss->texcache = brush_gen_texture_cache(brush, sculpt_get_brush_size(brush)); + ss->texcache = brush_gen_texture_cache(brush, radius); ss->texcache_actual = ss->texcache_side; } } @@ -2797,50 +2804,6 @@ static void sculpt_cache_free(StrokeCache *cache) MEM_freeN(cache); } -int sculpt_get_brush_size(Brush *brush) -{ - return (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE) ? U.sculpt_paint_unified_size : brush->size; -} - -void sculpt_set_brush_size(Brush *brush, int size) -{ - if (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE) - U.sculpt_paint_unified_size = size; - else - brush->size = size; -} - -int sculpt_get_lock_brush_size(Brush *brush) -{ - return (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE) ? (U.sculpt_paint_settings & SCULPT_PAINT_UNIFIED_LOCK_BRUSH_SIZE) : (brush->flag & BRUSH_LOCK_SIZE); -} - -float sculpt_get_brush_unprojected_radius(Brush *brush) -{ - return (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE) ? U.sculpt_paint_unified_unprojected_radius : brush->unprojected_radius; -} - -void sculpt_set_brush_unprojected_radius(Brush *brush, float unprojected_radius) -{ - if (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE) - U.sculpt_paint_unified_unprojected_radius = unprojected_radius; - else - brush->unprojected_radius = unprojected_radius; -} - -float sculpt_get_brush_alpha(Brush *brush) -{ - return (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_ALPHA) ? U.sculpt_paint_unified_alpha : brush->alpha; -} - -void sculpt_set_brush_alpha(Brush *brush, float alpha) -{ - if (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_ALPHA) - U.sculpt_paint_unified_alpha = alpha; - else - brush->alpha = alpha; -} - /* Initialize the stroke cache invariants from operator properties */ static void sculpt_update_cache_invariants(bContext* C, Sculpt *sd, SculptSession *ss, wmOperator *op, wmEvent *event) { @@ -3064,22 +3027,22 @@ static void sculpt_update_cache_variants(bContext *C, Sculpt *sd, SculptSession sd->pressure_value= cache->pressure; cache->previous_pixel_radius = cache->pixel_radius; - cache->pixel_radius = sculpt_get_brush_size(brush); + cache->pixel_radius = brush_size(brush); if(cache->first_time) { - if (!sculpt_get_lock_brush_size(brush)) { - cache->initial_radius= unproject_brush_radius(ss->ob, cache->vc, cache->true_location, sculpt_get_brush_size(brush)); - sculpt_set_brush_unprojected_radius(brush, cache->initial_radius); + if (!brush_use_locked_size(brush)) { + cache->initial_radius= unproject_brush_radius(ss->ob, cache->vc, cache->true_location, brush_size(brush)); + brush_set_unprojected_radius(brush, cache->initial_radius); } else { - cache->initial_radius= sculpt_get_brush_unprojected_radius(brush); + cache->initial_radius= brush_unprojected_radius(brush); } if (ELEM(brush->sculpt_tool, SCULPT_TOOL_GRAB, SCULPT_TOOL_SNAKE_HOOK)) cache->initial_radius *= 2.0f; } - if(brush->flag & BRUSH_SIZE_PRESSURE) { + if(brush_use_size_pressure(brush)) { cache->pixel_radius *= cache->pressure; cache->radius= cache->initial_radius * cache->pressure; } @@ -3290,7 +3253,7 @@ static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss) /* Restore the mesh before continuing with anchored stroke */ if((brush->flag & BRUSH_ANCHORED) || - (brush->sculpt_tool == SCULPT_TOOL_GRAB && (brush->flag & BRUSH_SIZE_PRESSURE)) || + (brush->sculpt_tool == SCULPT_TOOL_GRAB && brush_use_size_pressure(brush)) || (brush->flag & BRUSH_RESTORE_MESH)) { StrokeCache *cache = ss->cache; @@ -3604,7 +3567,7 @@ static void SCULPT_OT_set_persistent_base(wmOperatorType *ot) ot->exec= sculpt_set_persistent_base; ot->poll= sculpt_mode_poll; - ot->flag= 0;//OPTYPE_REGISTER; + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } /**** Toggle operator for turning sculpt mode on or off ****/ @@ -3612,8 +3575,8 @@ static void SCULPT_OT_set_persistent_base(wmOperatorType *ot) static void sculpt_init_session(Scene *scene, Object *ob) { ob->sculpt = MEM_callocN(sizeof(SculptSession), "sculpt session"); - ob->sculpt->ob = ob; - + ob->sculpt->ob = ob; + sculpt_update_mesh_elements(scene, ob, 0); } @@ -3685,7 +3648,7 @@ static void SCULPT_OT_sculptmode_toggle(wmOperatorType *ot) ot->exec= sculpt_toggle_mode; ot->poll= ED_operator_object_active; - ot->flag= 0; + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } void ED_operatortypes_sculpt() diff --git a/source/blender/editors/space_image/image_draw.c b/source/blender/editors/space_image/image_draw.c index 309c0061130..28616f08555 100644 --- a/source/blender/editors/space_image/image_draw.c +++ b/source/blender/editors/space_image/image_draw.c @@ -521,7 +521,7 @@ static void draw_image_view_tool(Scene *scene) if(draw) { getmouseco_areawin(mval); - radius= brush->size*G.sima->zoom/2; + radius= brush_size(brush)*G.sima->zoom; fdrawXORcirc(mval[0], mval[1], radius); if (brush->innerradius != 1.0) { diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index 3ac11eabe54..f4b022bd56b 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -726,6 +726,12 @@ typedef struct ToolSettings { short proportional, prop_mode; int auto_normalize, intpad; /*auto normalizing mode in wpaint*/ + + short sculpt_paint_settings; /* user preferences for sculpt and paint */ + short pad; + int sculpt_paint_unified_size; /* unified radius of brush in pixels */ + float sculpt_paint_unified_unprojected_radius;/* unified radius of brush in Blender units */ + float sculpt_paint_unified_alpha; /* unified strength of brush */ } ToolSettings; typedef struct bStats { @@ -1141,6 +1147,13 @@ typedef enum SculptFlags { SCULPT_USE_OPENMP = (1<<7), } SculptFlags; +/* sculpt_paint_settings */ +#define SCULPT_PAINT_USE_UNIFIED_SIZE (1<<0) +#define SCULPT_PAINT_USE_UNIFIED_ALPHA (1<<1) +#define SCULPT_PAINT_UNIFIED_LOCK_BRUSH_SIZE (1<<2) +#define SCULPT_PAINT_UNIFIED_SIZE_PRESSURE (1<<3) +#define SCULPT_PAINT_UNIFIED_ALPHA_PRESSURE (1<<4) + /* ImagePaintSettings.flag */ #define IMAGEPAINT_DRAWING 1 #define IMAGEPAINT_DRAW_TOOL 2 diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index 19db6316659..ff27d40ff9b 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -341,10 +341,10 @@ typedef struct UserDef { short gp_settings; short tb_leftmouse, tb_rightmouse; struct SolidLight light[3]; - short sculpt_paint_settings; /* user preferences for sculpt and paint */ short tw_hotspot, tw_flag, tw_handlesize, tw_size; short textimeout,texcollectrate; short wmdrawmethod; /* removed wmpad */ + short pad2; int memcachelimit; int prefetchframes; short frameserverport; @@ -375,10 +375,8 @@ typedef struct UserDef { struct ColorBand coba_weight; /* from texture.h */ - int sculpt_paint_unified_size; /* unified radius of brush in pixels */ - float sculpt_paint_unified_unprojected_radius;/* unified radius of brush in Blender units */ - float sculpt_paint_unified_alpha; /* unified strength of brush */ float sculpt_paint_overlay_col[3]; + int pad3; } UserDef; extern UserDef U; /* from blenkernel blender.c */ @@ -530,11 +528,6 @@ extern UserDef U; /* from blenkernel blender.c */ #define GP_PAINT_DOSMOOTH (1<<0) #define GP_PAINT_DOSIMPLIFY (1<<1) -/* sculpt_paint_settings */ -#define SCULPT_PAINT_USE_UNIFIED_SIZE (1<<0) -#define SCULPT_PAINT_USE_UNIFIED_ALPHA (1<<1) -#define SCULPT_PAINT_UNIFIED_LOCK_BRUSH_SIZE (1<<2) - /* color picker types */ #define USER_CP_CIRCLE 0 #define USER_CP_SQUARE_SV 1 diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c index 491819441e2..1da8986fd4c 100644 --- a/source/blender/makesrna/intern/rna_brush.c +++ b/source/blender/makesrna/intern/rna_brush.c @@ -52,6 +52,7 @@ static void rna_Brush_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Brush *br= (Brush*)ptr->data; WM_main_add_notifier(NC_BRUSH|NA_EDITED, br); + WM_main_add_notifier(NC_SPACE|ND_SPACE_VIEW3D, NULL); } static int rna_Brush_is_sculpt_brush(Brush *me, bContext *C) @@ -120,6 +121,78 @@ static void rna_Brush_icon_update(Main *bmain, Scene *scene, PointerRNA *ptr) WM_main_add_notifier(NC_BRUSH|NA_EDITED, br); } +static void rna_Brush_set_size(PointerRNA *ptr, int value) +{ + Brush* me = (Brush*)(ptr->data); + brush_set_size(me, value); +} + +static int rna_Brush_get_size(PointerRNA *ptr) +{ + Brush* me = (Brush*)(ptr->data); + return brush_size(me); +} + +static void rna_Brush_set_use_locked_size(PointerRNA *ptr, int value) +{ + Brush* me = (Brush*)(ptr->data); + brush_set_use_locked_size(me, value); +} + +static int rna_Brush_get_use_locked_size(PointerRNA *ptr) +{ + Brush* me = (Brush*)(ptr->data); + return brush_use_locked_size(me); +} + +static void rna_Brush_set_use_size_pressure(PointerRNA *ptr, int value) +{ + Brush* me = (Brush*)(ptr->data); + brush_set_use_size_pressure(me, value); +} + +static int rna_Brush_get_use_size_pressure(PointerRNA *ptr) +{ + Brush* me = (Brush*)(ptr->data); + return brush_use_size_pressure(me); +} + +static void rna_Brush_set_use_alpha_pressure(PointerRNA *ptr, int value) +{ + Brush* me = (Brush*)(ptr->data); + brush_set_use_alpha_pressure(me, value); +} + +static int rna_Brush_get_use_alpha_pressure(PointerRNA *ptr) +{ + Brush* me = (Brush*)(ptr->data); + return brush_use_alpha_pressure(me); +} + +static void rna_Brush_set_unprojected_radius(PointerRNA *ptr, float value) +{ + Brush* me = (Brush*)(ptr->data); + brush_set_unprojected_radius(me, value); +} + +static float rna_Brush_get_unprojected_radius(PointerRNA *ptr) +{ + Brush* me = (Brush*)(ptr->data); + return brush_unprojected_radius(me); +} + +static void rna_Brush_set_alpha(PointerRNA *ptr, float value) +{ + Brush* me = (Brush*)(ptr->data); + brush_set_alpha(me, value); +} + +static float rna_Brush_get_alpha(PointerRNA *ptr) +{ + Brush* me = (Brush*)(ptr->data); + return brush_alpha(me); +} + #else static void rna_def_brush_texture_slot(BlenderRNA *brna) @@ -415,15 +488,17 @@ static void rna_def_brush(BlenderRNA *brna) /* number values */ prop= RNA_def_property(srna, "size", PROP_INT, PROP_DISTANCE); + RNA_def_property_int_funcs(prop, "rna_Brush_get_size", "rna_Brush_set_size", NULL); RNA_def_property_range(prop, 1, MAX_BRUSH_PIXEL_RADIUS*10); RNA_def_property_ui_range(prop, 1, MAX_BRUSH_PIXEL_RADIUS, 1, 0); RNA_def_property_ui_text(prop, "Size", "Radius of the brush in pixels"); RNA_def_property_update(prop, 0, "rna_Brush_update"); prop= RNA_def_property(srna, "unprojected_radius", PROP_FLOAT, PROP_DISTANCE); - RNA_def_property_range(prop, 0, FLT_MAX); - RNA_def_property_ui_range(prop, 0, 1, 0, 0); - RNA_def_property_ui_text(prop, "Surface Size", "Radius of brush in Blender units"); + RNA_def_property_float_funcs(prop, "rna_Brush_get_unprojected_radius", "rna_Brush_set_unprojected_radius", NULL); + RNA_def_property_range(prop, 0.001, FLT_MAX); + RNA_def_property_ui_range(prop, 0.001, 1, 0, 0); + RNA_def_property_ui_text(prop, "Unprojected Radius", "Radius of brush in Blender units"); RNA_def_property_update(prop, 0, "rna_Brush_update"); prop= RNA_def_property(srna, "jitter", PROP_FLOAT, PROP_NONE); @@ -464,6 +539,7 @@ static void rna_def_brush(BlenderRNA *brna) prop= RNA_def_property(srna, "strength", PROP_FLOAT, PROP_FACTOR); RNA_def_property_float_sdna(prop, NULL, "alpha"); + RNA_def_property_float_funcs(prop, "rna_Brush_get_alpha", "rna_Brush_set_alpha", NULL); RNA_def_property_float_default(prop, 0.5f); RNA_def_property_range(prop, 0.0f, 10.0f); RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.001, 0.001); @@ -532,6 +608,7 @@ static void rna_def_brush(BlenderRNA *brna) prop= RNA_def_property(srna, "use_strength_pressure", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_ALPHA_PRESSURE); + RNA_def_property_boolean_funcs(prop, "rna_Brush_get_use_alpha_pressure", "rna_Brush_set_use_alpha_pressure"); RNA_def_property_ui_icon(prop, ICON_STYLUS_PRESSURE, 0); RNA_def_property_ui_text(prop, "Strength Pressure", "Enable tablet pressure sensitivity for strength"); RNA_def_property_update(prop, 0, "rna_Brush_update"); @@ -544,6 +621,7 @@ static void rna_def_brush(BlenderRNA *brna) prop= RNA_def_property(srna, "use_size_pressure", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_SIZE_PRESSURE); + RNA_def_property_boolean_funcs(prop, "rna_Brush_get_use_size_pressure", "rna_Brush_set_use_size_pressure"); RNA_def_property_ui_icon(prop, ICON_STYLUS_PRESSURE, 0); RNA_def_property_ui_text(prop, "Size Pressure", "Enable tablet pressure sensitivity for size"); RNA_def_property_update(prop, 0, "rna_Brush_update"); @@ -622,7 +700,8 @@ static void rna_def_brush(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Adaptive Spacing", "Space daubs according to surface orientation instead of screen space"); RNA_def_property_update(prop, 0, "rna_Brush_update"); - prop= RNA_def_property(srna, "lock_brush_size", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_locked_size", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_funcs(prop, "rna_Brush_get_use_locked_size", "rna_Brush_set_use_locked_size"); RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_LOCK_SIZE); RNA_def_property_ui_text(prop, "Use Blender Units", "When locked brush stays same size relative to object; when unlocked brush size is given in pixels"); RNA_def_property_update(prop, 0, "rna_Brush_update"); diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 1b733efd7cf..e48f07f48d6 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -1167,6 +1167,16 @@ static void rna_def_tool_settings(BlenderRNA *brna) RNA_def_property_enum_items(prop, sketch_convert_items); RNA_def_property_ui_text(prop, "Stroke conversion method", "Method used to convert stroke to bones"); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); + + /* Sculpt/Paint Unified Size and Strength */ + + prop= RNA_def_property(srna, "sculpt_paint_use_unified_size", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "sculpt_paint_settings", SCULPT_PAINT_USE_UNIFIED_SIZE); + RNA_def_property_ui_text(prop, "Sculpt/Paint Use Unified Radius", "Instead of per brush radius, the radius is shared across brushes"); + + prop= RNA_def_property(srna, "sculpt_paint_use_unified_strength", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "sculpt_paint_settings", SCULPT_PAINT_USE_UNIFIED_ALPHA); + RNA_def_property_ui_text(prop, "Sculpt/Paint Use Unified Strength", "Instead of per brush strength, the strength is shared across brushes"); } diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index f0ec5f8087d..d3b2e2fdd27 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -2195,35 +2195,6 @@ static void rna_def_userdef_edit(BlenderRNA *brna) RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Sculpt/Paint Overlay Color", "Color of texture overlay"); - prop= RNA_def_property(srna, "sculpt_paint_use_unified_size", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "sculpt_paint_settings", SCULPT_PAINT_USE_UNIFIED_SIZE); - RNA_def_property_ui_text(prop, "Sculpt/Paint Use Unified Radius", "Instead of per brush radius, the radius is shared across brushes"); - - prop= RNA_def_property(srna, "sculpt_paint_use_unified_strength", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "sculpt_paint_settings", SCULPT_PAINT_USE_UNIFIED_ALPHA); - RNA_def_property_ui_text(prop, "Sculpt/Paint Use Unified Strength", "Instead of per brush strength, the strength is shared across brushes"); - - prop= RNA_def_property(srna, "sculpt_paint_unified_lock_brush_size", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "sculpt_paint_settings", SCULPT_PAINT_UNIFIED_LOCK_BRUSH_SIZE); - RNA_def_property_ui_text(prop, "Sculpt/Paint Use Unified Blender Units", "When locked all brushes stay same size relative to object; when unlocked all brush sizes are given in pixels"); - - prop= RNA_def_property(srna, "sculpt_paint_unified_size", PROP_INT, PROP_DISTANCE); - RNA_def_property_range(prop, 1, MAX_BRUSH_PIXEL_RADIUS*10); - RNA_def_property_ui_range(prop, 1, MAX_BRUSH_PIXEL_RADIUS, 1, 0); - RNA_def_property_ui_text(prop, "Sculpt/Paint Unified Size", "Unified radius of the brush in pixels"); - - prop= RNA_def_property(srna, "sculpt_paint_unified_unprojected_radius", PROP_FLOAT, PROP_DISTANCE); - RNA_def_property_range(prop, 0, FLT_MAX); - RNA_def_property_ui_range(prop, 0, 1, 0, 0); - RNA_def_property_ui_text(prop, "Sculpt/Paint Unified Surface Size", "Unified radius of brush in Blender units"); - - prop= RNA_def_property(srna, "sculpt_paint_unified_strength", PROP_FLOAT, PROP_FACTOR); - RNA_def_property_float_sdna(prop, NULL, "sculpt_paint_unified_alpha"); - RNA_def_property_float_default(prop, 0.5f); - RNA_def_property_range(prop, 0.0f, 10.0f); - RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.001, 0.001); - RNA_def_property_ui_text(prop, "Sculpt/Paint Unified Strength", "Unified power of effect of brushes when applied"); - /* duplication linking */ prop= RNA_def_property(srna, "duplicate_mesh", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_MESH); From 2a02632882a4b538fcde785668ef993d26fae84b Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Thu, 22 Jul 2010 20:18:42 +0000 Subject: [PATCH 633/674] * removing the notifiers I added until I can discover the most lightweight way to achieve the same thing --- source/blender/blenkernel/intern/brush.c | 12 ++++++------ source/blender/makesrna/intern/rna_brush.c | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index ac600f7ef4e..a668249b0d5 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -1237,7 +1237,7 @@ void brush_set_size(Brush *brush, int size) else brush->size= size; - WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); + //WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); } int brush_size(Brush *brush) @@ -1257,7 +1257,7 @@ void brush_set_use_locked_size(Brush *brush, int value) brush->flag &= ~BRUSH_LOCK_SIZE; } - WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); + //WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); } int brush_use_locked_size(Brush *brush) @@ -1277,7 +1277,7 @@ void brush_set_use_size_pressure(Brush *brush, int value) brush->flag &= ~BRUSH_SIZE_PRESSURE; } - WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); + //WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); } int brush_use_size_pressure(Brush *brush) @@ -1297,7 +1297,7 @@ void brush_set_use_alpha_pressure(Brush *brush, int value) brush->flag &= ~BRUSH_ALPHA_PRESSURE; } - WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); + //WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); } int brush_use_alpha_pressure(Brush *brush) @@ -1312,7 +1312,7 @@ void brush_set_unprojected_radius(Brush *brush, float unprojected_radius) else brush->unprojected_radius= unprojected_radius; - WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); + //WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); } float brush_unprojected_radius(Brush *brush) @@ -1327,7 +1327,7 @@ void brush_set_alpha(Brush *brush, float alpha) else brush->alpha= alpha; - WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); + //WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); } float brush_alpha(Brush *brush) diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c index 1da8986fd4c..cd2a515d185 100644 --- a/source/blender/makesrna/intern/rna_brush.c +++ b/source/blender/makesrna/intern/rna_brush.c @@ -52,7 +52,7 @@ static void rna_Brush_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Brush *br= (Brush*)ptr->data; WM_main_add_notifier(NC_BRUSH|NA_EDITED, br); - WM_main_add_notifier(NC_SPACE|ND_SPACE_VIEW3D, NULL); + //WM_main_add_notifier(NC_SPACE|ND_SPACE_VIEW3D, NULL); } static int rna_Brush_is_sculpt_brush(Brush *me, bContext *C) From 3a042d205321574838b08fcfe99aa2d97fc4bc97 Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Thu, 22 Jul 2010 21:10:29 +0000 Subject: [PATCH 634/674] Fix [#22965] Icons for new brushes won't get sticky --- source/blender/blenkernel/intern/brush.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index a668249b0d5..8670665a1ac 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -132,6 +132,8 @@ Brush *copy_brush(Brush *brush) if (brush->mtex.tex) id_us_plus((ID*)brush->mtex.tex); + //brushn->preview= NULL; + if (brush->icon_imbuf) brushn->icon_imbuf= IMB_dupImBuf(brush->icon_imbuf); From 5b4a3b56d2dd1968b062f3dc17535e535fd86bad Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Thu, 22 Jul 2010 22:04:07 +0000 Subject: [PATCH 635/674] minor warning fix brush_alpha was being converted to an int not a float, if this is intentional it should be delared 'const int', but looks like it wasnt. --- source/blender/editors/sculpt_paint/paint_ops.c | 6 +++--- source/blender/editors/sculpt_paint/sculpt.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index fd9df0e1bbb..5a27af9cf5f 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -77,7 +77,7 @@ static int brush_scale_size_exec(bContext *C, wmOperator *op) { Paint *paint= paint_get_active(CTX_data_scene(C)); Brush *brush= paint_brush(paint); - Object *ob= CTX_data_active_object(C); + // Object *ob= CTX_data_active_object(C); float scalar= RNA_float_get(op->ptr, "scalar"); if (brush) { @@ -86,14 +86,14 @@ static int brush_scale_size_exec(bContext *C, wmOperator *op) const int old_size= brush_size(brush); int size= (int)(scalar*old_size); - if (old_size == size) + if (old_size == size) { if (scalar > 1) { size++; } else if (scalar < 1) { size--; } - + } CLAMP(size, 1, 2000); // XXX magic number brush_set_size(brush, size); diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 3faba35485e..5efcfa22517 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -589,7 +589,7 @@ static float brush_strength(Sculpt *sd, StrokeCache *cache, float feather) Brush *brush = paint_brush(&sd->paint); /* Primary strength input; square it to make lower values more sensitive */ - const root_alpha = brush_alpha(brush); + const float root_alpha = brush_alpha(brush); float alpha = root_alpha*root_alpha; float dir = brush->flag & BRUSH_DIR_IN ? -1 : 1; float pressure = brush_use_alpha_pressure(brush) ? cache->pressure : 1; From 43d5357a2e0dc2be209bdcbdf63246002dda4a7f Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Thu, 22 Jul 2010 23:06:09 +0000 Subject: [PATCH 636/674] * Fix [#22970] 2.5B 30369M crash opening 2.5A2 eye.blend --- source/blender/blenloader/intern/readfile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 87034717a93..3514eb91dd5 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -11053,7 +11053,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) /* GSOC Sculpt 2010 - Sanity check on Sculpt/Paint settings */ if (main->versionfile < 253) { Scene *sce; - for (sce= main->brush.first; sce; sce= sce->id.next) { + for (sce= main->scene.first; sce; sce= sce->id.next) { if (sce->toolsettings->sculpt_paint_unified_alpha == 0) sce->toolsettings->sculpt_paint_unified_alpha = 0.5f; From 026ac2492232fac4fb7350ff210ba34b353a84e2 Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Fri, 23 Jul 2010 01:43:30 +0000 Subject: [PATCH 637/674] [#22488] Reloading scripts causes crash F8 key enabled again, useful for script UI development. - keying set freeing wasnt freeing from all scenes and the builtin list. - PointerProperty() cant refer to a removed python srna type (fixed in rigify and netrender). - Added a check for freeing a type used by a PointerProperty but its very slow, makes reloading take ~10sec. Only enabled this in debug mode for now. Netrender register() function isnt re-registering the property, probably because the module is cached by python and not re-run. --- release/scripts/io/netrender/__init__.py | 3 + .../ui/properties_data_armature_rigify.py | 1 + source/blender/editors/animation/keyingsets.c | 11 +++- .../editors/space_script/script_edit.c | 10 +-- source/blender/python/generic/mathutils.h | 13 ---- source/blender/python/intern/bpy_rna.c | 64 ++++++++++++++++++- source/blender/python/intern/bpy_rna.h | 4 -- 7 files changed, 77 insertions(+), 29 deletions(-) diff --git a/release/scripts/io/netrender/__init__.py b/release/scripts/io/netrender/__init__.py index f5f104d6d92..43f3094e628 100644 --- a/release/scripts/io/netrender/__init__.py +++ b/release/scripts/io/netrender/__init__.py @@ -42,6 +42,9 @@ def register(): def unregister(): import bpy + + bpy.types.Scene.RemoveProperty("network_render") + bpy.types.unregister(ui.NetRenderJob) bpy.types.unregister(ui.NetRenderSettings) bpy.types.unregister(ui.NetRenderSlave) diff --git a/release/scripts/ui/properties_data_armature_rigify.py b/release/scripts/ui/properties_data_armature_rigify.py index 43021858f9f..193ff390b1e 100644 --- a/release/scripts/ui/properties_data_armature_rigify.py +++ b/release/scripts/ui/properties_data_armature_rigify.py @@ -360,6 +360,7 @@ def register(): def unregister(): + bpy.types.Scene.RemoveProperty("pose_templates") unregister = bpy.types.unregister for cls in classes: unregister(cls) diff --git a/source/blender/editors/animation/keyingsets.c b/source/blender/editors/animation/keyingsets.c index 1c06266a148..301111d22fd 100644 --- a/source/blender/editors/animation/keyingsets.c +++ b/source/blender/editors/animation/keyingsets.c @@ -43,6 +43,7 @@ #include "DNA_constraint_types.h" #include "DNA_scene_types.h" +#include "BKE_main.h" #include "BKE_animsys.h" #include "BKE_action.h" #include "BKE_context.h" @@ -589,7 +590,7 @@ void ANIM_keyingset_info_register (const bContext *C, KeyingSetInfo *ksi) /* Remove the given KeyingSetInfo from the list of type infos, and also remove the builtin set if appropriate */ void ANIM_keyingset_info_unregister (const bContext *C, KeyingSetInfo *ksi) { - Scene *scene = CTX_data_scene(C); + Main *bmain= CTX_data_main(C); KeyingSet *ks, *ksn; /* find relevant builtin KeyingSets which use this, and remove them */ @@ -600,8 +601,14 @@ void ANIM_keyingset_info_unregister (const bContext *C, KeyingSetInfo *ksi) /* remove if matching typeinfo name */ if (strcmp(ks->typeinfo, ksi->idname) == 0) { + Scene *scene; BKE_keyingset_free(ks); - BLI_freelinkN(&scene->keyingsets, ks); + BLI_remlink(&builtin_keyingsets, ks); + + for(scene= bmain->scene.first; scene; scene= scene->id.next) + BLI_remlink_safe(&scene->keyingsets, ks); + + MEM_freeN(ks); } } diff --git a/source/blender/editors/space_script/script_edit.c b/source/blender/editors/space_script/script_edit.c index 71b37e514d7..6f41f235b7b 100644 --- a/source/blender/editors/space_script/script_edit.c +++ b/source/blender/editors/space_script/script_edit.c @@ -90,13 +90,9 @@ static int script_reload_exec(bContext *C, wmOperator *op) #ifndef DISABLE_PYTHON /* TODO, this crashes on netrender and keying sets, need to look into why * disable for now unless running in debug mode */ - if(G.f & G_DEBUG) { - BPY_eval_string(C, "__import__('bpy').utils.load_scripts(reload_scripts=True)"); - } - else { - BKE_reportf(op->reports, RPT_ERROR, "reloading is currently unstable, only operates in debug mode.\n"); - return OPERATOR_CANCELLED; - } + WM_cursor_wait(1); + BPY_eval_string(C, "__import__('bpy').utils.load_scripts(reload_scripts=True)"); + WM_cursor_wait(0); return OPERATOR_FINISHED; #endif return OPERATOR_CANCELLED; diff --git a/source/blender/python/generic/mathutils.h b/source/blender/python/generic/mathutils.h index a86d9286c28..7b83d35ff1e 100644 --- a/source/blender/python/generic/mathutils.h +++ b/source/blender/python/generic/mathutils.h @@ -74,19 +74,6 @@ int EXPP_VectorsAreEqual(float *vecA, float *vecB, int size, int floatSteps); #define Py_NEW 1 #define Py_WRAP 2 - -/* Mathutils is used by the BGE and Blender so have to define - * some things here for luddite mac users of py2.3 */ -#ifndef Py_RETURN_NONE -#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None -#endif -#ifndef Py_RETURN_FALSE -#define Py_RETURN_FALSE return Py_INCREF(Py_False), Py_False -#endif -#ifndef Py_RETURN_TRUE -#define Py_RETURN_TRUE return Py_INCREF(Py_True), Py_True -#endif - typedef struct Mathutils_Callback Mathutils_Callback; typedef int (*BaseMathCheckFunc)(BaseMathObject *); /* checks the user is still valid */ diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 0a7fe81ed08..69caee898a0 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -4163,6 +4163,9 @@ static PyObject *pyrna_basetype_getattro( BPy_BaseTypeRNA *self, PyObject *pynam } static PyObject *pyrna_basetype_dir(BPy_BaseTypeRNA *self); +static PyObject *pyrna_basetype_register(PyObject *self, PyObject *py_class); +static PyObject *pyrna_basetype_unregister(PyObject *self, PyObject *py_class); + static struct PyMethodDef pyrna_basetype_methods[] = { {"__dir__", (PyCFunction)pyrna_basetype_dir, METH_NOARGS, ""}, {"register", (PyCFunction)pyrna_basetype_register, METH_O, ""}, @@ -4760,7 +4763,7 @@ void pyrna_free_types(void) * - Should still be fixed - Campbell * */ -PyObject *pyrna_basetype_register(PyObject *self, PyObject *py_class) +static PyObject *pyrna_basetype_register(PyObject *self, PyObject *py_class) { bContext *C= NULL; ReportList reports; @@ -4836,14 +4839,41 @@ PyObject *pyrna_basetype_register(PyObject *self, PyObject *py_class) Py_RETURN_NONE; } -PyObject *pyrna_basetype_unregister(PyObject *self, PyObject *py_class) + +static int pyrna_srna_contains_pointer_prop_srna(StructRNA *srna_props, StructRNA *srna, const char **prop_identifier) +{ + PointerRNA tptr; + PropertyRNA *iterprop; + RNA_pointer_create(NULL, &RNA_Struct, srna_props, &tptr); + + iterprop= RNA_struct_find_property(&tptr, "properties"); + + RNA_PROP_BEGIN(&tptr, itemptr, iterprop) { + PropertyRNA *prop= itemptr.data; + if(RNA_property_type(prop) == PROP_POINTER) { + if (strcmp(RNA_property_identifier(prop), "rna_type") == 0) { + /* pass */ + } + else if(RNA_property_pointer_type(&tptr, prop) == srna) { + *prop_identifier= RNA_property_identifier(prop); + return 1; + } + } + } + RNA_PROP_END; + + return 0; +} + +static PyObject *pyrna_basetype_unregister(PyObject *self, PyObject *py_class) { bContext *C= NULL; StructUnregisterFunc unreg; StructRNA *srna; /*if(PyDict_GetItemString(((PyTypeObject*)py_class)->tp_dict, "bl_rna")==NULL) { - PyErr_SetString(PyExc_ValueError, "bpy.types.unregister(): not a registered as a subclass."); + PWM_cursor_wait(0); +yErr_SetString(PyExc_ValueError, "bpy.types.unregister(): not a registered as a subclass."); return NULL; }*/ @@ -4859,6 +4889,34 @@ PyObject *pyrna_basetype_unregister(PyObject *self, PyObject *py_class) return NULL; } + /* should happen all the time but very slow */ + if(G.f & G_DEBUG) { + /* remove all properties using this class */ + StructRNA *srna_iter; + PointerRNA ptr_rna; + PropertyRNA *prop_rna; + const char *prop_identifier= NULL; + + RNA_blender_rna_pointer_create(&ptr_rna); + prop_rna = RNA_struct_find_property(&ptr_rna, "structs"); + + + + /* loop over all structs */ + RNA_PROP_BEGIN(&ptr_rna, itemptr, prop_rna) { + srna_iter = itemptr.data; + if(pyrna_srna_contains_pointer_prop_srna(srna_iter, srna, &prop_identifier)) { + break; + } + } + RNA_PROP_END; + + if(prop_identifier) { + PyErr_Format(PyExc_SystemError, "bpy.types.unregister(...): Cant unregister %s because %s.%s pointer property is using this.", RNA_struct_identifier(srna), RNA_struct_identifier(srna_iter), prop_identifier); + return NULL; + } + } + /* get the context, so register callback can do necessary refreshes */ C= BPy_GetContext(); diff --git a/source/blender/python/intern/bpy_rna.h b/source/blender/python/intern/bpy_rna.h index 9892ed6989b..bd9838a76d4 100644 --- a/source/blender/python/intern/bpy_rna.h +++ b/source/blender/python/intern/bpy_rna.h @@ -86,10 +86,6 @@ int pyrna_set_to_enum_bitfield(EnumPropertyItem *items, PyObject *value, int *r_ int pyrna_enum_value_from_id(EnumPropertyItem *item, const char *identifier, int *value, const char *error_prefix); -/* function for registering types */ -PyObject *pyrna_basetype_register(PyObject *self, PyObject *args); -PyObject *pyrna_basetype_unregister(PyObject *self, PyObject *args); - int pyrna_deferred_register_props(struct StructRNA *srna, PyObject *class_dict); /* called before stopping python */ From bd30c4da8aeb164d9276beffe09a2a18a5c90523 Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Fri, 23 Jul 2010 04:41:27 +0000 Subject: [PATCH 638/674] [#22876] Add new scene, stacker ".00" bug fix for r30441, (reverted for the beta), splitIDname wasnt returning the correct string length. --- source/blender/blenkernel/BKE_library.h | 3 +- source/blender/blenkernel/intern/library.c | 49 ++++++++++++---------- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/source/blender/blenkernel/BKE_library.h b/source/blender/blenkernel/BKE_library.h index cb61a08f3ba..fcf7ae85738 100644 --- a/source/blender/blenkernel/BKE_library.h +++ b/source/blender/blenkernel/BKE_library.h @@ -63,7 +63,7 @@ void free_libblock_us(struct ListBase *lb, void *idv); void free_main(struct Main *mainvar); void tag_main(struct Main *mainvar, int tag); -void splitIDname(char *name, char *left, int *nr); +int splitIDname(char *name, char *left, int *nr); void rename_id(struct ID *id, char *name); void test_idbutton(char *name); void text_idbutton(struct ID *id, char *text); @@ -85,4 +85,3 @@ void set_free_windowmanager_cb(void (*func)(struct bContext *, struct wmWindowMa #define ID_FALLBACK_NAME "Untitled" #endif - diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index fdc98d9ed29..acfaef9eb88 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -995,7 +995,7 @@ void IMAnames_to_pupstring(char **str, char *title, char *extraops, ListBase *lb /* used by buttons.c library.c mball.c */ -void splitIDname(char *name, char *left, int *nr) +int splitIDname(char *name, char *left, int *nr) { int a; @@ -1003,19 +1003,23 @@ void splitIDname(char *name, char *left, int *nr) strncpy(left, name, 21); a= strlen(name); - if(a>1 && name[a-1]=='.') return; + if(a>1 && name[a-1]=='.') return a; while(a--) { if( name[a]=='.' ) { left[a]= 0; *nr= atol(name+a+1); - return; + return a; } if( isdigit(name[a])==0 ) break; left[a]= 0; } - strcpy(left, name); + + for(a= 0; name[a]; a++) + left[a]= name[a]; + + return a; } static void sort_alpha_id(ListBase *lb, ID *id) @@ -1077,8 +1081,7 @@ static ID *is_dupid(ListBase *lb, ID *id, char *name) static int check_for_dupid(ListBase *lb, ID *id, char *name) { ID *idtest; - int nr= 0, nrtest, a; - const int maxtest=32; + int nr= 0, nrtest, a, left_len; char left[32], leftest[32], in_use[32]; /* make sure input name is terminated properly */ @@ -1095,31 +1098,31 @@ static int check_for_dupid(ListBase *lb, ID *id, char *name) /* we have a dup; need to make a new name */ /* quick check so we can reuse one of first 32 ids if vacant */ - memset(in_use, 0, maxtest); + memset(in_use, 0, sizeof(in_use)); /* get name portion, number portion ("name.number") */ - splitIDname( name, left, &nr); + left_len= splitIDname(name, left, &nr); /* if new name will be too long, truncate it */ if(nr>999 && strlen(left)>16) left[16]= 0; else if(strlen(left)>17) left[17]= 0; - for( idtest = lb->first; idtest; idtest = idtest->next ) { - if( id != idtest && idtest->lib == NULL ) { - splitIDname(idtest->name+2, leftest, &nrtest); - /* if base names match... */ - /* optimized */ - if( *left == *leftest && strcmp(left, leftest)==0 ) { - if(nrtest < maxtest) - in_use[nrtest]= 1; /* mark as used */ - if(nr <= nrtest) - nr= nrtest+1; /* track largest unused */ - } + for(idtest= lb->first; idtest; idtest= idtest->next) { + if( (id != idtest) && + (idtest->lib == NULL) && + (*name == *(idtest->name+2)) && + (strncmp(name, idtest->name+2, left_len)==0) && + (splitIDname(idtest->name+2, leftest, &nrtest) == left_len) + ) { + if(nrtest < sizeof(in_use)) + in_use[nrtest]= 1; /* mark as used */ + if(nr <= nrtest) + nr= nrtest+1; /* track largest unused */ } } /* decide which value of nr to use */ - for(a=0; a<maxtest; a++) { + for(a=0; a < sizeof(in_use); a++) { if(a>=nr) break; /* stop when we've check up to biggest */ if( in_use[a]==0 ) { /* found an unused value */ nr = a; @@ -1129,8 +1132,9 @@ static int check_for_dupid(ListBase *lb, ID *id, char *name) /* If the original name has no numeric suffix, * rather than just chopping and adding numbers, - * shave off the end chars until we have a unique name */ - if (nr==0) { + * shave off the end chars until we have a unique name. + * Check the null terminators match as well so we dont get Cube.000 -> Cube.00 */ + if (nr==0 && name[left_len]== left[left_len]) { int len = strlen(name)-1; idtest= is_dupid(lb, id, name); @@ -1389,4 +1393,3 @@ void rename_id(ID *id, char *name) new_id(lb, id, name); } - From 37bb55b7bc2947bc5093d58789871e728cd9e48d Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Fri, 23 Jul 2010 05:31:11 +0000 Subject: [PATCH 639/674] fix bad memory range of text3d charinfo being used. --- source/blender/blenloader/intern/writefile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 902f572b2f3..bee1b0a5388 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -1423,7 +1423,7 @@ static void write_curves(WriteData *wd, ListBase *idbase) if(cu->vfont) { writedata(wd, DATA, amount_of_chars(cu->str)+1, cu->str); - writestruct(wd, DATA, "CharInfo", cu->len, cu->strinfo); + writestruct(wd, DATA, "CharInfo", cu->len+1, cu->strinfo); writestruct(wd, DATA, "TextBox", cu->totbox, cu->tb); } else { From 9a0e0027f810be044767c946c6e93cdcc484dd91 Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Fri, 23 Jul 2010 05:49:12 +0000 Subject: [PATCH 640/674] fix for error in select hierarchy if no children exist. --- release/scripts/op/object.py | 52 +++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index 2df1250251e..0b052195541 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -113,44 +113,46 @@ class SelectHierarchy(bpy.types.Operator): return context.object def execute(self, context): - objs = context.selected_objects + select_new = [] + act_new = None + + + selected_objects = context.selected_objects obj_act = context.object - if context.object not in objs: - objs.append(context.object) - - if not self.properties.extend: - # for obj in objs: - # obj.select = False - bpy.ops.object.select_all(action='DESELECT') + if context.object not in selected_objects: + selected_objects.append(context.object) if self.properties.direction == 'PARENT': - parents = [] - for obj in objs: + for obj in selected_objects: parent = obj.parent if parent: - parents.append(parent) - if obj_act == obj: - context.scene.objects.active = parent + act_new = parent - parent.select = True - - if parents: - return {'CANCELLED'} + select_new.append(parent) else: - children = [] - for obj in objs: - children += list(obj.children) - for obj_iter in children: - obj_iter.select = True + for obj in selected_objects: + select_new.extend(obj.children) - children.sort(key=lambda obj_iter: obj_iter.name) - context.scene.objects.active = children[0] + if select_new: + select_new.sort(key=lambda obj_iter: obj_iter.name) + act_new = select_new[0] - return {'FINISHED'} + # dont edit any object settings above this + if select_new: + if not self.properties.extend: + bpy.ops.object.select_all(action='DESELECT') + + for obj in select_new: + obj.select = True + + context.scene.objects.active = act_new + return {'FINISHED'} + + return {'CANCELLED'} class SubdivisionSet(bpy.types.Operator): From 444d06af32f024a5a7e70c79f367f0f933271534 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Fri, 23 Jul 2010 09:33:58 +0000 Subject: [PATCH 641/674] 2.5: change a user preferences settings from .enabled to .active, it's nicer if the button is grayed out but still editable. --- release/scripts/ui/space_userpref.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 2429f6e472c..b3629b03c22 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -170,7 +170,7 @@ class USERPREF_PT_interface(bpy.types.Panel): col.prop(view, "show_mini_axis", text="Display Mini Axis") sub = col.column() - sub.enabled = view.show_mini_axis + sub.active = view.show_mini_axis sub.prop(view, "mini_axis_size", text="Size") sub.prop(view, "mini_axis_brightness", text="Brightness") @@ -216,7 +216,7 @@ class USERPREF_PT_interface(bpy.types.Panel): #col.prop(view, "open_right_mouse_delay", text="Hold RMB") col.prop(view, "use_manipulator") sub = col.column() - sub.enabled = view.use_manipulator + sub.active = view.use_manipulator sub.prop(view, "manipulator_size", text="Size") sub.prop(view, "manipulator_handle_size", text="Handle Size") sub.prop(view, "manipulator_hotspot", text="Hotspot") @@ -720,7 +720,7 @@ class USERPREF_PT_file(bpy.types.Panel): col.prop(paths, "save_preview_images") col.prop(paths, "auto_save_temporary_files") sub = col.column() - sub.enabled = paths.auto_save_temporary_files + sub.active = paths.auto_save_temporary_files sub.prop(paths, "auto_save_time", text="Timer (mins)") from space_userpref_keymap import InputKeyMapPanel @@ -748,7 +748,7 @@ class USERPREF_PT_input(InputKeyMapPanel): sub.label(text="Mouse:") sub1 = sub.column() - sub1.enabled = (inputs.select_mouse == 'RIGHT') + sub1.active = (inputs.select_mouse == 'RIGHT') sub1.prop(inputs, "emulate_3_button_mouse") sub.prop(inputs, "continuous_mouse") From 9914aa38ed9124193ea86157ab9a08a9031dc7d8 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Fri, 23 Jul 2010 10:42:59 +0000 Subject: [PATCH 642/674] Fix #22978: wrong property min/max on icosphere subdivisions. --- source/blender/editors/mesh/editmesh_add.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/mesh/editmesh_add.c b/source/blender/editors/mesh/editmesh_add.c index c88e40d9cc3..6cb6695cebc 100644 --- a/source/blender/editors/mesh/editmesh_add.c +++ b/source/blender/editors/mesh/editmesh_add.c @@ -1652,7 +1652,7 @@ void MESH_OT_primitive_ico_sphere_add(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* props */ - RNA_def_int(ot->srna, "subdivisions", 2, 0, 6, "Subdivisions", "", 0, 8); + RNA_def_int(ot->srna, "subdivisions", 2, 0, INT_MAX, "Subdivisions", "", 0, 8); RNA_def_float(ot->srna, "size", 1.0f, 0.0f, FLT_MAX, "Size", "", 0.001f, 100.00); ED_object_add_generic_props(ot, TRUE); From 57af5a85922142900593a8f5cec78b221305570b Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Fri, 23 Jul 2010 13:42:58 +0000 Subject: [PATCH 643/674] Another attempt to solve draw methods on Intel. Windows and mac now use overlap, while unixes use overlap flip. Also implemented recent fix for redrawing after backbuffer selection differently to avoid unneeded redraws. --- source/blender/windowmanager/intern/wm_draw.c | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index 7c0d0d0514c..7a517dea766 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -101,6 +101,14 @@ static void wm_area_mark_invalid_backbuf(ScrArea *sa) ((View3D*)sa->spacedata.first)->flag |= V3D_INVALID_BACKBUF; } +static int wm_area_test_invalid_backbuf(ScrArea *sa) +{ + if(sa->spacetype == SPACE_VIEW3D) + return (((View3D*)sa->spacedata.first)->flag & V3D_INVALID_BACKBUF); + else + return 0; +} + /********************** draw all **************************/ /* - reference method, draw all each time */ @@ -189,11 +197,11 @@ static void wm_method_draw_overlap_all(bContext *C, wmWindow *win, int exchange) ARegion *ar; static rcti rect= {0, 0, 0, 0}; - /* back needs to be ok for swap, if not, mark for redraw */ + /* after backbuffer selection draw, we need to redraw */ for(sa= screen->areabase.first; sa; sa= sa->next) for(ar= sa->regionbase.first; ar; ar= ar->next) - if(ar->swinid && !(ar->swap & WIN_BACK_OK)) - ar->do_draw= RGN_DRAW; + if(ar->swinid && !wm_area_test_invalid_backbuf(sa)) + ED_region_tag_redraw(ar); /* flush overlapping regions */ if(screen->regionbase.first) { @@ -692,11 +700,13 @@ static int wm_automatic_draw_method(wmWindow *win) /* ATI opensource driver is known to be very slow at this */ if(GPU_type_matches(GPU_DEVICE_ATI, GPU_OS_UNIX, GPU_DRIVER_OPENSOURCE)) return USER_DRAW_OVERLAP; -#if 0 - /* also Intel drivers don't work well with this */ - else if(GPU_type_matches(GPU_DEVICE_INTEL, GPU_OS_ANY, GPU_DRIVER_ANY)) + /* also Intel drivers are slow */ + else if(GPU_type_matches(GPU_DEVICE_INTEL, GPU_OS_UNIX, GPU_DRIVER_ANY)) return USER_DRAW_OVERLAP; -#endif + else if(GPU_type_matches(GPU_DEVICE_INTEL, GPU_OS_WIN, GPU_DRIVER_ANY)) + return USER_DRAW_OVERLAP_FLIP; + else if(GPU_type_matches(GPU_DEVICE_INTEL, GPU_OS_MAC, GPU_DRIVER_ANY)) + return USER_DRAW_OVERLAP_FLIP; /* Windows software driver darkens color on each redraw */ else if(GPU_type_matches(GPU_DEVICE_SOFTWARE, GPU_OS_WIN, GPU_DRIVER_SOFTWARE)) return USER_DRAW_OVERLAP_FLIP; @@ -798,3 +808,11 @@ void wm_draw_region_clear(wmWindow *win, ARegion *ar) win->screen->do_draw= 1; } +void wm_draw_region_modified(wmWindow *win, ARegion *ar) +{ + int drawmethod= wm_automatic_draw_method(win); + + if(ELEM(drawmethod, USER_DRAW_OVERLAP, USER_DRAW_OVERLAP_FLIP)) + ED_region_tag_redraw(ar); +} + From d3c9b72ba6842b8531b18cfd32c75a34399e9be1 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Fri, 23 Jul 2010 14:34:43 +0000 Subject: [PATCH 644/674] Restore image auto refresh for image editor, code was not updated for 2.5 yet. --- .../blender/editors/space_image/image_ops.c | 62 ++++++++++--------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index 03fc7dad016..501d1ddc181 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -33,6 +33,7 @@ #include "MEM_guardedalloc.h" #include "DNA_object_types.h" +#include "DNA_node_types.h" #include "DNA_packedFile_types.h" #include "DNA_scene_types.h" @@ -2059,8 +2060,10 @@ void IMAGE_OT_cycle_render_slot(wmOperatorType *ot) void ED_image_update_frame(const bContext *C) { - Main *mainp = CTX_data_main(C); + Main *mainp= CTX_data_main(C); Scene *scene= CTX_data_scene(C); + wmWindowManager *wm= CTX_wm_manager(C); + wmWindow *win; Tex *tex; /* texture users */ @@ -2073,41 +2076,40 @@ void ED_image_update_frame(const bContext *C) } } -#if 0 /* image window, compo node users */ - if(G.curscreen) { - ScrArea *sa; - for(sa= G.curscreen->areabase.first; sa; sa= sa->next) { - if(sa->spacetype==SPACE_VIEW3D) { - View3D *v3d= sa->spacedata.first; - if(v3d->bgpic) - if(v3d->bgpic->iuser.flag & IMA_ANIM_ALWAYS) - BKE_image_user_calc_frame(&v3d->bgpic->iuser, scene->r.cfra, 0); - } - else if(sa->spacetype==SPACE_IMAGE) { - SpaceImage *sima= sa->spacedata.first; - if(sima->iuser.flag & IMA_ANIM_ALWAYS) - BKE_image_user_calc_frame(&sima->iuser, scene->r.cfra, 0); - } - else if(sa->spacetype==SPACE_NODE) { - SpaceNode *snode= sa->spacedata.first; - if((snode->treetype==NTREE_COMPOSIT) && (snode->nodetree)) { - bNode *node; - for(node= snode->nodetree->nodes.first; node; node= node->next) { - if(node->id && node->type==CMP_NODE_IMAGE) { - Image *ima= (Image *)node->id; - ImageUser *iuser= node->storage; - if(ELEM(ima->source, IMA_SRC_MOVIE, IMA_SRC_SEQUENCE)) - if(iuser->flag & IMA_ANIM_ALWAYS) - BKE_image_user_calc_frame(iuser, scene->r.cfra, 0); + if(wm) { + for(win= wm->windows.first; win; win= win->next) { + ScrArea *sa; + for(sa= win->screen->areabase.first; sa; sa= sa->next) { + if(sa->spacetype==SPACE_VIEW3D) { + View3D *v3d= sa->spacedata.first; + BGpic *bgpic; + for(bgpic= v3d->bgpicbase.first; bgpic; bgpic= bgpic->next) + if(v3d->bgpic->iuser.flag & IMA_ANIM_ALWAYS) + BKE_image_user_calc_frame(&v3d->bgpic->iuser, scene->r.cfra, 0); + } + else if(sa->spacetype==SPACE_IMAGE) { + SpaceImage *sima= sa->spacedata.first; + if(sima->iuser.flag & IMA_ANIM_ALWAYS) + BKE_image_user_calc_frame(&sima->iuser, scene->r.cfra, 0); + } + else if(sa->spacetype==SPACE_NODE) { + SpaceNode *snode= sa->spacedata.first; + if((snode->treetype==NTREE_COMPOSIT) && (snode->nodetree)) { + bNode *node; + for(node= snode->nodetree->nodes.first; node; node= node->next) { + if(node->id && node->type==CMP_NODE_IMAGE) { + Image *ima= (Image *)node->id; + ImageUser *iuser= node->storage; + if(ELEM(ima->source, IMA_SRC_MOVIE, IMA_SRC_SEQUENCE)) + if(iuser->flag & IMA_ANIM_ALWAYS) + BKE_image_user_calc_frame(iuser, scene->r.cfra, 0); + } } } } } } } -#endif } - - From f5dd835850d752ccedb9b5b6a5b6ed9b1ffd399f Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Fri, 23 Jul 2010 14:35:23 +0000 Subject: [PATCH 645/674] Fix wrong default color for new images in some cases. --- source/blender/editors/space_image/image_ops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index 501d1ddc181..d6ffcf243cf 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -1245,7 +1245,7 @@ static int new_exec(bContext *C, wmOperator *op) void IMAGE_OT_new(wmOperatorType *ot) { PropertyRNA *prop; - float default_color[4]= {0.0f, 0.0f, 0.0f, 1.0f}; + static float default_color[4]= {0.0f, 0.0f, 0.0f, 1.0f}; /* identifiers */ ot->name= "New"; From a62e34057381e8b25b25827ded2e0fd59fc62727 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Fri, 23 Jul 2010 14:46:31 +0000 Subject: [PATCH 646/674] Fix #21028: operator redo creates hundreds of images when texture paint is on. Now operator redo will look for an undo push with the same name in both the paint/sculpt and global undo stack. --- source/blender/editors/include/ED_sculpt.h | 2 +- .../editors/sculpt_paint/paint_image.c | 4 +-- .../editors/sculpt_paint/paint_intern.h | 2 +- .../blender/editors/sculpt_paint/paint_undo.c | 36 ++++++++++++------- .../editors/space_view3d/view3d_draw.c | 2 +- source/blender/editors/util/undo.c | 16 ++++++--- 6 files changed, 39 insertions(+), 23 deletions(-) diff --git a/source/blender/editors/include/ED_sculpt.h b/source/blender/editors/include/ED_sculpt.h index db2013fb411..506813ce626 100644 --- a/source/blender/editors/include/ED_sculpt.h +++ b/source/blender/editors/include/ED_sculpt.h @@ -49,7 +49,7 @@ void ED_keymap_paint(struct wmKeyConfig *keyconf); #define UNDO_PAINT_IMAGE 0 #define UNDO_PAINT_MESH 1 -void ED_undo_paint_step(struct bContext *C, int type, int step); +int ED_undo_paint_step(struct bContext *C, int type, int step, const char *name); void ED_undo_paint_free(void); #endif diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index c1d1f709c5e..4174662359f 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -4699,7 +4699,7 @@ static int texture_paint_init(bContext *C, wmOperator *op) } settings->imapaint.flag |= IMAGEPAINT_DRAWING; - undo_paint_push_begin(UNDO_PAINT_IMAGE, "Image Paint", + undo_paint_push_begin(UNDO_PAINT_IMAGE, op->type->name, image_undo_restore, image_undo_free); /* create painter */ @@ -5440,7 +5440,7 @@ static int texture_paint_camera_project_exec(bContext *C, wmOperator *op) scene->toolsettings->imapaint.flag |= IMAGEPAINT_DRAWING; - undo_paint_push_begin(UNDO_PAINT_IMAGE, "Image Paint", + undo_paint_push_begin(UNDO_PAINT_IMAGE, op->type->name, image_undo_restore, image_undo_free); /* allocate and initialize spacial data structures */ diff --git a/source/blender/editors/sculpt_paint/paint_intern.h b/source/blender/editors/sculpt_paint/paint_intern.h index 0ae7c7fac19..3ed314095ef 100644 --- a/source/blender/editors/sculpt_paint/paint_intern.h +++ b/source/blender/editors/sculpt_paint/paint_intern.h @@ -121,7 +121,7 @@ typedef enum wmBrushStrokeMode { typedef void (*UndoRestoreCb)(struct bContext *C, struct ListBase *lb); typedef void (*UndoFreeCb)(struct ListBase *lb); -void undo_paint_push_begin(int type, char *name, UndoRestoreCb restore, UndoFreeCb free); +void undo_paint_push_begin(int type, const char *name, UndoRestoreCb restore, UndoFreeCb free); struct ListBase *undo_paint_push_get_list(int type); void undo_paint_push_count_alloc(int type, int size); void undo_paint_push_end(int type); diff --git a/source/blender/editors/sculpt_paint/paint_undo.c b/source/blender/editors/sculpt_paint/paint_undo.c index 5da988f1ae1..c2f82b8e2e0 100644 --- a/source/blender/editors/sculpt_paint/paint_undo.c +++ b/source/blender/editors/sculpt_paint/paint_undo.c @@ -76,7 +76,7 @@ static void undo_elem_free(UndoStack *stack, UndoElem *uel) } } -static void undo_stack_push_begin(UndoStack *stack, char *name, UndoRestoreCb restore, UndoFreeCb free) +static void undo_stack_push_begin(UndoStack *stack, const char *name, UndoRestoreCb restore, UndoFreeCb free) { UndoElem *uel; int nr; @@ -145,27 +145,35 @@ static void undo_stack_push_end(UndoStack *stack) } } -static void undo_stack_step(bContext *C, UndoStack *stack, int step) +static int undo_stack_step(bContext *C, UndoStack *stack, int step, const char *name) { UndoElem *undo; if(step==1) { if(stack->current==NULL); else { - if(G.f & G_DEBUG) printf("undo %s\n", stack->current->name); - undo_restore(C, stack, stack->current); - stack->current= stack->current->prev; + if(!name || strcmp(stack->current->name, name) == 0) { + if(G.f & G_DEBUG) printf("undo %s\n", stack->current->name); + undo_restore(C, stack, stack->current); + stack->current= stack->current->prev; + return 1; + } } } else if(step==-1) { if((stack->current!=NULL && stack->current->next==NULL) || stack->elems.first==NULL); else { - undo= (stack->current && stack->current->next)? stack->current->next: stack->elems.first; - undo_restore(C, stack, undo); - stack->current= undo; - if(G.f & G_DEBUG) printf("redo %s\n", undo->name); + if(!name || strcmp(stack->current->name, name) == 0) { + undo= (stack->current && stack->current->next)? stack->current->next: stack->elems.first; + undo_restore(C, stack, undo); + stack->current= undo; + if(G.f & G_DEBUG) printf("redo %s\n", undo->name); + return 1; + } } } + + return 0; } static void undo_stack_free(UndoStack *stack) @@ -181,7 +189,7 @@ static void undo_stack_free(UndoStack *stack) /* Exported Functions */ -void undo_paint_push_begin(int type, char *name, UndoRestoreCb restore, UndoFreeCb free) +void undo_paint_push_begin(int type, const char *name, UndoRestoreCb restore, UndoFreeCb free) { if(type == UNDO_PAINT_IMAGE) undo_stack_push_begin(&ImageUndoStack, name, restore, free); @@ -219,12 +227,14 @@ void undo_paint_push_end(int type) undo_stack_push_end(&MeshUndoStack); } -void ED_undo_paint_step(bContext *C, int type, int step) +int ED_undo_paint_step(bContext *C, int type, int step, const char *name) { if(type == UNDO_PAINT_IMAGE) - undo_stack_step(C, &ImageUndoStack, step); + return undo_stack_step(C, &ImageUndoStack, step, name); else if(type == UNDO_PAINT_MESH) - undo_stack_step(C, &MeshUndoStack, step); + return undo_stack_step(C, &MeshUndoStack, step, name); + + return 0; } void ED_undo_paint_free(void) diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index 86a12cd6221..a59a68f86cf 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -1063,7 +1063,7 @@ static void drawviewborder(Scene *scene, ARegion *ar, View3D *v3d) /* *********************** backdraw for selection *************** */ -void backdrawview3d(Scene *scene, ARegion *ar, View3D *v3d) +static void backdrawview3d(Scene *scene, ARegion *ar, View3D *v3d) { RegionView3D *rv3d= ar->regiondata; struct Base *base = scene->basact; diff --git a/source/blender/editors/util/undo.c b/source/blender/editors/util/undo.c index 636ce9dcec5..1618ef88ba4 100644 --- a/source/blender/editors/util/undo.c +++ b/source/blender/editors/util/undo.c @@ -116,7 +116,9 @@ static int ed_undo_step(bContext *C, int step, const char *undoname) SpaceImage *sima= (SpaceImage *)sa->spacedata.first; if((obact && obact->mode & OB_MODE_TEXTURE_PAINT) || sima->flag & SI_DRAWTOOL) { - ED_undo_paint_step(C, UNDO_PAINT_IMAGE, step); + if(!ED_undo_paint_step(C, UNDO_PAINT_IMAGE, step, undoname) && undoname) + if(U.uiflag & USER_GLOBALUNDO) + BKE_undo_name(C, undoname); WM_event_add_notifier(C, NC_WINDOW, NULL); return OPERATOR_FINISHED; @@ -139,10 +141,14 @@ static int ed_undo_step(bContext *C, int step, const char *undoname) else { int do_glob_undo= 0; - if(obact && obact->mode & OB_MODE_TEXTURE_PAINT) - ED_undo_paint_step(C, UNDO_PAINT_IMAGE, step); - else if(obact && obact->mode & OB_MODE_SCULPT) - ED_undo_paint_step(C, UNDO_PAINT_MESH, step); + if(obact && obact->mode & OB_MODE_TEXTURE_PAINT) { + if(!ED_undo_paint_step(C, UNDO_PAINT_IMAGE, step, undoname) && undoname) + do_glob_undo= 1; + } + else if(obact && obact->mode & OB_MODE_SCULPT) { + if(!ED_undo_paint_step(C, UNDO_PAINT_MESH, step, undoname) && undoname) + do_glob_undo= 1; + } else if(obact && obact->mode & OB_MODE_PARTICLE_EDIT) { if(step==1) PE_undo(CTX_data_scene(C)); From f8f3244629380b59ee84d8e208b6071a43ccbe86 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Fri, 23 Jul 2010 15:36:27 +0000 Subject: [PATCH 647/674] Attempt to fix compile for GCC 4.4. --- intern/smoke/intern/FLUID_3D.h | 1 + 1 file changed, 1 insertion(+) diff --git a/intern/smoke/intern/FLUID_3D.h b/intern/smoke/intern/FLUID_3D.h index ab121ef506e..6ca50b2c032 100644 --- a/intern/smoke/intern/FLUID_3D.h +++ b/intern/smoke/intern/FLUID_3D.h @@ -30,6 +30,7 @@ #include <cstdlib> #include <cmath> +#include <cstring> #include <iostream> #include "OBSTACLE.h" // #include "WTURBULENCE.h" From 4c4ec56f49e41e75da1bf8d83ff36ff70f862f43 Mon Sep 17 00:00:00 2001 From: Janne Karhu <jhkarh@gmail.com> Date: Fri, 23 Jul 2010 16:48:45 +0000 Subject: [PATCH 648/674] Fix for [#22644] hair particles bug 2, patch by Lukas Toenne --- .../blender/editors/physics/particle_edit.c | 35 ++++++++++++------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index 5ef805e25b4..f463da3f6a4 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -2098,6 +2098,7 @@ static void remove_tagged_keys(Scene *scene, Object *ob, ParticleSystem *psys) ParticleData *pa; HairKey *hkey, *nhkey, *new_hkeys=0; POINT_P; KEY_K; + PTCacheEditKey *nkey, *new_keys; ParticleSystemModifierData *psmd; short new_totkey; @@ -2133,9 +2134,10 @@ static void remove_tagged_keys(Scene *scene, Object *ob, ParticleSystem *psys) } if(new_totkey != pa->totkey) { - hkey= pa->hair; nhkey= new_hkeys= MEM_callocN(new_totkey*sizeof(HairKey), "HairKeys"); + nkey= new_keys= MEM_callocN(new_totkey*sizeof(PTCacheEditKey), "particle edit keys"); + hkey= pa->hair; LOOP_KEYS { while(key->flag & PEK_TAG && hkey < pa->hair + pa->totkey) { key++; @@ -2144,29 +2146,36 @@ static void remove_tagged_keys(Scene *scene, Object *ob, ParticleSystem *psys) if(hkey < pa->hair + pa->totkey) { VECCOPY(nhkey->co, hkey->co); + nhkey->editflag = hkey->editflag; nhkey->time= hkey->time; nhkey->weight= hkey->weight; + + nkey->co= nhkey->co; + nkey->time= &nhkey->time; + /* these can be copied from old edit keys */ + nkey->flag = key->flag; + nkey->ftime = key->ftime; + nkey->length = key->length; + VECCOPY(nkey->world_co, key->world_co); } - hkey++; + nkey++; nhkey++; + hkey++; } + if(pa->hair) MEM_freeN(pa->hair); - - pa->hair= new_hkeys; - - point->totkey= pa->totkey= new_totkey; if(point->keys) MEM_freeN(point->keys); - key= point->keys= MEM_callocN(new_totkey*sizeof(PTCacheEditKey), "particle edit keys"); + + pa->hair= new_hkeys; + point->keys= new_keys; - hkey = pa->hair; - LOOP_KEYS { - key->co= hkey->co; - key->time= &hkey->time; - hkey++; - } + point->totkey= pa->totkey= new_totkey; + + /* flag for recalculating length */ + point->flag |= PEP_EDIT_RECALC; } } } From bf5f5bd3bd1bcd0678518e84ef778af30e940264 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Fri, 23 Jul 2010 16:50:25 +0000 Subject: [PATCH 649/674] Fix #20863: when loading a file without UI, with multiple windows open, the other windows would not preserve the screens correctly, code for reading 2.4x files was running when it didn't need to. --- .../blender/windowmanager/intern/wm_files.c | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 6457e184066..04f5175b1bf 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -179,21 +179,23 @@ static void wm_window_match_do(bContext *C, ListBase *oldwmlist) /* we've read file without wm..., keep current one entirely alive */ if(G.main->wm.first==NULL) { - bScreen *screen= CTX_wm_screen(C); - - /* match oldwm to new dbase, only old files */ - - for(wm= oldwmlist->first; wm; wm= wm->id.next) { - - for(win= wm->windows.first; win; win= win->next) { - /* all windows get active screen from file */ - if(screen->winid==0) - win->screen= screen; - else - win->screen= ED_screen_duplicate(win, screen); + /* when loading without UI, no matching needed */ + if(!(G.fileflags & G_FILE_NO_UI)) { + bScreen *screen= CTX_wm_screen(C); + + /* match oldwm to new dbase, only old files */ + for(wm= oldwmlist->first; wm; wm= wm->id.next) { - BLI_strncpy(win->screenname, win->screen->id.name+2, 21); - win->screen->winid= win->winid; + for(win= wm->windows.first; win; win= win->next) { + /* all windows get active screen from file */ + if(screen->winid==0) + win->screen= screen; + else + win->screen= ED_screen_duplicate(win, screen); + + BLI_strncpy(win->screenname, win->screen->id.name+2, 21); + win->screen->winid= win->winid; + } } } From 65fcb0edcf64b70ff79e298ffebcbbf8812e2774 Mon Sep 17 00:00:00 2001 From: Peter Schlaile <peter@schlaile.de> Date: Fri, 23 Jul 2010 16:57:11 +0000 Subject: [PATCH 650/674] == Sequencer == This patch cleans up the sequencer core by replacing the caching system (TStripElems) with a hash based system, which is: a) a lot faster b) a lot more readable c) a lot more memory conserving The new caching system is also a good building ground for a) sub frame precision rendering (even on scene strips) b) multi core rendering (threaded rendering is still disabled, but can be extended now to arbitrary core numbers) I tested the code on an extensive editing session today and had no crashes during 4 hours of editing. So I consider it very stable. --- source/blender/blenkernel/BKE_sequencer.h | 22 + source/blender/blenkernel/intern/blender.c | 1 + source/blender/blenkernel/intern/seqcache.c | 267 +++ source/blender/blenkernel/intern/seqeffects.c | 1 + source/blender/blenkernel/intern/sequencer.c | 1811 ++++++----------- .../editors/space_sequencer/sequencer_draw.c | 27 +- .../blender/render/intern/source/pipeline.c | 1 + 7 files changed, 898 insertions(+), 1232 deletions(-) create mode 100644 source/blender/blenkernel/intern/seqcache.c diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index c5417e04780..81ae83cafb6 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -164,6 +164,28 @@ struct StripElem *give_stripelem(struct Sequence *seq, int cfra); // intern? void update_changed_seq_and_deps(struct Scene *scene, struct Sequence *changed_seq, int len_change, int ibuf_change); +/* seqcache.c */ + +typedef enum { + SEQ_STRIPELEM_IBUF, + SEQ_STRIPELEM_IBUF_COMP, + SEQ_STRIPELEM_IBUF_STARTSTILL, + SEQ_STRIPELEM_IBUF_ENDSTILL +} seq_stripelem_ibuf_t; + +void seq_stripelem_cache_init(); +void seq_stripelem_cache_destruct(); + +void seq_stripelem_cache_cleanup(); + +struct ImBuf * seq_stripelem_cache_get( + struct Sequence * seq, int rectx, int recty, + float cfra, seq_stripelem_ibuf_t type); +void seq_stripelem_cache_put( + struct Sequence * seq, int rectx, int recty, + float cfra, seq_stripelem_ibuf_t type, struct ImBuf * nval); + + /* seqeffects.c */ // intern? struct SeqEffectHandle get_sequence_blend(struct Sequence *seq); diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index 101c7a3bbbd..9a624017a16 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -102,6 +102,7 @@ void free_blender(void) BKE_spacetypes_free(); /* after free main, it uses space callbacks */ IMB_exit(); + seq_stripelem_cache_destruct(); free_nodesystem(); } diff --git a/source/blender/blenkernel/intern/seqcache.c b/source/blender/blenkernel/intern/seqcache.c new file mode 100644 index 00000000000..c2b689195f6 --- /dev/null +++ b/source/blender/blenkernel/intern/seqcache.c @@ -0,0 +1,267 @@ +/** +* $Id: seqcache.c 29923 2010-07-04 10:51:10Z schlaile $ + * + * ***** 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. + * + * Peter Schlaile <peter [at] schlaile [dot] de> 2010 + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include <stddef.h> +#include <stdlib.h> +#include <string.h> +#include <math.h> + +#include "MEM_guardedalloc.h" +#include "MEM_CacheLimiterC-Api.h" + +#include "DNA_sequence_types.h" +#include "BKE_sequencer.h" +#include "BLI_ghash.h" +#include "BLI_mempool.h" +#include <pthread.h> + +#include "IMB_imbuf.h" +#include "IMB_imbuf_types.h" + +typedef struct seqCacheKey +{ + struct Sequence * seq; + int rectx; + int recty; + float cfra; + seq_stripelem_ibuf_t type; +} seqCacheKey; + +typedef struct seqCacheEntry +{ + ImBuf * ibuf; + MEM_CacheLimiterHandleC * c_handle; +} seqCacheEntry; + +static GHash * hash = 0; +static MEM_CacheLimiterC * limitor = 0; +static struct BLI_mempool * entrypool = 0; +static struct BLI_mempool * keypool = 0; +static int ibufs_in = 0; +static int ibufs_rem = 0; + +static unsigned int HashHash(void *key_) +{ + seqCacheKey * key = (seqCacheKey*) key_; + unsigned int rval = key->rectx + key->recty; + + rval ^= *(unsigned int*) &key->cfra; + rval += key->type; + rval ^= (unsigned int) key->seq; + + return rval; +} + +static int HashCmp(void *a_, void *b_) +{ + seqCacheKey * a = (seqCacheKey*) a_; + seqCacheKey * b = (seqCacheKey*) b_; + + if (a->seq < b->seq) { + return -1; + } + if (a->seq > b->seq) { + return 1; + } + + if (a->cfra < b->cfra) { + return -1; + } + if (a->cfra > b->cfra) { + return 1; + } + + if (a->type < b->type) { + return -1; + } + if (a->type > b->type) { + return 1; + } + + if (a->rectx < b->rectx) { + return -1; + } + if (a->rectx > b->rectx) { + return 1; + } + + if (a->recty < b->recty) { + return -1; + } + if (a->recty > b->recty) { + return 1; + } + + return 0; +} + +static void HashKeyFree(void *key) +{ + BLI_mempool_free(keypool, key); +} + +static void HashValFree(void *val) +{ + seqCacheEntry* e = (seqCacheEntry*) val; + + if (e->ibuf) { + /* fprintf(stderr, "Removing: %p, cnt: %d\n", e->ibuf, + e->ibuf->refcounter); */ + IMB_freeImBuf(e->ibuf); + MEM_CacheLimiter_unmanage(e->c_handle); + ibufs_rem++; + } + + e->ibuf = 0; + e->c_handle = 0; + + BLI_mempool_free(entrypool, e); +} + +static void IMB_seq_cache_destructor(void * p) +{ + seqCacheEntry* e = (seqCacheEntry*) p; + + if (e && e->ibuf) { + /* fprintf(stderr, "Removing: %p, cnt: %d\n", e->ibuf, + e->ibuf->refcounter); */ + IMB_freeImBuf(e->ibuf); + ibufs_rem++; + + e->ibuf = 0; + e->c_handle = 0; + } +} + +void seq_stripelem_cache_init() +{ + hash = BLI_ghash_new(HashHash, HashCmp, "seq stripelem cache hash"); + limitor = new_MEM_CacheLimiter( IMB_seq_cache_destructor ); + + entrypool = BLI_mempool_create(sizeof(seqCacheEntry), 64, 64, 0); + keypool = BLI_mempool_create(sizeof(seqCacheKey), 64, 64, 0); +} + +void seq_stripelem_cache_destruct() +{ + if (!entrypool) { + return; + } + BLI_ghash_free(hash, HashKeyFree, HashValFree); + delete_MEM_CacheLimiter(limitor); + BLI_mempool_destroy(entrypool); + BLI_mempool_destroy(keypool); +} + +void seq_stripelem_cache_cleanup() +{ + if (!entrypool) { + seq_stripelem_cache_init(); + } + + /* fprintf(stderr, "Stats before cleanup: in: %d rem: %d\n", + ibufs_in, ibufs_rem); */ + + BLI_ghash_free(hash, HashKeyFree, HashValFree); + hash = BLI_ghash_new(HashHash, HashCmp, "seq stripelem cache hash"); + + /* fprintf(stderr, "Stats after cleanup: in: %d rem: %d\n", + ibufs_in, ibufs_rem); */ + +} + +struct ImBuf * seq_stripelem_cache_get( + struct Sequence * seq, int rectx, int recty, + float cfra, seq_stripelem_ibuf_t type) +{ + seqCacheKey key; + seqCacheEntry * e; + + if (!seq) { + return 0; + } + + if (!entrypool) { + seq_stripelem_cache_init(); + } + + key.seq = seq; + key.rectx = rectx; + key.recty = recty; + key.cfra = cfra - seq->start; + key.type = type; + + e = (seqCacheEntry*) BLI_ghash_lookup(hash, &key); + + if (e && e->ibuf) { + IMB_refImBuf(e->ibuf); + + MEM_CacheLimiter_touch(e->c_handle); + return e->ibuf; + } + return 0; +} + +void seq_stripelem_cache_put( + struct Sequence * seq, int rectx, int recty, + float cfra, seq_stripelem_ibuf_t type, struct ImBuf * i) +{ + seqCacheKey * key; + seqCacheEntry * e; + + if (!i) { + return; + } + + ibufs_in++; + + if (!entrypool) { + seq_stripelem_cache_init(); + } + + key = (seqCacheKey*) BLI_mempool_alloc(keypool); + + key->seq = seq; + key->rectx = rectx; + key->recty = recty; + key->cfra = cfra - seq->start; + key->type = type; + + /* we want our own version */ + IMB_refImBuf(i); + + e = (seqCacheEntry*) BLI_mempool_alloc(entrypool); + + e->ibuf = i; + e->c_handle = 0; + + BLI_ghash_remove(hash, key, HashKeyFree, HashValFree); + BLI_ghash_insert(hash, key, e); + + e->c_handle = MEM_CacheLimiter_insert(limitor, e); + + MEM_CacheLimiter_ref(e->c_handle); + MEM_CacheLimiter_enforce_limits(limitor); + MEM_CacheLimiter_unref(e->c_handle); +} diff --git a/source/blender/blenkernel/intern/seqeffects.c b/source/blender/blenkernel/intern/seqeffects.c index 73c19772c69..efebca0f780 100644 --- a/source/blender/blenkernel/intern/seqeffects.c +++ b/source/blender/blenkernel/intern/seqeffects.c @@ -2786,6 +2786,7 @@ static void do_multicam(Scene *scene, Sequence *seq, int cfra, IMB_float_from_rect_simple(i); memcpy(out->rect_float, i->rect_float, out->x * out->y *4*sizeof(float)); } + IMB_freeImBuf(i); } /* ********************************************************************** diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 61415eb4a52..5f41debbbe9 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -116,53 +116,11 @@ int seq_recursive_apply(Sequence *seq, int (*apply_func)(Sequence *, void *), vo alloc / free functions ********************************************************************** */ -static void free_tstripdata(int len, TStripElem *se) -{ - TStripElem *seo; - int a; - - seo= se; - if (!se) - return; - - for(a=0; a<len; a++, se++) { - if(se->ibuf) { - IMB_freeImBuf(se->ibuf); - se->ibuf = 0; - } - if(se->ibuf_comp) { - IMB_freeImBuf(se->ibuf_comp); - se->ibuf_comp = 0; - } - } - - MEM_freeN(seo); -} void new_tstripdata(Sequence *seq) { if(seq->strip) { - free_tstripdata(seq->strip->len, seq->strip->tstripdata); - free_tstripdata(seq->strip->endstill, - seq->strip->tstripdata_endstill); - free_tstripdata(seq->strip->startstill, - seq->strip->tstripdata_startstill); - - seq->strip->tstripdata= 0; - seq->strip->tstripdata_endstill= 0; - seq->strip->tstripdata_startstill= 0; - - if(seq->strip->ibuf_startstill) { - IMB_freeImBuf(seq->strip->ibuf_startstill); - seq->strip->ibuf_startstill = 0; - } - - if(seq->strip->ibuf_endstill) { - IMB_freeImBuf(seq->strip->ibuf_endstill); - seq->strip->ibuf_endstill = 0; - } - seq->strip->len= seq->len; } } @@ -208,20 +166,6 @@ void seq_free_strip(Strip *strip) MEM_freeN(strip->color_balance); } - free_tstripdata(strip->len, strip->tstripdata); - free_tstripdata(strip->endstill, strip->tstripdata_endstill); - free_tstripdata(strip->startstill, strip->tstripdata_startstill); - - if(strip->ibuf_startstill) { - IMB_freeImBuf(strip->ibuf_startstill); - strip->ibuf_startstill = 0; - } - - if(strip->ibuf_endstill) { - IMB_freeImBuf(strip->ibuf_endstill); - strip->ibuf_endstill = 0; - } - MEM_freeN(strip); } @@ -950,137 +894,9 @@ static void multibuf(ImBuf *ibuf, float fmul) } } -static void do_effect(Scene *scene, int cfra, Sequence *seq, TStripElem * se, - int render_size) +static float give_stripelem_index(Sequence *seq, float cfra) { - TStripElem *se1, *se2, *se3; - float fac, facf; - int x, y; - int early_out; - struct SeqEffectHandle sh = get_sequence_effect(seq); - FCurve *fcu= NULL; - - if (!sh.execute) { /* effect not supported in this version... */ - make_black_ibuf(se->ibuf); - return; - } - - if ((seq->flag & SEQ_USE_EFFECT_DEFAULT_FADE) != 0) { - sh.get_default_fac(seq, cfra, &fac, &facf); - if( scene->r.mode & R_FIELDS ); else facf= fac; - } else { - fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence, - "effect_fader", 0); - if (fcu) { - fac = facf = evaluate_fcurve(fcu, cfra); - if( scene->r.mode & R_FIELDS ) { - facf = evaluate_fcurve(fcu, cfra + 0.5); - } - } else { - fac = facf = seq->effect_fader; - } - } - - early_out = sh.early_out(seq, fac, facf); - - if (early_out == -1) { /* no input needed */ - sh.execute(scene, seq, cfra, fac, facf, - se->ibuf->x, se->ibuf->y, render_size, - 0, 0, 0, se->ibuf); - return; - } - - switch (early_out) { - case 0: - if (se->se1==0 || se->se2==0 || se->se3==0) { - make_black_ibuf(se->ibuf); - return; - } - - se1= se->se1; - se2= se->se2; - se3= se->se3; - - if ( (se1==0 || se2==0 || se3==0) - || (se1->ibuf==0 || se2->ibuf==0 || se3->ibuf==0)) { - make_black_ibuf(se->ibuf); - return; - } - - break; - case 1: - if (se->se1 == 0) { - make_black_ibuf(se->ibuf); - return; - } - - se1= se->se1; - - if (se1 == 0 || se1->ibuf == 0) { - make_black_ibuf(se->ibuf); - return; - } - - if (se->ibuf != se1->ibuf) { - IMB_freeImBuf(se->ibuf); - se->ibuf = se1->ibuf; - IMB_refImBuf(se->ibuf); - } - return; - case 2: - if (se->se2 == 0) { - make_black_ibuf(se->ibuf); - return; - } - - se2= se->se2; - - if (se2 == 0 || se2->ibuf == 0) { - make_black_ibuf(se->ibuf); - return; - } - if (se->ibuf != se2->ibuf) { - IMB_freeImBuf(se->ibuf); - se->ibuf = se2->ibuf; - IMB_refImBuf(se->ibuf); - } - return; - default: - make_black_ibuf(se->ibuf); - return; - } - - x= se2->ibuf->x; - y= se2->ibuf->y; - - if (!se1->ibuf->rect_float && se->ibuf->rect_float) { - IMB_float_from_rect_simple(se1->ibuf); - } - if (!se2->ibuf->rect_float && se->ibuf->rect_float) { - IMB_float_from_rect_simple(se2->ibuf); - } - if (!se3->ibuf->rect_float && se->ibuf->rect_float) { - IMB_float_from_rect_simple(se3->ibuf); - } - - if (!se1->ibuf->rect && !se->ibuf->rect_float) { - IMB_rect_from_float(se1->ibuf); - } - if (!se2->ibuf->rect && !se->ibuf->rect_float) { - IMB_rect_from_float(se2->ibuf); - } - if (!se3->ibuf->rect && !se->ibuf->rect_float) { - IMB_rect_from_float(se3->ibuf); - } - - sh.execute(scene, seq, cfra, fac, facf, x, y, render_size, - se1->ibuf, se2->ibuf, se3->ibuf, - se->ibuf); -} - -static int give_stripelem_index(Sequence *seq, int cfra) -{ - int nr; + float nr; if(seq->startdisp >cfra || seq->enddisp <= cfra) return -1; if(seq->len == 0) return -1; @@ -1096,93 +912,12 @@ static int give_stripelem_index(Sequence *seq, int cfra) } if (seq->strobe < 1.0) seq->strobe = 1.0; if (seq->strobe > 1.0) { - nr -= (int)fmod((double)nr, (double)seq->strobe); + nr -= fmod((double)nr, (double)seq->strobe); } return nr; } -static TStripElem* alloc_tstripdata(int len, const char * name) -{ - int i; - TStripElem *se = MEM_callocN(len * sizeof(TStripElem), name); - for (i = 0; i < len; i++) { - se[i].ok = STRIPELEM_OK; - } - return se; -} - -static TStripElem *give_tstripelem(Sequence *seq, int cfra) -{ - TStripElem *se; - int nr; - - se = seq->strip->tstripdata; - if (se == 0 && seq->len > 0) { - se = seq->strip->tstripdata = alloc_tstripdata(seq->len, - "tstripelems"); - } - nr = give_stripelem_index(seq, cfra); - - if (nr == -1) return 0; - if (se == 0) return 0; - - se += nr; - - /* if there are IPOs with blend modes active, one has to watch out - for startstill + endstill area: we can't use the same tstripelem - here for all ibufs, since then, blending with IPOs won't work! - - Rather common case, if you use a single image and try to fade - it in and out... or want to use your strip as a watermark in - alpha over mode... - */ - if (seq->blend_mode != SEQ_BLEND_REPLACE || - (/*seq->ipo && seq->ipo->curve.first &&*/ - (!(seq->type & SEQ_EFFECT) || !seq->seq1))) { - Strip * s = seq->strip; - if (cfra < seq->start) { - se = s->tstripdata_startstill; - if (seq->startstill != s->startstill) { - free_tstripdata(s->startstill, - s->tstripdata_startstill); - se = 0; - } - - if (se == 0) { - s->startstill = seq->startstill; - se = seq->strip->tstripdata_startstill - = alloc_tstripdata( - s->startstill, - "tstripelems_startstill"); - } - se += seq->start - cfra - 1; - - } else if (cfra > seq->start + seq->len-1) { - se = s->tstripdata_endstill; - if (seq->endstill != s->endstill) { - free_tstripdata(s->endstill, - s->tstripdata_endstill); - se = 0; - } - - if (se == 0) { - s->endstill = seq->endstill; - se = seq->strip->tstripdata_endstill - = alloc_tstripdata( - s->endstill, - "tstripelems_endstill"); - } - se += cfra - (seq->start + seq->len-1) - 1; - } - } - - - se->nr= nr; - - return se; -} - StripElem *give_stripelem(Sequence *seq, int cfra) { StripElem *se= seq->strip->stripdata; @@ -1191,7 +926,7 @@ StripElem *give_stripelem(Sequence *seq, int cfra) /* use the first */ } else { - int nr = give_stripelem_index(seq, cfra); + int nr = (int) give_stripelem_index(seq, cfra); if (nr == -1) return 0; if (se == 0) return 0; @@ -1322,17 +1057,15 @@ static int seq_proxy_get_fname(Scene *scene, Sequence * seq, int cfra, char * na dir, render_size, se->name); frameno = 1; } else if (seq->type == SEQ_MOVIE) { - TStripElem * tse = give_tstripelem(seq, cfra); - - frameno = tse->nr + seq->anim_startofs; + frameno = (int) give_stripelem_index(seq, cfra) + + seq->anim_startofs; snprintf(name, PROXY_MAXFILE, "%s/%s/%d/####", dir, seq->strip->stripdata->name, render_size); } else { - TStripElem * tse = give_tstripelem(seq, cfra); - - frameno = tse->nr + seq->anim_startofs; + frameno = (int) give_stripelem_index(seq, cfra) + + seq->anim_startofs; snprintf(name, PROXY_MAXFILE, "%s/proxy_misc/%d/####", dir, render_size); @@ -1361,10 +1094,11 @@ static struct ImBuf * seq_proxy_fetch(Scene *scene, Sequence * seq, int cfra, in } if (seq->flag & SEQ_USE_PROXY_CUSTOM_FILE) { - TStripElem * tse = give_tstripelem(seq, cfra); - int frameno = tse->nr + seq->anim_startofs; + int frameno = (int) give_stripelem_index(seq, cfra) + + seq->anim_startofs; if (!seq->strip->proxy->anim) { - if (!seq_proxy_get_fname(scene, seq, cfra, name, render_size)) { + if (!seq_proxy_get_fname( + scene, seq, cfra, name, render_size)) { return 0; } @@ -1607,12 +1341,12 @@ static void make_cb_table_float(float lift, float gain, float gamma, } } -static void color_balance_byte_byte(Sequence * seq, TStripElem* se, float mul) +static void color_balance_byte_byte(Sequence * seq, ImBuf* ibuf, float mul) { unsigned char cb_tab[3][256]; int c; - unsigned char * p = (unsigned char*) se->ibuf->rect; - unsigned char * e = p + se->ibuf->x * 4 * se->ibuf->y; + unsigned char * p = (unsigned char*) ibuf->rect; + unsigned char * e = p + ibuf->x * 4 * ibuf->y; StripColorBalance cb = calc_cb(seq->strip->color_balance); @@ -1630,24 +1364,24 @@ static void color_balance_byte_byte(Sequence * seq, TStripElem* se, float mul) } } -static void color_balance_byte_float(Sequence * seq, TStripElem* se, float mul) +static void color_balance_byte_float(Sequence * seq, ImBuf* ibuf, float mul) { float cb_tab[4][256]; int c,i; - unsigned char * p = (unsigned char*) se->ibuf->rect; - unsigned char * e = p + se->ibuf->x * 4 * se->ibuf->y; + unsigned char * p = (unsigned char*) ibuf->rect; + unsigned char * e = p + ibuf->x * 4 * ibuf->y; float * o; StripColorBalance cb; - imb_addrectfloatImBuf(se->ibuf); + imb_addrectfloatImBuf(ibuf); - o = se->ibuf->rect_float; + o = ibuf->rect_float; cb = calc_cb(seq->strip->color_balance); for (c = 0; c < 3; c++) { make_cb_table_float(cb.lift[c], cb.gain[c], cb.gamma[c], - cb_tab[c], mul); + cb_tab[c], mul); } for (i = 0; i < 256; i++) { @@ -1664,10 +1398,10 @@ static void color_balance_byte_float(Sequence * seq, TStripElem* se, float mul) } } -static void color_balance_float_float(Sequence * seq, TStripElem* se, float mul) +static void color_balance_float_float(Sequence * seq, ImBuf* ibuf, float mul) { - float * p = se->ibuf->rect_float; - float * e = se->ibuf->rect_float + se->ibuf->x * 4* se->ibuf->y; + float * p = ibuf->rect_float; + float * e = ibuf->rect_float + ibuf->x * 4* ibuf->y; StripColorBalance cb = calc_cb(seq->strip->color_balance); while (p < e) { @@ -1679,14 +1413,14 @@ static void color_balance_float_float(Sequence * seq, TStripElem* se, float mul) } } -static void color_balance(Sequence * seq, TStripElem* se, float mul) +static void color_balance(Sequence * seq, ImBuf* ibuf, float mul) { - if (se->ibuf->rect_float) { - color_balance_float_float(seq, se, mul); + if (ibuf->rect_float) { + color_balance_float_float(seq, ibuf, mul); } else if(seq->flag & SEQ_MAKE_FLOAT) { - color_balance_byte_float(seq, se, mul); + color_balance_byte_float(seq, ibuf, mul); } else { - color_balance_byte_byte(seq, se, mul); + color_balance_byte_byte(seq, ibuf, mul); } } @@ -1709,18 +1443,18 @@ static void color_balance(Sequence * seq, TStripElem* se, float mul) */ -static int input_have_to_preprocess(Scene *scene, Sequence * seq, TStripElem* se, int cfra, int seqrectx, int seqrecty) +static int input_have_to_preprocess( + Scene *scene, Sequence * seq, float cfra, int seqrectx, int seqrecty) { float mul; if ((seq->flag & SEQ_FILTERY) || - (seq->flag & SEQ_USE_CROP) || - (seq->flag & SEQ_USE_TRANSFORM) || - (seq->flag & SEQ_FLIPX) || - (seq->flag & SEQ_FLIPY) || - (seq->flag & SEQ_USE_COLOR_BALANCE) || - (seq->flag & SEQ_MAKE_PREMUL) || - (se->ibuf->x != seqrectx || se->ibuf->y != seqrecty)) { + (seq->flag & SEQ_USE_CROP) || + (seq->flag & SEQ_USE_TRANSFORM) || + (seq->flag & SEQ_FLIPX) || + (seq->flag & SEQ_FLIPY) || + (seq->flag & SEQ_USE_COLOR_BALANCE) || + (seq->flag & SEQ_MAKE_PREMUL)) { return TRUE; } @@ -1734,19 +1468,25 @@ static int input_have_to_preprocess(Scene *scene, Sequence * seq, TStripElem* se if (mul != 1.0) { return TRUE; } + + if (seq->sat != 1.0) { + return TRUE; + } return FALSE; } -static void input_preprocess(Scene *scene, Sequence *seq, TStripElem *se, int cfra, int seqrectx, int seqrecty) +static ImBuf * input_preprocess( + Scene *scene, Sequence *seq, float cfra, int seqrectx, int seqrecty, + ImBuf * ibuf) { float mul; - seq->strip->orx= se->ibuf->x; - seq->strip->ory= se->ibuf->y; + seq->strip->orx= ibuf->x; + seq->strip->ory= ibuf->y; if((seq->flag & SEQ_FILTERY) && seq->type != SEQ_MOVIE) { - IMB_filtery(se->ibuf); + IMB_filtery(ibuf); } if(seq->flag & SEQ_USE_CROP || seq->flag & SEQ_USE_TRANSFORM) { @@ -1764,8 +1504,8 @@ static void input_preprocess(Scene *scene, Sequence *seq, TStripElem *se, int cf t = *seq->strip->transform; } - sx = se->ibuf->x - c.left - c.right; - sy = se->ibuf->y - c.top - c.bottom; + sx = ibuf->x - c.left - c.right; + sy = ibuf->y - c.top - c.bottom; dx = sx; dy = sy; @@ -1774,49 +1514,49 @@ static void input_preprocess(Scene *scene, Sequence *seq, TStripElem *se, int cf dy = scene->r.ysch; } - if (c.top + c.bottom >= se->ibuf->y || - c.left + c.right >= se->ibuf->x || + if (c.top + c.bottom >= ibuf->y || + c.left + c.right >= ibuf->x || t.xofs >= dx || t.yofs >= dy) { - make_black_ibuf(se->ibuf); + make_black_ibuf(ibuf); } else { ImBuf * i; - if (se->ibuf->rect_float) { + if (ibuf->rect_float) { i = IMB_allocImBuf(dx, dy,32, IB_rectfloat, 0); } else { i = IMB_allocImBuf(dx, dy,32, IB_rect, 0); } - IMB_rectcpy(i, se->ibuf, - t.xofs, t.yofs, - c.left, c.bottom, - sx, sy); + IMB_rectcpy(i, ibuf, + t.xofs, t.yofs, + c.left, c.bottom, + sx, sy); + + IMB_freeImBuf(ibuf); - IMB_freeImBuf(se->ibuf); - - se->ibuf = i; + ibuf = i; } } if(seq->flag & SEQ_FLIPX) { - IMB_flipx(se->ibuf); + IMB_flipx(ibuf); } if(seq->flag & SEQ_FLIPY) { - IMB_flipy(se->ibuf); + IMB_flipy(ibuf); } if(seq->sat != 1.0f) { /* inline for now, could become an imbuf function */ int i; - char *rct= (char *)se->ibuf->rect; - float *rctf= se->ibuf->rect_float; + char *rct= (char *)ibuf->rect; + float *rctf= ibuf->rect_float; const float sat= seq->sat; float hsv[3]; if(rct) { float rgb[3]; - for (i = se->ibuf->x * se->ibuf->y; i > 0; i--, rct+=4) { + for (i = ibuf->x * ibuf->y; i > 0; i--, rct+=4) { rgb_byte_to_float(rct, rgb); rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); hsv_to_rgb(hsv[0], hsv[1] * sat, hsv[2], rgb, rgb+1, rgb+2); @@ -1825,7 +1565,7 @@ static void input_preprocess(Scene *scene, Sequence *seq, TStripElem *se, int cf } if(rctf) { - for (i = se->ibuf->x * se->ibuf->y; i > 0; i--, rctf+=4) { + for (i = ibuf->x * ibuf->y; i > 0; i--, rctf+=4) { rgb_to_hsv(rctf[0], rctf[1], rctf[2], hsv, hsv+1, hsv+2); hsv_to_rgb(hsv[0], hsv[1] * sat, hsv[2], rctf, rctf+1, rctf+2); } @@ -1839,513 +1579,115 @@ static void input_preprocess(Scene *scene, Sequence *seq, TStripElem *se, int cf } if(seq->flag & SEQ_USE_COLOR_BALANCE && seq->strip->color_balance) { - color_balance(seq, se, mul); + color_balance(seq, ibuf, mul); mul = 1.0; } if(seq->flag & SEQ_MAKE_FLOAT) { - if (!se->ibuf->rect_float) - IMB_float_from_rect_simple(se->ibuf); + if (!ibuf->rect_float) + IMB_float_from_rect_simple(ibuf); - if (se->ibuf->rect) { - imb_freerectImBuf(se->ibuf); + if (ibuf->rect) { + imb_freerectImBuf(ibuf); } } if(mul != 1.0) { - multibuf(se->ibuf, mul); + multibuf(ibuf, mul); } if(seq->flag & SEQ_MAKE_PREMUL) { - if(se->ibuf->depth == 32 && se->ibuf->zbuf == 0) { - IMB_premultiply_alpha(se->ibuf); + if(ibuf->depth == 32 && ibuf->zbuf == 0) { + IMB_premultiply_alpha(ibuf); } } - if(se->ibuf->x != seqrectx || se->ibuf->y != seqrecty ) { + if(ibuf->x != seqrectx || ibuf->y != seqrecty ) { if(scene->r.mode & R_OSA) { - IMB_scaleImBuf(se->ibuf, - (short)seqrectx, (short)seqrecty); + IMB_scaleImBuf(ibuf, + (short)seqrectx, (short)seqrecty); } else { - IMB_scalefastImBuf(se->ibuf, + IMB_scalefastImBuf(ibuf, (short)seqrectx, (short)seqrecty); } } + return ibuf; } -/* test if image too small or discarded from cache: reload */ - -static void test_and_auto_discard_ibuf(TStripElem * se, - int seqrectx, int seqrecty) +static ImBuf * copy_from_ibuf_still(Sequence * seq, float nr, + int seqrectx, int seqrecty) { - if (se->ibuf) { - if(se->ibuf->x != seqrectx || se->ibuf->y != seqrecty - || !(se->ibuf->rect || se->ibuf->rect_float)) { - IMB_freeImBuf(se->ibuf); + ImBuf * rval = 0; + ImBuf * ibuf = 0; - se->ibuf= 0; - se->ok= STRIPELEM_OK; - } + if (nr == 0) { + ibuf = seq_stripelem_cache_get( + seq, seqrectx, seqrecty, seq->start, + SEQ_STRIPELEM_IBUF_STARTSTILL); + } + if (nr == seq->len - 1) { + ibuf = seq_stripelem_cache_get( + seq, seqrectx, seqrecty, seq->start, + SEQ_STRIPELEM_IBUF_ENDSTILL); } - if (se->ibuf_comp) { - if(se->ibuf_comp->x != seqrectx || se->ibuf_comp->y != seqrecty - || !(se->ibuf_comp->rect || se->ibuf_comp->rect_float)) { - IMB_freeImBuf(se->ibuf_comp); - se->ibuf_comp = 0; - } + if (ibuf) { + rval = IMB_dupImBuf(ibuf); + IMB_freeImBuf(ibuf); } + + return rval; } -static void test_and_auto_discard_ibuf_stills(Strip * strip) +static void copy_to_ibuf_still(Sequence * seq, float nr, + ImBuf * ibuf) { - if (strip->ibuf_startstill) { - if (!strip->ibuf_startstill->rect && - !strip->ibuf_startstill->rect_float) { - IMB_freeImBuf(strip->ibuf_startstill); - strip->ibuf_startstill = 0; - } + if (nr == 0) { + seq_stripelem_cache_put( + seq, 0, 0, seq->start, + SEQ_STRIPELEM_IBUF_STARTSTILL, ibuf); } - if (strip->ibuf_endstill) { - if (!strip->ibuf_endstill->rect && - !strip->ibuf_endstill->rect_float) { - IMB_freeImBuf(strip->ibuf_endstill); - strip->ibuf_endstill = 0; - } + if (nr == seq->len - 1) { + seq_stripelem_cache_put( + seq, 0, 0, seq->start, + SEQ_STRIPELEM_IBUF_ENDSTILL, ibuf); } } -static void copy_from_ibuf_still(Sequence * seq, TStripElem * se) -{ - if (!se->ibuf) { - if (se->nr == 0 && seq->strip->ibuf_startstill) { - IMB_cache_limiter_touch(seq->strip->ibuf_startstill); +/* ********************************************************************** + strip rendering functions + ********************************************************************** */ - se->ibuf = IMB_dupImBuf(seq->strip->ibuf_startstill); - } - if (se->nr == seq->len - 1 - && (seq->len != 1) - && seq->strip->ibuf_endstill) { - IMB_cache_limiter_touch(seq->strip->ibuf_endstill); - - se->ibuf = IMB_dupImBuf(seq->strip->ibuf_endstill); - } - } -} - -static void copy_to_ibuf_still(Sequence * seq, TStripElem * se) -{ - if (se->ibuf) { - if (se->nr == 0) { - seq->strip->ibuf_startstill = IMB_dupImBuf(se->ibuf); - - IMB_cache_limiter_insert(seq->strip->ibuf_startstill); - IMB_cache_limiter_touch(seq->strip->ibuf_startstill); - } - if (se->nr == seq->len - 1 && seq->len != 1) { - seq->strip->ibuf_endstill = IMB_dupImBuf(se->ibuf); - - IMB_cache_limiter_insert(seq->strip->ibuf_endstill); - IMB_cache_limiter_touch(seq->strip->ibuf_endstill); - } - } -} - -static void free_metastrip_imbufs(ListBase *seqbasep, int cfra, int chanshown) -{ - Sequence* seq_arr[MAXSEQ+1]; - int i; - TStripElem* se = 0; - - evaluate_seq_frame_gen(seq_arr, seqbasep, cfra); - - for (i = 0; i < MAXSEQ; i++) { - if (!video_seq_is_rendered(seq_arr[i])) { - continue; - } - se = give_tstripelem(seq_arr[i], cfra); - if (se) { - if (se->ibuf) { - IMB_freeImBuf(se->ibuf); - - se->ibuf= 0; - se->ok= STRIPELEM_OK; - } - - if (se->ibuf_comp) { - IMB_freeImBuf(se->ibuf_comp); - - se->ibuf_comp = 0; - } - } - } - -} - -static void check_limiter_refcount(const char * func, TStripElem *se) -{ - if (se && se->ibuf) { - int refcount = IMB_cache_limiter_get_refcount(se->ibuf); - if (refcount != 1) { - /* can happen on complex pipelines */ - if (refcount > 1 && (G.f & G_DEBUG) == 0) { - return; - } - - fprintf(stderr, - "sequencer: (ibuf) %s: " - "suspicious memcache " - "limiter refcount: %d\n", func, refcount); - } - } -} - -static void check_limiter_refcount_comp(const char * func, TStripElem *se) -{ - if (se && se->ibuf_comp) { - int refcount = IMB_cache_limiter_get_refcount(se->ibuf_comp); - if (refcount != 1) { - /* can happen on complex pipelines */ - if (refcount > 1 && (G.f & G_DEBUG) == 0) { - return; - } - fprintf(stderr, - "sequencer: (ibuf comp) %s: " - "suspicious memcache " - "limiter refcount: %d\n", func, refcount); - } - } -} - -static TStripElem* do_build_seq_array_recursively( +static ImBuf* seq_render_strip_stack( Scene *scene, - ListBase *seqbasep, int cfra, int chanshown, int render_size, + ListBase *seqbasep, float cfra, int chanshown, int render_size, int seqrectx, int seqrecty); -static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int cfra, - int build_proxy_run, int render_size, int seqrectx, int seqrecty) -{ - char name[FILE_MAXDIR+FILE_MAXFILE]; - int use_limiter = TRUE; +static ImBuf * seq_render_strip(Scene *scene, Sequence * seq, float cfra, + int render_size, + int seqrectx, int seqrecty); - test_and_auto_discard_ibuf(se, seqrectx, seqrecty); - test_and_auto_discard_ibuf_stills(seq->strip); - if(seq->type == SEQ_META) { - TStripElem * meta_se = 0; - int use_preprocess = FALSE; - use_limiter = FALSE; - - if (!build_proxy_run && se->ibuf == 0) { - se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); - if (se->ibuf) { - use_limiter = TRUE; - use_preprocess = TRUE; - } - } - - if(!se->ibuf && seq->seqbase.first) { - meta_se = do_build_seq_array_recursively(scene, - &seq->seqbase, seq->start + se->nr, 0, - render_size, seqrectx, seqrecty); - - check_limiter_refcount("do_build_seq_ibuf: for META", meta_se); - } - - se->ok = STRIPELEM_OK; - - if(!se->ibuf && meta_se) { - se->ibuf = meta_se->ibuf_comp; - if(se->ibuf && - (!input_have_to_preprocess(scene, seq, se, cfra, - seqrectx, seqrecty) || - build_proxy_run)) { - IMB_refImBuf(se->ibuf); - if (build_proxy_run) { - IMB_cache_limiter_unref(se->ibuf); - } - } else if (se->ibuf) { - struct ImBuf * i = IMB_dupImBuf(se->ibuf); - - IMB_cache_limiter_unref(se->ibuf); - - se->ibuf = i; - - use_limiter = TRUE; - use_preprocess = TRUE; - } - } else if (se->ibuf) { - use_limiter = TRUE; - } - if (meta_se) { - free_metastrip_imbufs( - &seq->seqbase, seq->start + se->nr, 0); - } - - if (use_preprocess) { - input_preprocess(scene, seq, se, cfra, seqrectx, - seqrecty); - } - } else if(seq->type & SEQ_EFFECT) { - int use_preprocess = FALSE; - /* should the effect be recalculated? */ - - if (!build_proxy_run && se->ibuf == 0) { - se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); - if (se->ibuf) { - use_preprocess = TRUE; - } - } - - if(se->ibuf == 0) { - /* if any inputs are rectfloat, output is float too */ - if((se->se1 && se->se1->ibuf && se->se1->ibuf->rect_float) || - (se->se2 && se->se2->ibuf && se->se2->ibuf->rect_float) || - (se->se3 && se->se3->ibuf && se->se3->ibuf->rect_float)) - se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rectfloat, 0); - else - se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rect, 0); - - do_effect(scene, cfra, seq, se, render_size); - if (input_have_to_preprocess(scene, seq, se, cfra, - seqrectx, seqrecty) && - !build_proxy_run) { - if ((se->se1 && (se->ibuf == se->se1->ibuf)) || - (se->se2 && (se->ibuf == se->se2->ibuf))) { - struct ImBuf * i - = IMB_dupImBuf(se->ibuf); - - IMB_freeImBuf(se->ibuf); - - se->ibuf = i; - } - use_preprocess = TRUE; - } - } - if (use_preprocess) { - input_preprocess(scene, seq, se, cfra, seqrectx, - seqrecty); - } - } else if(seq->type == SEQ_IMAGE) { - if(se->ok == STRIPELEM_OK && se->ibuf == 0) { - StripElem * s_elem = give_stripelem(seq, cfra); - BLI_join_dirfile(name, seq->strip->dir, s_elem->name); - BLI_path_abs(name, G.sce); - if (!build_proxy_run) { - se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); - } - copy_from_ibuf_still(seq, se); - - if (se->ibuf==NULL && (se->ibuf= IMB_loadiffname(name, IB_rect))) { - /* we don't need both (speed reasons)! */ - if (se->ibuf->rect_float && se->ibuf->rect) - imb_freerectImBuf(se->ibuf); - - /* all sequencer color is done in SRGB space, linear gives odd crossfades */ - if(se->ibuf->profile == IB_PROFILE_LINEAR_RGB) - IMB_convert_profile(se->ibuf, IB_PROFILE_NONE); - - copy_to_ibuf_still(seq, se); - } - - if(se->ibuf == 0) { - se->ok = STRIPELEM_FAILED; - } else if (!build_proxy_run) { - input_preprocess(scene, seq, se, cfra, - seqrectx, seqrecty); - } - } - } else if(seq->type == SEQ_MOVIE) { - if(se->ok == STRIPELEM_OK && se->ibuf==0) { - if(!build_proxy_run) { - se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); - } - copy_from_ibuf_still(seq, se); - - if (se->ibuf == 0) { - if(seq->anim==0) { - BLI_join_dirfile(name, seq->strip->dir, seq->strip->stripdata->name); - BLI_path_abs(name, G.sce); - - seq->anim = openanim( - name, IB_rect | - ((seq->flag & SEQ_FILTERY) - ? IB_animdeinterlace : 0)); - } - if(seq->anim) { - IMB_anim_set_preseek(seq->anim, seq->anim_preseek); - se->ibuf = IMB_anim_absolute(seq->anim, se->nr + seq->anim_startofs); - /* we don't need both (speed reasons)! */ - if (se->ibuf - && se->ibuf->rect_float - && se->ibuf->rect) { - imb_freerectImBuf(se->ibuf); - } - - } - copy_to_ibuf_still(seq, se); - } - - if(se->ibuf == 0) { - se->ok = STRIPELEM_FAILED; - } else if (!build_proxy_run) { - input_preprocess(scene, seq, se, cfra, - seqrectx, seqrecty); - } - } - } else if(seq->type == SEQ_SCENE) { // scene can be NULL after deletions - Scene *sce= seq->scene;// *oldsce= scene; - int have_seq= FALSE; - int sce_valid= FALSE; - - if(sce) { - have_seq= (sce->r.scemode & R_DOSEQ) && sce->ed && sce->ed->seqbase.first; - sce_valid= (sce->camera || have_seq); - } - - if (se->ibuf == NULL && sce_valid && !build_proxy_run) { - se->ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); - if (se->ibuf) { - input_preprocess(scene, seq, se, cfra, - seqrectx, seqrecty); - } - } - - if (se->ibuf == NULL && sce_valid) { - copy_from_ibuf_still(seq, se); - if (se->ibuf) { - input_preprocess(scene, seq, se, cfra, - seqrectx, seqrecty); - } - } - - if (!sce_valid) { - se->ok = STRIPELEM_FAILED; - } - else if (se->ibuf==NULL && sce_valid) { - int frame= seq->sfra + se->nr + seq->anim_startofs; - int oldcfra = seq->scene->r.cfra; - Object *oldcamera= seq->scene->camera; - ListBase oldmarkers; - - /* Hack! This function can be called from do_render_seq(), in that case - the seq->scene can already have a Render initialized with same name, - so we have to use a default name. (compositor uses scene name to - find render). - However, when called from within the UI (image preview in sequencer) - we do want to use scene Render, that way the render result is defined - for display in render/imagewindow - - Hmm, don't see, why we can't do that all the time, - and since G.rendering is uhm, gone... (Peter) - */ - - int rendering = G.rendering; - int doseq; - int doseq_gl= G.rendering ? /*(scene->r.seq_flag & R_SEQ_GL_REND)*/ 0 : (scene->r.seq_flag & R_SEQ_GL_PREV); - - /* prevent eternal loop */ - doseq= scene->r.scemode & R_DOSEQ; - scene->r.scemode &= ~R_DOSEQ; - - seq->scene->r.cfra= frame; - if(seq->scene_camera) seq->scene->camera= seq->scene_camera; - else scene_camera_switch_update(seq->scene); - -#ifdef DURIAN_CAMERA_SWITCH - /* stooping to new low's in hackyness :( */ - oldmarkers= seq->scene->markers; - seq->scene->markers.first= seq->scene->markers.last= NULL; -#endif - - if(sequencer_view3d_cb && BLI_thread_is_main() && doseq_gl && (seq->scene == scene || have_seq==0) && seq->scene->camera) { - /* opengl offscreen render */ - scene_update_for_newframe(seq->scene, seq->scene->lay); - se->ibuf= sequencer_view3d_cb(seq->scene, seqrectx, seqrecty, scene->r.seq_prev_type); - } - else { - Render *re; - RenderResult rres; - - if(rendering) - re= RE_NewRender(" do_build_seq_ibuf"); - else - re= RE_NewRender(sce->id.name); - - RE_BlenderFrame(re, sce, NULL, sce->lay, frame); - - RE_AcquireResultImage(re, &rres); - - if(rres.rectf) { - se->ibuf= IMB_allocImBuf(rres.rectx, rres.recty, 32, IB_rectfloat, 0); - memcpy(se->ibuf->rect_float, rres.rectf, 4*sizeof(float)*rres.rectx*rres.recty); - if(rres.rectz) { - addzbuffloatImBuf(se->ibuf); - memcpy(se->ibuf->zbuf_float, rres.rectz, sizeof(float)*rres.rectx*rres.recty); - } - - /* { - ImBuf *imb= IMB_allocImBuf(rres.rectx, rres.recty, 32, IB_rectfloat, 0); - IMB_saveiff(imb, "/tmp/foo.image", IB_rect | IB_metadata); - IMB_freeImBuf(imb); - } */ - - } else if (rres.rect32) { - se->ibuf= IMB_allocImBuf(rres.rectx, rres.recty, 32, IB_rect, 0); - memcpy(se->ibuf->rect, rres.rect32, 4*rres.rectx*rres.recty); - } - - RE_ReleaseResultImage(re); - - // BIF_end_render_callbacks(); - } - - /* restore */ - scene->r.scemode |= doseq; - - seq->scene->r.cfra = oldcfra; - seq->scene->camera= oldcamera; - -#ifdef DURIAN_CAMERA_SWITCH - /* stooping to new low's in hackyness :( */ - seq->scene->markers= oldmarkers; -#endif - - copy_to_ibuf_still(seq, se); - - if (!build_proxy_run) { - if(se->ibuf == NULL) { - se->ok = STRIPELEM_FAILED; - } else { - input_preprocess(scene, seq, se, cfra, - seqrectx, seqrecty); - } - } - - } - } - if (!build_proxy_run) { - if (se->ibuf && use_limiter) { - IMB_cache_limiter_insert(se->ibuf); - IMB_cache_limiter_ref(se->ibuf); - IMB_cache_limiter_touch(se->ibuf); - } - } -} - -static TStripElem* do_build_seq_recursively(Scene *scene, Sequence *seq, int cfra, int render_size, int seqrectx, int seqrecty); - -static void do_effect_seq_recursively(Scene *scene, Sequence *seq, TStripElem *se, int cfra, int render_size, int seqrectx, int seqrecty) +static ImBuf* seq_render_effect_strip_impl( + Scene *scene, float cfra, Sequence *seq, int render_size, + int seqrectx, int seqrecty) { float fac, facf; - struct SeqEffectHandle sh = get_sequence_effect(seq); int early_out; - FCurve *fcu= NULL; + int i; + int must_preprocess = FALSE; - se->se1 = 0; - se->se2 = 0; - se->se3 = 0; + struct SeqEffectHandle sh = get_sequence_effect(seq); + FCurve *fcu= NULL; + ImBuf * ibuf[3]; + ImBuf * out = 0; + + ibuf[0] = ibuf[1] = ibuf[2] = 0; + + if (!sh.execute) { /* effect not supported in this version... */ + goto finish; + } if ((seq->flag & SEQ_USE_EFFECT_DEFAULT_FADE) != 0) { sh.get_default_fac(seq, cfra, &fac, &facf); @@ -2364,200 +1706,417 @@ static void do_effect_seq_recursively(Scene *scene, Sequence *seq, TStripElem *s } early_out = sh.early_out(seq, fac, facf); + + if (early_out == -1) { /* no input needed */ + /* hmmm, global float option ? */ + out = IMB_allocImBuf( + (short)seqrectx, (short)seqrecty, 32, IB_rect, 0); + + sh.execute(scene, seq, cfra, fac, facf, + out->x, out->y, render_size, + 0, 0, 0, out); + goto finish; + } + + + must_preprocess = input_have_to_preprocess( + scene, seq, cfra, seqrectx, seqrecty); + switch (early_out) { - case -1: - /* no input needed */ - break; case 0: - se->se1 = do_build_seq_recursively(scene, seq->seq1, cfra, render_size, seqrectx, seqrecty); - se->se2 = do_build_seq_recursively(scene, seq->seq2, cfra, render_size, seqrectx, seqrecty); - if (seq->seq3) { - se->se3 = do_build_seq_recursively(scene, seq->seq3, cfra, render_size, seqrectx, seqrecty); - } break; case 1: - se->se1 = do_build_seq_recursively(scene, seq->seq1, cfra, render_size, seqrectx, seqrecty); - break; + if (seq->seq1) { + ibuf[0] = seq_render_strip(scene, seq->seq1, cfra, + render_size, + seqrectx, seqrecty); + } + if (ibuf[0]) { + if (must_preprocess) { + out = IMB_dupImBuf(ibuf[0]); + } else { + out = ibuf[0]; + IMB_refImBuf(out); + } + } + goto finish; case 2: - se->se2 = do_build_seq_recursively(scene, seq->seq2, cfra, render_size, seqrectx, seqrecty); - break; - } - - - do_build_seq_ibuf(scene, seq, se, cfra, FALSE, render_size, seqrectx, seqrecty); - - /* children are not needed anymore ... */ - - if (se->se1 && se->se1->ibuf) { - IMB_cache_limiter_unref(se->se1->ibuf); - } - if (se->se2 && se->se2->ibuf) { - IMB_cache_limiter_unref(se->se2->ibuf); - } - if (se->se3 && se->se3->ibuf) { - IMB_cache_limiter_unref(se->se3->ibuf); - } - check_limiter_refcount("do_effect_seq_recursively", se); -} - -static TStripElem* do_build_seq_recursively_impl(Scene *scene, Sequence * seq, int cfra, int render_size, int seqrectx, int seqrecty) -{ - TStripElem *se; - - se = give_tstripelem(seq, cfra); - - if(se) { - if (seq->type & SEQ_EFFECT) { - do_effect_seq_recursively(scene, seq, se, cfra, render_size, seqrectx, seqrecty); - } else { - do_build_seq_ibuf(scene, seq, se, cfra, FALSE, render_size, seqrectx, seqrecty); + if (seq->seq2) { + ibuf[1] = seq_render_strip(scene, seq->seq2, cfra, + render_size, + seqrectx, seqrecty); } - } - return se; -} - -/* FIXME: - -If cfra was float throughout blender (especially in the render -pipeline) one could even _render_ with subframe precision -instead of faking using the blend code below... - -*/ - -static TStripElem* do_handle_speed_effect(Scene *scene, Sequence * seq, int cfra, int render_size, int seqrectx, int seqrecty) -{ - SpeedControlVars * s = (SpeedControlVars *)seq->effectdata; - int nr = cfra - seq->start; - float f_cfra; - int cfra_left; - int cfra_right; - TStripElem * se = 0; - TStripElem * se1 = 0; - TStripElem * se2 = 0; - - sequence_effect_speed_rebuild_map(scene, seq, 0); - - f_cfra = seq->start + s->frameMap[nr]; - - cfra_left = (int) floor(f_cfra); - cfra_right = (int) ceil(f_cfra); - - se = give_tstripelem(seq, cfra); - - if (!se) { - return se; - } - - if (cfra_left == cfra_right || - (s->flags & SEQ_SPEED_BLEND) == 0) { - test_and_auto_discard_ibuf(se, seqrectx, seqrecty); - - if (se->ibuf == NULL) { - se1 = do_build_seq_recursively(scene, seq->seq1, cfra_left, render_size, seqrectx, seqrecty); - - if((se1 && se1->ibuf && se1->ibuf->rect_float)) - se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rectfloat, 0); - else - se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rect, 0); - - if (se1 == 0 || se1->ibuf == 0) { - make_black_ibuf(se->ibuf); + if (ibuf[1]) { + if (must_preprocess) { + out = IMB_dupImBuf(ibuf[1]); } else { - if (se->ibuf != se1->ibuf) { - if (se->ibuf) { - IMB_freeImBuf(se->ibuf); - } - - se->ibuf = se1->ibuf; - IMB_refImBuf(se->ibuf); - } + out = ibuf[1]; + IMB_refImBuf(out); } } + goto finish; + default: + goto finish; + } + + if (seq->seq1) { + ibuf[0] = seq_render_strip(scene, seq->seq1, cfra, + render_size, + seqrectx, seqrecty); + } + + if (seq->seq2) { + ibuf[1] = seq_render_strip(scene, seq->seq2, cfra, + render_size, + seqrectx, seqrecty); + } + + if (seq->seq3) { + ibuf[2] = seq_render_strip(scene, seq->seq3, cfra, + render_size, + seqrectx, seqrecty); + } + + if (!ibuf[0] || !ibuf[1]) { + goto finish; + } + + /* if any inputs are rectfloat, output is float too */ + if((ibuf[0] && ibuf[0]->rect_float) || + (ibuf[1] && ibuf[1]->rect_float) || + (ibuf[2] && ibuf[2]->rect_float)) { + out = IMB_allocImBuf( + (short)seqrectx, (short)seqrecty, 32, IB_rectfloat, 0); } else { - struct SeqEffectHandle sh; - - if(se->ibuf) { - if(se->ibuf->x < seqrectx || se->ibuf->y < seqrecty - || !(se->ibuf->rect || se->ibuf->rect_float)) { - IMB_freeImBuf(se->ibuf); - se->ibuf= 0; - } - } - - if (se->ibuf == NULL) { - se1 = do_build_seq_recursively(scene, seq->seq1, cfra_left, render_size, seqrectx, seqrecty); - se2 = do_build_seq_recursively(scene, seq->seq1, cfra_right, render_size, seqrectx, seqrecty); - - if((se1 && se1->ibuf && se1->ibuf->rect_float)) - se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rectfloat, 0); - else - se->ibuf= IMB_allocImBuf((short)seqrectx, (short)seqrecty, 32, IB_rect, 0); - - if (!se1 || !se2) { - make_black_ibuf(se->ibuf); - } else { - sh = get_sequence_effect(seq); - - sh.execute(scene, seq, cfra, - f_cfra - (float) cfra_left, - f_cfra - (float) cfra_left, - se->ibuf->x, se->ibuf->y, - render_size, - se1->ibuf, se2->ibuf, 0, se->ibuf); - } - } - + out = IMB_allocImBuf( + (short)seqrectx, (short)seqrecty, 32, IB_rect, 0); } - /* caller expects this to be referenced, so do it! */ - if (se->ibuf) { - IMB_cache_limiter_insert(se->ibuf); - IMB_cache_limiter_ref(se->ibuf); - IMB_cache_limiter_touch(se->ibuf); + for (i = 0; i < 3; i++) { + ImBuf * b = ibuf[i]; + if (b) { + if (!b->rect_float && out->rect_float) { + IMB_float_from_rect_simple(b); + } + if (!b->rect && !out->rect_float) { + IMB_rect_from_float(b); + } + } } - /* children are no longer needed */ - if (se1 && se1->ibuf) - IMB_cache_limiter_unref(se1->ibuf); - if (se2 && se2->ibuf) - IMB_cache_limiter_unref(se2->ibuf); + sh.execute(scene, seq, cfra, fac, facf, out->x, out->y, render_size, + ibuf[0], ibuf[1], ibuf[2], out); - check_limiter_refcount("do_handle_speed_effect", se); +finish: + for (i = 0; i < 3; i++) { + IMB_freeImBuf(ibuf[i]); + } - return se; + if (!out) { + out = IMB_allocImBuf( + (short)seqrectx, (short)seqrecty, 32, IB_rect, 0); + } + + return out; } -/* - * build all ibufs recursively - * - * if successfull, the returned TStripElem contains the (referenced!) imbuf - * that means: you _must_ call - * - * IMB_cache_limiter_unref(rval); - * - * if rval != 0 - * - */ -static TStripElem* do_build_seq_recursively(Scene *scene, Sequence * seq, int cfra, int render_size, int seqrectx, int seqrecty) +static ImBuf * seq_render_scene_strip_impl( + Scene * scene, Sequence * seq, float nr, int seqrectx, int seqrecty) { - TStripElem *se; - - /* BAD HACK! Seperate handling for speed effects needed, since - a) you can't just fetch a different cfra within an effect strip - b) we have to blend two frames, and CFRA is not float... + ImBuf * ibuf = 0; + float frame= seq->sfra + nr + seq->anim_startofs; + float oldcfra = seq->scene->r.cfra; + Object *oldcamera= seq->scene->camera; + ListBase oldmarkers; + + /* Hack! This function can be called from do_render_seq(), in that case + the seq->scene can already have a Render initialized with same name, + so we have to use a default name. (compositor uses scene name to + find render). + However, when called from within the UI (image preview in sequencer) + we do want to use scene Render, that way the render result is defined + for display in render/imagewindow + + Hmm, don't see, why we can't do that all the time, + and since G.rendering is uhm, gone... (Peter) */ - if (seq->type == SEQ_SPEED) { - se = do_handle_speed_effect(scene, seq, cfra, render_size, seqrectx, seqrecty); - } else { - se = do_build_seq_recursively_impl(scene, seq, cfra, render_size, seqrectx, seqrecty); + + int rendering = G.rendering; + int doseq; + int doseq_gl= G.rendering ? /*(scene->r.seq_flag & R_SEQ_GL_REND)*/ 0 : (scene->r.seq_flag & R_SEQ_GL_PREV); + int have_seq= FALSE; + Scene *sce= seq->scene;// *oldsce= scene; + int sce_valid= FALSE; + + have_seq= (sce->r.scemode & R_DOSEQ) + && sce->ed && sce->ed->seqbase.first; + + if(sce) { + sce_valid= (sce->camera || have_seq); } - check_limiter_refcount("do_build_seq_recursively", se); + if (!sce_valid) { + return 0; + } - return se; + + /* prevent eternal loop */ + doseq= scene->r.scemode & R_DOSEQ; + scene->r.scemode &= ~R_DOSEQ; + + seq->scene->r.cfra= frame; + if(seq->scene_camera) + seq->scene->camera= seq->scene_camera; + else + scene_camera_switch_update(seq->scene); + +#ifdef DURIAN_CAMERA_SWITCH + /* stooping to new low's in hackyness :( */ + oldmarkers= seq->scene->markers; + seq->scene->markers.first= seq->scene->markers.last= NULL; +#endif + + if(sequencer_view3d_cb && BLI_thread_is_main() && doseq_gl && (seq->scene == scene || have_seq==0) && seq->scene->camera) { + /* opengl offscreen render */ + scene_update_for_newframe(seq->scene, seq->scene->lay); + ibuf= sequencer_view3d_cb(seq->scene, seqrectx, seqrecty, + scene->r.seq_prev_type); + } + else { + Render *re; + RenderResult rres; + + if(rendering) + re= RE_NewRender(" do_build_seq_ibuf"); + else + re= RE_NewRender(sce->id.name); + + RE_BlenderFrame(re, sce, NULL, sce->lay, frame); + + RE_AcquireResultImage(re, &rres); + + if(rres.rectf) { + ibuf= IMB_allocImBuf(rres.rectx, rres.recty, 32, IB_rectfloat, 0); + memcpy(ibuf->rect_float, rres.rectf, 4*sizeof(float)*rres.rectx*rres.recty); + if(rres.rectz) { + addzbuffloatImBuf(ibuf); + memcpy(ibuf->zbuf_float, rres.rectz, sizeof(float)*rres.rectx*rres.recty); + } + + /* { + ImBuf *imb= IMB_allocImBuf(rres.rectx, rres.recty, 32, IB_rectfloat, 0); + IMB_saveiff(imb, "/tmp/foo.image", IB_rect | IB_metadata); + IMB_freeImBuf(imb); + } */ + + } else if (rres.rect32) { + ibuf= IMB_allocImBuf(rres.rectx, rres.recty, 32, IB_rect, 0); + memcpy(ibuf->rect, rres.rect32, 4*rres.rectx*rres.recty); + } + + RE_ReleaseResultImage(re); + + // BIF_end_render_callbacks(); + } + + /* restore */ + scene->r.scemode |= doseq; + + seq->scene->r.cfra = oldcfra; + seq->scene->camera= oldcamera; + +#ifdef DURIAN_CAMERA_SWITCH + /* stooping to new low's in hackyness :( */ + seq->scene->markers= oldmarkers; +#endif + + return ibuf; } +static ImBuf * seq_render_strip(Scene *scene, Sequence * seq, float cfra, + int render_size, + int seqrectx, int seqrecty) +{ + char name[FILE_MAXDIR+FILE_MAXFILE]; + int use_preprocess = input_have_to_preprocess( + scene, seq, cfra, seqrectx, seqrecty); + ImBuf * ibuf = seq_stripelem_cache_get( + seq, seqrectx, seqrecty, cfra, SEQ_STRIPELEM_IBUF); + float nr = give_stripelem_index(seq, cfra); + + /* currently, we cache preprocessed images */ + if (ibuf) { + use_preprocess = FALSE; + } + + if(seq->type == SEQ_META) { + ImBuf * meta_ibuf = 0; + + if (ibuf == 0) { + ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); + } + + if(!ibuf && seq->seqbase.first) { + meta_ibuf = seq_render_strip_stack( + scene, + &seq->seqbase, seq->start + nr, 0, + render_size, seqrectx, seqrecty); + } + + if(!ibuf && meta_ibuf) { + ibuf = meta_ibuf; + if(ibuf && use_preprocess) { + struct ImBuf * i = IMB_dupImBuf(ibuf); + + IMB_freeImBuf(ibuf); + + ibuf = i; + } + } + } else if(seq->type == SEQ_SPEED) { + ImBuf * child_ibuf = 0; + + if (ibuf == 0) { + ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); + } + + if (ibuf == 0) { + float f_cfra; + SpeedControlVars * s + = (SpeedControlVars *)seq->effectdata; + + sequence_effect_speed_rebuild_map(scene, seq, 0); + + /* weeek! */ + f_cfra = seq->start + s->frameMap[(int) nr]; + + child_ibuf = seq_render_strip(scene, seq->seq1, f_cfra, + render_size, + seqrectx, seqrecty); + } + + if (!ibuf && child_ibuf) { + ibuf = child_ibuf; + if(ibuf && use_preprocess) { + struct ImBuf * i = IMB_dupImBuf(ibuf); + + IMB_freeImBuf(ibuf); + + ibuf = i; + } + } + } else if(seq->type & SEQ_EFFECT) { + /* should the effect be recalculated? */ + + if (ibuf == 0) { + ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); + } + + if(ibuf == 0) { + ibuf = seq_render_effect_strip_impl( + scene, cfra, seq, render_size, + seqrectx, seqrecty); + } + } else if(seq->type == SEQ_IMAGE) { + StripElem * s_elem = give_stripelem(seq, cfra); + + if(ibuf == 0) { + BLI_join_dirfile(name, seq->strip->dir, s_elem->name); + BLI_path_abs(name, G.sce); + + ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); + } + + if (ibuf == 0) { + ibuf = copy_from_ibuf_still(seq,nr,seqrectx,seqrecty); + } + + if (ibuf == 0 && (ibuf=IMB_loadiffname(name, IB_rect))) { + /* we don't need both (speed reasons)! */ + if (ibuf->rect_float && ibuf->rect) + imb_freerectImBuf(ibuf); + + /* all sequencer color is done in SRGB space, linear gives odd crossfades */ + if(ibuf->profile == IB_PROFILE_LINEAR_RGB) + IMB_convert_profile(ibuf, IB_PROFILE_NONE); + + copy_to_ibuf_still(seq, nr, ibuf); + } + } else if(seq->type == SEQ_MOVIE) { + if(ibuf == 0) { + ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); + + } + + if (ibuf == 0) { + ibuf = copy_from_ibuf_still(seq, nr,seqrectx,seqrecty); + } + + if (ibuf == 0) { + if(seq->anim==0) { + BLI_join_dirfile(name, + seq->strip->dir, + seq->strip->stripdata->name); + BLI_path_abs(name, G.sce); + + seq->anim = openanim( + name, IB_rect | + ((seq->flag & SEQ_FILTERY) + ? IB_animdeinterlace : 0)); + } + if(seq->anim) { + IMB_anim_set_preseek(seq->anim, + seq->anim_preseek); + ibuf = IMB_anim_absolute(seq->anim, + nr + + seq->anim_startofs); + /* we don't need both (speed reasons)! */ + if (ibuf && ibuf->rect_float + && ibuf->rect) { + imb_freerectImBuf(ibuf); + } + + } + copy_to_ibuf_still(seq, nr, ibuf); + } + + } else if(seq->type == SEQ_SCENE) { // scene can be NULL after deletions + if (ibuf == 0) { + ibuf = seq_proxy_fetch(scene, seq, cfra, render_size); + } + if (ibuf == 0) { + ibuf = copy_from_ibuf_still(seq, nr,seqrectx,seqrecty); + } + + if (ibuf == 0) { + ibuf = seq_render_scene_strip_impl(scene, seq, nr, + seqrectx, seqrecty); + + copy_to_ibuf_still(seq, nr, ibuf); + } + } + + if (!ibuf) { + ibuf = IMB_allocImBuf( + (short)seqrectx, (short)seqrecty, 32, IB_rect, 0); + } + + if (use_preprocess) { + ibuf = input_preprocess(scene, seq, cfra, seqrectx, + seqrecty, ibuf); + } + + seq_stripelem_cache_put( + seq, seqrectx, seqrecty, cfra, SEQ_STRIPELEM_IBUF, ibuf); + + return ibuf; +} + +/* ********************************************************************** + strip stack rendering functions + ********************************************************************** */ + static int seq_must_swap_input_in_blend_mode(Sequence * seq) { int swap_input = FALSE; @@ -2594,28 +2153,22 @@ static int seq_get_early_out_for_blend_mode(Sequence * seq) return early_out; } -static TStripElem* do_build_seq_array_recursively( - Scene *scene, ListBase *seqbasep, int cfra, int chanshown, +static ImBuf* seq_render_strip_stack( + Scene *scene, ListBase *seqbasep, float cfra, int chanshown, int render_size, int seqrectx, int seqrecty) { Sequence* seq_arr[MAXSEQ+1]; int count; int i; - TStripElem* se = 0; + ImBuf* out = 0; count = get_shown_sequences(seqbasep, cfra, chanshown, - (Sequence **)&seq_arr); + (Sequence **)&seq_arr); if (!count) { return 0; } - se = give_tstripelem(seq_arr[count - 1], cfra); - - if (!se) { - return 0; - } - #if 0 /* commentind since this breaks keyframing, since it resets the value on draw */ if(scene->r.cfra != cfra) { // XXX for prefetch and overlay offset!..., very bad!!! @@ -2624,25 +2177,24 @@ static TStripElem* do_build_seq_array_recursively( } #endif - test_and_auto_discard_ibuf(se, seqrectx, seqrecty); + out = seq_stripelem_cache_get( + seq_arr[count - 1], + seqrectx, seqrecty, cfra, SEQ_STRIPELEM_IBUF_COMP); - if (se->ibuf_comp != 0) { - IMB_cache_limiter_insert(se->ibuf_comp); - IMB_cache_limiter_ref(se->ibuf_comp); - IMB_cache_limiter_touch(se->ibuf_comp); - return se; + if (out) { + return out; } - if(count == 1) { - se = do_build_seq_recursively(scene, seq_arr[0], - cfra, render_size, - seqrectx, seqrecty); - if (se->ibuf) { - se->ibuf_comp = se->ibuf; - IMB_refImBuf(se->ibuf_comp); - } - return se; + out = seq_render_strip(scene, seq_arr[0], + cfra, render_size, + seqrectx, seqrecty); + seq_stripelem_cache_put( + seq_arr[0], + seqrectx, seqrecty, cfra, + SEQ_STRIPELEM_IBUF_COMP, out); + + return out; } @@ -2650,29 +2202,17 @@ static TStripElem* do_build_seq_array_recursively( int early_out; Sequence * seq = seq_arr[i]; - se = give_tstripelem(seq, cfra); + out = seq_stripelem_cache_get( + seq, + seqrectx, seqrecty, cfra, SEQ_STRIPELEM_IBUF_COMP); - test_and_auto_discard_ibuf(se, seqrectx, seqrecty); - - if (se->ibuf_comp != 0) { + if (out) { break; } if (seq->blend_mode == SEQ_BLEND_REPLACE) { - do_build_seq_recursively( - scene, seq, cfra, render_size, - seqrectx, seqrecty); - - if (se->ibuf) { - se->ibuf_comp = se->ibuf; - IMB_refImBuf(se->ibuf); - } else { - se->ibuf_comp = IMB_allocImBuf( - (short)seqrectx, (short)seqrecty, - 32, IB_rect, 0); - IMB_cache_limiter_insert(se->ibuf_comp); - IMB_cache_limiter_ref(se->ibuf_comp); - IMB_cache_limiter_touch(se->ibuf_comp); - } + out = seq_render_strip(scene, seq, cfra, + render_size, + seqrectx, seqrecty); break; } @@ -2681,154 +2221,111 @@ static TStripElem* do_build_seq_array_recursively( switch (early_out) { case -1: case 2: - do_build_seq_recursively( - scene, seq, cfra, render_size, - seqrectx, seqrecty); - - if (se->ibuf) { - se->ibuf_comp = se->ibuf; - IMB_refImBuf(se->ibuf_comp); - } else { - se->ibuf_comp = IMB_allocImBuf( - (short)seqrectx, (short)seqrecty, - 32, IB_rect, 0); - IMB_cache_limiter_insert(se->ibuf_comp); - IMB_cache_limiter_ref(se->ibuf_comp); - IMB_cache_limiter_touch(se->ibuf_comp); - } + out = seq_render_strip(scene, seq, cfra, + render_size, + seqrectx, seqrecty); break; case 1: if (i == 0) { - se->ibuf_comp = IMB_allocImBuf( + out = IMB_allocImBuf( (short)seqrectx, (short)seqrecty, 32, IB_rect, 0); - IMB_cache_limiter_insert(se->ibuf_comp); - IMB_cache_limiter_ref(se->ibuf_comp); - IMB_cache_limiter_touch(se->ibuf_comp); } break; case 0: - do_build_seq_recursively( - scene, seq, cfra, render_size, - seqrectx, seqrecty); - - if (!se->ibuf) { - se->ibuf = IMB_allocImBuf( - (short)seqrectx, (short)seqrecty, - 32, IB_rect, 0); - IMB_cache_limiter_insert(se->ibuf); - IMB_cache_limiter_ref(se->ibuf); - IMB_cache_limiter_touch(se->ibuf); - } if (i == 0) { - se->ibuf_comp = se->ibuf; - IMB_refImBuf(se->ibuf_comp); + out = seq_render_strip(scene, seq, cfra, + render_size, + seqrectx, seqrecty); } + break; } - - if (se->ibuf_comp) { + if (out) { break; } } + seq_stripelem_cache_put( + seq_arr[i], seqrectx, seqrecty, cfra, + SEQ_STRIPELEM_IBUF_COMP, out); + + i++; for (; i < count; i++) { Sequence * seq = seq_arr[i]; - struct SeqEffectHandle sh = get_sequence_blend(seq); - TStripElem* se1 = give_tstripelem(seq_arr[i-1], cfra); - TStripElem* se2 = give_tstripelem(seq_arr[i], cfra); - float facf = seq->blend_opacity / 100.0; - int swap_input = seq_must_swap_input_in_blend_mode(seq); - int early_out = seq_get_early_out_for_blend_mode(seq); + if (seq_get_early_out_for_blend_mode(seq) == 0) { + struct SeqEffectHandle sh = get_sequence_blend(seq); + ImBuf * ibuf1 = out; + ImBuf * ibuf2 = seq_render_strip(scene, seq, cfra, + render_size, + seqrectx, seqrecty); - switch (early_out) { - case 0: { - int x= se2->ibuf->x; - int y= se2->ibuf->y; + float facf = seq->blend_opacity / 100.0; + int swap_input + = seq_must_swap_input_in_blend_mode(seq); - if(se1->ibuf_comp == NULL) - continue; + int x= out->x; + int y= out->y; - if (se1->ibuf_comp->rect_float || - se2->ibuf->rect_float) { - se2->ibuf_comp = IMB_allocImBuf( + if (ibuf1->rect_float || ibuf2->rect_float) { + out = IMB_allocImBuf( (short)seqrectx, (short)seqrecty, 32, IB_rectfloat, 0); } else { - se2->ibuf_comp = IMB_allocImBuf( + out = IMB_allocImBuf( (short)seqrectx, (short)seqrecty, 32, IB_rect, 0); } - - if (!se1->ibuf_comp->rect_float && - se2->ibuf_comp->rect_float) { - IMB_float_from_rect_simple(se1->ibuf_comp); + if (!ibuf1->rect_float && out->rect_float) { + IMB_float_from_rect_simple(ibuf1); } - if (!se2->ibuf->rect_float && - se2->ibuf_comp->rect_float) { - IMB_float_from_rect_simple(se2->ibuf); + if (!ibuf2->rect_float && out->rect_float) { + IMB_float_from_rect_simple(ibuf2); } - if (!se1->ibuf_comp->rect && - !se2->ibuf_comp->rect_float) { - IMB_rect_from_float(se1->ibuf_comp); + if (!ibuf1->rect && !out->rect_float) { + IMB_rect_from_float(ibuf1); } - if (!se2->ibuf->rect && - !se2->ibuf_comp->rect_float) { - IMB_rect_from_float(se2->ibuf); + if (!ibuf2->rect && !out->rect_float) { + IMB_rect_from_float(ibuf2); } if (swap_input) { sh.execute(scene, seq, cfra, facf, facf, x, y, render_size, - se2->ibuf, se1->ibuf_comp, 0, - se2->ibuf_comp); + ibuf2, ibuf1, 0, out); } else { sh.execute(scene, seq, cfra, facf, facf, x, y, render_size, - se1->ibuf_comp, se2->ibuf, 0, - se2->ibuf_comp); + ibuf1, ibuf2, 0, out); } - - IMB_cache_limiter_insert(se2->ibuf_comp); - IMB_cache_limiter_ref(se2->ibuf_comp); - IMB_cache_limiter_touch(se2->ibuf_comp); - - IMB_cache_limiter_unref(se1->ibuf_comp); - IMB_cache_limiter_unref(se2->ibuf); - - break; + + IMB_freeImBuf(ibuf1); + IMB_freeImBuf(ibuf2); } - case 1: { - se2->ibuf_comp = se1->ibuf_comp; - if(se2->ibuf_comp) - IMB_refImBuf(se2->ibuf_comp); - break; - } - } - se = se2; + seq_stripelem_cache_put( + seq_arr[i], seqrectx, seqrecty, cfra, + SEQ_STRIPELEM_IBUF_COMP, out); } - return se; + return out; } /* * returned ImBuf is refed! - * you have to unref after usage! + * you have to free after usage! */ -static ImBuf *give_ibuf_seq_impl(Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size) +ImBuf *give_ibuf_seq(Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size) { Editing *ed= seq_give_editing(scene, FALSE); int count; ListBase *seqbasep; - TStripElem *se; - if(ed==NULL) return NULL; @@ -2840,64 +2337,19 @@ static ImBuf *give_ibuf_seq_impl(Scene *scene, int rectx, int recty, int cfra, i seqbasep= ed->seqbasep; } - se = do_build_seq_array_recursively(scene, seqbasep, cfra, chanshown, render_size, rectx, recty); - - if(!se) { - return 0; - } - - check_limiter_refcount_comp("give_ibuf_seq_impl", se); - - return se->ibuf_comp; + return seq_render_strip_stack( + scene, seqbasep, cfra, chanshown, render_size, rectx, recty); } ImBuf *give_ibuf_seqbase(struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size, ListBase *seqbasep) { - TStripElem *se; - - se = do_build_seq_array_recursively(scene, seqbasep, cfra, chanshown, render_size, rectx, recty); - - if(!se) { - return 0; - } - - check_limiter_refcount_comp("give_ibuf_seqbase", se); - - if (se->ibuf_comp) { - IMB_cache_limiter_unref(se->ibuf_comp); - } - - return se->ibuf_comp; + return seq_render_strip_stack(scene, seqbasep, cfra, chanshown, render_size, rectx, recty); } ImBuf *give_ibuf_seq_direct(Scene *scene, int rectx, int recty, int cfra, int render_size, Sequence *seq) { - TStripElem* se; - - se = do_build_seq_recursively(scene, seq, cfra, render_size, rectx, recty); - - if(!se) { - return 0; - } - - check_limiter_refcount("give_ibuf_seq_direct", se); - - if (se->ibuf) { - IMB_cache_limiter_unref(se->ibuf); - } - - return se->ibuf; -} - -ImBuf *give_ibuf_seq(Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size) -{ - ImBuf* i = give_ibuf_seq_impl(scene, rectx, recty, cfra, chanshown, render_size); - - if (i) { - IMB_cache_limiter_unref(i); - } - return i; + return seq_render_strip(scene, seq, cfra, render_size, rectx, recty); } #if 0 @@ -3246,20 +2698,6 @@ ImBuf *give_ibuf_seq_threaded(Scene *scene, int rectx, int recty, int cfra, int /* Functions to free imbuf and anim data on changes */ -static void free_imbuf_strip_elem(TStripElem *se) -{ - if(se->ibuf) { - IMB_freeImBuf(se->ibuf); - } - if(se->ibuf_comp) { - IMB_freeImBuf(se->ibuf_comp); - } - se->ibuf_comp = 0; - se->ibuf= 0; - se->ok= STRIPELEM_OK; - se->se1= se->se2= se->se3= 0; -} - static void free_anim_seq(Sequence *seq) { if(seq->anim) { @@ -3272,8 +2710,6 @@ void free_imbuf_seq(Scene *scene, ListBase * seqbase, int check_mem_usage, int keep_file_handles) { Sequence *seq; - TStripElem *se; - int a; if (check_mem_usage) { /* Let the cache limitor take care of this (schlaile) */ @@ -3299,31 +2735,10 @@ void free_imbuf_seq(Scene *scene, ListBase * seqbase, int check_mem_usage, } } + seq_stripelem_cache_cleanup(); for(seq= seqbase->first; seq; seq= seq->next) { if(seq->strip) { - for(a = 0, se = seq->strip->tstripdata; - a < seq->strip->len && se; a++, se++) { - free_imbuf_strip_elem(se); - } - for(a = 0, se = seq->strip->tstripdata_startstill; - a < seq->strip->startstill && se; a++, se++) { - free_imbuf_strip_elem(se); - } - for(a = 0, se = seq->strip->tstripdata_endstill; - a < seq->strip->endstill && se; a++, se++) { - free_imbuf_strip_elem(se); - } - if(seq->strip->ibuf_startstill) { - IMB_freeImBuf(seq->strip->ibuf_startstill); - seq->strip->ibuf_startstill = 0; - } - - if(seq->strip->ibuf_endstill) { - IMB_freeImBuf(seq->strip->ibuf_endstill); - seq->strip->ibuf_endstill = 0; - } - if(seq->type==SEQ_MOVIE && !keep_file_handles) free_anim_seq(seq); if(seq->type==SEQ_SPEED) { @@ -3345,8 +2760,7 @@ void free_imbuf_seq(Scene *scene, ListBase * seqbase, int check_mem_usage, static int update_changed_seq_recurs(Scene *scene, Sequence *seq, Sequence *changed_seq, int len_change, int ibuf_change) { Sequence *subseq; - int a, free_imbuf = 0; - TStripElem *se; + int free_imbuf = 0; /* recurs downwards to see if this seq depends on the changed seq */ @@ -3372,12 +2786,6 @@ static int update_changed_seq_recurs(Scene *scene, Sequence *seq, Sequence *chan if(free_imbuf) { if(ibuf_change) { - se= seq->strip->tstripdata; - if (se) { - for(a=0; a<seq->len; a++, se++) - free_imbuf_strip_elem(se); - } - if(seq->type == SEQ_MOVIE) free_anim_seq(seq); if(seq->type == SEQ_SPEED) { @@ -3403,39 +2811,6 @@ void update_changed_seq_and_deps(Scene *scene, Sequence *changed_seq, int len_ch update_changed_seq_recurs(scene, seq, changed_seq, len_change, ibuf_change); } -#if 0 // XXX from 2.4x, needs updating -void free_imbuf_seq() -{ - Scene * sce = G.main->scene.first; - while(sce) { - free_imbuf_seq_editing(sce->ed); - sce= sce->id.next; - } -} -#endif - -#if 0 // XXX old animation system -static void free_imbuf_seq_with_ipo(Scene *scene, struct Ipo *ipo) -{ - /* force update of all sequences with this ipo, on ipo changes */ - Editing *ed= seq_give_editing(scene, FALSE); - Sequence *seq; - - if(ed==NULL) return; - - SEQ_BEGIN(ed, seq) { - if(seq->ipo == ipo) { - update_changed_seq_and_deps(scene, seq, 0, 1); - if(seq->type == SEQ_SPEED) { - sequence_effect_speed_rebuild_map(seq, 1); - } - free_proxy_seq(seq); - } - } - SEQ_END -} -#endif - /* seq funcs's for transforming internally notice the difference between start/end and left/right. diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index 0d49f853a82..11881ab50d2 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -696,11 +696,11 @@ void set_special_seq_update(int val) void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq, int cfra, int frame_ofs) { extern void gl_round_box(int mode, float minx, float miny, float maxx, float maxy, float rad); - struct ImBuf *ibuf; + struct ImBuf *ibuf = 0; + struct ImBuf *scope = 0; struct View2D *v2d = &ar->v2d; int rectx, recty; float viewrectx, viewrecty; - int free_ibuf = 0; static int recursive= 0; float render_size = 0.0; float proxy_size = 100.0; @@ -778,28 +778,29 @@ void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq switch(sseq->mainb) { case SEQ_DRAW_IMG_IMBUF: if (sseq->zebra != 0) { - ibuf = make_zebra_view_from_ibuf(ibuf, sseq->zebra); - free_ibuf = 1; + scope = make_zebra_view_from_ibuf(ibuf, sseq->zebra); } break; case SEQ_DRAW_IMG_WAVEFORM: if ((sseq->flag & SEQ_DRAW_COLOR_SEPERATED) != 0) { - ibuf = make_sep_waveform_view_from_ibuf(ibuf); + scope = make_sep_waveform_view_from_ibuf(ibuf); } else { - ibuf = make_waveform_view_from_ibuf(ibuf); + scope = make_waveform_view_from_ibuf(ibuf); } - free_ibuf = 1; break; case SEQ_DRAW_IMG_VECTORSCOPE: - ibuf = make_vectorscope_view_from_ibuf(ibuf); - free_ibuf = 1; + scope = make_vectorscope_view_from_ibuf(ibuf); break; case SEQ_DRAW_IMG_HISTOGRAM: - ibuf = make_histogram_view_from_ibuf(ibuf); - free_ibuf = 1; + scope = make_histogram_view_from_ibuf(ibuf); break; } + if (scope) { + IMB_freeImBuf(ibuf); + ibuf = scope; + } + if(ibuf->rect_float && ibuf->rect==NULL) { IMB_rect_from_float(ibuf); } @@ -889,9 +890,7 @@ void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq // if (sseq->flag & SEQ_DRAW_GPENCIL) // XXX draw_gpencil_2dimage(sa, ibuf); - if (free_ibuf) { - IMB_freeImBuf(ibuf); - } + IMB_freeImBuf(ibuf); /* draw grease-pencil (screen aligned) */ // if (sseq->flag & SEQ_DRAW_GPENCIL) diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index f27698752f1..64932313259 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -2513,6 +2513,7 @@ static void do_render_seq(Render * re) free_imbuf_seq(re->scene, &ed->seqbase, TRUE, TRUE); } } + IMB_freeImBuf(ibuf); } else { /* render result is delivered empty in most cases, nevertheless we handle all cases */ From b3dca80c5bded4edde537bbbb445d69b0a6ae65e Mon Sep 17 00:00:00 2001 From: Peter Schlaile <peter@schlaile.de> Date: Fri, 23 Jul 2010 17:09:33 +0000 Subject: [PATCH 651/674] Sequencer UI bugfix: translate / crop also work on effect output, UI was missing --- release/scripts/ui/space_sequencer.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index b9b9003506b..ba17b13775a 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -486,6 +486,20 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel): col.prop(strip, "use_effect_default_fade", "Default fade") if not strip.use_effect_default_fade: col.prop(strip, "effect_fader", text="Effect fader") + + layout.prop(strip, "use_translation", text="Image Offset:") + if strip.use_translation: + col = layout.column(align=True) + col.prop(strip.transform, "offset_x", text="X") + col.prop(strip.transform, "offset_y", text="Y") + + layout.prop(strip, "use_crop", text="Image Crop:") + if strip.use_crop: + col = layout.column(align=True) + col.prop(strip.crop, "top") + col.prop(strip.crop, "left") + col.prop(strip.crop, "bottom") + col.prop(strip.crop, "right") def draw_panel_transform(self, strip): layout = self.layout From 72689deb631ae33a0e7ac64a707b0e771c633ac6 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel <brechtvanlommel@pandora.be> Date: Fri, 23 Jul 2010 17:26:00 +0000 Subject: [PATCH 652/674] Fix #21077: multiple python headers in an area header not working correct, each needs a unique ui block name. --- source/blender/editors/screen/area.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index fa7064b817d..b5a0ad9c819 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -1427,7 +1427,7 @@ void ED_region_header(const bContext *C, ARegion *ar) /* draw all headers types */ for(ht= ar->type->headertypes.first; ht; ht= ht->next) { - block= uiBeginBlock(C, ar, "header buttons", UI_EMBOSS); + block= uiBeginBlock(C, ar, ht->idname, UI_EMBOSS); layout= uiBlockLayout(block, UI_LAYOUT_HORIZONTAL, UI_LAYOUT_HEADER, xco, yco, HEADERY-6, 1, style); if(ht->draw) { From d5346883dc0e8637815098c6e38cac7b12b5a27a Mon Sep 17 00:00:00 2001 From: Peter Schlaile <peter@schlaile.de> Date: Fri, 23 Jul 2010 17:48:16 +0000 Subject: [PATCH 653/674] Bugfix: [#21479] Insert Keyframe in some Sequence strip properties does nothing This fixes Crop and Transform the same hacky way like Color Balance. Will do a real fix, if I find a clever way. (Those structures must provide a Sequence struct backpointer!!) Cheers, Peter --- .../blender/makesrna/intern/rna_sequencer.c | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index 0484f3e711e..eb0c7cb7487 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -253,6 +253,70 @@ static void rna_Sequence_use_crop_set(PointerRNA *ptr, int value) seq->flag ^= SEQ_USE_CROP; } } + +static int transform_seq_cmp_cb(Sequence *seq, void *arg_pt) +{ + struct { Sequence *seq; void *transform; } *data= arg_pt; + + if(seq->strip && seq->strip->transform == data->transform) { + data->seq= seq; + return -1; /* done so bail out */ + } + return 1; +} + +static char *rna_SequenceTransform_path(PointerRNA *ptr) +{ + Scene *scene= ptr->id.data; + Editing *ed= seq_give_editing(scene, FALSE); + Sequence *seq; + + struct { Sequence *seq; void *transform; } data; + data.seq= NULL; + data.transform= ptr->data; + + /* irritating we need to search for our sequence! */ + seqbase_recursive_apply(&ed->seqbase, transform_seq_cmp_cb, &data); + seq= data.seq; + + if (seq && seq->name+2) + return BLI_sprintfN("sequence_editor.sequences_all[\"%s\"].transform", seq->name+2); + else + return BLI_strdup(""); +} + +static int crop_seq_cmp_cb(Sequence *seq, void *arg_pt) +{ + struct { Sequence *seq; void *crop; } *data= arg_pt; + + if(seq->strip && seq->strip->crop == data->crop) { + data->seq= seq; + return -1; /* done so bail out */ + } + return 1; +} + +static char *rna_SequenceCrop_path(PointerRNA *ptr) +{ + Scene *scene= ptr->id.data; + Editing *ed= seq_give_editing(scene, FALSE); + Sequence *seq; + + struct { Sequence *seq; void *crop; } data; + data.seq= NULL; + data.crop= ptr->data; + + /* irritating we need to search for our sequence! */ + seqbase_recursive_apply(&ed->seqbase, crop_seq_cmp_cb, &data); + seq= data.seq; + + if (seq && seq->name+2) + return BLI_sprintfN("sequence_editor.sequences_all[\"%s\"].crop", seq->name+2); + else + return BLI_strdup(""); +} + + /* name functions that ignore the first two characters */ static void rna_Sequence_name_get(PointerRNA *ptr, char *value) { @@ -625,6 +689,8 @@ static void rna_def_strip_crop(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Right", ""); RNA_def_property_ui_range(prop, 0, 4096, 1, 0); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + RNA_def_struct_path_func(srna, "rna_SequenceCrop_path"); } static void rna_def_strip_transform(BlenderRNA *brna) @@ -647,6 +713,9 @@ static void rna_def_strip_transform(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Offset Y", ""); RNA_def_property_ui_range(prop, -4096, 4096, 1, 0); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + + RNA_def_struct_path_func(srna, "rna_SequenceTransform_path"); + } static void rna_def_strip_proxy(BlenderRNA *brna) From 4e62175989cd438078a36ee82e903686c39e02db Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Fri, 23 Jul 2010 17:51:39 +0000 Subject: [PATCH 654/674] bugfix [#22974] OBJ import arrives without texture --- release/scripts/io/import_scene_obj.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/release/scripts/io/import_scene_obj.py b/release/scripts/io/import_scene_obj.py index 9bbb9124b60..5b29a5ded90 100644 --- a/release/scripts/io/import_scene_obj.py +++ b/release/scripts/io/import_scene_obj.py @@ -420,8 +420,7 @@ def create_materials(filepath, material_libs, unique_materials, unique_material_ # Add an MTL with the same name as the obj if no MTLs are spesified. temp_mtl = os.path.splitext((os.path.basename(filepath)))[0] + '.mtl' - if os.path.exists(DIR + temp_mtl) and temp_mtl not in material_libs: -# if sys.exists(DIR + temp_mtl) and temp_mtl not in material_libs: + if os.path.exists(os.path.join(DIR, temp_mtl)) and temp_mtl not in material_libs: material_libs.append( temp_mtl ) del temp_mtl @@ -435,11 +434,9 @@ def create_materials(filepath, material_libs, unique_materials, unique_material_ unique_material_images[None]= None, False for libname in material_libs: - mtlpath= DIR + libname + mtlpath= os.path.join(DIR, libname) if not os.path.exists(mtlpath): -# if not sys.exists(mtlpath): - #print '\tError Missing MTL: "%s"' % mtlpath - pass + print ("\tError Missing MTL: '%s'" % mtlpath) else: #print '\t\tloading mtl: "%s"' % mtlpath context_material= None From 318c975dcbe428cf61f41056e64c5083ffdb330e Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Fri, 23 Jul 2010 18:30:14 +0000 Subject: [PATCH 655/674] bugfix [#22954] Crash going edit mode on an object linked in another scene (Kino Bug Reporting Sprint :) --- source/blender/editors/object/object_edit.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 78f8e0e11d3..0d3ebc7f669 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -435,7 +435,12 @@ void ED_object_enter_editmode(bContext *C, int flag) if(flag & EM_WAITCURSOR) waitcursor(1); ob->restore_mode = ob->mode; - ED_object_toggle_modes(C, ob->mode); + + /* note, when switching scenes the object can have editmode data but + * not be scene->obedit: bug 22954, this avoids calling self eternally */ + if((ob->restore_mode & OB_MODE_EDIT)==0) + ED_object_toggle_modes(C, ob->mode); + ob->mode= OB_MODE_EDIT; if(ob->type==OB_MESH) { From 7275ba728df01a965706d1119b6bed7210820fa3 Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Fri, 23 Jul 2010 18:42:15 +0000 Subject: [PATCH 656/674] fix for another case where object editmode data could be lost when switching scenes. --- source/blender/blenkernel/intern/scene.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index fe52375617b..9d736bd92eb 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -512,6 +512,10 @@ void set_scene_bg(Scene *scene) /* check for cyclic sets, for reading old files but also for definite security (py?) */ scene_check_setscene(scene); + /* can happen when switching modes in other scenes */ + if(scene->obedit && !(scene->obedit->mode & OB_MODE_EDIT)) + scene->obedit= NULL; + /* deselect objects (for dataselect) */ for(ob= G.main->object.first; ob; ob= ob->id.next) ob->flag &= ~(SELECT|OB_FROMGROUP); From c36fcf51167a881bc4aaa21c82d77e1965fc884a Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" <gsr.b3d@infernal-iceberg.com> Date: Fri, 23 Jul 2010 19:43:13 +0000 Subject: [PATCH 657/674] SVN maintenance. --- source/blender/blenkernel/intern/seqcache.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/seqcache.c b/source/blender/blenkernel/intern/seqcache.c index c2b689195f6..9c72b7af0be 100644 --- a/source/blender/blenkernel/intern/seqcache.c +++ b/source/blender/blenkernel/intern/seqcache.c @@ -1,5 +1,5 @@ /** -* $Id: seqcache.c 29923 2010-07-04 10:51:10Z schlaile $ +* $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * From 9c3376a030e3f2dfaab8a63bf45187aed9c33697 Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Fri, 23 Jul 2010 19:47:25 +0000 Subject: [PATCH 658/674] bugfix [#22716] Game engine corrupts rig ID-Properties. --- source/gameengine/Converter/BL_ArmatureObject.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/gameengine/Converter/BL_ArmatureObject.cpp b/source/gameengine/Converter/BL_ArmatureObject.cpp index 217011517eb..7dd2543e89d 100644 --- a/source/gameengine/Converter/BL_ArmatureObject.cpp +++ b/source/gameengine/Converter/BL_ArmatureObject.cpp @@ -114,6 +114,11 @@ void game_copy_pose(bPose **dst, bPose *src, int copy_constraint) pchan->constraints.first = NULL; pchan->constraints.last = NULL; } + + // fails to link, props are not used in the BGE yet. + /* if(pchan->prop) + pchan->prop= IDP_CopyProperty(pchan->prop); */ + pchan->prop= NULL; } BLI_ghash_free(ghash, NULL, NULL); From ba7655221317120de0b95a683df72b2060ee364b Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Fri, 23 Jul 2010 20:57:52 +0000 Subject: [PATCH 659/674] bugfix [#19223] FBX export doesn't do cameras correctly --- release/scripts/io/export_fbx.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index bb846b0335a..b68d6fafafa 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -947,10 +947,7 @@ def write(filename, batch_objects = None, \ render = scene.render width = render.resolution_x height = render.resolution_y -# render = scene.render -# width = render.sizeX -# height = render.sizeY - aspect = float(width)/height + aspect = width / height data = my_cam.blenObject.data @@ -962,11 +959,9 @@ def write(filename, batch_objects = None, \ file.write('\n\t\t\tProperty: "FieldOfView", "FieldOfView", "A+",%.6f' % math.degrees(data.angle)) file.write('\n\t\t\tProperty: "FieldOfViewX", "FieldOfView", "A+",1') file.write('\n\t\t\tProperty: "FieldOfViewY", "FieldOfView", "A+",1') - file.write('\n\t\t\tProperty: "FocalLength", "Real", "A+",14.0323972702026') + # file.write('\n\t\t\tProperty: "FocalLength", "Real", "A+",14.0323972702026') file.write('\n\t\t\tProperty: "OpticalCenterX", "Real", "A+",%.6f' % data.shift_x) # not sure if this is in the correct units? -# file.write('\n\t\t\tProperty: "OpticalCenterX", "Real", "A+",%.6f' % data.shiftX) # not sure if this is in the correct units? file.write('\n\t\t\tProperty: "OpticalCenterY", "Real", "A+",%.6f' % data.shift_y) # ditto -# file.write('\n\t\t\tProperty: "OpticalCenterY", "Real", "A+",%.6f' % data.shiftY) # ditto file.write('\n\t\t\tProperty: "BackgroundColor", "Color", "A+",0,0,0') file.write('\n\t\t\tProperty: "TurnTable", "Real", "A+",0') file.write('\n\t\t\tProperty: "DisplayTurnTableIcon", "bool", "",1') @@ -975,7 +970,7 @@ def write(filename, batch_objects = None, \ file.write('\n\t\t\tProperty: "UseRealTimeMotionBlur", "bool", "",1') file.write('\n\t\t\tProperty: "ResolutionMode", "enum", "",0') file.write('\n\t\t\tProperty: "ApertureMode", "enum", "",2') - file.write('\n\t\t\tProperty: "GateFit", "enum", "",0') + file.write('\n\t\t\tProperty: "GateFit", "enum", "",2') file.write('\n\t\t\tProperty: "CameraFormat", "enum", "",0') file.write('\n\t\t\tProperty: "AspectW", "double", "",%i' % width) file.write('\n\t\t\tProperty: "AspectH", "double", "",%i' % height) From bd90c33bbf7cb39e0b9f479d44a31d0dfa942ed3 Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Fri, 23 Jul 2010 23:48:21 +0000 Subject: [PATCH 660/674] bugfix [#22941] set object center/origin on a linked duplicate causes linked copied to become unselectable in viewport --- .../blender/editors/object/object_transform.c | 46 +++++++++++-------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index 66a9dab572a..cd66b9ab2ba 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -205,7 +205,7 @@ static int object_rotation_clear_exec(bContext *C, wmOperator *op) eulO_to_axis_angle( ob->rotAxis, &ob->rotAngle,eul, EULER_ORDER_DEFAULT); } else { - VECCOPY(ob->rot, eul); + copy_v3_v3(ob->rot, eul); } } } // Duplicated in source/blender/editors/armature/editarmature.c @@ -340,10 +340,7 @@ static int object_origin_clear_exec(bContext *C, wmOperator *op) v3= ob->parentinv[3]; copy_m3_m4(mat, ob->parentinv); - VECCOPY(v3, v1); - v3[0]= -v3[0]; - v3[1]= -v3[1]; - v3[2]= -v3[2]; + negate_v3_v3(v3, v1); mul_m3_v3(mat, v3); } ob->recalc |= OB_RECALC_OB; @@ -712,6 +709,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) ScrArea *sa= CTX_wm_area(C); View3D *v3d= sa->spacedata.first; Object *obedit= CTX_data_edit_object(C); + Object *tob; Mesh *me, *tme; Curve *cu; /* BezTriple *bezt; @@ -779,9 +777,10 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) ob->flag &= ~OB_DONE; } CTX_DATA_END; - - for (me= G.main->mesh.first; me; me= me->id.next) { - me->flag &= ~ME_ISDONE; + + for (tob= G.main->object.first; tob; tob= tob->id.next) { + if(tob->data) + ((ID *)tob->data)->flag &= ~LIB_DOIT; } CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { @@ -823,13 +822,14 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) } } } - - me->flag |= ME_ISDONE; + + tot_change++; + me->id.flag |= LIB_DOIT; if(centermode) { copy_m3_m4(omat, ob->obmat); - VECCOPY(centn, cent); + copy_v3_v3(centn, cent); mul_m3_v3(omat, centn); ob->loc[0]+= centn[0]; ob->loc[1]+= centn[1]; @@ -849,7 +849,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) ob_other->recalc= OB_RECALC_OB|OB_RECALC_DATA; copy_m3_m4(omat, ob_other->obmat); - VECCOPY(centn, cent); + copy_v3_v3(centn, cent); mul_m3_v3(omat, centn); ob_other->loc[0]+= centn[0]; ob_other->loc[1]+= centn[1]; @@ -858,7 +858,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) where_is_object(scene, ob_other); ignore_parent_tx(bmain, scene, ob_other); - if(tme && (tme->flag & ME_ISDONE)==0) { + if(!(tme->id.flag & LIB_DOIT)) { mvert= tme->mvert; for(a=0; a<tme->totvert; a++, mvert++) { sub_v3_v3(mvert->co, cent); @@ -874,15 +874,15 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) } } } - - tme->flag |= ME_ISDONE; + + tot_change++; + tme->id.flag |= LIB_DOIT; } } } } CTX_DATA_END; } - tot_change++; } } else if (ELEM(ob->type, OB_CURVE, OB_SURF)) { @@ -903,7 +903,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) tot_lib_error++; } else { if(centermode==2) { - VECCOPY(cent, give_cursor(scene, v3d)); + copy_v3_v3(cent, give_cursor(scene, v3d)); invert_m4_m4(ob->imat, ob->obmat); mul_m4_v3(ob->imat, cent); @@ -956,6 +956,8 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) } tot_change++; + cu->id.flag |= LIB_DOIT; + if(obedit) { if (centermode==0) { DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); @@ -982,6 +984,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) cu->yof /= cu->fsize; tot_change++; + cu->id.flag |= LIB_DOIT; } } else if(ob->type==OB_ARMATURE) { @@ -998,7 +1001,9 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) * Bone + object locations are handled there. */ docenter_armature(scene, v3d, ob, centermode); + tot_change++; + cu->id.flag |= LIB_DOIT; where_is_object(scene, ob); ignore_parent_tx(bmain, scene, ob); @@ -1007,10 +1012,15 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) break; } } - ob->recalc= OB_RECALC_OB|OB_RECALC_DATA; } } CTX_DATA_END; + + for (tob= G.main->object.first; tob; tob= tob->id.next) { + if(tob->data && (((ID *)tob->data)->flag & LIB_DOIT)) { + tob->recalc= OB_RECALC_OB|OB_RECALC_DATA; + } + } if (tot_change) { DAG_ids_flush_update(0); From a732678217d5d7abf3d975f5eaad9de8ef3e3589 Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Sat, 24 Jul 2010 00:24:58 +0000 Subject: [PATCH 661/674] [#22873] Snap to increment isn't working that expected when Units set to Metric or Imperial - minor - pick the closest unit that matches the existing step size. - set the distance subtype on some camera flags. - commented mesh flag 'ME_ISDONE' its nolonger used. --- source/blender/editors/interface/interface.c | 6 +++--- source/blender/makesdna/DNA_mesh_types.h | 2 +- source/blender/makesrna/intern/rna_camera.c | 8 ++++---- source/blender/makesrna/intern/rna_modifier.c | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index 3f0cd3bee78..7b67a458ae2 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -1464,13 +1464,13 @@ static void ui_get_but_string_unit(uiBut *but, char *str, int len_max, double va bUnit_AsString(str, len_max, ui_get_but_scale_unit(but, value), precision, scene->unit.system, unit_type, do_split, pad); } -static float ui_get_but_step_unit(uiBut *but, double value, float step_default) +static float ui_get_but_step_unit(uiBut *but, float step_default) { Scene *scene= CTX_data_scene((bContext *)but->block->evil_C); int unit_type= RNA_SUBTYPE_UNIT_VALUE(RNA_property_subtype(but->rnaprop)); float step; - step = bUnit_ClosestScalar(ui_get_but_scale_unit(but, value), scene->unit.system, unit_type); + step = bUnit_ClosestScalar(ui_get_but_scale_unit(but, step_default), scene->unit.system, unit_type); if(step > 0.0) { /* -1 is an error value */ return (step/ui_get_but_scale_unit(but, 1.0))*100; @@ -2563,7 +2563,7 @@ uiBut *ui_def_but_rna(uiBlock *block, int type, int retval, char *str, short x1, /* If this button uses units, calculate the step from this */ if(ui_is_but_unit(but)) - but->a1= ui_get_but_step_unit(but, ui_get_but_val(but), but->a1); + but->a1= ui_get_but_step_unit(but, but->a1); if(freestr) MEM_freeN(str); diff --git a/source/blender/makesdna/DNA_mesh_types.h b/source/blender/makesdna/DNA_mesh_types.h index 9f8d07b987f..68b05dd6595 100644 --- a/source/blender/makesdna/DNA_mesh_types.h +++ b/source/blender/makesdna/DNA_mesh_types.h @@ -128,7 +128,7 @@ typedef struct TFace { /* me->flag */ -#define ME_ISDONE 1 +/* #define ME_ISDONE 1 */ #define ME_NOPUNOFLIP 2 #define ME_TWOSIDED 4 #define ME_UVEFFECT 8 diff --git a/source/blender/makesrna/intern/rna_camera.c b/source/blender/makesrna/intern/rna_camera.c index ef9a0cf040e..3b32030f752 100644 --- a/source/blender/makesrna/intern/rna_camera.c +++ b/source/blender/makesrna/intern/rna_camera.c @@ -84,13 +84,13 @@ void RNA_def_camera(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Passepartout Alpha", "Opacity (alpha) of the darkened overlay in Camera view"); RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL); - prop= RNA_def_property(srna, "clip_start", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "clip_start", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "clipsta"); RNA_def_property_range(prop, 0.0f, FLT_MAX); RNA_def_property_ui_text(prop, "Clip Start", "Camera near clipping distance"); RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL); - prop= RNA_def_property(srna, "clip_end", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "clip_end", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "clipend"); RNA_def_property_range(prop, 1.0f, FLT_MAX); RNA_def_property_ui_text(prop, "Clip End", "Camera far clipping distance"); @@ -114,7 +114,7 @@ void RNA_def_camera(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Orthographic Scale", "Orthographic Camera scale (similar to zoom)"); RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL); - prop= RNA_def_property(srna, "draw_size", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "draw_size", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "drawsize"); RNA_def_property_range(prop, 0.1f, 1000.0f); RNA_def_property_ui_range(prop, 0.01, 100, 1, 1); @@ -135,7 +135,7 @@ void RNA_def_camera(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Shift Y", "Perspective Camera vertical shift"); RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL); - prop= RNA_def_property(srna, "dof_distance", PROP_FLOAT, PROP_NONE); + prop= RNA_def_property(srna, "dof_distance", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "YF_dofdist"); RNA_def_property_range(prop, 0.0f, 5000.0f); RNA_def_property_ui_text(prop, "DOF Distance", "Distance to the focus point for depth of field"); diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index 25284932689..dfd9c2f434c 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -2061,7 +2061,7 @@ static void rna_def_modifier_solidify(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Thickness", "Thickness of the shell"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); - prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_DISTANCE); + prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_FACTOR); RNA_def_property_float_sdna(prop, NULL, "offset_fac"); RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); RNA_def_property_ui_range(prop, -1, 1, 0.1, 4); From f148aa696ef069fb58c4b817ee980d36449a0e85 Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Sat, 24 Jul 2010 01:32:03 +0000 Subject: [PATCH 662/674] bugfix [#22769] Undo Looses Active Camera The problem was that the v3d could have a different camera to the scene even when locked. VIEW3D_OT_viewnumpad was ignoring v3d->scenelock option and allowing an invalid state. --- .../editors/space_view3d/view3d_edit.c | 40 +++++++++++++------ .../editors/space_view3d/view3d_intern.h | 2 +- .../blender/editors/space_view3d/view3d_ops.c | 2 +- .../editors/space_view3d/view3d_view.c | 2 +- 4 files changed, 31 insertions(+), 15 deletions(-) diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index b07704cbf69..bce4a7e8f58 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -1924,11 +1924,12 @@ static int viewnumpad_exec(bContext *C, wmOperator *op) /* lastview - */ if(rv3d->persp != RV3D_CAMOB) { + Object *ob= OBACT; if (!rv3d->smooth_timer) { /* store settings of current view before allowing overwriting with camera view * only if we're not currently in a view transition */ - QUATCOPY(rv3d->lviewquat, rv3d->viewquat); + copy_qt_qt(rv3d->lviewquat, rv3d->viewquat); rv3d->lview= rv3d->view; rv3d->lpersp= rv3d->persp; } @@ -1941,20 +1942,35 @@ static int viewnumpad_exec(bContext *C, wmOperator *op) handle_view3d_lock(); } #endif - - if(BASACT) { - /* check both G.vd as G.scene cameras */ - if((v3d->camera==NULL || scene->camera==NULL) && OBACT->type==OB_CAMERA) { - v3d->camera= OBACT; - /*handle_view3d_lock();*/ + + /* first get the default camera for the view lock type */ + if(v3d->scenelock) { + /* sets the camera view if available */ + v3d->camera= scene->camera; + } + else { + /* use scene camera if one is not set (even though we're unlocked) */ + if(v3d->camera==NULL) { + v3d->camera= scene->camera; } } - if(v3d->camera==NULL) { - v3d->camera= scene_find_camera(scene); - if (v3d->camera == NULL) - return OPERATOR_CANCELLED; - } + /* if the camera isnt found, check a number of options */ + if(v3d->camera==NULL && ob && ob->type==OB_CAMERA) + v3d->camera= ob; + + if(v3d->camera==NULL) + v3d->camera= scene_find_camera(scene); + + /* couldnt find any useful camera, bail out */ + if(v3d->camera==NULL) + return OPERATOR_CANCELLED; + + /* important these dont get out of sync for locked scenes */ + if(v3d->scenelock) + scene->camera= v3d->camera; + + /* finally do snazzy view zooming */ rv3d->persp= RV3D_CAMOB; smooth_view(C, NULL, v3d->camera, rv3d->ofs, rv3d->viewquat, &rv3d->dist, &v3d->lens); diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h index 3e8bc71c351..846300ff9a6 100644 --- a/source/blender/editors/space_view3d/view3d_intern.h +++ b/source/blender/editors/space_view3d/view3d_intern.h @@ -144,7 +144,7 @@ void view3d_settings_from_ob(struct Object *ob, float *ofs, float *quat, float * void VIEW3D_OT_smoothview(struct wmOperatorType *ot); void VIEW3D_OT_setcameratoview(struct wmOperatorType *ot); -void VIEW3D_OT_setobjectascamera(struct wmOperatorType *ot); +void VIEW3D_OT_object_as_camera(struct wmOperatorType *ot); void VIEW3D_OT_localview(struct wmOperatorType *ot); void VIEW3D_OT_game_start(struct wmOperatorType *ot); void VIEW3D_OT_fly(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c index faeab482f72..22fab5887ee 100644 --- a/source/blender/editors/space_view3d/view3d_ops.c +++ b/source/blender/editors/space_view3d/view3d_ops.c @@ -83,7 +83,7 @@ void view3d_operatortypes(void) WM_operatortype_append(VIEW3D_OT_cursor3d); WM_operatortype_append(VIEW3D_OT_select_lasso); WM_operatortype_append(VIEW3D_OT_setcameratoview); - WM_operatortype_append(VIEW3D_OT_setobjectascamera); + WM_operatortype_append(VIEW3D_OT_object_as_camera); WM_operatortype_append(VIEW3D_OT_localview); WM_operatortype_append(VIEW3D_OT_game_start); WM_operatortype_append(VIEW3D_OT_fly); diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 29d9986c093..d8982fb68ca 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -458,7 +458,7 @@ static int view3d_setobjectascamera_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void VIEW3D_OT_setobjectascamera(wmOperatorType *ot) +void VIEW3D_OT_object_as_camera(wmOperatorType *ot) { /* identifiers */ From 1fdb880cf4d746d8e4a1b6372c5b7e2c13025ff2 Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Sat, 24 Jul 2010 02:27:43 +0000 Subject: [PATCH 663/674] bugfix [#22990] Crash rendering joined curves - dont render invalid material indicies (like mesh faces) - clamp the material index values when joining, TODO: merge material lists properly. --- source/blender/editors/curve/editcurve.c | 1 + source/blender/render/intern/source/convertblender.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 659ee7b9cea..c33565cee4b 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -4843,6 +4843,7 @@ int join_curve_exec(bContext *C, wmOperator *op) nu= cu->nurb.first; while(nu) { newnu= duplicateNurb(nu); + CLAMP(newnu->mat_nr, 0, ob->totcol-1); /* TODO, merge material lists */ BLI_addtail(&tempbase, newnu); if( (bezt= newnu->bezt) ) { diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index b2f526f0297..c5d69e69586 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -2848,7 +2848,10 @@ static void init_render_curve(Render *re, ObjectRen *obr, int timeoffset) } while(dl) { - if(dl->type==DL_INDEX3) { + if(dl->col > ob->totcol) { + /* pass */ + } + else if(dl->type==DL_INDEX3) { int *index; startvert= obr->totvert; From 780f4c1c781fb8059c4382bf7b482d975829f23b Mon Sep 17 00:00:00 2001 From: Matt Ebb <matt@mke3.net> Date: Sat, 24 Jul 2010 02:49:58 +0000 Subject: [PATCH 664/674] Fixed an annoying problem where sometimes tooltips would get left hanging on screen, making you have to mouse over them to clear them. I hope this was the only issue causing this, if anyone sees hanging tooltips after this commit, please report it! --- source/blender/editors/interface/interface_handlers.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 54deac5d060..4bf4dd23bd6 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -5192,7 +5192,8 @@ static void ui_handle_button_return_submenu(bContext *C, wmEvent *event, uiBut * button_activate_state(C, but, BUTTON_STATE_HIGHLIGHT); } else { - if(event->type != MOUSEMOVE) { + if (ISKEYBOARD(event->type)) { + /* keyboard menu hierarchy navigation, going back to previous level */ but->active->used_mouse= 0; button_activate_state(C, but, BUTTON_STATE_HIGHLIGHT); } From f24bcc689cb1d97b3ddbce00f99231e9779f2b98 Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Sat, 24 Jul 2010 02:51:51 +0000 Subject: [PATCH 665/674] bugfix [#22988] Duplicating Lights by Frame Causes Hangup --- source/blender/blenkernel/intern/pointcache.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c index 5295a496d2b..ced5d116ad0 100644 --- a/source/blender/blenkernel/intern/pointcache.c +++ b/source/blender/blenkernel/intern/pointcache.c @@ -1041,11 +1041,13 @@ void BKE_ptcache_ids_from_object(ListBase *lb, Object *ob, Scene *scene, int dup if((lb_dupli_ob=object_duplilist(scene, ob))) { DupliObject *dob; for(dob= lb_dupli_ob->first; dob; dob= dob->next) { - ListBase lb_dupli_pid; - BKE_ptcache_ids_from_object(&lb_dupli_pid, dob->ob, scene, duplis); - addlisttolist(lb, &lb_dupli_pid); - if(lb_dupli_pid.first) - printf("Adding Dupli\n"); + if(dob->ob != ob) { /* avoids recursive loops with dupliframes: bug 22988 */ + ListBase lb_dupli_pid; + BKE_ptcache_ids_from_object(&lb_dupli_pid, dob->ob, scene, duplis); + addlisttolist(lb, &lb_dupli_pid); + if(lb_dupli_pid.first) + printf("Adding Dupli\n"); + } } free_object_duplilist(lb_dupli_ob); /* does restore */ From 068b0c3f6f99f2717122e1e9e776330459cfc303 Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Sat, 24 Jul 2010 05:53:30 +0000 Subject: [PATCH 666/674] Fix [#22965] Icons for new brushes won't get sticky Somehow the code I submitted to fix this problem was commented out. I think I just submitted the wrong code. --- source/blender/blenkernel/intern/brush.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index 8670665a1ac..1536c394726 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -132,7 +132,7 @@ Brush *copy_brush(Brush *brush) if (brush->mtex.tex) id_us_plus((ID*)brush->mtex.tex); - //brushn->preview= NULL; + brushn->preview= NULL; if (brush->icon_imbuf) brushn->icon_imbuf= IMB_dupImBuf(brush->icon_imbuf); From 0246caf51337ad65b27d0211de036b0bda153397 Mon Sep 17 00:00:00 2001 From: Jason Wilkins <Jason.A.Wilkins@gmail.com> Date: Sat, 24 Jul 2010 07:18:31 +0000 Subject: [PATCH 667/674] * Fix: the radius of the brush is bigger than the texture square in the UV image editor so it is always drawing a square at stronger intensity. --- source/blender/blenkernel/intern/brush.c | 32 ++++++++++++------------ 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index 1536c394726..23a221cadf4 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -132,8 +132,6 @@ Brush *copy_brush(Brush *brush) if (brush->mtex.tex) id_us_plus((ID*)brush->mtex.tex); - brushn->preview= NULL; - if (brush->icon_imbuf) brushn->icon_imbuf= IMB_dupImBuf(brush->icon_imbuf); @@ -483,7 +481,7 @@ void brush_imbuf_new(Brush *brush, short flt, short texfall, int bufsize, ImBuf typedef struct BrushPainterCache { short enabled; - int size; /* size override, if 0 uses brush_size(brush) */ + int size; /* size override, if 0 uses 2*brush_size(brush) */ short flt; /* need float imbuf? */ short texonly; /* no alpha, color or fallof, only texture in imbuf */ @@ -720,10 +718,10 @@ static void brush_painter_refresh_cache(BrushPainter *painter, float *pos) MTex *mtex= &brush->mtex; int size; short flt; - const int radius= brush_size(brush); + const int diameter= 2*brush_size(brush); const float alpha= brush_alpha(brush); - if (radius != cache->lastsize || + if (diameter != cache->lastsize || alpha != cache->lastalpha || brush->jitter != cache->lastjitter) { @@ -737,7 +735,7 @@ static void brush_painter_refresh_cache(BrushPainter *painter, float *pos) } flt= cache->flt; - size= (cache->size)? cache->size: radius; + size= (cache->size)? cache->size: diameter; if (!(mtex && mtex->tex) || (mtex->tex->type==0)) { brush_imbuf_new(brush, flt, 0, size, &cache->ibuf); @@ -749,7 +747,7 @@ static void brush_painter_refresh_cache(BrushPainter *painter, float *pos) else brush_imbuf_new(brush, flt, 2, size, &cache->ibuf); - cache->lastsize= radius; + cache->lastsize= diameter; cache->lastalpha= alpha; cache->lastjitter= brush->jitter; } @@ -784,6 +782,7 @@ void brush_jitter_pos(Brush *brush, float *pos, float *jitterpos) if(brush->jitter){ float rand_pos[2]; const int radius= brush_size(brush); + const int diameter= 2*radius; // find random position within a circle of diameter 1 do { @@ -791,8 +790,8 @@ void brush_jitter_pos(Brush *brush, float *pos, float *jitterpos) rand_pos[1] = BLI_frand()-0.5f; } while (len_v2(rand_pos) > 0.5f); - jitterpos[0] = pos[0] + 2*rand_pos[0]*radius*brush->jitter; - jitterpos[1] = pos[1] + 2*rand_pos[1]*radius*brush->jitter; + jitterpos[0] = pos[0] + 2*rand_pos[0]*diameter*brush->jitter; + jitterpos[1] = pos[1] + 2*rand_pos[1]*diameter*brush->jitter; } else { VECCOPY2D(jitterpos, pos); @@ -831,7 +830,7 @@ int brush_painter_paint(BrushPainter *painter, BrushFunc func, float *pos, doubl double starttime, curtime= time; /* compute brush spacing adapted to brush size */ - spacing= brush->rate; //brush_size(brush)*brush->spacing*0.01f; + spacing= brush->rate; //radius*brush->spacing*0.01f; /* setup starting time, direction vector and accumulated time */ starttime= painter->accumtime; @@ -863,6 +862,7 @@ int brush_painter_paint(BrushPainter *painter, BrushFunc func, float *pos, doubl float startdistance, spacing, step, paintpos[2], dmousepos[2], finalpos[2]; float t, len, press; const int radius= brush_size(brush); + const int diameter= 2*radius; /* compute brush spacing adapted to brush radius, spacing may depend on pressure, so update it */ @@ -1239,7 +1239,7 @@ void brush_set_size(Brush *brush, int size) else brush->size= size; - //WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); + WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); } int brush_size(Brush *brush) @@ -1259,7 +1259,7 @@ void brush_set_use_locked_size(Brush *brush, int value) brush->flag &= ~BRUSH_LOCK_SIZE; } - //WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); + WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); } int brush_use_locked_size(Brush *brush) @@ -1279,7 +1279,7 @@ void brush_set_use_size_pressure(Brush *brush, int value) brush->flag &= ~BRUSH_SIZE_PRESSURE; } - //WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); + WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); } int brush_use_size_pressure(Brush *brush) @@ -1299,7 +1299,7 @@ void brush_set_use_alpha_pressure(Brush *brush, int value) brush->flag &= ~BRUSH_ALPHA_PRESSURE; } - //WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); + WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); } int brush_use_alpha_pressure(Brush *brush) @@ -1314,7 +1314,7 @@ void brush_set_unprojected_radius(Brush *brush, float unprojected_radius) else brush->unprojected_radius= unprojected_radius; - //WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); + WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); } float brush_unprojected_radius(Brush *brush) @@ -1329,7 +1329,7 @@ void brush_set_alpha(Brush *brush, float alpha) else brush->alpha= alpha; - //WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); + WM_main_add_notifier(NC_BRUSH|NA_EDITED, brush); } float brush_alpha(Brush *brush) From 1e816635b0c42ed0912807c77eb8e5685e5c7995 Mon Sep 17 00:00:00 2001 From: Peter Schlaile <peter@schlaile.de> Date: Sat, 24 Jul 2010 08:47:14 +0000 Subject: [PATCH 668/674] Bugfix: Small change to hash algorithm hinted by James Ruan on mailing list to make hash distribution a little bit better. --- source/blender/blenkernel/intern/seqcache.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/seqcache.c b/source/blender/blenkernel/intern/seqcache.c index 9c72b7af0be..4d58ec8212a 100644 --- a/source/blender/blenkernel/intern/seqcache.c +++ b/source/blender/blenkernel/intern/seqcache.c @@ -68,7 +68,7 @@ static unsigned int HashHash(void *key_) rval ^= *(unsigned int*) &key->cfra; rval += key->type; - rval ^= (unsigned int) key->seq; + rval ^= ((unsigned int) key->seq) << 6; return rval; } From eabbbcdff9c26f5d8e757e7103e63d004d606410 Mon Sep 17 00:00:00 2001 From: Mitchell Stokes <mogurijin@gmail.com> Date: Sat, 24 Jul 2010 09:26:05 +0000 Subject: [PATCH 669/674] Fixing a crash when using either BL_ArmatureBone.parent and BL_ArmatureBone.children. --- source/gameengine/Converter/BL_ArmatureChannel.cpp | 6 +++--- source/gameengine/Expressions/PyObjectPlus.cpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/gameengine/Converter/BL_ArmatureChannel.cpp b/source/gameengine/Converter/BL_ArmatureChannel.cpp index 4bf2117c5c5..2ce29a76b56 100644 --- a/source/gameengine/Converter/BL_ArmatureChannel.cpp +++ b/source/gameengine/Converter/BL_ArmatureChannel.cpp @@ -432,13 +432,13 @@ PyAttributeDef BL_ArmatureBone::AttributesPtr[] = { KX_PYATTRIBUTE_FLOAT_MATRIX_RO("arm_mat",Bone,arm_mat,4), KX_PYATTRIBUTE_FLOAT_MATRIX_RO("bone_mat",Bone,bone_mat,4), KX_PYATTRIBUTE_RO_FUNCTION("parent",BL_ArmatureBone,py_bone_get_parent), - KX_PYATTRIBUTE_RO_FUNCTION("children",BL_ArmatureBone,py_bone_get_parent), + KX_PYATTRIBUTE_RO_FUNCTION("children",BL_ArmatureBone,py_bone_get_children), { NULL } //Sentinel }; PyObject *BL_ArmatureBone::py_bone_get_parent(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef) { - Bone* bone = reinterpret_cast<Bone*>BGE_PROXY_PTR(self); + Bone* bone = reinterpret_cast<Bone*>(self); if (bone->parent) { // create a proxy unconnected to any GE object return NewProxyPlus_Ext(NULL,&Type,bone->parent,false); @@ -448,7 +448,7 @@ PyObject *BL_ArmatureBone::py_bone_get_parent(void *self, const struct KX_PYATTR PyObject *BL_ArmatureBone::py_bone_get_children(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef) { - Bone* bone = reinterpret_cast<Bone*>BGE_PROXY_PTR(self); + Bone* bone = reinterpret_cast<Bone*>(self); Bone* child; int count = 0; for (child=(Bone*)bone->childbase.first; child; child=(Bone*)child->next) diff --git a/source/gameengine/Expressions/PyObjectPlus.cpp b/source/gameengine/Expressions/PyObjectPlus.cpp index e2642566a80..32bf4ba95c4 100644 --- a/source/gameengine/Expressions/PyObjectPlus.cpp +++ b/source/gameengine/Expressions/PyObjectPlus.cpp @@ -278,7 +278,7 @@ PyObject *PyObjectPlus::py_get_attrdef(PyObject *self_py, const PyAttributeDef * // the attribute has no field correspondance, handover processing to function. if (attrdef->m_getFunction == NULL) return NULL; - return (*attrdef->m_getFunction)(ref, attrdef); + return (*attrdef->m_getFunction)(ptr, attrdef); } ptr += attrdef->m_offset; if (attrdef->m_length > 1) From 0eca3db6c5e14109c6287784d32129e45c03d2b3 Mon Sep 17 00:00:00 2001 From: Luca Bonavita <mindrones@gmail.com> Date: Sat, 24 Jul 2010 16:35:58 +0000 Subject: [PATCH 670/674] - typo: from "lenght" to "length" in rna fixes [#22997] typo in autocomplete/python api name in bpy.context.active_object.data.draw_edge_lenght not length https://projects.blender.org/tracker/index.php?func=detail&aid=22997&group_id=9&atid=498 no addons are affected by this change - also found a typo in particles toolbar --- release/scripts/ui/space_view3d.py | 2 +- release/scripts/ui/space_view3d_toolbar.py | 2 +- source/blender/makesrna/intern/rna_mesh.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index c5d74d397e8..12b3c508ac2 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -2079,7 +2079,7 @@ class VIEW3D_PT_view3d_meshdisplay(bpy.types.Panel): col.separator() col.label(text="Numerics:") - col.prop(mesh, "draw_edge_lenght") + col.prop(mesh, "draw_edge_length") col.prop(mesh, "draw_edge_angle") col.prop(mesh, "draw_face_area") diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index 589428dfe4d..9d3c26891af 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -1355,7 +1355,7 @@ class VIEW3D_PT_tools_particlemode(View3DPanel): col = layout.column(align=True) col.active = pe.editable col.label(text="Keep:") - col.prop(pe, "keep_lengths", text="Lenghts") + col.prop(pe, "keep_lengths", text="Lengths") col.prop(pe, "keep_root", text="Root") if not pe.hair: col.label(text="Correct:") diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c index 8330e0dc32c..f2a0d5e8955 100644 --- a/source/blender/makesrna/intern/rna_mesh.c +++ b/source/blender/makesrna/intern/rna_mesh.c @@ -1845,7 +1845,7 @@ static void rna_def_mesh(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Draw Sharp", "Displays sharp edges, used with the EdgeSplit modifier"); RNA_def_property_update(prop, 0, "rna_Mesh_update_draw"); - prop= RNA_def_property(srna, "draw_edge_lenght", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "draw_edge_length", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAW_EDGELEN); RNA_def_property_ui_text(prop, "Edge Length", "Displays selected edge lengths"); RNA_def_property_update(prop, 0, "rna_Mesh_update_draw"); From 6a4d370a16193b5590ff39f05e0823d0744a4c80 Mon Sep 17 00:00:00 2001 From: Peter Schlaile <peter@schlaile.de> Date: Sat, 24 Jul 2010 19:42:29 +0000 Subject: [PATCH 671/674] Bugfix: the sequencer core rewrite missed preprocessing of images with wrong resolution on input, which can create image distortion and crashes on render. Thanks to Juan Pablo Bouza for spotting this one! --- source/blender/blenkernel/intern/sequencer.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 5f41debbbe9..bbc50490ab7 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -2102,6 +2102,10 @@ static ImBuf * seq_render_strip(Scene *scene, Sequence * seq, float cfra, (short)seqrectx, (short)seqrecty, 32, IB_rect, 0); } + if (ibuf->x != seqrectx || ibuf->y != seqrecty) { + use_preprocess = TRUE; + } + if (use_preprocess) { ibuf = input_preprocess(scene, seq, cfra, seqrectx, seqrecty, ibuf); From 9d97123f90bbe0f7fed9f7cd0b000e1a3f9a610a Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Sun, 25 Jul 2010 01:39:47 +0000 Subject: [PATCH 672/674] Remove WM_FAST_DRAW ifdef which I added while Ton was on holiday. Only drawing the areas which need redrawing work so no reason to revert this. --- source/blender/editors/screen/area.c | 6 --- source/blender/editors/screen/screen_intern.h | 3 -- source/blender/editors/screen/screen_ops.c | 45 +++++-------------- 3 files changed, 11 insertions(+), 43 deletions(-) diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index b5a0ad9c819..a97f8f128b9 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -117,12 +117,6 @@ void ED_region_do_listen(ARegion *ar, wmNotifier *note) case NC_WINDOW: ED_region_tag_redraw(ar); break; -#ifndef WM_FAST_DRAW - case NC_SCREEN: - if(note->action==NA_EDITED) - ED_region_tag_redraw(ar); - break; -#endif } if(ar->type && ar->type->listener) diff --git a/source/blender/editors/screen/screen_intern.h b/source/blender/editors/screen/screen_intern.h index 5c104521a60..79789b1876e 100644 --- a/source/blender/editors/screen/screen_intern.h +++ b/source/blender/editors/screen/screen_intern.h @@ -58,9 +58,6 @@ void ed_screen_context(const bContext *C, const char *member, bContextDataResult void SCREEN_OT_screenshot(struct wmOperatorType *ot); void SCREEN_OT_screencast(struct wmOperatorType *ot); -/* partial updates, much faster then drawing everything, ton is away so allow easy undo'ing - campbell */ -#define WM_FAST_DRAW - #endif /* ED_SCREEN_INTERN_H */ diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index dd910f8ba9a..c8192996127 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -615,10 +615,8 @@ static int area_swap_modal(bContext *C, wmOperator *op, wmEvent *event) return area_swap_cancel(C, op); } -#ifdef WM_FAST_DRAW ED_area_tag_redraw(sad->sa1); ED_area_tag_redraw(sad->sa2); -#endif ED_area_swapspace(C, sad->sa1, sad->sa2); @@ -691,10 +689,8 @@ static int area_dupli_invoke(bContext *C, wmOperator *op, wmEvent *event) /* copy area to new screen */ area_copy_data((ScrArea *)newsc->areabase.first, sa, 0); - -#ifdef WM_FAST_DRAW + ED_area_tag_redraw((ScrArea *)newsc->areabase.first); -#endif /* screen, areas init */ WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); @@ -820,6 +816,7 @@ static void area_move_apply_do(bContext *C, int origval, int delta, int dir, int wmWindow *win= CTX_wm_window(C); bScreen *sc= CTX_wm_screen(C); ScrVert *v1; + ScrArea *sa; delta= CLAMPIS(delta, -smaller, bigger); @@ -842,15 +839,12 @@ static void area_move_apply_do(bContext *C, int origval, int delta, int dir, int } } } -#ifdef WM_FAST_DRAW - { - ScrArea *sa; - for(sa= sc->areabase.first; sa; sa= sa->next) - if(sa->v1->flag || sa->v2->flag || sa->v3->flag || sa->v4->flag) - ED_area_tag_redraw(sa); + + for(sa= sc->areabase.first; sa; sa= sa->next) { + if(sa->v1->flag || sa->v2->flag || sa->v3->flag || sa->v4->flag) + ED_area_tag_redraw(sa); } -#endif WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); /* redraw everything */ } @@ -1113,10 +1107,9 @@ static int area_split_apply(bContext *C, wmOperator *op) if(dir=='h') sd->origval= sd->nedge->v1->vec.y; else sd->origval= sd->nedge->v1->vec.x; -#ifdef WM_FAST_DRAW ED_area_tag_redraw(sd->sarea); ED_area_tag_redraw(sd->narea); -#endif + WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); return 1; @@ -1128,11 +1121,9 @@ static int area_split_apply(bContext *C, wmOperator *op) static void area_split_exit(bContext *C, wmOperator *op) { if (op->customdata) { -#ifdef WM_FAST_DRAW sAreaSplitData *sd= (sAreaSplitData *)op->customdata; if(sd->sarea) ED_area_tag_redraw(sd->sarea); if(sd->narea) ED_area_tag_redraw(sd->narea); -#endif MEM_freeN(op->customdata); op->customdata = NULL; @@ -1444,9 +1435,7 @@ static int region_scale_modal(bContext *C, wmOperator *op, wmEvent *event) else if(rmd->ar->flag & RGN_FLAG_HIDDEN) ED_region_toggle_hidden(C, rmd->ar); } -#ifdef WM_FAST_DRAW ED_area_tag_redraw(rmd->sa); -#endif WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); break; @@ -1457,9 +1446,7 @@ static int region_scale_modal(bContext *C, wmOperator *op, wmEvent *event) if(ABS(event->x - rmd->origx) < 2 && ABS(event->y - rmd->origy) < 2) { if(rmd->ar->flag & RGN_FLAG_HIDDEN) { ED_region_toggle_hidden(C, rmd->ar); -#ifdef WM_FAST_DRAW ED_area_tag_redraw(rmd->sa); -#endif WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); } } @@ -1962,10 +1949,9 @@ static int area_join_modal(bContext *C, wmOperator *op, wmEvent *event) break; case LEFTMOUSE: if(event->val==KM_RELEASE) { -#ifdef WM_FAST_DRAW ED_area_tag_redraw(jd->sa1); ED_area_tag_redraw(jd->sa2); -#endif + area_join_apply(C, op); WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); area_join_exit(C, op); @@ -2148,9 +2134,7 @@ static int region_quadview_exec(bContext *C, wmOperator *op) MEM_freeN(ar); } } -#ifdef WM_FAST_DRAW ED_area_tag_redraw(sa); -#endif WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); } else if(ar->next) @@ -2190,10 +2174,7 @@ static int region_quadview_exec(bContext *C, wmOperator *op) rv3d->view= RV3D_VIEW_CAMERA; rv3d->persp= RV3D_CAMOB; if (rv3d->localvd) {rv3d->localvd->view = rv3d->view; rv3d->localvd->persp = rv3d->persp; } } - -#ifdef WM_FAST_DRAW ED_area_tag_redraw(sa); -#endif WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); } @@ -2235,10 +2216,8 @@ static int region_flip_exec(bContext *C, wmOperator *op) ar->alignment= RGN_ALIGN_RIGHT; else if(ar->alignment==RGN_ALIGN_RIGHT) ar->alignment= RGN_ALIGN_LEFT; - -#ifdef WM_FAST_DRAW - ED_area_tag_redraw(CTX_wm_area(C)); -#endif + + ED_area_tag_redraw(CTX_wm_area(C)); WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); return OPERATOR_FINISHED; @@ -2290,10 +2269,8 @@ static int header_flip_exec(bContext *C, wmOperator *op) ar->alignment= RGN_ALIGN_RIGHT; else if(ar->alignment==RGN_ALIGN_RIGHT) ar->alignment= RGN_ALIGN_LEFT; - -#ifdef WM_FAST_DRAW + ED_area_tag_redraw(CTX_wm_area(C)); -#endif WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); From 885bbe699976318a6d90441d46dc0cd43e16d4a2 Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Sun, 25 Jul 2010 01:45:53 +0000 Subject: [PATCH 673/674] from Luca's recent commit noticed there are more typo's: lenght -> length --- intern/guardedalloc/MEM_guardedalloc.h | 2 +- source/blender/blenkernel/BKE_bmesh.h | 2 +- source/blender/blenkernel/intern/seqeffects.c | 2 +- source/blender/blenkernel/intern/softbody.c | 4 ++-- source/blender/blenlib/intern/math_geom.c | 2 +- source/blender/makesdna/intern/dna_genfile.c | 2 +- source/blender/makesdna/intern/makesdna.c | 2 +- source/blender/render/intern/source/gammaCorrectionTables.c | 2 +- source/gameengine/Ketsji/KX_Camera.h | 2 +- source/gameengine/Ketsji/KX_Dome.cpp | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/intern/guardedalloc/MEM_guardedalloc.h b/intern/guardedalloc/MEM_guardedalloc.h index c51e96f04b5..6b78b0b6bdc 100644 --- a/intern/guardedalloc/MEM_guardedalloc.h +++ b/intern/guardedalloc/MEM_guardedalloc.h @@ -63,7 +63,7 @@ extern "C" { #endif - /** Returns the lenght of the allocated memory segment pointed at + /** Returns the length of the allocated memory segment pointed at * by vmemh. If the pointer was not previously allocated by this * module, the result is undefined.*/ size_t MEM_allocN_len(void *vmemh); diff --git a/source/blender/blenkernel/BKE_bmesh.h b/source/blender/blenkernel/BKE_bmesh.h index aff102f2e09..18db68a93af 100644 --- a/source/blender/blenkernel/BKE_bmesh.h +++ b/source/blender/blenkernel/BKE_bmesh.h @@ -58,7 +58,7 @@ struct BME_Loop; -Remove the eflags completely, they are mostly not used -Remove the selection/vis/bevel weight flag/values ect and move them to custom data -Remove EID member and move to custom data - -Add a radial cycle length, disk cycle length and loop cycle lenght attributes to custom data and have eulers maintain/use them if present. + -Add a radial cycle length, disk cycle length and loop cycle length attributes to custom data and have eulers maintain/use them if present. -Move data such as vertex coordinates/normals to custom data and leave pointers in structures to active layer data. -Remove BME_CycleNode structure? */ diff --git a/source/blender/blenkernel/intern/seqeffects.c b/source/blender/blenkernel/intern/seqeffects.c index efebca0f780..151fc1c407c 100644 --- a/source/blender/blenkernel/intern/seqeffects.c +++ b/source/blender/blenkernel/intern/seqeffects.c @@ -827,7 +827,7 @@ static void makeGammaTables(float gamma) /* The end of the table should match 1.0 carefully. In order to avoid */ /* rounding errors, we just set this explicitly. The last segment may */ - /* have a different lenght than the other segments, but our */ + /* have a different length than the other segments, but our */ /* interpolation is insensitive to that. */ color_domain_table[RE_GAMMA_TABLE_SIZE] = 1.0; gamma_range_table[RE_GAMMA_TABLE_SIZE] = 1.0; diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c index c82595ee2b2..4d1994e760b 100644 --- a/source/blender/blenkernel/intern/softbody.c +++ b/source/blender/blenkernel/intern/softbody.c @@ -3226,7 +3226,7 @@ static void get_scalar_from_vertexgroup(Object *ob, int vertID, short groupindex } /* Resetting a Mesh SB object's springs */ -/* Spring lenght are caculted from'raw' mesh vertices that are NOT altered by modifier stack. */ +/* Spring length are caculted from'raw' mesh vertices that are NOT altered by modifier stack. */ static void springs_from_mesh(Object *ob) { SoftBody *sb; @@ -3362,7 +3362,7 @@ static void mesh_to_softbody(Scene *scene, Object *ob) add_2nd_order_springs(ob,sb->secondspring); /* exploits the the first run of build_bps_springlist(ob);*/ build_bps_springlist(ob); /* yes we need to do it again*/ } - springs_from_mesh(ob); /* write the 'rest'-lenght of the springs */ + springs_from_mesh(ob); /* write the 'rest'-length of the springs */ if (ob->softflag & OB_SB_SELF) {calculate_collision_balls(ob);} } diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c index 4d1911e8be8..fd0829ebe3b 100644 --- a/source/blender/blenlib/intern/math_geom.c +++ b/source/blender/blenlib/intern/math_geom.c @@ -1225,7 +1225,7 @@ static int point_in_slice_as(float p[3],float origin[3],float normal[3]) return 1; } -/*mama (knowing the squared lenght of the normal)*/ +/*mama (knowing the squared length of the normal)*/ static int point_in_slice_m(float p[3],float origin[3],float normal[3],float lns) { float h,rp[3]; diff --git a/source/blender/makesdna/intern/dna_genfile.c b/source/blender/makesdna/intern/dna_genfile.c index c7b86d1e502..fd98fd4ef08 100644 --- a/source/blender/makesdna/intern/dna_genfile.c +++ b/source/blender/makesdna/intern/dna_genfile.c @@ -110,7 +110,7 @@ DONE: - pointer conversion (32-64 bits) IMPORTANT: - - do not use #defines in structs for array lenghts, this cannot be read by the dna functions + - do not use #defines in structs for array lengths, this cannot be read by the dna functions - do not use uint, but unsigned int instead, ushort and ulong are allowed - only use a long in Blender if you want this to be the size of a pointer. so it is 32 bits or 64 bits, dependant at the cpu architecture diff --git a/source/blender/makesdna/intern/makesdna.c b/source/blender/makesdna/intern/makesdna.c index 15c6bbd202c..15ac26273af 100644 --- a/source/blender/makesdna/intern/makesdna.c +++ b/source/blender/makesdna/intern/makesdna.c @@ -203,7 +203,7 @@ static int calculate_structlens(int); void dna_write(FILE *file, void *pntr, int size); /** - * Report all structures found so far, and print their lenghts. + * Report all structures found so far, and print their lengths. */ void printStructLenghts(void); diff --git a/source/blender/render/intern/source/gammaCorrectionTables.c b/source/blender/render/intern/source/gammaCorrectionTables.c index d88638f423c..818c3c72118 100644 --- a/source/blender/render/intern/source/gammaCorrectionTables.c +++ b/source/blender/render/intern/source/gammaCorrectionTables.c @@ -117,7 +117,7 @@ void makeGammaTables(float gamma) /* The end of the table should match 1.0 carefully. In order to avoid */ /* rounding errors, we just set this explicitly. The last segment may */ - /* have a different lenght than the other segments, but our */ + /* have a different length than the other segments, but our */ /* interpolation is insensitive to that. */ color_domain_table[RE_GAMMA_TABLE_SIZE] = 1.0; gamma_range_table[RE_GAMMA_TABLE_SIZE] = 1.0; diff --git a/source/gameengine/Ketsji/KX_Camera.h b/source/gameengine/Ketsji/KX_Camera.h index 406ee1d0764..ad2460d34ef 100644 --- a/source/gameengine/Ketsji/KX_Camera.h +++ b/source/gameengine/Ketsji/KX_Camera.h @@ -51,7 +51,7 @@ class KX_Camera : public KX_GameObject Py_Header; protected: friend class KX_Scene; - /** Camera parameters (clips distances, focal lenght). These + /** Camera parameters (clips distances, focal length). These * params are closely tied to Blender. In the gameengine, only the * projection and modelview matrices are relevant. There's a * conversion being done in the engine class. Why is it stored diff --git a/source/gameengine/Ketsji/KX_Dome.cpp b/source/gameengine/Ketsji/KX_Dome.cpp index b62593b7911..94258088e9f 100644 --- a/source/gameengine/Ketsji/KX_Dome.cpp +++ b/source/gameengine/Ketsji/KX_Dome.cpp @@ -754,7 +754,7 @@ So I came out with this formula: verts_height = tan((rad_ang/2) - (MT_PI/2))*sqrt(2.0); Here we take half the sphere(rad_ang/2) and subtract a quarter of it (MT_PI/2) -Therefore we have the lenght in radians of the dome/sphere over the horizon. +Therefore we have the length in radians of the dome/sphere over the horizon. Once we take the tangent of that angle, you have the verts coordinate corresponding to the verts on the side faces. Then we need to multiply it by sqrt(2.0) to get the coordinate of the verts on the diagonal of the original cube. */ From 61a09d96b1c10decb732f77a50421101e43cf401 Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Sun, 25 Jul 2010 02:56:39 +0000 Subject: [PATCH 674/674] py api mathutils.Quaternion() - getting axis, angle wasnt calling read callbacks so it didnt work with RNA. - made setting axis and angle attributes possible. --- .../blender/python/generic/mathutils_quat.c | 94 +++++++++++++++++-- 1 file changed, 84 insertions(+), 10 deletions(-) diff --git a/source/blender/python/generic/mathutils_quat.c b/source/blender/python/generic/mathutils_quat.c index f94e5e2a03a..fe0d3cde308 100644 --- a/source/blender/python/generic/mathutils_quat.c +++ b/source/blender/python/generic/mathutils_quat.c @@ -774,27 +774,101 @@ static int Quaternion_setAxis( QuaternionObject * self, PyObject * value, void * static PyObject *Quaternion_getMagnitude( QuaternionObject * self, void *type ) { + if(!BaseMath_ReadCallback(self)) + return NULL; + return PyFloat_FromDouble(sqrt(dot_qtqt(self->quat, self->quat))); } static PyObject *Quaternion_getAngle( QuaternionObject * self, void *type ) { + if(!BaseMath_ReadCallback(self)) + return NULL; + return PyFloat_FromDouble(2.0 * (saacos(self->quat[0]))); } -static PyObject *Quaternion_getAxisVec( QuaternionObject * self, void *type ) +static int Quaternion_setAngle(QuaternionObject * self, PyObject * value, void * type) { - float vec[3]; + float axis[3]; + float angle; - normalize_v3_v3(vec, self->quat+1); + if(!BaseMath_ReadCallback(self)) + return -1; + + quat_to_axis_angle(axis, &angle, self->quat); + + angle = PyFloat_AsDouble(value); + + if(angle==-1.0f && PyErr_Occurred()) { /* parsed item not a number */ + PyErr_SetString(PyExc_TypeError, "quaternion.angle = value: float expected"); + return -1; + } /* If the axis of rotation is 0,0,0 set it to 1,0,0 - for zero-degree rotations */ - if( EXPP_FloatsAreEqual(vec[0], 0.0f, 10) && - EXPP_FloatsAreEqual(vec[1], 0.0f, 10) && - EXPP_FloatsAreEqual(vec[2], 0.0f, 10) ){ - vec[0] = 1.0f; + if( EXPP_FloatsAreEqual(axis[0], 0.0f, 10) && + EXPP_FloatsAreEqual(axis[1], 0.0f, 10) && + EXPP_FloatsAreEqual(axis[2], 0.0f, 10) + ) { + axis[0] = 1.0f; } - return (PyObject *) newVectorObject(vec, 3, Py_NEW, NULL); + + axis_angle_to_quat(self->quat, axis, angle); + + if(!BaseMath_WriteCallback(self)) + return -1; + + return 0; +} + +static PyObject *Quaternion_getAxisVec(QuaternionObject *self, void *type) +{ + float axis[3]; + float angle; + + if(!BaseMath_ReadCallback(self)) + return NULL; + + quat_to_axis_angle(axis, &angle, self->quat); + + /* If the axis of rotation is 0,0,0 set it to 1,0,0 - for zero-degree rotations */ + if( EXPP_FloatsAreEqual(axis[0], 0.0f, 10) && + EXPP_FloatsAreEqual(axis[1], 0.0f, 10) && + EXPP_FloatsAreEqual(axis[2], 0.0f, 10) + ) { + axis[0] = 1.0f; + } + + return (PyObject *) newVectorObject(axis, 3, Py_NEW, NULL); +} + +static int Quaternion_setAxisVec(QuaternionObject *self, PyObject *value, void *type) +{ + float axis[3]; + float angle; + + VectorObject *vec; + + if(!BaseMath_ReadCallback(self)) + return -1; + + quat_to_axis_angle(axis, &angle, self->quat); + + if(!VectorObject_Check(value)) { + PyErr_SetString(PyExc_TypeError, "quaternion.axis = value: expected a 3D Vector"); + return -1; + } + + vec= (VectorObject *)value; + if(!BaseMath_ReadCallback(vec)) + return -1; + + axis_angle_to_quat(self->quat, vec->vec, angle); + + if(!BaseMath_WriteCallback(self)) + return -1; + + return 0; } //----------------------------------mathutils.Quaternion() -------------- @@ -853,8 +927,8 @@ static PyGetSetDef Quaternion_getseters[] = { {"y", (getter)Quaternion_getAxis, (setter)Quaternion_setAxis, "Quaternion Y axis. **type** float", (void *)2}, {"z", (getter)Quaternion_getAxis, (setter)Quaternion_setAxis, "Quaternion Z axis. **type** float", (void *)3}, {"magnitude", (getter)Quaternion_getMagnitude, (setter)NULL, "Size of the quaternion (readonly). **type** float", NULL}, - {"angle", (getter)Quaternion_getAngle, (setter)NULL, "angle of the quaternion (readonly). **type** float", NULL}, - {"axis",(getter)Quaternion_getAxisVec, (setter)NULL, "quaternion axis as a vector (readonly). **type** :class:`Vector`", NULL}, + {"angle", (getter)Quaternion_getAngle, (setter)Quaternion_setAngle, "angle of the quaternion. **type** float", NULL}, + {"axis",(getter)Quaternion_getAxisVec, (setter)Quaternion_setAxisVec, "quaternion axis as a vector. **type** :class:`Vector`", NULL}, {"is_wrapped", (getter)BaseMathObject_getWrapped, (setter)NULL, BaseMathObject_Wrapped_doc, NULL}, {"_owner", (getter)BaseMathObject_getOwner, (setter)NULL, BaseMathObject_Owner_doc, NULL}, {NULL,NULL,NULL,NULL,NULL} /* Sentinel */